polyml-5.7.1/0000755000175000017500000000000013206575740012011 5ustar daviddavidpolyml-5.7.1/Makefile.am0000644000175000017500000000677513204034553014052 0ustar daviddavidAUTOMAKE_OPTIONS=foreign ACLOCAL_AMFLAGS= -I m4 --install AM_CPPFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall AM_CFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall -fno-strict-aliasing BOOTSTRAP_OPTIONS = if INTINFISINT POLYIMPORT_OPTIONS = --intIsIntInf else POLYIMPORT_OPTIONS = endif DIST_SUBDIRS = libpolyml libpolymain libffi modules if INTERNAL_LIBFFI SUBDIRS = libffi libpolyml libpolymain . modules else SUBDIRS = libpolyml libpolymain . modules endif bin_PROGRAMS = polyimport poly dist_bin_SCRIPTS = polyc man_MANS = poly.1 polyimport.1 polyc.1 # Select the architecture-specific pre-built compiler if ARCHI386 POLYIMPORT = $(srcdir)/imports/polymli386.txt else if ARCHINTERPRET POLYIMPORT = $(srcdir)/imports/polymlint.txt else if ARCHINTERPRET64 POLYIMPORT = $(srcdir)/imports/polymlint64.txt else if ARCHX86_64 if WINDOWS64CALLS POLYIMPORT = $(srcdir)/imports/polymlx86_64win.txt else POLYIMPORT = $(srcdir)/imports/polymlx86_64sysv.txt endif else endif endif endif endif noinst_HEADERS = polyexports.h poly_LDFLAGS= polyimport_LDFLAGS= POLYRESOURCES= EXTRALDFLAGS= if NATIVE_WINDOWS if ARCHINTERPRET64 EXTRALDFLAGS += -Wl,-u,WinMain else if ARCHX86_64 EXTRALDFLAGS += -Wl,-u,WinMain else EXTRALDFLAGS += -Wl,-u,_WinMain@16 -Wl,--large-address-aware endif endif if WINDOWSGUI EXTRALDFLAGS += -mwindows polyimport_LDFLAGS += -mwindows else EXTRALDFLAGS += -mconsole polyimport_LDFLAGS += -mconsole endif poly_LDFLAGS += $(EXTRALDFLAGS) POLYOBJECTFILE = polyexport.obj POLYRESOURCES += polyresource.o OBJECTSUFFIX=obj else POLYOBJECTFILE = polyexport.o OBJECTSUFFIX=o endif if EXPMACHO poly_LDFLAGS += -Wl,-no_pie endif poly_SOURCES = poly_LDADD = $(POLYOBJECTFILE) $(POLYRESOURCES) libpolymain/libpolymain.la libpolyml/libpolyml.la polyimport_SOURCES = polyimport.c polyimport_LDADD = $(POLYRESOURCES) libpolyml/libpolyml.la EXTRA_DIST = \ imports/polymli386.txt \ imports/polymlint64.txt \ imports/polymlint.txt \ imports/polymlx86_64.txt \ libpolyml/x86asm.asm \ exportPoly.sml \ poly.1 \ polyimport.1 dist-hook: find {basis,mlsource}/ -type d -exec mkdir $(distdir)/{} \; find {basis,mlsource}/ -type f -not -name .svn \ -exec cp -pf {} $(distdir)/{} \; # Unix. polyexport.o: polyimport exportPoly.sml polytemp.txt ./polyimport $(POLYIMPORT_OPTIONS) polytemp.txt -I $(srcdir) < $(srcdir)/exportPoly.sml # Windows. When building on Windows make sure that we provide both stdin and stdout to suppress the GUI. polyexport.obj: polyimport$(EXEEXT) exportPoly.sml polytemp.txt ./polyimport $(POLYIMPORT_OPTIONS) polytemp.txt -I $(srcdir) < $(srcdir)/exportPoly.sml | cat polyresource.o: PolyML.rc poly.ico $(WINDRES) -o polyresource.o $(srcdir)/PolyML.rc polytemp.txt: $(POLYIMPORT) cp $(POLYIMPORT) polytemp.txt #polyc: buildpolyc # ./buildpolyc LINK=\"$(CC)\" BINDIR=\"$(bindir)\" LIBDIR=\"$(libdir)\" LIBS=\"$(LIBS)\" EXTRALDFLAGS=\"$(EXTRALDFLAGS)\" SUFFIX=\"$(OBJECTSUFFIX)\" # This builds the compiler but does not update the files in the imports directory. # It then builds a version of poly containing the new compiler. compiler: all ./poly $(BOOTSTRAP_OPTIONS) --error-exit < mlsource/BuildExport.sml $(MAKE) reboot: compiler cp polytemp.txt $(POLYIMPORT) # Retain this target for backwards compatibility. cvs: compiler clean-local: rm -f *.obj polytemp.txt polyc # Run tests check-local: all echo "val () = use \"$(srcdir)/Tests/RunTests\"; val () = OS.Process.exit(if runTests \"$(srcdir)/Tests\" then OS.Process.success else OS.Process.failure):unit;" | ./poly # Retain this target for backwards compatibility tests: check polyml-5.7.1/ltmain.sh0000644000175000017500000105203013204034553013620 0ustar daviddavid # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.11" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 polyml-5.7.1/polystatistics.h0000644000175000017500000000742613204034553015257 0ustar daviddavid/* Title: polystatics.h - Layout of statistics data in shared memory Copyright (c) 2011 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef POLY_STATISTICS_INCLUDED #define POLY_STATISTICS_INCLUDED #ifdef HAVE_SYS_TIME_H #include #endif // Name of shared memory file. This has the process ID appended. // In Unix this is in /tmp #define POLY_STATS_NAME "poly-stats-" // ASN1 tags for the statistics #define POLY_STATS_C_STATISTICS 0x60 // Application 0 - Implicit set #define POLY_STATS_C_COUNTERSTAT 0x61 // Application 1 - Implicit sequence #define POLY_STATS_C_SIZESTAT 0x62 // Application 2 - Implicit sequence #define POLY_STATS_C_TIMESTAT 0x63 // Application 3 - Implicit sequence #define POLY_STATS_C_IDENTIFIER 0x44 // Application 4 - Implicit integer #define POLY_STATS_C_NAME 0x45 // Application 5 - Implicit visible string #define POLY_STATS_C_COUNTER_VALUE 0x46 // Application 6 - Implicit integer #define POLY_STATS_C_BYTE_COUNT 0x47 // Application 7 - Implicit integer #define POLY_STATS_C_TIME 0x68 // Application 8 - Implicit sequence #define POLY_STATS_C_SECONDS 0x49 // Application 9 - Implicit integer #define POLY_STATS_C_MICROSECS 0x4A // Application 10 - Implicit integer #define POLY_STATS_C_USERSTAT 0x6B // Application 11 - Implicit sequence // Identifiers for the particular statistics #define POLY_STATS_ID_THREADS 1 // Total number of threads #define POLY_STATS_ID_THREADS_IN_ML 2 // Threads running ML code #define POLY_STATS_ID_THREADS_WAIT_IO 3 // Threads waiting for IO #define POLY_STATS_ID_THREADS_WAIT_MUTEX 4 // Threads waiting for a mutex #define POLY_STATS_ID_THREADS_WAIT_CONDVAR 5 // Threads waiting for a condition var #define POLY_STATS_ID_THREADS_WAIT_SIGNAL 6 // Special case - signal handling thread #define POLY_STATS_ID_GC_FULLGC 7 // Number of full garbage collections #define POLY_STATS_ID_GC_PARTIALGC 8 // Number of partial GCs #define POLY_STATS_ID_TOTAL_HEAP 9 // Total size of the local heap #define POLY_STATS_ID_AFTER_LAST_GC 10 // Space free after last GC #define POLY_STATS_ID_AFTER_LAST_FULLGC 11 // Space free after the last full GC #define POLY_STATS_ID_ALLOCATION 12 // Size of allocation space #define POLY_STATS_ID_ALLOCATION_FREE 13 // Space available in allocation area #define POLY_STATS_ID_NONGC_UTIME 14 #define POLY_STATS_ID_NONGC_STIME 15 #define POLY_STATS_ID_GC_UTIME 16 #define POLY_STATS_ID_GC_STIME 17 #define POLY_STATS_ID_USER0 18 #define POLY_STATS_ID_USER1 19 #define POLY_STATS_ID_USER2 20 #define POLY_STATS_ID_USER3 21 #define POLY_STATS_ID_USER4 22 #define POLY_STATS_ID_USER5 23 #define POLY_STATS_ID_USER6 24 #define POLY_STATS_ID_USER7 25 #endif // POLY_STATISTICS_INCLUDED polyml-5.7.1/COPYING0000644000175000017500000006354113204034553013043 0ustar daviddavid GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! polyml-5.7.1/winconfig.h0000644000175000017500000005552613204034553014150 0ustar daviddavid/* Hand-generated config file for Windows. */ #ifndef CONF_H_INCLUDED #define CONF_H_INCLUDED /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to 1 if the `closedir' function returns void instead of `int'. */ #undef CLOSEDIR_VOID /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to the type of elements in the array set by `getgroups'. Usually this is either `int' or `gid_t'. */ #undef GETGROUPS_T /* Define to 1 if the `getpgrp' function requires zero arguments. */ #undef GETPGRP_VOID /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA #define HAVE_ALLOCA 1 /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if your system has a working `chown' function. */ #undef HAVE_CHOWN /* Define to 1 if you have the `ctermid' function. */ #undef HAVE_CTERMID /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H #define HAVE_CTYPE_H 1 /* Define to 1 if you have the declaration of `fpsetmask', and to 0 if you don't. */ #undef HAVE_DECL_FPSETMASK /* Define to 1 if you have the header file. */ #undef HAVE_DIRECT_H #define HAVE_DIRECT_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the `dtoa' function. */ #undef HAVE_DTOA /* Define to 1 if you have the `dup2' function. */ #undef HAVE_DUP2 #define HAVE_DUP2 1 /* Define to 1 if you have and header files. */ #undef HAVE_ELF_ABI_H /* Define to 1 if you have the header file. */ #undef HAVE_ELF_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_EXCPT_H #define HAVE_EXCPT_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H #define HAVE_FCNTL_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_FENV_H #if (defined(_MSC_VER) && (_MSC_VER >= 1800)) // Defined in VS 2013 #define HAVE_FENV_H 1 #endif /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H #define HAVE_FLOAT_H 1 /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR #define HAVE_FLOOR 1 /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the header file. */ #undef HAVE_FPU_CONTROL_H /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if your system has a working `getgroups' function. */ #undef HAVE_GETGROUPS /* Define to 1 if you have the `gethostbyaddr' function. */ #undef HAVE_GETHOSTBYADDR #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the gmp.h header file */ #undef HAVE_GMP_H /* Define to 1 if you have the `gmtime_r' function. */ #undef HAVE_GMTIME_R /* Define to 1 if you have the header file. */ #undef HAVE_GRP_H /* Define to 1 if you have the header file. */ #undef HAVE_IEEEFP_H /* Define to 1 if the system has the type `IMAGE_FILE_HEADER'. */ #undef HAVE_IMAGE_FILE_HEADER #define HAVE_IMAGE_FILE_HEADER 1 /* Define to 1 if the system has the type `intptr_t'. */ #undef HAVE_INTPTR_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H // This was present in VS 2013 but not 2015. /* Define to 1 if you have the header file. */ #undef HAVE_IO_H #define HAVE_IO_H 1 /* Define to 1 if you have the `gcc' library (-lgcc). */ #undef HAVE_LIBGCC /* Define to 1 if you have the `gcc_s' library (-lgcc_s). */ #undef HAVE_LIBGCC_S /* Define to 1 if you have the `gdi32' library (-lgdi32). */ #undef HAVE_LIBGDI32 #define HAVE_LIBGDI32 1 /* Define to 1 if you have libgmp */ #undef HAVE_LIBGMP /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the `stdc++' library (-lstdc++). */ #undef HAVE_LIBSTDC__ /* Define to 1 if you have the `ws2_32' library (-lws2_32). */ #undef HAVE_LIBWS2_32 #define HAVE_LIBWS2_32 1 /* Define to 1 if you have the `X11' library (-lX11). */ #undef HAVE_LIBX11 /* Define to 1 if you have the `Xext' library (-lXext). */ #undef HAVE_LIBXEXT /* Define to 1 if you have the `Xm' library (-lXm). */ #undef HAVE_LIBXM /* Define to 1 if you have the `Xt' library (-lXt). */ #undef HAVE_LIBXT /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R /* Define to 1 if the system has the type `long long'. */ #undef HAVE_LONG_LONG #define HAVE_LONG_LONG 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_LSTAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H #define HAVE_MALLOC_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H #define HAVE_MATH_H 1 /* Define to 1 if `gregs' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_GREGS /* Define to 1 if `mc_esp' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_MC_ESP /* Define to 1 if `regs' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_REGS /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET #define HAVE_MEMSET 1 /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR /* Define to 1 if you have the `mkfifo' function. */ #undef HAVE_MKFIFO /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_TCP_H /* Define to 1 if you have the `pathconf' function. */ #undef HAVE_PATHCONF /* Define to 1 if you have the PE/COFF types. */ #undef HAVE_PECOFF #define HAVE_PECOFF 1 /* Define to 1 if you have the header file. */ #undef HAVE_POLL_H /* Define to 1 if you have the `pow' function. */ #undef HAVE_POW /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if you have the `rmdir' function. */ #undef HAVE_RMDIR /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT #define HAVE_SELECT 1 /* Define to 1 if you have the header file. */ #undef HAVE_SEMAPHORE_H /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK /* Define to 1 if the system has the type `sighandler_t'. */ #undef HAVE_SIGHANDLER_T /* Define to 1 if you have the header file. */ #undef HAVE_SIGINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H #define HAVE_SIGNAL_H 1 /* Define to 1 if the system has the type `sig_t'. */ #undef HAVE_SIG_T /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET #define HAVE_SOCKET 1 /* Define to 1 if the system has the type `socklen_t'. */ #undef HAVE_SOCKLEN_T /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT #define HAVE_SQRT 1 /* Define to 1 if the system has the type `ssize_t'. */ #undef HAVE_SSIZE_T /* Define to 1 if the system has the type `stack_t'. */ #undef HAVE_STACK_T /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H #define HAVE_STDDEF_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H #define HAVE_STDIO_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR #define HAVE_STRERROR 1 /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H #define HAVE_STRING_H /* Define to 1 if you have the `strtod' function. */ #undef HAVE_STRTOD #define HAVE_STRTOD 1 /* Define to 1 if `ss' is a member of `struct mcontext'. */ #undef HAVE_STRUCT_MCONTEXT_SS /* Define to 1 if the system has the type `struct sigcontext'. */ #undef HAVE_STRUCT_SIGCONTEXT /* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */ #undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN /* Define to 1 if `st_atim' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM /* Define to 1 if `st_atimensec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC /* Define to 1 if `st_atimespec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC /* Define to 1 if `st_atime_n' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIME_N /* Define to 1 if `st_uatime' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_UATIME /* Define to 1 if `ss' is a member of `struct __darwin_mcontext32'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT32_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext32'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT32___SS /* Define to 1 if `ss' is a member of `struct __darwin_mcontext64'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT64_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext64'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT64___SS /* Define to 1 if `ss' is a member of `struct __darwin_mcontext'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT___SS /* Define to 1 if you have the `sysctl' function. */ #undef HAVE_SYSCTL /* Define to 1 if you have the `sysctlbyname' function. */ #undef HAVE_SYSCTLBYNAME /* Define to 1 if the system has the type `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */ #undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION #define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_386_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_AMD64_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_SPARC_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSTEMINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the `tcdrain' function. */ #undef HAVE_TCDRAIN /* Define to 1 if you have the header file. */ #undef HAVE_TCHAR_H #define HAVE_TCHAR_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #undef HAVE_UCONTEXT_H /* Define to 1 if the system has the type `ucontext_t'. */ #undef HAVE_UCONTEXT_T /* Define to 1 if the system has the type `uintptr_t'. */ #undef HAVE_UINTPTR_T /* Define to 1 if you have the `uname' function. */ #undef HAVE_UNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_VALUES_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H #define HAVE_WINDOWS_H 1 /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_X11_XLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_XM_XM_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define if the host is an ARM (64-bit) */ /*#undef HOSTARCHITECTURE_AARCH64*/ /* Define if the host is an ARM (32-bit) */ /*#undef HOSTARCHITECTURE_ARM*/ /* Define if the host is an Itanium */ /*#undef HOSTARCHITECTURE_IA64*/ /* Define if the host is a MIPS (32-bit) */ /*#undef HOSTARCHITECTURE_MIPS*/ /* Define if the host is a PowerPC (32-bit) */ /*#undef HOSTARCHITECTURE_PPC*/ /* Define if the host is a PowerPC (64-bit) */ /*#undef HOSTARCHITECTURE_PPC64*/ /* Define if the host is an S/390 (32-bit) */ /*#undef HOSTARCHITECTURE_S390*/ /* Define if the host is an S/390 (64-bit) */ /*#undef HOSTARCHITECTURE_S390X*/ /* Define if the host is a Sparc (32-bit) */ /*#undef HOSTARCHITECTURE_SPARC*/ /* Define if the host is an X86 (32-bit) */ /*#undef HOSTARCHITECTURE_X86*/ /* Define if the host is an X86 (64-bit) */ /*#undef HOSTARCHITECTURE_X86_64*/ /* Define if using the interpreter */ /*#undef INTERPRETED*/ /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the type of arg 1 for `select'. */ #undef SELECT_TYPE_ARG1 /* Define to the type of args 2, 3 and 4 for `select'. */ #undef SELECT_TYPE_ARG234 /* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 /* The size of `int', as computed by sizeof. */ // N.B. This is 4 on both 32-bit and 64-bit #define SIZEOF_INT 4 /* The size of `long', as computed by sizeof. */ // N.B. This is 4 on both 32-bit and 64-bit #define SIZEOF_LONG 4 /* The size of `void*', as computed by sizeof. */ #undef SIZEOF_VOIDP #ifdef _WIN64 #define SIZEOF_VOIDP 8 #else #define SIZEOF_VOIDP 4 #endif // Size of long long // N.B. This is 8 on both 32-bit and 64-bit #define SIZEOF_LONG_LONG 8 /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Defined if external symbols are prefixed by underscores */ #undef SYMBOLS_REQUIRE_UNDERSCORE #ifdef _WIN64 # undef SYMBOLS_REQUIRE_UNDERSCORE #else # define SYMBOLS_REQUIRE_UNDERSCORE 1 #endif /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define if the X-Windows interface should be built */ #undef WITH_XWINDOWS /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if doesn't define. */ #undef gid_t #define gid_t int /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type wide enough to hold a pointer, if such a type exists, and if the system does not define it. */ #undef intptr_t /* Define to `int' if does not define. */ #undef mode_t #define mode_t int /* Define to `long int' if does not define. */ #undef off_t /* Define to `int' if does not define. */ #undef pid_t #define pid_t int /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if does not define. */ // There is an SSIZE_T #undef ssize_t #if defined(_MSC_VER) #include typedef SSIZE_T ssize_t; #endif /* Define to `int' if doesn't define. */ #undef uid_t #define uid_t int /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type wide enough to hold a pointer, if such a type exists, and if the system does not define it. */ #undef uintptr_t /* Define as `fork' if `vfork' does not work. */ #undef vfork #endif polyml-5.7.1/libffi/0000755000175000017500000000000013204034553013232 5ustar daviddavidpolyml-5.7.1/libffi/Makefile.am0000644000175000017500000002073513204034553015275 0ustar daviddavid## Process this with automake to create Makefile.in # Poly: don't install anything from this directory install:; @: install-exec:; @: install-data:; @: uninstall:; @: # Poly AUTOMAKE_OPTIONS = foreign subdir-objects ACLOCAL_AMFLAGS = -I m4 SUBDIRS = include testsuite man EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \ src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S \ src/alpha/ffi.c src/alpha/osf.S \ src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S \ src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S \ src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S \ src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S \ src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h \ src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c \ src/mips/n32.S src/mips/o32.S src/metag/ffi.c \ src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c \ src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h \ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h \ src/microblaze/ffi.c src/microblaze/sysv.S \ src/microblaze/ffitarget.h \ src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S \ src/or1k/ffi.c src/or1k/ffitarget.h src/or1k/sysv.S \ src/powerpc/ffi.c src/powerpc/ffi_powerpc.h \ src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \ src/powerpc/sysv.S src/powerpc/linux64.S \ src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S \ src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c \ src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S \ src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c \ src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S \ src/x86/win32.S src/x86/darwin.S src/x86/win64.S \ src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S \ src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c \ src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c \ src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S \ src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c \ src/tile/ffitarget.h src/tile/tile.S libtool-version \ src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S \ src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S \ ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4 \ m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh \ generate-darwin-source-and-headers.py \ libffi.xcodeproj/project.pbxproj src/arm/trampoline.S \ libtool-ldflags ChangeLog.libffi-3.1 # Poly - don't try to create the tex info. #info_TEXINFOS = doc/libffi.texi ## ################################################################ ## ## This section is for make and multilib madness. ## # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and # friends when we are called from the top level Makefile. AM_MAKEFLAGS = \ 'AR_FLAGS=$(AR_FLAGS)' \ 'CC_FOR_BUILD=$(CC_FOR_BUILD)' \ 'CFLAGS=$(CFLAGS)' \ 'CXXFLAGS=$(CXXFLAGS)' \ 'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \ 'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \ 'INSTALL=$(INSTALL)' \ 'INSTALL_DATA=$(INSTALL_DATA)' \ 'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \ 'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \ 'JC1FLAGS=$(JC1FLAGS)' \ 'LDFLAGS=$(LDFLAGS)' \ 'LIBCFLAGS=$(LIBCFLAGS)' \ 'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \ 'MAKE=$(MAKE)' \ 'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \ 'PICFLAG=$(PICFLAG)' \ 'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \ 'RUNTESTFLAGS=$(RUNTESTFLAGS)' \ 'SHELL=$(SHELL)' \ 'exec_prefix=$(exec_prefix)' \ 'infodir=$(infodir)' \ 'libdir=$(libdir)' \ 'mandir=$(mandir)' \ 'prefix=$(prefix)' \ 'AR=$(AR)' \ 'AS=$(AS)' \ 'CC=$(CC)' \ 'CXX=$(CXX)' \ 'LD=$(LD)' \ 'NM=$(NM)' \ 'RANLIB=$(RANLIB)' \ 'DESTDIR=$(DESTDIR)' # Subdir rules rely on $(FLAGS_TO_PASS) FLAGS_TO_PASS = $(AM_MAKEFLAGS) MAKEOVERRIDES= toolexeclib_LTLIBRARIES = libffi.la noinst_LTLIBRARIES = libffi_convenience.la libffi_la_SOURCES = src/prep_cif.c src/types.c \ src/raw_api.c src/java_raw_api.c src/closures.c pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libffi.pc nodist_libffi_la_SOURCES = if FFI_DEBUG nodist_libffi_la_SOURCES += src/debug.c endif if MIPS nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S endif if BFIN nodist_libffi_la_SOURCES += src/bfin/ffi.c src/bfin/sysv.S endif if X86 nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S src/x86/win32.S endif if X86_FREEBSD nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S endif if X86_WIN32 nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S endif if X86_WIN64 nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win64.S endif if X86_DARWIN nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S if X86_DARWIN32 nodist_libffi_la_SOURCES += src/x86/win32.S endif endif if SPARC nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S endif if ALPHA nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S endif if IA64 nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S endif if M32R nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c endif if M68K nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S endif if M88K nodist_libffi_la_SOURCES += src/m88k/ffi.c src/m88k/obsd.S endif if MOXIE nodist_libffi_la_SOURCES += src/moxie/ffi.c src/moxie/eabi.S endif if MICROBLAZE nodist_libffi_la_SOURCES += src/microblaze/ffi.c src/microblaze/sysv.S endif if NIOS2 nodist_libffi_la_SOURCES += src/nios2/sysv.S src/nios2/ffi.c endif if OR1K nodist_libffi_la_SOURCES += src/or1k/sysv.S src/or1k/ffi.c endif if POWERPC nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S endif if POWERPC_AIX nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S endif if POWERPC_DARWIN nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S endif if POWERPC_FREEBSD nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S endif if AARCH64 nodist_libffi_la_SOURCES += src/aarch64/sysv.S src/aarch64/ffi.c endif if ARC nodist_libffi_la_SOURCES += src/arc/arcompact.S src/arc/ffi.c endif if ARM nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c if FFI_EXEC_TRAMPOLINE_TABLE nodist_libffi_la_SOURCES += src/arm/trampoline.S endif endif if AVR32 nodist_libffi_la_SOURCES += src/avr32/sysv.S src/avr32/ffi.c endif if LIBFFI_CRIS nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c endif if FRV nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c endif if S390 nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c endif if X86_64 nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S endif if SH nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c endif if SH64 nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c endif if PA_LINUX nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c endif if PA_HPUX nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c endif if TILE nodist_libffi_la_SOURCES += src/tile/tile.S src/tile/ffi.c endif if XTENSA nodist_libffi_la_SOURCES += src/xtensa/sysv.S src/xtensa/ffi.c endif if METAG nodist_libffi_la_SOURCES += src/metag/sysv.S src/metag/ffi.c endif if VAX nodist_libffi_la_SOURCES += src/vax/elfbsd.S src/vax/ffi.c endif libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) AM_CFLAGS = if FFI_DEBUG # Build debug. Define FFI_DEBUG on the commandline so that, when building with # MSVC, it can link against the debug CRT. AM_CFLAGS += -DFFI_DEBUG endif libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src AM_CCASFLAGS = $(AM_CPPFLAGS) dist-hook: if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog polyml-5.7.1/libffi/ltmain.sh0000644000175000017500000105152213204034553015060 0ustar daviddavid # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.2 TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 polyml-5.7.1/libffi/include/0000755000175000017500000000000013204034553014655 5ustar daviddavidpolyml-5.7.1/libffi/include/Makefile.am0000644000175000017500000000037113204034553016712 0ustar daviddavid## Process this with automake to create Makefile.in AUTOMAKE_OPTIONS=foreign DISTCLEANFILES=ffitarget.h EXTRA_DIST=ffi.h.in ffi_common.h includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include nodist_includes_HEADERS = ffi.h ffitarget.h polyml-5.7.1/libffi/include/ffi.h.in0000644000175000017500000003227413204034553016207 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- libffi @VERSION@ - Copyright (c) 2011, 2014 Anthony Green - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* ------------------------------------------------------------------- The basic API is described in the README file. The raw API is designed to bypass some of the argument packing and unpacking on architectures for which it can be avoided. The closure API allows interpreted functions to be packaged up inside a C function pointer, so that they can be called as C functions, with no understanding on the client side that they are interpreted. It can also be used in other cases in which it is necessary to package up a user specified parameter and a function pointer as a single function pointer. The closure API must be implemented in order to get its functionality, e.g. for use by gij. Routines are provided to emulate the raw API if the underlying platform doesn't allow faster implementation. More details on the raw and cloure API can be found in: http://gcc.gnu.org/ml/java/1999-q3/msg00138.html and http://gcc.gnu.org/ml/java/1999-q3/msg00174.html -------------------------------------------------------------------- */ #ifndef LIBFFI_H #define LIBFFI_H #ifdef __cplusplus extern "C" { #endif /* Specify which architecture libffi is configured for. */ #ifndef @TARGET@ #define @TARGET@ #endif /* ---- System configuration information --------------------------------- */ #include #ifndef LIBFFI_ASM #if defined(_MSC_VER) && !defined(__clang__) #define __attribute__(X) #endif #include #include /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). But we can find it either under the correct ANSI name, or under GNU C's internal name. */ #define FFI_64_BIT_MAX 9223372036854775807 #ifdef LONG_LONG_MAX # define FFI_LONG_LONG_MAX LONG_LONG_MAX #else # ifdef LLONG_MAX # define FFI_LONG_LONG_MAX LLONG_MAX # ifdef _AIX52 /* or newer has C99 LLONG_MAX */ # undef FFI_64_BIT_MAX # define FFI_64_BIT_MAX 9223372036854775807LL # endif /* _AIX52 or newer */ # else # ifdef __GNUC__ # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ # endif # ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ # ifndef __PPC64__ # if defined (__IBMC__) || defined (__IBMCPP__) # define FFI_LONG_LONG_MAX LONGLONG_MAX # endif # endif /* __PPC64__ */ # undef FFI_64_BIT_MAX # define FFI_64_BIT_MAX 9223372036854775807LL # endif # endif #endif /* The closure code assumes that this works on pointers, i.e. a size_t */ /* can hold a pointer. */ typedef struct _ffi_type { size_t size; unsigned short alignment; unsigned short type; struct _ffi_type **elements; } ffi_type; #ifndef LIBFFI_HIDE_BASIC_TYPES #if SCHAR_MAX == 127 # define ffi_type_uchar ffi_type_uint8 # define ffi_type_schar ffi_type_sint8 #else #error "char size not supported" #endif #if SHRT_MAX == 32767 # define ffi_type_ushort ffi_type_uint16 # define ffi_type_sshort ffi_type_sint16 #elif SHRT_MAX == 2147483647 # define ffi_type_ushort ffi_type_uint32 # define ffi_type_sshort ffi_type_sint32 #else #error "short size not supported" #endif #if INT_MAX == 32767 # define ffi_type_uint ffi_type_uint16 # define ffi_type_sint ffi_type_sint16 #elif INT_MAX == 2147483647 # define ffi_type_uint ffi_type_uint32 # define ffi_type_sint ffi_type_sint32 #elif INT_MAX == 9223372036854775807 # define ffi_type_uint ffi_type_uint64 # define ffi_type_sint ffi_type_sint64 #else #error "int size not supported" #endif #if LONG_MAX == 2147483647 # if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX #error "no 64-bit data type supported" # endif #elif LONG_MAX != FFI_64_BIT_MAX #error "long size not supported" #endif #if LONG_MAX == 2147483647 # define ffi_type_ulong ffi_type_uint32 # define ffi_type_slong ffi_type_sint32 #elif LONG_MAX == FFI_64_BIT_MAX # define ffi_type_ulong ffi_type_uint64 # define ffi_type_slong ffi_type_sint64 #else #error "long size not supported" #endif /* Need minimal decorations for DLLs to works on Windows. */ /* GCC has autoimport and autoexport. Rely on Libtool to */ /* help MSVC export from a DLL, but always declare data */ /* to be imported for MSVC clients. This costs an extra */ /* indirection for MSVC clients using the static version */ /* of the library, but don't worry about that. Besides, */ /* as a workaround, they can define FFI_BUILDING if they */ /* *know* they are going to link with the static library. */ #if defined _MSC_VER && !defined FFI_BUILDING #define FFI_EXTERN extern __declspec(dllimport) #else #define FFI_EXTERN extern #endif /* These are defined in types.c */ FFI_EXTERN ffi_type ffi_type_void; FFI_EXTERN ffi_type ffi_type_uint8; FFI_EXTERN ffi_type ffi_type_sint8; FFI_EXTERN ffi_type ffi_type_uint16; FFI_EXTERN ffi_type ffi_type_sint16; FFI_EXTERN ffi_type ffi_type_uint32; FFI_EXTERN ffi_type ffi_type_sint32; FFI_EXTERN ffi_type ffi_type_uint64; FFI_EXTERN ffi_type ffi_type_sint64; FFI_EXTERN ffi_type ffi_type_float; FFI_EXTERN ffi_type ffi_type_double; FFI_EXTERN ffi_type ffi_type_pointer; #if @HAVE_LONG_DOUBLE@ FFI_EXTERN ffi_type ffi_type_longdouble; #else #define ffi_type_longdouble ffi_type_double #endif #ifdef FFI_TARGET_HAS_COMPLEX_TYPE FFI_EXTERN ffi_type ffi_type_complex_float; FFI_EXTERN ffi_type ffi_type_complex_double; #if @HAVE_LONG_DOUBLE@ FFI_EXTERN ffi_type ffi_type_complex_longdouble; #else #define ffi_type_complex_longdouble ffi_type_complex_double #endif #endif #endif /* LIBFFI_HIDE_BASIC_TYPES */ typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, FFI_BAD_ABI } ffi_status; typedef unsigned FFI_TYPE; typedef struct { ffi_abi abi; unsigned nargs; ffi_type **arg_types; ffi_type *rtype; unsigned bytes; unsigned flags; #ifdef FFI_EXTRA_CIF_FIELDS FFI_EXTRA_CIF_FIELDS; #endif } ffi_cif; #if @HAVE_LONG_DOUBLE_VARIANT@ /* Used to adjust size/alignment of ffi types. */ void ffi_prep_types (ffi_abi abi); #endif /* Used internally, but overridden by some architectures */ ffi_status ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, unsigned int isvariadic, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes); /* ---- Definitions for the raw API -------------------------------------- */ #ifndef FFI_SIZEOF_ARG # if LONG_MAX == 2147483647 # define FFI_SIZEOF_ARG 4 # elif LONG_MAX == FFI_64_BIT_MAX # define FFI_SIZEOF_ARG 8 # endif #endif #ifndef FFI_SIZEOF_JAVA_RAW # define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG #endif typedef union { ffi_sarg sint; ffi_arg uint; float flt; char data[FFI_SIZEOF_ARG]; void* ptr; } ffi_raw; #if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 /* This is a special case for mips64/n32 ABI (and perhaps others) where sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ typedef union { signed int sint; unsigned int uint; float flt; char data[FFI_SIZEOF_JAVA_RAW]; void* ptr; } ffi_java_raw; #else typedef ffi_raw ffi_java_raw; #endif void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue); void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); size_t ffi_raw_size (ffi_cif *cif); /* This is analogous to the raw API, except it uses Java parameter */ /* packing, even on 64-bit machines. I.e. on 64-bit machines */ /* longs and doubles are followed by an empty 64-bit word. */ void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_java_raw *avalue); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); size_t ffi_java_raw_size (ffi_cif *cif); /* ---- Definitions for closures ----------------------------------------- */ #if FFI_CLOSURES #ifdef _MSC_VER __declspec(align(8)) #endif typedef struct { #if @FFI_EXEC_TRAMPOLINE_TABLE@ void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; void (*fun)(ffi_cif*,void*,void**,void*); void *user_data; #ifdef __GNUC__ } ffi_closure __attribute__((aligned (8))); #else } ffi_closure; # ifdef __sgi # pragma pack 0 # endif #endif void *ffi_closure_alloc (size_t size, void **code); void ffi_closure_free (void *); ffi_status ffi_prep_closure (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data); ffi_status ffi_prep_closure_loc (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void*codeloc); #ifdef __sgi # pragma pack 8 #endif typedef struct { #if @FFI_EXEC_TRAMPOLINE_TABLE@ void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_raw*,void*); void *user_data; } ffi_raw_closure; typedef struct { #if @FFI_EXEC_TRAMPOLINE_TABLE@ void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); void *user_data; } ffi_java_raw_closure; ffi_status ffi_prep_raw_closure (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data); ffi_status ffi_prep_raw_closure_loc (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data, void *codeloc); ffi_status ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data); ffi_status ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data, void *codeloc); #endif /* FFI_CLOSURES */ /* ---- Public interface definition -------------------------------------- */ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes); ffi_status ffi_prep_cif_var(ffi_cif *cif, ffi_abi abi, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); /* Useful for eliminating compiler warnings */ #define FFI_FN(f) ((void (*)(void))f) /* ---- Definitions shared with assembly code ---------------------------- */ #endif /* If these change, update src/mips/ffitarget.h. */ #define FFI_TYPE_VOID 0 #define FFI_TYPE_INT 1 #define FFI_TYPE_FLOAT 2 #define FFI_TYPE_DOUBLE 3 #if @HAVE_LONG_DOUBLE@ #define FFI_TYPE_LONGDOUBLE 4 #else #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #endif #define FFI_TYPE_UINT8 5 #define FFI_TYPE_SINT8 6 #define FFI_TYPE_UINT16 7 #define FFI_TYPE_SINT16 8 #define FFI_TYPE_UINT32 9 #define FFI_TYPE_SINT32 10 #define FFI_TYPE_UINT64 11 #define FFI_TYPE_SINT64 12 #define FFI_TYPE_STRUCT 13 #define FFI_TYPE_POINTER 14 #define FFI_TYPE_COMPLEX 15 /* This should always refer to the last type code (for sanity checks) */ #define FFI_TYPE_LAST FFI_TYPE_COMPLEX #ifdef __cplusplus } #endif #endif polyml-5.7.1/libffi/include/ffi_common.h0000644000175000017500000000663613204034553017155 0ustar daviddavid/* ----------------------------------------------------------------------- ffi_common.h - Copyright (C) 2011, 2012, 2013 Anthony Green Copyright (C) 2007 Free Software Foundation, Inc Copyright (c) 1996 Red Hat, Inc. Common internal definitions and macros. Only necessary for building libffi. ----------------------------------------------------------------------- */ #ifndef FFI_COMMON_H #define FFI_COMMON_H #ifdef __cplusplus extern "C" { #endif #include /* Do not move this. Some versions of AIX are very picky about where this is positioned. */ #ifdef __GNUC__ # if HAVE_ALLOCA_H # include # else /* mingw64 defines this already in malloc.h. */ # ifndef alloca # define alloca __builtin_alloca # endif # endif # define MAYBE_UNUSED __attribute__((__unused__)) #else # define MAYBE_UNUSED # if HAVE_ALLOCA_H # include # else # ifdef _AIX # pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ # ifdef _MSC_VER # define alloca _alloca # else char *alloca (); # endif # endif # endif # endif #endif /* Check for the existence of memcpy. */ #if STDC_HEADERS # include #else # ifndef HAVE_MEMCPY # define memcpy(d, s, n) bcopy ((s), (d), (n)) # endif #endif #if defined(FFI_DEBUG) #include #endif #ifdef FFI_DEBUG void ffi_assert(char *expr, char *file, int line); void ffi_stop_here(void); void ffi_type_test(ffi_type *a, char *file, int line); #define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__)) #define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l))) #define FFI_ASSERT_VALID_TYPE(x) ffi_type_test (x, __FILE__, __LINE__) #else #define FFI_ASSERT(x) #define FFI_ASSERT_AT(x, f, l) #define FFI_ASSERT_VALID_TYPE(x) #endif #define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) #define ALIGN_DOWN(v, a) (((size_t) (v)) & -a) /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif); ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs); /* Extended cif, used in callback from assembly routine */ typedef struct { ffi_cif *cif; void *rvalue; void **avalue; } extended_cif; /* Terse sized type definitions. */ #if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C) typedef unsigned char UINT8; typedef signed char SINT8; typedef unsigned short UINT16; typedef signed short SINT16; typedef unsigned int UINT32; typedef signed int SINT32; # ifdef _MSC_VER typedef unsigned __int64 UINT64; typedef signed __int64 SINT64; # else # include typedef uint64_t UINT64; typedef int64_t SINT64; # endif #else typedef unsigned int UINT8 __attribute__((__mode__(__QI__))); typedef signed int SINT8 __attribute__((__mode__(__QI__))); typedef unsigned int UINT16 __attribute__((__mode__(__HI__))); typedef signed int SINT16 __attribute__((__mode__(__HI__))); typedef unsigned int UINT32 __attribute__((__mode__(__SI__))); typedef signed int SINT32 __attribute__((__mode__(__SI__))); typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); typedef signed int SINT64 __attribute__((__mode__(__DI__))); #endif typedef float FLOAT32; #ifndef __GNUC__ #define __builtin_expect(x, expected_value) (x) #endif #define LIKELY(x) __builtin_expect(!!(x),1) #define UNLIKELY(x) __builtin_expect((x)!=0,0) #ifdef __cplusplus } #endif #endif polyml-5.7.1/libffi/include/Makefile.in0000644000175000017500000004252513204034553016732 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/ffi.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ $(top_srcdir)/m4/ax_configure_args.m4 \ $(top_srcdir)/m4/ax_enable_builddir.m4 \ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/fficonfig.h CONFIG_CLEAN_FILES = ffi.h ffitarget.h CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(includesdir)" HEADERS = $(nodist_includes_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LTLDFLAGS = @AM_LTLDFLAGS@ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ TARGETDIR = @TARGETDIR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_enable_builddir_sed = @ax_enable_builddir_sed@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ toolexeclibdir = @toolexeclibdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign DISTCLEANFILES = ffitarget.h EXTRA_DIST = ffi.h.in ffi_common.h includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include nodist_includes_HEADERS = ffi.h ffitarget.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): ffi.h: $(top_builddir)/config.status $(srcdir)/ffi.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-nodist_includesHEADERS: $(nodist_includes_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \ done uninstall-nodist_includesHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includesdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-nodist_includesHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-nodist_includesHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-nodist_includesHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-nodist_includesHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/libffi/aclocal.m40000644000175000017500000021441313204034553015077 0ustar daviddavid# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- # # Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc. # Written by Thomas Tanner, 1999 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 18 LTDL_INIT # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) # ------------------------------------------ # DIRECTORY contains the libltdl sources. It is okay to call this # function multiple times, as long as the same DIRECTORY is always given. AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) _$0($*) ])# LT_CONFIG_LTDL_DIR # We break this out into a separate macro, so that we can call it safely # internally without being caught accidentally by the sed scan in libtoolize. m4_defun([_LT_CONFIG_LTDL_DIR], [dnl remove trailing slashes m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) m4_case(_LTDL_DIR, [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.' m4_if(_ARG_DIR, [.], [], [m4_define([_LTDL_DIR], _ARG_DIR) _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], [m4_if(_ARG_DIR, _LTDL_DIR, [], [m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])]) m4_popdef([_ARG_DIR]) ])# _LT_CONFIG_LTDL_DIR # Initialise: m4_define([_LTDL_DIR], []) # _LT_BUILD_PREFIX # ---------------- # If Autoconf is new enough, expand to `${top_build_prefix}', otherwise # to `${top_builddir}/'. m4_define([_LT_BUILD_PREFIX], [m4_ifdef([AC_AUTOCONF_VERSION], [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], [${top_build_prefix}], [${top_builddir}/])], [${top_build_prefix}])], [${top_builddir}/])[]dnl ]) # LTDL_CONVENIENCE # ---------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with # '${top_build_prefix}' if available, otherwise with '${top_builddir}/', # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_build_prefix, top_builddir, and top_srcdir appropriately # in your Makefiles. AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_CONVENIENCE # AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_CONVENIENCE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) # _LTDL_CONVENIENCE # ----------------- # Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). m4_defun([_LTDL_CONVENIENCE], [case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" AC_SUBST([INCLTDL]) ])# _LTDL_CONVENIENCE # LTDL_INSTALLABLE # ---------------- # sets LIBLTDL to the link flags for the libltdl installable library # and LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl # is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if # available, otherwise with '${top_builddir}/', and LTDLINCL will be # prefixed with '${top_srcdir}/' (note the single quotes!). If your # package is not flat and you're not using automake, define top_build_prefix, # top_builddir, and top_srcdir appropriately in your Makefiles. # In the future, this macro may have to be called after LT_INIT. AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_INSTALLABLE # AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_INSTALLABLE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) # _LTDL_INSTALLABLE # ----------------- # Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). m4_defun([_LTDL_INSTALLABLE], [if test -f $prefix/lib/libltdl.la; then lt_save_LDFLAGS="$LDFLAGS" LDFLAGS="-L$prefix/lib $LDFLAGS" AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) LDFLAGS="$lt_save_LDFLAGS" if test x"${lt_lib_ltdl-no}" = xyes; then if test x"$enable_ltdl_install" != xyes; then # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install']) enable_ltdl_install=no fi elif test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) fi fi # If configure.ac declared an installable ltdl, and the user didn't override # with --disable-ltdl-install, we will install the shipped libltdl. case $enable_ltdl_install in no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLDEPS= LTDLINCL= ;; *) enable_ltdl_install=yes ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" ;; esac AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" AC_SUBST([INCLTDL]) ])# LTDL_INSTALLABLE # _LTDL_MODE_DISPATCH # ------------------- m4_define([_LTDL_MODE_DISPATCH], [dnl If _LTDL_DIR is `.', then we are configuring libltdl itself: m4_if(_LTDL_DIR, [], [], dnl if _LTDL_MODE was not set already, the default value is `subproject': [m4_case(m4_default(_LTDL_MODE, [subproject]), [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])], [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])], [recursive], [], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl dnl Be careful not to expand twice: m4_define([$0], []) ])# _LTDL_MODE_DISPATCH # _LT_LIBOBJ(MODULE_NAME) # ----------------------- # Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead # of into LIBOBJS. AC_DEFUN([_LT_LIBOBJ], [ m4_pattern_allow([^_LT_LIBOBJS$]) _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ])# _LT_LIBOBJS # LTDL_INIT([OPTIONS]) # -------------------- # Clients of libltdl can use this macro to allow the installer to # choose between a shipped copy of the ltdl sources or a preinstalled # version of the library. If the shipped ltdl sources are not in a # subdirectory named libltdl, the directory name must be given by # LT_CONFIG_LTDL_DIR. AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) dnl We need to keep our own list of libobjs separate from our parent project, dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while dnl we look for our own LIBOBJs. m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) m4_pushdef([AC_LIBSOURCES]) dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: m4_if(_LTDL_MODE, [], [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) AC_ARG_WITH([included_ltdl], [AS_HELP_STRING([--with-included-ltdl], [use the GNU ltdl sources included here])]) if test "x$with_included_ltdl" != xyes; then # We are not being forced to use the included libltdl sources, so # decide whether there is a useful installed version we can use. AC_CHECK_HEADER([ltdl.h], [AC_CHECK_DECL([lt_dlinterface_register], [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], [with_included_ltdl=no], [with_included_ltdl=yes])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT #include ])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT] ) fi dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE dnl was called yet, then for old times' sake, we assume libltdl is in an dnl eponymous directory: AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) AC_ARG_WITH([ltdl_include], [AS_HELP_STRING([--with-ltdl-include=DIR], [use the ltdl headers installed in DIR])]) if test -n "$with_ltdl_include"; then if test -f "$with_ltdl_include/ltdl.h"; then : else AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) fi else with_ltdl_include=no fi AC_ARG_WITH([ltdl_lib], [AS_HELP_STRING([--with-ltdl-lib=DIR], [use the libltdl.la installed in DIR])]) if test -n "$with_ltdl_lib"; then if test -f "$with_ltdl_lib/libltdl.la"; then : else AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) fi else with_ltdl_lib=no fi case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ,yes,no,no,) m4_case(m4_default(_LTDL_TYPE, [convenience]), [convenience], [_LTDL_CONVENIENCE], [installable], [_LTDL_INSTALLABLE], [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ;; ,no,no,no,) # If the included ltdl is not to be used, then use the # preinstalled libltdl we found. AC_DEFINE([HAVE_LTDL], [1], [Define this if a modern libltdl is already installed]) LIBLTDL=-lltdl LTDLDEPS= LTDLINCL= ;; ,no*,no,*) AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) ;; *) with_included_ltdl=no LIBLTDL="-L$with_ltdl_lib -lltdl" LTDLDEPS= LTDLINCL="-I$with_ltdl_include" ;; esac INCLTDL="$LTDLINCL" # Report our decision... AC_MSG_CHECKING([where to find libltdl headers]) AC_MSG_RESULT([$LTDLINCL]) AC_MSG_CHECKING([where to find libltdl library]) AC_MSG_RESULT([$LIBLTDL]) _LTDL_SETUP dnl restore autoconf definition. m4_popdef([AC_LIBOBJ]) m4_popdef([AC_LIBSOURCES]) AC_CONFIG_COMMANDS_PRE([ _ltdl_libobjs= _ltdl_ltlibobjs= if test -n "$_LT_LIBOBJS"; then # Remove the extension. _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" done fi AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ]) # Only expand once: m4_define([LTDL_INIT]) ])# LTDL_INIT # Old names: AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIB_LTDL], []) dnl AC_DEFUN([AC_WITH_LTDL], []) dnl AC_DEFUN([LT_WITH_LTDL], []) # _LTDL_SETUP # ----------- # Perform all the checks necessary for compilation of the ltdl objects # -- including compiler checks and header checks. This is a public # interface mainly for the benefit of libltdl's own configure.ac, most # other users should call LTDL_INIT instead. AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_SYS_MODULE_EXT])dnl AC_REQUIRE([LT_SYS_MODULE_PATH])dnl AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl AC_REQUIRE([LT_LIB_DLLOAD])dnl AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl AC_REQUIRE([gl_FUNC_ARGZ])dnl m4_require([_LT_CHECK_OBJDIR])dnl m4_require([_LT_HEADER_DLFCN])dnl m4_require([_LT_CHECK_DLPREOPEN])dnl m4_require([_LT_DECL_SED])dnl dnl Don't require this, or it will be expanded earlier than the code dnl that sets the variables it relies on: _LT_ENABLE_INSTALL dnl _LTDL_MODE specific code must be called at least once: _LTDL_MODE_DISPATCH # In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS # the user used. This is so that ltdl.h can pick up the parent projects # config.h file, The first file in AC_CONFIG_HEADERS must contain the # definitions required by ltdl.c. # FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). AC_CONFIG_COMMANDS_PRE([dnl m4_pattern_allow([^LT_CONFIG_H$])dnl m4_ifset([AH_HEADER], [LT_CONFIG_H=AH_HEADER], [m4_ifset([AC_LIST_HEADERS], [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], [])])]) AC_SUBST([LT_CONFIG_H]) AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], [], [], [AC_INCLUDES_DEFAULT]) AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) m4_pattern_allow([LT_LIBEXT])dnl AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) name= eval "lt_libprefix=\"$libname_spec\"" m4_pattern_allow([LT_LIBPREFIX])dnl AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) name=ltdl eval "LTDLOPEN=\"$libname_spec\"" AC_SUBST([LTDLOPEN]) ])# _LTDL_SETUP # _LT_ENABLE_INSTALL # ------------------ m4_define([_LT_ENABLE_INSTALL], [AC_ARG_ENABLE([ltdl-install], [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) case ,${enable_ltdl_install},${enable_ltdl_convenience} in *yes*) ;; *) enable_ltdl_convenience=yes ;; esac m4_ifdef([AM_CONDITIONAL], [AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)]) ])# _LT_ENABLE_INSTALL # LT_SYS_DLOPEN_DEPLIBS # --------------------- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether deplibs are loaded by dlopen], [lt_cv_sys_dlopen_deplibs], [# PORTME does your system automatically load deplibs for dlopen? # or its logical equivalent (e.g. shl_load for HP-UX < 11) # For now, we just catch OSes we know something about -- in the # future, we'll try test this programmatically. lt_cv_sys_dlopen_deplibs=unknown case $host_os in aix3*|aix4.1.*|aix4.2.*) # Unknown whether this is true for these versions of AIX, but # we want this `case' here to explicitly catch those versions. lt_cv_sys_dlopen_deplibs=unknown ;; aix[[4-9]]*) lt_cv_sys_dlopen_deplibs=yes ;; amigaos*) case $host_cpu in powerpc) lt_cv_sys_dlopen_deplibs=no ;; esac ;; darwin*) # Assuming the user has installed a libdl from somewhere, this is true # If you are looking for one http://www.opendarwin.org/projects/dlcompat lt_cv_sys_dlopen_deplibs=yes ;; freebsd* | dragonfly*) lt_cv_sys_dlopen_deplibs=yes ;; gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) # GNU and its variants, using gnu ld.so (Glibc) lt_cv_sys_dlopen_deplibs=yes ;; hpux10*|hpux11*) lt_cv_sys_dlopen_deplibs=yes ;; interix*) lt_cv_sys_dlopen_deplibs=yes ;; irix[[12345]]*|irix6.[[01]]*) # Catch all versions of IRIX before 6.2, and indicate that we don't # know how it worked for any of those versions. lt_cv_sys_dlopen_deplibs=unknown ;; irix*) # The case above catches anything before 6.2, and it's known that # at 6.2 and later dlopen does load deplibs. lt_cv_sys_dlopen_deplibs=yes ;; netbsd* | netbsdelf*-gnu) lt_cv_sys_dlopen_deplibs=yes ;; openbsd*) lt_cv_sys_dlopen_deplibs=yes ;; osf[[1234]]*) # dlopen did load deplibs (at least at 4.x), but until the 5.x series, # it did *not* use an RPATH in a shared library to find objects the # library depends on, so we explicitly say `no'. lt_cv_sys_dlopen_deplibs=no ;; osf5.0|osf5.0a|osf5.1) # dlopen *does* load deplibs and with the right loader patch applied # it even uses RPATH in a shared library to search for shared objects # that the library depends on, but there's no easy way to know if that # patch is installed. Since this is the case, all we can really # say is unknown -- it depends on the patch being installed. If # it is, this changes to `yes'. Without it, it would be `no'. lt_cv_sys_dlopen_deplibs=unknown ;; osf*) # the two cases above should catch all versions of osf <= 5.1. Read # the comments above for what we know about them. # At > 5.1, deplibs are loaded *and* any RPATH in a shared library # is used to find them so we can finally say `yes'. lt_cv_sys_dlopen_deplibs=yes ;; qnx*) lt_cv_sys_dlopen_deplibs=yes ;; solaris*) lt_cv_sys_dlopen_deplibs=yes ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) libltdl_cv_sys_dlopen_deplibs=yes ;; esac ]) if test "$lt_cv_sys_dlopen_deplibs" != yes; then AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], [Define if the OS needs help to load dependent libraries for dlopen().]) fi ])# LT_SYS_DLOPEN_DEPLIBS # Old name: AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) # LT_SYS_MODULE_EXT # ----------------- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which extension is used for runtime loadable modules], [libltdl_cv_shlibext], [ module=yes eval libltdl_cv_shlibext=$shrext_cmds module=no eval libltdl_cv_shrext=$shrext_cmds ]) if test -n "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_MODULE_EXT])dnl AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], [Define to the extension used for runtime loadable modules, say, ".so".]) fi if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_SHARED_EXT])dnl AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], [Define to the shared library suffix, say, ".dylib".]) fi ])# LT_SYS_MODULE_EXT # Old name: AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) # LT_SYS_MODULE_PATH # ------------------ AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which variable specifies run-time module search path], [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) if test -n "$lt_cv_module_path_var"; then m4_pattern_allow([LT_MODULE_PATH_VAR])dnl AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], [Define to the name of the environment variable that determines the run-time module search path.]) fi ])# LT_SYS_MODULE_PATH # Old name: AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) # LT_SYS_DLSEARCH_PATH # -------------------- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([for the default library search path], [lt_cv_sys_dlsearch_path], [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) if test -n "$lt_cv_sys_dlsearch_path"; then sys_dlsearch_path= for dir in $lt_cv_sys_dlsearch_path; do if test -z "$sys_dlsearch_path"; then sys_dlsearch_path="$dir" else sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" fi done m4_pattern_allow([LT_DLSEARCH_PATH])dnl AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], [Define to the system default library search path.]) fi ])# LT_SYS_DLSEARCH_PATH # Old name: AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) # _LT_CHECK_DLPREOPEN # ------------------- m4_defun([_LT_CHECK_DLPREOPEN], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], [libltdl_cv_preloaded_symbols], [if test -n "$lt_cv_sys_global_symbol_pipe"; then libltdl_cv_preloaded_symbols=yes else libltdl_cv_preloaded_symbols=no fi ]) if test x"$libltdl_cv_preloaded_symbols" = xyes; then AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], [Define if libtool can extract symbol lists from object files.]) fi ])# _LT_CHECK_DLPREOPEN # LT_LIB_DLLOAD # ------------- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) LT_DLLOADERS= AC_SUBST([LT_DLLOADERS]) AC_LANG_PUSH([C]) LIBADD_DLOPEN= AC_SEARCH_LIBS([dlopen], [dl], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) if test "$ac_cv_search_dlopen" != "none required" ; then LIBADD_DLOPEN="-ldl" fi libltdl_cv_lib_dl_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H # include #endif ]], [[dlopen(0, 0);]])], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_CHECK_LIB([svld], [dlopen], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes then lt_save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" AC_CHECK_FUNCS([dlerror]) LIBS="$lt_save_LIBS" fi AC_SUBST([LIBADD_DLOPEN]) LIBADD_SHL_LOAD= AC_CHECK_FUNC([shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], [AC_CHECK_LIB([dld], [shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" LIBADD_SHL_LOAD="-ldld"])]) AC_SUBST([LIBADD_SHL_LOAD]) case $host_os in darwin[[1567]].*) # We only want this for pre-Mac OS X 10.4. AC_CHECK_FUNC([_dyld_func_lookup], [AC_DEFINE([HAVE_DYLD], [1], [Define if you have the _dyld_func_lookup function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ;; beos*) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ;; cygwin* | mingw* | os2* | pw32*) AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ;; esac AC_CHECK_LIB([dld], [dld_link], [AC_DEFINE([HAVE_DLD], [1], [Define if you have the GNU dld library.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) AC_SUBST([LIBADD_DLD_LINK]) m4_pattern_allow([^LT_DLPREOPEN$]) LT_DLPREOPEN= if test -n "$LT_DLLOADERS" then for lt_loader in $LT_DLLOADERS; do LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " done AC_DEFINE([HAVE_LIBDLLOADER], [1], [Define if libdlloader will be built on this platform]) fi AC_SUBST([LT_DLPREOPEN]) dnl This isn't used anymore, but set it for backwards compatibility LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" AC_SUBST([LIBADD_DL]) AC_LANG_POP ])# LT_LIB_DLLOAD # Old name: AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLLIB], []) # LT_SYS_SYMBOL_USCORE # -------------------- # does the compiler prefix global symbols with an underscore? AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([for _ prefix in compiled symbols], [lt_cv_sys_symbol_underscore], [lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. ac_nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.c >&AS_MESSAGE_LOG_FD fi rm -rf conftest* ]) sys_symbol_underscore=$lt_cv_sys_symbol_underscore AC_SUBST([sys_symbol_underscore]) ])# LT_SYS_SYMBOL_USCORE # Old name: AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) # LT_FUNC_DLSYM_USCORE # -------------------- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl if test x"$lt_cv_sys_symbol_underscore" = xyes; then if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then AC_CACHE_CHECK([whether we have to add an underscore for dlsym], [libltdl_cv_need_uscore], [libltdl_cv_need_uscore=unknown save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" _LT_TRY_DLOPEN_SELF( [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], [], [libltdl_cv_need_uscore=cross]) LIBS="$save_LIBS" ]) fi fi if test x"$libltdl_cv_need_uscore" = xyes; then AC_DEFINE([NEED_USCORE], [1], [Define if dlsym() requires a leading underscore in symbol names.]) fi ])# LT_FUNC_DLSYM_USCORE # Old name: AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AS # ---------- AC_DEFUN([AM_PROG_AS], [# By default we simply use the C compiler to build assembly code. AC_REQUIRE([AC_PROG_CC]) test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/asmcfi.m4]) m4_include([m4/ax_append_flag.m4]) m4_include([m4/ax_cc_maxopt.m4]) m4_include([m4/ax_cflags_warn_all.m4]) m4_include([m4/ax_check_compile_flag.m4]) m4_include([m4/ax_compiler_vendor.m4]) m4_include([m4/ax_configure_args.m4]) m4_include([m4/ax_enable_builddir.m4]) m4_include([m4/ax_gcc_archflag.m4]) m4_include([m4/ax_gcc_x86_cpuid.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([acinclude.m4]) polyml-5.7.1/libffi/build-ios.sh0000755000175000017500000000403013204034553015455 0ustar daviddavid#!/bin/sh PLATFORM_IOS=/Developer/Platforms/iPhoneOS.platform/ PLATFORM_IOS_SIM=/Developer/Platforms/iPhoneSimulator.platform/ SDK_IOS_VERSION="4.2" MIN_IOS_VERSION="3.0" OUTPUT_DIR="universal-ios" build_target () { local platform=$1 local sdk=$2 local arch=$3 local triple=$4 local builddir=$5 mkdir -p "${builddir}" pushd "${builddir}" export CC="${platform}"/Developer/usr/bin/gcc-4.2 export CFLAGS="-arch ${arch} -isysroot ${sdk} -miphoneos-version-min=${MIN_IOS_VERSION}" ../configure --host=${triple} && make popd } # Build all targets build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv6 arm-apple-darwin10 armv6-ios build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv7 arm-apple-darwin10 armv7-ios build_target "${PLATFORM_IOS_SIM}" "${PLATFORM_IOS_SIM}/Developer/SDKs/iPhoneSimulator${SDK_IOS_VERSION}.sdk/" i386 i386-apple-darwin10 i386-ios-sim # Create universal output directories mkdir -p "${OUTPUT_DIR}" mkdir -p "${OUTPUT_DIR}/include" mkdir -p "${OUTPUT_DIR}/include/armv6" mkdir -p "${OUTPUT_DIR}/include/armv7" mkdir -p "${OUTPUT_DIR}/include/i386" # Create the universal binary lipo -create armv6-ios/.libs/libffi.a armv7-ios/.libs/libffi.a i386-ios-sim/.libs/libffi.a -output "${OUTPUT_DIR}/libffi.a" # Copy in the headers copy_headers () { local src=$1 local dest=$2 # Fix non-relative header reference sed 's//"ffitarget.h"/' < "${src}/include/ffi.h" > "${dest}/ffi.h" cp "${src}/include/ffitarget.h" "${dest}" } copy_headers armv6-ios "${OUTPUT_DIR}/include/armv6" copy_headers armv7-ios "${OUTPUT_DIR}/include/armv7" copy_headers i386-ios-sim "${OUTPUT_DIR}/include/i386" # Create top-level header ( cat << EOF #ifdef __arm__ #include #ifdef _ARM_ARCH_6 #include "include/armv6/ffi.h" #elif _ARM_ARCH_7 #include "include/armv7/ffi.h" #endif #elif defined(__i386__) #include "include/i386/ffi.h" #endif EOF ) > "${OUTPUT_DIR}/ffi.h" polyml-5.7.1/libffi/mdate-sh0000644000175000017500000001363713204034553014671 0ustar daviddavid#!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2010-08-21.06; # UTC # Copyright (C) 1995-2013 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST fi case $1 in '') echo "$0: No file. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification day of FILE, in the format: 1 January 1970 Report bugs to . EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac error () { echo "$0: $1" >&2 exit 1 } # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A 'ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named "Jan", or "Feb", etc. However, it's unlikely that '/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do test $# -gt 0 || error "failed parsing '$ls_command /' output" shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done test -n "$month" || error "failed parsing '$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/libffi/generate-osx-source-and-headers.py0000644000175000017500000001210013204034553021646 0ustar daviddavid#!/usr/bin/env python import subprocess import re import os import errno import collections import sys class Platform(object): pass sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)') def sdkinfo(sdkname): ret = {} for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout: kv = line.strip().split(': ', 1) if len(kv) == 2: k,v = kv ret[k] = v return ret desktop_sdk_info = sdkinfo('macosx') def latest_sdks(): latest_desktop = None for line in subprocess.Popen(['xcodebuild', '-showsdks'], stdout=subprocess.PIPE).stdout: match = sdk_re.match(line) if match: if 'OS X' in line: latest_desktop = match.group(1) return latest_desktop desktop_sdk = latest_sdks() class desktop_platform_32(Platform): sdk='macosx' arch = 'i386' name = 'mac32' triple = 'i386-apple-darwin10' sdkroot = desktop_sdk_info['Path'] prefix = "#if defined(__i386__) && !defined(__x86_64__)\n\n" suffix = "\n\n#endif" class desktop_platform_64(Platform): sdk='macosx' arch = 'x86_64' name = 'mac' triple = 'x86_64-apple-darwin10' sdkroot = desktop_sdk_info['Path'] prefix = "#if !defined(__i386__) && defined(__x86_64__)\n\n" suffix = "\n\n#endif" def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): if not os.path.exists(dst_dir): os.makedirs(dst_dir) out_filename = filename if file_suffix: split_name = os.path.splitext(filename) out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) with open(os.path.join(src_dir, filename)) as in_file: with open(os.path.join(dst_dir, out_filename), 'w') as out_file: if prefix: out_file.write(prefix) out_file.write(in_file.read()) if suffix: out_file.write(suffix) headers_seen = collections.defaultdict(set) def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None): for root, dirs, files in os.walk(src_dir, followlinks=True): relroot = os.path.relpath(root,src_dir) def move_dir(arch, prefix='', suffix='', files=[]): for file in files: file_suffix = None if file.endswith('.h'): if dest_include_dir: file_suffix = arch if arch: headers_seen[file].add(arch) move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix) elif dest_dir: outroot = os.path.join(dest_dir, relroot) move_file(root, outroot, file, prefix=prefix, suffix=suffix) if relroot == '.': move_dir(arch=arch, files=files, prefix=prefix, suffix=suffix) elif relroot == 'x86': move_dir(arch='i386', prefix="#if defined(__i386__) && !defined(__x86_64__)\n\n", suffix="\n\n#endif", files=files) move_dir(arch='x86_64', prefix="#if !defined(__i386__) && defined(__x86_64__)\n\n", suffix="\n\n#endif", files=files) def build_target(platform): def xcrun_cmd(cmd): return subprocess.check_output(['xcrun', '-sdk', platform.sdkroot, '-find', cmd]).strip() build_dir = 'build_' + platform.name if not os.path.exists(build_dir): os.makedirs(build_dir) env = dict(CC=xcrun_cmd('clang'), LD=xcrun_cmd('ld'), CFLAGS='-arch %s -isysroot %s -mmacosx-version-min=10.6' % (platform.arch, platform.sdkroot)) working_dir=os.getcwd() try: os.chdir(build_dir) subprocess.check_call(['../configure', '-host', platform.triple], env=env) move_source_tree('.', None, '../osx/include', arch=platform.arch, prefix=platform.prefix, suffix=platform.suffix) move_source_tree('./include', None, '../osx/include', arch=platform.arch, prefix=platform.prefix, suffix=platform.suffix) finally: os.chdir(working_dir) for header_name, archs in headers_seen.iteritems(): basename, suffix = os.path.splitext(header_name) def main(): move_source_tree('src', 'osx/src', 'osx/include') move_source_tree('include', None, 'osx/include') build_target(desktop_platform_32) build_target(desktop_platform_64) for header_name, archs in headers_seen.iteritems(): basename, suffix = os.path.splitext(header_name) with open(os.path.join('osx/include', header_name), 'w') as header: for arch in archs: header.write('#include <%s_%s%s>\n' % (basename, arch, suffix)) if __name__ == '__main__': main() polyml-5.7.1/libffi/missing0000755000175000017500000001533113204034553014634 0ustar daviddavid#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2012-06-26.16; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'automa4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/libffi/src/0000755000175000017500000000000013204034553014021 5ustar daviddavidpolyml-5.7.1/libffi/src/sh/0000755000175000017500000000000013204034553014433 5ustar daviddavidpolyml-5.7.1/libffi/src/sh/ffitarget.h0000644000175000017500000000362413204034553016564 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for SuperH. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 16 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/sh/ffi.c0000644000175000017500000003561013204034553015350 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima Copyright (c) 2008 Red Hat, Inc. SuperH Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #define NGREGARG 4 #if defined(__SH4__) #define NFREGARG 8 #endif #if defined(__HITACHI__) #define STRUCT_VALUE_ADDRESS_WITH_ARG 1 #else #define STRUCT_VALUE_ADDRESS_WITH_ARG 0 #endif /* If the structure has essentially an unique element, return its type. */ static int simple_type (ffi_type *arg) { if (arg->type != FFI_TYPE_STRUCT) return arg->type; else if (arg->elements[1]) return FFI_TYPE_STRUCT; return simple_type (arg->elements[0]); } static int return_type (ffi_type *arg) { unsigned short type; if (arg->type != FFI_TYPE_STRUCT) return arg->type; type = simple_type (arg->elements[0]); if (! arg->elements[1]) { switch (type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: return FFI_TYPE_INT; default: return type; } } /* gcc uses r0/r1 pair for some kind of structures. */ if (arg->size <= 2 * sizeof (int)) { int i = 0; ffi_type *e; while ((e = arg->elements[i++])) { type = simple_type (e); switch (type) { case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_INT: case FFI_TYPE_FLOAT: return FFI_TYPE_UINT64; default: break; } } } return FFI_TYPE_STRUCT; } /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register int tmp; register unsigned int avn; register void **p_argv; register char *argp; register ffi_type **p_arg; int greg, ireg; #if defined(__SH4__) int freg = 0; #endif tmp = 0; argp = stack; if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) { *(void **) argp = ecif->rvalue; argp += 4; ireg = STRUCT_VALUE_ADDRESS_WITH_ARG ? 1 : 0; } else ireg = 0; /* Set arguments for registers. */ greg = ireg; avn = ecif->cif->nargs; p_argv = ecif->avalue; for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) { size_t z; z = (*p_arg)->size; if (z < sizeof(int)) { if (greg++ >= NGREGARG) continue; z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; case FFI_TYPE_STRUCT: *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); break; default: FFI_ASSERT(0); } argp += z; } else if (z == sizeof(int)) { #if defined(__SH4__) if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (freg++ >= NFREGARG) continue; } else #endif { if (greg++ >= NGREGARG) continue; } *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); argp += z; } #if defined(__SH4__) else if ((*p_arg)->type == FFI_TYPE_DOUBLE) { if (freg + 1 >= NFREGARG) continue; freg = (freg + 1) & ~1; freg += 2; memcpy (argp, *p_argv, z); argp += z; } #endif else { int n = (z + sizeof (int) - 1) / sizeof (int); #if defined(__SH4__) if (greg + n - 1 >= NGREGARG) continue; #else if (greg >= NGREGARG) continue; #endif greg += n; memcpy (argp, *p_argv, z); argp += n * sizeof (int); } } /* Set arguments on stack. */ greg = ireg; #if defined(__SH4__) freg = 0; #endif p_argv = ecif->avalue; for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) { size_t z; z = (*p_arg)->size; if (z < sizeof(int)) { if (greg++ < NGREGARG) continue; z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; case FFI_TYPE_STRUCT: *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); break; default: FFI_ASSERT(0); } argp += z; } else if (z == sizeof(int)) { #if defined(__SH4__) if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (freg++ < NFREGARG) continue; } else #endif { if (greg++ < NGREGARG) continue; } *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); argp += z; } #if defined(__SH4__) else if ((*p_arg)->type == FFI_TYPE_DOUBLE) { if (freg + 1 < NFREGARG) { freg = (freg + 1) & ~1; freg += 2; continue; } memcpy (argp, *p_argv, z); argp += z; } #endif else { int n = (z + sizeof (int) - 1) / sizeof (int); if (greg + n - 1 < NGREGARG) { greg += n; continue; } #if (! defined(__SH4__)) else if (greg < NGREGARG) { greg = NGREGARG; continue; } #endif memcpy (argp, *p_argv, z); argp += n * sizeof (int); } } return; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { int i, j; int size, type; int n, m; int greg; #if defined(__SH4__) int freg = 0; #endif cif->flags = 0; greg = ((return_type (cif->rtype) == FFI_TYPE_STRUCT) && STRUCT_VALUE_ADDRESS_WITH_ARG) ? 1 : 0; #if defined(__SH4__) for (i = j = 0; i < cif->nargs && j < 12; i++) { type = (cif->arg_types)[i]->type; switch (type) { case FFI_TYPE_FLOAT: if (freg >= NFREGARG) continue; freg++; cif->flags += ((cif->arg_types)[i]->type) << (2 * j); j++; break; case FFI_TYPE_DOUBLE: if ((freg + 1) >= NFREGARG) continue; freg = (freg + 1) & ~1; freg += 2; cif->flags += ((cif->arg_types)[i]->type) << (2 * j); j++; break; default: size = (cif->arg_types)[i]->size; n = (size + sizeof (int) - 1) / sizeof (int); if (greg + n - 1 >= NGREGARG) continue; greg += n; for (m = 0; m < n; m++) cif->flags += FFI_TYPE_INT << (2 * j++); break; } } #else for (i = j = 0; i < cif->nargs && j < 4; i++) { size = (cif->arg_types)[i]->size; n = (size + sizeof (int) - 1) / sizeof (int); if (greg >= NGREGARG) continue; else if (greg + n - 1 >= NGREGARG) n = NGREGARG - greg; greg += n; for (m = 0; m < n; m++) cif->flags += FFI_TYPE_INT << (2 * j++); } #endif /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_STRUCT: cif->flags += (unsigned) (return_type (cif->rtype)) << 24; break; case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags += (unsigned) cif->rtype->type << 24; break; default: cif->flags += FFI_TYPE_INT << 24; break; } return FFI_OK; } extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; UINT64 trvalue; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if (cif->rtype->type == FFI_TYPE_STRUCT && return_type (cif->rtype) != FFI_TYPE_STRUCT) ecif.rvalue = &trvalue; else if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } if (rvalue && cif->rtype->type == FFI_TYPE_STRUCT && return_type (cif->rtype) != FFI_TYPE_STRUCT) memcpy (rvalue, &trvalue, cif->rtype->size); } extern void ffi_closure_SYSV (void); #if defined(__SH4__) extern void __ic_invalidate (void *line); #endif ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp; unsigned int insn; if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; /* Set T bit if the function returns a struct pointed with R2. */ insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT ? 0x0018 /* sett */ : 0x0008 /* clrt */); #ifdef __LITTLE_ENDIAN__ tramp[0] = 0xd301d102; tramp[1] = 0x0000412b | (insn << 16); #else tramp[0] = 0xd102d301; tramp[1] = 0x412b0000 | insn; #endif *(void **) &tramp[2] = (void *)codeloc; /* ctx */ *(void **) &tramp[3] = (void *)ffi_closure_SYSV; /* funaddr */ closure->cif = cif; closure->fun = fun; closure->user_data = user_data; #if defined(__SH4__) /* Flush the icache. */ __ic_invalidate(codeloc); #endif return FFI_OK; } /* Basically the trampoline invokes ffi_closure_SYSV, and on * entry, r3 holds the address of the closure. * After storing the registers that could possibly contain * parameters to be passed into the stack frame and setting * up space for a return value, ffi_closure_SYSV invokes the * following helper function to do most of the work. */ #ifdef __LITTLE_ENDIAN__ #define OFS_INT8 0 #define OFS_INT16 0 #else #define OFS_INT8 3 #define OFS_INT16 2 #endif int ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, unsigned long *pgr, unsigned long *pfr, unsigned long *pst) { void **avalue; ffi_type **p_arg; int i, avn; int ireg, greg = 0; #if defined(__SH4__) int freg = 0; #endif ffi_cif *cif; cif = closure->cif; avalue = alloca(cif->nargs * sizeof(void *)); /* Copy the caller's structure return value address so that the closure returns the data directly to the caller. */ if (cif->rtype->type == FFI_TYPE_STRUCT && STRUCT_VALUE_ADDRESS_WITH_ARG) { rvalue = (void *) *pgr++; ireg = 1; } else ireg = 0; cif = closure->cif; greg = ireg; avn = cif->nargs; /* Grab the addresses of the arguments from the stack frame. */ for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) { size_t z; z = (*p_arg)->size; if (z < sizeof(int)) { if (greg++ >= NGREGARG) continue; z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = (((char *)pgr) + OFS_INT8); break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = (((char *)pgr) + OFS_INT16); break; case FFI_TYPE_STRUCT: avalue[i] = pgr; break; default: FFI_ASSERT(0); } pgr++; } else if (z == sizeof(int)) { #if defined(__SH4__) if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (freg++ >= NFREGARG) continue; avalue[i] = pfr; pfr++; } else #endif { if (greg++ >= NGREGARG) continue; avalue[i] = pgr; pgr++; } } #if defined(__SH4__) else if ((*p_arg)->type == FFI_TYPE_DOUBLE) { if (freg + 1 >= NFREGARG) continue; if (freg & 1) pfr++; freg = (freg + 1) & ~1; freg += 2; avalue[i] = pfr; pfr += 2; } #endif else { int n = (z + sizeof (int) - 1) / sizeof (int); #if defined(__SH4__) if (greg + n - 1 >= NGREGARG) continue; #else if (greg >= NGREGARG) continue; #endif greg += n; avalue[i] = pgr; pgr += n; } } greg = ireg; #if defined(__SH4__) freg = 0; #endif for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) { size_t z; z = (*p_arg)->size; if (z < sizeof(int)) { if (greg++ < NGREGARG) continue; z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = (((char *)pst) + OFS_INT8); break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = (((char *)pst) + OFS_INT16); break; case FFI_TYPE_STRUCT: avalue[i] = pst; break; default: FFI_ASSERT(0); } pst++; } else if (z == sizeof(int)) { #if defined(__SH4__) if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (freg++ < NFREGARG) continue; } else #endif { if (greg++ < NGREGARG) continue; } avalue[i] = pst; pst++; } #if defined(__SH4__) else if ((*p_arg)->type == FFI_TYPE_DOUBLE) { if (freg + 1 < NFREGARG) { freg = (freg + 1) & ~1; freg += 2; continue; } avalue[i] = pst; pst += 2; } #endif else { int n = (z + sizeof (int) - 1) / sizeof (int); if (greg + n - 1 < NGREGARG) { greg += n; continue; } #if (! defined(__SH4__)) else if (greg < NGREGARG) { greg += n; pst += greg - NGREGARG; continue; } #endif avalue[i] = pst; pst += n; } } (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_SYSV how to perform return type promotions. */ return return_type (cif->rtype); } polyml-5.7.1/libffi/src/sh/sysv.S0000644000175000017500000003453713204034553015577 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima SuperH Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else /* XXX these lose for some platforms, I'm sure. */ #define CNAME(x) x #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): #endif #if defined(__HITACHI__) #define STRUCT_VALUE_ADDRESS_WITH_ARG 1 #else #define STRUCT_VALUE_ADDRESS_WITH_ARG 0 #endif .text # r4: ffi_prep_args # r5: &ecif # r6: bytes # r7: flags # sp+0: rvalue # sp+4: fn # This assumes we are using gas. ENTRY(ffi_call_SYSV) # Save registers .LFB1: mov.l r8,@-r15 .LCFI0: mov.l r9,@-r15 .LCFI1: mov.l r10,@-r15 .LCFI2: mov.l r12,@-r15 .LCFI3: mov.l r14,@-r15 .LCFI4: sts.l pr,@-r15 .LCFI5: mov r15,r14 .LCFI6: #if defined(__SH4__) mov r6,r8 mov r7,r9 sub r6,r15 add #-16,r15 mov #~7,r0 and r0,r15 mov r4,r0 jsr @r0 mov r15,r4 mov r9,r1 shlr8 r9 shlr8 r9 shlr8 r9 mov #FFI_TYPE_STRUCT,r2 cmp/eq r2,r9 bf 1f #if STRUCT_VALUE_ADDRESS_WITH_ARG mov.l @r15+,r4 bra 2f mov #5,r2 #else mov.l @r15+,r10 #endif 1: mov #4,r2 2: mov #4,r3 L_pass: cmp/pl r8 bf L_call_it mov r1,r0 and #3,r0 L_pass_d: cmp/eq #FFI_TYPE_DOUBLE,r0 bf L_pass_f mov r3,r0 and #1,r0 tst r0,r0 bt 1f add #1,r3 1: mov #12,r0 cmp/hs r0,r3 bt/s 3f shlr2 r1 bsr L_pop_d nop 3: add #2,r3 bra L_pass add #-8,r8 L_pop_d: mov r3,r0 add r0,r0 add r3,r0 add #-12,r0 braf r0 nop #ifdef __LITTLE_ENDIAN__ fmov.s @r15+,fr5 rts fmov.s @r15+,fr4 fmov.s @r15+,fr7 rts fmov.s @r15+,fr6 fmov.s @r15+,fr9 rts fmov.s @r15+,fr8 fmov.s @r15+,fr11 rts fmov.s @r15+,fr10 #else fmov.s @r15+,fr4 rts fmov.s @r15+,fr5 fmov.s @r15+,fr6 rts fmov.s @r15+,fr7 fmov.s @r15+,fr8 rts fmov.s @r15+,fr9 fmov.s @r15+,fr10 rts fmov.s @r15+,fr11 #endif L_pass_f: cmp/eq #FFI_TYPE_FLOAT,r0 bf L_pass_i mov #12,r0 cmp/hs r0,r3 bt/s 2f shlr2 r1 bsr L_pop_f nop 2: add #1,r3 bra L_pass add #-4,r8 L_pop_f: mov r3,r0 shll2 r0 add #-16,r0 braf r0 nop #ifdef __LITTLE_ENDIAN__ rts fmov.s @r15+,fr5 rts fmov.s @r15+,fr4 rts fmov.s @r15+,fr7 rts fmov.s @r15+,fr6 rts fmov.s @r15+,fr9 rts fmov.s @r15+,fr8 rts fmov.s @r15+,fr11 rts fmov.s @r15+,fr10 #else rts fmov.s @r15+,fr4 rts fmov.s @r15+,fr5 rts fmov.s @r15+,fr6 rts fmov.s @r15+,fr7 rts fmov.s @r15+,fr8 rts fmov.s @r15+,fr9 rts fmov.s @r15+,fr10 rts fmov.s @r15+,fr11 #endif L_pass_i: cmp/eq #FFI_TYPE_INT,r0 bf L_call_it mov #8,r0 cmp/hs r0,r2 bt/s 2f shlr2 r1 bsr L_pop_i nop 2: add #1,r2 bra L_pass add #-4,r8 L_pop_i: mov r2,r0 shll2 r0 add #-16,r0 braf r0 nop rts mov.l @r15+,r4 rts mov.l @r15+,r5 rts mov.l @r15+,r6 rts mov.l @r15+,r7 L_call_it: # call function #if (! STRUCT_VALUE_ADDRESS_WITH_ARG) mov r10, r2 #endif mov.l @(28,r14),r1 jsr @r1 nop L_ret_d: mov #FFI_TYPE_DOUBLE,r2 cmp/eq r2,r9 bf L_ret_ll mov.l @(24,r14),r1 #ifdef __LITTLE_ENDIAN__ fmov.s fr1,@r1 add #4,r1 bra L_epilogue fmov.s fr0,@r1 #else fmov.s fr0,@r1 add #4,r1 bra L_epilogue fmov.s fr1,@r1 #endif L_ret_ll: mov #FFI_TYPE_SINT64,r2 cmp/eq r2,r9 bt/s 1f mov #FFI_TYPE_UINT64,r2 cmp/eq r2,r9 bf L_ret_f 1: mov.l @(24,r14),r2 mov.l r0,@r2 bra L_epilogue mov.l r1,@(4,r2) L_ret_f: mov #FFI_TYPE_FLOAT,r2 cmp/eq r2,r9 bf L_ret_i mov.l @(24,r14),r1 bra L_epilogue fmov.s fr0,@r1 L_ret_i: mov #FFI_TYPE_INT,r2 cmp/eq r2,r9 bf L_epilogue mov.l @(24,r14),r1 bra L_epilogue mov.l r0,@r1 L_epilogue: # Remove the space we pushed for the args mov r14,r15 lds.l @r15+,pr mov.l @r15+,r14 mov.l @r15+,r12 mov.l @r15+,r10 mov.l @r15+,r9 rts mov.l @r15+,r8 #else mov r6,r8 mov r7,r9 sub r6,r15 add #-16,r15 mov #~7,r0 and r0,r15 mov r4,r0 jsr @r0 mov r15,r4 mov r9,r3 shlr8 r9 shlr8 r9 shlr8 r9 mov #FFI_TYPE_STRUCT,r2 cmp/eq r2,r9 bf 1f #if STRUCT_VALUE_ADDRESS_WITH_ARG mov.l @r15+,r4 bra 2f mov #5,r2 #else mov.l @r15+,r10 #endif 1: mov #4,r2 2: L_pass: cmp/pl r8 bf L_call_it mov r3,r0 and #3,r0 L_pass_d: cmp/eq #FFI_TYPE_DOUBLE,r0 bf L_pass_i mov r15,r0 and #7,r0 tst r0,r0 bt 1f add #4,r15 1: mov #8,r0 cmp/hs r0,r2 bt/s 2f shlr2 r3 bsr L_pop_d nop 2: add #2,r2 bra L_pass add #-8,r8 L_pop_d: mov r2,r0 add r0,r0 add r2,r0 add #-12,r0 add r0,r0 braf r0 nop mov.l @r15+,r4 rts mov.l @r15+,r5 mov.l @r15+,r5 rts mov.l @r15+,r6 mov.l @r15+,r6 rts mov.l @r15+,r7 rts mov.l @r15+,r7 L_pass_i: cmp/eq #FFI_TYPE_INT,r0 bf L_call_it mov #8,r0 cmp/hs r0,r2 bt/s 2f shlr2 r3 bsr L_pop_i nop 2: add #1,r2 bra L_pass add #-4,r8 L_pop_i: mov r2,r0 shll2 r0 add #-16,r0 braf r0 nop rts mov.l @r15+,r4 rts mov.l @r15+,r5 rts mov.l @r15+,r6 rts mov.l @r15+,r7 L_call_it: # call function #if (! STRUCT_VALUE_ADDRESS_WITH_ARG) mov r10, r2 #endif mov.l @(28,r14),r1 jsr @r1 nop L_ret_d: mov #FFI_TYPE_DOUBLE,r2 cmp/eq r2,r9 bf L_ret_ll mov.l @(24,r14),r2 mov.l r0,@r2 bra L_epilogue mov.l r1,@(4,r2) L_ret_ll: mov #FFI_TYPE_SINT64,r2 cmp/eq r2,r9 bt/s 1f mov #FFI_TYPE_UINT64,r2 cmp/eq r2,r9 bf L_ret_i 1: mov.l @(24,r14),r2 mov.l r0,@r2 bra L_epilogue mov.l r1,@(4,r2) L_ret_i: mov #FFI_TYPE_FLOAT,r2 cmp/eq r2,r9 bt 1f mov #FFI_TYPE_INT,r2 cmp/eq r2,r9 bf L_epilogue 1: mov.l @(24,r14),r1 bra L_epilogue mov.l r0,@r1 L_epilogue: # Remove the space we pushed for the args mov r14,r15 lds.l @r15+,pr mov.l @r15+,r14 mov.l @r15+,r12 mov.l @r15+,r10 mov.l @r15+,r9 rts mov.l @r15+,r8 #endif .LFE1: .ffi_call_SYSV_end: .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) .globl ffi_closure_helper_SYSV ENTRY(ffi_closure_SYSV) .LFB2: mov.l r7,@-r15 .LCFI7: mov.l r6,@-r15 .LCFI8: mov.l r5,@-r15 .LCFI9: mov.l r4,@-r15 .LCFIA: mov.l r14,@-r15 .LCFIB: sts.l pr,@-r15 /* Stack layout: xx bytes (on stack parameters) 16 bytes (register parameters) 4 bytes (saved frame pointer) 4 bytes (saved return address) 32 bytes (floating register parameters, SH-4 only) 8 bytes (result) 4 bytes (pad) 4 bytes (5th arg) <- new stack pointer */ .LCFIC: #if defined(__SH4__) add #-48,r15 #else add #-16,r15 #endif .LCFID: mov r15,r14 .LCFIE: #if defined(__SH4__) mov r14,r1 add #48,r1 #ifdef __LITTLE_ENDIAN__ fmov.s fr10,@-r1 fmov.s fr11,@-r1 fmov.s fr8,@-r1 fmov.s fr9,@-r1 fmov.s fr6,@-r1 fmov.s fr7,@-r1 fmov.s fr4,@-r1 fmov.s fr5,@-r1 #else fmov.s fr11,@-r1 fmov.s fr10,@-r1 fmov.s fr9,@-r1 fmov.s fr8,@-r1 fmov.s fr7,@-r1 fmov.s fr6,@-r1 fmov.s fr5,@-r1 fmov.s fr4,@-r1 #endif mov r1,r7 mov r14,r6 add #56,r6 #else mov r14,r6 add #24,r6 #endif bt/s 10f mov r2, r5 mov r14,r1 add #8,r1 mov r1,r5 10: mov r14,r1 #if defined(__SH4__) add #72,r1 #else add #40,r1 #endif mov.l r1,@r14 #ifdef PIC mov.l L_got,r1 mova L_got,r0 add r0,r1 mov.l L_helper,r0 add r1,r0 #else mov.l L_helper,r0 #endif jsr @r0 mov r3,r4 shll r0 mov r0,r1 mova L_table,r0 add r1,r0 mov.w @r0,r0 mov r14,r2 braf r0 add #8,r2 0: .align 2 #ifdef PIC L_got: .long _GLOBAL_OFFSET_TABLE_ L_helper: .long ffi_closure_helper_SYSV@GOTOFF #else L_helper: .long ffi_closure_helper_SYSV #endif L_table: .short L_case_v - 0b /* FFI_TYPE_VOID */ .short L_case_i - 0b /* FFI_TYPE_INT */ #if defined(__SH4__) .short L_case_f - 0b /* FFI_TYPE_FLOAT */ .short L_case_d - 0b /* FFI_TYPE_DOUBLE */ .short L_case_d - 0b /* FFI_TYPE_LONGDOUBLE */ #else .short L_case_i - 0b /* FFI_TYPE_FLOAT */ .short L_case_ll - 0b /* FFI_TYPE_DOUBLE */ .short L_case_ll - 0b /* FFI_TYPE_LONGDOUBLE */ #endif .short L_case_uq - 0b /* FFI_TYPE_UINT8 */ .short L_case_q - 0b /* FFI_TYPE_SINT8 */ .short L_case_uh - 0b /* FFI_TYPE_UINT16 */ .short L_case_h - 0b /* FFI_TYPE_SINT16 */ .short L_case_i - 0b /* FFI_TYPE_UINT32 */ .short L_case_i - 0b /* FFI_TYPE_SINT32 */ .short L_case_ll - 0b /* FFI_TYPE_UINT64 */ .short L_case_ll - 0b /* FFI_TYPE_SINT64 */ .short L_case_v - 0b /* FFI_TYPE_STRUCT */ .short L_case_i - 0b /* FFI_TYPE_POINTER */ #if defined(__SH4__) L_case_d: #ifdef __LITTLE_ENDIAN__ fmov.s @r2+,fr1 bra L_case_v fmov.s @r2,fr0 #else fmov.s @r2+,fr0 bra L_case_v fmov.s @r2,fr1 #endif L_case_f: bra L_case_v fmov.s @r2,fr0 #endif L_case_ll: mov.l @r2+,r0 bra L_case_v mov.l @r2,r1 L_case_i: bra L_case_v mov.l @r2,r0 L_case_q: #ifdef __LITTLE_ENDIAN__ #else add #3,r2 #endif bra L_case_v mov.b @r2,r0 L_case_uq: #ifdef __LITTLE_ENDIAN__ #else add #3,r2 #endif mov.b @r2,r0 bra L_case_v extu.b r0,r0 L_case_h: #ifdef __LITTLE_ENDIAN__ #else add #2,r2 #endif bra L_case_v mov.w @r2,r0 L_case_uh: #ifdef __LITTLE_ENDIAN__ #else add #2,r2 #endif mov.w @r2,r0 extu.w r0,r0 /* fall through */ L_case_v: #if defined(__SH4__) add #48,r15 #else add #16,r15 #endif lds.l @r15+,pr mov.l @r15+,r14 rts add #16,r15 .LFE2: .ffi_closure_SYSV_end: .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif .section ".eh_frame","aw",@progbits __FRAME_BEGIN__: .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ .LSCIE1: .4byte 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #ifdef PIC .ascii "zR\0" /* CIE Augmentation */ #else .byte 0x0 /* CIE Augmentation */ #endif .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ .byte 0x7c /* sleb128 -4; CIE Data Alignment Factor */ .byte 0x11 /* CIE RA Column */ #ifdef PIC .uleb128 0x1 /* Augmentation size */ .byte 0x10 /* FDE Encoding (pcrel) */ #endif .byte 0xc /* DW_CFA_def_cfa */ .byte 0xf /* uleb128 0xf */ .byte 0x0 /* uleb128 0x0 */ .align 2 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .4byte .LASFDE1-__FRAME_BEGIN__ /* FDE CIE offset */ #ifdef PIC .4byte .LFB1-. /* FDE initial location */ #else .4byte .LFB1 /* FDE initial location */ #endif .4byte .LFE1-.LFB1 /* FDE address range */ #ifdef PIC .uleb128 0x0 /* Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI0-.LFB1 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x4 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI1-.LCFI0 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI2-.LCFI1 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0xc /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI3-.LCFI2 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x10 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI4-.LCFI3 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x14 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI5-.LCFI4 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x18 /* uleb128 0x4 */ .byte 0x91 /* DW_CFA_offset, column 0x11 */ .byte 0x6 /* uleb128 0x6 */ .byte 0x8e /* DW_CFA_offset, column 0xe */ .byte 0x5 /* uleb128 0x5 */ .byte 0x8c /* DW_CFA_offset, column 0xc */ .byte 0x4 /* uleb128 0x4 */ .byte 0x8a /* DW_CFA_offset, column 0xa */ .byte 0x3 /* uleb128 0x3 */ .byte 0x89 /* DW_CFA_offset, column 0x9 */ .byte 0x2 /* uleb128 0x2 */ .byte 0x88 /* DW_CFA_offset, column 0x8 */ .byte 0x1 /* uleb128 0x1 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI6-.LCFI5 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0xe /* uleb128 0xe */ .align 2 .LEFDE1: .LSFDE3: .4byte .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .4byte .LASFDE3-__FRAME_BEGIN__ /* FDE CIE offset */ #ifdef PIC .4byte .LFB2-. /* FDE initial location */ #else .4byte .LFB2 /* FDE initial location */ #endif .4byte .LFE2-.LFB2 /* FDE address range */ #ifdef PIC .uleb128 0x0 /* Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI7-.LFB2 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x4 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI8-.LCFI7 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI9-.LCFI8 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0xc /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFIA-.LCFI9 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x10 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFIB-.LCFIA .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x14 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFIC-.LCFIB .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x18 /* uleb128 0x4 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFID-.LCFIC .byte 0xe /* DW_CFA_def_cfa_offset */ #if defined(__SH4__) .byte 24+48 /* uleb128 24+48 */ #else .byte 24+16 /* uleb128 24+16 */ #endif .byte 0x91 /* DW_CFA_offset, column 0x11 */ .byte 0x6 /* uleb128 0x6 */ .byte 0x8e /* DW_CFA_offset, column 0xe */ .byte 0x5 /* uleb128 0x5 */ .byte 0x84 /* DW_CFA_offset, column 0x4 */ .byte 0x4 /* uleb128 0x4 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x3 /* uleb128 0x3 */ .byte 0x86 /* DW_CFA_offset, column 0x6 */ .byte 0x2 /* uleb128 0x2 */ .byte 0x87 /* DW_CFA_offset, column 0x7 */ .byte 0x1 /* uleb128 0x1 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFIE-.LCFID .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0xe /* uleb128 0xe */ .align 2 .LEFDE3: polyml-5.7.1/libffi/src/alpha/0000755000175000017500000000000013204034553015106 5ustar daviddavidpolyml-5.7.1/libffi/src/alpha/ffitarget.h0000644000175000017500000000362113204034553017234 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for Alpha. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_OSF, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_OSF } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 24 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/alpha/ffi.c0000644000175000017500000001646413204034553016031 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2012 Anthony Green Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. Alpha Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; all further uses in this file will refer to the 128-bit type. */ #if defined(__LONG_DOUBLE_128__) # if FFI_TYPE_LONGDOUBLE != 4 # error FFI_TYPE_LONGDOUBLE out of date # endif #else # undef FFI_TYPE_LONGDOUBLE # define FFI_TYPE_LONGDOUBLE 4 #endif extern void ffi_call_osf(void *, unsigned long, unsigned, void *, void (*)(void)) FFI_HIDDEN; extern void ffi_closure_osf(void) FFI_HIDDEN; ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* Adjust cif->bytes to represent a minimum 6 words for the temporary register argument loading area. */ if (cif->bytes < 6*FFI_SIZEOF_ARG) cif->bytes = 6*FFI_SIZEOF_ARG; /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_STRUCT: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags = cif->rtype->type; break; case FFI_TYPE_LONGDOUBLE: /* 128-bit long double is returned in memory, like a struct. */ cif->flags = FFI_TYPE_STRUCT; break; default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { unsigned long *stack, *argp; long i, avn; ffi_type **arg_types; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if (rvalue == NULL && cif->flags == FFI_TYPE_STRUCT) rvalue = alloca(cif->rtype->size); /* Allocate the space for the arguments, plus 4 words of temp space for ffi_call_osf. */ argp = stack = alloca(cif->bytes + 4*FFI_SIZEOF_ARG); if (cif->flags == FFI_TYPE_STRUCT) *(void **) argp++ = rvalue; i = 0; avn = cif->nargs; arg_types = cif->arg_types; while (i < avn) { size_t size = (*arg_types)->size; switch ((*arg_types)->type) { case FFI_TYPE_SINT8: *(SINT64 *) argp = *(SINT8 *)(* avalue); break; case FFI_TYPE_UINT8: *(SINT64 *) argp = *(UINT8 *)(* avalue); break; case FFI_TYPE_SINT16: *(SINT64 *) argp = *(SINT16 *)(* avalue); break; case FFI_TYPE_UINT16: *(SINT64 *) argp = *(UINT16 *)(* avalue); break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: /* Note that unsigned 32-bit quantities are sign extended. */ *(SINT64 *) argp = *(SINT32 *)(* avalue); break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_POINTER: *(UINT64 *) argp = *(UINT64 *)(* avalue); break; case FFI_TYPE_FLOAT: if (argp - stack < 6) { /* Note the conversion -- all the fp regs are loaded as doubles. The in-register format is the same. */ *(double *) argp = *(float *)(* avalue); } else *(float *) argp = *(float *)(* avalue); break; case FFI_TYPE_DOUBLE: *(double *) argp = *(double *)(* avalue); break; case FFI_TYPE_LONGDOUBLE: /* 128-bit long double is passed by reference. */ *(long double **) argp = (long double *)(* avalue); size = sizeof (long double *); break; case FFI_TYPE_STRUCT: memcpy(argp, *avalue, (*arg_types)->size); break; default: FFI_ASSERT(0); } argp += ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; i++, arg_types++, avalue++; } ffi_call_osf(stack, cif->bytes, cif->flags, rvalue, fn); } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp; if (cif->abi != FFI_OSF) return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; tramp[0] = 0x47fb0401; /* mov $27,$1 */ tramp[1] = 0xa77b0010; /* ldq $27,16($27) */ tramp[2] = 0x6bfb0000; /* jmp $31,($27),0 */ tramp[3] = 0x47ff041f; /* nop */ *(void **) &tramp[4] = ffi_closure_osf; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Flush the Icache. Tru64 UNIX as doesn't understand the imb mnemonic, so use call_pal instead, since both Compaq as and gas can handle it. 0x86 is PAL_imb in Tru64 UNIX . */ asm volatile ("call_pal 0x86" : : : "memory"); return FFI_OK; } long FFI_HIDDEN ffi_closure_osf_inner(ffi_closure *closure, void *rvalue, unsigned long *argp) { ffi_cif *cif; void **avalue; ffi_type **arg_types; long i, avn, argn; cif = closure->cif; avalue = alloca(cif->nargs * sizeof(void *)); argn = 0; /* Copy the caller's structure return address to that the closure returns the data directly to the caller. */ if (cif->flags == FFI_TYPE_STRUCT) { rvalue = (void *) argp[0]; argn = 1; } i = 0; avn = cif->nargs; arg_types = cif->arg_types; /* Grab the addresses of the arguments from the stack frame. */ while (i < avn) { size_t size = arg_types[i]->size; switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_POINTER: case FFI_TYPE_STRUCT: avalue[i] = &argp[argn]; break; case FFI_TYPE_FLOAT: if (argn < 6) { /* Floats coming from registers need conversion from double back to float format. */ *(float *)&argp[argn - 6] = *(double *)&argp[argn - 6]; avalue[i] = &argp[argn - 6]; } else avalue[i] = &argp[argn]; break; case FFI_TYPE_DOUBLE: avalue[i] = &argp[argn - (argn < 6 ? 6 : 0)]; break; case FFI_TYPE_LONGDOUBLE: /* 128-bit long double is passed by reference. */ avalue[i] = (long double *) argp[argn]; size = sizeof (long double *); break; default: abort (); } argn += ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; i++; } /* Invoke the closure. */ closure->fun (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_osf how to perform return type promotions. */ return cif->rtype->type; } polyml-5.7.1/libffi/src/alpha/osf.S0000644000175000017500000002021013204034553016014 0ustar daviddavid/* ----------------------------------------------------------------------- osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat Alpha/OSF Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .arch ev6 .text /* ffi_call_osf (void *args, unsigned long bytes, unsigned flags, void *raddr, void (*fnaddr)(void)); Bit o trickiness here -- ARGS+BYTES is the base of the stack frame for this function. This has been allocated by ffi_call. We also deallocate some of the stack that has been alloca'd. */ .align 3 .globl ffi_call_osf .ent ffi_call_osf FFI_HIDDEN(ffi_call_osf) ffi_call_osf: .frame $15, 32, $26, 0 .mask 0x4008000, -32 $LFB1: addq $16,$17,$1 mov $16, $30 stq $26, 0($1) stq $15, 8($1) stq $18, 16($1) mov $1, $15 $LCFI1: .prologue 0 stq $19, 24($1) mov $20, $27 # Load up all of the (potential) argument registers. ldq $16, 0($30) ldt $f16, 0($30) ldt $f17, 8($30) ldq $17, 8($30) ldt $f18, 16($30) ldq $18, 16($30) ldt $f19, 24($30) ldq $19, 24($30) ldt $f20, 32($30) ldq $20, 32($30) ldt $f21, 40($30) ldq $21, 40($30) # Deallocate the register argument area. lda $30, 48($30) jsr $26, ($27), 0 ldgp $29, 0($26) # If the return value pointer is NULL, assume no return value. ldq $19, 24($15) ldq $18, 16($15) ldq $26, 0($15) $LCFI2: beq $19, $noretval # Store the return value out in the proper type. cmpeq $18, FFI_TYPE_INT, $1 bne $1, $retint cmpeq $18, FFI_TYPE_FLOAT, $2 bne $2, $retfloat cmpeq $18, FFI_TYPE_DOUBLE, $3 bne $3, $retdouble .align 3 $noretval: ldq $15, 8($15) ret .align 4 $retint: stq $0, 0($19) nop ldq $15, 8($15) ret .align 4 $retfloat: sts $f0, 0($19) nop ldq $15, 8($15) ret .align 4 $retdouble: stt $f0, 0($19) nop ldq $15, 8($15) ret $LFE1: .end ffi_call_osf /* ffi_closure_osf(...) Receives the closure argument in $1. */ .align 3 .globl ffi_closure_osf .ent ffi_closure_osf FFI_HIDDEN(ffi_closure_osf) ffi_closure_osf: .frame $30, 16*8, $26, 0 .mask 0x4000000, -16*8 $LFB2: ldgp $29, 0($27) subq $30, 16*8, $30 $LCFI5: stq $26, 0($30) $LCFI6: .prologue 1 # Store all of the potential argument registers in va_list format. stt $f16, 4*8($30) stt $f17, 5*8($30) stt $f18, 6*8($30) stt $f19, 7*8($30) stt $f20, 8*8($30) stt $f21, 9*8($30) stq $16, 10*8($30) stq $17, 11*8($30) stq $18, 12*8($30) stq $19, 13*8($30) stq $20, 14*8($30) stq $21, 15*8($30) # Call ffi_closure_osf_inner to do the bulk of the work. mov $1, $16 lda $17, 2*8($30) lda $18, 10*8($30) jsr $26, ffi_closure_osf_inner ldgp $29, 0($26) ldq $26, 0($30) # Load up the return value in the proper type. lda $1, $load_table s4addq $0, $1, $1 ldl $1, 0($1) addq $1, $29, $1 jmp $31, ($1), $load_32 .align 4 $load_none: addq $30, 16*8, $30 ret .align 4 $load_float: lds $f0, 16($30) nop addq $30, 16*8, $30 ret .align 4 $load_double: ldt $f0, 16($30) nop addq $30, 16*8, $30 ret .align 4 $load_u8: #ifdef __alpha_bwx__ ldbu $0, 16($30) nop #else ldq $0, 16($30) and $0, 255, $0 #endif addq $30, 16*8, $30 ret .align 4 $load_s8: #ifdef __alpha_bwx__ ldbu $0, 16($30) sextb $0, $0 #else ldq $0, 16($30) sll $0, 56, $0 sra $0, 56, $0 #endif addq $30, 16*8, $30 ret .align 4 $load_u16: #ifdef __alpha_bwx__ ldwu $0, 16($30) nop #else ldq $0, 16($30) zapnot $0, 3, $0 #endif addq $30, 16*8, $30 ret .align 4 $load_s16: #ifdef __alpha_bwx__ ldwu $0, 16($30) sextw $0, $0 #else ldq $0, 16($30) sll $0, 48, $0 sra $0, 48, $0 #endif addq $30, 16*8, $30 ret .align 4 $load_32: ldl $0, 16($30) nop addq $30, 16*8, $30 ret .align 4 $load_64: ldq $0, 16($30) nop addq $30, 16*8, $30 ret $LFE2: .end ffi_closure_osf #ifdef __ELF__ .section .rodata #else .rdata #endif $load_table: .gprel32 $load_none # FFI_TYPE_VOID .gprel32 $load_32 # FFI_TYPE_INT .gprel32 $load_float # FFI_TYPE_FLOAT .gprel32 $load_double # FFI_TYPE_DOUBLE .gprel32 $load_none # FFI_TYPE_LONGDOUBLE .gprel32 $load_u8 # FFI_TYPE_UINT8 .gprel32 $load_s8 # FFI_TYPE_SINT8 .gprel32 $load_u16 # FFI_TYPE_UINT16 .gprel32 $load_s16 # FFI_TYPE_SINT16 .gprel32 $load_32 # FFI_TYPE_UINT32 .gprel32 $load_32 # FFI_TYPE_SINT32 .gprel32 $load_64 # FFI_TYPE_UINT64 .gprel32 $load_64 # FFI_TYPE_SINT64 .gprel32 $load_none # FFI_TYPE_STRUCT .gprel32 $load_64 # FFI_TYPE_POINTER /* Assert that the table above is in sync with ffi.h. */ #if FFI_TYPE_FLOAT != 2 \ || FFI_TYPE_DOUBLE != 3 \ || FFI_TYPE_UINT8 != 5 \ || FFI_TYPE_SINT8 != 6 \ || FFI_TYPE_UINT16 != 7 \ || FFI_TYPE_SINT16 != 8 \ || FFI_TYPE_UINT32 != 9 \ || FFI_TYPE_SINT32 != 10 \ || FFI_TYPE_UINT64 != 11 \ || FFI_TYPE_SINT64 != 12 \ || FFI_TYPE_STRUCT != 13 \ || FFI_TYPE_POINTER != 14 \ || FFI_TYPE_LAST != 14 #error "osf.S out of sync with ffi.h" #endif #ifdef __ELF__ # define UA_SI .4byte # define FDE_ENCODING 0x1b /* pcrel sdata4 */ # define FDE_ENCODE(X) .4byte X-. # define FDE_ARANGE(X) .4byte X #elif defined __osf__ # define UA_SI .align 0; .long # define FDE_ENCODING 0x50 /* aligned absolute */ # define FDE_ENCODE(X) .align 3; .quad X # define FDE_ARANGE(X) .align 0; .quad X #endif #ifdef __ELF__ .section .eh_frame,EH_FRAME_FLAGS,@progbits #elif defined __osf__ .data .align 3 .globl _GLOBAL__F_ffi_call_osf _GLOBAL__F_ffi_call_osf: #endif __FRAME_BEGIN__: UA_SI $LECIE1-$LSCIE1 # Length of Common Information Entry $LSCIE1: UA_SI 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor .byte 0x78 # sleb128 -8; CIE Data Alignment Factor .byte 26 # CIE RA Column .byte 0x1 # uleb128 0x1; Augmentation size .byte FDE_ENCODING # FDE Encoding .byte 0xc # DW_CFA_def_cfa .byte 30 # uleb128 column 30 .byte 0 # uleb128 offset 0 .align 3 $LECIE1: $LSFDE1: UA_SI $LEFDE1-$LASFDE1 # FDE Length $LASFDE1: UA_SI $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset FDE_ENCODE($LFB1) # FDE initial location FDE_ARANGE($LFE1-$LFB1) # FDE address range .byte 0x0 # uleb128 0x0; Augmentation size .byte 0x4 # DW_CFA_advance_loc4 UA_SI $LCFI1-$LFB1 .byte 0x9a # DW_CFA_offset, column 26 .byte 4 # uleb128 4*-8 .byte 0x8f # DW_CFA_offset, column 15 .byte 0x3 # uleb128 3*-8 .byte 0xc # DW_CFA_def_cfa .byte 15 # uleb128 column 15 .byte 32 # uleb128 offset 32 .byte 0x4 # DW_CFA_advance_loc4 UA_SI $LCFI2-$LCFI1 .byte 0xda # DW_CFA_restore, column 26 .align 3 $LEFDE1: $LSFDE3: UA_SI $LEFDE3-$LASFDE3 # FDE Length $LASFDE3: UA_SI $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset FDE_ENCODE($LFB2) # FDE initial location FDE_ARANGE($LFE2-$LFB2) # FDE address range .byte 0x0 # uleb128 0x0; Augmentation size .byte 0x4 # DW_CFA_advance_loc4 UA_SI $LCFI5-$LFB2 .byte 0xe # DW_CFA_def_cfa_offset .byte 0x80,0x1 # uleb128 128 .byte 0x4 # DW_CFA_advance_loc4 UA_SI $LCFI6-$LCFI5 .byte 0x9a # DW_CFA_offset, column 26 .byte 16 # uleb128 offset 16*-8 .align 3 $LEFDE3: #if defined __osf__ .align 0 .long 0 # End of Table #endif #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/aarch64/0000755000175000017500000000000013204034553015251 5ustar daviddavidpolyml-5.7.1/libffi/src/aarch64/ffitarget.h0000644000175000017500000000375313204034553017405 0ustar daviddavid/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 36 #define FFI_NATIVE_RAW_API 0 /* ---- Internal ---- */ #if defined (__APPLE__) #define FFI_TARGET_SPECIFIC_VARIADIC #define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags; unsigned aarch64_nfixedargs #else #define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags #endif #define AARCH64_FFI_WITH_V_BIT 0 #define AARCH64_N_XREG 32 #define AARCH64_N_VREG 32 #define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16) #endif polyml-5.7.1/libffi/src/aarch64/ffi.c0000644000175000017500000007372513204034553016177 0ustar daviddavid/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #include /* Stack alignment requirement in bytes */ #if defined (__APPLE__) #define AARCH64_STACK_ALIGN 1 #else #define AARCH64_STACK_ALIGN 16 #endif #define N_X_ARG_REG 8 #define N_V_ARG_REG 8 #define AARCH64_FFI_WITH_V (1 << AARCH64_FFI_WITH_V_BIT) union _d { UINT64 d; UINT32 s[2]; }; struct call_context { UINT64 x [AARCH64_N_XREG]; struct { union _d d[2]; } v [AARCH64_N_VREG]; }; #if defined (__clang__) && defined (__APPLE__) extern void sys_icache_invalidate (void *start, size_t len); #endif static inline void ffi_clear_cache (void *start, void *end) { #if defined (__clang__) && defined (__APPLE__) sys_icache_invalidate (start, (char *)end - (char *)start); #elif defined (__GNUC__) __builtin___clear_cache (start, end); #else #error "Missing builtin to flush instruction cache" #endif } static void * get_x_addr (struct call_context *context, unsigned n) { return &context->x[n]; } static void * get_s_addr (struct call_context *context, unsigned n) { #if defined __AARCH64EB__ return &context->v[n].d[1].s[1]; #else return &context->v[n].d[0].s[0]; #endif } static void * get_d_addr (struct call_context *context, unsigned n) { #if defined __AARCH64EB__ return &context->v[n].d[1]; #else return &context->v[n].d[0]; #endif } static void * get_v_addr (struct call_context *context, unsigned n) { return &context->v[n]; } /* Return the memory location at which a basic type would reside were it to have been stored in register n. */ static void * get_basic_type_addr (unsigned short type, struct call_context *context, unsigned n) { switch (type) { case FFI_TYPE_FLOAT: return get_s_addr (context, n); case FFI_TYPE_DOUBLE: return get_d_addr (context, n); #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: return get_v_addr (context, n); #endif case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_INT: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: return get_x_addr (context, n); case FFI_TYPE_VOID: return NULL; default: FFI_ASSERT (0); return NULL; } } /* Return the alignment width for each of the basic types. */ static size_t get_basic_type_alignment (unsigned short type) { switch (type) { case FFI_TYPE_FLOAT: #if defined (__APPLE__) return sizeof (UINT32); #endif case FFI_TYPE_DOUBLE: return sizeof (UINT64); #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: return sizeof (long double); #endif case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: #if defined (__APPLE__) return sizeof (UINT8); #endif case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: #if defined (__APPLE__) return sizeof (UINT16); #endif case FFI_TYPE_UINT32: case FFI_TYPE_INT: case FFI_TYPE_SINT32: #if defined (__APPLE__) return sizeof (UINT32); #endif case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: return sizeof (UINT64); default: FFI_ASSERT (0); return 0; } } /* Return the size in bytes for each of the basic types. */ static size_t get_basic_type_size (unsigned short type) { switch (type) { case FFI_TYPE_FLOAT: return sizeof (UINT32); case FFI_TYPE_DOUBLE: return sizeof (UINT64); #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: return sizeof (long double); #endif case FFI_TYPE_UINT8: return sizeof (UINT8); case FFI_TYPE_SINT8: return sizeof (SINT8); case FFI_TYPE_UINT16: return sizeof (UINT16); case FFI_TYPE_SINT16: return sizeof (SINT16); case FFI_TYPE_UINT32: return sizeof (UINT32); case FFI_TYPE_INT: case FFI_TYPE_SINT32: return sizeof (SINT32); case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: return sizeof (UINT64); case FFI_TYPE_SINT64: return sizeof (SINT64); default: FFI_ASSERT (0); return 0; } } extern void ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *, extended_cif *), struct call_context *context, extended_cif *, size_t, void (*fn)(void)); extern void ffi_closure_SYSV (ffi_closure *); /* Test for an FFI floating point representation. */ static unsigned is_floating_type (unsigned short type) { return (type == FFI_TYPE_FLOAT || type == FFI_TYPE_DOUBLE || type == FFI_TYPE_LONGDOUBLE); } /* Test for a homogeneous structure. */ static unsigned short get_homogeneous_type (ffi_type *ty) { if (ty->type == FFI_TYPE_STRUCT && ty->elements) { unsigned i; unsigned short candidate_type = get_homogeneous_type (ty->elements[0]); for (i =1; ty->elements[i]; i++) { unsigned short iteration_type = 0; /* If we have a nested struct, we must find its homogeneous type. If that fits with our candidate type, we are still homogeneous. */ if (ty->elements[i]->type == FFI_TYPE_STRUCT && ty->elements[i]->elements) { iteration_type = get_homogeneous_type (ty->elements[i]); } else { iteration_type = ty->elements[i]->type; } /* If we are not homogeneous, return FFI_TYPE_STRUCT. */ if (candidate_type != iteration_type) return FFI_TYPE_STRUCT; } return candidate_type; } /* Base case, we have no more levels of nesting, so we are a basic type, and so, trivially homogeneous in that type. */ return ty->type; } /* Determine the number of elements within a STRUCT. Note, we must handle nested structs. If ty is not a STRUCT this function will return 0. */ static unsigned element_count (ffi_type *ty) { if (ty->type == FFI_TYPE_STRUCT && ty->elements) { unsigned n; unsigned elems = 0; for (n = 0; ty->elements[n]; n++) { if (ty->elements[n]->type == FFI_TYPE_STRUCT && ty->elements[n]->elements) elems += element_count (ty->elements[n]); else elems++; } return elems; } return 0; } /* Test for a homogeneous floating point aggregate. A homogeneous floating point aggregate is a homogeneous aggregate of a half- single- or double- precision floating point type with one to four elements. Note that this includes nested structs of the basic type. */ static int is_hfa (ffi_type *ty) { if (ty->type == FFI_TYPE_STRUCT && ty->elements[0] && is_floating_type (get_homogeneous_type (ty))) { unsigned n = element_count (ty); return n >= 1 && n <= 4; } return 0; } /* Test if an ffi_type is a candidate for passing in a register. This test does not check that sufficient registers of the appropriate class are actually available, merely that IFF sufficient registers are available then the argument will be passed in register(s). Note that an ffi_type that is deemed to be a register candidate will always be returned in registers. Returns 1 if a register candidate else 0. */ static int is_register_candidate (ffi_type *ty) { switch (ty->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: #endif case FFI_TYPE_UINT8: case FFI_TYPE_UINT16: case FFI_TYPE_UINT32: case FFI_TYPE_UINT64: case FFI_TYPE_POINTER: case FFI_TYPE_SINT8: case FFI_TYPE_SINT16: case FFI_TYPE_SINT32: case FFI_TYPE_INT: case FFI_TYPE_SINT64: return 1; case FFI_TYPE_STRUCT: if (is_hfa (ty)) { return 1; } else if (ty->size > 16) { /* Too large. Will be replaced with a pointer to memory. The pointer MAY be passed in a register, but the value will not. This test specifically fails since the argument will never be passed by value in registers. */ return 0; } else { /* Might be passed in registers depending on the number of registers required. */ return (ty->size + 7) / 8 < N_X_ARG_REG; } break; default: FFI_ASSERT (0); break; } return 0; } /* Test if an ffi_type argument or result is a candidate for a vector register. */ static int is_v_register_candidate (ffi_type *ty) { return is_floating_type (ty->type) || (ty->type == FFI_TYPE_STRUCT && is_hfa (ty)); } /* Representation of the procedure call argument marshalling state. The terse state variable names match the names used in the AARCH64 PCS. */ struct arg_state { unsigned ngrn; /* Next general-purpose register number. */ unsigned nsrn; /* Next vector register number. */ size_t nsaa; /* Next stack offset. */ #if defined (__APPLE__) unsigned allocating_variadic; #endif }; /* Initialize a procedure call argument marshalling state. */ static void arg_init (struct arg_state *state, size_t call_frame_size) { state->ngrn = 0; state->nsrn = 0; state->nsaa = 0; #if defined (__APPLE__) state->allocating_variadic = 0; #endif } /* Return the number of available consecutive core argument registers. */ static unsigned available_x (struct arg_state *state) { return N_X_ARG_REG - state->ngrn; } /* Return the number of available consecutive vector argument registers. */ static unsigned available_v (struct arg_state *state) { return N_V_ARG_REG - state->nsrn; } static void * allocate_to_x (struct call_context *context, struct arg_state *state) { FFI_ASSERT (state->ngrn < N_X_ARG_REG); return get_x_addr (context, (state->ngrn)++); } static void * allocate_to_s (struct call_context *context, struct arg_state *state) { FFI_ASSERT (state->nsrn < N_V_ARG_REG); return get_s_addr (context, (state->nsrn)++); } static void * allocate_to_d (struct call_context *context, struct arg_state *state) { FFI_ASSERT (state->nsrn < N_V_ARG_REG); return get_d_addr (context, (state->nsrn)++); } static void * allocate_to_v (struct call_context *context, struct arg_state *state) { FFI_ASSERT (state->nsrn < N_V_ARG_REG); return get_v_addr (context, (state->nsrn)++); } /* Allocate an aligned slot on the stack and return a pointer to it. */ static void * allocate_to_stack (struct arg_state *state, void *stack, size_t alignment, size_t size) { void *allocation; /* Round up the NSAA to the larger of 8 or the natural alignment of the argument's type. */ state->nsaa = ALIGN (state->nsaa, alignment); state->nsaa = ALIGN (state->nsaa, alignment); #if defined (__APPLE__) if (state->allocating_variadic) state->nsaa = ALIGN (state->nsaa, 8); #else state->nsaa = ALIGN (state->nsaa, 8); #endif allocation = stack + state->nsaa; state->nsaa += size; return allocation; } static void copy_basic_type (void *dest, void *source, unsigned short type) { /* This is necessary to ensure that basic types are copied sign extended to 64-bits as libffi expects. */ switch (type) { case FFI_TYPE_FLOAT: *(float *) dest = *(float *) source; break; case FFI_TYPE_DOUBLE: *(double *) dest = *(double *) source; break; #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: *(long double *) dest = *(long double *) source; break; #endif case FFI_TYPE_UINT8: *(ffi_arg *) dest = *(UINT8 *) source; break; case FFI_TYPE_SINT8: *(ffi_sarg *) dest = *(SINT8 *) source; break; case FFI_TYPE_UINT16: *(ffi_arg *) dest = *(UINT16 *) source; break; case FFI_TYPE_SINT16: *(ffi_sarg *) dest = *(SINT16 *) source; break; case FFI_TYPE_UINT32: *(ffi_arg *) dest = *(UINT32 *) source; break; case FFI_TYPE_INT: case FFI_TYPE_SINT32: *(ffi_sarg *) dest = *(SINT32 *) source; break; case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: *(ffi_arg *) dest = *(UINT64 *) source; break; case FFI_TYPE_SINT64: *(ffi_sarg *) dest = *(SINT64 *) source; break; case FFI_TYPE_VOID: break; default: FFI_ASSERT (0); } } static void copy_hfa_to_reg_or_stack (void *memory, ffi_type *ty, struct call_context *context, unsigned char *stack, struct arg_state *state) { unsigned elems = element_count (ty); if (available_v (state) < elems) { /* There are insufficient V registers. Further V register allocations are prevented, the NSAA is adjusted (by allocate_to_stack ()) and the argument is copied to memory at the adjusted NSAA. */ state->nsrn = N_V_ARG_REG; memcpy (allocate_to_stack (state, stack, ty->alignment, ty->size), memory, ty->size); } else { int i; unsigned short type = get_homogeneous_type (ty); for (i = 0; i < elems; i++) { void *reg = allocate_to_v (context, state); copy_basic_type (reg, memory, type); memory += get_basic_type_size (type); } } } /* Either allocate an appropriate register for the argument type, or if none are available, allocate a stack slot and return a pointer to the allocated space. */ static void * allocate_to_register_or_stack (struct call_context *context, unsigned char *stack, struct arg_state *state, unsigned short type) { size_t alignment = get_basic_type_alignment (type); size_t size = alignment; switch (type) { case FFI_TYPE_FLOAT: /* This is the only case for which the allocated stack size should not match the alignment of the type. */ size = sizeof (UINT32); /* Fall through. */ case FFI_TYPE_DOUBLE: if (state->nsrn < N_V_ARG_REG) return allocate_to_d (context, state); state->nsrn = N_V_ARG_REG; break; #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: if (state->nsrn < N_V_ARG_REG) return allocate_to_v (context, state); state->nsrn = N_V_ARG_REG; break; #endif case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_INT: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: if (state->ngrn < N_X_ARG_REG) return allocate_to_x (context, state); state->ngrn = N_X_ARG_REG; break; default: FFI_ASSERT (0); } return allocate_to_stack (state, stack, alignment, size); } /* Copy a value to an appropriate register, or if none are available, to the stack. */ static void copy_to_register_or_stack (struct call_context *context, unsigned char *stack, struct arg_state *state, void *value, unsigned short type) { copy_basic_type ( allocate_to_register_or_stack (context, stack, state, type), value, type); } /* Marshall the arguments from FFI representation to procedure call context and stack. */ static unsigned aarch64_prep_args (struct call_context *context, unsigned char *stack, extended_cif *ecif) { int i; struct arg_state state; arg_init (&state, ALIGN(ecif->cif->bytes, 16)); for (i = 0; i < ecif->cif->nargs; i++) { ffi_type *ty = ecif->cif->arg_types[i]; switch (ty->type) { case FFI_TYPE_VOID: FFI_ASSERT (0); break; /* If the argument is a basic type the argument is allocated to an appropriate register, or if none are available, to the stack. */ case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: #endif case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_INT: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: copy_to_register_or_stack (context, stack, &state, ecif->avalue[i], ty->type); break; case FFI_TYPE_STRUCT: if (is_hfa (ty)) { copy_hfa_to_reg_or_stack (ecif->avalue[i], ty, context, stack, &state); } else if (ty->size > 16) { /* If the argument is a composite type that is larger than 16 bytes, then the argument has been copied to memory, and the argument is replaced by a pointer to the copy. */ copy_to_register_or_stack (context, stack, &state, &(ecif->avalue[i]), FFI_TYPE_POINTER); } else if (available_x (&state) >= (ty->size + 7) / 8) { /* If the argument is a composite type and the size in double-words is not more than the number of available X registers, then the argument is copied into consecutive X registers. */ int j; for (j = 0; j < (ty->size + 7) / 8; j++) { memcpy (allocate_to_x (context, &state), &(((UINT64 *) ecif->avalue[i])[j]), sizeof (UINT64)); } } else { /* Otherwise, there are insufficient X registers. Further X register allocations are prevented, the NSAA is adjusted (by allocate_to_stack ()) and the argument is copied to memory at the adjusted NSAA. */ state.ngrn = N_X_ARG_REG; memcpy (allocate_to_stack (&state, stack, ty->alignment, ty->size), ecif->avalue + i, ty->size); } break; default: FFI_ASSERT (0); break; } #if defined (__APPLE__) if (i + 1 == ecif->cif->aarch64_nfixedargs) { state.ngrn = N_X_ARG_REG; state.nsrn = N_V_ARG_REG; state.allocating_variadic = 1; } #endif } return ecif->cif->aarch64_flags; } ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* Round the stack up to a multiple of the stack alignment requirement. */ cif->bytes = (cif->bytes + (AARCH64_STACK_ALIGN - 1)) & ~ (AARCH64_STACK_ALIGN - 1); /* Initialize our flags. We are interested if this CIF will touch a vector register, if so we will enable context save and load to those registers, otherwise not. This is intended to be friendly to lazy float context switching in the kernel. */ cif->aarch64_flags = 0; if (is_v_register_candidate (cif->rtype)) { cif->aarch64_flags |= AARCH64_FFI_WITH_V; } else { int i; for (i = 0; i < cif->nargs; i++) if (is_v_register_candidate (cif->arg_types[i])) { cif->aarch64_flags |= AARCH64_FFI_WITH_V; break; } } #if defined (__APPLE__) cif->aarch64_nfixedargs = 0; #endif return FFI_OK; } #if defined (__APPLE__) /* Perform Apple-specific cif processing for variadic calls */ ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { ffi_status status; status = ffi_prep_cif_machdep (cif); cif->aarch64_nfixedargs = nfixedargs; return status; } #endif /* Call a function with the provided arguments and capture the return value. */ void ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: { struct call_context context; size_t stack_bytes; /* Figure out the total amount of stack space we need, the above call frame space needs to be 16 bytes aligned to ensure correct alignment of the first object inserted in that space hence the ALIGN applied to cif->bytes.*/ stack_bytes = ALIGN(cif->bytes, 16); memset (&context, 0, sizeof (context)); if (is_register_candidate (cif->rtype)) { ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn); switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: #endif case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_INT: case FFI_TYPE_SINT64: { void *addr = get_basic_type_addr (cif->rtype->type, &context, 0); copy_basic_type (rvalue, addr, cif->rtype->type); break; } case FFI_TYPE_STRUCT: if (is_hfa (cif->rtype)) { int j; unsigned short type = get_homogeneous_type (cif->rtype); unsigned elems = element_count (cif->rtype); for (j = 0; j < elems; j++) { void *reg = get_basic_type_addr (type, &context, j); copy_basic_type (rvalue, reg, type); rvalue += get_basic_type_size (type); } } else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG) { size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)); memcpy (rvalue, get_x_addr (&context, 0), size); } else { FFI_ASSERT (0); } break; default: FFI_ASSERT (0); break; } } else { memcpy (get_x_addr (&context, 8), &rvalue, sizeof (UINT64)); ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn); } break; } default: FFI_ASSERT (0); break; } } static unsigned char trampoline [] = { 0x70, 0x00, 0x00, 0x58, /* ldr x16, 1f */ 0x91, 0x00, 0x00, 0x10, /* adr x17, 2f */ 0x00, 0x02, 0x1f, 0xd6 /* br x16 */ }; /* Build a trampoline. */ #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX,FLAGS) \ ({unsigned char *__tramp = (unsigned char*)(TRAMP); \ UINT64 __fun = (UINT64)(FUN); \ UINT64 __ctx = (UINT64)(CTX); \ UINT64 __flags = (UINT64)(FLAGS); \ memcpy (__tramp, trampoline, sizeof (trampoline)); \ memcpy (__tramp + 12, &__fun, sizeof (__fun)); \ memcpy (__tramp + 20, &__ctx, sizeof (__ctx)); \ memcpy (__tramp + 28, &__flags, sizeof (__flags)); \ ffi_clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE); \ }) ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc, cif->aarch64_flags); closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } /* Primary handler to setup and invoke a function within a closure. A closure when invoked enters via the assembler wrapper ffi_closure_SYSV(). The wrapper allocates a call context on the stack, saves the interesting registers (from the perspective of the calling convention) into the context then passes control to ffi_closure_SYSV_inner() passing the saved context and a pointer to the stack at the point ffi_closure_SYSV() was invoked. On the return path the assembler wrapper will reload call context registers. ffi_closure_SYSV_inner() marshalls the call context into ffi value descriptors, invokes the wrapped function, then marshalls the return value back into the call context. */ void FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context, void *stack) { ffi_cif *cif = closure->cif; void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); void *rvalue = NULL; int i; struct arg_state state; arg_init (&state, ALIGN(cif->bytes, 16)); for (i = 0; i < cif->nargs; i++) { ffi_type *ty = cif->arg_types[i]; switch (ty->type) { case FFI_TYPE_VOID: FFI_ASSERT (0); break; case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_INT: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: avalue[i] = allocate_to_register_or_stack (context, stack, &state, ty->type); break; #endif case FFI_TYPE_STRUCT: if (is_hfa (ty)) { unsigned n = element_count (ty); if (available_v (&state) < n) { state.nsrn = N_V_ARG_REG; avalue[i] = allocate_to_stack (&state, stack, ty->alignment, ty->size); } else { switch (get_homogeneous_type (ty)) { case FFI_TYPE_FLOAT: { /* Eeek! We need a pointer to the structure, however the homogeneous float elements are being passed in individual S registers, therefore the structure is not represented as a contiguous sequence of bytes in our saved register context. We need to fake up a copy of the structure laid out in memory correctly. The fake can be tossed once the closure function has returned hence alloca() is sufficient. */ int j; UINT32 *p = avalue[i] = alloca (ty->size); for (j = 0; j < element_count (ty); j++) memcpy (&p[j], allocate_to_s (context, &state), sizeof (*p)); break; } case FFI_TYPE_DOUBLE: { /* Eeek! We need a pointer to the structure, however the homogeneous float elements are being passed in individual S registers, therefore the structure is not represented as a contiguous sequence of bytes in our saved register context. We need to fake up a copy of the structure laid out in memory correctly. The fake can be tossed once the closure function has returned hence alloca() is sufficient. */ int j; UINT64 *p = avalue[i] = alloca (ty->size); for (j = 0; j < element_count (ty); j++) memcpy (&p[j], allocate_to_d (context, &state), sizeof (*p)); break; } #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: memcpy (&avalue[i], allocate_to_v (context, &state), sizeof (*avalue)); break; #endif default: FFI_ASSERT (0); break; } } } else if (ty->size > 16) { /* Replace Composite type of size greater than 16 with a pointer. */ memcpy (&avalue[i], allocate_to_register_or_stack (context, stack, &state, FFI_TYPE_POINTER), sizeof (avalue[i])); } else if (available_x (&state) >= (ty->size + 7) / 8) { avalue[i] = get_x_addr (context, state.ngrn); state.ngrn += (ty->size + 7) / 8; } else { state.ngrn = N_X_ARG_REG; avalue[i] = allocate_to_stack (&state, stack, ty->alignment, ty->size); } break; default: FFI_ASSERT (0); break; } } /* Figure out where the return value will be passed, either in registers or in a memory block allocated by the caller and passed in x8. */ if (is_register_candidate (cif->rtype)) { /* Register candidates are *always* returned in registers. */ /* Allocate a scratchpad for the return value, we will let the callee scrible the result into the scratch pad then move the contents into the appropriate return value location for the call convention. */ rvalue = alloca (cif->rtype->size); (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Copy the return value into the call context so that it is returned as expected to our caller. */ switch (cif->rtype->type) { case FFI_TYPE_VOID: break; case FFI_TYPE_UINT8: case FFI_TYPE_UINT16: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT8: case FFI_TYPE_SINT16: case FFI_TYPE_INT: case FFI_TYPE_SINT32: case FFI_TYPE_SINT64: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: #endif { void *addr = get_basic_type_addr (cif->rtype->type, context, 0); copy_basic_type (addr, rvalue, cif->rtype->type); break; } case FFI_TYPE_STRUCT: if (is_hfa (cif->rtype)) { int j; unsigned short type = get_homogeneous_type (cif->rtype); unsigned elems = element_count (cif->rtype); for (j = 0; j < elems; j++) { void *reg = get_basic_type_addr (type, context, j); copy_basic_type (reg, rvalue, type); rvalue += get_basic_type_size (type); } } else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG) { size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)) ; memcpy (get_x_addr (context, 0), rvalue, size); } else { FFI_ASSERT (0); } break; default: FFI_ASSERT (0); break; } } else { memcpy (&rvalue, get_x_addr (context, 8), sizeof (UINT64)); (closure->fun) (cif, rvalue, avalue, closure->user_data); } } polyml-5.7.1/libffi/src/aarch64/sysv.S0000644000175000017500000002311613204034553016404 0ustar daviddavid/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else #ifdef __USER_LABEL_PREFIX__ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) #else #define CNAME(x) x #endif #endif #define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off #define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off #define cfi_restore(reg) .cfi_restore reg #define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg .text .globl CNAME(ffi_call_SYSV) #ifdef __ELF__ .type CNAME(ffi_call_SYSV), #function #endif #ifdef __APPLE__ .align 2 #endif /* ffi_call_SYSV() Create a stack frame, setup an argument context, call the callee and extract the result. The maximum required argument stack size is provided, ffi_call_SYSV() allocates that stack space then calls the prepare_fn to populate register context and stack. The argument passing registers are loaded from the register context and the callee called, on return the register passing register are saved back to the context. Our caller will extract the return value from the final state of the saved register context. Prototype: extern unsigned ffi_call_SYSV (void (*)(struct call_context *context, unsigned char *, extended_cif *), struct call_context *context, extended_cif *, size_t required_stack_size, void (*fn)(void)); Therefore on entry we have: x0 prepare_fn x1 &context x2 &ecif x3 bytes x4 fn This function uses the following stack frame layout: == saved x30(lr) x29(fp)-> saved x29(fp) saved x24 saved x23 saved x22 sp' -> saved x21 ... sp -> (constructed callee stack arguments) == Voila! */ #define ffi_call_SYSV_FS (8 * 4) .cfi_startproc CNAME(ffi_call_SYSV): stp x29, x30, [sp, #-16]! cfi_adjust_cfa_offset (16) cfi_rel_offset (x29, 0) cfi_rel_offset (x30, 8) mov x29, sp cfi_def_cfa_register (x29) sub sp, sp, #ffi_call_SYSV_FS stp x21, x22, [sp, #0] cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS) cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS) stp x23, x24, [sp, #16] cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS) cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS) mov x21, x1 mov x22, x2 mov x24, x4 /* Allocate the stack space for the actual arguments, many arguments will be passed in registers, but we assume worst case and allocate sufficient stack for ALL of the arguments. */ sub sp, sp, x3 /* unsigned (*prepare_fn) (struct call_context *context, unsigned char *stack, extended_cif *ecif); */ mov x23, x0 mov x0, x1 mov x1, sp /* x2 already in place */ blr x23 /* Preserve the flags returned. */ mov x23, x0 /* Figure out if we should touch the vector registers. */ tbz x23, #AARCH64_FFI_WITH_V_BIT, 1f /* Load the vector argument passing registers. */ ldp q0, q1, [x21, #8*32 + 0] ldp q2, q3, [x21, #8*32 + 32] ldp q4, q5, [x21, #8*32 + 64] ldp q6, q7, [x21, #8*32 + 96] 1: /* Load the core argument passing registers. */ ldp x0, x1, [x21, #0] ldp x2, x3, [x21, #16] ldp x4, x5, [x21, #32] ldp x6, x7, [x21, #48] /* Don't forget x8 which may be holding the address of a return buffer. */ ldr x8, [x21, #8*8] blr x24 /* Save the core argument passing registers. */ stp x0, x1, [x21, #0] stp x2, x3, [x21, #16] stp x4, x5, [x21, #32] stp x6, x7, [x21, #48] /* Note nothing useful ever comes back in x8! */ /* Figure out if we should touch the vector registers. */ tbz x23, #AARCH64_FFI_WITH_V_BIT, 1f /* Save the vector argument passing registers. */ stp q0, q1, [x21, #8*32 + 0] stp q2, q3, [x21, #8*32 + 32] stp q4, q5, [x21, #8*32 + 64] stp q6, q7, [x21, #8*32 + 96] 1: /* All done, unwind our stack frame. */ ldp x21, x22, [x29, # - ffi_call_SYSV_FS] cfi_restore (x21) cfi_restore (x22) ldp x23, x24, [x29, # - ffi_call_SYSV_FS + 16] cfi_restore (x23) cfi_restore (x24) mov sp, x29 cfi_def_cfa_register (sp) ldp x29, x30, [sp], #16 cfi_adjust_cfa_offset (-16) cfi_restore (x29) cfi_restore (x30) ret .cfi_endproc #ifdef __ELF__ .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV) #endif #define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE) /* ffi_closure_SYSV Closure invocation glue. This is the low level code invoked directly by the closure trampoline to setup and call a closure. On entry x17 points to a struct trampoline_data, x16 has been clobbered all other registers are preserved. We allocate a call context and save the argument passing registers, then invoked the generic C ffi_closure_SYSV_inner() function to do all the real work, on return we load the result passing registers back from the call context. On entry extern void ffi_closure_SYSV (struct trampoline_data *); struct trampoline_data { UINT64 *ffi_closure; UINT64 flags; }; This function uses the following stack frame layout: == saved x30(lr) x29(fp)-> saved x29(fp) saved x22 saved x21 ... sp -> call_context == Voila! */ .text .globl CNAME(ffi_closure_SYSV) #ifdef __APPLE__ .align 2 #endif .cfi_startproc CNAME(ffi_closure_SYSV): stp x29, x30, [sp, #-16]! cfi_adjust_cfa_offset (16) cfi_rel_offset (x29, 0) cfi_rel_offset (x30, 8) mov x29, sp cfi_def_cfa_register (x29) sub sp, sp, #ffi_closure_SYSV_FS stp x21, x22, [x29, #-16] cfi_rel_offset (x21, -16) cfi_rel_offset (x22, -8) /* Load x21 with &call_context. */ mov x21, sp /* Preserve our struct trampoline_data * */ mov x22, x17 /* Save the rest of the argument passing registers. */ stp x0, x1, [x21, #0] stp x2, x3, [x21, #16] stp x4, x5, [x21, #32] stp x6, x7, [x21, #48] /* Don't forget we may have been given a result scratch pad address. */ str x8, [x21, #64] /* Figure out if we should touch the vector registers. */ ldr x0, [x22, #8] tbz x0, #AARCH64_FFI_WITH_V_BIT, 1f /* Save the argument passing vector registers. */ stp q0, q1, [x21, #8*32 + 0] stp q2, q3, [x21, #8*32 + 32] stp q4, q5, [x21, #8*32 + 64] stp q6, q7, [x21, #8*32 + 96] 1: /* Load &ffi_closure.. */ ldr x0, [x22, #0] mov x1, x21 /* Compute the location of the stack at the point that the trampoline was called. */ add x2, x29, #16 bl CNAME(ffi_closure_SYSV_inner) /* Figure out if we should touch the vector registers. */ ldr x0, [x22, #8] tbz x0, #AARCH64_FFI_WITH_V_BIT, 1f /* Load the result passing vector registers. */ ldp q0, q1, [x21, #8*32 + 0] ldp q2, q3, [x21, #8*32 + 32] ldp q4, q5, [x21, #8*32 + 64] ldp q6, q7, [x21, #8*32 + 96] 1: /* Load the result passing core registers. */ ldp x0, x1, [x21, #0] ldp x2, x3, [x21, #16] ldp x4, x5, [x21, #32] ldp x6, x7, [x21, #48] /* Note nothing useful is returned in x8. */ /* We are done, unwind our frame. */ ldp x21, x22, [x29, #-16] cfi_restore (x21) cfi_restore (x22) mov sp, x29 cfi_def_cfa_register (sp) ldp x29, x30, [sp], #16 cfi_adjust_cfa_offset (-16) cfi_restore (x29) cfi_restore (x30) ret .cfi_endproc #ifdef __ELF__ .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV) #endif polyml-5.7.1/libffi/src/mips/0000755000175000017500000000000013204034553014771 5ustar daviddavidpolyml-5.7.1/libffi/src/mips/ffitarget.h0000644000175000017500000001463413204034553017125 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for MIPS. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifdef linux # include #elif defined(__rtems__) /* * Subprogram calling convention - copied from sgidefs.h */ #define _MIPS_SIM_ABI32 1 #define _MIPS_SIM_NABI32 2 #define _MIPS_SIM_ABI64 3 #elif !defined(__OpenBSD__) # include #endif # ifndef _ABIN32 # define _ABIN32 _MIPS_SIM_NABI32 # endif # ifndef _ABI64 # define _ABI64 _MIPS_SIM_ABI64 # endif # ifndef _ABIO32 # define _ABIO32 _MIPS_SIM_ABI32 # endif #if !defined(_MIPS_SIM) # error -- something is very wrong -- #else # if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) # define FFI_MIPS_N32 # else # if (_MIPS_SIM==_ABIO32 && defined(_ABIO32)) # define FFI_MIPS_O32 # else # error -- this is an unsupported platform -- # endif # endif #endif #ifdef FFI_MIPS_O32 /* O32 stack frames have 32bit integer args */ # define FFI_SIZEOF_ARG 4 #else /* N32 and N64 frames have 64bit integer args */ # define FFI_SIZEOF_ARG 8 # if _MIPS_SIM == _ABIN32 # define FFI_SIZEOF_JAVA_RAW 4 # endif #endif #define FFI_FLAG_BITS 2 /* SGI's strange assembler requires that we multiply by 4 rather than shift left by FFI_FLAG_BITS */ #define FFI_ARGS_D FFI_TYPE_DOUBLE #define FFI_ARGS_F FFI_TYPE_FLOAT #define FFI_ARGS_DD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_DOUBLE #define FFI_ARGS_FF FFI_TYPE_FLOAT * 4 + FFI_TYPE_FLOAT #define FFI_ARGS_FD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_FLOAT #define FFI_ARGS_DF FFI_TYPE_FLOAT * 4 + FFI_TYPE_DOUBLE /* Needed for N32 structure returns */ #define FFI_TYPE_SMALLSTRUCT FFI_TYPE_UINT8 #define FFI_TYPE_SMALLSTRUCT2 FFI_TYPE_SINT8 #if 0 /* The SGI assembler can't handle this.. */ #define FFI_TYPE_STRUCT_DD (( FFI_ARGS_DD ) << 4) + FFI_TYPE_STRUCT /* (and so on) */ #else /* ...so we calculate these by hand! */ #define FFI_TYPE_STRUCT_D 61 #define FFI_TYPE_STRUCT_F 45 #define FFI_TYPE_STRUCT_DD 253 #define FFI_TYPE_STRUCT_FF 173 #define FFI_TYPE_STRUCT_FD 237 #define FFI_TYPE_STRUCT_DF 189 #define FFI_TYPE_STRUCT_SMALL 93 #define FFI_TYPE_STRUCT_SMALL2 109 /* and for n32 soft float, add 16 * 2^4 */ #define FFI_TYPE_STRUCT_D_SOFT 317 #define FFI_TYPE_STRUCT_F_SOFT 301 #define FFI_TYPE_STRUCT_DD_SOFT 509 #define FFI_TYPE_STRUCT_FF_SOFT 429 #define FFI_TYPE_STRUCT_FD_SOFT 493 #define FFI_TYPE_STRUCT_DF_SOFT 445 #define FFI_TYPE_STRUCT_SOFT 16 #endif #ifdef LIBFFI_ASM #define v0 $2 #define v1 $3 #define a0 $4 #define a1 $5 #define a2 $6 #define a3 $7 #define a4 $8 #define a5 $9 #define a6 $10 #define a7 $11 #define t0 $8 #define t1 $9 #define t2 $10 #define t3 $11 #define t4 $12 #define t5 $13 #define t6 $14 #define t7 $15 #define t8 $24 #define t9 $25 #define ra $31 #ifdef FFI_MIPS_O32 # define REG_L lw # define REG_S sw # define SUBU subu # define ADDU addu # define SRL srl # define LI li #else /* !FFI_MIPS_O32 */ # define REG_L ld # define REG_S sd # define SUBU dsubu # define ADDU daddu # define SRL dsrl # define LI dli # if (_MIPS_SIM==_ABI64) # define LA dla # define EH_FRAME_ALIGN 3 # define FDE_ADDR_BYTES .8byte # else # define LA la # define EH_FRAME_ALIGN 2 # define FDE_ADDR_BYTES .4byte # endif /* _MIPS_SIM==_ABI64 */ #endif /* !FFI_MIPS_O32 */ #else /* !LIBFFI_ASM */ # ifdef __GNUC__ # ifdef FFI_MIPS_O32 /* O32 stack frames have 32bit integer args */ typedef unsigned int ffi_arg __attribute__((__mode__(__SI__))); typedef signed int ffi_sarg __attribute__((__mode__(__SI__))); #else /* N32 and N64 frames have 64bit integer args */ typedef unsigned int ffi_arg __attribute__((__mode__(__DI__))); typedef signed int ffi_sarg __attribute__((__mode__(__DI__))); # endif # else # ifdef FFI_MIPS_O32 /* O32 stack frames have 32bit integer args */ typedef __uint32_t ffi_arg; typedef __int32_t ffi_sarg; # else /* N32 and N64 frames have 64bit integer args */ typedef __uint64_t ffi_arg; typedef __int64_t ffi_sarg; # endif # endif /* __GNUC__ */ typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_O32, FFI_N32, FFI_N64, FFI_O32_SOFT_FLOAT, FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT, FFI_LAST_ABI, #ifdef FFI_MIPS_O32 #ifdef __mips_soft_float FFI_DEFAULT_ABI = FFI_O32_SOFT_FLOAT #else FFI_DEFAULT_ABI = FFI_O32 #endif #else # if _MIPS_SIM==_ABI64 # ifdef __mips_soft_float FFI_DEFAULT_ABI = FFI_N64_SOFT_FLOAT # else FFI_DEFAULT_ABI = FFI_N64 # endif # else # ifdef __mips_soft_float FFI_DEFAULT_ABI = FFI_N32_SOFT_FLOAT # else FFI_DEFAULT_ABI = FFI_N32 # endif # endif #endif } ffi_abi; #define FFI_EXTRA_CIF_FIELDS unsigned rstruct_flag #endif /* !LIBFFI_ASM */ /* ---- Definitions for closures ----------------------------------------- */ #if defined(FFI_MIPS_O32) #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 20 #else /* N32/N64. */ # define FFI_CLOSURES 1 #if _MIPS_SIM==_ABI64 #define FFI_TRAMPOLINE_SIZE 52 #else #define FFI_TRAMPOLINE_SIZE 20 #endif #endif /* FFI_MIPS_O32 */ #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/mips/ffi.c0000644000175000017500000006403013204034553015704 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2011 Anthony Green Copyright (c) 2008 David Daney Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. MIPS Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #ifdef __GNUC__ # if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) # define USE__BUILTIN___CLEAR_CACHE 1 # endif #endif #ifndef USE__BUILTIN___CLEAR_CACHE # if defined(__OpenBSD__) # include # else # include # endif #endif #ifdef FFI_DEBUG # define FFI_MIPS_STOP_HERE() ffi_stop_here() #else # define FFI_MIPS_STOP_HERE() do {} while(0) #endif #ifdef FFI_MIPS_N32 #define FIX_ARGP \ FFI_ASSERT(argp <= &stack[bytes]); \ if (argp == &stack[bytes]) \ { \ argp = stack; \ FFI_MIPS_STOP_HERE(); \ } #else #define FIX_ARGP #endif /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ static void ffi_prep_args(char *stack, extended_cif *ecif, int bytes, int flags) { int i; void **p_argv; char *argp; ffi_type **p_arg; #ifdef FFI_MIPS_N32 /* If more than 8 double words are used, the remainder go on the stack. We reorder stuff on the stack here to support this easily. */ if (bytes > 8 * sizeof(ffi_arg)) argp = &stack[bytes - (8 * sizeof(ffi_arg))]; else argp = stack; #else argp = stack; #endif memset(stack, 0, bytes); #ifdef FFI_MIPS_N32 if ( ecif->cif->rstruct_flag != 0 ) #else if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) #endif { *(ffi_arg *) argp = (ffi_arg) ecif->rvalue; argp += sizeof(ffi_arg); FIX_ARGP; } p_argv = ecif->avalue; for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) { size_t z; unsigned int a; /* Align if necessary. */ a = (*p_arg)->alignment; if (a < sizeof(ffi_arg)) a = sizeof(ffi_arg); if ((a - 1) & (unsigned long) argp) { argp = (char *) ALIGN(argp, a); FIX_ARGP; } z = (*p_arg)->size; if (z <= sizeof(ffi_arg)) { int type = (*p_arg)->type; z = sizeof(ffi_arg); /* The size of a pointer depends on the ABI */ if (type == FFI_TYPE_POINTER) type = (ecif->cif->abi == FFI_N64 || ecif->cif->abi == FFI_N64_SOFT_FLOAT) ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; if (i < 8 && (ecif->cif->abi == FFI_N32_SOFT_FLOAT || ecif->cif->abi == FFI_N64_SOFT_FLOAT)) { switch (type) { case FFI_TYPE_FLOAT: type = FFI_TYPE_UINT32; break; case FFI_TYPE_DOUBLE: type = FFI_TYPE_UINT64; break; default: break; } } switch (type) { case FFI_TYPE_SINT8: *(ffi_arg *)argp = *(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(ffi_arg *)argp = *(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(ffi_arg *)argp = *(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(ffi_arg *)argp = *(UINT16 *)(* p_argv); break; case FFI_TYPE_SINT32: *(ffi_arg *)argp = *(SINT32 *)(* p_argv); break; case FFI_TYPE_UINT32: #ifdef FFI_MIPS_N32 /* The N32 ABI requires that 32-bit integers be sign-extended to 64-bits, regardless of whether they are signed or unsigned. */ *(ffi_arg *)argp = *(SINT32 *)(* p_argv); #else *(ffi_arg *)argp = *(UINT32 *)(* p_argv); #endif break; /* This can only happen with 64bit slots. */ case FFI_TYPE_FLOAT: *(float *) argp = *(float *)(* p_argv); break; /* Handle structures. */ default: memcpy(argp, *p_argv, (*p_arg)->size); break; } } else { #ifdef FFI_MIPS_O32 memcpy(argp, *p_argv, z); #else { unsigned long end = (unsigned long) argp + z; unsigned long cap = (unsigned long) stack + bytes; /* Check if the data will fit within the register space. Handle it if it doesn't. */ if (end <= cap) memcpy(argp, *p_argv, z); else { unsigned long portion = cap - (unsigned long)argp; memcpy(argp, *p_argv, portion); argp = stack; z -= portion; memcpy(argp, (void*)((unsigned long)(*p_argv) + portion), z); } } #endif } p_argv++; argp += z; FIX_ARGP; } } #ifdef FFI_MIPS_N32 /* The n32 spec says that if "a chunk consists solely of a double float field (but not a double, which is part of a union), it is passed in a floating point register. Any other chunk is passed in an integer register". This code traverses structure definitions and generates the appropriate flags. */ static unsigned calc_n32_struct_flags(int soft_float, ffi_type *arg, unsigned *loc, unsigned *arg_reg) { unsigned flags = 0; unsigned index = 0; ffi_type *e; if (soft_float) return 0; while ((e = arg->elements[index])) { /* Align this object. */ *loc = ALIGN(*loc, e->alignment); if (e->type == FFI_TYPE_DOUBLE) { /* Already aligned to FFI_SIZEOF_ARG. */ *arg_reg = *loc / FFI_SIZEOF_ARG; if (*arg_reg > 7) break; flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); *loc += e->size; } else *loc += e->size; index++; } /* Next Argument register at alignment of FFI_SIZEOF_ARG. */ *arg_reg = ALIGN(*loc, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; return flags; } static unsigned calc_n32_return_struct_flags(int soft_float, ffi_type *arg) { unsigned flags = 0; unsigned small = FFI_TYPE_SMALLSTRUCT; ffi_type *e; /* Returning structures under n32 is a tricky thing. A struct with only one or two floating point fields is returned in $f0 (and $f2 if necessary). Any other struct results at most 128 bits are returned in $2 (the first 64 bits) and $3 (remainder, if necessary). Larger structs are handled normally. */ if (arg->size > 16) return 0; if (arg->size > 8) small = FFI_TYPE_SMALLSTRUCT2; e = arg->elements[0]; if (e->type == FFI_TYPE_DOUBLE) flags = FFI_TYPE_DOUBLE; else if (e->type == FFI_TYPE_FLOAT) flags = FFI_TYPE_FLOAT; if (flags && (e = arg->elements[1])) { if (e->type == FFI_TYPE_DOUBLE) flags += FFI_TYPE_DOUBLE << FFI_FLAG_BITS; else if (e->type == FFI_TYPE_FLOAT) flags += FFI_TYPE_FLOAT << FFI_FLAG_BITS; else return small; if (flags && (arg->elements[2])) { /* There are three arguments and the first two are floats! This must be passed the old way. */ return small; } if (soft_float) flags += FFI_TYPE_STRUCT_SOFT; } else if (!flags) return small; return flags; } #endif /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { cif->flags = 0; #ifdef FFI_MIPS_O32 /* Set the flags necessary for O32 processing. FFI_O32_SOFT_FLOAT * does not have special handling for floating point args. */ if (cif->rtype->type != FFI_TYPE_STRUCT && cif->abi == FFI_O32) { if (cif->nargs > 0) { switch ((cif->arg_types)[0]->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags += (cif->arg_types)[0]->type; break; default: break; } if (cif->nargs > 1) { /* Only handle the second argument if the first is a float or double. */ if (cif->flags) { switch ((cif->arg_types)[1]->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags += (cif->arg_types)[1]->type << FFI_FLAG_BITS; break; default: break; } } } } } /* Set the return type flag */ if (cif->abi == FFI_O32_SOFT_FLOAT) { switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_STRUCT: cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); break; case FFI_TYPE_FLOAT: default: cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); break; } } else { /* FFI_O32 */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_STRUCT: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); break; default: cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); break; } } #endif #ifdef FFI_MIPS_N32 /* Set the flags necessary for N32 processing */ { int type; unsigned arg_reg = 0; unsigned loc = 0; unsigned count = (cif->nargs < 8) ? cif->nargs : 8; unsigned index = 0; unsigned struct_flags = 0; int soft_float = (cif->abi == FFI_N32_SOFT_FLOAT || cif->abi == FFI_N64_SOFT_FLOAT); if (cif->rtype->type == FFI_TYPE_STRUCT) { struct_flags = calc_n32_return_struct_flags(soft_float, cif->rtype); if (struct_flags == 0) { /* This means that the structure is being passed as a hidden argument */ arg_reg = 1; count = (cif->nargs < 7) ? cif->nargs : 7; cif->rstruct_flag = !0; } else cif->rstruct_flag = 0; } else cif->rstruct_flag = 0; while (count-- > 0 && arg_reg < 8) { type = (cif->arg_types)[index]->type; if (soft_float) { switch (type) { case FFI_TYPE_FLOAT: type = FFI_TYPE_UINT32; break; case FFI_TYPE_DOUBLE: type = FFI_TYPE_UINT64; break; default: break; } } switch (type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags += ((cif->arg_types)[index]->type << (arg_reg * FFI_FLAG_BITS)); arg_reg++; break; case FFI_TYPE_LONGDOUBLE: /* Align it. */ arg_reg = ALIGN(arg_reg, 2); /* Treat it as two adjacent doubles. */ if (soft_float) { arg_reg += 2; } else { cif->flags += (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); arg_reg++; cif->flags += (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); arg_reg++; } break; case FFI_TYPE_STRUCT: loc = arg_reg * FFI_SIZEOF_ARG; cif->flags += calc_n32_struct_flags(soft_float, (cif->arg_types)[index], &loc, &arg_reg); break; default: arg_reg++; break; } index++; } /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_STRUCT: { if (struct_flags == 0) { /* The structure is returned through a hidden first argument. Do nothing, 'cause FFI_TYPE_VOID is 0 */ } else { /* The structure is returned via some tricky mechanism */ cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); cif->flags += struct_flags << (4 + (FFI_FLAG_BITS * 8)); } break; } case FFI_TYPE_VOID: /* Do nothing, 'cause FFI_TYPE_VOID is 0 */ break; case FFI_TYPE_POINTER: if (cif->abi == FFI_N32_SOFT_FLOAT || cif->abi == FFI_N32) cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); else cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); break; case FFI_TYPE_FLOAT: if (soft_float) { cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); break; } /* else fall through */ case FFI_TYPE_DOUBLE: if (soft_float) cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); else cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8); break; case FFI_TYPE_LONGDOUBLE: /* Long double is returned as if it were a struct containing two doubles. */ if (soft_float) { cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); cif->flags += FFI_TYPE_SMALLSTRUCT2 << (4 + (FFI_FLAG_BITS * 8)); } else { cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); cif->flags += (FFI_TYPE_DOUBLE + (FFI_TYPE_DOUBLE << FFI_FLAG_BITS)) << (4 + (FFI_FLAG_BITS * 8)); } break; default: cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); break; } } #endif return FFI_OK; } /* Low level routine for calling O32 functions */ extern int ffi_call_O32(void (*)(char *, extended_cif *, int, int), extended_cif *, unsigned, unsigned, unsigned *, void (*)(void)); /* Low level routine for calling N32 functions */ extern int ffi_call_N32(void (*)(char *, extended_cif *, int, int), extended_cif *, unsigned, unsigned, void *, void (*)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) ecif.rvalue = alloca(cif->rtype->size); else ecif.rvalue = rvalue; switch (cif->abi) { #ifdef FFI_MIPS_O32 case FFI_O32: case FFI_O32_SOFT_FLOAT: ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; #endif #ifdef FFI_MIPS_N32 case FFI_N32: case FFI_N32_SOFT_FLOAT: case FFI_N64: case FFI_N64_SOFT_FLOAT: { int copy_rvalue = 0; int copy_offset = 0; char *rvalue_copy = ecif.rvalue; if (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size < 16) { /* For structures smaller than 16 bytes we clobber memory in 8 byte increments. Make a copy so we don't clobber the callers memory outside of the struct bounds. */ rvalue_copy = alloca(16); copy_rvalue = 1; } else if (cif->rtype->type == FFI_TYPE_FLOAT && (cif->abi == FFI_N64_SOFT_FLOAT || cif->abi == FFI_N32_SOFT_FLOAT)) { rvalue_copy = alloca (8); copy_rvalue = 1; #if defined(__MIPSEB__) || defined(_MIPSEB) copy_offset = 4; #endif } ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, cif->flags, rvalue_copy, fn); if (copy_rvalue) memcpy(ecif.rvalue, rvalue_copy + copy_offset, cif->rtype->size); } break; #endif default: FFI_ASSERT(0); break; } } #if FFI_CLOSURES #if defined(FFI_MIPS_O32) extern void ffi_closure_O32(void); #else extern void ffi_closure_N32(void); #endif /* FFI_MIPS_O32 */ ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; void * fn; char *clear_location = (char *) codeloc; #if defined(FFI_MIPS_O32) if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) return FFI_BAD_ABI; fn = ffi_closure_O32; #else #if _MIPS_SIM ==_ABIN32 if (cif->abi != FFI_N32 && cif->abi != FFI_N32_SOFT_FLOAT) return FFI_BAD_ABI; #else if (cif->abi != FFI_N64 && cif->abi != FFI_N64_SOFT_FLOAT) return FFI_BAD_ABI; #endif fn = ffi_closure_N32; #endif /* FFI_MIPS_O32 */ #if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) /* lui $25,high(fn) */ tramp[0] = 0x3c190000 | ((unsigned)fn >> 16); /* ori $25,low(fn) */ tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff); /* lui $12,high(codeloc) */ tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); /* jr $25 */ tramp[3] = 0x03200008; /* ori $12,low(codeloc) */ tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); #else /* N64 has a somewhat larger trampoline. */ /* lui $25,high(fn) */ tramp[0] = 0x3c190000 | ((unsigned long)fn >> 48); /* lui $12,high(codeloc) */ tramp[1] = 0x3c0c0000 | ((unsigned long)codeloc >> 48); /* ori $25,mid-high(fn) */ tramp[2] = 0x37390000 | (((unsigned long)fn >> 32 ) & 0xffff); /* ori $12,mid-high(codeloc) */ tramp[3] = 0x358c0000 | (((unsigned long)codeloc >> 32) & 0xffff); /* dsll $25,$25,16 */ tramp[4] = 0x0019cc38; /* dsll $12,$12,16 */ tramp[5] = 0x000c6438; /* ori $25,mid-low(fn) */ tramp[6] = 0x37390000 | (((unsigned long)fn >> 16 ) & 0xffff); /* ori $12,mid-low(codeloc) */ tramp[7] = 0x358c0000 | (((unsigned long)codeloc >> 16) & 0xffff); /* dsll $25,$25,16 */ tramp[8] = 0x0019cc38; /* dsll $12,$12,16 */ tramp[9] = 0x000c6438; /* ori $25,low(fn) */ tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); /* jr $25 */ tramp[11] = 0x03200008; /* ori $12,low(codeloc) */ tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; #ifdef USE__BUILTIN___CLEAR_CACHE __builtin___clear_cache(clear_location, clear_location + FFI_TRAMPOLINE_SIZE); #else cacheflush (clear_location, FFI_TRAMPOLINE_SIZE, ICACHE); #endif return FFI_OK; } /* * Decodes the arguments to a function, which will be stored on the * stack. AR is the pointer to the beginning of the integer arguments * (and, depending upon the arguments, some floating-point arguments * as well). FPR is a pointer to the area where floating point * registers have been saved, if any. * * RVALUE is the location where the function return value will be * stored. CLOSURE is the prepared closure to invoke. * * This function should only be called from assembly, which is in * turn called from a trampoline. * * Returns the function return type. * * Based on the similar routine for sparc. */ int ffi_closure_mips_inner_O32 (ffi_closure *closure, void *rvalue, ffi_arg *ar, double *fpr) { ffi_cif *cif; void **avaluep; ffi_arg *avalue; ffi_type **arg_types; int i, avn, argn, seen_int; cif = closure->cif; avalue = alloca (cif->nargs * sizeof (ffi_arg)); avaluep = alloca (cif->nargs * sizeof (ffi_arg)); seen_int = (cif->abi == FFI_O32_SOFT_FLOAT); argn = 0; if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_STRUCT) { rvalue = (void *)(UINT32)ar[0]; argn = 1; } i = 0; avn = cif->nargs; arg_types = cif->arg_types; while (i < avn) { if (i < 2 && !seen_int && (arg_types[i]->type == FFI_TYPE_FLOAT || arg_types[i]->type == FFI_TYPE_DOUBLE || arg_types[i]->type == FFI_TYPE_LONGDOUBLE)) { #if defined(__MIPSEB__) || defined(_MIPSEB) if (arg_types[i]->type == FFI_TYPE_FLOAT) avaluep[i] = ((char *) &fpr[i]) + sizeof (float); else #endif avaluep[i] = (char *) &fpr[i]; } else { if (arg_types[i]->alignment == 8 && (argn & 0x1)) argn++; switch (arg_types[i]->type) { case FFI_TYPE_SINT8: avaluep[i] = &avalue[i]; *(SINT8 *) &avalue[i] = (SINT8) ar[argn]; break; case FFI_TYPE_UINT8: avaluep[i] = &avalue[i]; *(UINT8 *) &avalue[i] = (UINT8) ar[argn]; break; case FFI_TYPE_SINT16: avaluep[i] = &avalue[i]; *(SINT16 *) &avalue[i] = (SINT16) ar[argn]; break; case FFI_TYPE_UINT16: avaluep[i] = &avalue[i]; *(UINT16 *) &avalue[i] = (UINT16) ar[argn]; break; default: avaluep[i] = (char *) &ar[argn]; break; } seen_int = 1; } argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; i++; } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avaluep, closure->user_data); if (cif->abi == FFI_O32_SOFT_FLOAT) { switch (cif->rtype->type) { case FFI_TYPE_FLOAT: return FFI_TYPE_INT; case FFI_TYPE_DOUBLE: return FFI_TYPE_UINT64; default: return cif->rtype->type; } } else { return cif->rtype->type; } } #if defined(FFI_MIPS_N32) static void copy_struct_N32(char *target, unsigned offset, ffi_abi abi, ffi_type *type, int argn, unsigned arg_offset, ffi_arg *ar, ffi_arg *fpr, int soft_float) { ffi_type **elt_typep = type->elements; while(*elt_typep) { ffi_type *elt_type = *elt_typep; unsigned o; char *tp; char *argp; char *fpp; o = ALIGN(offset, elt_type->alignment); arg_offset += o - offset; offset = o; argn += arg_offset / sizeof(ffi_arg); arg_offset = arg_offset % sizeof(ffi_arg); argp = (char *)(ar + argn); fpp = (char *)(argn >= 8 ? ar + argn : fpr + argn); tp = target + offset; if (elt_type->type == FFI_TYPE_DOUBLE && !soft_float) *(double *)tp = *(double *)fpp; else memcpy(tp, argp + arg_offset, elt_type->size); offset += elt_type->size; arg_offset += elt_type->size; elt_typep++; argn += arg_offset / sizeof(ffi_arg); arg_offset = arg_offset % sizeof(ffi_arg); } } /* * Decodes the arguments to a function, which will be stored on the * stack. AR is the pointer to the beginning of the integer * arguments. FPR is a pointer to the area where floating point * registers have been saved. * * RVALUE is the location where the function return value will be * stored. CLOSURE is the prepared closure to invoke. * * This function should only be called from assembly, which is in * turn called from a trampoline. * * Returns the function return flags. * */ int ffi_closure_mips_inner_N32 (ffi_closure *closure, void *rvalue, ffi_arg *ar, ffi_arg *fpr) { ffi_cif *cif; void **avaluep; ffi_arg *avalue; ffi_type **arg_types; int i, avn, argn; int soft_float; ffi_arg *argp; cif = closure->cif; soft_float = cif->abi == FFI_N64_SOFT_FLOAT || cif->abi == FFI_N32_SOFT_FLOAT; avalue = alloca (cif->nargs * sizeof (ffi_arg)); avaluep = alloca (cif->nargs * sizeof (ffi_arg)); argn = 0; if (cif->rstruct_flag) { #if _MIPS_SIM==_ABIN32 rvalue = (void *)(UINT32)ar[0]; #else /* N64 */ rvalue = (void *)ar[0]; #endif argn = 1; } i = 0; avn = cif->nargs; arg_types = cif->arg_types; while (i < avn) { if (arg_types[i]->type == FFI_TYPE_FLOAT || arg_types[i]->type == FFI_TYPE_DOUBLE || arg_types[i]->type == FFI_TYPE_LONGDOUBLE) { argp = (argn >= 8 || soft_float) ? ar + argn : fpr + argn; if ((arg_types[i]->type == FFI_TYPE_LONGDOUBLE) && ((unsigned)argp & (arg_types[i]->alignment-1))) { argp=(ffi_arg*)ALIGN(argp,arg_types[i]->alignment); argn++; } #if defined(__MIPSEB__) || defined(_MIPSEB) if (arg_types[i]->type == FFI_TYPE_FLOAT && argn < 8) avaluep[i] = ((char *) argp) + sizeof (float); else #endif avaluep[i] = (char *) argp; } else { unsigned type = arg_types[i]->type; if (arg_types[i]->alignment > sizeof(ffi_arg)) argn = ALIGN(argn, arg_types[i]->alignment / sizeof(ffi_arg)); argp = ar + argn; /* The size of a pointer depends on the ABI */ if (type == FFI_TYPE_POINTER) type = (cif->abi == FFI_N64 || cif->abi == FFI_N64_SOFT_FLOAT) ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; if (soft_float && type == FFI_TYPE_FLOAT) type = FFI_TYPE_UINT32; switch (type) { case FFI_TYPE_SINT8: avaluep[i] = &avalue[i]; *(SINT8 *) &avalue[i] = (SINT8) *argp; break; case FFI_TYPE_UINT8: avaluep[i] = &avalue[i]; *(UINT8 *) &avalue[i] = (UINT8) *argp; break; case FFI_TYPE_SINT16: avaluep[i] = &avalue[i]; *(SINT16 *) &avalue[i] = (SINT16) *argp; break; case FFI_TYPE_UINT16: avaluep[i] = &avalue[i]; *(UINT16 *) &avalue[i] = (UINT16) *argp; break; case FFI_TYPE_SINT32: avaluep[i] = &avalue[i]; *(SINT32 *) &avalue[i] = (SINT32) *argp; break; case FFI_TYPE_UINT32: avaluep[i] = &avalue[i]; *(UINT32 *) &avalue[i] = (UINT32) *argp; break; case FFI_TYPE_STRUCT: if (argn < 8) { /* Allocate space for the struct as at least part of it was passed in registers. */ avaluep[i] = alloca(arg_types[i]->size); copy_struct_N32(avaluep[i], 0, cif->abi, arg_types[i], argn, 0, ar, fpr, soft_float); break; } /* Else fall through. */ default: avaluep[i] = (char *) argp; break; } } argn += ALIGN(arg_types[i]->size, sizeof(ffi_arg)) / sizeof(ffi_arg); i++; } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avaluep, closure->user_data); return cif->flags >> (FFI_FLAG_BITS * 8); } #endif /* FFI_MIPS_N32 */ #endif /* FFI_CLOSURES */ polyml-5.7.1/libffi/src/mips/n32.S0000644000175000017500000003374013204034553015526 0ustar daviddavid/* ----------------------------------------------------------------------- n32.S - Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc. MIPS Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include /* Only build this code if we are compiling for n32 */ #if defined(FFI_MIPS_N32) #define callback a0 #define bytes a2 #define flags a3 #define raddr a4 #define fn a5 #define SIZEOF_FRAME ( 8 * FFI_SIZEOF_ARG ) #ifdef __GNUC__ .abicalls #endif .set mips4 .text .align 2 .globl ffi_call_N32 .ent ffi_call_N32 ffi_call_N32: .LFB3: .frame $fp, SIZEOF_FRAME, ra .mask 0xc0000000,-FFI_SIZEOF_ARG .fmask 0x00000000,0 # Prologue SUBU $sp, SIZEOF_FRAME # Frame size .LCFI0: REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address .LCFI1: move $fp, $sp .LCFI3: move t9, callback # callback function pointer REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn # Allocate at least 4 words in the argstack move v0, bytes bge bytes, 4 * FFI_SIZEOF_ARG, bigger LI v0, 4 * FFI_SIZEOF_ARG b sixteen bigger: ADDU t4, v0, 2 * FFI_SIZEOF_ARG -1 # make sure it is aligned and v0, t4, -2 * FFI_SIZEOF_ARG # to a proper boundry. sixteen: SUBU $sp, $sp, v0 # move the stack pointer to reflect the # arg space move a0, $sp # 4 * FFI_SIZEOF_ARG ADDU a3, $fp, 3 * FFI_SIZEOF_ARG # Call ffi_prep_args jal t9 # Copy the stack pointer to t9 move t9, $sp # Fix the stack if there are more than 8 64bit slots worth # of arguments. # Load the number of bytes REG_L t6, 2*FFI_SIZEOF_ARG($fp) # Is it bigger than 8 * FFI_SIZEOF_ARG? daddiu t8, t6, -(8 * FFI_SIZEOF_ARG) bltz t8, loadregs ADDU t9, t9, t8 loadregs: REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. and t4, t6, ((1< #include /* Only build this code if we are compiling for o32 */ #if defined(FFI_MIPS_O32) #define callback a0 #define bytes a2 #define flags a3 #define SIZEOF_FRAME (4 * FFI_SIZEOF_ARG + 2 * FFI_SIZEOF_ARG) #define A3_OFF (SIZEOF_FRAME + 3 * FFI_SIZEOF_ARG) #define FP_OFF (SIZEOF_FRAME - 2 * FFI_SIZEOF_ARG) #define RA_OFF (SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG) .abicalls .text .align 2 .globl ffi_call_O32 .ent ffi_call_O32 ffi_call_O32: $LFB0: # Prologue SUBU $sp, SIZEOF_FRAME # Frame size $LCFI0: REG_S $fp, FP_OFF($sp) # Save frame pointer $LCFI1: REG_S ra, RA_OFF($sp) # Save return address $LCFI2: move $fp, $sp $LCFI3: move t9, callback # callback function pointer REG_S flags, A3_OFF($fp) # flags # Allocate at least 4 words in the argstack LI v0, 4 * FFI_SIZEOF_ARG blt bytes, v0, sixteen ADDU v0, bytes, 7 # make sure it is aligned and v0, -8 # to an 8 byte boundry sixteen: SUBU $sp, v0 # move the stack pointer to reflect the # arg space ADDU a0, $sp, 4 * FFI_SIZEOF_ARG jalr t9 REG_L t0, A3_OFF($fp) # load the flags word SRL t2, t0, 4 # shift our arg info and t0, ((1<<4)-1) # mask out the return type ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args bnez t0, pass_d # make it quick for int REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs. REG_L a2, 2*FFI_SIZEOF_ARG($sp) REG_L a3, 3*FFI_SIZEOF_ARG($sp) b call_it pass_d: bne t0, FFI_ARGS_D, pass_f l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args REG_L a2, 2*FFI_SIZEOF_ARG($sp) # passing a double REG_L a3, 3*FFI_SIZEOF_ARG($sp) b call_it pass_f: bne t0, FFI_ARGS_F, pass_d_d l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args REG_L a1, 1*FFI_SIZEOF_ARG($sp) # passing a float REG_L a2, 2*FFI_SIZEOF_ARG($sp) REG_L a3, 3*FFI_SIZEOF_ARG($sp) b call_it pass_d_d: bne t0, FFI_ARGS_DD, pass_f_f l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing two doubles b call_it pass_f_f: bne t0, FFI_ARGS_FF, pass_d_f l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args l.s $f14, 1*FFI_SIZEOF_ARG($sp) # passing two floats REG_L a2, 2*FFI_SIZEOF_ARG($sp) REG_L a3, 3*FFI_SIZEOF_ARG($sp) b call_it pass_d_f: bne t0, FFI_ARGS_DF, pass_f_d l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args l.s $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float REG_L a3, 3*FFI_SIZEOF_ARG($sp) b call_it pass_f_d: # assume that the only other combination must be float then double # bne t0, FFI_ARGS_F_D, call_it l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float call_it: # Load the function pointer REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp) # If the return value pointer is NULL, assume no return value. REG_L t1, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) beqz t1, noretval bne t2, FFI_TYPE_INT, retlonglong jalr t9 REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) REG_S v0, 0(t0) b epilogue retlonglong: # Really any 64-bit int, signed or not. bne t2, FFI_TYPE_UINT64, retfloat jalr t9 REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) REG_S v1, 4(t0) REG_S v0, 0(t0) b epilogue retfloat: bne t2, FFI_TYPE_FLOAT, retdouble jalr t9 REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) s.s $f0, 0(t0) b epilogue retdouble: bne t2, FFI_TYPE_DOUBLE, noretval jalr t9 REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) s.d $f0, 0(t0) b epilogue noretval: jalr t9 # Epilogue epilogue: move $sp, $fp REG_L $fp, FP_OFF($sp) # Restore frame pointer REG_L ra, RA_OFF($sp) # Restore return address ADDU $sp, SIZEOF_FRAME # Fix stack pointer j ra $LFE0: .end ffi_call_O32 /* ffi_closure_O32. Expects address of the passed-in ffi_closure in t4 ($12). Stores any arguments passed in registers onto the stack, then calls ffi_closure_mips_inner_O32, which then decodes them. Stack layout: 3 - a3 save 2 - a2 save 1 - a1 save 0 - a0 save, original sp -1 - ra save -2 - fp save -3 - $16 (s0) save -4 - cprestore -5 - return value high (v1) -6 - return value low (v0) -7 - f14 (le high, be low) -8 - f14 (le low, be high) -9 - f12 (le high, be low) -10 - f12 (le low, be high) -11 - Called function a3 save -12 - Called function a2 save -13 - Called function a1 save -14 - Called function a0 save, our sp and fp point here */ #define SIZEOF_FRAME2 (14 * FFI_SIZEOF_ARG) #define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG) #define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG) #define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG) #define A0_OFF2 (SIZEOF_FRAME2 + 0 * FFI_SIZEOF_ARG) #define RA_OFF2 (SIZEOF_FRAME2 - 1 * FFI_SIZEOF_ARG) #define FP_OFF2 (SIZEOF_FRAME2 - 2 * FFI_SIZEOF_ARG) #define S0_OFF2 (SIZEOF_FRAME2 - 3 * FFI_SIZEOF_ARG) #define GP_OFF2 (SIZEOF_FRAME2 - 4 * FFI_SIZEOF_ARG) #define V1_OFF2 (SIZEOF_FRAME2 - 5 * FFI_SIZEOF_ARG) #define V0_OFF2 (SIZEOF_FRAME2 - 6 * FFI_SIZEOF_ARG) #define FA_1_1_OFF2 (SIZEOF_FRAME2 - 7 * FFI_SIZEOF_ARG) #define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG) #define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG) #define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG) .text .align 2 .globl ffi_closure_O32 .ent ffi_closure_O32 ffi_closure_O32: $LFB1: # Prologue .frame $fp, SIZEOF_FRAME2, ra .set noreorder .cpload t9 .set reorder SUBU $sp, SIZEOF_FRAME2 .cprestore GP_OFF2 $LCFI4: REG_S $16, S0_OFF2($sp) # Save s0 REG_S $fp, FP_OFF2($sp) # Save frame pointer REG_S ra, RA_OFF2($sp) # Save return address $LCFI6: move $fp, $sp $LCFI7: # Store all possible argument registers. If there are more than # four arguments, then they are stored above where we put a3. REG_S a0, A0_OFF2($fp) REG_S a1, A1_OFF2($fp) REG_S a2, A2_OFF2($fp) REG_S a3, A3_OFF2($fp) # Load ABI enum to s0 REG_L $16, 20($12) # cif pointer follows tramp. REG_L $16, 0($16) # abi is first member. li $13, 1 # FFI_O32 bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT # Store all possible float/double registers. s.d $f12, FA_0_0_OFF2($fp) s.d $f14, FA_1_0_OFF2($fp) 1: # Call ffi_closure_mips_inner_O32 to do the work. la t9, ffi_closure_mips_inner_O32 move a0, $12 # Pointer to the ffi_closure addu a1, $fp, V0_OFF2 addu a2, $fp, A0_OFF2 addu a3, $fp, FA_0_0_OFF2 jalr t9 # Load the return value into the appropriate register. move $8, $2 li $9, FFI_TYPE_VOID beq $8, $9, closure_done li $13, 1 # FFI_O32 bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT li $9, FFI_TYPE_FLOAT l.s $f0, V0_OFF2($fp) beq $8, $9, closure_done li $9, FFI_TYPE_DOUBLE l.d $f0, V0_OFF2($fp) beq $8, $9, closure_done 1: REG_L $3, V1_OFF2($fp) REG_L $2, V0_OFF2($fp) closure_done: # Epilogue move $sp, $fp REG_L $16, S0_OFF2($sp) # Restore s0 REG_L $fp, FP_OFF2($sp) # Restore frame pointer REG_L ra, RA_OFF2($sp) # Restore return address ADDU $sp, SIZEOF_FRAME2 j ra $LFE1: .end ffi_closure_O32 /* DWARF-2 unwind info. */ .section .eh_frame,"a",@progbits $Lframe0: .4byte $LECIE0-$LSCIE0 # Length of Common Information Entry $LSCIE0: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 4 # CIE Data Alignment Factor .byte 0x1f # CIE RA Column .uleb128 0x1 # Augmentation size .byte 0x00 # FDE Encoding (absptr) .byte 0xc # DW_CFA_def_cfa .uleb128 0x1d .uleb128 0x0 .align 2 $LECIE0: $LSFDE0: .4byte $LEFDE0-$LASFDE0 # FDE Length $LASFDE0: .4byte $LASFDE0-$Lframe0 # FDE CIE offset .4byte $LFB0 # FDE initial location .4byte $LFE0-$LFB0 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI0-$LFB0 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x18 .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI2-$LCFI0 .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x1e # $fp .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x1f # $ra .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI3-$LCFI2 .byte 0xc # DW_CFA_def_cfa .uleb128 0x1e .uleb128 0x18 .align 2 $LEFDE0: $LSFDE1: .4byte $LEFDE1-$LASFDE1 # FDE Length $LASFDE1: .4byte $LASFDE1-$Lframe0 # FDE CIE offset .4byte $LFB1 # FDE initial location .4byte $LFE1-$LFB1 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI4-$LFB1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x38 .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI6-$LCFI4 .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x10 # $16 .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x1e # $fp .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x1f # $ra .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) .byte 0x4 # DW_CFA_advance_loc4 .4byte $LCFI7-$LCFI6 .byte 0xc # DW_CFA_def_cfa .uleb128 0x1e .uleb128 0x38 .align 2 $LEFDE1: #endif polyml-5.7.1/libffi/src/avr32/0000755000175000017500000000000013204034553014756 5ustar daviddavidpolyml-5.7.1/libffi/src/avr32/ffitarget.h0000644000175000017500000000365713204034553017115 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 2009 Bradley Smith Target configuration macros for AVR32. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #define FFI_EXTRA_CIF_FIELDS unsigned int rstruct_flag /* Definitions for closures */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 36 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/avr32/ffi.c0000644000175000017500000003015113204034553015666 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2011 Anthony Green Copyright (c) 2009 Bradley Smith AVR32 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #include #include /* #define DEBUG */ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, unsigned int, unsigned int, unsigned int*, unsigned int, void (*fn)(void)); extern void ffi_closure_SYSV (ffi_closure *); unsigned int pass_struct_on_stack(ffi_type *type) { if(type->type != FFI_TYPE_STRUCT) return 0; if(type->alignment < type->size && !(type->size == 4 || type->size == 8) && !(type->size == 8 && type->alignment >= 4)) return 1; if(type->size == 3 || type->size == 5 || type->size == 6 || type->size == 7) return 1; return 0; } /* ffi_prep_args is called by the assembly routine once stack space * has been allocated for the function's arguments * * This is annoyingly complex since we need to keep track of used * registers. */ void ffi_prep_args(char *stack, extended_cif *ecif) { unsigned int i; void **p_argv; ffi_type **p_arg; char *reg_base = stack; char *stack_base = stack + 20; unsigned int stack_offset = 0; unsigned int reg_mask = 0; p_argv = ecif->avalue; /* If cif->flags is struct then we know it's not passed in registers */ if(ecif->cif->flags == FFI_TYPE_STRUCT) { *(void**)reg_base = ecif->rvalue; reg_mask |= 1; } for(i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) { size_t z = (*p_arg)->size; int alignment = (*p_arg)->alignment; int type = (*p_arg)->type; char *addr = 0; if(z % 4 != 0) z += (4 - z % 4); if(reg_mask != 0x1f) { if(pass_struct_on_stack(*p_arg)) { addr = stack_base + stack_offset; stack_offset += z; } else if(z == sizeof(int)) { char index = 0; while((reg_mask >> index) & 1) index++; addr = reg_base + (index * 4); reg_mask |= (1 << index); } else if(z == 2 * sizeof(int)) { if(!((reg_mask >> 1) & 1)) { addr = reg_base + 4; reg_mask |= (3 << 1); } else if(!((reg_mask >> 3) & 1)) { addr = reg_base + 12; reg_mask |= (3 << 3); } } } if(!addr) { addr = stack_base + stack_offset; stack_offset += z; } if(type == FFI_TYPE_STRUCT && (*p_arg)->elements[1] == NULL) type = (*p_arg)->elements[0]->type; switch(type) { case FFI_TYPE_UINT8: *(unsigned int *)addr = (unsigned int)*(UINT8 *)(*p_argv); break; case FFI_TYPE_SINT8: *(signed int *)addr = (signed int)*(SINT8 *)(*p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *)addr = (unsigned int)*(UINT16 *)(*p_argv); break; case FFI_TYPE_SINT16: *(signed int *)addr = (signed int)*(SINT16 *)(*p_argv); break; default: memcpy(addr, *p_argv, z); } p_argv++; } #ifdef DEBUG /* Debugging */ for(i = 0; i < 5; i++) { if((reg_mask & (1 << i)) == 0) printf("r%d: (unused)\n", 12 - i); else printf("r%d: 0x%08x\n", 12 - i, ((unsigned int*)reg_base)[i]); } for(i = 0; i < stack_offset / 4; i++) { printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack_base)[i]); } #endif } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* Round the stack up to a multiple of 8 bytes. This isn't needed * everywhere, but it is on some platforms, and it doesn't harm * anything when it isn't needed. */ cif->bytes = (cif->bytes + 7) & ~7; /* Flag to indicate that he return value is in fact a struct */ cif->rstruct_flag = 0; /* Set the return type flag */ switch(cif->rtype->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: cif->flags = (unsigned)FFI_TYPE_UINT8; break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: cif->flags = (unsigned)FFI_TYPE_UINT16; break; case FFI_TYPE_FLOAT: case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: cif->flags = (unsigned)FFI_TYPE_UINT32; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = (unsigned)FFI_TYPE_UINT64; break; case FFI_TYPE_STRUCT: cif->rstruct_flag = 1; if(!pass_struct_on_stack(cif->rtype)) { if(cif->rtype->size <= 1) cif->flags = (unsigned)FFI_TYPE_UINT8; else if(cif->rtype->size <= 2) cif->flags = (unsigned)FFI_TYPE_UINT16; else if(cif->rtype->size <= 4) cif->flags = (unsigned)FFI_TYPE_UINT32; else if(cif->rtype->size <= 8) cif->flags = (unsigned)FFI_TYPE_UINT64; else cif->flags = (unsigned)cif->rtype->type; } else cif->flags = (unsigned)cif->rtype->type; break; default: cif->flags = (unsigned)cif->rtype->type; break; } return FFI_OK; } void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; unsigned int size = 0, i = 0; ffi_type **p_arg; ecif.cif = cif; ecif.avalue = avalue; for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) size += (*p_arg)->size + (4 - (*p_arg)->size % 4); /* If the return value is a struct and we don't have a return value * address then we need to make one */ /* If cif->flags is struct then it's not suitable for registers */ if((rvalue == NULL) && (cif->flags == FFI_TYPE_STRUCT)) ecif.rvalue = alloca(cif->rtype->size); else ecif.rvalue = rvalue; switch(cif->abi) { case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, size, cif->flags, ecif.rvalue, cif->rstruct_flag, fn); break; default: FFI_ASSERT(0); break; } } static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, ffi_cif *cif) { register unsigned int i, reg_mask = 0; register void **p_argv; register ffi_type **p_arg; register char *reg_base = stack; register char *stack_base = stack + 20; register unsigned int stack_offset = 0; #ifdef DEBUG /* Debugging */ for(i = 0; i < cif->nargs + 7; i++) { printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack)[i]); } #endif /* If cif->flags is struct then we know it's not passed in registers */ if(cif->flags == FFI_TYPE_STRUCT) { *rvalue = *(void **)reg_base; reg_mask |= 1; } p_argv = avalue; for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) { size_t z = (*p_arg)->size; int alignment = (*p_arg)->alignment; *p_argv = 0; if(z % 4 != 0) z += (4 - z % 4); if(reg_mask != 0x1f) { if(pass_struct_on_stack(*p_arg)) { *p_argv = (void*)stack_base + stack_offset; stack_offset += z; } else if(z <= sizeof(int)) { char index = 0; while((reg_mask >> index) & 1) index++; *p_argv = (void*)reg_base + (index * 4); reg_mask |= (1 << index); } else if(z == 2 * sizeof(int)) { if(!((reg_mask >> 1) & 1)) { *p_argv = (void*)reg_base + 4; reg_mask |= (3 << 1); } else if(!((reg_mask >> 3) & 1)) { *p_argv = (void*)reg_base + 12; reg_mask |= (3 << 3); } } } if(!*p_argv) { *p_argv = (void*)stack_base + stack_offset; stack_offset += z; } if((*p_arg)->type != FFI_TYPE_STRUCT || (*p_arg)->elements[1] == NULL) { if(alignment == 1) **(unsigned int**)p_argv <<= 24; else if(alignment == 2) **(unsigned int**)p_argv <<= 16; } p_argv++; } #ifdef DEBUG /* Debugging */ for(i = 0; i < cif->nargs; i++) { printf("sp+%d: 0x%08x\n", i*4, *(((unsigned int**)avalue)[i])); } #endif } /* This function is jumped to by the trampoline */ unsigned int ffi_closure_SYSV_inner(ffi_closure *closure, void **respp, void *args) { ffi_cif *cif; void **arg_area; unsigned int i, size = 0; ffi_type **p_arg; cif = closure->cif; for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) size += (*p_arg)->size + (4 - (*p_arg)->size % 4); arg_area = (void **)alloca(size); /* this call will initialize ARG_AREA, such that each element in that * array points to the corresponding value on the stack; and if the * function returns a structure, it will re-set RESP to point to the * structure return address. */ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); (closure->fun)(cif, *respp, arg_area, closure->user_data); return cif->flags; } ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]); unsigned int __fun = (unsigned int)(&ffi_closure_SYSV); unsigned int __ctx = (unsigned int)(codeloc); unsigned int __rstruct_flag = (unsigned int)(cif->rstruct_flag); unsigned int __inner = (unsigned int)(&ffi_closure_SYSV_inner); *(unsigned int*) &__tramp[0] = 0xebcd1f00; /* pushm r8-r12 */ *(unsigned int*) &__tramp[4] = 0xfefc0010; /* ld.w r12, pc[16] */ *(unsigned int*) &__tramp[8] = 0xfefb0010; /* ld.w r11, pc[16] */ *(unsigned int*) &__tramp[12] = 0xfefa0010; /* ld.w r10, pc[16] */ *(unsigned int*) &__tramp[16] = 0xfeff0010; /* ld.w pc, pc[16] */ *(unsigned int*) &__tramp[20] = __ctx; *(unsigned int*) &__tramp[24] = __rstruct_flag; *(unsigned int*) &__tramp[28] = __inner; *(unsigned int*) &__tramp[32] = __fun; syscall(__NR_cacheflush, 0, (&__tramp[0]), 36); closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } polyml-5.7.1/libffi/src/avr32/sysv.S0000644000175000017500000001135013204034553016106 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2009 Bradley Smith AVR32 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include /* r12: ffi_prep_args * r11: &ecif * r10: size * r9: cif->flags * r8: ecif.rvalue * sp+0: cif->rstruct_flag * sp+4: fn */ .text .align 1 .globl ffi_call_SYSV .type ffi_call_SYSV, @function ffi_call_SYSV: stm --sp, r0,r1,lr stm --sp, r8-r12 mov r0, sp /* Make room for all of the new args. */ sub sp, r10 /* Pad to make way for potential skipped registers */ sub sp, 20 /* Call ffi_prep_args(stack, &ecif). */ /* r11 already set */ mov r1, r12 mov r12, sp icall r1 /* Save new argument size */ mov r1, r12 /* Move first 5 parameters in registers. */ ldm sp++, r8-r12 /* call (fn) (...). */ ld.w r1, r0[36] icall r1 /* Remove the space we pushed for the args. */ mov sp, r0 /* Load r1 with the rstruct flag. */ ld.w r1, sp[32] /* Load r9 with the return type code. */ ld.w r9, sp[12] /* Load r8 with the return value pointer. */ ld.w r8, sp[16] /* If the return value pointer is NULL, assume no return value. */ cp.w r8, 0 breq .Lend /* Check if return type is actually a struct */ cp.w r1, 0 breq 1f /* Return 8bit */ cp.w r9, FFI_TYPE_UINT8 breq .Lstore8 /* Return 16bit */ cp.w r9, FFI_TYPE_UINT16 breq .Lstore16 1: /* Return 32bit */ cp.w r9, FFI_TYPE_UINT32 breq .Lstore32 cp.w r9, FFI_TYPE_UINT16 breq .Lstore32 cp.w r9, FFI_TYPE_UINT8 breq .Lstore32 /* Return 64bit */ cp.w r9, FFI_TYPE_UINT64 breq .Lstore64 /* Didn't match anything */ bral .Lend .Lstore64: st.w r8[0], r11 st.w r8[4], r10 bral .Lend .Lstore32: st.w r8[0], r12 bral .Lend .Lstore16: st.h r8[0], r12 bral .Lend .Lstore8: st.b r8[0], r12 bral .Lend .Lend: sub sp, -20 ldm sp++, r0,r1,pc .size ffi_call_SYSV, . - ffi_call_SYSV /* r12: __ctx * r11: __rstruct_flag * r10: __inner */ .align 1 .globl ffi_closure_SYSV .type ffi_closure_SYSV, @function ffi_closure_SYSV: stm --sp, r0,lr mov r0, r11 mov r8, r10 sub r10, sp, -8 sub sp, 12 st.w sp[8], sp sub r11, sp, -8 icall r8 /* Check if return type is actually a struct */ cp.w r0, 0 breq 1f /* Return 8bit */ cp.w r12, FFI_TYPE_UINT8 breq .Lget8 /* Return 16bit */ cp.w r12, FFI_TYPE_UINT16 breq .Lget16 1: /* Return 32bit */ cp.w r12, FFI_TYPE_UINT32 breq .Lget32 cp.w r12, FFI_TYPE_UINT16 breq .Lget32 cp.w r12, FFI_TYPE_UINT8 breq .Lget32 /* Return 64bit */ cp.w r12, FFI_TYPE_UINT64 breq .Lget64 /* Didn't match anything */ bral .Lclend .Lget64: ld.w r11, sp[0] ld.w r10, sp[4] bral .Lclend .Lget32: ld.w r12, sp[0] bral .Lclend .Lget16: ld.uh r12, sp[0] bral .Lclend .Lget8: ld.ub r12, sp[0] bral .Lclend .Lclend: sub sp, -12 ldm sp++, r0,lr sub sp, -20 mov pc, lr .size ffi_closure_SYSV, . - ffi_closure_SYSV #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/vax/0000755000175000017500000000000013204034553014617 5ustar daviddavidpolyml-5.7.1/libffi/src/vax/ffitarget.h0000644000175000017500000000314613204034553016747 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * vax Foreign Function Interface */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_ELFBSD, FFI_DEFAULT_ABI = FFI_ELFBSD, FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 15 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/vax/ffi.c0000644000175000017500000001425613204034553015537 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * vax Foreign Function Interface * * This file attempts to provide all the FFI entry points which can reliably * be implemented in C. */ #include #include #include #include #define CIF_FLAGS_CHAR 1 /* for struct only */ #define CIF_FLAGS_SHORT 2 /* for struct only */ #define CIF_FLAGS_INT 4 #define CIF_FLAGS_DINT 8 /* * Foreign Function Interface API */ void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *, void (*) ()); void *ffi_prep_args (extended_cif *ecif, void *stack); void * ffi_prep_args (extended_cif *ecif, void *stack) { unsigned int i; void **p_argv; char *argp; ffi_type **p_arg; void *struct_value_ptr; argp = stack; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && !ecif->cif->flags) struct_value_ptr = ecif->rvalue; else struct_value_ptr = NULL; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) { size_t z; z = (*p_arg)->size; if (z < sizeof (int)) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; break; case FFI_TYPE_STRUCT: memcpy (argp, *p_argv, z); break; default: FFI_ASSERT (0); } z = sizeof (int); } else { memcpy (argp, *p_argv, z); /* Align if necessary. */ if ((sizeof(int) - 1) & z) z = ALIGN(z, sizeof(int)); } p_argv++; argp += z; } return struct_value_ptr; } ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = 0; break; case FFI_TYPE_STRUCT: if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && cif->rtype->elements[1]) { cif->flags = 0; break; } if (cif->rtype->size == sizeof (char)) cif->flags = CIF_FLAGS_CHAR; else if (cif->rtype->size == sizeof (short)) cif->flags = CIF_FLAGS_SHORT; else if (cif->rtype->size == sizeof (int)) cif->flags = CIF_FLAGS_INT; else if (cif->rtype->size == 2 * sizeof (int)) cif->flags = CIF_FLAGS_DINT; else cif->flags = 0; break; default: if (cif->rtype->size <= sizeof (int)) cif->flags = CIF_FLAGS_INT; else cif->flags = CIF_FLAGS_DINT; break; } return FFI_OK; } void ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if (rvalue == NULL && cif->rtype->type == FFI_TYPE_STRUCT && cif->flags == 0) ecif.rvalue = alloca (cif->rtype->size); else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_ELFBSD: ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } /* * Closure API */ void ffi_closure_elfbsd (void); void ffi_closure_struct_elfbsd (void); unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *); static void ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp) { unsigned int i; void **p_argv; ffi_type **p_arg; p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) { size_t z; z = (*p_arg)->size; *p_argv = stackp; /* Align if necessary */ if ((sizeof (int) - 1) & z) z = ALIGN(z, sizeof (int)); p_argv++; stackp += z; } } unsigned int ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack) { ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void **) alloca (cif->nargs * sizeof (void *)); ffi_prep_closure_elfbsd (cif, arg_area, stack); (closure->fun) (cif, resp, arg_area, closure->user_data); return cif->flags; } ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { char *tramp = (char *) codeloc; void *fn; FFI_ASSERT (cif->abi == FFI_ELFBSD); /* entry mask */ *(unsigned short *)(tramp + 0) = 0x0000; /* movl #closure, r0 */ tramp[2] = 0xd0; tramp[3] = 0x8f; *(unsigned int *)(tramp + 4) = (unsigned int) closure; tramp[8] = 0x50; if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags) fn = &ffi_closure_struct_elfbsd; else fn = &ffi_closure_elfbsd; /* jmpl #fn */ tramp[9] = 0x17; tramp[10] = 0xef; *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 - (unsigned int)tramp - 9 - 6; closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } polyml-5.7.1/libffi/src/vax/elfbsd.S0000644000175000017500000001020113204034553016174 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * vax Foreign Function Interface */ #define LIBFFI_ASM #include #include .text /* * void * %r0 * ffi_call_elfbsd(extended_cif *ecif, 4(%ap) * unsigned bytes, 8(%ap) * unsigned flags, 12(%ap) * void *rvalue, 16(%ap) * void (*fn)()); 20(%ap) */ .globl ffi_call_elfbsd .type ffi_call_elfbsd,@function .align 2 ffi_call_elfbsd: .word 0x00c # save R2 and R3 # Allocate stack space for the args subl2 8(%ap), %sp # Call ffi_prep_args pushl %sp pushl 4(%ap) calls $2, ffi_prep_args # Get function pointer movl 20(%ap), %r1 # Build a CALLS frame ashl $-2, 8(%ap), %r0 pushl %r0 # argument stack usage movl %sp, %r0 # future %ap # saved registers bbc $11, 0(%r1), 1f pushl %r11 1: bbc $10, 0(%r1), 1f pushl %r10 1: bbc $9, 0(%r1), 1f pushl %r9 1: bbc $8, 0(%r1), 1f pushl %r8 1: bbc $7, 0(%r1), 1f pushl %r7 1: bbc $6, 0(%r1), 1f pushl %r6 1: bbc $5, 0(%r1), 1f pushl %r5 1: bbc $4, 0(%r1), 1f pushl %r4 1: bbc $3, 0(%r1), 1f pushl %r3 1: bbc $2, 0(%r1), 1f pushl %r2 1: pushal 9f pushl %fp pushl %ap movl 16(%ap), %r3 # struct return address, if needed movl %r0, %ap movzwl 4(%fp), %r0 # previous PSW, without the saved registers mask bisl2 $0x20000000, %r0 # calls frame movzwl 0(%r1), %r2 bicw2 $0xf003, %r2 # only keep R11-R2 ashl $16, %r2, %r2 bisl2 %r2, %r0 # saved register mask of the called function pushl %r0 pushl $0 movl %sp, %fp # Invoke the function pushal 2(%r1) # skip procedure entry mask movl %r3, %r1 bicpsw $0x000f rsb 9: # Copy return value if necessary tstl 16(%ap) jeql 9f movl 16(%ap), %r2 bbc $0, 12(%ap), 1f # CIF_FLAGS_CHAR movb %r0, 0(%r2) brb 9f 1: bbc $1, 12(%ap), 1f # CIF_FLAGS_SHORT movw %r0, 0(%r2) brb 9f 1: bbc $2, 12(%ap), 1f # CIF_FLAGS_INT movl %r0, 0(%r2) brb 9f 1: bbc $3, 12(%ap), 1f # CIF_FLAGS_DINT movq %r0, 0(%r2) brb 9f 1: movl %r1, %r0 # might have been a struct #brb 9f 9: ret /* * ffi_closure_elfbsd(void); * invoked with %r0: ffi_closure *closure */ .globl ffi_closure_elfbsd .type ffi_closure_elfbsd, @function .align 2 ffi_closure_elfbsd: .word 0 # Allocate room on stack for return value subl2 $8, %sp # Invoke the closure function pushal 4(%ap) # calling stack pushal 4(%sp) # return value pushl %r0 # closure calls $3, ffi_closure_elfbsd_inner # Copy return value if necessary bitb $1, %r0 # CIF_FLAGS_CHAR beql 1f movb 0(%sp), %r0 brb 9f 1: bitb $2, %r0 # CIF_FLAGS_SHORT beql 1f movw 0(%sp), %r0 brb 9f 1: bitb $4, %r0 # CIF_FLAGS_INT beql 1f movl 0(%sp), %r0 brb 9f 1: bitb $8, %r0 # CIF_FLAGS_DINT beql 1f movq 0(%sp), %r0 #brb 9f 1: 9: ret /* * ffi_closure_struct_elfbsd(void); * invoked with %r0: ffi_closure *closure * %r1: struct return address */ .globl ffi_closure_struct_elfbsd .type ffi_closure_struct_elfbsd, @function .align 2 ffi_closure_struct_elfbsd: .word 0 # Invoke the closure function pushal 4(%ap) # calling stack pushl %r1 # return value pushl %r0 # closure calls $3, ffi_closure_elfbsd_inner ret polyml-5.7.1/libffi/src/pa/0000755000175000017500000000000013204034553014421 5ustar daviddavidpolyml-5.7.1/libffi/src/pa/ffitarget.h0000644000175000017500000000505013204034553016545 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for hppa. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, #ifdef PA_LINUX FFI_PA32, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_PA32 #endif #ifdef PA_HPUX FFI_PA32, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_PA32 #endif #ifdef PA64_HPUX #error "PA64_HPUX FFI is not yet implemented" FFI_PA64, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_PA64 #endif } ffi_abi; #endif #define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #ifdef PA_LINUX #define FFI_TRAMPOLINE_SIZE 32 #else #define FFI_TRAMPOLINE_SIZE 40 #endif #define FFI_TYPE_SMALL_STRUCT2 -1 #define FFI_TYPE_SMALL_STRUCT3 -2 #define FFI_TYPE_SMALL_STRUCT4 -3 #define FFI_TYPE_SMALL_STRUCT5 -4 #define FFI_TYPE_SMALL_STRUCT6 -5 #define FFI_TYPE_SMALL_STRUCT7 -6 #define FFI_TYPE_SMALL_STRUCT8 -7 #endif polyml-5.7.1/libffi/src/pa/ffi.c0000644000175000017500000004711313204034553015337 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - (c) 2011 Anthony Green (c) 2008 Red Hat, Inc. (c) 2006 Free Software Foundation, Inc. (c) 2003-2004 Randolph Chung HPPA Foreign Function Interface HP-UX PA ABI support Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) #define MIN_STACK_SIZE 64 #define FIRST_ARG_SLOT 9 #define DEBUG_LEVEL 0 #define fldw(addr, fpreg) \ __asm__ volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) #define fstw(fpreg, addr) \ __asm__ volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) #define fldd(addr, fpreg) \ __asm__ volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) #define fstd(fpreg, addr) \ __asm__ volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) #define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) static inline int ffi_struct_type(ffi_type *t) { size_t sz = t->size; /* Small structure results are passed in registers, larger ones are passed by pointer. Note that small structures of size 2, 4 and 8 differ from the corresponding integer types in that they have different alignment requirements. */ if (sz <= 1) return FFI_TYPE_UINT8; else if (sz == 2) return FFI_TYPE_SMALL_STRUCT2; else if (sz == 3) return FFI_TYPE_SMALL_STRUCT3; else if (sz == 4) return FFI_TYPE_SMALL_STRUCT4; else if (sz == 5) return FFI_TYPE_SMALL_STRUCT5; else if (sz == 6) return FFI_TYPE_SMALL_STRUCT6; else if (sz == 7) return FFI_TYPE_SMALL_STRUCT7; else if (sz <= 8) return FFI_TYPE_SMALL_STRUCT8; else return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ } /* PA has a downward growing stack, which looks like this: Offset [ Variable args ] SP = (4*(n+9)) arg word N ... SP-52 arg word 4 [ Fixed args ] SP-48 arg word 3 SP-44 arg word 2 SP-40 arg word 1 SP-36 arg word 0 [ Frame marker ] ... SP-20 RP SP-4 previous SP The first four argument words on the stack are reserved for use by the callee. Instead, the general and floating registers replace the first four argument slots. Non FP arguments are passed solely in the general registers. FP arguments are passed in both general and floating registers when using libffi. Non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23. Non-FP 64-bit args are passed in register pairs, starting on an odd numbered register (i.e. r25+r26 and r23+r24). FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L. FP 64-bit arguments are passed in fr5 and fr7. The registers are allocated in the same manner as stack slots. This allows the callee to save its arguments on the stack if necessary: arg word 3 -> gr23 or fr7L arg word 2 -> gr24 or fr6L or fr7R arg word 1 -> gr25 or fr5L arg word 0 -> gr26 or fr4L or fr5R Note that fr4R and fr6R are never used for arguments (i.e., doubles are not passed in fr4 or fr6). The rest of the arguments are passed on the stack starting at SP-52, but 64-bit arguments need to be aligned to an 8-byte boundary This means we can have holes either in the register allocation, or in the stack. */ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments The following code will put everything into the stack frame (which was allocated by the asm routine), and on return the asm routine will load the arguments that should be passed by register into the appropriate registers NOTE: We load floating point args in this function... that means we assume gcc will not mess with fp regs in here. */ void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes) { register unsigned int i; register ffi_type **p_arg; register void **p_argv; unsigned int slot = FIRST_ARG_SLOT; char *dest_cpy; size_t len; debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, ecif, bytes); p_arg = ecif->cif->arg_types; p_argv = ecif->avalue; for (i = 0; i < ecif->cif->nargs; i++) { int type = (*p_arg)->type; switch (type) { case FFI_TYPE_SINT8: *(SINT32 *)(stack - slot) = *(SINT8 *)(*p_argv); break; case FFI_TYPE_UINT8: *(UINT32 *)(stack - slot) = *(UINT8 *)(*p_argv); break; case FFI_TYPE_SINT16: *(SINT32 *)(stack - slot) = *(SINT16 *)(*p_argv); break; case FFI_TYPE_UINT16: *(UINT32 *)(stack - slot) = *(UINT16 *)(*p_argv); break; case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), slot); *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: /* Align slot for 64-bit type. */ slot += (slot & 1) ? 1 : 2; *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); break; case FFI_TYPE_FLOAT: /* First 4 args go in fr4L - fr7L. */ debug(3, "Storing UINT32(float) in slot %u\n", slot); *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); switch (slot - FIRST_ARG_SLOT) { /* First 4 args go in fr4L - fr7L. */ case 0: fldw(stack - slot, fr4); break; case 1: fldw(stack - slot, fr5); break; case 2: fldw(stack - slot, fr6); break; case 3: fldw(stack - slot, fr7); break; } break; case FFI_TYPE_DOUBLE: /* Align slot for 64-bit type. */ slot += (slot & 1) ? 1 : 2; debug(3, "Storing UINT64(double) at slot %u\n", slot); *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); switch (slot - FIRST_ARG_SLOT) { /* First 2 args go in fr5, fr7. */ case 1: fldd(stack - slot, fr5); break; case 3: fldd(stack - slot, fr7); break; } break; #ifdef PA_HPUX case FFI_TYPE_LONGDOUBLE: /* Long doubles are passed in the same manner as structures larger than 8 bytes. */ *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); break; #endif case FFI_TYPE_STRUCT: /* Structs smaller or equal than 4 bytes are passed in one register. Structs smaller or equal 8 bytes are passed in two registers. Larger structures are passed by pointer. */ len = (*p_arg)->size; if (len <= 4) { dest_cpy = (char *)(stack - slot) + 4 - len; memcpy(dest_cpy, (char *)*p_argv, len); } else if (len <= 8) { slot += (slot & 1) ? 1 : 2; dest_cpy = (char *)(stack - slot) + 8 - len; memcpy(dest_cpy, (char *)*p_argv, len); } else *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); break; default: FFI_ASSERT(0); } slot++; p_arg++; p_argv++; } /* Make sure we didn't mess up and scribble on the stack. */ { unsigned int n; debug(5, "Stack setup:\n"); for (n = 0; n < (bytes + 3) / 4; n++) { if ((n%4) == 0) { debug(5, "\n%08x: ", (unsigned int)(stack - n)); } debug(5, "%08x ", *(stack - n)); } debug(5, "\n"); } FFI_ASSERT(slot * 4 <= bytes); return; } static void ffi_size_stack_pa32(ffi_cif *cif) { ffi_type **ptr; int i; int z = 0; /* # stack slots */ for (ptr = cif->arg_types, i = 0; i < cif->nargs; ptr++, i++) { int type = (*ptr)->type; switch (type) { case FFI_TYPE_DOUBLE: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: z += 2 + (z & 1); /* must start on even regs, so we may waste one */ break; #ifdef PA_HPUX case FFI_TYPE_LONGDOUBLE: #endif case FFI_TYPE_STRUCT: z += 1; /* pass by ptr, callee will copy */ break; default: /* <= 32-bit values */ z++; } } /* We can fit up to 6 args in the default 64-byte stack frame, if we need more, we need more stack. */ if (z <= 6) cif->bytes = MIN_STACK_SIZE; /* min stack size */ else cif->bytes = 64 + ROUND_UP((z - 6) * sizeof(UINT32), MIN_STACK_SIZE); debug(3, "Calculated stack size is %u bytes\n", cif->bytes); } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags = (unsigned) cif->rtype->type; break; #ifdef PA_HPUX case FFI_TYPE_LONGDOUBLE: /* Long doubles are treated like a structure. */ cif->flags = FFI_TYPE_STRUCT; break; #endif case FFI_TYPE_STRUCT: /* For the return type we have to check the size of the structures. If the size is smaller or equal 4 bytes, the result is given back in one register. If the size is smaller or equal 8 bytes than we return the result in two registers. But if the size is bigger than 8 bytes, we work with pointers. */ cif->flags = ffi_struct_type(cif->rtype); break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: cif->flags = FFI_TYPE_UINT64; break; default: cif->flags = FFI_TYPE_INT; break; } /* Lucky us, because of the unique PA ABI we get to do our own stack sizing. */ switch (cif->abi) { case FFI_PA32: ffi_size_stack_pa32(cif); break; default: FFI_ASSERT(0); break; } return FFI_OK; } extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if (rvalue == NULL #ifdef PA_HPUX && (cif->rtype->type == FFI_TYPE_STRUCT || cif->rtype->type == FFI_TYPE_LONGDOUBLE)) #else && cif->rtype->type == FFI_TYPE_STRUCT) #endif { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_PA32: debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } } #if FFI_CLOSURES /* This is more-or-less an inverse of ffi_call -- we have arguments on the stack, and we need to fill them into a cif structure and invoke the user function. This really ought to be in asm to make sure the compiler doesn't do things we don't expect. */ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) { ffi_cif *cif; void **avalue; void *rvalue; UINT32 ret[2]; /* function can return up to 64-bits in registers */ ffi_type **p_arg; char *tmp; int i, avn; unsigned int slot = FIRST_ARG_SLOT; register UINT32 r28 asm("r28"); cif = closure->cif; /* If returning via structure, callee will write to our pointer. */ if (cif->flags == FFI_TYPE_STRUCT) rvalue = (void *)r28; else rvalue = &ret[0]; avalue = (void **)alloca(cif->nargs * FFI_SIZEOF_ARG); avn = cif->nargs; p_arg = cif->arg_types; for (i = 0; i < avn; i++) { int type = (*p_arg)->type; switch (type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: avalue[i] = (char *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: slot += (slot & 1) ? 1 : 2; avalue[i] = (void *)(stack - slot); break; case FFI_TYPE_FLOAT: #ifdef PA_LINUX /* The closure call is indirect. In Linux, floating point arguments in indirect calls with a prototype are passed in the floating point registers instead of the general registers. So, we need to replace what was previously stored in the current slot with the value in the corresponding floating point register. */ switch (slot - FIRST_ARG_SLOT) { case 0: fstw(fr4, (void *)(stack - slot)); break; case 1: fstw(fr5, (void *)(stack - slot)); break; case 2: fstw(fr6, (void *)(stack - slot)); break; case 3: fstw(fr7, (void *)(stack - slot)); break; } #endif avalue[i] = (void *)(stack - slot); break; case FFI_TYPE_DOUBLE: slot += (slot & 1) ? 1 : 2; #ifdef PA_LINUX /* See previous comment for FFI_TYPE_FLOAT. */ switch (slot - FIRST_ARG_SLOT) { case 1: fstd(fr5, (void *)(stack - slot)); break; case 3: fstd(fr7, (void *)(stack - slot)); break; } #endif avalue[i] = (void *)(stack - slot); break; #ifdef PA_HPUX case FFI_TYPE_LONGDOUBLE: /* Long doubles are treated like a big structure. */ avalue[i] = (void *) *(stack - slot); break; #endif case FFI_TYPE_STRUCT: /* Structs smaller or equal than 4 bytes are passed in one register. Structs smaller or equal 8 bytes are passed in two registers. Larger structures are passed by pointer. */ if((*p_arg)->size <= 4) { avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; } else if ((*p_arg)->size <= 8) { slot += (slot & 1) ? 1 : 2; avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - (*p_arg)->size; } else avalue[i] = (void *) *(stack - slot); break; default: FFI_ASSERT(0); } slot++; p_arg++; } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avalue, closure->user_data); debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", ret[0], ret[1]); /* Store the result using the lower 2 bytes of the flags. */ switch (cif->flags) { case FFI_TYPE_UINT8: *(stack - FIRST_ARG_SLOT) = (UINT8)(ret[0] >> 24); break; case FFI_TYPE_SINT8: *(stack - FIRST_ARG_SLOT) = (SINT8)(ret[0] >> 24); break; case FFI_TYPE_UINT16: *(stack - FIRST_ARG_SLOT) = (UINT16)(ret[0] >> 16); break; case FFI_TYPE_SINT16: *(stack - FIRST_ARG_SLOT) = (SINT16)(ret[0] >> 16); break; case FFI_TYPE_INT: case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: *(stack - FIRST_ARG_SLOT) = ret[0]; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: *(stack - FIRST_ARG_SLOT) = ret[0]; *(stack - FIRST_ARG_SLOT - 1) = ret[1]; break; case FFI_TYPE_DOUBLE: fldd(rvalue, fr4); break; case FFI_TYPE_FLOAT: fldw(rvalue, fr4); break; case FFI_TYPE_STRUCT: /* Don't need a return value, done by caller. */ break; case FFI_TYPE_SMALL_STRUCT2: case FFI_TYPE_SMALL_STRUCT3: case FFI_TYPE_SMALL_STRUCT4: tmp = (void*)(stack - FIRST_ARG_SLOT); tmp += 4 - cif->rtype->size; memcpy((void*)tmp, &ret[0], cif->rtype->size); break; case FFI_TYPE_SMALL_STRUCT5: case FFI_TYPE_SMALL_STRUCT6: case FFI_TYPE_SMALL_STRUCT7: case FFI_TYPE_SMALL_STRUCT8: { unsigned int ret2[2]; int off; /* Right justify ret[0] and ret[1] */ switch (cif->flags) { case FFI_TYPE_SMALL_STRUCT5: off = 3; break; case FFI_TYPE_SMALL_STRUCT6: off = 2; break; case FFI_TYPE_SMALL_STRUCT7: off = 1; break; default: off = 0; break; } memset (ret2, 0, sizeof (ret2)); memcpy ((char *)ret2 + off, ret, 8 - off); *(stack - FIRST_ARG_SLOT) = ret2[0]; *(stack - FIRST_ARG_SLOT - 1) = ret2[1]; } break; case FFI_TYPE_POINTER: case FFI_TYPE_VOID: break; default: debug(0, "assert with cif->flags: %d\n",cif->flags); FFI_ASSERT(0); break; } return FFI_OK; } /* Fill in a closure to refer to the specified fun and user_data. cif specifies the argument and result types for fun. The cif must already be prep'ed. */ extern void ffi_closure_pa32(void); ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { UINT32 *tramp = (UINT32 *)(closure->tramp); #ifdef PA_HPUX UINT32 *tmp; #endif if (cif->abi != FFI_PA32) return FFI_BAD_ABI; /* Make a small trampoline that will branch to our handler function. Use PC-relative addressing. */ #ifdef PA_LINUX tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1 ; load plabel */ tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ tramp[5] = 0xeac0c000; /* bv%r0(%r22) ; branch to handler */ tramp[6] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ tramp[7] = ((UINT32)(ffi_closure_pa32) & ~2); /* Flush d/icache -- have to flush up 2 two lines because of alignment. */ __asm__ volatile( "fdc 0(%0)\n\t" "fdc %1(%0)\n\t" "fic 0(%%sr4, %0)\n\t" "fic %1(%%sr4, %0)\n\t" "sync\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n" : : "r"((unsigned long)tramp & ~31), "r"(32 /* stride */) : "memory"); #endif #ifdef PA_HPUX tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ tramp[2] = 0x4aa10038; /* ldw 28(%r21),%r1 ; load plabel */ tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ tramp[5] = 0x02c010b4; /* ldsid (%r22),%r20 ; load space id */ tramp[6] = 0x00141820; /* mtsp %r20,%sr0 ; into %sr0 */ tramp[7] = 0xe2c00000; /* be 0(%sr0,%r22) ; branch to handler */ tramp[8] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ tramp[9] = ((UINT32)(ffi_closure_pa32) & ~2); /* Flush d/icache -- have to flush three lines because of alignment. */ __asm__ volatile( "copy %1,%0\n\t" "fdc,m %2(%0)\n\t" "fdc,m %2(%0)\n\t" "fdc,m %2(%0)\n\t" "ldsid (%1),%0\n\t" "mtsp %0,%%sr0\n\t" "copy %1,%0\n\t" "fic,m %2(%%sr0,%0)\n\t" "fic,m %2(%%sr0,%0)\n\t" "fic,m %2(%%sr0,%0)\n\t" "sync\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n" : "=&r" ((unsigned long)tmp) : "r" ((unsigned long)tramp & ~31), "r" (32/* stride */) : "memory"); #endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } #endif polyml-5.7.1/libffi/src/pa/hpux32.S0000644000175000017500000002201213204034553015673 0ustar daviddavid/* ----------------------------------------------------------------------- hpux32.S - Copyright (c) 2006 Free Software Foundation, Inc. (c) 2008 Red Hat, Inc. based on src/pa/linux.S HP-UX PA Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .LEVEL 1.1 .SPACE $PRIVATE$ .IMPORT $global$,DATA .IMPORT $$dyncall,MILLICODE .SUBSPA $DATA$ .align 4 /* void ffi_call_pa32(void (*)(char *, extended_cif *), extended_cif *ecif, unsigned bytes, unsigned flags, unsigned *rvalue, void (*fn)(void)); */ .export ffi_call_pa32,ENTRY,PRIV_LEV=3 .import ffi_prep_args_pa32,CODE .SPACE $TEXT$ .SUBSPA $CODE$ .align 4 L$FB1 ffi_call_pa32 .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 .entry stw %rp, -20(%sp) copy %r3, %r1 L$CFI11 copy %sp, %r3 L$CFI12 /* Setup the stack for calling prep_args... We want the stack to look like this: [ Previous stack ] <- %r3 [ 64-bytes register save area ] <- %r4 [ Stack space for actual call, passed as ] <- %arg0 [ arg0 to ffi_prep_args_pa32 ] [ Stack for calling prep_args ] <- %sp */ stwm %r1, 64(%sp) stw %r4, 12(%r3) L$CFI13 copy %sp, %r4 addl %arg2, %r4, %arg0 ; arg stack stw %arg3, -48(%r3) ; save flags we need it later /* Call prep_args: %arg0(stack) -- set up above %arg1(ecif) -- same as incoming param %arg2(bytes) -- same as incoming param */ bl ffi_prep_args_pa32,%r2 ldo 64(%arg0), %sp ldo -64(%sp), %sp /* now %sp should point where %arg0 was pointing. */ /* Load the arguments that should be passed in registers The fp args are loaded by the prep_args function. */ ldw -36(%sp), %arg0 ldw -40(%sp), %arg1 ldw -44(%sp), %arg2 ldw -48(%sp), %arg3 /* in case the function is going to return a structure we need to give it a place to put the result. */ ldw -52(%r3), %ret0 ; %ret0 <- rvalue ldw -56(%r3), %r22 ; %r22 <- function to call bl $$dyncall, %r31 ; Call the user function copy %r31, %rp /* Prepare to store the result; we need to recover flags and rvalue. */ ldw -48(%r3), %r21 ; r21 <- flags ldw -52(%r3), %r20 ; r20 <- rvalue /* Store the result according to the return type. The most likely types should come first. */ L$checkint comib,<>,n FFI_TYPE_INT, %r21, L$checkint8 b L$done stw %ret0, 0(%r20) L$checkint8 comib,<>,n FFI_TYPE_UINT8, %r21, L$checkint16 b L$done stb %ret0, 0(%r20) L$checkint16 comib,<>,n FFI_TYPE_UINT16, %r21, L$checkdbl b L$done sth %ret0, 0(%r20) L$checkdbl comib,<>,n FFI_TYPE_DOUBLE, %r21, L$checkfloat b L$done fstd %fr4,0(%r20) L$checkfloat comib,<>,n FFI_TYPE_FLOAT, %r21, L$checkll b L$done fstw %fr4L,0(%r20) L$checkll comib,<>,n FFI_TYPE_UINT64, %r21, L$checksmst2 stw %ret0, 0(%r20) b L$done stw %ret1, 4(%r20) L$checksmst2 comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, L$checksmst3 /* 2-byte structs are returned in ret0 as ????xxyy. */ extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret0, 0(%r20) L$checksmst3 comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, L$checksmst4 /* 3-byte structs are returned in ret0 as ??xxyyzz. */ extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret0, 0(%r20) L$checksmst4 comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, L$checksmst5 /* 4-byte structs are returned in ret0 as wwxxyyzz. */ extru %ret0, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret0, 0(%r20) L$checksmst5 comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, L$checksmst6 /* 5 byte values are returned right justified: ret0 ret1 5: ??????aa bbccddee */ stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret1, 0(%r20) L$checksmst6 comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, L$checksmst7 /* 6 byte values are returned right justified: ret0 ret1 6: ????aabb ccddeeff */ extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret1, 0(%r20) L$checksmst7 comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, L$checksmst8 /* 7 byte values are returned right justified: ret0 ret1 7: ??aabbcc ddeeffgg */ extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b L$done stb %ret1, 0(%r20) L$checksmst8 comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, L$done /* 8 byte values are returned right justified: ret0 ret1 8: aabbccdd eeffgghh */ extru %ret0, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) stb %ret1, 0(%r20) L$done /* all done, return */ copy %r4, %sp ; pop arg stack ldw 12(%r3), %r4 ldwm -64(%sp), %r3 ; .. and pop stack ldw -20(%sp), %rp bv %r0(%rp) nop .exit .procend L$FE1 /* void ffi_closure_pa32(void); Called with closure argument in %r21 */ .SPACE $TEXT$ .SUBSPA $CODE$ .export ffi_closure_pa32,ENTRY,PRIV_LEV=3,RTNVAL=GR .import ffi_closure_inner_pa32,CODE .align 4 L$FB2 ffi_closure_pa32 .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 .entry stw %rp, -20(%sp) copy %r3, %r1 L$CFI21 copy %sp, %r3 L$CFI22 stwm %r1, 64(%sp) /* Put arguments onto the stack and call ffi_closure_inner. */ stw %arg0, -36(%r3) stw %arg1, -40(%r3) stw %arg2, -44(%r3) stw %arg3, -48(%r3) copy %r21, %arg0 bl ffi_closure_inner_pa32, %r2 copy %r3, %arg1 ldwm -64(%sp), %r3 ldw -20(%sp), %rp ldw -36(%sp), %ret0 bv %r0(%rp) ldw -40(%sp), %ret1 .exit .procend L$FE2: .SPACE $PRIVATE$ .SUBSPA $DATA$ .align 4 .EXPORT _GLOBAL__F_ffi_call_pa32,DATA _GLOBAL__F_ffi_call_pa32 L$frame1: .word L$ECIE1-L$SCIE1 ;# Length of Common Information Entry L$SCIE1: .word 0x0 ;# CIE Identifier Tag .byte 0x1 ;# CIE Version .ascii "\0" ;# CIE Augmentation .uleb128 0x1 ;# CIE Code Alignment Factor .sleb128 4 ;# CIE Data Alignment Factor .byte 0x2 ;# CIE RA Column .byte 0xc ;# DW_CFA_def_cfa .uleb128 0x1e .uleb128 0x0 .align 4 L$ECIE1: L$SFDE1: .word L$EFDE1-L$ASFDE1 ;# FDE Length L$ASFDE1: .word L$ASFDE1-L$frame1 ;# FDE CIE offset .word L$FB1 ;# FDE initial location .word L$FE1-L$FB1 ;# FDE address range .byte 0x4 ;# DW_CFA_advance_loc4 .word L$CFI11-L$FB1 .byte 0x83 ;# DW_CFA_offset, column 0x3 .uleb128 0x0 .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] .uleb128 0x2 .sleb128 -5 .byte 0x4 ;# DW_CFA_advance_loc4 .word L$CFI12-L$CFI11 .byte 0xd ;# DW_CFA_def_cfa_register = r3 .uleb128 0x3 .byte 0x4 ;# DW_CFA_advance_loc4 .word L$CFI13-L$CFI12 .byte 0x84 ;# DW_CFA_offset, column 0x4 .uleb128 0x3 .align 4 L$EFDE1: L$SFDE2: .word L$EFDE2-L$ASFDE2 ;# FDE Length L$ASFDE2: .word L$ASFDE2-L$frame1 ;# FDE CIE offset .word L$FB2 ;# FDE initial location .word L$FE2-L$FB2 ;# FDE address range .byte 0x4 ;# DW_CFA_advance_loc4 .word L$CFI21-L$FB2 .byte 0x83 ;# DW_CFA_offset, column 0x3 .uleb128 0x0 .byte 0x11 ;# DW_CFA_offset_extended_sf .uleb128 0x2 .sleb128 -5 .byte 0x4 ;# DW_CFA_advance_loc4 .word L$CFI22-L$CFI21 .byte 0xd ;# DW_CFA_def_cfa_register = r3 .uleb128 0x3 .align 4 L$EFDE2: polyml-5.7.1/libffi/src/pa/linux.S0000644000175000017500000002174313204034553015713 0ustar daviddavid/* ----------------------------------------------------------------------- linux.S - (c) 2003-2004 Randolph Chung (c) 2008 Red Hat, Inc. HPPA Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .text .level 1.1 .align 4 /* void ffi_call_pa32(void (*)(char *, extended_cif *), extended_cif *ecif, unsigned bytes, unsigned flags, unsigned *rvalue, void (*fn)(void)); */ .export ffi_call_pa32,code .import ffi_prep_args_pa32,code .type ffi_call_pa32, @function .LFB1: ffi_call_pa32: .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 .entry stw %rp, -20(%sp) copy %r3, %r1 .LCFI11: copy %sp, %r3 .LCFI12: /* Setup the stack for calling prep_args... We want the stack to look like this: [ Previous stack ] <- %r3 [ 64-bytes register save area ] <- %r4 [ Stack space for actual call, passed as ] <- %arg0 [ arg0 to ffi_prep_args_pa32 ] [ Stack for calling prep_args ] <- %sp */ stwm %r1, 64(%sp) stw %r4, 12(%r3) .LCFI13: copy %sp, %r4 addl %arg2, %r4, %arg0 /* arg stack */ stw %arg3, -48(%r3) /* save flags; we need it later */ /* Call prep_args: %arg0(stack) -- set up above %arg1(ecif) -- same as incoming param %arg2(bytes) -- same as incoming param */ bl ffi_prep_args_pa32,%r2 ldo 64(%arg0), %sp ldo -64(%sp), %sp /* now %sp should point where %arg0 was pointing. */ /* Load the arguments that should be passed in registers The fp args were loaded by the prep_args function. */ ldw -36(%sp), %arg0 ldw -40(%sp), %arg1 ldw -44(%sp), %arg2 ldw -48(%sp), %arg3 /* in case the function is going to return a structure we need to give it a place to put the result. */ ldw -52(%r3), %ret0 /* %ret0 <- rvalue */ ldw -56(%r3), %r22 /* %r22 <- function to call */ bl $$dyncall, %r31 /* Call the user function */ copy %r31, %rp /* Prepare to store the result; we need to recover flags and rvalue. */ ldw -48(%r3), %r21 /* r21 <- flags */ ldw -52(%r3), %r20 /* r20 <- rvalue */ /* Store the result according to the return type. */ .Lcheckint: comib,<>,n FFI_TYPE_INT, %r21, .Lcheckint8 b .Ldone stw %ret0, 0(%r20) .Lcheckint8: comib,<>,n FFI_TYPE_UINT8, %r21, .Lcheckint16 b .Ldone stb %ret0, 0(%r20) .Lcheckint16: comib,<>,n FFI_TYPE_UINT16, %r21, .Lcheckdbl b .Ldone sth %ret0, 0(%r20) .Lcheckdbl: comib,<>,n FFI_TYPE_DOUBLE, %r21, .Lcheckfloat b .Ldone fstd %fr4,0(%r20) .Lcheckfloat: comib,<>,n FFI_TYPE_FLOAT, %r21, .Lcheckll b .Ldone fstw %fr4L,0(%r20) .Lcheckll: comib,<>,n FFI_TYPE_UINT64, %r21, .Lchecksmst2 stw %ret0, 0(%r20) b .Ldone stw %ret1, 4(%r20) .Lchecksmst2: comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, .Lchecksmst3 /* 2-byte structs are returned in ret0 as ????xxyy. */ extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret0, 0(%r20) .Lchecksmst3: comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, .Lchecksmst4 /* 3-byte structs are returned in ret0 as ??xxyyzz. */ extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret0, 0(%r20) .Lchecksmst4: comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, .Lchecksmst5 /* 4-byte structs are returned in ret0 as wwxxyyzz. */ extru %ret0, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret0, 0(%r20) .Lchecksmst5: comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, .Lchecksmst6 /* 5 byte values are returned right justified: ret0 ret1 5: ??????aa bbccddee */ stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret1, 0(%r20) .Lchecksmst6: comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, .Lchecksmst7 /* 6 byte values are returned right justified: ret0 ret1 6: ????aabb ccddeeff */ extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret1, 0(%r20) .Lchecksmst7: comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, .Lchecksmst8 /* 7 byte values are returned right justified: ret0 ret1 7: ??aabbcc ddeeffgg */ extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) b .Ldone stb %ret1, 0(%r20) .Lchecksmst8: comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, .Ldone /* 8 byte values are returned right justified: ret0 ret1 8: aabbccdd eeffgghh */ extru %ret0, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret0, 23, 8, %r22 stbs,ma %r22, 1(%r20) stbs,ma %ret0, 1(%r20) extru %ret1, 7, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 15, 8, %r22 stbs,ma %r22, 1(%r20) extru %ret1, 23, 8, %r22 stbs,ma %r22, 1(%r20) stb %ret1, 0(%r20) .Ldone: /* all done, return */ copy %r4, %sp /* pop arg stack */ ldw 12(%r3), %r4 ldwm -64(%sp), %r3 /* .. and pop stack */ ldw -20(%sp), %rp bv %r0(%rp) nop .exit .procend .LFE1: /* void ffi_closure_pa32(void); Called with closure argument in %r21 */ .export ffi_closure_pa32,code .import ffi_closure_inner_pa32,code .type ffi_closure_pa32, @function .LFB2: ffi_closure_pa32: .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 .entry stw %rp, -20(%sp) .LCFI20: copy %r3, %r1 .LCFI21: copy %sp, %r3 .LCFI22: stwm %r1, 64(%sp) /* Put arguments onto the stack and call ffi_closure_inner. */ stw %arg0, -36(%r3) stw %arg1, -40(%r3) stw %arg2, -44(%r3) stw %arg3, -48(%r3) copy %r21, %arg0 bl ffi_closure_inner_pa32, %r2 copy %r3, %arg1 ldwm -64(%sp), %r3 ldw -20(%sp), %rp ldw -36(%sp), %ret0 bv %r0(%r2) ldw -40(%sp), %ret1 .exit .procend .LFE2: .section ".eh_frame",EH_FRAME_FLAGS,@progbits .Lframe1: .word .LECIE1-.LSCIE1 ;# Length of Common Information Entry .LSCIE1: .word 0x0 ;# CIE Identifier Tag .byte 0x1 ;# CIE Version .ascii "\0" ;# CIE Augmentation .uleb128 0x1 ;# CIE Code Alignment Factor .sleb128 4 ;# CIE Data Alignment Factor .byte 0x2 ;# CIE RA Column .byte 0xc ;# DW_CFA_def_cfa .uleb128 0x1e .uleb128 0x0 .align 4 .LECIE1: .LSFDE1: .word .LEFDE1-.LASFDE1 ;# FDE Length .LASFDE1: .word .LASFDE1-.Lframe1 ;# FDE CIE offset .word .LFB1 ;# FDE initial location .word .LFE1-.LFB1 ;# FDE address range .byte 0x4 ;# DW_CFA_advance_loc4 .word .LCFI11-.LFB1 .byte 0x83 ;# DW_CFA_offset, column 0x3 .uleb128 0x0 .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] .uleb128 0x2 .sleb128 -5 .byte 0x4 ;# DW_CFA_advance_loc4 .word .LCFI12-.LCFI11 .byte 0xd ;# DW_CFA_def_cfa_register = r3 .uleb128 0x3 .byte 0x4 ;# DW_CFA_advance_loc4 .word .LCFI13-.LCFI12 .byte 0x84 ;# DW_CFA_offset, column 0x4 .uleb128 0x3 .align 4 .LEFDE1: .LSFDE2: .word .LEFDE2-.LASFDE2 ;# FDE Length .LASFDE2: .word .LASFDE2-.Lframe1 ;# FDE CIE offset .word .LFB2 ;# FDE initial location .word .LFE2-.LFB2 ;# FDE address range .byte 0x4 ;# DW_CFA_advance_loc4 .word .LCFI21-.LFB2 .byte 0x83 ;# DW_CFA_offset, column 0x3 .uleb128 0x0 .byte 0x11 ;# DW_CFA_offset_extended_sf .uleb128 0x2 .sleb128 -5 .byte 0x4 ;# DW_CFA_advance_loc4 .word .LCFI22-.LCFI21 .byte 0xd ;# DW_CFA_def_cfa_register = r3 .uleb128 0x3 .align 4 .LEFDE2: polyml-5.7.1/libffi/src/closures.c0000644000175000017500000004410513204034553016030 0ustar daviddavid/* ----------------------------------------------------------------------- closures.c - Copyright (c) 2007, 2009, 2010 Red Hat, Inc. Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc Copyright (c) 2011 Plausible Labs Cooperative, Inc. Code to allocate and deallocate memory for closures. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #if defined __linux__ && !defined _GNU_SOURCE #define _GNU_SOURCE 1 #endif #include #include #if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE # if __gnu_linux__ && !defined(__ANDROID__) /* This macro indicates it may be forbidden to map anonymous memory with both write and execute permission. Code compiled when this option is defined will attempt to map such pages once, but if it fails, it falls back to creating a temporary file in a writable and executable filesystem and mapping pages from it into separate locations in the virtual memory space, one location writable and another executable. */ # define FFI_MMAP_EXEC_WRIT 1 # define HAVE_MNTENT 1 # endif # if defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__) /* Windows systems may have Data Execution Protection (DEP) enabled, which requires the use of VirtualMalloc/VirtualFree to alloc/free executable memory. */ # define FFI_MMAP_EXEC_WRIT 1 # endif #endif #if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX # ifdef __linux__ /* When defined to 1 check for SELinux and if SELinux is active, don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that might cause audit messages. */ # define FFI_MMAP_EXEC_SELINUX 1 # endif #endif #if FFI_CLOSURES # if FFI_EXEC_TRAMPOLINE_TABLE // Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations. # elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */ #define USE_LOCKS 1 #define USE_DL_PREFIX 1 #ifdef __GNUC__ #ifndef USE_BUILTIN_FFS #define USE_BUILTIN_FFS 1 #endif #endif /* We need to use mmap, not sbrk. */ #define HAVE_MORECORE 0 /* We could, in theory, support mremap, but it wouldn't buy us anything. */ #define HAVE_MREMAP 0 /* We have no use for this, so save some code and data. */ #define NO_MALLINFO 1 /* We need all allocations to be in regular segments, otherwise we lose track of the corresponding code address. */ #define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T /* Don't allocate more than a page unless needed. */ #define DEFAULT_GRANULARITY ((size_t)malloc_getpagesize) #if FFI_CLOSURE_TEST /* Don't release single pages, to avoid a worst-case scenario of continuously allocating and releasing single pages, but release pairs of pages, which should do just as well given that allocations are likely to be small. */ #define DEFAULT_TRIM_THRESHOLD ((size_t)malloc_getpagesize) #endif #include #include #include #include #ifndef _MSC_VER #include #endif #include #include #if !defined(X86_WIN32) && !defined(X86_WIN64) #ifdef HAVE_MNTENT #include #endif /* HAVE_MNTENT */ #include #include /* We don't want sys/mman.h to be included after we redefine mmap and dlmunmap. */ #include #define LACKS_SYS_MMAN_H 1 #if FFI_MMAP_EXEC_SELINUX #include #include static int selinux_enabled = -1; static int selinux_enabled_check (void) { struct statfs sfs; FILE *f; char *buf = NULL; size_t len = 0; if (statfs ("/selinux", &sfs) >= 0 && (unsigned int) sfs.f_type == 0xf97cff8cU) return 1; f = fopen ("/proc/mounts", "r"); if (f == NULL) return 0; while (getline (&buf, &len, f) >= 0) { char *p = strchr (buf, ' '); if (p == NULL) break; p = strchr (p + 1, ' '); if (p == NULL) break; if (strncmp (p + 1, "selinuxfs ", 10) == 0) { free (buf); fclose (f); return 1; } } free (buf); fclose (f); return 0; } #define is_selinux_enabled() (selinux_enabled >= 0 ? selinux_enabled \ : (selinux_enabled = selinux_enabled_check ())) #else #define is_selinux_enabled() 0 #endif /* !FFI_MMAP_EXEC_SELINUX */ /* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ #ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX #include static int emutramp_enabled = -1; static int emutramp_enabled_check (void) { char *buf = NULL; size_t len = 0; FILE *f; int ret; f = fopen ("/proc/self/status", "r"); if (f == NULL) return 0; ret = 0; while (getline (&buf, &len, f) != -1) if (!strncmp (buf, "PaX:", 4)) { char emutramp; if (sscanf (buf, "%*s %*c%c", &emutramp) == 1) ret = (emutramp == 'E'); break; } free (buf); fclose (f); return ret; } #define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ : (emutramp_enabled = emutramp_enabled_check ())) #endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ #elif defined (__CYGWIN__) || defined(__INTERIX) #include /* Cygwin is Linux-like, but not quite that Linux-like. */ #define is_selinux_enabled() 0 #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ #ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX #define is_emutramp_enabled() 0 #endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ /* Declare all functions defined in dlmalloc.c as static. */ static void *dlmalloc(size_t); static void dlfree(void*); static void *dlcalloc(size_t, size_t) MAYBE_UNUSED; static void *dlrealloc(void *, size_t) MAYBE_UNUSED; static void *dlmemalign(size_t, size_t) MAYBE_UNUSED; static void *dlvalloc(size_t) MAYBE_UNUSED; static int dlmallopt(int, int) MAYBE_UNUSED; static size_t dlmalloc_footprint(void) MAYBE_UNUSED; static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED; static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED; static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED; static void *dlpvalloc(size_t) MAYBE_UNUSED; static int dlmalloc_trim(size_t) MAYBE_UNUSED; static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED; static void dlmalloc_stats(void) MAYBE_UNUSED; #if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) /* Use these for mmap and munmap within dlmalloc.c. */ static void *dlmmap(void *, size_t, int, int, int, off_t); static int dlmunmap(void *, size_t); #endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ #define mmap dlmmap #define munmap dlmunmap #include "dlmalloc.c" #undef mmap #undef munmap #if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) /* A mutex used to synchronize access to *exec* variables in this file. */ static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER; /* A file descriptor of a temporary file from which we'll map executable pages. */ static int execfd = -1; /* The amount of space already allocated from the temporary file. */ static size_t execsize = 0; /* Open a temporary file name, and immediately unlink it. */ static int open_temp_exec_file_name (char *name, int flags) { int fd; #ifdef HAVE_MKOSTEMP fd = mkostemp (name, flags); #else fd = mkstemp (name); #endif if (fd != -1) unlink (name); return fd; } /* Open a temporary file in the named directory. */ static int open_temp_exec_file_dir (const char *dir) { static const char suffix[] = "/ffiXXXXXX"; int lendir, flags; char *tempname; #ifdef O_TMPFILE int fd; #endif #ifdef O_CLOEXEC flags = O_CLOEXEC; #else flags = 0; #endif #ifdef O_TMPFILE fd = open (dir, flags | O_RDWR | O_EXCL | O_TMPFILE, 0700); /* If the running system does not support the O_TMPFILE flag then retry without it. */ if (fd != -1 || (errno != EINVAL && errno != EISDIR && errno != EOPNOTSUPP)) { return fd; } else { errno = 0; } #endif lendir = strlen (dir); tempname = __builtin_alloca (lendir + sizeof (suffix)); if (!tempname) return -1; memcpy (tempname, dir, lendir); memcpy (tempname + lendir, suffix, sizeof (suffix)); return open_temp_exec_file_name (tempname, flags); } /* Open a temporary file in the directory in the named environment variable. */ static int open_temp_exec_file_env (const char *envvar) { const char *value = getenv (envvar); if (!value) return -1; return open_temp_exec_file_dir (value); } #ifdef HAVE_MNTENT /* Open a temporary file in an executable and writable mount point listed in the mounts file. Subsequent calls with the same mounts keep searching for mount points in the same file. Providing NULL as the mounts file closes the file. */ static int open_temp_exec_file_mnt (const char *mounts) { static const char *last_mounts; static FILE *last_mntent; if (mounts != last_mounts) { if (last_mntent) endmntent (last_mntent); last_mounts = mounts; if (mounts) last_mntent = setmntent (mounts, "r"); else last_mntent = NULL; } if (!last_mntent) return -1; for (;;) { int fd; struct mntent mnt; char buf[MAXPATHLEN * 3]; if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL) return -1; if (hasmntopt (&mnt, "ro") || hasmntopt (&mnt, "noexec") || access (mnt.mnt_dir, W_OK)) continue; fd = open_temp_exec_file_dir (mnt.mnt_dir); if (fd != -1) return fd; } } #endif /* HAVE_MNTENT */ /* Instructions to look for a location to hold a temporary file that can be mapped in for execution. */ static struct { int (*func)(const char *); const char *arg; int repeat; } open_temp_exec_file_opts[] = { { open_temp_exec_file_env, "TMPDIR", 0 }, { open_temp_exec_file_dir, "/tmp", 0 }, { open_temp_exec_file_dir, "/var/tmp", 0 }, { open_temp_exec_file_dir, "/dev/shm", 0 }, { open_temp_exec_file_env, "HOME", 0 }, #ifdef HAVE_MNTENT { open_temp_exec_file_mnt, "/etc/mtab", 1 }, { open_temp_exec_file_mnt, "/proc/mounts", 1 }, #endif /* HAVE_MNTENT */ }; /* Current index into open_temp_exec_file_opts. */ static int open_temp_exec_file_opts_idx = 0; /* Reset a current multi-call func, then advances to the next entry. If we're at the last, go back to the first and return nonzero, otherwise return zero. */ static int open_temp_exec_file_opts_next (void) { if (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (NULL); open_temp_exec_file_opts_idx++; if (open_temp_exec_file_opts_idx == (sizeof (open_temp_exec_file_opts) / sizeof (*open_temp_exec_file_opts))) { open_temp_exec_file_opts_idx = 0; return 1; } return 0; } /* Return a file descriptor of a temporary zero-sized file in a writable and executable filesystem. */ static int open_temp_exec_file (void) { int fd; do { fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].arg); if (!open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat || fd == -1) { if (open_temp_exec_file_opts_next ()) break; } } while (fd == -1); return fd; } /* Map in a chunk of memory from the temporary exec file into separate locations in the virtual memory address space, one writable and one executable. Returns the address of the writable portion, after storing an offset to the corresponding executable portion at the last word of the requested chunk. */ static void * dlmmap_locked (void *start, size_t length, int prot, int flags, off_t offset) { void *ptr; if (execfd == -1) { open_temp_exec_file_opts_idx = 0; retry_open: execfd = open_temp_exec_file (); if (execfd == -1) return MFAIL; } offset = execsize; if (ftruncate (execfd, offset + length)) return MFAIL; flags &= ~(MAP_PRIVATE | MAP_ANONYMOUS); flags |= MAP_SHARED; ptr = mmap (NULL, length, (prot & ~PROT_WRITE) | PROT_EXEC, flags, execfd, offset); if (ptr == MFAIL) { if (!offset) { close (execfd); goto retry_open; } ftruncate (execfd, offset); return MFAIL; } else if (!offset && open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) open_temp_exec_file_opts_next (); start = mmap (start, length, prot, flags, execfd, offset); if (start == MFAIL) { munmap (ptr, length); ftruncate (execfd, offset); return start; } mmap_exec_offset ((char *)start, length) = (char*)ptr - (char*)start; execsize += length; return start; } /* Map in a writable and executable chunk of memory if possible. Failing that, fall back to dlmmap_locked. */ static void * dlmmap (void *start, size_t length, int prot, int flags, int fd, off_t offset) { void *ptr; assert (start == NULL && length % malloc_getpagesize == 0 && prot == (PROT_READ | PROT_WRITE) && flags == (MAP_PRIVATE | MAP_ANONYMOUS) && fd == -1 && offset == 0); #if FFI_CLOSURE_TEST printf ("mapping in %zi\n", length); #endif if (execfd == -1 && is_emutramp_enabled ()) { ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); return ptr; } if (execfd == -1 && !is_selinux_enabled ()) { ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); if (ptr != MFAIL || (errno != EPERM && errno != EACCES)) /* Cool, no need to mess with separate segments. */ return ptr; /* If MREMAP_DUP is ever introduced and implemented, try mmap with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with MREMAP_DUP and prot at this point. */ } if (execsize == 0 || execfd == -1) { pthread_mutex_lock (&open_temp_exec_file_mutex); ptr = dlmmap_locked (start, length, prot, flags, offset); pthread_mutex_unlock (&open_temp_exec_file_mutex); return ptr; } return dlmmap_locked (start, length, prot, flags, offset); } /* Release memory at the given address, as well as the corresponding executable page if it's separate. */ static int dlmunmap (void *start, size_t length) { /* We don't bother decreasing execsize or truncating the file, since we can't quite tell whether we're unmapping the end of the file. We don't expect frequent deallocation anyway. If we did, we could locate pages in the file by writing to the pages being deallocated and checking that the file contents change. Yuck. */ msegmentptr seg = segment_holding (gm, start); void *code; #if FFI_CLOSURE_TEST printf ("unmapping %zi\n", length); #endif if (seg && (code = add_segment_exec_offset (start, seg)) != start) { int ret = munmap (code, length); if (ret) return ret; } return munmap (start, length); } #if FFI_CLOSURE_FREE_CODE /* Return segment holding given code address. */ static msegmentptr segment_holding_code (mstate m, char* addr) { msegmentptr sp = &m->seg; for (;;) { if (addr >= add_segment_exec_offset (sp->base, sp) && addr < add_segment_exec_offset (sp->base, sp) + sp->size) return sp; if ((sp = sp->next) == 0) return 0; } } #endif #endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ /* Allocate a chunk of memory with the given size. Returns a pointer to the writable address, and sets *CODE to the executable corresponding virtual address. */ void * ffi_closure_alloc (size_t size, void **code) { void *ptr; if (!code) return NULL; ptr = dlmalloc (size); if (ptr) { msegmentptr seg = segment_holding (gm, ptr); *code = add_segment_exec_offset (ptr, seg); } return ptr; } /* Release a chunk of memory allocated with ffi_closure_alloc. If FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the writable or the executable address given. Otherwise, only the writable address can be provided here. */ void ffi_closure_free (void *ptr) { #if FFI_CLOSURE_FREE_CODE msegmentptr seg = segment_holding_code (gm, ptr); if (seg) ptr = sub_segment_exec_offset (ptr, seg); #endif dlfree (ptr); } #if FFI_CLOSURE_TEST /* Do some internal sanity testing to make sure allocation and deallocation of pages are working as intended. */ int main () { void *p[3]; #define GET(idx, len) do { p[idx] = dlmalloc (len); printf ("allocated %zi for p[%i]\n", (len), (idx)); } while (0) #define PUT(idx) do { printf ("freeing p[%i]\n", (idx)); dlfree (p[idx]); } while (0) GET (0, malloc_getpagesize / 2); GET (1, 2 * malloc_getpagesize - 64 * sizeof (void*)); PUT (1); GET (1, 2 * malloc_getpagesize); GET (2, malloc_getpagesize / 2); PUT (1); PUT (0); PUT (2); return 0; } #endif /* FFI_CLOSURE_TEST */ # else /* ! FFI_MMAP_EXEC_WRIT */ /* On many systems, memory returned by malloc is writable and executable, so just use it. */ #include void * ffi_closure_alloc (size_t size, void **code) { if (!code) return NULL; return *code = malloc (size); } void ffi_closure_free (void *ptr) { free (ptr); } # endif /* ! FFI_MMAP_EXEC_WRIT */ #endif /* FFI_CLOSURES */ polyml-5.7.1/libffi/src/m88k/0000755000175000017500000000000013204034553014610 5ustar daviddavidpolyml-5.7.1/libffi/src/m88k/ffitarget.h0000644000175000017500000000314513204034553016737 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * m88k Foreign Function Interface */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_OBSD, FFI_DEFAULT_ABI = FFI_OBSD, FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 0x14 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/m88k/ffi.c0000644000175000017500000002355313204034553015530 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * m88k Foreign Function Interface * * This file attempts to provide all the FFI entry points which can reliably * be implemented in C. * * Only OpenBSD/m88k is currently supported; other platforms (such as * Motorola's SysV/m88k) could be supported with the following tweaks: * * - non-OpenBSD systems use an `outgoing parameter area' as part of the * 88BCS calling convention, which is not supported under OpenBSD from * release 3.6 onwards. Supporting it should be as easy as taking it * into account when adjusting the stack, in the assembly code. * * - the logic deciding whether a function argument gets passed through * registers, or on the stack, has changed several times in OpenBSD in * edge cases (especially for structs larger than 32 bytes being passed * by value). The code below attemps to match the logic used by the * system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend * fixes. */ #include #include #include #include void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *, void (*fn) ()); void *ffi_prep_args (void *, extended_cif *); void ffi_closure_OBSD (ffi_closure *); void ffi_closure_struct_OBSD (ffi_closure *); unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *, char *); void ffi_cacheflush_OBSD (unsigned int, unsigned int); #define CIF_FLAGS_INT (1 << 0) #define CIF_FLAGS_DINT (1 << 1) /* * Foreign Function Interface API */ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ void * ffi_prep_args (void *stack, extended_cif *ecif) { unsigned int i; void **p_argv; char *argp, *stackp; unsigned int *regp; unsigned int regused; ffi_type **p_arg; void *struct_value_ptr; regp = (unsigned int *)stack; stackp = (char *)(regp + 8); regused = 0; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && !ecif->cif->flags) struct_value_ptr = ecif->rvalue; else struct_value_ptr = NULL; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) { size_t z; unsigned short t, a; z = (*p_arg)->size; t = (*p_arg)->type; a = (*p_arg)->alignment; /* * Figure out whether the argument can be passed through registers * or on the stack. * The rule is that registers can only receive simple types not larger * than 64 bits, or structs the exact size of a register and aligned to * the size of a register. */ if (t == FFI_TYPE_STRUCT) { if (z == sizeof (int) && a == sizeof (int) && regused < 8) argp = (char *)regp; else argp = stackp; } else { if (z > sizeof (int) && regused < 8 - 1) { /* align to an even register pair */ if (regused & 1) { regp++; regused++; } } if (regused < 8) argp = (char *)regp; else argp = stackp; } /* Enforce proper stack alignment of 64-bit types */ if (argp == stackp && a > sizeof (int)) { stackp = (char *) ALIGN(stackp, a); argp = stackp; } switch (t) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; break; case FFI_TYPE_INT: case FFI_TYPE_FLOAT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: *(unsigned int *) argp = *(unsigned int *) *p_argv; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_STRUCT: memcpy (argp, *p_argv, z); break; default: FFI_ASSERT (0); } /* Align if necessary. */ if ((sizeof (int) - 1) & z) z = ALIGN(z, sizeof (int)); p_argv++; /* Be careful, once all registers are filled, and about to continue on stack, regp == stackp. Therefore the check for regused as well. */ if (argp == (char *)regp && regused < 8) { regp += z / sizeof (int); regused += z / sizeof (int); } else stackp += z; } return struct_value_ptr; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = 0; break; case FFI_TYPE_STRUCT: if (cif->rtype->size == sizeof (int) && cif->rtype->alignment == sizeof (int)) cif->flags = CIF_FLAGS_INT; else cif->flags = 0; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = CIF_FLAGS_DINT; break; default: cif->flags = CIF_FLAGS_INT; break; } return FFI_OK; } void ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if (rvalue == NULL && cif->rtype->type == FFI_TYPE_STRUCT && (cif->rtype->size != sizeof (int) || cif->rtype->alignment != sizeof (int))) ecif.rvalue = alloca (cif->rtype->size); else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_OBSD: ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } /* * Closure API */ static void ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp, char *stackp) { unsigned int i; void **p_argv; char *argp; unsigned int regused; ffi_type **p_arg; regused = 0; p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) { size_t z; unsigned short t, a; z = (*p_arg)->size; t = (*p_arg)->type; a = (*p_arg)->alignment; /* * Figure out whether the argument has been passed through registers * or on the stack. * The rule is that registers can only receive simple types not larger * than 64 bits, or structs the exact size of a register and aligned to * the size of a register. */ if (t == FFI_TYPE_STRUCT) { if (z == sizeof (int) && a == sizeof (int) && regused < 8) argp = (char *)regp; else argp = stackp; } else { if (z > sizeof (int) && regused < 8 - 1) { /* align to an even register pair */ if (regused & 1) { regp++; regused++; } } if (regused < 8) argp = (char *)regp; else argp = stackp; } /* Enforce proper stack alignment of 64-bit types */ if (argp == stackp && a > sizeof (int)) { stackp = (char *) ALIGN(stackp, a); argp = stackp; } if (z < sizeof (int) && t != FFI_TYPE_STRUCT) *p_argv = (void *) (argp + sizeof (int) - z); else *p_argv = (void *) argp; /* Align if necessary */ if ((sizeof (int) - 1) & z) z = ALIGN(z, sizeof (int)); p_argv++; /* Be careful, once all registers are exhausted, and about to fetch from stack, regp == stackp. Therefore the check for regused as well. */ if (argp == (char *)regp && regused < 8) { regp += z / sizeof (int); regused += z / sizeof (int); } else stackp += z; } } unsigned int ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp, char *stackp) { ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void *)); ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp); (closure->fun) (cif, resp, arg_area, closure->user_data); return cif->flags; } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { unsigned int *tramp = (unsigned int *) codeloc; void *fn; FFI_ASSERT (cif->abi == FFI_OBSD); if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags) fn = &ffi_closure_struct_OBSD; else fn = &ffi_closure_OBSD; /* or.u %r10, %r0, %hi16(fn) */ tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16); /* or.u %r13, %r0, %hi16(closure) */ tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16); /* or %r10, %r10, %lo16(fn) */ tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff); /* jmp.n %r10 */ tramp[3] = 0xf400c40a; /* or %r13, %r13, %lo16(closure) */ tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff); ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE); closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } polyml-5.7.1/libffi/src/m88k/obsd.S0000644000175000017500000001145713204034553015673 0ustar daviddavid/* * Copyright (c) 2013 Miodrag Vallat. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * ``Software''), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * m88k Foreign Function Interface */ #define LIBFFI_ASM #include #include .text /* * ffi_cacheflush_OBSD(unsigned int addr, %r2 * unsigned int size); %r3 */ .align 4 .globl ffi_cacheflush_OBSD .type ffi_cacheflush_OBSD,@function ffi_cacheflush_OBSD: tb0 0, %r0, 451 or %r0, %r0, %r0 jmp %r1 .size ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD /* * ffi_call_OBSD(unsigned bytes, %r2 * extended_cif *ecif, %r3 * unsigned flags, %r4 * void *rvalue, %r5 * void (*fn)()); %r6 */ .align 4 .globl ffi_call_OBSD .type ffi_call_OBSD,@function ffi_call_OBSD: subu %r31, %r31, 32 st %r30, %r31, 4 st %r1, %r31, 0 addu %r30, %r31, 32 | Save the few arguments we'll need after ffi_prep_args() st.d %r4, %r31, 8 st %r6, %r31, 16 | Allocate room for the image of r2-r9, and the stack space for | the args (rounded to a 16-byte boundary) addu %r2, %r2, (8 * 4) + 15 clr %r2, %r2, 4<0> subu %r31, %r31, %r2 | Fill register and stack image or %r2, %r31, %r0 #ifdef PIC bsr ffi_prep_args#plt #else bsr ffi_prep_args #endif | Save pointer to return struct address, if any or %r12, %r2, %r0 | Get function pointer subu %r4, %r30, 32 ld %r1, %r4, 16 | Fetch the register arguments ld.d %r2, %r31, (0 * 4) ld.d %r4, %r31, (2 * 4) ld.d %r6, %r31, (4 * 4) ld.d %r8, %r31, (6 * 4) addu %r31, %r31, (8 * 4) | Invoke the function jsr %r1 | Restore stack now that we don't need the args anymore subu %r31, %r30, 32 | Figure out what to return as the function's return value ld %r5, %r31, 12 | rvalue ld %r4, %r31, 8 | flags bcnd eq0, %r5, 9f bb0 0, %r4, 1f | CIF_FLAGS_INT st %r2, %r5, 0 br 9f 1: bb0 1, %r4, 1f | CIF_FLAGS_DINT st.d %r2, %r5, 0 br 9f 1: 9: ld %r1, %r31, 0 ld %r30, %r31, 4 jmp.n %r1 addu %r31, %r31, 32 .size ffi_call_OBSD, . - ffi_call_OBSD /* * ffi_closure_OBSD(ffi_closure *closure); %r13 */ .align 4 .globl ffi_closure_OBSD .type ffi_closure_OBSD, @function ffi_closure_OBSD: subu %r31, %r31, 16 st %r30, %r31, 4 st %r1, %r31, 0 addu %r30, %r31, 16 | Make room on the stack for saved register arguments and return | value subu %r31, %r31, (8 * 4) + (2 * 4) st.d %r2, %r31, (0 * 4) st.d %r4, %r31, (2 * 4) st.d %r6, %r31, (4 * 4) st.d %r8, %r31, (6 * 4) | Invoke the closure function or %r5, %r30, 0 | calling stack addu %r4, %r31, 0 | saved registers addu %r3, %r31, (8 * 4) | return value or %r2, %r13, %r0 | closure #ifdef PIC bsr ffi_closure_OBSD_inner#plt #else bsr ffi_closure_OBSD_inner #endif | Figure out what to return as the function's return value bb0 0, %r2, 1f | CIF_FLAGS_INT ld %r2, %r31, (8 * 4) br 9f 1: bb0 1, %r2, 1f | CIF_FLAGS_DINT ld.d %r2, %r31, (8 * 4) br 9f 1: 9: subu %r31, %r30, 16 ld %r1, %r31, 0 ld %r30, %r31, 4 jmp.n %r1 addu %r31, %r31, 16 .size ffi_closure_OBSD,.-ffi_closure_OBSD /* * ffi_closure_struct_OBSD(ffi_closure *closure); %r13 */ .align 4 .globl ffi_closure_struct_OBSD .type ffi_closure_struct_OBSD, @function ffi_closure_struct_OBSD: subu %r31, %r31, 16 st %r30, %r31, 4 st %r1, %r31, 0 addu %r30, %r31, 16 | Make room on the stack for saved register arguments subu %r31, %r31, (8 * 4) st.d %r2, %r31, (0 * 4) st.d %r4, %r31, (2 * 4) st.d %r6, %r31, (4 * 4) st.d %r8, %r31, (6 * 4) | Invoke the closure function or %r5, %r30, 0 | calling stack addu %r4, %r31, 0 | saved registers or %r3, %r12, 0 | return value or %r2, %r13, %r0 | closure #ifdef PIC bsr ffi_closure_OBSD_inner#plt #else bsr ffi_closure_OBSD_inner #endif subu %r31, %r30, 16 ld %r1, %r31, 0 ld %r30, %r31, 4 jmp.n %r1 addu %r31, %r31, 16 .size ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD polyml-5.7.1/libffi/src/frv/0000755000175000017500000000000013204034553014616 5ustar daviddavidpolyml-5.7.1/libffi/src/frv/ffitarget.h0000644000175000017500000000421613204034553016745 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2004 Red Hat, Inc. Target configuration macros for FR-V Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_EABI, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_EABI } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #ifdef __FRV_FDPIC__ /* Trampolines are 8 4-byte instructions long. */ #define FFI_TRAMPOLINE_SIZE (8*4) #else /* Trampolines are 5 4-byte instructions long. */ #define FFI_TRAMPOLINE_SIZE (5*4) #endif #endif polyml-5.7.1/libffi/src/frv/ffi.c0000644000175000017500000002040013204034553015522 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (C) 2004 Anthony Green Copyright (C) 2007 Free Software Foundation, Inc. Copyright (C) 2008 Red Hat, Inc. FR-V Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void *ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; register int count = 0; p_argv = ecif->avalue; argp = stack; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++) { size_t z; z = (*p_arg)->size; if ((*p_arg)->type == FFI_TYPE_STRUCT) { z = sizeof(void*); *(void **) argp = *p_argv; } /* if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (count > 24) { // This is going on the stack. Turn it into a double. *(double *) argp = (double) *(float*)(* p_argv); z = sizeof(double); } else *(void **) argp = *(void **)(* p_argv); } */ else if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; default: FFI_ASSERT(0); } } else if (z == sizeof(int)) { *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); } else { memcpy(argp, *p_argv, z); } p_argv++; argp += z; count += z; } return (stack + ((count > 24) ? 24 : ALIGN_DOWN(count, 8))); } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { if (cif->rtype->type == FFI_TYPE_STRUCT) cif->flags = -1; else cif->flags = cif->rtype->size; cif->bytes = ALIGN (cif->bytes, 8); return FFI_OK; } extern void ffi_call_EABI(void *(*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_EABI: ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } } void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, unsigned arg4, unsigned arg5, unsigned arg6) { /* This function is called by a trampoline. The trampoline stows a pointer to the ffi_closure object in gr7. We must save this pointer in a place that will persist while we do our work. */ register ffi_closure *creg __asm__ ("gr7"); ffi_closure *closure = creg; /* Arguments that don't fit in registers are found on the stack at a fixed offset above the current frame pointer. */ register char *frame_pointer __asm__ ("fp"); char *stack_args = frame_pointer + 16; /* Lay the register arguments down in a continuous chunk of memory. */ unsigned register_args[6] = { arg1, arg2, arg3, arg4, arg5, arg6 }; ffi_cif *cif = closure->cif; ffi_type **arg_types = cif->arg_types; void **avalue = alloca (cif->nargs * sizeof(void *)); char *ptr = (char *) register_args; int i; /* Find the address of each argument. */ for (i = 0; i < cif->nargs; i++) { switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = ptr + 3; break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = ptr + 2; break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: avalue[i] = ptr; break; case FFI_TYPE_STRUCT: avalue[i] = *(void**)ptr; break; default: /* This is an 8-byte value. */ avalue[i] = ptr; ptr += 4; break; } ptr += 4; /* If we've handled more arguments than fit in registers, start looking at the those passed on the stack. */ if (ptr == ((char *)register_args + (6*4))) ptr = stack_args; } /* Invoke the closure. */ if (cif->rtype->type == FFI_TYPE_STRUCT) { /* The caller allocates space for the return structure, and passes a pointer to this space in gr3. Use this value directly as the return value. */ register void *return_struct_ptr __asm__("gr3"); (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data); } else { /* Allocate space for the return value and call the function. */ long long rvalue; (closure->fun) (cif, &rvalue, avalue, closure->user_data); /* Functions return 4-byte or smaller results in gr8. 8-byte values also use gr9. We fill the both, even for small return values, just to avoid a branch. */ asm ("ldi @(%0, #0), gr8" : : "r" (&rvalue)); asm ("ldi @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1])); } } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; unsigned long fn = (long) ffi_closure_eabi; unsigned long cls = (long) codeloc; #ifdef __FRV_FDPIC__ register void *got __asm__("gr15"); #endif int i; fn = (unsigned long) ffi_closure_eabi; #ifdef __FRV_FDPIC__ tramp[0] = &((unsigned int *)codeloc)[2]; tramp[1] = got; tramp[2] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ tramp[3] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ tramp[4] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ tramp[5] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ tramp[6] = 0x9cc86000; /* ldi @(gr6, #0), gr14 */ tramp[7] = 0x8030e000; /* jmpl @(gr14, gr0) */ #else tramp[0] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ tramp[2] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ tramp[3] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ tramp[4] = 0x80300006; /* jmpl @(gr0, gr6) */ #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Cache flushing. */ for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++) __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i), "r" (codeloc)); return FFI_OK; } polyml-5.7.1/libffi/src/frv/eabi.S0000644000175000017500000000652613204034553015653 0ustar daviddavid/* ----------------------------------------------------------------------- eabi.S - Copyright (c) 2004 Anthony Green FR-V Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .globl ffi_prep_args_EABI .text .p2align 4 .globl ffi_call_EABI .type ffi_call_EABI, @function # gr8 : ffi_prep_args # gr9 : &ecif # gr10: cif->bytes # gr11: fig->flags # gr12: ecif.rvalue # gr13: fn ffi_call_EABI: addi sp, #-80, sp sti fp, @(sp, #24) addi sp, #24, fp movsg lr, gr5 /* Make room for the new arguments. */ /* subi sp, fp, gr10 */ /* Store return address and incoming args on stack. */ sti gr5, @(fp, #8) sti gr8, @(fp, #-4) sti gr9, @(fp, #-8) sti gr10, @(fp, #-12) sti gr11, @(fp, #-16) sti gr12, @(fp, #-20) sti gr13, @(fp, #-24) sub sp, gr10, sp /* Call ffi_prep_args. */ ldi @(fp, #-4), gr4 addi sp, #0, gr8 ldi @(fp, #-8), gr9 #ifdef __FRV_FDPIC__ ldd @(gr4, gr0), gr14 calll @(gr14, gr0) #else calll @(gr4, gr0) #endif /* ffi_prep_args returns the new stack pointer. */ mov gr8, gr4 ldi @(sp, #0), gr8 ldi @(sp, #4), gr9 ldi @(sp, #8), gr10 ldi @(sp, #12), gr11 ldi @(sp, #16), gr12 ldi @(sp, #20), gr13 /* Always copy the return value pointer into the hidden parameter register. This is only strictly necessary when we're returning an aggregate type, but it doesn't hurt to do this all the time, and it saves a branch. */ ldi @(fp, #-20), gr3 /* Use the ffi_prep_args return value for the new sp. */ mov gr4, sp /* Call the target function. */ ldi @(fp, -24), gr4 #ifdef __FRV_FDPIC__ ldd @(gr4, gr0), gr14 calll @(gr14, gr0) #else calll @(gr4, gr0) #endif /* Store the result. */ ldi @(fp, #-16), gr10 /* fig->flags */ ldi @(fp, #-20), gr4 /* ecif.rvalue */ /* Is the return value stored in two registers? */ cmpi gr10, #8, icc0 bne icc0, 0, .L2 /* Yes, save them. */ sti gr8, @(gr4, #0) sti gr9, @(gr4, #4) bra .L3 .L2: /* Is the return value a structure? */ cmpi gr10, #-1, icc0 beq icc0, 0, .L3 /* No, save a 4 byte return value. */ sti gr8, @(gr4, #0) .L3: /* Restore the stack, and return. */ ldi @(fp, 8), gr5 ld @(fp, gr0), fp addi sp,#80,sp jmpl @(gr5,gr0) .size ffi_call_EABI, .-ffi_call_EABI polyml-5.7.1/libffi/src/moxie/0000755000175000017500000000000013204034553015142 5ustar daviddavidpolyml-5.7.1/libffi/src/moxie/ffitarget.h0000644000175000017500000000362613204034553017275 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012, 2013 Anthony Green Target configuration macros for Moxie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H /* ---- System specific configurations ----------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_EABI, FFI_DEFAULT_ABI = FFI_EABI, FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 /* Trampolines are 12-bytes long. See ffi_prep_closure_loc. */ #define FFI_TRAMPOLINE_SIZE (12) #endif polyml-5.7.1/libffi/src/moxie/ffi.c0000644000175000017500000001617313204034553016062 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (C) 2012, 2013 Anthony Green Moxie Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void *ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; register int count = 0; p_argv = ecif->avalue; argp = stack; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) { *(void **) argp = ecif->rvalue; argp += 4; } for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++) { size_t z; z = (*p_arg)->size; if ((*p_arg)->type == FFI_TYPE_STRUCT) { z = sizeof(void*); *(void **) argp = *p_argv; } else if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; default: FFI_ASSERT(0); } } else if (z == sizeof(int)) { *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); } else { memcpy(argp, *p_argv, z); } p_argv++; argp += z; count += z; } return (stack + ((count > 24) ? 24 : ALIGN_DOWN(count, 8))); } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { if (cif->rtype->type == FFI_TYPE_STRUCT) cif->flags = -1; else cif->flags = cif->rtype->size; cif->bytes = ALIGN (cif->bytes, 8); return FFI_OK; } extern void ffi_call_EABI(void *(*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_EABI: ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } } void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, unsigned arg4, unsigned arg5, unsigned arg6) { /* This function is called by a trampoline. The trampoline stows a pointer to the ffi_closure object in $r7. We must save this pointer in a place that will persist while we do our work. */ register ffi_closure *creg __asm__ ("$r12"); ffi_closure *closure = creg; /* Arguments that don't fit in registers are found on the stack at a fixed offset above the current frame pointer. */ register char *frame_pointer __asm__ ("$fp"); /* Pointer to a struct return value. */ void *struct_rvalue = (void *) arg1; /* 6 words reserved for register args + 3 words from jsr */ char *stack_args = frame_pointer + 9*4; /* Lay the register arguments down in a continuous chunk of memory. */ unsigned register_args[6] = { arg1, arg2, arg3, arg4, arg5, arg6 }; char *register_args_ptr = (char *) register_args; ffi_cif *cif = closure->cif; ffi_type **arg_types = cif->arg_types; void **avalue = alloca (cif->nargs * sizeof(void *)); char *ptr = (char *) register_args; int i; /* preserve struct type return pointer passing */ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ptr += 4; register_args_ptr = (char *)®ister_args[1]; } /* Find the address of each argument. */ for (i = 0; i < cif->nargs; i++) { switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = ptr + 3; break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = ptr + 2; break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: case FFI_TYPE_POINTER: avalue[i] = ptr; break; case FFI_TYPE_STRUCT: avalue[i] = *(void**)ptr; break; default: /* This is an 8-byte value. */ avalue[i] = ptr; ptr += 4; break; } ptr += 4; /* If we've handled more arguments than fit in registers, start looking at the those passed on the stack. */ if (ptr == ®ister_args[6]) ptr = stack_args; } /* Invoke the closure. */ if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) { (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); } else { /* Allocate space for the return value and call the function. */ long long rvalue; (closure->fun) (cif, &rvalue, avalue, closure->user_data); asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue)); } } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned short *tramp = (unsigned short *) &closure->tramp[0]; unsigned long fn = (long) ffi_closure_eabi; unsigned long cls = (long) codeloc; if (cif->abi != FFI_EABI) return FFI_BAD_ABI; fn = (unsigned long) ffi_closure_eabi; tramp[0] = 0x01e0; /* ldi.l $r7, .... */ tramp[1] = cls >> 16; tramp[2] = cls & 0xffff; tramp[3] = 0x1a00; /* jmpa .... */ tramp[4] = fn >> 16; tramp[5] = fn & 0xffff; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } polyml-5.7.1/libffi/src/moxie/eabi.S0000644000175000017500000000516413204034553016174 0ustar daviddavid/* ----------------------------------------------------------------------- eabi.S - Copyright (c) 2012, 2013 Anthony Green Moxie Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .globl ffi_prep_args_EABI .text .p2align 4 .globl ffi_call_EABI .type ffi_call_EABI, @function # $r0 : ffi_prep_args # $r1 : &ecif # $r2 : cif->bytes # $r3 : fig->flags # $r4 : ecif.rvalue # $r5 : fn ffi_call_EABI: push $sp, $r6 push $sp, $r7 push $sp, $r8 dec $sp, 24 /* Store incoming args on stack. */ sto.l 0($sp), $r0 /* ffi_prep_args */ sto.l 4($sp), $r1 /* ecif */ sto.l 8($sp), $r2 /* bytes */ sto.l 12($sp), $r3 /* flags */ sto.l 16($sp), $r4 /* &rvalue */ sto.l 20($sp), $r5 /* fn */ /* Call ffi_prep_args. */ mov $r6, $r4 /* Save result buffer */ mov $r7, $r5 /* Save the target fn */ mov $r8, $r3 /* Save the flags */ sub.l $sp, $r2 /* Allocate stack space */ mov $r0, $sp /* We can stomp over $r0 */ /* $r1 is already set up */ jsra ffi_prep_args /* Load register arguments. */ ldo.l $r0, 0($sp) ldo.l $r1, 4($sp) ldo.l $r2, 8($sp) ldo.l $r3, 12($sp) ldo.l $r4, 16($sp) ldo.l $r5, 20($sp) /* Call the target function. */ jsr $r7 ldi.l $r7, 0xffffffff cmp $r8, $r7 beq retstruct ldi.l $r7, 4 cmp $r8, $r7 bgt ret2reg st.l ($r6), $r0 jmpa retdone ret2reg: st.l ($r6), $r0 sto.l 4($r6), $r1 retstruct: retdone: /* Return. */ ldo.l $r6, -4($fp) ldo.l $r7, -8($fp) ldo.l $r8, -12($fp) ret .size ffi_call_EABI, .-ffi_call_EABI polyml-5.7.1/libffi/src/m68k/0000755000175000017500000000000013204034553014606 5ustar daviddavidpolyml-5.7.1/libffi/src/m68k/ffitarget.h0000644000175000017500000000363313204034553016737 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for Motorola 68K. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 16 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/m68k/ffi.c0000644000175000017500000001627313204034553015527 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c m68k Foreign Function Interface ----------------------------------------------------------------------- */ #include #include #include #include #ifdef __rtems__ void rtems_cache_flush_multiple_data_lines( const void *, size_t ); #else #include #ifdef __MINT__ #include #include #else #include #endif #endif void ffi_call_SYSV (extended_cif *, unsigned, unsigned, void *, void (*fn) ()); void *ffi_prep_args (void *stack, extended_cif *ecif); void ffi_closure_SYSV (ffi_closure *); void ffi_closure_struct_SYSV (ffi_closure *); unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, void *resp, void *args); /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ void * ffi_prep_args (void *stack, extended_cif *ecif) { unsigned int i; void **p_argv; char *argp; ffi_type **p_arg; void *struct_value_ptr; argp = stack; if ( #ifdef __MINT__ (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) || #endif (((ecif->cif->rtype->type == FFI_TYPE_STRUCT) && !ecif->cif->flags))) struct_value_ptr = ecif->rvalue; else struct_value_ptr = NULL; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) { size_t z = (*p_arg)->size; int type = (*p_arg)->type; if (z < sizeof (int)) { switch (type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; break; case FFI_TYPE_STRUCT: #ifdef __MINT__ if (z == 1 || z == 2) memcpy (argp + 2, *p_argv, z); else memcpy (argp, *p_argv, z); #else memcpy (argp + sizeof (int) - z, *p_argv, z); #endif break; default: FFI_ASSERT (0); } z = sizeof (int); } else { memcpy (argp, *p_argv, z); /* Align if necessary. */ if ((sizeof(int) - 1) & z) z = ALIGN(z, sizeof(int)); } p_argv++; argp += z; } return struct_value_ptr; } #define CIF_FLAGS_INT 1 #define CIF_FLAGS_DINT 2 #define CIF_FLAGS_FLOAT 4 #define CIF_FLAGS_DOUBLE 8 #define CIF_FLAGS_LDOUBLE 16 #define CIF_FLAGS_POINTER 32 #define CIF_FLAGS_STRUCT1 64 #define CIF_FLAGS_STRUCT2 128 #define CIF_FLAGS_SINT8 256 #define CIF_FLAGS_SINT16 512 /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = 0; break; case FFI_TYPE_STRUCT: if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && cif->rtype->elements[1]) { cif->flags = 0; break; } switch (cif->rtype->size) { case 1: #ifdef __MINT__ cif->flags = CIF_FLAGS_STRUCT2; #else cif->flags = CIF_FLAGS_STRUCT1; #endif break; case 2: cif->flags = CIF_FLAGS_STRUCT2; break; #ifdef __MINT__ case 3: #endif case 4: cif->flags = CIF_FLAGS_INT; break; #ifdef __MINT__ case 7: #endif case 8: cif->flags = CIF_FLAGS_DINT; break; default: cif->flags = 0; break; } break; case FFI_TYPE_FLOAT: cif->flags = CIF_FLAGS_FLOAT; break; case FFI_TYPE_DOUBLE: cif->flags = CIF_FLAGS_DOUBLE; break; #if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE) case FFI_TYPE_LONGDOUBLE: #ifdef __MINT__ cif->flags = 0; #else cif->flags = CIF_FLAGS_LDOUBLE; #endif break; #endif case FFI_TYPE_POINTER: cif->flags = CIF_FLAGS_POINTER; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = CIF_FLAGS_DINT; break; case FFI_TYPE_SINT16: cif->flags = CIF_FLAGS_SINT16; break; case FFI_TYPE_SINT8: cif->flags = CIF_FLAGS_SINT8; break; default: cif->flags = CIF_FLAGS_INT; break; } return FFI_OK; } void ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if (rvalue == NULL && cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size > 8) ecif.rvalue = alloca (cif->rtype->size); else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } static void ffi_prep_incoming_args_SYSV (char *stack, void **avalue, ffi_cif *cif) { unsigned int i; void **p_argv; char *argp; ffi_type **p_arg; argp = stack; p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { size_t z; z = (*p_arg)->size; #ifdef __MINT__ if (cif->flags && cif->rtype->type == FFI_TYPE_STRUCT && (z == 1 || z == 2)) { *p_argv = (void *) (argp + 2); z = 4; } else if (cif->flags && cif->rtype->type == FFI_TYPE_STRUCT && (z == 3 || z == 4)) { *p_argv = (void *) (argp); z = 4; } else #endif if (z <= 4) { *p_argv = (void *) (argp + 4 - z); z = 4; } else { *p_argv = (void *) argp; /* Align if necessary */ if ((sizeof(int) - 1) & z) z = ALIGN(z, sizeof(int)); } p_argv++; argp += z; } } unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, void *resp, void *args) { ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void *)); ffi_prep_incoming_args_SYSV(args, arg_area, cif); (closure->fun) (cif, resp, arg_area, closure->user_data); return cif->flags; } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; *(unsigned short *)closure->tramp = 0x207c; *(void **)(closure->tramp + 2) = codeloc; *(unsigned short *)(closure->tramp + 6) = 0x4ef9; if ( #ifdef __MINT__ (cif->rtype->type == FFI_TYPE_LONGDOUBLE) || #endif (((cif->rtype->type == FFI_TYPE_STRUCT) && !cif->flags))) *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV; else *(void **)(closure->tramp + 8) = ffi_closure_SYSV; #ifdef __rtems__ rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE ); #elif defined(__MINT__) Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE); #else syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE, FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE); #endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } polyml-5.7.1/libffi/src/m68k/sysv.S0000644000175000017500000001556213204034553015747 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2012 Alan Hourihane Copyright (c) 1998, 2012 Andreas Schwab Copyright (c) 2008 Red Hat, Inc. Copyright (c) 2012 Thorsten Glaser m68k Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_AS_CFI_PSEUDO_OP #define CFI_STARTPROC() .cfi_startproc #define CFI_OFFSET(reg,off) .cfi_offset reg,off #define CFI_DEF_CFA(reg,off) .cfi_def_cfa reg,off #define CFI_ENDPROC() .cfi_endproc #else #define CFI_STARTPROC() #define CFI_OFFSET(reg,off) #define CFI_DEF_CFA(reg,off) #define CFI_ENDPROC() #endif #ifdef __MINT__ #define CALLFUNC(funcname) _ ## funcname #else #define CALLFUNC(funcname) funcname #endif .text .globl CALLFUNC(ffi_call_SYSV) .type CALLFUNC(ffi_call_SYSV),@function .align 4 CALLFUNC(ffi_call_SYSV): CFI_STARTPROC() link %fp,#0 CFI_OFFSET(14,-8) CFI_DEF_CFA(14,8) move.l %d2,-(%sp) CFI_OFFSET(2,-12) | Make room for all of the new args. sub.l 12(%fp),%sp | Call ffi_prep_args move.l 8(%fp),-(%sp) pea 4(%sp) #if !defined __PIC__ jsr CALLFUNC(ffi_prep_args) #else bsr.l CALLFUNC(ffi_prep_args@PLTPC) #endif addq.l #8,%sp | Pass pointer to struct value, if any #ifdef __MINT__ move.l %d0,%a1 #else move.l %a0,%a1 #endif | Call the function move.l 24(%fp),%a0 jsr (%a0) | Remove the space we pushed for the args add.l 12(%fp),%sp | Load the pointer to storage for the return value move.l 20(%fp),%a1 | Load the return type code move.l 16(%fp),%d2 | If the return value pointer is NULL, assume no return value. | NOTE: On the mc68000, tst on an address register is not supported. #if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) cmp.w #0, %a1 #else tst.l %a1 #endif jbeq noretval btst #0,%d2 jbeq retlongint move.l %d0,(%a1) jbra epilogue retlongint: btst #1,%d2 jbeq retfloat move.l %d0,(%a1) move.l %d1,4(%a1) jbra epilogue retfloat: btst #2,%d2 jbeq retdouble #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.s %fp0,(%a1) #else move.l %d0,(%a1) #endif jbra epilogue retdouble: btst #3,%d2 jbeq retlongdouble #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.d %fp0,(%a1) #else move.l %d0,(%a1)+ move.l %d1,(%a1) #endif jbra epilogue retlongdouble: btst #4,%d2 jbeq retpointer #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.x %fp0,(%a1) #else move.l %d0,(%a1)+ move.l %d1,(%a1)+ move.l %d2,(%a1) #endif jbra epilogue retpointer: btst #5,%d2 jbeq retstruct1 #ifdef __MINT__ move.l %d0,(%a1) #else move.l %a0,(%a1) #endif jbra epilogue retstruct1: btst #6,%d2 jbeq retstruct2 move.b %d0,(%a1) jbra epilogue retstruct2: btst #7,%d2 jbeq retsint8 move.w %d0,(%a1) jbra epilogue retsint8: btst #8,%d2 jbeq retsint16 | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. #if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) ext.w %d0 ext.l %d0 #else extb.l %d0 #endif move.l %d0,(%a1) jbra epilogue retsint16: btst #9,%d2 jbeq noretval ext.l %d0 move.l %d0,(%a1) noretval: epilogue: move.l (%sp)+,%d2 unlk %fp rts CFI_ENDPROC() .size CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV) .globl CALLFUNC(ffi_closure_SYSV) .type CALLFUNC(ffi_closure_SYSV), @function .align 4 CALLFUNC(ffi_closure_SYSV): CFI_STARTPROC() link %fp,#-12 CFI_OFFSET(14,-8) CFI_DEF_CFA(14,8) move.l %sp,-12(%fp) pea 8(%fp) pea -12(%fp) move.l %a0,-(%sp) #if !defined __PIC__ jsr CALLFUNC(ffi_closure_SYSV_inner) #else bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) #endif lsr.l #1,%d0 jne 1f jcc .Lcls_epilogue | CIF_FLAGS_INT move.l -12(%fp),%d0 .Lcls_epilogue: | no CIF_FLAGS_* unlk %fp rts 1: lea -12(%fp),%a0 lsr.l #2,%d0 jne 1f jcs .Lcls_ret_float | CIF_FLAGS_DINT move.l (%a0)+,%d0 move.l (%a0),%d1 jra .Lcls_epilogue .Lcls_ret_float: #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.s (%a0),%fp0 #else move.l (%a0),%d0 #endif jra .Lcls_epilogue 1: lsr.l #2,%d0 jne 1f jcs .Lcls_ret_ldouble | CIF_FLAGS_DOUBLE #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.d (%a0),%fp0 #else move.l (%a0)+,%d0 move.l (%a0),%d1 #endif jra .Lcls_epilogue .Lcls_ret_ldouble: #if defined(__MC68881__) || defined(__HAVE_68881__) fmove.x (%a0),%fp0 #else move.l (%a0)+,%d0 move.l (%a0)+,%d1 move.l (%a0),%d2 #endif jra .Lcls_epilogue 1: lsr.l #2,%d0 jne 1f jcs .Lcls_ret_struct1 | CIF_FLAGS_POINTER move.l (%a0),%a0 move.l %a0,%d0 jra .Lcls_epilogue .Lcls_ret_struct1: move.b (%a0),%d0 jra .Lcls_epilogue 1: lsr.l #2,%d0 jne 1f jcs .Lcls_ret_sint8 | CIF_FLAGS_STRUCT2 move.w (%a0),%d0 jra .Lcls_epilogue .Lcls_ret_sint8: move.l (%a0),%d0 | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. #if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) ext.w %d0 ext.l %d0 #else extb.l %d0 #endif jra .Lcls_epilogue 1: | CIF_FLAGS_SINT16 move.l (%a0),%d0 ext.l %d0 jra .Lcls_epilogue CFI_ENDPROC() .size CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV) .globl CALLFUNC(ffi_closure_struct_SYSV) .type CALLFUNC(ffi_closure_struct_SYSV), @function .align 4 CALLFUNC(ffi_closure_struct_SYSV): CFI_STARTPROC() link %fp,#0 CFI_OFFSET(14,-8) CFI_DEF_CFA(14,8) move.l %sp,-12(%fp) pea 8(%fp) move.l %a1,-(%sp) move.l %a0,-(%sp) #if !defined __PIC__ jsr CALLFUNC(ffi_closure_SYSV_inner) #else bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) #endif unlk %fp rts CFI_ENDPROC() .size CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV) #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/bfin/0000755000175000017500000000000013204034553014737 5ustar daviddavidpolyml-5.7.1/libffi/src/bfin/ffitarget.h0000644000175000017500000000316013204034553017063 0ustar daviddavid/* ----------------------------------------------------------------------- ffitarget.h - Copyright (c) 2012 Alexandre K. I. de Mendonca Blackfin Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #endif polyml-5.7.1/libffi/src/bfin/ffi.c0000644000175000017500000001437713204034553015663 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2012 Alexandre K. I. de Mendonca , Paulo Pizarro Blackfin Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include /* Maximum number of GPRs available for argument passing. */ #define MAX_GPRARGS 3 /* * Return types */ #define FFIBFIN_RET_VOID 0 #define FFIBFIN_RET_BYTE 1 #define FFIBFIN_RET_HALFWORD 2 #define FFIBFIN_RET_INT64 3 #define FFIBFIN_RET_INT32 4 /*====================================================================*/ /* PROTOTYPE * /*====================================================================*/ void ffi_prep_args(unsigned char *, extended_cif *); /*====================================================================*/ /* Externals */ /* (Assembly) */ /*====================================================================*/ extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void)); /*====================================================================*/ /* Implementation */ /* */ /*====================================================================*/ /* * This function calculates the return type (size) based on type. */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* --------------------------------------* * Return handling * * --------------------------------------*/ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = FFIBFIN_RET_VOID; break; case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: cif->flags = FFIBFIN_RET_HALFWORD; break; case FFI_TYPE_UINT8: cif->flags = FFIBFIN_RET_BYTE; break; case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_FLOAT: case FFI_TYPE_POINTER: case FFI_TYPE_SINT8: cif->flags = FFIBFIN_RET_INT32; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: cif->flags = FFIBFIN_RET_INT64; break; case FFI_TYPE_STRUCT: if (cif->rtype->size <= 4){ cif->flags = FFIBFIN_RET_INT32; }else if (cif->rtype->size == 8){ cif->flags = FFIBFIN_RET_INT64; }else{ //it will return via a hidden pointer in P0 cif->flags = FFIBFIN_RET_VOID; } break; default: FFI_ASSERT(0); break; } return FFI_OK; } /* * This will prepare the arguments and will call the assembly routine * cif = the call interface * fn = the function to be called * rvalue = the return value * avalue = the arguments */ void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) { int ret_type = cif->flags; extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } } /* * This function prepares the parameters (copies them from the ecif to the stack) * to call the function (ffi_prep_args is called by the assembly routine in file * sysv.S, which also calls the actual function) */ void ffi_prep_args(unsigned char *stack, extended_cif *ecif) { register unsigned int i = 0; void **p_argv; unsigned char *argp; ffi_type **p_arg; argp = stack; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++) { size_t z; z = (*p_arg)->size; if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: { signed char v = *(SINT8 *)(* p_argv); signed int t = v; *(signed int *) argp = t; } break; case FFI_TYPE_UINT8: { unsigned char v = *(UINT8 *)(* p_argv); unsigned int t = v; *(unsigned int *) argp = t; } break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv); break; case FFI_TYPE_STRUCT: memcpy(argp, *p_argv, (*p_arg)->size); break; default: FFI_ASSERT(0); break; } } else if (z == sizeof(int)) { *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv); } else { memcpy(argp, *p_argv, z); } p_argv++; argp += z; } } polyml-5.7.1/libffi/src/bfin/sysv.S0000644000175000017500000001051113204034553016065 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2012 Alexandre K. I. de Mendonca , Paulo Pizarro Blackfin Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .text .align 4 /* There is a "feature" in the bfin toolchain that it puts a _ before function names that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV */ .global _ffi_call_SYSV; .type _ffi_call_SYSV, STT_FUNC; .func ffi_call_SYSV /* cif->bytes = R0 (fp+8) &ecif = R1 (fp+12) ffi_prep_args = R2 (fp+16) ret_type = stack (fp+20) ecif.rvalue = stack (fp+24) fn = stack (fp+28) got (fp+32) There is room for improvement here (we can use temporary registers instead of saving the values in the memory) REGS: P5 => Stack pointer (function arguments) R5 => cif->bytes R4 => ret->type FP-20 = P3 FP-16 = SP (parameters area) FP-12 = SP (temp) FP-08 = function return part 1 [R0] FP-04 = function return part 2 [R1] */ _ffi_call_SYSV: .prologue: LINK 20; [FP-20] = P3; [FP+8] = R0; [FP+12] = R1; [FP+16] = R2; .allocate_stack: //alocate cif->bytes into the stack R1 = [FP+8]; R0 = SP; R0 = R0 - R1; R1 = 4; R0 = R0 - R1; [FP-12] = SP; SP = R0; [FP-16] = SP; .call_prep_args: //get the addr of prep_args P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4]; P1 = [P0]; P3 = [P0+4]; R0 = [FP-16];//SP (parameter area) R1 = [FP+12];//ecif call (P1); .call_user_function: //ajust SP so as to allow the user function access the parameters on the stack SP = [FP-16]; //point to function parameters R0 = [SP]; R1 = [SP+4]; R2 = [SP+8]; //load user function address P0 = FP; P0 +=28; P1 = [P0]; P1 = [P1]; P3 = [P0+4]; /* For functions returning aggregate values (struct) occupying more than 8 bytes, the caller allocates the return value object on the stack and the address of this object is passed to the callee as a hidden argument in register P0. */ P0 = [FP+24]; call (P1); SP = [FP-12]; .compute_return: P2 = [FP-20]; [FP-8] = R0; [FP-4] = R1; R0 = [FP+20]; R1 = R0 << 2; R0 = [P2+.rettable@GOT17M4]; R0 = R1 + R0; P2 = R0; R1 = [P2]; P2 = [FP+-20]; R0 = [P2+.rettable@GOT17M4]; R0 = R1 + R0; P2 = R0; R0 = [FP-8]; R1 = [FP-4]; jump (P2); /* #define FFIBFIN_RET_VOID 0 #define FFIBFIN_RET_BYTE 1 #define FFIBFIN_RET_HALFWORD 2 #define FFIBFIN_RET_INT64 3 #define FFIBFIN_RET_INT32 4 */ .align 4 .align 4 .rettable: .dd .epilogue - .rettable .dd .rbyte - .rettable; .dd .rhalfword - .rettable; .dd .rint64 - .rettable; .dd .rint32 - .rettable; .rbyte: P0 = [FP+24]; R0 = R0.B (Z); [P0] = R0; JUMP .epilogue .rhalfword: P0 = [FP+24]; R0 = R0.L; [P0] = R0; JUMP .epilogue .rint64: P0 = [FP+24];// &rvalue [P0] = R0; [P0+4] = R1; JUMP .epilogue .rint32: P0 = [FP+24]; [P0] = R0; .epilogue: R0 = [FP+8]; R1 = [FP+12]; R2 = [FP+16]; P3 = [FP-20]; UNLINK; RTS; .size _ffi_call_SYSV,.-_ffi_call_SYSV; .endfunc polyml-5.7.1/libffi/src/dlmalloc.c0000644000175000017500000054620013204034553015763 0ustar daviddavid/* This is a version (aka dlmalloc) of malloc/free/realloc written by Doug Lea and released to the public domain, as explained at http://creativecommons.org/licenses/publicdomain. Send questions, comments, complaints, performance data, etc to dl@cs.oswego.edu * Version 2.8.3 Thu Sep 22 11:16:15 2005 Doug Lea (dl at gee) Note: There may be an updated version of this malloc obtainable at ftp://gee.cs.oswego.edu/pub/misc/malloc.c Check before installing! * Quickstart This library is all in one file to simplify the most common usage: ftp it, compile it (-O3), and link it into another program. All of the compile-time options default to reasonable values for use on most platforms. You might later want to step through various compile-time and dynamic tuning options. For convenience, an include file for code using this malloc is at: ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.3.h You don't really need this .h file unless you call functions not defined in your system include files. The .h file contains only the excerpts from this file needed for using this malloc on ANSI C/C++ systems, so long as you haven't changed compile-time options about naming and tuning parameters. If you do, then you can create your own malloc.h that does include all settings by cutting at the point indicated below. Note that you may already by default be using a C library containing a malloc that is based on some version of this malloc (for example in linux). You might still want to use the one in this file to customize settings or to avoid overheads associated with library versions. * Vital statistics: Supported pointer/size_t representation: 4 or 8 bytes size_t MUST be an unsigned type of the same width as pointers. (If you are using an ancient system that declares size_t as a signed type, or need it to be a different width than pointers, you can use a previous release of this malloc (e.g. 2.7.2) supporting these.) Alignment: 8 bytes (default) This suffices for nearly all current machines and C compilers. However, you can define MALLOC_ALIGNMENT to be wider than this if necessary (up to 128bytes), at the expense of using more space. Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) 8 or 16 bytes (if 8byte sizes) Each malloced chunk has a hidden word of overhead holding size and status information, and additional cross-check word if FOOTERS is defined. Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) 8-byte ptrs: 32 bytes (including overhead) Even a request for zero bytes (i.e., malloc(0)) returns a pointer to something of the minimum allocatable size. The maximum overhead wastage (i.e., number of extra bytes allocated than were requested in malloc) is less than or equal to the minimum size, except for requests >= mmap_threshold that are serviced via mmap(), where the worst case wastage is about 32 bytes plus the remainder from a system page (the minimal mmap unit); typically 4096 or 8192 bytes. Security: static-safe; optionally more or less The "security" of malloc refers to the ability of malicious code to accentuate the effects of errors (for example, freeing space that is not currently malloc'ed or overwriting past the ends of chunks) in code that calls malloc. This malloc guarantees not to modify any memory locations below the base of heap, i.e., static variables, even in the presence of usage errors. The routines additionally detect most improper frees and reallocs. All this holds as long as the static bookkeeping for malloc itself is not corrupted by some other means. This is only one aspect of security -- these checks do not, and cannot, detect all possible programming errors. If FOOTERS is defined nonzero, then each allocated chunk carries an additional check word to verify that it was malloced from its space. These check words are the same within each execution of a program using malloc, but differ across executions, so externally crafted fake chunks cannot be freed. This improves security by rejecting frees/reallocs that could corrupt heap memory, in addition to the checks preventing writes to statics that are always on. This may further improve security at the expense of time and space overhead. (Note that FOOTERS may also be worth using with MSPACES.) By default detected errors cause the program to abort (calling "abort()"). You can override this to instead proceed past errors by defining PROCEED_ON_ERROR. In this case, a bad free has no effect, and a malloc that encounters a bad address caused by user overwrites will ignore the bad address by dropping pointers and indices to all known memory. This may be appropriate for programs that should continue if at all possible in the face of programming errors, although they may run out of memory because dropped memory is never reclaimed. If you don't like either of these options, you can define CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything else. And if if you are sure that your program using malloc has no errors or vulnerabilities, you can define INSECURE to 1, which might (or might not) provide a small performance improvement. Thread-safety: NOT thread-safe unless USE_LOCKS defined When USE_LOCKS is defined, each public call to malloc, free, etc is surrounded with either a pthread mutex or a win32 spinlock (depending on WIN32). This is not especially fast, and can be a major bottleneck. It is designed only to provide minimal protection in concurrent environments, and to provide a basis for extensions. If you are using malloc in a concurrent program, consider instead using ptmalloc, which is derived from a version of this malloc. (See http://www.malloc.de). System requirements: Any combination of MORECORE and/or MMAP/MUNMAP This malloc can use unix sbrk or any emulation (invoked using the CALL_MORECORE macro) and/or mmap/munmap or any emulation (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system memory. On most unix systems, it tends to work best if both MORECORE and MMAP are enabled. On Win32, it uses emulations based on VirtualAlloc. It also uses common C library functions like memset. Compliance: I believe it is compliant with the Single Unix Specification (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably others as well. * Overview of algorithms This is not the fastest, most space-conserving, most portable, or most tunable malloc ever written. However it is among the fastest while also being among the most space-conserving, portable and tunable. Consistent balance across these factors results in a good general-purpose allocator for malloc-intensive programs. In most ways, this malloc is a best-fit allocator. Generally, it chooses the best-fitting existing chunk for a request, with ties broken in approximately least-recently-used order. (This strategy normally maintains low fragmentation.) However, for requests less than 256bytes, it deviates from best-fit when there is not an exactly fitting available chunk by preferring to use space adjacent to that used for the previous small request, as well as by breaking ties in approximately most-recently-used order. (These enhance locality of series of small allocations.) And for very large requests (>= 256Kb by default), it relies on system memory mapping facilities, if supported. (This helps avoid carrying around and possibly fragmenting memory used only for large chunks.) All operations (except malloc_stats and mallinfo) have execution times that are bounded by a constant factor of the number of bits in a size_t, not counting any clearing in calloc or copying in realloc, or actions surrounding MORECORE and MMAP that have times proportional to the number of non-contiguous regions returned by system allocation routines, which is often just 1. The implementation is not very modular and seriously overuses macros. Perhaps someday all C compilers will do as good a job inlining modular code as can now be done by brute-force expansion, but now, enough of them seem not to. Some compilers issue a lot of warnings about code that is dead/unreachable only on some platforms, and also about intentional uses of negation on unsigned types. All known cases of each can be ignored. For a longer but out of date high-level description, see http://gee.cs.oswego.edu/dl/html/malloc.html * MSPACES If MSPACES is defined, then in addition to malloc, free, etc., this file also defines mspace_malloc, mspace_free, etc. These are versions of malloc routines that take an "mspace" argument obtained using create_mspace, to control all internal bookkeeping. If ONLY_MSPACES is defined, only these versions are compiled. So if you would like to use this allocator for only some allocations, and your system malloc for others, you can compile with ONLY_MSPACES and then do something like... static mspace mymspace = create_mspace(0,0); // for example #define mymalloc(bytes) mspace_malloc(mymspace, bytes) (Note: If you only need one instance of an mspace, you can instead use "USE_DL_PREFIX" to relabel the global malloc.) You can similarly create thread-local allocators by storing mspaces as thread-locals. For example: static __thread mspace tlms = 0; void* tlmalloc(size_t bytes) { if (tlms == 0) tlms = create_mspace(0, 0); return mspace_malloc(tlms, bytes); } void tlfree(void* mem) { mspace_free(tlms, mem); } Unless FOOTERS is defined, each mspace is completely independent. You cannot allocate from one and free to another (although conformance is only weakly checked, so usage errors are not always caught). If FOOTERS is defined, then each chunk carries around a tag indicating its originating mspace, and frees are directed to their originating spaces. ------------------------- Compile-time options --------------------------- Be careful in setting #define values for numerical constants of type size_t. On some systems, literal values are not automatically extended to size_t precision unless they are explicitly casted. WIN32 default: defined if _WIN32 defined Defining WIN32 sets up defaults for MS environment and compilers. Otherwise defaults are for unix. MALLOC_ALIGNMENT default: (size_t)8 Controls the minimum alignment for malloc'ed chunks. It must be a power of two and at least 8, even on machines for which smaller alignments would suffice. It may be defined as larger than this though. Note however that code and data structures are optimized for the case of 8-byte alignment. MSPACES default: 0 (false) If true, compile in support for independent allocation spaces. This is only supported if HAVE_MMAP is true. ONLY_MSPACES default: 0 (false) If true, only compile in mspace versions, not regular versions. USE_LOCKS default: 0 (false) Causes each call to each public routine to be surrounded with pthread or WIN32 mutex lock/unlock. (If set true, this can be overridden on a per-mspace basis for mspace versions.) FOOTERS default: 0 If true, provide extra checking and dispatching by placing information in the footers of allocated chunks. This adds space and time overhead. INSECURE default: 0 If true, omit checks for usage errors and heap space overwrites. USE_DL_PREFIX default: NOT defined Causes compiler to prefix all public routines with the string 'dl'. This can be useful when you only want to use this malloc in one part of a program, using your regular system malloc elsewhere. ABORT default: defined as abort() Defines how to abort on failed checks. On most systems, a failed check cannot die with an "assert" or even print an informative message, because the underlying print routines in turn call malloc, which will fail again. Generally, the best policy is to simply call abort(). It's not very useful to do more than this because many errors due to overwriting will show up as address faults (null, odd addresses etc) rather than malloc-triggered checks, so will also abort. Also, most compilers know that abort() does not return, so can better optimize code conditionally calling it. PROCEED_ON_ERROR default: defined as 0 (false) Controls whether detected bad addresses cause them to bypassed rather than aborting. If set, detected bad arguments to free and realloc are ignored. And all bookkeeping information is zeroed out upon a detected overwrite of freed heap space, thus losing the ability to ever return it from malloc again, but enabling the application to proceed. If PROCEED_ON_ERROR is defined, the static variable malloc_corruption_error_count is compiled in and can be examined to see if errors have occurred. This option generates slower code than the default abort policy. DEBUG default: NOT defined The DEBUG setting is mainly intended for people trying to modify this code or diagnose problems when porting to new platforms. However, it may also be able to better isolate user errors than just using runtime checks. The assertions in the check routines spell out in more detail the assumptions and invariants underlying the algorithms. The checking is fairly extensive, and will slow down execution noticeably. Calling malloc_stats or mallinfo with DEBUG set will attempt to check every non-mmapped allocated and free chunk in the course of computing the summaries. ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) Debugging assertion failures can be nearly impossible if your version of the assert macro causes malloc to be called, which will lead to a cascade of further failures, blowing the runtime stack. ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), which will usually make debugging easier. MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 The action to take before "return 0" when malloc fails to be able to return memory because there is none available. HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES True if this system supports sbrk or an emulation of it. MORECORE default: sbrk The name of the sbrk-style system routine to call to obtain more memory. See below for guidance on writing custom MORECORE functions. The type of the argument to sbrk/MORECORE varies across systems. It cannot be size_t, because it supports negative arguments, so it is normally the signed type of the same width as size_t (sometimes declared as "intptr_t"). It doesn't much matter though. Internally, we only call it with arguments less than half the max value of a size_t, which should work across all reasonable possibilities, although sometimes generating compiler warnings. See near the end of this file for guidelines for creating a custom version of MORECORE. MORECORE_CONTIGUOUS default: 1 (true) If true, take advantage of fact that consecutive calls to MORECORE with positive arguments always return contiguous increasing addresses. This is true of unix sbrk. It does not hurt too much to set it true anyway, since malloc copes with non-contiguities. Setting it false when definitely non-contiguous saves time and possibly wasted space it would take to discover this though. MORECORE_CANNOT_TRIM default: NOT defined True if MORECORE cannot release space back to the system when given negative arguments. This is generally necessary only if you are using a hand-crafted MORECORE function that cannot handle negative arguments. HAVE_MMAP default: 1 (true) True if this system supports mmap or an emulation of it. If so, and HAVE_MORECORE is not true, MMAP is used for all system allocation. If set and HAVE_MORECORE is true as well, MMAP is primarily used to directly allocate very large blocks. It is also used as a backup strategy in cases where MORECORE fails to provide space from system. Note: A single call to MUNMAP is assumed to be able to unmap memory that may have be allocated using multiple calls to MMAP, so long as they are adjacent. HAVE_MREMAP default: 1 on linux, else 0 If true realloc() uses mremap() to re-allocate large blocks and extend or shrink allocation spaces. MMAP_CLEARS default: 1 on unix True if mmap clears memory so calloc doesn't need to. This is true for standard unix mmap using /dev/zero. USE_BUILTIN_FFS default: 0 (i.e., not used) Causes malloc to use the builtin ffs() function to compute indices. Some compilers may recognize and intrinsify ffs to be faster than the supplied C version. Also, the case of x86 using gcc is special-cased to an asm instruction, so is already as fast as it can be, and so this setting has no effect. (On most x86s, the asm version is only slightly faster than the C version.) malloc_getpagesize default: derive from system includes, or 4096. The system page size. To the extent possible, this malloc manages memory from the system in page-size units. This may be (and usually is) a function rather than a constant. This is ignored if WIN32, where page size is determined using getSystemInfo during initialization. USE_DEV_RANDOM default: 0 (i.e., not used) Causes malloc to use /dev/random to initialize secure magic seed for stamping footers. Otherwise, the current time is used. NO_MALLINFO default: 0 If defined, don't compile "mallinfo". This can be a simple way of dealing with mismatches between system declarations and those in this file. MALLINFO_FIELD_TYPE default: size_t The type of the fields in the mallinfo struct. This was originally defined as "int" in SVID etc, but is more usefully defined as size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set REALLOC_ZERO_BYTES_FREES default: not defined This should be set if a call to realloc with zero bytes should be the same as a call to free. Some people think it should. Otherwise, since this malloc returns a unique pointer for malloc(0), so does realloc(p, 0). LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H LACKS_STDLIB_H default: NOT defined unless on WIN32 Define these if your system does not have these header files. You might need to manually insert some of the declarations they provide. DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, system_info.dwAllocationGranularity in WIN32, otherwise 64K. Also settable using mallopt(M_GRANULARITY, x) The unit for allocating and deallocating memory from the system. On most systems with contiguous MORECORE, there is no reason to make this more than a page. However, systems with MMAP tend to either require or encourage larger granularities. You can increase this value to prevent system allocation functions to be called so often, especially if they are slow. The value must be at least one page and must be a power of two. Setting to 0 causes initialization to either page size or win32 region size. (Note: In previous versions of malloc, the equivalent of this option was called "TOP_PAD") DEFAULT_TRIM_THRESHOLD default: 2MB Also settable using mallopt(M_TRIM_THRESHOLD, x) The maximum amount of unused top-most memory to keep before releasing via malloc_trim in free(). Automatic trimming is mainly useful in long-lived programs using contiguous MORECORE. Because trimming via sbrk can be slow on some systems, and can sometimes be wasteful (in cases where programs immediately afterward allocate more large chunks) the value should be high enough so that your overall system performance would improve by releasing this much memory. As a rough guide, you might set to a value close to the average size of a process (program) running on your system. Releasing this much memory would allow such a process to run in memory. Generally, it is worth tuning trim thresholds when a program undergoes phases where several large chunks are allocated and released in ways that can reuse each other's storage, perhaps mixed with phases where there are no such chunks at all. The trim value must be greater than page size to have any useful effect. To disable trimming completely, you can set to MAX_SIZE_T. Note that the trick some people use of mallocing a huge space and then freeing it at program startup, in an attempt to reserve system memory, doesn't have the intended effect under automatic trimming, since that memory will immediately be returned to the system. DEFAULT_MMAP_THRESHOLD default: 256K Also settable using mallopt(M_MMAP_THRESHOLD, x) The request size threshold for using MMAP to directly service a request. Requests of at least this size that cannot be allocated using already-existing space will be serviced via mmap. (If enough normal freed space already exists it is used instead.) Using mmap segregates relatively large chunks of memory so that they can be individually obtained and released from the host system. A request serviced through mmap is never reused by any other request (at least not directly; the system may just so happen to remap successive requests to the same locations). Segregating space in this way has the benefits that: Mmapped space can always be individually released back to the system, which helps keep the system level memory demands of a long-lived program low. Also, mapped memory doesn't become `locked' between other chunks, as can happen with normally allocated chunks, which means that even trimming via malloc_trim would not release them. However, it has the disadvantage that the space cannot be reclaimed, consolidated, and then used to service later requests, as happens with normal chunks. The advantages of mmap nearly always outweigh disadvantages for "large" chunks, but the value of "large" may vary across systems. The default is an empirically derived value that works well in most systems. You can disable mmap by setting to MAX_SIZE_T. */ #ifndef WIN32 #ifdef _WIN32 #define WIN32 1 #endif /* _WIN32 */ #endif /* WIN32 */ #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include #define HAVE_MMAP 1 #define HAVE_MORECORE 0 #define LACKS_UNISTD_H #define LACKS_SYS_PARAM_H #define LACKS_SYS_MMAN_H #define LACKS_STRING_H #define LACKS_STRINGS_H #define LACKS_SYS_TYPES_H #define LACKS_ERRNO_H #define MALLOC_FAILURE_ACTION #define MMAP_CLEARS 0 /* WINCE and some others apparently don't clear */ #endif /* WIN32 */ #ifdef __OS2__ #define INCL_DOS #include #define HAVE_MMAP 1 #define HAVE_MORECORE 0 #define LACKS_SYS_MMAN_H #endif /* __OS2__ */ #if defined(DARWIN) || defined(_DARWIN) /* Mac OSX docs advise not to use sbrk; it seems better to use mmap */ #ifndef HAVE_MORECORE #define HAVE_MORECORE 0 #define HAVE_MMAP 1 #endif /* HAVE_MORECORE */ #endif /* DARWIN */ #ifndef LACKS_SYS_TYPES_H #include /* For size_t */ #endif /* LACKS_SYS_TYPES_H */ /* The maximum possible size_t value has all bits set */ #define MAX_SIZE_T (~(size_t)0) #ifndef ONLY_MSPACES #define ONLY_MSPACES 0 #endif /* ONLY_MSPACES */ #ifndef MSPACES #if ONLY_MSPACES #define MSPACES 1 #else /* ONLY_MSPACES */ #define MSPACES 0 #endif /* ONLY_MSPACES */ #endif /* MSPACES */ #ifndef MALLOC_ALIGNMENT #define MALLOC_ALIGNMENT ((size_t)8U) #endif /* MALLOC_ALIGNMENT */ #ifndef FOOTERS #define FOOTERS 0 #endif /* FOOTERS */ #ifndef ABORT #define ABORT abort() #endif /* ABORT */ #ifndef ABORT_ON_ASSERT_FAILURE #define ABORT_ON_ASSERT_FAILURE 1 #endif /* ABORT_ON_ASSERT_FAILURE */ #ifndef PROCEED_ON_ERROR #define PROCEED_ON_ERROR 0 #endif /* PROCEED_ON_ERROR */ #ifndef USE_LOCKS #define USE_LOCKS 0 #endif /* USE_LOCKS */ #ifndef INSECURE #define INSECURE 0 #endif /* INSECURE */ #ifndef HAVE_MMAP #define HAVE_MMAP 1 #endif /* HAVE_MMAP */ #ifndef MMAP_CLEARS #define MMAP_CLEARS 1 #endif /* MMAP_CLEARS */ #ifndef HAVE_MREMAP #ifdef linux #define HAVE_MREMAP 1 #else /* linux */ #define HAVE_MREMAP 0 #endif /* linux */ #endif /* HAVE_MREMAP */ #ifndef MALLOC_FAILURE_ACTION #define MALLOC_FAILURE_ACTION errno = ENOMEM; #endif /* MALLOC_FAILURE_ACTION */ #ifndef HAVE_MORECORE #if ONLY_MSPACES #define HAVE_MORECORE 0 #else /* ONLY_MSPACES */ #define HAVE_MORECORE 1 #endif /* ONLY_MSPACES */ #endif /* HAVE_MORECORE */ #if !HAVE_MORECORE #define MORECORE_CONTIGUOUS 0 #else /* !HAVE_MORECORE */ #ifndef MORECORE #define MORECORE sbrk #endif /* MORECORE */ #ifndef MORECORE_CONTIGUOUS #define MORECORE_CONTIGUOUS 1 #endif /* MORECORE_CONTIGUOUS */ #endif /* HAVE_MORECORE */ #ifndef DEFAULT_GRANULARITY #if MORECORE_CONTIGUOUS #define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ #else /* MORECORE_CONTIGUOUS */ #define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) #endif /* MORECORE_CONTIGUOUS */ #endif /* DEFAULT_GRANULARITY */ #ifndef DEFAULT_TRIM_THRESHOLD #ifndef MORECORE_CANNOT_TRIM #define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) #else /* MORECORE_CANNOT_TRIM */ #define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T #endif /* MORECORE_CANNOT_TRIM */ #endif /* DEFAULT_TRIM_THRESHOLD */ #ifndef DEFAULT_MMAP_THRESHOLD #if HAVE_MMAP #define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) #else /* HAVE_MMAP */ #define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T #endif /* HAVE_MMAP */ #endif /* DEFAULT_MMAP_THRESHOLD */ #ifndef USE_BUILTIN_FFS #define USE_BUILTIN_FFS 0 #endif /* USE_BUILTIN_FFS */ #ifndef USE_DEV_RANDOM #define USE_DEV_RANDOM 0 #endif /* USE_DEV_RANDOM */ #ifndef NO_MALLINFO #define NO_MALLINFO 0 #endif /* NO_MALLINFO */ #ifndef MALLINFO_FIELD_TYPE #define MALLINFO_FIELD_TYPE size_t #endif /* MALLINFO_FIELD_TYPE */ /* mallopt tuning options. SVID/XPG defines four standard parameter numbers for mallopt, normally defined in malloc.h. None of these are used in this malloc, so setting them has no effect. But this malloc does support the following options. */ #define M_TRIM_THRESHOLD (-1) #define M_GRANULARITY (-2) #define M_MMAP_THRESHOLD (-3) /* ------------------------ Mallinfo declarations ------------------------ */ #if !NO_MALLINFO /* This version of malloc supports the standard SVID/XPG mallinfo routine that returns a struct containing usage properties and statistics. It should work on any system that has a /usr/include/malloc.h defining struct mallinfo. The main declaration needed is the mallinfo struct that is returned (by-copy) by mallinfo(). The malloinfo struct contains a bunch of fields that are not even meaningful in this version of malloc. These fields are are instead filled by mallinfo() with other numbers that might be of interest. HAVE_USR_INCLUDE_MALLOC_H should be set if you have a /usr/include/malloc.h file that includes a declaration of struct mallinfo. If so, it is included; else a compliant version is declared below. These must be precisely the same for mallinfo() to work. The original SVID version of this struct, defined on most systems with mallinfo, declares all fields as ints. But some others define as unsigned long. If your system defines the fields using a type of different width than listed here, you MUST #include your system version and #define HAVE_USR_INCLUDE_MALLOC_H. */ /* #define HAVE_USR_INCLUDE_MALLOC_H */ #ifdef HAVE_USR_INCLUDE_MALLOC_H #include "/usr/include/malloc.h" #else /* HAVE_USR_INCLUDE_MALLOC_H */ /* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */ #define _STRUCT_MALLINFO struct mallinfo { MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ MALLINFO_FIELD_TYPE smblks; /* always 0 */ MALLINFO_FIELD_TYPE hblks; /* always 0 */ MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ MALLINFO_FIELD_TYPE fordblks; /* total free space */ MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ }; #endif /* HAVE_USR_INCLUDE_MALLOC_H */ #endif /* NO_MALLINFO */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #if !ONLY_MSPACES /* ------------------- Declarations of public routines ------------------- */ #ifndef USE_DL_PREFIX #define dlcalloc calloc #define dlfree free #define dlmalloc malloc #define dlmemalign memalign #define dlrealloc realloc #define dlvalloc valloc #define dlpvalloc pvalloc #define dlmallinfo mallinfo #define dlmallopt mallopt #define dlmalloc_trim malloc_trim #define dlmalloc_stats malloc_stats #define dlmalloc_usable_size malloc_usable_size #define dlmalloc_footprint malloc_footprint #define dlmalloc_max_footprint malloc_max_footprint #define dlindependent_calloc independent_calloc #define dlindependent_comalloc independent_comalloc #endif /* USE_DL_PREFIX */ /* malloc(size_t n) Returns a pointer to a newly allocated chunk of at least n bytes, or null if no space is available, in which case errno is set to ENOMEM on ANSI C systems. If n is zero, malloc returns a minimum-sized chunk. (The minimum size is 16 bytes on most 32bit systems, and 32 bytes on 64bit systems.) Note that size_t is an unsigned type, so calls with arguments that would be negative if signed are interpreted as requests for huge amounts of space, which will often fail. The maximum supported value of n differs across systems, but is in all cases less than the maximum representable value of a size_t. */ void* dlmalloc(size_t); /* free(void* p) Releases the chunk of memory pointed to by p, that had been previously allocated using malloc or a related routine such as realloc. It has no effect if p is null. If p was not malloced or already freed, free(p) will by default cause the current program to abort. */ void dlfree(void*); /* calloc(size_t n_elements, size_t element_size); Returns a pointer to n_elements * element_size bytes, with all locations set to zero. */ void* dlcalloc(size_t, size_t); /* realloc(void* p, size_t n) Returns a pointer to a chunk of size n that contains the same data as does chunk p up to the minimum of (n, p's size) bytes, or null if no space is available. The returned pointer may or may not be the same as p. The algorithm prefers extending p in most cases when possible, otherwise it employs the equivalent of a malloc-copy-free sequence. If p is null, realloc is equivalent to malloc. If space is not available, realloc returns null, errno is set (if on ANSI) and p is NOT freed. if n is for fewer bytes than already held by p, the newly unused space is lopped off and freed if possible. realloc with a size argument of zero (re)allocates a minimum-sized chunk. The old unix realloc convention of allowing the last-free'd chunk to be used as an argument to realloc is not supported. */ void* dlrealloc(void*, size_t); /* memalign(size_t alignment, size_t n); Returns a pointer to a newly allocated chunk of n bytes, aligned in accord with the alignment argument. The alignment argument should be a power of two. If the argument is not a power of two, the nearest greater power is used. 8-byte alignment is guaranteed by normal malloc calls, so don't bother calling memalign with an argument of 8 or less. Overreliance on memalign is a sure way to fragment space. */ void* dlmemalign(size_t, size_t); /* valloc(size_t n); Equivalent to memalign(pagesize, n), where pagesize is the page size of the system. If the pagesize is unknown, 4096 is used. */ void* dlvalloc(size_t); /* mallopt(int parameter_number, int parameter_value) Sets tunable parameters The format is to provide a (parameter-number, parameter-value) pair. mallopt then sets the corresponding parameter to the argument value if it can (i.e., so long as the value is meaningful), and returns 1 if successful else 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, normally defined in malloc.h. None of these are use in this malloc, so setting them has no effect. But this malloc also supports other options in mallopt. See below for details. Briefly, supported parameters are as follows (listed defaults are for "typical" configurations). Symbol param # default allowed param values M_TRIM_THRESHOLD -1 2*1024*1024 any (MAX_SIZE_T disables) M_GRANULARITY -2 page size any power of 2 >= page size M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) */ int dlmallopt(int, int); /* malloc_footprint(); Returns the number of bytes obtained from the system. The total number of bytes allocated by malloc, realloc etc., is less than this value. Unlike mallinfo, this function returns only a precomputed result, so can be called frequently to monitor memory consumption. Even if locks are otherwise defined, this function does not use them, so results might not be up to date. */ size_t dlmalloc_footprint(void); /* malloc_max_footprint(); Returns the maximum number of bytes obtained from the system. This value will be greater than current footprint if deallocated space has been reclaimed by the system. The peak number of bytes allocated by malloc, realloc etc., is less than this value. Unlike mallinfo, this function returns only a precomputed result, so can be called frequently to monitor memory consumption. Even if locks are otherwise defined, this function does not use them, so results might not be up to date. */ size_t dlmalloc_max_footprint(void); #if !NO_MALLINFO /* mallinfo() Returns (by copy) a struct containing various summary statistics: arena: current total non-mmapped bytes allocated from system ordblks: the number of free chunks smblks: always zero. hblks: current number of mmapped regions hblkhd: total bytes held in mmapped regions usmblks: the maximum total allocated space. This will be greater than current total if trimming has occurred. fsmblks: always zero uordblks: current total allocated space (normal or mmapped) fordblks: total free space keepcost: the maximum number of bytes that could ideally be released back to system via malloc_trim. ("ideally" means that it ignores page restrictions etc.) Because these fields are ints, but internal bookkeeping may be kept as longs, the reported values may wrap around zero and thus be inaccurate. */ struct mallinfo dlmallinfo(void); #endif /* NO_MALLINFO */ /* independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); independent_calloc is similar to calloc, but instead of returning a single cleared space, it returns an array of pointers to n_elements independent elements that can hold contents of size elem_size, each of which starts out cleared, and can be independently freed, realloc'ed etc. The elements are guaranteed to be adjacently allocated (this is not guaranteed to occur with multiple callocs or mallocs), which may also improve cache locality in some applications. The "chunks" argument is optional (i.e., may be null, which is probably the most typical usage). If it is null, the returned array is itself dynamically allocated and should also be freed when it is no longer needed. Otherwise, the chunks array must be of at least n_elements in length. It is filled in with the pointers to the chunks. In either case, independent_calloc returns this pointer array, or null if the allocation failed. If n_elements is zero and "chunks" is null, it returns a chunk representing an array with zero elements (which should be freed if not wanted). Each element must be individually freed when it is no longer needed. If you'd like to instead be able to free all at once, you should instead use regular calloc and assign pointers into this space to represent elements. (In this case though, you cannot independently free elements.) independent_calloc simplifies and speeds up implementations of many kinds of pools. It may also be useful when constructing large data structures that initially have a fixed number of fixed-sized nodes, but the number is not known at compile time, and some of the nodes may later need to be freed. For example: struct Node { int item; struct Node* next; }; struct Node* build_list() { struct Node** pool; int n = read_number_of_nodes_needed(); if (n <= 0) return 0; pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); if (pool == 0) die(); // organize into a linked list... struct Node* first = pool[0]; for (i = 0; i < n-1; ++i) pool[i]->next = pool[i+1]; free(pool); // Can now free the array (or not, if it is needed later) return first; } */ void** dlindependent_calloc(size_t, size_t, void**); /* independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); independent_comalloc allocates, all at once, a set of n_elements chunks with sizes indicated in the "sizes" array. It returns an array of pointers to these elements, each of which can be independently freed, realloc'ed etc. The elements are guaranteed to be adjacently allocated (this is not guaranteed to occur with multiple callocs or mallocs), which may also improve cache locality in some applications. The "chunks" argument is optional (i.e., may be null). If it is null the returned array is itself dynamically allocated and should also be freed when it is no longer needed. Otherwise, the chunks array must be of at least n_elements in length. It is filled in with the pointers to the chunks. In either case, independent_comalloc returns this pointer array, or null if the allocation failed. If n_elements is zero and chunks is null, it returns a chunk representing an array with zero elements (which should be freed if not wanted). Each element must be individually freed when it is no longer needed. If you'd like to instead be able to free all at once, you should instead use a single regular malloc, and assign pointers at particular offsets in the aggregate space. (In this case though, you cannot independently free elements.) independent_comallac differs from independent_calloc in that each element may have a different size, and also that it does not automatically clear elements. independent_comalloc can be used to speed up allocation in cases where several structs or objects must always be allocated at the same time. For example: struct Head { ... } struct Foot { ... } void send_message(char* msg) { int msglen = strlen(msg); size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; void* chunks[3]; if (independent_comalloc(3, sizes, chunks) == 0) die(); struct Head* head = (struct Head*)(chunks[0]); char* body = (char*)(chunks[1]); struct Foot* foot = (struct Foot*)(chunks[2]); // ... } In general though, independent_comalloc is worth using only for larger values of n_elements. For small values, you probably won't detect enough difference from series of malloc calls to bother. Overuse of independent_comalloc can increase overall memory usage, since it cannot reuse existing noncontiguous small chunks that might be available for some of the elements. */ void** dlindependent_comalloc(size_t, size_t*, void**); /* pvalloc(size_t n); Equivalent to valloc(minimum-page-that-holds(n)), that is, round up n to nearest pagesize. */ void* dlpvalloc(size_t); /* malloc_trim(size_t pad); If possible, gives memory back to the system (via negative arguments to sbrk) if there is unused memory at the `high' end of the malloc pool or in unused MMAP segments. You can call this after freeing large blocks of memory to potentially reduce the system-level memory requirements of a program. However, it cannot guarantee to reduce memory. Under some allocation patterns, some large free blocks of memory will be locked between two used chunks, so they cannot be given back to the system. The `pad' argument to malloc_trim represents the amount of free trailing space to leave untrimmed. If this argument is zero, only the minimum amount of memory to maintain internal data structures will be left. Non-zero arguments can be supplied to maintain enough trailing space to service future expected allocations without having to re-obtain memory from the system. Malloc_trim returns 1 if it actually released any memory, else 0. */ int dlmalloc_trim(size_t); /* malloc_usable_size(void* p); Returns the number of bytes you can actually use in an allocated chunk, which may be more than you requested (although often not) due to alignment and minimum size constraints. You can use this many bytes without worrying about overwriting other allocated objects. This is not a particularly great programming practice. malloc_usable_size can be more useful in debugging and assertions, for example: p = malloc(n); assert(malloc_usable_size(p) >= 256); */ size_t dlmalloc_usable_size(void*); /* malloc_stats(); Prints on stderr the amount of space obtained from the system (both via sbrk and mmap), the maximum amount (which may be more than current if malloc_trim and/or munmap got called), and the current number of bytes allocated via malloc (or realloc, etc) but not yet freed. Note that this is the number of bytes allocated, not the number requested. It will be larger than the number requested because of alignment and bookkeeping overhead. Because it includes alignment wastage as being in use, this figure may be greater than zero even when no user-level chunks are allocated. The reported current and maximum system memory can be inaccurate if a program makes other calls to system memory allocation functions (normally sbrk) outside of malloc. malloc_stats prints only the most commonly interesting statistics. More information can be obtained by calling mallinfo. */ void dlmalloc_stats(void); #endif /* ONLY_MSPACES */ #if MSPACES /* mspace is an opaque type representing an independent region of space that supports mspace_malloc, etc. */ typedef void* mspace; /* create_mspace creates and returns a new independent space with the given initial capacity, or, if 0, the default granularity size. It returns null if there is no system memory available to create the space. If argument locked is non-zero, the space uses a separate lock to control access. The capacity of the space will grow dynamically as needed to service mspace_malloc requests. You can control the sizes of incremental increases of this space by compiling with a different DEFAULT_GRANULARITY or dynamically setting with mallopt(M_GRANULARITY, value). */ mspace create_mspace(size_t capacity, int locked); /* destroy_mspace destroys the given space, and attempts to return all of its memory back to the system, returning the total number of bytes freed. After destruction, the results of access to all memory used by the space become undefined. */ size_t destroy_mspace(mspace msp); /* create_mspace_with_base uses the memory supplied as the initial base of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this space is used for bookkeeping, so the capacity must be at least this large. (Otherwise 0 is returned.) When this initial space is exhausted, additional memory will be obtained from the system. Destroying this space will deallocate all additionally allocated space (if possible) but not the initial base. */ mspace create_mspace_with_base(void* base, size_t capacity, int locked); /* mspace_malloc behaves as malloc, but operates within the given space. */ void* mspace_malloc(mspace msp, size_t bytes); /* mspace_free behaves as free, but operates within the given space. If compiled with FOOTERS==1, mspace_free is not actually needed. free may be called instead of mspace_free because freed chunks from any space are handled by their originating spaces. */ void mspace_free(mspace msp, void* mem); /* mspace_realloc behaves as realloc, but operates within the given space. If compiled with FOOTERS==1, mspace_realloc is not actually needed. realloc may be called instead of mspace_realloc because realloced chunks from any space are handled by their originating spaces. */ void* mspace_realloc(mspace msp, void* mem, size_t newsize); /* mspace_calloc behaves as calloc, but operates within the given space. */ void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); /* mspace_memalign behaves as memalign, but operates within the given space. */ void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); /* mspace_independent_calloc behaves as independent_calloc, but operates within the given space. */ void** mspace_independent_calloc(mspace msp, size_t n_elements, size_t elem_size, void* chunks[]); /* mspace_independent_comalloc behaves as independent_comalloc, but operates within the given space. */ void** mspace_independent_comalloc(mspace msp, size_t n_elements, size_t sizes[], void* chunks[]); /* mspace_footprint() returns the number of bytes obtained from the system for this space. */ size_t mspace_footprint(mspace msp); /* mspace_max_footprint() returns the peak number of bytes obtained from the system for this space. */ size_t mspace_max_footprint(mspace msp); #if !NO_MALLINFO /* mspace_mallinfo behaves as mallinfo, but reports properties of the given space. */ struct mallinfo mspace_mallinfo(mspace msp); #endif /* NO_MALLINFO */ /* mspace_malloc_stats behaves as malloc_stats, but reports properties of the given space. */ void mspace_malloc_stats(mspace msp); /* mspace_trim behaves as malloc_trim, but operates within the given space. */ int mspace_trim(mspace msp, size_t pad); /* An alias for mallopt. */ int mspace_mallopt(int, int); #endif /* MSPACES */ #ifdef __cplusplus }; /* end of extern "C" */ #endif /* __cplusplus */ /* ======================================================================== To make a fully customizable malloc.h header file, cut everything above this line, put into file malloc.h, edit to suit, and #include it on the next line, as well as in programs that use this malloc. ======================================================================== */ /* #include "malloc.h" */ /*------------------------------ internal #includes ---------------------- */ #ifdef _MSC_VER #pragma warning( disable : 4146 ) /* no "unsigned" warnings */ #endif /* _MSC_VER */ #include /* for printing in malloc_stats */ #ifndef LACKS_ERRNO_H #include /* for MALLOC_FAILURE_ACTION */ #endif /* LACKS_ERRNO_H */ #if FOOTERS #include /* for magic initialization */ #endif /* FOOTERS */ #ifndef LACKS_STDLIB_H #include /* for abort() */ #endif /* LACKS_STDLIB_H */ #ifdef DEBUG #if ABORT_ON_ASSERT_FAILURE #define assert(x) if(!(x)) ABORT #else /* ABORT_ON_ASSERT_FAILURE */ #include #endif /* ABORT_ON_ASSERT_FAILURE */ #else /* DEBUG */ #define assert(x) #endif /* DEBUG */ #ifndef LACKS_STRING_H #include /* for memset etc */ #endif /* LACKS_STRING_H */ #if USE_BUILTIN_FFS #ifndef LACKS_STRINGS_H #include /* for ffs */ #endif /* LACKS_STRINGS_H */ #endif /* USE_BUILTIN_FFS */ #if HAVE_MMAP #ifndef LACKS_SYS_MMAN_H #include /* for mmap */ #endif /* LACKS_SYS_MMAN_H */ #ifndef LACKS_FCNTL_H #include #endif /* LACKS_FCNTL_H */ #endif /* HAVE_MMAP */ #if HAVE_MORECORE #ifndef LACKS_UNISTD_H #include /* for sbrk */ #else /* LACKS_UNISTD_H */ #if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) extern void* sbrk(ptrdiff_t); #endif /* FreeBSD etc */ #endif /* LACKS_UNISTD_H */ #endif /* HAVE_MMAP */ #ifndef WIN32 #ifndef malloc_getpagesize # ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ # ifndef _SC_PAGE_SIZE # define _SC_PAGE_SIZE _SC_PAGESIZE # endif # endif # ifdef _SC_PAGE_SIZE # define malloc_getpagesize sysconf(_SC_PAGE_SIZE) # else # if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) extern size_t getpagesize(); # define malloc_getpagesize getpagesize() # else # ifdef WIN32 /* use supplied emulation of getpagesize */ # define malloc_getpagesize getpagesize() # else # ifndef LACKS_SYS_PARAM_H # include # endif # ifdef EXEC_PAGESIZE # define malloc_getpagesize EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define malloc_getpagesize NBPG # else # define malloc_getpagesize (NBPG * CLSIZE) # endif # else # ifdef NBPC # define malloc_getpagesize NBPC # else # ifdef PAGESIZE # define malloc_getpagesize PAGESIZE # else /* just guess */ # define malloc_getpagesize ((size_t)4096U) # endif # endif # endif # endif # endif # endif # endif #endif #endif /* ------------------- size_t and alignment properties -------------------- */ /* The byte and bit size of a size_t */ #define SIZE_T_SIZE (sizeof(size_t)) #define SIZE_T_BITSIZE (sizeof(size_t) << 3) /* Some constants coerced to size_t */ /* Annoying but necessary to avoid errors on some platforms */ #define SIZE_T_ZERO ((size_t)0) #define SIZE_T_ONE ((size_t)1) #define SIZE_T_TWO ((size_t)2) #define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) #define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) #define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) #define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) /* The bit mask value corresponding to MALLOC_ALIGNMENT */ #define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) /* True if address a has acceptable alignment */ #define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) /* the number of bytes to offset an address to align it */ #define align_offset(A)\ ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) /* -------------------------- MMAP preliminaries ------------------------- */ /* If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and checks to fail so compiler optimizer can delete code rather than using so many "#if"s. */ /* MORECORE and MMAP must return MFAIL on failure */ #define MFAIL ((void*)(MAX_SIZE_T)) #define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ #if !HAVE_MMAP #define IS_MMAPPED_BIT (SIZE_T_ZERO) #define USE_MMAP_BIT (SIZE_T_ZERO) #define CALL_MMAP(s) MFAIL #define CALL_MUNMAP(a, s) (-1) #define DIRECT_MMAP(s) MFAIL #else /* HAVE_MMAP */ #define IS_MMAPPED_BIT (SIZE_T_ONE) #define USE_MMAP_BIT (SIZE_T_ONE) #if !defined(WIN32) && !defined (__OS2__) #define CALL_MUNMAP(a, s) munmap((a), (s)) #define MMAP_PROT (PROT_READ|PROT_WRITE) #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif /* MAP_ANON */ #ifdef MAP_ANONYMOUS #define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) #define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) #else /* MAP_ANONYMOUS */ /* Nearly all versions of mmap support MAP_ANONYMOUS, so the following is unlikely to be needed, but is supplied just in case. */ #define MMAP_FLAGS (MAP_PRIVATE) static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ #define CALL_MMAP(s) ((dev_zero_fd < 0) ? \ (dev_zero_fd = open("/dev/zero", O_RDWR), \ mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) #endif /* MAP_ANONYMOUS */ #define DIRECT_MMAP(s) CALL_MMAP(s) #elif defined(__OS2__) /* OS/2 MMAP via DosAllocMem */ static void* os2mmap(size_t size) { void* ptr; if (DosAllocMem(&ptr, size, OBJ_ANY|PAG_COMMIT|PAG_READ|PAG_WRITE) && DosAllocMem(&ptr, size, PAG_COMMIT|PAG_READ|PAG_WRITE)) return MFAIL; return ptr; } #define os2direct_mmap(n) os2mmap(n) /* This function supports releasing coalesed segments */ static int os2munmap(void* ptr, size_t size) { while (size) { ULONG ulSize = size; ULONG ulFlags = 0; if (DosQueryMem(ptr, &ulSize, &ulFlags) != 0) return -1; if ((ulFlags & PAG_BASE) == 0 ||(ulFlags & PAG_COMMIT) == 0 || ulSize > size) return -1; if (DosFreeMem(ptr) != 0) return -1; ptr = ( void * ) ( ( char * ) ptr + ulSize ); size -= ulSize; } return 0; } #define CALL_MMAP(s) os2mmap(s) #define CALL_MUNMAP(a, s) os2munmap((a), (s)) #define DIRECT_MMAP(s) os2direct_mmap(s) #else /* WIN32 */ /* Win32 MMAP via VirtualAlloc */ static void* win32mmap(size_t size) { void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE); return (ptr != 0)? ptr: MFAIL; } /* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ static void* win32direct_mmap(size_t size) { void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, PAGE_EXECUTE_READWRITE); return (ptr != 0)? ptr: MFAIL; } /* This function supports releasing coalesed segments */ static int win32munmap(void* ptr, size_t size) { MEMORY_BASIC_INFORMATION minfo; char* cptr = ptr; while (size) { if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) return -1; if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || minfo.State != MEM_COMMIT || minfo.RegionSize > size) return -1; if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) return -1; cptr += minfo.RegionSize; size -= minfo.RegionSize; } return 0; } #define CALL_MMAP(s) win32mmap(s) #define CALL_MUNMAP(a, s) win32munmap((a), (s)) #define DIRECT_MMAP(s) win32direct_mmap(s) #endif /* WIN32 */ #endif /* HAVE_MMAP */ #if HAVE_MMAP && HAVE_MREMAP #define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) #else /* HAVE_MMAP && HAVE_MREMAP */ #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL #endif /* HAVE_MMAP && HAVE_MREMAP */ #if HAVE_MORECORE #define CALL_MORECORE(S) MORECORE(S) #else /* HAVE_MORECORE */ #define CALL_MORECORE(S) MFAIL #endif /* HAVE_MORECORE */ /* mstate bit set if contiguous morecore disabled or failed */ #define USE_NONCONTIGUOUS_BIT (4U) /* segment bit set in create_mspace_with_base */ #define EXTERN_BIT (8U) /* --------------------------- Lock preliminaries ------------------------ */ #if USE_LOCKS /* When locks are defined, there are up to two global locks: * If HAVE_MORECORE, morecore_mutex protects sequences of calls to MORECORE. In many cases sys_alloc requires two calls, that should not be interleaved with calls by other threads. This does not protect against direct calls to MORECORE by other threads not using this lock, so there is still code to cope the best we can on interference. * magic_init_mutex ensures that mparams.magic and other unique mparams values are initialized only once. */ #if !defined(WIN32) && !defined(__OS2__) /* By default use posix locks */ #include #define MLOCK_T pthread_mutex_t #define INITIAL_LOCK(l) pthread_mutex_init(l, NULL) #define ACQUIRE_LOCK(l) pthread_mutex_lock(l) #define RELEASE_LOCK(l) pthread_mutex_unlock(l) #if HAVE_MORECORE static MLOCK_T morecore_mutex = PTHREAD_MUTEX_INITIALIZER; #endif /* HAVE_MORECORE */ static MLOCK_T magic_init_mutex = PTHREAD_MUTEX_INITIALIZER; #elif defined(__OS2__) #define MLOCK_T HMTX #define INITIAL_LOCK(l) DosCreateMutexSem(0, l, 0, FALSE) #define ACQUIRE_LOCK(l) DosRequestMutexSem(*l, SEM_INDEFINITE_WAIT) #define RELEASE_LOCK(l) DosReleaseMutexSem(*l) #if HAVE_MORECORE static MLOCK_T morecore_mutex; #endif /* HAVE_MORECORE */ static MLOCK_T magic_init_mutex; #else /* WIN32 */ /* Because lock-protected regions have bounded times, and there are no recursive lock calls, we can use simple spinlocks. */ #define MLOCK_T long static int win32_acquire_lock (MLOCK_T *sl) { for (;;) { #ifdef InterlockedCompareExchangePointer if (!InterlockedCompareExchange(sl, 1, 0)) return 0; #else /* Use older void* version */ if (!InterlockedCompareExchange((void**)sl, (void*)1, (void*)0)) return 0; #endif /* InterlockedCompareExchangePointer */ Sleep (0); } } static void win32_release_lock (MLOCK_T *sl) { InterlockedExchange (sl, 0); } #define INITIAL_LOCK(l) *(l)=0 #define ACQUIRE_LOCK(l) win32_acquire_lock(l) #define RELEASE_LOCK(l) win32_release_lock(l) #if HAVE_MORECORE static MLOCK_T morecore_mutex; #endif /* HAVE_MORECORE */ static MLOCK_T magic_init_mutex; #endif /* WIN32 */ #define USE_LOCK_BIT (2U) #else /* USE_LOCKS */ #define USE_LOCK_BIT (0U) #define INITIAL_LOCK(l) #endif /* USE_LOCKS */ #if USE_LOCKS && HAVE_MORECORE #define ACQUIRE_MORECORE_LOCK() ACQUIRE_LOCK(&morecore_mutex); #define RELEASE_MORECORE_LOCK() RELEASE_LOCK(&morecore_mutex); #else /* USE_LOCKS && HAVE_MORECORE */ #define ACQUIRE_MORECORE_LOCK() #define RELEASE_MORECORE_LOCK() #endif /* USE_LOCKS && HAVE_MORECORE */ #if USE_LOCKS #define ACQUIRE_MAGIC_INIT_LOCK() ACQUIRE_LOCK(&magic_init_mutex); #define RELEASE_MAGIC_INIT_LOCK() RELEASE_LOCK(&magic_init_mutex); #else /* USE_LOCKS */ #define ACQUIRE_MAGIC_INIT_LOCK() #define RELEASE_MAGIC_INIT_LOCK() #endif /* USE_LOCKS */ /* ----------------------- Chunk representations ------------------------ */ /* (The following includes lightly edited explanations by Colin Plumb.) The malloc_chunk declaration below is misleading (but accurate and necessary). It declares a "view" into memory allowing access to necessary fields at known offsets from a given base. Chunks of memory are maintained using a `boundary tag' method as originally described by Knuth. (See the paper by Paul Wilson ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such techniques.) Sizes of free chunks are stored both in the front of each chunk and at the end. This makes consolidating fragmented chunks into bigger chunks fast. The head fields also hold bits representing whether chunks are free or in use. Here are some pictures to make it clearer. They are "exploded" to show that the state of a chunk can be thought of as extending from the high 31 bits of the head field of its header through the prev_foot and PINUSE_BIT bit of the following chunk header. A chunk that's in use looks like: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk (if P = 1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| | Size of this chunk 1| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- -+ | | +- -+ | : +- size - sizeof(size_t) available payload bytes -+ : | chunk-> +- -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| | Size of next chunk (may or may not be in use) | +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ And if it's free, it looks like this: chunk-> +- -+ | User payload (must be in use, or we would have merged!) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| | Size of this chunk 0| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Prev pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : +- size - sizeof(struct chunk) unused bytes -+ : | chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of this chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| | Size of next chunk (must be in use, or we would have merged)| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : +- User payload -+ : | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| +-+ Note that since we always merge adjacent free chunks, the chunks adjacent to a free chunk must be in use. Given a pointer to a chunk (which can be derived trivially from the payload pointer) we can, in O(1) time, find out whether the adjacent chunks are free, and if so, unlink them from the lists that they are on and merge them with the current chunk. Chunks always begin on even word boundaries, so the mem portion (which is returned to the user) is also on an even word boundary, and thus at least double-word aligned. The P (PINUSE_BIT) bit, stored in the unused low-order bit of the chunk size (which is always a multiple of two words), is an in-use bit for the *previous* chunk. If that bit is *clear*, then the word before the current chunk size contains the previous chunk size, and can be used to find the front of the previous chunk. The very first chunk allocated always has this bit set, preventing access to non-existent (or non-owned) memory. If pinuse is set for any given chunk, then you CANNOT determine the size of the previous chunk, and might even get a memory addressing fault when trying to do so. The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of the chunk size redundantly records whether the current chunk is inuse. This redundancy enables usage checks within free and realloc, and reduces indirection when freeing and consolidating chunks. Each freshly allocated chunk must have both cinuse and pinuse set. That is, each allocated chunk borders either a previously allocated and still in-use chunk, or the base of its memory arena. This is ensured by making all allocations from the the `lowest' part of any found chunk. Further, no free chunk physically borders another one, so each free chunk is known to be preceded and followed by either inuse chunks or the ends of memory. Note that the `foot' of the current chunk is actually represented as the prev_foot of the NEXT chunk. This makes it easier to deal with alignments etc but can be very confusing when trying to extend or adapt this code. The exceptions to all this are 1. The special chunk `top' is the top-most available chunk (i.e., the one bordering the end of available memory). It is treated specially. Top is never included in any bin, is used only if no other chunk is available, and is released back to the system if it is very large (see M_TRIM_THRESHOLD). In effect, the top chunk is treated as larger (and thus less well fitting) than any other available chunk. The top chunk doesn't update its trailing size field since there is no next contiguous chunk that would have to index off it. However, space is still allocated for it (TOP_FOOT_SIZE) to enable separation or merging when space is extended. 3. Chunks allocated via mmap, which have the lowest-order bit (IS_MMAPPED_BIT) set in their prev_foot fields, and do not set PINUSE_BIT in their head fields. Because they are allocated one-by-one, each must carry its own prev_foot field, which is also used to hold the offset this chunk has within its mmapped region, which is needed to preserve alignment. Each mmapped chunk is trailed by the first two fields of a fake next-chunk for sake of usage checks. */ struct malloc_chunk { size_t prev_foot; /* Size of previous chunk (if free). */ size_t head; /* Size and inuse bits. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; }; typedef struct malloc_chunk mchunk; typedef struct malloc_chunk* mchunkptr; typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ typedef size_t bindex_t; /* Described below */ typedef unsigned int binmap_t; /* Described below */ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* ------------------- Chunks sizes and alignments ----------------------- */ #define MCHUNK_SIZE (sizeof(mchunk)) #if FOOTERS #define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) #else /* FOOTERS */ #define CHUNK_OVERHEAD (SIZE_T_SIZE) #endif /* FOOTERS */ /* MMapped chunks need a second word of overhead ... */ #define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) /* ... and additional padding for fake next-chunk at foot */ #define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) /* The smallest size we can malloc is an aligned minimal chunk */ #define MIN_CHUNK_SIZE\ ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* conversion from malloc headers to user pointers, and back */ #define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) #define mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) /* chunk associated with aligned address A */ #define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) /* Bounds on request (not chunk) sizes. */ #define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) #define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) /* pad request bytes into a usable size */ #define pad_request(req) \ (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* pad request, checking for minimum (but not maximum) */ #define request2size(req) \ (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) /* ------------------ Operations on head and foot fields ----------------- */ /* The head field of a chunk is or'ed with PINUSE_BIT when previous adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in use. If the chunk was obtained with mmap, the prev_foot field has IS_MMAPPED_BIT set, otherwise holding the offset of the base of the mmapped region to the base of the chunk. */ #define PINUSE_BIT (SIZE_T_ONE) #define CINUSE_BIT (SIZE_T_TWO) #define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) /* Head value for fenceposts */ #define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) /* extraction of fields from head words */ #define cinuse(p) ((p)->head & CINUSE_BIT) #define pinuse(p) ((p)->head & PINUSE_BIT) #define chunksize(p) ((p)->head & ~(INUSE_BITS)) #define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) #define clear_cinuse(p) ((p)->head &= ~CINUSE_BIT) /* Treat space at ptr +/- offset as a chunk */ #define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) #define chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) /* Ptr to next or previous physical malloc_chunk. */ #define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~INUSE_BITS))) #define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) /* extract next chunk's pinuse bit */ #define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) /* Get/set size at footer */ #define get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) #define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) /* Set size, pinuse bit, and foot */ #define set_size_and_pinuse_of_free_chunk(p, s)\ ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) /* Set size, pinuse bit, foot, and clear next pinuse */ #define set_free_with_pinuse(p, s, n)\ (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) #define is_mmapped(p)\ (!((p)->head & PINUSE_BIT) && ((p)->prev_foot & IS_MMAPPED_BIT)) /* Get the internal overhead associated with chunk p */ #define overhead_for(p)\ (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) /* Return true if malloced space is not necessarily cleared */ #if MMAP_CLEARS #define calloc_must_clear(p) (!is_mmapped(p)) #else /* MMAP_CLEARS */ #define calloc_must_clear(p) (1) #endif /* MMAP_CLEARS */ /* ---------------------- Overlaid data structures ----------------------- */ /* When chunks are not in use, they are treated as nodes of either lists or trees. "Small" chunks are stored in circular doubly-linked lists, and look like this: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `head:' | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forward pointer to next chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Back pointer to previous chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused space (may be 0 bytes long) . . . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `foot:' | Size of chunk, in bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Larger chunks are kept in a form of bitwise digital trees (aka tries) keyed on chunksizes. Because malloc_tree_chunks are only for free chunks greater than 256 bytes, their size doesn't impose any constraints on user chunk sizes. Each node looks like: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `head:' | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forward pointer to next chunk of same size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Back pointer to previous chunk of same size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to left child (child[0]) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to right child (child[1]) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to parent | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | bin index of this chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused space . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `foot:' | Size of chunk, in bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Each tree holding treenodes is a tree of unique chunk sizes. Chunks of the same size are arranged in a circularly-linked list, with only the oldest chunk (the next to be used, in our FIFO ordering) actually in the tree. (Tree members are distinguished by a non-null parent pointer.) If a chunk with the same size an an existing node is inserted, it is linked off the existing node using pointers that work in the same way as fd/bk pointers of small chunks. Each tree contains a power of 2 sized range of chunk sizes (the smallest is 0x100 <= x < 0x180), which is is divided in half at each tree level, with the chunks in the smaller half of the range (0x100 <= x < 0x140 for the top nose) in the left subtree and the larger half (0x140 <= x < 0x180) in the right subtree. This is, of course, done by inspecting individual bits. Using these rules, each node's left subtree contains all smaller sizes than its right subtree. However, the node at the root of each subtree has no particular ordering relationship to either. (The dividing line between the subtree sizes is based on trie relation.) If we remove the last chunk of a given size from the interior of the tree, we need to replace it with a leaf node. The tree ordering rules permit a node to be replaced by any leaf below it. The smallest chunk in a tree (a common operation in a best-fit allocator) can be found by walking a path to the leftmost leaf in the tree. Unlike a usual binary tree, where we follow left child pointers until we reach a null, here we follow the right child pointer any time the left one is null, until we reach a leaf with both child pointers null. The smallest chunk in the tree will be somewhere along that path. The worst case number of steps to add, find, or remove a node is bounded by the number of bits differentiating chunks within bins. Under current bin calculations, this ranges from 6 up to 21 (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case is of course much better. */ struct malloc_tree_chunk { /* The first four fields must be compatible with malloc_chunk */ size_t prev_foot; size_t head; struct malloc_tree_chunk* fd; struct malloc_tree_chunk* bk; struct malloc_tree_chunk* child[2]; struct malloc_tree_chunk* parent; bindex_t index; }; typedef struct malloc_tree_chunk tchunk; typedef struct malloc_tree_chunk* tchunkptr; typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ /* A little helper macro for trees */ #define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) /* ----------------------------- Segments -------------------------------- */ /* Each malloc space may include non-contiguous segments, held in a list headed by an embedded malloc_segment record representing the top-most space. Segments also include flags holding properties of the space. Large chunks that are directly allocated by mmap are not included in this list. They are instead independently created and destroyed without otherwise keeping track of them. Segment management mainly comes into play for spaces allocated by MMAP. Any call to MMAP might or might not return memory that is adjacent to an existing segment. MORECORE normally contiguously extends the current space, so this space is almost always adjacent, which is simpler and faster to deal with. (This is why MORECORE is used preferentially to MMAP when both are available -- see sys_alloc.) When allocating using MMAP, we don't use any of the hinting mechanisms (inconsistently) supported in various implementations of unix mmap, or distinguish reserving from committing memory. Instead, we just ask for space, and exploit contiguity when we get it. It is probably possible to do better than this on some systems, but no general scheme seems to be significantly better. Management entails a simpler variant of the consolidation scheme used for chunks to reduce fragmentation -- new adjacent memory is normally prepended or appended to an existing segment. However, there are limitations compared to chunk consolidation that mostly reflect the fact that segment processing is relatively infrequent (occurring only when getting memory from system) and that we don't expect to have huge numbers of segments: * Segments are not indexed, so traversal requires linear scans. (It would be possible to index these, but is not worth the extra overhead and complexity for most programs on most platforms.) * New segments are only appended to old ones when holding top-most memory; if they cannot be prepended to others, they are held in different segments. Except for the top-most segment of an mstate, each segment record is kept at the tail of its segment. Segments are added by pushing segment records onto the list headed by &mstate.seg for the containing mstate. Segment flags control allocation/merge/deallocation policies: * If EXTERN_BIT set, then we did not allocate this segment, and so should not try to deallocate or merge with others. (This currently holds only for the initial segment passed into create_mspace_with_base.) * If IS_MMAPPED_BIT set, the segment may be merged with other surrounding mmapped segments and trimmed/de-allocated using munmap. * If neither bit is set, then the segment was obtained using MORECORE so can be merged with surrounding MORECORE'd segments and deallocated/trimmed using MORECORE with negative arguments. */ struct malloc_segment { char* base; /* base address */ size_t size; /* allocated size */ struct malloc_segment* next; /* ptr to next segment */ #if FFI_MMAP_EXEC_WRIT /* The mmap magic is supposed to store the address of the executable segment at the very end of the requested block. */ # define mmap_exec_offset(b,s) (*(ptrdiff_t*)((b)+(s)-sizeof(ptrdiff_t))) /* We can only merge segments if their corresponding executable segments are at identical offsets. */ # define check_segment_merge(S,b,s) \ (mmap_exec_offset((b),(s)) == (S)->exec_offset) # define add_segment_exec_offset(p,S) ((char*)(p) + (S)->exec_offset) # define sub_segment_exec_offset(p,S) ((char*)(p) - (S)->exec_offset) /* The removal of sflags only works with HAVE_MORECORE == 0. */ # define get_segment_flags(S) (IS_MMAPPED_BIT) # define set_segment_flags(S,v) \ (((v) != IS_MMAPPED_BIT) ? (ABORT, (v)) : \ (((S)->exec_offset = \ mmap_exec_offset((S)->base, (S)->size)), \ (mmap_exec_offset((S)->base + (S)->exec_offset, (S)->size) != \ (S)->exec_offset) ? (ABORT, (v)) : \ (mmap_exec_offset((S)->base, (S)->size) = 0), (v))) /* We use an offset here, instead of a pointer, because then, when base changes, we don't have to modify this. On architectures with segmented addresses, this might not work. */ ptrdiff_t exec_offset; #else # define get_segment_flags(S) ((S)->sflags) # define set_segment_flags(S,v) ((S)->sflags = (v)) # define check_segment_merge(S,b,s) (1) flag_t sflags; /* mmap and extern flag */ #endif }; #define is_mmapped_segment(S) (get_segment_flags(S) & IS_MMAPPED_BIT) #define is_extern_segment(S) (get_segment_flags(S) & EXTERN_BIT) typedef struct malloc_segment msegment; typedef struct malloc_segment* msegmentptr; /* ---------------------------- malloc_state ----------------------------- */ /* A malloc_state holds all of the bookkeeping for a space. The main fields are: Top The topmost chunk of the currently active segment. Its size is cached in topsize. The actual size of topmost space is topsize+TOP_FOOT_SIZE, which includes space reserved for adding fenceposts and segment records if necessary when getting more space from the system. The size at which to autotrim top is cached from mparams in trim_check, except that it is disabled if an autotrim fails. Designated victim (dv) This is the preferred chunk for servicing small requests that don't have exact fits. It is normally the chunk split off most recently to service another small request. Its size is cached in dvsize. The link fields of this chunk are not maintained since it is not kept in a bin. SmallBins An array of bin headers for free chunks. These bins hold chunks with sizes less than MIN_LARGE_SIZE bytes. Each bin contains chunks of all the same size, spaced 8 bytes apart. To simplify use in double-linked lists, each bin header acts as a malloc_chunk pointing to the real first node, if it exists (else pointing to itself). This avoids special-casing for headers. But to avoid waste, we allocate only the fd/bk pointers of bins, and then use repositioning tricks to treat these as the fields of a chunk. TreeBins Treebins are pointers to the roots of trees holding a range of sizes. There are 2 equally spaced treebins for each power of two from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything larger. Bin maps There is one bit map for small bins ("smallmap") and one for treebins ("treemap). Each bin sets its bit when non-empty, and clears the bit when empty. Bit operations are then used to avoid bin-by-bin searching -- nearly all "search" is done without ever looking at bins that won't be selected. The bit maps conservatively use 32 bits per map word, even if on 64bit system. For a good description of some of the bit-based techniques used here, see Henry S. Warren Jr's book "Hacker's Delight" (and supplement at http://hackersdelight.org/). Many of these are intended to reduce the branchiness of paths through malloc etc, as well as to reduce the number of memory locations read or written. Segments A list of segments headed by an embedded malloc_segment record representing the initial space. Address check support The least_addr field is the least address ever obtained from MORECORE or MMAP. Attempted frees and reallocs of any address less than this are trapped (unless INSECURE is defined). Magic tag A cross-check field that should always hold same value as mparams.magic. Flags Bits recording whether to use MMAP, locks, or contiguous MORECORE Statistics Each space keeps track of current and maximum system memory obtained via MORECORE or MMAP. Locking If USE_LOCKS is defined, the "mutex" lock is acquired and released around every public call using this mspace. */ /* Bin types, widths and sizes */ #define NSMALLBINS (32U) #define NTREEBINS (32U) #define SMALLBIN_SHIFT (3U) #define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) #define TREEBIN_SHIFT (8U) #define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) #define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) #define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) struct malloc_state { binmap_t smallmap; binmap_t treemap; size_t dvsize; size_t topsize; char* least_addr; mchunkptr dv; mchunkptr top; size_t trim_check; size_t magic; mchunkptr smallbins[(NSMALLBINS+1)*2]; tbinptr treebins[NTREEBINS]; size_t footprint; size_t max_footprint; flag_t mflags; #if USE_LOCKS MLOCK_T mutex; /* locate lock among fields that rarely change */ #endif /* USE_LOCKS */ msegment seg; }; typedef struct malloc_state* mstate; /* ------------- Global malloc_state and malloc_params ------------------- */ /* malloc_params holds global properties, including those that can be dynamically set using mallopt. There is a single instance, mparams, initialized in init_mparams. */ struct malloc_params { size_t magic; size_t page_size; size_t granularity; size_t mmap_threshold; size_t trim_threshold; flag_t default_mflags; }; static struct malloc_params mparams; /* The global malloc_state used for all non-"mspace" calls */ static struct malloc_state _gm_; #define gm (&_gm_) #define is_global(M) ((M) == &_gm_) #define is_initialized(M) ((M)->top != 0) /* -------------------------- system alloc setup ------------------------- */ /* Operations on mflags */ #define use_lock(M) ((M)->mflags & USE_LOCK_BIT) #define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) #define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) #define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) #define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) #define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) #define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) #define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) #define set_lock(M,L)\ ((M)->mflags = (L)?\ ((M)->mflags | USE_LOCK_BIT) :\ ((M)->mflags & ~USE_LOCK_BIT)) /* page-align a size */ #define page_align(S)\ (((S) + (mparams.page_size)) & ~(mparams.page_size - SIZE_T_ONE)) /* granularity-align a size */ #define granularity_align(S)\ (((S) + (mparams.granularity)) & ~(mparams.granularity - SIZE_T_ONE)) #define is_page_aligned(S)\ (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) #define is_granularity_aligned(S)\ (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) /* True if segment S holds address A */ #define segment_holds(S, A)\ ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) /* Return segment holding given address */ static msegmentptr segment_holding(mstate m, char* addr) { msegmentptr sp = &m->seg; for (;;) { if (addr >= sp->base && addr < sp->base + sp->size) return sp; if ((sp = sp->next) == 0) return 0; } } /* Return true if segment contains a segment link */ static int has_segment_link(mstate m, msegmentptr ss) { msegmentptr sp = &m->seg; for (;;) { if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) return 1; if ((sp = sp->next) == 0) return 0; } } #ifndef MORECORE_CANNOT_TRIM #define should_trim(M,s) ((s) > (M)->trim_check) #else /* MORECORE_CANNOT_TRIM */ #define should_trim(M,s) (0) #endif /* MORECORE_CANNOT_TRIM */ /* TOP_FOOT_SIZE is padding at the end of a segment, including space that may be needed to place segment records and fenceposts when new noncontiguous segments are added. */ #define TOP_FOOT_SIZE\ (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) /* ------------------------------- Hooks -------------------------------- */ /* PREACTION should be defined to return 0 on success, and nonzero on failure. If you are not using locking, you can redefine these to do anything you like. */ #if USE_LOCKS /* Ensure locks are initialized */ #define GLOBALLY_INITIALIZE() (mparams.page_size == 0 && init_mparams()) #define PREACTION(M) ((GLOBALLY_INITIALIZE() || use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) #define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } #else /* USE_LOCKS */ #ifndef PREACTION #define PREACTION(M) (0) #endif /* PREACTION */ #ifndef POSTACTION #define POSTACTION(M) #endif /* POSTACTION */ #endif /* USE_LOCKS */ /* CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. USAGE_ERROR_ACTION is triggered on detected bad frees and reallocs. The argument p is an address that might have triggered the fault. It is ignored by the two predefined actions, but might be useful in custom actions that try to help diagnose errors. */ #if PROCEED_ON_ERROR /* A count of the number of corruption errors causing resets */ int malloc_corruption_error_count; /* default corruption action */ static void reset_on_error(mstate m); #define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) #define USAGE_ERROR_ACTION(m, p) #else /* PROCEED_ON_ERROR */ #ifndef CORRUPTION_ERROR_ACTION #define CORRUPTION_ERROR_ACTION(m) ABORT #endif /* CORRUPTION_ERROR_ACTION */ #ifndef USAGE_ERROR_ACTION #define USAGE_ERROR_ACTION(m,p) ABORT #endif /* USAGE_ERROR_ACTION */ #endif /* PROCEED_ON_ERROR */ /* -------------------------- Debugging setup ---------------------------- */ #if ! DEBUG #define check_free_chunk(M,P) #define check_inuse_chunk(M,P) #define check_malloced_chunk(M,P,N) #define check_mmapped_chunk(M,P) #define check_malloc_state(M) #define check_top_chunk(M,P) #else /* DEBUG */ #define check_free_chunk(M,P) do_check_free_chunk(M,P) #define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) #define check_top_chunk(M,P) do_check_top_chunk(M,P) #define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) #define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) #define check_malloc_state(M) do_check_malloc_state(M) static void do_check_any_chunk(mstate m, mchunkptr p); static void do_check_top_chunk(mstate m, mchunkptr p); static void do_check_mmapped_chunk(mstate m, mchunkptr p); static void do_check_inuse_chunk(mstate m, mchunkptr p); static void do_check_free_chunk(mstate m, mchunkptr p); static void do_check_malloced_chunk(mstate m, void* mem, size_t s); static void do_check_tree(mstate m, tchunkptr t); static void do_check_treebin(mstate m, bindex_t i); static void do_check_smallbin(mstate m, bindex_t i); static void do_check_malloc_state(mstate m); static int bin_find(mstate m, mchunkptr x); static size_t traverse_and_check(mstate m); #endif /* DEBUG */ /* ---------------------------- Indexing Bins ---------------------------- */ #define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) #define small_index(s) ((s) >> SMALLBIN_SHIFT) #define small_index2size(i) ((i) << SMALLBIN_SHIFT) #define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) /* addressing by index. See above about smallbin repositioning */ #define smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) #define treebin_at(M,i) (&((M)->treebins[i])) /* assign tree index for size S to variable I */ #if defined(__GNUC__) && defined(i386) #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int K;\ __asm__("bsrl %1,%0\n\t" : "=r" (K) : "rm" (X));\ I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ }\ } #else /* GNUC */ #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int Y = (unsigned int)X;\ unsigned int N = ((Y - 0x100) >> 16) & 8;\ unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ N += K;\ N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ K = 14 - N + ((Y <<= K) >> 15);\ I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ }\ } #endif /* GNUC */ /* Bit representing maximum resolved size in a treebin at i */ #define bit_for_tree_index(i) \ (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) /* Shift placing maximum resolved bit in a treebin at i as sign bit */ #define leftshift_for_tree_index(i) \ ((i == NTREEBINS-1)? 0 : \ ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) /* The size of the smallest chunk held in bin with index i */ #define minsize_for_tree_index(i) \ ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) /* ------------------------ Operations on bin maps ----------------------- */ /* bit corresponding to given index */ #define idx2bit(i) ((binmap_t)(1) << (i)) /* Mark/Clear bits with given index */ #define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) #define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) #define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) #define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) #define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) #define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) /* index corresponding to given bit */ #if defined(__GNUC__) && defined(i386) #define compute_bit2idx(X, I)\ {\ unsigned int J;\ __asm__("bsfl %1,%0\n\t" : "=r" (J) : "rm" (X));\ I = (bindex_t)J;\ } #else /* GNUC */ #if USE_BUILTIN_FFS #define compute_bit2idx(X, I) I = ffs(X)-1 #else /* USE_BUILTIN_FFS */ #define compute_bit2idx(X, I)\ {\ unsigned int Y = X - 1;\ unsigned int K = Y >> (16-4) & 16;\ unsigned int N = K; Y >>= K;\ N += K = Y >> (8-3) & 8; Y >>= K;\ N += K = Y >> (4-2) & 4; Y >>= K;\ N += K = Y >> (2-1) & 2; Y >>= K;\ N += K = Y >> (1-0) & 1; Y >>= K;\ I = (bindex_t)(N + Y);\ } #endif /* USE_BUILTIN_FFS */ #endif /* GNUC */ /* isolate the least set bit of a bitmap */ #define least_bit(x) ((x) & -(x)) /* mask with all bits to left of least bit of x on */ #define left_bits(x) ((x<<1) | -(x<<1)) /* mask with all bits to left of or equal to least bit of x on */ #define same_or_left_bits(x) ((x) | -(x)) /* ----------------------- Runtime Check Support ------------------------- */ /* For security, the main invariant is that malloc/free/etc never writes to a static address other than malloc_state, unless static malloc_state itself has been corrupted, which cannot occur via malloc (because of these checks). In essence this means that we believe all pointers, sizes, maps etc held in malloc_state, but check all of those linked or offsetted from other embedded data structures. These checks are interspersed with main code in a way that tends to minimize their run-time cost. When FOOTERS is defined, in addition to range checking, we also verify footer fields of inuse chunks, which can be used guarantee that the mstate controlling malloc/free is intact. This is a streamlined version of the approach described by William Robertson et al in "Run-time Detection of Heap-based Overflows" LISA'03 http://www.usenix.org/events/lisa03/tech/robertson.html The footer of an inuse chunk holds the xor of its mstate and a random seed, that is checked upon calls to free() and realloc(). This is (probablistically) unguessable from outside the program, but can be computed by any code successfully malloc'ing any chunk, so does not itself provide protection against code that has already broken security through some other means. Unlike Robertson et al, we always dynamically check addresses of all offset chunks (previous, next, etc). This turns out to be cheaper than relying on hashes. */ #if !INSECURE /* Check if address a is at least as high as any from MORECORE or MMAP */ #define ok_address(M, a) ((char*)(a) >= (M)->least_addr) /* Check if address of next chunk n is higher than base chunk p */ #define ok_next(p, n) ((char*)(p) < (char*)(n)) /* Check if p has its cinuse bit on */ #define ok_cinuse(p) cinuse(p) /* Check if p has its pinuse bit on */ #define ok_pinuse(p) pinuse(p) #else /* !INSECURE */ #define ok_address(M, a) (1) #define ok_next(b, n) (1) #define ok_cinuse(p) (1) #define ok_pinuse(p) (1) #endif /* !INSECURE */ #if (FOOTERS && !INSECURE) /* Check if (alleged) mstate m has expected magic field */ #define ok_magic(M) ((M)->magic == mparams.magic) #else /* (FOOTERS && !INSECURE) */ #define ok_magic(M) (1) #endif /* (FOOTERS && !INSECURE) */ /* In gcc, use __builtin_expect to minimize impact of checks */ #if !INSECURE #if defined(__GNUC__) && __GNUC__ >= 3 #define RTCHECK(e) __builtin_expect(e, 1) #else /* GNUC */ #define RTCHECK(e) (e) #endif /* GNUC */ #else /* !INSECURE */ #define RTCHECK(e) (1) #endif /* !INSECURE */ /* macros to set up inuse chunks with or without footers */ #if !FOOTERS #define mark_inuse_foot(M,p,s) /* Set cinuse bit and pinuse bit of next chunk */ #define set_inuse(M,p,s)\ ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set cinuse and pinuse of this chunk and pinuse of next chunk */ #define set_inuse_and_pinuse(M,p,s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set size, cinuse and pinuse bit of this chunk */ #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) #else /* FOOTERS */ /* Set foot of inuse chunk to be xor of mstate and seed */ #define mark_inuse_foot(M,p,s)\ (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) #define get_mstate_for(p)\ ((mstate)(((mchunkptr)((char*)(p) +\ (chunksize(p))))->prev_foot ^ mparams.magic)) #define set_inuse(M,p,s)\ ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ mark_inuse_foot(M,p,s)) #define set_inuse_and_pinuse(M,p,s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ mark_inuse_foot(M,p,s)) #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ mark_inuse_foot(M, p, s)) #endif /* !FOOTERS */ /* ---------------------------- setting mparams -------------------------- */ /* Initialize mparams */ static int init_mparams(void) { if (mparams.page_size == 0) { size_t s; mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; #if MORECORE_CONTIGUOUS mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; #else /* MORECORE_CONTIGUOUS */ mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; #endif /* MORECORE_CONTIGUOUS */ #if (FOOTERS && !INSECURE) { #if USE_DEV_RANDOM int fd; unsigned char buf[sizeof(size_t)]; /* Try to use /dev/urandom, else fall back on using time */ if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && read(fd, buf, sizeof(buf)) == sizeof(buf)) { s = *((size_t *) buf); close(fd); } else #endif /* USE_DEV_RANDOM */ s = (size_t)(time(0) ^ (size_t)0x55555555U); s |= (size_t)8U; /* ensure nonzero */ s &= ~(size_t)7U; /* improve chances of fault for bad values */ } #else /* (FOOTERS && !INSECURE) */ s = (size_t)0x58585858U; #endif /* (FOOTERS && !INSECURE) */ ACQUIRE_MAGIC_INIT_LOCK(); if (mparams.magic == 0) { mparams.magic = s; /* Set up lock for main malloc area */ INITIAL_LOCK(&gm->mutex); gm->mflags = mparams.default_mflags; } RELEASE_MAGIC_INIT_LOCK(); #if !defined(WIN32) && !defined(__OS2__) mparams.page_size = malloc_getpagesize; mparams.granularity = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : mparams.page_size); #elif defined (__OS2__) /* if low-memory is used, os2munmap() would break if it were anything other than 64k */ mparams.page_size = 4096u; mparams.granularity = 65536u; #else /* WIN32 */ { SYSTEM_INFO system_info; GetSystemInfo(&system_info); mparams.page_size = system_info.dwPageSize; mparams.granularity = system_info.dwAllocationGranularity; } #endif /* WIN32 */ /* Sanity-check configuration: size_t must be unsigned and as wide as pointer type. ints must be at least 4 bytes. alignment must be at least 8. Alignment, min chunk size, and page size must all be powers of 2. */ if ((sizeof(size_t) != sizeof(char*)) || (MAX_SIZE_T < MIN_CHUNK_SIZE) || (sizeof(int) < 4) || (MALLOC_ALIGNMENT < (size_t)8U) || ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || ((mparams.granularity & (mparams.granularity-SIZE_T_ONE)) != 0) || ((mparams.page_size & (mparams.page_size-SIZE_T_ONE)) != 0)) ABORT; } return 0; } /* support for mallopt */ static int change_mparam(int param_number, int value) { size_t val = (size_t)value; init_mparams(); switch(param_number) { case M_TRIM_THRESHOLD: mparams.trim_threshold = val; return 1; case M_GRANULARITY: if (val >= mparams.page_size && ((val & (val-1)) == 0)) { mparams.granularity = val; return 1; } else return 0; case M_MMAP_THRESHOLD: mparams.mmap_threshold = val; return 1; default: return 0; } } #if DEBUG /* ------------------------- Debugging Support --------------------------- */ /* Check properties of any chunk, whether free, inuse, mmapped etc */ static void do_check_any_chunk(mstate m, mchunkptr p) { assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); } /* Check properties of top chunk */ static void do_check_top_chunk(mstate m, mchunkptr p) { msegmentptr sp = segment_holding(m, (char*)p); size_t sz = chunksize(p); assert(sp != 0); assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); assert(sz == m->topsize); assert(sz > 0); assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); assert(pinuse(p)); assert(!next_pinuse(p)); } /* Check properties of (inuse) mmapped chunks */ static void do_check_mmapped_chunk(mstate m, mchunkptr p) { size_t sz = chunksize(p); size_t len = (sz + (p->prev_foot & ~IS_MMAPPED_BIT) + MMAP_FOOT_PAD); assert(is_mmapped(p)); assert(use_mmap(m)); assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); assert(!is_small(sz)); assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); } /* Check properties of inuse chunks */ static void do_check_inuse_chunk(mstate m, mchunkptr p) { do_check_any_chunk(m, p); assert(cinuse(p)); assert(next_pinuse(p)); /* If not pinuse and not mmapped, previous chunk has OK offset */ assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); if (is_mmapped(p)) do_check_mmapped_chunk(m, p); } /* Check properties of free chunks */ static void do_check_free_chunk(mstate m, mchunkptr p) { size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); mchunkptr next = chunk_plus_offset(p, sz); do_check_any_chunk(m, p); assert(!cinuse(p)); assert(!next_pinuse(p)); assert (!is_mmapped(p)); if (p != m->dv && p != m->top) { if (sz >= MIN_CHUNK_SIZE) { assert((sz & CHUNK_ALIGN_MASK) == 0); assert(is_aligned(chunk2mem(p))); assert(next->prev_foot == sz); assert(pinuse(p)); assert (next == m->top || cinuse(next)); assert(p->fd->bk == p); assert(p->bk->fd == p); } else /* markers are always of size SIZE_T_SIZE */ assert(sz == SIZE_T_SIZE); } } /* Check properties of malloced chunks at the point they are malloced */ static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { if (mem != 0) { mchunkptr p = mem2chunk(mem); size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); do_check_inuse_chunk(m, p); assert((sz & CHUNK_ALIGN_MASK) == 0); assert(sz >= MIN_CHUNK_SIZE); assert(sz >= s); /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); } } /* Check a tree and its subtrees. */ static void do_check_tree(mstate m, tchunkptr t) { tchunkptr head = 0; tchunkptr u = t; bindex_t tindex = t->index; size_t tsize = chunksize(t); bindex_t idx; compute_tree_index(tsize, idx); assert(tindex == idx); assert(tsize >= MIN_LARGE_SIZE); assert(tsize >= minsize_for_tree_index(idx)); assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); do { /* traverse through chain of same-sized nodes */ do_check_any_chunk(m, ((mchunkptr)u)); assert(u->index == tindex); assert(chunksize(u) == tsize); assert(!cinuse(u)); assert(!next_pinuse(u)); assert(u->fd->bk == u); assert(u->bk->fd == u); if (u->parent == 0) { assert(u->child[0] == 0); assert(u->child[1] == 0); } else { assert(head == 0); /* only one node on chain has parent */ head = u; assert(u->parent != u); assert (u->parent->child[0] == u || u->parent->child[1] == u || *((tbinptr*)(u->parent)) == u); if (u->child[0] != 0) { assert(u->child[0]->parent == u); assert(u->child[0] != u); do_check_tree(m, u->child[0]); } if (u->child[1] != 0) { assert(u->child[1]->parent == u); assert(u->child[1] != u); do_check_tree(m, u->child[1]); } if (u->child[0] != 0 && u->child[1] != 0) { assert(chunksize(u->child[0]) < chunksize(u->child[1])); } } u = u->fd; } while (u != t); assert(head != 0); } /* Check all the chunks in a treebin. */ static void do_check_treebin(mstate m, bindex_t i) { tbinptr* tb = treebin_at(m, i); tchunkptr t = *tb; int empty = (m->treemap & (1U << i)) == 0; if (t == 0) assert(empty); if (!empty) do_check_tree(m, t); } /* Check all the chunks in a smallbin. */ static void do_check_smallbin(mstate m, bindex_t i) { sbinptr b = smallbin_at(m, i); mchunkptr p = b->bk; unsigned int empty = (m->smallmap & (1U << i)) == 0; if (p == b) assert(empty); if (!empty) { for (; p != b; p = p->bk) { size_t size = chunksize(p); mchunkptr q; /* each chunk claims to be free */ do_check_free_chunk(m, p); /* chunk belongs in bin */ assert(small_index(size) == i); assert(p->bk == b || chunksize(p->bk) == chunksize(p)); /* chunk is followed by an inuse chunk */ q = next_chunk(p); if (q->head != FENCEPOST_HEAD) do_check_inuse_chunk(m, q); } } } /* Find x in a bin. Used in other check functions. */ static int bin_find(mstate m, mchunkptr x) { size_t size = chunksize(x); if (is_small(size)) { bindex_t sidx = small_index(size); sbinptr b = smallbin_at(m, sidx); if (smallmap_is_marked(m, sidx)) { mchunkptr p = b; do { if (p == x) return 1; } while ((p = p->fd) != b); } } else { bindex_t tidx; compute_tree_index(size, tidx); if (treemap_is_marked(m, tidx)) { tchunkptr t = *treebin_at(m, tidx); size_t sizebits = size << leftshift_for_tree_index(tidx); while (t != 0 && chunksize(t) != size) { t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; sizebits <<= 1; } if (t != 0) { tchunkptr u = t; do { if (u == (tchunkptr)x) return 1; } while ((u = u->fd) != t); } } } return 0; } /* Traverse each chunk and check it; return total */ static size_t traverse_and_check(mstate m) { size_t sum = 0; if (is_initialized(m)) { msegmentptr s = &m->seg; sum += m->topsize + TOP_FOOT_SIZE; while (s != 0) { mchunkptr q = align_as_chunk(s->base); mchunkptr lastq = 0; assert(pinuse(q)); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { sum += chunksize(q); if (cinuse(q)) { assert(!bin_find(m, q)); do_check_inuse_chunk(m, q); } else { assert(q == m->dv || bin_find(m, q)); assert(lastq == 0 || cinuse(lastq)); /* Not 2 consecutive free */ do_check_free_chunk(m, q); } lastq = q; q = next_chunk(q); } s = s->next; } } return sum; } /* Check all properties of malloc_state. */ static void do_check_malloc_state(mstate m) { bindex_t i; size_t total; /* check bins */ for (i = 0; i < NSMALLBINS; ++i) do_check_smallbin(m, i); for (i = 0; i < NTREEBINS; ++i) do_check_treebin(m, i); if (m->dvsize != 0) { /* check dv chunk */ do_check_any_chunk(m, m->dv); assert(m->dvsize == chunksize(m->dv)); assert(m->dvsize >= MIN_CHUNK_SIZE); assert(bin_find(m, m->dv) == 0); } if (m->top != 0) { /* check top chunk */ do_check_top_chunk(m, m->top); assert(m->topsize == chunksize(m->top)); assert(m->topsize > 0); assert(bin_find(m, m->top) == 0); } total = traverse_and_check(m); assert(total <= m->footprint); assert(m->footprint <= m->max_footprint); } #endif /* DEBUG */ /* ----------------------------- statistics ------------------------------ */ #if !NO_MALLINFO static struct mallinfo internal_mallinfo(mstate m) { struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; if (!PREACTION(m)) { check_malloc_state(m); if (is_initialized(m)) { size_t nfree = SIZE_T_ONE; /* top always free */ size_t mfree = m->topsize + TOP_FOOT_SIZE; size_t sum = mfree; msegmentptr s = &m->seg; while (s != 0) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { size_t sz = chunksize(q); sum += sz; if (!cinuse(q)) { mfree += sz; ++nfree; } q = next_chunk(q); } s = s->next; } nm.arena = sum; nm.ordblks = nfree; nm.hblkhd = m->footprint - sum; nm.usmblks = m->max_footprint; nm.uordblks = m->footprint - mfree; nm.fordblks = mfree; nm.keepcost = m->topsize; } POSTACTION(m); } return nm; } #endif /* !NO_MALLINFO */ static void internal_malloc_stats(mstate m) { if (!PREACTION(m)) { size_t maxfp = 0; size_t fp = 0; size_t used = 0; check_malloc_state(m); if (is_initialized(m)) { msegmentptr s = &m->seg; maxfp = m->max_footprint; fp = m->footprint; used = fp - (m->topsize + TOP_FOOT_SIZE); while (s != 0) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { if (!cinuse(q)) used -= chunksize(q); q = next_chunk(q); } s = s->next; } } fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); POSTACTION(m); } } /* ----------------------- Operations on smallbins ----------------------- */ /* Various forms of linking and unlinking are defined as macros. Even the ones for trees, which are very long but have very short typical paths. This is ugly but reduces reliance on inlining support of compilers. */ /* Link a free chunk into a smallbin */ #define insert_small_chunk(M, P, S) {\ bindex_t I = small_index(S);\ mchunkptr B = smallbin_at(M, I);\ mchunkptr F = B;\ assert(S >= MIN_CHUNK_SIZE);\ if (!smallmap_is_marked(M, I))\ mark_smallmap(M, I);\ else if (RTCHECK(ok_address(M, B->fd)))\ F = B->fd;\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ B->fd = P;\ F->bk = P;\ P->fd = F;\ P->bk = B;\ } /* Unlink a chunk from a smallbin */ #define unlink_small_chunk(M, P, S) {\ mchunkptr F = P->fd;\ mchunkptr B = P->bk;\ bindex_t I = small_index(S);\ assert(P != B);\ assert(P != F);\ assert(chunksize(P) == small_index2size(I));\ if (F == B)\ clear_smallmap(M, I);\ else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) &&\ (B == smallbin_at(M,I) || ok_address(M, B)))) {\ F->bk = B;\ B->fd = F;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ } /* Unlink the first chunk from a smallbin */ #define unlink_first_small_chunk(M, B, P, I) {\ mchunkptr F = P->fd;\ assert(P != B);\ assert(P != F);\ assert(chunksize(P) == small_index2size(I));\ if (B == F)\ clear_smallmap(M, I);\ else if (RTCHECK(ok_address(M, F))) {\ B->fd = F;\ F->bk = B;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ } /* Replace dv node, binning the old one */ /* Used only when dvsize known to be small */ #define replace_dv(M, P, S) {\ size_t DVS = M->dvsize;\ if (DVS != 0) {\ mchunkptr DV = M->dv;\ assert(is_small(DVS));\ insert_small_chunk(M, DV, DVS);\ }\ M->dvsize = S;\ M->dv = P;\ } /* ------------------------- Operations on trees ------------------------- */ /* Insert chunk into tree */ #define insert_large_chunk(M, X, S) {\ tbinptr* H;\ bindex_t I;\ compute_tree_index(S, I);\ H = treebin_at(M, I);\ X->index = I;\ X->child[0] = X->child[1] = 0;\ if (!treemap_is_marked(M, I)) {\ mark_treemap(M, I);\ *H = X;\ X->parent = (tchunkptr)H;\ X->fd = X->bk = X;\ }\ else {\ tchunkptr T = *H;\ size_t K = S << leftshift_for_tree_index(I);\ for (;;) {\ if (chunksize(T) != S) {\ tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ K <<= 1;\ if (*C != 0)\ T = *C;\ else if (RTCHECK(ok_address(M, C))) {\ *C = X;\ X->parent = T;\ X->fd = X->bk = X;\ break;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ break;\ }\ }\ else {\ tchunkptr F = T->fd;\ if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ T->fd = F->bk = X;\ X->fd = F;\ X->bk = T;\ X->parent = 0;\ break;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ break;\ }\ }\ }\ }\ } /* Unlink steps: 1. If x is a chained node, unlink it from its same-sized fd/bk links and choose its bk node as its replacement. 2. If x was the last node of its size, but not a leaf node, it must be replaced with a leaf node (not merely one with an open left or right), to make sure that lefts and rights of descendants correspond properly to bit masks. We use the rightmost descendant of x. We could use any other leaf, but this is easy to locate and tends to counteract removal of leftmosts elsewhere, and so keeps paths shorter than minimally guaranteed. This doesn't loop much because on average a node in a tree is near the bottom. 3. If x is the base of a chain (i.e., has parent links) relink x's parent and children to x's replacement (or null if none). */ #define unlink_large_chunk(M, X) {\ tchunkptr XP = X->parent;\ tchunkptr R;\ if (X->bk != X) {\ tchunkptr F = X->fd;\ R = X->bk;\ if (RTCHECK(ok_address(M, F))) {\ F->bk = R;\ R->fd = F;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ else {\ tchunkptr* RP;\ if (((R = *(RP = &(X->child[1]))) != 0) ||\ ((R = *(RP = &(X->child[0]))) != 0)) {\ tchunkptr* CP;\ while ((*(CP = &(R->child[1])) != 0) ||\ (*(CP = &(R->child[0])) != 0)) {\ R = *(RP = CP);\ }\ if (RTCHECK(ok_address(M, RP)))\ *RP = 0;\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ }\ if (XP != 0) {\ tbinptr* H = treebin_at(M, X->index);\ if (X == *H) {\ if ((*H = R) == 0) \ clear_treemap(M, X->index);\ }\ else if (RTCHECK(ok_address(M, XP))) {\ if (XP->child[0] == X) \ XP->child[0] = R;\ else \ XP->child[1] = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ if (R != 0) {\ if (RTCHECK(ok_address(M, R))) {\ tchunkptr C0, C1;\ R->parent = XP;\ if ((C0 = X->child[0]) != 0) {\ if (RTCHECK(ok_address(M, C0))) {\ R->child[0] = C0;\ C0->parent = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ if ((C1 = X->child[1]) != 0) {\ if (RTCHECK(ok_address(M, C1))) {\ R->child[1] = C1;\ C1->parent = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ } /* Relays to large vs small bin operations */ #define insert_chunk(M, P, S)\ if (is_small(S)) insert_small_chunk(M, P, S)\ else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } #define unlink_chunk(M, P, S)\ if (is_small(S)) unlink_small_chunk(M, P, S)\ else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } /* Relays to internal calls to malloc/free from realloc, memalign etc */ #if ONLY_MSPACES #define internal_malloc(m, b) mspace_malloc(m, b) #define internal_free(m, mem) mspace_free(m,mem); #else /* ONLY_MSPACES */ #if MSPACES #define internal_malloc(m, b)\ (m == gm)? dlmalloc(b) : mspace_malloc(m, b) #define internal_free(m, mem)\ if (m == gm) dlfree(mem); else mspace_free(m,mem); #else /* MSPACES */ #define internal_malloc(m, b) dlmalloc(b) #define internal_free(m, mem) dlfree(mem) #endif /* MSPACES */ #endif /* ONLY_MSPACES */ /* ----------------------- Direct-mmapping chunks ----------------------- */ /* Directly mmapped chunks are set up with an offset to the start of the mmapped region stored in the prev_foot field of the chunk. This allows reconstruction of the required argument to MUNMAP when freed, and also allows adjustment of the returned chunk to meet alignment requirements (especially in memalign). There is also enough space allocated to hold a fake next chunk of size SIZE_T_SIZE to maintain the PINUSE bit so frees can be checked. */ /* Malloc using mmap */ static void* mmap_alloc(mstate m, size_t nb) { size_t mmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); if (mmsize > nb) { /* Check for wrap around 0 */ char* mm = (char*)(DIRECT_MMAP(mmsize)); if (mm != CMFAIL) { size_t offset = align_offset(chunk2mem(mm)); size_t psize = mmsize - offset - MMAP_FOOT_PAD; mchunkptr p = (mchunkptr)(mm + offset); p->prev_foot = offset | IS_MMAPPED_BIT; (p)->head = (psize|CINUSE_BIT); mark_inuse_foot(m, p, psize); chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; if (mm < m->least_addr) m->least_addr = mm; if ((m->footprint += mmsize) > m->max_footprint) m->max_footprint = m->footprint; assert(is_aligned(chunk2mem(p))); check_mmapped_chunk(m, p); return chunk2mem(p); } } return 0; } /* Realloc using mmap */ static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb) { size_t oldsize = chunksize(oldp); if (is_small(nb)) /* Can't shrink mmap regions below small size */ return 0; /* Keep old chunk if big enough but not too big */ if (oldsize >= nb + SIZE_T_SIZE && (oldsize - nb) <= (mparams.granularity << 1)) return oldp; else { size_t offset = oldp->prev_foot & ~IS_MMAPPED_BIT; size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; size_t newmmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); char* cp = (char*)CALL_MREMAP((char*)oldp - offset, oldmmsize, newmmsize, 1); if (cp != CMFAIL) { mchunkptr newp = (mchunkptr)(cp + offset); size_t psize = newmmsize - offset - MMAP_FOOT_PAD; newp->head = (psize|CINUSE_BIT); mark_inuse_foot(m, newp, psize); chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; if (cp < m->least_addr) m->least_addr = cp; if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) m->max_footprint = m->footprint; check_mmapped_chunk(m, newp); return newp; } } return 0; } /* -------------------------- mspace management -------------------------- */ /* Initialize top chunk and its size */ static void init_top(mstate m, mchunkptr p, size_t psize) { /* Ensure alignment */ size_t offset = align_offset(chunk2mem(p)); p = (mchunkptr)((char*)p + offset); psize -= offset; m->top = p; m->topsize = psize; p->head = psize | PINUSE_BIT; /* set size of fake trailing chunk holding overhead space only once */ chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; m->trim_check = mparams.trim_threshold; /* reset on each update */ } /* Initialize bins for a new mstate that is otherwise zeroed out */ static void init_bins(mstate m) { /* Establish circular links for smallbins */ bindex_t i; for (i = 0; i < NSMALLBINS; ++i) { sbinptr bin = smallbin_at(m,i); bin->fd = bin->bk = bin; } } #if PROCEED_ON_ERROR /* default corruption action */ static void reset_on_error(mstate m) { int i; ++malloc_corruption_error_count; /* Reinitialize fields to forget about all memory */ m->smallbins = m->treebins = 0; m->dvsize = m->topsize = 0; m->seg.base = 0; m->seg.size = 0; m->seg.next = 0; m->top = m->dv = 0; for (i = 0; i < NTREEBINS; ++i) *treebin_at(m, i) = 0; init_bins(m); } #endif /* PROCEED_ON_ERROR */ /* Allocate chunk and prepend remainder with chunk in successor base. */ static void* prepend_alloc(mstate m, char* newbase, char* oldbase, size_t nb) { mchunkptr p = align_as_chunk(newbase); mchunkptr oldfirst = align_as_chunk(oldbase); size_t psize = (char*)oldfirst - (char*)p; mchunkptr q = chunk_plus_offset(p, nb); size_t qsize = psize - nb; set_size_and_pinuse_of_inuse_chunk(m, p, nb); assert((char*)oldfirst > (char*)q); assert(pinuse(oldfirst)); assert(qsize >= MIN_CHUNK_SIZE); /* consolidate remainder with first chunk of old base */ if (oldfirst == m->top) { size_t tsize = m->topsize += qsize; m->top = q; q->head = tsize | PINUSE_BIT; check_top_chunk(m, q); } else if (oldfirst == m->dv) { size_t dsize = m->dvsize += qsize; m->dv = q; set_size_and_pinuse_of_free_chunk(q, dsize); } else { if (!cinuse(oldfirst)) { size_t nsize = chunksize(oldfirst); unlink_chunk(m, oldfirst, nsize); oldfirst = chunk_plus_offset(oldfirst, nsize); qsize += nsize; } set_free_with_pinuse(q, qsize, oldfirst); insert_chunk(m, q, qsize); check_free_chunk(m, q); } check_malloced_chunk(m, chunk2mem(p), nb); return chunk2mem(p); } /* Add a segment to hold a new noncontiguous region */ static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { /* Determine locations and sizes of segment, fenceposts, old top */ char* old_top = (char*)m->top; msegmentptr oldsp = segment_holding(m, old_top); char* old_end = oldsp->base + oldsp->size; size_t ssize = pad_request(sizeof(struct malloc_segment)); char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); size_t offset = align_offset(chunk2mem(rawsp)); char* asp = rawsp + offset; char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; mchunkptr sp = (mchunkptr)csp; msegmentptr ss = (msegmentptr)(chunk2mem(sp)); mchunkptr tnext = chunk_plus_offset(sp, ssize); mchunkptr p = tnext; int nfences = 0; /* reset top to new space */ init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); /* Set up segment record */ assert(is_aligned(ss)); set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); *ss = m->seg; /* Push current record */ m->seg.base = tbase; m->seg.size = tsize; (void)set_segment_flags(&m->seg, mmapped); m->seg.next = ss; /* Insert trailing fenceposts */ for (;;) { mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); p->head = FENCEPOST_HEAD; ++nfences; if ((char*)(&(nextp->head)) < old_end) p = nextp; else break; } assert(nfences >= 2); /* Insert the rest of old top into a bin as an ordinary free chunk */ if (csp != old_top) { mchunkptr q = (mchunkptr)old_top; size_t psize = csp - old_top; mchunkptr tn = chunk_plus_offset(q, psize); set_free_with_pinuse(q, psize, tn); insert_chunk(m, q, psize); } check_top_chunk(m, m->top); } /* -------------------------- System allocation -------------------------- */ /* Get memory from system using MORECORE or MMAP */ static void* sys_alloc(mstate m, size_t nb) { char* tbase = CMFAIL; size_t tsize = 0; flag_t mmap_flag = 0; init_mparams(); /* Directly map large chunks */ if (use_mmap(m) && nb >= mparams.mmap_threshold) { void* mem = mmap_alloc(m, nb); if (mem != 0) return mem; } /* Try getting memory in any of three ways (in most-preferred to least-preferred order): 1. A call to MORECORE that can normally contiguously extend memory. (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or or main space is mmapped or a previous contiguous call failed) 2. A call to MMAP new space (disabled if not HAVE_MMAP). Note that under the default settings, if MORECORE is unable to fulfill a request, and HAVE_MMAP is true, then mmap is used as a noncontiguous system allocator. This is a useful backup strategy for systems with holes in address spaces -- in this case sbrk cannot contiguously expand the heap, but mmap may be able to find space. 3. A call to MORECORE that cannot usually contiguously extend memory. (disabled if not HAVE_MORECORE) */ if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { char* br = CMFAIL; msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); size_t asize = 0; ACQUIRE_MORECORE_LOCK(); if (ss == 0) { /* First time through or recovery */ char* base = (char*)CALL_MORECORE(0); if (base != CMFAIL) { asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); /* Adjust to end on a page boundary */ if (!is_page_aligned(base)) asize += (page_align((size_t)base) - (size_t)base); /* Can't call MORECORE if size is negative when treated as signed */ if (asize < HALF_MAX_SIZE_T && (br = (char*)(CALL_MORECORE(asize))) == base) { tbase = base; tsize = asize; } } } else { /* Subtract out existing available top space from MORECORE request. */ asize = granularity_align(nb - m->topsize + TOP_FOOT_SIZE + SIZE_T_ONE); /* Use mem here only if it did continuously extend old space */ if (asize < HALF_MAX_SIZE_T && (br = (char*)(CALL_MORECORE(asize))) == ss->base+ss->size) { tbase = br; tsize = asize; } } if (tbase == CMFAIL) { /* Cope with partial failure */ if (br != CMFAIL) { /* Try to use/extend the space we did get */ if (asize < HALF_MAX_SIZE_T && asize < nb + TOP_FOOT_SIZE + SIZE_T_ONE) { size_t esize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE - asize); if (esize < HALF_MAX_SIZE_T) { char* end = (char*)CALL_MORECORE(esize); if (end != CMFAIL) asize += esize; else { /* Can't use; try to release */ (void)CALL_MORECORE(-asize); br = CMFAIL; } } } } if (br != CMFAIL) { /* Use the space we did get */ tbase = br; tsize = asize; } else disable_contiguous(m); /* Don't try contiguous path in the future */ } RELEASE_MORECORE_LOCK(); } if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ size_t req = nb + TOP_FOOT_SIZE + SIZE_T_ONE; size_t rsize = granularity_align(req); if (rsize > nb) { /* Fail if wraps around zero */ char* mp = (char*)(CALL_MMAP(rsize)); if (mp != CMFAIL) { tbase = mp; tsize = rsize; mmap_flag = IS_MMAPPED_BIT; } } } if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ size_t asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); if (asize < HALF_MAX_SIZE_T) { char* br = CMFAIL; char* end = CMFAIL; ACQUIRE_MORECORE_LOCK(); br = (char*)(CALL_MORECORE(asize)); end = (char*)(CALL_MORECORE(0)); RELEASE_MORECORE_LOCK(); if (br != CMFAIL && end != CMFAIL && br < end) { size_t ssize = end - br; if (ssize > nb + TOP_FOOT_SIZE) { tbase = br; tsize = ssize; } } } } if (tbase != CMFAIL) { if ((m->footprint += tsize) > m->max_footprint) m->max_footprint = m->footprint; if (!is_initialized(m)) { /* first-time initialization */ m->seg.base = m->least_addr = tbase; m->seg.size = tsize; (void)set_segment_flags(&m->seg, mmap_flag); m->magic = mparams.magic; init_bins(m); if (is_global(m)) init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); else { /* Offset top by embedded malloc_state */ mchunkptr mn = next_chunk(mem2chunk(m)); init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); } } else { /* Try to merge with an existing segment */ msegmentptr sp = &m->seg; while (sp != 0 && tbase != sp->base + sp->size) sp = sp->next; if (sp != 0 && !is_extern_segment(sp) && check_segment_merge(sp, tbase, tsize) && (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag && segment_holds(sp, m->top)) { /* append */ sp->size += tsize; init_top(m, m->top, m->topsize + tsize); } else { if (tbase < m->least_addr) m->least_addr = tbase; sp = &m->seg; while (sp != 0 && sp->base != tbase + tsize) sp = sp->next; if (sp != 0 && !is_extern_segment(sp) && check_segment_merge(sp, tbase, tsize) && (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag) { char* oldbase = sp->base; sp->base = tbase; sp->size += tsize; return prepend_alloc(m, tbase, oldbase, nb); } else add_segment(m, tbase, tsize, mmap_flag); } } if (nb < m->topsize) { /* Allocate from new or extended top space */ size_t rsize = m->topsize -= nb; mchunkptr p = m->top; mchunkptr r = m->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(m, p, nb); check_top_chunk(m, m->top); check_malloced_chunk(m, chunk2mem(p), nb); return chunk2mem(p); } } MALLOC_FAILURE_ACTION; return 0; } /* ----------------------- system deallocation -------------------------- */ /* Unmap and unlink any mmapped segments that don't contain used chunks */ static size_t release_unused_segments(mstate m) { size_t released = 0; msegmentptr pred = &m->seg; msegmentptr sp = pred->next; while (sp != 0) { char* base = sp->base; size_t size = sp->size; msegmentptr next = sp->next; if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { mchunkptr p = align_as_chunk(base); size_t psize = chunksize(p); /* Can unmap if first chunk holds entire segment and not pinned */ if (!cinuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { tchunkptr tp = (tchunkptr)p; assert(segment_holds(sp, (char*)sp)); if (p == m->dv) { m->dv = 0; m->dvsize = 0; } else { unlink_large_chunk(m, tp); } if (CALL_MUNMAP(base, size) == 0) { released += size; m->footprint -= size; /* unlink obsoleted record */ sp = pred; sp->next = next; } else { /* back out if cannot unmap */ insert_large_chunk(m, tp, psize); } } } pred = sp; sp = next; } return released; } static int sys_trim(mstate m, size_t pad) { size_t released = 0; if (pad < MAX_REQUEST && is_initialized(m)) { pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ if (m->topsize > pad) { /* Shrink top space in granularity-size units, keeping at least one */ size_t unit = mparams.granularity; size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - SIZE_T_ONE) * unit; msegmentptr sp = segment_holding(m, (char*)m->top); if (!is_extern_segment(sp)) { if (is_mmapped_segment(sp)) { if (HAVE_MMAP && sp->size >= extra && !has_segment_link(m, sp)) { /* can't shrink if pinned */ size_t newsize = sp->size - extra; /* Prefer mremap, fall back to munmap */ if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { released = extra; } } } else if (HAVE_MORECORE) { if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; ACQUIRE_MORECORE_LOCK(); { /* Make sure end of memory is where we last set it. */ char* old_br = (char*)(CALL_MORECORE(0)); if (old_br == sp->base + sp->size) { char* rel_br = (char*)(CALL_MORECORE(-extra)); char* new_br = (char*)(CALL_MORECORE(0)); if (rel_br != CMFAIL && new_br < old_br) released = old_br - new_br; } } RELEASE_MORECORE_LOCK(); } } if (released != 0) { sp->size -= released; m->footprint -= released; init_top(m, m->top, m->topsize - released); check_top_chunk(m, m->top); } } /* Unmap any unused mmapped segments */ if (HAVE_MMAP) released += release_unused_segments(m); /* On failure, disable autotrim to avoid repeated failed future calls */ if (released == 0) m->trim_check = MAX_SIZE_T; } return (released != 0)? 1 : 0; } /* ---------------------------- malloc support --------------------------- */ /* allocate a large request from the best fitting chunk in a treebin */ static void* tmalloc_large(mstate m, size_t nb) { tchunkptr v = 0; size_t rsize = -nb; /* Unsigned negation */ tchunkptr t; bindex_t idx; compute_tree_index(nb, idx); if ((t = *treebin_at(m, idx)) != 0) { /* Traverse tree for this bin looking for node with size == nb */ size_t sizebits = nb << leftshift_for_tree_index(idx); tchunkptr rst = 0; /* The deepest untaken right subtree */ for (;;) { tchunkptr rt; size_t trem = chunksize(t) - nb; if (trem < rsize) { v = t; if ((rsize = trem) == 0) break; } rt = t->child[1]; t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; if (rt != 0 && rt != t) rst = rt; if (t == 0) { t = rst; /* set t to least subtree holding sizes > nb */ break; } sizebits <<= 1; } } if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; if (leftbits != 0) { bindex_t i; binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); t = *treebin_at(m, i); } } while (t != 0) { /* find smallest of tree or subtree */ size_t trem = chunksize(t) - nb; if (trem < rsize) { rsize = trem; v = t; } t = leftmost_child(t); } /* If dv is a better fit, return 0 so malloc will use it */ if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { if (RTCHECK(ok_address(m, v))) { /* split */ mchunkptr r = chunk_plus_offset(v, nb); assert(chunksize(v) == rsize + nb); if (RTCHECK(ok_next(v, r))) { unlink_large_chunk(m, v); if (rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(m, v, (rsize + nb)); else { set_size_and_pinuse_of_inuse_chunk(m, v, nb); set_size_and_pinuse_of_free_chunk(r, rsize); insert_chunk(m, r, rsize); } return chunk2mem(v); } } CORRUPTION_ERROR_ACTION(m); } return 0; } /* allocate a small request from the best fitting chunk in a treebin */ static void* tmalloc_small(mstate m, size_t nb) { tchunkptr t, v; size_t rsize; bindex_t i; binmap_t leastbit = least_bit(m->treemap); compute_bit2idx(leastbit, i); v = t = *treebin_at(m, i); rsize = chunksize(t) - nb; while ((t = leftmost_child(t)) != 0) { size_t trem = chunksize(t) - nb; if (trem < rsize) { rsize = trem; v = t; } } if (RTCHECK(ok_address(m, v))) { mchunkptr r = chunk_plus_offset(v, nb); assert(chunksize(v) == rsize + nb); if (RTCHECK(ok_next(v, r))) { unlink_large_chunk(m, v); if (rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(m, v, (rsize + nb)); else { set_size_and_pinuse_of_inuse_chunk(m, v, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(m, r, rsize); } return chunk2mem(v); } } CORRUPTION_ERROR_ACTION(m); return 0; } /* --------------------------- realloc support --------------------------- */ static void* internal_realloc(mstate m, void* oldmem, size_t bytes) { if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; return 0; } if (!PREACTION(m)) { mchunkptr oldp = mem2chunk(oldmem); size_t oldsize = chunksize(oldp); mchunkptr next = chunk_plus_offset(oldp, oldsize); mchunkptr newp = 0; void* extra = 0; /* Try to either shrink or extend into top. Else malloc-copy-free */ if (RTCHECK(ok_address(m, oldp) && ok_cinuse(oldp) && ok_next(oldp, next) && ok_pinuse(next))) { size_t nb = request2size(bytes); if (is_mmapped(oldp)) newp = mmap_resize(m, oldp, nb); else if (oldsize >= nb) { /* already big enough */ size_t rsize = oldsize - nb; newp = oldp; if (rsize >= MIN_CHUNK_SIZE) { mchunkptr remainder = chunk_plus_offset(newp, nb); set_inuse(m, newp, nb); set_inuse(m, remainder, rsize); extra = chunk2mem(remainder); } } else if (next == m->top && oldsize + m->topsize > nb) { /* Expand into top */ size_t newsize = oldsize + m->topsize; size_t newtopsize = newsize - nb; mchunkptr newtop = chunk_plus_offset(oldp, nb); set_inuse(m, oldp, nb); newtop->head = newtopsize |PINUSE_BIT; m->top = newtop; m->topsize = newtopsize; newp = oldp; } } else { USAGE_ERROR_ACTION(m, oldmem); POSTACTION(m); return 0; } POSTACTION(m); if (newp != 0) { if (extra != 0) { internal_free(m, extra); } check_inuse_chunk(m, newp); return chunk2mem(newp); } else { void* newmem = internal_malloc(m, bytes); if (newmem != 0) { size_t oc = oldsize - overhead_for(oldp); memcpy(newmem, oldmem, (oc < bytes)? oc : bytes); internal_free(m, oldmem); } return newmem; } } return 0; } /* --------------------------- memalign support -------------------------- */ static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { if (alignment <= MALLOC_ALIGNMENT) /* Can just use malloc */ return internal_malloc(m, bytes); if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ alignment = MIN_CHUNK_SIZE; if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ size_t a = MALLOC_ALIGNMENT << 1; while (a < alignment) a <<= 1; alignment = a; } if (bytes >= MAX_REQUEST - alignment) { if (m != 0) { /* Test isn't needed but avoids compiler warning */ MALLOC_FAILURE_ACTION; } } else { size_t nb = request2size(bytes); size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; char* mem = (char*)internal_malloc(m, req); if (mem != 0) { void* leader = 0; void* trailer = 0; mchunkptr p = mem2chunk(mem); if (PREACTION(m)) return 0; if ((((size_t)(mem)) % alignment) != 0) { /* misaligned */ /* Find an aligned spot inside chunk. Since we need to give back leading space in a chunk of at least MIN_CHUNK_SIZE, if the first calculation places us at a spot with less than MIN_CHUNK_SIZE leader, we can move to the next aligned spot. We've allocated enough total room so that this is always possible. */ char* br = (char*)mem2chunk((size_t)(((size_t)(mem + alignment - SIZE_T_ONE)) & -alignment)); char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? br : br+alignment; mchunkptr newp = (mchunkptr)pos; size_t leadsize = pos - (char*)(p); size_t newsize = chunksize(p) - leadsize; if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ newp->prev_foot = p->prev_foot + leadsize; newp->head = (newsize|CINUSE_BIT); } else { /* Otherwise, give back leader, use the rest */ set_inuse(m, newp, newsize); set_inuse(m, p, leadsize); leader = chunk2mem(p); } p = newp; } /* Give back spare room at the end */ if (!is_mmapped(p)) { size_t size = chunksize(p); if (size > nb + MIN_CHUNK_SIZE) { size_t remainder_size = size - nb; mchunkptr remainder = chunk_plus_offset(p, nb); set_inuse(m, p, nb); set_inuse(m, remainder, remainder_size); trailer = chunk2mem(remainder); } } assert (chunksize(p) >= nb); assert((((size_t)(chunk2mem(p))) % alignment) == 0); check_inuse_chunk(m, p); POSTACTION(m); if (leader != 0) { internal_free(m, leader); } if (trailer != 0) { internal_free(m, trailer); } return chunk2mem(p); } } return 0; } /* ------------------------ comalloc/coalloc support --------------------- */ static void** ialloc(mstate m, size_t n_elements, size_t* sizes, int opts, void* chunks[]) { /* This provides common support for independent_X routines, handling all of the combinations that can result. The opts arg has: bit 0 set if all elements are same size (using sizes[0]) bit 1 set if elements should be zeroed */ size_t element_size; /* chunksize of each element, if all same */ size_t contents_size; /* total size of elements */ size_t array_size; /* request size of pointer array */ void* mem; /* malloced aggregate space */ mchunkptr p; /* corresponding chunk */ size_t remainder_size; /* remaining bytes while splitting */ void** marray; /* either "chunks" or malloced ptr array */ mchunkptr array_chunk; /* chunk for malloced ptr array */ flag_t was_enabled; /* to disable mmap */ size_t size; size_t i; /* compute array length, if needed */ if (chunks != 0) { if (n_elements == 0) return chunks; /* nothing to do */ marray = chunks; array_size = 0; } else { /* if empty req, must still return chunk representing empty array */ if (n_elements == 0) return (void**)internal_malloc(m, 0); marray = 0; array_size = request2size(n_elements * (sizeof(void*))); } /* compute total element size */ if (opts & 0x1) { /* all-same-size */ element_size = request2size(*sizes); contents_size = n_elements * element_size; } else { /* add up all the sizes */ element_size = 0; contents_size = 0; for (i = 0; i != n_elements; ++i) contents_size += request2size(sizes[i]); } size = contents_size + array_size; /* Allocate the aggregate chunk. First disable direct-mmapping so malloc won't use it, since we would not be able to later free/realloc space internal to a segregated mmap region. */ was_enabled = use_mmap(m); disable_mmap(m); mem = internal_malloc(m, size - CHUNK_OVERHEAD); if (was_enabled) enable_mmap(m); if (mem == 0) return 0; if (PREACTION(m)) return 0; p = mem2chunk(mem); remainder_size = chunksize(p); assert(!is_mmapped(p)); if (opts & 0x2) { /* optionally clear the elements */ memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); } /* If not provided, allocate the pointer array as final part of chunk */ if (marray == 0) { size_t array_chunk_size; array_chunk = chunk_plus_offset(p, contents_size); array_chunk_size = remainder_size - contents_size; marray = (void**) (chunk2mem(array_chunk)); set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); remainder_size = contents_size; } /* split out elements */ for (i = 0; ; ++i) { marray[i] = chunk2mem(p); if (i != n_elements-1) { if (element_size != 0) size = element_size; else size = request2size(sizes[i]); remainder_size -= size; set_size_and_pinuse_of_inuse_chunk(m, p, size); p = chunk_plus_offset(p, size); } else { /* the final element absorbs any overallocation slop */ set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); break; } } #if DEBUG if (marray != chunks) { /* final element must have exactly exhausted chunk */ if (element_size != 0) { assert(remainder_size == element_size); } else { assert(remainder_size == request2size(sizes[i])); } check_inuse_chunk(m, mem2chunk(marray)); } for (i = 0; i != n_elements; ++i) check_inuse_chunk(m, mem2chunk(marray[i])); #endif /* DEBUG */ POSTACTION(m); return marray; } /* -------------------------- public routines ---------------------------- */ #if !ONLY_MSPACES void* dlmalloc(size_t bytes) { /* Basic algorithm: If a small request (< 256 bytes minus per-chunk overhead): 1. If one exists, use a remainderless chunk in associated smallbin. (Remainderless means that there are too few excess bytes to represent as a chunk.) 2. If it is big enough, use the dv chunk, which is normally the chunk adjacent to the one used for the most recent small request. 3. If one exists, split the smallest available chunk in a bin, saving remainder in dv. 4. If it is big enough, use the top chunk. 5. If available, get memory from system and use it Otherwise, for a large request: 1. Find the smallest available binned chunk that fits, and use it if it is better fitting than dv chunk, splitting if necessary. 2. If better fitting than any binned chunk, use the dv chunk. 3. If it is big enough, use the top chunk. 4. If request size >= mmap threshold, try to directly mmap this chunk. 5. If available, get memory from system and use it The ugly goto's here ensure that postaction occurs along all paths. */ if (!PREACTION(gm)) { void* mem; size_t nb; if (bytes <= MAX_SMALL_REQUEST) { bindex_t idx; binmap_t smallbits; nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); idx = small_index(nb); smallbits = gm->smallmap >> idx; if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ mchunkptr b, p; idx += ~smallbits & 1; /* Uses next bin if idx empty */ b = smallbin_at(gm, idx); p = b->fd; assert(chunksize(p) == small_index2size(idx)); unlink_first_small_chunk(gm, b, p, idx); set_inuse_and_pinuse(gm, p, small_index2size(idx)); mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (nb > gm->dvsize) { if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ mchunkptr b, p, r; size_t rsize; bindex_t i; binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); b = smallbin_at(gm, i); p = b->fd; assert(chunksize(p) == small_index2size(i)); unlink_first_small_chunk(gm, b, p, i); rsize = small_index2size(i) - nb; /* Fit here cannot be remainderless if 4byte sizes */ if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(gm, p, small_index2size(i)); else { set_size_and_pinuse_of_inuse_chunk(gm, p, nb); r = chunk_plus_offset(p, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(gm, r, rsize); } mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { check_malloced_chunk(gm, mem, nb); goto postaction; } } } else if (bytes >= MAX_REQUEST) nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ else { nb = pad_request(bytes); if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { check_malloced_chunk(gm, mem, nb); goto postaction; } } if (nb <= gm->dvsize) { size_t rsize = gm->dvsize - nb; mchunkptr p = gm->dv; if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ mchunkptr r = gm->dv = chunk_plus_offset(p, nb); gm->dvsize = rsize; set_size_and_pinuse_of_free_chunk(r, rsize); set_size_and_pinuse_of_inuse_chunk(gm, p, nb); } else { /* exhaust dv */ size_t dvs = gm->dvsize; gm->dvsize = 0; gm->dv = 0; set_inuse_and_pinuse(gm, p, dvs); } mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (nb < gm->topsize) { /* Split top */ size_t rsize = gm->topsize -= nb; mchunkptr p = gm->top; mchunkptr r = gm->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(gm, p, nb); mem = chunk2mem(p); check_top_chunk(gm, gm->top); check_malloced_chunk(gm, mem, nb); goto postaction; } mem = sys_alloc(gm, nb); postaction: POSTACTION(gm); return mem; } return 0; } void dlfree(void* mem) { /* Consolidate freed chunks with preceding or succeeding bordering free chunks, if they exist, and then place in a bin. Intermixed with special cases for top, dv, mmapped chunks, and usage errors. */ if (mem != 0) { mchunkptr p = mem2chunk(mem); #if FOOTERS mstate fm = get_mstate_for(p); if (!ok_magic(fm)) { USAGE_ERROR_ACTION(fm, p); return; } #else /* FOOTERS */ #define fm gm #endif /* FOOTERS */ if (!PREACTION(fm)) { check_inuse_chunk(fm, p); if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { size_t psize = chunksize(p); mchunkptr next = chunk_plus_offset(p, psize); if (!pinuse(p)) { size_t prevsize = p->prev_foot; if ((prevsize & IS_MMAPPED_BIT) != 0) { prevsize &= ~IS_MMAPPED_BIT; psize += prevsize + MMAP_FOOT_PAD; if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) fm->footprint -= psize; goto postaction; } else { mchunkptr prev = chunk_minus_offset(p, prevsize); psize += prevsize; p = prev; if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ if (p != fm->dv) { unlink_chunk(fm, p, prevsize); } else if ((next->head & INUSE_BITS) == INUSE_BITS) { fm->dvsize = psize; set_free_with_pinuse(p, psize, next); goto postaction; } } else goto erroraction; } } if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { if (!cinuse(next)) { /* consolidate forward */ if (next == fm->top) { size_t tsize = fm->topsize += psize; fm->top = p; p->head = tsize | PINUSE_BIT; if (p == fm->dv) { fm->dv = 0; fm->dvsize = 0; } if (should_trim(fm, tsize)) sys_trim(fm, 0); goto postaction; } else if (next == fm->dv) { size_t dsize = fm->dvsize += psize; fm->dv = p; set_size_and_pinuse_of_free_chunk(p, dsize); goto postaction; } else { size_t nsize = chunksize(next); psize += nsize; unlink_chunk(fm, next, nsize); set_size_and_pinuse_of_free_chunk(p, psize); if (p == fm->dv) { fm->dvsize = psize; goto postaction; } } } else set_free_with_pinuse(p, psize, next); insert_chunk(fm, p, psize); check_free_chunk(fm, p); goto postaction; } } erroraction: USAGE_ERROR_ACTION(fm, p); postaction: POSTACTION(fm); } } #if !FOOTERS #undef fm #endif /* FOOTERS */ } void* dlcalloc(size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; if (n_elements != 0) { req = n_elements * elem_size; if (((n_elements | elem_size) & ~(size_t)0xffff) && (req / n_elements != elem_size)) req = MAX_SIZE_T; /* force downstream failure on overflow */ } mem = dlmalloc(req); if (mem != 0 && calloc_must_clear(mem2chunk(mem))) memset(mem, 0, req); return mem; } void* dlrealloc(void* oldmem, size_t bytes) { if (oldmem == 0) return dlmalloc(bytes); #ifdef REALLOC_ZERO_BYTES_FREES if (bytes == 0) { dlfree(oldmem); return 0; } #endif /* REALLOC_ZERO_BYTES_FREES */ else { #if ! FOOTERS mstate m = gm; #else /* FOOTERS */ mstate m = get_mstate_for(mem2chunk(oldmem)); if (!ok_magic(m)) { USAGE_ERROR_ACTION(m, oldmem); return 0; } #endif /* FOOTERS */ return internal_realloc(m, oldmem, bytes); } } void* dlmemalign(size_t alignment, size_t bytes) { return internal_memalign(gm, alignment, bytes); } void** dlindependent_calloc(size_t n_elements, size_t elem_size, void* chunks[]) { size_t sz = elem_size; /* serves as 1-element array */ return ialloc(gm, n_elements, &sz, 3, chunks); } void** dlindependent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]) { return ialloc(gm, n_elements, sizes, 0, chunks); } void* dlvalloc(size_t bytes) { size_t pagesz; init_mparams(); pagesz = mparams.page_size; return dlmemalign(pagesz, bytes); } void* dlpvalloc(size_t bytes) { size_t pagesz; init_mparams(); pagesz = mparams.page_size; return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); } int dlmalloc_trim(size_t pad) { int result = 0; if (!PREACTION(gm)) { result = sys_trim(gm, pad); POSTACTION(gm); } return result; } size_t dlmalloc_footprint(void) { return gm->footprint; } size_t dlmalloc_max_footprint(void) { return gm->max_footprint; } #if !NO_MALLINFO struct mallinfo dlmallinfo(void) { return internal_mallinfo(gm); } #endif /* NO_MALLINFO */ void dlmalloc_stats() { internal_malloc_stats(gm); } size_t dlmalloc_usable_size(void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); if (cinuse(p)) return chunksize(p) - overhead_for(p); } return 0; } int dlmallopt(int param_number, int value) { return change_mparam(param_number, value); } #endif /* !ONLY_MSPACES */ /* ----------------------------- user mspaces ---------------------------- */ #if MSPACES static mstate init_user_mstate(char* tbase, size_t tsize) { size_t msize = pad_request(sizeof(struct malloc_state)); mchunkptr mn; mchunkptr msp = align_as_chunk(tbase); mstate m = (mstate)(chunk2mem(msp)); memset(m, 0, msize); INITIAL_LOCK(&m->mutex); msp->head = (msize|PINUSE_BIT|CINUSE_BIT); m->seg.base = m->least_addr = tbase; m->seg.size = m->footprint = m->max_footprint = tsize; m->magic = mparams.magic; m->mflags = mparams.default_mflags; disable_contiguous(m); init_bins(m); mn = next_chunk(mem2chunk(m)); init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); check_top_chunk(m, m->top); return m; } mspace create_mspace(size_t capacity, int locked) { mstate m = 0; size_t msize = pad_request(sizeof(struct malloc_state)); init_mparams(); /* Ensure pagesize etc initialized */ if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { size_t rs = ((capacity == 0)? mparams.granularity : (capacity + TOP_FOOT_SIZE + msize)); size_t tsize = granularity_align(rs); char* tbase = (char*)(CALL_MMAP(tsize)); if (tbase != CMFAIL) { m = init_user_mstate(tbase, tsize); set_segment_flags(&m->seg, IS_MMAPPED_BIT); set_lock(m, locked); } } return (mspace)m; } mspace create_mspace_with_base(void* base, size_t capacity, int locked) { mstate m = 0; size_t msize = pad_request(sizeof(struct malloc_state)); init_mparams(); /* Ensure pagesize etc initialized */ if (capacity > msize + TOP_FOOT_SIZE && capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { m = init_user_mstate((char*)base, capacity); set_segment_flags(&m->seg, EXTERN_BIT); set_lock(m, locked); } return (mspace)m; } size_t destroy_mspace(mspace msp) { size_t freed = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { msegmentptr sp = &ms->seg; while (sp != 0) { char* base = sp->base; size_t size = sp->size; flag_t flag = get_segment_flags(sp); sp = sp->next; if ((flag & IS_MMAPPED_BIT) && !(flag & EXTERN_BIT) && CALL_MUNMAP(base, size) == 0) freed += size; } } else { USAGE_ERROR_ACTION(ms,ms); } return freed; } /* mspace versions of routines are near-clones of the global versions. This is not so nice but better than the alternatives. */ void* mspace_malloc(mspace msp, size_t bytes) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } if (!PREACTION(ms)) { void* mem; size_t nb; if (bytes <= MAX_SMALL_REQUEST) { bindex_t idx; binmap_t smallbits; nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); idx = small_index(nb); smallbits = ms->smallmap >> idx; if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ mchunkptr b, p; idx += ~smallbits & 1; /* Uses next bin if idx empty */ b = smallbin_at(ms, idx); p = b->fd; assert(chunksize(p) == small_index2size(idx)); unlink_first_small_chunk(ms, b, p, idx); set_inuse_and_pinuse(ms, p, small_index2size(idx)); mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (nb > ms->dvsize) { if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ mchunkptr b, p, r; size_t rsize; bindex_t i; binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); b = smallbin_at(ms, i); p = b->fd; assert(chunksize(p) == small_index2size(i)); unlink_first_small_chunk(ms, b, p, i); rsize = small_index2size(i) - nb; /* Fit here cannot be remainderless if 4byte sizes */ if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(ms, p, small_index2size(i)); else { set_size_and_pinuse_of_inuse_chunk(ms, p, nb); r = chunk_plus_offset(p, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(ms, r, rsize); } mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { check_malloced_chunk(ms, mem, nb); goto postaction; } } } else if (bytes >= MAX_REQUEST) nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ else { nb = pad_request(bytes); if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { check_malloced_chunk(ms, mem, nb); goto postaction; } } if (nb <= ms->dvsize) { size_t rsize = ms->dvsize - nb; mchunkptr p = ms->dv; if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ mchunkptr r = ms->dv = chunk_plus_offset(p, nb); ms->dvsize = rsize; set_size_and_pinuse_of_free_chunk(r, rsize); set_size_and_pinuse_of_inuse_chunk(ms, p, nb); } else { /* exhaust dv */ size_t dvs = ms->dvsize; ms->dvsize = 0; ms->dv = 0; set_inuse_and_pinuse(ms, p, dvs); } mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (nb < ms->topsize) { /* Split top */ size_t rsize = ms->topsize -= nb; mchunkptr p = ms->top; mchunkptr r = ms->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(ms, p, nb); mem = chunk2mem(p); check_top_chunk(ms, ms->top); check_malloced_chunk(ms, mem, nb); goto postaction; } mem = sys_alloc(ms, nb); postaction: POSTACTION(ms); return mem; } return 0; } void mspace_free(mspace msp, void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); #if FOOTERS mstate fm = get_mstate_for(p); #else /* FOOTERS */ mstate fm = (mstate)msp; #endif /* FOOTERS */ if (!ok_magic(fm)) { USAGE_ERROR_ACTION(fm, p); return; } if (!PREACTION(fm)) { check_inuse_chunk(fm, p); if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { size_t psize = chunksize(p); mchunkptr next = chunk_plus_offset(p, psize); if (!pinuse(p)) { size_t prevsize = p->prev_foot; if ((prevsize & IS_MMAPPED_BIT) != 0) { prevsize &= ~IS_MMAPPED_BIT; psize += prevsize + MMAP_FOOT_PAD; if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) fm->footprint -= psize; goto postaction; } else { mchunkptr prev = chunk_minus_offset(p, prevsize); psize += prevsize; p = prev; if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ if (p != fm->dv) { unlink_chunk(fm, p, prevsize); } else if ((next->head & INUSE_BITS) == INUSE_BITS) { fm->dvsize = psize; set_free_with_pinuse(p, psize, next); goto postaction; } } else goto erroraction; } } if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { if (!cinuse(next)) { /* consolidate forward */ if (next == fm->top) { size_t tsize = fm->topsize += psize; fm->top = p; p->head = tsize | PINUSE_BIT; if (p == fm->dv) { fm->dv = 0; fm->dvsize = 0; } if (should_trim(fm, tsize)) sys_trim(fm, 0); goto postaction; } else if (next == fm->dv) { size_t dsize = fm->dvsize += psize; fm->dv = p; set_size_and_pinuse_of_free_chunk(p, dsize); goto postaction; } else { size_t nsize = chunksize(next); psize += nsize; unlink_chunk(fm, next, nsize); set_size_and_pinuse_of_free_chunk(p, psize); if (p == fm->dv) { fm->dvsize = psize; goto postaction; } } } else set_free_with_pinuse(p, psize, next); insert_chunk(fm, p, psize); check_free_chunk(fm, p); goto postaction; } } erroraction: USAGE_ERROR_ACTION(fm, p); postaction: POSTACTION(fm); } } } void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } if (n_elements != 0) { req = n_elements * elem_size; if (((n_elements | elem_size) & ~(size_t)0xffff) && (req / n_elements != elem_size)) req = MAX_SIZE_T; /* force downstream failure on overflow */ } mem = internal_malloc(ms, req); if (mem != 0 && calloc_must_clear(mem2chunk(mem))) memset(mem, 0, req); return mem; } void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { if (oldmem == 0) return mspace_malloc(msp, bytes); #ifdef REALLOC_ZERO_BYTES_FREES if (bytes == 0) { mspace_free(msp, oldmem); return 0; } #endif /* REALLOC_ZERO_BYTES_FREES */ else { #if FOOTERS mchunkptr p = mem2chunk(oldmem); mstate ms = get_mstate_for(p); #else /* FOOTERS */ mstate ms = (mstate)msp; #endif /* FOOTERS */ if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return internal_realloc(ms, oldmem, bytes); } } void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return internal_memalign(ms, alignment, bytes); } void** mspace_independent_calloc(mspace msp, size_t n_elements, size_t elem_size, void* chunks[]) { size_t sz = elem_size; /* serves as 1-element array */ mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return ialloc(ms, n_elements, &sz, 3, chunks); } void** mspace_independent_comalloc(mspace msp, size_t n_elements, size_t sizes[], void* chunks[]) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return ialloc(ms, n_elements, sizes, 0, chunks); } int mspace_trim(mspace msp, size_t pad) { int result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { if (!PREACTION(ms)) { result = sys_trim(ms, pad); POSTACTION(ms); } } else { USAGE_ERROR_ACTION(ms,ms); } return result; } void mspace_malloc_stats(mspace msp) { mstate ms = (mstate)msp; if (ok_magic(ms)) { internal_malloc_stats(ms); } else { USAGE_ERROR_ACTION(ms,ms); } } size_t mspace_footprint(mspace msp) { size_t result; mstate ms = (mstate)msp; if (ok_magic(ms)) { result = ms->footprint; } USAGE_ERROR_ACTION(ms,ms); return result; } size_t mspace_max_footprint(mspace msp) { size_t result; mstate ms = (mstate)msp; if (ok_magic(ms)) { result = ms->max_footprint; } USAGE_ERROR_ACTION(ms,ms); return result; } #if !NO_MALLINFO struct mallinfo mspace_mallinfo(mspace msp) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); } return internal_mallinfo(ms); } #endif /* NO_MALLINFO */ int mspace_mallopt(int param_number, int value) { return change_mparam(param_number, value); } #endif /* MSPACES */ /* -------------------- Alternative MORECORE functions ------------------- */ /* Guidelines for creating a custom version of MORECORE: * For best performance, MORECORE should allocate in multiples of pagesize. * MORECORE may allocate more memory than requested. (Or even less, but this will usually result in a malloc failure.) * MORECORE must not allocate memory when given argument zero, but instead return one past the end address of memory from previous nonzero call. * For best performance, consecutive calls to MORECORE with positive arguments should return increasing addresses, indicating that space has been contiguously extended. * Even though consecutive calls to MORECORE need not return contiguous addresses, it must be OK for malloc'ed chunks to span multiple regions in those cases where they do happen to be contiguous. * MORECORE need not handle negative arguments -- it may instead just return MFAIL when given negative arguments. Negative arguments are always multiples of pagesize. MORECORE must not misinterpret negative args as large positive unsigned args. You can suppress all such calls from even occurring by defining MORECORE_CANNOT_TRIM, As an example alternative MORECORE, here is a custom allocator kindly contributed for pre-OSX macOS. It uses virtually but not necessarily physically contiguous non-paged memory (locked in, present and won't get swapped out). You can use it by uncommenting this section, adding some #includes, and setting up the appropriate defines above: #define MORECORE osMoreCore There is also a shutdown routine that should somehow be called for cleanup upon program exit. #define MAX_POOL_ENTRIES 100 #define MINIMUM_MORECORE_SIZE (64 * 1024U) static int next_os_pool; void *our_os_pools[MAX_POOL_ENTRIES]; void *osMoreCore(int size) { void *ptr = 0; static void *sbrk_top = 0; if (size > 0) { if (size < MINIMUM_MORECORE_SIZE) size = MINIMUM_MORECORE_SIZE; if (CurrentExecutionLevel() == kTaskLevel) ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); if (ptr == 0) { return (void *) MFAIL; } // save ptrs so they can be freed during cleanup our_os_pools[next_os_pool] = ptr; next_os_pool++; ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); sbrk_top = (char *) ptr + size; return ptr; } else if (size < 0) { // we don't currently support shrink behavior return (void *) MFAIL; } else { return sbrk_top; } } // cleanup any allocated memory pools // called as last thing before shutting down driver void osCleanupMem(void) { void **ptr; for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) if (*ptr) { PoolDeallocate(*ptr); *ptr = 0; } } */ /* ----------------------------------------------------------------------- History: V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) * Add max_footprint functions * Ensure all appropriate literals are size_t * Fix conditional compilation problem for some #define settings * Avoid concatenating segments with the one provided in create_mspace_with_base * Rename some variables to avoid compiler shadowing warnings * Use explicit lock initialization. * Better handling of sbrk interference. * Simplify and fix segment insertion, trimming and mspace_destroy * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x * Thanks especially to Dennis Flanagan for help on these. V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) * Fix memalign brace error. V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) * Fix improper #endif nesting in C++ * Add explicit casts needed for C++ V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) * Use trees for large bins * Support mspaces * Use segments to unify sbrk-based and mmap-based system allocation, removing need for emulation on most platforms without sbrk. * Default safety checks * Optional footer checks. Thanks to William Robertson for the idea. * Internal code refactoring * Incorporate suggestions and platform-specific changes. Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, Aaron Bachmann, Emery Berger, and others. * Speed up non-fastbin processing enough to remove fastbins. * Remove useless cfree() to avoid conflicts with other apps. * Remove internal memcpy, memset. Compilers handle builtins better. * Remove some options that no one ever used and rename others. V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) * Fix malloc_state bitmap array misdeclaration V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) * Allow tuning of FIRST_SORTED_BIN_SIZE * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. * Better detection and support for non-contiguousness of MORECORE. Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger * Bypass most of malloc if no frees. Thanks To Emery Berger. * Fix freeing of old top non-contiguous chunk im sysmalloc. * Raised default trim and map thresholds to 256K. * Fix mmap-related #defines. Thanks to Lubos Lunak. * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. * Branch-free bin calculation * Default trim and mmap thresholds now 256K. V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) * Introduce independent_comalloc and independent_calloc. Thanks to Michael Pachos for motivation and help. * Make optional .h file available * Allow > 2GB requests on 32bit systems. * new WIN32 sbrk, mmap, munmap, lock code from . Thanks also to Andreas Mueller , and Anonymous. * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for helping test this.) * memalign: check alignment arg * realloc: don't try to shift chunks backwards, since this leads to more fragmentation in some programs and doesn't seem to help in any others. * Collect all cases in malloc requiring system memory into sysmalloc * Use mmap as backup to sbrk * Place all internal state in malloc_state * Introduce fastbins (although similar to 2.5.1) * Many minor tunings and cosmetic improvements * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS Thanks to Tony E. Bennett and others. * Include errno.h to support default failure action. V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) * return null for negative arguments * Added Several WIN32 cleanups from Martin C. Fong * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' (e.g. WIN32 platforms) * Cleanup header file inclusion for WIN32 platforms * Cleanup code to avoid Microsoft Visual C++ compiler complaints * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing memory allocation routines * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to usage of 'assert' in non-WIN32 code * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to avoid infinite loop * Always call 'fREe()' rather than 'free()' V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) * Fixed ordering problem with boundary-stamping V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) * Added pvalloc, as recommended by H.J. Liu * Added 64bit pointer support mainly from Wolfram Gloger * Added anonymously donated WIN32 sbrk emulation * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen * malloc_extend_top: fix mask error that caused wastage after foreign sbrks * Add linux mremap support code from HJ Liu V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) * Integrated most documentation with the code. * Add support for mmap, with help from Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Use last_remainder in more cases. * Pack bins using idea from colin@nyx10.cs.du.edu * Use ordered bins instead of best-fit threshold * Eliminate block-local decls to simplify tracing and debugging. * Support another case of realloc via move into top * Fix error occurring when initial sbrk_base not word-aligned. * Rely on page size for units instead of SBRK_UNIT to avoid surprises about sbrk alignment conventions. * Add mallinfo, mallopt. Thanks to Raymond Nijssen (raymond@es.ele.tue.nl) for the suggestion. * Add `pad' argument to malloc_trim and top_pad mallopt parameter. * More precautions for cases where other routines call sbrk, courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Added macros etc., allowing use in linux libc from H.J. Lu (hjl@gnu.ai.mit.edu) * Inverted this history list V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) * Re-tuned and fixed to behave more nicely with V2.6.0 changes. * Removed all preallocation code since under current scheme the work required to undo bad preallocations exceeds the work saved in good cases for most test programs. * No longer use return list or unconsolidated bins since no scheme using them consistently outperforms those that don't given above changes. * Use best fit for very large chunks to prevent some worst-cases. * Added some support for debugging V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) * Removed footers when chunks are in use. Thanks to Paul Wilson (wilson@cs.texas.edu) for the suggestion. V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) * Added malloc_trim, with help from Wolfram Gloger (wmglo@Dent.MED.Uni-Muenchen.DE). V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) * realloc: try to expand in both directions * malloc: swap order of clean-bin strategy; * realloc: only conditionally expand backwards * Try not to scavenge used bins * Use bin counts as a guide to preallocation * Occasionally bin return list chunks in first scan * Add a few optimizations from colin@nyx10.cs.du.edu V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) * faster bin computation & slightly different binning * merged all consolidations to one part of malloc proper (eliminating old malloc_find_space & malloc_clean_bin) * Scan 2 returns chunks (not just 1) * Propagate failure in realloc if malloc returns 0 * Add stuff to allow compilation on non-ANSI compilers from kpv@research.att.com V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) * removed potential for odd address access in prev_chunk * removed dependency on getpagesize.h * misc cosmetics and a bit more internal documentation * anticosmetics: mangled names in macros to evade debugger strangeness * tested on sparc, hp-700, dec-mips, rs6000 with gcc & native cc (hp, dec only) allowing Detlefs & Zorn comparison study (in SIGPLAN Notices.) Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) * Based loosely on libg++-1.2X malloc. (It retains some of the overall structure of old version, but most details differ.) */ polyml-5.7.1/libffi/src/microblaze/0000755000175000017500000000000013204034553016150 5ustar daviddavidpolyml-5.7.1/libffi/src/microblaze/ffitarget.h0000644000175000017500000000344413204034553020301 0ustar daviddavid/* ----------------------------------------------------------------------- ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc Target configuration macros for MicroBlaze. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* Definitions for closures */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #define FFI_TRAMPOLINE_SIZE (4*8) #endif polyml-5.7.1/libffi/src/microblaze/ffi.c0000644000175000017500000002147513204034553017071 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc MicroBlaze Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*, unsigned int, unsigned int, unsigned int*, void (*fn)(void), unsigned int, unsigned int); extern void ffi_closure_SYSV(void); #define WORD_SIZE sizeof(unsigned int) #define ARGS_REGISTER_SIZE (WORD_SIZE * 6) #define WORD_ALIGN(x) ALIGN(x, WORD_SIZE) /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void ffi_prep_args(void* stack, extended_cif* ecif) { unsigned int i; ffi_type** p_arg; void** p_argv; void* stack_args_p = stack; p_argv = ecif->avalue; if (ecif == NULL || ecif->cif == NULL) { return; /* no description to prepare */ } if ((ecif->cif->rtype != NULL) && (ecif->cif->rtype->type == FFI_TYPE_STRUCT)) { /* if return type is a struct which is referenced on the stack/reg5, * by a pointer. Stored the return value pointer in r5. */ char* addr = stack_args_p; memcpy(addr, &(ecif->rvalue), WORD_SIZE); stack_args_p += WORD_SIZE; } if (ecif->avalue == NULL) { return; /* no arguments to prepare */ } for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) { size_t size = (*p_arg)->size; int type = (*p_arg)->type; void* value = p_argv[i]; char* addr = stack_args_p; int aligned_size = WORD_ALIGN(size); /* force word alignment on the stack */ stack_args_p += aligned_size; switch (type) { case FFI_TYPE_UINT8: *(unsigned int *)addr = (unsigned int)*(UINT8*)(value); break; case FFI_TYPE_SINT8: *(signed int *)addr = (signed int)*(SINT8*)(value); break; case FFI_TYPE_UINT16: *(unsigned int *)addr = (unsigned int)*(UINT16*)(value); break; case FFI_TYPE_SINT16: *(signed int *)addr = (signed int)*(SINT16*)(value); break; case FFI_TYPE_STRUCT: #if __BIG_ENDIAN__ /* * MicroBlaze toolchain appears to emit: * bsrli r5, r5, 8 (caller) * ... * * ... * bslli r5, r5, 8 (callee) * * For structs like "struct a { uint8_t a[3]; };", when passed * by value. * * Structs like "struct b { uint16_t a; };" are also expected * to be packed strangely in registers. * * This appears to be because the microblaze toolchain expects * "struct b == uint16_t", which is only any issue for big * endian. * * The following is a work around for big-endian only, for the * above mentioned case, it will re-align the contents of a * <= 3-byte struct value. */ if (size < WORD_SIZE) { memcpy (addr + (WORD_SIZE - size), value, size); break; } #endif case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: default: memcpy(addr, value, aligned_size); } } } ffi_status ffi_prep_cif_machdep(ffi_cif* cif) { /* check ABI */ switch (cif->abi) { case FFI_SYSV: break; default: return FFI_BAD_ABI; } return FFI_OK; } void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else { ecif.rvalue = rvalue; } switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn, cif->rtype->type, cif->rtype->size); break; default: FFI_ASSERT(0); break; } } void ffi_closure_call_SYSV(void* register_args, void* stack_args, ffi_closure* closure, void* rvalue, unsigned int* rtype, unsigned int* rsize) { /* prepare arguments for closure call */ ffi_cif* cif = closure->cif; ffi_type** arg_types = cif->arg_types; /* re-allocate data for the args. This needs to be done in order to keep * multi-word objects (e.g. structs) in contiguous memory. Callers are not * required to store the value of args in the lower 6 words in the stack * (although they are allocated in the stack). */ char* stackclone = alloca(cif->bytes); void** avalue = alloca(cif->nargs * sizeof(void*)); void* struct_rvalue = NULL; char* ptr = stackclone; int i; /* copy registers into stack clone */ int registers_used = cif->bytes; if (registers_used > ARGS_REGISTER_SIZE) { registers_used = ARGS_REGISTER_SIZE; } memcpy(stackclone, register_args, registers_used); /* copy stack allocated args into stack clone */ if (cif->bytes > ARGS_REGISTER_SIZE) { int stack_used = cif->bytes - ARGS_REGISTER_SIZE; memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used); } /* preserve struct type return pointer passing */ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { struct_rvalue = *((void**)ptr); ptr += WORD_SIZE; } /* populate arg pointer list */ for (i = 0; i < cif->nargs; i++) { switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: #ifdef __BIG_ENDIAN__ avalue[i] = ptr + 3; #else avalue[i] = ptr; #endif break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: #ifdef __BIG_ENDIAN__ avalue[i] = ptr + 2; #else avalue[i] = ptr; #endif break; case FFI_TYPE_STRUCT: #if __BIG_ENDIAN__ /* * Work around strange ABI behaviour. * (see info in ffi_prep_args) */ if (arg_types[i]->size < WORD_SIZE) { memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size); } #endif avalue[i] = (void*)ptr; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_DOUBLE: avalue[i] = ptr; break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: default: /* default 4-byte argument */ avalue[i] = ptr; break; } ptr += WORD_ALIGN(arg_types[i]->size); } /* set the return type info passed back to the wrapper */ *rsize = cif->rtype->size; *rtype = cif->rtype->type; if (struct_rvalue != NULL) { closure->fun(cif, struct_rvalue, avalue, closure->user_data); /* copy struct return pointer value into function return value */ *((void**)rvalue) = struct_rvalue; } else { closure->fun(cif, rvalue, avalue, closure->user_data); } } ffi_status ffi_prep_closure_loc( ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void* user_data, void* codeloc) { unsigned long* tramp = (unsigned long*)&(closure->tramp[0]); unsigned long cls = (unsigned long)codeloc; unsigned long fn = 0; unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; switch (cif->abi) { case FFI_SYSV: fn = (unsigned long)ffi_closure_SYSV; /* load r11 (temp) with fn */ /* imm fn(upper) */ tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff); /* addik r11, r0, fn(lower) */ tramp[1] = 0x31600000 | (fn & 0xffff); /* load r12 (temp) with cls */ /* imm cls(upper) */ tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff); /* addik r12, r0, cls(lower) */ tramp[3] = 0x31800000 | (cls & 0xffff); /* load r3 (temp) with ffi_closure_call_SYSV */ /* imm fn_closure_call_sysv(upper) */ tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff); /* addik r3, r0, fn_closure_call_sysv(lower) */ tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff); /* branch/jump to address stored in r11 (fn) */ tramp[6] = 0x98085800; /* bra r11 */ break; default: return FFI_BAD_ABI; } return FFI_OK; } polyml-5.7.1/libffi/src/microblaze/sysv.S0000644000175000017500000002110413204034553017276 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc MicroBlaze Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include /* * arg[0] (r5) = ffi_prep_args, * arg[1] (r6) = &ecif, * arg[2] (r7) = cif->bytes, * arg[3] (r8) = cif->flags, * arg[4] (r9) = ecif.rvalue, * arg[5] (r10) = fn * arg[6] (sp[0]) = cif->rtype->type * arg[7] (sp[4]) = cif->rtype->size */ .text .globl ffi_call_SYSV .type ffi_call_SYSV, @function ffi_call_SYSV: /* push callee saves */ addik r1, r1, -20 swi r19, r1, 0 /* Frame Pointer */ swi r20, r1, 4 /* PIC register */ swi r21, r1, 8 /* PIC register */ swi r22, r1, 12 /* save for locals */ swi r23, r1, 16 /* save for locals */ /* save the r5-r10 registers in the stack */ addik r1, r1, -24 /* increment sp to store 6x 32-bit words */ swi r5, r1, 0 swi r6, r1, 4 swi r7, r1, 8 swi r8, r1, 12 swi r9, r1, 16 swi r10, r1, 20 /* save function pointer */ addik r3, r5, 0 /* copy ffi_prep_args into r3 */ addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */ addik r23, r10, 0 /* save function address into r23 (callee-saved) */ /* prepare stack with allocation for n (bytes = r7) args */ rsub r1, r7, r1 /* subtract bytes from sp */ /* prep args for ffi_prep_args call */ addik r5, r1, 0 /* store stack pointer into arg[0] */ /* r6 still holds ecif for arg[1] */ /* Call ffi_prep_args(stack, &ecif). */ addik r1, r1, -4 swi r15, r1, 0 /* store the link register in the frame */ brald r15, r3 nop /* branch has delay slot */ lwi r15, r1, 0 addik r1, r1, 4 /* restore the link register from the frame */ /* returns calling stack pointer location */ /* prepare args for fn call, prep_args populates them onto the stack */ lwi r5, r1, 0 /* arg[0] */ lwi r6, r1, 4 /* arg[1] */ lwi r7, r1, 8 /* arg[2] */ lwi r8, r1, 12 /* arg[3] */ lwi r9, r1, 16 /* arg[4] */ lwi r10, r1, 20 /* arg[5] */ /* call (fn) (...). */ addik r1, r1, -4 swi r15, r1, 0 /* store the link register in the frame */ brald r15, r23 nop /* branch has delay slot */ lwi r15, r1, 0 addik r1, r1, 4 /* restore the link register from the frame */ /* Remove the space we pushed for the args. */ addik r1, r22, 0 /* restore old SP */ /* restore this functions parameters */ lwi r5, r1, 0 /* arg[0] */ lwi r6, r1, 4 /* arg[1] */ lwi r7, r1, 8 /* arg[2] */ lwi r8, r1, 12 /* arg[3] */ lwi r9, r1, 16 /* arg[4] */ lwi r10, r1, 20 /* arg[5] */ addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */ /* If the return value pointer is NULL, assume no return value. */ beqi r9, ffi_call_SYSV_end lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */ lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7]) */ /* Check if return type is actually a struct, do nothing */ rsubi r11, r22, FFI_TYPE_STRUCT beqi r11, ffi_call_SYSV_end /* Return 8bit */ rsubi r11, r23, 1 beqi r11, ffi_call_SYSV_store8 /* Return 16bit */ rsubi r11, r23, 2 beqi r11, ffi_call_SYSV_store16 /* Return 32bit */ rsubi r11, r23, 4 beqi r11, ffi_call_SYSV_store32 /* Return 64bit */ rsubi r11, r23, 8 beqi r11, ffi_call_SYSV_store64 /* Didn't match anything */ bri ffi_call_SYSV_end ffi_call_SYSV_store64: swi r3, r9, 0 /* store word r3 into return value */ swi r4, r9, 4 /* store word r4 into return value */ bri ffi_call_SYSV_end ffi_call_SYSV_store32: swi r3, r9, 0 /* store word r3 into return value */ bri ffi_call_SYSV_end ffi_call_SYSV_store16: #ifdef __BIG_ENDIAN__ shi r3, r9, 2 /* store half-word r3 into return value */ #else shi r3, r9, 0 /* store half-word r3 into return value */ #endif bri ffi_call_SYSV_end ffi_call_SYSV_store8: #ifdef __BIG_ENDIAN__ sbi r3, r9, 3 /* store byte r3 into return value */ #else sbi r3, r9, 0 /* store byte r3 into return value */ #endif bri ffi_call_SYSV_end ffi_call_SYSV_end: /* callee restores */ lwi r19, r1, 0 /* frame pointer */ lwi r20, r1, 4 /* PIC register */ lwi r21, r1, 8 /* PIC register */ lwi r22, r1, 12 lwi r23, r1, 16 addik r1, r1, 20 /* return from sub-routine (with delay slot) */ rtsd r15, 8 nop .size ffi_call_SYSV, . - ffi_call_SYSV /* ------------------------------------------------------------------------- */ /* * args passed into this function, are passed down to the callee. * this function is the target of the closure trampoline, as such r12 is * a pointer to the closure object. */ .text .globl ffi_closure_SYSV .type ffi_closure_SYSV, @function ffi_closure_SYSV: /* push callee saves */ addik r11, r1, 28 /* save stack args start location (excluding regs/link) */ addik r1, r1, -12 swi r19, r1, 0 /* Frame Pointer */ swi r20, r1, 4 /* PIC register */ swi r21, r1, 8 /* PIC register */ /* store register args on stack */ addik r1, r1, -24 swi r5, r1, 0 swi r6, r1, 4 swi r7, r1, 8 swi r8, r1, 12 swi r9, r1, 16 swi r10, r1, 20 /* setup args */ addik r5, r1, 0 /* register_args */ addik r6, r11, 0 /* stack_args */ addik r7, r12, 0 /* closure object */ addik r1, r1, -8 /* allocate return value */ addik r8, r1, 0 /* void* rvalue */ addik r1, r1, -8 /* allocate for return type/size values */ addik r9, r1, 0 /* void* rtype */ addik r10, r1, 4 /* void* rsize */ /* call the wrap_call function */ addik r1, r1, -28 /* allocate args + link reg */ swi r15, r1, 0 /* store the link register in the frame */ brald r15, r3 nop /* branch has delay slot */ lwi r15, r1, 0 addik r1, r1, 28 /* restore the link register from the frame */ ffi_closure_SYSV_prepare_return: lwi r9, r1, 0 /* rtype */ lwi r10, r1, 4 /* rsize */ addik r1, r1, 8 /* de-allocate return info values */ /* Check if return type is actually a struct, store 4 bytes */ rsubi r11, r9, FFI_TYPE_STRUCT beqi r11, ffi_closure_SYSV_store32 /* Return 8bit */ rsubi r11, r10, 1 beqi r11, ffi_closure_SYSV_store8 /* Return 16bit */ rsubi r11, r10, 2 beqi r11, ffi_closure_SYSV_store16 /* Return 32bit */ rsubi r11, r10, 4 beqi r11, ffi_closure_SYSV_store32 /* Return 64bit */ rsubi r11, r10, 8 beqi r11, ffi_closure_SYSV_store64 /* Didn't match anything */ bri ffi_closure_SYSV_end ffi_closure_SYSV_store64: lwi r3, r1, 0 /* store word r3 into return value */ lwi r4, r1, 4 /* store word r4 into return value */ /* 64 bits == 2 words, no sign extend occurs */ bri ffi_closure_SYSV_end ffi_closure_SYSV_store32: lwi r3, r1, 0 /* store word r3 into return value */ /* 32 bits == 1 word, no sign extend occurs */ bri ffi_closure_SYSV_end ffi_closure_SYSV_store16: #ifdef __BIG_ENDIAN__ lhui r3, r1, 2 /* store half-word r3 into return value */ #else lhui r3, r1, 0 /* store half-word r3 into return value */ #endif rsubi r11, r9, FFI_TYPE_SINT16 bnei r11, ffi_closure_SYSV_end sext16 r3, r3 /* fix sign extend of sint8 */ bri ffi_closure_SYSV_end ffi_closure_SYSV_store8: #ifdef __BIG_ENDIAN__ lbui r3, r1, 3 /* store byte r3 into return value */ #else lbui r3, r1, 0 /* store byte r3 into return value */ #endif rsubi r11, r9, FFI_TYPE_SINT8 bnei r11, ffi_closure_SYSV_end sext8 r3, r3 /* fix sign extend of sint8 */ bri ffi_closure_SYSV_end ffi_closure_SYSV_end: addik r1, r1, 8 /* de-allocate return value */ /* de-allocate stored args */ addik r1, r1, 24 /* callee restores */ lwi r19, r1, 0 /* frame pointer */ lwi r20, r1, 4 /* PIC register */ lwi r21, r1, 8 /* PIC register */ addik r1, r1, 12 /* return from sub-routine (with delay slot) */ rtsd r15, 8 nop .size ffi_closure_SYSV, . - ffi_closure_SYSV polyml-5.7.1/libffi/src/xtensa/0000755000175000017500000000000013204034553015323 5ustar daviddavidpolyml-5.7.1/libffi/src/xtensa/ffitarget.h0000644000175000017500000000354613204034553017457 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2013 Tensilica, Inc. Target configuration macros for XTENSA. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #define FFI_REGISTER_NARGS 6 /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #define FFI_TRAMPOLINE_SIZE 24 #endif polyml-5.7.1/libffi/src/xtensa/ffi.c0000644000175000017500000002113113204034553016231 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2013 Tensilica, Inc. XTENSA Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include /* |----------------------------------------| | | on entry to ffi_call ----> |----------------------------------------| | caller stack frame for registers a0-a3 | |----------------------------------------| | | | additional arguments | entry of the function ---> |----------------------------------------| | copy of function arguments a2-a7 | | - - - - - - - - - - - - - | | | The area below the entry line becomes the new stack frame for the function. */ #define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags, void(*fn)(void), unsigned nbytes, extended_cif*); extern void ffi_closure_SYSV(void) FFI_HIDDEN; ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { switch(cif->rtype->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: cif->flags = cif->rtype->type; break; case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: cif->flags = FFI_TYPE_UINT32; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: cif->flags = FFI_TYPE_UINT64; // cif->rtype->type; break; case FFI_TYPE_STRUCT: cif->flags = FFI_TYPE_STRUCT; //_REGS; /* Up to 16 bytes are returned in registers */ if (cif->rtype->size > 4 * 4) { /* returned structure is referenced by a register; use 8 bytes (including 4 bytes for potential additional alignment) */ cif->flags = FFI_TYPE_STRUCT; cif->bytes += 8; } break; default: cif->flags = FFI_TYPE_UINT32; break; } /* Round the stack up to a full 4 register frame, just in case (we use this size in movsp). This way, it's also a multiple of 8 bytes for 64-bit arguments. */ cif->bytes = ALIGN(cif->bytes, 16); return FFI_OK; } void ffi_prep_args(extended_cif *ecif, unsigned char* stack) { unsigned int i; unsigned long *addr; ffi_type **ptr; union { void **v; char **c; signed char **sc; unsigned char **uc; signed short **ss; unsigned short **us; unsigned int **i; long long **ll; float **f; double **d; } p_argv; /* Verify that everything is aligned up properly */ FFI_ASSERT (((unsigned long) stack & 0x7) == 0); p_argv.v = ecif->avalue; addr = (unsigned long*)stack; /* structures with a size greater than 16 bytes are passed in memory */ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16) { *addr++ = (unsigned long)ecif->rvalue; } for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types; i > 0; i--, ptr++, p_argv.v++) { switch ((*ptr)->type) { case FFI_TYPE_SINT8: *addr++ = **p_argv.sc; break; case FFI_TYPE_UINT8: *addr++ = **p_argv.uc; break; case FFI_TYPE_SINT16: *addr++ = **p_argv.ss; break; case FFI_TYPE_UINT16: *addr++ = **p_argv.us; break; case FFI_TYPE_FLOAT: case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: *addr++ = **p_argv.i; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: if (((unsigned long)addr & 4) != 0) addr++; *(unsigned long long*)addr = **p_argv.ll; addr += sizeof(unsigned long long) / sizeof (addr); break; case FFI_TYPE_STRUCT: { unsigned long offs; unsigned long size; if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4) addr++; offs = (unsigned long) addr - (unsigned long) stack; size = (*ptr)->size; /* Entire structure must fit the argument registers or referenced */ if (offs < FFI_REGISTER_NARGS * 4 && offs + size > FFI_REGISTER_NARGS * 4) addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4); memcpy((char*) addr, *p_argv.c, size); addr += (size + 3) / 4; break; } default: FFI_ASSERT(0); } } } void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; unsigned long rsize = cif->rtype->size; int flags = cif->flags; void *alloc = NULL; ecif.cif = cif; ecif.avalue = avalue; /* Note that for structures that are returned in registers (size <= 16 bytes) we allocate a temporary buffer and use memcpy to copy it to the final destination. The reason is that the target address might be misaligned or the length not a multiple of 4 bytes. Handling all those cases would be very complex. */ if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL)) { alloc = alloca(ALIGN(rsize, 4)); ecif.rvalue = alloc; } else { ecif.rvalue = rvalue; } if (cif->abi != FFI_SYSV) FFI_ASSERT(0); ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif); if (alloc != NULL && rvalue != NULL) memcpy(rvalue, alloc, rsize); } extern void ffi_trampoline(); extern void ffi_cacheflush(void* start, void* end); ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */ memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE); *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV; // Do we have this function? // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE) ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE); closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } long FFI_HIDDEN ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue) { ffi_cif *cif; ffi_type **arg_types; void **avalue; int i, areg; cif = closure->cif; if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; areg = 0; int rtype = cif->rtype->type; if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4) { rvalue = *values; areg++; } cif = closure->cif; arg_types = cif->arg_types; avalue = alloca(cif->nargs * sizeof(void *)); for (i = 0; i < cif->nargs; i++) { if (arg_types[i]->alignment == 8 && (areg & 1) != 0) areg++; // skip the entry 16,a1 framework, add 16 bytes (4 registers) if (areg == FFI_REGISTER_NARGS) areg += 4; if (arg_types[i]->type == FFI_TYPE_STRUCT) { int numregs = ((arg_types[i]->size + 3) & ~3) / 4; if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS) areg = FFI_REGISTER_NARGS + 4; } avalue[i] = &values[areg]; areg += (arg_types[i]->size + 3) / 4; } (closure->fun)(cif, rvalue, avalue, closure->user_data); return rtype; } polyml-5.7.1/libffi/src/xtensa/sysv.S0000644000175000017500000001275213204034553016462 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2013 Tensilica, Inc. XTENSA Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #define ENTRY(name) .text; .globl name; .type name,@function; .align 4; name: #define END(name) .size name , . - name /* Assert that the table below is in sync with ffi.h. */ #if FFI_TYPE_UINT8 != 5 \ || FFI_TYPE_SINT8 != 6 \ || FFI_TYPE_UINT16 != 7 \ || FFI_TYPE_SINT16 != 8 \ || FFI_TYPE_UINT32 != 9 \ || FFI_TYPE_SINT32 != 10 \ || FFI_TYPE_UINT64 != 11 #error "xtensa/sysv.S out of sync with ffi.h" #endif /* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif) void *rvalue; a2 unsigned long rbytes; a3 unsigned flags; a4 void (*fnaddr)(); a5 unsigned long bytes; a6 extended_cif* ecif) a7 */ ENTRY(ffi_call_SYSV) entry a1, 32 # 32 byte frame for using call8 below mov a10, a7 # a10(->arg0): ecif sub a11, a1, a6 # a11(->arg1): stack pointer mov a7, a1 # fp movsp a1, a11 # set new sp = old_sp - bytes movi a8, ffi_prep_args callx8 a8 # ffi_prep_args(ecif, stack) # prepare to move stack pointer back up to 6 arguments # note that 'bytes' is already aligned movi a10, 6*4 sub a11, a6, a10 movgez a6, a10, a11 add a6, a1, a6 # we can pass up to 6 arguments in registers # for simplicity, just load 6 arguments # (the stack size is at least 32 bytes, so no risk to cross boundaries) l32i a10, a1, 0 l32i a11, a1, 4 l32i a12, a1, 8 l32i a13, a1, 12 l32i a14, a1, 16 l32i a15, a1, 20 # move stack pointer movsp a1, a6 callx8 a5 # (*fn)(args...) # Handle return value(s) beqz a2, .Lexit movi a5, FFI_TYPE_STRUCT bne a4, a5, .Lstore movi a5, 16 blt a5, a3, .Lexit s32i a10, a2, 0 blti a3, 5, .Lexit addi a3, a3, -1 s32i a11, a2, 4 blti a3, 8, .Lexit s32i a12, a2, 8 blti a3, 12, .Lexit s32i a13, a2, 12 .Lexit: retw .Lstore: addi a4, a4, -FFI_TYPE_UINT8 bgei a4, 7, .Lexit # should never happen movi a6, store_calls add a4, a4, a4 addx4 a6, a4, a6 # store_table + idx * 8 jx a6 .align 8 store_calls: # UINT8 s8i a10, a2, 0 retw # SINT8 .align 8 s8i a10, a2, 0 retw # UINT16 .align 8 s16i a10, a2, 0 retw # SINT16 .align 8 s16i a10, a2, 0 retw # UINT32 .align 8 s32i a10, a2, 0 retw # SINT32 .align 8 s32i a10, a2, 0 retw # UINT64 .align 8 s32i a10, a2, 0 s32i a11, a2, 4 retw END(ffi_call_SYSV) /* * void ffi_cacheflush (unsigned long start, unsigned long end) */ #define EXTRA_ARGS_SIZE 24 ENTRY(ffi_cacheflush) entry a1, 16 1: dhwbi a2, 0 ihi a2, 0 addi a2, a2, 4 blt a2, a3, 1b retw END(ffi_cacheflush) /* ffi_trampoline is copied to the stack */ ENTRY(ffi_trampoline) entry a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4) # [ 0] j 2f # [ 3] .align 4 # [ 6] 1: .long 0 # [ 8] 2: l32r a15, 1b # [12] _mov a14, a0 # [15] callx0 a15 # [18] # [21] END(ffi_trampoline) /* * ffi_closure() * * a0: closure + 21 * a14: return address (a0) */ ENTRY(ffi_closure_SYSV) /* intentionally omitting entry here */ # restore return address (a0) and move pointer to closure to a10 addi a10, a0, -21 mov a0, a14 # allow up to 4 arguments as return values addi a11, a1, 4 * 4 # save up to 6 arguments to stack (allocated by entry below) s32i a2, a11, 0 s32i a3, a11, 4 s32i a4, a11, 8 s32i a5, a11, 12 s32i a6, a11, 16 s32i a7, a11, 20 movi a8, ffi_closure_SYSV_inner mov a12, a1 callx8 a8 # .._inner(*closure, **avalue, *rvalue) # load up to four return arguments l32i a2, a1, 0 l32i a3, a1, 4 l32i a4, a1, 8 l32i a5, a1, 12 # (sign-)extend return value movi a11, FFI_TYPE_UINT8 bne a10, a11, 1f extui a2, a2, 0, 8 retw 1: movi a11, FFI_TYPE_SINT8 bne a10, a11, 1f sext a2, a2, 7 retw 1: movi a11, FFI_TYPE_UINT16 bne a10, a11, 1f extui a2, a2, 0, 16 retw 1: movi a11, FFI_TYPE_SINT16 bne a10, a11, 1f sext a2, a2, 15 1: retw END(ffi_closure_SYSV) polyml-5.7.1/libffi/src/prep_cif.c0000644000175000017500000001666513204034553015772 0ustar daviddavid/* ----------------------------------------------------------------------- prep_cif.c - Copyright (c) 2011, 2012 Anthony Green Copyright (c) 1996, 1998, 2007 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* Round up to FFI_SIZEOF_ARG. */ #define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG) /* Perform machine independent initialization of aggregate type specifications. */ static ffi_status initialize_aggregate(ffi_type *arg) { ffi_type **ptr; if (UNLIKELY(arg == NULL || arg->elements == NULL)) return FFI_BAD_TYPEDEF; arg->size = 0; arg->alignment = 0; ptr = &(arg->elements[0]); if (UNLIKELY(ptr == 0)) return FFI_BAD_TYPEDEF; while ((*ptr) != NULL) { if (UNLIKELY(((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK))) return FFI_BAD_TYPEDEF; /* Perform a sanity check on the argument type */ FFI_ASSERT_VALID_TYPE(*ptr); arg->size = ALIGN(arg->size, (*ptr)->alignment); arg->size += (*ptr)->size; arg->alignment = (arg->alignment > (*ptr)->alignment) ? arg->alignment : (*ptr)->alignment; ptr++; } /* Structure size includes tail padding. This is important for structures that fit in one register on ABIs like the PowerPC64 Linux ABI that right justify small structs in a register. It's also needed for nested structure layout, for example struct A { long a; char b; }; struct B { struct A x; char y; }; should find y at an offset of 2*sizeof(long) and result in a total size of 3*sizeof(long). */ arg->size = ALIGN (arg->size, arg->alignment); /* On some targets, the ABI defines that structures have an additional alignment beyond the "natural" one based on their elements. */ #ifdef FFI_AGGREGATE_ALIGNMENT if (FFI_AGGREGATE_ALIGNMENT > arg->alignment) arg->alignment = FFI_AGGREGATE_ALIGNMENT; #endif if (arg->size == 0) return FFI_BAD_TYPEDEF; else return FFI_OK; } #ifndef __CRIS__ /* The CRIS ABI specifies structure elements to have byte alignment only, so it completely overrides this functions, which assumes "natural" alignment and padding. */ /* Perform machine independent ffi_cif preparation, then call machine dependent routine. */ /* For non variadic functions isvariadic should be 0 and nfixedargs==ntotalargs. For variadic calls, isvariadic should be 1 and nfixedargs and ntotalargs set as appropriate. nfixedargs must always be >=1 */ ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, unsigned int isvariadic, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes) { unsigned bytes = 0; unsigned int i; ffi_type **ptr; FFI_ASSERT(cif != NULL); FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); FFI_ASSERT(nfixedargs <= ntotalargs); if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) return FFI_BAD_ABI; cif->abi = abi; cif->arg_types = atypes; cif->nargs = ntotalargs; cif->rtype = rtype; cif->flags = 0; #if HAVE_LONG_DOUBLE_VARIANT ffi_prep_types (abi); #endif /* Initialize the return type if necessary */ if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK)) return FFI_BAD_TYPEDEF; #ifndef FFI_TARGET_HAS_COMPLEX_TYPE if (rtype->type == FFI_TYPE_COMPLEX) abort(); #endif /* Perform a sanity check on the return type */ FFI_ASSERT_VALID_TYPE(cif->rtype); /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */ #if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION /* Make space for the return structure pointer */ if (cif->rtype->type == FFI_TYPE_STRUCT #ifdef SPARC && (cif->abi != FFI_V9 || cif->rtype->size > 32) #endif #ifdef TILE && (cif->rtype->size > 10 * FFI_SIZEOF_ARG) #endif #ifdef XTENSA && (cif->rtype->size > 16) #endif #ifdef NIOS2 && (cif->rtype->size > 8) #endif ) bytes = STACK_ARG_SIZE(sizeof(void*)); #endif for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { /* Initialize any uninitialized aggregate type definitions */ if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK)) return FFI_BAD_TYPEDEF; #ifndef FFI_TARGET_HAS_COMPLEX_TYPE if ((*ptr)->type == FFI_TYPE_COMPLEX) abort(); #endif /* Perform a sanity check on the argument type, do this check after the initialization. */ FFI_ASSERT_VALID_TYPE(*ptr); #if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION #ifdef SPARC if (((*ptr)->type == FFI_TYPE_STRUCT && ((*ptr)->size > 16 || cif->abi != FFI_V9)) || ((*ptr)->type == FFI_TYPE_LONGDOUBLE && cif->abi != FFI_V9)) bytes += sizeof(void*); else #endif { /* Add any padding if necessary */ if (((*ptr)->alignment - 1) & bytes) bytes = (unsigned)ALIGN(bytes, (*ptr)->alignment); #ifdef TILE if (bytes < 10 * FFI_SIZEOF_ARG && bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG) { /* An argument is never split between the 10 parameter registers and the stack. */ bytes = 10 * FFI_SIZEOF_ARG; } #endif #ifdef XTENSA if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4) bytes = 6*4; #endif bytes += STACK_ARG_SIZE((*ptr)->size); } #endif } cif->bytes = bytes; /* Perform machine dependent cif processing */ #ifdef FFI_TARGET_SPECIFIC_VARIADIC if (isvariadic) return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs); #endif return ffi_prep_cif_machdep(cif); } #endif /* not __CRIS__ */ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes) { return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes); } ffi_status ffi_prep_cif_var(ffi_cif *cif, ffi_abi abi, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes) { return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes); } #if FFI_CLOSURES ffi_status ffi_prep_closure (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data) { return ffi_prep_closure_loc (closure, cif, fun, user_data, closure); } #endif polyml-5.7.1/libffi/src/arc/0000755000175000017500000000000013204034553014566 5ustar daviddavidpolyml-5.7.1/libffi/src/arc/ffitarget.h0000644000175000017500000000360713204034553016720 0ustar daviddavid/* ----------------------------------------------------------------------- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) Target configuration macros for ARC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_ARCOMPACT, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_ARCOMPACT } ffi_abi; #endif #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 12 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/arc/arcompact.S0000644000175000017500000001057513204034553016673 0ustar daviddavid/* ----------------------------------------------------------------------- arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com) ARCompact Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else #define CNAME(x) x #define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x): #endif .text /* R0: ffi_prep_args */ /* R1: &ecif */ /* R2: cif->bytes */ /* R3: fig->flags */ /* R4: ecif.rvalue */ /* R5: fn */ ENTRY(ffi_call_ARCompact) /* Save registers. */ st.a fp, [sp, -4] /* fp + 20, fp */ push_s blink /* fp + 16, blink */ st.a r4, [sp, -4] /* fp + 12, ecif.rvalue */ push_s r3 /* fp + 8, fig->flags */ st.a r5, [sp, -4] /* fp + 4, fn */ push_s r2 /* fp + 0, cif->bytes */ mov fp, sp /* Make room for all of the new args. */ sub sp, sp, r2 /* Place all of the ffi_prep_args in position. */ /* ffi_prep_args(char *stack, extended_cif *ecif) */ /* R1 already set. */ /* And call. */ jl_s.d [r0] mov_s r0, sp ld.ab r12, [fp, 4] /* cif->bytes */ ld.ab r11, [fp, 4] /* fn */ /* Move first 8 parameters in registers... */ ld_s r0, [sp] ld_s r1, [sp, 4] ld_s r2, [sp, 8] ld_s r3, [sp, 12] ld r4, [sp, 16] ld r5, [sp, 20] ld r6, [sp, 24] ld r7, [sp, 28] /* ...and adjust the stack. */ min r12, r12, 32 /* Call the function. */ jl.d [r11] add sp, sp, r12 mov sp, fp pop_s r3 /* fig->flags, return type */ pop_s r2 /* ecif.rvalue, pointer for return value */ /* If the return value pointer is NULL, assume no return value. */ breq.d r2, 0, epilogue pop_s blink /* Return INT. */ brne r3, FFI_TYPE_INT, return_double b.d epilogue st_s r0, [r2] return_double: brne r3, FFI_TYPE_DOUBLE, epilogue st_s r0, [r2] st_s r1, [r2,4] epilogue: j_s.d [blink] ld.ab fp, [sp, 4] ENTRY(ffi_closure_ARCompact) st.a r0, [sp, -32] st_s r1, [sp, 4] st_s r2, [sp, 8] st_s r3, [sp, 12] st r4, [sp, 16] st r5, [sp, 20] st r6, [sp, 24] st r7, [sp, 28] /* pointer to arguments */ mov_s r2, sp /* return value goes here */ sub sp, sp, 8 mov_s r1, sp push_s blink bl.d ffi_closure_inner_ARCompact mov_s r0, r8 /* codeloc, set by trampoline */ pop_s blink /* set return value to r1:r0 */ pop_s r0 pop_s r1 j_s.d [blink] add_s sp, sp, 32 polyml-5.7.1/libffi/src/arc/ffi.c0000644000175000017500000001461213204034553015502 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) ARC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #include /* for little endian ARC, the code is in fact stored as mixed endian for performance reasons */ #if __BIG_ENDIAN__ #define CODE_ENDIAN(x) (x) #else #define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16)) #endif /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ void ffi_prep_args (char *stack, extended_cif * ecif) { unsigned int i; int tmp; void **p_argv; char *argp; ffi_type **p_arg; tmp = 0; argp = stack; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) { *(void **) argp = ecif->rvalue; argp += 4; } p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++) { size_t z; int alignment; /* align alignment to 4 */ alignment = (((*p_arg)->alignment - 1) | 3) + 1; /* Align if necessary. */ if ((alignment - 1) & (unsigned) argp) argp = (char *) ALIGN (argp, alignment); z = (*p_arg)->size; if (z < sizeof (int)) { z = sizeof (int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv); break; case FFI_TYPE_STRUCT: memcpy (argp, *p_argv, (*p_arg)->size); break; default: FFI_ASSERT (0); } } else if (z == sizeof (int)) { *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); } else { if ((*p_arg)->type == FFI_TYPE_STRUCT) { memcpy (argp, *p_argv, z); } else { /* Double or long long 64bit. */ memcpy (argp, *p_argv, z); } } p_argv++; argp += z; } return; } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep (ffi_cif * cif) { /* Set the return type flag. */ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_STRUCT: cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: cif->flags = FFI_TYPE_DOUBLE; break; case FFI_TYPE_FLOAT: default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } extern void ffi_call_ARCompact (void (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn) (void)); void ffi_call (ffi_cif * cif, void (*fn) (void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca (cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_ARCOMPACT: ffi_call_ARCompact (ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } int ffi_closure_inner_ARCompact (ffi_closure * closure, void *rvalue, ffi_arg * args) { void **arg_area, **p_argv; ffi_cif *cif = closure->cif; char *argp = (char *) args; ffi_type **p_argt; int i; arg_area = (void **) alloca (cif->nargs * sizeof (void *)); /* handle hidden argument */ if (cif->flags == FFI_TYPE_STRUCT) { rvalue = *(void **) argp; argp += 4; } p_argv = arg_area; for (i = 0, p_argt = cif->arg_types; i < cif->nargs; i++, p_argt++, p_argv++) { size_t z; int alignment; /* align alignment to 4 */ alignment = (((*p_argt)->alignment - 1) | 3) + 1; /* Align if necessary. */ if ((alignment - 1) & (unsigned) argp) argp = (char *) ALIGN (argp, alignment); z = (*p_argt)->size; *p_argv = (void *) argp; argp += z; } (closure->fun) (cif, rvalue, arg_area, closure->user_data); return cif->flags; } extern void ffi_closure_ARCompact (void); ffi_status ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, void (*fun) (ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); switch (cif->abi) { case FFI_ARCOMPACT: FFI_ASSERT (tramp == codeloc); tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ tramp[2] = CODE_ENDIAN (ffi_closure_ARCompact); break; default: return FFI_BAD_ABI; } closure->cif = cif; closure->fun = fun; closure->user_data = user_data; cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE); return FFI_OK; } polyml-5.7.1/libffi/src/ia64/0000755000175000017500000000000013204034553014564 5ustar daviddavidpolyml-5.7.1/libffi/src/ia64/ffitarget.h0000644000175000017500000000406013204034553016710 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for IA-64. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long long ffi_arg; typedef signed long long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_UNIX, /* Linux and all Unix variants use the same conventions */ FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_UNIX } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 24 /* Really the following struct, which */ /* can be interpreted as a C function */ /* descriptor: */ #endif polyml-5.7.1/libffi/src/ia64/ffi.c0000644000175000017500000003614213204034553015502 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company Copyright (c) 2011 Anthony Green IA64 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #include #include "ia64_flags.h" /* A 64-bit pointer value. In LP64 mode, this is effectively a plain pointer. In ILP32 mode, it's a pointer that's been extended to 64 bits by "addp4". */ typedef void *PTR64 __attribute__((mode(DI))); /* Memory image of fp register contents. This is the implementation specific format used by ldf.fill/stf.spill. All we care about is that it wants a 16 byte aligned slot. */ typedef struct { UINT64 x[2] __attribute__((aligned(16))); } fpreg; /* The stack layout given to ffi_call_unix and ffi_closure_unix_inner. */ struct ia64_args { fpreg fp_regs[8]; /* Contents of 8 fp arg registers. */ UINT64 gp_regs[8]; /* Contents of 8 gp arg registers. */ UINT64 other_args[]; /* Arguments passed on stack, variable size. */ }; /* Adjust ADDR, a pointer to an 8 byte slot, to point to the low LEN bytes. */ static inline void * endian_adjust (void *addr, size_t len) { #ifdef __BIG_ENDIAN__ return addr + (8 - len); #else return addr; #endif } /* Store VALUE to ADDR in the current cpu implementation's fp spill format. This is a macro instead of a function, so that it works for all 3 floating point types without type conversions. Type conversion to long double breaks the denorm support. */ #define stf_spill(addr, value) \ asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); /* Load a value from ADDR, which is in the current cpu implementation's fp spill format. As above, this must also be a macro. */ #define ldf_fill(result, addr) \ asm ("ldf.fill %0 = %1%P1" : "=f"(result) : "m"(*addr)); /* Return the size of the C type associated with with TYPE. Which will be one of the FFI_IA64_TYPE_HFA_* values. */ static size_t hfa_type_size (int type) { switch (type) { case FFI_IA64_TYPE_HFA_FLOAT: return sizeof(float); case FFI_IA64_TYPE_HFA_DOUBLE: return sizeof(double); case FFI_IA64_TYPE_HFA_LDOUBLE: return sizeof(__float80); default: abort (); } } /* Load from ADDR a value indicated by TYPE. Which will be one of the FFI_IA64_TYPE_HFA_* values. */ static void hfa_type_load (fpreg *fpaddr, int type, void *addr) { switch (type) { case FFI_IA64_TYPE_HFA_FLOAT: stf_spill (fpaddr, *(float *) addr); return; case FFI_IA64_TYPE_HFA_DOUBLE: stf_spill (fpaddr, *(double *) addr); return; case FFI_IA64_TYPE_HFA_LDOUBLE: stf_spill (fpaddr, *(__float80 *) addr); return; default: abort (); } } /* Load VALUE into ADDR as indicated by TYPE. Which will be one of the FFI_IA64_TYPE_HFA_* values. */ static void hfa_type_store (int type, void *addr, fpreg *fpaddr) { switch (type) { case FFI_IA64_TYPE_HFA_FLOAT: { float result; ldf_fill (result, fpaddr); *(float *) addr = result; break; } case FFI_IA64_TYPE_HFA_DOUBLE: { double result; ldf_fill (result, fpaddr); *(double *) addr = result; break; } case FFI_IA64_TYPE_HFA_LDOUBLE: { __float80 result; ldf_fill (result, fpaddr); *(__float80 *) addr = result; break; } default: abort (); } } /* Is TYPE a struct containing floats, doubles, or extended doubles, all of the same fp type? If so, return the element type. Return FFI_TYPE_VOID if not. */ static int hfa_element_type (ffi_type *type, int nested) { int element = FFI_TYPE_VOID; switch (type->type) { case FFI_TYPE_FLOAT: /* We want to return VOID for raw floating-point types, but the synthetic HFA type if we're nested within an aggregate. */ if (nested) element = FFI_IA64_TYPE_HFA_FLOAT; break; case FFI_TYPE_DOUBLE: /* Similarly. */ if (nested) element = FFI_IA64_TYPE_HFA_DOUBLE; break; case FFI_TYPE_LONGDOUBLE: /* Similarly, except that that HFA is true for double extended, but not quad precision. Both have sizeof == 16, so tell the difference based on the precision. */ if (LDBL_MANT_DIG == 64 && nested) element = FFI_IA64_TYPE_HFA_LDOUBLE; break; case FFI_TYPE_STRUCT: { ffi_type **ptr = &type->elements[0]; for (ptr = &type->elements[0]; *ptr ; ptr++) { int sub_element = hfa_element_type (*ptr, 1); if (sub_element == FFI_TYPE_VOID) return FFI_TYPE_VOID; if (element == FFI_TYPE_VOID) element = sub_element; else if (element != sub_element) return FFI_TYPE_VOID; } } break; default: return FFI_TYPE_VOID; } return element; } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { int flags; /* Adjust cif->bytes to include space for the bits of the ia64_args frame that precedes the integer register portion. The estimate that the generic bits did for the argument space required is good enough for the integer component. */ cif->bytes += offsetof(struct ia64_args, gp_regs[0]); if (cif->bytes < sizeof(struct ia64_args)) cif->bytes = sizeof(struct ia64_args); /* Set the return type flag. */ flags = cif->rtype->type; switch (cif->rtype->type) { case FFI_TYPE_LONGDOUBLE: /* Leave FFI_TYPE_LONGDOUBLE as meaning double extended precision, and encode quad precision as a two-word integer structure. */ if (LDBL_MANT_DIG != 64) flags = FFI_IA64_TYPE_SMALL_STRUCT | (16 << 8); break; case FFI_TYPE_STRUCT: { size_t size = cif->rtype->size; int hfa_type = hfa_element_type (cif->rtype, 0); if (hfa_type != FFI_TYPE_VOID) { size_t nelts = size / hfa_type_size (hfa_type); if (nelts <= 8) flags = hfa_type | (size << 8); } else { if (size <= 32) flags = FFI_IA64_TYPE_SMALL_STRUCT | (size << 8); } } break; default: break; } cif->flags = flags; return FFI_OK; } extern int ffi_call_unix (struct ia64_args *, PTR64, void (*)(void), UINT64); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { struct ia64_args *stack; long i, avn, gpcount, fpcount; ffi_type **p_arg; FFI_ASSERT (cif->abi == FFI_UNIX); /* If we have no spot for a return value, make one. */ if (rvalue == NULL && cif->rtype->type != FFI_TYPE_VOID) rvalue = alloca (cif->rtype->size); /* Allocate the stack frame. */ stack = alloca (cif->bytes); gpcount = fpcount = 0; avn = cif->nargs; for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: stack->gp_regs[gpcount++] = *(SINT8 *)avalue[i]; break; case FFI_TYPE_UINT8: stack->gp_regs[gpcount++] = *(UINT8 *)avalue[i]; break; case FFI_TYPE_SINT16: stack->gp_regs[gpcount++] = *(SINT16 *)avalue[i]; break; case FFI_TYPE_UINT16: stack->gp_regs[gpcount++] = *(UINT16 *)avalue[i]; break; case FFI_TYPE_SINT32: stack->gp_regs[gpcount++] = *(SINT32 *)avalue[i]; break; case FFI_TYPE_UINT32: stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i]; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i]; break; case FFI_TYPE_POINTER: stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i]; break; case FFI_TYPE_FLOAT: if (gpcount < 8 && fpcount < 8) stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]); { UINT32 tmp; memcpy (&tmp, avalue[i], sizeof (UINT32)); stack->gp_regs[gpcount++] = tmp; } break; case FFI_TYPE_DOUBLE: if (gpcount < 8 && fpcount < 8) stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]); memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64)); break; case FFI_TYPE_LONGDOUBLE: if (gpcount & 1) gpcount++; if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]); memcpy (&stack->gp_regs[gpcount], avalue[i], 16); gpcount += 2; break; case FFI_TYPE_STRUCT: { size_t size = (*p_arg)->size; size_t align = (*p_arg)->alignment; int hfa_type = hfa_element_type (*p_arg, 0); FFI_ASSERT (align <= 16); if (align == 16 && (gpcount & 1)) gpcount++; if (hfa_type != FFI_TYPE_VOID) { size_t hfa_size = hfa_type_size (hfa_type); size_t offset = 0; size_t gp_offset = gpcount * 8; while (fpcount < 8 && offset < size && gp_offset < 8 * 8) { hfa_type_load (&stack->fp_regs[fpcount], hfa_type, avalue[i] + offset); offset += hfa_size; gp_offset += hfa_size; fpcount += 1; } } memcpy (&stack->gp_regs[gpcount], avalue[i], size); gpcount += (size + 7) / 8; } break; default: abort (); } } ffi_call_unix (stack, rvalue, fn, cif->flags); } /* Closures represent a pair consisting of a function pointer, and some user data. A closure is invoked by reinterpreting the closure as a function pointer, and branching to it. Thus we can make an interpreted function callable as a C function: We turn the interpreter itself, together with a pointer specifying the interpreted procedure, into a closure. For IA64, function pointer are already pairs consisting of a code pointer, and a gp pointer. The latter is needed to access global variables. Here we set up such a pair as the first two words of the closure (in the "trampoline" area), but we replace the gp pointer with a pointer to the closure itself. We also add the real gp pointer to the closure. This allows the function entry code to both retrieve the user data, and to restore the correct gp pointer. */ extern void ffi_closure_unix (); ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { /* The layout of a function descriptor. A C function pointer really points to one of these. */ struct ia64_fd { UINT64 code_pointer; UINT64 gp; }; struct ffi_ia64_trampoline_struct { UINT64 code_pointer; /* Pointer to ffi_closure_unix. */ UINT64 fake_gp; /* Pointer to closure, installed as gp. */ UINT64 real_gp; /* Real gp value. */ }; struct ffi_ia64_trampoline_struct *tramp; struct ia64_fd *fd; if (cif->abi != FFI_UNIX) return FFI_BAD_ABI; tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp; fd = (struct ia64_fd *)(void *)ffi_closure_unix; tramp->code_pointer = fd->code_pointer; tramp->real_gp = fd->gp; tramp->fake_gp = (UINT64)(PTR64)codeloc; closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } UINT64 ffi_closure_unix_inner (ffi_closure *closure, struct ia64_args *stack, void *rvalue, void *r8) { ffi_cif *cif; void **avalue; ffi_type **p_arg; long i, avn, gpcount, fpcount; cif = closure->cif; avn = cif->nargs; avalue = alloca (avn * sizeof (void *)); /* If the structure return value is passed in memory get that location from r8 so as to pass the value directly back to the caller. */ if (cif->flags == FFI_TYPE_STRUCT) rvalue = r8; gpcount = fpcount = 0; for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 1); break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 2); break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 4); break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: avalue[i] = &stack->gp_regs[gpcount++]; break; case FFI_TYPE_POINTER: avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], sizeof(void*)); break; case FFI_TYPE_FLOAT: if (gpcount < 8 && fpcount < 8) { fpreg *addr = &stack->fp_regs[fpcount++]; float result; avalue[i] = addr; ldf_fill (result, addr); *(float *)addr = result; } else avalue[i] = endian_adjust(&stack->gp_regs[gpcount], 4); gpcount++; break; case FFI_TYPE_DOUBLE: if (gpcount < 8 && fpcount < 8) { fpreg *addr = &stack->fp_regs[fpcount++]; double result; avalue[i] = addr; ldf_fill (result, addr); *(double *)addr = result; } else avalue[i] = &stack->gp_regs[gpcount]; gpcount++; break; case FFI_TYPE_LONGDOUBLE: if (gpcount & 1) gpcount++; if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) { fpreg *addr = &stack->fp_regs[fpcount++]; __float80 result; avalue[i] = addr; ldf_fill (result, addr); *(__float80 *)addr = result; } else avalue[i] = &stack->gp_regs[gpcount]; gpcount += 2; break; case FFI_TYPE_STRUCT: { size_t size = (*p_arg)->size; size_t align = (*p_arg)->alignment; int hfa_type = hfa_element_type (*p_arg, 0); FFI_ASSERT (align <= 16); if (align == 16 && (gpcount & 1)) gpcount++; if (hfa_type != FFI_TYPE_VOID) { size_t hfa_size = hfa_type_size (hfa_type); size_t offset = 0; size_t gp_offset = gpcount * 8; void *addr = alloca (size); avalue[i] = addr; while (fpcount < 8 && offset < size && gp_offset < 8 * 8) { hfa_type_store (hfa_type, addr + offset, &stack->fp_regs[fpcount]); offset += hfa_size; gp_offset += hfa_size; fpcount += 1; } if (offset < size) memcpy (addr + offset, (char *)stack->gp_regs + gp_offset, size - offset); } else avalue[i] = &stack->gp_regs[gpcount]; gpcount += (size + 7) / 8; } break; default: abort (); } } closure->fun (cif, rvalue, avalue, closure->user_data); return cif->flags; } polyml-5.7.1/libffi/src/ia64/unix.S0000644000175000017500000002660113204034553015700 0ustar daviddavid/* ----------------------------------------------------------------------- unix.S - Copyright (c) 1998, 2008 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company IA64/unix Foreign Function Interface Primary author: Hans Boehm, HP Labs Loosely modeled on Cygnus code for other platforms. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #include "ia64_flags.h" .pred.safe_across_calls p1-p5,p16-p63 .text /* int ffi_call_unix (struct ia64_args *stack, PTR64 rvalue, void (*fn)(void), int flags); */ .align 16 .global ffi_call_unix .proc ffi_call_unix ffi_call_unix: .prologue /* Bit o trickiness. We actually share a stack frame with ffi_call. Rely on the fact that ffi_call uses a vframe and don't bother tracking one here at all. */ .fframe 0 .save ar.pfs, r36 // loc0 alloc loc0 = ar.pfs, 4, 3, 8, 0 .save rp, loc1 mov loc1 = b0 .body add r16 = 16, in0 mov loc2 = gp mov r8 = in1 ;; /* Load up all of the argument registers. */ ldf.fill f8 = [in0], 32 ldf.fill f9 = [r16], 32 ;; ldf.fill f10 = [in0], 32 ldf.fill f11 = [r16], 32 ;; ldf.fill f12 = [in0], 32 ldf.fill f13 = [r16], 32 ;; ldf.fill f14 = [in0], 32 ldf.fill f15 = [r16], 24 ;; ld8 out0 = [in0], 16 ld8 out1 = [r16], 16 ;; ld8 out2 = [in0], 16 ld8 out3 = [r16], 16 ;; ld8 out4 = [in0], 16 ld8 out5 = [r16], 16 ;; ld8 out6 = [in0] ld8 out7 = [r16] ;; /* Deallocate the register save area from the stack frame. */ mov sp = in0 /* Call the target function. */ ld8 r16 = [in2], 8 ;; ld8 gp = [in2] mov b6 = r16 br.call.sptk.many b0 = b6 ;; /* Dispatch to handle return value. */ mov gp = loc2 zxt1 r16 = in3 ;; mov ar.pfs = loc0 addl r18 = @ltoffx(.Lst_table), gp ;; ld8.mov r18 = [r18], .Lst_table mov b0 = loc1 ;; shladd r18 = r16, 3, r18 ;; ld8 r17 = [r18] shr in3 = in3, 8 ;; add r17 = r17, r18 ;; mov b6 = r17 br b6 ;; .Lst_void: br.ret.sptk.many b0 ;; .Lst_uint8: zxt1 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_sint8: sxt1 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_uint16: zxt2 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_sint16: sxt2 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_uint32: zxt4 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_sint32: sxt4 r8 = r8 ;; st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_int64: st8 [in1] = r8 br.ret.sptk.many b0 ;; .Lst_float: stfs [in1] = f8 br.ret.sptk.many b0 ;; .Lst_double: stfd [in1] = f8 br.ret.sptk.many b0 ;; .Lst_ldouble: stfe [in1] = f8 br.ret.sptk.many b0 ;; .Lst_small_struct: add sp = -16, sp cmp.lt p6, p0 = 8, in3 cmp.lt p7, p0 = 16, in3 cmp.lt p8, p0 = 24, in3 ;; add r16 = 8, sp add r17 = 16, sp add r18 = 24, sp ;; st8 [sp] = r8 (p6) st8 [r16] = r9 mov out0 = in1 (p7) st8 [r17] = r10 (p8) st8 [r18] = r11 mov out1 = sp mov out2 = in3 br.call.sptk.many b0 = memcpy# ;; mov ar.pfs = loc0 mov b0 = loc1 mov gp = loc2 br.ret.sptk.many b0 .Lst_hfa_float: add r16 = 4, in1 cmp.lt p6, p0 = 4, in3 ;; stfs [in1] = f8, 8 (p6) stfs [r16] = f9, 8 cmp.lt p7, p0 = 8, in3 cmp.lt p8, p0 = 12, in3 ;; (p7) stfs [in1] = f10, 8 (p8) stfs [r16] = f11, 8 cmp.lt p9, p0 = 16, in3 cmp.lt p10, p0 = 20, in3 ;; (p9) stfs [in1] = f12, 8 (p10) stfs [r16] = f13, 8 cmp.lt p6, p0 = 24, in3 cmp.lt p7, p0 = 28, in3 ;; (p6) stfs [in1] = f14 (p7) stfs [r16] = f15 br.ret.sptk.many b0 ;; .Lst_hfa_double: add r16 = 8, in1 cmp.lt p6, p0 = 8, in3 ;; stfd [in1] = f8, 16 (p6) stfd [r16] = f9, 16 cmp.lt p7, p0 = 16, in3 cmp.lt p8, p0 = 24, in3 ;; (p7) stfd [in1] = f10, 16 (p8) stfd [r16] = f11, 16 cmp.lt p9, p0 = 32, in3 cmp.lt p10, p0 = 40, in3 ;; (p9) stfd [in1] = f12, 16 (p10) stfd [r16] = f13, 16 cmp.lt p6, p0 = 48, in3 cmp.lt p7, p0 = 56, in3 ;; (p6) stfd [in1] = f14 (p7) stfd [r16] = f15 br.ret.sptk.many b0 ;; .Lst_hfa_ldouble: add r16 = 16, in1 cmp.lt p6, p0 = 16, in3 ;; stfe [in1] = f8, 32 (p6) stfe [r16] = f9, 32 cmp.lt p7, p0 = 32, in3 cmp.lt p8, p0 = 48, in3 ;; (p7) stfe [in1] = f10, 32 (p8) stfe [r16] = f11, 32 cmp.lt p9, p0 = 64, in3 cmp.lt p10, p0 = 80, in3 ;; (p9) stfe [in1] = f12, 32 (p10) stfe [r16] = f13, 32 cmp.lt p6, p0 = 96, in3 cmp.lt p7, p0 = 112, in3 ;; (p6) stfe [in1] = f14 (p7) stfe [r16] = f15 br.ret.sptk.many b0 ;; .endp ffi_call_unix .align 16 .global ffi_closure_unix .proc ffi_closure_unix #define FRAME_SIZE (8*16 + 8*8 + 8*16) ffi_closure_unix: .prologue .save ar.pfs, r40 // loc0 alloc loc0 = ar.pfs, 8, 4, 4, 0 .fframe FRAME_SIZE add r12 = -FRAME_SIZE, r12 .save rp, loc1 mov loc1 = b0 .save ar.unat, loc2 mov loc2 = ar.unat .body /* Retrieve closure pointer and real gp. */ #ifdef _ILP32 addp4 out0 = 0, gp addp4 gp = 16, gp #else mov out0 = gp add gp = 16, gp #endif ;; ld8 gp = [gp] /* Spill all of the possible argument registers. */ add r16 = 16 + 8*16, sp add r17 = 16 + 8*16 + 16, sp ;; stf.spill [r16] = f8, 32 stf.spill [r17] = f9, 32 mov loc3 = gp ;; stf.spill [r16] = f10, 32 stf.spill [r17] = f11, 32 ;; stf.spill [r16] = f12, 32 stf.spill [r17] = f13, 32 ;; stf.spill [r16] = f14, 32 stf.spill [r17] = f15, 24 ;; .mem.offset 0, 0 st8.spill [r16] = in0, 16 .mem.offset 8, 0 st8.spill [r17] = in1, 16 add out1 = 16 + 8*16, sp ;; .mem.offset 0, 0 st8.spill [r16] = in2, 16 .mem.offset 8, 0 st8.spill [r17] = in3, 16 add out2 = 16, sp ;; .mem.offset 0, 0 st8.spill [r16] = in4, 16 .mem.offset 8, 0 st8.spill [r17] = in5, 16 mov out3 = r8 ;; .mem.offset 0, 0 st8.spill [r16] = in6 .mem.offset 8, 0 st8.spill [r17] = in7 /* Invoke ffi_closure_unix_inner for the hard work. */ br.call.sptk.many b0 = ffi_closure_unix_inner ;; /* Dispatch to handle return value. */ mov gp = loc3 zxt1 r16 = r8 ;; addl r18 = @ltoffx(.Lld_table), gp mov ar.pfs = loc0 ;; ld8.mov r18 = [r18], .Lld_table mov b0 = loc1 ;; shladd r18 = r16, 3, r18 mov ar.unat = loc2 ;; ld8 r17 = [r18] shr r8 = r8, 8 ;; add r17 = r17, r18 add r16 = 16, sp ;; mov b6 = r17 br b6 ;; .label_state 1 .Lld_void: .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_int: .body .copy_state 1 ld8 r8 = [r16] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_float: .body .copy_state 1 ldfs f8 = [r16] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_double: .body .copy_state 1 ldfd f8 = [r16] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_ldouble: .body .copy_state 1 ldfe f8 = [r16] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_small_struct: .body .copy_state 1 add r17 = 8, r16 cmp.lt p6, p0 = 8, r8 cmp.lt p7, p0 = 16, r8 cmp.lt p8, p0 = 24, r8 ;; ld8 r8 = [r16], 16 (p6) ld8 r9 = [r17], 16 ;; (p7) ld8 r10 = [r16] (p8) ld8 r11 = [r17] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_hfa_float: .body .copy_state 1 add r17 = 4, r16 cmp.lt p6, p0 = 4, r8 ;; ldfs f8 = [r16], 8 (p6) ldfs f9 = [r17], 8 cmp.lt p7, p0 = 8, r8 cmp.lt p8, p0 = 12, r8 ;; (p7) ldfs f10 = [r16], 8 (p8) ldfs f11 = [r17], 8 cmp.lt p9, p0 = 16, r8 cmp.lt p10, p0 = 20, r8 ;; (p9) ldfs f12 = [r16], 8 (p10) ldfs f13 = [r17], 8 cmp.lt p6, p0 = 24, r8 cmp.lt p7, p0 = 28, r8 ;; (p6) ldfs f14 = [r16] (p7) ldfs f15 = [r17] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_hfa_double: .body .copy_state 1 add r17 = 8, r16 cmp.lt p6, p0 = 8, r8 ;; ldfd f8 = [r16], 16 (p6) ldfd f9 = [r17], 16 cmp.lt p7, p0 = 16, r8 cmp.lt p8, p0 = 24, r8 ;; (p7) ldfd f10 = [r16], 16 (p8) ldfd f11 = [r17], 16 cmp.lt p9, p0 = 32, r8 cmp.lt p10, p0 = 40, r8 ;; (p9) ldfd f12 = [r16], 16 (p10) ldfd f13 = [r17], 16 cmp.lt p6, p0 = 48, r8 cmp.lt p7, p0 = 56, r8 ;; (p6) ldfd f14 = [r16] (p7) ldfd f15 = [r17] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .Lld_hfa_ldouble: .body .copy_state 1 add r17 = 16, r16 cmp.lt p6, p0 = 16, r8 ;; ldfe f8 = [r16], 32 (p6) ldfe f9 = [r17], 32 cmp.lt p7, p0 = 32, r8 cmp.lt p8, p0 = 48, r8 ;; (p7) ldfe f10 = [r16], 32 (p8) ldfe f11 = [r17], 32 cmp.lt p9, p0 = 64, r8 cmp.lt p10, p0 = 80, r8 ;; (p9) ldfe f12 = [r16], 32 (p10) ldfe f13 = [r17], 32 cmp.lt p6, p0 = 96, r8 cmp.lt p7, p0 = 112, r8 ;; (p6) ldfe f14 = [r16] (p7) ldfe f15 = [r17] .restore sp add sp = FRAME_SIZE, sp br.ret.sptk.many b0 ;; .endp ffi_closure_unix .section .rodata .align 8 .Lst_table: data8 @pcrel(.Lst_void) // FFI_TYPE_VOID data8 @pcrel(.Lst_sint32) // FFI_TYPE_INT data8 @pcrel(.Lst_float) // FFI_TYPE_FLOAT data8 @pcrel(.Lst_double) // FFI_TYPE_DOUBLE data8 @pcrel(.Lst_ldouble) // FFI_TYPE_LONGDOUBLE data8 @pcrel(.Lst_uint8) // FFI_TYPE_UINT8 data8 @pcrel(.Lst_sint8) // FFI_TYPE_SINT8 data8 @pcrel(.Lst_uint16) // FFI_TYPE_UINT16 data8 @pcrel(.Lst_sint16) // FFI_TYPE_SINT16 data8 @pcrel(.Lst_uint32) // FFI_TYPE_UINT32 data8 @pcrel(.Lst_sint32) // FFI_TYPE_SINT32 data8 @pcrel(.Lst_int64) // FFI_TYPE_UINT64 data8 @pcrel(.Lst_int64) // FFI_TYPE_SINT64 data8 @pcrel(.Lst_void) // FFI_TYPE_STRUCT data8 @pcrel(.Lst_int64) // FFI_TYPE_POINTER data8 @pcrel(.Lst_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT data8 @pcrel(.Lst_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT data8 @pcrel(.Lst_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE data8 @pcrel(.Lst_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE .Lld_table: data8 @pcrel(.Lld_void) // FFI_TYPE_VOID data8 @pcrel(.Lld_int) // FFI_TYPE_INT data8 @pcrel(.Lld_float) // FFI_TYPE_FLOAT data8 @pcrel(.Lld_double) // FFI_TYPE_DOUBLE data8 @pcrel(.Lld_ldouble) // FFI_TYPE_LONGDOUBLE data8 @pcrel(.Lld_int) // FFI_TYPE_UINT8 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT8 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT16 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT16 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT32 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT32 data8 @pcrel(.Lld_int) // FFI_TYPE_UINT64 data8 @pcrel(.Lld_int) // FFI_TYPE_SINT64 data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT data8 @pcrel(.Lld_int) // FFI_TYPE_POINTER data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/ia64/ia64_flags.h0000644000175000017500000000363513204034553016663 0ustar daviddavid/* ----------------------------------------------------------------------- ia64_flags.h - Copyright (c) 2000 Hewlett Packard Company IA64/unix Foreign Function Interface Original author: Hans Boehm, HP Labs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* "Type" codes used between assembly and C. When used as a part of a cfi->flags value, the low byte will be these extra type codes, and bits 8-31 will be the actual size of the type. */ /* Small structures containing N words in integer registers. */ #define FFI_IA64_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 1) /* Homogeneous Floating Point Aggregates (HFAs) which are returned in FP registers. */ #define FFI_IA64_TYPE_HFA_FLOAT (FFI_TYPE_LAST + 2) #define FFI_IA64_TYPE_HFA_DOUBLE (FFI_TYPE_LAST + 3) #define FFI_IA64_TYPE_HFA_LDOUBLE (FFI_TYPE_LAST + 4) polyml-5.7.1/libffi/src/or1k/0000755000175000017500000000000013204034553014675 5ustar daviddavidpolyml-5.7.1/libffi/src/or1k/ffitarget.h0000644000175000017500000000403213204034553017020 0ustar daviddavid/* ----------------------------------------------------------------------- ffitarget.h - Copyright (c) 2014 Sebastian Macke OpenRISC Target configuration macros Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #define FFI_TRAMPOLINE_SIZE (24) #define FFI_TARGET_SPECIFIC_VARIADIC 1 #define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs; #endif polyml-5.7.1/libffi/src/or1k/ffi.c0000644000175000017500000002044513204034553015612 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2014 Sebastian Macke OpenRISC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include "ffi_common.h" /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void* ffi_prep_args(char *stack, extended_cif *ecif) { char *stacktemp = stack; int i, s; ffi_type **arg; int count = 0; int nfixedargs; nfixedargs = ecif->cif->nfixedargs; arg = ecif->cif->arg_types; void **argv = ecif->avalue; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) { *(void **) stack = ecif->rvalue; stack += 4; count = 4; } for(i=0; icif->nargs; i++) { /* variadic args are saved on stack */ if ((nfixedargs == 0) && (count < 24)) { count = 24; stack = stacktemp + 24; } nfixedargs--; s = 4; switch((*arg)->type) { case FFI_TYPE_STRUCT: *(void **)stack = *argv; break; case FFI_TYPE_SINT8: *(signed int *) stack = (signed int)*(SINT8 *)(* argv); break; case FFI_TYPE_UINT8: *(unsigned int *) stack = (unsigned int)*(UINT8 *)(* argv); break; case FFI_TYPE_SINT16: *(signed int *) stack = (signed int)*(SINT16 *)(* argv); break; case FFI_TYPE_UINT16: *(unsigned int *) stack = (unsigned int)*(UINT16 *)(* argv); break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: case FFI_TYPE_POINTER: *(int *)stack = *(int*)(*argv); break; default: /* 8 byte types */ if (count == 20) /* never split arguments */ { stack += 4; count += 4; } s = (*arg)->size; memcpy(stack, *argv, s); break; } stack += s; count += s; argv++; arg++; } return stacktemp + ((count>24)?24:0); } extern void ffi_call_SYSV(unsigned, extended_cif *, void *(*)(int *, extended_cif *), unsigned *, void (*fn)(void), unsigned); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { int i; int size; ffi_type **arg; /* Calculate size to allocate on stack */ for(i = 0, arg = cif->arg_types, size=0; i < cif->nargs; i++, arg++) { if ((*arg)->type == FFI_TYPE_STRUCT) size += 4; else if ((*arg)->size <= 4) size += 4; else size += 8; } /* for variadic functions more space is needed on the stack */ if (cif->nargs != cif->nfixedargs) size += 24; if (cif->rtype->type == FFI_TYPE_STRUCT) size += 4; extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags); break; default: FFI_ASSERT(0); break; } } void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7, unsigned long r8) { register int *sp __asm__ ("r17"); register int *r13 __asm__ ("r13"); ffi_closure* closure = (ffi_closure*) r13; char *stack_args = sp; /* Lay the register arguments down in a continuous chunk of memory. */ unsigned register_args[6] = { r3, r4, r5, r6, r7, r8 }; /* Pointer to a struct return value. */ void *struct_rvalue = (void *) r3; ffi_cif *cif = closure->cif; ffi_type **arg_types = cif->arg_types; void **avalue = alloca (cif->nargs * sizeof(void *)); char *ptr = (char *) register_args; int count = 0; int nfixedargs = cif->nfixedargs; int i; /* preserve struct type return pointer passing */ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ptr += 4; count = 4; } /* Find the address of each argument. */ for (i = 0; i < cif->nargs; i++) { /* variadic args are saved on stack */ if ((nfixedargs == 0) && (count < 24)) { ptr = stack_args; count = 24; } nfixedargs--; switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: avalue[i] = ptr + 3; break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: avalue[i] = ptr + 2; break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_FLOAT: case FFI_TYPE_POINTER: avalue[i] = ptr; break; case FFI_TYPE_STRUCT: avalue[i] = *(void**)ptr; break; default: /* 8-byte values */ /* arguments are never splitted */ if (ptr == ®ister_args[5]) ptr = stack_args; avalue[i] = ptr; ptr += 4; count += 4; break; } ptr += 4; count += 4; /* If we've handled more arguments than fit in registers, start looking at the those passed on the stack. */ if (count == 24) ptr = stack_args; } if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) { (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); } else { long long rvalue; (closure->fun) (cif, &rvalue, avalue, closure->user_data); if (cif->rtype) asm ("l.ori r12, %0, 0x0\n l.lwz r11, 0(r12)\n l.lwz r12, 4(r12)" : : "r" (&rvalue)); } } ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { unsigned short *tramp = (unsigned short *) closure->tramp; unsigned long fn = (unsigned long) ffi_closure_SYSV; unsigned long cls = (unsigned long) codeloc; if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; closure->cif = cif; closure->user_data = user_data; closure->fun = fun; /* write pointers to temporary registers */ tramp[0] = (0x6 << 10) | (13 << 5); /* l.movhi r13, ... */ tramp[1] = cls >> 16; tramp[2] = (0x2a << 10) | (13 << 5) | 13; /* l.ori r13, r13, ... */ tramp[3] = cls & 0xFFFF; tramp[4] = (0x6 << 10) | (15 << 5); /* l.movhi r15, ... */ tramp[5] = fn >> 16; tramp[6] = (0x2a << 10) | (15 << 5) | 15; /* l.ori r15, r15 ... */ tramp[7] = fn & 0xFFFF; tramp[8] = (0x11 << 10); /* l.jr r15 */ tramp[9] = 15 << 11; tramp[10] = (0x2a << 10) | (17 << 5) | 1; /* l.ori r17, r1, ... */ tramp[11] = 0x0; return FFI_OK; } ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { cif->flags = 0; /* structures are returned as pointers */ if (cif->rtype->type == FFI_TYPE_STRUCT) cif->flags = FFI_TYPE_STRUCT; else if (cif->rtype->size > 4) cif->flags = FFI_TYPE_UINT64; cif->nfixedargs = cif->nargs; return FFI_OK; } ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { ffi_status status; status = ffi_prep_cif_machdep (cif); cif->nfixedargs = nfixedargs; return status; } polyml-5.7.1/libffi/src/or1k/sysv.S0000644000175000017500000000562113204034553016031 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2014 Sebastian Macke OpenRISC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .text .globl ffi_call_SYSV .type ffi_call_SYSV, @function /* r3: size to allocate on stack r4: extended cif structure r5: function pointer ffi_prep_args r6: ret address r7: function to call r8: flag for return type */ ffi_call_SYSV: /* Store registers used on stack */ l.sw -4(r1), r9 /* return address */ l.sw -8(r1), r1 /* stack address */ l.sw -12(r1), r14 /* callee saved registers */ l.sw -16(r1), r16 l.sw -20(r1), r18 l.sw -24(r1), r20 l.ori r14, r1, 0x0 /* save stack pointer */ l.addi r1, r1, -24 l.ori r16, r7, 0x0 /* save function address */ l.ori r18, r6, 0x0 /* save ret address */ l.ori r20, r8, 0x0 /* save flag */ l.sub r1, r1, r3 /* reserve space on stack */ /* Call ffi_prep_args */ l.ori r3, r1, 0x0 /* first argument stack address, second already ecif */ l.jalr r5 l.nop /* Load register arguments and call*/ l.lwz r3, 0(r1) l.lwz r4, 4(r1) l.lwz r5, 8(r1) l.lwz r6, 12(r1) l.lwz r7, 16(r1) l.lwz r8, 20(r1) l.ori r1, r11, 0x0 /* new stack pointer */ l.jalr r16 l.nop /* handle return values */ l.sfeqi r20, FFI_TYPE_STRUCT l.bf ret /* structs don't return an rvalue */ l.nop /* copy ret address */ l.sfeqi r20, FFI_TYPE_UINT64 l.bnf four_byte_ret /* 8 byte value is returned */ l.nop l.sw 4(r18), r12 four_byte_ret: l.sw 0(r18), r11 ret: /* return */ l.ori r1, r14, 0x0 /* reset stack pointer */ l.lwz r9, -4(r1) l.lwz r1, -8(r1) l.lwz r14, -12(r1) l.lwz r16, -16(r1) l.lwz r18, -20(r1) l.lwz r20, -24(r1) l.jr r9 l.nop .size ffi_call_SYSV, .-ffi_call_SYSV polyml-5.7.1/libffi/src/metag/0000755000175000017500000000000013204034553015116 5ustar daviddavidpolyml-5.7.1/libffi/src/metag/ffitarget.h0000644000175000017500000000360013204034553017241 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd. Target configuration macros for Meta Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_DEFAULT_ABI = FFI_SYSV, FFI_LAST_ABI = FFI_DEFAULT_ABI + 1, } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 48 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/metag/ffi.c0000644000175000017500000002074113204034553016032 0ustar daviddavid/* ---------------------------------------------------------------------- ffi.c - Copyright (c) 2013 Imagination Technologies Meta Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the `Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED `AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #define MIN(a,b) (((a) < (b)) ? (a) : (b)) /* * ffi_prep_args is called by the assembly routine once stack space has been * allocated for the function's arguments */ unsigned int ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; argp = stack; /* Store return value */ if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { argp -= 4; *(void **) argp = ecif->rvalue; } p_argv = ecif->avalue; /* point to next location */ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) { size_t z; /* Move argp to address of argument */ z = (*p_arg)->size; argp -= z; /* Align if necessary */ argp = (char *) ALIGN_DOWN(ALIGN_DOWN(argp, (*p_arg)->alignment), 4); if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); case FFI_TYPE_STRUCT: memcpy(argp, *p_argv, (*p_arg)->size); break; default: FFI_ASSERT(0); } } else if ( z == sizeof(int)) { *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); } else { memcpy(argp, *p_argv, z); } } /* return the size of the arguments to be passed in registers, padded to an 8 byte boundary to preserve stack alignment */ return ALIGN(MIN(stack - argp, 6*4), 8); } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { ffi_type **ptr; unsigned i, bytes = 0; for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { if ((*ptr)->size == 0) return FFI_BAD_TYPEDEF; /* Perform a sanity check on the argument type, do this check after the initialization. */ FFI_ASSERT_VALID_TYPE(*ptr); /* Add any padding if necessary */ if (((*ptr)->alignment - 1) & bytes) bytes = ALIGN(bytes, (*ptr)->alignment); bytes += ALIGN((*ptr)->size, 4); } /* Ensure arg space is aligned to an 8-byte boundary */ bytes = ALIGN(bytes, 8); /* Make space for the return structure pointer */ if (cif->rtype->type == FFI_TYPE_STRUCT) { bytes += sizeof(void*); /* Ensure stack is aligned to an 8-byte boundary */ bytes = ALIGN(bytes, 8); } cif->bytes = bytes; /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = (unsigned) FFI_TYPE_SINT64; break; case FFI_TYPE_STRUCT: /* Meta can store return values which are <= 64 bits */ if (cif->rtype->size <= 4) /* Returned to D0Re0 as 32-bit value */ cif->flags = (unsigned)FFI_TYPE_INT; else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8)) /* Returned valued is stored to D1Re0|R0Re0 */ cif->flags = (unsigned)FFI_TYPE_DOUBLE; else /* value stored in memory */ cif->flags = (unsigned)FFI_TYPE_STRUCT; break; default: cif->flags = (unsigned)FFI_TYPE_INT; break; } return FFI_OK; } extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *); /* * Exported in API. Entry point * cif -> ffi_cif object * fn -> function pointer * rvalue -> pointer to return value * avalue -> vector of void * pointers pointing to memory locations holding the * arguments */ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT)); ecif.cif = cif; ecif.avalue = avalue; double temp; /* * If the return value is a struct and we don't have a return value address * then we need to make one */ if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT)) ecif.rvalue = alloca(cif->rtype->size); else if (small_struct) ecif.rvalue = &temp; else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); break; default: FFI_ASSERT(0); break; } if (small_struct) memcpy (rvalue, &temp, cif->rtype->size); } /* private members */ static void ffi_prep_incoming_args_SYSV (char *, void **, void **, ffi_cif*, float *); void ffi_closure_SYSV (ffi_closure *); /* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */ extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */ /* end of private members */ /* * __tramp: trampoline memory location * __fun: assembly routine * __ctx: memory location for wrapper * * At this point, tramp[0] == __ctx ! */ void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) { memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline)); *(unsigned int*) &__tramp[40] = __ctx; *(unsigned int*) &__tramp[44] = __fun; /* This will flush the instruction cache */ __builtin_meta2_cachewd(&__tramp[0], 1); __builtin_meta2_cachewd(&__tramp[47], 1); } /* the cif must already be prepared */ ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { void (*closure_func)(ffi_closure*) = NULL; if (cif->abi == FFI_SYSV) closure_func = &ffi_closure_SYSV; else return FFI_BAD_ABI; ffi_init_trampoline( (unsigned char*)&closure->tramp[0], (unsigned int)closure_func, (unsigned int)codeloc); closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } /* This function is jumped to by the trampoline */ unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args) ffi_closure *closure; void **respp; void *args; void *vfp_args; { ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void*)); /* * This call will initialize ARG_AREA, such that each * element in that array points to the corresponding * value on the stack; and if the function returns * a structure, it will re-set RESP to point to the * structure return address. */ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); (closure->fun) ( cif, *respp, arg_area, closure->user_data); return cif->flags; } static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, ffi_cif *cif, float *vfp_stack) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; /* stack points to original arguments */ argp = stack; /* Store return value */ if ( cif->flags == FFI_TYPE_STRUCT ) { argp -= 4; *rvalue = *(void **) argp; } p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { size_t z; size_t alignment; alignment = (*p_arg)->alignment; if (alignment < 4) alignment = 4; if ((alignment - 1) & (unsigned)argp) argp = (char *) ALIGN(argp, alignment); z = (*p_arg)->size; *p_argv = (void*) argp; p_argv++; argp -= z; } return; } polyml-5.7.1/libffi/src/metag/sysv.S0000644000175000017500000001653513204034553016260 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2013 Imagination Technologies Ltd. Meta Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else #ifdef __USER_LABEL_PREFIX__ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) #else #define CNAME(x) x #endif #define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x): #endif #ifdef __ELF__ #define LSYM(x) .x #else #define LSYM(x) x #endif .macro call_reg x= .text .balign 4 mov D1RtP, \x swap D1RtP, PC .endm ! Save register arguments .macro SAVE_ARGS .text .balign 4 setl [A0StP++], D0Ar6, D1Ar5 setl [A0StP++], D0Ar4, D1Ar3 setl [A0StP++], D0Ar2, D1Ar1 .endm ! Save retrun, frame pointer and other regs .macro SAVE_REGS regs= .text .balign 4 setl [A0StP++], D0FrT, D1RtP ! Needs to be a pair of regs .ifnc "\regs","" setl [A0StP++], \regs .endif .endm ! Declare a global function .macro METAG_FUNC_START name .text .balign 4 ENTRY(\name) .endm ! Return registers from the stack. Reverse SAVE_REGS operation .macro RET_REGS regs=, cond= .ifnc "\regs", "" getl \regs, [--A0StP] .endif getl D0FrT, D1RtP, [--A0StP] .endm ! Return arguments .macro RET_ARGS getl D0Ar2, D1Ar1, [--A0StP] getl D0Ar4, D1Ar3, [--A0StP] getl D0Ar6, D1Ar5, [--A0StP] .endm ! D1Ar1: fn ! D0Ar2: &ecif ! D1Ar3: cif->bytes ! D0Ar4: fig->flags ! D1Ar5: ecif.rvalue ! This assumes we are using GNU as METAG_FUNC_START ffi_call_SYSV ! Save argument registers SAVE_ARGS ! new frame mov D0FrT, A0FrP add A0FrP, A0StP, #0 ! Preserve the old frame pointer SAVE_REGS "D1.5, D0.5" ! Make room for new args. cifs->bytes is the total space for input ! and return arguments add A0StP, A0StP, D1Ar3 ! Preserve cifs->bytes & fn mov D0.5, D1Ar3 mov D1.5, D1Ar1 ! Place all of the ffi_prep_args in position mov D1Ar1, A0StP ! Call ffi_prep_args(stack, &ecif) #ifdef __PIC__ callr D1RtP, CNAME(ffi_prep_args@PLT) #else callr D1RtP, CNAME(ffi_prep_args) #endif ! Restore fn pointer ! The foreign stack should look like this ! XXXXX XXXXXX <--- stack pointer ! FnArgN rvalue ! FnArgN+2 FnArgN+1 ! FnArgN+4 FnArgN+3 ! .... ! ! A0StP now points to the first (or return) argument + 4 ! Preserve cif->bytes getl D0Ar2, D1Ar1, [--A0StP] getl D0Ar4, D1Ar3, [--A0StP] getl D0Ar6, D1Ar5, [--A0StP] ! Place A0StP to the first argument again add A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each ! A0FrP points to the initial stack without the reserved space for the ! cifs->bytes, whilst A0StP points to the stack after the space allocation ! fn was the first argument of ffi_call_SYSV. ! The stack at this point looks like this: ! ! A0StP(on entry to _SYSV) -> Arg6 Arg5 | low ! Arg4 Arg3 | ! Arg2 Arg1 | ! A0FrP ----> D0FrtP D1RtP | ! D1.5 D0.5 | ! A0StP(bf prep_args) -> FnArgn FnArgn-1 | ! FnArgn-2FnArgn-3 | ! ................ | <= cifs->bytes ! FnArg4 FnArg3 | ! A0StP (prv_A0StP+cifs->bytes) FnArg2 FnArg1 | high ! ! fn was in Arg1 so it's located in in A0FrP+#-0xC ! ! D0Re0 contains the size of arguments stored in registers sub A0StP, A0StP, D0Re0 ! Arg1 is the function pointer for the foreign call. This has been ! preserved in D1.5 ! Time to call (fn). Arguments should be like this: ! Arg1-Arg6 are loaded to regs ! The rest of the arguments are stored in stack pointed by A0StP call_reg D1.5 ! Reset stack. mov A0StP, A0FrP ! Load Arg1 with the pointer to storage for the return type ! This was stored in Arg5 getd D1Ar1, [A0FrP+#-20] ! Load D0Ar2 with the return type code. This was stored in Arg4 (flags) getd D0Ar2, [A0FrP+#-16] ! We are ready to start processing the return value ! D0Re0 (and D1Re0) hold the return value ! If the return value is NULL, assume no return value cmp D1Ar1, #0 beq LSYM(Lepilogue) ! return INT cmp D0Ar2, #FFI_TYPE_INT ! Sadly, there is no setd{cc} instruction so we need to workaround that bne .INT64 setd [D1Ar1], D0Re0 b LSYM(Lepilogue) ! return INT64 .INT64: cmp D0Ar2, #FFI_TYPE_SINT64 setleq [D1Ar1], D0Re0, D1Re0 ! return DOUBLE cmp D0Ar2, #FFI_TYPE_DOUBLE setl [D1AR1++], D0Re0, D1Re0 LSYM(Lepilogue): ! At this point, the stack pointer points right after the argument ! saved area. We need to restore 4 regs, therefore we need to move ! 16 bytes ahead. add A0StP, A0StP, #16 RET_REGS "D1.5, D0.5" RET_ARGS getd D0Re0, [A0StP] mov A0FrP, D0FrT swap D1RtP, PC .ffi_call_SYSV_end: .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) /* (called by ffi_metag_trampoline) void ffi_closure_SYSV (ffi_closure*) (called by ffi_closure_SYSV) unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (closure,respp, args) ffi_closure *closure; void **respp; void *args; */ METAG_FUNC_START ffi_closure_SYSV ! We assume that D1Ar1 holds the address of the ! ffi_closure struct. We will use that to fetch the ! arguments. The stack pointer points to an empty space ! and it is ready to store more data. ! D1Ar1 is ready ! Allocate stack space for return value add A0StP, A0StP, #8 ! Store it to D0Ar2 sub D0Ar2, A0StP, #8 sub D1Ar3, A0FrP, #4 ! D1Ar3 contains the address of the original D1Ar1 argument ! We need to subtract #4 later on ! Preverve D0Ar2 mov D0.5, D0Ar2 #ifdef __PIC__ callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT) #else callr D1RtP, CNAME(ffi_closure_SYSV_inner) #endif ! Check the return value and store it to D0.5 cmp D0Re0, #FFI_TYPE_INT beq .Lretint cmp D0Re0, #FFI_TYPE_DOUBLE beq .Lretdouble .Lclosure_epilogue: sub A0StP, A0StP, #8 RET_REGS "D1.5, D0.5" RET_ARGS swap D1RtP, PC .Lretint: setd [D0.5], D0Re0 b .Lclosure_epilogue .Lretdouble: setl [D0.5++], D0Re0, D1Re0 b .Lclosure_epilogue .ffi_closure_SYSV_end: .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) ENTRY(ffi_metag_trampoline) SAVE_ARGS ! New frame mov A0FrP, A0StP SAVE_REGS "D1.5, D0.5" mov D0.5, PC ! Load D1Ar1 the value of ffi_metag_trampoline getd D1Ar1, [D0.5 + #8] ! Jump to ffi_closure_SYSV getd PC, [D0.5 + #12] polyml-5.7.1/libffi/src/sparc/0000755000175000017500000000000013204034553015131 5ustar daviddavidpolyml-5.7.1/libffi/src/sparc/ffitarget.h0000644000175000017500000000430713204034553017261 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for SPARC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ #if defined(__arch64__) || defined(__sparcv9) #ifndef SPARC64 #define SPARC64 #endif #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_V8, FFI_V8PLUS, FFI_V9, FFI_LAST_ABI, #ifdef SPARC64 FFI_DEFAULT_ABI = FFI_V9 #else FFI_DEFAULT_ABI = FFI_V8 #endif } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #ifdef SPARC64 #define FFI_TRAMPOLINE_SIZE 24 #else #define FFI_TRAMPOLINE_SIZE 16 #endif #endif polyml-5.7.1/libffi/src/sparc/ffi.c0000644000175000017500000004224713204034553016052 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2011, 2013 Anthony Green Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. SPARC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void ffi_prep_args_v8(char *stack, extended_cif *ecif) { int i; void **p_argv; char *argp; ffi_type **p_arg; /* Skip 16 words for the window save area */ argp = stack + 16*sizeof(int); /* This should only really be done when we are returning a structure, however, it's faster just to do it all the time... if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) */ *(int *) argp = (long)ecif->rvalue; /* And 1 word for the structure return value. */ argp += sizeof(int); #ifdef USING_PURIFY /* Purify will probably complain in our assembly routine, unless we zero out this memory. */ ((int*)argp)[0] = 0; ((int*)argp)[1] = 0; ((int*)argp)[2] = 0; ((int*)argp)[3] = 0; ((int*)argp)[4] = 0; ((int*)argp)[5] = 0; #endif p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i; i--, p_arg++) { size_t z; if ((*p_arg)->type == FFI_TYPE_STRUCT #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE || (*p_arg)->type == FFI_TYPE_LONGDOUBLE #endif ) { *(unsigned int *) argp = (unsigned long)(* p_argv); z = sizeof(int); } else { z = (*p_arg)->size; if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = *(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = *(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = *(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = *(UINT16 *)(* p_argv); break; default: FFI_ASSERT(0); } } else { memcpy(argp, *p_argv, z); } } p_argv++; argp += z; } return; } int ffi_prep_args_v9(char *stack, extended_cif *ecif) { int i, ret = 0; int tmp; void **p_argv; char *argp; ffi_type **p_arg; tmp = 0; /* Skip 16 words for the window save area */ argp = stack + 16*sizeof(long long); #ifdef USING_PURIFY /* Purify will probably complain in our assembly routine, unless we zero out this memory. */ ((long long*)argp)[0] = 0; ((long long*)argp)[1] = 0; ((long long*)argp)[2] = 0; ((long long*)argp)[3] = 0; ((long long*)argp)[4] = 0; ((long long*)argp)[5] = 0; #endif p_argv = ecif->avalue; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 32) { *(unsigned long long *) argp = (unsigned long)ecif->rvalue; argp += sizeof(long long); tmp = 1; } for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) { size_t z; z = (*p_arg)->size; switch ((*p_arg)->type) { case FFI_TYPE_STRUCT: if (z > 16) { /* For structures larger than 16 bytes we pass reference. */ *(unsigned long long *) argp = (unsigned long)* p_argv; argp += sizeof(long long); tmp++; p_argv++; continue; } /* FALLTHROUGH */ case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: #endif ret = 1; /* We should promote into FP regs as well as integer. */ break; } if (z < sizeof(long long)) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed long long *) argp = *(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned long long *) argp = *(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed long long *) argp = *(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned long long *) argp = *(UINT16 *)(* p_argv); break; case FFI_TYPE_SINT32: *(signed long long *) argp = *(SINT32 *)(* p_argv); break; case FFI_TYPE_UINT32: *(unsigned long long *) argp = *(UINT32 *)(* p_argv); break; case FFI_TYPE_FLOAT: *(float *) (argp + 4) = *(FLOAT32 *)(* p_argv); /* Right justify */ break; case FFI_TYPE_STRUCT: memcpy(argp, *p_argv, z); break; default: FFI_ASSERT(0); } z = sizeof(long long); tmp++; } else if (z == sizeof(long long)) { memcpy(argp, *p_argv, z); z = sizeof(long long); tmp++; } else { if ((tmp & 1) && (*p_arg)->alignment > 8) { tmp++; argp += sizeof(long long); } memcpy(argp, *p_argv, z); z = 2 * sizeof(long long); tmp += 2; } p_argv++; argp += z; } return ret; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { int wordsize; if (cif->abi != FFI_V9) { wordsize = 4; /* If we are returning a struct, this will already have been added. Otherwise we need to add it because it's always got to be there! */ if (cif->rtype->type != FFI_TYPE_STRUCT) cif->bytes += wordsize; /* sparc call frames require that space is allocated for 6 args, even if they aren't used. Make that space if necessary. */ if (cif->bytes < 4*6+4) cif->bytes = 4*6+4; } else { wordsize = 8; /* sparc call frames require that space is allocated for 6 args, even if they aren't used. Make that space if necessary. */ if (cif->bytes < 8*6) cif->bytes = 8*6; } /* Adjust cif->bytes. to include 16 words for the window save area, and maybe the struct/union return pointer area, */ cif->bytes += 16 * wordsize; /* The stack must be 2 word aligned, so round bytes up appropriately. */ cif->bytes = ALIGN(cif->bytes, 2 * wordsize); /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: #endif cif->flags = cif->rtype->type; break; case FFI_TYPE_STRUCT: if (cif->abi == FFI_V9 && cif->rtype->size > 32) cif->flags = FFI_TYPE_VOID; else cif->flags = FFI_TYPE_STRUCT; break; case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: if (cif->abi == FFI_V9) cif->flags = FFI_TYPE_INT; else cif->flags = cif->rtype->type; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: if (cif->abi == FFI_V9) cif->flags = FFI_TYPE_INT; else cif->flags = FFI_TYPE_SINT64; break; default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } int ffi_v9_layout_struct(ffi_type *arg, int off, char *ret, char *intg, char *flt) { ffi_type **ptr = &arg->elements[0]; while (*ptr != NULL) { if (off & ((*ptr)->alignment - 1)) off = ALIGN(off, (*ptr)->alignment); switch ((*ptr)->type) { case FFI_TYPE_STRUCT: off = ffi_v9_layout_struct(*ptr, off, ret, intg, flt); off = ALIGN(off, FFI_SIZEOF_ARG); break; case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: #endif memmove(ret + off, flt + off, (*ptr)->size); off += (*ptr)->size; break; default: memmove(ret + off, intg + off, (*ptr)->size); off += (*ptr)->size; break; } ptr++; } return off; } #ifdef SPARC64 extern int ffi_call_v9(void *, extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); #else extern int ffi_call_v8(void *, extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); #endif #ifndef __GNUC__ void ffi_flush_icache (void *, size_t); #endif void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; void *rval = rvalue; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ ecif.rvalue = rvalue; if (cif->rtype->type == FFI_TYPE_STRUCT) { if (cif->rtype->size <= 32) rval = alloca(64); else { rval = NULL; if (rvalue == NULL) ecif.rvalue = alloca(cif->rtype->size); } } switch (cif->abi) { case FFI_V8: #ifdef SPARC64 /* We don't yet support calling 32bit code from 64bit */ FFI_ASSERT(0); #else if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE || cif->flags == FFI_TYPE_LONGDOUBLE #endif )) { /* For v8, we need an "unimp" with size of returning struct */ /* behind "call", so we alloc some executable space for it. */ /* l7 is used, we need to make sure v8.S doesn't use %l7. */ unsigned int *call_struct = NULL; ffi_closure_alloc(32, (void **)&call_struct); if (call_struct) { unsigned long f = (unsigned long)fn; call_struct[0] = 0xae10001f; /* mov %i7, %l7 */ call_struct[1] = 0xbe10000f; /* mov %o7, %i7 */ call_struct[2] = 0x03000000 | f >> 10; /* sethi %hi(fn), %g1 */ call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */ call_struct[4] = 0x01000000; /* nop */ if (cif->rtype->size < 0x7f) call_struct[5] = cif->rtype->size; /* unimp */ else call_struct[5] = 0x01000000; /* nop */ call_struct[6] = 0x81c7e008; /* ret */ call_struct[7] = 0xbe100017; /* mov %l7, %i7 */ #ifdef __GNUC__ asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : : "r" (call_struct) : "memory"); /* SPARC v8 requires 5 instructions for flush to be visible */ asm volatile ("nop; nop; nop; nop; nop"); #else ffi_flush_icache (call_struct, 32); #endif ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, cif->flags, rvalue, call_struct); ffi_closure_free(call_struct); } else { ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, cif->flags, rvalue, fn); } } else { ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, cif->flags, rvalue, fn); } #endif break; case FFI_V9: #ifdef SPARC64 ffi_call_v9(ffi_prep_args_v9, &ecif, cif->bytes, cif->flags, rval, fn); if (rvalue && rval && cif->rtype->type == FFI_TYPE_STRUCT) ffi_v9_layout_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32); #else /* And vice versa */ FFI_ASSERT(0); #endif break; default: FFI_ASSERT(0); break; } } #ifdef SPARC64 extern void ffi_closure_v9(void); #else extern void ffi_closure_v8(void); #endif ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; unsigned long fn; #ifdef SPARC64 /* Trampoline address is equal to the closure address. We take advantage of that to reduce the trampoline size by 8 bytes. */ if (cif->abi != FFI_V9) return FFI_BAD_ABI; fn = (unsigned long) ffi_closure_v9; tramp[0] = 0x83414000; /* rd %pc, %g1 */ tramp[1] = 0xca586010; /* ldx [%g1+16], %g5 */ tramp[2] = 0x81c14000; /* jmp %g5 */ tramp[3] = 0x01000000; /* nop */ *((unsigned long *) &tramp[4]) = fn; #else unsigned long ctx = (unsigned long) codeloc; if (cif->abi != FFI_V8) return FFI_BAD_ABI; fn = (unsigned long) ffi_closure_v8; tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ tramp[1] = 0x05000000 | ctx >> 10; /* sethi %hi(ctx), %g2 */ tramp[2] = 0x81c06000 | (fn & 0x3ff); /* jmp %g1+%lo(fn) */ tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or %g2, %lo(ctx) */ #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Flush the Icache. closure is 8 bytes aligned. */ #ifdef __GNUC__ #ifdef SPARC64 asm volatile ("flush %0; flush %0+8" : : "r" (closure) : "memory"); #else asm volatile ("iflush %0; iflush %0+8" : : "r" (closure) : "memory"); /* SPARC v8 requires 5 instructions for flush to be visible */ asm volatile ("nop; nop; nop; nop; nop"); #endif #else ffi_flush_icache (closure, 16); #endif return FFI_OK; } int ffi_closure_sparc_inner_v8(ffi_closure *closure, void *rvalue, unsigned long *gpr, unsigned long *scratch) { ffi_cif *cif; ffi_type **arg_types; void **avalue; int i, argn; cif = closure->cif; arg_types = cif->arg_types; avalue = alloca(cif->nargs * sizeof(void *)); /* Copy the caller's structure return address so that the closure returns the data directly to the caller. */ if (cif->flags == FFI_TYPE_STRUCT #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE || cif->flags == FFI_TYPE_LONGDOUBLE #endif ) rvalue = (void *) gpr[0]; /* Always skip the structure return address. */ argn = 1; /* Grab the addresses of the arguments from the stack frame. */ for (i = 0; i < cif->nargs; i++) { if (arg_types[i]->type == FFI_TYPE_STRUCT #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE || arg_types[i]->type == FFI_TYPE_LONGDOUBLE #endif ) { /* Straight copy of invisible reference. */ avalue[i] = (void *)gpr[argn++]; } else if ((arg_types[i]->type == FFI_TYPE_DOUBLE || arg_types[i]->type == FFI_TYPE_SINT64 || arg_types[i]->type == FFI_TYPE_UINT64) /* gpr is 8-byte aligned. */ && (argn % 2) != 0) { /* Align on a 8-byte boundary. */ scratch[0] = gpr[argn]; scratch[1] = gpr[argn+1]; avalue[i] = scratch; scratch -= 2; argn += 2; } else { /* Always right-justify. */ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size; } } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_sparc how to perform return type promotions. */ return cif->rtype->type; } int ffi_closure_sparc_inner_v9(ffi_closure *closure, void *rvalue, unsigned long *gpr, double *fpr) { ffi_cif *cif; ffi_type **arg_types; void **avalue; int i, argn, fp_slot_max; cif = closure->cif; arg_types = cif->arg_types; avalue = alloca(cif->nargs * sizeof(void *)); /* Copy the caller's structure return address so that the closure returns the data directly to the caller. */ if (cif->flags == FFI_TYPE_VOID && cif->rtype->type == FFI_TYPE_STRUCT) { rvalue = (void *) gpr[0]; /* Skip the structure return address. */ argn = 1; } else argn = 0; fp_slot_max = 16 - argn; /* Grab the addresses of the arguments from the stack frame. */ for (i = 0; i < cif->nargs; i++) { if (arg_types[i]->type == FFI_TYPE_STRUCT) { if (arg_types[i]->size > 16) { /* Straight copy of invisible reference. */ avalue[i] = (void *)gpr[argn++]; } else { /* Left-justify. */ ffi_v9_layout_struct(arg_types[i], 0, (char *) &gpr[argn], (char *) &gpr[argn], (char *) &fpr[argn]); avalue[i] = &gpr[argn]; argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; } } else { /* Right-justify. */ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; /* Align on a 16-byte boundary. */ #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE if (arg_types[i]->type == FFI_TYPE_LONGDOUBLE && (argn % 2) != 0) argn++; #endif if (i < fp_slot_max && (arg_types[i]->type == FFI_TYPE_FLOAT || arg_types[i]->type == FFI_TYPE_DOUBLE #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE || arg_types[i]->type == FFI_TYPE_LONGDOUBLE #endif )) avalue[i] = ((char *) &fpr[argn]) - arg_types[i]->size; else avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size; } } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_sparc how to perform return type promotions. */ return cif->rtype->type; } polyml-5.7.1/libffi/src/sparc/v9.S0000644000175000017500000001636613204034553015627 0ustar daviddavid/* ----------------------------------------------------------------------- v9.S - Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc. SPARC 64-bit Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef SPARC64 /* Only compile this in for 64bit builds, because otherwise the object file will have inproper architecture due to used instructions. */ #define STACKFRAME 176 /* Minimum stack framesize for SPARC 64-bit */ #define STACK_BIAS 2047 #define ARGS (128) /* Offset of register area in frame */ .text .align 8 .globl ffi_call_v9 .globl _ffi_call_v9 ffi_call_v9: _ffi_call_v9: .LLFB1: save %sp, -STACKFRAME, %sp .LLCFI0: sub %sp, %i2, %sp ! alloca() space in stack for frame to set up add %sp, STACKFRAME+STACK_BIAS, %l0 ! %l0 has start of ! frame to set up mov %l0, %o0 ! call routine to set up frame call %i0 mov %i1, %o1 ! (delay) brz,pt %o0, 1f ldx [%l0+ARGS], %o0 ! call foreign function ldd [%l0+ARGS], %f0 ldd [%l0+ARGS+8], %f2 ldd [%l0+ARGS+16], %f4 ldd [%l0+ARGS+24], %f6 ldd [%l0+ARGS+32], %f8 ldd [%l0+ARGS+40], %f10 ldd [%l0+ARGS+48], %f12 ldd [%l0+ARGS+56], %f14 ldd [%l0+ARGS+64], %f16 ldd [%l0+ARGS+72], %f18 ldd [%l0+ARGS+80], %f20 ldd [%l0+ARGS+88], %f22 ldd [%l0+ARGS+96], %f24 ldd [%l0+ARGS+104], %f26 ldd [%l0+ARGS+112], %f28 ldd [%l0+ARGS+120], %f30 1: ldx [%l0+ARGS+8], %o1 ldx [%l0+ARGS+16], %o2 ldx [%l0+ARGS+24], %o3 ldx [%l0+ARGS+32], %o4 ldx [%l0+ARGS+40], %o5 call %i5 sub %l0, STACK_BIAS, %sp ! (delay) switch to frame ! If the return value pointer is NULL, assume no return value. brz,pn %i4, done nop cmp %i3, FFI_TYPE_INT be,a,pt %icc, done stx %o0, [%i4+0] ! (delay) cmp %i3, FFI_TYPE_FLOAT be,a,pn %icc, done st %f0, [%i4+0] ! (delay) cmp %i3, FFI_TYPE_DOUBLE be,a,pn %icc, done std %f0, [%i4+0] ! (delay) cmp %i3, FFI_TYPE_STRUCT be,pn %icc, dostruct cmp %i3, FFI_TYPE_LONGDOUBLE bne,pt %icc, done nop std %f0, [%i4+0] std %f2, [%i4+8] done: ret restore dostruct: /* This will not work correctly for unions. */ stx %o0, [%i4+0] stx %o1, [%i4+8] stx %o2, [%i4+16] stx %o3, [%i4+24] std %f0, [%i4+32] std %f2, [%i4+40] std %f4, [%i4+48] std %f6, [%i4+56] ret restore .LLFE1: .ffi_call_v9_end: .size ffi_call_v9,.ffi_call_v9_end-ffi_call_v9 #undef STACKFRAME #define STACKFRAME 336 /* 16*8 register window + 6*8 args backing store + 20*8 locals */ #define FP %fp+STACK_BIAS /* ffi_closure_v9(...) Receives the closure argument in %g1. */ .text .align 8 .globl ffi_closure_v9 ffi_closure_v9: .LLFB2: save %sp, -STACKFRAME, %sp .LLCFI1: ! Store all of the potential argument registers in va_list format. stx %i0, [FP+128+0] stx %i1, [FP+128+8] stx %i2, [FP+128+16] stx %i3, [FP+128+24] stx %i4, [FP+128+32] stx %i5, [FP+128+40] ! Store possible floating point argument registers too. std %f0, [FP-128] std %f2, [FP-120] std %f4, [FP-112] std %f6, [FP-104] std %f8, [FP-96] std %f10, [FP-88] std %f12, [FP-80] std %f14, [FP-72] std %f16, [FP-64] std %f18, [FP-56] std %f20, [FP-48] std %f22, [FP-40] std %f24, [FP-32] std %f26, [FP-24] std %f28, [FP-16] std %f30, [FP-8] ! Call ffi_closure_sparc_inner to do the bulk of the work. mov %g1, %o0 add %fp, STACK_BIAS-160, %o1 add %fp, STACK_BIAS+128, %o2 call ffi_closure_sparc_inner_v9 add %fp, STACK_BIAS-128, %o3 ! Load up the return value in the proper type. ! See ffi_prep_cif_machdep for the list of cases. cmp %o0, FFI_TYPE_VOID be,pn %icc, done1 cmp %o0, FFI_TYPE_INT be,pn %icc, integer cmp %o0, FFI_TYPE_FLOAT be,a,pn %icc, done1 ld [FP-160], %f0 cmp %o0, FFI_TYPE_DOUBLE be,a,pn %icc, done1 ldd [FP-160], %f0 #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE cmp %o0, FFI_TYPE_LONGDOUBLE be,a,pn %icc, longdouble1 ldd [FP-160], %f0 #endif ! FFI_TYPE_STRUCT ldx [FP-152], %i1 ldx [FP-144], %i2 ldx [FP-136], %i3 ldd [FP-160], %f0 ldd [FP-152], %f2 ldd [FP-144], %f4 ldd [FP-136], %f6 integer: ldx [FP-160], %i0 done1: ret restore #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE longdouble1: ldd [FP-152], %f2 ret restore #endif .LLFE2: .ffi_closure_v9_end: .size ffi_closure_v9,.ffi_closure_v9_end-ffi_closure_v9 #ifdef HAVE_RO_EH_FRAME .section ".eh_frame",#alloc #else .section ".eh_frame",#alloc,#write #endif .LLframe1: .uaword .LLECIE1-.LLSCIE1 ! Length of Common Information Entry .LLSCIE1: .uaword 0x0 ! CIE Identifier Tag .byte 0x1 ! CIE Version .ascii "zR\0" ! CIE Augmentation .byte 0x1 ! uleb128 0x1; CIE Code Alignment Factor .byte 0x78 ! sleb128 -8; CIE Data Alignment Factor .byte 0xf ! CIE RA Column .byte 0x1 ! uleb128 0x1; Augmentation size #ifdef HAVE_AS_SPARC_UA_PCREL .byte 0x1b ! FDE Encoding (pcrel sdata4) #else .byte 0x50 ! FDE Encoding (aligned absolute) #endif .byte 0xc ! DW_CFA_def_cfa .byte 0xe ! uleb128 0xe .byte 0xff,0xf ! uleb128 0x7ff .align 8 .LLECIE1: .LLSFDE1: .uaword .LLEFDE1-.LLASFDE1 ! FDE Length .LLASFDE1: .uaword .LLASFDE1-.LLframe1 ! FDE CIE offset #ifdef HAVE_AS_SPARC_UA_PCREL .uaword %r_disp32(.LLFB1) .uaword .LLFE1-.LLFB1 ! FDE address range #else .align 8 .xword .LLFB1 .uaxword .LLFE1-.LLFB1 ! FDE address range #endif .byte 0x0 ! uleb128 0x0; Augmentation size .byte 0x4 ! DW_CFA_advance_loc4 .uaword .LLCFI0-.LLFB1 .byte 0xd ! DW_CFA_def_cfa_register .byte 0x1e ! uleb128 0x1e .byte 0x2d ! DW_CFA_GNU_window_save .byte 0x9 ! DW_CFA_register .byte 0xf ! uleb128 0xf .byte 0x1f ! uleb128 0x1f .align 8 .LLEFDE1: .LLSFDE2: .uaword .LLEFDE2-.LLASFDE2 ! FDE Length .LLASFDE2: .uaword .LLASFDE2-.LLframe1 ! FDE CIE offset #ifdef HAVE_AS_SPARC_UA_PCREL .uaword %r_disp32(.LLFB2) .uaword .LLFE2-.LLFB2 ! FDE address range #else .align 8 .xword .LLFB2 .uaxword .LLFE2-.LLFB2 ! FDE address range #endif .byte 0x0 ! uleb128 0x0; Augmentation size .byte 0x4 ! DW_CFA_advance_loc4 .uaword .LLCFI1-.LLFB2 .byte 0xd ! DW_CFA_def_cfa_register .byte 0x1e ! uleb128 0x1e .byte 0x2d ! DW_CFA_GNU_window_save .byte 0x9 ! DW_CFA_register .byte 0xf ! uleb128 0xf .byte 0x1f ! uleb128 0x1f .align 8 .LLEFDE2: #endif #ifdef __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/sparc/v8.S0000644000175000017500000001635613204034553015625 0ustar daviddavid/* ----------------------------------------------------------------------- v8.S - Copyright (c) 2013 The Written Word, Inc. Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. SPARC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #define STACKFRAME 96 /* Minimum stack framesize for SPARC */ #define ARGS (64+4) /* Offset of register area in frame */ #ifndef __GNUC__ .text .align 8 .globl ffi_flush_icache .globl _ffi_flush_icache ffi_flush_icache: _ffi_flush_icache: add %o0, %o1, %o2 #ifdef SPARC64 1: flush %o0 #else 1: iflush %o0 #endif add %o0, 8, %o0 cmp %o0, %o2 blt 1b nop nop nop nop nop retl nop .ffi_flush_icache_end: .size ffi_flush_icache,.ffi_flush_icache_end-ffi_flush_icache #endif .text .align 8 .globl ffi_call_v8 .globl _ffi_call_v8 ffi_call_v8: _ffi_call_v8: .LLFB1: save %sp, -STACKFRAME, %sp .LLCFI0: sub %sp, %i2, %sp ! alloca() space in stack for frame to set up add %sp, STACKFRAME, %l0 ! %l0 has start of ! frame to set up mov %l0, %o0 ! call routine to set up frame call %i0 mov %i1, %o1 ! (delay) ld [%l0+ARGS], %o0 ! call foreign function ld [%l0+ARGS+4], %o1 ld [%l0+ARGS+8], %o2 ld [%l0+ARGS+12], %o3 ld [%l0+ARGS+16], %o4 ld [%l0+ARGS+20], %o5 call %i5 mov %l0, %sp ! (delay) switch to frame nop ! STRUCT returning functions skip 12 instead of 8 bytes ! If the return value pointer is NULL, assume no return value. tst %i4 bz done nop cmp %i3, FFI_TYPE_INT be,a done st %o0, [%i4] ! (delay) cmp %i3, FFI_TYPE_FLOAT be,a done st %f0, [%i4+0] ! (delay) cmp %i3, FFI_TYPE_DOUBLE be,a double st %f0, [%i4+0] ! (delay) cmp %i3, FFI_TYPE_SINT8 be,a sint8 sll %o0, 24, %o0 ! (delay) cmp %i3, FFI_TYPE_UINT8 be,a uint8 sll %o0, 24, %o0 ! (delay) cmp %i3, FFI_TYPE_SINT16 be,a sint16 sll %o0, 16, %o0 ! (delay) cmp %i3, FFI_TYPE_UINT16 be,a uint16 sll %o0, 16, %o0 ! (delay) cmp %i3, FFI_TYPE_SINT64 be,a longlong st %o0, [%i4+0] ! (delay) done: ret restore double: st %f1, [%i4+4] ret restore sint8: sra %o0, 24, %o0 st %o0, [%i4+0] ret restore uint8: srl %o0, 24, %o0 st %o0, [%i4+0] ret restore sint16: sra %o0, 16, %o0 st %o0, [%i4+0] ret restore uint16: srl %o0, 16, %o0 st %o0, [%i4+0] ret restore longlong: st %o1, [%i4+4] ret restore .LLFE1: .ffi_call_v8_end: .size ffi_call_v8,.ffi_call_v8_end-ffi_call_v8 #undef STACKFRAME #define STACKFRAME 104 /* 16*4 register window + 1*4 struct return + 6*4 args backing store + 3*4 locals */ /* ffi_closure_v8(...) Receives the closure argument in %g2. */ .text .align 8 .globl ffi_closure_v8 ffi_closure_v8: #ifdef HAVE_AS_REGISTER_PSEUDO_OP .register %g2, #scratch #endif .LLFB2: ! Reserve frame space for all arguments in case ! we need to align them on a 8-byte boundary. ld [%g2+FFI_TRAMPOLINE_SIZE], %g1 ld [%g1+4], %g1 sll %g1, 3, %g1 add %g1, STACKFRAME, %g1 ! %g1 == STACKFRAME + 8*nargs neg %g1 save %sp, %g1, %sp .LLCFI1: ! Store all of the potential argument registers in va_list format. st %i0, [%fp+68+0] st %i1, [%fp+68+4] st %i2, [%fp+68+8] st %i3, [%fp+68+12] st %i4, [%fp+68+16] st %i5, [%fp+68+20] ! Call ffi_closure_sparc_inner to do the bulk of the work. mov %g2, %o0 add %fp, -8, %o1 add %fp, 64, %o2 call ffi_closure_sparc_inner_v8 add %fp, -16, %o3 ! Load up the return value in the proper type. ! See ffi_prep_cif_machdep for the list of cases. cmp %o0, FFI_TYPE_VOID be done1 cmp %o0, FFI_TYPE_INT be done1 ld [%fp-8], %i0 cmp %o0, FFI_TYPE_FLOAT be,a done1 ld [%fp-8], %f0 cmp %o0, FFI_TYPE_DOUBLE be,a done1 ldd [%fp-8], %f0 #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE cmp %o0, FFI_TYPE_LONGDOUBLE be done2 #endif cmp %o0, FFI_TYPE_STRUCT be done2 cmp %o0, FFI_TYPE_SINT64 be,a done1 ldd [%fp-8], %i0 cmp %o0, FFI_TYPE_UINT64 be,a done1 ldd [%fp-8], %i0 ld [%fp-8], %i0 done1: jmp %i7+8 restore done2: ! Skip 'unimp'. jmp %i7+12 restore .LLFE2: .ffi_closure_v8_end: .size ffi_closure_v8,.ffi_closure_v8_end-ffi_closure_v8 #ifdef SPARC64 #define WS 8 #define nword xword #define uanword uaxword #else #define WS 4 #define nword long #define uanword uaword #endif #ifdef HAVE_RO_EH_FRAME .section ".eh_frame",#alloc #else .section ".eh_frame",#alloc,#write #endif .LLframe1: .uaword .LLECIE1-.LLSCIE1 ! Length of Common Information Entry .LLSCIE1: .uaword 0x0 ! CIE Identifier Tag .byte 0x1 ! CIE Version .ascii "zR\0" ! CIE Augmentation .byte 0x1 ! uleb128 0x1; CIE Code Alignment Factor .byte 0x80-WS ! sleb128 -WS; CIE Data Alignment Factor .byte 0xf ! CIE RA Column .byte 0x1 ! uleb128 0x1; Augmentation size #ifdef HAVE_AS_SPARC_UA_PCREL .byte 0x1b ! FDE Encoding (pcrel sdata4) #else .byte 0x50 ! FDE Encoding (aligned absolute) #endif .byte 0xc ! DW_CFA_def_cfa .byte 0xe ! uleb128 0xe .byte 0x0 ! uleb128 0x0 .align WS .LLECIE1: .LLSFDE1: .uaword .LLEFDE1-.LLASFDE1 ! FDE Length .LLASFDE1: .uaword .LLASFDE1-.LLframe1 ! FDE CIE offset #ifdef HAVE_AS_SPARC_UA_PCREL .uaword %r_disp32(.LLFB1) .uaword .LLFE1-.LLFB1 ! FDE address range #else .align WS .nword .LLFB1 .uanword .LLFE1-.LLFB1 ! FDE address range #endif .byte 0x0 ! uleb128 0x0; Augmentation size .byte 0x4 ! DW_CFA_advance_loc4 .uaword .LLCFI0-.LLFB1 .byte 0xd ! DW_CFA_def_cfa_register .byte 0x1e ! uleb128 0x1e .byte 0x2d ! DW_CFA_GNU_window_save .byte 0x9 ! DW_CFA_register .byte 0xf ! uleb128 0xf .byte 0x1f ! uleb128 0x1f .align WS .LLEFDE1: .LLSFDE2: .uaword .LLEFDE2-.LLASFDE2 ! FDE Length .LLASFDE2: .uaword .LLASFDE2-.LLframe1 ! FDE CIE offset #ifdef HAVE_AS_SPARC_UA_PCREL .uaword %r_disp32(.LLFB2) .uaword .LLFE2-.LLFB2 ! FDE address range #else .align WS .nword .LLFB2 .uanword .LLFE2-.LLFB2 ! FDE address range #endif .byte 0x0 ! uleb128 0x0; Augmentation size .byte 0x4 ! DW_CFA_advance_loc4 .uaword .LLCFI1-.LLFB2 .byte 0xd ! DW_CFA_def_cfa_register .byte 0x1e ! uleb128 0x1e .byte 0x2d ! DW_CFA_GNU_window_save .byte 0x9 ! DW_CFA_register .byte 0xf ! uleb128 0xf .byte 0x1f ! uleb128 0x1f .align WS .LLEFDE2: #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/cris/0000755000175000017500000000000013204034553014761 5ustar daviddavidpolyml-5.7.1/libffi/src/cris/ffitarget.h0000644000175000017500000000407313204034553017111 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for CRIS. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE 36 #define FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE (7*4) #define FFI_TRAMPOLINE_SIZE \ (FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE + FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE) #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/cris/ffi.c0000644000175000017500000002314713204034553015700 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1998 Cygnus Solutions Copyright (c) 2004 Simon Posnjak Copyright (c) 2005 Axis Communications AB Copyright (C) 2007 Free Software Foundation, Inc. CRIS Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG) static ffi_status initialize_aggregate_packed_struct (ffi_type * arg) { ffi_type **ptr; FFI_ASSERT (arg != NULL); FFI_ASSERT (arg->elements != NULL); FFI_ASSERT (arg->size == 0); FFI_ASSERT (arg->alignment == 0); ptr = &(arg->elements[0]); while ((*ptr) != NULL) { if (((*ptr)->size == 0) && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) return FFI_BAD_TYPEDEF; FFI_ASSERT (ffi_type_test ((*ptr))); arg->size += (*ptr)->size; arg->alignment = (arg->alignment > (*ptr)->alignment) ? arg->alignment : (*ptr)->alignment; ptr++; } if (arg->size == 0) return FFI_BAD_TYPEDEF; else return FFI_OK; } int ffi_prep_args (char *stack, extended_cif * ecif) { unsigned int i; unsigned int struct_count = 0; void **p_argv; char *argp; ffi_type **p_arg; argp = stack; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++) { size_t z; switch ((*p_arg)->type) { case FFI_TYPE_STRUCT: { z = (*p_arg)->size; if (z <= 4) { memcpy (argp, *p_argv, z); z = 4; } else if (z <= 8) { memcpy (argp, *p_argv, z); z = 8; } else { unsigned int uiLocOnStack; z = sizeof (void *); uiLocOnStack = 4 * ecif->cif->nargs + struct_count; struct_count = struct_count + (*p_arg)->size; *(unsigned int *) argp = (unsigned int) (UINT32 *) (stack + uiLocOnStack); memcpy ((stack + uiLocOnStack), *p_argv, (*p_arg)->size); } break; } default: z = (*p_arg)->size; if (z < sizeof (int)) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv); break; default: FFI_ASSERT (0); } z = sizeof (int); } else if (z == sizeof (int)) *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); else memcpy (argp, *p_argv, z); break; } p_argv++; argp += z; } return (struct_count); } ffi_status FFI_HIDDEN ffi_prep_cif_core (ffi_cif * cif, ffi_abi abi, unsigned int isvariadic, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type * rtype, ffi_type ** atypes) { unsigned bytes = 0; unsigned int i; ffi_type **ptr; FFI_ASSERT (cif != NULL); FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); FFI_ASSERT(nfixedargs <= ntotalargs); FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI); cif->abi = abi; cif->arg_types = atypes; cif->nargs = ntotalargs; cif->rtype = rtype; cif->flags = 0; if ((cif->rtype->size == 0) && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK)) return FFI_BAD_TYPEDEF; FFI_ASSERT_VALID_TYPE (cif->rtype); for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { if (((*ptr)->size == 0) && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) return FFI_BAD_TYPEDEF; FFI_ASSERT_VALID_TYPE (*ptr); if (((*ptr)->alignment - 1) & bytes) bytes = ALIGN (bytes, (*ptr)->alignment); if ((*ptr)->type == FFI_TYPE_STRUCT) { if ((*ptr)->size > 8) { bytes += (*ptr)->size; bytes += sizeof (void *); } else { if ((*ptr)->size > 4) bytes += 8; else bytes += 4; } } else bytes += STACK_ARG_SIZE ((*ptr)->size); } cif->bytes = bytes; return ffi_prep_cif_machdep (cif); } ffi_status ffi_prep_cif_machdep (ffi_cif * cif) { switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_STRUCT: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = (unsigned) cif->rtype->type; break; default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } extern void ffi_call_SYSV (int (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn) ()) __attribute__ ((__visibility__ ("hidden"))); void ffi_call (ffi_cif * cif, void (*fn) (), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca (cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV (ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } /* Because the following variables are not exported outside libffi, we mark them hidden. */ /* Assembly code for the jump stub. */ extern const char ffi_cris_trampoline_template[] __attribute__ ((__visibility__ ("hidden"))); /* Offset into ffi_cris_trampoline_template of where to put the ffi_prep_closure_inner function. */ extern const int ffi_cris_trampoline_fn_offset __attribute__ ((__visibility__ ("hidden"))); /* Offset into ffi_cris_trampoline_template of where to put the closure data. */ extern const int ffi_cris_trampoline_closure_offset __attribute__ ((__visibility__ ("hidden"))); /* This function is sibling-called (jumped to) by the closure trampoline. We get R10..R13 at PARAMS[0..3] and a copy of [SP] at PARAMS[4] to simplify handling of a straddling parameter. A copy of R9 is at PARAMS[5] and SP at PARAMS[6]. These parameters are put at the appropriate place in CLOSURE which is then executed and the return value is passed back to the caller. */ static unsigned long long ffi_prep_closure_inner (void **params, ffi_closure* closure) { char *register_args = (char *) params; void *struct_ret = params[5]; char *stack_args = params[6]; char *ptr = register_args; ffi_cif *cif = closure->cif; ffi_type **arg_types = cif->arg_types; /* Max room needed is number of arguments as 64-bit values. */ void **avalue = alloca (closure->cif->nargs * sizeof(void *)); int i; int doing_regs; long long llret = 0; /* Find the address of each argument. */ for (i = 0, doing_regs = 1; i < cif->nargs; i++) { /* Types up to and including 8 bytes go by-value. */ if (arg_types[i]->size <= 4) { avalue[i] = ptr; ptr += 4; } else if (arg_types[i]->size <= 8) { avalue[i] = ptr; ptr += 8; } else { FFI_ASSERT (arg_types[i]->type == FFI_TYPE_STRUCT); /* Passed by-reference, so copy the pointer. */ avalue[i] = *(void **) ptr; ptr += 4; } /* If we've handled more arguments than fit in registers, start looking at the those passed on the stack. Step over the first one if we had a straddling parameter. */ if (doing_regs && ptr >= register_args + 4*4) { ptr = stack_args + ((ptr > register_args + 4*4) ? 4 : 0); doing_regs = 0; } } /* Invoke the closure. */ (closure->fun) (cif, cif->rtype->type == FFI_TYPE_STRUCT /* The caller allocated space for the return structure, and passed a pointer to this space in R9. */ ? struct_ret /* We take advantage of being able to ignore that the high part isn't set if the return value is not in R10:R11, but in R10 only. */ : (void *) &llret, avalue, closure->user_data); return llret; } /* API function: Prepare the trampoline. */ ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif *, void *, void **, void*), void *user_data, void *codeloc) { void *innerfn = ffi_prep_closure_inner; FFI_ASSERT (cif->abi == FFI_SYSV); closure->cif = cif; closure->user_data = user_data; closure->fun = fun; memcpy (closure->tramp, ffi_cris_trampoline_template, FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE); memcpy (closure->tramp + ffi_cris_trampoline_fn_offset, &innerfn, sizeof (void *)); memcpy (closure->tramp + ffi_cris_trampoline_closure_offset, &codeloc, sizeof (void *)); return FFI_OK; } polyml-5.7.1/libffi/src/cris/sysv.S0000644000175000017500000001254713204034553016122 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2004 Simon Posnjak Copyright (c) 2005 Axis Communications AB CRIS Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #define CONCAT(x,y) x ## y #define XCONCAT(x,y) CONCAT (x, y) #define L(x) XCONCAT (__USER_LABEL_PREFIX__, x) .text ;; OK, when we get called we should have this (according to ;; AXIS ETRAX 100LX Programmer's Manual chapter 6.3). ;; ;; R10: ffi_prep_args (func. pointer) ;; R11: &ecif ;; R12: cif->bytes ;; R13: fig->flags ;; sp+0: ecif.rvalue ;; sp+4: fn (function pointer to the function that we need to call) .globl L(ffi_call_SYSV) .type L(ffi_call_SYSV),@function .hidden L(ffi_call_SYSV) L(ffi_call_SYSV): ;; Save the regs to the stack. push $srp ;; Used for stack pointer saving. push $r6 ;; Used for function address pointer. push $r7 ;; Used for stack pointer saving. push $r8 ;; We save fig->flags to stack we will need them after we ;; call The Function. push $r13 ;; Saving current stack pointer. move.d $sp,$r8 move.d $sp,$r6 ;; Move address of ffi_prep_args to r13. move.d $r10,$r13 ;; Make room on the stack for the args of fn. sub.d $r12,$sp ;; Function void ffi_prep_args(char *stack, extended_cif *ecif) parameters are: ;; r10 <-- stack pointer ;; r11 <-- &ecif (already there) move.d $sp,$r10 ;; Call the function. jsr $r13 ;; Save the size of the structures which are passed on stack. move.d $r10,$r7 ;; Move first four args in to r10..r13. move.d [$sp+0],$r10 move.d [$sp+4],$r11 move.d [$sp+8],$r12 move.d [$sp+12],$r13 ;; Adjust the stack and check if any parameters are given on stack. addq 16,$sp sub.d $r7,$r6 cmp.d $sp,$r6 bpl go_on nop go_on_no_params_on_stack: move.d $r6,$sp go_on: ;; Discover if we need to put rval address in to r9. move.d [$r8+0],$r7 cmpq FFI_TYPE_STRUCT,$r7 bne call_now nop ;; Move rval address to $r9. move.d [$r8+20],$r9 call_now: ;; Move address of The Function in to r7. move.d [$r8+24],$r7 ;; Call The Function. jsr $r7 ;; Reset stack. move.d $r8,$sp ;; Load rval type (fig->flags) in to r13. pop $r13 ;; Detect rval type. cmpq FFI_TYPE_VOID,$r13 beq epilogue cmpq FFI_TYPE_STRUCT,$r13 beq epilogue cmpq FFI_TYPE_DOUBLE,$r13 beq return_double_or_longlong cmpq FFI_TYPE_UINT64,$r13 beq return_double_or_longlong cmpq FFI_TYPE_SINT64,$r13 beq return_double_or_longlong nop ;; Just return the 32 bit value. ba return nop return_double_or_longlong: ;; Load half of the rval to r10 and the other half to r11. move.d [$sp+16],$r13 move.d $r10,[$r13] addq 4,$r13 move.d $r11,[$r13] ba epilogue nop return: ;; Load the rval to r10. move.d [$sp+16],$r13 move.d $r10,[$r13] epilogue: pop $r8 pop $r7 pop $r6 Jump [$sp+] .size ffi_call_SYSV,.-ffi_call_SYSV /* Save R10..R13 into an array, somewhat like varargs. Copy the next argument too, to simplify handling of any straddling parameter. Save R9 and SP after those. Jump to function handling the rest. Since this is a template, copied and the main function filled in by the user. */ .globl L(ffi_cris_trampoline_template) .type L(ffi_cris_trampoline_template),@function .hidden L(ffi_cris_trampoline_template) L(ffi_cris_trampoline_template): 0: /* The value we get for "PC" is right after the prefix instruction, two bytes from the beginning, i.e. 0b+2. */ move.d $r10,[$pc+2f-(0b+2)] move.d $pc,$r10 1: addq 2f-1b+4,$r10 move.d $r11,[$r10+] move.d $r12,[$r10+] move.d $r13,[$r10+] move.d [$sp],$r11 move.d $r11,[$r10+] move.d $r9,[$r10+] move.d $sp,[$r10+] subq FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE,$r10 move.d 0,$r11 3: jump 0 2: .size ffi_cris_trampoline_template,.-0b /* This macro create a constant usable as "extern const int \name" in C from within libffi, when \name has no prefix decoration. */ .macro const name,value .globl \name .type \name,@object .hidden \name \name: .dword \value .size \name,4 .endm /* Constants for offsets within the trampoline. We could do this with just symbols, avoiding memory contents and memory accesses, but the C usage code would look a bit stranger. */ const L(ffi_cris_trampoline_fn_offset),2b-4-0b const L(ffi_cris_trampoline_closure_offset),3b-4-0b polyml-5.7.1/libffi/src/raw_api.c0000644000175000017500000001420013204034553015604 0ustar daviddavid/* ----------------------------------------------------------------------- raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc. Author: Kresten Krab Thorup Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* This file defines generic functions for use with the raw api. */ #include #include #if !FFI_NO_RAW_API size_t ffi_raw_size (ffi_cif *cif) { size_t result = 0; int i; ffi_type **at = cif->arg_types; for (i = cif->nargs-1; i >= 0; i--, at++) { #if !FFI_NO_STRUCTS if ((*at)->type == FFI_TYPE_STRUCT) result += ALIGN (sizeof (void*), FFI_SIZEOF_ARG); else #endif result += ALIGN ((*at)->size, FFI_SIZEOF_ARG); } return result; } void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args) { unsigned i; ffi_type **tp = cif->arg_types; #if WORDS_BIGENDIAN for (i = 0; i < cif->nargs; i++, tp++, args++) { switch ((*tp)->type) { case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 1); break; case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 2); break; #if FFI_SIZEOF_ARG >= 4 case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 4); break; #endif #if !FFI_NO_STRUCTS case FFI_TYPE_STRUCT: *args = (raw++)->ptr; break; #endif case FFI_TYPE_COMPLEX: *args = (raw++)->ptr; break; case FFI_TYPE_POINTER: *args = (void*) &(raw++)->ptr; break; default: *args = raw; raw += ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; } } #else /* WORDS_BIGENDIAN */ #if !PDP /* then assume little endian */ for (i = 0; i < cif->nargs; i++, tp++, args++) { #if !FFI_NO_STRUCTS if ((*tp)->type == FFI_TYPE_STRUCT) { *args = (raw++)->ptr; } else #endif if ((*tp)->type == FFI_TYPE_COMPLEX) { *args = (raw++)->ptr; } else { *args = (void*) raw; raw += ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*); } } #else #error "pdp endian not supported" #endif /* ! PDP */ #endif /* WORDS_BIGENDIAN */ } void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw) { unsigned i; ffi_type **tp = cif->arg_types; for (i = 0; i < cif->nargs; i++, tp++, args++) { switch ((*tp)->type) { case FFI_TYPE_UINT8: (raw++)->uint = *(UINT8*) (*args); break; case FFI_TYPE_SINT8: (raw++)->sint = *(SINT8*) (*args); break; case FFI_TYPE_UINT16: (raw++)->uint = *(UINT16*) (*args); break; case FFI_TYPE_SINT16: (raw++)->sint = *(SINT16*) (*args); break; #if FFI_SIZEOF_ARG >= 4 case FFI_TYPE_UINT32: (raw++)->uint = *(UINT32*) (*args); break; case FFI_TYPE_SINT32: (raw++)->sint = *(SINT32*) (*args); break; #endif #if !FFI_NO_STRUCTS case FFI_TYPE_STRUCT: (raw++)->ptr = *args; break; #endif case FFI_TYPE_COMPLEX: (raw++)->ptr = *args; break; case FFI_TYPE_POINTER: (raw++)->ptr = **(void***) args; break; default: memcpy ((void*) raw->data, (void*)*args, (*tp)->size); raw += ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; } } } #if !FFI_NATIVE_RAW_API /* This is a generic definition of ffi_raw_call, to be used if the * native system does not provide a machine-specific implementation. * Having this, allows code to be written for the raw API, without * the need for system-specific code to handle input in that format; * these following couple of functions will handle the translation forth * and back automatically. */ void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *raw) { void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); ffi_raw_to_ptrarray (cif, raw, avalue); ffi_call (cif, fn, rvalue, avalue); } #if FFI_CLOSURES /* base system provides closures */ static void ffi_translate_args (ffi_cif *cif, void *rvalue, void **avalue, void *user_data) { ffi_raw *raw = (ffi_raw*)alloca (ffi_raw_size (cif)); ffi_raw_closure *cl = (ffi_raw_closure*)user_data; ffi_ptrarray_to_raw (cif, avalue, raw); (*cl->fun) (cif, rvalue, raw, cl->user_data); } ffi_status ffi_prep_raw_closure_loc (ffi_raw_closure* cl, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data, void *codeloc) { ffi_status status; status = ffi_prep_closure_loc ((ffi_closure*) cl, cif, &ffi_translate_args, codeloc, codeloc); if (status == FFI_OK) { cl->fun = fun; cl->user_data = user_data; } return status; } #endif /* FFI_CLOSURES */ #endif /* !FFI_NATIVE_RAW_API */ #if FFI_CLOSURES /* Again, here is the generic version of ffi_prep_raw_closure, which * will install an intermediate "hub" for translation of arguments from * the pointer-array format, to the raw format */ ffi_status ffi_prep_raw_closure (ffi_raw_closure* cl, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data) { return ffi_prep_raw_closure_loc (cl, cif, fun, user_data, cl); } #endif /* FFI_CLOSURES */ #endif /* !FFI_NO_RAW_API */ polyml-5.7.1/libffi/src/s390/0000755000175000017500000000000013204034553014517 5ustar daviddavidpolyml-5.7.1/libffi/src/s390/ffitarget.h0000644000175000017500000000426613204034553016653 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for S390. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #if defined (__s390x__) #ifndef S390X #define S390X #endif #endif /* ---- System specific configurations ----------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION #define FFI_TARGET_HAS_COMPLEX_TYPE /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #ifdef S390X #define FFI_TRAMPOLINE_SIZE 32 #else #define FFI_TRAMPOLINE_SIZE 16 #endif #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/s390/ffi.c0000644000175000017500000005536513204034553015445 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2000, 2007 Software AG Copyright (c) 2008 Red Hat, Inc S390 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /*====================================================================*/ /* Includes */ /* -------- */ /*====================================================================*/ #include #include #include #include /*====================== End of Includes =============================*/ /*====================================================================*/ /* Defines */ /* ------- */ /*====================================================================*/ /* Maximum number of GPRs available for argument passing. */ #define MAX_GPRARGS 5 /* Maximum number of FPRs available for argument passing. */ #ifdef __s390x__ #define MAX_FPRARGS 4 #else #define MAX_FPRARGS 2 #endif /* Round to multiple of 16. */ #define ROUND_SIZE(size) (((size) + 15) & ~15) /* If these values change, sysv.S must be adapted! */ #define FFI390_RET_VOID 0 #define FFI390_RET_STRUCT 1 #define FFI390_RET_FLOAT 2 #define FFI390_RET_DOUBLE 3 #define FFI390_RET_INT32 4 #define FFI390_RET_INT64 5 /*===================== End of Defines ===============================*/ /*====================================================================*/ /* Prototypes */ /* ---------- */ /*====================================================================*/ static void ffi_prep_args (unsigned char *, extended_cif *); void #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) __attribute__ ((visibility ("hidden"))) #endif ffi_closure_helper_SYSV (ffi_closure *, unsigned long *, unsigned long long *, unsigned long *); /*====================== End of Prototypes ===========================*/ /*====================================================================*/ /* Externals */ /* --------- */ /*====================================================================*/ extern void ffi_call_SYSV(unsigned, extended_cif *, void (*)(unsigned char *, extended_cif *), unsigned, void *, void (*fn)(void)); extern void ffi_closure_SYSV(void); /*====================== End of Externals ============================*/ /*====================================================================*/ /* */ /* Name - ffi_check_struct_type. */ /* */ /* Function - Determine if a structure can be passed within a */ /* general purpose or floating point register. */ /* */ /*====================================================================*/ static int ffi_check_struct_type (ffi_type *arg) { size_t size = arg->size; /* If the struct has just one element, look at that element to find out whether to consider the struct as floating point. */ while (arg->type == FFI_TYPE_STRUCT && arg->elements[0] && !arg->elements[1]) arg = arg->elements[0]; /* Structs of size 1, 2, 4, and 8 are passed in registers, just like the corresponding int/float types. */ switch (size) { case 1: return FFI_TYPE_UINT8; case 2: return FFI_TYPE_UINT16; case 4: if (arg->type == FFI_TYPE_FLOAT) return FFI_TYPE_FLOAT; else return FFI_TYPE_UINT32; case 8: if (arg->type == FFI_TYPE_DOUBLE) return FFI_TYPE_DOUBLE; else return FFI_TYPE_UINT64; default: break; } /* Other structs are passed via a pointer to the data. */ return FFI_TYPE_POINTER; } /*======================== End of Routine ============================*/ /*====================================================================*/ /* */ /* Name - ffi_prep_args. */ /* */ /* Function - Prepare parameters for call to function. */ /* */ /* ffi_prep_args is called by the assembly routine once stack space */ /* has been allocated for the function's arguments. */ /* */ /*====================================================================*/ static void ffi_prep_args (unsigned char *stack, extended_cif *ecif) { /* The stack space will be filled with those areas: FPR argument register save area (highest addresses) GPR argument register save area temporary struct copies overflow argument area (lowest addresses) We set up the following pointers: p_fpr: bottom of the FPR area (growing upwards) p_gpr: bottom of the GPR area (growing upwards) p_ov: bottom of the overflow area (growing upwards) p_struct: top of the struct copy area (growing downwards) All areas are kept aligned to twice the word size. */ int gpr_off = ecif->cif->bytes; int fpr_off = gpr_off + ROUND_SIZE (MAX_GPRARGS * sizeof (long)); unsigned long long *p_fpr = (unsigned long long *)(stack + fpr_off); unsigned long *p_gpr = (unsigned long *)(stack + gpr_off); unsigned char *p_struct = (unsigned char *)p_gpr; unsigned long *p_ov = (unsigned long *)stack; int n_fpr = 0; int n_gpr = 0; int n_ov = 0; ffi_type **ptr; void **p_argv = ecif->avalue; int i; /* If we returning a structure then we set the first parameter register to the address of where we are returning this structure. */ if (ecif->cif->flags == FFI390_RET_STRUCT) p_gpr[n_gpr++] = (unsigned long) ecif->rvalue; /* Now for the arguments. */ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; i > 0; i--, ptr++, p_argv++) { void *arg = *p_argv; int type = (*ptr)->type; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE /* 16-byte long double is passed like a struct. */ if (type == FFI_TYPE_LONGDOUBLE) type = FFI_TYPE_STRUCT; #endif /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) { if (type == FFI_TYPE_COMPLEX) type = FFI_TYPE_POINTER; else type = ffi_check_struct_type (*ptr); /* If we pass the struct via pointer, copy the data. */ if (type == FFI_TYPE_POINTER) { p_struct -= ROUND_SIZE ((*ptr)->size); memcpy (p_struct, (char *)arg, (*ptr)->size); arg = &p_struct; } } /* Now handle all primitive int/pointer/float data types. */ switch (type) { case FFI_TYPE_DOUBLE: if (n_fpr < MAX_FPRARGS) p_fpr[n_fpr++] = *(unsigned long long *) arg; else #ifdef __s390x__ p_ov[n_ov++] = *(unsigned long *) arg; #else p_ov[n_ov++] = ((unsigned long *) arg)[0], p_ov[n_ov++] = ((unsigned long *) arg)[1]; #endif break; case FFI_TYPE_FLOAT: if (n_fpr < MAX_FPRARGS) p_fpr[n_fpr++] = (long long) *(unsigned int *) arg << 32; else p_ov[n_ov++] = *(unsigned int *) arg; break; case FFI_TYPE_POINTER: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = (unsigned long)*(unsigned char **) arg; else p_ov[n_ov++] = (unsigned long)*(unsigned char **) arg; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #ifdef __s390x__ if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(unsigned long *) arg; else p_ov[n_ov++] = *(unsigned long *) arg; #else if (n_gpr == MAX_GPRARGS-1) n_gpr = MAX_GPRARGS; if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = ((unsigned long *) arg)[0], p_gpr[n_gpr++] = ((unsigned long *) arg)[1]; else p_ov[n_ov++] = ((unsigned long *) arg)[0], p_ov[n_ov++] = ((unsigned long *) arg)[1]; #endif break; case FFI_TYPE_UINT32: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(unsigned int *) arg; else p_ov[n_ov++] = *(unsigned int *) arg; break; case FFI_TYPE_INT: case FFI_TYPE_SINT32: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(signed int *) arg; else p_ov[n_ov++] = *(signed int *) arg; break; case FFI_TYPE_UINT16: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(unsigned short *) arg; else p_ov[n_ov++] = *(unsigned short *) arg; break; case FFI_TYPE_SINT16: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(signed short *) arg; else p_ov[n_ov++] = *(signed short *) arg; break; case FFI_TYPE_UINT8: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(unsigned char *) arg; else p_ov[n_ov++] = *(unsigned char *) arg; break; case FFI_TYPE_SINT8: if (n_gpr < MAX_GPRARGS) p_gpr[n_gpr++] = *(signed char *) arg; else p_ov[n_ov++] = *(signed char *) arg; break; default: FFI_ASSERT (0); break; } } } /*======================== End of Routine ============================*/ /*====================================================================*/ /* */ /* Name - ffi_prep_cif_machdep. */ /* */ /* Function - Perform machine dependent CIF processing. */ /* */ /*====================================================================*/ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { size_t struct_size = 0; int n_gpr = 0; int n_fpr = 0; int n_ov = 0; ffi_type **ptr; int i; /* Determine return value handling. */ switch (cif->rtype->type) { /* Void is easy. */ case FFI_TYPE_VOID: cif->flags = FFI390_RET_VOID; break; /* Structures and complex are returned via a hidden pointer. */ case FFI_TYPE_STRUCT: case FFI_TYPE_COMPLEX: cif->flags = FFI390_RET_STRUCT; n_gpr++; /* We need one GPR to pass the pointer. */ break; /* Floating point values are returned in fpr 0. */ case FFI_TYPE_FLOAT: cif->flags = FFI390_RET_FLOAT; break; case FFI_TYPE_DOUBLE: cif->flags = FFI390_RET_DOUBLE; break; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: cif->flags = FFI390_RET_STRUCT; n_gpr++; break; #endif /* Integer values are returned in gpr 2 (and gpr 3 for 64-bit values on 31-bit machines). */ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: cif->flags = FFI390_RET_INT64; break; case FFI_TYPE_POINTER: case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: /* These are to be extended to word size. */ #ifdef __s390x__ cif->flags = FFI390_RET_INT64; #else cif->flags = FFI390_RET_INT32; #endif break; default: FFI_ASSERT (0); break; } /* Now for the arguments. */ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { int type = (*ptr)->type; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE /* 16-byte long double is passed like a struct. */ if (type == FFI_TYPE_LONGDOUBLE) type = FFI_TYPE_STRUCT; #endif /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) { if (type == FFI_TYPE_COMPLEX) type = FFI_TYPE_POINTER; else type = ffi_check_struct_type (*ptr); /* If we pass the struct via pointer, we must reserve space to copy its data for proper call-by-value semantics. */ if (type == FFI_TYPE_POINTER) struct_size += ROUND_SIZE ((*ptr)->size); } /* Now handle all primitive int/float data types. */ switch (type) { /* The first MAX_FPRARGS floating point arguments go in FPRs, the rest overflow to the stack. */ case FFI_TYPE_DOUBLE: if (n_fpr < MAX_FPRARGS) n_fpr++; else n_ov += sizeof (double) / sizeof (long); break; case FFI_TYPE_FLOAT: if (n_fpr < MAX_FPRARGS) n_fpr++; else n_ov++; break; /* On 31-bit machines, 64-bit integers are passed in GPR pairs, if one is still available, or else on the stack. If only one register is free, skip the register (it won't be used for any subsequent argument either). */ #ifndef __s390x__ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: if (n_gpr == MAX_GPRARGS-1) n_gpr = MAX_GPRARGS; if (n_gpr < MAX_GPRARGS) n_gpr += 2; else n_ov += 2; break; #endif /* Everything else is passed in GPRs (until MAX_GPRARGS have been used) or overflows to the stack. */ default: if (n_gpr < MAX_GPRARGS) n_gpr++; else n_ov++; break; } } /* Total stack space as required for overflow arguments and temporary structure copies. */ cif->bytes = ROUND_SIZE (n_ov * sizeof (long)) + struct_size; return FFI_OK; } /*======================== End of Routine ============================*/ /*====================================================================*/ /* */ /* Name - ffi_call. */ /* */ /* Function - Call the FFI routine. */ /* */ /*====================================================================*/ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { int ret_type = cif->flags; extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; ecif.rvalue = rvalue; /* If we don't have a return value, we need to fake one. */ if (rvalue == NULL) { if (ret_type == FFI390_RET_STRUCT) ecif.rvalue = alloca (cif->rtype->size); else ret_type = FFI390_RET_VOID; } switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV (cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn); break; default: FFI_ASSERT (0); break; } } /*======================== End of Routine ============================*/ /*====================================================================*/ /* */ /* Name - ffi_closure_helper_SYSV. */ /* */ /* Function - Call a FFI closure target function. */ /* */ /*====================================================================*/ void ffi_closure_helper_SYSV (ffi_closure *closure, unsigned long *p_gpr, unsigned long long *p_fpr, unsigned long *p_ov) { unsigned long long ret_buffer; void *rvalue = &ret_buffer; void **avalue; void **p_arg; int n_gpr = 0; int n_fpr = 0; int n_ov = 0; ffi_type **ptr; int i; /* Allocate buffer for argument list pointers. */ p_arg = avalue = alloca (closure->cif->nargs * sizeof (void *)); /* If we returning a structure, pass the structure address directly to the target function. Otherwise, have the target function store the return value to the GPR save area. */ if (closure->cif->flags == FFI390_RET_STRUCT) rvalue = (void *) p_gpr[n_gpr++]; /* Now for the arguments. */ for (ptr = closure->cif->arg_types, i = closure->cif->nargs; i > 0; i--, p_arg++, ptr++) { int deref_struct_pointer = 0; int type = (*ptr)->type; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE /* 16-byte long double is passed like a struct. */ if (type == FFI_TYPE_LONGDOUBLE) type = FFI_TYPE_STRUCT; #endif /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) { if (type == FFI_TYPE_COMPLEX) type = FFI_TYPE_POINTER; else type = ffi_check_struct_type (*ptr); /* If we pass the struct via pointer, remember to retrieve the pointer later. */ if (type == FFI_TYPE_POINTER) deref_struct_pointer = 1; } /* Pointers are passed like UINTs of the same size. */ if (type == FFI_TYPE_POINTER) #ifdef __s390x__ type = FFI_TYPE_UINT64; #else type = FFI_TYPE_UINT32; #endif /* Now handle all primitive int/float data types. */ switch (type) { case FFI_TYPE_DOUBLE: if (n_fpr < MAX_FPRARGS) *p_arg = &p_fpr[n_fpr++]; else *p_arg = &p_ov[n_ov], n_ov += sizeof (double) / sizeof (long); break; case FFI_TYPE_FLOAT: if (n_fpr < MAX_FPRARGS) *p_arg = &p_fpr[n_fpr++]; else *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #ifdef __s390x__ if (n_gpr < MAX_GPRARGS) *p_arg = &p_gpr[n_gpr++]; else *p_arg = &p_ov[n_ov++]; #else if (n_gpr == MAX_GPRARGS-1) n_gpr = MAX_GPRARGS; if (n_gpr < MAX_GPRARGS) *p_arg = &p_gpr[n_gpr], n_gpr += 2; else *p_arg = &p_ov[n_ov], n_ov += 2; #endif break; case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: if (n_gpr < MAX_GPRARGS) *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 4; else *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; break; case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: if (n_gpr < MAX_GPRARGS) *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 2; else *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 2; break; case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: if (n_gpr < MAX_GPRARGS) *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 1; else *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 1; break; default: FFI_ASSERT (0); break; } /* If this is a struct passed via pointer, we need to actually retrieve that pointer. */ if (deref_struct_pointer) *p_arg = *(void **)*p_arg; } /* Call the target function. */ (closure->fun) (closure->cif, rvalue, avalue, closure->user_data); /* Convert the return value. */ switch (closure->cif->rtype->type) { /* Void is easy, and so is struct. */ case FFI_TYPE_VOID: case FFI_TYPE_STRUCT: case FFI_TYPE_COMPLEX: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: #endif break; /* Floating point values are returned in fpr 0. */ case FFI_TYPE_FLOAT: p_fpr[0] = (long long) *(unsigned int *) rvalue << 32; break; case FFI_TYPE_DOUBLE: p_fpr[0] = *(unsigned long long *) rvalue; break; /* Integer values are returned in gpr 2 (and gpr 3 for 64-bit values on 31-bit machines). */ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #ifdef __s390x__ p_gpr[0] = *(unsigned long *) rvalue; #else p_gpr[0] = ((unsigned long *) rvalue)[0], p_gpr[1] = ((unsigned long *) rvalue)[1]; #endif break; case FFI_TYPE_POINTER: case FFI_TYPE_UINT32: case FFI_TYPE_UINT16: case FFI_TYPE_UINT8: p_gpr[0] = *(unsigned long *) rvalue; break; case FFI_TYPE_INT: case FFI_TYPE_SINT32: case FFI_TYPE_SINT16: case FFI_TYPE_SINT8: p_gpr[0] = *(signed long *) rvalue; break; default: FFI_ASSERT (0); break; } } /*======================== End of Routine ============================*/ /*====================================================================*/ /* */ /* Name - ffi_prep_closure_loc. */ /* */ /* Function - Prepare a FFI closure. */ /* */ /*====================================================================*/ ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun) (ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; #ifndef __s390x__ *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ *(short *)&closure->tramp [2] = 0x9801; /* lm %r0,%r1,6(%r1) */ *(short *)&closure->tramp [4] = 0x1006; *(short *)&closure->tramp [6] = 0x07f1; /* br %r1 */ *(long *)&closure->tramp [8] = (long)codeloc; *(long *)&closure->tramp[12] = (long)&ffi_closure_SYSV; #else *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ *(short *)&closure->tramp [2] = 0xeb01; /* lmg %r0,%r1,14(%r1) */ *(short *)&closure->tramp [4] = 0x100e; *(short *)&closure->tramp [6] = 0x0004; *(short *)&closure->tramp [8] = 0x07f1; /* br %r1 */ *(long *)&closure->tramp[16] = (long)codeloc; *(long *)&closure->tramp[24] = (long)&ffi_closure_SYSV; #endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } /*======================== End of Routine ============================*/ polyml-5.7.1/libffi/src/s390/sysv.S0000644000175000017500000002504113204034553015651 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2000 Software AG Copyright (c) 2008 Red Hat, Inc. S390 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifndef __s390x__ .text # r2: cif->bytes # r3: &ecif # r4: ffi_prep_args # r5: ret_type # r6: ecif.rvalue # ov: fn # This assumes we are using gas. .globl ffi_call_SYSV .type ffi_call_SYSV,%function ffi_call_SYSV: .LFB1: stm %r6,%r15,24(%r15) # Save registers .LCFI0: basr %r13,0 # Set up base register .Lbase: lr %r11,%r15 # Set up frame pointer .LCFI1: sr %r15,%r2 ahi %r15,-96-48 # Allocate stack lr %r8,%r6 # Save ecif.rvalue sr %r9,%r9 ic %r9,.Ltable-.Lbase(%r13,%r5) # Load epilog address l %r7,96(%r11) # Load function address st %r11,0(%r15) # Set up back chain ahi %r11,-48 # Register save area .LCFI2: la %r2,96(%r15) # Save area # r3 already holds &ecif basr %r14,%r4 # Call ffi_prep_args lm %r2,%r6,0(%r11) # Load arguments ld %f0,32(%r11) ld %f2,40(%r11) la %r14,0(%r13,%r9) # Set return address br %r7 # ... and call function .LretNone: # Return void l %r4,48+56(%r11) lm %r6,%r15,48+24(%r11) br %r4 .LretFloat: l %r4,48+56(%r11) ste %f0,0(%r8) # Return float lm %r6,%r15,48+24(%r11) br %r4 .LretDouble: l %r4,48+56(%r11) std %f0,0(%r8) # Return double lm %r6,%r15,48+24(%r11) br %r4 .LretInt32: l %r4,48+56(%r11) st %r2,0(%r8) # Return int lm %r6,%r15,48+24(%r11) br %r4 .LretInt64: l %r4,48+56(%r11) stm %r2,%r3,0(%r8) # Return long long lm %r6,%r15,48+24(%r11) br %r4 .Ltable: .byte .LretNone-.Lbase # FFI390_RET_VOID .byte .LretNone-.Lbase # FFI390_RET_STRUCT .byte .LretFloat-.Lbase # FFI390_RET_FLOAT .byte .LretDouble-.Lbase # FFI390_RET_DOUBLE .byte .LretInt32-.Lbase # FFI390_RET_INT32 .byte .LretInt64-.Lbase # FFI390_RET_INT64 .LFE1: .ffi_call_SYSV_end: .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV .globl ffi_closure_SYSV .type ffi_closure_SYSV,%function ffi_closure_SYSV: .LFB2: stm %r12,%r15,48(%r15) # Save registers .LCFI10: basr %r13,0 # Set up base register .Lcbase: stm %r2,%r6,8(%r15) # Save arguments std %f0,64(%r15) std %f2,72(%r15) lr %r1,%r15 # Set up stack frame ahi %r15,-96 .LCFI11: l %r12,.Lchelper-.Lcbase(%r13) # Get helper function lr %r2,%r0 # Closure la %r3,8(%r1) # GPRs la %r4,64(%r1) # FPRs la %r5,96(%r1) # Overflow st %r1,0(%r15) # Set up back chain bas %r14,0(%r12,%r13) # Call helper l %r4,96+56(%r15) ld %f0,96+64(%r15) # Load return registers lm %r2,%r3,96+8(%r15) lm %r12,%r15,96+48(%r15) br %r4 .align 4 .Lchelper: .long ffi_closure_helper_SYSV-.Lcbase .LFE2: .ffi_closure_SYSV_end: .size ffi_closure_SYSV,.ffi_closure_SYSV_end-ffi_closure_SYSV .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry .LSCIE1: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0xe # CIE RA Column .uleb128 0x1 # Augmentation size .byte 0x1b # FDE Encoding (pcrel sdata4) .byte 0xc # DW_CFA_def_cfa .uleb128 0xf .uleb128 0x60 .align 4 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 # FDE Length .LASFDE1: .4byte .LASFDE1-.Lframe1 # FDE CIE offset .4byte .LFB1-. # FDE initial location .4byte .LFE1-.LFB1 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI0-.LFB1 .byte 0x8f # DW_CFA_offset, column 0xf .uleb128 0x9 .byte 0x8e # DW_CFA_offset, column 0xe .uleb128 0xa .byte 0x8d # DW_CFA_offset, column 0xd .uleb128 0xb .byte 0x8c # DW_CFA_offset, column 0xc .uleb128 0xc .byte 0x8b # DW_CFA_offset, column 0xb .uleb128 0xd .byte 0x8a # DW_CFA_offset, column 0xa .uleb128 0xe .byte 0x89 # DW_CFA_offset, column 0x9 .uleb128 0xf .byte 0x88 # DW_CFA_offset, column 0x8 .uleb128 0x10 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x11 .byte 0x86 # DW_CFA_offset, column 0x6 .uleb128 0x12 .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI1-.LCFI0 .byte 0xd # DW_CFA_def_cfa_register .uleb128 0xb .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI2-.LCFI1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x90 .align 4 .LEFDE1: .LSFDE2: .4byte .LEFDE2-.LASFDE2 # FDE Length .LASFDE2: .4byte .LASFDE2-.Lframe1 # FDE CIE offset .4byte .LFB2-. # FDE initial location .4byte .LFE2-.LFB2 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI10-.LFB2 .byte 0x8f # DW_CFA_offset, column 0xf .uleb128 0x9 .byte 0x8e # DW_CFA_offset, column 0xe .uleb128 0xa .byte 0x8d # DW_CFA_offset, column 0xd .uleb128 0xb .byte 0x8c # DW_CFA_offset, column 0xc .uleb128 0xc .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI11-.LCFI10 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0xc0 .align 4 .LEFDE2: #else .text # r2: cif->bytes # r3: &ecif # r4: ffi_prep_args # r5: ret_type # r6: ecif.rvalue # ov: fn # This assumes we are using gas. .globl ffi_call_SYSV .type ffi_call_SYSV,%function ffi_call_SYSV: .LFB1: stmg %r6,%r15,48(%r15) # Save registers .LCFI0: larl %r13,.Lbase # Set up base register lgr %r11,%r15 # Set up frame pointer .LCFI1: sgr %r15,%r2 aghi %r15,-160-80 # Allocate stack lgr %r8,%r6 # Save ecif.rvalue llgc %r9,.Ltable-.Lbase(%r13,%r5) # Load epilog address lg %r7,160(%r11) # Load function address stg %r11,0(%r15) # Set up back chain aghi %r11,-80 # Register save area .LCFI2: la %r2,160(%r15) # Save area # r3 already holds &ecif basr %r14,%r4 # Call ffi_prep_args lmg %r2,%r6,0(%r11) # Load arguments ld %f0,48(%r11) ld %f2,56(%r11) ld %f4,64(%r11) ld %f6,72(%r11) la %r14,0(%r13,%r9) # Set return address br %r7 # ... and call function .Lbase: .LretNone: # Return void lg %r4,80+112(%r11) lmg %r6,%r15,80+48(%r11) br %r4 .LretFloat: lg %r4,80+112(%r11) ste %f0,0(%r8) # Return float lmg %r6,%r15,80+48(%r11) br %r4 .LretDouble: lg %r4,80+112(%r11) std %f0,0(%r8) # Return double lmg %r6,%r15,80+48(%r11) br %r4 .LretInt32: lg %r4,80+112(%r11) st %r2,0(%r8) # Return int lmg %r6,%r15,80+48(%r11) br %r4 .LretInt64: lg %r4,80+112(%r11) stg %r2,0(%r8) # Return long lmg %r6,%r15,80+48(%r11) br %r4 .Ltable: .byte .LretNone-.Lbase # FFI390_RET_VOID .byte .LretNone-.Lbase # FFI390_RET_STRUCT .byte .LretFloat-.Lbase # FFI390_RET_FLOAT .byte .LretDouble-.Lbase # FFI390_RET_DOUBLE .byte .LretInt32-.Lbase # FFI390_RET_INT32 .byte .LretInt64-.Lbase # FFI390_RET_INT64 .LFE1: .ffi_call_SYSV_end: .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV .globl ffi_closure_SYSV .type ffi_closure_SYSV,%function ffi_closure_SYSV: .LFB2: stmg %r14,%r15,112(%r15) # Save registers .LCFI10: stmg %r2,%r6,16(%r15) # Save arguments std %f0,128(%r15) std %f2,136(%r15) std %f4,144(%r15) std %f6,152(%r15) lgr %r1,%r15 # Set up stack frame aghi %r15,-160 .LCFI11: lgr %r2,%r0 # Closure la %r3,16(%r1) # GPRs la %r4,128(%r1) # FPRs la %r5,160(%r1) # Overflow stg %r1,0(%r15) # Set up back chain brasl %r14,ffi_closure_helper_SYSV # Call helper lg %r14,160+112(%r15) ld %f0,160+128(%r15) # Load return registers lg %r2,160+16(%r15) la %r15,160(%r15) br %r14 .LFE2: .ffi_closure_SYSV_end: .size ffi_closure_SYSV,.ffi_closure_SYSV_end-ffi_closure_SYSV .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry .LSCIE1: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -8 # CIE Data Alignment Factor .byte 0xe # CIE RA Column .uleb128 0x1 # Augmentation size .byte 0x1b # FDE Encoding (pcrel sdata4) .byte 0xc # DW_CFA_def_cfa .uleb128 0xf .uleb128 0xa0 .align 8 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 # FDE Length .LASFDE1: .4byte .LASFDE1-.Lframe1 # FDE CIE offset .4byte .LFB1-. # FDE initial location .4byte .LFE1-.LFB1 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI0-.LFB1 .byte 0x8f # DW_CFA_offset, column 0xf .uleb128 0x5 .byte 0x8e # DW_CFA_offset, column 0xe .uleb128 0x6 .byte 0x8d # DW_CFA_offset, column 0xd .uleb128 0x7 .byte 0x8c # DW_CFA_offset, column 0xc .uleb128 0x8 .byte 0x8b # DW_CFA_offset, column 0xb .uleb128 0x9 .byte 0x8a # DW_CFA_offset, column 0xa .uleb128 0xa .byte 0x89 # DW_CFA_offset, column 0x9 .uleb128 0xb .byte 0x88 # DW_CFA_offset, column 0x8 .uleb128 0xc .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0xd .byte 0x86 # DW_CFA_offset, column 0x6 .uleb128 0xe .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI1-.LCFI0 .byte 0xd # DW_CFA_def_cfa_register .uleb128 0xb .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI2-.LCFI1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0xf0 .align 8 .LEFDE1: .LSFDE2: .4byte .LEFDE2-.LASFDE2 # FDE Length .LASFDE2: .4byte .LASFDE2-.Lframe1 # FDE CIE offset .4byte .LFB2-. # FDE initial location .4byte .LFE2-.LFB2 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI10-.LFB2 .byte 0x8f # DW_CFA_offset, column 0xf .uleb128 0x5 .byte 0x8e # DW_CFA_offset, column 0xe .uleb128 0x6 .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI11-.LCFI10 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x140 .align 8 .LEFDE2: #endif #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/tile/0000755000175000017500000000000013204034553014756 5ustar daviddavidpolyml-5.7.1/libffi/src/tile/ffitarget.h0000644000175000017500000000417613204034553017112 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Tilera Corp. Target configuration macros for TILE. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM #include typedef uint_reg_t ffi_arg; typedef int_reg_t ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_UNIX, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_UNIX } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #ifdef __tilegx__ /* We always pass 8-byte values, even in -m32 mode. */ # define FFI_SIZEOF_ARG 8 # ifdef __LP64__ # define FFI_TRAMPOLINE_SIZE (8 * 5) /* 5 bundles */ # else # define FFI_TRAMPOLINE_SIZE (8 * 3) /* 3 bundles */ # endif #else # define FFI_SIZEOF_ARG 4 # define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */ #endif #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/tile/ffi.c0000644000175000017500000002410513204034553015670 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2012 Tilera Corp. TILE Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #include #include #include #include /* The first 10 registers are used to pass arguments and return values. */ #define NUM_ARG_REGS 10 /* Performs a raw function call with the given NUM_ARG_REGS register arguments and the specified additional stack arguments (if any). */ extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS], const ffi_sarg *stack_args, size_t stack_args_bytes, void (*fnaddr)(void)) FFI_HIDDEN; /* This handles the raw call from the closure stub, cleaning up the parameters and delegating to ffi_closure_tile_inner. */ extern void ffi_closure_tile(void) FFI_HIDDEN; ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* We always allocate room for all registers. Even if we don't use them as parameters, they get returned in the same array as struct return values so we need to make room. */ if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG) cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG; if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG) cif->flags = FFI_TYPE_STRUCT; else cif->flags = FFI_TYPE_INT; /* Nothing to do. */ return FFI_OK; } static long assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type, int write_to_reg) { switch (type->type) { case FFI_TYPE_SINT8: *out = *(SINT8 *)in; return 1; case FFI_TYPE_UINT8: *out = *(UINT8 *)in; return 1; case FFI_TYPE_SINT16: *out = *(SINT16 *)in; return 1; case FFI_TYPE_UINT16: *out = *(UINT16 *)in; return 1; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: #ifndef __LP64__ case FFI_TYPE_POINTER: #endif /* Note that even unsigned 32-bit quantities are sign extended on tilegx when stored in a register. */ *out = *(SINT32 *)in; return 1; case FFI_TYPE_FLOAT: #ifdef __tilegx__ if (write_to_reg) { /* Properly sign extend the value. */ union { float f; SINT32 s32; } val; val.f = *(float *)in; *out = val.s32; } else #endif { *(float *)out = *(float *)in; } return 1; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: #ifdef __LP64__ case FFI_TYPE_POINTER: #endif *(UINT64 *)out = *(UINT64 *)in; return sizeof(UINT64) / FFI_SIZEOF_ARG; case FFI_TYPE_STRUCT: memcpy(out, in, type->size); return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; case FFI_TYPE_VOID: /* Must be a return type. Nothing to do. */ return 0; default: FFI_ASSERT(0); return -1; } } void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { ffi_sarg * const arg_mem = alloca(cif->bytes); ffi_sarg * const reg_args = arg_mem; ffi_sarg * const stack_args = ®_args[NUM_ARG_REGS]; ffi_sarg *argp = arg_mem; ffi_type ** const arg_types = cif->arg_types; const long num_args = cif->nargs; long i; if (cif->flags == FFI_TYPE_STRUCT) { /* Pass a hidden pointer to the return value. We make sure there is scratch space for the callee to store the return value even if our caller doesn't care about it. */ *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size)); /* No more work needed to return anything. */ rvalue = NULL; } for (i = 0; i < num_args; i++) { ffi_type *type = arg_types[i]; void * const arg_in = avalue[i]; ptrdiff_t arg_word = argp - arg_mem; #ifndef __tilegx__ /* Doubleword-aligned values are always in an even-number register pair, or doubleword-aligned stack slot if out of registers. */ long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); argp += align; arg_word += align; #endif if (type->type == FFI_TYPE_STRUCT) { const size_t arg_size_in_words = (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; if (arg_word < NUM_ARG_REGS && arg_word + arg_size_in_words > NUM_ARG_REGS) { /* Args are not allowed to span registers and the stack. */ argp = stack_args; } memcpy(argp, arg_in, type->size); argp += arg_size_in_words; } else { argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1); } } /* Actually do the call. */ ffi_call_tile(reg_args, stack_args, cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn); if (rvalue != NULL) assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0); } /* Template code for closure. */ extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN; ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { #ifdef __tilegx__ /* TILE-Gx */ SINT64 c; SINT64 h; int s; UINT64 *out; if (cif->abi != FFI_UNIX) return FFI_BAD_ABI; out = (UINT64 *)closure->tramp; c = (intptr_t)closure; h = (intptr_t)ffi_closure_tile; s = 0; /* Find the smallest shift count that doesn't lose information (i.e. no need to explicitly insert high bits of the address that are just the sign extension of the low bits). */ while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s)) s += 16; #define OPS(a, b, shift) \ (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift))) /* Emit the moveli. */ *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s); for (s -= 16; s >= 0; s -= 16) *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s); #undef OPS *out++ = ffi_template_tramp_tile[2]; #else /* TILEPro */ UINT64 *out; intptr_t delta; if (cif->abi != FFI_UNIX) return FFI_BAD_ABI; out = (UINT64 *)closure->tramp; delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc; *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3); #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; invalidate_icache(closure->tramp, (char *)out - closure->tramp, getpagesize()); return FFI_OK; } /* This is called by the assembly wrapper for closures. This does all of the work. On entry reg_args[0] holds the values the registers had when the closure was invoked. On return reg_args[1] holds the register values to be returned to the caller (many of which may be garbage). */ void FFI_HIDDEN ffi_closure_tile_inner(ffi_closure *closure, ffi_sarg reg_args[2][NUM_ARG_REGS], ffi_sarg *stack_args) { ffi_cif * const cif = closure->cif; void ** const avalue = alloca(cif->nargs * sizeof(void *)); void *rvalue; ffi_type ** const arg_types = cif->arg_types; ffi_sarg * const reg_args_in = reg_args[0]; ffi_sarg * const reg_args_out = reg_args[1]; ffi_sarg * argp; long i, arg_word, nargs = cif->nargs; /* Use a union to guarantee proper alignment for double. */ union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret; /* Start out reading register arguments. */ argp = reg_args_in; /* Copy the caller's structure return address to that the closure returns the data directly to the caller. */ if (cif->flags == FFI_TYPE_STRUCT) { /* Return by reference via hidden pointer. */ rvalue = (void *)(intptr_t)*argp++; arg_word = 1; } else { /* Return the value in registers. */ rvalue = &closure_ret; arg_word = 0; } /* Grab the addresses of the arguments. */ for (i = 0; i < nargs; i++) { ffi_type * const type = arg_types[i]; const size_t arg_size_in_words = (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; #ifndef __tilegx__ /* Doubleword-aligned values are always in an even-number register pair, or doubleword-aligned stack slot if out of registers. */ long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); argp += align; arg_word += align; #endif if (arg_word == NUM_ARG_REGS || (arg_word < NUM_ARG_REGS && arg_word + arg_size_in_words > NUM_ARG_REGS)) { /* Switch to reading arguments from the stack. */ argp = stack_args; arg_word = NUM_ARG_REGS; } avalue[i] = argp; argp += arg_size_in_words; arg_word += arg_size_in_words; } /* Invoke the closure. */ closure->fun(cif, rvalue, avalue, closure->user_data); if (cif->flags != FFI_TYPE_STRUCT) { /* Canonicalize for register representation. */ assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1); } } polyml-5.7.1/libffi/src/tile/tile.S0000644000175000017500000002724213204034553016046 0ustar daviddavid/* ----------------------------------------------------------------------- tile.S - Copyright (c) 2011 Tilera Corp. Tilera TILEPro and TILE-Gx Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include /* Number of bytes in a register. */ #define REG_SIZE FFI_SIZEOF_ARG /* Number of bytes in stack linkage area for backtracing. A note about the ABI: on entry to a procedure, sp points to a stack slot where it must spill the return address if it's not a leaf. REG_SIZE bytes beyond that is a slot owned by the caller which contains the sp value that the caller had when it was originally entered (i.e. the caller's frame pointer). */ #define LINKAGE_SIZE (2 * REG_SIZE) /* The first 10 registers are used to pass arguments and return values. */ #define NUM_ARG_REGS 10 #ifdef __tilegx__ #define SW st #define LW ld #define BGZT bgtzt #else #define SW sw #define LW lw #define BGZT bgzt #endif /* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS], const int_reg_t *stack_args, unsigned long stack_args_bytes, void (*fnaddr)(void)); On entry, REG_ARGS contain the outgoing register values, and STACK_ARGS contains STACK_ARG_BYTES of additional values to be passed on the stack. If STACK_ARG_BYTES is zero, then STACK_ARGS is ignored. When the invoked function returns, the values of r0-r9 are blindly stored back into REG_ARGS for the caller to examine. */ .section .text.ffi_call_tile, "ax", @progbits .align 8 .globl ffi_call_tile FFI_HIDDEN(ffi_call_tile) ffi_call_tile: /* Incoming arguments. */ #define REG_ARGS r0 #define INCOMING_STACK_ARGS r1 #define STACK_ARG_BYTES r2 #define ORIG_FNADDR r3 /* Temporary values. */ #define FRAME_SIZE r10 #define TMP r11 #define TMP2 r12 #define OUTGOING_STACK_ARGS r13 #define REG_ADDR_PTR r14 #define RETURN_REG_ADDR r15 #define FNADDR r16 .cfi_startproc { /* Save return address. */ SW sp, lr .cfi_offset lr, 0 /* Prepare to spill incoming r52. */ addi TMP, sp, -REG_SIZE /* Increase frame size to have room to spill r52 and REG_ARGS. The +7 is to round up mod 8. */ addi FRAME_SIZE, STACK_ARG_BYTES, \ REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7 } { /* Round stack frame size to a multiple of 8 to satisfy ABI. */ andi FRAME_SIZE, FRAME_SIZE, -8 /* Compute where to spill REG_ARGS value. */ addi TMP2, sp, -(REG_SIZE * 2) } { /* Spill incoming r52. */ SW TMP, r52 .cfi_offset r52, -REG_SIZE /* Set up our frame pointer. */ move r52, sp .cfi_def_cfa_register r52 /* Push stack frame. */ sub sp, sp, FRAME_SIZE } { /* Prepare to set up stack linkage. */ addi TMP, sp, REG_SIZE /* Prepare to memcpy stack args. */ addi OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE /* Save REG_ARGS which we will need after we call the subroutine. */ SW TMP2, REG_ARGS } { /* Set up linkage info to hold incoming stack pointer. */ SW TMP, r52 } { /* Skip stack args memcpy if we don't have any stack args (common). */ blezt STACK_ARG_BYTES, .Ldone_stack_args_memcpy } .Lmemcpy_stack_args: { /* Load incoming argument from stack_args. */ LW TMP, INCOMING_STACK_ARGS addi INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE } { /* Store stack argument into outgoing stack argument area. */ SW OUTGOING_STACK_ARGS, TMP addi OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE addi STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE } { BGZT STACK_ARG_BYTES, .Lmemcpy_stack_args } .Ldone_stack_args_memcpy: { /* Copy aside ORIG_FNADDR so we can overwrite its register. */ move FNADDR, ORIG_FNADDR /* Prepare to load argument registers. */ addi REG_ADDR_PTR, r0, REG_SIZE /* Load outgoing r0. */ LW r0, r0 } /* Load up argument registers from the REG_ARGS array. */ #define LOAD_REG(REG, PTR) \ { \ LW REG, PTR ; \ addi PTR, PTR, REG_SIZE \ } LOAD_REG(r1, REG_ADDR_PTR) LOAD_REG(r2, REG_ADDR_PTR) LOAD_REG(r3, REG_ADDR_PTR) LOAD_REG(r4, REG_ADDR_PTR) LOAD_REG(r5, REG_ADDR_PTR) LOAD_REG(r6, REG_ADDR_PTR) LOAD_REG(r7, REG_ADDR_PTR) LOAD_REG(r8, REG_ADDR_PTR) LOAD_REG(r9, REG_ADDR_PTR) { /* Call the subroutine. */ jalr FNADDR } { /* Restore original lr. */ LW lr, r52 /* Prepare to recover ARGS, which we spilled earlier. */ addi TMP, r52, -(2 * REG_SIZE) } { /* Restore ARGS, so we can fill it in with the return regs r0-r9. */ LW RETURN_REG_ADDR, TMP /* Prepare to restore original r52. */ addi TMP, r52, -REG_SIZE } { /* Pop stack frame. */ move sp, r52 /* Restore original r52. */ LW r52, TMP } #define STORE_REG(REG, PTR) \ { \ SW PTR, REG ; \ addi PTR, PTR, REG_SIZE \ } /* Return all register values by reference. */ STORE_REG(r0, RETURN_REG_ADDR) STORE_REG(r1, RETURN_REG_ADDR) STORE_REG(r2, RETURN_REG_ADDR) STORE_REG(r3, RETURN_REG_ADDR) STORE_REG(r4, RETURN_REG_ADDR) STORE_REG(r5, RETURN_REG_ADDR) STORE_REG(r6, RETURN_REG_ADDR) STORE_REG(r7, RETURN_REG_ADDR) STORE_REG(r8, RETURN_REG_ADDR) STORE_REG(r9, RETURN_REG_ADDR) { jrp lr } .cfi_endproc .size ffi_call_tile, .-ffi_call_tile /* ffi_closure_tile(...) On entry, lr points to the closure plus 8 bytes, and r10 contains the actual return address. This function simply dumps all register parameters into a stack array and passes the closure, the registers array, and the stack arguments to C code that does all of the actual closure processing. */ .section .text.ffi_closure_tile, "ax", @progbits .align 8 .globl ffi_closure_tile FFI_HIDDEN(ffi_closure_tile) .cfi_startproc /* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */ #define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8) ffi_closure_tile: { #ifdef __tilegx__ st sp, lr .cfi_offset lr, 0 #else /* Save return address (in r10 due to closure stub wrapper). */ SW sp, r10 .cfi_return_column r10 .cfi_offset r10, 0 #endif /* Compute address for stack frame linkage. */ addli r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) } { /* Save incoming stack pointer in linkage area. */ SW r10, sp .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) /* Push a new stack frame. */ addli sp, sp, -CLOSURE_FRAME_SIZE .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE } { /* Create pointer to where to start spilling registers. */ addi r10, sp, LINKAGE_SIZE } /* Spill all the incoming registers. */ STORE_REG(r0, r10) STORE_REG(r1, r10) STORE_REG(r2, r10) STORE_REG(r3, r10) STORE_REG(r4, r10) STORE_REG(r5, r10) STORE_REG(r6, r10) STORE_REG(r7, r10) STORE_REG(r8, r10) { /* Save r9. */ SW r10, r9 #ifdef __tilegx__ /* Pointer to closure is passed in r11. */ move r0, r11 #else /* Compute pointer to the closure object. Because the closure starts with a "jal ffi_closure_tile", we can just take the value of lr (a phony return address pointing into the closure) and subtract 8. */ addi r0, lr, -8 #endif /* Compute a pointer to the register arguments we just spilled. */ addi r1, sp, LINKAGE_SIZE } { /* Compute a pointer to the extra stack arguments (if any). */ addli r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE /* Call C code to deal with all of the grotty details. */ jal ffi_closure_tile_inner } { addli r10, sp, CLOSURE_FRAME_SIZE } { /* Restore the return address. */ LW lr, r10 /* Compute pointer to registers array. */ addli r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE) } /* Return all the register values, which C code may have set. */ LOAD_REG(r0, r10) LOAD_REG(r1, r10) LOAD_REG(r2, r10) LOAD_REG(r3, r10) LOAD_REG(r4, r10) LOAD_REG(r5, r10) LOAD_REG(r6, r10) LOAD_REG(r7, r10) LOAD_REG(r8, r10) LOAD_REG(r9, r10) { /* Pop the frame. */ addli sp, sp, CLOSURE_FRAME_SIZE jrp lr } .cfi_endproc .size ffi_closure_tile, . - ffi_closure_tile /* What follows are code template instructions that get copied to the closure trampoline by ffi_prep_closure_loc. The zeroed operands get replaced by their proper values at runtime. */ .section .text.ffi_template_tramp_tile, "ax", @progbits .align 8 .globl ffi_template_tramp_tile FFI_HIDDEN(ffi_template_tramp_tile) ffi_template_tramp_tile: #ifdef __tilegx__ { moveli r11, 0 /* backpatched to address of containing closure. */ moveli r10, 0 /* backpatched to ffi_closure_tile. */ } /* Note: the following bundle gets generated multiple times depending on the pointer value (esp. useful for -m32 mode). */ { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 } { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 } #else /* 'jal .' yields a PC-relative offset of zero so we can OR in the right offset at runtime. */ { move r10, lr ; jal . /* ffi_closure_tile */ } #endif .size ffi_template_tramp_tile, . - ffi_template_tramp_tile polyml-5.7.1/libffi/src/types.c0000644000175000017500000000740413204034553015336 0ustar daviddavid/* ----------------------------------------------------------------------- types.c - Copyright (c) 1996, 1998 Red Hat, Inc. Predefined ffi_types needed by libffi. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* Hide the basic type definitions from the header file, so that we can redefine them here as "const". */ #define LIBFFI_HIDE_BASIC_TYPES #include #include /* Type definitions */ #define FFI_TYPEDEF(name, type, id, maybe_const)\ struct struct_align_##name { \ char c; \ type x; \ }; \ maybe_const ffi_type ffi_type_##name = { \ sizeof(type), \ offsetof(struct struct_align_##name, x), \ id, NULL \ } #define FFI_COMPLEX_TYPEDEF(name, type, maybe_const) \ static ffi_type *ffi_elements_complex_##name [2] = { \ (ffi_type *)(&ffi_type_##name), NULL \ }; \ struct struct_align_complex_##name { \ char c; \ _Complex type x; \ }; \ maybe_const ffi_type ffi_type_complex_##name = { \ sizeof(_Complex type), \ offsetof(struct struct_align_complex_##name, x), \ FFI_TYPE_COMPLEX, \ (ffi_type **)ffi_elements_complex_##name \ } /* Size and alignment are fake here. They must not be 0. */ const ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID, NULL }; FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8, const); FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8, const); FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16, const); FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16, const); FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32, const); FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32, const); FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64, const); FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64, const); FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER, const); FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT, const); FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const); #if !defined HAVE_LONG_DOUBLE_VARIANT || defined __alpha__ #define FFI_LDBL_CONST const #else #define FFI_LDBL_CONST #endif #ifdef __alpha__ /* Even if we're not configured to default to 128-bit long double, maintain binary compatibility, as -mlong-double-128 can be used at any time. */ /* Validate the hard-coded number below. */ # if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4 # error FFI_TYPE_LONGDOUBLE out of date # endif const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL }; #elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST); #endif #ifdef FFI_TARGET_HAS_COMPLEX_TYPE FFI_COMPLEX_TYPEDEF(float, float, const); FFI_COMPLEX_TYPEDEF(double, double, const); #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST); #endif #endif polyml-5.7.1/libffi/src/x86/0000755000175000017500000000000013204034553014446 5ustar daviddavidpolyml-5.7.1/libffi/src/x86/ffitarget.h0000644000175000017500000001017113204034553016572 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012, 2014 Anthony Green Copyright (c) 1996-2003, 2010 Red Hat, Inc. Copyright (C) 2008 Free Software Foundation, Inc. Target configuration macros for x86 and x86-64. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ /* For code common to all platforms on x86 and x86_64. */ #define X86_ANY #if defined (X86_64) && defined (__i386__) #undef X86_64 #define X86 #endif #ifdef X86_WIN64 #define FFI_SIZEOF_ARG 8 #define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ #endif #define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION #ifndef _MSC_VER #define FFI_TARGET_HAS_COMPLEX_TYPE #endif /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM #ifdef X86_WIN64 #ifdef _MSC_VER typedef unsigned __int64 ffi_arg; typedef __int64 ffi_sarg; #else typedef unsigned long long ffi_arg; typedef long long ffi_sarg; #endif #else #if defined __x86_64__ && defined __ILP32__ #define FFI_SIZEOF_ARG 8 #define FFI_SIZEOF_JAVA_RAW 4 typedef unsigned long long ffi_arg; typedef long long ffi_sarg; #else typedef unsigned long ffi_arg; typedef signed long ffi_sarg; #endif #endif typedef enum ffi_abi { FFI_FIRST_ABI = 0, /* ---- Intel x86 Win32 ---------- */ #ifdef X86_WIN32 FFI_SYSV, FFI_STDCALL, FFI_THISCALL, FFI_FASTCALL, FFI_MS_CDECL, FFI_PASCAL, FFI_REGISTER, FFI_LAST_ABI, #ifdef _MSC_VER FFI_DEFAULT_ABI = FFI_MS_CDECL #else FFI_DEFAULT_ABI = FFI_SYSV #endif #elif defined(X86_WIN64) FFI_WIN64, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_WIN64 #else /* ---- Intel x86 and AMD x86-64 - */ FFI_SYSV, FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ FFI_THISCALL, FFI_FASTCALL, FFI_STDCALL, FFI_PASCAL, FFI_REGISTER, FFI_LAST_ABI, #if defined(__i386__) || defined(__i386) FFI_DEFAULT_ABI = FFI_SYSV #else FFI_DEFAULT_ABI = FFI_UNIX64 #endif #endif } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) #define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) #define FFI_TRAMPOLINE_SIZE 24 #define FFI_NATIVE_RAW_API 0 #else #ifdef X86_WIN32 #define FFI_TRAMPOLINE_SIZE 52 #else #ifdef X86_WIN64 #define FFI_TRAMPOLINE_SIZE 29 #define FFI_NATIVE_RAW_API 0 #define FFI_NO_RAW_API 1 #else #define FFI_TRAMPOLINE_SIZE 10 #endif #endif #ifndef X86_WIN64 #define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ #endif #endif #endif polyml-5.7.1/libffi/src/x86/ffi.c0000644000175000017500000006531513204034553015370 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle Copyright (C) 2008, 2010 Free Software Foundation, Inc. x86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #if !defined(__x86_64__) || defined(_WIN64) || defined(__CYGWIN__) #ifdef _WIN64 #include #endif #include #include #include /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ unsigned int ffi_prep_args(char *stack, extended_cif *ecif); unsigned int ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; #ifndef X86_WIN64 const int cabi = ecif->cif->abi; const int dir = (cabi == FFI_PASCAL || cabi == FFI_REGISTER) ? -1 : +1; unsigned int stack_args_count = 0; void *p_stack_data[3]; char *argp2 = stack; #else #define dir 1 #endif argp = stack; if ((ecif->cif->flags == FFI_TYPE_STRUCT || ecif->cif->flags == FFI_TYPE_MS_STRUCT) #ifdef X86_WIN64 && ((ecif->cif->rtype->size & (1 | 2 | 4 | 8)) == 0) #endif ) { #ifndef X86_WIN64 /* For fastcall/thiscall/register this is first register-passed argument. */ if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL || cabi == FFI_REGISTER) { p_stack_data[stack_args_count] = argp; ++stack_args_count; } #endif *(void **) argp = ecif->rvalue; argp += sizeof(void*); } p_arg = ecif->cif->arg_types; p_argv = ecif->avalue; if (dir < 0) { const int nargs = ecif->cif->nargs - 1; if (nargs > 0) { p_arg += nargs; p_argv += nargs; } } for (i = ecif->cif->nargs; i != 0; i--, p_arg += dir, p_argv += dir) { /* Align if necessary */ if ((sizeof(void*) - 1) & (size_t) argp) argp = (char *) ALIGN(argp, sizeof(void*)); size_t z = (*p_arg)->size; #ifdef X86_WIN64 if (z > FFI_SIZEOF_ARG || ((*p_arg)->type == FFI_TYPE_STRUCT && (z & (1 | 2 | 4 | 8)) == 0) #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE || ((*p_arg)->type == FFI_TYPE_LONGDOUBLE) #endif ) { z = FFI_SIZEOF_ARG; *(void **)argp = *p_argv; } else if ((*p_arg)->type == FFI_TYPE_FLOAT) { memcpy(argp, *p_argv, z); } else #endif if (z < FFI_SIZEOF_ARG) { z = FFI_SIZEOF_ARG; switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(ffi_sarg *) argp = (ffi_sarg)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(ffi_arg *) argp = (ffi_arg)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(ffi_sarg *) argp = (ffi_sarg)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(ffi_arg *) argp = (ffi_arg)*(UINT16 *)(* p_argv); break; case FFI_TYPE_SINT32: *(ffi_sarg *) argp = (ffi_sarg)*(SINT32 *)(* p_argv); break; case FFI_TYPE_UINT32: *(ffi_arg *) argp = (ffi_arg)*(UINT32 *)(* p_argv); break; case FFI_TYPE_STRUCT: *(ffi_arg *) argp = *(ffi_arg *)(* p_argv); break; default: FFI_ASSERT(0); } } else { memcpy(argp, *p_argv, z); } #ifndef X86_WIN64 /* For thiscall/fastcall/register convention register-passed arguments are the first two none-floating-point arguments with a size smaller or equal to sizeof (void*). */ if ((z == FFI_SIZEOF_ARG) && ((cabi == FFI_REGISTER) || (cabi == FFI_THISCALL && stack_args_count < 1) || (cabi == FFI_FASTCALL && stack_args_count < 2)) && ((*p_arg)->type != FFI_TYPE_FLOAT && (*p_arg)->type != FFI_TYPE_STRUCT) ) { if (dir < 0 && stack_args_count > 2) { /* Iterating arguments backwards, so first register-passed argument will be passed last. Shift temporary values to make place. */ p_stack_data[0] = p_stack_data[1]; p_stack_data[1] = p_stack_data[2]; stack_args_count = 2; } p_stack_data[stack_args_count] = argp; ++stack_args_count; } #endif #ifdef X86_WIN64 argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1); #else argp += z; #endif } #ifndef X86_WIN64 /* We need to move the register-passed arguments for thiscall/fastcall/register on top of stack, so that those can be moved to registers by call-handler. */ if (stack_args_count > 0) { if (dir < 0 && stack_args_count > 1) { /* Reverse order if iterating arguments backwards */ ffi_arg tmp = *(ffi_arg*) p_stack_data[0]; *(ffi_arg*) p_stack_data[0] = *(ffi_arg*) p_stack_data[stack_args_count - 1]; *(ffi_arg*) p_stack_data[stack_args_count - 1] = tmp; } int i; for (i = 0; i < stack_args_count; i++) { if (p_stack_data[i] != argp2) { ffi_arg tmp = *(ffi_arg*) p_stack_data[i]; memmove (argp2 + FFI_SIZEOF_ARG, argp2, (size_t) ((char*) p_stack_data[i] - (char*)argp2)); *(ffi_arg *) argp2 = tmp; } argp2 += FFI_SIZEOF_ARG; } } return stack_args_count; #endif return 0; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { unsigned int i; ffi_type **ptr; /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_UINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT8: case FFI_TYPE_SINT16: #ifdef X86_WIN64 case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: #endif case FFI_TYPE_SINT64: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: #ifndef X86_WIN64 #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE case FFI_TYPE_LONGDOUBLE: #endif #endif cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_UINT64: #ifdef X86_WIN64 case FFI_TYPE_POINTER: #endif cif->flags = FFI_TYPE_SINT64; break; case FFI_TYPE_STRUCT: #ifndef X86 if (cif->rtype->size == 1) { cif->flags = FFI_TYPE_SMALL_STRUCT_1B; /* same as char size */ } else if (cif->rtype->size == 2) { cif->flags = FFI_TYPE_SMALL_STRUCT_2B; /* same as short size */ } else if (cif->rtype->size == 4) { #ifdef X86_WIN64 cif->flags = FFI_TYPE_SMALL_STRUCT_4B; #else cif->flags = FFI_TYPE_INT; /* same as int type */ #endif } else if (cif->rtype->size == 8) { cif->flags = FFI_TYPE_SINT64; /* same as int64 type */ } else #endif { #ifdef X86_WIN32 if (cif->abi == FFI_MS_CDECL) cif->flags = FFI_TYPE_MS_STRUCT; else #endif cif->flags = FFI_TYPE_STRUCT; /* allocate space for return value pointer */ cif->bytes += ALIGN(sizeof(void*), FFI_SIZEOF_ARG); } break; default: #ifdef X86_WIN64 cif->flags = FFI_TYPE_SINT64; break; case FFI_TYPE_INT: cif->flags = FFI_TYPE_SINT32; #else cif->flags = FFI_TYPE_INT; #endif break; } for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { if (((*ptr)->alignment - 1) & cif->bytes) cif->bytes = ALIGN(cif->bytes, (*ptr)->alignment); cif->bytes += (unsigned)ALIGN((*ptr)->size, FFI_SIZEOF_ARG); } #ifdef X86_WIN64 /* ensure space for storing four registers */ cif->bytes += 4 * FFI_SIZEOF_ARG; #endif #ifndef X86_WIN32 #ifndef X86_WIN64 if (cif->abi == FFI_SYSV || cif->abi == FFI_UNIX64) #endif cif->bytes = (cif->bytes + 15) & ~0xF; #endif return FFI_OK; } #ifdef X86_WIN64 extern int ffi_call_win64(unsigned int (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); #else extern void ffi_call_win32(unsigned int (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned, unsigned *, void (*fn)(void)); extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); #endif void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ #ifdef X86_WIN64 if (rvalue == NULL && cif->flags == FFI_TYPE_STRUCT && ((cif->rtype->size & (1 | 2 | 4 | 8)) == 0)) { ecif.rvalue = alloca((cif->rtype->size + 0xF) & ~0xF); } #else if (rvalue == NULL && (cif->flags == FFI_TYPE_STRUCT || cif->flags == FFI_TYPE_MS_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } #endif else ecif.rvalue = rvalue; switch (cif->abi) { #ifdef X86_WIN64 case FFI_WIN64: ffi_call_win64(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; #else #ifndef X86_WIN32 case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; #else case FFI_SYSV: case FFI_MS_CDECL: #endif case FFI_STDCALL: case FFI_THISCALL: case FFI_FASTCALL: case FFI_PASCAL: case FFI_REGISTER: ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags, ecif.rvalue, fn); break; #endif default: FFI_ASSERT(0); break; } } /** private members **/ /* The following __attribute__((regparm(1))) decorations will have no effect on MSVC or SUNPRO_C -- standard conventions apply. */ static unsigned int ffi_prep_incoming_args (char *stack, void **ret, void** args, ffi_cif* cif); void FFI_HIDDEN ffi_closure_SYSV (ffi_closure *) __attribute__ ((regparm(1))); unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *, void **, void *) __attribute__ ((regparm(1))); unsigned int FFI_HIDDEN ffi_closure_WIN32_inner (ffi_closure *, void **, void *) __attribute__ ((regparm(1))); void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *) __attribute__ ((regparm(1))); #ifdef X86_WIN32 void FFI_HIDDEN ffi_closure_raw_THISCALL (ffi_raw_closure *) __attribute__ ((regparm(1))); #endif #ifndef X86_WIN64 void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *); void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *); void FFI_HIDDEN ffi_closure_FASTCALL (ffi_closure *); void FFI_HIDDEN ffi_closure_REGISTER (ffi_closure *); #else void FFI_HIDDEN ffi_closure_win64 (ffi_closure *); #endif /* This function is jumped to by the trampoline */ #ifdef X86_WIN64 void * FFI_HIDDEN ffi_closure_win64_inner (ffi_closure *closure, void *args) { ffi_cif *cif; void **arg_area; void *result; void *resp = &result; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void*)); /* this call will initialize ARG_AREA, such that each * element in that array points to the corresponding * value on the stack; and if the function returns * a structure, it will change RESP to point to the * structure return address. */ ffi_prep_incoming_args(args, &resp, arg_area, cif); (closure->fun) (cif, resp, arg_area, closure->user_data); /* The result is returned in rax. This does the right thing for result types except for floats; we have to 'mov xmm0, rax' in the caller to correct this. TODO: structure sizes of 3 5 6 7 are returned by reference, too!!! */ return cif->rtype->size > sizeof(void *) ? resp : *(void **)resp; } #else unsigned int FFI_HIDDEN __attribute__ ((regparm(1))) ffi_closure_SYSV_inner (ffi_closure *closure, void **respp, void *args) { /* our various things... */ ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void*)); /* this call will initialize ARG_AREA, such that each * element in that array points to the corresponding * value on the stack; and if the function returns * a structure, it will change RESP to point to the * structure return address. */ ffi_prep_incoming_args(args, respp, arg_area, cif); (closure->fun) (cif, *respp, arg_area, closure->user_data); return cif->flags; } unsigned int FFI_HIDDEN __attribute__ ((regparm(1))) ffi_closure_WIN32_inner (ffi_closure *closure, void **respp, void *args) { /* our various things... */ ffi_cif *cif; void **arg_area; unsigned int ret; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void*)); /* this call will initialize ARG_AREA, such that each * element in that array points to the corresponding * value on the stack; and if the function returns * a structure, it will change RESP to point to the * structure return address. */ ret = ffi_prep_incoming_args(args, respp, arg_area, cif); (closure->fun) (cif, *respp, arg_area, closure->user_data); return ret; } #endif /* !X86_WIN64 */ static unsigned int ffi_prep_incoming_args(char *stack, void **rvalue, void **avalue, ffi_cif *cif) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; #ifndef X86_WIN64 const int cabi = cif->abi; const int dir = (cabi == FFI_PASCAL || cabi == FFI_REGISTER) ? -1 : +1; const unsigned int max_stack_count = (cabi == FFI_THISCALL) ? 1 : (cabi == FFI_FASTCALL) ? 2 : (cabi == FFI_REGISTER) ? 3 : 0; unsigned int passed_regs = 0; void *p_stack_data[3] = { stack - 1 }; #else #define dir 1 #endif argp = stack; #ifndef X86_WIN64 argp += max_stack_count * FFI_SIZEOF_ARG; #endif if ((cif->flags == FFI_TYPE_STRUCT || cif->flags == FFI_TYPE_MS_STRUCT) #ifdef X86_WIN64 && ((cif->rtype->size & (1 | 2 | 4 | 8)) == 0) #endif ) { #ifndef X86_WIN64 if (passed_regs < max_stack_count) { *rvalue = *(void**) (stack + (passed_regs*FFI_SIZEOF_ARG)); ++passed_regs; } else #endif { *rvalue = *(void **) argp; argp += sizeof(void *); } } #ifndef X86_WIN64 /* Do register arguments first */ for (i = 0, p_arg = cif->arg_types; i < cif->nargs && passed_regs < max_stack_count; i++, p_arg++) { if ((*p_arg)->type == FFI_TYPE_FLOAT || (*p_arg)->type == FFI_TYPE_STRUCT) continue; size_t sz = (*p_arg)->size; if(sz == 0 || sz > FFI_SIZEOF_ARG) continue; p_stack_data[passed_regs] = avalue + i; avalue[i] = stack + (passed_regs*FFI_SIZEOF_ARG); ++passed_regs; } #endif p_arg = cif->arg_types; p_argv = avalue; if (dir < 0) { const int nargs = cif->nargs - 1; if (nargs > 0) { p_arg += nargs; p_argv += nargs; } } for (i = cif->nargs; i != 0; i--, p_arg += dir, p_argv += dir) { /* Align if necessary */ if ((sizeof(void*) - 1) & (size_t) argp) argp = (char *) ALIGN(argp, sizeof(void*)); size_t z = (*p_arg)->size; #ifdef X86_WIN64 if (z > FFI_SIZEOF_ARG || ((*p_arg)->type == FFI_TYPE_STRUCT && (z & (1 | 2 | 4 | 8)) == 0) #if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE || ((*p_arg)->type == FFI_TYPE_LONGDOUBLE) #endif ) { z = FFI_SIZEOF_ARG; *p_argv = *(void **)argp; } else #else if (passed_regs > 0 && z <= FFI_SIZEOF_ARG && (p_argv == p_stack_data[0] || p_argv == p_stack_data[1] || p_argv == p_stack_data[2])) { /* Already assigned a register value */ continue; } else #endif { /* because we're little endian, this is what it turns into. */ *p_argv = (void*) argp; } #ifdef X86_WIN64 argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1); #else argp += z; #endif } return (size_t)argp - (size_t)stack; } #define FFI_INIT_TRAMPOLINE_WIN64(TRAMP,FUN,CTX,MASK) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ void* __fun = (void*)(FUN); \ void* __ctx = (void*)(CTX); \ *(unsigned char*) &__tramp[0] = 0x41; \ *(unsigned char*) &__tramp[1] = 0xbb; \ *(unsigned int*) &__tramp[2] = MASK; /* mov $mask, %r11 */ \ *(unsigned char*) &__tramp[6] = 0x48; \ *(unsigned char*) &__tramp[7] = 0xb8; \ *(void**) &__tramp[8] = __ctx; /* mov __ctx, %rax */ \ *(unsigned char *) &__tramp[16] = 0x49; \ *(unsigned char *) &__tramp[17] = 0xba; \ *(void**) &__tramp[18] = __fun; /* mov __fun, %r10 */ \ *(unsigned char *) &__tramp[26] = 0x41; \ *(unsigned char *) &__tramp[27] = 0xff; \ *(unsigned char *) &__tramp[28] = 0xe2; /* jmp %r10 */ \ } /* How to make a trampoline. Derived from gcc/config/i386/i386.c. */ #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ unsigned int __dis = __fun - (__ctx + 10); \ *(unsigned char*) &__tramp[0] = 0xb8; \ *(unsigned int*) &__tramp[1] = __ctx; /* movl __ctx, %eax */ \ *(unsigned char*) &__tramp[5] = 0xe9; \ *(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \ } #define FFI_INIT_TRAMPOLINE_RAW_THISCALL(TRAMP,FUN,CTX,SIZE) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ unsigned int __dis = __fun - (__ctx + 49); \ unsigned short __size = (unsigned short)(SIZE); \ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \ *(unsigned int *) &__tramp[8] = 0x04890424; /* mov %ecx, 4(%esp) */ \ *(unsigned char*) &__tramp[12] = 0x24; /* mov %eax, (%esp) */ \ *(unsigned char*) &__tramp[13] = 0xb8; \ *(unsigned int *) &__tramp[14] = __size; /* mov __size, %eax */ \ *(unsigned int *) &__tramp[18] = 0x08244c8d; /* lea 8(%esp), %ecx */ \ *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \ *(unsigned short*) &__tramp[26] = 0x0b74; /* jz 1f */ \ *(unsigned int *) &__tramp[28] = 0x8908518b; /* 2b: mov 8(%ecx), %edx */ \ *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \ *(unsigned char*) &__tramp[36] = 0x48; /* dec %eax */ \ *(unsigned short*) &__tramp[37] = 0xf575; /* jnz 2b ; 1f: */ \ *(unsigned char*) &__tramp[39] = 0xb8; \ *(unsigned int*) &__tramp[40] = __ctx; /* movl __ctx, %eax */ \ *(unsigned char *) &__tramp[44] = 0xe8; \ *(unsigned int*) &__tramp[45] = __dis; /* call __fun */ \ *(unsigned char*) &__tramp[49] = 0xc2; /* ret */ \ *(unsigned short*) &__tramp[50] = (__size + 8); /* ret (__size + 8) */ \ } #define FFI_INIT_TRAMPOLINE_WIN32(TRAMP,FUN,CTX) \ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ unsigned int __dis = __fun - (__ctx + 10); \ *(unsigned char*) &__tramp[0] = 0x68; \ *(unsigned int*) &__tramp[1] = __ctx; /* push __ctx */ \ *(unsigned char*) &__tramp[5] = 0xe9; \ *(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \ } /* the cif must already be prep'ed */ ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { #ifdef X86_WIN64 #define ISFLOAT(IDX) (cif->arg_types[IDX]->type == FFI_TYPE_FLOAT || cif->arg_types[IDX]->type == FFI_TYPE_DOUBLE) #define FLAG(IDX) (cif->nargs>(IDX)&&ISFLOAT(IDX)?(1<<(IDX)):0) if (cif->abi == FFI_WIN64) { int mask = FLAG(0)|FLAG(1)|FLAG(2)|FLAG(3); FFI_INIT_TRAMPOLINE_WIN64 (&closure->tramp[0], &ffi_closure_win64, codeloc, mask); /* make sure we can execute here */ } #else if (cif->abi == FFI_SYSV) { FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, (void*)codeloc); } else if (cif->abi == FFI_REGISTER) { FFI_INIT_TRAMPOLINE_WIN32 (&closure->tramp[0], &ffi_closure_REGISTER, (void*)codeloc); } else if (cif->abi == FFI_FASTCALL) { FFI_INIT_TRAMPOLINE_WIN32 (&closure->tramp[0], &ffi_closure_FASTCALL, (void*)codeloc); } else if (cif->abi == FFI_THISCALL) { FFI_INIT_TRAMPOLINE_WIN32 (&closure->tramp[0], &ffi_closure_THISCALL, (void*)codeloc); } else if (cif->abi == FFI_STDCALL || cif->abi == FFI_PASCAL) { FFI_INIT_TRAMPOLINE_WIN32 (&closure->tramp[0], &ffi_closure_STDCALL, (void*)codeloc); } #ifdef X86_WIN32 else if (cif->abi == FFI_MS_CDECL) { FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, (void*)codeloc); } #endif /* X86_WIN32 */ #endif /* !X86_WIN64 */ else { return FFI_BAD_ABI; } closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } /* ------- Native raw API support -------------------------------- */ #if !FFI_NO_RAW_API ffi_status ffi_prep_raw_closure_loc (ffi_raw_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data, void *codeloc) { int i; if (cif->abi != FFI_SYSV #ifdef X86_WIN32 && cif->abi != FFI_THISCALL #endif ) return FFI_BAD_ABI; /* we currently don't support certain kinds of arguments for raw closures. This should be implemented by a separate assembly language routine, since it would require argument processing, something we don't do now for performance. */ for (i = cif->nargs-1; i >= 0; i--) { FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_STRUCT); FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE); } #ifdef X86_WIN32 if (cif->abi == FFI_SYSV) { #endif FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV, codeloc); #ifdef X86_WIN32 } else if (cif->abi == FFI_THISCALL) { FFI_INIT_TRAMPOLINE_RAW_THISCALL (&closure->tramp[0], &ffi_closure_raw_THISCALL, codeloc, cif->bytes); } #endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } static unsigned int ffi_prep_args_raw(char *stack, extended_cif *ecif) { const ffi_cif *cif = ecif->cif; unsigned int i, passed_regs = 0; #ifndef X86_WIN64 const unsigned int abi = cif->abi; const unsigned int max_regs = (abi == FFI_THISCALL) ? 1 : (abi == FFI_FASTCALL) ? 2 : (abi == FFI_REGISTER) ? 3 : 0; if (cif->flags == FFI_TYPE_STRUCT) ++passed_regs; for (i = 0; i < cif->nargs && passed_regs <= max_regs; i++) { if (cif->arg_types[i]->type == FFI_TYPE_FLOAT || cif->arg_types[i]->type == FFI_TYPE_STRUCT) continue; size_t sz = cif->arg_types[i]->size; if (sz == 0 || sz > FFI_SIZEOF_ARG) continue; ++passed_regs; } #endif memcpy (stack, ecif->avalue, cif->bytes); return passed_regs; } /* we borrow this routine from libffi (it must be changed, though, to * actually call the function passed in the first argument. as of * libffi-1.20, this is not the case.) */ void ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue) { extended_cif ecif; void **avalue = (void **)fake_avalue; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if (rvalue == NULL && (cif->flags == FFI_TYPE_STRUCT || cif->flags == FFI_TYPE_MS_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { #ifndef X86_WIN32 case FFI_SYSV: ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; #else case FFI_SYSV: case FFI_MS_CDECL: #endif #ifndef X86_WIN64 case FFI_STDCALL: case FFI_THISCALL: case FFI_FASTCALL: case FFI_PASCAL: case FFI_REGISTER: ffi_call_win32(ffi_prep_args_raw, &ecif, cif->abi, cif->bytes, cif->flags, ecif.rvalue, fn); break; #endif default: FFI_ASSERT(0); break; } } #endif #endif /* !__x86_64__ || X86_WIN64 */ polyml-5.7.1/libffi/src/x86/sysv.S0000644000175000017500000003020213204034553015573 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2013 The Written Word, Inc. - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. X86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef __x86_64__ #define LIBFFI_ASM #include #include .text .globl ffi_prep_args .align 4 .globl ffi_call_SYSV .type ffi_call_SYSV,@function ffi_call_SYSV: .LFB1: pushl %ebp .LCFI0: movl %esp,%ebp .LCFI1: /* Make room for all of the new args. */ movl 16(%ebp),%ecx subl %ecx,%esp /* Align the stack pointer to 16-bytes */ andl $0xfffffff0, %esp movl %esp,%eax /* Place all of the ffi_prep_args in position */ pushl 12(%ebp) pushl %eax call *8(%ebp) /* Return stack to previous state and call the function */ addl $8,%esp call *28(%ebp) /* Load %ecx with the return type code */ movl 20(%ebp),%ecx /* Protect %esi. We're going to pop it in the epilogue. */ pushl %esi /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) jne 0f /* Even if there is no space for the return value, we are obliged to handle floating-point values. */ cmpl $FFI_TYPE_FLOAT,%ecx jne noretval fstp %st(0) jmp epilogue 0: call 1f .Lstore_table: .long noretval-.Lstore_table /* FFI_TYPE_VOID */ .long retint-.Lstore_table /* FFI_TYPE_INT */ .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ .long retint-.Lstore_table /* FFI_TYPE_POINTER */ 1: pop %esi add (%esi, %ecx, 4), %esi jmp *%esi /* Sign/zero extend as appropriate. */ retsint8: movsbl %al, %eax jmp retint retsint16: movswl %ax, %eax jmp retint retuint8: movzbl %al, %eax jmp retint retuint16: movzwl %ax, %eax jmp retint retfloat: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue retdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue retlongdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue retint64: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) jmp epilogue retint: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) retstruct: /* Nothing to do! */ noretval: epilogue: popl %esi movl %ebp,%esp popl %ebp ret .LFE1: .ffi_call_SYSV_end: .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV .align 4 FFI_HIDDEN (ffi_closure_SYSV) .globl ffi_closure_SYSV .type ffi_closure_SYSV, @function ffi_closure_SYSV: .LFB2: pushl %ebp .LCFI2: movl %esp, %ebp .LCFI3: subl $40, %esp leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 8(%ebp), %edx #ifdef __SUNPRO_C /* The SUNPRO compiler doesn't support GCC's regparm function attribute, so we have to pass all three arguments to ffi_closure_SYSV_inner on the stack. */ movl %edx, 8(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, 4(%esp) /* &resp */ movl %eax, (%esp) /* closure */ #else movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ #endif #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__ call ffi_closure_SYSV_inner #else movl %ebx, 8(%esp) .LCFI7: call 1f 1: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx call ffi_closure_SYSV_inner@PLT movl 8(%esp), %ebx #endif movl -12(%ebp), %ecx cmpl $FFI_TYPE_INT, %eax je .Lcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lcls_retllong cmpl $FFI_TYPE_STRUCT, %eax je .Lcls_retstruct .Lcls_epilogue: movl %ebp, %esp popl %ebp ret .Lcls_retint: movl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retfloat: flds (%ecx) jmp .Lcls_epilogue .Lcls_retdouble: fldl (%ecx) jmp .Lcls_epilogue .Lcls_retldouble: fldt (%ecx) jmp .Lcls_epilogue .Lcls_retllong: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue .Lcls_retstruct: movl %ebp, %esp popl %ebp ret $4 .LFE2: .size ffi_closure_SYSV, .-ffi_closure_SYSV #if !FFI_NO_RAW_API /* Precalculate for e.g. the Solaris 10/x86 assembler. */ #if FFI_TRAMPOLINE_SIZE == 10 #define RAW_CLOSURE_CIF_OFFSET 12 #define RAW_CLOSURE_FUN_OFFSET 16 #define RAW_CLOSURE_USER_DATA_OFFSET 20 #elif FFI_TRAMPOLINE_SIZE == 24 #define RAW_CLOSURE_CIF_OFFSET 24 #define RAW_CLOSURE_FUN_OFFSET 28 #define RAW_CLOSURE_USER_DATA_OFFSET 32 #else #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #endif #define CIF_FLAGS_OFFSET 20 .align 4 FFI_HIDDEN (ffi_closure_raw_SYSV) .globl ffi_closure_raw_SYSV .type ffi_closure_raw_SYSV, @function ffi_closure_raw_SYSV: .LFB3: pushl %ebp .LCFI4: movl %esp, %ebp .LCFI5: pushl %esi .LCFI6: subl $36, %esp movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ movl %esi, (%esp) /* cif */ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ cmpl $FFI_TYPE_INT, %eax je .Lrcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lrcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lrcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lrcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lrcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lrcls_retllong .Lrcls_epilogue: addl $36, %esp popl %esi popl %ebp ret .Lrcls_retint: movl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retfloat: flds -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retdouble: fldl -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retldouble: fldt -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retllong: movl -24(%ebp), %eax movl -20(%ebp), %edx jmp .Lrcls_epilogue .LFE3: .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV #endif #if defined __GNUC__ /* Only emit dwarf unwind info when building with GNU toolchain. */ #if defined __PIC__ # if defined __sun__ && defined __svr4__ /* 32-bit Solaris 2/x86 uses datarel encoding for PIC. GNU ld before 2.22 doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this. */ # define FDE_ENCODING 0x30 /* datarel */ # define FDE_ENCODE(X) X@GOTOFF # else # define FDE_ENCODING 0x1b /* pcrel sdata4 */ # if defined HAVE_AS_X86_PCREL # define FDE_ENCODE(X) X-. # else # define FDE_ENCODE(X) X@rel # endif # endif #else # define FDE_ENCODING 0 /* absolute */ # define FDE_ENCODE(X) X #endif .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */ .LSCIE1: .long 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #ifdef HAVE_AS_ASCII_PSEUDO_OP #ifdef __PIC__ .ascii "zR\0" /* CIE Augmentation */ #else .ascii "\0" /* CIE Augmentation */ #endif #elif defined HAVE_AS_STRING_PSEUDO_OP #ifdef __PIC__ .string "zR" /* CIE Augmentation */ #else .string "" /* CIE Augmentation */ #endif #else #error missing .ascii/.string #endif .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ .byte 0x8 /* CIE RA Column */ #ifdef __PIC__ .byte 0x1 /* .uleb128 0x1; Augmentation size */ .byte FDE_ENCODING #endif .byte 0xc /* DW_CFA_def_cfa */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x88 /* DW_CFA_offset, column 0x8 */ .byte 0x1 /* .uleb128 0x1 */ .align 4 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ .long FDE_ENCODE(.LFB1) /* FDE initial location */ .long .LFE1-.LFB1 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI0-.LFB1 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI1-.LCFI0 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ .align 4 .LEFDE1: .LSFDE2: .long .LEFDE2-.LASFDE2 /* FDE Length */ .LASFDE2: .long .LASFDE2-.Lframe1 /* FDE CIE offset */ .long FDE_ENCODE(.LFB2) /* FDE initial location */ .long .LFE2-.LFB2 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI2-.LFB2 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI3-.LCFI2 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ #if !defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE && defined __PIC__ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI7-.LCFI3 .byte 0x83 /* DW_CFA_offset, column 0x3 */ .byte 0xa /* .uleb128 0xa */ #endif .align 4 .LEFDE2: #if !FFI_NO_RAW_API .LSFDE3: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ .long FDE_ENCODE(.LFB3) /* FDE initial location */ .long .LFE3-.LFB3 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI4-.LFB3 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI5-.LCFI4 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI6-.LCFI5 .byte 0x86 /* DW_CFA_offset, column 0x6 */ .byte 0x3 /* .uleb128 0x3 */ .align 4 .LEFDE3: #endif #endif #endif /* ifndef __x86_64__ */ #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/x86/ffi64.c0000644000175000017500000004444313204034553015541 0ustar daviddavid/* ----------------------------------------------------------------------- ffi64.c - Copyright (c) 2013 The Written Word, Inc. Copyright (c) 2011 Anthony Green Copyright (c) 2008, 2010 Red Hat, Inc. Copyright (c) 2002, 2007 Bo Thorsen x86-64 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include #ifdef __x86_64__ #define MAX_GPR_REGS 6 #define MAX_SSE_REGS 8 #if defined(__INTEL_COMPILER) #include "xmmintrin.h" #define UINT128 __m128 #else #if defined(__SUNPRO_C) #include #define UINT128 __m128i #else #define UINT128 __int128_t #endif #endif union big_int_union { UINT32 i32; UINT64 i64; UINT128 i128; }; struct register_args { /* Registers for argument passing. */ UINT64 gpr[MAX_GPR_REGS]; union big_int_union sse[MAX_SSE_REGS]; }; extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, void *raddr, void (*fnaddr)(void), unsigned ssecount); /* All reference to register classes here is identical to the code in gcc/config/i386/i386.c. Do *not* change one without the other. */ /* Register class used for passing given 64bit part of the argument. These represent classes as documented by the PS ABI, with the exception of SSESF, SSEDF classes, that are basically SSE class, just gcc will use SF or DFmode move instead of DImode to avoid reformatting penalties. Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves whenever possible (upper half does contain padding). */ enum x86_64_reg_class { X86_64_NO_CLASS, X86_64_INTEGER_CLASS, X86_64_INTEGERSI_CLASS, X86_64_SSE_CLASS, X86_64_SSESF_CLASS, X86_64_SSEDF_CLASS, X86_64_SSEUP_CLASS, X86_64_X87_CLASS, X86_64_X87UP_CLASS, X86_64_COMPLEX_X87_CLASS, X86_64_MEMORY_CLASS }; #define MAX_CLASSES 4 #define SSE_CLASS_P(X) ((X) >= X86_64_SSE_CLASS && X <= X86_64_SSEUP_CLASS) /* x86-64 register passing implementation. See x86-64 ABI for details. Goal of this code is to classify each 8bytes of incoming argument by the register class and assign registers accordingly. */ /* Return the union class of CLASS1 and CLASS2. See the x86-64 PS ABI for details. */ static enum x86_64_reg_class merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) { /* Rule #1: If both classes are equal, this is the resulting class. */ if (class1 == class2) return class1; /* Rule #2: If one of the classes is NO_CLASS, the resulting class is the other class. */ if (class1 == X86_64_NO_CLASS) return class2; if (class2 == X86_64_NO_CLASS) return class1; /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) return X86_64_MEMORY_CLASS; /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) return X86_64_INTEGERSI_CLASS; if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) return X86_64_INTEGER_CLASS; /* Rule #5: If one of the classes is X87, X87UP, or COMPLEX_X87 class, MEMORY is used. */ if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS || class1 == X86_64_COMPLEX_X87_CLASS || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS || class2 == X86_64_COMPLEX_X87_CLASS) return X86_64_MEMORY_CLASS; /* Rule #6: Otherwise class SSE is used. */ return X86_64_SSE_CLASS; } /* Classify the argument of type TYPE and mode MODE. CLASSES will be filled by the register class used to pass each word of the operand. The number of words is returned. In case the parameter should be passed in memory, 0 is returned. As a special case for zero sized containers, classes[0] will be NO_CLASS and 1 is returned. See the x86-64 PS ABI for details. */ static size_t classify_argument (ffi_type *type, enum x86_64_reg_class classes[], size_t byte_offset) { switch (type->type) { case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_POINTER: { size_t size = byte_offset + type->size; if (size <= 4) { classes[0] = X86_64_INTEGERSI_CLASS; return 1; } else if (size <= 8) { classes[0] = X86_64_INTEGER_CLASS; return 1; } else if (size <= 12) { classes[0] = X86_64_INTEGER_CLASS; classes[1] = X86_64_INTEGERSI_CLASS; return 2; } else if (size <= 16) { classes[0] = classes[1] = X86_64_INTEGERSI_CLASS; return 2; } else FFI_ASSERT (0); } case FFI_TYPE_FLOAT: if (!(byte_offset % 8)) classes[0] = X86_64_SSESF_CLASS; else classes[0] = X86_64_SSE_CLASS; return 1; case FFI_TYPE_DOUBLE: classes[0] = X86_64_SSEDF_CLASS; return 1; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: classes[0] = X86_64_X87_CLASS; classes[1] = X86_64_X87UP_CLASS; return 2; #endif case FFI_TYPE_STRUCT: { const size_t UNITS_PER_WORD = 8; size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; ffi_type **ptr; int i; enum x86_64_reg_class subclasses[MAX_CLASSES]; /* If the struct is larger than 32 bytes, pass it on the stack. */ if (type->size > 32) return 0; for (i = 0; i < words; i++) classes[i] = X86_64_NO_CLASS; /* Zero sized arrays or structures are NO_CLASS. We return 0 to signalize memory class, so handle it as special case. */ if (!words) { classes[0] = X86_64_NO_CLASS; return 1; } /* Merge the fields of structure. */ for (ptr = type->elements; *ptr != NULL; ptr++) { size_t num; byte_offset = ALIGN (byte_offset, (*ptr)->alignment); num = classify_argument (*ptr, subclasses, byte_offset % 8); if (num == 0) return 0; for (i = 0; i < num; i++) { size_t pos = byte_offset / 8; classes[i + pos] = merge_classes (subclasses[i], classes[i + pos]); } byte_offset += (*ptr)->size; } if (words > 2) { /* When size > 16 bytes, if the first one isn't X86_64_SSE_CLASS or any other ones aren't X86_64_SSEUP_CLASS, everything should be passed in memory. */ if (classes[0] != X86_64_SSE_CLASS) return 0; for (i = 1; i < words; i++) if (classes[i] != X86_64_SSEUP_CLASS) return 0; } /* Final merger cleanup. */ for (i = 0; i < words; i++) { /* If one class is MEMORY, everything should be passed in memory. */ if (classes[i] == X86_64_MEMORY_CLASS) return 0; /* The X86_64_SSEUP_CLASS should be always preceded by X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */ if (classes[i] == X86_64_SSEUP_CLASS && classes[i - 1] != X86_64_SSE_CLASS && classes[i - 1] != X86_64_SSEUP_CLASS) { /* The first one should never be X86_64_SSEUP_CLASS. */ FFI_ASSERT (i != 0); classes[i] = X86_64_SSE_CLASS; } /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS, everything should be passed in memory. */ if (classes[i] == X86_64_X87UP_CLASS && (classes[i - 1] != X86_64_X87_CLASS)) { /* The first one should never be X86_64_X87UP_CLASS. */ FFI_ASSERT (i != 0); return 0; } } return words; } default: FFI_ASSERT(0); } return 0; /* Never reached. */ } /* Examine the argument and return set number of register required in each class. Return zero iff parameter should be passed in memory, otherwise the number of registers. */ static size_t examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES], _Bool in_return, int *pngpr, int *pnsse) { size_t n; int i, ngpr, nsse; n = classify_argument (type, classes, 0); if (n == 0) return 0; ngpr = nsse = 0; for (i = 0; i < n; ++i) switch (classes[i]) { case X86_64_INTEGER_CLASS: case X86_64_INTEGERSI_CLASS: ngpr++; break; case X86_64_SSE_CLASS: case X86_64_SSESF_CLASS: case X86_64_SSEDF_CLASS: nsse++; break; case X86_64_NO_CLASS: case X86_64_SSEUP_CLASS: break; case X86_64_X87_CLASS: case X86_64_X87UP_CLASS: case X86_64_COMPLEX_X87_CLASS: return in_return != 0; default: abort (); } *pngpr = ngpr; *pnsse = nsse; return n; } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { int gprcount, ssecount, i, avn, ngpr, nsse, flags; enum x86_64_reg_class classes[MAX_CLASSES]; size_t bytes, n; gprcount = ssecount = 0; flags = cif->rtype->type; if (flags != FFI_TYPE_VOID) { n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); if (n == 0) { /* The return value is passed in memory. A pointer to that memory is the first argument. Allocate a register for it. */ gprcount++; /* We don't have to do anything in asm for the return. */ flags = FFI_TYPE_VOID; } else if (flags == FFI_TYPE_STRUCT) { /* Mark which registers the result appears in. */ _Bool sse0 = SSE_CLASS_P (classes[0]); _Bool sse1 = n == 2 && SSE_CLASS_P (classes[1]); if (sse0 && !sse1) flags |= 1 << 8; else if (!sse0 && sse1) flags |= 1 << 9; else if (sse0 && sse1) flags |= 1 << 10; /* Mark the true size of the structure. */ flags |= cif->rtype->size << 12; } } /* Go over all arguments and determine the way they should be passed. If it's in a register and there is space for it, let that be so. If not, add it's size to the stack byte count. */ for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++) { if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0 || gprcount + ngpr > MAX_GPR_REGS || ssecount + nsse > MAX_SSE_REGS) { long align = cif->arg_types[i]->alignment; if (align < 8) align = 8; bytes = ALIGN (bytes, align); bytes += cif->arg_types[i]->size; } else { gprcount += ngpr; ssecount += nsse; } } if (ssecount) flags |= 1 << 11; cif->flags = flags; cif->bytes = (unsigned)ALIGN (bytes, 8); return FFI_OK; } void ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { enum x86_64_reg_class classes[MAX_CLASSES]; char *stack, *argp; ffi_type **arg_types; int gprcount, ssecount, ngpr, nsse, i, avn; _Bool ret_in_memory; struct register_args *reg_args; /* Can't call 32-bit mode from 64-bit mode. */ FFI_ASSERT (cif->abi == FFI_UNIX64); /* If the return value is a struct and we don't have a return value address then we need to make one. Note the setting of flags to VOID above in ffi_prep_cif_machdep. */ ret_in_memory = (cif->rtype->type == FFI_TYPE_STRUCT && (cif->flags & 0xff) == FFI_TYPE_VOID); if (rvalue == NULL && ret_in_memory) rvalue = alloca (cif->rtype->size); /* Allocate the space for the arguments, plus 4 words of temp space. */ stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8); reg_args = (struct register_args *) stack; argp = stack + sizeof (struct register_args); gprcount = ssecount = 0; /* If the return value is passed in memory, add the pointer as the first integer argument. */ if (ret_in_memory) reg_args->gpr[gprcount++] = (unsigned long) rvalue; avn = cif->nargs; arg_types = cif->arg_types; for (i = 0; i < avn; ++i) { size_t n, size = arg_types[i]->size; n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); if (n == 0 || gprcount + ngpr > MAX_GPR_REGS || ssecount + nsse > MAX_SSE_REGS) { long align = arg_types[i]->alignment; /* Stack arguments are *always* at least 8 byte aligned. */ if (align < 8) align = 8; /* Pass this argument in memory. */ argp = (void *) ALIGN (argp, align); memcpy (argp, avalue[i], size); argp += size; } else { /* The argument is passed entirely in registers. */ char *a = (char *) avalue[i]; int j; for (j = 0; j < n; j++, a += 8, size -= 8) { switch (classes[j]) { case X86_64_INTEGER_CLASS: case X86_64_INTEGERSI_CLASS: /* Sign-extend integer arguments passed in general purpose registers, to cope with the fact that LLVM incorrectly assumes that this will be done (the x86-64 PS ABI does not specify this). */ switch (arg_types[i]->type) { case FFI_TYPE_SINT8: *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT8 *) a); break; case FFI_TYPE_SINT16: *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT16 *) a); break; case FFI_TYPE_SINT32: *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT32 *) a); break; default: reg_args->gpr[gprcount] = 0; memcpy (®_args->gpr[gprcount], a, size < 8 ? size : 8); } gprcount++; break; case X86_64_SSE_CLASS: case X86_64_SSEDF_CLASS: reg_args->sse[ssecount++].i64 = *(UINT64 *) a; break; case X86_64_SSESF_CLASS: reg_args->sse[ssecount++].i32 = *(UINT32 *) a; break; default: abort(); } } } } ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args), cif->flags, rvalue, fn, ssecount); } extern void ffi_closure_unix64(void); ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { volatile unsigned short *tramp; /* Sanity check on the cif ABI. */ { int abi = cif->abi; if (UNLIKELY (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))) return FFI_BAD_ABI; } tramp = (volatile unsigned short *) &closure->tramp[0]; tramp[0] = 0xbb49; /* mov , %r11 */ *((unsigned long long * volatile) &tramp[1]) = (unsigned long) ffi_closure_unix64; tramp[5] = 0xba49; /* mov , %r10 */ *((unsigned long long * volatile) &tramp[6]) = (unsigned long) codeloc; /* Set the carry bit iff the function uses any sse registers. This is clc or stc, together with the first byte of the jmp. */ tramp[10] = cif->flags & (1 << 11) ? 0x49f9 : 0x49f8; tramp[11] = 0xe3ff; /* jmp *%r11 */ closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } int ffi_closure_unix64_inner(ffi_closure *closure, void *rvalue, struct register_args *reg_args, char *argp) { ffi_cif *cif; void **avalue; ffi_type **arg_types; long i, avn; int gprcount, ssecount, ngpr, nsse; int ret; cif = closure->cif; avalue = alloca(cif->nargs * sizeof(void *)); gprcount = ssecount = 0; ret = cif->rtype->type; if (ret != FFI_TYPE_VOID) { enum x86_64_reg_class classes[MAX_CLASSES]; size_t n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); if (n == 0) { /* The return value goes in memory. Arrange for the closure return value to go directly back to the original caller. */ rvalue = (void *) (unsigned long) reg_args->gpr[gprcount++]; /* We don't have to do anything in asm for the return. */ ret = FFI_TYPE_VOID; } else if (ret == FFI_TYPE_STRUCT && n == 2) { /* Mark which register the second word of the structure goes in. */ _Bool sse0 = SSE_CLASS_P (classes[0]); _Bool sse1 = SSE_CLASS_P (classes[1]); if (!sse0 && sse1) ret |= 1 << 8; else if (sse0 && !sse1) ret |= 1 << 9; } } avn = cif->nargs; arg_types = cif->arg_types; for (i = 0; i < avn; ++i) { enum x86_64_reg_class classes[MAX_CLASSES]; size_t n; n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); if (n == 0 || gprcount + ngpr > MAX_GPR_REGS || ssecount + nsse > MAX_SSE_REGS) { long align = arg_types[i]->alignment; /* Stack arguments are *always* at least 8 byte aligned. */ if (align < 8) align = 8; /* Pass this argument in memory. */ argp = (void *) ALIGN (argp, align); avalue[i] = argp; argp += arg_types[i]->size; } /* If the argument is in a single register, or two consecutive integer registers, then we can use that address directly. */ else if (n == 1 || (n == 2 && !(SSE_CLASS_P (classes[0]) || SSE_CLASS_P (classes[1])))) { /* The argument is in a single register. */ if (SSE_CLASS_P (classes[0])) { avalue[i] = ®_args->sse[ssecount]; ssecount += n; } else { avalue[i] = ®_args->gpr[gprcount]; gprcount += n; } } /* Otherwise, allocate space to make them consecutive. */ else { char *a = alloca (16); int j; avalue[i] = a; for (j = 0; j < n; j++, a += 8) { if (SSE_CLASS_P (classes[j])) memcpy (a, ®_args->sse[ssecount++], 8); else memcpy (a, ®_args->gpr[gprcount++], 8); } } } /* Invoke the closure. */ closure->fun (cif, rvalue, avalue, closure->user_data); /* Tell assembly how to perform return type promotions. */ return ret; } #endif /* __x86_64__ */ polyml-5.7.1/libffi/src/x86/win32.S0000644000175000017500000012010613204034553015534 0ustar daviddavid/* ----------------------------------------------------------------------- win32.S - Copyright (c) 2014 Anthony Green Copyright (c) 1996, 1998, 2001, 2002, 2009 Red Hat, Inc. Copyright (c) 2001 John Beniton Copyright (c) 2002 Ranjit Mathew Copyright (c) 2009 Daniel Witte X86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #define CIF_BYTES_OFFSET 16 #define CIF_FLAGS_OFFSET 20 #ifdef _MSC_VER #define CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) AND NOT 3) .386 .MODEL FLAT, C EXTRN ffi_closure_SYSV_inner:NEAR EXTRN ffi_closure_WIN32_inner:NEAR _TEXT SEGMENT ffi_call_win32 PROC NEAR, ffi_prep_args : NEAR PTR DWORD, ecif : NEAR PTR DWORD, cif_abi : DWORD, cif_bytes : DWORD, cif_flags : DWORD, rvalue : NEAR PTR DWORD, fn : NEAR PTR DWORD ;; Make room for all of the new args. mov ecx, cif_bytes sub esp, ecx mov eax, esp ;; Call ffi_prep_args push ecif push eax call ffi_prep_args add esp, 8 ;; Prepare registers ;; EAX stores the number of register arguments cmp eax, 0 je fun cmp eax, 3 jl prepr_two_cmp mov ecx, esp add esp, 12 mov eax, DWORD PTR [ecx+8] jmp prepr_two prepr_two_cmp: cmp eax, 2 jl prepr_one_prep mov ecx, esp add esp, 8 prepr_two: mov edx, DWORD PTR [ecx+4] jmp prepr_one prepr_one_prep: mov ecx, esp add esp, 4 prepr_one: mov ecx, DWORD PTR [ecx] cmp cif_abi, 7 ;; FFI_REGISTER jne fun xchg ecx, eax fun: ;; Call function call fn ;; Load ecx with the return type code mov ecx, cif_flags ;; If the return value pointer is NULL, assume no return value. cmp rvalue, 0 jne ca_jumptable ;; Even if there is no space for the return value, we are ;; obliged to handle floating-point values. cmp ecx, FFI_TYPE_FLOAT jne ca_epilogue fstp st(0) jmp ca_epilogue ca_jumptable: jmp [ca_jumpdata + 4 * ecx] ca_jumpdata: ;; Do not insert anything here between label and jump table. dd offset ca_epilogue ;; FFI_TYPE_VOID dd offset ca_retint ;; FFI_TYPE_INT dd offset ca_retfloat ;; FFI_TYPE_FLOAT dd offset ca_retdouble ;; FFI_TYPE_DOUBLE dd offset ca_retlongdouble ;; FFI_TYPE_LONGDOUBLE dd offset ca_retuint8 ;; FFI_TYPE_UINT8 dd offset ca_retsint8 ;; FFI_TYPE_SINT8 dd offset ca_retuint16 ;; FFI_TYPE_UINT16 dd offset ca_retsint16 ;; FFI_TYPE_SINT16 dd offset ca_retint ;; FFI_TYPE_UINT32 dd offset ca_retint ;; FFI_TYPE_SINT32 dd offset ca_retint64 ;; FFI_TYPE_UINT64 dd offset ca_retint64 ;; FFI_TYPE_SINT64 dd offset ca_epilogue ;; FFI_TYPE_STRUCT dd offset ca_retint ;; FFI_TYPE_POINTER dd offset ca_retstruct1b ;; FFI_TYPE_SMALL_STRUCT_1B dd offset ca_retstruct2b ;; FFI_TYPE_SMALL_STRUCT_2B dd offset ca_retint ;; FFI_TYPE_SMALL_STRUCT_4B dd offset ca_epilogue ;; FFI_TYPE_MS_STRUCT /* Sign/zero extend as appropriate. */ ca_retuint8: movzx eax, al jmp ca_retint ca_retsint8: movsx eax, al jmp ca_retint ca_retuint16: movzx eax, ax jmp ca_retint ca_retsint16: movsx eax, ax jmp ca_retint ca_retint: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue mov [ecx + 0], eax jmp ca_epilogue ca_retint64: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue mov [ecx + 0], eax mov [ecx + 4], edx jmp ca_epilogue ca_retfloat: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue fstp DWORD PTR [ecx] jmp ca_epilogue ca_retdouble: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue fstp QWORD PTR [ecx] jmp ca_epilogue ca_retlongdouble: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue fstp TBYTE PTR [ecx] jmp ca_epilogue ca_retstruct1b: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue mov [ecx + 0], al jmp ca_epilogue ca_retstruct2b: ;; Load %ecx with the pointer to storage for the return value mov ecx, rvalue mov [ecx + 0], ax jmp ca_epilogue ca_epilogue: ;; Epilogue code is autogenerated. ret ffi_call_win32 ENDP ffi_closure_THISCALL PROC NEAR ;; Insert the register argument on the stack as the first argument xchg DWORD PTR [esp+4], ecx xchg DWORD PTR [esp], ecx push ecx jmp ffi_closure_STDCALL ffi_closure_THISCALL ENDP ffi_closure_FASTCALL PROC NEAR ;; Insert the 2 register arguments on the stack as the first argument xchg DWORD PTR [esp+4], edx xchg DWORD PTR [esp], ecx push edx push ecx jmp ffi_closure_STDCALL ffi_closure_FASTCALL ENDP ffi_closure_REGISTER PROC NEAR ;; Insert the 3 register arguments on the stack as the first argument push eax xchg DWORD PTR [esp+8], ecx xchg DWORD PTR [esp+4], edx push ecx push edx jmp ffi_closure_STDCALL ffi_closure_REGISTER ENDP ffi_closure_SYSV PROC NEAR FORCEFRAME ;; the ffi_closure ctx is passed in eax by the trampoline. sub esp, 40 lea edx, [ebp - 24] mov [ebp - 12], edx ;; resp lea edx, [ebp + 8] stub:: mov [esp + 8], edx ;; args lea edx, [ebp - 12] mov [esp + 4], edx ;; &resp mov [esp], eax ;; closure call ffi_closure_SYSV_inner mov ecx, [ebp - 12] cs_jumptable: jmp [cs_jumpdata + 4 * eax] cs_jumpdata: ;; Do not insert anything here between the label and jump table. dd offset cs_epilogue ;; FFI_TYPE_VOID dd offset cs_retint ;; FFI_TYPE_INT dd offset cs_retfloat ;; FFI_TYPE_FLOAT dd offset cs_retdouble ;; FFI_TYPE_DOUBLE dd offset cs_retlongdouble ;; FFI_TYPE_LONGDOUBLE dd offset cs_retuint8 ;; FFI_TYPE_UINT8 dd offset cs_retsint8 ;; FFI_TYPE_SINT8 dd offset cs_retuint16 ;; FFI_TYPE_UINT16 dd offset cs_retsint16 ;; FFI_TYPE_SINT16 dd offset cs_retint ;; FFI_TYPE_UINT32 dd offset cs_retint ;; FFI_TYPE_SINT32 dd offset cs_retint64 ;; FFI_TYPE_UINT64 dd offset cs_retint64 ;; FFI_TYPE_SINT64 dd offset cs_retstruct ;; FFI_TYPE_STRUCT dd offset cs_retint ;; FFI_TYPE_POINTER dd offset cs_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B dd offset cs_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B dd offset cs_retint ;; FFI_TYPE_SMALL_STRUCT_4B dd offset cs_retmsstruct ;; FFI_TYPE_MS_STRUCT cs_retuint8: movzx eax, BYTE PTR [ecx] jmp cs_epilogue cs_retsint8: movsx eax, BYTE PTR [ecx] jmp cs_epilogue cs_retuint16: movzx eax, WORD PTR [ecx] jmp cs_epilogue cs_retsint16: movsx eax, WORD PTR [ecx] jmp cs_epilogue cs_retint: mov eax, [ecx] jmp cs_epilogue cs_retint64: mov eax, [ecx + 0] mov edx, [ecx + 4] jmp cs_epilogue cs_retfloat: fld DWORD PTR [ecx] jmp cs_epilogue cs_retdouble: fld QWORD PTR [ecx] jmp cs_epilogue cs_retlongdouble: fld TBYTE PTR [ecx] jmp cs_epilogue cs_retstruct: ;; Caller expects us to pop struct return value pointer hidden arg. ;; Epilogue code is autogenerated. ret 4 cs_retmsstruct: ;; Caller expects us to return a pointer to the real return value. mov eax, ecx ;; Caller doesn't expects us to pop struct return value pointer hidden arg. jmp cs_epilogue cs_epilogue: ;; Epilogue code is autogenerated. ret ffi_closure_SYSV ENDP #if !FFI_NO_RAW_API #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) AND NOT 3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) ffi_closure_raw_THISCALL PROC NEAR USES esi FORCEFRAME sub esp, 36 mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data mov [esp + 12], edx lea edx, [ebp + 12] jmp stubraw ffi_closure_raw_THISCALL ENDP ffi_closure_raw_SYSV PROC NEAR USES esi FORCEFRAME ;; the ffi_closure ctx is passed in eax by the trampoline. sub esp, 40 mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data mov [esp + 12], edx ;; user_data lea edx, [ebp + 8] stubraw:: mov [esp + 8], edx ;; raw_args lea edx, [ebp - 24] mov [esp + 4], edx ;; &res mov [esp], esi ;; cif call DWORD PTR [eax + RAW_CLOSURE_FUN_OFFSET] ;; closure->fun mov eax, [esi + CIF_FLAGS_OFFSET] ;; cif->flags lea ecx, [ebp - 24] cr_jumptable: jmp [cr_jumpdata + 4 * eax] cr_jumpdata: ;; Do not insert anything here between the label and jump table. dd offset cr_epilogue ;; FFI_TYPE_VOID dd offset cr_retint ;; FFI_TYPE_INT dd offset cr_retfloat ;; FFI_TYPE_FLOAT dd offset cr_retdouble ;; FFI_TYPE_DOUBLE dd offset cr_retlongdouble ;; FFI_TYPE_LONGDOUBLE dd offset cr_retuint8 ;; FFI_TYPE_UINT8 dd offset cr_retsint8 ;; FFI_TYPE_SINT8 dd offset cr_retuint16 ;; FFI_TYPE_UINT16 dd offset cr_retsint16 ;; FFI_TYPE_SINT16 dd offset cr_retint ;; FFI_TYPE_UINT32 dd offset cr_retint ;; FFI_TYPE_SINT32 dd offset cr_retint64 ;; FFI_TYPE_UINT64 dd offset cr_retint64 ;; FFI_TYPE_SINT64 dd offset cr_epilogue ;; FFI_TYPE_STRUCT dd offset cr_retint ;; FFI_TYPE_POINTER dd offset cr_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B dd offset cr_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B dd offset cr_retint ;; FFI_TYPE_SMALL_STRUCT_4B dd offset cr_epilogue ;; FFI_TYPE_MS_STRUCT cr_retuint8: movzx eax, BYTE PTR [ecx] jmp cr_epilogue cr_retsint8: movsx eax, BYTE PTR [ecx] jmp cr_epilogue cr_retuint16: movzx eax, WORD PTR [ecx] jmp cr_epilogue cr_retsint16: movsx eax, WORD PTR [ecx] jmp cr_epilogue cr_retint: mov eax, [ecx] jmp cr_epilogue cr_retint64: mov eax, [ecx + 0] mov edx, [ecx + 4] jmp cr_epilogue cr_retfloat: fld DWORD PTR [ecx] jmp cr_epilogue cr_retdouble: fld QWORD PTR [ecx] jmp cr_epilogue cr_retlongdouble: fld TBYTE PTR [ecx] jmp cr_epilogue cr_epilogue: ;; Epilogue code is autogenerated. ret ffi_closure_raw_SYSV ENDP #endif /* !FFI_NO_RAW_API */ ffi_closure_STDCALL PROC NEAR FORCEFRAME mov eax, [esp] ;; the ffi_closure ctx passed by the trampoline. sub esp, 40 lea edx, [ebp - 24] mov [ebp - 12], edx ;; resp lea edx, [ebp + 12] ;; account for stub return address on stack mov [esp + 8], edx ;; args lea edx, [ebp - 12] mov [esp + 4], edx ;; &resp mov [esp], eax ;; closure call ffi_closure_WIN32_inner mov ecx, [ebp - 12] xchg [ebp + 4], eax ;;xchg size of stack parameters and ffi_closure ctx mov eax, DWORD PTR [eax + CLOSURE_CIF_OFFSET] mov eax, DWORD PTR [eax + CIF_FLAGS_OFFSET] cd_jumptable: jmp [cd_jumpdata + 4 * eax] cd_jumpdata: ;; Do not insert anything here between the label and jump table. dd offset cd_epilogue ;; FFI_TYPE_VOID dd offset cd_retint ;; FFI_TYPE_INT dd offset cd_retfloat ;; FFI_TYPE_FLOAT dd offset cd_retdouble ;; FFI_TYPE_DOUBLE dd offset cd_retlongdouble ;; FFI_TYPE_LONGDOUBLE dd offset cd_retuint8 ;; FFI_TYPE_UINT8 dd offset cd_retsint8 ;; FFI_TYPE_SINT8 dd offset cd_retuint16 ;; FFI_TYPE_UINT16 dd offset cd_retsint16 ;; FFI_TYPE_SINT16 dd offset cd_retint ;; FFI_TYPE_UINT32 dd offset cd_retint ;; FFI_TYPE_SINT32 dd offset cd_retint64 ;; FFI_TYPE_UINT64 dd offset cd_retint64 ;; FFI_TYPE_SINT64 dd offset cd_epilogue ;; FFI_TYPE_STRUCT dd offset cd_retint ;; FFI_TYPE_POINTER dd offset cd_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B dd offset cd_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B dd offset cd_retint ;; FFI_TYPE_SMALL_STRUCT_4B cd_retuint8: movzx eax, BYTE PTR [ecx] jmp cd_epilogue cd_retsint8: movsx eax, BYTE PTR [ecx] jmp cd_epilogue cd_retuint16: movzx eax, WORD PTR [ecx] jmp cd_epilogue cd_retsint16: movsx eax, WORD PTR [ecx] jmp cd_epilogue cd_retint: mov eax, [ecx] jmp cd_epilogue cd_retint64: mov eax, [ecx + 0] mov edx, [ecx + 4] jmp cd_epilogue cd_retfloat: fld DWORD PTR [ecx] jmp cd_epilogue cd_retdouble: fld QWORD PTR [ecx] jmp cd_epilogue cd_retlongdouble: fld TBYTE PTR [ecx] jmp cd_epilogue cd_epilogue: mov esp, ebp pop ebp mov ecx, [esp + 4] ;; Return address add esp, [esp] ;; Parameters stack size add esp, 8 jmp ecx ffi_closure_STDCALL ENDP _TEXT ENDS END #else #define CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #if defined(SYMBOL_UNDERSCORE) #define USCORE_SYMBOL(x) _##x #else #define USCORE_SYMBOL(x) x #endif .text # This assumes we are using gas. .balign 16 FFI_HIDDEN(ffi_call_win32) .globl USCORE_SYMBOL(ffi_call_win32) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_call_win32; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_call_win32): .LFB1: pushl %ebp .LCFI0: movl %esp,%ebp .LCFI1: # Make room for all of the new args. movl 20(%ebp),%ecx subl %ecx,%esp movl %esp,%eax # Call ffi_prep_args pushl 12(%ebp) pushl %eax call *8(%ebp) addl $8,%esp # Prepare registers # EAX stores the number of register arguments cmpl $0, %eax je .fun cmpl $3, %eax jl .prepr_two_cmp movl %esp, %ecx addl $12, %esp movl 8(%ecx), %eax jmp .prepr_two .prepr_two_cmp: cmpl $2, %eax jl .prepr_one_prep movl %esp, %ecx addl $8, %esp .prepr_two: movl 4(%ecx), %edx jmp .prepr_one .prepr_one_prep: movl %esp, %ecx addl $4, %esp .prepr_one: movl (%ecx), %ecx cmpl $7, 16(%ebp) # FFI_REGISTER jne .fun xchgl %eax, %ecx .fun: # FIXME: Align the stack to a 128-bit boundary to avoid # potential performance hits. # Call function call *32(%ebp) # stdcall functions pop arguments off the stack themselves # Load %ecx with the return type code movl 24(%ebp),%ecx # If the return value pointer is NULL, assume no return value. cmpl $0,28(%ebp) jne 0f # Even if there is no space for the return value, we are # obliged to handle floating-point values. cmpl $FFI_TYPE_FLOAT,%ecx jne .Lnoretval fstp %st(0) jmp .Lepilogue 0: call 1f # Do not insert anything here between the call and the jump table. .Lstore_table: .long .Lnoretval-.Lstore_table /* FFI_TYPE_VOID */ .long .Lretint-.Lstore_table /* FFI_TYPE_INT */ .long .Lretfloat-.Lstore_table /* FFI_TYPE_FLOAT */ .long .Lretdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ .long .Lretlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long .Lretuint8-.Lstore_table /* FFI_TYPE_UINT8 */ .long .Lretsint8-.Lstore_table /* FFI_TYPE_SINT8 */ .long .Lretuint16-.Lstore_table /* FFI_TYPE_UINT16 */ .long .Lretsint16-.Lstore_table /* FFI_TYPE_SINT16 */ .long .Lretint-.Lstore_table /* FFI_TYPE_UINT32 */ .long .Lretint-.Lstore_table /* FFI_TYPE_SINT32 */ .long .Lretint64-.Lstore_table /* FFI_TYPE_UINT64 */ .long .Lretint64-.Lstore_table /* FFI_TYPE_SINT64 */ .long .Lretstruct-.Lstore_table /* FFI_TYPE_STRUCT */ .long .Lretint-.Lstore_table /* FFI_TYPE_POINTER */ .long .Lretstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long .Lretstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */ .long .Lretstruct4b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_4B */ .long .Lretstruct-.Lstore_table /* FFI_TYPE_MS_STRUCT */ 1: shl $2, %ecx add (%esp),%ecx mov (%ecx),%ecx add (%esp),%ecx add $4, %esp jmp *%ecx /* Sign/zero extend as appropriate. */ .Lretsint8: movsbl %al, %eax jmp .Lretint .Lretsint16: movswl %ax, %eax jmp .Lretint .Lretuint8: movzbl %al, %eax jmp .Lretint .Lretuint16: movzwl %ax, %eax jmp .Lretint .Lretint: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx movl %eax,0(%ecx) jmp .Lepilogue .Lretfloat: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx fstps (%ecx) jmp .Lepilogue .Lretdouble: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx fstpl (%ecx) jmp .Lepilogue .Lretlongdouble: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx fstpt (%ecx) jmp .Lepilogue .Lretint64: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) jmp .Lepilogue .Lretstruct1b: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx movb %al,0(%ecx) jmp .Lepilogue .Lretstruct2b: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx movw %ax,0(%ecx) jmp .Lepilogue .Lretstruct4b: # Load %ecx with the pointer to storage for the return value movl 28(%ebp),%ecx movl %eax,0(%ecx) jmp .Lepilogue .Lretstruct: # Nothing to do! .Lnoretval: .Lepilogue: movl %ebp,%esp popl %ebp ret .ffi_call_win32_end: .balign 16 FFI_HIDDEN(ffi_closure_THISCALL) .globl USCORE_SYMBOL(ffi_closure_THISCALL) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_THISCALL): /* Insert the register argument on the stack as the first argument */ xchg %ecx, 4(%esp) xchg %ecx, (%esp) push %ecx jmp .ffi_closure_STDCALL_internal .balign 16 FFI_HIDDEN(ffi_closure_FASTCALL) .globl USCORE_SYMBOL(ffi_closure_FASTCALL) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_FASTCALL; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_FASTCALL): /* Insert the 2 register arguments on the stack as the first two arguments */ xchg %edx, 4(%esp) xchg %ecx, (%esp) push %edx push %ecx jmp .ffi_closure_STDCALL_internal FFI_HIDDEN(ffi_closure_REGISTER) .globl USCORE_SYMBOL(ffi_closure_REGISTER) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_REGISTER; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_REGISTER): /* Insert the 3 register arguments on the stack as the first two arguments */ push %eax xchg %ecx, 8(%esp) xchg %edx, 4(%esp) push %ecx push %edx jmp .ffi_closure_STDCALL_internal .LFE1: # This assumes we are using gas. .balign 16 FFI_HIDDEN(ffi_closure_SYSV) #if defined(X86_WIN32) .globl USCORE_SYMBOL(ffi_closure_SYSV) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_SYSV; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_SYSV): #endif .LFB3: pushl %ebp .LCFI4: movl %esp, %ebp .LCFI5: subl $40, %esp leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 8(%ebp), %edx movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ #if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__) call USCORE_SYMBOL(ffi_closure_SYSV_inner) #elif defined(X86_DARWIN) calll L_ffi_closure_SYSV_inner$stub #else movl %ebx, 8(%esp) call 1f 1: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx call ffi_closure_SYSV_inner@PLT movl 8(%esp), %ebx #endif movl -12(%ebp), %ecx 0: call 1f # Do not insert anything here between the call and the jump table. .Lcls_store_table: .long .Lcls_noretval-.Lcls_store_table /* FFI_TYPE_VOID */ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_INT */ .long .Lcls_retfloat-.Lcls_store_table /* FFI_TYPE_FLOAT */ .long .Lcls_retdouble-.Lcls_store_table /* FFI_TYPE_DOUBLE */ .long .Lcls_retldouble-.Lcls_store_table /* FFI_TYPE_LONGDOUBLE */ .long .Lcls_retuint8-.Lcls_store_table /* FFI_TYPE_UINT8 */ .long .Lcls_retsint8-.Lcls_store_table /* FFI_TYPE_SINT8 */ .long .Lcls_retuint16-.Lcls_store_table /* FFI_TYPE_UINT16 */ .long .Lcls_retsint16-.Lcls_store_table /* FFI_TYPE_SINT16 */ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_UINT32 */ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_SINT32 */ .long .Lcls_retllong-.Lcls_store_table /* FFI_TYPE_UINT64 */ .long .Lcls_retllong-.Lcls_store_table /* FFI_TYPE_SINT64 */ .long .Lcls_retstruct-.Lcls_store_table /* FFI_TYPE_STRUCT */ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_POINTER */ .long .Lcls_retstruct1-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long .Lcls_retstruct2-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ .long .Lcls_retstruct4-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ .long .Lcls_retmsstruct-.Lcls_store_table /* FFI_TYPE_MS_STRUCT */ 1: shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax add $4, %esp jmp *%eax /* Sign/zero extend as appropriate. */ .Lcls_retsint8: movsbl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retsint16: movswl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retuint8: movzbl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retuint16: movzwl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retint: movl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retfloat: flds (%ecx) jmp .Lcls_epilogue .Lcls_retdouble: fldl (%ecx) jmp .Lcls_epilogue .Lcls_retldouble: fldt (%ecx) jmp .Lcls_epilogue .Lcls_retllong: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue .Lcls_retstruct1: movsbl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct2: movswl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct4: movl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct: # Caller expects us to pop struct return value pointer hidden arg. movl %ebp, %esp popl %ebp ret $0x4 .Lcls_retmsstruct: # Caller expects us to return a pointer to the real return value. mov %ecx, %eax # Caller doesn't expects us to pop struct return value pointer hidden arg. jmp .Lcls_epilogue .Lcls_noretval: .Lcls_epilogue: movl %ebp, %esp popl %ebp ret .ffi_closure_SYSV_end: .LFE3: #if !FFI_NO_RAW_API #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #ifdef X86_WIN32 .balign 16 FFI_HIDDEN(ffi_closure_raw_THISCALL) .globl USCORE_SYMBOL(ffi_closure_raw_THISCALL) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_raw_THISCALL): pushl %ebp movl %esp, %ebp pushl %esi subl $36, %esp movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 12(%ebp), %edx /* __builtin_dwarf_cfa () */ jmp .stubraw #endif /* X86_WIN32 */ # This assumes we are using gas. .balign 16 #if defined(X86_WIN32) .globl USCORE_SYMBOL(ffi_closure_raw_SYSV) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_raw_SYSV; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_raw_SYSV): #endif /* defined(X86_WIN32) */ .LFB4: pushl %ebp .LCFI6: movl %esp, %ebp .LCFI7: pushl %esi .LCFI8: subl $36, %esp movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ .stubraw: movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ movl %esi, (%esp) /* cif */ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ 0: call 1f # Do not insert anything here between the call and the jump table. .Lrcls_store_table: .long .Lrcls_noretval-.Lrcls_store_table /* FFI_TYPE_VOID */ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_INT */ .long .Lrcls_retfloat-.Lrcls_store_table /* FFI_TYPE_FLOAT */ .long .Lrcls_retdouble-.Lrcls_store_table /* FFI_TYPE_DOUBLE */ .long .Lrcls_retldouble-.Lrcls_store_table /* FFI_TYPE_LONGDOUBLE */ .long .Lrcls_retuint8-.Lrcls_store_table /* FFI_TYPE_UINT8 */ .long .Lrcls_retsint8-.Lrcls_store_table /* FFI_TYPE_SINT8 */ .long .Lrcls_retuint16-.Lrcls_store_table /* FFI_TYPE_UINT16 */ .long .Lrcls_retsint16-.Lrcls_store_table /* FFI_TYPE_SINT16 */ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_UINT32 */ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_SINT32 */ .long .Lrcls_retllong-.Lrcls_store_table /* FFI_TYPE_UINT64 */ .long .Lrcls_retllong-.Lrcls_store_table /* FFI_TYPE_SINT64 */ .long .Lrcls_retstruct-.Lrcls_store_table /* FFI_TYPE_STRUCT */ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_POINTER */ .long .Lrcls_retstruct1-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long .Lrcls_retstruct2-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ .long .Lrcls_retstruct4-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ .long .Lrcls_retstruct-.Lrcls_store_table /* FFI_TYPE_MS_STRUCT */ 1: shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax add $4, %esp jmp *%eax /* Sign/zero extend as appropriate. */ .Lrcls_retsint8: movsbl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retsint16: movswl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retuint8: movzbl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retuint16: movzwl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retint: movl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retfloat: flds -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retdouble: fldl -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retldouble: fldt -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retllong: movl -24(%ebp), %eax movl -20(%ebp), %edx jmp .Lrcls_epilogue .Lrcls_retstruct1: movsbl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retstruct2: movswl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retstruct4: movl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retstruct: # Nothing to do! .Lrcls_noretval: .Lrcls_epilogue: addl $36, %esp popl %esi popl %ebp ret .ffi_closure_raw_SYSV_end: .LFE4: #endif /* !FFI_NO_RAW_API */ # This assumes we are using gas. .balign 16 FFI_HIDDEN(ffi_closure_STDCALL) .globl USCORE_SYMBOL(ffi_closure_STDCALL) #if defined(X86_WIN32) && !defined(__OS2__) .def _ffi_closure_STDCALL; .scl 2; .type 32; .endef #endif USCORE_SYMBOL(ffi_closure_STDCALL): .ffi_closure_STDCALL_internal: /* ffi_closure ctx is at top of the stack */ movl (%esp), %eax .LFB5: pushl %ebp .LCFI9: movl %esp, %ebp .LCFI10: subl $40, %esp leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 12(%ebp), %edx /* account for stub return address on stack */ movl %edx, 4(%esp) /* args */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ #if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__) call USCORE_SYMBOL(ffi_closure_WIN32_inner) #elif defined(X86_DARWIN) calll L_ffi_closure_WIN32_inner$stub #else movl %ebx, 8(%esp) call 1f 1: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx call ffi_closure_WIN32_inner@PLT movl 8(%esp), %ebx #endif movl -12(%ebp), %ecx 0: xchgl 4(%ebp), %eax /* xchg size of stack parameters and ffi_closure ctx */ movl CLOSURE_CIF_OFFSET(%eax), %eax movl CIF_FLAGS_OFFSET(%eax), %eax call 1f # Do not insert anything here between the call and the jump table. .Lscls_store_table: .long .Lscls_noretval-.Lscls_store_table /* FFI_TYPE_VOID */ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_INT */ .long .Lscls_retfloat-.Lscls_store_table /* FFI_TYPE_FLOAT */ .long .Lscls_retdouble-.Lscls_store_table /* FFI_TYPE_DOUBLE */ .long .Lscls_retldouble-.Lscls_store_table /* FFI_TYPE_LONGDOUBLE */ .long .Lscls_retuint8-.Lscls_store_table /* FFI_TYPE_UINT8 */ .long .Lscls_retsint8-.Lscls_store_table /* FFI_TYPE_SINT8 */ .long .Lscls_retuint16-.Lscls_store_table /* FFI_TYPE_UINT16 */ .long .Lscls_retsint16-.Lscls_store_table /* FFI_TYPE_SINT16 */ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_UINT32 */ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_SINT32 */ .long .Lscls_retllong-.Lscls_store_table /* FFI_TYPE_UINT64 */ .long .Lscls_retllong-.Lscls_store_table /* FFI_TYPE_SINT64 */ .long .Lscls_retstruct-.Lscls_store_table /* FFI_TYPE_STRUCT */ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_POINTER */ .long .Lscls_retstruct1-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long .Lscls_retstruct2-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ .long .Lscls_retstruct4-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ 1: shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax add $4, %esp jmp *%eax /* Sign/zero extend as appropriate. */ .Lscls_retsint8: movsbl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retsint16: movswl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retuint8: movzbl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retuint16: movzwl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retint: movl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retfloat: flds (%ecx) jmp .Lscls_epilogue .Lscls_retdouble: fldl (%ecx) jmp .Lscls_epilogue .Lscls_retldouble: fldt (%ecx) jmp .Lscls_epilogue .Lscls_retllong: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lscls_epilogue .Lscls_retstruct1: movsbl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retstruct2: movswl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retstruct4: movl (%ecx), %eax jmp .Lscls_epilogue .Lscls_retstruct: # Nothing to do! .Lscls_noretval: .Lscls_epilogue: movl %ebp, %esp popl %ebp movl 4(%esp), %ecx /* Return address */ addl (%esp), %esp /* Parameters stack size */ addl $8, %esp jmp *%ecx .ffi_closure_STDCALL_end: .LFE5: #if defined(X86_DARWIN) .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 L_ffi_closure_SYSV_inner$stub: .indirect_symbol _ffi_closure_SYSV_inner hlt ; hlt ; hlt ; hlt ; hlt L_ffi_closure_WIN32_inner$stub: .indirect_symbol _ffi_closure_WIN32_inner hlt ; hlt ; hlt ; hlt ; hlt #endif #if defined(X86_WIN32) && !defined(__OS2__) .section .eh_frame,"w" #endif .Lframe1: .LSCIE1: .long .LECIE1-.LASCIE1 /* Length of Common Information Entry */ .LASCIE1: .long 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #ifdef __PIC__ .ascii "zR\0" /* CIE Augmentation */ #else .ascii "\0" /* CIE Augmentation */ #endif .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ .byte 0x8 /* CIE RA Column */ #ifdef __PIC__ .byte 0x1 /* .uleb128 0x1; Augmentation size */ .byte 0x1b /* FDE Encoding (pcrel sdata4) */ #endif .byte 0xc /* DW_CFA_def_cfa CFA = r4 + 4 = 4(%esp) */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x88 /* DW_CFA_offset, column 0x8 %eip at CFA + 1 * -4 */ .byte 0x1 /* .uleb128 0x1 */ .align 4 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ #if defined __PIC__ && defined HAVE_AS_X86_PCREL .long .LFB1-. /* FDE initial location */ #else .long .LFB1 #endif .long .LFE1-.LFB1 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif /* DW_CFA_xxx CFI instructions go here. */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI0-.LFB1 .byte 0xe /* DW_CFA_def_cfa_offset CFA = r4 + 8 = 8(%esp) */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 %ebp at CFA + 2 * -4 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI1-.LCFI0 .byte 0xd /* DW_CFA_def_cfa_register CFA = r5 = %ebp */ .byte 0x5 /* .uleb128 0x5 */ /* End of DW_CFA_xxx CFI instructions. */ .align 4 .LEFDE1: .LSFDE3: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ #if defined __PIC__ && defined HAVE_AS_X86_PCREL .long .LFB3-. /* FDE initial location */ #else .long .LFB3 #endif .long .LFE3-.LFB3 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif /* DW_CFA_xxx CFI instructions go here. */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI4-.LFB3 .byte 0xe /* DW_CFA_def_cfa_offset CFA = r4 + 8 = 8(%esp) */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 %ebp at CFA + 2 * -4 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI5-.LCFI4 .byte 0xd /* DW_CFA_def_cfa_register CFA = r5 = %ebp */ .byte 0x5 /* .uleb128 0x5 */ /* End of DW_CFA_xxx CFI instructions. */ .align 4 .LEFDE3: #if !FFI_NO_RAW_API .LSFDE4: .long .LEFDE4-.LASFDE4 /* FDE Length */ .LASFDE4: .long .LASFDE4-.Lframe1 /* FDE CIE offset */ #if defined __PIC__ && defined HAVE_AS_X86_PCREL .long .LFB4-. /* FDE initial location */ #else .long .LFB4 #endif .long .LFE4-.LFB4 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif /* DW_CFA_xxx CFI instructions go here. */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI6-.LFB4 .byte 0xe /* DW_CFA_def_cfa_offset CFA = r4 + 8 = 8(%esp) */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 %ebp at CFA + 2 * -4 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI7-.LCFI6 .byte 0xd /* DW_CFA_def_cfa_register CFA = r5 = %ebp */ .byte 0x5 /* .uleb128 0x5 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI8-.LCFI7 .byte 0x86 /* DW_CFA_offset, column 0x6 %esi at CFA + 3 * -4 */ .byte 0x3 /* .uleb128 0x3 */ /* End of DW_CFA_xxx CFI instructions. */ .align 4 .LEFDE4: #endif /* !FFI_NO_RAW_API */ .LSFDE5: .long .LEFDE5-.LASFDE5 /* FDE Length */ .LASFDE5: .long .LASFDE5-.Lframe1 /* FDE CIE offset */ #if defined __PIC__ && defined HAVE_AS_X86_PCREL .long .LFB5-. /* FDE initial location */ #else .long .LFB5 #endif .long .LFE5-.LFB5 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif /* DW_CFA_xxx CFI instructions go here. */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI9-.LFB5 .byte 0xe /* DW_CFA_def_cfa_offset CFA = r4 + 8 = 8(%esp) */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 %ebp at CFA + 2 * -4 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI10-.LCFI9 .byte 0xd /* DW_CFA_def_cfa_register CFA = r5 = %ebp */ .byte 0x5 /* .uleb128 0x5 */ /* End of DW_CFA_xxx CFI instructions. */ .align 4 .LEFDE5: #endif /* !_MSC_VER */ #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/x86/darwin64.S0000644000175000017500000002614313204034553016236 0ustar daviddavid/* ----------------------------------------------------------------------- darwin64.S - Copyright (c) 2006 Free Software Foundation, Inc. Copyright (c) 2008 Red Hat, Inc. derived from unix64.S x86-64 Foreign Function Interface for Darwin. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifdef __x86_64__ #define LIBFFI_ASM #include #include .file "darwin64.S" .text /* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, void *raddr, void (*fnaddr)(void)); Bit o trickiness here -- ARGS+BYTES is the base of the stack frame for this function. This has been allocated by ffi_call. We also deallocate some of the stack that has been alloca'd. */ .align 3 .globl _ffi_call_unix64 _ffi_call_unix64: LUW0: movq (%rsp), %r10 /* Load return address. */ leaq (%rdi, %rsi), %rax /* Find local stack base. */ movq %rdx, (%rax) /* Save flags. */ movq %rcx, 8(%rax) /* Save raddr. */ movq %rbp, 16(%rax) /* Save old frame pointer. */ movq %r10, 24(%rax) /* Relocate return address. */ movq %rax, %rbp /* Finalize local stack frame. */ LUW1: movq %rdi, %r10 /* Save a copy of the register area. */ movq %r8, %r11 /* Save a copy of the target fn. */ movl %r9d, %eax /* Set number of SSE registers. */ /* Load up all argument registers. */ movq (%r10), %rdi movq 8(%r10), %rsi movq 16(%r10), %rdx movq 24(%r10), %rcx movq 32(%r10), %r8 movq 40(%r10), %r9 testl %eax, %eax jnz Lload_sse Lret_from_load_sse: /* Deallocate the reg arg area. */ leaq 176(%r10), %rsp /* Call the user function. */ call *%r11 /* Deallocate stack arg area; local stack frame in redzone. */ leaq 24(%rbp), %rsp movq 0(%rbp), %rcx /* Reload flags. */ movq 8(%rbp), %rdi /* Reload raddr. */ movq 16(%rbp), %rbp /* Reload old frame pointer. */ LUW2: /* The first byte of the flags contains the FFI_TYPE. */ movzbl %cl, %r10d leaq Lstore_table(%rip), %r11 movslq (%r11, %r10, 4), %r10 addq %r11, %r10 jmp *%r10 Lstore_table: .long Lst_void-Lstore_table /* FFI_TYPE_VOID */ .long Lst_sint32-Lstore_table /* FFI_TYPE_INT */ .long Lst_float-Lstore_table /* FFI_TYPE_FLOAT */ .long Lst_double-Lstore_table /* FFI_TYPE_DOUBLE */ .long Lst_ldouble-Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long Lst_uint8-Lstore_table /* FFI_TYPE_UINT8 */ .long Lst_sint8-Lstore_table /* FFI_TYPE_SINT8 */ .long Lst_uint16-Lstore_table /* FFI_TYPE_UINT16 */ .long Lst_sint16-Lstore_table /* FFI_TYPE_SINT16 */ .long Lst_uint32-Lstore_table /* FFI_TYPE_UINT32 */ .long Lst_sint32-Lstore_table /* FFI_TYPE_SINT32 */ .long Lst_int64-Lstore_table /* FFI_TYPE_UINT64 */ .long Lst_int64-Lstore_table /* FFI_TYPE_SINT64 */ .long Lst_struct-Lstore_table /* FFI_TYPE_STRUCT */ .long Lst_int64-Lstore_table /* FFI_TYPE_POINTER */ .text .align 3 Lst_void: ret .align 3 Lst_uint8: movzbq %al, %rax movq %rax, (%rdi) ret .align 3 Lst_sint8: movsbq %al, %rax movq %rax, (%rdi) ret .align 3 Lst_uint16: movzwq %ax, %rax movq %rax, (%rdi) .align 3 Lst_sint16: movswq %ax, %rax movq %rax, (%rdi) ret .align 3 Lst_uint32: movl %eax, %eax movq %rax, (%rdi) .align 3 Lst_sint32: cltq movq %rax, (%rdi) ret .align 3 Lst_int64: movq %rax, (%rdi) ret .align 3 Lst_float: movss %xmm0, (%rdi) ret .align 3 Lst_double: movsd %xmm0, (%rdi) ret Lst_ldouble: fstpt (%rdi) ret .align 3 Lst_struct: leaq -20(%rsp), %rsi /* Scratch area in redzone. */ /* We have to locate the values now, and since we don't want to write too much data into the user's return value, we spill the value to a 16 byte scratch area first. Bits 8, 9, and 10 control where the values are located. Only one of the three bits will be set; see ffi_prep_cif_machdep for the pattern. */ movd %xmm0, %r10 movd %xmm1, %r11 testl $0x100, %ecx cmovnz %rax, %rdx cmovnz %r10, %rax testl $0x200, %ecx cmovnz %r10, %rdx testl $0x400, %ecx cmovnz %r10, %rax cmovnz %r11, %rdx movq %rax, (%rsi) movq %rdx, 8(%rsi) /* Bits 12-31 contain the true size of the structure. Copy from the scratch area to the true destination. */ shrl $12, %ecx rep movsb ret /* Many times we can avoid loading any SSE registers at all. It's not worth an indirect jump to load the exact set of SSE registers needed; zero or all is a good compromise. */ .align 3 LUW3: Lload_sse: movdqa 48(%r10), %xmm0 movdqa 64(%r10), %xmm1 movdqa 80(%r10), %xmm2 movdqa 96(%r10), %xmm3 movdqa 112(%r10), %xmm4 movdqa 128(%r10), %xmm5 movdqa 144(%r10), %xmm6 movdqa 160(%r10), %xmm7 jmp Lret_from_load_sse LUW4: .align 3 .globl _ffi_closure_unix64 _ffi_closure_unix64: LUW5: /* The carry flag is set by the trampoline iff SSE registers are used. Don't clobber it before the branch instruction. */ leaq -200(%rsp), %rsp LUW6: movq %rdi, (%rsp) movq %rsi, 8(%rsp) movq %rdx, 16(%rsp) movq %rcx, 24(%rsp) movq %r8, 32(%rsp) movq %r9, 40(%rsp) jc Lsave_sse Lret_from_save_sse: movq %r10, %rdi leaq 176(%rsp), %rsi movq %rsp, %rdx leaq 208(%rsp), %rcx call _ffi_closure_unix64_inner /* Deallocate stack frame early; return value is now in redzone. */ addq $200, %rsp LUW7: /* The first byte of the return value contains the FFI_TYPE. */ movzbl %al, %r10d leaq Lload_table(%rip), %r11 movslq (%r11, %r10, 4), %r10 addq %r11, %r10 jmp *%r10 Lload_table: .long Lld_void-Lload_table /* FFI_TYPE_VOID */ .long Lld_int32-Lload_table /* FFI_TYPE_INT */ .long Lld_float-Lload_table /* FFI_TYPE_FLOAT */ .long Lld_double-Lload_table /* FFI_TYPE_DOUBLE */ .long Lld_ldouble-Lload_table /* FFI_TYPE_LONGDOUBLE */ .long Lld_int8-Lload_table /* FFI_TYPE_UINT8 */ .long Lld_int8-Lload_table /* FFI_TYPE_SINT8 */ .long Lld_int16-Lload_table /* FFI_TYPE_UINT16 */ .long Lld_int16-Lload_table /* FFI_TYPE_SINT16 */ .long Lld_int32-Lload_table /* FFI_TYPE_UINT32 */ .long Lld_int32-Lload_table /* FFI_TYPE_SINT32 */ .long Lld_int64-Lload_table /* FFI_TYPE_UINT64 */ .long Lld_int64-Lload_table /* FFI_TYPE_SINT64 */ .long Lld_struct-Lload_table /* FFI_TYPE_STRUCT */ .long Lld_int64-Lload_table /* FFI_TYPE_POINTER */ .text .align 3 Lld_void: ret .align 3 Lld_int8: movzbl -24(%rsp), %eax ret .align 3 Lld_int16: movzwl -24(%rsp), %eax ret .align 3 Lld_int32: movl -24(%rsp), %eax ret .align 3 Lld_int64: movq -24(%rsp), %rax ret .align 3 Lld_float: movss -24(%rsp), %xmm0 ret .align 3 Lld_double: movsd -24(%rsp), %xmm0 ret .align 3 Lld_ldouble: fldt -24(%rsp) ret .align 3 Lld_struct: /* There are four possibilities here, %rax/%rdx, %xmm0/%rax, %rax/%xmm0, %xmm0/%xmm1. We collapse two by always loading both rdx and xmm1 with the second word. For the remaining, bit 8 set means xmm0 gets the second word, and bit 9 means that rax gets the second word. */ movq -24(%rsp), %rcx movq -16(%rsp), %rdx movq -16(%rsp), %xmm1 testl $0x100, %eax cmovnz %rdx, %rcx movd %rcx, %xmm0 testl $0x200, %eax movq -24(%rsp), %rax cmovnz %rdx, %rax ret /* See the comment above Lload_sse; the same logic applies here. */ .align 3 LUW8: Lsave_sse: movdqa %xmm0, 48(%rsp) movdqa %xmm1, 64(%rsp) movdqa %xmm2, 80(%rsp) movdqa %xmm3, 96(%rsp) movdqa %xmm4, 112(%rsp) movdqa %xmm5, 128(%rsp) movdqa %xmm6, 144(%rsp) movdqa %xmm7, 160(%rsp) jmp Lret_from_save_sse LUW9: .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support EH_frame1: .set L$set$0,LECIE1-LSCIE1 /* CIE Length */ .long L$set$0 LSCIE1: .long 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ .ascii "zR\0" /* CIE Augmentation */ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ .byte 0x78 /* sleb128 -8; CIE Data Alignment Factor */ .byte 0x10 /* CIE RA Column */ .byte 0x1 /* uleb128 0x1; Augmentation size */ .byte 0x10 /* FDE Encoding (pcrel sdata4) */ .byte 0xc /* DW_CFA_def_cfa, %rsp offset 8 */ .byte 0x7 /* uleb128 0x7 */ .byte 0x8 /* uleb128 0x8 */ .byte 0x90 /* DW_CFA_offset, column 0x10 */ .byte 0x1 .align 3 LECIE1: .globl _ffi_call_unix64.eh _ffi_call_unix64.eh: LSFDE1: .set L$set$1,LEFDE1-LASFDE1 /* FDE Length */ .long L$set$1 LASFDE1: .long LASFDE1-EH_frame1 /* FDE CIE offset */ .quad LUW0-. /* FDE initial location */ .set L$set$2,LUW4-LUW0 /* FDE address range */ .quad L$set$2 .byte 0x0 /* Augmentation size */ .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$3,LUW1-LUW0 .long L$set$3 /* New stack frame based off rbp. This is a itty bit of unwind trickery in that the CFA *has* changed. There is no easy way to describe it correctly on entry to the function. Fortunately, it doesn't matter too much since at all points we can correctly unwind back to ffi_call. Note that the location to which we moved the return address is (the new) CFA-8, so from the perspective of the unwind info, it hasn't moved. */ .byte 0xc /* DW_CFA_def_cfa, %rbp offset 32 */ .byte 0x6 .byte 0x20 .byte 0x80+6 /* DW_CFA_offset, %rbp offset 2*-8 */ .byte 0x2 .byte 0xa /* DW_CFA_remember_state */ .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$4,LUW2-LUW1 .long L$set$4 .byte 0xc /* DW_CFA_def_cfa, %rsp offset 8 */ .byte 0x7 .byte 0x8 .byte 0xc0+6 /* DW_CFA_restore, %rbp */ .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$5,LUW3-LUW2 .long L$set$5 .byte 0xb /* DW_CFA_restore_state */ .align 3 LEFDE1: .globl _ffi_closure_unix64.eh _ffi_closure_unix64.eh: LSFDE3: .set L$set$6,LEFDE3-LASFDE3 /* FDE Length */ .long L$set$6 LASFDE3: .long LASFDE3-EH_frame1 /* FDE CIE offset */ .quad LUW5-. /* FDE initial location */ .set L$set$7,LUW9-LUW5 /* FDE address range */ .quad L$set$7 .byte 0x0 /* Augmentation size */ .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$8,LUW6-LUW5 .long L$set$8 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 208,1 /* uleb128 208 */ .byte 0xa /* DW_CFA_remember_state */ .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$9,LUW7-LUW6 .long L$set$9 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 .byte 0x4 /* DW_CFA_advance_loc4 */ .set L$set$10,LUW8-LUW7 .long L$set$10 .byte 0xb /* DW_CFA_restore_state */ .align 3 LEFDE3: .subsections_via_symbols #endif /* __x86_64__ */ polyml-5.7.1/libffi/src/x86/freebsd.S0000644000175000017500000002651213204034553016212 0ustar daviddavid/* ----------------------------------------------------------------------- freebsd.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. Copyright (c) 2008 Björn König X86 Foreign Function Interface for FreeBSD Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef __x86_64__ #define LIBFFI_ASM #include #include .text .globl ffi_prep_args .align 4 .globl ffi_call_SYSV .type ffi_call_SYSV,@function ffi_call_SYSV: .LFB1: pushl %ebp .LCFI0: movl %esp,%ebp .LCFI1: /* Make room for all of the new args. */ movl 16(%ebp),%ecx subl %ecx,%esp /* Align the stack pointer to 16-bytes */ andl $0xfffffff0, %esp movl %esp,%eax /* Place all of the ffi_prep_args in position */ pushl 12(%ebp) pushl %eax call *8(%ebp) /* Return stack to previous state and call the function */ addl $8,%esp call *28(%ebp) /* Load %ecx with the return type code */ movl 20(%ebp),%ecx /* Protect %esi. We're going to pop it in the epilogue. */ pushl %esi /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) jne 0f /* Even if there is no space for the return value, we are obliged to handle floating-point values. */ cmpl $FFI_TYPE_FLOAT,%ecx jne noretval fstp %st(0) jmp epilogue 0: call 1f .Lstore_table: .long noretval-.Lstore_table /* FFI_TYPE_VOID */ .long retint-.Lstore_table /* FFI_TYPE_INT */ .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ .long retint-.Lstore_table /* FFI_TYPE_POINTER */ .long retstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long retstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */ 1: pop %esi add (%esi, %ecx, 4), %esi jmp *%esi /* Sign/zero extend as appropriate. */ retsint8: movsbl %al, %eax jmp retint retsint16: movswl %ax, %eax jmp retint retuint8: movzbl %al, %eax jmp retint retuint16: movzwl %ax, %eax jmp retint retfloat: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue retdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue retlongdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue retint64: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) jmp epilogue retstruct1b: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movb %al,0(%ecx) jmp epilogue retstruct2b: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movw %ax,0(%ecx) jmp epilogue retint: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) retstruct: /* Nothing to do! */ noretval: epilogue: popl %esi movl %ebp,%esp popl %ebp ret .LFE1: .ffi_call_SYSV_end: .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV .align 4 FFI_HIDDEN (ffi_closure_SYSV) .globl ffi_closure_SYSV .type ffi_closure_SYSV, @function ffi_closure_SYSV: .LFB2: pushl %ebp .LCFI2: movl %esp, %ebp .LCFI3: subl $40, %esp leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 8(%ebp), %edx movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__ call ffi_closure_SYSV_inner #else movl %ebx, 8(%esp) .LCFI7: call 1f 1: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx call ffi_closure_SYSV_inner@PLT movl 8(%esp), %ebx #endif movl -12(%ebp), %ecx cmpl $FFI_TYPE_INT, %eax je .Lcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lcls_retllong cmpl $FFI_TYPE_SMALL_STRUCT_1B, %eax je .Lcls_retstruct1b cmpl $FFI_TYPE_SMALL_STRUCT_2B, %eax je .Lcls_retstruct2b cmpl $FFI_TYPE_STRUCT, %eax je .Lcls_retstruct .Lcls_epilogue: movl %ebp, %esp popl %ebp ret .Lcls_retint: movl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retfloat: flds (%ecx) jmp .Lcls_epilogue .Lcls_retdouble: fldl (%ecx) jmp .Lcls_epilogue .Lcls_retldouble: fldt (%ecx) jmp .Lcls_epilogue .Lcls_retllong: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue .Lcls_retstruct1b: movsbl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct2b: movswl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct: movl %ebp, %esp popl %ebp ret $4 .LFE2: .size ffi_closure_SYSV, .-ffi_closure_SYSV #if !FFI_NO_RAW_API #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 .align 4 FFI_HIDDEN (ffi_closure_raw_SYSV) .globl ffi_closure_raw_SYSV .type ffi_closure_raw_SYSV, @function ffi_closure_raw_SYSV: .LFB3: pushl %ebp .LCFI4: movl %esp, %ebp .LCFI5: pushl %esi .LCFI6: subl $36, %esp movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ movl %esi, (%esp) /* cif */ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ cmpl $FFI_TYPE_INT, %eax je .Lrcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lrcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lrcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lrcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lrcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lrcls_retllong .Lrcls_epilogue: addl $36, %esp popl %esi popl %ebp ret .Lrcls_retint: movl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retfloat: flds -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retdouble: fldl -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retldouble: fldt -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retllong: movl -24(%ebp), %eax movl -20(%ebp), %edx jmp .Lrcls_epilogue .LFE3: .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV #endif .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */ .LSCIE1: .long 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #ifdef __PIC__ .ascii "zR\0" /* CIE Augmentation */ #else .ascii "\0" /* CIE Augmentation */ #endif .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ .byte 0x8 /* CIE RA Column */ #ifdef __PIC__ .byte 0x1 /* .uleb128 0x1; Augmentation size */ .byte 0x1b /* FDE Encoding (pcrel sdata4) */ #endif .byte 0xc /* DW_CFA_def_cfa */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x4 /* .uleb128 0x4 */ .byte 0x88 /* DW_CFA_offset, column 0x8 */ .byte 0x1 /* .uleb128 0x1 */ .align 4 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ #ifdef __PIC__ .long .LFB1-. /* FDE initial location */ #else .long .LFB1 /* FDE initial location */ #endif .long .LFE1-.LFB1 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI0-.LFB1 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI1-.LCFI0 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ .align 4 .LEFDE1: .LSFDE2: .long .LEFDE2-.LASFDE2 /* FDE Length */ .LASFDE2: .long .LASFDE2-.Lframe1 /* FDE CIE offset */ #ifdef __PIC__ .long .LFB2-. /* FDE initial location */ #else .long .LFB2 #endif .long .LFE2-.LFB2 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI2-.LFB2 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI3-.LCFI2 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ #if !defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE && defined __PIC__ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI7-.LCFI3 .byte 0x83 /* DW_CFA_offset, column 0x3 */ .byte 0xa /* .uleb128 0xa */ #endif .align 4 .LEFDE2: #if !FFI_NO_RAW_API .LSFDE3: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ #ifdef __PIC__ .long .LFB3-. /* FDE initial location */ #else .long .LFB3 #endif .long .LFE3-.LFB3 /* FDE address range */ #ifdef __PIC__ .byte 0x0 /* .uleb128 0x0; Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI4-.LFB3 .byte 0xe /* DW_CFA_def_cfa_offset */ .byte 0x8 /* .uleb128 0x8 */ .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x2 /* .uleb128 0x2 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI5-.LCFI4 .byte 0xd /* DW_CFA_def_cfa_register */ .byte 0x5 /* .uleb128 0x5 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LCFI6-.LCFI5 .byte 0x86 /* DW_CFA_offset, column 0x6 */ .byte 0x3 /* .uleb128 0x3 */ .align 4 .LEFDE3: #endif #endif /* ifndef __x86_64__ */ .section .note.GNU-stack,"",%progbits polyml-5.7.1/libffi/src/x86/darwin.S0000644000175000017500000002314313204034553016061 0ustar daviddavid/* ----------------------------------------------------------------------- darwin.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. Copyright (C) 2008 Free Software Foundation, Inc. X86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef __x86_64__ #define LIBFFI_ASM #include #include .text .globl _ffi_prep_args .align 4 .globl _ffi_call_SYSV _ffi_call_SYSV: .LFB1: pushl %ebp .LCFI0: movl %esp,%ebp .LCFI1: subl $8,%esp /* Make room for all of the new args. */ movl 16(%ebp),%ecx subl %ecx,%esp movl %esp,%eax /* Place all of the ffi_prep_args in position */ subl $8,%esp pushl 12(%ebp) pushl %eax call *8(%ebp) /* Return stack to previous state and call the function */ addl $16,%esp call *28(%ebp) /* Load %ecx with the return type code */ movl 20(%ebp),%ecx /* Protect %esi. We're going to pop it in the epilogue. */ pushl %esi /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) jne 0f /* Even if there is no space for the return value, we are obliged to handle floating-point values. */ cmpl $FFI_TYPE_FLOAT,%ecx jne noretval fstp %st(0) jmp epilogue 0: .align 4 call 1f .Lstore_table: .long noretval-.Lstore_table /* FFI_TYPE_VOID */ .long retint-.Lstore_table /* FFI_TYPE_INT */ .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ .long retint-.Lstore_table /* FFI_TYPE_POINTER */ .long retstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */ .long retstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */ 1: pop %esi add (%esi, %ecx, 4), %esi jmp *%esi /* Sign/zero extend as appropriate. */ retsint8: movsbl %al, %eax jmp retint retsint16: movswl %ax, %eax jmp retint retuint8: movzbl %al, %eax jmp retint retuint16: movzwl %ax, %eax jmp retint retfloat: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue retdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue retlongdouble: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue retint64: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) jmp epilogue retstruct1b: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movb %al,0(%ecx) jmp epilogue retstruct2b: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movw %ax,0(%ecx) jmp epilogue retint: /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) retstruct: /* Nothing to do! */ noretval: epilogue: popl %esi movl %ebp,%esp popl %ebp ret .LFE1: .ffi_call_SYSV_end: .align 4 FFI_HIDDEN (ffi_closure_SYSV) .globl _ffi_closure_SYSV _ffi_closure_SYSV: .LFB2: pushl %ebp .LCFI2: movl %esp, %ebp .LCFI3: subl $40, %esp leal -24(%ebp), %edx movl %edx, -12(%ebp) /* resp */ leal 8(%ebp), %edx movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ leal -12(%ebp), %edx movl %edx, (%esp) /* &resp */ movl %ebx, 8(%esp) .LCFI7: call L_ffi_closure_SYSV_inner$stub movl 8(%esp), %ebx movl -12(%ebp), %ecx cmpl $FFI_TYPE_INT, %eax je .Lcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lcls_retllong cmpl $FFI_TYPE_SMALL_STRUCT_1B, %eax je .Lcls_retstruct1b cmpl $FFI_TYPE_SMALL_STRUCT_2B, %eax je .Lcls_retstruct2b cmpl $FFI_TYPE_STRUCT, %eax je .Lcls_retstruct .Lcls_epilogue: movl %ebp, %esp popl %ebp ret .Lcls_retint: movl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retfloat: flds (%ecx) jmp .Lcls_epilogue .Lcls_retdouble: fldl (%ecx) jmp .Lcls_epilogue .Lcls_retldouble: fldt (%ecx) jmp .Lcls_epilogue .Lcls_retllong: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue .Lcls_retstruct1b: movsbl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct2b: movswl (%ecx), %eax jmp .Lcls_epilogue .Lcls_retstruct: lea -8(%ebp),%esp movl %ebp, %esp popl %ebp ret $4 .LFE2: #if !FFI_NO_RAW_API #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 .align 4 FFI_HIDDEN (ffi_closure_raw_SYSV) .globl _ffi_closure_raw_SYSV _ffi_closure_raw_SYSV: .LFB3: pushl %ebp .LCFI4: movl %esp, %ebp .LCFI5: pushl %esi .LCFI6: subl $36, %esp movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ movl %esi, (%esp) /* cif */ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ cmpl $FFI_TYPE_INT, %eax je .Lrcls_retint /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ cmpl $FFI_TYPE_UINT64, %eax jge 0f cmpl $FFI_TYPE_UINT8, %eax jge .Lrcls_retint 0: cmpl $FFI_TYPE_FLOAT, %eax je .Lrcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lrcls_retdouble cmpl $FFI_TYPE_LONGDOUBLE, %eax je .Lrcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lrcls_retllong .Lrcls_epilogue: addl $36, %esp popl %esi popl %ebp ret .Lrcls_retint: movl -24(%ebp), %eax jmp .Lrcls_epilogue .Lrcls_retfloat: flds -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retdouble: fldl -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retldouble: fldt -24(%ebp) jmp .Lrcls_epilogue .Lrcls_retllong: movl -24(%ebp), %eax movl -20(%ebp), %edx jmp .Lrcls_epilogue .LFE3: #endif .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 L_ffi_closure_SYSV_inner$stub: .indirect_symbol _ffi_closure_SYSV_inner hlt ; hlt ; hlt ; hlt ; hlt .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support EH_frame1: .set L$set$0,LECIE1-LSCIE1 .long L$set$0 LSCIE1: .long 0x0 .byte 0x1 .ascii "zR\0" .byte 0x1 .byte 0x7c .byte 0x8 .byte 0x1 .byte 0x10 .byte 0xc .byte 0x5 .byte 0x4 .byte 0x88 .byte 0x1 .align 2 LECIE1: .globl _ffi_call_SYSV.eh _ffi_call_SYSV.eh: LSFDE1: .set L$set$1,LEFDE1-LASFDE1 .long L$set$1 LASFDE1: .long LASFDE1-EH_frame1 .long .LFB1-. .set L$set$2,.LFE1-.LFB1 .long L$set$2 .byte 0x0 .byte 0x4 .set L$set$3,.LCFI0-.LFB1 .long L$set$3 .byte 0xe .byte 0x8 .byte 0x84 .byte 0x2 .byte 0x4 .set L$set$4,.LCFI1-.LCFI0 .long L$set$4 .byte 0xd .byte 0x4 .align 2 LEFDE1: .globl _ffi_closure_SYSV.eh _ffi_closure_SYSV.eh: LSFDE2: .set L$set$5,LEFDE2-LASFDE2 .long L$set$5 LASFDE2: .long LASFDE2-EH_frame1 .long .LFB2-. .set L$set$6,.LFE2-.LFB2 .long L$set$6 .byte 0x0 .byte 0x4 .set L$set$7,.LCFI2-.LFB2 .long L$set$7 .byte 0xe .byte 0x8 .byte 0x84 .byte 0x2 .byte 0x4 .set L$set$8,.LCFI3-.LCFI2 .long L$set$8 .byte 0xd .byte 0x4 .align 2 LEFDE2: #if !FFI_NO_RAW_API .globl _ffi_closure_raw_SYSV.eh _ffi_closure_raw_SYSV.eh: LSFDE3: .set L$set$10,LEFDE3-LASFDE3 .long L$set$10 LASFDE3: .long LASFDE3-EH_frame1 .long .LFB3-. .set L$set$11,.LFE3-.LFB3 .long L$set$11 .byte 0x0 .byte 0x4 .set L$set$12,.LCFI4-.LFB3 .long L$set$12 .byte 0xe .byte 0x8 .byte 0x84 .byte 0x2 .byte 0x4 .set L$set$13,.LCFI5-.LCFI4 .long L$set$13 .byte 0xd .byte 0x4 .byte 0x4 .set L$set$14,.LCFI6-.LCFI5 .long L$set$14 .byte 0x85 .byte 0x3 .align 2 LEFDE3: #endif #endif /* ifndef __x86_64__ */ polyml-5.7.1/libffi/src/x86/win64.S0000644000175000017500000002353213204034553015546 0ustar daviddavid#define LIBFFI_ASM #include #include /* Constants for ffi_call_win64 */ #define STACK 0 #define PREP_ARGS_FN 32 #define ECIF 40 #define CIF_BYTES 48 #define CIF_FLAGS 56 #define RVALUE 64 #define FN 72 /* ffi_call_win64 (void (*prep_args_fn)(char *, extended_cif *), extended_cif *ecif, unsigned bytes, unsigned flags, unsigned *rvalue, void (*fn)()); */ #ifdef _MSC_VER PUBLIC ffi_call_win64 EXTRN __chkstk:NEAR EXTRN ffi_closure_win64_inner:NEAR _TEXT SEGMENT ;;; ffi_closure_win64 will be called with these registers set: ;;; rax points to 'closure' ;;; r11 contains a bit mask that specifies which of the ;;; first four parameters are float or double ;;; ;;; It must move the parameters passed in registers to their stack location, ;;; call ffi_closure_win64_inner for the actual work, then return the result. ;;; ffi_closure_win64 PROC FRAME ;; copy register arguments onto stack test r11, 1 jne first_is_float mov QWORD PTR [rsp+8], rcx jmp second first_is_float: movlpd QWORD PTR [rsp+8], xmm0 second: test r11, 2 jne second_is_float mov QWORD PTR [rsp+16], rdx jmp third second_is_float: movlpd QWORD PTR [rsp+16], xmm1 third: test r11, 4 jne third_is_float mov QWORD PTR [rsp+24], r8 jmp fourth third_is_float: movlpd QWORD PTR [rsp+24], xmm2 fourth: test r11, 8 jne fourth_is_float mov QWORD PTR [rsp+32], r9 jmp done fourth_is_float: movlpd QWORD PTR [rsp+32], xmm3 done: .ALLOCSTACK 40 sub rsp, 40 .ENDPROLOG mov rcx, rax ; context is first parameter mov rdx, rsp ; stack is second parameter add rdx, 48 ; point to start of arguments mov rax, ffi_closure_win64_inner call rax ; call the real closure function add rsp, 40 movd xmm0, rax ; If the closure returned a float, ; ffi_closure_win64_inner wrote it to rax ret 0 ffi_closure_win64 ENDP ffi_call_win64 PROC FRAME ;; copy registers onto stack mov QWORD PTR [rsp+32], r9 mov QWORD PTR [rsp+24], r8 mov QWORD PTR [rsp+16], rdx mov QWORD PTR [rsp+8], rcx .PUSHREG rbp push rbp .ALLOCSTACK 48 sub rsp, 48 ; 00000030H .SETFRAME rbp, 32 lea rbp, QWORD PTR [rsp+32] .ENDPROLOG mov eax, DWORD PTR CIF_BYTES[rbp] add rax, 15 and rax, -16 call __chkstk sub rsp, rax lea rax, QWORD PTR [rsp+32] mov QWORD PTR STACK[rbp], rax mov rdx, QWORD PTR ECIF[rbp] mov rcx, QWORD PTR STACK[rbp] call QWORD PTR PREP_ARGS_FN[rbp] mov rsp, QWORD PTR STACK[rbp] movlpd xmm3, QWORD PTR [rsp+24] movd r9, xmm3 movlpd xmm2, QWORD PTR [rsp+16] movd r8, xmm2 movlpd xmm1, QWORD PTR [rsp+8] movd rdx, xmm1 movlpd xmm0, QWORD PTR [rsp] movd rcx, xmm0 call QWORD PTR FN[rbp] ret_struct4b$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SMALL_STRUCT_4B jne ret_struct2b$ mov rcx, QWORD PTR RVALUE[rbp] mov DWORD PTR [rcx], eax jmp ret_void$ ret_struct2b$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SMALL_STRUCT_2B jne ret_struct1b$ mov rcx, QWORD PTR RVALUE[rbp] mov WORD PTR [rcx], ax jmp ret_void$ ret_struct1b$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SMALL_STRUCT_1B jne ret_uint8$ mov rcx, QWORD PTR RVALUE[rbp] mov BYTE PTR [rcx], al jmp ret_void$ ret_uint8$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_UINT8 jne ret_sint8$ mov rcx, QWORD PTR RVALUE[rbp] movzx rax, al mov QWORD PTR [rcx], rax jmp ret_void$ ret_sint8$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SINT8 jne ret_uint16$ mov rcx, QWORD PTR RVALUE[rbp] movsx rax, al mov QWORD PTR [rcx], rax jmp ret_void$ ret_uint16$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_UINT16 jne ret_sint16$ mov rcx, QWORD PTR RVALUE[rbp] movzx rax, ax mov QWORD PTR [rcx], rax jmp ret_void$ ret_sint16$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SINT16 jne ret_uint32$ mov rcx, QWORD PTR RVALUE[rbp] movsx rax, ax mov QWORD PTR [rcx], rax jmp ret_void$ ret_uint32$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_UINT32 jne ret_sint32$ mov rcx, QWORD PTR RVALUE[rbp] mov eax, eax mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_sint32$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SINT32 jne ret_float$ mov rcx, QWORD PTR RVALUE[rbp] cdqe mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_float$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_FLOAT jne SHORT ret_double$ mov rax, QWORD PTR RVALUE[rbp] movss DWORD PTR [rax], xmm0 jmp SHORT ret_void$ ret_double$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_DOUBLE jne SHORT ret_uint64$ mov rax, QWORD PTR RVALUE[rbp] movlpd QWORD PTR [rax], xmm0 jmp SHORT ret_void$ ret_uint64$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_UINT64 jne SHORT ret_sint64$ mov rcx, QWORD PTR RVALUE[rbp] mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_sint64$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_SINT64 jne SHORT ret_pointer$ mov rcx, QWORD PTR RVALUE[rbp] mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_pointer$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_POINTER jne SHORT ret_int$ mov rcx, QWORD PTR RVALUE[rbp] mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_int$: cmp DWORD PTR CIF_FLAGS[rbp], FFI_TYPE_INT jne SHORT ret_void$ mov rcx, QWORD PTR RVALUE[rbp] cdqe mov QWORD PTR [rcx], rax jmp SHORT ret_void$ ret_void$: xor rax, rax lea rsp, QWORD PTR [rbp+16] pop rbp ret 0 ffi_call_win64 ENDP _TEXT ENDS END #else #ifdef SYMBOL_UNDERSCORE #define SYMBOL_NAME(name) _##name #else #define SYMBOL_NAME(name) name #endif .text .extern SYMBOL_NAME(ffi_closure_win64_inner) # ffi_closure_win64 will be called with these registers set: # rax points to 'closure' # r11 contains a bit mask that specifies which of the # first four parameters are float or double # # It must move the parameters passed in registers to their stack location, # call ffi_closure_win64_inner for the actual work, then return the result. # .balign 16 .globl SYMBOL_NAME(ffi_closure_win64) .seh_proc SYMBOL_NAME(ffi_closure_win64) SYMBOL_NAME(ffi_closure_win64): # copy register arguments onto stack test $1,%r11 jne .Lfirst_is_float mov %rcx, 8(%rsp) jmp .Lsecond .Lfirst_is_float: movlpd %xmm0, 8(%rsp) .Lsecond: test $2, %r11 jne .Lsecond_is_float mov %rdx, 16(%rsp) jmp .Lthird .Lsecond_is_float: movlpd %xmm1, 16(%rsp) .Lthird: test $4, %r11 jne .Lthird_is_float mov %r8,24(%rsp) jmp .Lfourth .Lthird_is_float: movlpd %xmm2, 24(%rsp) .Lfourth: test $8, %r11 jne .Lfourth_is_float mov %r9, 32(%rsp) jmp .Ldone .Lfourth_is_float: movlpd %xmm3, 32(%rsp) .Ldone: .seh_stackalloc 40 sub $40, %rsp .seh_endprologue mov %rax, %rcx # context is first parameter mov %rsp, %rdx # stack is second parameter add $48, %rdx # point to start of arguments leaq SYMBOL_NAME(ffi_closure_win64_inner)(%rip), %rax callq *%rax # call the real closure function add $40, %rsp movq %rax, %xmm0 # If the closure returned a float, # ffi_closure_win64_inner wrote it to rax retq .seh_endproc .balign 16 .globl SYMBOL_NAME(ffi_call_win64) .seh_proc SYMBOL_NAME(ffi_call_win64) SYMBOL_NAME(ffi_call_win64): # copy registers onto stack mov %r9,32(%rsp) mov %r8,24(%rsp) mov %rdx,16(%rsp) mov %rcx,8(%rsp) .seh_pushreg rbp push %rbp .seh_stackalloc 48 sub $48,%rsp .seh_setframe rbp, 32 lea 32(%rsp),%rbp .seh_endprologue mov CIF_BYTES(%rbp),%eax add $15, %rax and $-16, %rax cmpq $0x1000, %rax jb Lch_done Lch_probe: subq $0x1000,%rsp orl $0x0, (%rsp) subq $0x1000,%rax cmpq $0x1000,%rax ja Lch_probe Lch_done: subq %rax, %rsp orl $0x0, (%rsp) lea 32(%rsp), %rax mov %rax, STACK(%rbp) mov ECIF(%rbp), %rdx mov STACK(%rbp), %rcx callq *PREP_ARGS_FN(%rbp) mov STACK(%rbp), %rsp movlpd 24(%rsp), %xmm3 movd %xmm3, %r9 movlpd 16(%rsp), %xmm2 movd %xmm2, %r8 movlpd 8(%rsp), %xmm1 movd %xmm1, %rdx movlpd (%rsp), %xmm0 movd %xmm0, %rcx callq *FN(%rbp) .Lret_struct4b: cmpl $FFI_TYPE_SMALL_STRUCT_4B, CIF_FLAGS(%rbp) jne .Lret_struct2b mov RVALUE(%rbp), %rcx mov %eax, (%rcx) jmp .Lret_void .Lret_struct2b: cmpl $FFI_TYPE_SMALL_STRUCT_2B, CIF_FLAGS(%rbp) jne .Lret_struct1b mov RVALUE(%rbp), %rcx mov %ax, (%rcx) jmp .Lret_void .Lret_struct1b: cmpl $FFI_TYPE_SMALL_STRUCT_1B, CIF_FLAGS(%rbp) jne .Lret_uint8 mov RVALUE(%rbp), %rcx mov %al, (%rcx) jmp .Lret_void .Lret_uint8: cmpl $FFI_TYPE_UINT8, CIF_FLAGS(%rbp) jne .Lret_sint8 mov RVALUE(%rbp), %rcx movzbq %al, %rax movq %rax, (%rcx) jmp .Lret_void .Lret_sint8: cmpl $FFI_TYPE_SINT8, CIF_FLAGS(%rbp) jne .Lret_uint16 mov RVALUE(%rbp), %rcx movsbq %al, %rax movq %rax, (%rcx) jmp .Lret_void .Lret_uint16: cmpl $FFI_TYPE_UINT16, CIF_FLAGS(%rbp) jne .Lret_sint16 mov RVALUE(%rbp), %rcx movzwq %ax, %rax movq %rax, (%rcx) jmp .Lret_void .Lret_sint16: cmpl $FFI_TYPE_SINT16, CIF_FLAGS(%rbp) jne .Lret_uint32 mov RVALUE(%rbp), %rcx movswq %ax, %rax movq %rax, (%rcx) jmp .Lret_void .Lret_uint32: cmpl $FFI_TYPE_UINT32, CIF_FLAGS(%rbp) jne .Lret_sint32 mov RVALUE(%rbp), %rcx movl %eax, %eax movq %rax, (%rcx) jmp .Lret_void .Lret_sint32: cmpl $FFI_TYPE_SINT32, CIF_FLAGS(%rbp) jne .Lret_float mov RVALUE(%rbp), %rcx cltq movq %rax, (%rcx) jmp .Lret_void .Lret_float: cmpl $FFI_TYPE_FLOAT, CIF_FLAGS(%rbp) jne .Lret_double mov RVALUE(%rbp), %rax movss %xmm0, (%rax) jmp .Lret_void .Lret_double: cmpl $FFI_TYPE_DOUBLE, CIF_FLAGS(%rbp) jne .Lret_uint64 mov RVALUE(%rbp), %rax movlpd %xmm0, (%rax) jmp .Lret_void .Lret_uint64: cmpl $FFI_TYPE_UINT64, CIF_FLAGS(%rbp) jne .Lret_sint64 mov RVALUE(%rbp), %rcx mov %rax, (%rcx) jmp .Lret_void .Lret_sint64: cmpl $FFI_TYPE_SINT64, CIF_FLAGS(%rbp) jne .Lret_pointer mov RVALUE(%rbp), %rcx mov %rax, (%rcx) jmp .Lret_void .Lret_pointer: cmpl $FFI_TYPE_POINTER, CIF_FLAGS(%rbp) jne .Lret_int mov RVALUE(%rbp), %rcx mov %rax, (%rcx) jmp .Lret_void .Lret_int: cmpl $FFI_TYPE_INT, CIF_FLAGS(%rbp) jne .Lret_void mov RVALUE(%rbp), %rcx cltq movq %rax, (%rcx) jmp .Lret_void .Lret_void: xor %rax, %rax lea 16(%rbp), %rsp pop %rbp retq .seh_endproc #endif /* !_MSC_VER */ polyml-5.7.1/libffi/src/x86/unix64.S0000644000175000017500000002646313204034553015742 0ustar daviddavid/* ----------------------------------------------------------------------- unix64.S - Copyright (c) 2013 The Written Word, Inc. - Copyright (c) 2008 Red Hat, Inc - Copyright (c) 2002 Bo Thorsen x86-64 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifdef __x86_64__ #define LIBFFI_ASM #include #include .text /* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, void *raddr, void (*fnaddr)(void)); Bit o trickiness here -- ARGS+BYTES is the base of the stack frame for this function. This has been allocated by ffi_call. We also deallocate some of the stack that has been alloca'd. */ .align 2 .globl ffi_call_unix64 .type ffi_call_unix64,@function ffi_call_unix64: .LUW0: movq (%rsp), %r10 /* Load return address. */ leaq (%rdi, %rsi), %rax /* Find local stack base. */ movq %rdx, (%rax) /* Save flags. */ movq %rcx, 8(%rax) /* Save raddr. */ movq %rbp, 16(%rax) /* Save old frame pointer. */ movq %r10, 24(%rax) /* Relocate return address. */ movq %rax, %rbp /* Finalize local stack frame. */ .LUW1: movq %rdi, %r10 /* Save a copy of the register area. */ movq %r8, %r11 /* Save a copy of the target fn. */ movl %r9d, %eax /* Set number of SSE registers. */ /* Load up all argument registers. */ movq (%r10), %rdi movq 8(%r10), %rsi movq 16(%r10), %rdx movq 24(%r10), %rcx movq 32(%r10), %r8 movq 40(%r10), %r9 testl %eax, %eax jnz .Lload_sse .Lret_from_load_sse: /* Deallocate the reg arg area. */ leaq 176(%r10), %rsp /* Call the user function. */ call *%r11 /* Deallocate stack arg area; local stack frame in redzone. */ leaq 24(%rbp), %rsp movq 0(%rbp), %rcx /* Reload flags. */ movq 8(%rbp), %rdi /* Reload raddr. */ movq 16(%rbp), %rbp /* Reload old frame pointer. */ .LUW2: /* The first byte of the flags contains the FFI_TYPE. */ movzbl %cl, %r10d leaq .Lstore_table(%rip), %r11 movslq (%r11, %r10, 4), %r10 addq %r11, %r10 jmp *%r10 .Lstore_table: .long .Lst_void-.Lstore_table /* FFI_TYPE_VOID */ .long .Lst_sint32-.Lstore_table /* FFI_TYPE_INT */ .long .Lst_float-.Lstore_table /* FFI_TYPE_FLOAT */ .long .Lst_double-.Lstore_table /* FFI_TYPE_DOUBLE */ .long .Lst_ldouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ .long .Lst_uint8-.Lstore_table /* FFI_TYPE_UINT8 */ .long .Lst_sint8-.Lstore_table /* FFI_TYPE_SINT8 */ .long .Lst_uint16-.Lstore_table /* FFI_TYPE_UINT16 */ .long .Lst_sint16-.Lstore_table /* FFI_TYPE_SINT16 */ .long .Lst_uint32-.Lstore_table /* FFI_TYPE_UINT32 */ .long .Lst_sint32-.Lstore_table /* FFI_TYPE_SINT32 */ .long .Lst_int64-.Lstore_table /* FFI_TYPE_UINT64 */ .long .Lst_int64-.Lstore_table /* FFI_TYPE_SINT64 */ .long .Lst_struct-.Lstore_table /* FFI_TYPE_STRUCT */ .long .Lst_int64-.Lstore_table /* FFI_TYPE_POINTER */ .align 2 .Lst_void: ret .align 2 .Lst_uint8: movzbq %al, %rax movq %rax, (%rdi) ret .align 2 .Lst_sint8: movsbq %al, %rax movq %rax, (%rdi) ret .align 2 .Lst_uint16: movzwq %ax, %rax movq %rax, (%rdi) .align 2 .Lst_sint16: movswq %ax, %rax movq %rax, (%rdi) ret .align 2 .Lst_uint32: movl %eax, %eax movq %rax, (%rdi) .align 2 .Lst_sint32: cltq movq %rax, (%rdi) ret .align 2 .Lst_int64: movq %rax, (%rdi) ret .align 2 .Lst_float: movss %xmm0, (%rdi) ret .align 2 .Lst_double: movsd %xmm0, (%rdi) ret .Lst_ldouble: fstpt (%rdi) ret .align 2 .Lst_struct: leaq -20(%rsp), %rsi /* Scratch area in redzone. */ /* We have to locate the values now, and since we don't want to write too much data into the user's return value, we spill the value to a 16 byte scratch area first. Bits 8, 9, and 10 control where the values are located. Only one of the three bits will be set; see ffi_prep_cif_machdep for the pattern. */ movd %xmm0, %r10 movd %xmm1, %r11 testl $0x100, %ecx cmovnz %rax, %rdx cmovnz %r10, %rax testl $0x200, %ecx cmovnz %r10, %rdx testl $0x400, %ecx cmovnz %r10, %rax cmovnz %r11, %rdx movq %rax, (%rsi) movq %rdx, 8(%rsi) /* Bits 12-31 contain the true size of the structure. Copy from the scratch area to the true destination. */ shrl $12, %ecx rep movsb ret /* Many times we can avoid loading any SSE registers at all. It's not worth an indirect jump to load the exact set of SSE registers needed; zero or all is a good compromise. */ .align 2 .LUW3: .Lload_sse: movdqa 48(%r10), %xmm0 movdqa 64(%r10), %xmm1 movdqa 80(%r10), %xmm2 movdqa 96(%r10), %xmm3 movdqa 112(%r10), %xmm4 movdqa 128(%r10), %xmm5 movdqa 144(%r10), %xmm6 movdqa 160(%r10), %xmm7 jmp .Lret_from_load_sse .LUW4: .size ffi_call_unix64,.-ffi_call_unix64 .align 2 .globl ffi_closure_unix64 .type ffi_closure_unix64,@function ffi_closure_unix64: .LUW5: /* The carry flag is set by the trampoline iff SSE registers are used. Don't clobber it before the branch instruction. */ leaq -200(%rsp), %rsp .LUW6: movq %rdi, (%rsp) movq %rsi, 8(%rsp) movq %rdx, 16(%rsp) movq %rcx, 24(%rsp) movq %r8, 32(%rsp) movq %r9, 40(%rsp) jc .Lsave_sse .Lret_from_save_sse: movq %r10, %rdi leaq 176(%rsp), %rsi movq %rsp, %rdx leaq 208(%rsp), %rcx call ffi_closure_unix64_inner@PLT /* Deallocate stack frame early; return value is now in redzone. */ addq $200, %rsp .LUW7: /* The first byte of the return value contains the FFI_TYPE. */ movzbl %al, %r10d leaq .Lload_table(%rip), %r11 movslq (%r11, %r10, 4), %r10 addq %r11, %r10 jmp *%r10 .Lload_table: .long .Lld_void-.Lload_table /* FFI_TYPE_VOID */ .long .Lld_int32-.Lload_table /* FFI_TYPE_INT */ .long .Lld_float-.Lload_table /* FFI_TYPE_FLOAT */ .long .Lld_double-.Lload_table /* FFI_TYPE_DOUBLE */ .long .Lld_ldouble-.Lload_table /* FFI_TYPE_LONGDOUBLE */ .long .Lld_int8-.Lload_table /* FFI_TYPE_UINT8 */ .long .Lld_int8-.Lload_table /* FFI_TYPE_SINT8 */ .long .Lld_int16-.Lload_table /* FFI_TYPE_UINT16 */ .long .Lld_int16-.Lload_table /* FFI_TYPE_SINT16 */ .long .Lld_int32-.Lload_table /* FFI_TYPE_UINT32 */ .long .Lld_int32-.Lload_table /* FFI_TYPE_SINT32 */ .long .Lld_int64-.Lload_table /* FFI_TYPE_UINT64 */ .long .Lld_int64-.Lload_table /* FFI_TYPE_SINT64 */ .long .Lld_struct-.Lload_table /* FFI_TYPE_STRUCT */ .long .Lld_int64-.Lload_table /* FFI_TYPE_POINTER */ .align 2 .Lld_void: ret .align 2 .Lld_int8: movzbl -24(%rsp), %eax ret .align 2 .Lld_int16: movzwl -24(%rsp), %eax ret .align 2 .Lld_int32: movl -24(%rsp), %eax ret .align 2 .Lld_int64: movq -24(%rsp), %rax ret .align 2 .Lld_float: movss -24(%rsp), %xmm0 ret .align 2 .Lld_double: movsd -24(%rsp), %xmm0 ret .align 2 .Lld_ldouble: fldt -24(%rsp) ret .align 2 .Lld_struct: /* There are four possibilities here, %rax/%rdx, %xmm0/%rax, %rax/%xmm0, %xmm0/%xmm1. We collapse two by always loading both rdx and xmm1 with the second word. For the remaining, bit 8 set means xmm0 gets the second word, and bit 9 means that rax gets the second word. */ movq -24(%rsp), %rcx movq -16(%rsp), %rdx movq -16(%rsp), %xmm1 testl $0x100, %eax cmovnz %rdx, %rcx movd %rcx, %xmm0 testl $0x200, %eax movq -24(%rsp), %rax cmovnz %rdx, %rax ret /* See the comment above .Lload_sse; the same logic applies here. */ .align 2 .LUW8: .Lsave_sse: movdqa %xmm0, 48(%rsp) movdqa %xmm1, 64(%rsp) movdqa %xmm2, 80(%rsp) movdqa %xmm3, 96(%rsp) movdqa %xmm4, 112(%rsp) movdqa %xmm5, 128(%rsp) movdqa %xmm6, 144(%rsp) movdqa %xmm7, 160(%rsp) jmp .Lret_from_save_sse .LUW9: .size ffi_closure_unix64,.-ffi_closure_unix64 #ifdef __GNUC__ /* Only emit DWARF unwind info when building with the GNU toolchain. */ #ifdef HAVE_AS_X86_64_UNWIND_SECTION_TYPE .section .eh_frame,"a",@unwind #else .section .eh_frame,"a",@progbits #endif .Lframe1: .long .LECIE1-.LSCIE1 /* CIE Length */ .LSCIE1: .long 0 /* CIE Identifier Tag */ .byte 1 /* CIE Version */ .ascii "zR\0" /* CIE Augmentation */ .uleb128 1 /* CIE Code Alignment Factor */ .sleb128 -8 /* CIE Data Alignment Factor */ .byte 0x10 /* CIE RA Column */ .uleb128 1 /* Augmentation size */ .byte 0x1b /* FDE Encoding (pcrel sdata4) */ .byte 0xc /* DW_CFA_def_cfa, %rsp offset 8 */ .uleb128 7 .uleb128 8 .byte 0x80+16 /* DW_CFA_offset, %rip offset 1*-8 */ .uleb128 1 .align 8 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ #if HAVE_AS_X86_PCREL .long .LUW0-. /* FDE initial location */ #else .long .LUW0@rel #endif .long .LUW4-.LUW0 /* FDE address range */ .uleb128 0x0 /* Augmentation size */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW1-.LUW0 /* New stack frame based off rbp. This is a itty bit of unwind trickery in that the CFA *has* changed. There is no easy way to describe it correctly on entry to the function. Fortunately, it doesn't matter too much since at all points we can correctly unwind back to ffi_call. Note that the location to which we moved the return address is (the new) CFA-8, so from the perspective of the unwind info, it hasn't moved. */ .byte 0xc /* DW_CFA_def_cfa, %rbp offset 32 */ .uleb128 6 .uleb128 32 .byte 0x80+6 /* DW_CFA_offset, %rbp offset 2*-8 */ .uleb128 2 .byte 0xa /* DW_CFA_remember_state */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW2-.LUW1 .byte 0xc /* DW_CFA_def_cfa, %rsp offset 8 */ .uleb128 7 .uleb128 8 .byte 0xc0+6 /* DW_CFA_restore, %rbp */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW3-.LUW2 .byte 0xb /* DW_CFA_restore_state */ .align 8 .LEFDE1: .LSFDE3: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ #if HAVE_AS_X86_PCREL .long .LUW5-. /* FDE initial location */ #else .long .LUW5@rel #endif .long .LUW9-.LUW5 /* FDE address range */ .uleb128 0x0 /* Augmentation size */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW6-.LUW5 .byte 0xe /* DW_CFA_def_cfa_offset */ .uleb128 208 .byte 0xa /* DW_CFA_remember_state */ .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW7-.LUW6 .byte 0xe /* DW_CFA_def_cfa_offset */ .uleb128 8 .byte 0x4 /* DW_CFA_advance_loc4 */ .long .LUW8-.LUW7 .byte 0xb /* DW_CFA_restore_state */ .align 8 .LEFDE3: #endif /* __GNUC__ */ #endif /* __x86_64__ */ #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/powerpc/0000755000175000017500000000000013204034553015500 5ustar daviddavidpolyml-5.7.1/libffi/src/powerpc/linux64_closure.S0000644000175000017500000002247513204034553020703 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.h - Copyright (c) 2003 Jakub Jelinek Copyright (c) 2008 Red Hat, Inc. PowerPC64 Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include .file "linux64_closure.S" #ifdef POWERPC64 FFI_HIDDEN (ffi_closure_LINUX64) .globl ffi_closure_LINUX64 # if _CALL_ELF == 2 .text ffi_closure_LINUX64: addis %r2, %r12, .TOC.-ffi_closure_LINUX64@ha addi %r2, %r2, .TOC.-ffi_closure_LINUX64@l .localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64 # else .section ".opd","aw" .align 3 ffi_closure_LINUX64: # ifdef _CALL_LINUX .quad .L.ffi_closure_LINUX64,.TOC.@tocbase,0 .type ffi_closure_LINUX64,@function .text .L.ffi_closure_LINUX64: # else FFI_HIDDEN (.ffi_closure_LINUX64) .globl .ffi_closure_LINUX64 .quad .ffi_closure_LINUX64,.TOC.@tocbase,0 .size ffi_closure_LINUX64,24 .type .ffi_closure_LINUX64,@function .text .ffi_closure_LINUX64: # endif # endif # if _CALL_ELF == 2 # 32 byte special reg save area + 64 byte parm save area # + 64 byte retval area + 13*8 fpr save area + round to 16 # define STACKFRAME 272 # define PARMSAVE 32 # define RETVAL PARMSAVE+64 # else # 48 bytes special reg save area + 64 bytes parm save area # + 16 bytes retval area + 13*8 bytes fpr save area + round to 16 # define STACKFRAME 240 # define PARMSAVE 48 # define RETVAL PARMSAVE+64 # endif .LFB1: # if _CALL_ELF == 2 ld %r12, FFI_TRAMPOLINE_SIZE(%r11) # closure->cif mflr %r0 lwz %r12, 28(%r12) # cif->flags mtcrf 0x40, %r12 addi %r12, %r1, PARMSAVE bt 7, .Lparmsave # Our caller has not allocated a parameter save area. # We need to allocate one here and use it to pass gprs to # ffi_closure_helper_LINUX64. addi %r12, %r1, -STACKFRAME+PARMSAVE .Lparmsave: std %r0, 16(%r1) # Save general regs into parm save area std %r3, 0(%r12) std %r4, 8(%r12) std %r5, 16(%r12) std %r6, 24(%r12) std %r7, 32(%r12) std %r8, 40(%r12) std %r9, 48(%r12) std %r10, 56(%r12) # load up the pointer to the parm save area mr %r5, %r12 # else # copy r2 to r11 and load TOC into r2 mr %r11, %r2 ld %r2, 16(%r11) mflr %r0 # Save general regs into parm save area # This is the parameter save area set up by our caller. std %r3, PARMSAVE+0(%r1) std %r4, PARMSAVE+8(%r1) std %r5, PARMSAVE+16(%r1) std %r6, PARMSAVE+24(%r1) std %r7, PARMSAVE+32(%r1) std %r8, PARMSAVE+40(%r1) std %r9, PARMSAVE+48(%r1) std %r10, PARMSAVE+56(%r1) std %r0, 16(%r1) # load up the pointer to the parm save area addi %r5, %r1, PARMSAVE # endif # next save fpr 1 to fpr 13 stfd %f1, -104+(0*8)(%r1) stfd %f2, -104+(1*8)(%r1) stfd %f3, -104+(2*8)(%r1) stfd %f4, -104+(3*8)(%r1) stfd %f5, -104+(4*8)(%r1) stfd %f6, -104+(5*8)(%r1) stfd %f7, -104+(6*8)(%r1) stfd %f8, -104+(7*8)(%r1) stfd %f9, -104+(8*8)(%r1) stfd %f10, -104+(9*8)(%r1) stfd %f11, -104+(10*8)(%r1) stfd %f12, -104+(11*8)(%r1) stfd %f13, -104+(12*8)(%r1) # load up the pointer to the saved fpr registers */ addi %r6, %r1, -104 # load up the pointer to the result storage addi %r4, %r1, -STACKFRAME+RETVAL stdu %r1, -STACKFRAME(%r1) .LCFI0: # get the context pointer from the trampoline mr %r3, %r11 # make the call # if defined _CALL_LINUX || _CALL_ELF == 2 bl ffi_closure_helper_LINUX64 # else bl .ffi_closure_helper_LINUX64 # endif .Lret: # now r3 contains the return type # so use it to look up in a table # so we know how to deal with each type # look up the proper starting point in table # by using return type as offset ld %r0, STACKFRAME+16(%r1) cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT bge .Lsmall mflr %r4 # move address of .Lret to r4 sldi %r3, %r3, 4 # now multiply return type by 16 addi %r4, %r4, .Lret_type0 - .Lret add %r3, %r3, %r4 # add contents of table to table address mtctr %r3 bctr # jump to it # Each of the ret_typeX code fragments has to be exactly 16 bytes long # (4 instructions). For cache effectiveness we align to a 16 byte boundary # first. .align 4 .Lret_type0: # case FFI_TYPE_VOID mtlr %r0 addi %r1, %r1, STACKFRAME blr nop # case FFI_TYPE_INT # ifdef __LITTLE_ENDIAN__ lwa %r3, RETVAL+0(%r1) # else lwa %r3, RETVAL+4(%r1) # endif mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_FLOAT lfs %f1, RETVAL+0(%r1) mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_DOUBLE lfd %f1, RETVAL+0(%r1) mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_LONGDOUBLE lfd %f1, RETVAL+0(%r1) mtlr %r0 lfd %f2, RETVAL+8(%r1) b .Lfinish # case FFI_TYPE_UINT8 # ifdef __LITTLE_ENDIAN__ lbz %r3, RETVAL+0(%r1) # else lbz %r3, RETVAL+7(%r1) # endif mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_SINT8 # ifdef __LITTLE_ENDIAN__ lbz %r3, RETVAL+0(%r1) # else lbz %r3, RETVAL+7(%r1) # endif extsb %r3,%r3 mtlr %r0 b .Lfinish # case FFI_TYPE_UINT16 # ifdef __LITTLE_ENDIAN__ lhz %r3, RETVAL+0(%r1) # else lhz %r3, RETVAL+6(%r1) # endif mtlr %r0 .Lfinish: addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_SINT16 # ifdef __LITTLE_ENDIAN__ lha %r3, RETVAL+0(%r1) # else lha %r3, RETVAL+6(%r1) # endif mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_UINT32 # ifdef __LITTLE_ENDIAN__ lwz %r3, RETVAL+0(%r1) # else lwz %r3, RETVAL+4(%r1) # endif mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_SINT32 # ifdef __LITTLE_ENDIAN__ lwa %r3, RETVAL+0(%r1) # else lwa %r3, RETVAL+4(%r1) # endif mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_UINT64 ld %r3, RETVAL+0(%r1) mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_SINT64 ld %r3, RETVAL+0(%r1) mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_TYPE_STRUCT mtlr %r0 addi %r1, %r1, STACKFRAME blr nop # case FFI_TYPE_POINTER ld %r3, RETVAL+0(%r1) mtlr %r0 addi %r1, %r1, STACKFRAME blr # case FFI_V2_TYPE_FLOAT_HOMOG lfs %f1, RETVAL+0(%r1) lfs %f2, RETVAL+4(%r1) lfs %f3, RETVAL+8(%r1) b .Lmorefloat # case FFI_V2_TYPE_DOUBLE_HOMOG lfd %f1, RETVAL+0(%r1) lfd %f2, RETVAL+8(%r1) lfd %f3, RETVAL+16(%r1) lfd %f4, RETVAL+24(%r1) mtlr %r0 lfd %f5, RETVAL+32(%r1) lfd %f6, RETVAL+40(%r1) lfd %f7, RETVAL+48(%r1) lfd %f8, RETVAL+56(%r1) addi %r1, %r1, STACKFRAME blr .Lmorefloat: lfs %f4, RETVAL+12(%r1) mtlr %r0 lfs %f5, RETVAL+16(%r1) lfs %f6, RETVAL+20(%r1) lfs %f7, RETVAL+24(%r1) lfs %f8, RETVAL+28(%r1) addi %r1, %r1, STACKFRAME blr .Lsmall: # ifdef __LITTLE_ENDIAN__ ld %r3,RETVAL+0(%r1) mtlr %r0 ld %r4,RETVAL+8(%r1) addi %r1, %r1, STACKFRAME blr # else # A struct smaller than a dword is returned in the low bits of r3 # ie. right justified. Larger structs are passed left justified # in r3 and r4. The return value area on the stack will have # the structs as they are usually stored in memory. cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT + 7 # size 8 bytes? neg %r5, %r3 ld %r3,RETVAL+0(%r1) blt .Lsmalldown mtlr %r0 ld %r4,RETVAL+8(%r1) addi %r1, %r1, STACKFRAME blr .Lsmalldown: addi %r5, %r5, FFI_V2_TYPE_SMALL_STRUCT + 7 mtlr %r0 sldi %r5, %r5, 3 addi %r1, %r1, STACKFRAME srd %r3, %r3, %r5 blr # endif .LFE1: .long 0 .byte 0,12,0,1,128,0,0,0 # if _CALL_ELF == 2 .size ffi_closure_LINUX64,.-ffi_closure_LINUX64 # else # ifdef _CALL_LINUX .size ffi_closure_LINUX64,.-.L.ffi_closure_LINUX64 # else .size .ffi_closure_LINUX64,.-.ffi_closure_LINUX64 # endif # endif .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry .LSCIE1: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -8 # CIE Data Alignment Factor .byte 0x41 # CIE RA Column .uleb128 0x1 # Augmentation size .byte 0x14 # FDE Encoding (pcrel udata8) .byte 0xc # DW_CFA_def_cfa .uleb128 0x1 .uleb128 0x0 .align 3 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 # FDE Length .LASFDE1: .4byte .LASFDE1-.Lframe1 # FDE CIE offset .8byte .LFB1-. # FDE initial location .8byte .LFE1-.LFB1 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x2 # DW_CFA_advance_loc1 .byte .LCFI0-.LFB1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 STACKFRAME .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x41 .sleb128 -2 .align 3 .LEFDE1: #endif #if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/powerpc/ffi_linux64.c0000644000175000017500000005620113204034553020005 0ustar daviddavid/* ----------------------------------------------------------------------- ffi_linux64.c - Copyright (C) 2013 IBM Copyright (C) 2011 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc Copyright (c) 1998 Geoffrey Keating PowerPC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include "ffi.h" #ifdef POWERPC64 #include "ffi_common.h" #include "ffi_powerpc.h" /* About the LINUX64 ABI. */ enum { NUM_GPR_ARG_REGISTERS64 = 8, NUM_FPR_ARG_REGISTERS64 = 13 }; enum { ASM_NEEDS_REGISTERS64 = 4 }; #if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE /* Adjust size of ffi_type_longdouble. */ void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi abi) { if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX) { ffi_type_longdouble.size = 8; ffi_type_longdouble.alignment = 8; } else { ffi_type_longdouble.size = 16; ffi_type_longdouble.alignment = 16; } } #endif #if _CALL_ELF == 2 static unsigned int discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum) { switch (t->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: *elnum = 1; return (int) t->type; case FFI_TYPE_STRUCT:; { unsigned int base_elt = 0, total_elnum = 0; ffi_type **el = t->elements; while (*el) { unsigned int el_elt, el_elnum = 0; el_elt = discover_homogeneous_aggregate (*el, &el_elnum); if (el_elt == 0 || (base_elt && base_elt != el_elt)) return 0; base_elt = el_elt; total_elnum += el_elnum; if (total_elnum > 8) return 0; el++; } *elnum = total_elnum; return base_elt; } default: return 0; } } #endif /* Perform machine dependent cif processing */ static ffi_status ffi_prep_cif_linux64_core (ffi_cif *cif) { ffi_type **ptr; unsigned bytes; unsigned i, fparg_count = 0, intarg_count = 0; unsigned flags = cif->flags; #if _CALL_ELF == 2 unsigned int elt, elnum; #endif #if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE /* If compiled without long double support.. */ if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) return FFI_BAD_ABI; #endif /* The machine-independent calculation of cif->bytes doesn't work for us. Redo the calculation. */ #if _CALL_ELF == 2 /* Space for backchain, CR, LR, TOC and the asm's temp regs. */ bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long); /* Space for the general registers. */ bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long); #else /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp regs. */ bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long); /* Space for the mandatory parm save area and general registers. */ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); #endif /* Return value handling. */ switch (cif->rtype->type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) flags |= FLAG_RETURNS_128BITS; /* Fall through. */ #endif case FFI_TYPE_DOUBLE: flags |= FLAG_RETURNS_64BITS; /* Fall through. */ case FFI_TYPE_FLOAT: flags |= FLAG_RETURNS_FP; break; case FFI_TYPE_UINT128: flags |= FLAG_RETURNS_128BITS; /* Fall through. */ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: flags |= FLAG_RETURNS_64BITS; break; case FFI_TYPE_STRUCT: #if _CALL_ELF == 2 elt = discover_homogeneous_aggregate (cif->rtype, &elnum); if (elt) { if (elt == FFI_TYPE_DOUBLE) flags |= FLAG_RETURNS_64BITS; flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST; break; } if (cif->rtype->size <= 16) { flags |= FLAG_RETURNS_SMST; break; } #endif intarg_count++; flags |= FLAG_RETVAL_REFERENCE; /* Fall through. */ case FFI_TYPE_VOID: flags |= FLAG_RETURNS_NOTHING; break; default: /* Returns 32-bit integer, or similar. Nothing to do here. */ break; } for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { unsigned int align; switch ((*ptr)->type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) { fparg_count++; intarg_count++; } /* Fall through. */ #endif case FFI_TYPE_DOUBLE: case FFI_TYPE_FLOAT: fparg_count++; intarg_count++; if (fparg_count > NUM_FPR_ARG_REGISTERS64) flags |= FLAG_ARG_NEEDS_PSAVE; break; case FFI_TYPE_STRUCT: if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) { align = (*ptr)->alignment; if (align > 16) align = 16; align = align / 8; if (align > 1) intarg_count = ALIGN (intarg_count, align); } intarg_count += ((*ptr)->size + 7) / 8; #if _CALL_ELF == 2 elt = discover_homogeneous_aggregate (*ptr, &elnum); if (elt) { fparg_count += elnum; if (fparg_count > NUM_FPR_ARG_REGISTERS64) flags |= FLAG_ARG_NEEDS_PSAVE; } else #endif { if (intarg_count > NUM_GPR_ARG_REGISTERS64) flags |= FLAG_ARG_NEEDS_PSAVE; } break; case FFI_TYPE_POINTER: case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: /* Everything else is passed as a 8-byte word in a GPR, either the object itself or a pointer to it. */ intarg_count++; if (intarg_count > NUM_GPR_ARG_REGISTERS64) flags |= FLAG_ARG_NEEDS_PSAVE; break; default: FFI_ASSERT (0); } } if (fparg_count != 0) flags |= FLAG_FP_ARGUMENTS; if (intarg_count > 4) flags |= FLAG_4_GPR_ARGUMENTS; /* Space for the FPR registers, if needed. */ if (fparg_count != 0) bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double); /* Stack space. */ #if _CALL_ELF == 2 if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0) bytes += intarg_count * sizeof (long); #else if (intarg_count > NUM_GPR_ARG_REGISTERS64) bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long); #endif /* The stack space allocated needs to be a multiple of 16 bytes. */ bytes = (bytes + 15) & ~0xF; cif->flags = flags; cif->bytes = bytes; return FFI_OK; } ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *cif) { if ((cif->abi & FFI_LINUX) != 0) cif->nfixedargs = cif->nargs; #if _CALL_ELF != 2 else if (cif->abi == FFI_COMPAT_LINUX64) { /* This call is from old code. Don't touch cif->nfixedargs since old code will be using a smaller cif. */ cif->flags |= FLAG_COMPAT; /* Translate to new abi value. */ cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; } #endif else return FFI_BAD_ABI; return ffi_prep_cif_linux64_core (cif); } ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs MAYBE_UNUSED) { if ((cif->abi & FFI_LINUX) != 0) cif->nfixedargs = nfixedargs; #if _CALL_ELF != 2 else if (cif->abi == FFI_COMPAT_LINUX64) { /* This call is from old code. Don't touch cif->nfixedargs since old code will be using a smaller cif. */ cif->flags |= FLAG_COMPAT; /* Translate to new abi value. */ cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; } #endif else return FFI_BAD_ABI; #if _CALL_ELF == 2 cif->flags |= FLAG_ARG_NEEDS_PSAVE; #endif return ffi_prep_cif_linux64_core (cif); } /* ffi_prep_args64 is called by the assembly routine once stack space has been allocated for the function's arguments. The stack layout we want looks like this: | Ret addr from ffi_call_LINUX64 8bytes | higher addresses |--------------------------------------------| | CR save area 8bytes | |--------------------------------------------| | Previous backchain pointer 8 | stack pointer here |--------------------------------------------|<+ <<< on entry to | Saved r28-r31 4*8 | | ffi_call_LINUX64 |--------------------------------------------| | | GPR registers r3-r10 8*8 | | |--------------------------------------------| | | FPR registers f1-f13 (optional) 13*8 | | |--------------------------------------------| | | Parameter save area | | |--------------------------------------------| | | TOC save area 8 | | |--------------------------------------------| | stack | | Linker doubleword 8 | | grows | |--------------------------------------------| | down V | Compiler doubleword 8 | | |--------------------------------------------| | lower addresses | Space for callee's LR 8 | | |--------------------------------------------| | | CR save area 8 | | |--------------------------------------------| | stack pointer here | Current backchain pointer 8 |-/ during |--------------------------------------------| <<< ffi_call_LINUX64 */ void FFI_HIDDEN ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) { const unsigned long bytes = ecif->cif->bytes; const unsigned long flags = ecif->cif->flags; typedef union { char *c; unsigned long *ul; float *f; double *d; size_t p; } valp; /* 'stacktop' points at the previous backchain pointer. */ valp stacktop; /* 'next_arg' points at the space for gpr3, and grows upwards as we use GPR registers, then continues at rest. */ valp gpr_base; valp gpr_end; valp rest; valp next_arg; /* 'fpr_base' points at the space for fpr3, and grows upwards as we use FPR registers. */ valp fpr_base; unsigned int fparg_count; unsigned int i, words, nargs, nfixedargs; ffi_type **ptr; double double_tmp; union { void **v; char **c; signed char **sc; unsigned char **uc; signed short **ss; unsigned short **us; signed int **si; unsigned int **ui; unsigned long **ul; float **f; double **d; } p_argv; unsigned long gprvalue; unsigned long align; stacktop.c = (char *) stack + bytes; gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64; gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64; #if _CALL_ELF == 2 rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64; #else rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64; #endif fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64; fparg_count = 0; next_arg.ul = gpr_base.ul; /* Check that everything starts aligned properly. */ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); FFI_ASSERT ((bytes & 0xF) == 0); /* Deal with return values that are actually pass-by-reference. */ if (flags & FLAG_RETVAL_REFERENCE) *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue; /* Now for the arguments. */ p_argv.v = ecif->avalue; nargs = ecif->cif->nargs; #if _CALL_ELF != 2 nfixedargs = (unsigned) -1; if ((flags & FLAG_COMPAT) == 0) #endif nfixedargs = ecif->cif->nfixedargs; for (ptr = ecif->cif->arg_types, i = 0; i < nargs; i++, ptr++, p_argv.v++) { #if _CALL_ELF == 2 unsigned int elt, elnum; #endif switch ((*ptr)->type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) { double_tmp = (*p_argv.d)[0]; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) { *fpr_base.d++ = double_tmp; # if _CALL_ELF != 2 if ((flags & FLAG_COMPAT) != 0) *next_arg.d = double_tmp; # endif } else *next_arg.d = double_tmp; if (++next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; fparg_count++; double_tmp = (*p_argv.d)[1]; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) { *fpr_base.d++ = double_tmp; # if _CALL_ELF != 2 if ((flags & FLAG_COMPAT) != 0) *next_arg.d = double_tmp; # endif } else *next_arg.d = double_tmp; if (++next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; fparg_count++; FFI_ASSERT (__LDBL_MANT_DIG__ == 106); FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; } /* Fall through. */ #endif case FFI_TYPE_DOUBLE: double_tmp = **p_argv.d; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) { *fpr_base.d++ = double_tmp; #if _CALL_ELF != 2 if ((flags & FLAG_COMPAT) != 0) *next_arg.d = double_tmp; #endif } else *next_arg.d = double_tmp; if (++next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; fparg_count++; FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; case FFI_TYPE_FLOAT: double_tmp = **p_argv.f; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) { *fpr_base.d++ = double_tmp; #if _CALL_ELF != 2 if ((flags & FLAG_COMPAT) != 0) *next_arg.f = (float) double_tmp; #endif } else *next_arg.f = (float) double_tmp; if (++next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; fparg_count++; FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; case FFI_TYPE_STRUCT: if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) { align = (*ptr)->alignment; if (align > 16) align = 16; if (align > 1) next_arg.p = ALIGN (next_arg.p, align); } #if _CALL_ELF == 2 elt = discover_homogeneous_aggregate (*ptr, &elnum); if (elt) { union { void *v; float *f; double *d; } arg; arg.v = *p_argv.v; if (elt == FFI_TYPE_FLOAT) { do { double_tmp = *arg.f++; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) *fpr_base.d++ = double_tmp; else *next_arg.f = (float) double_tmp; if (++next_arg.f == gpr_end.f) next_arg.f = rest.f; fparg_count++; } while (--elnum != 0); if ((next_arg.p & 3) != 0) { if (++next_arg.f == gpr_end.f) next_arg.f = rest.f; } } else do { double_tmp = *arg.d++; if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) *fpr_base.d++ = double_tmp; else *next_arg.d = double_tmp; if (++next_arg.d == gpr_end.d) next_arg.d = rest.d; fparg_count++; } while (--elnum != 0); } else #endif { words = ((*ptr)->size + 7) / 8; if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul) { size_t first = gpr_end.c - next_arg.c; memcpy (next_arg.c, *p_argv.c, first); memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first); next_arg.c = rest.c + words * 8 - first; } else { char *where = next_arg.c; #ifndef __LITTLE_ENDIAN__ /* Structures with size less than eight bytes are passed left-padded. */ if ((*ptr)->size < 8) where += 8 - (*ptr)->size; #endif memcpy (where, *p_argv.c, (*ptr)->size); next_arg.ul += words; if (next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; } } break; case FFI_TYPE_UINT8: gprvalue = **p_argv.uc; goto putgpr; case FFI_TYPE_SINT8: gprvalue = **p_argv.sc; goto putgpr; case FFI_TYPE_UINT16: gprvalue = **p_argv.us; goto putgpr; case FFI_TYPE_SINT16: gprvalue = **p_argv.ss; goto putgpr; case FFI_TYPE_UINT32: gprvalue = **p_argv.ui; goto putgpr; case FFI_TYPE_INT: case FFI_TYPE_SINT32: gprvalue = **p_argv.si; goto putgpr; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_POINTER: gprvalue = **p_argv.ul; putgpr: *next_arg.ul++ = gprvalue; if (next_arg.ul == gpr_end.ul) next_arg.ul = rest.ul; break; } } FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || (next_arg.ul >= gpr_base.ul && next_arg.ul <= gpr_base.ul + 4)); } #if _CALL_ELF == 2 #define MIN_CACHE_LINE_SIZE 8 static void flush_icache (char *wraddr, char *xaddr, int size) { int i; for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) : "memory"); } #endif ffi_status ffi_prep_closure_loc_linux64 (ffi_closure *closure, ffi_cif *cif, void (*fun) (ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { #if _CALL_ELF == 2 unsigned int *tramp = (unsigned int *) &closure->tramp[0]; if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) return FFI_BAD_ABI; tramp[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */ tramp[1] = 0xe98c0010; /* ld 12,1f-0b(12) */ tramp[2] = 0x7d8903a6; /* mtctr 12 */ tramp[3] = 0x4e800420; /* bctr */ /* 1: .quad function_addr */ /* 2: .quad context */ *(void **) &tramp[4] = (void *) ffi_closure_LINUX64; *(void **) &tramp[6] = codeloc; flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); #else void **tramp = (void **) &closure->tramp[0]; if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) return FFI_BAD_ABI; /* Copy function address and TOC from ffi_closure_LINUX64. */ memcpy (tramp, (char *) ffi_closure_LINUX64, 16); tramp[2] = tramp[1]; tramp[1] = codeloc; #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue, unsigned long *pst, ffi_dblfl *pfr) { /* rvalue is the pointer to space for return value in closure assembly */ /* pst is the pointer to parameter save area (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */ /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */ void **avalue; ffi_type **arg_types; unsigned long i, avn, nfixedargs; ffi_cif *cif; ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64; unsigned long align; cif = closure->cif; avalue = alloca (cif->nargs * sizeof (void *)); /* Copy the caller's structure return value address so that the closure returns the data directly to the caller. */ if (cif->rtype->type == FFI_TYPE_STRUCT && (cif->flags & FLAG_RETURNS_SMST) == 0) { rvalue = (void *) *pst; pst++; } i = 0; avn = cif->nargs; #if _CALL_ELF != 2 nfixedargs = (unsigned) -1; if ((cif->flags & FLAG_COMPAT) == 0) #endif nfixedargs = cif->nfixedargs; arg_types = cif->arg_types; /* Grab the addresses of the arguments from the stack frame. */ while (i < avn) { unsigned int elt, elnum; switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: #ifndef __LITTLE_ENDIAN__ avalue[i] = (char *) pst + 7; pst++; break; #endif case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: #ifndef __LITTLE_ENDIAN__ avalue[i] = (char *) pst + 6; pst++; break; #endif case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: #ifndef __LITTLE_ENDIAN__ avalue[i] = (char *) pst + 4; pst++; break; #endif case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_POINTER: avalue[i] = pst; pst++; break; case FFI_TYPE_STRUCT: if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) { align = arg_types[i]->alignment; if (align > 16) align = 16; if (align > 1) pst = (unsigned long *) ALIGN ((size_t) pst, align); } elt = 0; #if _CALL_ELF == 2 elt = discover_homogeneous_aggregate (arg_types[i], &elnum); #endif if (elt) { union { void *v; unsigned long *ul; float *f; double *d; size_t p; } to, from; /* Repackage the aggregate from its parts. The aggregate size is not greater than the space taken by the registers so store back to the register/parameter save arrays. */ if (pfr + elnum <= end_pfr) to.v = pfr; else to.v = pst; avalue[i] = to.v; from.ul = pst; if (elt == FFI_TYPE_FLOAT) { do { if (pfr < end_pfr && i < nfixedargs) { *to.f = (float) pfr->d; pfr++; } else *to.f = *from.f; to.f++; from.f++; } while (--elnum != 0); } else { do { if (pfr < end_pfr && i < nfixedargs) { *to.d = pfr->d; pfr++; } else *to.d = *from.d; to.d++; from.d++; } while (--elnum != 0); } } else { #ifndef __LITTLE_ENDIAN__ /* Structures with size less than eight bytes are passed left-padded. */ if (arg_types[i]->size < 8) avalue[i] = (char *) pst + 8 - arg_types[i]->size; else #endif avalue[i] = pst; } pst += (arg_types[i]->size + 7) / 8; break; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) { if (pfr + 1 < end_pfr && i + 1 < nfixedargs) { avalue[i] = pfr; pfr += 2; } else { if (pfr < end_pfr && i < nfixedargs) { /* Passed partly in f13 and partly on the stack. Move it all to the stack. */ *pst = *(unsigned long *) pfr; pfr++; } avalue[i] = pst; } pst += 2; break; } /* Fall through. */ #endif case FFI_TYPE_DOUBLE: /* On the outgoing stack all values are aligned to 8 */ /* there are 13 64bit floating point registers */ if (pfr < end_pfr && i < nfixedargs) { avalue[i] = pfr; pfr++; } else avalue[i] = pst; pst++; break; case FFI_TYPE_FLOAT: if (pfr < end_pfr && i < nfixedargs) { /* Float values are stored as doubles in the ffi_closure_LINUX64 code. Fix them here. */ pfr->f = (float) pfr->d; avalue[i] = pfr; pfr++; } else avalue[i] = pst; pst++; break; default: FFI_ASSERT (0); } i++; } (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_LINUX64 how to perform return type promotions. */ if ((cif->flags & FLAG_RETURNS_SMST) != 0) { if ((cif->flags & FLAG_RETURNS_FP) == 0) return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1; else if ((cif->flags & FLAG_RETURNS_64BITS) != 0) return FFI_V2_TYPE_DOUBLE_HOMOG; else return FFI_V2_TYPE_FLOAT_HOMOG; } return cif->rtype->type; } #endif polyml-5.7.1/libffi/src/powerpc/ffitarget.h0000644000175000017500000001265313204034553017633 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for PowerPC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- System specific configurations ----------------------------------- */ #if defined (POWERPC) && defined (__powerpc64__) /* linux64 */ #ifndef POWERPC64 #define POWERPC64 #endif #elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */ #ifndef POWERPC64 #define POWERPC64 #endif #ifndef POWERPC_DARWIN64 #define POWERPC_DARWIN64 #endif #elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */ #ifndef POWERPC64 #define POWERPC64 #endif #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, #if defined (POWERPC_AIX) FFI_AIX, FFI_DARWIN, FFI_DEFAULT_ABI = FFI_AIX, FFI_LAST_ABI #elif defined (POWERPC_DARWIN) FFI_AIX, FFI_DARWIN, FFI_DEFAULT_ABI = FFI_DARWIN, FFI_LAST_ABI #else /* The FFI_COMPAT values are used by old code. Since libffi may be a shared library we have to support old values for backwards compatibility. */ FFI_COMPAT_SYSV, FFI_COMPAT_GCC_SYSV, FFI_COMPAT_LINUX64, FFI_COMPAT_LINUX, FFI_COMPAT_LINUX_SOFT_FLOAT, # if defined (POWERPC64) /* This bit, always set in new code, must not be set in any of the old FFI_COMPAT values that might be used for 64-bit linux. We only need worry about FFI_COMPAT_LINUX64, but to be safe avoid all old values. */ FFI_LINUX = 8, /* This and following bits can reuse FFI_COMPAT values. */ FFI_LINUX_STRUCT_ALIGN = 1, FFI_LINUX_LONG_DOUBLE_128 = 2, FFI_DEFAULT_ABI = (FFI_LINUX # ifdef __STRUCT_PARM_ALIGN__ | FFI_LINUX_STRUCT_ALIGN # endif # ifdef __LONG_DOUBLE_128__ | FFI_LINUX_LONG_DOUBLE_128 # endif ), FFI_LAST_ABI = 12 # else /* This bit, always set in new code, must not be set in any of the old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */ FFI_SYSV = 8, /* This and following bits can reuse FFI_COMPAT values. */ FFI_SYSV_SOFT_FLOAT = 1, FFI_SYSV_STRUCT_RET = 2, FFI_SYSV_IBM_LONG_DOUBLE = 4, FFI_SYSV_LONG_DOUBLE_128 = 16, FFI_DEFAULT_ABI = (FFI_SYSV # ifdef __NO_FPRS__ | FFI_SYSV_SOFT_FLOAT # endif # if (defined (__SVR4_STRUCT_RETURN) \ || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN)) | FFI_SYSV_STRUCT_RET # endif # if __LDBL_MANT_DIG__ == 106 | FFI_SYSV_IBM_LONG_DOUBLE # endif # ifdef __LONG_DOUBLE_128__ | FFI_SYSV_LONG_DOUBLE_128 # endif ), FFI_LAST_ABI = 32 # endif #endif } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #if defined (POWERPC) || defined (POWERPC_FREEBSD) # define FFI_TARGET_SPECIFIC_VARIADIC 1 # define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs #endif /* For additional types like the below, take care about the order in ppc_closures.S. They must follow after the FFI_TYPE_LAST. */ /* Needed for soft-float long-double-128 support. */ #define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1) /* Needed for FFI_SYSV small structure returns. */ #define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2) /* Used by ELFv2 for homogenous structure returns. */ #define FFI_V2_TYPE_FLOAT_HOMOG (FFI_TYPE_LAST + 1) #define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_TYPE_LAST + 2) #define FFI_V2_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 3) #if _CALL_ELF == 2 # define FFI_TRAMPOLINE_SIZE 32 #else # if defined(POWERPC64) || defined(POWERPC_AIX) # if defined(POWERPC_DARWIN64) # define FFI_TRAMPOLINE_SIZE 48 # else # define FFI_TRAMPOLINE_SIZE 24 # endif # else /* POWERPC || POWERPC_AIX */ # define FFI_TRAMPOLINE_SIZE 40 # endif #endif #ifndef LIBFFI_ASM #if defined(POWERPC_DARWIN) || defined(POWERPC_AIX) struct ffi_aix_trampoline_struct { void * code_pointer; /* Pointer to ffi_closure_ASM */ void * toc; /* TOC */ void * static_chain; /* Pointer to closure */ }; #endif #endif #endif polyml-5.7.1/libffi/src/powerpc/ffi.c0000644000175000017500000001063113204034553016411 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (C) 2013 IBM Copyright (C) 2011 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc Copyright (c) 1998 Geoffrey Keating PowerPC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include "ffi.h" #include "ffi_common.h" #include "ffi_powerpc.h" #if HAVE_LONG_DOUBLE_VARIANT /* Adjust ffi_type_longdouble. */ void FFI_HIDDEN ffi_prep_types (ffi_abi abi) { # if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE # ifdef POWERPC64 ffi_prep_types_linux64 (abi); # else ffi_prep_types_sysv (abi); # endif # endif } #endif /* Perform machine dependent cif processing */ ffi_status FFI_HIDDEN ffi_prep_cif_machdep (ffi_cif *cif) { #ifdef POWERPC64 return ffi_prep_cif_linux64 (cif); #else return ffi_prep_cif_sysv (cif); #endif } ffi_status FFI_HIDDEN ffi_prep_cif_machdep_var (ffi_cif *cif, unsigned int nfixedargs MAYBE_UNUSED, unsigned int ntotalargs MAYBE_UNUSED) { #ifdef POWERPC64 return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs); #else return ffi_prep_cif_sysv (cif); #endif } void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { /* The final SYSV ABI says that structures smaller or equal 8 bytes are returned in r3/r4. A draft ABI used by linux instead returns them in memory. We bounce-buffer SYSV small struct return values so that sysv.S can write r3 and r4 to memory without worrying about struct size. For ELFv2 ABI, use a bounce buffer for homogeneous structs too, for similar reasons. */ unsigned long smst_buffer[8]; extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; ecif.rvalue = rvalue; if ((cif->flags & FLAG_RETURNS_SMST) != 0) ecif.rvalue = smst_buffer; /* Ensure that we have a valid struct return value. FIXME: Isn't this just papering over a user problem? */ else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT) ecif.rvalue = alloca (cif->rtype->size); #ifdef POWERPC64 ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn); #else ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); #endif /* Check for a bounce-buffered return value */ if (rvalue && ecif.rvalue == smst_buffer) { unsigned int rsize = cif->rtype->size; #ifndef __LITTLE_ENDIAN__ /* The SYSV ABI returns a structure of up to 4 bytes in size left-padded in r3. */ # ifndef POWERPC64 if (rsize <= 4) memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize); else # endif /* The SYSV ABI returns a structure of up to 8 bytes in size left-padded in r3/r4, and the ELFv2 ABI similarly returns a structure of up to 8 bytes in size left-padded in r3. */ if (rsize <= 8) memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize); else #endif memcpy (rvalue, smst_buffer, rsize); } } ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun) (ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { #ifdef POWERPC64 return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc); #else return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc); #endif } polyml-5.7.1/libffi/src/powerpc/aix_closure.S0000644000175000017500000002164013204034553020144 0ustar daviddavid/* ----------------------------------------------------------------------- aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc. based on darwin_closure.S PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ .set r0,0 .set r1,1 .set r2,2 .set r3,3 .set r4,4 .set r5,5 .set r6,6 .set r7,7 .set r8,8 .set r9,9 .set r10,10 .set r11,11 .set r12,12 .set r13,13 .set r14,14 .set r15,15 .set r16,16 .set r17,17 .set r18,18 .set r19,19 .set r20,20 .set r21,21 .set r22,22 .set r23,23 .set r24,24 .set r25,25 .set r26,26 .set r27,27 .set r28,28 .set r29,29 .set r30,30 .set r31,31 .set f0,0 .set f1,1 .set f2,2 .set f3,3 .set f4,4 .set f5,5 .set f6,6 .set f7,7 .set f8,8 .set f9,9 .set f10,10 .set f11,11 .set f12,12 .set f13,13 .set f14,14 .set f15,15 .set f16,16 .set f17,17 .set f18,18 .set f19,19 .set f20,20 .set f21,21 .extern .ffi_closure_helper_DARWIN #define LIBFFI_ASM #define JUMPTARGET(name) name #define L(x) x .file "aix_closure.S" .toc LC..60: .tc L..60[TC],L..60 .csect .text[PR] .align 2 .csect .text[PR] .align 2 .globl ffi_closure_ASM .globl .ffi_closure_ASM .csect ffi_closure_ASM[DS] ffi_closure_ASM: #ifdef __64BIT__ .llong .ffi_closure_ASM, TOC[tc0], 0 .csect .text[PR] .ffi_closure_ASM: /* we want to build up an area for the parameters passed */ /* in registers (both floating point and integer) */ /* we store gpr 3 to gpr 10 (aligned to 4) in the parents outgoing area */ std r3, 48+(0*8)(r1) std r4, 48+(1*8)(r1) std r5, 48+(2*8)(r1) std r6, 48+(3*8)(r1) mflr r0 std r7, 48+(4*8)(r1) std r8, 48+(5*8)(r1) std r9, 48+(6*8)(r1) std r10, 48+(7*8)(r1) std r0, 16(r1) /* save the return address */ /* 48 Bytes (Linkage Area) */ /* 64 Bytes (params) */ /* 16 Bytes (result) */ /* 104 Bytes (13*8 from FPR) */ /* 8 Bytes (alignment) */ /* 240 Bytes */ stdu r1, -240(r1) /* skip over caller save area keep stack aligned to 16 */ /* next save fpr 1 to fpr 13 (aligned to 8) */ stfd f1, 128+(0*8)(r1) stfd f2, 128+(1*8)(r1) stfd f3, 128+(2*8)(r1) stfd f4, 128+(3*8)(r1) stfd f5, 128+(4*8)(r1) stfd f6, 128+(5*8)(r1) stfd f7, 128+(6*8)(r1) stfd f8, 128+(7*8)(r1) stfd f9, 128+(8*8)(r1) stfd f10, 128+(9*8)(r1) stfd f11, 128+(10*8)(r1) stfd f12, 128+(11*8)(r1) stfd f13, 128+(12*8)(r1) /* set up registers for the routine that actually does the work */ /* get the context pointer from the trampoline */ mr r3, r11 /* now load up the pointer to the result storage */ addi r4, r1, 112 /* now load up the pointer to the saved gpr registers */ addi r5, r1, 288 /* now load up the pointer to the saved fpr registers */ addi r6, r1, 128 /* make the call */ bl .ffi_closure_helper_DARWIN nop /* now r3 contains the return type */ /* so use it to look up in a table */ /* so we know how to deal with each type */ /* look up the proper starting point in table */ /* by using return type as offset */ lhz r3, 10(r3) /* load type from return type */ ld r4, LC..60(2) /* get address of jump table */ sldi r3, r3, 4 /* now multiply return type by 16 */ ld r0, 240+16(r1) /* load return address */ add r3, r3, r4 /* add contents of table to table address */ mtctr r3 bctr /* jump to it */ /* Each fragment must be exactly 16 bytes long (4 instructions). Align to 16 byte boundary for cache and dispatch efficiency. */ .align 4 L..60: /* case FFI_TYPE_VOID */ mtlr r0 addi r1, r1, 240 blr nop /* case FFI_TYPE_INT */ lwa r3, 112+4(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_FLOAT */ lfs f1, 112+0(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_DOUBLE */ lfd f1, 112+0(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_LONGDOUBLE */ lfd f1, 112+0(r1) mtlr r0 lfd f2, 112+8(r1) b L..finish /* case FFI_TYPE_UINT8 */ lbz r3, 112+7(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_SINT8 */ lbz r3, 112+7(r1) mtlr r0 extsb r3, r3 b L..finish /* case FFI_TYPE_UINT16 */ lhz r3, 112+6(r1) mtlr r0 L..finish: addi r1, r1, 240 blr /* case FFI_TYPE_SINT16 */ lha r3, 112+6(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_UINT32 */ lwz r3, 112+4(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_SINT32 */ lwa r3, 112+4(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_UINT64 */ ld r3, 112+0(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_SINT64 */ ld r3, 112+0(r1) mtlr r0 addi r1, r1, 240 blr /* case FFI_TYPE_STRUCT */ mtlr r0 addi r1, r1, 240 blr nop /* case FFI_TYPE_POINTER */ ld r3, 112+0(r1) mtlr r0 addi r1, r1, 240 blr #else /* ! __64BIT__ */ .long .ffi_closure_ASM, TOC[tc0], 0 .csect .text[PR] .ffi_closure_ASM: /* we want to build up an area for the parameters passed */ /* in registers (both floating point and integer) */ /* we store gpr 3 to gpr 10 (aligned to 4) in the parents outgoing area */ stw r3, 24+(0*4)(r1) stw r4, 24+(1*4)(r1) stw r5, 24+(2*4)(r1) stw r6, 24+(3*4)(r1) mflr r0 stw r7, 24+(4*4)(r1) stw r8, 24+(5*4)(r1) stw r9, 24+(6*4)(r1) stw r10, 24+(7*4)(r1) stw r0, 8(r1) /* 24 Bytes (Linkage Area) */ /* 32 Bytes (params) */ /* 16 Bytes (result) */ /* 104 Bytes (13*8 from FPR) */ /* 176 Bytes */ stwu r1, -176(r1) /* skip over caller save area keep stack aligned to 16 */ /* next save fpr 1 to fpr 13 (aligned to 8) */ stfd f1, 72+(0*8)(r1) stfd f2, 72+(1*8)(r1) stfd f3, 72+(2*8)(r1) stfd f4, 72+(3*8)(r1) stfd f5, 72+(4*8)(r1) stfd f6, 72+(5*8)(r1) stfd f7, 72+(6*8)(r1) stfd f8, 72+(7*8)(r1) stfd f9, 72+(8*8)(r1) stfd f10, 72+(9*8)(r1) stfd f11, 72+(10*8)(r1) stfd f12, 72+(11*8)(r1) stfd f13, 72+(12*8)(r1) /* set up registers for the routine that actually does the work */ /* get the context pointer from the trampoline */ mr r3, r11 /* now load up the pointer to the result storage */ addi r4, r1, 56 /* now load up the pointer to the saved gpr registers */ addi r5, r1, 200 /* now load up the pointer to the saved fpr registers */ addi r6, r1, 72 /* make the call */ bl .ffi_closure_helper_DARWIN nop /* now r3 contains the return type */ /* so use it to look up in a table */ /* so we know how to deal with each type */ /* look up the proper starting point in table */ /* by using return type as offset */ lhz r3, 6(r3) /* load type from return type */ lwz r4, LC..60(2) /* get address of jump table */ slwi r3, r3, 4 /* now multiply return type by 16 */ lwz r0, 176+8(r1) /* load return address */ add r3, r3, r4 /* add contents of table to table address */ mtctr r3 bctr /* jump to it */ /* Each fragment must be exactly 16 bytes long (4 instructions). Align to 16 byte boundary for cache and dispatch efficiency. */ .align 4 L..60: /* case FFI_TYPE_VOID */ mtlr r0 addi r1, r1, 176 blr nop /* case FFI_TYPE_INT */ lwz r3, 56+0(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_FLOAT */ lfs f1, 56+0(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_DOUBLE */ lfd f1, 56+0(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_LONGDOUBLE */ lfd f1, 56+0(r1) mtlr r0 lfd f2, 56+8(r1) b L..finish /* case FFI_TYPE_UINT8 */ lbz r3, 56+3(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_SINT8 */ lbz r3, 56+3(r1) mtlr r0 extsb r3, r3 b L..finish /* case FFI_TYPE_UINT16 */ lhz r3, 56+2(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_SINT16 */ lha r3, 56+2(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_UINT32 */ lwz r3, 56+0(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_SINT32 */ lwz r3, 56+0(r1) mtlr r0 addi r1, r1, 176 blr /* case FFI_TYPE_UINT64 */ lwz r3, 56+0(r1) mtlr r0 lwz r4, 56+4(r1) b L..finish /* case FFI_TYPE_SINT64 */ lwz r3, 56+0(r1) mtlr r0 lwz r4, 56+4(r1) b L..finish /* case FFI_TYPE_STRUCT */ mtlr r0 addi r1, r1, 176 blr nop /* case FFI_TYPE_POINTER */ lwz r3, 56+0(r1) mtlr r0 L..finish: addi r1, r1, 176 blr #endif /* END(ffi_closure_ASM) */ polyml-5.7.1/libffi/src/powerpc/sysv.S0000644000175000017500000001406013204034553016631 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 1998 Geoffrey Keating Copyright (C) 2007 Free Software Foundation, Inc PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #include #ifndef POWERPC64 .globl ffi_prep_args_SYSV ENTRY(ffi_call_SYSV) .LFB1: /* Save the old stack pointer as AP. */ mr %r8,%r1 .LCFI0: /* Allocate the stack space we need. */ stwux %r1,%r1,%r4 /* Save registers we use. */ mflr %r9 stw %r28,-16(%r8) .LCFI1: stw %r29,-12(%r8) .LCFI2: stw %r30, -8(%r8) .LCFI3: stw %r31, -4(%r8) .LCFI4: stw %r9, 4(%r8) .LCFI5: /* Save arguments over call... */ mr %r31,%r5 /* flags, */ mr %r30,%r6 /* rvalue, */ mr %r29,%r7 /* function address, */ mr %r28,%r8 /* our AP. */ .LCFI6: /* Call ffi_prep_args_SYSV. */ mr %r4,%r1 bl ffi_prep_args_SYSV@local /* Now do the call. */ /* Set up cr1 with bits 4-7 of the flags. */ mtcrf 0x40,%r31 /* Get the address to call into CTR. */ mtctr %r29 /* Load all those argument registers. */ lwz %r3,-16-(8*4)(%r28) lwz %r4,-16-(7*4)(%r28) lwz %r5,-16-(6*4)(%r28) lwz %r6,-16-(5*4)(%r28) bf- 5,1f nop lwz %r7,-16-(4*4)(%r28) lwz %r8,-16-(3*4)(%r28) lwz %r9,-16-(2*4)(%r28) lwz %r10,-16-(1*4)(%r28) nop 1: #ifndef __NO_FPRS__ /* Load all the FP registers. */ bf- 6,2f lfd %f1,-16-(8*4)-(8*8)(%r28) lfd %f2,-16-(8*4)-(7*8)(%r28) lfd %f3,-16-(8*4)-(6*8)(%r28) lfd %f4,-16-(8*4)-(5*8)(%r28) nop lfd %f5,-16-(8*4)-(4*8)(%r28) lfd %f6,-16-(8*4)-(3*8)(%r28) lfd %f7,-16-(8*4)-(2*8)(%r28) lfd %f8,-16-(8*4)-(1*8)(%r28) #endif 2: /* Make the call. */ bctrl /* Now, deal with the return value. */ mtcrf 0x01,%r31 /* cr7 */ bt- 31,L(small_struct_return_value) bt- 30,L(done_return_value) #ifndef __NO_FPRS__ bt- 29,L(fp_return_value) #endif stw %r3,0(%r30) bf+ 28,L(done_return_value) stw %r4,4(%r30) mtcrf 0x02,%r31 /* cr6 */ bf 27,L(done_return_value) stw %r5,8(%r30) stw %r6,12(%r30) /* Fall through... */ L(done_return_value): /* Restore the registers we used and return. */ lwz %r9, 4(%r28) lwz %r31, -4(%r28) mtlr %r9 lwz %r30, -8(%r28) lwz %r29,-12(%r28) lwz %r28,-16(%r28) lwz %r1,0(%r1) blr #ifndef __NO_FPRS__ L(fp_return_value): bf 28,L(float_return_value) stfd %f1,0(%r30) mtcrf 0x02,%r31 /* cr6 */ bf 27,L(done_return_value) stfd %f2,8(%r30) b L(done_return_value) L(float_return_value): stfs %f1,0(%r30) b L(done_return_value) #endif L(small_struct_return_value): /* * The C code always allocates a properly-aligned 8-byte bounce * buffer to make this assembly code very simple. Just write out * r3 and r4 to the buffer to allow the C code to handle the rest. */ stw %r3, 0(%r30) stw %r4, 4(%r30) b L(done_return_value) .LFE1: END(ffi_call_SYSV) .section ".eh_frame",EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ .LSCIE1: .4byte 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #if defined _RELOCATABLE || defined __PIC__ .ascii "zR\0" /* CIE Augmentation */ #else .ascii "\0" /* CIE Augmentation */ #endif .uleb128 0x1 /* CIE Code Alignment Factor */ .sleb128 -4 /* CIE Data Alignment Factor */ .byte 0x41 /* CIE RA Column */ #if defined _RELOCATABLE || defined __PIC__ .uleb128 0x1 /* Augmentation size */ .byte 0x1b /* FDE Encoding (pcrel sdata4) */ #endif .byte 0xc /* DW_CFA_def_cfa */ .uleb128 0x1 .uleb128 0x0 .align 2 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .4byte .LASFDE1-.Lframe1 /* FDE CIE offset */ #if defined _RELOCATABLE || defined __PIC__ .4byte .LFB1-. /* FDE initial location */ #else .4byte .LFB1 /* FDE initial location */ #endif .4byte .LFE1-.LFB1 /* FDE address range */ #if defined _RELOCATABLE || defined __PIC__ .uleb128 0x0 /* Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI0-.LFB1 .byte 0xd /* DW_CFA_def_cfa_register */ .uleb128 0x08 .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI5-.LCFI0 .byte 0x11 /* DW_CFA_offset_extended_sf */ .uleb128 0x41 .sleb128 -1 .byte 0x9f /* DW_CFA_offset, column 0x1f */ .uleb128 0x1 .byte 0x9e /* DW_CFA_offset, column 0x1e */ .uleb128 0x2 .byte 0x9d /* DW_CFA_offset, column 0x1d */ .uleb128 0x3 .byte 0x9c /* DW_CFA_offset, column 0x1c */ .uleb128 0x4 .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFI6-.LCFI5 .byte 0xd /* DW_CFA_def_cfa_register */ .uleb128 0x1c .align 2 .LEFDE1: #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif #endif polyml-5.7.1/libffi/src/powerpc/ffi_sysv.c0000644000175000017500000006120213204034553017475 0ustar daviddavid/* ----------------------------------------------------------------------- ffi_sysv.c - Copyright (C) 2013 IBM Copyright (C) 2011 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc Copyright (c) 1998 Geoffrey Keating PowerPC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include "ffi.h" #ifndef POWERPC64 #include "ffi_common.h" #include "ffi_powerpc.h" /* About the SYSV ABI. */ #define ASM_NEEDS_REGISTERS 4 #define NUM_GPR_ARG_REGISTERS 8 #define NUM_FPR_ARG_REGISTERS 8 #if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE /* Adjust size of ffi_type_longdouble. */ void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi abi) { if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV) { ffi_type_longdouble.size = 8; ffi_type_longdouble.alignment = 8; } else { ffi_type_longdouble.size = 16; ffi_type_longdouble.alignment = 16; } } #endif /* Transform long double, double and float to other types as per abi. */ static int translate_float (int abi, int type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE if (type == FFI_TYPE_LONGDOUBLE && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0) type = FFI_TYPE_DOUBLE; #endif if ((abi & FFI_SYSV_SOFT_FLOAT) != 0) { if (type == FFI_TYPE_FLOAT) type = FFI_TYPE_UINT32; else if (type == FFI_TYPE_DOUBLE) type = FFI_TYPE_UINT64; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE else if (type == FFI_TYPE_LONGDOUBLE) type = FFI_TYPE_UINT128; } else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0) { if (type == FFI_TYPE_LONGDOUBLE) type = FFI_TYPE_STRUCT; #endif } return type; } /* Perform machine dependent cif processing */ static ffi_status ffi_prep_cif_sysv_core (ffi_cif *cif) { ffi_type **ptr; unsigned bytes; unsigned i, fparg_count = 0, intarg_count = 0; unsigned flags = cif->flags; unsigned struct_copy_size = 0; unsigned type = cif->rtype->type; unsigned size = cif->rtype->size; /* The machine-independent calculation of cif->bytes doesn't work for us. Redo the calculation. */ /* Space for the frame pointer, callee's LR, and the asm's temp regs. */ bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int); /* Space for the GPR registers. */ bytes += NUM_GPR_ARG_REGISTERS * sizeof (int); /* Return value handling. The rules for SYSV are as follows: - 32-bit (or less) integer values are returned in gpr3; - Structures of size <= 4 bytes also returned in gpr3; - 64-bit integer values and structures between 5 and 8 bytes are returned in gpr3 and gpr4; - Larger structures are allocated space and a pointer is passed as the first argument. - Single/double FP values are returned in fpr1; - long doubles (if not equivalent to double) are returned in fpr1,fpr2 for Linux and as for large structs for SysV. */ type = translate_float (cif->abi, type); switch (type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: flags |= FLAG_RETURNS_128BITS; /* Fall through. */ #endif case FFI_TYPE_DOUBLE: flags |= FLAG_RETURNS_64BITS; /* Fall through. */ case FFI_TYPE_FLOAT: flags |= FLAG_RETURNS_FP; #ifdef __NO_FPRS__ return FFI_BAD_ABI; #endif break; case FFI_TYPE_UINT128: flags |= FLAG_RETURNS_128BITS; /* Fall through. */ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: flags |= FLAG_RETURNS_64BITS; break; case FFI_TYPE_STRUCT: /* The final SYSV ABI says that structures smaller or equal 8 bytes are returned in r3/r4. A draft ABI used by linux instead returns them in memory. */ if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) { flags |= FLAG_RETURNS_SMST; break; } intarg_count++; flags |= FLAG_RETVAL_REFERENCE; /* Fall through. */ case FFI_TYPE_VOID: flags |= FLAG_RETURNS_NOTHING; break; default: /* Returns 32-bit integer, or similar. Nothing to do here. */ break; } /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest goes on the stack. Structures and long doubles (if not equivalent to double) are passed as a pointer to a copy of the structure. Stuff on the stack needs to keep proper alignment. */ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { unsigned short typenum = (*ptr)->type; typenum = translate_float (cif->abi, typenum); switch (typenum) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: fparg_count++; /* Fall thru */ #endif case FFI_TYPE_DOUBLE: fparg_count++; /* If this FP arg is going on the stack, it must be 8-byte-aligned. */ if (fparg_count > NUM_FPR_ARG_REGISTERS && intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count % 2 != 0) intarg_count++; #ifdef __NO_FPRS__ return FFI_BAD_ABI; #endif break; case FFI_TYPE_FLOAT: fparg_count++; #ifdef __NO_FPRS__ return FFI_BAD_ABI; #endif break; case FFI_TYPE_UINT128: /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set of four consecutive gprs. If we do not have enough, we have to adjust the intarg_count value. */ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3 && intarg_count < NUM_GPR_ARG_REGISTERS) intarg_count = NUM_GPR_ARG_REGISTERS; intarg_count += 4; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: /* 'long long' arguments are passed as two words, but either both words must fit in registers or both go on the stack. If they go on the stack, they must be 8-byte-aligned. Also, only certain register pairs can be used for passing long long int -- specifically (r3,r4), (r5,r6), (r7,r8), (r9,r10). */ if (intarg_count == NUM_GPR_ARG_REGISTERS-1 || intarg_count % 2 != 0) intarg_count++; intarg_count += 2; break; case FFI_TYPE_STRUCT: /* We must allocate space for a copy of these to enforce pass-by-value. Pad the space up to a multiple of 16 bytes (the maximum alignment required for anything under the SYSV ABI). */ struct_copy_size += ((*ptr)->size + 15) & ~0xF; /* Fall through (allocate space for the pointer). */ case FFI_TYPE_POINTER: case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: /* Everything else is passed as a 4-byte word in a GPR, either the object itself or a pointer to it. */ intarg_count++; break; default: FFI_ASSERT (0); } } if (fparg_count != 0) flags |= FLAG_FP_ARGUMENTS; if (intarg_count > 4) flags |= FLAG_4_GPR_ARGUMENTS; if (struct_copy_size != 0) flags |= FLAG_ARG_NEEDS_COPY; /* Space for the FPR registers, if needed. */ if (fparg_count != 0) bytes += NUM_FPR_ARG_REGISTERS * sizeof (double); /* Stack space. */ if (intarg_count > NUM_GPR_ARG_REGISTERS) bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int); if (fparg_count > NUM_FPR_ARG_REGISTERS) bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double); /* The stack space allocated needs to be a multiple of 16 bytes. */ bytes = (bytes + 15) & ~0xF; /* Add in the space for the copied structures. */ bytes += struct_copy_size; cif->flags = flags; cif->bytes = bytes; return FFI_OK; } ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *cif) { if ((cif->abi & FFI_SYSV) == 0) { /* This call is from old code. Translate to new ABI values. */ cif->flags |= FLAG_COMPAT; switch (cif->abi) { default: return FFI_BAD_ABI; case FFI_COMPAT_SYSV: cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128; break; case FFI_COMPAT_GCC_SYSV: cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128; break; case FFI_COMPAT_LINUX: cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE | FFI_SYSV_LONG_DOUBLE_128); break; case FFI_COMPAT_LINUX_SOFT_FLOAT: cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE | FFI_SYSV_LONG_DOUBLE_128); break; } } return ffi_prep_cif_sysv_core (cif); } /* ffi_prep_args_SYSV is called by the assembly routine once stack space has been allocated for the function's arguments. The stack layout we want looks like this: | Return address from ffi_call_SYSV 4bytes | higher addresses |--------------------------------------------| | Previous backchain pointer 4 | stack pointer here |--------------------------------------------|<+ <<< on entry to | Saved r28-r31 4*4 | | ffi_call_SYSV |--------------------------------------------| | | GPR registers r3-r10 8*4 | | ffi_call_SYSV |--------------------------------------------| | | FPR registers f1-f8 (optional) 8*8 | | |--------------------------------------------| | stack | | Space for copied structures | | grows | |--------------------------------------------| | down V | Parameters that didn't fit in registers | | |--------------------------------------------| | lower addresses | Space for callee's LR 4 | | |--------------------------------------------| | stack pointer here | Current backchain pointer 4 |-/ during |--------------------------------------------| <<< ffi_call_SYSV */ void FFI_HIDDEN ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) { const unsigned bytes = ecif->cif->bytes; const unsigned flags = ecif->cif->flags; typedef union { char *c; unsigned *u; long long *ll; float *f; double *d; } valp; /* 'stacktop' points at the previous backchain pointer. */ valp stacktop; /* 'gpr_base' points at the space for gpr3, and grows upwards as we use GPR registers. */ valp gpr_base; int intarg_count; #ifndef __NO_FPRS__ /* 'fpr_base' points at the space for fpr1, and grows upwards as we use FPR registers. */ valp fpr_base; int fparg_count; #endif /* 'copy_space' grows down as we put structures in it. It should stay 16-byte aligned. */ valp copy_space; /* 'next_arg' grows up as we put parameters in it. */ valp next_arg; int i; ffi_type **ptr; #ifndef __NO_FPRS__ double double_tmp; #endif union { void **v; char **c; signed char **sc; unsigned char **uc; signed short **ss; unsigned short **us; unsigned int **ui; long long **ll; float **f; double **d; } p_argv; size_t struct_copy_size; unsigned gprvalue; stacktop.c = (char *) stack + bytes; gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS; intarg_count = 0; #ifndef __NO_FPRS__ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS; fparg_count = 0; copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c); #else copy_space.c = gpr_base.c; #endif next_arg.u = stack + 2; /* Check that everything starts aligned properly. */ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0); FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); FFI_ASSERT ((bytes & 0xF) == 0); FFI_ASSERT (copy_space.c >= next_arg.c); /* Deal with return values that are actually pass-by-reference. */ if (flags & FLAG_RETVAL_REFERENCE) { *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue; intarg_count++; } /* Now for the arguments. */ p_argv.v = ecif->avalue; for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; i > 0; i--, ptr++, p_argv.v++) { unsigned int typenum = (*ptr)->type; typenum = translate_float (ecif->cif->abi, typenum); /* Now test the translated value */ switch (typenum) { #ifndef __NO_FPRS__ # if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: double_tmp = (*p_argv.d)[0]; if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1) { if (intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count % 2 != 0) { intarg_count++; next_arg.u++; } *next_arg.d = double_tmp; next_arg.u += 2; double_tmp = (*p_argv.d)[1]; *next_arg.d = double_tmp; next_arg.u += 2; } else { *fpr_base.d++ = double_tmp; double_tmp = (*p_argv.d)[1]; *fpr_base.d++ = double_tmp; } fparg_count += 2; FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; # endif case FFI_TYPE_DOUBLE: double_tmp = **p_argv.d; if (fparg_count >= NUM_FPR_ARG_REGISTERS) { if (intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count % 2 != 0) { intarg_count++; next_arg.u++; } *next_arg.d = double_tmp; next_arg.u += 2; } else *fpr_base.d++ = double_tmp; fparg_count++; FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; case FFI_TYPE_FLOAT: double_tmp = **p_argv.f; if (fparg_count >= NUM_FPR_ARG_REGISTERS) { *next_arg.f = (float) double_tmp; next_arg.u += 1; intarg_count++; } else *fpr_base.d++ = double_tmp; fparg_count++; FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; #endif /* have FPRs */ case FFI_TYPE_UINT128: /* The soft float ABI for long doubles works like this, a long double is passed in four consecutive GPRs if available. A maximum of 2 long doubles can be passed in gprs. If we do not have 4 GPRs left, the long double is passed on the stack, 4-byte aligned. */ { unsigned int int_tmp; unsigned int ii; if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) { if (intarg_count < NUM_GPR_ARG_REGISTERS) intarg_count = NUM_GPR_ARG_REGISTERS; for (ii = 0; ii < 4; ii++) { int_tmp = (*p_argv.ui)[ii]; *next_arg.u++ = int_tmp; } } else { for (ii = 0; ii < 4; ii++) { int_tmp = (*p_argv.ui)[ii]; *gpr_base.u++ = int_tmp; } } intarg_count += 4; break; } case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: if (intarg_count == NUM_GPR_ARG_REGISTERS-1) intarg_count++; if (intarg_count >= NUM_GPR_ARG_REGISTERS) { if (intarg_count % 2 != 0) { intarg_count++; next_arg.u++; } *next_arg.ll = **p_argv.ll; next_arg.u += 2; } else { /* The abi states only certain register pairs can be used for passing long long int specifically (r3,r4), (r5,r6), (r7,r8), (r9,r10). If next arg is long long but not correct starting register of pair then skip until the proper starting register. */ if (intarg_count % 2 != 0) { intarg_count ++; gpr_base.u++; } *gpr_base.ll++ = **p_argv.ll; } intarg_count += 2; break; case FFI_TYPE_STRUCT: struct_copy_size = ((*ptr)->size + 15) & ~0xF; copy_space.c -= struct_copy_size; memcpy (copy_space.c, *p_argv.c, (*ptr)->size); gprvalue = (unsigned long) copy_space.c; FFI_ASSERT (copy_space.c > next_arg.c); FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY); goto putgpr; case FFI_TYPE_UINT8: gprvalue = **p_argv.uc; goto putgpr; case FFI_TYPE_SINT8: gprvalue = **p_argv.sc; goto putgpr; case FFI_TYPE_UINT16: gprvalue = **p_argv.us; goto putgpr; case FFI_TYPE_SINT16: gprvalue = **p_argv.ss; goto putgpr; case FFI_TYPE_INT: case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: gprvalue = **p_argv.ui; putgpr: if (intarg_count >= NUM_GPR_ARG_REGISTERS) *next_arg.u++ = gprvalue; else *gpr_base.u++ = gprvalue; intarg_count++; break; } } /* Check that we didn't overrun the stack... */ FFI_ASSERT (copy_space.c >= next_arg.c); FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS); /* The assert below is testing that the number of integer arguments agrees with the number found in ffi_prep_cif_machdep(). However, intarg_count is incremented whenever we place an FP arg on the stack, so account for that before our assert test. */ #ifndef __NO_FPRS__ if (fparg_count > NUM_FPR_ARG_REGISTERS) intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS; FFI_ASSERT (fpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); #endif FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); } #define MIN_CACHE_LINE_SIZE 8 static void flush_icache (char *wraddr, char *xaddr, int size) { int i; for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) : "memory"); } ffi_status FFI_HIDDEN ffi_prep_closure_loc_sysv (ffi_closure *closure, ffi_cif *cif, void (*fun) (ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) { unsigned int *tramp; if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI) return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; tramp[0] = 0x7c0802a6; /* mflr r0 */ tramp[1] = 0x4800000d; /* bl 10 */ tramp[4] = 0x7d6802a6; /* mflr r11 */ tramp[5] = 0x7c0803a6; /* mtlr r0 */ tramp[6] = 0x800b0000; /* lwz r0,0(r11) */ tramp[7] = 0x816b0004; /* lwz r11,4(r11) */ tramp[8] = 0x7c0903a6; /* mtctr r0 */ tramp[9] = 0x4e800420; /* bctr */ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */ *(void **) &tramp[3] = codeloc; /* context */ /* Flush the icache. */ flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } /* Basically the trampoline invokes ffi_closure_SYSV, and on entry, r11 holds the address of the closure. After storing the registers that could possibly contain parameters to be passed into the stack frame and setting up space for a return value, ffi_closure_SYSV invokes the following helper function to do most of the work. */ int ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, unsigned long *pgr, ffi_dblfl *pfr, unsigned long *pst) { /* rvalue is the pointer to space for return value in closure assembly */ /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */ /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */ /* pst is the pointer to outgoing parameter stack in original caller */ void ** avalue; ffi_type ** arg_types; long i, avn; #ifndef __NO_FPRS__ long nf = 0; /* number of floating registers already used */ #endif long ng = 0; /* number of general registers already used */ ffi_cif *cif = closure->cif; unsigned size = cif->rtype->size; unsigned short rtypenum = cif->rtype->type; avalue = alloca (cif->nargs * sizeof (void *)); /* First translate for softfloat/nonlinux */ rtypenum = translate_float (cif->abi, rtypenum); /* Copy the caller's structure return value address so that the closure returns the data directly to the caller. For FFI_SYSV the result is passed in r3/r4 if the struct size is less or equal 8 bytes. */ if (rtypenum == FFI_TYPE_STRUCT && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)) { rvalue = (void *) *pgr; ng++; pgr++; } i = 0; avn = cif->nargs; arg_types = cif->arg_types; /* Grab the addresses of the arguments from the stack frame. */ while (i < avn) { unsigned short typenum = arg_types[i]->type; /* We may need to handle some values depending on ABI. */ typenum = translate_float (cif->abi, typenum); switch (typenum) { #ifndef __NO_FPRS__ case FFI_TYPE_FLOAT: /* Unfortunately float values are stored as doubles in the ffi_closure_SYSV code (since we don't check the type in that routine). */ if (nf < NUM_FPR_ARG_REGISTERS) { /* FIXME? here we are really changing the values stored in the original calling routines outgoing parameter stack. This is probably a really naughty thing to do but... */ double temp = pfr->d; pfr->f = (float) temp; avalue[i] = pfr; nf++; pfr++; } else { avalue[i] = pst; pst += 1; } break; case FFI_TYPE_DOUBLE: if (nf < NUM_FPR_ARG_REGISTERS) { avalue[i] = pfr; nf++; pfr++; } else { if (((long) pst) & 4) pst++; avalue[i] = pst; pst += 2; } break; # if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: if (nf < NUM_FPR_ARG_REGISTERS - 1) { avalue[i] = pfr; pfr += 2; nf += 2; } else { if (((long) pst) & 4) pst++; avalue[i] = pst; pst += 4; nf = 8; } break; # endif #endif case FFI_TYPE_UINT128: /* Test if for the whole long double, 4 gprs are available. otherwise the stuff ends up on the stack. */ if (ng < NUM_GPR_ARG_REGISTERS - 3) { avalue[i] = pgr; pgr += 4; ng += 4; } else { avalue[i] = pst; pst += 4; ng = 8+4; } break; case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: #ifndef __LITTLE_ENDIAN__ if (ng < NUM_GPR_ARG_REGISTERS) { avalue[i] = (char *) pgr + 3; ng++; pgr++; } else { avalue[i] = (char *) pst + 3; pst++; } break; #endif case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: #ifndef __LITTLE_ENDIAN__ if (ng < NUM_GPR_ARG_REGISTERS) { avalue[i] = (char *) pgr + 2; ng++; pgr++; } else { avalue[i] = (char *) pst + 2; pst++; } break; #endif case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: if (ng < NUM_GPR_ARG_REGISTERS) { avalue[i] = pgr; ng++; pgr++; } else { avalue[i] = pst; pst++; } break; case FFI_TYPE_STRUCT: /* Structs are passed by reference. The address will appear in a gpr if it is one of the first 8 arguments. */ if (ng < NUM_GPR_ARG_REGISTERS) { avalue[i] = (void *) *pgr; ng++; pgr++; } else { avalue[i] = (void *) *pst; pst++; } break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: /* Passing long long ints are complex, they must be passed in suitable register pairs such as (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) and if the entire pair aren't available then the outgoing parameter stack is used for both but an alignment of 8 must will be kept. So we must either look in pgr or pst to find the correct address for this type of parameter. */ if (ng < NUM_GPR_ARG_REGISTERS - 1) { if (ng & 1) { /* skip r4, r6, r8 as starting points */ ng++; pgr++; } avalue[i] = pgr; ng += 2; pgr += 2; } else { if (((long) pst) & 4) pst++; avalue[i] = pst; pst += 2; ng = NUM_GPR_ARG_REGISTERS; } break; default: FFI_ASSERT (0); } i++; } (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_SYSV how to perform return type promotions. Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4 we have to tell ffi_closure_SYSV how to treat them. We combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of the struct less one. We never have a struct with size zero. See the comment in ffitarget.h about ordering. */ if (rtypenum == FFI_TYPE_STRUCT && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size; return rtypenum; } #endif polyml-5.7.1/libffi/src/powerpc/linux64.S0000644000175000017500000001443413204034553017143 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.h - Copyright (c) 2003 Jakub Jelinek Copyright (c) 2008 Red Hat, Inc. PowerPC64 Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef POWERPC64 .hidden ffi_call_LINUX64 .globl ffi_call_LINUX64 # if _CALL_ELF == 2 .text ffi_call_LINUX64: addis %r2, %r12, .TOC.-ffi_call_LINUX64@ha addi %r2, %r2, .TOC.-ffi_call_LINUX64@l .localentry ffi_call_LINUX64, . - ffi_call_LINUX64 # else .section ".opd","aw" .align 3 ffi_call_LINUX64: # ifdef _CALL_LINUX .quad .L.ffi_call_LINUX64,.TOC.@tocbase,0 .type ffi_call_LINUX64,@function .text .L.ffi_call_LINUX64: # else .hidden .ffi_call_LINUX64 .globl .ffi_call_LINUX64 .quad .ffi_call_LINUX64,.TOC.@tocbase,0 .size ffi_call_LINUX64,24 .type .ffi_call_LINUX64,@function .text .ffi_call_LINUX64: # endif # endif .LFB1: mflr %r0 std %r28, -32(%r1) std %r29, -24(%r1) std %r30, -16(%r1) std %r31, -8(%r1) std %r0, 16(%r1) mr %r28, %r1 /* our AP. */ .LCFI0: stdux %r1, %r1, %r4 mr %r31, %r5 /* flags, */ mr %r30, %r6 /* rvalue, */ mr %r29, %r7 /* function address. */ /* Save toc pointer, not for the ffi_prep_args64 call, but for the later bctrl function call. */ # if _CALL_ELF == 2 std %r2, 24(%r1) # else std %r2, 40(%r1) # endif /* Call ffi_prep_args64. */ mr %r4, %r1 # if defined _CALL_LINUX || _CALL_ELF == 2 bl ffi_prep_args64 # else bl .ffi_prep_args64 # endif # if _CALL_ELF == 2 mr %r12, %r29 # else ld %r12, 0(%r29) ld %r2, 8(%r29) ld %r11, 16(%r29) # endif /* Now do the call. */ /* Set up cr1 with bits 4-7 of the flags. */ mtcrf 0x40, %r31 /* Get the address to call into CTR. */ mtctr %r12 /* Load all those argument registers. */ ld %r3, -32-(8*8)(%r28) ld %r4, -32-(7*8)(%r28) ld %r5, -32-(6*8)(%r28) ld %r6, -32-(5*8)(%r28) bf- 5, 1f ld %r7, -32-(4*8)(%r28) ld %r8, -32-(3*8)(%r28) ld %r9, -32-(2*8)(%r28) ld %r10, -32-(1*8)(%r28) 1: /* Load all the FP registers. */ bf- 6, 2f lfd %f1, -32-(21*8)(%r28) lfd %f2, -32-(20*8)(%r28) lfd %f3, -32-(19*8)(%r28) lfd %f4, -32-(18*8)(%r28) lfd %f5, -32-(17*8)(%r28) lfd %f6, -32-(16*8)(%r28) lfd %f7, -32-(15*8)(%r28) lfd %f8, -32-(14*8)(%r28) lfd %f9, -32-(13*8)(%r28) lfd %f10, -32-(12*8)(%r28) lfd %f11, -32-(11*8)(%r28) lfd %f12, -32-(10*8)(%r28) lfd %f13, -32-(9*8)(%r28) 2: /* Make the call. */ bctrl /* This must follow the call immediately, the unwinder uses this to find out if r2 has been saved or not. */ # if _CALL_ELF == 2 ld %r2, 24(%r1) # else ld %r2, 40(%r1) # endif /* Now, deal with the return value. */ mtcrf 0x01, %r31 bt 31, .Lstruct_return_value bt 30, .Ldone_return_value bt 29, .Lfp_return_value std %r3, 0(%r30) /* Fall through... */ .Ldone_return_value: /* Restore the registers we used and return. */ mr %r1, %r28 ld %r0, 16(%r28) ld %r28, -32(%r28) mtlr %r0 ld %r29, -24(%r1) ld %r30, -16(%r1) ld %r31, -8(%r1) blr .Lfp_return_value: bf 28, .Lfloat_return_value stfd %f1, 0(%r30) mtcrf 0x02, %r31 /* cr6 */ bf 27, .Ldone_return_value stfd %f2, 8(%r30) b .Ldone_return_value .Lfloat_return_value: stfs %f1, 0(%r30) b .Ldone_return_value .Lstruct_return_value: bf 29, .Lsmall_struct bf 28, .Lfloat_homog_return_value stfd %f1, 0(%r30) stfd %f2, 8(%r30) stfd %f3, 16(%r30) stfd %f4, 24(%r30) stfd %f5, 32(%r30) stfd %f6, 40(%r30) stfd %f7, 48(%r30) stfd %f8, 56(%r30) b .Ldone_return_value .Lfloat_homog_return_value: stfs %f1, 0(%r30) stfs %f2, 4(%r30) stfs %f3, 8(%r30) stfs %f4, 12(%r30) stfs %f5, 16(%r30) stfs %f6, 20(%r30) stfs %f7, 24(%r30) stfs %f8, 28(%r30) b .Ldone_return_value .Lsmall_struct: std %r3, 0(%r30) std %r4, 8(%r30) b .Ldone_return_value .LFE1: .long 0 .byte 0,12,0,1,128,4,0,0 # if _CALL_ELF == 2 .size ffi_call_LINUX64,.-ffi_call_LINUX64 # else # ifdef _CALL_LINUX .size ffi_call_LINUX64,.-.L.ffi_call_LINUX64 # else .size .ffi_call_LINUX64,.-.ffi_call_LINUX64 # endif # endif .section .eh_frame,EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry .LSCIE1: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "zR\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -8 # CIE Data Alignment Factor .byte 0x41 # CIE RA Column .uleb128 0x1 # Augmentation size .byte 0x14 # FDE Encoding (pcrel udata8) .byte 0xc # DW_CFA_def_cfa .uleb128 0x1 .uleb128 0x0 .align 3 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 # FDE Length .LASFDE1: .4byte .LASFDE1-.Lframe1 # FDE CIE offset .8byte .LFB1-. # FDE initial location .8byte .LFE1-.LFB1 # FDE address range .uleb128 0x0 # Augmentation size .byte 0x2 # DW_CFA_advance_loc1 .byte .LCFI0-.LFB1 .byte 0xd # DW_CFA_def_cfa_register .uleb128 0x1c .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x41 .sleb128 -2 .byte 0x9f # DW_CFA_offset, column 0x1f .uleb128 0x1 .byte 0x9e # DW_CFA_offset, column 0x1e .uleb128 0x2 .byte 0x9d # DW_CFA_offset, column 0x1d .uleb128 0x3 .byte 0x9c # DW_CFA_offset, column 0x1c .uleb128 0x4 .align 3 .LEFDE1: #endif #if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 .section .note.GNU-stack,"",@progbits #endif polyml-5.7.1/libffi/src/powerpc/ffi_darwin.c0000644000175000017500000011101613204034553017754 0ustar daviddavid/* ----------------------------------------------------------------------- ffi_darwin.c Copyright (C) 1998 Geoffrey Keating Copyright (C) 2001 John Hornkvist Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. FFI support for Darwin and AIX. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include extern void ffi_closure_ASM (void); enum { /* The assembly depends on these exact flags. For Darwin64 (when FLAG_RETURNS_STRUCT is set): FLAG_RETURNS_FP indicates that the structure embeds FP data. FLAG_RETURNS_128BITS signals a special struct size that is not expanded for float content. */ FLAG_RETURNS_128BITS = 1 << (31-31), /* These go in cr7 */ FLAG_RETURNS_NOTHING = 1 << (31-30), FLAG_RETURNS_FP = 1 << (31-29), FLAG_RETURNS_64BITS = 1 << (31-28), FLAG_RETURNS_STRUCT = 1 << (31-27), /* This goes in cr6 */ FLAG_ARG_NEEDS_COPY = 1 << (31- 7), FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), FLAG_RETVAL_REFERENCE = 1 << (31- 4) }; /* About the DARWIN ABI. */ enum { NUM_GPR_ARG_REGISTERS = 8, NUM_FPR_ARG_REGISTERS = 13, LINKAGE_AREA_GPRS = 6 }; enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. m32/m64 The stack layout we want looks like this: | Return address from ffi_call_DARWIN | higher addresses |--------------------------------------------| | Previous backchain pointer 4/8 | stack pointer here |--------------------------------------------|<+ <<< on entry to | ASM_NEEDS_REGISTERS=r28-r31 4*(4/8) | | ffi_call_DARWIN |--------------------------------------------| | | When we have any FP activity... the | | | FPRs occupy NUM_FPR_ARG_REGISTERS slots | | | here fp13 .. fp1 from high to low addr. | | ~ ~ ~ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS |--------------------------------------------| | | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | |--------------------------------------------| | stack | | Reserved 2*4/8 | | grows | |--------------------------------------------| | down V | Space for callee's LR 4/8 | | |--------------------------------------------| | lower addresses | Saved CR [low word for m64] 4/8 | | |--------------------------------------------| | stack pointer here | Current backchain pointer 4/8 |-/ during |--------------------------------------------| <<< ffi_call_DARWIN */ #if defined(POWERPC_DARWIN64) static void darwin64_pass_struct_by_value (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **); #endif /* This depends on GPR_SIZE = sizeof (unsigned long) */ void ffi_prep_args (extended_cif *ecif, unsigned long *const stack) { const unsigned bytes = ecif->cif->bytes; const unsigned flags = ecif->cif->flags; const unsigned nargs = ecif->cif->nargs; #if !defined(POWERPC_DARWIN64) const ffi_abi abi = ecif->cif->abi; #endif /* 'stacktop' points at the previous backchain pointer. */ unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long)); /* 'fpr_base' points at the space for fpr1, and grows upwards as we use FPR registers. */ double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS; int gp_count = 0, fparg_count = 0; /* 'next_arg' grows up as we put parameters in it. */ unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions. */ int i; double double_tmp; void **p_argv = ecif->avalue; unsigned long gprvalue; ffi_type** ptr = ecif->cif->arg_types; #if !defined(POWERPC_DARWIN64) char *dest_cpy; #endif unsigned size_al = 0; /* Check that everything starts aligned properly. */ FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0); FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0); FFI_ASSERT((bytes & 0xF) == 0); /* Deal with return values that are actually pass-by-reference. Rule: Return values are referenced by r3, so r4 is the first parameter. */ if (flags & FLAG_RETVAL_REFERENCE) *next_arg++ = (unsigned long) (char *) ecif->rvalue; /* Now for the arguments. */ for (i = nargs; i > 0; i--, ptr++, p_argv++) { switch ((*ptr)->type) { /* If a floating-point parameter appears before all of the general- purpose registers are filled, the corresponding GPRs that match the size of the floating-point parameter are skipped. */ case FFI_TYPE_FLOAT: double_tmp = *(float *) *p_argv; if (fparg_count < NUM_FPR_ARG_REGISTERS) *fpr_base++ = double_tmp; #if defined(POWERPC_DARWIN) *(float *)next_arg = *(float *) *p_argv; #else *(double *)next_arg = double_tmp; #endif next_arg++; gp_count++; fparg_count++; FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); break; case FFI_TYPE_DOUBLE: double_tmp = *(double *) *p_argv; if (fparg_count < NUM_FPR_ARG_REGISTERS) *fpr_base++ = double_tmp; *(double *)next_arg = double_tmp; #ifdef POWERPC64 next_arg++; gp_count++; #else next_arg += 2; gp_count += 2; #endif fparg_count++; FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); break; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: # if defined(POWERPC64) && !defined(POWERPC_DARWIN64) /* ??? This will exceed the regs count when the value starts at fp13 and it will not put the extra bit on the stack. */ if (fparg_count < NUM_FPR_ARG_REGISTERS) *(long double *) fpr_base++ = *(long double *) *p_argv; else *(long double *) next_arg = *(long double *) *p_argv; next_arg += 2; fparg_count += 2; # else double_tmp = ((double *) *p_argv)[0]; if (fparg_count < NUM_FPR_ARG_REGISTERS) *fpr_base++ = double_tmp; *(double *) next_arg = double_tmp; # if defined(POWERPC_DARWIN64) next_arg++; gp_count++; # else next_arg += 2; gp_count += 2; # endif fparg_count++; double_tmp = ((double *) *p_argv)[1]; if (fparg_count < NUM_FPR_ARG_REGISTERS) *fpr_base++ = double_tmp; *(double *) next_arg = double_tmp; # if defined(POWERPC_DARWIN64) next_arg++; gp_count++; # else next_arg += 2; gp_count += 2; # endif fparg_count++; # endif FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); break; #endif case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #ifdef POWERPC64 gprvalue = *(long long *) *p_argv; goto putgpr; #else *(long long *) next_arg = *(long long *) *p_argv; next_arg += 2; gp_count += 2; #endif break; case FFI_TYPE_POINTER: gprvalue = *(unsigned long *) *p_argv; goto putgpr; case FFI_TYPE_UINT8: gprvalue = *(unsigned char *) *p_argv; goto putgpr; case FFI_TYPE_SINT8: gprvalue = *(signed char *) *p_argv; goto putgpr; case FFI_TYPE_UINT16: gprvalue = *(unsigned short *) *p_argv; goto putgpr; case FFI_TYPE_SINT16: gprvalue = *(signed short *) *p_argv; goto putgpr; case FFI_TYPE_STRUCT: size_al = (*ptr)->size; #if defined(POWERPC_DARWIN64) next_arg = (unsigned long *)ALIGN((char *)next_arg, (*ptr)->alignment); darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, (unsigned) size_al, (unsigned int *) &fparg_count, &fpr_base, &next_arg); #else dest_cpy = (char *) next_arg; /* If the first member of the struct is a double, then include enough padding in the struct size to align it to double-word. */ if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) size_al = ALIGN((*ptr)->size, 8); # if defined(POWERPC64) FFI_ASSERT (abi != FFI_DARWIN); memcpy ((char *) dest_cpy, (char *) *p_argv, size_al); next_arg += (size_al + 7) / 8; # else /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, SI 4 bytes) are aligned as if they were those modes. Structures with 3 byte in size are padded upwards. */ if (size_al < 3 && abi == FFI_DARWIN) dest_cpy += 4 - size_al; memcpy((char *) dest_cpy, (char *) *p_argv, size_al); next_arg += (size_al + 3) / 4; # endif #endif break; case FFI_TYPE_INT: case FFI_TYPE_SINT32: gprvalue = *(signed int *) *p_argv; goto putgpr; case FFI_TYPE_UINT32: gprvalue = *(unsigned int *) *p_argv; putgpr: *next_arg++ = gprvalue; gp_count++; break; default: break; } } /* Check that we didn't overrun the stack... */ /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS); FFI_ASSERT((unsigned *)fpr_base <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); */ } #if defined(POWERPC_DARWIN64) /* See if we can put some of the struct into fprs. This should not be called for structures of size 16 bytes, since these are not broken out this way. */ static void darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr) { int i; FFI_ASSERT (s->type == FFI_TYPE_STRUCT) for (i = 0; s->elements[i] != NULL; i++) { ffi_type *p = s->elements[i]; switch (p->type) { case FFI_TYPE_STRUCT: darwin64_scan_struct_for_floats (p, nfpr); break; case FFI_TYPE_LONGDOUBLE: (*nfpr) += 2; break; case FFI_TYPE_DOUBLE: case FFI_TYPE_FLOAT: (*nfpr) += 1; break; default: break; } } } static int darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr) { unsigned struct_offset=0, i; for (i = 0; s->elements[i] != NULL; i++) { char *item_base; ffi_type *p = s->elements[i]; /* Find the start of this item (0 for the first one). */ if (i > 0) struct_offset = ALIGN(struct_offset, p->alignment); item_base = src + struct_offset; switch (p->type) { case FFI_TYPE_STRUCT: if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr)) return 1; break; case FFI_TYPE_LONGDOUBLE: if (*nfpr >= NUM_FPR_ARG_REGISTERS) return 1; (*nfpr) += 1; item_base += 8; /* FALL THROUGH */ case FFI_TYPE_DOUBLE: if (*nfpr >= NUM_FPR_ARG_REGISTERS) return 1; (*nfpr) += 1; break; case FFI_TYPE_FLOAT: if (*nfpr >= NUM_FPR_ARG_REGISTERS) return 1; (*nfpr) += 1; break; default: /* If we try and place any item, that is non-float, once we've exceeded the 8 GPR mark, then we can't fit the struct. */ if ((unsigned long)item_base >= 8*8) return 1; break; } /* now count the size of what we just used. */ struct_offset += p->size; } return 0; } /* Can this struct be returned by value? */ int darwin64_struct_ret_by_value_p (ffi_type *s) { unsigned nfp = 0; FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT); /* The largest structure we can return is 8long + 13 doubles. */ if (s->size > 168) return 0; /* We can't pass more than 13 floats. */ darwin64_scan_struct_for_floats (s, &nfp); if (nfp > 13) return 0; /* If there are not too many floats, and the struct is small enough to accommodate in the GPRs, then it must be OK. */ if (s->size <= 64) return 1; /* Well, we have to look harder. */ nfp = 0; if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp)) return 0; return 1; } void darwin64_pass_struct_floats (ffi_type *s, char *src, unsigned *nfpr, double **fprs) { int i; double *fpr_base = *fprs; unsigned struct_offset = 0; /* We don't assume anything about the alignment of the source. */ for (i = 0; s->elements[i] != NULL; i++) { char *item_base; ffi_type *p = s->elements[i]; /* Find the start of this item (0 for the first one). */ if (i > 0) struct_offset = ALIGN(struct_offset, p->alignment); item_base = src + struct_offset; switch (p->type) { case FFI_TYPE_STRUCT: darwin64_pass_struct_floats (p, item_base, nfpr, &fpr_base); break; case FFI_TYPE_LONGDOUBLE: if (*nfpr < NUM_FPR_ARG_REGISTERS) *fpr_base++ = *(double *)item_base; (*nfpr) += 1; item_base += 8; /* FALL THROUGH */ case FFI_TYPE_DOUBLE: if (*nfpr < NUM_FPR_ARG_REGISTERS) *fpr_base++ = *(double *)item_base; (*nfpr) += 1; break; case FFI_TYPE_FLOAT: if (*nfpr < NUM_FPR_ARG_REGISTERS) *fpr_base++ = (double) *(float *)item_base; (*nfpr) += 1; break; default: break; } /* now count the size of what we just used. */ struct_offset += p->size; } /* Update the scores. */ *fprs = fpr_base; } /* Darwin64 special rules. Break out a struct into params and float registers. */ static void darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size, unsigned *nfpr, double **fprs, unsigned long **arg) { unsigned long *next_arg = *arg; char *dest_cpy = (char *)next_arg; FFI_ASSERT (s->type == FFI_TYPE_STRUCT) if (!size) return; /* First... special cases. */ if (size < 3 || (size == 4 && s->elements[0] && s->elements[0]->type != FFI_TYPE_FLOAT)) { /* Must be at least one GPR, padding is unspecified in value, let's make it zero. */ *next_arg = 0UL; dest_cpy += 8 - size; memcpy ((char *) dest_cpy, src, size); next_arg++; } else if (size == 16) { memcpy ((char *) dest_cpy, src, size); next_arg += 2; } else { /* now the general case, we consider embedded floats. */ memcpy ((char *) dest_cpy, src, size); darwin64_pass_struct_floats (s, src, nfpr, fprs); next_arg += (size+7)/8; } *arg = next_arg; } double * darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf) { int i; unsigned struct_offset = 0; /* We don't assume anything about the alignment of the source. */ for (i = 0; s->elements[i] != NULL; i++) { char *item_base; ffi_type *p = s->elements[i]; /* Find the start of this item (0 for the first one). */ if (i > 0) struct_offset = ALIGN(struct_offset, p->alignment); item_base = dest + struct_offset; switch (p->type) { case FFI_TYPE_STRUCT: fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf); break; case FFI_TYPE_LONGDOUBLE: if (*nf < NUM_FPR_ARG_REGISTERS) { *(double *)item_base = *fprs++ ; (*nf) += 1; } item_base += 8; /* FALL THROUGH */ case FFI_TYPE_DOUBLE: if (*nf < NUM_FPR_ARG_REGISTERS) { *(double *)item_base = *fprs++ ; (*nf) += 1; } break; case FFI_TYPE_FLOAT: if (*nf < NUM_FPR_ARG_REGISTERS) { *(float *)item_base = (float) *fprs++ ; (*nf) += 1; } break; default: break; } /* now count the size of what we just used. */ struct_offset += p->size; } return fprs; } #endif /* Adjust the size of S to be correct for Darwin. On Darwin m32, the first field of a structure has natural alignment. On Darwin m64, all fields have natural alignment. */ static void darwin_adjust_aggregate_sizes (ffi_type *s) { int i; if (s->type != FFI_TYPE_STRUCT) return; s->size = 0; for (i = 0; s->elements[i] != NULL; i++) { ffi_type *p; int align; p = s->elements[i]; if (p->type == FFI_TYPE_STRUCT) darwin_adjust_aggregate_sizes (p); #if defined(POWERPC_DARWIN64) /* Natural alignment for all items. */ align = p->alignment; #else /* Natural alignment for the first item... */ if (i == 0) align = p->alignment; else if (p->alignment == 16 || p->alignment < 4) /* .. subsequent items with vector or align < 4 have natural align. */ align = p->alignment; else /* .. or align is 4. */ align = 4; #endif /* Pad, if necessary, before adding the current item. */ s->size = ALIGN(s->size, align) + p->size; } s->size = ALIGN(s->size, s->alignment); /* This should not be necessary on m64, but harmless. */ if (s->elements[0]->type == FFI_TYPE_UINT64 || s->elements[0]->type == FFI_TYPE_SINT64 || s->elements[0]->type == FFI_TYPE_DOUBLE || s->elements[0]->alignment == 8) s->alignment = s->alignment > 8 ? s->alignment : 8; /* Do not add additional tail padding. */ } /* Adjust the size of S to be correct for AIX. Word-align double unless it is the first member of a structure. */ static void aix_adjust_aggregate_sizes (ffi_type *s) { int i; if (s->type != FFI_TYPE_STRUCT) return; s->size = 0; for (i = 0; s->elements[i] != NULL; i++) { ffi_type *p; int align; p = s->elements[i]; aix_adjust_aggregate_sizes (p); align = p->alignment; if (i != 0 && p->type == FFI_TYPE_DOUBLE) align = 4; s->size = ALIGN(s->size, align) + p->size; } s->size = ALIGN(s->size, s->alignment); if (s->elements[0]->type == FFI_TYPE_UINT64 || s->elements[0]->type == FFI_TYPE_SINT64 || s->elements[0]->type == FFI_TYPE_DOUBLE || s->elements[0]->alignment == 8) s->alignment = s->alignment > 8 ? s->alignment : 8; /* Do not add additional tail padding. */ } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* All this is for the DARWIN ABI. */ unsigned i; ffi_type **ptr; unsigned bytes; unsigned fparg_count = 0, intarg_count = 0; unsigned flags = 0; unsigned size_al = 0; /* All the machine-independent calculation of cif->bytes will be wrong. All the calculation of structure sizes will also be wrong. Redo the calculation for DARWIN. */ if (cif->abi == FFI_DARWIN) { darwin_adjust_aggregate_sizes (cif->rtype); for (i = 0; i < cif->nargs; i++) darwin_adjust_aggregate_sizes (cif->arg_types[i]); } if (cif->abi == FFI_AIX) { aix_adjust_aggregate_sizes (cif->rtype); for (i = 0; i < cif->nargs; i++) aix_adjust_aggregate_sizes (cif->arg_types[i]); } /* Space for the frame pointer, callee's LR, CR, etc, and for the asm's temp regs. */ bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long); /* Return value handling. The rules m32 are as follows: - 32-bit (or less) integer values are returned in gpr3; - structures of size <= 4 bytes also returned in gpr3; - 64-bit integer values [??? and structures between 5 and 8 bytes] are returned in gpr3 and gpr4; - Single/double FP values are returned in fpr1; - Long double FP (if not equivalent to double) values are returned in fpr1 and fpr2; m64: - 64-bit or smaller integral values are returned in GPR3 - Single/double FP values are returned in fpr1; - Long double FP values are returned in fpr1 and fpr2; m64 Structures: - If the structure could be accommodated in registers were it to be the first argument to a routine, then it is returned in those registers. m32/m64 structures otherwise: - Larger structures values are allocated space and a pointer is passed as the first argument. */ switch (cif->rtype->type) { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: flags |= FLAG_RETURNS_128BITS; flags |= FLAG_RETURNS_FP; break; #endif case FFI_TYPE_DOUBLE: flags |= FLAG_RETURNS_64BITS; /* Fall through. */ case FFI_TYPE_FLOAT: flags |= FLAG_RETURNS_FP; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #ifdef POWERPC64 case FFI_TYPE_POINTER: #endif flags |= FLAG_RETURNS_64BITS; break; case FFI_TYPE_STRUCT: #if defined(POWERPC_DARWIN64) { /* Can we fit the struct into regs? */ if (darwin64_struct_ret_by_value_p (cif->rtype)) { unsigned nfpr = 0; flags |= FLAG_RETURNS_STRUCT; if (cif->rtype->size != 16) darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ; else flags |= FLAG_RETURNS_128BITS; /* Will be 0 for 16byte struct. */ if (nfpr) flags |= FLAG_RETURNS_FP; } else /* By ref. */ { flags |= FLAG_RETVAL_REFERENCE; flags |= FLAG_RETURNS_NOTHING; intarg_count++; } } #elif defined(DARWIN_PPC) if (cif->rtype->size <= 4) flags |= FLAG_RETURNS_STRUCT; else /* else by reference. */ { flags |= FLAG_RETVAL_REFERENCE; flags |= FLAG_RETURNS_NOTHING; intarg_count++; } #else /* assume we pass by ref. */ flags |= FLAG_RETVAL_REFERENCE; flags |= FLAG_RETURNS_NOTHING; intarg_count++; #endif break; case FFI_TYPE_VOID: flags |= FLAG_RETURNS_NOTHING; break; default: /* Returns 32-bit integer, or similar. Nothing to do here. */ break; } /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest goes on the stack. ??? Structures are passed as a pointer to a copy of the structure. Stuff on the stack needs to keep proper alignment. For m64 the count is effectively of half-GPRs. */ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { unsigned align_words; switch ((*ptr)->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: fparg_count++; #if !defined(POWERPC_DARWIN64) /* If this FP arg is going on the stack, it must be 8-byte-aligned. */ if (fparg_count > NUM_FPR_ARG_REGISTERS && (intarg_count & 0x01) != 0) intarg_count++; #endif break; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: fparg_count += 2; /* If this FP arg is going on the stack, it must be 16-byte-aligned. */ if (fparg_count >= NUM_FPR_ARG_REGISTERS) #if defined (POWERPC64) intarg_count = ALIGN(intarg_count, 2); #else intarg_count = ALIGN(intarg_count, 4); #endif break; #endif case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: #if defined(POWERPC64) intarg_count++; #else /* 'long long' arguments are passed as two words, but either both words must fit in registers or both go on the stack. If they go on the stack, they must be 8-byte-aligned. */ if (intarg_count == NUM_GPR_ARG_REGISTERS-1 || (intarg_count >= NUM_GPR_ARG_REGISTERS && (intarg_count & 0x01) != 0)) intarg_count++; intarg_count += 2; #endif break; case FFI_TYPE_STRUCT: size_al = (*ptr)->size; #if defined(POWERPC_DARWIN64) align_words = (*ptr)->alignment >> 3; if (align_words) intarg_count = ALIGN(intarg_count, align_words); /* Base size of the struct. */ intarg_count += (size_al + 7) / 8; /* If 16 bytes then don't worry about floats. */ if (size_al != 16) /* Scan through for floats to be placed in regs. */ darwin64_scan_struct_for_floats (*ptr, &fparg_count) ; #else align_words = (*ptr)->alignment >> 2; if (align_words) intarg_count = ALIGN(intarg_count, align_words); /* If the first member of the struct is a double, then align the struct to double-word. if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) size_al = ALIGN((*ptr)->size, 8); */ # ifdef POWERPC64 intarg_count += (size_al + 7) / 8; # else intarg_count += (size_al + 3) / 4; # endif #endif break; default: /* Everything else is passed as a 4-byte word in a GPR, either the object itself or a pointer to it. */ intarg_count++; break; } } if (fparg_count != 0) flags |= FLAG_FP_ARGUMENTS; #if defined(POWERPC_DARWIN64) /* Space to image the FPR registers, if needed - which includes when they might be used in a struct return. */ if (fparg_count != 0 || ((flags & FLAG_RETURNS_STRUCT) && (flags & FLAG_RETURNS_FP))) bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); #else /* Space for the FPR registers, if needed. */ if (fparg_count != 0) bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); #endif /* Stack space. */ #ifdef POWERPC64 if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS) bytes += (intarg_count + fparg_count) * sizeof(long); #else if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS) bytes += (intarg_count + 2 * fparg_count) * sizeof(long); #endif else bytes += NUM_GPR_ARG_REGISTERS * sizeof(long); /* The stack space allocated needs to be a multiple of 16 bytes. */ bytes = ALIGN(bytes, 16) ; cif->flags = flags; cif->bytes = bytes; return FFI_OK; } extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *, void (*fn)(void), void (*fn2)(void)); extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *, void (*fn)(void), void (*fn2)(void), ffi_type*); void ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca (cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_AIX: ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, FFI_FN(ffi_prep_args)); break; case FFI_DARWIN: ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, FFI_FN(ffi_prep_args), cif->rtype); break; default: FFI_ASSERT(0); break; } } static void flush_icache(char *); static void flush_range(char *, int); /* The layout of a function descriptor. A C function pointer really points to one of these. */ typedef struct aix_fd_struct { void *code_pointer; void *toc; } aix_fd; /* here I'd like to add the stack frame layout we use in darwin_closure.S and aix_closure.S m32/m64 The stack layout looks like this: | Additional params... | | Higher address ~ ~ ~ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS |--------------------------------------------| | | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | |--------------------------------------------| | | Reserved 2*4/8 | | |--------------------------------------------| | | Space for callee's LR 4/8 | | |--------------------------------------------| | | Saved CR [low word for m64] 4/8 | | |--------------------------------------------| | | Current backchain pointer 4/8 |-/ Parent's frame. |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM | Result Bytes 16 | | |--------------------------------------------| | ~ padding to 16-byte alignment ~ ~ |--------------------------------------------| | | NUM_FPR_ARG_REGISTERS slots | | | here fp13 .. fp1 13*8 | | |--------------------------------------------| | | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS |--------------------------------------------| | | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | |--------------------------------------------| | stack | | Reserved [compiler,binder] 2*4/8 | | grows | |--------------------------------------------| | down V | Space for callee's LR 4/8 | | |--------------------------------------------| | lower addresses | Saved CR [low word for m64] 4/8 | | |--------------------------------------------| | stack pointer here | Current backchain pointer 4/8 |-/ during |--------------------------------------------| <<< ffi_closure_ASM. */ ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp; struct ffi_aix_trampoline_struct *tramp_aix; aix_fd *fd; switch (cif->abi) { case FFI_DARWIN: FFI_ASSERT (cif->abi == FFI_DARWIN); tramp = (unsigned int *) &closure->tramp[0]; #if defined(POWERPC_DARWIN64) tramp[0] = 0x7c0802a6; /* mflr r0 */ tramp[1] = 0x429f0015; /* bcl- 20,4*cr7+so, +0x18 (L1) */ /* We put the addresses here. */ tramp[6] = 0x7d6802a6; /*L1: mflr r11 */ tramp[7] = 0xe98b0000; /* ld r12,0(r11) function address */ tramp[8] = 0x7c0803a6; /* mtlr r0 */ tramp[9] = 0x7d8903a6; /* mtctr r12 */ tramp[10] = 0xe96b0008; /* lwz r11,8(r11) static chain */ tramp[11] = 0x4e800420; /* bctr */ *((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function */ *((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context */ #else tramp[0] = 0x7c0802a6; /* mflr r0 */ tramp[1] = 0x429f000d; /* bcl- 20,4*cr7+so,0x10 */ tramp[4] = 0x7d6802a6; /* mflr r11 */ tramp[5] = 0x818b0000; /* lwz r12,0(r11) function address */ tramp[6] = 0x7c0803a6; /* mtlr r0 */ tramp[7] = 0x7d8903a6; /* mtctr r12 */ tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ tramp[9] = 0x4e800420; /* bctr */ tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ tramp[3] = (unsigned long) codeloc; /* context */ #endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Flush the icache. Only necessary on Darwin. */ flush_range(codeloc, FFI_TRAMPOLINE_SIZE); break; case FFI_AIX: tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp); fd = (aix_fd *)(void *)ffi_closure_ASM; FFI_ASSERT (cif->abi == FFI_AIX); tramp_aix->code_pointer = fd->code_pointer; tramp_aix->toc = fd->toc; tramp_aix->static_chain = codeloc; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; break; default: return FFI_BAD_ABI; break; } return FFI_OK; } static void flush_icache(char *addr) { #ifndef _AIX __asm__ volatile ( "dcbf 0,%0\n" "\tsync\n" "\ticbi 0,%0\n" "\tsync\n" "\tisync" : : "r"(addr) : "memory"); #endif } static void flush_range(char * addr1, int size) { #define MIN_LINE_SIZE 32 int i; for (i = 0; i < size; i += MIN_LINE_SIZE) flush_icache(addr1+i); flush_icache(addr1+size-1); } typedef union { float f; double d; } ffi_dblfl; ffi_type * ffi_closure_helper_DARWIN (ffi_closure *, void *, unsigned long *, ffi_dblfl *); /* Basically the trampoline invokes ffi_closure_ASM, and on entry, r11 holds the address of the closure. After storing the registers that could possibly contain parameters to be passed into the stack frame and setting up space for a return value, ffi_closure_ASM invokes the following helper function to do most of the work. */ ffi_type * ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue, unsigned long *pgr, ffi_dblfl *pfr) { /* rvalue is the pointer to space for return value in closure assembly pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM. */ typedef double ldbits[2]; union ldu { ldbits lb; long double ld; }; void ** avalue; ffi_type ** arg_types; long i, avn; ffi_cif * cif; ffi_dblfl * end_pfr = pfr + NUM_FPR_ARG_REGISTERS; unsigned size_al; #if defined(POWERPC_DARWIN64) unsigned fpsused = 0; #endif cif = closure->cif; avalue = alloca (cif->nargs * sizeof(void *)); if (cif->rtype->type == FFI_TYPE_STRUCT) { #if defined(POWERPC_DARWIN64) if (!darwin64_struct_ret_by_value_p (cif->rtype)) { /* Won't fit into the regs - return by ref. */ rvalue = (void *) *pgr; pgr++; } #elif defined(DARWIN_PPC) if (cif->rtype->size > 4) { rvalue = (void *) *pgr; pgr++; } #else /* assume we return by ref. */ rvalue = (void *) *pgr; pgr++; #endif } i = 0; avn = cif->nargs; arg_types = cif->arg_types; /* Grab the addresses of the arguments from the stack frame. */ while (i < avn) { switch (arg_types[i]->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: #if defined(POWERPC64) avalue[i] = (char *) pgr + 7; #else avalue[i] = (char *) pgr + 3; #endif pgr++; break; case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: #if defined(POWERPC64) avalue[i] = (char *) pgr + 6; #else avalue[i] = (char *) pgr + 2; #endif pgr++; break; case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: #if defined(POWERPC64) avalue[i] = (char *) pgr + 4; #else case FFI_TYPE_POINTER: avalue[i] = pgr; #endif pgr++; break; case FFI_TYPE_STRUCT: size_al = arg_types[i]->size; #if defined(POWERPC_DARWIN64) pgr = (unsigned long *)ALIGN((char *)pgr, arg_types[i]->alignment); if (size_al < 3 || size_al == 4) { avalue[i] = ((char *)pgr)+8-size_al; if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT && fpsused < NUM_FPR_ARG_REGISTERS) { *(float *)pgr = (float) *(double *)pfr; pfr++; fpsused++; } } else { if (size_al != 16) pfr = (ffi_dblfl *) darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr, (double *)pfr, &fpsused); avalue[i] = pgr; } pgr += (size_al + 7) / 8; #else /* If the first member of the struct is a double, then align the struct to double-word. */ if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) size_al = ALIGN(arg_types[i]->size, 8); # if defined(POWERPC64) FFI_ASSERT (cif->abi != FFI_DARWIN); avalue[i] = pgr; pgr += (size_al + 7) / 8; # else /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, SI 4 bytes) are aligned as if they were those modes. */ if (size_al < 3 && cif->abi == FFI_DARWIN) avalue[i] = (char*) pgr + 4 - size_al; else avalue[i] = pgr; pgr += (size_al + 3) / 4; # endif #endif break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: #if defined(POWERPC64) case FFI_TYPE_POINTER: avalue[i] = pgr; pgr++; break; #else /* Long long ints are passed in two gpr's. */ avalue[i] = pgr; pgr += 2; break; #endif case FFI_TYPE_FLOAT: /* A float value consumes a GPR. There are 13 64bit floating point registers. */ if (pfr < end_pfr) { double temp = pfr->d; pfr->f = (float) temp; avalue[i] = pfr; pfr++; } else { avalue[i] = pgr; } pgr++; break; case FFI_TYPE_DOUBLE: /* A double value consumes two GPRs. There are 13 64bit floating point registers. */ if (pfr < end_pfr) { avalue[i] = pfr; pfr++; } else { avalue[i] = pgr; } #ifdef POWERPC64 pgr++; #else pgr += 2; #endif break; #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: #ifdef POWERPC64 if (pfr + 1 < end_pfr) { avalue[i] = pfr; pfr += 2; } else { if (pfr < end_pfr) { *pgr = *(unsigned long *) pfr; pfr++; } avalue[i] = pgr; } pgr += 2; #else /* POWERPC64 */ /* A long double value consumes four GPRs and two FPRs. There are 13 64bit floating point registers. */ if (pfr + 1 < end_pfr) { avalue[i] = pfr; pfr += 2; } /* Here we have the situation where one part of the long double is stored in fpr13 and the other part is already on the stack. We use a union to pass the long double to avalue[i]. */ else if (pfr + 1 == end_pfr) { union ldu temp_ld; memcpy (&temp_ld.lb[0], pfr, sizeof(ldbits)); memcpy (&temp_ld.lb[1], pgr + 2, sizeof(ldbits)); avalue[i] = &temp_ld.ld; pfr++; } else { avalue[i] = pgr; } pgr += 4; #endif /* POWERPC64 */ break; #endif default: FFI_ASSERT(0); } i++; } (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_ASM to perform return type promotions. */ return cif->rtype; } polyml-5.7.1/libffi/src/powerpc/darwin_closure.S0000644000175000017500000003736413204034553020661 0ustar daviddavid/* ----------------------------------------------------------------------- darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, Free Software Foundation, Inc. based on ppc_closure.S PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #define L(x) x #if defined(__ppc64__) #define MODE_CHOICE(x, y) y #else #define MODE_CHOICE(x, y) x #endif #define machine_choice MODE_CHOICE(ppc7400,ppc64) ; Define some pseudo-opcodes for size-independent load & store of GPRs ... #define lgu MODE_CHOICE(lwzu, ldu) #define lg MODE_CHOICE(lwz,ld) #define sg MODE_CHOICE(stw,std) #define sgu MODE_CHOICE(stwu,stdu) ; ... and the size of GPRs and their storage indicator. #define GPR_BYTES MODE_CHOICE(4,8) #define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ #define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ ; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. #define LINKAGE_SIZE MODE_CHOICE(24,48) #define PARAM_AREA MODE_CHOICE(32,64) #define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */ #define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ /* WARNING: if ffi_type is changed... here be monsters. Offsets of items within the result type. */ #define FFI_TYPE_TYPE MODE_CHOICE(6,10) #define FFI_TYPE_ELEM MODE_CHOICE(8,16) #define SAVED_FPR_COUNT 13 #define FPR_SIZE 8 /* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */ #define RESULT_BYTES MODE_CHOICE(16,176) ; The whole stack frame **MUST** be 16byte-aligned. #define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL) #define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)) #define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE) #define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA) #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 ; We no longer need the pic symbol stub for Darwin >= 9. #define BLCLS_HELP _ffi_closure_helper_DARWIN #define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p #define PASS_STR_FLOATS _darwin64_pass_struct_floats #undef WANT_STUB #else #define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub #define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub #define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub #define WANT_STUB #endif /* m32/m64 The stack layout looks like this: | Additional params... | | Higher address ~ ~ ~ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS |--------------------------------------------| | | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | |--------------------------------------------| | | Reserved 2*4/8 | | |--------------------------------------------| | | Space for callee`s LR 4/8 | | |--------------------------------------------| | | Saved CR [low word for m64] 4/8 | | |--------------------------------------------| | | Current backchain pointer 4/8 |-/ Parent`s frame. |--------------------------------------------| <+ <<< on entry to | Result Bytes 16/176 | | |--------------------------------------------| | ~ padding to 16-byte alignment ~ ~ |--------------------------------------------| | | NUM_FPR_ARG_REGISTERS slots | | | here fp13 .. fp1 13*8 | | |--------------------------------------------| | | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS |--------------------------------------------| | | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | |--------------------------------------------| | stack | | Reserved [compiler,binder] 2*4/8 | | grows | |--------------------------------------------| | down V | Space for callees LR 4/8 | | |--------------------------------------------| | lower addresses | Saved CR [low word for m64] 4/8 | | |--------------------------------------------| | stack pointer here | Current backchain pointer 4/8 |-/ during |--------------------------------------------| <<< call. */ .file "darwin_closure.S" .machine machine_choice .text .globl _ffi_closure_ASM .align LOG2_GPR_BYTES _ffi_closure_ASM: LFB1: Lstartcode: mflr r0 /* extract return address */ sg r0,SAVED_LR_OFFSET(r1) /* save the return address */ LCFI0: sgu r1,-SAVE_SIZE(r1) /* skip over caller save area keep stack aligned to 16. */ LCFI1: /* We want to build up an area for the parameters passed in registers. (both floating point and integer) */ /* Put gpr 3 to gpr 10 in the parents outgoing area... ... the remainder of any params that overflowed the regs will follow here. */ sg r3, (PARENT_PARM_BASE )(r1) sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1) sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1) sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1) sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1) sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1) sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1) sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1) /* We save fpr 1 to fpr 14 in our own save frame. */ stfd f1, (FP_SAVE_BASE )(r1) stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) /* Set up registers for the routine that actually does the work get the context pointer from the trampoline. */ mr r3,r11 /* Now load up the pointer to the result storage. */ addi r4,r1,(SAVE_SIZE-RESULT_BYTES) /* Now load up the pointer to the saved gpr registers. */ addi r5,r1,PARENT_PARM_BASE /* Now load up the pointer to the saved fpr registers. */ addi r6,r1,FP_SAVE_BASE /* Make the call. */ bl BLCLS_HELP /* r3 contains the rtype pointer... save it since we will need it later. */ sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type lg r0,0(r3) ; size => r0 lhz r3,FFI_TYPE_TYPE(r3) ; type => r3 /* The helper will have intercepted structure returns and inserted the caller`s destination address for structs returned by ref. */ /* r3 contains the return type so use it to look up in a table so we know how to deal with each type. */ addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */ bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */ mflr r4 /* Move to r4. */ slwi r3,r3,4 /* Now multiply return type by 16. */ add r3,r3,r4 /* Add contents of table to table address. */ mtctr r3 bctr /* Jump to it. */ LFE1: /* Each of the ret_typeX code fragments has to be exactly 16 bytes long (4 instructions). For cache effectiveness we align to a 16 byte boundary first. */ .align 4 nop nop nop Lget_ret_type0_addr: blrl /* case FFI_TYPE_VOID */ Lret_type0: b Lfinish nop nop nop /* case FFI_TYPE_INT */ Lret_type1: lg r3,0(r5) b Lfinish nop nop /* case FFI_TYPE_FLOAT */ Lret_type2: lfs f1,0(r5) b Lfinish nop nop /* case FFI_TYPE_DOUBLE */ Lret_type3: lfd f1,0(r5) b Lfinish nop nop /* case FFI_TYPE_LONGDOUBLE */ Lret_type4: lfd f1,0(r5) lfd f2,8(r5) b Lfinish nop /* case FFI_TYPE_UINT8 */ Lret_type5: #if defined(__ppc64__) lbz r3,7(r5) #else lbz r3,3(r5) #endif b Lfinish nop nop /* case FFI_TYPE_SINT8 */ Lret_type6: #if defined(__ppc64__) lbz r3,7(r5) #else lbz r3,3(r5) #endif extsb r3,r3 b Lfinish nop /* case FFI_TYPE_UINT16 */ Lret_type7: #if defined(__ppc64__) lhz r3,6(r5) #else lhz r3,2(r5) #endif b Lfinish nop nop /* case FFI_TYPE_SINT16 */ Lret_type8: #if defined(__ppc64__) lha r3,6(r5) #else lha r3,2(r5) #endif b Lfinish nop nop /* case FFI_TYPE_UINT32 */ Lret_type9: #if defined(__ppc64__) lwz r3,4(r5) #else lwz r3,0(r5) #endif b Lfinish nop nop /* case FFI_TYPE_SINT32 */ Lret_type10: #if defined(__ppc64__) lwz r3,4(r5) #else lwz r3,0(r5) #endif b Lfinish nop nop /* case FFI_TYPE_UINT64 */ Lret_type11: #if defined(__ppc64__) lg r3,0(r5) b Lfinish nop #else lwz r3,0(r5) lwz r4,4(r5) b Lfinish #endif nop /* case FFI_TYPE_SINT64 */ Lret_type12: #if defined(__ppc64__) lg r3,0(r5) b Lfinish nop #else lwz r3,0(r5) lwz r4,4(r5) b Lfinish #endif nop /* case FFI_TYPE_STRUCT */ Lret_type13: #if defined(__ppc64__) lg r3,0(r5) ; we need at least this... cmpi 0,r0,4 bgt Lstructend ; not a special small case b Lsmallstruct ; see if we need more. #else cmpi 0,r0,4 bgt Lfinish ; not by value lg r3,0(r5) b Lfinish #endif /* case FFI_TYPE_POINTER */ Lret_type14: lg r3,0(r5) b Lfinish nop nop #if defined(__ppc64__) Lsmallstruct: beq Lfour ; continuation of Lret13. cmpi 0,r0,3 beq Lfinish ; don`t adjust this - can`t be any floats here... srdi r3,r3,48 cmpi 0,r0,2 beq Lfinish ; .. or here .. srdi r3,r3,8 b Lfinish ; .. or here. Lfour: lg r6,LINKAGE_SIZE(r1) ; get the result type lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer lg r6,0(r6) ; first element lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type cmpi 0,r0,2 ; FFI_TYPE_FLOAT bne Lfourint lfs f1,0(r5) ; just one float in the struct. b Lfinish Lfourint: srdi r3,r3,32 ; four bytes. b Lfinish Lstructend: lg r3,LINKAGE_SIZE(r1) ; get the result type bl STRUCT_RETVALUE_P cmpi 0,r3,0 beq Lfinish ; nope. /* Recover a pointer to the results. */ addi r11,r1,(SAVE_SIZE-RESULT_BYTES) lg r3,0(r11) ; we need at least this... lg r4,8(r11) cmpi 0,r0,16 beq Lfinish ; special case 16 bytes we don't consider floats. /* OK, frustratingly, the process of saving the struct to mem might have messed with the FPRs, so we have to re-load them :(. We`ll use our FPRs space again - calling: void darwin64_pass_struct_floats (ffi_type *s, char *src, unsigned *nfpr, double **fprs) We`ll temporarily pinch the first two slots of the param area for local vars used by the routine. */ xor r6,r6,r6 addi r5,r1,PARENT_PARM_BASE ; some space sg r6,0(r5) ; *nfpr zeroed. addi r6,r5,8 ; **fprs addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space sg r3,0(r6) mr r4,r11 ; the struct is here... lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type. bl PASS_STR_FLOATS ; get struct floats into FPR save space. /* See if we used any floats */ lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1) cmpi 0,r0,0 beq Lstructints ; nope. /* OK load `em up... */ lfd f1, (FP_SAVE_BASE )(r1) lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) /* point back at our saved struct. */ Lstructints: addi r11,r1,(SAVE_SIZE-RESULT_BYTES) lg r3,0(r11) ; we end up picking the lg r4,8(r11) ; first two again. lg r5,16(r11) lg r6,24(r11) lg r7,32(r11) lg r8,40(r11) lg r9,48(r11) lg r10,56(r11) #endif /* case done */ Lfinish: addi r1,r1,SAVE_SIZE /* Restore stack pointer. */ lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */ mtlr r0 /* Reset link register. */ blr Lendcode: .align 1 /* END(ffi_closure_ASM) */ /* EH frame stuff. */ #define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) /* 176, 400 */ #define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90) #define EH_FRAME_OFFSETB MODE_CHOICE(1,3) .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support EH_frame1: .set L$set$0,LECIE1-LSCIE1 .long L$set$0 ; Length of Common Information Entry LSCIE1: .long 0x0 ; CIE Identifier Tag .byte 0x1 ; CIE Version .ascii "zR\0" ; CIE Augmentation .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor .byte 0x41 ; CIE RA Column .byte 0x1 ; uleb128 0x1; Augmentation size .byte 0x10 ; FDE Encoding (pcrel) .byte 0xc ; DW_CFA_def_cfa .byte 0x1 ; uleb128 0x1 .byte 0x0 ; uleb128 0x0 .align LOG2_GPR_BYTES LECIE1: .globl _ffi_closure_ASM.eh _ffi_closure_ASM.eh: LSFDE1: .set L$set$1,LEFDE1-LASFDE1 .long L$set$1 ; FDE Length LASFDE1: .long LASFDE1-EH_frame1 ; FDE CIE offset .g_long Lstartcode-. ; FDE initial location .set L$set$3,LFE1-Lstartcode .g_long L$set$3 ; FDE address range .byte 0x0 ; uleb128 0x0; Augmentation size .byte 0x4 ; DW_CFA_advance_loc4 .set L$set$3,LCFI1-LCFI0 .long L$set$3 .byte 0xe ; DW_CFA_def_cfa_offset .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3 .byte 0x4 ; DW_CFA_advance_loc4 .set L$set$4,LCFI0-Lstartcode .long L$set$4 .byte 0x11 ; DW_CFA_offset_extended_sf .byte 0x41 ; uleb128 0x41 .byte 0x7e ; sleb128 -2 .align LOG2_GPR_BYTES LEFDE1: .align 1 #ifdef WANT_STUB .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L_ffi_closure_helper_DARWIN$stub: .indirect_symbol _ffi_closure_helper_DARWIN mflr r0 bcl 20,31,"L1$spb" "L1$spb": mflr r11 addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb") mtlr r0 lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L_ffi_closure_helper_DARWIN$lazy_ptr: .indirect_symbol _ffi_closure_helper_DARWIN .g_long dyld_stub_binding_helper #if defined(__ppc64__) .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L_darwin64_struct_ret_by_value_p$stub: .indirect_symbol _darwin64_struct_ret_by_value_p mflr r0 bcl 20,31,"L2$spb" "L2$spb": mflr r11 addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb") mtlr r0 lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L_darwin64_struct_ret_by_value_p$lazy_ptr: .indirect_symbol _darwin64_struct_ret_by_value_p .g_long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L_darwin64_pass_struct_floats$stub: .indirect_symbol _darwin64_pass_struct_floats mflr r0 bcl 20,31,"L3$spb" "L3$spb": mflr r11 addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb") mtlr r0 lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L_darwin64_pass_struct_floats$lazy_ptr: .indirect_symbol _darwin64_pass_struct_floats .g_long dyld_stub_binding_helper # endif #endif polyml-5.7.1/libffi/src/powerpc/ffi_powerpc.h0000644000175000017500000000626113204034553020161 0ustar daviddavid/* ----------------------------------------------------------------------- ffi_powerpc.h - Copyright (C) 2013 IBM Copyright (C) 2011 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc Copyright (c) 1998 Geoffrey Keating PowerPC Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ enum { /* The assembly depends on these exact flags. */ /* These go in cr7 */ FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */ FLAG_RETURNS_NOTHING = 1 << (31-30), FLAG_RETURNS_FP = 1 << (31-29), FLAG_RETURNS_64BITS = 1 << (31-28), /* This goes in cr6 */ FLAG_RETURNS_128BITS = 1 << (31-27), FLAG_COMPAT = 1 << (31- 8), /* Not used by assembly */ /* These go in cr1 */ FLAG_ARG_NEEDS_COPY = 1 << (31- 7), /* Used by sysv code */ FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */ FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), FLAG_RETVAL_REFERENCE = 1 << (31- 4) }; typedef union { float f; double d; } ffi_dblfl; void FFI_HIDDEN ffi_closure_SYSV (void); void FFI_HIDDEN ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *, void (*)(void)); void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi); ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *); int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *, ffi_dblfl *, unsigned long *); void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, unsigned long, unsigned long *, void (*)(void)); void FFI_HIDDEN ffi_closure_LINUX64 (void); void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi); ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *); ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int, unsigned int); void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const); int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *, unsigned long *, ffi_dblfl *); polyml-5.7.1/libffi/src/powerpc/aix.S0000644000175000017500000001504313204034553016410 0ustar daviddavid/* ----------------------------------------------------------------------- aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc. based on darwin.S by John Hornkvist PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ .set r0,0 .set r1,1 .set r2,2 .set r3,3 .set r4,4 .set r5,5 .set r6,6 .set r7,7 .set r8,8 .set r9,9 .set r10,10 .set r11,11 .set r12,12 .set r13,13 .set r14,14 .set r15,15 .set r16,16 .set r17,17 .set r18,18 .set r19,19 .set r20,20 .set r21,21 .set r22,22 .set r23,23 .set r24,24 .set r25,25 .set r26,26 .set r27,27 .set r28,28 .set r29,29 .set r30,30 .set r31,31 .set f0,0 .set f1,1 .set f2,2 .set f3,3 .set f4,4 .set f5,5 .set f6,6 .set f7,7 .set f8,8 .set f9,9 .set f10,10 .set f11,11 .set f12,12 .set f13,13 .set f14,14 .set f15,15 .set f16,16 .set f17,17 .set f18,18 .set f19,19 .set f20,20 .set f21,21 .extern .ffi_prep_args #define LIBFFI_ASM #include #include #define JUMPTARGET(name) name #define L(x) x .file "aix.S" .toc /* void ffi_call_AIX(extended_cif *ecif, unsigned long bytes, * unsigned int flags, unsigned int *rvalue, * void (*fn)(), * void (*prep_args)(extended_cif*, unsigned *const)); * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args */ .csect .text[PR] .align 2 .globl ffi_call_AIX .globl .ffi_call_AIX .csect ffi_call_AIX[DS] ffi_call_AIX: #ifdef __64BIT__ .llong .ffi_call_AIX, TOC[tc0], 0 .csect .text[PR] .ffi_call_AIX: /* Save registers we use. */ mflr r0 std r28,-32(r1) std r29,-24(r1) std r30,-16(r1) std r31, -8(r1) std r0, 16(r1) mr r28, r1 /* our AP. */ stdux r1, r1, r4 /* Save arguments over call... */ mr r31, r5 /* flags, */ mr r30, r6 /* rvalue, */ mr r29, r7 /* function address. */ std r2, 40(r1) /* Call ffi_prep_args. */ mr r4, r1 bl .ffi_prep_args nop /* Now do the call. */ ld r0, 0(r29) ld r2, 8(r29) ld r11, 16(r29) /* Set up cr1 with bits 4-7 of the flags. */ mtcrf 0x40, r31 mtctr r0 /* Load all those argument registers. */ /* We have set up a nice stack frame, just load it into registers. */ ld r3, 40+(1*8)(r1) ld r4, 40+(2*8)(r1) ld r5, 40+(3*8)(r1) ld r6, 40+(4*8)(r1) nop ld r7, 40+(5*8)(r1) ld r8, 40+(6*8)(r1) ld r9, 40+(7*8)(r1) ld r10,40+(8*8)(r1) L1: /* Load all the FP registers. */ bf 6,L2 /* 2f + 0x18 */ lfd f1,-32-(13*8)(r28) lfd f2,-32-(12*8)(r28) lfd f3,-32-(11*8)(r28) lfd f4,-32-(10*8)(r28) nop lfd f5,-32-(9*8)(r28) lfd f6,-32-(8*8)(r28) lfd f7,-32-(7*8)(r28) lfd f8,-32-(6*8)(r28) nop lfd f9,-32-(5*8)(r28) lfd f10,-32-(4*8)(r28) lfd f11,-32-(3*8)(r28) lfd f12,-32-(2*8)(r28) nop lfd f13,-32-(1*8)(r28) L2: /* Make the call. */ bctrl ld r2, 40(r1) /* Now, deal with the return value. */ mtcrf 0x01, r31 bt 30, L(done_return_value) bt 29, L(fp_return_value) std r3, 0(r30) /* Fall through... */ L(done_return_value): /* Restore the registers we used and return. */ mr r1, r28 ld r0, 16(r28) ld r28, -32(r1) mtlr r0 ld r29, -24(r1) ld r30, -16(r1) ld r31, -8(r1) blr L(fp_return_value): bf 28, L(float_return_value) stfd f1, 0(r30) bf 31, L(done_return_value) stfd f2, 8(r30) b L(done_return_value) L(float_return_value): stfs f1, 0(r30) b L(done_return_value) #else /* ! __64BIT__ */ .long .ffi_call_AIX, TOC[tc0], 0 .csect .text[PR] .ffi_call_AIX: /* Save registers we use. */ mflr r0 stw r28,-16(r1) stw r29,-12(r1) stw r30, -8(r1) stw r31, -4(r1) stw r0, 8(r1) mr r28, r1 /* out AP. */ stwux r1, r1, r4 /* Save arguments over call... */ mr r31, r5 /* flags, */ mr r30, r6 /* rvalue, */ mr r29, r7 /* function address, */ stw r2, 20(r1) /* Call ffi_prep_args. */ mr r4, r1 bl .ffi_prep_args nop /* Now do the call. */ lwz r0, 0(r29) lwz r2, 4(r29) lwz r11, 8(r29) /* Set up cr1 with bits 4-7 of the flags. */ mtcrf 0x40, r31 mtctr r0 /* Load all those argument registers. */ /* We have set up a nice stack frame, just load it into registers. */ lwz r3, 20+(1*4)(r1) lwz r4, 20+(2*4)(r1) lwz r5, 20+(3*4)(r1) lwz r6, 20+(4*4)(r1) nop lwz r7, 20+(5*4)(r1) lwz r8, 20+(6*4)(r1) lwz r9, 20+(7*4)(r1) lwz r10,20+(8*4)(r1) L1: /* Load all the FP registers. */ bf 6,L2 /* 2f + 0x18 */ lfd f1,-16-(13*8)(r28) lfd f2,-16-(12*8)(r28) lfd f3,-16-(11*8)(r28) lfd f4,-16-(10*8)(r28) nop lfd f5,-16-(9*8)(r28) lfd f6,-16-(8*8)(r28) lfd f7,-16-(7*8)(r28) lfd f8,-16-(6*8)(r28) nop lfd f9,-16-(5*8)(r28) lfd f10,-16-(4*8)(r28) lfd f11,-16-(3*8)(r28) lfd f12,-16-(2*8)(r28) nop lfd f13,-16-(1*8)(r28) L2: /* Make the call. */ bctrl lwz r2, 20(r1) /* Now, deal with the return value. */ mtcrf 0x01, r31 bt 30, L(done_return_value) bt 29, L(fp_return_value) stw r3, 0(r30) bf 28, L(done_return_value) stw r4, 4(r30) /* Fall through... */ L(done_return_value): /* Restore the registers we used and return. */ mr r1, r28 lwz r0, 8(r28) lwz r28,-16(r1) mtlr r0 lwz r29,-12(r1) lwz r30, -8(r1) lwz r31, -4(r1) blr L(fp_return_value): bf 28, L(float_return_value) stfd f1, 0(r30) b L(done_return_value) L(float_return_value): stfs f1, 0(r30) b L(done_return_value) #endif .long 0 .byte 0,0,0,1,128,4,0,0 /* END(ffi_call_AIX) */ .csect .text[PR] .align 2 .globl ffi_call_DARWIN .globl .ffi_call_DARWIN .csect ffi_call_DARWIN[DS] ffi_call_DARWIN: #ifdef __64BIT__ .llong .ffi_call_DARWIN, TOC[tc0], 0 #else .long .ffi_call_DARWIN, TOC[tc0], 0 #endif .csect .text[PR] .ffi_call_DARWIN: blr .long 0 .byte 0,0,0,0,0,0,0,0 /* END(ffi_call_DARWIN) */ polyml-5.7.1/libffi/src/powerpc/asm.h0000644000175000017500000001032413204034553016431 0ustar daviddavid/* ----------------------------------------------------------------------- asm.h - Copyright (c) 1998 Geoffrey Keating PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define ASM_GLOBAL_DIRECTIVE .globl #define C_SYMBOL_NAME(name) name /* Macro for a label. */ #ifdef __STDC__ #define C_LABEL(name) name##: #else #define C_LABEL(name) name/**/: #endif /* This seems to always be the case on PPC. */ #define ALIGNARG(log2) log2 /* For ELF we need the `.type' directive to make shared libs work right. */ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; #define ASM_SIZE_DIRECTIVE(name) .size name,.-name /* If compiled for profiling, call `_mcount' at the start of each function. */ #ifdef PROF /* The mcount code relies on the return address being on the stack to locate our caller and so it can restore it; so store one just for its benefit. */ #ifdef PIC #define CALL_MCOUNT \ .pushsection; \ .section ".data"; \ .align ALIGNARG(2); \ 0:.long 0; \ .previous; \ mflr %r0; \ stw %r0,4(%r1); \ bl _GLOBAL_OFFSET_TABLE_@local-4; \ mflr %r11; \ lwz %r0,0b@got(%r11); \ bl JUMPTARGET(_mcount); #else /* PIC */ #define CALL_MCOUNT \ .section ".data"; \ .align ALIGNARG(2); \ 0:.long 0; \ .previous; \ mflr %r0; \ lis %r11,0b@ha; \ stw %r0,4(%r1); \ addi %r0,%r11,0b@l; \ bl JUMPTARGET(_mcount); #endif /* PIC */ #else /* PROF */ #define CALL_MCOUNT /* Do nothing. */ #endif /* PROF */ #define ENTRY(name) \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ .align ALIGNARG(2); \ C_LABEL(name) \ CALL_MCOUNT #define EALIGN_W_0 /* No words to insert. */ #define EALIGN_W_1 nop #define EALIGN_W_2 nop;nop #define EALIGN_W_3 nop;nop;nop #define EALIGN_W_4 EALIGN_W_3;nop #define EALIGN_W_5 EALIGN_W_4;nop #define EALIGN_W_6 EALIGN_W_5;nop #define EALIGN_W_7 EALIGN_W_6;nop /* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes past a 2^align boundary. */ #ifdef PROF #define EALIGN(name, alignt, words) \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ .align ALIGNARG(2); \ C_LABEL(name) \ CALL_MCOUNT \ b 0f; \ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ 0: #else /* PROF */ #define EALIGN(name, alignt, words) \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ C_LABEL(name) #endif #define END(name) \ ASM_SIZE_DIRECTIVE(name) #ifdef PIC #define JUMPTARGET(name) name##@plt #else #define JUMPTARGET(name) name #endif /* Local labels stripped out by the linker. */ #define L(x) .L##x polyml-5.7.1/libffi/src/powerpc/ppc_closure.S0000644000175000017500000001715613204034553020154 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.h - Copyright (c) 2003 Jakub Jelinek Copyright (c) 2008 Red Hat, Inc. PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #include .file "ppc_closure.S" #ifndef POWERPC64 ENTRY(ffi_closure_SYSV) .LFB1: stwu %r1,-144(%r1) .LCFI0: mflr %r0 .LCFI1: stw %r0,148(%r1) # we want to build up an areas for the parameters passed # in registers (both floating point and integer) # so first save gpr 3 to gpr 10 (aligned to 4) stw %r3, 16(%r1) stw %r4, 20(%r1) stw %r5, 24(%r1) stw %r6, 28(%r1) stw %r7, 32(%r1) stw %r8, 36(%r1) stw %r9, 40(%r1) stw %r10,44(%r1) #ifndef __NO_FPRS__ # next save fpr 1 to fpr 8 (aligned to 8) stfd %f1, 48(%r1) stfd %f2, 56(%r1) stfd %f3, 64(%r1) stfd %f4, 72(%r1) stfd %f5, 80(%r1) stfd %f6, 88(%r1) stfd %f7, 96(%r1) stfd %f8, 104(%r1) #endif # set up registers for the routine that actually does the work # get the context pointer from the trampoline mr %r3,%r11 # now load up the pointer to the result storage addi %r4,%r1,112 # now load up the pointer to the saved gpr registers addi %r5,%r1,16 # now load up the pointer to the saved fpr registers */ addi %r6,%r1,48 # now load up the pointer to the outgoing parameter # stack in the previous frame # i.e. the previous frame pointer + 8 addi %r7,%r1,152 # make the call bl ffi_closure_helper_SYSV@local .Lret: # now r3 contains the return type # so use it to look up in a table # so we know how to deal with each type # look up the proper starting point in table # by using return type as offset mflr %r4 # move address of .Lret to r4 slwi %r3,%r3,4 # now multiply return type by 16 addi %r4, %r4, .Lret_type0 - .Lret lwz %r0,148(%r1) add %r3,%r3,%r4 # add contents of table to table address mtctr %r3 bctr # jump to it .LFE1: # Each of the ret_typeX code fragments has to be exactly 16 bytes long # (4 instructions). For cache effectiveness we align to a 16 byte boundary # first. .align 4 # case FFI_TYPE_VOID .Lret_type0: mtlr %r0 addi %r1,%r1,144 blr nop # case FFI_TYPE_INT lwz %r3,112+0(%r1) mtlr %r0 .Lfinish: addi %r1,%r1,144 blr # case FFI_TYPE_FLOAT #ifndef __NO_FPRS__ lfs %f1,112+0(%r1) mtlr %r0 addi %r1,%r1,144 #else nop nop nop #endif blr # case FFI_TYPE_DOUBLE #ifndef __NO_FPRS__ lfd %f1,112+0(%r1) mtlr %r0 addi %r1,%r1,144 #else nop nop nop #endif blr # case FFI_TYPE_LONGDOUBLE #ifndef __NO_FPRS__ lfd %f1,112+0(%r1) lfd %f2,112+8(%r1) mtlr %r0 b .Lfinish #else nop nop nop blr #endif # case FFI_TYPE_UINT8 #ifdef __LITTLE_ENDIAN__ lbz %r3,112+0(%r1) #else lbz %r3,112+3(%r1) #endif mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_SINT8 #ifdef __LITTLE_ENDIAN__ lbz %r3,112+0(%r1) #else lbz %r3,112+3(%r1) #endif extsb %r3,%r3 mtlr %r0 b .Lfinish # case FFI_TYPE_UINT16 #ifdef __LITTLE_ENDIAN__ lhz %r3,112+0(%r1) #else lhz %r3,112+2(%r1) #endif mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_SINT16 #ifdef __LITTLE_ENDIAN__ lha %r3,112+0(%r1) #else lha %r3,112+2(%r1) #endif mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_UINT32 lwz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_SINT32 lwz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_UINT64 lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) mtlr %r0 b .Lfinish # case FFI_TYPE_SINT64 lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) mtlr %r0 b .Lfinish # case FFI_TYPE_STRUCT mtlr %r0 addi %r1,%r1,144 blr nop # case FFI_TYPE_POINTER lwz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_TYPE_UINT128 lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) lwz %r5,112+8(%r1) b .Luint128 # The return types below are only used when the ABI type is FFI_SYSV. # case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct. lbz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct. lhz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct. lwz %r3,112+0(%r1) #ifdef __LITTLE_ENDIAN__ mtlr %r0 addi %r1,%r1,144 blr #else srwi %r3,%r3,8 mtlr %r0 b .Lfinish #endif # case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct. lwz %r3,112+0(%r1) mtlr %r0 addi %r1,%r1,144 blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct. lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) #ifdef __LITTLE_ENDIAN__ mtlr %r0 b .Lfinish #else li %r5,24 b .Lstruct567 #endif # case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct. lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) #ifdef __LITTLE_ENDIAN__ mtlr %r0 b .Lfinish #else li %r5,16 b .Lstruct567 #endif # case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct. lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) #ifdef __LITTLE_ENDIAN__ mtlr %r0 b .Lfinish #else li %r5,8 b .Lstruct567 #endif # case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct. lwz %r3,112+0(%r1) lwz %r4,112+4(%r1) mtlr %r0 b .Lfinish #ifndef __LITTLE_ENDIAN__ .Lstruct567: subfic %r6,%r5,32 srw %r4,%r4,%r5 slw %r6,%r3,%r6 srw %r3,%r3,%r5 or %r4,%r6,%r4 mtlr %r0 addi %r1,%r1,144 blr #endif .Luint128: lwz %r6,112+12(%r1) mtlr %r0 addi %r1,%r1,144 blr END(ffi_closure_SYSV) .section ".eh_frame",EH_FRAME_FLAGS,@progbits .Lframe1: .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry .LSCIE1: .4byte 0x0 # CIE Identifier Tag .byte 0x1 # CIE Version #if defined _RELOCATABLE || defined __PIC__ .ascii "zR\0" # CIE Augmentation #else .ascii "\0" # CIE Augmentation #endif .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x41 # CIE RA Column #if defined _RELOCATABLE || defined __PIC__ .uleb128 0x1 # Augmentation size .byte 0x1b # FDE Encoding (pcrel sdata4) #endif .byte 0xc # DW_CFA_def_cfa .uleb128 0x1 .uleb128 0x0 .align 2 .LECIE1: .LSFDE1: .4byte .LEFDE1-.LASFDE1 # FDE Length .LASFDE1: .4byte .LASFDE1-.Lframe1 # FDE CIE offset #if defined _RELOCATABLE || defined __PIC__ .4byte .LFB1-. # FDE initial location #else .4byte .LFB1 # FDE initial location #endif .4byte .LFE1-.LFB1 # FDE address range #if defined _RELOCATABLE || defined __PIC__ .uleb128 0x0 # Augmentation size #endif .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI0-.LFB1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 144 .byte 0x4 # DW_CFA_advance_loc4 .4byte .LCFI1-.LCFI0 .byte 0x11 # DW_CFA_offset_extended_sf .uleb128 0x41 .sleb128 -1 .align 2 .LEFDE1: #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif #endif polyml-5.7.1/libffi/src/powerpc/darwin.S0000644000175000017500000002563713204034553017125 0ustar daviddavid/* ----------------------------------------------------------------------- darwin.S - Copyright (c) 2000 John Hornkvist Copyright (c) 2004, 2010 Free Software Foundation, Inc. PowerPC Assembly glue. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #if defined(__ppc64__) #define MODE_CHOICE(x, y) y #else #define MODE_CHOICE(x, y) x #endif #define machine_choice MODE_CHOICE(ppc7400,ppc64) ; Define some pseudo-opcodes for size-independent load & store of GPRs ... #define lgu MODE_CHOICE(lwzu, ldu) #define lg MODE_CHOICE(lwz,ld) #define sg MODE_CHOICE(stw,std) #define sgu MODE_CHOICE(stwu,stdu) #define sgux MODE_CHOICE(stwux,stdux) ; ... and the size of GPRs and their storage indicator. #define GPR_BYTES MODE_CHOICE(4,8) #define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ #define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ ; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. #define LINKAGE_SIZE MODE_CHOICE(24,48) #define PARAM_AREA MODE_CHOICE(32,64) #define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ /* If there is any FP stuff we make space for all of the regs. */ #define SAVED_FPR_COUNT 13 #define FPR_SIZE 8 #define RESULT_BYTES 16 /* This should be kept in step with the same value in ffi_darwin.c. */ #define ASM_NEEDS_REGISTERS 4 #define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES) #include #include #define JUMPTARGET(name) name #define L(x) x .text .align 2 .globl _ffi_prep_args .align 2 .globl _ffi_call_DARWIN /* We arrive here with: r3 = ptr to extended cif. r4 = -bytes. r5 = cif flags. r6 = ptr to return value. r7 = fn pointer (user func). r8 = fn pointer (ffi_prep_args). r9 = ffi_type* for the ret val. */ _ffi_call_DARWIN: Lstartcode: mr r12,r8 /* We only need r12 until the call, so it does not have to be saved. */ LFB1: /* Save the old stack pointer as AP. */ mr r8,r1 LCFI0: /* Save the retval type in parents frame. */ sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8) /* Allocate the stack space we need. */ sgux r1,r1,r4 /* Save registers we use. */ mflr r9 sg r9,SAVED_LR_OFFSET(r8) sg r28,-(4 * GPR_BYTES)(r8) sg r29,-(3 * GPR_BYTES)(r8) sg r30,-(2 * GPR_BYTES)(r8) sg r31,-( GPR_BYTES)(r8) #if !defined(POWERPC_DARWIN) /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ sg r2,(5 * GPR_BYTES)(r1) #endif LCFI1: /* Save arguments over call. */ mr r31,r5 /* flags, */ mr r30,r6 /* rvalue, */ mr r29,r7 /* function address, */ mr r28,r8 /* our AP. */ LCFI2: /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */ mr r4,r1 li r9,0 mtctr r12 /* r12 holds address of _ffi_prep_args. */ bctrl #if !defined(POWERPC_DARWIN) /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ lg r2,(5 * GPR_BYTES)(r1) #endif /* Now do the call. Set up cr1 with bits 4-7 of the flags. */ mtcrf 0x40,r31 /* Get the address to call into CTR. */ mtctr r29 /* Load all those argument registers. We have set up a nice stack frame, just load it into registers. */ lg r3, (LINKAGE_SIZE )(r1) lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1) lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1) lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1) nop lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1) lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1) lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1) lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1) L1: /* ... Load all the FP registers. */ bf 6,L2 /* No floats to load. */ lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) nop lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) nop lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) nop lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) L2: mr r12,r29 /* Put the target address in r12 as specified. */ mtctr r12 nop nop /* Make the call. */ bctrl /* Now, deal with the return value. */ /* m64 structure returns can occupy the same set of registers as would be used to pass such a structure as arg0 - so take care not to step on any possibly hot regs. */ /* Get the flags.. */ mtcrf 0x03,r31 ; we need c6 & cr7 now. ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref. bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT /* OK, so we have a struct. */ #if defined(__ppc64__) bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case /* OK, we have to map the return back to a mem struct. We are about to trample the parents param area, so recover the return type. r29 is free, since the call is done. */ lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28) sg r3, (LINKAGE_SIZE )(r28) sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28) sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28) sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28) nop sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28) sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28) sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28) sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) /* OK, so do the block move - we trust that memcpy will not trample the fprs... */ mr r3,r30 ; dest addi r4,r28,LINKAGE_SIZE ; source /* The size is a size_t, should be long. */ lg r5,0(r29) /* Figure out small structs */ cmpi 0,r5,4 bgt L3 ; 1, 2 and 4 bytes have special rules. cmpi 0,r5,3 beq L3 ; not 3 addi r4,r4,8 subf r4,r5,r4 L3: bl _memcpy /* ... do we need the FP registers? - recover the flags.. */ mtcrf 0x03,r31 ; we need c6 & cr7 now. bf 29,L(done_return_value) /* No floats in the struct. */ stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) nop stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) nop stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) nop stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) mr r3,r29 ; ffi_type * mr r4,r30 ; dest addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs xor r6,r6,r6 sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter. bl _darwin64_struct_floats_to_mem b L(done_return_value) #else stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes. #endif b L(done_return_value) L(fp_return_value): /* Do we have long double to store? */ bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS stfd f1,0(r30) stfd f2,FPR_SIZE(r30) b L(done_return_value) L(fd_return_value): /* Do we have double to store? */ bf 28,L(float_return_value) stfd f1,0(r30) b L(done_return_value) L(float_return_value): /* We only have a float to store. */ stfs f1,0(r30) b L(done_return_value) L(scalar_return_value): bt 29,L(fp_return_value) ; FLAG_RETURNS_FP ; ffi_arg is defined as unsigned long. sg r3,0(r30) ; Save the reg. bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS #if defined(__ppc64__) L(maybe_return_128): std r3,0(r30) bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS std r4,8(r30) #else stw r4,4(r30) #endif /* Fall through. */ /* We want this at the end to simplify eh epilog computation. */ L(done_return_value): /* Restore the registers we used and return. */ lg r29,SAVED_LR_OFFSET(r28) ; epilog lg r31,-(1 * GPR_BYTES)(r28) mtlr r29 lg r30,-(2 * GPR_BYTES)(r28) lg r29,-(3 * GPR_BYTES)(r28) lg r28,-(4 * GPR_BYTES)(r28) lg r1,0(r1) blr LFE1: .align 1 /* END(_ffi_call_DARWIN) */ /* Provide a null definition of _ffi_call_AIX. */ .text .globl _ffi_call_AIX .align 2 _ffi_call_AIX: blr /* END(_ffi_call_AIX) */ /* EH stuff. */ #define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support EH_frame1: .set L$set$0,LECIE1-LSCIE1 .long L$set$0 ; Length of Common Information Entry LSCIE1: .long 0x0 ; CIE Identifier Tag .byte 0x1 ; CIE Version .ascii "zR\0" ; CIE Augmentation .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor .byte 0x41 ; CIE RA Column .byte 0x1 ; uleb128 0x1; Augmentation size .byte 0x10 ; FDE Encoding (pcrel) .byte 0xc ; DW_CFA_def_cfa .byte 0x1 ; uleb128 0x1 .byte 0x0 ; uleb128 0x0 .align LOG2_GPR_BYTES LECIE1: .globl _ffi_call_DARWIN.eh _ffi_call_DARWIN.eh: LSFDE1: .set L$set$1,LEFDE1-LASFDE1 .long L$set$1 ; FDE Length LASFDE1: .long LASFDE1-EH_frame1 ; FDE CIE offset .g_long Lstartcode-. ; FDE initial location .set L$set$3,LFE1-Lstartcode .g_long L$set$3 ; FDE address range .byte 0x0 ; uleb128 0x0; Augmentation size .byte 0x4 ; DW_CFA_advance_loc4 .set L$set$4,LCFI0-Lstartcode .long L$set$4 .byte 0xd ; DW_CFA_def_cfa_register .byte 0x08 ; uleb128 0x08 .byte 0x4 ; DW_CFA_advance_loc4 .set L$set$5,LCFI1-LCFI0 .long L$set$5 .byte 0x11 ; DW_CFA_offset_extended_sf .byte 0x41 ; uleb128 0x41 .byte 0x7e ; sleb128 -2 .byte 0x9f ; DW_CFA_offset, column 0x1f .byte 0x1 ; uleb128 0x1 .byte 0x9e ; DW_CFA_offset, column 0x1e .byte 0x2 ; uleb128 0x2 .byte 0x9d ; DW_CFA_offset, column 0x1d .byte 0x3 ; uleb128 0x3 .byte 0x9c ; DW_CFA_offset, column 0x1c .byte 0x4 ; uleb128 0x4 .byte 0x4 ; DW_CFA_advance_loc4 .set L$set$6,LCFI2-LCFI1 .long L$set$6 .byte 0xd ; DW_CFA_def_cfa_register .byte 0x1c ; uleb128 0x1c .align LOG2_GPR_BYTES LEFDE1: .align 1 polyml-5.7.1/libffi/src/arm/0000755000175000017500000000000013204034553014600 5ustar daviddavidpolyml-5.7.1/libffi/src/arm/ffitarget.h0000644000175000017500000000446613204034553016736 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 2010 CodeSourcery Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for ARM. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_VFP, FFI_LAST_ABI, #ifdef __ARM_PCS_VFP FFI_DEFAULT_ABI = FFI_VFP, #else FFI_DEFAULT_ABI = FFI_SYSV, #endif } ffi_abi; #endif #define FFI_EXTRA_CIF_FIELDS \ int vfp_used; \ short vfp_reg_free, vfp_nargs; \ signed char vfp_args[16] \ /* Internally used. */ #define FFI_TYPE_STRUCT_VFP_FLOAT (FFI_TYPE_LAST + 1) #define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2) #define FFI_TARGET_SPECIFIC_VARIADIC /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 20 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/arm/ffi.c0000644000175000017500000006216113204034553015516 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2011 Timothy Wall Copyright (c) 2011 Plausible Labs Cooperative, Inc. Copyright (c) 2011 Anthony Green Copyright (c) 2011 Free Software Foundation Copyright (c) 1998, 2008, 2011 Red Hat, Inc. ARM Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* Forward declares. */ static int vfp_type_p (ffi_type *); static void layout_vfp_args (ffi_cif *); int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space); int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space); static char* ffi_align(ffi_type **p_arg, char *argp) { /* Align if necessary */ register size_t alignment = (*p_arg)->alignment; if (alignment < 4) { alignment = 4; } #ifdef _WIN32_WCE if (alignment > 4) { alignment = 4; } #endif if ((alignment - 1) & (unsigned) argp) { argp = (char *) ALIGN(argp, alignment); } if ((*p_arg)->type == FFI_TYPE_STRUCT) { argp = (char *) ALIGN(argp, 4); } return argp; } static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack) { register char* argp = stack; register ffi_type **p_arg = arg_type; register void **p_argv = arg; register size_t z = (*p_arg)->size; if (z < sizeof(int)) { z = sizeof(int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; case FFI_TYPE_STRUCT: memcpy(argp, *p_argv, (*p_arg)->size); break; default: FFI_ASSERT(0); } } else if (z == sizeof(int)) { if ((*p_arg)->type == FFI_TYPE_FLOAT) *(float *) argp = *(float *)(* p_argv); else *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); } else if (z == sizeof(double) && (*p_arg)->type == FFI_TYPE_DOUBLE) { *(double *) argp = *(double *)(* p_argv); } else { memcpy(argp, *p_argv, z); } return z; } /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments The vfp_space parameter is the load area for VFP regs, the return value is cif->vfp_used (word bitset of VFP regs used for passing arguments). These are only used for the VFP hard-float ABI. */ int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space) { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; argp = stack; if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { *(void **) argp = ecif->rvalue; argp += 4; } p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) { argp = ffi_align(p_arg, argp); argp += ffi_put_arg(p_arg, p_argv, argp); } return 0; } int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space) { register unsigned int i, vi = 0; register void **p_argv; register char *argp, *regp, *eo_regp; register ffi_type **p_arg; char stack_used = 0; char done_with_regs = 0; char is_vfp_type; // make sure we are using FFI_VFP FFI_ASSERT(ecif->cif->abi == FFI_VFP); /* the first 4 words on the stack are used for values passed in core * registers. */ regp = stack; eo_regp = argp = regp + 16; /* if the function returns an FFI_TYPE_STRUCT in memory, that address is * passed in r0 to the function */ if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { *(void **) regp = ecif->rvalue; regp += 4; } p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) { is_vfp_type = vfp_type_p (*p_arg); /* Allocated in VFP registers. */ if(vi < ecif->cif->vfp_nargs && is_vfp_type) { char *vfp_slot = (char *)(vfp_space + ecif->cif->vfp_args[vi++]); ffi_put_arg(p_arg, p_argv, vfp_slot); continue; } /* Try allocating in core registers. */ else if (!done_with_regs && !is_vfp_type) { char *tregp = ffi_align(p_arg, regp); size_t size = (*p_arg)->size; size = (size < 4)? 4 : size; // pad /* Check if there is space left in the aligned register area to place * the argument */ if(tregp + size <= eo_regp) { regp = tregp + ffi_put_arg(p_arg, p_argv, tregp); done_with_regs = (regp == argp); // ensure we did not write into the stack area FFI_ASSERT(regp <= argp); continue; } /* In case there are no arguments in the stack area yet, the argument is passed in the remaining core registers and on the stack. */ else if (!stack_used) { stack_used = 1; done_with_regs = 1; argp = tregp + ffi_put_arg(p_arg, p_argv, tregp); FFI_ASSERT(eo_regp < argp); continue; } } /* Base case, arguments are passed on the stack */ stack_used = 1; argp = ffi_align(p_arg, argp); argp += ffi_put_arg(p_arg, p_argv, argp); } /* Indicate the VFP registers used. */ return ecif->cif->vfp_used; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { int type_code; /* Round the stack up to a multiple of 8 bytes. This isn't needed everywhere, but it is on some platforms, and it doesn't harm anything when it isn't needed. */ cif->bytes = (cif->bytes + 7) & ~7; /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = (unsigned) FFI_TYPE_SINT64; break; case FFI_TYPE_STRUCT: if (cif->abi == FFI_VFP && (type_code = vfp_type_p (cif->rtype)) != 0) { /* A Composite Type passed in VFP registers, either FFI_TYPE_STRUCT_VFP_FLOAT or FFI_TYPE_STRUCT_VFP_DOUBLE. */ cif->flags = (unsigned) type_code; } else if (cif->rtype->size <= 4) /* A Composite Type not larger than 4 bytes is returned in r0. */ cif->flags = (unsigned)FFI_TYPE_INT; else /* A Composite Type larger than 4 bytes, or whose size cannot be determined statically ... is stored in memory at an address passed [in r0]. */ cif->flags = (unsigned)FFI_TYPE_STRUCT; break; default: cif->flags = FFI_TYPE_INT; break; } /* Map out the register placements of VFP register args. The VFP hard-float calling conventions are slightly more sophisticated than the base calling conventions, so we do it here instead of in ffi_prep_args(). */ if (cif->abi == FFI_VFP) layout_vfp_args (cif); return FFI_OK; } /* Perform machine dependent cif processing for variadic calls */ ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { /* VFP variadic calls actually use the SYSV ABI */ if (cif->abi == FFI_VFP) cif->abi = FFI_SYSV; return ffi_prep_cif_machdep(cif); } /* Prototypes for assembly functions, in sysv.S */ extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; int small_struct = (cif->flags == FFI_TYPE_INT && cif->rtype->type == FFI_TYPE_STRUCT); int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE); unsigned int temp; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && (cif->flags == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else if (small_struct) ecif.rvalue = &temp; else if (vfp_struct) { /* Largest case is double x 4. */ ecif.rvalue = alloca(32); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); break; case FFI_VFP: #ifdef __ARM_EABI__ ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); break; #endif default: FFI_ASSERT(0); break; } if (small_struct) { FFI_ASSERT(rvalue != NULL); memcpy (rvalue, &temp, cif->rtype->size); } else if (vfp_struct) { FFI_ASSERT(rvalue != NULL); memcpy (rvalue, ecif.rvalue, cif->rtype->size); } } /** private members **/ static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, void** args, ffi_cif* cif, float *vfp_stack); static void ffi_prep_incoming_args_VFP (char *stack, void **ret, void** args, ffi_cif* cif, float *vfp_stack); void ffi_closure_SYSV (ffi_closure *); void ffi_closure_VFP (ffi_closure *); /* This function is jumped to by the trampoline */ unsigned int FFI_HIDDEN ffi_closure_inner (ffi_closure *closure, void **respp, void *args, void *vfp_args) { // our various things... ffi_cif *cif; void **arg_area; cif = closure->cif; arg_area = (void**) alloca (cif->nargs * sizeof (void*)); /* this call will initialize ARG_AREA, such that each * element in that array points to the corresponding * value on the stack; and if the function returns * a structure, it will re-set RESP to point to the * structure return address. */ if (cif->abi == FFI_VFP) ffi_prep_incoming_args_VFP(args, respp, arg_area, cif, vfp_args); else ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); (closure->fun) (cif, *respp, arg_area, closure->user_data); return cif->flags; } /*@-exportheader@*/ static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, ffi_cif *cif, /* Used only under VFP hard-float ABI. */ float *vfp_stack) /*@=exportheader@*/ { register unsigned int i; register void **p_argv; register char *argp; register ffi_type **p_arg; argp = stack; if ( cif->flags == FFI_TYPE_STRUCT ) { *rvalue = *(void **) argp; argp += 4; } p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { size_t z; argp = ffi_align(p_arg, argp); z = (*p_arg)->size; /* because we're little endian, this is what it turns into. */ *p_argv = (void*) argp; p_argv++; argp += z; } return; } /*@-exportheader@*/ static void ffi_prep_incoming_args_VFP(char *stack, void **rvalue, void **avalue, ffi_cif *cif, /* Used only under VFP hard-float ABI. */ float *vfp_stack) /*@=exportheader@*/ { register unsigned int i, vi = 0; register void **p_argv; register char *argp, *regp, *eo_regp; register ffi_type **p_arg; char done_with_regs = 0; char stack_used = 0; char is_vfp_type; FFI_ASSERT(cif->abi == FFI_VFP); regp = stack; eo_regp = argp = regp + 16; if ( cif->flags == FFI_TYPE_STRUCT ) { *rvalue = *(void **) regp; regp += 4; } p_argv = avalue; for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { size_t z; is_vfp_type = vfp_type_p (*p_arg); if(vi < cif->vfp_nargs && is_vfp_type) { *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]); continue; } else if (!done_with_regs && !is_vfp_type) { char* tregp = ffi_align(p_arg, regp); z = (*p_arg)->size; z = (z < 4)? 4 : z; // pad /* if the arguments either fits into the registers or uses registers * and stack, while we haven't read other things from the stack */ if(tregp + z <= eo_regp || !stack_used) { /* because we're little endian, this is what it turns into. */ *p_argv = (void*) tregp; p_argv++; regp = tregp + z; // if we read past the last core register, make sure we have not read // from the stack before and continue reading after regp if(regp > eo_regp) { if(stack_used) { abort(); // we should never read past the end of the register // are if the stack is already in use } argp = regp; } if(regp >= eo_regp) { done_with_regs = 1; stack_used = 1; } continue; } } stack_used = 1; argp = ffi_align(p_arg, argp); z = (*p_arg)->size; /* because we're little endian, this is what it turns into. */ *p_argv = (void*) argp; p_argv++; argp += z; } return; } /* How to make a trampoline. */ extern unsigned int ffi_arm_trampoline[3]; #if FFI_EXEC_TRAMPOLINE_TABLE #include #include #include #include extern void *ffi_closure_trampoline_table_page; typedef struct ffi_trampoline_table ffi_trampoline_table; typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry; struct ffi_trampoline_table { /* contiguous writable and executable pages */ vm_address_t config_page; vm_address_t trampoline_page; /* free list tracking */ uint16_t free_count; ffi_trampoline_table_entry *free_list; ffi_trampoline_table_entry *free_list_pool; ffi_trampoline_table *prev; ffi_trampoline_table *next; }; struct ffi_trampoline_table_entry { void *(*trampoline)(); ffi_trampoline_table_entry *next; }; /* Override the standard architecture trampoline size */ // XXX TODO - Fix #undef FFI_TRAMPOLINE_SIZE #define FFI_TRAMPOLINE_SIZE 12 /* The trampoline configuration is placed at 4080 bytes prior to the trampoline's entry point */ #define FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc) ((void **) (((uint8_t *) codeloc) - 4080)); /* The first 16 bytes of the config page are unused, as they are unaddressable from the trampoline page. */ #define FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET 16 /* Total number of trampolines that fit in one trampoline table */ #define FFI_TRAMPOLINE_COUNT ((PAGE_SIZE - FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) / FFI_TRAMPOLINE_SIZE) static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER; static ffi_trampoline_table *ffi_trampoline_tables = NULL; static ffi_trampoline_table * ffi_trampoline_table_alloc () { ffi_trampoline_table *table = NULL; /* Loop until we can allocate two contiguous pages */ while (table == NULL) { vm_address_t config_page = 0x0; kern_return_t kt; /* Try to allocate two pages */ kt = vm_allocate (mach_task_self (), &config_page, PAGE_SIZE*2, VM_FLAGS_ANYWHERE); if (kt != KERN_SUCCESS) { fprintf(stderr, "vm_allocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); break; } /* Now drop the second half of the allocation to make room for the trampoline table */ vm_address_t trampoline_page = config_page+PAGE_SIZE; kt = vm_deallocate (mach_task_self (), trampoline_page, PAGE_SIZE); if (kt != KERN_SUCCESS) { fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); break; } /* Remap the trampoline table to directly follow the config page */ vm_prot_t cur_prot; vm_prot_t max_prot; kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_SIZE, 0x0, FALSE, mach_task_self (), (vm_address_t) &ffi_closure_trampoline_table_page, FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE); /* If we lost access to the destination trampoline page, drop our config allocation mapping and retry */ if (kt != KERN_SUCCESS) { /* Log unexpected failures */ if (kt != KERN_NO_SPACE) { fprintf(stderr, "vm_remap() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); } vm_deallocate (mach_task_self (), config_page, PAGE_SIZE); continue; } /* We have valid trampoline and config pages */ table = calloc (1, sizeof(ffi_trampoline_table)); table->free_count = FFI_TRAMPOLINE_COUNT; table->config_page = config_page; table->trampoline_page = trampoline_page; /* Create and initialize the free list */ table->free_list_pool = calloc(FFI_TRAMPOLINE_COUNT, sizeof(ffi_trampoline_table_entry)); uint16_t i; for (i = 0; i < table->free_count; i++) { ffi_trampoline_table_entry *entry = &table->free_list_pool[i]; entry->trampoline = (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE)); if (i < table->free_count - 1) entry->next = &table->free_list_pool[i+1]; } table->free_list = table->free_list_pool; } return table; } void * ffi_closure_alloc (size_t size, void **code) { /* Create the closure */ ffi_closure *closure = malloc(size); if (closure == NULL) return NULL; pthread_mutex_lock(&ffi_trampoline_lock); /* Check for an active trampoline table with available entries. */ ffi_trampoline_table *table = ffi_trampoline_tables; if (table == NULL || table->free_list == NULL) { table = ffi_trampoline_table_alloc (); if (table == NULL) { free(closure); return NULL; } /* Insert the new table at the top of the list */ table->next = ffi_trampoline_tables; if (table->next != NULL) table->next->prev = table; ffi_trampoline_tables = table; } /* Claim the free entry */ ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list; ffi_trampoline_tables->free_list = entry->next; ffi_trampoline_tables->free_count--; entry->next = NULL; pthread_mutex_unlock(&ffi_trampoline_lock); /* Initialize the return values */ *code = entry->trampoline; closure->trampoline_table = table; closure->trampoline_table_entry = entry; return closure; } void ffi_closure_free (void *ptr) { ffi_closure *closure = ptr; pthread_mutex_lock(&ffi_trampoline_lock); /* Fetch the table and entry references */ ffi_trampoline_table *table = closure->trampoline_table; ffi_trampoline_table_entry *entry = closure->trampoline_table_entry; /* Return the entry to the free list */ entry->next = table->free_list; table->free_list = entry; table->free_count++; /* If all trampolines within this table are free, and at least one other table exists, deallocate * the table */ if (table->free_count == FFI_TRAMPOLINE_COUNT && ffi_trampoline_tables != table) { /* Remove from the list */ if (table->prev != NULL) table->prev->next = table->next; if (table->next != NULL) table->next->prev = table->prev; /* Deallocate pages */ kern_return_t kt; kt = vm_deallocate (mach_task_self (), table->config_page, PAGE_SIZE); if (kt != KERN_SUCCESS) fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); kt = vm_deallocate (mach_task_self (), table->trampoline_page, PAGE_SIZE); if (kt != KERN_SUCCESS) fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); /* Deallocate free list */ free (table->free_list_pool); free (table); } else if (ffi_trampoline_tables != table) { /* Otherwise, bump this table to the top of the list */ table->prev = NULL; table->next = ffi_trampoline_tables; if (ffi_trampoline_tables != NULL) ffi_trampoline_tables->prev = table; ffi_trampoline_tables = table; } pthread_mutex_unlock (&ffi_trampoline_lock); /* Free the closure */ free (closure); } #else #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ ({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ unsigned char *insns = (unsigned char *)(CTX); \ memcpy (__tramp, ffi_arm_trampoline, sizeof ffi_arm_trampoline); \ *(unsigned int*) &__tramp[12] = __ctx; \ *(unsigned int*) &__tramp[16] = __fun; \ __clear_cache((&__tramp[0]), (&__tramp[19])); /* Clear data mapping. */ \ __clear_cache(insns, insns + 3 * sizeof (unsigned int)); \ /* Clear instruction \ mapping. */ \ }) #endif /* the cif must already be prep'ed */ ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) { void (*closure_func)(ffi_closure*) = NULL; if (cif->abi == FFI_SYSV) closure_func = &ffi_closure_SYSV; #ifdef __ARM_EABI__ else if (cif->abi == FFI_VFP) closure_func = &ffi_closure_VFP; #endif else return FFI_BAD_ABI; #if FFI_EXEC_TRAMPOLINE_TABLE void **config = FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc); config[0] = closure; config[1] = closure_func; #else FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ closure_func, \ codeloc); #endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; return FFI_OK; } /* Below are routines for VFP hard-float support. */ static int rec_vfp_type_p (ffi_type *t, int *elt, int *elnum) { switch (t->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: *elt = (int) t->type; *elnum = 1; return 1; case FFI_TYPE_STRUCT_VFP_FLOAT: *elt = FFI_TYPE_FLOAT; *elnum = t->size / sizeof (float); return 1; case FFI_TYPE_STRUCT_VFP_DOUBLE: *elt = FFI_TYPE_DOUBLE; *elnum = t->size / sizeof (double); return 1; case FFI_TYPE_STRUCT:; { int base_elt = 0, total_elnum = 0; ffi_type **el = t->elements; while (*el) { int el_elt = 0, el_elnum = 0; if (! rec_vfp_type_p (*el, &el_elt, &el_elnum) || (base_elt && base_elt != el_elt) || total_elnum + el_elnum > 4) return 0; base_elt = el_elt; total_elnum += el_elnum; el++; } *elnum = total_elnum; *elt = base_elt; return 1; } default: ; } return 0; } static int vfp_type_p (ffi_type *t) { int elt, elnum; if (rec_vfp_type_p (t, &elt, &elnum)) { if (t->type == FFI_TYPE_STRUCT) { if (elnum == 1) t->type = elt; else t->type = (elt == FFI_TYPE_FLOAT ? FFI_TYPE_STRUCT_VFP_FLOAT : FFI_TYPE_STRUCT_VFP_DOUBLE); } return (int) t->type; } return 0; } static int place_vfp_arg (ffi_cif *cif, ffi_type *t) { short reg = cif->vfp_reg_free; int nregs = t->size / sizeof (float); int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT || t->type == FFI_TYPE_FLOAT) ? 1 : 2); /* Align register number. */ if ((reg & 1) && align == 2) reg++; while (reg + nregs <= 16) { int s, new_used = 0; for (s = reg; s < reg + nregs; s++) { new_used |= (1 << s); if (cif->vfp_used & (1 << s)) { reg += align; goto next_reg; } } /* Found regs to allocate. */ cif->vfp_used |= new_used; cif->vfp_args[cif->vfp_nargs++] = reg; /* Update vfp_reg_free. */ if (cif->vfp_used & (1 << cif->vfp_reg_free)) { reg += nregs; while (cif->vfp_used & (1 << reg)) reg += 1; cif->vfp_reg_free = reg; } return 0; next_reg: ; } // done, mark all regs as used cif->vfp_reg_free = 16; cif->vfp_used = 0xFFFF; return 1; } static void layout_vfp_args (ffi_cif *cif) { int i; /* Init VFP fields */ cif->vfp_used = 0; cif->vfp_nargs = 0; cif->vfp_reg_free = 0; memset (cif->vfp_args, -1, 16); /* Init to -1. */ for (i = 0; i < cif->nargs; i++) { ffi_type *t = cif->arg_types[i]; if (vfp_type_p (t) && place_vfp_arg (cif, t) == 1) { break; } } } polyml-5.7.1/libffi/src/arm/trampoline.S0000644000175000017500000042550413204034553017110 0ustar daviddavid# GENERATED CODE - DO NOT EDIT # This file was generated by src/arm/gentramp.sh # Copyright (c) 2010, Plausible Labs Cooperative, Inc. # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # Software''), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED AS IS'', WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # ----------------------------------------------------------------------- .text .align 12 .globl _ffi_closure_trampoline_table_page _ffi_closure_trampoline_table_page: // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] polyml-5.7.1/libffi/src/arm/sysv.S0000644000175000017500000002456413204034553015743 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc. Copyright (c) 2011 Plausible Labs Cooperative, Inc. ARM Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else #ifdef __USER_LABEL_PREFIX__ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) #else #define CNAME(x) x #endif #ifdef __APPLE__ #define ENTRY(x) .globl _##x; _##x: #else #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): #endif /* __APPLE__ */ #endif #ifdef __ELF__ #define LSYM(x) .x #else #define LSYM(x) x #endif /* Use the SOFTFP return value ABI on Mac OS X, as per the iOS ABI Function Call Guide */ #ifdef __APPLE__ #define __SOFTFP__ #endif /* We need a better way of testing for this, but for now, this is all we can do. */ @ This selects the minimum architecture level required. #define __ARM_ARCH__ 3 #if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) # undef __ARM_ARCH__ # define __ARM_ARCH__ 4 #endif #if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \ || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \ || defined(__ARM_ARCH_5TEJ__) # undef __ARM_ARCH__ # define __ARM_ARCH__ 5 #endif #if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ || defined(__ARM_ARCH_6M__) # undef __ARM_ARCH__ # define __ARM_ARCH__ 6 #endif #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ || defined(__ARM_ARCH_7EM__) # undef __ARM_ARCH__ # define __ARM_ARCH__ 7 #endif #if __ARM_ARCH__ >= 5 # define call_reg(x) blx x #elif defined (__ARM_ARCH_4T__) # define call_reg(x) mov lr, pc ; bx x # if defined(__thumb__) || defined(__THUMB_INTERWORK__) # define __INTERWORKING__ # endif #else # define call_reg(x) mov lr, pc ; mov pc, x #endif /* Conditionally compile unwinder directives. */ #ifdef __ARM_EABI__ #define UNWIND #else #define UNWIND @ #endif .syntax unified #if defined(__thumb__) && !defined(__THUMB_INTERWORK__) #define ARM_FUNC_START(name) \ .text; \ .align 2; \ .thumb; \ .thumb_func; \ ENTRY(name); \ bx pc; \ nop; \ .arm; \ UNWIND .fnstart; \ _L__##name: #else #define ARM_FUNC_START(name) \ .text; \ .align 2; \ .arm; \ ENTRY(name); \ UNWIND .fnstart #endif .macro RETLDM regs=, cond=, dirn=ia #if defined (__INTERWORKING__) .ifc "\regs","" ldr\cond lr, [sp], #4 .else ldm\cond\dirn sp!, {\regs, lr} .endif bx\cond lr #else .ifc "\regs","" ldr\cond pc, [sp], #4 .else ldm\cond\dirn sp!, {\regs, pc} .endif #endif .endm @ r0: ffi_prep_args @ r1: &ecif @ r2: cif->bytes @ r3: fig->flags @ sp+0: ecif.rvalue @ This assumes we are using gas. ARM_FUNC_START(ffi_call_SYSV) @ Save registers stmfd sp!, {r0-r3, fp, lr} UNWIND .save {r0-r3, fp, lr} mov fp, sp UNWIND .setfp fp, sp @ Make room for all of the new args. sub sp, fp, r2 @ Place all of the ffi_prep_args in position mov r0, sp @ r1 already set @ Call ffi_prep_args(stack, &ecif) bl CNAME(ffi_prep_args_SYSV) @ move first 4 parameters in registers ldmia sp, {r0-r3} @ and adjust stack sub lr, fp, sp @ cif->bytes == fp - sp ldr ip, [fp] @ load fn() in advance cmp lr, #16 movhs lr, #16 add sp, sp, lr @ call (fn) (...) call_reg(ip) @ Remove the space we pushed for the args mov sp, fp @ Load r2 with the pointer to storage for the return value ldr r2, [sp, #24] @ Load r3 with the return type code ldr r3, [sp, #12] @ If the return value pointer is NULL, assume no return value. cmp r2, #0 beq LSYM(Lepilogue) @ return INT cmp r3, #FFI_TYPE_INT #if defined(__SOFTFP__) || defined(__ARM_EABI__) cmpne r3, #FFI_TYPE_FLOAT #endif streq r0, [r2] beq LSYM(Lepilogue) @ return INT64 cmp r3, #FFI_TYPE_SINT64 #if defined(__SOFTFP__) || defined(__ARM_EABI__) cmpne r3, #FFI_TYPE_DOUBLE #endif stmiaeq r2, {r0, r1} #if !defined(__SOFTFP__) && !defined(__ARM_EABI__) beq LSYM(Lepilogue) @ return FLOAT cmp r3, #FFI_TYPE_FLOAT stfeqs f0, [r2] beq LSYM(Lepilogue) @ return DOUBLE or LONGDOUBLE cmp r3, #FFI_TYPE_DOUBLE stfeqd f0, [r2] #endif LSYM(Lepilogue): #if defined (__INTERWORKING__) ldmia sp!, {r0-r3,fp, lr} bx lr #else ldmia sp!, {r0-r3,fp, pc} #endif .ffi_call_SYSV_end: UNWIND .fnend #ifdef __ELF__ .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) #endif /* unsigned int FFI_HIDDEN ffi_closure_inner (closure, respp, args) ffi_closure *closure; void **respp; void *args; */ ARM_FUNC_START(ffi_closure_SYSV) UNWIND .pad #16 add ip, sp, #16 stmfd sp!, {ip, lr} UNWIND .save {r0, lr} add r2, sp, #8 UNWIND .pad #16 sub sp, sp, #16 str sp, [sp, #8] add r1, sp, #8 bl CNAME(ffi_closure_inner) cmp r0, #FFI_TYPE_INT beq .Lretint cmp r0, #FFI_TYPE_FLOAT #if defined(__SOFTFP__) || defined(__ARM_EABI__) beq .Lretint #else beq .Lretfloat #endif cmp r0, #FFI_TYPE_DOUBLE #if defined(__SOFTFP__) || defined(__ARM_EABI__) beq .Lretlonglong #else beq .Lretdouble #endif cmp r0, #FFI_TYPE_LONGDOUBLE #if defined(__SOFTFP__) || defined(__ARM_EABI__) beq .Lretlonglong #else beq .Lretlongdouble #endif cmp r0, #FFI_TYPE_SINT64 beq .Lretlonglong .Lclosure_epilogue: add sp, sp, #16 ldmfd sp, {sp, pc} .Lretint: ldr r0, [sp] b .Lclosure_epilogue .Lretlonglong: ldr r0, [sp] ldr r1, [sp, #4] b .Lclosure_epilogue #if !defined(__SOFTFP__) && !defined(__ARM_EABI__) .Lretfloat: ldfs f0, [sp] b .Lclosure_epilogue .Lretdouble: ldfd f0, [sp] b .Lclosure_epilogue .Lretlongdouble: ldfd f0, [sp] b .Lclosure_epilogue #endif .ffi_closure_SYSV_end: UNWIND .fnend #ifdef __ELF__ .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) #endif /* Below are VFP hard-float ABI call and closure implementations. Add VFP FPU directive here. This is only compiled into the library under EABI. */ #ifdef __ARM_EABI__ .fpu vfp @ r0: fn @ r1: &ecif @ r2: cif->bytes @ r3: fig->flags @ sp+0: ecif.rvalue ARM_FUNC_START(ffi_call_VFP) @ Save registers stmfd sp!, {r0-r3, fp, lr} UNWIND .save {r0-r3, fp, lr} mov fp, sp UNWIND .setfp fp, sp @ Make room for all of the new args. sub sp, sp, r2 @ Make room for loading VFP args sub sp, sp, #64 @ Place all of the ffi_prep_args in position mov r0, sp @ r1 already set sub r2, fp, #64 @ VFP scratch space @ Call ffi_prep_args(stack, &ecif, vfp_space) bl CNAME(ffi_prep_args_VFP) @ Load VFP register args if needed cmp r0, #0 mov ip, fp beq LSYM(Lbase_args) @ Load only d0 if possible cmp r0, #3 sub ip, fp, #64 flddle d0, [ip] fldmiadgt ip, {d0-d7} LSYM(Lbase_args): @ move first 4 parameters in registers ldmia sp, {r0-r3} @ and adjust stack sub lr, ip, sp @ cif->bytes == (fp - 64) - sp ldr ip, [fp] @ load fn() in advance cmp lr, #16 movhs lr, #16 add sp, sp, lr @ call (fn) (...) call_reg(ip) @ Remove the space we pushed for the args mov sp, fp @ Load r2 with the pointer to storage for @ the return value ldr r2, [sp, #24] @ Load r3 with the return type code ldr r3, [sp, #12] @ If the return value pointer is NULL, @ assume no return value. cmp r2, #0 beq LSYM(Lepilogue_vfp) cmp r3, #FFI_TYPE_INT streq r0, [r2] beq LSYM(Lepilogue_vfp) cmp r3, #FFI_TYPE_SINT64 stmeqia r2, {r0, r1} beq LSYM(Lepilogue_vfp) cmp r3, #FFI_TYPE_FLOAT fstseq s0, [r2] beq LSYM(Lepilogue_vfp) cmp r3, #FFI_TYPE_DOUBLE fstdeq d0, [r2] beq LSYM(Lepilogue_vfp) cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE fstmiadeq r2, {d0-d3} LSYM(Lepilogue_vfp): RETLDM "r0-r3,fp" .ffi_call_VFP_end: UNWIND .fnend .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) ARM_FUNC_START(ffi_closure_VFP) fstmfdd sp!, {d0-d7} @ r0-r3, then d0-d7 UNWIND .pad #80 add ip, sp, #80 stmfd sp!, {ip, lr} UNWIND .save {r0, lr} add r2, sp, #72 add r3, sp, #8 UNWIND .pad #72 sub sp, sp, #72 str sp, [sp, #64] add r1, sp, #64 bl CNAME(ffi_closure_inner) cmp r0, #FFI_TYPE_INT beq .Lretint_vfp cmp r0, #FFI_TYPE_FLOAT beq .Lretfloat_vfp cmp r0, #FFI_TYPE_DOUBLE cmpne r0, #FFI_TYPE_LONGDOUBLE beq .Lretdouble_vfp cmp r0, #FFI_TYPE_SINT64 beq .Lretlonglong_vfp cmp r0, #FFI_TYPE_STRUCT_VFP_FLOAT beq .Lretfloat_struct_vfp cmp r0, #FFI_TYPE_STRUCT_VFP_DOUBLE beq .Lretdouble_struct_vfp .Lclosure_epilogue_vfp: add sp, sp, #72 ldmfd sp, {sp, pc} .Lretfloat_vfp: flds s0, [sp] b .Lclosure_epilogue_vfp .Lretdouble_vfp: fldd d0, [sp] b .Lclosure_epilogue_vfp .Lretint_vfp: ldr r0, [sp] b .Lclosure_epilogue_vfp .Lretlonglong_vfp: ldmia sp, {r0, r1} b .Lclosure_epilogue_vfp .Lretfloat_struct_vfp: fldmiad sp, {d0-d1} b .Lclosure_epilogue_vfp .Lretdouble_struct_vfp: fldmiad sp, {d0-d3} b .Lclosure_epilogue_vfp .ffi_closure_VFP_end: UNWIND .fnend .size CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP) #endif ENTRY(ffi_arm_trampoline) stmfd sp!, {r0-r3} ldr r0, [pc] ldr pc, [pc] #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",%progbits #endif polyml-5.7.1/libffi/src/arm/gentramp.sh0000755000175000017500000001025613204034553016760 0ustar daviddavid#!/bin/sh # ----------------------------------------------------------------------- # gentramp.sh - Copyright (c) 2010, Plausible Labs Cooperative, Inc. # # ARM Trampoline Page Generator # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # ``Software''), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # ----------------------------------------------------------------------- PROGNAME=$0 # Each trampoline is exactly 3 instructions, or 12 bytes. If any of these values change, # the entire arm trampoline implementation must be updated to match, too. # Size of an individual trampoline, in bytes TRAMPOLINE_SIZE=12 # Page size, in bytes PAGE_SIZE=4096 # Compute the size of the reachable config page; The first 16 bytes of the config page # are unreachable due to our maximum pc-relative ldr offset. PAGE_AVAIL=`expr $PAGE_SIZE - 16` # Compute the number of of available trampolines. TRAMPOLINE_COUNT=`expr $PAGE_AVAIL / $TRAMPOLINE_SIZE` header () { echo "# GENERATED CODE - DO NOT EDIT" echo "# This file was generated by $PROGNAME" echo "" # Write out the license header cat << EOF # Copyright (c) 2010, Plausible Labs Cooperative, Inc. # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # ``Software''), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # ----------------------------------------------------------------------- EOF # Write out the trampoline table, aligned to the page boundary echo ".text" echo ".align 12" echo ".globl _ffi_closure_trampoline_table_page" echo "_ffi_closure_trampoline_table_page:" } # WARNING - Don't modify the trampoline code size without also updating the relevant libffi code trampoline () { cat << END // trampoline // Save to stack stmfd sp!, {r0-r3} // Load the context argument from the config page. // This places the first usable config value at _ffi_closure_trampoline_table-4080 // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. ldr r0, [pc, #-4092] // Load the jump address from the config page. ldr pc, [pc, #-4092] END } main () { # Write out the header header # Write out the trampolines local i=0 while [ $i -lt ${TRAMPOLINE_COUNT} ]; do trampoline local i=`expr $i + 1` done } main polyml-5.7.1/libffi/src/sh64/0000755000175000017500000000000013204034553014605 5ustar daviddavidpolyml-5.7.1/libffi/src/sh64/ffitarget.h0000644000175000017500000000403513204034553016733 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for SuperH - SHmedia. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #define FFI_EXTRA_CIF_FIELDS long long flags2 #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 32 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/sh64/ffi.c0000644000175000017500000002605013204034553015520 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima Copyright (c) 2008 Anthony Green SuperH SHmedia Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #define NGREGARG 8 #define NFREGARG 12 static int return_type (ffi_type *arg) { if (arg->type != FFI_TYPE_STRUCT) return arg->type; /* gcc uses r2 if the result can be packed in on register. */ if (arg->size <= sizeof (UINT8)) return FFI_TYPE_UINT8; else if (arg->size <= sizeof (UINT16)) return FFI_TYPE_UINT16; else if (arg->size <= sizeof (UINT32)) return FFI_TYPE_UINT32; else if (arg->size <= sizeof (UINT64)) return FFI_TYPE_UINT64; return FFI_TYPE_STRUCT; } /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ void ffi_prep_args(char *stack, extended_cif *ecif) { register unsigned int i; register unsigned int avn; register void **p_argv; register char *argp; register ffi_type **p_arg; argp = stack; if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) { *(void **) argp = ecif->rvalue; argp += sizeof (UINT64); } avn = ecif->cif->nargs; p_argv = ecif->avalue; for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) { size_t z; int align; z = (*p_arg)->size; align = (*p_arg)->alignment; if (z < sizeof (UINT32)) { switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(SINT64 *) argp = (SINT64) *(SINT8 *)(*p_argv); break; case FFI_TYPE_UINT8: *(UINT64 *) argp = (UINT64) *(UINT8 *)(*p_argv); break; case FFI_TYPE_SINT16: *(SINT64 *) argp = (SINT64) *(SINT16 *)(*p_argv); break; case FFI_TYPE_UINT16: *(UINT64 *) argp = (UINT64) *(UINT16 *)(*p_argv); break; case FFI_TYPE_STRUCT: memcpy (argp, *p_argv, z); break; default: FFI_ASSERT(0); } argp += sizeof (UINT64); } else if (z == sizeof (UINT32) && align == sizeof (UINT32)) { switch ((*p_arg)->type) { case FFI_TYPE_INT: case FFI_TYPE_SINT32: *(SINT64 *) argp = (SINT64) *(SINT32 *) (*p_argv); break; case FFI_TYPE_FLOAT: case FFI_TYPE_POINTER: case FFI_TYPE_UINT32: case FFI_TYPE_STRUCT: *(UINT64 *) argp = (UINT64) *(UINT32 *) (*p_argv); break; default: FFI_ASSERT(0); break; } argp += sizeof (UINT64); } else if (z == sizeof (UINT64) && align == sizeof (UINT64) && ((int) *p_argv & (sizeof (UINT64) - 1)) == 0) { *(UINT64 *) argp = *(UINT64 *) (*p_argv); argp += sizeof (UINT64); } else { int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); memcpy (argp, *p_argv, z); argp += n * sizeof (UINT64); } } return; } /* Perform machine dependent cif processing */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { int i, j; int size, type; int n, m; int greg; int freg; int fpair = -1; greg = (return_type (cif->rtype) == FFI_TYPE_STRUCT ? 1 : 0); freg = 0; cif->flags2 = 0; for (i = j = 0; i < cif->nargs; i++) { type = (cif->arg_types)[i]->type; switch (type) { case FFI_TYPE_FLOAT: greg++; cif->bytes += sizeof (UINT64) - sizeof (float); if (freg >= NFREGARG - 1) continue; if (fpair < 0) { fpair = freg; freg += 2; } else fpair = -1; cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); break; case FFI_TYPE_DOUBLE: if (greg++ >= NGREGARG && (freg + 1) >= NFREGARG) continue; if ((freg + 1) < NFREGARG) { freg += 2; cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); } else cif->flags2 += FFI_TYPE_INT << (2 * j++); break; default: size = (cif->arg_types)[i]->size; if (size < sizeof (UINT64)) cif->bytes += sizeof (UINT64) - size; n = (size + sizeof (UINT64) - 1) / sizeof (UINT64); if (greg >= NGREGARG) continue; else if (greg + n - 1 >= NGREGARG) greg = NGREGARG; else greg += n; for (m = 0; m < n; m++) cif->flags2 += FFI_TYPE_INT << (2 * j++); break; } } /* Set the return type flag */ switch (cif->rtype->type) { case FFI_TYPE_STRUCT: cif->flags = return_type (cif->rtype); break; case FFI_TYPE_VOID: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: cif->flags = cif->rtype->type; break; default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } /*@-declundef@*/ /*@-exportheader@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), /*@out@*/ extended_cif *, unsigned, unsigned, long long, /*@out@*/ unsigned *, void (*fn)(void)); /*@=declundef@*/ /*@=exportheader@*/ void ffi_call(/*@dependent@*/ ffi_cif *cif, void (*fn)(void), /*@out@*/ void *rvalue, /*@dependent@*/ void **avalue) { extended_cif ecif; UINT64 trvalue; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if (cif->rtype->type == FFI_TYPE_STRUCT && return_type (cif->rtype) != FFI_TYPE_STRUCT) ecif.rvalue = &trvalue; else if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca(cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, cif->flags2, ecif.rvalue, fn); break; default: FFI_ASSERT(0); break; } if (rvalue && cif->rtype->type == FFI_TYPE_STRUCT && return_type (cif->rtype) != FFI_TYPE_STRUCT) memcpy (rvalue, &trvalue, cif->rtype->size); } extern void ffi_closure_SYSV (void); extern void __ic_invalidate (void *line); ffi_status ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp; if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; tramp = (unsigned int *) &closure->tramp[0]; /* Since ffi_closure is an aligned object, the ffi trampoline is called as an SHcompact code. Sigh. SHcompact part: mova @(1,pc),r0; add #1,r0; jmp @r0; nop; SHmedia part: movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0 movi cxt >> 16,r1; shori cxt,r1; blink tr0,r63 */ #ifdef __LITTLE_ENDIAN__ tramp[0] = 0x7001c701; tramp[1] = 0x0009402b; #else tramp[0] = 0xc7017001; tramp[1] = 0x402b0009; #endif tramp[2] = 0xcc000010 | (((UINT32) ffi_closure_SYSV) >> 16) << 10; tramp[3] = 0xc8000010 | (((UINT32) ffi_closure_SYSV) & 0xffff) << 10; tramp[4] = 0x6bf10600; tramp[5] = 0xcc000010 | (((UINT32) codeloc) >> 16) << 10; tramp[6] = 0xc8000010 | (((UINT32) codeloc) & 0xffff) << 10; tramp[7] = 0x4401fff0; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Flush the icache. */ asm volatile ("ocbwb %0,0; synco; icbi %1,0; synci" : : "r" (tramp), "r"(codeloc)); return FFI_OK; } /* Basically the trampoline invokes ffi_closure_SYSV, and on * entry, r3 holds the address of the closure. * After storing the registers that could possibly contain * parameters to be passed into the stack frame and setting * up space for a return value, ffi_closure_SYSV invokes the * following helper function to do most of the work. */ int ffi_closure_helper_SYSV (ffi_closure *closure, UINT64 *rvalue, UINT64 *pgr, UINT64 *pfr, UINT64 *pst) { void **avalue; ffi_type **p_arg; int i, avn; int greg, freg; ffi_cif *cif; int fpair = -1; cif = closure->cif; avalue = alloca (cif->nargs * sizeof (void *)); /* Copy the caller's structure return value address so that the closure returns the data directly to the caller. */ if (return_type (cif->rtype) == FFI_TYPE_STRUCT) { rvalue = (UINT64 *) *pgr; greg = 1; } else greg = 0; freg = 0; cif = closure->cif; avn = cif->nargs; /* Grab the addresses of the arguments from the stack frame. */ for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) { size_t z; void *p; z = (*p_arg)->size; if (z < sizeof (UINT32)) { p = pgr + greg++; switch ((*p_arg)->type) { case FFI_TYPE_SINT8: case FFI_TYPE_UINT8: case FFI_TYPE_SINT16: case FFI_TYPE_UINT16: case FFI_TYPE_STRUCT: #ifdef __LITTLE_ENDIAN__ avalue[i] = p; #else avalue[i] = ((char *) p) + sizeof (UINT32) - z; #endif break; default: FFI_ASSERT(0); } } else if (z == sizeof (UINT32)) { if ((*p_arg)->type == FFI_TYPE_FLOAT) { if (freg < NFREGARG - 1) { if (fpair >= 0) { avalue[i] = (UINT32 *) pfr + fpair; fpair = -1; } else { #ifdef __LITTLE_ENDIAN__ fpair = freg; avalue[i] = (UINT32 *) pfr + (1 ^ freg); #else fpair = 1 ^ freg; avalue[i] = (UINT32 *) pfr + freg; #endif freg += 2; } } else #ifdef __LITTLE_ENDIAN__ avalue[i] = pgr + greg; #else avalue[i] = (UINT32 *) (pgr + greg) + 1; #endif } else #ifdef __LITTLE_ENDIAN__ avalue[i] = pgr + greg; #else avalue[i] = (UINT32 *) (pgr + greg) + 1; #endif greg++; } else if ((*p_arg)->type == FFI_TYPE_DOUBLE) { if (freg + 1 >= NFREGARG) avalue[i] = pgr + greg; else { avalue[i] = pfr + (freg >> 1); freg += 2; } greg++; } else { int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); avalue[i] = pgr + greg; greg += n; } } (closure->fun) (cif, rvalue, avalue, closure->user_data); /* Tell ffi_closure_SYSV how to perform return type promotions. */ return return_type (cif->rtype); } polyml-5.7.1/libffi/src/sh64/sysv.S0000644000175000017500000002665513204034553015753 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2003, 2004, 2006, 2008 Kaz Kojima SuperH SHmedia Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else /* XXX these lose for some platforms, I'm sure. */ #define CNAME(x) x #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): #endif #ifdef __LITTLE_ENDIAN__ #define OFS_FLT 0 #else #define OFS_FLT 4 #endif .section .text..SHmedia32,"ax" # r2: ffi_prep_args # r3: &ecif # r4: bytes # r5: flags # r6: flags2 # r7: rvalue # r8: fn # This assumes we are using gas. .align 5 ENTRY(ffi_call_SYSV) # Save registers .LFB1: addi.l r15, -48, r15 .LCFI0: st.q r15, 40, r32 st.q r15, 32, r31 st.q r15, 24, r30 st.q r15, 16, r29 st.q r15, 8, r28 st.l r15, 4, r18 st.l r15, 0, r14 .LCFI1: add.l r15, r63, r14 .LCFI2: # add r4, r63, r28 add r5, r63, r29 add r6, r63, r30 add r7, r63, r31 add r8, r63, r32 addi r4, (64 + 7), r4 andi r4, ~7, r4 sub.l r15, r4, r15 ptabs/l r2, tr0 add r15, r63, r2 blink tr0, r18 addi r15, 64, r22 movi 0, r0 movi 0, r1 movi -1, r23 pt/l 1f, tr1 bnei/l r29, FFI_TYPE_STRUCT, tr1 ld.l r15, 0, r19 addi r15, 8, r15 addi r0, 1, r0 1: .L_pass: andi r30, 3, r20 shlri r30, 2, r30 pt/l .L_call_it, tr0 pt/l .L_pass_i, tr1 pt/l .L_pass_f, tr2 beqi/l r20, FFI_TYPE_VOID, tr0 beqi/l r20, FFI_TYPE_INT, tr1 beqi/l r20, FFI_TYPE_FLOAT, tr2 .L_pass_d: addi r0, 1, r0 pt/l 3f, tr0 movi 12, r20 bge/l r1, r20, tr0 pt/l .L_pop_d, tr1 pt/l 2f, tr0 blink tr1, r63 2: addi.l r15, 8, r15 3: pt/l .L_pass, tr0 addi r1, 2, r1 blink tr0, r63 .L_pop_d: pt/l .L_pop_d_tbl, tr1 gettr tr1, r20 shlli r1, 2, r21 add r20, r21, r20 ptabs/l r20, tr1 blink tr1, r63 .L_pop_d_tbl: fld.d r15, 0, dr0 blink tr0, r63 fld.d r15, 0, dr2 blink tr0, r63 fld.d r15, 0, dr4 blink tr0, r63 fld.d r15, 0, dr6 blink tr0, r63 fld.d r15, 0, dr8 blink tr0, r63 fld.d r15, 0, dr10 blink tr0, r63 .L_pass_f: addi r0, 1, r0 pt/l 3f, tr0 movi 12, r20 bge/l r1, r20, tr0 pt/l .L_pop_f, tr1 pt/l 2f, tr0 blink tr1, r63 2: addi.l r15, 8, r15 3: pt/l .L_pass, tr0 blink tr0, r63 .L_pop_f: pt/l .L_pop_f_tbl, tr1 pt/l 5f, tr2 gettr tr1, r20 bge/l r23, r63, tr2 add r1, r63, r23 shlli r1, 3, r21 addi r1, 2, r1 add r20, r21, r20 ptabs/l r20, tr1 blink tr1, r63 5: addi r23, 1, r21 movi -1, r23 shlli r21, 3, r21 add r20, r21, r20 ptabs/l r20, tr1 blink tr1, r63 .L_pop_f_tbl: fld.s r15, OFS_FLT, fr0 blink tr0, r63 fld.s r15, OFS_FLT, fr1 blink tr0, r63 fld.s r15, OFS_FLT, fr2 blink tr0, r63 fld.s r15, OFS_FLT, fr3 blink tr0, r63 fld.s r15, OFS_FLT, fr4 blink tr0, r63 fld.s r15, OFS_FLT, fr5 blink tr0, r63 fld.s r15, OFS_FLT, fr6 blink tr0, r63 fld.s r15, OFS_FLT, fr7 blink tr0, r63 fld.s r15, OFS_FLT, fr8 blink tr0, r63 fld.s r15, OFS_FLT, fr9 blink tr0, r63 fld.s r15, OFS_FLT, fr10 blink tr0, r63 fld.s r15, OFS_FLT, fr11 blink tr0, r63 .L_pass_i: pt/l 3f, tr0 movi 8, r20 bge/l r0, r20, tr0 pt/l .L_pop_i, tr1 pt/l 2f, tr0 blink tr1, r63 2: addi.l r15, 8, r15 3: pt/l .L_pass, tr0 addi r0, 1, r0 blink tr0, r63 .L_pop_i: pt/l .L_pop_i_tbl, tr1 gettr tr1, r20 shlli r0, 3, r21 add r20, r21, r20 ptabs/l r20, tr1 blink tr1, r63 .L_pop_i_tbl: ld.q r15, 0, r2 blink tr0, r63 ld.q r15, 0, r3 blink tr0, r63 ld.q r15, 0, r4 blink tr0, r63 ld.q r15, 0, r5 blink tr0, r63 ld.q r15, 0, r6 blink tr0, r63 ld.q r15, 0, r7 blink tr0, r63 ld.q r15, 0, r8 blink tr0, r63 ld.q r15, 0, r9 blink tr0, r63 .L_call_it: # call function pt/l 1f, tr1 bnei/l r29, FFI_TYPE_STRUCT, tr1 add r19, r63, r2 1: add r22, r63, r15 ptabs/l r32, tr0 blink tr0, r18 pt/l .L_ret_i, tr0 pt/l .L_ret_ll, tr1 pt/l .L_ret_d, tr2 pt/l .L_ret_f, tr3 pt/l .L_epilogue, tr4 beqi/l r29, FFI_TYPE_INT, tr0 beqi/l r29, FFI_TYPE_UINT32, tr0 beqi/l r29, FFI_TYPE_SINT64, tr1 beqi/l r29, FFI_TYPE_UINT64, tr1 beqi/l r29, FFI_TYPE_DOUBLE, tr2 beqi/l r29, FFI_TYPE_FLOAT, tr3 pt/l .L_ret_q, tr0 pt/l .L_ret_h, tr1 beqi/l r29, FFI_TYPE_UINT8, tr0 beqi/l r29, FFI_TYPE_UINT16, tr1 blink tr4, r63 .L_ret_d: fst.d r31, 0, dr0 blink tr4, r63 .L_ret_ll: st.q r31, 0, r2 blink tr4, r63 .L_ret_f: fst.s r31, OFS_FLT, fr0 blink tr4, r63 .L_ret_q: st.b r31, 0, r2 blink tr4, r63 .L_ret_h: st.w r31, 0, r2 blink tr4, r63 .L_ret_i: st.l r31, 0, r2 # Fall .L_epilogue: # Remove the space we pushed for the args add r14, r63, r15 ld.l r15, 0, r14 ld.l r15, 4, r18 ld.q r15, 8, r28 ld.q r15, 16, r29 ld.q r15, 24, r30 ld.q r15, 32, r31 ld.q r15, 40, r32 addi.l r15, 48, r15 ptabs r18, tr0 blink tr0, r63 .LFE1: .ffi_call_SYSV_end: .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) .align 5 ENTRY(ffi_closure_SYSV) .LFB2: addi.l r15, -136, r15 .LCFI3: st.l r15, 12, r18 st.l r15, 8, r14 st.l r15, 4, r12 .LCFI4: add r15, r63, r14 .LCFI5: /* Stack layout: ... 64 bytes (register parameters) 48 bytes (floating register parameters) 8 bytes (result) 4 bytes (r18) 4 bytes (r14) 4 bytes (r12) 4 bytes (for align) <- new stack pointer */ fst.d r14, 24, dr0 fst.d r14, 32, dr2 fst.d r14, 40, dr4 fst.d r14, 48, dr6 fst.d r14, 56, dr8 fst.d r14, 64, dr10 st.q r14, 72, r2 st.q r14, 80, r3 st.q r14, 88, r4 st.q r14, 96, r5 st.q r14, 104, r6 st.q r14, 112, r7 st.q r14, 120, r8 st.q r14, 128, r9 add r1, r63, r2 addi r14, 16, r3 addi r14, 72, r4 addi r14, 24, r5 addi r14, 136, r6 #ifdef PIC movi (((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) >> 16) & 65535), r12 shori ((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) & 65535), r12 .LPCS0: ptrel/u r12, tr0 movi ((ffi_closure_helper_SYSV@GOTPLT) & 65535), r1 gettr tr0, r12 ldx.l r1, r12, r1 ptabs r1, tr0 #else pt/l ffi_closure_helper_SYSV, tr0 #endif blink tr0, r18 shlli r2, 1, r1 movi (((datalabel .L_table) >> 16) & 65535), r2 shori ((datalabel .L_table) & 65535), r2 ldx.w r2, r1, r1 add r1, r2, r1 pt/l .L_case_v, tr1 ptabs r1, tr0 blink tr0, r63 .align 2 .L_table: .word .L_case_v - datalabel .L_table /* FFI_TYPE_VOID */ .word .L_case_i - datalabel .L_table /* FFI_TYPE_INT */ .word .L_case_f - datalabel .L_table /* FFI_TYPE_FLOAT */ .word .L_case_d - datalabel .L_table /* FFI_TYPE_DOUBLE */ .word .L_case_d - datalabel .L_table /* FFI_TYPE_LONGDOUBLE */ .word .L_case_uq - datalabel .L_table /* FFI_TYPE_UINT8 */ .word .L_case_q - datalabel .L_table /* FFI_TYPE_SINT8 */ .word .L_case_uh - datalabel .L_table /* FFI_TYPE_UINT16 */ .word .L_case_h - datalabel .L_table /* FFI_TYPE_SINT16 */ .word .L_case_i - datalabel .L_table /* FFI_TYPE_UINT32 */ .word .L_case_i - datalabel .L_table /* FFI_TYPE_SINT32 */ .word .L_case_ll - datalabel .L_table /* FFI_TYPE_UINT64 */ .word .L_case_ll - datalabel .L_table /* FFI_TYPE_SINT64 */ .word .L_case_v - datalabel .L_table /* FFI_TYPE_STRUCT */ .word .L_case_i - datalabel .L_table /* FFI_TYPE_POINTER */ .align 2 .L_case_d: fld.d r14, 16, dr0 blink tr1, r63 .L_case_f: fld.s r14, 16, fr0 blink tr1, r63 .L_case_ll: ld.q r14, 16, r2 blink tr1, r63 .L_case_i: ld.l r14, 16, r2 blink tr1, r63 .L_case_q: ld.b r14, 16, r2 blink tr1, r63 .L_case_uq: ld.ub r14, 16, r2 blink tr1, r63 .L_case_h: ld.w r14, 16, r2 blink tr1, r63 .L_case_uh: ld.uw r14, 16, r2 blink tr1, r63 .L_case_v: add.l r14, r63, r15 ld.l r15, 4, r12 ld.l r15, 8, r14 ld.l r15, 12, r18 addi.l r15, 136, r15 ptabs r18, tr0 blink tr0, r63 .LFE2: .ffi_closure_SYSV_end: .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) #if defined __ELF__ && defined __linux__ .section .note.GNU-stack,"",@progbits #endif .section ".eh_frame","aw",@progbits __FRAME_BEGIN__: .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ .LSCIE1: .4byte 0x0 /* CIE Identifier Tag */ .byte 0x1 /* CIE Version */ #ifdef PIC .ascii "zR\0" /* CIE Augmentation */ #else .byte 0x0 /* CIE Augmentation */ #endif .uleb128 0x1 /* CIE Code Alignment Factor */ .sleb128 -4 /* CIE Data Alignment Factor */ .byte 0x12 /* CIE RA Column */ #ifdef PIC .uleb128 0x1 /* Augmentation size */ .byte 0x10 /* FDE Encoding (pcrel) */ #endif .byte 0xc /* DW_CFA_def_cfa */ .uleb128 0xf .uleb128 0x0 .align 2 .LECIE1: .LSFDE1: .4byte datalabel .LEFDE1-datalabel .LASFDE1 /* FDE Length */ .LASFDE1: .4byte datalabel .LASFDE1-datalabel __FRAME_BEGIN__ #ifdef PIC .4byte .LFB1-. /* FDE initial location */ #else .4byte .LFB1 /* FDE initial location */ #endif .4byte datalabel .LFE1-datalabel .LFB1 /* FDE address range */ #ifdef PIC .uleb128 0x0 /* Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI0-datalabel .LFB1 .byte 0xe /* DW_CFA_def_cfa_offset */ .uleb128 0x30 .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI1-datalabel .LCFI0 .byte 0x8e /* DW_CFA_offset, column 0xe */ .uleb128 0xc .byte 0x92 /* DW_CFA_offset, column 0x12 */ .uleb128 0xb .byte 0x9c /* DW_CFA_offset, column 0x1c */ .uleb128 0xa .byte 0x9d /* DW_CFA_offset, column 0x1d */ .uleb128 0x8 .byte 0x9e /* DW_CFA_offset, column 0x1e */ .uleb128 0x6 .byte 0x9f /* DW_CFA_offset, column 0x1f */ .uleb128 0x4 .byte 0xa0 /* DW_CFA_offset, column 0x20 */ .uleb128 0x2 .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI2-datalabel .LCFI1 .byte 0xd /* DW_CFA_def_cfa_register */ .uleb128 0xe .align 2 .LEFDE1: .LSFDE3: .4byte datalabel .LEFDE3-datalabel .LASFDE3 /* FDE Length */ .LASFDE3: .4byte datalabel .LASFDE3-datalabel __FRAME_BEGIN__ #ifdef PIC .4byte .LFB2-. /* FDE initial location */ #else .4byte .LFB2 /* FDE initial location */ #endif .4byte datalabel .LFE2-datalabel .LFB2 /* FDE address range */ #ifdef PIC .uleb128 0x0 /* Augmentation size */ #endif .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI3-datalabel .LFB2 .byte 0xe /* DW_CFA_def_cfa_offset */ .uleb128 0x88 .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI4-datalabel .LCFI3 .byte 0x8c /* DW_CFA_offset, column 0xc */ .uleb128 0x21 .byte 0x8e /* DW_CFA_offset, column 0xe */ .uleb128 0x20 .byte 0x92 /* DW_CFA_offset, column 0x12 */ .uleb128 0x1f .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte datalabel .LCFI5-datalabel .LCFI4 .byte 0xd /* DW_CFA_def_cfa_register */ .uleb128 0xe .align 2 .LEFDE3: polyml-5.7.1/libffi/src/m32r/0000755000175000017500000000000013204034553014604 5ustar daviddavidpolyml-5.7.1/libffi/src/m32r/ffitarget.h0000644000175000017500000000362013204034553016731 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 2012 Anthony Green Copyright (c) 2004 Renesas Technology. Target configuration macros for M32R. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif #define FFI_CLOSURES 0 #define FFI_TRAMPOLINE_SIZE 24 #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/m32r/ffi.c0000644000175000017500000001271513204034553015522 0ustar daviddavid/* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2004 Renesas Technology Copyright (c) 2008 Red Hat, Inc. M32R Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ void ffi_prep_args(char *stack, extended_cif *ecif) { unsigned int i; int tmp; unsigned int avn; void **p_argv; char *argp; ffi_type **p_arg; tmp = 0; argp = stack; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 8) { *(void **) argp = ecif->rvalue; argp += 4; } avn = ecif->cif->nargs; p_argv = ecif->avalue; for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0) && (avn != 0); i--, p_arg++) { size_t z; /* Align if necessary. */ if (((*p_arg)->alignment - 1) & (unsigned) argp) argp = (char *) ALIGN (argp, (*p_arg)->alignment); if (avn != 0) { avn--; z = (*p_arg)->size; if (z < sizeof (int)) { z = sizeof (int); switch ((*p_arg)->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); break; case FFI_TYPE_STRUCT: z = (*p_arg)->size; if ((*p_arg)->alignment != 1) memcpy (argp, *p_argv, z); else memcpy (argp + 4 - z, *p_argv, z); z = sizeof (int); break; default: FFI_ASSERT(0); } } else if (z == sizeof (int)) { *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); } else { if ((*p_arg)->type == FFI_TYPE_STRUCT) { if (z > 8) { *(unsigned int *) argp = (unsigned int)(void *)(* p_argv); z = sizeof(void *); } else { memcpy(argp, *p_argv, z); z = 8; } } else { /* Double or long long 64bit. */ memcpy (argp, *p_argv, z); } } p_argv++; argp += z; } } return; } /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { /* Set the return type flag. */ switch (cif->rtype->type) { case FFI_TYPE_VOID: cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_STRUCT: if (cif->rtype->size <= 4) cif->flags = FFI_TYPE_INT; else if (cif->rtype->size <= 8) cif->flags = FFI_TYPE_DOUBLE; else cif->flags = (unsigned) cif->rtype->type; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: case FFI_TYPE_DOUBLE: cif->flags = FFI_TYPE_DOUBLE; break; case FFI_TYPE_FLOAT: default: cif->flags = FFI_TYPE_INT; break; } return FFI_OK; } extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { ecif.rvalue = alloca (cif->rtype->size); } else ecif.rvalue = rvalue; switch (cif->abi) { case FFI_SYSV: ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); if (cif->rtype->type == FFI_TYPE_STRUCT) { int size = cif->rtype->size; int align = cif->rtype->alignment; if (size < 4) { if (align == 1) *(unsigned long *)(ecif.rvalue) <<= (4 - size) * 8; } else if (4 < size && size < 8) { if (align == 1) { memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); } else if (align == 2) { if (size & 1) size += 1; if (size != 8) memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); } } } break; default: FFI_ASSERT(0); break; } } polyml-5.7.1/libffi/src/m32r/sysv.S0000644000175000017500000000575213204034553015745 0ustar daviddavid/* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2004 Renesas Technology M32R Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include #ifdef HAVE_MACHINE_ASM_H #include #else /* XXX these lose for some platforms, I'm sure. */ #define CNAME(x) x #define ENTRY(x) .globl CNAME(x)! .type CNAME(x),%function! CNAME(x): #endif .text /* R0: ffi_prep_args */ /* R1: &ecif */ /* R2: cif->bytes */ /* R3: fig->flags */ /* sp+0: ecif.rvalue */ /* sp+4: fn */ /* This assumes we are using gas. */ ENTRY(ffi_call_SYSV) /* Save registers. */ push fp push lr push r3 push r2 push r1 push r0 mv fp, sp /* Make room for all of the new args. */ sub sp, r2 /* Place all of the ffi_prep_args in position. */ mv lr, r0 mv r0, sp /* R1 already set. */ /* And call. */ jl lr /* Move first 4 parameters in registers... */ ld r0, @(0,sp) ld r1, @(4,sp) ld r2, @(8,sp) ld r3, @(12,sp) /* ...and adjust the stack. */ ld lr, @(8,fp) cmpi lr, #16 bc adjust_stack ldi lr, #16 adjust_stack: add sp, lr /* Call the function. */ ld lr, @(28,fp) jl lr /* Remove the space we pushed for the args. */ mv sp, fp /* Load R2 with the pointer to storage for the return value. */ ld r2, @(24,sp) /* Load R3 with the return type code. */ ld r3, @(12,sp) /* If the return value pointer is NULL, assume no return value. */ beqz r2, epilogue /* Return INT. */ ldi r4, #FFI_TYPE_INT bne r3, r4, return_double st r0, @r2 bra epilogue return_double: /* Return DOUBLE or LONGDOUBLE. */ ldi r4, #FFI_TYPE_DOUBLE bne r3, r4, epilogue st r0, @r2 st r1, @(4,r2) epilogue: pop r0 pop r1 pop r2 pop r3 pop lr pop fp jmp lr .ffi_call_SYSV_end: .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) polyml-5.7.1/libffi/src/java_raw_api.c0000644000175000017500000002114213204034553016610 0ustar daviddavid/* ----------------------------------------------------------------------- java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc. Cloned from raw_api.c Raw_api.c author: Kresten Krab Thorup Java_raw_api.c author: Hans-J. Boehm $Id $ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* This defines a Java- and 64-bit specific variant of the raw API. */ /* It assumes that "raw" argument blocks look like Java stacks on a */ /* 64-bit machine. Arguments that can be stored in a single stack */ /* stack slots (longs, doubles) occupy 128 bits, but only the first */ /* 64 bits are actually used. */ #include #include #include #if !defined(NO_JAVA_RAW_API) size_t ffi_java_raw_size (ffi_cif *cif) { size_t result = 0; int i; ffi_type **at = cif->arg_types; for (i = cif->nargs-1; i >= 0; i--, at++) { switch((*at) -> type) { case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_DOUBLE: result += 2 * FFI_SIZEOF_JAVA_RAW; break; case FFI_TYPE_STRUCT: /* No structure parameters in Java. */ abort(); case FFI_TYPE_COMPLEX: /* Not supported yet. */ abort(); default: result += FFI_SIZEOF_JAVA_RAW; } } return result; } void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) { unsigned i; ffi_type **tp = cif->arg_types; #if WORDS_BIGENDIAN for (i = 0; i < cif->nargs; i++, tp++, args++) { switch ((*tp)->type) { case FFI_TYPE_UINT8: case FFI_TYPE_SINT8: *args = (void*) ((char*)(raw++) + 3); break; case FFI_TYPE_UINT16: case FFI_TYPE_SINT16: *args = (void*) ((char*)(raw++) + 2); break; #if FFI_SIZEOF_JAVA_RAW == 8 case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_DOUBLE: *args = (void *)raw; raw += 2; break; #endif case FFI_TYPE_POINTER: *args = (void*) &(raw++)->ptr; break; case FFI_TYPE_COMPLEX: /* Not supported yet. */ abort(); default: *args = raw; raw += ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); } } #else /* WORDS_BIGENDIAN */ #if !PDP /* then assume little endian */ for (i = 0; i < cif->nargs; i++, tp++, args++) { #if FFI_SIZEOF_JAVA_RAW == 8 switch((*tp)->type) { case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_DOUBLE: *args = (void*) raw; raw += 2; break; case FFI_TYPE_COMPLEX: /* Not supported yet. */ abort(); default: *args = (void*) raw++; } #else /* FFI_SIZEOF_JAVA_RAW != 8 */ *args = (void*) raw; raw += ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); #endif /* FFI_SIZEOF_JAVA_RAW == 8 */ } #else #error "pdp endian not supported" #endif /* ! PDP */ #endif /* WORDS_BIGENDIAN */ } void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) { unsigned i; ffi_type **tp = cif->arg_types; for (i = 0; i < cif->nargs; i++, tp++, args++) { switch ((*tp)->type) { case FFI_TYPE_UINT8: #if WORDS_BIGENDIAN *(UINT32*)(raw++) = *(UINT8*) (*args); #else (raw++)->uint = *(UINT8*) (*args); #endif break; case FFI_TYPE_SINT8: #if WORDS_BIGENDIAN *(SINT32*)(raw++) = *(SINT8*) (*args); #else (raw++)->sint = *(SINT8*) (*args); #endif break; case FFI_TYPE_UINT16: #if WORDS_BIGENDIAN *(UINT32*)(raw++) = *(UINT16*) (*args); #else (raw++)->uint = *(UINT16*) (*args); #endif break; case FFI_TYPE_SINT16: #if WORDS_BIGENDIAN *(SINT32*)(raw++) = *(SINT16*) (*args); #else (raw++)->sint = *(SINT16*) (*args); #endif break; case FFI_TYPE_UINT32: #if WORDS_BIGENDIAN *(UINT32*)(raw++) = *(UINT32*) (*args); #else (raw++)->uint = *(UINT32*) (*args); #endif break; case FFI_TYPE_SINT32: #if WORDS_BIGENDIAN *(SINT32*)(raw++) = *(SINT32*) (*args); #else (raw++)->sint = *(SINT32*) (*args); #endif break; case FFI_TYPE_FLOAT: (raw++)->flt = *(FLOAT32*) (*args); break; #if FFI_SIZEOF_JAVA_RAW == 8 case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: case FFI_TYPE_DOUBLE: raw->uint = *(UINT64*) (*args); raw += 2; break; #endif case FFI_TYPE_POINTER: (raw++)->ptr = **(void***) args; break; default: #if FFI_SIZEOF_JAVA_RAW == 8 FFI_ASSERT(0); /* Should have covered all cases */ #else memcpy ((void*) raw->data, (void*)*args, (*tp)->size); raw += ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); #endif } } } #if !FFI_NATIVE_RAW_API static void ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue) { #if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 switch (cif->rtype->type) { case FFI_TYPE_UINT8: case FFI_TYPE_UINT16: case FFI_TYPE_UINT32: *(UINT64 *)rvalue <<= 32; break; case FFI_TYPE_SINT8: case FFI_TYPE_SINT16: case FFI_TYPE_SINT32: case FFI_TYPE_INT: #if FFI_SIZEOF_JAVA_RAW == 4 case FFI_TYPE_POINTER: #endif *(SINT64 *)rvalue <<= 32; break; case FFI_TYPE_COMPLEX: /* Not supported yet. */ abort(); default: break; } #endif } static void ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue) { #if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 switch (cif->rtype->type) { case FFI_TYPE_UINT8: case FFI_TYPE_UINT16: case FFI_TYPE_UINT32: *(UINT64 *)rvalue >>= 32; break; case FFI_TYPE_SINT8: case FFI_TYPE_SINT16: case FFI_TYPE_SINT32: case FFI_TYPE_INT: *(SINT64 *)rvalue >>= 32; break; case FFI_TYPE_COMPLEX: /* Not supported yet. */ abort(); default: break; } #endif } /* This is a generic definition of ffi_raw_call, to be used if the * native system does not provide a machine-specific implementation. * Having this, allows code to be written for the raw API, without * the need for system-specific code to handle input in that format; * these following couple of functions will handle the translation forth * and back automatically. */ void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_java_raw *raw) { void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); ffi_java_raw_to_ptrarray (cif, raw, avalue); ffi_call (cif, fn, rvalue, avalue); ffi_java_rvalue_to_raw (cif, rvalue); } #if FFI_CLOSURES /* base system provides closures */ static void ffi_java_translate_args (ffi_cif *cif, void *rvalue, void **avalue, void *user_data) { ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif)); ffi_raw_closure *cl = (ffi_raw_closure*)user_data; ffi_java_ptrarray_to_raw (cif, avalue, raw); (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data); ffi_java_raw_to_rvalue (cif, rvalue); } ffi_status ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data, void *codeloc) { ffi_status status; status = ffi_prep_closure_loc ((ffi_closure*) cl, cif, &ffi_java_translate_args, codeloc, codeloc); if (status == FFI_OK) { cl->fun = fun; cl->user_data = user_data; } return status; } /* Again, here is the generic version of ffi_prep_raw_closure, which * will install an intermediate "hub" for translation of arguments from * the pointer-array format, to the raw format */ ffi_status ffi_prep_java_raw_closure (ffi_java_raw_closure* cl, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data) { return ffi_prep_java_raw_closure_loc (cl, cif, fun, user_data, cl); } #endif /* FFI_CLOSURES */ #endif /* !FFI_NATIVE_RAW_API */ #endif /* !NO_JAVA_RAW_API */ polyml-5.7.1/libffi/src/nios2/0000755000175000017500000000000013204034553015053 5ustar daviddavidpolyml-5.7.1/libffi/src/nios2/ffitarget.h0000644000175000017500000000342413204034553017202 0ustar daviddavid/* libffi target includes for Altera Nios II. Copyright (c) 2013 Mentor Graphics. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H #ifndef LIBFFI_H #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, FFI_LAST_ABI, FFI_DEFAULT_ABI = FFI_SYSV } ffi_abi; #endif /* Structures have a 4-byte alignment even if all the fields have lesser alignment requirements. */ #define FFI_AGGREGATE_ALIGNMENT 4 #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 28 /* 7 instructions */ #define FFI_NATIVE_RAW_API 0 #endif polyml-5.7.1/libffi/src/nios2/ffi.c0000644000175000017500000002255513204034553015774 0ustar daviddavid/* libffi support for Altera Nios II. Copyright (c) 2013 Mentor Graphics. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include /* The Nios II Processor Reference Handbook defines the procedure call ABI as follows. Arguments are passed as if a structure containing the types of the arguments were constructed. The first 16 bytes are passed in r4 through r7, the remainder on the stack. The first 16 bytes of a function taking variable arguments are passed in r4-r7 in the same way. Return values of types up to 8 bytes are returned in r2 and r3. For return values greater than 8 bytes, the caller must allocate memory for the result and pass the address as if it were argument 0. While this isn't specified explicitly in the ABI documentation, GCC promotes integral arguments smaller than int size to 32 bits. Also of note, the ABI specifies that all structure objects are aligned to 32 bits even if all their fields have a smaller natural alignment. See FFI_AGGREGATE_ALIGNMENT. */ /* Declare the assembly language hooks. */ extern UINT64 ffi_call_sysv (void (*) (char *, extended_cif *), extended_cif *, unsigned, void (*fn) (void)); extern void ffi_closure_sysv (void); /* Perform machine-dependent cif processing. */ ffi_status ffi_prep_cif_machdep (ffi_cif *cif) { /* We always want at least 16 bytes in the parameter block since it simplifies the low-level call function. Also round the parameter block size up to a multiple of 4 bytes to preserve 32-bit alignment of the stack pointer. */ if (cif->bytes < 16) cif->bytes = 16; else cif->bytes = (cif->bytes + 3) & ~3; return FFI_OK; } /* ffi_prep_args is called by the assembly routine to transfer arguments to the stack using the pointers in the ecif array. Note that the stack buffer is big enough to fit all the arguments, but the first 16 bytes will be copied to registers for the actual call. */ void ffi_prep_args (char *stack, extended_cif *ecif) { char *argp = stack; unsigned int i; /* The implicit return value pointer is passed as if it were a hidden first argument. */ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 8) { (*(void **) argp) = ecif->rvalue; argp += 4; } for (i = 0; i < ecif->cif->nargs; i++) { void *avalue = ecif->avalue[i]; ffi_type *atype = ecif->cif->arg_types[i]; size_t size = atype->size; size_t alignment = atype->alignment; /* Align argp as appropriate for the argument type. */ if ((alignment - 1) & (unsigned) argp) argp = (char *) ALIGN (argp, alignment); /* Copy the argument, promoting integral types smaller than a word to word size. */ if (size < sizeof (int)) { size = sizeof (int); switch (atype->type) { case FFI_TYPE_SINT8: *(signed int *) argp = (signed int) *(SINT8 *) avalue; break; case FFI_TYPE_UINT8: *(unsigned int *) argp = (unsigned int) *(UINT8 *) avalue; break; case FFI_TYPE_SINT16: *(signed int *) argp = (signed int) *(SINT16 *) avalue; break; case FFI_TYPE_UINT16: *(unsigned int *) argp = (unsigned int) *(UINT16 *) avalue; break; case FFI_TYPE_STRUCT: memcpy (argp, avalue, atype->size); break; default: FFI_ASSERT(0); } } else if (size == sizeof (int)) *(unsigned int *) argp = (unsigned int) *(UINT32 *) avalue; else memcpy (argp, avalue, size); argp += size; } } /* Call FN using the prepared CIF. RVALUE points to space allocated by the caller for the return value, and AVALUE is an array of argument pointers. */ void ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) { extended_cif ecif; UINT64 result; /* If bigret is true, this is the case where a return value of larger than 8 bytes is handled by being passed by reference as an implicit argument. */ int bigret = (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size > 8); ecif.cif = cif; ecif.avalue = avalue; /* Allocate space for return value if this is the pass-by-reference case and the caller did not provide a buffer. */ if (rvalue == NULL && bigret) ecif.rvalue = alloca (cif->rtype->size); else ecif.rvalue = rvalue; result = ffi_call_sysv (ffi_prep_args, &ecif, cif->bytes, fn); /* Now result contains the 64 bit contents returned from fn in r2 and r3. Copy the value of the appropriate size to the user-provided rvalue buffer. */ if (rvalue && !bigret) switch (cif->rtype->size) { case 1: *(UINT8 *)rvalue = (UINT8) result; break; case 2: *(UINT16 *)rvalue = (UINT16) result; break; case 4: *(UINT32 *)rvalue = (UINT32) result; break; case 8: *(UINT64 *)rvalue = (UINT64) result; break; default: memcpy (rvalue, (void *)&result, cif->rtype->size); break; } } /* This function is invoked from the closure trampoline to invoke CLOSURE with argument block ARGS. Parse ARGS according to CLOSURE->cfi and invoke CLOSURE->fun. */ static UINT64 ffi_closure_helper (unsigned char *args, ffi_closure *closure) { ffi_cif *cif = closure->cif; unsigned char *argp = args; void **parsed_args = alloca (cif->nargs * sizeof (void *)); UINT64 result; void *retptr; unsigned int i; /* First figure out what to do about the return type. If this is the big-structure-return case, the first arg is the hidden return buffer allocated by the caller. */ if (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size > 8) { retptr = *((void **) argp); argp += 4; } else retptr = (void *) &result; /* Fill in the array of argument pointers. */ for (i = 0; i < cif->nargs; i++) { size_t size = cif->arg_types[i]->size; size_t alignment = cif->arg_types[i]->alignment; /* Align argp as appropriate for the argument type. */ if ((alignment - 1) & (unsigned) argp) argp = (char *) ALIGN (argp, alignment); /* Arguments smaller than an int are promoted to int. */ if (size < sizeof (int)) size = sizeof (int); /* Store the pointer. */ parsed_args[i] = argp; argp += size; } /* Call the user-supplied function. */ (closure->fun) (cif, retptr, parsed_args, closure->user_data); return result; } /* Initialize CLOSURE with a trampoline to call FUN with CIF and USER_DATA. */ ffi_status ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, void (*fun) (ffi_cif*, void*, void**, void*), void *user_data, void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; int i; if (cif->abi != FFI_SYSV) return FFI_BAD_ABI; /* The trampoline looks like: movhi r8, %hi(ffi_closure_sysv) ori r8, r8, %lo(ffi_closure_sysv) movhi r9, %hi(ffi_closure_helper) ori r0, r9, %lo(ffi_closure_helper) movhi r10, %hi(closure) ori r10, r10, %lo(closure) jmp r8 and then ffi_closure_sysv retrieves the closure pointer out of r10 in addition to the arguments passed in the normal way for the call, and invokes ffi_closure_helper. We encode the pointer to ffi_closure_helper in the trampoline because making a PIC call to it in ffi_closure_sysv would be messy (it would have to indirect through the GOT). */ #define HI(x) ((((unsigned int) (x)) >> 16) & 0xffff) #define LO(x) (((unsigned int) (x)) & 0xffff) tramp[0] = (0 << 27) | (8 << 22) | (HI (ffi_closure_sysv) << 6) | 0x34; tramp[1] = (8 << 27) | (8 << 22) | (LO (ffi_closure_sysv) << 6) | 0x14; tramp[2] = (0 << 27) | (9 << 22) | (HI (ffi_closure_helper) << 6) | 0x34; tramp[3] = (9 << 27) | (9 << 22) | (LO (ffi_closure_helper) << 6) | 0x14; tramp[4] = (0 << 27) | (10 << 22) | (HI (closure) << 6) | 0x34; tramp[5] = (10 << 27) | (10 << 22) | (LO (closure) << 6) | 0x14; tramp[6] = (8 << 27) | (0x0d << 11) | 0x3a; #undef HI #undef LO /* Flush the caches. See Example 9-4 in the Nios II Software Developer's Handbook. */ for (i = 0; i < 7; i++) asm volatile ("flushd 0(%0); flushi %0" :: "r"(tramp + i) : "memory"); asm volatile ("flushp" ::: "memory"); closure->cif = cif; closure->fun = fun; closure->user_data = user_data; return FFI_OK; } polyml-5.7.1/libffi/src/nios2/sysv.S0000644000175000017500000000740113204034553016205 0ustar daviddavid/* Low-level libffi support for Altera Nios II. Copyright (c) 2013 Mentor Graphics. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* This function is declared on the C side as extern UINT64 ffi_call_sysv (void (*arghook) (char *, extended_cif *), extended_cif *ecif, unsigned nbytes, void (*fn) (void)); On input, the arguments appear as r4 = arghook r5 = ecif r6 = nbytes r7 = fn */ .section .text .align 2 .global ffi_call_sysv .type ffi_call_sysv, @function ffi_call_sysv: .cfi_startproc /* Create the stack frame, saving r16 so we can use it locally. */ addi sp, sp, -12 .cfi_def_cfa_offset 12 stw ra, 8(sp) stw fp, 4(sp) stw r16, 0(sp) .cfi_offset 31, -4 .cfi_offset 28, -8 .cfi_offset 16, -12 mov fp, sp .cfi_def_cfa_register 28 mov r16, r7 /* Adjust the stack pointer to create the argument buffer nbytes long. */ sub sp, sp, r6 /* Call the arghook function. */ mov r2, r4 /* fn */ mov r4, sp /* argbuffer */ callr r2 /* r5 already contains ecif */ /* Pop off the first 16 bytes of the argument buffer on the stack, transferring the contents to the argument registers. */ ldw r4, 0(sp) ldw r5, 4(sp) ldw r6, 8(sp) ldw r7, 12(sp) addi sp, sp, 16 /* Call the user function, which leaves its result in r2 and r3. */ callr r16 /* Pop off the stack frame. */ mov sp, fp ldw ra, 8(sp) ldw fp, 4(sp) ldw r16, 0(sp) addi sp, sp, 12 ret .cfi_endproc .size ffi_call_sysv, .-ffi_call_sysv /* Closure trampolines jump here after putting the C helper address in r9 and the closure pointer in r10. The user-supplied arguments to the closure are in the normal places, in r4-r7 and on the stack. Push the register arguments on the stack too and then call the C helper function to deal with them. */ .section .text .align 2 .global ffi_closure_sysv .type ffi_closure_sysv, @function ffi_closure_sysv: .cfi_startproc /* Create the stack frame, pushing the register args on the stack just below the stack args. This is the same trick illustrated in Figure 7-3 in the Nios II Processor Reference Handbook, used for variable arguments and structures passed by value. */ addi sp, sp, -20 .cfi_def_cfa_offset 20 stw ra, 0(sp) .cfi_offset 31, -20 stw r4, 4(sp) .cfi_offset 4, -16 stw r5, 8(sp) .cfi_offset 5, -12 stw r6, 12(sp) .cfi_offset 6, -8 stw r7, 16(sp) .cfi_offset 7, -4 /* Call the helper. r4 = pointer to arguments on stack r5 = closure pointer (loaded in r10 by the trampoline) r9 = address of helper function (loaded by trampoline) */ addi r4, sp, 4 mov r5, r10 callr r9 /* Pop the stack and return. */ ldw ra, 0(sp) addi sp, sp, 20 .cfi_def_cfa_offset -20 ret .cfi_endproc .size ffi_closure_sysv, .-ffi_closure_sysv polyml-5.7.1/libffi/src/debug.c0000644000175000017500000000455513204034553015264 0ustar daviddavid/* ----------------------------------------------------------------------- debug.c - Copyright (c) 1996 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include #include /* General debugging routines */ void ffi_stop_here(void) { /* This function is only useful for debugging purposes. Place a breakpoint on ffi_stop_here to be notified of significant events. */ } /* This function should only be called via the FFI_ASSERT() macro */ void ffi_assert(char *expr, char *file, int line) { fprintf(stderr, "ASSERTION FAILURE: %s at %s:%d\n", expr, file, line); ffi_stop_here(); abort(); } /* Perform a sanity check on an ffi_type structure */ void ffi_type_test(ffi_type *a, char *file, int line) { FFI_ASSERT_AT(a != NULL, file, line); FFI_ASSERT_AT(a->type <= FFI_TYPE_LAST, file, line); FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->size > 0, file, line); FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->alignment > 0, file, line); FFI_ASSERT_AT((a->type != FFI_TYPE_STRUCT && a->type != FFI_TYPE_COMPLEX) || a->elements != NULL, file, line); FFI_ASSERT_AT(a->type != FFI_TYPE_COMPLEX || (a->elements != NULL && a->elements[0] != NULL && a->elements[1] == NULL), file, line); } polyml-5.7.1/libffi/acinclude.m40000644000175000017500000000631113204034553015424 0ustar daviddavid# mmap(2) blacklisting. Some platforms provide the mmap library routine # but don't support all of the features we need from it. AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], [ AC_CHECK_HEADER([sys/mman.h], [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) if test "$libffi_header_sys_mman_h" != yes \ || test "$libffi_func_mmap" != yes; then ac_cv_func_mmap_file=no ac_cv_func_mmap_dev_zero=no ac_cv_func_mmap_anon=no else AC_CACHE_CHECK([whether read-only mmap of a plain file works], ac_cv_func_mmap_file, [# Add a system to this blacklist if # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a # memory area containing the same data that you'd get if you applied # read() to the same fd. The only system known to have a problem here # is VMS, where text files have record structure. case "$host_os" in vms* | ultrix*) ac_cv_func_mmap_file=no ;; *) ac_cv_func_mmap_file=yes;; esac]) AC_CACHE_CHECK([whether mmap from /dev/zero works], ac_cv_func_mmap_dev_zero, [# Add a system to this blacklist if it has mmap() but /dev/zero # does not exist, or if mmapping /dev/zero does not give anonymous # zeroed pages with both the following properties: # 1. If you map N consecutive pages in with one call, and then # unmap any subset of those pages, the pages that were not # explicitly unmapped remain accessible. # 2. If you map two adjacent blocks of memory and then unmap them # both at once, they must both go away. # Systems known to be in this category are Windows (all variants), # VMS, and Darwin. case "$host_os" in vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) ac_cv_func_mmap_dev_zero=no ;; *) ac_cv_func_mmap_dev_zero=yes;; esac]) # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, [AC_TRY_COMPILE( [#include #include #include #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif ], [int n = MAP_ANONYMOUS;], ac_cv_decl_map_anon=yes, ac_cv_decl_map_anon=no)]) if test $ac_cv_decl_map_anon = no; then ac_cv_func_mmap_anon=no else AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], ac_cv_func_mmap_anon, [# Add a system to this blacklist if it has mmap() and MAP_ANON or # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) # doesn't give anonymous zeroed pages with the same properties listed # above for use of /dev/zero. # Systems known to be in this category are Windows, VMS, and SCO Unix. case "$host_os" in vms* | cygwin* | pe | mingw* | sco* | udk* ) ac_cv_func_mmap_anon=no ;; *) ac_cv_func_mmap_anon=yes;; esac]) fi fi if test $ac_cv_func_mmap_file = yes; then AC_DEFINE(HAVE_MMAP_FILE, 1, [Define if read-only mmap of a plain file works.]) fi if test $ac_cv_func_mmap_dev_zero = yes; then AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, [Define if mmap of /dev/zero works.]) fi if test $ac_cv_func_mmap_anon = yes; then AC_DEFINE(HAVE_MMAP_ANON, 1, [Define if mmap with MAP_ANON(YMOUS) works.]) fi ]) polyml-5.7.1/libffi/libffi.xcodeproj/0000755000175000017500000000000013204034553016461 5ustar daviddavidpolyml-5.7.1/libffi/libffi.xcodeproj/project.pbxproj0000644000175000017500000007154013204034553021544 0ustar daviddavid// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; }; DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; }; DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; }; DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; }; DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; }; DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; }; DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; }; DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; }; DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; }; DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; }; DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; }; DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; }; DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; }; DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; }; DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; }; DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; }; DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; }; DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; }; DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; }; DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; }; DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ DB13B1641849DF1E0010F42D /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 8; dstPath = "include/$(PRODUCT_NAME)"; dstSubfolderSpec = 16; files = ( ); runOnlyForDeploymentPostprocessing = 1; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; }; DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = ""; }; DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = ""; }; DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = ""; }; DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = ""; }; DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = ""; }; DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = ""; }; DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = ""; }; DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = ""; }; DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = ""; }; DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = ""; }; DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = ""; }; DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = ""; }; DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = ""; }; DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = ""; }; DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = ""; }; DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = ""; }; DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = ""; }; DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = ""; }; DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = ""; }; DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = ""; }; DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ DB13B15B1849DEB70010F42D = { isa = PBXGroup; children = ( DBFA713C187F1D8600A76262 /* darwin_common */, DBFA715C187F1D9B00A76262 /* darwin_ios */, DBFA7180187F1DA100A76262 /* darwin_osx */, DB13B1671849DF1E0010F42D /* Products */, ); sourceTree = ""; }; DB13B1671849DF1E0010F42D /* Products */ = { isa = PBXGroup; children = ( DB13B1661849DF1E0010F42D /* libffi.a */, DB13B1911849DF510010F42D /* ffi.dylib */, ); name = Products; sourceTree = ""; }; DBFA713C187F1D8600A76262 /* darwin_common */ = { isa = PBXGroup; children = ( DBFA713D187F1D8600A76262 /* include */, DBFA7142187F1D8600A76262 /* src */, ); path = "darwin_common"; sourceTree = ""; }; DBFA713D187F1D8600A76262 /* include */ = { isa = PBXGroup; children = ( DBFA713E187F1D8600A76262 /* ffi.h */, DBFA713F187F1D8600A76262 /* ffi_common.h */, DBFA7140187F1D8600A76262 /* fficonfig.h */, DBFA7141187F1D8600A76262 /* ffitarget.h */, ); path = include; sourceTree = ""; }; DBFA7142187F1D8600A76262 /* src */ = { isa = PBXGroup; children = ( DBFA7143187F1D8600A76262 /* closures.c */, DBFA7145187F1D8600A76262 /* dlmalloc.c */, DBFA7147187F1D8600A76262 /* prep_cif.c */, DBFA7148187F1D8600A76262 /* raw_api.c */, DBFA7149187F1D8600A76262 /* types.c */, ); path = src; sourceTree = ""; }; DBFA715C187F1D9B00A76262 /* darwin_ios */ = { isa = PBXGroup; children = ( DBFA715D187F1D9B00A76262 /* include */, DBFA716A187F1D9B00A76262 /* src */, ); path = "darwin_ios"; sourceTree = ""; }; DBFA715D187F1D9B00A76262 /* include */ = { isa = PBXGroup; children = ( DBFA715E187F1D9B00A76262 /* ffi_arm64.h */, DBFA715F187F1D9B00A76262 /* ffi_armv7.h */, DBFA7160187F1D9B00A76262 /* ffi_i386.h */, DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */, DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */, DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */, DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */, DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */, DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */, DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */, DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */, DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */, ); path = include; sourceTree = ""; }; DBFA716A187F1D9B00A76262 /* src */ = { isa = PBXGroup; children = ( DBFA716B187F1D9B00A76262 /* aarch64 */, DBFA716E187F1D9B00A76262 /* arm */, DBFA7172187F1D9B00A76262 /* x86 */, ); path = src; sourceTree = ""; }; DBFA716B187F1D9B00A76262 /* aarch64 */ = { isa = PBXGroup; children = ( DBFA716C187F1D9B00A76262 /* ffi_arm64.c */, DBFA716D187F1D9B00A76262 /* sysv_arm64.S */, ); path = aarch64; sourceTree = ""; }; DBFA716E187F1D9B00A76262 /* arm */ = { isa = PBXGroup; children = ( DBFA716F187F1D9B00A76262 /* ffi_armv7.c */, DBFA7170187F1D9B00A76262 /* sysv_armv7.S */, DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */, ); path = arm; sourceTree = ""; }; DBFA7172187F1D9B00A76262 /* x86 */ = { isa = PBXGroup; children = ( DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */, DBFA7174187F1D9B00A76262 /* darwin_i386.S */, DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */, DBFA7176187F1D9B00A76262 /* ffi_i386.c */, ); path = x86; sourceTree = ""; }; DBFA7180187F1DA100A76262 /* darwin_osx */ = { isa = PBXGroup; children = ( DBFA7181187F1DA100A76262 /* include */, DBFA7188187F1DA100A76262 /* src */, ); path = "darwin_osx"; sourceTree = ""; }; DBFA7181187F1DA100A76262 /* include */ = { isa = PBXGroup; children = ( DBFA7182187F1DA100A76262 /* ffi_i386.h */, DBFA7183187F1DA100A76262 /* ffi_x86_64.h */, DBFA7184187F1DA100A76262 /* fficonfig_i386.h */, DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */, DBFA7186187F1DA100A76262 /* ffitarget_i386.h */, DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */, ); path = include; sourceTree = ""; }; DBFA7188187F1DA100A76262 /* src */ = { isa = PBXGroup; children = ( DBFA7189187F1DA100A76262 /* x86 */, ); path = src; sourceTree = ""; }; DBFA7189187F1DA100A76262 /* x86 */ = { isa = PBXGroup; children = ( DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */, DBFA718B187F1DA100A76262 /* darwin_i386.S */, DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */, DBFA718D187F1DA100A76262 /* ffi_i386.c */, ); path = x86; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ DB13B18F1849DF510010F42D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */, DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */, DBFA714A187F1D8600A76262 /* ffi.h in Headers */, DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */, DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */, DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */, DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */, DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */, DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */, DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ DB13B1651849DF1E0010F42D /* libffi-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */; buildPhases = ( DB13B3051849E01C0010F42D /* ShellScript */, DB13B1621849DF1E0010F42D /* Sources */, DB13B1641849DF1E0010F42D /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); name = "libffi-iOS"; productName = ffi; productReference = DB13B1661849DF1E0010F42D /* libffi.a */; productType = "com.apple.product-type.library.static"; }; DB13B1901849DF510010F42D /* libffi-Mac */ = { isa = PBXNativeTarget; buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */; buildPhases = ( DB13B3061849E0490010F42D /* ShellScript */, DB13B18D1849DF510010F42D /* Sources */, DB13B18F1849DF510010F42D /* Headers */, ); buildRules = ( ); dependencies = ( ); name = "libffi-Mac"; productName = ffi; productReference = DB13B1911849DF510010F42D /* ffi.dylib */; productType = "com.apple.product-type.library.dynamic"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ DB13B15C1849DEB70010F42D /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0510; }; buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); mainGroup = DB13B15B1849DEB70010F42D; productRefGroup = DB13B1671849DF1E0010F42D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( DB13B1651849DF1E0010F42D /* libffi-iOS */, DB13B1901849DF510010F42D /* libffi-Mac */, ); }; /* End PBXProject section */ /* Begin PBXShellScriptBuildPhase section */ DB13B3051849E01C0010F42D /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-ios"; }; DB13B3061849E0490010F42D /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ DB13B1621849DF1E0010F42D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */, DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */, DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */, DBFA714E187F1D8600A76262 /* closures.c in Sources */, DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */, DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */, DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */, DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */, DBFA7158187F1D8600A76262 /* raw_api.c in Sources */, DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */, DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */, DBFA715A187F1D8600A76262 /* types.c in Sources */, DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; DB13B18D1849DF510010F42D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */, DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */, DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */, DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */, DBFA715B187F1D8600A76262 /* types.c in Sources */, DBFA7159187F1D8600A76262 /* raw_api.c in Sources */, DBFA714F187F1D8600A76262 /* closures.c in Sources */, DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ DB13B1601849DEB70010F42D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_common/include", ); ONLY_ACTIVE_ARCH = YES; }; name = Debug; }; DB13B1611849DEB70010F42D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_common/include", ); }; name = Release; }; DB13B1871849DF1E0010F42D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DSTROOT = /tmp/ffi.dst; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_ios/include", ); IPHONEOS_DEPLOYMENT_TARGET = 5.0; "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = ffi; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; DB13B1881849DF1E0010F42D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; DSTROOT = /tmp/ffi.dst; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_ios/include", ); IPHONEOS_DEPLOYMENT_TARGET = 5.0; "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = ffi; SDKROOT = iphoneos; SKIP_INSTALL = YES; VALIDATE_PRODUCT = YES; }; name = Release; }; DB13B1B11849DF520010F42D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_osx/include", ); MACOSX_DEPLOYMENT_TARGET = 10.6; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; PRODUCT_NAME = ffi; SDKROOT = macosx; }; name = Debug; }; DB13B1B21849DF520010F42D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "darwin_osx/include", ); MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; PRODUCT_NAME = ffi; SDKROOT = macosx; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = { isa = XCConfigurationList; buildConfigurations = ( DB13B1601849DEB70010F42D /* Debug */, DB13B1611849DEB70010F42D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( DB13B1871849DF1E0010F42D /* Debug */, DB13B1881849DF1E0010F42D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = { isa = XCConfigurationList; buildConfigurations = ( DB13B1B11849DF520010F42D /* Debug */, DB13B1B21849DF520010F42D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = DB13B15C1849DEB70010F42D /* Project object */; } polyml-5.7.1/libffi/libffi.vcxproj0000644000175000017500000005463313204034553016115 0ustar daviddavid Debug Win32 IntDebug Win32 IntDebug x64 IntRelease Win32 IntRelease x64 Release Win32 Debug x64 Release x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78} Win32Proj libffi StaticLibrary true v140_xp Unicode StaticLibrary true v140_xp Unicode StaticLibrary false v140_xp true Unicode StaticLibrary false v140_xp true Unicode StaticLibrary true v140_xp Unicode StaticLibrary true v140_xp Unicode StaticLibrary false v140_xp true Unicode StaticLibrary false v140_xp true Unicode true true true true false false false false Level3 Disabled _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreadedDebug Windows true Level3 Disabled _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreadedDebug Windows true Level3 Disabled _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreadedDebug Windows true Level3 Disabled _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreadedDebug Windows true Level3 MaxSpeed true true _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreaded Windows true true true Level3 MaxSpeed true true _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreaded Windows true true true Level3 MaxSpeed true true _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreaded Windows true true true Level3 MaxSpeed true true _LIB;LONG_LONG_MAX=_I64_MAX msvc32include;src\x86;include MultiThreaded Windows true true true true true true true Document cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /Fo $(IntDir)%(Filename).obj /c /coff $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) true true true true Document cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm cl /nologo /EP /Imsvc32include /Isrc\x86 /I. /Iinclude /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) $(IntDir)%(Filename).obj;$(IntDir)%(Filename).asm;%(Outputs) polyml-5.7.1/libffi/compile0000755000175000017500000001624513204034553014620 0ustar daviddavid#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/libffi/depcomp0000755000175000017500000005601613204034553014617 0ustar daviddavid#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/libffi/man/0000755000175000017500000000000013204034553014005 5ustar daviddavidpolyml-5.7.1/libffi/man/Makefile.am0000644000175000017500000000031713204034553016042 0ustar daviddavid## Process this with automake to create Makefile.in AUTOMAKE_OPTIONS=foreign EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 polyml-5.7.1/libffi/man/ffi_prep_cif_var.30000644000175000017500000000245113204034553017356 0ustar daviddavid.Dd January 25, 2011 .Dt ffi_prep_cif_var 3 .Sh NAME .Nm ffi_prep_cif_var .Nd Prepare a .Nm ffi_cif structure for use with .Nm ffi_call for variadic functions. .Sh SYNOPSIS .In ffi.h .Ft ffi_status .Fo ffi_prep_cif_var .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nfixedargs" .Fa "unsigned int ntotalargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Sh DESCRIPTION The .Nm ffi_prep_cif_var function prepares a .Nm ffi_cif structure for use with .Nm ffi_call for variadic functions. .Fa abi specifies a set of calling conventions to use. .Fa atypes is an array of .Fa ntotalargs pointers to .Nm ffi_type structs that describe the data type, size and alignment of each argument. .Fa rtype points to an .Nm ffi_type that describes the data type, size and alignment of the return value. .Fa nfixedargs must contain the number of fixed (non-variadic) arguments. Note that to call a non-variadic function .Nm ffi_prep_cif must be used. .Sh RETURN VALUES Upon successful completion, .Nm ffi_prep_cif_var returns .Nm FFI_OK . It will return .Nm FFI_BAD_TYPEDEF if .Fa cif is .Nm NULL or .Fa atypes or .Fa rtype is malformed. If .Fa abi does not refer to a valid ABI, .Nm FFI_BAD_ABI will be returned. Available ABIs are defined in .Nm . .Sh SEE ALSO .Xr ffi 3 , .Xr ffi_call 3 , .Xr ffi_prep_cif 3 polyml-5.7.1/libffi/man/ffi_call.30000644000175000017500000000443513204034553015636 0ustar daviddavid.Dd February 15, 2008 .Dt ffi_call 3 .Sh NAME .Nm ffi_call .Nd Invoke a foreign function. .Sh SYNOPSIS .In ffi.h .Ft void .Fo ffi_call .Fa "ffi_cif *cif" .Fa "void (*fn)(void)" .Fa "void *rvalue" .Fa "void **avalue" .Fc .Sh DESCRIPTION The .Nm ffi_call function provides a simple mechanism for invoking a function without requiring knowledge of the function's interface at compile time. .Fa fn is called with the values retrieved from the pointers in the .Fa avalue array. The return value from .Fa fn is placed in storage pointed to by .Fa rvalue . .Fa cif contains information describing the data types, sizes and alignments of the arguments to and return value from .Fa fn , and must be initialized with .Nm ffi_prep_cif before it is used with .Nm ffi_call . .Pp .Fa rvalue must point to storage that is sizeof(ffi_arg) or larger for non-floating point types. For smaller-sized return value types, the .Nm ffi_arg or .Nm ffi_sarg integral type must be used to hold the return value. .Sh EXAMPLES .Bd -literal #include #include unsigned char foo(unsigned int, float); int main(int argc, const char **argv) { ffi_cif cif; ffi_type *arg_types[2]; void *arg_values[2]; ffi_status status; // Because the return value from foo() is smaller than sizeof(long), it // must be passed as ffi_arg or ffi_sarg. ffi_arg result; // Specify the data type of each argument. Available types are defined // in . arg_types[0] = &ffi_type_uint; arg_types[1] = &ffi_type_float; // Prepare the ffi_cif structure. if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_uint8, arg_types)) != FFI_OK) { // Handle the ffi_status error. } // Specify the values of each argument. unsigned int arg1 = 42; float arg2 = 5.1; arg_values[0] = &arg1; arg_values[1] = &arg2; // Invoke the function. ffi_call(&cif, FFI_FN(foo), &result, arg_values); // The ffi_arg 'result' now contains the unsigned char returned from foo(), // which can be accessed by a typecast. printf("result is %hhu", (unsigned char)result); return 0; } // The target function. unsigned char foo(unsigned int x, float y) { unsigned char result = x - y; return result; } .Ed .Sh SEE ALSO .Xr ffi 3 , .Xr ffi_prep_cif 3 polyml-5.7.1/libffi/man/ffi.30000644000175000017500000000152213204034553014635 0ustar daviddavid.Dd February 15, 2008 .Dt FFI 3 .Sh NAME .Nm FFI .Nd Foreign Function Interface .Sh LIBRARY libffi, -lffi .Sh SYNOPSIS .In ffi.h .Ft ffi_status .Fo ffi_prep_cif .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Ft void .Fo ffi_prep_cif_var .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nfixedargs" .Fa "unsigned int ntotalargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Ft void .Fo ffi_call .Fa "ffi_cif *cif" .Fa "void (*fn)(void)" .Fa "void *rvalue" .Fa "void **avalue" .Fc .Sh DESCRIPTION The foreign function interface provides a mechanism by which a function can generate a call to another function at runtime without requiring knowledge of the called function's interface at compile time. .Sh SEE ALSO .Xr ffi_prep_cif 3 , .Xr ffi_prep_cif_var 3 , .Xr ffi_call 3 polyml-5.7.1/libffi/man/ffi_prep_cif.30000644000175000017500000000220613204034553016504 0ustar daviddavid.Dd February 15, 2008 .Dt ffi_prep_cif 3 .Sh NAME .Nm ffi_prep_cif .Nd Prepare a .Nm ffi_cif structure for use with .Nm ffi_call . .Sh SYNOPSIS .In ffi.h .Ft ffi_status .Fo ffi_prep_cif .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Sh DESCRIPTION The .Nm ffi_prep_cif function prepares a .Nm ffi_cif structure for use with .Nm ffi_call . .Fa abi specifies a set of calling conventions to use. .Fa atypes is an array of .Fa nargs pointers to .Nm ffi_type structs that describe the data type, size and alignment of each argument. .Fa rtype points to an .Nm ffi_type that describes the data type, size and alignment of the return value. Note that to call a variadic function .Nm ffi_prep_cif_var must be used instead. .Sh RETURN VALUES Upon successful completion, .Nm ffi_prep_cif returns .Nm FFI_OK . It will return .Nm FFI_BAD_TYPEDEF if .Fa cif is .Nm NULL or .Fa atypes or .Fa rtype is malformed. If .Fa abi does not refer to a valid ABI, .Nm FFI_BAD_ABI will be returned. Available ABIs are defined in .Nm . .Sh SEE ALSO .Xr ffi 3 , .Xr ffi_call 3 , .Xr ffi_prep_cif_var 3 polyml-5.7.1/libffi/man/Makefile.in0000644000175000017500000003744513204034553016067 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = man DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ $(top_srcdir)/m4/ax_configure_args.m4 \ $(top_srcdir)/m4/ax_enable_builddir.m4 \ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/fficonfig.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man3dir = $(mandir)/man3 am__installdirs = "$(DESTDIR)$(man3dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LTLDFLAGS = @AM_LTLDFLAGS@ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ TARGETDIR = @TARGETDIR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_enable_builddir_sed = @ax_enable_builddir_sed@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ toolexeclibdir = @toolexeclibdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign man/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man3: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man3dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.3[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man3dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man3 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man3 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man3 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man3 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/libffi/install-sh0000755000175000017500000003325513204034553015246 0ustar daviddavid#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/libffi/config.sub0000755000175000017500000010531513204034553015222 0ustar daviddavid#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-04-24' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or1k-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: polyml-5.7.1/libffi/configure0000755000175000017500000242102713204034553015151 0ustar daviddavid#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for libffi 3.2.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: http://github.com/atgreen/libffi/issues about your $0: system, including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' PACKAGE_VERSION='3.2.1' PACKAGE_STRING='libffi 3.2.1' PACKAGE_BUGREPORT='http://github.com/atgreen/libffi/issues' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS toolexeclibdir toolexecdir FFI_DEBUG_FALSE FFI_DEBUG_TRUE TARGETDIR TARGET FFI_EXEC_TRAMPOLINE_TABLE FFI_EXEC_TRAMPOLINE_TABLE_FALSE FFI_EXEC_TRAMPOLINE_TABLE_TRUE sys_symbol_underscore HAVE_LONG_DOUBLE_VARIANT HAVE_LONG_DOUBLE ALLOCA XTENSA_FALSE XTENSA_TRUE VAX_FALSE VAX_TRUE TILE_FALSE TILE_TRUE PA64_HPUX_FALSE PA64_HPUX_TRUE PA_HPUX_FALSE PA_HPUX_TRUE PA_LINUX_FALSE PA_LINUX_TRUE SH64_FALSE SH64_TRUE SH_FALSE SH_TRUE X86_64_FALSE X86_64_TRUE S390_FALSE S390_TRUE FRV_FALSE FRV_TRUE LIBFFI_CRIS_FALSE LIBFFI_CRIS_TRUE AVR32_FALSE AVR32_TRUE ARM_FALSE ARM_TRUE ARC_FALSE ARC_TRUE AARCH64_FALSE AARCH64_TRUE POWERPC_FREEBSD_FALSE POWERPC_FREEBSD_TRUE POWERPC_DARWIN_FALSE POWERPC_DARWIN_TRUE POWERPC_AIX_FALSE POWERPC_AIX_TRUE POWERPC_FALSE POWERPC_TRUE OR1K_FALSE OR1K_TRUE NIOS2_FALSE NIOS2_TRUE MOXIE_FALSE MOXIE_TRUE METAG_FALSE METAG_TRUE MICROBLAZE_FALSE MICROBLAZE_TRUE M88K_FALSE M88K_TRUE M68K_FALSE M68K_TRUE M32R_FALSE M32R_TRUE IA64_FALSE IA64_TRUE ALPHA_FALSE ALPHA_TRUE X86_DARWIN64_FALSE X86_DARWIN64_TRUE X86_DARWIN32_FALSE X86_DARWIN32_TRUE X86_DARWIN_FALSE X86_DARWIN_TRUE X86_WIN64_FALSE X86_WIN64_TRUE X86_WIN32_FALSE X86_WIN32_TRUE X86_FREEBSD_FALSE X86_FREEBSD_TRUE X86_FALSE X86_TRUE SPARC_FALSE SPARC_TRUE BFIN_FALSE BFIN_TRUE MIPS_FALSE MIPS_TRUE AM_LTLDFLAGS AM_RUNTESTFLAGS TESTSUBDIR_FALSE TESTSUBDIR_TRUE MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE PRTDIAG CXXCPP CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE CCASFLAGS CCAS am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM ax_enable_builddir_sed target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_builddir enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_portable_binary with_gcc_arch enable_maintainer_mode enable_pax_emutramp enable_debug enable_structs enable_raw_api enable_purify_safety ' ac_precious_vars='build_alias host_alias target_alias CCAS CCASFLAGS CPP CPPFLAGS CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libffi 3.2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/libffi] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libffi 3.2.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-builddir disable automatic build in subdir of sources --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-portable-binary disable compiler optimizations that would produce unportable binaries --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC --enable-debug debugging mode --disable-structs omit code for struct support --disable-raw-api make the raw api unavailable --enable-purify-safety purify-safe mode Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gcc-arch= use architecture for gcc -march/-mtune, instead of guessing Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libffi configure 3.2.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------------------ ## ## Report this to http://github.com/atgreen/libffi/issues ## ## ------------------------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libffi $as_me 3.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers fficonfig.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- target_alias=${target_alias-$host_alias} case "${host}" in frv*-elf) LDFLAGS=`echo $LDFLAGS | sed "s/\-B^ *libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ ;; esac # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args if test "${ac_configure_args+set}" != "set" ; then ac_configure_args= for ac_arg in ${1+"$@"}; do ac_configure_args="$ac_configure_args '$ac_arg'" done fi # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ax_enable_builddir="." # Check whether --enable-builddir was given. if test "${enable_builddir+set}" = set; then : enableval=$enable_builddir; ax_enable_builddir="$enableval" else ax_enable_builddir="auto" fi if test ".$ac_srcdir_defaulted" != ".no" ; then if test ".$srcdir" = ".." ; then if test -f config.status ; then { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5 $as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;} else test ".$ax_enable_builddir" = "." && ax_enable_builddir="." test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="." test ".$TARGET" = "." && TARGET="$target" test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET" if test ".$ax_enable_builddir" != ".." ; then # we know where to go and as_dir=$ax_enable_builddir; as_fn_mkdir_p echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp cd $ax_enable_builddir if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then rm conftest.tmp { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5 $as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; } else as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5 fi srcdir=`echo "$ax_enable_builddir" | sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'` # going to restart from subdirectory location test -f $srcdir/config.log && mv $srcdir/config.log . test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . test -f $srcdir/conftest.log && mv $srcdir/conftest.log . test -f $srcdir/$cache_file && mv $srcdir/$cache_file . { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5 $as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; } case "$0" in # restart [\\/]* | ?:[\\/]*) # Asbolute name eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; esac ; exit $? fi fi fi fi test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="." # Extract the first word of "gsed sed", so it can be a program name with args. set dummy gsed sed; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ax_enable_builddir_sed+:} false; then : $as_echo_n "(cached) " >&6 else case $ax_enable_builddir_sed in [\\/]* | ?:[\\/]*) ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed" ;; esac fi ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed if test -n "$ax_enable_builddir_sed"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5 $as_echo "$ax_enable_builddir_sed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ax_enable_builddir_auxdir="$am_aux_dir" ac_config_commands="$ac_config_commands buildir" am__api_version='1.14' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='libffi' VERSION='3.2.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # The same as in boehm-gc and libstdc++. Have to borrow it from there. # We must force CC to /not/ be precious variables; otherwise # the wrong, non-multilib-adjusted value will be used in multilibs. # As a side effect, we have to subst CFLAGS ourselves. # Also save and restore CFLAGS, since AC_PROG_CC will come up with # defaults of its own if none are provided. save_CFLAGS=$CFLAGS ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi CFLAGS=$save_CFLAGS # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CCAS_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CCAS_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CCAS_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 $as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then am__fastdepCCAS_TRUE= am__fastdepCCAS_FALSE='#' else am__fastdepCCAS_TRUE='#' am__fastdepCCAS_FALSE= fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Test for 64-bit build. # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 $as_echo_n "checking size of size_t... " >&6; } if ${ac_cv_sizeof_size_t+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : else if test "$ac_cv_type_size_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (size_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_size_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 $as_echo "$ac_cv_sizeof_size_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 $as_echo_n "checking for C compiler vendor... " >&6; } if ${ax_cv_c_compiler_vendor+:} false; then : $as_echo_n "(cached) " >&6 else # note: don't check for gcc first since some other compilers define __GNUC__ vendors="intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__TURBOC__ comeau: __COMO__ cray: _CRAYC kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ portland: __PGI unknown: UNKNOWN" for ventest in $vendors; do case $ventest in *:) vendor=$ventest; continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if !($vencpp) thisisanerror; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 $as_echo "$ax_cv_c_compiler_vendor" >&6; } # Check whether --enable-portable-binary was given. if test "${enable_portable_binary+set}" = set; then : enableval=$enable_portable_binary; acx_maxopt_portable=$enableval else acx_maxopt_portable=no fi # Try to determine "good" native compiler flags if none specified via CFLAGS if test "$ac_test_CFLAGS" != "set"; then CFLAGS="" case $ax_cv_c_compiler_vendor in dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" if test "x$acx_maxopt_portable" = xno; then CFLAGS="$CFLAGS -arch host" fi;; sun) CFLAGS="-native -fast -xO5 -dalign" if test "x$acx_maxopt_portable" = xyes; then CFLAGS="$CFLAGS -xarch=generic" fi;; hp) CFLAGS="+Oall +Optrs_ansi +DSnative" if test "x$acx_maxopt_portable" = xyes; then CFLAGS="$CFLAGS +DAportable" fi;; ibm) if test "x$acx_maxopt_portable" = xno; then xlc_opt="-qarch=auto -qtune=auto" else xlc_opt="-qtune=auto" fi as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5 $as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; } if eval \${$as_CACHEVAR+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $xlc_opt" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_CACHEVAR=yes" else eval "$as_CACHEVAR=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : CFLAGS="-O3 -qansialias -w $xlc_opt" else CFLAGS="-O3 -qansialias -w" echo "******************************************************" echo "* You seem to have the IBM C compiler. It is *" echo "* recommended for best performance that you use: *" echo "* *" echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" echo "* ^^^ ^^^ *" echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" echo "* CPU you have. (Set the CFLAGS environment var. *" echo "* and re-run configure.) For more info, man cc. *" echo "******************************************************" fi ;; intel) CFLAGS="-O3 -ansi_alias" if test "x$acx_maxopt_portable" = xno; then icc_archflag=unknown icc_flags="" case $host_cpu in i686*|x86_64*) # icc accepts gcc assembly syntax, so these should work: ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 $as_echo_n "checking for x86 cpuid 0 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 $as_echo_n "checking for x86 cpuid 1 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_1+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_1=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 1, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG *:756e6547:*:*) # Intel case $ax_cv_gcc_x86_cpuid_1 in *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";; *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";; *f??:*:*:*) icc_flags="-xN -xW -xK";; esac ;; esac ;; esac if test "x$icc_flags" != x; then for flag in $icc_flags; do as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 $as_echo_n "checking whether C compiler accepts $flag... " >&6; } if eval \${$as_CACHEVAR+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $flag" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_CACHEVAR=yes" else eval "$as_CACHEVAR=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : icc_archflag=$flag; break else : fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5 $as_echo_n "checking for icc architecture flag... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5 $as_echo "$icc_archflag" >&6; } if test "x$icc_archflag" != xunknown; then CFLAGS="$CFLAGS $icc_archflag" fi fi ;; gnu) # default optimization flags for gcc on all systems CFLAGS="-O3 -fomit-frame-pointer" # -malign-double for x86 systems # LIBFFI -- DON'T DO THIS - CHANGES ABI # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") # -fstrict-aliasing for gcc-2.95+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5 $as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; } if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -fstrict-aliasing" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___fstrict_aliasing=yes else ax_cv_check_cflags___fstrict_aliasing=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5 $as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; } if test x"$ax_cv_check_cflags___fstrict_aliasing" = xyes; then : CFLAGS="$CFLAGS -fstrict-aliasing" else : fi # note that we enable "unsafe" fp optimization with other compilers, too { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5 $as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; } if ${ax_cv_check_cflags___ffast_math+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -ffast-math" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___ffast_math=yes else ax_cv_check_cflags___ffast_math=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5 $as_echo "$ax_cv_check_cflags___ffast_math" >&6; } if test x"$ax_cv_check_cflags___ffast_math" = xyes; then : CFLAGS="$CFLAGS -ffast-math" else : fi # Check whether --with-gcc-arch was given. if test "${with_gcc_arch+set}" = set; then : withval=$with_gcc_arch; ax_gcc_arch=$withval else ax_gcc_arch=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 $as_echo_n "checking for gcc architecture flag... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } if ${ax_cv_gcc_archflag+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_gcc_archflag="unknown" if test "$GCC" = yes; then if test "x$ax_gcc_arch" = xyes; then ax_gcc_arch="" if test "$cross_compiling" = no; then case $host_cpu in i[3456]86*|x86_64*) # use cpuid codes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 $as_echo_n "checking for x86 cpuid 0 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 $as_echo_n "checking for x86 cpuid 1 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_1+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_1=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 1, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu case $ax_cv_gcc_x86_cpuid_0 in *:756e6547:*:*) # Intel case $ax_cv_gcc_x86_cpuid_1 in *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; *5??:*:*:*) ax_gcc_arch=pentium ;; *0?6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; *0?6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; *0?6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; *0?6[9de]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; *0?6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; *1?6[7d]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; *1?6[aef]?:*:*:*|*2?6[5cef]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;; *1?6c?:*:*:*|*[23]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;; *2?6[ad]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;; *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; ?000?f3[347]:*:*:*|?000?f41347:*:*:*|?000?f6?:*:*:*) case $host_cpu in x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;; *) ax_gcc_arch="prescott pentium4 pentiumpro" ;; esac ;; ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";; esac ;; *:68747541:*:*) # AMD case $ax_cv_gcc_x86_cpuid_1 in *5[67]?:*:*:*) ax_gcc_arch=k6 ;; *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; *60?:*:*:*) ax_gcc_arch=k7 ;; *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;; *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;; *6[68a]?:*:*:*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5 $as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x80000006=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x80000006, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # L2 cache size case $ax_cv_gcc_x86_cpuid_0x80000006 in *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256 ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; *) ax_gcc_arch="athlon-4 athlon k7" ;; esac ;; ?00??f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;; ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;; ?00??f??:*:*:*) ax_gcc_arch="k8" ;; ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; esac ;; *:746e6543:*:*) # IDT case $ax_cv_gcc_x86_cpuid_1 in *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; *58?:*:*:*) ax_gcc_arch=winchip2 ;; *6[78]?:*:*:*) ax_gcc_arch=c3 ;; *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;; esac ;; esac if test x"$ax_gcc_arch" = x; then # fallback case $host_cpu in i586*) ax_gcc_arch=pentium ;; i686*) ax_gcc_arch=pentiumpro ;; esac fi ;; sparc*) # Extract the first word of "prtdiag", so it can be a program name with args. set dummy prtdiag; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PRTDIAG+:} false; then : $as_echo_n "(cached) " >&6 else case $PRTDIAG in [\\/]* | ?:[\\/]*) ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag" ;; esac fi PRTDIAG=$ac_cv_path_PRTDIAG if test -n "$PRTDIAG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5 $as_echo "$PRTDIAG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters` case $cputype in *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;; *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;; *cypress*) ax_gcc_arch=cypress ;; esac ;; alphaev5) ax_gcc_arch=ev5 ;; alphaev56) ax_gcc_arch=ev56 ;; alphapca56) ax_gcc_arch="pca56 ev56" ;; alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; alphaev6) ax_gcc_arch=ev6 ;; alphaev67) ax_gcc_arch=ev67 ;; alphaev68) ax_gcc_arch="ev68 ev67" ;; alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; powerpc*) cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` case $cputype in *750*) ax_gcc_arch="750 G3" ;; *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;; *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;; *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;; *970*) ax_gcc_arch="970 G5 power4";; *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; 603ev|8240) ax_gcc_arch="$cputype 603e 603";; *) ax_gcc_arch=$cputype ;; esac ax_gcc_arch="$ax_gcc_arch powerpc" ;; esac fi # not cross-compiling fi # guess arch if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then for arch in $ax_gcc_arch; do if test "x$acx_maxopt_portable" = xyes; then # if we require portable code flags="-mtune=$arch" # -mcpu=$arch and m$arch generate nonportable code on every arch except # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac else flags="-march=$arch -mcpu=$arch -m$arch" fi for flag in $flags; do as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 $as_echo_n "checking whether C compiler accepts $flag... " >&6; } if eval \${$as_CACHEVAR+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $flag" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_CACHEVAR=yes" else eval "$as_CACHEVAR=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : ax_cv_gcc_archflag=$flag; break else : fi done test "x$ax_cv_gcc_archflag" = xunknown || break done fi fi # $GCC=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 $as_echo_n "checking for gcc architecture flag... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5 $as_echo "$ax_cv_gcc_archflag" >&6; } if test "x$ax_cv_gcc_archflag" = xunknown; then : else CFLAGS="$CFLAGS $ax_cv_gcc_archflag" fi ;; esac if test -z "$CFLAGS"; then echo "" echo "********************************************************" echo "* WARNING: Don't know the best CFLAGS for this system *" echo "* Use ./configure CFLAGS=... to specify your own flags *" echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" echo "********************************************************" echo "" CFLAGS="-O3" fi as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5 $as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; } if eval \${$as_CACHEVAR+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_CACHEVAR=yes" else eval "$as_CACHEVAR=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : : else echo "" echo "********************************************************" echo "* WARNING: The guessed CFLAGS don't seem to work with *" echo "* your compiler. *" echo "* Use ./configure CFLAGS=... to specify your own flags *" echo "********************************************************" echo "" CFLAGS="" fi fi # The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro # compiler. if test "$ax_cv_c_compiler_vendor" != "sun"; then if ${CFLAGS+:} false; then : case " $CFLAGS " in *" "*) { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains "; } >&5 (: CFLAGS already contains ) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; *) { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \""; } >&5 (: CFLAGS="$CFLAGS ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS " ;; esac else CFLAGS="" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5 $as_echo_n "checking CFLAGS for maximum warnings... " >&6; } if ${ac_cv_cflags_warn_all+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_cflags_warn_all="no, unknown" ac_save_CFLAGS="$CFLAGS" for ac_arg in "-warn all % -warn all" "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 $as_echo "$ac_cv_cflags_warn_all" >&6; } case ".$ac_cv_cflags_warn_all" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if ${CFLAGS+:} false; then : case " $CFLAGS " in *" $ac_cv_cflags_warn_all "*) { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; *) { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5 (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ac_cv_cflags_warn_all" ;; esac else CFLAGS="$ac_cv_cflags_warn_all" fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -fexceptions" fi cat > local.exp <&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE for ac_header in sys/mman.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mman_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_MMAN_H 1 _ACEOF fi done for ac_func in mmap mkostemp do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mman_h" = xyes; then : libffi_header_sys_mman_h=yes else libffi_header_sys_mman_h=no fi ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" if test "x$ac_cv_func_mmap" = xyes; then : libffi_func_mmap=yes else libffi_func_mmap=no fi if test "$libffi_header_sys_mman_h" != yes \ || test "$libffi_func_mmap" != yes; then ac_cv_func_mmap_file=no ac_cv_func_mmap_dev_zero=no ac_cv_func_mmap_anon=no else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 $as_echo_n "checking whether read-only mmap of a plain file works... " >&6; } if ${ac_cv_func_mmap_file+:} false; then : $as_echo_n "(cached) " >&6 else # Add a system to this blacklist if # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a # memory area containing the same data that you'd get if you applied # read() to the same fd. The only system known to have a problem here # is VMS, where text files have record structure. case "$host_os" in vms* | ultrix*) ac_cv_func_mmap_file=no ;; *) ac_cv_func_mmap_file=yes;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5 $as_echo "$ac_cv_func_mmap_file" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 $as_echo_n "checking whether mmap from /dev/zero works... " >&6; } if ${ac_cv_func_mmap_dev_zero+:} false; then : $as_echo_n "(cached) " >&6 else # Add a system to this blacklist if it has mmap() but /dev/zero # does not exist, or if mmapping /dev/zero does not give anonymous # zeroed pages with both the following properties: # 1. If you map N consecutive pages in with one call, and then # unmap any subset of those pages, the pages that were not # explicitly unmapped remain accessible. # 2. If you map two adjacent blocks of memory and then unmap them # both at once, they must both go away. # Systems known to be in this category are Windows (all variants), # VMS, and Darwin. case "$host_os" in vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) ac_cv_func_mmap_dev_zero=no ;; *) ac_cv_func_mmap_dev_zero=yes;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5 $as_echo "$ac_cv_func_mmap_dev_zero" >&6; } # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 $as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; } if ${ac_cv_decl_map_anon+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif int main () { int n = MAP_ANONYMOUS; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_decl_map_anon=yes else ac_cv_decl_map_anon=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5 $as_echo "$ac_cv_decl_map_anon" >&6; } if test $ac_cv_decl_map_anon = no; then ac_cv_func_mmap_anon=no else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 $as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } if ${ac_cv_func_mmap_anon+:} false; then : $as_echo_n "(cached) " >&6 else # Add a system to this blacklist if it has mmap() and MAP_ANON or # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) # doesn't give anonymous zeroed pages with the same properties listed # above for use of /dev/zero. # Systems known to be in this category are Windows, VMS, and SCO Unix. case "$host_os" in vms* | cygwin* | pe | mingw* | sco* | udk* ) ac_cv_func_mmap_anon=no ;; *) ac_cv_func_mmap_anon=yes;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5 $as_echo "$ac_cv_func_mmap_anon" >&6; } fi fi if test $ac_cv_func_mmap_file = yes; then $as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h fi if test $ac_cv_func_mmap_dev_zero = yes; then $as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h fi if test $ac_cv_func_mmap_anon = yes; then $as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h fi if test -d $srcdir/testsuite; then TESTSUBDIR_TRUE= TESTSUBDIR_FALSE='#' else TESTSUBDIR_TRUE='#' TESTSUBDIR_FALSE= fi TARGETDIR="unknown" HAVE_LONG_DOUBLE_VARIANT=0 case "$host" in aarch64*-*-*) TARGET=AARCH64; TARGETDIR=aarch64 ;; alpha*-*-*) TARGET=ALPHA; TARGETDIR=alpha; # Support 128-bit long double, changeable via command-line switch. HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' ;; arc*-*-*) TARGET=ARC; TARGETDIR=arc ;; arm*-*-*) TARGET=ARM; TARGETDIR=arm ;; amd64-*-freebsd* | amd64-*-openbsd*) TARGET=X86_64; TARGETDIR=x86 ;; amd64-*-freebsd*) TARGET=X86_64; TARGETDIR=x86 ;; amd64-*-freebsd*) TARGET=X86_64; TARGETDIR=x86 ;; avr32*-*-*) TARGET=AVR32; TARGETDIR=avr32 ;; bfin*) TARGET=BFIN; TARGETDIR=bfin ;; cris-*-*) TARGET=LIBFFI_CRIS; TARGETDIR=cris ;; frv-*-*) TARGET=FRV; TARGETDIR=frv ;; hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*) TARGET=PA_LINUX; TARGETDIR=pa ;; hppa*64-*-hpux*) TARGET=PA64_HPUX; TARGETDIR=pa ;; hppa*-*-hpux*) TARGET=PA_HPUX; TARGETDIR=pa ;; i?86-*-freebsd* | i?86-*-openbsd*) TARGET=X86_FREEBSD; TARGETDIR=x86 ;; i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*) TARGET=X86_WIN32; TARGETDIR=x86 # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. # We must also check with_cross_host to decide if this is a native # or cross-build and select where to install dlls appropriately. if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; else AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; fi ;; i?86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86 ;; i?86-*-solaris2.1[0-9]*) TARGETDIR=x86 if test $ac_cv_sizeof_size_t = 4; then TARGET=X86; else TARGET=X86_64; fi ;; x86_64-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86 ;; x86_64-*-cygwin* | x86_64-*-mingw*) TARGET=X86_WIN64; TARGETDIR=x86 # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. # We must also check with_cross_host to decide if this is a native # or cross-build and select where to install dlls appropriately. if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; else AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; fi ;; i?86-*-* | x86_64-*-*) TARGETDIR=x86 if test $ac_cv_sizeof_size_t = 4; then case "$host" in *-gnux32) TARGET=X86_64 ;; *) TARGET=X86 ;; esac else TARGET=X86_64; fi ;; ia64*-*-*) TARGET=IA64; TARGETDIR=ia64 ;; m32r*-*-*) TARGET=M32R; TARGETDIR=m32r ;; m68k-*-*) TARGET=M68K; TARGETDIR=m68k ;; m88k-*-*) TARGET=M88K; TARGETDIR=m88k ;; microblaze*-*-*) TARGET=MICROBLAZE; TARGETDIR=microblaze ;; moxie-*-*) TARGET=MOXIE; TARGETDIR=moxie ;; metag-*-*) TARGET=METAG; TARGETDIR=metag ;; mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*) TARGET=MIPS; TARGETDIR=mips ;; mips*-*linux* | mips*-*-openbsd*) # Support 128-bit long double for NewABI. HAVE_LONG_DOUBLE='defined(__mips64)' TARGET=MIPS; TARGETDIR=mips ;; nios2*-linux*) TARGET=NIOS2; TARGETDIR=nios2 ;; or1k*-linux*) TARGET=OR1K; TARGETDIR=or1k ;; powerpc*-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc HAVE_LONG_DOUBLE_VARIANT=1 ;; powerpc-*-amigaos*) TARGET=POWERPC; TARGETDIR=powerpc ;; powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc ;; powerpc-*-darwin* | powerpc64-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc ;; powerpc-*-aix* | rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc ;; powerpc-*-freebsd* | powerpc-*-openbsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc HAVE_LONG_DOUBLE_VARIANT=1 ;; powerpc64-*-freebsd*) TARGET=POWERPC; TARGETDIR=powerpc ;; powerpc*-*-rtems*) TARGET=POWERPC; TARGETDIR=powerpc ;; s390-*-* | s390x-*-*) TARGET=S390; TARGETDIR=s390 ;; sh-*-* | sh[34]*-*-*) TARGET=SH; TARGETDIR=sh ;; sh64-*-* | sh5*-*-*) TARGET=SH64; TARGETDIR=sh64 ;; sparc*-*-*) TARGET=SPARC; TARGETDIR=sparc ;; tile*-*) TARGET=TILE; TARGETDIR=tile ;; vax-*-*) TARGET=VAX; TARGETDIR=vax ;; xtensa*-*) TARGET=XTENSA; TARGETDIR=xtensa ;; esac if test $TARGETDIR = unknown; then as_fn_error $? "\"libffi has not been ported to $host.\"" "$LINENO" 5 fi if test x$TARGET = xMIPS; then MIPS_TRUE= MIPS_FALSE='#' else MIPS_TRUE='#' MIPS_FALSE= fi if test x$TARGET = xBFIN; then BFIN_TRUE= BFIN_FALSE='#' else BFIN_TRUE='#' BFIN_FALSE= fi if test x$TARGET = xSPARC; then SPARC_TRUE= SPARC_FALSE='#' else SPARC_TRUE='#' SPARC_FALSE= fi if test x$TARGET = xX86; then X86_TRUE= X86_FALSE='#' else X86_TRUE='#' X86_FALSE= fi if test x$TARGET = xX86_FREEBSD; then X86_FREEBSD_TRUE= X86_FREEBSD_FALSE='#' else X86_FREEBSD_TRUE='#' X86_FREEBSD_FALSE= fi if test x$TARGET = xX86_WIN32; then X86_WIN32_TRUE= X86_WIN32_FALSE='#' else X86_WIN32_TRUE='#' X86_WIN32_FALSE= fi if test x$TARGET = xX86_WIN64; then X86_WIN64_TRUE= X86_WIN64_FALSE='#' else X86_WIN64_TRUE='#' X86_WIN64_FALSE= fi if test x$TARGET = xX86_DARWIN; then X86_DARWIN_TRUE= X86_DARWIN_FALSE='#' else X86_DARWIN_TRUE='#' X86_DARWIN_FALSE= fi if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4; then X86_DARWIN32_TRUE= X86_DARWIN32_FALSE='#' else X86_DARWIN32_TRUE='#' X86_DARWIN32_FALSE= fi if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8; then X86_DARWIN64_TRUE= X86_DARWIN64_FALSE='#' else X86_DARWIN64_TRUE='#' X86_DARWIN64_FALSE= fi if test x$TARGET = xALPHA; then ALPHA_TRUE= ALPHA_FALSE='#' else ALPHA_TRUE='#' ALPHA_FALSE= fi if test x$TARGET = xIA64; then IA64_TRUE= IA64_FALSE='#' else IA64_TRUE='#' IA64_FALSE= fi if test x$TARGET = xM32R; then M32R_TRUE= M32R_FALSE='#' else M32R_TRUE='#' M32R_FALSE= fi if test x$TARGET = xM68K; then M68K_TRUE= M68K_FALSE='#' else M68K_TRUE='#' M68K_FALSE= fi if test x$TARGET = xM88K; then M88K_TRUE= M88K_FALSE='#' else M88K_TRUE='#' M88K_FALSE= fi if test x$TARGET = xMICROBLAZE; then MICROBLAZE_TRUE= MICROBLAZE_FALSE='#' else MICROBLAZE_TRUE='#' MICROBLAZE_FALSE= fi if test x$TARGET = xMETAG; then METAG_TRUE= METAG_FALSE='#' else METAG_TRUE='#' METAG_FALSE= fi if test x$TARGET = xMOXIE; then MOXIE_TRUE= MOXIE_FALSE='#' else MOXIE_TRUE='#' MOXIE_FALSE= fi if test x$TARGET = xNIOS2; then NIOS2_TRUE= NIOS2_FALSE='#' else NIOS2_TRUE='#' NIOS2_FALSE= fi if test x$TARGET = xOR1K; then OR1K_TRUE= OR1K_FALSE='#' else OR1K_TRUE='#' OR1K_FALSE= fi if test x$TARGET = xPOWERPC; then POWERPC_TRUE= POWERPC_FALSE='#' else POWERPC_TRUE='#' POWERPC_FALSE= fi if test x$TARGET = xPOWERPC_AIX; then POWERPC_AIX_TRUE= POWERPC_AIX_FALSE='#' else POWERPC_AIX_TRUE='#' POWERPC_AIX_FALSE= fi if test x$TARGET = xPOWERPC_DARWIN; then POWERPC_DARWIN_TRUE= POWERPC_DARWIN_FALSE='#' else POWERPC_DARWIN_TRUE='#' POWERPC_DARWIN_FALSE= fi if test x$TARGET = xPOWERPC_FREEBSD; then POWERPC_FREEBSD_TRUE= POWERPC_FREEBSD_FALSE='#' else POWERPC_FREEBSD_TRUE='#' POWERPC_FREEBSD_FALSE= fi if test x$TARGET = xAARCH64; then AARCH64_TRUE= AARCH64_FALSE='#' else AARCH64_TRUE='#' AARCH64_FALSE= fi if test x$TARGET = xARC; then ARC_TRUE= ARC_FALSE='#' else ARC_TRUE='#' ARC_FALSE= fi if test x$TARGET = xARM; then ARM_TRUE= ARM_FALSE='#' else ARM_TRUE='#' ARM_FALSE= fi if test x$TARGET = xAVR32; then AVR32_TRUE= AVR32_FALSE='#' else AVR32_TRUE='#' AVR32_FALSE= fi if test x$TARGET = xLIBFFI_CRIS; then LIBFFI_CRIS_TRUE= LIBFFI_CRIS_FALSE='#' else LIBFFI_CRIS_TRUE='#' LIBFFI_CRIS_FALSE= fi if test x$TARGET = xFRV; then FRV_TRUE= FRV_FALSE='#' else FRV_TRUE='#' FRV_FALSE= fi if test x$TARGET = xS390; then S390_TRUE= S390_FALSE='#' else S390_TRUE='#' S390_FALSE= fi if test x$TARGET = xX86_64; then X86_64_TRUE= X86_64_FALSE='#' else X86_64_TRUE='#' X86_64_FALSE= fi if test x$TARGET = xSH; then SH_TRUE= SH_FALSE='#' else SH_TRUE='#' SH_FALSE= fi if test x$TARGET = xSH64; then SH64_TRUE= SH64_FALSE='#' else SH64_TRUE='#' SH64_FALSE= fi if test x$TARGET = xPA_LINUX; then PA_LINUX_TRUE= PA_LINUX_FALSE='#' else PA_LINUX_TRUE='#' PA_LINUX_FALSE= fi if test x$TARGET = xPA_HPUX; then PA_HPUX_TRUE= PA_HPUX_FALSE='#' else PA_HPUX_TRUE='#' PA_HPUX_FALSE= fi if test x$TARGET = xPA64_HPUX; then PA64_HPUX_TRUE= PA64_HPUX_FALSE='#' else PA64_HPUX_TRUE='#' PA64_HPUX_FALSE= fi if test x$TARGET = xTILE; then TILE_TRUE= TILE_FALSE='#' else TILE_TRUE='#' TILE_FALSE= fi if test x$TARGET = xVAX; then VAX_TRUE= VAX_FALSE='#' else VAX_TRUE='#' VAX_FALSE= fi if test x$TARGET = xXTENSA; then XTENSA_TRUE= XTENSA_FALSE='#' else XTENSA_TRUE='#' XTENSA_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi for ac_func in memcpy do : ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" if test "x$ac_cv_func_memcpy" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MEMCPY 1 _ACEOF fi done ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } if ${ac_cv_working_alloca_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } if ${ac_cv_func_alloca_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ void *alloca (size_t); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then $as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext $as_echo "#define C_ALLOCA 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } if ${ac_cv_c_stack_direction+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 $as_echo_n "checking size of double... " >&6; } if ${ac_cv_sizeof_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : else if test "$ac_cv_type_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 $as_echo "$ac_cv_sizeof_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 $as_echo_n "checking size of long double... " >&6; } if ${ac_cv_sizeof_long_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : else if test "$ac_cv_type_long_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 $as_echo "$ac_cv_sizeof_long_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF # Also AC_SUBST this variable for ffi.h. if test -z "$HAVE_LONG_DOUBLE"; then HAVE_LONG_DOUBLE=0 if test $ac_cv_sizeof_long_double != 0; then if test $HAVE_LONG_DOUBLE_VARIANT != 0; then $as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h HAVE_LONG_DOUBLE=1 else if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then HAVE_LONG_DOUBLE=1 $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5 $as_echo_n "checking assembler .cfi pseudo-op support... " >&6; } if ${gcc_cv_as_cfi_pseudo_op+:} false; then : $as_echo_n "(cached) " >&6 else gcc_cv_as_cfi_pseudo_op=unknown cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ asm (".cfi_startproc\n\t.cfi_endproc"); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gcc_cv_as_cfi_pseudo_op=yes else gcc_cv_as_cfi_pseudo_op=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5 $as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; } if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then $as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h fi if test x$TARGET = xSPARC; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5 $as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; } if ${libffi_cv_as_sparc_ua_pcrel+:} false; then : $as_echo_n "(cached) " >&6 else save_CFLAGS="$CFLAGS" save_LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS -fpic" LDFLAGS="$LDFLAGS -shared" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : libffi_cv_as_sparc_ua_pcrel=yes else libffi_cv_as_sparc_ua_pcrel=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_sparc_ua_pcrel" >&5 $as_echo "$libffi_cv_as_sparc_ua_pcrel" >&6; } if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then $as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5 $as_echo_n "checking assembler .register pseudo-op support... " >&6; } if ${libffi_cv_as_register_pseudo_op+:} false; then : $as_echo_n "(cached) " >&6 else libffi_cv_as_register_pseudo_op=unknown # Check if we have .register cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { asm (".register %g2, #scratch"); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : libffi_cv_as_register_pseudo_op=yes else libffi_cv_as_register_pseudo_op=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_register_pseudo_op" >&5 $as_echo "$libffi_cv_as_register_pseudo_op" >&6; } if test "x$libffi_cv_as_register_pseudo_op" = xyes; then $as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h fi fi if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 $as_echo_n "checking assembler supports pc related relocs... " >&6; } if ${libffi_cv_as_x86_pcrel+:} false; then : $as_echo_n "(cached) " >&6 else libffi_cv_as_x86_pcrel=no echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then libffi_cv_as_x86_pcrel=yes fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 $as_echo "$libffi_cv_as_x86_pcrel" >&6; } if test "x$libffi_cv_as_x86_pcrel" = xyes; then $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5 $as_echo_n "checking assembler .ascii pseudo-op support... " >&6; } if ${libffi_cv_as_ascii_pseudo_op+:} false; then : $as_echo_n "(cached) " >&6 else libffi_cv_as_ascii_pseudo_op=unknown # Check if we have .ascii cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { asm (".ascii \\"string\\""); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : libffi_cv_as_ascii_pseudo_op=yes else libffi_cv_as_ascii_pseudo_op=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_ascii_pseudo_op" >&5 $as_echo "$libffi_cv_as_ascii_pseudo_op" >&6; } if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then $as_echo "#define HAVE_AS_ASCII_PSEUDO_OP 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5 $as_echo_n "checking assembler .string pseudo-op support... " >&6; } if ${libffi_cv_as_string_pseudo_op+:} false; then : $as_echo_n "(cached) " >&6 else libffi_cv_as_string_pseudo_op=unknown # Check if we have .string cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { asm (".string \\"string\\""); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : libffi_cv_as_string_pseudo_op=yes else libffi_cv_as_string_pseudo_op=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_string_pseudo_op" >&5 $as_echo "$libffi_cv_as_string_pseudo_op" >&6; } if test "x$libffi_cv_as_string_pseudo_op" = xyes; then $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h fi fi # On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. # Check whether --enable-pax_emutramp was given. if test "${enable_pax_emutramp+set}" = set; then : enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then $as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 $as_echo_n "checking for _ prefix in compiled symbols... " >&6; } if ${lt_cv_sys_symbol_underscore+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. ac_nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&5 fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "configure: failed program was:" >&5 cat conftest.c >&5 fi rm -rf conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 $as_echo "$lt_cv_sys_symbol_underscore" >&6; } sys_symbol_underscore=$lt_cv_sys_symbol_underscore if test "x$sys_symbol_underscore" = xyes; then $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h fi FFI_EXEC_TRAMPOLINE_TABLE=0 case "$target" in *arm*-apple-darwin*) FFI_EXEC_TRAMPOLINE_TABLE=1 $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h ;; *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*) $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h ;; esac if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then FFI_EXEC_TRAMPOLINE_TABLE_TRUE= FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#' else FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#' FFI_EXEC_TRAMPOLINE_TABLE_FALSE= fi if test x$TARGET = xX86_64; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 $as_echo_n "checking toolchain supports unwind section type... " >&6; } if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest1.s << EOF .text .globl foo foo: jmp bar .section .eh_frame,"a",@unwind bar: EOF cat > conftest2.c << EOF extern void foo(); int main(){foo();} EOF libffi_cv_as_x86_64_unwind_section_type=no # we ensure that we can compile _and_ link an assembly file containing an @unwind section # since the compiler can support it and not the linker (ie old binutils) if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then libffi_cv_as_x86_64_unwind_section_type=yes fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5 $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; } if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h fi fi if test "x$GCC" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; } if ${libffi_cv_ro_eh_frame+:} false; then : $as_echo_n "(cached) " >&6 else libffi_cv_ro_eh_frame=no echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then objdump -h conftest.o > conftest.dump 2>&1 libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` libffi_test_line=`expr $libffi_eh_frame_line + 1`p sed -n $libffi_test_line conftest.dump > conftest.line if grep READONLY conftest.line > /dev/null; then libffi_cv_ro_eh_frame=yes fi fi rm -f conftest.* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5 $as_echo "$libffi_cv_ro_eh_frame" >&6; } if test "x$libffi_cv_ro_eh_frame" = xyes; then $as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h $as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h else $as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 $as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; } if ${libffi_cv_hidden_visibility_attribute+:} false; then : $as_echo_n "(cached) " >&6 else echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c libffi_cv_hidden_visibility_attribute=no if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then if grep '\.hidden.*foo' conftest.s >/dev/null; then libffi_cv_hidden_visibility_attribute=yes fi fi rm -f conftest.* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5 $as_echo "$libffi_cv_hidden_visibility_attribute" >&6; } if test $libffi_cv_hidden_visibility_attribute = yes; then $as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h fi fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; if test "$enable_debug" = "yes"; then $as_echo "#define FFI_DEBUG 1" >>confdefs.h fi fi if test "$enable_debug" = "yes"; then FFI_DEBUG_TRUE= FFI_DEBUG_FALSE='#' else FFI_DEBUG_TRUE='#' FFI_DEBUG_FALSE= fi # Check whether --enable-structs was given. if test "${enable_structs+set}" = set; then : enableval=$enable_structs; if test "$enable_structs" = "no"; then $as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h fi fi if test "$enable_debug" = "yes"; then FFI_DEBUG_TRUE= FFI_DEBUG_FALSE='#' else FFI_DEBUG_TRUE='#' FFI_DEBUG_FALSE= fi # Check whether --enable-raw-api was given. if test "${enable_raw_api+set}" = set; then : enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then $as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h fi fi # Check whether --enable-purify-safety was given. if test "${enable_purify_safety+set}" = set; then : enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then $as_echo "#define USING_PURIFY 1" >>confdefs.h fi fi # These variables are only ever used when we cross-build to X86_WIN32. # And we only support this with GCC, so... if test "x$GCC" = "xyes"; then if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then toolexecdir="${exec_prefix}"/'$(target_alias)' toolexeclibdir="${toolexecdir}"/lib else toolexecdir="${libdir}"/gcc-lib/'$(target_alias)' toolexeclibdir="${libdir}" fi multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` case $multi_os_directory in .) ;; # Avoid trailing /. ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; esac else toolexeclibdir="${libdir}" fi ac_config_commands="$ac_config_commands include" ac_config_commands="$ac_config_commands src" ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then as_fn_error $? "conditional \"TESTSUBDIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then as_fn_error $? "conditional \"MIPS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BFIN_TRUE}" && test -z "${BFIN_FALSE}"; then as_fn_error $? "conditional \"BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then as_fn_error $? "conditional \"SPARC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_TRUE}" && test -z "${X86_FALSE}"; then as_fn_error $? "conditional \"X86\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_FREEBSD_TRUE}" && test -z "${X86_FREEBSD_FALSE}"; then as_fn_error $? "conditional \"X86_FREEBSD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_WIN32_TRUE}" && test -z "${X86_WIN32_FALSE}"; then as_fn_error $? "conditional \"X86_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_WIN64_TRUE}" && test -z "${X86_WIN64_FALSE}"; then as_fn_error $? "conditional \"X86_WIN64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then as_fn_error $? "conditional \"X86_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_DARWIN32_TRUE}" && test -z "${X86_DARWIN32_FALSE}"; then as_fn_error $? "conditional \"X86_DARWIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_DARWIN64_TRUE}" && test -z "${X86_DARWIN64_FALSE}"; then as_fn_error $? "conditional \"X86_DARWIN64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then as_fn_error $? "conditional \"ALPHA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${IA64_TRUE}" && test -z "${IA64_FALSE}"; then as_fn_error $? "conditional \"IA64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${M32R_TRUE}" && test -z "${M32R_FALSE}"; then as_fn_error $? "conditional \"M32R\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${M68K_TRUE}" && test -z "${M68K_FALSE}"; then as_fn_error $? "conditional \"M68K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${M88K_TRUE}" && test -z "${M88K_FALSE}"; then as_fn_error $? "conditional \"M88K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MICROBLAZE_TRUE}" && test -z "${MICROBLAZE_FALSE}"; then as_fn_error $? "conditional \"MICROBLAZE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${METAG_TRUE}" && test -z "${METAG_FALSE}"; then as_fn_error $? "conditional \"METAG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MOXIE_TRUE}" && test -z "${MOXIE_FALSE}"; then as_fn_error $? "conditional \"MOXIE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NIOS2_TRUE}" && test -z "${NIOS2_FALSE}"; then as_fn_error $? "conditional \"NIOS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OR1K_TRUE}" && test -z "${OR1K_FALSE}"; then as_fn_error $? "conditional \"OR1K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${POWERPC_TRUE}" && test -z "${POWERPC_FALSE}"; then as_fn_error $? "conditional \"POWERPC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${POWERPC_AIX_TRUE}" && test -z "${POWERPC_AIX_FALSE}"; then as_fn_error $? "conditional \"POWERPC_AIX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then as_fn_error $? "conditional \"POWERPC_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then as_fn_error $? "conditional \"POWERPC_FREEBSD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AARCH64_TRUE}" && test -z "${AARCH64_FALSE}"; then as_fn_error $? "conditional \"AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARC_TRUE}" && test -z "${ARC_FALSE}"; then as_fn_error $? "conditional \"ARC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then as_fn_error $? "conditional \"ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AVR32_TRUE}" && test -z "${AVR32_FALSE}"; then as_fn_error $? "conditional \"AVR32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LIBFFI_CRIS_TRUE}" && test -z "${LIBFFI_CRIS_FALSE}"; then as_fn_error $? "conditional \"LIBFFI_CRIS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FRV_TRUE}" && test -z "${FRV_FALSE}"; then as_fn_error $? "conditional \"FRV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${S390_TRUE}" && test -z "${S390_FALSE}"; then as_fn_error $? "conditional \"S390\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then as_fn_error $? "conditional \"X86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SH_TRUE}" && test -z "${SH_FALSE}"; then as_fn_error $? "conditional \"SH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SH64_TRUE}" && test -z "${SH64_FALSE}"; then as_fn_error $? "conditional \"SH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PA_LINUX_TRUE}" && test -z "${PA_LINUX_FALSE}"; then as_fn_error $? "conditional \"PA_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PA_HPUX_TRUE}" && test -z "${PA_HPUX_FALSE}"; then as_fn_error $? "conditional \"PA_HPUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then as_fn_error $? "conditional \"PA64_HPUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${TILE_TRUE}" && test -z "${TILE_FALSE}"; then as_fn_error $? "conditional \"TILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${VAX_TRUE}" && test -z "${VAX_FALSE}"; then as_fn_error $? "conditional \"VAX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XTENSA_TRUE}" && test -z "${XTENSA_FALSE}"; then as_fn_error $? "conditional \"XTENSA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by libffi $as_me 3.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_links="$ac_config_links" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration links: $config_links Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libffi config.status 3.2.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # ax_enable_builddir_srcdir="$srcdir" # $srcdir ax_enable_builddir_host="$HOST" # $HOST / $host ax_enable_builddir_version="$VERSION" # $VERSION ax_enable_builddir_package="$PACKAGE" # $PACKAGE ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED ax_enable_builddir="$ax_enable_builddir" # $SUB AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' TARGETDIR="$TARGETDIR" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :L) # # CONFIG_LINK # if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then : else # Prefer the file from the source tree if names are identical. if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then ac_source=$srcdir/$ac_source fi { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 $as_echo "$as_me: linking $ac_source to $ac_file" >&6;} if test ! -r "$ac_source"; then as_fn_error $? "$ac_source: file not found" "$LINENO" 5 fi rm -f "$ac_file" # Try a relative symlink, then a hard link, then a copy. case $ac_source in [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; *) ac_rel_source=$ac_top_build_prefix$ac_source ;; esac ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || ln "$ac_source" "$ac_file" 2>/dev/null || cp -p "$ac_source" "$ac_file" || as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 fi ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir" if test ".$ax_enable_builddir" = ".." ; then if test -f "$top_srcdir/Makefile" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5 $as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5 $as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;} fi else if test -f "$ac_top_srcdir/Makefile" ; then a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile` test "$a" != "$b" && rm "$ac_top_srcdir/Makefile" fi if test -f "$ac_top_srcdir/Makefile" ; then echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null then rm $ac_top_srcdir/Makefile ; fi cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING fi if test ! -f "$ac_top_srcdir/Makefile" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5 $as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;} x='`' ; cat >$tmp/conftemp.sed <<_EOF /^\$/n x /^\$/bS x /\\\\\$/{H;d;} {H;s/.*//;x;} bM :S x /\\\\\$/{h;d;} {h;s/.*//;x;} :M s/\\(\\n\\) /\\1 /g /^ /d /^[ ]*[\\#]/d /^VPATH *=/d s/^srcdir *=.*/srcdir = ./ s/^top_srcdir *=.*/top_srcdir = ./ /[:=]/!d /^\\./d / = /b / .= /b /:/!b s/:.*/:/ s/ / /g s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/ s/ / /g /^all all-all[ :]/i\\ all-configured : all-all s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g /-all-all/d a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done /dist-all *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ ; if test "\$\$found" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done /dist-[a-zA-Z0-9]*-all *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ ; if test "\$\$found" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done /distclean-all *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile _EOF cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile if test -f "$ac_top_srcdir/Makefile.mk" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5 $as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;} cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile fi ; xxxx="####" echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile # sanity check if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5 $as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \ >$ac_top_srcdir/Makefile~ (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null fi else xxxx="\\#\\#\\#\\#" # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5 $as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;} rm "$tmp/mkfile.tmp" else { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5 $as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;} mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5 $as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;} xxxx="####" echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile fi ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "include":C) test -d include || mkdir include ;; "src":C) test -d src || mkdir src test -d src/$TARGETDIR || mkdir src/$TARGETDIR ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi polyml-5.7.1/libffi/config.guess0000755000175000017500000013036113204034553015556 0ustar daviddavid#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: polyml-5.7.1/libffi/LICENSE0000644000175000017500000000215413204034553014241 0ustar daviddavidlibffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. See source files for details. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. polyml-5.7.1/libffi/libtool-ldflags0000644000175000017500000000645213204034553016242 0ustar daviddavid#! /bin/sh # Script to translate LDFLAGS into a form suitable for use with libtool. # Copyright (C) 2005 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # Contributed by CodeSourcery, LLC. # This script is designed to be used from a Makefile that uses libtool # to build libraries as follows: # # LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS)) # # Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line. # The output of the script. This string is built up as we process the # arguments. result= prev_arg= for arg do case $arg in -f*|--*) # Libtool does not ascribe any special meaning options # that begin with -f or with a double-dash. So, it will # think these options are linker options, and prefix them # with "-Wl,". Then, the compiler driver will ignore the # options. So, we prefix these options with -Xcompiler to # make clear to libtool that they are in fact compiler # options. case $prev_arg in -Xpreprocessor|-Xcompiler|-Xlinker) # This option is already prefixed; don't prefix it again. ;; *) result="$result -Xcompiler" ;; esac ;; *) # We do not want to add -Xcompiler to other options because # that would prevent libtool itself from recognizing them. ;; esac prev_arg=$arg # If $(LDFLAGS) is (say): # a "b'c d" e # then the user expects that: # $(LD) $(LDFLAGS) # will pass three arguments to $(LD): # 1) a # 2) b'c d # 3) e # We must ensure, therefore, that the arguments are appropriately # quoted so that using: # libtool --mode=link ... $(LTLDFLAGS) # will result in the same number of arguments being passed to # libtool. In other words, when this script was invoked, the shell # removed one level of quoting, present in $(LDFLAGS); we have to put # it back. # Quote any embedded single quotes. case $arg in *"'"*) # The following command creates the script: # 1s,^X,,;s|'|'"'"'|g # which removes a leading X, and then quotes and embedded single # quotes. sed_script="1s,^X,,;s|'|'\"'\"'|g" # Add a leading "X" so that if $arg starts with a dash, # the echo command will not try to interpret the argument # as a command-line option. arg="X$arg" # Generate the quoted string. quoted_arg=`echo "$arg" | sed -e "$sed_script"` ;; *) quoted_arg=$arg ;; esac # Surround the entire argument with single quotes. quoted_arg="'"$quoted_arg"'" # Add it to the string. result="$result $quoted_arg" done # Output the string we have built up. echo "$result" polyml-5.7.1/libffi/fficonfig.h.in0000644000175000017500000001320313204034553015741 0ustar daviddavid/* fficonfig.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to the flags needed for the .section .eh_frame directive. */ #undef EH_FRAME_FLAGS /* Define this if you want extra debugging. */ #undef FFI_DEBUG /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ #undef FFI_EXEC_TRAMPOLINE_TABLE /* Define this if you want to enable pax emulated trampolines */ #undef FFI_MMAP_EXEC_EMUTRAMP_PAX /* Cannot use malloc on this target, so, we revert to alternative means */ #undef FFI_MMAP_EXEC_WRIT /* Define this if you do not want support for the raw API. */ #undef FFI_NO_RAW_API /* Define this if you do not want support for aggregate types. */ #undef FFI_NO_STRUCTS /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define if your assembler supports .ascii. */ #undef HAVE_AS_ASCII_PSEUDO_OP /* Define if your assembler supports .cfi_* directives. */ #undef HAVE_AS_CFI_PSEUDO_OP /* Define if your assembler supports .register. */ #undef HAVE_AS_REGISTER_PSEUDO_OP /* Define if your assembler and linker support unaligned PC relative relocs. */ #undef HAVE_AS_SPARC_UA_PCREL /* Define if your assembler supports .string. */ #undef HAVE_AS_STRING_PSEUDO_OP /* Define if your assembler supports unwind section type. */ #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE /* Define if your assembler supports PC relative relocs. */ #undef HAVE_AS_X86_PCREL /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if you have the long double type and it is bigger than a double */ #undef HAVE_LONG_DOUBLE /* Define if you support more than one size of the long double type */ #undef HAVE_LONG_DOUBLE_VARIANT /* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkostemp' function. */ #undef HAVE_MKOSTEMP /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define if mmap with MAP_ANON(YMOUS) works. */ #undef HAVE_MMAP_ANON /* Define if mmap of /dev/zero works. */ #undef HAVE_MMAP_DEV_ZERO /* Define if read-only mmap of a plain file works. */ #undef HAVE_MMAP_FILE /* Define if .eh_frame sections should be read-only. */ #undef HAVE_RO_EH_FRAME /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE /* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE /* The size of `size_t', as computed by sizeof. */ #undef SIZEOF_SIZE_T /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if symbols are underscored. */ #undef SYMBOL_UNDERSCORE /* Define this if you are using Purify and want to suppress spurious messages. */ #undef USING_PURIFY /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Define to `unsigned int' if does not define. */ #undef size_t #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE #ifdef LIBFFI_ASM #define FFI_HIDDEN(name) .hidden name #else #define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) #endif #else #ifdef LIBFFI_ASM #define FFI_HIDDEN(name) #else #define FFI_HIDDEN #endif #endif polyml-5.7.1/libffi/doc/0000755000175000017500000000000013204034553013777 5ustar daviddavidpolyml-5.7.1/libffi/doc/stamp-vti0000644000175000017500000000014413204034553015645 0ustar daviddavid@set UPDATED 8 November 2014 @set UPDATED-MONTH November 2014 @set EDITION 3.2.1 @set VERSION 3.2.1 polyml-5.7.1/libffi/doc/libffi.texi0000644000175000017500000005370713204034553016141 0ustar daviddavid\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename libffi.info @settitle libffi @setchapternewpage off @c %**end of header @c Merge the standard indexes into a single one. @syncodeindex fn cp @syncodeindex vr cp @syncodeindex ky cp @syncodeindex pg cp @syncodeindex tp cp @include version.texi @copying This manual is for Libffi, a portable foreign-function interface library. Copyright @copyright{} 2008, 2010, 2011 Red Hat, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled ``GNU General Public License''. @end quotation @end copying @dircategory Development @direntry * libffi: (libffi). Portable foreign-function interface library. @end direntry @titlepage @title Libffi @page @vskip 0pt plus 1filll @insertcopying @end titlepage @ifnottex @node Top @top libffi @insertcopying @menu * Introduction:: What is libffi? * Using libffi:: How to use libffi. * Missing Features:: Things libffi can't do. * Index:: Index. @end menu @end ifnottex @node Introduction @chapter What is libffi? Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part, for separate compilation to work. One such convention is the @dfn{calling convention}. The calling convention is a set of assumptions made by the compiler about where function arguments will be found on entry to a function. A calling convention also specifies where the return value for a function is found. The calling convention is also sometimes called the @dfn{ABI} or @dfn{Application Binary Interface}. @cindex calling convention @cindex ABI @cindex Application Binary Interface Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. @samp{Libffi} can be used in such programs to provide a bridge from the interpreter program to compiled code. The @samp{libffi} library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time. @acronym{FFI} stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The @samp{libffi} library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above @samp{libffi} that handles type conversions for values passed between the two languages. @cindex FFI @cindex Foreign Function Interface @node Using libffi @chapter Using libffi @menu * The Basics:: The basic libffi API. * Simple Example:: A simple example. * Types:: libffi type descriptions. * Multiple ABIs:: Different passing styles on one platform. * The Closure API:: Writing a generic function. * Closure Example:: A closure example. @end menu @node The Basics @section The Basics @samp{Libffi} assumes that you have a pointer to the function you wish to call and that you know the number and types of arguments to pass it, as well as the return type of the function. The first thing you must do is create an @code{ffi_cif} object that matches the signature of the function you wish to call. This is a separate step because it is common to make multiple calls using a single @code{ffi_cif}. The @dfn{cif} in @code{ffi_cif} stands for Call InterFace. To prepare a call interface object, use the function @code{ffi_prep_cif}. @cindex cif @findex ffi_prep_cif @defun ffi_status ffi_prep_cif (ffi_cif *@var{cif}, ffi_abi @var{abi}, unsigned int @var{nargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes}) This initializes @var{cif} according to the given parameters. @var{abi} is the ABI to use; normally @code{FFI_DEFAULT_ABI} is what you want. @ref{Multiple ABIs} for more information. @var{nargs} is the number of arguments that this function accepts. @var{rtype} is a pointer to an @code{ffi_type} structure that describes the return type of the function. @xref{Types}. @var{argtypes} is a vector of @code{ffi_type} pointers. @var{argtypes} must have @var{nargs} elements. If @var{nargs} is 0, this argument is ignored. @code{ffi_prep_cif} returns a @code{libffi} status code, of type @code{ffi_status}. This will be either @code{FFI_OK} if everything worked properly; @code{FFI_BAD_TYPEDEF} if one of the @code{ffi_type} objects is incorrect; or @code{FFI_BAD_ABI} if the @var{abi} parameter is invalid. @end defun If the function being called is variadic (varargs) then @code{ffi_prep_cif_var} must be used instead of @code{ffi_prep_cif}. @findex ffi_prep_cif_var @defun ffi_status ffi_prep_cif_var (ffi_cif *@var{cif}, ffi_abi var{abi}, unsigned int @var{nfixedargs}, unsigned int var{ntotalargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes}) This initializes @var{cif} according to the given parameters for a call to a variadic function. In general it's operation is the same as for @code{ffi_prep_cif} except that: @var{nfixedargs} is the number of fixed arguments, prior to any variadic arguments. It must be greater than zero. @var{ntotalargs} the total number of arguments, including variadic and fixed arguments. Note that, different cif's must be prepped for calls to the same function when different numbers of arguments are passed. Also note that a call to @code{ffi_prep_cif_var} with @var{nfixedargs}=@var{nototalargs} is NOT equivalent to a call to @code{ffi_prep_cif}. @end defun To call a function using an initialized @code{ffi_cif}, use the @code{ffi_call} function: @findex ffi_call @defun void ffi_call (ffi_cif *@var{cif}, void *@var{fn}, void *@var{rvalue}, void **@var{avalues}) This calls the function @var{fn} according to the description given in @var{cif}. @var{cif} must have already been prepared using @code{ffi_prep_cif}. @var{rvalue} is a pointer to a chunk of memory that will hold the result of the function call. This must be large enough to hold the result, no smaller than the system register size (generally 32 or 64 bits), and must be suitably aligned; it is the caller's responsibility to ensure this. If @var{cif} declares that the function returns @code{void} (using @code{ffi_type_void}), then @var{rvalue} is ignored. @var{avalues} is a vector of @code{void *} pointers that point to the memory locations holding the argument values for a call. If @var{cif} declares that the function has no arguments (i.e., @var{nargs} was 0), then @var{avalues} is ignored. Note that argument values may be modified by the callee (for instance, structs passed by value); the burden of copying pass-by-value arguments is placed on the caller. @end defun @node Simple Example @section Simple Example Here is a trivial example that calls @code{puts} a few times. @example #include #include int main() @{ ffi_cif cif; ffi_type *args[1]; void *values[1]; char *s; ffi_arg rc; /* Initialize the argument info vectors */ args[0] = &ffi_type_pointer; values[0] = &s; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint, args) == FFI_OK) @{ s = "Hello World!"; ffi_call(&cif, puts, &rc, values); /* rc now holds the result of the call to puts */ /* values holds a pointer to the function's arg, so to call puts() again all we need to do is change the value of s */ s = "This is cool!"; ffi_call(&cif, puts, &rc, values); @} return 0; @} @end example @node Types @section Types @menu * Primitive Types:: Built-in types. * Structures:: Structure types. * Type Example:: Structure type example. * Complex:: Complex types. * Complex Type Example:: Complex type example. @end menu @node Primitive Types @subsection Primitive Types @code{Libffi} provides a number of built-in type descriptors that can be used to describe argument and return types: @table @code @item ffi_type_void @tindex ffi_type_void The type @code{void}. This cannot be used for argument types, only for return values. @item ffi_type_uint8 @tindex ffi_type_uint8 An unsigned, 8-bit integer type. @item ffi_type_sint8 @tindex ffi_type_sint8 A signed, 8-bit integer type. @item ffi_type_uint16 @tindex ffi_type_uint16 An unsigned, 16-bit integer type. @item ffi_type_sint16 @tindex ffi_type_sint16 A signed, 16-bit integer type. @item ffi_type_uint32 @tindex ffi_type_uint32 An unsigned, 32-bit integer type. @item ffi_type_sint32 @tindex ffi_type_sint32 A signed, 32-bit integer type. @item ffi_type_uint64 @tindex ffi_type_uint64 An unsigned, 64-bit integer type. @item ffi_type_sint64 @tindex ffi_type_sint64 A signed, 64-bit integer type. @item ffi_type_float @tindex ffi_type_float The C @code{float} type. @item ffi_type_double @tindex ffi_type_double The C @code{double} type. @item ffi_type_uchar @tindex ffi_type_uchar The C @code{unsigned char} type. @item ffi_type_schar @tindex ffi_type_schar The C @code{signed char} type. (Note that there is not an exact equivalent to the C @code{char} type in @code{libffi}; ordinarily you should either use @code{ffi_type_schar} or @code{ffi_type_uchar} depending on whether @code{char} is signed.) @item ffi_type_ushort @tindex ffi_type_ushort The C @code{unsigned short} type. @item ffi_type_sshort @tindex ffi_type_sshort The C @code{short} type. @item ffi_type_uint @tindex ffi_type_uint The C @code{unsigned int} type. @item ffi_type_sint @tindex ffi_type_sint The C @code{int} type. @item ffi_type_ulong @tindex ffi_type_ulong The C @code{unsigned long} type. @item ffi_type_slong @tindex ffi_type_slong The C @code{long} type. @item ffi_type_longdouble @tindex ffi_type_longdouble On platforms that have a C @code{long double} type, this is defined. On other platforms, it is not. @item ffi_type_pointer @tindex ffi_type_pointer A generic @code{void *} pointer. You should use this for all pointers, regardless of their real type. @item ffi_type_complex_float @tindex ffi_type_complex_float The C @code{_Complex float} type. @item ffi_type_complex_double @tindex ffi_type_complex_double The C @code{_Complex double} type. @item ffi_type_complex_longdouble @tindex ffi_type_complex_longdouble The C @code{_Complex long double} type. On platforms that have a C @code{long double} type, this is defined. On other platforms, it is not. @end table Each of these is of type @code{ffi_type}, so you must take the address when passing to @code{ffi_prep_cif}. @node Structures @subsection Structures Although @samp{libffi} has no special support for unions or bit-fields, it is perfectly happy passing structures back and forth. You must first describe the structure to @samp{libffi} by creating a new @code{ffi_type} object for it. @tindex ffi_type @deftp {Data type} ffi_type The @code{ffi_type} has the following members: @table @code @item size_t size This is set by @code{libffi}; you should initialize it to zero. @item unsigned short alignment This is set by @code{libffi}; you should initialize it to zero. @item unsigned short type For a structure, this should be set to @code{FFI_TYPE_STRUCT}. @item ffi_type **elements This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} objects. There is one element per field of the struct. @end table @end deftp @node Type Example @subsection Type Example The following example initializes a @code{ffi_type} object representing the @code{tm} struct from Linux's @file{time.h}. Here is how the struct is defined: @example struct tm @{ int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; /* Those are for future use. */ long int __tm_gmtoff__; __const char *__tm_zone__; @}; @end example Here is the corresponding code to describe this struct to @code{libffi}: @example @{ ffi_type tm_type; ffi_type *tm_type_elements[12]; int i; tm_type.size = tm_type.alignment = 0; tm_type.type = FFI_TYPE_STRUCT; tm_type.elements = &tm_type_elements; for (i = 0; i < 9; i++) tm_type_elements[i] = &ffi_type_sint; tm_type_elements[9] = &ffi_type_slong; tm_type_elements[10] = &ffi_type_pointer; tm_type_elements[11] = NULL; /* tm_type can now be used to represent tm argument types and return types for ffi_prep_cif() */ @} @end example @node Complex @subsection Complex Types @samp{libffi} supports the complex types defined by the C99 standard (@code{_Complex float}, @code{_Complex double} and @code{_Complex long double} with the built-in type descriptors @code{ffi_type_complex_float}, @code{ffi_type_complex_double} and @code{ffi_type_complex_longdouble}. Custom complex types like @code{_Complex int} can also be used. An @code{ffi_type} object has to be defined to describe the complex type to @samp{libffi}. @tindex ffi_type @deftp {Data type} ffi_type @table @code @item size_t size This must be manually set to the size of the complex type. @item unsigned short alignment This must be manually set to the alignment of the complex type. @item unsigned short type For a complex type, this must be set to @code{FFI_TYPE_COMPLEX}. @item ffi_type **elements This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} objects. The first element is set to the @code{ffi_type} of the complex's base type. The second element must be set to @code{NULL}. @end table @end deftp The section @ref{Complex Type Example} shows a way to determine the @code{size} and @code{alignment} members in a platform independent way. For platforms that have no complex support in @code{libffi} yet, the functions @code{ffi_prep_cif} and @code{ffi_prep_args} abort the program if they encounter a complex type. @node Complex Type Example @subsection Complex Type Example This example demonstrates how to use complex types: @example #include #include #include void complex_fn(_Complex float cf, _Complex double cd, _Complex long double cld) @{ printf("cf=%f+%fi\ncd=%f+%fi\ncld=%f+%fi\n", (float)creal (cf), (float)cimag (cf), (float)creal (cd), (float)cimag (cd), (float)creal (cld), (float)cimag (cld)); @} int main() @{ ffi_cif cif; ffi_type *args[3]; void *values[3]; _Complex float cf; _Complex double cd; _Complex long double cld; /* Initialize the argument info vectors */ args[0] = &ffi_type_complex_float; args[1] = &ffi_type_complex_double; args[2] = &ffi_type_complex_longdouble; values[0] = &cf; values[1] = &cd; values[2] = &cld; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_void, args) == FFI_OK) @{ cf = 1.0 + 20.0 * I; cd = 300.0 + 4000.0 * I; cld = 50000.0 + 600000.0 * I; /* Call the function */ ffi_call(&cif, (void (*)(void))complex_fn, 0, values); @} return 0; @} @end example This is an example for defining a custom complex type descriptor for compilers that support them: @example /* * This macro can be used to define new complex type descriptors * in a platform independent way. * * name: Name of the new descriptor is ffi_type_complex_. * type: The C base type of the complex type. */ #define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ static ffi_type *ffi_elements_complex_##name [2] = @{ \ (ffi_type *)(&ffitype), NULL \ @}; \ struct struct_align_complex_##name @{ \ char c; \ _Complex type x; \ @}; \ ffi_type ffi_type_complex_##name = @{ \ sizeof(_Complex type), \ offsetof(struct struct_align_complex_##name, x), \ FFI_TYPE_COMPLEX, \ (ffi_type **)ffi_elements_complex_##name \ @} /* Define new complex type descriptors using the macro: */ /* ffi_type_complex_sint */ FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); /* ffi_type_complex_uchar */ FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); @end example The new type descriptors can then be used like one of the built-in type descriptors in the previous example. @node Multiple ABIs @section Multiple ABIs A given platform may provide multiple different ABIs at once. For instance, the x86 platform has both @samp{stdcall} and @samp{fastcall} functions. @code{libffi} provides some support for this. However, this is necessarily platform-specific. @c FIXME: document the platforms @node The Closure API @section The Closure API @code{libffi} also provides a way to write a generic function -- a function that can accept and decode any combination of arguments. This can be useful when writing an interpreter, or to provide wrappers for arbitrary functions. This facility is called the @dfn{closure API}. Closures are not supported on all platforms; you can check the @code{FFI_CLOSURES} define to determine whether they are supported on the current platform. @cindex closures @cindex closure API @findex FFI_CLOSURES Because closures work by assembling a tiny function at runtime, they require special allocation on platforms that have a non-executable heap. Memory management for closures is handled by a pair of functions: @findex ffi_closure_alloc @defun void *ffi_closure_alloc (size_t @var{size}, void **@var{code}) Allocate a chunk of memory holding @var{size} bytes. This returns a pointer to the writable address, and sets *@var{code} to the corresponding executable address. @var{size} should be sufficient to hold a @code{ffi_closure} object. @end defun @findex ffi_closure_free @defun void ffi_closure_free (void *@var{writable}) Free memory allocated using @code{ffi_closure_alloc}. The argument is the writable address that was returned. @end defun Once you have allocated the memory for a closure, you must construct a @code{ffi_cif} describing the function call. Finally you can prepare the closure function: @findex ffi_prep_closure_loc @defun ffi_status ffi_prep_closure_loc (ffi_closure *@var{closure}, ffi_cif *@var{cif}, void (*@var{fun}) (ffi_cif *@var{cif}, void *@var{ret}, void **@var{args}, void *@var{user_data}), void *@var{user_data}, void *@var{codeloc}) Prepare a closure function. @var{closure} is the address of a @code{ffi_closure} object; this is the writable address returned by @code{ffi_closure_alloc}. @var{cif} is the @code{ffi_cif} describing the function parameters. @var{user_data} is an arbitrary datum that is passed, uninterpreted, to your closure function. @var{codeloc} is the executable address returned by @code{ffi_closure_alloc}. @var{fun} is the function which will be called when the closure is invoked. It is called with the arguments: @table @var @item cif The @code{ffi_cif} passed to @code{ffi_prep_closure_loc}. @item ret A pointer to the memory used for the function's return value. @var{fun} must fill this, unless the function is declared as returning @code{void}. @c FIXME: is this NULL for void-returning functions? @item args A vector of pointers to memory holding the arguments to the function. @item user_data The same @var{user_data} that was passed to @code{ffi_prep_closure_loc}. @end table @code{ffi_prep_closure_loc} will return @code{FFI_OK} if everything went ok, and something else on error. @c FIXME: what? After calling @code{ffi_prep_closure_loc}, you can cast @var{codeloc} to the appropriate pointer-to-function type. @end defun You may see old code referring to @code{ffi_prep_closure}. This function is deprecated, as it cannot handle the need for separate writable and executable addresses. @node Closure Example @section Closure Example A trivial example that creates a new @code{puts} by binding @code{fputs} with @code{stdout}. @example #include #include /* Acts like puts with the file given at time of enclosure. */ void puts_binding(ffi_cif *cif, void *ret, void* args[], void *stream) @{ *(ffi_arg *)ret = fputs(*(char **)args[0], (FILE *)stream); @} typedef int (*puts_t)(char *); int main() @{ ffi_cif cif; ffi_type *args[1]; ffi_closure *closure; void *bound_puts; int rc; /* Allocate closure and bound_puts */ closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts); if (closure) @{ /* Initialize the argument info vectors */ args[0] = &ffi_type_pointer; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint, args) == FFI_OK) @{ /* Initialize the closure, setting stream to stdout */ if (ffi_prep_closure_loc(closure, &cif, puts_binding, stdout, bound_puts) == FFI_OK) @{ rc = ((puts_t)bound_puts)("Hello World!"); /* rc now holds the result of the call to fputs */ @} @} @} /* Deallocate both closure, and bound_puts */ ffi_closure_free(closure); return 0; @} @end example @node Missing Features @chapter Missing Features @code{libffi} is missing a few features. We welcome patches to add support for these. @itemize @bullet @item Variadic closures. @item There is no support for bit fields in structures. @item The closure API is @c FIXME: ... @item The ``raw'' API is undocumented. @c argument promotion? @c unions? @c anything else? @end itemize Note that variadic support is very new and tested on a relatively small number of platforms. @node Index @unnumbered Index @printindex cp @bye polyml-5.7.1/libffi/doc/version.texi0000644000175000017500000000014413204034553016356 0ustar daviddavid@set UPDATED 8 November 2014 @set UPDATED-MONTH November 2014 @set EDITION 3.2.1 @set VERSION 3.2.1 polyml-5.7.1/libffi/doc/libffi.info0000644000175000017500000006432113204034553016115 0ustar daviddavidThis is libffi.info, produced by makeinfo version 5.1 from libffi.texi. This manual is for Libffi, a portable foreign-function interface library. Copyright (C) 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled "GNU General Public License". INFO-DIR-SECTION Development START-INFO-DIR-ENTRY * libffi: (libffi). Portable foreign-function interface library. END-INFO-DIR-ENTRY  File: libffi.info, Node: Top, Next: Introduction, Up: (dir) libffi ****** This manual is for Libffi, a portable foreign-function interface library. Copyright (C) 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled "GNU General Public License". * Menu: * Introduction:: What is libffi? * Using libffi:: How to use libffi. * Missing Features:: Things libffi can't do. * Index:: Index.  File: libffi.info, Node: Introduction, Next: Using libffi, Prev: Top, Up: Top 1 What is libffi? ***************** Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part, for separate compilation to work. One such convention is the "calling convention". The calling convention is a set of assumptions made by the compiler about where function arguments will be found on entry to a function. A calling convention also specifies where the return value for a function is found. The calling convention is also sometimes called the "ABI" or "Application Binary Interface". Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. 'Libffi' can be used in such programs to provide a bridge from the interpreter program to compiled code. The 'libffi' library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The 'libffi' library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above 'libffi' that handles type conversions for values passed between the two languages.  File: libffi.info, Node: Using libffi, Next: Missing Features, Prev: Introduction, Up: Top 2 Using libffi ************** * Menu: * The Basics:: The basic libffi API. * Simple Example:: A simple example. * Types:: libffi type descriptions. * Multiple ABIs:: Different passing styles on one platform. * The Closure API:: Writing a generic function. * Closure Example:: A closure example.  File: libffi.info, Node: The Basics, Next: Simple Example, Up: Using libffi 2.1 The Basics ============== 'Libffi' assumes that you have a pointer to the function you wish to call and that you know the number and types of arguments to pass it, as well as the return type of the function. The first thing you must do is create an 'ffi_cif' object that matches the signature of the function you wish to call. This is a separate step because it is common to make multiple calls using a single 'ffi_cif'. The "cif" in 'ffi_cif' stands for Call InterFace. To prepare a call interface object, use the function 'ffi_prep_cif'. -- Function: ffi_status ffi_prep_cif (ffi_cif *CIF, ffi_abi ABI, unsigned int NARGS, ffi_type *RTYPE, ffi_type **ARGTYPES) This initializes CIF according to the given parameters. ABI is the ABI to use; normally 'FFI_DEFAULT_ABI' is what you want. *note Multiple ABIs:: for more information. NARGS is the number of arguments that this function accepts. RTYPE is a pointer to an 'ffi_type' structure that describes the return type of the function. *Note Types::. ARGTYPES is a vector of 'ffi_type' pointers. ARGTYPES must have NARGS elements. If NARGS is 0, this argument is ignored. 'ffi_prep_cif' returns a 'libffi' status code, of type 'ffi_status'. This will be either 'FFI_OK' if everything worked properly; 'FFI_BAD_TYPEDEF' if one of the 'ffi_type' objects is incorrect; or 'FFI_BAD_ABI' if the ABI parameter is invalid. If the function being called is variadic (varargs) then 'ffi_prep_cif_var' must be used instead of 'ffi_prep_cif'. -- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi varabi, unsigned int NFIXEDARGS, unsigned int varntotalargs, ffi_type *RTYPE, ffi_type **ARGTYPES) This initializes CIF according to the given parameters for a call to a variadic function. In general it's operation is the same as for 'ffi_prep_cif' except that: NFIXEDARGS is the number of fixed arguments, prior to any variadic arguments. It must be greater than zero. NTOTALARGS the total number of arguments, including variadic and fixed arguments. Note that, different cif's must be prepped for calls to the same function when different numbers of arguments are passed. Also note that a call to 'ffi_prep_cif_var' with NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to 'ffi_prep_cif'. To call a function using an initialized 'ffi_cif', use the 'ffi_call' function: -- Function: void ffi_call (ffi_cif *CIF, void *FN, void *RVALUE, void **AVALUES) This calls the function FN according to the description given in CIF. CIF must have already been prepared using 'ffi_prep_cif'. RVALUE is a pointer to a chunk of memory that will hold the result of the function call. This must be large enough to hold the result, no smaller than the system register size (generally 32 or 64 bits), and must be suitably aligned; it is the caller's responsibility to ensure this. If CIF declares that the function returns 'void' (using 'ffi_type_void'), then RVALUE is ignored. AVALUES is a vector of 'void *' pointers that point to the memory locations holding the argument values for a call. If CIF declares that the function has no arguments (i.e., NARGS was 0), then AVALUES is ignored. Note that argument values may be modified by the callee (for instance, structs passed by value); the burden of copying pass-by-value arguments is placed on the caller.  File: libffi.info, Node: Simple Example, Next: Types, Prev: The Basics, Up: Using libffi 2.2 Simple Example ================== Here is a trivial example that calls 'puts' a few times. #include #include int main() { ffi_cif cif; ffi_type *args[1]; void *values[1]; char *s; ffi_arg rc; /* Initialize the argument info vectors */ args[0] = &ffi_type_pointer; values[0] = &s; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint, args) == FFI_OK) { s = "Hello World!"; ffi_call(&cif, puts, &rc, values); /* rc now holds the result of the call to puts */ /* values holds a pointer to the function's arg, so to call puts() again all we need to do is change the value of s */ s = "This is cool!"; ffi_call(&cif, puts, &rc, values); } return 0; }  File: libffi.info, Node: Types, Next: Multiple ABIs, Prev: Simple Example, Up: Using libffi 2.3 Types ========= * Menu: * Primitive Types:: Built-in types. * Structures:: Structure types. * Type Example:: Structure type example. * Complex:: Complex types. * Complex Type Example:: Complex type example.  File: libffi.info, Node: Primitive Types, Next: Structures, Up: Types 2.3.1 Primitive Types --------------------- 'Libffi' provides a number of built-in type descriptors that can be used to describe argument and return types: 'ffi_type_void' The type 'void'. This cannot be used for argument types, only for return values. 'ffi_type_uint8' An unsigned, 8-bit integer type. 'ffi_type_sint8' A signed, 8-bit integer type. 'ffi_type_uint16' An unsigned, 16-bit integer type. 'ffi_type_sint16' A signed, 16-bit integer type. 'ffi_type_uint32' An unsigned, 32-bit integer type. 'ffi_type_sint32' A signed, 32-bit integer type. 'ffi_type_uint64' An unsigned, 64-bit integer type. 'ffi_type_sint64' A signed, 64-bit integer type. 'ffi_type_float' The C 'float' type. 'ffi_type_double' The C 'double' type. 'ffi_type_uchar' The C 'unsigned char' type. 'ffi_type_schar' The C 'signed char' type. (Note that there is not an exact equivalent to the C 'char' type in 'libffi'; ordinarily you should either use 'ffi_type_schar' or 'ffi_type_uchar' depending on whether 'char' is signed.) 'ffi_type_ushort' The C 'unsigned short' type. 'ffi_type_sshort' The C 'short' type. 'ffi_type_uint' The C 'unsigned int' type. 'ffi_type_sint' The C 'int' type. 'ffi_type_ulong' The C 'unsigned long' type. 'ffi_type_slong' The C 'long' type. 'ffi_type_longdouble' On platforms that have a C 'long double' type, this is defined. On other platforms, it is not. 'ffi_type_pointer' A generic 'void *' pointer. You should use this for all pointers, regardless of their real type. 'ffi_type_complex_float' The C '_Complex float' type. 'ffi_type_complex_double' The C '_Complex double' type. 'ffi_type_complex_longdouble' The C '_Complex long double' type. On platforms that have a C 'long double' type, this is defined. On other platforms, it is not. Each of these is of type 'ffi_type', so you must take the address when passing to 'ffi_prep_cif'.  File: libffi.info, Node: Structures, Next: Type Example, Prev: Primitive Types, Up: Types 2.3.2 Structures ---------------- Although 'libffi' has no special support for unions or bit-fields, it is perfectly happy passing structures back and forth. You must first describe the structure to 'libffi' by creating a new 'ffi_type' object for it. -- Data type: ffi_type The 'ffi_type' has the following members: 'size_t size' This is set by 'libffi'; you should initialize it to zero. 'unsigned short alignment' This is set by 'libffi'; you should initialize it to zero. 'unsigned short type' For a structure, this should be set to 'FFI_TYPE_STRUCT'. 'ffi_type **elements' This is a 'NULL'-terminated array of pointers to 'ffi_type' objects. There is one element per field of the struct.  File: libffi.info, Node: Type Example, Next: Complex, Prev: Structures, Up: Types 2.3.3 Type Example ------------------ The following example initializes a 'ffi_type' object representing the 'tm' struct from Linux's 'time.h'. Here is how the struct is defined: struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; /* Those are for future use. */ long int __tm_gmtoff__; __const char *__tm_zone__; }; Here is the corresponding code to describe this struct to 'libffi': { ffi_type tm_type; ffi_type *tm_type_elements[12]; int i; tm_type.size = tm_type.alignment = 0; tm_type.type = FFI_TYPE_STRUCT; tm_type.elements = &tm_type_elements; for (i = 0; i < 9; i++) tm_type_elements[i] = &ffi_type_sint; tm_type_elements[9] = &ffi_type_slong; tm_type_elements[10] = &ffi_type_pointer; tm_type_elements[11] = NULL; /* tm_type can now be used to represent tm argument types and return types for ffi_prep_cif() */ }  File: libffi.info, Node: Complex, Next: Complex Type Example, Prev: Type Example, Up: Types 2.3.4 Complex Types ------------------- 'libffi' supports the complex types defined by the C99 standard ('_Complex float', '_Complex double' and '_Complex long double' with the built-in type descriptors 'ffi_type_complex_float', 'ffi_type_complex_double' and 'ffi_type_complex_longdouble'. Custom complex types like '_Complex int' can also be used. An 'ffi_type' object has to be defined to describe the complex type to 'libffi'. -- Data type: ffi_type 'size_t size' This must be manually set to the size of the complex type. 'unsigned short alignment' This must be manually set to the alignment of the complex type. 'unsigned short type' For a complex type, this must be set to 'FFI_TYPE_COMPLEX'. 'ffi_type **elements' This is a 'NULL'-terminated array of pointers to 'ffi_type' objects. The first element is set to the 'ffi_type' of the complex's base type. The second element must be set to 'NULL'. The section *note Complex Type Example:: shows a way to determine the 'size' and 'alignment' members in a platform independent way. For platforms that have no complex support in 'libffi' yet, the functions 'ffi_prep_cif' and 'ffi_prep_args' abort the program if they encounter a complex type.  File: libffi.info, Node: Complex Type Example, Prev: Complex, Up: Types 2.3.5 Complex Type Example -------------------------- This example demonstrates how to use complex types: #include #include #include void complex_fn(_Complex float cf, _Complex double cd, _Complex long double cld) { printf("cf=%f+%fi\ncd=%f+%fi\ncld=%f+%fi\n", (float)creal (cf), (float)cimag (cf), (float)creal (cd), (float)cimag (cd), (float)creal (cld), (float)cimag (cld)); } int main() { ffi_cif cif; ffi_type *args[3]; void *values[3]; _Complex float cf; _Complex double cd; _Complex long double cld; /* Initialize the argument info vectors */ args[0] = &ffi_type_complex_float; args[1] = &ffi_type_complex_double; args[2] = &ffi_type_complex_longdouble; values[0] = &cf; values[1] = &cd; values[2] = &cld; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_void, args) == FFI_OK) { cf = 1.0 + 20.0 * I; cd = 300.0 + 4000.0 * I; cld = 50000.0 + 600000.0 * I; /* Call the function */ ffi_call(&cif, (void (*)(void))complex_fn, 0, values); } return 0; } This is an example for defining a custom complex type descriptor for compilers that support them: /* * This macro can be used to define new complex type descriptors * in a platform independent way. * * name: Name of the new descriptor is ffi_type_complex_. * type: The C base type of the complex type. */ #define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ static ffi_type *ffi_elements_complex_##name [2] = { \ (ffi_type *)(&ffitype), NULL \ }; \ struct struct_align_complex_##name { \ char c; \ _Complex type x; \ }; \ ffi_type ffi_type_complex_##name = { \ sizeof(_Complex type), \ offsetof(struct struct_align_complex_##name, x), \ FFI_TYPE_COMPLEX, \ (ffi_type **)ffi_elements_complex_##name \ } /* Define new complex type descriptors using the macro: */ /* ffi_type_complex_sint */ FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); /* ffi_type_complex_uchar */ FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); The new type descriptors can then be used like one of the built-in type descriptors in the previous example.  File: libffi.info, Node: Multiple ABIs, Next: The Closure API, Prev: Types, Up: Using libffi 2.4 Multiple ABIs ================= A given platform may provide multiple different ABIs at once. For instance, the x86 platform has both 'stdcall' and 'fastcall' functions. 'libffi' provides some support for this. However, this is necessarily platform-specific.  File: libffi.info, Node: The Closure API, Next: Closure Example, Prev: Multiple ABIs, Up: Using libffi 2.5 The Closure API =================== 'libffi' also provides a way to write a generic function - a function that can accept and decode any combination of arguments. This can be useful when writing an interpreter, or to provide wrappers for arbitrary functions. This facility is called the "closure API". Closures are not supported on all platforms; you can check the 'FFI_CLOSURES' define to determine whether they are supported on the current platform. Because closures work by assembling a tiny function at runtime, they require special allocation on platforms that have a non-executable heap. Memory management for closures is handled by a pair of functions: -- Function: void *ffi_closure_alloc (size_t SIZE, void **CODE) Allocate a chunk of memory holding SIZE bytes. This returns a pointer to the writable address, and sets *CODE to the corresponding executable address. SIZE should be sufficient to hold a 'ffi_closure' object. -- Function: void ffi_closure_free (void *WRITABLE) Free memory allocated using 'ffi_closure_alloc'. The argument is the writable address that was returned. Once you have allocated the memory for a closure, you must construct a 'ffi_cif' describing the function call. Finally you can prepare the closure function: -- Function: ffi_status ffi_prep_closure_loc (ffi_closure *CLOSURE, ffi_cif *CIF, void (*FUN) (ffi_cif *CIF, void *RET, void **ARGS, void *USER_DATA), void *USER_DATA, void *CODELOC) Prepare a closure function. CLOSURE is the address of a 'ffi_closure' object; this is the writable address returned by 'ffi_closure_alloc'. CIF is the 'ffi_cif' describing the function parameters. USER_DATA is an arbitrary datum that is passed, uninterpreted, to your closure function. CODELOC is the executable address returned by 'ffi_closure_alloc'. FUN is the function which will be called when the closure is invoked. It is called with the arguments: CIF The 'ffi_cif' passed to 'ffi_prep_closure_loc'. RET A pointer to the memory used for the function's return value. FUN must fill this, unless the function is declared as returning 'void'. ARGS A vector of pointers to memory holding the arguments to the function. USER_DATA The same USER_DATA that was passed to 'ffi_prep_closure_loc'. 'ffi_prep_closure_loc' will return 'FFI_OK' if everything went ok, and something else on error. After calling 'ffi_prep_closure_loc', you can cast CODELOC to the appropriate pointer-to-function type. You may see old code referring to 'ffi_prep_closure'. This function is deprecated, as it cannot handle the need for separate writable and executable addresses.  File: libffi.info, Node: Closure Example, Prev: The Closure API, Up: Using libffi 2.6 Closure Example =================== A trivial example that creates a new 'puts' by binding 'fputs' with 'stdout'. #include #include /* Acts like puts with the file given at time of enclosure. */ void puts_binding(ffi_cif *cif, void *ret, void* args[], void *stream) { *(ffi_arg *)ret = fputs(*(char **)args[0], (FILE *)stream); } typedef int (*puts_t)(char *); int main() { ffi_cif cif; ffi_type *args[1]; ffi_closure *closure; void *bound_puts; int rc; /* Allocate closure and bound_puts */ closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts); if (closure) { /* Initialize the argument info vectors */ args[0] = &ffi_type_pointer; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint, args) == FFI_OK) { /* Initialize the closure, setting stream to stdout */ if (ffi_prep_closure_loc(closure, &cif, puts_binding, stdout, bound_puts) == FFI_OK) { rc = ((puts_t)bound_puts)("Hello World!"); /* rc now holds the result of the call to fputs */ } } } /* Deallocate both closure, and bound_puts */ ffi_closure_free(closure); return 0; }  File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi, Up: Top 3 Missing Features ****************** 'libffi' is missing a few features. We welcome patches to add support for these. * Variadic closures. * There is no support for bit fields in structures. * The closure API is * The "raw" API is undocumented. Note that variadic support is very new and tested on a relatively small number of platforms.  File: libffi.info, Node: Index, Prev: Missing Features, Up: Top Index ***** [index] * Menu: * ABI: Introduction. (line 13) * Application Binary Interface: Introduction. (line 13) * calling convention: Introduction. (line 13) * cif: The Basics. (line 14) * closure API: The Closure API. (line 13) * closures: The Closure API. (line 13) * FFI: Introduction. (line 31) * ffi_call: The Basics. (line 62) * FFI_CLOSURES: The Closure API. (line 13) * ffi_closure_alloc: The Closure API. (line 19) * ffi_closure_free: The Closure API. (line 26) * ffi_prep_cif: The Basics. (line 16) * ffi_prep_cif_var: The Basics. (line 39) * ffi_prep_closure_loc: The Closure API. (line 34) * ffi_status: The Basics. (line 16) * ffi_status <1>: The Basics. (line 39) * ffi_status <2>: The Closure API. (line 34) * ffi_type: Structures. (line 11) * ffi_type <1>: Structures. (line 11) * ffi_type <2>: Complex. (line 15) * ffi_type <3>: Complex. (line 15) * ffi_type_complex_double: Primitive Types. (line 82) * ffi_type_complex_float: Primitive Types. (line 79) * ffi_type_complex_longdouble: Primitive Types. (line 85) * ffi_type_double: Primitive Types. (line 41) * ffi_type_float: Primitive Types. (line 38) * ffi_type_longdouble: Primitive Types. (line 71) * ffi_type_pointer: Primitive Types. (line 75) * ffi_type_schar: Primitive Types. (line 47) * ffi_type_sint: Primitive Types. (line 62) * ffi_type_sint16: Primitive Types. (line 23) * ffi_type_sint32: Primitive Types. (line 29) * ffi_type_sint64: Primitive Types. (line 35) * ffi_type_sint8: Primitive Types. (line 17) * ffi_type_slong: Primitive Types. (line 68) * ffi_type_sshort: Primitive Types. (line 56) * ffi_type_uchar: Primitive Types. (line 44) * ffi_type_uint: Primitive Types. (line 59) * ffi_type_uint16: Primitive Types. (line 20) * ffi_type_uint32: Primitive Types. (line 26) * ffi_type_uint64: Primitive Types. (line 32) * ffi_type_uint8: Primitive Types. (line 14) * ffi_type_ulong: Primitive Types. (line 65) * ffi_type_ushort: Primitive Types. (line 53) * ffi_type_void: Primitive Types. (line 10) * Foreign Function Interface: Introduction. (line 31) * void: The Basics. (line 62) * void <1>: The Closure API. (line 19) * void <2>: The Closure API. (line 26)  Tag Table: Node: Top682 Node: Introduction1429 Node: Using libffi3061 Node: The Basics3547 Node: Simple Example7198 Node: Types8229 Node: Primitive Types8613 Node: Structures10734 Node: Type Example11608 Node: Complex12890 Node: Complex Type Example14308 Node: Multiple ABIs17360 Node: The Closure API17731 Node: Closure Example20675 Node: Missing Features22284 Node: Index22737  End Tag Table polyml-5.7.1/libffi/ChangeLog.v10000644000175000017500000005474013204034553015343 0ustar daviddavidThe libffi version 1 ChangeLog archive. Version 1 of libffi had per-directory ChangeLogs. Current and future versions have a single ChangeLog file in the root directory. The version 1 ChangeLogs have all been concatenated into this file for future reference only. --- libffi ---------------------------------------------------------------- Mon Oct 5 02:17:50 1998 Anthony Green * configure.in: Boosted rev. * configure, Makefile.in, aclocal.m4: Rebuilt. * README: Boosted rev and updated release notes. Mon Oct 5 01:03:03 1998 Anthony Green * configure.in: Boosted rev. * configure, Makefile.in, aclocal.m4: Rebuilt. * README: Boosted rev and updated release notes. 1998-07-25 Andreas Schwab * m68k/ffi.c (ffi_prep_cif_machdep): Use bitmask for cif->flags. Correctly handle small structures. (ffi_prep_args): Also handle small structures. (ffi_call): Pass size of return type to ffi_call_SYSV. * m68k/sysv.S: Adjust for above changes. Correctly align small structures in the return value. * types.c (uint64, sint64) [M68K]: Change alignment to 4. Fri Apr 17 17:26:58 1998 Anthony Green * configure.in: Boosted rev. * configure,Makefile.in,aclocal.m4: Rebuilt. * README: Boosted rev and added release notes. Sun Feb 22 00:50:41 1998 Geoff Keating * configure.in: Add PowerPC config bits. 1998-02-14 Andreas Schwab * configure.in: Add m68k config bits. Change AC_CANONICAL_SYSTEM to AC_CANONICAL_HOST, this is not a compiler. Use $host instead of $target. Remove AC_CHECK_SIZEOF(char), we already know the result. Fix argument of AC_ARG_ENABLE. * configure, fficonfig.h.in: Rebuilt. Tue Feb 10 20:53:40 1998 Richard Henderson * configure.in: Add Alpha config bits. Tue May 13 13:39:20 1997 Anthony Green * README: Updated dates and reworded Irix comments. * configure.in: Removed AC_PROG_RANLIB. * Makefile.in, aclocal.m4, config.guess, config.sub, configure, ltmain.sh, */Makefile.in: libtoolized again and rebuilt with automake and autoconf. Sat May 10 18:44:50 1997 Tom Tromey * configure, aclocal.m4: Rebuilt. * configure.in: Don't compute EXTRADIST; now handled in src/Makefile.in. Removed macros implied by AM_INIT_AUTOMAKE. Don't run AM_MAINTAINER_MODE. Thu May 8 14:34:05 1997 Anthony Green * missing, ltmain.sh, ltconfig.sh: Created. These are new files required by automake and libtool. * README: Boosted rev to 1.14. Added notes. * acconfig.h: Moved PACKAGE and VERSION for new automake. * configure.in: Changes for libtool. * Makefile.am (check): make test now make check. Uses libtool now. * Makefile.in, configure.in, aclocal.h, fficonfig.h.in: Rebuilt. Thu May 1 16:27:07 1997 Anthony Green * missing: Added file required by new automake. Tue Nov 26 14:10:42 1996 Anthony Green * acconfig.h: Added USING_PURIFY flag. This is defined when --enable-purify-safety was used at configure time. * configure.in (allsources): Added --enable-purify-safety switch. (VERSION): Boosted rev to 1.13. * configure: Rebuilt. Fri Nov 22 06:46:12 1996 Anthony Green * configure.in (VERSION): Boosted rev to 1.12. Removed special CFLAGS hack for gcc. * configure: Rebuilt. * README: Boosted rev to 1.12. Added notes. * Many files: Cygnus Support changed to Cygnus Solutions. Wed Oct 30 11:15:25 1996 Anthony Green * configure.in (VERSION): Boosted rev to 1.11. * configure: Rebuilt. * README: Boosted rev to 1.11. Added notes about GNU make. Tue Oct 29 12:25:12 1996 Anthony Green * configure.in: Fixed -Wall trick. (VERSION): Boosted rev. * configure: Rebuilt * acconfig.h: Needed for --enable-debug configure switch. * README: Boosted rev to 1.09. Added more notes on building libffi, and LCLint. * configure.in: Added --enable-debug switch. Boosted rev to 1.09. * configure: Rebuilt Tue Oct 15 13:11:28 1996 Anthony Green * configure.in (VERSION): Boosted rev to 1.08 * configure: Rebuilt. * README: Added n32 bug fix notes. * Makefile.am: Added "make lint" production. * Makefile.in: Rebuilt. Mon Oct 14 10:54:46 1996 Anthony Green * README: Added web page reference. * configure.in, README: Boosted rev to 1.05 * configure: Rebuilt. * README: Fixed n32 sample code. Fri Oct 11 17:09:28 1996 Anthony Green * README: Added sparc notes. * configure.in, README: Boosted rev to 1.04. * configure: Rebuilt. Thu Oct 10 10:31:03 1996 Anthony Green * configure.in, README: Boosted rev to 1.03. * configure: Rebuilt. * README: Added struct notes. * Makefile.am (EXTRA_DIST): Added LICENSE to distribution. * Makefile.in: Rebuilt. * README: Removed Linux section. No special notes now because aggregates arg/return types work. Wed Oct 9 16:16:42 1996 Anthony Green * README, configure.in (VERSION): Boosted rev to 1.02 * configure: Rebuilt. Tue Oct 8 11:56:33 1996 Anthony Green * README (NOTE): Added n32 notes. * Makefile.am: Added test production. * Makefile: Rebuilt * README: spell checked! * configure.in (VERSION): Boosted rev to 1.01 * configure: Rebuilt. Mon Oct 7 15:50:22 1996 Anthony Green * configure.in: Added nasty bit to support SGI tools. * configure: Rebuilt. * README: Added SGI notes. Added note about automake bug. Mon Oct 7 11:00:28 1996 Anthony Green * README: Rewrote intro, and fixed examples. Fri Oct 4 10:19:55 1996 Anthony Green * configure.in: -D$TARGET is no longer used as a compiler switch. It is now inserted into ffi.h at configure time. * configure: Rebuilt. * FFI_ABI and FFI_STATUS are now ffi_abi and ffi_status. Thu Oct 3 13:47:34 1996 Anthony Green * README, LICENSE: Created. Wrote some docs. * configure.in: Don't barf on i586-unknown-linuxaout. Added EXTRADIST code for "make dist". * configure: Rebuilt. * */Makefile.in: Rebuilt with patched automake. Tue Oct 1 17:12:25 1996 Anthony Green * Makefile.am, aclocal.m4, config.guess, config.sub, configure.in, fficonfig.h.in, install-sh, mkinstalldirs, stamp-h.in: Created * Makefile.in, configure: Generated --- libffi/include -------------------------------------------------------- Tue Feb 24 13:09:36 1998 Anthony Green * ffi_mips.h: Updated FFI_TYPE_STRUCT_* values based on ffi.h.in changes. This is a work-around for SGI's "simple" assembler. Sun Feb 22 00:51:55 1998 Geoff Keating * ffi.h.in: PowerPC support. 1998-02-14 Andreas Schwab * ffi.h.in: Add m68k support. (FFI_TYPE_LONGDOUBLE): Make it a separate value. Tue Feb 10 20:55:16 1998 Richard Henderson * ffi.h.in (SIZEOF_ARG): Use a pointer type by default. * ffi.h.in: Alpha support. Fri Nov 22 06:48:45 1996 Anthony Green * ffi.h.in, ffi_common.h: Cygnus Support -> Cygnus Solutions. Wed Nov 20 22:31:01 1996 Anthony Green * ffi.h.in: Added ffi_type_void definition. Tue Oct 29 12:22:40 1996 Anthony Green * Makefile.am (hack_DATA): Always install ffi_mips.h. * ffi.h.in: Removed FFI_DEBUG. It's now in the correct place (acconfig.h). Added #include for size_t definition. Tue Oct 15 17:23:35 1996 Anthony Green * ffi.h.in, ffi_common.h, ffi_mips.h: More clean up. Commented out #define of FFI_DEBUG. Tue Oct 15 13:01:06 1996 Anthony Green * ffi_common.h: Added bool definition. * ffi.h.in, ffi_common.h: Clean up based on LCLint output. Added funny /*@...@*/ comments to annotate source. Mon Oct 14 12:29:23 1996 Anthony Green * ffi.h.in: Interface changes based on feedback from Jim Blandy. Fri Oct 11 16:49:35 1996 Anthony Green * ffi.h.in: Small change for sparc support. Thu Oct 10 14:53:37 1996 Anthony Green * ffi_mips.h: Added FFI_TYPE_STRUCT_* definitions for special structure return types. Wed Oct 9 13:55:57 1996 Anthony Green * ffi.h.in: Added SIZEOF_ARG definition for X86 Tue Oct 8 11:40:36 1996 Anthony Green * ffi.h.in (FFI_FN): Added macro for eliminating compiler warnings. Use it to case your function pointers to the proper type. * ffi_mips.h (SIZEOF_ARG): Added magic to fix type promotion bug. * Makefile.am (EXTRA_DIST): Added ffi_mips.h to EXTRA_DIST. * Makefile: Rebuilt. * ffi_mips.h: Created. Moved all common mips definitions here. Mon Oct 7 10:58:12 1996 Anthony Green * ffi.h.in: The SGI assember is very picky about parens. Redefined some macros to avoid problems. * ffi.h.in: Added FFI_DEFAULT_ABI definitions. Also added externs for pointer, and 64bit integral ffi_types. Fri Oct 4 09:51:37 1996 Anthony Green * ffi.h.in: Added FFI_ABI member to ffi_cif and changed function prototypes accordingly. Added #define @TARGET@. Now programs including ffi.h don't have to specify this themselves. Thu Oct 3 15:36:44 1996 Anthony Green * ffi.h.in: Changed ffi_prep_cif's values from void* to void** * Makefile.am (EXTRA_DIST): Added EXTRA_DIST for "make dist" to work. * Makefile.in: Regenerated. Wed Oct 2 10:16:59 1996 Anthony Green * Makefile.am: Created * Makefile.in: Generated * ffi_common.h: Added rcsid comment Tue Oct 1 17:13:51 1996 Anthony Green * ffi.h.in, ffi_common.h: Created --- libffi/src ------------------------------------------------------------ Mon Oct 5 02:17:50 1998 Anthony Green * arm/ffi.c, arm/sysv.S: Created. * Makefile.am: Added arm files. * Makefile.in: Rebuilt. Mon Oct 5 01:41:38 1998 Anthony Green * Makefile.am (libffi_la_LDFLAGS): Incremented revision. Sun Oct 4 16:27:17 1998 Anthony Green * alpha/osf.S (ffi_call_osf): Patch for DU assembler. * ffitest.c (main): long long and long double return values work for x86. Fri Apr 17 11:50:58 1998 Anthony Green * Makefile.in: Rebuilt. * ffitest.c (main): Floating point tests not executed for systems with broken lond double (SunOS 4 w/ GCC). * types.c: Fixed x86 alignment info for long long types. Thu Apr 16 07:15:28 1998 Anthony Green * ffitest.c: Added more notes about GCC bugs under Irix 6. Wed Apr 15 08:42:22 1998 Anthony Green * ffitest.c (struct5): New test function. (main): New test with struct5. Thu Mar 5 10:48:11 1998 Anthony Green * prep_cif.c (initialize_aggregate): Fix assertion for nested structures. Tue Feb 24 16:33:41 1998 Anthony Green * prep_cif.c (ffi_prep_cif): Added long double support for sparc. Sun Feb 22 00:52:18 1998 Geoff Keating * powerpc/asm.h: New file. * powerpc/ffi.c: New file. * powerpc/sysv.S: New file. * Makefile.am: PowerPC port. * ffitest.c (main): Allow all tests to run even in presence of gcc bug on PowerPC. 1998-02-17 Anthony Green * mips/ffi.c: Fixed comment typo. * x86/ffi.c (ffi_prep_cif_machdep), x86/sysv.S (retfloat): Fixed x86 long double return handling. * types.c: Fixed x86 long double alignment info. 1998-02-14 Andreas Schwab * types.c: Add m68k support. * ffitest.c (floating): Add long double parameter. (return_ll, ldblit): New functions to test long long and long double return value. (main): Fix type error in assignment of ts[1-4]_type.elements. Add tests for long long and long double arguments and return values. * prep_cif.c (ffi_prep_cif) [M68K]: Don't allocate argument for struct value pointer. * m68k/ffi.c, m68k/sysv.S: New files. * Makefile.am: Add bits for m68k port. Add kludge to work around automake deficiency. (test): Don't require "." in $PATH. * Makefile.in: Rebuilt. Wed Feb 11 07:36:50 1998 Anthony Green * Makefile.in: Rebuilt. Tue Feb 10 20:56:00 1998 Richard Henderson * alpha/ffi.c, alpha/osf.S: New files. * Makefile.am: Alpha port. Tue Nov 18 14:12:07 1997 Anthony Green * mips/ffi.c (ffi_prep_cif_machdep): Initialize rstruct_flag for n32. Tue Jun 3 17:18:20 1997 Anthony Green * ffitest.c (main): Added hack to get structure tests working correctly. Sat May 10 19:06:42 1997 Tom Tromey * Makefile.in: Rebuilt. * Makefile.am (EXTRA_DIST): Explicitly list all distributable files in subdirs. (VERSION, CC): Removed. Thu May 8 17:19:01 1997 Anthony Green * Makefile.am: Many changes for new automake and libtool. * Makefile.in: Rebuilt. Fri Nov 22 06:57:56 1996 Anthony Green * ffitest.c (main): Fixed test case for non mips machines. Wed Nov 20 22:31:59 1996 Anthony Green * types.c: Added ffi_type_void declaration. Tue Oct 29 13:07:19 1996 Anthony Green * ffitest.c (main): Fixed character constants. (main): Emit warning for structure test 3 failure on Sun. * Makefile.am (VPATH): Fixed VPATH def'n so automake won't strip it out. Moved distdir hack from libffi to automake. (ffitest): Added missing -c for $(COMPILE) (change in automake). * Makefile.in: Rebuilt. Tue Oct 15 13:08:20 1996 Anthony Green * Makefile.am: Added "make lint" production. * Makefile.in: Rebuilt. * prep_cif.c (STACK_ARG_SIZE): Improved STACK_ARG_SIZE macro. Clean up based on LCLint output. Added funny /*@...@*/ comments to annotate source. * ffitest.c, debug.c: Cleaned up code. Mon Oct 14 12:26:56 1996 Anthony Green * ffitest.c: Changes based on interface changes. * prep_cif.c (ffi_prep_cif): Cleaned up interface based on feedback from Jim Blandy. Fri Oct 11 15:53:18 1996 Anthony Green * ffitest.c: Reordered tests while porting to sparc. Made changes to handle lame structure passing for sparc. Removed calls to fflush(). * prep_cif.c (ffi_prep_cif): Added special case for sparc aggregate type arguments. Thu Oct 10 09:56:51 1996 Anthony Green * ffitest.c (main): Added structure passing/returning tests. * prep_cif.c (ffi_prep_cif): Perform proper initialization of structure return types if needed. (initialize_aggregate): Bug fix Wed Oct 9 16:04:20 1996 Anthony Green * types.c: Added special definitions for x86 (double doesn't need double word alignment). * ffitest.c: Added many tests Tue Oct 8 09:19:22 1996 Anthony Green * prep_cif.c (ffi_prep_cif): Fixed assertion. * debug.c (ffi_assert): Must return a non void now. * Makefile.am: Added test production. * Makefile: Rebuilt. * ffitest.c (main): Created. * types.c: Created. Stripped common code out of */ffi.c. * prep_cif.c: Added missing stdlib.h include. * debug.c (ffi_type_test): Used "a" to eliminate compiler warnings in non-debug builds. Included ffi_common.h. Mon Oct 7 15:36:42 1996 Anthony Green * Makefile.am: Added a rule for .s -> .o This is required by the SGI compiler. * Makefile: Rebuilt. Fri Oct 4 09:51:08 1996 Anthony Green * prep_cif.c (initialize_aggregate): Moved abi specification to ffi_prep_cif(). Thu Oct 3 15:37:37 1996 Anthony Green * prep_cif.c (ffi_prep_cif): Changed values from void* to void**. (initialize_aggregate): Fixed aggregate type initialization. * Makefile.am (EXTRA_DIST): Added support code for "make dist". * Makefile.in: Regenerated. Wed Oct 2 11:41:57 1996 Anthony Green * debug.c, prep_cif: Created. * Makefile.am: Added debug.o and prep_cif.o to OBJ. * Makefile.in: Regenerated. * Makefile.am (INCLUDES): Added missing -I../include * Makefile.in: Regenerated. Tue Oct 1 17:11:51 1996 Anthony Green * error.c, Makefile.am: Created. * Makefile.in: Generated. --- libffi/src/x86 -------------------------------------------------------- Sun Oct 4 16:27:17 1998 Anthony Green * sysv.S (retlongdouble): Fixed long long return value support. * ffi.c (ffi_prep_cif_machdep): Ditto. Wed May 13 04:30:33 1998 Anthony Green * ffi.c (ffi_prep_cif_machdep): Fixed long double return value support. Wed Apr 15 08:43:20 1998 Anthony Green * ffi.c (ffi_prep_args): small struct support was missing. Thu May 8 16:53:58 1997 Anthony Green * objects.mak: Removed. Mon Dec 2 15:12:58 1996 Tom Tromey * sysv.S: Use .balign, for a.out Linux boxes. Tue Oct 15 13:06:50 1996 Anthony Green * ffi.c: Clean up based on LCLint output. Added funny /*@...@*/ comments to annotate source. Fri Oct 11 16:43:38 1996 Anthony Green * ffi.c (ffi_call): Added assertion for bad ABIs. Wed Oct 9 13:57:27 1996 Anthony Green * sysv.S (retdouble): Fixed double return problems. * ffi.c (ffi_call): Corrected fn arg definition. (ffi_prep_cif_machdep): Fixed double return problems Tue Oct 8 12:12:49 1996 Anthony Green * ffi.c: Moved ffi_type definitions to types.c. (ffi_prep_args): Fixed type promotion bug. Mon Oct 7 15:53:06 1996 Anthony Green * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' Fri Oct 4 09:54:53 1996 Anthony Green * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped remaining args. Wed Oct 2 10:07:05 1996 Anthony Green * ffi.c, sysv.S, objects.mak: Created. (ffi_prep_cif): cif->rvalue no longer initialized to NULL. (ffi_prep_cif_machdep): Moved machine independent cif processing to src/prep_cif.c. Introduced ffi_prep_cif_machdep(). --- libffi/src/mips ------------------------------------------------------- Tue Feb 17 17:18:07 1998 Anthony Green * o32.S: Fixed typo in comment. * ffi.c (ffi_prep_cif_machdep): Fixed argument processing. Thu May 8 16:53:58 1997 Anthony Green * o32.s, n32.s: Wrappers for SGI tool support. * objects.mak: Removed. Tue Oct 29 14:37:45 1996 Anthony Green * ffi.c (ffi_prep_args): Changed int z to size_t z. Tue Oct 15 13:17:25 1996 Anthony Green * n32.S: Fixed bad stack munging. * ffi.c: Moved prototypes for ffi_call_?32() to here from ffi_mips.h because extended_cif is not defined in ffi_mips.h. Mon Oct 14 12:42:02 1996 Anthony Green * ffi.c: Interface changes based on feedback from Jim Blandy. Thu Oct 10 11:22:16 1996 Anthony Green * n32.S, ffi.c: Lots of changes to support passing and returning structures with the n32 calling convention. * n32.S: Fixed fn pointer bug. * ffi.c (ffi_prep_cif_machdep): Fix for o32 structure return values. (ffi_prep_args): Fixed n32 structure passing when structures partially fit in registers. Wed Oct 9 13:49:25 1996 Anthony Green * objects.mak: Added n32.o. * n32.S: Created. * ffi.c (ffi_prep_args): Added magic to support proper n32 processing. Tue Oct 8 10:37:35 1996 Anthony Green * ffi.c: Moved ffi_type definitions to types.c. (ffi_prep_args): Fixed type promotion bug. * o32.S: This code is only built for o32 compiles. A lot of the #define cruft has moved to ffi_mips.h. * ffi.c (ffi_prep_cif_machdep): Fixed arg flags. Second arg is only processed if the first is either a float or double. Mon Oct 7 15:33:59 1996 Anthony Green * o32.S: Modified to compile under each of o32, n32 and n64. * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' Fri Oct 4 09:53:25 1996 Anthony Green * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped remaining args. Wed Oct 2 17:41:22 1996 Anthony Green * o32.S: Removed crufty definitions. Wed Oct 2 12:53:42 1996 Anthony Green * ffi.c (ffi_prep_cif): cif->rvalue no longer initialized to NULL. (ffi_prep_cif_machdep): Moved all machine independent cif processing to src/prep_cif.c. Introduced ffi_prep_cif_machdep. Return types of FFI_TYPE_STRUCT are no different than FFI_TYPE_INT. Tue Oct 1 17:11:02 1996 Anthony Green * ffi.c, o32.S, object.mak: Created --- libffi/src/sparc ------------------------------------------------------ Tue Feb 24 16:33:18 1998 Anthony Green * ffi.c (ffi_prep_args): Added long double support. Thu May 8 16:53:58 1997 Anthony Green * objects.mak: Removed. Thu May 1 16:07:56 1997 Anthony Green * v8.S: Fixed minor portability problem reported by Russ McManus . Tue Nov 26 14:12:43 1996 Anthony Green * v8.S: Used STACKFRAME define elsewhere. * ffi.c (ffi_prep_args): Zero out space when USING_PURIFY is set. (ffi_prep_cif_machdep): Allocate the correct stack frame space for functions with < 6 args. Tue Oct 29 15:08:55 1996 Anthony Green * ffi.c (ffi_prep_args): int z is now size_t z. Mon Oct 14 13:31:24 1996 Anthony Green * v8.S (ffi_call_V8): Gordon rewrites this again. It looks great now. * ffi.c (ffi_call): The comment about hijacked registers is no longer valid after gordoni hacked v8.S. * v8.S (ffi_call_V8): Rewrote with gordoni. Much simpler. * v8.S, ffi.c: ffi_call() had changed to accept more than two args, so v8.S had to change (because it hijacks incoming arg registers). * ffi.c: Interface changes based on feedback from Jim Blandy. Thu Oct 10 17:48:16 1996 Anthony Green * ffi.c, v8.S, objects.mak: Created. polyml-5.7.1/libffi/msvcc.sh0000755000175000017500000001443613204034553014714 0ustar daviddavid#!/bin/sh # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is the MSVC wrappificator. # # The Initial Developer of the Original Code is # Timothy Wall . # Portions created by the Initial Developer are Copyright (C) 2009 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Daniel Witte # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** # # GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC # format and translated into something sensible for cl or ml. # args_orig=$@ args="-nologo -W3" static_crt= debug_crt= cl="cl" ml="ml" safeseh="-safeseh" output= while [ $# -gt 0 ] do case $1 in -fexceptions) # Don't enable exceptions for now. #args="$args -EHac" shift 1 ;; -m32) shift 1 ;; -m64) ml="ml64" # "$MSVC/x86_amd64/ml64" safeseh= shift 1 ;; -clang-cl) cl="clang-cl" safeseh= shift 1 ;; -O0) args="$args -Od" shift 1 ;; -O*) # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG # case below) are not compatible with optimization flags and will # cause the build to fail. Therefore, drop the optimization flag if # -DFFI_DEBUG is also set. case $args_orig in *-DFFI_DEBUG*) args="$args" ;; *) # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive # project doesn't support MSVC and therefore ends up trying to # use -O3. Use the equivalent "max optimization" flag for MSVC # instead of erroring out. case $1 in -O3) args="$args -O2" ;; *) args="$args $1" ;; esac opt="true" ;; esac shift 1 ;; -g) # Enable debug symbol generation. args="$args -Zi" shift 1 ;; -DFFI_DEBUG) # Enable runtime error checks. args="$args -RTC1" defines="$defines $1" shift 1 ;; -DUSE_STATIC_RTL) # Link against static CRT. static_crt=1 shift 1 ;; -DUSE_DEBUG_RTL) # Link against debug CRT. debug_crt=1 shift 1 ;; -c) args="$args -c" args="$(echo $args | sed 's%/Fe%/Fo%g')" single="-c" shift 1 ;; -D*=*) name="$(echo $1|sed 's/-D\([^=][^=]*\)=.*/\1/g')" value="$(echo $1|sed 's/-D[^=][^=]*=//g')" args="$args -D${name}='$value'" defines="$defines -D${name}='$value'" shift 1 ;; -D*) args="$args $1" defines="$defines $1" shift 1 ;; -I) args="$args -I$2" includes="$includes -I$2" shift 2 ;; -I*) args="$args $1" includes="$includes $1" shift 1 ;; -W|-Wextra) # TODO map extra warnings shift 1 ;; -Wall) # -Wall on MSVC is overzealous, and we already build with -W3. Nothing # to do here. shift 1 ;; -pedantic) # libffi tests -pedantic with -Wall, so drop it also. shift 1 ;; -Werror) args="$args -WX" shift 1 ;; -W*) # TODO map specific warnings shift 1 ;; -S) args="$args -FAs" shift 1 ;; -o) outdir="$(dirname $2)" base="$(basename $2|sed 's/\.[^.]*//g')" if [ -n "$single" ]; then output="-Fo$2" else output="-Fe$2" fi if [ -n "$assembly" ]; then args="$args $output" else args="$args $output -Fd$outdir/$base -Fp$outdir/$base -Fa$outdir/$base" fi shift 2 ;; *.S) src=$1 assembly="true" shift 1 ;; *.c) args="$args $1" shift 1 ;; *) # Assume it's an MSVC argument, and pass it through. args="$args $1" shift 1 ;; esac done # If -Zi is specified, certain optimizations are implicitly disabled # by MSVC. Add back those optimizations if this is an optimized build. # NOTE: These arguments must come after all others. if [ -n "$opt" ]; then args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO" fi if [ -n "$static_crt" ]; then md=-MT else md=-MD fi if [ -n "$debug_crt" ]; then md="${md}d" fi if [ -n "$assembly" ]; then if [ -z "$outdir" ]; then outdir="." fi ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')" echo "$cl -nologo -EP $includes $defines $src > $ppsrc" "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $? output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')" args="-nologo $safeseh $single $output $ppsrc" echo "$ml $args" eval "\"$ml\" $args" result=$? # required to fix ml64 broken output? #mv *.obj $outdir else args="$md $args" echo "$cl $args" # Return an error code of 1 if an invalid command line parameter is passed # instead of just ignoring it. eval "(\"$cl\" $args 2>&1 1>&3 | \ awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1" result=$? fi exit $result polyml-5.7.1/libffi/texinfo.tex0000644000175000017500000116703613204034553015446 0ustar daviddavid% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2013-02-01.11} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} % \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqkbd \markupsetcodequoteleft \let\markupsetuprqkbd \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ptexslash \fi\fi\fi \aftersmartic } % Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\normaldash \let_\realunder \fi \codex } } \def\codex #1{\tclose{#1}\endgroup} \def\normaldash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. % (This \urefnobreak definition isn't used now, leaving it for a while % for comparison.) \def\urefnobreak#1{\dourefnobreak #1,,,\finish} \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % This \urefbreak definition is the active one. \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} \def\xkey{\key} \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % ctrl is no longer a Texinfo command, but leave this definition for fun. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: \font\thisecfont = ectt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. Because % it is always used for titles, nothing else, we call \rmisbold. \par % should be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rmisbold \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should define @lbrace and @rbrace commands a la @comma. \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\image \definedummyword\indicateurl \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% \def\lbracechar{|a}% % \def\}{|b}% \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax \else \indexlquoteignore \fi % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us % ignore left quotes in the sort term. {\catcode`\`=\active \gdef\indexlquoteignore{\let`=\empty}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \checkenv{}% should not be in an environment. % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. We used to recommend @var for that, so % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{\begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % % ... and for \example: \spaceisspace % % The \empty here causes a following catcode 5 newline to be eaten as % part of reading whitespace after a control sequence. It does not % eat a catcode 13 newline. There's no good way to handle the two % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX % would then have different behavior). See the Macro Details node in % the manual for the workaround we recommend for macros and % line-oriented commands. % \scantokens{#1\empty}% \endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% used when scanning invocations \scanctxt \catcode`\\=0 } % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" % for the single characters \ { }. Thus, we end up with the "commands" % that would be written @\ @{ @} in a Texinfo document. % % We already have @{ and @}. For @\, we define it here, and only for % this purpose, to produce a typewriter backslash (so, the @\ that we % define for @math can't be used with @macro calls): % \def\\{\normalbackslash}% % % We would like to do this for \, too, since that is what makeinfo does. % But it is not possible, because Texinfo already has a command @, for a % cedilla accent. Documents must use @comma{} instead. % % \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % For macro processing make @ a letter so that we can make Texinfo private macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH % in the params list to some hook where the argument si to be expanded. If % there are less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. % % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime underwhich the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, you need that no macro has more than 256 arguments, otherwise an % error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax \let\xeatspaces\relax \parsemargdefxxx#1,;,% % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) % \catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } % \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } \def\macargexpandinbody@{% %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Save the token stack pointer into macro #1 \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} % Restore the token stack pointer from number in macro #1 \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} % newtoks that can be used non \outer . \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} % Tailing missing arguments are set to empty \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } % This defines a Texinfo @macro. There are eight cases: recursive and % nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg). % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% \ifx\pdfxrefdest\empty \def\pdfxrefdest{Top}% no empty targets \else \txiescapepdf\pdfxrefdest % escape PDF special chars \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % \ifdim \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi\fi \fi \endlink \endgroup} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % The story here is that in math mode, the \char of \backslashcurfont % ends up printing the roman \ from the math symbol font (because \char % in math mode uses the \mathcode, and plain.tex sets % \mathcode`\\="026E). It seems better for @backslashchar{} to always % print a typewriter backslash, hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. Also revert - to its normal character, in % case the active - from code has slipped in. % {@catcode`- = @active @gdef@normalturnoffactive{% @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore polyml-5.7.1/libffi/README0000644000175000017500000003743313204034553014124 0ustar daviddavidStatus ====== libffi-3.2.1 was released on November 12, 2014. Check the libffi web page for updates: . What is libffi? =============== Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part, for separate compilation to work. One such convention is the "calling convention". The "calling convention" is essentially a set of assumptions made by the compiler about where function arguments will be found on entry to a function. A "calling convention" also specifies where the return value for a function is found. Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code. The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The libffi library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above libffi that handles type conversions for values passed between the two languages. Supported Platforms =================== Libffi has been ported to many different platforms. For specific configuration details and testing status, please refer to the wiki page here: http://www.moxielogic.org/wiki/index.php?title=Libffi_3.2 At the time of release, the following basic configurations have been tested: |-----------------+------------------+-------------------------| | Architecture | Operating System | Compiler | |-----------------+------------------+-------------------------| | AArch64 (ARM64) | iOS | Clang | | AArch64 | Linux | GCC | | Alpha | Linux | GCC | | Alpha | Tru64 | GCC | | ARC | Linux | GCC | | ARM | Linux | GCC | | ARM | iOS | GCC | | AVR32 | Linux | GCC | | Blackfin | uClinux | GCC | | HPPA | HPUX | GCC | | IA-64 | Linux | GCC | | M68K | FreeMiNT | GCC | | M68K | Linux | GCC | | M68K | RTEMS | GCC | | M88K | OpenBSD/mvme88k | GCC | | Meta | Linux | GCC | | MicroBlaze | Linux | GCC | | MIPS | IRIX | GCC | | MIPS | Linux | GCC | | MIPS | RTEMS | GCC | | MIPS64 | Linux | GCC | | Moxie | Bare metal | GCC | | Nios II | Linux | GCC | | OpenRISC | Linux | GCC | | PowerPC 32-bit | AIX | IBM XL C | | PowerPC 64-bit | AIX | IBM XL C | | PowerPC | AMIGA | GCC | | PowerPC | Linux | GCC | | PowerPC | Mac OSX | GCC | | PowerPC | FreeBSD | GCC | | PowerPC 64-bit | FreeBSD | GCC | | PowerPC 64-bit | Linux ELFv1 | GCC | | PowerPC 64-bit | Linux ELFv2 | GCC | | S390 | Linux | GCC | | S390X | Linux | GCC | | SPARC | Linux | GCC | | SPARC | Solaris | GCC | | SPARC | Solaris | Oracle Solaris Studio C | | SPARC64 | Linux | GCC | | SPARC64 | FreeBSD | GCC | | SPARC64 | Solaris | Oracle Solaris Studio C | | TILE-Gx/TILEPro | Linux | GCC | | VAX | OpenBSD/vax | GCC | | X86 | FreeBSD | GCC | | X86 | GNU HURD | GCC | | X86 | Interix | GCC | | X86 | kFreeBSD | GCC | | X86 | Linux | GCC | | X86 | Mac OSX | GCC | | X86 | OpenBSD | GCC | | X86 | OS/2 | GCC | | X86 | Solaris | GCC | | X86 | Solaris | Oracle Solaris Studio C | | X86 | Windows/Cygwin | GCC | | X86 | Windows/MingW | GCC | | X86-64 | FreeBSD | GCC | | X86-64 | Linux | GCC | | X86-64 | Linux/x32 | GCC | | X86-64 | OpenBSD | GCC | | X86-64 | Solaris | Oracle Solaris Studio C | | X86-64 | Windows/Cygwin | GCC | | X86-64 | Windows/MingW | GCC | | Xtensa | Linux | GCC | |-----------------+------------------+-------------------------| Please send additional platform test results to libffi-discuss@sourceware.org and feel free to update the wiki page above. Installing libffi ================= First you must configure the distribution for your particular system. Go to the directory you wish to build libffi in and run the "configure" program found in the root directory of the libffi source distribution. If you're building libffi directly from version control, configure won't exist yet; run ./autogen.sh first. You may want to tell configure where to install the libffi library and header files. To do that, use the --prefix configure switch. Libffi will install under /usr/local by default. If you want to enable extra run-time debugging checks use the the --enable-debug configure switch. This is useful when your program dies mysteriously while using libffi. Another useful configure switch is --enable-purify-safety. Using this will add some extra code which will suppress certain warnings when you are using Purify with libffi. Only use this switch when using Purify, as it will slow down the library. It's also possible to build libffi on Windows platforms with Microsoft's Visual C++ compiler. In this case, use the msvcc.sh wrapper script during configuration like so: path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP" For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64" and CXX="path/to/msvcc.sh -m64". You may also need to specify --build appropriately. It is also possible to build libffi on Windows platforms with the LLVM project's clang-cl compiler, like below: path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" When building with MSVC under a MingW environment, you may need to remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not present in MingW, and is not required when using MingW-style paths.) For iOS builds, the 'libffi.xcodeproj' Xcode project is available. Configure has many other options. Use "configure --help" to see them all. Once configure has finished, type "make". Note that you must be using GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make . To ensure that libffi is working as advertised, type "make check". This will require that you have DejaGNU installed. To install the library and header files, type "make install". History ======= See the git log for details at http://github.com/atgreen/libffi. 3.2.1 Nov-12-14 Build fix for non-iOS AArch64 targets. 3.2 Nov-11-14 Add C99 Complex Type support (currently only supported on s390). Add support for PASCAL and REGISTER calling conventions on x86 Windows/Linux. Add OpenRISC and Cygwin-64 support. Bug fixes. 3.1 May-19-14 Add AArch64 (ARM64) iOS support. Add Nios II support. Add m88k and DEC VAX support. Add support for stdcall, thiscall, and fastcall on non-Windows 32-bit x86 targets such as Linux. Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi fixes. Make the testsuite more robust: eliminate several spurious failures, and respect the $CC and $CXX environment variables. Archive off the manually maintained ChangeLog in favor of git log. 3.0.13 Mar-17-13 Add Meta support. Add missing Moxie bits. Fix stack alignment bug on 32-bit x86. Build fix for m68000 targets. Build fix for soft-float Power targets. Fix the install dir location for some platforms when building with GCC (OS X, Solaris). Fix Cygwin regression. 3.0.12 Feb-11-13 Add Moxie support. Add AArch64 support. Add Blackfin support. Add TILE-Gx/TILEPro support. Add MicroBlaze support. Add Xtensa support. Add support for PaX enabled kernels with MPROTECT. Add support for native vendor compilers on Solaris and AIX. Work around LLVM/GCC interoperability issue on x86_64. 3.0.11 Apr-11-12 Lots of build fixes. Add support for variadic functions (ffi_prep_cif_var). Add Linux/x32 support. Add thiscall, fastcall and MSVC cdecl support on Windows. Add Amiga and newer MacOS support. Add m68k FreeMiNT support. Integration with iOS' xcode build tools. Fix Octeon and MC68881 support. Fix code pessimizations. 3.0.10 Aug-23-11 Add support for Apple's iOS. Add support for ARM VFP ABI. Add RTEMS support for MIPS and M68K. Fix instruction cache clearing problems on ARM and SPARC. Fix the N64 build on mips-sgi-irix6.5. Enable builds with Microsoft's compiler. Enable x86 builds with Oracle's Solaris compiler. Fix support for calling code compiled with Oracle's Sparc Solaris compiler. Testsuite fixes for Tru64 Unix. Additional platform support. 3.0.9 Dec-31-09 Add AVR32 and win64 ports. Add ARM softfp support. Many fixes for AIX, Solaris, HP-UX, *BSD. Several PowerPC and x86-64 bug fixes. Build DLL for windows. 3.0.8 Dec-19-08 Add *BSD, BeOS, and PA-Linux support. 3.0.7 Nov-11-08 Fix for ppc FreeBSD. (thanks to Andreas Tobler) 3.0.6 Jul-17-08 Fix for closures on sh. Mark the sh/sh64 stack as non-executable. (both thanks to Kaz Kojima) 3.0.5 Apr-3-08 Fix libffi.pc file. Fix #define ARM for IcedTea users. Fix x86 closure bug. 3.0.4 Feb-24-08 Fix x86 OpenBSD configury. 3.0.3 Feb-22-08 Enable x86 OpenBSD thanks to Thomas Heller, and x86-64 FreeBSD thanks to Björn König and Andreas Tobler. Clean up test instruction in README. 3.0.2 Feb-21-08 Improved x86 FreeBSD support. Thanks to Björn König. 3.0.1 Feb-15-08 Fix instruction cache flushing bug on MIPS. Thanks to David Daney. 3.0.0 Feb-15-08 Many changes, mostly thanks to the GCC project. Cygnus Solutions is now Red Hat. [10 years go by...] 1.20 Oct-5-98 Raffaele Sena produces ARM port. 1.19 Oct-5-98 Fixed x86 long double and long long return support. m68k bug fixes from Andreas Schwab. Patch for DU assembler compatibility for the Alpha from Richard Henderson. 1.18 Apr-17-98 Bug fixes and MIPS configuration changes. 1.17 Feb-24-98 Bug fixes and m68k port from Andreas Schwab. PowerPC port from Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. 1.16 Feb-11-98 Richard Henderson produces Alpha port. 1.15 Dec-4-97 Fixed an n32 ABI bug. New libtool, auto* support. 1.14 May-13-97 libtool is now used to generate shared and static libraries. Fixed a minor portability problem reported by Russ McManus . 1.13 Dec-2-96 Added --enable-purify-safety to keep Purify from complaining about certain low level code. Sparc fix for calling functions with < 6 args. Linux x86 a.out fix. 1.12 Nov-22-96 Added missing ffi_type_void, needed for supporting void return types. Fixed test case for non MIPS machines. Cygnus Support is now Cygnus Solutions. 1.11 Oct-30-96 Added notes about GNU make. 1.10 Oct-29-96 Added configuration fix for non GNU compilers. 1.09 Oct-29-96 Added --enable-debug configure switch. Clean-ups based on LCLint feedback. ffi_mips.h is always installed. Many configuration fixes. Fixed ffitest.c for sparc builds. 1.08 Oct-15-96 Fixed n32 problem. Many clean-ups. 1.07 Oct-14-96 Gordon Irlam rewrites v8.S again. Bug fixes. 1.06 Oct-14-96 Gordon Irlam improved the sparc port. 1.05 Oct-14-96 Interface changes based on feedback. 1.04 Oct-11-96 Sparc port complete (modulo struct passing bug). 1.03 Oct-10-96 Passing struct args, and returning struct values works for all architectures/calling conventions. Expanded tests. 1.02 Oct-9-96 Added SGI n32 support. Fixed bugs in both o32 and Linux support. Added "make test". 1.01 Oct-8-96 Fixed float passing bug in mips version. Restructured some of the code. Builds cleanly with SGI tools. 1.00 Oct-7-96 First release. No public announcement. Authors & Credits ================= libffi was originally written by Anthony Green . The developers of the GNU Compiler Collection project have made innumerable valuable contributions. See the ChangeLog file for details. Some of the ideas behind libffi were inspired by Gianni Mariani's free gencall library for Silicon Graphics machines. The closure mechanism was designed and implemented by Kresten Krab Thorup. Major processor architecture ports were contributed by the following developers: aarch64 Marcus Shawcroft, James Greenhalgh alpha Richard Henderson arm Raffaele Sena blackfin Alexandre Keunecke I. de Mendonca cris Simon Posnjak, Hans-Peter Nilsson frv Anthony Green ia64 Hans Boehm m32r Kazuhiro Inaoka m68k Andreas Schwab m88k Miod Vallat microblaze Nathan Rossi mips Anthony Green, Casey Marshall mips64 David Daney moxie Anthony Green nios ii Sandra Loosemore openrisc Sebastian Macke pa Randolph Chung, Dave Anglin, Andreas Tobler powerpc Geoffrey Keating, Andreas Tobler, David Edelsohn, John Hornkvist powerpc64 Jakub Jelinek s390 Gerhard Tonn, Ulrich Weigand sh Kaz Kojima sh64 Kaz Kojima sparc Anthony Green, Gordon Irlam tile-gx/tilepro Walter Lee vax Miod Vallat x86 Anthony Green, Jon Beniston x86-64 Bo Thorsen xtensa Chris Zankel Jesper Skov and Andrew Haley both did more than their fair share of stepping through the code and tracking down bugs. Thanks also to Tom Tromey for bug fixes, documentation and configuration help. Thanks to Jim Blandy, who provided some useful feedback on the libffi interface. Andreas Tobler has done a tremendous amount of work on the testsuite. Alex Oliva solved the executable page problem for SElinux. The list above is almost certainly incomplete and inaccurate. I'm happy to make corrections or additions upon request. If you have a problem, or have found a bug, please send a note to the author at green@moxielogic.com, or the project mailing list at libffi-discuss@sourceware.org. polyml-5.7.1/libffi/msvc32include/0000755000175000017500000000000013204034553015713 5ustar daviddavidpolyml-5.7.1/libffi/msvc32include/fficonfig.h0000644000175000017500000000400313204034553020013 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- libffi - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* ------------------------------------------------------------------- -------------------------------------------------------------------- */ #ifndef LIBFFICONFIG_H #define LIBFFICONFIG_H #define HAVE_ALLOCA 1 #define HAVE_MEMCPY 1 #define HAVE_MEMORY_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define STDC_HEADERS 1 #if defined(X86_WIN64) #define SIZEOF_DOUBLE 8 #define SIZEOF_LONG_DOUBLE 0 #else #define SIZEOF_DOUBLE 8 #define SIZEOF_LONG_DOUBLE 0 #endif #ifdef LIBFFI_ASM #define FFI_HIDDEN(name) #else #define FFI_HIDDEN #endif #endif /* LIBFFICONFIG_H */ polyml-5.7.1/libffi/msvc32include/ffi.h0000644000175000017500000003323713204034553016640 0ustar daviddavid/* -----------------------------------------------------------------*-C-*- libffi 3.2.1 - Copyright (c) 2011, 2014 Anthony Green - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* ------------------------------------------------------------------- The basic API is described in the README file. The raw API is designed to bypass some of the argument packing and unpacking on architectures for which it can be avoided. The closure API allows interpreted functions to be packaged up inside a C function pointer, so that they can be called as C functions, with no understanding on the client side that they are interpreted. It can also be used in other cases in which it is necessary to package up a user specified parameter and a function pointer as a single function pointer. The closure API must be implemented in order to get its functionality, e.g. for use by gij. Routines are provided to emulate the raw API if the underlying platform doesn't allow faster implementation. More details on the raw and cloure API can be found in: http://gcc.gnu.org/ml/java/1999-q3/msg00138.html and http://gcc.gnu.org/ml/java/1999-q3/msg00174.html -------------------------------------------------------------------- */ #ifndef LIBFFI_H #define LIBFFI_H #ifdef __cplusplus extern "C" { #endif /* Specify which architecture libffi is configured for. */ #ifdef _WIN64 #ifndef X86_WIN64 #define X86_WIN64 #endif #else #ifndef X86_WIN32 #define X86_WIN32 #endif #endif /* ---- System configuration information --------------------------------- */ #include #ifndef LIBFFI_ASM #if defined(_MSC_VER) && !defined(__clang__) #define __attribute__(X) #endif #include #include /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). But we can find it either under the correct ANSI name, or under GNU C's internal name. */ #define FFI_64_BIT_MAX 9223372036854775807 #ifdef LONG_LONG_MAX # define FFI_LONG_LONG_MAX LONG_LONG_MAX #else # ifdef LLONG_MAX # define FFI_LONG_LONG_MAX LLONG_MAX # ifdef _AIX52 /* or newer has C99 LLONG_MAX */ # undef FFI_64_BIT_MAX # define FFI_64_BIT_MAX 9223372036854775807LL # endif /* _AIX52 or newer */ # else # ifdef __GNUC__ # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ # endif # ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ # ifndef __PPC64__ # if defined (__IBMC__) || defined (__IBMCPP__) # define FFI_LONG_LONG_MAX LONGLONG_MAX # endif # endif /* __PPC64__ */ # undef FFI_64_BIT_MAX # define FFI_64_BIT_MAX 9223372036854775807LL # endif # endif #endif /* The closure code assumes that this works on pointers, i.e. a size_t */ /* can hold a pointer. */ typedef struct _ffi_type { size_t size; unsigned short alignment; unsigned short type; struct _ffi_type **elements; } ffi_type; #ifndef LIBFFI_HIDE_BASIC_TYPES #if SCHAR_MAX == 127 # define ffi_type_uchar ffi_type_uint8 # define ffi_type_schar ffi_type_sint8 #else #error "char size not supported" #endif #if SHRT_MAX == 32767 # define ffi_type_ushort ffi_type_uint16 # define ffi_type_sshort ffi_type_sint16 #elif SHRT_MAX == 2147483647 # define ffi_type_ushort ffi_type_uint32 # define ffi_type_sshort ffi_type_sint32 #else #error "short size not supported" #endif #if INT_MAX == 32767 # define ffi_type_uint ffi_type_uint16 # define ffi_type_sint ffi_type_sint16 #elif INT_MAX == 2147483647 # define ffi_type_uint ffi_type_uint32 # define ffi_type_sint ffi_type_sint32 #elif INT_MAX == 9223372036854775807 # define ffi_type_uint ffi_type_uint64 # define ffi_type_sint ffi_type_sint64 #else #error "int size not supported" #endif #if LONG_MAX == 2147483647 # if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX #error "no 64-bit data type supported" # endif #elif LONG_MAX != FFI_64_BIT_MAX #error "long size not supported" #endif #if LONG_MAX == 2147483647 # define ffi_type_ulong ffi_type_uint32 # define ffi_type_slong ffi_type_sint32 #elif LONG_MAX == FFI_64_BIT_MAX # define ffi_type_ulong ffi_type_uint64 # define ffi_type_slong ffi_type_sint64 #else #error "long size not supported" #endif /* Need minimal decorations for DLLs to works on Windows. */ /* GCC has autoimport and autoexport. Rely on Libtool to */ /* help MSVC export from a DLL, but always declare data */ /* to be imported for MSVC clients. This costs an extra */ /* indirection for MSVC clients using the static version */ /* of the library, but don't worry about that. Besides, */ /* as a workaround, they can define FFI_BUILDING if they */ /* *know* they are going to link with the static library. */ // Poly - We always use the static library so must define FFI_BUILDING #define FFI_BUILDING 1 #if defined _MSC_VER && !defined FFI_BUILDING #define FFI_EXTERN extern __declspec(dllimport) #else #define FFI_EXTERN extern #endif /* These are defined in types.c */ FFI_EXTERN ffi_type ffi_type_void; FFI_EXTERN ffi_type ffi_type_uint8; FFI_EXTERN ffi_type ffi_type_sint8; FFI_EXTERN ffi_type ffi_type_uint16; FFI_EXTERN ffi_type ffi_type_sint16; FFI_EXTERN ffi_type ffi_type_uint32; FFI_EXTERN ffi_type ffi_type_sint32; FFI_EXTERN ffi_type ffi_type_uint64; FFI_EXTERN ffi_type ffi_type_sint64; FFI_EXTERN ffi_type ffi_type_float; FFI_EXTERN ffi_type ffi_type_double; FFI_EXTERN ffi_type ffi_type_pointer; #if 0 FFI_EXTERN ffi_type ffi_type_longdouble; #else #define ffi_type_longdouble ffi_type_double #endif #ifdef FFI_TARGET_HAS_COMPLEX_TYPE FFI_EXTERN ffi_type ffi_type_complex_float; FFI_EXTERN ffi_type ffi_type_complex_double; #if 0 FFI_EXTERN ffi_type ffi_type_complex_longdouble; #else #define ffi_type_complex_longdouble ffi_type_complex_double #endif #endif #endif /* LIBFFI_HIDE_BASIC_TYPES */ typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, FFI_BAD_ABI } ffi_status; typedef unsigned FFI_TYPE; typedef struct { ffi_abi abi; unsigned nargs; ffi_type **arg_types; ffi_type *rtype; unsigned bytes; unsigned flags; #ifdef FFI_EXTRA_CIF_FIELDS FFI_EXTRA_CIF_FIELDS; #endif } ffi_cif; #if 0 /* Used to adjust size/alignment of ffi types. */ void ffi_prep_types (ffi_abi abi); #endif /* Used internally, but overridden by some architectures */ ffi_status ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, unsigned int isvariadic, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes); /* ---- Definitions for the raw API -------------------------------------- */ #ifndef FFI_SIZEOF_ARG # if LONG_MAX == 2147483647 # define FFI_SIZEOF_ARG 4 # elif LONG_MAX == FFI_64_BIT_MAX # define FFI_SIZEOF_ARG 8 # endif #endif #ifndef FFI_SIZEOF_JAVA_RAW # define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG #endif typedef union { ffi_sarg sint; ffi_arg uint; float flt; char data[FFI_SIZEOF_ARG]; void* ptr; } ffi_raw; #if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 /* This is a special case for mips64/n32 ABI (and perhaps others) where sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ typedef union { signed int sint; unsigned int uint; float flt; char data[FFI_SIZEOF_JAVA_RAW]; void* ptr; } ffi_java_raw; #else typedef ffi_raw ffi_java_raw; #endif void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue); void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); size_t ffi_raw_size (ffi_cif *cif); /* This is analogous to the raw API, except it uses Java parameter */ /* packing, even on 64-bit machines. I.e. on 64-bit machines */ /* longs and doubles are followed by an empty 64-bit word. */ void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_java_raw *avalue); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); size_t ffi_java_raw_size (ffi_cif *cif); /* ---- Definitions for closures ----------------------------------------- */ #if FFI_CLOSURES #ifdef _MSC_VER __declspec(align(8)) #endif typedef struct { #if 0 void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; void (*fun)(ffi_cif*,void*,void**,void*); void *user_data; #ifdef __GNUC__ } ffi_closure __attribute__((aligned (8))); #else } ffi_closure; # ifdef __sgi # pragma pack 0 # endif #endif void *ffi_closure_alloc (size_t size, void **code); void ffi_closure_free (void *); ffi_status ffi_prep_closure (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data); ffi_status ffi_prep_closure_loc (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void*codeloc); #ifdef __sgi # pragma pack 8 #endif typedef struct { #if 0 void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_raw*,void*); void *user_data; } ffi_raw_closure; typedef struct { #if 0 void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); void *user_data; } ffi_java_raw_closure; ffi_status ffi_prep_raw_closure (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data); ffi_status ffi_prep_raw_closure_loc (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data, void *codeloc); ffi_status ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data); ffi_status ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data, void *codeloc); #endif /* FFI_CLOSURES */ /* ---- Public interface definition -------------------------------------- */ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes); ffi_status ffi_prep_cif_var(ffi_cif *cif, ffi_abi abi, unsigned int nfixedargs, unsigned int ntotalargs, ffi_type *rtype, ffi_type **atypes); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); /* Useful for eliminating compiler warnings */ #define FFI_FN(f) ((void (*)(void))f) /* ---- Definitions shared with assembly code ---------------------------- */ #endif /* If these change, update src/mips/ffitarget.h. */ #define FFI_TYPE_VOID 0 #define FFI_TYPE_INT 1 #define FFI_TYPE_FLOAT 2 #define FFI_TYPE_DOUBLE 3 #if 0 #define FFI_TYPE_LONGDOUBLE 4 #else #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #endif #define FFI_TYPE_UINT8 5 #define FFI_TYPE_SINT8 6 #define FFI_TYPE_UINT16 7 #define FFI_TYPE_SINT16 8 #define FFI_TYPE_UINT32 9 #define FFI_TYPE_SINT32 10 #define FFI_TYPE_UINT64 11 #define FFI_TYPE_SINT64 12 #define FFI_TYPE_STRUCT 13 #define FFI_TYPE_POINTER 14 #define FFI_TYPE_COMPLEX 15 /* This should always refer to the last type code (for sanity checks) */ #define FFI_TYPE_LAST FFI_TYPE_COMPLEX #ifdef __cplusplus } #endif #endif polyml-5.7.1/libffi/ChangeLog.libffi0000644000175000017500000004732613204034553016252 0ustar daviddavid2011-02-08 Andreas Tobler * testsuite/lib/libffi.exp: Tweak for stand-alone mode. 2009-12-25 Samuli Suominen * configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64. * configure: Rebuilt. * fficonfig.h.in: Rebuilt. 2009-06-16 Andrew Haley * testsuite/libffi.call/cls_align_sint64.c, testsuite/libffi.call/cls_align_uint64.c, testsuite/libffi.call/cls_longdouble_va.c, testsuite/libffi.call/cls_ulonglong.c, testsuite/libffi.call/return_ll1.c, testsuite/libffi.call/stret_medium2.c: Fix printf format specifiers. * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. * testsuite/libffi.call/float2.c: Fix dg-excess-errors. * testsuite/libffi.call/ffitest.h, testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. 2009-06-12 Andrew Haley * testsuite/libffi.call/cls_align_sint64.c, testsuite/libffi.call/cls_align_uint64.c, testsuite/libffi.call/cls_ulonglong.c, testsuite/libffi.call/return_ll1.c, testsuite/libffi.call/stret_medium2.c: Fix printf format specifiers. testsuite/libffi.special/unwindtest.cc: include stdint.h. 2009-06-11 Timothy Wall * Makefile.am, configure.ac, include/ffi.h.in, include/ffi_common.h, src/closures.c, src/dlmalloc.c, src/x86/ffi.c, src/x86/ffitarget.h, src/x86/win64.S (new), README: Added win64 support (mingw or MSVC) * Makefile.in, include/Makefile.in, man/Makefile.in, testsuite/Makefile.in, configure, aclocal.m4: Regenerated * ltcf-c.sh: properly escape cygwin/w32 path * man/ffi_call.3: Clarify size requirements for return value. * src/x86/ffi64.c: Fix filename in comment. * src/x86/win32.S: Remove unused extern. * testsuite/libffi.call/closure_fn0.c, testsuite/libffi.call/closure_fn1.c, testsuite/libffi.call/closure_fn2.c, testsuite/libffi.call/closure_fn3.c, testsuite/libffi.call/closure_fn4.c, testsuite/libffi.call/closure_fn5.c, testsuite/libffi.call/closure_fn6.c, testsuite/libffi.call/closure_stdcall.c, testsuite/libffi.call/cls_12byte.c, testsuite/libffi.call/cls_16byte.c, testsuite/libffi.call/cls_18byte.c, testsuite/libffi.call/cls_19byte.c, testsuite/libffi.call/cls_1_1byte.c, testsuite/libffi.call/cls_20byte.c, testsuite/libffi.call/cls_20byte1.c, testsuite/libffi.call/cls_24byte.c, testsuite/libffi.call/cls_2byte.c, testsuite/libffi.call/cls_3_1byte.c, testsuite/libffi.call/cls_3byte1.c, testsuite/libffi.call/cls_3byte2.c, testsuite/libffi.call/cls_4_1byte.c, testsuite/libffi.call/cls_4byte.c, testsuite/libffi.call/cls_5_1_byte.c, testsuite/libffi.call/cls_5byte.c, testsuite/libffi.call/cls_64byte.c, testsuite/libffi.call/cls_6_1_byte.c, testsuite/libffi.call/cls_6byte.c, testsuite/libffi.call/cls_7_1_byte.c, testsuite/libffi.call/cls_7byte.c, testsuite/libffi.call/cls_8byte.c, testsuite/libffi.call/cls_9byte1.c, testsuite/libffi.call/cls_9byte2.c, testsuite/libffi.call/cls_align_double.c, testsuite/libffi.call/cls_align_float.c, testsuite/libffi.call/cls_align_longdouble.c, testsuite/libffi.call/cls_align_longdouble_split.c, testsuite/libffi.call/cls_align_longdouble_split2.c, testsuite/libffi.call/cls_align_pointer.c, testsuite/libffi.call/cls_align_sint16.c, testsuite/libffi.call/cls_align_sint32.c, testsuite/libffi.call/cls_align_sint64.c, testsuite/libffi.call/cls_align_uint16.c, testsuite/libffi.call/cls_align_uint32.c, testsuite/libffi.call/cls_align_uint64.c, testsuite/libffi.call/cls_dbls_struct.c, testsuite/libffi.call/cls_double.c, testsuite/libffi.call/cls_double_va.c, testsuite/libffi.call/cls_float.c, testsuite/libffi.call/cls_longdouble.c, testsuite/libffi.call/cls_longdouble_va.c, testsuite/libffi.call/cls_multi_schar.c, testsuite/libffi.call/cls_multi_sshort.c, testsuite/libffi.call/cls_multi_sshortchar.c, testsuite/libffi.call/cls_multi_uchar.c, testsuite/libffi.call/cls_multi_ushort.c, testsuite/libffi.call/cls_multi_ushortchar.c, testsuite/libffi.call/cls_pointer.c, testsuite/libffi.call/cls_pointer_stack.c, testsuite/libffi.call/cls_schar.c, testsuite/libffi.call/cls_sint.c, testsuite/libffi.call/cls_sshort.c, testsuite/libffi.call/cls_uchar.c, testsuite/libffi.call/cls_uint.c, testsuite/libffi.call/cls_ulonglong.c, testsuite/libffi.call/cls_ushort.c, testsuite/libffi.call/err_bad_abi.c, testsuite/libffi.call/err_bad_typedef.c, testsuite/libffi.call/float2.c, testsuite/libffi.call/huge_struct.c, testsuite/libffi.call/nested_struct.c, testsuite/libffi.call/nested_struct1.c, testsuite/libffi.call/nested_struct10.c, testsuite/libffi.call/nested_struct2.c, testsuite/libffi.call/nested_struct3.c, testsuite/libffi.call/nested_struct4.c, testsuite/libffi.call/nested_struct5.c, testsuite/libffi.call/nested_struct6.c, testsuite/libffi.call/nested_struct7.c, testsuite/libffi.call/nested_struct8.c, testsuite/libffi.call/nested_struct9.c, testsuite/libffi.call/problem1.c, testsuite/libffi.call/return_ldl.c, testsuite/libffi.call/return_ll1.c, testsuite/libffi.call/stret_large.c, testsuite/libffi.call/stret_large2.c, testsuite/libffi.call/stret_medium.c, testsuite/libffi.call/stret_medium2.c, testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead of checking for MMAP. Use intptr_t instead of long casts. 2009-06-04 Andrew Haley * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. 2009-06-04 Andrew Haley * src/mips/o32.S, src/mips/n32.S: Fix licence formatting. 2009-06-04 Andrew Haley * src/x86/darwin.S: Fix licence formatting. src/x86/win32.S: Likewise. src/sh64/sysv.S: Likewise. src/sh/sysv.S: Likewise. 2009-06-04 Andrew Haley * src/sh64/ffi.c: Remove lint directives. Was missing from merge of Andreas Tobler's patch from 2006-04-22. 2009-06-04 Andrew Haley * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of 2007-03-07. 2008-12-26 Timothy Wall * testsuite/libffi.call/cls_longdouble.c, testsuite/libffi.call/cls_longdouble_va.c, testsuite/libffi.call/cls_align_longdouble.c, testsuite/libffi.call/cls_align_longdouble_split.c, testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected failures on x86_64 cygwin/mingw. 2008-12-22 Timothy Wall * testsuite/libffi.call/closure_fn0.c, testsuite/libffi.call/closure_fn1.c, testsuite/libffi.call/closure_fn2.c, testsuite/libffi.call/closure_fn3.c, testsuite/libffi.call/closure_fn4.c, testsuite/libffi.call/closure_fn5.c, testsuite/libffi.call/closure_fn6.c, testsuite/libffi.call/closure_loc_fn0.c, testsuite/libffi.call/closure_stdcall.c, testsuite/libffi.call/cls_align_pointer.c, testsuite/libffi.call/cls_pointer.c, testsuite/libffi.call/cls_pointer_stack.c: use portable cast from pointer to integer (intptr_t). * testsuite/libffi.call/cls_longdouble.c: disable for win64. 2008-12-19 Anthony Green * configure.ac: Bump version to 3.0.8. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-11-11 Anthony Green * configure.ac: Bump version to 3.0.7. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-08-25 Andreas Tobler * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. Adjust copyright notice. * src/powerpc/ffi.c: Add two new flags to indicate if we have one register or two register to use for FFI_SYSV structs. (ffi_prep_cif_machdep): Pass the right register flag introduced above. (ffi_closure_helper_SYSV): Fix the return type for FFI_SYSV_TYPE_SMALL_STRUCT. Comment. Adjust copyright notice. 2008-07-24 Anthony Green * testsuite/libffi.call/cls_dbls_struct.c, testsuite/libffi.call/cls_double_va.c, testsuite/libffi.call/cls_longdouble.c, testsuite/libffi.call/cls_longdouble_va.c, testsuite/libffi.call/cls_pointer.c, testsuite/libffi.call/cls_pointer_stack.c, testsuite/libffi.call/err_bad_abi.c: Clean up failures from compiler warnings. 2008-07-17 Anthony Green * configure.ac: Bump version to 3.0.6. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. Add documentation. * README: Update for new release. 2008-07-16 Kaz Kojima * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned int. 2008-07-16 Kaz Kojima * src/sh/sysv.S: Add .note.GNU-stack on Linux. * src/sh64/sysv.S: Likewise. 2008-04-03 Anthony Green * libffi.pc.in (Libs): Add -L${libdir}. * configure.ac: Bump version to 3.0.5. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-04-03 Anthony Green Xerces Ranby * include/ffi.h.in: Wrap definition of target architecture to protect from double definitions. 2008-03-22 Moriyoshi Koizumi * src/x86/ffi.c (ffi_prep_closure_loc): Fix for bug revealed in closure_loc_fn0.c. * testsuite/libffi.call/closure_loc_fn0.c (closure_loc_test_fn0): New test. 2008-03-04 Anthony Green Blake Chaffin hos@tamanegi.org * testsuite/libffi.call/cls_align_longdouble_split2.c testsuite/libffi.call/cls_align_longdouble_split.c testsuite/libffi.call/cls_dbls_struct.c testsuite/libffi.call/cls_double_va.c testsuite/libffi.call/cls_longdouble.c testsuite/libffi.call/cls_longdouble_va.c testsuite/libffi.call/cls_pointer.c testsuite/libffi.call/cls_pointer_stack.c testsuite/libffi.call/err_bad_abi.c testsuite/libffi.call/err_bad_typedef.c testsuite/libffi.call/huge_struct.c testsuite/libffi.call/stret_large2.c testsuite/libffi.call/stret_large.c testsuite/libffi.call/stret_medium2.c testsuite/libffi.call/stret_medium.c: New tests from Apple. 2008-02-26 Jakub Jelinek Anthony Green * src/alpha/osf.S: Add .note.GNU-stack on Linux. * src/s390/sysv.S: Likewise. * src/powerpc/linux64.S: Likewise. * src/powerpc/linux64_closure.S: Likewise. * src/powerpc/ppc_closure.S: Likewise. * src/powerpc/sysv.S: Likewise. * src/x86/unix64.S: Likewise. * src/x86/sysv.S: Likewise. * src/sparc/v8.S: Likewise. * src/sparc/v9.S: Likewise. * src/m68k/sysv.S: Likewise. * src/ia64/unix.S: Likewise. * src/arm/sysv.S: Likewise. 2008-02-26 Anthony Green Thomas Heller * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C comment. 2008-02-26 Anthony Green Thomas Heller * include/ffi.h.in: Change void (*)() to void (*)(void). 2008-02-26 Anthony Green Thomas Heller * src/alpha/ffi.c: Change void (*)() to void (*)(void). src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S, src/x86/ffi64.c: Ditto. 2008-02-24 Anthony Green * configure.ac: Accept openbsd*, not just openbsd. Bump version to 3.0.4. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-02-22 Anthony Green * README: Clean up list of tested platforms. 2008-02-22 Anthony Green * configure.ac: Bump version to 3.0.3. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. Clean up test docs. 2008-02-22 Bjoern Koenig Andreas Tobler * configure.ac: Add amd64-*-freebsd* target. * configure: Regenerate. 2008-02-22 Thomas Heller * configure.ac: Add x86 OpenBSD support. * configure: Rebuilt. 2008-02-21 Thomas Heller * README: Change "make test" to "make check". 2008-02-21 Anthony Green * configure.ac: Bump version to 3.0.2. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-02-21 Björn König * src/x86/freebsd.S: New file. * configure.ac: Add x86 FreeBSD support. * Makefile.am: Ditto. 2008-02-15 Anthony Green * configure.ac: Bump version to 3.0.1. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-02-15 David Daney * src/mips/ffi.c: Remove extra '>' from include directive. (ffi_prep_closure_loc): Use clear_location instead of tramp. 2008-02-15 Anthony Green * configure.ac: Bump version to 3.0.0. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. 2008-02-15 David Daney * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): Define (conditionally), and use it to include cachectl.h. (ffi_prep_closure_loc): Fix cache flushing. * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. 2008-02-15 Anthony Green * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: Update dates and remove all references to ffi_prep_closure. * configure.ac: Bump version to 2.99.9. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. 2008-02-15 Anthony Green * man/ffi_prep_closure.3: Delete. * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. (man_MANS): Ditto. * man/Makefile.in: Rebuilt. * configure.ac: Bump version to 2.99.8. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. 2008-02-14 Anthony Green * configure.ac: Bump version to 2.99.7. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * include/ffi.h.in LICENSE src/debug.c src/closures.c src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h src/prep_cif.c: Update license text. 2008-02-14 Anthony Green * README: Update tested platforms. * configure.ac: Bump version to 2.99.6. * configure: Rebuilt. 2008-02-14 Anthony Green * configure.ac: Bump version to 2.99.5. * configure: Rebuilt. * Makefile.am (EXTRA_DIST): Add darwin64.S * Makefile.in: Rebuilt. * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. * LICENSE: Update WARRANTY. 2008-02-14 Anthony Green * libffi.pc.in (libdir): Fix libdir definition. * configure.ac: Bump version to 2.99.4. * configure: Rebuilt. 2008-02-14 Anthony Green * README: Update. * libffi.info: New file. * doc/stamp-vti: New file. * configure.ac: Bump version to 2.99.3. * configure: Rebuilt. 2008-02-14 Anthony Green * Makefile.am (SUBDIRS): Add man dir. * Makefile.in: Rebuilt. * configure.ac: Create Makefile. * configure: Rebuilt. * man/ffi_call.3 man/ffi_prep_cif.3 man/ffi_prep_closure.3 man/Makefile.am man/Makefile.in: New files. 2008-02-14 Tom Tromey * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. * mdate-sh, texinfo.tex: New files. * Makefile.am (info_TEXINFOS): New variable. * doc/libffi.texi: New file. * doc/version.texi: Likewise. 2008-02-14 Anthony Green * Makefile.am (AM_CFLAGS): Don't compile with -D$(TARGET). (lib_LTLIBRARIES): Define. (toolexeclib_LIBRARIES): Undefine. * Makefile.in: Rebuilt. * configure.ac: Reset version to 2.99.1. * configure.in: Rebuilt. 2008-02-14 Anthony Green * libffi.pc.in: Use @PACKAGE_NAME@ and @PACKAGE_VERSION@. * configure.ac: Reset version to 2.99.1. * configure.in: Rebuilt. * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. * Makefile.in: Rebuilt. * LICENSE: Update copyright notice. 2008-02-14 Anthony Green * include/Makefile.am (nodist_includes_HEADERS): Define. Don't distribute ffitarget.h or ffi.h from the build include dir. * Makefile.in: Rebuilt. 2008-02-14 Anthony Green * include/Makefile.am (includesdir): Install headers under libdir. (pkgconfigdir): Define. Install libffi.pc. * include/Makefile.in: Rebuilt. * libffi.pc.in: Create. * libtool-version: Increment CURRENT * configure.ac: Add libffi.pc.in * configure: Rebuilt. 2008-02-03 Anthony Green * include/Makefile.am (includesdir): Fix header install with DESTDIR. * include/Makefile.in: Rebuilt. 2008-02-03 Timothy Wall * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return offset based on code pointer, not data pointer. 2008-02-01 Anthony Green * include/Makefile.am: Fix header installs. * Makefile.am: Ditto. * include/Makefile.in: Rebuilt. * Makefile.in: Ditto. 2008-02-01 Anthony Green * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL, FFI_INIT_TRAMPOLINE): Revert my broken changes to twall's last patch. 2008-01-31 Anthony Green * Makefile.am (EXTRA_DIST): Add missing files. * testsuite/Makefile.am: Ditto. * Makefile.in, testsuite/Makefile.in: Rebuilt. 2008-01-31 Timothy Wall * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall closures. * src/x86/ffitarget.h: Increase size of trampoline for stdcall closures. * src/x86/win32.S: Add assembly for stdcall closure. * src/x86/ffi.c: Initialize stdcall closure trampoline. 2008-01-30 H.J. Lu PR libffi/34612 * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when returning struct. * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" tests. 2008-01-30 Anthony Green * Makefile.am, include/Makefile.am: Move headers to libffi_la_SOURCES for new automake. * Makefile.in, include/Makefile.in: Rebuilt. * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for execution outside of gcc tree. * testsuite/lib/target-libpath.exp: Ditto. * testsuite/lib/libffi-dg.exp: Many changes to allow for execution outside of gcc tree. polyml-5.7.1/libffi/ChangeLog0000644000175000017500000051622013204034553015012 0ustar daviddavidcommit 20562ac0427c3578250d04c6e34fb0127d4551cf Author: Anthony Green Date: Wed Nov 12 07:00:59 2014 -0500 Fix for AArch64. Release as 3.2.1. commit a0bdc5250cd36f1d2578358e33299fd2408091ac Author: Anthony Green Date: Tue Nov 11 09:43:01 2014 -0500 Fix typo commit 67c0c0705318d2e567fd48e680d63dca3619a235 Author: Anthony Green Date: Tue Nov 11 07:30:49 2014 -0500 Final 3.2 changes commit ee826b933bbdeb68ee81876ffb508c3908eed371 Author: Anthony Green Date: Tue Nov 11 07:29:26 2014 -0500 Final 3.2 changes commit c81a705d53be97899d314953987936213244b1ba Author: Anthony Green Date: Tue Nov 4 13:29:58 2014 -0500 Mention OpenRISC commit 6a17ad540d7ddb7a812687f4380bd0ef2d2865bb Merge: 990eb9d 0f316ab Author: Anthony Green Date: Sun Sep 28 00:54:00 2014 -0400 Merge pull request #134 from s-macke/openrisc Add OpenRISC support commit 990eb9d4c244324771a7d878a168bb8eba1850c0 Author: Anthony Green Date: Sun Sep 28 00:50:29 2014 -0400 Only run the complex type tests on supported platforms. commit 0f316ab7c11b8315a838a6ae4645d36ff2c46f4c Author: Sebastian Macke Date: Sat Sep 27 00:19:15 2014 +0000 Add OpenRISC support This patch adds support for the OpenRISC architecture. (http://opencores.org/or1k/Main_Page) This patch has been tested under Linux with QEMU-user emulation support. - 32 Bit - big endian - delayed instructions This is the only available configuration under Linux. The description of the ABI can be found on the official website. Is passes the testsuite except of the unwindtest_ffi_call.cc testcase, which seems to be a problem of gcc and not libffi. Some testcases of the gcc testsuite still fail. Signed-off-by: Sebastian Macke commit 6695983d2f0857caab220862de12f3f94a55bcf6 Author: Anthony Green Date: Sat Sep 20 07:44:37 2014 -0400 Add complex type support. Mostly broken right now commit fbbf48fbdf9b1491af0aefc00523a1b5d8bb9349 Author: Anthony Green Date: Sat Sep 20 07:43:51 2014 -0400 Compile tests with -Wno-psabi when using GCC commit ae8d2554c5f192be54dadc9f99a1449b4df1b222 Author: Anthony Green Date: Sat Sep 20 07:08:37 2014 -0400 Update version to 3.2 commit b2ca59d39d2192021316561ea9dda3d35d8d35d9 Author: Anthony Green Date: Sat Sep 20 07:08:05 2014 -0400 More README updates for 3.2 commit f920a01ad8eafc79daaf331499ef9a97696c46a7 Author: Anthony Green Date: Sat Sep 20 06:54:06 2014 -0400 Update release notes. commit bfcbf329c5e4bebdb32134d4e53260e17e4e66cc Author: Bernd Edlinger Date: Sat Sep 20 06:51:45 2014 -0400 2014-05-11 Bernd Edlinger Fix current cygwin-64 build problems. * src/java_raw_api.c: Remove if !defined(FFI_NO_RAW_API). * src/x86/ffi.c: Add if defined(__CYGWIN__). * src/x86/win64.S (ffi_closure_win64, ffi_call_win64): Added handling for FFI_TYPE_UINT64, FFI_TYPE_POINTER and FFI_TYPE_INT. Added SEH information. Fixed formatting. commit 32cb2ce81db9457c6bd43a2587d7fa23a2edb9b1 Author: Jakub Jelinek Date: Sat Sep 20 06:39:55 2014 -0400 2014-09-10 Jakub Jelinek * src/powerpc/linux64.S: Emit .note.GNU-stack even when POWERPC64 is not defined. * src/powerpc/linux64_closure.S: Likewise. Also test _CALL_ELF == 2. commit aaf3101ba81af8f488502881648e3f687721671e Author: Matthias Klose Date: Sat Sep 20 06:37:04 2014 -0400 Fix -Werror=declaration-after-statement problem commit 6e8a4460833594d5af1b4539178025da0077df19 Author: Dominik Vogt Date: Sat Sep 20 06:21:19 2014 -0400 2014-07-22 Dominik Vogt * src/types.c (FFI_TYPEDEF, FFI_NONCONST_TYPEDEF): Merge the macros by adding another argument that controls whether the result is const or not (FFI_LDBL_CONST): Temporary macro to reduce ifdef confusion * src/prep_cif.c (ffi_prep_cif_core): Replace list of systems with new macro FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION * src/pa/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION): Define. * src/s390/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION): Define. * src/x86/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION): Define. 2014-07-22 Dominik Vogt * doc/libffi.texi (Primitive Types): Document ffi_type_complex_float, ffi_type_complex_double and ffi_type_complex_longdouble (Complex Types): New subsection. (Complex Type Example): Ditto. * testsuite/libffi.call/cls_align_complex_double.c: New FFI_TYPE_COMPLEX test. * testsuite/libffi.call/cls_align_complex_float.c: Ditto. * testsuite/libffi.call/cls_align_complex_longdouble.c: Ditto. * testsuite/libffi.call/cls_complex_double.c: Ditto. * testsuite/libffi.call/cls_complex_float.c: Ditto. * testsuite/libffi.call/cls_complex_longdouble.c: Ditto. * testsuite/libffi.call/cls_complex_struct_double.c: Ditto. * testsuite/libffi.call/cls_complex_struct_float.c: Ditto. * testsuite/libffi.call/cls_complex_struct_longdouble.c: Ditto. * testsuite/libffi.call/cls_complex_va_double.c: Ditto. * testsuite/libffi.call/cls_complex_va_float.c: Ditto. * testsuite/libffi.call/cls_complex_va_longdouble.c: Ditto. * testsuite/libffi.call/complex_double.c: Ditto. * testsuite/libffi.call/complex_defs_double.c: Ditto. * testsuite/libffi.call/complex_float.c: Ditto. * testsuite/libffi.call/complex_defs_float.c: Ditto. * testsuite/libffi.call/complex_longdouble.c: Ditto. * testsuite/libffi.call/complex_defs_longdouble.c: Ditto. * testsuite/libffi.call/complex_int.c: Ditto. * testsuite/libffi.call/many_complex_double.c: Ditto. * testsuite/libffi.call/many_complex_float.c: Ditto. * testsuite/libffi.call/many_complex_longdouble.c: Ditto. * testsuite/libffi.call/return_complex1_double.c: Ditto. * testsuite/libffi.call/return_complex1_float.c: Ditto. * testsuite/libffi.call/return_complex1_longdouble.c: Ditto. * testsuite/libffi.call/return_complex2_double.c: Ditto. * testsuite/libffi.call/return_complex2_float.c: Ditto. * testsuite/libffi.call/return_complex2_longdouble.c: Ditto. * testsuite/libffi.call/return_complex_double.c: Ditto. * testsuite/libffi.call/return_complex_float.c: Ditto. * testsuite/libffi.call/return_complex_longdouble.c: Ditto. * src/raw_api.c (ffi_raw_to_ptrarray): Handle FFI_TYPE_COMPLEX (ffi_ptrarray_to_raw): Ditto. * src/prep_cif.c (ffi_prep_cif_core): Abort if FFI_TYPE_COMPLEX is not implemented in libffi for the target. * src/java_raw_api.c (ffi_java_raw_size): FFI_TYPE_COMPLEX not supported yet (abort). (ffi_java_raw_to_ptrarray): Ditto. (ffi_java_rvalue_to_raw): Ditto. (ffi_java_raw_to_rvalue): Ditto. * src/debug.c (ffi_type_test): Add debug tests for complex types. * include/ffi.h.in (FFI_TYPE_COMPLEX): Add new FFI_TYPE_COMPLEX. (FFI_TYPE_LAST): Bump. (ffi_type_complex_float): Add new ffi_type_.... (ffi_type_complex_double): Ditto. (ffi_type_complex_longdouble): Ditto. 2014-07-22 Dominik Vogt * src/s390/ffitarget.h (FFI_TARGET_HAS_COMPLEX_TYPE): Define to provide FFI_TYPE_COMPLEX support. * src/s390/ffi.c (ffi_check_struct_type): Implement FFI_TYPE_COMPLEX (ffi_prep_args): Ditto. (ffi_prep_cif_machdep): Ditto. (ffi_closure_helper_SYSV): Ditto. commit 4c5c4088aa3e4d8103ff9ca441937da64fdd849a Merge: 862f53d 5d6340e Author: Anthony Green Date: Thu Sep 18 19:10:54 2014 -0400 Merge pull request #132 from nielsAD/master Pascal and Register calling convention support on x86 commit 862f53de04ff898a128be7eec592bae60930d6df Merge: 5df3840 aebf2c3 Author: Anthony Green Date: Thu Sep 18 19:06:08 2014 -0400 Merge pull request #130 from frida/fix/darwin-aarch64-float-alignment Fix alignment of FFI_TYPE_FLOAT for Apple's ARM64 ABI commit 5df384077f3633ec8cf2e08f9199e5a44994dbad Merge: 7b7a528 0f4e09d Author: Anthony Green Date: Thu Sep 18 19:05:35 2014 -0400 Merge pull request #129 from frida/fix/darwin-aarch64-cif-prep Fix non-variadic CIF initialization for Apple/ARM64 commit 7b7a5284de7a99edfcee5ac362dbf76251698e1e Merge: 4cd5e84 6172a99 Author: Anthony Green Date: Thu Sep 18 18:28:05 2014 -0400 Merge pull request #124 from knuesel/master Fix issue with builddir when calling configure with absolute path commit 4cd5e840122e22636b5838943372c4ed74618e35 Merge: 1cee07b 08853e3 Author: Anthony Green Date: Thu Sep 18 18:27:15 2014 -0400 Merge pull request #123 from ehsan/clang-cl Add support for building with clang-cl commit 5d6340ef2cf81432da79ac8b0b1b1218ab391438 Author: nielsAD Date: Mon Aug 25 17:29:44 2014 +0200 Determine whether register arguments (THISCALL/FASTCALL/REGISTER) are really passed via register to closures. Use stack if not. commit 6e346487b879b4b056a847268e381ae6efec4c21 Author: nielsAD Date: Mon Aug 25 12:23:29 2014 +0200 Fixed THISCALL/FASTCALL closures and added basic support for PASCAL/REGISTER closures. commit 098dca6b31e42dd0256ed7d966729e31961f1461 Author: nielsAD Date: Sat Aug 23 00:18:47 2014 +0200 Support for calling functions with PASCAL and REGISTER calling conventions on x86 Windows/Linux. Also changed indentation to be more consistent throughout the (adjusted) files. commit 08853e32fb6b750cda664ee6d3290d340429dd4d Author: Ehsan Akhgari Date: Thu Jul 31 20:33:33 2014 -0400 Enable forcing the usage of the static CRT in libffi's msvc wrapper This is required for AddressSanitizer builds with clang-cl. commit aebf2c3023b5ff056a708dc34169f7b549b2ec4f Author: Ole André Vadla RavnÃ¥s Date: Fri Jul 25 21:40:50 2014 +0200 Fix alignment of FFI_TYPE_FLOAT for Apple's ARM64 ABI commit 0f4e09d27dc175ce3e95d070b794351663c7220e Author: Ole André Vadla RavnÃ¥s Date: Sat Jul 26 00:11:06 2014 +0200 Fix non-variadic CIF initialization for Apple/ARM64 Turns out `aarch64_nfixedargs` wasn't initialized in the non-variadic case, resulting in undefined behavior when allocating arguments. commit 6172a995e14bdbc6150aa02a361f710626a5c293 Author: Jeremie Knuesel Date: Wed Jun 25 12:28:17 2014 +0200 Fix issue with builddir when calling configure with absolute path commit fb25cd08ed5a87640b02f0feeb10a09b37cfddbe Author: Ehsan Akhgari Date: Wed Jun 11 12:07:24 2014 -0400 Add support for building with clang-cl commit 1cee07be4712411baa5eb8af22698bc8443a6d6e Author: Anthony Green Date: Thu Jun 12 06:30:59 2014 -0400 Remove compiler warning commit ad0d1d239afc7ad09203847793dcc020856d1035 Author: Samuli Suominen Date: Thu Jun 12 06:30:21 2014 -0400 Fix paths in libffi.pc.in commit df31a85103b0cc232bbc340d7e782a3853c7fad5 Merge: 69289c1 360aa8c Author: Anthony Green Date: Fri Jun 6 08:24:35 2014 -0400 Merge pull request #122 from rvandermeulen/1014976 Don't make --enable-debug imply using the debug CRT in libffi commit 360aa8ca1ead2fdaefa7b1c6f01ad001d8abae7e Author: Mike Hommey Date: Mon Jun 2 09:21:10 2014 -0400 Bug 1014976 - Don't make --enable-debug imply using the debug CRT in libffi. commit 69289c10b0acb4b52c8b5df4cf738193c618db40 Author: Anthony Green Date: Sat May 31 08:54:08 2014 -0400 Prepare for libffi 3.1.1 commit 978c9540154d320525488db1b7049277122f736d Author: Samuli Suominen Date: Sat May 31 08:53:10 2014 -0400 Add missing GNU stack markings in win32.S commit cbc5a3c0200aa6c2cf8d6798d69a21501557c83f Author: Ryan Hill Date: Sat May 31 08:26:34 2014 -0400 Fix typo commit 9d8e3018ac3d0d338373bff7eefa9f006746f4ec Author: Anthony Green Date: Sat May 24 23:28:42 2014 -0400 Update current version. commit 18d56cca5a4ee95ad48b129100adf26231518ed0 Author: Anthony Green Date: Mon May 19 18:05:33 2014 -0400 Increment libtool version number commit 629f1029c47e522e4331988f02f32c203a070e28 Merge: 0403f33 c1166d4 Author: Anthony Green Date: Mon May 19 18:04:28 2014 -0400 Merge pull request #120 from l0kod/tmpfile Create temporary file with O_TMPFILE and O_CLOEXEC when available commit c1166d4f653bf6d17ad8c265cf5e8da84e2e76dc Author: Mickaël Salaün Date: Mon May 12 19:44:08 2014 +0200 closures: Check for mkostemp(3) commit 8daeed9570af72eb135c8ded460d2888f05b2e68 Author: Mickaël Salaün Date: Sun May 11 22:54:58 2014 +0200 closures: Create temporary file with O_TMPFILE and O_CLOEXEC when available The open_temp_exec_file_dir function can create a temporary file without file system accessible link. If the O_TMPFILE flag is not defined (old Linux kernel or libc) the behavior is unchanged. The open_temp_exec_file_name function now need a new argument "flags" (like O_CLOEXEC) used for temporary file creation. The O_TMPFILE flag allow temporary file creation without race condition. This feature/fix prevent another process to access the (future) executable file from the file system. The O_CLOEXEC flag automatically close the temporary file for any execve. This avoid transmitting (executable) file descriptor to a child process. commit 0403f332b1f478696c30d3d8a0e2f6eef24aaf88 Author: Anthony Green Date: Mon May 19 09:41:32 2014 -0400 Update date. Annoucing 3.1 today. commit 94ac0c168ee7b115409121d88b25a4979446c8da Author: Anthony Green Date: Mon May 19 09:37:21 2014 -0400 Increment libtool library revision number commit 57465744b6e1295d7202de5a7734df589518f1c8 Author: Anthony Green Date: Sun May 11 10:30:22 2014 -0400 Update to version 3.1 commit 0c2251a42df5108b6d9ebe5fe1cf83d0bcdf660e Author: Anthony Green Date: Sun May 11 10:22:30 2014 -0400 Support versions of git older than 1.8.5 commit 70c303cb88e23aaee91c87c56b108c50ab4f3c2f Author: Anthony Green Date: Sun May 11 09:56:40 2014 -0400 Fix testsuite for GCC 4.9.0 commit 52b3457093ed19b2a7c5fcf243c4014c90ce6225 Author: Magnus Granberg Date: Sun May 11 09:55:28 2014 -0400 Check /proc/self/status for PaX status. commit 7ba4c5d72aa440a4b21fb57e999e67c5957761da Author: Dominik Vogt Date: Sun May 11 09:52:47 2014 -0400 Use to get correct dir commit 31e0d4ecff6dc2a6c75a066ee099b52a43f6ba27 Merge: 1c0e9a7 99909eb Author: Anthony Green Date: Wed Apr 23 19:24:47 2014 -0400 Merge pull request #119 from joshtriplett/fastcall-fastball src/x86/win32.S: Define ffi_closure_FASTCALL in the MASM section, too commit 99909eb6184b62408d88b6b4e7ab38e84e6d0bf3 Author: Josh Triplett Date: Tue Apr 22 21:17:52 2014 -0700 src/x86/win32.S: Define ffi_closure_FASTCALL in the MASM section, too commit 1c0e9a7297ced15413c2d2d5d35f6c650c4b46c9 Merge: 93a24f2 d369522 Author: Anthony Green Date: Mon Apr 21 12:41:56 2014 -0400 Merge pull request #101 from joshtriplett/fastcall-closures Support closures for fastcall commit d36952273d4fafbda91ecc205fc0824f7cc65e70 Author: Josh Triplett Date: Sun Apr 20 12:03:25 2014 -0700 Support fastcall closures libffi on 32-bit x86 now supports closures for all supported ABIs. Thus, rewrite the last remaining duplicated-by-ABI test (closure_stdcall and closure_thiscall) to use the generic ABI_NUM/ABI_ATTR mechanism. commit 93a24f216bcdd1018b976d697179c6d49004015a Merge: dd11a04 2349fec Author: Anthony Green Date: Sat Apr 12 19:38:07 2014 -0400 Merge pull request #80 from ueno/devel Fix typo in doc commit dd11a04061cb49ce1d702545693c24eb1267d648 Merge: 8fa2812 03ca880 Author: Anthony Green Date: Sat Apr 12 19:37:21 2014 -0400 Merge pull request #86 from joshtriplett/testsuite-CC-CXX testsuite ignores CC parameter supplied to configure or make commit 8fa2812355e685a42abf9a62fbc674d616b2edee Merge: 8a58e6b 419503f Author: Anthony Green Date: Sat Apr 12 19:32:08 2014 -0400 Merge pull request #116 from frida/fix/darwin-aarch64-variadic Fix handling of variadic calls on Darwin/AArch64 commit 8a58e6b7805b736def197b8baf8e465a2a3f6913 Merge: 30b77c5 a539f7f Author: Anthony Green Date: Sat Apr 12 19:30:18 2014 -0400 Merge pull request #115 from frida/fix/darwin-aarch64-alignment Fix alignment of AArch64 assembler functions commit 30b77c56f95c63ecd83399aafdbad7b07330f2fd Merge: dc33cb3 3e2b84d Author: Anthony Green Date: Sat Apr 12 19:29:13 2014 -0400 Merge pull request #117 from frida/fix/windows-regression Fix Windows regression commit 3e2b84d295531720917bf46afc532fc6d877e3ec Author: Ole André Vadla RavnÃ¥s Date: Sat Apr 12 01:04:04 2014 +0200 Fix Windows regression Introduced by b5fed601948237037513a9b7f967c8fc6c9ff1f6. commit 419503f409c321fe31ff59d963ef34bb913420d0 Author: Ole André Vadla RavnÃ¥s Date: Sun Apr 6 20:54:13 2014 +0200 Fix handling of variadic calls on Darwin/AArch64 commit a539f7ffd6783aa11353d13265520e453c565fb4 Author: Ole André Vadla RavnÃ¥s Date: Sun Apr 6 20:53:02 2014 +0200 Fix alignment of AArch64 assembler functions commit dc33cb3c998da521a960385c1269c3aef552f69f Merge: c860a99 b5fed60 Author: Anthony Green Date: Sat Apr 5 23:41:22 2014 -0400 Merge pull request #114 from joshtriplett/bounce-on-a-tiny-trampoline Fix ABI on 32-bit non-Windows x86: go back to trampoline size 10 commit b5fed601948237037513a9b7f967c8fc6c9ff1f6 Author: Josh Triplett Date: Sat Apr 5 17:33:42 2014 -0700 Fix ABI on 32-bit non-Windows x86: go back to trampoline size 10 The trampoline size is part of the ABI, so it cannot change. Move the logic from the stdcall and thiscall trampolines to the functions they call, to reduce them both to 10 bytes. This drops the previously added support for raw THISCALL closures on non-Windows. (Non-raw THISCALL closures still work.) commit 03ca880081b22efab09ba72268270f83017d3d7b Author: Josh Triplett Date: Thu Mar 27 08:44:34 2014 -0700 README: Note the testsuite changes to respect $CC and $CXX commit d74df8c5d8c6722ecb908da98c86cc8e2c755b84 Author: Josh Triplett Date: Thu Mar 27 00:44:12 2014 -0700 README: Update Windows example to set both CC and CXX commit 7d698125b1f05173f3656a89755a2eb58813b002 Author: Josh Triplett Date: Wed Mar 26 23:17:56 2014 -0700 Use the proper C++ compiler to run C++ tests Running the C compiler with -shared-libgcc -lstdc++ does not work on non-GCC compilers. commit fa5e88f170cb37c7b2b9bb015c8c5b854ffd8a3e Author: Josh Triplett Date: Wed Mar 26 23:53:57 2014 -0700 .travis.yml: Make the build command more readable by splitting at && "script" can contain multiple commands to run in sequence. commit 0c3824702d3d59d37f8c177d646303f546187683 Author: Josh Triplett Date: Wed Mar 26 14:51:32 2014 -0700 Always set CC_FOR_TARGET for dejagnu, to make the testsuite respect $CC This fixes cross-compilation and compilation with CC="gcc -m32". commit 9946a92af31b30cb7760150d1f8ca6c11b01aeea Author: Josh Triplett Date: Wed Mar 26 20:18:58 2014 -0700 Stop looking for expect and runtest above top_builddir Users wishing to test hand-compiled versions of expect and runtest can easily enough put them in their path or set EXPECT and RUNTEST themselves. commit acb202325215058639234efb7af1f04c1c8a1f44 Author: Josh Triplett Date: Wed Mar 26 20:18:41 2014 -0700 Stop setting an empty AM_RUNTESTFLAGS commit c860a992fef5d7cd7bb0975b1632d17a9fafe007 Author: Anthony Green Date: Tue Mar 25 17:02:51 2014 -0400 Upgrade version to 3.1-rc1 commit 9837073e6203048a162a226798c5d252600219ed Author: Anthony Green Date: Tue Mar 25 16:24:14 2014 -0400 Update copyright date and clean up README notes. commit 18d3baa9f597b026675baa1b4e5a5eeef7577a08 Merge: afee537 f0c8a31 Author: Anthony Green Date: Tue Mar 25 16:12:53 2014 -0400 Merge pull request #108 from joshtriplett/freebsd [3.1 blocker] Fix FreeBSD support commit afee53738a995e23bd2f89fd0f7b30b380566106 Merge: 7d24785 b2d610e Author: Anthony Green Date: Tue Mar 25 16:12:35 2014 -0400 Merge pull request #106 from joshtriplett/darwin-award [3.1 blocker] Update OS X build system to include win32.S on 32-bit commit 7d2478568ed9f03cbf57627f449a2d2cf4d1571c Merge: beab5f3 56be47f Author: Anthony Green Date: Tue Mar 25 16:12:17 2014 -0400 Merge pull request #110 from joshtriplett/w64 Fix 64-bit Windows support commit beab5f334d9ec5b8b91d1cc727d1029b40358e7e Merge: 28fb197 ef5890e Author: Anthony Green Date: Tue Mar 25 16:07:47 2014 -0400 Merge pull request #105 from joshtriplett/win32-relocations [3.1 blocker] win32.S needs to handle relocations/GOT commit f0c8a31577172104049283f0a80c723084a5bd77 Author: Josh Triplett Date: Mon Mar 24 22:14:26 2014 -0700 Compile win32.S on FreeBSD commit b2d610e028b5ce48d1ad7e5d0debc9c321d891b2 Author: Josh Triplett Date: Fri Mar 21 11:10:13 2014 -0700 Compile win32.S on 32-bit Darwin as well commit be50b87a490e794362cb4a27ada2fbaab202adb8 Author: Josh Triplett Date: Mon Mar 24 21:44:13 2014 -0700 Always use configure to detect whether global symbols need underscores 64-bit Windows already used this check; make it universal, and use it in place of an ifdef on X86_WIN32, to handle non-Windows platforms that use the underscore, such as Darwin. commit 56be47f87629e31afbcb0774aa65735f539ee972 Author: Josh Triplett Date: Mon Mar 24 21:24:53 2014 -0700 Fix a warning on 64-bit Windows When sizeof(size_t) != sizeof(unsigned), adding a size_t to cif->bytes produces a "possible loss of data" warning. However, the size_t in question refers to the size of a single parameter. Use a cast to avoid the warning. commit 48a8eda74aad8a21b6f26df5df08fe64c043d208 Author: Josh Triplett Date: Mon Mar 24 21:21:12 2014 -0700 Avoid referencing undefined ABIs on 64-bit Windows builds 64-bit Windows does not have FFI_STDCALL, FFI_THISCALL, or FFI_FASTCALL. commit f0f4138f90345d7d67dfa6783a7e1c7cc30d3c6f Author: Josh Triplett Date: Sat Mar 22 10:00:53 2014 -0700 win32.S: Add handling for position-independent code on Darwin Newer versions of Darwin generate the necessary stub functions automatically and just need a call instruction, but accomodating older versions as well requires adding the stub. commit ef5890ebafb7cd2fbf9acf161edb55fe1382871c Author: Josh Triplett Date: Fri Mar 21 11:01:39 2014 -0700 win32.S: Use shifting for multiplication rather than repeated addition The jump table code added a register to itself twice to multiply by 4; shift the register left by 2 instead. commit 4fca48901e7e4f53bf490ed22607b2d2d8f4bfcc Author: Josh Triplett Date: Fri Mar 21 11:00:41 2014 -0700 win32.S: Make the jump tables position-independent Now that non-Windows platforms include win32.S, it needs to support building as position-independent code. This fixes build failures on target platforms that do not allow text relocations. commit 2087dcf736274286f76c69d3988fb6d7cc4fd0f5 Author: Josh Triplett Date: Fri Mar 21 10:57:06 2014 -0700 win32.S: Make calls to ffi_closure_SYSV_inner position-independent Now that non-Windows platforms include win32.S, it needs to support building as position-independent code. This fixes one source of build failures on target platforms that do not allow text relocations. commit 28fb197079cf1d11da4eef7c8c243ab05590c528 Merge: c697472 c3dd0a1 Author: Anthony Green Date: Tue Mar 18 12:19:36 2014 -0400 Merge pull request #107 from rvandermeulen/msvcc Various compatibility fixes and improvements to msvcc.sh. commit c3dd0a1a0245fc174361a70876e88ae24285f861 Author: Ryan VanderMeulen Date: Tue Mar 18 12:09:45 2014 -0400 Various compatibility fixes and improvements to msvcc.sh. * Don't try to mix incompatible optimization flags in debug builds. * Workaround ax_cc_maxopt.m4 not supporting MSVC and change -O3 to -O2. * Fix MSVC warning by properly passing linker flags to compiler. * Make msvcc.sh return 1 if invalid command line options are used rather than silently eating them. * Add more comments. commit c697472fccfbb5b87b007c053cda9ef014b346b9 Merge: 83fd2bc e48918e Author: Anthony Green Date: Mon Mar 17 00:32:42 2014 -0400 Merge pull request #102 from joshtriplett/test-generic Add ABIs to the test matrix; unify many bits of the testsuite commit e48918ecf876bc85d040fc50a232059c566553a8 Author: Josh Triplett Date: Sun Mar 16 20:29:27 2014 -0700 testsuite: Add ABIs to the test matrix; unify tests across ABIs This eliminates all the *_win32.c tests in favor of the tests they were branched from, and expands test coverage to run many more tests on stdcall, thiscall, and fastcall. This same mechanism also supports testing any other target that has multiple ABIs. commit 4d4d368e5a55d9443c4c53b1b70d58ab6d8c941c Author: Josh Triplett Date: Sun Mar 16 17:02:05 2014 -0700 testsuite: Replace ffitestcxx.h with ffitest.h ffitest.h contains a superset of the functionality of ffitestcxx.h; make the C++ tests include ffitest.h instead, and remove ffitestcxx.h. commit 3f97cf3413c46caf2a79f32ac9cda4620972c2d7 Author: Josh Triplett Date: Sun Mar 16 16:53:42 2014 -0700 testsuite: Unify the C and C++ testsuites These two testsuites differ only in the source file glob and a couple of additional compiler options; unify the remaining bits. commit 0d9cce8edb937bbe771a6cdd25f671edf06d2128 Author: Josh Triplett Date: Sun Mar 16 16:22:58 2014 -0700 testsuite: ffitest.h: Parenthesize the CHECK macro commit 5695ec1444c5323e48fe4314f8c8f027625e67df Author: Josh Triplett Date: Sun Mar 16 16:04:58 2014 -0700 testsuite: Factor out a function to run a matrix of tests This commons up code from libffi.call/call.exp and libffi.special/special.exp, unifies the optimization option matrix between the two, and makes it easier to add more axes to the matrix in the future. commit dfdb02cc869855d3b68571e5f7aa77ae8c9d254a Author: Josh Triplett Date: Sun Mar 16 15:26:26 2014 -0700 testsuite: Introduce a __THISCALL__ compiler-specific macro commit 83fd2bce0456224483435d4b764063f4513fd464 Merge: 3658a07 06ff924 Author: Anthony Green Date: Sun Mar 16 22:03:29 2014 -0400 Merge pull request #99 from joshtriplett/gitignore .gitignore: Ignore more generated files commit 3658a0700a50d37a2fdba04fd9d79ad2f706d9f5 Merge: d948d0a 46c5d3c Author: Anthony Green Date: Sun Mar 16 21:37:42 2014 -0400 Merge pull request #100 from rvandermeulen/bug-756740 Change double quotes in Makefile.am to single quotes. commit 46c5d3c30fdc2b43c076ad955078d7c5f1e75b37 Author: Ryan VanderMeulen Date: Sun Mar 16 21:16:08 2014 -0400 Change double quotes in Makefile.am to single quotes. This was originally done in PR #84, except the change was made to Makefile.in instead of Makefile.am and was therefore reverted the next time the files were regenerated. commit 06ff924215a2f9739efa2c059dc595bc4ec1c851 Author: Josh Triplett Date: Sun Mar 16 16:19:46 2014 -0700 .gitignore: Ignore more generated files The build process generates doc/libffi.info and fficonfig.h.in, so add them to .gitignore. commit bad8948346e9b8813023a0cc78a3b6eb8d9c14c6 Author: Josh Triplett Date: Sun Mar 16 15:16:18 2014 -0700 testsuite: Introduce a __STDCALL__ compiler-specific macro Several tests want to use stdcall, which differs in syntax by compiler, so introduce a macro for it in ffitest.h. commit 98a793fa36a4ab3ba24d059cb80a2891cdb940e1 Author: Josh Triplett Date: Sun Mar 16 15:20:36 2014 -0700 testsuite: Common up the ifdef blocks for compiler-specific macros commit d948d0a729c934b0224749338a3ba0a2c8f51c45 Merge: b61b472 a86bd31 Author: Anthony Green Date: Sun Mar 16 10:53:48 2014 -0400 Merge pull request #98 from joshtriplett/unconfigure.host Merge configure.host into configure.ac commit a86bd318e2424d879d784ee7b29d6536d7a17c18 Author: Josh Triplett Date: Sun Mar 16 06:58:59 2014 -0700 Merge configure.host into configure.ac configure.host only has a single entry, and shows no signs of needing more added. commit b61b472bd0647006d6685238721002017f1d119c Author: Anthony Green Date: Sun Mar 16 09:45:55 2014 -0400 Update version to 3.1-rc0. Clean up README. commit 7a64e7dbba54e6e9f69954adfb943be1856ff928 Merge: 11a5c5c eef2e02 Author: Anthony Green Date: Sun Mar 16 09:39:08 2014 -0400 Merge pull request #97 from joshtriplett/remove-more-generated-files Remove more generated files commit 11a5c5c39f5861011f6c5ddf795da3a32b5f0082 Merge: 9a62a21 1c68c07 Author: Anthony Green Date: Sun Mar 16 09:38:47 2014 -0400 Merge pull request #96 from joshtriplett/sawing-changelogs Generate ChangeLog from git in make dist; remove it from version control commit eef2e02a13d7d1c8145d47a64467f654406a3548 Author: Josh Triplett Date: Sun Mar 16 06:26:03 2014 -0700 doc: Remove autogenerated info file and stamp commit 9fb403d3c5d9643e0f561cab6d4a07b1e54907ff Author: Josh Triplett Date: Sun Mar 16 06:25:52 2014 -0700 fficonfig.h.in: Remove, configure generates it commit 1c68c07217fda78a779778c1480fedef7a58d5b4 Author: Josh Triplett Date: Sun Mar 16 06:11:58 2014 -0700 Generate ChangeLog from git in make dist Archive the existing ChangeLog to ChangeLog.libffi-3.1 commit c65ed55e655711e008282edbdd82ce95d008b4f6 Author: Josh Triplett Date: Sun Mar 16 05:52:00 2014 -0700 ChangeLog.v1: Fix typo in explanatory header. commit 9a62a21f5c3a8e1da463229f3170c8ab3031d920 Author: Anthony Green Date: Sun Mar 16 09:03:57 2014 -0400 Add missing ChangeLog entry. Clean up some entries. commit 9bc704c58cb7a049d867837e3a11e2e31886ec66 Merge: 694447a e892e58 Author: Anthony Green Date: Sun Mar 16 08:41:00 2014 -0400 Merge pull request #95 from joshtriplett/news README: Update news for 3.0.14 commit e892e581d1838a06c18c7ecd50ebd79915cff92b Author: Josh Triplett Date: Sun Mar 16 05:38:24 2014 -0700 README: Update news for 3.0.14 commit 694447aa29deadd571efb4e9a26ee3f68ede1493 Merge: fdc87f3 45a6c21 Author: Anthony Green Date: Sun Mar 16 08:32:05 2014 -0400 Merge pull request #93 from joshtriplett/travis-dist Make Travis check "make dist" commit 45a6c21efa944b520842e631dc54919b04884744 Author: Josh Triplett Date: Sun Mar 16 05:29:08 2014 -0700 .travis.yml: Test "make dist" too. commit fdc87f3b2ea37b58a4a9ae6c35083f544909fe3c Merge: 7412b83 e1911f7 Author: Anthony Green Date: Sun Mar 16 08:05:51 2014 -0400 Merge pull request #85 from joshtriplett/stdcall stdcall support on Linux commit e1911f78df113ca58738b66089a070d4cf747de7 Author: Josh Triplett Date: Sun Mar 16 03:25:53 2014 -0700 Add support for stdcall, thiscall, and fastcall on non-Windows x86-32 Linux supports the stdcall calling convention, either via functions explicitly declared with the stdcall attribute, or via code compiled with -mrtd which effectively makes stdcall the default. This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on non-Windows x86-32 platforms, as non-default calling conventions. commit 7412b838d543aae4fa925862bd5702d3dacbc29a Merge: c0cc5fd 9531d05 Author: Anthony Green Date: Sun Mar 16 07:58:16 2014 -0400 Merge pull request #90 from joshtriplett/win32-unifdef prep_cif.c: Remove unnecessary ifdef for X86_WIN32 commit c0cc5fdaa237b67e86f22d2f6e13f3b42d9aae33 Merge: 98b5296 b3a5da0 Author: Anthony Green Date: Sun Mar 16 07:57:59 2014 -0400 Merge pull request #89 from joshtriplett/travis32 .travis.yml: Test on both 32-bit and 64-bit commit 9531d05f64c2a674e0197158ffad68d69f177bd0 Author: Josh Triplett Date: Sun Mar 16 01:50:02 2014 -0700 prep_cif.c: Remove unnecessary ifdef for X86_WIN32 ffi_prep_cif_core had a special case for X86_WIN32, checking for FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI range before returning FFI_BAD_ABI. However, on X86_WIN32, FFI_THISCALL already falls in that range, making the special case unnecessary. Remove it. commit b3a5da068abd2f2983d9e67adbf41b0e0f34e37f Author: Josh Triplett Date: Sat Mar 15 23:27:56 2014 -0700 .travis.yml: Test on both 32-bit and 64-bit commit 98b52960485a261399f081915f36063de3854a5f Merge: 134ce4c f6dd184 Author: Anthony Green Date: Sun Mar 16 07:51:33 2014 -0400 Merge pull request #94 from joshtriplett/esp-extra-stackery-perception ChangeLog: Document testsuite changes to remove fragile stack pointer checks commit f6dd1845434dd53e22129becdfa092c082df307c Author: Josh Triplett Date: Sun Mar 16 04:49:36 2014 -0700 ChangeLog: Document testsuite changes to remove fragile stack pointer checks commit 134ce4c0266bf994f07518fc534de53f1d3c8de8 Merge: 2680e9e 9c27932 Author: Anthony Green Date: Sun Mar 16 07:47:17 2014 -0400 Merge pull request #91 from joshtriplett/esp-extra-stackery-perception testsuite: Remove fragile stack pointer checks commit 9c279328ee12fc869adff63ca81f1230977bd42b Author: Josh Triplett Date: Sun Mar 16 02:31:19 2014 -0700 testsuite: Remove fragile stack pointer checks testsuite/libffi.call/closure_stdcall.c and testsuite/libffi.call/closure_thiscall.c include inline assembly to save the stack pointer before and after the call, and compare the values. However, compilers can and do leave the stack in different states for these two pieces of inline assembly, such as by saving a temporary value on the stack across the call; observed with gcc -Os, and verified as spurious through careful inspection of disassembly. commit 2680e9ea9b4c87ea8042a61e551bd667493d4bd3 Merge: 071eab3 82f8cb2 Author: Anthony Green Date: Sun Mar 16 07:44:08 2014 -0400 Merge pull request #88 from joshtriplett/such-precision-many-fail-wow testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision commit 82f8cb24a1d976db35ae31a4b86cec8926da327d Author: Josh Triplett Date: Sun Mar 16 04:27:32 2014 -0700 ChangeLog: Document many.c and many_win32.c changes to avoid spurious failures commit 88d562a8b5912e99306063fe3bc289bab6ca6ebe Author: Josh Triplett Date: Sat Mar 15 22:08:19 2014 -0700 testsuite/libffi.call/many_win32.c: Avoid spurious failure due to excess precision The test case testsuite/libffi.call/many_win32.c can spuriously fail due to excess floating-point precision. Instrumenting it with some printf calls shows differences well above FLT_EPSILON. (Note when instrumenting it that multiple computations of the difference, such as one in a print and another in the conditional, may produce different results.) Rather than complicating the test suite with architecture-specific flags to avoid excess precision, just simplify the floating-point computation to avoid a dependency on potential excess precision. commit c00a49ecd165b2d06c1c9b249d212dc843fa116f Author: Josh Triplett Date: Sat Mar 15 22:08:19 2014 -0700 testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision The test case testsuite/libffi.call/many.c can spuriously fail due to excess floating-point precision. Instrumenting it with some printf calls shows differences well above FLT_EPSILON. (Note when instrumenting it that multiple computations of the difference, such as one in a print and another in the conditional, may produce different results.) Rather than complicating the test suite with architecture-specific flags to avoid excess precision, just simplify the floating-point computation to avoid a dependency on potential excess precision. commit 071eab32a7f9fbbef46c0d8f37d9985bc9cceb37 Merge: 2228c7a 2f44952 Author: Anthony Green Date: Sun Mar 16 07:36:52 2014 -0400 Merge pull request #92 from joshtriplett/autogen Re-add libtool-ldflags commit 2f44952c95765c1486fad66f57235f8d459a9748 Author: Josh Triplett Date: Sun Mar 16 04:35:12 2014 -0700 Re-add libtool-ldflags commit 2228c7ab190f3c529b9018495467b841fa21cba2 Merge: 76d19d0 35634db Author: Anthony Green Date: Sun Mar 16 07:25:18 2014 -0400 Merge pull request #87 from joshtriplett/autogen Remove autogenerated files from the repository commit 35634dbceaac0a1544f7385addc01d21ef1ef6a8 Author: Josh Triplett Date: Sat Mar 15 18:11:16 2014 -0700 Remove autogenerated files from the repository Add an autogen.sh to regenerate them. commit 76d19d004e36e99d261ee78261e2f52cea5e4ab1 Merge: c86d9b6 a1a6f71 Author: Anthony Green Date: Fri Mar 14 16:54:31 2014 -0400 Ensure the linker supports @unwind sections in libffi. commit c86d9b6cc6e16ee262844a33b40441374400758c Merge: 4efb7db f8cdf11 Author: Anthony Green Date: Fri Mar 14 16:51:20 2014 -0400 Fix merge commit 4efb7dbfd9427c478a948cd0d464210123db8de8 Merge: 634a475 18eb81d Author: Anthony Green Date: Fri Mar 14 16:47:57 2014 -0400 Merge pull request #81 from rvandermeulen/bug-756740 Allow building for mipsel with Android NDK r8. commit a1a6f71bfe4199293043b2e4cfb4c8d3cb1112f9 Author: Ryan VanderMeulen Date: Mon Mar 10 15:12:47 2014 -0400 Remove stray hunk that shouldn't have been included in this patch. commit f8cdf11467181f2a9a6b7e748167569aa58e3a81 Author: Ryan VanderMeulen Date: Mon Mar 10 15:04:58 2014 -0400 Replace double quotes with single quotes in Makefile.in to improve compatibility between some versions of MSYS and gmake. From Mozilla bug 943728. https://bugzilla.mozilla.org/show_bug.cgi?id=943728 commit dfa3738732e1bc3a7f4130395ae4bab55fcebb99 Author: Ryan VanderMeulen Date: Mon Mar 10 14:53:48 2014 -0400 Ensure the linker supports @unwind sections in libffi. From Mozilla bug 756740. https://bugzilla.mozilla.org/show_bug.cgi?id=778414 Also tracked as issue #42. https://github.com/atgreen/libffi/issues/42 commit 18eb81d032f29d645d0498ba92bddfd651f009ae Author: Ryan VanderMeulen Date: Mon Mar 10 14:43:37 2014 -0400 Allow building for mipsel with Android NDK r8. From Mozilla bug 756740. https://bugzilla.mozilla.org/show_bug.cgi?id=756740 commit 2349fec9a818fb52fd2f294bcbc7b3156cd113de Author: Daiki Ueno Date: Wed Mar 5 17:53:02 2014 +0900 Fix typo in doc commit 634a475eaf1bee31c09f7d519e31c13b64cd24df Author: Anthony Green Date: Sat Mar 1 18:37:29 2014 -0500 Update Makefile for new darwin scripts commit c7b67e874bb89859f9a07d1cf9606052b6c0dcc1 Author: Anthony Green Date: Sat Mar 1 18:34:18 2014 -0500 Add README note commit a04e30ba3dc303133d459c1ac273ceefe4d49b32 Author: Anthony Green Date: Fri Feb 28 17:20:59 2014 -0500 Add missing -DFFI_DEBUG flag commit 934dc1b5c8d6a9e727bedc72342831eb7d62c35f Merge: 11d7aa9 67fbef3 Author: Anthony Green Date: Fri Feb 28 01:10:17 2014 -0500 Merge branch 'master' of github.com:/atgreen/libffi commit 11d7aa9d7a4bbe642944edc0f07cf96db9b270b6 Merge: b40aeda 3b44d41 Author: Anthony Green Date: Fri Feb 28 01:06:48 2014 -0500 Merge pull request #46 from makotokato/android-clang Fix build failure when using clang for Android commit 67fbef3b56ff0ef88f9b1a7fe48cb77222fa6cec Merge: b40aeda 3b44d41 Author: Anthony Green Date: Fri Feb 28 01:06:48 2014 -0500 Merge pull request #46 from makotokato/android-clang Fix build failure when using clang for Android commit b40aeda31a74d95a37c723b6243aabac466e67c4 Merge: 20698ab 53ceaf1 Author: Anthony Green Date: Fri Feb 28 01:01:29 2014 -0500 Merge branch 'master' of github.com:/atgreen/libffi commit 53ceaf14c5eeb16ba09745f0ca87cca367d41a90 Merge: 860fe66 cc9b518 Author: Anthony Green Date: Fri Feb 28 01:01:02 2014 -0500 Merge pull request #40 from wojdyr/master Correct the -L flag in libffi.pc.in commit 20698abc6a00092fd7fd3e434a3a29dc0f048f1e Merge: 64bd069 1a0b01e Author: Anthony Green Date: Fri Feb 28 00:56:27 2014 -0500 Merge pull request #66 from ppizarro/master BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI commit 860fe6646f5ae603e99a8d1d722ddddba8b75769 Merge: 64bd069 1a0b01e Author: Anthony Green Date: Fri Feb 28 00:56:27 2014 -0500 Merge pull request #66 from ppizarro/master BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI commit 64bd06990a7accf72271516a2110b86cdccd8df4 Author: Anthony Green Date: Fri Feb 28 00:52:56 2014 -0500 Add ChangeLog entry for Josh's change commit edf29c5169b06fcfc241445e152e325bc3c50e0e Merge: 33c9954 3998d26 Author: Anthony Green Date: Fri Feb 28 00:50:25 2014 -0500 Merge pull request #75 from joshtriplett/longdouble Fix build error on x86 without distinct long double commit 33c9954f2eec539011a0f93270aaf013318837ae Author: Anthony Green Date: Fri Feb 28 00:38:41 2014 -0500 Rebuilt with new libtool commit 926b6989fbd08488b9105943293353d45ac527e0 Merge: 5a88c85 cc82051 Author: Anthony Green Date: Fri Feb 28 00:26:57 2014 -0500 Merge branch 'master' of github.com:/atgreen/libffi Conflicts: ChangeLog commit 5a88c85fde304052bed1581ed0b6452ac2c68838 Author: Anthony Green Date: Fri Feb 28 00:23:04 2014 -0500 Fix spelling errors commit cc82051c7e80cea772c4b72da026eb7e68d598fc Author: Anthony Green Date: Fri Feb 28 00:23:04 2014 -0500 Fix spelling errors commit 001aaf4b1b56349596bb6f6b5c1613dcbbd84ea8 Author: Anthony Green Date: Fri Feb 28 00:20:17 2014 -0500 When no VFP arguments are present the IP register is used uninitialized. Initialize it to the value of FP. This fixes a number of testsuite failures when configured for armv7l-unknown-linux-gnueabihf commit 49f7729c3ce697c12408c42ccb29cdf4eb66bb85 Author: Anthony Green Date: Fri Feb 28 00:17:16 2014 -0500 aarch64 fix commit 447483d51c6aa9df7116f346a73fc1cf795f4c2b Merge: 51377bd b4df9cf Author: Anthony Green Date: Thu Feb 27 15:42:41 2014 -0500 Fix ChangeLog merge commit 3998d2604b5c0d45a098ff3119a9fd9710ef429d Author: Josh Triplett Date: Mon Feb 17 11:20:33 2014 -0800 Fix build error on x86 without distinct long double src/x86/ffi64.c: In function 'classify_argument': src/x86/ffi64.c:205:5: error: duplicate case value case FFI_TYPE_LONGDOUBLE: ^ src/x86/ffi64.c:202:5: error: previously used here case FFI_TYPE_DOUBLE: ^ commit 51377bda9aed0b2c1309c818460cab9d9ab3d46e Merge: f08da54 40927bd Author: Anthony Green Date: Sat Feb 15 08:06:29 2014 -0500 Merge pull request #72 from heiher/devel MIPS N32: Fix call floating point va function commit f08da5465463e60a28f5e921f23ebf2ba984c148 Merge: 3dc3f32 fa5f25c Author: Anthony Green Date: Sat Feb 15 08:06:11 2014 -0500 Merge pull request #68 from zeldin/master Linux/ppc64: Remove assumption on contents of r11 in closure commit 40927bd3e1e7c6007025ba10854fd8a0664e47df Author: Heiher Date: Tue Jan 21 23:18:27 2014 +0800 Fix call floating point va function I'm not sure floating-point arguments in GPR or FPR before calling variable number arguments function. so, load all arguments to GPR and FPR. commit b4df9cf9cc4a9a9401a53fd6bea1f3c2c283b97b Author: Zachary Waldowski Date: Wed Feb 5 14:22:52 2014 -0500 AArch64: Fix void fall-through case when assertions are enabled commit f466aad0d91a117e42571d1d6fb434fa0433c930 Author: Zachary Waldowski Date: Tue Jan 21 16:38:31 2014 -0500 AArch64: Fix missing semicolons when assertions are enabled commit 7ea677733bd98917241852b8901a6b7580728895 Author: Anthony Green Date: Sat Nov 30 20:58:31 2013 -0500 Remove build-ios from Makefile Conflicts: ChangeLog commit 6ae046cc59c12b2cd40158d6bcb96f4a59886159 Author: Anthony Green Date: Sat Nov 30 21:06:51 2013 -0500 Mention Aarch64 on iOS commit bfc06b3fdb32abe90ce0749aedfec649df85a7ef Author: Zachary Waldowski Date: Mon Dec 30 17:36:39 2013 -0500 Update ChangeLog commit 0a0f12ce1f7be81006b08a3c81a636926d283a9b Author: Zachary Waldowski Date: Thu Jan 9 13:50:17 2014 -0500 AArch64: Remove duplicitous element_count call. This inhibits an analyzer warning by Clang. commit 4330fdcd92e67c816288d64ab230237065768206 Author: Zachary Waldowski Date: Thu Jan 9 13:53:30 2014 -0500 Darwin/aarch64: Respect iOS ABI re: stack argument alignment commit 0a333d6c3973935d4fe02aae76b10e39d3c88e07 Author: Zachary Waldowski Date: Thu Jan 9 14:03:29 2014 -0500 Darwin/aarch64: Fix size_t assumptions commit 2c18e3c76aad1b426617db05a4384e7c3a920176 Author: Zachary Waldowski Date: Mon Dec 30 16:14:02 2013 -0500 Darwin/aarch64: Fix "shadows declaration" warnings commit 1b8a8e20e344f3c55495ab6eb46bd14e843d4b3e Author: Zachary Waldowski Date: Thu Jan 9 13:55:21 2014 -0500 Darwin/aarch64: Use Clang cache invalidation builtin commit 6030cdcae776f8fb5876a53168f7d1e75d28a242 Author: Zachary Waldowski Date: Mon Dec 30 15:45:51 2013 -0500 Darwin/aarch64: Account for long double being equal to double commit 5658b0892683d2e24e4d5842978c184a7ad33858 Author: Zachary Waldowski Date: Mon Dec 30 16:33:47 2013 -0500 Darwin/aarch64: Use CNAME, restrict .size like ARM commit 07175780802acec5dc49fdedd6d20a62409a6707 Author: Zachary Waldowski Date: Mon Dec 30 17:48:22 2013 -0500 Darwin/aarch64: Fix invalid reference in assembly commit 9da28b44277fea3aeb827c35dd63d609d2524a8b Author: Zachary Waldowski Date: Mon Dec 30 16:23:21 2013 -0500 Darwin/x86_64: Fix 64-bit type shortening warnings commit 821d398f08bd1d540a5b235507812ffeee49b580 Author: Zachary Waldowski Date: Thu Jan 9 13:15:06 2014 -0500 Darwin: Merge build scripts, redo project, incl. arm64 commit 6eff9ff9e72463b9783be2514f944b6f05692054 Author: Zachary Waldowski Date: Mon Dec 30 17:48:10 2013 -0500 Darwin/iOS: Improve unified syntax use for LLVM commit ba0ea99c82aadd5957386a031e3122011bd36d52 Author: Zachary Waldowski Date: Mon Dec 30 15:27:44 2013 -0500 Fix dlmalloc warnings due to set_segment_flags, sizeof(size_t) commit 994be3a5c1d0d17b19103396103e128517fd62f9 Author: Zachary Waldowski Date: Mon Dec 30 15:27:14 2013 -0500 Darwin/iOS: Fix mis-typing of vfp_reg_free commit a8e0a835ab1f62d03ad6391760e3e8b7732d24f8 Author: Zachary Waldowski Date: Mon Dec 30 15:26:20 2013 -0500 Darwin/ARM: Assert on NULL dereference This inhibits an analyzer warning by Clang on all platforms. commit 13675341581c489ed9df8ba390c8e08a732decb2 Author: Zachary Waldowski Date: Thu Jan 9 13:42:08 2014 -0500 Darwin/i386: Inhibit Clang previous prototype warnings commit 66469c381e2e2cc96e7d409266dea0ffe177eeca Author: Zachary Waldowski Date: Thu Jan 9 13:41:45 2014 -0500 Darwin/ARM: Inhibit Clang previous prototype warnings commit 5bfe62a00d2d659eec9f19b39802b6e69844fc27 Author: Zachary Waldowski Date: Thu Jan 9 13:41:27 2014 -0500 Darwin/AArch64: Inhibit Clang previous prototype warnings commit fa5f25c20f76a6ef5e950a7ccbce826672c8a620 Author: Marcus Comstedt Date: Sat Jan 4 19:00:08 2014 +0100 Linux/ppc64: Remove assumption on contents of r11 in closure commit 1a0b01e171e9c750437cef2f18917f5a6e32c498 Author: Paulo Pizarro Date: Thu Jan 2 16:17:59 2014 -0200 When the function called by the ffi called a function defined in a shared library generate a fatal error The correction was to take into consideration the GOT. commit 3dc3f32c35db5ab995a835225f6815369735ceb7 Author: Anthony Green Date: Thu Dec 5 16:23:25 2013 -0500 Undo iOS ARM64 changes. commit 356b2cbc304bfe5bdc28b8d1c68d1ff084e9ec37 Merge: 484a758 07345a3 Author: Anthony Green Date: Sat Nov 30 22:38:13 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi commit 484a7584260e2fbb399ce90083046834271bf9ff Author: Anthony Green Date: Sat Nov 30 21:06:51 2013 -0500 Mention Aarch64 on iOS commit 07345a30ec0a2fa45a7c363d301f57723690cfa0 Author: Anthony Green Date: Sat Nov 30 21:06:51 2013 -0500 Mention Aarch64 on iOS commit d4b931c1b872378c35f12ddbb9a6d55e7f17c65e Author: Anthony Green Date: Sat Nov 30 20:58:31 2013 -0500 Remove build-ios from Makefile commit dfbf236d70fc1ec68e6ff193584a154353508e2f Merge: 852ac3b bb9740e Author: Anthony Green Date: Sat Nov 30 20:54:54 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi Add ChangeLog entry. commit bb9740e545205f93a525c77aa6d1cbf4ca9371f3 Merge: ac75368 4d701e0 Author: Anthony Green Date: Sat Nov 30 17:54:39 2013 -0800 Merge pull request #60 from zwaldowski/ios-redo Mac/iOS support, including aarch64 port commit 4d701e03faa475a5eb3b54b90046114a1e27b813 Author: Zachary Waldowski Date: Sat Nov 30 13:25:27 2013 -0500 Darwin: Properly export headers from Xcode project commit 022f12eb9ad2264e838fa5fb453733f5177888f4 Author: Zachary Waldowski Date: Sat Nov 30 12:21:38 2013 -0500 Darwin: Freshen gen scripts, remove old build-ios.sh commit e820fe2025d7ad3df7584407946dfaad2af69599 Author: Zachary Waldowski Date: Sat Nov 30 12:03:51 2013 -0500 Darwin/iOS: Include x86_64+aarch64 pieces in library commit 0278284e470ec91db7cdc15ac3dcd64683305848 Author: Zachary Waldowski Date: Sat Nov 30 03:03:37 2013 -0500 Darwin/aarch64: size_t assumptions commit 9775446b6441c91cd9059215c106aa3bcf949767 Author: Zachary Waldowski Date: Sat Nov 30 02:39:34 2013 -0500 Darwin/aarch64: Fix “shadows declaration†warnings commit 4260badc37705d3618e774dfe61184ac709881c1 Author: Zachary Waldowski Date: Sat Nov 30 02:08:14 2013 -0500 Darwin/aarch64: Use Clang cache invalidation builtin commit 9fa7998d5f9250908cbf12a671479852ebadf9d1 Author: Zachary Waldowski Date: Sat Nov 30 02:07:48 2013 -0500 Darwin/aarch64: Inhibit Xcode warning commit 0e832048a93830575b0976406444e134e649a4f7 Author: Zachary Waldowski Date: Sat Nov 30 02:07:34 2013 -0500 Darwin/aarch64: double == long double commit 602dc22d76931092610234cf063f9f1b8dbc1a51 Author: Zachary Waldowski Date: Sat Nov 30 02:06:00 2013 -0500 Darwin/iOS prep script: try and compile for arm64 commit b513dfe79de4725e8a717325a9e3b5b9f69f63dc Author: Zachary Waldowski Date: Sat Nov 30 02:05:22 2013 -0500 Darwin/aarch64: Restrict .size to ELF like arm32. commit bc978099bf2812de755c076b67ef9c2547607572 Author: Zachary Waldowski Date: Sat Nov 30 02:04:57 2013 -0500 Darwin/aarch64: Potentially(?) fix compile error commit d6bb9314467c6e0683156559d23ca341c43fa3c8 Author: Zachary Waldowski Date: Sat Nov 30 02:04:22 2013 -0500 Darwin/aarch64: Use CNAME refs commit 33c46ce5680eea28d3437c8771ec1d137e226b45 Author: Zachary Waldowski Date: Sat Nov 30 04:13:42 2013 -0500 Darwin/Mac: Fix 64/32 shortening warnings commit 0612081e6c161d9d820742f995975d35da2adbc2 Author: Zachary Waldowski Date: Sat Nov 30 03:03:00 2013 -0500 Darwin: Misc size_t warnings commit 6a6247d179ec3859311c2d8775841b884f309f66 Author: Zachary Waldowski Date: Sat Nov 30 02:55:48 2013 -0500 Darwin: Fix dlmalloc warnings due to sizeof(size_t) commit 4d60d9e1e32de6166ffd63bbe9ce54cf961c78fc Author: Zachary Waldowski Date: Sat Nov 30 04:09:30 2013 -0500 Darwin: Rebuild Xcode project commit cb719a5c1c2eb391d6a5f5e02484ba4aa990a51b Author: Zachary Waldowski Date: Sat Nov 30 04:09:18 2013 -0500 Darwin/iOS: Fix LLVM 3.3 warning re: memcpy. commit 21bde92c9abb378f9c456a9d95e6f9b99ef8c920 Author: Zachary Waldowski Date: Sat Nov 30 03:43:42 2013 -0500 Darwin: Clean up, modernize generator scripts commit fd54eab74cef7891e4acaaafb71e783142ecb69e Author: Zachary Waldowski Date: Sat Nov 30 03:38:02 2013 -0500 Darwin/Mac: Also exclude OS X generated source commit 953b6f14c655141f9e7d82550a312c3eeb961091 Author: Zachary Waldowski Date: Tue Apr 24 11:16:20 2012 -0400 Darwin/iOS: More unified syntax support w/ Clang. Signed-off-by: Zachary Waldowski commit c713a55379481c339877f2e0003d97cb8d9ed80e Author: Zachary Waldowski Date: Tue Apr 24 10:25:29 2012 -0400 Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1 Signed-off-by: Zachary Waldowski commit 16ba1b80028db5cb71cf86e5f79f5e48317f83c8 Author: Zachary Waldowski Date: Wed Apr 11 23:26:04 2012 -0400 Darwin: Silence Clang warnings. commit 852ac3bd302d6ed97b1ef65f4cbed69c258a48df Merge: ab79d6e ac75368 Author: Anthony Green Date: Thu Nov 21 21:25:44 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi Conflicts: ChangeLog commit ab79d6e21992dd86139ba07530ff888833b78a04 Author: Alan Modra Date: Thu Nov 21 06:12:35 2013 -0500 This separates the 32-bit sysv/linux/bsd code from the 64-bit linux code, and makes it possible to link code compiled with different options to those used to compile libffi. For example, a -mlong-double-128 libffi can be used with -mlong-double-64 code. Using the return value area as a place to pass parameters wasn't such a good idea, causing a failure of cls_ulonglong.c. I didn't see this when running the mainline gcc libffi testsuite because that version of the test is inferior to the upstreamm libffi test. Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant that a parameter save area could be allocated before it was strictly necessary. Wrong but harmless. Found when splitting apart ffi.c into 32-bit and 64-bit support. commit ac7536889334d4be50709006d7e23536364d7891 Author: Alan Modra Date: Thu Nov 21 06:12:35 2013 -0500 This separates the 32-bit sysv/linux/bsd code from the 64-bit linux code, and makes it possible to link code compiled with different options to those used to compile libffi. For example, a -mlong-double-128 libffi can be used with -mlong-double-64 code. Using the return value area as a place to pass parameters wasn't such a good idea, causing a failure of cls_ulonglong.c. I didn't see this when running the mainline gcc libffi testsuite because that version of the test is inferior to the upstreamm libffi test. Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant that a parameter save area could be allocated before it was strictly necessary. Wrong but harmless. Found when splitting apart ffi.c into 32-bit and 64-bit support. commit 69df91cfb4fa6bcb644350a80bff970f27478a6a Merge: 2f45082 aa1f62c Author: Anthony Green Date: Mon Nov 18 06:34:04 2013 -0800 Merge pull request #59 from iains/powerpc-darwin-unwind-fix Fix PowerPC Darwin FDE encodings to use pcrel correctly. Modernise the picbase labels. commit aa1f62c0a093c30325dff1d4d2b6b4b22eb96929 Author: Iain Sandoe Date: Mon Nov 18 13:11:56 2013 +0000 Fix PowerPC Darwin FDE encodings to use pcrel correctly. Modernise the picbase labels. commit 2f450822a8698ba88441c56d152c7dc8924b127f Author: Anthony Green Date: Mon Nov 18 06:52:29 2013 -0500 Clean up code to appease modern GCC compiler. commit 16d56c51aded374730920a4acde76ff3d2860ae1 Author: Alan Modra Date: Mon Nov 18 06:36:03 2013 -0500 An #endif in the wrong place would cause compile failure on powerpcle. Using bl instead of b doesn't cause runtime failures as you might think, but does mess the processor branch prediction. commit 34f878a5ef28663f6b1d7fd26fb099429ea1579e Merge: 83f65b6 1fd0457 Author: Anthony Green Date: Sat Nov 16 06:57:54 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi Conflicts: ChangeLog src/powerpc/ffi.c commit 83f65b63d9764a9cc7688fc5cda5ee2bd23faf54 Author: Alan Modra Date: Sat Nov 16 06:53:50 2013 -0500 Finally, this adds _CALL_ELF == 2 support. ELFv1 objects can't be linked with ELFv2 objects, so this is one case where preprocessor tests in ffi.c are fine. Also, there is no need to define a new FFI_ELFv2 or somesuch value in enum ffi_abi. FFI_LINUX64 will happily serve both ABIs. commit 1fd045784cac874b5d76b7fa931f67209a8280d3 Author: Alan Modra Date: Sat Nov 16 06:53:50 2013 -0500 Finally, this adds _CALL_ELF == 2 support. ELFv1 objects can't be linked with ELFv2 objects, so this is one case where preprocessor tests in ffi.c are fine. Also, there is no need to define a new FFI_ELFv2 or somesuch value in enum ffi_abi. FFI_LINUX64 will happily serve both ABIs. commit 362851379a49ce07d3e36e82c4e5c7b6cc16a352 Author: Alan Modra Date: Sat Nov 16 06:52:43 2013 -0500 Andreas' 2013-02-08 change reverted some breakage for struct return values from 2011-11-12, but in so doing reintroduced string instructions to sysv.S that are not supported on all powerpc variants. This patch properly copies the bounce buffer to destination in C code rather than in asm. I have tested this on powerpc64-linux, powerpc-linux and powerpc-freebsd. Well, the last on powerpc-linux by lying to configure with CC="gcc -m32 -msvr4-struct-return -mlong-double-64" \ CXX="g++ -m32 -msvr4-struct-return -mlong-double-64" \ /src/libffi-current/configure --build=powerpc-freebsd and then make && make CC="gcc -m32" CXX="g++ -m32" \ RUNTESTFLAGS=--target_board=unix/-m32/-msvr4-struct-return/-mlong-double-64\ check commit 1c06515d927d9de1582438d4eb5953890e79c5c7 Author: Alan Modra Date: Sat Nov 16 06:41:36 2013 -0500 The powerpc64 ABIs align structs passed by value, a fact ignored by gcc for quite some time. Since gcc now does the correct alignment, libffi needs to follow suit. This ought to be made selectable via a new abi value, and the #ifdefs removed from ffi.c along with many other #ifdefs present there and in assembly. I'll do that with a followup patch sometime. This is a revised version of https://sourceware.org/ml/libffi-discuss/2013/msg00162.html commit a97cf1fae575d8bfd5259c5c422025ad43911326 Author: Alan Modra Date: Sat Nov 16 06:40:13 2013 -0500 This patch prepares for ELFv2, where sizes of these areas change. It also makes some minor changes to improve code efficiency. commit 164283f4ac5972ce2ab5e015cc2ab1014c23276c Author: Alan Modra Date: Sat Nov 16 06:38:55 2013 -0500 The powerpc64 support opted to pass floating point values both in the fpr area and the parameter save area, necessary when the backend doesn't know if a function argument corresponds to the ellipsis arguments of a variadic function. This patch adds powerpc support for variadic functions, and changes the code to only pass fp in the ABI mandated area. ELFv2 needs this change since the parameter save area may not exist there. This also fixes two faulty tests that used a non-variadic function cast to call a variadic function, and spuriously reasoned that this is somehow necessary for static functions.. commit 31257b3189f81a199bc2902c22bc5f2d7c54ccde Author: Andrew Haley Date: Sat Nov 16 06:35:51 2013 -0500 Fix sample closure code commit db0ace3a38496af73eae3df02ef353736d16909f Author: Andrew Haley Date: Sat Nov 16 06:29:25 2013 -0500 Fix broken test cases commit de10f5039ed7a53382ddcc95c368d03e535edb98 Merge: 58c2577 f3657da Author: Anthony Green Date: Thu Nov 14 10:56:29 2013 -0500 Merge branch 'master' of https://github.com/bivab/libffi Conflicts: ChangeLog commit f3657da278dd63afcdd8762894a9bdaea8ef028a Author: David Schneider Date: Thu Nov 14 13:02:16 2013 +0100 update Changelog commit 58c2577a3ff80e7416ef0434769e2af23365719c Author: Alan Modra Date: Wed Nov 13 16:55:36 2013 -0500 This enshrines the current testsuite practice of using ffi_arg for returned values. It would be reasonable and logical to use the actual return argument type as passed to ffi_prep_cif, but this would mean changing a large number of tests that use ffi_arg and all backends that write results to an ffi_arg. commit 8af42f9944f7ed72c81ae360aac6a84dc11f89dc Author: Anthony Green Date: Wed Nov 13 16:40:28 2013 -0500 Respect HAVE_ALLOCA_H commit cdf405d574f479b782454516366bd4f4b9b3415e Author: David Schneider Date: Wed Nov 13 15:50:21 2013 +0100 add a testcase for the double/float issue on ARMHF commit 77f823e31ffb557a466b24f7fba845fbf7831798 Author: David Schneider Date: Wed Nov 13 14:26:57 2013 +0100 stop trying to assing vfp regs once we are done with the registers commit 37067ec5036f2a6ed7a4799f83f8f53160460344 Author: David Schneider Date: Tue Nov 12 19:49:01 2013 +0100 mark all vfp registers as used when done. To avoid assigning registers the would fit, once arguments have been on the stack, we mark all registers as used once we do not find a free register for the first time. commit 2f5b7ce545473a7f6e41193edc29407cbebe82d5 Author: Anthony Green Date: Sat Nov 9 06:16:32 2013 -0500 UltraSPARC IIi fix. Update README and build configury. commit becd754434173032f426d22ffcbfe24f55b3c137 Author: Mark Kettenis Date: Wed Nov 6 06:43:49 2013 -0500 Align the stack pointer to 16-bytes. commit 05c31093409f7b3e6d795fac21d2c954313d8162 Author: Konstantin Belousov Date: Wed Nov 6 06:40:58 2013 -0500 Mark executable as not requiring executable stack. commit cf6bf9818e8394cfcdb07a40c6a5e2ee6b01d333 Author: Anthony Green Date: Sat Nov 2 17:23:59 2013 -0400 Fix up docs commit 02177176854d16fc0f1a5958aa34da2f306630ee Merge: c242217 c265b4c Author: Anthony Green Date: Sat Nov 2 17:11:22 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi commit c2422174b3edc0de0b148dfd6b67087bb881c4a6 Merge: f4b843f d918d47 Author: Anthony Green Date: Sat Nov 2 14:08:23 2013 -0700 Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support arc: Fix build error commit c265b4cacb9130f042699a85de9c7242b3f49cc3 Merge: f4b843f d918d47 Author: Anthony Green Date: Sat Nov 2 14:08:23 2013 -0700 Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support arc: Fix build error commit f4b843f83710ac378c48abd87fe66bb519d30d2e Author: Anthony Green Date: Sat Nov 2 17:01:15 2013 -0400 Don't align stack for win32 commit f3cd39345713db8e414cf642b6cb65a4cfe6018c Merge: 666f3e7 6aa1590 Author: Anthony Green Date: Sat Nov 2 13:17:57 2013 -0700 Merge pull request #51 from vbudovski/for_upstream Don't use 16 byte aligned stack for WIN32 commit 666f3e71b56d92c49fcd2d7f349b8f8ebca0f8a3 Author: Anthony Green Date: Sat Oct 26 09:12:42 2013 -0400 Add more credits to README. Tidy up. commit 73ada14e756bad97fad0e6915a821a3c7e079f81 Author: Anthony Green Date: Sat Oct 26 09:09:45 2013 -0400 Update README commit d3372c54ce7117e80d389ba875dc5b6b2213c71e Author: Mark H Weaver Date: Sat Oct 26 08:30:06 2013 -0400 Fix N32 ABI issue for MIPS. commit d6716aba8118eb0513885cfe557bedebb7016e8b Author: Anthony Green Date: Tue Oct 15 15:42:49 2013 -0400 Update travis-ci build dependencies to include texinfo commit 16b93a211bcfbe4bd0efdcf94de225a71aa0ee02 Author: Sandra Loosemore Date: Tue Oct 15 15:33:59 2013 -0400 Add nios2 port. commit 2f5626ce02fce8267ab48ceb6d7d0ed7d672a75e Author: Sandra Loosemore Date: Tue Oct 15 15:32:16 2013 -0400 Fix testsuite bug commit f64e4a865557e440774436b4c2b2fd7374290e97 Author: Marcus Shawcroft Date: Tue Oct 15 15:20:14 2013 -0400 Fix many.c testcase for Aarch64 commit 128cd1d2f358f26d9fa75a27cf2b30356f5dd903 Author: Anthony Green Date: Tue Oct 8 06:45:51 2013 -0400 Fix spelling errors commit ff06269d707cafbfef2a88afb07a79c9d1480c5f Author: Anthony Green Date: Tue Oct 8 06:32:18 2013 -0400 Update README for M88K and VAX commit d2fcbcdfbea750d1f6a9f493e2e6c4d5ffa71b34 Author: Anthony Green Date: Tue Oct 8 06:27:46 2013 -0400 Add m88k and VAX support. Update some configury bits. commit 6aa15900accc0a648cdebf11ec11d11697ebfffd Author: Vitaly Budovski Date: Thu Sep 5 12:05:06 2013 +1000 Don't use 16 byte aligned stack for WIN32 This fixes a crash when accessing __stdcall functions in Python ctypes. commit 3b44d41156149af8da2a58825fefdfa23274ae7a Author: Makoto Kato Date: Wed Jul 10 15:34:53 2013 +0900 Fix build failure when using clang for Android clang for Android generates __gnu_linux__ define, but gcc for Android doesn't. So we should add check it for Android commit d918d47809c174d62283306b282749f8db93661f Author: Mischa Jonker Date: Mon Jul 8 15:51:36 2013 +0200 arc: Fix build error One part of the patch for ARC support was missing in the upstreamed version. Signed-off-by: Mischa Jonker commit d3d099b40c122550279789200263346f120f6909 Author: Anthony Green Date: Tue Jul 2 16:11:38 2013 -0400 little-endian ppc64 support commit 0f8690a84c874ec09a090c8c6adfb93c594acac6 Author: Anthony Green Date: Tue Jul 2 15:54:40 2013 -0400 Rebuild for ARC additions commit f88118b345f27c46f5445d6e4832c498ff9a6d85 Author: Anthony Green Date: Tue Jul 2 15:51:27 2013 -0400 Revert "Merge pull request #36 from abergmeier/emscripten_fix" This reverts commit 6a4d901dde7b3f87984c563505717cde3113d16e, reversing changes made to b50a13b9c07ec09af4b9697e482acdad571e6961. commit 6a4d901dde7b3f87984c563505717cde3113d16e Merge: b50a13b 587002c Author: Anthony Green Date: Tue Jul 2 12:12:34 2013 -0700 Merge pull request #36 from abergmeier/emscripten_fix Fixes for building with Emscripten commit b50a13b9c07ec09af4b9697e482acdad571e6961 Merge: 767f1f9 b082e15 Author: Anthony Green Date: Tue Jul 2 12:10:26 2013 -0700 Merge pull request #44 from foss-for-synopsys-dwc-arc-processors/arc_support Add ARC support commit 767f1f96e5282da44d7340e6815e9820a3f78e39 Merge: c3c40e0 b8a91d8 Author: Anthony Green Date: Tue Jul 2 12:08:04 2013 -0700 Merge pull request #43 from JensTimmerman/__m128 added include for xmmintrin.h commit b8a91d81be77d479327fdb6bdd9fdae6d18e6e63 Author: Jens Timmerman Date: Tue Jul 2 10:57:37 2013 +0200 added include for xmmintrin.h commit b082e15091961373c03d10ed0251f619ebb6ed76 Author: Mischa Jonker Date: Mon Jun 10 16:19:33 2013 +0200 Add ARC support This adds support for the ARC architecture to libffi. DesignWare ARC is a family of processors from Synopsys, Inc. This patch has been tested on a little-endian system and passes the testsuite. Signed-off-by: Mischa Jonker commit cc9b518687e46b0d1acafdd4bc3f3b281c25a3d9 Author: Marcin Wojdyr Date: Tue May 14 15:01:23 2013 +0200 Update libffi.pc.in use -L${toolexeclibdir} instead of -L${libdir} to be consistent with Makefile.am commit 587002c092cffe6e7a8d7028f246c241d03b738c Author: Andreas Bergmeier Date: Fri Apr 19 17:12:24 2013 +0200 Enable disabling of libtool on platforms where it does not work (e.g. LLVM). Build libraries normally then. commit c3c40e0290377d7cf948b072eedd8317c4bf215e Merge: ede96e4 4750e3c Author: Anthony Green Date: Sat Mar 30 05:24:14 2013 -0700 Merge pull request #34 from davidsch/armhf Fix ARM hard-float support for large numbers of VFP arguments commit 4750e3c662fd9569cb3e2d28f539685fd1ca8caf Author: David Schneider Date: Thu Mar 28 16:56:36 2013 +0100 update changelog commit 9708e7cf09f1bf815f4d6485eb1f180fabb35804 Author: David Schneider Date: Wed Mar 27 19:31:04 2013 +0100 folow the ARM hard-float ABI in ffi_prep_incoming_args_VFP commit b41120981e5e49ca2da10b94b154775f50da5f36 Author: David Schneider Date: Wed Mar 27 16:38:35 2013 +0100 create separated versions of ffi_prep_incoming_args_* for SYSV and VFP ABIs. The different versions will be called depending on the value of cif->abi commit dd26f1f39c54861c5b91931f0f37a72942c2a072 Author: David Schneider Date: Thu Mar 28 15:39:01 2013 +0100 add a failing test for closures on ARM hardfloat commit 3c1608613ab3c2184222b98c5482cddedd6b559b Author: David Schneider Date: Tue Mar 26 19:24:47 2013 +0100 extend ffi_prepare_args for FFI_VFP (hard-float ABI), fixing an issue with passing VFP arguments in VFP registers and the stack, while at the same time not using all core registers. commit 0f2ff2d4c92719be8936179f9ab674f4d1a3fd14 Author: David Schneider Date: Tue Mar 26 19:22:02 2013 +0100 separate ARM ffi_prepare_args in a version implementing the simple SYSV calling convention and one for the hard-float calling convention commit 3a352b8a8252400a83de22c7c424bf1887b4a2ef Author: David Schneider Date: Tue Mar 26 14:24:04 2013 +0100 move the hardfloat specific argument copying code to the helper function commit 5df6b7944a4225b6eb329f3886be64e04e966f29 Author: David Schneider Date: Tue Mar 26 14:02:21 2013 +0100 extract setting of arguments to be passed to a helper function commit 7d1048c471bb4b1f9d67a9e9f8e95f9a1d2e6d45 Author: David Schneider Date: Tue Mar 26 11:33:33 2013 +0100 extract code to align the argument storage pointer to a helper function commit b9f013788f0f384c423ad963475aaacb55598135 Author: David Schneider Date: Mon Mar 25 13:27:36 2013 +0100 add a testcase, that on ARM hardfloat needs more than the 8 VFP argument registers to pass arguments to a call commit 2fbdb0f231cafdb77b025d3cd8afe90cda99b3ba Author: David Schneider Date: Mon Mar 25 13:26:02 2013 +0100 use the absolute value to check the test result against an epsilon commit ede96e4eb660bbf3e0fe048135efa8106f48af5d Merge: f22ab3c 9e34992 Author: Anthony Green Date: Sun Mar 17 18:38:21 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi commit f22ab3c6877cbdd07f058b68816b0086b1cb0e1e Merge: 12b1886 d08124b Author: Anthony Green Date: Sun Mar 17 18:34:54 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi commit 9e34992a5ea2fda1dba5875bf96dc91a7230f51f Merge: 12b1886 d08124b Author: Anthony Green Date: Sun Mar 17 18:34:54 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi commit 12b1886d7b1f8aa264b1d348bfa47a0e14712df4 Author: Anthony Green Date: Sun Mar 17 18:32:12 2013 -0400 cygwin fix & updates for 3.0.13 commit d08124bedf2c6d61874fe215404783aeb9f6f1ac Author: Anthony Green Date: Sun Mar 17 18:32:12 2013 -0400 cygwin fix & updates for 3.0.13 commit cb32c812d04d1dfa72002cc04924e7e4fef89e02 Author: Anthony Green Date: Sun Mar 17 09:27:55 2013 -0400 Fix lib install dir commit efd7866a361a6f636bae8400d26c6811e56ca207 Author: Anthony Green Date: Sat Mar 16 08:35:57 2013 -0400 2.0.13rc1 commit ff647ad4dff2f07dd153f295a1f70b1d906cd6ca Merge: 4acf005 d9dd417 Author: Anthony Green Date: Sat Mar 16 08:20:40 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi Conflicts: ChangeLog commit 4acf0056f55c757490dae6c29a65b0321327ea8a Author: Anthony Green Date: Sat Mar 16 08:18:45 2013 -0400 Build fix for soft-float power targets commit 675c9839224e4268187f1ec6f512127f9db555d0 Author: Anthony Green Date: Sat Mar 16 08:12:38 2013 -0400 Documentation fix commit 8a286f570ccd41db81f74ea7f248da62241d898a Author: Anthony Green Date: Sat Mar 16 08:01:19 2013 -0400 Fix for m68000 systems commit d9dd417b09566af55b7b3000bb53ccaf2e1d6c92 Author: Anthony Green Date: Sat Mar 16 08:01:19 2013 -0400 Fix for m68000 systems commit 215763d012a944d95406b394d6013b80d220e870 Author: Anthony Green Date: Sat Mar 16 07:57:35 2013 -0400 Update configury. commit 9180d8f39c9b6afe17b78277c2711a5d9948e824 Merge: 2fb527a 7e1b326 Author: Anthony Green Date: Sat Mar 16 07:46:55 2013 -0400 Merge branch 'master' of github.com:/atgreen/libffi commit 2fb527a017a4943e176a489ff103231b86464b59 Author: Anthony Green Date: Sat Mar 16 07:46:38 2013 -0400 Add Meta processor support commit 211a9ebf4d1a9801e15e103566aed2b8c42790be Merge: f308faf ee18766 Author: Anthony Green Date: Sat Mar 16 04:24:40 2013 -0700 Merge pull request #32 from alex/patch-1 Fix for a crasher due to misaligned stack on x86-32. commit 7e1b32649efd24814e86172e196f390566f9e970 Merge: f308faf ee18766 Author: Anthony Green Date: Sat Mar 16 04:24:40 2013 -0700 Merge pull request #32 from alex/patch-1 Fix for a crasher due to misaligned stack on x86-32. commit ee18766b169811426c14b011fbb46d81e344f926 Author: Alex Gaynor Date: Thu Mar 14 15:00:33 2013 -0700 Fix for a crasher due to misaligned stack on x86-32. Full information on reproduction (using Python's ctypes available here: http://bugs.python.org/issue17423) commit f308faf1eabaf8dc24966ab17fbf94368f46b9c7 Author: Anthony Green Date: Mon Feb 11 14:25:13 2013 -0500 Add moxie support. Release 3.0.12. commit 4ea22e54e3b143fe05c413f6dddd236af6bcbfb2 Author: Anthony Green Date: Sun Feb 10 08:48:38 2013 -0500 Update README commit 10e77227b6ae85f46f28590bfb09ca3608554358 Author: Anthony Green Date: Sun Feb 10 08:47:26 2013 -0500 mend commit a9521411a53d58f2bf88199242200ceb0d4dae3a Author: Anthony Green Date: Sat Feb 9 06:54:40 2013 -0500 sparc v8 and testsuite fixes commit 70b11b47eea93bf43627588d494d0b3b0d062481 Author: Anthony Green Date: Fri Feb 8 16:12:19 2013 -0500 Fix small struct passing on ppc commit 63ba1fa79f7c4ce42de848debe233aab31aecb51 Author: Anthony Green Date: Fri Feb 8 15:18:19 2013 -0500 Remove xfail for arm*-*-*. commit 24fbca4c1d57d4ea628c0a8ba643684daf54a37e Author: Anthony Green Date: Fri Feb 8 14:19:56 2013 -0500 Fix typo commit b0fa11cb0a94ce6baca058eab9b10e40475e71d6 Author: Anthony Green Date: Fri Feb 8 14:17:13 2013 -0500 More man page cleanup commit 8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7 Author: Anthony Green Date: Fri Feb 8 13:56:37 2013 -0500 Fix many.c testcase for ppc commit 7aab825cf198be85490d3cd80e778d415d85ad9b Author: Anthony Green Date: Fri Feb 8 13:26:21 2013 -0500 Add missing files to dist commit cb03ea8f4eb08024e44abe4392edc77b89fbfbad Author: Anthony Green Date: Fri Feb 8 12:25:18 2013 -0500 sparc v9 fixes for sun tools commit 35ee8d44f31dd3d3b88083c837dc351593e13cc2 Author: Anthony Green Date: Fri Feb 8 07:12:41 2013 -0500 Fix microblaze big-endian struct issue commit 9db7e1a958fc484ba149efe027008b9a170395fb Author: Anthony Green Date: Thu Feb 7 21:06:08 2013 -0500 Fix botched sparc patch. Update version. commit ce0138e61455f268af326e26908b9680ec2c4bea Author: Anthony Green Date: Thu Feb 7 18:04:01 2013 -0500 Update bug report address. rc2. commit fd07c9e40451e0ec1d0475cd54a83d45ccaea2c0 Author: Anthony Green Date: Thu Feb 7 18:00:36 2013 -0500 Add cache flushing routine for sun compiler on sparc solaris 2.8 commit ed6ae9501b2bab45daf93b4935eb0c977635b763 Author: Anthony Green Date: Thu Feb 7 16:43:36 2013 -0500 Add libtool-ldflags. Define toolexeclibdir for non-GCC builds. commit ffef2e046aaec853be356f0b8770a335185ea9cf Author: Anthony Green Date: Thu Feb 7 15:47:01 2013 -0500 x32 and libtool fixes commit 95eecebb2858dc6f1495a61072ff36d0a8127144 Author: Anthony Green Date: Thu Feb 7 15:32:46 2013 -0500 Remove a.out cruft from dist commit 176aa9d2e23d9cd57d6f250692d910b408f9a651 Author: Anthony Green Date: Thu Feb 7 15:29:22 2013 -0500 Fix GCC usage test and update README commit f3a4f3fdde89b04d66983a42a25d09161c5d4d54 Author: Anthony Green Date: Thu Feb 7 09:57:20 2013 -0500 Fixes for AIX xlc compiler. commit 522f8fef49848927482bc63c94afaea5b84e5ec1 Author: Anthony Green Date: Wed Feb 6 20:31:31 2013 -0500 Fix man page. Clean out junk. commit c4dfa259eb4e8e6f4c397868d7fee80aa0bb6a12 Author: Anthony Green Date: Wed Feb 6 17:43:24 2013 -0500 Bump soversion commit f62bd63fe6123cadedb8b2b2c72eb549c40fbce9 Author: Anthony Green Date: Wed Feb 6 17:38:32 2013 -0500 Release candidate 1 commit f7cd61e9e68a4a51147df04d75bfe5b91b9d9286 Author: Anthony Green Date: Wed Feb 6 17:38:04 2013 -0500 Fix pkgconfig install bits commit 6a790129427121f7db2d876e7218a3104e6d2741 Author: Anthony Green Date: Wed Feb 6 17:37:15 2013 -0500 Work around LLVM ABI problem on x86-64 commit 370112938e705128fd5dd4017fc1a1210bd0271a Merge: bada2e3 bcc0c28 Author: Anthony Green Date: Sun Jan 27 05:09:04 2013 -0800 Merge pull request #28 from jralls/master Reorder x86_64 checks commit bcc0c28001b6d427d5cd8037d2e3c892babc6b4c Author: John Ralls Date: Sat Jan 26 15:21:14 2013 -0800 Reorder x86_64 tests So that darwin and cygwin/mingw are tested before the generic check -- which allows them to actually be set. commit bada2e326d9a9acf3ae40cfa4f5d7a9ba97b2ea8 Author: Anthony Green Date: Mon Jan 21 08:02:07 2013 -0500 Update README commit 655bb8f3690feba8e840a5f1854b1d78ed08f692 Merge: 1035ffb 840f975 Author: Anthony Green Date: Mon Jan 21 08:01:24 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi commit 1035ffb2f468e1a1c401d58cff7e7abb69838e68 Merge: aeb8719 4086024 Author: Anthony Green Date: Mon Jan 21 07:55:53 2013 -0500 Update README commit 840f975866052fdd91b2c224d56e01ae5900b60d Merge: aeb8719 4086024 Author: Anthony Green Date: Mon Jan 21 07:55:53 2013 -0500 Merge branch 'master' of github.com:/atgreen/libffi commit aeb8719a34756969970603fca4568530d56708af Author: Anthony Green Date: Mon Jan 21 07:37:30 2013 -0500 New microblaze support commit 40860245a4fd91a1b88adc9171ec993c549e45d5 Author: Anthony Green Date: Mon Jan 21 07:37:30 2013 -0500 New microblaze support commit 20cae32b152b43679ae65a85db9a1c6bb8a143dd Author: Anthony Green Date: Mon Jan 21 07:07:38 2013 -0500 Xtensa support commit 9742f91782faef4a15941508a22c408fb7d1d227 Author: Anthony Green Date: Mon Jan 21 07:03:41 2013 -0500 Mention IBM XL compiler support on AIX. commit f03eab08248f122ce3b623a18df9e19fae1b6e98 Author: Anthony Green Date: Fri Jan 11 17:14:11 2013 -0500 Remove obsolete inline test functions commit 05fbe1faedc7b2580d5f14010d00e9e3cee73951 Author: Anthony Green Date: Fri Jan 11 16:54:40 2013 -0500 xlc compiler support commit 0b4986a7889ed1864674192228f1162c1b5770a8 Author: Anthony Green Date: Fri Jan 11 11:19:52 2013 -0500 [travis] install dejagnu with sudo commit 3c337eef51ab9a4993fc875bfa26289dd6a08881 Author: Anthony Green Date: Fri Jan 11 11:18:14 2013 -0500 [travis] install dejagnu commit 90720962ce1baf9fc35d1bde1738102bcd5bd5ed Author: Anthony Green Date: Fri Jan 11 10:57:30 2013 -0500 Add first travis config file commit bff052d9cd5be41ba9e47c76114054af487d3c30 Author: Anthony Green Date: Fri Jan 11 10:24:32 2013 -0500 32-bit x86 fix and more commit cd41aeab6176f839167955c016ecc19f65f75df3 Author: Anthony Green Date: Thu Jan 10 17:25:45 2013 -0500 Add compiler column to table commit 8bf987d4df7c4d21435b9211f6cc86abf5904b42 Author: Anthony Green Date: Thu Jan 10 17:24:51 2013 -0500 Fix for sunpro compiler on Solaris commit 3ee74fd6dc8ccd32b608bbff73526838fc34f70b Author: Anthony Green Date: Thu Jan 10 17:15:03 2013 -0500 Update documentation version. commit 13e2d7b92557a9511a0414df82bf2df3edc55cba Author: Anthony Green Date: Thu Jan 10 10:52:02 2013 -0500 Handle both 32 and 64-bit x86 builds regardless of target triple commit 5141543000fc86a3d49a907a2313713ee79e504d Author: Anthony Green Date: Thu Jan 10 07:35:53 2013 -0500 Don't run EH tests with non-GNU compiler commit 56ba8d86f47937a0afb81a2b9e77c9d235d9db45 Author: Anthony Green Date: Thu Jan 10 07:25:10 2013 -0500 Don't use warning checking macro with sun compiler commit 6a028caec1b2c7904feb4c4f9cb7e1125e1d1b60 Author: Anthony Green Date: Thu Jan 10 01:19:43 2013 -0500 Don't use GCCisms to define types when + building with the SUNPRO compiler. commit 2d9b3939751b3ef9739049509d353ade10b32a8f Author: Anthony Green Date: Wed Jan 9 21:14:54 2013 -0500 Fix for closures with sunpro compiler commit 8308984e479e3274a36e98e8272b5adbb6b774c2 Author: Anthony Green Date: Tue Jan 8 15:14:21 2013 -0500 Make sure we're running dejagnu tests with the right compiler. commit f26c7ca67147450db2fe25ea932944e6cf145d5c Author: Anthony Green Date: Tue Jan 8 14:47:05 2013 -0500 Make compiler options in dejagnu runs compiler specific commit 74c776e21907fc2e59257c021f23077f8b7966cb Author: Anthony Green Date: Tue Jan 8 12:25:54 2013 -0500 Switch x86 Solaris to X86 from X86_64 commit 8962c8c8d06803e310bac0ffc8e84ea15daeff3f Author: Anthony Green Date: Tue Jan 8 12:22:24 2013 -0500 Fix read-only eh_frame test commit 35ddb69c2b49746d940e919ca226ecc1be94f14a Author: Anthony Green Date: Tue Jan 8 07:53:37 2013 -0500 Only emit DWARF unwind info when building with GCC commit f7879bc3f3a8d0bbfcc38771732c160a58ba9cd8 Author: Anthony Green Date: Tue Jan 8 07:30:28 2013 -0500 Testsuite fix for Solaris vendor compiler commit 67cea90fc0897021466fd102671019d30db474cd Author: Anthony Green Date: Mon Jan 7 06:30:24 2013 -0500 mend commit 0de3277b18cf54be3b81d509b9be9b47d9bc1e82 Author: Thorsten Glaser Date: Mon Dec 3 00:02:31 2012 +0000 Testsuite fixes (was Re: [PATCH] Fix libffi on m68k-linux-gnu, completely) Dixi quod… >although I believe some 3.0.11 checks to be broken: And indeed, with a few minor changes on top of git master, I still get a full run of PASS plus one XPASS on amd64-linux! With the other patches (from this message’s parent) and these applied, I get a full PASS on m68k-linux as well. So, please git am these three diffs ☺ bye, //mirabilos -- FWIW, I'm quite impressed with mksh interactively. I thought it was much *much* more bare bones. But it turns out it beats the living hell out of ksh93 in that respect. I'd even consider it for my daily use if I hadn't wasted half my life on my zsh setup. :-) -- Frank Terbeck in #!/bin/mksh From 5cb15a3bad1f0fb360520dd48bfc938c821cdcca Mon Sep 17 00:00:00 2001 From: Thorsten Glaser Date: Sun, 2 Dec 2012 23:20:56 +0000 Subject: [PATCH 1/2] Fix tests writing to a closure retval via pointer casts As explained in all other tests that do the same cast to an ffi_arg pointer instead. PASS on amd64-linux (Xen domU) and m68k-linux (ARAnyM) Signed-off-by: Thorsten Glaser commit 8f4772f383abd71cfa141c8a70ba11c1aa4ebe2c Author: Anthony Green Date: Mon Jan 7 06:14:53 2013 -0500 m68k fixes for signed 8 and 16-bit calls. commit ea7f8440d58afbebb181e295ff564fdf3d6590a0 Author: Anthony Green Date: Fri Jan 4 09:09:32 2013 -0500 remove gcc-ism commit f06c0f10377ac04eeba5e632dbe5c62c629df4e6 Author: Anthony Green Date: Wed Jan 2 09:39:17 2013 -0500 Add missing ChangeLog entry and generated files. commit 1f8675d4c101d19d67ca0a55ff2ba973349558ad Merge: 335f419 f6b58d2 Author: Anthony Green Date: Wed Jan 2 06:34:38 2013 -0800 Merge pull request #26 from rofl0r/master fix build error on ppc when long double == double commit 335f419a86090cda9f215d149572f9481c3ad034 Merge: 53236d5 6d6f711 Author: Anthony Green Date: Wed Jan 2 06:30:03 2013 -0800 Merge pull request #23 from rurban/master cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined commit 53236d5061034cc0a7f4647fc1bd05ba1aeb3d2a Author: Anthony Green Date: Wed Jan 2 09:24:55 2013 -0500 Regenerate files commit 72222ca3fbe560e13c8dc89ca441b28b7cc74daf Author: Anthony Green Date: Wed Jan 2 09:06:38 2013 -0500 Update texinfo.tex commit 1e326c95431fc9896422fa36659f3e833852579c Author: Anthony Green Date: Wed Jan 2 09:05:02 2013 -0500 Update config.guess and config.sub commit cb6671f5b8a9596ff968c6b6c304f70adf71b368 Author: Anthony Green Date: Wed Jan 2 08:56:07 2013 -0500 Missing .gitignore changes for xcode support commit ebbe77966855395a2a47ed2c09a38f93eb0481cf Author: Anthony Green Date: Wed Jan 2 08:54:05 2013 -0500 missed x32 libtool patch. commit 4394096da0aca0dd422b479a043c18b4f05c5770 Author: Anthony Green Date: Wed Jan 2 08:51:35 2013 -0500 missed trampoline_table patch. Move to GCC. commit ed7a59c3ff7c84bd95c374a5aff21599f705e6dc Author: Anthony Green Date: Wed Jan 2 08:48:01 2013 -0500 Windows symbol export fix. Move to GCC. commit ccee09a4ff843b11c7d8b6819776f57d187305c7 Author: Anthony Green Date: Wed Jan 2 08:41:55 2013 -0500 +2012-03-21 Peter Rosin + + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] + (set_ld_library_path_env_vars): Add the library search dir to PATH + (and save PATH for later). + (restore_ld_library_path_env_vars): Restore PATH. commit 089dbce7cc0889eb26444d89ae062c73c69f26f0 Author: Anthony Green Date: Wed Jan 2 08:37:35 2013 -0500 med commit 980a334c42b4b0eff32e55929ec6727d1326b05d Author: Anthony Green Date: Wed Jan 2 07:36:42 2013 -0500 Test GCC update commit 8bad679ade5000e57cdc9cacde22e8b99840930f Author: Anthony Green Date: Wed Jan 2 08:28:35 2013 -0500 New stand-alone patch commit 981c32ee115e9f0d6546a74592875e138222a9d1 Author: Anthony Green Date: Wed Jan 2 07:34:03 2013 -0500 Merge with GCC. Eliminate quilt bits. commit 61a054929517fb80c437ba71c91f3e20cfff581a Author: Anthony Green Date: Wed Nov 28 06:07:41 2012 -0500 Refresh config.guess and config.sub commit f6b58d2bdc0a24ce94dedce59802f091979df265 Author: rofl0r Date: Thu Nov 22 16:26:21 2012 +0100 fix build on ppc when long double == double commit 69da33a0761aeac73f9e9646269da61c906d6020 Author: Anthony Green Date: Mon Nov 12 15:25:47 2012 -0500 Pull in config.sub for aarch64 support and more commit f680b598b7bdde325ac9349e8c35151c228bf2df Author: Anthony Green Date: Tue Nov 6 16:00:40 2012 -0500 Add missing aarch64 configury bits commit dfadfb19853c57c8623c436d0ef2bdafab24b433 Author: Anthony Green Date: Wed Oct 31 06:46:41 2012 -0400 Rebase for ppc64 fix commit e944b8c7eb1e2eeb9c0f3b9742b4d7f476860ce1 Author: Anthony Green Date: Tue Oct 30 14:06:09 2012 -0400 Add PaX work-around commit 9ccd51be1fdeb99f8b4f42f905166c2abbba8ac0 Merge: f342996 fa5d747 Author: Anthony Green Date: Tue Oct 30 13:37:37 2012 -0400 Fix commit conflicts commit f342996cb50eb23b868afcff5ac0cdbb6b505d63 Author: Anthony Green Date: Tue Oct 30 07:42:27 2012 -0400 Darwin12 fix commit 58e8b66f70cef2e3c9b0e5a707b45d634cbbf5d9 Author: Anthony Green Date: Tue Oct 30 07:07:19 2012 -0400 AArch64 port commit fa5d747905472571fd472c07d4726017624f66b3 Author: Anthony Green Date: Tue Oct 30 07:07:19 2012 -0400 AArch64 port commit 6993a6686f43f2313b18142c1e96189a27db2aa3 Author: Anthony Green Date: Tue Oct 30 06:59:32 2012 -0400 Fix autoconf macros commit 70084e70ddb13b29dd05c751b1904de206bbe790 Author: Anthony Green Date: Fri Oct 12 23:55:06 2012 -0400 Update Tile* port info commit 9c00a3f6742d61404b31268cc773e7130ff43331 Author: Anthony Green Date: Fri Oct 12 16:46:06 2012 -0400 TILE-Gx/TILEPro support commit 048d2f41c3a6664b4b64bf21e804686662da4160 Author: Anthony Green Date: Thu Oct 11 10:55:25 2012 -0400 Rebase commit 6d6f71108064f5069edd7bf771059d3b82640135 Author: Reini Urban Date: Sat Jul 7 12:42:00 2012 -0500 cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined otherwise only static libs are created. commit d330f19292da8f39a78a9e2b0ba08df8094e3bc5 Author: Nicolas Lelong Date: Sat May 5 09:37:02 2012 -0400 iOS build fixes. commit 09b23cfc1d6d15361eee18818851fd3cacb26559 Author: Anthony Green Date: Fri Apr 27 08:29:48 2012 -0400 Update README with Blackfin/uClinux support commit 213ed15c70e72d666154c08e2b41dae3f61f20d3 Author: Anthony Green Date: Fri Apr 27 01:34:15 2012 -0400 Add blackfin supprt from Alexandre Keunecke. commit ff3d76fd427382ce7d2b2ed54acdd0bce470ca4f Author: Anthony Green Date: Wed Apr 11 23:16:48 2012 -0400 3.0.11 commit 7e0a412c4fd9cbe77b467a9bf86f56aea62632c3 Author: Anthony Green Date: Wed Apr 11 22:47:44 2012 -0400 Update files to ship commit 39e6a5860416f7bad992149817e1da1ba7c460d4 Author: Zachary Waldowski Date: Wed Apr 11 22:39:46 2012 -0400 More mac/ios build improvements commit 853cc722a16f8d1254573ef3bb73c7b8f3d8a110 Author: Anthony Green Date: Tue Apr 10 06:33:33 2012 -0400 Fix typo for darwin targets commit 3f5023068cda07a3dd6dacbaa875a5b5fc96d4bb Author: Anthony Green Date: Fri Apr 6 20:34:51 2012 -0400 mend commit ebb8e8945681ce0af7a5c47a980287e8ece84b84 Author: Mike Lewis Date: Fri Apr 6 20:02:08 2012 -0400 Build iOS library with xcode commit a098b44f4c592c2192fcdef4fad6108eb3f4301c Author: Anthony Green Date: Fri Apr 6 17:04:35 2012 -0400 Reapply missing testsuite changes for arm commit 10d1e51393f08c14045db85843208f44f9f1e9ba Author: Anthony Green Date: Fri Apr 6 11:57:14 2012 -0400 Update to rc4. Upgrade autoconf version. commit 9bcc884276dc0a807b2605e510b11b1740dd9aa2 Author: Anthony Green Date: Fri Apr 6 11:53:07 2012 -0400 Fix Linux/x32 reference in README commit a044a56b1cd2a0924f5ec0d6b5a5089d14fcd1a1 Author: Anthony Green Date: Fri Apr 6 10:39:10 2012 -0400 Linux/x32 libtool fix commit 59bb61a36661b972e8443531d3b7bc736e131a4b Author: Anthony Green Date: Fri Apr 6 08:26:14 2012 -0400 Update libtool version, README, tests dists commit f2981454cbe25cf9411b710f46c5f5552003a123 Author: Anthony Green Date: Thu Apr 5 15:45:19 2012 -0400 Revert debug code changes commit 39dccddb606f6fdb8dcb177d416e884041da6e30 Author: Zachary Waldowski Date: Thu Apr 5 12:32:41 2012 -0400 Fix building with Clang for Darwin (OS X 10.6+ and iOS 4.0+) commit 3afaa9a34a81a305227ae8cf4f12b9d0484d055e Author: Peter Rosin Date: Tue Apr 3 07:40:31 2012 -0400 Fix return_uc.c test case on windows. commit 65f40c35a2873d8328359ec4512bd0736dbe32c7 Author: Anthony Green Date: Tue Apr 3 07:35:59 2012 -0400 Repair ppc build regression. commit 0a1ab12a8d15caa894116a82249551f23ef65612 Author: Peter Rosin Date: Fri Mar 30 08:14:08 2012 -0400 Various MSVC-related changes. commit e1539266e6c6dde3c99832323586f33f977d1dc0 Author: Anthony Green Date: Fri Mar 30 00:40:18 2012 -0400 ARM VFP fix for old toolchains commit 7c5e60b5f47d725036a72162f136272bc407e3a1 Author: Anthony Green Date: Thu Mar 29 08:48:22 2012 -0400 Rebase on fixed GCC sources commit e72ed5eeaa9cfb0fdc86f6b3422734177b659f96 Author: Anthony Green Date: Wed Mar 21 09:52:28 2012 -0400 Fix vararg float test commit bd78c9c3311244dd5f877c915b0dff91621dd253 Author: Anthony Green Date: Wed Mar 21 08:09:30 2012 -0400 More cygwin fixes commit 84d3253f86dad6b4f261231935675d35fd964b05 Author: Anthony Green Date: Mon Mar 19 23:07:35 2012 -0400 Rebase post GCC merge commit 964c5b93f80dcaacf73056b7d15a4d2b4b7a217c Author: Anthony Green Date: Sat Mar 3 14:46:20 2012 -0500 abi check fixes and Linux/x32 support commit 6c194233a5f6f1d274669afc5924a9e1f69d4876 Author: Anthony Green Date: Sat Mar 3 14:17:54 2012 -0500 Add -no-undefined for both 32- and 64-bit x86 windows-like hosts. commit 8360bf1cd0aba8db5582266da70467de7e89a57a Author: Anthony Green Date: Thu Feb 23 07:01:13 2012 -0500 Ensure that users don't include ffitarget.h directly commit d578b89619cf3d2baff027b203619dc307fc12e3 Author: Anthony Green Date: Wed Feb 15 00:18:18 2012 -0500 Fix ABI check regression commit dee20f8e45c486f5018f31e09bb362992aa498c3 Author: Anthony Green Date: Fri Feb 10 13:06:46 2012 -0500 Rebased from gcc commit 4130e1972d001143e5e9f3c6b65f2a6f9524169e Author: Anthony Green Date: Fri Feb 3 13:18:27 2012 -0600 Refresh autoconf-archive m4 scripts commit 1ff9c604bb214b5a305064af1049577ef783730a Author: Anthony Green Date: Wed Feb 1 16:34:30 2012 -0600 Rebase from GCC commit 211060eb8f714af0e935430efa6bb45e8e3ffc5d Author: Anthony Green Date: Mon Jan 23 14:24:01 2012 -0500 Alpha fix commit 78d9c638ba0de6edfbc603fd65d19c6562663248 Author: Anthony Green Date: Mon Jan 23 14:17:24 2012 -0500 mend commit afaf3381604bd81803d8a5f3bf4d462299f1aac3 Author: Anthony Green Date: Mon Jan 23 14:17:13 2012 -0500 mend commit 9e9c4aeb77de5608d602109f22100c1c0c79faad Author: Anthony Green Date: Mon Jan 23 14:11:23 2012 -0500 Add Amiga support commit 8efc0b1f4027d5a3cbf205e55d422d94e60f3226 Author: Anthony Green Date: Mon Jan 23 13:47:38 2012 -0500 Unlikely fixes commit 1df51398ae183dc208ba4599ee867278b04d13d3 Author: Anthony Green Date: Mon Jan 23 13:43:59 2012 -0500 mend commit cd2277cc796b96b149cd284ae85326529fe7fb9c Author: Anthony Green Date: Mon Jan 23 13:43:38 2012 -0500 mend commit 164e6fe04b189746c8bd5810c6e3e919770bb9d4 Author: Anthony Green Date: Mon Jan 23 12:41:06 2012 -0500 m68k fixes commit c365ee7577bef00cb3c2c0b5224147aea04138d8 Author: Anthony Green Date: Mon Jan 23 11:13:18 2012 -0500 Refresh commit f22c38bbd93bcc0c04bf26c3e414556b3177c385 Author: Anthony Green Date: Fri Nov 18 15:13:41 2011 -0500 Update variadic patch commit 03e9ee321a3c208f88d2432587ce40b2bb2430ba Author: Anthony Green Date: Fri Nov 18 15:13:00 2011 -0500 Fix cls_double_va.c and update docs commit 95f31151ec792809cfb80d385350f9f56d95aa25 Author: Anthony Green Date: Sat Nov 12 23:46:05 2011 -0500 Rerun automake commit 198ed1ef85cf18342627f8d44bc3f12c9975a49d Author: Anthony Green Date: Sat Nov 12 23:45:20 2011 -0500 Update version number commit 4f17e1f142e805b13959ba2594ee735eae439f4e Author: Anthony Green Date: Sat Nov 12 17:22:24 2011 -0500 Fix last patch commit ff9454da44859716a5bd4eaa344499288c79694f Author: Anthony Green Date: Sat Nov 12 17:18:51 2011 -0500 Add David Gilbert's variadic function call support commit ea14ae85e8f54ff046b7fb8a9cfe349475272044 Author: Anthony Green Date: Sat Nov 12 16:36:59 2011 -0500 clean up commit 52891f8a93f9b8de801cca4cf05639422dc9773e Author: Anthony Green Date: Sat Nov 12 16:35:55 2011 -0500 Add powerpc soft float support commit c8f1bde8e2566c5a87474b4d08aa934d6d28ee75 Author: Anthony Green Date: Sat Nov 12 16:21:02 2011 -0500 Remove junk file commit 6a6e7f862f3cc677e19131587caa619e7f9c7ffd Author: Anthony Green Date: Sat Nov 12 16:20:42 2011 -0500 Fix kfreebsd commit d52fbed05ccbdee9ed8b9c911cbb4f85b0ff0f2a Author: Anthony Green Date: Sat Nov 12 16:13:41 2011 -0500 Add missing ChangeLog entry commit 322052ce65c4fdac85bedc24726fd0e0094ba521 Author: Anthony Green Date: Sat Nov 12 16:11:49 2011 -0500 Fix arm wince alignment issue commit af18df2bc2f52df81e7b5c619bd86db8489dc873 Author: Anthony Green Date: Sat Nov 12 15:52:08 2011 -0500 Remove use of ppc string instructions commit 236c9391321f83ad40daf03f40c35c9ebc1da6b3 Author: Anthony Green Date: Sat Nov 12 07:37:40 2011 -0500 Fix darwin11 build problem commit c411f140f305ebb00d33c92b7cb2742bcd241b6a Author: Anthony Green Date: Sat Nov 12 07:32:36 2011 -0500 Fix ax_enable_builddir macro on BSD systems commit 3d56106b07735abef6ae9f032e94f560a0ed2f30 Author: Anthony Green Date: Sat Nov 12 07:20:24 2011 -0500 Rebase commit 8c01954c50bf8ef2e00a3db166060a1b8f83a20d Author: Anthony Green Date: Tue Sep 6 14:26:32 2011 -0400 Build assembly files with debug info commit fed646a2078969f4ce89c29107f1e72e03f4a977 Author: Anthony Green Date: Tue Sep 6 09:50:20 2011 -0400 Regenerate configury with missing m4 macros commit d76441cf71216f8f1e62e7ec852a7f4e21371ec8 Author: Anthony Green Date: Wed Aug 24 10:14:23 2011 -0400 Update list of supported OpenBSD systems commit ee6696fdf4768ba6dd037fb6dd99435afa13816e Author: Anthony Green Date: Tue Aug 23 12:30:29 2011 -0400 3.0.11-rc1. soname bump. commit c6265c36a91eab8175d0e72db84d8225418f2379 Author: Anthony Green Date: Tue Aug 23 10:31:33 2011 -0400 Version 3.0.10 commit cc5e41bf32d18a14dbdd653d52eacdbdc934c392 Author: Anthony Green Date: Mon Aug 22 16:34:24 2011 -0400 Fix use of autoconf macros commit 049d8386ff52399e69a530b55b9feedc8a2589d2 Author: Anthony Green Date: Mon Aug 22 14:50:10 2011 -0400 Many new patches commit 3b7efa4e74f0dcebf70b447391987aedd3473306 Author: Anthony Green Date: Mon Aug 15 13:25:13 2011 -0400 Revert remove-debug-code patch temporarily (for ARM Fedora release) commit d992ac54a2a9e7e064ffebcb91e05e7cb86185c7 Author: Anthony Green Date: Fri Jul 29 17:32:53 2011 -0400 Refresh from GCC commit 2d3fb36420e09304220ee6c0652bae5eccdb965d Author: Anthony Green Date: Wed Mar 30 16:54:42 2011 -0400 Fix darwin EH commit 30ff28e1d8cd9ed5319f1fbe9c7cccacc8161fb3 Author: Anthony Green Date: Mon Feb 28 15:36:23 2011 -0500 Fix permissions commit 09f8f310f4f53a24289682d3d28f4399d7bafc3b Author: Anthony Green Date: Mon Feb 28 15:36:07 2011 -0500 More AIX fixes. rc9. commit 53d7b165642c220aa5166ba350b490802f359b54 Merge: 18dd85d 3000dc2 Author: Anthony Green Date: Mon Feb 28 15:23:31 2011 -0500 Merge branch 'master' of https://github.com/landonf/libffi-ios commit 18dd85d6cb9f3f3eea2a3b70eb4e150045905c55 Author: Anthony Green Date: Fri Feb 25 16:23:04 2011 -0500 rc8. fix last patch. commit 74ee6ea8b42e60d44a3ae8938b1e42a38c1e66b4 Author: Anthony Green Date: Fri Feb 25 15:52:14 2011 -0500 rc7. More AIX fixes. commit 2541679dbd3db0014890f42192dbf8008ab923fa Author: Anthony Green Date: Fri Feb 25 15:09:13 2011 -0500 Fix ppc32 bug commit cbb062cc35c518004f1ab45c847f8ec4f66069ad Author: Anthony Green Date: Thu Feb 17 20:39:21 2011 -0500 Another non-GCC configury fix commit 8cf8878425e9971866fa6b27a3e4914729ad3960 Author: Anthony Green Date: Tue Feb 15 15:19:49 2011 -0500 Fix ax_cc_maxopt.m4 commit 24b72070c0937f9000744c77a636f07e04786b6a Author: Anthony Green Date: Mon Feb 14 15:30:57 2011 -0500 Fix warning and msvcc patches commit d72c49e556a8c516e97f6722d1be2f1209c21207 Author: Anthony Green Date: Sun Feb 13 11:41:05 2011 -0500 Add missing msvcc.sh commit 3000dc237f6017a7445d8404097a4f46b73fdd29 Merge: 55e4a5a 1fbf9dc Author: Landon Fuller Date: Sun Feb 13 08:55:53 2011 -0500 Merge remote branch 'upstream/master' commit 1fbf9dc44feea564e84ad7406d17c5d5906ce0e0 Author: Anthony Green Date: Sun Feb 13 08:06:39 2011 -0500 Fix bad_abi test. rc5. commit 90af15ef5c1614b76370c4d13954586fabf9e8e3 Author: Anthony Green Date: Sat Feb 12 12:29:36 2011 -0500 iOS fixes commit 55e4a5aa1568558a04aa40f16fc022e459af53e3 Author: Landon Fuller Date: Sat Feb 12 12:13:46 2011 -0500 Add support for building a full armv6/armv7/i386 universal iOS library commit a0c80f279b8733d001cb5e5c5a3289ecb7a6e56a Author: Landon Fuller Date: Sat Feb 12 11:43:49 2011 -0500 Update my e-mail address. commit 8195e0e11df7a53fa474caa9375f73ca1136ed66 Author: Landon Fuller Date: Sat Feb 12 11:27:00 2011 -0500 Fix symbol prefixes on Darwin. commit 56b3f8cef0f28cefaa0f40fe0cf7c524adef131d Author: Landon Fuller Date: Sat Feb 12 11:14:54 2011 -0500 Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer. This re-integrates commit da2773e02ab26cc11a7f. commit 28a00f61ff3f64c4eb2269ce2aea3d493274469e Author: Landon Fuller Date: Sat Feb 12 11:01:48 2011 -0500 Apple assembler support; fixed most gas/ELF-isms. commit 7f2ea33a80bfced5e48ed7292f3b8f057d54ff8f Author: Landon Fuller Date: Sat Feb 12 10:39:18 2011 -0500 Replace RETLDM macro. The macro is incompatible with Apple's assembler; switch to a simple inline version. commit 92ff23e77fa586455b427b71f49e1d9502470e6e Author: Landon Fuller Date: Sat Feb 12 10:24:49 2011 -0500 Switch to the current iOS 4.2 SDK. commit 58fb8ca2dfb89ad70284bb9678d3d4dbb658c8a7 Merge: cc3fbd9 71c792f Author: Landon Fuller Date: Sat Feb 12 10:23:19 2011 -0500 Merge remote branch 'upstream/master' commit cc3fbd975ce9366d4c40a6ff6c108f664867bd7c Merge: e449a43 f6ab3ed Author: Landon Fuller Date: Sat Feb 12 10:21:02 2011 -0500 Merge branch 'master' of github.com:landonf/libffi-ios commit e449a43bbe12f8119399928db1ae26adc71dde14 Author: Landon Fuller Date: Sat Feb 12 10:20:42 2011 -0500 Allow specification of the minimum supported iOS version. commit 71c792f51bcf3e2f334e5ea1fb1a8b667cb3aedb Author: Anthony Green Date: Sat Feb 12 09:33:11 2011 -0500 rc4 commit 7c7c9f327299331022f6000603a35f2310dfe308 Author: Anthony Green Date: Sat Feb 12 09:29:29 2011 -0500 ungccify parts of the build commit ed62e48b95a0fa60b685f647cb73c9e190eec35c Author: Anthony Green Date: Fri Feb 11 12:23:58 2011 -0500 Fix permissions commit 17d9e9e68ddb1b915a0b9751713033861b598575 Author: Anthony Green Date: Fri Feb 11 12:23:20 2011 -0500 Use newer autotools. Only build debug.c when --enable-debug. commit 6972a4ffda75761eaab7dfbe0fb1516b255e8e0c Author: Anthony Green Date: Fri Feb 11 07:32:51 2011 -0500 Fix xlc build on AIX commit 1833aa0fb9831eb0725b63e35886c0f6d35df480 Author: Anthony Green Date: Fri Feb 11 07:11:04 2011 -0500 sparc ABI test fix. commit f1fb139b4e283fffdcf205a903943d5e9d2bb2a2 Author: Anthony Green Date: Wed Feb 9 18:30:02 2011 -0500 Fix tests commit 5cb470331d181c84d5d621e88868327a324a5898 Author: Anthony Green Date: Wed Feb 9 15:23:06 2011 -0500 Fix permissions commit 269deef6dbbb426695919d3398357fada3bb288c Author: Anthony Green Date: Wed Feb 9 15:22:23 2011 -0500 rc3 commit 42695e72504f647444b8e8e9b90bd24f1e3220e1 Author: Anthony Green Date: Wed Feb 9 15:12:35 2011 -0500 Fix IRIX support commit a6e56b97f62a3feeb3301c24a2e4cae55e546021 Author: Anthony Green Date: Wed Feb 9 15:00:42 2011 -0500 Add powerpc64-*-darwin* support commit 747d6c32d4abb07c10c3a1f93579c3929aaa2487 Author: Anthony Green Date: Wed Feb 9 14:56:23 2011 -0500 Add Interix support commit eab6e41cde382aa07de6c011d514a14c0d62eb47 Author: Anthony Green Date: Wed Feb 9 10:15:02 2011 -0500 Remove README.markdown form libffi-ios commit 69dbe845f4ee3e6ce8999f17a1e4f2179ef7da89 Author: Anthony Green Date: Wed Feb 9 07:38:43 2011 -0500 Fix xfails commit f498318c07b95137fe259d86bdbe15347588b84a Author: Anthony Green Date: Wed Feb 9 06:26:46 2011 -0500 Update README for iOS again commit 630b9c0ac43c7edcbfd892e23c09fb26724f4ac0 Author: Anthony Green Date: Wed Feb 9 06:24:23 2011 -0500 Update to rc2 commit 0cad4386fa4c9ea5f8ca88b16247db4e5c8fea90 Author: Anthony Green Date: Wed Feb 9 06:11:46 2011 -0500 Add ChangeLog entry. Fix copyright headers. commit 09cb76f2645bd2c151846e9249d8ea707ba01e8c Author: Anthony Green Date: Tue Feb 8 20:39:51 2011 -0500 Add missing change commit 2e3a48ccdd54340983c46a29a0b41985e3e789ac Author: Anthony Green Date: Tue Feb 8 20:37:26 2011 -0500 Fix make dist commit 5e4814d9928e236a2a4afe84d6e1d4fdaa473206 Author: Anthony Green Date: Tue Feb 8 19:46:28 2011 -0500 fix permissions commit 5c0cc6f1536aa1738795a97303810a823c7fa2cb Author: Anthony Green Date: Tue Feb 8 19:45:59 2011 -0500 3.0.10rc1 commit 857fe3de46d2286afa2fe772920ecf4aefa1688f Author: Anthony Green Date: Tue Feb 8 19:39:20 2011 -0500 Clean ups commit e2214f8adb5577c247452e2cc9f4cbe304d7ca9f Author: Anthony Green Date: Tue Feb 8 19:22:56 2011 -0500 Update README commit 1106229a5721a659da5c231ec0e8211119615394 Merge: bc9d0be f6ab3ed Author: Anthony Green Date: Tue Feb 8 19:20:09 2011 -0500 Add iOS support commit bc9d0be2958ce475757f34dd2c878948aa77a39f Author: Anthony Green Date: Tue Feb 8 17:04:26 2011 -0500 3.0.10rc0 changes commit 3b836249feae6d08d3e6887486e4b9961ddafa09 Author: Anthony Green Date: Tue Feb 8 14:28:59 2011 -0500 Rebase from GCC commit a26e3940619faeba6de54824c9540c90b1aab513 Author: Anthony Green Date: Tue Feb 8 13:56:12 2011 -0500 copyright updates patch commit b8099539f00e224107594101e9760b6dc081a056 Author: Anthony Green Date: Tue Feb 8 13:50:43 2011 -0500 Fix msvcc.sh botch commit dc411e8f99113a34656bfd2d3ae51259972488cc Author: Anthony Green Date: Tue Feb 8 10:49:29 2011 -0500 Fix HP-UX build commit 404585d1348e30ac58203bbd876d9131e5aed874 Author: Anthony Green Date: Tue Feb 8 10:44:36 2011 -0500 Fix sparc v8 aggregate type returns for sun's compiler commit 19ce713188e193e4522740d24c20170411883d2d Author: Anthony Green Date: Tue Feb 8 10:34:23 2011 -0500 grammar fix commit 89284fe55f1a8ad3bddbea796ee00d0e3ba411ce Author: Anthony Green Date: Tue Feb 8 10:19:19 2011 -0500 Fix AIX build with IBM XLC commit ba022c338af97cb18d9f8ed5a607fd483a61c09c Author: Anthony Green Date: Tue Feb 8 10:12:48 2011 -0500 fix win64-underscore patch commit 097e5f3924ee92a3ba6cd72f787da8a3eb14fea3 Author: Anthony Green Date: Tue Feb 8 10:11:00 2011 -0500 x86 pcrel test part 2 commit ed2c518d960b91d444be74e5a55779a9c4602f3b Author: Anthony Green Date: Tue Feb 8 10:10:07 2011 -0500 x86 pcrel test commit 0e5843995f46900ef212531281e08b224464f413 Author: Anthony Green Date: Tue Feb 8 07:52:40 2011 -0500 Refresh from GCC commit 5b9cd52784339a42e417174a55e310e214d435f9 Author: Anthony Green Date: Mon Nov 22 15:19:57 2010 -0500 win64-underscore patch commit 2db72615b50eb5c0f29725c02c740a2f0d7fc7d9 Author: Anthony Green Date: Sun Nov 21 10:50:56 2010 -0500 Rebase commit f6ab3edc23dc8fc7c47a31c896044150c23f04b5 Author: Landon Fuller Date: Wed Oct 27 19:34:51 2010 -0400 Include the license header in the generated output. commit cef619462887fa0f360e3ee702d1e04f112b5b38 Author: Landon Fuller Date: Wed Oct 27 13:59:30 2010 -0400 Add missing copyright/license header. commit 53f387b203413c9aa6e31f49dbb70d37d816330b Author: Landon Fuller Date: Sun Sep 19 19:57:17 2010 -0700 Minor README fix. commit 4fbcb5b5fbce11f4b168060e00639db33c85b75b Author: Landon Fuller Date: Sun Sep 19 19:50:37 2010 -0700 Minor README fix. commit 8e7652ef6acab5db7a29f786686a54f05cdbdc7d Author: Landon Fuller Date: Sun Sep 19 19:49:39 2010 -0700 Add a libffi-ios-specific github README. commit 83038cf24aa1a92b62b91ffee1dcc25d79243484 Author: Landon Fuller Date: Sun Sep 19 14:36:45 2010 -0700 Implement FFI_EXEC_TRAMPOLINE_TABLE allocator for iOS/ARM. This provides working closure support on iOS/ARM devices where PROT_WRITE|PROT_EXEC is not permitted. The code passes basic smoke tests, but requires further review. commit b00ff3e98fdde622cef617030e14d5356dff988f Author: Landon Fuller Date: Sun Sep 19 14:22:26 2010 -0700 Rename the generated symbol commit da2773e02ab26cc11a7fe87e985599f35cdf0649 Author: Landon Fuller Date: Sun Sep 19 14:21:37 2010 -0700 Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer. commit 01d71b7bed41844f80cb9feef20dcc5ece5ba2d0 Author: Landon Fuller Date: Sun Sep 19 14:21:14 2010 -0700 Regenerated the autoconf script commit 19afda0069c42e51c81dca7b10a5cf884b4cdce0 Author: Landon Fuller Date: Sun Sep 19 14:20:52 2010 -0700 Enable AC_SUBST for FFI_EXEC_TRAMPOLINE_TABLE commit 9e1196444e78aef20028c18891f44ebe39a815fd Author: Landon Fuller Date: Sun Sep 19 10:43:06 2010 -0700 Add a hard-coded FFI_EXEC_TRAMPOLINE_TABLE arm implementation. This implements support for re-mapping a shared table of executable trampolines directly in front of a writable configuration page, working around PROT_WRITE restrictions for sandboxed applications on Apple's iOS. This implementation is for testing purposes; a proper allocator is still necessary, and ARM-specific code needs to be moved out of src/closures.c. commit f38364b399184e682fc3e785084bd497827bc5af Author: Landon Fuller Date: Sun Sep 19 10:42:36 2010 -0700 Fix symbol prefix for ffi_closure_SYSV_inner on Darwin. commit 36849e7716b77aa25e4175d1f4be1b93dbf47aac Author: Landon Fuller Date: Sun Sep 19 09:35:04 2010 -0700 Whitespace/comment fixes. commit b764162526854686e579a48b6ac5981f4eb886a3 Author: Landon Fuller Date: Sun Sep 19 09:04:34 2010 -0700 Fix the script name (build-iphone.sh -> build-ios.sh) commit a3d9aa85013341451ea97766485b7a11852d32b2 Author: Landon Fuller Date: Sun Sep 19 09:03:52 2010 -0700 Update the autogenerated autoconf/automake files. commit c71480eaf839f26bbdfcd8965f65ac4d8defddc0 Author: Landon Fuller Date: Sun Sep 19 09:02:05 2010 -0700 Update automake/autoconf to conditionally build src/arm/trampoline.S if FFI_EXEC_TRAMPOLINE_TABLE is enabled. commit 9af9291b73bc5e27ecd949bec8157f20426d65b8 Author: Landon Fuller Date: Sun Sep 19 08:52:33 2010 -0700 Add the trampoline table generated by gentramp.sh commit 68ce0c383ece84f69945d1c8c3fed03f7f9cb5d6 Author: Landon Fuller Date: Sun Sep 19 08:38:19 2010 -0700 Add a shell script that generates the ARM trampoline page. This generates a page of 340 trampolines, aligned within one page. The trampolines use pc-relative addressing to reference config data (context, jump address) from a page placed directly prior to the trampoline page. This can be used on systems -- such as iOS -- that do not support writable, executable memory by remapping the executable page containing the trampolines directly above a newly allocated writable config page. commit 75af086be8830a8eafe9b1ebda199d788bcb0c62 Author: Landon Fuller Date: Sat Sep 18 18:12:19 2010 -0700 Update autoconf files commit 1ac92cca9b02ef8d6a769f0de1adccd5c9630355 Author: Landon Fuller Date: Sat Sep 18 18:08:14 2010 -0700 Add autoconf check for W^X platforms that require a trampoline table. This adds the FFI_EXEC_TRAMPOLINE_TABLE. The flag is enabled for arm-apple-darwin, where PROT_EXEC on writable (or formerly writable) pages is not permitted for sandboxed binaries. commit be72fbab29b7190c702d8e1ac3d149855e95879d Author: Landon Fuller Date: Sat Sep 18 18:02:25 2010 -0700 Use the correct host triple for arm/darwin commit 70150bdf4509269965c72f2032bf74f285767afe Author: Landon Fuller Date: Sat Sep 18 16:38:03 2010 -0700 Add missing UNWIND entry; disables .pad on non-EABI targets. commit 6b452bafaec498df975ba8ac4c99de174e5f74f7 Author: Landon Fuller Date: Sat Sep 18 16:21:32 2010 -0700 Apple assembler support; fixed most gas/ELF-isms. commit 8ddac835b6f8b54ede764d0ea977dee4c82e2d67 Author: Landon Fuller Date: Sat Sep 18 15:38:06 2010 -0700 Fix placement of the __APPLE__ macro. commit 69043d02936bb0579ac59b4ee1ed8dec38c38db7 Author: Landon Fuller Date: Sat Sep 18 15:32:08 2010 -0700 Work-around libffi's FP ABI detection. On iOS, we must use the AAPCS floating point return value calling conventions. libffi's ARM implementation will only use these conventions if __SOFTFP__ is defined, which is not the case when GCC's -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this we manually define __SOFTFP__ for Apple platforms in the ARM-specific sysv.S. See also: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf commit a82e6c354ea805114642a6e440abd0832cb1d23f Author: Landon Fuller Date: Sat Sep 18 14:44:24 2010 -0700 Add a stub iOS build script to drive autoconf commit 84e8de6e9fc19388f6f1102c013b7d0d52940ecc Author: Anthony Green Date: Fri Aug 6 01:35:12 2010 -0400 Restore execute permissions commit 3aeecc9eb1a6feba6549849cdd335c926415a4fc Author: Anthony Green Date: Thu Aug 5 15:19:00 2010 -0400 Fix win64-struct-args patch commit 00d0b59cd13f89ab8b44bd894eb7f0a131fcb472 Author: Anthony Green Date: Thu Aug 5 14:56:53 2010 -0400 Fix debug build for windows commit bda487e87064f27965155459a62dc52a744778d0 Author: Anthony Green Date: Thu Aug 5 09:02:41 2010 -0400 Don't use -safeseh with ml64 commit c1d28ba8d5029795af313ffeb81c97efc6d4c847 Author: Anthony Green Date: Thu Aug 5 08:48:16 2010 -0400 stdcall-x86-closure-fix commit 5feacad4a56c85b3f23a267a30b2cf424cd59548 Author: Anthony Green Date: Thu Aug 5 08:30:04 2010 -0400 define generic symbols carefully commit 10ea848900bc3018ac213cef52b44cacbe5cbebc Author: Anthony Green Date: Thu Aug 5 08:24:27 2010 -0400 don't copy win64 struct args commit d14178be4c49c3ada44a9fe9efe11d444372ddab Author: Anthony Green Date: Fri Jul 23 09:14:00 2010 -0400 FFI_LAST_ABI fix commit 3f5b1375ab1e2b8e3d593e21b27097a4a50f9b83 Author: Anthony Green Date: Mon Jul 12 14:39:18 2010 -0400 rebase commit eaf444eabc4c78703c0f98ac0197b1619c1b1bef Author: Anthony Green Date: Sat Jul 10 08:59:09 2010 -0400 Fix selinux test commit 630974152247f100ece4d44f10c3721bb4599fbf Author: Anthony Green Date: Wed May 5 20:14:56 2010 -0400 Micharl Kohler's spelling fixes commit 9dc9a293f3d4589fcaf02dd4288c8cebaefa508e Author: Anthony Green Date: Tue Apr 13 10:33:52 2010 -0400 Rebase to latest GCC sources commit f2c2a4fce9b3eca9f39b4f3545118bc256da4a73 Author: Anthony Green Date: Tue Apr 13 10:19:28 2010 -0400 Remove warnings and add OS/2 support commit c0b69e57d529e33d18b658cc5572a21e3663247c Author: Anthony Green Date: Tue Mar 30 08:30:22 2010 -0400 Dan Witte's windows build fixes. commit 59a259f4d348f593b45f452309f4d020a28051c4 Author: Anthony Green Date: Mon Mar 15 05:57:51 2010 -0400 Remove junk file commit 3de1eb36d37a66829e606421939874d0d60d816d Author: Anthony Green Date: Mon Mar 15 05:57:24 2010 -0400 fix-comments patch commit c3813b6d7f8a777700f4c5862190c0db148d4de8 Author: Anthony Green Date: Tue Jan 26 16:48:56 2010 -0500 Rebuild Makefiles with automake 1.11.1 for CVE-2009-4029. commit 8d27f68baa365bf883b6053c5f6bc819646d5434 Author: Anthony Green Date: Fri Jan 15 11:35:37 2010 -0500 Mention recent changes in README commit ff3cd68b8cf2d9a28cad7aa9beff46236eacec8c Author: Anthony Green Date: Fri Jan 15 11:27:24 2010 -0500 Add msvc.sh wrapper commit cadeba6cb53414a1253582f1719c286665de7b6c Author: Anthony Green Date: Fri Jan 15 10:46:51 2010 -0500 Microsoft Visual C port commit 0739e7dc00db766eb64f502ec4137b817638c9a1 Author: Anthony Green Date: Fri Jan 15 09:48:33 2010 -0500 Add x86 Sun Studio compiler support commit edfdfd2e85b8d01d2455934f1d7f4d7eb2f3cf1c Author: Anthony Green Date: Wed Jan 13 02:56:19 2010 -0500 Add closure example doc commit 7b7a42f221cf171e8d09df34cac6dc1fd8458cc3 Author: Anthony Green Date: Tue Jan 12 09:14:14 2010 -0500 Rebase from GCC commit 4b18d1f73dc7733137869e4ab5725cb90c1c8fde Author: Anthony Green Date: Fri Jan 1 10:24:27 2010 -0500 Add x86-64 MingW to README commit c3042afaf3f84abbbe9c91bf9bc9896b0d9eb003 Author: Anthony Green Date: Fri Jan 1 08:08:02 2010 -0500 Reset quilt patches post 3.0.9 merge with GCC commit b0304e9679bdfec6ac45a57b5c96542697249418 Author: Anthony Green Date: Thu Dec 31 11:32:40 2009 -0500 Update version commit 2e7e03d014d9c9bf40e97ce75cba089ad052fa6b Author: Anthony Green Date: Thu Dec 31 07:43:22 2009 -0500 Final updates before 3.0.9 commit aea706c52825c8eee677ffa7fdbdd3aed1725492 Author: Anthony Green Date: Tue Dec 29 10:09:31 2009 -0500 really 3.0.9rc12 commit 0cfe60e9d13f132b88995cfee41f2156344f6fa2 Author: Anthony Green Date: Tue Dec 29 10:06:04 2009 -0500 3.0.9rc12 commit 14e2e92e8645804b6940b3e96c98e9f7f384a6b2 Author: Anthony Green Date: Sun Dec 27 21:03:33 2009 -0500 3.0.9rc11 commit 884402787bf8eaf7ec207085037cf8ace2f660ec Author: Anthony Green Date: Sat Dec 26 12:57:23 2009 -0500 HPUX support and avr32 test fixes. commit 01c78756aff22efb1f122f8e93e068d7bf2185c7 Author: Anthony Green Date: Sat Dec 26 10:05:18 2009 -0500 3.0.9rc9 commit 70868464651320268d79c6894db5a50fdc11032a Author: Anthony Green Date: Sat Dec 26 09:58:03 2009 -0500 Remove xfails for mips and arm commit 838d4ad920ec85cf5ca3b511221d67f6d9a99024 Author: Anthony Green Date: Sat Dec 26 09:57:27 2009 -0500 Remove a bunch of xfails. commit 7e37eaaf772f48906e69618c773b0a36c3927de9 Author: Anthony Green Date: Sat Dec 26 07:46:50 2009 -0500 Fix huge_struct for solaris commit 07cc7a37194bc34064ebed7f2724333a798411c8 Author: Anthony Green Date: Sat Dec 26 07:23:04 2009 -0500 3.0.9rc8 commit 2b9be16ffabc81326128bc1bbdddff8ddc5d13d3 Author: Anthony Green Date: Sat Dec 26 07:04:45 2009 -0500 3.0.9rc8 commit 9458d88f676e9a21ab8993a54e16754b11687419 Author: Anthony Green Date: Sat Dec 26 07:02:27 2009 -0500 Rebase from GCC commit 6a3412417593f068a04dc6163f4269cb295ad5ca Author: Anthony Green Date: Sat Dec 26 06:51:33 2009 -0500 Add Andreas Schwab's powerpc fix commit 39c8792ece1043f41f4c395a2ce71f4cf0ff4674 Author: Anthony Green Date: Fri Dec 25 21:52:28 2009 -0500 3.0.9rc7 commit 1d04af52e3e24db69f742064694c22f8df5cc70e Author: Anthony Green Date: Fri Dec 25 09:50:36 2009 -0500 Updated some mips XFAILs commit 26e9509c9b7929bc4fcf697071699051a652b1fd Author: Anthony Green Date: Fri Dec 25 02:19:23 2009 -0500 Clean up ChangeLog.libffi for older patches. commit 9c157d3215e4393777f83eb6fa801df6528f40d7 Author: Anthony Green Date: Fri Dec 25 02:15:40 2009 -0500 Clean up undefine_AC_ARG_VAR_PRECIOUS patch. commit d22de05b0bfc480766bc1240615ce2830eee71b8 Author: Anthony Green Date: Fri Dec 25 02:04:23 2009 -0500 Fix patches commit 1fe3dc7c20dc4dbd8fed0d19c8618027d44ed971 Author: Anthony Green Date: Fri Dec 25 01:39:00 2009 -0500 Add windows support patch. commit f7c0bc613a88f7dbc2d18b345c10fa438833c170 Author: Anthony Green Date: Fri Dec 25 01:22:11 2009 -0500 3.0.9rc6 commit c7fa2da8260258c11ab1dc7ac06fb611a2c1b50f Author: Anthony Green Date: Thu Dec 24 07:22:44 2009 -0500 3.0.9rc6 commit da11bece0fde66fc0268db3a01207dda857e25d2 Author: Anthony Green Date: Thu Dec 24 05:34:46 2009 -0500 Release 3.0.9rc5 commit e3399b11edeab546b066bfc18574f3edb905d0dc Author: Anthony Green Date: Thu Dec 24 01:09:32 2009 -0500 Update README commit 115ab36fceee69740a01ce49bc27e1908cc237b1 Author: Anthony Green Date: Thu Dec 24 00:22:00 2009 -0500 Update missing changes for 3.0.9r4. commit f8c7a245bf5a80bd7e730ec03fcad17c8dcfcb07 Author: Anthony Green Date: Wed Dec 23 23:46:22 2009 -0500 Switch to quilt. Rebase to latest GCC. commit ce806772f02387b9a74f6496a263a368bccd5d59 Merge: cd98813 dcc1f6b Author: Anthony Green Date: Mon Oct 5 00:41:35 2009 -0400 Merge branch 'master' of git@github.com:atgreen/libffi commit dcc1f6b4f1ffd2713bf68b791a13f85d455c8b1b Author: Anthony Green Date: Mon Oct 5 00:29:33 2009 -0400 More clean up. commit 2829f5941a223b9d851d8ab6318318e6197d7e01 Author: Anthony Green Date: Mon Oct 5 00:28:03 2009 -0400 Clean up commit cd98813de517ea64041637e3e78d27a001d6d3b4 Author: Anthony Green Date: Mon Oct 5 00:25:29 2009 -0400 From Jens Rehsack. Fix for 64-bit AIX. commit e4a91de766acc47f6c50f13cc11719a65e23ecba Author: Anthony Green Date: Mon Oct 5 00:16:17 2009 -0400 From Abdulaziz Ghuloum. Adds special case for Snow Leopard. commit 3425a763bcdaadb8b430226f427ec833afdcc96a Author: Anthony Green Date: Sun Oct 4 23:57:29 2009 -0400 Fix detection of free/openbsd. From Alexis Ballier. commit 2340e7a777902de61499d47823ad8d5e0eeb6203 Author: Anthony Green Date: Sun Oct 4 23:53:17 2009 -0400 AVR support commit 5cbe2058c128e848446ae79fe15ee54260a90559 Author: Anthony Green Date: Sun Oct 4 23:53:11 2009 -0400 Initial stand-alone patch. commit c6dddbd02bad9654ed58cdb0feb360934d105dec Author: Anthony Green Date: Sun Oct 4 08:11:33 2009 -0400 Initial commit commit 5ffc0c37486fb1538bccc0ca7acc807d4f1af932 Author: Anthony Green Date: Sun Oct 4 07:58:22 2009 -0400 Update version to 3.0.9rc1. Add more useful things to .gitignore. commit bd29f83ee9f6fa6b65adee9d3f57834f364d9887 Author: Anthony Green Date: Tue Sep 29 12:07:26 2009 -0400 Add .gitignore commit 9474f853f83e3f0167c1b306177321bfcc93e56d Author: Anthony Green Date: Tue Sep 29 11:13:02 2009 -0400 Remove old CVSROOT files. commit 0c25275ec24bfe2c2c25a000465f0950ef9dd51b Author: twall Date: Wed Aug 19 12:57:34 2009 +0000 Apply Dave Korn's cygwin/GCC changes commit 39228c27ed3f677a95b46380a8d31602b5777e1a Author: aph Date: Tue Jun 16 18:00:47 2009 +0000 2009-06-16 Wim Lewis * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are supposed to be callee-saved. * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of return buffer for odd-size structs. commit 5e93cc704d127c2c8ae7f5d2cef621145d43e777 Author: aph Date: Tue Jun 16 17:41:47 2009 +0000 2009-06-16 Andreas Tobler PR libffi/40444 * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add allow_stack_execute for Darwin. commit b509af8959dc371b92392c623522ea6f4946a71d Author: aph Date: Tue Jun 16 16:17:52 2009 +0000 2009-06-16 Andrew Haley * configure.ac (TARGETDIR): Add missing blank lines. * configure: Regenerate. commit d57e96dc56ee76fbbb9b59d73aeaa92354db5ecb Author: aph Date: Tue Jun 16 09:59:02 2009 +0000 2009-06-16 Andrew Haley * testsuite/libffi.call/cls_align_sint64.c, testsuite/libffi.call/cls_align_uint64.c, testsuite/libffi.call/cls_longdouble_va.c, testsuite/libffi.call/cls_ulonglong.c, testsuite/libffi.call/return_ll1.c, testsuite/libffi.call/stret_medium2.c: Fix printf format specifiers. * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. * testsuite/libffi.call/float2.c: Fix dg-excess-errors. * testsuite/libffi.call/ffitest.h, testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. commit b01d6d1982c9e020507029bfd5a58a8c60d111fa Author: aph Date: Tue Jun 16 09:44:54 2009 +0000 2009-06-16 Andrew Haley * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. * testsuite/libffi.call/err_bad_abi.c: Likewise. commit 35b6ded138591900a88055a8a8ac1fadc29a76d6 Author: aph Date: Fri Jun 12 15:29:20 2009 +0000 2009-06-11 Kaz Kojima * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. * testsuite/libffi.call/err_bad_typedef.c: Likewise. commit acc46605f2d95d67d69398e7644610f10a157ce3 Author: aph Date: Fri Jun 12 14:21:28 2009 +0000 2009-06-12 Andrew Haley * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, testsuite/libffi.call/cls_align_uint64.c, testsuite/libffi.call/cls_ulonglong.c, testsuite/libffi.call/return_ll1.c, testsuite/libffi.call/stret_medium2.c: Fix printf format specifiers. testsuite/libffi.special/unwindtest.cc: include stdint.h. commit 16d1996ed0797bd7c11aca2b0fe7e7748751aaf6 Author: twall Date: Thu Jun 11 14:27:42 2009 +0000 update changelog commit 92a515c33efe91be3cb0258f01c63aff208489c7 Author: twall Date: Thu Jun 11 14:27:28 2009 +0000 use ffi_closure_alloc instead of stack-based closure commit e4363160ba9e50167f9ca0a7399d537a1d2cd0ce Author: twall Date: Thu Jun 11 14:26:23 2009 +0000 remove unused extern commit 1dc2781d2ba38f5f000ff70069d617fb21e1d2af Author: twall Date: Thu Jun 11 11:36:16 2009 +0000 remove not-yet-applied changelog entries commit bb27735fe689dac97ec0dc847ed8d3d519620109 Author: twall Date: Wed Jun 10 10:42:36 2009 +0000 add win64 support commit b2a54c100c74854a409820817d54617fdda39eb8 Author: aph Date: Mon Jun 8 16:50:49 2009 +0000 2009-06-08 Andrew Haley * testsuite/libffi.call/err_bad_abi.c: Add xfails. * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. * testsuite/libffi.call/err_bad_typedef.c: Add xfails. * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. * testsuite/libffi.call/stret_medium.c: Likewise. * testsuite/libffi.call/stret_large2.c: Likewise. * testsuite/libffi.call/stret_large.c: Likewise. commit 25723e7141f73d3736d7244b980c89d97db852b6 Author: aph Date: Fri Jun 5 13:03:40 2009 +0000 2009-06-05 Andrew Haley * src/x86/win32.S (_ffi_closure_STDCALL): Import from gcc. commit 70758199c7cd41f411987360ccb302b497a56dc9 Author: aph Date: Thu Jun 4 16:29:58 2009 +0000 2009-06-04 Andrew Haley * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. commit e8bb12563f9aa23ddf36fa6a5b92b16b5c3e1a7f Author: aph Date: Thu Jun 4 14:59:18 2009 +0000 2009-06-04 Andrew Haley * src/mips/o32.S, src/mips/n32.S: Fix licence formatting. commit d66a8e32c3671479e3ce0f6819673e5932ba6b7f Author: aph Date: Thu Jun 4 14:43:40 2009 +0000 2009-06-04 Andrew Haley * src/x86/darwin.S: Fix licence formatting. src/x86/win32.S: Likewise. src/sh64/sysv.S: Likewise. src/sh/sysv.S: Likewise. commit 7c3b7fd6b5db746b5b09a718f3044f811372f941 Author: aph Date: Thu Jun 4 14:39:20 2009 +0000 2009-06-04 Andrew Haley * src/sh64/ffi.c: Remove lint directives. Was missing from merge of Andreas Tobler's patch from 2006-04-22. commit 1a2f93a8b362db13638afd9fcb3f2650180bfa17 Author: aph Date: Thu Jun 4 10:45:51 2009 +0000 2009-06-04 Andrew Haley * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of 2007-03-07. commit 944c95cf7aaaaf7c5fa368cda4673dd38f45020e Author: aph Date: Wed Jun 3 17:42:56 2009 +0000 2009-05-22 Dave Korn * src/x86/win32.S (_ffi_closure_STDCALL): New function. (.eh_frame): Add FDE for it. 2009-05-22 Dave Korn * configure.ac: Also check if assembler supports pc-relative relocs on X86_WIN32 targets. * configure: Regenerate. * src/x86/win32.S (ffi_prep_args): Declare extern, not global. (_ffi_call_SYSV): Add missing function type symbol .def and add EH markup labels. (_ffi_call_STDCALL): Likewise. (_ffi_closure_SYSV): Likewise. (_ffi_closure_raw_SYSV): Likewise. (.eh_frame): Add hand-crafted EH data. 2008-11-21 Eric Botcazou * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for signed/unsigned int8/16 return values. * src/sparc/v8.S (ffi_call_v8): Likewise. (ffi_closure_v8): Likewise. 2008-03-26 Kaz Kojima * src/sh/sysv.S: Add .note.GNU-stack on Linux. * src/sh64/sysv.S: Likewise. 2008-03-26 Daniel Jacobowitz * src/arm/sysv.S: Fix ARM comment marker. commit 00fa972430bb1535a4b34bf029ebcad500027b0c Author: twall Date: Sat Dec 27 16:59:05 2008 +0000 properly glob-match commit f5179e6794ac35af26fe86e468b8508a7a570c55 Author: twall Date: Fri Dec 26 19:06:28 2008 +0000 Mark XFAIL on longdouble tests for x86_64/mingw commit 80e2b5a749208c8a18f994ec5bee84594d051cc8 Author: twall Date: Mon Dec 22 15:21:15 2008 +0000 clean up tests for win64 use commit 7063d9996f742576095c7b0eb5016c0f9a670aec Author: green Date: Fri Dec 19 16:13:46 2008 +0000 Version 3.0.8 with x86-solaris support commit bdfeb13f0df0a63b19d62597517237b54d92228b Author: green Date: Fri Dec 19 15:47:44 2008 +0000 Bump to 3.0.7 commit 69205de17d6ac4c11d4ba92d6a5b40a0c5f246b2 Author: green Date: Thu Jul 24 18:03:48 2008 +0000 Many test fixes (failures due to excessive compiler warnings). commit 260d513fea00b3613fe957a44a157fe72c4ca29e Author: green Date: Thu Jul 17 13:13:52 2008 +0000 Version 3.0.6. sh/sh64 fixes. commit 3704031875feabb74e3655ed03cff4c2b3c76ac6 Author: green Date: Thu Apr 3 18:57:57 2008 +0000 Rev 3.0.5. commit 8406f5f48f7f58a1c982a93a95d521cf82b3241f Author: green Date: Thu Apr 3 18:57:34 2008 +0000 3.0.5 commit 23a9e73212b62f9684cedb0ce70e92c59cfdaffa Author: green Date: Wed Mar 5 00:07:02 2008 +0000 2008-03-04 Anthony Green Blake Chaffin hos@tamanegi.org * testsuite/libffi.call/cls_align_longdouble_split2.c testsuite/libffi.call/cls_align_longdouble_split.c testsuite/libffi.call/cls_dbls_struct.c testsuite/libffi.call/cls_double_va.c testsuite/libffi.call/cls_longdouble.c testsuite/libffi.call/cls_longdouble_va.c testsuite/libffi.call/cls_pointer.c testsuite/libffi.call/cls_pointer_stack.c testsuite/libffi.call/err_bad_abi.c testsuite/libffi.call/err_bad_typedef.c testsuite/libffi.call/huge_struct.c testsuite/libffi.call/stret_large2.c testsuite/libffi.call/stret_large.c testsuite/libffi.call/stret_medium2.c testsuite/libffi.call/stret_medium.c: New tests from Apple. commit 429e37d3ad653e52e75bf725c883ab79e859f89a Author: green Date: Thu Feb 28 04:50:19 2008 +0000 clicky commit 51e79c428348c033314f54bcb30f7e388c59e347 Author: green Date: Thu Feb 28 04:47:35 2008 +0000 getclicky commit affcab04e280efeace45a72c4dc6152c0e4f1b7f Author: green Date: Tue Feb 26 19:01:53 2008 +0000 2008-02-26 Jakub Jelinek Anthony Green * src/alpha/osf.S: Add .note.GNU-stack on Linux. * src/s390/sysv.S: Likewise. * src/powerpc/linux64.S: Likewise. * src/powerpc/linux64_closure.S: Likewise. * src/powerpc/ppc_closure.S: Likewise. * src/powerpc/sysv.S: Likewise. * src/x86/unix64.S: Likewise. * src/x86/sysv.S: Likewise. * src/sparc/v8.S: Likewise. * src/sparc/v9.S: Likewise. * src/m68k/sysv.S: Likewise. * src/ia64/unix.S: Likewise. * src/arm/sysv.S: Likewise. commit 59689d5522c159a3ac967adb6b891cf5f22c890f Author: green Date: Tue Feb 26 17:40:51 2008 +0000 2008-02-26 Anthony Green Thomas Heller * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C comment. commit b13c84cf4668828ff8429ba4a2f94cd1eb574ae0 Author: green Date: Tue Feb 26 17:38:15 2008 +0000 2008-02-26 Anthony Green Thomas Heller * include/ffi.h.in: Change void (*)() to void (*)(void). commit 265289f679ffd24a88ae1aa2cef0e4aa14703cd8 Author: green Date: Tue Feb 26 17:34:36 2008 +0000 2008-02-26 Anthony Green * src/alpha/ffi.c: Change void (*)() to void (*)(void). src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S,> src/x86/ffi64.c: Ditto. commit fb5036cd6d0f909918e90f7d2d9fd80d46682d5d Author: green Date: Sun Feb 24 17:25:25 2008 +0000 fix date commit 40bec108e7d0181e6c9928aa7a33187bcc0f3d6f Author: green Date: Sun Feb 24 17:25:02 2008 +0000 New release commit b922048fa82ea109a4af269ee47bbc2a586bbac2 Author: green Date: Sun Feb 24 17:24:00 2008 +0000 2008-02-24 Anthony Green * configure.ac: Accept openbsd*, not just openbsd. Bump version to 3.0.4. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. commit affca4b92d06e5554784c7e9b233029ef83f7d8a Author: green Date: Fri Feb 22 21:53:29 2008 +0000 sync readme with web page. commit 3e53d8752ea74859b4c64fbbf935e62a937c4d78 Author: green Date: Fri Feb 22 21:52:38 2008 +0000 New release commit 4d92f6c8e78fe084be65f3e8b58b859901ba796d Author: green Date: Fri Feb 22 21:49:46 2008 +0000 2008-02-22 Anthony Green * configure.ac: Bump version to 3.0.3. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. Clean up test docs. commit 0e185fa11a01f816824ba2687ed3715ab6219bef Author: green Date: Fri Feb 22 21:43:18 2008 +0000 Update configure script. commit f73986bd211cfbbaa593d1309504d0dc68626191 Author: green Date: Fri Feb 22 21:40:53 2008 +0000 2008-02-22 Bjoern Koenig Andreas Tobler * configure.ac: Add amd64-*-freebsd* target. * configure: Regenerate. commit 0208f68fe5de30c33e7f70ebc281635917013f5a Author: green Date: Fri Feb 22 21:15:44 2008 +0000 2008-02-22 Thomas Heller * configure.ac: Add x86 OpenBSD support. * configure: Rebuilt. commit 01adb0e638a86cf0d5e668ed8e08be9b0cd2505f Author: green Date: Thu Feb 21 16:17:26 2008 +0000 Fix README. commit 1edd4563225981a14f7d4fb9919b1ed88e38082f Author: green Date: Thu Feb 21 13:39:01 2008 +0000 3.0.2 commit c9b542800864e2204db6e83f3843a17813ba6165 Author: green Date: Thu Feb 21 13:36:43 2008 +0000 add missing file commit d5fa5633d5c8d3c212a2267cfa38fba4091baa2c Author: green Date: Thu Feb 21 13:36:19 2008 +0000 2008-02-21 Anthony Green * configure.ac: Bump version to 3.0.2. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-02-21 Björn König * src/x86/freebsd.S: New file. * configure.ac: Add x86 FreeBSD support. * Makefile.am: Ditto. commit ac35bfc6fcadd8880c1efce36724820f9074b318 Author: green Date: Sat Feb 16 01:03:56 2008 +0000 Updated commit f7942975fee7b0162647dd79e2652615b737e98e Author: green Date: Sat Feb 16 01:02:00 2008 +0000 2008-02-15 Anthony Green * configure.ac: Bump version to 3.0.1. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * libtool-version: Increment revision. * README: Update for new release. 2008-02-15 David Daney * src/mips/ffi.c: Remove extra '>' from include directive. (ffi_prep_closure_loc): Use clear_location instead of tramp. commit 59aa6bb1bfc86a610ac1a8b123443efd75854dd1 Author: green Date: Fri Feb 15 20:52:26 2008 +0000 Add more platforms. commit 45a45ab99074448be0ae1a8d2ade50d28b60f8de Author: green Date: Fri Feb 15 19:16:36 2008 +0000 3.0 notes commit 4db74cbea888c9f1251b85baf00d99b83d3b994d Author: green Date: Fri Feb 15 19:10:26 2008 +0000 Update commit c3e1101ffabf44d8a2ee46e03ba9ab582050a825 Author: green Date: Fri Feb 15 18:43:40 2008 +0000 2008-02-15 Anthony Green * configure.ac: Bump version to 3.0.0, * configure, doc/stamp-vti, doc/version.texi: Rebuilt. 2008-02-15 David Daney * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): Define (conditionally), and use it to include cachectl.h. (ffi_prep_closure_loc): Fix cache flushing. * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. commit 7e0cc12e9233ad285db41ce8dbdda61ed2a7fb06 Author: green Date: Fri Feb 15 15:51:03 2008 +0000 New release commit 2d7dc885ec40d53866f29984d595511942c8b686 Author: green Date: Fri Feb 15 15:30:26 2008 +0000 * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: Update dates and remove all references to ffi_prep_closure. * configure.ac: Bump version to 2.99.9. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. commit a0525f03eeaaed33b1eac80e0c016455cee3615d Author: green Date: Fri Feb 15 15:14:30 2008 +0000 New release. commit 2b30dfb3146ee26ad956d00ee05eb835ca1a95b4 Author: green Date: Fri Feb 15 15:12:43 2008 +0000 * man/ffi_prep_closure.3: Delete. * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. (man_MANS): Ditto. * man/Makefile.in: Rebuilt. * configure.ac: Bump version to 2.99.8. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. commit bf41e64840ebcb6cc31a6f028253c1fde82705d8 Author: green Date: Fri Feb 15 01:56:50 2008 +0000 Update. commit 4d39ddee677bbb61d621893b91e11eac5e7c4af7 Author: green Date: Fri Feb 15 01:24:06 2008 +0000 * configure.ac: Bump version to 2.99.7. * configure, doc/stamp-vti, doc/version.texi: Rebuilt. * include/ffi.h.in LICENSE src/debug.c src/closures.c src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h src/prep_cif.c: Update license text. commit d58b032b41a12bd3d72148da6822ab59dd698ff9 Author: green Date: Fri Feb 15 00:59:25 2008 +0000 New release commit 91e5478df6d5ac63efbb10f025807b4606afab56 Author: green Date: Fri Feb 15 00:50:30 2008 +0000 Update supported platforms. Bump version. commit bd0768f877c8f7fd0d36af2191b203d4d057b1ce Author: green Date: Fri Feb 15 00:45:33 2008 +0000 * configure.ac: Bump version to 2.99.5. * configure: Rebuilt. * Makefile.am (EXTRA_DIST): Add darwin64.S * Makefile.in: Rebuilt. * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. * LICENSE: Update WARRANTY. commit 49d345f767bd2cfee951bceaab6a1a07986cf293 Author: green Date: Thu Feb 14 23:43:27 2008 +0000 update license reference commit 12ac48fc79b515db7c9accd9fcaa87b0dcefccdb Author: green Date: Thu Feb 14 23:42:08 2008 +0000 Update WARRANTY commit 6b91c41da87e78552f2990dfc504a0a3349f340b Author: green Date: Thu Feb 14 23:38:27 2008 +0000 fix tarball reference commit 2b59579e3533334bee4788e076b4e520c2ab518c Author: green Date: Thu Feb 14 23:35:58 2008 +0000 First update in 5 years! commit 6cbdf3f3a3777a93382a2d508ddef1c353ff0955 Author: green Date: Thu Feb 14 22:44:06 2008 +0000 Fix .pc file bug and bump version commit 1d1dc81104b209df3cfef0840735c59efae2f655 Author: green Date: Thu Feb 14 22:03:37 2008 +0000 Add man files and info file. Update README. Tag as 2.99.3. commit f045a2367f793fa8b01534cf2e25bcc46afc8fa1 Author: tromey Date: Thu Feb 14 20:46:57 2008 +0000 Move entry from ChangeLog to ChangeLog.libffi commit 6257f07d1a9efd27fa83639cfba281f5d3188731 Author: tromey Date: Thu Feb 14 20:33:17 2008 +0000 * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. * mdate-sh, texinfo.tex: New files. * Makefile.am (info_TEXINFOS): New variable. * doc/libffi.texi: New file. * doc/version.texi: Likewise. commit 4232af563c5509c3760a33e3684a2b958be755e1 Author: green Date: Thu Feb 14 16:19:21 2008 +0000 * Makefile.am (AM_CFLAGS): Don't compile with -D. (lib_LTLIBRARIES): Define. (toolexeclib_LIBRARIES): Undefine. * Makefile.in: Rebuilt. * configure.ac: Reset version to 2.99.1. * configure.in: Rebuilt. commit 961543615c31f092b578a4b4cda914db64f9d0fa Author: green Date: Thu Feb 14 15:57:40 2008 +0000 Fix typo. commit aeb0abab87222f637fbf352d4effd3b76b52ed26 Author: green Date: Thu Feb 14 15:54:27 2008 +0000 * libffi.pc.in: Usse @PACKAGE_NAME@ and @PACKAGE_VERSION@. * configure.ac: Reset version to 2.99.1. * configure.in: Rebuilt. * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. * Makefile.in: Rebuilt. * LICENSE: Update copyright notice. commit 77fe243556433eae119d8bd7469bfccdd5bd8a1a Author: green Date: Thu Feb 14 15:37:00 2008 +0000 Fix make dist again commit d4970cf4529459bf0f0e43c602cac396786c6802 Author: green Date: Thu Feb 14 15:18:56 2008 +0000 Fix make dist commit f0b1462f2d3024922ad71421bd5c4311fcb16da5 Author: green Date: Thu Feb 14 15:01:41 2008 +0000 Use pkgconfig. Increment libtool CURRENT version. commit 27e52f33baa069012a5adb2a3807f9ca1f2165ab Author: green Date: Sun Feb 3 13:59:48 2008 +0000 Fix header installs when using DESTDIR. commit fadab28eb6e33fb6dcdd7b9323e147142216d548 Author: twall Date: Sun Feb 3 12:32:22 2008 +0000 update changelog commit b5e44c8dfa92c87b99762c303cf5574a16db8f27 Author: twall Date: Sun Feb 3 01:12:32 2008 +0000 offset from code base address, not data base address commit f359848d1a995c0e44566d815f218729dc996e22 Author: green Date: Fri Feb 1 21:29:43 2008 +0000 Fix header installs. commit c30df49e157c7bfc8e19e3f8a72b9464fe225e54 Author: green Date: Fri Feb 1 21:13:55 2008 +0000 Revert my broken changes to twall's patch. commit 675561bb9aa0732c76698df10dd3007b5d0ec759 Author: green Date: Thu Jan 31 13:44:25 2008 +0000 Fix make dist . commit abc0bbf3813dc43e23d4c23e6fe794dbf287639b Author: green Date: Thu Jan 31 11:58:57 2008 +0000 Add Tim Wall's x86 windows patch. commit e332366d15a31198735b593ec8f7fc0558d783b8 Author: green Date: Wed Jan 30 13:21:02 2008 +0000 Add HJ's -fomit-frame-pointer struct return fix commit d4204240392af5b7750a08671b08e9c22dff5e93 Author: green Date: Wed Jan 30 12:42:34 2008 +0000 Clean up for new automake. commit f4932dd020df574637c9fb3fc1bb18e5a8f304cc Author: green Date: Wed Jan 30 12:40:25 2008 +0000 Fixes to run testsuite commit 085520ddc8db6a916bfc416b871fcb2d00074d40 Author: green Date: Tue Jan 29 15:16:43 2008 +0000 New files from gcc tree. commit 77175b3f7234e4875a4ef554ed1fe9fdc4133794 Author: green Date: Tue Jan 29 15:15:20 2008 +0000 Latest gcc svn sources commit 2544e45a0b2b634053df02da3a2ed9680eeed2a1 Author: green Date: Tue Jan 29 14:28:13 2008 +0000 Install ffitarget.h in $prefix/include. commit 6002211b1cc4daeb587d054b4f83968bda2c981e Author: green Date: Tue Jan 29 12:30:10 2008 +0000 Add new files. commit ccabd2b16be883cd03e5f0cd88ccfdd6ca39239d Author: green Date: Tue Jan 29 12:28:15 2008 +0000 Merge from gcc commit e680ecfbfca1da8d1823e48bc89b8375e66e128b Author: tromey Date: Sun Dec 24 23:12:15 2006 +0000 Pulled in libffi from gcc trunk. Fixed build and install for standalone use. commit e7ba08965942ce872fdbc69f70f9848cc3d0bad6 Author: root Date: Sun Jun 4 23:22:24 2006 +0000 sourcware.org commit 0cd4aa24e21aaa964dfbdebc25ec5c8188049375 Author: root Date: Sun May 30 01:51:57 2004 +0000 Add LockDir commit 5826120fbd940d26cca76ed2522187505581e1ed Author: green Date: Tue Nov 4 06:09:08 2003 +0000 Add link to Gianni's web site. commit 220aa4b27db42d7ffaac5056000d5179f00d5ea3 Author: jsm Date: Tue Jan 21 08:07:42 2003 +0000 Newer, better, increased from before! (list of acceptable anon usernames) commit 1c3adc892cc1403dc4d3d7003a2385899836612e Author: green Date: Fri Dec 6 01:28:03 2002 +0000 Fixed Cygnus references. commit 4af66bb62fab9a8e318af3bf01e5486596a0c8d4 Author: green Date: Sun Oct 21 19:18:42 2001 +0000 Testsuite fixes. commit 5435965f9015ce40584c98d3816c3d05e7de1d21 Author: green Date: Mon Apr 23 00:32:03 2001 +0000 * include/ffi_common.h: Delete, after moving contents to... * include/ffi_private.h: Subsume contents of ffi_common.h. * include/Makefile.am (noinst_HEADERS): Remove ffi_common.h. * include/Makefile.in: Rebuilt. * arm/ffi.c, m68k/ffi.c, mips/ffi.c, powerpc/ffi.c, s390/ffi.c, ia64/ffi.c: Include ffi_private.h, not ffi_common.h. * alpha/ffi.c, sparc/ffi.c, x86/ffi.c: Don't include ffi_common.h. * types.c, raw_api.c, java_raw_api.c, prep_cif.c: Don't include ffi_common.h. * debug.c: Include ffi_private.h instead of ffi_common.h. * mips/ffi.c (calc_n32_struct_flags): Make static. (FIX_ARGP): Remove call to debugging routine ffi_stop_here. * mips/n32.S: Include ffi_private.h. * mips/o32.S: Include ffi_private.h. commit 6fdb7de0fe3b7385e1fd78812ae69d9b3069d994 Author: green Date: Sun Apr 22 19:38:34 2001 +0000 * README: Update some comments. * Makefile.am (SUBDIRS): Add include so ffi.h gets installed. * Makefile.in: Rebuilt. * include/ffi.h: Change ALPHA to __alpha__ and SPARC to __sparc__. * types.c: Ditto. * prep_cif.c (ffi_prep_cif): Ditto. * alpha/ffi.c, alpha/osf.S, sparc/ffi.c, sparc/v8.S, sparc/v9.S: Include ffi_private.h. * include/ffi_private.h (FFI_TYPE_LAST): Define. commit bc7144b01b9707ef35f1a2e3e6996e005e82953a Author: green Date: Sun Apr 22 18:28:36 2001 +0000 Moved files from old home commit e57279831e20368c1aa1d2b35462b8629be73959 Author: green Date: Sun Apr 22 18:23:47 2001 +0000 These are dead. commit 7247436b5fe71767b29dc02b4da0fe18b08082e6 Author: green Date: Sun Apr 22 18:22:43 2001 +0000 All these files live somewhere else now. commit a8b0d40ff908e275028f676870c31d0d70274a98 Author: green Date: Sun Apr 22 18:17:14 2001 +0000 Many changes. Not quite there yet. commit f893d2273355710a290a26faebf5f12c3a34d0e3 Author: green Date: Sun Apr 22 18:13:22 2001 +0000 Moved m68k files commit 688ddfeced89cbb9d37b53005e1f7f2b9c78a8d7 Author: green Date: Sun Apr 22 18:12:33 2001 +0000 New, target indepentent, header commit f9e40776d488d5ecf43b3ae21444a1a2f6eca528 Author: green Date: Sun Apr 22 18:11:57 2001 +0000 Many changes. commit 8c1d2eb47f6bc314c431b75c85c107e8e43c4a76 Author: green Date: Sun Apr 22 18:10:47 2001 +0000 Many changes commit 1359dfc6582680a158b3caa3efb7a368da4aa12d Author: green Date: Sun Apr 22 18:10:20 2001 +0000 Moved ia64 files commit 6e2de5eee316a4579869aff50c7c5f6f478582d8 Author: green Date: Sun Apr 22 18:08:11 2001 +0000 Moved arm files commit 8807355af34cba8ffe87aee51152dfccec2771fa Author: green Date: Mon Apr 9 00:58:38 2001 +0000 Many many updates. Merge from gcc and then some. commit f7e9f91adec4ff1c2e7a13b3de81d2c5a3f55e7e Author: green Date: Mon Apr 17 03:32:37 2000 +0000 Mnay fixes. commit c4860de618f4956283f5c8230a2544e403dfe390 Author: green Date: Mon Apr 17 03:18:46 2000 +0000 Merge from libgcj. Merged patches from net. See ChangeLog for details. commit c578b58314990c3853429297c38ba14015fec5fa Author: jsm Date: Sat Oct 9 20:18:16 1999 +0000 1999-10-09 Jason Molenda (jsm@bugshack.cygnus.com) * CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum: Deleted; generic versions now used for all repositories. * CVSROOT/commitinfo, CVSROOT/loginfo: Change pathnames to generic versions. * CVSROOT/checkoutlist: Don't try to check out the removed files any longer. commit acdb20051207fed7652dd9f122f65de5458c474c Author: jsm Date: Sat Oct 9 20:18:15 1999 +0000 1999-10-09 Jason Molenda (jsm@bugshack.cygnus.com) * CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum: Deleted; generic versions now used for all repositories. * CVSROOT/commitinfo, CVSROOT/loginfo: Change pathnames to generic versions. * CVSROOT/checkoutlist: Don't try to check out the removed files any longer. commit e75be655ceedf7ab24c4e99d75eec9efeb979bc7 Author: green Date: Sun Aug 8 13:16:41 1999 +0000 New configury commit d6669a0dd5b266005325bbf6d5a8ff34574d809e Author: green Date: Sun Aug 8 13:05:12 1999 +0000 * include/ffi.h.in: Try to work around messy header problem with PACKAGE and VERSION. * configure: Rebuilt. * configure.in: Change version to 2.00-beta. * fficonfig.h.in: Rebuilt. * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. * src/x86/ffi.c (ffi_raw_call): Rename. commit 4819d52b007934a40d6d29a75ee30e857c4a93ae Author: green Date: Wed Aug 4 18:02:34 1999 +0000 New file for Kresten's closure work commit 2dbf801eb427cbf5021a9e1e512b5fc523524700 Author: green Date: Wed Aug 4 18:00:05 1999 +0000 Kresten's closure work. Initial checkin. commit d170961701b0f2bf7e824d7caba2ebe10002ed84 Author: green Date: Thu Jul 8 14:36:52 1999 +0000 * configure.in: Add x86 and powerpc BeOS configurations. From Makoto Kato . commit c7747d976924ec6f2229cbcfbbdb98d364e10de9 Author: jsm Date: Wed May 12 23:32:16 1999 +0000 1999-05-12 Jason Molenda (jsm@bugshack.cygnus.com) * index.html: Add links to libffi* mail list archives. commit dd2aa9a8de22e26df3bbc85d068358641f6202f7 Author: green Date: Thu May 6 05:34:36 1999 +0000 * configure.in: Add warning about this being beta code. Remove src/Makefile.am from the picture. * configure: Rebuilt. * Makefile.am: Move logic from src/Makefile.am. Add changes to support libffi as a target library. * Makefile.in: Rebuilt. * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: Upgraded to new autoconf, automake, libtool. * README: Tweaks. * LICENSE: Update copyright date. * src/Makefile.am, src/Makefile.in: Removed. commit 4e9452abed58a3058ccdb446f96a29d50dda1f34 Author: green Date: Wed May 5 22:06:13 1999 +0000 Updated to new automake, libtool, autoconf - nothing works :-) commit 6d3b2bddaf4967fba8b8656c01bfc77ec0f2800c Author: jsm Date: Mon Apr 26 15:55:28 1999 +0000 1999-04-26 Jason Molenda (jsm@bugshack.cygnus.com) * index.html: Missed a reference to libffi-discuss@cygnus.com. Fixed. commit ebc6a9c28af831d3d187af8ff17319f0f309bd98 Author: jsm Date: Mon Apr 26 15:53:29 1999 +0000 1999-04-26 Jason Molenda (jsm@bugshack.cygnus.com) * index.html: Change links to ftp directory to point to sourceware directory. Change mailing list subscription forms to point to sourceware lists. commit 78ffc52a8b257061348c576ccb6fbbf8b48b0fff Author: jsm Date: Sun Apr 18 01:33:21 1999 +0000 Standard sourceware setup. commit b4d77e827d7ebef7e57ebcd71e71c15c62f1e0a8 Author: jsm Date: Mon Nov 30 11:11:25 1998 +0000 Small typeo. (I wouldn't bother except that it made the sentence hard for me to parse on a casual read.) commit bfb73f08fdc987e37070c5fb0b196fbd28872888 Author: jsm Date: Mon Nov 30 10:44:55 1998 +0000 A few cleanups. Most notably, point to the correct subscribe cgi-bin script. commit af8b7f037ccee3b7939ee226a1a2bbc2f057b35c Author: green Date: Mon Nov 30 06:20:05 1998 +0000 * index.html: Reformatted and updated to reflect hosting on sourceware.cygnus.com (new mailing lists, etc). commit 334f0b060942aff8d26badaf7dde7830450dc5da Author: green Date: Sun Nov 29 16:56:12 1998 +0000 initial snapshot of documentation commit 3ab5cb4a1dcc7ecd7e773c97582b0099976c4753 Author: green Date: Sun Nov 29 16:56:10 1998 +0000 Initial revision commit d2a9eb5a8b7cbc8b769809cad59c82b975c178e2 Merge: d3782ec bc75c54 Author: green Date: Sun Nov 29 16:48:16 1998 +0000 This commit was generated by cvs2svn to compensate for changes in r7, which included commits to RCS files with non-trunk default branches. commit bc75c54bd311658005b065f1bf201b204c81cbca Author: green Date: Sun Nov 29 16:48:16 1998 +0000 Import of v1 code. commit d3782ec8160c644421dcea17b605fec6e328f14e Author: jsm Date: Fri Nov 20 20:18:00 1998 +0000 Send commit messages to mailing lists. commit 8d8d3843c484c2bb70d8375b2b799f75eb03f709 Author: jsm Date: Thu Oct 1 22:08:36 1998 +0000 initial checkin commit 49634f3bf221cc1939abafc788f7e4e31293fe73 Author: jsm Date: Thu Oct 1 22:08:35 1998 +0000 Add standard setup. commit c64a84c7693f8cd400fb94bba3c9bcfd9ad1fc36 Author: jsm Date: Thu Oct 1 22:08:34 1998 +0000 Add readers and standard modules file. commit 9813273b07fd082da573b3b6bfb8d23809b59eea Author: jsm Date: Thu Oct 1 22:08:33 1998 +0000 initial checkin polyml-5.7.1/libffi/testsuite/0000755000175000017500000000000013204034553015263 5ustar daviddavidpolyml-5.7.1/libffi/testsuite/Makefile.am0000644000175000017500000001011413204034553017314 0ustar daviddavid## Process this file with automake to produce Makefile.in. AUTOMAKE_OPTIONS = foreign dejagnu EXTRA_DEJAGNU_SITE_CONFIG=../local.exp CLEANFILES = *.exe core* *.log *.sum EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ libffi.call/cls_align_longdouble_split.c \ libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c \ libffi.call/closure_fn1.c \ libffi.call/return_ul.c libffi.call/cls_align_double.c \ libffi.call/return_fl2.c libffi.call/cls_1_1byte.c \ libffi.call/cls_64byte.c libffi.call/nested_struct7.c \ libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c \ libffi.call/ffitest.h libffi.call/nested_struct4.c \ libffi.call/cls_multi_ushort.c libffi.call/struct3.c \ libffi.call/cls_3byte1.c libffi.call/cls_16byte.c \ libffi.call/struct8.c libffi.call/nested_struct8.c \ libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c \ libffi.call/cls_pointer.c \ libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c \ libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c \ libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c \ libffi.call/call.exp libffi.call/cls_double.c \ libffi.call/cls_align_sint16.c libffi.call/cls_uint.c \ libffi.call/return_ll1.c libffi.call/nested_struct3.c \ libffi.call/cls_20byte1.c libffi.call/closure_fn4.c \ libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c \ libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c \ libffi.call/return_fl.c libffi.call/struct5.c \ libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c \ libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c \ libffi.call/return_fl3.c libffi.call/stret_medium.c \ libffi.call/nested_struct6.c libffi.call/closure_fn3.c \ libffi.call/float3.c libffi.call/many2.c \ libffi.call/closure_simple.c libffi.call/cls_align_uint16.c \ libffi.call/cls_9byte1.c libffi.call/closure_fn6.c \ libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c \ libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c \ libffi.call/cls_sshort.c \ libffi.call/nested_struct.c libffi.call/cls_20byte.c \ libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c \ libffi.call/return_uc.c \ libffi.call/cls_18byte.c libffi.call/cls_8byte.c \ libffi.call/promotion.c \ libffi.call/return_dbl.c libffi.call/cls_24byte.c \ libffi.call/struct4.c libffi.call/cls_6byte.c \ libffi.call/cls_align_uint32.c libffi.call/float.c \ libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c \ libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c \ libffi.call/cls_align_float.c libffi.call/return_fl1.c \ libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ libffi.call/cls_align_sint64.c \ libffi.call/stret_large2.c libffi.call/return_sl.c \ libffi.call/closure_fn0.c libffi.call/cls_5byte.c \ libffi.call/cls_2byte.c libffi.call/float2.c \ libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c \ libffi.call/stret_large.c libffi.call/cls_ulonglong.c \ libffi.call/cls_ushort.c libffi.call/nested_struct1.c \ libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c \ libffi.call/cls_float.c libffi.call/cls_pointer_stack.c \ libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c \ libffi.call/struct1.c libffi.call/nested_struct9.c \ libffi.call/huge_struct.c libffi.call/problem1.c \ libffi.call/float4.c \ libffi.call/return_ldl.c \ libffi.call/closure_fn5.c \ libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c \ libffi.call/return_sc.c libffi.call/struct7.c \ libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c \ libffi.call/cls_6_1_byte.c \ libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc \ libffi.call/unwindtest_ffi_call.cc \ lib/wrapper.exp lib/target-libpath.exp \ lib/libffi.exp libffi.call/cls_struct_va1.c \ libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c \ libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c \ libffi.call/nested_struct11.c libffi.call/uninitialized.c \ libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ libffi.call/va_struct3.c \ libffi.call/strlen2.c \ libffi.call/strlen3.c \ libffi.call/strlen4.c polyml-5.7.1/libffi/testsuite/config/0000755000175000017500000000000013204034553016530 5ustar daviddavidpolyml-5.7.1/libffi/testsuite/config/default.exp0000644000175000017500000000003013204034553020663 0ustar daviddavidload_lib "standard.exp" polyml-5.7.1/libffi/testsuite/libffi.call/0000755000175000017500000000000013204034553017430 5ustar daviddavidpolyml-5.7.1/libffi/testsuite/libffi.call/cls_8byte.c0000644000175000017500000000445113204034553021474 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_8byte { int a; float b; } cls_struct_8byte; cls_struct_8byte cls_struct_8byte_fn(struct cls_struct_8byte a1, struct cls_struct_8byte a2) { struct cls_struct_8byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; printf("%d %g %d %g: %d %g\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); return result; } static void cls_struct_8byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_8byte a1, a2; a1 = *(struct cls_struct_8byte*)(args[0]); a2 = *(struct cls_struct_8byte*)(args[1]); *(cls_struct_8byte*)resp = cls_struct_8byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_8byte g_dbl = { 1, 2.0 }; struct cls_struct_8byte f_dbl = { 4, 5.0 }; struct cls_struct_8byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_sint; cls_struct_fields[1] = &ffi_type_float; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_8byte_fn), &res_dbl, args_dbl); /* { dg-output "1 2 4 5: 5 7" } */ printf("res: %d %g\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 5 7" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_8byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_8byte(*)(cls_struct_8byte, cls_struct_8byte))(code))(g_dbl, f_dbl); /* { dg-output "\n1 2 4 5: 5 7" } */ printf("res: %d %g\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 5 7" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_12byte.c0000644000175000017500000000474213204034553021552 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_12byte { int a; int b; int c; } cls_struct_12byte; cls_struct_12byte cls_struct_12byte_fn(struct cls_struct_12byte b1, struct cls_struct_12byte b2) { struct cls_struct_12byte result; result.a = b1.a + b2.a; result.b = b1.b + b2.b; result.c = b1.c + b2.c; printf("%d %d %d %d %d %d: %d %d %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, result.a, result.b, result.c); return result; } static void cls_struct_12byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args , void* userdata __UNUSED__) { struct cls_struct_12byte b1, b2; b1 = *(struct cls_struct_12byte*)(args[0]); b2 = *(struct cls_struct_12byte*)(args[1]); *(cls_struct_12byte*)resp = cls_struct_12byte_fn(b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_12byte h_dbl = { 7, 4, 9 }; struct cls_struct_12byte j_dbl = { 1, 5, 3 }; struct cls_struct_12byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_sint; cls_struct_fields[1] = &ffi_type_sint; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &h_dbl; args_dbl[1] = &j_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_12byte_fn), &res_dbl, args_dbl); /* { dg-output "7 4 9 1 5 3: 8 9 12" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 8 9 12" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_12byte_gn, NULL, code) == FFI_OK); res_dbl.a = 0; res_dbl.b = 0; res_dbl.c = 0; res_dbl = ((cls_struct_12byte(*)(cls_struct_12byte, cls_struct_12byte))(code))(h_dbl, j_dbl); /* { dg-output "\n7 4 9 1 5 3: 8 9 12" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 8 9 12" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/float3.c0000644000175000017500000000264413204034553020772 0ustar daviddavid/* Area: ffi_call Purpose: Check float arguments with different orders. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" #include "float.h" static double floating_1(float a, double b, long double c) { return (double) a + b + (double) c; } static double floating_2(long double a, double b, float c) { return (double) a + b + (double) c; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; double rd; float f; double d; long double ld; args[0] = &ffi_type_float; values[0] = &f; args[1] = &ffi_type_double; values[1] = &d; args[2] = &ffi_type_longdouble; values[2] = &ld; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_double, args) == FFI_OK); f = 3.14159; d = (double)1.0/(double)3.0; ld = 2.71828182846L; floating_1 (f, d, ld); ffi_call(&cif, FFI_FN(floating_1), &rd, values); CHECK(rd - floating_1(f, d, ld) < DBL_EPSILON); args[0] = &ffi_type_longdouble; values[0] = &ld; args[1] = &ffi_type_double; values[1] = &d; args[2] = &ffi_type_float; values[2] = &f; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_double, args) == FFI_OK); floating_2 (ld, d, f); ffi_call(&cif, FFI_FN(floating_2), &rd, values); CHECK(rd - floating_2(ld, d, f) < DBL_EPSILON); exit (0); } polyml-5.7.1/libffi/testsuite/libffi.call/float2.c0000644000175000017500000000270713204034553020771 0ustar daviddavid/* Area: ffi_call Purpose: Check return value long double. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-excess-errors "fails" { target x86_64-*-mingw* x86_64-*-cygwin* } } */ /* { dg-do run { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" #include "float.h" static long double ldblit(float f) { return (long double) (((long double) f)/ (long double) 3.0); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float f; long double ld; args[0] = &ffi_type_float; values[0] = &f; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_longdouble, args) == FFI_OK); f = 3.14159; #if 1 /* This is ifdef'd out for now. long double support under SunOS/gcc is pretty much non-existent. You'll get the odd bus error in library routines like printf(). */ printf ("%Lf\n", ldblit(f)); #endif ld = 666; ffi_call(&cif, FFI_FN(ldblit), &ld, values); #if 1 /* This is ifdef'd out for now. long double support under SunOS/gcc is pretty much non-existent. You'll get the odd bus error in library routines like printf(). */ printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON); #endif /* These are not always the same!! Check for a reasonable delta */ if (ld - ldblit(f) < LDBL_EPSILON) puts("long double return value tests ok!"); else CHECK(0); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct4.c0000644000175000017500000000533313204034553022552 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: PR 25630. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { double a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; static B B_fn(struct A b2, struct B b3) { struct B result; result.x.a = b2.a + b3.x.a; result.x.b = b2.b + b3.x.b + b3.y; result.y = b2.b + b3.x.b; printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); *(B*)resp = B_fn(b0, b1); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type cls_struct_type, cls_struct_type1; ffi_type* dbl_arg_types[3]; struct A e_dbl = { 1.0, 7}; struct B f_dbl = {{12.0 , 127}, 99}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn2.c0000644000175000017500000000551413204034553022022 0ustar daviddavid/* Area: closure_call Purpose: Check multiple values passing from different type. Also, exceed the limit of gpr and fpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(double *)args[0] +(int)(*(double *)args[1]) + (int)(*(double *)args[2]) + (int)*(double *)args[3] + (int)(*(signed short *)args[4]) + (int)(*(double *)args[5]) + (int)*(double *)args[6] + (int)(*(int *)args[7]) + (int)(*(double *)args[8]) + (int)*(int *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(float *)args[13]) + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(double *)args[0], (int)(*(double *)args[1]), (int)(*(double *)args[2]), (int)*(double *)args[3], (int)(*(signed short *)args[4]), (int)(*(double *)args[5]), (int)*(double *)args[6], (int)(*(int *)args[7]), (int)(*(double*)args[8]), (int)*(int *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(float *)args[13]), (int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type2)(double, double, double, double, signed short, double, double, int, double, int, int, float, int, float, int, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; cl_arg_types[0] = &ffi_type_double; cl_arg_types[1] = &ffi_type_double; cl_arg_types[2] = &ffi_type_double; cl_arg_types[3] = &ffi_type_double; cl_arg_types[4] = &ffi_type_sshort; cl_arg_types[5] = &ffi_type_double; cl_arg_types[6] = &ffi_type_double; cl_arg_types[7] = &ffi_type_sint; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_sint; cl_arg_types[10] = &ffi_type_sint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_float; cl_arg_types[14] = &ffi_type_sint; cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn2, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type2)code)) (1, 2, 3, 4, 127, 5, 6, 8, 9, 10, 11, 12.0, 13, 19.0, 21, 1); /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ printf("res: %d\n",res); /* { dg-output "\nres: 255" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_stdcall.c0000644000175000017500000000364013204034553022761 0ustar daviddavid/* Area: closure_call (stdcall convention) Purpose: Check handling when caller expects stdcall callee Limitations: none. PR: none. Originator: */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static void closure_test_stdcall(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(int *)args[0] + (int)(*(int *)args[1]) + (int)(*(int *)args[2]) + (int)(*(int *)args[3]) + (int)(intptr_t)userdata; printf("%d %d %d %d: %d\n", (int)*(int *)args[0], (int)(*(int *)args[1]), (int)(*(int *)args[2]), (int)(*(int *)args[3]), (int)*(ffi_arg *)resp); } typedef int (__stdcall *closure_test_type0)(int, int, int, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; void* sp_pre; void* sp_post; char buf[1024]; cl_arg_types[0] = &ffi_type_uint; cl_arg_types[1] = &ffi_type_uint; cl_arg_types[2] = &ffi_type_uint; cl_arg_types[3] = &ffi_type_uint; cl_arg_types[4] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 4, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_stdcall, (void *) 3 /* userdata */, code) == FFI_OK); #ifdef _MSC_VER __asm { mov sp_pre, esp } #else asm volatile (" movl %%esp,%0" : "=g" (sp_pre)); #endif res = (*(closure_test_type0)code)(0, 1, 2, 3); #ifdef _MSC_VER __asm { mov sp_post, esp } #else asm volatile (" movl %%esp,%0" : "=g" (sp_post)); #endif /* { dg-output "0 1 2 3: 9" } */ printf("res: %d\n",res); /* { dg-output "\nres: 9" } */ sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post); printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf)); /* { dg-output "\nstack pointer match" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct2.c0000644000175000017500000000530413204034553022546 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20030911 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned long a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; B B_fn(struct A b0, struct B b1) { struct B result; result.x.a = b0.a + b1.x.a; result.x.b = b0.b + b1.x.b + b1.y; result.y = b0.b + b1.x.b; printf("%lu %d %lu %d %d: %lu %d %d\n", b0.a, b0.b, b1.x.a, b1.x.b, b1.y, result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); *(B*)resp = B_fn(b0, b1); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type cls_struct_type, cls_struct_type1; ffi_type* dbl_arg_types[3]; struct A e_dbl = { 1, 7}; struct B f_dbl = {{12 , 127}, 99}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_fields[0] = &ffi_type_ulong; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct8.c0000644000175000017500000000341513204034553021213 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { float f1; float f2; float f3; float f4; } test_structure_8; static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts) { ts.f1 += 1; ts.f2 += 1; ts.f3 += 1; ts.f4 += 1; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts8_type; ffi_type *ts8_type_elements[5]; test_structure_8 ts8_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_8 *ts8_result = (test_structure_8 *) malloc (sizeof(test_structure_8)); ts8_type.size = 0; ts8_type.alignment = 0; ts8_type.type = FFI_TYPE_STRUCT; ts8_type.elements = ts8_type_elements; ts8_type_elements[0] = &ffi_type_float; ts8_type_elements[1] = &ffi_type_float; ts8_type_elements[2] = &ffi_type_float; ts8_type_elements[3] = &ffi_type_float; ts8_type_elements[4] = NULL; args[0] = &ts8_type; values[0] = &ts8_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK); ts8_arg.f1 = 5.55f; ts8_arg.f2 = 55.5f; ts8_arg.f3 = -5.55f; ts8_arg.f4 = -55.5f; printf ("%g\n", ts8_arg.f1); printf ("%g\n", ts8_arg.f2); printf ("%g\n", ts8_arg.f3); printf ("%g\n", ts8_arg.f4); ffi_call(&cif, FFI_FN(struct8), ts8_result, values); printf ("%g\n", ts8_result->f1); printf ("%g\n", ts8_result->f2); printf ("%g\n", ts8_result->f3); printf ("%g\n", ts8_result->f4); CHECK(ts8_result->f1 == 5.55f + 1); CHECK(ts8_result->f2 == 55.5f + 1); CHECK(ts8_result->f3 == -5.55f + 1); CHECK(ts8_result->f4 == -55.5f + 1); free (ts8_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/huge_struct.c0000644000175000017500000003450113204034553022133 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check large structure returns. Limitations: none. PR: none. Originator: Blake Chaffin 6/18/2007 */ /* { dg-excess-errors "" { target x86_64-*-mingw* x86_64-*-cygwin* } } */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ /* { dg-options -Wformat=0 { target moxie*-*-elf } } */ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" typedef struct BigStruct{ uint8_t a; int8_t b; uint16_t c; int16_t d; uint32_t e; int32_t f; uint64_t g; int64_t h; float i; double j; long double k; char* l; uint8_t m; int8_t n; uint16_t o; int16_t p; uint32_t q; int32_t r; uint64_t s; int64_t t; float u; double v; long double w; char* x; uint8_t y; int8_t z; uint16_t aa; int16_t bb; uint32_t cc; int32_t dd; uint64_t ee; int64_t ff; float gg; double hh; long double ii; char* jj; uint8_t kk; int8_t ll; uint16_t mm; int16_t nn; uint32_t oo; int32_t pp; uint64_t qq; int64_t rr; float ss; double tt; long double uu; char* vv; uint8_t ww; int8_t xx; } BigStruct; BigStruct test_large_fn( uint8_t ui8_1, int8_t si8_1, uint16_t ui16_1, int16_t si16_1, uint32_t ui32_1, int32_t si32_1, uint64_t ui64_1, int64_t si64_1, float f_1, double d_1, long double ld_1, char* p_1, uint8_t ui8_2, int8_t si8_2, uint16_t ui16_2, int16_t si16_2, uint32_t ui32_2, int32_t si32_2, uint64_t ui64_2, int64_t si64_2, float f_2, double d_2, long double ld_2, char* p_2, uint8_t ui8_3, int8_t si8_3, uint16_t ui16_3, int16_t si16_3, uint32_t ui32_3, int32_t si32_3, uint64_t ui64_3, int64_t si64_3, float f_3, double d_3, long double ld_3, char* p_3, uint8_t ui8_4, int8_t si8_4, uint16_t ui16_4, int16_t si16_4, uint32_t ui32_4, int32_t si32_4, uint64_t ui64_4, int64_t si64_4, float f_4, double d_4, long double ld_4, char* p_4, uint8_t ui8_5, int8_t si8_5) { BigStruct retVal = { ui8_1 + 1, si8_1 + 1, ui16_1 + 1, si16_1 + 1, ui32_1 + 1, si32_1 + 1, ui64_1 + 1, si64_1 + 1, f_1 + 1, d_1 + 1, ld_1 + 1, (char*)((intptr_t)p_1 + 1), ui8_2 + 2, si8_2 + 2, ui16_2 + 2, si16_2 + 2, ui32_2 + 2, si32_2 + 2, ui64_2 + 2, si64_2 + 2, f_2 + 2, d_2 + 2, ld_2 + 2, (char*)((intptr_t)p_2 + 2), ui8_3 + 3, si8_3 + 3, ui16_3 + 3, si16_3 + 3, ui32_3 + 3, si32_3 + 3, ui64_3 + 3, si64_3 + 3, f_3 + 3, d_3 + 3, ld_3 + 3, (char*)((intptr_t)p_3 + 3), ui8_4 + 4, si8_4 + 4, ui16_4 + 4, si16_4 + 4, ui32_4 + 4, si32_4 + 4, ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), ui8_5 + 5, si8_5 + 5}; printf("%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 ": " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, (unsigned long)p_1, ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, (unsigned long)p_2, ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, (unsigned long)p_3, ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, (unsigned long)p_4, ui8_5, si8_5, retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); return retVal; } static void cls_large_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { uint8_t ui8_1 = *(uint8_t*)args[0]; int8_t si8_1 = *(int8_t*)args[1]; uint16_t ui16_1 = *(uint16_t*)args[2]; int16_t si16_1 = *(int16_t*)args[3]; uint32_t ui32_1 = *(uint32_t*)args[4]; int32_t si32_1 = *(int32_t*)args[5]; uint64_t ui64_1 = *(uint64_t*)args[6]; int64_t si64_1 = *(int64_t*)args[7]; float f_1 = *(float*)args[8]; double d_1 = *(double*)args[9]; long double ld_1 = *(long double*)args[10]; char* p_1 = *(char**)args[11]; uint8_t ui8_2 = *(uint8_t*)args[12]; int8_t si8_2 = *(int8_t*)args[13]; uint16_t ui16_2 = *(uint16_t*)args[14]; int16_t si16_2 = *(int16_t*)args[15]; uint32_t ui32_2 = *(uint32_t*)args[16]; int32_t si32_2 = *(int32_t*)args[17]; uint64_t ui64_2 = *(uint64_t*)args[18]; int64_t si64_2 = *(int64_t*)args[19]; float f_2 = *(float*)args[20]; double d_2 = *(double*)args[21]; long double ld_2 = *(long double*)args[22]; char* p_2 = *(char**)args[23]; uint8_t ui8_3 = *(uint8_t*)args[24]; int8_t si8_3 = *(int8_t*)args[25]; uint16_t ui16_3 = *(uint16_t*)args[26]; int16_t si16_3 = *(int16_t*)args[27]; uint32_t ui32_3 = *(uint32_t*)args[28]; int32_t si32_3 = *(int32_t*)args[29]; uint64_t ui64_3 = *(uint64_t*)args[30]; int64_t si64_3 = *(int64_t*)args[31]; float f_3 = *(float*)args[32]; double d_3 = *(double*)args[33]; long double ld_3 = *(long double*)args[34]; char* p_3 = *(char**)args[35]; uint8_t ui8_4 = *(uint8_t*)args[36]; int8_t si8_4 = *(int8_t*)args[37]; uint16_t ui16_4 = *(uint16_t*)args[38]; int16_t si16_4 = *(int16_t*)args[39]; uint32_t ui32_4 = *(uint32_t*)args[40]; int32_t si32_4 = *(int32_t*)args[41]; uint64_t ui64_4 = *(uint64_t*)args[42]; int64_t si64_4 = *(int64_t*)args[43]; float f_4 = *(float*)args[44]; double d_4 = *(double*)args[45]; long double ld_4 = *(long double*)args[46]; char* p_4 = *(char**)args[47]; uint8_t ui8_5 = *(uint8_t*)args[48]; int8_t si8_5 = *(int8_t*)args[49]; *(BigStruct*)resp = test_large_fn( ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, p_1, ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, p_2, ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, p_3, ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, p_4, ui8_5, si8_5); } int main(int argc __UNUSED__, const char** argv __UNUSED__) { void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_cif cif; ffi_type* argTypes[51]; void* argValues[51]; ffi_type ret_struct_type; ffi_type* st_fields[51]; BigStruct retVal; uint8_t ui8 = 1; int8_t si8 = 2; uint16_t ui16 = 3; int16_t si16 = 4; uint32_t ui32 = 5; int32_t si32 = 6; uint64_t ui64 = 7; int64_t si64 = 8; float f = 9; double d = 10; long double ld = 11; char* p = (char*)0x12345678; memset (&retVal, 0, sizeof(retVal)); ret_struct_type.size = 0; ret_struct_type.alignment = 0; ret_struct_type.type = FFI_TYPE_STRUCT; ret_struct_type.elements = st_fields; st_fields[0] = st_fields[12] = st_fields[24] = st_fields[36] = st_fields[48] = &ffi_type_uint8; st_fields[1] = st_fields[13] = st_fields[25] = st_fields[37] = st_fields[49] = &ffi_type_sint8; st_fields[2] = st_fields[14] = st_fields[26] = st_fields[38] = &ffi_type_uint16; st_fields[3] = st_fields[15] = st_fields[27] = st_fields[39] = &ffi_type_sint16; st_fields[4] = st_fields[16] = st_fields[28] = st_fields[40] = &ffi_type_uint32; st_fields[5] = st_fields[17] = st_fields[29] = st_fields[41] = &ffi_type_sint32; st_fields[6] = st_fields[18] = st_fields[30] = st_fields[42] = &ffi_type_uint64; st_fields[7] = st_fields[19] = st_fields[31] = st_fields[43] = &ffi_type_sint64; st_fields[8] = st_fields[20] = st_fields[32] = st_fields[44] = &ffi_type_float; st_fields[9] = st_fields[21] = st_fields[33] = st_fields[45] = &ffi_type_double; st_fields[10] = st_fields[22] = st_fields[34] = st_fields[46] = &ffi_type_longdouble; st_fields[11] = st_fields[23] = st_fields[35] = st_fields[47] = &ffi_type_pointer; st_fields[50] = NULL; argTypes[0] = argTypes[12] = argTypes[24] = argTypes[36] = argTypes[48] = &ffi_type_uint8; argValues[0] = argValues[12] = argValues[24] = argValues[36] = argValues[48] = &ui8; argTypes[1] = argTypes[13] = argTypes[25] = argTypes[37] = argTypes[49] = &ffi_type_sint8; argValues[1] = argValues[13] = argValues[25] = argValues[37] = argValues[49] = &si8; argTypes[2] = argTypes[14] = argTypes[26] = argTypes[38] = &ffi_type_uint16; argValues[2] = argValues[14] = argValues[26] = argValues[38] = &ui16; argTypes[3] = argTypes[15] = argTypes[27] = argTypes[39] = &ffi_type_sint16; argValues[3] = argValues[15] = argValues[27] = argValues[39] = &si16; argTypes[4] = argTypes[16] = argTypes[28] = argTypes[40] = &ffi_type_uint32; argValues[4] = argValues[16] = argValues[28] = argValues[40] = &ui32; argTypes[5] = argTypes[17] = argTypes[29] = argTypes[41] = &ffi_type_sint32; argValues[5] = argValues[17] = argValues[29] = argValues[41] = &si32; argTypes[6] = argTypes[18] = argTypes[30] = argTypes[42] = &ffi_type_uint64; argValues[6] = argValues[18] = argValues[30] = argValues[42] = &ui64; argTypes[7] = argTypes[19] = argTypes[31] = argTypes[43] = &ffi_type_sint64; argValues[7] = argValues[19] = argValues[31] = argValues[43] = &si64; argTypes[8] = argTypes[20] = argTypes[32] = argTypes[44] = &ffi_type_float; argValues[8] = argValues[20] = argValues[32] = argValues[44] = &f; argTypes[9] = argTypes[21] = argTypes[33] = argTypes[45] = &ffi_type_double; argValues[9] = argValues[21] = argValues[33] = argValues[45] = &d; argTypes[10] = argTypes[22] = argTypes[34] = argTypes[46] = &ffi_type_longdouble; argValues[10] = argValues[22] = argValues[34] = argValues[46] = &ld; argTypes[11] = argTypes[23] = argTypes[35] = argTypes[47] = &ffi_type_pointer; argValues[11] = argValues[23] = argValues[35] = argValues[47] = &p; argTypes[50] = NULL; argValues[50] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 50, &ret_struct_type, argTypes) == FFI_OK); ffi_call(&cif, FFI_FN(test_large_fn), &retVal, argValues); /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); /* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK); retVal = ((BigStruct(*)( uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*, uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*, uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*, uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*, uint8_t, int8_t))(code))( ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p, ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p, ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p, ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p, ui8, si8); /* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); /* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct1.c0000644000175000017500000001165313204034553022551 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_16byte1 { double a; float b; int c; } cls_struct_16byte1; typedef struct cls_struct_16byte2 { int ii; double dd; float ff; } cls_struct_16byte2; typedef struct cls_struct_combined { cls_struct_16byte1 d; cls_struct_16byte2 e; } cls_struct_combined; cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, struct cls_struct_16byte2 b1, struct cls_struct_combined b2, struct cls_struct_16byte1 b3) { struct cls_struct_combined result; result.d.a = b0.a + b1.dd + b2.d.a; result.d.b = b0.b + b1.ff + b2.d.b; result.d.c = b0.c + b1.ii + b2.d.c; result.e.ii = b0.c + b1.ii + b2.e.ii; result.e.dd = b0.a + b1.dd + b2.e.dd; result.e.ff = b0.b + b1.ff + b2.e.ff; printf("%g %g %d %d %g %g %g %g %d %d %g %g %g %g %d: %g %g %d %d %g %g\n", b0.a, b0.b, b0.c, b1.ii, b1.dd, b1.ff, b2.d.a, b2.d.b, b2.d.c, b2.e.ii, b2.e.dd, b2.e.ff, b3.a, b3.b, b3.c, result.d.a, result.d.b, result.d.c, result.e.ii, result.e.dd, result.e.ff); return result; } static void cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_16byte1 b0; struct cls_struct_16byte2 b1; struct cls_struct_combined b2; struct cls_struct_16byte1 b3; b0 = *(struct cls_struct_16byte1*)(args[0]); b1 = *(struct cls_struct_16byte2*)(args[1]); b2 = *(struct cls_struct_combined*)(args[2]); b3 = *(struct cls_struct_16byte1*)(args[3]); *(cls_struct_combined*)resp = cls_struct_combined_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type* cls_struct_fields1[5]; ffi_type* cls_struct_fields2[5]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[5]; struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, {3, 1.0, 8.0}}; struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4}; struct cls_struct_combined res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_float; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = NULL; cls_struct_fields1[0] = &ffi_type_sint; cls_struct_fields1[1] = &ffi_type_double; cls_struct_fields1[2] = &ffi_type_float; cls_struct_fields1[3] = NULL; cls_struct_fields2[0] = &cls_struct_type; cls_struct_fields2[1] = &cls_struct_type1; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type2, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_combined_fn), &res_dbl, args_dbl); /* { dg-output "9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */ CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_combined(*)(cls_struct_16byte1, cls_struct_16byte2, cls_struct_combined, cls_struct_16byte1)) (code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */ CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); /* CHECK( 1 == 0); */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_double.c0000644000175000017500000000207113204034553021707 0ustar daviddavid/* Area: closure_call Purpose: Check return value double. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(double *)resp = *(double *)args[0]; printf("%f: %f\n",*(double *)args[0], *(double *)resp); } typedef double (*cls_ret_double)(double); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; double res; cl_arg_types[0] = &ffi_type_double; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_double, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_double_fn, NULL, code) == FFI_OK); res = (*((cls_ret_double)code))(21474.789); /* { dg-output "21474.789000: 21474.789000" } */ printf("res: %.6f\n", res); /* { dg-output "\nres: 21474.789000" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_sint64.c0000644000175000017500000000511113204034553022734 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of sint64. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; signed long long b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_sint64; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/err_bad_typedef.c0000644000175000017500000000066313204034553022717 0ustar daviddavid/* Area: ffi_prep_cif Purpose: Test error return for bad typedefs. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run } */ #include "ffitest.h" int main (void) { ffi_cif cif; ffi_type* arg_types[1]; ffi_type badType = ffi_type_void; arg_types[0] = NULL; badType.size = 0; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType, arg_types) == FFI_BAD_TYPEDEF); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/float4.c0000644000175000017500000000241213204034553020764 0ustar daviddavid/* Area: ffi_call Purpose: Check denorm double value. Limitations: none. PR: PR26483. Originator: From the original ffitest.c */ /* { dg-do run } */ /* { dg-options "-mieee" { target alpha*-*-* } } */ #include "ffitest.h" #include "float.h" typedef union { double d; unsigned char c[sizeof (double)]; } value_type; #define CANARY 0xba static double dblit(double d) { return d; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; double d; value_type result[2]; unsigned int i; args[0] = &ffi_type_double; values[0] = &d; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_double, args) == FFI_OK); d = DBL_MIN / 2; /* Put a canary in the return array. This is a regression test for a buffer overrun. */ memset(result[1].c, CANARY, sizeof (double)); ffi_call(&cif, FFI_FN(dblit), &result[0].d, values); /* The standard delta check doesn't work for denorms. Since we didn't do any arithmetic, we should get the original result back, and hence an exact check should be OK here. */ CHECK(result[0].d == dblit(d)); /* Check the canary. */ for (i = 0; i < sizeof (double); ++i) CHECK(result[1].c[i] == CANARY); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/va_struct3.c0000644000175000017500000000447213204034553021700 0ustar daviddavid/* Area: ffi_call Purpose: Test passing struct in variable argument lists. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ /* { dg-output "" { xfail avr32*-*-* } } */ #include "ffitest.h" #include struct small_tag { unsigned char a; unsigned char b; }; struct large_tag { unsigned a; unsigned b; unsigned c; unsigned d; unsigned e; }; static struct large_tag test_fn (int n, ...) { va_list ap; struct small_tag s1; struct small_tag s2; struct large_tag l; va_start (ap, n); s1 = va_arg (ap, struct small_tag); l = va_arg (ap, struct large_tag); s2 = va_arg (ap, struct small_tag); printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, s2.a, s2.b); va_end (ap); l.a += s1.a; l.b += s1.b; l.c += s2.a; l.d += s2.b; return l; } int main (void) { ffi_cif cif; void* args[5]; ffi_type* arg_types[5]; ffi_type s_type; ffi_type *s_type_elements[3]; ffi_type l_type; ffi_type *l_type_elements[6]; struct small_tag s1; struct small_tag s2; struct large_tag l1; int n; struct large_tag res; s_type.size = 0; s_type.alignment = 0; s_type.type = FFI_TYPE_STRUCT; s_type.elements = s_type_elements; s_type_elements[0] = &ffi_type_uchar; s_type_elements[1] = &ffi_type_uchar; s_type_elements[2] = NULL; l_type.size = 0; l_type.alignment = 0; l_type.type = FFI_TYPE_STRUCT; l_type.elements = l_type_elements; l_type_elements[0] = &ffi_type_uint; l_type_elements[1] = &ffi_type_uint; l_type_elements[2] = &ffi_type_uint; l_type_elements[3] = &ffi_type_uint; l_type_elements[4] = &ffi_type_uint; l_type_elements[5] = NULL; arg_types[0] = &ffi_type_sint; arg_types[1] = &s_type; arg_types[2] = &l_type; arg_types[3] = &s_type; arg_types[4] = NULL; CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &l_type, arg_types) == FFI_OK); s1.a = 5; s1.b = 6; l1.a = 10; l1.b = 11; l1.c = 12; l1.d = 13; l1.e = 14; s2.a = 7; s2.b = 8; n = 41; args[0] = &n; args[1] = &s1; args[2] = &l1; args[3] = &s2; args[4] = NULL; ffi_call(&cif, FFI_FN(test_fn), &res, args); /* { dg-output "5 6 10 11 12 13 14 7 8" } */ printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e); /* { dg-output "\nres: 15 17 19 21 14" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/return_dbl1.c0000644000175000017500000000175413204034553022024 0ustar daviddavid/* Area: ffi_call Purpose: Check return value double. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static double return_dbl(double dbl1, float fl2, unsigned int in3, double dbl4) { return dbl1 + fl2 + in3 + dbl4; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; double dbl1, dbl4, rdbl; float fl2; unsigned int in3; args[0] = &ffi_type_double; args[1] = &ffi_type_float; args[2] = &ffi_type_uint; args[3] = &ffi_type_double; values[0] = &dbl1; values[1] = &fl2; values[2] = &in3; values[3] = &dbl4; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_double, args) == FFI_OK); dbl1 = 127.0; fl2 = 128.0; in3 = 255; dbl4 = 512.7; ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); printf ("%f vs %f\n", rdbl, return_dbl(dbl1, fl2, in3, dbl4)); CHECK(rdbl == dbl1 + fl2 + in3 + dbl4); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_9byte2.c0000644000175000017500000000461413204034553021560 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Darwin/AIX do double-word alignment of the struct if the first element is a double. Check that it does here. Limitations: none. PR: none. Originator: 20030914 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_9byte { double a; int b; } cls_struct_9byte; cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, struct cls_struct_9byte b2) { struct cls_struct_9byte result; result.a = b1.a + b2.a; result.b = b1.b + b2.b; printf("%g %d %g %d: %g %d\n", b1.a, b1.b, b2.a, b2.b, result.a, result.b); return result; } static void cls_struct_9byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_9byte b1, b2; b1 = *(struct cls_struct_9byte*)(args[0]); b2 = *(struct cls_struct_9byte*)(args[1]); *(cls_struct_9byte*)resp = cls_struct_9byte_fn(b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_9byte h_dbl = { 7.0, 8}; struct cls_struct_9byte j_dbl = { 1.0, 9}; struct cls_struct_9byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_sint; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &h_dbl; args_dbl[1] = &j_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_9byte_fn), &res_dbl, args_dbl); /* { dg-output "7 8 1 9: 8 17" } */ printf("res: %g %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 8 17" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_9byte(*)(cls_struct_9byte, cls_struct_9byte))(code))(h_dbl, j_dbl); /* { dg-output "\n7 8 1 9: 8 17" } */ printf("res: %g %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 8 17" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_3byte2.c0000644000175000017500000000467313204034553021557 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_3byte_1 { unsigned char a; unsigned short b; } cls_struct_3byte_1; cls_struct_3byte_1 cls_struct_3byte_fn1(struct cls_struct_3byte_1 a1, struct cls_struct_3byte_1 a2) { struct cls_struct_3byte_1 result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); return result; } static void cls_struct_3byte_gn1(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_3byte_1 a1, a2; a1 = *(struct cls_struct_3byte_1*)(args[0]); a2 = *(struct cls_struct_3byte_1*)(args[1]); *(cls_struct_3byte_1*)resp = cls_struct_3byte_fn1(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_3byte_1 g_dbl = { 15, 125 }; struct cls_struct_3byte_1 f_dbl = { 9, 19 }; struct cls_struct_3byte_1 res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_3byte_fn1), &res_dbl, args_dbl); /* { dg-output "15 125 9 19: 24 144" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 24 144" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn1, NULL, code) == FFI_OK); res_dbl = ((cls_struct_3byte_1(*)(cls_struct_3byte_1, cls_struct_3byte_1))(code))(g_dbl, f_dbl); /* { dg-output "\n15 125 9 19: 24 144" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 24 144" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_fl2.c0000644000175000017500000000211313204034553021653 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" /* Use volatile float to avoid false negative on ix86. See PR target/323. */ static float return_fl(float fl1, float fl2, float fl3, float fl4) { volatile float sum; sum = fl1 + fl2 + fl3 + fl4; return sum; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float fl1, fl2, fl3, fl4, rfl; volatile float sum; args[0] = &ffi_type_float; args[1] = &ffi_type_float; args[2] = &ffi_type_float; args[3] = &ffi_type_float; values[0] = &fl1; values[1] = &fl2; values[2] = &fl3; values[3] = &fl4; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_float, args) == FFI_OK); fl1 = 127.0; fl2 = 128.0; fl3 = 255.1; fl4 = 512.7; ffi_call(&cif, FFI_FN(return_fl), &rfl, values); printf ("%f vs %f\n", rfl, return_fl(fl1, fl2, fl3, fl4)); sum = fl1 + fl2 + fl3 + fl4; CHECK(rfl == sum); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_7_1_byte.c0000644000175000017500000000651613204034553022056 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20050708 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_7byte { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; unsigned char f; unsigned char g; } cls_struct_7byte; cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, struct cls_struct_7byte a2) { struct cls_struct_7byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; result.e = a1.e + a2.e; result.f = a1.f + a2.f; result.g = a1.g + a2.g; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, result.a, result.b, result.c, result.d, result.e, result.f, result.g); return result; } static void cls_struct_7byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_7byte a1, a2; a1 = *(struct cls_struct_7byte*)(args[0]); a2 = *(struct cls_struct_7byte*)(args[1]); *(cls_struct_7byte*)resp = cls_struct_7byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[8]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 }; struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 }; struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 }; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_uchar; cls_struct_fields[4] = &ffi_type_uchar; cls_struct_fields[5] = &ffi_type_uchar; cls_struct_fields[6] = &ffi_type_uchar; cls_struct_fields[7] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_7byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 3 4 5 6 12 128 9 3 4 5 6: 139 248 10 6 8 10 12" } */ printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ res_dbl.a = 0; res_dbl.b = 0; res_dbl.c = 0; res_dbl.d = 0; res_dbl.e = 0; res_dbl.f = 0; res_dbl.g = 0; CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_7byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_7byte(*)(cls_struct_7byte, cls_struct_7byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 3 4 5 6 12 128 9 3 4 5 6: 139 248 10 6 8 10 12" } */ printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/call.exp0000644000175000017500000000226313204034553021064 0ustar daviddavid# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING3. If not see # . dg-init libffi-init global srcdir subdir set tlist [lsearch -inline -all -not -glob [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] *complex*] set ctlist [lsearch -inline -all -glob [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] *complex*] run-many-tests $tlist "" if { ![istarget s390*] } { foreach test $ctlist { unsupported "$test" } } else { run-many-tests $ctlist "" } dg-finish # Local Variables: # tcl-indent-level:4 # End: polyml-5.7.1/libffi/testsuite/libffi.call/return_dbl.c0000644000175000017500000000135713204034553021742 0ustar daviddavid/* Area: ffi_call Purpose: Check return value double. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static double return_dbl(double dbl) { printf ("%f\n", dbl); return 2 * dbl; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; double dbl, rdbl; args[0] = &ffi_type_double; values[0] = &dbl; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_double, args) == FFI_OK); for (dbl = -127.3; dbl < 127; dbl++) { ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); printf ("%f vs %f\n", rdbl, return_dbl(dbl)); CHECK(rdbl == 2 * dbl); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_1_1byte.c0000644000175000017500000000437713204034553021714 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Limitations: none. PR: none. Originator: 20030902 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_1_1byte { unsigned char a; } cls_struct_1_1byte; cls_struct_1_1byte cls_struct_1_1byte_fn(struct cls_struct_1_1byte a1, struct cls_struct_1_1byte a2) { struct cls_struct_1_1byte result; result.a = a1.a + a2.a; printf("%d %d: %d\n", a1.a, a2.a, result.a); return result; } static void cls_struct_1_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_1_1byte a1, a2; a1 = *(struct cls_struct_1_1byte*)(args[0]); a2 = *(struct cls_struct_1_1byte*)(args[1]); *(cls_struct_1_1byte*)resp = cls_struct_1_1byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[2]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_1_1byte g_dbl = { 12 }; struct cls_struct_1_1byte f_dbl = { 178 }; struct cls_struct_1_1byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_1_1byte_fn), &res_dbl, args_dbl); /* { dg-output "12 178: 190" } */ printf("res: %d\n", res_dbl.a); /* { dg-output "\nres: 190" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_1_1byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_1_1byte(*)(cls_struct_1_1byte, cls_struct_1_1byte))(code))(g_dbl, f_dbl); /* { dg-output "\n12 178: 190" } */ printf("res: %d\n", res_dbl.a); /* { dg-output "\nres: 190" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_pointer_stack.c0000644000175000017500000001021513204034553023301 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check pointer arguments across multiple hideous stack frames. Limitations: none. PR: none. Originator: Blake Chaffin 6/7/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ #include "ffitest.h" static long dummyVar; long dummy_func( long double a1, char b1, long double a2, char b2, long double a3, char b3, long double a4, char b4) { return a1 + b1 + a2 + b2 + a3 + b3 + a4 + b4; } void* cls_pointer_fn2(void* a1, void* a2) { long double trample1 = (intptr_t)a1 + (intptr_t)a2; char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; long double trample3 = (intptr_t)trample1 + (intptr_t)a1; char trample4 = trample2 + ((char*)&a1)[1]; long double trample5 = (intptr_t)trample3 + (intptr_t)a2; char trample6 = trample4 + ((char*)&a2)[1]; long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; char trample8 = trample6 + trample2; void* result; dummyVar = dummy_func(trample1, trample2, trample3, trample4, trample5, trample6, trample7, trample8); result = (void*)((intptr_t)a1 + (intptr_t)a2); printf("0x%08x 0x%08x: 0x%08x\n", (unsigned int)(uintptr_t) a1, (unsigned int)(uintptr_t) a2, (unsigned int)(uintptr_t) result); return result; } void* cls_pointer_fn1(void* a1, void* a2) { long double trample1 = (intptr_t)a1 + (intptr_t)a2; char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; long double trample3 = (intptr_t)trample1 + (intptr_t)a1; char trample4 = trample2 + ((char*)&a1)[1]; long double trample5 = (intptr_t)trample3 + (intptr_t)a2; char trample6 = trample4 + ((char*)&a2)[1]; long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; char trample8 = trample6 + trample2; void* result; dummyVar = dummy_func(trample1, trample2, trample3, trample4, trample5, trample6, trample7, trample8); result = (void*)((intptr_t)a1 + (intptr_t)a2); printf("0x%08x 0x%08x: 0x%08x\n", (unsigned int)(intptr_t) a1, (unsigned int)(intptr_t) a2, (unsigned int)(intptr_t) result); result = cls_pointer_fn2(result, a1); return result; } static void cls_pointer_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { void* a1 = *(void**)(args[0]); void* a2 = *(void**)(args[1]); long double trample1 = (intptr_t)a1 + (intptr_t)a2; char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; long double trample3 = (intptr_t)trample1 + (intptr_t)a1; char trample4 = trample2 + ((char*)&a1)[1]; long double trample5 = (intptr_t)trample3 + (intptr_t)a2; char trample6 = trample4 + ((char*)&a2)[1]; long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; char trample8 = trample6 + trample2; dummyVar = dummy_func(trample1, trample2, trample3, trample4, trample5, trample6, trample7, trample8); *(void**)resp = cls_pointer_fn1(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[3]; /* ffi_type cls_pointer_type; */ ffi_type* arg_types[3]; /* cls_pointer_type.size = sizeof(void*); cls_pointer_type.alignment = 0; cls_pointer_type.type = FFI_TYPE_POINTER; cls_pointer_type.elements = NULL;*/ void* arg1 = (void*)0x01234567; void* arg2 = (void*)0x89abcdef; ffi_arg res = 0; arg_types[0] = &ffi_type_pointer; arg_types[1] = &ffi_type_pointer; arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_pointer, arg_types) == FFI_OK); args[0] = &arg1; args[1] = &arg2; args[2] = NULL; printf("\n"); ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args); printf("res: 0x%08x\n", (unsigned int) res); /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ /* { dg-output "\nres: 0x8bf258bd" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); printf("res: 0x%08x\n", (unsigned int) res); /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ /* { dg-output "\nres: 0x8bf258bd" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_double_va.c0000644000175000017500000000275513204034553022406 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Test doubles passed in variable argument lists. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-output "" { xfail avr32*-*-* } } */ /* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ #include "ffitest.h" static void cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { char* format = *(char**)args[0]; double doubleValue = *(double*)args[1]; *(ffi_arg*)resp = printf(format, doubleValue); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[3]; ffi_type* arg_types[3]; char* format = "%.1f\n"; double doubleArg = 7; ffi_arg res = 0; arg_types[0] = &ffi_type_pointer; arg_types[1] = &ffi_type_double; arg_types[2] = NULL; /* This printf call is variadic */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, arg_types) == FFI_OK); args[0] = &format; args[1] = &doubleArg; args[2] = NULL; ffi_call(&cif, FFI_FN(printf), &res, args); /* { dg-output "7.0" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 4" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, code) == FFI_OK); res = ((int(*)(char*, ...))(code))(format, doubleArg); /* { dg-output "\n7.0" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 4" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_sint32.c0000644000175000017500000000472613204034553022742 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of sint32. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; signed int b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_sint; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_uint32.c0000644000175000017500000000473013204034553022737 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of uint32. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; unsigned int b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uint; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_thiscall.c0000644000175000017500000000364613204034553023144 0ustar daviddavid/* Area: closure_call (thiscall convention) Purpose: Check handling when caller expects thiscall callee Limitations: none. PR: none. Originator: */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static void closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(int *)args[0] + (int)(*(int *)args[1]) + (int)(*(int *)args[2]) + (int)(*(int *)args[3]) + (int)(intptr_t)userdata; printf("%d %d %d %d: %d\n", (int)*(int *)args[0], (int)(*(int *)args[1]), (int)(*(int *)args[2]), (int)(*(int *)args[3]), (int)*(ffi_arg *)resp); } typedef int (__thiscall *closure_test_type0)(int, int, int, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; void* sp_pre; void* sp_post; char buf[1024]; cl_arg_types[0] = &ffi_type_uint; cl_arg_types[1] = &ffi_type_uint; cl_arg_types[2] = &ffi_type_uint; cl_arg_types[3] = &ffi_type_uint; cl_arg_types[4] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall, (void *) 3 /* userdata */, code) == FFI_OK); #ifdef _MSC_VER __asm { mov sp_pre, esp } #else asm volatile (" movl %%esp,%0" : "=g" (sp_pre)); #endif res = (*(closure_test_type0)code)(0, 1, 2, 3); #ifdef _MSC_VER __asm { mov sp_post, esp } #else asm volatile (" movl %%esp,%0" : "=g" (sp_post)); #endif /* { dg-output "0 1 2 3: 9" } */ printf("res: %d\n",res); /* { dg-output "\nres: 9" } */ sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post); printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf)); /* { dg-output "\nstack pointer match" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_ushortchar.c0000644000175000017500000000403613204034553024034 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple unsigned short/char values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" unsigned short test_func_fn(unsigned char a1, unsigned short a2, unsigned char a3, unsigned short a4) { unsigned short result; result = a1 + a2 + a3 + a4; printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { unsigned char a1, a3; unsigned short a2, a4; a1 = *(unsigned char *)avals[0]; a2 = *(unsigned short *)avals[1]; a3 = *(unsigned char *)avals[2]; a4 = *(unsigned short *)avals[3]; *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); } typedef unsigned short (*test_type)(unsigned char, unsigned short, unsigned char, unsigned short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[5]; ffi_type * cl_arg_types[5]; ffi_arg res_call; unsigned char a, c; unsigned short b, d, res_closure; a = 1; b = 2; c = 127; d = 128; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = &c; args_dbl[3] = &d; args_dbl[4] = NULL; cl_arg_types[0] = &ffi_type_uchar; cl_arg_types[1] = &ffi_type_ushort; cl_arg_types[2] = &ffi_type_uchar; cl_arg_types[3] = &ffi_type_ushort; cl_arg_types[4] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_ushort, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "1 2 127 128: 258" } */ printf("res: %d\n", (unsigned short)res_call); /* { dg-output "\nres: 258" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(1, 2, 127, 128); /* { dg-output "\n1 2 127 128: 258" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 258" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/pyobjc-tc.c0000644000175000017500000000460613204034553021474 0ustar daviddavid/* Area: ffi_call Purpose: Check different structures. Limitations: none. PR: none. Originator: Ronald Oussoren 20030824 */ /* { dg-do run } */ #include "ffitest.h" typedef struct Point { float x; float y; } Point; typedef struct Size { float h; float w; } Size; typedef struct Rect { Point o; Size s; } Rect; int doit(int o, char* s, Point p, Rect r, int last) { printf("CALLED WITH %d %s {%f %f} {{%f %f} {%f %f}} %d\n", o, s, p.x, p.y, r.o.x, r.o.y, r.s.h, r.s.w, last); return 42; } int main(void) { ffi_type point_type; ffi_type size_type; ffi_type rect_type; ffi_cif cif; ffi_type* arglist[6]; void* values[6]; int r; /* * First set up FFI types for the 3 struct types */ point_type.size = 0; /*sizeof(Point);*/ point_type.alignment = 0; /*__alignof__(Point);*/ point_type.type = FFI_TYPE_STRUCT; point_type.elements = malloc(3 * sizeof(ffi_type*)); point_type.elements[0] = &ffi_type_float; point_type.elements[1] = &ffi_type_float; point_type.elements[2] = NULL; size_type.size = 0;/* sizeof(Size);*/ size_type.alignment = 0;/* __alignof__(Size);*/ size_type.type = FFI_TYPE_STRUCT; size_type.elements = malloc(3 * sizeof(ffi_type*)); size_type.elements[0] = &ffi_type_float; size_type.elements[1] = &ffi_type_float; size_type.elements[2] = NULL; rect_type.size = 0;/*sizeof(Rect);*/ rect_type.alignment =0;/* __alignof__(Rect);*/ rect_type.type = FFI_TYPE_STRUCT; rect_type.elements = malloc(3 * sizeof(ffi_type*)); rect_type.elements[0] = &point_type; rect_type.elements[1] = &size_type; rect_type.elements[2] = NULL; /* * Create a CIF */ arglist[0] = &ffi_type_sint; arglist[1] = &ffi_type_pointer; arglist[2] = &point_type; arglist[3] = &rect_type; arglist[4] = &ffi_type_sint; arglist[5] = NULL; r = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 5, &ffi_type_sint, arglist); if (r != FFI_OK) { abort(); } /* And call the function through the CIF */ { Point p = { 1.0, 2.0 }; Rect r = { { 9.0, 10.0}, { -1.0, -2.0 } }; int o = 0; int l = 42; char* m = "myMethod"; ffi_arg result; values[0] = &o; values[1] = &m; values[2] = &p; values[3] = &r; values[4] = &l; values[5] = NULL; printf("CALLING WITH %d %s {%f %f} {{%f %f} {%f %f}} %d\n", o, m, p.x, p.y, r.o.x, r.o.y, r.s.h, r.s.w, l); ffi_call(&cif, FFI_FN(doit), &result, values); printf ("The result is %d\n", (int)result); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/float.c0000644000175000017500000000207413204034553020704 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static int floating(int a, float b, double c, long double d) { int i; i = (int) ((float)a/b + ((float)c/(float)d)); return i; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; float f; signed int si1; double d; long double ld; args[0] = &ffi_type_sint; values[0] = &si1; args[1] = &ffi_type_float; values[1] = &f; args[2] = &ffi_type_double; values[2] = &d; args[3] = &ffi_type_longdouble; values[3] = &ld; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_sint, args) == FFI_OK); si1 = 6; f = 3.14159; d = (double)1.0/(double)3.0; ld = 2.71828182846L; floating (si1, f, d, ld); ffi_call(&cif, FFI_FN(floating), &rint, values); printf ("%d vs %d\n", (int)rint, floating (si1, f, d, ld)); CHECK((int)rint == floating(si1, f, d, ld)); exit (0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_ulong_va.c0000644000175000017500000000205213204034553022246 0ustar daviddavid/* Area: closure_call Purpose: Test anonymous unsigned long argument. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ #include "ffitest.h" typedef unsigned long T; static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(T *)resp = *(T *)args[0]; printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]); } typedef T (*cls_ret_T)(T, ...); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[3]; T res; cl_arg_types[0] = &ffi_type_ulong; cl_arg_types[1] = &ffi_type_ulong; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_ulong, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); res = ((((cls_ret_T)code)(67, 4))); /* { dg-output "67: 67 4" } */ printf("res: %ld\n", res); /* { dg-output "\nres: 67" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_schar.c0000644000175000017500000000205313204034553021535 0ustar daviddavid/* Area: closure_call Purpose: Check return value schar. Limitations: none. PR: none. Originator: 20031108 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = *(signed char *)args[0]; printf("%d: %d\n",*(signed char *)args[0], (int)*(ffi_arg *)(resp)); } typedef signed char (*cls_ret_schar)(signed char); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; signed char res; cl_arg_types[0] = &ffi_type_schar; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_schar, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_schar_fn, NULL, code) == FFI_OK); res = (*((cls_ret_schar)code))(127); /* { dg-output "127: 127" } */ printf("res: %d\n", res); /* { dg-output "\nres: 127" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_fl.c0000644000175000017500000000130213204034553021570 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static float return_fl(float fl) { return 2 * fl; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float fl, rfl; args[0] = &ffi_type_float; values[0] = &fl; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_float, args) == FFI_OK); for (fl = -127.0; fl < 127; fl++) { ffi_call(&cif, FFI_FN(return_fl), &rfl, values); printf ("%f vs %f\n", rfl, return_fl(fl)); CHECK(rfl == 2 * fl); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct11.c0000644000175000017500000000566013204034553022633 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check parameter passing with nested structs of a single type. This tests the special cases for homogeneous floating-point aggregates in the AArch64 PCS. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { float a_x; float a_y; } A; typedef struct B { float b_x; float b_y; } B; typedef struct C { A a; B b; } C; static C C_fn (int x, int y, int z, C source, int i, int j, int k) { C result; result.a.a_x = source.a.a_x; result.a.a_y = source.a.a_y; result.b.b_x = source.b.b_x; result.b.b_y = source.b.b_y; printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k); printf ("%.1f, %.1f, %.1f, %.1f, " "%.1f, %.1f, %.1f, %.1f\n", source.a.a_x, source.a.a_y, source.b.b_x, source.b.b_y, result.a.a_x, result.a.a_y, result.b.b_x, result.b.b_y); return result; } int main (void) { ffi_cif cif; ffi_type* struct_fields_source_a[3]; ffi_type* struct_fields_source_b[3]; ffi_type* struct_fields_source_c[3]; ffi_type* arg_types[8]; ffi_type struct_type_a, struct_type_b, struct_type_c; struct A source_fld_a = {1.0, 2.0}; struct B source_fld_b = {4.0, 8.0}; int k = 1; struct C result; struct C source = {source_fld_a, source_fld_b}; struct_type_a.size = 0; struct_type_a.alignment = 0; struct_type_a.type = FFI_TYPE_STRUCT; struct_type_a.elements = struct_fields_source_a; struct_type_b.size = 0; struct_type_b.alignment = 0; struct_type_b.type = FFI_TYPE_STRUCT; struct_type_b.elements = struct_fields_source_b; struct_type_c.size = 0; struct_type_c.alignment = 0; struct_type_c.type = FFI_TYPE_STRUCT; struct_type_c.elements = struct_fields_source_c; struct_fields_source_a[0] = &ffi_type_float; struct_fields_source_a[1] = &ffi_type_float; struct_fields_source_a[2] = NULL; struct_fields_source_b[0] = &ffi_type_float; struct_fields_source_b[1] = &ffi_type_float; struct_fields_source_b[2] = NULL; struct_fields_source_c[0] = &struct_type_a; struct_fields_source_c[1] = &struct_type_b; struct_fields_source_c[2] = NULL; arg_types[0] = &ffi_type_sint32; arg_types[1] = &ffi_type_sint32; arg_types[2] = &ffi_type_sint32; arg_types[3] = &struct_type_c; arg_types[4] = &ffi_type_sint32; arg_types[5] = &ffi_type_sint32; arg_types[6] = &ffi_type_sint32; arg_types[7] = NULL; void *args[7]; args[0] = &k; args[1] = &k; args[2] = &k; args[3] = &source; args[4] = &k; args[5] = &k; args[6] = &k; CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, 7, &struct_type_c, arg_types) == FFI_OK); ffi_call (&cif, FFI_FN (C_fn), &result, args); /* { dg-output "1, 1, 1, 1, 1, 1\n" } */ /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */ CHECK (result.a.a_x == source.a.a_x); CHECK (result.a.a_y == source.a.a_y); CHECK (result.b.b_x == source.b.b_x); CHECK (result.b.b_y == source.b.b_y); exit (0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_uint64.c0000644000175000017500000000511413204034553022741 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of uint64. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; unsigned long long b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uint64; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_7byte.c0000644000175000017500000000532013204034553021467 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_7byte { unsigned short a; unsigned short b; unsigned char c; unsigned short d; } cls_struct_7byte; cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, struct cls_struct_7byte a2) { struct cls_struct_7byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a2.a, a2.b, a2.c, a2.d, result.a, result.b, result.c, result.d); return result; } static void cls_struct_7byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_7byte a1, a2; a1 = *(struct cls_struct_7byte*)(args[0]); a2 = *(struct cls_struct_7byte*)(args[1]); *(cls_struct_7byte*)resp = cls_struct_7byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 }; struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 }; struct cls_struct_7byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_ushort; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_ushort; cls_struct_fields[4] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_7byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 254 12 128 9 255: 139 248 10 509" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 139 248 10 509" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_7byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_7byte(*)(cls_struct_7byte, cls_struct_7byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 254 12 128 9 255: 139 248 10 509" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 139 248 10 509" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/ffitest.h0000644000175000017500000000546713204034553021261 0ustar daviddavid#include #include #include #include #include #include "fficonfig.h" #if defined HAVE_STDINT_H #include #endif #if defined HAVE_INTTYPES_H #include #endif #define MAX_ARGS 256 #define CHECK(x) (void)(!(x) ? (abort(), 1) : 0) /* Define macros so that compilers other than gcc can run the tests. */ #undef __UNUSED__ #if defined(__GNUC__) #define __UNUSED__ __attribute__((__unused__)) #define __STDCALL__ __attribute__((stdcall)) #define __THISCALL__ __attribute__((thiscall)) #define __FASTCALL__ __attribute__((fastcall)) #else #define __UNUSED__ #define __STDCALL__ __stdcall #define __THISCALL__ __thiscall #define __FASTCALL__ __fastcall #endif #ifndef ABI_NUM #define ABI_NUM FFI_DEFAULT_ABI #define ABI_ATTR #endif /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a file open. */ #ifdef HAVE_MMAP_ANON # undef HAVE_MMAP_DEV_ZERO # include # ifndef MAP_FAILED # define MAP_FAILED -1 # endif # if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) # define MAP_ANONYMOUS MAP_ANON # endif # define USING_MMAP #endif #ifdef HAVE_MMAP_DEV_ZERO # include # ifndef MAP_FAILED # define MAP_FAILED -1 # endif # define USING_MMAP #endif /* MinGW kludge. */ #ifdef _WIN64 #define PRIdLL "I64d" #define PRIuLL "I64u" #else #define PRIdLL "lld" #define PRIuLL "llu" #endif /* Tru64 UNIX kludge. */ #if defined(__alpha__) && defined(__osf__) /* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */ #undef PRIdLL #define PRIdLL "ld" #undef PRIuLL #define PRIuLL "lu" #define PRId8 "hd" #define PRIu8 "hu" #define PRId64 "ld" #define PRIu64 "lu" #define PRIuPTR "lu" #endif /* PA HP-UX kludge. */ #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) #define PRIuPTR "lu" #endif /* IRIX kludge. */ #if defined(__sgi) /* IRIX 6.5 provides all definitions, but only for C99 compilations. */ #define PRId8 "hhd" #define PRIu8 "hhu" #if (_MIPS_SZLONG == 32) #define PRId64 "lld" #define PRIu64 "llu" #endif /* This doesn't match , which always has "lld" here, but the arguments are uint64_t, int64_t, which are unsigned long, long for 64-bit in . */ #if (_MIPS_SZLONG == 64) #define PRId64 "ld" #define PRIu64 "lu" #endif /* This doesn't match , which has "u" here, but the arguments are uintptr_t, which is always unsigned long. */ #define PRIuPTR "lu" #endif /* Solaris < 10 kludge. */ #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) #if defined(__arch64__) || defined (__x86_64__) #define PRIuPTR "lu" #else #define PRIuPTR "u" #endif #endif /* MSVC kludge. */ #if defined _MSC_VER #define PRIuPTR "lu" #define PRIu8 "u" #define PRId8 "d" #define PRIu64 "I64u" #define PRId64 "I64d" #endif #ifndef PRIuPTR #define PRIuPTR "u" #endif polyml-5.7.1/libffi/testsuite/libffi.call/cls_9byte1.c0000644000175000017500000000461713204034553021562 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Darwin/AIX do double-word alignment of the struct if the first element is a double. Check that it does not here. Limitations: none. PR: none. Originator: 20030914 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_9byte { int a; double b; } cls_struct_9byte; cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, struct cls_struct_9byte b2) { struct cls_struct_9byte result; result.a = b1.a + b2.a; result.b = b1.b + b2.b; printf("%d %g %d %g: %d %g\n", b1.a, b1.b, b2.a, b2.b, result.a, result.b); return result; } static void cls_struct_9byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_9byte b1, b2; b1 = *(struct cls_struct_9byte*)(args[0]); b2 = *(struct cls_struct_9byte*)(args[1]); *(cls_struct_9byte*)resp = cls_struct_9byte_fn(b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_9byte h_dbl = { 7, 8.0}; struct cls_struct_9byte j_dbl = { 1, 9.0}; struct cls_struct_9byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_sint; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &h_dbl; args_dbl[1] = &j_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_9byte_fn), &res_dbl, args_dbl); /* { dg-output "7 8 1 9: 8 17" } */ printf("res: %d %g\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 8 17" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_9byte(*)(cls_struct_9byte, cls_struct_9byte))(code))(h_dbl, j_dbl); /* { dg-output "\n7 8 1 9: 8 17" } */ printf("res: %d %g\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 8 17" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct8.c0000644000175000017500000000660713204034553022563 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned long long a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; typedef struct C { unsigned long long d; unsigned char e; } C; static B B_fn(struct A b2, struct B b3, struct C b4) { struct B result; result.x.a = b2.a + b3.x.a + b4.d; result.x.b = b2.b + b3.x.b + b3.y + b4.e; result.y = b2.b + b3.x.b + b4.e; printf("%d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; struct C b2; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); b2 = *(struct C*)(args[2]); *(B*)resp = B_fn(b0, b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[4]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type* cls_struct_fields2[3]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[4]; struct A e_dbl = { 1LL, 7}; struct B f_dbl = {{12LL , 127}, 99}; struct C g_dbl = { 2LL, 9}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_uint64; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; cls_struct_fields2[0] = &ffi_type_uint64; cls_struct_fields2[1] = &ffi_type_uchar; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_loc_fn0.c0000644000175000017500000000603013204034553022647 0ustar daviddavid/* Area: closure_call Purpose: Check multiple values passing from different type. Also, exceed the limit of gpr and fpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void closure_loc_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(unsigned long long *)args[0] + (int)(*(int *)args[1]) + (int)(*(unsigned long long *)args[2]) + (int)*(int *)args[3] + (int)(*(signed short *)args[4]) + (int)(*(unsigned long long *)args[5]) + (int)*(int *)args[6] + (int)(*(int *)args[7]) + (int)(*(double *)args[8]) + (int)*(int *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(int *)args[13]) + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(unsigned long long *)args[0], (int)(*(int *)args[1]), (int)(*(unsigned long long *)args[2]), (int)*(int *)args[3], (int)(*(signed short *)args[4]), (int)(*(unsigned long long *)args[5]), (int)*(int *)args[6], (int)(*(int *)args[7]), (int)(*(double *)args[8]), (int)*(int *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(int *)args[13]), (int)(*(int *)args[14]),*(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_loc_test_type0)(unsigned long long, int, unsigned long long, int, signed short, unsigned long long, int, int, double, int, int, float, int, int, int, int); int main (void) { ffi_cif cif; ffi_closure *pcl; ffi_type * cl_arg_types[17]; int res; void *codeloc; cl_arg_types[0] = &ffi_type_uint64; cl_arg_types[1] = &ffi_type_sint; cl_arg_types[2] = &ffi_type_uint64; cl_arg_types[3] = &ffi_type_sint; cl_arg_types[4] = &ffi_type_sshort; cl_arg_types[5] = &ffi_type_uint64; cl_arg_types[6] = &ffi_type_sint; cl_arg_types[7] = &ffi_type_sint; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_sint; cl_arg_types[10] = &ffi_type_sint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_sint; cl_arg_types[14] = &ffi_type_sint; cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); pcl = ffi_closure_alloc(sizeof(ffi_closure), &codeloc); CHECK(pcl != NULL); CHECK(codeloc != NULL); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_loc_test_fn0, (void *) 3 /* userdata */, codeloc) == FFI_OK); CHECK(memcmp(pcl, codeloc, sizeof(*pcl)) == 0); res = (*((closure_loc_test_type0)codeloc)) (1LL, 2, 3LL, 4, 127, 429LL, 7, 8, 9.5, 10, 11, 12, 13, 19, 21, 1); /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ printf("res: %d\n",res); /* { dg-output "\nres: 680" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_fl3.c0000644000175000017500000000170713204034553021664 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static float return_fl(float fl1, float fl2, unsigned int in3, float fl4) { return fl1 + fl2 + in3 + fl4; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float fl1, fl2, fl4, rfl; unsigned int in3; args[0] = &ffi_type_float; args[1] = &ffi_type_float; args[2] = &ffi_type_uint; args[3] = &ffi_type_float; values[0] = &fl1; values[1] = &fl2; values[2] = &in3; values[3] = &fl4; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_float, args) == FFI_OK); fl1 = 127.0; fl2 = 128.0; in3 = 255; fl4 = 512.7; ffi_call(&cif, FFI_FN(return_fl), &rfl, values); printf ("%f vs %f\n", rfl, return_fl(fl1, fl2, in3, fl4)); CHECK(rfl == fl1 + fl2 + in3 + fl4); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_longdouble.c0000644000175000017500000000560613204034553022576 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check long double arguments. Limitations: none. PR: none. Originator: Blake Chaffin */ /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ /* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have remove the xfail for arm*-*-* below, until we know more. */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" long double cls_ldouble_fn( long double a1, long double a2, long double a3, long double a4, long double a5, long double a6, long double a7, long double a8) { long double r = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8; printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg: %Lg\n", a1, a2, a3, a4, a5, a6, a7, a8, r); return r; } static void cls_ldouble_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { long double a1 = *(long double*)args[0]; long double a2 = *(long double*)args[1]; long double a3 = *(long double*)args[2]; long double a4 = *(long double*)args[3]; long double a5 = *(long double*)args[4]; long double a6 = *(long double*)args[5]; long double a7 = *(long double*)args[6]; long double a8 = *(long double*)args[7]; *(long double*)resp = cls_ldouble_fn( a1, a2, a3, a4, a5, a6, a7, a8); } int main(void) { ffi_cif cif; void* code; ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[9]; ffi_type* arg_types[9]; long double res = 0; long double arg1 = 1; long double arg2 = 2; long double arg3 = 3; long double arg4 = 4; long double arg5 = 5; long double arg6 = 6; long double arg7 = 7; long double arg8 = 8; arg_types[0] = &ffi_type_longdouble; arg_types[1] = &ffi_type_longdouble; arg_types[2] = &ffi_type_longdouble; arg_types[3] = &ffi_type_longdouble; arg_types[4] = &ffi_type_longdouble; arg_types[5] = &ffi_type_longdouble; arg_types[6] = &ffi_type_longdouble; arg_types[7] = &ffi_type_longdouble; arg_types[8] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 8, &ffi_type_longdouble, arg_types) == FFI_OK); args[0] = &arg1; args[1] = &arg2; args[2] = &arg3; args[3] = &arg4; args[4] = &arg5; args[5] = &arg6; args[6] = &arg7; args[7] = &arg8; args[8] = NULL; ffi_call(&cif, FFI_FN(cls_ldouble_fn), &res, args); /* { dg-output "1 2 3 4 5 6 7 8: 36" } */ printf("res: %Lg\n", res); /* { dg-output "\nres: 36" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ldouble_gn, NULL, code) == FFI_OK); res = ((long double(*)(long double, long double, long double, long double, long double, long double, long double, long double))(code))(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); /* { dg-output "\n1 2 3 4 5 6 7 8: 36" } */ printf("res: %Lg\n", res); /* { dg-output "\nres: 36" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/cls_sshort.c0000644000175000017500000000206513204034553021762 0ustar daviddavid/* Area: closure_call Purpose: Check return value sshort. Limitations: none. PR: none. Originator: 20031108 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = *(signed short *)args[0]; printf("%d: %d\n",*(signed short *)args[0], (int)*(ffi_arg *)(resp)); } typedef signed short (*cls_ret_sshort)(signed short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; signed short res; cl_arg_types[0] = &ffi_type_sshort; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sshort, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_sshort_fn, NULL, code) == FFI_OK); res = (*((cls_ret_sshort)code))(255); /* { dg-output "255: 255" } */ printf("res: %d\n",res); /* { dg-output "\nres: 255" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/stret_large2.c0000644000175000017500000001141013204034553022166 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure returning with different structure size. Depending on the ABI. Check bigger struct which overlaps the gp and fp register count on Darwin/AIX/ppc64. Limitations: none. PR: none. Originator: Blake Chaffin 6/21/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ #include "ffitest.h" /* 13 FPRs: 104 bytes */ /* 14 FPRs: 112 bytes */ typedef struct struct_116byte { double a; double b; double c; double d; double e; double f; double g; double h; double i; double j; double k; double l; double m; double n; int o; } struct_116byte; struct_116byte cls_struct_116byte_fn( struct_116byte b0, struct_116byte b1, struct_116byte b2, struct_116byte b3) { struct_116byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; result.e = b0.e + b1.e + b2.e + b3.e; result.f = b0.f + b1.f + b2.f + b3.f; result.g = b0.g + b1.g + b2.g + b3.g; result.h = b0.h + b1.h + b2.h + b3.h; result.i = b0.i + b1.i + b2.i + b3.i; result.j = b0.j + b1.j + b2.j + b3.j; result.k = b0.k + b1.k + b2.k + b3.k; result.l = b0.l + b1.l + b2.l + b3.l; result.m = b0.m + b1.m + b2.m + b3.m; result.n = b0.n + b1.n + b2.n + b3.n; result.o = b0.o + b1.o + b2.o + b3.o; printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", result.a, result.b, result.c, result.d, result.e, result.f, result.g, result.h, result.i, result.j, result.k, result.l, result.m, result.n, result.o); return result; } static void cls_struct_116byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct_116byte b0, b1, b2, b3; b0 = *(struct_116byte*)(args[0]); b1 = *(struct_116byte*)(args[1]); b2 = *(struct_116byte*)(args[2]); b3 = *(struct_116byte*)(args[3]); *(struct_116byte*)resp = cls_struct_116byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[16]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct_116byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 7 }; struct_116byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 6.0, 4 }; struct_116byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 7.0, 3 }; struct_116byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 8.0, 2 }; struct_116byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_double; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_double; cls_struct_fields[7] = &ffi_type_double; cls_struct_fields[8] = &ffi_type_double; cls_struct_fields[9] = &ffi_type_double; cls_struct_fields[10] = &ffi_type_double; cls_struct_fields[11] = &ffi_type_double; cls_struct_fields[12] = &ffi_type_double; cls_struct_fields[13] = &ffi_type_double; cls_struct_fields[14] = &ffi_type_sint32; cls_struct_fields[15] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_116byte_fn), &res_dbl, args_dbl); /* { dg-output "22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n, res_dbl.o); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_116byte_gn, NULL, code) == FFI_OK); res_dbl = ((struct_116byte(*)(struct_116byte, struct_116byte, struct_116byte, struct_116byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n, res_dbl.o); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct9.c0000644000175000017500000000255713204034553021222 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { float f; int i; } test_structure_9; static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts) { ts.f += 1; ts.i += 1; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts9_type; ffi_type *ts9_type_elements[3]; test_structure_9 ts9_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_9 *ts9_result = (test_structure_9 *) malloc (sizeof(test_structure_9)); ts9_type.size = 0; ts9_type.alignment = 0; ts9_type.type = FFI_TYPE_STRUCT; ts9_type.elements = ts9_type_elements; ts9_type_elements[0] = &ffi_type_float; ts9_type_elements[1] = &ffi_type_sint; ts9_type_elements[2] = NULL; args[0] = &ts9_type; values[0] = &ts9_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK); ts9_arg.f = 5.55f; ts9_arg.i = 5; printf ("%g\n", ts9_arg.f); printf ("%d\n", ts9_arg.i); ffi_call(&cif, FFI_FN(struct9), ts9_result, values); printf ("%g\n", ts9_result->f); printf ("%d\n", ts9_result->i); CHECK(ts9_result->f == 5.55f + 1); CHECK(ts9_result->i == 5 + 1); free (ts9_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_4_1byte.c0000644000175000017500000000545413204034553021714 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Limitations: none. PR: none. Originator: 20030902 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_4_1byte { unsigned char a; unsigned char b; unsigned char c; unsigned char d; } cls_struct_4_1byte; cls_struct_4_1byte cls_struct_4_1byte_fn(struct cls_struct_4_1byte a1, struct cls_struct_4_1byte a2) { struct cls_struct_4_1byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a2.a, a2.b, a2.c, a2.d, result.a, result.b, result.c, result.d); return result; } static void cls_struct_4_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_4_1byte a1, a2; a1 = *(struct cls_struct_4_1byte*)(args[0]); a2 = *(struct cls_struct_4_1byte*)(args[1]); *(cls_struct_4_1byte*)resp = cls_struct_4_1byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 }; struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 }; struct cls_struct_4_1byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_uchar; cls_struct_fields[4] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_4_1byte_fn), &res_dbl, args_dbl); /* { dg-output "12 13 14 15 178 179 180 181: 190 192 194 196" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 190 192 194 196" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4_1byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_4_1byte(*)(cls_struct_4_1byte, cls_struct_4_1byte))(code))(g_dbl, f_dbl); /* { dg-output "\n12 13 14 15 178 179 180 181: 190 192 194 196" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 190 192 194 196" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_dbls_struct.c0000644000175000017500000000250413204034553022766 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check double arguments in structs. Limitations: none. PR: none. Originator: Blake Chaffin 6/23/2007 */ /* { dg-do run } */ #include "ffitest.h" typedef struct Dbls { double x; double y; } Dbls; void closure_test_fn(Dbls p) { printf("%.1f %.1f\n", p.x, p.y); } void closure_test_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, void** args, void* userdata __UNUSED__) { closure_test_fn(*(Dbls*)args[0]); } int main(int argc __UNUSED__, char** argv __UNUSED__) { ffi_cif cif; void *code; ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type* cl_arg_types[1]; ffi_type ts1_type; ffi_type* ts1_type_elements[4]; Dbls arg = { 1.0, 2.0 }; ts1_type.size = 0; ts1_type.alignment = 0; ts1_type.type = FFI_TYPE_STRUCT; ts1_type.elements = ts1_type_elements; ts1_type_elements[0] = &ffi_type_double; ts1_type_elements[1] = &ffi_type_double; ts1_type_elements[2] = NULL; cl_arg_types[0] = &ts1_type; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_void, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK); ((void*(*)(Dbls))(code))(arg); /* { dg-output "1.0 2.0\n" } */ closure_test_fn(arg); /* { dg-output "1.0 2.0\n" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/struct6.c0000644000175000017500000000247013204034553021211 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { float f; double d; } test_structure_6; static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts) { ts.f += 1; ts.d += 1; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts6_type; ffi_type *ts6_type_elements[3]; test_structure_6 ts6_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_6 *ts6_result = (test_structure_6 *) malloc (sizeof(test_structure_6)); ts6_type.size = 0; ts6_type.alignment = 0; ts6_type.type = FFI_TYPE_STRUCT; ts6_type.elements = ts6_type_elements; ts6_type_elements[0] = &ffi_type_float; ts6_type_elements[1] = &ffi_type_double; ts6_type_elements[2] = NULL; args[0] = &ts6_type; values[0] = &ts6_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK); ts6_arg.f = 5.55f; ts6_arg.d = 6.66; printf ("%g\n", ts6_arg.f); printf ("%g\n", ts6_arg.d); ffi_call(&cif, FFI_FN(struct6), ts6_result, values); CHECK(ts6_result->f == 5.55f + 1); CHECK(ts6_result->d == 6.66 + 1); free (ts6_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_longdouble_split.c0000644000175000017500000000725213204034553025162 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of long double. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" typedef struct cls_struct_align { long double a; long double b; long double c; long double d; long double e; long double f; long double g; } cls_struct_align; cls_struct_align cls_struct_align_fn( cls_struct_align a1, cls_struct_align a2) { struct cls_struct_align r; r.a = a1.a + a2.a; r.b = a1.b + a2.b; r.c = a1.c + a2.c; r.d = a1.d + a2.d; r.e = a1.e + a2.e; r.f = a1.f + a2.f; r.g = a1.g + a2.g; printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg: " "%Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, r.a, r.b, r.c, r.d, r.e, r.f, r.g); return r; } cls_struct_align cls_struct_align_fn2( cls_struct_align a1) { struct cls_struct_align r; r.a = a1.a + 1; r.b = a1.b + 1; r.c = a1.c + 1; r.d = a1.d + 1; r.e = a1.e + 1; r.f = a1.f + 1; r.g = a1.g + 1; printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg: " "%Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, r.a, r.b, r.c, r.d, r.e, r.f, r.g); return r; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[8]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_longdouble; cls_struct_fields[1] = &ffi_type_longdouble; cls_struct_fields[2] = &ffi_type_longdouble; cls_struct_fields[3] = &ffi_type_longdouble; cls_struct_fields[4] = &ffi_type_longdouble; cls_struct_fields[5] = &ffi_type_longdouble; cls_struct_fields[6] = &ffi_type_longdouble; cls_struct_fields[7] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_5byte.c0000644000175000017500000000512413204034553021467 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_5byte { unsigned short a; unsigned short b; unsigned char c; } cls_struct_5byte; cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, struct cls_struct_5byte a2) { struct cls_struct_5byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_5byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_5byte a1, a2; a1 = *(struct cls_struct_5byte*)(args[0]); a2 = *(struct cls_struct_5byte*)(args[1]); *(cls_struct_5byte*)resp = cls_struct_5byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_5byte g_dbl = { 127, 120, 1 }; struct cls_struct_5byte f_dbl = { 12, 128, 9 }; struct cls_struct_5byte res_dbl = { 0, 0, 0 }; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_ushort; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_5byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 12 128 9: 139 248 10" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 139 248 10" } */ res_dbl.a = 0; res_dbl.b = 0; res_dbl.c = 0; CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_5byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_5byte(*)(cls_struct_5byte, cls_struct_5byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 12 128 9: 139 248 10" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 139 248 10" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_pointer.c0000644000175000017500000000520413204034553023270 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of pointer. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; void *b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = (void *)((uintptr_t)a1.b + (uintptr_t)a2.b); result.c = a1.c + a2.c; printf("%d %" PRIuPTR " %d %d %" PRIuPTR " %d: %d %" PRIuPTR " %d\n", a1.a, (uintptr_t)a1.b, a1.c, a2.a, (uintptr_t)a2.b, a2.c, result.a, (uintptr_t)result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, (void *)4951, 127 }; struct cls_struct_align f_dbl = { 1, (void *)9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_pointer; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_uchar.c0000644000175000017500000000434713204034553022761 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple unsigned char values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" unsigned char test_func_fn(unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4) { unsigned char result; result = a1 + a2 + a3 + a4; printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { unsigned char a1, a2, a3, a4; a1 = *(unsigned char *)avals[0]; a2 = *(unsigned char *)avals[1]; a3 = *(unsigned char *)avals[2]; a4 = *(unsigned char *)avals[3]; *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); } typedef unsigned char (*test_type)(unsigned char, unsigned char, unsigned char, unsigned char); void test_func(ffi_cif *cif __UNUSED__, void *rval __UNUSED__, void **avals, void *data __UNUSED__) { printf("%d %d %d %d\n", *(unsigned char *)avals[0], *(unsigned char *)avals[1], *(unsigned char *)avals[2], *(unsigned char *)avals[3]); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[5]; ffi_type * cl_arg_types[5]; ffi_arg res_call; unsigned char a, b, c, d, res_closure; a = 1; b = 2; c = 127; d = 125; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = &c; args_dbl[3] = &d; args_dbl[4] = NULL; cl_arg_types[0] = &ffi_type_uchar; cl_arg_types[1] = &ffi_type_uchar; cl_arg_types[2] = &ffi_type_uchar; cl_arg_types[3] = &ffi_type_uchar; cl_arg_types[4] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_uchar, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "1 2 127 125: 255" } */ printf("res: %d\n", (unsigned char)res_call); /* { dg-output "\nres: 255" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(1, 2, 127, 125); /* { dg-output "\n1 2 127 125: 255" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 255" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_16byte.c0000644000175000017500000000503313204034553021550 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_16byte { int a; double b; int c; } cls_struct_16byte; cls_struct_16byte cls_struct_16byte_fn(struct cls_struct_16byte b1, struct cls_struct_16byte b2) { struct cls_struct_16byte result; result.a = b1.a + b2.a; result.b = b1.b + b2.b; result.c = b1.c + b2.c; printf("%d %g %d %d %g %d: %d %g %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, result.a, result.b, result.c); return result; } static void cls_struct_16byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_16byte b1, b2; b1 = *(struct cls_struct_16byte*)(args[0]); b2 = *(struct cls_struct_16byte*)(args[1]); *(cls_struct_16byte*)resp = cls_struct_16byte_fn(b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_16byte h_dbl = { 7, 8.0, 9 }; struct cls_struct_16byte j_dbl = { 1, 9.0, 3 }; struct cls_struct_16byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_sint; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &h_dbl; args_dbl[1] = &j_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_16byte_fn), &res_dbl, args_dbl); /* { dg-output "7 8 9 1 9 3: 8 17 12" } */ printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 8 17 12" } */ res_dbl.a = 0; res_dbl.b = 0.0; res_dbl.c = 0; CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_16byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_16byte(*)(cls_struct_16byte, cls_struct_16byte))(code))(h_dbl, j_dbl); /* { dg-output "\n7 8 9 1 9 3: 8 17 12" } */ printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 8 17 12" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_uint_va.c0000644000175000017500000000206213204034553022102 0ustar daviddavid/* Area: closure_call Purpose: Test anonymous unsigned int argument. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ #include "ffitest.h" typedef unsigned int T; static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg *)resp = *(T *)args[0]; printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]); } typedef T (*cls_ret_T)(T, ...); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[3]; T res; cl_arg_types[0] = &ffi_type_uint; cl_arg_types[1] = &ffi_type_uint; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_uint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); res = ((((cls_ret_T)code)(67, 4))); /* { dg-output "67: 67 4" } */ printf("res: %d\n", res); /* { dg-output "\nres: 67" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct9.c0000644000175000017500000000657713204034553022572 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned char a; unsigned long long b; } A; typedef struct B { struct A x; unsigned char y; } B; typedef struct C { unsigned long d; unsigned char e; } C; static B B_fn(struct A b2, struct B b3, struct C b4) { struct B result; result.x.a = b2.a + b3.x.a + b4.d; result.x.b = b2.b + b3.x.b + b3.y + b4.e; result.y = b2.b + b3.x.b + b4.e; printf("%d %d %d %d %d %d %d: %d %d %d\n", b2.a, (int)b2.b, b3.x.a, (int)b3.x.b, b3.y, (int)b4.d, b4.e, result.x.a, (int)result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; struct C b2; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); b2 = *(struct C*)(args[2]); *(B*)resp = B_fn(b0, b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[4]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type* cls_struct_fields2[3]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[4]; struct A e_dbl = { 1, 7LL}; struct B f_dbl = {{12.0 , 127}, 99}; struct C g_dbl = { 2, 9}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uint64; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; cls_struct_fields2[0] = &ffi_type_ulong; cls_struct_fields2[1] = &ffi_type_uchar; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn4.c0000644000175000017500000000571013204034553022022 0ustar daviddavid/* Area: closure_call Purpose: Check multiple long long values passing. Also, exceed the limit of gpr and fpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20031026 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(unsigned long long *)args[0] + (int)*(unsigned long long *)args[1] + (int)*(unsigned long long *)args[2] + (int)*(unsigned long long *)args[3] + (int)*(unsigned long long *)args[4] + (int)*(unsigned long long *)args[5] + (int)*(unsigned long long *)args[6] + (int)*(unsigned long long *)args[7] + (int)*(unsigned long long *)args[8] + (int)*(unsigned long long *)args[9] + (int)*(unsigned long long *)args[10] + (int)*(unsigned long long *)args[11] + (int)*(unsigned long long *)args[12] + (int)*(unsigned long long *)args[13] + (int)*(unsigned long long *)args[14] + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(unsigned long long *)args[0], (int)*(unsigned long long *)args[1], (int)*(unsigned long long *)args[2], (int)*(unsigned long long *)args[3], (int)*(unsigned long long *)args[4], (int)*(unsigned long long *)args[5], (int)*(unsigned long long *)args[6], (int)*(unsigned long long *)args[7], (int)*(unsigned long long *)args[8], (int)*(unsigned long long *)args[9], (int)*(unsigned long long *)args[10], (int)*(unsigned long long *)args[11], (int)*(unsigned long long *)args[12], (int)*(unsigned long long *)args[13], (int)*(unsigned long long *)args[14], *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type0)(unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int i, res; for (i = 0; i < 15; i++) { cl_arg_types[i] = &ffi_type_uint64; } cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type0)code)) (1LL, 2LL, 3LL, 4LL, 127LL, 429LL, 7LL, 8LL, 9LL, 10LL, 11LL, 12LL, 13LL, 19LL, 21LL, 1); /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ printf("res: %d\n",res); /* { dg-output "\nres: 680" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/err_bad_abi.c0000644000175000017500000000141413204034553022005 0ustar daviddavid/* Area: ffi_prep_cif, ffi_prep_closure Purpose: Test error return for bad ABIs. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run } */ #include "ffitest.h" static void dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, void** args __UNUSED__, void* userdata __UNUSED__) {} int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type* arg_types[1]; arg_types[0] = NULL; CHECK(ffi_prep_cif(&cif, 255, 0, &ffi_type_void, arg_types) == FFI_BAD_ABI); CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, arg_types) == FFI_OK); cif.abi= 255; CHECK(ffi_prep_closure_loc(pcl, &cif, dummy_fn, NULL, code) == FFI_BAD_ABI); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_ul.c0000644000175000017500000000153013204034553021612 0ustar daviddavid/* Area: ffi_call Purpose: Check if unsigned long as return type is handled correctly. Limitations: none. PR: none. Originator: 20060724 */ /* { dg-do run } */ #include "ffitest.h" static unsigned long return_ul(unsigned long ul1, unsigned long ul2) { return ul1 + ul2; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg res; unsigned long ul1, ul2; args[0] = &ffi_type_ulong; args[1] = &ffi_type_ulong; values[0] = &ul1; values[1] = &ul2; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_ulong, args) == FFI_OK); ul1 = 1073741823L; ul2 = 1073741824L; ffi_call(&cif, FFI_FN(return_ul), &res, values); printf("res: %lu, %lu\n", (unsigned long)res, ul1 + ul2); /* { dg-output "res: 2147483647, 2147483647" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_ll.c0000644000175000017500000000152513204034553021605 0ustar daviddavid/* Area: ffi_call Purpose: Check return value long long. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static long long return_ll(long long ll) { return ll; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; long long rlonglong; long long ll; args[0] = &ffi_type_sint64; values[0] = ≪ /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint64, args) == FFI_OK); for (ll = 0LL; ll < 100LL; ll++) { ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); CHECK(rlonglong == ll); } for (ll = 55555555555000LL; ll < 55555555555100LL; ll++) { ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); CHECK(rlonglong == ll); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/many.c0000644000175000017500000000251413204034553020542 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float, with many arguments Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" #include #include #include static float ABI_ATTR many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13) { #if 0 printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n", (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, (double) f6, (double) f7, (double) f8, (double) f9, (double) f10, (double) f11, (double) f12, (double) f13); #endif return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13; } int main (void) { ffi_cif cif; ffi_type *args[13]; void *values[13]; float fa[13]; float f, ff; int i; for (i = 0; i < 13; i++) { args[i] = &ffi_type_float; values[i] = &fa[i]; fa[i] = (float) i; } /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 13, &ffi_type_float, args) == FFI_OK); ffi_call(&cif, FFI_FN(many), &f, values); ff = many(fa[0], fa[1], fa[2], fa[3], fa[4], fa[5], fa[6], fa[7], fa[8], fa[9], fa[10],fa[11],fa[12]); if (fabs(f - ff) < FLT_EPSILON) exit(0); else abort(); } polyml-5.7.1/libffi/testsuite/libffi.call/float_va.c0000644000175000017500000000532213204034553021371 0ustar daviddavid/* Area: fp and variadics Purpose: check fp inputs and returns work on variadics, even the fixed params Limitations: None PR: none Originator: 2011-01-25 Intended to stress the difference in ABI on ARM vfp */ /* { dg-do run } */ #include #include "ffitest.h" /* prints out all the parameters, and returns the sum of them all. * 'x' is the number of variadic parameters all of which are double in this test */ double float_va_fn(unsigned int x, double y,...) { double total=0.0; va_list ap; unsigned int i; total+=(double)x; total+=y; printf("%u: %.1f :", x, y); va_start(ap, y); for(i=0;i 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(float *)args[0] +(int)(*(float *)args[1]) + (int)(*(float *)args[2]) + (int)*(float *)args[3] + (int)(*(float *)args[4]) + (int)(*(float *)args[5]) + (int)*(float *)args[6] + (int)(*(float *)args[7]) + (int)(*(double *)args[8]) + (int)*(int *)args[9] + (int)(*(float *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(float *)args[13]) + (int)(*(float *)args[14]) + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(float *)args[0], (int)(*(float *)args[1]), (int)(*(float *)args[2]), (int)*(float *)args[3], (int)(*(float *)args[4]), (int)(*(float *)args[5]), (int)*(float *)args[6], (int)(*(float *)args[7]), (int)(*(double *)args[8]), (int)*(int *)args[9], (int)(*(float *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(float *)args[13]), (int)(*(float *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type3)(float, float, float, float, float, float, float, float, double, int, float, float, int, float, float, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; cl_arg_types[0] = &ffi_type_float; cl_arg_types[1] = &ffi_type_float; cl_arg_types[2] = &ffi_type_float; cl_arg_types[3] = &ffi_type_float; cl_arg_types[4] = &ffi_type_float; cl_arg_types[5] = &ffi_type_float; cl_arg_types[6] = &ffi_type_float; cl_arg_types[7] = &ffi_type_float; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_sint; cl_arg_types[10] = &ffi_type_float; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_float; cl_arg_types[14] = &ffi_type_float; cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn3, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type3)code)) (1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11.11, 12.0, 13, 19.19, 21.21, 1); /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 19 21 1 3: 135" } */ printf("res: %d\n",res); /* { dg-output "\nres: 135" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/fastthis3_win32.c0000644000175000017500000000227313204034553022532 0ustar daviddavid/* Area: ffi_call Purpose: Check fastcall f call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static size_t __FASTCALL__ my_fastcall_f(float a, char *s, int i) { return (size_t) ((int) strlen(s) + (int) a + i); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; int v1; float v2; args[2] = &ffi_type_sint; args[1] = &ffi_type_pointer; args[0] = &ffi_type_float; values[2] = (void*) &v1; values[1] = (void*) &s; values[0] = (void*) &v2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 3, &ffi_type_sint, args) == FFI_OK); s = "a"; v1 = 1; v2 = 0.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 2); s = "1234567"; v2 = -1.0; v1 = -2; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 4); s = "1234567890123456789012345"; v2 = 1.0; v1 = 2; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 28); printf("fastcall fct3 tests passed\n"); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct7.c0000644000175000017500000000534313204034553022556 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned long long a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; static B B_fn(struct A b2, struct B b3) { struct B result; result.x.a = b2.a + b3.x.a; result.x.b = b2.b + b3.x.b + b3.y; result.y = b2.b + b3.x.b; printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); *(B*)resp = B_fn(b0, b1); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type cls_struct_type, cls_struct_type1; ffi_type* dbl_arg_types[3]; struct A e_dbl = { 1LL, 7}; struct B f_dbl = {{12.0 , 127}, 99}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_fields[0] = &ffi_type_uint64; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/many2_win32.c0000644000175000017500000000243013204034553021643 0ustar daviddavid/* Area: ffi_call Purpose: Check stdcall many call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" #include static float __attribute__((fastcall)) fastcall_many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13) { return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); } int main (void) { ffi_cif cif; ffi_type *args[13]; void *values[13]; float fa[13]; float f, ff; unsigned long ul; for (ul = 0; ul < 13; ul++) { args[ul] = &ffi_type_float; values[ul] = &fa[ul]; fa[ul] = (float) ul; } /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 13, &ffi_type_float, args) == FFI_OK); ff = fastcall_many(fa[0], fa[1], fa[2], fa[3], fa[4], fa[5], fa[6], fa[7], fa[8], fa[9], fa[10], fa[11], fa[12]); ffi_call(&cif, FFI_FN(fastcall_many), &f, values); if (f - ff < FLT_EPSILON) printf("fastcall many arg tests ok!\n"); else CHECK(0); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/testclosure.c0000644000175000017500000000317513204034553022156 0ustar daviddavid/* Area: closure_call Purpose: Check return value float. Limitations: none. PR: 41908. Originator: 20091102 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_combined { float a; float b; float c; float d; } cls_struct_combined; void cls_struct_combined_fn(struct cls_struct_combined arg) { printf("%g %g %g %g\n", arg.a, arg.b, arg.c, arg.d); fflush(stdout); } static void cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, void** args, void* userdata __UNUSED__) { struct cls_struct_combined a0; a0 = *(struct cls_struct_combined*)(args[0]); cls_struct_combined_fn(a0); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type* cls_struct_fields0[5]; ffi_type cls_struct_type0; ffi_type* dbl_arg_types[5]; struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0}; cls_struct_type0.size = 0; cls_struct_type0.alignment = 0; cls_struct_type0.type = FFI_TYPE_STRUCT; cls_struct_type0.elements = cls_struct_fields0; cls_struct_fields0[0] = &ffi_type_float; cls_struct_fields0[1] = &ffi_type_float; cls_struct_fields0[2] = &ffi_type_float; cls_struct_fields0[3] = &ffi_type_float; cls_struct_fields0[4] = NULL; dbl_arg_types[0] = &cls_struct_type0; dbl_arg_types[1] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_void, dbl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); ((void(*)(cls_struct_combined)) (code))(g_dbl); /* { dg-output "4 5 1 8" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_5_1_byte.c0000644000175000017500000000571613204034553022055 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20050708 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_5byte { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; } cls_struct_5byte; cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, struct cls_struct_5byte a2) { struct cls_struct_5byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; result.e = a1.e + a2.e; printf("%d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a1.e, a2.a, a2.b, a2.c, a2.d, a2.e, result.a, result.b, result.c, result.d, result.e); return result; } static void cls_struct_5byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_5byte a1, a2; a1 = *(struct cls_struct_5byte*)(args[0]); a2 = *(struct cls_struct_5byte*)(args[1]); *(cls_struct_5byte*)resp = cls_struct_5byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[6]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 }; struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 }; struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 }; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_uchar; cls_struct_fields[4] = &ffi_type_uchar; cls_struct_fields[5] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_5byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 3 4 12 128 9 3 4: 139 248 10 6 8" } */ printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e); /* { dg-output "\nres: 139 248 10 6 8" } */ res_dbl.a = 0; res_dbl.b = 0; res_dbl.c = 0; res_dbl.d = 0; res_dbl.e = 0; CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_5byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_5byte(*)(cls_struct_5byte, cls_struct_5byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 3 4 12 128 9 3 4: 139 248 10 6 8" } */ printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e); /* { dg-output "\nres: 139 248 10 6 8" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_longdouble.c0000644000175000017500000000501313204034553023740 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of long double. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; long double b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_longdouble; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn1.c0000644000175000017500000000547113204034553022023 0ustar daviddavid/* Area: closure_call. Purpose: Check multiple values passing from different type. Also, exceed the limit of gpr and fpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(float *)args[0] +(int)(*(float *)args[1]) + (int)(*(float *)args[2]) + (int)*(float *)args[3] + (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + (int)*(float *)args[6] + (int)(*(int *)args[7]) + (int)(*(double*)args[8]) + (int)*(int *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(int *)args[13]) + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(float *)args[0], (int)(*(float *)args[1]), (int)(*(float *)args[2]), (int)*(float *)args[3], (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), (int)*(float *)args[6], (int)(*(int *)args[7]), (int)(*(double *)args[8]), (int)*(int *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(int *)args[13]), (int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type1)(float, float, float, float, signed short, float, float, int, double, int, int, float, int, int, int, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; cl_arg_types[0] = &ffi_type_float; cl_arg_types[1] = &ffi_type_float; cl_arg_types[2] = &ffi_type_float; cl_arg_types[3] = &ffi_type_float; cl_arg_types[4] = &ffi_type_sshort; cl_arg_types[5] = &ffi_type_float; cl_arg_types[6] = &ffi_type_float; cl_arg_types[7] = &ffi_type_sint; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_sint; cl_arg_types[10] = &ffi_type_sint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_sint; cl_arg_types[14] = &ffi_type_sint; cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type1)code)) (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, 19, 21, 1); /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ printf("res: %d\n",res); /* { dg-output "\nres: 255" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_pointer.c0000644000175000017500000000361113204034553022116 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check pointer arguments. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ #include "ffitest.h" void* cls_pointer_fn(void* a1, void* a2) { void* result = (void*)((intptr_t)a1 + (intptr_t)a2); printf("0x%08x 0x%08x: 0x%08x\n", (unsigned int)(uintptr_t) a1, (unsigned int)(uintptr_t) a2, (unsigned int)(uintptr_t) result); return result; } static void cls_pointer_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { void* a1 = *(void**)(args[0]); void* a2 = *(void**)(args[1]); *(void**)resp = cls_pointer_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[3]; /* ffi_type cls_pointer_type; */ ffi_type* arg_types[3]; /* cls_pointer_type.size = sizeof(void*); cls_pointer_type.alignment = 0; cls_pointer_type.type = FFI_TYPE_POINTER; cls_pointer_type.elements = NULL;*/ void* arg1 = (void*)0x12345678; void* arg2 = (void*)0x89abcdef; ffi_arg res = 0; arg_types[0] = &ffi_type_pointer; arg_types[1] = &ffi_type_pointer; arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_pointer, arg_types) == FFI_OK); args[0] = &arg1; args[1] = &arg2; args[2] = NULL; ffi_call(&cif, FFI_FN(cls_pointer_fn), &res, args); /* { dg-output "0x12345678 0x89abcdef: 0x9be02467" } */ printf("res: 0x%08x\n", (unsigned int) res); /* { dg-output "\nres: 0x9be02467" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); /* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */ printf("res: 0x%08x\n", (unsigned int) res); /* { dg-output "\nres: 0x9be02467" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_uchar.c0000644000175000017500000000206213204034553021537 0ustar daviddavid/* Area: closure_call Purpose: Check return value uchar. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = *(unsigned char *)args[0]; printf("%d: %d\n",*(unsigned char *)args[0], (int)*(ffi_arg *)(resp)); } typedef unsigned char (*cls_ret_uchar)(unsigned char); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; unsigned char res; cl_arg_types[0] = &ffi_type_uchar; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uchar, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_uchar_fn, NULL, code) == FFI_OK); res = (*((cls_ret_uchar)code))(127); /* { dg-output "127: 127" } */ printf("res: %d\n",res); /* { dg-output "\nres: 127" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct6.c0000644000175000017500000000655613204034553022564 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: PR 25630. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { double a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; typedef struct C { long d; unsigned char e; } C; static B B_fn(struct A b2, struct B b3, struct C b4) { struct B result; result.x.a = b2.a + b3.x.a + b4.d; result.x.b = b2.b + b3.x.b + b3.y + b4.e; result.y = b2.b + b3.x.b + b4.e; printf("%d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; struct C b2; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); b2 = *(struct C*)(args[2]); *(B*)resp = B_fn(b0, b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[4]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type* cls_struct_fields2[3]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[4]; struct A e_dbl = { 1.0, 7}; struct B f_dbl = {{12.0 , 127}, 99}; struct C g_dbl = { 2, 9}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; cls_struct_fields2[0] = &ffi_type_slong; cls_struct_fields2[1] = &ffi_type_uchar; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_struct_va1.c0000644000175000017500000000451613204034553022536 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Test doubles passed in variable argument lists. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run } */ /* { dg-output "" { xfail avr32*-*-* } } */ #include "ffitest.h" struct small_tag { unsigned char a; unsigned char b; }; struct large_tag { unsigned a; unsigned b; unsigned c; unsigned d; unsigned e; }; static void test_fn (ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { int n = *(int*)args[0]; struct small_tag s1 = * (struct small_tag *) args[1]; struct large_tag l1 = * (struct large_tag *) args[2]; struct small_tag s2 = * (struct small_tag *) args[3]; printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b, l1.a, l1.b, l1.c, l1.d, l1.e, s2.a, s2.b); * (ffi_arg*) resp = 42; } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc (sizeof (ffi_closure), &code); ffi_type* arg_types[5]; ffi_arg res = 0; ffi_type s_type; ffi_type *s_type_elements[3]; ffi_type l_type; ffi_type *l_type_elements[6]; struct small_tag s1; struct small_tag s2; struct large_tag l1; int si; s_type.size = 0; s_type.alignment = 0; s_type.type = FFI_TYPE_STRUCT; s_type.elements = s_type_elements; s_type_elements[0] = &ffi_type_uchar; s_type_elements[1] = &ffi_type_uchar; s_type_elements[2] = NULL; l_type.size = 0; l_type.alignment = 0; l_type.type = FFI_TYPE_STRUCT; l_type.elements = l_type_elements; l_type_elements[0] = &ffi_type_uint; l_type_elements[1] = &ffi_type_uint; l_type_elements[2] = &ffi_type_uint; l_type_elements[3] = &ffi_type_uint; l_type_elements[4] = &ffi_type_uint; l_type_elements[5] = NULL; arg_types[0] = &ffi_type_sint; arg_types[1] = &s_type; arg_types[2] = &l_type; arg_types[3] = &s_type; arg_types[4] = NULL; CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK); si = 4; s1.a = 5; s1.b = 6; s2.a = 20; s2.b = 21; l1.a = 10; l1.b = 11; l1.c = 12; l1.d = 13; l1.e = 14; CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK); res = ((int (*)(int, ...))(code))(si, s1, l1, s2); /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 42" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/stret_large.c0000644000175000017500000001114213204034553022106 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure returning with different structure size. Depending on the ABI. Check bigger struct which overlaps the gp and fp register count on Darwin/AIX/ppc64. Limitations: none. PR: none. Originator: Blake Chaffin 6/21/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ #include "ffitest.h" /* 13 FPRs: 104 bytes */ /* 14 FPRs: 112 bytes */ typedef struct struct_108byte { double a; double b; double c; double d; double e; double f; double g; double h; double i; double j; double k; double l; double m; int n; } struct_108byte; struct_108byte cls_struct_108byte_fn( struct_108byte b0, struct_108byte b1, struct_108byte b2, struct_108byte b3) { struct_108byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; result.e = b0.e + b1.e + b2.e + b3.e; result.f = b0.f + b1.f + b2.f + b3.f; result.g = b0.g + b1.g + b2.g + b3.g; result.h = b0.h + b1.h + b2.h + b3.h; result.i = b0.i + b1.i + b2.i + b3.i; result.j = b0.j + b1.j + b2.j + b3.j; result.k = b0.k + b1.k + b2.k + b3.k; result.l = b0.l + b1.l + b2.l + b3.l; result.m = b0.m + b1.m + b2.m + b3.m; result.n = b0.n + b1.n + b2.n + b3.n; printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", result.a, result.b, result.c, result.d, result.e, result.f, result.g, result.h, result.i, result.j, result.k, result.l, result.m, result.n); return result; } static void cls_struct_108byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct_108byte b0, b1, b2, b3; b0 = *(struct_108byte*)(args[0]); b1 = *(struct_108byte*)(args[1]); b2 = *(struct_108byte*)(args[2]); b3 = *(struct_108byte*)(args[3]); *(struct_108byte*)resp = cls_struct_108byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[15]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct_108byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 7 }; struct_108byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 4 }; struct_108byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 3 }; struct_108byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 2 }; struct_108byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_double; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_double; cls_struct_fields[7] = &ffi_type_double; cls_struct_fields[8] = &ffi_type_double; cls_struct_fields[9] = &ffi_type_double; cls_struct_fields[10] = &ffi_type_double; cls_struct_fields[11] = &ffi_type_double; cls_struct_fields[12] = &ffi_type_double; cls_struct_fields[13] = &ffi_type_sint32; cls_struct_fields[14] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_108byte_fn), &res_dbl, args_dbl); /* { dg-output "22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_108byte_gn, NULL, code) == FFI_OK); res_dbl = ((struct_108byte(*)(struct_108byte, struct_108byte, struct_108byte, struct_108byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_20byte1.c0000644000175000017500000000475513204034553021636 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_20byte { int a; double b; double c; } cls_struct_20byte; cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, struct cls_struct_20byte a2) { struct cls_struct_20byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %g %g %d %g %g: %d %g %g\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_20byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_20byte a1, a2; a1 = *(struct cls_struct_20byte*)(args[0]); a2 = *(struct cls_struct_20byte*)(args[1]); *(cls_struct_20byte*)resp = cls_struct_20byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 }; struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 }; struct cls_struct_20byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_sint; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_20byte_fn), &res_dbl, args_dbl); /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 5 7 10" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_20byte(*)(cls_struct_20byte, cls_struct_20byte))(code))(g_dbl, f_dbl); /* { dg-output "\n1 2 3 4 5 7: 5 7 10" } */ printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 5 7 10" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/va_struct1.c0000644000175000017500000000430313204034553021667 0ustar daviddavid/* Area: ffi_call Purpose: Test passing struct in variable argument lists. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ /* { dg-output "" { xfail avr32*-*-* } } */ #include "ffitest.h" #include struct small_tag { unsigned char a; unsigned char b; }; struct large_tag { unsigned a; unsigned b; unsigned c; unsigned d; unsigned e; }; static int test_fn (int n, ...) { va_list ap; struct small_tag s1; struct small_tag s2; struct large_tag l; va_start (ap, n); s1 = va_arg (ap, struct small_tag); l = va_arg (ap, struct large_tag); s2 = va_arg (ap, struct small_tag); printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, s2.a, s2.b); va_end (ap); return n + 1; } int main (void) { ffi_cif cif; void* args[5]; ffi_type* arg_types[5]; ffi_type s_type; ffi_type *s_type_elements[3]; ffi_type l_type; ffi_type *l_type_elements[6]; struct small_tag s1; struct small_tag s2; struct large_tag l1; int n; ffi_arg res; s_type.size = 0; s_type.alignment = 0; s_type.type = FFI_TYPE_STRUCT; s_type.elements = s_type_elements; s_type_elements[0] = &ffi_type_uchar; s_type_elements[1] = &ffi_type_uchar; s_type_elements[2] = NULL; l_type.size = 0; l_type.alignment = 0; l_type.type = FFI_TYPE_STRUCT; l_type.elements = l_type_elements; l_type_elements[0] = &ffi_type_uint; l_type_elements[1] = &ffi_type_uint; l_type_elements[2] = &ffi_type_uint; l_type_elements[3] = &ffi_type_uint; l_type_elements[4] = &ffi_type_uint; l_type_elements[5] = NULL; arg_types[0] = &ffi_type_sint; arg_types[1] = &s_type; arg_types[2] = &l_type; arg_types[3] = &s_type; arg_types[4] = NULL; CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK); s1.a = 5; s1.b = 6; l1.a = 10; l1.b = 11; l1.c = 12; l1.d = 13; l1.e = 14; s2.a = 7; s2.b = 8; n = 41; args[0] = &n; args[1] = &s1; args[2] = &l1; args[3] = &s2; args[4] = NULL; ffi_call(&cif, FFI_FN(test_fn), &res, args); /* { dg-output "5 6 10 11 12 13 14 7 8" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 42" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/float1.c0000644000175000017500000000213213204034553020760 0ustar daviddavid/* Area: ffi_call Purpose: Check return value double. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" #include "float.h" typedef union { double d; unsigned char c[sizeof (double)]; } value_type; #define CANARY 0xba static double dblit(float f) { return f/3.0; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float f; value_type result[2]; unsigned int i; args[0] = &ffi_type_float; values[0] = &f; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_double, args) == FFI_OK); f = 3.14159; /* Put a canary in the return array. This is a regression test for a buffer overrun. */ memset(result[1].c, CANARY, sizeof (double)); ffi_call(&cif, FFI_FN(dblit), &result[0].d, values); /* These are not always the same!! Check for a reasonable delta */ CHECK(result[0].d - dblit(f) < DBL_EPSILON); /* Check the canary. */ for (i = 0; i < sizeof (double); ++i) CHECK(result[1].c[i] == CANARY); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/many_win32.c0000644000175000017500000000242213204034553021562 0ustar daviddavid/* Area: ffi_call Purpose: Check stdcall many call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" #include static float __attribute__((stdcall)) stdcall_many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13) { return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); } int main (void) { ffi_cif cif; ffi_type *args[13]; void *values[13]; float fa[13]; float f, ff; unsigned long ul; for (ul = 0; ul < 13; ul++) { args[ul] = &ffi_type_float; values[ul] = &fa[ul]; fa[ul] = (float) ul; } /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 13, &ffi_type_float, args) == FFI_OK); ff = stdcall_many(fa[0], fa[1], fa[2], fa[3], fa[4], fa[5], fa[6], fa[7], fa[8], fa[9], fa[10], fa[11], fa[12]); ffi_call(&cif, FFI_FN(stdcall_many), &f, values); if (f - ff < FLT_EPSILON) printf("stdcall many arg tests ok!\n"); else CHECK(0); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/fastthis1_win32.c0000644000175000017500000000212213204034553022521 0ustar daviddavid/* Area: ffi_call Purpose: Check fastcall fct call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static size_t __FASTCALL__ my_fastcall_f(char *s, float a) { return (size_t) ((int) strlen(s) + (int) a); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; float v2; args[0] = &ffi_type_pointer; args[1] = &ffi_type_float; values[0] = (void*) &s; values[1] = (void*) &v2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 2, &ffi_type_sint, args) == FFI_OK); s = "a"; v2 = 0.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 1); s = "1234567"; v2 = -1.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 6); s = "1234567890123456789012345"; v2 = 1.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 26); printf("fastcall fct1 tests passed\n"); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/uninitialized.c0000644000175000017500000000236013204034553022445 0ustar daviddavid/* { dg-do run } */ #include "ffitest.h" typedef struct { unsigned char uc; double d; unsigned int ui; } test_structure_1; static test_structure_1 struct1(test_structure_1 ts) { ts.uc++; ts.d--; ts.ui++; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts1_type; ffi_type *ts1_type_elements[4]; memset(&cif, 1, sizeof(cif)); ts1_type.size = 0; ts1_type.alignment = 0; ts1_type.type = FFI_TYPE_STRUCT; ts1_type.elements = ts1_type_elements; ts1_type_elements[0] = &ffi_type_uchar; ts1_type_elements[1] = &ffi_type_double; ts1_type_elements[2] = &ffi_type_uint; ts1_type_elements[3] = NULL; test_structure_1 ts1_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_1 *ts1_result = (test_structure_1 *) malloc (sizeof(test_structure_1)); args[0] = &ts1_type; values[0] = &ts1_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts1_type, args) == FFI_OK); ts1_arg.uc = '\x01'; ts1_arg.d = 3.14159; ts1_arg.ui = 555; ffi_call(&cif, FFI_FN(struct1), ts1_result, values); CHECK(ts1_result->ui == 556); CHECK(ts1_result->d == 3.14159 - 1); free (ts1_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_schar.c0000644000175000017500000000315513204034553022753 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple signed char values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" signed char test_func_fn(signed char a1, signed char a2) { signed char result; result = a1 + a2; printf("%d %d: %d\n", a1, a2, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { signed char a1, a2; a1 = *(signed char *)avals[0]; a2 = *(signed char *)avals[1]; *(ffi_arg *)rval = test_func_fn(a1, a2); } typedef signed char (*test_type)(signed char, signed char); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[3]; ffi_type * cl_arg_types[3]; ffi_arg res_call; signed char a, b, res_closure; a = 2; b = 125; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = NULL; cl_arg_types[0] = &ffi_type_schar; cl_arg_types[1] = &ffi_type_schar; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_schar, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "2 125: 127" } */ printf("res: %d\n", (signed char)res_call); /* { dg-output "\nres: 127" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(2, 125); /* { dg-output "\n2 125: 127" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 127" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_18byte.c0000644000175000017500000000532413204034553021555 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Double alignment check on darwin. Limitations: none. PR: none. Originator: 20030915 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_18byte { double a; unsigned char b; unsigned char c; double d; } cls_struct_18byte; cls_struct_18byte cls_struct_18byte_fn(struct cls_struct_18byte a1, struct cls_struct_18byte a2) { struct cls_struct_18byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; printf("%g %d %d %g %g %d %d %g: %g %d %d %g\n", a1.a, a1.b, a1.c, a1.d, a2.a, a2.b, a2.c, a2.d, result.a, result.b, result.c, result.d); return result; } static void cls_struct_18byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_18byte a1, a2; a1 = *(struct cls_struct_18byte*)(args[0]); a2 = *(struct cls_struct_18byte*)(args[1]); *(cls_struct_18byte*)resp = cls_struct_18byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[5]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 }; struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 }; struct cls_struct_18byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_18byte_fn), &res_dbl, args_dbl); /* { dg-output "1 127 126 3 4 125 124 5: 5 252 250 8" } */ printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 5 252 250 8" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_18byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_18byte(*)(cls_struct_18byte, cls_struct_18byte))(code))(g_dbl, f_dbl); /* { dg-output "\n1 127 126 3 4 125 124 5: 5 252 250 8" } */ printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 5 252 250 8" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_24byte.c0000644000175000017500000000647013204034553021555 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_24byte { double a; double b; int c; float d; } cls_struct_24byte; cls_struct_24byte cls_struct_24byte_fn(struct cls_struct_24byte b0, struct cls_struct_24byte b1, struct cls_struct_24byte b2, struct cls_struct_24byte b3) { struct cls_struct_24byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; printf("%g %g %d %g %g %g %d %g %g %g %d %g %g %g %d %g: %g %g %d %g\n", b0.a, b0.b, b0.c, b0.d, b1.a, b1.b, b1.c, b1.d, b2.a, b2.b, b2.c, b2.d, b3.a, b3.b, b3.c, b2.d, result.a, result.b, result.c, result.d); return result; } static void cls_struct_24byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_24byte b0, b1, b2, b3; b0 = *(struct cls_struct_24byte*)(args[0]); b1 = *(struct cls_struct_24byte*)(args[1]); b2 = *(struct cls_struct_24byte*)(args[2]); b3 = *(struct cls_struct_24byte*)(args[3]); *(cls_struct_24byte*)resp = cls_struct_24byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_24byte e_dbl = { 9.0, 2.0, 6, 5.0 }; struct cls_struct_24byte f_dbl = { 1.0, 2.0, 3, 7.0 }; struct cls_struct_24byte g_dbl = { 4.0, 5.0, 7, 9.0 }; struct cls_struct_24byte h_dbl = { 8.0, 6.0, 1, 4.0 }; struct cls_struct_24byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = &ffi_type_float; cls_struct_fields[4] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_24byte_fn), &res_dbl, args_dbl); /* { dg-output "9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 9: 22 15 17 25" } */ printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 22 15 17 25" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_24byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_24byte(*)(cls_struct_24byte, cls_struct_24byte, cls_struct_24byte, cls_struct_24byte)) (code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 9: 22 15 17 25" } */ printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 22 15 17 25" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_longdouble_va.c0000644000175000017500000000301613204034553023255 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Test long doubles passed in variable argument lists. Limitations: none. PR: none. Originator: Blake Chaffin 6/6/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ /* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ #include "ffitest.h" static void cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { char* format = *(char**)args[0]; long double ldValue = *(long double*)args[1]; *(ffi_arg*)resp = printf(format, ldValue); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[3]; ffi_type* arg_types[3]; char* format = "%.1Lf\n"; long double ldArg = 7; ffi_arg res = 0; arg_types[0] = &ffi_type_pointer; arg_types[1] = &ffi_type_longdouble; arg_types[2] = NULL; /* This printf call is variadic */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, arg_types) == FFI_OK); args[0] = &format; args[1] = &ldArg; args[2] = NULL; ffi_call(&cif, FFI_FN(printf), &res, args); /* { dg-output "7.0" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 4" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, code) == FFI_OK); res = ((int(*)(char*, ...))(code))(format, ldArg); /* { dg-output "\n7.0" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 4" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct3.c0000644000175000017500000000230213204034553021200 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { int si; } test_structure_3; static test_structure_3 ABI_ATTR struct3(test_structure_3 ts) { ts.si = -(ts.si*2); return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; int compare_value; ffi_type ts3_type; ffi_type *ts3_type_elements[2]; test_structure_3 ts3_arg; test_structure_3 *ts3_result = (test_structure_3 *) malloc (sizeof(test_structure_3)); ts3_type.size = 0; ts3_type.alignment = 0; ts3_type.type = FFI_TYPE_STRUCT; ts3_type.elements = ts3_type_elements; ts3_type_elements[0] = &ffi_type_sint; ts3_type_elements[1] = NULL; args[0] = &ts3_type; values[0] = &ts3_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts3_type, args) == FFI_OK); ts3_arg.si = -123; compare_value = ts3_arg.si; ffi_call(&cif, FFI_FN(struct3), ts3_result, values); printf ("%d %d\n", ts3_result->si, -(compare_value*2)); CHECK(ts3_result->si == -(compare_value*2)); free (ts3_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_6byte.c0000644000175000017500000000532013204034553021466 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_6byte { unsigned short a; unsigned short b; unsigned char c; unsigned char d; } cls_struct_6byte; cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, struct cls_struct_6byte a2) { struct cls_struct_6byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a2.a, a2.b, a2.c, a2.d, result.a, result.b, result.c, result.d); return result; } static void cls_struct_6byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_6byte a1, a2; a1 = *(struct cls_struct_6byte*)(args[0]); a2 = *(struct cls_struct_6byte*)(args[1]); *(cls_struct_6byte*)resp = cls_struct_6byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 }; struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 }; struct cls_struct_6byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_ushort; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_uchar; cls_struct_fields[4] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_6byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 128 12 128 9 127: 139 248 10 255" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 139 248 10 255" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_6byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_6byte(*)(cls_struct_6byte, cls_struct_6byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 128 12 128 9 127: 139 248 10 255" } */ printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); /* { dg-output "\nres: 139 248 10 255" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_sc.c0000644000175000017500000000132613204034553021602 0ustar daviddavid/* Area: ffi_call Purpose: Check return value signed char. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static signed char return_sc(signed char sc) { return sc; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; signed char sc; args[0] = &ffi_type_schar; values[0] = ≻ /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_schar, args) == FFI_OK); for (sc = (signed char) -127; sc < (signed char) 127; sc++) { ffi_call(&cif, FFI_FN(return_sc), &rint, values); CHECK((signed char)rint == sc); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct.c0000644000175000017500000001112713204034553022464 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_16byte1 { double a; float b; int c; } cls_struct_16byte1; typedef struct cls_struct_16byte2 { int ii; double dd; float ff; } cls_struct_16byte2; typedef struct cls_struct_combined { cls_struct_16byte1 d; cls_struct_16byte2 e; } cls_struct_combined; cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, struct cls_struct_16byte2 b1, struct cls_struct_combined b2) { struct cls_struct_combined result; result.d.a = b0.a + b1.dd + b2.d.a; result.d.b = b0.b + b1.ff + b2.d.b; result.d.c = b0.c + b1.ii + b2.d.c; result.e.ii = b0.c + b1.ii + b2.e.ii; result.e.dd = b0.a + b1.dd + b2.e.dd; result.e.ff = b0.b + b1.ff + b2.e.ff; printf("%g %g %d %d %g %g %g %g %d %d %g %g: %g %g %d %d %g %g\n", b0.a, b0.b, b0.c, b1.ii, b1.dd, b1.ff, b2.d.a, b2.d.b, b2.d.c, b2.e.ii, b2.e.dd, b2.e.ff, result.d.a, result.d.b, result.d.c, result.e.ii, result.e.dd, result.e.ff); return result; } static void cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_16byte1 b0; struct cls_struct_16byte2 b1; struct cls_struct_combined b2; b0 = *(struct cls_struct_16byte1*)(args[0]); b1 = *(struct cls_struct_16byte2*)(args[1]); b2 = *(struct cls_struct_combined*)(args[2]); *(cls_struct_combined*)resp = cls_struct_combined_fn(b0, b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[5]; ffi_type* cls_struct_fields1[5]; ffi_type* cls_struct_fields2[5]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[5]; struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, {3, 1.0, 8.0}}; struct cls_struct_combined res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_float; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = NULL; cls_struct_fields1[0] = &ffi_type_sint; cls_struct_fields1[1] = &ffi_type_double; cls_struct_fields1[2] = &ffi_type_float; cls_struct_fields1[3] = NULL; cls_struct_fields2[0] = &cls_struct_type; cls_struct_fields2[1] = &cls_struct_type1; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type2, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = NULL; ffi_call(&cif, FFI_FN(cls_struct_combined_fn), &res_dbl, args_dbl); /* { dg-output "9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_combined(*)(cls_struct_16byte1, cls_struct_16byte2, cls_struct_combined)) (code))(e_dbl, f_dbl, g_dbl); /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_3byte1.c0000644000175000017500000000462513204034553021553 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_3byte { unsigned short a; unsigned char b; } cls_struct_3byte; cls_struct_3byte cls_struct_3byte_fn(struct cls_struct_3byte a1, struct cls_struct_3byte a2) { struct cls_struct_3byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); return result; } static void cls_struct_3byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_3byte a1, a2; a1 = *(struct cls_struct_3byte*)(args[0]); a2 = *(struct cls_struct_3byte*)(args[1]); *(cls_struct_3byte*)resp = cls_struct_3byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_3byte g_dbl = { 12, 119 }; struct cls_struct_3byte f_dbl = { 1, 15 }; struct cls_struct_3byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_ushort; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_3byte_fn), &res_dbl, args_dbl); /* { dg-output "12 119 1 15: 13 134" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 13 134" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_3byte(*)(cls_struct_3byte, cls_struct_3byte))(code))(g_dbl, f_dbl); /* { dg-output "\n12 119 1 15: 13 134" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 13 134" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_sint.c0000644000175000017500000000204513204034553021413 0ustar daviddavid/* Area: closure_call Purpose: Check return value sint32. Limitations: none. PR: none. Originator: 20031108 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = *(signed int *)args[0]; printf("%d: %d\n",*(signed int *)args[0], (int)*(ffi_arg *)(resp)); } typedef signed int (*cls_ret_sint)(signed int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; signed int res; cl_arg_types[0] = &ffi_type_sint; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_sint_fn, NULL, code) == FFI_OK); res = (*((cls_ret_sint)code))(65534); /* { dg-output "65534: 65534" } */ printf("res: %d\n",res); /* { dg-output "\nres: 65534" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_sint16.c0000644000175000017500000000473213204034553022741 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of sint16. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; signed short b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_sshort; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_6_1_byte.c0000644000175000017500000000621613204034553022052 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20050708 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_6byte { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; unsigned char f; } cls_struct_6byte; cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, struct cls_struct_6byte a2) { struct cls_struct_6byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; result.e = a1.e + a2.e; result.f = a1.f + a2.f; printf("%d %d %d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, result.a, result.b, result.c, result.d, result.e, result.f); return result; } static void cls_struct_6byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_6byte a1, a2; a1 = *(struct cls_struct_6byte*)(args[0]); a2 = *(struct cls_struct_6byte*)(args[1]); *(cls_struct_6byte*)resp = cls_struct_6byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[7]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 }; struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 }; struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 }; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_uchar; cls_struct_fields[4] = &ffi_type_uchar; cls_struct_fields[5] = &ffi_type_uchar; cls_struct_fields[6] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_6byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 1 3 4 5 12 128 9 3 4 5: 139 248 10 6 8 10" } */ printf("res: %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f); /* { dg-output "\nres: 139 248 10 6 8 10" } */ res_dbl.a = 0; res_dbl.b = 0; res_dbl.c = 0; res_dbl.d = 0; res_dbl.e = 0; res_dbl.f = 0; CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_6byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_6byte(*)(cls_struct_6byte, cls_struct_6byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 1 3 4 5 12 128 9 3 4 5: 139 248 10 6 8 10" } */ printf("res: %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f); /* { dg-output "\nres: 139 248 10 6 8 10" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_64byte.c0000644000175000017500000000752013204034553021556 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check bigger struct which overlaps the gp and fp register count on Darwin/AIX/ppc64. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_64byte { double a; double b; double c; double d; double e; double f; double g; double h; } cls_struct_64byte; cls_struct_64byte cls_struct_64byte_fn(struct cls_struct_64byte b0, struct cls_struct_64byte b1, struct cls_struct_64byte b2, struct cls_struct_64byte b3) { struct cls_struct_64byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; result.e = b0.e + b1.e + b2.e + b3.e; result.f = b0.f + b1.f + b2.f + b3.f; result.g = b0.g + b1.g + b2.g + b3.g; result.h = b0.h + b1.h + b2.h + b3.h; printf("%g %g %g %g %g %g %g %g\n", result.a, result.b, result.c, result.d, result.e, result.f, result.g, result.h); return result; } static void cls_struct_64byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_64byte b0, b1, b2, b3; b0 = *(struct cls_struct_64byte*)(args[0]); b1 = *(struct cls_struct_64byte*)(args[1]); b2 = *(struct cls_struct_64byte*)(args[2]); b3 = *(struct cls_struct_64byte*)(args[3]); *(cls_struct_64byte*)resp = cls_struct_64byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[9]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 }; struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 }; struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 }; struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 }; struct cls_struct_64byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_double; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_double; cls_struct_fields[7] = &ffi_type_double; cls_struct_fields[8] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_64byte_fn), &res_dbl, args_dbl); /* { dg-output "22 15 17 25 6 13 19 18" } */ printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_64byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_64byte(*)(cls_struct_64byte, cls_struct_64byte, cls_struct_64byte, cls_struct_64byte)) (code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n22 15 17 25 6 13 19 18" } */ printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct1.c0000644000175000017500000000253713204034553021210 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { unsigned char uc; double d; unsigned int ui; } test_structure_1; static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) { ts.uc++; ts.d--; ts.ui++; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts1_type; ffi_type *ts1_type_elements[4]; test_structure_1 ts1_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_1 *ts1_result = (test_structure_1 *) malloc (sizeof(test_structure_1)); ts1_type.size = 0; ts1_type.alignment = 0; ts1_type.type = FFI_TYPE_STRUCT; ts1_type.elements = ts1_type_elements; ts1_type_elements[0] = &ffi_type_uchar; ts1_type_elements[1] = &ffi_type_double; ts1_type_elements[2] = &ffi_type_uint; ts1_type_elements[3] = NULL; args[0] = &ts1_type; values[0] = &ts1_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts1_type, args) == FFI_OK); ts1_arg.uc = '\x01'; ts1_arg.d = 3.14159; ts1_arg.ui = 555; ffi_call(&cif, FFI_FN(struct1), ts1_result, values); CHECK(ts1_result->ui == 556); CHECK(ts1_result->d == 3.14159 - 1); free (ts1_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_ll1.c0000644000175000017500000000204113204034553021660 0ustar daviddavid/* Area: ffi_call Purpose: Check if long long are passed in the corresponding regs on ppc. Limitations: none. PR: 20104. Originator: 20050222 */ /* { dg-do run } */ /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ #include "ffitest.h" static long long return_ll(int ll0, long long ll1, int ll2) { return ll0 + ll1 + ll2; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; long long rlonglong; long long ll1; unsigned ll0, ll2; args[0] = &ffi_type_sint; args[1] = &ffi_type_sint64; args[2] = &ffi_type_sint; values[0] = &ll0; values[1] = &ll1; values[2] = &ll2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_sint64, args) == FFI_OK); ll0 = 11111111; ll1 = 11111111111000LL; ll2 = 11111111; ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); printf("res: %" PRIdLL ", %" PRIdLL "\n", rlonglong, ll0 + ll1 + ll2); /* { dg-output "res: 11111133333222, 11111133333222" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_3_1byte.c0000644000175000017500000000516313204034553021710 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Limitations: none. PR: none. Originator: 20030902 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_3_1byte { unsigned char a; unsigned char b; unsigned char c; } cls_struct_3_1byte; cls_struct_3_1byte cls_struct_3_1byte_fn(struct cls_struct_3_1byte a1, struct cls_struct_3_1byte a2) { struct cls_struct_3_1byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_3_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_3_1byte a1, a2; a1 = *(struct cls_struct_3_1byte*)(args[0]); a2 = *(struct cls_struct_3_1byte*)(args[1]); *(cls_struct_3_1byte*)resp = cls_struct_3_1byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_3_1byte g_dbl = { 12, 13, 14 }; struct cls_struct_3_1byte f_dbl = { 178, 179, 180 }; struct cls_struct_3_1byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_3_1byte_fn), &res_dbl, args_dbl); /* { dg-output "12 13 14 178 179 180: 190 192 194" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 190 192 194" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3_1byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_3_1byte(*)(cls_struct_3_1byte, cls_struct_3_1byte))(code))(g_dbl, f_dbl); /* { dg-output "\n12 13 14 178 179 180: 190 192 194" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 190 192 194" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_uint16.c0000644000175000017500000000473413204034553022745 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of uint16. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; unsigned short b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c0000644000175000017500000000641413204034553025243 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of long double. Limitations: none. PR: none. Originator: Blake Chaffin 6/18/2007 */ /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ /* { dg-do run { xfail strongarm*-*-* } } */ /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" typedef struct cls_struct_align { long double a; long double b; long double c; long double d; long double e; double f; long double g; } cls_struct_align; cls_struct_align cls_struct_align_fn( cls_struct_align a1, cls_struct_align a2) { struct cls_struct_align r; r.a = a1.a + a2.a; r.b = a1.b + a2.b; r.c = a1.c + a2.c; r.d = a1.d + a2.d; r.e = a1.e + a2.e; r.f = a1.f + a2.f; r.g = a1.g + a2.g; printf("%Lg %Lg %Lg %Lg %Lg %g %Lg %Lg %Lg %Lg %Lg %Lg %g %Lg: " "%Lg %Lg %Lg %Lg %Lg %g %Lg\n", a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, r.a, r.b, r.c, r.d, r.e, r.f, r.g); return r; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[8]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_longdouble; cls_struct_fields[1] = &ffi_type_longdouble; cls_struct_fields[2] = &ffi_type_longdouble; cls_struct_fields[3] = &ffi_type_longdouble; cls_struct_fields[4] = &ffi_type_longdouble; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_longdouble; cls_struct_fields[7] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_ushort_va.c0000644000175000017500000000207513204034553022453 0ustar daviddavid/* Area: closure_call Purpose: Test anonymous unsigned short argument. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ #include "ffitest.h" typedef unsigned short T; static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg *)resp = *(T *)args[0]; printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); } typedef T (*cls_ret_T)(T, ...); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[3]; T res; cl_arg_types[0] = &ffi_type_ushort; cl_arg_types[1] = &ffi_type_ushort; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_ushort, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); res = ((((cls_ret_T)code)(67, 4))); /* { dg-output "67: 67 4" } */ printf("res: %d\n", res); /* { dg-output "\nres: 67" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_19byte.c0000644000175000017500000000562613204034553021563 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Double alignment check on darwin. Limitations: none. PR: none. Originator: 20030915 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_19byte { double a; unsigned char b; unsigned char c; double d; unsigned char e; } cls_struct_19byte; cls_struct_19byte cls_struct_19byte_fn(struct cls_struct_19byte a1, struct cls_struct_19byte a2) { struct cls_struct_19byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; result.d = a1.d + a2.d; result.e = a1.e + a2.e; printf("%g %d %d %g %d %g %d %d %g %d: %g %d %d %g %d\n", a1.a, a1.b, a1.c, a1.d, a1.e, a2.a, a2.b, a2.c, a2.d, a2.e, result.a, result.b, result.c, result.d, result.e); return result; } static void cls_struct_19byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_19byte a1, a2; a1 = *(struct cls_struct_19byte*)(args[0]); a2 = *(struct cls_struct_19byte*)(args[1]); *(cls_struct_19byte*)resp = cls_struct_19byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[6]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[3]; struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 }; struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 }; struct cls_struct_19byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_uchar; cls_struct_fields[5] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_19byte_fn), &res_dbl, args_dbl); /* { dg-output "1 127 126 3 120 4 125 124 5 119: 5 252 250 8 239" } */ printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e); /* { dg-output "\nres: 5 252 250 8 239" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_19byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_19byte(*)(cls_struct_19byte, cls_struct_19byte))(code))(g_dbl, f_dbl); /* { dg-output "\n1 127 126 3 120 4 125 124 5 119: 5 252 250 8 239" } */ printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e); /* { dg-output "\nres: 5 252 250 8 239" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct10.c0000644000175000017500000000676713204034553022643 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned long long a; unsigned char b; } A; typedef struct B { unsigned char y; struct A x; unsigned int z; } B; typedef struct C { unsigned long long d; unsigned char e; } C; static B B_fn(struct A b2, struct B b3, struct C b4) { struct B result; result.x.a = b2.a + b3.x.a + b3.z + b4.d; result.x.b = b2.b + b3.x.b + b3.y + b4.e; result.y = b2.b + b3.x.b + b4.e; printf("%d %d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, b3.z, (int)b4.d, b4.e, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; struct C b2; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); b2 = *(struct C*)(args[2]); *(B*)resp = B_fn(b0, b1, b2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[4]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[4]; ffi_type* cls_struct_fields2[3]; ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; ffi_type* dbl_arg_types[4]; struct A e_dbl = { 1LL, 7}; struct B f_dbl = { 99, {12LL , 127}, 255}; struct C g_dbl = { 2LL, 9}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_type2.size = 0; cls_struct_type2.alignment = 0; cls_struct_type2.type = FFI_TYPE_STRUCT; cls_struct_type2.elements = cls_struct_fields2; cls_struct_fields[0] = &ffi_type_uint64; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &ffi_type_uchar; cls_struct_fields1[1] = &cls_struct_type; cls_struct_fields1[2] = &ffi_type_uint; cls_struct_fields1[3] = NULL; cls_struct_fields2[0] = &ffi_type_uint64; cls_struct_fields2[1] = &ffi_type_uchar; cls_struct_fields2[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = &cls_struct_type2; dbl_arg_types[3] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99 255 2 9: 270 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + f_dbl.z + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); /* { dg-output "\n1 7 12 127 99 255 2 9: 270 242 143" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + f_dbl.z + g_dbl.d)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/va_struct2.c0000644000175000017500000000437013204034553021674 0ustar daviddavid/* Area: ffi_call Purpose: Test passing struct in variable argument lists. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ /* { dg-output "" { xfail avr32*-*-* } } */ #include "ffitest.h" #include struct small_tag { unsigned char a; unsigned char b; }; struct large_tag { unsigned a; unsigned b; unsigned c; unsigned d; unsigned e; }; static struct small_tag test_fn (int n, ...) { va_list ap; struct small_tag s1; struct small_tag s2; struct large_tag l; va_start (ap, n); s1 = va_arg (ap, struct small_tag); l = va_arg (ap, struct large_tag); s2 = va_arg (ap, struct small_tag); printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, s2.a, s2.b); va_end (ap); s1.a += s2.a; s1.b += s2.b; return s1; } int main (void) { ffi_cif cif; void* args[5]; ffi_type* arg_types[5]; ffi_type s_type; ffi_type *s_type_elements[3]; ffi_type l_type; ffi_type *l_type_elements[6]; struct small_tag s1; struct small_tag s2; struct large_tag l1; int n; struct small_tag res; s_type.size = 0; s_type.alignment = 0; s_type.type = FFI_TYPE_STRUCT; s_type.elements = s_type_elements; s_type_elements[0] = &ffi_type_uchar; s_type_elements[1] = &ffi_type_uchar; s_type_elements[2] = NULL; l_type.size = 0; l_type.alignment = 0; l_type.type = FFI_TYPE_STRUCT; l_type.elements = l_type_elements; l_type_elements[0] = &ffi_type_uint; l_type_elements[1] = &ffi_type_uint; l_type_elements[2] = &ffi_type_uint; l_type_elements[3] = &ffi_type_uint; l_type_elements[4] = &ffi_type_uint; l_type_elements[5] = NULL; arg_types[0] = &ffi_type_sint; arg_types[1] = &s_type; arg_types[2] = &l_type; arg_types[3] = &s_type; arg_types[4] = NULL; CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &s_type, arg_types) == FFI_OK); s1.a = 5; s1.b = 6; l1.a = 10; l1.b = 11; l1.c = 12; l1.d = 13; l1.e = 14; s2.a = 7; s2.b = 8; n = 41; args[0] = &n; args[1] = &s1; args[2] = &l1; args[3] = &s2; args[4] = NULL; ffi_call(&cif, FFI_FN(test_fn), &res, args); /* { dg-output "5 6 10 11 12 13 14 7 8" } */ printf("res: %d %d\n", res.a, res.b); /* { dg-output "\nres: 12 14" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/cls_ushort.c0000644000175000017500000000211013204034553021753 0ustar daviddavid/* Area: closure_call Purpose: Check return value ushort. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = *(unsigned short *)args[0]; printf("%d: %d\n",*(unsigned short *)args[0], (int)*(ffi_arg *)(resp)); } typedef unsigned short (*cls_ret_ushort)(unsigned short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; unsigned short res; cl_arg_types[0] = &ffi_type_ushort; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_ushort, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ushort_fn, NULL, code) == FFI_OK); res = (*((cls_ret_ushort)code))(65535); /* { dg-output "65535: 65535" } */ printf("res: %d\n",res); /* { dg-output "\nres: 65535" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/va_1.c0000644000175000017500000000725513204034553020433 0ustar daviddavid/* Area: ffi_call Purpose: Test passing struct in variable argument lists. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ /* { dg-output "" { xfail avr32*-*-* } } */ #include "ffitest.h" #include struct small_tag { unsigned char a; unsigned char b; }; struct large_tag { unsigned a; unsigned b; unsigned c; unsigned d; unsigned e; }; static int test_fn (int n, ...) { va_list ap; struct small_tag s1; struct small_tag s2; struct large_tag l; unsigned char uc; signed char sc; unsigned short us; signed short ss; unsigned int ui; signed int si; unsigned long ul; signed long sl; float f; double d; va_start (ap, n); s1 = va_arg (ap, struct small_tag); l = va_arg (ap, struct large_tag); s2 = va_arg (ap, struct small_tag); uc = va_arg (ap, unsigned); sc = va_arg (ap, signed); us = va_arg (ap, unsigned); ss = va_arg (ap, signed); ui = va_arg (ap, unsigned int); si = va_arg (ap, signed int); ul = va_arg (ap, unsigned long); sl = va_arg (ap, signed long); f = va_arg (ap, double); /* C standard promotes float->double when anonymous */ d = va_arg (ap, double); printf ("%u %u %u %u %u %u %u %u %u uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, s2.a, s2.b, uc, sc, us, ss, ui, si, ul, sl, f, d); va_end (ap); return n + 1; } int main (void) { ffi_cif cif; void* args[15]; ffi_type* arg_types[15]; ffi_type s_type; ffi_type *s_type_elements[3]; ffi_type l_type; ffi_type *l_type_elements[6]; struct small_tag s1; struct small_tag s2; struct large_tag l1; int n; ffi_arg res; unsigned char uc; signed char sc; unsigned short us; signed short ss; unsigned int ui; signed int si; unsigned long ul; signed long sl; double d1; double f1; s_type.size = 0; s_type.alignment = 0; s_type.type = FFI_TYPE_STRUCT; s_type.elements = s_type_elements; s_type_elements[0] = &ffi_type_uchar; s_type_elements[1] = &ffi_type_uchar; s_type_elements[2] = NULL; l_type.size = 0; l_type.alignment = 0; l_type.type = FFI_TYPE_STRUCT; l_type.elements = l_type_elements; l_type_elements[0] = &ffi_type_uint; l_type_elements[1] = &ffi_type_uint; l_type_elements[2] = &ffi_type_uint; l_type_elements[3] = &ffi_type_uint; l_type_elements[4] = &ffi_type_uint; l_type_elements[5] = NULL; arg_types[0] = &ffi_type_sint; arg_types[1] = &s_type; arg_types[2] = &l_type; arg_types[3] = &s_type; arg_types[4] = &ffi_type_uchar; arg_types[5] = &ffi_type_schar; arg_types[6] = &ffi_type_ushort; arg_types[7] = &ffi_type_sshort; arg_types[8] = &ffi_type_uint; arg_types[9] = &ffi_type_sint; arg_types[10] = &ffi_type_ulong; arg_types[11] = &ffi_type_slong; arg_types[12] = &ffi_type_double; arg_types[13] = &ffi_type_double; arg_types[14] = NULL; CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 14, &ffi_type_sint, arg_types) == FFI_OK); s1.a = 5; s1.b = 6; l1.a = 10; l1.b = 11; l1.c = 12; l1.d = 13; l1.e = 14; s2.a = 7; s2.b = 8; n = 41; uc = 9; sc = 10; us = 11; ss = 12; ui = 13; si = 14; ul = 15; sl = 16; f1 = 2.12; d1 = 3.13; args[0] = &n; args[1] = &s1; args[2] = &l1; args[3] = &s2; args[4] = &uc; args[5] = ≻ args[6] = &us; args[7] = &ss; args[8] = &ui; args[9] = &si; args[10] = &ul; args[11] = &sl; args[12] = &f1; args[13] = &d1; args[14] = NULL; ffi_call(&cif, FFI_FN(test_fn), &res, args); /* { dg-output "5 6 10 11 12 13 14 7 8 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */ printf("res: %d\n", (int) res); /* { dg-output "\nres: 42" } */ return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct5.c0000644000175000017500000000534113204034553022552 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20051010 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { long double a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; static B B_fn(struct A b2, struct B b3) { struct B result; result.x.a = b2.a + b3.x.a; result.x.b = b2.b + b3.x.b + b3.y; result.y = b2.b + b3.x.b; printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, (int)b3.x.a, b3.x.b, b3.y, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); *(B*)resp = B_fn(b0, b1); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type cls_struct_type, cls_struct_type1; ffi_type* dbl_arg_types[3]; struct A e_dbl = { 1.0, 7}; struct B f_dbl = {{12.0 , 127}, 99}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_fields[0] = &ffi_type_longdouble; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_sshort.c0000644000175000017500000000322513204034553023173 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple signed short values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" signed short test_func_fn(signed short a1, signed short a2) { signed short result; result = a1 + a2; printf("%d %d: %d\n", a1, a2, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { signed short a1, a2; a1 = *(signed short *)avals[0]; a2 = *(signed short *)avals[1]; *(ffi_arg *)rval = test_func_fn(a1, a2); } typedef signed short (*test_type)(signed short, signed short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[3]; ffi_type * cl_arg_types[3]; ffi_arg res_call; unsigned short a, b, res_closure; a = 2; b = 32765; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = NULL; cl_arg_types[0] = &ffi_type_sshort; cl_arg_types[1] = &ffi_type_sshort; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sshort, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "2 32765: 32767" } */ printf("res: %d\n", (unsigned short)res_call); /* { dg-output "\nres: 32767" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(2, 32765); /* { dg-output "\n2 32765: 32767" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 32767" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_uchar_va.c0000644000175000017500000000207013204034553022224 0ustar daviddavid/* Area: closure_call Purpose: Test anonymous unsigned char argument. Limitations: none. PR: none. Originator: ARM Ltd. */ /* { dg-do run } */ #include "ffitest.h" typedef unsigned char T; static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg *)resp = *(T *)args[0]; printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); } typedef T (*cls_ret_T)(T, ...); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[3]; T res; cl_arg_types[0] = &ffi_type_uchar; cl_arg_types[1] = &ffi_type_uchar; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_uchar, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); res = ((((cls_ret_T)code)(67, 4))); /* { dg-output "67: 67 4" } */ printf("res: %d\n", res); /* { dg-output "\nres: 67" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_ushort.c0000644000175000017500000000325313204034553023176 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple unsigned short values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" unsigned short test_func_fn(unsigned short a1, unsigned short a2) { unsigned short result; result = a1 + a2; printf("%d %d: %d\n", a1, a2, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { unsigned short a1, a2; a1 = *(unsigned short *)avals[0]; a2 = *(unsigned short *)avals[1]; *(ffi_arg *)rval = test_func_fn(a1, a2); } typedef unsigned short (*test_type)(unsigned short, unsigned short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[3]; ffi_type * cl_arg_types[3]; ffi_arg res_call; unsigned short a, b, res_closure; a = 2; b = 32765; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = NULL; cl_arg_types[0] = &ffi_type_ushort; cl_arg_types[1] = &ffi_type_ushort; cl_arg_types[2] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_ushort, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "2 32765: 32767" } */ printf("res: %d\n", (unsigned short)res_call); /* { dg-output "\nres: 32767" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(2, 32765); /* { dg-output "\n2 32765: 32767" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 32767" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/problem1.c0000644000175000017500000000442613204034553021323 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct my_ffi_struct { double a; double b; double c; } my_ffi_struct; my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2) { struct my_ffi_struct result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%g %g %g %g %g %g: %g %g %g\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } void stub(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct my_ffi_struct a1; struct my_ffi_struct a2; a1 = *(struct my_ffi_struct*)(args[0]); a2 = *(struct my_ffi_struct*)(args[1]); *(my_ffi_struct *)resp = callee(a1, a2); } int main(void) { ffi_type* my_ffi_struct_fields[4]; ffi_type my_ffi_struct_type; ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args[4]; ffi_type* arg_types[3]; struct my_ffi_struct g = { 1.0, 2.0, 3.0 }; struct my_ffi_struct f = { 1.0, 2.0, 3.0 }; struct my_ffi_struct res; my_ffi_struct_type.size = 0; my_ffi_struct_type.alignment = 0; my_ffi_struct_type.type = FFI_TYPE_STRUCT; my_ffi_struct_type.elements = my_ffi_struct_fields; my_ffi_struct_fields[0] = &ffi_type_double; my_ffi_struct_fields[1] = &ffi_type_double; my_ffi_struct_fields[2] = &ffi_type_double; my_ffi_struct_fields[3] = NULL; arg_types[0] = &my_ffi_struct_type; arg_types[1] = &my_ffi_struct_type; arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &my_ffi_struct_type, arg_types) == FFI_OK); args[0] = &g; args[1] = &f; args[2] = NULL; ffi_call(&cif, FFI_FN(callee), &res, args); /* { dg-output "1 2 3 1 2 3: 2 4 6" } */ printf("res: %g %g %g\n", res.a, res.b, res.c); /* { dg-output "\nres: 2 4 6" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, stub, NULL, code) == FFI_OK); res = ((my_ffi_struct(*)(struct my_ffi_struct, struct my_ffi_struct))(code))(g, f); /* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */ printf("res: %g %g %g\n", res.a, res.b, res.c); /* { dg-output "\nres: 2 4 6" } */ exit(0);; } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn6.c0000644000175000017500000000602313204034553022022 0ustar daviddavid/* Area: closure_call Purpose: Check multiple values passing from different type. Also, exceed the limit of gpr and fpr registers on PowerPC. Limitations: none. PR: PR23404 Originator: 20050830 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(unsigned long long *)args[0] + (int)(*(unsigned long long *)args[1]) + (int)(*(unsigned long long *)args[2]) + (int)*(unsigned long long *)args[3] + (int)(*(int *)args[4]) + (int)(*(double *)args[5]) + (int)*(double *)args[6] + (int)(*(float *)args[7]) + (int)(*(double *)args[8]) + (int)*(double *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(int *)args[13]) + (int)(*(double *)args[14]) + (int)*(double *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(unsigned long long *)args[0], (int)(*(unsigned long long *)args[1]), (int)(*(unsigned long long *)args[2]), (int)*(unsigned long long *)args[3], (int)(*(int *)args[4]), (int)(*(double *)args[5]), (int)*(double *)args[6], (int)(*(float *)args[7]), (int)(*(double *)args[8]), (int)*(double *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(int *)args[13]), (int)(*(double *)args[14]), (int)(*(double *)args[15]), (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type0)(unsigned long long, unsigned long long, unsigned long long, unsigned long long, int, double, double, float, double, double, int, float, int, int, double, double); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; cl_arg_types[0] = &ffi_type_uint64; cl_arg_types[1] = &ffi_type_uint64; cl_arg_types[2] = &ffi_type_uint64; cl_arg_types[3] = &ffi_type_uint64; cl_arg_types[4] = &ffi_type_sint; cl_arg_types[5] = &ffi_type_double; cl_arg_types[6] = &ffi_type_double; cl_arg_types[7] = &ffi_type_float; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_double; cl_arg_types[10] = &ffi_type_sint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_sint; cl_arg_types[14] = &ffi_type_double; cl_arg_types[15] = &ffi_type_double; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type0)code)) (1, 2, 3, 4, 127, 429., 7., 8., 9.5, 10., 11, 12., 13, 19, 21., 1.); /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ printf("res: %d\n",res); /* { dg-output "\nres: 680" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_fl1.c0000644000175000017500000000136313204034553021660 0ustar daviddavid/* Area: ffi_call Purpose: Check return value float. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static float return_fl(float fl1, float fl2) { return fl1 + fl2; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; float fl1, fl2, rfl; args[0] = &ffi_type_float; args[1] = &ffi_type_float; values[0] = &fl1; values[1] = &fl2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_float, args) == FFI_OK); fl1 = 127.0; fl2 = 128.0; ffi_call(&cif, FFI_FN(return_fl), &rfl, values); printf ("%f vs %f\n", rfl, return_fl(fl1, fl2)); CHECK(rfl == fl1 + fl2); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_double.c0000644000175000017500000000472613204034553023072 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of double. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; double b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/negint.c0000644000175000017500000000164113204034553021062 0ustar daviddavid/* Area: ffi_call Purpose: Check that negative integers are passed correctly. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static int checking(int a, short b, signed char c) { return (a < 0 && b < 0 && c < 0); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; signed int si; signed short ss; signed char sc; args[0] = &ffi_type_sint; values[0] = &si; args[1] = &ffi_type_sshort; values[1] = &ss; args[2] = &ffi_type_schar; values[2] = ≻ /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_sint, args) == FFI_OK); si = -6; ss = -12; sc = -1; checking (si, ss, sc); ffi_call(&cif, FFI_FN(checking), &rint, values); printf ("%d vs %d\n", (int)rint, checking (si, ss, sc)); CHECK(rint != 0); exit (0); } polyml-5.7.1/libffi/testsuite/libffi.call/promotion.c0000644000175000017500000000251113204034553021621 0ustar daviddavid/* Area: ffi_call Purpose: Promotion test. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static int promotion(signed char sc, signed short ss, unsigned char uc, unsigned short us) { int r = (int) sc + (int) ss + (int) uc + (int) us; return r; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; signed char sc; unsigned char uc; signed short ss; unsigned short us; unsigned long ul; args[0] = &ffi_type_schar; args[1] = &ffi_type_sshort; args[2] = &ffi_type_uchar; args[3] = &ffi_type_ushort; values[0] = ≻ values[1] = &ss; values[2] = &uc; values[3] = &us; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_sint, args) == FFI_OK); us = 0; ul = 0; for (sc = (signed char) -127; sc <= (signed char) 120; sc += 1) for (ss = -30000; ss <= 30000; ss += 10000) for (uc = (unsigned char) 0; uc <= (unsigned char) 200; uc += 20) for (us = 0; us <= 60000; us += 10000) { ul++; ffi_call(&cif, FFI_FN(promotion), &rint, values); CHECK((int)rint == (signed char) sc + (signed short) ss + (unsigned char) uc + (unsigned short) us); } printf("%lu promotion tests run\n", ul); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct1_win32.c0000644000175000017500000000266313204034553022232 0ustar daviddavid/* Area: ffi_call Purpose: Check structures with fastcall/thiscall convention. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" typedef struct { unsigned char uc; double d; unsigned int ui; } test_structure_1; static test_structure_1 __FASTCALL__ struct1(test_structure_1 ts) { ts.uc++; ts.d--; ts.ui++; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts1_type; ffi_type *ts1_type_elements[4]; test_structure_1 ts1_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_1 *ts1_result = (test_structure_1 *) malloc (sizeof(test_structure_1)); ts1_type.size = 0; ts1_type.alignment = 0; ts1_type.type = FFI_TYPE_STRUCT; ts1_type.elements = ts1_type_elements; ts1_type_elements[0] = &ffi_type_uchar; ts1_type_elements[1] = &ffi_type_double; ts1_type_elements[2] = &ffi_type_uint; ts1_type_elements[3] = NULL; args[0] = &ts1_type; values[0] = &ts1_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 1, &ts1_type, args) == FFI_OK); ts1_arg.uc = '\x01'; ts1_arg.d = 3.14159; ts1_arg.ui = 555; ffi_call(&cif, FFI_FN(struct1), ts1_result, values); CHECK(ts1_result->ui == 556); CHECK(ts1_result->d == 3.14159 - 1); free (ts1_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_multi_sshortchar.c0000644000175000017500000000401513204034553024027 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check passing of multiple signed short/char values. Limitations: none. PR: PR13221. Originator: 20031129 */ /* { dg-do run } */ #include "ffitest.h" signed short test_func_fn(signed char a1, signed short a2, signed char a3, signed short a4) { signed short result; result = a1 + a2 + a3 + a4; printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); return result; } static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__) { signed char a1, a3; signed short a2, a4; a1 = *(signed char *)avals[0]; a2 = *(signed short *)avals[1]; a3 = *(signed char *)avals[2]; a4 = *(signed short *)avals[3]; *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); } typedef signed short (*test_type)(signed char, signed short, signed char, signed short); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void * args_dbl[5]; ffi_type * cl_arg_types[5]; ffi_arg res_call; signed char a, c; signed short b, d, res_closure; a = 1; b = 32765; c = 127; d = -128; args_dbl[0] = &a; args_dbl[1] = &b; args_dbl[2] = &c; args_dbl[3] = &d; args_dbl[4] = NULL; cl_arg_types[0] = &ffi_type_schar; cl_arg_types[1] = &ffi_type_sshort; cl_arg_types[2] = &ffi_type_schar; cl_arg_types[3] = &ffi_type_sshort; cl_arg_types[4] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_sshort, cl_arg_types) == FFI_OK); ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); /* { dg-output "1 32765 127 -128: 32765" } */ printf("res: %d\n", (signed short)res_call); /* { dg-output "\nres: 32765" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); res_closure = (*((test_type)code))(1, 32765, 127, -128); /* { dg-output "\n1 32765 127 -128: 32765" } */ printf("res: %d\n", res_closure); /* { dg-output "\nres: 32765" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_uint.c0000644000175000017500000000210313204034553021410 0ustar daviddavid/* Area: closure_call Purpose: Check return value uint. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg *)resp = *(unsigned int *)args[0]; printf("%d: %d\n",*(unsigned int *)args[0], (int)*(ffi_arg *)(resp)); } typedef unsigned int (*cls_ret_uint)(unsigned int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; unsigned int res; cl_arg_types[0] = &ffi_type_uint; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_uint_fn, NULL, code) == FFI_OK); res = (*((cls_ret_uint)code))(2147483647); /* { dg-output "2147483647: 2147483647" } */ printf("res: %d\n",res); /* { dg-output "\nres: 2147483647" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_uc.c0000644000175000017500000000135313204034553021604 0ustar daviddavid/* Area: ffi_call Purpose: Check return value unsigned char. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static unsigned char return_uc(unsigned char uc) { return uc; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; unsigned char uc; args[0] = &ffi_type_uchar; values[0] = &uc; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uchar, args) == FFI_OK); for (uc = (unsigned char) '\x00'; uc < (unsigned char) '\xff'; uc++) { ffi_call(&cif, FFI_FN(return_uc), &rint, values); CHECK((unsigned char)rint == uc); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/strlen_win32.c0000644000175000017500000000174513204034553022134 0ustar daviddavid/* Area: ffi_call Purpose: Check stdcall strlen call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static size_t __attribute__((stdcall)) my_stdcall_strlen(char *s) { return (strlen(s)); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; args[0] = &ffi_type_pointer; values[0] = (void*) &s; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 1, &ffi_type_sint, args) == FFI_OK); s = "a"; ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); CHECK(rint == 1); s = "1234567"; ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); CHECK(rint == 7); s = "1234567890123456789012345"; ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); CHECK(rint == 25); printf("stdcall strlen tests passed\n"); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn0.c0000644000175000017500000000565113204034553022022 0ustar daviddavid/* Area: closure_call Purpose: Check multiple values passing from different type. Also, exceed the limit of gpr and fpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(unsigned long long *)args[0] + (int)(*(int *)args[1]) + (int)(*(unsigned long long *)args[2]) + (int)*(int *)args[3] + (int)(*(signed short *)args[4]) + (int)(*(unsigned long long *)args[5]) + (int)*(int *)args[6] + (int)(*(int *)args[7]) + (int)(*(double *)args[8]) + (int)*(int *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(int *)args[13]) + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(unsigned long long *)args[0], (int)(*(int *)args[1]), (int)(*(unsigned long long *)args[2]), (int)*(int *)args[3], (int)(*(signed short *)args[4]), (int)(*(unsigned long long *)args[5]), (int)*(int *)args[6], (int)(*(int *)args[7]), (int)(*(double *)args[8]), (int)*(int *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(int *)args[13]), (int)(*(int *)args[14]),*(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type0)(unsigned long long, int, unsigned long long, int, signed short, unsigned long long, int, int, double, int, int, float, int, int, int, int); int main (void) { ffi_cif cif; void * code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int res; cl_arg_types[0] = &ffi_type_uint64; cl_arg_types[1] = &ffi_type_sint; cl_arg_types[2] = &ffi_type_uint64; cl_arg_types[3] = &ffi_type_sint; cl_arg_types[4] = &ffi_type_sshort; cl_arg_types[5] = &ffi_type_uint64; cl_arg_types[6] = &ffi_type_sint; cl_arg_types[7] = &ffi_type_sint; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_sint; cl_arg_types[10] = &ffi_type_sint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_sint; cl_arg_types[13] = &ffi_type_sint; cl_arg_types[14] = &ffi_type_sint; cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type0)code)) (1LL, 2, 3LL, 4, 127, 429LL, 7, 8, 9.5, 10, 11, 12, 13, 19, 21, 1); /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ printf("res: %d\n",res); /* { dg-output "\nres: 680" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct2.c0000644000175000017500000000260213204034553021202 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { double d1; double d2; } test_structure_2; static test_structure_2 ABI_ATTR struct2(test_structure_2 ts) { ts.d1--; ts.d2--; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; test_structure_2 ts2_arg; ffi_type ts2_type; ffi_type *ts2_type_elements[3]; /* This is a hack to get a properly aligned result buffer */ test_structure_2 *ts2_result = (test_structure_2 *) malloc (sizeof(test_structure_2)); ts2_type.size = 0; ts2_type.alignment = 0; ts2_type.type = FFI_TYPE_STRUCT; ts2_type.elements = ts2_type_elements; ts2_type_elements[0] = &ffi_type_double; ts2_type_elements[1] = &ffi_type_double; ts2_type_elements[2] = NULL; args[0] = &ts2_type; values[0] = &ts2_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK); ts2_arg.d1 = 5.55; ts2_arg.d2 = 6.66; printf ("%g\n", ts2_arg.d1); printf ("%g\n", ts2_arg.d2); ffi_call(&cif, FFI_FN(struct2), ts2_result, values); printf ("%g\n", ts2_result->d1); printf ("%g\n", ts2_result->d2); CHECK(ts2_result->d1 == 5.55 - 1); CHECK(ts2_result->d2 == 6.66 - 1); free (ts2_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/stret_medium2.c0000644000175000017500000000746113204034553022367 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure returning with different structure size. Depending on the ABI. Check bigger struct which overlaps the gp and fp register count on Darwin/AIX/ppc64. Limitations: none. PR: none. Originator: Blake Chaffin 6/21/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ #include "ffitest.h" typedef struct struct_72byte { double a; double b; double c; double d; double e; double f; double g; double h; long long i; } struct_72byte; struct_72byte cls_struct_72byte_fn( struct_72byte b0, struct_72byte b1, struct_72byte b2, struct_72byte b3) { struct_72byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; result.e = b0.e + b1.e + b2.e + b3.e; result.f = b0.f + b1.f + b2.f + b3.f; result.g = b0.g + b1.g + b2.g + b3.g; result.h = b0.h + b1.h + b2.h + b3.h; result.i = b0.i + b1.i + b2.i + b3.i; printf("%g %g %g %g %g %g %g %g %" PRIdLL "\n", result.a, result.b, result.c, result.d, result.e, result.f, result.g, result.h, result.i); return result; } static void cls_struct_72byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct_72byte b0, b1, b2, b3; b0 = *(struct_72byte*)(args[0]); b1 = *(struct_72byte*)(args[1]); b2 = *(struct_72byte*)(args[2]); b3 = *(struct_72byte*)(args[3]); *(struct_72byte*)resp = cls_struct_72byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[10]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 }; struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 }; struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 }; struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 }; struct_72byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_double; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_double; cls_struct_fields[7] = &ffi_type_double; cls_struct_fields[8] = &ffi_type_sint64; cls_struct_fields[9] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_72byte_fn), &res_dbl, args_dbl); /* { dg-output "22 15 17 25 6 13 19 18 16" } */ printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_72byte_gn, NULL, code) == FFI_OK); res_dbl = ((struct_72byte(*)(struct_72byte, struct_72byte, struct_72byte, struct_72byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n22 15 17 25 6 13 19 18 16" } */ printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_dbl2.c0000644000175000017500000000175513204034553022026 0ustar daviddavid/* Area: ffi_call Purpose: Check return value double. Limitations: none. PR: none. Originator: 20050212 */ /* { dg-do run } */ #include "ffitest.h" static double return_dbl(double dbl1, double dbl2, unsigned int in3, double dbl4) { return dbl1 + dbl2 + in3 + dbl4; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; double dbl1, dbl2, dbl4, rdbl; unsigned int in3; args[0] = &ffi_type_double; args[1] = &ffi_type_double; args[2] = &ffi_type_uint; args[3] = &ffi_type_double; values[0] = &dbl1; values[1] = &dbl2; values[2] = &in3; values[3] = &dbl4; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &ffi_type_double, args) == FFI_OK); dbl1 = 127.0; dbl2 = 128.0; in3 = 255; dbl4 = 512.7; ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); printf ("%f vs %f\n", rdbl, return_dbl(dbl1, dbl2, in3, dbl4)); CHECK(rdbl == dbl1 + dbl2 + in3 + dbl4); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_align_float.c0000644000175000017500000000477113204034553022725 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure alignment of float. Limitations: none. PR: none. Originator: 20031203 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_align { unsigned char a; float b; unsigned char c; } cls_struct_align; cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, struct cls_struct_align a2) { struct cls_struct_align result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); return result; } static void cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_align a1, a2; a1 = *(struct cls_struct_align*)(args[0]); a2 = *(struct cls_struct_align*)(args[1]); *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_align g_dbl = { 12, 4951, 127 }; struct cls_struct_align f_dbl = { 1, 9320, 13 }; struct cls_struct_align res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_float; cls_struct_fields[2] = &ffi_type_uchar; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); /* { dg-output "\nres: 13 14271 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/many2.c0000644000175000017500000000205613204034553020625 0ustar daviddavid/* Area: ffi_call Purpose: Check uint8_t arguments. Limitations: none. PR: PR45677. Originator: Dan Witte 20100916 */ /* { dg-do run } */ #include "ffitest.h" #define NARGS 7 typedef unsigned char u8; #ifdef __GNUC__ __attribute__((noinline)) #endif uint8_t foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f, uint8_t g) { return a + b + c + d + e + f + g; } uint8_t ABI_ATTR bar (uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f, uint8_t g) { return foo (a, b, c, d, e, f, g); } int main (void) { ffi_type *ffitypes[NARGS]; int i; ffi_cif cif; ffi_arg result = 0; uint8_t args[NARGS]; void *argptrs[NARGS]; for (i = 0; i < NARGS; ++i) ffitypes[i] = &ffi_type_uint8; CHECK (ffi_prep_cif (&cif, ABI_NUM, NARGS, &ffi_type_uint8, ffitypes) == FFI_OK); for (i = 0; i < NARGS; ++i) { args[i] = i; argptrs[i] = &args[i]; } ffi_call (&cif, FFI_FN (bar), &result, argptrs); CHECK (result == 21); return 0; } polyml-5.7.1/libffi/testsuite/libffi.call/cls_float.c0000644000175000017500000000204613204034553021544 0ustar daviddavid/* Area: closure_call Purpose: Check return value float. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(float *)resp = *(float *)args[0]; printf("%g: %g\n",*(float *)args[0], *(float *)resp); } typedef float (*cls_ret_float)(float); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; float res; cl_arg_types[0] = &ffi_type_float; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_float, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_float_fn, NULL, code) == FFI_OK); res = ((((cls_ret_float)code)(-2122.12))); /* { dg-output "\\-2122.12: \\-2122.12" } */ printf("res: %.6f\n", res); /* { dg-output "\nres: \-2122.120117" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct2_win32.c0000644000175000017500000000271713204034553022233 0ustar daviddavid/* Area: ffi_call Purpose: Check structures in fastcall/stdcall function Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" typedef struct { double d1; double d2; } test_structure_2; static test_structure_2 __FASTCALL__ struct2(test_structure_2 ts) { ts.d1--; ts.d2--; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; test_structure_2 ts2_arg; ffi_type ts2_type; ffi_type *ts2_type_elements[3]; /* This is a hack to get a properly aligned result buffer */ test_structure_2 *ts2_result = (test_structure_2 *) malloc (sizeof(test_structure_2)); ts2_type.size = 0; ts2_type.alignment = 0; ts2_type.type = FFI_TYPE_STRUCT; ts2_type.elements = ts2_type_elements; ts2_type_elements[0] = &ffi_type_double; ts2_type_elements[1] = &ffi_type_double; ts2_type_elements[2] = NULL; args[0] = &ts2_type; values[0] = &ts2_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 1, &ts2_type, args) == FFI_OK); ts2_arg.d1 = 5.55; ts2_arg.d2 = 6.66; printf ("%g\n", ts2_arg.d1); printf ("%g\n", ts2_arg.d2); ffi_call(&cif, FFI_FN(struct2), ts2_result, values); printf ("%g\n", ts2_result->d1); printf ("%g\n", ts2_result->d2); CHECK(ts2_result->d1 == 5.55 - 1); CHECK(ts2_result->d2 == 6.66 - 1); free (ts2_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/strlen.c0000644000175000017500000000151413204034553021104 0ustar daviddavid/* Area: ffi_call Purpose: Check strlen function call. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" static size_t ABI_ATTR my_strlen(char *s) { return (strlen(s)); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; args[0] = &ffi_type_pointer; values[0] = (void*) &s; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ffi_type_sint, args) == FFI_OK); s = "a"; ffi_call(&cif, FFI_FN(my_strlen), &rint, values); CHECK(rint == 1); s = "1234567"; ffi_call(&cif, FFI_FN(my_strlen), &rint, values); CHECK(rint == 7); s = "1234567890123456789012345"; ffi_call(&cif, FFI_FN(my_strlen), &rint, values); CHECK(rint == 25); exit (0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_sl.c0000644000175000017500000000133313204034553021611 0ustar daviddavid/* Area: ffi_call Purpose: Check if long as return type is handled correctly. Limitations: none. PR: none. */ /* { dg-do run } */ #include "ffitest.h" static long return_sl(long l1, long l2) { return l1 - l2; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg res; unsigned long l1, l2; args[0] = &ffi_type_slong; args[1] = &ffi_type_slong; values[0] = &l1; values[1] = &l2; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_slong, args) == FFI_OK); l1 = 1073741823L; l2 = 1073741824L; ffi_call(&cif, FFI_FN(return_sl), &res, values); printf("res: %ld, %ld\n", (long)res, l1 - l2); /* { dg-output "res: -1, -1" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_ulonglong.c0000644000175000017500000000273113204034553022444 0ustar daviddavid/* Area: closure_call Purpose: Check return value long long. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ #include "ffitest.h" static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0]; printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0], *(unsigned long long *)(resp)); } typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[2]; unsigned long long res; cl_arg_types[0] = &ffi_type_uint64; cl_arg_types[1] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uint64, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code) == FFI_OK); res = (*((cls_ret_ulonglong)code))(214LL); /* { dg-output "214: 1152921504606846761" } */ printf("res: %" PRIdLL "\n", res); /* { dg-output "\nres: 1152921504606846761" } */ res = (*((cls_ret_ulonglong)code))(9223372035854775808LL); /* { dg-output "\n9223372035854775808: 8070450533247928831" } */ printf("res: %" PRIdLL "\n", res); /* { dg-output "\nres: 8070450533247928831" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/strlen2_win32.c0000644000175000017500000000174013204034553022211 0ustar daviddavid/* Area: ffi_call Purpose: Check fastcall strlen call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static size_t __FASTCALL__ my_fastcall_strlen(char *s) { return (strlen(s)); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; args[0] = &ffi_type_pointer; values[0] = (void*) &s; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 1, &ffi_type_sint, args) == FFI_OK); s = "a"; ffi_call(&cif, FFI_FN(my_fastcall_strlen), &rint, values); CHECK(rint == 1); s = "1234567"; ffi_call(&cif, FFI_FN(my_fastcall_strlen), &rint, values); CHECK(rint == 7); s = "1234567890123456789012345"; ffi_call(&cif, FFI_FN(my_fastcall_strlen), &rint, values); CHECK(rint == 25); printf("fastcall strlen tests passed\n"); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct5.c0000644000175000017500000000256313204034553021213 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { char c1; char c2; } test_structure_5; static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2) { ts1.c1 += ts2.c1; ts1.c2 -= ts2.c2; return ts1; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts5_type; ffi_type *ts5_type_elements[3]; test_structure_5 ts5_arg1, ts5_arg2; /* This is a hack to get a properly aligned result buffer */ test_structure_5 *ts5_result = (test_structure_5 *) malloc (sizeof(test_structure_5)); ts5_type.size = 0; ts5_type.alignment = 0; ts5_type.type = FFI_TYPE_STRUCT; ts5_type.elements = ts5_type_elements; ts5_type_elements[0] = &ffi_type_schar; ts5_type_elements[1] = &ffi_type_schar; ts5_type_elements[2] = NULL; args[0] = &ts5_type; args[1] = &ts5_type; values[0] = &ts5_arg1; values[1] = &ts5_arg2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK); ts5_arg1.c1 = 2; ts5_arg1.c2 = 6; ts5_arg2.c1 = 5; ts5_arg2.c2 = 3; ffi_call (&cif, FFI_FN(struct5), ts5_result, values); CHECK(ts5_result->c1 == 7); CHECK(ts5_result->c2 == 3); free (ts5_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/closure_fn5.c0000644000175000017500000000577113204034553022032 0ustar daviddavid/* Area: closure_call Purpose: Check multiple long long values passing. Exceed the limit of gpr registers on PowerPC Darwin. Limitations: none. PR: none. Originator: 20031026 */ /* { dg-do run } */ #include "ffitest.h" static void closure_test_fn5(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) { *(ffi_arg*)resp = (int)*(unsigned long long *)args[0] + (int)*(unsigned long long *)args[1] + (int)*(unsigned long long *)args[2] + (int)*(unsigned long long *)args[3] + (int)*(unsigned long long *)args[4] + (int)*(unsigned long long *)args[5] + (int)*(unsigned long long *)args[6] + (int)*(unsigned long long *)args[7] + (int)*(unsigned long long *)args[8] + (int)*(unsigned long long *)args[9] + (int)*(int *)args[10] + (int)*(unsigned long long *)args[11] + (int)*(unsigned long long *)args[12] + (int)*(unsigned long long *)args[13] + (int)*(unsigned long long *)args[14] + *(int *)args[15] + (intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(unsigned long long *)args[0], (int)*(unsigned long long *)args[1], (int)*(unsigned long long *)args[2], (int)*(unsigned long long *)args[3], (int)*(unsigned long long *)args[4], (int)*(unsigned long long *)args[5], (int)*(unsigned long long *)args[6], (int)*(unsigned long long *)args[7], (int)*(unsigned long long *)args[8], (int)*(unsigned long long *)args[9], (int)*(int *)args[10], (int)*(unsigned long long *)args[11], (int)*(unsigned long long *)args[12], (int)*(unsigned long long *)args[13], (int)*(unsigned long long *)args[14], *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); } typedef int (*closure_test_type0)(unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, int, unsigned long long, unsigned long long, unsigned long long, unsigned long long, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; int i, res; for (i = 0; i < 10; i++) { cl_arg_types[i] = &ffi_type_uint64; } cl_arg_types[10] = &ffi_type_sint; for (i = 11; i < 15; i++) { cl_arg_types[i] = &ffi_type_uint64; } cl_arg_types[15] = &ffi_type_sint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn5, (void *) 3 /* userdata */, code) == FFI_OK); res = (*((closure_test_type0)code)) (1LL, 2LL, 3LL, 4LL, 127LL, 429LL, 7LL, 8LL, 9LL, 10LL, 11, 12LL, 13LL, 19LL, 21LL, 1); /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ printf("res: %d\n",res); /* { dg-output "\nres: 680" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct7.c0000644000175000017500000000310113204034553021202 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { float f1; float f2; double d; } test_structure_7; static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts) { ts.f1 += 1; ts.f2 += 1; ts.d += 1; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts7_type; ffi_type *ts7_type_elements[4]; test_structure_7 ts7_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_7 *ts7_result = (test_structure_7 *) malloc (sizeof(test_structure_7)); ts7_type.size = 0; ts7_type.alignment = 0; ts7_type.type = FFI_TYPE_STRUCT; ts7_type.elements = ts7_type_elements; ts7_type_elements[0] = &ffi_type_float; ts7_type_elements[1] = &ffi_type_float; ts7_type_elements[2] = &ffi_type_double; ts7_type_elements[3] = NULL; args[0] = &ts7_type; values[0] = &ts7_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK); ts7_arg.f1 = 5.55f; ts7_arg.f2 = 55.5f; ts7_arg.d = 6.66; printf ("%g\n", ts7_arg.f1); printf ("%g\n", ts7_arg.f2); printf ("%g\n", ts7_arg.d); ffi_call(&cif, FFI_FN(struct7), ts7_result, values); printf ("%g\n", ts7_result->f1); printf ("%g\n", ts7_result->f2); printf ("%g\n", ts7_result->d); CHECK(ts7_result->f1 == 5.55f + 1); CHECK(ts7_result->f2 == 55.5f + 1); CHECK(ts7_result->d == 6.66 + 1); free (ts7_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/stret_medium.c0000644000175000017500000000733513204034553022305 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure returning with different structure size. Depending on the ABI. Check bigger struct which overlaps the gp and fp register count on Darwin/AIX/ppc64. Limitations: none. PR: none. Originator: Blake Chaffin 6/21/2007 */ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ #include "ffitest.h" typedef struct struct_72byte { double a; double b; double c; double d; double e; double f; double g; double h; double i; } struct_72byte; struct_72byte cls_struct_72byte_fn( struct_72byte b0, struct_72byte b1, struct_72byte b2, struct_72byte b3) { struct_72byte result; result.a = b0.a + b1.a + b2.a + b3.a; result.b = b0.b + b1.b + b2.b + b3.b; result.c = b0.c + b1.c + b2.c + b3.c; result.d = b0.d + b1.d + b2.d + b3.d; result.e = b0.e + b1.e + b2.e + b3.e; result.f = b0.f + b1.f + b2.f + b3.f; result.g = b0.g + b1.g + b2.g + b3.g; result.h = b0.h + b1.h + b2.h + b3.h; result.i = b0.i + b1.i + b2.i + b3.i; printf("%g %g %g %g %g %g %g %g %g\n", result.a, result.b, result.c, result.d, result.e, result.f, result.g, result.h, result.i); return result; } static void cls_struct_72byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct_72byte b0, b1, b2, b3; b0 = *(struct_72byte*)(args[0]); b1 = *(struct_72byte*)(args[1]); b2 = *(struct_72byte*)(args[2]); b3 = *(struct_72byte*)(args[3]); *(struct_72byte*)resp = cls_struct_72byte_fn(b0, b1, b2, b3); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[10]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7.0 }; struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0 }; struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3.0 }; struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2.0 }; struct_72byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_double; cls_struct_fields[3] = &ffi_type_double; cls_struct_fields[4] = &ffi_type_double; cls_struct_fields[5] = &ffi_type_double; cls_struct_fields[6] = &ffi_type_double; cls_struct_fields[7] = &ffi_type_double; cls_struct_fields[8] = &ffi_type_double; cls_struct_fields[9] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = &cls_struct_type; dbl_arg_types[3] = &cls_struct_type; dbl_arg_types[4] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = &g_dbl; args_dbl[3] = &h_dbl; args_dbl[4] = NULL; ffi_call(&cif, FFI_FN(cls_struct_72byte_fn), &res_dbl, args_dbl); /* { dg-output "22 15 17 25 6 13 19 18 16" } */ printf("res: %g %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_72byte_gn, NULL, code) == FFI_OK); res_dbl = ((struct_72byte(*)(struct_72byte, struct_72byte, struct_72byte, struct_72byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); /* { dg-output "\n22 15 17 25 6 13 19 18 16" } */ printf("res: %g %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_4byte.c0000644000175000017500000000454313204034553021472 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_4byte { unsigned short a; unsigned short b; } cls_struct_4byte; cls_struct_4byte cls_struct_4byte_fn(struct cls_struct_4byte a1, struct cls_struct_4byte a2) { struct cls_struct_4byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); return result; } static void cls_struct_4byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_4byte a1, a2; a1 = *(struct cls_struct_4byte*)(args[0]); a2 = *(struct cls_struct_4byte*)(args[1]); *(cls_struct_4byte*)resp = cls_struct_4byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_4byte g_dbl = { 127, 120 }; struct cls_struct_4byte f_dbl = { 12, 128 }; struct cls_struct_4byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_ushort; cls_struct_fields[1] = &ffi_type_ushort; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_4byte_fn), &res_dbl, args_dbl); /* { dg-output "127 120 12 128: 139 248" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 139 248" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_4byte(*)(cls_struct_4byte, cls_struct_4byte))(code))(g_dbl, f_dbl); /* { dg-output "\n127 120 12 128: 139 248" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 139 248" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_20byte.c0000644000175000017500000000475313204034553021553 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Depending on the ABI. Check overlapping. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_20byte { double a; double b; int c; } cls_struct_20byte; cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, struct cls_struct_20byte a2) { struct cls_struct_20byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; result.c = a1.c + a2.c; printf("%g %g %d %g %g %d: %g %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); return result; } static void cls_struct_20byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_20byte a1, a2; a1 = *(struct cls_struct_20byte*)(args[0]); a2 = *(struct cls_struct_20byte*)(args[1]); *(cls_struct_20byte*)resp = cls_struct_20byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 }; struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 }; struct cls_struct_20byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_double; cls_struct_fields[1] = &ffi_type_double; cls_struct_fields[2] = &ffi_type_sint; cls_struct_fields[3] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_20byte_fn), &res_dbl, args_dbl); /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 5 7 10" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_20byte(*)(cls_struct_20byte, cls_struct_20byte))(code))(g_dbl, f_dbl); /* { dg-output "\n1 2 3 4 5 7: 5 7 10" } */ printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); /* { dg-output "\nres: 5 7 10" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/nested_struct3.c0000644000175000017500000000533413204034553022552 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Contains structs as parameter of the struct itself. Sample taken from Alan Modras patch to src/prep_cif.c. Limitations: none. PR: none. Originator: 20030911 */ /* { dg-do run } */ #include "ffitest.h" typedef struct A { unsigned long long a; unsigned char b; } A; typedef struct B { struct A x; unsigned char y; } B; B B_fn(struct A b0, struct B b1) { struct B result; result.x.a = b0.a + b1.x.a; result.x.b = b0.b + b1.x.b + b1.y; result.y = b0.b + b1.x.b; printf("%d %d %d %d %d: %d %d %d\n", (int)b0.a, b0.b, (int)b1.x.a, b1.x.b, b1.y, (int)result.x.a, result.x.b, result.y); return result; } static void B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct A b0; struct B b1; b0 = *(struct A*)(args[0]); b1 = *(struct B*)(args[1]); *(B*)resp = B_fn(b0, b1); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[3]; ffi_type* cls_struct_fields[3]; ffi_type* cls_struct_fields1[3]; ffi_type cls_struct_type, cls_struct_type1; ffi_type* dbl_arg_types[3]; struct A e_dbl = { 1LL, 7}; struct B f_dbl = {{12LL , 127}, 99}; struct B res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_type1.size = 0; cls_struct_type1.alignment = 0; cls_struct_type1.type = FFI_TYPE_STRUCT; cls_struct_type1.elements = cls_struct_fields1; cls_struct_fields[0] = &ffi_type_uint64; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; cls_struct_fields1[0] = &cls_struct_type; cls_struct_fields1[1] = &ffi_type_uchar; cls_struct_fields1[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type1; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, dbl_arg_types) == FFI_OK); args_dbl[0] = &e_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/cls_2byte.c0000644000175000017500000000460013204034553021462 0ustar daviddavid/* Area: ffi_call, closure_call Purpose: Check structure passing with different structure size. Especially with small structures which may fit in one register. Depending on the ABI. Limitations: none. PR: none. Originator: 20030828 */ /* { dg-do run } */ #include "ffitest.h" typedef struct cls_struct_2byte { unsigned char a; unsigned char b; } cls_struct_2byte; cls_struct_2byte cls_struct_2byte_fn(struct cls_struct_2byte a1, struct cls_struct_2byte a2) { struct cls_struct_2byte result; result.a = a1.a + a2.a; result.b = a1.b + a2.b; printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); return result; } static void cls_struct_2byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { struct cls_struct_2byte a1, a2; a1 = *(struct cls_struct_2byte*)(args[0]); a2 = *(struct cls_struct_2byte*)(args[1]); *(cls_struct_2byte*)resp = cls_struct_2byte_fn(a1, a2); } int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); void* args_dbl[5]; ffi_type* cls_struct_fields[4]; ffi_type cls_struct_type; ffi_type* dbl_arg_types[5]; struct cls_struct_2byte g_dbl = { 12, 127 }; struct cls_struct_2byte f_dbl = { 1, 13 }; struct cls_struct_2byte res_dbl; cls_struct_type.size = 0; cls_struct_type.alignment = 0; cls_struct_type.type = FFI_TYPE_STRUCT; cls_struct_type.elements = cls_struct_fields; cls_struct_fields[0] = &ffi_type_uchar; cls_struct_fields[1] = &ffi_type_uchar; cls_struct_fields[2] = NULL; dbl_arg_types[0] = &cls_struct_type; dbl_arg_types[1] = &cls_struct_type; dbl_arg_types[2] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, dbl_arg_types) == FFI_OK); args_dbl[0] = &g_dbl; args_dbl[1] = &f_dbl; args_dbl[2] = NULL; ffi_call(&cif, FFI_FN(cls_struct_2byte_fn), &res_dbl, args_dbl); /* { dg-output "12 127 1 13: 13 140" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 13 140" } */ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_2byte_gn, NULL, code) == FFI_OK); res_dbl = ((cls_struct_2byte(*)(cls_struct_2byte, cls_struct_2byte))(code))(g_dbl, f_dbl); /* { dg-output "\n12 127 1 13: 13 140" } */ printf("res: %d %d\n", res_dbl.a, res_dbl.b); /* { dg-output "\nres: 13 140" } */ exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/return_ldl.c0000644000175000017500000000135313204034553021750 0ustar daviddavid/* Area: ffi_call Purpose: Check return value long double. Limitations: none. PR: none. Originator: 20071113 */ /* { dg-do run { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ #include "ffitest.h" static long double return_ldl(long double ldl) { return 2*ldl; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; long double ldl, rldl; args[0] = &ffi_type_longdouble; values[0] = &ldl; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_longdouble, args) == FFI_OK); for (ldl = -127.0; ldl < 127.0; ldl++) { ffi_call(&cif, FFI_FN(return_ldl), &rldl, values); CHECK(rldl == 2 * ldl); } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/fastthis2_win32.c0000644000175000017500000000212213204034553022522 0ustar daviddavid/* Area: ffi_call Purpose: Check fastcall fct call on X86_WIN32 systems. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ #include "ffitest.h" static size_t __FASTCALL__ my_fastcall_f(float a, char *s) { return (size_t) ((int) strlen(s) + (int) a); } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; char *s; float v2; args[1] = &ffi_type_pointer; args[0] = &ffi_type_float; values[1] = (void*) &s; values[0] = (void*) &v2; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_FASTCALL, 2, &ffi_type_sint, args) == FFI_OK); s = "a"; v2 = 0.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 1); s = "1234567"; v2 = -1.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 6); s = "1234567890123456789012345"; v2 = 1.0; ffi_call(&cif, FFI_FN(my_fastcall_f), &rint, values); CHECK(rint == 26); printf("fastcall fct2 tests passed\n"); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.call/struct4.c0000644000175000017500000000246713204034553021215 0ustar daviddavid/* Area: ffi_call Purpose: Check structures. Limitations: none. PR: none. Originator: From the original ffitest.c */ /* { dg-do run } */ #include "ffitest.h" typedef struct { unsigned ui1; unsigned ui2; unsigned ui3; } test_structure_4; static test_structure_4 ABI_ATTR struct4(test_structure_4 ts) { ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3; return ts; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_type ts4_type; ffi_type *ts4_type_elements[4]; test_structure_4 ts4_arg; /* This is a hack to get a properly aligned result buffer */ test_structure_4 *ts4_result = (test_structure_4 *) malloc (sizeof(test_structure_4)); ts4_type.size = 0; ts4_type.alignment = 0; ts4_type.type = FFI_TYPE_STRUCT; ts4_type.elements = ts4_type_elements; ts4_type_elements[0] = &ffi_type_uint; ts4_type_elements[1] = &ffi_type_uint; ts4_type_elements[2] = &ffi_type_uint; ts4_type_elements[3] = NULL; args[0] = &ts4_type; values[0] = &ts4_arg; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK); ts4_arg.ui1 = 2; ts4_arg.ui2 = 3; ts4_arg.ui3 = 4; ffi_call (&cif, FFI_FN(struct4), ts4_result, values); CHECK(ts4_result->ui3 == 2U * 3U * 4U); free (ts4_result); exit(0); } polyml-5.7.1/libffi/testsuite/libffi.special/0000755000175000017500000000000013204034553020135 5ustar daviddavidpolyml-5.7.1/libffi/testsuite/libffi.special/unwindtest.cc0000644000175000017500000000733413204034553022657 0ustar daviddavid/* Area: ffi_closure, unwind info Purpose: Check if the unwind information is passed correctly. Limitations: none. PR: none. Originator: Jeff Sturm */ /* { dg-do run } */ #include "ffitestcxx.h" #if defined HAVE_STDINT_H #include #endif #if defined HAVE_INTTYPES_H #include #endif void closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, void** args __UNUSED__, void* userdata __UNUSED__) { throw 9; } typedef void (*closure_test_type)(); void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) { *(ffi_arg*)resp = (int)*(float *)args[0] +(int)(*(float *)args[1]) + (int)(*(float *)args[2]) + (int)*(float *)args[3] + (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + (int)*(float *)args[6] + (int)(*(int *)args[7]) + (int)(*(double*)args[8]) + (int)*(int *)args[9] + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + (int)*(int *)args[12] + (int)(*(int *)args[13]) + (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata; printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", (int)*(float *)args[0], (int)(*(float *)args[1]), (int)(*(float *)args[2]), (int)*(float *)args[3], (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), (int)*(float *)args[6], (int)(*(int *)args[7]), (int)(*(double *)args[8]), (int)*(int *)args[9], (int)(*(int *)args[10]), (int)(*(float *)args[11]), (int)*(int *)args[12], (int)(*(int *)args[13]), (int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, (int)*(ffi_arg*)resp); throw (int)*(ffi_arg*)resp; } typedef int (*closure_test_type1)(float, float, float, float, signed short, float, float, int, double, int, int, float, int, int, int, int); int main (void) { ffi_cif cif; void *code; ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code); ffi_type * cl_arg_types[17]; { cl_arg_types[1] = NULL; CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK); try { (*((closure_test_type)(code)))(); } catch (int exception_code) { CHECK(exception_code == 9); } printf("part one OK\n"); /* { dg-output "part one OK" } */ } { cl_arg_types[0] = &ffi_type_float; cl_arg_types[1] = &ffi_type_float; cl_arg_types[2] = &ffi_type_float; cl_arg_types[3] = &ffi_type_float; cl_arg_types[4] = &ffi_type_sshort; cl_arg_types[5] = &ffi_type_float; cl_arg_types[6] = &ffi_type_float; cl_arg_types[7] = &ffi_type_uint; cl_arg_types[8] = &ffi_type_double; cl_arg_types[9] = &ffi_type_uint; cl_arg_types[10] = &ffi_type_uint; cl_arg_types[11] = &ffi_type_float; cl_arg_types[12] = &ffi_type_uint; cl_arg_types[13] = &ffi_type_uint; cl_arg_types[14] = &ffi_type_uint; cl_arg_types[15] = &ffi_type_uint; cl_arg_types[16] = NULL; /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_sint, cl_arg_types) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, (void *) 3 /* userdata */, code) == FFI_OK); try { (*((closure_test_type1)code)) (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, 19, 21, 1); /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ } catch (int exception_code) { CHECK(exception_code == 255); } printf("part two OK\n"); /* { dg-output "\npart two OK" } */ } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc0000644000175000017500000000201713204034553024467 0ustar daviddavid/* Area: ffi_call, unwind info Purpose: Check if the unwind information is passed correctly. Limitations: none. PR: none. Originator: Andreas Tobler 20061213 */ /* { dg-do run } */ #include "ffitestcxx.h" static int checking(int a __UNUSED__, short b __UNUSED__, signed char c __UNUSED__) { throw 9; } int main (void) { ffi_cif cif; ffi_type *args[MAX_ARGS]; void *values[MAX_ARGS]; ffi_arg rint; signed int si; signed short ss; signed char sc; args[0] = &ffi_type_sint; values[0] = &si; args[1] = &ffi_type_sshort; values[1] = &ss; args[2] = &ffi_type_schar; values[2] = ≻ /* Initialize the cif */ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_sint, args) == FFI_OK); si = -6; ss = -12; sc = -1; { try { ffi_call(&cif, FFI_FN(checking), &rint, values); } catch (int exception_code) { CHECK(exception_code == 9); } printf("part one OK\n"); /* { dg-output "part one OK" } */ } exit(0); } polyml-5.7.1/libffi/testsuite/libffi.special/special.exp0000644000175000017500000000236613204034553022302 0ustar daviddavid# Copyright (C) 2003, 2006, 2009, 2010 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING3. If not see # . dg-init libffi-init global srcdir subdir global cxx_options set cxx_options " -shared-libgcc -lstdc++" if { [string match $using_gcc "yes"] } { dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O0 -W -Wall" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O2" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O3" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-Os" } dg-finish # Local Variables: # tcl-indent-level:4 # End: polyml-5.7.1/libffi/testsuite/libffi.special/ffitestcxx.h0000644000175000017500000000171013204034553022474 0ustar daviddavid#include #include #include #include #include "fficonfig.h" #define MAX_ARGS 256 /* Define __UNUSED__ that also other compilers than gcc can run the tests. */ #undef __UNUSED__ #if defined(__GNUC__) #define __UNUSED__ __attribute__((__unused__)) #else #define __UNUSED__ #endif #define CHECK(x) (!(x) ? abort() : (void)0) /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a file open. */ #ifdef HAVE_MMAP_ANON # undef HAVE_MMAP_DEV_ZERO # include # ifndef MAP_FAILED # define MAP_FAILED -1 # endif # if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) # define MAP_ANONYMOUS MAP_ANON # endif # define USING_MMAP #endif #ifdef HAVE_MMAP_DEV_ZERO # include # ifndef MAP_FAILED # define MAP_FAILED -1 # endif # define USING_MMAP #endif /* MinGW kludge. */ #ifdef _WIN64 #define PRIdLL "I64d" #define PRIuLL "I64u" #else #define PRIdLL "lld" #define PRIuLL "llu" #endif polyml-5.7.1/libffi/testsuite/lib/0000755000175000017500000000000013204034553016031 5ustar daviddavidpolyml-5.7.1/libffi/testsuite/lib/target-libpath.exp0000644000175000017500000002277613204034553021474 0ustar daviddavid# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GCC; see the file COPYING3. If not see # . # This file was contributed by John David Anglin (dave.anglin@nrc-cnrc.gc.ca) set orig_environment_saved 0 set orig_ld_library_path_saved 0 set orig_ld_run_path_saved 0 set orig_shlib_path_saved 0 set orig_ld_libraryn32_path_saved 0 set orig_ld_library64_path_saved 0 set orig_ld_library_path_32_saved 0 set orig_ld_library_path_64_saved 0 set orig_dyld_library_path_saved 0 set orig_path_saved 0 ####################################### # proc set_ld_library_path_env_vars { } ####################################### proc set_ld_library_path_env_vars { } { global ld_library_path global orig_environment_saved global orig_ld_library_path_saved global orig_ld_run_path_saved global orig_shlib_path_saved global orig_ld_libraryn32_path_saved global orig_ld_library64_path_saved global orig_ld_library_path_32_saved global orig_ld_library_path_64_saved global orig_dyld_library_path_saved global orig_path_saved global orig_ld_library_path global orig_ld_run_path global orig_shlib_path global orig_ld_libraryn32_path global orig_ld_library64_path global orig_ld_library_path_32 global orig_ld_library_path_64 global orig_dyld_library_path global orig_path global GCC_EXEC_PREFIX # Set the relocated compiler prefix, but only if the user hasn't specified one. if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } { setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX" } # Setting the ld library path causes trouble when testing cross-compilers. if { [is_remote target] } { return } if { $orig_environment_saved == 0 } { global env set orig_environment_saved 1 # Save the original environment. if [info exists env(LD_LIBRARY_PATH)] { set orig_ld_library_path "$env(LD_LIBRARY_PATH)" set orig_ld_library_path_saved 1 } if [info exists env(LD_RUN_PATH)] { set orig_ld_run_path "$env(LD_RUN_PATH)" set orig_ld_run_path_saved 1 } if [info exists env(SHLIB_PATH)] { set orig_shlib_path "$env(SHLIB_PATH)" set orig_shlib_path_saved 1 } if [info exists env(LD_LIBRARYN32_PATH)] { set orig_ld_libraryn32_path "$env(LD_LIBRARYN32_PATH)" set orig_ld_libraryn32_path_saved 1 } if [info exists env(LD_LIBRARY64_PATH)] { set orig_ld_library64_path "$env(LD_LIBRARY64_PATH)" set orig_ld_library64_path_saved 1 } if [info exists env(LD_LIBRARY_PATH_32)] { set orig_ld_library_path_32 "$env(LD_LIBRARY_PATH_32)" set orig_ld_library_path_32_saved 1 } if [info exists env(LD_LIBRARY_PATH_64)] { set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)" set orig_ld_library_path_64_saved 1 } if [info exists env(DYLD_LIBRARY_PATH)] { set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)" set orig_dyld_library_path_saved 1 } if [info exists env(PATH)] { set orig_path "$env(PATH)" set orig_path_saved 1 } } # We need to set ld library path in the environment. Currently, # unix.exp doesn't set the environment correctly for all systems. # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a # program. We also need the environment set for compilations, etc. # # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH # (for the 64-bit ABI). The same applies to Darwin (DYLD_LIBRARY_PATH), # Solaris 32 bit (LD_LIBRARY_PATH_32), Solaris 64 bit (LD_LIBRARY_PATH_64), # and HP-UX (SHLIB_PATH). In some cases, the variables are independent # of LD_LIBRARY_PATH, and in other cases LD_LIBRARY_PATH is used if the # variable is not defined. # # Doing this is somewhat of a hack as ld_library_path gets repeated in # SHLIB_PATH and LD_LIBRARY_PATH when unix_load sets these variables. if { $orig_ld_library_path_saved } { setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path" } else { setenv LD_LIBRARY_PATH "$ld_library_path" } if { $orig_ld_run_path_saved } { setenv LD_RUN_PATH "$ld_library_path:$orig_ld_run_path" } else { setenv LD_RUN_PATH "$ld_library_path" } # The default shared library dynamic path search for 64-bit # HP-UX executables searches LD_LIBRARY_PATH before SHLIB_PATH. # LD_LIBRARY_PATH isn't used for 32-bit executables. Thus, we # set LD_LIBRARY_PATH and SHLIB_PATH as if they were independent. if { $orig_shlib_path_saved } { setenv SHLIB_PATH "$ld_library_path:$orig_shlib_path" } else { setenv SHLIB_PATH "$ld_library_path" } if { $orig_ld_libraryn32_path_saved } { setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_libraryn32_path" } elseif { $orig_ld_library_path_saved } { setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_library_path" } else { setenv LD_LIBRARYN32_PATH "$ld_library_path" } if { $orig_ld_library64_path_saved } { setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library64_path" } elseif { $orig_ld_library_path_saved } { setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library_path" } else { setenv LD_LIBRARY64_PATH "$ld_library_path" } if { $orig_ld_library_path_32_saved } { setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path_32" } elseif { $orig_ld_library_path_saved } { setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path" } else { setenv LD_LIBRARY_PATH_32 "$ld_library_path" } if { $orig_ld_library_path_64_saved } { setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path_64" } elseif { $orig_ld_library_path_saved } { setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path" } else { setenv LD_LIBRARY_PATH_64 "$ld_library_path" } if { $orig_dyld_library_path_saved } { setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path" } else { setenv DYLD_LIBRARY_PATH "$ld_library_path" } if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } { if { $orig_path_saved } { setenv PATH "$ld_library_path:$orig_path" } else { setenv PATH "$ld_library_path" } } verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path" } ####################################### # proc restore_ld_library_path_env_vars { } ####################################### proc restore_ld_library_path_env_vars { } { global orig_environment_saved global orig_ld_library_path_saved global orig_ld_run_path_saved global orig_shlib_path_saved global orig_ld_libraryn32_path_saved global orig_ld_library64_path_saved global orig_ld_library_path_32_saved global orig_ld_library_path_64_saved global orig_dyld_library_path_saved global orig_path_saved global orig_ld_library_path global orig_ld_run_path global orig_shlib_path global orig_ld_libraryn32_path global orig_ld_library64_path global orig_ld_library_path_32 global orig_ld_library_path_64 global orig_dyld_library_path global orig_path if { $orig_environment_saved == 0 } { return } if { $orig_ld_library_path_saved } { setenv LD_LIBRARY_PATH "$orig_ld_library_path" } elseif [info exists env(LD_LIBRARY_PATH)] { unsetenv LD_LIBRARY_PATH } if { $orig_ld_run_path_saved } { setenv LD_RUN_PATH "$orig_ld_run_path" } elseif [info exists env(LD_RUN_PATH)] { unsetenv LD_RUN_PATH } if { $orig_shlib_path_saved } { setenv SHLIB_PATH "$orig_shlib_path" } elseif [info exists env(SHLIB_PATH)] { unsetenv SHLIB_PATH } if { $orig_ld_libraryn32_path_saved } { setenv LD_LIBRARYN32_PATH "$orig_ld_libraryn32_path" } elseif [info exists env(LD_LIBRARYN32_PATH)] { unsetenv LD_LIBRARYN32_PATH } if { $orig_ld_library64_path_saved } { setenv LD_LIBRARY64_PATH "$orig_ld_library64_path" } elseif [info exists env(LD_LIBRARY64_PATH)] { unsetenv LD_LIBRARY64_PATH } if { $orig_ld_library_path_32_saved } { setenv LD_LIBRARY_PATH_32 "$orig_ld_library_path_32" } elseif [info exists env(LD_LIBRARY_PATH_32)] { unsetenv LD_LIBRARY_PATH_32 } if { $orig_ld_library_path_64_saved } { setenv LD_LIBRARY_PATH_64 "$orig_ld_library_path_64" } elseif [info exists env(LD_LIBRARY_PATH_64)] { unsetenv LD_LIBRARY_PATH_64 } if { $orig_dyld_library_path_saved } { setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path" } elseif [info exists env(DYLD_LIBRARY_PATH)] { unsetenv DYLD_LIBRARY_PATH } if { $orig_path_saved } { setenv PATH "$orig_path" } elseif [info exists env(PATH)] { unsetenv PATH } } ####################################### # proc get_shlib_extension { } ####################################### proc get_shlib_extension { } { global shlib_ext if { [ istarget *-*-darwin* ] } { set shlib_ext "dylib" } elseif { [ istarget *-*-cygwin* ] || [ istarget *-*-mingw* ] } { set shlib_ext "dll" } elseif { [ istarget hppa*-*-hpux* ] } { set shlib_ext "sl" } else { set shlib_ext "so" } return $shlib_ext } polyml-5.7.1/libffi/testsuite/lib/wrapper.exp0000644000175000017500000000352513204034553020234 0ustar daviddavid# Copyright (C) 2004, 2007 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GCC; see the file COPYING3. If not see # . # This file contains GCC-specifics for status wrappers for test programs. # ${tool}_maybe_build_wrapper -- Build wrapper object if the target # needs it. FILENAME is the path to the wrapper file. If there are # additional arguments, they are command-line options to provide to # the compiler when compiling FILENAME. proc ${tool}_maybe_build_wrapper { filename args } { global gluefile wrap_flags if { [target_info needs_status_wrapper] != "" \ && [target_info needs_status_wrapper] != "0" \ && ![info exists gluefile] } { set saved_wrap_compile_flags [target_info wrap_compile_flags] set flags [join $args " "] # The wrapper code may contain code that gcc objects on. This # became true for dejagnu-1.4.4. The set of warnings and code # that gcc objects on may change, so just make sure -w is always # passed to turn off all warnings. set_currtarget_info wrap_compile_flags \ "$saved_wrap_compile_flags -w $flags" set result [build_wrapper $filename] set_currtarget_info wrap_compile_flags "$saved_wrap_compile_flags" if { $result != "" } { set gluefile [lindex $result 0] set wrap_flags [lindex $result 1] } } } polyml-5.7.1/libffi/testsuite/lib/libffi.exp0000644000175000017500000002740613204034553020013 0ustar daviddavid# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011, 2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING3. If not see # . proc load_gcc_lib { filename } { global srcdir load_file $srcdir/lib/$filename } load_lib dg.exp load_lib libgloss.exp load_gcc_lib target-libpath.exp load_gcc_lib wrapper.exp # Define libffi callbacks for dg.exp. proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } { # To get all \n in dg-output test strings to match printf output # in a system that outputs it as \015\012 (i.e. not just \012), we # need to change all \n into \r?\n. As there is no dejagnu flag # or hook to do that, we simply change the text being tested. # Unfortunately, we have to know that the variable is called # dg-output-text and lives in the caller of libffi-dg-test, which # is two calls up. Overriding proc dg-output would be longer and # would necessarily have the same assumption. upvar 2 dg-output-text output_match if { [llength $output_match] > 1 } { regsub -all "\n" [lindex $output_match 1] "\r?\n" x set output_match [lreplace $output_match 1 1 $x] } # Set up the compiler flags, based on what we're going to do. set options [list] switch $do_what { "compile" { set compile_type "assembly" set output_file "[file rootname [file tail $prog]].s" } "link" { set compile_type "executable" set output_file "[file rootname [file tail $prog]].exe" # The following line is needed for targets like the i960 where # the default output file is b.out. Sigh. } "run" { set compile_type "executable" # FIXME: "./" is to cope with "." not being in $PATH. # Should this be handled elsewhere? # YES. set output_file "./[file rootname [file tail $prog]].exe" # This is the only place where we care if an executable was # created or not. If it was, dg.exp will try to run it. remote_file build delete $output_file; } default { perror "$do_what: not a valid dg-do keyword" return "" } } if { $extra_tool_flags != "" } { lappend options "additional_flags=$extra_tool_flags" } set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options]; return [list $comp_output $output_file] } proc libffi-dg-test { prog do_what extra_tool_flags } { return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags] } proc libffi-init { args } { global gluefile wrap_flags; global srcdir global blddirffi global objdir global TOOL_OPTIONS global tool global libffi_include global libffi_link_flags global tool_root_dir global ld_library_path global using_gcc set blddirffi [pwd]/.. verbose "libffi $blddirffi" # Are we building with GCC? set tmp [grep ../config.status "GCC='yes'"] if { [string match $tmp "GCC='yes'"] } { set using_gcc "yes" set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] if {$gccdir != ""} { set gccdir [file dirname $gccdir] } verbose "gccdir $gccdir" set ld_library_path "." append ld_library_path ":${gccdir}" set compiler "${gccdir}/xgcc" if { [is_remote host] == 0 && [which $compiler] != 0 } { foreach i "[exec $compiler --print-multi-lib]" { set mldir "" regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir set mldir [string trimright $mldir "\;@"] if { "$mldir" == "." } { continue } if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { append ld_library_path ":${gccdir}/${mldir}" } } } } else { set using_gcc "no" } # add the library path for libffi. append ld_library_path ":${blddirffi}/.libs" verbose "ld_library_path: $ld_library_path" # Point to the Libffi headers in libffi. set libffi_include "${blddirffi}/include" verbose "libffi_include $libffi_include" set libffi_dir "${blddirffi}/.libs" verbose "libffi_dir $libffi_dir" if { $libffi_dir != "" } { set libffi_dir [file dirname ${libffi_dir}] set libffi_link_flags "-L${libffi_dir}/.libs" } set_ld_library_path_env_vars libffi_maybe_build_wrapper "${objdir}/testglue.o" } proc libffi_exit { } { global gluefile; if [info exists gluefile] { file_on_build delete $gluefile; unset gluefile; } } proc libffi_target_compile { source dest type options } { global gluefile wrap_flags; global srcdir global blddirffi global TOOL_OPTIONS global libffi_link_flags global libffi_include global target_triplet if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { lappend options "libs=${gluefile}" lappend options "ldflags=$wrap_flags" } # TOOL_OPTIONS must come first, so that it doesn't override testcase # specific options. if [info exists TOOL_OPTIONS] { lappend options [concat "additional_flags=$TOOL_OPTIONS" $options]; } # search for ffi_mips.h in srcdir, too lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include -I${libffi_include}/.." lappend options "additional_flags=${libffi_link_flags}" # Darwin needs a stack execution allowed flag. if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] || [istarget "*-*-darwin2*"] } { lappend options "additional_flags=-Wl,-allow_stack_execute" } # If you're building the compiler with --prefix set to a place # where it's not yet installed, then the linker won't be able to # find the libgcc used by libffi.dylib. We could pass the # -dylib_file option, but that's complicated, and it's much easier # to just make the linker find libgcc using -L options. if { [string match "*-*-darwin*" $target_triplet] } { lappend options "libs= -shared-libgcc" } if { [string match "*-*-openbsd*" $target_triplet] } { lappend options "libs= -lpthread" } lappend options "libs= -lffi" if { [string match "aarch64*-*-linux*" $target_triplet] } { lappend options "libs= -lpthread" } if { [string match "*.cc" $source] } { lappend options "c++" } verbose "options: $options" return [target_compile $source $dest $type $options] } # Utility routines. # # search_for -- looks for a string match in a file # proc search_for { file pattern } { set fd [open $file r] while { [gets $fd cur_line]>=0 } { if [string match "*$pattern*" $cur_line] then { close $fd return 1 } } close $fd return 0 } # Modified dg-runtest that can cycle through a list of optimization options # as c-torture does. proc libffi-dg-runtest { testcases default-extra-flags } { global runtests foreach test $testcases { # If we're only testing specific files and this isn't one of # them, skip it. if ![runtest_file_p $runtests $test] { continue } # Look for a loop within the source code - if we don't find one, # don't pass -funroll[-all]-loops. global torture_with_loops torture_without_loops if [expr [search_for $test "for*("]+[search_for $test "while*("]] { set option_list $torture_with_loops } else { set option_list $torture_without_loops } set nshort [file tail [file dirname $test]]/[file tail $test] foreach flags $option_list { verbose "Testing $nshort, $flags" 1 dg-test $test $flags ${default-extra-flags} } } } proc run-many-tests { testcases extra_flags } { global using_gcc if { [string match $using_gcc "yes"] } { set common "-W -Wall -Wno-psabi" set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" } } else { # Assume we are using the vendor compiler. set common "" set optimizations { "" } } set targetabis { "" } if [string match $using_gcc "yes"] { if [istarget "i?86-*-*"] { set targetabis { "" "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__" "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__" "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__" } } } set common [ concat $common $extra_flags ] foreach test $testcases { set testname [file tail $test] if [search_for $test "ABI_NUM"] { set abis $targetabis } else { set abis { "" } } foreach opt $optimizations { foreach abi $abis { set options [concat $common $opt $abi] verbose "Testing $testname, $options" 1 dg-test $test $options "" } } } } # Like check_conditional_xfail, but callable from a dg test. proc dg-xfail-if { args } { set args [lreplace $args 0 0] set selector "target [join [lindex $args 1]]" if { [dg-process-target $selector] == "S" } { global compiler_conditional_xfail_data set compiler_conditional_xfail_data $args } } proc check-flags { args } { # The args are within another list; pull them out. set args [lindex $args 0] # The next two arguments are optional. If they were not specified, # use the defaults. if { [llength $args] == 2 } { lappend $args [list "*"] } if { [llength $args] == 3 } { lappend $args [list ""] } # If the option strings are the defaults, or the same as the # defaults, there is no need to call check_conditional_xfail to # compare them to the actual options. if { [string compare [lindex $args 2] "*"] == 0 && [string compare [lindex $args 3] "" ] == 0 } { set result 1 } else { # The target list might be an effective-target keyword, so replace # the original list with "*-*-*", since we already know it matches. set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]] } return $result } proc dg-skip-if { args } { # Verify the number of arguments. The last two are optional. set args [lreplace $args 0 0] if { [llength $args] < 2 || [llength $args] > 4 } { error "dg-skip-if 2: need 2, 3, or 4 arguments" } # Don't bother if we're already skipping the test. upvar dg-do-what dg-do-what if { [lindex ${dg-do-what} 1] == "N" } { return } set selector [list target [lindex $args 1]] if { [dg-process-target $selector] == "S" } { if [check-flags $args] { upvar dg-do-what dg-do-what set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] } } } # We need to make sure that additional_files and additional_sources # are both cleared out after every test. It is not enough to clear # them out *before* the next test run because gcc-target-compile gets # run directly from some .exp files (outside of any test). (Those # uses should eventually be eliminated.) # Because the DG framework doesn't provide a hook that is run at the # end of a test, we must replace dg-test with a wrapper. if { [info procs saved-dg-test] == [list] } { rename dg-test saved-dg-test proc dg-test { args } { global additional_files global additional_sources global errorInfo if { [ catch { eval saved-dg-test $args } errmsg ] } { set saved_info $errorInfo set additional_files "" set additional_sources "" error $errmsg $saved_info } set additional_files "" set additional_sources "" } } # Local Variables: # tcl-indent-level:4 # End: polyml-5.7.1/libffi/testsuite/Makefile.in0000644000175000017500000004524313204034553017340 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = testsuite DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ $(top_srcdir)/m4/ax_configure_args.m4 \ $(top_srcdir)/m4/ax_enable_builddir.m4 \ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/fficonfig.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DEJATOOL = $(PACKAGE) RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir EXPECT = expect RUNTEST = runtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LTLDFLAGS = @AM_LTLDFLAGS@ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ TARGETDIR = @TARGETDIR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_enable_builddir_sed = @ax_enable_builddir_sed@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ toolexeclibdir = @toolexeclibdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign dejagnu EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp CLEANFILES = *.exe core* *.log *.sum EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ libffi.call/cls_align_longdouble_split.c \ libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c \ libffi.call/closure_fn1.c \ libffi.call/return_ul.c libffi.call/cls_align_double.c \ libffi.call/return_fl2.c libffi.call/cls_1_1byte.c \ libffi.call/cls_64byte.c libffi.call/nested_struct7.c \ libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c \ libffi.call/ffitest.h libffi.call/nested_struct4.c \ libffi.call/cls_multi_ushort.c libffi.call/struct3.c \ libffi.call/cls_3byte1.c libffi.call/cls_16byte.c \ libffi.call/struct8.c libffi.call/nested_struct8.c \ libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c \ libffi.call/cls_pointer.c \ libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c \ libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c \ libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c \ libffi.call/call.exp libffi.call/cls_double.c \ libffi.call/cls_align_sint16.c libffi.call/cls_uint.c \ libffi.call/return_ll1.c libffi.call/nested_struct3.c \ libffi.call/cls_20byte1.c libffi.call/closure_fn4.c \ libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c \ libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c \ libffi.call/return_fl.c libffi.call/struct5.c \ libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c \ libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c \ libffi.call/return_fl3.c libffi.call/stret_medium.c \ libffi.call/nested_struct6.c libffi.call/closure_fn3.c \ libffi.call/float3.c libffi.call/many2.c \ libffi.call/closure_simple.c libffi.call/cls_align_uint16.c \ libffi.call/cls_9byte1.c libffi.call/closure_fn6.c \ libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c \ libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c \ libffi.call/cls_sshort.c \ libffi.call/nested_struct.c libffi.call/cls_20byte.c \ libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c \ libffi.call/return_uc.c \ libffi.call/cls_18byte.c libffi.call/cls_8byte.c \ libffi.call/promotion.c \ libffi.call/return_dbl.c libffi.call/cls_24byte.c \ libffi.call/struct4.c libffi.call/cls_6byte.c \ libffi.call/cls_align_uint32.c libffi.call/float.c \ libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c \ libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c \ libffi.call/cls_align_float.c libffi.call/return_fl1.c \ libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ libffi.call/cls_align_sint64.c \ libffi.call/stret_large2.c libffi.call/return_sl.c \ libffi.call/closure_fn0.c libffi.call/cls_5byte.c \ libffi.call/cls_2byte.c libffi.call/float2.c \ libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c \ libffi.call/stret_large.c libffi.call/cls_ulonglong.c \ libffi.call/cls_ushort.c libffi.call/nested_struct1.c \ libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c \ libffi.call/cls_float.c libffi.call/cls_pointer_stack.c \ libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c \ libffi.call/struct1.c libffi.call/nested_struct9.c \ libffi.call/huge_struct.c libffi.call/problem1.c \ libffi.call/float4.c \ libffi.call/return_ldl.c \ libffi.call/closure_fn5.c \ libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c \ libffi.call/return_sc.c libffi.call/struct7.c \ libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c \ libffi.call/cls_6_1_byte.c \ libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc \ libffi.call/unwindtest_ffi_call.cc \ lib/wrapper.exp lib/target-libpath.exp \ lib/libffi.exp libffi.call/cls_struct_va1.c \ libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c \ libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c \ libffi.call/nested_struct11.c libffi.call/uninitialized.c \ libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ libffi.call/va_struct3.c \ libffi.call/strlen2.c \ libffi.call/strlen3.c \ libffi.call/strlen4.c all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign testsuite/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: check-DEJAGNU: site.exp srcdir='$(srcdir)'; export srcdir; \ EXPECT=$(EXPECT); export EXPECT; \ if $(SHELL) -c "$(RUNTEST) --version" > /dev/null 2>&1; then \ exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \ if $(RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ then :; else exit_status=1; fi; \ done; \ else echo "WARNING: could not find '$(RUNTEST)'" 1>&2; :;\ fi; \ exit $$exit_status site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) @echo 'Making a new site.exp file ...' @echo '## these variables are automatically generated by make ##' >site.tmp @echo '# Do not edit here. If you wish to override these values' >>site.tmp @echo '# edit the last section' >>site.tmp @echo 'set srcdir "$(srcdir)"' >>site.tmp @echo "set objdir `pwd`" >>site.tmp @echo 'set build_alias "$(build_alias)"' >>site.tmp @echo 'set build_triplet $(build_triplet)' >>site.tmp @echo 'set host_alias "$(host_alias)"' >>site.tmp @echo 'set host_triplet $(host_triplet)' >>site.tmp @echo 'set target_alias "$(target_alias)"' >>site.tmp @echo 'set target_triplet $(target_triplet)' >>site.tmp @list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \ echo "## Begin content included from file $$f. Do not modify. ##" \ && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \ && echo "## End content included from file $$f. ##" \ || exit 1; \ done >> site.tmp @echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp @if test -f site.exp; then \ sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \ fi @-rm -f site.bak @test ! -f site.exp || mv site.exp site.bak @mv site.tmp site.exp distclean-DEJAGNU: -rm -f site.exp site.bak -l='$(DEJATOOL)'; for tool in $$l; do \ rm -f $$tool.sum $$tool.log; \ done distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-DEJAGNU distclean-generic distclean-libtool distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/libffi/configure.host0000644000175000017500000000041313204034553016110 0ustar daviddavid# configure.host # # This shell script handles all host based configuration for libffi. # # THIS TABLE IS SORTED. KEEP IT THAT WAY. case "${host}" in frv*-elf) LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ ;; esac polyml-5.7.1/libffi/libffi.pc.in0000644000175000017500000000047513204034553015424 0ustar daviddavidprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ toolexeclibdir=@toolexeclibdir@ includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include Name: @PACKAGE_NAME@ Description: Library supporting Foreign Function Interfaces Version: @PACKAGE_VERSION@ Libs: -L${toolexeclibdir} -lffi Cflags: -I${includedir} polyml-5.7.1/libffi/libtool-version0000644000175000017500000000210713204034553016304 0ustar daviddavid# This file is used to maintain libtool version info for libffi. See # the libtool manual to understand the meaning of the fields. This is # a separate file so that version updates don't involve re-running # automake. # # Here are a set of rules to help you update your library version # information: # # 1. Start with version information of `0:0:0' for each libtool library. # # 2. Update the version information only immediately before a public # release of your software. More frequent updates are unnecessary, # and only guarantee that the current interface number gets larger # faster. # # 3. If the library source code has changed at all since the last # update, then increment revision (`c:r:a' becomes `c:r+1:a'). # # 4. If any interfaces have been added, removed, or changed since the # last update, increment current, and set revision to 0. # # 5. If any interfaces have been added since the last public release, # then increment age. # # 6. If any interfaces have been removed since the last public # release, then set age to 0. # # CURRENT:REVISION:AGE 6:4:0 polyml-5.7.1/libffi/ChangeLog.libgcj0000644000175000017500000000211713204034553016236 0ustar daviddavid2004-01-14 Kelley Cook * configure.in: Add in AC_PREREQ(2.13) 2003-02-20 Alexandre Oliva * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to config.status. * configure: Rebuilt. 2002-01-27 Alexandre Oliva * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. Remove USE_LIBDIR conditional. * Makefile.am (toolexecdir, toolexeclibdir): Don't override. * Makefile.in, configure: Rebuilt. Mon Aug 9 18:33:38 1999 Rainer Orth * include/Makefile.in: Rebuilt. * Makefile.in: Rebuilt * Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native builds. Use USE_LIBDIR. * configure: Rebuilt. * configure.in (USE_LIBDIR): Define for native builds. Use lowercase in configure --help explanations. 1999-08-08 Anthony Green * include/ffi.h.in (FFI_FN): Remove `...'. 1999-08-08 Anthony Green * Makefile.in: Rebuilt. * Makefile.am (AM_CFLAGS): Compile with -fexceptions. * src/x86/sysv.S: Add exception handling metadata. polyml-5.7.1/libffi/m4/0000755000175000017500000000000013204034553013552 5ustar daviddavidpolyml-5.7.1/libffi/m4/lt~obsolete.m40000644000175000017500000001375613204034553016402 0ustar daviddavid# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) polyml-5.7.1/libffi/m4/ax_append_flag.m40000644000175000017500000000530413204034553016746 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_append_flag.html # =========================================================================== # # SYNOPSIS # # AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) # # DESCRIPTION # # FLAG is appended to the FLAGS-VARIABLE shell variable, with a space # added in between. # # If FLAGS-VARIABLE is not specified, the current language's flags (e.g. # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly # FLAG. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 2 AC_DEFUN([AX_APPEND_FLAG], [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl AS_VAR_SET_IF(FLAGS, [case " AS_VAR_GET(FLAGS) " in *" $1 "*) AC_RUN_LOG([: FLAGS already contains $1]) ;; *) AC_RUN_LOG([: FLAGS="$FLAGS $1"]) AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) ;; esac], [AS_VAR_SET(FLAGS,["$1"])]) AS_VAR_POPDEF([FLAGS])dnl ])dnl AX_APPEND_FLAG polyml-5.7.1/libffi/m4/ax_gcc_x86_cpuid.m40000644000175000017500000000636113204034553017137 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html # =========================================================================== # # SYNOPSIS # # AX_GCC_X86_CPUID(OP) # # DESCRIPTION # # On Pentium and later x86 processors, with gcc or a compiler that has a # compatible syntax for inline assembly instructions, run a small program # that executes the cpuid instruction with input OP. This can be used to # detect the CPU type. # # On output, the values of the eax, ebx, ecx, and edx registers are stored # as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable # ax_cv_gcc_x86_cpuid_OP. # # If the cpuid instruction fails (because you are running a # cross-compiler, or because you are not using gcc, or because you are on # a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP # is set to the string "unknown". # # This macro mainly exists to be used in AX_GCC_ARCHFLAG. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 7 AC_DEFUN([AX_GCC_X86_CPUID], [AC_REQUIRE([AC_PROG_CC]) AC_LANG_PUSH([C]) AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ int op = $1, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ])], [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown])]) AC_LANG_POP([C]) ]) polyml-5.7.1/libffi/m4/ltoptions.m40000644000175000017500000003007313204034553016052 0ustar daviddavid# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) polyml-5.7.1/libffi/m4/ax_cc_maxopt.m40000644000175000017500000001612013204034553016461 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html # =========================================================================== # # SYNOPSIS # # AX_CC_MAXOPT # # DESCRIPTION # # Try to turn on "good" C optimization flags for various compilers and # architectures, for some definition of "good". (In our case, good for # FFTW and hopefully for other scientific codes. Modify as needed.) # # The user can override the flags by setting the CFLAGS environment # variable. The user can also specify --enable-portable-binary in order to # disable any optimization flags that might result in a binary that only # runs on the host architecture. # # Note also that the flags assume that ANSI C aliasing rules are followed # by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point # computations can be re-ordered as needed. # # Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR, # AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 13 AC_DEFUN([AX_CC_MAXOPT], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AX_COMPILER_VENDOR]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], acx_maxopt_portable=$enableval, acx_maxopt_portable=no) # Try to determine "good" native compiler flags if none specified via CFLAGS if test "$ac_test_CFLAGS" != "set"; then CFLAGS="" case $ax_cv_c_compiler_vendor in dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" if test "x$acx_maxopt_portable" = xno; then CFLAGS="$CFLAGS -arch host" fi;; sun) CFLAGS="-native -fast -xO5 -dalign" if test "x$acx_maxopt_portable" = xyes; then CFLAGS="$CFLAGS -xarch=generic" fi;; hp) CFLAGS="+Oall +Optrs_ansi +DSnative" if test "x$acx_maxopt_portable" = xyes; then CFLAGS="$CFLAGS +DAportable" fi;; ibm) if test "x$acx_maxopt_portable" = xno; then xlc_opt="-qarch=auto -qtune=auto" else xlc_opt="-qtune=auto" fi AX_CHECK_COMPILE_FLAG($xlc_opt, CFLAGS="-O3 -qansialias -w $xlc_opt", [CFLAGS="-O3 -qansialias -w" echo "******************************************************" echo "* You seem to have the IBM C compiler. It is *" echo "* recommended for best performance that you use: *" echo "* *" echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" echo "* ^^^ ^^^ *" echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" echo "* CPU you have. (Set the CFLAGS environment var. *" echo "* and re-run configure.) For more info, man cc. *" echo "******************************************************"]) ;; intel) CFLAGS="-O3 -ansi_alias" if test "x$acx_maxopt_portable" = xno; then icc_archflag=unknown icc_flags="" case $host_cpu in i686*|x86_64*) # icc accepts gcc assembly syntax, so these should work: AX_GCC_X86_CPUID(0) AX_GCC_X86_CPUID(1) case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG *:756e6547:*:*) # Intel case $ax_cv_gcc_x86_cpuid_1 in *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";; *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";; *f??:*:*:*) icc_flags="-xN -xW -xK";; esac ;; esac ;; esac if test "x$icc_flags" != x; then for flag in $icc_flags; do AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break]) done fi AC_MSG_CHECKING([for icc architecture flag]) AC_MSG_RESULT($icc_archflag) if test "x$icc_archflag" != xunknown; then CFLAGS="$CFLAGS $icc_archflag" fi fi ;; gnu) # default optimization flags for gcc on all systems CFLAGS="-O3 -fomit-frame-pointer" # -malign-double for x86 systems # LIBFFI -- DON'T DO THIS - CHANGES ABI # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") # -fstrict-aliasing for gcc-2.95+ AX_CHECK_COMPILE_FLAG(-fstrict-aliasing, CFLAGS="$CFLAGS -fstrict-aliasing") # note that we enable "unsafe" fp optimization with other compilers, too AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math") AX_GCC_ARCHFLAG($acx_maxopt_portable) ;; esac if test -z "$CFLAGS"; then echo "" echo "********************************************************" echo "* WARNING: Don't know the best CFLAGS for this system *" echo "* Use ./configure CFLAGS=... to specify your own flags *" echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" echo "********************************************************" echo "" CFLAGS="-O3" fi AX_CHECK_COMPILE_FLAG($CFLAGS, [], [ echo "" echo "********************************************************" echo "* WARNING: The guessed CFLAGS don't seem to work with *" echo "* your compiler. *" echo "* Use ./configure CFLAGS=... to specify your own flags *" echo "********************************************************" echo "" CFLAGS="" ]) fi ]) polyml-5.7.1/libffi/m4/ax_configure_args.m40000644000175000017500000000550213204034553017503 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_configure_args.html # =========================================================================== # # SYNOPSIS # # AX_CONFIGURE_ARGS # # DESCRIPTION # # Helper macro for AX_ENABLE_BUILDDIR. # # The traditional way of starting a subdir-configure is running the script # with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have # to rely on eval'ing $ac_configure_args however some old autoconf # versions do not provide that. To ensure maximum portability of autoconf # extension macros this helper can be AC_REQUIRE'd so that # $ac_configure_args will alsways be present. # # Sadly, the traditional "exec $SHELL" of the enable_builddir macros is # spoiled now and must be replaced by "eval + exit $?". # # Example: # # AC_DEFUN([AX_ENABLE_SUBDIR],[dnl # AC_REQUIRE([AX_CONFIGURE_ARGS])dnl # eval $SHELL $ac_configure_args || exit $? # ...]) # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 9 AC_DEFUN([AX_CONFIGURE_ARGS],[ # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args if test "${ac_configure_args+set}" != "set" ; then ac_configure_args= for ac_arg in ${1+"[$]@"}; do ac_configure_args="$ac_configure_args '$ac_arg'" done fi ]) polyml-5.7.1/libffi/m4/ax_check_compile_flag.m40000644000175000017500000000625113204034553020266 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html # =========================================================================== # # SYNOPSIS # # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) # # DESCRIPTION # # Check whether the given FLAG works with the current language's compiler # or gives an error. (Warnings, however, are ignored) # # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # # If EXTRA-FLAGS is defined, it is added to the current language's default # flags (e.g. CFLAGS) when the check is done. The check is thus made with # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to # force the compiler to issue an error when a bad flag is given. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 2 AC_DEFUN([AX_CHECK_COMPILE_FLAG], [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [AS_VAR_SET(CACHEVAR,[yes])], [AS_VAR_SET(CACHEVAR,[no])]) _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], [m4_default([$2], :)], [m4_default([$3], :)]) AS_VAR_POPDEF([CACHEVAR])dnl ])dnl AX_CHECK_COMPILE_FLAGS polyml-5.7.1/libffi/m4/ltsugar.m40000644000175000017500000001042413204034553015476 0ustar daviddavid# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) polyml-5.7.1/libffi/m4/ax_compiler_vendor.m40000644000175000017500000000661613204034553017704 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html # =========================================================================== # # SYNOPSIS # # AX_COMPILER_VENDOR # # DESCRIPTION # # Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun, # hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft, # watcom, etc. The vendor is returned in the cache variable # $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 11 AC_DEFUN([AX_COMPILER_VENDOR], [AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [# note: don't check for gcc first since some other compilers define __GNUC__ vendors="intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__TURBOC__ comeau: __COMO__ cray: _CRAYC kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ portland: __PGI unknown: UNKNOWN" for ventest in $vendors; do case $ventest in *:) vendor=$ventest; continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ #if !($vencpp) thisisanerror; #endif ])], [break]) done ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` ]) ]) polyml-5.7.1/libffi/m4/ax_gcc_archflag.m40000644000175000017500000002274513204034553017101 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html # =========================================================================== # # SYNOPSIS # # AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE]) # # DESCRIPTION # # This macro tries to guess the "native" arch corresponding to the target # architecture for use with gcc's -march=arch or -mtune=arch flags. If # found, the cache variable $ax_cv_gcc_archflag is set to this flag and # ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to # "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is # to add $ax_cv_gcc_archflag to the end of $CFLAGS. # # PORTABLE? should be either [yes] (default) or [no]. In the former case, # the flag is set to -mtune (or equivalent) so that the architecture is # only used for tuning, but the instruction set used is still portable. In # the latter case, the flag is set to -march (or equivalent) so that # architecture-specific instructions are enabled. # # The user can specify --with-gcc-arch= in order to override the # macro's choice of architecture, or --without-gcc-arch to disable this. # # When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is # called unless the user specified --with-gcc-arch manually. # # Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID # # (The main emphasis here is on recent CPUs, on the principle that doing # high-performance computing on old hardware is uncommon.) # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # Copyright (c) 2012 Tsukasa Oi # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 11 AC_DEFUN([AX_GCC_ARCHFLAG], [AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], ax_gcc_arch=$withval, ax_gcc_arch=yes) AC_MSG_CHECKING([for gcc architecture flag]) AC_MSG_RESULT([]) AC_CACHE_VAL(ax_cv_gcc_archflag, [ ax_cv_gcc_archflag="unknown" if test "$GCC" = yes; then if test "x$ax_gcc_arch" = xyes; then ax_gcc_arch="" if test "$cross_compiling" = no; then case $host_cpu in i[[3456]]86*|x86_64*) # use cpuid codes AX_GCC_X86_CPUID(0) AX_GCC_X86_CPUID(1) case $ax_cv_gcc_x86_cpuid_0 in *:756e6547:*:*) # Intel case $ax_cv_gcc_x86_cpuid_1 in *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; *5??:*:*:*) ax_gcc_arch=pentium ;; *0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; *0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; *0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; *0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; *0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;; *1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;; *2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;; *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; ?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*) case $host_cpu in x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;; *) ax_gcc_arch="prescott pentium4 pentiumpro" ;; esac ;; ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";; esac ;; *:68747541:*:*) # AMD case $ax_cv_gcc_x86_cpuid_1 in *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; *60?:*:*:*) ax_gcc_arch=k7 ;; *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;; *6[[68a]]?:*:*:*) AX_GCC_X86_CPUID(0x80000006) # L2 cache size case $ax_cv_gcc_x86_cpuid_0x80000006 in *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256 ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; *) ax_gcc_arch="athlon-4 athlon k7" ;; esac ;; ?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;; ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;; ?00??f??:*:*:*) ax_gcc_arch="k8" ;; ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; esac ;; *:746e6543:*:*) # IDT case $ax_cv_gcc_x86_cpuid_1 in *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; *58?:*:*:*) ax_gcc_arch=winchip2 ;; *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;; esac ;; esac if test x"$ax_gcc_arch" = x; then # fallback case $host_cpu in i586*) ax_gcc_arch=pentium ;; i686*) ax_gcc_arch=pentiumpro ;; esac fi ;; sparc*) AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters` case $cputype in *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; *cypress*) ax_gcc_arch=cypress ;; esac ;; alphaev5) ax_gcc_arch=ev5 ;; alphaev56) ax_gcc_arch=ev56 ;; alphapca56) ax_gcc_arch="pca56 ev56" ;; alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; alphaev6) ax_gcc_arch=ev6 ;; alphaev67) ax_gcc_arch=ev67 ;; alphaev68) ax_gcc_arch="ev68 ev67" ;; alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; powerpc*) cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` case $cputype in *750*) ax_gcc_arch="750 G3" ;; *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; *970*) ax_gcc_arch="970 G5 power4";; *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; 603ev|8240) ax_gcc_arch="$cputype 603e 603";; *) ax_gcc_arch=$cputype ;; esac ax_gcc_arch="$ax_gcc_arch powerpc" ;; esac fi # not cross-compiling fi # guess arch if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then for arch in $ax_gcc_arch; do if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code flags="-mtune=$arch" # -mcpu=$arch and m$arch generate nonportable code on every arch except # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac else flags="-march=$arch -mcpu=$arch -m$arch" fi for flag in $flags; do AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break]) done test "x$ax_cv_gcc_archflag" = xunknown || break done fi fi # $GCC=yes ]) AC_MSG_CHECKING([for gcc architecture flag]) AC_MSG_RESULT($ax_cv_gcc_archflag) if test "x$ax_cv_gcc_archflag" = xunknown; then m4_default([$3],:) else m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) fi ]) polyml-5.7.1/libffi/m4/libtool.m40000644000175000017500000105743213204034553015474 0ustar daviddavid# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS polyml-5.7.1/libffi/m4/ltversion.m40000644000175000017500000000126213204034553016042 0ustar daviddavid# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) polyml-5.7.1/libffi/m4/asmcfi.m40000644000175000017500000000070213204034553015255 0ustar daviddavidAC_DEFUN([GCC_AS_CFI_PSEUDO_OP], [AC_CACHE_CHECK([assembler .cfi pseudo-op support], gcc_cv_as_cfi_pseudo_op, [ gcc_cv_as_cfi_pseudo_op=unknown AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],, [gcc_cv_as_cfi_pseudo_op=yes], [gcc_cv_as_cfi_pseudo_op=no]) ]) if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1, [Define if your assembler supports .cfi_* directives.]) fi ]) polyml-5.7.1/libffi/m4/ax_cflags_warn_all.m40000644000175000017500000001167113204034553017630 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html # =========================================================================== # # SYNOPSIS # # AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] # # DESCRIPTION # # Try to find a compiler option that enables most reasonable warnings. # # For the GNU compiler it will be -Wall (and -ansi -pedantic) The result # is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. # # Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, # HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and # Intel compilers. For a given compiler, the Fortran flags are much more # experimental than their C equivalents. # # - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS # - $2 add-value-if-not-found : nothing # - $3 action-if-found : add value to shellvariable # - $4 action-if-not-found : nothing # # NOTE: These macros depend on AX_APPEND_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2010 Rhys Ulerich # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 14 AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], VAR,[VAR="no, unknown" ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-warn all % -warn all" dnl Intel "-pedantic % -Wall" dnl GCC "-xstrconst % -v" dnl Solaris C "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX "-ansi -ansiE % -fullwarn" dnl IRIX "+ESlit % +w1" dnl HP-UX C "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) "-h conform % -h msglevel 2" dnl Cray C (Unicos) # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" ]) AS_VAR_POPDEF([FLAGS])dnl AC_REQUIRE([AX_APPEND_FLAG]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; esac AS_VAR_POPDEF([VAR])dnl ])dnl AX_FLAGS_WARN_ALL dnl implementation tactics: dnl the for-argument contains a list of options. The first part of dnl these does only exist to detect the compiler - usually it is dnl a global option to enable -ansi or -extrawarnings. All other dnl compilers will fail about it. That was needed since a lot of dnl compilers will give false positives for some option-syntax dnl like -Woption or -Xoption as they think of it is a pass-through dnl to later compile stages or something. The "%" is used as a dnl delimiter. A non-option comment can be given after "%%" marks dnl which will be shown but not added to the respective C/CXXFLAGS. AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C]) ]) AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([C++]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([C++]) ]) AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl AC_LANG_PUSH([Fortran]) AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) AC_LANG_POP([Fortran]) ]) polyml-5.7.1/libffi/m4/ax_enable_builddir.m40000644000175000017500000003156413204034553017621 0ustar daviddavid# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html # =========================================================================== # # SYNOPSIS # # AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])] # # DESCRIPTION # # If the current configure was run within the srcdir then we move all # configure-files into a subdir and let the configure steps continue # there. We provide an option --disable-builddir to suppress the move into # a separate builddir. # # Defaults: # # $1 = $host (overridden with $HOST) # $2 = Makefile.mk # $3 = -all # # This macro must be called before AM_INIT_AUTOMAKE. It creates a default # toplevel srcdir Makefile from the information found in the created # toplevel builddir Makefile. It just copies the variables and # rule-targets, each extended with a default rule-execution that recurses # into the build directory of the current "HOST". You can override the # auto-dection through `config.guess` and build-time of course, as in # # make HOST=i386-mingw-cross # # which can of course set at configure time as well using # # configure --host=i386-mingw-cross # # After the default has been created, additional rules can be appended # that will not just recurse into the subdirectories and only ever exist # in the srcdir toplevel makefile - these parts are read from the $2 = # Makefile.mk file # # The automatic rules are usually scanning the toplevel Makefile for lines # like '#### $host |$builddir' to recognize the place where to recurse # into. Usually, the last one is the only one used. However, almost all # targets have an additional "*-all" rule which makes the script to # recurse into _all_ variants of the current HOST (!!) setting. The "-all" # suffix can be overriden for the macro as well. # # a special rule is only given for things like "dist" that will copy the # tarball from the builddir to the sourcedir (or $(PUB)) for reason of # convenience. # # LICENSE # # Copyright (c) 2009 Guido U. Draheim # Copyright (c) 2009 Alan Jenkins # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 23 AC_DEFUN([AX_ENABLE_BUILDDIR],[ AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl SUB="." AC_ARG_ENABLE([builddir], AS_HELP_STRING( [--disable-builddir],[disable automatic build in subdir of sources]) ,[SUB="$enableval"], [SUB="auto"]) if test ".$ac_srcdir_defaulted" != ".no" ; then if test ".$srcdir" = ".." ; then if test -f config.status ; then AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build) else test ".$SUB" = "." && SUB="." test ".$SUB" = ".no" && SUB="." test ".$TARGET" = "." && TARGET="$target" test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])" if test ".$SUB" != ".." ; then # we know where to go and AS_MKDIR_P([$SUB]) echo __.$SUB.__ > $SUB/conftest.tmp cd $SUB if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then rm conftest.tmp AC_MSG_RESULT([continue configure in default builddir "./$SUB"]) else AC_MSG_ERROR([could not change to default builddir "./$SUB"]) fi srcdir=`echo "$SUB" | sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'` # going to restart from subdirectory location test -f $srcdir/config.log && mv $srcdir/config.log . test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . test -f $srcdir/conftest.log && mv $srcdir/conftest.log . test -f $srcdir/$cache_file && mv $srcdir/$cache_file . AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"}) case "[$]0" in # restart [[\\/]]* | ?:[[\\/]]*) # Asbolute name eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; esac ; exit $? fi fi fi fi test ".$SUB" = ".auto" && SUB="." dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec" AC_PATH_PROG(SED,gsed sed, sed) AUX="$am_aux_dir" AS_VAR_POPDEF([SED])dnl AS_VAR_POPDEF([AUX])dnl AS_VAR_POPDEF([SUB])dnl AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status .............. AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl pushdef([END],[Makefile.mk])dnl pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl SRC="$ax_enable_builddir_srcdir" if test ".$SUB" = ".." ; then if test -f "$TOP/Makefile" ; then AC_MSG_NOTICE([skipping TOP/Makefile - left untouched]) else AC_MSG_NOTICE([skipping TOP/Makefile - not created]) fi else if test -f "$SRC/Makefile" ; then a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile` test "$a" != "$b" && rm "$SRC/Makefile" fi if test -f "$SRC/Makefile" ; then echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk echo " []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null then rm $SRC/Makefile ; fi cp $tmp/conftemp.mk $SRC/makefiles.mk~ ## DEBUGGING fi if test ! -f "$SRC/Makefile" ; then AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile]) x='`' ; cat >$tmp/conftemp.sed <<_EOF /^\$/n x /^\$/bS x /\\\\\$/{H;d;} {H;s/.*//;x;} bM :S x /\\\\\$/{h;d;} {h;s/.*//;x;} :M s/\\(\\n\\) /\\1 /g /^ /d /^[[ ]]*[[\\#]]/d /^VPATH *=/d s/^srcdir *=.*/srcdir = ./ s/^top_srcdir *=.*/top_srcdir = ./ /[[:=]]/!d /^\\./d dnl Now handle rules (i.e. lines containing ":" but not " = "). / = /b / .= /b /:/!b s/:.*/:/ s/ / /g s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/ s/ / /g /^all all[]_ALL[[ :]]/i\\ all-configured : all[]_ALL dnl dist-all exists... and would make for dist-all-all s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g /[]_ALL[]_ALL/d a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree) /dist[]_ALL *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ ; if test "\$\$found" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree) /dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ ; if test "\$\$found" -eq "0" ; then : \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done dnl special rule add-on: "distclean" removes all local builddirs completely /distclean[]_ALL *:/a\\ @ HOST="\$(HOST)\" \\\\\\ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile _EOF cp "$tmp/conftemp.sed" "$SRC/makefile.sed~" ## DEBUGGING $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])]) cat $SRC/END >>$SRC/Makefile fi ; xxxx="####" echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile # sanity check if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts]) $SED -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $SRC/Makefile \ >$SRC/Makefile~ (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null fi else xxxx="\\#\\#\\#\\#" # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~" ## DEBUGGING cp "$tmp/mkfile.tmp" "$SRC/makefiles.out~" ## DEBUGGING if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure]) rm "$tmp/mkfile.tmp" else AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure]) mv "$tmp/mkfile.tmp" "$SRC/Makefile" fi fi AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)]) xxxx="####" echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile fi popdef([END])dnl AS_VAR_POPDEF([SED])dnl AS_VAR_POPDEF([AUX])dnl AS_VAR_POPDEF([SRC])dnl AS_VAR_POPDEF([TOP])dnl AS_VAR_POPDEF([SUB])dnl ],[dnl ax_enable_builddir_srcdir="$srcdir" # $srcdir ax_enable_builddir_host="$HOST" # $HOST / $host ax_enable_builddir_version="$VERSION" # $VERSION ax_enable_builddir_package="$PACKAGE" # $PACKAGE ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED ax_enable_builddir="$ax_enable_builddir" # $SUB ])dnl ]) polyml-5.7.1/libffi/configure.ac0000644000175000017500000004254313204034553015530 0ustar daviddaviddnl Process this with autoconf to create configure AC_PREREQ(2.68) AC_INIT([libffi], [3.2.1], [http://github.com/atgreen/libffi/issues]) AC_CONFIG_HEADERS([fficonfig.h]) AC_CANONICAL_SYSTEM target_alias=${target_alias-$host_alias} case "${host}" in frv*-elf) LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ ;; esac AX_ENABLE_BUILDDIR AM_INIT_AUTOMAKE # The same as in boehm-gc and libstdc++. Have to borrow it from there. # We must force CC to /not/ be precious variables; otherwise # the wrong, non-multilib-adjusted value will be used in multilibs. # As a side effect, we have to subst CFLAGS ourselves. # Also save and restore CFLAGS, since AC_PROG_CC will come up with # defaults of its own if none are provided. m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) m4_define([_AC_ARG_VAR_PRECIOUS],[]) save_CFLAGS=$CFLAGS AC_PROG_CC AC_PROG_CXX CFLAGS=$save_CFLAGS m4_undefine([_AC_ARG_VAR_PRECIOUS]) m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) AC_SUBST(CFLAGS) AM_PROG_AS AM_PROG_CC_C_O AC_PROG_LIBTOOL AC_CONFIG_MACRO_DIR([m4]) # Test for 64-bit build. AC_CHECK_SIZEOF([size_t]) AX_COMPILER_VENDOR AX_CC_MAXOPT # The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro # compiler. if test "$ax_cv_c_compiler_vendor" != "sun"; then AX_CFLAGS_WARN_ALL fi if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -fexceptions" fi cat > local.exp < conftest.s if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then libffi_cv_as_x86_pcrel=yes fi ]) if test "x$libffi_cv_as_x86_pcrel" = xyes; then AC_DEFINE(HAVE_AS_X86_PCREL, 1, [Define if your assembler supports PC relative relocs.]) fi AC_CACHE_CHECK([assembler .ascii pseudo-op support], libffi_cv_as_ascii_pseudo_op, [ libffi_cv_as_ascii_pseudo_op=unknown # Check if we have .ascii AC_TRY_COMPILE(,[asm (".ascii \\"string\\"");], [libffi_cv_as_ascii_pseudo_op=yes], [libffi_cv_as_ascii_pseudo_op=no]) ]) if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1, [Define if your assembler supports .ascii.]) fi AC_CACHE_CHECK([assembler .string pseudo-op support], libffi_cv_as_string_pseudo_op, [ libffi_cv_as_string_pseudo_op=unknown # Check if we have .string AC_TRY_COMPILE(,[asm (".string \\"string\\"");], [libffi_cv_as_string_pseudo_op=yes], [libffi_cv_as_string_pseudo_op=no]) ]) if test "x$libffi_cv_as_string_pseudo_op" = xyes; then AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1, [Define if your assembler supports .string.]) fi fi # On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. AC_ARG_ENABLE(pax_emutramp, [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], if test "$enable_pax_emutramp" = "yes"; then AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, [Define this if you want to enable pax emulated trampolines]) fi) LT_SYS_SYMBOL_USCORE if test "x$sys_symbol_underscore" = xyes; then AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) fi FFI_EXEC_TRAMPOLINE_TABLE=0 case "$target" in *arm*-apple-darwin*) FFI_EXEC_TRAMPOLINE_TABLE=1 AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, [Cannot use PROT_EXEC on this target, so, we revert to alternative means]) ;; *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*) AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, [Cannot use malloc on this target, so, we revert to alternative means]) ;; esac AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) if test x$TARGET = xX86_64; then AC_CACHE_CHECK([toolchain supports unwind section type], libffi_cv_as_x86_64_unwind_section_type, [ cat > conftest1.s << EOF .text .globl foo foo: jmp bar .section .eh_frame,"a",@unwind bar: EOF cat > conftest2.c << EOF extern void foo(); int main(){foo();} EOF libffi_cv_as_x86_64_unwind_section_type=no # we ensure that we can compile _and_ link an assembly file containing an @unwind section # since the compiler can support it and not the linker (ie old binutils) if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then libffi_cv_as_x86_64_unwind_section_type=yes fi ]) if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, [Define if your assembler supports unwind section type.]) fi fi if test "x$GCC" = "xyes"; then AC_CACHE_CHECK([whether .eh_frame section should be read-only], libffi_cv_ro_eh_frame, [ libffi_cv_ro_eh_frame=no echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then objdump -h conftest.o > conftest.dump 2>&1 libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` libffi_test_line=`expr $libffi_eh_frame_line + 1`p sed -n $libffi_test_line conftest.dump > conftest.line if grep READONLY conftest.line > /dev/null; then libffi_cv_ro_eh_frame=yes fi fi rm -f conftest.* ]) if test "x$libffi_cv_ro_eh_frame" = xyes; then AC_DEFINE(HAVE_RO_EH_FRAME, 1, [Define if .eh_frame sections should be read-only.]) AC_DEFINE(EH_FRAME_FLAGS, "a", [Define to the flags needed for the .section .eh_frame directive. ]) else AC_DEFINE(EH_FRAME_FLAGS, "aw", [Define to the flags needed for the .section .eh_frame directive. ]) fi AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], libffi_cv_hidden_visibility_attribute, [ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c libffi_cv_hidden_visibility_attribute=no if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then if grep '\.hidden.*foo' conftest.s >/dev/null; then libffi_cv_hidden_visibility_attribute=yes fi fi rm -f conftest.* ]) if test $libffi_cv_hidden_visibility_attribute = yes; then AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, [Define if __attribute__((visibility("hidden"))) is supported.]) fi fi AH_BOTTOM([ #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE #ifdef LIBFFI_ASM #define FFI_HIDDEN(name) .hidden name #else #define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) #endif #else #ifdef LIBFFI_ASM #define FFI_HIDDEN(name) #else #define FFI_HIDDEN #endif #endif ]) AC_SUBST(TARGET) AC_SUBST(TARGETDIR) AC_SUBST(SHELL) AC_ARG_ENABLE(debug, [ --enable-debug debugging mode], if test "$enable_debug" = "yes"; then AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) fi) AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") AC_ARG_ENABLE(structs, [ --disable-structs omit code for struct support], if test "$enable_structs" = "no"; then AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.]) fi) AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") AC_ARG_ENABLE(raw-api, [ --disable-raw-api make the raw api unavailable], if test "$enable_raw_api" = "no"; then AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.]) fi) AC_ARG_ENABLE(purify-safety, [ --enable-purify-safety purify-safe mode], if test "$enable_purify_safety" = "yes"; then AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) fi) # These variables are only ever used when we cross-build to X86_WIN32. # And we only support this with GCC, so... if test "x$GCC" = "xyes"; then if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then toolexecdir="${exec_prefix}"/'$(target_alias)' toolexeclibdir="${toolexecdir}"/lib else toolexecdir="${libdir}"/gcc-lib/'$(target_alias)' toolexeclibdir="${libdir}" fi multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` case $multi_os_directory in .) ;; # Avoid trailing /. ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; esac AC_SUBST(toolexecdir) else toolexeclibdir="${libdir}" fi AC_SUBST(toolexeclibdir) AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) AC_CONFIG_COMMANDS(src, [ test -d src || mkdir src test -d src/$TARGETDIR || mkdir src/$TARGETDIR ], [TARGETDIR="$TARGETDIR"]) AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc) AC_OUTPUT polyml-5.7.1/libffi/Makefile.in0000644000175000017500000022257613204034553015315 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @FFI_DEBUG_TRUE@am__append_1 = src/debug.c @MIPS_TRUE@am__append_2 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S @BFIN_TRUE@am__append_3 = src/bfin/ffi.c src/bfin/sysv.S @X86_TRUE@am__append_4 = src/x86/ffi.c src/x86/sysv.S src/x86/win32.S @X86_FREEBSD_TRUE@am__append_5 = src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S @X86_WIN32_TRUE@am__append_6 = src/x86/ffi.c src/x86/win32.S @X86_WIN64_TRUE@am__append_7 = src/x86/ffi.c src/x86/win64.S @X86_DARWIN_TRUE@am__append_8 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S @X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__append_9 = src/x86/win32.S @SPARC_TRUE@am__append_10 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S @ALPHA_TRUE@am__append_11 = src/alpha/ffi.c src/alpha/osf.S @IA64_TRUE@am__append_12 = src/ia64/ffi.c src/ia64/unix.S @M32R_TRUE@am__append_13 = src/m32r/sysv.S src/m32r/ffi.c @M68K_TRUE@am__append_14 = src/m68k/ffi.c src/m68k/sysv.S @M88K_TRUE@am__append_15 = src/m88k/ffi.c src/m88k/obsd.S @MOXIE_TRUE@am__append_16 = src/moxie/ffi.c src/moxie/eabi.S @MICROBLAZE_TRUE@am__append_17 = src/microblaze/ffi.c src/microblaze/sysv.S @NIOS2_TRUE@am__append_18 = src/nios2/sysv.S src/nios2/ffi.c @OR1K_TRUE@am__append_19 = src/or1k/sysv.S src/or1k/ffi.c @POWERPC_TRUE@am__append_20 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S @POWERPC_AIX_TRUE@am__append_21 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S @POWERPC_DARWIN_TRUE@am__append_22 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S @POWERPC_FREEBSD_TRUE@am__append_23 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S @AARCH64_TRUE@am__append_24 = src/aarch64/sysv.S src/aarch64/ffi.c @ARC_TRUE@am__append_25 = src/arc/arcompact.S src/arc/ffi.c @ARM_TRUE@am__append_26 = src/arm/sysv.S src/arm/ffi.c @ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__append_27 = src/arm/trampoline.S @AVR32_TRUE@am__append_28 = src/avr32/sysv.S src/avr32/ffi.c @LIBFFI_CRIS_TRUE@am__append_29 = src/cris/sysv.S src/cris/ffi.c @FRV_TRUE@am__append_30 = src/frv/eabi.S src/frv/ffi.c @S390_TRUE@am__append_31 = src/s390/sysv.S src/s390/ffi.c @X86_64_TRUE@am__append_32 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S @SH_TRUE@am__append_33 = src/sh/sysv.S src/sh/ffi.c @SH64_TRUE@am__append_34 = src/sh64/sysv.S src/sh64/ffi.c @PA_LINUX_TRUE@am__append_35 = src/pa/linux.S src/pa/ffi.c @PA_HPUX_TRUE@am__append_36 = src/pa/hpux32.S src/pa/ffi.c @TILE_TRUE@am__append_37 = src/tile/tile.S src/tile/ffi.c @XTENSA_TRUE@am__append_38 = src/xtensa/sysv.S src/xtensa/ffi.c @METAG_TRUE@am__append_39 = src/metag/sysv.S src/metag/ffi.c @VAX_TRUE@am__append_40 = src/vax/elfbsd.S src/vax/ffi.c # Build debug. Define FFI_DEBUG on the commandline so that, when building with # MSVC, it can link against the debug CRT. @FFI_DEBUG_TRUE@am__append_41 = -DFFI_DEBUG subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/fficonfig.h.in $(srcdir)/libffi.pc.in depcomp \ ChangeLog README compile config.guess config.sub install-sh \ mdate-sh missing texinfo.tex ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ $(top_srcdir)/m4/ax_append_flag.m4 \ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ $(top_srcdir)/m4/ax_configure_args.m4 \ $(top_srcdir)/m4/ax_enable_builddir.m4 \ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = fficonfig.h CONFIG_CLEAN_FILES = libffi.pc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ "$(DESTDIR)$(pkgconfigdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) libffi_la_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \ src/java_raw_api.lo src/closures.lo @FFI_DEBUG_TRUE@am__objects_1 = src/debug.lo @MIPS_TRUE@am__objects_2 = src/mips/ffi.lo src/mips/o32.lo \ @MIPS_TRUE@ src/mips/n32.lo @BFIN_TRUE@am__objects_3 = src/bfin/ffi.lo src/bfin/sysv.lo @X86_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/sysv.lo \ @X86_TRUE@ src/x86/win32.lo @X86_FREEBSD_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/freebsd.lo \ @X86_FREEBSD_TRUE@ src/x86/win32.lo @X86_WIN32_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/win32.lo @X86_WIN64_TRUE@am__objects_7 = src/x86/ffi.lo src/x86/win64.lo @X86_DARWIN_TRUE@am__objects_8 = src/x86/ffi.lo src/x86/darwin.lo \ @X86_DARWIN_TRUE@ src/x86/ffi64.lo src/x86/darwin64.lo @X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__objects_9 = src/x86/win32.lo @SPARC_TRUE@am__objects_10 = src/sparc/ffi.lo src/sparc/v8.lo \ @SPARC_TRUE@ src/sparc/v9.lo @ALPHA_TRUE@am__objects_11 = src/alpha/ffi.lo src/alpha/osf.lo @IA64_TRUE@am__objects_12 = src/ia64/ffi.lo src/ia64/unix.lo @M32R_TRUE@am__objects_13 = src/m32r/sysv.lo src/m32r/ffi.lo @M68K_TRUE@am__objects_14 = src/m68k/ffi.lo src/m68k/sysv.lo @M88K_TRUE@am__objects_15 = src/m88k/ffi.lo src/m88k/obsd.lo @MOXIE_TRUE@am__objects_16 = src/moxie/ffi.lo src/moxie/eabi.lo @MICROBLAZE_TRUE@am__objects_17 = src/microblaze/ffi.lo \ @MICROBLAZE_TRUE@ src/microblaze/sysv.lo @NIOS2_TRUE@am__objects_18 = src/nios2/sysv.lo src/nios2/ffi.lo @OR1K_TRUE@am__objects_19 = src/or1k/sysv.lo src/or1k/ffi.lo @POWERPC_TRUE@am__objects_20 = src/powerpc/ffi.lo \ @POWERPC_TRUE@ src/powerpc/ffi_sysv.lo \ @POWERPC_TRUE@ src/powerpc/ffi_linux64.lo src/powerpc/sysv.lo \ @POWERPC_TRUE@ src/powerpc/ppc_closure.lo \ @POWERPC_TRUE@ src/powerpc/linux64.lo \ @POWERPC_TRUE@ src/powerpc/linux64_closure.lo @POWERPC_AIX_TRUE@am__objects_21 = src/powerpc/ffi_darwin.lo \ @POWERPC_AIX_TRUE@ src/powerpc/aix.lo \ @POWERPC_AIX_TRUE@ src/powerpc/aix_closure.lo @POWERPC_DARWIN_TRUE@am__objects_22 = src/powerpc/ffi_darwin.lo \ @POWERPC_DARWIN_TRUE@ src/powerpc/darwin.lo \ @POWERPC_DARWIN_TRUE@ src/powerpc/darwin_closure.lo @POWERPC_FREEBSD_TRUE@am__objects_23 = src/powerpc/ffi.lo \ @POWERPC_FREEBSD_TRUE@ src/powerpc/ffi_sysv.lo \ @POWERPC_FREEBSD_TRUE@ src/powerpc/sysv.lo \ @POWERPC_FREEBSD_TRUE@ src/powerpc/ppc_closure.lo @AARCH64_TRUE@am__objects_24 = src/aarch64/sysv.lo src/aarch64/ffi.lo @ARC_TRUE@am__objects_25 = src/arc/arcompact.lo src/arc/ffi.lo @ARM_TRUE@am__objects_26 = src/arm/sysv.lo src/arm/ffi.lo @ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__objects_27 = src/arm/trampoline.lo @AVR32_TRUE@am__objects_28 = src/avr32/sysv.lo src/avr32/ffi.lo @LIBFFI_CRIS_TRUE@am__objects_29 = src/cris/sysv.lo src/cris/ffi.lo @FRV_TRUE@am__objects_30 = src/frv/eabi.lo src/frv/ffi.lo @S390_TRUE@am__objects_31 = src/s390/sysv.lo src/s390/ffi.lo @X86_64_TRUE@am__objects_32 = src/x86/ffi64.lo src/x86/unix64.lo \ @X86_64_TRUE@ src/x86/ffi.lo src/x86/sysv.lo @SH_TRUE@am__objects_33 = src/sh/sysv.lo src/sh/ffi.lo @SH64_TRUE@am__objects_34 = src/sh64/sysv.lo src/sh64/ffi.lo @PA_LINUX_TRUE@am__objects_35 = src/pa/linux.lo src/pa/ffi.lo @PA_HPUX_TRUE@am__objects_36 = src/pa/hpux32.lo src/pa/ffi.lo @TILE_TRUE@am__objects_37 = src/tile/tile.lo src/tile/ffi.lo @XTENSA_TRUE@am__objects_38 = src/xtensa/sysv.lo src/xtensa/ffi.lo @METAG_TRUE@am__objects_39 = src/metag/sysv.lo src/metag/ffi.lo @VAX_TRUE@am__objects_40 = src/vax/elfbsd.lo src/vax/ffi.lo nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_6) $(am__objects_7) $(am__objects_8) \ $(am__objects_9) $(am__objects_10) $(am__objects_11) \ $(am__objects_12) $(am__objects_13) $(am__objects_14) \ $(am__objects_15) $(am__objects_16) $(am__objects_17) \ $(am__objects_18) $(am__objects_19) $(am__objects_20) \ $(am__objects_21) $(am__objects_22) $(am__objects_23) \ $(am__objects_24) $(am__objects_25) $(am__objects_26) \ $(am__objects_27) $(am__objects_28) $(am__objects_29) \ $(am__objects_30) $(am__objects_31) $(am__objects_32) \ $(am__objects_33) $(am__objects_34) $(am__objects_35) \ $(am__objects_36) $(am__objects_37) $(am__objects_38) \ $(am__objects_39) $(am__objects_40) libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \ $(nodist_libffi_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libffi_la_LDFLAGS) $(LDFLAGS) -o $@ libffi_convenience_la_LIBADD = am__objects_41 = src/prep_cif.lo src/types.lo src/raw_api.lo \ src/java_raw_api.lo src/closures.lo am_libffi_convenience_la_OBJECTS = $(am__objects_41) am__objects_42 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) $(am__objects_5) $(am__objects_6) \ $(am__objects_7) $(am__objects_8) $(am__objects_9) \ $(am__objects_10) $(am__objects_11) $(am__objects_12) \ $(am__objects_13) $(am__objects_14) $(am__objects_15) \ $(am__objects_16) $(am__objects_17) $(am__objects_18) \ $(am__objects_19) $(am__objects_20) $(am__objects_21) \ $(am__objects_22) $(am__objects_23) $(am__objects_24) \ $(am__objects_25) $(am__objects_26) $(am__objects_27) \ $(am__objects_28) $(am__objects_29) $(am__objects_30) \ $(am__objects_31) $(am__objects_32) $(am__objects_33) \ $(am__objects_34) $(am__objects_35) $(am__objects_36) \ $(am__objects_37) $(am__objects_38) $(am__objects_39) \ $(am__objects_40) nodist_libffi_convenience_la_OBJECTS = $(am__objects_42) libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \ $(nodist_libffi_convenience_la_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) am__v_CPPAS_0 = @echo " CPPAS " $@; am__v_CPPAS_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \ $(libffi_convenience_la_SOURCES) \ $(nodist_libffi_convenience_la_SOURCES) DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)fficonfig.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LTLDFLAGS = @AM_LTLDFLAGS@ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ TARGETDIR = @TARGETDIR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_enable_builddir_sed = @ax_enable_builddir_sed@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ toolexeclibdir = @toolexeclibdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Poly AUTOMAKE_OPTIONS = foreign subdir-objects ACLOCAL_AMFLAGS = -I m4 SUBDIRS = include testsuite man EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \ src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S \ src/alpha/ffi.c src/alpha/osf.S \ src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S \ src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S \ src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S \ src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S \ src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h \ src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c \ src/mips/n32.S src/mips/o32.S src/metag/ffi.c \ src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c \ src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h \ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h \ src/microblaze/ffi.c src/microblaze/sysv.S \ src/microblaze/ffitarget.h \ src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S \ src/or1k/ffi.c src/or1k/ffitarget.h src/or1k/sysv.S \ src/powerpc/ffi.c src/powerpc/ffi_powerpc.h \ src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \ src/powerpc/sysv.S src/powerpc/linux64.S \ src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S \ src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c \ src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S \ src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c \ src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S \ src/x86/win32.S src/x86/darwin.S src/x86/win64.S \ src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S \ src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c \ src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c \ src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S \ src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c \ src/tile/ffitarget.h src/tile/tile.S libtool-version \ src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S \ src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S \ ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4 \ m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh \ generate-darwin-source-and-headers.py \ libffi.xcodeproj/project.pbxproj src/arm/trampoline.S \ libtool-ldflags ChangeLog.libffi-3.1 # Poly - don't try to create the tex info. #info_TEXINFOS = doc/libffi.texi # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and # friends when we are called from the top level Makefile. AM_MAKEFLAGS = \ 'AR_FLAGS=$(AR_FLAGS)' \ 'CC_FOR_BUILD=$(CC_FOR_BUILD)' \ 'CFLAGS=$(CFLAGS)' \ 'CXXFLAGS=$(CXXFLAGS)' \ 'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \ 'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \ 'INSTALL=$(INSTALL)' \ 'INSTALL_DATA=$(INSTALL_DATA)' \ 'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \ 'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \ 'JC1FLAGS=$(JC1FLAGS)' \ 'LDFLAGS=$(LDFLAGS)' \ 'LIBCFLAGS=$(LIBCFLAGS)' \ 'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \ 'MAKE=$(MAKE)' \ 'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \ 'PICFLAG=$(PICFLAG)' \ 'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \ 'RUNTESTFLAGS=$(RUNTESTFLAGS)' \ 'SHELL=$(SHELL)' \ 'exec_prefix=$(exec_prefix)' \ 'infodir=$(infodir)' \ 'libdir=$(libdir)' \ 'mandir=$(mandir)' \ 'prefix=$(prefix)' \ 'AR=$(AR)' \ 'AS=$(AS)' \ 'CC=$(CC)' \ 'CXX=$(CXX)' \ 'LD=$(LD)' \ 'NM=$(NM)' \ 'RANLIB=$(RANLIB)' \ 'DESTDIR=$(DESTDIR)' # Subdir rules rely on $(FLAGS_TO_PASS) FLAGS_TO_PASS = $(AM_MAKEFLAGS) MAKEOVERRIDES = toolexeclib_LTLIBRARIES = libffi.la noinst_LTLIBRARIES = libffi_convenience.la libffi_la_SOURCES = src/prep_cif.c src/types.c \ src/raw_api.c src/java_raw_api.c src/closures.c pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libffi.pc nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \ $(am__append_3) $(am__append_4) $(am__append_5) \ $(am__append_6) $(am__append_7) $(am__append_8) \ $(am__append_9) $(am__append_10) $(am__append_11) \ $(am__append_12) $(am__append_13) $(am__append_14) \ $(am__append_15) $(am__append_16) $(am__append_17) \ $(am__append_18) $(am__append_19) $(am__append_20) \ $(am__append_21) $(am__append_22) $(am__append_23) \ $(am__append_24) $(am__append_25) $(am__append_26) \ $(am__append_27) $(am__append_28) $(am__append_29) \ $(am__append_30) $(am__append_31) $(am__append_32) \ $(am__append_33) $(am__append_34) $(am__append_35) \ $(am__append_36) $(am__append_37) $(am__append_38) \ $(am__append_39) $(am__append_40) libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) AM_CFLAGS = $(am__append_41) libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src AM_CCASFLAGS = $(AM_CPPFLAGS) all: fficonfig.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .S .c .lo .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): fficonfig.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h $(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f fficonfig.h stamp-h1 libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ } uninstall-toolexeclibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ done clean-toolexeclibLTLIBRARIES: -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) @list='$(toolexeclib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/$(DEPDIR) @: > src/$(DEPDIR)/$(am__dirstamp) src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/mips/$(am__dirstamp): @$(MKDIR_P) src/mips @: > src/mips/$(am__dirstamp) src/mips/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/mips/$(DEPDIR) @: > src/mips/$(DEPDIR)/$(am__dirstamp) src/mips/ffi.lo: src/mips/$(am__dirstamp) \ src/mips/$(DEPDIR)/$(am__dirstamp) src/mips/o32.lo: src/mips/$(am__dirstamp) \ src/mips/$(DEPDIR)/$(am__dirstamp) src/mips/n32.lo: src/mips/$(am__dirstamp) \ src/mips/$(DEPDIR)/$(am__dirstamp) src/bfin/$(am__dirstamp): @$(MKDIR_P) src/bfin @: > src/bfin/$(am__dirstamp) src/bfin/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/bfin/$(DEPDIR) @: > src/bfin/$(DEPDIR)/$(am__dirstamp) src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \ src/bfin/$(DEPDIR)/$(am__dirstamp) src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \ src/bfin/$(DEPDIR)/$(am__dirstamp) src/x86/$(am__dirstamp): @$(MKDIR_P) src/x86 @: > src/x86/$(am__dirstamp) src/x86/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/x86/$(DEPDIR) @: > src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/ffi.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/sysv.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/win32.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/freebsd.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/win64.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/darwin.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/ffi64.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/x86/darwin64.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/sparc/$(am__dirstamp): @$(MKDIR_P) src/sparc @: > src/sparc/$(am__dirstamp) src/sparc/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/sparc/$(DEPDIR) @: > src/sparc/$(DEPDIR)/$(am__dirstamp) src/sparc/ffi.lo: src/sparc/$(am__dirstamp) \ src/sparc/$(DEPDIR)/$(am__dirstamp) src/sparc/v8.lo: src/sparc/$(am__dirstamp) \ src/sparc/$(DEPDIR)/$(am__dirstamp) src/sparc/v9.lo: src/sparc/$(am__dirstamp) \ src/sparc/$(DEPDIR)/$(am__dirstamp) src/alpha/$(am__dirstamp): @$(MKDIR_P) src/alpha @: > src/alpha/$(am__dirstamp) src/alpha/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/alpha/$(DEPDIR) @: > src/alpha/$(DEPDIR)/$(am__dirstamp) src/alpha/ffi.lo: src/alpha/$(am__dirstamp) \ src/alpha/$(DEPDIR)/$(am__dirstamp) src/alpha/osf.lo: src/alpha/$(am__dirstamp) \ src/alpha/$(DEPDIR)/$(am__dirstamp) src/ia64/$(am__dirstamp): @$(MKDIR_P) src/ia64 @: > src/ia64/$(am__dirstamp) src/ia64/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/ia64/$(DEPDIR) @: > src/ia64/$(DEPDIR)/$(am__dirstamp) src/ia64/ffi.lo: src/ia64/$(am__dirstamp) \ src/ia64/$(DEPDIR)/$(am__dirstamp) src/ia64/unix.lo: src/ia64/$(am__dirstamp) \ src/ia64/$(DEPDIR)/$(am__dirstamp) src/m32r/$(am__dirstamp): @$(MKDIR_P) src/m32r @: > src/m32r/$(am__dirstamp) src/m32r/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/m32r/$(DEPDIR) @: > src/m32r/$(DEPDIR)/$(am__dirstamp) src/m32r/sysv.lo: src/m32r/$(am__dirstamp) \ src/m32r/$(DEPDIR)/$(am__dirstamp) src/m32r/ffi.lo: src/m32r/$(am__dirstamp) \ src/m32r/$(DEPDIR)/$(am__dirstamp) src/m68k/$(am__dirstamp): @$(MKDIR_P) src/m68k @: > src/m68k/$(am__dirstamp) src/m68k/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/m68k/$(DEPDIR) @: > src/m68k/$(DEPDIR)/$(am__dirstamp) src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \ src/m68k/$(DEPDIR)/$(am__dirstamp) src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \ src/m68k/$(DEPDIR)/$(am__dirstamp) src/m88k/$(am__dirstamp): @$(MKDIR_P) src/m88k @: > src/m88k/$(am__dirstamp) src/m88k/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/m88k/$(DEPDIR) @: > src/m88k/$(DEPDIR)/$(am__dirstamp) src/m88k/ffi.lo: src/m88k/$(am__dirstamp) \ src/m88k/$(DEPDIR)/$(am__dirstamp) src/m88k/obsd.lo: src/m88k/$(am__dirstamp) \ src/m88k/$(DEPDIR)/$(am__dirstamp) src/moxie/$(am__dirstamp): @$(MKDIR_P) src/moxie @: > src/moxie/$(am__dirstamp) src/moxie/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/moxie/$(DEPDIR) @: > src/moxie/$(DEPDIR)/$(am__dirstamp) src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \ src/moxie/$(DEPDIR)/$(am__dirstamp) src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \ src/moxie/$(DEPDIR)/$(am__dirstamp) src/microblaze/$(am__dirstamp): @$(MKDIR_P) src/microblaze @: > src/microblaze/$(am__dirstamp) src/microblaze/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/microblaze/$(DEPDIR) @: > src/microblaze/$(DEPDIR)/$(am__dirstamp) src/microblaze/ffi.lo: src/microblaze/$(am__dirstamp) \ src/microblaze/$(DEPDIR)/$(am__dirstamp) src/microblaze/sysv.lo: src/microblaze/$(am__dirstamp) \ src/microblaze/$(DEPDIR)/$(am__dirstamp) src/nios2/$(am__dirstamp): @$(MKDIR_P) src/nios2 @: > src/nios2/$(am__dirstamp) src/nios2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/nios2/$(DEPDIR) @: > src/nios2/$(DEPDIR)/$(am__dirstamp) src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \ src/nios2/$(DEPDIR)/$(am__dirstamp) src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \ src/nios2/$(DEPDIR)/$(am__dirstamp) src/or1k/$(am__dirstamp): @$(MKDIR_P) src/or1k @: > src/or1k/$(am__dirstamp) src/or1k/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/or1k/$(DEPDIR) @: > src/or1k/$(DEPDIR)/$(am__dirstamp) src/or1k/sysv.lo: src/or1k/$(am__dirstamp) \ src/or1k/$(DEPDIR)/$(am__dirstamp) src/or1k/ffi.lo: src/or1k/$(am__dirstamp) \ src/or1k/$(DEPDIR)/$(am__dirstamp) src/powerpc/$(am__dirstamp): @$(MKDIR_P) src/powerpc @: > src/powerpc/$(am__dirstamp) src/powerpc/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/powerpc/$(DEPDIR) @: > src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/ffi_sysv.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/ffi_linux64.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/ffi_darwin.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \ src/powerpc/$(DEPDIR)/$(am__dirstamp) src/aarch64/$(am__dirstamp): @$(MKDIR_P) src/aarch64 @: > src/aarch64/$(am__dirstamp) src/aarch64/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/aarch64/$(DEPDIR) @: > src/aarch64/$(DEPDIR)/$(am__dirstamp) src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \ src/aarch64/$(DEPDIR)/$(am__dirstamp) src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \ src/aarch64/$(DEPDIR)/$(am__dirstamp) src/arc/$(am__dirstamp): @$(MKDIR_P) src/arc @: > src/arc/$(am__dirstamp) src/arc/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/arc/$(DEPDIR) @: > src/arc/$(DEPDIR)/$(am__dirstamp) src/arc/arcompact.lo: src/arc/$(am__dirstamp) \ src/arc/$(DEPDIR)/$(am__dirstamp) src/arc/ffi.lo: src/arc/$(am__dirstamp) \ src/arc/$(DEPDIR)/$(am__dirstamp) src/arm/$(am__dirstamp): @$(MKDIR_P) src/arm @: > src/arm/$(am__dirstamp) src/arm/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/arm/$(DEPDIR) @: > src/arm/$(DEPDIR)/$(am__dirstamp) src/arm/sysv.lo: src/arm/$(am__dirstamp) \ src/arm/$(DEPDIR)/$(am__dirstamp) src/arm/ffi.lo: src/arm/$(am__dirstamp) \ src/arm/$(DEPDIR)/$(am__dirstamp) src/arm/trampoline.lo: src/arm/$(am__dirstamp) \ src/arm/$(DEPDIR)/$(am__dirstamp) src/avr32/$(am__dirstamp): @$(MKDIR_P) src/avr32 @: > src/avr32/$(am__dirstamp) src/avr32/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/avr32/$(DEPDIR) @: > src/avr32/$(DEPDIR)/$(am__dirstamp) src/avr32/sysv.lo: src/avr32/$(am__dirstamp) \ src/avr32/$(DEPDIR)/$(am__dirstamp) src/avr32/ffi.lo: src/avr32/$(am__dirstamp) \ src/avr32/$(DEPDIR)/$(am__dirstamp) src/cris/$(am__dirstamp): @$(MKDIR_P) src/cris @: > src/cris/$(am__dirstamp) src/cris/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/cris/$(DEPDIR) @: > src/cris/$(DEPDIR)/$(am__dirstamp) src/cris/sysv.lo: src/cris/$(am__dirstamp) \ src/cris/$(DEPDIR)/$(am__dirstamp) src/cris/ffi.lo: src/cris/$(am__dirstamp) \ src/cris/$(DEPDIR)/$(am__dirstamp) src/frv/$(am__dirstamp): @$(MKDIR_P) src/frv @: > src/frv/$(am__dirstamp) src/frv/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/frv/$(DEPDIR) @: > src/frv/$(DEPDIR)/$(am__dirstamp) src/frv/eabi.lo: src/frv/$(am__dirstamp) \ src/frv/$(DEPDIR)/$(am__dirstamp) src/frv/ffi.lo: src/frv/$(am__dirstamp) \ src/frv/$(DEPDIR)/$(am__dirstamp) src/s390/$(am__dirstamp): @$(MKDIR_P) src/s390 @: > src/s390/$(am__dirstamp) src/s390/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/s390/$(DEPDIR) @: > src/s390/$(DEPDIR)/$(am__dirstamp) src/s390/sysv.lo: src/s390/$(am__dirstamp) \ src/s390/$(DEPDIR)/$(am__dirstamp) src/s390/ffi.lo: src/s390/$(am__dirstamp) \ src/s390/$(DEPDIR)/$(am__dirstamp) src/x86/unix64.lo: src/x86/$(am__dirstamp) \ src/x86/$(DEPDIR)/$(am__dirstamp) src/sh/$(am__dirstamp): @$(MKDIR_P) src/sh @: > src/sh/$(am__dirstamp) src/sh/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/sh/$(DEPDIR) @: > src/sh/$(DEPDIR)/$(am__dirstamp) src/sh/sysv.lo: src/sh/$(am__dirstamp) \ src/sh/$(DEPDIR)/$(am__dirstamp) src/sh/ffi.lo: src/sh/$(am__dirstamp) src/sh/$(DEPDIR)/$(am__dirstamp) src/sh64/$(am__dirstamp): @$(MKDIR_P) src/sh64 @: > src/sh64/$(am__dirstamp) src/sh64/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/sh64/$(DEPDIR) @: > src/sh64/$(DEPDIR)/$(am__dirstamp) src/sh64/sysv.lo: src/sh64/$(am__dirstamp) \ src/sh64/$(DEPDIR)/$(am__dirstamp) src/sh64/ffi.lo: src/sh64/$(am__dirstamp) \ src/sh64/$(DEPDIR)/$(am__dirstamp) src/pa/$(am__dirstamp): @$(MKDIR_P) src/pa @: > src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/pa/$(DEPDIR) @: > src/pa/$(DEPDIR)/$(am__dirstamp) src/pa/linux.lo: src/pa/$(am__dirstamp) \ src/pa/$(DEPDIR)/$(am__dirstamp) src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp) src/pa/hpux32.lo: src/pa/$(am__dirstamp) \ src/pa/$(DEPDIR)/$(am__dirstamp) src/tile/$(am__dirstamp): @$(MKDIR_P) src/tile @: > src/tile/$(am__dirstamp) src/tile/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/tile/$(DEPDIR) @: > src/tile/$(DEPDIR)/$(am__dirstamp) src/tile/tile.lo: src/tile/$(am__dirstamp) \ src/tile/$(DEPDIR)/$(am__dirstamp) src/tile/ffi.lo: src/tile/$(am__dirstamp) \ src/tile/$(DEPDIR)/$(am__dirstamp) src/xtensa/$(am__dirstamp): @$(MKDIR_P) src/xtensa @: > src/xtensa/$(am__dirstamp) src/xtensa/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/xtensa/$(DEPDIR) @: > src/xtensa/$(DEPDIR)/$(am__dirstamp) src/xtensa/sysv.lo: src/xtensa/$(am__dirstamp) \ src/xtensa/$(DEPDIR)/$(am__dirstamp) src/xtensa/ffi.lo: src/xtensa/$(am__dirstamp) \ src/xtensa/$(DEPDIR)/$(am__dirstamp) src/metag/$(am__dirstamp): @$(MKDIR_P) src/metag @: > src/metag/$(am__dirstamp) src/metag/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/metag/$(DEPDIR) @: > src/metag/$(DEPDIR)/$(am__dirstamp) src/metag/sysv.lo: src/metag/$(am__dirstamp) \ src/metag/$(DEPDIR)/$(am__dirstamp) src/metag/ffi.lo: src/metag/$(am__dirstamp) \ src/metag/$(DEPDIR)/$(am__dirstamp) src/vax/$(am__dirstamp): @$(MKDIR_P) src/vax @: > src/vax/$(am__dirstamp) src/vax/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/vax/$(DEPDIR) @: > src/vax/$(DEPDIR)/$(am__dirstamp) src/vax/elfbsd.lo: src/vax/$(am__dirstamp) \ src/vax/$(DEPDIR)/$(am__dirstamp) src/vax/ffi.lo: src/vax/$(am__dirstamp) \ src/vax/$(DEPDIR)/$(am__dirstamp) libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) $(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) $(EXTRA_libffi_convenience_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/*.$(OBJEXT) -rm -f src/*.lo -rm -f src/aarch64/*.$(OBJEXT) -rm -f src/aarch64/*.lo -rm -f src/alpha/*.$(OBJEXT) -rm -f src/alpha/*.lo -rm -f src/arc/*.$(OBJEXT) -rm -f src/arc/*.lo -rm -f src/arm/*.$(OBJEXT) -rm -f src/arm/*.lo -rm -f src/avr32/*.$(OBJEXT) -rm -f src/avr32/*.lo -rm -f src/bfin/*.$(OBJEXT) -rm -f src/bfin/*.lo -rm -f src/cris/*.$(OBJEXT) -rm -f src/cris/*.lo -rm -f src/frv/*.$(OBJEXT) -rm -f src/frv/*.lo -rm -f src/ia64/*.$(OBJEXT) -rm -f src/ia64/*.lo -rm -f src/m32r/*.$(OBJEXT) -rm -f src/m32r/*.lo -rm -f src/m68k/*.$(OBJEXT) -rm -f src/m68k/*.lo -rm -f src/m88k/*.$(OBJEXT) -rm -f src/m88k/*.lo -rm -f src/metag/*.$(OBJEXT) -rm -f src/metag/*.lo -rm -f src/microblaze/*.$(OBJEXT) -rm -f src/microblaze/*.lo -rm -f src/mips/*.$(OBJEXT) -rm -f src/mips/*.lo -rm -f src/moxie/*.$(OBJEXT) -rm -f src/moxie/*.lo -rm -f src/nios2/*.$(OBJEXT) -rm -f src/nios2/*.lo -rm -f src/or1k/*.$(OBJEXT) -rm -f src/or1k/*.lo -rm -f src/pa/*.$(OBJEXT) -rm -f src/pa/*.lo -rm -f src/powerpc/*.$(OBJEXT) -rm -f src/powerpc/*.lo -rm -f src/s390/*.$(OBJEXT) -rm -f src/s390/*.lo -rm -f src/sh/*.$(OBJEXT) -rm -f src/sh/*.lo -rm -f src/sh64/*.$(OBJEXT) -rm -f src/sh64/*.lo -rm -f src/sparc/*.$(OBJEXT) -rm -f src/sparc/*.lo -rm -f src/tile/*.$(OBJEXT) -rm -f src/tile/*.lo -rm -f src/vax/*.$(OBJEXT) -rm -f src/vax/*.lo -rm -f src/x86/*.$(OBJEXT) -rm -f src/x86/*.lo -rm -f src/xtensa/*.$(OBJEXT) -rm -f src/xtensa/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/closures.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/debug.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/java_raw_api.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/prep_cif.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/raw_api.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/arcompact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/trampoline.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/eabi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/obsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix_closure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin_closure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_darwin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_linux64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v8.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/tile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/elfbsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/ffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/sysv.Plo@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< .S.obj: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .S.lo: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf src/.libs src/_libs -rm -rf src/aarch64/.libs src/aarch64/_libs -rm -rf src/alpha/.libs src/alpha/_libs -rm -rf src/arc/.libs src/arc/_libs -rm -rf src/arm/.libs src/arm/_libs -rm -rf src/avr32/.libs src/avr32/_libs -rm -rf src/bfin/.libs src/bfin/_libs -rm -rf src/cris/.libs src/cris/_libs -rm -rf src/frv/.libs src/frv/_libs -rm -rf src/ia64/.libs src/ia64/_libs -rm -rf src/m32r/.libs src/m32r/_libs -rm -rf src/m68k/.libs src/m68k/_libs -rm -rf src/m88k/.libs src/m88k/_libs -rm -rf src/metag/.libs src/metag/_libs -rm -rf src/microblaze/.libs src/microblaze/_libs -rm -rf src/mips/.libs src/mips/_libs -rm -rf src/moxie/.libs src/moxie/_libs -rm -rf src/nios2/.libs src/nios2/_libs -rm -rf src/or1k/.libs src/or1k/_libs -rm -rf src/pa/.libs src/pa/_libs -rm -rf src/powerpc/.libs src/powerpc/_libs -rm -rf src/s390/.libs src/s390/_libs -rm -rf src/sh/.libs src/sh/_libs -rm -rf src/sh64/.libs src/sh64/_libs -rm -rf src/sparc/.libs src/sparc/_libs -rm -rf src/tile/.libs src/tile/_libs -rm -rf src/vax/.libs src/vax/_libs -rm -rf src/x86/.libs src/x86/_libs -rm -rf src/xtensa/.libs src/xtensa/_libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) fficonfig.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/$(DEPDIR)/$(am__dirstamp) -rm -f src/$(am__dirstamp) -rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f src/aarch64/$(am__dirstamp) -rm -f src/alpha/$(DEPDIR)/$(am__dirstamp) -rm -f src/alpha/$(am__dirstamp) -rm -f src/arc/$(DEPDIR)/$(am__dirstamp) -rm -f src/arc/$(am__dirstamp) -rm -f src/arm/$(DEPDIR)/$(am__dirstamp) -rm -f src/arm/$(am__dirstamp) -rm -f src/avr32/$(DEPDIR)/$(am__dirstamp) -rm -f src/avr32/$(am__dirstamp) -rm -f src/bfin/$(DEPDIR)/$(am__dirstamp) -rm -f src/bfin/$(am__dirstamp) -rm -f src/cris/$(DEPDIR)/$(am__dirstamp) -rm -f src/cris/$(am__dirstamp) -rm -f src/frv/$(DEPDIR)/$(am__dirstamp) -rm -f src/frv/$(am__dirstamp) -rm -f src/ia64/$(DEPDIR)/$(am__dirstamp) -rm -f src/ia64/$(am__dirstamp) -rm -f src/m32r/$(DEPDIR)/$(am__dirstamp) -rm -f src/m32r/$(am__dirstamp) -rm -f src/m68k/$(DEPDIR)/$(am__dirstamp) -rm -f src/m68k/$(am__dirstamp) -rm -f src/m88k/$(DEPDIR)/$(am__dirstamp) -rm -f src/m88k/$(am__dirstamp) -rm -f src/metag/$(DEPDIR)/$(am__dirstamp) -rm -f src/metag/$(am__dirstamp) -rm -f src/microblaze/$(DEPDIR)/$(am__dirstamp) -rm -f src/microblaze/$(am__dirstamp) -rm -f src/mips/$(DEPDIR)/$(am__dirstamp) -rm -f src/mips/$(am__dirstamp) -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp) -rm -f src/moxie/$(am__dirstamp) -rm -f src/nios2/$(DEPDIR)/$(am__dirstamp) -rm -f src/nios2/$(am__dirstamp) -rm -f src/or1k/$(DEPDIR)/$(am__dirstamp) -rm -f src/or1k/$(am__dirstamp) -rm -f src/pa/$(DEPDIR)/$(am__dirstamp) -rm -f src/pa/$(am__dirstamp) -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp) -rm -f src/powerpc/$(am__dirstamp) -rm -f src/s390/$(DEPDIR)/$(am__dirstamp) -rm -f src/s390/$(am__dirstamp) -rm -f src/sh/$(DEPDIR)/$(am__dirstamp) -rm -f src/sh/$(am__dirstamp) -rm -f src/sh64/$(DEPDIR)/$(am__dirstamp) -rm -f src/sh64/$(am__dirstamp) -rm -f src/sparc/$(DEPDIR)/$(am__dirstamp) -rm -f src/sparc/$(am__dirstamp) -rm -f src/tile/$(DEPDIR)/$(am__dirstamp) -rm -f src/tile/$(am__dirstamp) -rm -f src/vax/$(DEPDIR)/$(am__dirstamp) -rm -f src/vax/$(am__dirstamp) -rm -f src/x86/$(DEPDIR)/$(am__dirstamp) -rm -f src/x86/$(am__dirstamp) -rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp) -rm -f src/xtensa/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-toolexeclibLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-toolexeclibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA uninstall-toolexeclibLTLIBRARIES .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool clean-noinstLTLIBRARIES \ clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \ ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \ dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip install-toolexeclibLTLIBRARIES \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgconfigDATA uninstall-toolexeclibLTLIBRARIES # Poly: don't install anything from this directory install:; @: install-exec:; @: install-data:; @: uninstall:; @: dist-hook: if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/libffi/generate-ios-source-and-headers.py0000644000175000017500000001226713204034553021645 0ustar daviddavid#!/usr/bin/env python import subprocess import re import os import errno import collections import sys class Platform(object): pass sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)') def sdkinfo(sdkname): ret = {} for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout: kv = line.strip().split(': ', 1) if len(kv) == 2: k,v = kv ret[k] = v return ret sim_sdk_info = sdkinfo('iphonesimulator') device_sdk_info = sdkinfo('iphoneos') def latest_sdks(): latest_sim = None latest_device = None for line in subprocess.Popen(['xcodebuild', '-showsdks'], stdout=subprocess.PIPE).stdout: match = sdk_re.match(line) if match: if 'Simulator' in line: latest_sim = match.group(1) elif 'iOS' in line: latest_device = match.group(1) return latest_sim, latest_device sim_sdk, device_sdk = latest_sdks() class simulator_platform(Platform): sdk='iphonesimulator' arch = 'i386' name = 'simulator' triple = 'i386-apple-darwin10' sdkroot = sim_sdk_info['Path'] prefix = "#if !defined(__arm__) && defined(__i386__)\n\n" suffix = "\n\n#endif" class device_platform(Platform): sdk='iphoneos' name = 'ios' arch = 'armv7' triple = 'arm-apple-darwin10' sdkroot = device_sdk_info['Path'] prefix = "#ifdef __arm__\n\n" suffix = "\n\n#endif" def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): if not os.path.exists(dst_dir): os.makedirs(dst_dir) out_filename = filename if file_suffix: split_name = os.path.splitext(filename) out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) with open(os.path.join(src_dir, filename)) as in_file: with open(os.path.join(dst_dir, out_filename), 'w') as out_file: if prefix: out_file.write(prefix) out_file.write(in_file.read()) if suffix: out_file.write(suffix) headers_seen = collections.defaultdict(set) def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None): for root, dirs, files in os.walk(src_dir, followlinks=True): relroot = os.path.relpath(root,src_dir) def move_dir(arch, prefix='', suffix='', files=[]): for file in files: file_suffix = None if file.endswith('.h'): if dest_include_dir: file_suffix = arch if arch: headers_seen[file].add(arch) move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix) elif dest_dir: outroot = os.path.join(dest_dir, relroot) move_file(root, outroot, file, prefix=prefix, suffix=suffix) if relroot == '.': move_dir(arch=arch, files=files, prefix=prefix, suffix=suffix) elif relroot == 'arm': move_dir(arch='arm', prefix="#ifdef __arm__\n\n", suffix="\n\n#endif", files=files) elif relroot == 'x86': move_dir(arch='i386', prefix="#if !defined(__arm__) && defined(__i386__)\n\n", suffix="\n\n#endif", files=files) def build_target(platform): def xcrun_cmd(cmd): return subprocess.check_output(['xcrun', '-sdk', platform.sdkroot, '-find', cmd]).strip() build_dir = 'build_' + platform.name if not os.path.exists(build_dir): os.makedirs(build_dir) env = dict(CC=xcrun_cmd('clang'), LD=xcrun_cmd('ld'), CFLAGS='-arch %s -isysroot %s -miphoneos-version-min=4.0' % (platform.arch, platform.sdkroot)) working_dir=os.getcwd() try: os.chdir(build_dir) subprocess.check_call(['../configure', '-host', platform.triple], env=env) move_source_tree('.', None, '../ios/include', arch=platform.arch, prefix=platform.prefix, suffix=platform.suffix) move_source_tree('./include', None, '../ios/include', arch=platform.arch, prefix=platform.prefix, suffix=platform.suffix) finally: os.chdir(working_dir) for header_name, archs in headers_seen.iteritems(): basename, suffix = os.path.splitext(header_name) def main(): move_source_tree('src', 'ios/src', 'ios/include') move_source_tree('include', None, 'ios/include') build_target(simulator_platform) build_target(device_platform) for header_name, archs in headers_seen.iteritems(): basename, suffix = os.path.splitext(header_name) with open(os.path.join('ios/include', header_name), 'w') as header: for arch in archs: header.write('#include <%s_%s%s>\n' % (basename, arch, suffix)) if __name__ == '__main__': main() polyml-5.7.1/PolyML.exe.manifest0000644000175000017500000000113113204034553015457 0ustar daviddavid PolyML 5.6 polyml-5.7.1/Root.ML0000644000175000017500000001612613204034553013162 0ustar daviddavid(* Copyright (c) 2009, 2010, 2015-17 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Compiler root file. This gives the "use" instructions necessary to build the compiler and suitable for use with an IDE project file. It was constructed from the Poly/ML make files. *) PolyML.print_depth 1; PolyML.Compiler.reportUnreferencedIds := true; use "mlsource/MLCompiler/Address.ML"; use "mlsource/MLCompiler/Misc.ML"; use "mlsource/MLCompiler/HashTable.ML"; use "mlsource/MLCompiler/UniversalTable.ML"; use "mlsource/MLCompiler/StronglyConnected.sml"; use "mlsource/MLCompiler/StretchArray.ML"; use "mlsource/MLCompiler/STRUCTVALSIG.sml"; use "mlsource/MLCompiler/PRETTYSIG.sml"; use "mlsource/MLCompiler/LEXSIG.sml"; use "mlsource/MLCompiler/SymbolsSig.sml"; use "mlsource/MLCompiler/COMPILERBODYSIG.sml"; use "mlsource/MLCompiler/DEBUGSIG.ML"; use "mlsource/MLCompiler/MAKESIG.sml"; use "mlsource/MLCompiler/MAKE_.ML"; use "mlsource/MLCompiler/FOREIGNCALLSIG.sml"; use "mlsource/MLCompiler/BUILTINS.sml"; use "mlsource/MLCompiler/CODETREESIG.ML"; use "mlsource/MLCompiler/STRUCT_VALS.ML"; use "mlsource/MLCompiler/CodeTree/BackendIntermediateCodeSig.sml"; use "mlsource/MLCompiler/CodeTree/BaseCodeTreeSig.sml"; use "mlsource/MLCompiler/CodeTree/CodetreeFunctionsSig.sml"; use "mlsource/MLCompiler/CodeTree/CodegenTreeSig.sml"; use "mlsource/MLCompiler/Codetree/GENCODESIG.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_FUNCTIONS.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_STATIC_LINK_AND_CASES.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_CODEGEN_CONSTANT_FUNCTIONS.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_LAMBDA_LIFT.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_REMOVE_REDUNDANT.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_SIMPLIFIER.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_OPTIMISER.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE.ML"; use "mlsource/MLCompiler/Pretty.sml"; use "mlsource/MLCompiler/CodeTree/CODE_ARRAY.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86CODESIG.sml"; use "mlsource/MLCompiler/CodeTree/X86Code/ICodeSig.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICODEGENERATESIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ALLOCATEREGISTERSSIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICODETRANSFORMSIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86IDENTIFYREFSSIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86GETCONFLICTSETSIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86PUSHREGISTERSIG.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/INTSETSIG.sml"; use "mlsource/MLCompiler/CodeTree/X86Code/IntSet.sml"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICode.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICodeToX86Code.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86AllocateRegisters.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICodeTransform.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICodeIdentifyReferences.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86ICodeGetConflictSets.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86PushRegisters.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86CodetreeToICode.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86OUTPUTCODE.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86OPTIMISE.ML"; use "mlsource/MLCompiler/Debug.ML"; use "mlsource/MLCompiler/CodeTree/X86Code/X86FOREIGNCALL.sml"; use "mlsource/MLCompiler/CodeTree/BackendIntermediateCode.sml"; use "mlsource/MLCompiler/CodeTree/BaseCodeTree.sml"; use "mlsource/MLCompiler/CodeTree/X86Code/ml_bind.ML"; use "mlsource/MLCompiler/CodeTree/GCode.i386.ML"; use "mlsource/MLCompiler/CodeTree/ml_bind.ML"; use "mlsource/MLCompiler/StructVals.ML"; use "mlsource/MLCompiler/LEX_.ML"; use "mlsource/MLCompiler/Symbols.ML"; use "mlsource/MLCompiler/Lex.ML"; use "mlsource/MLCompiler/SymsetSig.sml"; use "mlsource/MLCompiler/DATATYPEREPSIG.sml"; use "mlsource/MLCompiler/VALUEOPSSIG.sml"; use "mlsource/MLCompiler/EXPORTTREESIG.sml"; use "mlsource/MLCompiler/STRUCTURESSIG.sml"; use "mlsource/MLCompiler/COMPILER_BODY.ML"; use "mlsource/MLCompiler/SymSet.ML"; use "mlsource/MLCompiler/TYPETREESIG.sml"; use "mlsource/MLCompiler/COPIERSIG.sml"; use "mlsource/MLCompiler/TYPEIDCODESIG.sml"; use "mlsource/MLCompiler/DATATYPE_REP.ML"; use "mlsource/MLCompiler/PRINTTABLESIG.sml"; use "mlsource/MLCompiler/VALUE_OPS.ML"; use "mlsource/MLCompiler/TYPE_TREE.ML"; use "mlsource/MLCompiler/UTILITIES_.ML"; use "mlsource/MLCompiler/Utilities.ML"; use "mlsource/MLCompiler/PRINT_TABLE.ML"; use "mlsource/MLCompiler/PrintTable.ML"; use "mlsource/MLCompiler/ExportTree.sml"; use "mlsource/MLCompiler/ExportTreeStruct.sml"; use "mlsource/MLCompiler/TypeTree.ML"; use "mlsource/MLCompiler/COPIER.sml"; use "mlsource/MLCompiler/CopierStruct.sml"; use "mlsource/MLCompiler/TYPEIDCODE.sml"; use "mlsource/MLCompiler/TypeIDCodeStruct.sml"; use "mlsource/MLCompiler/DatatypeRep.ML"; use "mlsource/MLCompiler/ValueOps.ML"; use "mlsource/MLCompiler/PARSETREESIG.sml"; use "mlsource/MLCompiler/SIGNATURESSIG.sml"; use "mlsource/MLCompiler/DEBUGGERSIG.sml"; use "mlsource/MLCompiler/STRUCTURES_.ML"; use "mlsource/MLCompiler/DEBUGGER_.sml"; use "mlsource/MLCompiler/Debugger.sml"; use "mlsource/MLCompiler/ParseTree/BaseParseTreeSig.sml"; use "mlsource/MLCompiler/ParseTree/BASE_PARSE_TREE.sml"; use "mlsource/MLCompiler/ParseTree/PrintParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/PRINT_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/ExportParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/EXPORT_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/TypeCheckParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/TYPECHECK_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/MatchCompilerSig.sml"; use "mlsource/MLCompiler/ParseTree/MATCH_COMPILER.sml"; use "mlsource/MLCompiler/ParseTree/CodegenParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/CODEGEN_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/PARSE_TREE.ML"; use "mlsource/MLCompiler/ParseTree/ml_bind.ML"; use "mlsource/MLCompiler/SIGNATURES.sml"; use "mlsource/MLCompiler/SignaturesStruct.sml"; use "mlsource/MLCompiler/Structures.ML"; use "mlsource/MLCompiler/PARSE_DEC.ML"; use "mlsource/MLCompiler/SKIPS_.ML"; use "mlsource/MLCompiler/Skips.ML"; use "mlsource/MLCompiler/PARSE_TYPE.ML"; use "mlsource/MLCompiler/ParseType.ML"; use "mlsource/MLCompiler/ParseDec.ML"; use "mlsource/MLCompiler/CompilerBody.ML"; use "mlsource/MLCompiler/CompilerVersion.sml"; use "mlsource/MLCompiler/Make.ML"; use "mlsource/MLCompiler/INITIALISE_.ML"; use "mlsource/MLCompiler/Initialise.ML"; use "mlsource/MLCompiler/ml_bind.ML"; polyml-5.7.1/basis/0000755000175000017500000000000013204034553013100 5ustar daviddavidpolyml-5.7.1/basis/LargeWord.sml0000644000175000017500000003656613204034553015523 0ustar daviddavid(* Title: Standard Basis Library: Word and LargeWord Structure Copyright David Matthews 1999, 2005, 2012, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This file contains definitions of both LargeWord and Word. SysWord is defined to be LargeWord. The only purpose of LargeWord is so that it can be used, as SysWord, to hold the full machine word values for certain operating-system calls. *) (* This uses the global definition of type "word" made in the compiler. That type has special status as the default for literals of the form 0wn in the absence of any other type information. *) local type largeword = LargeWord.word and shortword = Word.word (* Extract a word value from a character stream. *) (* There's a complication here which is similar to that with 0x for Int.scan. A word value may, optionally, be preceded by 0w or for hex values 0wx, 0wX, 0x or 0X. Since this is optional it is possible for the value after the 0w to be anything, not just a valid number, in which case the result is the 0 and the continuation is w... *) fun scanWord radix getc src = let (* Some of this code duplicates code in Int.scan. It would be better to avoid that if we could. The difficulty is that Int.scan allows the number to begin with a sign and also another 0x for hex values. *) val base: LargeInt.int = case radix of StringCvt.BIN => 2 | StringCvt.OCT => 8 | StringCvt.DEC => 10 | StringCvt.HEX => 16 (* Read the digits, accumulating the result in acc. isOk is true once we have read a valid digit. *) fun read_digits src acc isOk = case getc src of NONE => if isOk then SOME(acc, src) else NONE | SOME(ch, src') => if Char.ord ch >= Char.ord #"0" andalso Char.ord ch < (Char.ord #"0" + LargeInt.toInt base) then read_digits src' (acc*base + LargeInt.fromInt(Char.ord ch - Char.ord #"0")) true else (* Invalid character - either end of number or bad no. *) if isOk then SOME(acc, src) else NONE fun read_hex_digits src acc isOk = case getc src of NONE => if isOk then SOME(acc, src) else NONE | SOME(ch, src') => if Char.ord ch >= Char.ord #"0" andalso Char.ord ch <= Char.ord #"9" then read_hex_digits src' (acc*16 + LargeInt.fromInt(Char.ord ch - Char.ord #"0")) true else if Char.ord ch >= Char.ord #"A" andalso Char.ord ch <= Char.ord #"F" then read_hex_digits src' (acc*16 + LargeInt.fromInt(Char.ord ch - Char.ord #"A" + 10)) true else if Char.ord ch >= Char.ord #"a" andalso Char.ord ch <= Char.ord #"f" then read_hex_digits src' (acc*16 + LargeInt.fromInt(Char.ord ch - Char.ord #"a" + 10)) true else (* Invalid character - either end of number or bad no. *) if isOk then SOME(acc, src) else NONE fun read_number src = case radix of StringCvt.HEX => read_hex_digits src 0 false | _ => (* Binary, octal and decimal *) read_digits src 0 false in case getc src of NONE => NONE | SOME(#"0", src') => let (* May be the start of the number or may be 0w, 0x etc. *) val after0 = case getc src' of NONE => NONE | SOME(ch, src'') => if ch = #"w" then if radix = StringCvt.HEX then (* Is it 0wx, 0wX ? *) ( case getc src'' of NONE => NONE | SOME(ch, src''') => if ch = #"x" orelse ch = #"X" then read_number src''' (* Skip the 0wx *) else read_number src'' (* Skip the 0w *) ) else read_number src'' (* Skip the 0w *) else if (ch = #"x" orelse ch = #"X") andalso radix = StringCvt.HEX then read_number src'' else read_number src (* Include the 0 in the input *) in (* If the string *) case after0 of NONE => (* No valid number after it, return the zero .*) SOME(0, src') | res => res end | SOME(ch, src') => if Char.isSpace ch (* Skip white space. *) then scanWord radix getc src' (* Recurse *) else (* See if it's a valid digit. *) read_number src end (* scanWord *) (* Conversion from arbitrary precision integer may involve extracting the low-order word from a long-integer representation. *) local val getLowOrderWord: LargeInt.int -> LargeWord.word = RunCall.rtsCallFull1 "PolyGetLowOrderAsLargeWord" val isShortInt: LargeInt.int -> bool = RunCall.isShort in fun wordFromLargeInt (i: LargeInt.int): word = if isShortInt i then RunCall.unsafeCast i else Word.fromLargeWord(getLowOrderWord i) and largeWordFromLargeInt (i: LargeInt.int): LargeWord.word = if isShortInt i then Word.toLargeX(RunCall.unsafeCast i) else getLowOrderWord i end (* We have to use the full conversion if int is arbitrary precision. If int is fixed precision this will be optimised away. *) fun wordFromInt(i: int): word = if Bootstrap.intIsArbitraryPrecision then wordFromLargeInt(LargeInt.fromInt i) else RunCall.unsafeCast i (* The maximum word is the largest tagged value. The maximum large-word is the largest value that will fit in a machine word. *) local fun power2' n 0 : LargeInt.int = n | power2' n i = power2' (2*n) (i-1) val power2 = power2' 1 val bitsInWord: int = (RunCall.unsafeCast LibrarySupport.wordSize) * 8 in val wordSize = bitsInWord - 1 (* 31 or 63 bits *) val maxWordP1: LargeInt.int = power2 wordSize (* One more than the maximum word *) val maxWord: LargeInt.int = maxWordP1 - 1 val largeWordSize = bitsInWord val maxLargeWord = power2 largeWordSize - 1 val largeWordTopBit: LargeInt.int = maxWordP1 (* The top bit of a large word *) val maxWordAsWord = wordFromLargeInt maxWord end in structure Word :> WORD where type word = shortword = struct (* Word.word is represented using the short (tagged) integer format. It is, though, unsigned so large word values are represented in the same form as negative integers. *) type word = word val fromInt = wordFromInt and wordSize = wordSize and fromLargeInt = wordFromLargeInt (* Conversion to signed integer is simple. *) val toIntX: word->int = RunCall.unsafeCast and toLargeIntX: word -> LargeInt.int = RunCall.unsafeCast (* Conversion to unsigned integer has to treat values with the sign bit set specially. *) fun toLargeInt x = let val signed = toLargeIntX x in if signed < 0 then maxWordP1 + signed else signed end fun toInt x = LargeInt.toInt(toLargeInt x) fun scan radix getc src = case scanWord radix getc src of NONE => NONE | SOME(res, src') => if res > maxWord then raise General.Overflow else SOME(fromLargeInt res, src') (* TODO: Implement this directly? *) val fromString = StringCvt.scanString (scan StringCvt.HEX) infix >> << ~>> (* We can format the result using the large integer format function. *) fun fmt radix i = LargeInt.fmt radix (toLargeInt i) val toString = fmt StringCvt.HEX fun compare (i, j) = if i < j then General.LESS else if i > j then General.GREATER else General.EQUAL fun min (i, j) = if i < j then i else j and max (i, j) = if i > j then i else j open Word (* Include all the initial definitions. *) fun notb x = xorb(maxWordAsWord, x) end (* Word *) (* LargeWord.word values have one more bit of precision than Word,word values and are always "boxed" i.e. held in a one word piece of memory with the "byte" bit set. *) structure LargeWord:> WORD where type word = largeword = struct open LargeWord (* Add in the built-ins. *) type word = largeword val wordSize = largeWordSize (* As this is LargeWord we don't need to do anything here. *) fun toLargeWord x = x and toLargeWordX x = x and fromLargeWord x = x val toLarge = toLargeWord and toLargeX = toLargeWordX and fromLarge = fromLargeWord val fromLargeInt = largeWordFromLargeInt local val shortToWord: LargeInt.int -> largeword = Word.toLargeWordX o RunCall.unsafeCast val longToInt: largeword -> LargeInt.int = RunCall.unsafeCast o Word.fromLargeWord val zero: largeword = shortToWord 0 infix << orb andb local open Int in val topBitAsLargeWord: largeword = (* The top bit *) shortToWord 1 << Word.fromInt(largeWordSize - 1) end fun topBitClear (x: largeword) : bool = (x andb topBitAsLargeWord) = zero in fun toLargeInt x = let val asInt: LargeInt.int = longToInt x open LargeInt (* <, + and - are all LargeInt ops. *) in (if asInt < 0 then maxWordP1 + asInt else asInt) + (if topBitClear x then 0 else largeWordTopBit) end and toLargeIntX x = let val asInt: LargeInt.int = longToInt x open LargeInt in (if asInt < 0 then maxWordP1 + asInt else asInt) - (if topBitClear x then 0 else largeWordTopBit) end val zero = zero val maxLargeWordAsLargeWord = fromLargeInt maxLargeWord end fun ~ x = zero - x fun notb x = xorb(maxLargeWordAsLargeWord, x) (* If int is fixed precision an int is the same size as a word and will always fit within a large-word value. *) fun fromInt(i: int): word = if Bootstrap.intIsArbitraryPrecision then fromLargeInt(LargeInt.fromInt i) else Word.toLargeWord(Word.fromInt i) and toInt(w: word): int = if Bootstrap.intIsArbitraryPrecision then LargeInt.toInt(toLargeInt w) else Word.toInt(Word.fromLargeWord w) and toIntX(w: word): int = if Bootstrap.intIsArbitraryPrecision then LargeInt.toInt(toLargeIntX w) else Word.toIntX(Word.fromLargeWord w) fun scan radix getc src = case scanWord radix getc src of NONE => NONE | SOME(res, src') => if LargeInt.>(res, maxLargeWord) then raise General.Overflow else SOME(fromLargeInt res, src') val fromString = StringCvt.scanString (scan StringCvt.HEX) fun compare (i, j) = if i < j then General.LESS else if i > j then General.GREATER else General.EQUAL fun min (i, j) = if i < j then i else j and max (i, j) = if i > j then i else j (* We can format the result using the large integer format function. Large unsigned values may be outside the short integer range. *) fun fmt radix i = LargeInt.fmt radix (toLargeInt i) val toString = fmt StringCvt.HEX end; end; local (* Install the pretty printer for Word.word *) fun prettyWord _ _ x = PolyML.PrettyString("0wx" ^ Word.toString x) and prettyLarge _ _ x = PolyML.PrettyString("0wx" ^ LargeWord.toString x) in val () = PolyML.addPrettyPrinter prettyWord val () = PolyML.addPrettyPrinter prettyLarge end; (* Converter to word values. These must be installed outside the structure because they depend on the type identifiers. *) local (* The string may be either 0wnnn or 0wxXXX *) fun getRadix s = if String.size s > 2 andalso String.sub(s, 2) = #"x" then StringCvt.HEX else StringCvt.DEC fun convWord s = let val radix = getRadix s in case StringCvt.scanString (Word.scan radix) s of NONE => raise RunCall.Conversion "Invalid word constant" | SOME res => res end and convLarge s = let val radix = getRadix s in case StringCvt.scanString (LargeWord.scan radix) s of NONE => raise RunCall.Conversion "Invalid word constant" | SOME res => res end in (* Install this as a conversion function for word literals. Unlike other overloaded functions there's no need to ensure that overloaded conversion functions are installed at the top-level. The compiler has type "word" built in and will use this conversion function for literals of the form 0w... in preference to any other (e.g. for Word8.word) if unification does not give an explicit type. However, because LargeWord.word is abstract we have to install the convertor outside the structure. *) val () = RunCall.addOverload convWord "convWord" val () = RunCall.addOverload convLarge "convWord" end; structure SysWord = LargeWord; (* Add the overloaded operators. Do this outside the structure so that we can capture the inline code. We've already done this for word (=Word.word) in the prelude. *) val () = RunCall.addOverload LargeWord.~ "~"; val () = RunCall.addOverload LargeWord.+ "+"; val () = RunCall.addOverload LargeWord.- "-"; val () = RunCall.addOverload LargeWord.* "*"; val () = RunCall.addOverload LargeWord.div "div"; val () = RunCall.addOverload LargeWord.mod "mod"; val () = RunCall.addOverload LargeWord.< "<"; val () = RunCall.addOverload LargeWord.> ">"; val () = RunCall.addOverload LargeWord.<= "<="; val () = RunCall.addOverload LargeWord.>= ">="; polyml-5.7.1/basis/TextIO.sml0000644000175000017500000003726113204034553015002 0ustar daviddavid(* Title: Standard Basis Library: Text IO Copyright David C.J. Matthews 2000, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature TEXT_STREAM_IO = sig include STREAM_IO where type vector = CharVector.vector where type elem = Char.char val inputLine : instream -> (string * instream) option val outputSubstr : outstream * Substring.substring -> unit end; signature TEXT_IO = sig (* include IMPERATIVE_IO *) structure StreamIO : TEXT_STREAM_IO where type reader = TextPrimIO.reader where type writer = TextPrimIO.writer where type pos = TextPrimIO.pos type vector = StreamIO.vector type elem = StreamIO.elem type instream type outstream val input : instream -> vector val input1 : instream -> elem option val inputN : instream * int -> vector val inputAll : instream -> vector val canInput : instream * int -> int option val lookahead : instream -> elem option val closeIn : instream -> unit val endOfStream : instream -> bool val output : outstream * vector -> unit val output1 : outstream * elem -> unit val flushOut : outstream -> unit val closeOut : outstream -> unit val mkInstream : StreamIO.instream -> instream val getInstream : instream -> StreamIO.instream val setInstream : instream * StreamIO.instream -> unit val mkOutstream : StreamIO.outstream -> outstream val getOutstream : outstream -> StreamIO.outstream val setOutstream : outstream * StreamIO.outstream -> unit val getPosOut : outstream -> StreamIO.out_pos val setPosOut : outstream * StreamIO.out_pos -> unit (* End of include IMPERATIVE_IO *) val inputLine : instream -> string option val outputSubstr : outstream * Substring.substring -> unit val openIn : string -> instream val openOut : string -> outstream val openAppend : string -> outstream val openString : string -> instream val stdIn : instream val stdOut : outstream val stdErr : outstream val print : string -> unit val scanStream : ((Char.char, StreamIO.instream) StringCvt.reader -> ('a, StreamIO.instream) StringCvt.reader) -> instream -> 'a option end; structure TextIO :> TEXT_IO = struct open IO type vector = String.string and elem = Char.char exception Interrupt = RunCall.Interrupt (* Called after any exception in the lower level reader or writer to map any exception other than Io into Io. *) fun mapToIo (io as Io _, _, _) = io | mapToIo (Interrupt, _, _) = Interrupt | mapToIo (nonIo, name, caller) = Io { name = name, function = caller, cause = nonIo } (* Functional IO Layer. *) structure TextStreamIO = struct structure BasicTextStreamIO = BasicStreamIO( structure PrimIO = TextPrimIO structure Vector = CharVector structure Array = CharArray structure VectorSlice = CharVectorSlice structure ArraySlice = CharArraySlice val someElem : PrimIO.elem = #" " ); open BasicTextStreamIO (* Input a line. Adds a newline if the file ends without one. *) fun inputLine f = let (* Read a sequence of blocks until we get a newline or EOF. *) fun inputBlocks read f = let (* Read the next block and see how big it is. *) val (blk, f') = input f val length = String.size blk (* See if it contains a newline and if so where. *) fun newlinePos i = if i = length then length+1 else if String.sub(blk, i) = #"\n" then i+1 (* Return characters including newline. *) else newlinePos (i+1) val nlPos = newlinePos 0 in if length = 0 (* EOF *) then ( (* If we have not read anything at all we return NONE otherwise return what we had with a newline added. *) case read of [] => NONE | _ => SOME(String.concat(List.rev("\n"::read)), f) ) else if nlPos > length then inputBlocks (blk::read) f' (* No newline - get another block.. *) else (* The string we read included a newline. *) let (* Reread all up to and including the newline and return the stream which gives us the rest. *) val (b, f') = inputN(f, nlPos) in SOME(String.concat(List.rev(b::read)), f') end end in (* If we are at end-of-stream we return NONE. Since this is a functional stream that means we will always return NONE for a given f (i.e. there's no temporary end-of-stream to be cleared). *) inputBlocks [] f end (* StreamIO treats line buffering on output as block buffering since it has no concept of a line separator. *) fun output(f, v) = case getBufferMode f of LINE_BUF => let val vecLen = CharVector.length v (* Find the last newline character in the string. *) fun lastNewline 0 = 0 | lastNewline i = if CharVector.sub(v, i-1) = #"\n" then i else lastNewline(i-1) val newLinePos = lastNewline vecLen in if newLinePos = 0 then (* No newlines in it. *) BasicTextStreamIO.output(f, v) else (* There's at least one newline. *) ( outputVec(f, CharVectorSlice.slice(v, 0, SOME newLinePos)); flushOut f; outputVec(f, CharVectorSlice.slice(v, newLinePos, NONE)) ) end | _ => BasicTextStreamIO.output(f, v) (* Not line buffering. *) (* This could be defined in terms of output but the underlying output1 function is likely to be more efficient. *) fun output1(f, c) = ( BasicTextStreamIO.output1(f, c); if c = #"\n" andalso getBufferMode f = LINE_BUF then flushOut f else () ) end (* StreamIO. *) (* The imperative IO streams *) structure ImpIO = BasicImperativeIO( structure StreamIO = TextStreamIO structure Vector = CharVector structure Array = CharArray) open ImpIO (* Now define StreamIO as our extended StreamIO *) (* Replace the StreamIO from ImpIO by our version. *) structure StreamIO = struct open TextStreamIO val outputSubstr = outputVec end open Thread.Thread open Thread.Mutex open LibrarySupport.CharArray type fileDescr = OS.IO.iodesc; type address = LibrarySupport.address (* We have to declare doIo separately depending on the types of the arguments. It's possible to get round this but that would result in an extra call to run_call3 for each io call. *) local val doIo: int*int*string -> fileDescr = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in val stdInDesc: fileDescr = RunCall.unsafeCast 0 fun sys_open_in_text name = doIo(3, 0, name) and sys_open_out_text name = doIo(5, 0, name) and sys_open_append_text name = doIo(13, 0, name) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_buffsize (strm: fileDescr): int = doIo(15, strm, 0) end (* Create the primitive IO functions and add the higher layers. *) fun wrapInFileDescr(n, name) = let val textPrimRd = LibraryIOSupport.wrapInFileDescr{fd=n, name=name, initBlkMode=true} val streamIo = StreamIO.mkInstream(textPrimRd, "") in ImpIO.mkInstream streamIo end fun wrapOutFileDescr(n, name, buffering, isAppend) = let val buffSize = sys_get_buffsize n val textPrimWr = LibraryIOSupport.wrapOutFileDescr{fd=n, name=name, appendMode=isAppend, initBlkMode=true, chunkSize=buffSize} (* Construct a stream. *) val streamIo = StreamIO.mkOutstream(textPrimWr, buffering) in mkOutstream streamIo end (* Open a file for output. *) fun openOut s = let val f = sys_open_out_text s handle exn => raise mapToIo(exn, s, "TextIO.openOut") (* Look at the stream to see what kind of buffering to use. *) val k = OS.IO.kind f in wrapOutFileDescr (f, s, if k = OS.IO.Kind.tty then IO.LINE_BUF else IO.BLOCK_BUF, false (* Not append *)) end fun openAppend s = let val f = sys_open_append_text s handle exn => raise mapToIo(exn, s, "TextIO.openAppend") val k = OS.IO.kind f in wrapOutFileDescr (f, s, if k = OS.IO.Kind.tty then IO.LINE_BUF else IO.BLOCK_BUF, true (* setPos will not work. *)) end (* Open a file for input. *) fun openIn s = let val f = sys_open_in_text s handle exn => raise mapToIo(exn, s, "TextIO.openIn") in wrapInFileDescr(f, s) end (* Get the entries for standard input, standard output and standard error. *) val stdIn = wrapInFileDescr(stdInDesc, "stdIn") local (* On startup reset stdIn to the original stream. Among other things this clears any data that may have been in the buffer when we exported. *) fun onStartUp () = let val textPrimRd = LibraryIOSupport.wrapInFileDescr{fd=stdInDesc, name="stdIn", initBlkMode=true} val streamIo = StreamIO.mkInstream(textPrimRd, "") in ImpIO.setInstream(stdIn, streamIo) end in (* Set up an onEntry handler so that this is always installed. *) val () = PolyML.onEntry onStartUp end; (* We may want to consider unbuffered output or even linking stdOut with stdIn so that any unbuffered output is flushed before reading from stdIn. That's the way that stdio works to ensure that prompts are written out. *) (* PROBLEM: The following declaration is evaluated when this structure is created, not at the start of the session. The buffering will be set permanently to the buffering in effect at that point. Two solutions are possible. One is to define special versions of the "write" functions to examine the stream whenever they are called and decide whether to change the buffering. Another is simply to set it to unbuffered. That can be changed, though, which may not be satisfactory. *) (* I've changed this from NO_BUF to LINE_BUF which should improve the performance. An alternative might be to set up an "OnEntry" call which would examine the stream and decide what kind of buffering to use. DCJM 1/9/00. *) val stdOut = let val f: fileDescr = RunCall.unsafeCast 1 in wrapOutFileDescr (f, "stdOut", IO.LINE_BUF (* if System_is_term f then IO.LINE_BUF else IO.BLOCK_BUF *), false) end val stdErr = let val f: fileDescr = RunCall.unsafeCast 2 in wrapOutFileDescr (f, "stdErr", IO.NO_BUF (* Defined to be unbuffered. *), false) end local (* This requires access to the underlying representation in order to be able to lock the stream while reading the line. This ensures that if multiple threads are reading lines from a stream each thread will get a complete line. *) fun inputLine' fStream = let val f = ! fStream in case StreamIO.inputLine f of NONE => let (* It's not clear what should happen here. Assume that this clears any temporary EOF. *) val (_, f') = StreamIO.input f in fStream := f'; NONE end | SOME (s, f') => ( fStream := f'; SOME s ) end in fun inputLine s = ImpIO.protect s inputLine' end fun outputSubstr(f, s) = StreamIO.outputSubstr(getOutstream f, s) fun print s = (output(stdOut, s); flushOut stdOut) (* Open a string as an input stream. It would be possible to define this using the string as the argument to mkInstream and a null reader. This way gives more flexibility since it allows for random access to the string. *) fun openString (s: string) : instream = let val stringLength = String.size s val posN: int ref = ref 0 (* We can read from the string until it is exhausted. *) fun readVec (len: int): vector = let val l = Int.min(len, stringLength - !posN) val v = String.substring(s, !posN, l) in posN := !posN + l; v end (* Closing it simply exhausts the input. *) fun close () : unit = (posN := stringLength) and avail () : int option = SOME(stringLength - ! posN) and readVecNB l = SOME(readVec l) and block () = () and canInput () = true and getPos () = Position.fromInt(!posN) and setPos n = posN := Position.toInt n and endPos () = Position.fromInt stringLength val textPrimRd = TextPrimIO.RD { name = "StringPrimIO", chunkSize = stringLength, (* Most efficient to read the whole string. *) readVec = SOME readVec, readArr = NONE, (* Can be synthesised. *) readVecNB = SOME readVecNB, readArrNB = NONE, (* Can be synthesised. *) block = SOME block, canInput = SOME canInput, avail = avail, getPos = SOME getPos, setPos = SOME setPos, endPos = SOME endPos, verifyPos = SOME getPos, close = close, ioDesc = NONE } val streamIo = StreamIO.mkInstream(textPrimRd, "") in ImpIO.mkInstream streamIo end fun scanStream scanFn strm = let val f = getInstream strm in case (scanFn StreamIO.input1 f) of NONE => NONE | SOME(v, f') => ( setInstream(strm, f'); SOME v ) end end; (* Available unqualified at top-level. *) val print = TextIO.print; polyml-5.7.1/basis/INetSock.sml0000644000175000017500000000702513204034553015300 0ustar daviddavid(* Title: Standard Basis Library: Internet Sockets Author: David Matthews Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature INET_SOCK = sig type inet type 'sock_type sock = (inet, 'sock_type) Socket.sock type 'mode stream_sock = 'mode Socket.stream sock type dgram_sock = Socket.dgram sock type sock_addr = inet Socket.sock_addr val inetAF : Socket.AF.addr_family val toAddr : NetHostDB.in_addr * int -> sock_addr val fromAddr : sock_addr -> NetHostDB.in_addr * int val any : int -> sock_addr structure UDP : sig val socket : unit -> dgram_sock val socket' : int -> dgram_sock end structure TCP : sig val socket : unit -> 'mode stream_sock val socket' : int -> 'mode stream_sock val getNODELAY : 'mode stream_sock -> bool val setNODELAY : 'mode stream_sock * bool -> unit end end; structure INetSock :> INET_SOCK = struct abstype inet = ABSTRACT with end; type 'sock_type sock = (inet, 'sock_type) Socket.sock type 'mode stream_sock = 'mode Socket.stream sock type dgram_sock = Socket.dgram sock type sock_addr = inet Socket.sock_addr val inetAF : Socket.AF.addr_family = case Socket.AF.fromString "INET" of NONE => raise OS.SysErr("Missing address family", NONE) | SOME s => s local val doCall = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun toAddr(iaddr: NetHostDB.in_addr, port: int) : sock_addr = doCall(40, (port, iaddr)) end local val doCall1 = RunCall.rtsCallFull2 "PolyNetworkGeneral" and doCall2 = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun fromAddr (s: sock_addr) : NetHostDB.in_addr * int = if Socket.familyOfAddr s <> inetAF then raise Match else (doCall1(42, s), doCall2(41, s)) end local val doCall = RunCall.rtsCallFull2 "PolyNetworkGeneral" val iAddrAny: NetHostDB.in_addr = doCall(13, ()) in fun any (p: int) : sock_addr = toAddr(iAddrAny, p) end local val doCall1 = RunCall.rtsCallFull2 "PolyNetworkGeneral" val doCall2 = RunCall.rtsCallFull2 "PolyNetworkGeneral" in structure UDP = struct fun socket () = GenericSock.socket(inetAF, Socket.SOCK.dgram) fun socket' p = GenericSock.socket'(inetAF, Socket.SOCK.dgram, p) end structure TCP = struct fun socket () = GenericSock.socket(inetAF, Socket.SOCK.stream) fun socket' p = GenericSock.socket'(inetAF, Socket.SOCK.stream, p) fun getNODELAY(s: 'mode stream_sock): bool = doCall1(16, RunCall.unsafeCast s) fun setNODELAY (s: 'mode stream_sock, b: bool): unit = doCall2(15, (RunCall.unsafeCast s, b)) end end end; polyml-5.7.1/basis/NetServDB.sml0000644000175000017500000000460613204034553015417 0ustar daviddavid(* Title: Standard Basis Library: NetServDB Structures and Signatures Author: David Matthews Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature NET_SERV_DB = sig type entry val name : entry -> string val aliases : entry -> string list val port : entry -> int val protocol : entry -> string val getByName : string * string option -> entry option val getByPort : int * string option -> entry option end; structure NetServDB :> NET_SERV_DB = struct type entry = string * string list * int * string (* The RTS calls return either zero or the address of the entry. *) datatype result = AResult of entry | NoResult val name: entry -> string = #1 val aliases : entry -> string list = #2 val port : entry -> int = #3 val protocol : entry -> string = #4 local val doCall1: string -> result = RunCall.rtsCallFull1 "PolyNetworkGetServByName" and doCall2: string*string -> result = RunCall.rtsCallFull2 "PolyNetworkGetServByNameAndProtocol" in fun getByName(s, NONE) = (case doCall1 s of AResult r => SOME r | NoResult => NONE) | getByName(s, SOME p) = (case doCall2(s, p) of AResult r => SOME r | NoResult => NONE) end local val doCall1: int -> result = RunCall.rtsCallFull1 "PolyNetworkGetServByPort" and doCall2: int*string -> result = RunCall.rtsCallFull2 "PolyNetworkGetServByPortAndProtocol" in fun getByPort(n, NONE) = (case doCall1 n of AResult r => SOME r | NoResult => NONE) | getByPort(n, SOME p) = (case doCall2(n, p) of AResult r => SOME r | NoResult => NONE) end end; polyml-5.7.1/basis/COPYING0000644000175000017500000006346713204034553014153 0ustar daviddavid GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! polyml-5.7.1/basis/InitialBasis.ML0000644000175000017500000003756713204034553015727 0ustar daviddavid(* Copyright (c) 2000-2010, 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) infix 7 * / div mod infix 6 + - ^ infixr 5 :: @ infix 4 = <> > >= < <= infix 3 := o infix 0 before (* Include this for the moment. TODO: Check why Real, at any rate, requires the "redundant" structure binding in order for the built-ins to be properly inlined. *) structure RunCall = struct open RunCall end; (* Types and values from the initial Bool structure. *) datatype bool = datatype Bool.bool val not = Bool.not; (* Types and values from the initial FixedInt structure. *) structure FixedInt = struct open FixedInt (* Inherit built-in functions. *) fun ~ (x: int): int = 0 - x fun abs (i: int): int = if i >= 0 then i else ~ i end; val () = RunCall.addOverload FixedInt.>= ">=" and () = RunCall.addOverload FixedInt.<= "<=" and () = RunCall.addOverload FixedInt.> ">" and () = RunCall.addOverload FixedInt.< "<" and () = RunCall.addOverload FixedInt.+ "+" and () = RunCall.addOverload FixedInt.- "-" and () = RunCall.addOverload FixedInt.* "*" and () = RunCall.addOverload FixedInt.~ "~" and () = RunCall.addOverload FixedInt.abs "abs"; structure LargeInt = struct open LargeInt local val callAdd: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyAddArbitrary" and callSub: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolySubtractArbitrary" and callMult: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyMultiplyArbitrary" (* Comparison does not need to allocate memory so is a fast call. *) val callComp: LargeInt.int * LargeInt.int -> FixedInt.int = RunCall.rtsCallFast2 "PolyCompareArbitrary" exception Overflow = RunCall.Overflow in val op + = fn (i, j) => add(i, j, callAdd) and op - = fn (i, j) => subtract(i, j, callSub) and op * = fn (i, j) => multiply(i, j, callMult) val op < = fn (i, j) => less(i, j, callComp) and op > = fn (i, j) => greater(i, j, callComp) and op <= = fn (i, j) => lessEq(i, j, callComp) and op >= = fn (i, j) => greaterEq(i, j, callComp) (* Negation. Just use 0 - X. *) fun ~ x = 0 - x end (* N.B. div and mod are added on a bit further down. *) end; val () = RunCall.addOverload LargeInt.>= ">=" and () = RunCall.addOverload LargeInt.<= "<=" and () = RunCall.addOverload LargeInt.> ">" and () = RunCall.addOverload LargeInt.< "<" and () = RunCall.addOverload LargeInt.+ "+" and () = RunCall.addOverload LargeInt.- "-" and () = RunCall.addOverload LargeInt.* "*" and () = RunCall.addOverload LargeInt.~ "~"; (*and () = RunCall.addOverload LargeInt.abs "abs"*) (* Now add div and mod. *) local (* There's some duplication. This is also in Int.sml. *) local fun power2' n 0 : LargeInt.int = n | power2' n i = power2' (2*n) (i-1) val power2 = power2' 1 val wordSize : word = RunCall.bytesPerWord val bitsInWord: int = (RunCall.unsafeCast wordSize) * 8 val wordSize = bitsInWord - 1 (* 31 or 63 bits *) in val maxIntP1 = power2(wordSize-1) end in structure FixedInt = struct open FixedInt local val fquot: FixedInt.int * FixedInt.int -> FixedInt.int = quot val frem: FixedInt.int * FixedInt.int -> FixedInt.int = rem val smallestInt = RunCall.unsafeCast(LargeInt.~ maxIntP1) infix 7 quot rem exception Overflow = RunCall.Overflow and Div = RunCall.Div in fun op quot(_, 0) = raise RunCall.Div | op quot(x, y) = if y = ~1 andalso x = smallestInt then raise Overflow else fquot(x,y) (* This should return zero when dividing minInt by ~1. Since we are working with 31/63 bits this won't overflow and will return the correct answer. *) fun op rem(_, 0) = raise Div | op rem(x, y) = frem (x, y) (* mod adjusts the result of rem to give the correcly signed result. *) fun x mod y = let val remainder = x rem y in if remainder = 0 then 0 (* If the remainder was zero the result is zero. *) else if (remainder < 0) = (y < 0) then remainder (* If the signs are the same there's no adjustment. *) else remainder + y (* Have to add in the divisor. *) end (* div adjusts the result to round towards -infinity. *) fun x div y = let val quotient = x quot y (* raises Div or Overflow as appropriate. *) and remainder = x rem y in if remainder = 0 orelse (remainder < 0) = (y < 0) then quotient else quotient-1 end end end; structure LargeInt = struct open LargeInt local val isShort: LargeInt.int -> bool = RunCall.isShort val toShort: LargeInt.int -> FixedInt.int = RunCall.unsafeCast and fromShort: FixedInt.int -> LargeInt.int = RunCall.unsafeCast val callDiv: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyDivideArbitrary" and callRem: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyRemainderArbitrary" (* We have a special rts call for this. It's needed in both LargeInt and IntInf *) val quotRemCall = LargeInt.callQuotRem "PolyQuotRemArbitrary" infix 7 quot rem exception Overflow = RunCall.Overflow val smallestInt = ~ maxIntP1 val zero = 0 in val op quot = fn (_, 0) => raise RunCall.Div | (i: int, j: int) => if isShort i andalso isShort j andalso not (j = ~1 andalso i = smallestInt) then fromShort(FixedInt.quot(toShort i, toShort j)) else callDiv(i, j) (* We don't have to worry about overflow here because we will get the correct result if we divide the smallest int by -1 and because we're actually using 31/63 bits rather than true 32/64 bits we won't get a hardware trap. *) val op rem = fn (_, 0) => raise RunCall.Div | (i, j) => if isShort i andalso isShort j then fromShort(FixedInt.rem(toShort i, toShort j)) else callRem(i, j) fun x mod y = let val r = x rem y in if r = zero orelse (y >= zero) = (r >= zero) then r else r + y end fun x div y = let (* If the signs differ the normal quot operation will give the wrong answer. We have to round the result down by subtracting either y-1 or y+1. This will round down because it will have the opposite sign to x *) (* ... val d = x - (if (y >= 0) = (x >= 0) then 0 else if y > 0 then y-1 else y+1) ... *) val xpos = x >= zero val ypos = y >= zero val d = if xpos = ypos then x else if ypos then (x - (y - 1)) else (x - (y + 1)) in d quot y (* may raise Div for divide-by-zero *) end fun quotRem(i, j) = if isShort i andalso isShort j andalso not (j = ~1 andalso i = smallestInt) then (fromShort(FixedInt.quot(toShort i, toShort j)), fromShort(FixedInt.rem(toShort i, toShort j))) else quotRemCall(i, j) end end; end; val () = RunCall.addOverload FixedInt.div "div" and () = RunCall.addOverload FixedInt.mod "mod" and () = RunCall.addOverload LargeInt.div "div" and () = RunCall.addOverload LargeInt.mod "mod"; structure Word = struct open Word infix 8 << >> ~>> (* The shift operations are not infixed in the global basis. *) fun ~ x = 0w0 - x (* Redefine div and mod to include checks for zero. *) fun op div(_, 0w0) = raise RunCall.Div | op div(x, y) = Word.div(x, y) fun op mod(_, 0w0) = raise RunCall.Div | op mod(x, y) = Word.mod(x, y) local val maxBits = RunCall.bytesPerWord * 0w8 - 0w1 in (* The X86 masks the shift value but ML defines a shift greater than the word length as returning zero except that a negative number with an arithmetic shift returns ~1. The tests will all be optimised away if the shift is a constant. *) val op << = fn (a, b) => if b >= maxBits then 0w0 else a << b val op >> = fn (a, b) => if b >= maxBits then 0w0 else a >> b val op ~>> = fn (a, b) => a ~>> (if b > maxBits then maxBits else b) end val toLarge = toLargeWord and toLargeX = toLargeWordX and fromLarge = fromLargeWord end; val () = RunCall.addOverload Word.>= ">=" and () = RunCall.addOverload Word.<= "<=" and () = RunCall.addOverload Word.> ">" and () = RunCall.addOverload Word.< "<" and () = RunCall.addOverload Word.+ "+" and () = RunCall.addOverload Word.- "-" and () = RunCall.addOverload Word.* "*" and () = RunCall.addOverload Word.~ "~" and () = RunCall.addOverload Word.div "div" and () = RunCall.addOverload Word.mod "mod"; (* N.B. abs is not overloaded on word *) structure LargeWord = struct open LargeWord local infix 8 << >> ~>> (* The shift operations are not infixed in the global basis. *) (* As with Word.word shifts we have to check that the shift does not exceed the word length. N.B. The shift amount is always a Word.word value. *) val maxBits = Word.*(RunCall.bytesPerWord, 0w8) (* One bit more than Word.word. *) val zero = Word.toLargeWord 0w0 in val op << = fn (a, b) => if Word.>=(b, maxBits) then zero else a << b val op >> = fn (a, b) => if Word.>=(b, maxBits) then zero else a >> b val op ~>> = fn (a, b) => a ~>> (if Word.>(b, maxBits) then maxBits else b) end local val zero = Word.toLargeWord 0w0 in fun x div y = if y = zero then raise RunCall.Div else LargeWord.div(x, y) and x mod y = if y = zero then raise RunCall.Div else LargeWord.mod(x, y) end end; (* We seem to need to have these apparently redundant structures to make sure the built-ins are inlined. *) structure Char = struct open Char end; (* We want these overloads in String. *) val () = RunCall.addOverload Char.>= ">=" and () = RunCall.addOverload Char.<= "<=" and () = RunCall.addOverload Char.> ">" and () = RunCall.addOverload Char.< "<"; structure String = struct open String end; (* Overloads for String are added in String.sml *) structure Real = struct open Real end; val () = RunCall.addOverload Real.>= ">=" and () = RunCall.addOverload Real.<= "<=" and () = RunCall.addOverload Real.> ">" and () = RunCall.addOverload Real.< "<" and () = RunCall.addOverload Real.+ "+" and () = RunCall.addOverload Real.- "-" and () = RunCall.addOverload Real.* "*" and () = RunCall.addOverload Real.~ "~" and () = RunCall.addOverload Real.abs "abs" and () = RunCall.addOverload Real./ "/"; structure ForeignMemory = struct open ForeignMemory (* Add wrappers to these functions so that they raise exceptions if they are called. *) val get64 = fn (s, i) => if RunCall.bytesPerWord = 0w4 then raise RunCall.Foreign "64-bit operations not available" else get64(s, i) and set64 = fn (s, i, v) => if RunCall.bytesPerWord = 0w4 then raise RunCall.Foreign "64-bit operations not available" else set64(s, i, v) end; (* This needs to be defined for StringSignatures but must not be defined in that file because that conflicts with building the IntAsIntInf module. *) structure StringCvt = struct type ('a, 'b) reader = 'b -> ('a * 'b) option end; (* We need to use the same identifier for this that we used when compiling the compiler, particularly "make". *) exception Fail = RunCall.Fail (* A few useful functions which are in the top-level environment. Others are added later. *) fun (var: 'a ref) := (v: 'a) : unit = RunCall.storeWord (var, 0w0, v) (* The following version of "o" currently gets optimised better. *) fun (f o g) = fn x => f (g x); (* functional composition *) fun ! (ref x) = x; fun length l = let (* Tail-recursive function. *) fun len [] i = i | len (_::l) i = len l (i+1) in len l 0 end local (* Temporary conversion function for characters. This is replaced in the Char structure. *) fun convChar (s: string) : char = let val convS = Bootstrap.convString s in if true (*String.lengthWordAsWord convS = 0w1*) then RunCall.loadByte(convS, RunCall.bytesPerWord) else raise RunCall.Conversion "Bad character" end in val it = RunCall.addOverload convChar "convChar"; end; (* Print functions. Some of these are replaced by functions in the Basis library and are installed here merely so that we can get useful output if we get a failure while compiling it. *) local open PolyML fun print_bool _ _ (b: bool) = PrettyString(if b then "true" else "false") fun print_string _ _ (s: string) = PrettyString s (* Not escaped at the moment. *) fun print_char _ _ (c: char) = PrettyBlock (0, false, [], [PrettyString "#", PrettyString(RunCall.unsafeCast c)]) fun nil @ y = y (* This is redefined later. *) | (a::b) @ y = a :: (b @ y) fun print_list depth printEl (l: 'a list) = let (* Print the list as [, , etc ]. Replace the rest of the list by ... once the depth reaches zero. *) fun plist [] _ = [] | plist _ 0 = [PrettyString "..."] | plist [h] depth = [printEl (h, depth)] | plist (h::t) depth = printEl (h, depth) :: PrettyString "," :: PrettyBreak (1, 0) :: plist t (depth - 1) in PrettyBlock (1, false, [], (* Wrap this in a begin-end block to keep it together. *) PrettyString "[" :: ((if depth <= 0 then [PrettyString "..."] else plist l depth) @ [PrettyString "]"] ) ) end fun print_int _ _ (i: int) = let fun pr (i: int) = if i < 0 then PrettyString "~" :: pr (~ i) else if i < 10 then [PrettyString(RunCall.unsafeCast(i + RunCall.unsafeCast #"0"))] else pr(i div 10) @ [PrettyString(RunCall.unsafeCast(i mod 10 + 48))] in PrettyBlock(1, false, [], pr i) end in val () = addPrettyPrinter print_bool val () = addPrettyPrinter print_string val () = addPrettyPrinter print_char val () = addPrettyPrinter print_list val () = addPrettyPrinter print_int end; polyml-5.7.1/basis/ASN1.sml0000644000175000017500000002267713204034553014335 0ustar daviddavid(* Title: ASN1 support. Author: David Matthews Copyright David Matthews 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* These functions provide assistance in the encoding and decoding of ASN1 binary encoding. *) signature ASN1 = sig datatype form = Primitive | Constructed datatype tagType = Universal of int * form | Application of int * form | Context of int * form | Private of int * form val asn1Boolean: tagType and asn1Integer: tagType and asn1BitString: tagType and asn1OctetString: tagType (* Parse the tag and length information to extract the first tag/value pair from the input. Returns with the reader pointing at the start of the data. *) val readHeader: (Word8.word, 'a) StringCvt.reader -> ((tagType * int), 'a) StringCvt.reader (* Parse the tag and length information to extract the first tag/value pair from the input. Returns the remainder of the input. *) val decodeItem: Word8VectorSlice.slice -> {tag: tagType, data: Word8VectorSlice.slice, remainder: Word8VectorSlice.slice} option val decodeInt: Word8VectorSlice.slice -> int and decodeString: Word8VectorSlice.slice -> string and decodeBool: Word8VectorSlice.slice -> bool (* Encode a tag/value pair. *) val encodeItem: tagType * Word8Vector.vector list -> Word8Vector.vector list val encodeInt: int -> Word8Vector.vector and encodeString: string -> Word8Vector.vector and encodeBool: bool -> Word8Vector.vector end; structure Asn1: ASN1 = struct datatype form = Primitive | Constructed datatype tagType = Universal of int * form | Application of int * form | Context of int * form | Private of int * form (* A few standard tags *) val asn1Boolean = Universal(1, Primitive) and asn1Integer = Universal(2, Primitive) and asn1BitString = Universal(3, Primitive) (* Could also be constructed *) and asn1OctetString = Universal(4, Primitive) (* Could also be constructed *) open Word8VectorSlice (* Convert the length data. The first byte is either the length itself, if it is less than 128 otherwise it is the number of bytes containing the length. *) fun getLength getNext p = case getNext p of SOME (n, t) => if n < 0wx80 then SOME(Word8.toInt n, t) else let fun getL(0w0, m, l) = SOME(m, l) | getL(n, m, t) = case getNext t of SOME (hd, tl) => getL(n-0w1, m * 256 + Word8.toInt hd, tl) | NONE => NONE val lengthOfLength = Word8.andb(n, 0wx7f) in if lengthOfLength = 0w0 then raise Fail "Indefinite length is not implemented" else getL(lengthOfLength, 0, t) end | NONE => NONE fun readHeader getNext input = case getNext input of SOME (code, t) => let (* The type is encoded in the top two bits of the first byte. *) val tagType: int * form -> tagType = case Word8.andb(code, 0wxc0) of 0wx00 => Universal | 0wx40 => Application | 0wx80 => Context | _ => Private val sc = if Word8.andb(code, 0wx20) = 0w0 then Primitive else Constructed (* The tag is the bottom five bits except that if it is 0x1f the tag is encoded in subsequent bytes. *) val tagRest = case Word8.andb(code, 0w31) of 0w31 => (* This is a long-format tag *) let fun decode (acc, seq) = case getNext seq of SOME(code, seq') => let (* Keep accumulating the tags until we find a byte with the top bit clear. *) val tag' = acc * 128 + Word8.toInt(Word8.andb(code, 0wx7f)) in if Word8.andb(code, 0wx80) = 0w0 then SOME(tag', seq') else decode(tag', seq') end | NONE => NONE in decode(0, t) end | firstTag => SOME(Word8.toInt firstTag, t) in case tagRest of SOME(tag, rest) => ( case getLength getNext rest of SOME(len, tail) => SOME((tagType(tag, sc), len), tail) | NONE => NONE ) | NONE => NONE end | NONE => NONE (* Decode Word8VectorSlice.slice input. *) local fun getNext n = if length n = 0 then NONE else SOME(sub(n, 0), subslice(n, 1, NONE)) in fun decodeItem input = case readHeader getNext input of SOME((tag, len), tail) => SOME{tag = tag, data = Word8VectorSlice.subslice(tail, 0, SOME len), remainder = Word8VectorSlice.subslice(tail, len, NONE) } | NONE => NONE fun decodeInt p = case getNext p of NONE => 0 | SOME(h, tl) => let fun parseRest(n, p) = case getNext p of NONE => n | SOME (hd, tl) => parseRest(n * 256 + Word8.toInt hd, tl) in parseRest(Word8.toIntX h, tl) end end fun decodeString t = Byte.bytesToString(vector t) and decodeBool p = decodeInt p <> 0 fun encodeItem (tag, value) = let open Word8Vector fun encodeTag(tagType, tagValue) = if tagValue < 31 then [Word8.orb(tagType, Word8.fromInt tagValue)] else let (* Set the top bit on all bytes except the last. *) fun addToList(n, []) = [Word8.fromInt n] | addToList(n, t) = Word8.fromInt(128 + n) :: t fun encode(n, t) = if n < 128 then addToList(n, t) else encode(n div 128, addToList(n mod 128, t)) in Word8.orb(tagType, 0w31) :: encode(tagValue, []) end val tagCode = case tag of Universal (t, Primitive) => encodeTag(0wx00, t) | Universal (t, Constructed) => encodeTag(0wx20, t) | Application (t, Primitive) => encodeTag(0wx40, t) | Application (t, Constructed) => encodeTag(0wx60, t) | Context (t, Primitive) => encodeTag(0wx80, t) | Context (t, Constructed) => encodeTag(0wxa0, t) | Private (t, Primitive) => encodeTag(0wxc0, t) | Private (t, Constructed) => encodeTag(0wxe0, t) (* Encode the length the argument. *) val length = List.foldl(fn (a, b) => length a + b) 0 value val lengthCode = if length < 128 then [Word8.fromInt length] else let fun encodeLength (0, t) = t | encodeLength (v, t) = encodeLength(v div 256, Word8.fromInt(v mod 256) :: t) val encodedLength = encodeLength(length, []) in Word8.orb(0wx80, Word8.fromInt(List.length encodedLength)) :: encodedLength end in fromList(tagCode @ lengthCode) :: value end fun encodeInt n = let fun encode (n, t) = let val lo = Word8.fromInt n (* Bottom byte *) val hi = n div 256 in (* If the high byte is 0 or -1 and the sign bit is already correct we've finished. *) if hi = 0 andalso lo < 0w128 orelse hi = ~1 andalso lo >= 0w128 then lo :: t else encode(hi, lo :: t) end in Word8Vector.fromList(encode(n, [])) end val encodeString = Byte.stringToBytes fun encodeBool b = encodeInt(if b then 1 else 0) end; polyml-5.7.1/basis/Time.sml0000644000175000017500000002124513204034553014517 0ustar daviddavid(* Title: Standard Basis Library: Time Signature and structure. Author: David Matthews Copyright David Matthews 2000, 2005, 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature TIME = sig eqtype time exception Time val zeroTime : time val fromReal : LargeReal.real -> time val toReal : time -> LargeReal.real val toSeconds : time -> LargeInt.int val toMilliseconds : time -> LargeInt.int val toMicroseconds : time -> LargeInt.int val toNanoseconds : time -> LargeInt.int val fromSeconds : LargeInt.int -> time val fromMilliseconds : LargeInt.int -> time val fromMicroseconds : LargeInt.int -> time val fromNanoseconds : LargeInt.int -> time val + : time * time -> time val - : time * time -> time val compare : time * time -> General.order val < : time * time -> bool val <= : time * time -> bool val > : time * time -> bool val >= : time * time -> bool val now : unit -> time val fmt : int -> time -> string val toString : time -> string val fromString : string -> time option val scan : (char, 'a) StringCvt.reader -> (time, 'a) StringCvt.reader end; structure Time :> TIME = struct (* Unix and Windows both use 64 bit quantities for times. Windows uses a 64-bit number of 100ns ticks, Unix uses one word of seconds and another of microseconds. To handle both easily we use a single arbitrary precision number for times with the actual resolution returned as an RTS call. The intention is retain as much precision as possible. *) type time = LargeInt.int (* Becomes abstract *) exception Time local val timingGeneralCall = RunCall.rtsCallFull2 "PolyTimingGeneral" fun timingGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(timingGeneralCall(RunCall.unsafeCast(code, arg))) in fun callTiming (code: int) args = timingGeneral (code,args) end (* Get the number of ticks per microsecond and compute the corresponding values for milliseconds and seconds. *) val ticksPerMicrosecond = callTiming 0 0 val ticksPerMillisecond = ticksPerMicrosecond * 1000 val ticksPerSecond = ticksPerMillisecond * 1000 (* Check for very large time values. These cause problems if converted to dates. *) local val Years100000 = ticksPerSecond*60*60*24*365*100000 in fun checkTimeValue t = if t < ~ Years100000 orelse t > Years100000 then raise Time else t end; (* The real representation is as a number of seconds. *) local val realTicks = Real.fromLargeInt ticksPerSecond in fun fromReal (x: real): time = checkTimeValue(Real.toLargeInt IEEEReal.TO_NEAREST (x * realTicks)) and toReal (t: time): real = Real.fromLargeInt t / realTicks end val zeroTime = fromReal 0.0 (* Convert to seconds, etc.*) fun toSeconds x = x div ticksPerSecond and toMilliseconds x = x div ticksPerMillisecond and toMicroseconds x = x div ticksPerMicrosecond and toNanoseconds x = x * 1000 div ticksPerMicrosecond (* Convert from the integer representations. *) fun fromSeconds i = checkTimeValue(i * ticksPerSecond) and fromMilliseconds i = checkTimeValue(i * ticksPerMillisecond) and fromMicroseconds i = checkTimeValue(i * ticksPerMicrosecond) and fromNanoseconds i = checkTimeValue(i * ticksPerMicrosecond div 1000) (* Format as a fixed precision number. if n < 0 treat as n = 0. *) fun fmt n r = Real.fmt (StringCvt.FIX(SOME(Int.max(n, 0)))) (toReal r) val toString = fmt 3 (* The scanned string is a subset of the format of a real number. It does not have an exponent. At present we convert it as a real number but it would probably be better to treat it as an integer. *) fun scan getc src = let (* Return a list of digits. *) fun getdigits inp src = case getc src of NONE => (List.rev inp, src) | SOME(ch, src') => if ch >= #"0" andalso ch <= #"9" then getdigits ((Char.ord ch - Char.ord #"0") :: inp) src' else (List.rev inp, src) fun read_number sign src = case getc src of NONE => NONE | SOME(ch, _) => if not (ch >= #"0" andalso ch <= #"9" orelse ch = #".") then NONE (* Bad "*) else (* Digits or decimal. *) let (* Get the digits before the decimal point (if any) *) val (intPart, src'') = getdigits [] src (* Get the digits after the decimal point (if any). If there is a decimal point we swallow the decimal only if there is at least one digit after it. *) val (decPart, srcAfterMant) = case getc src'' of SOME (#".", src''') => ( (* Check that the next character is a digit. *) case getc src''' of NONE => ([], src'') | SOME(ch, _) => if ch >= #"0" andalso ch <= #"9" then getdigits [] src''' else ([], src'') ) | _ => ([], src'') in case (intPart, decPart) of ([], []) => NONE (* Must have a digit either before or after the dp. *) | _ => let (* Get exactly 9 digits after the decimal point. *) val decs = intPart @ (List.take(decPart @ [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], 9)); (* It's now in nanoseconds. *) val toInt = List.foldl (fn (i, j) => LargeInt.fromInt i + j*10) (0: time) decs in SOME(fromNanoseconds(if sign then ~toInt else toInt), srcAfterMant) end end in case getc src of NONE => NONE | SOME(ch, src') => if Char.isSpace ch (* Skip white space. *) then scan getc src' (* Recurse *) else if ch = #"+" (* Remove the + sign *) then read_number false src' else if ch = #"-" orelse ch = #"~" then read_number true src' else (* See if it's a valid digit or decimal point. *) read_number false src end val fromString = StringCvt.scanString scan (* Use the integer operations for these. *) val op < : (time * time) -> bool = LargeInt.< val op <= : (time * time) -> bool = LargeInt.<= val op > : (time * time) -> bool = LargeInt.> val op >= : (time * time) -> bool = LargeInt.>=; val compare = LargeInt.compare val op + : (time * time) -> time = LargeInt.+ val op - : (time * time) -> time = LargeInt.- fun now () = callTiming 1 0 handle RunCall.SysErr _ => raise Time end; local (* Install the pretty printer for Time.time. This has to be done outside the structure because of the opaque matching. *) fun pretty _ _ x = PolyML.PrettyString(Time.toString x) in val () = PolyML.addPrettyPrinter pretty (* Add overloads for +, -, <= etc *) (* This is actually non-standard. The basis library documentation does not include Time.time among the types for which these operators are overloaded. *) val () = RunCall.addOverload Time.+ "+"; val () = RunCall.addOverload Time.- "-"; val () = RunCall.addOverload Time.< "<"; val () = RunCall.addOverload Time.> ">"; val () = RunCall.addOverload Time.<= "<="; val () = RunCall.addOverload Time.>= ">="; end polyml-5.7.1/basis/Int63.sml0000644000175000017500000000146313204034553014524 0ustar daviddavid(* Title: Standard Basis Library: Int63 structure Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Int63 = FixedInt; polyml-5.7.1/basis/Weak.sml0000644000175000017500000000477413204034553014520 0ustar daviddavid(* Title: Weak references Author: David Matthews Copyright David Matthews 2008, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* A weak reference or array contains option values. The SOME variant of the option must contain a reference. This restriction is imposed because they require pointer equality. A weak reference or array behaves just like a normal ref or array with one difference. The garbage collector may set a weak ref or the field of weak array to NONE if it currently contains SOME r but r is not reachable other than through weak references. The one proviso is that if r is contained in the executable it is always reachable. *) signature WEAK = sig val weak: 'a ref option -> 'a ref option ref val weakArray: int * 'a ref option -> 'a ref option array val weakLock: Thread.Mutex.mutex and weakSignal: Thread.ConditionVar.conditionVar val touch : 'a ref -> unit end; structure Weak: WEAK = struct fun weak (v: 'a ref option): 'a ref option ref = RunCall.allocateWordMemory(0w1, 0wx60, v) fun weakArray(n: int, v: 'a ref option): 'a ref option array = let val () = if n < 0 orelse n >= Array.maxLen then raise Size else () val arr = RunCall.allocateWordMemory(Word.fromInt n, 0wx60, v) in arr end val weakLock = Thread.Mutex.mutex() and weakSignal = Thread.ConditionVar.conditionVar() (* touch is considered by the compiler as an access to the ref but doesn't actually do anything with it. The idea is that it ensures that when a ref is used as a token that this will access the ref and avoid the weak reference becoming set to NONE. It's primarily there for long-term security in the event that the compiler is sufficiently clever to work out that something is no longer referenced. *) fun touch v = v := !v end; polyml-5.7.1/basis/TopLevelPolyML.sml0000644000175000017500000027420413204034553016455 0ustar daviddavid(* Title: Root function for the PolyML structure Author: David Matthews Copyright David Matthews 2009, 2015-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This contains the code for the IDE protocol as well as the normal Poly/ML top-level loop. *) local val parseTree = ref ("", []) (* Parsetree ID and parsetrees as a list. *) fun runIDEProtocol () = let (* Save the last parsetree here. *) val lastParsetree = ref (case parseTree of ref(_, hd::_) => SOME hd | _ => NONE) val parseLock = Thread.Mutex.mutex() (* Access the parse tree and other information with the lock held. *) fun withLock f = let open Thread.Thread Thread.Mutex val originalState = getAttributes() val () = setAttributes[InterruptState InterruptDefer] val () = lock parseLock val result = f () val () = unlock parseLock val () = setAttributes originalState in result end type basicLoc = (* Locations in request packets. *) { startOffset: FixedInt.int, endOffset: FixedInt.int } type compileError = { hardError: bool, location: PolyML.location, message: PolyML.pretty } datatype request = (* Requests sent by the IDE to Poly/ML. *) PropertyRequest (* O *) of { requestId: string, parseTreeId: string, location: basicLoc } | MoveRequest (* M *) of { requestId: string, parseTreeId: string, location: basicLoc, direction: direction } | TypeRequest (* T *) of { requestId: string, parseTreeId: string, location: basicLoc } | DecRequest (* I *) of { requestId: string, parseTreeId: string, location: basicLoc, decType: dectype } | RefRequest (* V *) of { requestId: string, parseTreeId: string, location: basicLoc } | CompileRequest (* R *) of { requestId: string, fileName: string, startPosition: FixedInt.int, preludeCode: string, sourceCode: string } | KillRequest (* K *) of { requestId: string } | UnknownRequest (* Provided for upwards compatibility. *) of { request: int, requestId: string} and direction = DirUp | DirLeft | DirRight | DirDown and dectype = DecLocal | DecOpen | DecParent and response = (* Replies sent from Poly/ML to the IDE. *) PropertyResponse (* O *) of { requestId: string, parseTreeId: string, location: basicLoc, commands: string list } | MoveResponse (* M *) of { requestId: string, parseTreeId: string, location: basicLoc } | TypeResponse (* T *) of { requestId: string, parseTreeId: string, location: basicLoc, typeRes: PolyML.pretty option } | DecResponse (* I *) of { requestId: string, parseTreeId: string, location: basicLoc, decLocation: PolyML.location option } | RefResponse (* V *) of { requestId: string, parseTreeId: string, location: basicLoc, references: basicLoc list } | CompilerResponse (* R *) of { requestId: string, parseTreeId: string, finalOffset: FixedInt.int, result: compileResult } | UnknownResponse (* Provided for upwards compatibility. *) of { request: int, requestId: string } and compileResult = Succeeded of compileError list | RuntimeException of PolyML.pretty * compileError list | PreludeFail of string | CompileFail of compileError list | CompileCancelled of compileError list val outputLock = Thread.Mutex.mutex() val (readRequest, sendStartedMessage, sendResponse) = case OS.Process.getEnv "POLYIDESOCKET" of NONE => (* Version 1 protocol - backwards compatibility - use stdIn/stdOut *) let (* Separate out the output stream. We need to interlock access to stdOut to avoid user code outputing within a packet. *) open TextIO TextIO.StreamIO val outStream = getOutstream stdOut val (writer, buffMode) = getWriter outStream val TextPrimIO.WR { name, chunkSize, writeVec, writeArr, block, canOutput, ioDesc, ... } = writer (* Create a version of the stream that locks before actually sending output. *) val lockedWriteVec = case writeVec of NONE => NONE | SOME writeVec => SOME(fn a => ThreadLib.protect outputLock writeVec a) val lockedWriteArray = case writeArr of NONE => NONE | SOME writeArr => SOME(fn a => ThreadLib.protect outputLock writeArr a) val lockedWriter = TextPrimIO.WR { name = name, chunkSize = chunkSize, writeVec = lockedWriteVec, writeArr = lockedWriteArray, writeVecNB = NONE, writeArrNB = NONE, block = block, canOutput = canOutput, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => raise Fail "stdOut must not be closed", ioDesc = ioDesc } (* Use this locked version for normal stdOut. *) val () = setOutstream(stdOut, StreamIO.mkOutstream(TextPrimIO.augmentWriter lockedWriter, buffMode)) (* Create an unlocked version for use within the IDE code. When writing to this stream the IDE code will first get a lock, then output the whole packet before releasing the lock. Because mutexes are not recursive we can't use the locking version. *) val unLockedWriter = TextPrimIO.WR { name = name, chunkSize = chunkSize, writeVec = writeVec, writeArr = writeArr, writeVecNB = NONE, writeArrNB = NONE, block = block, canOutput = canOutput, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => raise Fail "stdOut must not be closed", ioDesc = ioDesc } val inStream = stdIn val outStream = StreamIO.mkOutstream(TextPrimIO.augmentWriter unLockedWriter, buffMode) fun protocolError error = let open OS.Process in TextIO.print ("Protocol error: " ^ error) handle _ => (); exit failure; raise Fail "bad" (* Never called but sets return type as 'a *) end (* Reads a request. Calls OS.Process.exit at end-of-file or on a protocol error. *) fun readRequest (): request = let open TextIO (* Returns the string as far as the next ESC and the terminator. *) fun readToEscape (soFar: string, terminator) : string = case input1 inStream of SOME #"\u001b" => ( case input1 inStream of NONE => protocolError "End of file" | SOME ch => if ch = terminator then soFar else if ch = #"\u001b" (* Escaped ESC. *) then readToEscape(soFar ^ str #"\u001b", terminator) else protocolError(str ch ^ " not " ^ str terminator) ) | SOME ch => readToEscape(soFar ^ str ch, terminator) | NONE => protocolError "End of file" (* Parse an integer. Returns zero if it isn't a valid int. *) fun getInt termCh : FixedInt.int = case FixedInt.fromString (readToEscape("", termCh)) of NONE => 0 | SOME i => i val () = case input1 inStream of NONE => OS.Process.exit OS.Process.success (* Close down. *) | SOME #"\u001b" => () (* Escape- start of packet. *) | SOME ch => protocolError(str ch ^ " not ESCAPE at start of packet") val startCh = (* Request code *) case input1 inStream of NONE => protocolError "End of file" | SOME ch => ch in case startCh of #"R" => let (* Compile request. *) (* Begin a new compilation. *) val requestId = readToEscape("", #",") val fileName = readToEscape("", #",") val startPosition = getInt #"," (* The next two are the lengths *) val preludeLength = getInt #"," val sourceLength = getInt #"," (* *) val preludeCode = TextIO.inputN(inStream, FixedInt.toInt preludeLength) val _ = readToEscape("", #",") (* Should be empty - check? *) val sourceText = TextIO.inputN(inStream, FixedInt.toInt sourceLength) val _ = readToEscape("", #"r") (* Should be empty - check? *) in CompileRequest { requestId = requestId, fileName = fileName, startPosition = startPosition, preludeCode = preludeCode, sourceCode = sourceText } end (* Navigation functions. *) | #"M" => let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"," val requestType = case readToEscape("", #"m") of "N" => DirRight | "P" => DirLeft | "U" => DirUp | _(*"C"*) => DirDown in MoveRequest{ requestId = requestId, parseTreeId = parseTreeId, direction= requestType, location = { startOffset = startOffset, endOffset = endOffset } } end (* Print the type of the selected node. *) | #"T" => let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"t" in TypeRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } end (* Print the declaration location of the selected node. *) | #"I" => let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"," val decType = case readToEscape("", #"i") of "J" => DecOpen | "S" => DecParent | _ (*"I"*) => DecLocal in DecRequest{ requestId = requestId, parseTreeId = parseTreeId, decType = decType, location = { startOffset = startOffset, endOffset = endOffset } } end (* Return the local references to the given identifier. *) | #"V" => let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"v" in RefRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } end | #"O" => (* Print list of valid commands. *) let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"o" in PropertyRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } end | #"K" => (* Cancel request. *) KillRequest { requestId = readToEscape ("", #"k") } | ch => (* Something else. Reply with empty response. *) let (* Unlike the other cases we don't know what may follow ESCAPE. *) val terminator = Char.toLower ch fun skipToTerminator () = case input1 inStream of SOME #"\u001b" => ( case input1 inStream of NONE => protocolError "End of file" | SOME ch => if ch = terminator then () (* Found the end. *) else (* Some internal escape code. *) skipToTerminator() ) | SOME _ => skipToTerminator () | NONE => protocolError "End of file" in skipToTerminator (); UnknownRequest { request = Char.ord ch, requestId = "" } end end (* readRequest *) fun sendStartedMessage () = let fun print s = TextIO.StreamIO.output(outStream, s) fun printEsc ch = print (String.concat["\u001b", String.str ch]) fun sendResponse () = ( (* send the version number of the protocol *) printEsc #"H"; print "1.0.0"; printEsc #"h"; TextIO.StreamIO.flushOut outStream ) in ThreadLib.protect outputLock sendResponse () end (* Send a reply packet. *) fun sendResponse response = let fun print s = TextIO.StreamIO.output(outStream, s) fun printEsc ch = print (String.concat["\u001b", String.str ch]) fun printLocation {startOffset, endOffset } = print (String.concat[FixedInt.toString startOffset, "\u001b,", FixedInt.toString endOffset]) and printFullLocation { file, startLine, startPosition, endPosition, ...} = ( print file; (* TODO double any escapes. *) printEsc #","; print (FixedInt.toString startLine); printEsc #","; print (FixedInt.toString startPosition); printEsc #","; print (FixedInt.toString endPosition) ) fun makeResponse (PropertyResponse { requestId, parseTreeId, location, commands }) = let fun printCommand comm = (printEsc #","; print comm) in printEsc #"O"; print requestId; printEsc #","; print parseTreeId; printEsc #","; printLocation location; List.app printCommand commands; printEsc #"o" end | makeResponse (MoveResponse { requestId, parseTreeId, location }) = ( printEsc #"M"; print requestId; printEsc #","; print parseTreeId; printEsc #","; printLocation location; printEsc #"m" ) | makeResponse (TypeResponse { requestId, parseTreeId, location, typeRes }) = let fun prettyAsString message = let val result = ref [] fun doPrint s = result := s :: ! result val () = PolyML.prettyPrint(doPrint, !PolyML.Compiler.lineLength) message in String.concat(List.rev(! result)) end in printEsc #"T"; print requestId; printEsc #","; print parseTreeId; printEsc #","; printLocation location; case typeRes of NONE => () | SOME typeRes => ( printEsc #","; print(prettyAsString typeRes) ); printEsc #"t" end | makeResponse (DecResponse { requestId, parseTreeId, location, decLocation }) = ( printEsc #"I"; print requestId; printEsc #","; print parseTreeId; printEsc #","; printLocation location; case decLocation of SOME location => (printEsc #","; printFullLocation location) | NONE => (); printEsc #"i" ) | makeResponse (RefResponse { requestId, parseTreeId, location, references }) = ( printEsc #"V"; print requestId; printEsc #","; print parseTreeId; printEsc #","; printLocation location; List.app (fn loc => (printEsc #","; printLocation loc)) references; printEsc #"v" ) | makeResponse (CompilerResponse { requestId, parseTreeId, finalOffset, result }) = let (* Pretty print a message and return the output string. *) fun prettyMarkupAsString message = let val result = ref [] fun doPrint s = result := s :: ! result val () = PolyML.prettyPrintWithIDEMarkup(doPrint, !PolyML.Compiler.lineLength) message in String.concat(List.rev(! result)) end fun printError { hardError, location, message } = ( printEsc #"E"; if hardError then print "E" else print "W"; printEsc #","; printFullLocation location; printEsc #";"; (* N.B. Semicolon here, not comma. *) print (prettyMarkupAsString message); (* May include markup *) printEsc #"e" ) fun printOffset() = (printEsc #","; print (FixedInt.toString finalOffset)) fun printErrors errors = (List.app printError errors) in printEsc #"R"; print requestId; printEsc #","; print parseTreeId; printEsc #","; case result of Succeeded errors => (print "S"; printOffset(); printEsc #";"; printErrors errors) | RuntimeException (s, errors) => ( print "X"; printOffset(); printEsc #";"; printEsc #"X"; print(prettyMarkupAsString s); (* May include markup *) printEsc #"x"; printErrors errors ) | PreludeFail s => ( print "L"; printOffset(); printEsc #";"; print s (* May include markup *) ) | CompileFail errors => ( print "F"; printOffset(); printEsc #";"; printErrors errors ) | CompileCancelled errors => ( print "C"; printOffset(); printEsc #";"; printErrors errors ); printEsc #"r" end | makeResponse (UnknownResponse { request, ... }) = let val startCh = Char.chr request in (* Response to unknown command - return empty result. *) ( printEsc startCh; printEsc (Char.toLower startCh)) end fun sendResponse () = ( makeResponse response handle _ => protocolError "Exception"; TextIO.StreamIO.flushOut outStream ) in (* Sending the response packet must be atomic with respect to any other output to stdOut. *) ThreadLib.protect outputLock sendResponse () end (* sendResponse *) in (readRequest, sendStartedMessage, sendResponse) end | SOME portNo => (* Version 2 protocol - uses ASN1 binary over a socket.*) let val prefBuffSize = 4096 (* Get this from somewhere? *) val socket = INetSock.TCP.socket(): Socket.active INetSock.stream_sock (* We don't have a stream to produce error messages so simply fail if we get an exception here. *) val localhost = NetHostDB.addr (valOf(NetHostDB.getByName "localhost")) val port = valOf(Int.fromString portNo) val () = Socket.connect(socket, INetSock.toAddr(localhost, port)) (* Construct the readers and writers. *) fun sendASN1(v: Word8Vector.vector list) = let open Word8VectorSlice (* Write the whole data, in chunks if necessary. *) fun sendSlice slice = if length slice = 0 then () else sendSlice(subslice(slice, Socket.sendVec(socket, slice), NONE)) in sendSlice(Word8VectorSlice.full(Word8Vector.concat v)) end fun readVecFromSocket(n: int): Word8Vector.vector = Socket.recvVec(socket, n) open TextIO Asn1 local (* Interlocked writer for TextIO.stdOut *) (* Whenever we write plain text we package it as an ASN1 packet. *) fun writeVecToSocket(v: CharVectorSlice.slice) = ( sendASN1(encodeItem(Application(1, Primitive), [encodeString(CharVectorSlice.vector v)])); CharVectorSlice.length v (* It's written it all. *) ) val lockedWriteVec = ThreadLib.protect outputLock writeVecToSocket val lockedWriter = TextPrimIO.WR { name = "TextIO.stdOut", chunkSize = prefBuffSize, writeVec = SOME lockedWriteVec, writeArr = NONE, writeVecNB = NONE, writeArrNB = NONE, block = NONE, canOutput = NONE, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => raise Fail "stdOut must not be closed", ioDesc = SOME(Socket.ioDesc socket) } in (* Use this locked version for normal stdOut. *) val () = setOutstream(stdOut, StreamIO.mkOutstream(TextPrimIO.augmentWriter lockedWriter, IO.LINE_BUF)) end local (* Create a functional binary stream *) val reader = BinPrimIO.RD { name = "socket", chunkSize = prefBuffSize, readVec = SOME readVecFromSocket, readArr = NONE, readVecNB = NONE, readArrNB = NONE, block = NONE, canInput = NONE, avail = fn _ => NONE, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn _ => (), ioDesc = SOME(Socket.ioDesc socket) } val binStream = BinIO.StreamIO.mkInstream(BinPrimIO.augmentReader reader, Word8Vector.fromList []) in val inStream = ref binStream end fun protocolError error = let open OS.Process in TextIO.print ("Protocol error: " ^ error) handle _ => (); exit failure end (* Reads a request. Calls OS.Process.exit at end-of-file or on a protocol error. *) fun readRequest (): request = let open Asn1 (* Read the ASN1 header to get the tag and then read the data. Position the stream ready to read the next request. *) val (requestTag, data) = case readHeader BinIO.StreamIO.input1 (!inStream) of NONE => (* If we had EOF here it's probably because we've closed. *) OS.Process.exit OS.Process.success (* Close down. *) | SOME((tag, length), afterHdr) => let val (vector, afterBlock) = BinIO.StreamIO.inputN(afterHdr, length) in if Word8Vector.length vector = length then () else protocolError "Stream closed"; inStream := afterBlock; (tag, vector) end fun splitSequence v = case decodeItem v of SOME{tag, data, remainder} => (tag, data) :: splitSequence remainder | NONE => [] (* See if an item is present and return it if it is. *) fun findData tag list = Option.map #2 (List.find (fn (t, _) => t = tag) list) fun findString tag list = Option.map decodeString (findData tag list) and findInt tag list = Option.map (FixedInt.fromInt o decodeInt) (findData tag list) in case requestTag of Application(3, _) => (* Compilation request. *) let val tdList = splitSequence(Word8VectorSlice.full data) (* Request id *) val reqId = findString (Application(1, Primitive)) tdList (* File name - optional, default "" *) val fileName = getOpt(findString (Context(1, Primitive)) tdList, "") (* Start position - optional, default 0 *) val startPosition = getOpt(findInt (Context(2, Primitive)) tdList, 0) (* Prelude code - optional, default "" *) val preludeCode = getOpt(findString (Context(3, Primitive)) tdList, "") (* Source code *) val source = findString (Context(4, Primitive)) tdList in case (reqId, source) of (SOME requestId, SOME sourceText) => CompileRequest { requestId = requestId, fileName = fileName, startPosition = startPosition, preludeCode = preludeCode, sourceCode = sourceText } | (SOME requestId, _) => UnknownRequest { request = 3, requestId = requestId } | _ => UnknownRequest { request = 3, requestId = "" } (* Malformed *) end | Application(4, _) => (* Return the type of the selected node. *) let val tdList = splitSequence(Word8VectorSlice.full data) (* Request id *) val reqId = findString (Application(1, Primitive)) tdList (* Parse id *) val parseId = findString (Application(2, Primitive)) tdList (* Start offset *) val startOff = findInt (Context(1, Primitive)) tdList (* End offset *) val endOff = findInt (Context(2, Primitive)) tdList in case (reqId, parseId, startOff, endOff) of (SOME requestId, SOME parseTreeId, SOME startOffset, SOME endOffset) => TypeRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } | (SOME requestId, _, _, _) => UnknownRequest { request = 4, requestId = requestId } | _ => UnknownRequest { request = 4, requestId = "" } (* Malformed *) end | Application(5, _) => (* Move request. *) let val tdList = splitSequence(Word8VectorSlice.full data) (* Request id *) val reqId = findString (Application(1, Primitive)) tdList (* Parse id *) val parseId = findString (Application(2, Primitive)) tdList (* Start offset *) val startOff = findInt (Context(1, Primitive)) tdList (* End offset *) val endOff = findInt (Context(2, Primitive)) tdList (* Move direction *) val dir = findInt (Context(3, Primitive)) tdList in case (reqId, parseId, startOff, endOff, dir) of (SOME requestId, SOME parseTreeId, SOME startOffset, SOME endOffset, SOME dir) => let val dirn = case dir of 1 => DirUp | 2 => DirLeft | 3 => DirRight | _ (*4*) => DirDown in MoveRequest{ requestId = requestId, parseTreeId = parseTreeId, direction = dirn, location = { startOffset = startOffset, endOffset = endOffset } } end | (SOME requestId, _, _, _, _) => UnknownRequest { request = 5, requestId = requestId } | _ => UnknownRequest { request = 5, requestId = "" } (* Malformed *) end | Application(6, _) => (* Declaration location for variables. *) let val tdList = splitSequence(Word8VectorSlice.full data) (* Request id *) val reqId = findString (Application(1, Primitive)) tdList (* Parse id *) val parseId = findString (Application(2, Primitive)) tdList (* Start offset *) val startOff = findInt (Context(1, Primitive)) tdList (* End offset *) val endOff = findInt (Context(2, Primitive)) tdList (* Dec type *) val dt = findInt (Context(3, Primitive)) tdList in case (reqId, parseId, startOff, endOff, dt) of (SOME requestId, SOME parseTreeId, SOME startOffset, SOME endOffset, SOME dect) => let val decType = case dect of 2 => DecOpen | 3 => DecParent | _ (*1*) => DecLocal in DecRequest{ requestId = requestId, parseTreeId = parseTreeId, decType = decType, location = { startOffset = startOffset, endOffset = endOffset } } end | (SOME requestId, _, _, _, _) => UnknownRequest { request = 6, requestId = requestId } | _ => UnknownRequest { request = 6, requestId = "" } (* Malformed *) end | Application(7, _) => (* List the references to a variable. *) let val tdList = splitSequence(Word8VectorSlice.full data) (* Request id *) val reqId = findString (Application(1, Primitive)) tdList (* Parse id *) val parseId = findString (Application(2, Primitive)) tdList (* Start offset *) val startOff = findInt (Context(1, Primitive)) tdList (* End offset *) val endOff = findInt (Context(2, Primitive)) tdList in case (reqId, parseId, startOff, endOff) of (SOME requestId, SOME parseTreeId, SOME startOffset, SOME endOffset) => RefRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } | (SOME requestId, _, _, _) => UnknownRequest { request = 7, requestId = requestId } | _ => UnknownRequest { request = 7, requestId = "" } (* Malformed *) end | Universal(tagNo, _) => UnknownRequest { request = tagNo, requestId = "" } | Application(tagNo, _) => UnknownRequest { request = tagNo, requestId = "" } | Context(tagNo, _) => UnknownRequest { request = tagNo, requestId = "" } | Private(tagNo, _) => UnknownRequest { request = tagNo, requestId = "" } (*case startCh of | #"O" => (* Print list of valid commands. *) let val requestId = readToEscape("", #",") val parseTreeId = readToEscape("", #",") val startOffset = getInt #"," val endOffset = getInt #"o" in PropertyRequest{ requestId = requestId, parseTreeId = parseTreeId, location = { startOffset = startOffset, endOffset = endOffset } } end | #"K" => (* Cancel request. *) KillRequest { requestId = readToEscape ("", #"k") } *) end (* readRequest *) fun sendStartedMessage () = let fun sendResponse () = sendASN1(encodeItem(Application(2, Primitive), [encodeString "1.0.0"])) in ThreadLib.protect outputLock sendResponse () end (* Send a reply packet. *) fun sendResponse response = let fun encodeFullLocation { file, startLine, startPosition, endPosition, ...} = let val encFile = if file = "" then [] else encodeItem(Context(1, Primitive), [encodeString file]) val encLine = if startLine = 0 then [] else encodeItem(Context(2, Primitive), [encodeInt(FixedInt.toInt startLine)]) val encStart = if startPosition = 0 then [] else encodeItem(Context(3, Primitive), [encodeInt(FixedInt.toInt startPosition)]) val encEnd = if endPosition = 0 then [] else encodeItem(Context(4, Primitive), [encodeInt(FixedInt.toInt endPosition)]) in encFile @ encLine @ encStart @ encEnd end and encodeLocation {startOffset, endOffset } = encodeItem(Context(3, Primitive), [encodeInt(FixedInt.toInt startOffset)]) @ encodeItem(Context(4, Primitive), [encodeInt(FixedInt.toInt endOffset)]) and encodeRequestId requestId = encodeItem(Application(20, Primitive), [encodeString requestId]) and encodeParseId parseId = encodeItem(Application(21, Primitive), [encodeString parseId]) fun mapEnc _ [] = [] | mapEnc f (hd :: tl) = f hd @ mapEnc f tl (* Turn a pretty-print structure into text, stripping out mark-up. *) (* TODO: We could return the "pretty" structure and have the IDE format it. *) fun prettyAsString message = let val result = ref [] fun doPrint s = result := s :: ! result val () = PolyML.prettyPrint(doPrint, 120(*!PolyML.Compiler.lineLength*)) message in String.concat(List.rev(! result)) end fun makeResponse (CompilerResponse { requestId, parseTreeId, finalOffset, result }) = let fun encodeError { hardError, location, message } = encodeItem(Context(4, Constructed), encodeItem(Context(1, Primitive), [encodeBool hardError]) @ encodeItem(Context(3, Constructed), encodeFullLocation location) @ encodeItem(Context(2, Primitive), [encodeString(prettyAsString message)]) ) val (resultCode, resultData) = case result of Succeeded errors => (0, mapEnc encodeError errors) | RuntimeException (s, errors) => (1, encodeItem(Context(3, Primitive), [encodeString(prettyAsString s)]) @ mapEnc encodeError errors) | PreludeFail s => (2, encodeItem(Context(3, Primitive), [encodeString s])) | CompileFail errors => (3, mapEnc encodeError errors) | CompileCancelled errors => (4, mapEnc encodeError errors) in sendASN1(encodeItem(Application(3, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Primitive), [encodeInt(FixedInt.toInt finalOffset)]) @ encodeItem(Context(2, Primitive), [encodeInt(FixedInt.toInt resultCode)]) @ resultData)) end | makeResponse (PropertyResponse { requestId, parseTreeId, location, commands }) = let fun encCommand c = encodeItem(Context(2, Primitive), [encodeString c]) in sendASN1(encodeItem(Application(4, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Constructed), encodeLocation location) @ mapEnc encCommand commands)) end | makeResponse (MoveResponse { requestId, parseTreeId, location }) = sendASN1(encodeItem(Application(7, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Constructed), encodeLocation location))) | makeResponse (TypeResponse { requestId, parseTreeId, location, typeRes }) = let val typeData = case typeRes of NONE => [] | SOME t => encodeItem(Context(2, Primitive), [encodeString(prettyAsString t)]) in sendASN1(encodeItem(Application(8, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Constructed), encodeLocation location) @ typeData)) end | makeResponse (DecResponse { requestId, parseTreeId, location, decLocation }) = let val decData = case decLocation of NONE => [] | SOME l => encodeItem(Context(2, Constructed), encodeFullLocation l) in sendASN1(encodeItem(Application(9, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Constructed), encodeLocation location) @ decData)) end | makeResponse (RefResponse { requestId, parseTreeId, location, references }) = let fun encLoc l = encodeItem(Context(2, Constructed), encodeLocation l) in sendASN1(encodeItem(Application(10, Constructed), encodeRequestId requestId @ encodeParseId parseTreeId @ encodeItem(Context(1, Constructed), encodeLocation location) @ mapEnc encLoc references)) end | makeResponse (UnknownResponse { requestId, ... }) = (* Send an Error packet. *) sendASN1(encodeItem(Application(0, Constructed), if requestId = "" then [] else encodeRequestId requestId)) fun sendResponse () = ( makeResponse response handle _ => protocolError "Exception" ) in (* Sending the response packet must be atomic with respect to any other output to stdOut. *) ThreadLib.protect outputLock sendResponse () end (* sendResponse *) in (readRequest, sendStartedMessage, sendResponse) end (* Get the current parse tree and identifier. *) fun getCurrentParse() = withLock (fn () => let val (id, trees) = ! parseTree in (trees, ! lastParsetree, id) end) (* Update lastParsetree if the id is still valid. *) fun updateLastParse(id, pt) = let fun f () = if id = #1 (! parseTree) then lastParsetree := pt else () in withLock f end (* Set parse tree and ID as a result of a compilation. Sets lastParsetree to the head of the updated parse tree. *) fun setParseTree(pt, id) = let fun f () = ( parseTree := (id, pt); case pt of [] => lastParsetree := NONE | hd :: _ => lastParsetree := SOME hd ) in withLock f end (* The source text may consist of several "programs". When we compile a "program" we have to provide a way for the parsetree for this "program" to navigate to others even though they won't have been compiled yet. This enables it to work. *) (* We have to return functions for the parent, for the next sibling even if there isn't one and for the previous sibling. *) fun toplevelParseTree (parseRootRef as ref currentList) = let open PolyML (* This is called when we have processed the previous "programs" but not yet processed this one. *) fun makelist([], _) = (* Shouldn't happen *) raise Fail "Null list" | makelist(l as (locn, props) :: tl, previous) = let fun this () = makelist(l, previous) (* If there is another item in the list we need a property that moves there whose "previous" property comes here. *) val next = case tl of [] => [] | _ => [PTnextSibling( fn () => makelist(tl, [PTpreviousSibling this]))] in (locn, previous @ next @ props) end fun parent () = case ! parseRootRef of [] => raise Fail "Empty Tree" | trees as (hd :: _) => let (* Navigation for one or more topdecs. *) val fullLoc = case (hd, List.last trees) of (({ file, startLine, startPosition, ... }, _), ({ endLine, endPosition, ... }, _)) => { file=file, startLine=startLine, startPosition=startPosition, endLine=endLine, endPosition=endPosition } in (fullLoc, [PTfirstChild(fn () => makelist(trees, []))]) end val itemCount = List.length currentList fun moveToNth n = let fun move (tree, 0) = tree | move ((loc, opts), n) = case List.find(fn PTnextSibling _ => true | _ => false) opts of NONE => let (* We have to put a dummy item in at the end since when we created the parent properties for the last "program" we will have passed in a "next" entry even though there wasn't actually a "next". *) val { file, startLine, startPosition, ... } = loc val lastPos = { file = file, startLine = startLine, endLine = startLine, startPosition = startPosition, endPosition = startPosition } val opts = List.filter(fn PTparent _ => true | PTpreviousSibling _ => true | _ => false) opts in (lastPos, opts) end | SOME (PTnextSibling f) => move(f(), n-1) | SOME _ => raise Match (* Shouldn't happen *) in case ! parseRootRef of [] => raise Fail "Empty Tree" | trees => move(makelist(trees, []), n) end val previous = case currentList of [] => NONE (* This is the first. *) | _ => SOME(fn () => moveToNth(itemCount-1)) fun next () = moveToNth(itemCount+1) in { parent = SOME parent, next = SOME next, previous = previous } end (* Move in the selected direction. Returns the tree as the result of the move. *) fun navigateTo(searchLocation as {startOffset:FixedInt.int, endOffset:FixedInt.int}, lastParsetree) = case lastParsetree of NONE => NONE | SOME({ startPosition, endPosition, ... }, tree) => let open PolyML datatype direction = Up | Down | Left | Right fun find([], _) = NONE (* No change *) | find(PTparent p :: _, Up) = SOME p | find(PTpreviousSibling p :: _, Left) = SOME p | find(PTnextSibling p :: _, Right) = SOME p | find(PTfirstChild p :: _, Down) = SOME p | find(_ :: tl, dir) = find (tl, dir) in if startOffset = startPosition andalso endOffset = endPosition then (* We're there already. *) lastParsetree else if startOffset >= startPosition andalso endOffset <= endPosition then (* It's this node or a child. *) let val child = find(tree, Down) in (* See if the element we want is actually a child. *) case child of SOME child => let (* See which child it is. *) fun findChild(location as {startPosition, endPosition, ...}, child) = if startOffset >= startPosition andalso endOffset <= endPosition then SOME (location, child) else case find(child, Right) of NONE => NONE | SOME next => findChild(next()) in case findChild(child()) of NONE => lastParsetree (* In this *) | SOME child => navigateTo(searchLocation, SOME child) end | NONE => lastParsetree (* No children. *) end else (* Must go out. *) ( case find(tree, Up) of SOME p => navigateTo(searchLocation, SOME(p())) | NONE => NONE (* Not found *) ) end (* Main protocol loop. *) fun runProtocol currentCompilation = let (* Return the location of the given tree. *) fun treeLocation NONE = {startOffset = 0, endOffset = 0} | treeLocation (SOME ({startPosition, endPosition, ...}, _)) = {startOffset = startPosition, endOffset = endPosition} in case readRequest () of PropertyRequest { requestId: string, parseTreeId: string, location } => let (* Properties of selected node. *) (* Get the current parse tree and check the ID matches *) val (_, lastParsetree, currentParseID) = getCurrentParse() val (commands, location) = if parseTreeId = currentParseID then let val newTree = navigateTo(location, lastParsetree) (* Update the last tree if it's still valid. *) val () = updateLastParse(currentParseID, newTree) val commands = case newTree of NONE => [] | (SOME(_, tree)) => let open PolyML fun printCode(PTparent _, rest) = "U" :: rest | printCode(PTpreviousSibling _, rest) = "P" :: rest | printCode(PTnextSibling _, rest) = "N" :: rest | printCode(PTfirstChild _, rest) = "C" :: rest | printCode(PTtype _, rest) = "T" :: rest | printCode(PTdeclaredAt _, rest) = "I" :: rest | printCode(PTopenedAt _, rest) = "J" :: rest | printCode(PTstructureAt _, rest) = "S" :: rest | printCode(PTreferences(_, _::_), rest) = "V" :: rest (* Only include references if there is at least one local reference. *) | printCode(PTreferences(_, []), rest) = rest | printCode(PTprint _, rest) = rest | printCode(PTbreakPoint _, rest) = rest | printCode(PTcompletions _, rest) = rest | printCode(PTdefId _, rest) = rest | printCode(PTrefId _, rest) = rest in List.foldl printCode [] tree end in (commands, treeLocation newTree) end else ([], { startOffset = 0, endOffset = 0 }) (* Wrong ID. *) in sendResponse( PropertyResponse { requestId = requestId, parseTreeId = currentParseID, location = location, commands = commands }); runProtocol currentCompilation end | MoveRequest { requestId, parseTreeId, location, direction } => let (* Get location after a move relative to a selected node. *) val (_, lastParsetree, currentParseID) = getCurrentParse() val newLocation = if parseTreeId = currentParseID then let (* Move to the given location, then move in the required direction. *) val newTree = case navigateTo(location, lastParsetree) of NONE => NONE | SOME(location, tree) => let open PolyML fun find([], _) = (location, tree) (* No change *) | find(PTparent p :: _, DirUp) = p() | find(PTpreviousSibling p :: _, DirLeft) = p() | find(PTnextSibling p :: _, DirRight) = p() | find(PTfirstChild p :: _, DirDown) = p() | find(_ :: tl, dir) = find (tl, dir) in SOME(find(tree, direction)) end (* Update the last tree if it's still valid. *) val () = updateLastParse(currentParseID, newTree) in treeLocation newTree (* Return the location of the updated tree. *) end else { startOffset = 0, endOffset = 0 } (* *) in sendResponse( MoveResponse { requestId = requestId, parseTreeId = currentParseID, location = newLocation }); runProtocol currentCompilation end | TypeRequest { requestId, parseTreeId, location } => let (* Type of value at selected node. *) val (_, lastParsetree, currentParseID) = getCurrentParse() val (typeRes, location) = if parseTreeId = currentParseID then let (* Move to the required location. *) val newTree = navigateTo(location, lastParsetree) val () = updateLastParse(currentParseID, newTree) (* If it has a type return it. *) val typeRes = case newTree of NONE => NONE | (SOME(_, tree)) => ( (* Print the type if it's there. Don't include any mark-up. *) (* TODO: This uses the global name space to find types and structures. It really should use the local name space but that requires adding an environment to the parse tree. *) case List.find (fn (PolyML.PTtype _) => true | _ => false) tree of SOME(PolyML.PTtype t) => SOME(PolyML.NameSpace.Values.printType(t, 100, SOME PolyML.globalNameSpace)) | _ => NONE ) in (typeRes, treeLocation newTree) end else (NONE, { startOffset = 0, endOffset = 0 }) in sendResponse( TypeResponse { requestId = requestId, parseTreeId = currentParseID, location = location, typeRes = typeRes }); runProtocol currentCompilation end | DecRequest { requestId, parseTreeId, location, decType } => let (* Information about declaration location of identifier at selected node. *) val (_, lastParsetree, currentParseID) = getCurrentParse() val (decLocation, location) = if parseTreeId = currentParseID then let (* Move to the required location. *) val newTree = navigateTo(location, lastParsetree) val () = updateLastParse(currentParseID, newTree) val decLocation = (* If it has the right kind of property return it. *) case newTree of NONE => NONE | (SOME(_, tree)) => let open PolyML val getLoc = case decType of DecLocal => (fn (PTdeclaredAt p) => SOME p | _ => NONE) | DecOpen => (fn (PTopenedAt p) => SOME p | _ => NONE) | DecParent => (fn (PTstructureAt p) => SOME p | _ => NONE) (* Seatch in the properties of the current node for the property we want. *) fun findLoc [] = NONE | findLoc (hd::tl) = case getLoc hd of SOME location => SOME location | NONE => (* Keep trying. *) findLoc tl in findLoc tree end in (decLocation, treeLocation newTree) end else (NONE, { startOffset = 0, endOffset = 0 }) in sendResponse( DecResponse { requestId = requestId, parseTreeId = currentParseID, location = location, decLocation = decLocation }); runProtocol currentCompilation end | RefRequest { requestId, parseTreeId, location } => let (* Type of value at selected node. *) val (_, lastParsetree, currentParseID) = getCurrentParse() val (references, location) = if parseTreeId = currentParseID then let (* Move to the required location. *) val newTree = navigateTo(location, lastParsetree) val () = updateLastParse(currentParseID, newTree) (* Find the local references. *) val references = case newTree of NONE => [] | SOME(_, tree) => ( case List.find (fn (PolyML.PTreferences _) => true | _ => false) tree of SOME(PolyML.PTreferences(_, l)) => List.map (fn {startPosition, endPosition, ...} => { startOffset=startPosition, endOffset=endPosition}) l | _ => [] ) in (references, treeLocation newTree) end else ([], { startOffset = 0, endOffset = 0 }) in sendResponse( RefResponse { requestId = requestId, parseTreeId = currentParseID, location = location, references = references }); runProtocol currentCompilation end | CompileRequest { requestId, fileName, startPosition, preludeCode, sourceCode } => (* Unlike the other requests this is done asynchronously. *) let fun compileThread () = let type errorMsg = { message: PolyML.pretty, hard: bool, location: PolyML.location, context: PolyML.pretty option } (* Even success may include warning messages. *) datatype compileResult = Success | Exception of exn | Interrupted | Errors local open PolyML.NameSpace (* Put in the results without printing. *) fun resultFun { fixes: (string * Infixes.fixity) list, values: (string * Values.value) list, structures: (string * Structures.structureVal) list, signatures: (string * Signatures.signatureVal) list, functors: (string * Functors.functorVal) list, types: (string * TypeConstrs.typeConstr) list} = let open PolyML in List.app (#enterFix globalNameSpace) fixes; List.app (#enterType globalNameSpace) types; List.app (#enterSig globalNameSpace) signatures; List.app (#enterStruct globalNameSpace) structures; List.app (#enterFunct globalNameSpace) functors; List.app (#enterVal globalNameSpace) values end in (* Compile the prelude. Simply returns true if it succeeded and false on any error. Note: Unlike the main compilation this is run with the interlock held and interrupts deferred. *) fun compilePreludeString stringInput: string option = let val stringStream = TextIO.openString stringInput fun compilerResultFun (_, codeOpt) = case codeOpt of SOME code => (fn () => resultFun(code())) | NONE => raise Fail "Static Errors" fun compilerLoop () = (* Compile each "program" until either we get to the end or an exception. *) if TextIO.endOfStream stringStream then NONE (* Reached the end of the input without error. *) else let (* Compile the code and get the result. *) open PolyML PolyML.Compiler val (code, result) = (PolyML.compiler(fn () => TextIO.input1 stringStream, [CPOutStream TextIO.print, CPCompilerResultFun compilerResultFun]), NONE) handle exn => (fn() => (), SOME(exnMessage exn)) in case result of NONE => ( (* No exception in compiler: run the code and check that it runs successfully. *) case ((code(); NONE) handle exn => SOME(exnMessage exn)) of NONE => compilerLoop () (* Continue. *) | exn => exn ) | error => error end fun runloop () = let val res = compilerLoop() in (* The prelude may update the current parse tree. *) case !parseTree of (_, []) => lastParsetree := NONE | (_, hd :: _) => lastParsetree := SOME hd; res end in (* This is run with the lock held. *) withLock runloop end (* Compile the main source code. *) fun compileString(stringInput, startPosition: int) = let val errorList = ref [] val stringPosition = ref 0 val stringSize = String.size stringInput val resultTrees : PolyML.parseTree list ref = ref [] val lastTreePosition = ref 0 fun readIn () = let val posn = ! stringPosition in if posn >= stringSize then NONE else SOME(String.sub(stringInput, posn)) before (stringPosition := posn+1) end (* We need to define our own compilerResultFun in order to capture the parse trees. *) fun compilerResultFun (parsetree, codeOpt) = ( (* Add the parsetree to the list. Record this as the position of the last valid tree. *) case parsetree of SOME pt => (resultTrees := ! resultTrees @ [pt]; lastTreePosition := !stringPosition) | NONE => (); (* Not if parse failed. *) case codeOpt of SOME code => (fn () => resultFun(code())) | NONE => raise Fail "Static Errors" ) fun compilerLoop () = (* Compile each "program" until either we get to the end or an exception. *) if ! stringPosition >= stringSize then Success (* Reached the end of the input without error. *) else let open PolyML PolyML.Compiler val (code, result) = (PolyML.compiler(readIn, [CPOutStream TextIO.print, CPLineOffset (fn () => startPosition + !stringPosition), CPErrorMessageProc (fn msg => errorList := !errorList @ [msg]), CPCompilerResultFun compilerResultFun, CPFileName fileName, CPRootTree (toplevelParseTree resultTrees)]), Success) handle Fail _ => (fn() => (), Errors) | _ (* E.g. Interrupted *) => (fn() => (), Interrupted) in case result of Success => (* Compilation succeeded. *) ( (* Run the code. If it raised an exception pass that back. *) case (code(); Success) handle exn => Exception exn of Success => compilerLoop () (* Continue. *) | fault => fault ) | error => error end in (compilerLoop (), startPosition + !lastTreePosition, ! resultTrees, ! errorList) end end in if (* First run the prelude. If there are any errors report them and stop. *) case compilePreludeString preludeCode of NONE => true (* Succeeded - continue *) | SOME preludeError => (* Error - stop *) let (* Leave the parse tree unchanged. *) val (_, _, currentId) = getCurrentParse() in sendResponse( CompilerResponse { requestId = requestId, parseTreeId = currentId, finalOffset = startPosition, result = PreludeFail preludeError }); false end then (* We can do the main compilation. *) let local open Thread.Thread in (* The rest of this code is interruptible TODO: Multiple interrupts could result in not sending a result packet. *) val () = setAttributes [EnableBroadcastInterrupt true, InterruptState InterruptAsynch] end; val (result, finalPosition, resultTrees, errors) = compileString(sourceCode, FixedInt.toInt startPosition) fun makeErrorPacket {message: PolyML.pretty, hard: bool, location, ...} = { hardError = hard, location = location, message = message } val errorPackets = List.map makeErrorPacket errors val compileResult = case result of Success => Succeeded errorPackets (* May be warning messages. *) | Exception exn => let open PolyML val exLoc = case exceptionLocation exn of SOME loc => [ContextLocation loc] | NONE => [] val exceptionString = (PrettyBlock(0, false, exLoc, [ prettyRepresentation(exn, FixedInt.fromInt(!PolyML.Compiler.printDepth)) ])) in RuntimeException(exceptionString, errorPackets) end | Interrupted => CompileCancelled errorPackets | Errors => CompileFail errorPackets (* Update the tree unless parsing failed and we don't have one. *) val parseTreeId = case resultTrees of [] => #3 (getCurrentParse()) (* Return existing tree. *) | _ => (setParseTree(resultTrees, requestId); requestId) in (* Send the response. *) sendResponse( CompilerResponse { requestId = requestId, parseTreeId = parseTreeId, finalOffset = FixedInt.fromInt finalPosition, result = compileResult }) end else () (* Prelude failed. *) end (* compileThread *) open Thread.Thread (* First see if the last compilation has terminated. Starting a new compilation before the previous one has finished is really a protocol error. *) val isStillRunning = case currentCompilation of NONE => false | SOME (_, lastCompileThread) => isActive lastCompileThread in if isStillRunning then sendResponse( CompilerResponse { requestId = requestId, parseTreeId = #3 (getCurrentParse()), finalOffset = startPosition, result = PreludeFail "Thread still running" }) else let (* The compile thread is run with interrupts deferred initially. *) val thread = fork(compileThread, [InterruptState InterruptDefer]) in runProtocol (SOME(requestId, thread)) end end | KillRequest { requestId: string } => (* Kill compilation. *) ( case currentCompilation of NONE => () (* No compilation. *) | SOME (id, thread) => if requestId = id then Thread.Thread.interrupt thread else () (* Different ID running. *); runProtocol currentCompilation ) | UnknownRequest req => (* Respond with an empty response. *) ( sendResponse(UnknownResponse req); runProtocol currentCompilation ) end in let (* Turn off interrupts for the interface thread. *) open Thread.Thread in setAttributes[EnableBroadcastInterrupt false, InterruptState InterruptDefer] end; sendStartedMessage(); runProtocol NONE (* No compilation. *) end (* runIDEProtocol. *) local val polySpecificGeneralCall = RunCall.rtsCallFull2 "PolySpecificGeneral" in fun polySpecificGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(polySpecificGeneralCall(RunCall.unsafeCast(code, arg))) end in structure PolyML = struct (* This is the root function to run the Poly/ML top level. *) fun rootFunction () : unit = let val argList = CommandLine.arguments() fun rtsRelease() = polySpecificGeneral (10, ()) fun rtsHelp() = polySpecificGeneral (19, ()) val gitVersion = case polySpecificGeneral (9, ()) of "" => "" | s => " (Git version " ^ s ^ ")" fun switchOption option = List.exists(fn s => s = option) argList in if switchOption "-v" then (* -v option : Print version information and exit *) print (String.concat ["Poly/ML ", PolyML.Compiler.compilerVersion, " RTS version: ", rtsRelease(), gitVersion, "\n"]) else if switchOption "--help" then (* --help option: Print argument information and exit. *) ( print (String.concat ["Poly/ML ", PolyML.Compiler.compilerVersion, gitVersion, "\n"]); print "Compiler arguments:\n"; print "\n"; print "-v Print the version of Poly/ML and exit\n"; print "--help Print this message and exit\n"; print "-q Suppress the start-up message and turn off printing of results\n"; print "-i Interactive mode. Default if input is from a terminal\n"; print "--use FILE Executes 'use \"FILE\";' before the ML shell starts\n"; print "--eval STRING Compiles and executes STRING as ML before the ML shell starts\n"; print "--error-exit Exit shell on unhandled exception\n"; print "--with-markup Include extra mark-up information when printing\n"; print "--ideprotocol[=v2] Run the IDE communications protocol\n"; print "--script FILE The input is a script. Skips the first line if it begins with #!."; print "\nRun time system arguments:\n"; print (rtsHelp()) ) else if switchOption "--ideprotocol" then runIDEProtocol () (* Run the IDE communication protocol. *) else if switchOption "--script" then let (* The next argument is the file name. Open it but skip the first line if it's #!. The rest of this code is largely copied from PolyML.use. *) fun getFileName("--script" :: fileName :: _) = fileName | getFileName [] = (print "Missing file name after --script\n"; OS.Process.exit OS.Process.failure) | getFileName(_ :: tail) = getFileName tail val fileName = getFileName argList open TextIO val inStream = getInstream(TextIO.openIn fileName) open StreamIO val stream = ref inStream val lineNo = ref 1 val (start, _) = inputN(inStream, 2) fun getChar () = case input1 (! stream) of NONE => NONE | SOME (eoln as #"\n", strm) => ( lineNo := !lineNo + 1; stream := strm; SOME eoln ) | SOME(c, strm) => (stream := strm; SOME c) val () = if start = "#!" then while (case getChar () of NONE => false | SOME #"\n" => false | SOME _ => true) do () else () val () = PolyML.print_depth 0 (* Quieten. *) in while not (endOfStream(!stream)) do let open PolyML.Compiler val code = PolyML.compiler(getChar, [CPFileName fileName, CPLineNo(fn () => !lineNo)]) handle exn => ( closeIn(!stream); PolyML.Exception.reraise exn ) in code() handle exn => ( (* Report exceptions in running code. *) TextIO.print ("Exception- " ^ exnMessage exn ^ " raised\n"); input1 (! stream); PolyML.Exception.reraise exn ) end; (* Normal termination: close the stream. *) closeIn (! stream) end else (* Enter normal Poly/ML top-level. *) let open Signal val () = if switchOption "-q" then PolyML.print_depth 0 else print (String.concat ["Poly/ML ", PolyML.Compiler.compilerVersion, gitVersion, "\n"]); (* Set up a handler for SIGINT if that is currently set to SIG_DFL. If a handler has been set up by an initialisation function don't replace it. *) val () = case signal(2, SIG_IGN) of SIG_IGN => () | SIG_DFL => (signal(2, SIG_HANDLE(fn _ => Thread.Thread.broadcastInterrupt())); ()) | oldHandle => (signal(2, oldHandle); ()) fun tryUseFileArguments [] = () (* done successfully *) | tryUseFileArguments ["--use"] = ( print "'--use' requires a filename to be given as the next argument.\n"; OS.Process.exit OS.Process.failure ) | tryUseFileArguments ("--use" :: filenameArg :: moreArgs) = ( PolyML.use filenameArg handle _ => ( print("Error trying to use the file: '" ^ filenameArg ^ "'\n"); OS.Process.exit OS.Process.failure ); tryUseFileArguments moreArgs ) | tryUseFileArguments ["--eval"] = ( print "'--eval' requires a string to be given as the next argument.\n"; OS.Process.exit OS.Process.failure ) | tryUseFileArguments ("--eval" :: useString :: moreArgs) = let (* Compile and execute commands from the string. *) val p = ref 0 in while !p < size useString do let fun getChar() = if !p >= size useString then NONE else SOME(String.sub(useString, !p)) before p := !p+1 val code = PolyML.compiler(getChar, []) handle _ => OS.Process.exit OS.Process.failure in code() handle exn => ( (* Report exceptions in running code. *) print ("Exception- " ^ exnMessage exn ^ " raised\n"); OS.Process.exit OS.Process.failure ) end; tryUseFileArguments moreArgs end | tryUseFileArguments (_ :: args) = tryUseFileArguments args in tryUseFileArguments argList; PolyML.shell (); OS.Process.exit OS.Process.success (* Run any "atExit" functions and then quit. *) end end; structure IDEInterface = struct val parseTree = parseTree val runIDEProtocol = runIDEProtocol end; open PolyML (* Add this to the PolyML structure. *) end end; polyml-5.7.1/basis/Int32.sml0000644000175000017500000000557213204034553014525 0ustar daviddavid(* Title: Standard Basis Library: Int32 Structure Author: Vesa Karvonen Copyright David Matthews 1999, 2016 Vesa Karvonen 2007 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is a hacked version of Int32 - a 32bit Int implementation for PolyML 5. It's neither well tested nor efficiently implemented. *) structure Int32 :> INTEGER = struct open LargeInt (* We need LargeInt on 32-bits. *) val precision:Int.int = 32 val minInt = ~(IntInf.<< (1, Word.fromInt (Int.- (precision, 1)))) val maxInt = ~1-minInt fun check i = if i < minInt orelse maxInt < i then raise Overflow else i val precision = SOME precision val minInt = SOME minInt val maxInt = SOME maxInt val fromLarge = check o fromLarge val fromInt = check o fromInt val ~ = check o ~ val op * = check o op * val op + = check o op + val op - = check o op - val op div = check o op div val op mod = check o op mod val quot = check o quot val rem = check o rem val abs = check o abs fun scan' r g s = case scan r g s of NONE => NONE | SOME (i, s) => SOME (check i, s) val scan = scan' val fromString = Option.map check o fromString end; local fun convInt s = let val radix = if String.size s >= 3 andalso String.substring(s, 0, 2) = "0x" orelse String.size s >= 4 andalso String.substring(s, 0, 3) = "~0x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (Int32.scan radix) s of NONE => raise RunCall.Conversion "Invalid integer constant" | SOME res => res end fun pretty _ _ x = PolyML.PrettyString (Int32.toString x) in val () = RunCall.addOverload convInt "convInt" val () = PolyML.addPrettyPrinter pretty end; val () = RunCall.addOverload Int32.~ "~"; val () = RunCall.addOverload Int32.+ "+"; val () = RunCall.addOverload Int32.- "-"; val () = RunCall.addOverload Int32.* "*"; val () = RunCall.addOverload Int32.div "div"; val () = RunCall.addOverload Int32.mod "mod"; val () = RunCall.addOverload Int32.< "<"; val () = RunCall.addOverload Int32.> ">"; val () = RunCall.addOverload Int32.<= "<="; val () = RunCall.addOverload Int32.>= ">="; val () = RunCall.addOverload Int32.abs "abs"; polyml-5.7.1/basis/VectorOperations.sml0000644000175000017500000001460613204034553017132 0ustar daviddavid(* Title: Standard Basis Library: Vector and Array functor Copyright David C.J. Matthews 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* The MONO_ARRAY and MONO_VECTOR signatures contain a number of functions for operating over vectors and arrays. Many of these do not require bounds checking so they can be implemented without the checks. This functor provides basic implementations which can be overridden if necessary. unsafeSet is used only in the modify functions which are only exported from arrays. *) functor VectorOperations( type vector type elem val length: vector -> word val unsafeSub: vector * word -> elem val unsafeSet: vector * word * elem -> unit (* Array only *) ): sig val appi : ((int * elem) -> unit) -> vector -> unit val app : (elem -> unit) -> vector -> unit val foldli : ((int * elem * 'b) -> 'b) -> 'b -> vector -> 'b val foldri : ((int * elem * 'b) -> 'b) -> 'b -> vector -> 'b val foldl : ((elem * 'b) -> 'b) -> 'b -> vector -> 'b val foldr : ((elem * 'b) -> 'b) -> 'b -> vector -> 'b val modifyi : ((int * elem) -> elem) -> vector -> unit (* Array only *) val modify : (elem -> elem) -> vector -> unit (* Array only *) val findi: (int * elem -> bool) -> vector -> (int * elem) option val find: (elem -> bool) -> vector -> elem option val exists: (elem -> bool) -> vector -> bool val all: (elem -> bool) -> vector -> bool val collate: (elem * elem -> order) -> vector * vector -> order end = struct val wordAsInt: word -> int = RunCall.unsafeCast (* Apply a function to each element in turn *) fun appi f vec = let val len = length vec fun doapp j = if j >= len then () else (f(wordAsInt j, unsafeSub(vec, j)); doapp(j+0w1)) in doapp 0w0 end fun app f vec = let val len = length vec fun doapp j = if j >= len then () else (f(unsafeSub(vec, j)); doapp(j+0w1)) in doapp 0w0 end (* Fold a function over a array. *) (* foldl - increasing index *) fun foldl f init vec = let val len = length vec fun dofold j acc = if j >= len then acc else dofold (j+0w1) (f (unsafeSub(vec, j), acc)) in dofold 0w0 init end fun foldli f init vec = let val len = length vec fun dofold j acc = if j >= len then acc else dofold (j+0w1) (f (wordAsInt j, unsafeSub(vec, j), acc)) in dofold 0w0 init end (* foldr - decreasing index *) fun foldr f init vec = let val len = length vec fun dofold j acc = if j = 0w0 then acc else dofold (j-0w1) (f (unsafeSub(vec, j-0w1), acc)) in dofold len init end fun foldri f init vec = let val len = length vec fun dofold j acc = if j = 0w0 then acc else dofold (j-0w1) (f (wordAsInt(j-0w1), unsafeSub(vec, j-0w1), acc)) in dofold len init end (* Apply a function to each element in turn and update the array with the new values. *) fun modifyi f vec = let val len = length vec fun doupdate j = if j >= len then () else (unsafeSet(vec, j, f(wordAsInt j, unsafeSub(vec, j))); doupdate(j+0w1)) in doupdate 0w0 end fun modify f vec = let val len = length vec fun doupdate j = if j >= len then () else (unsafeSet(vec, j, f(unsafeSub(vec, j))); doupdate(j+0w1)) in doupdate 0w0 end (* Find a character that matches the predicate. *) fun findi pred vec = let val len = length vec fun dofind j = if j >= len then NONE else let val v = unsafeSub(vec, j) in if pred(wordAsInt j, v) then SOME (wordAsInt j, v) else dofind (j+0w1) end in dofind 0w0 end fun find pred vec = let val len = length vec fun dofind j = if j >= len then NONE else let val v = unsafeSub(vec, j) in if pred v then SOME v else dofind (j+0w1) end in dofind 0w0 end fun exists f arr = Option.isSome(find f arr) fun all pred arr = not (exists (not o pred) arr) fun collate cmp (vec1, vec2) = let val len1 = length vec1 and len2 = length vec2 (* Keep comparing items until either we come to the end of one of the arrays or we find a mismatch. *) fun dotest j = if j >= len1 then if len1 = len2 then EQUAL else (* j < len2 *) LESS else if j >= len2 then (* But j < len1, so a1 is longer *) GREATER else case cmp(unsafeSub(vec1, j), unsafeSub(vec2, j)) of LESS => LESS | GREATER => GREATER | EQUAL => dotest (j+0w1) in dotest 0w0 end end; polyml-5.7.1/basis/RealArray.sml0000644000175000017500000000365113204034553015504 0ustar daviddavid(* Title: Standard Basis Library: RealArray and RealVector Structures Author: David Matthews Copyright David Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: done. Added sliced versions. *) (* TODO: This stores the vectors as vectors of pointers to cells containing the real values. It would be more efficient to store numbers directly in a byte-vector. We could use the move_bytes function to load and store reals although it would probably be better to define RTS functions to load and store reals. *) structure RealVector: MONO_VECTOR = struct open Vector type vector = real vector and elem = real end; structure RealArray: MONO_ARRAY = struct open Array type vector = RealVector.vector and array = real array and elem = real end; structure RealVectorSlice: MONO_VECTOR_SLICE = struct open VectorSlice type slice = real slice and elem = real and vector = RealVector.vector end; structure RealArraySlice: MONO_ARRAY_SLICE = struct open ArraySlice type slice = real slice and vector = RealVector.vector and array = RealArray.array and elem = real and vector_slice = RealVectorSlice.slice end; polyml-5.7.1/basis/Universal.ML0000644000175000017500000000457713204034553015317 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Universal :> sig type universal type 'a tag val tag : unit -> 'a tag val tagIs : 'a tag -> universal -> bool val tagInject : 'a tag -> 'a -> universal val tagProject : 'a tag -> universal -> 'a end = struct (* The universal type is based on exn which provides a tagged union. We use opaque signature matching to create a different type. *) type universal = exn type 'a tag = { is: universal -> bool, inject: 'a -> universal, project: universal -> 'a }; (* The Match exception is created in the General structure in the basis library which hasn't been built yet. *) fun tag () : 'a tag = let exception E of 'a; in { inject = fn x => E x, project = fn E x => x | _ => raise RunCall.Match, is = fn E _ => true | _ => false } end ; val tagIs : 'a tag -> universal -> bool = #is val tagInject : 'a tag -> 'a -> universal = #inject val tagProject : 'a tag -> universal -> 'a = #project end; (* This code will test the above structure datatype t = T of int ; datatype x = X of string ; val {is=ist,inject=injectT:t->universal,project=projectT} = tag(); val {is=isx,inject=injectX:x->universal,project=projectX} = tag(); val a = injectT (T 42) ; val b = injectT (T 24) ; val c = injectX (X "hello") ; val d = injectX (X "mike") ; map ist [a,b,c,d] ; map isx [a,b,c,d] ; projectT a ; projectT b ; projectT c ; projectT d ; projectX a ; projectX b ; projectX c ; projectX d ; *) polyml-5.7.1/basis/Real.sml0000644000175000017500000006237413204034553014514 0ustar daviddavid(* Title: Standard Basis Library: Real Signature and structure. Author: David Matthews Copyright David Matthews 2000, 2005, 2008, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Real: REAL = struct open IEEEReal val fromLargeInt: LargeInt.int -> real = Real.rtsCallFastI_F "PolyFloatArbitraryPrecision" val fromInt: int -> real = (* We have to select the appropriate conversion. This will be reduced down to the appropriate function but has to be type-correct whether int is arbitrary precision or fixed precision. Hence the "o Large/FixedInt.fromInt". *) if Bootstrap.intIsArbitraryPrecision then fromLargeInt o LargeInt.fromInt else Real.fromFixedInt o FixedInt.fromInt (* These are needed because we don't yet have conversion from string to real. They are filtered out by the signature. *) val zero = fromInt 0 and one = fromInt 1 and four = fromInt 4 local val doReal : int*real->real = RunCall.rtsCallFull2 "PolyRealGeneral" in fun callReal n x = doReal(n, x) end local val doReal : int*(real*real)->real = RunCall.rtsCallFull2 "PolyRealGeneral" in fun callRealReal n p = doReal(n, p) end local val doReal : int*real->bool = RunCall.rtsCallFull2 "PolyRealGeneral" in fun callRealToBool n x = doReal(n, x) end local val doReal : int*real->int = RunCall.rtsCallFull2 "PolyRealGeneral" in fun callRealToInt n x = doReal(n, x) end type real = real (* Pick up from globals. *) structure Math: MATH = struct type real = real (* Pick up from globals. *) val sqrt = Real.rtsCallFastF_F "PolyRealSqrt" and sin = Real.rtsCallFastF_F "PolyRealSin" and cos = Real.rtsCallFastF_F "PolyRealCos" and atan = Real.rtsCallFastF_F "PolyRealArctan" and exp = Real.rtsCallFastF_F "PolyRealExp" and ln = Real.rtsCallFastF_F "PolyRealLog" and tan = Real.rtsCallFastF_F "PolyRealTan" and asin = Real.rtsCallFastF_F "PolyRealArcSin" and acos = Real.rtsCallFastF_F "PolyRealArcCos" and log10 = Real.rtsCallFastF_F "PolyRealLog10" and sinh = Real.rtsCallFastF_F "PolyRealSinh" and cosh = Real.rtsCallFastF_F "PolyRealCosh" and tanh = Real.rtsCallFastF_F "PolyRealTanh" (* These have not yet been done. *) val atan2 = callRealReal 3 val pow = callRealReal 4 (* Derived values. *) val e = exp one val pi = four * atan one end; infix 4 == != ?=; val op == = Real.== val op != : real * real -> bool = not o op == val radix : int = callRealToInt 11 zero val precision : int = callRealToInt 12 zero val maxFinite : real = callReal 13 zero val minNormalPos : real = callReal 14 zero val posInf : real = one/zero; val negInf : real = ~one/zero; (* We only implement this sort of real. *) fun toLarge (x: real) : (*LargeReal.*)real =x fun fromLarge (_ : IEEEReal.rounding_mode) (x: (*LargeReal.*)real): real = x local open Real in (* NAN values fail any test including equality with themselves. *) fun isNan x = x != x (* NAN values do not match and infinities when multiplied by 0 produce NAN. *) fun isFinite x = x * zero == zero val signBit : real -> bool = callRealToBool 17 val copySign : (real * real) -> real = callRealReal 18 (* If we assume that all functions produce normalised results where possible, the only subnormal values will be those smaller than minNormalPos. *) fun isNormal x = isFinite x andalso abs x >= minNormalPos fun class x = if isFinite x then if x == zero then ZERO else if abs x >= minNormalPos then NORMAL else SUBNORMAL else if isNan x then NAN else (* not finite and not Nan *) INF fun sign x = if isNan x then raise General.Domain else if x == zero then 0 else if x < zero then ~1 else 1 end fun sameSign (x, y) = signBit x = signBit y fun unordered (x, y) = isNan x orelse isNan y (* Returns the minimum. In the case where one is a NaN it returns the other. In that case the comparison will be false. *) fun min (a: real, b: real): real = if a < b orelse isNan b then a else b (* Similarly for max. *) fun max (a: real, b: real): real = if a > b orelse isNan b then a else b fun checkFloat x = if isFinite x then x else if isNan x then raise General.Div else raise General.Overflow val radixAsReal (* Not exported *) = fromInt radix val epsilon (* Not exported *) = Math.pow(radixAsReal, fromInt (Int.-(1, precision))) val minPos : real = minNormalPos*epsilon; local val toMantissa : real->real = callReal 24 and toExponent : real->int = callRealToInt 25 val doReal : int*(real*int)->real = RunCall.rtsCallFull2 "PolyRealGeneral" fun fromManAndExp (ri: real*int): real = doReal(23, ri) open Real in fun toManExp r = if not (isFinite r) orelse r == zero (* Nan, infinities and +/-0 all return r in the mantissa. We include 0 to preserve its sign. *) then {man=r, exp=0} else {man=toMantissa r, exp=toExponent r} fun fromManExp {man, exp} = if not (isFinite man) orelse man == zero (* Nan, infinities and +/-0 in the mantissa all return their argument. *) then man else fromManAndExp(man, exp) end (* Convert to integer. Ideally this would do the rounding/truncation as part of the conversion but it doesn't seem to be possible to detect overflow properly. Instead we use the real rounding/truncation, convert to arbitrary precision and then check for overflow if necessary. *) local (* The RTS function converts to at most a 64-bit value (even on 32-bits). That will convert all the bits of the mantissa but if the exponent is large we may have to multiply by some power of two. *) val realToInt: real -> LargeInt.int = RunCall.rtsCallFull1 "PolyRealBoxedToLongInt" in val realFloor = Real.rtsCallFastF_F "PolyRealFloor" and realCeil = Real.rtsCallFastF_F "PolyRealCeil" and realTrunc = Real.rtsCallFastF_F "PolyRealTrunc" and realRound = Real.rtsCallFastF_F "PolyRealRound" fun toArbitrary x = if isNan x then raise General.Domain else if not (isFinite x) then raise General.Overflow else let val { man, exp } = toManExp x in if exp <= precision then realToInt x else IntInf.<< (realToInt(fromManExp{man=man, exp=precision}), Word.fromInt(exp - precision)) end fun floor x = toArbitrary(realFloor x) (* Returns the largest integer <= x. *) fun ceil x = toArbitrary(realCeil x) (* Returns the smallest integer >= x. *) fun trunc x = toArbitrary(realTrunc x) (* Truncate towards zero. *) fun round x = toArbitrary(realRound x) (* Return the nearest integer, returning an even value if equidistant. *) fun toLargeInt IEEEReal.TO_NEGINF r = floor r | toLargeInt IEEEReal.TO_POSINF r = ceil r | toLargeInt IEEEReal.TO_ZERO r = trunc r | toLargeInt IEEEReal.TO_NEAREST r = round r fun toInt mode x = LargeInt.toInt(toLargeInt mode x) val floor = LargeInt.toInt o floor and ceil = LargeInt.toInt o ceil and trunc = LargeInt.toInt o trunc and round = LargeInt.toInt o round end; local val realConv: string->real = RunCall.rtsCallFull1 "PolyRealBoxedFromString" val posNan = abs(zero / zero) val negNan = ~posNan in fun fromDecimal { class = INF, sign=true, ...} = SOME negInf | fromDecimal { class = INF, sign=false, ...} = SOME posInf | fromDecimal { class = ZERO, sign=true, ...} = SOME (~ zero) | fromDecimal { class = ZERO, sign=false, ...} = SOME zero (* Generate signed Nans ignoring the digits and mantissa. There was code here to set the mantissa but there's no reference to that in the current version of the Basis library. *) | fromDecimal { class = NAN, sign=true, ... } = SOME negNan | fromDecimal { class = NAN, sign=false, ... } = SOME posNan | fromDecimal { class = _ (* NORMAL or SUBNORMAL *), sign, digits, exp} = (let fun toChar x = if x < 0 orelse x > 9 then raise General.Domain else Char.chr (x + Char.ord #"0") (* Turn the number into a string. *) val str = "0." ^ String.implode(List.map toChar digits) ^"E" ^ Int.toString exp (* Convert it to a real using the RTS conversion function. Change any Conversion exceptions into Domain. *) val result = realConv str handle RunCall.Conversion _ => raise General.Domain in if sign then SOME (~result) else SOME result end handle General.Domain => NONE ) end local val dtoa: real*int*int -> string*int*int = RunCall.rtsCallFull3 "PolyRealBoxedToString" open StringCvt fun addZeros n = if n <= 0 then "" else "0" ^ addZeros (n-1) fun fixFmt ndigs r = if isNan r then "nan" else if not (isFinite r) then if r < zero then "~inf" else "inf" else let (* Try to get ndigs past the decimal point. *) val (str, exp, sign) = dtoa(r, 3, ndigs) val strLen = String.size str (* If the exponents is negative or zero we need to put a zero before the decimal point. If the exponent is positive and less than the number of digits we can take that many characters off, otherwise we have to pad with zeros. *) val numb = if exp <= 0 then (* Exponent is zero or negative - all significant digits are after the decimal point. Put in any zeros before the significant digits, then the significant digits and then any trailing zeros. *) if ndigs = 0 then "0" else "0." ^ addZeros(~exp) ^ str ^ addZeros(ndigs-strLen+exp) else if strLen <= exp then (* Exponent is not less than the length of the string - all significant digits are before the decimal point. Add any extra zeros before the decimal point then zeros after it. *) str ^ addZeros(exp-strLen) ^ (if ndigs = 0 then "" else "." ^ addZeros ndigs) else (* Significant digits straddle the decimal point - insert the decimal point and add any trailing zeros. *) String.substring(str, 0, exp) ^ "." ^ String.substring(str, exp, strLen-exp) ^ addZeros(ndigs-strLen+exp) in if sign <> 0 then "~" ^ numb else numb end fun sciFmt ndigs r = if isNan r then "nan" else if not (isFinite r) then if r < zero then "~inf" else "inf" else let (* Try to get ndigs+1 digits. 1 before the decimal point and ndigs after. *) val (str, exp, sign) = dtoa(r, 2, ndigs+1) val strLen = String.size str fun addZeros n = if n <= 0 then "" else "0" ^ addZeros (n-1) val numb = if strLen = 0 then "0" ^ (if ndigs = 0 then "" else "." ^ addZeros ndigs) ^ "E0" else (if strLen = 1 then str ^ (if ndigs = 0 then "" else "." ^ addZeros ndigs) else String.substring(str, 0, 1) ^ "." ^ String.substring(str, 1, strLen-1) ^ addZeros (ndigs-strLen+1) ) ^ "E" ^ Int.toString (exp-1) in if sign <> 0 then "~" ^ numb else numb end fun genFmt ndigs r = if isNan r then "nan" else if not (isFinite r) then if r < zero then "~inf" else "inf" else let (* Try to get ndigs digits. *) val (str, exp, sign) = dtoa(r, 2, ndigs) val strLen = String.size str val numb = (* Have to use scientific notation if exp > ndigs. Also use it if the exponent is small (TODO: adjust this) *) if exp > ndigs orelse exp < ~5 then (* Scientific format *) (if strLen = 1 then str else String.substring(str, 0, 1) ^ "." ^ String.substring(str, 1, strLen-1) ) ^ "E" ^ Int.toString (exp-1) else (* Fixed format (N.B. no trailing zeros are added after the decimal point apart from one if necessary) *) if exp <= 0 then (* Exponent is zero or negative - all significant digits are after the decimal point. Put in any zeros before the significant digits, then the significant digits and then any trailing zeros. *) "0." ^ addZeros(~exp) ^ str else if strLen <= exp then (* Exponent is not less than the length of the string - all significant digits are before the decimal point. Add any extra zeros before the decimal point. Insert .0 at the end to make it a valid real number. *) str ^ addZeros(exp-strLen) ^ ".0" else (* Significant digits straddle the decimal point - insert the decimal point. *) String.substring(str, 0, exp) ^ "." ^ String.substring(str, exp, strLen-exp) in if sign <> 0 then "~" ^ numb else numb end fun strToDigitList str = let fun getDigs i l = if i < 0 then l else getDigs (i-1) ((Char.ord(String.sub(str, i)) - Char.ord #"0") :: l) in getDigs (String.size str - 1) [] end in fun toDecimal r = let val sign = signBit r val kind = class r in case kind of ZERO => { class = ZERO, sign = sign, digits=[], exp = 0 } | INF => { class = INF, sign = sign, digits=[], exp = 0 } | NAN => { class = NAN, sign = sign, digits=[], exp = 0 } | _ => (* NORMAL/SUBNORMAL *) let val (str, exp, sign) = dtoa(r, 0, 0) val digits = strToDigitList str in { class = kind, sign = sign <> 0, digits = digits, exp = exp } end end (* Note: The definition says, reasonably, that negative values for the number of digits raises Size. The tests also check for a very large value for the number of digits and seem to expect Size to be raised in that case. Note that the exception is raised when fmt spec is evaluated and before it is applied to an actual real argument. In all cases, even EXACT format, this should produce "nan" for a NaN and ignore the sign bit. *) fun fmt (SCI NONE) = sciFmt 6 | fmt (SCI (SOME d) ) = if d < 0 orelse d > 200 then raise General.Size else sciFmt d | fmt (FIX NONE) = fixFmt 6 | fmt (FIX (SOME d) ) = if d < 0 orelse d > 200 then raise General.Size else fixFmt d | fmt (GEN NONE) = genFmt 12 | fmt (GEN (SOME d) ) = if d < 1 orelse d > 200 then raise General.Size else genFmt d | fmt EXACT = (fn r => if isNan r then "nan" else IEEEReal.toString(toDecimal r)) val toString = fmt (GEN NONE) end fun scan getc src = let (* Return a list of digits. *) fun getdigits inp src = case getc src of NONE => (List.rev inp, src) | SOME(ch, src') => if ch >= #"0" andalso ch <= #"9" then getdigits ((Char.ord ch - Char.ord #"0") :: inp) src' else (List.rev inp, src) (* Read an unsigned integer. Returns NONE if no digits have been read. *) fun getNumber sign digits acc src = case getc src of NONE => if digits = 0 then NONE else SOME(if sign then ~acc else acc, src) | SOME(ch, src') => if ch >= #"0" andalso ch <= #"9" then getNumber sign (digits+1) (acc*10 + Char.ord ch - Char.ord #"0") src' else if digits = 0 then NONE else SOME(if sign then ~acc else acc, src') (* Return the signed exponent. *) fun getExponent src = case getc src of NONE => NONE | SOME(ch, src') => if ch = #"+" then getNumber false 0 0 src' else if ch = #"-" orelse ch = #"~" then getNumber true 0 0 src' else getNumber false 0 0 src fun read_number sign src = case getc src of NONE => NONE | SOME(ch, _) => if not (ch >= #"0" andalso ch <= #"9" orelse ch = #".") then NONE (* Bad *) else (* Digits or decimal. *) let (* Get the digits before the decimal point (if any) *) val (intPart, srcAfterDigs) = getdigits [] src (* Get the digits after the decimal point (if any). If there is a decimal point we only accept it if there is at least one digit after it. *) val (decimals, srcAfterMant) = case getc srcAfterDigs of NONE => ([], srcAfterDigs) | SOME (#".", srcAfterDP) => ( (* Check that the next character is a digit. *) case getc srcAfterDP of NONE => ([], srcAfterDigs) | SOME(ch, _) => if ch >= #"0" andalso ch <= #"9" then getdigits [] srcAfterDP else ([], srcAfterDigs) ) | SOME (_, _) => ([], srcAfterDigs) (* The exponent is optional. If it doesn't form a valid exponent we return zero as the value and the continuation is the beginning of the "exponent". *) val (exponent, srcAfterExp) = case getc srcAfterMant of NONE => (0, srcAfterMant) | SOME (ch, src'''') => if ch = #"e" orelse ch = #"E" then ( case getExponent src'''' of NONE => (0, srcAfterMant) | SOME x => x ) else (0, srcAfterMant) (* Generate a decimal representation ready for conversion. We don't bother to strip off leading or trailing zeros. *) val decimalRep = {class=NORMAL, sign=sign, digits=List.@(intPart, decimals), exp=exponent + List.length intPart} in case fromDecimal decimalRep of SOME r => SOME(r, srcAfterExp) | NONE => NONE end in case getc src of NONE => NONE | SOME(ch, src') => if Char.isSpace ch (* Skip white space. *) then scan getc src' (* Recurse *) else if ch = #"+" (* Remove the + sign *) then read_number false src' else if ch = #"-" orelse ch = #"~" then read_number true src' else (* See if it's a valid digit. *) read_number false src end val fromString = StringCvt.scanString scan (* Converter to real values. This replaces the basic conversion function for reals installed in the bootstrap process. For more information see convInt in Int. *) local fun convReal (s: string) : real = let (* Set the rounding mode to TO_NEAREST whatever the current rounding mode. Otherwise the result of compiling a piece of code with a literal constant could depend on what the rounding mode was set to. *) val oldRounding = IEEEReal.getRoundingMode() handle Fail _ => IEEEReal.TO_NEAREST val () = IEEEReal.setRoundingMode IEEEReal.TO_NEAREST handle Fail _ => () val scanResult = StringCvt.scanString scan s val () = IEEEReal.setRoundingMode oldRounding handle Fail _ => () in case scanResult of NONE => raise RunCall.Conversion "Invalid real constant" | SOME res => res end in (* Install this as a conversion function for real literals. *) val (): unit = RunCall.addOverload convReal "convReal" end open Real (* Get the other definitions. *) fun compare (r1, r2) = if r1 == r2 then General.EQUAL else if r1 < r2 then General.LESS else if r1 > r2 then General.GREATER else raise Unordered fun compareReal (r1, r2) = if r1 == r2 then EQUAL else if r1 < r2 then LESS else if r1 > r2 then GREATER else UNORDERED (* Question: The definition says "bitwise equal, ignoring signs on zeros". If we assume that all numbers are normalised, is that the same as "equal"?*) fun op ?= (x, y) = isNan x orelse isNan y orelse x == y (* Although these may be built in in some architectures it's probably not worth treating them specially at the moment. *) fun *+ (x: real, y: real, z: real): real = x*y+z and *- (x: real, y: real, z: real): real = x*y-z fun rem (x, y) = if not (isFinite y) andalso not (isNan y) then x else x - realTrunc(x / y)*y (* Split a real into whole and fractional parts. The fractional part must have the same sign as the number even if it is zero. *) fun split r = let val whole = realTrunc r val frac = r - whole in { whole = whole, frac = if not (isFinite r) then if isNan r then r else (* Infinity *) if r < zero then ~zero else zero else if frac == zero then if signBit r then ~zero else zero else frac } end (* Get the fractional part of a real. *) fun realMod r = #frac(split r) (* nextAfter: This was previously implemented in ML but, at the very least, needed to work with rounding to something other than TO_NEAREST. This should be implemented as a fast call but we don't currently support fast calls for real * real -> real. *) val nextAfter = callRealReal 26 end; structure Math = Real.Math; structure LargeReal: REAL = Real; (* Values available unqualified at the top-level. *) val real : int -> real = Real.fromInt val trunc : real -> int = Real.trunc val floor : real -> int = Real.floor val ceil : real -> int = Real.ceil val round : real -> int =Real.round; (* Install print function. *) local fun print_real _ _ (r: real) = PolyML.PrettyString(Real.fmt (StringCvt.GEN(SOME 10)) r) in val () = PolyML.addPrettyPrinter print_real; end; polyml-5.7.1/basis/TextPrimIO.sml0000644000175000017500000000360613204034553015626 0ustar daviddavid(* Title: Standard Basis Library: Primitive Text IO Copyright David C.J. Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* QUESTION: What is the relationship between TextPrimIO and TextIO? Is TextIO.StreamIO.reader supposed to be the same as TextPrimIO.reader and similarly for writer? Assume yes. Yes, in G&R these are explicit*) structure TextPrimIO :> sig include PRIM_IO where type vector = CharVector.vector where type elem = Char.char where type array = CharArray.array where type pos = Position.int where type vector_slice = CharVectorSlice.slice where type array_slice = CharArraySlice.slice end = PrimIO ( structure Array = CharArray structure Vector = CharVector structure ArraySlice = CharArraySlice structure VectorSlice = CharVectorSlice val someElem : Array.elem = #" " (* Initialise to spaces. *) (* BinPrimIO.pos is defined to be Position.int. TextPrimIO.pos may be abstract. It's very convenient to be able to build additional readers and that requires pos to be non-abstract. *) type pos = Position.int val compare = Position.compare ); polyml-5.7.1/basis/IntAsFixedInt.sml0000644000175000017500000000152713204034553016273 0ustar daviddavid(* Title: Standard Basis Library: Int structure Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Set Int to be FixedInt. *) structure Int: INTEGER = FixedInt; polyml-5.7.1/basis/Array2Signature.sml0000644000175000017500000000376713204034553016654 0ustar daviddavid(* Title: Standard Basis Library: Array2 signature. Author: David Matthews Copyright David Matthews 2000, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ARRAY2 = sig eqtype 'a array type 'a region = { base : 'a array, row : int, col : int, nrows : int option, ncols : int option } datatype traversal = RowMajor | ColMajor val array: int * int * 'a -> 'a array val fromList: 'a list list -> 'a array val tabulate: traversal -> int * int * (int * int -> 'a) -> 'a array val sub: 'a array * int * int -> 'a val update: 'a array * int * int * 'a -> unit val dimensions: 'a array -> int * int val nCols: 'a array -> int val nRows: 'a array -> int val row: 'a array * int -> 'a Vector.vector val column: 'a array * int -> 'a Vector.vector val copy: {src : 'a region, dst : 'a array, dst_row : int, dst_col : int} -> unit val appi: traversal -> (int * int * 'a -> unit) -> 'a region -> unit val app: traversal -> ('a -> unit) -> 'a array -> unit val modifyi: traversal -> (int * int * 'a -> 'a) -> 'a region -> unit val modify: traversal -> ('a -> 'a) -> 'a array -> unit val foldi: traversal -> (int * int * 'a * 'b -> 'b) -> 'b -> 'a region -> 'b val fold: traversal -> ('a * 'b -> 'b) -> 'b -> 'a array -> 'b end; polyml-5.7.1/basis/MONO_VECTOR.sml0000644000175000017500000000371713204034553015457 0ustar daviddavid(* Title: Standard Basis Library: MONO_VECTOR signature Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated. *) signature MONO_VECTOR = sig type vector type elem val maxLen : int val fromList : elem list -> vector val tabulate : (int * (int -> elem)) -> vector val length : vector -> int val sub : (vector * int) -> elem val update: vector * int * elem -> vector val concat : vector list -> vector val mapi : ((int * elem) -> elem) -> vector -> vector val map : (elem -> elem) -> vector -> vector val appi : ((int * elem) -> unit) -> vector -> unit val app : (elem -> unit) -> vector -> unit val foldli : ((int * elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldri : ((int * elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> vector -> 'a val findi: (int * elem -> bool) -> vector -> (int * elem) option val find: (elem -> bool) -> vector -> elem option val exists: (elem -> bool) -> vector -> bool val all: (elem -> bool) -> vector -> bool val collate: (elem * elem -> order) -> vector * vector -> order end; polyml-5.7.1/basis/CommandLine.sml0000644000175000017500000000244313204034553016006 0ustar daviddavid(* Title: Standard Basis Library: CommandLine Structure and Signature Author: David Matthews Copyright David Matthews 1999, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature COMMAND_LINE = sig val name : unit -> string val arguments : unit -> string list end structure CommandLine : COMMAND_LINE = struct local val doCall: int * unit -> string = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in fun name() = doCall(0, ()) end local val doCall: int * unit -> string list = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in fun arguments() = doCall(1, ()) end end; polyml-5.7.1/basis/STREAM_IO.sml0000644000175000017500000000375413204034553015210 0ustar daviddavid(* Title: Standard Basis Library: STREAM_IO signature Copyright David C.J. Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: checked. No change *) signature STREAM_IO = sig type elem type vector type instream type outstream type out_pos type reader type writer type pos val input : instream -> vector * instream val input1 : instream -> (elem * instream) option val inputN : instream * int -> vector * instream val inputAll : instream -> vector * instream val canInput : instream * int -> int option val closeIn : instream -> unit val endOfStream : instream -> bool val output : outstream * vector -> unit val output1 : outstream * elem -> unit val flushOut : outstream -> unit val closeOut : outstream -> unit val mkInstream : reader * vector -> instream val getReader : instream -> reader * vector val filePosIn : instream -> pos val setBufferMode : outstream * IO.buffer_mode -> unit val getBufferMode : outstream -> IO.buffer_mode val mkOutstream : writer * IO.buffer_mode -> outstream val getWriter : outstream -> writer * IO.buffer_mode val getPosOut : outstream -> out_pos val setPosOut : out_pos -> outstream val filePosOut : out_pos -> pos end; polyml-5.7.1/basis/OS.sml0000644000175000017500000013567713204034553014161 0ustar daviddavid(* Title: Standard Basis Library: OS Structures and Signatures Author: David Matthews Copyright David Matthews 2000, 2005, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature OS_FILE_SYS = sig type dirstream val openDir : string -> dirstream val readDir : dirstream -> string option val rewindDir : dirstream -> unit val closeDir : dirstream -> unit val chDir : string -> unit val getDir : unit -> string val mkDir : string -> unit val rmDir : string -> unit val isDir : string -> bool val isLink : string -> bool val readLink : string -> string val fullPath : string -> string val realPath : string -> string val modTime : string -> Time.time val fileSize : string -> Position.int val setTime : (string * Time.time Option.option) -> unit val remove : string -> unit val rename : {old : string, new : string} -> unit datatype access_mode = A_READ | A_WRITE | A_EXEC val access : (string * access_mode list) -> bool val tmpName : unit -> string eqtype file_id val fileId : string -> file_id val hash : file_id -> word val compare : (file_id * file_id) -> General.order end (* OS_FILE_SYS *); signature OS_PATH = sig exception Path exception InvalidArc val parentArc : string val currentArc : string val fromString : string -> { isAbs : bool, vol : string, arcs : string list } val toString : { isAbs : bool, vol : string, arcs : string list } -> string val validVolume : {isAbs : bool, vol : string} -> bool val getVolume : string -> string val getParent : string -> string val splitDirFile : string -> {dir : string, file : string} val joinDirFile : {dir : string, file : string} -> string val dir : string -> string val file : string -> string val splitBaseExt : string -> {base : string, ext : string option } val joinBaseExt : {base : string, ext : string option} -> string val base : string -> string val ext : string -> string option val mkCanonical : string -> string val isCanonical : string -> bool val mkAbsolute : {path : string, relativeTo : string} -> string val mkRelative : {path : string, relativeTo : string} -> string val isAbsolute : string -> bool val isRelative : string -> bool val isRoot : string -> bool val concat : string * string -> string val toUnixPath : string -> string val fromUnixPath : string -> string end (* OS_PATH *); signature OS_PROCESS = sig type status val success : status val failure : status val isSuccess : status -> bool val system : string -> status val atExit : (unit -> unit) -> unit val exit : status -> 'a val terminate : status -> 'a val getEnv : string -> string Option.option val sleep: Time.time -> unit end (* OS_PROCESS *); signature OS_IO = sig eqtype iodesc val hash : iodesc -> word val compare : (iodesc * iodesc) -> General.order eqtype iodesc_kind val kind : iodesc -> iodesc_kind structure Kind: sig val file : iodesc_kind val dir : iodesc_kind val symlink : iodesc_kind val tty : iodesc_kind val pipe : iodesc_kind val socket : iodesc_kind val device : iodesc_kind end eqtype poll_desc type poll_info val pollDesc : iodesc -> poll_desc Option.option val pollToIODesc : poll_desc -> iodesc exception Poll val pollIn : poll_desc -> poll_desc val pollOut : poll_desc -> poll_desc val pollPri : poll_desc -> poll_desc val poll : (poll_desc list * Time.time Option.option) -> poll_info list val isIn : poll_info -> bool val isOut : poll_info -> bool val isPri : poll_info -> bool val infoToPollDesc : poll_info -> poll_desc end (* OS_IO *); signature OS = sig eqtype syserror exception SysErr of (string * syserror Option.option) val errorMsg : syserror -> string val errorName : syserror -> string val syserror : string -> syserror Option.option structure FileSys : OS_FILE_SYS structure Path : OS_PATH structure Process : OS_PROCESS structure IO : OS_IO end (* OS *); structure OS:> OS = struct type syserror = SysWord.word (* Implemented as a SysWord.word value. *) (* The calls themselves raise the SysCall exception. That has to be turned into a SysError exception. *) exception SysErr = RunCall.SysErr (* Convert a numeric system error to a string. Note: unlike Posix.Error.errorName and Posix.Error.sysError the results are not defined other than that SOME e = syserror(errorName e) nor is this defined to be the same as the Posix.Error functions. Those are defined to return e.g. "etoobig". Here we return "E2BIG". *) val errorName: syserror -> string = RunCall.rtsCallFull1 "PolyProcessEnvErrorName" and errorMsg: syserror -> string = RunCall.rtsCallFull1 "PolyProcessEnvErrorMessage" local val doCall: string -> syserror = RunCall.rtsCallFull1 "PolyProcessEnvErrorFromString" in (* Convert a string to an error message if possible. *) fun syserror (s: string) : syserror option = let val n = doCall s in if n = 0w0 then NONE else SOME n end end structure Path:> OS_PATH = struct (* Note: The definition of relative and absolute paths are somewhat unclear and some of the examples seem contradictory. The definition I would prefer to use is that an absolute path is one which identifies a given file independent of any setting of the current directory. Hence the examples of "\" and "\A\B" as being absolute paths in DOS is in my opinion wrong. These are relative since they depend on the setting of the current volume. However this is a mess when it comes to fromString since if we don't treat "\A" as an absolute path it looks just like an absolute path with an empty arc. *) exception Path exception InvalidArc local val getOSCall: unit -> int = RunCall.rtsCallFast0 "PolyGetOSType" val getOS: int = getOSCall() in val isWindows = case getOS of 0 => false (* Posix *) | 1 => true | _ => raise Fail "Unknown operating system" end val isCaseSensitive = not isWindows val isSeparator = if isWindows then fn #"/" => true | #"\\" => true | _ => false else fn #"/" => true | _ => false val separator = if isWindows then "\\" else "/" val parentArc = ".." and currentArc = "." val isValidArc = if isWindows then let fun invalidChars #"\000" = true | invalidChars #"<" = true | invalidChars #">" = true | invalidChars #":" = true | invalidChars #"\"" = true | invalidChars #"\\" = true | invalidChars #"/" = true | invalidChars #"|" = true | invalidChars #"?" = true | invalidChars #"*" = true | invalidChars _ = false in not o (CharVector.exists invalidChars) end else let (* Posix - only null and / are invalid. *) fun invalidChars #"\000" = true | invalidChars #"/" = true | invalidChars _ = false in not o (CharVector.exists invalidChars) end local (* Given a string it examines the prefix and extracts the volume name if there is one. It returns the volume and also whether the name is absolute. It also returns the number of characters which matched so that this can be removed before treating the rest as a relative path. *) fun matchVolumePrefixPosix s = if String.size s > 0 andalso String.sub(s, 0) = #"/" then {volLen = 1, vol = "", abs = true, root = true } else {volLen = 0, vol = "", abs = false, root = false } fun matchVolumePrefixWindows s = let val slen = String.size s in if slen = 0 then { volLen = 0, vol = "", abs = false, root = false } else if slen >= 2 andalso String.sub(s, 1) = #":" andalso Char.isAlpha(String.sub(s, 0)) then if slen > 2 andalso isSeparator(String.sub(s, 2)) then { volLen = 3, vol = String.substring(s, 0, 2), abs = true, root = true } (* e.g. C:\ or C:\fred *) else { volLen = 2, vol = String.substring(s, 0, 2), abs = false, root = false } (* e.g. C: or C:fred *) else if slen > 2 andalso isSeparator(String.sub(s, 0)) andalso isSeparator(String.sub(s, 1)) then (* Looks like a UNC server name. See how big it is. *) let val (server, rest) = Substring.splitl(fn c => not (isSeparator c)) (Substring.extract(s, 2, NONE)) (* TODO: Is the server name actually valid? Assume yes. *) in if Substring.size rest = 0 then { volLen = 0, vol = "", abs = false, root = false } else (* Must be room for a share name as well. *) let val shareName = Substring.takel(fn c => not (isSeparator c)) (Substring.triml 1 rest) in { volLen = Substring.size server + Substring.size shareName + 4, vol = separator ^ separator ^ Substring.string server ^ separator ^ Substring.string shareName, abs = true, root = true } end end (* Leading \ in Windows means the "root" directory on the current drive. *) else if isSeparator(String.sub(s, 0)) then { volLen = 1, vol = "", abs = false, root = true } else { volLen = 0, vol = "", abs = false, root = false } end in val matchVolumePrefix = if isWindows then matchVolumePrefixWindows else matchVolumePrefixPosix end (* Internal - map the strings to the canonical case if they are not case sensitive. *) val toCanonicalCase = if isCaseSensitive then fn s => s else String.map Char.toLower (* Internal - are the arcs equivalent? *) fun equivalent (s, t) = toCanonicalCase s = toCanonicalCase t (* See if the volume name is valid for either an absolute or relative path. Windows relative paths may or may not have a volume but if they have the volume must look right. On Unix relative paths may not specify a volume and the only volume for absolute paths is the empty string. *) val validVolume = if isWindows then fn {isAbs, vol = ""} => not isAbs (* Empty volume is only valid for relative paths. *) | {vol, ...} => if size vol = 2 andalso String.sub(vol, 1) = #":" andalso Char.isAlpha(String.sub(vol, 0)) then true (* Drive letter e.g. C: *) else if size vol > 2 andalso isSeparator(String.sub(vol, 0)) then (* UNC name? \\server\share *) case String.fields isSeparator vol of ["", "", server, share] => server <> "" andalso share <> "" | _ => false else false else (* Posix. The volume must always be empty. *) fn {vol = "", ...} => true | _ => false (* We only return an empty arcs list if the argument is the empty string. *) fun fromString "" = {isAbs = false, vol = "", arcs=[]} | fromString (s: string) = let (* Do we have a volume name? *) val {volLen, vol, abs, root, ...} = matchVolumePrefix s (* The remainder forms a set of arcs. *) val rest = String.extract(s, volLen, NONE) val arcs = String.fields isSeparator rest (* If it begins with the Windows \ without a drive we need to add an extra empty arc. Otherwise we can't distinguish \a from a. *) val allArcs = if root andalso not abs then "" :: arcs else arcs in {isAbs = abs, vol = vol, arcs=allArcs} end (* Note: This is a mess as well. For example it says that it should raise Path if there is a relative path which begins with an empty arc. That's only true in Unix. What it should say is that it if isAbs is false then it should raise Path if the resulting path has the form of an absolute path. In Windows we should raise path if given (e.g.) {isAbs=false, vol="", arcs=["", "", "a", "b"]} because that looks like a UNC name. *) fun toString {isAbs : bool, vol : string, arcs : string list} = (* Check we have a valid volume. *) if not (validVolume{isAbs=isAbs, vol=vol}) then raise Path (* Check that each arc is valid. *) else if List.exists (fn s => not (isValidArc s)) arcs then raise InvalidArc else let (* Place separators between each arc. *) fun arcsToLinks [] = [] | arcsToLinks [a] = [a] | arcsToLinks (a::b) = a :: separator :: arcsToLinks b fun makePrefix(vol, false) = vol | makePrefix(vol, true) = vol ^ separator val r = String.concat(makePrefix(vol, isAbs) :: arcsToLinks arcs) (* Check to see whether we have turned a relative path into an absolute one by including empty arcs in the wrong places. *) val {abs = nowAbs, ...} = matchVolumePrefix r in if nowAbs <> isAbs then raise Path else r end (* Note: this is just defined to "return the volume portion" but doesn't say what to do if there isn't a volume. Seems simplest to define it as below. *) fun getVolume s = #vol(fromString s) (* Note: Once again this has very much a Unix view of the world, most of which almost works in Windows. I think the idea is that if possible it replaces the path with the path to the containing directory. If we're in the root directory we get the root directory. If we're in a path that ends with a component *) fun getParent "" = parentArc | getParent s = let val len = String.size s val {volLen, ...} = matchVolumePrefix s (* Split it at the last separator. *) val (prefix, suffix) = Substring.splitr (fn c => not (isSeparator c)) (Substring.full s) in if volLen = len then s (* We have a root. *) else if Substring.size suffix = 0 then (* If the last character is a separator just add on the parent arc (..) to refer to the parent directory. I don't know why we can't just remove the last component in this case but the examples don't do that. The only special case is where we have reached the root when we just return the root. *) s ^ parentArc else if Substring.size prefix = 0 then (* No separator at all *) ( if s = parentArc (* .. => ../.. *) then parentArc ^ (separator) ^ parentArc else if s = currentArc then parentArc (* . => .. *) else currentArc (* abc => . *) ) else if Substring.size prefix = volLen (* ??? If the prefix matches the volume then return the whole of prefix including the separator. *) then Substring.string prefix else (* Return the prefix with the separator removed. *) Substring.string(Substring.trimr 1 prefix) end (* Another mess defined in terms of examples for Unix from which one is expected to infer a general rule. It seems to split the string at the last separator and return the two halves without the separator except in the case where the directory is a root directory when a full volume name and separator are given. *) fun splitDirFile s = let (* Split it at the last separator. *) val (prefix, suffix) = Substring.splitr (fn c => not (isSeparator c)) (Substring.full s) val {volLen, vol, ...} = matchVolumePrefix s val dirName = case Substring.size prefix of 0 => "" | 1 => Substring.string prefix (* Special case of Windows \a. *) | _ => Substring.string(Substring.trimr 1 prefix) and fileName = Substring.string suffix in if volLen <> 0 andalso vol = dirName then {dir = vol ^ separator, file = fileName} else {dir = dirName, file = fileName} end fun dir s = #dir(splitDirFile s) and file s = #file(splitDirFile s) (* Question: It seems from the definition of toString that the arcs list can include separators. Is that true here? Assume yes. *) (* If the last character is already a separator we don't add one, e.g. if the directory is "/". *) fun joinDirFile{dir, file} = if not (isValidArc file) then raise InvalidArc else if dir = "" then file (* Return the file name unchanged *) else if isSeparator(String.sub(dir, size dir - 1)) then dir ^ file else dir ^ separator ^ file fun splitBaseExt s = let val slen = String.size s fun getExt n = if n <= 0 then NONE (* If it's at the start ignore it. *) else if isSeparator(String.sub(s, n)) then NONE else if String.sub(s, n) = #"." then (* Found a dot. *) ( if n = slen-1 then NONE (* Dot in last position. *) else if isSeparator(String.sub(s, n-1)) then NONE (* Dot immediately after separator. *) else SOME n ) else getExt (n-1) val extPos = getExt(slen - 1) in case extPos of NONE => {base=s, ext=NONE} | SOME n => {base=String.substring(s, 0, n), ext=SOME(String.substring(s, n+1, slen-n-1))} end fun joinBaseExt {base : string, ext = NONE} = base | joinBaseExt {base : string, ext = SOME ""} = base | joinBaseExt {base : string, ext = SOME ext} = base ^ "." ^ ext fun base s = #base(splitBaseExt s) and ext s = #ext(splitBaseExt s) val emptyArcIsRedundant = true fun mkCanonical s = let val {isAbs, vol, arcs} = fromString s fun collapse [] = [] | collapse (a :: b) = (* Work down the list removing currentArc entries and null entries (if the OS treats them as redundant).. *) if a = currentArc orelse (emptyArcIsRedundant andalso a = "") then collapse b (* Then work back up it removing parentArc entries. *) else case collapse b of [] => [a] | b' as (x :: y) => if x = parentArc andalso not (a = parentArc) then (* Remove "a" and "x". *) y else a :: b' val collapsed = collapse arcs (* If this is the root we can remove leading occurrences of the parent arc since the parent of the root is the root. *) fun removeLeadingParent [] = [] | removeLeadingParent (a::b) = if a = parentArc then removeLeadingParent b else a::b val newArcs = if isAbs then removeLeadingParent collapsed else collapsed val res = toString{isAbs=isAbs, vol=vol, arcs=newArcs} in (* Finally replace the empty string with "." and map to lower case if it's not case sensitive. *) if res = "" then currentArc else toCanonicalCase res end fun isCanonical s = mkCanonical s = s handle Path => false fun isAbsolute s = #isAbs(fromString s) and isRelative s = not(#isAbs(fromString s)) (* Concatenate two paths. The second must be relative and, if it contains a volume name, refer to the same volume as the first. *) fun concat(s, t) = let val {isAbs=absS, vol=volS, arcs=ArcsS} = fromString s val {isAbs=absT, vol=volT, arcs=ArcsT} = fromString t (* Concatenate the two lists of arcs except that a trailing empty arc on the first path is removed (i.e. concat("a/", "b") is the same as concat("a", "b") *) fun concatArcs [] p = p | concatArcs [a] p = if a = "" then p else a :: p | concatArcs (a::b) p = a :: concatArcs b p in if absT then raise Path else if volT <> "" andalso not(equivalent(volS, volT)) then raise Path else if #root(matchVolumePrefix t) (* Special case for Windows. concat("c:\\abc\\def", "\\xyz") is "c:\\xyz". *) then let (* Because this a relative path we have an extra empty arc here. *) val ArcsT' = case ArcsT of "" :: a => a | a => a in toString{isAbs=absS, vol=volS, arcs=ArcsT'} end else toString{isAbs=absS, vol=volS, arcs=concatArcs ArcsS ArcsT} end (* Make an absolute path by treating a relative path as relative to a given path. *) fun mkAbsolute {path, relativeTo} = let val {isAbs=absP, vol=volP, ...} = fromString path val {isAbs=absRT, vol=volRT, ...} = fromString relativeTo in if absP then path else if not absRT then raise Path (* If the path contained a volume it must be the same as the absolute path. *) else if volP <> "" andalso not(equivalent(volP, volRT)) then raise Path else mkCanonical(concat(relativeTo, path)) end (* Make a relative path by treating an absolute path as derived from a given other absolute path. *) fun mkRelative {path, relativeTo} = case fromString path of {isAbs=false, ...} => path (* Already relative *) | {vol=volP, arcs=arcsP, ...} => let val {isAbs=absRT, vol=volRT, arcs=arcsRT} = fromString (mkCanonical relativeTo) (* Add as many parent arcs as there are arcs in the path. *) fun addParents [] p = p | addParents (_::b) p = parentArc :: addParents b p fun matchPaths [] [] = [currentArc] (* Both equal *) | matchPaths p [] = (* Absolute path is finished - return p *) p | matchPaths [] r = (* Relative paths finished - add parent arcs *) addParents r [] | matchPaths (p :: p') (r :: r') = (* Are they the same arc? Note: When arcs are case insensitive I'm doing a case insensitive match here. *) if equivalent(p, r) then matchPaths p' r' else addParents (r :: r') (p :: p') (* We have a special case with the root directory (/ on Unix or c:\\ on Windows). In that case fromString returns a single empty arc and we want to remove it here otherwise we can end up with an empty arc in addParents. *) val arcsP' = case arcsP of [""] => [] | _ => arcsP val arcsRT' = case arcsRT of [""] => [] | _ => arcsRT in if not absRT then raise Path (* If the path contained a volume it must be the same as the absolute path. *) else if volP <> "" andalso not(equivalent(volP, volRT)) then raise Path else toString{isAbs=false, vol="", arcs=matchPaths arcsP' arcsRT'} end (* Another badly defined function. What is a root? Does it have to specify a volume or is \ a root in Windows? Assume that it must be absolute. *) fun isRoot s = let val {volLen, abs, ...} = matchVolumePrefix s in abs andalso volLen = String.size s andalso isCanonical s end (* Question: there's no definition of what these functions mean. The crucial questions are how to deal with volume names and also how to deal with symbols in the paths which may be invalid (e.g. path separators) in one or other system. For instance "a\b" is a valid file name in Unix and 31/3/2000 is valid in MacOS. Are they supposed to represent the original file system in some way? *) fun toUnixPath s = let (* We may have occurrences of "/" in the arcs if that is not a separator on this OS. Replace them by this machine's separator. *) fun mapArc a = if a = currentArc then "." else if a = parentArc then ".." else a fun mapArcs [] = [] | mapArcs [a] = [mapArc a] | mapArcs (a::b) = mapArc a :: "/" :: mapArcs b val {isAbs, vol, arcs} = fromString s val volArc = if vol <> "" then vol :: arcs else arcs val sl = String.concat(mapArcs volArc) in if String.size sl = 0 then "" else if isAbs then if String.sub(sl, 0) <> #"/" then "/" ^ sl else sl else (* not abs *) if String.sub(sl, 0) = #"/" then "." ^ sl else sl end fun fromUnixPath s = let val arcs = String.fields (fn ch => ch = #"/") s (* Turn any occurrences of this OS's separator into / since that can't occur within an arc. *) val convArc = String.translate ( fn ch => if isSeparator ch then "/" else String.str ch) val convArcs = List.map convArc arcs in case convArcs of [] => "" | ("" :: a :: rest) => let (* We had a leading / : is the first arc a volume name? *) val {volLen = n, vol, ...} = matchVolumePrefix a in if n = String.size a then (* We have a volume name. *) toString{isAbs=true, vol=vol, arcs=rest} else toString{isAbs=true, vol="", arcs=convArcs} end | (a :: rest) => let (* May be a relative volume name. *) val {volLen = n, vol, ...} = matchVolumePrefix a in if n = String.size a then toString{isAbs=false, vol=vol, arcs=rest} else toString{isAbs=false, vol="", arcs=convArcs} end end end (* Path *) structure FileSys:> OS_FILE_SYS = struct type dirFd = int (* The directory stream consists of the stream identifier returned by openDir together with the original directory name. We need that for rewind in Windows. *) datatype dirstream = DIR of dirFd * string local val doIo: int*unit*string -> dirFd = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun openDir (s : string): dirstream = DIR(doIo(50, (), s), s) end local val doIo: int*dirFd*unit -> string = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun readDir (DIR(d, _)): string option = let (* This returns the empty string at end-of-stream. *) val s = doIo(51, d, ()) in if s = "" then NONE else SOME s end end local val doIo: int*dirFd*unit -> unit = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun closeDir(DIR(d, _)) = doIo(52, d, ()) end local val doIo: int*dirFd*string -> unit = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* We need to pass in the string because Windows has to reopen the stream. *) fun rewindDir(DIR(d, s)) = doIo(53, d, s) end val chDir: string -> unit = RunCall.rtsCallFull1 "PolyChDir" local val doIo: int*unit*unit -> string = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Return current directory. *) fun getDir() = doIo(54, (), ()) (* Get a temporary file name. *) fun tmpName() = doIo(67, (), ()) end local val doIo: int*unit*string -> unit = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Create and delete directories and remove a file. *) fun mkDir s = doIo(55, (), s) and rmDir s = doIo(56, (), s) and remove s = doIo(64, (), s) end local val doIo: int*unit*string -> bool = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Test for directory and symbolic link. *) fun isDir s = doIo(57, (), s) and isLink s = doIo(58, (), s) end local val doIo: int*unit*string -> string = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Read a symbolic link. *) fun readLink s = doIo(59, (), s) (* Get a full canonical path name. *) and fullPath s = doIo(60, (), s) end local val doIo: int*unit*string -> Time.time = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Get file modification time. *) fun modTime s = doIo(61, (), s) end local val doIo: int*unit*string -> Position.int (* This can be larger than 32-bits. *) = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Get file size. *) fun fileSize s = doIo(62, (), s) end local val doIo: int*string*Time.time -> unit = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Get file size. *) fun setTime(s, NONE) = doIo(63, s, Time.now()) | setTime(s, SOME t) = doIo(63, s, t) end local val doIo: int*string*string -> unit = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Rename a file. *) fun rename {old, new} = doIo(65, old, new) end datatype access_mode = A_READ | A_WRITE | A_EXEC local val doIo: int*string*word -> bool = RunCall.rtsCallFull3 "PolyBasicIOGeneral" fun mapAccess (A_READ, m) = Word.orb(m, 0w1) | mapAccess (A_WRITE, m) = Word.orb(m, 0w2) | mapAccess (A_EXEC, m) = Word.orb(m, 0w4) in (* Get access rights. *) fun access (s, m) = doIo(66, s, List.foldl mapAccess 0w0 m) end (* file_id seems to be intended to reflect the semantics of a Unix inode. That concept doesn't exist in Windows so we use a canonical file name instead. *) datatype file_id = INODE of LargeInt.int | FILENAME of string fun compare(INODE i, INODE j) = LargeInt.compare(i, j) | compare(FILENAME s, FILENAME t) = String.compare(s, t) | (* These cases shouldn't happen but we'll define them anyway. *) compare(INODE _, FILENAME _) = General.GREATER | compare(FILENAME _, INODE _) = General.LESS (* TODO: The hash function is supposed to well distribute the the values when taken modulo 2^n for any n. I'm sure we can come up with something better than this. *) fun hash(INODE i) = let open Word infix xorb << val w = Word.fromLargeInt i in w xorb (w << 0w8) xorb (w << 0w16) xorb (w << 0w24) end | hash(FILENAME s) = (* Simple hash function which multiplies the accumulator by 7 and adds in the next character. *) CharVector.foldl (fn(c, a) => a * 0w7 + Word.fromInt(Char.ord c)) 0w0 s local val doIo: int*unit*string -> LargeInt.int = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Get file id (inode). Returns negative value if inodes aren't supported. *) fun fileId s = let val i = doIo(68, (), s) in if i < 0 then FILENAME(fullPath s) else INODE i end end fun realPath p = if Path.isAbsolute p then fullPath p else Path.mkRelative{path=fullPath p, relativeTo=fullPath(getDir())} end (* FileSys *) structure IO :> OS_IO = struct datatype iodesc = IODESC of int (* Actually abstract. This isn't the file descriptor itself, rather a pointer into the io table. *) local val doIo: int*iodesc*unit -> int = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in (* Get underlying index. *) fun getIndex f = doIo(69, f, ()) end (* TODO: The hash function is supposed to well distribute the the values when taken modulo 2^n for any n. I'm sure we can come up with something better than this. *) fun hash (i: iodesc) : word = let open Word infix xorb << val w = Word.fromInt(getIndex i) in w xorb (w << 0w8) xorb (w << 0w16) xorb (w << 0w24) end fun compare(i, j) = Int.compare(getIndex i, getIndex j) (* eq *)type iodesc_kind = int structure Kind = struct val file : iodesc_kind = 0 val dir : iodesc_kind = 1 val symlink : iodesc_kind = 2 val tty : iodesc_kind = 3 val pipe : iodesc_kind = 4 val socket : iodesc_kind = 5 val device : iodesc_kind = 6 end local val doIo: int*iodesc*int -> int = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun kind (i: iodesc): iodesc_kind = let val k = doIo(21, i, 0) in (* Returns a negative number if the call fails, otherwise one of the above numbers. *) if k < 0 orelse k > 6 then raise SysErr("Invalid result", NONE) else k end end (* The poll descriptor and the result of polling is a bit map together with the io descriptor. *) val inBit = 0w1 and outBit = 0w2 and priBit = 0w4 (* N.B. The implementation of poll_desc is hard-wired into Socket.pollDesc. *) type poll_desc = word*iodesc datatype poll_info = PI of word*poll_desc local val doIo: int*iodesc*int -> word = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_poll_test(i: iodesc) = doIo(22, i, 0) end local val doIo: int*int* (iodesc Vector.vector * word Vector.vector * Time.time) -> word Vector.vector = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_poll_block(iov, wv) = doIo(23, 0, (iov, wv, Time.zeroTime)) fun sys_poll_poll(iov, wv) = doIo(25, 0, (iov, wv, Time.zeroTime)) and sys_poll_wait (iov, wv, t) = doIo(24, 0, (iov, wv, t)) end fun pollDesc (i: iodesc): poll_desc option = (* If the poll test returns zero then polling is not allowed for any mode. *) if sys_poll_test i = 0w0 then NONE else SOME(0w0, i) fun pollToIODesc(_, i): iodesc = i exception Poll (* Add the appropriate bit to the set if it is allowed. *) local fun addBit b ((bm, i)) = if Word.andb(sys_poll_test i, b) = 0w0 then raise Poll else (Word.orb(bm, b), i) in val pollIn = addBit inBit and pollOut = addBit outBit and pollPri = addBit priBit end fun poll (l : poll_desc list, t: Time.time Option.option) : poll_info list = let (* The original poll descriptor list may contain multiple occurrences of the same IO descriptor with the same or different flags. On Cygwin, at least, passing this directly produces funny results so we transform the request so that we make at most one request for each descriptor. *) local fun quickSort _ ([]:'a list) = [] | quickSort _ ([h]:'a list) = [h] | quickSort (leq:'a -> 'a -> bool) ((h::t) :'a list) = let val (after, befor) = List.partition (leq h) t in quickSort leq befor @ (h :: quickSort leq after) end; fun leqPoll((p1, f1): poll_desc) ((p2, f2): poll_desc) = case compare(f1, f2) of EQUAL => p1 <= p2 | LESS => true | GREATER => false fun merge ((p1, f1) :: (p2, f2) :: rest) = if compare(f1, f2) = EQUAL then merge((Word.orb(p1, p2), f1) :: rest) else (p1, f1) :: merge((p2, f2) :: rest) | merge c = c val sortedDescs = quickSort leqPoll l in val mergedDescs = merge sortedDescs end (* Turn the list into vectors of io descriptors and request bits - easier for the RTS to manage. N.B. This assumes that Vector.vector creates a simple memory vector and does not wrap it in any way. *) local val (bits, ioDescs) = ListPair.unzip mergedDescs in val bitVector: word Vector.vector = Vector.fromList bits and ioVector: iodesc Vector.vector = Vector.fromList ioDescs end (* Do the actual polling. Returns a vector with bits set for the results. *) val resV: word Vector.vector = case t of NONE => sys_poll_block(ioVector, bitVector) | SOME tt => let open Time in if tt = Time.zeroTime then sys_poll_poll(ioVector, bitVector) else if tt < Time.zeroTime (* Must check for negative times since these can be interpreted as infinity. *) then raise SysErr("Invalid time", NONE) (* For non-zero times we convert this to a number of milliseconds since the current time. We have to pass in an absolute time rather than a relative time because the RTS may retry this call if the polled events haven't happened. *) else sys_poll_wait(ioVector, bitVector, tt + Time.now()) end (* Process the original list to see which items are present, retaining the original order. *) fun testResults(request as (bits, iod), tl) = let val (index, _) = (* Find the IO descriptor. It must be there somewhere. *) valOf(Vector.findi (fn (_, iod1) => compare(iod, iod1) = EQUAL) ioVector) (* The result is in the corresponding index position. We need to AND this with the request because we could have separate requests asking for different bits for the same file descriptor. *) val result = Word.andb(bits, Vector.sub(resV, index)) in if result = 0w0 then tl else PI(result, request) :: tl end in List.foldl testResults [] l end fun isIn(PI(b, _)) = Word.andb(b, inBit) <> 0w0 and isOut(PI(b, _)) = Word.andb(b, outBit) <> 0w0 and isPri(PI(b, _)) = Word.andb(b, priBit) <> 0w0 fun infoToPollDesc (PI(_, pd)) = pd end (* IO *) structure Process:> OS_PROCESS = struct type status = int local val doCall: int*unit -> int = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in val success = doCall(15, ()) and failure = doCall(16, ()) end fun isSuccess i = i = success local val doCall: int*string -> status = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in (* Run a process and wait for the result. *) fun system s = doCall(17, s) end local val doCall: int*(unit->unit) -> unit = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in (* Register a function to be run at exit. *) fun atExit f = doCall(18, f) end local (* exit - supply result code and close down all threads. *) val doExit: int -> unit = RunCall.rtsCallFull1 "PolyFinish" val doCall: int*unit -> (unit->unit) = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in fun exit (n: int) = let (* Get a function from the atExit list. If that list is empty it will raise an exception and we've finished. *) val exitFun = doCall(19, ()) handle _ => (doExit n; fn () => ()) in (* Run the function and then repeat. *) exitFun() handle _ => (); (* Ignore exceptions in the function. *) exit(n) end end (* Terminate without running the atExit list or flushing the buffers. We raise an exception to get the type right. *) local val doCall: int -> unit = RunCall.rtsCallFull1 "PolyTerminate" in fun terminate n = (doCall n; raise Fail "never") end local val doCall: int*string -> string = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" in (* Get an environment string. The underlying call raises an exception if the string isn't there. *) fun getEnv s = SOME(doCall(14, s)) handle RunCall.SysErr _ => NONE end (* poll is implemented so that an empty list simply waits for the time. *) fun sleep t = (IO.poll([], SOME t); ()) end (* Process. *) end; local (* Install the pretty printer for OS.IO.Kind and OS.syserror. *) fun kind_string k = if k = OS.IO.Kind.file then "file" else if k = OS.IO.Kind.dir then "dir" else if k = OS.IO.Kind.symlink then "symlink" else if k = OS.IO.Kind.tty then "tty" else if k = OS.IO.Kind.pipe then "pipe" else if k = OS.IO.Kind.socket then "socket" else if k = OS.IO.Kind.device then "device" else "unknown" fun printKind _ _ x = PolyML.PrettyString(kind_string x) fun printSysError _ _ x = PolyML.PrettyString(OS.errorName x) (* For the moment just make these opaque. *) fun printPollDesc _ _ (_: OS.IO.poll_desc) = PolyML.PrettyString "?" and printPollInfo _ _ (_: OS.IO.poll_info) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter printKind val () = PolyML.addPrettyPrinter printSysError val () = PolyML.addPrettyPrinter printPollDesc val () = PolyML.addPrettyPrinter printPollInfo end polyml-5.7.1/basis/Windows.sml0000644000175000017500000006076113204034553015261 0ustar daviddavid(* Title: Standard Basis Library: Windows signature and structure Author: David Matthews Copyright David Matthews 2000, 2005, 2012 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature WINDOWS = sig structure Key : sig include BIT_FLAGS val allAccess : flags val createLink : flags val createSubKey : flags val enumerateSubKeys : flags val execute : flags val notify : flags val queryValue : flags val read : flags val setValue : flags val write : flags end structure Reg : sig eqtype hkey val classesRoot : hkey val currentUser : hkey val localMachine : hkey val users : hkey val performanceData : hkey val currentConfig : hkey val dynData : hkey datatype create_result = CREATED_NEW_KEY of hkey | OPENED_EXISTING_KEY of hkey val createKeyEx : hkey * string * Key.flags -> create_result val openKeyEx : hkey * string * Key.flags -> hkey val closeKey : hkey -> unit val deleteKey : hkey * string -> unit val deleteValue : hkey * string -> unit val enumKeyEx : hkey * int -> string option val enumValue : hkey * int -> string option datatype value = SZ of string | DWORD of SysWord.word | BINARY of Word8Vector.vector | MULTI_SZ of string list | EXPAND_SZ of string val queryValueEx : hkey * string -> value option val setValueEx : hkey * string * value -> unit end structure Config: sig val platformWin32s : SysWord.word val platformWin32Windows : SysWord.word val platformWin32NT : SysWord.word val platformWin32CE : SysWord.word val getVersionEx: unit -> { majorVersion: SysWord.word, minorVersion: SysWord.word, buildNumber: SysWord.word, platformId: SysWord.word, csdVersion: string } val getWindowsDirectory: unit -> string val getSystemDirectory: unit -> string val getComputerName: unit -> string val getUserName: unit -> string end structure DDE : sig type info val startDialog : string * string -> info val executeString : info * string * int * Time.time -> unit val stopDialog : info -> unit end val getVolumeInformation : string -> { volumeName : string, systemName : string, serialNumber : SysWord.word, maximumComponentLength : int } val findExecutable : string -> string option val launchApplication : string * string -> unit val openDocument : string -> unit val simpleExecute : string * string -> OS.Process.status type ('a,'b) proc val execute : string * string -> ('a, 'b) proc val textInstreamOf : (TextIO.instream, 'a) proc -> TextIO.instream val binInstreamOf : (BinIO.instream, 'a) proc -> BinIO.instream val textOutstreamOf : ('a, TextIO.outstream) proc -> TextIO.outstream val binOutstreamOf : ('a, BinIO.outstream) proc -> BinIO.outstream val reap : ('a, 'b) proc -> OS.Process.status structure Status : sig type status = SysWord.word val accessViolation : status val arrayBoundsExceeded : status val breakpoint : status val controlCExit : status val datatypeMisalignment : status val floatDenormalOperand : status val floatDivideByZero : status val floatInexactResult : status val floatInvalidOperation : status val floatOverflow : status val floatStackCheck : status val floatUnderflow : status val guardPageViolation : status val integerDivideByZero : status val integerOverflow : status val illegalInstruction : status val invalidDisposition : status val invalidHandle : status val inPageError : status val noncontinuableException: status val pending : status val privilegedInstruction : status val singleStep : status val stackOverflow : status val timeout : status val userAPC : status end val fromStatus : OS.Process.status -> Status.status val exit : Status.status -> 'a end structure Windows :> WINDOWS = struct local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun getConst i = SysWord.fromInt(winCall (1006, i)) end structure Key = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val allAccess : flags = getConst 0 val createLink : flags = getConst 1 val createSubKey : flags = getConst 2 val enumerateSubKeys : flags = getConst 3 val execute : flags = getConst 4 val notify : flags = getConst 5 val queryValue : flags = getConst 6 val read : flags = getConst 7 val setValue : flags = getConst 8 val write : flags = getConst 9 (* all is probably equivalent to allAccess. *) val all = flags[allAccess, createLink, createSubKey, enumerateSubKeys, execute, notify, queryValue, read, setValue, write] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end structure Reg = struct datatype hkey = PREDEFINED of int | SUBKEY of int (* Actually abstract. *) val classesRoot = PREDEFINED 0 val currentUser = PREDEFINED 1 val localMachine = PREDEFINED 2 val users = PREDEFINED 3 val performanceData = PREDEFINED 4 val currentConfig = PREDEFINED 5 val dynData = PREDEFINED 6 datatype create_result = CREATED_NEW_KEY of hkey | OPENED_EXISTING_KEY of hkey datatype value = SZ of string | DWORD of SysWord.word | BINARY of Word8Vector.vector | MULTI_SZ of string list | EXPAND_SZ of string local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" (* Open one of the root keys. *) (* QUESTION: Why is this an option? The definition asks the same question. I've removed the option type. *) fun openRoot args = SUBKEY(winCall(1007, args)) (* Open a sub-key. *) and openSubKey args = SUBKEY(winCall(1008, args)) in fun openKeyEx(PREDEFINED i, s, f) = openRoot(i, s, SysWord.toInt f) | openKeyEx(SUBKEY i, s, f) = openSubKey(i, s, SysWord.toInt f) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" fun pairToResult (0, k) = CREATED_NEW_KEY (SUBKEY k) | pairToResult (_, k) = OPENED_EXISTING_KEY (SUBKEY k) (* Open one of the root keys. *) fun createRoot args = pairToResult(winCall(1009, args)) (* Open a sub-key. *) and createSubKey args = pairToResult(winCall(1010, args)) in (* I've retained the third argument in this interface which used to be used for VOLATILE (1) or NON_VOLATILE (0). Keys are now always non-volatile. *) fun createKeyEx(PREDEFINED i, s, f) = createRoot(i, s, 0, SysWord.toInt f) | createKeyEx(SUBKEY i, s, f) = createSubKey(i, s, 0, SysWord.toInt f) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in (* TODO: We wouldn't normally expect to close a predefined key but it looks as though we might have to be able to close HKEY_PERFORMANCE_DATA. *) fun closeKey(PREDEFINED _) = () | closeKey(SUBKEY i) = winCall(1011, i) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" fun unpackString v = let val len = Word8Vector.length v in if len = 0 then "" else Byte.unpackStringVec(Word8VectorSlice.slice(v, 0, SOME(len -1))) end fun unpackStringList v = let val len = Word8Vector.length v fun unpack start i = if i >= len orelse Word8Vector.sub(v, i) = 0w0 then if i = start then [] else Byte.unpackStringVec(Word8VectorSlice.slice(v, start, SOME(i - start))) :: unpack (i+1) (i+1) else unpack start (i+1) in unpack 0 0 end fun queryResultToValues(t, v) = (* Decode the type code and the value. Strings are null terminated so the last character must be removed. *) case t of 1 => SZ(unpackString v) | 4 => DWORD(PackWord32Little.subVec(v, 0)) | 2 => EXPAND_SZ(unpackString v) | 7 => MULTI_SZ(unpackStringList v) | _ => BINARY v val errorFileNotFound = valOf(OS.syserror "ERROR_FILE_NOT_FOUND") in (* The queryValue functions simply return a type and a vector of bytes. The type code is decoded and the bytes unpacked appropriately. *) fun queryValueEx(key, s) = SOME(queryResultToValues( case key of PREDEFINED i => winCall(1012, (i, s)) | SUBKEY i => winCall(1013, (i, s)) )) handle ex as OS.SysErr(_, SOME err) => if err = errorFileNotFound then NONE else raise ex end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun deleteValue(PREDEFINED i, s) = (winCall(1022, (i, s))) | deleteValue(SUBKEY i, s) = (winCall(1023, (i, s))) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" fun packString s = let val len = String.size s val arr = Word8Array.array(len+1, 0w0) in Byte.packString(arr, 0, Substring.full s); Word8Array.vector arr end fun packStringList sl = let (* The string list is packed as a set of null-terminated strings with a final null at the end. *) (* TODO: Check for nulls in the strings themselves? *) fun totalSize n [] = n | totalSize n (s::sl) = totalSize (n + String.size s + 1) sl val len = totalSize 1 sl val arr = Word8Array.array(len, 0w0) fun pack _ [] = () | pack n (s::sl) = ( Byte.packString(arr, n, Substring.full s); pack (n + String.size s + 1) sl ) in pack 0 sl; Word8Array.vector arr end fun valuesToTypeVal(SZ s) = (1, packString s) | valuesToTypeVal(EXPAND_SZ s) = (2, packString s) | valuesToTypeVal(BINARY s) = (3, s) | valuesToTypeVal(DWORD n) = let (* Pack the 32 bit value into an array, then extract that. *) val arr = Word8Array.array(4, 0w0) in PackWord32Little.update(arr, 0, n); (4, Word8Array.vector arr) end | valuesToTypeVal(MULTI_SZ s) = (7, packStringList s) in fun setValueEx(key, name, v) = let val (t, s) = valuesToTypeVal v val (call, k) = case key of PREDEFINED i => (1016, i) | SUBKEY i => (1017, i) in (winCall(call, (k, name, t, s))) end end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun enumKeyEx(PREDEFINED i, n) = (winCall(1018, (i, n))) | enumKeyEx(SUBKEY i, n) = (winCall(1019, (i, n))) fun enumValue(PREDEFINED i, n) = (winCall(1020, (i, n))) | enumValue(SUBKEY i, n) = (winCall(1021, (i, n))) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" (* In Windows NT RegDeleteKey will fail if the key has subkeys. To give the same behaviour in both Windows 95 and NT we have to recursively delete any subkeys. *) fun basicDeleteKey(PREDEFINED i, s) = (winCall(1014, (i, s))) | basicDeleteKey(SUBKEY i, s) = (winCall(1015, (i, s))) in fun deleteKey(k, s) = let val sk = openKeyEx(k, s, Key.enumerateSubKeys) fun deleteSubKeys () = case enumKeyEx(sk, 0) of NONE => () | SOME name => (deleteKey(sk, name); deleteSubKeys()) in deleteSubKeys() handle exn => (closeKey sk; raise exn); closeKey sk; basicDeleteKey(k, s) end end end structure DDE = struct type info = int (* Actually abstract. *) local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun startDialog (service, topic) = winCall(1038, (service, topic)) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in (* The timeout and retry count apply only in the case of a busy result. The Windows call takes a timeout parameter as the length of time to wait for a response and maybe we should use it for that as well. *) fun executeString (info, cmd, retry, delay) = let fun try n = if winCall(1039, (info, cmd)) then () (* Succeeded. *) else if n = 0 then raise OS.SysErr("DDE Server busy", NONE) else ( OS.IO.poll([], SOME delay); try (n-1) ) in try retry end end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun stopDialog (info) = winCall(1040, info) end end (* DDE *) (* No (longer?) in Basis library local val winCall = RunCall.run_call2 POLY_SYS_os_specific in fun fileTimeToLocalFileTime t = winCall(1030, t) fun localFileTimeToFileTime t = winCall(1031, t) end *) local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun getVolumeInformation root = let val (vol, sys, serial, max) = winCall(1032, root) in { volumeName = vol, systemName = sys, serialNumber = SysWord.fromInt serial, maximumComponentLength = max } end end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun findExecutable s = SOME(winCall(1033, s)) handle OS.SysErr _ => NONE end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun openDocument s = winCall(1034, s) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun launchApplication (command, arg) = winCall(1035, (command, arg)) end abstype ('a,'b) proc = ABS of int with end; (* Run a process and return a proces object which will allow us to extract the input and output streams. *) local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun execute(command, arg): ('a,'b) proc = RunCall.unsafeCast(winCall (1000, (command, arg))) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_buffsize (strm: OS.IO.iodesc): int = doIo(15, strm, 0) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun textInstreamOf p = let (* Get the underlying file descriptor. *) val n = winCall (1001, RunCall.unsafeCast p) val textPrimRd = LibraryIOSupport.wrapInFileDescr {fd=n, name="TextPipeInput", initBlkMode=true} val streamIo = TextIO.StreamIO.mkInstream(textPrimRd, "") in TextIO.mkInstream streamIo end fun textOutstreamOf p = let val n = winCall (1002, RunCall.unsafeCast p) val buffSize = sys_get_buffsize n val textPrimWr = LibraryIOSupport.wrapOutFileDescr{fd=n, name="TextPipeOutput", appendMode=false, initBlkMode=true, chunkSize=buffSize} (* Construct a stream. *) val streamIo = TextIO.StreamIO.mkOutstream(textPrimWr, IO.LINE_BUF) in TextIO.mkOutstream streamIo end fun binInstreamOf p = let (* Get the underlying file descriptor. *) val n = winCall (1003, RunCall.unsafeCast p) val binPrimRd = LibraryIOSupport.wrapBinInFileDescr {fd=n, name="BinPipeInput", initBlkMode=true} val streamIo = BinIO.StreamIO.mkInstream(binPrimRd, Word8Vector.fromList []) in BinIO.mkInstream streamIo end fun binOutstreamOf p = let val n = winCall (1004, RunCall.unsafeCast p) val buffSize = sys_get_buffsize n val binPrimWr = LibraryIOSupport.wrapBinOutFileDescr{fd=n, name="BinPipeOutput", appendMode=false, initBlkMode=true, chunkSize=buffSize} (* Construct a stream. *) val streamIo = BinIO.StreamIO.mkOutstream(binPrimWr, IO.LINE_BUF) in BinIO.mkOutstream streamIo end end (* reap - wait until the process finishes and get the result. Note: this is defined to be able to return the result repeatedly. At present that's done by not closing the handle except in the garbage collector. That could cause us to run out of handles. *) local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun reap p = winCall (1005, RunCall.unsafeCast p) end local val winCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in (* Run a process and wait for the result. Rather than do the whole thing as a single RTS call we first start the process and then call "reap" to get the result. This allows this to be run as a separate ML process if necessary without blocking everything. This is similar to OS.Process.system but differs in that the streams are directed to NUL and this runs the executable directly, not via cmd.exe/command.com so cannot run DOS commands. OS.Process.system waits for the result within the RTS call so the whole of ML will be blocked until the process completes. *) fun simpleExecute (command, arg) = let val process = winCall(1037, (command, arg)) in reap process end end structure Status = struct type status = SysWord.word val accessViolation = getConst 10 val arrayBoundsExceeded = getConst 11 val breakpoint = getConst 12 val controlCExit = getConst 13 val datatypeMisalignment = getConst 14 val floatDenormalOperand = getConst 15 val floatDivideByZero = getConst 16 val floatInexactResult = getConst 17 val floatInvalidOperation = getConst 18 val floatOverflow = getConst 19 val floatStackCheck = getConst 20 val floatUnderflow = getConst 21 val guardPageViolation = getConst 22 val integerDivideByZero = getConst 23 val integerOverflow = getConst 24 val illegalInstruction = getConst 25 val invalidDisposition = getConst 26 val invalidHandle = getConst 27 val inPageError = getConst 28 (* This was given as nocontinuableException *) val noncontinuableException= getConst 29 val pending = getConst 30 val privilegedInstruction = getConst 31 val singleStep = getConst 32 val stackOverflow = getConst 33 val timeout = getConst 34 val userAPC = getConst 35 end (* The status is implemented as an integer. *) fun fromStatus (s: OS.Process.status): Status.status = SysWord.fromInt(RunCall.unsafeCast s); fun exit (s: Status.status) = OS.Process.exit(RunCall.unsafeCast(SysWord.toInt s)) structure Config = struct local val winCall: int*unit->int*int*int*int*string = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun getVersionEx () = let val (major, minor, build, platform, version) = winCall(1050, ()) in { majorVersion = SysWord.fromInt major, minorVersion = SysWord.fromInt minor, buildNumber = SysWord.fromInt build, platformId = SysWord.fromInt platform, csdVersion = version } end end local val winCall: int*unit->string = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun getWindowsDirectory () = winCall(1051, ()) and getSystemDirectory () = winCall(1052, ()) and getComputerName () = winCall(1053, ()) and getUserName () = winCall(1054, ()) end val platformWin32s = getConst 36 val platformWin32Windows = getConst 37 val platformWin32NT = getConst 38 val platformWin32CE = getConst 39 end end; local (* Add pretty printers to hide internals. *) fun prettyRegKey _ _ (_: Windows.Reg.hkey) = PolyML.PrettyString "?" and prettyDDEInfo _ _ (_: Windows.DDE.info) = PolyML.PrettyString "?" and prettyProc _ _ (_: ('a, 'b) Windows.proc) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyRegKey and () = PolyML.addPrettyPrinter prettyDDEInfo and () = PolyML.addPrettyPrinter prettyProc end; polyml-5.7.1/basis/ExnPrinter.sml0000644000175000017500000001237213204034553015720 0ustar daviddavid(* Title: Install a pretty printer for the exn type Author: David Matthews Copyright David Matthews 2009, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local open PolyML (* Print exception packet. Run-time system exceptions have to be processed specially because the IDs don't have printer functions. *) fun exnPrint depth _ exn = let val (exnId, exnName, exnArg, _) = RunCall.unsafeCast exn (* This parenthesis code is used in various places and probably should be centralised. *) fun parenthesise(s as PrettyBlock(_, _, _, [ _ ])) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("(")::_ ))) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("{")::_ ))) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("[")::_ ))) = s | parenthesise(s as PrettyBlock _) = PrettyBlock(3, true, [], [ PrettyString "(", s, PrettyString ")" ]) | parenthesise s = s (* String or Break *) fun nullaryException s = PrettyString s and parameterException(s, param) = PrettyBlock(1, false, [], [ PrettyString s, PrettyBreak(1, 1), parenthesise param ]) (* Use prettyRepresentation because this correctly quotes the string. *) fun stringException(s, arg: string) = parameterException(s, PolyML.prettyRepresentation(arg, depth-1)) in if RunCall.isShort exnId then case exn of RunCall.Conversion s => stringException(exnName, s) | Fail s => stringException(exnName, s) | RunCall.Foreign s => stringException(exnName, s) | RunCall.Thread s => stringException(exnName, s) | RunCall.XWindows s => stringException(exnName, s) | OS.SysErr param => parameterException("SysErr", if depth <= 1 then PrettyString "..." else PolyML.prettyRepresentation(param, depth-1)) | _ => (* Anything else is nullary. *) nullaryException exnName else ( (* Exceptions generated within ML contain a printer function. *) case !exnId of NONE => nullaryException exnName | SOME printFn => parameterException(exnName, printFn(exnArg, depth-1)) ) end in val () = addPrettyPrinter exnPrint end; (* Print a ref. Because refs can form circular structures we include a check for a loop here. *) local open PolyML (* If we have an expression as the argument we parenthesise it unless it is a simple string, a tuple, a record or a list. *) fun parenthesise(s as PrettyBlock(_, _, _, [ _ ])) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("(")::_ ))) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("{")::_ ))) = s | parenthesise(s as PrettyBlock(_, _, _, (PrettyString("[")::_ ))) = s | parenthesise(s as PrettyBlock _) = PrettyBlock(3, true, [], [ PrettyString "(", s, PrettyString ")" ]) | parenthesise s = s (* String or Break *) val printLimit: word ref list Universal.tag = Universal.tag() fun print_ref depth doArg (r as ref x) = if depth <= 0 then PrettyString "..." else let (* We keep a list in thread-local storage of refs we're currently printing. This is thread-local to avoid interference between different threads. *) val currentRefs = case Thread.Thread.getLocal printLimit of NONE => [] | SOME limit => limit val thisRef: word ref = RunCall.unsafeCast r in if List.exists(fn x => x = thisRef) currentRefs then PrettyString "..." (* We've already seen this ref. *) else ( (* Add this to the list. *) Thread.Thread.setLocal (printLimit, thisRef :: currentRefs); (* Print it and reset the list*) (PrettyBlock(3, false, [], [ PrettyString "ref", PrettyBreak(1, 0), parenthesise(doArg(x, depth-1)) ])) before (Thread.Thread.setLocal (printLimit, currentRefs)) ) handle exn => ( (* Reset the list if there's been an exception. *) Thread.Thread.setLocal (printLimit, currentRefs); raise exn ) end in val () = addPrettyPrinter print_ref end; polyml-5.7.1/basis/Thread.sml0000644000175000017500000010171113204034553015025 0ustar daviddavid(* Title: Thread package for ML. Author: David C. J. Matthews Copyright (c) 2007-2014 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This signature and structure are not part of the standard basis library but are included here because they depend on the Time structure and are in turn dependencies of the BasicIO structure. *) signature THREAD = sig exception Thread of string (* Raised if an operation fails. *) structure Thread: sig eqtype thread (* Thread attributes - This may be extended. *) datatype threadAttribute = (* Does this thread accept a broadcast interrupt? The default is not to accept broadcast interrupts. *) EnableBroadcastInterrupt of bool (* How to handle interrupts. The default is to handle interrupts synchronously. *) | InterruptState of interruptState (* Maximum size of the ML stack in words. NONE means unlimited *) | MaximumMLStack of int option and interruptState = InterruptDefer (* Defer any interrupts. *) | InterruptSynch (* Interrupts are delivered synchronously. An interrupt will be delayed until an interruption point. An interruption point is one of: testInterrupt, ConditionVar.wait, ConditionVar.waitUntil and various library calls that may block, such as IO calls, pause etc. N.B. Mutex.lock is not an interruption point even though it can result in a thread blocking for an indefinite period. *) | InterruptAsynch (* Interrupts are delivered asynchronously i.e. at a suitable point soon after they are triggered. *) | InterruptAsynchOnce (* As InterruptAsynch except that only a single interrupt is delivered asynchronously after which the interrupt state is changed to InterruptSynch. It allows a thread to tidy up and if necessary indicate that it has been interrupted without the risk of a second asynchronous interrupt occurring in the handler for the first interrupt. *) (* fork: Fork a thread. Starts a new thread running the function argument. The attribute list gives initial values for thread attributes which can be modified by the thread itself. Any unspecified attributes take default values. The thread is terminated when the thread function returns, if it raises an uncaught exception or if it calls "exit". *) val fork: (unit->unit) * threadAttribute list -> thread (* exit: Terminate this thread. *) val exit: unit -> unit (* isActive: Test if a thread is still running or has terminated. *) val isActive: thread -> bool (* Test whether thread ids are the same. No longer needed if this is an eqtype. *) val equal: thread * thread -> bool (* Get my own ID. *) val self: unit -> thread exception Interrupt (* = SML90.Interrupt *) (* Send an Interrupt exception to a specific thread. When and indeed whether the exception is actually delivered will depend on the interrupt state of the target thread. Raises Thread if the thread is no longer running, so an exception handler should be used unless the thread is known to be blocked. *) val interrupt: thread -> unit (* Send an interrupt exception to every thread which is set to accept it. *) val broadcastInterrupt: unit -> unit (* If this thread is handling interrupts synchronously, test to see if it has been interrupted. If so it raises the Interrupt exception. *) val testInterrupt: unit -> unit (* Terminate a thread. This should be used as a last resort. Normally a thread should be allowed to clean up and terminate by using the interrupt call. Raises Thread if the thread is no longer running, so an exception handler should be used unless the thread is known to be blocked. *) val kill: thread -> unit (* Get and set thread-local store for the calling thread. The store is a tagged associative memory which is initially empty for a new thread. A thread can call setLocal to add or replace items in its store and call getLocal to return values if they exist. The Universal structure contains functions to make new tags as well as injection, projection and test functions. *) val getLocal: 'a Universal.tag -> 'a option val setLocal: 'a Universal.tag * 'a -> unit (* Change the specified attribute(s) for the calling thread. Unspecified attributes remain unchanged. *) val setAttributes: threadAttribute list -> unit (* Get the values of attributes. *) val getAttributes: unit -> threadAttribute list (* Return the number of processors that will be used to run threads. *) val numProcessors: unit -> int (* and the number of physical processors if that is available. *) and numPhysicalProcessors: unit -> int option end structure Mutex: sig (* Mutexes. A mutex provides simple mutual exclusion. A thread can lock a mutex and until it unlocks it no other thread will be able to lock it. Locking and unlocking are intended to be fast in the situation when there is no other process attempting to lock the mutex. *) type mutex (* mutex: Make a new mutex *) val mutex: unit -> mutex (* lock: Lock a mutex. If the mutex is currently locked the thread is blocked until it is unlocked. If a thread tries to lock a mutex that it has previously locked the thread will deadlock. N.B. "lock" is not an interruption point (a point where synchronous interrupts are delivered) even though a thread can be blocked indefinitely. *) val lock: mutex -> unit (* unlock: Unlock a mutex and allow any waiting threads to run. The behaviour if the mutex was not previously locked by the calling thread is undefined. *) val unlock: mutex -> unit (* trylock: Attempt to lock the mutex. Returns true if the mutex was not previously locked and has now been locked by the calling thread. Returns false if the mutex was previously locked, including by the calling thread. *) val trylock: mutex -> bool (* These functions may not work correctly if an asynchronous interrupt is delivered during the calls. A thread should use synchronous interrupt when using these calls. *) end structure ConditionVar: sig (* Condition variables. Condition variables are used to provide communication between threads. A condition variable is used in conjunction with a mutex and usually a reference to establish and test changes in state. The normal use is for one thread to lock a mutex, test the reference and then wait on the condition variable, releasing the lock on the mutex while it does so. Another thread may then lock the mutex, update the reference, unlock the mutex, and signal the condition variable. This wakes up the first thread and reacquires the lock allowing the thread to test the updated reference with the lock held. More complex communication mechanisms, such as blocking channels, can be written in terms of condition variables. *) type conditionVar (* conditionVar: Make a new condition variable. *) val conditionVar: unit -> conditionVar (* wait: Release the mutex and block until the condition variable is signalled. When wait returns the mutex has been re-acquired. If thread is handling interrupts synchronously a call to "wait" may cause an Interrupt exception to be delivered. (The implementation must ensure that if an Interrupt is delivered as well as signal waking up a single thread that the interrupted thread does not consume the "signal".) The mutex is (re)acquired before Interrupt is delivered. *) val wait: conditionVar * Mutex.mutex -> unit (* waitUntil: As wait except that it blocks until either the condition variable is signalled or the time (absolute) is reached. Either way the mutex is reacquired so there may be a further delay if it is held by another thread. *) val waitUntil: conditionVar * Mutex.mutex * Time.time -> bool (* signal: Wake up one thread if any are waiting on the condition variable. *) val signal: conditionVar -> unit (* broadcast: Wake up all threads waiting on the condition variable. *) val broadcast: conditionVar -> unit end end; structure Thread :> THREAD = struct exception Thread = RunCall.Thread (* Create non-overwritable mutables for mutexes and condition variables. A non-overwritable mutable in the executable or a saved state is not overwritten when a saved state further down the hierarchy is loaded. *) val nvref = LibrarySupport.noOverwriteRef structure Thread = struct open Thread (* Created in INITIALISE with thread type and self function. *) (* Equality is pointer equality. *) val equal : thread*thread->bool = op = datatype threadAttribute = EnableBroadcastInterrupt of bool | InterruptState of interruptState | MaximumMLStack of int option and interruptState = InterruptDefer | InterruptSynch | InterruptAsynch | InterruptAsynchOnce (* Convert attributes to bits and a mask. *) fun attrsToWord (at: threadAttribute list): Word.word * Word.word = let (* Check that a particular attribute appears only once. As well as accumulating the actual bits in the result we also accumulate the mask of bits. If any of these reappear we raise an exception. *) fun checkRepeat(r, acc, set, mask) = if Word.andb(set, mask) <> 0w0 then raise Thread "The same attribute appears more than once in the list" else convert(r, acc, Word.orb(set, mask)) and convert([], acc, set) = (acc, set) | convert(EnableBroadcastInterrupt true :: r, acc, set) = checkRepeat(r, Word.orb(acc, 0w1), set, 0w1) | convert(EnableBroadcastInterrupt false :: r, acc, set) = checkRepeat(r, acc (* No bit *), set, 0w1) | convert(InterruptState s :: r, acc, set) = checkRepeat(r, Word.orb(setIstateBits s, acc), set, 0w6) | convert(MaximumMLStack _ :: r, acc, set) = convert(r, acc, set) in convert(at, 0w0, 0w0) end and setIstateBits InterruptDefer = 0w0 | setIstateBits InterruptSynch = 0w2 | setIstateBits InterruptAsynch = 0w4 | setIstateBits InterruptAsynchOnce = 0w6 fun getIstateBits(w: Word.word): interruptState = let val ibits = Word.andb(w, 0w6) in if ibits = 0w0 then InterruptDefer else if ibits = 0w2 then InterruptSynch else if ibits = 0w4 then InterruptAsynch else InterruptAsynchOnce end fun wordToAttrs w = let (* Enable broadcast - true if bottom bit is set. *) val bcast = EnableBroadcastInterrupt(Word.andb(w, 0w1) = 0w1) in [bcast, InterruptState(getIstateBits w)] end exception Interrupt = RunCall.Interrupt (* The thread id is opaque outside this structure but is actually a six word mutable object. Word 0: Index into thread table (used inside the RTS only) Word 1: Flags: initialised by the RTS and set by this code Word 2: Thread local store: read and set by this code. Word 3: IntRequest: Set by the RTS if there is an interrupt pending Word 4: Maximum ML stack size. Unlimited is stored here as zero *) val threadIdFlags = 0w1 and threadIdThreadLocal = 0w2 and threadIdIntRequest = 0w3 and threadIdStackSize = 0w4 fun getLocal (t: 'a Universal.tag) : 'a option = let val root: Universal.universal ref list = RunCall.loadWord(self(), threadIdThreadLocal) fun doFind [] = NONE | doFind ((ref v)::r) = if Universal.tagIs t v then SOME(Universal.tagProject t v) else doFind r in doFind root end fun setLocal (t: 'a Universal.tag, newVal: 'a) : unit = let (* See if we already have this in the list. *) val root: Universal.universal ref list = RunCall.loadWord(self(), threadIdThreadLocal) fun doFind [] = (* Not in the list - Add it. *) RunCall.storeWord (self(), threadIdThreadLocal, ref (Universal.tagInject t newVal) :: root) | doFind (v::r) = if Universal.tagIs t (!v) (* If it's in the list update it. *) then v := Universal.tagInject t newVal else doFind r in doFind root end local val threadTestInterrupt: unit -> unit = RunCall.rtsCallFull0 "PolyThreadTestInterrupt" in fun testInterrupt() = (* If there is a pending request the word in the thread object will be non-zero. *) if RunCall.loadWord(self(), threadIdIntRequest) <> 0 then threadTestInterrupt() else () end local fun getAttrWord (me: thread) : Word.word = RunCall.loadWord(me, threadIdFlags) fun getStackSizeAsInt (me: thread) : int = RunCall.loadWord(me, threadIdStackSize) and getStackSize me : int option = case getStackSizeAsInt me of 0 => NONE | s => SOME s fun newStackSize ([], default) = default | newStackSize (MaximumMLStack NONE :: _, _) = 0 | newStackSize (MaximumMLStack (SOME n) :: _, _) = if n <= 0 then raise Thread "The stack size must be greater than zero" else n | newStackSize (_ :: l, default) = newStackSize (l, default) val threadMaxStackSize: int -> unit = RunCall.rtsCallFull1 "PolyThreadMaxStackSize" in (* Set attributes. Only changes the values that are specified. The others remain the same. *) fun setAttributes (attrs: threadAttribute list) : unit = let val me = self() val oldValues: Word.word = getAttrWord me val (newValue, mask) = attrsToWord attrs val stack = newStackSize(attrs, getStackSizeAsInt me) in RunCall.storeWord (self(), threadIdFlags, Word.orb(newValue, Word.andb(Word.notb mask, oldValues))); if stack = getStackSizeAsInt me then () else threadMaxStackSize stack; (* If we are now handling interrupts asynchronously check whether we have a pending interrupt now. This will only be effective if we were previously handling them synchronously or blocking them. *) if Word.andb(newValue, 0w4) = 0w4 then testInterrupt() else () end fun getAttributes() : threadAttribute list = let val me = self() in MaximumMLStack (getStackSize me) :: wordToAttrs(getAttrWord me) end (* These are used in the ConditionVar structure. They affect only the interrupt handling bits. *) fun getInterruptState(): interruptState = getIstateBits(getAttrWord(self())) and setInterruptState(s: interruptState): unit = RunCall.storeWord (self(), threadIdFlags, Word.orb(setIstateBits s, Word.andb(Word.notb 0w6, getAttrWord(self())))) local (* The default for a new thread is to ignore broadcasts and handle explicit interrupts synchronously. *) val (defaultAttrs, _) = attrsToWord[EnableBroadcastInterrupt false, InterruptState InterruptSynch] val threadForkFunction: (unit->unit) * word * int -> thread = RunCall.rtsCallFull3 "PolyThreadForkThread" in fun fork(f:unit->unit, attrs: threadAttribute list): thread = let (* Any attributes specified explicitly override the defaults. *) val (attrWord, mask) = attrsToWord attrs val attrValue = Word.orb(attrWord, Word.andb(Word.notb mask, defaultAttrs)) val stack = newStackSize(attrs, 0 (* Default is unlimited *)) in threadForkFunction(f, attrValue, stack) end end end val exit: unit -> unit = RunCall.rtsCallFull0 "PolyThreadKillSelf" and isActive: thread -> bool = RunCall.rtsCallFast1 "PolyThreadIsActive" and broadcastInterrupt: unit -> unit = RunCall.rtsCallFull0 "PolyThreadBroadcastInterrupt" local (* Send an interrupt to a thread. If it returns false the thread did not exist and this should raise an exception. *) val threadSendInterrupt: thread -> bool = RunCall.rtsCallFast1 "PolyThreadInterruptThread" in fun interrupt(t: thread) = if threadSendInterrupt t then () else raise Thread "Thread does not exist" end local val threadKillThread: thread -> bool = RunCall.rtsCallFast1 "PolyThreadKillThread" in fun kill(t: thread) = if threadKillThread t then () else raise Thread "Thread does not exist" end val numProcessors: unit -> int = RunCall.rtsCallFast0 "PolyThreadNumProcessors" local val numberOfPhysical: unit -> int = RunCall.rtsCallFast0 "PolyThreadNumPhysicalProcessors" in fun numPhysicalProcessors(): int option = (* It is not always possible to get this information *) case numberOfPhysical() of 0 => NONE | n => SOME n end end structure Mutex = struct type mutex = Word.word ref fun mutex() = nvref 0w1; (* Initially unlocked. *) open Thread (* atomicIncr, atomicDecr and atomicReset are set up by Initialise. *) val threadMutexBlock: mutex -> unit = RunCall.rtsCallFull1 "PolyThreadMutexBlock" val threadMutexUnlock: mutex -> unit = RunCall.rtsCallFull1 "PolyThreadMutexUnlock" (* A mutex is implemented as a Word.word ref. It is initially set to 1 and locked by atomically decrementing it. If it was previously unlocked the result will by zero but if it was already locked it will be some negative value. When it is unlocked it is atomically incremented. If there was no contention the result will again be 1 but if some other thread tried to lock it the result will be zero or negative. In that case the unlocking thread needs to call in to the RTS to wake up the blocked thread. The cost of contention on the lock is very high. To try to avoid this we first loop (spin) to see if we can get the lock without contention. *) val spin_cycle = 20000 fun spin (m: mutex, c: int) = if ! m = 0w1 then () else if c = spin_cycle then () else spin(m, c+1); fun lock (m: mutex): unit = let val () = spin(m, 0) val newValue = atomicDecr m in if newValue = 0w0 then () (* We've acquired the lock. *) else (* It's locked. We return when we have the lock. *) ( threadMutexBlock m; lock m (* Try again. *) ) end fun unlock (m: mutex): unit = let val newValue = atomicIncr m in if newValue = 0w1 then () (* No contention. *) else (* Another thread has blocked and we have to release it. We can safely set the value to 1 here to release the lock. If another thread acquires it before we have woken up the other threads that's fine. Equally, if another thread decremented the count and saw it was still locked it will enter the RTS and try to acquire the lock there. It's probably better to reset it here rather than within the RTS since it allows another thread to acquire the lock immediately rather than after the rather long process of entering the RTS. Resetting this needs to be atomic with respect to atomic increment and decrement. That's not a problem on X86 so a simple assignment is sufficient but in the interpreter at least it's necessary to acquire a lock. *) ( atomicReset m; threadMutexUnlock m ) end (* Try to lock the mutex. If it was previously unlocked then lock it and return true otherwise return false. Because we don't block here there is the possibility that the thread that has locked it could release the lock shortly afterwards. The check for !m = 0w1 is an optimisation and nearly all the time it avoids the call to atomicDecr setting m to a negative value. There is a small chance that another thread could lock the mutex between the test for !m = 0w1 and the atomicDecr. In that case the atomicDecr would return a negative value and the function that locked the mutex will have to call into the RTS to reset it when it is unlocked. *) fun trylock (m: mutex): bool = if !m = 0w1 andalso atomicDecr m = 0w0 then true (* We've acquired the lock. *) else false (* The lock was taken. *) end structure ConditionVar = struct open Thread (* A condition variable contains a lock and a list of suspended threads. *) type conditionVar = { lock: Mutex.mutex, threads: thread list ref } fun conditionVar(): conditionVar = { lock = Mutex.mutex(), threads = nvref nil } local val threadCondVarWait: Mutex.mutex -> unit = RunCall.rtsCallFull1 "PolyThreadCondVarWait" and threadCondVarWaitUntil: Mutex.mutex * Time.time -> unit = RunCall.rtsCallFull2 "PolyThreadCondVarWaitUntil" in fun innerWait({lock, threads}: conditionVar, m: Mutex.mutex, t: Time.time option) : bool = let val me = self() (* My thread id. *) fun waitAgain() = let fun doFind [] = false | doFind(h::t) = equal(h, me) orelse doFind t fun removeThis [] = raise Fail "Thread missing in list" | removeThis (h::t) = if equal(h, me) then t else h :: removeThis t val () = case t of SOME time => threadCondVarWaitUntil(lock, time) | NONE => threadCondVarWait lock val () = Mutex.lock lock (* Get the lock again. *) (* Are we still on the list? If so we haven't been explicitly woken up. We've either timed out, been interrupted or simply returned because the RTS needed to process some asynchronous results. *) val stillThere = doFind(!threads) open Time (* For >= *) in if not stillThere then (* We're done. *) ( Mutex.unlock lock; true ) else if (case t of NONE => false | SOME t => Time.now() >= t) then (* We've timed out. *) ( threads := removeThis(! threads); Mutex.unlock lock; false ) else ( (* See if we've been interrupted. If so remove ourselves and exit. *) testInterrupt() handle exn => (threads := removeThis(! threads); Mutex.unlock lock; raise exn); (* Otherwise just keep waiting. *) waitAgain() ) end in Mutex.lock lock; (* Lock the internal mutex. *) Mutex.unlock m; (* Unlock the external mutex *) threads := me :: !threads; (* Add ourselves to the list. *) waitAgain() (* Wait and return the result when we're done. *) end fun doWait(c: conditionVar, m: Mutex.mutex, t: Time.time option) : bool = let val originalIntstate = getInterruptState() (* Set this to handle interrupts synchronously unless we're already ignoring them. *) val () = if originalIntstate = InterruptDefer then () else setInterruptState InterruptSynch; (* Wait for the condition. If it raises an exception we still need to reacquire the lock unless we were handling interrupts asynchronously. *) val result = innerWait(c, m, t) handle exn => ( (* We had an exception. If we were handling exceptions synchronously we reacquire the lock. If it was set to InterruptAsynchOnce this counts as a single asynchronous exception and we restore the state as InterruptSynch. *) case originalIntstate of InterruptDefer => (* Shouldn't happen? *) Mutex.lock m | InterruptSynch => Mutex.lock m | InterruptAsynch => setInterruptState InterruptAsynch | InterruptAsynchOnce => setInterruptState InterruptSynch; raise exn (* Reraise the exception*) ) in (* Restore the original interrupt state first. *) setInterruptState originalIntstate; (* Normal return. Reacquire the lock before returning. *) Mutex.lock m; result end fun wait(c: conditionVar, m: Mutex.mutex) : unit = (doWait(c, m, NONE); ()) and waitUntil(c: conditionVar, m: Mutex.mutex, t: Time.time) : bool = doWait(c, m, SOME t) end local (* This call wakes up the specified thread. If the thread has already been interrupted and is not ignoring interrupts it returns false. Otherwise it wakes up the thread and returns true. We have to use this because we define that if a thread is interrupted before it is signalled then it raises Interrupt. *) val threadCondVarWake: thread -> bool = RunCall.rtsCallFast1 "PolyThreadCondVarWake" (* Wake a single thread if we can (signal). *) fun wakeOne [] = [] | wakeOne (thread::rest) = if threadCondVarWake thread then rest else thread :: wakeOne rest (* Wake all threads (broadcast). *) fun wakeAll [] = [] (* Always returns the empty list. *) | wakeAll (thread::rest) = (threadCondVarWake thread; wakeAll rest) fun signalOrBroadcast({lock, threads}: conditionVar, wakeThreads) : unit = let val originalState = getInterruptState() in (* Set this to handle interrupts synchronously unless we're already ignoring them. We need to do this to avoid an asynchronous interrupt which could leave the internal lock in an inconsistent state. *) if originalState = InterruptDefer then () else setInterruptState InterruptSynch; (* Get the condition var lock. *) Mutex.lock lock; threads := wakeThreads(! threads); Mutex.unlock lock; setInterruptState originalState; (* Restore original state. *) (* Test if we were interrupted while we were handling interrupts synchronously. *) if originalState = InterruptAsynch orelse originalState = InterruptAsynchOnce then testInterrupt() else () end in fun signal cv = signalOrBroadcast(cv, wakeOne) and broadcast cv = signalOrBroadcast(cv, wakeAll) end end end; structure ThreadLib: sig val protect: Thread.Mutex.mutex -> ('a -> 'b) -> 'a -> 'b end = struct (* This applies a function while a mutex is being held. Although this can be defined in terms of Thread.Thread.getAttributes it's defined here using the underlying calls. The original version with getAttributes appeared as a major allocation hot-spot when building the compiler because "protect" is called round every access to the global name-space. *) fun protect m f a = let open Thread.Thread Thread.Mutex open Word (* Set this to handle interrupts synchronously except if we are blocking them. We don't want to get an asynchronous interrupt while we are actually locking or unlocking the mutex but if we have to block to do IO then we should allow an interrupt at that point. *) val oldAttrs: Word.word = RunCall.loadWord(self(), 0w1) val () = if andb(oldAttrs, 0w6) = 0w0 (* Already deferred? *) then () else RunCall.storeWord (self(), 0w1, orb(andb(notb 0w6, oldAttrs), 0w4)) fun restoreAttrs() = ( RunCall.storeWord (self(), 0w1, oldAttrs); if andb(oldAttrs, 0w4) = 0w4 then testInterrupt() else () ) val () = lock m val result = f a handle exn => ( unlock m; restoreAttrs(); (* Reraise the exception preserving the location information. *) PolyML.Exception.reraise exn ) in unlock m; restoreAttrs(); result end end; local fun prettyMutex _ _ (_: Thread.Mutex.mutex) = PolyML.PrettyString "?" and prettyThread _ _ (_: Thread.Thread.thread) = PolyML.PrettyString "?" and prettyCondVar _ _ (_: Thread.ConditionVar.conditionVar) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyMutex and () = PolyML.addPrettyPrinter prettyThread and () = PolyML.addPrettyPrinter prettyCondVar end; polyml-5.7.1/basis/Word32.sml0000644000175000017500000000177113204034553014703 0ustar daviddavid(* Title: Standard Basis Library: Word31 structure Copyright David C.J. Matthews 2012 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* On 32-bit LargeWord has a 32-bit word length. *) structure Word32 = LargeWord; val () = if Word32.wordSize <> 32 then raise Fail "Not 32 bit word" else (); polyml-5.7.1/basis/Posix.sml0000644000175000017500000015552613204034553014735 0ustar daviddavid(* Title: Standard Basis Library: Posix structure and signature. Copyright David Matthews 2000, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature POSIX_ERROR = sig type syserror = OS.syserror (* G&R 2004 has an error *) val toWord : syserror -> SysWord.word val fromWord : SysWord.word -> syserror val errorMsg : syserror -> string val errorName : syserror -> string val syserror : string -> syserror option val acces : syserror val again : syserror val badf : syserror val badmsg : syserror val busy : syserror val canceled (* sic *) : syserror val child : syserror val deadlk : syserror val dom : syserror val exist : syserror val fault : syserror val fbig : syserror val inprogress : syserror val intr : syserror val inval : syserror val io : syserror val isdir : syserror val loop : syserror val mfile : syserror val mlink : syserror val msgsize : syserror val nametoolong : syserror val nfile : syserror val nodev : syserror val noent : syserror val noexec : syserror val nolck : syserror val nomem : syserror val nospc : syserror val nosys : syserror val notdir : syserror val notempty : syserror val notsup : syserror val notty : syserror val nxio : syserror val perm : syserror val pipe : syserror val range : syserror val rofs : syserror val spipe : syserror val srch : syserror val toobig : syserror val xdev : syserror end; signature POSIX_SIGNAL = sig eqtype signal val toWord : signal -> SysWord.word val fromWord : SysWord.word -> signal val abrt : signal val alrm : signal val bus : signal val fpe : signal val hup : signal val ill : signal val int : signal val kill : signal val pipe : signal val quit : signal val segv : signal val term : signal val usr1 : signal val usr2 : signal val chld : signal val cont : signal val stop : signal val tstp : signal val ttin : signal val ttou : signal end; signature POSIX_PROCESS = sig eqtype signal eqtype pid val wordToPid : SysWord.word -> pid val pidToWord : pid -> SysWord.word val fork : unit -> pid option val exec : string * string list -> 'a val exece : string * string list * string list -> 'a val execp : string * string list -> 'a datatype waitpid_arg = W_ANY_CHILD | W_CHILD of pid | W_SAME_GROUP | W_GROUP of pid datatype exit_status = W_EXITED | W_EXITSTATUS of Word8.word | W_SIGNALED (* sic *) of signal | W_STOPPED of signal val fromStatus : OS.Process.status -> exit_status structure W: sig include BIT_FLAGS val untraced : flags end val wait : unit -> pid * exit_status val waitpid : waitpid_arg * W.flags list -> pid * exit_status val waitpid_nh : waitpid_arg * W.flags list -> (pid * exit_status) option val exit : Word8.word -> 'a datatype killpid_arg = K_PROC of pid | K_SAME_GROUP | K_GROUP of pid val kill : killpid_arg * signal -> unit val alarm : Time.time -> Time.time val pause : unit -> unit (* QUESTION: Why does sleep return a Time.time ? Is it intended to be the time remaining? Assume so. *) val sleep : Time.time -> Time.time end; signature POSIX_PROC_ENV = sig eqtype pid eqtype uid eqtype gid eqtype file_desc val uidToWord : uid -> SysWord.word val wordToUid : SysWord.word -> uid val gidToWord : gid -> SysWord.word val wordToGid : SysWord.word -> gid val getpid : unit -> pid val getppid : unit -> pid val getuid : unit -> uid val geteuid : unit -> uid val getgid : unit -> gid val getegid : unit -> gid val setuid : uid -> unit val setgid : gid -> unit val getgroups : unit -> gid list val getlogin : unit -> string val getpgrp : unit -> pid val setsid : unit -> pid val setpgid : {pid : pid option, pgid : pid option} -> unit val uname : unit -> (string * string) list val time : unit -> Time.time val times : unit -> { elapsed : Time.time, utime : Time.time, stime : Time.time, cutime : Time.time, cstime : Time.time } val getenv : string -> string option val environ : unit -> string list val ctermid : unit -> string val ttyname : file_desc -> string val isatty : file_desc -> bool val sysconf : string -> SysWord.word end; signature POSIX_FILE_SYS = sig eqtype uid eqtype gid eqtype file_desc val fdToWord : file_desc -> SysWord.word val wordToFD : SysWord.word -> file_desc val fdToIOD : file_desc -> OS.IO.iodesc val iodToFD : OS.IO.iodesc -> file_desc option type dirstream val opendir : string -> dirstream val readdir : dirstream -> string option val rewinddir : dirstream -> unit val closedir : dirstream -> unit val chdir : string -> unit val getcwd : unit -> string val stdin : file_desc val stdout : file_desc val stderr : file_desc structure S : sig eqtype mode include BIT_FLAGS where type flags = mode val irwxu : mode val irusr : mode val iwusr : mode val ixusr : mode val irwxg : mode val irgrp : mode val iwgrp : mode val ixgrp : mode val irwxo : mode val iroth : mode val iwoth : mode val ixoth : mode val isuid : mode val isgid : mode end structure O: sig include BIT_FLAGS val append : flags val excl : flags val noctty : flags val nonblock : flags val sync : flags val trunc : flags end datatype open_mode = O_RDONLY | O_WRONLY | O_RDWR val openf : string * open_mode * O.flags -> file_desc val createf : string * open_mode * O.flags * S.mode -> file_desc val creat : string * S.mode -> file_desc val umask : S.mode -> S.mode val link : {old : string, new : string} -> unit val mkdir : string * S.mode -> unit val mkfifo : string * S.mode -> unit val unlink : string -> unit val rmdir : string -> unit val rename : {old : string, new : string} -> unit val symlink : {old : string, new : string} -> unit val readlink : string -> string eqtype dev val wordToDev : SysWord.word -> dev val devToWord : dev -> SysWord.word eqtype ino val wordToIno : SysWord.word -> ino val inoToWord : ino -> SysWord.word structure ST: sig type stat val isDir : stat -> bool val isChr : stat -> bool val isBlk : stat -> bool val isReg : stat -> bool val isFIFO : stat -> bool val isLink : stat -> bool val isSock : stat -> bool val mode : stat -> S.mode val ino : stat -> ino val dev : stat -> dev val nlink : stat -> int val uid : stat -> uid val gid : stat -> gid val size : stat -> Position.int val atime : stat -> Time.time val mtime : stat -> Time.time val ctime : stat -> Time.time end val stat : string -> ST.stat val lstat : string -> ST.stat val fstat : file_desc -> ST.stat datatype access_mode = A_READ | A_WRITE | A_EXEC val access : string * access_mode list -> bool val chmod : string * S.mode -> unit val fchmod : file_desc * S.mode -> unit val chown : string * uid * gid -> unit val fchown : file_desc * uid * gid -> unit val utime : string * {actime : Time.time, modtime : Time.time} option -> unit val ftruncate : file_desc * Position.int -> unit val pathconf : string * string -> SysWord.word option val fpathconf : file_desc * string -> SysWord.word option end; signature POSIX_IO = sig eqtype file_desc eqtype pid val pipe: unit -> {infd : file_desc, outfd : file_desc} val dup: file_desc -> file_desc val dup2: {old : file_desc, new : file_desc} -> unit val close: file_desc -> unit val readVec : file_desc * int -> Word8Vector.vector val readArr: file_desc * Word8ArraySlice.slice -> int val writeVec: file_desc * Word8VectorSlice.slice -> int val writeArr: file_desc * Word8ArraySlice.slice -> int datatype whence = SEEK_SET | SEEK_CUR | SEEK_END structure FD: sig include BIT_FLAGS val cloexec: flags end structure O: sig include BIT_FLAGS val append : flags val nonblock : flags val sync : flags end datatype open_mode = O_RDONLY | O_WRONLY | O_RDWR val dupfd : {old : file_desc, base : file_desc} -> file_desc val getfd : file_desc -> FD.flags val setfd : file_desc * FD.flags -> unit val getfl : file_desc -> O.flags * open_mode val setfl : file_desc * O.flags -> unit val lseek : file_desc * Position.int * whence -> Position.int val fsync : file_desc -> unit datatype lock_type = F_RDLCK | F_WRLCK | F_UNLCK structure FLock: sig type flock val flock : { ltype : lock_type, whence : whence, start : Position.int, len : Position.int, pid : pid option } -> flock val ltype : flock -> lock_type val whence : flock -> whence val start : flock -> Position.int val len : flock -> Position.int val pid : flock -> pid option end val getlk : file_desc * FLock.flock -> FLock.flock val setlk : file_desc * FLock.flock -> FLock.flock val setlkw : file_desc * FLock.flock -> FLock.flock val mkBinReader: { fd : file_desc, name : string, initBlkMode : bool } -> BinPrimIO.reader val mkTextReader: { fd : file_desc, name : string, initBlkMode : bool } -> TextPrimIO.reader val mkBinWriter: { fd : file_desc, name : string, appendMode : bool, initBlkMode : bool, chunkSize : int } -> BinPrimIO.writer val mkTextWriter: { fd : file_desc, name : string, appendMode : bool, initBlkMode : bool, chunkSize : int } -> TextPrimIO.writer end; signature POSIX_SYS_DB = sig eqtype uid eqtype gid structure Passwd : sig type passwd val name : passwd -> string val uid : passwd -> uid val gid : passwd -> gid val home : passwd -> string val shell : passwd -> string end structure Group : sig type group val name : group -> string val gid : group -> gid val members : group -> string list end val getgrgid : gid -> Group.group val getgrnam : string -> Group.group val getpwuid : uid -> Passwd.passwd val getpwnam : string -> Passwd.passwd end; signature POSIX_TTY = sig eqtype pid eqtype file_desc structure V : sig val eof : int val eol : int val erase : int val intr : int val kill : int val min : int val quit : int val susp : int val time : int val start : int val stop : int val nccs : int type cc val cc : (int * char) list -> cc val update : cc * (int * char) list -> cc val sub : cc * int -> char end structure I : sig include BIT_FLAGS val brkint : flags val icrnl : flags val ignbrk : flags val igncr : flags val ignpar : flags val inlcr : flags val inpck : flags val istrip : flags val ixoff : flags val ixon : flags val parmrk : flags end structure O : sig include BIT_FLAGS val opost : flags end structure C : sig include BIT_FLAGS val clocal : flags val cread : flags val cs5 : flags val cs6 : flags val cs7 : flags val cs8 : flags val csize : flags val cstopb : flags val hupcl : flags val parenb : flags val parodd : flags end structure L : sig include BIT_FLAGS val echo : flags val echoe : flags val echok : flags val echonl : flags val icanon : flags val iexten : flags val isig : flags val noflsh : flags val tostop : flags end eqtype speed val compareSpeed : speed * speed -> order val speedToWord : speed -> SysWord.word val wordToSpeed : SysWord.word -> speed val b0 : speed val b50 : speed val b75 : speed val b110 : speed val b134 : speed val b150 : speed val b200 : speed val b300 : speed val b600 : speed val b1200 : speed val b1800 : speed val b2400 : speed val b4800 : speed val b9600 : speed val b19200 : speed val b38400 : speed type termios val termios : { iflag : I.flags, oflag : O.flags, cflag : C.flags, lflag : L.flags, cc : V.cc, ispeed : speed, ospeed : speed } -> termios val fieldsOf : termios -> { iflag : I.flags, oflag : O.flags, cflag : C.flags, lflag : L.flags, cc : V.cc, ispeed : speed, ospeed : speed } val getiflag : termios -> I.flags val getoflag : termios -> O.flags val getcflag : termios -> C.flags val getlflag : termios -> L.flags val getcc : termios -> V.cc structure CF : sig val getospeed : termios -> speed val setospeed : termios * speed -> termios val getispeed : termios -> speed val setispeed : termios * speed -> termios end structure TC : sig eqtype set_action val sanow : set_action val sadrain : set_action val saflush : set_action eqtype flow_action val ooff : flow_action val oon : flow_action val ioff : flow_action val ion : flow_action eqtype queue_sel val iflush : queue_sel val oflush : queue_sel val ioflush : queue_sel val getattr : file_desc -> termios val setattr : file_desc * set_action * termios -> unit val sendbreak : file_desc * int -> unit val drain : file_desc -> unit val flush : file_desc * queue_sel -> unit val flow : file_desc * flow_action -> unit end val getpgrp : file_desc -> pid val setpgrp : file_desc * pid -> unit end; signature POSIX = sig structure Error : POSIX_ERROR structure Signal : POSIX_SIGNAL structure Process : POSIX_PROCESS where type signal = Signal.signal structure ProcEnv : POSIX_PROC_ENV where type pid = Process.pid structure FileSys : POSIX_FILE_SYS where type file_desc = ProcEnv.file_desc where type uid = ProcEnv.uid where type gid = ProcEnv.gid structure IO : POSIX_IO where type pid = Process.pid where type file_desc = ProcEnv.file_desc where type open_mode = FileSys.open_mode structure SysDB : POSIX_SYS_DB where type uid = ProcEnv.uid where type gid = ProcEnv.gid structure TTY : POSIX_TTY where type pid = Process.pid where type file_desc = ProcEnv.file_desc end; structure Posix :> sig include POSIX (* I'm not sure if it's legal to use where type with a datatype. The alternative is to copy the whole of the signature and use datatype replication. *) where type FileSys.access_mode = OS.FileSys.access_mode sharing type Process.pid = ProcEnv.pid = IO.pid = TTY.pid sharing type ProcEnv.uid = FileSys.uid = SysDB.uid sharing type ProcEnv.gid = FileSys.gid = SysDB.gid sharing type ProcEnv.file_desc = FileSys.file_desc = IO.file_desc = TTY.file_desc end (* Posix.Signal.signal is made the same as int so that we can pass the values directly to our (non-standard) Signal.signal function. Since there isn't a standard way of handling signals this is the best we can do. *) where type Signal.signal = int where type FileSys.dirstream = OS.FileSys.dirstream = struct local val processEnvGeneralCall = RunCall.rtsCallFull2 "PolyProcessEnvGeneral" and osSpecificGeneralCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" and timingGeneralCall = RunCall.rtsCallFull2 "PolyTimingGeneral" in fun processEnvGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(processEnvGeneralCall(RunCall.unsafeCast(code, arg))) and osSpecificGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(osSpecificGeneralCall(RunCall.unsafeCast(code, arg))) and timingGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(timingGeneralCall(RunCall.unsafeCast(code, arg))) end fun getConst i : SysWord.word = osSpecificGeneral (4, i) structure BitFlags = (* This structure is used as the basis of all the BIT_FLAGS structures. *) struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) end structure Error = struct type syserror = OS.syserror (* Implemented as a SysWord.word value. *) val errorMsg = OS.errorMsg fun toWord (s: syserror): SysWord.word = RunCall.unsafeCast s and fromWord (w: SysWord.word) : syserror = RunCall.unsafeCast w val toobig = fromWord(getConst 0) and acces = fromWord(getConst 1) and again = fromWord(getConst 2) and badf = fromWord(getConst 3) and badmsg = fromWord(getConst 4) and busy = fromWord(getConst 5) and canceled (* sic *) = fromWord(getConst 6) and child = fromWord(getConst 7) and deadlk = fromWord(getConst 8) and dom = fromWord(getConst 9) and exist = fromWord(getConst 10) and fault = fromWord(getConst 11) and fbig = fromWord(getConst 12) and inprogress = fromWord(getConst 13) and intr = fromWord(getConst 14) and inval = fromWord(getConst 15) and io = fromWord(getConst 16) and isdir = fromWord(getConst 17) and loop = fromWord(getConst 18) and mfile = fromWord(getConst 19) and mlink = fromWord(getConst 20) and msgsize = fromWord(getConst 21) and nametoolong = fromWord(getConst 22) and nfile = fromWord(getConst 23) and nodev = fromWord(getConst 24) and noent = fromWord(getConst 25) and noexec = fromWord(getConst 26) and nolck = fromWord(getConst 27) and nomem = fromWord(getConst 28) and nospc = fromWord(getConst 29) and nosys = fromWord(getConst 30) and notdir = fromWord(getConst 31) and notempty = fromWord(getConst 32) and notsup = fromWord(getConst 33) and notty = fromWord(getConst 34) and nxio = fromWord(getConst 35) and perm = fromWord(getConst 36) and pipe = fromWord(getConst 37) and range = fromWord(getConst 38) and rofs = fromWord(getConst 39) and spipe = fromWord(getConst 40) and srch = fromWord(getConst 41) and xdev = fromWord(getConst 42) val errNames = [ (acces, "acces"), (again, "again"), (badf, "badf"), (badmsg, "badmsg"), (busy, "busy"), (canceled, "canceled"), (child, "child"), (deadlk, "deadlk"), (dom, "dom"), (exist, "exist"), (fault, "fault"), (fbig, "fbig"), (inprogress, "inprogress"), (intr, "intr"), (inval, "inval"), (io, "io"), (isdir, "isdir"), (loop, "loop"), (mfile, "mfile"), (mlink, "mlink"), (msgsize, "msgsize"), (nametoolong, "nametoolong"), (nfile, "nfile"), (nodev, "nodev"), (noent, "noent"), (noexec, "noexec"), (nolck, "nolck"), (nomem, "nomem"), (nospc, "nospc"), (nosys, "nosys"), (notdir, "notdir"), (notempty, "notempty"), (notsup, "notsup"), (notty, "notty"), (nxio, "nxio"), (perm, "perm"), (pipe, "pipe"), (range, "range"), (rofs, "rofs"), (spipe, "spipe"), (srch, "srch"), (toobig, "toobig"), (xdev, "xdev") ] (* These are defined to return the names above. *) fun errorName n = case List.find (fn (e, _) => e = n) errNames of SOME(_, s) => s | NONE => OS.errorName n fun syserror s = case List.find (fn (_, t) => s = t) errNames of SOME(e, _) => SOME e | NONE => OS.syserror s end; structure Signal = struct type signal = int val toWord = SysWord.fromInt and fromWord = SysWord.toInt (* These signal values are probably defined to correspond to particular numbers but there's no harm in getting them from the RTS. *) val abrt = fromWord(getConst 43) and alrm = fromWord(getConst 44) and bus = fromWord(getConst 45) and fpe = fromWord(getConst 46) and hup = fromWord(getConst 47) and ill = fromWord(getConst 48) and int = fromWord(getConst 49) and kill = fromWord(getConst 50) and pipe = fromWord(getConst 51) and quit = fromWord(getConst 52) and segv = fromWord(getConst 53) and term = fromWord(getConst 54) and usr1 = fromWord(getConst 55) and usr2 = fromWord(getConst 56) and chld = fromWord(getConst 57) and cont = fromWord(getConst 58) and stop = fromWord(getConst 59) and tstp = fromWord(getConst 60) and ttin = fromWord(getConst 61) and ttou = fromWord(getConst 62) end; structure Process = struct type signal = Signal.signal type pid = int val pidToWord = SysWord.fromInt and wordToPid = SysWord.toInt datatype waitpid_arg = W_ANY_CHILD | W_CHILD of pid | W_SAME_GROUP | W_GROUP of pid datatype exit_status = W_EXITED | W_EXITSTATUS of Word8.word | W_SIGNALED of signal | W_STOPPED of signal datatype killpid_arg = K_PROC of pid | K_SAME_GROUP | K_GROUP of pid structure W = struct open BitFlags val untraced = getConst 133 val nohang = getConst 134 (* Not exported. *) val all = flags [ untraced, nohang] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end local val doCall = osSpecificGeneral in fun fork () = case doCall(5, ()) of 0 => NONE (* Parent *) | n => SOME n (* Child *) end local val doCall = osSpecificGeneral in (* Map the pid argument to positive, zero or negative. *) fun kill (K_PROC pid, si) = doCall(6,(pid, si)) | kill (K_SAME_GROUP, si) = doCall(6, (0, si)) | kill (K_GROUP pid, si) = doCall(6, (~pid, si)) end local val doCall = osSpecificGeneral in (* The format of a result may well be sufficiently fixed that we could decode it without calling the RTS. It's probably worth the small cost to make maintenance easier. *) fun fromStatus (stat: OS.Process.status): exit_status = case (doCall(15, stat)) of (1, 0) => W_EXITED | (1, n) => W_EXITSTATUS(Word8.fromInt n) | (2, n) => W_SIGNALED n | (3, n) => W_STOPPED n | _ => raise Fail "Unknown result status" end local val doCall = osSpecificGeneral fun doWait(kind: int, pid: pid, flags: W.flags list) = let val (pid, status) = doCall(14, (kind, pid, SysWord.toInt(W.flags flags))) in (pid, fromStatus status) end in fun waitpid(W_ANY_CHILD, flags) = doWait(0, 0, flags) | waitpid(W_CHILD pid, flags) = doWait(1, pid, flags) | waitpid(W_SAME_GROUP, flags) = doWait(2, 0, flags) | waitpid(W_GROUP pid, flags) = doWait(3, pid, flags) fun wait() = waitpid(W_ANY_CHILD, []) fun waitpid_nh(wpa, flags) = let val (pid, status) = waitpid(wpa, W.nohang :: flags) in if pid = 0 then NONE else SOME(pid, status) end end fun exec(p, args) = osSpecificGeneral(17, (p, args)) and exece(p, args, env) = osSpecificGeneral(18, (p, args, env)) and execp(p, args) = osSpecificGeneral(19, (p, args)) (* The definition of "exit" is obviously designed to allow OS.Process.exit to be defined in terms of it. In particular it doesn't execute the functions registered with atExit. *) local val doExit: Word8.word -> unit = RunCall.rtsCallFull1 "PolyFinish" in fun exit w = ( doExit w; raise Bind (* Never executed but gives the correct result type.*) ) end local val doCall = osSpecificGeneral fun toAbsolute t = if t < Time.zeroTime then raise OS.SysErr("Invalid time", NONE) else t + Time.now() (* Because of rounding we may get a negative time. In that case we return zero. *) fun endTime t = let val now = Time.now() in if t > now then t-now else Time.zeroTime end in (* This previously used absolute times. Now uses relative. *) fun alarm t = doCall(20, t) fun sleep t = let val finish = toAbsolute t in (* We need to pass in the absolute time here. That's because the process scheduler retries the function until a signal occurs or the time expires. *) (* The result is zero if it returns successfully. If an exception is raised we return the remaining time. We assume that this only happens because the process is interrupted. We don't handle the Interrupt exception, though. *) (doCall(22, finish); Time.zeroTime) handle OS.SysErr _ => endTime finish end end local val doCall = osSpecificGeneral in fun pause() = doCall(21, ()) end end; structure ProcEnv = struct type pid = Process.pid and file_desc = OS.IO.iodesc type uid = int and gid = int val uidToWord = SysWord.fromInt and wordToUid = SysWord.toInt and gidToWord = SysWord.fromInt and wordToGid = SysWord.toInt local val doCall = osSpecificGeneral in fun getpid () = doCall(7, ()) and getppid () = doCall(8, ()) and getuid () = doCall(9, ()) and geteuid () = doCall(10, ()) and getgid () = doCall(11, ()) and getegid () = doCall(12, ()) and getpgrp () = doCall(13, ()) and setsid () = doCall(27, ()) end val getenv = OS.Process.getEnv fun environ() = processEnvGeneral(21, ()) local val doCall = osSpecificGeneral in fun setuid(u: uid) = doCall(23, u) and setgid(g: gid) = doCall(24, g) end local val doCall = osSpecificGeneral in fun getgroups() = doCall(25, ()) end local val doCall = osSpecificGeneral in fun getlogin() = doCall(26, ()) and ctermid() = doCall(30, ()) end local val doCall = osSpecificGeneral in (* In each case NONE as an argument is taken as 0. *) fun setpgid{pid, pgid} = doCall(28, (getOpt(pid, 0), getOpt(pgid, 0))) end local val doCall = osSpecificGeneral in fun uname() = doCall(29, ()) end val time = Time.now fun times() = let (* Apart from the child times all these could be obtained by calling the Timer functions. *) val doCall: int*unit -> Time.time = timingGeneral fun getUserTime() = doCall(7, ()) and getSysTime() = doCall(8, ()) and getRealTime() = doCall(10, ()) and getChildUserTime() = doCall(11, ()) and getChildSysTime() = doCall(12, ()) in { elapsed=getRealTime(), utime=getUserTime(), stime=getSysTime(), cutime=getChildUserTime(), cstime=getChildSysTime()} end local val doCall = osSpecificGeneral in fun ttyname(f: file_desc) = doCall(31, f) end local val doCall = osSpecificGeneral in fun isatty(f: file_desc) = doCall(32, f) end local val doCall = osSpecificGeneral in fun sysconf(s: string) = SysWord.fromInt(doCall(33, s)) end end; structure FileSys = struct type uid = ProcEnv.uid and gid = ProcEnv.gid type file_desc = OS.IO.iodesc type dirstream = OS.FileSys.dirstream datatype open_mode = O_RDONLY | O_WRONLY | O_RDWR structure O = struct open BitFlags val append = getConst 66 and excl = getConst 67 and noctty = getConst 68 and nonblock = getConst 69 and sync = getConst 70 and trunc = getConst 71 val all = flags [append, excl, noctty, nonblock, sync, trunc] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end local val doIo: int*file_desc*unit -> int = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun fdToWord (f: file_desc) = SysWord.fromInt(doIo(30, f, ())) end local val doIo: int*unit*int -> file_desc = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun wordToFD(s: SysWord.word): file_desc = doIo(31, (), SysWord.toInt s) end (* file_desc and OS.IO.iodesc are the same. *) fun fdToIOD i = i and iodToFD i = SOME i val opendir = OS.FileSys.openDir and readdir = OS.FileSys.readDir and rewinddir = OS.FileSys.rewindDir and closedir = OS.FileSys.closeDir and chdir = OS.FileSys.chDir and getcwd = OS.FileSys.getDir and unlink = OS.FileSys.remove and rmdir = OS.FileSys.rmDir and rename = OS.FileSys.rename and readlink = OS.FileSys.readLink val stdin : file_desc = RunCall.unsafeCast 0 and stdout : file_desc = RunCall.unsafeCast 1 and stderr : file_desc = RunCall.unsafeCast 2 structure S = struct open BitFlags type mode = flags val irusr : mode = getConst 145 and iwusr : mode = getConst 146 and ixusr : mode = getConst 147 val irwxu : mode = flags[irusr, iwusr, ixusr] val irgrp : mode = getConst 148 and iwgrp : mode = getConst 149 and ixgrp : mode = getConst 150 val irwxg : mode = flags[irgrp, iwgrp, ixgrp] val iroth : mode = getConst 151 and iwoth : mode = getConst 152 and ixoth : mode = getConst 153 val irwxo : mode = flags[iroth, iwoth, ixoth] val isuid : mode = getConst 154 val isgid : mode = getConst 155 val all = flags [irwxu, irwxg, irwxo, isuid, isgid] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end local val o_rdonly = getConst 63 and o_wronly = getConst 64 and o_rdwr = getConst 65 fun toBits O_RDONLY = o_rdonly | toBits O_WRONLY = o_wronly | toBits O_RDWR = o_rdwr val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun openf(name, mode, flags) = let val bits = SysWord.orb(flags, toBits mode) in doIo(70, 0, (name, SysWord.toInt bits, 0)) end and createf(name, mode, flags, smode) = let val bits = SysWord.orb(flags, toBits mode) in doIo(71, 0, (name, SysWord.toInt bits, SysWord.toInt smode)) end end fun creat(s, m) = createf(s, O_WRONLY, O.trunc, m) local val doCall = osSpecificGeneral in fun umask m = SysWord.fromInt(doCall(50, SysWord.toInt m)) end local val doCall = osSpecificGeneral in fun link{old, new} = doCall(51, (old, new)) and symlink{old, new} = doCall(54, (old, new)) end local val doCall = osSpecificGeneral in fun mkdir(name, mode) = doCall(52, (name, SysWord.toInt mode)) and mkfifo(name, mode) = doCall(53, (name, SysWord.toInt mode)) and chmod(name, mode) = doCall(59, (name, SysWord.toInt mode)) end type dev = LargeInt.int and ino = LargeInt.int val wordToDev = SysWord.toLargeInt and devToWord = SysWord.fromLargeInt and wordToIno = SysWord.toLargeInt and inoToWord = SysWord.fromLargeInt structure ST = struct type stat = { mode: S.mode, kind: int, ino: ino, dev: dev, nlink: int, uid: uid, gid: gid, size: Position.int, atime: Time.time, mtime: Time.time, ctime: Time.time } (* The "kind" information is encoded by "stat" *) fun isDir({ kind, ...} : stat) = kind = 1 and isChr({ kind, ...} : stat) = kind = 2 and isBlk({ kind, ...} : stat) = kind = 3 and isReg({ kind, ...} : stat) = kind = 0 and isFIFO({ kind, ...} : stat) = kind = 4 and isLink({ kind, ...} : stat) = kind = 5 and isSock({ kind, ...} : stat) = kind = 6 val mode : stat -> S.mode = #mode and ino : stat -> ino = #ino val dev : stat -> dev = #dev val nlink : stat -> int = #nlink val uid : stat -> uid = #uid val gid : stat -> gid = #gid val size : stat -> Position.int = #size val atime : stat -> Time.time = #atime val mtime : stat -> Time.time = #mtime val ctime : stat -> Time.time = #ctime end local val doCall1 = osSpecificGeneral val doCall2 = osSpecificGeneral fun convStat(mode, kind, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = { mode = SysWord.fromInt mode, kind = kind, ino = ino, dev = dev, nlink = nlink, uid = uid, gid = gid, size = size, atime = atime, mtime = mtime, ctime = ctime } in fun stat name = convStat(doCall1(55, name)) and lstat name = convStat(doCall1(56, name)) and fstat f = convStat(doCall2(57, f)) end datatype access_mode = datatype OS.FileSys.access_mode local val doCall = osSpecificGeneral val rOK = getConst 156 and wOK = getConst 157 and eOK = getConst 158 and fOK = getConst 159 fun abit A_READ = rOK | abit A_WRITE = wOK | abit A_EXEC = eOK val abits = List.foldl (fn (a, b) => SysWord.orb(abit a,b)) 0w0 in (* If the bits are nil it tests for existence of the file. *) fun access(name, []) = doCall(58, (name, SysWord.toInt(fOK))) | access(name, al) = doCall(58, (name, SysWord.toInt(abits al))) end local val doCall = osSpecificGeneral in fun fchmod(fd, mode) = doCall(60, (fd, SysWord.toInt mode)) end local val doCall = osSpecificGeneral in fun chown(name, uid, gid) = doCall(61, (name, uid, gid)) end local val doCall = osSpecificGeneral in fun fchown(fd, uid, gid) = doCall(62, (fd, uid, gid)) end local val doCall1 = osSpecificGeneral and doCall2 = osSpecificGeneral in fun utime (name, NONE) = doCall1(64, name) | utime (name, SOME{actime, modtime}) = doCall2(63, (name, actime, modtime)) end local val doCall = osSpecificGeneral in fun ftruncate(fd, size) = doCall(65, (fd, size)) end local val doCall = osSpecificGeneral in fun pathconf(name, var) = let val res = doCall(66, (name, var)) in if res < 0 then NONE else SOME(SysWord.fromInt res) end end local val doCall = osSpecificGeneral in fun fpathconf(fd, var) = let val res = doCall(67, (fd, var)) in if res < 0 then NONE else SOME(SysWord.fromInt res) end end end; structure IO = struct type file_desc = OS.IO.iodesc and pid = Process.pid structure FD = struct open BitFlags val cloexec: flags = getConst 132 val all = flags [cloexec] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end (* Posix.IO.O seems to be a cut-down version of Posix.FileSys.O. It seems to me that one structure would suffice. *) structure O = FileSys.O datatype open_mode = datatype FileSys.open_mode local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun close (strm: file_desc): unit = doIo(7, strm, 0) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun readVec (strm: file_desc, len: int): Word8Vector.vector = doIo(26, strm, len) end local val doCall = osSpecificGeneral in fun pipe() = let val (inf, outf) = doCall(110, ()) in { infd=inf, outfd=outf } end end local val doCall = osSpecificGeneral in fun dup fd = doCall(111, fd) end local val doCall = osSpecificGeneral in fun dup2{old, new} = doCall(112, (old, new)) end local val doCall = osSpecificGeneral in fun dupfd{old, base} = doCall(113, (old, base)) end local val doCall = osSpecificGeneral val o_rdonly = getConst 63 and o_wronly = getConst 64 and o_accmode = getConst 166 (* Access mode mask. *) in fun getfd fd = SysWord.fromInt(doCall(114, fd)) and getfl fd = let val res = SysWord.fromInt(doCall(116, fd)) (* Separate out the mode bits. *) val flgs = SysWord.andb(res, SysWord.notb o_accmode) val mode = SysWord.andb(res, o_accmode) val omode = if mode = o_rdonly then O_RDONLY else if mode = o_wronly then O_WRONLY else O_RDWR in (flgs, omode) end end local val doCall = osSpecificGeneral in fun setfd(fd, flags) = doCall(115, (fd, SysWord.toInt flags)) and setfl(fd, flags) = doCall(117, (fd, SysWord.toInt flags)) end datatype whence = SEEK_SET | SEEK_CUR | SEEK_END local val seekSet = SysWord.toInt(getConst 160) and seekCur = SysWord.toInt(getConst 161) and seekEnd = SysWord.toInt(getConst 162) in (* Convert the datatype to the corresponding int. *) fun seekWhence SEEK_SET = seekSet | seekWhence SEEK_CUR = seekCur | seekWhence SEEK_END = seekEnd fun whenceSeek s = if s = seekSet then SEEK_SET else if s = seekCur then SEEK_CUR else SEEK_END end local val doCall = osSpecificGeneral in fun lseek(fd, pos, whence) = doCall(115, (fd, pos, seekWhence whence)) end local val doCall = osSpecificGeneral in fun fsync fd = doCall(119, fd) end datatype lock_type = F_RDLCK | F_WRLCK | F_UNLCK structure FLock = struct val fRdlck = SysWord.toInt(getConst 163) and fWrlck = SysWord.toInt(getConst 164) and fUnlck = SysWord.toInt(getConst 165) type flock = int (* lock type *) * int (* whence *) * Position.int (* start *) * Position.int (* len *) * pid fun flock{ltype, whence, start, len, pid} = let val lt = case ltype of F_RDLCK => fRdlck | F_WRLCK => fWrlck | F_UNLCK => fUnlck in (lt, seekWhence whence, start, len, getOpt(pid, ~1)) end fun ltype (lt, _, _, _, _) = if lt = fRdlck then F_RDLCK else if lt = fWrlck then F_WRLCK else F_UNLCK fun whence (fl: flock) = whenceSeek(#2 fl) val start : flock -> Position.int = #3 val len : flock -> Position.int = #4 fun pid (_, _, _, _, pid) = if pid < 0 then NONE else SOME pid end local val doCall = osSpecificGeneral in fun getlk(fd, (t, w, s, l, p)) = doCall(120, (fd, t, w, s, l, p)) (* Note: the return type of setlk and setlkw is Flock.lock not unit. I assume they simply return their argument. *) and setlk(fd, (t, w, s, l, p)) = doCall(121, (fd, t, w, s, l, p)) and setlkw(fd, (t, w, s, l, p)) = doCall(122, (fd, t, w, s, l, p)) end val readArr = LibraryIOSupport.readBinArray and writeVec = LibraryIOSupport.writeBinVec and writeArr = LibraryIOSupport.writeBinArray val mkTextReader = LibraryIOSupport.wrapInFileDescr and mkTextWriter = LibraryIOSupport.wrapOutFileDescr val mkBinReader = LibraryIOSupport.wrapBinInFileDescr and mkBinWriter = LibraryIOSupport.wrapBinOutFileDescr end; structure SysDB = struct type uid = ProcEnv.uid and gid = ProcEnv.gid structure Passwd = struct type passwd = string * uid * gid * string * string val name: passwd->string = #1 and uid: passwd->uid = #2 and gid: passwd->gid = #3 and home: passwd->string = #4 and shell: passwd->string = #5 end structure Group = struct type group = string * gid * string list val name: group->string = #1 and gid: group->gid = #2 and members: group->string list = #3 end local val doCall = osSpecificGeneral in fun getpwnam (s: string): Passwd.passwd = doCall(100, s) end local val doCall = osSpecificGeneral in fun getpwuid (u: uid): Passwd.passwd = doCall(101, u) end local val doCall = osSpecificGeneral in fun getgrnam (s: string): Group.group = doCall(102, s) end local val doCall = osSpecificGeneral in fun getgrgid (g: gid): Group.group = doCall(103, g) end end; structure TTY = struct type pid = Process.pid and file_desc = OS.IO.iodesc structure V = struct val eof = SysWord.toInt(getConst 72) and eol = SysWord.toInt(getConst 73) and erase = SysWord.toInt(getConst 74) and intr = SysWord.toInt(getConst 75) and kill = SysWord.toInt(getConst 76) and min = SysWord.toInt(getConst 77) and quit = SysWord.toInt(getConst 78) and susp = SysWord.toInt(getConst 79) and time = SysWord.toInt(getConst 80) and start = SysWord.toInt(getConst 81) and stop = SysWord.toInt(getConst 82) and nccs = SysWord.toInt(getConst 83) type cc = string fun cc l = (* Generate a string using the values given and defaulting the rest to NULL. *) let fun find [] _ = #"\000" | find ((n, c)::l) i = if i = n then c else find l i in CharVector.tabulate(nccs, find l) end (* Question: What order does this take? E.g. What is the result of update(cc, [(eof, #"a"), (eof, #"b")]) ? Assume that earlier entries take precedence. That also affects the processing of exceptions. *) fun update(cc, l) = let fun find [] i = String.sub(cc, i) | find ((n, c)::l) i = if i = n then c else find l i in CharVector.tabulate(nccs, find l) end val sub = String.sub end structure I = struct open BitFlags val brkint = getConst 84 and icrnl = getConst 85 and ignbrk = getConst 86 and igncr = getConst 87 and ignpar = getConst 88 and inlcr = getConst 89 and inpck = getConst 90 and istrip = getConst 91 and ixoff = getConst 92 and ixon = getConst 93 and parmrk = getConst 94 val all = flags [brkint, icrnl, ignbrk, igncr, ignpar, inlcr, inpck, istrip, ixoff, ixon, parmrk] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end structure O = struct open BitFlags val opost = getConst 95 val all = flags [opost] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end structure C = struct open BitFlags val clocal = getConst 96 and cread = getConst 97 and cs5 = getConst 98 and cs6 = getConst 99 and cs7 = getConst 100 and cs8 = getConst 101 and csize = getConst 102 and cstopb = getConst 103 and hupcl = getConst 104 and parenb = getConst 105 and parodd = getConst 106 val all = flags [clocal, cread, cs5, cs6, cs7, cs8, csize, cstopb, hupcl, parenb, parodd] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end structure L = struct open BitFlags val echo = getConst 107 and echoe = getConst 108 and echok = getConst 109 and echonl = getConst 110 and icanon = getConst 111 and iexten = getConst 112 and isig = getConst 113 and noflsh = getConst 114 and tostop = getConst 115 val all = flags [echo, echoe, echok, echonl, icanon, iexten, isig, noflsh, tostop] val intersect = List.foldl (fn (a, b) => SysWord.andb(a, b)) all end type speed = int (* compareSpeed is supposed to compare by the baud rate, not by the encoding. Provided the encoding maintains the ordering then that's fine. Maybe we should have an RTS call. *) val compareSpeed : speed * speed -> order = Int.compare and speedToWord : speed -> SysWord.word = SysWord.fromInt and wordToSpeed : SysWord.word -> speed = SysWord.toInt val b0 : speed = SysWord.toInt(getConst 116) and b50 : speed = SysWord.toInt(getConst 117) and b75 : speed = SysWord.toInt(getConst 118) and b110 : speed = SysWord.toInt(getConst 119) and b134 : speed = SysWord.toInt(getConst 120) and b150 : speed = SysWord.toInt(getConst 121) and b200 : speed = SysWord.toInt(getConst 122) and b300 : speed = SysWord.toInt(getConst 123) and b600 : speed = SysWord.toInt(getConst 124) and b1200 : speed = SysWord.toInt(getConst 125) and b1800 : speed = SysWord.toInt(getConst 126) and b2400 : speed = SysWord.toInt(getConst 127) and b4800 : speed = SysWord.toInt(getConst 128) and b9600 : speed = SysWord.toInt(getConst 129) and b19200 : speed = SysWord.toInt(getConst 130) and b38400 : speed = SysWord.toInt(getConst 131) type termios = { iflag : I.flags, oflag : O.flags, cflag : C.flags, lflag : L.flags, cc : V.cc, ispeed : speed, ospeed : speed } fun termios t = t and fieldsOf t = t val getiflag : termios -> I.flags = #iflag and getoflag : termios -> O.flags = #oflag and getcflag : termios -> C.flags = #cflag and getlflag : termios -> L.flags = #lflag and getcc : termios -> V.cc = #cc structure CF = struct val getospeed : termios -> speed = #ospeed and getispeed : termios -> speed = #ispeed fun setospeed ({ iflag, oflag, cflag, lflag, cc, ispeed, ... }, speed) = { iflag=iflag, oflag=oflag, cflag=cflag, lflag=lflag, cc=cc, ispeed = ispeed, ospeed = speed } fun setispeed ({ iflag, oflag, cflag, lflag, cc, ospeed, ... }, speed) = { iflag=iflag, oflag=oflag, cflag=cflag, lflag=lflag, cc=cc, ispeed = speed, ospeed = ospeed } end structure TC = struct type set_action = int val sanow : set_action = SysWord.toInt(getConst 135) val sadrain : set_action = SysWord.toInt(getConst 136) val saflush : set_action = SysWord.toInt(getConst 137) type flow_action = int val ooff : flow_action = SysWord.toInt(getConst 138) val oon : flow_action = SysWord.toInt(getConst 139) val ioff : flow_action = SysWord.toInt(getConst 140) val ion : flow_action = SysWord.toInt(getConst 141) type queue_sel = int val iflush : queue_sel = SysWord.toInt(getConst 142) val oflush : queue_sel = SysWord.toInt(getConst 143) val ioflush : queue_sel = SysWord.toInt(getConst 144) local val doCall = osSpecificGeneral in fun getattr f = let val (iflag, oflag, cflag, lflag, cc, ispeed, ospeed) = doCall(150, f) in { iflag=SysWord.fromInt iflag, oflag=SysWord.fromInt oflag, cflag=SysWord.fromInt cflag, lflag=SysWord.fromInt lflag, cc=cc, ispeed = ispeed, ospeed = ospeed } end end local val doCall = osSpecificGeneral in fun setattr (f, sa, {iflag, oflag, cflag, lflag, cc, ispeed, ospeed}) = doCall(151, (f, sa, SysWord.toInt iflag, SysWord.toInt oflag, SysWord.toInt cflag, SysWord.toInt lflag, cc, ispeed, ospeed)) end local val doCall = osSpecificGeneral in fun sendbreak (f, d) = doCall(152, (f, d)) end local val doCall = osSpecificGeneral in fun drain f = doCall(153, f) end local val doCall = osSpecificGeneral in fun flush (f, qs) = doCall(154, (f, qs)) end local val doCall = osSpecificGeneral in fun flow (f, fa) = doCall(155, (f, fa)) end end local val doCall = osSpecificGeneral in fun getpgrp (f: file_desc): pid = doCall(156, f) end local val doCall = osSpecificGeneral in fun setpgrp (f: file_desc, p: pid): unit = doCall(157, (f,p)) end end end; local (* Install the pretty printers for pid, uid, gid. Don't install one for signal because it's now the same as int. *) fun ppid _ _ x = PolyML.PrettyString(Int.toString(SysWord.toInt(Posix.Process.pidToWord x))) and puid _ _ x = PolyML.PrettyString(Int.toString(SysWord.toInt(Posix.ProcEnv.uidToWord x))) and pgid _ _ x = PolyML.PrettyString(Int.toString(SysWord.toInt(Posix.ProcEnv.gidToWord x))) in val () = PolyML.addPrettyPrinter ppid val () = PolyML.addPrettyPrinter puid val () = PolyML.addPrettyPrinter pgid end; polyml-5.7.1/basis/ArraySignature.sml0000644000175000017500000000402113204034553016552 0ustar daviddavid(* Title: Standard Basis Library: Array Signature Author: David Matthews Copyright David Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ARRAY = sig eqtype 'a array type 'a vector val maxLen : int val array : (int * 'a) -> 'a array val fromList : 'a list -> 'a array val vector: 'a array -> 'a vector val tabulate : (int * (int -> 'a)) -> 'a array val length : 'a array -> int val sub : ('a array * int) -> 'a val update : ('a array * int * 'a) -> unit val copy : {src : 'a array, dst : 'a array, di : int} -> unit val copyVec : {src : 'a vector, dst : 'a array, di : int} -> unit val appi : ((int * 'a) -> unit) -> 'a array -> unit val app : ('a -> unit) -> 'a array -> unit val foldli : ((int * 'a * 'b) -> 'b) -> 'b -> 'a array -> 'b val foldri : ((int * 'a * 'b) -> 'b) -> 'b -> 'a array -> 'b val foldl : (('a * 'b) -> 'b) -> 'b -> 'a array -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a array -> 'b val modifyi : ((int * 'a) -> 'a) -> 'a array -> unit val modify : ('a -> 'a) -> 'a array -> unit val findi: (int * 'a -> bool) -> 'a array -> (int * 'a) option val find: ('a -> bool) -> 'a array -> 'a option val exists: ('a -> bool) -> 'a array -> bool val all: ('a -> bool) -> 'a array -> bool val collate: ('a * 'a -> order) -> 'a array * 'a array -> order end; polyml-5.7.1/basis/Vector.sml0000644000175000017500000003504713204034553015070 0ustar daviddavid(* Title: Standard Basis Library: Vector Structure Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local (* Inherit the definition of vector in the initial environment. We have to declare vector in the initial environment in order for equality to work correctly. *) (* It would be simpler to be able to define these as functions to or from 'a vector but that gives error messages about free type variables. *) val vecAsWord: 'a vector -> word = RunCall.unsafeCast and wordAsVec: word -> 'a vector = RunCall.unsafeCast val intAsWord: int -> word = RunCall.unsafeCast and wordAsInt: word -> int = RunCall.unsafeCast (* All the arrays are initially created containing zeros and then initialised. *) fun alloc len = RunCall.allocateWordMemory(Word.fromInt len, 0wx40, 0w0) fun unsafeSub(v: 'a vector, i: int): 'a = RunCall.loadWord (vecAsWord v, intAsWord i) and unsafeUpdate(v: 'a vector, i: int, new: 'a): unit = RunCall.storeWord (vecAsWord v, intAsWord i, RunCall.unsafeCast new) in structure Vector: VECTOR = struct (* N.B. This implementation of vectors is implicitly used in Array.extract. Don't change this implementation without also changing that. It's also used in the interface to the RTS in OS.Poll and Socket.select. *) type 'a vector = 'a vector (* The maximum size of a vector is the maximum object size we can allocate. This is one more than the maximum size of an array. *) val maxLen = RunCall.unsafeCast LibrarySupport.maxAllocation infix 9 sub (* For what it's worth *) (* Lock the arrays after they have been created. All this does is switch off the "mutable" bit. This does not prevent updating of itself, the signature does that by removing "update", but improves g.c. performance and causes equality to check for value equality not pointer equality. *) val listLength = length; (* Pick this up from the prelude. *) fun length v = wordAsInt(RunCall.memoryCellLength(vecAsWord v)); fun op sub (vec:'a vector, i: int): 'a = let val v = vecAsWord vec in if not (LibrarySupport.isShortInt i) orelse intAsWord i >= RunCall.memoryCellLength v then raise General.Subscript else unsafeSub(vec, i) end (* Create a vector from a list. We have to treat an empty list specially because we don't allow zero sized heap objects. *) fun fromList [] : 'a vector = wordAsVec LibrarySupport.emptyVector (* Must not try to lock it. *) | fromList (l : 'a list) : 'a vector = let val length = listLength l; val () = if length >= maxLen then raise General.Size else () (* Make a vector initialised to zero. *) val vec = alloc length; (* Copy the list elements into the vector. *) fun init (v, i, a :: l) = ( RunCall.storeWord(v, intAsWord i, RunCall.unsafeCast a); init(v, i + 1, l) ) | init (_, _, []) = (); in init(vec, 0, l); RunCall.clearMutableBit vec; wordAsVec vec end fun tabulate (0, _) : 'a vector = wordAsVec LibrarySupport.emptyVector (* Must not try to lock it. *) | tabulate (length: int , f : int->'a): 'a vector = let val vec = if length > 0 andalso length < maxLen then alloc length else raise General.Size; (* Initialise it to the function values. *) fun init i = if length <= i then () else (RunCall.storeWord(vec, intAsWord i, RunCall.unsafeCast(f i)); init(i+1)) in init 0; RunCall.clearMutableBit vec; wordAsVec vec end fun concat [] = wordAsVec LibrarySupport.emptyVector | concat [v] = v (* Handle special cases to reduce copying. *) | concat l = let (* Calculate the total length *) fun total [] i = i | total (h::t) i = total t (i+length h) val total_len = total l 0 in if total_len = 0 then wordAsVec LibrarySupport.emptyVector else if total_len >= maxLen then raise General.Size else let (* Allocate a new vector. *) val new_vec = alloc total_len fun copy_list [] _ = () | copy_list (h::t) j = let val v = vecAsWord h val src_len = length h in RunCall.moveWords(v, new_vec, 0w0, Word.fromInt j, Word.fromInt src_len); copy_list t (j+src_len) end in copy_list l 0; RunCall.clearMutableBit new_vec; wordAsVec new_vec end end fun map (f: 'a->'b) (vec: 'a vector): 'b vector = let val len = length vec in if len = 0 then wordAsVec LibrarySupport.emptyVector else let (* Allocate a new vector. *) val new_vec = alloc len val newResult = wordAsVec new_vec fun domap i = if i >= len then () else (unsafeUpdate(newResult, i, f(unsafeSub(vec, i))); domap(i+1)) in domap 0; RunCall.clearMutableBit new_vec; newResult end end fun mapi (f: int*'a->'b) (vec:'a vector): 'b vector = let val len = length vec in if len = 0 then wordAsVec LibrarySupport.emptyVector else let (* Allocate a new vector. *) val new_vec = alloc len val newResult = wordAsVec new_vec fun domap i = if i >= len then () else (unsafeUpdate(newResult, i, f(i, unsafeSub(vec, i))); domap(i+1)) in domap 0; RunCall.clearMutableBit new_vec; newResult end end (* Create a new vector with the ith element replaced by c *) fun update(v: 'a vector, i , c) = if i < 0 orelse i >= length v then raise Subscript else mapi (fn (j, s) => if j = i then c else s) v (* Create the other functions. *) structure VectorOps = PolyVectorOperations( struct type 'a vector = 'a vector fun length v = RunCall.memoryCellLength(vecAsWord v) local val u = unsafeSub in fun unsafeSub (v: 'a vector, i: word) = u(v, wordAsInt i) end fun unsafeSet _ = raise Fail "Should not be called" end); open VectorOps; local (* Install the pretty printer for vectors *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) (printElem: 'a * FixedInt.int -> PolyML.pretty) (x: 'a vector) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( printElem(w, d-1) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end (* Vector *) structure VectorSlice = struct datatype 'a slice = Slice of { vector: 'a vector, start: int, length: int }; fun length(Slice{length, ...}) = length fun op sub (Slice{vector, start, length}, i: int): 'a = if i < 0 orelse i >= length then raise General.Subscript else unsafeSub(vector, i+start) (* Create a slice from a vector. *) fun slice(vec: 'a vector, i: int, NONE) = let val len = Vector.length vec in if i >= 0 andalso i <= len then Slice{vector=vec, start=i, length=len-i} (* Length is rest of vector. *) else raise General.Subscript end | slice(vec: 'a vector, i: int, SOME l) = let val len = Vector.length vec in if i >= 0 andalso l >= 0 andalso i+l <= len then Slice{vector=vec, start=i, length=l} (* Length is as given. *) else raise General.Subscript end (* Slice from the whole vector. *) fun full v = Slice{vector=v, start=0, length=Vector.length v} (* Slice from existing slice *) fun subslice(Slice{vector, start, length}, i: int, NONE) = if i >= 0 andalso i <= length then Slice{vector=vector, start=i+start, length=length-i} (* Length is rest of array. *) else raise General.Subscript | subslice(Slice{vector, start, length}, i: int, SOME l) = if i >= 0 andalso l >= 0 andalso i+l <= length then Slice{vector=vector, start=i+start, length=l} (* Length is as given. *) else raise General.Subscript fun vector(Slice{vector, start, length}) = if length = 0 then wordAsVec LibrarySupport.emptyVector (* Special case for zero *) else let (* Make a vector initialised to zero. *) val new_vec = alloc length in RunCall.moveWords(vecAsWord vector, new_vec, Word.fromInt start, 0w0, Word.fromInt length); RunCall.clearMutableBit new_vec; wordAsVec new_vec end fun base(Slice{vector, start, length}) = (vector, start, length) fun isEmpty(Slice{length, ...}) = length = 0 (* Return the first item of the slice and the rest of the slice. *) fun getItem(Slice{length=0, ...}) = NONE | getItem(Slice{vector, start, length}) = SOME(unsafeSub(vector, start), Slice{vector=vector, start=start+1, length=length-1}) fun concat [] = wordAsVec LibrarySupport.emptyVector | concat l = let (* Calculate the total length *) fun total [] i = i | total (h::t) i = total t (i+length h) val total_len = total l 0 in if total_len = 0 then wordAsVec LibrarySupport.emptyVector else let (* Allocate a new vector. *) val new_vec = alloc total_len fun copy_list [] _ = () | copy_list (Slice{vector, start, length}::t) j = ( RunCall.moveWords(vecAsWord vector, new_vec, Word.fromInt start, Word.fromInt j, Word.fromInt length); copy_list t (j+length) ) in copy_list l 0; RunCall.clearMutableBit new_vec; wordAsVec new_vec end end fun map (f: 'a->'b) (Slice{vector:'a Vector.vector, start, length}): 'b Vector.vector = if length = 0 then wordAsVec LibrarySupport.emptyVector else let (* Allocate a new vector. *) val new_vec = alloc length val newResult = wordAsVec new_vec fun domap i = if i >= length then () else (unsafeUpdate(newResult, i, f(unsafeSub(vector, i+start))); domap(i+1)) in domap 0; RunCall.clearMutableBit new_vec; newResult end fun mapi (f: int*'a->'b) (Slice{vector:'a Vector.vector, start, length}): 'b Vector.vector = if length = 0 then wordAsVec LibrarySupport.emptyVector else let (* Allocate a new vector. *) val new_vec = alloc length val newResult = wordAsVec new_vec fun domap i = if i >= length then () else (unsafeUpdate(newResult, i, f(i, unsafeSub(vector, i+start))); domap(i+1)) in domap 0; RunCall.clearMutableBit new_vec; newResult end (* Create the other functions. *) structure VectorOps = PolyVectorOperations( struct type 'a vector = 'a slice fun length(Slice{length, ...}) = intAsWord length val unsafeSub = fn (Slice{vector, start, ...}, i) => unsafeSub (vector, wordAsInt i + start) fun unsafeSet _ = raise Fail "Should not be called" end); open VectorOps; end (* VectorSlice *) end (* Local in end *); structure VectorSlice :> VECTOR_SLICE = VectorSlice; local open VectorSlice (* Install the pretty printer for vector slices *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) (printElem: 'a * FixedInt.int -> PolyML.pretty) (x: 'a slice) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( printElem(w, d-1) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end ; (* type 'a vector is available unqualified in the global basis. *) val vector : 'a list -> 'a vector = Vector.fromList; polyml-5.7.1/basis/Word8Array.sml0000644000175000017500000004246113204034553015626 0ustar daviddavid(* Title: Standard Basis Library: Word8Array, Word8Vector and Byte Structures Author: David Matthews Copyright David Matthews 1999, 2005, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local (* We can't use the segment length for the length of the vector as we do for "normal" arrays and vectors. There are two ways of handling this. We could implement byte vectors in the same way as strings, with a length word in the first word, or we could store the length separately, as with arrays. We could, of course, treat arrays in the same way. Implementing vectors as strings simplifies conversion between the two and that's the approach I've adopted. *) open LibrarySupport type vector = LibrarySupport.Word8Array.vector datatype array = datatype LibrarySupport.Word8Array.array val System_move_bytes: address*address*word*word*word->unit = RunCall.moveBytes fun System_move_str(src: vector, dst: address, srcOffset: word, dstOffset: word, length: word): unit = RunCall.moveBytes(src, RunCall.unsafeCast dst, srcOffset, dstOffset, length) val emptyVec: vector = w8vectorFromString "" (* This is represented by a null string not a null vector. *) val maxLen = CharVector.maxLen val wVecLength: vector -> word = LibrarySupport.Word8Array.wVecLength val vecLength: vector -> int = Word.toInt o wVecLength (* Casts between int and word. *) val intAsWord: int -> word = RunCall.unsafeCast and wordAsInt: word -> int = RunCall.unsafeCast infix 9 sub (* For what it's worth *) in (* We don't use opaque matching because we need the internal representation of vector and array in the IO structures. *) structure Word8Vector : MONO_VECTOR = struct type elem = Word8.word type vector = vector val maxLen = maxLen; val length = vecLength fun op sub (v, i: int): elem = if i < 0 orelse i >= length v then raise General.Subscript else RunCall.loadByteFromImmutable (v, intAsWord i + wordSize) (* Because Word8Vector.vector is implemented as a string and Word8.word as a byte all these functions have the same implementation in Word8Vector and CharVector. We might be able to avoid the casts by some clever use of opaque matching but we would have to do the conversion of Word8.word from char to an opaque type at the same time as converting Word8Vector.elem to preserve the sharing. *) (* Can't that be achieved by Word8Vector :> MONO_VECTOR where type elem = Word8.word ? *) val fromList: Word8.word list -> vector = RunCall.unsafeCast CharVector.fromList and tabulate: int * (int->Word8.word) -> vector = RunCall.unsafeCast CharVector.tabulate and concat: vector list -> vector = RunCall.unsafeCast CharVector.concat and map: (elem -> elem) -> vector -> vector = RunCall.unsafeCast CharVector.map and mapi: ((int * elem) -> elem) -> vector -> vector = RunCall.unsafeCast CharVector.mapi and update: vector * int * elem -> vector = RunCall.unsafeCast CharVector.update (* Create the other functions. *) structure VectorOps = VectorOperations( struct type vector = vector and elem = elem val length = wVecLength fun unsafeSub (s, i) = RunCall.loadByteFromImmutable(s, i + wordSize) fun unsafeSet _ = raise Fail "Should not be called" end); open VectorOps; local (* Install the pretty printer for Word8Vector.vector *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) _ (x: vector) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString("0wx" ^ Word8.toString w) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end (* Vector *); structure Word8Array : MONO_ARRAY = struct type array = array type elem = Word8.word type vector = vector val maxLen = maxLen; fun length(Array(l, _)) = wordAsInt l fun array (length, ini) = let val len = unsignedShortOrRaiseSize length val vec = LibrarySupport.allocBytes len (* LibrarySupport.allocBytes does not initialise anything except the overflow bytes *) fun init i = if len <= i then () else (RunCall.storeByte(vec, i, ini); init(i+0w1)) in init 0w0; Array(len, vec) end fun op sub (Array(l, v), i: int): elem = if i < 0 orelse i >= wordAsInt l then raise General.Subscript else RunCall.loadByte (v, intAsWord i) fun update (Array (l, v), i: int, new) : unit = if i < 0 orelse i >= wordAsInt l then raise General.Subscript else RunCall.storeByte (v, intAsWord i, new); (* Create an array from a list. *) fun fromList (l : elem list) : array = let val length = unsignedShortOrRaiseSize(List.length l) (* Make an unitialised array. *) val vec = LibrarySupport.allocBytes length; (* Copy the list elements into the array. *) fun init (v, i, a :: l) = (RunCall.storeByte(v, i, a); init(v, i + 0w1, l)) | init (_, _, []) = (); in init(vec, 0w0, l); Array(length, vec) end fun tabulate (length: int , f : int->elem): array = let val len = unsignedShortOrRaiseSize length val vec = LibrarySupport.allocBytes len (* Initialise it to the function values. *) fun init i = if len <= i then () else (RunCall.storeByte(vec, i, f(wordAsInt i)); init(i+0w1)) in init 0w0; Array(len, vec) end fun vector(Array(len, vec)) = if len = 0w0 then emptyVec else let (* Make an array initialised to zero. *) val new_vec = allocString len in System_move_bytes(vec, RunCall.unsafeCast new_vec, 0w0, wordSize, len); RunCall.clearMutableBit new_vec; w8vectorFromString new_vec end (* Copy an array into another. It's possible for the arrays to be the same but in that case di must be zero (since len = dlen) and the copy is a no-op. *) fun copy {src=Array (len, s), dst=Array (dlen, d), di: int} = let val diW = unsignedShortOrRaiseSubscript di in if diW+len > dlen then raise General.Subscript else System_move_bytes(s, d, 0w0, diW, len) end (* Copy a vector into an array. *) fun copyVec {src, dst=Array (dlen, d), di: int} = let val len = intAsWord(vecLength src) val diW = unsignedShortOrRaiseSubscript di in if diW + len > dlen then raise General.Subscript else System_move_str(src, d, wordSize, diW, len) end (* Create the other functions. *) structure ArrayOps = VectorOperations( struct type vector = array and elem = elem fun length(Array(len, _)) = len fun unsafeSub(Array(_, v), i) = RunCall.loadByte(v, i) and unsafeSet(Array(_, v), i, c) = RunCall.storeByte(v, i, c) end); open ArrayOps; local (* Install the pretty printer for Word8Array.array *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) _ (x: array) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString("0wx" ^ Word8.toString w) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end (* Word8Array *); structure Word8VectorSlice:> MONO_VECTOR_SLICE where type elem = Word8.word where type vector = Word8Vector.vector = (* We use opaque matching here simply to remove a confusing reference to VectorSliceOps when the type is printed. *) struct type vector = vector and elem = Word8.word structure VectorSliceOps = VectorSliceOperations( struct type vector = vector and elem = Word8.word val vecLength = wVecLength fun unsafeVecSub(s, i: word) = RunCall.loadByteFromImmutable(s, i + wordSize) fun unsafeVecUpdate _ = raise Fail "Should not be called" (* Not applicable *) end); open VectorSliceOps; (* vector: get the slice out. Since the underlying vector is implemented using the basic string type we can use substring here. *) fun vector slice : vector = let val (vector, start, length) = base slice in w8vectorFromString(unsafeSubstring(w8vectorToString vector, intAsWord start, intAsWord length)) end; (* It would be more efficient to do these as single operations but it's probably too complicated. *) fun concat L = Word8Vector.concat(List.map vector L) fun map f slice = Word8Vector.map f (vector slice) fun mapi f slice = Word8Vector.mapi f (vector slice) end (* Word8VectorSlice *); local (* Install the pretty printer for Word8VectorSlice.slice *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) _ (x: Word8VectorSlice.slice) = let open PolyML Word8VectorSlice val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString("0wx" ^ Word8.toString w) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val _ = PolyML.addPrettyPrinter pretty end; structure Word8ArraySlice:> MONO_ARRAY_SLICE where type elem = Word8.word where type vector = Word8Vector.vector where type vector_slice = Word8VectorSlice.slice where type array = Word8Array.array = struct structure VectorSliceOps = VectorSliceOperations( struct type vector = array and elem = Word8.word fun unsafeVecSub(Array(_, s), i) = RunCall.loadByte(s, i) and unsafeVecUpdate(Array(_, s), i, x) = RunCall.storeByte (s, i, x) and vecLength(Array(l, _)) = l end); open VectorSliceOps; type elem = Word8.word type vector = vector type array = array type vector_slice = Word8VectorSlice.slice (* vector: get the slice out. *) fun vector slice: vector = let val (Array(_, vec), start, length) = base slice in if length = 0 then emptyVec else let val len = intAsWord length (* Make an array initialised to zero. *) val new_vec = allocString len in System_move_bytes(vec, RunCall.unsafeCast new_vec, intAsWord start, wordSize, len); RunCall.clearMutableBit new_vec; w8vectorFromString new_vec end end (* Copy a slice into an array. N.B. The arrays could be the same. *) fun copy {src, dst, di: int} = let val (src, start, length) = base src in if di < 0 orelse di+length > Word8Array.length dst then raise General.Subscript else (* We can't use MoveBytes because of the potential overlap problem. Instead we use explicit copying choosing to copy up or down depending on the index whether the source and destination are the same or not. We could use MoveBytes if we know the arrays are different. *) let fun copyUp n = if n = length then () else (Word8Array.update(dst, n+di, Word8Array.sub(src, n+start)); copyUp(n+1)) and copyDown n = if n < 0 then () else (Word8Array.update(dst, n+di, Word8Array.sub(src, n+start)); copyDown(n-1)) in if di > start then copyDown(length-1) else copyUp 0 end end (* Copy a vector slice into an array. *) fun copyVec {src: Word8VectorSlice.slice, dst=Array (dlen, d), di: int} = let val (source, i, l) = Word8VectorSlice.base src val len = intAsWord l and offset = intAsWord i val diW = unsignedShortOrRaiseSubscript di in if diW + len > dlen then raise General.Subscript else System_move_str(source, d, offset + wordSize, diW, len) end end (* Word8ArraySlice *); local (* Install the pretty printer for Word8ArraySlice.slice *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) _ (x: Word8ArraySlice.slice) = let open PolyML Word8ArraySlice val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString("0wx" ^ Word8.toString w) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end; polyml-5.7.1/basis/IntArray2.sml0000644000175000017500000001071113204034553015430 0ustar daviddavid(* Title: Standard Basis Library: Mono_Array2 signature and structures. Author: David Matthews Copyright David Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: no change. *) signature MONO_ARRAY2 = sig eqtype array type elem type vector type region = { base : array, row : int, col : int, nrows : int option, ncols : int option } datatype traversal = datatype Array2.traversal val array : int * int * elem -> array val fromList : elem list list -> array val tabulate : traversal -> int * int * (int * int -> elem) -> array val sub : array * int * int -> elem val update : array * int * int * elem -> unit val dimensions : array -> int * int val nCols : array -> int val nRows : array -> int val row: array * int -> vector val column: array * int -> vector val copy: { src : region, dst : array, dst_row : int, dst_col : int } -> unit val appi: Array2.traversal -> (int * int * elem -> unit) -> region -> unit val app: Array2.traversal -> (elem -> unit) -> array -> unit val modifyi: Array2.traversal -> (int * int * elem -> elem) -> region -> unit val modify: Array2.traversal -> (elem -> elem) -> array -> unit val foldi: Array2.traversal -> (int * int * elem * 'b -> 'b) -> 'b -> region -> 'b val fold: Array2.traversal -> (elem * 'b -> 'b) -> 'b -> array -> 'b end; (* All these are simply defined in terms of Array2, at least for the moment. *) structure Word8Array2 : MONO_ARRAY2 where type vector = Word8Vector.vector where type elem = Word8.word = struct open Array2 type elem = Word8.word type vector = Word8Vector.vector type elem = Word8.word type array = elem array type region = elem region (* Have to redefine row and column in terms of Word8Vector. *) fun row(a, i) = Word8Vector.tabulate(nCols a, fn j => sub(a, i, j)) and column(a, j) = Word8Vector.tabulate(nRows a, fn i => sub(a, i, j)) end; structure CharArray2 : MONO_ARRAY2 where type vector = CharVector.vector where type elem = char = struct open Array2 type elem = char type vector = CharVector.vector type array = elem array type region = elem region fun row(a, i) = CharVector.tabulate(nCols a, fn j => sub(a, i, j)) and column(a, j) = CharVector.tabulate(nRows a, fn i => sub(a, i, j)) end; structure BoolArray2 : MONO_ARRAY2 where type vector = BoolVector.vector where type elem = bool = struct open Array2 type elem = bool type vector = BoolVector.vector type array = elem array type region = elem region fun row(a, i) = BoolVector.tabulate(nCols a, fn j => sub(a, i, j)) and column(a, j) = BoolVector.tabulate(nRows a, fn i => sub(a, i, j)) end; structure IntArray2 : MONO_ARRAY2 where type vector = IntVector.vector where type elem = int = struct open Array2 type elem = int type vector = IntVector.vector type array = elem array type region = elem region fun row(a, i) = IntVector.tabulate(nCols a, fn j => sub(a, i, j)) and column(a, j) = IntVector.tabulate(nRows a, fn i => sub(a, i, j)) end; structure RealArray2 : MONO_ARRAY2 where type vector = RealVector.vector where type elem = real = struct open Array2 type elem = real type vector = RealVector.vector type array = elem array type region = elem region fun row(a, i) = RealVector.tabulate(nCols a, fn j => sub(a, i, j)) and column(a, j) = RealVector.tabulate(nRows a, fn i => sub(a, i, j)) end; polyml-5.7.1/basis/Date.sml0000644000175000017500000005015013204034553014473 0ustar daviddavid(* Title: Standard Basis Library: Date structure. Copyright David Matthews 2000, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Date :> DATE = struct (* There seems to be an assumption, particularly in the "compare" function, that Date.date values are records of year, month, day etc. *) type date = { year: int, (* Signed year. *) month: int, (* Month as 0..11 *) day: int, (* Day as 1..(28, 29, 30, 31) *) hour: int, (* Hour as 0..23 *) minute: int, (* Minute as 0..59 *) second: int, (* Second as 0..59 (maybe 60 or 61 if leap) *) offset: Time.time option (* Offset as Time.time -24hrs raise Date (* Should never happen *) fun isLeapYear(l: int): bool = if l mod 100 = 0 then (l div 100) mod 4 = 0 else l mod 4 = 0 (* Convert the enumerated type to a month number. *) fun monthToMonthNo Jan = 0 | monthToMonthNo Feb = 1 | monthToMonthNo Mar = 2 | monthToMonthNo Apr = 3 | monthToMonthNo May = 4 | monthToMonthNo Jun = 5 | monthToMonthNo Jul = 6 | monthToMonthNo Aug = 7 | monthToMonthNo Sep = 8 | monthToMonthNo Oct = 9 | monthToMonthNo Nov = 10 | monthToMonthNo Dec = 11 local val timingGeneralCall = RunCall.rtsCallFull2 "PolyTimingGeneral" fun timingGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(timingGeneralCall(RunCall.unsafeCast(code, arg))) in fun callTiming (code: int) args = timingGeneral (code,args) end (* Get the local time offset which applied at the specific time. The time is in seconds since the epoch. The result may be the current time offset if it is outside the range for which we have information. We use seconds as the argument and result here because it avoids having to multiply and divide arbitrary precision values in the RTS. May raise Size if the value is too large (or small). In that case we use the current time offset. *) fun localOffsetApplying (t: LargeInt.int) : LargeInt.int = callTiming 4 t handle General.Size => callTiming 4 (Time.toSeconds(Time.now())) (* Get the current local time offset. *) fun localOffset (): Time.time = Time.fromSeconds(localOffsetApplying(Time.toSeconds(Time.now()))) local (* Time values are since 1st January of this year. *) val baseYear: int = callTiming 2 0 (* 1601 or 1970 *) val yearOffset: int = callTiming 3 0 (* The offset of zeroTime within that year. 0 on both Unix and Windows *) (* Get the day in the year. Either of day or year may be unnormalised but that shouldn't affect the result (except if year is negative???) *) fun dayInYear (day, month, year) = if isLeapYear year then Vector.sub(dayInLeapYearVec, month) + day else Vector.sub(dayVec, month) + day (* Compute the number of days since the start. *) fun yearToDays y = let fun ytod dys yr = if yr = baseYear then dys (* If the year is before the base year we subtract the number of days in this year and recurse. *) else if yr < baseYear then if isLeapYear yr then ytod (dys-366) (yr+1) else ytod (dys-365) (yr+1) (* The year we want is after the base year. *) else if yr - baseYear >= 100 (* If it is more than a century apart then we can add in the number of days in a century. There are 24 leap years in most centuries except those which are divisible by 400. Note: We're assuming the Gregorian calendar. *) then if ((yr-1) div 100) mod 4 = 0 then ytod (dys+36525) (yr-100) else ytod (dys+36524) (yr-100) else if isLeapYear(yr-1) then ytod (dys+366) (yr-1) else ytod (dys+365) (yr-1) in ytod 0 y end (* Convert days to number of years plus the day within the year. *) fun daysToYears d = let fun dtoy dys yr = if dys < 0 then (* Before the base year: have to add in days. *) if isLeapYear (yr-1) then dtoy (dys+366) (yr-1) else dtoy (dys+365) (yr-1) (* If we are at least a century away we can subtract the century. *) else if dys >= 36525 then if ((yr+99) div 100) mod 4 = 0 then dtoy (dys-36525) (yr+100) else dtoy (dys-36524) (yr+100) else if isLeapYear yr then if dys >= 366 then dtoy (dys-366) (yr+1) else (yr, dys) else if dys >= 365 then dtoy (dys-365) (yr+1) else (yr, dys) in dtoy d baseYear end (* Convert a number of seconds to a date. *) fun fromSeconds t (tzOffset: Time.time option) : date = let val tsecs = t - LargeInt.fromInt yearOffset val secs = LargeInt.toInt(tsecs mod 60) val mins = LargeInt.toInt((tsecs div 60) mod 60) val hrs = LargeInt.toInt((tsecs div secsPerHour) mod 24) (* Get the day and year. The day is a value between 0 and 364/365. *) val (year, days) = daysToYears(LargeInt.toInt(tsecs div secsPerDay)) (* Convert the day into a month+day *) val isLeap = isLeapYear year fun dayToMonth dy mth = if dy <= Vector.sub(if isLeap then dayInLeapYearVec else dayVec, mth+1) then mth else dayToMonth dy (mth+1) val month = dayToMonth days 0 val dayInMonth = days - Vector.sub(if isLeap then dayInLeapYearVec else dayVec, month) in {year=year, month=month, day=dayInMonth, hour=hrs, minute=mins, second=secs, offset = tzOffset } end in (* Get the day in the year. *) fun yearDay({day, month, year, ...}:date) = dayInYear(day, month, year) (* Convert the date into a UTC time value. *) fun toTime (date as {year, hour, minute, second, offset, ...}) = let (* Compute the seconds. *) val secs = LargeInt.fromInt second + LargeInt.fromInt minute * 60 + LargeInt.fromInt hour * secsPerHour + LargeInt.fromInt(yearDay date + yearToDays year) * secsPerDay + LargeInt.fromInt yearOffset in case offset of SOME t => Time.+(t, Time.fromSeconds secs) | NONE => Time.fromSeconds(secs + localOffsetApplying secs) end (* Convert a UTC time to a UTC date. *) fun fromTimeUniv t = fromSeconds (Time.toSeconds t) (SOME Time.zeroTime) (* Convert a UTC time to a date in the local time zone. *) fun fromTimeLocal t = let val secs = Time.toSeconds t val localOffset = localOffsetApplying secs in fromSeconds (secs-localOffset) NONE end (* Generate a normalised date. *) fun date {year, month, day, hour, minute, second, offset} = let (* Get the time zone information if it is provided. If it is outside +/- 24 hours we get the number of full days. *) val (tzDays, normTz) = case offset of SOME tz => let open Time val excess = LargeInt.quot(Time.toSeconds tz, secsPerDay)*secsPerDay; in (excess, SOME(tz-Time.fromSeconds excess)) end | NONE => (0, NONE) (* Convert it to the number of seconds since the epoch which will normalise it. *) val secs = LargeInt.fromInt second + LargeInt.fromInt minute * 60 + LargeInt.fromInt hour * secsPerHour + LargeInt.fromInt (dayInYear(day, monthToMonthNo month, year) + yearToDays year) * secsPerDay + LargeInt.fromInt yearOffset + tzDays in (* Convert it into a date. *) fromSeconds secs normTz end end val year: date->int = #year and day: date->int = #day and hour: date->int = #hour and minute: date->int = #minute and second: date->int = #second and offset: date->Time.time option = #offset (* Return the month from the enumerated type. *) fun month({month, ...}:date) = monthNoToMonth month (* Get the day of the week as a number - not exported. *) fun dayOfWeek({year, month, day, ...}: date) = let (* From looking at the code of mktime, which is marked as being in the public domain, this formula (Zeller's Congruence?) is used to find the day of the week for the first of any month. I don't know what range this works for but it seems accurate as far as I can test it. *) val m0 = month+1 (* Count months from 1 *) val m1 = (m0 + 9) mod 12 + 1 val yy0 = if m0 <= 2 then year-1 else year val yy1 = yy0 div 100 val yy2 = yy0 mod 100 val dow = ((26*m1 - 2) div 10 + 1 + yy2 + yy2 div 4 + yy1 div 4 - 2*yy1) mod 7 in (* Add on the day within the month. *) (dow + day - 1) mod 7 end (* Get day of week as an enumerated type - exported. *) fun weekDay date = Vector.sub(dayOfWkVec, dayOfWeek date) (* QUESTION: The definition of isDst is very vague. I am assuming that it means that, for a local time, did/will Summer Time apply at that time? *) fun isDst (d as {offset=NONE, ...} : date): bool option = let val isSummer = callTiming 5 (Time.toSeconds(toTime d)) handle Size => ~1 in if isSummer < 0 then NONE else SOME (isSummer > 0) end | isDst {offset=SOME _, ...} = SOME false (* ?? *) (* Compare the dates ignoring time zone information. *) fun compare({year=y1, month=m1, day=d1, hour=h1, minute=n1, second=s1, ...}:date, {year=y2, month=m2, day=d2, hour=h2, minute=n2, second=s2, ...}:date) = if y1 < y2 then General.LESS else if y1 > y2 then General.GREATER else if m1 < m2 then General.LESS else if m1 > m2 then General.GREATER else if d1 < d2 then General.LESS else if d1 > d2 then General.GREATER else if h1 < h2 then General.LESS else if h1 > h2 then General.GREATER else if n1 < n2 then General.LESS else if n1 > n2 then General.GREATER else Int.compare(s1, s2) (* Parse a date/time. *) fun scan getc str = let (* Try to extract an n-character string. *) fun getChars n str = let fun getN 0 s str = SOME (String.implode(List.rev s), str) | getN n s str = case getc str of NONE => NONE | SOME(ch, str') => getN (n-1) (ch :: s) str' in getN n [] str end (* Get the day of the week. We don't actually use it but we need to verify it. *) (* QUESTION: What time offset should be used? I presume NONE. *) fun parseDayOfWeek str = case getChars 3 str of NONE => NONE | SOME(s, str') => if Vector.foldr (fn(s', t) => t orelse s=s') false dayNames then SOME(s, str') else NONE fun parseMonth str = case getChars 3 str of NONE => NONE | SOME(s, str') => (* Return the month corresponding to the month name otherwise NONE. *) Vector.foldri (fn(n:int, s':string, t) => if s = s' then SOME(Vector.sub(monthVec, n), str') else t) NONE monthNames (* Get a two digit number. *) fun parse2Digits str = case getc str of NONE => NONE | SOME(ch0, str1) => if ch0 < #"0" orelse ch0 > #"9" then NONE else case getc str1 of NONE => NONE | SOME(ch1, str2) => if ch1 < #"0" orelse ch1 > #"9" then NONE else SOME((Char.ord ch0 - Char.ord #"0")*10 + (Char.ord ch1 - Char.ord #"0"), str2) (* Get two digits as a day of the month. Don't check the range. *) val parseDayOfMonth = parse2Digits (* A time is written as hh:mm:ss *) fun parseTime str = case parse2Digits str of NONE => NONE | SOME(hh, str1) => case getc str1 of NONE => NONE | SOME(ch, str2) => if ch <> #":" then NONE else case parse2Digits str2 of NONE => NONE | SOME(mm, str3) => case getc str3 of NONE => NONE | SOME(ch, str4) => if ch <> #":" then NONE else case parse2Digits str4 of NONE => NONE | SOME(ss, str5) => SOME((hh, mm, ss), str5) (* A year is represented as four digits. *) fun parseYear str = case parse2Digits str of NONE => NONE | SOME(yy0, str1) => case parse2Digits str1 of NONE => NONE | SOME(yy1, str2) => SOME(yy0*100+yy1, str2) fun parseDate str = case parseDayOfWeek str of NONE => NONE | SOME(_, str1) => case getc str1 of (* Get exactly one space. *) NONE => NONE | SOME(ch, str2) => if ch <> #" " then NONE else case parseMonth str2 of (* Name of month. *) NONE => NONE | SOME(mth, str3) => case getc str3 of (* Get exactly one space. *) NONE => NONE | SOME(ch, str4) => if ch <> #" " then NONE else case parseDayOfMonth str4 of NONE => NONE | SOME(day, str5) => case getc str5 of (* Get exactly one space. *) NONE => NONE | SOME(ch, str6) => if ch <> #" " then NONE else case parseTime str6 of NONE => NONE | SOME((hr,min,sec), str7) => case getc str7 of (* Get exactly one space. *) NONE => NONE | SOME(ch, str8) => if ch <> #" " then NONE else case parseYear str8 of NONE => NONE | SOME(year, str9) => SOME(date{year=year, month=mth, day=day, hour=hr, minute=min, second=sec, offset=NONE}, str9) in case getc str of NONE => NONE | SOME (ch, str') => (* Remove initial white space. *) if Char.isSpace ch then scan getc str' else parseDate str end val fromString = StringCvt.scanString scan (* toString generates an English language, American style date. *) fun toString (date as {year, month, day, hour, minute, second, ...}: date) = let (* Pad a number with zeros up to the required width. Doesn't work for negatives which ought to be padded after the minus sign, but that's only a problem for years. *) fun int2str n i = let val str = Int.toString i fun padZeros n = if n <= 0 then "" else "0" ^ padZeros (n-1) in padZeros (n-String.size str) ^ str end in String.concat[ Vector.sub(dayNames, dayOfWeek date), " ", Vector.sub(monthNames, month), " ", int2str 2 day, " ", int2str 2 hour, ":", int2str 2 minute, ":", int2str 2 second, " ", int2str 4 year] end fun fmt s (date as {year, month, day, hour, minute, second, offset}) = let (* Edit the string to remove any undefined escape combinations. They shouldn't normally occur. *) fun editString s i l = if i = l then s (* Done *) else if String.sub(s, i) <> #"%" then editString s (i+1) l else (* Found a % sign. *) if i = l-1 then (* This was the last character. QUESTION: This isn't defined assume we should remove it. *) String.substring(s, 0, i) else let val c = String.sub(s, i+1) in if Char.contains "aAbBcdHIjmMpSUwWxXyYZ%" c then (* OK *) editString s (i+2) l else (* Replace %c by c, i.e. remove the %. *) editString (String.substring(s, 0, i) ^ String.substring(s, i+1, l-i-1)) i (l-1) end val newFormat = editString s 0 (String.size s) val summer = case offset of SOME _ => ~1 | NONE => callTiming 5 (Time.toSeconds(toTime date)) handle Size => ~1 in callTiming 6 (newFormat, year, month, day, hour, minute, second, dayOfWeek date, yearDay date, summer) handle RunCall.Size => raise Date end end; local (* Install the pretty printer for Date.date. This has to be done outside the structure because of the opaque matching. *) fun pretty _ _ x = PolyML.PrettyString(Date.toString x) in val () = PolyML.addPrettyPrinter pretty end polyml-5.7.1/basis/IntInf.sml0000644000175000017500000001214713204034553015011 0ustar daviddavid(* Title: Standard Basis Library: IntInf structure and signature. Copyright David Matthews 2000, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature INT_INF = sig include INTEGER val divMod : int * int -> int * int val quotRem : int * int -> int * int val pow : int * Int.int -> int val log2 : int -> Int.int val orb : int * int -> int val xorb : int * int -> int val andb : int * int -> int val notb : int -> int val << : int * Word.word -> int val ~>> : int * Word.word -> int end; structure IntInf : INT_INF = struct type int = LargeInt.int val quotRem = LibrarySupport.quotRem fun divMod (x, y) = let val (q, r) = quotRem(x, y) in (* If the remainder is zero or the same sign as the divisor then the result is the same as quotRem. Otherwise round down the quotient and round up the remainder. *) if r = 0 orelse (r < 0) = (y < 0) then (q, r) else (q-1, r+y) end (* Return the position of the highest bit set in the value. *) local val isShort: int -> bool = RunCall.isShort fun loadByte(l: LargeInt.int, i: Int.int):word = RunCall.loadByteFromImmutable(l, Word.fromInt i) val segLength: LargeInt.int -> Int.int = Word.toInt o RunCall.memoryCellLength (* Compute log2 for a short value. The top bit of i will always be zero since we've checked that it's positive so it will always terminate. *) fun log2Word(i: word, j: word, n: Int.int) = if Word.>(j, i) then n-1 else log2Word(i, Word.<<(j, 0w1), n+1) (* The value is represented as little-endian byte segment. High-order bytes may be zero so we work back until we find a non-zero byte and then find the bit-position within it. *) fun log2Long(i, byte) = let val b = loadByte(i, byte) in if b = 0w0 then log2Long(i, byte-1) else log2Word(b, 0w2, 1) + byte*8 end in fun log2 (i: int) : Int.int = if i <= 0 then raise Domain else if isShort i then log2Word(Word.fromLargeInt i, 0w2, 1) else (* i is actually a pointer to a byte segment. *) let val bytes = segLength i * Word.toInt RunCall.bytesPerWord in log2Long(i, bytes-1) end end (* These are implemented in the RTS. *) val orb : int * int -> int = RunCall.rtsCallFull2 "PolyOrArbitrary" and xorb : int * int -> int = RunCall.rtsCallFull2 "PolyXorArbitrary" and andb : int * int -> int = RunCall.rtsCallFull2 "PolyAndArbitrary" (* notb is defined as ~ (i+1) and there doesn't seem to be much advantage in implementing it any other way. *) fun notb i = ~(i + 1) local fun power(acc: LargeInt.int, _, 0w0) = acc | power(acc, n, i) = power( if Word.andb(i, 0w1) = 0w1 then acc * n else acc, n * n, Word.>>(i, 0w1) ) in fun pow(i: LargeInt.int, j: Int.int) = if j < 0 then(* Various exceptional cases. *) ( if i = 0 then raise Div else if i = 1 then 1 else if i = ~1 then if Int.rem(j, 2) = 0 then (*even*) 1 else (*odd*) ~1 else 0 ) else if LibrarySupport.isShortInt j then power(1, i, Word.fromInt j) else (* Long: This is possible only if int is arbitrary precision. If the value to be multiplied is anything other than 0 or 1 we'll exceed the maximum size of a cell. *) if i = 0 then 0 else if i = 1 then 1 else raise Size end (* These could be implemented in the RTS although I doubt if it's really worth it. *) local val maxShift = Word.fromInt Word.wordSize val fullShift = pow(2, Word.wordSize) in fun << (i: int, j: Word.word) = if j < maxShift then i * Word.toLargeInt(Word.<<(0w1, j)) else <<(i * fullShift, j-maxShift) end fun ~>> (i: int, j: Word.word) = LargeInt.div(i, pow(2, Word.toInt j)) open LargeInt (* Inherit everything from LargeInt. Do this last because it overrides the overloaded functions. *) end; polyml-5.7.1/basis/SML90.sml0000644000175000017500000000675613204034553014437 0ustar daviddavid(* Title: Standard Basis Library: SML90 Signature and Structure Author: David Matthews Copyright David Matthews 1999, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is intended for backwards compatibility only. It should probably be withdrawn. *) signature SML90 = sig exception Abs exception Quot exception Prod exception Neg exception Sum exception Diff exception Floor exception Exp exception Sqrt exception Ln exception Ord exception Mod exception Io of string exception Interrupt val sqrt : real -> real val exp : real -> real val ln : real -> real val sin : real -> real val cos : real -> real val arctan : real -> real val ord : string -> int val chr : int -> string val explode : string -> string list val implode : string list -> string type instream type outstream val std_in : instream val std_out : outstream val open_in : string -> instream val input : instream * int -> string val lookahead : instream -> string val close_in : instream -> unit val end_of_stream : instream -> bool val open_out : string -> outstream val output : outstream * string -> unit val close_out : outstream -> unit end; structure SML90 :> SML90 = struct exception Abs = Overflow and Quot = Overflow and Prod = Overflow and Neg = Overflow and Sum = Overflow and Diff = Overflow and Floor = Overflow and Exp = Overflow and Sqrt = Overflow and Ln = Overflow and Ord = Overflow and Mod = Div and Interrupt = RunCall.Interrupt exception Io of string fun sqrt x = if x < 0.0 then raise Sqrt else Real.Math.sqrt x fun exp x = let val r = Real.Math.exp x in if Real.isFinite r then r else raise Exp end fun ln x = if x < 0.0 then raise Ln else Real.Math.ln x val sin = Real.Math.sin and cos = Real.Math.cos and arctan = Real.Math.atan fun ord "" = raise Ord | ord s = Char.ord(String.sub(s, 0)) fun chr i = str(Char.chr i) fun explode s = map String.str (String.explode s) val implode = String.concat type instream = TextIO.instream and outstream = TextIO.outstream val std_in : instream = TextIO.stdIn and std_out : outstream = TextIO.stdOut fun open_in s = TextIO.openIn s handle IO.Io _ => raise Io "Cannot open" and open_out s = TextIO.openOut s handle IO.Io _ => raise Io "Cannot open" fun input(str, i) = TextIO.inputN(str, i) handle IO.Io _ => raise Io "Cannot read" fun lookahead strm = case TextIO.lookahead strm of NONE => "" | SOME ch => str ch val close_in : instream -> unit = TextIO.closeIn and close_out : outstream -> unit = TextIO.closeOut fun output(str, s) = TextIO.output(str, s) handle IO.Io _ => raise Io "Cannot output" val end_of_stream = TextIO.endOfStream end; polyml-5.7.1/basis/Statistics.ML0000644000175000017500000002161313204034553015467 0ustar daviddavid(* Title: Poly/ML Statistics parser. Author: David Matthews Copyright David Matthews 2013, 2015-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is an interface to the statistics provided by the run-time system. For machine-independence and backwards compatibility they are encoded using ASN1 binary encodeing *) local open Asn1 datatype statistic = UnknownStat | CounterStat of { identifier: int, name: string, count: int } | SizeStat of { identifier: int, name: string, size: int } | TimeStat of { identifier: int, name: string, time: Time.time } | UserStat of { identifier: int, name: string, count: int } datatype component = CounterValue of int | ByteCount of int | Time of Time.time | UnknownComponent val emptySlice = Word8VectorSlice.full(Word8Vector.fromList []) fun convStats(v: Word8Vector.vector) = let fun parseStatistic p = case decodeItem p of SOME {tag = Application(0x1, Constructed), data, remainder} => ( case parseComponents({identifier=0, name="", value=UnknownComponent}, data) of {identifier, name, value=CounterValue v} => (CounterStat{identifier=identifier, name=name, count=v}, remainder) | _ => (UnknownStat, remainder) ) | SOME {tag = Application(0x2, Constructed), data, remainder} => ( case parseComponents({identifier=0, name="", value=UnknownComponent}, data) of {identifier, name, value=ByteCount s} => (SizeStat{identifier=identifier, name=name, size=s}, remainder) | _ => (UnknownStat, remainder) ) | SOME {tag = Application(0x3, Constructed), data, remainder} => ( case parseComponents({identifier=0, name="", value=UnknownComponent}, data) of {identifier, name, value=Time t} => (TimeStat{identifier=identifier, name=name, time=t}, remainder) | _ => (UnknownStat, remainder) ) | SOME {tag = Application(0xb, Constructed), data, remainder} => ( case parseComponents({identifier=0, name="", value=UnknownComponent}, data) of {identifier, name, value=CounterValue c} => (UserStat{identifier=identifier, name=name, count=c}, remainder) | _ => (UnknownStat, remainder) ) | SOME {remainder, ...} => (UnknownStat, remainder) | NONE => (UnknownStat, emptySlice) and parseComponents(result as {identifier, name, value }, p) = if Word8VectorSlice.length p = 0 then result else ( case decodeItem p of SOME {tag = Application(0x4, Primitive), data, remainder} => parseComponents({identifier=decodeInt data, name=name, value=value}, remainder) | SOME {tag = Application(0x5, Primitive), data, remainder} => parseComponents({name=decodeString data, identifier=identifier, value=value}, remainder) | SOME {tag = Application(0x6, Primitive), data, remainder} => parseComponents({identifier=identifier, name=name, value=CounterValue(decodeInt data)}, remainder) | SOME {tag = Application(0x7, Primitive), data, remainder} => parseComponents({identifier=identifier, name=name, value=ByteCount(decodeInt data)}, remainder) | SOME {tag = Application(0x8, Constructed), data, remainder} => let fun parseTime (t, p) = if Word8VectorSlice.length p = 0 then t else ( case decodeItem p of SOME {tag = Application(0x9, Primitive), data, remainder} => parseTime(t + Time.fromSeconds(LargeInt.fromInt(decodeInt data)), remainder) | SOME {tag = Application(0xa, Primitive), data, remainder} => parseTime(t + Time.fromMicroseconds(LargeInt.fromInt(decodeInt data)), remainder) | SOME {remainder, ...} => parseTime(t, remainder) (* Unknown *) | NONE => t ) in parseComponents({identifier=identifier, name=name, value=Time(parseTime(Time.zeroTime, data))}, remainder) end | SOME {remainder, ...} => parseComponents(result, remainder) | NONE => result ) fun parseStatistics l = if Word8VectorSlice.length l = 0 then [] else let val (item, rest) = parseStatistic l val items = parseStatistics rest in item :: items end val stats = case decodeItem (Word8VectorSlice.full v) of SOME {tag = Application(0x0, Constructed), data, ...} => parseStatistics data | _ => raise Fail "Statistics not available" fun extractCounter(n, l) = case List.find (fn CounterStat{identifier, ...} => identifier = n | _ => false) l of SOME(CounterStat{ count, ...}) => count | _ => 0 and extractSize(n, l) = case List.find (fn SizeStat{identifier, ...} => identifier = n | _ => false) l of SOME(SizeStat{ size, ...}) => size | _ => 0 and extractTime(n, l) = case List.find (fn TimeStat{identifier, ...} => identifier = n | _ => false) l of SOME(TimeStat{ time, ...}) => time | _ => Time.zeroTime and extractUser(n, l) = case List.find (fn UserStat{identifier, ...} => identifier = n | _ => false) l of SOME(UserStat{ count, ...}) => count | _ => 0 in { threadsTotal = extractCounter(1, stats), threadsInML = extractCounter(2, stats), threadsWaitIO = extractCounter(3, stats), threadsWaitMutex = extractCounter(4, stats), threadsWaitCondVar = extractCounter(5, stats), threadsWaitSignal = extractCounter(6, stats), gcFullGCs = extractCounter(7, stats), gcPartialGCs = extractCounter(8, stats), sizeHeap = extractSize(9, stats), sizeHeapFreeLastGC = extractSize(10, stats), sizeHeapFreeLastFullGC = extractSize(11, stats), sizeAllocation = extractSize(12, stats), sizeAllocationFree = extractSize(13, stats), timeNonGCUser = extractTime(14, stats), timeNonGCSystem = extractTime(15, stats), timeGCUser = extractTime(16, stats), timeGCSystem = extractTime(17, stats), userCounters = Vector.tabulate(8, fn n => extractUser(n+18, stats)) } end open RunCall local val polySpecificGeneralCall = RunCall.rtsCallFull2 "PolySpecificGeneral" in fun polySpecificGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(polySpecificGeneralCall(RunCall.unsafeCast(code, arg))) end in structure PolyML = struct open PolyML structure Statistics = struct fun getLocalStats() = convStats(polySpecificGeneral (29, ())) and getRemoteStats(pid: int) = convStats(polySpecificGeneral (30, pid)) and numUserCounters(): int = polySpecificGeneral (27, ()) and setUserCounter(which: int, value: int): unit = polySpecificGeneral (28, (which, value)) end end end; polyml-5.7.1/basis/PackWord8Big.sml0000644000175000017500000001665513204034553016056 0ustar daviddavid(* Title: Standard Basis Library: PACK_WORD signature and structures Author: David Matthews Copyright David Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated, the structure names have changed. *) signature PACK_WORD = sig val bytesPerElem : int val isBigEndian : bool val subVec : Word8Vector.vector * int -> LargeWord.word val subVecX : Word8Vector.vector * int -> LargeWord.word val subArr : Word8Array.array * int -> LargeWord.word val subArrX : Word8Array.array * int -> LargeWord.word val update : Word8Array.array * int * LargeWord.word -> unit end; (* I'm not sure what use Pack8Big and Pack8Little are since they don't do any packing. *) structure PackWord8Big : PACK_WORD = struct val bytesPerElem = 1 val isBigEndian = true val subVec = Word8.toLargeWord o Word8Vector.sub val subVecX = Word8.toLargeWordX o Word8Vector.sub val subArr = Word8.toLargeWord o Word8Array.sub val subArrX = Word8.toLargeWordX o Word8Array.sub fun update(a, i, v) = Word8Array.update(a, i, Word8.fromLargeWord v) end; structure PackWord8Little : PACK_WORD = struct (* Exactly the same as Pack8Big except for the value of isBigEndian *) open PackWord8Big val isBigEndian = false end; local infix << >> infix andb infix orb val op orb = LargeWord.orb and op << = LargeWord.<< and op >> = LargeWord.>> fun twoBytesToWord(hi: Word8.word, lo: Word8.word) = (Word8.toLargeWord hi << 0w8) orb Word8.toLargeWord lo fun twoBytesToWordX(hi: Word8.word, lo: Word8.word) = (Word8.toLargeWordX hi << 0w8) orb Word8.toLargeWord lo fun fourBytesToWord(highest, higher, lower, low) = (Word8.toLargeWord highest << 0w24) orb (Word8.toLargeWord higher << 0w16) orb (Word8.toLargeWord lower << 0w8) orb Word8.toLargeWord low fun fourBytesToWordX(highest, higher, lower, low) = (Word8.toLargeWordX highest << 0w24) orb (Word8.toLargeWord higher << 0w16) orb (Word8.toLargeWord lower << 0w8) orb Word8.toLargeWord low in structure PackWord16Big : PACK_WORD = struct val bytesPerElem = 2 val isBigEndian = true fun subVec(a, i) = twoBytesToWord( Word8Vector.sub(a, i*2), Word8Vector.sub(a, i*2+1)) fun subVecX(a, i) = twoBytesToWordX( Word8Vector.sub(a, i*2), Word8Vector.sub(a, i*2+1)) fun subArr(a, i) = twoBytesToWord( Word8Array.sub(a, i*2), Word8Array.sub(a, i*2+1)) fun subArrX(a, i) = twoBytesToWordX( Word8Array.sub(a, i*2), Word8Array.sub(a, i*2+1)) fun update(a, i, v) = (* Check the index before doing any update. *) if i < 0 orelse i*2+1 >= Word8Array.length a then raise Subscript else (Word8Array.update(a, i*2+1, Word8.fromLargeWord v); Word8Array.update(a, i*2, Word8.fromLargeWord(v >> 0w8)) ) end; structure PackWord16Little : PACK_WORD = struct val bytesPerElem = 2 val isBigEndian = false fun subVec(a, i) = twoBytesToWord( Word8Vector.sub(a, i*2+1), Word8Vector.sub(a, i*2)) fun subVecX(a, i) = twoBytesToWordX( Word8Vector.sub(a, i*2+1), Word8Vector.sub(a, i*2)) fun subArr(a, i) = twoBytesToWord( Word8Array.sub(a, i*2+1), Word8Array.sub(a, i*2)) fun subArrX(a, i) = twoBytesToWordX( Word8Array.sub(a, i*2+1), Word8Array.sub(a, i*2)) fun update(a, i, v) = (* Check the index before doing any update. *) if i < 0 orelse i*2+1 >= Word8Array.length a then raise Subscript else (Word8Array.update(a, i*2, Word8.fromLargeWord v); Word8Array.update(a, i*2+1, Word8.fromLargeWord(v >> 0w8)) ) end; structure PackWord32Big : PACK_WORD = struct val bytesPerElem = 4 val isBigEndian = true fun subVec(a, i) = fourBytesToWord( Word8Vector.sub(a, i*4), Word8Vector.sub(a, i*4+1), Word8Vector.sub(a, i*4+2), Word8Vector.sub(a, i*4+3)) fun subVecX(a, i) = fourBytesToWordX( Word8Vector.sub(a, i*4), Word8Vector.sub(a, i*4+1), Word8Vector.sub(a, i*4+2), Word8Vector.sub(a, i*4+3)) fun subArr(a, i) = fourBytesToWord( Word8Array.sub(a, i*4), Word8Array.sub(a, i*4+1), Word8Array.sub(a, i*4+2), Word8Array.sub(a, i*4+3)) fun subArrX(a, i) = fourBytesToWordX( Word8Array.sub(a, i*4), Word8Array.sub(a, i*4+1), Word8Array.sub(a, i*4+2), Word8Array.sub(a, i*4+3)) fun update(a, i, v) = (* Check the index before doing any update. *) if i < 0 orelse i*4+3 >= Word8Array.length a then raise Subscript else (Word8Array.update(a, i*4+3, Word8.fromLargeWord v); Word8Array.update(a, i*4+2, Word8.fromLargeWord(v >> 0w8)); Word8Array.update(a, i*4+1, Word8.fromLargeWord(v >> 0w16)); Word8Array.update(a, i*4, Word8.fromLargeWord(v >> 0w24)) ) end; structure PackWord32Little : PACK_WORD = struct val bytesPerElem = 4 val isBigEndian = false fun subVec(a, i) = fourBytesToWord( Word8Vector.sub(a, i*4+3), Word8Vector.sub(a, i*4+2), Word8Vector.sub(a, i*4+1), Word8Vector.sub(a, i*4)) fun subVecX(a, i) = fourBytesToWordX( Word8Vector.sub(a, i*4+3), Word8Vector.sub(a, i*4+2), Word8Vector.sub(a, i*4+1), Word8Vector.sub(a, i*4)) fun subArr(a, i) = fourBytesToWord( Word8Array.sub(a, i*4+3), Word8Array.sub(a, i*4+2), Word8Array.sub(a, i*4+1), Word8Array.sub(a, i*4)) fun subArrX(a, i) = fourBytesToWordX( Word8Array.sub(a, i*4+3), Word8Array.sub(a, i*4+2), Word8Array.sub(a, i*4+1), Word8Array.sub(a, i*4)) fun update(a, i, v) = (* Check the index before doing any update. *) if i < 0 orelse i*4+3 >= Word8Array.length a then raise Subscript else (Word8Array.update(a, i*4, Word8.fromLargeWord v); Word8Array.update(a, i*4+1, Word8.fromLargeWord(v >> 0w8)); Word8Array.update(a, i*4+2, Word8.fromLargeWord(v >> 0w16)); Word8Array.update(a, i*4+3, Word8.fromLargeWord(v >> 0w24)) ) end end; polyml-5.7.1/basis/MONO_ARRAY_SLICE.sml0000644000175000017500000000437113204034553016247 0ustar daviddavid(* Title: Standard Basis Library: MONO_ARRAY_SLICE signature Author: David Matthews Copyright David Matthews 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: new. *) signature MONO_ARRAY_SLICE = sig type elem type array type slice type vector type vector_slice val length : slice -> int val sub : (slice * int) -> elem val update: slice * int * elem -> unit val full: array -> slice val slice: array * int * int option -> slice val subslice: slice * int * int option -> slice val base: slice -> array * int * int val vector: slice -> vector val copy : {src : slice, dst : array, di : int} -> unit val copyVec : {src : vector_slice, dst : array, di : int} -> unit val isEmpty: slice -> bool val getItem: slice -> (elem * slice) option val appi : ((int * elem) -> unit) -> slice -> unit val app : (elem -> unit) -> slice -> unit val modifyi : (int * elem -> elem) -> slice -> unit val modify : (elem -> elem) -> slice -> unit val foldli : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (int * elem -> bool) -> slice -> (int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool val collate: (elem * elem -> order) -> slice * slice -> order end; polyml-5.7.1/basis/SingleAssignment.sml0000644000175000017500000000240313204034553017066 0ustar daviddavid(* Title: References that allow a single assignment Author: David Matthews Copyright David Matthews 2010, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure SingleAssignment:> sig type 'a saref (* Equality not allowed *) exception Locked val saref: unit -> 'a saref val savalue: 'a saref -> 'a option val saset: 'a saref * 'a -> unit end = struct exception Locked type 'a saref = 'a option ref fun saref () = ref NONE val savalue = ! fun saset(saVar as ref NONE, newValue) = ( saVar := SOME newValue; RunCall.clearMutableBit saVar ) | saset _ = raise Locked end; polyml-5.7.1/basis/PolyVectorOperations.sml0000644000175000017500000001427613204034553020001 0ustar daviddavid(* Title: Standard Basis Library: Vector and Array functor for polymorphic vectors and arrays Copyright David C.J. Matthews 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is almost identical to the VectorOperations functor but works on polymorphic vectors and arrays. There may be a way to combine the two. *) functor PolyVectorOperations( type 'a vector val length: 'a vector -> word val unsafeSub: 'a vector * word -> 'a val unsafeSet: 'a vector * word * 'a -> unit (* Array only *) ): sig val appi : ((int * 'a) -> unit) -> 'a vector -> unit val app : ('a -> unit) -> 'a vector -> unit val foldli : ((int * 'a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldri : ((int * 'a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldl : (('a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val modifyi : ((int * 'a) -> 'a) -> 'a vector -> unit (* Array only *) val modify : ('a -> 'a) -> 'a vector -> unit (* Array only *) val findi: (int * 'a -> bool) -> 'a vector -> (int * 'a) option val find: ('a -> bool) -> 'a vector -> 'a option val exists: ('a -> bool) -> 'a vector -> bool val all: ('a -> bool) -> 'a vector -> bool val collate: ('a * 'a -> order) -> 'a vector * 'a vector -> order end = struct val wordAsInt: word -> int = RunCall.unsafeCast (* Apply a function to each element in turn *) fun appi f vec = let val len = length vec fun doapp j = if j >= len then () else (f(wordAsInt j, unsafeSub(vec, j)); doapp(j+0w1)) in doapp 0w0 end fun app f vec = let val len = length vec fun doapp j = if j >= len then () else (f(unsafeSub(vec, j)); doapp(j+0w1)) in doapp 0w0 end (* Fold a function over a array. *) (* foldl - increasing index *) fun foldl f init vec = let val len = length vec fun dofold j acc = if j >= len then acc else dofold (j+0w1) (f (unsafeSub(vec, j), acc)) in dofold 0w0 init end fun foldli f init vec = let val len = length vec fun dofold j acc = if j >= len then acc else dofold (j+0w1) (f (wordAsInt j, unsafeSub(vec, j), acc)) in dofold 0w0 init end (* foldr - decreasing index *) fun foldr f init vec = let val len = length vec fun dofold j acc = if j = 0w0 then acc else dofold (j-0w1) (f (unsafeSub(vec, j-0w1), acc)) in dofold len init end fun foldri f init vec = let val len = length vec fun dofold j acc = if j = 0w0 then acc else dofold (j-0w1) (f (wordAsInt(j-0w1), unsafeSub(vec, j-0w1), acc)) in dofold len init end (* Apply a function to each element in turn and update the array with the new values. *) fun modifyi f vec = let val len = length vec fun doupdate j = if j >= len then () else (unsafeSet(vec, j, f(wordAsInt j, unsafeSub(vec, j))); doupdate(j+0w1)) in doupdate 0w0 end fun modify f vec = let val len = length vec fun doupdate j = if j >= len then () else (unsafeSet(vec, j, f(unsafeSub(vec, j))); doupdate(j+0w1)) in doupdate 0w0 end (* Find a character that matches the predicate. *) fun findi pred vec = let val len = length vec fun dofind j = if j >= len then NONE else let val v = unsafeSub(vec, j) in if pred(wordAsInt j, v) then SOME (wordAsInt j, v) else dofind (j+0w1) end in dofind 0w0 end fun find pred vec = let val len = length vec fun dofind j = if j >= len then NONE else let val v = unsafeSub(vec, j) in if pred v then SOME v else dofind (j+0w1) end in dofind 0w0 end fun exists f arr = Option.isSome(find f arr) fun all pred arr = not (exists (not o pred) arr) fun collate cmp (vec1, vec2) = let val len1 = length vec1 and len2 = length vec2 (* Keep comparing items until either we come to the end of one of the arrays or we find a mismatch. *) fun dotest j = if j >= len1 then if len1 = len2 then EQUAL else (* j < len2 *) LESS else if j >= len2 then (* But j < len1, so a1 is longer *) GREATER else case cmp(unsafeSub(vec1, j), unsafeSub(vec2, j)) of LESS => LESS | GREATER => GREATER | EQUAL => dotest (j+0w1) in dotest 0w0 end end; polyml-5.7.1/basis/LibrarySupport.sml0000644000175000017500000002100713204034553016616 0ustar daviddavid(* Title: Standard Basis Library: Support functions Copyright David C.J. Matthews 2000, 2015-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* We need to execute these calls BEFORE compiling LibrarySupport if we want them to be compiled in as constants. *) structure MachineConstants = struct local val isBigEndian: unit -> bool = RunCall.rtsCallFast1 "PolyIsBigEndian" in val bigEndian : bool = isBigEndian () end val wordSize : word = RunCall.bytesPerWord end; structure LibrarySupport :> sig eqtype address (* eqtype so we can compare vectors. *) structure CharArray: sig datatype array = Array of word*address end structure Word8Array: sig datatype array = Array of word*address eqtype vector val wVecLength: vector -> word end val w8vectorToString: Word8Array.vector -> string and w8vectorFromString: string -> Word8Array.vector val wordSize: word val bigEndian: bool val allocString: word -> string (* Create a mutable string. *) val allocBytes: word -> address val isShortInt : int -> bool val largeIntIsSmall: LargeInt.int -> bool val unsafeSubstring: string*word*word -> string val unsignedShortOrRaiseSubscript: int -> word val unsignedShortOrRaiseSize: int -> word val sizeAsWord : string -> word val stringAsAddress : string -> address val w8vectorAsAddress : Word8Array.vector -> address val maxAllocation: word and maxString: word val noOverwriteRef: 'a -> 'a ref val emptyVector: word val quotRem: LargeInt.int*LargeInt.int -> LargeInt.int*LargeInt.int val getOSType: unit -> int end = struct (* An address is the address of a vector in memory. *) type address = Bootstrap.byteArray (* This forces pointer equality. *) local (* Add a pretty printer to avoid crashes during debugging. *) open PolyML fun prettyAddress _ _ (_: address) = PolyML.PrettyString "byteArray" in val () = addPrettyPrinter prettyAddress end (* This is always a short non-negative integer so can be cast as word or int. *) fun sizeAsWord(s: string): word = RunCall.loadUntagged(s, 0w0) (* Provide the implementation of CharArray.array, Word8Array.array and Word8Array.vector (= Word8Vector.vector) here so that they are available to the IO routines. *) structure CharArray = struct datatype array = Array of word*address end structure Word8Array = struct (* Using the Array constructor here does not add any overhead since it is compiled as an identity function. *) datatype array = Array of word*address (* The representation of Word8Vector.vector is the same as that of string. We define it as "string" here so that it inherits the same equality function. The representation is assumed by the RTS. *) type vector = string val wVecLength: vector -> word = sizeAsWord end (* Identity functions to provide convertions. *) fun w8vectorToString s = s and w8vectorFromString s = s (* There are circumstances when we want to pass the address of a string where we expect an address. *) val stringAsAddress : string -> address = RunCall.unsafeCast val w8vectorAsAddress = stringAsAddress o w8vectorToString open MachineConstants; local val F_mutable_bytes : word = 0wx41 (* This is put in by Initialise and filtered out later. *) val setLengthWord: string * word -> unit = fn (s, n) => RunCall.storeUntagged(s, 0w0, n) val callGetAllocationSize = RunCall.rtsCallFast0 "PolyGetMaxAllocationSize" val callGetMaxStringSize = RunCall.rtsCallFast0 "PolyGetMaxStringSize" in (* Get the maximum allocation size. This is the maximum value that can fit in the length field of a segment. *) val maxAllocation = callGetAllocationSize() and maxString = callGetMaxStringSize() (* Check that we have a short int. This is only necessary if int is arbitrary precision. If int is fixed precision it will always be true. *) fun isShortInt(i: int): bool = not Bootstrap.intIsArbitraryPrecision orelse RunCall.isShort i (* Test whether a large int will fit in the short format. *) val largeIntIsSmall: LargeInt.int -> bool = RunCall.isShort fun unsignedShortOrRaiseSize (i: int): word = if isShortInt i andalso i >= 0 then RunCall.unsafeCast i else raise Size fun unsignedShortOrRaiseSubscript (i: int): word = if isShortInt i andalso i >= 0 then RunCall.unsafeCast i else raise Subscript fun allocBytes bytes : address = let val words : word = if bytes > maxString then raise Size (* The maximum string size is slightly smaller than the maximum array size because strings have a length word. It seems best to use the same maximum size for CharArray/Word8Array. *) else (bytes + wordSize - 0w1) div wordSize val mem = RunCall.allocateByteMemory(words, F_mutable_bytes) (* Zero the last word. *) val () = if words = 0w0 then () else RunCall.storeUntagged(RunCall.unsafeCast mem, words-0w1, 0w0) in mem end (* Allocate store for the string and set the first word to contain the length and the rest zero. *) fun allocString charsW = let (* The space is the number of characters plus space for the length word plus rounding. *) val words : word = (charsW + 0w2 * wordSize - 0w1) div wordSize val _ = words <= maxAllocation orelse raise Size val vec = RunCall.allocateByteMemory(words, F_mutable_bytes) (* Zero any extra bytes we've needed for rounding to a number of words. This isn't essential but ensures that RTS sharing passes will merge strings that are otherwise the same. *) val () = RunCall.storeUntagged(vec, words-0w1, 0w0) in (* Set the length word. Since this is untagged we can't simply use assign_word.*) setLengthWord(vec, charsW); vec end (* We want this in both String and Word8Array. *) fun unsafeSubstring(s: string, i: word, l: word) : string = let val baseLen = sizeAsWord s (* Length of base string. *) in if i = 0w0 andalso l = baseLen then s else if l = 0w0 then "" (* Empty string. *) else let (* Multiple character string. *) val vec = allocString l in RunCall.moveBytes(s, vec, wordSize+i, wordSize, l); RunCall.clearMutableBit vec; vec end end (* Create non-overwritable mutables for mutexes and condition variables. A non-overwritable mutable in the executable or a saved state is not overwritten when a saved state further down the hierarchy is loaded. This is also used for imperative streams, really only so that stdIn works properly across SaveState.loadState calls. *) fun noOverwriteRef (a: 'a) : 'a ref = RunCall.allocateWordMemory(0w1, 0wx48, a) end (* Create an empty vector. This is used wherever we want an empty vector. It can't be 'a vector which is what we want because of the value restriction. *) val emptyVector: word = RunCall.allocateWordMemory(0w0, 0w0, 0w0) val quotRem = LargeInt.quotRem val getOSType: unit -> int = RunCall.rtsCallFast0 "PolyGetOSType" end; polyml-5.7.1/basis/Timer.sml0000644000175000017500000000665013204034553014704 0ustar daviddavid(* Title: Standard Basis Library: Timer Signature and structure. Author: David Matthews Copyright David Matthews 2000, 2005, 2008, 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated. Added checkCPUTimes. *) signature TIMER = sig type cpu_timer type real_timer val startCPUTimer : unit -> cpu_timer val checkCPUTimer : cpu_timer -> {usr : Time.time, sys : Time.time} val checkGCTime : cpu_timer -> Time.time val totalCPUTimer : unit -> cpu_timer val startRealTimer : unit -> real_timer val checkRealTimer : real_timer -> Time.time val totalRealTimer : unit -> real_timer val checkCPUTimes : cpu_timer -> { nongc: { usr : Time.time, sys : Time.time}, gc: { usr : Time.time, sys : Time.time} } end structure Timer :> TIMER = struct type cpu_timer = {userTime: Time.time, sysTime: Time.time, gcUTime: Time.time, gcSTime: Time.time } type real_timer = Time.time local open Time local val timingGeneralCall = RunCall.rtsCallFull2 "PolyTimingGeneral" in fun doCall(code: int, arg:'a):'b = RunCall.unsafeCast(timingGeneralCall(RunCall.unsafeCast(code, arg))) end fun getUserTime() = doCall(7, ()) and getSysTime() = doCall(8, ()) and getGCUTime() = doCall(9, ()) and getGCSTime() = doCall(13, ()) in fun startCPUTimer () = {userTime=getUserTime(), sysTime=getSysTime(), gcUTime=getGCUTime(), gcSTime=getGCSTime() } and checkCPUTimer ({ userTime, sysTime, ...}: cpu_timer) = { usr = getUserTime() - userTime, sys = getSysTime() - sysTime} and checkGCTime ({ gcUTime, ...}: cpu_timer) = getGCUTime() - gcUTime and totalCPUTimer () = { userTime=Time.zeroTime, sysTime=Time.zeroTime, gcUTime=Time.zeroTime, gcSTime=Time.zeroTime } fun checkCPUTimes (timer as { gcUTime, gcSTime, ... }) = let val { usr, sys } = checkCPUTimer timer val gc_usr = getGCUTime() - gcUTime and gc_sys = getGCSTime() - gcSTime in { gc = { usr = gc_usr, sys = gc_sys }, nongc = { usr = usr-gc_usr, sys = sys-gc_sys } } end fun totalRealTimer() = Time.zeroTime and startRealTimer() = doCall(10, ()) and checkRealTimer t = startRealTimer() - t end end; (* Override the default printer so they're abstract. *) local fun prettyCPUTimer _ _ (_: Timer.cpu_timer) = PolyML.PrettyString "?" and prettyRealTimer _ _ (_: Timer.real_timer) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyCPUTimer and () = PolyML.addPrettyPrinter prettyRealTimer end; polyml-5.7.1/basis/Word8.sml0000644000175000017500000001421713204034553014625 0ustar daviddavid(* Title: Standard Basis Library: Word8 Structure Author: David Matthews Copyright David Matthews 1999 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: checked, no change *) structure Word8 :> WORD = struct (* This structure is largely derived from Word but we use opaque signature matching so that it is a different type. *) open Word (* Values of type Word8.word can be in the range 0..255 and are implemented using tagged integers. *) (* There seem to be two ways to implement this, given that the underlying representation is a tagged 30/31 bit integer. We could either ensure that the top 22/23 bits are always zero and mask them after every operation (or if the code-generator was clever, after several) or we could allow these bits to be undefined and mask them before any operation which could expose them. For the moment we choose the former. *) (* N.B. The Byte structure contains functions which map between Word8.word values and Char.char. It assumes that the underlying representation is the same. *) val wordSize = 8 val maxWord = 255 val maxWordAsWord: word = RunCall.unsafeCast maxWord infix 8 << >> ~>> (* Comparison operations, min, max and compare, fmt, toString, orb, andb, xorb can be inherited directly from Word. Similarly div and mod since the results will always be no larger than the arguments. *) (* Not the same as Word.notb because it only affects the bottom 8 bits. *) fun notb x = xorb(maxWordAsWord, x) (* Internal function to convert from Word.word. *) fun fromWord (w: Word.word) = andb(w, maxWordAsWord) (* Converting from LargeWord.word. First convert to Word.word and then mask. *) val fromLargeWord = fromWord o Word.fromLargeWord and fromInt = fromWord o Word.fromInt and fromLargeInt = fromWord o Word.fromLargeInt val fromLarge = fromLargeWord (* Arithmetic shift - sign extends. *) (* TODO: Replace by built-in? We need a separate function from arithmetic shift for Word because the sign bit is in a different place. *) (* Shift the "sign" bit into the real sign bit position then shift right down again. *) local val toSignBit = Word.fromInt(Int.-(Word.wordSize,wordSize)) in fun op ~>> (a: word, b: Word.word): word = fromWord(Word.~>>(Word.<<(a, toSignBit), Word.+(b, toSignBit))) end (* TODO: Replace with built-in? We need to mask the result so that it remains in the range 0..255 *) fun op << (a: word, b: Word.word): word = andb(Word.<<(a,b), maxWordAsWord) (* Conversion to unsigned integer. This is simpler than for Word because all Word8 values correspond to short integers. *) val toInt: word->int = RunCall.unsafeCast (* Conversion to signed integer. *) (* TODO: This could be implemented using shifts. i.e logical shift left by (Word.wordSize-Word8.wordSize) then arithmetic shift right by the same amount. *) fun toIntX (x: word) : int = let val intx = toInt x open Int (* We want integer arithmetic here. *) in if intx >= 128 then intx-maxWord-1 else intx end val toLargeInt = LargeInt.fromInt o toInt and toLargeIntX = LargeInt.fromInt o toIntX (* Convert to a large word by sign extending. *) fun toLargeWordX (w: word): LargeWord.word = LargeWord.fromInt(toIntX w); val toLargeX = toLargeWordX (* Use Word.scan but check that the result is in the range. *) val wordScan = scan; fun scan radix getc src = case wordScan radix getc src of NONE => NONE | SOME(res, src') => if res > maxWordAsWord then raise General.Overflow else SOME(res, src') val fromString = StringCvt.scanString (scan StringCvt.HEX) (* TODO: Replace by built-ins? *) fun op + (a, b) = fromWord(Word.+(a, b)) and op - (a, b) = fromWord(Word.-(a, b)) and op * (a, b) = fromWord(Word.*(a, b)) fun ~ x = 0w0 - x end; (* Because we are using opaque signature matching we have to install type-dependent functions OUTSIDE the structure. *) local (* The string may be either 0wnnn or 0wxXXX *) fun convWord s : Word8.word = let val radix = (* The word value must consist of at least 0w and a digit. *) if String.sub(s, 2) = #"x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (Word8.scan radix) s of NONE => raise RunCall.Conversion "Invalid word8 constant" | SOME res => res end (* Install the pretty printer for Word8.word *) fun pretty _ _ x = PolyML.PrettyString("0wx" ^ Word8.toString x) in val () = RunCall.addOverload convWord "convWord" val () = PolyML.addPrettyPrinter pretty end; (* Add the overloaded operators. *) val () = RunCall.addOverload Word8.~ "~"; val () = RunCall.addOverload Word8.+ "+"; val () = RunCall.addOverload Word8.- "-"; val () = RunCall.addOverload Word8.* "*"; val () = RunCall.addOverload Word8.div "div"; val () = RunCall.addOverload Word8.mod "mod"; val () = RunCall.addOverload Word8.< "<"; val () = RunCall.addOverload Word8.> ">"; val () = RunCall.addOverload Word8.<= "<="; val () = RunCall.addOverload Word8.>= ">="; polyml-5.7.1/basis/ImperativeIO.sml0000644000175000017500000001475613204034553016167 0ustar daviddavid(* Title: Standard Basis Library: ImperativeIO functor Copyright David C.J. Matthews 2000, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is also used in TextIO. We need "protect". *) functor BasicImperativeIO ( structure StreamIO : STREAM_IO structure Vector : MONO_VECTOR structure Array : MONO_ARRAY sharing type StreamIO.elem = Vector.elem = Array.elem sharing type StreamIO.vector = Vector.vector = Array.vector ) (* No signature on the result *) = struct structure StreamIO = StreamIO type vector = Vector.vector and elem = StreamIO.elem datatype instream = InStream of { (* An imperative input stream is a reference to a lazy functional stream. *) fStream: StreamIO.instream ref, lock: Thread.Mutex.mutex } and outstream = OutStream of { (* An imperative output stream is a reference to the underlying stream. Unlike instream the underlying stream is also imperative but we need a reference here to allow us to redirect. *) fStream: StreamIO.outstream ref } (* We don't need a mutex for outstream assuming := and ! are atomic i.e. '!' returns either the previous value or the current one and not some intermediate value. *) (* Use no-overwrite refs for imperative streams. This is really only needed for stdIn to make sure that when we call PolyML.SaveState.loadState we don't overwrite any unread input by the contents of the buffer when saveState was called. *) fun mkInstream (s : StreamIO.instream) : instream = InStream{fStream = LibrarySupport.noOverwriteRef s, lock = Thread.Mutex.mutex()} fun protect (InStream{fStream, lock}) f = LibraryIOSupport.protect lock f fStream (* Get and set the underlying stream. We have to interlock setInstream at least. *) fun getInstream s = protect s (fn fStream => !fStream) and setInstream(InStream{fStream, lock}, s) = LibraryIOSupport.protect lock (fn fStream => fStream := s) fStream (* These are just wrappers for the underlying functional calls. *) fun input s = protect s (fn fStream => let val (v, f') = StreamIO.input(!fStream) in fStream := f'; v end) (* We don't use StreamIO.input1 here because that never advances over a temporary EOF. *) fun input1 s = protect s (fn fStream => let val (s, f') = StreamIO.inputN(!fStream, 1) in fStream := f'; if Vector.length s = 0 then NONE else SOME(Vector.sub(s, 0)) end) fun inputN(InStream{fStream, lock}, n) = LibraryIOSupport.protect lock (fn fStream => let val (v, f') = StreamIO.inputN(!fStream, n) in fStream := f'; v end) fStream fun inputAll s = protect s (fn fStream => let val (v, f') = StreamIO.inputAll(!fStream) in fStream := f'; v end) (* These next functions only query the stream and don't affect the fStream ref so don't really need interlocking. If two threads call these functions simultaneously the result is non-deterministic anyway. *) fun canInput(InStream{fStream, lock}, n) = LibraryIOSupport.protect lock (fn fStream => StreamIO.canInput(! fStream, n)) fStream and closeIn s = protect s (fn fStream => StreamIO.closeIn(! fStream)) and endOfStream s = protect s (fn fStream => StreamIO.endOfStream(! fStream)) fun lookahead s = protect s (fn fStream => case StreamIO.input1 (! fStream) of NONE => NONE | SOME(s, _) => SOME s ) (* These are simply wrappers. *) fun mkOutstream (s : StreamIO.outstream) : outstream = OutStream{fStream = LibrarySupport.noOverwriteRef s} fun getOutstream(OutStream{fStream = ref s}) = s and setOutstream(OutStream{fStream}, s) = fStream := s fun output(OutStream{fStream=ref f, ...}, v) = StreamIO.output(f, v) and output1(OutStream{fStream=ref f, ...}, c) = StreamIO.output1(f, c) and flushOut(OutStream{fStream=ref f, ...}) = StreamIO.flushOut f and closeOut(OutStream{fStream=ref f, ...}) = StreamIO.closeOut f and getPosOut(OutStream{fStream=ref f, ...}) = StreamIO.getPosOut f fun setPosOut(OutStream{fStream, ...}, p) = fStream := StreamIO.setPosOut p (* Add pretty printers to hide the internals. These just use the implementation streams. *) local open PolyML fun prettyIn depth _ (InStream{ fStream = ref s, ...}) = PolyML.prettyRepresentation(s, depth) fun prettyOut depth _ (OutStream { fStream = ref s, ...}) = PolyML.prettyRepresentation(s, depth) in val () = addPrettyPrinter prettyIn val () = addPrettyPrinter prettyOut end end; (* General exported version with final signature. *) functor ImperativeIO ( structure StreamIO : STREAM_IO structure Vector : MONO_VECTOR structure Array : MONO_ARRAY sharing type StreamIO.elem = Vector.elem = Array.elem sharing type StreamIO.vector = Vector.vector = Array.vector ) : IMPERATIVE_IO where type StreamIO.elem = StreamIO.elem where type StreamIO.vector = StreamIO.vector where type StreamIO.instream = StreamIO.instream where type StreamIO.outstream = StreamIO.outstream where type StreamIO.out_pos = StreamIO.out_pos where type StreamIO.reader = StreamIO.reader where type StreamIO.writer = StreamIO.writer where type StreamIO.pos = StreamIO.pos = BasicImperativeIO(structure StreamIO = StreamIO and Vector = Vector and Array = Array); polyml-5.7.1/basis/Option.sml0000644000175000017500000000527413204034553015075 0ustar daviddavid(* Title: Standard Basis Library: Option Structure Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated, added "app" function. *) signature OPTION = sig datatype 'a option = NONE | SOME of 'a exception Option val getOpt : ('a option * 'a) -> 'a val isSome : 'a option -> bool val valOf : 'a option -> 'a val filter : ('a -> bool) -> 'a -> 'a option val join : 'a option option -> 'a option val app : ('a -> unit) -> 'a option -> unit val map : ('a -> 'b) -> 'a option -> 'b option val mapPartial : ('a -> 'b option) -> 'a option -> 'b option val compose : (('a -> 'b) * ('c -> 'a option)) -> 'c -> 'b option val composePartial : (('a -> 'b option) * ('c -> 'a option)) -> 'c -> 'b option end; structure Option : OPTION = struct (* datatype 'a option = NONE | SOME of 'a *) datatype option = datatype option exception Option fun getOpt (SOME a, _) = a | getOpt (NONE, b) = b fun isSome (SOME _) = true | isSome (NONE) = false fun valOf (SOME a) = a | valOf (NONE) = raise Option fun filter f a = if f a then SOME a else NONE fun join (SOME v) = v | join NONE = NONE fun app f (SOME v) = f v | app _ NONE = () fun map f (SOME v) = SOME (f v) | map _ NONE = NONE fun mapPartial f (SOME v) = f v | mapPartial _ NONE = NONE fun compose (f, g) a = case g a of NONE => NONE | SOME v => SOME (f v) fun composePartial (f, g) a = case g a of NONE => NONE | SOME v => f v end; (* Export some of these to the top-level. *) local structure dummy: sig (* datatype 'a option = NONE | SOME of 'a *) exception Option val getOpt : ('a option * 'a) -> 'a val isSome : 'a option -> bool val valOf : 'a option -> 'a end = Option in open dummy end; polyml-5.7.1/basis/INTEGER.sml0000644000175000017500000000353113204034553014714 0ustar daviddavid(* Title: Standard Basis Library: INTEGER signature Copyright David C.J. Matthews 1999, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature INTEGER = sig eqtype int val toLarge : int -> LargeInt.int val fromLarge : LargeInt.int -> int val toInt : int -> Int.int val fromInt : Int.int -> int val precision : Int.int option val minInt : int option val maxInt : int option val ~ : int -> int val * : (int * int) -> int val div : (int * int) -> int val mod : (int * int) -> int val quot : (int * int) -> int val rem : (int * int) -> int val + : (int * int) -> int val - : (int * int) -> int val compare : (int * int) -> General.order val > : (int * int) -> bool val >= : (int * int) -> bool val < : (int * int) -> bool val <= : (int * int) -> bool val abs : int -> int val min : (int * int) -> int val max : (int * int) -> int val sign : int -> Int.int val sameSign : (int * int) -> bool val fmt : StringCvt.radix -> int -> string val toString : int -> string val fromString : string -> int option val scan : StringCvt.radix -> (char, 'a) StringCvt.reader -> (int, 'a) StringCvt.reader end; polyml-5.7.1/basis/PrimIO.sml0000644000175000017500000005632413204034553014766 0ustar daviddavid(* Title: Standard Basis Library: PrimIO functor Copyright David C.J. Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: Done *) functor PrimIO ( structure Vector : MONO_VECTOR structure VectorSlice: MONO_VECTOR_SLICE structure Array : MONO_ARRAY structure ArraySlice : MONO_ARRAY_SLICE sharing type Array.elem = Vector.elem = VectorSlice.elem = ArraySlice.elem sharing type Array.vector = Vector.vector = VectorSlice.vector = ArraySlice.vector sharing type VectorSlice.slice = ArraySlice.vector_slice sharing type Array.array = ArraySlice.array val someElem : Array.elem eqtype pos (* Note: this was shown as just a type in the functor arg. *) val compare : pos * pos -> order ): PRIM_IO = struct type array = Array.array and vector = Vector.vector and elem = Array.elem and vector_slice = VectorSlice.slice and array_slice = ArraySlice.slice type pos = pos val compare = compare datatype reader = RD of { name : string, chunkSize : int, readVec : (int -> vector) Option.option, (* Use Option once to ensure dependency. *) readArr : (array_slice -> int) Option.option, readVecNB : (int -> vector Option.option) Option.option, readArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) option, canInput : (unit -> bool) option, avail : unit -> int option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option } datatype writer = WR of { name : string, chunkSize : int, writeVec : (vector_slice -> int) Option.option, writeArr : (array_slice -> int) Option.option, writeVecNB : (vector_slice -> int Option.option) Option.option, writeArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) option, canOutput : (unit -> bool) option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option } (* Define readVec, readArr, readVecNB, readArrNB if they are not provided using the functions which are. *) fun augmentReader ( RD { name : string, chunkSize : int, readVec : (int -> vector) Option.option, readArr : (array_slice -> int) Option.option, readVecNB : (int -> vector Option.option) Option.option, readArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) option, canInput : (unit -> bool) option, avail : unit -> int option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option }) : reader = let (* First try defining readVec in terms of readArr. *) val readVec' = case (readVec, readArr) of (s as SOME _, _) => s (* If readVec exists use it. *) | (NONE, SOME ra) => (* if readVec doesn't exists but readArr does *) SOME( fn (l: int) => let (* Create an array initialised to zeros. We have to be careful here. Suppose the caller was using "readVec maxInt" to mean "give me the rest of the file" knowing that it was only small. To avoid problems we only read the smaller of the size requested or the block size. *) val v = Array.array(Int.min(l, chunkSize), someElem) (* Read as much as we can. *) val n = ra(ArraySlice.full v) in (* Return the section read. *) ArraySlice.vector(ArraySlice.slice(v, 0, SOME n)) end ) | (NONE, NONE) => NONE (* And vice-versa *) val readArr' = case (readArr, readVec) of (s as SOME _, _) => s(* If readArr exists use it. *) | (NONE, SOME rv) => (* if readArr doesn't exists but readVec does *) SOME( fn slice => let val (buff, i, len) = ArraySlice.base slice (* Read a vector and try and put that into the array. *) val r = rv len in (* Copy the vector into the array. *) Array.copyVec{src=r, dst = buff, di=i}; (* Return the number of characters read. *) Vector.length r end ) | (NONE, NONE) => NONE (* We now have the blocking versions of readVec and readArr if either of them existed. Now defining the non-blocking versions using these blocking versions if we have to. *) val readVecNB' = case (readVecNB, readArrNB) of (s as SOME _, _) => s (* If readVecNB exists use it. *) | (NONE, SOME ra) => (* If readVecNB does not exist but readArrNB does*) SOME( fn (l: int) => let val v = Array.array(Int.min(l, chunkSize), someElem) in case ra(ArraySlice.full v) of NONE => NONE | SOME n => (* Return the section read. *) SOME (ArraySlice.vector(ArraySlice.slice(v, 0, SOME n))) end ) | (NONE, NONE) => (* Try using the blocking readVec' with canInput. We use the readVec' we defined above so that this will also try using readArr. *) case (canInput, readVec') of (SOME canIn, SOME rv) => SOME( fn (l: int) => if canIn() then SOME(rv l) else NONE ) | _ => NONE (* Can't do it. *) val readArrNB' = case (readArrNB, readVecNB) of (s as SOME _, _) => s(* If readArrNB exists use it. *) | (NONE, SOME rv) => (* if readArrNB doesn't exists but readVecNB does *) SOME( fn slice => let val (buff, i, len) = ArraySlice.base slice in (* Try reading a vector of this size. *) case rv len of NONE => NONE | SOME r => ( (* Copy the vector into the array. *) Array.copyVec{src=r, dst = buff, di=i}; (* Return the number of characters read. *) SOME(Vector.length r) ) end ) | (NONE, NONE) => (* Try using the blocking readArr' with canInput. We use the readArr' we defined above so that this will also try using readVec. *) case (canInput, readArr') of (SOME canIn, SOME ra) => SOME( fn slice => if canIn() then SOME(ra slice) else NONE ) | _ => NONE (* Can't do it. *) (* Finally define the blocking functions in terms of the non-blocking if we have to. *) val readVec'' = case readVec' of (* If readVec' exists use it. i.e. if readVec or readArr were defined. *) (s as SOME _) => s | NONE => (* No blocking version exists - try using block and the synthesised non-blocking version. *) case (block, readVecNB') of (SOME blk, SOME rv) => SOME( fn (l: int) => ( blk(); case rv l of NONE => (* Should not occur. *) raise IO.Io{ name=name, function="readVec", cause = IO.BlockingNotSupported } | SOME v => v ) ) | _ => NONE (* Can't do it. *) val readArr'' = case readArr' of (* If readArr' exists use it. *) (s as SOME _) => s | NONE => (* Try using block and the synthesised readArrNB'. *) case (block, readArrNB') of (SOME blk, SOME ra) => SOME( fn slice => ( blk(); case ra slice of NONE => raise IO.Io{ name=name, function="readArr", cause = IO.BlockingNotSupported } | SOME l => l ) ) | _ => NONE (* Can't do it. *) in RD { name = name, chunkSize = chunkSize, readVec = readVec'', readArr = readArr'', readVecNB = readVecNB', readArrNB = readArrNB', block = block, canInput = canInput, avail = avail, getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = verifyPos, close = close, ioDesc = ioDesc } end fun augmentWriter (WR { name : string, chunkSize : int, writeVec : (vector_slice -> int) Option.option, writeArr : (array_slice -> int) Option.option, writeVecNB : (vector_slice -> int Option.option) Option.option, writeArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) option, canOutput : (unit -> bool) option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option }) : writer = let (* First try defining writeVec in terms of writeArr. *) val writeVec' = case (writeVec, writeArr) of (s as SOME _, _) => s (* If writeVec exists use it. *) | (NONE, SOME ra) => (* if writeVec doesn't exists but writeArr does *) SOME( fn slice => let (* Create an array to hold this slice. *) val a = Array.array(VectorSlice.length slice, someElem) in (* Copy in the vector. *) ArraySlice.copyVec{src=slice, dst=a, di=0}; (* write as much as we can. *) ra(ArraySlice.full a) end ) | (NONE, NONE) => NONE (* And vice-versa *) val writeArr' = case (writeArr, writeVec) of (s as SOME _, _) => s (* If writeArr exists use it. *) | (NONE, SOME wv) => (* if writeArr doesn't exists but writeVec does *) SOME( fn slice => let (* Construct a vector from this slice. *) val v = ArraySlice.vector slice; in (* Try writing this vector. *) wv(VectorSlice.full v) end ) | (NONE, NONE) => NONE (* We now have the blocking versions of writeVec and writeArr if either of them existed. Now defining the non-blocking versions using these blocking versions if we have to. *) val writeVecNB' = case (writeVecNB, writeArrNB) of (s as SOME _, _) => s (* If writeVecNB exists use it. *) | (NONE, SOME wa) => (* If writeVecNB does not exist but writeArrNB does*) SOME( fn slice => let val len = VectorSlice.length slice (* Create an array to hold this slice. *) val a = Array.array(len, someElem) in (* Copy in the vector. *) ArraySlice.copyVec{src=slice, dst=a, di=0}; (* Try writing it and see what happened. *) wa(ArraySlice.full a) end ) | (NONE, NONE) => (* Try using the blocking writeVec' with canOutput. We use the writeVec' we defined above so that this will also try using writeArr. *) case (canOutput, writeVec') of (SOME canOut, SOME wv) => SOME( fn slice => if canOut() then SOME(wv slice) else NONE ) | _ => NONE (* Can't do it. *) val writeArrNB' = case (writeArrNB, writeVecNB) of (s as SOME _, _) => s (* If writeArrNB exists use it. *) | (NONE, SOME wv) => (* if writeArrNB doesn't exists but writeVecNB does *) SOME( fn slice => let (* Construct a vector from this slice. *) val v = ArraySlice.vector slice; in (* Try writing the vector. *) wv(VectorSlice.full v) end ) | (NONE, NONE) => (* Try using the blocking writeArr' with canOutput. We use the writeArr' we defined above so that this will also try using writeVec. *) case (canOutput, writeArr') of (SOME canOut, SOME wa) => SOME( fn slice => if canOut() then SOME(wa slice) else NONE ) | _ => NONE (* Can't do it. *) (* Finally define the blocking functions in terms of the non-blocking if we have to. *) val writeVec'' = case writeVec' of (* If writeVec' exists use it. i.e. if writeVec or writeArr were defined. *) (s as SOME _) => s | NONE => (* No blocking version exists - try using block and the synthesised non-blocking version. *) case (block, writeVecNB') of (SOME blk, SOME wv) => SOME( fn slice => ( blk(); case wv slice of NONE => (* Should not occur. *) raise IO.Io{ name=name, function="writeVec", cause = IO.BlockingNotSupported } | SOME l => l ) ) | _ => NONE (* Can't do it. *) val writeArr'' = case writeArr' of (* If writeArr' exists use it. *) (s as SOME _) => s | NONE => (* Try using block and the synthesised writeArrNB'. *) case (block, writeArrNB') of (SOME blk, SOME wa) => SOME( fn slice => ( blk(); case wa slice of NONE => raise IO.Io{ name=name, function="writeArr", cause = IO.BlockingNotSupported } | SOME l => l ) ) | _ => NONE (* Can't do it. *) in WR { name = name, chunkSize = chunkSize, writeVec = writeVec'', writeArr = writeArr'', writeVecNB = writeVecNB', writeArrNB = writeArrNB', block = block, canOutput = canOutput, getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = verifyPos, close = close, ioDesc = ioDesc } end (* Null reader - always returns end-of-file except when closed when it raises IO.ClosedStream. *) fun nullRd () = let val isOpen = ref true in RD { name = "nullRd", chunkSize = 1, readVec = SOME(fn n => if n < 0 then raise Size else if !isOpen then Vector.fromList [] else raise IO.ClosedStream), readArr = SOME(fn _ => if !isOpen then 0 else raise IO.ClosedStream), readVecNB = SOME(fn n => if n < 0 then raise Size else if !isOpen then SOME(Vector.fromList []) else raise IO.ClosedStream), readArrNB = SOME(fn _ => if !isOpen then SOME 0 else raise IO.ClosedStream), block = SOME(fn () => if !isOpen then () else raise IO.ClosedStream), canInput = SOME(fn () => if !isOpen then true else raise IO.ClosedStream), avail = fn () => if !isOpen then NONE else raise IO.ClosedStream, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => isOpen := false, ioDesc = NONE } end (* Null writer - always swallows input except when closed when it raises IO.ClosedStream. *) fun nullWr () = let val isOpen = ref true in WR { name = "nullWr", chunkSize = 1, writeVec = SOME(fn slice => if !isOpen then VectorSlice.length slice else raise IO.ClosedStream), writeArr = SOME(fn slice => if !isOpen then ArraySlice.length slice else raise IO.ClosedStream), writeVecNB = SOME(fn slice => if !isOpen then SOME(VectorSlice.length slice) else raise IO.ClosedStream), writeArrNB = SOME(fn slice => if !isOpen then SOME(ArraySlice.length slice) else raise IO.ClosedStream), block = SOME(fn () => if !isOpen then () else raise IO.ClosedStream), canOutput = SOME(fn () => if !isOpen then true else raise IO.ClosedStream), getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => isOpen := false, ioDesc = NONE } end fun openVector v = let val isOpen = ref true val len = Vector.length v val p = ref 0 (* Pointer to current element. *) (* Return a slice of the vector from the current position for either the rest of the vector or the size requested if that's smaller. *) fun getSlice n = if not (! isOpen) then raise IO.ClosedStream else let val toRead = Int.min(n, len - !p) (* Return the smaller of the size requested or the size left. *) val resSlice = VectorSlice.slice(v, !p, SOME toRead) in p := !p + toRead; resSlice end (* Return a slice of the vector. *) fun readVec n = if n < 0 then raise Size else VectorSlice.vector(getSlice n) (* Copy a portion of the vector into the array. We can probably copy directly from the original vector whereas if we synthesised this function it would require an extra copy. *) fun readArr slice = let val (base, di, len) = ArraySlice.base slice val resSlice = getSlice len in ArraySlice.copyVec{src=resSlice, dst=base, di=di}; VectorSlice.length resSlice end in RD { name = "openVector", chunkSize = 1, (* Or the size of the vector? *) readVec = SOME readVec, readArr = SOME readArr, readVecNB = NONE, readArrNB = NONE, block = SOME(fn () => if !isOpen then () else raise IO.ClosedStream), canInput = SOME(fn () => if !isOpen then true else raise IO.ClosedStream), (* avail returns the number of bytes and since we don't know the size of "elem" we return NONE here *) avail = fn () => if !isOpen then NONE else raise IO.ClosedStream, getPos = NONE, setPos = NONE, endPos = NONE, verifyPos = NONE, close = fn () => isOpen := false, ioDesc = NONE } end end; polyml-5.7.1/basis/BIT_FLAGS.sml0000644000175000017500000000236713204034553015157 0ustar daviddavid(* Title: Standard Basis Library: BIT_FLAGS signature Author: David Matthews Copyright David Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: checked, no change. *) signature BIT_FLAGS = sig eqtype flags val toWord : flags -> SysWord.word val fromWord : SysWord.word -> flags val all: flags val flags : flags list -> flags val intersect: flags list -> flags val clear: flags * flags -> flags val allSet : flags * flags -> bool val anySet : flags * flags -> bool end; polyml-5.7.1/basis/Text.sml0000644000175000017500000000374013204034553014545 0ustar daviddavid(* Title: Standard Basis Library: Text Signature and Structure Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated to include CharVectorSlice and CharArraySlice. *) signature TEXT = sig structure Char : CHAR structure String : STRING structure Substring : SUBSTRING structure CharVector : MONO_VECTOR structure CharArray : MONO_ARRAY structure CharVectorSlice: MONO_VECTOR_SLICE structure CharArraySlice : MONO_ARRAY_SLICE sharing type Char.char = String.char = Substring.char = CharVector.elem = CharArray.elem = CharVectorSlice.elem = CharArraySlice.elem sharing type Char.string = String.string = Substring.string = CharVector.vector = CharArray.vector = CharVectorSlice.vector = CharArraySlice.vector sharing type CharArray.array = CharArraySlice.array sharing type CharVectorSlice.slice = CharArraySlice.vector_slice end; structure Text : TEXT = struct structure Char = Char structure String = String structure Substring = Substring structure CharVector = CharVector structure CharArray = CharArray structure CharVectorSlice = CharVectorSlice structure CharArraySlice = CharArraySlice end; polyml-5.7.1/basis/Unix.sml0000644000175000017500000002121713204034553014543 0ustar daviddavid(* Title: Standard Basis Library: Unix structure and signature. Author: David Matthews Copyright David Matthews 2000,2008 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature UNIX = sig type ('a,'b) proc type signal datatype exit_status = W_EXITED | W_EXITSTATUS of Word8.word | W_SIGNALED (* sic *) of signal | W_STOPPED of signal val fromStatus : OS.Process.status -> exit_status val executeInEnv : string * string list * string list -> ('a, 'b) proc val execute : string * string list -> ('a, 'b) proc val textInstreamOf : (TextIO.instream, 'a) proc -> TextIO.instream val binInstreamOf : (BinIO.instream, 'a) proc -> BinIO.instream val textOutstreamOf : ('a, TextIO.outstream) proc -> TextIO.outstream val binOutstreamOf : ('a, BinIO.outstream) proc -> BinIO.outstream val streamsOf : (TextIO.instream, TextIO.outstream) proc -> TextIO.instream * TextIO.outstream val reap : ('a, 'b) proc -> OS.Process.status val kill : ('a, 'b) proc * signal -> unit val exit : Word8.word -> 'a end; structure Unix :> sig (* We have to copy the signature since we can't establish the connection between exit_status and Posix.Process.exit_status with a "where type". *) type ('a,'b) proc type signal = Posix.Signal.signal datatype exit_status = datatype Posix.Process.exit_status val fromStatus : OS.Process.status -> exit_status val executeInEnv : string * string list * string list -> ('a, 'b) proc val execute : string * string list -> ('a, 'b) proc val textInstreamOf : (TextIO.instream, 'a) proc -> TextIO.instream val binInstreamOf : (BinIO.instream, 'a) proc -> BinIO.instream val textOutstreamOf : ('a, TextIO.outstream) proc -> TextIO.outstream val binOutstreamOf : ('a, BinIO.outstream) proc -> BinIO.outstream val streamsOf : (TextIO.instream, TextIO.outstream) proc -> TextIO.instream * TextIO.outstream val reap : ('a, 'b) proc -> OS.Process.status val kill : ('a, 'b) proc * signal -> unit val exit : Word8.word -> 'a end = struct type ('a,'b) proc = { pid: Posix.Process.pid, infd: Posix.IO.file_desc, outfd: Posix.IO.file_desc, (* We have to remember the result status. *) result: OS.Process.status option ref } type signal = Posix.Signal.signal datatype exit_status = datatype Posix.Process.exit_status val fromStatus = Posix.Process.fromStatus fun kill({pid, ... }: ('a, 'b) proc, signal) = Posix.Process.kill(Posix.Process.K_PROC pid, signal) (* Create a new process running a command and with pipes connecting the standard input and output. The command is supposed to be an executable and we should raise an exception if it is not. Since the exece is only done in the child we need to test whether we have an executable at the beginning. The definition does not say whether the first of the user-supplied arguments includes the command or not. Assume that only the "real" arguments are provided and pass the last component of the command name in the exece call. *) fun executeInEnv (cmd, args, env) = let open Posix (* Test first for presence of the file and then that we have correct access rights. *) val s = FileSys.stat cmd (* Raises SysErr if the file doesn't exist. *) val () = if not (FileSys.ST.isReg s) orelse not (FileSys.access(cmd, [FileSys.A_EXEC])) then raise OS.SysErr(OS.errorMsg Error.acces, SOME Error.acces) else () val toChild = IO.pipe() and fromChild = IO.pipe() in case Process.fork() of NONE => (* In the child *) (( (* Should really clean up the signals here and turn off timers. *) (* Close the unwanted ends of the pipes and set the required ends up as stdin and stdout. *) IO.close(#outfd toChild); IO.close(#infd fromChild); IO.dup2{old= #infd toChild, new=FileSys.wordToFD 0w0}; IO.dup2{old= #outfd fromChild, new= FileSys.wordToFD 0w1}; IO.close(#infd toChild); IO.close(#outfd fromChild); (* Run the command. *) Process.exece(cmd, OS.Path.file cmd :: args, env); (* If we get here the exec must have failed - terminate this process. We're supposed to set the error code to 126 in this case. *) Process.exit 0w126 ) handle _ => Process.exit 0w126) | SOME pid => (* In the parent *) ( IO.close(#infd toChild); IO.close(#outfd fromChild); {pid=pid, infd= #infd fromChild, outfd= #outfd toChild, result = ref NONE} ) end fun execute (cmd, args) = executeInEnv(cmd, args, Posix.ProcEnv.environ()) local (* Internal function to get the preferred buffer size. *) val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_buffsize (strm: OS.IO.iodesc): int = doIo(15, strm, 0) end fun textInstreamOf {infd, ...} = let val n = Posix.FileSys.fdToIOD infd val textPrimRd = LibraryIOSupport.wrapInFileDescr {fd=n, name="TextPipeInput", initBlkMode=true} val streamIo = TextIO.StreamIO.mkInstream(textPrimRd, "") in TextIO.mkInstream streamIo end fun textOutstreamOf {outfd, ...} = let val n = Posix.FileSys.fdToIOD outfd val buffSize = sys_get_buffsize n val textPrimWr = LibraryIOSupport.wrapOutFileDescr{fd=n, name="TextPipeOutput", appendMode=false, initBlkMode=true, chunkSize=buffSize} (* Construct a stream. *) val streamIo = TextIO.StreamIO.mkOutstream(textPrimWr, IO.LINE_BUF) in TextIO.mkOutstream streamIo end fun binInstreamOf {infd, ...} = let val n = Posix.FileSys.fdToIOD infd val binPrimRd = LibraryIOSupport.wrapBinInFileDescr{fd=n, name="BinPipeInput", initBlkMode=true} val streamIo = BinIO.StreamIO.mkInstream(binPrimRd, Word8Vector.fromList []) in BinIO.mkInstream streamIo end fun binOutstreamOf {outfd, ...} = let val n = Posix.FileSys.fdToIOD outfd val buffSize = sys_get_buffsize n val binPrimWr = LibraryIOSupport.wrapBinOutFileDescr{fd=n, name="BinPipeOutput", appendMode=false, chunkSize=buffSize, initBlkMode=true} (* Construct a stream. *) val streamIo = BinIO.StreamIO.mkOutstream(binPrimWr, IO.LINE_BUF) in BinIO.mkOutstream streamIo end fun streamsOf p = (textInstreamOf p, textOutstreamOf p) (* Internal function - inverse of Posix.Process.fromStatus. *) local val doCall = RunCall.rtsCallFull2 "PolyOSSpecificGeneral" in fun toStatus W_EXITED: OS.Process.status = doCall(16, (1, 0)) | toStatus(W_EXITSTATUS w) = doCall(16, (1, Word8.toInt w)) | toStatus(W_SIGNALED s) = doCall(16, (2, SysWord.toInt(Posix.Signal.toWord s))) | toStatus(W_STOPPED s) = doCall(16, (3, SysWord.toInt(Posix.Signal.toWord s))) end fun reap {result = ref(SOME r), ...} = r | reap(p as {pid, infd, outfd, result}) = let val () = Posix.IO.close infd; val () = Posix.IO.close outfd; val (_, status) = Posix.Process.waitpid(Posix.Process.W_CHILD pid, []) in (* If the process is only stopped we need to wait again. *) case status of W_STOPPED _ => reap p | _ => let val s = toStatus status in result := SOME s; s end end fun exit w = OS.Process.exit(toStatus (W_EXITSTATUS w)) end; polyml-5.7.1/basis/UniversalArray.ML0000644000175000017500000000537213204034553016310 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure UniversalArray :> sig type universal = Universal.universal; type 'a tag = 'a Universal.tag; type univArray; val univArray: int -> univArray; val update: univArray * 'a tag * string * 'a -> unit; val sub: univArray * 'a tag * string -> 'a option; val delete: univArray * 'a tag * string -> unit; val fold: (string * universal * 'a -> 'a) -> 'a -> univArray-> 'a; end = struct open HashArray; open Universal; type universal = universal type 'a tag = 'a tag; datatype univArray = Table of universal list hash fun univArray n = Table (hash n); fun op sub (Table tab, t:'a tag, name:string) : 'a option = let fun search [] = NONE | search (H::T) = if tagIs t H then SOME (tagProject t H) else search T; in case HashArray.sub (tab, name) of NONE => NONE | SOME t => search t end; fun update (Table tab, t:'a tag, name:string, v:'a) : unit = let val u = tagInject t v; (* If there is already an entry we add it to the list, otherwise we start a new list. *) fun search [] = [u] | search (H::T) = if tagIs t H then u :: T else H :: search T; val newList = case HashArray.sub (tab, name) of SOME v => search v | NONE => [u] in HashArray.update (tab, name, newList) end; fun delete (Table tab, t:'a tag, name:string) : unit = let fun search [] = [] | search (H::T) = if tagIs t H then T else H :: search T; in case HashArray.sub (tab, name) of SOME l => HashArray.update (tab, name, search l) | NONE => () end; fun fold f init (Table t) = HashArray.fold (fn (s, l, i) => List.foldl (fn (x,y) => f(s, x, y)) i l) init t end (* UniversalArray *); polyml-5.7.1/basis/MONO_VECTOR_SLICE.sml0000644000175000017500000000412113204034553016364 0ustar daviddavid(* Title: Standard Basis Library: MONO_VECTOR_SLICE signature Author: David Matthews Copyright David Matthews 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: new. *) signature MONO_VECTOR_SLICE = sig type vector type elem type slice val length : slice -> int val sub : (slice * int) -> elem val full: vector -> slice val slice: vector * int * int option -> slice val subslice: slice * int * int option -> slice val base: slice -> vector * int * int val vector: slice -> vector val concat: slice list -> vector val isEmpty: slice -> bool val getItem: slice -> (elem * slice) option val appi : ((int * elem) -> unit) -> slice -> unit val app : (elem -> unit) -> slice -> unit val mapi : ((int * elem) -> elem) -> slice -> vector val map : (elem -> elem) -> slice -> vector val foldli : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (int * elem -> bool) -> slice -> (int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool val collate: (elem * elem -> order) -> slice * slice -> order end; polyml-5.7.1/basis/build.sml0000644000175000017500000001777513204034553014735 0ustar daviddavid(* Title: Standard Basis Library: Commands to build the library Copyright David C.J. Matthews 2000, 2005, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Thread, Weak and Signal are Poly/ML extensions. *) val () = Bootstrap.use "basis/InitialBasis.ML"; val () = Bootstrap.use "basis/Universal.ML"; val () = Bootstrap.use "basis/General.sml"; val () = Bootstrap.use "basis/LibrarySupport.sml"; val () = Bootstrap.use "basis/PolyMLException.sml"; val () = Bootstrap.use "basis/Option.sml"; val () = Bootstrap.use "basis/ListSignature.sml"; val () = Bootstrap.use "basis/List.sml"; val () = Bootstrap.use "basis/VectorOperations.sml"; val () = Bootstrap.use "basis/PolyVectorOperations.sml"; val () = Bootstrap.use "basis/VectorSliceOperations.sml"; val () = Bootstrap.use "basis/MONO_VECTOR.sml"; val () = Bootstrap.use "basis/MONO_VECTOR_SLICE.sml"; val () = Bootstrap.use "basis/MONO_ARRAY.sml"; val () = Bootstrap.use "basis/MONO_ARRAY_SLICE.sml"; val () = Bootstrap.use "basis/StringSignatures.sml"; val () = Bootstrap.use "basis/String.sml"; structure Int = struct type int = int end; val () = Bootstrap.use "basis/INTEGER.sml"; val () = Bootstrap.use "basis/Int.sml"; val () = Bootstrap.use (if Bootstrap.intIsArbitraryPrecision then "basis/IntAsLargeInt.sml" else "basis/IntAsFixedInt.sml"); val () = case FixedInt.precision of SOME 31 => Bootstrap.use "basis/Int31.sml" | SOME 63 => Bootstrap.use "basis/Int63.sml" | _ => (); val () = Bootstrap.use "basis/WordSignature.sml"; val () = Bootstrap.use "basis/LargeWord.sml"; val () = Bootstrap.use "basis/VectorSignature.sml"; val () = Bootstrap.use "basis/VectorSliceSignature.sml"; val () = Bootstrap.use "basis/Vector.sml"; val () = Bootstrap.use "basis/ArraySignature.sml"; val () = Bootstrap.use "basis/ArraySliceSignature.sml"; (* Depends on VectorSlice. *) val () = Bootstrap.use "basis/Array.sml"; val () = Bootstrap.use "basis/Text.sml"; (* Declares Char, String, CharArray, CharVector *) val () = Bootstrap.use "basis/Bool.sml"; val () = Bootstrap.use "basis/ListPair.sml"; (* Declare the appropriate additional structures. *) (* The version of Word32 we use depends on whether this is 32-bit or 64-bit. *) val () = if LargeWord.wordSize = 32 then Bootstrap.use "basis/Word32.sml" else if LargeWord.wordSize = 64 then Bootstrap.use "basis/Word32In64.sml" else (); val () = Bootstrap.use "basis/Word8.sml"; val () = Bootstrap.use "basis/IntInf.sml"; val () = Bootstrap.use "basis/Int32.sml"; val () = Bootstrap.use "basis/Word8Array.sml"; val () = Bootstrap.use "basis/Byte.sml"; val () = Bootstrap.use "basis/BoolArray.sml"; val () = Bootstrap.use "basis/IntArray.sml"; val () = Bootstrap.use "basis/RealArray.sml"; val () = Bootstrap.use "basis/IEEE_REAL.sml"; val () = Bootstrap.use "basis/IEEEReal.sml"; val () = Bootstrap.use "basis/MATH.sml"; val () = Bootstrap.use "basis/MATH.sml"; structure LargeReal = struct type real = real end; val () = Bootstrap.use "basis/RealSignature.sml"; val () = Bootstrap.use "basis/Real.sml"; val () = Bootstrap.use "basis/Time.sml"; val () = Bootstrap.use "basis/DateSignature.sml"; val () = Bootstrap.use "basis/Date.sml"; val () = Bootstrap.use "basis/Thread.sml"; (* Non-standard. *) val () = Bootstrap.use "basis/Timer.sml"; val () = Bootstrap.use "basis/CommandLine.sml"; val () = Bootstrap.use "basis/OS.sml"; val () = Bootstrap.use "basis/ExnPrinter.sml"; (* Relies on OS. *) val () = Bootstrap.use "basis/InitialPolyML.ML"; (* Relies on OS. *) val () = Bootstrap.use "basis/IO.sml"; val () = Bootstrap.use "basis/PRIM_IO.sml"; val () = Bootstrap.use "basis/PrimIO.sml"; val () = Bootstrap.use "basis/TextPrimIO.sml"; val () = Bootstrap.use "basis/BinPrimIO.sml"; val () = Bootstrap.use "basis/LibraryIOSupport.sml"; val () = Bootstrap.use "basis/STREAM_IO.sml"; val () = Bootstrap.use "basis/BasicStreamIO.sml"; val () = Bootstrap.use "basis/IMPERATIVE_IO.sml"; val () = Bootstrap.use "basis/ImperativeIO.sml"; val () = Bootstrap.use "basis/TextIO.sml"; val () = Bootstrap.use "basis/BinIO.sml"; val () = Bootstrap.use "basis/NetHostDB.sml"; val () = Bootstrap.use "basis/NetProtDB.sml"; val () = Bootstrap.use "basis/NetServDB.sml"; val () = Bootstrap.use "basis/Socket.sml"; val () = Bootstrap.use "basis/GenericSock.sml"; val () = Bootstrap.use "basis/INetSock.sml"; val () = Bootstrap.use "basis/UnixSock.sml"; val () = Bootstrap.use "basis/PackRealBig.sml"; (* also declares PackRealLittle *) val () = Bootstrap.use "basis/PackWord8Big.sml"; (* also declares Pack8Little. ...*) val () = Bootstrap.use "basis/Array2Signature.sml"; val () = Bootstrap.use "basis/Array2.sml"; val () = Bootstrap.use "basis/IntArray2.sml"; val () = Bootstrap.use "basis/SML90.sml"; val () = Bootstrap.use "basis/Weak.sml"; val () = Bootstrap.use "basis/Signal.sml"; val () = Bootstrap.use "basis/BIT_FLAGS.sml"; val () = Bootstrap.use "basis/SingleAssignment.sml"; (* Build Windows or Unix structure as appropriate. *) local val getOS: int = LibrarySupport.getOSType() in val () = if getOS = 0 then ( Bootstrap.use "basis/Posix.sml"; Bootstrap.use "basis/Unix.sml") else if getOS = 1 then (Bootstrap.use "basis/Windows.sml") else () end; val () = Bootstrap.use "basis/HashArray.ML"; val () = Bootstrap.use "basis/UniversalArray.ML"; val () = Bootstrap.use "basis/PrettyPrinter.sml"; (* Add PrettyPrinter to PolyML structure. *) val () = Bootstrap.use "basis/ASN1.sml"; val () = Bootstrap.use "basis/Statistics.ML"; (* Add Statistics to PolyML structure. *) val () = Bootstrap.use "basis/ForeignConstants.sml"; val () = Bootstrap.use "basis/ForeignMemory.sml"; val () = Bootstrap.useWithParms [Bootstrap.Universal.tagInject Bootstrap.maxInlineSizeTag 1000] "basis/Foreign.sml"; val () = Bootstrap.use "basis/FinalPolyML.sml"; val () = Bootstrap.use "basis/TopLevelPolyML.sml"; (* Add rootFunction to Poly/ML. *) val use = PolyML.use; (* Copy everything out of the original name space. *) (* Do this AFTER we've finished compiling PolyML and after adding "use". *) val () = List.app (#enterVal PolyML.globalNameSpace) (#allVal Bootstrap.globalSpace ()) and () = List.app (#enterFix PolyML.globalNameSpace) (#allFix Bootstrap.globalSpace ()) and () = List.app (#enterSig PolyML.globalNameSpace) (#allSig Bootstrap.globalSpace ()) and () = List.app (#enterType PolyML.globalNameSpace) (#allType Bootstrap.globalSpace ()) and () = List.app (#enterFunct PolyML.globalNameSpace) (#allFunct Bootstrap.globalSpace ()) and () = List.app (#enterStruct PolyML.globalNameSpace) (#allStruct Bootstrap.globalSpace ()) (* We don't want Bootstrap copied over. *) val () = PolyML.Compiler.forgetStructure "Bootstrap"; (* Clean out structures and functors which are only used to build the library. *) PolyML.Compiler.forgetValue "it"; PolyML.Compiler.forgetStructure "LibrarySupport"; PolyML.Compiler.forgetStructure "LibraryIOSupport"; PolyML.Compiler.forgetStructure "MachineConstants"; PolyML.Compiler.forgetStructure "ForeignConstants"; PolyML.Compiler.forgetStructure "ForeignMemory"; PolyML.Compiler.forgetFunctor "BasicStreamIO"; PolyML.Compiler.forgetFunctor "VectorOperations"; PolyML.Compiler.forgetFunctor "PolyVectorOperations"; PolyML.Compiler.forgetFunctor "VectorSliceOperations"; PolyML.Compiler.forgetFunctor "BasicImperativeIO"; PolyML.Compiler.forgetFunctor "ASN1"; PolyML.Compiler.forgetSignature "ASN1"; (* Now we've created the new name space we must use PolyML.make/use. N.B. Unlike Bootstrap.use these don't automatically look at the -I option. *) polyml-5.7.1/basis/Foreign.sml0000644000175000017500000062226313204034553015221 0ustar daviddavid(* Title: Foreign Function Interface: main part Author: David Matthews Copyright David Matthews 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature FOREIGN = sig exception Foreign of string structure Memory: sig eqtype volatileRef val volatileRef: SysWord.word -> volatileRef val setVolatileRef: volatileRef * SysWord.word -> unit val getVolatileRef: volatileRef -> SysWord.word eqtype voidStar val voidStar2Sysword: voidStar -> SysWord.word val sysWord2VoidStar: SysWord.word -> voidStar val null: voidStar val ++ : voidStar * word -> voidStar val -- : voidStar * word -> voidStar (* Remember an address except across loads. *) val memoise: ('a -> voidStar) ->'a -> unit -> voidStar exception Memory (* malloc - allocate memory. N.B. argument is the number of bytes. Raises Memory exception if it cannot allocate. *) val malloc: word -> voidStar (* free - free allocated memory. *) val free: voidStar -> unit val get8: voidStar * Word.word -> Word8.word val get16: voidStar * Word.word -> Word.word val get32: voidStar * Word.word -> Word32.word val get64: voidStar * Word.word -> SysWord.word val set8: voidStar * Word.word * Word8.word -> unit val set16: voidStar * Word.word * Word.word -> unit val set32: voidStar * Word.word * Word32.word -> unit val set64: voidStar * Word.word * SysWord.word -> unit val getFloat: voidStar * Word.word -> real val getDouble: voidStar * Word.word -> real val setFloat: voidStar * Word.word * real -> unit val setDouble: voidStar * Word.word * real -> unit val getAddress: voidStar * Word.word -> voidStar val setAddress: voidStar * Word.word * voidStar -> unit end structure System: sig type voidStar = Memory.voidStar val loadLibrary: string -> voidStar and loadExecutable: unit -> voidStar and freeLibrary: voidStar -> unit and getSymbol: voidStar * string -> voidStar end structure LibFFI: sig eqtype abi (* List of ABIs defined in libffi for this platform. *) val abiList: (string * abi) list (* The default Abi. *) val abiDefault: abi (* Type codes. *) val ffiTypeCodeVoid: Word.word and ffiTypeCodeInt: Word.word and ffiTypeCodeFloat: Word.word and ffiTypeCodeDouble: Word.word and ffiTypeCodeUInt8: Word.word and ffiTypeCodeSInt8: Word.word and ffiTypeCodeUInt16: Word.word and ffiTypeCodeSInt16: Word.word and ffiTypeCodeUInt32: Word.word and ffiTypeCodeSInt32: Word.word and ffiTypeCodeUInt64: Word.word and ffiTypeCodeSInt64: Word.word and ffiTypeCodeStruct: Word.word and ffiTypeCodePointer: Word.word (* Predefined types. These are addresses so have to be reloaded in each session. *) eqtype ffiType val ffiType2voidStar: ffiType -> Memory.voidStar val voidStar2ffiType: Memory.voidStar -> ffiType val getFFItypeVoid: unit -> ffiType and getFFItypeUint8: unit -> ffiType and getFFItypeSint8: unit -> ffiType and getFFItypeUint16: unit -> ffiType and getFFItypeSint16: unit -> ffiType and getFFItypeUint32: unit -> ffiType and getFFItypeSint32: unit -> ffiType and getFFItypeUint64: unit -> ffiType and getFFItypeSint64: unit -> ffiType and getFFItypeFloat: unit -> ffiType and getFFItypeDouble: unit -> ffiType and getFFItypePointer: unit -> ffiType and getFFItypeUChar: unit -> ffiType and getFFItypeSChar: unit -> ffiType and getFFItypeUShort: unit -> ffiType and getFFItypeSShort: unit -> ffiType and getFFItypeUint: unit -> ffiType and getFFItypeSint: unit -> ffiType and getFFItypeUlong: unit -> ffiType and getFFItypeSlong: unit -> ffiType val extractFFItype: ffiType -> { size: word, align: word, typeCode: word, elements: ffiType list } val createFFItype: { size: word, align: word, typeCode: word, elements: ffiType list } -> ffiType eqtype cif val cif2voidStar: cif -> Memory.voidStar val voidStar2cif: Memory.voidStar -> cif val createCIF: abi * ffiType * ffiType list -> cif val callFunction: { cif: cif, function: Memory.voidStar, result: Memory.voidStar, arguments: Memory.voidStar } -> unit val createCallback: (Memory.voidStar * Memory.voidStar -> unit) * cif -> Memory.voidStar val freeCallback: Memory.voidStar -> unit end structure Error: sig type syserror = OS.syserror val getLastError: unit -> SysWord.word val setLastError: SysWord.word -> unit val fromWord: SysWord.word -> syserror and toWord: syserror -> SysWord.word end type library type symbol val loadLibrary: string -> library val loadExecutable: unit -> library val getSymbol: library -> string -> symbol val symbolAsAddress: symbol -> Memory.voidStar structure LowLevel: sig type ctype = { size: Word.word, (* Size in bytes *) align: Word.word, (* Alignment *) ffiType: unit -> LibFFI.ffiType } val cTypeVoid: ctype and cTypePointer: ctype and cTypeInt8: ctype and cTypeChar: ctype and cTypeUint8: ctype and cTypeUchar: ctype and cTypeInt16: ctype and cTypeUint16: ctype and cTypeInt32: ctype and cTypeUint32: ctype and cTypeInt64: ctype and cTypeUint64: ctype and cTypeInt: ctype and cTypeUint: ctype and cTypeLong: ctype and cTypeUlong: ctype and cTypeFloat: ctype and cTypeDouble: ctype val cStruct: ctype list -> ctype val callwithAbi: LibFFI.abi -> ctype list -> ctype -> symbol -> Memory.voidStar list * Memory.voidStar -> unit val call: ctype list -> ctype -> symbol -> Memory.voidStar list * Memory.voidStar -> unit val cFunctionWithAbi: LibFFI.abi -> ctype list -> ctype -> (Memory.voidStar * Memory.voidStar -> unit) -> Memory.voidStar val cFunction: ctype list -> ctype -> (Memory.voidStar * Memory.voidStar -> unit) -> Memory.voidStar end type 'a conversion val makeConversion: { load: Memory.voidStar -> 'a, (* Load a value from C memory *) store: Memory.voidStar * 'a -> unit -> unit, (* Store value and return free function. *) ctype: LowLevel.ctype } -> 'a conversion val breakConversion: 'a conversion -> { load: Memory.voidStar -> 'a, (* Load a value from C memory *) store: Memory.voidStar * 'a -> unit -> unit, (* Store value and return free function. *) ctype: LowLevel.ctype } val cVoid: unit conversion val cPointer: Memory.voidStar conversion val cInt8: int conversion val cUint8: int conversion val cChar: char conversion val cUchar: Word8.word conversion val cInt16: int conversion val cUint16: int conversion val cInt32: int conversion val cUint32: int conversion val cInt64: int conversion val cUint64: int conversion val cInt32Large: LargeInt.int conversion val cUint32Large: LargeInt.int conversion val cInt64Large: LargeInt.int conversion val cUint64Large: LargeInt.int conversion val cShort: int conversion val cUshort: int conversion val cInt: int conversion val cUint: int conversion val cLong: int conversion val cUlong: int conversion val cIntLarge: LargeInt.int conversion val cUintLarge: LargeInt.int conversion val cLongLarge: LargeInt.int conversion val cUlongLarge: LargeInt.int conversion val cString: string conversion val cByteArray: Word8Vector.vector conversion val cFloat: real conversion val cDouble: real conversion (* When a pointer e.g. a string may be null. *) val cOptionPtr: 'a conversion -> 'a option conversion type 'a closure val cFunction: ('a->'b) closure conversion val buildClosure0withAbi: (unit -> 'a) * LibFFI.abi * unit * 'a conversion -> (unit -> 'a) closure val buildClosure0: (unit -> 'a) * unit * 'a conversion -> (unit -> 'a) closure val buildClosure1withAbi: ('a -> 'b) * LibFFI.abi * 'a conversion * 'b conversion -> ('a -> 'b) closure val buildClosure1: ('a -> 'b) * 'a conversion * 'b conversion -> ('a -> 'b) closure val buildClosure2withAbi: ('a * 'b -> 'c) * LibFFI.abi * ('a conversion * 'b conversion) * 'c conversion -> ('a * 'b -> 'c) closure val buildClosure2: ('a * 'b -> 'c) * ('a conversion * 'b conversion) * 'c conversion -> ('a * 'b -> 'c) closure val buildClosure3withAbi: ('a * 'b *'c -> 'd) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> ('a * 'b *'c -> 'd) closure val buildClosure3: ('a * 'b *'c -> 'd) * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> ('a * 'b *'c -> 'd) closure val buildClosure4withAbi: ('a * 'b * 'c * 'd -> 'e) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion* 'd conversion) * 'e conversion -> ('a * 'b * 'c * 'd -> 'e) closure val buildClosure4: ('a * 'b * 'c * 'd -> 'e) * ('a conversion * 'b conversion * 'c conversion* 'd conversion) * 'e conversion -> ('a * 'b * 'c * 'd -> 'e) closure val buildClosure5withAbi: ('a * 'b * 'c * 'd * 'e -> 'f) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion -> ('a * 'b * 'c * 'd * 'e -> 'f) closure val buildClosure5: ('a * 'b * 'c * 'd * 'e -> 'f) * ('a conversion * 'b conversion * 'c conversion* 'd conversion * 'e conversion) * 'f conversion -> ('a * 'b * 'c * 'd * 'e -> 'f) closure val buildClosure6withAbi: ('a * 'b * 'c * 'd * 'e * 'f -> 'g) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion -> ('a * 'b * 'c * 'd * 'e * 'f -> 'g) closure val buildClosure6: ('a * 'b * 'c * 'd * 'e * 'f -> 'g) * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion -> ('a * 'b * 'c * 'd * 'e * 'f -> 'g) closure (* Remove the "free" from a conversion. Used if extra memory allocated by the argument must not be freed when the function returns. *) val permanent: 'a conversion -> 'a conversion (* Call by reference. *) val cStar: 'a conversion -> 'a ref conversion (* Pass a const pointer *) val cConstStar: 'a conversion -> 'a conversion (* Fixed size vector. It is treated as a struct and passed by value or embedded in a structure. *) val cVectorFixedSize: int * 'a conversion -> 'a vector conversion (* Pass an ML vector as a pointer to a C array. *) and cVectorPointer: 'a conversion -> 'a vector conversion (* Pass an ML array as a pointer to a C array and, on return, update each element of the ML array from the C array. *) and cArrayPointer: 'a conversion -> 'a array conversion (* structs. *) val cStruct2: 'a conversion * 'b conversion -> ('a * 'b) conversion val cStruct3: 'a conversion * 'b conversion * 'c conversion -> ('a*'b*'c)conversion val cStruct4: 'a conversion * 'b conversion * 'c conversion * 'd conversion -> ('a*'b*'c*'d)conversion val cStruct5: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion -> ('a*'b*'c*'d*'e)conversion val cStruct6: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion -> ('a*'b*'c*'d*'e*'f)conversion val cStruct7: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion -> ('a*'b*'c*'d*'e*'f*'g)conversion val cStruct8: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion -> ('a*'b*'c*'d*'e*'f*'g*'h)conversion val cStruct9: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i)conversion val cStruct10: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j)conversion val cStruct11: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k)conversion val cStruct12: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l)conversion val cStruct13: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m)conversion val cStruct14: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n)conversion val cStruct15: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o)conversion val cStruct16: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion * 'p conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p)conversion val cStruct17: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion * 'p conversion * 'q conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q)conversion val cStruct18: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion * 'p conversion * 'q conversion * 'r conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r)conversion val cStruct19: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion * 'p conversion * 'q conversion * 'r conversion * 's conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s)conversion val cStruct20: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion * 'o conversion * 'p conversion * 'q conversion * 'r conversion * 's conversion * 't conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s*'t)conversion val buildCall0withAbi: LibFFI.abi * symbol * unit * 'a conversion -> unit -> 'a val buildCall0: symbol * unit * 'a conversion -> unit -> 'a val buildCall1withAbi: LibFFI.abi * symbol * 'a conversion * 'b conversion -> 'a -> 'b val buildCall1: symbol * 'a conversion * 'b conversion -> 'a -> 'b val buildCall2withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion) * 'c conversion -> 'a * 'b -> 'c val buildCall2: symbol * ('a conversion * 'b conversion) * 'c conversion -> 'a * 'b -> 'c val buildCall3withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> 'a * 'b * 'c -> 'd val buildCall3: symbol * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> 'a * 'b * 'c -> 'd val buildCall4withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion) * 'e conversion -> 'a * 'b * 'c * 'd -> 'e val buildCall4: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion) * 'e conversion -> 'a * 'b * 'c * 'd -> 'e val buildCall5withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion -> 'a * 'b * 'c * 'd * 'e -> 'f val buildCall5: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion -> 'a * 'b * 'c * 'd * 'e -> 'f val buildCall6withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g val buildCall6: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g val buildCall7withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion) * 'h conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h val buildCall7: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion) * 'h conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h val buildCall8withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion) * 'i conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i val buildCall8: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion) * 'i conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i val buildCall9withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion) * 'j conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j val buildCall9: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion) * 'j conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j val buildCall10withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion) * 'k conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k val buildCall10: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion) * 'k conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k val buildCall11withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion) * 'l conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l val buildCall11: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion) * 'l conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l val buildCall12withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion) * 'm conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm val buildCall12: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion) * 'm conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm val buildCall13withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion) * 'n conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n val buildCall13: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion) * 'n conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n val buildCall14withAbi: LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion) * 'o conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o val buildCall14: symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion) * 'o conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o end; structure Foreign:> FOREIGN = struct fun id x = x exception Foreign = RunCall.Foreign open ForeignConstants structure Memory = ForeignMemory infix 6 ++ -- (* Internal utility function. *) fun alignUp(s, align) = Word.andb(s + align-0w1, ~ align) local val ffiGeneralCall = RunCall.rtsCallFull2 "PolyFFIGeneral" in fun ffiGeneral(code: int, arg: 'a): 'b = RunCall.unsafeCast(ffiGeneralCall(RunCall.unsafeCast(code, arg))) end structure System = struct type voidStar = Memory.voidStar fun loadLibrary(s: string): voidStar = ffiGeneral (2, s) and loadExecutable(): voidStar = ffiGeneral (3, ()) and freeLibrary(s: voidStar): unit = ffiGeneral (4, s) and getSymbol(lib: voidStar, s: string): voidStar = ffiGeneral (5, (lib, s)) end structure Error = struct type syserror = OS.syserror fun toWord (s: syserror): SysWord.word = RunCall.unsafeCast s and fromWord (w: SysWord.word) : syserror = RunCall.unsafeCast w local val callGetError = RunCall.rtsCallFast1 "PolyFFIGetError" in fun getLastError(): SysWord.word = let val mem = RunCall.allocateByteMemory(0w1, 0wx41) val () = callGetError mem val () = RunCall.clearMutableBit mem in RunCall.unsafeCast mem end end val setLastError: SysWord.word -> unit = RunCall.rtsCallFast1 "PolyFFISetError" end structure LibFFI = struct type abi = Word.word val abiList: (string * abi) list = ffiGeneral (50, ()) local fun getConstant (n: int) : Word.word = ffiGeneral (51, n) in val abiDefault = getConstant 0 and ffiTypeCodeVoid = getConstant 1 and ffiTypeCodeInt = getConstant 2 and ffiTypeCodeFloat = getConstant 3 and ffiTypeCodeDouble = getConstant 4 and ffiTypeCodeUInt8 = getConstant 5 and ffiTypeCodeSInt8 = getConstant 6 and ffiTypeCodeUInt16 = getConstant 7 and ffiTypeCodeSInt16 = getConstant 8 and ffiTypeCodeUInt32 = getConstant 9 and ffiTypeCodeSInt32 = getConstant 10 and ffiTypeCodeUInt64 = getConstant 11 and ffiTypeCodeSInt64 = getConstant 12 and ffiTypeCodeStruct = getConstant 13 and ffiTypeCodePointer = getConstant 14 end type ffiType = Memory.voidStar val ffiType2voidStar = id and voidStar2ffiType = id local fun getFFItype (n: int) (): ffiType = ffiGeneral (52, n) in val getFFItypeVoid = getFFItype 0 and getFFItypeUint8 = getFFItype 1 and getFFItypeSint8 = getFFItype 2 and getFFItypeUint16 = getFFItype 3 and getFFItypeSint16 = getFFItype 4 and getFFItypeUint32 = getFFItype 5 and getFFItypeSint32 = getFFItype 6 and getFFItypeUint64 = getFFItype 7 and getFFItypeSint64 = getFFItype 8 and getFFItypeFloat = getFFItype 9 and getFFItypeDouble = getFFItype 10 and getFFItypePointer = getFFItype 11 and getFFItypeUChar = getFFItype 12 and getFFItypeSChar = getFFItype 13 and getFFItypeUShort = getFFItype 14 and getFFItypeSShort = getFFItype 15 and getFFItypeUint = getFFItype 16 and getFFItypeSint = getFFItype 17 and getFFItypeUlong = getFFItype 18 and getFFItypeSlong = getFFItype 19 end fun extractFFItype (s: ffiType) = let val (size: word, align: word, typ: word, elem: Memory.voidStar) = ffiGeneral (53, s) (* Unpack the "elements". *) open Memory fun loadElements i = let val a = getAddress(elem, i) in if a = null then [] else a :: loadElements(i+0w1) end val elements = if elem = sysWord2VoidStar 0w0 then [] else loadElements 0w0 in { size=size, align=align, typeCode = typ, elements = elements } end (* Construct a new FFItype in allocated memory. *) fun createFFItype { size: word, align: word, typeCode: word, elements: ffiType list }: ffiType = ffiGeneral (54, (size, align, typeCode, elements)) type cif = Memory.voidStar val cif2voidStar = id and voidStar2cif = id (* Construct and prepare a CIF in allocated memory. *) fun createCIF (abi: abi, resultType: ffiType, argTypes: ffiType list): cif = ffiGeneral (55, (abi, resultType, argTypes)) (* Call a function. We have to pass some space for the result *) fun callFunction { cif: cif, function: Memory.voidStar, result: Memory.voidStar, arguments: Memory.voidStar }: unit = ffiGeneral (56, (cif, function, result, arguments)) (* Create a callback. Returns the C function. *) fun createCallback(f: Memory.voidStar * Memory.voidStar -> unit, cif: cif): Memory.voidStar = ffiGeneral (57, (f, cif)) (* Free a callback. This takes the C function address returned by createCallback *) fun freeCallback(cb: Memory.voidStar): unit = ffiGeneral (58, cb) end type library = unit -> Memory.voidStar type symbol = unit -> Memory.voidStar (* Load the library but memoise it so if we reference the library in another session we will reload it. We load the library immediately so that if there is an error we get the error immediately. *) fun loadLibrary (name: string): library = Memory.memoise System.loadLibrary name and loadExecutable (): library = Memory.memoise System.loadExecutable () (* To get a symbol we memoise a function that forces a library load if necessary and then gets the symbol. *) fun getSymbol(lib: library) (name: string): symbol = Memory.memoise (fn s => System.getSymbol(lib(), s)) name (* This forces the symbol to be loaded. The result is NOT memoised. *) fun symbolAsAddress(s: symbol): Memory.voidStar = s() structure LowLevel = struct type ctype = { size: Word.word, (* Size in bytes *) align: Word.word, (* Alignment *) ffiType: unit -> LibFFI.ffiType } local open LibFFI Memory val getffArg = if ffiMinArgSize = 0w4 then Word32.toLargeWord o get32 else if ffiMinArgSize = 0w8 then get64 else raise Foreign ("Unable to load ffi_arg size=" ^ Word.toString ffiMinArgSize) in val cTypeVoid = { size= #size saVoid, align= #align saVoid, ffiType = memoise getFFItypeVoid () } val cTypePointer = { size= #size saPointer, align= #align saPointer, ffiType = memoise getFFItypePointer () } val cTypeInt8 = { size= #size saSint8, align= #align saSint8, ffiType = memoise getFFItypeSint8 () } val cTypeChar = cTypeInt8 val cTypeUint8 = { size= #size saUint8, align= #align saUint8, ffiType = memoise getFFItypeUint8 () } val cTypeUchar = cTypeUint8 val cTypeInt16 = { size= #size saSint16, align= #align saSint16, ffiType = memoise getFFItypeSint16 () } val cTypeUint16 = { size= #size saUint16, align= #align saUint16, ffiType = memoise getFFItypeUint16 () } val cTypeInt32 = { size= #size saSint32, align= #align saSint32, ffiType = memoise getFFItypeSint32 () } val cTypeUint32 = { size= #size saUint32, align= #align saUint32, ffiType = memoise getFFItypeUint32 () } val cTypeInt64 = { size= #size saSint64, align= #align saSint64, ffiType = memoise getFFItypeSint64 () } val cTypeUint64 = { size= #size saUint64, align= #align saUint64, ffiType = memoise getFFItypeUint64 () } val cTypeInt = { size= #size saSint, align= #align saSint, ffiType = memoise getFFItypeSint () } val cTypeUint = { size= #size saUint, align= #align saUint, ffiType = memoise getFFItypeUint () } val cTypeLong = { size= #size saSlong, align= #align saSlong, ffiType = memoise getFFItypeSlong () } val cTypeUlong = { size= #size saUlong, align= #align saUlong, ffiType = memoise getFFItypeUlong () } val cTypeFloat = { size= #size saFloat, align= #align saFloat, ffiType = memoise getFFItypeFloat () } val cTypeDouble = { size= #size saDouble, align= #align saDouble, ffiType = memoise getFFItypeDouble () } fun cStruct(fields: ctype list): ctype = let (* The total alignment is the maximum alignment of the fields. *) val align = foldl(fn ({align, ...}, a) => Word.max(align, a)) 0w1 fields (* Each field needs to be on its alignment. Finally we round up the size to the total alignment. *) val size = alignUp(foldl(fn ({align, size, ...}, s) => alignUp(s, align) + size) 0w0 fields, align) val types = map #ffiType fields (* Make the type but only when it's used. *) fun ffiType () = LibFFI.createFFItype { size = size, align = align, typeCode=LibFFI.ffiTypeCodeStruct, elements = map (fn t => t()) types } in {align=align, size=size, ffiType=memoise ffiType ()} end fun callwithAbi (abi: abi) (argTypes: ctype list) (resType: ctype): symbol -> voidStar list * voidStar -> unit = let (* Preparation when we create the function. *) fun buildCif () = createCIF (abi, #ffiType resType (), map (fn {ffiType, ...} => ffiType ()) argTypes) val cif: unit->cif = memoise buildCif () val nArgs = List.length argTypes val resSize = #size resType (* If the result size is smaller than ffiMinArgSize we have to first store the result in a value of size ffiMinArgSize then copy the result. This is a restriction of libffi. *) fun smallSpace (fnAddr: unit->voidStar) (args, resMem) = let val _ = List.length args = nArgs orelse raise Foreign "Incorrect number of arguments" val resultSize = alignUp(ffiMinArgSize, #align saPointer) val argResVec = malloc(resultSize + #size saPointer * Word.fromInt nArgs) val argLocn = argResVec ++ resultSize val _ = List.foldl(fn (arg, n) => (setAddress(argLocn, n, arg); n+0w1)) 0w0 args in let val () = callFunction { cif=cif(), function=fnAddr(), result = argResVec, arguments = argLocn} val result: SysWord.word = getffArg(argResVec, 0w0) in (* Copy to the final location. Currently "void" has size 1 so if the function has a void result we still copy one byte. *) if #size resType = 0w1 then set8(resMem, 0w0, Word8.fromLargeWord result) else if #size resType = 0w2 then set16(resMem, 0w0, Word.fromLargeWord result) else if #size resType = 0w4 then set32(resMem, 0w0, Word32.fromLargeWord result) else raise Foreign "Unable to set result: wrong size"; free argResVec end handle exn => (free argResVec; raise exn) end (* If we have enough space. *) fun largeSpace (fnAddr: unit->voidStar) (args, resMem) = let val _ = List.length args = nArgs orelse raise Foreign "Incorrect number of arguments" val argVec = if nArgs = 0 then null else malloc(#size saPointer * Word.fromInt nArgs) val _ = List.foldl(fn (arg, n) => (setAddress(argVec, n, arg); n+0w1)) 0w0 args in let val () = callFunction { cif=cif(), function=fnAddr(), result = resMem, arguments = argVec} in free argVec end handle exn => (free argVec; raise exn) end in if resSize < ffiMinArgSize then smallSpace else largeSpace end fun call x = callwithAbi abiDefault x (* Have to make it a fun to avoid value restriction *) (* Build a call-back function. Returns a function to take the actual ML function, create a callback and then return the address. *) fun cFunctionWithAbi (abi: abi) (argTypes: ctype list) (resType: ctype): (voidStar * voidStar -> unit) -> voidStar = let fun buildCif () = createCIF (abi, #ffiType resType (), map (fn {ffiType, ...} => ffiType ()) argTypes) val cif: unit->cif = memoise buildCif () in fn cbFun => createCallback(cbFun, cif()) end fun cFunction x = cFunctionWithAbi abiDefault x end end type 'a conversion = { load: Memory.voidStar -> 'a, (* Load a value from C memory *) store: Memory.voidStar * 'a -> unit -> unit, (* Store a value in C memory *) updateML: Memory.voidStar * 'a -> unit, (* Update ML value after call - only used in cStar. *) updateC: Memory.voidStar * 'a -> unit, (* Update C value after callback - only used in cStar. *) ctype: LowLevel.ctype } fun makeConversion { load, store, ctype } = { load = load, store = store, ctype = ctype, updateML = fn _ => (), updateC = fn _ => () } fun breakConversion({load, store, ctype, ... }: 'a conversion) = { load = load, store = store, ctype = ctype } (* Conversions *) local open LibFFI Memory LowLevel fun checkRangeShort(i, min, max) = if i < min orelse i > max then raise Overflow else i fun checkRangeLong(i: LargeInt.int, min, max) = if i < min orelse i > max then raise Overflow else i fun noFree _ = () (* None of these allocate extra memory or need to update. *) in val cVoid: unit conversion = makeConversion{ load=fn _ => (), store=fn _ => noFree, ctype = cTypeVoid } (* cPointer should only be used to base other conversions on. *) val cPointer: voidStar conversion = makeConversion { load=fn a => getAddress(a, 0w0), store=fn(a, v) => (setAddress(a, 0w0, v); noFree), ctype = cTypePointer } local fun load(m: voidStar): int = Word8.toIntX(get8(m, 0w0)) fun store(m: voidStar, i: int) = (set8(m, 0w0, Word8.fromInt(checkRangeShort(i, ~128, 127))); noFree) in val cInt8: int conversion = makeConversion { load=load, store=store, ctype = cTypeInt8 } end local (* Char is signed in C but unsigned in ML. *) fun load(m: voidStar): char = Char.chr(Word8.toInt(get8(m, 0w0))) fun store(m: voidStar, i: char) = (set8(m, 0w0, Word8.fromInt(Char.ord i)); noFree) in val cChar: char conversion = makeConversion{ load=load, store=store, ctype = cTypeChar } end local (* Uchar - convert as Word8.word. *) fun load(m: voidStar): Word8.word = get8(m, 0w0) fun store(m: voidStar, i: Word8.word) = (set8(m, 0w0, i); noFree) in val cUchar: Word8.word conversion = makeConversion{ load=load, store=store, ctype = cTypeUchar } end local fun load(m: voidStar): int = Word8.toInt(get8(m, 0w0)) fun store(m: voidStar, i: int) = (set8(m, 0w0, Word8.fromInt(checkRangeShort(i, 0, 255))); noFree) in val cUint8: int conversion = makeConversion{ load=load, store=store, ctype = cTypeUint8 } end local (* Because the word length is greater than the length returned by get16 we have to do something special to get the sign bit correct. That isn't necessary in the other cases. *) fun load(m: voidStar): int = let (* Could be done with shifts *) val r = Word.toInt(get16(m, 0w0)) in if r >= 32768 then r - 65536 else r end fun store(m: voidStar, i: int) = (set16(m, 0w0, Word.fromInt(checkRangeShort(i, ~32768, 32767))); noFree) in val cInt16: int conversion = makeConversion{ load=load, store=store, ctype = cTypeInt16 } end local fun load(m: voidStar): int = Word.toInt(get16(m, 0w0)) fun store(m: voidStar, i: int) = (set16(m, 0w0, Word.fromInt(checkRangeShort(i, 0, 65535))); noFree) in val cUint16: int conversion = makeConversion{ load=load, store=store, ctype = cTypeUint16 } end local fun load(m: voidStar): int = Word32.toIntX(get32(m, 0w0)) val checkRange = if wordSize = 0w4 andalso isSome (Int.maxInt) then fn i => i (* We're using fixed precision 31-bit - no check necessary. *) else let (* These will overflow on fixed precision 31-bit. *) val max32 = Int32.toInt(valOf Int32.maxInt) val min32 = ~max32 - 1 in fn i => checkRangeShort(i, min32, max32) end fun store(m: voidStar, i: int) = (set32(m, 0w0, Word32.fromInt(checkRange i)); noFree) in val cInt32: int conversion = makeConversion{ load=load, store=store, ctype = cTypeInt32 } end local fun load(m: voidStar): LargeInt.int = Word32.toLargeIntX(get32(m, 0w0)) fun store(m: voidStar, i: LargeInt.int) = (set32(m, 0w0, Word32.fromLargeInt(checkRangeLong(i, ~2147483648, 2147483647))); noFree) in val cInt32Large: LargeInt.int conversion = makeConversion{ load=load, store=store, ctype = cTypeInt32 } end local fun load(m: voidStar): int = Word32.toInt(get32(m, 0w0)) val checkRange = if wordSize = 0w4 andalso isSome (Int.maxInt) then fn i => if i < 0 then raise Overflow else i (* Fixed precision 31-bit *) else let (* This will overflow on fixed precision 31-bit. *) val max32 = Int32.toInt(valOf Int32.maxInt) val max32Unsigned = max32 * 2 + 1 in fn i => checkRangeShort(i, 0, max32Unsigned) end fun store(m: voidStar, i: int) = (set32(m, 0w0, Word32.fromInt(checkRange i)); noFree) in val cUint32: int conversion = makeConversion{ load=load, store=store, ctype = cTypeUint32 } end local fun load(m: voidStar): LargeInt.int = Word32.toLargeInt(get32(m, 0w0)) fun store(m: voidStar, i: LargeInt.int) = (set32(m, 0w0, Word32.fromLargeInt(checkRangeLong(i, 0, 4294967295))); noFree) in val cUint32Large: LargeInt.int conversion = makeConversion{ load=load, store=store, ctype = cTypeUint32 } end local fun loadLarge(m: voidStar): LargeInt.int = if wordSize = 0w4 then let val v1 = get32(m, 0w0) and v2 = get32(m, 0w1) in if bigEndian then IntInf.<<(Word32.toLargeIntX v1, 0w32) + Word32.toLargeInt v2 else IntInf.<<(Word32.toLargeIntX v2, 0w32) + Word32.toLargeInt v1 end else SysWord.toLargeIntX(get64(m, 0w0)) fun loadShort(m: voidStar): int = if wordSize = 0w4 then Int.fromLarge(loadLarge m) else SysWord.toIntX(get64(m, 0w0)) val max = IntInf.<<(1, 0w63) - 1 and min = ~ (IntInf.<<(1, 0w63)) fun storeLarge(m: voidStar, i: LargeInt.int) = if wordSize = 0w4 then let val _ = checkRangeLong(i, min, max) val lo = Word32.fromLargeInt i and hi = Word32.fromLargeInt (IntInf.~>>(i, 0w32)) in if bigEndian then (set32(m, 0w0, hi); set32(m, 0w1, lo)) else (set32(m, 0w0, lo); set32(m, 0w1, hi)); noFree end else (set64(m, 0w0, SysWord.fromLargeInt(checkRangeLong(i, min, max))); noFree) fun storeShort(m: voidStar, i: int) = if wordSize = 0w4 orelse not (isSome Int.maxInt) then (* 32-bit or arbitrary precision. *) storeLarge(m, LargeInt.fromInt i) else (* Fixed precision 64-bit - no need for a range check. *) (set64(m, 0w0, SysWord.fromInt i); noFree) in val cInt64: int conversion = makeConversion{ load=loadShort, store=storeShort, ctype = cTypeInt64 } and cInt64Large: LargeInt.int conversion = makeConversion{ load=loadLarge, store=storeLarge, ctype = cTypeInt64 } end local fun loadLarge(m: voidStar): LargeInt.int = if wordSize = 0w4 then let val v1 = get32(m, 0w0) and v2 = get32(m, 0w1) in if bigEndian then IntInf.<<(Word32.toLargeInt v1, 0w32) + Word32.toLargeInt v2 else IntInf.<<(Word32.toLargeInt v2, 0w32) + Word32.toLargeInt v1 end else SysWord.toLargeInt(get64(m, 0w0)) fun loadShort(m: voidStar): int = if wordSize = 0w4 then Int.fromLarge(loadLarge m) else SysWord.toInt(get64(m, 0w0)) val max = IntInf.<<(1, 0w64) - 1 fun storeLarge(m: voidStar, i: LargeInt.int) = if wordSize = 0w4 then let val _ = checkRangeLong(i, 0, max) val lo = Word32.fromLargeInt i and hi = Word32.fromLargeInt (IntInf.~>>(i, 0w32)) in if bigEndian then (set32(m, 0w0, hi); set32(m, 0w1, lo)) else (set32(m, 0w0, lo); set32(m, 0w1, hi)); noFree end else (set64(m, 0w0, SysWord.fromLargeInt(checkRangeLong(i, 0, max))); noFree) fun storeShort(m: voidStar, i: int) = if wordSize = 0w4 orelse not (isSome Int.maxInt) then (* 32-bit or arbitrary precision. *) storeLarge(m, LargeInt.fromInt i) else if i < 0 (* Fixed precision 64-bit - just check it's not negative. *) then raise Overflow else (set64(m, 0w0, SysWord.fromInt i); noFree) in val cUint64: int conversion = makeConversion{ load=loadShort, store=storeShort, ctype = cTypeUint64 } and cUint64Large: LargeInt.int conversion = makeConversion{ load=loadLarge, store=storeLarge, ctype = cTypeUint64 } end local fun load(m: voidStar): real = getFloat(m, 0w0) fun store(m: voidStar, v: real) = (setFloat(m, 0w0, v); noFree) in val cFloat: real conversion = makeConversion{ load=load, store=store, ctype = cTypeFloat } end local fun load(m: voidStar): real = getDouble(m, 0w0) fun store(m: voidStar, v: real) = (setDouble(m, 0w0, v); noFree) in val cDouble: real conversion = makeConversion{ load=load, store=store, ctype = cTypeDouble } end val cShort = if #size saSShort = #size saSint16 then cInt16 (*else if #size saSShort = #size saSint32 then cInt32*) else raise Foreign "Unable to find type for short" val cUshort = if #size saUShort = #size saUint16 then cUint16 (*else if #size saUShort = #size saUint32 then cUint32*) else raise Foreign "Unable to find type for unsigned" val cInt = (*if #size saSint = #size saSint16 then cInt16 else *)if #size saSint = #size saSint32 then cInt32 else if #size saSint = #size saSint64 then cInt64 else raise Foreign "Unable to find type for int" val cIntLarge = (*if #size saSint = #size saSint16 then cInt16 else *)if #size saSint = #size saSint32 then cInt32Large else if #size saSint = #size saSint64 then cInt64Large else raise Foreign "Unable to find type for int" val cUint = (*if #size saUint = #size saUint16 then cUint16 else *)if #size saUint = #size saUint32 then cUint32 else if #size saUint = #size saUint64 then cUint64 else raise Foreign "Unable to find type for unsigned" val cUintLarge = (*if #size saUint = #size saUint16 then cUint16 else *)if #size saUint = #size saUint32 then cUint32Large else if #size saUint = #size saUint64 then cUint64Large else raise Foreign "Unable to find type for unsigned" val cLong = (*if #size saSlong = #size saSint16 then cInt16 else *)if #size saSlong = #size saSint32 then cInt32 else if #size saSlong = #size saSint64 then cInt64 else raise Foreign "Unable to find type for long" val cLongLarge = (*if #size saSlong = #size saSint16 then cInt16 else *)if #size saSlong = #size saSint32 then cInt32Large else if #size saSlong = #size saSint64 then cInt64Large else raise Foreign "Unable to find type for long" val cUlong = (*if #size saUlong = #size saUint16 then cUint16 else *)if #size saUlong = #size saUint32 then cUint32 else if #size saUlong = #size saUint64 then cUint64 else raise Foreign "Unable to find type for unsigned long" val cUlongLarge = (*if #size saUlong = #size saUint16 then cUint16 else *)if #size saUlong = #size saUint32 then cUint32Large else if #size saUlong = #size saUint64 then cUint64Large else raise Foreign "Unable to find type for unsigned long" local fun load(s: voidStar): string = let (* The location contains the address of the string. *) val sAddr = getAddress(s, 0w0) fun sLen i = if get8(sAddr, i) = 0w0 then i else sLen(i+0w1) val length = sLen 0w0 fun loadChar i = Char.chr(Word8.toInt(get8(sAddr, Word.fromInt i))) in CharVector.tabulate(Word.toInt length, loadChar) end fun store(v: voidStar, s: string) = let val sLen = Word.fromInt(String.size s) val sMem = malloc(sLen + 0w1) val () = CharVector.appi(fn(i, ch) => set8(sMem, Word.fromInt i, Word8.fromInt(Char.ord ch))) s val () = set8(sMem, sLen, 0w0) in setAddress(v, 0w0, sMem); fn () => Memory.free sMem end in val cString: string conversion = makeConversion { load=load, store=store, ctype = cTypePointer } end (* This is used if we want to pass NULL rather than a pointer in some cases. *) fun cOptionPtr({load, store, updateML, updateC, ctype}:'a conversion): 'a option conversion = if #typeCode(extractFFItype(#ffiType ctype ())) <> ffiTypeCodePointer then raise Foreign "cOptionPtr must be applied to a pointer type" else let fun loadOpt(s: voidStar) = if getAddress(s, 0w0) = null then NONE else SOME(load s) fun storeOpt(v: voidStar, NONE) = (setAddress(v, 0w0, null); fn _ => ()) | storeOpt(v: voidStar, SOME s) = store(v, s) (* Do we have update here? *) fun updateMLOpt(_, NONE) = () | updateMLOpt(v: voidStar, SOME s) = updateML(v, s) fun updateCOpt(_, NONE) = () | updateCOpt(v, SOME s) = updateC(v, s) in { load=loadOpt, store=storeOpt, updateML = updateMLOpt, updateC = updateCOpt, ctype = cTypePointer } end local (* Word8Vector.vector to C array of bytes. It is only possible to do this one way because conversion from a C array requires us to know the size. *) fun load _ = raise Foreign "cByteArray cannot convert from C to ML" fun store(v: voidStar, s: Word8Vector.vector) = let open Word8Vector val sLen = Word.fromInt(length s) val sMem = malloc sLen val () = appi(fn(i, b) => set8(sMem, Word.fromInt i, b)) s in setAddress(v, 0w0, sMem); fn () => Memory.free sMem end in val cByteArray: Word8Vector.vector conversion = makeConversion{ load=load, store=store, ctype = cTypePointer } end end (* Remove the free part from the store fn. This is intended for situations where an argument should not be deleted once the function completes. *) fun permanent({load, store, ctype, updateML, updateC }: 'a conversion): 'a conversion = let fun storeP args = (ignore (store args); fn () => ()) in { load=load, store=storeP, updateML = updateML, updateC = updateC, ctype=ctype } end val op ++ = Memory.++ fun cStruct2(a: 'a conversion, b: 'b conversion): ('a*'b)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ... }} = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {align=alignb, ... }} = b val offsetb = alignUp(sizea, alignb) fun load s = (loada s, loadb(s ++ offsetb)) and store (x, (a, b)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) in fn () => ( freea(); freeb() ) end and updateML(s, (a, b)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b)) and updateC(x, (a, b)) = (updateCa(x, a); updateCb(x ++ offsetb, b)) in {load=load, store=store, updateML = updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb]} end fun cStruct3(a: 'a conversion, b: 'b conversion, c: 'c conversion): ('a*'b*'c)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {align=alignc, ...} } = c val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc)) and store (x, (a, b, c)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) in fn () => ( freea(); freeb(); freec() ) end and updateML(s, (a, b, c)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c)) and updateC(x, (a, b, c)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec]} end fun cStruct4(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion): ('a*'b*'c*'d)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {align=alignd, ...} } = d val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd)) and store (x, (a, b, c, d)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) in fn () => ( freea(); freeb(); freec(); freed() ) end and updateML(s, (a, b, c, d)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d)) and updateC(x, (a, b, c, d)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped]} end fun cStruct5(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion): ('a*'b*'c*'d*'e)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {align=aligne, ...} } = e val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete)) and store (x, (a, b, c, d, e)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) in fn () => ( freea(); freeb(); freec(); freed(); freee() ) end and updateML(s, (a, b, c, d, e)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d); updateMLe(s ++ offsete, e)) and updateC(x, (a, b, c, d, e)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee]} end fun cStruct6(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion): ('a*'b*'c*'d*'e*'f)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {align=alignf, ...} } = f val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf)) and store (x, (a, b, c, d, e, f)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef() ) end and updateML(s, (a, b, c, d, e, f)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d); updateMLe(s ++ offsete, e); updateMLf(s ++ offsetf, f)) and updateC(x, (a, b, c, d, e, f)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef]} end fun cStruct7(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion): ('a*'b*'c*'d*'e*'f*'g)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {align=aligng, ...} } = g val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg)) and store (x, (a, b, c, d, e, f, g)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg() ) end and updateML(s, (a, b, c, d, e, f, g)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d); updateMLe(s ++ offsete, e); updateMLf(s ++ offsetf, f); updateMLg(s ++ offsetg, g)) and updateC(x, (a, b, c, d, e, f, g)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg]} end fun cStruct8(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion): ('a*'b*'c*'d*'e*'f*'g*'h)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {align=alignh, ...} } = h val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth)) and store (x, (a, b, c, d, e, f, g, h)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh() ) end and updateML(s, (a, b, c, d, e, f, g, h)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d); updateMLe(s ++ offsete, e); updateMLf(s ++ offsetf, f); updateMLg(s ++ offsetg, g); updateMLh(s ++ offseth, h)) and updateC(x, (a, b, c, d, e, f, g, h)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh]} end fun cStruct9(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {align=aligni, ...} } = i val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti)) and store (x, (a, b, c, d, e, f, g, h, i)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei() ) end and updateML(s, (a, b, c, d, e, f, g, h, i)) = (updateMLa(s, a); updateMLb(s ++ offsetb, b); updateMLc(s ++ offsetc, c); updateMLd(s ++ offsetd, d); updateMLe(s ++ offsete, e); updateMLf(s ++ offsetf, f); updateMLg(s ++ offsetg, g); updateMLh(s ++ offseth, h); updateMLi(s ++ offseti, i)) and updateC(x, (a, b, c, d, e, f, g, h, i)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei]} end fun cStruct10(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {align=alignj, ...} } = j val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj)) and store (x, (a, b, c, d, e, f, g, h, i, j)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j)) and updateC(x, (a, b, c, d, e, f, g, h, i, j)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej]} end fun cStruct11(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {align=alignk, ...} } = k val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk)) and store (x, (a, b, c, d, e, f, g, h, i, j, k)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek]} end fun cStruct12(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {align=alignl, ...} } = l val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel]} end fun cStruct13(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {align=alignm, ...} } = m val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem]} end nonfix o fun cStruct14(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {align=alignn, ...} } = n val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen]} end fun cStruct15(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {align=aligno, ...} } = o val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo]} end fun cStruct16(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion, p: 'p conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {size=sizeo, align=aligno, ...} } = o and {load=loadp, store=storep, updateML=updateMLp, updateC=updateCp, ctype = ctypep as {align=alignp, ...} } = p val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) val offsetp = alignUp(offseto + sizeo, alignp) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto), loadp(s ++ offsetp)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) and freep = storep(x ++ offsetp, p) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo(); freep() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o); updateMLp(x ++ offsetp, p)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o); updateCp(x ++ offsetp, p)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo, ctypep]} end fun cStruct17(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion, p: 'p conversion, q: 'q conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {size=sizeo, align=aligno, ...} } = o and {load=loadp, store=storep, updateML=updateMLp, updateC=updateCp, ctype = ctypep as {size=sizep, align=alignp, ...} } = p and {load=loadq, store=storeq, updateML=updateMLq, updateC=updateCq, ctype = ctypeq as {align=alignq, ...} } = q val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) val offsetp = alignUp(offseto + sizeo, alignp) val offsetq = alignUp(offsetp + sizep, alignq) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto), loadp(s ++ offsetp), loadq(s ++ offsetq)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) and freep = storep(x ++ offsetp, p) and freeq = storeq(x ++ offsetq, q) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo(); freep(); freeq() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o); updateMLp(x ++ offsetp, p); updateMLq(x ++ offsetq, q)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o); updateCp(x ++ offsetp, p); updateCq(x ++ offsetq, q)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo, ctypep, ctypeq]} end fun cStruct18(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion, p: 'p conversion, q: 'q conversion, r: 'r conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {size=sizeo, align=aligno, ...} } = o and {load=loadp, store=storep, updateML=updateMLp, updateC=updateCp, ctype = ctypep as {size=sizep, align=alignp, ...} } = p and {load=loadq, store=storeq, updateML=updateMLq, updateC=updateCq, ctype = ctypeq as {size=sizeq, align=alignq, ...} } = q and {load=loadr, store=storer, updateML=updateMLr, updateC=updateCr, ctype = ctyper as {align=alignr, ...} } = r val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) val offsetp = alignUp(offseto + sizeo, alignp) val offsetq = alignUp(offsetp + sizep, alignq) val offsetr = alignUp(offsetq + sizeq, alignr) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto), loadp(s ++ offsetp), loadq(s ++ offsetq), loadr(s ++ offsetr)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) and freep = storep(x ++ offsetp, p) and freeq = storeq(x ++ offsetq, q) and freer = storer(x ++ offsetr, r) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo(); freep(); freeq(); freer() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o); updateMLp(x ++ offsetp, p); updateMLq(x ++ offsetq, q); updateMLr(x ++ offsetr, r)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o); updateCp(x ++ offsetp, p); updateCq(x ++ offsetq, q); updateCr(x ++ offsetr, r)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo, ctypep, ctypeq, ctyper]} end fun cStruct19(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion, p: 'p conversion, q: 'q conversion, r: 'r conversion, s: 's conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {size=sizeo, align=aligno, ...} } = o and {load=loadp, store=storep, updateML=updateMLp, updateC=updateCp, ctype = ctypep as {size=sizep, align=alignp, ...} } = p and {load=loadq, store=storeq, updateML=updateMLq, updateC=updateCq, ctype = ctypeq as {size=sizeq, align=alignq, ...} } = q and {load=loadr, store=storer, updateML=updateMLr, updateC=updateCr, ctype = ctyper as {size=sizer, align=alignr, ...} } = r and {load=loads, store=stores, updateML=updateMLs, updateC=updateCs, ctype = ctypes as {align=aligns, ...} } = s val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) val offsetp = alignUp(offseto + sizeo, alignp) val offsetq = alignUp(offsetp + sizep, alignq) val offsetr = alignUp(offsetq + sizeq, alignr) val offsets = alignUp(offsetr + sizer, aligns) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto), loadp(s ++ offsetp), loadq(s ++ offsetq), loadr(s ++ offsetr), loads(s ++ offsets)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) and freep = storep(x ++ offsetp, p) and freeq = storeq(x ++ offsetq, q) and freer = storer(x ++ offsetr, r) and frees = stores(x ++ offsets, s) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo(); freep(); freeq(); freer(); frees() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o); updateMLp(x ++ offsetp, p); updateMLq(x ++ offsetq, q); updateMLr(x ++ offsetr, r); updateMLs(x ++ offsets, s)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o); updateCp(x ++ offsetp, p); updateCq(x ++ offsetq, q); updateCr(x ++ offsetr, r); updateCs(x ++ offsets, s)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo, ctypep, ctypeq, ctyper, ctypes]} end fun cStruct20(a: 'a conversion, b: 'b conversion, c: 'c conversion, d: 'd conversion, e: 'e conversion, f: 'f conversion, g: 'g conversion, h: 'h conversion, i: 'i conversion, j: 'j conversion, k: 'k conversion, l: 'l conversion, m: 'm conversion, n: 'n conversion, o: 'o conversion, p: 'p conversion, q: 'q conversion, r: 'r conversion, s: 's conversion, t: 't conversion): ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s*'t)conversion = let val {load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype = ctypea as {size=sizea, ...} } = a and {load=loadb, store=storeb, updateML=updateMLb, updateC=updateCb, ctype = ctypeb as {size=sizeb, align=alignb, ...} } = b and {load=loadc, store=storec, updateML=updateMLc, updateC=updateCc, ctype = ctypec as {size=sizec, align=alignc, ...} } = c and {load=loadd, store=stored, updateML=updateMLd, updateC=updateCd, ctype = ctyped as {size=sized, align=alignd, ...} } = d and {load=loade, store=storee, updateML=updateMLe, updateC=updateCe, ctype = ctypee as {size=sizee, align=aligne, ...} } = e and {load=loadf, store=storef, updateML=updateMLf, updateC=updateCf, ctype = ctypef as {size=sizef, align=alignf, ...} } = f and {load=loadg, store=storeg, updateML=updateMLg, updateC=updateCg, ctype = ctypeg as {size=sizeg, align=aligng, ...} } = g and {load=loadh, store=storeh, updateML=updateMLh, updateC=updateCh, ctype = ctypeh as {size=sizeh, align=alignh, ...} } = h and {load=loadi, store=storei, updateML=updateMLi, updateC=updateCi, ctype = ctypei as {size=sizei, align=aligni, ...} } = i and {load=loadj, store=storej, updateML=updateMLj, updateC=updateCj, ctype = ctypej as {size=sizej, align=alignj, ...} } = j and {load=loadk, store=storek, updateML=updateMLk, updateC=updateCk, ctype = ctypek as {size=sizek, align=alignk, ...} } = k and {load=loadl, store=storel, updateML=updateMLl, updateC=updateCl, ctype = ctypel as {size=sizel, align=alignl, ...} } = l and {load=loadm, store=storem, updateML=updateMLm, updateC=updateCm, ctype = ctypem as {size=sizem, align=alignm, ...} } = m and {load=loadn, store=storen, updateML=updateMLn, updateC=updateCn, ctype = ctypen as {size=sizen, align=alignn, ...} } = n and {load=loado, store=storeo, updateML=updateMLo, updateC=updateCo, ctype = ctypeo as {size=sizeo, align=aligno, ...} } = o and {load=loadp, store=storep, updateML=updateMLp, updateC=updateCp, ctype = ctypep as {size=sizep, align=alignp, ...} } = p and {load=loadq, store=storeq, updateML=updateMLq, updateC=updateCq, ctype = ctypeq as {size=sizeq, align=alignq, ...} } = q and {load=loadr, store=storer, updateML=updateMLr, updateC=updateCr, ctype = ctyper as {size=sizer, align=alignr, ...} } = r and {load=loads, store=stores, updateML=updateMLs, updateC=updateCs, ctype = ctypes as {size=sizes, align=aligns, ...} } = s and {load=loadt, store=storet, updateML=updateMLt, updateC=updateCt, ctype = ctypet as {align=alignt, ...} } = t val offsetb = alignUp(sizea, alignb) val offsetc = alignUp(offsetb + sizeb, alignc) val offsetd = alignUp(offsetc + sizec, alignd) val offsete = alignUp(offsetd + sized, aligne) val offsetf = alignUp(offsete + sizee, alignf) val offsetg = alignUp(offsetf + sizef, aligng) val offseth = alignUp(offsetg + sizeg, alignh) val offseti = alignUp(offseth + sizeh, aligni) val offsetj = alignUp(offseti + sizei, alignj) val offsetk = alignUp(offsetj + sizej, alignk) val offsetl = alignUp(offsetk + sizek, alignl) val offsetm = alignUp(offsetl + sizel, alignm) val offsetn = alignUp(offsetm + sizem, alignn) val offseto = alignUp(offsetn + sizen, aligno) val offsetp = alignUp(offseto + sizeo, alignp) val offsetq = alignUp(offsetp + sizep, alignq) val offsetr = alignUp(offsetq + sizeq, alignr) val offsets = alignUp(offsetr + sizer, aligns) val offsett = alignUp(offsets + sizes, alignt) fun load s = (loada s, loadb(s ++ offsetb), loadc(s ++ offsetc), loadd(s ++ offsetd), loade(s ++ offsete), loadf(s ++ offsetf), loadg(s ++ offsetg), loadh(s ++ offseth), loadi(s ++ offseti), loadj(s ++ offsetj), loadk(s ++ offsetk), loadl(s ++ offsetl), loadm(s ++ offsetm), loadn(s ++ offsetn), loado(s ++ offseto), loadp(s ++ offsetp), loadq(s ++ offsetq), loadr(s ++ offsetr), loads(s ++ offsets), loadt(s ++ offsett)) and store (x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)) = let val freea = storea(x, a) and freeb = storeb(x ++ offsetb, b) and freec = storec(x ++ offsetc, c) and freed = stored(x ++ offsetd, d) and freee = storee(x ++ offsete, e) and freef = storef(x ++ offsetf, f) and freeg = storeg(x ++ offsetg, g) and freeh = storeh(x ++ offseth, h) and freei = storei(x ++ offseti, i) and freej = storej(x ++ offsetj, j) and freek = storek(x ++ offsetk, k) and freel = storel(x ++ offsetl, l) and freem = storem(x ++ offsetm, m) and freen = storen(x ++ offsetn, n) and freeo = storeo(x ++ offseto, o) and freep = storep(x ++ offsetp, p) and freeq = storeq(x ++ offsetq, q) and freer = storer(x ++ offsetr, r) and frees = stores(x ++ offsets, s) and freet = storet(x ++ offsett, t) in fn () => ( freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); freeo(); freep(); freeq(); freer(); frees(); freet() ) end and updateML(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)) = (updateMLa(x, a); updateMLb(x ++ offsetb, b); updateMLc(x ++ offsetc, c); updateMLd(x ++ offsetd, d); updateMLe(x ++ offsete, e); updateMLf(x ++ offsetf, f); updateMLg(x ++ offsetg, g); updateMLh(x ++ offseth, h); updateMLi(x ++ offseti, i); updateMLj(x ++ offsetj, j); updateMLk(x ++ offsetk, k); updateMLl(x ++ offsetl, l); updateMLm(x ++ offsetm, m); updateMLn(x ++ offsetn, n); updateMLo(x ++ offseto, o); updateMLp(x ++ offsetp, p); updateMLq(x ++ offsetq, q); updateMLr(x ++ offsetr, r); updateMLs(x ++ offsets, s); updateMLt(x ++ offsett, t)) and updateC(x, (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)) = (updateCa(x, a); updateCb(x ++ offsetb, b); updateCc(x ++ offsetc, c); updateCd(x ++ offsetd, d); updateCe(x ++ offsete, e); updateCf(x ++ offsetf, f); updateCg(x ++ offsetg, g); updateCh(x ++ offseth, h); updateCi(x ++ offseti, i); updateCj(x ++ offsetj, j); updateCk(x ++ offsetk, k); updateCl(x ++ offsetl, l); updateCm(x ++ offsetm, m); updateCn(x ++ offsetn, n); updateCo(x ++ offseto, o); updateCp(x ++ offsetp, p); updateCq(x ++ offsetq, q); updateCr(x ++ offsetr, r); updateCs(x ++ offsets, s); updateCt(x ++ offsett, t)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = LowLevel.cStruct[ctypea, ctypeb, ctypec, ctyped, ctypee, ctypef, ctypeg, ctypeh, ctypei, ctypej, ctypek, ctypel, ctypem, ctypen, ctypeo, ctypep, ctypeq, ctyper, ctypes, ctypet]} end (* Conversion for call-by-reference. *) local open Memory LowLevel in fun cStar({load=loada, store=storea, ctype=ctypea, ...}: 'a conversion): 'a ref conversion = let fun store(m, ref s) = let (* When we pass a ref X into a cStar cX function we need to allocate a memory cell big enough for a cX value. Then we copy the current value of the ML into this. We set the argument, a pointer, to the address of the cell. *) val mem = malloc(#size ctypea) val () = setAddress(m, 0w0, mem) val freea = storea(mem, s) in fn () => (free mem; freea()) end (* Called to update the ML value when the C . *) fun updateML(m, s) = s := loada(getAddress(m, 0w0)) (* Used when an ML callback receives a cStar argument. *) fun load s = ref(loada(getAddress(s, 0w0))) (* Used when a callback has returned to update the C value. If storea allocates then there's nothing we can do. *) fun updateC(m, ref s) = ignore(storea(getAddress(m, 0w0), s)) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = cTypePointer} end (* Similar to cStar but without the need to update the result. *) fun cConstStar({load=loada, store=storea, updateML=updateMLa, updateC=updateCa, ctype=ctypea}: 'a conversion): 'a conversion = let fun load s = loada(getAddress(s, 0w0)) fun store(m, s) = let val mem = malloc(#size ctypea) val () = setAddress(m, 0w0, mem) val freea = storea(mem, s) in fn () => (free mem; freea()) end (* Do we have to do anything here? Could we pass a const pointer to a structure with variable fields? *) fun updateML(m, s) = updateMLa(getAddress(m, 0w0), s) and updateC(m, s) = updateCa(getAddress(m, 0w0), s) in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = cTypePointer} end (* Fixed size vector. It is treated as a struct and passed by value or embedded in a structure. *) fun cVectorFixedSize(n, {load=loadEl, store=storeEl, updateML=updateMLel, updateC=updateCel, ctype={size=sizeEl, align=alignEl, ffiType=ffiTypeEl}, ...}: 'a conversion) : 'a vector conversion = let val arraySize = sizeEl * Word.fromInt n fun ffiTypeArray () = LibFFI.createFFItype { size = arraySize, align = alignEl, typeCode=LibFFI.ffiTypeCodeStruct, elements = List.tabulate (n, fn _ => ffiTypeEl()) } val arrayType = { size = arraySize, align = alignEl, ffiType = ffiTypeArray } fun load(v: voidStar): 'a vector = Vector.tabulate(n, fn i => loadEl(v ++ Word.fromInt i)) fun store(v: voidStar, s: 'a vector) = let val sLen = Vector.length s val _ = sLen <= n orelse raise Foreign "vector too long" (* Store the values. Make a list of the free fns in case they allocate *) val frees = Vector.foldli(fn(i, el, l) => storeEl(v ++ Word.fromInt i, el) :: l) [] s; in fn () => List.app (fn f => f()) frees end (* If we have a ref in here we need to update *) fun updateML(v, s) = Vector.appi(fn (i, el) => updateMLel(v ++ Word.fromInt i, el)) s and updateC(v, s) = Vector.appi(fn (i, el) => updateCel(v ++ Word.fromInt i, el)) s in { load = load, store = store, updateML=updateML, updateC=updateC, ctype = arrayType } end (* Pass an ML vector as a pointer to a C array. *) fun cVectorPointer ({store=storeEl, updateML=updateMLel, ctype={size=sizeEl, ...}, ...}: 'a conversion) : 'a vector conversion = let (* We can't determine the size so can't construct a suitable ML value. *) fun load _ = raise Foreign "Cannot return a cVectorPointer from C to ML" fun store(m, s) = let val mem = malloc(sizeEl * Word.fromInt(Vector.length s)) val () = setAddress(m, 0w0, mem) (* Store the values. Make a list of the free fns in case they allocate *) val frees = Vector.foldli(fn(i, el, l) => storeEl(mem ++ (sizeEl * Word.fromInt i), el) :: l) [] s; in fn () => (List.app (fn f => f()) frees; free mem) end (* This is only appropriate if the elements are refs. *) fun updateML(v, s) = let val addr = getAddress(v, 0w0) in Vector.appi(fn (i, el) => updateMLel(addr ++ (sizeEl * Word.fromInt i), el)) s end (* updateC can't actually be used because we can't load a suitable value *) and updateC _ = raise Foreign "Cannot return a cVectorPointer from C to ML" in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = cTypePointer} end (* Pass an ML array as a pointer to a C array and, on return, update each element of the ML array from the C array. *) fun cArrayPointer ({load=loadEl, store=storeEl, ctype={size=sizeEl, ...}, ...}: 'a conversion) : 'a array conversion = let (* We can't determine the size so can't construct a suitable ML value. *) fun load _ = raise Foreign "Cannot return a cArrayPointer from C to ML" fun store(m, s) = let val mem = malloc(sizeEl * Word.fromInt(Array.length s)) val () = setAddress(m, 0w0, mem) (* Store the values. Make a list of the free fns in case they allocate *) val frees = Array.foldli(fn(i, el, l) => storeEl(mem ++ (sizeEl * Word.fromInt i), el) :: l) [] s; in fn () => (List.app (fn f => f()) frees; free mem) end (* updateML is used after a C function returns. It needs to update each element. *) fun updateML(v, s) = let val addr = getAddress(v, 0w0) in Array.modifyi(fn (i, _) => loadEl(addr ++ (sizeEl * Word.fromInt i))) s end (* updateC can't actually be used because we can't load a suitable value *) and updateC _ = raise Foreign "Cannot return a cArrayPointer from C to ML" in {load=load, store=store, updateML=updateML, updateC=updateC, ctype = cTypePointer} end end (* Calls with conversion. *) (* Note: it may be possible to have general functions to compute offsets but we don't do that because this way the compiler can compute the offsets as constants during inline expansion. *) local open LibFFI Memory LowLevel in fun buildCall0withAbi(abi: abi, fnAddr, (), {ctype = resType, load= resLoad, ...} : 'a conversion): unit->'a = let val callF = callwithAbi abi [] resType fnAddr in fn () => let val rMem = malloc(#size resType) in let val () = callF([], rMem) val result = resLoad rMem in free rMem; result end handle exn => (free rMem; raise exn) end end fun buildCall0(symbol, argTypes, resType) = buildCall0withAbi (abiDefault, symbol, argTypes, resType) fun buildCall1withAbi (abi: abi, fnAddr, { ctype = argType, store = argStore, updateML = argUpdate, ...}: 'a conversion, { ctype = resType, load= resLoad, ...}: 'b conversion): 'a ->'b = let val callF = callwithAbi abi [argType] resType fnAddr (* Allocate space for argument(s) and result. We can't use cStruct here because we only store the argument before the call and load the result after. *) val argOffset = alignUp(#size resType, #align argType) val argSpace = argOffset + #size argType in fn x => let val rMem = malloc argSpace val argAddr = rMem ++ argOffset val freea = argStore (argAddr, x) fun freeAll () = (freea(); free rMem) in let val () = callF([argAddr], rMem) val result = resLoad rMem in argUpdate (argAddr, x); freeAll (); result end handle exn => (freeAll (); raise exn) end end fun buildCall1(symbol, argTypes, resType) = buildCall1withAbi (abiDefault, symbol, argTypes, resType) fun buildCall2withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion), { ctype = resType, load= resLoad, ...}: 'c conversion): 'a * 'b -> 'c = let val callF = callwithAbi abi [arg1Type, arg2Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val argSpace = arg2Offset + #size arg2Type in fn (a, b) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) fun freeAll() = (freea(); freeb(); free rMem) in let val () = callF([arg1Addr, arg2Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall2(symbol, argTypes, resType) = buildCall2withAbi (abiDefault, symbol, argTypes, resType) fun buildCall3withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion), { ctype = resType, load= resLoad, ...}: 'd conversion): 'a * 'b *'c -> 'd = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val argSpace = arg3Offset + #size arg3Type in fn (a, b, c) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) fun freeAll() = (freea(); freeb(); freec(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall3(symbol, argTypes, resType) = buildCall3withAbi (abiDefault, symbol, argTypes, resType) fun buildCall4withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion), { ctype = resType, load= resLoad, ...}: 'e conversion): 'a * 'b *'c * 'd -> 'e = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val argSpace = arg4Offset + #size arg4Type in fn (a, b, c, d) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) fun freeAll() = (freea(); freeb(); freec(); freed(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall4(symbol, argTypes, resType) = buildCall4withAbi (abiDefault, symbol, argTypes, resType) fun buildCall5withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion), { ctype = resType, load= resLoad, ...}: 'f conversion): 'a * 'b *'c * 'd * 'e -> 'f = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val argSpace = arg5Offset + #size arg5Type in fn (a, b, c, d, e) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall5(symbol, argTypes, resType) = buildCall5withAbi (abiDefault, symbol, argTypes, resType) fun buildCall6withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion), { ctype = resType, load= resLoad, ...}: 'g conversion): 'a * 'b *'c * 'd * 'e * 'f -> 'g = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val argSpace = arg6Offset + #size arg6Type in fn (a, b, c, d, e, f) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr , arg6Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall6(symbol, argTypes, resType) = buildCall6withAbi (abiDefault, symbol, argTypes, resType) fun buildCall7withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion), { ctype = resType, load= resLoad, ...}: 'h conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g -> 'h = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val argSpace = arg7Offset + #size arg7Type in fn (a, b, c, d, e, f, g) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall7(symbol, argTypes, resType) = buildCall7withAbi (abiDefault, symbol, argTypes, resType) fun buildCall8withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion), { ctype = resType, load= resLoad, ...}: 'i conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h -> 'i = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val argSpace = arg8Offset + #size arg8Type in fn (a, b, c, d, e, f, g, h) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall8(symbol, argTypes, resType) = buildCall8withAbi (abiDefault, symbol, argTypes, resType) fun buildCall9withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion), { ctype = resType, load= resLoad, ...}: 'j conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val argSpace = arg9Offset + #size arg9Type in fn (a, b, c, d, e, f, g, h, i) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall9(symbol, argTypes, resType) = buildCall9withAbi (abiDefault, symbol, argTypes, resType) fun buildCall10withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion, { ctype = arg10Type, store = arg10Store, updateML = arg10Update, ...}: 'j conversion), { ctype = resType, load= resLoad, ...}: 'k conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type, arg10Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val arg10Offset = alignUp(arg9Offset + #size arg9Type, #align arg10Type) val argSpace = arg10Offset + #size arg10Type in fn (a, b, c, d, e, f, g, h, i, j) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val arg10Addr = rMem ++ arg10Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) val freej = arg10Store (arg10Addr, j) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr, arg10Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); arg10Update (arg10Addr, j); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall10(symbol, argTypes, resType) = buildCall10withAbi (abiDefault, symbol, argTypes, resType) fun buildCall11withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion, { ctype = arg10Type, store = arg10Store, updateML = arg10Update, ...}: 'j conversion, { ctype = arg11Type, store = arg11Store, updateML = arg11Update, ...}: 'k conversion), { ctype = resType, load= resLoad, ...}: 'l conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type, arg10Type, arg11Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val arg10Offset = alignUp(arg9Offset + #size arg9Type, #align arg10Type) val arg11Offset = alignUp(arg10Offset + #size arg10Type, #align arg11Type) val argSpace = arg11Offset + #size arg11Type in fn (a, b, c, d, e, f, g, h, i, j, k) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val arg10Addr = rMem ++ arg10Offset val arg11Addr = rMem ++ arg11Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) val freej = arg10Store (arg10Addr, j) val freek = arg11Store (arg11Addr, k) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr, arg10Addr, arg11Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); arg10Update (arg10Addr, j); arg11Update (arg11Addr, k); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall11(symbol, argTypes, resType) = buildCall11withAbi (abiDefault, symbol, argTypes, resType) fun buildCall12withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion, { ctype = arg10Type, store = arg10Store, updateML = arg10Update, ...}: 'j conversion, { ctype = arg11Type, store = arg11Store, updateML = arg11Update, ...}: 'k conversion, { ctype = arg12Type, store = arg12Store, updateML = arg12Update, ...}: 'l conversion), { ctype = resType, load= resLoad, ...}: 'm conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type, arg10Type, arg11Type, arg12Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val arg10Offset = alignUp(arg9Offset + #size arg9Type, #align arg10Type) val arg11Offset = alignUp(arg10Offset + #size arg10Type, #align arg11Type) val arg12Offset = alignUp(arg11Offset + #size arg11Type, #align arg12Type) val argSpace = arg12Offset + #size arg12Type in fn (a, b, c, d, e, f, g, h, i, j, k, l) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val arg10Addr = rMem ++ arg10Offset val arg11Addr = rMem ++ arg11Offset val arg12Addr = rMem ++ arg12Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) val freej = arg10Store (arg10Addr, j) val freek = arg11Store (arg11Addr, k) val freel = arg12Store (arg12Addr, l) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr, arg10Addr, arg11Addr, arg12Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); arg10Update (arg10Addr, j); arg11Update (arg11Addr, k); arg12Update (arg12Addr, l); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall12(symbol, argTypes, resType) = buildCall12withAbi (abiDefault, symbol, argTypes, resType) fun buildCall13withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion, { ctype = arg10Type, store = arg10Store, updateML = arg10Update, ...}: 'j conversion, { ctype = arg11Type, store = arg11Store, updateML = arg11Update, ...}: 'k conversion, { ctype = arg12Type, store = arg12Store, updateML = arg12Update, ...}: 'l conversion, { ctype = arg13Type, store = arg13Store, updateML = arg13Update, ...}: 'm conversion), { ctype = resType, load= resLoad, ...}: 'n conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type, arg10Type, arg11Type, arg12Type, arg13Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val arg10Offset = alignUp(arg9Offset + #size arg9Type, #align arg10Type) val arg11Offset = alignUp(arg10Offset + #size arg10Type, #align arg11Type) val arg12Offset = alignUp(arg11Offset + #size arg11Type, #align arg12Type) val arg13Offset = alignUp(arg12Offset + #size arg12Type, #align arg13Type) val argSpace = arg13Offset + #size arg13Type in fn (a, b, c, d, e, f, g, h, i, j, k, l, m) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val arg10Addr = rMem ++ arg10Offset val arg11Addr = rMem ++ arg11Offset val arg12Addr = rMem ++ arg12Offset val arg13Addr = rMem ++ arg13Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) val freej = arg10Store (arg10Addr, j) val freek = arg11Store (arg11Addr, k) val freel = arg12Store (arg12Addr, l) val freem = arg13Store (arg13Addr, m) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr, arg10Addr, arg11Addr, arg12Addr, arg13Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); arg10Update (arg10Addr, j); arg11Update (arg11Addr, k); arg12Update (arg12Addr, l); arg13Update (arg13Addr, m); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall13(symbol, argTypes, resType) = buildCall13withAbi (abiDefault, symbol, argTypes, resType) fun buildCall14withAbi (abi: abi, fnAddr, ({ ctype = arg1Type, store = arg1Store, updateML = arg1Update, ...}: 'a conversion, { ctype = arg2Type, store = arg2Store, updateML = arg2Update, ...}: 'b conversion, { ctype = arg3Type, store = arg3Store, updateML = arg3Update, ...}: 'c conversion, { ctype = arg4Type, store = arg4Store, updateML = arg4Update, ...}: 'd conversion, { ctype = arg5Type, store = arg5Store, updateML = arg5Update, ...}: 'e conversion, { ctype = arg6Type, store = arg6Store, updateML = arg6Update, ...}: 'f conversion, { ctype = arg7Type, store = arg7Store, updateML = arg7Update, ...}: 'g conversion, { ctype = arg8Type, store = arg8Store, updateML = arg8Update, ...}: 'h conversion, { ctype = arg9Type, store = arg9Store, updateML = arg9Update, ...}: 'i conversion, { ctype = arg10Type, store = arg10Store, updateML = arg10Update, ...}: 'j conversion, { ctype = arg11Type, store = arg11Store, updateML = arg11Update, ...}: 'k conversion, { ctype = arg12Type, store = arg12Store, updateML = arg12Update, ...}: 'l conversion, { ctype = arg13Type, store = arg13Store, updateML = arg13Update, ...}: 'm conversion, { ctype = arg14Type, store = arg14Store, updateML = arg14Update, ...}: 'n conversion), { ctype = resType, load= resLoad, ...}: 'o conversion): 'a * 'b *'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o = let val callF = callwithAbi abi [arg1Type, arg2Type, arg3Type, arg4Type, arg5Type, arg6Type, arg7Type, arg8Type, arg9Type, arg10Type, arg11Type, arg12Type, arg13Type, arg14Type] resType fnAddr val arg1Offset = alignUp(#size resType, #align arg1Type) val arg2Offset = alignUp(arg1Offset + #size arg1Type, #align arg2Type) val arg3Offset = alignUp(arg2Offset + #size arg2Type, #align arg3Type) val arg4Offset = alignUp(arg3Offset + #size arg3Type, #align arg4Type) val arg5Offset = alignUp(arg4Offset + #size arg4Type, #align arg5Type) val arg6Offset = alignUp(arg5Offset + #size arg5Type, #align arg6Type) val arg7Offset = alignUp(arg6Offset + #size arg6Type, #align arg7Type) val arg8Offset = alignUp(arg7Offset + #size arg7Type, #align arg8Type) val arg9Offset = alignUp(arg8Offset + #size arg8Type, #align arg9Type) val arg10Offset = alignUp(arg9Offset + #size arg9Type, #align arg10Type) val arg11Offset = alignUp(arg10Offset + #size arg10Type, #align arg11Type) val arg12Offset = alignUp(arg11Offset + #size arg11Type, #align arg12Type) val arg13Offset = alignUp(arg12Offset + #size arg12Type, #align arg13Type) val arg14Offset = alignUp(arg13Offset + #size arg13Type, #align arg14Type) val argSpace = arg14Offset + #size arg14Type in fn (a, b, c, d, e, f, g, h, i, j, k, l, m, n) => let val rMem = malloc argSpace val arg1Addr = rMem ++ arg1Offset val arg2Addr = rMem ++ arg2Offset val arg3Addr = rMem ++ arg3Offset val arg4Addr = rMem ++ arg4Offset val arg5Addr = rMem ++ arg5Offset val arg6Addr = rMem ++ arg6Offset val arg7Addr = rMem ++ arg7Offset val arg8Addr = rMem ++ arg8Offset val arg9Addr = rMem ++ arg9Offset val arg10Addr = rMem ++ arg10Offset val arg11Addr = rMem ++ arg11Offset val arg12Addr = rMem ++ arg12Offset val arg13Addr = rMem ++ arg13Offset val arg14Addr = rMem ++ arg14Offset val freea = arg1Store (arg1Addr, a) val freeb = arg2Store (arg2Addr, b) val freec = arg3Store (arg3Addr, c) val freed = arg4Store (arg4Addr, d) val freee = arg5Store (arg5Addr, e) val freef = arg6Store (arg6Addr, f) val freeg = arg7Store (arg7Addr, g) val freeh = arg8Store (arg8Addr, h) val freei = arg9Store (arg9Addr, i) val freej = arg10Store (arg10Addr, j) val freek = arg11Store (arg11Addr, k) val freel = arg12Store (arg12Addr, l) val freem = arg13Store (arg13Addr, m) val freen = arg14Store (arg14Addr, n) fun freeAll() = (freea(); freeb(); freec(); freed(); freee(); freef(); freeg(); freeh(); freei(); freej(); freek(); freel(); freem(); freen(); free rMem) in let val () = callF([arg1Addr, arg2Addr, arg3Addr, arg4Addr, arg5Addr, arg6Addr, arg7Addr, arg8Addr, arg9Addr, arg10Addr, arg11Addr, arg12Addr, arg13Addr, arg14Addr], rMem) val result = resLoad rMem in arg1Update(arg1Addr, a); arg2Update (arg2Addr, b); arg3Update (arg3Addr, c); arg4Update (arg4Addr, d); arg5Update (arg5Addr, e); arg6Update (arg6Addr, f); arg7Update (arg7Addr, g); arg8Update (arg8Addr, h); arg9Update (arg9Addr, i); arg10Update (arg10Addr, j); arg11Update (arg11Addr, k); arg12Update (arg12Addr, l); arg13Update (arg13Addr, m); arg14Update (arg14Addr, n); freeAll(); result end handle exn => (freeAll(); raise exn) end end fun buildCall14(symbol, argTypes, resType) = buildCall14withAbi (abiDefault, symbol, argTypes, resType) end (* A closure is a memoised address. *) type 'a closure = unit -> Memory.voidStar local open Memory LowLevel fun load _ = raise Foreign "Cannot return a closure" (* "dememoise" the value when we store it. This means that the closure is actually created when the value is first stored and then it is cached. *) and store(v, cl: ('a->'b) closure) = (Memory.setAddress(v, 0w0, cl()); fn () => ()) in val cFunction: ('a->'b) closure conversion = makeConversion { load=load, store=store, ctype = LowLevel.cTypePointer } end local open LibFFI Memory LowLevel in fun buildClosure0withAbi(f: unit-> 'a, abi: abi, (), resConv: 'a conversion): (unit->'a) closure = let fun callback (f: unit -> 'a) (_: voidStar, res: voidStar): unit = ignore(#store resConv (res, f ())) (* Ignore the result of #store resConv. What this means is if the callback returns something, e.g. a string, that requires dynamic allocation there will be a memory leak. *) val makeCallback = cFunctionWithAbi abi [] (#ctype resConv) in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure0(f, argConv, resConv) = buildClosure0withAbi(f, abiDefault, argConv, resConv) fun buildClosure1withAbi (f: 'a -> 'b, abi: abi, argConv: 'a conversion, resConv: 'b conversion) : ('a -> 'b) closure = let fun callback (f: 'a -> 'b) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) val arg1 = #load argConv arg1Addr val result = f arg1 val () = #updateC argConv (arg1Addr, arg1) in ignore(#store resConv (res, result)) end val makeCallback = cFunctionWithAbi abi [#ctype argConv] (#ctype resConv) in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure1(f, argConv, resConv) = buildClosure1withAbi(f, abiDefault, argConv, resConv) fun buildClosure2withAbi (f: 'a * 'b -> 'c, abi: abi, (arg1Conv: 'a conversion, arg2Conv: 'b conversion), resConv: 'c conversion) : ('a * 'b -> 'c) closure = let fun callback (f: 'a *'b -> 'c) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) and arg2Addr = getAddress(args, 0w1) val arg1 = #load arg1Conv arg1Addr and arg2 = #load arg2Conv arg2Addr val result = f (arg1, arg2) val () = #updateC arg1Conv(arg1Addr, arg1) and () = #updateC arg2Conv(arg2Addr, arg2) in ignore(#store resConv (res, result)) end val argTypes = [#ctype arg1Conv, #ctype arg2Conv] and resType = #ctype resConv val makeCallback = cFunctionWithAbi abi argTypes resType in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure2(f, argConv, resConv) = buildClosure2withAbi(f, abiDefault, argConv, resConv) fun buildClosure3withAbi (f, abi, (arg1Conv: 'a conversion, arg2Conv: 'b conversion, arg3Conv: 'c conversion), resConv: 'd conversion) = let fun callback (f: 'a *'b * 'c -> 'd) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) and arg2Addr = getAddress(args, 0w1) and arg3Addr = getAddress(args, 0w2) val arg1 = #load arg1Conv arg1Addr and arg2 = #load arg2Conv arg2Addr and arg3 = #load arg3Conv arg3Addr val result = f (arg1, arg2, arg3) val () = #updateC arg1Conv(arg1Addr, arg1) and () = #updateC arg2Conv(arg2Addr, arg2) and () = #updateC arg3Conv(arg3Addr, arg3) in ignore(#store resConv (res, result)) end val argTypes = [#ctype arg1Conv, #ctype arg2Conv, #ctype arg3Conv] and resType = #ctype resConv val makeCallback = cFunctionWithAbi abi argTypes resType in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure3(f, argConv, resConv) = buildClosure3withAbi(f, abiDefault, argConv, resConv) fun buildClosure4withAbi (f, abi, (arg1Conv: 'a conversion, arg2Conv: 'b conversion, arg3Conv: 'c conversion, arg4Conv: 'd conversion), resConv: 'e conversion) = let fun callback (f: 'a *'b * 'c * 'd -> 'e) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) and arg2Addr = getAddress(args, 0w1) and arg3Addr = getAddress(args, 0w2) and arg4Addr = getAddress(args, 0w3) val arg1 = #load arg1Conv arg1Addr and arg2 = #load arg2Conv arg2Addr and arg3 = #load arg3Conv arg3Addr and arg4 = #load arg4Conv arg4Addr val result = f (arg1, arg2, arg3, arg4) val () = #updateC arg1Conv(arg1Addr, arg1) and () = #updateC arg2Conv(arg2Addr, arg2) and () = #updateC arg3Conv(arg3Addr, arg3) and () = #updateC arg4Conv(arg4Addr, arg4) in ignore(#store resConv (res, result)) end val argTypes = [#ctype arg1Conv, #ctype arg2Conv, #ctype arg3Conv, #ctype arg4Conv] and resType = #ctype resConv val makeCallback = cFunctionWithAbi abi argTypes resType in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure4(f, argConv, resConv) = buildClosure4withAbi(f, abiDefault, argConv, resConv) fun buildClosure5withAbi (f, abi, (arg1Conv: 'a conversion, arg2Conv: 'b conversion, arg3Conv: 'c conversion, arg4Conv: 'd conversion, arg5Conv: 'e conversion), resConv: 'f conversion) = let fun callback (f: 'a *'b * 'c * 'd * 'e -> 'f) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) and arg2Addr = getAddress(args, 0w1) and arg3Addr = getAddress(args, 0w2) and arg4Addr = getAddress(args, 0w3) and arg5Addr = getAddress(args, 0w4) val arg1 = #load arg1Conv arg1Addr and arg2 = #load arg2Conv arg2Addr and arg3 = #load arg3Conv arg3Addr and arg4 = #load arg4Conv arg4Addr and arg5 = #load arg5Conv arg5Addr val result = f (arg1, arg2, arg3, arg4, arg5) val () = #updateC arg1Conv(arg1Addr, arg1) and () = #updateC arg2Conv(arg2Addr, arg2) and () = #updateC arg3Conv(arg3Addr, arg3) and () = #updateC arg4Conv(arg4Addr, arg4) and () = #updateC arg5Conv(arg5Addr, arg5) in ignore(#store resConv (res, result)) end val argTypes = [#ctype arg1Conv, #ctype arg2Conv, #ctype arg3Conv, #ctype arg4Conv, #ctype arg5Conv] and resType = #ctype resConv val makeCallback = cFunctionWithAbi abi argTypes resType in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure5(f, argConv, resConv) = buildClosure5withAbi(f, abiDefault, argConv, resConv) fun buildClosure6withAbi (f, abi, (arg1Conv: 'a conversion, arg2Conv: 'b conversion, arg3Conv: 'c conversion, arg4Conv: 'd conversion, arg5Conv: 'e conversion, arg6Conv: 'f conversion), resConv: 'g conversion) = let fun callback (f: 'a *'b * 'c * 'd * 'e * 'f -> 'g) (args: voidStar, res: voidStar): unit = let val arg1Addr = getAddress(args, 0w0) and arg2Addr = getAddress(args, 0w1) and arg3Addr = getAddress(args, 0w2) and arg4Addr = getAddress(args, 0w3) and arg5Addr = getAddress(args, 0w4) and arg6Addr = getAddress(args, 0w5) val arg1 = #load arg1Conv arg1Addr and arg2 = #load arg2Conv arg2Addr and arg3 = #load arg3Conv arg3Addr and arg4 = #load arg4Conv arg4Addr and arg5 = #load arg5Conv arg5Addr and arg6 = #load arg6Conv arg6Addr val result = f (arg1, arg2, arg3, arg4, arg5, arg6) val () = #updateC arg1Conv(arg1Addr, arg1) and () = #updateC arg2Conv(arg2Addr, arg2) and () = #updateC arg3Conv(arg3Addr, arg3) and () = #updateC arg4Conv(arg4Addr, arg4) and () = #updateC arg5Conv(arg5Addr, arg5) and () = #updateC arg6Conv(arg6Addr, arg6) in ignore(#store resConv (res, result)) end val argTypes = [#ctype arg1Conv, #ctype arg2Conv, #ctype arg3Conv, #ctype arg4Conv, #ctype arg5Conv, #ctype arg6Conv] and resType = #ctype resConv val makeCallback = cFunctionWithAbi abi argTypes resType in Memory.memoise (fn () => makeCallback(callback f)) () end fun buildClosure6(f, argConv, resConv) = buildClosure6withAbi(f, abiDefault, argConv, resConv) end end; polyml-5.7.1/basis/Signal.sml0000644000175000017500000000653613204034553015044 0ustar daviddavid(* Title: Signal structure and signature. Author: David Matthews Copyright David Matthews 2000, 2008 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature SIGNAL = sig datatype sig_handle = SIG_DFL | SIG_IGN | SIG_HANDLE of int->unit val signal: int * sig_handle -> sig_handle end; structure Signal: SIGNAL = struct datatype sig_handle = SIG_DFL | SIG_IGN | SIG_HANDLE of int->unit local val setHandler = RunCall.rtsCallFull2 "PolySetSignalHandler" in fun signal(s, cmd) = let val c = case cmd of SIG_DFL => 0 | SIG_IGN => 1 | SIG_HANDLE f => RunCall.unsafeCast f in case setHandler(s, c) of 0 => SIG_DFL | 1 => SIG_IGN | f => SIG_HANDLE(RunCall.unsafeCast f) end end local datatype sigHandle = SigHandle of (int->unit) * int | WeakMarker val waitForSig = RunCall.rtsCallFull0 "PolyWaitForSignal" open Thread fun sigThread(): unit = let (* This call to the RTS returns either a pair of a signal and a handler or a flag indicating that some wek reference has been set to NONE. These aren't logically related but it's convenient to use a single thread for both. *) val nextSig: sigHandle = waitForSig() (* When we get a WeakMarker message we need to broadcast on this condition variable. *) fun broadCastWeak haveLock () = ( if haveLock then () else Mutex.lock Weak.weakLock; ConditionVar.broadcast Weak.weakSignal; Mutex.unlock Weak.weakLock ) in case nextSig of SigHandle (handler, signal) => (handler signal handle _ => ()) | WeakMarker => (* If the lock is free we can do the broadcast now but to avoid waiting and being unable to handle any signals we fork off a thread if we can't. *) if Mutex.trylock Weak.weakLock then broadCastWeak true () else (Thread.fork(broadCastWeak false, []); ()); sigThread() (* Forever. *) end fun forkThread() = (Thread.fork(sigThread, []); ()) handle Thread _ => print "Unable to create signal thread\n" in (* Run this thread now and also start one each time we start up. *) val _ = forkThread() val _ = PolyML.onEntry forkThread end end; polyml-5.7.1/basis/Array2.sml0000644000175000017500000002446613204034553014771 0ustar daviddavid(* Title: Standard Basis Library: Array2 structure. Author: David Matthews Copyright David Matthews 2000, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Array2 : ARRAY2 = struct (* There are lots of possible implementations with advantages and disadvantages according to the requirements. I'm choosing a very simple implementation in terms of arrays of arrays. *) (* This is implemented as a vector of rows i.e. Vector.sub(v, 0) returns the first row, Vector.sub(v, 1) the second. *) (* It's a bit messy though. In order for this to be an eqtype for any 'a it needs to be treated specially by the compiler so we have to inherit a type that has been created specially for the purpose. *) type 'a array = 'a Bootstrap.array type 'a implementation = 'a Array.array Vector.vector fun toArray(impl: 'a implementation): 'a array = RunCall.unsafeCast impl fun fromArray(a: 'a array): 'a implementation = RunCall.unsafeCast a type 'a region = { base : 'a array, row : int, col : int, nrows : int option, ncols : int option } datatype traversal = RowMajor | ColMajor fun array(r, c, init) = toArray(Vector.tabulate(r, fn _ => Array.array(c, init))) fun fromList l = let (* Check that all the lists have the same length. *) fun checkLen(l, NONE) = SOME(List.length l) | checkLen(l, SOME i) = if List.length l <> i then raise Size else SOME i val _ = List.foldl checkLen NONE l in (* Build the arrays. *) toArray(Vector.fromList(List.map (fn ll => Array.fromList ll) l)) end fun tabulate RowMajor (r, c, f) = toArray(Vector.tabulate(r, fn r' => Array.tabulate(c, fn c' => f(r', c')))) | tabulate ColMajor (r, c, f) = let (* First tabulate into column-major vectors. *) val vecs = Vector.tabulate(c, fn c' => Vector.tabulate(r, fn r' => f(r', c'))) in (* Convert this to row-major arrays. *) tabulate RowMajor (r, c, fn (r', c') => Vector.sub(Vector.sub(vecs, c'), r')) end (* Internal functions: These are used where we have already checked that the indexes are in range. Actually, at the moment these repeat the checking anyway. *) fun uncheckedSub(a, i, j) = Array.sub(Vector.sub(fromArray a, i), j) and uncheckedUpdate(arr, i, j, a) = Array.update(Vector.sub(fromArray arr, i), j, a) fun sub(a, i, j) = Array.sub(Vector.sub(fromArray a, i), j) fun update (arr, i, j, a) = Array.update(Vector.sub(fromArray arr, i), j, a) fun nRows a = Vector.length(fromArray a) (* This next is wrong in the case where nRows = 0. It'll do for the moment. *) fun nCols a = Array.length(Vector.sub(fromArray a, 0)) fun dimensions a = (nRows a, nCols a) fun row(a, i) = Array.vector(Vector.sub(fromArray a, i)) fun column(a, j) = Vector.tabulate(nRows a, fn i => sub(a, i, j)) (* Internal function. Check that the region is valid and get the actual lengths. *) fun getRegion {base, row, col, nrows, ncols} = let val (lRows, lCols) = dimensions base val nrows' = case nrows of NONE => if row < 0 orelse row > lRows then raise Subscript else lRows - row | SOME r => if r < 0 orelse row < 0 orelse r+row > lRows then raise Subscript else r val ncols' = case ncols of NONE => if col < 0 orelse col > lCols then raise Subscript else lCols - col | SOME c => if c < 0 orelse col < 0 orelse c+col > lCols then raise Subscript else c in (nrows', ncols') end fun copy {src as {base, row, col, ...}, dst, dst_row, dst_col} = let (* Check the region and get the lengths. *) val (nrows, ncols) = getRegion src val (dRows, dCols) = dimensions dst fun copyIncrementing(r, c) = if r = nrows then () else if c = ncols then copyIncrementing(r+1, 0) else ( uncheckedUpdate(dst, dst_row+r, dst_col+c, uncheckedSub(base, row+r, col+c)); copyIncrementing(r, c+1) ) fun copyDecrementing(r, c) = if r < 0 then () else if c < 0 then copyDecrementing(r-1, ncols-1) else ( uncheckedUpdate(dst, dst_row+r, dst_col+c, uncheckedSub(base, row+r, col+c)); copyDecrementing(r, c-1) ) in (* Check the destination *) if dst_row < 0 orelse dst_col < 0 orelse dst_row+nrows > dRows orelse dst_col+ncols > dCols then raise Subscript else (* We have to be careful if dst = src and the regions overlap. Rather than treat the overlapped case specially we simply choose incrementing or decrementing copies depending on the indexes. *) if dst_row < row orelse (dst_row = row andalso dst_col < col) then copyIncrementing(0, 0) else copyDecrementing(nrows-1, ncols-1) end fun appi tr f (reg as {base, row, col, ...}) = let val (nrows, ncols) = getRegion reg fun appRowMajor (r, c) = if r = nrows then () else if c = ncols then appRowMajor(r+1, 0) else ( f(r+row, c+col, uncheckedSub(base, r+row, c+col)); appRowMajor(r, c+1) ) fun appColMajor (r, c) = if c = ncols then () else if r = nrows then appColMajor(0, c+1) else ( f(r+row, c+col, uncheckedSub(base, r+row, c+col)); appColMajor(r+1, c) ) in case tr of RowMajor => appRowMajor(0, 0) | ColMajor => appColMajor(0, 0) end fun app tr f arr = appi tr (f o #3) {base=arr, row=0, col=0, nrows=NONE, ncols=NONE} (* Just define modify in terms of app. *) fun modifyi tr f (reg as {base, ...}) = appi tr (fn(i, j, a) => uncheckedUpdate(base, i, j, f(i, j, a))) reg fun modify tr f arr = modifyi tr (f o #3) {base=arr, row=0, col=0, nrows=NONE, ncols=NONE} (* Fold is fairly similar to app. *) fun foldi tr f init (reg as {base, row, col, ...}) = let val (nrows, ncols) = getRegion reg fun foldRowMajor (r, c, i) = if r = nrows then i else if c = ncols then foldRowMajor(r+1, 0, i) else foldRowMajor(r, c+1, f(r+row, c+col, uncheckedSub(base, r+row, c+col), i)) fun foldColMajor (r, c, i) = if c = ncols then i else if r = nrows then foldColMajor(0, c+1, i) else foldColMajor(r+1, c, f(r+row, c+col, uncheckedSub(base, r+row, c+col), i)) in case tr of RowMajor => foldRowMajor(0, 0, init) | ColMajor => foldColMajor(0, 0, init) end fun fold tr f init arr = foldi tr (fn (_,_,a,b) => f (a,b)) init {base=arr, row=0, col=0, nrows=NONE, ncols=NONE} local (* Install the pretty printer for arrays *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun 'a pretty(depth: FixedInt.int) (printElem: 'a * FixedInt.int -> PolyML.pretty) (x: 'a array): PolyML.pretty = let open PolyML val (nrows, ncols) = dimensions x fun put_elem (w, index, l, d) = if d = 0 then PrettyString "..." :: l else if d < 0 then l else printElem (w, d-1) :: (if index <> ncols-1 then PrettyString "," :: PrettyBreak(1, 0) :: l else l) fun putRowElements (row, col, tail, depth) = if col < 0 then tail else putRowElements(row, col-1, put_elem(sub(x, row, col), col, tail, depth), depth+1) (* TODO: This formats everything as a single block. We really want each row to be formatted as a block with consistent breaks. *) fun putRow(r, d, l) = if r < 0 then l else if d < 0 then putRow(r-1, d+1, l) else if d = 0 then putRow(r-1, d+1, PrettyString "..." :: l) else let val rowTail = if r <> nrows-1 then PrettyString "," :: PrettyBreak(1, 0) :: l else l val rowPrint = PrettyString "[" :: putRowElements(r, ncols-1, PrettyString "]" :: rowTail, d - FixedInt.fromInt ncols + 1) in putRow(r-1, d+1, rowPrint) end in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else putRow(nrows-1, depth - FixedInt.fromInt nrows + 1, [PrettyString "]"]) )) end in val () = PolyML.addPrettyPrinter pretty end end; polyml-5.7.1/basis/VectorSliceSignature.sml0000644000175000017500000000410113204034553017715 0ustar daviddavid(* Title: Standard Basis Library: Vector Slice Signature Author: David Matthews Copyright David Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This uses the 'a vector type defined at the top level. *) signature VECTOR_SLICE = sig type 'a slice val length : 'a slice -> int val sub : ('a slice * int) -> 'a val full: 'a vector -> 'a slice val slice: 'a vector * int * int option -> 'a slice val subslice: 'a slice * int * int option -> 'a slice val base: 'a slice -> 'a vector * int * int val vector: 'a slice -> 'a vector val concat : 'a slice list -> 'a vector val isEmpty: 'a slice -> bool val getItem: 'a slice -> ('a * 'a slice) option val appi : ((int * 'a) -> unit) -> 'a slice -> unit val app : ('a -> unit) -> 'a slice -> unit val mapi : ((int * 'a) -> 'b) -> 'a slice -> 'b vector val map : ('a -> 'b) -> 'a slice -> 'b vector val foldli : ((int * 'a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldri : ((int * 'a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldl : (('a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val findi: (int * 'a -> bool) -> 'a slice -> (int * 'a) option val find: ('a -> bool) -> 'a slice -> 'a option val exists: ('a -> bool) -> 'a slice -> bool val all: ('a -> bool) -> 'a slice -> bool val collate: ('a * 'a -> order) -> 'a slice * 'a slice -> order end; polyml-5.7.1/basis/BinPrimIO.sml0000644000175000017500000000324013204034553015404 0ustar daviddavid(* Title: Standard Basis Library: Primitive Binary IO Copyright David C.J. Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: Minor changes. I've included sharing constraints on the slice types which aren't in the book. *) structure BinPrimIO :> PRIM_IO where type vector = Word8Vector.vector where type elem = Word8.word where type array = Word8Array.array where type pos = Position.int where type vector_slice = Word8VectorSlice.slice where type array_slice = Word8ArraySlice.slice = PrimIO ( structure Array : MONO_ARRAY = Word8Array structure Vector : MONO_VECTOR = Word8Vector structure VectorSlice = Word8VectorSlice structure ArraySlice = Word8ArraySlice val someElem : Vector.elem = 0wx20 (* Initialise to spaces. *) (* BinPrimIO.pos is defined to be Position.int *) type pos = Position.int val compare = Position.compare ); polyml-5.7.1/basis/DateSignature.sml0000644000175000017500000000406613204034553016362 0ustar daviddavid(* Title: Standard Basis Library: Date Signature Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature DATE = sig datatype weekday = Mon | Tue | Wed | Thu | Fri | Sat | Sun datatype month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec type date exception Date val date : { year : int, month : month, day : int, hour : int, minute : int, second : int, offset : Time.time option } -> date val year : date -> int val month : date -> month val day : date -> int val hour : date -> int val minute : date -> int val second : date -> int val weekDay : date -> weekday val yearDay : date -> int val offset : date -> Time.time option val isDst : date -> bool option val localOffset : unit -> Time.time val fromTimeLocal : Time.time -> date val fromTimeUniv : Time.time -> date val toTime : date -> Time.time val toString : date -> string val fmt : string -> date -> string val fromString : string -> date option val scan : (char, 'a) StringCvt.reader -> 'a -> (date * 'a) option val compare : date * date -> General.order end; polyml-5.7.1/basis/GenericSock.sml0000644000175000017500000000413713204034553016016 0ustar daviddavid(* Title: Standard Basis Library: Generic socket structure and signature. Author: David Matthews Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature GENERIC_SOCK = sig val socket : Socket.AF.addr_family * Socket.SOCK.sock_type -> ('af, 'sock_type) Socket.sock val socketPair : Socket.AF.addr_family * Socket.SOCK.sock_type -> ('af, 'sock_type) Socket.sock * ('af, 'sock_type) Socket.sock val socket' : Socket.AF.addr_family * Socket.SOCK.sock_type * int -> ('af, 'sock_type) Socket.sock val socketPair' : Socket.AF.addr_family * Socket.SOCK.sock_type * int -> ('af, 'sock_type) Socket.sock * ('af, 'sock_type) Socket.sock end; structure GenericSock : GENERIC_SOCK = struct local val doCall = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun socket' (af, st, p: int) = RunCall.unsafeCast(doCall(14, (af, st, p))) end local val doCall = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun socketPair' (af, st, p: int) = RunCall.unsafeCast(doCall(55, (af, st, p))) end (* We assume that the default protocol is always zero. *) fun socket(af, st) = socket'(af, st, 0) fun socketPair(af, st) = socketPair'(af, st, 0) end; polyml-5.7.1/basis/ArraySliceSignature.sml0000644000175000017500000000443113204034553017537 0ustar daviddavid(* Title: Standard Basis Library: Array Slice Signature Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This uses the 'a array and 'a vector types defined at the top level. It also uses the VectorSlice structure. *) signature ARRAY_SLICE = sig type 'a slice val length : 'a slice -> int val sub : 'a slice * int -> 'a val update : 'a slice * int * 'a -> unit val full: 'a array -> 'a slice val slice: 'a array * int * int option -> 'a slice val subslice: 'a slice * int * int option -> 'a slice val base: 'a slice -> 'a array * int * int val vector: 'a slice -> 'a vector val copy : {src : 'a slice, dst : 'a array, di : int} -> unit val copyVec : {src : 'a VectorSlice.slice, dst : 'a array, di : int} -> unit val isEmpty: 'a slice -> bool val getItem: 'a slice -> ('a * 'a slice) option val appi : (int * 'a -> unit) -> 'a slice -> unit val app : ('a -> unit) -> 'a slice -> unit val modifyi : (int * 'a -> 'a) -> 'a slice -> unit val modify : ('a -> 'a) -> 'a slice -> unit val foldli : ((int * 'a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldri : ((int * 'a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldl : (('a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a slice -> 'b val findi: (int * 'a -> bool) -> 'a slice -> (int * 'a) option val find: ('a -> bool) -> 'a slice -> 'a option val exists: ('a -> bool) -> 'a slice -> bool val all: ('a -> bool) -> 'a slice -> bool val collate: ('a * 'a -> order) -> 'a slice * 'a slice -> order end; polyml-5.7.1/basis/PackRealBig.sml0000644000175000017500000001634313204034553015730 0ustar daviddavid(* Title: Standard Basis Library: Pack Real structures and signatures Author: David Matthews Copyright David Matthews 2000, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature PACK_REAL = sig type real val bytesPerElem : int val isBigEndian : bool val toBytes : real -> Word8Vector.vector val fromBytes : Word8Vector.vector -> real val subVec : Word8Vector.vector * int -> real val subArr : Word8Array.array * int -> real val update : Word8Array.array * int * real -> unit end; local open LibrarySupport open LibrarySupport.Word8Array local val realSizeCall: unit -> word = RunCall.rtsCallFast1 "PolyRealSize" in val realSize: word = realSizeCall () end local val System_move_bytes: address*address*word*word*word->unit = RunCall.moveBytes (* Move bytes, reversing the order. *) fun swapOrder(src: address, srcOff: word, dest: address, destOff: word, length: word) = if length = 0w0 then () else ( RunCall.storeByte(dest, destOff+length-0w1, RunCall.loadByte(src, srcOff)); swapOrder(src, srcOff+0w1, dest, destOff, length-0w1) ) in fun doMove(src: address, srcOff: word, dest: address, destOff: word, wantBigEndian: bool) = if wantBigEndian = bigEndian (* Host byte order = required byte order *) then System_move_bytes(src, dest, srcOff, destOff, realSize) else (* Host byte order is reverse of required byte order. *) swapOrder(src, srcOff, dest, destOff, realSize) end in structure PackRealBig: PACK_REAL = struct type real = real val bytesPerElem: int = Word.toInt realSize val isBigEndian = true (* Note: this seems unnecessary. *) fun toBytes r = let val v = allocString realSize (* r is actually represented by a pointer to a vector. *) val addr: address = RunCall.unsafeCast r in doMove(addr, 0w0, stringAsAddress v, wordSize, isBigEndian); RunCall.clearMutableBit v; w8vectorFromString v end fun fromBytes v = (* Raises an exception if the vector is too small and takes the first few elements if it's larger. *) if Word8Vector.length v < bytesPerElem then raise Subscript else let val r = allocBytes realSize in doMove(w8vectorAsAddress v, wordSize, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end fun subVec(v, i) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= Word.fromInt(Word8Vector.length v) then raise Subscript (* This IS defined. *) else let val r = allocBytes realSize in doMove(w8vectorAsAddress v, wordSize + iW, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end end fun subArr(Array(l, v), i) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= l then raise Subscript (* This IS defined. *) else let val r = allocBytes realSize in doMove(v, iW, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end end fun update(Array(l, v), i, r) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= l then raise Subscript (* This IS defined. *) else let (* r is actually represented by a pointer to a vector. *) val addr: address = RunCall.unsafeCast r in doMove(addr, 0w0, v, iW, isBigEndian) end end end; structure PackRealLittle: PACK_REAL = struct type real = real val bytesPerElem: int = Word.toInt realSize val isBigEndian = false fun toBytes r = let val v = allocString realSize (* r is actually represented by a pointer to a vector. *) val addr: address = RunCall.unsafeCast r in doMove(addr, 0w0, stringAsAddress v, wordSize, isBigEndian); RunCall.clearMutableBit v; w8vectorFromString v end fun fromBytes v = (* Raises an exception if the vector is too small and takes the first few elements if it's larger. *) if Word8Vector.length v < bytesPerElem then raise Subscript else let val r = allocBytes realSize in doMove(w8vectorAsAddress v, wordSize, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end fun subVec(v, i) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= Word.fromInt(Word8Vector.length v) then raise Subscript (* This IS defined. *) else let val r = allocBytes realSize in doMove(w8vectorAsAddress v, wordSize+iW, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end end fun subArr(Array(l, v), i) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= l then raise Subscript (* This IS defined. *) else let val r = allocBytes realSize in doMove(v, iW, r, 0w0, isBigEndian); RunCall.clearMutableBit r; (RunCall.unsafeCast r): real end end fun update(Array(l, v), i, r) = let val iW = unsignedShortOrRaiseSubscript i * realSize in if iW >= l then raise Subscript (* This IS defined. *) else let (* r is actually represented by a pointer to a vector. *) val addr: address = RunCall.unsafeCast r in doMove(addr, 0w0, v, iW, isBigEndian) end end end; end; polyml-5.7.1/basis/IO.sml0000644000175000017500000000302613204034553014125 0ustar daviddavid(* Title: Standard Basis Library: IO Structure and Signature Author: David Matthews Copyright David Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: done. Removed TerminatedStream exception. *) signature IO = sig exception Io of {name : string, function : string, cause : exn} exception BlockingNotSupported exception NonblockingNotSupported exception RandomAccessNotSupported exception ClosedStream datatype buffer_mode = NO_BUF | LINE_BUF | BLOCK_BUF end; structure IO: IO = struct exception Io of {name : string, function : string, cause : exn} exception BlockingNotSupported exception NonblockingNotSupported exception RandomAccessNotSupported exception ClosedStream datatype buffer_mode = NO_BUF | LINE_BUF | BLOCK_BUF end; polyml-5.7.1/basis/PRIM_IO.sml0000644000175000017500000000521613204034553014757 0ustar daviddavid(* Title: Standard Basis Library: Primitive IO Signature Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 done. *) signature PRIM_IO = sig type elem type vector type vector_slice type array type array_slice eqtype pos val compare : pos * pos -> General.order datatype reader = RD of { name : string, chunkSize : int, readVec : (int -> vector) Option.option, readArr : (array_slice -> int) Option.option, readVecNB : (int -> vector Option.option) Option.option, readArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) Option.option, canInput : (unit -> bool) Option.option, avail : unit -> int Option.option, getPos : (unit -> pos) Option.option, setPos : (pos -> unit) Option.option, endPos : (unit -> pos) Option.option, verifyPos : (unit -> pos) Option.option, close : unit -> unit, ioDesc : OS.IO.iodesc Option.option } datatype writer = WR of { name : string, chunkSize : int, writeVec : (vector_slice -> int) Option.option, writeArr : (array_slice -> int) Option.option, writeVecNB : (vector_slice -> int Option.option) Option.option, writeArrNB : (array_slice -> int Option.option) Option.option, block : (unit -> unit) Option.option, canOutput : (unit -> bool) Option.option, getPos : (unit -> pos) Option.option, setPos : (pos -> unit) Option.option, endPos : (unit -> pos) Option.option, verifyPos : (unit -> pos) Option.option, close : unit -> unit, ioDesc : OS.IO.iodesc Option.option } val openVector: vector -> reader val nullRd: unit -> reader val nullWr: unit -> writer val augmentReader : reader -> reader val augmentWriter : writer -> writer end; polyml-5.7.1/basis/NetProtDB.sml0000644000175000017500000000344413204034553015423 0ustar daviddavid(* Title: Standard Basis Library: NetProtDB Structures and Signatures Author: David Matthews Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature NET_PROT_DB = sig type entry val name : entry -> string val aliases : entry -> string list val protocol : entry -> int val getByName : string -> entry option val getByNumber : int -> entry option end; structure NetProtDB :> NET_PROT_DB = struct type entry = string * string list * int (* The RTS calls return either zero or the address of the entry. *) datatype result = AResult of entry | NoResult val name: entry -> string = #1 val aliases : entry -> string list = #2 val protocol : entry -> int = #3 local val doCall: string -> result = RunCall.rtsCallFull1 "PolyNetworkGetProtByName" in fun getByName s = case doCall s of AResult r => SOME r | NoResult => NONE end local val doCall: int -> result = RunCall.rtsCallFull1 "PolyNetworkGetProtByNo" in fun getByNumber n = case doCall n of AResult r => SOME r | NoResult => NONE end end; polyml-5.7.1/basis/VectorSignature.sml0000644000175000017500000000360613204034553016746 0ustar daviddavid(* Title: Standard Basis Library: Vector Signature Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature VECTOR = sig eqtype 'a vector val maxLen : int val fromList : 'a list -> 'a vector val tabulate : (int * (int -> 'a)) -> 'a vector val length : 'a vector -> int val sub : ('a vector * int) -> 'a val update: 'a vector * int * 'a -> 'a vector val concat : 'a vector list -> 'a vector val mapi : ((int * 'a) -> 'b) -> 'a vector -> 'b vector val map : ('a -> 'b) -> 'a vector -> 'b vector val appi : ((int * 'a) -> unit) -> 'a vector -> unit val app : ('a -> unit) -> 'a vector -> unit val foldli : ((int * 'a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldri : ((int * 'a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldl : (('a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a vector -> 'b val findi: (int * 'a -> bool) -> 'a vector -> (int * 'a) option val find: ('a -> bool) -> 'a vector -> 'a option val exists: ('a -> bool) -> 'a vector -> bool val all: ('a -> bool) -> 'a vector -> bool val collate: ('a * 'a -> order) -> 'a vector * 'a vector -> order end; polyml-5.7.1/basis/IntAsLargeInt.sml0000644000175000017500000000152713204034553016266 0ustar daviddavid(* Title: Standard Basis Library: Int structure Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Set Int to be LargeInt. *) structure Int: INTEGER = LargeInt; polyml-5.7.1/basis/FinalPolyML.sml0000644000175000017500000031675713204034553015766 0ustar daviddavid(* Title: Nearly final version of the PolyML structure Author: David Matthews Copyright David Matthews 2008-9, 2014, 2015-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Based on: Title: Poly Make Program. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) (* This is the version of the PolyML structure that can be compiled after we have the rest of the basis library. In particular it binds in TextIO.stdIn and TextIO.stdOut. This contains the top-level read-eval-print loop as well as "use" and Poly/ML's "make". The rootFunction has now been pulled out into a separate file and is added on after this. *) local (* A hash table with a mutex that protects against multiple threads rehashing the table by entering values at the same time. *) structure ProtectedTable :> sig type 'a ptable val create: unit -> 'a ptable val lookup: 'a ptable -> string -> 'a option val enter: 'a ptable -> string * 'a -> unit val all: 'a ptable -> unit -> (string * 'a) list val delete: 'a ptable -> string -> unit end = struct open HashArray Thread.Mutex LibraryIOSupport type 'a ptable = 'a hash * mutex fun create () = (hash 10, mutex()) and lookup(tab, mutx) = protect mutx (fn s => sub(tab, s)) and enter(tab, mutx) = protect mutx (fn (s, v) => update(tab, s, v)) and all(tab, mutx) = protect mutx (fn () => fold (fn (s, v, l) => ((s, v) :: l)) [] tab) and delete(tab, mutx) = protect mutx (fn s => HashArray.delete (tab, s)) end fun quickSort _ ([]:'a list) = [] | quickSort _ ([h]:'a list) = [h] | quickSort (leq:'a -> 'a -> bool) ((h::t) :'a list) = let val (after, befor) = List.partition (leq h) t in quickSort leq befor @ (h :: quickSort leq after) end open PolyML.NameSpace local open ProtectedTable val fixTable = create() and sigTable = create() and valTable = create() and typTable = create() and fncTable = create() and strTable = create() in val globalNameSpace: PolyML.NameSpace.nameSpace = { lookupFix = lookup fixTable, lookupSig = lookup sigTable, lookupVal = lookup valTable, lookupType = lookup typTable, lookupFunct = lookup fncTable, lookupStruct = lookup strTable, enterFix = enter fixTable, enterSig = enter sigTable, enterVal = enter valTable, enterType = enter typTable, enterFunct = enter fncTable, enterStruct = enter strTable, allFix = all fixTable, allSig = all sigTable, allVal = all valTable, allType = all typTable, allFunct = all fncTable, allStruct = all strTable } val forgetFix = delete fixTable and forgetSig = delete sigTable and forgetVal = delete valTable and forgetType = delete typTable and forgetFunct = delete fncTable and forgetStruct = delete strTable end local open PolyML (* For prettyprint datatype *) (* Install a pretty printer for parsetree properties. This isn't done in the compiler. *) fun prettyProps depth _ l = if depth <= 0 then PrettyString "..." else prettyProp(l, depth-1) (* Use prettyRepresentation to print most of the arguments *) and prettyProp(PTbreakPoint b, d) = blockArg("PTbreakPoint", prettyRepresentation(b, d)) | prettyProp(PTcompletions s, d) = blockArg("PTcompletions", prettyRepresentation(s, d)) | prettyProp(PTdeclaredAt l, d) = blockArg("PTdeclaredAt", prettyRepresentation(l, d)) | prettyProp(PTdefId i, d) = blockArg("PTdefId", prettyRepresentation(i, d)) | prettyProp(PTfirstChild _, _) = blockArg("PTfirstChild", PrettyString "fn") | prettyProp(PTnextSibling _, _) = blockArg("PTnextSibling", PrettyString "fn") | prettyProp(PTopenedAt f, d) = blockArg("PTopenedAt", prettyRepresentation(f, d)) | prettyProp(PTparent _, _) = blockArg("PTparent", PrettyString "fn") | prettyProp(PTpreviousSibling _, _)= blockArg("PTpreviousSibling", PrettyString "fn") | prettyProp(PTprint _, _) = blockArg("PTprint", PrettyString "fn") | prettyProp(PTreferences f, d) = blockArg("PTreferences", prettyRepresentation(f, d)) | prettyProp(PTrefId f, d) = blockArg("PTrefId", prettyRepresentation(f, d)) | prettyProp(PTstructureAt f, d) = blockArg("PTstructureAt", prettyRepresentation(f, d)) | prettyProp(PTtype f, d) = blockArg("PTtype", prettyRepresentation(f, d)) and blockArg (s, arg) = PrettyBlock(3, true, [], [PrettyString s, PrettyBreak(1, 1), parenthesise arg]) and parenthesise(p as PrettyBlock(_, _, _, PrettyString "(" :: _)) = p | parenthesise(p as PrettyBlock(_, _, _, PrettyString "{" :: _)) = p | parenthesise(p as PrettyBlock(_, _, _, PrettyString "[" :: _)) = p | parenthesise(p as PrettyBlock(_, _, _, _ :: _)) = PrettyBlock(3, true, [], [ PrettyString "(", PrettyBreak(0, 0), p, PrettyBreak(0, 0), PrettyString ")" ]) | parenthesise p = p in val () = addPrettyPrinter prettyProps end (* PolyML.compiler takes a list of these parameter values. They all default so it's possible to pass only those that are actually needed. *) datatype compilerParameters = CPOutStream of string->unit (* Output stream for debugging and other output from the compiler. Provides a default stream for other output. Default: TextIO.print *) | CPNameSpace of PolyML.NameSpace.nameSpace (* Name space to look up and enter results. Default: globalNameSpace *) | CPErrorMessageProc of { message: PolyML.pretty, hard: bool, location: PolyML.location, context: PolyML.pretty option } -> unit (* Called by the compiler to generate error messages. Arguments (message, isHard, lineNo, context). message is the message. isHard is true if this is an error, false if a warning. location is the file-name, line number and position. context is an optional extra piece of information showing the part of the parse tree where the error was detected. Default: print this to CPOutStream value using CPLineNo and CPFileName. *) | CPLineNo of unit -> int (* Called by the compiler to get the current "line number". This is passed to CPErrorMessageProc and the debugger. It may actually be a more general location than a source line. Default: fn () => 0 i.e. no line numbering. *) | CPLineOffset of unit -> int (* Called by the compiler to get the current "offset". This is passed to CPErrorMessageProc and the debugger. This may either be an offset on the current file, a byte offset or simply zero. Default: fn () => 0 i.e. no line offset. *) | CPFileName of string (* The current file being compiled. This is used by the default CPErrorMessageProc and the debugger. Default: "" i.e. interactive stream. *) | CPPrintInAlphabeticalOrder of bool (* Whether to sort the results by alphabetical order before printing them. Applies only to the default CPResultFun. Default value of printInAlphabeticalOrder. *) | CPResultFun of { fixes: (string * Infixes.fixity) list, values: (string * Values.value) list, structures: (string * Structures.structureVal) list, signatures: (string * Signatures.signatureVal) list, functors: (string * Functors.functorVal) list, types: (string * TypeConstrs.typeConstr) list} -> unit (* Function to apply to the result of compiling and running the code. Default: print and enter the values into CPNameSpace. *) | CPCompilerResultFun of PolyML.parseTree option * ( unit -> { fixes: (string * Infixes.fixity) list, values: (string * Values.value) list, structures: (string * Structures.structureVal) list, signatures: (string * Signatures.signatureVal) list, functors: (string * Functors.functorVal) list, types: (string * TypeConstrs.typeConstr) list}) option -> unit -> unit (* Function to process the result of compilation. This can be used to capture the parse tree even if type-checking fails. Default: Execute the code and call the result function if the compilation succeeds. Raise an exception if the compilation failed. *) | CPProfiling of int (* Deprecated: No longer used. *) | CPTiming of bool (* Deprecated: No longer used. *) | CPDebug of bool (* Control whether calls to the debugger should be inserted into the compiled code. This allows breakpoints to be set, values to be examined and printed and functions to be traced at the cost of extra run-time overhead. Default: value of PolyML.Compiler.debug *) | CPPrintDepth of unit->int (* This controls the depth of printing if the default CPResultFun is used. It is also bound into any use of PolyML.print in the compiled code and will be called to get the print depth whenever that code is executed. Default: Get the current value of PolyML.print_depth. *) | CPPrintStream of string->unit (* This is bound into any occurrence of PolyML.print and is used to produce the outut. Default: CPOutStream. *) | CPErrorDepth of int (* Controls the depth of context to produce in error messages. Default : value of PolyML.error_depth. *) | CPLineLength of int (* Bound into any occurrences of PolyML.print. This is the length of a line used in the pretty printer. Default: value of PolyML.line_length. *) | CPRootTree of { parent: (unit -> PolyML.parseTree) option, next: (unit -> PolyML.parseTree) option, previous: (unit -> PolyML.parseTree) option } (* This can be used to provide a parent for parse trees created by the compiler. This appears as a PTparent property in the tree. The default is NONE which does not to provide a parent. *) | CPAllocationProfiling of int (* Controls whether to add profiling information to each allocation. Currently zero means no profiling and one means add the allocating function. *) | CPDebuggerFunction of int * Values.value * int * string * string * nameSpace -> unit (* Deprecated: No longer used. *) | CPBindingSeq of unit -> int (* Used to create a sequence no for PTdefId properties. This can be used in an IDE to allocate a unique Id for an identifier. Default fn _ => 0. *) (* References for control and debugging. *) val timing = ref false and printDepth: int ref = ref 0 and errorDepth: int ref = ref 6 and lineLength: int ref = ref 77 and allocationProfiling = ref false val assemblyCode = ref false and codetree = ref false and codetreeAfterOpt = ref false and icode = ref false and parsetree = ref false and reportUnreferencedIds = ref false and reportExhaustiveHandlers = ref false and narrowOverloadFlexRecord = ref false and createPrintFunctions = ref true and reportDiscardFunction = ref true and reportDiscardNonUnit = ref false val lowlevelOptimise = ref true val debug = ref false val inlineFunctors = ref true val maxInlineSize: int ref = ref 80 val printInAlphabeticalOrder = ref true val traceCompiler = ref false (* No longer used. *) fun prettyPrintWithIDEMarkup(stream : string -> unit, lineWidth : int): PolyML.pretty -> unit = let open PolyML val openDeclaration = "\u001bD" val closeDeclaration = "\u001bd" val separator = "\u001b," val finalSeparator = "\u001b;" fun beginMarkup context = case List.find (fn ContextLocation _ => true | _ => false) context of SOME (ContextLocation{file,startLine,startPosition,endPosition, ...}) => let (* In the unlikely event there's an escape character in the file name convert it to ESC-ESC. *) fun escapeEscapes #"\u001b" = "\u001b\u001b" | escapeEscapes c = str c in stream openDeclaration; stream(String.translate escapeEscapes file); stream separator; stream(FixedInt.toString startLine); stream separator; stream(FixedInt.toString startPosition); stream separator; stream(FixedInt.toString endPosition); stream finalSeparator end | _ => () fun endMarkup context = List.app (fn ContextLocation _ => stream closeDeclaration | _ => ()) context in prettyMarkup (beginMarkup, endMarkup) (stream, lineWidth) end; (* useMarkupInOutput is set according to the setting of *) val useMarkupInOutput = ref false fun prettyPrintWithOptionalMarkup(stream, lineWidth) = if ! useMarkupInOutput then prettyPrintWithIDEMarkup(stream, lineWidth) else PolyML.prettyPrint(stream, lineWidth) (* Top-level prompts. *) val prompt1 = ref "> " and prompt2 = ref "# "; fun printOut s = TextIO.print s (* If we get an exception while writing to stdOut we've got a big problem and can't continue. It could happen if we have closed stdOut. Try reporting the error through stdErr and exit. *) handle Thread.Thread.Interrupt => raise Thread.Thread.Interrupt | exn => ( ( TextIO.output(TextIO.stdErr, concat["Exception ", exnName exn, " raised while writing to stdOut.\n"]); TextIO.flushOut TextIO.stdErr (* probably unnecessary. *) ) handle _ => (); (* Get out without trying to do anything else. *) OS.Process.terminate OS.Process.failure ) (* Default function to print and enter a value. *) fun printAndEnter (inOrder: bool, space: PolyML.NameSpace.nameSpace, stream: string->unit, depth: int) { fixes: (string * Infixes.fixity) list, values: (string * Values.value) list, structures: (string * Structures.structureVal) list, signatures: (string * Signatures.signatureVal) list, functors: (string * Functors.functorVal) list, types: (string * TypeConstrs.typeConstr) list}: unit = let (* We need to merge the lists to sort them alphabetically. *) datatype decKind = FixStatusKind of Infixes.fixity | TypeConstrKind of TypeConstrs.typeConstr | SignatureKind of Signatures.signatureVal | StructureKind of Structures.structureVal | FunctorKind of Functors.functorVal | ValueKind of Values.value val decList = map (fn (s, f) => (s, FixStatusKind f)) fixes @ map (fn (s, f) => (s, TypeConstrKind f)) types @ map (fn (s, f) => (s, SignatureKind f)) signatures @ map (fn (s, f) => (s, StructureKind f)) structures @ map (fn (s, f) => (s, FunctorKind f)) functors @ map (fn (s, f) => (s, ValueKind f)) values fun kindToInt(FixStatusKind _) = 0 | kindToInt(TypeConstrKind _) = 1 | kindToInt(SignatureKind _) = 2 | kindToInt(StructureKind _) = 3 | kindToInt(FunctorKind _) = 4 | kindToInt(ValueKind _) = 5 fun order (s1: string, k1) (s2, k2) = if s1 = s2 then kindToInt k1 <= kindToInt k2 else s1 <= s2 (* Don't sort the declarations if we want them in declaration order. *) val sortedDecs = if inOrder then quickSort order decList else decList fun enterDec(n, FixStatusKind f) = #enterFix space (n,f) | enterDec(n, TypeConstrKind t) = #enterType space (n,t) | enterDec(n, SignatureKind s) = #enterSig space (n,s) | enterDec(n, StructureKind s) = #enterStruct space (n,s) | enterDec(n, FunctorKind f) = #enterFunct space (n,f) | enterDec(n, ValueKind v) = #enterVal space (n,v) fun printDec(_, FixStatusKind f) = prettyPrintWithOptionalMarkup (stream, !lineLength) (Infixes.print f) | printDec(_, TypeConstrKind t) = prettyPrintWithOptionalMarkup (stream, !lineLength) (TypeConstrs.print(t, FixedInt.fromInt depth, SOME space)) | printDec(_, SignatureKind s) = prettyPrintWithOptionalMarkup (stream, !lineLength) (Signatures.print(s, FixedInt.fromInt depth, SOME space)) | printDec(_, StructureKind s) = prettyPrintWithOptionalMarkup (stream, !lineLength) (Structures.print(s, FixedInt.fromInt depth, SOME space)) | printDec(_, FunctorKind f) = prettyPrintWithOptionalMarkup (stream, !lineLength) (Functors.print(f, FixedInt.fromInt depth, SOME space)) | printDec(_, ValueKind v) = if Values.isConstructor v andalso not (Values.isException v) then () (* Value constructors are printed with the datatype. *) else prettyPrintWithOptionalMarkup (stream, !lineLength) (Values.printWithType(v, FixedInt.fromInt depth, SOME space)) in (* First add the declarations to the name space and then print them. Doing it this way improves the printing of types since these require look-ups in the name space. For instance the constructors of a datatype from an opened structure should not include the structure name but that will only work once the datatype itself is in the global name-space. *) List.app enterDec sortedDecs; if depth > 0 then List.app printDec sortedDecs else () end local open Bootstrap Bootstrap.Universal (* To allow for the possibility of changing the representation we don't make Universal be the same as Bootstrap.Universal. *) (* Default error message function. *) fun defaultErrorProc printString {message: PolyML.pretty, hard: bool, location={startLine, startPosition, endPosition, file, ...}: PolyML.location, context: PolyML.pretty option} = let open PolyML val fullMessage = case context of NONE => message | SOME ctxt => PrettyBlock(0, true, [], [ message, PrettyBreak(1, 0), PrettyBlock(2, false, [], [PrettyString "Found near", PrettyBreak(1, 0), ctxt]) ]) in if ! useMarkupInOutput then (* IDE mark-up of error messages. This is actually the same as within the IDE. *) let val openError = "\u001bE" val closeError = "\u001be" val separator = "\u001b," val finalSeparator = "\u001b;" in printString( concat [ openError, if hard then "E" else "W", separator, file, (* TODO double any escapes. *) separator, FixedInt.toString startLine, separator, FixedInt.toString startPosition, separator, FixedInt.toString endPosition, finalSeparator ] ); prettyPrintWithIDEMarkup(printString, !lineLength) fullMessage; printString closeError end else (* Plain text form. *) ( printString(concat ( (if file = "" then ["poly: "] else [file, ":"]) @ (if startLine = 0 then [] else [FixedInt.toString startLine]) @ (if startPosition = 0 then [": "] else [".", FixedInt.toString startPosition, "-", FixedInt.toString endPosition, ": "]) @ (if hard then ["error: "] else ["warning: "]) )); (* ( (if hard then ["Error-"] else ["Warning-"]) @ (if file = "" then [] else [" in '", file, "',"]) @ (if startLine = 0 then [] else [" line ", Int.toString startLine]) @ (if startLine = 0 andalso file = "" then [] else [".\n"]))); *) PolyML.prettyPrint(printString, !lineLength) fullMessage ) end in (* This function ends up as PolyML.compiler. *) fun polyCompiler (getChar: unit->char option, parameters: compilerParameters list) = let (* Find the first item that matches or return the default. *) fun find _ def [] = def | find f def (hd::tl) = case f hd of SOME s => s | NONE => find f def tl val outstream = find (fn CPOutStream s => SOME s | _ => NONE) TextIO.print parameters val nameSpace = find (fn CPNameSpace n => SOME n | _ => NONE) globalNameSpace parameters val lineNo = find (fn CPLineNo l => SOME l | _ => NONE) (fn () => 0) parameters val lineOffset = find (fn CPLineOffset l => SOME l | _ => NONE) (fn () => 0) parameters val fileName = find (fn CPFileName s => SOME s | _ => NONE) "" parameters val printInOrder = find (fn CPPrintInAlphabeticalOrder t => SOME t | _ => NONE) (! printInAlphabeticalOrder) parameters val printDepth = find (fn CPPrintDepth f => SOME f | _ => NONE) (fn () => !printDepth) parameters val resultFun = find (fn CPResultFun f => SOME f | _ => NONE) (printAndEnter(printInOrder, nameSpace, outstream, printDepth())) parameters val printString = find (fn CPPrintStream s => SOME s | _ => NONE) outstream parameters val errorProc = find (fn CPErrorMessageProc f => SOME f | _ => NONE) (defaultErrorProc printString) parameters val debugging = find (fn CPDebug t => SOME t | _ => NONE) (! debug) parameters val allocProfiling = find(fn CPAllocationProfiling l => SOME l | _ => NONE) (if !allocationProfiling then 1 else 0) parameters val bindingSeq = find(fn CPBindingSeq l => SOME l | _ => NONE) (fn () => 0) parameters local (* Default is to filter the parse tree argument. *) fun defaultCompilerResultFun (_, NONE) = raise Fail "Static Errors" | defaultCompilerResultFun (_, SOME code) = fn () => resultFun(code()) in val compilerResultFun = find (fn CPCompilerResultFun f => SOME f | _ => NONE) defaultCompilerResultFun parameters end (* TODO: Make this available as a parameter. *) val prettyOut = prettyPrintWithOptionalMarkup(printString, !lineLength) val compilerOut = prettyPrintWithOptionalMarkup(outstream, !lineLength) (* Parent tree defaults to empty. *) val parentTree = find (fn CPRootTree f => SOME f | _ => NONE) { parent = NONE, next = NONE, previous = NONE } parameters (* Pass all the settings. Some of these aren't included in the parameters datatype (yet?). *) val treeAndCode = PolyML.compiler(nameSpace, getChar, [ tagInject errorMessageProcTag errorProc, tagInject compilerOutputTag compilerOut, tagInject lineNumberTag (FixedInt.fromInt o lineNo), tagInject offsetTag (FixedInt.fromInt o lineOffset), tagInject fileNameTag fileName, tagInject bindingCounterTag (FixedInt.fromInt o bindingSeq), tagInject inlineFunctorsTag (! inlineFunctors), tagInject maxInlineSizeTag (FixedInt.fromInt(! maxInlineSize)), tagInject parsetreeTag (! parsetree), tagInject codetreeTag (! codetree), tagInject icodeTag (! icode), tagInject lowlevelOptimiseTag (! lowlevelOptimise), tagInject assemblyCodeTag (! assemblyCode), tagInject codetreeAfterOptTag (! codetreeAfterOpt), tagInject profileAllocationTag (FixedInt.fromInt allocProfiling), tagInject errorDepthTag (FixedInt.fromInt(! errorDepth)), tagInject printDepthFunTag (FixedInt.fromInt o printDepth), tagInject lineLengthTag (FixedInt.fromInt(! lineLength)), tagInject debugTag debugging, tagInject printOutputTag prettyOut, tagInject rootTreeTag parentTree, tagInject reportUnreferencedIdsTag (! reportUnreferencedIds), tagInject reportExhaustiveHandlersTag (! reportExhaustiveHandlers), tagInject narrowOverloadFlexRecordTag (! narrowOverloadFlexRecord), tagInject createPrintFunctionsTag (! createPrintFunctions), tagInject reportDiscardedValuesTag (if ! reportDiscardNonUnit then 2 else if ! reportDiscardFunction then 1 else 0) ]) in compilerResultFun treeAndCode end (* Top-level read-eval-print loop. This is the normal top-level loop and is also used for the debugger. *) fun topLevel {isDebug, nameSpace, exitLoop, exitOnError, isInteractive, startExec, endExec } = let (* This is used as the main read-eval-print loop. It is also invoked by running code that has been compiled with the debug option on when it stops at a breakpoint. In that case debugEnv contains an environment formed from the local variables. This is placed in front of the normal top-level environment. *) (* Don't use the end_of_stream because it may have been set by typing EOT to the command we were running. *) val endOfFile = ref false; val realDataRead = ref false; val lastWasEol = ref true; (* Each character typed is fed into the compiler but leading blank lines result in the prompt remaining as firstPrompt until significant characters are typed. *) fun readin () : char option = let val () = if isInteractive andalso !lastWasEol (* Start of line *) then if !realDataRead then printOut (if isDebug then "debug " ^ !prompt2 else !prompt2) else printOut (if isDebug then "debug " ^ !prompt1 else !prompt1) else (); in case TextIO.input1 TextIO.stdIn of NONE => (endOfFile := true; NONE) | SOME #"\n" => ( lastWasEol := true; SOME #"\n" ) | SOME ch => ( lastWasEol := false; if ch <> #" " then realDataRead := true else (); SOME ch ) end; (* readin *) (* Remove all buffered but unread input. *) fun flushInput () = case TextIO.canInput(TextIO.stdIn, 1) of SOME 1 => (TextIO.inputN(TextIO.stdIn, 1); flushInput()) | _ => (* No input waiting or we're at EOF. *) () fun readEvalPrint () : unit = let in realDataRead := false; (* Compile and then run the code. *) let val startCompile = Timer.startCPUTimer() (* Compile a top-level declaration/expression. *) val code = polyCompiler (readin, [CPNameSpace nameSpace, CPOutStream printOut]) (* Don't print any times if this raises an exception. *) handle exn as Fail s => ( printOut(s ^ "\n"); flushInput(); lastWasEol := true; PolyML.Exception.reraise exn ) val endCompile = Timer.checkCPUTimer startCompile (* Run the code *) val startRun = Timer.startCPUTimer() val () = startExec() (* Enable any debugging *) (* Run the code and capture any exception (temporarily). *) val finalResult = (code(); NONE) handle exn => SOME exn val () = endExec() (* Turn off debugging *) (* Print the times if required. *) val endRun = Timer.checkCPUTimer startRun val () = if !timing then printOut( concat["Timing - compile: ", Time.fmt 1 (#usr endCompile + #sys endCompile), " run: ", Time.fmt 1 (#usr endRun + #sys endRun), "\n"]) else () in case finalResult of NONE => () (* No exceptions raised. *) | SOME exn => (* Report exceptions in running code. *) let open PolyML PolyML.Exception val exLoc = case exceptionLocation exn of NONE => [] | SOME loc => [ContextLocation loc] in prettyPrintWithOptionalMarkup(TextIO.print, ! lineLength) (PrettyBlock(0, false, [], [ PrettyBlock(0, false, exLoc, [PrettyString "Exception-"]), PrettyBreak(1, 3), prettyRepresentation(exn, FixedInt.fromInt(! printDepth)), PrettyBreak(1, 3), PrettyString "raised" ])); PolyML.Exception.reraise exn end end end; (* readEvalPrint *) fun handledLoop () : unit = ( (* Process a single top-level command. *) readEvalPrint() handle Thread.Thread.Interrupt => (* Allow ^C to terminate the debugger and raise Interrupt in the called program. *) if exitOnError then OS.Process.exit OS.Process.failure else if isDebug then (flushInput(); raise Thread.Thread.Interrupt) else () | _ => if exitOnError then OS.Process.exit OS.Process.failure else (); (* Exit if we've seen end-of-file or we're in the debugger and we've run "continue". *) if !endOfFile orelse exitLoop() then () else handledLoop () ) in handledLoop () end end val suffixes = ref ["", ".ML", ".sml"] (*****************************************************************************) (* "use": compile from a file. *) (*****************************************************************************) val useFileTag: string option Universal.tag = Universal.tag() fun getUseFileName(): string option = Option.join (Thread.Thread.getLocal useFileTag) fun use (originalName: string): unit = let (* use "f" first tries to open "f" but if that fails it tries "f.ML", "f.sml" etc. *) (* We use the functional layer and a reference here rather than TextIO.input1 because that requires locking round every read to make it thread-safe. We know there's only one thread accessing the stream so we don't need it here. *) fun trySuffixes [] = (* Not found - attempt to open the original and pass back the exception. *) (TextIO.getInstream(TextIO.openIn originalName), originalName) | trySuffixes (s::l) = (TextIO.getInstream(TextIO.openIn (originalName ^ s)), originalName ^ s) handle IO.Io _ => trySuffixes l (* First in list is the name with no suffix. *) val (inStream, fileName) = trySuffixes("" :: ! suffixes) val stream = ref inStream (* Record the file name. This allows nested calls to "use" to set the correct path. *) val oldName = getUseFileName() val () = Thread.Thread.setLocal(useFileTag, SOME fileName) val lineNo = ref 1; fun getChar () : char option = case TextIO.StreamIO.input1 (! stream) of NONE => NONE | SOME (eoln as #"\n", strm) => ( lineNo := !lineNo + 1; stream := strm; SOME eoln ) | SOME(c, strm) => (stream := strm; SOME c) in while not (TextIO.StreamIO.endOfStream(!stream)) do let val code = polyCompiler(getChar, [CPFileName fileName, CPLineNo(fn () => !lineNo)]) handle exn => ( TextIO.StreamIO.closeIn(!stream); PolyML.Exception.reraise exn ) in code() handle exn => ( (* Report exceptions in running code. *) TextIO.print ("Exception- " ^ exnMessage exn ^ " raised\n"); TextIO.StreamIO.closeIn (! stream); Thread.Thread.setLocal(useFileTag, oldName); PolyML.Exception.reraise exn ) end; (* Normal termination: close the stream. *) TextIO.StreamIO.closeIn (! stream); Thread.Thread.setLocal(useFileTag, oldName) end (* use *) local open Time in fun maxTime (x : time, y : time): time = if x < y then y else x end exception ObjNotFile; type 'a tag = 'a Universal.tag; fun splitFilename (name: string) : string * string = let val {dir, file } = OS.Path.splitDirFile name in (dir, file) end (* Make *) (* There are three possible states - The object may have been checked, it may be currently being compiled, or it may not have been processed yet. *) datatype compileState = NotProcessed | Searching | Checked; fun longName (directory, file) = OS.Path.joinDirFile{dir=directory, file = file} local fun fileReadable (fileTuple as (directory, object)) = (* Use OS.FileSys.isDir just to test if the file/directory exists. *) if (OS.FileSys.isDir (longName fileTuple); false) handle OS.SysErr _ => true then false else let (* Check that the object is present in the directory with the name given and not a case-insensitive version of it. This avoids problems with "make" attempting to recursively make Array etc because they contain signatures ARRAY. *) open OS.FileSys val d = openDir (if directory = "" then "." else directory) fun searchDir () = case readDir d of NONE => false | SOME f => f = object orelse searchDir () val present = searchDir() in closeDir d; present end fun findFileTuple _ [] = NONE | findFileTuple (directory, object) (suffix :: suffixes) = let val fileName = object ^ suffix val fileTuple = (directory, fileName) in if fileReadable fileTuple then SOME fileTuple else findFileTuple (directory, object) suffixes end in fun filePresent (directory : string, kind: string option, object : string) = let (* Construct suffixes with the architecture and version number in so we can compile architecture- and version-specific code. *) val archSuffix = "." ^ String.map Char.toLower (PolyML.architecture()) val versionSuffix = "." ^ Int.toString Bootstrap.compilerVersionNumber val extraSuffixes = case kind of NONE => [archSuffix, versionSuffix, ""] | SOME k => ["." ^ k ^ archSuffix, "." ^ k ^ versionSuffix, "." ^ k, archSuffix, versionSuffix, ""] val addedSuffixes = List.foldr(fn (i, l) => (List.map (fn s => s ^ i) extraSuffixes) @ l) [] (!suffixes) in (* For each of the suffixes in the list try it. *) findFileTuple (directory, object) addedSuffixes end end (* See if the corresponding file is there and if it is a directory. *) fun testForDirectory (name: string) : bool = OS.FileSys.isDir name handle OS.SysErr _ => false (* No such file. *) (* Time stamps. *) type timeStamp = Time.time; val firstTimeStamp : timeStamp = Time.zeroTime; local open ProtectedTable (* Global tables to hold information about entities that have been made using "make". *) val timeStampTable: timeStamp ptable = create() and dependencyTable: string list ptable = create() in (* When was the entity last built? Returns zeroTime if it hasn't. *) fun lastMade (objectName : string) : timeStamp = getOpt(lookup timeStampTable objectName, firstTimeStamp) (* Get the dependencies as an option type. *) val getMakeDependencies = lookup dependencyTable (* Set the time stamp and dependencies. *) fun updateMakeData(objectName, times, depends) = ( enter timeStampTable (objectName, times); enter dependencyTable (objectName, depends) ) end (* Main make function *) fun make (targetName: string) : unit = let local val sourceDateEpochEnv : string option = OS.Process.getEnv "SOURCE_DATE_EPOCH"; in val sourceDateEpoch : timeStamp option = case sourceDateEpochEnv of NONE => NONE | SOME s => (case LargeInt.fromString s of NONE => NONE | SOME t => SOME(Time.fromSeconds t) handle Time.Time => NONE) end; (* Get the current time. *) val newTimeStamp : unit -> timeStamp = case sourceDateEpoch of NONE => Time.now | SOME t => fn _ => t; (* Get the date of a file. *) val fileTimeStamp : string -> timeStamp = case sourceDateEpoch of NONE => OS.FileSys.modTime | SOME t => fn _ => t; (* This serves two purposes. It provides a list of objects which have been re-made to prevent them being made more than once, and it also prevents circular dependencies from causing infinite loops (e.g. let x = f(x)) *) local open HashArray; val htab : compileState hash = hash 10; in fun lookupStatus (name: string) : compileState = getOpt(sub (htab, name), NotProcessed); fun setStatus (name: string, cs: compileState) : unit = update (htab, name, cs) end; (* Remove leading directory names to get the name of the object itself. e.g. "../compiler/parsetree/gencode" yields simply "gencode". *) val (dirName,objectName) = splitFilename targetName; (* Looks to see if the file is in the current directory. If it is and the file is newer than the corresponding object then it must be remade. If it is a directory then we attempt to remake the directory by compiling the "bind" file. This will only actually be executed if it involves some identifier which is newer than the result object. *) fun remakeObj (objName: string, kind: string option, findDirectory: string option -> string -> string) = let (* Find a directory that contains this object. An exception will be raised if it is not there. *) val directory = findDirectory kind objName val fullName = if directory = "" (* Work around for bug. *) then objName else OS.Path.joinDirFile{dir=directory, file=objName} val objIsDir = testForDirectory fullName val here = fullName (* Look to see if the file exists, possibly with an extension, and get the extended version. *) val fileTuple = let (* If the object is a directory the source is in the bind file. *) val (dir : string, file : string) = if objIsDir then (here,"ml_bind") else (directory, objName); in case filePresent (dir, kind, file) of SOME res' => res' | NONE => raise Fail ("No such file or directory ("^file^","^dir^")") end ; val fileName = longName fileTuple; val newFindDirectory : string option -> string -> string = if objIsDir then let (* Look in this directory then in the ones above. *) fun findDirectoryHere kind (name: string) : string = case filePresent (here, kind, name) of NONE => findDirectory kind name (* not in this directory *) | _ => here; in findDirectoryHere end else findDirectory (* Compiles a file. *) fun remakeCurrentObj () = let val () = print ("Making " ^ objName ^ "\n"); local (* Keep a list of the dependencies. *) val deps : bool HashArray.hash = HashArray.hash 10; fun addDep name = if getOpt(HashArray.sub (deps, name), true) then HashArray.update(deps, name, true) else (); (* Called by the compiler to look-up a global identifier. *) fun lookupMakeEnv (globalLook, kind: string option) (name: string) : 'a option = let (* Have we re-declared it ? *) val res = lookupStatus name; in case res of NotProcessed => ( (* Compile the dependency. *) remakeObj (name, kind, newFindDirectory); (* Add this to the dependencies. *) addDep name ) | Searching => (* In the process of making it *) print("Circular dependency: " ^ name ^ " depends on itself\n") | Checked => addDep name; (* Add this to the dependencies. *) (* There was previously a comment about returning NONE here if we had a problem remaking a dependency. *) globalLook name end (* lookupMakeEnv *) (* Enter the declared value in the table. Usually this will be the target we are making. Also set the state to "Checked". The state is set to checked when we finish making the object but setting it now suppresses messages about circular dependencies if we use the identifier within the file. *) fun enterMakeEnv (kind : string, enterGlobal) (name: string, v: 'a) : unit = ( (* Put in the value. *) enterGlobal (name, v); print ("Created " ^ kind ^ " " ^ name ^ "\n"); (* The name we're declaring may appear to be a dependency but isn't, so don't include it in the list. *) HashArray.update (deps, name, false); if name = objName then let (* Put in the dependencies i.e. those names set to true in the table. *) val depends = HashArray.fold (fn (s, v, l) => if v then s :: l else l) [] deps; (* Put in a time stamp for the new object. We need to make sure that it is no older than the newest object it depends on. In theory that should not be a problem but clocks on different machines can get out of step leading to objects made later having earlier time stamps. *) val newest = List.foldl (fn (s: string, t: timeStamp) => maxTime (lastMade s, t)) (fileTimeStamp fileName) depends; val timeStamp = maxTime(newest, newTimeStamp()); in setStatus (name, Checked); updateMakeData(name, timeStamp, depends) end else () ) (* enterMakeEnv *); in val makeEnv = { lookupFix = #lookupFix globalNameSpace, lookupVal = #lookupVal globalNameSpace, lookupType = #lookupType globalNameSpace, lookupSig = lookupMakeEnv (#lookupSig globalNameSpace, SOME "signature"), lookupStruct = lookupMakeEnv (#lookupStruct globalNameSpace, SOME "structure"), lookupFunct = lookupMakeEnv (#lookupFunct globalNameSpace, SOME "functor"), enterFix = #enterFix globalNameSpace, enterVal = #enterVal globalNameSpace, enterType = #enterType globalNameSpace, enterStruct = enterMakeEnv ("structure", #enterStruct globalNameSpace), enterSig = enterMakeEnv ("signature", #enterSig globalNameSpace), enterFunct = enterMakeEnv ("functor", #enterFunct globalNameSpace), allFix = #allFix globalNameSpace, allVal = #allVal globalNameSpace, allType = #allType globalNameSpace, allSig = #allSig globalNameSpace, allStruct = #allStruct globalNameSpace, allFunct = #allFunct globalNameSpace }; end; (* local for makeEnv *) val inputFile = OS.Path.joinDirFile{dir= #1 fileTuple, file= #2 fileTuple} val inStream = TextIO.openIn inputFile; val () = let (* scope of exception handler to close inStream *) val endOfStream = ref false; val lineNo = ref 1; fun getChar () : char option = case TextIO.input1 inStream of NONE => (endOfStream := true; NONE) (* End of file *) | eoln as SOME #"\n" => (lineNo := !lineNo + 1; eoln) | c => c in while not (!endOfStream) do let val code = polyCompiler(getChar, [CPNameSpace makeEnv, CPFileName fileName, CPLineNo(fn () => !lineNo)]) in code () handle exn as Fail _ => PolyML.Exception.reraise exn | exn => ( print ("Exception- " ^ exnMessage exn ^ " raised\n"); PolyML.Exception.reraise exn ) end end (* body of scope of inStream *) handle exn => (* close inStream if an error occurs *) ( TextIO.closeIn inStream; PolyML.Exception.reraise exn ) in (* remake normal termination *) TextIO.closeIn inStream end (* remakeCurrentObj *) in (* body of remakeObj *) setStatus (objName, Searching); (* If the file is newer than the object then we definitely must remake it. Otherwise we look at the dependency list and check those. If the result of that check is that one of the dependencies is newer than the object (probably because it has just been recompiled) we have to recompile the file. Compiling a file also checks the dependencies and recompiles them, generating a new dependency list. That is why we don't check the dependency list if the object is out of date with the file. Also if the file has been changed it may no longer depend on the things it used to depend on. *) let val objDate = lastMade objName fun maybeRemake (s:string) : unit = case lookupStatus s of NotProcessed => (* see if it's a file. *) (* Compile the dependency. *) remakeObj(s, kind, newFindDirectory) | Searching => (* In the process of making it *) print ("Circular dependency: " ^ s ^ " depends on itself\n") | Checked => () (* do nothing *) open Time (* Process each entry and return true if any is newer than the target. *) val processChildren = List.foldl (fn (child:string, parentNeedsMake:bool) => ( maybeRemake child; (* Find its date and see if it is newer. *) parentNeedsMake orelse lastMade child > objDate ) ) false; in if objDate < fileTimeStamp fileName orelse ( (* Get the dependency list. There may not be one if this object has not been compiled with "make". *) case getMakeDependencies objName of SOME d => processChildren d | NONE => true (* No dependency list - must use "make" on it. *) ) then remakeCurrentObj () else () end; (* Mark it as having been checked. *) setStatus (objName, Checked) end (* body of remakeObj *) (* If the object is not a file mark it is checked. It may be a pervasive or it may be missing. In either case mark it as checked to save searching for it again. *) handle ObjNotFile => setStatus (objName, Checked) | exn => (* Compilation (or execution) error. *) ( (* Mark as checked to prevent spurious messages. *) setStatus (objName, Checked); raise exn ) in (* body of make *) (* Check that the target exists. *) case filePresent (dirName, NONE, objectName) of NONE => let val dir = if dirName = "" then "" else " (directory "^dirName^")"; val s = "File "^objectName^" not found" ^ dir in print (s ^ "\n"); raise Fail s end | _ => let val targetIsDir = testForDirectory targetName; (* If the target we are making is a directory all the objects must be in the directory. If it is a file we allow references to other objects in the same directory. Objects not found must be pervasive. *) fun findDirectory kind (s: string) : string = if (not targetIsDir orelse s = objectName) andalso isSome(filePresent(dirName, kind, s)) then dirName else raise ObjNotFile; in remakeObj (objectName, NONE, findDirectory) handle exn => ( print (targetName ^ " was not declared\n"); PolyML.Exception.reraise exn ) end end (* make *) in structure PolyML = struct open PolyML (* We must not have a signature on the result otherwise print and makestring will be given polymorphic types and will only produce "?" *) val globalNameSpace = globalNameSpace val use = use and make = make val suffixes = suffixes and getUseFileName = getUseFileName val compiler = polyCompiler val prettyPrintWithIDEMarkup = prettyPrintWithIDEMarkup structure Compiler = struct datatype compilerParameters = datatype compilerParameters val compilerVersion = Bootstrap.compilerVersion val compilerVersionNumber = Bootstrap.compilerVersionNumber val forgetSignature: string -> unit = forgetSig and forgetStructure: string -> unit = forgetStruct and forgetFunctor: string -> unit = forgetFunct and forgetValue: string -> unit = forgetVal and forgetType: string -> unit = forgetType and forgetFixity: string -> unit = forgetFix fun signatureNames (): string list = #1(ListPair.unzip (#allSig globalNameSpace ())) and structureNames (): string list = #1(ListPair.unzip (#allStruct globalNameSpace ())) and functorNames (): string list = #1(ListPair.unzip (#allFunct globalNameSpace ())) and valueNames (): string list = #1(ListPair.unzip (#allVal globalNameSpace ())) and typeNames (): string list = #1(ListPair.unzip (#allType globalNameSpace ())) and fixityNames (): string list = #1(ListPair.unzip (#allFix globalNameSpace ())) val prompt1 = prompt1 and prompt2 = prompt2 and timing = timing and printDepth = printDepth and errorDepth = errorDepth and lineLength = lineLength and allocationProfiling = allocationProfiling val assemblyCode = assemblyCode and codetree = codetree and codetreeAfterOpt = codetreeAfterOpt and icode = icode and parsetree = parsetree and reportUnreferencedIds = reportUnreferencedIds and lowlevelOptimise = lowlevelOptimise and reportExhaustiveHandlers = reportExhaustiveHandlers and narrowOverloadFlexRecord = narrowOverloadFlexRecord and createPrintFunctions = createPrintFunctions and reportDiscardFunction = reportDiscardFunction and reportDiscardNonUnit = reportDiscardNonUnit val debug = debug val inlineFunctors = inlineFunctors val maxInlineSize = maxInlineSize val printInAlphabeticalOrder = printInAlphabeticalOrder val traceCompiler = traceCompiler end (* Debugger control. Extend DebuggerInterface set up by INITIALISE. Replaces the original DebuggerInterface. *) structure DebuggerInterface: sig type debugState val debugFunction: debugState -> string val debugFunctionArg: debugState -> PolyML.NameSpace.Values.value val debugFunctionResult: debugState -> PolyML.NameSpace.Values.value val debugLocation: debugState -> PolyML.location val debugNameSpace: debugState -> PolyML.NameSpace.nameSpace val debugLocalNameSpace: debugState -> PolyML.NameSpace.nameSpace val debugState: Thread.Thread.thread -> debugState list val setOnBreakPoint: (PolyML.location * bool ref -> unit) option -> unit val setOnEntry: (string * PolyML.location -> unit) option -> unit val setOnExit: (string * PolyML.location -> unit) option -> unit val setOnExitException: (string * PolyML.location -> exn -> unit) option -> unit end = struct open PolyML.DebuggerInterface fun debugState(t: Thread.Thread.thread): debugState list = let val stack = RunCall.loadWord(t, 0w5) and static = RunCall.loadWord(t, 0w6) and dynamic = RunCall.loadWord(t, 0w7) and locationInfo = RunCall.loadWord(t, 0w8) (* Turn the chain of saved entries along with the current top entry into a list. The bottom entry will generally be the state from non-debugging code and needs to be filtered out. *) fun toList r = if RunCall.isShort r then [] else let val s = RunCall.loadWordFromImmutable(r, 0w0) and d = RunCall.loadWordFromImmutable(r, 0w1) and l = RunCall.loadWordFromImmutable(r, 0w2) and n = RunCall.loadWordFromImmutable(r, 0w3) in if RunCall.isShort s orelse RunCall.isShort l then toList n else (s, d, l) :: toList n end in if RunCall.isShort static orelse RunCall.isShort locationInfo then toList stack else (static, dynamic, locationInfo) :: toList stack end fun searchEnvs match (staticEntry :: statics, dlist as dynamicEntry :: dynamics) = ( case (match (staticEntry, dynamicEntry), staticEntry) of (SOME result, _) => SOME result | (NONE, EnvTypeid _) => searchEnvs match (statics, dynamics) | (NONE, EnvVConstr _) => searchEnvs match (statics, dynamics) | (NONE, EnvValue _) => searchEnvs match (statics, dynamics) | (NONE, EnvException _) => searchEnvs match (statics, dynamics) | (NONE, EnvStructure _) => searchEnvs match (statics, dynamics) | (NONE, EnvStartFunction _) => searchEnvs match (statics, dynamics) | (NONE, EnvEndFunction _) => searchEnvs match (statics, dynamics) (* EnvTConstr doesn't have an entry in the dynamic list *) | (NONE, EnvTConstr _) => searchEnvs match (statics, dlist) ) | searchEnvs _ _ = NONE (* N.B. It is possible to have ([EnvTConstr ...], []) in the arguments so we can't assume that if either the static or dynamic list is nil and the other non-nil it's an error. *) (* Function argument. This should always be present but if it isn't just return unit. That's probably better than an exception here. *) fun debugFunctionArg (state: debugState as (cList, rList, _)) = let val d = (cList, rList) fun match (EnvStartFunction(_, _, ty), valu) = SOME(makeAnonymousValue state (ty, valu)) | match _ = NONE in getOpt(searchEnvs match d, unitValue) end (* Function result - only valid in exit function. *) and debugFunctionResult (state: debugState as (cList, rList, _)) = let val d = (cList, rList) fun match (EnvEndFunction(_, _, ty), valu) = SOME(makeAnonymousValue state(ty, valu)) | match _ = NONE in getOpt(searchEnvs match d, unitValue) end (* debugFunction just looks at the static data. There should always be an EnvStartFunction entry. *) fun debugFunction ((cList, _, _): debugState): string = ( case List.find(fn (EnvStartFunction _) => true | _ => false) cList of SOME(EnvStartFunction(s, _, _)) => s | _ => "?" ) fun debugLocation ((_, _, locn): debugState) = locn fun nameSpace localOnly (state: debugState as (clist, rlist, _)) : nameSpace = let val debugEnviron = (clist, rlist) (* Lookup and "all" functions for the environment. We can't easily use a general function for the lookup because we have dynamic entries for values and structures but not for type constructors. *) fun lookupValues (EnvValue(name, ty, location) :: ntl, valu :: vl) s = if name = s then SOME(makeValue state (name, ty, location, valu)) else lookupValues(ntl, vl) s | lookupValues (EnvException(name, ty, location) :: ntl, valu :: vl) s = if name = s then SOME(makeException state (name, ty, location, valu)) else lookupValues(ntl, vl) s | lookupValues (EnvVConstr(name, ty, nullary, count, location) :: ntl, valu :: vl) s = if name = s then SOME(makeConstructor state (name, ty, nullary, count, location, valu)) else lookupValues(ntl, vl) s | lookupValues (EnvTConstr _ :: ntl, vl) s = lookupValues(ntl, vl) s | lookupValues (EnvStartFunction _ :: ntl, _ :: vl) s = if localOnly then NONE else lookupValues(ntl, vl) s | lookupValues (_ :: ntl, _ :: vl) s = lookupValues(ntl, vl) s | lookupValues _ _ = (* The name we are looking for isn't in the environment. The lists should be the same length. *) NONE fun allValues (EnvValue(name, ty, location) :: ntl, valu :: vl) = (name, makeValue state (name, ty, location, valu)) :: allValues(ntl, vl) | allValues (EnvException(name, ty, location) :: ntl, valu :: vl) = (name, makeException state (name, ty, location, valu)) :: allValues(ntl, vl) | allValues (EnvVConstr(name, ty, nullary, count, location) :: ntl, valu :: vl) = (name, makeConstructor state (name, ty, nullary, count, location, valu)) :: allValues(ntl, vl) | allValues (EnvTConstr _ :: ntl, vl) = allValues(ntl, vl) | allValues (EnvStartFunction _ :: ntl, _ :: vl) = if localOnly then [] else allValues(ntl, vl) | allValues (_ :: ntl, _ :: vl) = allValues(ntl, vl) | allValues _ = [] fun lookupTypes (EnvTConstr (name, tCons) :: ntl, vl) s = if name = s then SOME (makeTypeConstr state tCons) else lookupTypes(ntl, vl) s | lookupTypes (EnvStartFunction _ :: ntl, _ :: vl) s = if localOnly then NONE else lookupTypes(ntl, vl) s | lookupTypes (_ :: ntl, _ :: vl) s = lookupTypes(ntl, vl) s | lookupTypes _ _ = NONE fun allTypes (EnvTConstr(name, tCons) :: ntl, vl) = (name, makeTypeConstr state tCons) :: allTypes(ntl, vl) | allTypes (EnvStartFunction _ :: ntl, _ :: vl) = if localOnly then [] else allTypes(ntl, vl) | allTypes (_ :: ntl, _ :: vl) = allTypes(ntl, vl) | allTypes _ = [] fun lookupStructs (EnvStructure (name, rSig, locations) :: ntl, valu :: vl) s = if name = s then SOME(makeStructure state (name, rSig, locations, valu)) else lookupStructs(ntl, vl) s | lookupStructs (EnvTConstr _ :: ntl, vl) s = lookupStructs(ntl, vl) s | lookupStructs (EnvStartFunction _ :: ntl, _ :: vl) s = if localOnly then NONE else lookupStructs(ntl, vl) s | lookupStructs (_ :: ntl, _ :: vl) s = lookupStructs(ntl, vl) s | lookupStructs _ _ = NONE fun allStructs (EnvStructure (name, rSig, locations) :: ntl, valu :: vl) = (name, makeStructure state (name, rSig, locations, valu)) :: allStructs(ntl, vl) | allStructs (EnvTypeid _ :: ntl, _ :: vl) = allStructs(ntl, vl) | allStructs (EnvStartFunction _ :: ntl, _ :: vl) = if localOnly then [] else allStructs(ntl, vl) | allStructs (_ :: ntl, vl) = allStructs(ntl, vl) | allStructs _ = [] (* We have a full environment here for future expansion but at the moment only some of the entries are used. *) fun noLook _ = NONE and noEnter _ = raise Fail "Cannot update this name space" and allEmpty _ = [] in { lookupVal = lookupValues debugEnviron, lookupType = lookupTypes debugEnviron, lookupFix = noLook, lookupStruct = lookupStructs debugEnviron, lookupSig = noLook, lookupFunct = noLook, enterVal = noEnter, enterType = noEnter, enterFix = noEnter, enterStruct = noEnter, enterSig = noEnter, enterFunct = noEnter, allVal = fn () => allValues debugEnviron, allType = fn () => allTypes debugEnviron, allFix = allEmpty, allStruct = fn () => allStructs debugEnviron, allSig = allEmpty, allFunct = allEmpty } end val debugNameSpace = nameSpace false and debugLocalNameSpace = nameSpace true end local open DebuggerInterface fun debugLocation(d: debugState): string * PolyML.location = (debugFunction d, DebuggerInterface.debugLocation d) fun getStack() = debugState(Thread.Thread.self()) (* These are only relevant when we are stopped at the debugger but we need to use globals here so that the debug functions such as "variables" and "continue" will work. *) val inDebugger = ref false (* Current stack and debug level. *) val currentStack = ref [] fun getCurrentStack() = if !inDebugger then !currentStack else raise Fail "Not stopped in debugger" val debugLevel = ref 0 (* Set to true to exit the debug loop. Set by commands such as "continue". *) val exitLoop = ref false (* Exception packet sent if this was continueWithEx. *) val debugExPacket: exn option ref = ref NONE (* Call tracing. *) val tracing = ref false val breakNext = ref false (* Single stepping. *) val stepDebug = ref false val stepDepth = ref ~1 (* Only break at a stack size less than this. *) (* Break points. We have three breakpoint lists: a list of file-line pairs, a list of function names and a list of exceptions. *) val lineBreakPoints = ref [] and fnBreakPoints = ref [] and exBreakPoints = ref [] fun checkLineBreak (file, line) = let fun findBreak [] = false | findBreak ((f, l) :: rest) = (l = line andalso f = file) orelse findBreak rest in findBreak (! lineBreakPoints) end fun checkFnBreak exact name = let (* When matching a function name we allow match if the name we're looking for matches the last component of the name we have. e.g. if we set a break for "f" we match F().S.f . *) fun matchName n = if name = n then true else if exact then false else let val nameLen = size name and nLen = size n fun isSeparator #"-" = true | isSeparator #")" = true | isSeparator #"." = true | isSeparator _ = false in nameLen > nLen andalso String.substring(name, nameLen - nLen, nLen) = n andalso isSeparator(String.sub(name, nameLen - nLen - 1)) end in List.exists matchName (! fnBreakPoints) end (* Get the exception id from an exception packet. The id is the first word in the packet. It's a mutable so treat it as an int ref here. The packet, though, is immutable. *) fun getExnId(ex: exn): int ref = RunCall.loadWordFromImmutable (ex, 0w0) fun checkExnBreak(ex: exn) = let val exnId = getExnId ex in List.exists (fn n => n = exnId) (! exBreakPoints) end fun getArgResult stack get = case stack of hd :: _ => Values.print(get hd, FixedInt.fromInt(!printDepth)) | _ => PrettyString "?" fun printTrace (funName, location, stack, argsAndResult) = let (* This prints a block with the argument and, if we're exiting the result. The function name is decorated with the location. TODO: This works fine so long as the recursion depth is not too deep but once it gets too wide the pretty-printer starts breaking the lines. *) val block = PrettyBlock(0, false, [], [ PrettyBreak(FixedInt.fromInt(length stack), 0), PrettyBlock(0, false, [], [ PrettyBlock(0, false, [ContextLocation location], [PrettyString funName]), PrettyBreak(1, 3) ] @ argsAndResult) ]) in prettyPrintWithOptionalMarkup (TextIO.print, !lineLength) block end (* Try to print the appropriate line from the file.*) fun printSourceLine(prefix, fileName: string, line: FixedInt.int, funName: string, justLocation) = let open TextIO open PolyML (* Use the pretty printer here because that allows us to provide a link to the function in the markup so the IDE can go straight to it. *) val prettyOut = prettyPrintWithOptionalMarkup (printOut, !lineLength) val lineInfo = concat( [prefix] @ (if fileName = "" then [] else [fileName, " "]) @ (if line = 0 then [] else [" line:", FixedInt.toString line, " "]) @ ["function:", funName]) in (* First just print where we are. *) prettyOut( PrettyBlock(0, true, [ContextLocation{file=fileName,startLine=line, endLine=line,startPosition=0,endPosition=0}], [PrettyString lineInfo])); (* Try to print it. This may fail if the file name was not a full path name and we're not in the correct directory. *) if justLocation orelse fileName = "" then () else let val fd = openIn fileName fun pLine n = case inputLine fd of NONE => () | SOME s => if n = 1 then printOut s else pLine(n-1) in pLine line; closeIn fd end handle IO.Io _ => () (* If it failed simply ignore the error. *) end (* These functions are installed as global callbacks if necessary. *) fun onEntry (funName, location as {file, startLine, ...}: PolyML.location) = ( if ! tracing then let val stack = getStack() val arg = getArgResult stack debugFunctionArg in printTrace(funName, location, stack, [arg]) end else (); (* We don't actually break here because at this stage we don't have any variables declared. *) (* TODO: If for whatever reason we fail to find the breakpoint we need to cancel the pending break in the exit code. Otherwise we could try and break in some other code. *) if checkLineBreak (file, startLine) orelse checkFnBreak false funName then (breakNext := true; setOnBreakPoint(SOME onBreakPoint)) else () ) and onExit (funName, location) = ( if ! tracing then let val stack = getStack() val arg = getArgResult stack debugFunctionArg val res = getArgResult stack debugFunctionResult in printTrace(funName, location, stack, [arg, PrettyBreak(1, 3), PrettyString "=", PrettyBreak(1, 3), res]) end else () ) and onExitException(funName, location) exn = ( if ! tracing then let val stack = getStack() val arg = getArgResult stack debugFunctionArg in printTrace(funName, location, stack, [arg, PrettyBreak(1, 3), PrettyString "=", PrettyBreak(1, 3), PrettyString "raised", PrettyBreak(1, 3), PrettyString(exnName exn)]) end else (); if checkExnBreak exn then enterDebugger () else () ) and onBreakPoint({file, startLine, ...}: PolyML.location, _) = ( if (!stepDebug andalso (!stepDepth < 0 orelse List.length(getStack()) <= !stepDepth)) orelse checkLineBreak (file, startLine) orelse ! breakNext then enterDebugger () else () ) (* Set the callbacks when beginning to run some code. *) and setCallBacks () = ( setOnEntry(if !tracing orelse not(null(! fnBreakPoints)) then SOME onEntry else NONE); setOnExit(if !tracing then SOME onExit else NONE); setOnExitException(if !tracing orelse not(null(! exBreakPoints)) then SOME onExitException else NONE); setOnBreakPoint(if !tracing orelse ! stepDebug orelse not(null(! lineBreakPoints)) then SOME onBreakPoint else NONE) ) (* Clear all callbacks when exiting debuggable code. *) and clearCallBacks () = ( setOnEntry NONE; setOnExit NONE; setOnExitException NONE; setOnBreakPoint NONE; (* Clear all stepping. *) breakNext := false; stepDebug := false; stepDepth := ~1; (* Clear the debugger state *) debugLevel := 0; currentStack := [] ) and enterDebugger () = let (* Clear the onXXX functions to prevent any recursion. *) val () = clearCallBacks () val () = inDebugger := true (* Remove any type-ahead. *) fun flushInput () = case TextIO.canInput(TextIO.stdIn, 1) of SOME 1 => (TextIO.inputN(TextIO.stdIn, 1); flushInput()) | _ => () val () = flushInput () val () = exitLoop := false (* Save the stack on entry. If we execute any code with debugging enabled while we're in the debugger we could change this. *) val () = currentStack := getStack() val () = case !currentStack of hd :: _ => let val (funName, {file, startLine, ...}) = debugLocation hd in printSourceLine("", file, startLine, funName, false) end | [] => () (* Shouldn't happen. *) val compositeNameSpace = (* Compose any debugEnv with the global environment. Create a new temporary environment to contain any bindings made within the shell. They are discarded when we continue from the break-point. Previously, bindings were made in the global environment but that is problematic. It is possible to capture local types in the bindings which could actually be different at the next breakpoint. *) let val fixTab = ProtectedTable.create() and sigTab = ProtectedTable.create() and valTab = ProtectedTable.create() and typTab = ProtectedTable.create() and fncTab = ProtectedTable.create() and strTab = ProtectedTable.create() (* The debugging environment depends on the currently selected stack frame. *) fun debugEnv() = debugNameSpace (List.nth(!currentStack, !debugLevel)) fun dolookup f t s = case ProtectedTable.lookup t s of NONE => (case f (debugEnv()) s of NONE => f globalNameSpace s | v => v) | v => v fun getAll f t () = ProtectedTable.all t () @ f (debugEnv()) () @ f globalNameSpace () in { lookupFix = dolookup #lookupFix fixTab, lookupSig = dolookup #lookupSig sigTab, lookupVal = dolookup #lookupVal valTab, lookupType = dolookup #lookupType typTab, lookupFunct = dolookup #lookupFunct fncTab, lookupStruct = dolookup #lookupStruct strTab, enterFix = ProtectedTable.enter fixTab, enterSig = ProtectedTable.enter sigTab, enterVal = ProtectedTable.enter valTab, enterType = ProtectedTable.enter typTab, enterFunct = ProtectedTable.enter fncTab, enterStruct = ProtectedTable.enter strTab, allFix = getAll #allFix fixTab, allSig = getAll #allSig sigTab, allVal = getAll #allVal valTab, allType = getAll #allType typTab, allFunct = getAll #allFunct fncTab, allStruct = getAll #allStruct strTab } end in topLevel { isDebug = true, nameSpace = compositeNameSpace, exitLoop = fn _ => ! exitLoop, exitOnError = false, isInteractive = true, (* Don't enable debugging for anything run within the debug level. *) startExec = fn () => (), endExec = fn () => () } (* If we type control-C to the debugger we exit it and raise Interrupt within the debuggee without re-enabling any breakpoints. *) handle exn => (inDebugger := false; raise exn); inDebugger := false; setCallBacks(); (* Re-enable debugging. *) (* If this was continueWithEx raise the exception. *) case ! debugExPacket of NONE => () | SOME exn => (debugExPacket := NONE; raise exn) end in (* Normal, non-debugging top-level loop. *) fun shell () = let val argList = CommandLine.arguments() fun switchOption option = List.exists(fn s => s = option) argList (* Generate mark-up in IDE code when printing if the option has been given on the command line. *) val () = useMarkupInOutput := switchOption "--with-markup" val exitOnError = switchOption"--error-exit" val interactive = switchOption "-i" orelse let open TextIO OS open StreamIO TextPrimIO IO val s = getInstream stdIn val (r, v) = getReader s val RD { ioDesc, ...} = r in setInstream(stdIn, mkInstream(r,v)); case ioDesc of SOME io => (kind io = Kind.tty handle SysErr _ => false) | _ => false end in topLevel { isDebug = false, nameSpace = globalNameSpace, exitLoop = fn _ => false, isInteractive = interactive, exitOnError = exitOnError, startExec = setCallBacks, endExec = clearCallBacks } end structure Debug = struct (* Functions that are only relevant when called from the debugger. These check the debugging state using getCurrentStack which raises an exception if we're not in the debugger. *) (* "step" causes the debugger to be entered on the next call. "stepOver" enters the debugger on the next call when the stack is no larger than it is at present. "stepOut" enters the debugger on the next call when the stack is smaller than it is at present. *) fun step () = let val _ = getCurrentStack() in stepDebug := true; stepDepth := ~1; exitLoop := true end and stepOver() = let val stack = getCurrentStack() in stepDebug := true; stepDepth := List.length stack; exitLoop := true end and stepOut() = let val stack = getCurrentStack() in stepDebug := true; stepDepth := List.length stack - 1; exitLoop := true end and continue () = let val _ = getCurrentStack() in stepDebug := false; stepDepth := ~1; exitLoop := true end and continueWithEx exn = let val _ = getCurrentStack() in stepDebug := false; stepDepth := ~1; exitLoop := true; debugExPacket := SOME exn end (* Stack traversal. *) fun up () = let val stack = getCurrentStack() in if !debugLevel < List.length stack -1 then let val _ = debugLevel := !debugLevel + 1; val (funName, {startLine, file, ...}) = debugLocation(List.nth(stack, !debugLevel)) in printSourceLine("", file, startLine, funName, false) end else TextIO.print "Top of stack.\n" end and down () = let val stack = getCurrentStack() in if !debugLevel = 0 then TextIO.print "Bottom of stack.\n" else let val () = debugLevel := !debugLevel - 1; val (funName, {startLine, file, ...}) = debugLocation(List.nth(stack, !debugLevel)) in printSourceLine("", file, startLine, funName, false) end end (* Just print the functions without any other context. *) fun stack () : unit = let fun printTrace(d, n) = let val (funName, {file, startLine, ...}) = debugLocation d (* If this is the current level prefix it with > *) val prefix = if n = !debugLevel then "> " else " " in printSourceLine(prefix, file, startLine, funName, true); n+1 end in ignore (List.foldl printTrace 0 (getCurrentStack())) end local fun printVal v = prettyPrintWithOptionalMarkup(TextIO.print, !lineLength) (NameSpace.Values.printWithType(v, FixedInt.fromInt(!printDepth), SOME globalNameSpace)) fun printStack (stack: debugState) = List.app (fn (_,v) => printVal v) (#allVal (debugNameSpace stack) ()) in (* Print all variables at the current level. *) fun variables() = printStack (List.nth(getCurrentStack(), !debugLevel)) (* Print all the levels. *) and dump() = let fun printLevel stack = let val (funName, _) = debugLocation stack in TextIO.print(concat["Function ", funName, ":"]); printStack stack; TextIO.print "\n" end in List.app printLevel (getCurrentStack()) end (* Print local variables at the current level. *) and locals() = let val stack = List.nth(getCurrentStack(), !debugLevel) in List.app (fn (_,v) => printVal v) (#allVal (debugLocalNameSpace stack) ()) end end (* Functions to adjust tracing and breakpointing. May be called either within or outside the debugger. *) fun trace b = tracing := b fun breakAt (file, line) = if checkLineBreak(file, line) then () (* Already there. *) else lineBreakPoints := (file, line) :: ! lineBreakPoints fun clearAt (file, line) = let fun findBreak [] = (TextIO.print "No such breakpoint.\n"; []) | findBreak ((f, l) :: rest) = if l = line andalso f = file then rest else (f, l) :: findBreak rest in lineBreakPoints := findBreak (! lineBreakPoints) end fun breakIn name = if checkFnBreak true name then () (* Already there. *) else fnBreakPoints := name :: ! fnBreakPoints fun clearIn name = let fun findBreak [] = (TextIO.print "No such breakpoint.\n"; []) | findBreak (n :: rest) = if name = n then rest else n :: findBreak rest in fnBreakPoints := findBreak (! fnBreakPoints) end fun breakEx exn = if checkExnBreak exn then () (* Already there. *) else exBreakPoints := getExnId exn :: ! exBreakPoints fun clearEx exn = let val exnId = getExnId exn fun findBreak [] = (TextIO.print "No such breakpoint.\n"; []) | findBreak (n :: rest) = if exnId = n then rest else n :: findBreak rest in exBreakPoints := findBreak (! exBreakPoints) end end end structure CodeTree = struct open PolyML.CodeTree (* Add options to the code-generation phase. *) val genCode = fn (code, numLocals) => let open Bootstrap Bootstrap.Universal val compilerOut = prettyPrintWithOptionalMarkup(TextIO.print, !lineLength) in genCode(code, [ tagInject compilerOutputTag compilerOut, tagInject maxInlineSizeTag (FixedInt.fromInt(! maxInlineSize)), tagInject codetreeTag (! codetree), tagInject icodeTag (! icode), tagInject lowlevelOptimiseTag (! lowlevelOptimise), tagInject assemblyCodeTag (! assemblyCode), tagInject codetreeAfterOptTag (! codetreeAfterOpt) ], numLocals) end end (* Original print_depth etc functions. *) fun timing b = Compiler.timing := b and print_depth i = Compiler.printDepth := i and error_depth i = Compiler.errorDepth := i and line_length i = Compiler.lineLength := i (* Legacy exception_trace. *) structure Exception = struct open Exception fun exception_trace f = f() (* Backwards compatibility *) end (* Include it in the PolyML structure for backwards compatibility. *) val exception_trace = Exception.exception_trace local val systemProfile : int -> (int * string) list = RunCall.rtsCallFull1 "PolyProfiling" fun printProfile profRes = let (* Sort in ascending order. *) val sorted = quickSort (fn (a, _) => fn (b, _) => a <= b) profRes fun doPrint (count, name) = let val cPrint = Int.toString count val prefix = CharVector.tabulate(Int.max(0, 10-size cPrint), fn _ => #" ") in TextIO.output(TextIO.stdOut, concat[prefix, cPrint, " ", name, "\n"]) end val total = List.foldl (fn ((c,_),s) => c+s) 0 profRes in List.app doPrint sorted; if total = 0 then () else TextIO.print(concat["Total ", Int.toString total, "\n"]) end in structure Profiling = struct datatype profileMode = ProfileTime (* old mode 1 *) | ProfileAllocations (* old mode 2 *) | ProfileLongIntEmulation (* old mode 3 - No longer used*) | ProfileTimeThisThread (* old mode 6 *) | ProfileMutexContention fun profileStream (stream: (int * string) list -> unit) mode f arg = let (* Control profiling. This may raise Fail if profiling is turned on when it is already on or if there is insufficient memory. *) val code = case mode of ProfileTime => 1 | ProfileAllocations => 2 | ProfileLongIntEmulation => 3 | ProfileTimeThisThread => 6 | ProfileMutexContention => 7 val _ = systemProfile code (* Discard the result *) val result = f arg handle exn => (stream(systemProfile 0); PolyML.Exception.reraise exn) in stream(systemProfile 0); result end fun profile mode f arg = profileStream printProfile mode f arg (* Live data profiles show the current state. We need to run the GC to produce the counts. *) datatype profileDataMode = ProfileLiveData | ProfileLiveMutableData fun profileDataStream(stream: (int * string) list -> unit) mode = let val code = case mode of ProfileLiveData => 4 | ProfileLiveMutableData => 5 val _ = systemProfile code (* Discard the result *) val () = PolyML.fullGC() in stream(systemProfile 0) end val profileData = profileDataStream printProfile end end (* Saving and loading state. *) local val polySpecificGeneralCall = RunCall.rtsCallFull2 "PolySpecificGeneral" fun polySpecificGeneral(code: int, arg:'a):'b = RunCall.unsafeCast(polySpecificGeneralCall(RunCall.unsafeCast(code, arg))) in structure SaveState = struct local val getOS: int = LibrarySupport.getOSType() fun loadMod (args: string): Universal.universal list = polySpecificGeneral (32, args) and systemDir(): string = polySpecificGeneral (34, ()) in fun loadModuleBasic (fileName: string): Universal.universal list = (* If there is a path separator use the name and don't search further. *) if OS.Path.dir fileName <> "" then loadMod fileName else let (* Path elements are separated by semicolons in Windows but colons in Unix. *) val sepInPathList = if getOS = 1 then #";" else #":" val pathList = case OS.Process.getEnv "POLYMODPATH" of NONE => [] | SOME s => String.fields (fn ch => ch = sepInPathList) s fun findFile [] = NONE | findFile (hd::tl) = (* Try actually loading the file. That way we really check we have a module. *) SOME(loadMod (OS.Path.joinDirFile{dir=hd, file=fileName})) handle Fail _ => findFile tl | OS.SysErr _ => findFile tl in case findFile pathList of SOME l => l (* Found *) | NONE => let val sysDir = systemDir() val inSysDir = if sysDir = "" then NONE else findFile[sysDir] in case inSysDir of SOME l => l | NONE => raise Fail("Unable to find module ``" ^ fileName ^ "''") end end end fun saveChild(f: string, depth: int): unit = polySpecificGeneral (20, (f, depth)) fun saveState f = saveChild (f, 0); fun showHierarchy(): string list = polySpecificGeneral (22, ()) fun renameParent{ child: string, newParent: string }: unit = polySpecificGeneral (23, (child, newParent)) fun showParent(child: string): string option = polySpecificGeneral (24, child) fun loadState (f: string): unit = polySpecificGeneral (21, f) and loadHierarchy (s: string list): unit = (* Load hierarchy takes a list of file names in order with the parents before the children. It's easier for the RTS if this is reversed. *) polySpecificGeneral (33, List.rev s) (* Module loading and storing. *) structure Tags = struct val structureTag: (string * PolyML.NameSpace.Structures.structureVal) Universal.tag = Universal.tag() val functorTag: (string * PolyML.NameSpace.Functors.functorVal) Universal.tag = Universal.tag() val signatureTag: (string * PolyML.NameSpace.Signatures.signatureVal) Universal.tag = Universal.tag() val valueTag: (string * PolyML.NameSpace.Values.value) Universal.tag = Universal.tag() val typeTag: (string * PolyML.NameSpace.TypeConstrs.typeConstr) Universal.tag = Universal.tag() val fixityTag: (string * PolyML.NameSpace.Infixes.fixity) Universal.tag = Universal.tag() val startupTag: (unit -> unit) Universal.tag = Universal.tag() end val saveModuleBasic: string * Universal.universal list -> unit = fn (_, nil) => raise Fail "Cannot create an empty module" | args => polySpecificGeneral (31, args) fun saveModule(s, {structs, functors, sigs, onStartup}) = let fun dolookup (look, tag, kind) s = case look globalNameSpace s of SOME v => Universal.tagInject tag (s, v) | NONE => raise Fail (concat[kind, " ", s, " has not been declared"]) val structVals = map (dolookup(#lookupStruct, Tags.structureTag, "Structure")) structs val functorVals = map (dolookup(#lookupFunct, Tags.functorTag, "Functor")) functors val sigVals = map (dolookup(#lookupSig, Tags.signatureTag, "Signature")) sigs val startVal = case onStartup of SOME f => [Universal.tagInject Tags.startupTag f] | NONE => [] in saveModuleBasic(s, structVals @ functorVals @ sigVals @ startVal) end fun loadModule s = let val ulist = loadModuleBasic s (* Find and run the start-up function. If it raises an exception we don't go further. *) val startFn = List.find (Universal.tagIs Tags.startupTag) ulist val () = case startFn of SOME f => (Universal.tagProject Tags.startupTag f) () | NONE => () fun extract (tag:'a Universal.tag): Universal.universal list -> 'a list = List.mapPartial( fn s => if Universal.tagIs tag s then SOME(Universal.tagProject tag s) else NONE) in (* Add the entries and print them in the same way as top-level bindings. *) printAndEnter(! printInAlphabeticalOrder, globalNameSpace, TextIO.print, !printDepth) { fixes = extract Tags.fixityTag ulist, values = extract Tags.valueTag ulist, structures = extract Tags.structureTag ulist, signatures = extract Tags.signatureTag ulist, functors = extract Tags.functorTag ulist, types = extract Tags.typeTag ulist } end end end val loadModule = SaveState.loadModule end end (* PolyML. *); polyml-5.7.1/basis/NetHostDB.sml0000644000175000017500000001601213204034553015407 0ustar daviddavid(* Title: Standard Basis Library: NetHostDB and NetDB Structures and Signatures Author: David Matthews Copyright David Matthews 2000, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature NET_HOST_DB = sig eqtype in_addr eqtype addr_family type entry val name : entry -> string val aliases : entry -> string list val addrType : entry -> addr_family val addr : entry -> in_addr val addrs : entry -> in_addr list val getByName : string -> entry option val getByAddr : in_addr -> entry option val getHostName : unit -> string val scan : (char, 'a) StringCvt.reader -> (in_addr, 'a) StringCvt.reader val fromString : string -> in_addr option val toString : in_addr -> string end; local fun power2 0 = 1: LargeInt.int | power2 n = 2 * power2(n-1) val p32 = power2 32 val p24 = power2 24 fun scan getc src = let (* Read a number as either decimal, hex or octal up to the given limit. Stops when it reaches the limit or finds a character it doesn't recognise. *) fun readNum base acc limit src = let fun addDigit d src = let val n = case acc of SOME(n, _) => n | NONE => 0 val next = n * LargeInt.fromInt base + LargeInt.fromInt d in (* If we are below the limit we can continue. *) if next < limit then readNum base (SOME(next, src)) limit src else acc end in case getc src of NONE => acc | SOME(ch, src') => if Char.isDigit ch andalso ch < Char.chr(Char.ord #"0" + base) then addDigit (Char.ord ch - Char.ord #"0") src' else if base = 16 andalso (ch >= #"A" andalso ch <= #"F") then addDigit (Char.ord ch - Char.ord #"A" + 10) src' else if base = 16 andalso (ch >= #"a" andalso ch <= #"f") then addDigit (Char.ord ch - Char.ord #"a" + 10) src' else acc end (* Read a number. If it starts with 0x or 0X treat it as hex, otherwise if it starts with 0 treat as octal otherwise decimal. *) fun scanNum limit src = case getc src of NONE => NONE | SOME (#"0", src') => ( case getc src' of SOME(ch, src'') => if ch = #"x" orelse ch = #"X" then ( (* If it is invalid we have still read a zero so return that. *) case readNum 16 NONE limit src'' of NONE => SOME(0, src') | res => res ) else (* Octal - include the zero. *) readNum 8 NONE limit src | NONE => SOME(0, src') (* Just the zero. *) ) | SOME (_, _) => (* Treat it as a decimal number. *) readNum 10 NONE limit src fun scanAddr src limit i acc = case scanNum limit src of NONE => NONE | SOME(n, src') => let val res = acc*256 + n (* This is the accumulated result. *) in (* If the result is more than 24 bits or we've read all the sections we're finished. *) if res >= p24 orelse i = 1 then SOME(res, src') else case getc src' of SOME (#".", src'') => ( (* The limit for sections other than the first is 256. *) case scanAddr src'' 256 (i-1) res of NONE => SOME(res, src') (* Return what we had. *) | r => r ) | _ => SOME(res, src') (* Return what we've got. *) end in scanAddr src p32 4 (* Four sections in all. *) 0 end (* scan *) in structure NetHostDB :> NET_HOST_DB = struct type in_addr = LargeInt.int and addr_family = int type entry = string * string list * addr_family * in_addr list val name: entry -> string = #1 val aliases : entry -> string list = #2 val addrType : entry -> addr_family = #3 val addrs : entry -> in_addr list = #4 (* Addr returns the first address in the list. There should always be at least one entry. *) fun addr e = case addrs e of a :: _ => a | [] => raise OS.SysErr("No address returned", NONE) val getHostName: unit -> string = RunCall.rtsCallFull0 "PolyNetworkGetHostName" (* The RTS calls return either zero or the address of the entry. *) datatype result = AResult of entry | NoResult local val doCall: string -> result = RunCall.rtsCallFull1 "PolyNetworkGetHostByName" in fun getByName s = case doCall s of AResult r => SOME r | NoResult => NONE end local val doCall: LargeInt.int -> result = RunCall.rtsCallFull1 "PolyNetworkGetHostByAddr" in fun getByAddr n = case doCall n of AResult r => SOME r | NoResult => NONE end val scan = scan and fromString = StringCvt.scanString scan fun toString (n: in_addr) = let fun pr n i = (if i > 0 then pr (n div 256) (i-1) ^ "." else "") ^ LargeInt.toString (n mod 256) in pr n 3 (* Always generate 4 numbers. *) end end; end; local (* Install the pretty printer for NetHostDB.in_addr. This must be done outside the structure if we use opaque matching. *) fun printAddr _ _ x = PolyML.PrettyString(NetHostDB.toString x) in val () = PolyML.addPrettyPrinter printAddr end polyml-5.7.1/basis/BasicStreamIO.sml0000644000175000017500000010234413204034553016246 0ustar daviddavid(* Title: Standard Basis Library: StreamIO functor Copyright David C.J. Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor BasicStreamIO( structure PrimIO : PRIM_IO structure Vector : MONO_VECTOR structure Array : MONO_ARRAY structure VectorSlice: MONO_VECTOR_SLICE structure ArraySlice: MONO_ARRAY_SLICE sharing type PrimIO.elem = Vector.elem = Array.elem = VectorSlice.elem = ArraySlice.elem sharing type PrimIO.vector = Vector.vector = Array.vector = VectorSlice.vector = ArraySlice.vector sharing type PrimIO.array = Array.array = ArraySlice.array sharing type PrimIO.vector_slice = VectorSlice.slice = ArraySlice.vector_slice sharing type PrimIO.array_slice = ArraySlice.slice val someElem : PrimIO.elem ): sig include STREAM_IO (* Note: This is non-standard but enables us to define the derived BinIO and TextIO structures more efficiently. *) val outputVec: outstream * PrimIO.vector_slice -> unit end = struct open IO type vector = Vector.vector type elem = PrimIO.elem datatype reader = datatype PrimIO.reader datatype writer = datatype PrimIO.writer type array = Array.array type pos = PrimIO.pos exception Interrupt = RunCall.Interrupt (* Called after any exception in the lower level reader or writer to map any exception other than Io into Io. *) fun mapToIo (io as Io _, _, _) = io | mapToIo (Interrupt, _, _) = Interrupt | mapToIo (nonIo, name, caller) = Io { name = name, function = caller, cause = nonIo } val emptyVec = Vector.fromList [] (* Represents end-of-stream. *) datatype instream = (* The usual state of a stream: We may have to read from the reader before we have any real data or we may have already read. *) Uncommitted of { state: streamState ref, locker: Thread.Mutex.mutex } (* If we know we have unread input we can return this as the stream. That allows part of the stream to be read without locking. This is an optimisation. *) | Committed of { vec: vector, offset: int, rest: instream, startPos: pos option } and streamState = Truncated (* The stream has been closed or truncated. *) | HaveRead of (* A vector has been read from the stream. If the vector has size zero this is treated as EOF. startPos is the position when the vector was read. *) {vec: vector, rest: streamState ref, startPos: pos option } | ToRead of reader (* We have not yet closed or truncated the stream. *) and outstream = OutStream of { wrtr: writer, buffType : IO.buffer_mode ref, buf: array, bufp: int ref, isTerm: bool ref, locker: Thread.Mutex.mutex } datatype out_pos = OutPos of outstream * pos (* Create a new stream from the vector and the reader. *) fun mkInstream (r, v: vector): instream = let val readRest = Uncommitted { state = ref (ToRead r), locker = Thread.Mutex.mutex() } (* If the vector is non-empty the first entry is as though the vector had been read otherwise it's just the reader. *) in if Vector.length v = 0 then readRest else Committed { vec = v, offset = 0, rest = readRest, startPos = NONE } end local fun input' (ref (HaveRead {vec, rest, ...}), locker) = let (* TODO: If we have already read further on we could convert these entries to Committed. *) in (vec, Uncommitted{ state = rest, locker = locker }) end | input' (s as ref Truncated, locker) = (* Truncated: return end-of-stream *) (emptyVec, Uncommitted{ state = s, locker = locker }) | input' (state as ref(readMore as ToRead (RD {chunkSize, readVec = SOME readVec, getPos, ...})), locker) = let (* We've not yet read this. Try reading from the reader. *) val startPos = case getPos of SOME g => SOME(g()) | NONE => NONE val data = readVec chunkSize (* Create a reference to the reader which will be updated by the next read. The ref is shared between the existing stream and the new one so reading on either adds to the same chain. *) val nextLink = ref readMore val nextChunk = HaveRead {vec = data, rest = nextLink, startPos = startPos} in (* Extend the stream by adding this vector to the list of chunks read so far. *) state := nextChunk; (* Return a new stream which continues reading. *) (data, Uncommitted { state = nextLink, locker = locker }) end | input' (ref(ToRead(RD{name, ...})), _) = (* readVec missing in reader. *) raise Io { name = name, function = "input", cause = BlockingNotSupported } fun inputNList' (ref (HaveRead {vec, rest, startPos}), locker, n) = let val vecLength = Vector.length vec in if vecLength = 0 (* End-of-stream: Return next in list. *) then ([vec], Uncommitted{ state = rest, locker = locker }) else if n < vecLength then (* We can use what's already been read. The stream we return allows us to read the rest without blocking. *) ([VectorSlice.vector(VectorSlice.slice(vec, 0, SOME n))], Committed{ vec = vec, offset = n, startPos = startPos, rest = Uncommitted{ state = rest, locker = locker} }) else if n = vecLength then (* Exactly uses up the buffer. New stream state is the next entry. *) ([vec], Uncommitted{ state = rest, locker = locker}) else (* Have to get the next item *) let val (nextVecs, nextStream) = inputNList' (rest, locker, n - vecLength) in (vec :: nextVecs, nextStream) end end | inputNList' (s as ref Truncated, locker, _) = (* Truncated: return end-of-stream *) ([emptyVec], Uncommitted{ state = s, locker = locker }) | inputNList' (f, locker, n) = (* ToRead *) let val (vec, f') = input' (f, locker) in if Vector.length vec = 0 then ([vec], f') (* Truncated or end-of-file. *) else inputNList' (f, locker, n) (* Reread *) end in fun input (Uncommitted { state, locker }) = LibraryIOSupport.protect locker input' (state, locker) | input (Committed { vec, offset, rest, ... }) = (* This stream was produced from re-reading a stream that already had data. We can return the result without the overhead of locking. *) (VectorSlice.vector(VectorSlice.slice(vec, offset, NONE)), rest) fun inputNList (Uncommitted { state, locker }, n) = LibraryIOSupport.protect locker inputNList' (state, locker, n) | inputNList (Committed { vec, offset, rest, startPos }, n) = let val vecLength = Vector.length vec in if vecLength = 0 (* End-of-stream: Return next in list. *) then ([vec], rest) else if n < vecLength - offset then (* We can use what's already been read. Next entry is a committed stream that returns the part we haven't yet used. *) ([VectorSlice.vector(VectorSlice.slice(vec, offset, SOME n))], Committed{ vec = vec, offset = offset+n, rest = rest, startPos = startPos }) else if n = vecLength - offset then (* Exactly uses up the buffer. New stream state is the next entry. *) ([VectorSlice.vector(VectorSlice.slice(vec, offset, NONE))], rest) else (* Have to get the next item *) let val (nextVecs, nextStream) = inputNList (rest, n - (vecLength - offset)) in (VectorSlice.vector(VectorSlice.slice(vec, offset, NONE)) :: nextVecs, nextStream) end end fun inputN (f, n) = if n < 0 then raise Size else if n = 0 (* Defined to return the empty vector and f *) then (emptyVec, f) else let val (vecs, f') = inputNList (f, n) in (Vector.concat vecs, f') end (* Read the whole of the remaining input until we get an EOF. *) fun inputAll f = let (* Find out the size of the file. *) fun getSize(n, f) = let val (v, f') = input f val vSize = Vector.length v in if vSize = 0 then n (* Reached EOF. *) else getSize (n + vSize, f') end in (* Read the whole file. *) inputN(f, getSize(0,f)) end (* Note a crucial difference between inputN and input1. Because input1 does not return a stream if it detects EOF it cannot advance beyond a temporary EOF in a stream. *) fun input1 (Committed { vec, offset, rest, startPos }) = let val vecSize = Vector.length vec in if vecSize = 0 then NONE else if vecSize = offset+1 then SOME(Vector.sub(vec, offset), rest) else SOME(Vector.sub(vec, offset), Committed{ vec = vec, offset = offset+1, rest = rest, startPos = startPos }) end | input1 f = let val (s, f') = inputN (f, 1) in if Vector.length s = 0 then NONE else SOME(Vector.sub(s, 0), f') end end local fun doClose (ref (HaveRead {rest, ...})) = doClose rest | doClose (ref Truncated) = () | doClose (state as ref (ToRead (RD{close, ...}))) = (state := Truncated; close()) in fun closeIn (Uncommitted { state, locker }) = LibraryIOSupport.protect locker doClose state | closeIn (Committed { rest, ...}) = closeIn rest end local (* Return the reader. *) fun getReader' (ref (HaveRead {rest, ...})) = getReader' rest | getReader' (ref Truncated) = raise Io { name = "", function = "getReader", cause = ClosedStream } | getReader' (state as ref (ToRead reader)) = (state := Truncated; reader) in fun getReader'' (Uncommitted { state, locker }) = LibraryIOSupport.protect locker getReader' state | getReader'' (Committed { rest, ... }) = getReader'' rest fun getReader f = let val reader = getReader'' f val (allInput, _) = inputAll f in (* Return the reader along with buffered input. It's not clear what to do if there are EOFs in the stream. The book says the result is the result of inputAll which takes everything up to the first EOF. *) (reader, allInput) end end local (* Check that the stream is not terminated and then convert a file position plus a vector offset into a file position. In particular, if the reader has converted CRNL into NL we don't have a simple relationship between elements and file offsets. *) fun findPosition'(startPos, offset, HaveRead {rest=ref rest, ...}) = findPosition'(startPos, offset, rest) | findPosition'(_, _, Truncated) = raise Io { name = "", function = "filePosIn", cause = ClosedStream } | findPosition'(startPos, offset, ToRead (RD { getPos = SOME getPos, setPos = SOME setPos, readVec = SOME readVec, ...})) = if offset = 0 then startPos (* Easy *) else (* When we read this vector we recorded the file position of the beginning only. To find the file position of the particular element we actually need to read the portion of the input up to that element and find out the file position at that point. *) let val savep = getPos() (* Save current position. *) (* Move to the point where we read the vector. *) val () = setPos startPos; (* Call readVec until we have read the required number of elements. N.B. Ganser & Reppy has a bug here. There is no guarantee that readVec n will actually return n elements so it's unsafe to assume that it will move the file pointer by n elements. *) fun doRead n = let val read = Vector.length(readVec n) in if read = n orelse read = 0 (* Error? *) then () else doRead (n - read) end (* Read the offset number of elements. *) val () = doRead offset; (* Record the position after actually reading the elements. *) val position = getPos(); in setPos savep; (* Restore. *) position end | findPosition'(_, _, ToRead _) = raise Io { name = "", function = "filePosIn", cause = RandomAccessNotSupported } fun findPosition(startPos, offset, Committed { rest, ... }) = findPosition(startPos, offset, rest) | findPosition(startPos, offset, Uncommitted { state = ref state, locker }) = LibraryIOSupport.protect locker findPosition' (startPos, offset, state) fun filePosIn' (HaveRead {rest=ref rest, startPos = SOME startPos, ...}) = findPosition'(startPos, 0, rest) | filePosIn' (HaveRead {startPos = NONE, ...}) = raise Io { name = "", function = "filePosIn", cause = RandomAccessNotSupported } | filePosIn' Truncated = raise Io { name = "", function = "filePosIn", cause = ClosedStream } | filePosIn' (ToRead(RD { getPos = SOME getPos, ...})) = getPos() | filePosIn' (ToRead _) = raise Io { name = "", function = "filePosIn", cause = RandomAccessNotSupported } in (* Find the first entry to get the position. *) fun filePosIn (Uncommitted { state = ref state, locker }) = LibraryIOSupport.protect locker filePosIn' state | filePosIn (Committed { offset, rest, startPos = SOME startPos, ... }) = findPosition(startPos, offset, rest) | filePosIn (Committed { startPos = NONE, ... }) = (* This can occur either because the reader doesn't support getPos or because the position is within the initial vector passed to mkInstream. *) raise Io { name = "", function = "filePosIn", cause = RandomAccessNotSupported } end local fun doCanInput' (ref (HaveRead {vec, rest, ...}), locker, n, k) = let val vecLength = Vector.length vec in if vecLength = 0 then SOME k else if vecLength >= n then SOME (k+n) else doCanInput'(rest, locker, n-vecLength, k+vecLength) end | doCanInput' (ref Truncated, _, _, k) = SOME k | doCanInput' (state as ref(readMore as ToRead (RD {chunkSize, readVecNB = SOME readVecNB, getPos, ...})), locker, n, k) = let val startPos = case getPos of SOME g => SOME(g()) | NONE => NONE in (* Read a block full. This will avoid us creating lots of small items in the list if there is actually plenty of input available. *) case readVecNB chunkSize of NONE => (* Reading these would block but we may already have some input. *) if k = 0 then NONE else SOME k | SOME data => let (* We have to record this in the stream. *) val nextLink = ref readMore val nextChunk = HaveRead {vec = data, rest = nextLink, startPos = startPos} in state := nextChunk; (* Check whether this has satisfied the request. *) doCanInput'(state, locker, n, k) end end | doCanInput' (ref(ToRead(RD {name, ...})), _, _, _) = (* readVecNB missing in reader. *) raise Io { name = name, function = "canInput", cause = NonblockingNotSupported } fun doCanInput (Uncommitted { state, locker }, n, k) = LibraryIOSupport.protect locker doCanInput' (state, locker, n, k) | doCanInput (Committed { vec, rest, ... }, n, k) = let val vecLength = Vector.length vec in if vecLength = 0 then SOME k (* Reached EOF. *) else if vecLength >= n then SOME (k + n) (* Have already read enough. *) else doCanInput(rest, n-vecLength, k+vecLength) end in fun canInput(f, n) = if n < 0 then raise Size else doCanInput(f, n, 0) end (* Look for end-of-stream. Could be defined more directly but it probably isn't worth it. *) fun endOfStream f = let val (v, _) = input f in Vector.length v = 0 end (* OUTPUT *) (* In order to be able to flush and close the streams when we exit we need to keep a list of the output streams. One unfortunate side-effect of this is that the RTS can't garbage-collect output streams since there will always be a reference to a stream until it is explicitly closed. It could be worth using a weak reference here but that requires either a separate thread or some way of registering a function to be called to check the list. *) val ostreamLock = Thread.Mutex.mutex() (* Use a no-overwrite ref for the list of streams. This ensures that the ref will not be overwritten if we load a saved state. *) val outputStreamList: outstream list ref = LibrarySupport.noOverwriteRef nil; fun protectOut f (outs as OutStream{locker, ...}) = LibraryIOSupport.protect locker f outs fun mkOutstream'(wrtr as WR{chunkSize, ...}, buffMode) = let open Thread.Mutex val strm = OutStream{wrtr=wrtr, buffType=ref buffMode, buf=Array.array(chunkSize, someElem), isTerm=ref false, bufp=ref 0, locker=Thread.Mutex.mutex()} in (* Add it to the list. *) outputStreamList := strm :: ! outputStreamList; strm end val mkOutstream = LibraryIOSupport.protect ostreamLock mkOutstream' fun getBufferMode(OutStream{buffType=ref b, ...}) = b local (* Flush anything from the buffer. *) fun flushOut'(OutStream{buf, bufp=bufp as ref endBuf, wrtr=wrtr as WR{name, ...}, ...}) = if endBuf = 0 then () (* Nothing buffered *) else case wrtr of WR{writeArr=SOME wa, ...} => let fun flushBuff n = let val written = wa(ArraySlice.slice(buf, n, SOME(endBuf-n))) handle exn => raise mapToIo(exn, name, "flushOut") in if written+n = endBuf then () else flushBuff(written+n) end in (* Set the buffer to empty BEFORE writing anything. If we get an asynchronous interrupt (ctrl-C) we want to lose data in preference to duplicating it. *) bufp := 0; flushBuff 0 end | _ => raise Io { name = name, function = "flushOut", cause = BlockingNotSupported } (* Terminate a stream either because it has been closed or because we have extracted the underlying writer. *) fun terminateStream'(OutStream{isTerm=ref true, ...}) = () (* Nothing to do. *) | terminateStream'(f as OutStream{isTerm, ...}) = let (* outstream is not an equality type but we can get the desired effect by comparing the isTerm references for equality (N.B. NOT their contents). *) fun removeThis(OutStream{isTerm=isTerm', ...}) = isTerm' <> isTerm open Thread.Mutex in isTerm := true; lock ostreamLock; outputStreamList := List.filter removeThis (!outputStreamList); unlock ostreamLock; flushOut' f end; (* Close the stream. It is safe to repeat this and we may need to close the writer even if the stream is terminated. *) fun closeOut'(f as OutStream{wrtr=WR{close, ...}, ...}) = ( terminateStream' f; close() (* Close the underlying writer. *) ) (* Flush the stream, terminate it and return the underlying writer. *) fun getWriter'(OutStream{wrtr=WR{name, ...}, isTerm=ref true, ...}) = (* Already terminated. *) raise Io { name = name, function = "getWriter", cause = ClosedStream } | getWriter'(f as OutStream{buffType, wrtr, ...}) = ( terminateStream' f; (wrtr, !buffType) ) (* Set the buffer mode, possibly flushing the buffer as it does. *) fun setBufferMode' newBuff (f as OutStream{buffType, bufp, ...}) = (* Question: What if the stream is terminated? *) ( if newBuff = NO_BUF andalso !bufp <> 0 then (* Flush pending output. *) (* Switching from block to line buffering does not flush. *) flushOut' f else (); buffType := newBuff ) (* Internal function: Write a vector directly to the writer. It only returns when the vector has been completely written. "output" should work if the writer only provides writeArr so we may have to use that if writeVec isn't there. *) (* FOR TESTING: Put writeArr first. *) fun writeVec(OutStream{wrtr=WR{writeVec=SOME wv, name, ...}, ...}, v, i, len) = let fun forceOut p = let val written = wv(VectorSlice.slice(v, p+i, SOME(len-p))) handle exn => raise mapToIo(exn, name, "output") in if written+p = len then () else forceOut(written+p) end in forceOut 0 end | writeVec(OutStream{wrtr=WR{writeArr=SOME wa, name, ...}, ...}, v, i, len) = let val buffSize = 10 val buff = Array.array(buffSize, someElem); fun forceOut p = let val toCopy = Int.min(len-p, buffSize) val () = ArraySlice.copyVec{src=VectorSlice.slice(v, p+i, SOME toCopy), dst=buff, di=0} val written = wa(ArraySlice.slice(buff, 0, SOME toCopy)) handle exn => raise mapToIo(exn, name, "output") in if written+p = len then () else forceOut(written+p) end in forceOut 0 end | writeVec(OutStream{wrtr=WR{name, ...}, ...}, _, _, _) = raise Io { name = name, function = "output", cause = BlockingNotSupported } (* Internal function. Write a vector to the stream using the start and length provided. *) fun outputVector _ (OutStream{isTerm=ref true, wrtr=WR{name, ...}, ...}) = raise Io { name = name, function = "output", cause = ClosedStream } | outputVector (v, start, vecLen) (f as OutStream{buffType, buf, bufp, ...}) = let val buffLen = Array.length buf fun arrayCopyVec{src: Vector.vector, si: int, len: int, dst: Array.array, di: int} = ArraySlice.copyVec{src=VectorSlice.slice(src, si, SOME len), dst=dst, di=di}; fun addVecToBuff () = if vecLen < buffLen - !bufp then (* Room in the buffer. *) ( arrayCopyVec{src=v, si=start, len=vecLen, dst=buf, di= !bufp}; bufp := !bufp + vecLen ) else let val buffSpace = buffLen - !bufp in (* Copy as much of the vector as will fit *) arrayCopyVec{src=v, si=start, len=buffSpace, dst=buf, di= !bufp}; bufp := !bufp+buffSpace; (* TODO: Flushing the buffer ensures that all the buffer contents have been written. We don't actually need that, what we need is for enough to have been written that we have space in the buffer for the rest of the vector. *) flushOut' f; (* Write it out. *) (* Copy the rest of the vector. *) arrayCopyVec{src=v, si=start+buffSpace, len=vecLen-buffSpace, dst=buf, di=0}; bufp := vecLen-buffSpace end (* addVecToBuff *) in if vecLen > buffLen then (* If the vector is too large to put in the buffer we're going to have to write something out. To reduce copying we simply flush the buffer and write the vector directly. *) (flushOut' f; writeVec(f, v, start, vecLen)) else (* Try copying to the buffer. *) if !buffType = IO.NO_BUF then (* Write it directly *) writeVec(f, v, start, vecLen) else (* Block or line buffering - add it to the buffer. Line buffering is treated as block buffering on binary streams and handled at the higher level for text streams. *) addVecToBuff() end (* outputVec *) (* This could be defined in terms of outputVector but this is likely to be much more efficient if we are buffering. *) fun output1' _ (OutStream{isTerm=ref true, wrtr=WR{name, ...}, ...}) = raise Io { name = name, function = "output1", cause = ClosedStream } | output1' c (f as OutStream{buffType, buf, bufp, ...}) = if !buffType = IO.NO_BUF then writeVec(f, Vector.fromList[c], 0, 1) else (* Line or block buffering. *) ( Array.update(buf, !bufp, c); bufp := !bufp + 1; if !bufp = Array.length buf then flushOut' f else () ) fun getPosOut'(f as OutStream{wrtr=WR{name, getPos=SOME getPos, ...}, ...}) = ( flushOut' f; OutPos(f, getPos()) handle exn => raise mapToIo(exn, name, "getPosOut") ) | getPosOut'(OutStream{wrtr=WR{name, ...}, ...}) = raise Io { name = name, function = "getPosOut", cause = RandomAccessNotSupported } fun setPosOut' p (f as OutStream{wrtr=WR{setPos=SOME setPos, ...}, ...}) = ( flushOut' f; setPos p; f ) | setPosOut' _ (OutStream{wrtr=WR{name, ...}, ...}) = raise Io { name = name, function = "setPosOut", cause = RandomAccessNotSupported } in fun output1(f, c) = protectOut (output1' c) f fun output(f, v) = protectOut (outputVector(v, 0, Vector.length v)) f val flushOut = protectOut flushOut' val closeOut = protectOut closeOut' val getWriter = protectOut getWriter' fun setBufferMode(f, n) = protectOut (setBufferMode' n) f (* Exported function to output part of a vector. Non-standard. *) fun outputVec(f, slice) = let val (v, i, len) = VectorSlice.base slice in protectOut (outputVector(v, i, len)) f end val getPosOut = protectOut getPosOut' fun setPosOut(OutPos(f, p)) = protectOut (setPosOut' p) f end fun filePosOut(OutPos(_, p)) = p (* We need to set up a function to flush the streams when we exit. This has to be set up for every session so we set up an entry function, which is persistent, to do it. *) local fun closeAll () = (* Close all the streams. closeOut removes the streams from the list so we should end up with outputStreamList being nil. *) List.foldl (fn (s, ()) => closeOut s handle _ => ()) () (! outputStreamList) fun doOnEntry () = OS.Process.atExit closeAll in val () = PolyML.onEntry doOnEntry; val () = doOnEntry() (* Set it up for this session as well. *) end local open PolyML fun printWithName(s, name) = PolyML.PrettyString(String.concat[s, "-\"", String.toString name, "\""]) fun prettyIn depth a (Committed { rest, ...}) = prettyIn depth a rest | prettyIn _ _ (Uncommitted { state = ref streamState, ...}) = let fun prettyState Truncated = PolyML.PrettyString("Instream-truncated") | prettyState (HaveRead{ rest = ref rest, ...}) = prettyState rest | prettyState (ToRead(RD{name, ...})) = printWithName("Instream", name) in prettyState streamState end fun prettyOut _ _ (OutStream { wrtr = WR { name, ...}, ...}) = printWithName("Outstream", name) in val () = addPrettyPrinter prettyIn val () = addPrettyPrinter prettyOut end end; (* Define the StreamIO functor in terms of BasicStreamIO to filter out outputVec. *) (* This is non-standard. According to G&R 2004 StreamIO does not take the slice structures as args. *) functor StreamIO( structure PrimIO : PRIM_IO structure Vector : MONO_VECTOR structure Array : MONO_ARRAY structure VectorSlice: MONO_VECTOR_SLICE structure ArraySlice: MONO_ARRAY_SLICE sharing type PrimIO.elem = Vector.elem = Array.elem = VectorSlice.elem = ArraySlice.elem sharing type PrimIO.vector = Vector.vector = Array.vector = VectorSlice.vector = ArraySlice.vector sharing type PrimIO.array = Array.array = ArraySlice.array sharing type PrimIO.vector_slice = VectorSlice.slice = ArraySlice.vector_slice sharing type PrimIO.array_slice = ArraySlice.slice val someElem : PrimIO.elem ): STREAM_IO = struct structure StreamIO = BasicStreamIO(structure PrimIO = PrimIO and Vector = Vector and Array = Array and VectorSlice = VectorSlice and ArraySlice = ArraySlice val someElem = someElem) open StreamIO end; polyml-5.7.1/basis/ForeignMemory.sml0000644000175000017500000002251413204034553016403 0ustar daviddavid(* Title: Foreign Function Interface: memory operations Author: David Matthews Copyright David Matthews 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ForeignMemory :> sig eqtype volatileRef val volatileRef: SysWord.word -> volatileRef val setVolatileRef: volatileRef * SysWord.word -> unit val getVolatileRef: volatileRef -> SysWord.word eqtype voidStar val voidStar2Sysword: voidStar -> SysWord.word val sysWord2VoidStar: SysWord.word -> voidStar val null: voidStar val ++ : voidStar * word -> voidStar val -- : voidStar * word -> voidStar (* Remember an address except across loads. *) val memoise: ('a -> voidStar) ->'a -> unit -> voidStar exception Memory (* malloc - allocate memory. N.B. argument is the number of bytes. Raises Memory exception if it cannot allocate. *) val malloc: word -> voidStar (* free - free allocated memory. *) val free: voidStar -> unit val get8: voidStar * Word.word -> Word8.word val get16: voidStar * Word.word -> Word.word val get32: voidStar * Word.word -> Word32.word val get64: voidStar * Word.word -> SysWord.word val set8: voidStar * Word.word * Word8.word -> unit val set16: voidStar * Word.word * Word.word -> unit val set32: voidStar * Word.word * Word32.word -> unit val set64: voidStar * Word.word * SysWord.word -> unit val getFloat: voidStar * Word.word -> real val getDouble: voidStar * Word.word -> real val setFloat: voidStar * Word.word * real -> unit val setDouble: voidStar * Word.word * real -> unit val getAddress: voidStar * Word.word -> voidStar val setAddress: voidStar * Word.word * voidStar -> unit end = struct open ForeignConstants open ForeignMemory exception Foreign = RunCall.Foreign fun id x = x (* Internal utility function. *) fun alignUp(s, align) = Word.andb(s + align-0w1, ~ align) (* Both volatileRef and SysWord.word are the ADDRESSes of the actual value. *) type volatileRef = word ref val memMove: SysWord.word * SysWord.word * word * word* word -> unit = RunCall.moveBytes fun volatileRef init = let (* Allocate a single word marked as mutable, weak, no-overwrite, byte. *) (* A weak byte cell is cleared to zero when it is read in either from the executable or from a saved state. Using the no-overwrite bit ensures that if it is contained in the executable it won't be changed by loading a saved state but there's a problem if it is contained in a parent state. Then loading a child state will clear it because we reload all the parents when we load a child. *) val v = RunCall.allocateWordMemory(0w1, 0wx69, 0w0) (* Copy the SysWord into it. *) val () = memMove(init, RunCall.unsafeCast v, 0w0, 0w0, wordSize) in v end fun setVolatileRef(v, i) = memMove(i, RunCall.unsafeCast v, 0w0, 0w0, wordSize) fun getVolatileRef var = let (* Allocate a single word marked as mutable, byte. *) val v = RunCall.allocateByteMemory(0w1, 0wx41) val () = memMove(RunCall.unsafeCast var, v, 0w0, 0w0, wordSize) val () = RunCall.clearMutableBit v in v end type voidStar = SysWord.word val voidStar2Sysword = id and sysWord2VoidStar = id (* Exported conversions *) val null: voidStar = 0w0 infix 6 ++ -- fun s ++ w = s + SysWord.fromLarge(Word.toLarge w) and s -- w = s - SysWord.fromLarge(Word.toLarge w) fun 'a memoise(f: 'a -> voidStar) (a: 'a) : unit -> voidStar = let (* Initialise to zero. That means the function won't be executed until we actually want the result. *) val v = volatileRef 0w0 in (* If we've reloaded the volatile ref it will have been reset to zero. We need to execute the function and set it. *) fn () => (case getVolatileRef v of 0w0 => let val r = f a in setVolatileRef(v, r); r end | r => r) end exception Memory (* Get and set addresses. This is a bit messy because it has to compile on 64-bits as well as 32-bits. *) val getAddress: voidStar * Word.word -> voidStar = if wordSize = 0w4 then Word32.toLargeWord o get32 else get64 val setAddress: voidStar * Word.word * voidStar -> unit = if wordSize = 0w4 then fn (s, i, v) => set32(s, i, Word32.fromLargeWord v) else set64 local local val ffiGeneralCall = RunCall.rtsCallFull2 "PolyFFIGeneral" in fun ffiGeneral(code: int, arg: 'a): 'b = RunCall.unsafeCast(ffiGeneralCall(RunCall.unsafeCast(code, arg))) end fun systemMalloc (s: word): voidStar = ffiGeneral (0, s) (*fun systemFree (s: voidStar): unit = ffiGeneral (1, s)*) (* Simple malloc/free implementation to reduce the number of RTS calls needed. *) val lock = Thread.Mutex.mutex() (* It would be possible to chain the free list in the C memory itself. For the moment we don't do that. The free list is the list of chunks ordered by increasing address. That allows us to merge adjacent free blocks. *) val freeList: {address: SysWord.word, size: word} list ref = LibrarySupport.noOverwriteRef nil (* Clear it once on entry. *) val () = PolyML.onEntry (fn _ => freeList := nil) (* Assume that if we align to the maximum of these we're all right. *) val maxAlign = Word.max(#align saDouble, Word.max(#align saPointer, #align saSint64)) (* We need a length word in each object we allocate but we need enough padding to align the result. *) val overhead = alignUp(wordSize, maxAlign) val chunkSize = 0w4096 (* Configure this. *) fun addFree(entry, []) = [entry] | addFree(entry, this :: rest) = if #address entry < #address this then ( if #address entry ++ #size entry = #address this then (* New entry is immediately before old one - merge. *) {address= #address entry, size = #size entry + #size this } :: rest else entry :: this :: rest ) else if #address this ++ #size this = #address entry then (* New entry is immediately after this - merge. Continue because it could also merge with an entry after this as well. *) addFree({address= #address this, size= #size entry + #size this}, rest) else this :: addFree(entry, rest) (* Search on. *) (* Find free space. *) fun findFree (_, []) = (NONE, []) | findFree (space, (this as {size, address}) :: tl) = if space = size then (SOME address, tl) else if space < size then (SOME address, {size=size-space, address=address ++ space} :: tl) else let val (res, rest) = findFree(space, tl) in (res, this :: rest) end fun freeMem s = let val addr = s -- overhead val size = Word.fromLarge(SysWord.toLarge(getAddress(addr, 0w0))) in freeList := addFree({address=addr, size=size}, !freeList) end fun allocMem s = let val space = alignUp(s + overhead, maxAlign) val (found, newList) = findFree(space, !freeList) in case found of NONE => let (* Need more memory *) val requestSpace = Word.max(chunkSize, space) val newSpace = systemMalloc requestSpace val _ = newSpace <> null orelse raise Memory in (* Add the space to the free list in the appropriate place. *) freeList := addFree({address=newSpace, size=requestSpace}, !freeList); allocMem s (* Repeat - should succeed now. *) end | SOME address => let val () = freeList := newList (* Update the free list *) (* Store the length in the first word. *) val () = setAddress(address, 0w0, SysWord.fromLarge(Word.toLarge space)) in address ++ overhead end end in val malloc: word -> voidStar = ThreadLib.protect lock allocMem fun free v = if v = null then () else ThreadLib.protect lock freeMem v end end; polyml-5.7.1/basis/Byte.sml0000644000175000017500000000430613204034553014523 0ustar daviddavid(* Title: Standard Basis Library: Byte Structure and signature Author: David Matthews Copyright David Matthews 1999, 2005, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA under the terms of that licence. *) signature BYTE = sig val byteToChar : Word8.word -> char val charToByte : char -> Word8.word val bytesToString : Word8Vector.vector -> string val stringToBytes : string -> Word8Vector.vector val unpackStringVec : Word8VectorSlice.slice -> string val unpackString : Word8ArraySlice.slice -> string val packString : Word8Array.array * int * Substring.substring -> unit end; structure Byte: BYTE = struct (* Chars and Word8.word values are both tagged integers in the range 0..255. *) fun byteToChar (w: Word8.word): char = RunCall.unsafeCast w fun charToByte (c: char) : Word8.word = RunCall.unsafeCast c (* Conversion between Word8Vector.vector and string is just a cast. *) val bytesToString = LibrarySupport.w8vectorToString and stringToBytes = LibrarySupport.w8vectorFromString fun unpackStringVec slice : string = bytesToString(Word8VectorSlice.vector slice) fun unpackString slice : string = bytesToString(Word8ArraySlice.vector slice) fun packString(array: Word8Array.array, i, s: substring) = let val (str, offset, size) = Substring.base s val slice = Word8VectorSlice.slice(stringToBytes str, offset, SOME size) in Word8ArraySlice.copyVec{src=slice, dst=array, di=i} end end; polyml-5.7.1/basis/PolyMLException.sml0000644000175000017500000000764213204034553016661 0ustar daviddavid(* Title: PolyML.Exception structure Author: David C. J. Matthews Copyright (c) 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Add PolyML.Exception to the PolyML structure. *) (* N.B. The effect of compiling this file is to extend the PolyML structure. *) structure PolyML = struct open PolyML local (* This datatype is used in VALUE_OPS and FinalPolyML to define the format of a location in an exception packet. It includes the possibility that the location information may be missing. *) datatype RuntimeLocation = NoLocation | SomeLocation of (* file: *) string * (*startLine:*) FixedInt.int * (*startPosition:*) FixedInt.int * (*endLine:*) FixedInt.int * (*endPosition:*) FixedInt.int in structure Exception = struct (* Backwards compatibility. *) fun traceException(f: unit->'a, _: string list * exn -> 'a): 'a = f() fun exceptionLocation(exn: exn): location option = case RunCall.loadWordFromImmutable(exn, 0w3) of NoLocation => NONE | SomeLocation(file, startLine, startPosition, endLine, endPosition) => SOME { file=file, startLine=startLine, startPosition=startPosition, endLine=endLine, endPosition=endPosition } local (* If we use ML "raise" to raise an exception the location will be the location of the raise. If we have a handler that reraises an exception it is often better to preserve the original location. We need to add a function that raises an exception without adding its own location. *) open PolyML.CodeTree val functionCode = mkFunction (mkRaise(mkLoadArgument 0), 1, "raiseFn", [], 0) (* N.B. genCode is redefined in FinalPolyML without the options argument. *) val compiledCode = genCode(functionCode, [], 0) () val raiseFn = case evalue compiledCode of SOME c => c | NONE => raise Bind in (* Raise an exception using a given location rather than the value in the packet. *) fun raiseWithLocation(ex: exn, {file, startLine, startPosition, endLine, endPosition}: location) = let open RunCall fun getEntry n = RunCall.loadWordFromImmutable(ex, n) val packet = (getEntry 0w0, getEntry 0w1, getEntry 0w2, SomeLocation(file, startLine, startPosition, endLine, endPosition)) in RunCall.unsafeCast raiseFn packet end end (* Re-raise an exception that has been handled preserving the location. *) fun reraise exn = case exceptionLocation exn of NONE => raise exn | SOME location => raiseWithLocation (exn, location) end end (* For backwards compatibility include these in the PolyML structure. *) val exceptionLocation = Exception.exceptionLocation and raiseWithLocation = Exception.raiseWithLocation end; polyml-5.7.1/basis/ForeignConstants.sml0000644000175000017500000000503713204034553017110 0ustar daviddavid(* Title: Foreign Function Interface: constants Author: David Matthews Copyright David Matthews 2015, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is defined separately so that the values are computed and available as constants for the Foreign structure. *) structure ForeignConstants = struct local val ffiGeneralCall = RunCall.rtsCallFull2 "PolyFFIGeneral" fun ffiGeneral(code: int, arg: 'a): 'b = RunCall.unsafeCast(ffiGeneralCall(RunCall.unsafeCast(code, arg))) in local fun getSizeAndAlign (n: int) = let val ffiType = ffiGeneral (52, n) val (size: word, align: word, _, _) = (* Just get the first two fields. *) ffiGeneral (53, ffiType) in {size=size, align=align} end in val saVoid = getSizeAndAlign 0 and saUint8 = getSizeAndAlign 1 and saSint8 = getSizeAndAlign 2 and saUint16 = getSizeAndAlign 3 and saSint16 = getSizeAndAlign 4 and saUint32 = getSizeAndAlign 5 and saSint32 = getSizeAndAlign 6 and saUint64 = getSizeAndAlign 7 and saSint64 = getSizeAndAlign 8 and saFloat = getSizeAndAlign 9 and saDouble = getSizeAndAlign 10 and saPointer = getSizeAndAlign 11 and saUChar = getSizeAndAlign 12 and saSChar = getSizeAndAlign 13 and saUShort = getSizeAndAlign 14 and saSShort = getSizeAndAlign 15 and saUint = getSizeAndAlign 16 and saSint = getSizeAndAlign 17 and saUlong = getSizeAndAlign 18 and saSlong = getSizeAndAlign 19 end val bigEndian : bool = LibrarySupport.bigEndian and wordSize : word = RunCall.bytesPerWord (* Minimum argument size. *) val ffiMinArgSize: Word.word = ffiGeneral (51, 15) end end; polyml-5.7.1/basis/Int31.sml0000644000175000017500000000146313204034553014517 0ustar daviddavid(* Title: Standard Basis Library: Int31 structure Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Int31 = FixedInt; polyml-5.7.1/basis/WordSignature.sml0000644000175000017500000000462513204034553016421 0ustar daviddavid(* Title: Standard Basis Library: WORD Signature Copyright David Matthews 1999, 2005, 2012, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This depends on there being suitable definitions of both Word and LargeWord structures. We have basic definitions of those before we define this. *) signature WORD = sig eqtype word val wordSize : int val toLarge : word -> LargeWord.word val toLargeX : word -> LargeWord.word val toLargeWord : word -> LargeWord.word val toLargeWordX : word -> LargeWord.word val fromLarge : LargeWord.word -> word val fromLargeWord : LargeWord.word -> word val toLargeInt : word -> LargeInt.int val toLargeIntX : word -> LargeInt.int val fromLargeInt : LargeInt.int -> word val toInt : word -> Int.int val toIntX : word -> Int.int val fromInt : Int.int -> word val orb : (word * word) -> word val xorb : (word * word) -> word val andb : (word * word) -> word val notb : word -> word val << : (word * Word.word) -> word val >> : (word * Word.word) -> word val ~>> : (word * Word.word) -> word val + : (word * word) -> word val - : (word * word) -> word val * : (word * word) -> word val div : (word * word) -> word val mod : (word * word) -> word val ~ : word -> word val compare : (word * word) -> General.order val > : (word * word) -> bool val < : (word * word) -> bool val >= : (word * word) -> bool val <= : (word * word) -> bool val min : (word * word) -> word val max : (word * word) -> word val fmt : StringCvt.radix -> word -> string val toString : word -> string val fromString : string -> word option val scan : StringCvt.radix -> (char, 'a) StringCvt.reader -> (word, 'a) StringCvt.reader end; polyml-5.7.1/basis/Bool.sml0000644000175000017500000000530513204034553014513 0ustar daviddavid(* Title: Standard Basis Library: Bool Structure Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R status: Minor change to signature. Done. *) signature BOOL = sig datatype bool = datatype bool val not : bool -> bool val fromString : string -> bool option val scan : (char, 'a) StringCvt.reader -> (bool, 'a) StringCvt.reader val toString : bool -> string end; structure Bool : BOOL = struct open Bool (* Defined in Initialise. Contains bool datatype and "not". *) local val explode_true = Text.String.explode "true" and explode_false = Text.String.explode "false" in fun scan (getc: (char, 'a) StringCvt.reader) (str: 'a) : (bool * 'a) option = let (* Skip leading white space. *) val strm = StringCvt.skipWS getc str (* Test for a match between a reader and a list of lower case chars. *) fun matchNC _ strm [] = (strm, true )(* Reached end of list - succeeded *) | matchNC getc strm (ch::rest) = case getc strm of NONE => (strm, false) (* Couldn't read it - fail. *) | SOME(ch', strm') => if ch = Char.toLower ch' (* N.B. ch is already lower case. *) then matchNC getc strm' rest else (strm', false) in (* If it matches "true" or "false" we have a valid match, otherwise return NONE. *) case matchNC getc strm explode_true of (strm', true) => SOME(true, strm') | _ => ( case matchNC getc strm explode_false of (strm', true) => SOME(false, strm') | _ => NONE ) end end (* Convert from a string. *) (* TODO: More efficient conversion? *) val fromString = StringCvt.scanString scan (* Convert to a string. *) fun toString true = "true" | toString false = "false" end; polyml-5.7.1/basis/IEEEReal.sml0000644000175000017500000002135613204034553015137 0ustar daviddavid(* Title: Standard Basis Library: IEEEReal Structure. Author: David Matthews Copyright David Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated. *) structure IEEEReal: IEEE_REAL = struct exception Unordered datatype real_order = LESS | EQUAL | GREATER | UNORDERED datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO local val setRoundCall: int -> int = RunCall.rtsCallFast1 "PolySetRoundingMode" in fun setRoundingMode (r: rounding_mode) : unit = let (* Although the datatype values are almost certainly integers it's much safer to map them to known values here. *) (* The Basis library documentation does not define what exception is raised here in the event of an error. convReal in the Real structure expects this to be Fail so will need to be changed if any other exception is raised. *) val rv = case r of TO_NEAREST => 0 | TO_NEGINF => 1 | TO_POSINF => 2 | TO_ZERO => 3 in if setRoundCall rv < 0 then raise Fail "setRoundingMode failed" else () end end; local val getRoundCall : unit -> int = RunCall.rtsCallFast1 "PolyGetRoundingMode" in fun getRoundingMode () = case getRoundCall () of 0 => TO_NEAREST | 1 => TO_NEGINF | 2 => TO_POSINF | 3 => TO_ZERO | _ => raise Fail "getRoundingMode failed" end type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } local fun dodigits [] = "" | dodigits (a::b) = Int.toString a ^ dodigits b in fun toString {class, sign=true, digits, exp} = (* Sign bit set *) "~" ^ toString {class=class, sign=false, digits=digits, exp=exp} | toString {class=NAN, ...} = "nan" | toString {class=INF, ...} = "inf" | toString {class=ZERO, ...} = "0.0" | toString {digits, exp, ...} = (* NORMAL or SUBNORMAL *) "0." ^ dodigits digits ^ (if exp = 0 then "" else "E"^(Int.toString exp)) end fun 'a scan (getc: (char, 'a) StringCvt.reader) (src: 'a) : (decimal_approx *'a) option = let fun checkString (src, match: substring) = (* Check the string matches and return the rest of the input if it does. *) case Substring.getc match of NONE => (* Finished *) SOME src (* Return rest *) | SOME (ch, rest) => (case getc src of NONE => NONE | SOME (ch', src') => if ch = Char.toUpper ch' then checkString(src', rest) else NONE ) (* Return a list of digits. *) fun getdigits inp src = case getc src of NONE => (List.rev inp, src) | SOME(ch, src') => if ch >= #"0" andalso ch <= #"9" then getdigits ((Char.ord ch - Char.ord #"0") :: inp) src' else (List.rev inp, src) (* Return the signed exponent. If this doesn't represent a valid integer return NONE since we shouldn't take off the E. Int.scan accepts and removes leading space but we don't allow space here so return NONE if we find any. *) fun getExponent src = case getc src of NONE => NONE | SOME(ch, _) => if Char.isSpace ch then NONE else Int.scan StringCvt.DEC getc src fun readNumber sign (src: 'a): (decimal_approx *'a) option = case getc src of NONE => NONE | SOME (ch, _) => if ch >= #"0" andalso ch <= #"9" orelse ch = #"." then (* Digits or decimal. *) let (* Get the digits before the decimal point (if any) *) val (intPart, src2) = getdigits [] src (* Get the digits after the decimal point. If there is a decimal point with no digits after it we don't swallow the dp. *) val (decimals, src3) = case getc src2 of SOME (#".", src3a) => ( case getdigits [] src3a of ([], _) => ([], src2) | (digs, s) => (digs, s) ) | _=> ([], src2) (* Get the exponent, returning zero if it doesn't match. *) val (exponent, src4) = case getc src3 of NONE => (0, src3) | SOME (ch, src4a) => if ch = #"e" orelse ch = #"E" then ( case getExponent src4a of NONE => (0, src3) | SOME x => x ) else (0, src3) (* Trim leading zeros from the part before the decimal and trailing zeros from the part after. *) fun trimLeadingZeros [] = [] | trimLeadingZeros (0 :: l) = trimLeadingZeros l | trimLeadingZeros l = l val trimTrailingZeros = List.rev o trimLeadingZeros o List.rev val leading = trimLeadingZeros intPart val trailing = trimTrailingZeros decimals in (* If both the leading and trailing parts are empty the number is zero, except that if there were no digits at all we have a malformed number. *) case (intPart, decimals, leading, trailing) of ([], [], _, _) => NONE | (_, _, [], []) => SOME ({class=ZERO, sign=sign, digits=[], exp=0}, src4) | _ => SOME ({class=NORMAL, sign=sign, digits=List.@(leading, trailing), exp=exponent + List.length leading}, src4) end else ( (* Could be INFINITY, INF or NAN. Check INFINITY before INF. *) case checkString (src, Substring.full "INFINITY") of SOME src' => SOME ({class=INF, sign=sign, digits=[], exp=0}, src') | NONE => ( case checkString (src, Substring.full "INF") of SOME src' => SOME ({class=INF, sign=sign, digits=[], exp=0}, src') | NONE => ( case checkString (src, Substring.full "NAN") of SOME src' => SOME ({class=NAN, sign=sign, digits=[], exp=0}, src') | NONE => NONE ) ) ) in case getc src of NONE => NONE | SOME(ch, src') => if Char.isSpace ch (* Skip white space. *) then scan getc src' (* Recurse *) else if ch = #"+" then readNumber false src' (* Skip it *) else if ch = #"-" orelse ch = #"~" then readNumber true src' (* Skip it and ignore sign *) else readNumber false src end (* scan *) fun fromString (s: string): decimal_approx option = StringCvt.scanString scan s end; polyml-5.7.1/basis/LibraryIOSupport.sml0000644000175000017500000004077313204034553017061 0ustar daviddavid(* Title: Standard Basis Library: IO Support functions Copyright David C.J. Matthews 2000, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This function provides wrappers for the RTS file descriptors to construct TextPrimIO and BinPrimIO readers and writers. It is used both from the TextIO and BinIO structures and also from the Windows and Unix structures to wrap up pipes. *) structure LibraryIOSupport: sig val wrapInFileDescr : { fd : OS.IO.iodesc, name : string, initBlkMode : bool } -> TextPrimIO.reader val wrapOutFileDescr : { fd : OS.IO.iodesc, name : string, appendMode : bool, initBlkMode : bool, chunkSize : int } -> TextPrimIO.writer val wrapBinInFileDescr : { fd : OS.IO.iodesc, name : string, initBlkMode : bool } -> BinPrimIO.reader val wrapBinOutFileDescr : { fd : OS.IO.iodesc, name : string, appendMode : bool, initBlkMode : bool, chunkSize : int } -> BinPrimIO.writer val readBinVector: OS.IO.iodesc * int -> Word8Vector.vector val readBinArray: OS.IO.iodesc * Word8ArraySlice.slice -> int val writeBinVec: OS.IO.iodesc * Word8VectorSlice.slice -> int val writeBinArray: OS.IO.iodesc * Word8ArraySlice.slice -> int val nonBlocking : ('a->'b) -> 'a ->'b option val protect: Thread.Mutex.mutex -> ('a -> 'b) -> 'a -> 'b end = struct (* open IO *) type address = LibrarySupport.address type fileDescr = OS.IO.iodesc (* Called after any exception in the lower level reader or writer to map any exception other than Io into Io. *) local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_close (strm: fileDescr): unit = doIo(7, strm, 0) and sys_block_in(strm: fileDescr): unit = doIo(27, strm, 0) and sys_block_out(strm: fileDescr): unit = doIo(29, strm, 0) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_read_text (strm: fileDescr, vil: address*word*word): int = doIo(8, strm, vil) fun sys_write_text (strm: fileDescr, vil: address*word*word): int = doIo(11, strm, vil) fun sys_read_bin (strm: fileDescr, vil: address*word*word): int = doIo(9, strm, vil) fun sys_write_bin (strm: fileDescr, vil: address*word*word): int = doIo(12, strm, vil) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_read_string (strm: fileDescr, len: int): string = doIo(10, strm, len) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun readBinVector (strm: fileDescr, len: int): Word8Vector.vector = doIo(26, strm, len) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_buffsize (strm: fileDescr): int = doIo(15, strm, 0) and sys_can_input(strm: fileDescr): int = doIo(16, strm, 0) and sys_can_output(strm: fileDescr): int = doIo(28, strm, 0) and sys_avail(strm: fileDescr): int = doIo(17, strm, 0) and sys_get_iodesc(strm: fileDescr): int = doIo(30, strm, 0) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_pos(strm: fileDescr): Position.int = doIo(18, strm, 0) (* N.B. large int *) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_end_pos(strm: fileDescr): Position.int = doIo(20, strm, 0) (* N.B. large int *) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_set_pos(strm: fileDescr, p: Position.int): unit = (doIo(19, strm, p); ()) (* N.B. large int *) end local (* Find out the error which will be generated if a stream in non-blocking mode would block. *) val eAgain = OS.syserror "EAGAIN" and eWouldBlock = OS.syserror "EWOULDBLOCK" and eInProgress = OS.syserror "EINPROGRESS" and wsaWouldBlock = OS.syserror "WSAEWOULDBLOCK" and wsaInProgress = OS.syserror "WSAEINPROGRESS" in (* If evaluating the function raises EAGAIN or EWOULDBLOCK we return NONE otherwise if it succeeds return SOME result. Pass other exceptions back to the caller. *) fun nonBlocking f arg = SOME(f arg) handle exn as OS.SysErr(_, SOME e) => if (case eAgain of SOME again => e = again | NONE => false) then NONE else if (case eWouldBlock of SOME wouldBlock => e = wouldBlock | NONE => false) then NONE else if (case eInProgress of SOME inProgress => e = inProgress | NONE => false) then NONE else if (case wsaWouldBlock of SOME wouldBlock => e = wouldBlock | NONE => false) then NONE else if (case wsaInProgress of SOME inProgress => e = inProgress | NONE => false) then NONE else raise exn end val wordSize : word = LibrarySupport.wordSize; (* Find out if random access is permitted and return the appropriate values. *) fun getRandAccessFns n = let val isRandomAccess = ((sys_get_pos n; true) handle OS.SysErr _ => false) val getPos = if isRandomAccess then SOME(fn () => sys_get_pos n) else NONE val setPos = if isRandomAccess then SOME(fn p => sys_set_pos(n, p)) else NONE val endPos = if isRandomAccess then SOME(fn () => sys_end_pos n) else NONE in (getPos, setPos, endPos) end fun writeBinArray (n: fileDescr, slice: Word8ArraySlice.slice): int = let val (buf, i, len) = Word8ArraySlice.base slice val LibrarySupport.Word8Array.Array(_, v) = buf val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len in sys_write_bin(n, (v, iW, lenW)) end fun readBinArray (n: fileDescr, slice: Word8ArraySlice.slice): int = let val (buf, i, len) = Word8ArraySlice.base slice val LibrarySupport.Word8Array.Array(_, v) = buf val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len val iW = LibrarySupport.unsignedShortOrRaiseSubscript i in sys_read_bin(n, (v, iW, lenW)) end (* Write out a string using the underlying call. Note that we have to add the size of a word to the offsets to skip the length word. The underlying call deals with the special case of a single character string where the "string" is actually the character itself. *) fun writeBinVec (n: fileDescr, slice: Word8VectorSlice.slice): int = let val (buf, i, len) = Word8VectorSlice.base slice val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len in sys_write_bin(n, (LibrarySupport.w8vectorAsAddress buf, iW+wordSize, lenW)) end (* Create the primitive IO functions and add the higher layers. For all file descriptors other than standard input we look at the stream to see if we can do non-blocking input and/or random access. Standard input, though is persistent and so we have to take a more restrictive view. *) fun wrapInFileDescr{ fd, name, initBlkMode } = let fun readArray (slice: CharArraySlice.slice): int = let val (buf, i, len) = CharArraySlice.base slice val LibrarySupport.CharArray.Array(_, v) = buf val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len in sys_read_text(fd, (v, iW, lenW)) end fun readVector l = sys_read_string(fd, l) (* If we have opened the stream in non-blocking mode readVec and readArray will raise an exception if they would block. We have to handle that. The blocking functions can be constructed using block_in but that should be done by augmentReader. *) val (readVec, readArr, readVecNB, readArrNB) = if initBlkMode then (SOME readVector, SOME readArray, NONE, NONE) else (NONE, NONE, SOME(nonBlocking readVector), SOME(nonBlocking readArray)) (* Don't allow random access on stdIn. The reason is that we create stdIn when we compile TextIO yet this stream is persistent (unlike every other stream). *) val (getPos, setPos, endPos) = if sys_get_iodesc fd <= 2 then (NONE, NONE, NONE) else getRandAccessFns fd (* Unlike the other functions "avail" is a function returning an option, not an optional function. *) fun avail () = let (* If we get an exception or a negative number return NONE. *) val v = sys_avail fd handle OS.SysErr _ => ~1 in if v >= 0 then SOME v else NONE end val textPrimRd = TextPrimIO.RD { name = name, chunkSize = sys_get_buffsize fd, readVec = readVec, readArr = readArr, readVecNB = readVecNB, readArrNB = readArrNB, block = SOME(fn () => sys_block_in fd), canInput = SOME (fn () => sys_can_input fd > 0), avail = avail, getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = getPos, close = fn () => sys_close fd, ioDesc = (SOME fd) : OS.IO.iodesc option } in TextPrimIO.augmentReader textPrimRd end fun wrapOutFileDescr {fd, name, appendMode, initBlkMode, chunkSize} = let fun writeArray (slice: CharArraySlice.slice): int = let val (buf, i, len) = CharArraySlice.base slice val LibrarySupport.CharArray.Array(_, v) = buf val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len in sys_write_text(fd, (v, iW, lenW)) end (* Write out a string using the underlying call. Note that we have to add the size of a word to the offsets to skip the length word. The underlying call deals with the special case of a single character string where the "string" is actually the character itself. *) fun writeVector (slice: CharVectorSlice.slice): int = let val (buf, i, len) = CharVectorSlice.base slice val v = LibrarySupport.stringAsAddress buf val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lenW = LibrarySupport.unsignedShortOrRaiseSubscript len in sys_write_text(fd, (v, iW+wordSize, lenW)) end (* Set up the writers depending on whether the stream is in non-blocking mode or not. *) val (writeVec, writeArr, writeVecNB, writeArrNB) = if initBlkMode then (SOME writeVector, SOME writeArray, NONE, NONE) else (NONE, NONE, SOME(nonBlocking writeVector), SOME(nonBlocking writeArray)) (* Random access is provided if getPos works except that we don't allow it for standard output and standard error at all. *) val (getPos, setPos, endPos) = if sys_get_iodesc fd <= 2 then (NONE, NONE, NONE) else getRandAccessFns fd (* If we have opened the stream for append we will always write to the end of the stream so setPos won't work. *) val setPos = if appendMode then NONE else setPos val textPrimWr = TextPrimIO.WR { name = name, chunkSize = chunkSize, writeVec = writeVec, writeArr = writeArr, writeVecNB = writeVecNB, writeArrNB = writeArrNB, block = SOME(fn () => sys_block_out fd), canOutput = SOME(fn () => sys_can_output fd > 0), getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = getPos, close = fn () => sys_close fd, ioDesc = (SOME fd) : OS.IO.iodesc option } in TextPrimIO.augmentWriter textPrimWr end fun wrapBinInFileDescr{fd, name, initBlkMode} = let fun readVector l = readBinVector(fd, l) and readArray b = readBinArray(fd, b) (* If we have opened the stream in non-blocking mode readVec and readArray will raise an exception if they would block. We have to handle that. The blocking functions can be constructed using block_in but that should be done by augmentReader. *) val (readVec, readArr, readVecNB, readArrNB) = if initBlkMode then (SOME readVector, SOME readArray, NONE, NONE) else (NONE, NONE, SOME(nonBlocking readVector), SOME(nonBlocking readArray)) (* Random access is provided if getPos works. *) val (getPos, setPos, endPos) = getRandAccessFns fd (* Unlike the other functions "avail" is a function returning an option, not an optional function. *) fun avail () = let (* If we get an exception or a negative number return NONE. *) val v = sys_avail fd handle OS.SysErr _ => ~1 in if v >= 0 then SOME v else NONE end val binPrimRd = BinPrimIO.RD { name = name, chunkSize = sys_get_buffsize fd, readVec = readVec, readArr = readArr, readVecNB = readVecNB, readArrNB = readArrNB, block = SOME(fn () => sys_block_in fd), canInput = SOME(fn() =>sys_can_input fd > 0), avail = avail, getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = getPos, close = fn() => sys_close fd, ioDesc = SOME fd } in BinPrimIO.augmentReader binPrimRd end fun wrapBinOutFileDescr{fd, name, appendMode, initBlkMode, chunkSize} = let fun writeArray b = writeBinArray(fd, b) and writeVector b = writeBinVec(fd, b) (* Set up the writers depending on whether the stream is in non-blocking mode or not. *) val (writeVec, writeArr, writeVecNB, writeArrNB) = if initBlkMode then (SOME writeVector, SOME writeArray, NONE, NONE) else (NONE, NONE, SOME(nonBlocking writeVector), SOME(nonBlocking writeArray)) (* Random access is provided if getPos works. *) val (getPos, setPos, endPos) = getRandAccessFns fd (* If we have opened the stream for append we will always write to the end of the stream so setPos won't work. *) val setPos = if appendMode then NONE else setPos val binPrimWr = BinPrimIO.WR { name = name, chunkSize = chunkSize, writeVec = writeVec, writeArr = writeArr, writeVecNB = writeVecNB, writeArrNB = writeArrNB, block = SOME(fn () => sys_block_out fd), canOutput = SOME(fn () => sys_can_output fd > 0), getPos = getPos, setPos = setPos, endPos = endPos, verifyPos = getPos, close = fn () => sys_close fd, ioDesc = SOME fd } in BinPrimIO.augmentWriter binPrimWr end (* Many of the IO functions need a mutex so we include this here. This applies a function while a mutex is being held. *) val protect = ThreadLib.protect end; polyml-5.7.1/basis/IMPERATIVE_IO.sml0000644000175000017500000000375013204034553015656 0ustar daviddavid(* Title: Standard Basis Library: Imperative IO Signature Copyright David C.J. Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: checked, no change *) signature IMPERATIVE_IO = sig structure StreamIO : STREAM_IO type vector = StreamIO.vector type elem = StreamIO.elem type instream type outstream val input : instream -> vector val input1 : instream -> elem Option.option val inputN : instream * int -> vector val inputAll : instream -> vector val canInput : instream * int -> int Option.option val lookahead : instream -> elem Option.option val closeIn : instream -> unit val endOfStream : instream -> bool val output : outstream * vector -> unit val output1 : outstream * elem -> unit val flushOut : outstream -> unit val closeOut : outstream -> unit val mkInstream : StreamIO.instream -> instream val getInstream : instream -> StreamIO.instream val setInstream : instream * StreamIO.instream -> unit val mkOutstream : StreamIO.outstream -> outstream val getOutstream : outstream -> StreamIO.outstream val setOutstream : outstream * StreamIO.outstream -> unit val getPosOut : outstream -> StreamIO.out_pos val setPosOut : outstream * StreamIO.out_pos -> unit end; polyml-5.7.1/basis/IEEE_REAL.sml0000644000175000017500000000313113204034553015125 0ustar daviddavid(* Title: Standard Basis Library: IEEE_REAL Signature. Author: David Matthews Copyright David Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated. *) signature IEEE_REAL = sig exception Unordered datatype real_order = LESS | EQUAL | GREATER | UNORDERED datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO val setRoundingMode : rounding_mode -> unit val getRoundingMode : unit -> rounding_mode type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } val toString : decimal_approx -> string val scan : (char, 'a) StringCvt.reader -> (decimal_approx, 'a) StringCvt.reader val fromString : string -> decimal_approx option end; polyml-5.7.1/basis/MONO_ARRAY.sml0000644000175000017500000000414713204034553015331 0ustar daviddavid(* Title: Standard Basis Library: Mono_Array signature Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: updated. *) signature MONO_ARRAY = sig eqtype array type elem type vector val maxLen : int val array : (int * elem) -> array val fromList : elem list -> array val vector: array -> vector val tabulate : (int * (int -> elem)) -> array val length : array -> int val sub : (array * int) -> elem val update : (array * int * elem) -> unit val copy : {src : array, dst : array, di : int} -> unit val copyVec : {src : vector, dst : array, di : int} -> unit val appi : ((int * elem) -> unit) -> array -> unit val app : (elem -> unit) -> array -> unit val foldli : ((int * elem * 'b) -> 'b) -> 'b -> array -> 'b val foldri : ((int * elem * 'b) -> 'b) -> 'b -> array -> 'b val foldl : ((elem * 'b) -> 'b) -> 'b -> array -> 'b val foldr : ((elem * 'b) -> 'b) -> 'b -> array -> 'b val modifyi : ((int * elem) -> elem) -> array -> unit val modify : (elem -> elem) -> array -> unit val findi: (int * elem -> bool) -> array -> (int * elem) option val find: (elem -> bool) -> array -> elem option val exists: (elem -> bool) -> array -> bool val all: (elem -> bool) -> array -> bool val collate: (elem * elem -> order) -> array * array -> order end; polyml-5.7.1/basis/Socket.sml0000644000175000017500000006516313204034553015060 0ustar daviddavid(* Title: Standard Basis Library: Generic Sockets Author: David Matthews Copyright David Matthews 2000, 2005, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature SOCKET = sig type ('af,'sock_type) sock type 'af sock_addr type dgram type 'mode stream type passive type active structure AF : sig type addr_family = NetHostDB.addr_family val list : unit -> (string * addr_family) list val toString : addr_family -> string val fromString : string -> addr_family option end structure SOCK : sig eqtype sock_type val stream : sock_type val dgram : sock_type val list : unit -> (string * sock_type) list val toString : sock_type -> string val fromString : string -> sock_type option end structure Ctl : sig val getDEBUG : ('af, 'sock_type) sock -> bool val setDEBUG : ('af, 'sock_type) sock * bool -> unit val getREUSEADDR : ('af, 'sock_type) sock -> bool val setREUSEADDR : ('af, 'sock_type) sock * bool -> unit val getKEEPALIVE : ('af, 'sock_type) sock -> bool val setKEEPALIVE : ('af, 'sock_type) sock * bool -> unit val getDONTROUTE : ('af, 'sock_type) sock -> bool val setDONTROUTE : ('af, 'sock_type) sock * bool -> unit val getLINGER : ('af, 'sock_type) sock -> Time.time option val setLINGER : ('af, 'sock_type) sock * Time.time option -> unit val getBROADCAST : ('af, 'sock_type) sock -> bool val setBROADCAST : ('af, 'sock_type) sock * bool -> unit val getOOBINLINE : ('af, 'sock_type) sock -> bool val setOOBINLINE : ('af, 'sock_type) sock * bool -> unit val getSNDBUF : ('af, 'sock_type) sock -> int val setSNDBUF : ('af, 'sock_type) sock * int -> unit val getRCVBUF : ('af, 'sock_type) sock -> int val setRCVBUF : ('af, 'sock_type) sock * int -> unit val getTYPE : ('af, 'sock_type) sock -> SOCK.sock_type val getERROR : ('af, 'sock_type) sock -> bool val getPeerName : ('af, 'sock_type) sock -> 'af sock_addr val getSockName : ('af, 'sock_type) sock -> 'af sock_addr val getNREAD : ('af, 'sock_type) sock -> int val getATMARK : ('af, active stream) sock -> bool end val sameAddr : 'af sock_addr * 'af sock_addr -> bool val familyOfAddr : 'af sock_addr -> AF.addr_family val bind : ('af, 'sock_type) sock * 'af sock_addr -> unit val listen : ('af, passive stream) sock * int -> unit val accept : ('af, passive stream) sock -> ('af, active stream) sock * 'af sock_addr val acceptNB : ('af, passive stream) sock -> (('af, active stream) sock * 'af sock_addr) option val connect : ('af, 'sock_type) sock * 'af sock_addr -> unit val connectNB : ('af, 'sock_type) sock * 'af sock_addr -> bool val close : ('af, 'sock_type) sock -> unit datatype shutdown_mode = NO_RECVS | NO_SENDS | NO_RECVS_OR_SENDS val shutdown : ('af, 'sock_type stream) sock * shutdown_mode -> unit type sock_desc val sockDesc : ('af, 'sock_type) sock -> sock_desc val sameDesc: sock_desc * sock_desc -> bool val select: { rds: sock_desc list, wrs : sock_desc list, exs : sock_desc list, timeout: Time.time option } -> { rds: sock_desc list, wrs : sock_desc list, exs : sock_desc list } val ioDesc : ('af, 'sock_type) sock -> OS.IO.iodesc type out_flags = {don't_route : bool, oob : bool} type in_flags = {peek : bool, oob : bool} val sendVec : ('af, active stream) sock * Word8VectorSlice.slice -> int val sendArr : ('af, active stream) sock * Word8ArraySlice.slice -> int val sendVec' : ('af, active stream) sock * Word8VectorSlice.slice * out_flags -> int val sendArr' : ('af, active stream) sock * Word8ArraySlice.slice * out_flags -> int val sendVecNB : ('af, active stream) sock * Word8VectorSlice.slice -> int option val sendArrNB : ('af, active stream) sock * Word8ArraySlice.slice -> int option val sendVecNB' : ('af, active stream) sock * Word8VectorSlice.slice * out_flags -> int option val sendArrNB' : ('af, active stream) sock * Word8ArraySlice.slice * out_flags -> int option val recvVec : ('af, active stream) sock * int -> Word8Vector.vector val recvArr : ('af, active stream) sock * Word8ArraySlice.slice -> int val recvVec' : ('af, active stream) sock * int * in_flags -> Word8Vector.vector val recvArr' : ('af, active stream) sock * Word8ArraySlice.slice * in_flags -> int val recvVecNB : ('af, active stream) sock * int -> Word8Vector.vector option val recvArrNB : ('af, active stream) sock * Word8ArraySlice.slice -> int option val recvVecNB' : ('af, active stream) sock * int * in_flags -> Word8Vector.vector option val recvArrNB' : ('af, active stream) sock * Word8ArraySlice.slice * in_flags -> int option val sendVecTo : ('af, dgram) sock * 'af sock_addr * Word8VectorSlice.slice -> unit val sendArrTo : ('af, dgram) sock * 'af sock_addr * Word8ArraySlice.slice -> unit val sendVecTo' : ('af, dgram) sock * 'af sock_addr * Word8VectorSlice.slice * out_flags -> unit val sendArrTo' : ('af, dgram) sock * 'af sock_addr * Word8ArraySlice.slice * out_flags -> unit val sendVecToNB : ('af, dgram) sock * 'af sock_addr * Word8VectorSlice.slice -> bool val sendArrToNB : ('af, dgram) sock * 'af sock_addr * Word8ArraySlice.slice -> bool val sendVecToNB' : ('af, dgram) sock * 'af sock_addr * Word8VectorSlice.slice * out_flags -> bool val sendArrToNB' : ('af, dgram) sock * 'af sock_addr * Word8ArraySlice.slice * out_flags -> bool val recvVecFrom : ('af, dgram) sock * int -> Word8Vector.vector * 'sock_type sock_addr val recvArrFrom : ('af, dgram) sock * Word8ArraySlice.slice -> int * 'af sock_addr val recvVecFrom' : ('af, dgram) sock * int * in_flags -> Word8Vector.vector * 'sock_type sock_addr val recvArrFrom' : ('af, dgram) sock * Word8ArraySlice.slice * in_flags -> int * 'af sock_addr val recvVecFromNB : ('af, dgram) sock * int -> (Word8Vector.vector * 'sock_type sock_addr) option val recvArrFromNB : ('af, dgram) sock * Word8ArraySlice.slice -> (int * 'af sock_addr) option val recvVecFromNB' : ('af, dgram) sock * int * in_flags -> (Word8Vector.vector * 'sock_type sock_addr) option val recvArrFromNB' : ('af, dgram) sock * Word8ArraySlice.slice * in_flags -> (int * 'af sock_addr) option end; structure Socket :> SOCKET = struct (* We don't really need an implementation for these. *) (* TODO: We should really pull the definition of the sock type into a common structure so it can be shared by the various socket structures. In fact it doesn't matter since the unary constructor here is compiled as an identity so the underlying representation of "SOCK x" will be the same as "x". *) datatype ('af,'sock_type) sock = SOCK of OS.IO.iodesc and dgram = DGRAM and 'mode stream = STREAM and passive = PASSIVE and active = ACTIVE local val netCall: int * word -> word = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun doNetCall(i: int, arg:'a):'b = RunCall.unsafeCast(netCall(i, RunCall.unsafeCast arg)) end structure AF = struct type addr_family = NetHostDB.addr_family local val doCall: int*unit -> (string * addr_family) list = doNetCall in fun list () = doCall(11, ()) end fun toString (af: addr_family) = let val afs = list() in (* Do a linear search on the list - it's small. *) case List.find (fn (_, af') => af=af') afs of NONE => raise OS.SysErr("Missing address family", NONE) | SOME (s, _) => s end fun fromString s = let val afs = list() in (* Do a linear search on the list - it's small. *) case List.find (fn (s', _) => s=s') afs of NONE => NONE | SOME (_, af) => SOME af end end structure SOCK = struct datatype sock_type = SOCKTYPE of int local val doCall: int*unit -> (string * sock_type) list = doNetCall in fun list () = doCall(12, ()) end fun toString (sk: sock_type) = let val sks = list() in (* Do a linear search on the list - it's small. *) case List.find (fn (_, sk') => sk=sk') sks of NONE => raise OS.SysErr("Missing socket type", NONE) | SOME (s, _) => s end fun fromString s = let val sks = list() in (* Do a linear search on the list - it's small. *) case List.find (fn (s', _) => s=s') sks of NONE => NONE | SOME (_, sk) => SOME sk end (* We assume that both of these at least are in the table. *) val stream = case fromString "STREAM" of NONE => raise OS.SysErr("Missing socket type", NONE) | SOME s => s val dgram = case fromString "DGRAM" of NONE => raise OS.SysErr("Missing socket type", NONE) | SOME s => s end (* Socket addresses are implemented as strings. *) datatype 'af sock_addr = SOCKADDR of Word8Vector.vector (* Note: The definition did not make these equality type variables. The assumption is probably that it works much like equality on references. *) fun sameAddr (SOCKADDR a, SOCKADDR b) = a = b (* Many of these calls involve type variables. We have to use a cast to get the types right. *) local val doCall = doNetCall in fun familyOfAddr (sa: 'af sock_addr) = doCall(39, RunCall.unsafeCast sa) end structure Ctl = struct local val doCall1 = doNetCall val doCall2 = doNetCall in fun getOpt (i:int) (SOCK s) = doCall1(i, s) fun setOpt (i: int) (SOCK s, b: bool) = doCall2(i, (s, b)) end fun getDEBUG s = getOpt 18 s and setDEBUG s = setOpt 17 s and getREUSEADDR s = getOpt 20 s and setREUSEADDR s = setOpt 19 s and getKEEPALIVE s = getOpt 22 s and setKEEPALIVE s = setOpt 21 s and getDONTROUTE s = getOpt 24 s and setDONTROUTE s = setOpt 23 s and getBROADCAST s = getOpt 26 s and setBROADCAST s = setOpt 25 s and getOOBINLINE s = getOpt 28 s and setOOBINLINE s = setOpt 27 s and getERROR s = getOpt 34 s and getATMARK s = getOpt 45 s local val doCall1 = doNetCall val doCall2 = doNetCall in fun getSNDBUF (SOCK s) = doCall1(30, s) fun setSNDBUF (SOCK s, i: int) = doCall2(29, (s, i)) fun getRCVBUF (SOCK s) = doCall1(32, s) fun setRCVBUF (SOCK s, i: int) = doCall2(31, (s, i)) fun getTYPE (SOCK s) = SOCK.SOCKTYPE(doCall1(33, s)) fun getNREAD (SOCK s) = doCall1(44, s) fun getLINGER (SOCK s): Time.time option = let val lTime = doCall1(36, s) in if lTime < 0 then NONE else SOME(Time.fromSeconds(LargeInt.fromInt lTime)) end fun setLINGER (SOCK s, NONE) = ( doCall2(35, (s, ~1)) ) | setLINGER (SOCK s, SOME t) = let val lTime = LargeInt.toInt(Time.toSeconds t) in if lTime < 0 then raise OS.SysErr("Invalid time", NONE) else doCall2(35, (s, lTime)) end end local val doCall = doNetCall in fun getPeerName (SOCK s): 'af sock_addr = RunCall.unsafeCast(doCall(37, s)) fun getSockName (SOCK s): 'af sock_addr = RunCall.unsafeCast(doCall(38, s)) end end (* Ctl *) (* Run an operation in non-blocking mode. This catches EWOULDBLOCK and returns NONE, otherwise returns SOME result. Other exceptions are passed back as normal. *) val nonBlockingCall = LibraryIOSupport.nonBlocking local val doCall = doNetCall in fun accept (SOCK s) = RunCall.unsafeCast(doCall (46, s)) end local val doCall = doNetCall fun acc sock = doCall (58, RunCall.unsafeCast sock) in fun acceptNB sock = RunCall.unsafeCast(nonBlockingCall acc sock) end local val doCall = doNetCall in fun bind (SOCK s, a) = doCall (47, RunCall.unsafeCast (s, a)) end local val doCall = doNetCall in fun connect (SOCK s, a) = doCall (48, RunCall.unsafeCast (s, a)) end local val doCall = doNetCall fun connct sa = doCall (59, RunCall.unsafeCast sa) in fun connectNB (SOCK s, a) = case nonBlockingCall connct (s,a) of SOME () => true | NONE => false end fun listen (SOCK s, b) = doNetCall (49, (s, b)) (* We use the normal "close" for streams. *) local val doCall = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun close (SOCK strm): unit = doCall(7, strm, 0) end datatype shutdown_mode = NO_RECVS | NO_SENDS | NO_RECVS_OR_SENDS local val doCall = doNetCall in fun shutdown (SOCK s, mode) = let val m = case mode of NO_RECVS => 1 | NO_SENDS => 2 | NO_RECVS_OR_SENDS => 3 in doCall (50, (s, m)) end end (* The IO descriptor is the underlying socket. *) fun ioDesc (SOCK s) = s; type out_flags = {don't_route : bool, oob : bool} type in_flags = {peek : bool, oob : bool} type 'a buf = {buf : 'a, i : int, sz : int option} local val nullOut = { don't_route = false, oob = false } and nullIn = { peek = false, oob = false } (* This implementation is copied from the implementation of Word8Array.array and Word8Vector.vector. *) type address = LibrarySupport.address datatype vector = datatype LibrarySupport.Word8Array.vector datatype array = datatype LibrarySupport.Word8Array.array val wordSize = LibrarySupport.wordSize (* Send the data from an array or vector. Note: the underlying RTS function deals with the special case of sending a single byte vector where the "address" is actually the byte itself. *) local val doCall = doNetCall fun doSend i a = doCall (i, a) in fun send (SOCK sock, base: address, offset: int, length: int, rt: bool, oob: bool): int = doSend 51 (sock, base, offset, length, rt, oob) fun sendNB (SOCK sock, base: address, offset: int, length: int, rt: bool, oob: bool): int option = nonBlockingCall (doSend 60) (sock, base, offset, length, rt, oob) end local (* Although the underlying call returns the number of bytes written the ML functions now return unit. *) val doCall = doNetCall fun doSendTo i a = doCall (i, a) in fun sendTo (SOCK sock, addr, base: address, offset: int, length: int, rt: bool, oob: bool): unit = doSendTo 52 (RunCall.unsafeCast(sock, addr, base, offset, length, rt, oob)) fun sendToNB (SOCK sock, addr, base: address, offset: int, length: int, rt: bool, oob: bool): bool = case nonBlockingCall (doSendTo 61) (RunCall.unsafeCast(sock, addr, base, offset, length, rt, oob)) of NONE => false | SOME _ => true end local val doCall = doNetCall fun doRecv i a = doCall (i, a) in (* Receive the data into an array. *) fun recv (SOCK sock, base: address, offset: int, length: int, peek: bool, oob: bool): int = doRecv 53 (RunCall.unsafeCast(sock, base, offset, length, peek, oob)) fun recvNB (SOCK sock, base: address, offset: int, length: int, peek: bool, oob: bool): int option = nonBlockingCall (doRecv 62) (RunCall.unsafeCast(sock, base, offset, length, peek, oob)) end local val doCall = doNetCall fun doRecvFrom i a = doCall (i, a) in fun recvFrom (SOCK sock, base: address, offset: int, length: int, peek: bool, oob: bool) = RunCall.unsafeCast(doRecvFrom 54 (RunCall.unsafeCast (sock, base, offset, length, peek, oob))) fun recvFromNB (SOCK sock, base: address, offset: int, length: int, peek: bool, oob: bool) = RunCall.unsafeCast(nonBlockingCall (doRecvFrom 63) (RunCall.unsafeCast (sock, base, offset, length, peek, oob))) end in fun sendVec' (sock, slice: Word8VectorSlice.slice, {don't_route, oob}) = let val (v, i, length) = Word8VectorSlice.base slice in send(sock, LibrarySupport.w8vectorAsAddress v, i + Word.toInt wordSize, length, don't_route, oob) end and sendVec (sock, vbuff) = sendVec'(sock, vbuff, nullOut) fun sendVecNB' (sock, slice: Word8VectorSlice.slice, {don't_route, oob}) = let val (v, i, length) = Word8VectorSlice.base slice in sendNB(sock, LibrarySupport.w8vectorAsAddress v, i + Word.toInt wordSize, length, don't_route, oob) end and sendVecNB (sock, vbuff) = sendVecNB'(sock, vbuff, nullOut) fun sendArr' (sock, slice: Word8ArraySlice.slice, {don't_route, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in send(sock, v, i, length, don't_route, oob) end and sendArr (sock, vbuff) = sendArr'(sock, vbuff, nullOut) fun sendArrNB' (sock, slice: Word8ArraySlice.slice, {don't_route, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in sendNB(sock, v, i, length, don't_route, oob) end and sendArrNB (sock, vbuff) = sendArrNB'(sock, vbuff, nullOut) fun sendVecTo' (sock, addr, slice: Word8VectorSlice.slice, {don't_route, oob}) = let val (v, i, length) = Word8VectorSlice.base slice in sendTo(sock, addr, LibrarySupport.w8vectorAsAddress v, i + Word.toInt wordSize, length, don't_route, oob) end and sendVecTo (sock, addr, vbuff) = sendVecTo'(sock, addr, vbuff, nullOut) fun sendVecToNB' (sock, addr, slice: Word8VectorSlice.slice, {don't_route, oob}) = let val (v, i, length) = Word8VectorSlice.base slice in sendToNB(sock, addr, LibrarySupport.w8vectorAsAddress v, i + Word.toInt wordSize, length, don't_route, oob) end and sendVecToNB (sock, addr, vbuff) = sendVecToNB'(sock, addr, vbuff, nullOut) fun sendArrTo' (sock, addr, slice: Word8ArraySlice.slice, {don't_route, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in sendTo(sock, addr, v, i, length, don't_route, oob) end and sendArrTo (sock, addr, vbuff) = sendArrTo'(sock, addr, vbuff, nullOut) fun sendArrToNB' (sock, addr, slice: Word8ArraySlice.slice, {don't_route, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in sendToNB(sock, addr, v, i, length, don't_route, oob) end and sendArrToNB (sock, addr, vbuff) = sendArrToNB'(sock, addr, vbuff, nullOut) fun recvArr' (sock, slice: Word8ArraySlice.slice, {peek, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in recv(sock, v, i, length, peek, oob) end and recvArr (sock, vbuff) = recvArr'(sock, vbuff, nullIn) fun recvArrNB' (sock, slice: Word8ArraySlice.slice, {peek, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in recvNB(sock, v, i, length, peek, oob) end and recvArrNB (sock, vbuff) = recvArrNB'(sock, vbuff, nullIn) (* To receive a vector first create an array, read into it, then copy it to a new vector. This does involve extra copying but it probably doesn't matter too much. *) fun recvVec' (sock, size, flags) = let val arr = Word8Array.array(size, 0w0); val recvd = recvArr'(sock, Word8ArraySlice.full arr, flags) in Word8ArraySlice.vector(Word8ArraySlice.slice(arr, 0, SOME recvd)) end and recvVec (sock, size) = recvVec'(sock, size, nullIn) fun recvVecNB' (sock, size, flags) = let val arr = Word8Array.array(size, 0w0); in case recvArrNB'(sock, Word8ArraySlice.full arr, flags) of NONE => NONE | SOME recvd => SOME(Word8ArraySlice.vector(Word8ArraySlice.slice(arr, 0, SOME recvd))) end and recvVecNB (sock, size) = recvVecNB'(sock, size, nullIn) fun recvArrFrom' (sock, slice: Word8ArraySlice.slice, {peek, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in recvFrom(sock, v, i, length, peek, oob) end and recvArrFrom (sock, abuff) = recvArrFrom'(sock, abuff, nullIn) fun recvArrFromNB' (sock, slice: Word8ArraySlice.slice, {peek, oob}) = let val (Array(_, v), i, length) = Word8ArraySlice.base slice in recvFromNB(sock, v, i, length, peek, oob) end and recvArrFromNB (sock, abuff) = recvArrFromNB'(sock, abuff, nullIn) fun recvVecFrom' (sock, size, flags) = let val arr = Word8Array.array(size, 0w0); val (rcvd, addr) = recvArrFrom'(sock, Word8ArraySlice.full arr, flags) in (Word8ArraySlice.vector(Word8ArraySlice.slice(arr, 0, SOME rcvd)), addr) end and recvVecFrom (sock, size) = recvVecFrom'(sock, size, nullIn) fun recvVecFromNB' (sock, size, flags) = let val arr = Word8Array.array(size, 0w0); in case recvArrFromNB'(sock, Word8ArraySlice.full arr, flags) of NONE => NONE | SOME (rcvd, addr) => SOME (Word8ArraySlice.vector(Word8ArraySlice.slice(arr, 0, SOME rcvd)), addr) end and recvVecFromNB (sock, size) = recvVecFromNB'(sock, size, nullIn) end (* "select" call. *) datatype sock_desc = SOCKDESC of OS.IO.iodesc fun sockDesc (SOCK sock) = SOCKDESC sock (* Create a socket descriptor from a socket. *) fun sameDesc (SOCKDESC a, SOCKDESC b) = a = b local (* The underlying call takes three arrays and updates them with the sockets that are in the appropriate state. It sets inactive elements to ~1. *) val doIo: int * (OS.IO.iodesc Vector.vector * OS.IO.iodesc Vector.vector * OS.IO.iodesc Vector.vector * Time.time) -> OS.IO.iodesc Vector.vector * OS.IO.iodesc Vector.vector * OS.IO.iodesc Vector.vector = doNetCall in fun sys_select_block(rds, wrs, exs) = doIo(64, (rds, wrs, exs, Time.zeroTime)) fun sys_select_poll(rds, wrs, exs) = doIo(65, (rds, wrs, exs, Time.zeroTime)) (* The time parameter for a wait is the absolute time when the timeout expires. *) and sys_select_wait (rds, wrs, exs, t) = doIo(66, (rds, wrs, exs, t)) end fun select { rds: sock_desc list, wrs : sock_desc list, exs : sock_desc list, timeout: Time.time option } : { rds: sock_desc list, wrs : sock_desc list, exs : sock_desc list } = let fun sockDescToDesc(SOCKDESC sock) = sock (* Create the initial vectors. *) val rdVec: OS.IO.iodesc Vector.vector = Vector.fromList(map sockDescToDesc rds) val wrVec: OS.IO.iodesc Vector.vector = Vector.fromList(map sockDescToDesc wrs) val exVec: OS.IO.iodesc Vector.vector = Vector.fromList(map sockDescToDesc exs) open Time val (rdResult, wrResult, exResult) = (* Do the approriate select. *) case timeout of NONE => sys_select_block(rdVec, wrVec, exVec) | SOME t => if t <= Time.zeroTime then sys_select_poll(rdVec, wrVec, exVec) else sys_select_wait(rdVec, wrVec, exVec, t + Time.now()); (* Function to create the results. *) fun getResults v = Vector.foldr (fn (sd, l) => SOCKDESC sd :: l) [] v in (* Convert the results. *) { rds = getResults rdResult, wrs = getResults wrResult, exs = getResults exResult } end end; local (* Install the pretty printer for Socket.AF.addr_family This must be done outside the structure if we use opaque matching. *) fun printAF _ _ x = PolyML.PrettyString(Socket.AF.toString x) fun printSK _ _ x = PolyML.PrettyString(Socket.SOCK.toString x) fun prettySocket _ _ (_: ('a, 'b) Socket.sock) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter printAF val () = PolyML.addPrettyPrinter printSK val () = PolyML.addPrettyPrinter prettySocket end; polyml-5.7.1/basis/StringSignatures.sml0000644000175000017500000001420413204034553017131 0ustar daviddavid(* Title: Standard Basis Library: String Signatures Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CHAR = sig eqtype char eqtype string val minChar : char val maxChar : char val maxOrd : int val ord : char -> int val chr : int -> char val succ : char -> char val pred : char -> char val < : (char * char) -> bool val <= : (char * char) -> bool val > : (char * char) -> bool val >= : (char * char) -> bool val compare : (char * char) -> General.order val contains : string -> char -> bool val notContains : string -> char -> bool val toLower : char -> char val toUpper : char -> char val isAlpha : char -> bool val isAlphaNum : char -> bool val isAscii : char -> bool val isCntrl : char -> bool val isDigit : char -> bool val isGraph : char -> bool val isHexDigit : char -> bool val isLower : char -> bool val isPrint : char -> bool val isSpace : char -> bool val isPunct : char -> bool val isUpper : char -> bool val fromString : String.string -> char option (* The argument to scan should be the global *) val scan : (Char.char, 'a) StringCvt.reader -> (char, 'a) StringCvt.reader val toString : char -> String.string val fromCString : String.string -> char option val toCString : char -> String.string end; signature STRING = sig eqtype string eqtype char val maxSize : int val size : string -> int val sub : (string * int) -> char val extract : (string * int * int option) -> string val substring : (string * int * int) -> string val concat : string list -> string val concatWith: string -> string list -> string val ^ : (string * string) -> string val str : char -> string val implode : char list -> string val explode : string -> char list val map : (char -> char) -> string -> string val translate : (char -> string) -> string -> string val tokens : (char -> bool) -> string -> string list val fields : (char -> bool) -> string -> string list val isPrefix : string -> string -> bool val isSubstring : string -> string -> bool val isSuffix : string -> string -> bool val compare : (string * string) -> General.order val collate : ((char * char) -> General.order) -> (string * string) -> General.order val < : (string * string) -> bool val <= : (string * string) -> bool val > : (string * string) -> bool val >= : (string * string) -> bool val toString : string -> String.string val scan: (Char.char, 'a) StringCvt.reader -> (string, 'a) StringCvt.reader val fromString : String.string -> string option val toCString : string -> String.string val fromCString : String.string -> string option end; signature SUBSTRING = sig type substring eqtype char eqtype string val size : substring -> int val base : substring -> (string * int * int) val isEmpty : substring -> bool val sub : (substring * int) -> char val getc : substring -> (char * substring) option val first : substring -> char option val extract : (string * int * int option) -> substring val substring : (string * int * int) -> substring val slice : (substring * int * int option) -> substring val full: string -> substring val string : substring -> string val concat: substring list ->string val concatWith: string -> substring list ->string val explode : substring -> char list val translate : (char -> string) -> substring -> string val app : (char -> unit) -> substring -> unit val foldl : ((char * 'a) -> 'a) -> 'a -> substring -> 'a val foldr : ((char * 'a) -> 'a) -> 'a -> substring -> 'a val tokens : (char -> bool) -> substring -> substring list val fields : (char -> bool) -> substring -> substring list val isPrefix: string -> substring -> bool val isSubstring: string -> substring -> bool val isSuffix: string -> substring -> bool val compare : (substring * substring) -> General.order val collate : ((char * char) -> General.order) -> (substring * substring) -> General.order val triml : int -> substring -> substring val trimr : int -> substring -> substring val splitl : (char -> bool) -> substring -> (substring * substring) val splitr : (char -> bool) -> substring -> (substring * substring) val splitAt : (substring * int) -> (substring * substring) val dropl : (char -> bool) -> substring -> substring val dropr : (char -> bool) -> substring -> substring val takel : (char -> bool) -> substring -> substring val taker : (char -> bool) -> substring -> substring val position : string -> substring -> (substring * substring) val span : (substring * substring) -> substring end; signature STRING_CVT = sig datatype radix = BIN | OCT | DEC | HEX datatype realfmt = SCI of int option | FIX of int option | GEN of int option | EXACT type ('a, 'b) reader = 'b -> ('a * 'b) option val padLeft : char -> int -> string -> string val padRight : char -> int -> string -> string val splitl : (char -> bool) -> (char, 'a) reader ->'a -> (string * 'a) val takel : (char -> bool) -> (char, 'a) reader ->'a -> string val dropl : (char -> bool) -> (char, 'a) reader ->'a -> 'a val skipWS : (char, 'a) reader -> 'a -> 'a type cs val scanString : ((char, cs) reader -> ('a, cs) reader) -> string -> 'a option end; polyml-5.7.1/basis/List.sml0000644000175000017500000001216613204034553014536 0ustar daviddavid(* Title: Standard Basis Library: List Structure Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure List: LIST = struct datatype list = datatype list exception Empty fun null [] = true | null (_::_) = false val length = length (* Declared in prelude. *) (* ... fun nil @ M = M (* append *) | (x::L) @ M = x :: (L @ M); ... *) (* Dave's improved(?) version SPF 10/2/94 *) (* Taken from the prelude. The idea is to avoid rebuilding the list if the second list is empty. *) fun x @ nil = x (* append *) | x @ y = let fun app nil = y | app (a :: b) = a :: app b in app x end; fun hd (a::_) = a | hd _ = raise Empty and tl (_::a) = a | tl _ = raise Empty (* TODO: We could avoid the test for nil in the recursive cases. *) fun last [] = raise Empty | last [a] = a | last (_::b) = last b fun getItem [] = NONE | getItem (a::b) = SOME(a, b) (* We could raise subscript immediately if i < 0 and we probably would have to if we were using fixed precision arithmetic. *) fun nth([], _) = raise General.Subscript | nth(a::_, 0) = a | nth(_::l, i) = nth(l, i-1) (* TODO: Many of these functions involve recursing down the list and so require stack space proportional to the length of the list. Would it be more efficient to build the lists in reverse and then reverse the result? That would save on stack space at the expense of constructing the list twice. *) fun take(_, 0) = [] | take([], _) = raise General.Subscript | take(a::b, i) = a :: take(b, i-1) fun drop(l, 0) = l | drop([], _) = raise General.Subscript | drop(_::l, i) = drop(l, i-1) fun revAppend([], a) = a | revAppend(x::y, a) = revAppend(y, x::a) fun rev l = revAppend(l, []) fun concat [] = [] | concat (a::b) = a @ concat b fun app _ [] = () | app f (h::t) = (f h; app f t) fun map _ [] = [] | map f (a::b) = f a :: map f b; fun mapPartial _ [] = [] | mapPartial f (a::b) = case f a of SOME r => r :: mapPartial f b | NONE => mapPartial f b fun find _ [] = NONE | find f (a::b) = if f a then SOME a else find f b fun filter _ [] = [] | filter f (a::b) = if f a then a :: filter f b else filter f b (* This is defined to evaluate f from left to right. *) (* TODO: This involves returning a pair and creating new pairs which allocates storage in Poly/ML. Is there a more efficient implementation? e.g. recurse down the list and then reverse it. *) fun partition _ [] = ([], []) | partition f (a::b) = let val test = f a and (x, y) = partition f b in if test then (a::x, y) else (x, a::y) end fun foldl _ b [] = b | foldl f b (x::y) = foldl f (f(x, b)) y fun foldr _ b [] = b | foldr f b (x::y) = f(x, foldr f b y) fun exists _ [] = false | exists f (a::b) = if f a then true else exists f b fun all _ [] = true | all f (a::b) = if f a then all f b else false (* tabulate a function. *) local fun tabF max n f = if n = max then [] else f n :: tabF max (n+1) f in fun tabulate(n, f) = if n < 0 then raise Size else tabF n 0 f end (* Lexicographic comparison. *) fun collate _ ([], []) = General.EQUAL | collate _ ([], _) = General.LESS | collate _ (_, []) = General.GREATER | collate cmp (a::b, c::d) = (case cmp (a, c) of General.EQUAL => collate cmp (b, d) | notEqual => notEqual) end; (* Values available at the top level. *) exception Empty = List.Empty val null : 'a list -> bool = List.null val hd : 'a list -> 'a = List.hd val tl : 'a list -> 'a list = List.tl val length : 'a list -> int = List.length val rev : 'a list -> 'a list = List.rev val op @ : ('a list * 'a list) -> 'a list = List.@ val app : ('a -> unit) -> 'a list -> unit = List.app val map : ('a -> 'b) -> 'a list -> 'b list = List.map val foldr: ('a*'b->'b)-> 'b -> 'a list -> 'b = List.foldr val foldl: ('a*'b->'b)-> 'b -> 'a list -> 'b = List.foldl; polyml-5.7.1/basis/VectorSliceOperations.sml0000644000175000017500000001453513204034553020113 0ustar daviddavid(* Title: Standard Basis Library: Vector and Array slice functor Copyright David C.J. Matthews 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* The mono vector slice and mono array slice operations can all be combined into this functor fairly easily. Where appropriate functions can be redefined in the calling structure. *) functor VectorSliceOperations( type vector type elem val vecLength: vector -> word val unsafeVecSub: vector * word -> elem val unsafeVecUpdate: vector * word * elem -> unit (* Array only *) ): sig (*type slice*) datatype slice = Slice of { vector: vector, start: word, length: word }; val length : slice -> int val sub : (slice * int) -> elem val full: vector -> slice val slice: vector * int * int option -> slice val subslice: slice * int * int option -> slice val base: slice -> vector * int * int val isEmpty: slice -> bool val getItem: slice -> (elem * slice) option val appi : ((int * elem) -> unit) -> slice -> unit val app : (elem -> unit) -> slice -> unit val foldli : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (int * elem -> bool) -> slice -> (int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool val collate: (elem * elem -> order) -> slice * slice -> order (* These functions modify the vector or array. They aren't used for vectors. *) val update: slice * int * elem -> unit val modifyi : (int * elem -> elem) -> slice -> unit val modify : (elem -> elem) -> slice -> unit end = struct val wordAsInt: word -> int = RunCall.unsafeCast type elem = elem type vector = vector datatype slice = Slice of { vector: vector, start: word, length: word }; fun length(Slice{length, ...}) = wordAsInt length fun op sub (Slice{vector, start, length}, i: int) = let (* Check that the value is non-negative and short and cast it to word. *) val iW = LibrarySupport.unsignedShortOrRaiseSubscript i in if iW >= length then raise General.Subscript else unsafeVecSub(vector, iW+start) end (* update obviously doesn't apply to vector slices which are immutable. This function is filtered out by the caller's signature. *) fun update(Slice{vector, start, length}, i: int, x: elem) = let (* Check that the value is non-negative and short and cast it to word. *) val iW = LibrarySupport.unsignedShortOrRaiseSubscript i in if iW >= length then raise General.Subscript else unsafeVecUpdate(vector, iW+start, x) end (* Slice from the whole vector. *) fun full v = Slice{vector=v, start=0w0, length=vecLength v} (* Create a slice from a vector. *) fun slice(vec: vector, i: int, NONE) = let val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val len = vecLength vec in if iW <= len then Slice{vector=vec, start=iW, length=len-iW} (* Length is rest of vector. *) else raise General.Subscript end | slice(vec: vector, i: int, SOME l) = let val len = vecLength vec val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lW = LibrarySupport.unsignedShortOrRaiseSubscript l in if iW+lW <= len then Slice{vector=vec, start=iW, length=lW} (* Length is as given. *) else raise General.Subscript end (* Slice from existing slice *) fun subslice(Slice{vector, start, length}, i: int, NONE) = let val iW = LibrarySupport.unsignedShortOrRaiseSubscript i in if iW <= length then Slice{vector=vector, start=iW+start, length=length-iW} (* Length is rest of array. *) else raise General.Subscript end | subslice(Slice{vector, start, length}, i: int, SOME l) = let val iW = LibrarySupport.unsignedShortOrRaiseSubscript i val lW = LibrarySupport.unsignedShortOrRaiseSubscript l in if iW+lW <= length then Slice{vector=vector, start=iW+start, length=lW} (* Length is as given. *) else raise General.Subscript end fun base(Slice{vector, start, length}) = (vector, wordAsInt start, wordAsInt length) fun isEmpty(Slice{length, ...}) = length = 0w0 (* Return the first item of the slice and the rest of the slice. *) fun getItem(Slice{length=0w0, ...}) = NONE | getItem(Slice{vector, start, length}) = SOME(unsafeVecSub(vector, start), Slice{vector=vector, start=start+0w1, length=length-0w1}) (* Standard vector operations. *) structure VectorOps = VectorOperations( struct type vector = slice and elem = elem fun length(Slice{length, ...}) = length fun unsafeSub (Slice{vector, start, ...}, i) = unsafeVecSub(vector, start + i) fun unsafeSet (Slice{vector, start, ...}, i, x) = unsafeVecUpdate(vector, start + i, x) end); open VectorOps; end; polyml-5.7.1/basis/InitialPolyML.ML0000644000175000017500000001174513204034553016030 0ustar daviddavid(* Title: Extend the PolyML structure. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000-7 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Extend the PolyML structure. In particular this adds onEntry which needs to be used further on in the basis library. We also add a few more items at this point. *) local in structure PolyML = (* We must not have a signature on the result otherwise print and makestring will be given polymorphic types and will only produce "?" *) struct open PolyML local (* Initialise the list with the existing start-up function. *) val onEntryList: (unit->unit) list ref = ref[] and onEntryMutex = Thread.Mutex.mutex() (* Run the list in reverse order. *) fun runOnEntry [] = () | runOnEntry (f :: b) = (runOnEntry b; f() handle _ => ()); (* This wraps the function provided to PolyML.export and PolyML.exportPortable so that the library is initialised at start-up and finalised at close-down. *) fun runFunction f () = let val () = runOnEntry(! onEntryList); (* Perform start-up operations. *) (* Run the main program. If it doesn't explicitly call OS.Process.exit then use "success" as the normal result and "failure" if it raises an exception. *) val result = (f(); OS.Process.success) handle _ => OS.Process.failure (* Run the main function. *) in OS.Process.exit result (* Perform close-down actions. *) end val callExport: string * (unit->unit) -> unit = RunCall.rtsCallFull2 "PolyExport" and callExportP: string * (unit->unit) -> unit = RunCall.rtsCallFull2 "PolyExportPortable" in (* The equivalent of atExit except that functions are added to the list persistently and of course the functions are executed at start-up rather than close-down. *) (* Protect this with a mutex in case two threads try to add entries at the same time. Very unlikely since this is really only called when building the basis library. *) fun onEntry (f: unit->unit) : unit = ThreadLib.protect onEntryMutex (fn () => onEntryList := f :: !onEntryList) () (* Export functions - write out the function and everything reachable from it. *) fun export(filename, f) = callExport(filename, runFunction f) and exportPortable(filename, f) = callExportP(filename, runFunction f) end local (* shareCommonData needs to be able to take a value of any type. *) val callShare: word -> unit = RunCall.rtsCallFull1 "PolyShareCommonData" in fun shareCommonData(root: 'a): unit = callShare(RunCall.unsafeCast root) end (* ObjSize etc all take values of any type but we can't give the RTS call type 'a->int. *) local val callObjSize: word -> int = RunCall.rtsCallFull1 "PolyObjSize" and callShowSize: word -> int = RunCall.rtsCallFull1 "PolyShowSize" and callObjProfile: word -> int = RunCall.rtsCallFull1 "PolyObjProfile" in fun objSize(x:'a) = callObjSize(RunCall.unsafeCast x) and showSize(x:'a) = callShowSize(RunCall.unsafeCast x) and objProfile(x:'a) = callObjProfile(RunCall.unsafeCast x) end val fullGC: unit -> unit = RunCall.rtsCallFull0 "PolyFullGC" val pointerEq = RunCall.pointerEq val rtsVersion: unit -> int = RunCall.rtsCallFast0 "PolyGetPolyVersionNumber" local val doCall: int * unit -> string = RunCall.rtsCallFull2 "PolySpecificGeneral" in fun architecture(): string = doCall (12, ()) fun rtsArgumentHelp(): string = doCall (19, ()) end structure IntInf = struct val gcd: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyGCDArbitrary" and lcm: LargeInt.int * LargeInt.int -> LargeInt.int = RunCall.rtsCallFull2 "PolyLCMArbitrary" end end end; polyml-5.7.1/basis/UnixSock.sml0000644000175000017500000000514313204034553015363 0ustar daviddavid(* Title: Standard Basis Library: Unix socket structure and signature. Author: David Matthews Copyright David Matthews 2000, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature UNIX_SOCK = sig type unix type 'sock_type sock = (unix, 'sock_type) Socket.sock type 'mode stream_sock = 'mode Socket.stream sock type dgram_sock = Socket.dgram sock type sock_addr = unix Socket.sock_addr val unixAF : Socket.AF.addr_family val toAddr : string -> sock_addr val fromAddr : sock_addr -> string structure Strm : sig val socket : unit -> 'mode stream_sock val socketPair : unit -> 'mode stream_sock * 'mode stream_sock end structure DGrm : sig val socket : unit -> dgram_sock val socketPair : unit -> dgram_sock * dgram_sock end end; structure UnixSock : UNIX_SOCK = struct abstype unix = ABSTRACT with end; type 'sock_type sock = (unix, 'sock_type) Socket.sock type 'mode stream_sock = 'mode Socket.stream sock type dgram_sock = Socket.dgram sock type sock_addr = unix Socket.sock_addr val unixAF : Socket.AF.addr_family = case Socket.AF.fromString "UNIX" of NONE => raise OS.SysErr("Missing address family", NONE) | SOME s => s local val doCall: int * string -> sock_addr = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun toAddr s = doCall(56, s) end local val doCall: int * sock_addr -> string = RunCall.rtsCallFull2 "PolyNetworkGeneral" in fun fromAddr s = doCall(57, s) end structure Strm = struct fun socket() = GenericSock.socket(unixAF, Socket.SOCK.stream) fun socketPair() = GenericSock.socketPair(unixAF, Socket.SOCK.stream) end structure DGrm = struct fun socket() = GenericSock.socket(unixAF, Socket.SOCK.dgram) fun socketPair() = GenericSock.socketPair(unixAF, Socket.SOCK.dgram) end end; polyml-5.7.1/basis/BinIO.sml0000644000175000017500000001112713204034553014557 0ustar daviddavid(* Title: Standard Basis Library: Binary IO Copyright David C.J. Matthews 2000, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: in progress. *) signature BIN_IO = sig include IMPERATIVE_IO where type StreamIO.vector = Word8Vector.vector where type StreamIO.elem = Word8.word where type StreamIO.reader = BinPrimIO.reader where type StreamIO.writer = BinPrimIO.writer where type StreamIO.pos = BinPrimIO.pos val openIn : string -> instream val openOut : string -> outstream val openAppend : string -> outstream end; structure BinIO: BIN_IO = struct open IO structure StreamIO = BasicStreamIO( structure PrimIO = BinPrimIO structure Vector = Word8Vector structure Array = Word8Array structure VectorSlice = Word8VectorSlice structure ArraySlice = Word8ArraySlice val someElem : PrimIO.elem = 0wx20 ); (* For binary streams line-buffering is supposed to be treated as block buffering so we don't need to do anything special. *) structure ImpIO = ImperativeIO( structure StreamIO = StreamIO structure Vector = Word8Vector structure Array = Word8Array) open ImpIO exception Interrupt = RunCall.Interrupt (* Called after any exception in the lower level reader or writer to map any exception other than Io into Io. *) fun mapToIo (io as Io _, _, _) = io | mapToIo (Interrupt, _, _) = Interrupt | mapToIo (nonIo, name, caller) = Io { name = name, function = caller, cause = nonIo } type fileDescr = OS.IO.iodesc (* Actually abstract. This isn't the file descriptor itself, rather a pointer into the io table. *) local local val doIo: int*int*string -> fileDescr = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_open_in_bin name = doIo(4, 0, name) and sys_open_out_bin name = doIo(6, 0, name) and sys_open_append_bin name = doIo(14, 0, name) end local val doIo = RunCall.rtsCallFull3 "PolyBasicIOGeneral" in fun sys_get_buffsize (strm: fileDescr): int = doIo(15, strm, 0) end fun wrapInFileDescr(n, name) = let val binPrimRd = LibraryIOSupport.wrapBinInFileDescr {fd=n, name=name, initBlkMode=true} val streamIo = StreamIO.mkInstream(binPrimRd, Word8Vector.fromList []) in mkInstream streamIo end fun wrapOutFileDescr(n, name, buffering, isAppend) = let val buffSize = sys_get_buffsize n val binPrimWr = LibraryIOSupport.wrapBinOutFileDescr{fd=n, name=name, appendMode=isAppend, chunkSize=buffSize, initBlkMode=true} (* Construct a stream. *) val streamIo = StreamIO.mkOutstream(binPrimWr, buffering) in mkOutstream streamIo end in (* Open a file for input. *) fun openIn s = wrapInFileDescr( sys_open_in_bin s handle exn => raise mapToIo(exn, s, "BinIO.openIn"), s) (* Open a file for output. *) fun openOut s = let val f = sys_open_out_bin s handle exn => raise mapToIo(exn, s, "BinIO.openOut") in wrapOutFileDescr (f, s, IO.BLOCK_BUF, false (* Not append *)) end fun openAppend s = let val f = sys_open_append_bin s handle exn => raise mapToIo(exn, s, "BinIO.openAppend") in wrapOutFileDescr (f, s, IO.BLOCK_BUF, true (* setPos will not work. *)) end end end; polyml-5.7.1/basis/String.sml0000644000175000017500000021334713204034553015075 0ustar daviddavid(* Title: Standard Basis Library: String Structure Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This file declares Char, String and CharVector. String and CharVector are simply different views on the same underlying structure. *) (* The overloads for char and string for the relational operators have already been set up in the prelude. *) local open LibrarySupport (* Redefine these as functions on the abstract type. *) val System_move_bytesA: address*address*word*word*word->unit = RunCall.moveBytes val wordSize : word = LibrarySupport.wordSize local fun singleCharString(c: word): string = let val v = allocString 0w1 val () = RunCall.storeByte(v, wordSize, c) val () = RunCall.clearMutableBit v in v end (* We haven't defined Vector at this stage. *) val charMap = RunCall.allocateWordMemory(0w256, 0wx40, 0w0) val intAsWord: int -> word = RunCall.unsafeCast fun setEntries i = if i < 256 then (RunCall.storeWord(charMap, intAsWord i, singleCharString(intAsWord i)); setEntries(i+1)) else (); val () = setEntries 0 val () = RunCall.clearMutableBit charMap in (* Since we've covered the full range from 0 to 255 we don't need a bounds check. *) fun charAsString (ch: char): string = RunCall.loadWord(charMap, RunCall.unsafeCast ch) end val bcopy: string*string*word*word*word -> unit = RunCall.moveBytes (* This can be used where we have already checked the range. *) fun unsafeStringSub(s: string, i: word): char = RunCall.loadByteFromImmutable(s, i + wordSize) (* Casts between int and word. *) val intAsWord: int -> word = RunCall.unsafeCast and wordAsInt: word -> int = RunCall.unsafeCast (* String concatenation is currently built into the RTS although it doesn't need to be. *) (* val op ^ : string * string -> string = op ^ *)(* In prelude. *) fun op ^ (a: string, b: string): string = let val a_length = sizeAsWord a and b_length = sizeAsWord b in (* Handle the special cases where one of the strings is empty. As well as saving on duplicating storage it also means we don't have to consider the special case when the result string is a single character. *) if a_length = 0w0 then b else if b_length = 0w0 then a else (* Normal case *) let val vec = LibrarySupport.allocString(a_length + b_length) in bcopy(a, vec, wordSize, wordSize, a_length); bcopy(b, vec, wordSize, wordSize+a_length, b_length); RunCall.clearMutableBit vec; vec end end (* op ^ *) (* String comparison function used in isPrefix and isSuffix. N.B. The caller must make sure that neither string is a single character. *) local val byteVecEq: string * string * word * word * word -> bool = RunCall.byteVectorEqual in fun byteMatch s1 s2 i j l = byteVecEq(s1, s2, i+wordSize, j+wordSize, l) end (* We use stringExplode in String and Substring. *) fun stringExplode (s: string, i: word, l: word) : char list = let fun exp_str (num, res) = if num = 0w0 then res else exp_str (num - 0w1, RunCall.loadByteFromImmutable(s, num+i-0w1+wordSize) :: res) in exp_str (l, []) end (* There's an irritating dependency here. Char uses StringCvt.reader which means that StringCvt depends on Char so String depends on StringCvt. That means we can't define StringCvt in terms of String which would be easiest. *) structure Char = struct type char = char and string = string val maxOrd = 255 (* Range from 0 to 255 *) (* Single characters are represented by the number so we only need to check the argument and then convert it. *) fun chr i : char = if i < 0 orelse i > maxOrd then raise General.Chr else RunCall.unsafeCast i val ord: char -> int = RunCall.unsafeCast val minChar = chr 0 and maxChar = chr maxOrd fun succ c = if ord c = maxOrd then raise Chr else chr(ord c + 1) and pred c = if ord c = 0 then raise Chr else chr(ord c - 1) fun isUpper c = #"A" <= c andalso c <= #"Z" fun isLower c = #"a" <= c andalso c <= #"z" fun isDigit c = #"0" <= c andalso c <= #"9" fun isAlpha c = isUpper c orelse isLower c fun isAlphaNum c = isAlpha c orelse isDigit c fun isHexDigit c = isDigit c orelse (#"a" <= c andalso c <= #"f") orelse (#"A" <= c andalso c <= #"F") fun isGraph c = #"!" <= c andalso c <= #"~" fun isPrint c = isGraph c orelse c = #" " fun isPunct c = isGraph c andalso not (isAlphaNum c) (* NOTE: The web page includes 0 <= ord c but all chars satisfy that. *) fun isAscii c = c <= chr 127 (* NOTE: The web page defines isCtrl not isCntrl *) fun isCntrl c = isAscii c andalso not (isPrint c) (* NOTE: There's a mistake in the web page. It says c <= #"\ " *) fun isSpace c = (#"\t" <= c andalso c <= #"\r") orelse c = #" " fun toLower c = if isUpper c then chr (ord c + 32) else c fun toUpper c = if isLower c then chr (ord c - 32) else c (* TODO: More efficient versions. Probably best to use comparison for short strings and table look-up for longer ones. *) fun contains s = let fun match 0w0 _ = false | match i c = unsafeStringSub(s, i-0w1) = c orelse match (i-0w1) c in match (sizeAsWord s) end fun notContains s c = not (contains s c) end; (* structure Char *) structure String = (* This structure is the basis of both String and CharVector. *) struct type string = string and vector = string and elem = char and char = char (* We don't have Word.toInt yet so we have to use casts in these next two. *) val size : string -> int = RunCall.unsafeCast o LibrarySupport.sizeAsWord val maxSize: int = RunCall.unsafeCast LibrarySupport.maxString (* A one character string is simply the character itself. *) val str: char ->string = charAsString (* Concatentate a list of strings. *) fun concat [] = "" | concat [s] = s (* Handle special case to reduce copying. *) (* Could also handle the case of concat(""::s) = concat s *) | concat L = let fun total n [] = n | total n (H::T) = total (n + size H) T (* How many characters do we have to implode? This could possibly be long (although we would probably have run out of memory long before) so we have to add these as integers and then raise an exception if it's not short. *) val chars : int = total 0 L; in if chars = 0 then "" else (* Normal case *) let val chs = unsignedShortOrRaiseSize chars (* Check it's short. *) val vec = LibrarySupport.allocString chs fun copy (_, []:string list) = () | copy (i, H :: T) = let val src_len = sizeAsWord H in bcopy(H, vec, wordSize, i, src_len); copy(i+src_len, T) end in copy (wordSize, L); RunCall.clearMutableBit vec; vec end end (* concat *) fun concatWith _ [] = "" | concatWith _ [one] = one | concatWith s (hd :: tl) = let fun mk [] = [] | mk (h::t) = s :: h :: mk t in concat(hd :: mk tl) end (* implode is very similar to concat, in fact it could be defined as a cast version of it. *) fun implode [] : string = "" | implode (L as (H::_)) = let (* How many characters do we have to implode? *) val listLength = length L (* In practice we could never make a list with a combined length which was a long integer but we still check it here in unsignedShortOrRaiseSize. *) val chars: word = unsignedShortOrRaiseSize listLength in if chars = 0w1 then str H else let val dest = LibrarySupport.allocString chars fun copy (_, []:char list) = () | copy (i, H :: T) = ( RunCall.storeByte (dest, i, H); copy (i + 0w1, T) ) in copy (wordSize, L); RunCall.clearMutableBit dest; (* reset mutable flag *) dest end end (* This was previously built-in because of the way it worked in the Poly language. It could be defined as concat[a,b] but we define it separately for efficiency. *) val op ^ : string * string -> string = op ^ fun sub (s: string, i: int): char = if i < 0 orelse i >= size s then raise General.Subscript else RunCall.loadByteFromImmutable(s, intAsWord i + wordSize); (* Explode a string into a list of characters. *) fun explode (s : string) : char list = stringExplode(s, 0w0, sizeAsWord s) (* TODO: Could be defined more efficiently, perhaps by copying it into an array. *) (* This would be easier if we could process the string twice as we do with toString but we need to be careful to call f only once for each character in case it has a side-effect. *) fun translate f s = let val len = sizeAsWord s in let (* Accumulate the characters into a list. *) fun mapChars i l = if i = len then l else mapChars (i+0w1) (f(RunCall.loadByteFromImmutable(s, i+wordSize)) :: l) (* Reverse has not yet been defined. *) fun revAppend([], a) = a | revAppend(x::y, a) = revAppend(y, x::a) in (* Reverse the list and concatenate it. *) concat(revAppend(mapChars 0w0 [], [])) end end fun substring (s, i, j) = let val len = sizeAsWord s (* Check that the index and length are both non-negative. *) val i' = unsignedShortOrRaiseSubscript i and j' = unsignedShortOrRaiseSubscript j in if i'+j' > len then raise Subscript else unsafeSubstring(s, i', j') end fun extract (s, i, NONE) = substring (s, i, size s - i) | extract (s, i, SOME j) = substring (s, i, j) (* tokens and fields are very similar except that tokens does not return empty strings for adjacent delimiters whereas fields does. *) fun tokens p s = let val length = size s fun tok' i l = (* i is the character to examine. l is the start of a token *) if i = length then (* Finished the input. Return any partially completed string. *) ( if l = i then [] else [substring (s, l, i-l)] ) else if p (sub(s, i)) (* TODO: We don't need sub to do the range check here *) then (* It's a delimiter. If we have more than one character in the string we create a string otherwise we just continue. *) ( if l = i then tok' (i+1) (i+1) else substring (s, l, i-l) :: tok' (i+1) (i+1) ) else (* Token: Keep accumulating characters. *) tok' (i+1) l in tok' 0 0 end fun fields p s = let val length = size s fun field' i l = (* i is the character to examine. l is the start of a token *) if i = length then (* Finished the input. Return any partially completed string. *) [substring (s, l, i-l)] else if p (unsafeStringSub(s, intAsWord i)) then (* It's a delimiter. Finish the partially completed string and start another. *) substring (s, l, i-l) :: field' (i+1) (i+1) else (* Field: Keep accumulating characters. *) field' (i+1) l in field' 0 0 end (* True if s1 is a prefix of s2 *) (* G&R now says that a string is a prefix of itself. *) fun isPrefix s1 s2 = let val size_s1 = size s1 and size_s2 = size s2 in if size_s1 <= size_s2 then byteMatch s1 s2 0w0 0w0 (intAsWord size_s1) else false end (* True if s1 is a suffix of s2 *) fun isSuffix s1 s2 = let val size_s1 = size s1 and size_s2 = size s2 in if size_s1 <= size_s2 then byteMatch s1 s2 0w0 (intAsWord (size_s2 - size_s1)) (intAsWord size_s1) else false end (* True if s1 is a substring of s2 *) fun isSubstring s1 s2 = let val size_s1 = size s1 and size_s2 = size s2 (* Start at the beginning and compare until we get a match. *) fun doMatch i s = if s < size_s1 then false (* The remainder of the string is too small to match. *) else if byteMatch s1 s2 0w0 i (intAsWord size_s1) then true else doMatch (i+0w1) (s-1) in doMatch 0w0 size_s2 end (* Functions specific to CharVector, apart from map which is common. *) fun tabulate (0, _) : vector = "" (* Must not try to lock it. *) | tabulate (1, f) : vector = charAsString(f 0) | tabulate (length: int , f : int->elem): vector = let val len = unsignedShortOrRaiseSize length (* Raises Size if length < 0 *) val vec = LibrarySupport.allocString len (* Initialise it to the function values. *) fun init i = if len <= i then () else (RunCall.storeByte(vec, i+wordSize, f(wordAsInt i)); init(i+0w1)) in init 0w0; RunCall.clearMutableBit vec; vec end (* Create the other functions. *) structure VectorOps = VectorOperations( struct type vector = vector and elem = elem val length = sizeAsWord fun unsafeSub(s, i) = RunCall.loadByteFromImmutable(s, i + wordSize); fun unsafeSet(_, _, _) = raise Fail "Should not be called" end); open VectorOps; fun map f vec = let val len = sizeAsWord vec in if len = 0w0 then "" else (* len > 1 *) let (* Allocate a new vector. *) val new_vec = LibrarySupport.allocString len val byte_limit = len + wordSize fun domap i = if i >= byte_limit then () else (RunCall.storeByte(new_vec, i, f(RunCall.loadByteFromImmutable(vec, i))); domap(i+0w1)) in domap wordSize; RunCall.clearMutableBit new_vec; new_vec end end local (* String comparison. *) fun compareString(s1, s2) = let val s1l = sizeAsWord s1 and s2l = sizeAsWord s2 val test = RunCall.byteVectorCompare(s1, s2, wordSize, wordSize, if s1l < s2l then s1l else s2l) in if test = 0 (* If the strings are the same up to the shorter length ... *) then RunCall.unsafeCast(s1l - s2l) (* The result depends on the lengths. *) else test end in fun compare (s1, s2) = let val c = compareString(s1, s2) in if c = 0 then General.EQUAL else if c > 0 then General.GREATER else General.LESS end (* String relational operators. They could all be defined in terms of "compare" but this generates better code. *) val op >= = fn (s1: string, s2: string) => let val s1l = sizeAsWord s1 and s2l = sizeAsWord s2 val test = RunCall.byteVectorCompare(s1, s2, wordSize, wordSize, if s1l < s2l then s1l else s2l) in if test = 0 then s1l >= s2l else test >= 0 end and op <= = fn (s1: string, s2: string) => let val s1l = sizeAsWord s1 and s2l = sizeAsWord s2 val test = RunCall.byteVectorCompare(s1, s2, wordSize, wordSize, if s1l < s2l then s1l else s2l) in if test = 0 then s1l <= s2l else test <= 0 end and op > = fn (s1: string, s2: string) => let val s1l = sizeAsWord s1 and s2l = sizeAsWord s2 val test = RunCall.byteVectorCompare(s1, s2, wordSize, wordSize, if s1l < s2l then s1l else s2l) in if test = 0 then s1l > s2l else test > 0 end and op < = fn (s1: string, s2: string) => let val s1l = sizeAsWord s1 and s2l = sizeAsWord s2 val test = RunCall.byteVectorCompare(s1, s2, wordSize, wordSize, if s1l < s2l then s1l else s2l) in if test = 0 then s1l < s2l else test < 0 end end end (* String *) structure StringCvt = struct val mem_move: string*string*word*word*word -> unit = RunCall.moveBytes datatype radix = BIN | OCT | DEC | HEX datatype realfmt = SCI of int option | FIX of int option | GEN of int option | EXACT type ('a, 'b) reader = 'b -> ('a * 'b) option fun padLeft c i s = if i <= 0 (* unsignedShortOrRaiseSize raises Size if i < 0 which isn't right here. *) then s else let val len: word = sizeAsWord s val iW = unsignedShortOrRaiseSize i (* checks that i is a short. *) in if len >= iW then s else let val extra = iW - len val str = LibrarySupport.allocString iW fun setCh n = if n = extra then () (* Set the character part of the string. *) else ( RunCall.storeByte(str, n+wordSize, c); setCh(n+0w1) ) in setCh 0w0; (* Copy the character part of the string over. *) mem_move(s, str, wordSize, extra + wordSize, len); RunCall.clearMutableBit str; str end end fun padRight c i s = if i <= 0 (* unsignedShortOrRaiseSize raises Size if i < 0 which isn't right here. *) then s else let val len = sizeAsWord s val iW = unsignedShortOrRaiseSize i (* checks that i is a short. *) in if len >= iW then s else let val str = LibrarySupport.allocString iW fun setCh n = if n = iW then () (* Set the character part of the string. *) else ( RunCall.storeByte(str, n+wordSize, c); setCh(n+0w1) ) in (* Copy the character part of the string over. *) mem_move(s, str, wordSize, wordSize, len); setCh len; RunCall.clearMutableBit str; str end end (* p is described as a predicate. That implies that it is side-effect free. If it is we could use it e.g. twice, once to work out the length of the string and then to create the string itself. Assume that it may have side-effects and that we can only execute it once. *) local fun split' p f res src = case f src of NONE => (String.implode(rev res), src) (* Not available. *) | SOME (ch, src') => (* Char available *) if p ch then (* It matches - include in the result *) split' p f (ch :: res) src' else (String.implode(rev res), src) (* No match *) in fun splitl p f src = split' p f [] src end (* It may be worth defining takel independently but it doesn't add much overhead by contrast with dropl *) fun takel p f s = #1(splitl p f s) (* fun dropl p f s = #2(splitl p f s) *) (* This is probably as efficient as it can be. *) fun dropl p f src = case f src of NONE => src (* Not available. *) | SOME (ch, src') => (* Char available *) if p ch then dropl p f src' else src (* No match *) (* Copied isSpace from Char structure to avoid circular dependency. *) fun skipWS f src = case f src of NONE => src (* Not available. *) | SOME (ch, src') => (* Char available *) if (#"\t" <= ch andalso ch <= #"\r") orelse ch = #" " then skipWS f src' else src (* No match *) datatype cs = Index of word (* Index into the string. *) fun scanString cvt s = let val len = sizeAsWord s fun rdr (Index i) = if i = len then NONE (* Since we know the index is between 0 and len-1 we can use the unsafe subscript function here. *) else SOME(unsafeStringSub(s, i), Index(i+0w1)) in case cvt rdr (Index 0w0) of NONE => NONE | SOME(res, _) => SOME res end end local open Char in (* Convert the first i digits as a hex number. Check the result is in the range before returning it. *) local fun readHex' _ str 0 res = if res > maxOrd then NONE else SOME(chr res, str) | readHex' getc str i res = case getc str of NONE => (* No char available. That's ok if we are converting as many chars as we can and have already converted one but not if we are converting n chars and haven't got them *) if i >= ~1 orelse res > maxOrd then NONE else SOME(chr res, str) | SOME(ch, str') => if #"0" <= ch andalso ch <= #"9" then readHex' getc str' (i-1) (res*16 + ord ch - ord #"0") else if #"a" <= ch andalso ch <= #"f" then readHex' getc str' (i-1) (res*16 + ord ch - ord #"a" + 10) else if #"A" <= ch andalso ch <= #"F" then readHex' getc str' (i-1) (res*16 + ord ch - ord #"A" + 10) else (* Not a hex char. Ok if we are converting as many as we can. *) if i >= ~1 orelse res > maxOrd then NONE else SOME(chr res, str) in fun readHexN getc str i = readHex' getc str i 0 and readHex getc str = readHex' getc str ~1 0 end (* Convert the first i digits as a decimal. There must be exactly i digits. *) fun readDec _ str 0 res = if res > maxOrd then NONE else SOME(chr res, str) | readDec getc str i res = case getc str of NONE => if res > maxOrd orelse i > 0 (* not enough chars *) then NONE else SOME(chr res, str) | SOME(ch, str') => if #"0" <= ch andalso ord #"9" >= ord ch then readDec getc str' (i-1) (res*10 + ord ch - ord #"0") else (* Not enough valid digits. *) NONE (* Convert up to i digits as an octal number. There may be fewer than i digits. *) fun readOct _ str 0 res = if res > maxOrd then NONE else SOME(chr res, str) | readOct getc str i res = case getc str of NONE => if res > maxOrd then NONE else SOME(chr res, str) | SOME(ch, str') => if #"0" <= ch andalso ord #"7" >= ord ch then readOct getc str' (i-1) (res*8 + ord ch - ord #"0") else (* Stop here. *) if res > maxOrd then NONE else SOME(chr res, str) (* This function is used as the basis of Char.scan and String.scan. There is a crucial difference between Char.scan and String.scan in that Char.scan returns NONE if it cannot read a single character whereas String.scan returns NONE only if it encounters a bad escape before reading any valid input, which includes a format sequence (\\). This function returns NONE if it encounters a bad escape but SOME("", strm) if it encounters end-of-stream or has read a format sequence. *) fun scanBase (getc: (char, 'a) StringCvt.reader) (str :'a) : (string * 'a) option = case getc str of (* Read the first character. *) NONE => SOME("", str) (* Just end-of-stream. *) | SOME(ch, str') => if ch < chr 32 orelse chr 126 < ch then NONE (* Non-printable character. *) else if ch = #"\\" then (* escape *) ( case getc str' of NONE => NONE | SOME(#"a", str'') => SOME("\a", str'') | SOME(#"b", str'') => SOME("\b", str'') | SOME(#"t", str'') => SOME("\t", str'') | SOME(#"n", str'') => SOME("\n", str'') | SOME(#"v", str'') => SOME("\v", str'') | SOME(#"f", str'') => SOME("\f", str'') | SOME(#"r", str'') => SOME("\r", str'') | SOME(#"\\", str'') => SOME("\\", str'') | SOME(#"\"", str'') => SOME("\"", str'') | SOME(#"^", str'') => (* Control char *) ( case getc str'' of NONE => NONE | SOME(ch'', str''') => if ord ch'' >= 64 andalso 95 >= ord ch'' then SOME(charAsString(chr(ord ch'' - 64)), str''') else NONE ) | SOME(#"u", str'') => (* Hex encoding: Read 4 hex digits *) (* NOTE: There's a contradiction in the web page: It says both 4 hex digits and also "the longest sequence of such characters" *) (case readHexN getc str'' 4 of NONE => NONE | SOME(s, str) => SOME(charAsString s, str)) | SOME(ch', str'') => if isSpace ch' then (* Remove \f...f\ and then recurse. *) ( case getc (StringCvt.skipWS getc str'') of NONE => NONE | SOME(ch'', str''') => if ch'' <> #"\\" then NONE (* Bad format *) else SOME("", str''') (* Return an empty string. *) ) else if #"0" <= ch' andalso ch' <= #"2" then (* Decimal encoding *) (* NOTE: There's a contradiction in the web page: It says both 3 digits and also "the longest sequence of such characters". The tests insist on 3 digits so we go with that. *) (case readDec getc str' 3 0 of NONE => NONE | SOME(s, str) => SOME(charAsString s, str)) else (* Unknown escape *) NONE ) else SOME(charAsString ch, str') (* Result is the character. *) (* Convert C escapes *) fun scanC (getc: (char, 'a) StringCvt.reader) (str :'a) : (char * 'a) option = case getc str of (* Read the first character. *) NONE => NONE | SOME(ch, str') => if ch < chr 32 orelse chr 126 < ch then NONE (* Non-printable character. *) else if ch = #"\\" then (* escape *) ( case getc str' of NONE => NONE | SOME(#"a", str'') => SOME((*#"\a"*) chr 7, str'') | SOME(#"b", str'') => SOME((*#"\b"*) chr 8, str'') | SOME(#"t", str'') => SOME(#"\t", str'') | SOME(#"n", str'') => SOME(#"\n", str'') | SOME(#"v", str'') => SOME((*#"\v" *) chr 11, str'') | SOME(#"f", str'') => SOME((*#"\f"*) chr 12, str'') | SOME(#"r", str'') => SOME((*#"\r"*) chr 13, str'') | SOME(#"?", str'') => SOME(#"?", str'') | SOME(#"\\", str'') => SOME(#"\\", str'') | SOME(#"\"", str'') => SOME(#"\"", str'') | SOME(#"'", str'') => SOME(#"'", str'') | SOME(#"^", str'') => (* Control char *) ( case getc str'' of NONE => NONE | SOME(ch'', str''') => if ord ch'' >= 64 andalso 95 >= ord ch'' then SOME(chr(ord ch'' - 64), str''') else NONE ) (* Note: the web page says \u here but it seems it should be \x. That's confirmed by the latest version of the library definition. *) | SOME(#"x", str'') => (* Hex encoding. *) readHex getc str'' | SOME(ch', _) => if #"0" <= ch' andalso ch' <= #"7" then (* Octal encoding *) readOct getc str' 3 0 else (* Unknown escape *) NONE ) else SOME(ch, str') (* Result is the character. *) end in (* At this point we can start to add conversion functions. *) structure CharVector: MONO_VECTOR = struct fun mapi f vec = let val len = sizeAsWord vec in if len = 0w0 then "" else let (* Allocate a new vector. *) val new_vec = LibrarySupport.allocString len fun domap j = if j >= len then () else (RunCall.storeByte(new_vec, j+wordSize, f(wordAsInt(j), RunCall.loadByteFromImmutable(vec, j+wordSize))); domap(j+0w1)) in domap 0w0; RunCall.clearMutableBit new_vec; new_vec end end (* Return a copy of the string with a particular character replaced *) fun update (v, i, c) = if i < 0 orelse i >= String.size v then raise Subscript else mapi (fn (j, s) => if j = i then c else s) v open String (* Name changes needed for CharVector. *) val maxLen = maxSize val fromList = implode val length = size end structure Char: CHAR = struct open Char fun scan (getc: (char, 'a) StringCvt.reader) (str :'a) : (char * 'a) option = case scanBase getc str of NONE => NONE | SOME("", strm') => (* May be end-of-string or we may have read a format sequence. *) (case getc strm' of NONE => (* end-of-string *) NONE | _ => scan getc strm') | SOME(s, strm') => SOME(unsafeStringSub(s, 0w0), strm') (* Only ever a single character *) (* Convert from a string. *) (* TODO: More efficient conversion using the string directly rather than scanString ? *) val fromString = StringCvt.scanString scan and fromCString = StringCvt.scanString scanC (* Convert to printable string. *) local local (* Conversion to octal has now been defined to generate three octal digits in the same way as conversion to integer. *) fun octIntRepr base digs (i: int) = if digs = 0 then "" else octIntRepr base (digs-1) (i div base) ^ charAsString(chr(i mod base + ord #"0")) in val intRepr = octIntRepr 10 3 val octalRepr = octIntRepr 8 3 end in (* Conversion to ML escapes. *) fun toString ch = (* First handle the special cases *) if ch = #"\\" then "\\\\" else if ch = #"\"" then "\\\"" else if isPrint ch (* Other printable characters *) then charAsString ch else (* Control chars: Special cases first *) if ch = chr 7 then "\\a" else if ch = chr 8 then "\\b" else if ch = chr 9 then "\\t" else if ch = chr 10 then "\\n" else if ch = chr 11 then "\\v" else if ch = chr 12 then "\\f" else if ch = chr 13 then "\\r" else if ch < chr 32 (* Other chars must be escaped. *) then "\\^" ^ charAsString(chr(ord ch + 64)) else (* Use 3 digit notation. *) (* Note: Web site assumes ASCII, not Unicode. *) "\\" ^ intRepr(ord ch) (* Conversion to C escapes. *) fun toCString ch = (* First handle the special cases *) if ch = #"\\" then "\\\\" else if ch = #"\"" then "\\\"" else if ch = #"?" then "\\?" else if ch = #"'" then "\\'" else if isPrint ch (* Other printable characters *) then charAsString ch else (* Control chars: Special cases first *) if ch = chr 7 then "\\a" else if ch = chr 8 then "\\b" else if ch = chr 9 then "\\t" else if ch = chr 10 then "\\n" else if ch = chr 11 then "\\v" else if ch = chr 12 then "\\f" else if ch = chr 13 then "\\r" else (* Use octal notation. *) (* Note: Web site assumes ASCII, not Unicode. *) "\\" ^ octalRepr(ord ch) end; (* Install conversion and print functions. *) local (* It might be worth rewriting scan to raise Conversion with a string argument so we can pass back information about why an escape code was invalid. *) fun convChar s = let val len = sizeAsWord s fun rdr i = if i = len then NONE else SOME(unsafeStringSub(s, i), i+0w1) in case scan rdr 0w0 of NONE => raise RunCall.Conversion "Invalid character constant" | SOME(res, index') => (* Check that we have converted all the string. *) if index' <> len then raise RunCall.Conversion "Not exactly one character" else res end fun print_char _ _ (c: char) = PolyML.PrettyString("#\"" ^ toString c ^ "\"") in val () = RunCall.addOverload convChar "convChar"; val () = PolyML.addPrettyPrinter print_char end (* Define the type-specific inequalities. *) val op < : char * char -> bool = op < val op <= : char * char -> bool = op <= val op > : char * char -> bool = op > val op >= : char * char -> bool = op >= fun compare (ch, ch') = if ch < ch' then General.LESS else if ch > ch' then General.GREATER else General.EQUAL end structure String: STRING = struct open String (* Generate escape characters. *) local fun toStrings convert s = let val len = sizeAsWord s (* First pass - find out the size of the result string. *) fun getSize i n = if i = len then n else getSize (i+0w1) (n + size(convert(RunCall.loadByteFromImmutable(s, i+wordSize)))) (* The result could possibly be long so we add the lengths as integers and convert and check when we've finished. *) val newSize = unsignedShortOrRaiseSize (getSize 0w0 0) in (* If the size is the same we can return the original string. This relies on the fact that the conversions either return the character unchanged or return a longer escape sequence. *) if newSize = len then s else let (* Second pass: create the output string and copy to it. *) val newVec = LibrarySupport.allocString newSize fun copyToOut i j = if i = len then () else let val conv = convert(RunCall.loadByteFromImmutable(s, i+wordSize)) val convSize = sizeAsWord conv in bcopy(conv, newVec, wordSize, j, convSize); copyToOut (i+0w1) (j+convSize) end in copyToOut 0w0 wordSize; RunCall.clearMutableBit newVec; newVec end end in val toString = toStrings Char.toString and toCString = toStrings Char.toCString end (* Convert escapes. *) fun scan (getc: (char, 'a) StringCvt.reader) (str :'a) : (string * 'a) option = let fun scanString str (l: string list) haveRead = case scanBase getc str of NONE => (* Invalid escape sequence *) if haveRead then SOME(concat(rev l), str) else NONE | SOME("", strm') => (* End of input or read a format sequence. *) (case getc strm' of NONE => SOME(concat(rev l), strm') | _ => scanString strm' l true) | SOME(s, strm') => scanString strm' (s :: l) true (* More to do. *) in scanString str [] false end val fromString = StringCvt.scanString scan (* TODO: More efficient version. *) fun fromCString "" = SOME "" (* Special case *) | fromCString s = let val len = sizeAsWord s fun rdr i = if i = len then NONE else SOME(unsafeStringSub(s, i), i+0w1) (* Repeatedly convert escape sequences and accumulate the results in a list. *) fun convChar i = case scanC rdr i of NONE => [] | SOME(res, j) => res :: convChar j in (* If we couldn't even get a single character we return NONE. *) case convChar 0w0 of [] => NONE | res => SOME(implode res) end (* Install conversion and print functions. *) local (* It might be worth rewrite scan to raise Conversion with a string argument so we can pass back information about why an escape code was invalid. *) (* Unlike fromString which returns as much of the input string as could be converted this raises an exception if the input contains any invalid character. *) fun convString s = let val len = sizeAsWord s fun rdr i = if i = len then NONE else SOME(unsafeStringSub(s, i), i+0w1) (* Repeatedly convert escape sequences and accumulate the results in a list. *) fun convChars i = if i = len then [] (* Finished *) else case Char.scan rdr i of NONE => (* Bad conversion *) raise RunCall.Conversion "Invalid string constant" | SOME(res, j) => res :: convChars j in implode(convChars 0w0) end fun print_string _ _ (s: string) = PolyML.PrettyString(concat["\"", toString s, "\""]) in val () = RunCall.addOverload convString "convString"; val () = PolyML.addPrettyPrinter print_string end end (* CharArray is very similar to Word8Array and most of the code is duplicated. *) structure CharArray : MONO_ARRAY = struct (* We can't use the segment length for the length of the vector as we do for "normal" arrays and vectors. There are two ways of handling this. We could implement arrays in the same way as strings, with a length word in the first word, or we could store the length separately. The former has the advantage of using less store but the latter allows the byte vector to be used for other purposes and is probably faster. *) type address = LibrarySupport.address datatype array = datatype LibrarySupport.CharArray.array (* N.B. This representation is hard-wired into TextIO. Don't change this representation without changing that as well. *) type vector = string and elem = char infix 9 sub (* For what it's worth *) val maxLen = String.maxSize (* Use the same maximum as string. *) fun length(Array(l, _)) = wordAsInt l fun array (length, ini) = let (* The array is allocated unitialised. *) val len = unsignedShortOrRaiseSize length val vec = LibrarySupport.allocBytes len fun init i = if len <= i then () else (RunCall.storeByte(vec, i, ini); init(i+0w1)) in init 0w0; Array(len, vec) end fun op sub (Array(l, v), i: int): elem = let val iW = if isShortInt i then intAsWord i else raise General.Subscript in (* Negative values will always be >= l when compared unsigned. *) if iW >= l then raise General.Subscript else RunCall.loadByte (v, iW) end fun update (Array (l, v), i: int, new) : unit = let val iW = if isShortInt i andalso i >= 0 then intAsWord i else raise General.Subscript in if iW >= l then raise General.Subscript else RunCall.storeByte (v, iW, new) end; (* Create an array from a list. *) local fun fromList' (l : char list) : word*address = let (* List has not yet been defined. The length is limited by the memory so this won't overflow. *) fun listLength([], n) = n | listLength(_::l, n) = listLength(l, n+0w1) val length = listLength(l, 0w0) (* Make a array initialised to zero. *) val vec = LibrarySupport.allocBytes length (* Copy the list elements into the array. *) fun init (v, i, a :: l) = (RunCall.storeByte(v, i, a); init(v, i + 0w1, l)) | init (_, _, []) = () in init(vec, 0w0, l); (length, vec) end in fun fromList (l : elem list) : array = Array(fromList' l) end fun tabulate (length: int , f : int->elem): array = let val len = unsignedShortOrRaiseSize length val vec = LibrarySupport.allocBytes len (* Initialise it to the function values. *) fun init i = if len <= i then () else (RunCall.storeByte(vec, i, f(wordAsInt i)); init(i+0w1)) in init 0w0; Array(len, vec) end fun vector (Array(len, vec)) = if len = 0w0 then "" else if len = 0w1 then (* Single character string. *) charAsString (RunCall.loadByte (vec, 0w0)) else let (* Make an array initialised to zero. *) val new_vec = LibrarySupport.allocString len in System_move_bytesA(vec, RunCall.unsafeCast new_vec, 0w0, wordSize, len); RunCall.clearMutableBit new_vec; new_vec end (* Copy an array into another. It's possible for the arrays to be the same but in that case diW must be zero and the copy is a no-op. *) fun copy {src=Array (len, s), dst=Array (dlen, d), di: int} = let val diW = unsignedShortOrRaiseSubscript di in if diW+len > dlen then raise General.Subscript else System_move_bytesA(s, d, 0w0, diW, len) end (* Copy a vector into an array. *) (* Since the source is actually a string we have to start the copy from si+wordSize. *) fun copyVec {src, dst=Array (dlen, d), di: int} = let val len = sizeAsWord src val diW = unsignedShortOrRaiseSubscript di in if diW + len > dlen then raise General.Subscript else System_move_bytesA(RunCall.unsafeCast src, d, wordSize, diW, len) end (* Create the other functions. *) structure ArrayOps = VectorOperations( struct type vector = array and elem = elem fun length(Array(len, _)) = len fun unsafeSub(Array(_, v), i) = RunCall.loadByte(v, i) and unsafeSet(Array(_, v), i, c) = RunCall.storeByte(v, i, c) end); open ArrayOps; local (* Install the pretty printer for CharArray.array *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty _ _ x = PolyML.PrettyString(String.concat["\"", String.toString(vector x), "\""]) in val () = PolyML.addPrettyPrinter pretty end end; structure Substring :> sig type substring eqtype char eqtype string val size : substring -> int val base : substring -> (string * int * int) val isEmpty : substring -> bool val sub : (substring * int) -> char val getc : substring -> (char * substring) option val first : substring -> char option val extract : (string * int * int option) -> substring val substring : (string * int * int) -> substring (*val slice : (substring * int * int option) -> substring*) val full: string -> substring val string : substring -> string val concat: substring list ->string val concatWith: string -> substring list ->string val explode : substring -> char list val translate : (char -> string) -> substring -> string val app : (char -> unit) -> substring -> unit val foldl : ((char * 'a) -> 'a) -> 'a -> substring -> 'a val foldr : ((char * 'a) -> 'a) -> 'a -> substring -> 'a val tokens : (char -> bool) -> substring -> substring list val fields : (char -> bool) -> substring -> substring list val isPrefix: string -> substring -> bool val isSubstring: string -> substring -> bool val isSuffix: string -> substring -> bool val compare : (substring * substring) -> General.order val collate : ((char * char) -> General.order) -> (substring * substring) -> General.order val triml : int -> substring -> substring val trimr : int -> substring -> substring val splitl : (char -> bool) -> substring -> (substring * substring) val splitr : (char -> bool) -> substring -> (substring * substring) val splitAt : (substring * int) -> (substring * substring) val dropl : (char -> bool) -> substring -> substring val dropr : (char -> bool) -> substring -> substring val takel : (char -> bool) -> substring -> substring val taker : (char -> bool) -> substring -> substring val position : string -> substring -> (substring * substring) val span : (substring * substring) -> substring type vector type elem type slice val length : slice -> int val subslice: slice * int * int option -> slice val slice: vector * int * int option -> slice val vector: slice -> vector val getItem: slice -> (elem * slice) option val appi : ((int * elem) -> unit) -> slice -> unit val mapi : ((int * elem) -> elem) -> slice -> vector val map : (elem -> elem) -> slice -> vector val foldli : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (int * elem -> bool) -> slice -> (int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool sharing type slice = substring end where type elem = char where type vector = string where type char = char where type string = string = struct type vector = string and elem = char structure VectorSliceOps = VectorSliceOperations( struct type vector = vector and elem = char val vecLength = sizeAsWord fun unsafeVecSub(s, i: word) = RunCall.loadByteFromImmutable(s, i + wordSize) fun unsafeVecUpdate _ = raise Fail "Should not be called" (* Not applicable *) end); open VectorSliceOps; (* vector: get the slice out. Since the underlying vector is implemented using the basic string type we can use substring here. *) fun vector slice : vector = let val (vector, start, length) = base slice in unsafeSubstring(vector, intAsWord start, intAsWord length) end (* It would be more efficient to do these as single operations but it's probably too complicated. *) fun concat L = String.concat(List.map vector L) fun concatWith s L = String.concatWith s (List.map vector L) fun map f slice = String.map f (vector slice) fun mapi f slice = CharVector.mapi f (vector slice) (* Substring operations. *) type substring = slice type char = elem type string = vector val size = length (* Since we've already checked the bounds we don't need to do it here. *) fun string(Slice{vector=s, start=i, length=l}) = unsafeSubstring(s, i, l) (* Check that the index and length are valid. *) fun substring(s, i, j) = if i < 0 orelse j < 0 orelse String.size s < i+j then raise General.Subscript else Slice{vector=s, start=intAsWord i, length=intAsWord j} fun extract(s, i, NONE) = substring(s, i, String.size s-i) | extract(s, i, SOME j) = substring(s, i, j) fun triml k = if k < 0 then raise General.Subscript else fn (Slice{vector=s, start=i, length=l}) => if k > wordAsInt l then Slice{vector=s, start=i+l, length=0w0} else Slice{vector=s, start=i + intAsWord k, length=l - intAsWord k} fun trimr k = if k < 0 then raise General.Subscript else fn (Slice{vector=s, start=i, length=l}) => if k > wordAsInt l then Slice{vector=s, start=i, length=0w0} else Slice{vector=s, start=i, length=l - intAsWord k} fun explode (Slice{vector=s, start=i, length=l}) : char list = stringExplode(s, i, l) (* Compare two strings. We could define compare in terms of collate and it would be just as efficient provided we set PolyML.Compiler.maxInlineSize to a large enough value that collate was inlined, and hence Char.compare would be inlined. *) fun compare (Slice{vector=s, start=j, length=l}, Slice{vector=s', start=j', length=l'}) = let fun comp' i = if i = l then ( if l = l' then General.EQUAL else (* l < l' *) General.LESS ) else if i = l' (* and not l *) then General.GREATER else case Char.compare(unsafeStringSub(s, i+j), unsafeStringSub(s', i+j')) of General.EQUAL => comp' (i+0w1) | General.LESS => General.LESS | General.GREATER => General.GREATER in comp' 0w0 end fun isPrefix (s1: string) (Slice{vector=s2, start=i, length=l}) = let val size_s1 = sizeAsWord s1 in if size_s1 > l then false else byteMatch s1 s2 0w0 i size_s1 end (* True if s1 is a suffix of s2 *) fun isSuffix s1 (Slice{vector=s2, start=i, length=l}) = let val size_s1 = sizeAsWord s1 in if size_s1 > l then false else byteMatch s1 s2 0w0 (l + i - size_s1) size_s1 end (* True if s1 is a substring of s2 *) fun isSubstring s1 (Slice{vector=s2, start, length}) = let val size_s1 = sizeAsWord s1 (* Start at the beginning and compare until we get a match. *) fun doMatch i s = if s < size_s1 then false (* The remainder of the string is too small to match. *) else if byteMatch s1 s2 0w0 i size_s1 then true else doMatch (i+0w1) (s-0w1) in doMatch start length end (* TODO: This would be quicker with an RTS function to scan for a character in a string. *) fun splitl f (Slice{vector=s, start=i, length=l}) = let fun find j = if j = i+l then (* All chars satisfy f *) (Slice{vector=s, start=i, length=l}, Slice{vector=s, start=j, length=0w0}) else if f(unsafeStringSub(s, j)) then find (j+0w1) else (* Found a separator *) (Slice{vector=s, start=i, length=j-i}, Slice{vector=s, start=j, length=l+i-j}) in find i end (* TODO: This would be quicker with an RTS function to scan for a character in a string. *) fun splitr f (Slice{vector=s, start=i, length=l}) = let fun find j = if j = i then (* All chars satisfy f *) (Slice{vector=s, start=j, length=0w0}, Slice{vector=s, start=i, length=l}) else if f(unsafeStringSub(s, j-0w1)) then find (j-0w1) else (* Found a separator *) (Slice{vector=s, start=i, length=j-i}, Slice{vector=s, start=j, length=l+i-j}) in find (i+l) end fun splitAt (Slice{vector=s, start=i, length=l}, j) = let val j' = unsignedShortOrRaiseSubscript j in if j' > l then raise General.Subscript else (Slice{vector=s, start=i, length=j'}, Slice{vector=s, start=i+j', length=l-j'}) end (* TODO: Define these directly rather than via split. It's not so expensive doing it this way for substrings because we don't actually copy the strings. *) fun takel p s = #1(splitl p s) and dropl p s = #2(splitl p s) and taker p s = #2(splitr p s) and dropr p s = #1(splitr p s) (* NOTE: There's an error in the web page. The example function uses "trim" rather than "triml". QUESTION: The check i'+n' >= i does not guarantee that ss is to the left of ss', merely that the end of ss' is to the right of the beginning of ss. I can't remember my reasoning about this at the moment. *) fun span (Slice{vector=s, start=i, length=_}, Slice{vector=s', start=i', length=n'}) = (* First check with pointer equality and only if that fails do we use the string equality function. *) if (RunCall.pointerEq(s, s') orelse s = s') andalso i'+n' >= i then Slice{vector=s, start=i, length=i'+n'-i} else raise General.Span (* tokens and fields are very similar except that tokens does not return empty strings for adjacent delimiters whereas fields does. This definition is almost the same as String.tokens and String.fields. *) (* QUESTION: Are these defined always to return the results as substrings of the original base string? That's important if we want to be able to use "span" to join them up again. *) fun tokens p (Slice{vector=s, start=j, length}) = let val ends = j+length fun tok' i l = (* i is the character to examine. l is the start of a token *) if i = ends then (* Finished the input. Return any partially completed string. *) ( if l = i then [] else [Slice{vector=s, start=l, length=i-l}] ) else if p (unsafeStringSub(s, i)) then (* It's a delimiter. If we have more than one character in the string we create a string otherwise we just continue. *) ( if l = i then tok' (i+0w1) (i+0w1) else Slice{vector=s, start=l, length=i-l} :: tok' (i+0w1) (i+0w1) ) else (* Token: Keep accumulating characters. *) tok' (i+0w1) l in tok' j j end fun fields p (Slice{vector=s, start=j, length}) = let val ends = j+length fun field' i l = (* i is the character to examine. l is the start of a token *) if i = ends then (* Finished the input. Return any partially completed string. *) [Slice{vector=s, start=l, length=i-l}] else if p (unsafeStringSub(s, i)) then (* It's a delimiter. Finish the partially completed string and start another. *) Slice{vector=s, start=l, length=i-l} :: field' (i+0w1) (i+0w1) else (* Field: Keep accumulating characters. *) field' (i+0w1) l in field' j j end (* TODO: Could be defined more efficiently. *) (* map and translate are defined to apply f from left to right. *) fun translate f s = String.concat(List.map f (explode s)) fun position s (Slice{vector=s', start=i, length=n}) = let val m = sizeAsWord s (* Length of string to match. *) fun pos k = if k > n-m then (* No match *) (Slice{vector=s', start=i, length=n}, Slice{vector=s', start=i+n, length=0w0}) else if compare(full s, Slice{vector=s', start=i+k, length=m}) = EQUAL then (* Match *) (Slice{vector=s', start=i, length=k}, Slice{vector=s', start=k+i, length=n-k}) else pos (k+0w1) in (* Because m and n are word values n-m is UNSIGNED so we have to check this before we call "pos". *) if m > n then (Slice{vector=s', start=i, length=n}, Slice{vector=s', start=i+n, length=0w0}) else pos 0w0 end (* Return the first character of the string together with the rest of the string. *) fun getc(Slice{length=0w0, ...}) = NONE | getc(Slice{vector=s, start=i, length=l}) = SOME(unsafeStringSub(s, i), Slice{vector=s, start=i+0w1, length=l-0w1}) fun first(Slice{length=0w0, ...}) = NONE | first(Slice{vector=s, start=i, length=_}) = SOME(unsafeStringSub(s, i)) end; (* CharVectorSlice. *) structure CharVectorSlice: MONO_VECTOR_SLICE where type elem = char where type vector = string = Substring; structure Substring : SUBSTRING = struct open Substring; val slice = subslice end local (* Install the pretty printer for CharVector.slice (and substring) *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty _ _ s = PolyML.PrettyString(String.concat["\"", String.toString(Substring.string s), "\""]) in val _ = PolyML.addPrettyPrinter pretty end; structure CharArraySlice:> MONO_ARRAY_SLICE where type elem = char where type vector = string where type vector_slice = CharVectorSlice.slice where type array = CharArray.array = struct type elem = char type vector = string datatype array = datatype LibrarySupport.CharArray.array (* N.B. This representation is hard-wired into TextIO. Don't change this representation without changing that as well. *) type vector_slice = CharVectorSlice.slice structure ArraySliceOps = VectorSliceOperations( struct type vector = array and elem = char fun unsafeVecSub(Array(_, s: LibrarySupport.address), i) = RunCall.loadByte(s, i) and unsafeVecUpdate(Array(_, s), i, x) = RunCall.storeByte (s, i, x) and vecLength(Array(l, _)) = l end); open ArraySliceOps; (* vector: get the slice out. *) fun vector slice: vector = let val (Array(_, vec), start, length) = base slice in if length = 0 then "" else if length = 1 then (* Optimise single character strings. *) charAsString(RunCall.loadByte (vec, intAsWord start)) else let val len = intAsWord length (* Make an array initialised to zero. *) val new_vec = LibrarySupport.allocString len in System_move_bytesA(vec, RunCall.unsafeCast new_vec, intAsWord start, wordSize, len); RunCall.clearMutableBit new_vec; new_vec end end (* Copy a slice into an array. N.B. The arrays could be the same. *) fun copy {src, dst, di: int} = let val (src, start, length) = base src in if di < 0 orelse di+length > CharArray.length dst then raise General.Subscript else (* We can't use System_move_bytes because of the potential overlap problem. Instead we use explicit copying choosing to copy up or down depending on the index whether the source and destination are the same or not. *) let fun copyUp n = if n = length then () else (CharArray.update(dst, n+di, CharArray.sub(src, n+start)); copyUp(n+1)) and copyDown n = if n < 0 then () else (CharArray.update(dst, n+di, CharArray.sub(src, n+start)); copyDown(n-1)) in if di > start then copyDown(length-1) else copyUp 0 end end (* Copy a vector slice into an array. *) fun copyVec {src: CharVectorSlice.slice, dst=Array (dlen, d), di: int} = let val (source, i, l) = CharVectorSlice.base src val len = intAsWord l and offset = intAsWord i val diW = unsignedShortOrRaiseSubscript di in if diW + len > dlen then raise General.Subscript (* The source is represented by a string whose first word is the length. *) else System_move_bytesA(RunCall.unsafeCast source, d, offset + wordSize, diW, len) end end (* CharArraySlice *); local (* Install the pretty printer for CharArraySlice.slice *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty _ _ x = PolyML.PrettyString(String.concat["\"", CharArraySlice.vector x, "\""]) in val _ = PolyML.addPrettyPrinter pretty end structure StringCvt : STRING_CVT = StringCvt end; val () = RunCall.addOverload Char.>= ">=" and () = RunCall.addOverload Char.<= "<=" and () = RunCall.addOverload Char.> ">" and () = RunCall.addOverload Char.< "<"; val () = RunCall.addOverload String.>= ">=" and () = RunCall.addOverload String.<= "<=" and () = RunCall.addOverload String.> ">" and () = RunCall.addOverload String.< "<"; (* Values available unqualified at the top level. *) val ord : char -> int = Char.ord val chr : int -> char = Char.chr val concat : string list -> string =String.concat val implode : char list -> string = String.implode val explode : string -> char list = String.explode val substring : string * int * int -> string = String.substring; val op ^ : string * string -> string = String.^; type substring = Substring.substring; val size: string -> int = String.size; val str: char -> string = String.str; (* These are declared in the prelude. *) (* val size : string -> int = String.size val str : char -> string = String.str *) polyml-5.7.1/basis/Word32In64.sml0000644000175000017500000001250513204034553015341 0ustar daviddavid(* Title: Standard Basis Library: Word32 Structure Author: David Matthews Achim D. Brucker Copyright David Matthews 1999 Achim D. Brucker 2006 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is a hacked version of Word32 - a 32bit Word implementation for PolyML 5. It's neither well tested nor efficiently implemented. Nevertheless, it works well enough for the XML parser fxp (http://www2.in.tum.de/~berlea/Fxp/). *) (* This version has been modified for 64-bit architecture and does not require boxed word values. DCJM 14/8/09. *) (* We need to declare a Word64 structure as well. *) structure Word64 = LargeWord; val () = if Word64.wordSize <> 64 then raise Fail "Not 64-bit" else () structure Word32 :> WORD = struct (* We can use Word here because a 63-bit tagged value is sufficient. *) open Word (* Values of type Word32.word can be in the range 0.. 4294967295 *) val wordSize = 32 val maxWord = 4294967295 val maxWordAsWord: word = (Word.fromInt maxWord) infix 8 << >> ~>> ; (* Comparison operations, min, max and compare, fmt, toString, orb, andb, xorb can be inherited directly from LargeWord. Similarly div, mod and >> since the results will always be no larger than the arguments. *) (* Not the same as Word.notb because it only affects the bottom 32 bits. *) fun notb x = xorb(maxWordAsWord, x) (* Internal function to convert from Word.word. *) fun fromWord (w: Word.word) = andb(w, maxWordAsWord) (* Converting from LargeWord.word. First convert to Word.word and then mask. *) val fromLargeWord = fromWord o Word.fromLargeWord and fromInt = fromWord o Word.fromInt and fromLargeInt = fromWord o Word.fromLargeInt val fromLarge = fromLargeWord (* Arithmetic shift - sign extends. *) (* Shift the "sign" bit into the real sign bit position then shift right down again. *) local val toSignBit = (Word.fromInt(Int.-(Word.wordSize,wordSize))) in fun op ~>> (a: word, b: Word.word): word = fromWord(Word.~>>(Word.<<(a, toSignBit), Word.+(b, toSignBit))) (* Convert to a large word by sign extending. *) fun toLargeWordX (w: word): LargeWord.word = LargeWord.~>>(Word.toLargeWordX(Word.<<(w, toSignBit)), toSignBit) end val toLargeX = toLargeWordX (* Conversion to signed integer. *) fun toIntX (x: word) : int = LargeWord.toIntX(toLargeWordX x) and toLargeIntX (x: word) : LargeInt.int = LargeWord.toLargeIntX(toLargeWordX x) (* Use Word.scan but check that the result is in the range. *) val wordScan = scan; fun scan radix getc src = case wordScan radix getc src of NONE => NONE | SOME(res, src') => if res > maxWordAsWord then raise General.Overflow else SOME(res, src') val fromString = StringCvt.scanString (scan StringCvt.HEX) (* TODO: Replace by built-ins? *) fun op + (a, b) = fromWord(Word.+(a, b)) and op - (a, b) = fromWord(Word.-(a, b)) and op * (a, b) = fromWord(Word.*(a, b)) and op << (a, b) = fromWord(Word.<<(a, b)) fun ~ x = 0w0 - x end; (* Because we are using opaque signature matching we have to install type-dependent functions OUTSIDE the structure. *) local (* The string may be either 0wnnn or 0wxXXX *) fun convWord s : Word32.word = let val radix = (* The word value must consist of at least 0w and a digit. *) if String.sub(s, 2) = #"x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (Word32.scan radix) s of NONE => raise RunCall.Conversion "Invalid Word32.word constant" | SOME res => res end (* Install the pretty printer for Word32.word *) fun pretty _ _ x = PolyML.PrettyString("0wx" ^ Word32.toString x) in val () = RunCall.addOverload convWord "convWord" val () = PolyML.addPrettyPrinter pretty end; (* Add the overloaded operators. *) val () = RunCall.addOverload Word32.~ "~"; val () = RunCall.addOverload Word32.+ "+"; val () = RunCall.addOverload Word32.- "-"; val () = RunCall.addOverload Word32.* "*"; val () = RunCall.addOverload Word32.div "div"; val () = RunCall.addOverload Word32.mod "mod"; val () = RunCall.addOverload Word32.< "<"; val () = RunCall.addOverload Word32.> ">"; val () = RunCall.addOverload Word32.<= "<="; val () = RunCall.addOverload Word32.>= ">="; polyml-5.7.1/basis/RealSignature.sml0000644000175000017500000000635413204034553016372 0ustar daviddavid(* Title: Standard Basis Library: Real Signature Author: David Matthews Copyright David Matthews 2000, 2005, 2008, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature REAL = sig type real structure Math : MATH where type real = real val radix : int val precision : int val maxFinite : real val minPos : real val minNormalPos : real val posInf : real val negInf : real val + : (real * real) -> real val - : (real * real) -> real val * : (real * real) -> real val / : (real * real) -> real val *+ : real * real * real -> real val *- : real * real * real -> real val ~ : real -> real val abs : real -> real val min : (real * real) -> real val max : (real * real) -> real val sign : real -> int val signBit : real -> bool val sameSign : (real * real) -> bool val copySign : (real * real) -> real val compare : (real * real) -> General.order val compareReal : (real * real) -> IEEEReal.real_order val < : (real * real) -> bool val <= : (real * real) -> bool val > : (real * real) -> bool val >= : (real * real) -> bool val == : (real * real) -> bool val != : (real * real) -> bool val ?= : (real * real) -> bool val unordered : (real * real) -> bool val isFinite : real -> bool val isNan : real -> bool val isNormal : real -> bool val class : real -> IEEEReal.float_class val fmt : StringCvt.realfmt -> real -> string val toString : real -> string val fromString : string -> real option val scan : (char, 'a) StringCvt.reader -> (real, 'a) StringCvt.reader val toManExp : real -> {man : real, exp : int} val fromManExp : {man : real, exp : int} -> real val split : real -> {whole : real, frac : real} val realMod : real -> real val rem : (real * real) -> real val nextAfter : (real * real) -> real val checkFloat : real ->real val realFloor : real -> real val realCeil : real -> real val realTrunc : real -> real val realRound : real -> real val floor : real -> Int.int val ceil : real -> Int.int val trunc : real -> Int.int val round : real -> Int.int val toInt : IEEEReal.rounding_mode -> real -> int val toLargeInt : IEEEReal.rounding_mode -> real -> LargeInt.int val fromInt : int -> real val fromLargeInt : LargeInt.int -> real val toLarge : real -> LargeReal.real val fromLarge : IEEEReal.rounding_mode -> LargeReal.real -> real val toDecimal : real -> IEEEReal.decimal_approx val fromDecimal : IEEEReal.decimal_approx -> real option end; polyml-5.7.1/basis/HashArray.ML0000644000175000017500000001500713204034553015217 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008, 2014, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Hash table type - Creates a hash table of specified initial size. This version expands the hash table and rehashes when the table gets too full *) structure HashArray:> sig type 'a hash val hash: int -> 'a hash val update: 'a hash * string * 'a -> unit val sub: 'a hash * string -> 'a option val delete: 'a hash * string -> unit val fold: (string * 'a * 'b -> 'b) -> 'b -> 'a hash -> 'b end = struct local infix 8 sub (* Each entry in the table is a pair containing the key and the value. *) (* The type of each entry in the array. Putting the tuple in here allows the compiler to use an optimised representation. We have to distinguish empty entries, which stop the search, from deleted entries that don't. *) datatype 'a namedOption = Empty | Deleted | Used of string * 'a in fun hashValue vecLen str = Word.toInt( Word.mod( CharVector.foldr (fn (ch, n) => Word.fromInt(Char.ord ch) + 0w7*n) 0w0 str, (Word.fromInt vecLen))) (* The above function is the quickest and simplest way of computing the hash value now that we have Word.* and Word.mod compiled inline. They aren't implemented in all code-generators so it could be worth retaining the old code. DCJM 26/2/01. *) datatype 'a hash = Hash of { used: int ref, entries: 'a namedOption array ref } (* Create an empty table. *) fun hash size = Hash { used = ref 0, entries = ref (Array.array (size, Empty)) } fun op sub (Hash {entries = ref arr, ...}, name : string) : 'a option = (* Searches the table starting from the position given by the hash value. *) let open Array val vecLen = length arr (* Loops until it either finds an empty entry - in which case it returns NONE, or it finds the name it is looking for. There will always be several empty entries because we rehash if it gets too full. *) fun find i = let val h = arr sub i in case h of Empty => NONE | Deleted => find ((if i = 0 then vecLen else i) - 1) | Used (n,v) => if name = n then SOME v else find ((if i = 0 then vecLen else i) - 1) end in find (hashValue vecLen name) end fun update (Hash {entries as ref currentArray, used}, name, value) = let open Array fun enter a i (entry as (name, _)) = (* Loops until it either finds an empty entry - in which case it enters the value in there, or it finds the string. If it finds a deleted entry it can reuse that but it must check that we haven't also got the same string further along. *) case a sub i of Empty => (* Empty. Add the entry and increment "used". *) (update (a, i, Used entry); true) | Deleted => (* Deleted. Use this entry. *) let fun checkEntry i = case a sub i of Empty => () | Deleted => checkEntry((if i = 0 then length a else i) - 1) | Used(n, _) => if n = name then update(a, i, Deleted) else checkEntry((if i = 0 then length a else i) - 1) in checkEntry i; update (a, i, Used entry); false end | Used (n, _) => (* In use. Overwrite if it's the same name. *) if n = name then (update (a, i, Used entry); false) (* Same name as previous - overwrite it *) else enter a ((if i = 0 then length a else i) - 1) entry; val () = if enter currentArray (hashValue (length currentArray) name) (name, value) then used := !used + 1 else () val currentSize = length currentArray in (* Do we need to rehash ? *) if !used * 5 > currentSize * 4 (* More than 80% full so rehash *) then let val newN = currentSize * 2 (* Double the size *) val newA = array (newN, Empty) val hashNewN = hashValue newN fun copyOver(Used(entry as (name, _))) = if enter newA (hashNewN name) entry then used := !used+1 else () | copyOver _ = () in (* Reset the count to include only non-deleted entries. *) used := 0; (* Copy into the new array *) Array.app copyOver currentArray; entries := newA end else () end fun fold f init (Hash { entries = ref e, ...}) = let fun getEntry(Used(name,alpha), acc) = f (name, alpha, acc) | getEntry(_, acc) = acc in Array.foldl getEntry init e end fun delete(Hash {entries = ref arr, ...}, name) = let open Array val vecLen = length arr (* Similar to "sub" except that it overwrites the entry if it finds it. *) fun find i = let val h = arr sub i in case h of Empty => () (* Not there *) | Deleted => find ((if i = 0 then vecLen else i) - 1) | Used (n, _) => if name = n then update(arr, i, Deleted) else find ((if i = 0 then vecLen else i) - 1) end in find (hashValue vecLen name) end end (* local *); end (* HashArray *); polyml-5.7.1/basis/MATH.sml0000644000175000017500000000266513204034553014357 0ustar daviddavid(* Title: Standard Basis Library: Math Signature. Author: David Matthews Copyright David Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: checked, no change required. *) signature MATH = sig type real val pi : real val e : real val sqrt : real -> real val sin : real -> real val cos : real -> real val tan : real -> real val asin : real -> real val acos : real -> real val atan : real -> real val atan2 : (real * real) -> real val exp : real -> real val pow : (real * real) -> real val ln : real -> real val log10 : real -> real val sinh : real -> real val cosh : real -> real val tanh : real -> real end; polyml-5.7.1/basis/BoolArray.sml0000644000175000017500000004716713204034553015526 0ustar daviddavid(* Title: Standard Basis Library: BoolArray and BoolVector Structures Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local open LibrarySupport (* TODO: Use a single word for vectors of size <= number of bits in a word. *) (* We use int here for the length rather than word because the number of bits could be more than the maximum value of Word.word. *) datatype vector = Vector of int * Bootstrap.byteVector (* This has a byte-wise equality. *) and array = Array of int * Bootstrap.byteArray (* This has pointer equality. *) val wordSize : word = LibrarySupport.wordSize (* Casts between int and word. *) val intAsWord: int -> word = RunCall.unsafeCast and wordAsInt: word -> int = RunCall.unsafeCast val bitsPerWord = wordSize * 0w8 (* Limit the size to Array.maxLen to avoid arithmetic overflow. *) val maxLen = Array.maxLen local val F_mutable_bytes = 0wx41 in (* Allocate memory for a vector or an array. *) fun alloc (bits: int) = let val words : word = if bits < 0 orelse bits > maxLen then raise General.Size else (Word.fromInt bits + (bitsPerWord - 0w1)) div bitsPerWord val vec = RunCall.allocateByteMemory(words, F_mutable_bytes) val bytes = words * wordSize fun fill n = if n = bytes then () else (RunCall.storeByte(vec, n, 0w0); fill(n+0w1)) (* We will only set the bits that we actually use. Unused bytes will be uninitialised. The equality function we're using tests all the bytes so we need to initialise them. *) in if bytes = 0w0 then () else fill(bytes - wordSize); vec end end val andb = Word.andb and orb = Word.orb and notb = Word.notb and << = Word.<< and >> = Word.>>; infix 9 sub infix 7 andb infix 6 orb infix 5 << >> (* Create a vector/array from a list. Used as the basis of Array.fromList and Vector.fromList. *) fun fromList' (l : bool list) = let val length = List.length l (* Make a array initialised to zero. *) val vec = alloc length (* Accumulate the list elements into bytes and store them in the vector. *) fun init (byteno, acc, bit, []) = if bit = 0w1 then () else RunCall.storeByte(vec, byteno, acc) | init (byteno, acc, bit, a :: b) = let val byte = if a then bit orb acc else acc in if bit = 0wx80 then ( RunCall.storeByte(vec, byteno, byte); init(byteno+0w1, 0w0, 0w1, b) ) else init(byteno, byte, bit << 0w1, b) end in init(0w0, 0w0, 0w1, l); (length, vec) end fun tabulate' (length: int, f : int->bool) = let val vec = if length >= 0 then alloc length else raise General.Size; (* Accumulate the bits into bytes and store into the array. *) fun init i byteNo bit acc = if i < length then let val byte = if f i then bit orb acc else acc in if bit = 0wx80 then ( RunCall.storeByte(vec, byteNo, byte) ; init (i+1) (byteNo+0w1) 0w1 0w0 ) else init (i+1) byteNo (bit << 0w1) byte end else if acc = 0w0 then () else (* Put in the last byte. *) RunCall.storeByte(vec, byteNo, acc) in init 0 0w0 0w1 0w0; (length, vec) end (* Internal function which subscripts the vector assuming that the index has already been checked for validity. *) fun uncheckedSub (v, i: int): bool = let val iW = Word.fromInt i val byte = RunCall.loadByte(v, iW >> 0w3) val mask = 0w1 << (iW andb 0w7) in byte andb mask <> 0w0 end (* Move a set of bits from one vector of bytes to another. The bits may not be on the same byte alignment. Does not examine the destination so if dest_off is not byte aligned any bits required in the first byte must be passed in as src_in. Returns any bits which do not exactly fit into a byte. *) (* TODO: This only handles the case where the source starts at the beginning of the vector. It is easy to modify it for the case where the source offset is a multiple of 8 but more difficult to handle the other cases. *) fun move_bits(src: Bootstrap.byteVector, dest: Bootstrap.byteVector, dest_off, len, last_bits) = let val dest_byte = intAsWord(Int.quot(dest_off, 8)) (* Byte offset *) val dest_bit = intAsWord dest_off - dest_byte*0w8 (* Bit offset *) fun do_move last byte len : word = if len >= 8 then let (* Get the next byte and shift it up *) val newbyte = last orb (RunCall.loadByteFromImmutable(src, byte) << dest_bit) in (* Store the low-order 8 bits into the destination. *) RunCall.storeByte(dest, dest_byte+byte, newbyte); (* Shift the accumulator down by 8 bits and get ready for the next byte. *) do_move (newbyte >> 0w8) (byte+0w1) (len-8) end else if len <= 0 then last else (* 0 < len < 8 *) let (* Get the next byte and shift it up *) val nextsrc = RunCall.loadByteFromImmutable(src, byte); val newbyte: word = last orb (nextsrc << dest_bit) (* This assumes that any extra bits of the source are zero. *) in if len + Word.toInt dest_bit >= 8 then ( (* Store the low-order 8 bits into the destination. *) RunCall.storeByte(dest, dest_byte+byte, newbyte); (* Shift the accumulator down by 8 bits and get ready for the next byte. *) do_move (newbyte >> 0w8) (byte+0w1) (len-8) ) else newbyte end in (* TODO: If dest_bit is zero we can simply move the bytes. If len is not a multiple of 8 we may have to return the low-order bits. *) do_move last_bits 0w0 len end in structure BoolVector: MONO_VECTOR = struct type vector = vector type elem = bool val maxLen = maxLen fun length(Vector(l, _)) = l fun op sub (Vector(l, v), i: int): bool = if i < 0 orelse i >= l then raise General.Subscript else uncheckedSub(v, i) (* Create a vector from a list. Must lock the vector before returning it. *) fun fromList (l : elem list) : vector = let val (length, vec) = fromList' l in RunCall.clearMutableBit vec; Vector(length, vec) end fun tabulate (length: int, f : int->elem): vector = let val (length, vec) = tabulate' (length, f) in RunCall.clearMutableBit vec; Vector(length, vec) end (* fun map f (Vector(len, vec)) = let val new_vec = alloc len (* Destination vector. *) fun mapbyte b i acc max = if i = max then acc else if f ((b andb i) <> 0w0) then mapbyte b (i<<0w1) (acc orb i) max else mapbyte b (i<<0w1) acc max fun copy b l = if l <= 0 then () else let val byte = System_loadb(vec, b) val res = (* Map each byte to get the result. Must not apply the function beyond the last bit. *) if l >= 8 then mapbyte byte 0w1 0w0 0wx100 else mapbyte byte 0w1 0w0 (0w1 << Word.fromInt l) in RunCall.storeByte(new_vec, b, res); copy (b+0w1) (l-8) end in copy 0w0 len; RunCall.clearMutableBit new_vec; Vector(len, new_vec) end*) fun mapi f (Vector(len, vec)) = let val new_vec = alloc len (* Destination vector. *) fun mapbyte b i acc max l = if i = max then acc else if f (len-l, ((b andb i) <> 0w0)) then mapbyte b (i<<0w1) (acc orb i) max (l-1) else mapbyte b (i<<0w1) acc max (l-1) fun copy b l = if l <= 0 then () else let val byte = RunCall.loadByteFromImmutable(vec, b) val res = (* Map each byte to get the result. Must not apply the function beyond the last bit. *) if l >= 8 then mapbyte byte 0w1 0w0 0wx100 l else mapbyte byte 0w1 0w0 (0w1 << Word.fromInt l) l in RunCall.storeByte(new_vec, b, res); copy (b+0w1) (l-8) end in copy 0w0 len; RunCall.clearMutableBit new_vec; Vector(len, new_vec) end (* To save duplicating almost the same code just define map in terms of mapi. *) fun map f v = mapi (fn (_, x) => f x) v (* Return a copy of the vector with a particular entry replaced *) fun update (v as Vector(len, _), i, c) = if i < 0 orelse i >= len then raise Subscript else mapi (fn (j, s) => if j = i then c else s) v fun concat l = let (* Calculate the total length *) fun total [] i = i | total (Vector(len, _)::t) i = total t (i+len) val total_len = total l 0 in let (* Allocate a new vector. *) val new_vec = alloc total_len (* Copy all the source vectors into the destination. *) fun copy_list (Vector(src_len, src_vec)::t) dest_off bits = let val next = move_bits(src_vec, new_vec, dest_off, src_len, bits) in copy_list t (dest_off+src_len) next end | copy_list [] dest_off bits = (* At the end of the lists store any extra in the last byte. *) if bits = 0w0 then () else RunCall.storeByte(new_vec, intAsWord(Int.quot(dest_off, 8)), bits) in copy_list l 0 0w0; RunCall.clearMutableBit new_vec; Vector(total_len, new_vec) end end (* Create the other functions. *) structure VectorOps = VectorOperations( struct type vector = vector and elem = elem fun length(Vector(l, _)) = intAsWord l fun unsafeSub (Vector(_, v), i) = uncheckedSub(v, wordAsInt i) fun unsafeSet _ = raise Fail "Should not be called" end); open VectorOps; local (* Install the pretty printer for BoolVector.vector *) fun pretty(depth: FixedInt.int) _ (x: vector) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString(if w then "true" else "false") :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end structure BoolArray: MONO_ARRAY = struct type array = array type elem = bool type vector = vector val maxLen = maxLen; fun length(Array(l, _)) = l (* Internal function for updating a bit assuming the bounds checks have already been done. *) fun uncheckedUpdate(v, i, new): unit = let val iW = Word.fromInt i val byteOffsetW = iW >> 0w3 val byte = RunCall.loadByte(v, byteOffsetW); val mask = 0w1 << (iW andb 0w7) val newByte = if new then byte orb mask else byte andb (notb mask) in RunCall.storeByte(v, byteOffsetW, newByte) end fun array (len, ini) = let (* Create the uninitialised array. *) val vec = alloc len (* Set the bytes to all zeros or all ones. Generally this will set more bits than we need but that doesn't matter. *) val initByte = if ini then 0wxff else 0wx00 val bytes = (Word.fromInt len + 0w7) >> 0w3 (* TODO: This should be set by a built-in. *) fun setBytes b = if b >= bytes then () else (RunCall.storeByte(vec, b, initByte); setBytes (b+0w1)) val () = setBytes 0w0 in Array(len, vec) end fun op sub (Array(l, v), i: int): elem = if i < 0 orelse i >= l then raise General.Subscript else uncheckedSub(v, i) (* Exported update function. *) fun update (Array (l, v), i: int, new) : unit = if i < 0 orelse i >= l then raise General.Subscript else uncheckedUpdate(v, i, new) (* Create an array from a list. *) fun fromList (l : elem list) : array = Array(fromList' l) fun tabulate (length: int , f : int->elem): array = Array(tabulate'(length, f)) fun vector(Array(len, vec)): vector = (* TODO: We may be able to handle special cases where the source and destination are aligned on the same bit offset. For the moment just take the simple approach. *) BoolVector.tabulate(len, fn j => uncheckedSub(vec, j)) (* Copy one array into another. The arrays could be the same but in that case di must be zero. *) fun copy {src=Array (slen, s), dst=Array (dlen, d), di: int} = if di < 0 orelse di+slen > dlen then raise General.Subscript else (* TODO: Handle multiple bits where possible by using move_bits or a variant. *) let fun copyBits n = if n >= slen then () else (uncheckedUpdate(d, di+n, uncheckedSub(s, n)); copyBits(n+1)) in copyBits 0 end (* fun copy {src as Array (slen, s), dst as Array (dlen, d), di: int} = let in if di < 0 orelse di+slen > dlen then raise General.Subscript else if si < di then (* Moving up - Start from the end *) (* TODO: Handle multiple bits where possible by using move_bits or a variant. *) let fun copyBits n = if n < 0 then () else (uncheckedUpdate(d, di+n, uncheckedSub(s, si+n)); copyBits(n-1)) in copyBits (slen-1) end else (* Moving down. *) let fun copyBits n = if n >= slice_len then () else (uncheckedUpdate(d, di+n, uncheckedSub(s, si+n)); copyBits(n+1)) in copyBits 0 end end *) (* Copy a vector into an array. *) fun copyVec {src=Vector(slen, s), dst=Array (dlen, d), di: int} = let fun copyBits n = if n >= slen then () else (uncheckedUpdate(d, di+n, uncheckedSub(s, n)); copyBits(n+1)) in if di < 0 orelse di+slen > dlen then raise General.Subscript else copyBits 0 end (* Create the other functions. *) structure VectorOps = VectorOperations( struct type vector = array and elem = elem fun length(Array(l, _)) = intAsWord l fun unsafeSub (Array(_, v), i) = uncheckedSub(v, wordAsInt i) fun unsafeSet (Array(_, v), i, new) = uncheckedUpdate(v, wordAsInt i, new) end); open VectorOps; local (* Install the pretty printer for BoolArray.array *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) _ (x: array) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( PrettyString(if w then "true" else "false") :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end end; polyml-5.7.1/basis/Int.sml0000644000175000017500000004207513204034553014357 0ustar daviddavid(* Title: Standard Basis Library: LargeInt and FixedInt structures Copyright David C.J. Matthews 1999, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* LargeInt is defined in INITIALISE. *) signature INTEGER = sig eqtype int val toLarge : int -> LargeInt.int val fromLarge : LargeInt.int -> int val toInt : int -> Int.int val fromInt : Int.int -> int val precision : Int.int option val minInt : int option val maxInt : int option val ~ : int -> int val * : (int * int) -> int val div : (int * int) -> int val mod : (int * int) -> int val quot : (int * int) -> int val rem : (int * int) -> int val + : (int * int) -> int val - : (int * int) -> int val compare : (int * int) -> General.order val > : (int * int) -> bool val >= : (int * int) -> bool val < : (int * int) -> bool val <= : (int * int) -> bool val abs : int -> int val min : (int * int) -> int val max : (int * int) -> int val sign : int -> Int.int val sameSign : (int * int) -> bool val fmt : StringCvt.radix -> int -> string val toString : int -> string val fromString : string -> int option val scan : StringCvt.radix -> (char, 'a) StringCvt.reader -> (int, 'a) StringCvt.reader end; structure LargeInt: INTEGER = struct (* Arbitrary precision int. *) type int = LargeInt.int fun toLarge i = i and fromLarge i = i (* Whether int is short or long we can just cast it here. *) val fromInt: Int.int -> int = RunCall.unsafeCast (* Just a cast. *) (* If int is fixed precision we have to check that the value will fit. *) fun toInt(i: int): Int.int = if Bootstrap.intIsArbitraryPrecision orelse LibrarySupport.largeIntIsSmall i then RunCall.unsafeCast i else raise Overflow val precision = NONE (* Arbitrary precision. *) and minInt = NONE and maxInt = NONE val zero = fromInt 0 (* Avoids repeated use of fromInt. *) fun abs (i: int): int = if i >= zero then i else ~ i fun compare (i, j) = if i < j then General.LESS else if i > j then General.GREATER else General.EQUAL fun min (i, j) = if i < j then i else j and max (i, j) = if i > j then i else j fun sign i : Int.int = if i = zero then 0 else if i < zero then ~1 else 1 fun sameSign(i, j) = if i = zero then j = zero else if i < zero then j < zero else (* i > 0 *) j > zero local val fixedIntAsWord: FixedInt.int -> word = RunCall.unsafeCast (* To reduce the need for arbitrary precision arithmetic we can try to process values in groups. *) (* Return the largest short value and the number of digits. *) fun maxShort(n, radix, acc) = if LibrarySupport.largeIntIsSmall(acc * radix) then maxShort(n+1, radix, acc*radix) else (acc, fixedIntAsWord n) val (maxB, lenB) = maxShort(0, fromInt 2, fromInt 1) and (maxO, lenO) = maxShort(0, fromInt 8, fromInt 1) and (maxD, lenD) = maxShort(0, fromInt 10, fromInt 1) and (maxH, lenH) = maxShort(0, fromInt 16, fromInt 1) in (* Local function *) fun baseOf StringCvt.BIN = (2, maxB, lenB) | baseOf StringCvt.OCT = (8, maxO, lenO) | baseOf StringCvt.DEC = (10, maxD, lenD) | baseOf StringCvt.HEX = (16, maxH, lenH) end local open LibrarySupport (* Int.toChars turned out to be a major allocation hot-spot in some Isabelle examples. The old code created a list of the characters and then concatenated them. This cost 3 words for each character before the actual string was created. This version avoids that problem. This has also now been modified to reduce the arbitrary precision arithmetic required when the value is long. Instead of reducing it by the radix each time we take off chunks of up to the maximum value that can be represented as a short precision value. *) fun toChar (digit: Int.int): char = if digit < 10 then Char.chr(Char.ord(#"0") + digit) else (* Hex *) Char.chr(Char.ord(#"A") + digit - 10) in fun fmt radix i = let val (base, maxShort, shortChars) = baseOf radix val negative = i < zero fun toChars(0, chars, continuation, pad) = (* Finished the group. *) if continuation = zero then ( (* Really finished. Allocate the string. *) if negative then let val res = allocString(chars+0w1) in RunCall.storeByte(res, wordSize, #"~"); (res, wordSize+0w1) end else (* Positive *) (allocString chars, wordSize) ) else (* Finished this group but have at least one more group. *) let val (result, pos) = toCharGroup(continuation, chars + pad) fun addZeros n = if n = pad then () else (RunCall.storeByte(result, pos+n, #"0"); addZeros(n+0w1)) in addZeros 0w0; (result, pos+pad) end | toChars(i, chars, continuation, pad) = (* More to do in this group. *) let (* TODO: We haven't defined Int.quot and Int.rem yet although they would be faster since we know this is short. *) val ch = toChar (i mod base) (* Get the string. *) val (result, pos) = toChars(i div base, chars+0w1, continuation, pad-0w1) in RunCall.storeByte(result, pos, ch); (result, pos+0w1) end (* Process a group of characters that will fit in a short precision number. *) and toCharGroup(i, chars) = if LibrarySupport.largeIntIsSmall i then toChars(toInt i, chars, zero, 0w0) else let val (q, r) = quotRem(i, maxShort) in toChars(toInt r, chars, q, shortChars) end in if i = zero then "0" (* This is the only case where we print a leading zero. *) else let val (result, _) = toCharGroup(abs i, 0w0) in RunCall.clearMutableBit result; result end end end val toString = fmt StringCvt.DEC fun scan radix getc src = let val (base, _, _) = baseOf radix val baseAsLarge = fromInt base val sixteen = fromInt 16 (* Read the digits, accumulating the result in acc. isOk is true once we have read a valid digit. *) fun read_digits src acc isOk = case getc src of NONE => if isOk then SOME(acc, src) else NONE | SOME(ch, src') => if Char.ord ch >= Char.ord #"0" andalso Char.ord ch < (Char.ord #"0" + base) then read_digits src' (acc*baseAsLarge + fromInt(Char.ord ch - Char.ord #"0")) true else (* Invalid character - either end of number or bad no. *) if isOk then SOME(acc, src) else NONE fun read_hex_digits src acc isOk = case getc src of NONE => if isOk then SOME(acc, src) else NONE | SOME(ch, src') => if Char.ord ch >= Char.ord #"0" andalso Char.ord ch <= Char.ord #"9" then read_hex_digits src' (acc*sixteen + fromInt(Char.ord ch - Char.ord #"0")) true else if Char.ord ch >= Char.ord #"A" andalso Char.ord ch <= Char.ord #"F" then read_hex_digits src' (acc*sixteen + fromInt(Char.ord ch - Char.ord #"A" + 10)) true else if Char.ord ch >= Char.ord #"a" andalso Char.ord ch <= Char.ord #"f" then read_hex_digits src' (acc*sixteen + fromInt(Char.ord ch - Char.ord #"a" + 10)) true else (* Invalid character - either end of number or bad no. *) if isOk then SOME(acc, src) else NONE (* There is a special case with hex numbers. A hex number MAY begin with 0x or 0X e.g. 0x1f0 but need not. So "0x " and "0xg" are both valid and represent the value 0 with "x " and "xg" as the continuations of the input. *) fun read_number src = if base = 16 then (* Hex. *) ( case getc src of NONE => NONE | SOME(ch, src') => if ch <> #"0" then read_hex_digits src zero false else ( case getc src' of NONE => SOME(zero, src') (* Accept the 0 *) | SOME(ch, src'') => if ch = #"x" orelse ch = #"X" then ( (* See if the characters after the 0x form a valid hex number. If so return that, if not return the 0 and treat the rest of the string as starting with the x. *) case read_hex_digits src'' zero false of NONE => SOME(zero, src') (* Accept the 0 *) | res => res ) else (* Start from the 0. *) read_hex_digits src zero false ) ) else (* Binary, octal and decimal *) read_digits src zero false in case getc src of NONE => NONE | SOME(ch, src') => if Char.isSpace ch (* Skip white space. *) then scan radix getc src' (* Recurse *) else if ch = #"+" (* Remove the + sign *) then read_number src' else if ch = #"-" orelse ch = #"~" then ( case read_number src' of NONE => NONE | SOME(i, r) => SOME(~i, r) ) else (* See if it's a valid digit. *) read_number src end (* TODO: Implement this directly? *) val fromString = StringCvt.scanString (scan StringCvt.DEC) (* Converter to LargeInt values. *) local (* The string may be either decimal or hex. *) fun convInt s = let val radix = if String.size s >= 3 andalso String.substring(s, 0, 2) = "0x" orelse String.size s >= 4 andalso String.substring(s, 0, 3) = "~0x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (scan radix) s of NONE => raise RunCall.Conversion "Invalid integer constant" | SOME res => res end in (* Add a conversion function. *) val () = RunCall.addOverload convInt "convInt" end open LargeInt (* Everything else. *) end; structure FixedInt: INTEGER = struct (* This is now a fixed precision int. Currently it is the same as the short form of an arbitrary precision int i.e. 31 bits on 32-bit machines and 63 bits on 63-bits. *) type int = FixedInt.int (* Defined in the basis *) (* Whether int is fixed or arbitrary precision we can just cast it here. *) val toInt: int -> Int.int = RunCall.unsafeCast (* Just a cast. *) (* If int is arbitrary precision we have to check that the value will fit. *) fun fromInt(i: Int.int): int = if LibrarySupport.isShortInt i then RunCall.unsafeCast i else raise Overflow (* Conversion from fixed int to large is just a cast. It will always fit. *) val toLarge: int -> LargeInt.int = RunCall.unsafeCast (* When converting from arbitrary precision we have to check. *) fun fromLarge(i: LargeInt.int): int = if LibrarySupport.largeIntIsSmall i then RunCall.unsafeCast i else raise Overflow local fun power2' n 0 : LargeInt.int = n | power2' n i = power2' (2*n) (i-1) val power2 = power2' 1 val bitsInWord: int = (RunCall.unsafeCast LibrarySupport.wordSize) * 8 val wordSize = bitsInWord - 1 (* 31 or 63 bits *) val maxIntP1 = power2(wordSize-1) in val precision = SOME(toInt wordSize) val maxInt = SOME(fromLarge(maxIntP1-1)) val smallestInt = fromLarge(~ maxIntP1) val minInt = SOME smallestInt end fun scan radix rdr src = case LargeInt.scan radix rdr src of NONE => NONE | SOME(i, c) => SOME(fromLarge i, c) (* Converter to int values. This replaces the basic conversion function for ints installed in the bootstrap process. In particular this converter can handle hexadecimal. *) local fun convInt s = let val radix = if String.size s >= 3 andalso String.substring(s, 0, 2) = "0x" orelse String.size s >= 4 andalso String.substring(s, 0, 3) = "~0x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (scan radix) s of NONE => raise RunCall.Conversion "Invalid integer constant" | SOME res => res end in val () = RunCall.addOverload convInt "convInt" end (* Can now open FixedInt. *) open FixedInt (* TODO: We should implement div and mod as built-ins because then they can access the remainder and quotient directly. Also, division by a power of two can be implemented as an arithmetic shift because this rounds towards negative infinity which is what we want. *) fun compare (i, j) = if i < j then General.LESS else if i > j then General.GREATER else General.EQUAL (*fun abs i = if i >= 0 then i else ~ i*) fun min (i, j) = if i < j then i else j and max (i, j) = if i > j then i else j fun sign i = if i = 0 then 0 else if i < 0 then ~1 else 1 (* It might be possible to do something clever by xor-ing the words together when both values are short. *) fun sameSign(i, j) = if i = 0 then j = 0 else if i < 0 then j < 0 else (* i > 0 *) j > 0 fun fmt r n = LargeInt.fmt r (toLarge n) val fromString = StringCvt.scanString (scan StringCvt.DEC) and toString = LargeInt.toString o toLarge (* These are overloaded functions and are treated specially. *) (* val ~ : int->int = ~ and op * : int*int->int = op * and op + : int*int->int = op + and op - : int*int->int = op - val op < : int*int->bool = op < and op > : int*int->bool = op > and op <= : int*int->bool = op <= and op >= : int*int->bool = op >=*) end; val () = RunCall.addOverload FixedInt.div "div" and () = RunCall.addOverload FixedInt.mod "mod"; (* Add extra overloadings for arbitrary precision. *) val () = RunCall.addOverload LargeInt.abs "abs" and () = RunCall.addOverload LargeInt.div "div" and () = RunCall.addOverload LargeInt.mod "mod"; local (* Install the pretty printer for int *) fun prettyFixed _ _ x = PolyML.PrettyString(FixedInt.toString x) fun prettyLarge _ _ x = PolyML.PrettyString(LargeInt.toString x) in val () = PolyML.addPrettyPrinter prettyFixed and () = PolyML.addPrettyPrinter prettyLarge end; (* For the moment use arbitrary precision here. *) structure Position = LargeInt; (* The actual Int structure is defined depending on what int is. *) polyml-5.7.1/basis/IntArray.sml0000644000175000017500000000310313204034553015343 0ustar daviddavid(* Title: Standard Basis Library: IntArray and IntVector Structures Author: David Matthews Copyright David Matthews 1999-2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: no change. Added slice versions. *) structure IntVector: MONO_VECTOR = struct open Vector type vector = int vector and elem = int end; structure IntArray: MONO_ARRAY = struct open Array type vector = int vector and array = int array and elem = int end; structure IntVectorSlice: MONO_VECTOR_SLICE = struct open VectorSlice type slice = int slice and vector = IntVector.vector and elem = int end; structure IntArraySlice: MONO_ARRAY_SLICE = struct open ArraySlice type slice = int slice and vector = IntVector.vector and array = IntArray.array and elem = int and vector_slice = IntVectorSlice.slice end; polyml-5.7.1/basis/ListPair.sml0000644000175000017500000000771213204034553015353 0ustar daviddavid(* Title: Standard Basis Library: ListPair Structure Author: David Matthews Copyright David Matthews 1999, 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* G&R 2004 status: Done. *) signature LIST_PAIR = sig exception UnequalLengths val zip : ('a list * 'b list) -> ('a * 'b) list val zipEq : ('a list * 'b list) -> ('a * 'b) list val unzip : ('a * 'b) list -> ('a list * 'b list) val app : ('a * 'b -> unit) -> ('a list * 'b list) -> unit val appEq : ('a * 'b -> unit) -> ('a list * 'b list) -> unit val map : ('a * 'b -> 'c) -> ('a list * 'b list) -> 'c list val mapEq : ('a * 'b -> 'c) -> ('a list * 'b list) -> 'c list val foldl : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c val foldr : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c val foldlEq : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c val foldrEq : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c val all : ('a * 'b -> bool) -> ('a list * 'b list) -> bool val exists : ('a * 'b -> bool) -> ('a list * 'b list) -> bool val allEq : ('a * 'b -> bool) -> ('a list * 'b list) -> bool end; structure ListPair : LIST_PAIR = struct exception UnequalLengths fun zip (h::t, h'::t') = (h, h') :: zip(t, t') | zip (_, _) = [] (* Stop as soon as either list is exhausted. *) fun zipEq (h::t, h'::t') = (h, h') :: zipEq(t, t') | zipEq ([], []) = [] | zipEq (_, _) = raise UnequalLengths fun unzip ((a, b) :: l) = let (* TODO: This is quite inefficient in Poly/ML. It might be better to unzip each of the lists separately. *) val (x, y) = unzip l in (a :: x, b :: y) end | unzip [] = ([], []) fun map f (h::t, h'::t') = f(h, h') :: map f (t, t') | map _ _ = [] fun mapEq f (h::t, h'::t') = f(h, h') :: mapEq f (t, t') | mapEq _ ([], []) = [] | mapEq _ _ = raise UnequalLengths fun app f (h::t, h'::t') = (f(h, h'); app f (t, t')) | app _ _ = () fun appEq f (h::t, h'::t') = (f(h, h'); appEq f (t, t')) | appEq _ ([], []) = () | appEq _ _ = raise UnequalLengths fun foldl f b (h::t, h'::t') = foldl f (f(h, h', b)) (t, t') | foldl _ b _ = b fun foldr f b (h::t, h'::t') = f(h, h', foldr f b (t, t')) | foldr _ b _ = b fun foldlEq f b (h::t, h'::t') = foldlEq f (f(h, h', b)) (t, t') | foldlEq _ b ([], []) = b | foldlEq _ _ _ = raise UnequalLengths fun foldrEq f b (h::t, h'::t') = f(h, h', foldrEq f b (t, t')) | foldrEq _ b ([], []) = b | foldrEq _ _ _ = raise UnequalLengths fun exists f (h::t, h'::t') = if f(h, h') then true else exists f (t, t') | exists _ _ = false (* all and allEq differ in the way they handle lists of different lengths. all returns true if the predicate holds up to the shorter of the lists whereas allEq returns false if the lists have different lengths. *) fun all f (h::t, h'::t') = if f(h, h') then all f (t, t') else false | all _ _ = true (* Is it better to check the lengths first? *) fun allEq f (h::t, h'::t') = if f(h, h') then allEq f (t, t') else false | allEq _ ([], []) = true | allEq _ _ = false end; polyml-5.7.1/basis/ListSignature.sml0000644000175000017500000000432713204034553016420 0ustar daviddavid(* Title: Standard Basis Library: List Signature Author: David Matthews Copyright David Matthews 1999, 2005, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature LIST = sig datatype list = datatype list (* G&R include the definition of list below in their "Interface". This is illegal. *) (*datatype 'a list = nil | :: of 'a * 'a list *) exception Empty val null : 'a list -> bool val length : 'a list -> int val @ : ('a list * 'a list) -> 'a list val concat : 'a list list -> 'a list val revAppend : ('a list * 'a list) -> 'a list val tabulate : (int * (int -> 'a)) -> 'a list val hd : 'a list -> 'a val tl : 'a list -> 'a list val last : 'a list -> 'a val getItem : 'a list -> ('a * 'a list) option val nth : ('a list * int) -> 'a val take : ('a list * int) -> 'a list val drop : ('a list * int) -> 'a list val rev : 'a list -> 'a list val app : ('a -> unit) -> 'a list -> unit val map : ('a -> 'b) -> 'a list -> 'b list val mapPartial : ('a -> 'b option) -> 'a list -> 'b list val find : ('a -> bool) -> 'a list -> 'a option val filter : ('a -> bool) -> 'a list -> 'a list val partition : ('a -> bool) -> 'a list -> ('a list * 'a list) val foldl : (('a * 'b) -> 'b) -> 'b -> 'a list -> 'b val foldr : (('a * 'b) -> 'b) -> 'b -> 'a list -> 'b val exists : ('a -> bool) -> 'a list -> bool val all : ('a -> bool) -> 'a list -> bool val collate: ('a * 'a -> order) -> 'a list * 'a list -> order end; polyml-5.7.1/basis/General.sml0000644000175000017500000000622513204034553015177 0ustar daviddavid(* Title: Standard Basis Library: General Structure Author: David Matthews Copyright David Matthews 1999, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature GENERAL = sig eqtype unit type exn exception Bind exception Chr exception Div exception Domain exception Fail of string exception Match exception Overflow exception Size exception Span exception Subscript val exnName : exn -> string val exnMessage : exn -> string datatype order = LESS | EQUAL | GREATER val ! : 'a ref -> 'a val := : ('a ref * 'a) -> unit val o : (('b -> 'c) * ('a -> 'b)) -> 'a -> 'c val before : ('a * unit) -> 'a val ignore : 'a -> unit end; (* We declare the values in the top-level environment and construct the structure afterwards rather than opening the structure. The reason for this is that we would prefer that types unit and exn did not capture the General structure name. *) local in exception Bind = RunCall.Bind and Div = RunCall.Div and Match = RunCall.Match and Overflow = RunCall.Overflow and Subscript = RunCall.Subscript and Size = RunCall.Size exception Domain and Span and Chr (* Exception packets. The first word is the code, a unique id; the second is the exception name and the third is the exception argument. *) fun exnName (ex: exn): string = RunCall.loadWordFromImmutable(ex, 0w1) (* Since exception packets carry a printer function this is just PolyML.makestring. *) fun exnMessage (ex: exn) = PolyML.makestring ex datatype order = LESS | EQUAL | GREATER fun op before (a, _ : unit) = a fun ignore _ = () structure General (*: GENERAL *) (* Don't use a signature here. *) = struct type unit = unit (* This has to be primitive because its value is given by () *) type exn = exn exception Bind = Bind and Div = Div and Match = Match and Chr = Chr exception Overflow = Overflow and Domain= Domain and Fail = Fail exception Span = Span and Subscript = Subscript and Size = Size val exnName = exnName and op := = op := and ! = ! and op o = op o and op before = op before and ignore = ignore val exnMessage = exnMessage datatype order = datatype order end end (* Although these are available unqualified we always use them qualified within this library so that dependencies are maintained. *) polyml-5.7.1/basis/Array.sml0000644000175000017500000003063513204034553014702 0ustar daviddavid(* Title: Standard Basis Library: Array Structure Author: David Matthews Copyright David Matthews 1999, 2005, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local type 'a array = 'a array (* Predeclared in the basis with special equality props. *) val arrayAsWord: 'a array -> word = RunCall.unsafeCast val intAsWord: int -> word = RunCall.unsafeCast (* Unsafe subscript and update functions used internally for cases where we've already checked the range. *) fun unsafeSub(v: 'a array, i: int): 'a = RunCall.loadWord(arrayAsWord v, intAsWord i) and unsafeUpdate(v: 'a array, i: int, new: 'a): unit = RunCall.storeWord (arrayAsWord v, intAsWord i, RunCall.unsafeCast new); val intAsWord: int -> word = RunCall.unsafeCast and wordAsInt: word -> int = RunCall.unsafeCast (* "vector" creates a vector from an array so the representation of a zero-length object is different. Locking the resultant object turns into an immutable object and changes the equality function from pointer equality to value equality. *) fun makeVector(v: 'a array, start, length): 'a vector = if length = 0 then RunCall.unsafeCast LibrarySupport.emptyVector (* Special case for zero *) else (* The size must have already been checked. *) let (* Make a vector initialised to zero. *) val new_vec = RunCall.allocateWordMemory(Word.fromInt length, 0wx40, 0w0) in RunCall.moveWords(RunCall.unsafeCast v, new_vec, Word.fromInt start, 0w0, Word.fromInt length); RunCall.clearMutableBit new_vec; RunCall.unsafeCast new_vec end in structure Array: ARRAY = struct type 'a array = 'a array type 'a vector = 'a Vector.vector val maxLen = RunCall.unsafeCast LibrarySupport.maxAllocation (* Internal function: Construct an array initialised to zero. *) fun alloc len = let val () = if len >= maxLen then raise General.Size else () val vec = RunCall.allocateWordMemory(Word.fromInt len, 0wx40, 0w0) in RunCall.unsafeCast vec end fun array(len, a) = let val () = if len < 0 orelse len >= maxLen then raise General.Size else () val vec = RunCall.allocateWordMemory(Word.fromInt len, 0wx40, RunCall.unsafeCast a) in RunCall.unsafeCast vec end val listLength = length; (* Pick this up from the prelude. *) fun length (vec: 'a array): int = wordAsInt(RunCall.memoryCellLength(arrayAsWord vec)) fun op sub (vec: 'a array, i: int): 'a = if not (LibrarySupport.isShortInt i) orelse intAsWord i >= RunCall.memoryCellLength vec then raise General.Subscript else unsafeSub(vec, i) fun update (vec: 'a array, i: int, new: 'a) : unit = if not (LibrarySupport.isShortInt i) orelse intAsWord i >= RunCall.memoryCellLength vec then raise General.Subscript else RunCall.storeWord (arrayAsWord vec, intAsWord i, RunCall.unsafeCast new); (* Create an array from a list. *) fun fromList (l : 'a list) : 'a array = let val length = listLength l; (* Make a array initialised to zero. *) val vec = alloc length (* Copy the list elements into the array. *) fun init (v, i, a :: l) = ( unsafeUpdate(v, i, a); init(v, i + 1, l) ) | init (_, _, []) = (); in init(vec, 0, l); vec end fun tabulate (length: int , f : int->'a): 'a array = let val vec = if length < 0 then raise General.Size else alloc length; (* Initialise it to the function values. *) fun init i = if length <= i then () else (unsafeUpdate(vec, i, f i); init(i+1)) in init 0; vec end (* "vector" creates a vector from an array so the representation of a zero-length object is different. Locking the resultant object turns into an immutable object and changes the equality function from pointer equality to value equality. *) fun vector (vec: 'a array): 'a vector = makeVector(vec, 0, length vec) (* Copy one array into another. It's possible for the arrays to be the same but in that case di would have to be zero otherwise the length check would fail. *) fun copy {src: 'a array as s, dst: 'a array as d, di: int} = let val len = length src in if di < 0 orelse di+len > length dst then raise General.Subscript else RunCall.moveWords(s, d, 0w0, Word.fromInt di, Word.fromInt len) end (* Copy a vector into an array. *) fun copyVec {src: 'a vector, dst: 'a array as d, di: int} = let val len = Vector.length src in if di < 0 orelse di+len > length dst then raise General.Subscript else RunCall.moveWords(src, RunCall.unsafeCast d, 0w0, Word.fromInt di, Word.fromInt len) end (* Create the other functions. *) structure VectorOps = PolyVectorOperations( struct type 'a vector = 'a array local val l = length in fun length(v: 'a array):word = intAsWord(l v) end local val u = unsafeSub in fun unsafeSub (v: 'a array, i: word) = u(v, wordAsInt i) end fun unsafeSet(v, i: word, e: 'a) = unsafeUpdate(v, wordAsInt i, e) end); open VectorOps; local (* Install the pretty printer for arrays *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) (printElem: 'a * FixedInt.int -> PolyML.pretty) (x: 'a array) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( printElem(w, d-1) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val () = PolyML.addPrettyPrinter pretty end end (* Array *) structure ArraySlice = struct datatype 'a slice = Slice of { array: 'a Array.array, start: int, length: int }; fun length(Slice{length, ...}) = length fun op sub (Slice{array, start, length}, i: int): 'a = if i < 0 orelse i >= length then raise General.Subscript else unsafeSub(array, i+start) fun update (Slice{array, start, length}, i: int, new: 'a) : unit = if i < 0 orelse i >= length then raise General.Subscript else unsafeUpdate (array, i+start, new); (* Create a slice, checking the sizes so that the resulting slice is always valid. *) fun slice(vec: 'a array, i: int, NONE) = let val len = Array.length vec in if i >= 0 andalso i <= len then Slice{array=vec, start=i, length=len-i} (* Length is rest of array. *) else raise General.Subscript end | slice(vec: 'a array, i: int, SOME l) = let val len = Array.length vec in if i >= 0 andalso l >= 0 andalso i+l <= len then Slice{array=vec, start=i, length=l} (* Length is as given. *) else raise General.Subscript end (* Slice from the whole array. *) fun full a = Slice{array=a, start=0, length=Array.length a} (* Slice from existing slice *) fun subslice(Slice{array, start, length}, i: int, NONE) = if i >= 0 andalso i <= length then Slice{array=array, start=i+start, length=length-i} (* Length is rest of array. *) else raise General.Subscript | subslice(Slice{array, start, length}, i: int, SOME l) = if i >= 0 andalso l >= 0 andalso i+l <= length then Slice{array=array, start=i+start, length=l} (* Length is as given. *) else raise General.Subscript fun base(Slice{array, start, length}) = (array, start, length) fun vector (Slice{array, start, length}): 'a vector = makeVector(array, start, length) (* Copy one array into another. It's possible for the arrays to be the same and for the source and destinations to overlap so we have to take care of that. If they are not the same we could simply use a WordMove. *) fun copy {src = Slice{array=s, start=srcStart, length=srcLen}, dst, di: int} = let fun copyUp n = if n = srcLen then () else (Array.update(dst, n+di, Array.sub(s, n+srcStart)); copyUp(n+1)) and copyDown n = if n < 0 then () else (Array.update(dst, n+di, Array.sub(s, n+srcStart)); copyDown(n-1)) in if di < 0 orelse di+srcLen > Array.length dst then raise General.Subscript else if di > srcStart then copyDown(srcLen-1) else copyUp 0 end (* Copy a vector into an array. *) fun copyVec {src: 'a VectorSlice.slice, dst: 'a array as d, di: int} = let val (v, i, len) = VectorSlice.base src in if di < 0 orelse di+len > Array.length dst then raise General.Subscript else RunCall.moveWords(v, RunCall.unsafeCast d, Word.fromInt i, Word.fromInt di, Word.fromInt len) end fun isEmpty(Slice{length, ...}) = length = 0 (* Return the first item of the slice and the rest of the slice. *) fun getItem(Slice{length=0, ...}) = NONE | getItem(Slice{array, start, length}) = SOME(unsafeSub(array, start), Slice{array=array, start=start+1, length=length-1}) (* Create the other functions. *) structure VectorOps = PolyVectorOperations( struct type 'a vector = 'a slice fun length(Slice{length, ...}) = intAsWord length local val u = unsafeSub in fun unsafeSub (Slice{array, start, ...}, i: word) = u(array, wordAsInt i + start) end fun unsafeSet(Slice{array, start, ...}, i: word, e: 'a) = unsafeUpdate(array, wordAsInt i + start, e) end); open VectorOps; end (* ArraySlice *) end; (* Local in end *) structure ArraySlice :> ARRAY_SLICE = ArraySlice; local open ArraySlice (* Install the pretty printer for array slices *) (* We may have to do this outside the structure if we have opaque signature matching. *) fun pretty(depth: FixedInt.int) (printElem: 'a * FixedInt.int -> PolyML.pretty) (x: 'a slice) = let open PolyML val last = length x - 1 fun put_elem (index, w, (l, d)) = if d = 0 then ([PrettyString "...]"], d+1) else if d < 0 then ([], d+1) else ( printElem(w, d-1) :: (if index <> last then PrettyString "," :: PrettyBreak(1, 0) :: l else l), d+1 ) in PrettyBlock(3, false, [], PrettyString "fromList[" :: (if depth <= 0 then [PrettyString "...]"] else #1 (foldri put_elem ([PrettyString "]"], depth - FixedInt.fromInt last) x) ) ) end in val _ = PolyML.addPrettyPrinter pretty end polyml-5.7.1/basis/PrettyPrinter.sml0000644000175000017500000002220513204034553016451 0ustar daviddavid(* Title: Pretty Printer. Author: David C. J. Matthews Copyright (c) 2009, 2013, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is a complete rewrite of the original pretty printer. The original version was written in the Poly language in the early 80s and was based on the paper by D.C Oppen in ACM ToPLAS Vol. 2 No. 4 Oct 1980. His version was imperative and provided "blockBegin", "blockEnd", "break" and "string" functions to lay out the text. This version uses the "pretty" datatype that uses the same model of the text but implements it completely differently. PrettyString s - Prints out the string s PrettyStringWithWidth (s, w) - The same as PrettyString except that the width is given explicitly rather than being the length of the string. This is intended for multibyte encodings where the number of columns is not the same as the number of characters in the string PrettyBreak(blanks, offset) - Provides a place where the text may be broken. If no break is needed it prints "blanks" spaces. If a break is needed it add a temporary indent of "offset" to the indentation of the next block of text. PrettyBlock(indent, consistent, context, entries) - Defines a block of text. If all the entries will fit on the line they are simply printed out. If they do not fit the block must be broken. If "consistent" is true then every "PrettyBreak" within "entries" (at this level only, not recursively) is a break point and the line will be broken at that point. If "consistent" is false then a line break is inserted at a PrettyBreak only if the following entry will not fit. "indent" is the value that is added to the effective indentation each time the line is broken within this block. It does not affect the indentation of the first string in the block. PrettyLineBreak Insert an explicit line break *) (* N.B. The effect of compiling this file is to extend the PolyML structure. *) structure PolyML = struct open PolyML fun prettyMarkup (beginContext: context list -> unit, endContext: context list -> unit) (stream : string -> unit, width: int) (pretty: pretty): unit = let val lineWidth = FixedInt.fromInt width fun printBlanks n = if n > 0 then (stream " "; printBlanks(n-1)) else () (* Find out whether the block fits and return the space left if it does. Terminates with NONE as soon as it finds the line doesn't fit. *) fun getSize(PrettyBlock (_, _, _, entries), spaceLeft) = List.foldl(fn (p, SOME s) => getSize(p, s) | (_, NONE) => NONE) (SOME spaceLeft) entries | getSize(PrettyBreak (blanks, _), spaceLeft) = if blanks <= spaceLeft then SOME(spaceLeft-blanks) else NONE | getSize(PrettyString st, spaceLeft) = let val size = FixedInt.fromInt(String.size st) in if size <= spaceLeft then SOME(spaceLeft-size) else NONE end | getSize(PrettyStringWithWidth(_, w), spaceLeft) = if w <= spaceLeft then SOME(spaceLeft-w) else NONE | getSize(PrettyLineBreak, _) = NONE (* Lay out the block and return the space that is left after the line has been printed. *) fun layOut(p as PrettyBlock (blockOffset, consistent, context, entries), indent, spaceLeft) = let val blockIndent = indent+blockOffset in case getSize(p, spaceLeft) of SOME s => (* Fits *) ( beginContext context; (* Lay out the contents. This will not need to break. *) List.foldl(fn(p, space) => layOut(p, blockIndent, space)) spaceLeft entries; endContext context; s ) | NONE => (* Doesn't fit - break line somewhere. *) let (* Lay out this block, breaking where necessary. *) fun doPrint([], _, left) = (* Finished: return what's left. *) left | doPrint([PrettyBreak _], _, left) = left (* Ignore trailing breaks. *) | doPrint(PrettyBreak (blanks, breakIndent) :: rest, _, left) = let val currentIndent = blockIndent+breakIndent (* Compute the space of the next item(s) up to the end or the next space. Since we only break at spaces if there are Blocks or Strings without spaces between we need to know the total size. *) fun getsp([], left) = SOME left | getsp(PrettyBreak _ :: _, left) = SOME left | getsp(next::rest, left) = case getSize(next, left) of NONE => NONE | SOME sp => getsp(rest, sp) in if consistent orelse left <= blanks orelse not(isSome(getsp(rest, left-blanks))) then (* Either a consistent break or the next item won't fit. *) ( stream "\n"; printBlanks currentIndent; (* Carry the indent associated with this item forward so that it is included in the block indentation if the next item is a block. If it is a string we have already included it. *) doPrint(rest, breakIndent, lineWidth-currentIndent) ) else (* We don't need to break here. *) ( printBlanks blanks; doPrint(rest, 0, left-blanks) ) end | doPrint(PrettyString s :: rest, _, left) = ( stream s; doPrint(rest, 0, left - FixedInt.fromInt(size s)) ) | doPrint(PrettyStringWithWidth(s, w) :: rest, _, left) = ( stream s; doPrint(rest, 0, left-w) ) | doPrint((b as PrettyBlock _) :: rest, breakIndent, left) = doPrint(rest, 0, layOut(b, blockIndent+breakIndent, left)) | doPrint(PrettyLineBreak :: rest, _, _) = ( stream "\n"; printBlanks blockIndent; doPrint(rest, 0, lineWidth-blockIndent) ) val () = beginContext context; val onLine = doPrint(entries, 0, spaceLeft); val () = endContext context in onLine end end | layOut (PrettyBreak (blanks, _), _, spaceLeft) = ( printBlanks blanks; FixedInt.max(spaceLeft-blanks, 0) ) | layOut (PrettyString st, _, spaceLeft) = ( stream st; FixedInt.max(spaceLeft- FixedInt.fromInt(String.size st), 0) ) | layOut (PrettyStringWithWidth(st, w), _, spaceLeft) = ( stream st; FixedInt.max(spaceLeft-w, 0) ) | layOut (PrettyLineBreak, _, spaceLeft) = spaceLeft in if layOut(pretty, 0, lineWidth) <> lineWidth then stream "\n" (* End the line unless we haven't written anything. *) else () end (* Basic pretty printer without mark-up of context. *) val prettyPrint = prettyMarkup (fn _ => (), fn _ => ()) end (* PolyML *); polyml-5.7.1/config.h.in0000644000175000017500000005320313204034553014025 0ustar daviddavid/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to 1 if the `closedir' function returns void instead of `int'. */ #undef CLOSEDIR_VOID /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to the type of elements in the array set by `getgroups'. Usually this is either `int' or `gid_t'. */ #undef GETGROUPS_T /* Define to 1 if the `getpgrp' function requires zero arguments. */ #undef GETPGRP_VOID /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_ASM_ELF_H /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if your system has a working `chown' function. */ #undef HAVE_CHOWN /* Define to 1 if you have the `ctermid' function. */ #undef HAVE_CTERMID /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define to 1 if you have the declaration of `fpsetmask', and to 0 if you don't. */ #undef HAVE_DECL_FPSETMASK /* Define to 1 if you have the header file. */ #undef HAVE_DIRECT_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the `dtoa' function. */ #undef HAVE_DTOA /* Define to 1 if you have the `dup2' function. */ #undef HAVE_DUP2 /* Define to 1 if you have and header files. */ #undef HAVE_ELF_ABI_H /* Define to 1 if you have the header file. */ #undef HAVE_ELF_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_EXCPT_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FENV_H /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the header file. */ #undef HAVE_FPU_CONTROL_H /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if your system has a working `getgroups' function. */ #undef HAVE_GETGROUPS /* Define to 1 if you have the `gethostbyaddr' function. */ #undef HAVE_GETHOSTBYADDR /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the gmp.h header file */ #undef HAVE_GMP_H /* Define to 1 if you have the `gmtime_r' function. */ #undef HAVE_GMTIME_R /* Define to 1 if you have .note.GNU-stack support in the assembler. */ #undef HAVE_GNU_STACK /* Define to 1 if you have the header file. */ #undef HAVE_GRP_H /* Define to 1 if you have the header file. */ #undef HAVE_IEEEFP_H /* Define to 1 if the system has the type `IMAGE_FILE_HEADER'. */ #undef HAVE_IMAGE_FILE_HEADER /* Define to 1 if the system has the type `intptr_t'. */ #undef HAVE_INTPTR_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_IO_H /* Define to 1 if you have the `gcc' library (-lgcc). */ #undef HAVE_LIBGCC /* Define to 1 if you have the `gcc_s' library (-lgcc_s). */ #undef HAVE_LIBGCC_S /* Define to 1 if you have the `gdi32' library (-lgdi32). */ #undef HAVE_LIBGDI32 /* Define to 1 if you have libgmp */ #undef HAVE_LIBGMP /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the `stdc++' library (-lstdc++). */ #undef HAVE_LIBSTDC__ /* Define to 1 if you have the `ws2_32' library (-lws2_32). */ #undef HAVE_LIBWS2_32 /* Define to 1 if you have the `X11' library (-lX11). */ #undef HAVE_LIBX11 /* Define to 1 if you have the `Xext' library (-lXext). */ #undef HAVE_LIBXEXT /* Define to 1 if you have the `Xm' library (-lXm). */ #undef HAVE_LIBXM /* Define to 1 if you have the `Xt' library (-lXt). */ #undef HAVE_LIBXT /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R /* Define to 1 if the system has the type `long long'. */ #undef HAVE_LONG_LONG /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_LSTAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if `gregs' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_GREGS /* Define to 1 if `mc_esp' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_MC_ESP /* Define to 1 if `regs' is a member of `mcontext_t'. */ #undef HAVE_MCONTEXT_T_REGS /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR /* Define to 1 if you have the `mkfifo' function. */ #undef HAVE_MKFIFO /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_TCP_H /* Define to 1 if you have the `pathconf' function. */ #undef HAVE_PATHCONF /* Define to 1 if you have the PE/COFF types. */ #undef HAVE_PECOFF /* Define to 1 if you have the header file. */ #undef HAVE_POLL_H /* Define to 1 if you have the `pow' function. */ #undef HAVE_POW /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if you have the `rmdir' function. */ #undef HAVE_RMDIR /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the header file. */ #undef HAVE_SEMAPHORE_H /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK /* Define to 1 if the system has the type `sighandler_t'. */ #undef HAVE_SIGHANDLER_T /* Define to 1 if you have the header file. */ #undef HAVE_SIGINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if the system has the type `sig_t'. */ #undef HAVE_SIG_T /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if the system has the type `socklen_t'. */ #undef HAVE_SOCKLEN_T /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if the system has the type `ssize_t'. */ #undef HAVE_SSIZE_T /* Define to 1 if the system has the type `stack_t'. */ #undef HAVE_STACK_T /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtod' function. */ #undef HAVE_STRTOD /* Define to 1 if `ss' is a member of `struct mcontext'. */ #undef HAVE_STRUCT_MCONTEXT_SS /* Define to 1 if the system has the type `struct sigcontext'. */ #undef HAVE_STRUCT_SIGCONTEXT /* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */ #undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN /* Define to 1 if `st_atim' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM /* Define to 1 if `st_atimensec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC /* Define to 1 if `st_atimespec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC /* Define to 1 if `st_atime_n' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIME_N /* Define to 1 if `st_uatime' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_UATIME /* Define to 1 if `ss' is a member of `struct __darwin_mcontext32'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT32_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext32'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT32___SS /* Define to 1 if `ss' is a member of `struct __darwin_mcontext64'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT64_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext64'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT64___SS /* Define to 1 if `ss' is a member of `struct __darwin_mcontext'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT_SS /* Define to 1 if `__ss' is a member of `struct __darwin_mcontext'. */ #undef HAVE_STRUCT___DARWIN_MCONTEXT___SS /* Define to 1 if you have the `sysctl' function. */ #undef HAVE_SYSCTL /* Define to 1 if you have the `sysctlbyname' function. */ #undef HAVE_SYSCTLBYNAME /* Define to 1 if the system has the type `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */ #undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_386_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_AMD64_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ELF_SPARC_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSTEMINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the `tcdrain' function. */ #undef HAVE_TCDRAIN /* Define to 1 if you have the header file. */ #undef HAVE_TCHAR_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UCONTEXT_H /* Define to 1 if the system has the type `ucontext_t'. */ #undef HAVE_UCONTEXT_T /* Define to 1 if the system has the type `uintptr_t'. */ #undef HAVE_UINTPTR_T /* Define to 1 if you have the `uname' function. */ #undef HAVE_UNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_VALUES_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_X11_XLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_XM_XM_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define if the host is an ARM (64-bit) */ #undef HOSTARCHITECTURE_AARCH64 /* Define if the host is an Alpha (64-bit) */ #undef HOSTARCHITECTURE_ALPHA /* Define if the host is an ARM (32-bit) */ #undef HOSTARCHITECTURE_ARM /* Define if the host is an HP PA-RISC (32-bit) */ #undef HOSTARCHITECTURE_HPPA /* Define if the host is an Itanium */ #undef HOSTARCHITECTURE_IA64 /* Define if the host is a Motorola 68000 */ #undef HOSTARCHITECTURE_M68K /* Define if the host is a MIPS (32-bit) */ #undef HOSTARCHITECTURE_MIPS /* Define if the host is a MIPS (64-bit) */ #undef HOSTARCHITECTURE_MIPS64 /* Define if the host is a PowerPC (32-bit) */ #undef HOSTARCHITECTURE_PPC /* Define if the host is a PowerPC (64-bit) */ #undef HOSTARCHITECTURE_PPC64 /* Define if the host is an S/390 (32-bit) */ #undef HOSTARCHITECTURE_S390 /* Define if the host is an S/390 (64-bit) */ #undef HOSTARCHITECTURE_S390X /* Define if the host is a SuperH (32-bit) */ #undef HOSTARCHITECTURE_SH /* Define if the host is a Sparc (32-bit) */ #undef HOSTARCHITECTURE_SPARC /* Define if the host is a Sparc (64-bit) */ #undef HOSTARCHITECTURE_SPARC64 /* Define if the host is an X86 (32-bit ABI, 64-bit processor) */ #undef HOSTARCHITECTURE_X32 /* Define if the host is an X86 (32-bit) */ #undef HOSTARCHITECTURE_X86 /* Define if the host is an X86 (64-bit) */ #undef HOSTARCHITECTURE_X86_64 /* Define if using the interpreter */ #undef INTERPRETED /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the type of arg 1 for `select'. */ #undef SELECT_TYPE_ARG1 /* Define to the type of args 2, 3 and 4 for `select'. */ #undef SELECT_TYPE_ARG234 /* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `void*', as computed by sizeof. */ #undef SIZEOF_VOIDP /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Defined if external symbols are prefixed by underscores */ #undef SYMBOLS_REQUIRE_UNDERSCORE /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define if the X-Windows interface should be built */ #undef WITH_XWINDOWS /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if doesn't define. */ #undef gid_t /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type wide enough to hold a pointer, if such a type exists, and if the system does not define it. */ #undef intptr_t /* Define to `int' if does not define. */ #undef mode_t /* Define to `long int' if does not define. */ #undef off_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if does not define. */ #undef ssize_t /* Define to `int' if doesn't define. */ #undef uid_t /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type wide enough to hold a pointer, if such a type exists, and if the system does not define it. */ #undef uintptr_t /* Define as `fork' if `vfork' does not work. */ #undef vfork polyml-5.7.1/missing0000755000175000017500000001533013204034553013400 0ustar daviddavid#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/polyimport.c0000644000175000017500000000244613204034553014367 0ustar daviddavid/* Title: polyimport.c Copyright (c) 2006, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ // This is the start-up function for Poly/ML for importing a portable database. #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #include "polyexports.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return PolyWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow, 0); } #else int main(int argc, char *argv[]) { return polymain(argc, argv, 0); } #endif polyml-5.7.1/polyc.10000644000175000017500000000210113204034553013201 0ustar daviddavid.TH POLY 1 "Poly/ML Version 5.7.1 2017" .SH NAME polyc \- Compile and link a Standard ML program using Poly/ML .SH SYNOPSIS .B polyc .I sourcefile .SH DESCRIPTION .I polyc is a script that compiles a Standard ML program using the Poly/ML compiler and creates an executable program from it. It can also be used to link object files created using the PolyML.export function with the Poly/ML libraries or to produce an object file. When used to compile a Standard ML program it expects the main function to be called "main" e.g. fun main() = print "Hello World\\n"; If the source file is a text file it is assumed to be ML source. If it is a binary file it is assumed to be an object file and will be linked with the Poly/ML library. .SH OPTIONS .B \-c "" Compile but do not link. The object file is written to a file whose name is based on the source file name with any extension replaced with .o .TP .BI \-o " output" Write the executable file to "output". .TP .BI \--help "" Write a list of the arguments and exit. .fi .SH SEE ALSO .PP .B http://www.polyml.org The Poly/ML web site. polyml-5.7.1/RootInterpreted.ML0000644000175000017500000001373513204034553015373 0ustar daviddavid(* Copyright (c) 2009, 2010, 2015-17 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Compiler root file. This gives the "use" instructions necessary to build the compiler and suitable for use with an IDE project file. It was constructed from the Poly/ML make files. *) PolyML.print_depth 1; PolyML.Compiler.reportUnreferencedIds := true; use "mlsource/MLCompiler/Address.ML"; use "mlsource/MLCompiler/Misc.ML"; use "mlsource/MLCompiler/HashTable.ML"; use "mlsource/MLCompiler/UniversalTable.ML"; use "mlsource/MLCompiler/StronglyConnected.sml"; use "mlsource/MLCompiler/StretchArray.ML"; use "mlsource/MLCompiler/STRUCTVALSIG.sml"; use "mlsource/MLCompiler/PRETTYSIG.sml"; use "mlsource/MLCompiler/LEXSIG.sml"; use "mlsource/MLCompiler/SymbolsSig.sml"; use "mlsource/MLCompiler/COMPILERBODYSIG.sml"; use "mlsource/MLCompiler/DEBUGSIG.ML"; use "mlsource/MLCompiler/MAKESIG.sml"; use "mlsource/MLCompiler/MAKE_.ML"; use "mlsource/MLCompiler/FOREIGNCALLSIG.sml"; use "mlsource/MLCompiler/BUILTINS.sml"; use "mlsource/MLCompiler/CODETREESIG.ML"; use "mlsource/MLCompiler/STRUCT_VALS.ML"; use "mlsource/MLCompiler/CodeTree/BackendIntermediateCodeSig.sml"; use "mlsource/MLCompiler/CodeTree/BaseCodeTreeSig.sml"; use "mlsource/MLCompiler/CodeTree/CodetreeFunctionsSig.sml"; use "mlsource/MLCompiler/CodeTree/CodegenTreeSig.sml"; use "mlsource/MLCompiler/Codetree/GENCODESIG.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_FUNCTIONS.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_STATIC_LINK_AND_CASES.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_CODEGEN_CONSTANT_FUNCTIONS.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_LAMBDA_LIFT.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_REMOVE_REDUNDANT.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_SIMPLIFIER.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE_OPTIMISER.sml"; use "mlsource/MLCompiler/CodeTree/CODETREE.ML"; use "mlsource/MLCompiler/Pretty.sml"; use "mlsource/MLCompiler/CodeTree/CODE_ARRAY.ML"; use "mlsource/MLCompiler/CodeTree/ByteCode/INTCODECONSSIG.sml"; use "mlsource/MLCompiler/CodeTree/ByteCode/INTCODECONS.ML"; use "mlsource/MLCompiler/CodeTree/ByteCode/INTGCODE.ML"; use "mlsource/MLCompiler/Debug.ML"; use "mlsource/MLCompiler/CodeTree/BackendIntermediateCode.sml"; use "mlsource/MLCompiler/CodeTree/BaseCodeTree.sml"; use "mlsource/MLCompiler/CodeTree/ByteCode/ml_bind.interpreted.ML"; use "mlsource/MLCompiler/CodeTree/GCode.interpreted.ML"; use "mlsource/MLCompiler/CodeTree/ml_bind.ML"; use "mlsource/MLCompiler/StructVals.ML"; use "mlsource/MLCompiler/LEX_.ML"; use "mlsource/MLCompiler/Symbols.ML"; use "mlsource/MLCompiler/Lex.ML"; use "mlsource/MLCompiler/SymsetSig.sml"; use "mlsource/MLCompiler/DATATYPEREPSIG.sml"; use "mlsource/MLCompiler/VALUEOPSSIG.sml"; use "mlsource/MLCompiler/EXPORTTREESIG.sml"; use "mlsource/MLCompiler/STRUCTURESSIG.sml"; use "mlsource/MLCompiler/COMPILER_BODY.ML"; use "mlsource/MLCompiler/SymSet.ML"; use "mlsource/MLCompiler/TYPETREESIG.sml"; use "mlsource/MLCompiler/COPIERSIG.sml"; use "mlsource/MLCompiler/TYPEIDCODESIG.sml"; use "mlsource/MLCompiler/DATATYPE_REP.ML"; use "mlsource/MLCompiler/PRINTTABLESIG.sml"; use "mlsource/MLCompiler/VALUE_OPS.ML"; use "mlsource/MLCompiler/TYPE_TREE.ML"; use "mlsource/MLCompiler/UTILITIES_.ML"; use "mlsource/MLCompiler/Utilities.ML"; use "mlsource/MLCompiler/PRINT_TABLE.ML"; use "mlsource/MLCompiler/PrintTable.ML"; use "mlsource/MLCompiler/ExportTree.sml"; use "mlsource/MLCompiler/ExportTreeStruct.sml"; use "mlsource/MLCompiler/TypeTree.ML"; use "mlsource/MLCompiler/COPIER.sml"; use "mlsource/MLCompiler/CopierStruct.sml"; use "mlsource/MLCompiler/TYPEIDCODE.sml"; use "mlsource/MLCompiler/TypeIDCodeStruct.sml"; use "mlsource/MLCompiler/DatatypeRep.ML"; use "mlsource/MLCompiler/ValueOps.ML"; use "mlsource/MLCompiler/PARSETREESIG.sml"; use "mlsource/MLCompiler/SIGNATURESSIG.sml"; use "mlsource/MLCompiler/DEBUGGERSIG.sml"; use "mlsource/MLCompiler/STRUCTURES_.ML"; use "mlsource/MLCompiler/DEBUGGER_.sml"; use "mlsource/MLCompiler/Debugger.sml"; use "mlsource/MLCompiler/ParseTree/BaseParseTreeSig.sml"; use "mlsource/MLCompiler/ParseTree/BASE_PARSE_TREE.sml"; use "mlsource/MLCompiler/ParseTree/PrintParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/PRINT_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/ExportParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/EXPORT_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/TypeCheckParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/TYPECHECK_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/MatchCompilerSig.sml"; use "mlsource/MLCompiler/ParseTree/MATCH_COMPILER.sml"; use "mlsource/MLCompiler/ParseTree/CodegenParsetreeSig.sml"; use "mlsource/MLCompiler/ParseTree/CODEGEN_PARSETREE.sml"; use "mlsource/MLCompiler/ParseTree/PARSE_TREE.ML"; use "mlsource/MLCompiler/ParseTree/ml_bind.ML"; use "mlsource/MLCompiler/SIGNATURES.sml"; use "mlsource/MLCompiler/SignaturesStruct.sml"; use "mlsource/MLCompiler/Structures.ML"; use "mlsource/MLCompiler/PARSE_DEC.ML"; use "mlsource/MLCompiler/SKIPS_.ML"; use "mlsource/MLCompiler/Skips.ML"; use "mlsource/MLCompiler/PARSE_TYPE.ML"; use "mlsource/MLCompiler/ParseType.ML"; use "mlsource/MLCompiler/ParseDec.ML"; use "mlsource/MLCompiler/CompilerBody.ML"; use "mlsource/MLCompiler/CompilerVersion.sml"; use "mlsource/MLCompiler/Make.ML"; use "mlsource/MLCompiler/INITIALISE_.ML"; use "mlsource/MLCompiler/Initialise.ML"; use "mlsource/MLCompiler/ml_bind.ML"; polyml-5.7.1/PolyML/0000755000175000017500000000000013204034553013153 5ustar daviddavidpolyml-5.7.1/PolyML/PolyML.vcxproj0000644000175000017500000007562313204034553015761 0ustar daviddavid Debug Win32 IntDebug Win32 IntDebug x64 IntRelease Win32 IntRelease x64 Release Win32 Debug x64 Release x64 {0326c47a-00af-42cb-b87d-0369a241b570} {0ba5d5b5-f85b-4c49-8a27-67186fa68922} {1ba3e7a2-d64f-4ce3-9fe5-7846b855c19f} true true true true copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt true true true false true false true true true true copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt true true true true true false true false copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt ..\polytemp.txt cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml $(IntDir)polyexport.obj $(IntDir)polyexport.obj cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml $(IntDir)polyexport.obj $(IntDir)polyexport.obj cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml $(IntDir)polyexport.obj $(IntDir)polyexport.obj cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml cd .. $(OutDir)PolyImport.exe -H 32 "%(FullPath)" -o PolyML\$(IntDir)polyexport.obj < exportPoly.sml $(IntDir)polyexport.obj $(IntDir)polyexport.obj copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt true true true true false true false true copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt copy "%(FullPath)" ..\polytemp.txt ..\polytemp.txt {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF} Win32Proj PolyML Application true v140_xp Unicode Application true v140_xp Unicode Application false v140_xp true Unicode Application false v140_xp true Unicode Application true v140_xp Unicode Application true v140_xp Unicode Application false v140_xp true Unicode Application false v140_xp true Unicode true true true true false false false false NotUsing Level3 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true libcmtd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false NotUsing Level3 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true libcmtd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false NotUsing Level3 Disabled _DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true libcmtd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false NotUsing Level3 Disabled _DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true libcmtd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false Level3 NotUsing MaxSpeed true true WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true libcmt.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false Level3 NotUsing MaxSpeed true true WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true libcmt.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false Level3 NotUsing MaxSpeed true true NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true libcmt.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false Level3 NotUsing MaxSpeed true true NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true libcmt.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true 6.0 false polyml-5.7.1/depcomp0000755000175000017500000005601613204034553013364 0ustar daviddavid#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/exportPoly.sml0000644000175000017500000000553713204034553014713 0ustar daviddavid(* Title: Bootstrap code. Author: David Matthews Copyright David Matthews 2005-2008 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) val () = RunCall.addOverload Bootstrap.convString Bootstrap.convStringName; val () = RunCall.addOverload Bootstrap.convInt "convInt"; val () = RunCall.addOverload Bootstrap.convWord "convWord"; (* Build the main basis library. *) val () = Bootstrap.use "basis/build.sml"; (* We've now set up the new name space so everything has to be compiled into that rather than the old space. *) local (* Bootstrap.use adds the path given as -I path but PolyML.make and PolyML.use don't. Add the path explicitly. *) val args = CommandLine.arguments(); fun getPath [] = "." (* Default path *) | getPath ("-I" :: outFile :: _) = outFile | getPath (_::tl) = getPath tl val path = getPath args in (* FFI. *) val () = PolyML.make (OS.Path.concat(path, "mlsource/extra/CInterface")); val () = PolyML.use (OS.Path.concat(path, "mlsource/extra/CInterface/clean")); (* XWindows/Motif *) val () = let val xWindowsGeneralCall = RunCall.rtsCallFull1 "PolyXWindowsGeneral" val xcall: int*int->int*int = xWindowsGeneralCall (* See if the RTS supports the X GetTimeOfDay call. *) val isX = (xcall(30, 0); true) handle _ => false in if isX then ( PolyML.make "mlsource/extra/XWindows"; PolyML.make "mlsource/extra/Motif" ) else () end end; val () = PolyML.print_depth 10; (* Write out the result as an export file. *) local val args = CommandLine.arguments(); (* If we have -o filename use that as the output name. N.B. polyImport takes the first argument that is not recognised as an RTS argument and treats that as the file name so any -o must occur AFTER the import file. *) fun getFile [] = "polyexport" (* Default file name *) | getFile ("-o" :: outFile :: _) = outFile | getFile (_::tl) = getFile tl val fileName = getFile args in val () = PolyML.shareCommonData PolyML.rootFunction; val () = PolyML.export(fileName, PolyML.rootFunction) end; polyml-5.7.1/libpolymain/0000755000175000017500000000000013204034553014316 5ustar daviddavidpolyml-5.7.1/libpolymain/Makefile.am0000644000175000017500000000037413204034553016356 0ustar daviddavidAUTOMAKE_OPTIONS=foreign AM_CPPFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall AM_CFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall -fno-strict-aliasing lib_LTLIBRARIES = libpolymain.la libpolymain_la_LDFLAGS = -static -version-info 0:0 libpolymain_la_SOURCES = polystub.c polyml-5.7.1/libpolymain/polystub.c0000644000175000017500000000256013204034553016346 0ustar daviddavid/* Title: polystub.c Copyright (c) 2006, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ // This is the start-up function for Poly/ML. It simply picks up the // pointer to the exported data and calls the main program. #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #include "../polyexports.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return PolyWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow, &poly_exports); } #else int main(int argc, char *argv[]) { return polymain(argc, argv, &poly_exports); } #endif polyml-5.7.1/libpolymain/PolyMainLib.vcxproj0000644000175000017500000003011213204034553020107 0ustar daviddavid Debug Win32 IntDebug Win32 IntDebug x64 IntRelease Win32 IntRelease x64 Release Win32 Debug x64 Release x64 {0326C47A-00AF-42CB-B87D-0369A241B570} PolyMainLib StaticLibrary true v140_xp Unicode StaticLibrary true v140_xp Unicode StaticLibrary false v140_xp true Unicode StaticLibrary false v140_xp true Unicode StaticLibrary true v140_xp Unicode StaticLibrary true v140_xp Unicode StaticLibrary false v140_xp true Unicode StaticLibrary false v140_xp true Unicode Level3 Disabled true ..;%(AdditionalIncludeDirectories) MultiThreadedDebug true Level3 Disabled true ..;%(AdditionalIncludeDirectories) MultiThreadedDebug true Level3 Disabled true ..;%(AdditionalIncludeDirectories) MultiThreadedDebug true Level3 Disabled true ..;%(AdditionalIncludeDirectories) MultiThreadedDebug true Level3 MaxSpeed true true true ..;%(AdditionalIncludeDirectories) MultiThreaded true true true Level3 MaxSpeed true true true ..;%(AdditionalIncludeDirectories) MultiThreaded true true true Level3 MaxSpeed true true true ..;%(AdditionalIncludeDirectories) MultiThreaded true true true Level3 MaxSpeed true true true ..;%(AdditionalIncludeDirectories) MultiThreaded true true true polyml-5.7.1/libpolymain/Makefile.in0000644000175000017500000005036713204034553016376 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libpolymain DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libpolymain_la_LIBADD = am_libpolymain_la_OBJECTS = polystub.lo libpolymain_la_OBJECTS = $(am_libpolymain_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libpolymain_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libpolymain_la_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libpolymain_la_SOURCES) DIST_SOURCES = $(libpolymain_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_CFLAGS = @FFI_CFLAGS@ FFI_LIBS = @FFI_LIBS@ FGREP = @FGREP@ GIT_VERSION = @GIT_VERSION@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSFLAG = @OSFLAG@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gitinstalled = @gitinstalled@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ polyc_CFLAGS = @polyc_CFLAGS@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign AM_CPPFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall AM_CFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall -fno-strict-aliasing lib_LTLIBRARIES = libpolymain.la libpolymain_la_LDFLAGS = -static -version-info 0:0 libpolymain_la_SOURCES = polystub.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libpolymain/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libpolymain/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libpolymain.la: $(libpolymain_la_OBJECTS) $(libpolymain_la_DEPENDENCIES) $(EXTRA_libpolymain_la_DEPENDENCIES) $(AM_V_CCLD)$(libpolymain_la_LINK) -rpath $(libdir) $(libpolymain_la_OBJECTS) $(libpolymain_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polystub.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/poly.ico0000644000175000017500000000137613204034553013465 0ustar daviddavid è( @€€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ@™™™™™™‘@™™™™™‘@™™™Q™™™‘@™™™™™™‘@™™™‘™™™™@™™™™™™‘@™™™‘™™™‘@™™™‘™™™‘@@™™™™™™™‘™™™™™™™‘0™™™™™™™‘;0 ™™™™™™™™™»0™™™™‘;»³™™™ˆ@;»»™™‘ÿp;»»™™wÿÿp»»™™ÿÿÿx»»™™ÿÿÿÿ@»»™øXÿÿ@»»‘ÿpÿÿˆ;»ÿðÿÿ÷»ÿ÷ÿÿ…±‘‡wwwww›0™™™@™™™™™‘™™™™@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸ€Ààðøøøøøøøøøøüü?ÿÿÿÿÿ€ÿÿÿÿÿpolyml-5.7.1/install-sh0000755000175000017500000003325513204034553014013 0ustar daviddavid#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: polyml-5.7.1/config.sub0000755000175000017500000010577513204034553014001 0ustar daviddavid#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-09-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: polyml-5.7.1/configure0000755000175000017500000267351213204034553013726 0ustar daviddavid#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Poly/ML 5.7.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and polyml AT polyml $0: DOT org about your system, including any error possibly $0: output before this message. Then install a modern $0: shell, or manually run the script under such a shell if $0: you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Poly/ML' PACKAGE_TARNAME='polyml' PACKAGE_VERSION='5.7.1' PACKAGE_STRING='Poly/ML 5.7.1' PACKAGE_BUGREPORT='polyml AT polyml DOT org' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_unique_file="polyexports.h" enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS INTINFISINT_FALSE INTINFISINT_TRUE moduledir polyc_CFLAGS GIT_VERSION gitinstalled NO_UNDEFINED_FALSE NO_UNDEFINED_TRUE NATIVE_WINDOWS_FALSE NATIVE_WINDOWS_TRUE WINDOWS64CALLS_FALSE WINDOWS64CALLS_TRUE ARCHINTERPRET64_FALSE ARCHINTERPRET64_TRUE ARCHINTERPRET_FALSE ARCHINTERPRET_TRUE ARCHX86_64_FALSE ARCHX86_64_TRUE ARCHI386_FALSE ARCHI386_TRUE POW_LIB LIBOBJS EXPMACHO_FALSE EXPMACHO_TRUE EXPELF_FALSE EXPELF_TRUE EXPPECOFF_FALSE EXPPECOFF_TRUE INTERNAL_LIBFFI_FALSE INTERNAL_LIBFFI_TRUE FFI_LIBS FFI_CFLAGS subdirs PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG ALLOCA XMKMF sys_symbol_underscore am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE CCASFLAGS CCAS CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBTOOL OBJDUMP DLLTOOL AS WINDOWSGUI_FALSE WINDOWSGUI_TRUE WINDRES OSFLAG host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_debug enable_windows_gui enable_shared enable_static with_pic enable_fast_install enable_dependency_tracking with_gnu_ld with_sysroot enable_libtool_lock enable_maintainer_mode enable_largefile with_x with_gmp with_system_libffi with_threads enable_native_codegeneration with_moduledir enable_intinf_as_int ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP CCAS CCASFLAGS XMKMF PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR FFI_CFLAGS FFI_LIBS' ac_subdirs_all='libffi' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Poly/ML 5.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/polyml] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Poly/ML 5.7.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-debug Compiles without optimisation for debugging --enable-windows-gui create a GUI in Windows. If this is disabled use a Windows console. [default=yes] --enable-shared[=PKGS] build shared libraries [default=no] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-libtool-lock avoid locking (might break parallel builds) --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-largefile omit support for large files --disable-native-codegeneration disable the native code generator and use the slow byte code interpreter instead. --enable-intinf-as-int set arbitrary precision as the default int type Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-x use the X Window System --with-gmp use the GMP library for arbitrary precision arithmetic [default=check] --with-system-libffi use the version of libffi installed on your system rather than the version supplied with poly [default=no] --with-threads use the pthread library for multi-threading [default=check] --with-moduledir=DIR directory for Poly/ML modules Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) XMKMF Path to xmkmf, Makefile generator for X Window System PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path FFI_CFLAGS C compiler flags for FFI, overriding pkg-config FFI_LIBS linker flags for FFI, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Poly/ML configure 5.7.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------------- ## ## Report this to polyml AT polyml DOT org ## ## --------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 $as_echo_n "checking for int$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in int$2_t 'int' 'long int' \ 'long long int' 'short int' 'signed char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_intX_t # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Poly/ML $as_me 5.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='polyml' VERSION='5.7.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # libtoolize recommends this line. ac_debug_mode="no" # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; ac_debug_mode="yes" fi if test "$ac_debug_mode" != "yes"; then # Default to maximum optimisation. -O2 is not good enough. # Set CCASFLAGS to empty so that it doesn't get set to CFLAGS. # The -g option on assembler causes problems on Sparc/Solaris 10. # test X || Y is equivalent to if !X then Y test "${CFLAGS+set}" = set || CFLAGS="-O3" test "${CXXFLAGS+set}" = set || CXXFLAGS="-O3" test "${CCASFLAGS+set}" = set || CCASFLAGS="" else test "${CFLAGS+set}" = set || CFLAGS="-g" test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" test "${CCASFLAGS+set}" = set || CCASFLAGS="" fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Set the OS flag. This should not really be required but is still used in # a few places for OS-specific quirks that can't be handled by more specific tests. # Check also for mingw in which case we want to build native Windows. poly_native_windows=no # If we are building on cygwin or mingw we need to give the -no-defined flag to # build a DLL. We also have to use Windows calling conventions rather than # SysV on 64-bit. # On mingw we need the -mthreads flag and this must be included in CFLAGS and # CXXFLAGS before the LIBTOOL macros. # When building native Windows set the flag to build the Unicode version and # the API version to at least Windows Vista to allow condition variables. poly_no_undefined=no poly_use_windowscc=no case "${host_os}" in darwin*) OSFLAG=-DMACOSX ;; sunos* | solaris*) OSFLAG=-DSOLARIS ;; *mingw*) OSFLAG="-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x600" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="${ac_tool_prefix}windres" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 $as_echo "$WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_WINDRES"; then ac_ct_WINDRES=$WINDRES # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_WINDRES="windres" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 $as_echo "$ac_ct_WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_WINDRES" = x; then WINDRES="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES fi else WINDRES="$ac_cv_prog_WINDRES" fi poly_native_windows=yes poly_no_undefined=yes poly_use_windowscc=yes CFLAGS="$CFLAGS -mthreads" CXXFLAGS="$CXXFLAGS -mthreads" ;; *cygwin*) poly_no_undefined=yes poly_use_windowscc=yes if test "$ac_cv_c_compiler_gnu" = "yes"; then if $CC -dumpmachine | grep -q mingw; then OSFLAG="-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x600" poly_native_windows=yes CFLAGS="$CFLAGS -mthreads" CXXFLAGS="$CXXFLAGS -mthreads" fi fi ;; esac # Enable/Disable the GUI in Windows. Should this only be present if # building on mingw? # Check whether --enable-windows-gui was given. if test "${enable_windows_gui+set}" = set; then : enableval=$enable_windows_gui; case "${enableval}" in yes) enablegui=true ;; no) enablegui=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-windows-gui" "$LINENO" 5 ;; esac else enablegui=true fi if test x$enablegui = xtrue; then WINDOWSGUI_TRUE= WINDOWSGUI_FALSE='#' else WINDOWSGUI_TRUE='#' WINDOWSGUI_FALSE= fi # libpolyml can be a DLL but libpolymain can't. # Disable shared libraries by default. It complicates installation to "non-standard" places. case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=no fi enable_dlopen=no # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check we're in the right directory ac_config_headers="$ac_config_headers config.h" # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # The following check was supposed to check that there was actually a # C++ compiler but doesn't work properly if CXX is set by the user. #AC_CHECK_PROG(check_cpp, $CXX, "yes", "no") #if test "$check_cpp" != "yes"; then # AC_MSG_ERROR([No C++ compiler found. Unable to build Poly/ML.]) #fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CCAS_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CCAS_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CCAS_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 $as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then am__fastdepCCAS_TRUE= am__fastdepCCAS_FALSE='#' else am__fastdepCCAS_TRUE='#' am__fastdepCCAS_FALSE= fi # Activate large file mode if needed # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi # Checks for libraries. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgcc" >&5 $as_echo_n "checking for main in -lgcc... " >&6; } if ${ac_cv_lib_gcc_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgcc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gcc_main=yes else ac_cv_lib_gcc_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcc_main" >&5 $as_echo "$ac_cv_lib_gcc_main" >&6; } if test "x$ac_cv_lib_gcc_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGCC 1 _ACEOF LIBS="-lgcc $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgcc_s" >&5 $as_echo_n "checking for main in -lgcc_s... " >&6; } if ${ac_cv_lib_gcc_s_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgcc_s $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gcc_s_main=yes else ac_cv_lib_gcc_s_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcc_s_main" >&5 $as_echo "$ac_cv_lib_gcc_s_main" >&6; } if test "x$ac_cv_lib_gcc_s_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGCC_S 1 _ACEOF LIBS="-lgcc_s $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lstdc++" >&5 $as_echo_n "checking for main in -lstdc++... " >&6; } if ${ac_cv_lib_stdcpp_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lstdc++ $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_stdcpp_main=yes else ac_cv_lib_stdcpp_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_stdcpp_main" >&5 $as_echo "$ac_cv_lib_stdcpp_main" >&6; } if test "x$ac_cv_lib_stdcpp_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSTDC__ 1 _ACEOF LIBS="-lstdc++ $LIBS" fi # These can sometimes be in the standard libraries { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 $as_echo_n "checking for library containing dlopen... " >&6; } if ${ac_cv_search_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF for ac_lib in '' dl dld; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_dlopen+:} false; then : break fi done if ${ac_cv_search_dlopen+:} false; then : else ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 $as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing floor" >&5 $as_echo_n "checking for library containing floor... " >&6; } if ${ac_cv_search_floor+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char floor (); int main () { return floor (); ; return 0; } _ACEOF for ac_lib in '' m; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_floor=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_floor+:} false; then : break fi done if ${ac_cv_search_floor+:} false; then : else ac_cv_search_floor=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_floor" >&5 $as_echo "$ac_cv_search_floor" >&6; } ac_res=$ac_cv_search_floor if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # The next two are only used with mingw { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lws2_32" >&5 $as_echo_n "checking for main in -lws2_32... " >&6; } if ${ac_cv_lib_ws2_32_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lws2_32 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ws2_32_main=yes else ac_cv_lib_ws2_32_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32_main" >&5 $as_echo "$ac_cv_lib_ws2_32_main" >&6; } if test "x$ac_cv_lib_ws2_32_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBWS2_32 1 _ACEOF LIBS="-lws2_32 $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgdi32" >&5 $as_echo_n "checking for main in -lgdi32... " >&6; } if ${ac_cv_lib_gdi32_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgdi32 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gdi32_main=yes else ac_cv_lib_gdi32_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdi32_main" >&5 $as_echo "$ac_cv_lib_gdi32_main" >&6; } if test "x$ac_cv_lib_gdi32_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGDI32 1 _ACEOF LIBS="-lgdi32 $LIBS" fi ## External names on Win64. They have no leading underscores as per ## the X64 ABI published by MS. Earlier versions of GCC (anything ## prior to 4.5.0) were faulty. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 $as_echo_n "checking for _ prefix in compiled symbols... " >&6; } if ${lt_cv_sys_symbol_underscore+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. ac_nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&5 fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "configure: failed program was:" >&5 cat conftest.c >&5 fi rm -rf conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 $as_echo "$lt_cv_sys_symbol_underscore" >&6; } sys_symbol_underscore=$lt_cv_sys_symbol_underscore if test x$sys_symbol_underscore = xyes; then $as_echo "#define SYMBOLS_REQUIRE_UNDERSCORE 1" >>confdefs.h fi # Solaris needs -lsocket, -lnsl and -lrt { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getsockopt" >&5 $as_echo_n "checking for library containing getsockopt... " >&6; } if ${ac_cv_search_getsockopt+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char getsockopt (); int main () { return getsockopt (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_getsockopt=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_getsockopt+:} false; then : break fi done if ${ac_cv_search_getsockopt+:} false; then : else ac_cv_search_getsockopt=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getsockopt" >&5 $as_echo "$ac_cv_search_getsockopt" >&6; } ac_res=$ac_cv_search_getsockopt if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_wait" >&5 $as_echo_n "checking for library containing sem_wait... " >&6; } if ${ac_cv_search_sem_wait+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sem_wait (); int main () { return sem_wait (); ; return 0; } _ACEOF for ac_lib in '' rt; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_sem_wait=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_sem_wait+:} false; then : break fi done if ${ac_cv_search_sem_wait+:} false; then : else ac_cv_search_sem_wait=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_wait" >&5 $as_echo "$ac_cv_search_sem_wait" >&6; } ac_res=$ac_cv_search_sem_wait if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # Check for X and Motif headers and libraries { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "x${with_x}" = "xyes"; then $as_echo "#define WITH_XWINDOWS 1" >>confdefs.h if test "$x_includes" != "" ; then if test "$x_includes" != "NONE" ; then CFLAGS="$CFLAGS -I$x_includes" CXXFLAGS="$CXXFLAGS -I$x_includes" CPPFLAGS="$CPPFLAGS -I$x_includes" fi fi if test "$x_libraries" != "" ; then if test "$x_libraries" != "NONE" ; then LIBS="-L$x_libraries $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCreateGC in -lX11" >&5 $as_echo_n "checking for XCreateGC in -lX11... " >&6; } if ${ac_cv_lib_X11_XCreateGC+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XCreateGC (); int main () { return XCreateGC (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XCreateGC=yes else ac_cv_lib_X11_XCreateGC=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XCreateGC" >&5 $as_echo "$ac_cv_lib_X11_XCreateGC" >&6; } if test "x$ac_cv_lib_X11_XCreateGC" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBX11 1 _ACEOF LIBS="-lX11 $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XtMalloc in -lXt" >&5 $as_echo_n "checking for XtMalloc in -lXt... " >&6; } if ${ac_cv_lib_Xt_XtMalloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XtMalloc (); int main () { return XtMalloc (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_Xt_XtMalloc=yes else ac_cv_lib_Xt_XtMalloc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xt_XtMalloc" >&5 $as_echo "$ac_cv_lib_Xt_XtMalloc" >&6; } if test "x$ac_cv_lib_Xt_XtMalloc" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBXT 1 _ACEOF LIBS="-lXt $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XextAddDisplay in -lXext" >&5 $as_echo_n "checking for XextAddDisplay in -lXext... " >&6; } if ${ac_cv_lib_Xext_XextAddDisplay+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXext $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XextAddDisplay (); int main () { return XextAddDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_Xext_XextAddDisplay=yes else ac_cv_lib_Xext_XextAddDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XextAddDisplay" >&5 $as_echo "$ac_cv_lib_Xext_XextAddDisplay" >&6; } if test "x$ac_cv_lib_Xext_XextAddDisplay" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBXEXT 1 _ACEOF LIBS="-lXext $LIBS" fi if test "$xm_includes" != "" ; then if test "$xm_includes" != "NONE" ; then CFLAGS="$CFLAGS -I$xm_includes" CXXFLAGS="$CXXFLAGS -I$xm_includes" CPPFLAGS="$CPPFLAGS -I$xm_includes" fi fi if test "$xm_libraries" != "" ; then if test "$xm_libraries" != "NONE" ; then LIBS="-L$xm_libraries $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmGetDestination in -lXm" >&5 $as_echo_n "checking for XmGetDestination in -lXm... " >&6; } if ${ac_cv_lib_Xm_XmGetDestination+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XmGetDestination (); int main () { return XmGetDestination (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_Xm_XmGetDestination=yes else ac_cv_lib_Xm_XmGetDestination=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xm_XmGetDestination" >&5 $as_echo "$ac_cv_lib_Xm_XmGetDestination" >&6; } if test "x$ac_cv_lib_Xm_XmGetDestination" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBXM 1 _ACEOF LIBS="-lXm $LIBS" fi fi # TODO: May need AC_PATH_XTRA for Solaris # Check for headers ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } if ${ac_cv_working_alloca_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } if ${ac_cv_func_alloca_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ void *alloca (size_t); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then $as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext $as_echo "#define C_ALLOCA 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } if ${ac_cv_c_stack_direction+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi for ac_header in stdio.h time.h fcntl.h float.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/systeminfo.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/time.h unistd.h values.h dlfcn.h signal.h ucontext.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in assert.h ctype.h direct.h errno.h excpt.h fenv.h fpu_control.h grp.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in ieeefp.h io.h math.h memory.h netinet/tcp.h poll.h pwd.h siginfo.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdarg.h sys/errno.h sys/filio.h sys/mman.h sys/resource.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/signal.h sys/sockio.h sys/stat.h termios.h sys/termios.h sys/times.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/select.h sys/sysctl.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/elf_SPARC.h sys/elf_386.h sys/elf_amd64.h asm/elf.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in windows.h tchar.h semaphore.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only check for the X headers if the user said --with-x. if test "${with_x+set}" = set; then for ac_header in X11/Xlib.h Xm/Xm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Check for GMP # Check whether --with-gmp was given. if test "${with_gmp+set}" = set; then : withval=$with_gmp; else with_gmp=check fi # If we want GMP check that the library and headers are installed. if test "x$with_gmp" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpn_tdiv_qr in -lgmp" >&5 $as_echo_n "checking for __gmpn_tdiv_qr in -lgmp... " >&6; } if ${ac_cv_lib_gmp___gmpn_tdiv_qr+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgmp $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char __gmpn_tdiv_qr (); int main () { return __gmpn_tdiv_qr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gmp___gmpn_tdiv_qr=yes else ac_cv_lib_gmp___gmpn_tdiv_qr=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpn_tdiv_qr" >&5 $as_echo "$ac_cv_lib_gmp___gmpn_tdiv_qr" >&6; } if test "x$ac_cv_lib_gmp___gmpn_tdiv_qr" = xyes; then : $as_echo "#define HAVE_LIBGMP 1" >>confdefs.h LIBS="-lgmp $LIBS" ac_fn_c_check_header_mongrel "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" if test "x$ac_cv_header_gmp_h" = xyes; then : $as_echo "#define HAVE_GMP_H 1" >>confdefs.h else if test "x$with_gmp" != "xcheck"; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gmp was given, but gmp.h header file is not installed See \`config.log' for more details" "$LINENO" 5; } fi fi else if test "x$with_gmp" != "xcheck"; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gmp was given, but gmp library (version 4 or later) is not installed See \`config.log' for more details" "$LINENO" 5; } fi fi fi # libffi # libffi must be configured even if we are not building with it so that things like "make dist" work. subdirs="$subdirs libffi" # Use the internal version unless --with-system-libffi is given. # Check whether --with-system-libffi was given. if test "${with_system_libffi+set}" = set; then : withval=$with_system_libffi; else with_system_libffi=no fi # Libffi uses pkg-config. if test "x$with_system_libffi" = "xyes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFI" >&5 $as_echo_n "checking for FFI... " >&6; } if test -n "$FFI_CFLAGS"; then pkg_cv_FFI_CFLAGS="$FFI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FFI_LIBS"; then pkg_cv_FFI_LIBS="$FFI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi" 2>&1` else FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FFI_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc in -lffi" >&5 $as_echo_n "checking for ffi_prep_closure_loc in -lffi... " >&6; } if ${ac_cv_lib_ffi_ffi_prep_closure_loc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lffi $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ffi_prep_closure_loc (); int main () { return ffi_prep_closure_loc (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ffi_ffi_prep_closure_loc=yes else ac_cv_lib_ffi_ffi_prep_closure_loc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_prep_closure_loc" >&5 $as_echo "$ac_cv_lib_ffi_ffi_prep_closure_loc" >&6; } if test "x$ac_cv_lib_ffi_ffi_prep_closure_loc" = xyes; then : LIBS="-lffi $LIBS" ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" if test "x$ac_cv_header_ffi_h" = xyes; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-system-libffi was given, but ffi.h header file cannot be found See \`config.log' for more details" "$LINENO" 5; } fi else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-system-libffi was given, but the ffi library is not installed See \`config.log' for more details" "$LINENO" 5; } fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc in -lffi" >&5 $as_echo_n "checking for ffi_prep_closure_loc in -lffi... " >&6; } if ${ac_cv_lib_ffi_ffi_prep_closure_loc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lffi $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ffi_prep_closure_loc (); int main () { return ffi_prep_closure_loc (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ffi_ffi_prep_closure_loc=yes else ac_cv_lib_ffi_ffi_prep_closure_loc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_prep_closure_loc" >&5 $as_echo "$ac_cv_lib_ffi_ffi_prep_closure_loc" >&6; } if test "x$ac_cv_lib_ffi_ffi_prep_closure_loc" = xyes; then : LIBS="-lffi $LIBS" ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" if test "x$ac_cv_header_ffi_h" = xyes; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-system-libffi was given, but ffi.h header file cannot be found See \`config.log' for more details" "$LINENO" 5; } fi else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-system-libffi was given, but the ffi library is not installed See \`config.log' for more details" "$LINENO" 5; } fi else FFI_CFLAGS=$pkg_cv_FFI_CFLAGS FFI_LIBS=$pkg_cv_FFI_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } LIBS="$FFI_LIBS $LIBS" CFLAGS="$FFI_CFLAGS $CFLAGS" fi else # Use internal libffi CFLAGS="$CFLAGS -I../libffi/include" CXXFLAGS="$CXXFLAGS -I../libffi/include" fi if test "x$with_system_libffi" != "xyes"; then INTERNAL_LIBFFI_TRUE= INTERNAL_LIBFFI_FALSE='#' else INTERNAL_LIBFFI_TRUE='#' INTERNAL_LIBFFI_FALSE= fi # Check for pthreads. Mainly, this allows a single-threaded build on OSes such as Mac OS X # that don't have proper multi-threaded profiling. # Check whether --with-threads was given. if test "${with_threads+set}" = set; then : withval=$with_threads; else with_threads=check fi # If we want pthreads check that the library and headers are installed. # On Android pthread_create is in the standard library if test "x$with_threads" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5 $as_echo_n "checking for library containing pthread_create... " >&6; } if ${ac_cv_search_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF for ac_lib in '' pthread; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_pthread_create=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_pthread_create+:} false; then : break fi done if ${ac_cv_search_pthread_create+:} false; then : else ac_cv_search_pthread_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5 $as_echo "$ac_cv_search_pthread_create" >&6; } ac_res=$ac_cv_search_pthread_create if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define HAVE_LIBPTHREAD 1" >>confdefs.h ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes; then : $as_echo "#define HAVE_PTHREAD_H 1" >>confdefs.h else if test "x$with_threads" != "xcheck"; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-threads was given, but pthread.h header file is not installed See \`config.log' for more details" "$LINENO" 5; } fi fi else if test "x$with_threads" != "xcheck"; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-threads was given, but pthread library is not installed See \`config.log' for more details" "$LINENO" 5; } fi fi fi # Find out which type of object code exporter to use. # If we have winnt use PECOFF. This really only applies to cygwin here. # If we have elf.h use ELF. # If we have mach-o/reloc.h use Mach-O # Otherwise use the C source code exporter. ac_fn_c_check_type "$LINENO" "IMAGE_FILE_HEADER" "ac_cv_type_IMAGE_FILE_HEADER" "#include " if test "x$ac_cv_type_IMAGE_FILE_HEADER" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_IMAGE_FILE_HEADER 1 _ACEOF $as_echo "#define HAVE_PECOFF /**/" >>confdefs.h polyexport=pecoff else ac_fn_c_check_header_mongrel "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default" if test "x$ac_cv_header_elf_h" = xyes; then : $as_echo "#define HAVE_ELF_H /**/" >>confdefs.h polyexport=elf else ac_fn_c_check_header_mongrel "$LINENO" "mach-o/reloc.h" "ac_cv_header_mach_o_reloc_h" "$ac_includes_default" if test "x$ac_cv_header_mach_o_reloc_h" = xyes; then : $as_echo "#define HAVE_MACH_O_RELOC_H /**/" >>confdefs.h polyexport=macho else for ac_header in elf_abi.h machine/reloc.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_ELF_ABI_H /**/" >>confdefs.h polyexport=elf fi done fi fi fi if test "$polyexport" = pecoff; then EXPPECOFF_TRUE= EXPPECOFF_FALSE='#' else EXPPECOFF_TRUE='#' EXPPECOFF_FALSE= fi if test "$polyexport" = elf; then EXPELF_TRUE= EXPELF_FALSE='#' else EXPELF_TRUE='#' EXPELF_FALSE= fi if test "$polyexport" = macho; then EXPMACHO_TRUE= EXPMACHO_FALSE='#' else EXPMACHO_TRUE='#' EXPMACHO_FALSE= fi # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" case $ac_cv_c_int16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int16_t $ac_cv_c_int16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" case $ac_cv_c_int32_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int32_t $ac_cv_c_int32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" case $ac_cv_c_int64_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int64_t $ac_cv_c_int64_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" if test "x$ac_cv_type_intptr_t" = xyes; then : $as_echo "#define HAVE_INTPTR_T 1" >>confdefs.h else for ac_type in 'int' 'long int' 'long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat >>confdefs.h <<_ACEOF #define intptr_t $ac_type _ACEOF ac_type= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test -z "$ac_type" && break done fi ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" if test "x$ac_cv_type_uintptr_t" = xyes; then : $as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h else for ac_type in 'unsigned int' 'unsigned long int' \ 'unsigned long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat >>confdefs.h <<_ACEOF #define uintptr_t $ac_type _ACEOF ac_type= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test -z "$ac_type" && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 $as_echo_n "checking for uid_t in sys/types.h... " >&6; } if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1; then : ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 $as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then $as_echo "#define uid_t int" >>confdefs.h $as_echo "#define gid_t int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # Check for the various sub-second fields of the stat structure. ac_fn_c_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_atim" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIM 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec" "ac_cv_member_struct_stat_st_atimespec" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_atimespec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIMESPEC 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct stat" "st_atime_n" "ac_cv_member_struct_stat_st_atime_n" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_atime_n" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIME_N 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct stat" "st_uatime" "ac_cv_member_struct_stat_st_uatime" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_uatime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_UATIME 1 _ACEOF fi # Mac OS X, at any rate, needs signal.h to be included first. ac_fn_c_check_type "$LINENO" "ucontext_t" "ac_cv_type_ucontext_t" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_type_ucontext_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UCONTEXT_T 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "struct sigcontext" "ac_cv_type_struct_sigcontext" "#include \"signal.h\" " if test "x$ac_cv_type_struct_sigcontext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_SIGCONTEXT 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "stack_t" "ac_cv_type_stack_t" "#include \"signal.h\" " if test "x$ac_cv_type_stack_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STACK_T 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "sighandler_t" "ac_cv_type_sighandler_t" "#include \"signal.h\" " if test "x$ac_cv_type_sighandler_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SIGHANDLER_T 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "sig_t" "ac_cv_type_sig_t" "#include \"signal.h\" " if test "x$ac_cv_type_sig_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SIG_T 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include \"sys/types.h\" #include \"sys/socket.h\" " if test "x$ac_cv_type_socklen_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SOCKLEN_T 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "SYSTEM_LOGICAL_PROCESSOR_INFORMATION" "ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION" "#include \"windows.h\" " if test "x$ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default" if test "x$ac_cv_type_long_long" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LONG_LONG 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SSIZE_T 1 _ACEOF fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5 $as_echo_n "checking size of void*... " >&6; } if ${ac_cv_sizeof_voidp+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default"; then : else if test "$ac_cv_type_voidp" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void*) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_voidp=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 $as_echo "$ac_cv_sizeof_voidp" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOIDP $ac_cv_sizeof_voidp _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac # Checks for library functions. for ac_header in unistd.h do : ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UNISTD_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 $as_echo_n "checking for working chown... " >&6; } if ${ac_cv_func_chown_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_chown_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include int main () { char *f = "conftest.chown"; struct stat before, after; if (creat (f, 0600) < 0) return 1; if (stat (f, &before) < 0) return 1; if (chown (f, (uid_t) -1, (gid_t) -1) == -1) return 1; if (stat (f, &after) < 0) return 1; return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_chown_works=yes else ac_cv_func_chown_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.chown fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 $as_echo "$ac_cv_func_chown_works" >&6; } if test $ac_cv_func_chown_works = yes; then $as_echo "#define HAVE_CHOWN 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 $as_echo_n "checking whether closedir returns void... " >&6; } if ${ac_cv_func_closedir_void+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_closedir_void=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include <$ac_header_dirent> #ifndef __cplusplus int closedir (); #endif int main () { return closedir (opendir (".")) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_closedir_void=no else ac_cv_func_closedir_void=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 $as_echo "$ac_cv_func_closedir_void" >&6; } if test $ac_cv_func_closedir_void = yes; then $as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 $as_echo_n "checking for error_at_line... " >&6; } if ${ac_cv_lib_error_at_line+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { error_at_line (0, 0, "", 0, "an error occurred"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_error_at_line=yes else ac_cv_lib_error_at_line=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 $as_echo "$ac_cv_lib_error_at_line" >&6; } if test $ac_cv_lib_error_at_line = no; then case " $LIBOBJS " in *" error.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS error.$ac_objext" ;; esac fi for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #ifdef HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 $as_echo_n "checking type of array argument to getgroups... " >&6; } if ${ac_cv_type_getgroups+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_type_getgroups=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ $ac_includes_default #define NGID 256 #undef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) int main () { gid_t gidset[NGID]; int i, n; union { gid_t gval; long int lval; } val; val.lval = -1; for (i = 0; i < NGID; i++) gidset[i] = val.gval; n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, gidset); /* Exit non-zero if getgroups seems to require an array of ints. This happens when gid_t is short int but getgroups modifies an array of ints. */ return n > 0 && gidset[n] != val.gval; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_type_getgroups=gid_t else ac_cv_type_getgroups=int fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_type_getgroups = cross; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then : ac_cv_type_getgroups=gid_t else ac_cv_type_getgroups=int fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 $as_echo "$ac_cv_type_getgroups" >&6; } cat >>confdefs.h <<_ACEOF #define GETGROUPS_T $ac_cv_type_getgroups _ACEOF ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" if test "x$ac_cv_func_getgroups" = xyes; then : fi # If we don't yet have getgroups, see if it's in -lbsd. # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1. ac_save_LIBS=$LIBS if test $ac_cv_func_getgroups = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getgroups in -lbsd" >&5 $as_echo_n "checking for getgroups in -lbsd... " >&6; } if ${ac_cv_lib_bsd_getgroups+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char getgroups (); int main () { return getgroups (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_getgroups=yes else ac_cv_lib_bsd_getgroups=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_getgroups" >&5 $as_echo "$ac_cv_lib_bsd_getgroups" >&6; } if test "x$ac_cv_lib_bsd_getgroups" = xyes; then : GETGROUPS_LIB=-lbsd fi fi # Run the program to test the functionality of the system-supplied # getgroups function only if there is such a function. if test $ac_cv_func_getgroups = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getgroups" >&5 $as_echo_n "checking for working getgroups... " >&6; } if ${ac_cv_func_getgroups_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_getgroups_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* On Ultrix 4.3, getgroups (0, 0) always fails. */ return getgroups (0, 0) == -1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_getgroups_works=yes else ac_cv_func_getgroups_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getgroups_works" >&5 $as_echo "$ac_cv_func_getgroups_works" >&6; } else ac_cv_func_getgroups_works=no fi if test $ac_cv_func_getgroups_works = yes; then $as_echo "#define HAVE_GETGROUPS 1" >>confdefs.h fi LIBS=$ac_save_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 $as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } if ${ac_cv_func_getpgrp_void+:} false; then : $as_echo_n "(cached) " >&6 else # Use it with a single arg. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { getpgrp (0); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_func_getpgrp_void=no else ac_cv_func_getpgrp_void=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 $as_echo "$ac_cv_func_getpgrp_void" >&6; } if test $ac_cv_func_getpgrp_void = yes; then $as_echo "#define GETPGRP_VOID 1" >>confdefs.h fi if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat accepts an empty string" >&5 $as_echo_n "checking whether lstat accepts an empty string... " >&6; } if ${ac_cv_func_lstat_empty_string_bug+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_lstat_empty_string_bug=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; return lstat ("", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_empty_string_bug=no else ac_cv_func_lstat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_empty_string_bug" >&5 $as_echo "$ac_cv_func_lstat_empty_string_bug" >&6; } if test $ac_cv_func_lstat_empty_string_bug = yes; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_LSTAT_EMPTY_STRING_BUG 1 _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi for ac_header in sys/select.h sys/socket.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 $as_echo_n "checking types of arguments for select... " >&6; } if ${ac_cv_func_select_args+:} false; then : $as_echo_n "(cached) " >&6 else for ac_arg234 in 'fd_set *' 'int *' 'void *'; do for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifdef HAVE_SYS_SELECT_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif int main () { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, $ac_arg5); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done done done # Provide a safe default value. : "${ac_cv_func_select_args=int,int *,struct timeval *}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 $as_echo "$ac_cv_func_select_args" >&6; } ac_save_IFS=$IFS; IFS=',' set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` IFS=$ac_save_IFS shift cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG1 $1 _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG234 ($2) _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG5 ($3) _ACEOF rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 $as_echo_n "checking whether stat accepts an empty string... " >&6; } if ${ac_cv_func_stat_empty_string_bug+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_stat_empty_string_bug=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; return stat ("", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_stat_empty_string_bug=no else ac_cv_func_stat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 $as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } if test $ac_cv_func_stat_empty_string_bug = yes; then case " $LIBOBJS " in *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_STAT_EMPTY_STRING_BUG 1 _ACEOF fi for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 $as_echo_n "checking for working strtod... " >&6; } if ${ac_cv_func_strtod+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_strtod=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifndef strtod double strtod (); #endif int main() { { /* Some versions of Linux strtod mis-parse strings with leading '+'. */ char *string = " +69"; char *term; double value; value = strtod (string, &term); if (value != 69 || term != (string + 4)) return 1; } { /* Under Solaris 2.4, strtod returns the wrong value for the terminating character under some conditions. */ char *string = "NaN"; char *term; strtod (string, &term); if (term != string && *(term - 1) == 0) return 1; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_strtod=yes else ac_cv_func_strtod=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 $as_echo "$ac_cv_func_strtod" >&6; } if test $ac_cv_func_strtod = no; then case " $LIBOBJS " in *" strtod.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtod.$ac_objext" ;; esac ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow" if test "x$ac_cv_func_pow" = xyes; then : fi if test $ac_cv_func_pow = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 $as_echo_n "checking for pow in -lm... " >&6; } if ${ac_cv_lib_m_pow+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pow (); int main () { return pow (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_pow=yes else ac_cv_lib_m_pow=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 $as_echo "$ac_cv_lib_m_pow" >&6; } if test "x$ac_cv_lib_m_pow" = xyes; then : POW_LIB=-lm else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 $as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} fi fi fi for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in bzero dup2 floor ftruncate getcwd gethostbyaddr gethostname gettimeofday memmove do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in memset mkdir mkfifo munmap pathconf pow realpath rmdir select setlocale socket sqrt strdup strerror do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in uname dlopen getrusage strtod dtoa sigaction mkstemp getpagesize sigaltstack mmap mprotect do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ## There does not seem to be a declaration for fpsetmask in mingw64. ac_fn_c_check_decl "$LINENO" "fpsetmask" "ac_cv_have_decl_fpsetmask" "#include " if test "x$ac_cv_have_decl_fpsetmask" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_FPSETMASK $ac_have_decl _ACEOF for ac_func in sysctl sysctlbyname do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in localtime_r gmtime_r do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in ctermid tcdrain do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Where are the registers? #Linux: ac_fn_c_check_member "$LINENO" "mcontext_t" "gregs" "ac_cv_member_mcontext_t_gregs" "#include \"ucontext.h\" " if test "x$ac_cv_member_mcontext_t_gregs" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MCONTEXT_T_GREGS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "mcontext_t" "regs" "ac_cv_member_mcontext_t_regs" "#include \"ucontext.h\" " if test "x$ac_cv_member_mcontext_t_regs" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MCONTEXT_T_REGS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "mcontext_t" "mc_esp" "ac_cv_member_mcontext_t_mc_esp" "#include \"ucontext.h\" " if test "x$ac_cv_member_mcontext_t_mc_esp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MCONTEXT_T_MC_ESP 1 _ACEOF fi #Mac OS X: ac_fn_c_check_member "$LINENO" "struct mcontext" "ss" "ac_cv_member_struct_mcontext_ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct_mcontext_ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_MCONTEXT_SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext" "ss" "ac_cv_member_struct___darwin_mcontext_ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext_ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT_SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext" "__ss" "ac_cv_member_struct___darwin_mcontext___ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext___ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT___SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext32" "ss" "ac_cv_member_struct___darwin_mcontext32_ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext32_ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT32_SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext32" "__ss" "ac_cv_member_struct___darwin_mcontext32___ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext32___ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT32___SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext64" "ss" "ac_cv_member_struct___darwin_mcontext64_ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext64_ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT64_SS 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct __darwin_mcontext64" "__ss" "ac_cv_member_struct___darwin_mcontext64___ss" "#include \"signal.h\" #include \"ucontext.h\" " if test "x$ac_cv_member_struct___darwin_mcontext64___ss" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT___DARWIN_MCONTEXT64___SS 1 _ACEOF fi # FreeBSD includes a sun_len member in struct sockaddr_un ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_len" "ac_cv_member_struct_sockaddr_un_sun_len" "#include " if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1 _ACEOF fi # Additional checks. AC_CANONICAL_HOST has already been called. #AC_CANONICAL_HOST # Check for .note.GNU-stack support, used for marking the stack as non-executable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether as supports .note.GNU-stack" >&5 $as_echo_n "checking whether as supports .note.GNU-stack... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ __asm__(".section .note.GNU-stack,\"\",@progbits"); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_GNU_STACK 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # This option enables the native code generator. More precisely it allows # the byte code interpreter to be built on X86. # Check whether --enable-native-codegeneration was given. if test "${enable_native_codegeneration+set}" = set; then : enableval=$enable_native_codegeneration; case "${enableval}" in no) with_portable=yes ;; yes) with_portable=no ;; *) as_fn_error $? "bad value ${enableval} for --enable-native-codegeneration" "$LINENO" 5 ;; esac else with_portable=check fi case "${host_cpu}" in i[3456]86*) $as_echo "#define HOSTARCHITECTURE_X86 1" >>confdefs.h polyarch=i386 ;; x86_64* | amd64*) if test X"$ac_cv_sizeof_voidp" = X8; then $as_echo "#define HOSTARCHITECTURE_X86_64 1" >>confdefs.h polyarch=x86_64 else $as_echo "#define HOSTARCHITECTURE_X32 1" >>confdefs.h polyarch=interpret fi ;; sparc64*) $as_echo "#define HOSTARCHITECTURE_SPARC64 1" >>confdefs.h polyarch=interpret ;; sparc*) $as_echo "#define HOSTARCHITECTURE_SPARC 1" >>confdefs.h polyarch=interpret ;; powerpc64* | ppc64*) $as_echo "#define HOSTARCHITECTURE_PPC64 1" >>confdefs.h polyarch=interpret ;; power* | ppc*) $as_echo "#define HOSTARCHITECTURE_PPC 1" >>confdefs.h polyarch=interpret ;; arm*) $as_echo "#define HOSTARCHITECTURE_ARM 1" >>confdefs.h polyarch=interpret ;; aarch64*) $as_echo "#define HOSTARCHITECTURE_AARCH64 1" >>confdefs.h polyarch=interpret ;; hppa*) $as_echo "#define HOSTARCHITECTURE_HPPA 1" >>confdefs.h polyarch=interpret ;; ia64*) $as_echo "#define HOSTARCHITECTURE_IA64 1" >>confdefs.h polyarch=interpret ;; m68k*) $as_echo "#define HOSTARCHITECTURE_M68K 1" >>confdefs.h polyarch=interpret ;; mips64*) $as_echo "#define HOSTARCHITECTURE_MIPS64 1" >>confdefs.h polyarch=interpret ;; mips*) $as_echo "#define HOSTARCHITECTURE_MIPS 1" >>confdefs.h polyarch=interpret ;; s390x*) $as_echo "#define HOSTARCHITECTURE_S390X 1" >>confdefs.h polyarch=interpret ;; s390*) $as_echo "#define HOSTARCHITECTURE_S390 1" >>confdefs.h polyarch=interpret ;; sh*) $as_echo "#define HOSTARCHITECTURE_SH 1" >>confdefs.h polyarch=interpret ;; alpha*) $as_echo "#define HOSTARCHITECTURE_ALPHA 1" >>confdefs.h polyarch=interpret # GCC defaults to non-conforming floating-point, and does not respect the rounding mode # in the floating-point control register, so we force it to conform to IEEE and use the # dynamic suffix on the floating-point instructions it produces. CFLAGS="$CFLAGS -mieee -mfp-rounding-mode=d" CXXFLAGS="$CXXFLAGS -mieee -mfp-rounding-mode=d" ;; *) as_fn_error $? "Poly/ML is not supported for this architecture" "$LINENO" 5 ;; esac # If we explicitly asked to use the interpreter set the architecture to interpreted. if test "x$with_portable" = "xyes" ; then if test "x$polyarch" != "xinterpret" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *******You have disabled native code generation. Are you really sure you want to do that?*******" >&5 $as_echo "$as_me: WARNING: *******You have disabled native code generation. Are you really sure you want to do that?*******" >&2;} fi polyarch=interpret fi # If we asked not to use the interpreter check we have native code support. if test "x$with_portable" = "xno" ; then if test "x$polyarch" = "xinterpret" ; then as_fn_error $? "--enable-native-codegeneration was given but native code is not supported on this platform" "$LINENO" 5 fi fi # Set the define if this is the interpreter. This is no longer actually used. if test "x$polyarch" = "xinterpret" ; then $as_echo "#define INTERPRETED 1" >>confdefs.h fi # Put this test at the end where it's less likely to be missed. # If we're compiling on Cygwin (and mingw?) and /usr/bin/file is not present # the link step will produce some strange warning messages of the form: # "Warning: linker path does not have real file for library -lXXX". I think # that's really a bug in autoconf but to explain what's happening to the user # add a test here. if test "$lt_cv_file_magic_cmd" = "func_win32_libid"; then if test \! -x /usr/bin/file; then echo "" echo "*** Warning: You are building Poly/ML on Cygwin/Mingw but '/usr/bin/file' cannot be found." echo "*** You can still go ahead and build Poly/ML but libpolyml will not be built as a" echo "*** shared library and you may get strange warning messages from the linker step." echo "*** Install the 'file' package to correct this problem." echo "" fi fi if test "$polyarch" = i386; then ARCHI386_TRUE= ARCHI386_FALSE='#' else ARCHI386_TRUE='#' ARCHI386_FALSE= fi if test "$polyarch" = x86_64; then ARCHX86_64_TRUE= ARCHX86_64_FALSE='#' else ARCHX86_64_TRUE='#' ARCHX86_64_FALSE= fi if test "$polyarch" = interpret -a X"$ac_cv_sizeof_voidp" = X4; then ARCHINTERPRET_TRUE= ARCHINTERPRET_FALSE='#' else ARCHINTERPRET_TRUE='#' ARCHINTERPRET_FALSE= fi if test "$polyarch" = interpret -a X"$ac_cv_sizeof_voidp" = X8; then ARCHINTERPRET64_TRUE= ARCHINTERPRET64_FALSE='#' else ARCHINTERPRET64_TRUE='#' ARCHINTERPRET64_FALSE= fi if test "$poly_use_windowscc" = yes -a "$polyarch" = x86_64; then WINDOWS64CALLS_TRUE= WINDOWS64CALLS_FALSE='#' else WINDOWS64CALLS_TRUE='#' WINDOWS64CALLS_FALSE= fi if test "$poly_native_windows" = yes; then NATIVE_WINDOWS_TRUE= NATIVE_WINDOWS_FALSE='#' else NATIVE_WINDOWS_TRUE='#' NATIVE_WINDOWS_FALSE= fi if test "$poly_no_undefined" = yes; then NO_UNDEFINED_TRUE= NO_UNDEFINED_FALSE='#' else NO_UNDEFINED_TRUE='#' NO_UNDEFINED_FALSE= fi # Test whether this is a git directory and set the version if possible # Extract the first word of "git", so it can be a program name with args. set dummy git; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_gitinstalled+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$gitinstalled"; then ac_cv_prog_gitinstalled="$gitinstalled" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_gitinstalled="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_gitinstalled" && ac_cv_prog_gitinstalled="no" fi fi gitinstalled=$ac_cv_prog_gitinstalled if test -n "$gitinstalled"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gitinstalled" >&5 $as_echo "$gitinstalled" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test X"$gitinstalled" = "Xyes" -a -d ".git"; then GIT_VERSION='-DGIT_VERSION=\"$(shell git describe --tags --always)\"' fi # Strip -fdebug-prefix-map= from CFLAGS; it's meaningless for users of polyc, # and hurts reproducibility. polyc_CFLAGS= for cflag in $CFLAGS; do cflag="${cflag##-fdebug-prefix-map=*}" if test -n "$cflag"; then if test -n "$polyc_CFLAGS"; then polyc_CFLAGS="$polyc_CFLAGS $cflag" else polyc_CFLAGS="$cflag" fi fi done polyc_CFLAGS="$polyc_CFLAGS" # Modules directory # Check whether --with-moduledir was given. if test "${with_moduledir+set}" = set; then : withval=$with_moduledir; moduledir=$withval else moduledir="\${libdir}/polyml/modules" fi moduledir=$moduledir # Control whether to build the basis library with arbitrary precision as the default int # Check whether --enable-intinf-as-int was given. if test "${enable_intinf_as_int+set}" = set; then : enableval=$enable_intinf_as_int; case "${enableval}" in no) intisintinf=no ;; yes) intisintinf=yes ;; *) as_fn_error $? "bad value ${enableval} for --enable-intinf-as-int" "$LINENO" 5 ;; esac else intisintinf=no fi if test "$intisintinf" = "yes"; then INTINFISINT_TRUE= INTINFISINT_FALSE='#' else INTINFISINT_TRUE='#' INTINFISINT_FALSE= fi # These are needed for building in a separate build directory, as they are # referenced from exportPoly.sml. ac_config_commands="$ac_config_commands basis" ac_config_commands="$ac_config_commands mlsource" ac_config_files="$ac_config_files Makefile libpolyml/Makefile libpolyml/polyml.pc libpolymain/Makefile modules/Makefile modules/IntInfAsInt/Makefile" ac_config_files="$ac_config_files polyc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${WINDOWSGUI_TRUE}" && test -z "${WINDOWSGUI_FALSE}"; then as_fn_error $? "conditional \"WINDOWSGUI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INTERNAL_LIBFFI_TRUE}" && test -z "${INTERNAL_LIBFFI_FALSE}"; then as_fn_error $? "conditional \"INTERNAL_LIBFFI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${EXPPECOFF_TRUE}" && test -z "${EXPPECOFF_FALSE}"; then as_fn_error $? "conditional \"EXPPECOFF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${EXPELF_TRUE}" && test -z "${EXPELF_FALSE}"; then as_fn_error $? "conditional \"EXPELF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${EXPMACHO_TRUE}" && test -z "${EXPMACHO_FALSE}"; then as_fn_error $? "conditional \"EXPMACHO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARCHI386_TRUE}" && test -z "${ARCHI386_FALSE}"; then as_fn_error $? "conditional \"ARCHI386\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARCHX86_64_TRUE}" && test -z "${ARCHX86_64_FALSE}"; then as_fn_error $? "conditional \"ARCHX86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARCHINTERPRET_TRUE}" && test -z "${ARCHINTERPRET_FALSE}"; then as_fn_error $? "conditional \"ARCHINTERPRET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARCHINTERPRET64_TRUE}" && test -z "${ARCHINTERPRET64_FALSE}"; then as_fn_error $? "conditional \"ARCHINTERPRET64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WINDOWS64CALLS_TRUE}" && test -z "${WINDOWS64CALLS_FALSE}"; then as_fn_error $? "conditional \"WINDOWS64CALLS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NATIVE_WINDOWS_TRUE}" && test -z "${NATIVE_WINDOWS_FALSE}"; then as_fn_error $? "conditional \"NATIVE_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NO_UNDEFINED_TRUE}" && test -z "${NO_UNDEFINED_FALSE}"; then as_fn_error $? "conditional \"NO_UNDEFINED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INTINFISINT_TRUE}" && test -z "${INTINFISINT_FALSE}"; then as_fn_error $? "conditional \"INTINFISINT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Poly/ML $as_me 5.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Poly/ML config.status 5.7.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "basis") CONFIG_COMMANDS="$CONFIG_COMMANDS basis" ;; "mlsource") CONFIG_COMMANDS="$CONFIG_COMMANDS mlsource" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "libpolyml/Makefile") CONFIG_FILES="$CONFIG_FILES libpolyml/Makefile" ;; "libpolyml/polyml.pc") CONFIG_FILES="$CONFIG_FILES libpolyml/polyml.pc" ;; "libpolymain/Makefile") CONFIG_FILES="$CONFIG_FILES libpolymain/Makefile" ;; "modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;; "modules/IntInfAsInt/Makefile") CONFIG_FILES="$CONFIG_FILES modules/IntInfAsInt/Makefile" ;; "polyc") CONFIG_FILES="$CONFIG_FILES polyc" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "basis":C) test -e basis || ln -sf ${ac_top_srcdir}/basis . ;; "mlsource":C) test -e mlsource || ln -sf ${ac_top_srcdir}/mlsource . ;; "polyc":F) chmod +x polyc ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi polyml-5.7.1/imports/0000755000175000017500000000000013204034553013474 5ustar daviddavidpolyml-5.7.1/imports/polymlint.txt0000644000175000017500000634535213204034553016306 0ustar daviddavidObjects 18945 Root 3968 3968:O1|@15132 3969:O1|@18897 3970:S24|506f6c794d4c2e72756e46756e6374696f6e283129283129 3971:O2|@3973,@3972 3972:O2|@3976,@3975 3973:O2|@15133,@18931 3974:S19|466f726569676e4d656d6f72792e5f2d283129 3975:O2|@4449,@4448 3976:O2|@15134,@3977 3977:O2|@15175,@4439 3978:O1|@15170 3979:S20|5369676e616c2e666f726b546872656164283129 3980:O1|@15135 3981:O4|12,@3984,@3985,@3983 3982:S38|5468726561642e5468726561642e6174747273546f576f7264283129636f6e76657274283429 3983:O5|@3986,218,0,218,0 3984:S6|546872656164 3985:S53|5468652073616d65206174747269627574652061707065617273206d6f7265207468616e206f6e636520696e20746865206c697374 3986:S18|2e2f62617369732f5468726561642e736d6c 3987:O1|@15136 3988:S20|506f6c79546872656164466f726b546872656164 3989:O6|@3990,@2,@3991,@3,@18933,@1 3990:O2|4096,@205 3991:O14|@3993,@3994,@3999,0,0,@4000,0,@4001,@4009,@4012,4096,0,@4015,@3992 3992:O1|@4018 3993:S6|7374644f7574 3994:O1|@3995 3995:O3|@15137,@3996,1 3996:O1|@15138 3997:S50|4c696272617279494f537570706f72742e777261704f757446696c654465736372283529746578745072696d57722d283129 3998:S18|506f6c794261736963494f47656e6572616c 3999:O3|@15139,@3996,1 4000:O1|1 4001:O1|@4002 4002:O3|@15140,@4003,1 4003:O1|@15141 4004:O4|11,@4007,0,@4006 4005:S49|4c696272617279494f537570706f72742e777261704f757446696c65446573637228352977726974654172726179283129 4006:O5|@4008,143,0,143,0 4007:S9|537562736372697074 4008:S26|2e2f62617369732f4c696272617279537570706f72742e736d6c 4009:O1|@4010 4010:O3|@15142,@4003,1 4011:S50|4c696272617279494f537570706f72742e777261704f757446696c6544657363722835297772697465566563746f72283129 4012:O1|@4013 4013:O3|@15143,@4014,1 4014:O1|@15144 4015:O1|@4016 4016:O3|@15145,@4002,@4013 4017:S40|5072696d494f28292e6175676d656e7457726974657228312977726974654172724e42272d283129 4018:O3|@15146,@4010,@4013 4019:S40|5072696d494f28292e6175676d656e7457726974657228312977726974655665634e42272d283129 4020:S31|556e61626c6520746f20637265617465207369676e616c207468726561640a 4021:O1|@15147 4022:S29|54657874494f2e5465787453747265616d494f2e6f7574707574283229 4023:O4|11,@4007,0,@4024 4024:O5|@4025,267,0,267,0 4025:S18|2e2f62617369732f537472696e672e736d6c 4026:O1|@15150 4027:S34|426173696353747265616d494f28292e6f7574707574566563746f72283129283129 4028:O4|11,@4007,0,@4425 4029:S31|426173696353747265616d494f28292e6f7574707574566563746f72283229 4030:O4|@4,@4031,0,0 4031:S12|436c6f73656453747265616d 4032:S6|6f7574707574 4033:O1|@4034 4034:O1|@15151 4035:O2|3,@4363 4036:S14|7072696e742d6c6162656c6c6564 4037:O2|@4038,0 4038:O2|3,@4039 4039:S4|2e2e2e7d 4040:O1|@15152 4041:O1|@15153 4042:S7|61646450502d31 4043:O2|3,@4393 4044:S11|65786e5072696e74283329 4045:O2|3,@4046 4046:S3|2e2e2e 4047:O2|@4048,0 4048:O2|3,@4049 4049:S4|2e2e2e29 4050:O2|@15154,@4051 4051:O2|@15157,@4064 4052:O1|@15156 4053:O1|@15155 4054:O4|4,@4058,0,@4059 4055:S19|537472696e672e746f537472696e6773283229 4056:O4|4,@4058,0,@4057 4057:O5|@4008,138,0,138,0 4058:S4|53697a65 4059:O5|@4008,169,0,169,0 4060:O2|@4061,0 4061:S1|22 4062:B4|00000000 4063:S16|537472696e672e636f6e636174283129 4064:O256|@4093,@4094,@4095,@4096,@4097,@4098,@4099,@4100,@4101,@4102,@4103,@4104,@4105,@4106,@4107,@4108,@4109,@4110,@4111,@4112,@4113,@4114,@4115,@4116,@4117,@4118,@4119,@4120,@4121,@4122,@4123,@4124,@4125,@4126,@4127,@4128,@4129,@4130,@4131,@4132,@4133,@4134,@4135,@4136,@4137,@4138,@4139,@4140,@4141,@4142,@4143,@4144,@4145,@4146,@4147,@4148,@4149,@4150,@4151,@4152,@4153,@4154,@4155,@4156,@4157,@4158,@4159,@4160,@4161,@4162,@4163,@4164,@4165,@4166,@4167,@4168,@4169,@4170,@4171,@4172,@4173,@4174,@4175,@4176,@4177,@4178,@4179,@4180,@4181,@4182,@4183,@4184,@4185,@4186,@4187,@4188,@4189,@4190,@4191,@4192,@4193,@4194,@4195,@4196,@4197,@4198,@4199,@4200,@4201,@4202,@4203,@4204,@4205,@4206,@4207,@4208,@4209,@4210,@4211,@4212,@4213,@4214,@4215,@4216,@4217,@4218,@4219,@4220,@4221,@4222,@4223,@4224,@4225,@4226,@4227,@4228,@4229,@4230,@4231,@4232,@4233,@4234,@4235,@4236,@4237,@4238,@4239,@4240,@4241,@4242,@4243,@4244,@4245,@4246,@4247,@4248,@4249,@4250,@4251,@4252,@4253,@4254,@4255,@4256,@4257,@4258,@4259,@4260,@4261,@4262,@4263,@4264,@4265,@4266,@4267,@4268,@4269,@4270,@4271,@4272,@4273,@4274,@4275,@4276,@4277,@4278,@4279,@4280,@4281,@4282,@4283,@4284,@4285,@4286,@4287,@4288,@4289,@4290,@4291,@4292,@4293,@4294,@4295,@4296,@4297,@4298,@4299,@4300,@4301,@4302,@4303,@4304,@4305,@4306,@4307,@4308,@4309,@4310,@4311,@4312,@4313,@4314,@4315,@4316,@4317,@4318,@4319,@4320,@4321,@4322,@4323,@4324,@4325,@4326,@4327,@4328,@4329,@4330,@4331,@4332,@4333,@4334,@4335,@4336,@4337,@4338,@4339,@4340,@4341,@4342,@4343,@4344,@4345,@4346,@4347,@4092 4065:S1|5c 4066:S16|436861722e746f537472696e67283129 4067:S2|5c5c 4068:S2|5c22 4069:S2|5c61 4070:S2|5c62 4071:S2|5c74 4072:S2|5c6e 4073:S2|5c76 4074:S2|5c66 4075:S2|5c72 4076:O4|@8,@4078,0,@4077 4077:O5|@4025,126,0,126,0 4078:S3|436872 4079:S2|5c5e 4080:O1|@15158 4081:O4|7,@4091,0,@4090 4082:S18|436861722e6f6374496e7452657072283329 4083:O4|7,@4085,0,@4084 4084:O5|@4086,125,0,125,0 4085:S3|446976 4086:S23|2e2f62617369732f496e697469616c42617369732e4d4c 4087:O4|5,@4089,0,@4088 4088:O5|@4086,128,0,128,0 4089:S8|4f766572666c6f77 4090:O5|@4086,134,0,134,0 4091:S3|446976 4092:S1|ff 4093:S1|00 4094:S1|01 4095:S1|02 4096:S1|03 4097:S1|04 4098:S1|05 4099:S1|06 4100:S1|07 4101:S1|08 4102:S1|09 4103:S1|0a 4104:S1|0b 4105:S1|0c 4106:S1|0d 4107:S1|0e 4108:S1|0f 4109:S1|10 4110:S1|11 4111:S1|12 4112:S1|13 4113:S1|14 4114:S1|15 4115:S1|16 4116:S1|17 4117:S1|18 4118:S1|19 4119:S1|1a 4120:S1|1b 4121:S1|1c 4122:S1|1d 4123:S1|1e 4124:S1|1f 4125:S1|20 4126:S1|21 4127:S1|22 4128:S1|23 4129:S1|24 4130:S1|25 4131:S1|26 4132:S1|27 4133:S1|28 4134:S1|29 4135:S1|2a 4136:S1|2b 4137:S1|2c 4138:S1|2d 4139:S1|2e 4140:S1|2f 4141:S1|30 4142:S1|31 4143:S1|32 4144:S1|33 4145:S1|34 4146:S1|35 4147:S1|36 4148:S1|37 4149:S1|38 4150:S1|39 4151:S1|3a 4152:S1|3b 4153:S1|3c 4154:S1|3d 4155:S1|3e 4156:S1|3f 4157:S1|40 4158:S1|41 4159:S1|42 4160:S1|43 4161:S1|44 4162:S1|45 4163:S1|46 4164:S1|47 4165:S1|48 4166:S1|49 4167:S1|4a 4168:S1|4b 4169:S1|4c 4170:S1|4d 4171:S1|4e 4172:S1|4f 4173:S1|50 4174:S1|51 4175:S1|52 4176:S1|53 4177:S1|54 4178:S1|55 4179:S1|56 4180:S1|57 4181:S1|58 4182:S1|59 4183:S1|5a 4184:S1|5b 4185:S1|5c 4186:S1|5d 4187:S1|5e 4188:S1|5f 4189:S1|60 4190:S1|61 4191:S1|62 4192:S1|63 4193:S1|64 4194:S1|65 4195:S1|66 4196:S1|67 4197:S1|68 4198:S1|69 4199:S1|6a 4200:S1|6b 4201:S1|6c 4202:S1|6d 4203:S1|6e 4204:S1|6f 4205:S1|70 4206:S1|71 4207:S1|72 4208:S1|73 4209:S1|74 4210:S1|75 4211:S1|76 4212:S1|77 4213:S1|78 4214:S1|79 4215:S1|7a 4216:S1|7b 4217:S1|7c 4218:S1|7d 4219:S1|7e 4220:S1|7f 4221:S1|80 4222:S1|81 4223:S1|82 4224:S1|83 4225:S1|84 4226:S1|85 4227:S1|86 4228:S1|87 4229:S1|88 4230:S1|89 4231:S1|8a 4232:S1|8b 4233:S1|8c 4234:S1|8d 4235:S1|8e 4236:S1|8f 4237:S1|90 4238:S1|91 4239:S1|92 4240:S1|93 4241:S1|94 4242:S1|95 4243:S1|96 4244:S1|97 4245:S1|98 4246:S1|99 4247:S1|9a 4248:S1|9b 4249:S1|9c 4250:S1|9d 4251:S1|9e 4252:S1|9f 4253:S1|a0 4254:S1|a1 4255:S1|a2 4256:S1|a3 4257:S1|a4 4258:S1|a5 4259:S1|a6 4260:S1|a7 4261:S1|a8 4262:S1|a9 4263:S1|aa 4264:S1|ab 4265:S1|ac 4266:S1|ad 4267:S1|ae 4268:S1|af 4269:S1|b0 4270:S1|b1 4271:S1|b2 4272:S1|b3 4273:S1|b4 4274:S1|b5 4275:S1|b6 4276:S1|b7 4277:S1|b8 4278:S1|b9 4279:S1|ba 4280:S1|bb 4281:S1|bc 4282:S1|bd 4283:S1|be 4284:S1|bf 4285:S1|c0 4286:S1|c1 4287:S1|c2 4288:S1|c3 4289:S1|c4 4290:S1|c5 4291:S1|c6 4292:S1|c7 4293:S1|c8 4294:S1|c9 4295:S1|ca 4296:S1|cb 4297:S1|cc 4298:S1|cd 4299:S1|ce 4300:S1|cf 4301:S1|d0 4302:S1|d1 4303:S1|d2 4304:S1|d3 4305:S1|d4 4306:S1|d5 4307:S1|d6 4308:S1|d7 4309:S1|d8 4310:S1|d9 4311:S1|da 4312:S1|db 4313:S1|dc 4314:S1|dd 4315:S1|de 4316:S1|df 4317:S1|e0 4318:S1|e1 4319:S1|e2 4320:S1|e3 4321:S1|e4 4322:S1|e5 4323:S1|e6 4324:S1|e7 4325:S1|e8 4326:S1|e9 4327:S1|ea 4328:S1|eb 4329:S1|ec 4330:S1|ed 4331:S1|ee 4332:S1|ef 4333:S1|f0 4334:S1|f1 4335:S1|f2 4336:S1|f3 4337:S1|f4 4338:S1|f5 4339:S1|f6 4340:S1|f7 4341:S1|f8 4342:S1|f9 4343:S1|fa 4344:S1|fb 4345:S1|fc 4346:S1|fd 4347:S1|fe 4348:O1|@15159 4349:S13|7072696e746f7074696f6e2829 4350:O5|0,0,0,@4356,@4372 4351:S12|7072696e742d6f7074696f6e 4352:O2|3,@4353 4353:S3|2e2e2e 4354:O5|0,0,0,@4356,@4355 4355:O2|@4360,0 4356:O2|@4357,0 4357:O2|0,@4358 4358:O5|@4359,0,0,0,0 4359:S14|5374616e64617264204261736973 4360:O2|3,@4361 4361:S4|4e4f4e45 4362:S1|28 4363:S1|7b 4364:S1|5b 4365:O2|@4367,@4366 4366:O2|@4368,0 4367:O3|1,0,0 4368:O2|3,@4369 4369:S1|29 4370:O2|3,@4362 4371:O3|1,1,0 4372:O2|@4373,0 4373:O2|3,@4374 4374:S4|534f4d45 4375:O4|0,@4376,1,1 4376:O1|@15161 4377:S17|7072696e742d4f532e7379736572726f72 4378:O1|@15162 4379:O1|@15163 4380:S23|506f6c7950726f63657373456e764572726f724e616d65 4381:O2|@4382,0 4382:O2|3,@4369 4383:O3|1,1,0 4384:O2|3,@4385 4385:S1|2c 4386:O2|3,@4362 4387:O1|@15164 4388:O2|3,@4133 4389:S26|65786e5072696e74283329706172656e74686573697365283129 4390:O2|@4391,0 4391:O2|3,@4134 4392:O3|1,1,1 4393:S6|537973457272 4394:O2|@4395,0 4395:O2|3,@4396 4396:S1|7d 4397:O2|3,@4398 4398:S6|6e616d65203d 4399:O2|3,@4400 4400:S10|66756e6374696f6e203d 4401:O2|3,@4402 4402:S7|6361757365203d 4403:S2|496f 4404:O5|@4405,610,0,610,0 4405:S25|2e2f62617369732f426173696353747265616d494f2e736d6c 4406:O1|@15165 4407:O5|@4405,501,0,501,0 4408:S28|426173696353747265616d494f28292e666c7573684f757427283129 4409:O4|@11,@4410,0,0 4410:S20|426c6f636b696e674e6f74537570706f72746564 4411:S8|666c7573684f7574 4412:O5|@4405,514,0,515,0 4413:O4|11,@4007,0,@4414 4414:O5|@4415,111,0,111,0 4415:S33|2e2f62617369732f566563746f72536c6963654f7065726174696f6e732e736d6c 4416:O3|1,@4417,0 4417:S9|496e74657272757074 4418:O1|@15166 4419:O1|@15167 4420:S27|426173696353747265616d494f28292e7772697465566563283429 4421:O5|@4405,577,0,577,0 4422:O5|@4405,604,0,605,0 4423:O5|@4405,595,0,595,0 4424:S38|426173696353747265616d494f28292e7772697465566563283429666f7263654f7574283129 4425:O5|@4025,1646,0,1646,0 4426:O4|11,@4007,0,@4427 4427:O5|@4415,101,0,101,0 4428:O1|@15174 4429:S20|5468726561644c69622e70726f74656374283329 4430:O1|@15171 4431:S20|506f6c795468726561644d75746578426c6f636b 4432:O1|@15172 4433:S21|506f6c795468726561644d75746578556e6c6f636b 4434:O1|@15173 4435:S23|506f6c7954687265616454657374496e74657272757074 4436:O5|@4437,77,0,77,0 4437:S27|2e2f62617369732f506f6c794d4c457863657074696f6e2e736d6c 4438:S7|7261697365466e 4439:O1|@15179 4440:O1|@15178 4441:S19|5369676e616c2e736967546872656164283129 4442:O1|@15176 4443:O1|@15177 4444:S35|5369676e616c2e73696754687265616428312962726f6164436173745765616b283229 4445:S21|506f6c79546872656164436f6e6456617257616b65 4446:S38|5369676e616c2e73696754687265616428312962726f6164436173745765616b283129283129 4447:S17|506f6c7957616974466f725369676e616c 4448:O2|@4463,@4462 4449:O2|@15180,@4450 4450:O3|@15182,@4455,@18937 4451:O1|@15181 4452:S28|426173696353747265616d494f28292e646f4f6e456e747279283129 4453:S21|506f6c7950726f63657373456e7647656e6572616c 4454:S27|426173696353747265616d494f28292e636c6f7365416c6c283129 4455:O3|@15183,@18938,@18937 4456:O1|@15184 4457:S28|426173696353747265616d494f28292e636c6f73654f757427283129 4458:O1|@15186 4459:S35|426173696353747265616d494f28292e7465726d696e61746553747265616d27283129 4460:O1|@15185 4461:S16|4c6973742e66696c7465722832292829 4462:O2|@4527,0 4463:O3|@15187,@18940,@18939 4464:S19|54657874494f2e6f6e53746172745570283129 4465:S5|737464496e 4466:O9|@15189,@4003,@4495,@4014,@3996,@4496,@4497,@4498,@4467 4467:O6|@15214,0,0,@4503,@4499,@4499 4468:O1|@15201 4469:S35|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329 4470:S47|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329726561644172726179283129 4471:S48|4c696272617279494f537570706f72742e77726170496e46696c65446573637228332972656164566563746f72283129 4472:S34|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283129283129 4473:O3|0,0,0 4474:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229676574506f732d283129 4475:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229736574506f732d283129 4476:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229656e64506f732d283129 4477:S43|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329617661696c283129 4478:S49|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329746578745072696d52642d283129 4479:S25|5072696d494f28292e6175676d656e74526561646572283129 4480:O4|4,@4058,0,@4482 4481:S37|5072696d494f28292e6175676d656e7452656164657228312972656164566563272d283129 4482:O5|@4008,149,0,149,0 4483:O4|11,@4007,0,@4485 4484:S37|5072696d494f28292e6175676d656e7452656164657228312972656164417272272d283129 4485:O5|@4025,1211,0,1211,0 4486:S39|5072696d494f28292e6175676d656e74526561646572283129726561645665634e42272d283129 4487:S39|5072696d494f28292e6175676d656e74526561646572283129726561644172724e42272d283129 4488:O5|@4491,239,0,242,0 4489:S38|5072696d494f28292e6175676d656e745265616465722831297265616456656327272d283129 4490:S7|72656164566563 4491:S18|2e2f62617369732f5072696d494f2e736d6c 4492:O5|@4491,262,0,265,0 4493:S38|5072696d494f28292e6175676d656e745265616465722831297265616441727227272d283129 4494:S7|72656164417272 4495:O1|@15210 4496:O1|@15211 4497:O1|@15212 4498:O1|@15213 4499:O1|@4505 4500:O5|@4502,135,0,135,0 4501:S31|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283229 4502:S28|2e2f62617369732f4c696272617279494f537570706f72742e736d6c 4503:O1|@4504 4504:B4|73000000 4505:B4|0b000000 4506:S37|4261736963496d7065726174697665494f28292e736574496e73747265616d283229283129 4507:O5|0,@4509,@4508,1693,0 4508:O3|1,@12,@18941 4509:S1694|282a0a20202020436f707972696768742028632920323030362d31302c20323031352d31362020446176696420432e204a2e204d617474686577730a0a2020202054686973206c696272617279206973206672656520736f6674776172653b20796f752063616e2072656469737472696275746520697420616e642f6f720a202020206d6f6469667920697420756e64657220746865207465726d73206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e73652076657273696f6e20322e31206173207075626c697368656420627920746865204672656520536f66747761726520466f756e646174696f6e2e0a202020200a2020202054686973206c69627261727920697320646973747269627574656420696e2074686520686f706520746861742069742077696c6c2062652075736566756c2c0a2020202062757420574954484f555420414e592057415252414e54593b20776974686f7574206576656e2074686520696d706c6965642077617272616e7479206f660a202020204d45524348414e544142494c495459206f72204649544e45535320464f52204120504152544943554c415220505552504f53452e20205365652074686520474e550a202020204c65737365722047656e6572616c205075626c6963204c6963656e736520666f72206d6f72652064657461696c732e0a202020200a20202020596f752073686f756c642068617665207265636569766564206120636f7079206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e736520616c6f6e6720776974682074686973206c6962726172793b206966206e6f742c20777269746520746f20746865204672656520536f6674776172650a20202020466f756e646174696f6e2c20496e632e2c203531204672616e6b6c696e2053742c20466966746820466c6f6f722c20426f73746f6e2c204d41202030323131302d3133303120205553410a2a290a0a282a20436f6d70696c65722074686520636f6d70696c657220616e64206578706f7274206974206173206120706f727461626c652066696c652e20205468652072657374206f66207468650a202020626f6f7473747261702070726f63657373206973207468656e20646f6e65207768656e2074686520706f727461626c652066696c6520697320696d706f727465642e202a290a0a506f6c794d4c2e7072696e745f646570746820303b0a0a506f6c794d4c2e6d616b6520226d6c736f757263652f4d4c436f6d70696c6572223b0a0a66756e20636f6d70696c654261736973416e644578706f72742829203d0a6c65740a20202020282a20546869732066756e6374696f6e2069732074686520726f6f74206f662074686520227072652d6275696c742220636f6d70696c6572732e2020497420636f6d70696c657320696e0a20202020202020746865206261736973206c69627261727920616e64206578706f7274732074686520636f6d70696c657220616c6f6e67207769746820746865206261736973206c6962726172790a20202020202020617320616e206f7065726174696e672d73797374656d207370656369666963206f626a6563742066696c652e202a290a2020202076616c20676c6f62616c5461626c65203a204d616b652e67456e76203d204d616b652e6d616b6547456e762028290a2020202076616c2074657374203d204c6973742e6578697374732028666e20222d2d696e744973496e74496e6622203d3e2074727565207c205f203d3e2066616c7365292028436f6d6d616e644c696e652e617267756d656e74732829290a2020202076616c202829203d20496e697469616c6973652e696e6974476c6f62616c456e767b676c6f62616c5461626c653d676c6f62616c5461626c652c20696e744973417262697472617279507265636973696f6e3d746573747d0a696e0a202020204d616b652e7368656c6c50726f6320676c6f62616c5461626c6528290a656e643b0a0a506f6c794d4c2e7368617265436f6d6d6f6e4461746120636f6d70696c654261736973416e644578706f72743b0a0a506f6c794d4c2e6578706f7274506f727461626c652822706f6c7974656d70222c0a20202020666e202829203d3e2028636f6d70696c654261736973416e644578706f72742028293b204f532e50726f636573732e65786974204f532e50726f636573732e73756363657373292068616e646c65205f203d3e204f532e50726f636573732e65786974204f532e50726f636573732e6661696c757265293b0a 4510:O2|1,@4511 4511:O15|@4465,@4513,@4514,@4516,0,0,@4517,0,@4518,@4520,@4522,4096,@4524,@4512,0 4512:O1|@4526 4513:O3|@15197,@4014,0 4514:O1|@4515 4515:O3|@15198,@3996,0 4516:O3|@15200,@3996,0 4517:O1|0 4518:O1|@4519 4519:O3|@15190,@4003,0 4520:O1|@4521 4521:O3|@15191,@4495,0 4522:O1|@4523 4523:O3|@15199,@4014,0 4524:O1|@4525 4525:O3|@15207,@4519,@4523 4526:O3|@15205,@4521,@4523 4527:O2|@15215,@4528 4528:O3|@15216,@4529,@18942 4529:O3|@15217,@18943,@18942 4530:O1|@15218 4531:O1|@15219 4532:O2|@4534,@4533 4533:O2|@3989,0 4534:O6|@4535,@14,@4536,@15,@18944,@13 4535:O2|4096,@289 4536:O14|@4538,@4539,@4541,0,0,@4542,0,@4543,@4545,@4547,4096,0,@4549,@4537 4537:O1|@4551 4538:S6|737464457272 4539:O1|@4540 4540:O3|@15137,@3996,2 4541:O3|@15139,@3996,2 4542:O1|2 4543:O1|@4544 4544:O3|@15140,@4003,2 4545:O1|@4546 4546:O3|@15142,@4003,2 4547:O1|@4548 4548:O3|@15143,@4014,2 4549:O1|@4550 4550:O3|@15145,@4544,@4548 4551:O3|@15146,@4546,@4548 4552:O1|@15220 4553:S20|506f6c794d4c2e72756e4f6e456e747279283129 4554:O1|@15221 4555:O5|@4584,88,0,88,0 4556:S21|486173685461626c652e686173684d616b65283129 4557:O4|4,@4058,0,@4558 4558:O5|@4559,70,0,70,0 4559:S17|2e2f62617369732f41727261792e736d6c 4560:O4|5,@4089,0,@4567 4561:S25|486173685461626c652e6861736856616c7565283129283129 4562:O4|7,@4085,0,@4563 4563:O5|@4086,253,0,253,0 4564:B4|00000080 4565:O1|@15223 4566:S16|506f6c79416464417262697472617279 4567:O5|@4568,74,0,74,0 4568:S15|2e2f62617369732f496e742e736d6c 4569:O9|@15224,268435456,7,1000000000,9,134217728,9,536870912,29 4570:O2|@15226,@4574 4571:S15|4c61726765496e742e666d74283229 4572:O1|@15225 4573:S21|506f6c795375627472616374417262697472617279 4574:O2|@15228,@4570 4575:O1|@15227 4576:S29|4c61726765496e742e666d74283229746f4368617247726f7570283229 4577:S20|506f6c7951756f7452656d417262697472617279 4578:S25|4c61726765496e742e666d74283229746f4368617273283529 4579:S16|486173685461626c652e686173683a20 4580:O1|@4581 4581:O1|@15229 4582:S12|7072696e742d737472696e67 4583:S13|496e7465726e616c4572726f72 4584:S32|6d6c736f757263652f4d4c436f6d70696c65722f486173685461626c652e4d4c 4585:O1|@15230 4586:S13|2d2d696e744973496e74496e66 4587:O1|@15231 4588:O1|@18892 4589:S30|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229 4590:O1|@15232 4591:S20|4d414b455f28292e67456e764173456e76283129 4592:O1|@15238 4593:S28|4d414b455f28292e6462456e764c6f6f6b7570283129283129283129 4594:O4|101,@4609,0,@4608 4595:S25|4d414b455f28292e6462456e764c6f6f6b7570283329283129 4596:O1|@15236 4597:O4|11,@4007,0,@4602 4598:S20|486173685461626c652e68617368537562283229 4599:O4|11,@4007,0,@4600 4600:O5|@4601,68,0,68,0 4601:S18|2e2f62617369732f566563746f722e736d6c 4602:O5|@4559,81,0,81,0 4603:O1|@4604 4604:O1|@15237 4605:O2|3,@4607 4606:S13|7072696e742d64656661756c74 4607:S1|3f 4608:O5|@4610,56,0,56,0 4609:S5|4d61746368 4610:S20|2e2f62617369732f556e6976657273616c2e4d4c 4611:O5|@4620,94,0,94,0 4612:S18|4d414b455f28292e70726f74656374283229 4613:O2|@4614,0 4614:O2|1,2 4615:O4|12,@3984,@4617,@4616 4616:O5|@3986,336,0,336,0 4617:S40|54686520737461636b2073697a65206d7573742062652067726561746572207468616e207a65726f 4618:O1|@15239 4619:S22|506f6c795468726561644d6178537461636b53697a65 4620:S28|6d6c736f757263652f4d4c436f6d70696c65722f4d414b455f2e4d4c 4621:S27|4d414b455f28292e6462456e76456e746572283129283129283129 4622:O1|@15253 4623:S24|4d414b455f28292e6462456e76456e746572283429283129 4624:O1|@15252 4625:S36|556e6976657273616c5461626c652e756e6976456e746572283429736561726368283129 4626:S20|486173685461626c652e68617368536574283329 4627:S34|417474656d707420746f2073657420612076616c75652077697468206e616d652028 4628:S24|2920696e20612066726f7a656e2068617368207461626c65 4629:S4|4661696c 4630:O5|@4584,128,0,128,0 4631:O1|@15255 4632:O4|11,@4007,0,@4634 4633:S31|486173685461626c652e68617368536574283329656e746572546162283329 4634:O5|@4559,86,0,86,0 4635:O1|@15258 4636:O1|@15261 4637:O1|@15264 4638:O1|@15267 4639:O1|@15270 4640:O1|@15276 4641:S23|4d414b455f28292e67456e764173456e76283129283129 4642:O1|@15273 4643:S22|4d414b455f28292e6462456e76416c6c283329283129 4644:O1|@15272 4645:S38|556e6976657273616c5461626c652e666f6c64283329666f6c6448617368456e747279283329 4646:S17|486173685461626c652e666f6c64283329 4647:S35|486173685461626c652e666f6c642833296765744974656d7c6c656e6774682d283129 4648:S13|4c6973742e6d61702832292829 4649:O5|5,0,@4651,@4650,0 4650:O4|@4651,0,@4653,@4652 4651:S3|696e74 4652:O3|@4658,@4759,@4657 4653:O2|@4654,0 4654:O2|0,@4655 4655:O5|@4656,0,0,0,0 4656:S14|5374616e64617264204261736973 4657:O3|@4761,@4655,@4760 4658:O2|1,@4659 4659:O3|6,@4661,@4660 4660:O2|@4670,@4669 4661:O4|@4662,@23,3,1 4662:O1|@15277 4663:O1|@15278 4664:S14|696e74496e66457175616c697479 4665:S26|617262697472617279507265636973696f6e457175616c697479 4666:O1|@15279 4667:O2|3,@4156 4668:S37|545950455f5452454528292e64656661756c744d6f6e6f547970655072696e746572283129 4669:O2|@4729,0 4670:O4|@24,@4162,@4671,0 4671:O2|@4673,@4672 4672:O2|0,@4728 4673:O2|@4674,0 4674:O4|@25,@4162,@4675,0 4675:O3|1,@4677,@4676 4676:O5|@15280,@4720,@4725,@4726,@4707 4677:O8|@4679,@4664,0,0,@4678,0,0,1 4678:O2|@4702,@4701 4679:O4|5,@4681,@4683,@4680 4680:O4|5,@4691,@4690,@4689 4681:O2|1,@4682 4682:O5|@4684,@4686,@4688,@4689,@4683 4683:O3|6,1,0 4684:O2|8,@4685 4685:O2|0,0 4686:O2|8,@4687 4687:O2|0,1 4688:O2|1,0 4689:O3|6,0,0 4690:O4|7,@4697,@4696,1 4691:O4|5,@4693,@4692,@4689 4692:O3|21,@4695,9 4693:O3|21,@4694,9 4694:O3|21,@4684,5 4695:O3|21,@4686,5 4696:O3|6,@4663,0 4697:O2|@4699,@4698 4698:O2|@4700,0 4699:O2|@4684,1 4700:O2|@4686,1 4701:O2|@4702,0 4702:O2|1,@4703 4703:O2|@4705,@4704 4704:O2|@4705,@4706 4705:O1|3 4706:O2|@4705,0 4707:O1|@15288 4708:O1|@15282 4709:S40|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283129283129 4710:S39|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e2833292d45 4711:S37|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283329 4712:O4|@16,@4583,@4714,@4713 4713:O5|@4715,306,0,306,0 4714:S43|636f646574726565206e6577456e7669726f6e3a204e6f742045787472616374206f7220436f6e73746e74 4715:S40|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245452e4d4c 4716:O4|@16,@4583,@4718,@4717 4717:O5|@4715,302,0,302,0 4718:S33|5265666572656e636520746f206e6f6e2d6578697374656e742062696e64696e67 4719:O1|2 4720:O2|@15287,0 4721:O4|11,@4007,0,@4723 4722:S49|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529696e6c696e65436f64652d283129 4723:O5|@4724,60,0,60,0 4724:S16|2e2f62617369732f4c6973742e736d6c 4725:O0| 4726:O1|@4662 4727:S38|434f44455452454528292e67656e436f64652833292831296669656c6450726f70732d283129 4728:O2|0,@4685 4729:O4|@25,@4162,@4730,0 4730:O3|3,4,@4731 4731:O5|@15289,@4733,@4725,@4747,@4732 4732:O2|@15292,@4748 4733:O2|@15291,@4734 4734:O2|@4737,@4736 4735:S39|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129283129 4736:O2|@4740,@4739 4737:O2|@4738,@4675 4738:O3|0,@4662,@4673 4739:O2|@4743,@4742 4740:O2|@4741,@4719 4741:O3|0,@23,0 4742:O2|@4745,0 4743:O2|@4744,@4719 4744:O3|0,3,0 4745:O2|@4746,@4719 4746:O3|0,1,0 4747:O1|@4661 4748:O2|@4749,0 4749:O2|@4670,@4750 4750:O2|@4751,0 4751:O4|@25,@4162,@4752,0 4752:O3|3,4,@4753 4753:O4|@15293,@4754,@4671,@4661 4754:O2|@4675,@4756 4755:S81|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c2831297475706c6550726f70732d696e6c696e6550726f702d7475706c65456e747279283129 4756:O2|@4719,@4757 4757:O2|@4719,@4758 4758:O2|@4719,0 4759:O4|1,@26,0,0 4760:S8|496e204261736973 4761:S10|496e74496e662e696e74 4762:O5|5,0,@4651,@4763,0 4763:O4|@4651,0,@4653,@4764 4764:O3|@4766,@4792,@4765 4765:O3|@4793,@4655,@4760 4766:O2|1,@4767 4767:O3|6,@4769,@4768 4768:O2|@4772,0 4769:O4|@4770,@27,1,1 4770:O1|@15294 4771:S11|457175616c576f72642829 4772:O4|@25,@4162,@4773,0 4773:O3|3,4,@4774 4774:O5|@15289,@4776,@4719,@4775,@4707 4775:O2|@4769,@4770 4776:O2|@15291,@4777 4777:O2|@4779,@4778 4778:O2|@4790,@4789 4779:O2|@4781,@4780 4780:O3|1,@4783,@4720 4781:O2|1,@4782 4782:O2|2,0 4783:O8|@4785,@4771,0,0,@4784,0,0,1 4784:O2|@4788,@4787 4785:O4|3,@4684,@4686,@4786 4786:O3|9,0,0 4787:O2|@4788,0 4788:O2|1,@4706 4789:O2|@4745,@4742 4790:O2|@4791,@4719 4791:O3|0,@27,0 4792:O4|1,@28,0,0 4793:S12|4669786564496e742e696e74 4794:O4|@4651,0,@4653,@4764 4795:O2|@4797,@4796 4796:O2|@4798,0 4797:S4|756e6974 4798:O4|@4797,0,@4653,@4799 4799:O3|@4801,@4802,@4800 4800:O3|@4797,@4655,@4797 4801:O2|1,@4689 4802:O3|2,0,@4803 4803:O3|3,0,@4804 4804:O3|0,0,1 4805:O3|2,0,1 4806:O1|@15295 4807:O1|@15297 4808:S29|44415441545950455f52455028292e636f6e7374724d61746368283229 4809:O4|@30,@4813,@4814,@4810 4810:O5|@4815,102,0,102,0 4811:O1|@4812 4812:O1|@15296 4813:S4|43617374 4814:S9|746f41646472657373 4815:S30|6d6c736f757263652f4d4c436f6d70696c65722f416464726573732e4d4c 4816:O4|@30,@4813,@4818,@4817 4817:O5|@4815,105,0,105,0 4818:S7|746f53686f7274 4819:O4|@16,@4583,@4829,@4837 4820:S40|434f4445545245455f46554e4354494f4e5328292e66696e64456e747279496e426c6f636b283329 4821:O4|@16,@4583,@4823,@4822 4822:O5|@4824,373,0,373,0 4823:S30|66696e64456e747279496e426c6f636b3a206e6f7420636f6e7374616e74 4824:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f46554e4354494f4e532e736d6c 4825:O1|@15298 4826:S35|434f4445545245455f46554e4354494f4e5328292e736574496e6c696e652832292829 4827:O4|@16,@4583,@4829,@4828 4828:O5|@4824,387,0,387,0 4829:S33|66696e64456e747279496e426c6f636b3a20696e76616c69642061646472657373 4830:O2|16,@4831 4831:O3|6,@4832,0 4832:O4|@16,@4583,@4833,0 4833:S36|496e76616c6964206c6f616420656e636f756e746572656420696e20636f6d70696c6572 4834:O4|@16,@4583,@4836,@4835 4835:O5|@4824,345,0,345,0 4836:S41|66696e64456e747279496e426c6f636b3a207475706c652f6461746174797065206d69736d61746368 4837:O5|@4824,352,0,352,0 4838:O1|@15299 4839:O4|@16,@4583,@4841,@4840 4840:O5|@4715,68,0,68,0 4841:S9|646545787472616374 4842:O1|@15300 4843:S14|4c6973742e746162462833292829 4844:S5|66616c7365 4845:O1|@15301 4846:O1|@15310 4847:S29|44415441545950455f52455028292e636f6e7374724170706c79283229 4848:O4|4,@4058,0,@4849 4849:O5|@4724,136,0,136,0 4850:O1|@15302 4851:O1|@15303 4852:O4|@16,@4583,@4864,@4863 4853:S46|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129 4854:O4|4,@4058,0,@4855 4855:O5|@4815,149,0,149,0 4856:O1|@15304 4857:O1|@15305 4858:O4|@16,@4583,@4861,@4860 4859:S58|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129636f7079546f566563283229 4860:O5|@4824,242,0,242,0 4861:S12|6e6f7420636f6e7374616e74 4862:O1|@15306 4863:O5|@4824,273,0,273,0 4864:S31|6d616b6556616c202d206e6f7420636f6e7374616e74206f72207475706c65 4865:O1|@15307 4866:S6|3c616e6f6e3e 4867:O1|@15308 4868:O3|6,64,0 4869:O1|@15309 4870:O5|5,0,@4872,@4871,0 4871:O4|@4872,0,@4653,@4873 4872:S4|626f6f6c 4873:O3|@4875,@4889,@4874 4874:O3|@4872,@4655,@4760 4875:O2|1,@4876 4876:O3|6,@4878,@4877 4877:O2|@4880,0 4878:O4|@4879,@31,1,1 4879:O1|@15311 4880:O4|@25,@4162,@4881,0 4881:O3|3,4,@4882 4882:O5|@15289,@4884,@4719,@4883,@4707 4883:O2|@4878,@4879 4884:O2|@15291,@4885 4885:O2|@4779,@4886 4886:O2|@4887,@4789 4887:O2|@4888,@4719 4888:O3|0,@31,0 4889:O4|1,@32,0,0 4890:O3|2,1,1 4891:S4|74727565 4892:O1|@15312 4893:O4|11,@4007,0,@4895 4894:S35|5354525543545f56414c5328292e6d616b65456d707479476c6f62616c283129283129 4895:O5|@4896,530,0,530,0 4896:S34|6d6c736f757263652f4d4c436f6d70696c65722f5354525543545f56414c532e4d4c 4897:S4|426f6f6c 4898:O7|@15313,@18,@19,@17,@21,@20,@22 4899:S24|5354525543545f56414c5328292e6d616b65456e76283129 4900:S31|5354525543545f56414c5328292e6d616b654c6f6f6b283129283129283129 4901:O1|@15322 4902:S32|5354525543545f56414c5328292e6d616b65456e746572283129283129283129 4903:O1|@15324 4904:O1|@15326 4905:O1|@15328 4906:O1|@15330 4907:O1|@15332 4908:S35|5354525543545f56414c5328292e6d616b65416c6c4e616d6573283129283129283129 4909:O1|@15334 4910:O1|@15336 4911:S23|434f44455452454528292e6d6b556e617279466e283129 4912:S10|4e6f74426f6f6c65616e 4913:S15|41746f6d696344656372656d656e74 4914:S15|41746f6d6963496e6372656d656e74 4915:S11|41746f6d69635265736574 4916:S16|436c6561724d757461626c65466c6167 4917:S13|466c6f61744669786564496e74 4918:S13|497354616767656456616c7565 4919:S16|4c6f6e67576f7264546f546167676564 4920:S15|4d656d6f727943656c6c466c616773 4921:S16|4d656d6f727943656c6c4c656e677468 4922:S7|5265616c416273 4923:S7|5265616c4e6567 4924:S16|5369676e6564546f4c6f6e67576f7264 4925:S18|556e7369676e6564546f4c6f6e67576f7264 4926:S2|2829 4927:O1|@15335 4928:S3|6e6f74 4929:O3|2,@4870,@4870 4930:O4|@4872,0,@4653,@4873 4931:O2|@4933,@4932 4932:O2|@4934,0 4933:S4|63686172 4934:O4|@4933,0,@4653,@4935 4935:O3|@4937,@4951,@4936 4936:O3|@4933,@4655,@4760 4937:O2|1,@4938 4938:O3|6,@4940,@4939 4939:O2|@4942,0 4940:O4|@4941,@33,1,1 4941:O1|@15337 4942:O4|@25,@4162,@4943,0 4943:O3|3,4,@4944 4944:O5|@15289,@4946,@4719,@4945,@4707 4945:O2|@4940,@4941 4946:O2|@15291,@4947 4947:O2|@4779,@4948 4948:O2|@4949,@4789 4949:O2|@4950,@4719 4950:O3|0,@33,0 4951:O4|1,@34,0,0 4952:O2|@4954,@4953 4953:O2|@4955,0 4954:S6|737472696e67 4955:O4|@4954,0,@4653,@4956 4956:O3|@4958,@4991,@4957 4957:O3|@4954,@4655,@4760 4958:O2|1,@4959 4959:O3|6,@4961,@4960 4960:O2|@4964,0 4961:O4|@4962,@35,3,1 4962:O1|@15338 4963:S14|737472696e67457175616c697479 4964:O4|@25,@4162,@4965,0 4965:O3|3,4,@4966 4966:O5|@15289,@4968,@4719,@4967,@4707 4967:O2|@4961,@4962 4968:O2|@15291,@4969 4969:O2|@4971,@4970 4970:O2|@4989,@4739 4971:O2|@4781,@4972 4972:O3|1,@4973,@4720 4973:O8|@4975,@4963,0,0,@4974,0,0,1 4974:O2|@4702,@4986 4975:O4|5,@4785,@4683,@4976 4976:O4|5,@4978,@4977,@4689 4977:O5|4,1,@4979,@4985,@4984 4978:O4|3,@4980,@4979,@4786 4979:O3|13,@4982,@4983 4980:O3|13,@4982,@4981 4981:O3|@4684,0,0 4982:O1|8 4983:O3|@4686,0,0 4984:O3|@4684,0,4 4985:O3|@4686,0,4 4986:O2|@4987,0 4987:O2|1,@4988 4988:O2|@4705,@4703 4989:O2|@4990,@4719 4990:O3|0,@35,0 4991:O4|1,@36,0,0 4992:O2|@4994,@4993 4993:O2|@4995,0 4994:S4|7265616c 4995:O4|@4994,0,@4653,@4996 4996:O3|@4998,@5003,@4997 4997:O3|@4994,@4655,@4760 4998:O2|1,@4999 4999:O3|6,@5000,0 5000:O4|0,@37,2,1 5001:O1|@15339 5002:S40|545950455f5452454528292e6d616b655479706528332964656661756c745072696e746572283129 5003:O4|1,@38,0,0 5004:O2|@5006,@5005 5005:O2|@5212,0 5006:O7|@5008,@5009,@5010,@5007,@4653,0,0 5007:O3|2,@5101,@5100 5008:S2|3a3a 5009:O2|0,2 5010:O2|1,@5011 5011:O3|6,@5013,@5012 5012:O2|@5017,0 5013:O3|@5015,@5016,@5014 5014:O1|@15342 5015:O1|@15340 5016:O1|@15341 5017:O4|@25,@4162,@5018,0 5018:O3|3,3,@5019 5019:O6|@15283,@4708,@5021,@5068,@5020,@4707 5020:O12|@5070,@5015,@5016,@5014,@5013,@5072,@5071,@5074,@39,@5096,@5098,@5069 5021:O2|@15291,@5022 5022:O2|@5024,@5023 5023:O2|@5028,@5027 5024:O2|@4781,@5025 5025:O3|1,@5026,@4720 5026:O8|@4693,@5008,0,0,@4787,0,0,1 5027:O2|@5051,0 5028:O2|@5030,@5029 5029:O3|1,@5032,@4720 5030:O2|1,@5031 5031:O2|2,1 5032:O8|@5034,@5008,0,0,@5033,0,2,1 5033:O2|@5046,0 5034:O3|15,@5036,@5035 5035:O3|20,@5042,1 5036:O2|@5038,@5037 5037:O2|@5040,0 5038:O4|1,@4706,0,@5039 5039:O4|11,@4684,0,0 5040:O4|1,@4706,1,@5041 5041:O4|11,@4684,1,0 5042:O2|@5044,@5043 5043:O2|@5045,0 5044:O2|8,@4782 5045:O2|8,@5031 5046:O2|1,@5047 5047:O2|@5049,@5048 5048:O2|@5050,0 5049:O3|2,0,@4706 5050:O3|2,1,@4706 5051:O2|@5053,@5052 5052:O3|1,@5055,@4720 5053:O2|1,@5054 5054:O2|2,2 5055:O8|@5057,@5008,0,0,@5056,0,2,1 5056:O2|@5067,0 5057:O3|15,@5059,@5058 5058:O3|20,@5042,0 5059:O2|@5061,@5060 5060:O2|@5065,0 5061:O4|1,@5063,0,@5062 5062:O4|11,@4684,0,1 5063:O2|@5064,0 5064:O1|1 5065:O4|1,@5063,1,@5066 5066:O4|11,@4684,1,1 5067:O2|1,@4704 5068:O11|2,2,2,2,2,2,2,1,2,2,2 5069:O4|@5074,@39,@5096,@5098 5070:O3|@5069,@5013,@5071 5071:O2|@5072,0 5072:O1|@15343 5073:S3|6e696c 5074:O1|@15344 5075:S13|65712d6c697374283229285029 5076:S10|65712d6c697374283229 5077:O2|@15346,@39 5078:S11|7072696e746c6973742829 5079:O5|0,0,0,@4653,@5094 5080:S10|7072696e742d6c697374 5081:O2|3,@5082 5082:S3|2e2e2e 5083:O5|0,0,0,@4653,@5084 5084:O2|@5085,0 5085:O2|3,@5073 5086:O2|@5087,0 5087:O2|3,@5088 5088:S4|2e2e2e29 5089:O2|@5090,0 5090:O2|3,@4134 5091:O3|1,1,0 5092:O2|3,@4137 5093:O2|3,@4133 5094:O2|@5095,0 5095:O2|3,@5008 5096:O1|@15348 5097:S10|626f7865642d6c697374 5098:O1|@15349 5099:S9|73697a652d6c697374 5100:O5|5,@5113,@5114,@5112,@4653 5101:O3|3,@5103,@5102 5102:O3|0,@5110,1 5103:O2|@5105,@5104 5104:O2|@5108,0 5105:O2|@5107,@5106 5106:O3|6,@40,79992 5107:S1|31 5108:O2|@5109,@5100 5109:S1|32 5110:O2|@5107,@5111 5111:O2|@5109,0 5112:O4|@5114,@5116,@4653,@5115 5113:O2|@5106,0 5114:S4|6c697374 5115:O3|@5119,@5211,@5118 5116:O2|@5117,0 5117:O2|@40,79992 5118:O3|@5114,@4655,@4760 5119:O2|1,@5120 5120:O3|6,@5069,@5121 5121:O2|@5122,0 5122:O4|@25,@4162,@5123,0 5123:O3|3,4,@5124 5124:O6|@15283,@4708,@5125,@5068,@5020,@4707 5125:O2|@15291,@5126 5126:O2|@5128,@5127 5127:O2|@5198,@5197 5128:O2|@5130,@5129 5129:O3|1,@5132,@4720 5130:O2|1,@5131 5131:O2|2,6 5132:O8|@5134,@5075,0,0,@5133,0,0,1 5133:O2|@5190,0 5134:O2|12,@5135 5135:O8|@5137,@5076,0,@5189,@5136,0,10,1 5136:O2|@4987,@4986 5137:O3|2,@5139,@5138 5138:O2|@5185,@5184 5139:O4|5,@5141,@4683,@5140 5140:O4|5,@5147,@5146,@4689 5141:O4|3,@5143,@5142,@4786 5142:O2|8,@5145 5143:O2|8,@5144 5144:O2|2,4 5145:O2|2,5 5146:O4|5,@5150,@5149,@4689 5147:O3|21,@5148,9 5148:O3|21,@5143,5 5149:O3|15,@5153,@5152 5150:O3|21,@5151,9 5151:O3|21,@5142,5 5152:O4|5,@5166,@5165,@4689 5153:O2|@5155,@5154 5154:O2|@5158,@5157 5155:O4|1,@4706,6,@5156 5156:O4|11,@5143,0,1 5157:O2|@5161,@5160 5158:O4|1,@4706,7,@5159 5159:O4|11,@5143,1,1 5160:O2|@5163,0 5161:O4|1,@4706,8,@5162 5162:O4|11,@5142,0,1 5163:O4|1,@4706,9,@5164 5164:O4|11,@5142,1,1 5165:O2|14,@5176 5166:O4|7,@5168,@5167,1 5167:O4|11,@5175,0,0 5168:O2|@5170,@5169 5169:O2|@5172,0 5170:O2|@5171,1 5171:O2|8,@5131 5172:O2|@5173,1 5173:O2|8,@5174 5174:O2|2,8 5175:O2|8,@4688 5176:O2|@5178,@5177 5177:O2|@5181,0 5178:O2|@5179,1 5179:O2|8,@5180 5180:O2|2,7 5181:O2|@5182,1 5182:O2|8,@5183 5183:O2|2,9 5184:O2|@5187,0 5185:O2|@5186,1 5186:O3|@4988,4,@4684 5187:O2|@5188,1 5188:O3|@4988,5,@4686 5189:O2|@4685,0 5190:O2|1,@5191 5191:O2|@5192,0 5192:O3|2,0,@5193 5193:O2|@5194,0 5194:O3|0,@4706,@5195 5195:O2|@5171,@5196 5196:O2|@5173,0 5197:O2|@5201,@5200 5198:O2|@5199,@4719 5199:O2|1,@5180 5200:O2|@5207,0 5201:O2|@5203,@5202 5202:O3|1,@5204,@4720 5203:O2|1,@5174 5204:O8|@5206,@5097,0,0,@5205,0,0,1 5205:O2|@4688,0 5206:O3|6,3,0 5207:O2|@5209,@5208 5208:O3|1,@5210,@4720 5209:O2|1,@5183 5210:O8|@4683,@5099,0,0,@5205,0,0,1 5211:O4|1,@41,1,0 5212:O7|@5073,@4614,@5213,@5100,@4653,0,0 5213:O2|1,@5214 5214:O3|6,@5071,@5215 5215:O2|@5216,0 5216:O4|@25,@4162,@5217,0 5217:O3|3,2,@5218 5218:O6|@15283,@4708,@5219,@5068,@5020,@4707 5219:O2|@15291,@5220 5220:O2|@5222,@5221 5221:O2|@5227,0 5222:O2|@5224,@5223 5223:O3|1,@5225,@4720 5224:O2|1,@5144 5225:O8|@5226,@5073,0,0,@4787,0,0,1 5226:O4|19,0,@4684,0 5227:O2|@5228,@4719 5228:O3|0,0,0 5229:O2|@5114,@5230 5230:O2|@5112,@5004 5231:O2|@5233,@5232 5232:O2|@5323,0 5233:O7|@5235,@4614,@5236,@5234,@4653,0,0 5234:O5|5,@5276,@5278,@5275,@4653 5235:S4|4e4f4e45 5236:O2|1,@5237 5237:O3|6,@5239,@5238 5238:O2|@5241,0 5239:O2|@5240,0 5240:O1|@15350 5241:O4|@25,@4162,@5242,0 5242:O3|3,2,@5243 5243:O6|@15283,@4708,@5245,@5068,@5244,@4707 5244:O12|@5251,@5240,@5239,@5254,@5256,@5253,@5252,@5257,@42,@5271,@5273,@5250 5245:O2|@15291,@5246 5246:O2|@5247,@5221 5247:O2|@4781,@5248 5248:O3|1,@5249,@4720 5249:O8|@5226,@5235,0,0,@4787,0,0,1 5250:O4|@5257,@42,@5271,@5273 5251:O3|@5250,@5239,@5252 5252:O3|@5254,@5256,@5253 5253:O1|@15353 5254:O1|@15351 5255:S4|534f4d45 5256:O1|@15352 5257:O1|@15354 5258:S15|65712d6f7074696f6e283229285029 5259:S12|65712d6f7074696f6e283229 5260:O1|@15356 5261:S13|7072696e746f7074696f6e2829 5262:O5|0,0,0,@4653,@5269 5263:S12|7072696e742d6f7074696f6e 5264:O5|0,0,0,@4653,@5265 5265:O2|@5266,0 5266:O2|3,@5235 5267:O2|@5268,@5089 5268:O3|1,0,0 5269:O2|@5270,0 5270:O2|3,@5255 5271:O1|@15358 5272:S12|626f7865642d6f7074696f6e 5273:O1|@15359 5274:S11|73697a652d6f7074696f6e 5275:O4|@5278,@5280,@4653,@5279 5276:O2|@5277,0 5277:O3|6,@43,79992 5278:S6|6f7074696f6e 5279:O3|@5283,@5322,@5282 5280:O2|@5281,0 5281:O2|@43,79992 5282:O3|@5278,@4655,@4760 5283:O2|1,@5284 5284:O3|6,@5250,@5285 5285:O2|@5286,0 5286:O4|@25,@4162,@5287,0 5287:O3|3,4,@5288 5288:O6|@15283,@4708,@5289,@5068,@5244,@4707 5289:O2|@15291,@5290 5290:O2|@5292,@5291 5291:O2|@5198,@5314 5292:O2|@5130,@5293 5293:O3|1,@5294,@4720 5294:O8|@5296,@5258,0,0,@5295,0,0,1 5295:O2|@5307,0 5296:O2|12,@5297 5297:O8|@5298,@5259,0,@5189,@4678,0,0,1 5298:O4|5,@4785,@4683,@5299 5299:O4|5,@4693,@5300,@4689 5300:O4|5,@4692,@5301,@4689 5301:O4|7,@5302,@5167,1 5302:O2|@5304,@5303 5303:O2|@5305,0 5304:O2|@5062,1 5305:O2|@5306,1 5306:O4|11,@4686,0,1 5307:O2|1,@5308 5308:O2|@5309,0 5309:O3|2,0,@5310 5310:O2|@5311,0 5311:O3|0,@5063,@5312 5312:O2|@5062,@5313 5313:O2|@5306,0 5314:O2|@5316,@5315 5315:O2|@5319,0 5316:O2|@5203,@5317 5317:O3|1,@5318,@4720 5318:O8|@5206,@5272,0,0,@5205,0,0,1 5319:O2|@5209,@5320 5320:O3|1,@5321,@4720 5321:O8|@4683,@5274,0,0,@5205,0,0,1 5322:O4|1,@44,1,0 5323:O7|@5255,@5009,@5325,@5324,@4653,0,0 5324:O3|2,@5277,@5234 5325:O2|1,@5326 5326:O3|6,@5252,@5327 5327:O2|@5328,0 5328:O4|@25,@4162,@5329,0 5329:O3|3,3,@5330 5330:O6|@15283,@4708,@5331,@5068,@5244,@4707 5331:O2|@15291,@5332 5332:O2|@5334,@5333 5333:O2|@5338,@5337 5334:O2|@5053,@5335 5335:O3|1,@5336,@4720 5336:O8|@4693,@5255,0,0,@4787,0,0,1 5337:O2|@5345,0 5338:O2|@5340,@5339 5339:O3|1,@5342,@4720 5340:O2|1,@5341 5341:O2|2,3 5342:O8|@5343,@5255,0,0,@4787,0,0,1 5343:O3|20,@5344,1 5344:O2|@4684,0 5345:O2|@5224,@5346 5346:O3|1,@5347,@4720 5347:O8|@5062,@5255,0,0,@4787,0,0,1 5348:O2|@5278,@5349 5349:O2|@5275,@5231 5350:S3|726566 5351:O4|@5350,@5353,@4653,@5352 5352:O3|@5356,@5394,@5355 5353:O2|@5354,0 5354:O2|@45,79992 5355:O3|@5350,@4655,@4760 5356:O2|1,@5357 5357:O3|6,@5359,@5358 5358:O2|@5371,0 5359:O4|@5361,@46,@5368,@5360 5360:O1|@15365 5361:O1|@15360 5362:O1|@15361 5363:S11|65712d68656c7065722829 5364:O1|@15362 5365:O1|@15363 5366:S37|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129 5367:S40|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129283129 5368:O1|@15364 5369:S14|626f7865642d68656c7065722829 5370:S13|73697a652d68656c7065722829 5371:O4|@25,@4162,@5372,0 5372:O3|3,4,@5373 5373:O5|@15289,@5375,@5393,@5374,@4707 5374:O4|@5359,@5361,@5368,@5360 5375:O2|@15291,@5376 5376:O2|@5378,@5377 5377:O2|@5383,@5382 5378:O2|@4781,@5379 5379:O3|1,@5380,@4720 5380:O8|@5381,@5363,0,0,@5205,0,0,1 5381:O2|12,@4783 5382:O2|@5386,@5385 5383:O2|@5384,@4719 5384:O3|0,@46,0 5385:O2|@5390,0 5386:O2|@5030,@5387 5387:O3|1,@5388,@4720 5388:O8|@5389,@5369,0,0,@5205,0,0,1 5389:O3|6,2,0 5390:O2|@5053,@5391 5391:O3|1,@5392,@4720 5392:O8|@4683,@5370,0,0,@5205,0,0,1 5393:O3|2,2,2 5394:O4|1,@47,1,0 5395:O1|4 5396:O1|@15366 5397:O1|@15373 5398:S40|44415441545950455f52455028292e637265617465556e617279436f6e7374727563746f72283329 5399:O1|@15367 5400:O1|@15368 5401:O1|@15369 5402:O1|@15372 5403:S32|44415441545950455f52455028292e636f6e7374724465737472756374283229 5404:O1|@15370 5405:O1|@15371 5406:O1|@4689 5407:O2|7,0 5408:O1|@15374 5409:O4|3,@4684,@4686,@5410 5410:O2|3,0 5411:S16|457175616c4c61726765576f72642829 5412:O1|@15375 5413:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f547970655072696e746572283129 5414:O2|@4683,@5415 5415:O2|@5416,0 5416:O3|6,1,0 5417:O4|@15376,@78,@7225,@5418 5418:O1|@15972 5419:S21|434f44455452454528292e67656e436f6465283329 5420:O2|@5422,@5421 5421:O2|@5426,@5425 5422:O4|@49,@4162,@5423,0 5423:O1|@15378 5424:S18|44656275672e64656661756c74732d283129 5425:O2|@5429,@5428 5426:O4|@50,@4162,@5427,0 5427:O1|@15379 5428:O2|@5431,@5430 5429:O4|@51,@4162,@4062,0 5430:O2|@5434,@5433 5431:O4|@52,@4162,@5432,0 5432:O1|@15380 5433:O2|@5436,@5435 5434:O4|@53,@4162,1,0 5435:O2|@5438,@5437 5436:O4|@54,@4162,80,0 5437:O2|@5440,@5439 5438:O4|@55,@4162,0,0 5439:O2|@5442,@5441 5440:O4|@56,@4162,0,0 5441:O2|@5444,@5443 5442:O4|@48,@4162,0,0 5443:O2|@5446,@5445 5444:O4|@57,@4162,0,0 5445:O2|@5448,@5447 5446:O4|@58,@4162,1,0 5447:O2|@5450,@5449 5448:O4|@59,@4162,0,0 5449:O2|@5452,@5451 5450:O4|@60,@4162,0,0 5451:O2|@5454,@5453 5452:O4|@61,@4162,6,0 5453:O2|@5457,@5456 5454:O4|@62,@4162,@5455,0 5455:O1|@15381 5456:O2|@5459,@5458 5457:O4|@63,@4162,77,0 5458:O2|@5461,@5460 5459:O4|@64,@4162,0,0 5460:O2|@5463,@5462 5461:O4|@65,@4162,0,0 5462:O2|@5465,@5464 5463:O4|@66,@4162,0,0 5464:O2|@5467,@5466 5465:O4|@67,@4162,0,0 5466:O2|@5468,0 5467:O4|@68,@4162,1,0 5468:O4|@69,@4162,1,0 5469:O4|@16,@4583,@5471,@5470 5470:O5|@5472,123,0,123,0 5471:S11|746167206d697373696e67 5472:S28|6d6c736f757263652f4d4c436f6d70696c65722f44656275672e4d4c 5473:O1|@15382 5474:S19|5072657474792e676574546167283229283129 5475:O4|@15383,@5657,@5476,@25 5476:O3|@15426,@5475,@5657 5477:O1|@15422 5478:S22|42617365436f6465547265652e707265747479283129 5479:O1|@15384 5480:O2|@5268,@5482 5481:S23|42617365436f6465547265652e704c6973742833292829 5482:O2|@5092,0 5483:O1|@15385 5484:S15|4c6973742e40283229617070283129 5485:O3|1,1,2 5486:O1|@15386 5487:O1|@15387 5488:O2|3,@5489 5489:S18|416c6c6f63617465576f72644d656d6f7279 5490:S3|416464 5491:S3|446976 5492:S3|4d6f64 5493:S4|4d756c74 5494:S4|51756f74 5495:S3|52656d 5496:S3|537562 5497:S12|47726561746572457175616c 5498:S7|47726561746572 5499:S9|4c657373457175616c 5500:S4|4c657373 5501:S5|457175616c 5502:O1|@15388 5503:O1|@15389 5504:O1|@15390 5505:O1|@15391 5506:O2|3,@5507 5507:S10|424547494e4c4f4f5028 5508:O1|@15392 5509:S4|576f7264 5510:S46|4261636b656e64496e7465726d656469617465436f64652e4275696c74496e732e62696e61727952657072283129 5511:S4|54657374 5512:S6|5369676e6564 5513:S8|556e7369676e6564 5514:S18|416c6c6f63617465427974654d656d6f7279 5515:S5|4669786564 5516:S9|4c61726765576f7264 5517:S3|586f72 5518:S2|4f72 5519:S3|416e64 5520:S15|526967687441726974686d65746963 5521:S12|52696768744c6f676963616c 5522:S4|4c656674 5523:S4|5265616c 5524:O1|@15393 5525:O1|@15394 5526:S11|436f6d7061726542797465 5527:S9|457175616c42797465 5528:S8|4d6f766542797465 5529:S8|4d6f7665576f7264 5530:O2|3,@4138 5531:O2|@5268,@5532 5532:O2|@5533,0 5533:O2|3,@4186 5534:O3|1,0,3 5535:O2|3,@4184 5536:O2|@5091,@5089 5537:O2|3,@5538 5538:S2|6966 5539:O2|3,@5540 5540:S4|7468656e 5541:O2|3,@5542 5542:S4|656c7365 5543:O3|@15395,@5544,@30 5544:O1|@15396 5545:S20|4c4954203c6c6f6e6720776f726420646174613e 5546:S23|416464726573732e737472696e674f66576f7264283129 5547:S3|4c4954 5548:S6|434f44452022 5549:S9|425954452064617461 5550:S5|46554e2022 5551:S19|506f6c7947657446756e6374696f6e4e616d65 5552:O2|3,@5553 5553:S9|526563757273697665 5554:S7|436c6f73757265 5555:S5|4c6f63616c 5556:S3|417267 5557:O1|@15397 5558:O1|@15398 5559:O2|3,@5560 5560:S11|4765745468726561644964 5561:S10|5749544820657869643d 5562:O2|3,@5563 5563:S7|48414e444c4528 5564:S5|282a562a29 5565:O3|1,0,2 5566:S7|696e6c696e652c 5567:O1|@15399 5568:O1|@15410 5569:S34|42617365436f6465547265652e7072657474792831297072696e7441726773283229 5570:O1|@15400 5571:O1|@15401 5572:O2|3,@4188 5573:S27|42617365436f6465547265652e7072657474795573616765283129 5574:S8|5573654669656c64 5575:O1|@15402 5576:O1|@15403 5577:O1|@15404 5578:O5|0,0,0,0,@5580 5579:O2|@5530,0 5580:O2|@5530,@5581 5581:O2|@5268,@5582 5582:O2|@5583,0 5583:O2|3,@4217 5584:O1|@15405 5585:O1|@15406 5586:O2|3,@5587 5587:S2|2d3e 5588:O1|@15407 5589:O2|3,@5590 5590:S6|4578706f7274 5591:O1|@15408 5592:O2|@5091,@5593 5593:O2|@5594,0 5594:O2|3,@5595 5595:S5|3a7265616c 5596:O2|@5268,@5597 5597:O2|@5092,@5598 5598:O2|@5091,0 5599:O1|@15409 5600:S8|206c6f63616c732c 5601:O1|@15411 5602:S8|636c6f737572653d 5603:O1|@15412 5604:O1|@15413 5605:S14|726563757273697665207573653d 5606:O1|@15414 5607:O1|@15415 5608:O2|@5091,@5609 5609:O2|@5610,0 5610:O2|3,@5611 5611:S2|2a29 5612:O2|3,@5613 5613:S2|282a 5614:O2|3,@5615 5615:S3|666e28 5616:S6|4d4c576f7264 5617:S15|4d4c576f7264496d6d757461626c65 5618:S6|433136426974 5619:S6|433332426974 5620:S6|433634426974 5621:S5|4338426974 5622:S7|43446f75626c65 5623:S6|43466c6f6174 5624:S6|4d4c42797465 5625:S15|4d4c42797465496d6d757461626c65 5626:S14|4d4c576f7264556e746167676564 5627:S4|4c6f6164 5628:O1|@15416 5629:O1|@15417 5630:O1|@15418 5631:O2|@5268,@5632 5632:O2|@5633,0 5633:O2|3,@4152 5634:O2|@5091,@5635 5635:O2|@5636,0 5636:O2|3,@5637 5637:S3|656e64 5638:O2|3,@5639 5639:S2|696e 5640:O2|3,@5641 5641:S3|6c6574 5642:O2|3,@5643 5643:S6|524149534528 5644:O2|@5645,0 5645:S2|2c20 5646:S13|534554434f4e5441494e455228 5647:S5|53746f7265 5648:O2|3,@5649 5649:S2|3c3d 5650:O2|@4137,0 5651:S8|5441475445535428 5652:S8|4441544154595045 5653:S5|5455504c45 5654:O1|@15419 5655:O1|@15420 5656:O1|@15421 5657:O2|@15423,@5475 5658:O2|3,@4062 5659:S35|42617365436f6465547265652e70726574747953696d706c6542696e64696e67283329 5660:S9|76616c204c6f63616c 5661:O1|@15424 5662:O1|@15425 5663:O2|3,@4154 5664:O2|3,@5680 5665:S29|42617365436f6465547265652e70726574747942696e64696e67283129 5666:O1|@15427 5667:O1|@15428 5668:S12|3d20436f6e7461696e657220 5669:O2|3,@5670 5670:S4|77697468 5671:O1|@15429 5672:O2|@5268,@5677 5673:O1|@15430 5674:O1|@15431 5675:O1|@15432 5676:O1|@15433 5677:O2|@5678,0 5678:O2|3,@5679 5679:S5|20616e6420 5680:S8|76616c2072656320 5681:O1|@15434 5682:O1|@15435 5683:S41|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d69736572283429 5684:O2|3,@7187 5685:S55|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f6365737354726565283429 5686:O1|@15436 5687:O11|@15440,@5726,@5736,@5767,@5769,@5771,@5787,@5789,@5811,@5878,@5700 5688:S35|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329 5689:O4|@71,@5696,0,@5695 5690:S48|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296c6f6f6b757041646472283129 5691:O4|@16,@4583,@5693,@5692 5692:O5|@5694,1602,0,1602,0 5693:S31|746f70206c6576656c207265616368656420696e2073696d706c6966696572 5694:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f53494d504c49464945522e736d6c 5695:O5|@5697,52,0,52,0 5696:S6|4f7074696f6e 5697:S18|2e2f62617369732f4f7074696f6e2e736d6c 5698:S47|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329656e74657241646472283129 5699:S44|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296d6b41646472283129 5700:O12|@15556,@5687,@5919,@5726,@5736,@5767,@5769,@5771,@5787,@5789,@5811,@5878 5701:O1|@15452 5702:S36|434f4445545245455f53494d504c494649455228292e73696d705370656369616c283429 5703:S39|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283129283129 5704:O1|@15442 5705:O1|@15443 5706:S27|42617365436f6465547265652e6d6170436f646574726565283229 5707:O1|@15451 5708:S34|42617365436f6465547265652e6d6170436f6465747265652832296d617074283129 5709:O1|@15444 5710:O1|@15445 5711:O1|@15446 5712:S47|42617365436f6465547265652e6d6170436f6465747265652832296d6170742831296d617062696e64696e67283129 5713:O4|@16,@4583,@5715,@5714 5714:O5|@5716,617,0,617,0 5715:S8|64654c616d626461 5716:S45|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42617365436f6465547265652e736d6c 5717:O1|@15447 5718:O1|@15448 5719:O1|9 5720:O1|@15449 5721:O4|@16,@4583,@4841,@5722 5722:O5|@5716,616,0,616,0 5723:O1|@15450 5724:O1|@15453 5725:S44|434f4445545245455f53494d504c494649455228292e73696d705370656369616c28342973706c6974283329 5726:O2|@15454,@5687 5727:S34|434f4445545245455f53494d504c494649455228292e73696d705475706c65283529 5728:O1|@15456 5729:S50|434f4445545245455f53494d504c494649455228292e73696d705475706c6528352970726f636573734669656c6473283329 5730:O1|@15457 5731:O1|@15458 5732:O4|@16,@4583,@5735,@5734 5733:S45|434f4445545245455f53494d504c494649455228292e73696d705475706c652835296765744669656c64283129 5734:O5|@5694,1441,0,1441,0 5735:S24|6765744669656c64202d20696e76616c696420696e646578 5736:O2|@15459,@5687 5737:O1|@15478 5738:S39|434f4445545245455f53494d504c494649455228292e73696d7049665468656e456c7365283629 5739:O1|@15460 5740:O1|@15462 5741:S43|434f4445545245455f53494d504c494649455228292e7370656369616c546f47656e6572616c2833292829 5742:O1|@15461 5743:O1|@15463 5744:S30|434f4445545245455f53494d504c494649455228292e6d6b456e76283229 5745:O4|@72,@5747,0,@5746 5746:O5|@4724,51,0,51,0 5747:S5|456d707479 5748:O4|11,@4007,0,@5750 5749:S12|4c6973742e74616b65283229 5750:O5|@4724,71,0,71,0 5751:O1|@15464 5752:O1|@15465 5753:S33|434f4445545245455f46554e4354494f4e5328292e636f646550726f7073283129 5754:O1|@15466 5755:O1|@15467 5756:O1|@15468 5757:O1|@15469 5758:O1|@15470 5759:O1|@15471 5760:O1|@15472 5761:O1|@15473 5762:O1|@15474 5763:O1|@15475 5764:O1|@15476 5765:O1|@15477 5766:O1|@15479 5767:O3|@15480,@5700,@5687 5768:S43|434f4445545245455f53494d504c494649455228292e73696d704172626974726172794172697468283829 5769:O3|@15484,@5700,@5687 5770:S45|434f4445545245455f53494d504c494649455228292e73696d70417262697472617279436f6d70617265283829 5771:O2|@15488,@5687 5772:O2|16,@5785 5773:S35|434f4445545245455f53494d504c494649455228292e73696d7042696e617279283629 5774:O4|7,@4085,0,@5775 5775:O5|@4086,252,0,252,0 5776:O4|@16,@4583,@5778,@5777 5777:O5|@5694,1022,0,1022,0 5778:S19|576f726441726974683a20417269746852656d 5779:O4|@16,@4583,@5781,@5780 5780:O5|@5694,1021,0,1021,0 5781:S20|576f726441726974683a20417269746851756f74 5782:O2|16,@5783 5783:O3|6,@5784,0 5784:O4|5,@4089,0,0 5785:O3|6,@5786,0 5786:O4|7,@4091,0,0 5787:O2|@15489,@5687 5788:S34|434f4445545245455f53494d504c494649455228292e73696d70556e617279283529 5789:O3|@15490,@5687,@5700 5790:O1|@15500 5791:S41|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629 5792:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283129 5793:O1|@15493 5794:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283329 5795:O1|@15494 5796:S24|42617365436f6465547265652e666f6c6474726565283329 5797:S32|42617365436f6465547265652e666f6c64747265652833296674726565283229 5798:O4|@16,@4583,@5800,@5799 5799:O5|@5694,783,0,783,0 5800:S35|73696d7046756e6374696f6e43616c6c3a20617267756d656e74206d69736d61746368 5801:O1|@15495 5802:S55|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362970726f6365737341726773283329 5803:O4|4,@4058,0,@5804 5804:O5|@4601,78,0,78,0 5805:O4|@16,@4583,@5808,@5807 5806:S56|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c2836296c6f63616c4f6c6441646472283129 5807:O5|@5694,818,0,818,0 5808:S27|6c6f63616c4f6c64416464723a204c6f6164526563757273697665 5809:S59|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629736574546162466f72496e6c696e65283129 5810:O1|@15498 5811:O2|@15502,@5700 5812:O1|@15515 5813:S35|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529 5814:O1|@15504 5815:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283129 5816:O1|@15505 5817:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229 5818:O2|@5819,@4719 5819:O2|1,@4705 5820:S66|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329 5821:O1|@15507 5822:S36|434f4445545245455f46554e4354494f4e5328292e616464546f436c6f73757265283229 5823:S82|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329636f6e76657274456e76283129283129 5824:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529736574546162283129 5825:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296d6b41646472283129 5826:O1|@15512 5827:S42|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632836292d45 5828:O1|@15513 5829:S44|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632d283429283129 5830:O1|@15514 5831:O1|@15516 5832:S40|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629 5833:S52|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229 5834:O1|@15518 5835:O1|@15540 5836:S62|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283229 5837:O1|@15519 5838:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c746572556e75736564283229 5839:O1|@15521 5840:S79|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c7465724c6f6f7041726773283129 5841:O4|@16,@4583,@5844,@5843 5842:S74|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322973706c697441726773283329 5843:O5|@5845,337,0,337,0 5844:S9|73706c697441726773 5845:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f52454d4f56455f524544554e44414e542e736d6c 5846:O1|@15522 5847:O1|@15523 5848:O4|@16,@4583,@5850,@5849 5849:O5|@5845,126,0,126,0 5850:S25|636c65616e457874726163743a20656d707479207573616765 5851:O1|@15524 5852:O1|@15525 5853:O1|@15536 5854:S54|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329 5855:O1|@15527 5856:S63|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329616464526566283129 5857:O1|@15528 5858:O1|@15530 5859:O1|@15532 5860:O1|@15533 5861:O4|@16,@4583,@5863,@5862 5862:O5|@5845,101,0,101,0 5863:S12|6e6f74205573654669656c64 5864:O4|@16,@4583,@5863,@5865 5865:O5|@5845,98,0,98,0 5866:O1|@4706 5867:O1|@15534 5868:O1|@15535 5869:S15|4c697374506169722e7a6970283229 5870:O1|@15537 5871:O1|@15539 5872:S76|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f6365737344656373283129 5873:O1|@15538 5874:S93|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734465637328312970726f636573734d757475616c73283329 5875:O1|@15541 5876:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734669656c64283229 5877:S65|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283129283129 5878:O3|@15542,@5687,@5811 5879:O1|@15543 5880:S35|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329 5881:O1|@15555 5882:S46|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329636f707944656373283229 5883:O4|@16,@4583,@5885,@5884 5884:O5|@5694,590,0,590,0 5885:S32|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e6572 5886:O4|@16,@4583,@5888,@5887 5887:O5|@4824,310,0,310,0 5888:S27|6d6b4c6f616478783a20617267756d656e74206e65676174697665 5889:O4|@16,@4583,@5891,@5890 5890:O5|@5694,599,0,599,0 5891:S37|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e65722073697a65 5892:O1|@15544 5893:O1|@15545 5894:O1|@15546 5895:O2|0,0 5896:S19|4c6973742e706172746974696f6e2833292829 5897:O1|@15547 5898:O1|@15548 5899:O1|@15549 5900:S17|4c697374506169722e6d61702833292829 5901:O2|@5903,@5902 5902:O1|@15551 5903:O1|@15550 5904:S28|434f4445545245455f46554e4354494f4e5328292e61726373283129 5905:S35|434f4445545245455f46554e4354494f4e5328292e6e6f646541646472657373283129 5906:O1|@15552 5907:O1|@15553 5908:S48|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e7473283229 5909:O4|103,@4629,@5914,@5913 5910:S66|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e74283329 5911:O1|@15554 5912:S80|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e7428332970726f636573734c696e6b283229 5913:O5|@5915,91,0,91,0 5914:S11|737461636b20656d707479 5915:S41|6d6c736f757263652f4d4c436f6d70696c65722f5374726f6e676c79436f6e6e65637465642e736d6c 5916:O4|@16,@4583,@5918,@5917 5917:O5|@4824,449,0,449,0 5918:S24|706172746974696f6e4d757461626c6542696e64696e6773 5919:O2|@15606,@5687 5920:O1|@15604 5921:S36|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529 5922:O1|@15557 5923:O1|@15558 5924:O1|@15559 5925:O1|@15560 5926:O1|@15561 5927:O1|@15562 5928:O1|@15564 5929:S49|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529666f6c644c6f6f702833292829 5930:O1|@15565 5931:O1|@15568 5932:O1|@15569 5933:O1|@15570 5934:S59|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529636865636b4c6f6f70417267732832296d617033283329 5935:O1|@15571 5936:O4|@73,@5939,0,@5938 5937:S21|4c697374506169722e666f6c647245712834292829 5938:O5|@5940,89,0,89,0 5939:S14|556e657175616c4c656e67746873 5940:S20|2e2f62617369732f4c697374506169722e736d6c 5941:O1|@15572 5942:O1|@15573 5943:S50|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296368616e67654c6f6f7073283129 5944:O1|@15575 5945:O1|@15576 5946:O1|@15577 5947:O1|@15578 5948:O2|6,0 5949:O1|@15579 5950:S58|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296f7065726174696f6e2d6d616b654d6f766573283129 5951:O1|@15580 5952:O1|@15581 5953:O1|@15582 5954:O1|@15583 5955:O1|@15584 5956:O1|@15585 5957:O1|@15586 5958:O1|@15589 5959:O1|@15590 5960:O1|@15591 5961:O1|@15592 5962:O1|@15594 5963:O1|@15595 5964:O1|@15600 5965:S45|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429 5966:O1|@15596 5967:S40|434f4445545245455f46554e4354494f4e5328292e6d6b536574436f6e7461696e65722833292829 5968:O1|@15597 5969:O1|@15598 5970:O4|11,@4007,0,@5972 5971:S54|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e657228342973656c656374283229 5972:O5|@5973,199,0,199,0 5973:S21|2e2f62617369732f426f6f6c41727261792e736d6c 5974:O1|@15599 5975:O4|@72,@5747,0,@5977 5976:S59|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429636865636b4669656c6473283229 5977:O5|@4724,47,0,47,0 5978:O4|4,@4058,0,@5979 5979:O5|@5973,104,0,104,0 5980:O4|4,@4058,0,@5981 5981:O5|@5973,47,0,47,0 5982:O4|11,@4007,0,@5984 5983:S62|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e65722834296669656c6473546f46696c746572283129 5984:O5|@5973,402,0,402,0 5985:O1|@5986 5986:O3|6,1,0 5987:O1|@5988 5988:O3|6,0,0 5989:O1|@15602 5990:O1|@15603 5991:O1|@15605 5992:O1|@15607 5993:S36|434f4445545245455f53494d504c494649455228292e73696d7041646472657373283429 5994:O1|@15608 5995:O1|@15609 5996:O1|@15610 5997:O2|3,@5998 5998:S20|4f7574707574206f662073696d706c6966696572 5999:O1|@15611 6000:O4|@16,@4583,@6002,@6001 6001:O5|@6003,1476,0,1476,0 6002:S30|746f70206c6576656c207265616368656420696e206f7074696d69736572 6003:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4f5054494d495345522e736d6c 6004:O1|@15612 6005:O1|@15613 6006:O2|3,@6007 6007:S17|4f7574707574206f6620636c65616e6572 6008:S66|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f63657373547265652834296d616b6541646472283129 6009:O1|@15616 6010:S35|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283129283129 6011:S32|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283329 6012:O1|@15618 6013:O1|@15627 6014:S33|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329 6015:S42|434f4445545245455f4f5054494d4953455228292e6f70744669656c64732833296669656c642d283129 6016:O1|@15620 6017:S49|434f4445545245455f4f5054494d4953455228292e6f70744669656c647328332970757368436f6e7461696e6572283229 6018:O1|@15622 6019:O1|@15624 6020:S48|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329736574436f6e7461696e6572283129 6021:S38|434f4445545245455f4f5054494d4953455228292e6669656c6473546f46696c746572283129 6022:O1|@15626 6023:S53|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329636f6e7461696e65722d6d6b4669656c64283329 6024:O1|@15630 6025:O1|@15632 6026:O1|@15633 6027:O1|@15690 6028:S33|434f4445545245455f4f5054494d4953455228292e6f70744c616d626461283529 6029:O1|@15634 6030:S47|434f4445545245455f4f5054494d4953455228292e6f70744c616d6264612835296f7074436f6e746578742d283129 6031:O1|@15639 6032:O1|@15640 6033:S40|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329 6034:S51|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329636865636b557365283429 6035:O1|@15641 6036:O1|@15654 6037:S45|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e283729 6038:O1|@15642 6039:S55|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e28372967657441726773283829 6040:O1|@15643 6041:O2|8,@4705 6042:S53|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e672834292d45 6043:O1|@15644 6044:S51|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429 6045:O1|@15647 6046:S62|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e747279283129 6047:S71|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e7472792831296d6170417267283229 6048:O1|@15649 6049:S39|434f4445545245455f4f5054494d4953455228292e6f6e6c7946756e6374696f6e283129283129 6050:O4|@16,@4583,@4841,@6051 6051:O5|@6003,248,0,248,0 6052:O1|@15650 6053:O1|@15651 6054:O1|@15652 6055:O1|@15653 6056:O1|@15655 6057:O1|@15657 6058:S52|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f70283429 6059:O1|@15656 6060:S62|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f702834296d617041726773283529 6061:O1|@15658 6062:O1|@15662 6063:S36|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e283229 6064:O1|@15659 6065:O1|@15660 6066:O1|@15661 6067:S30|434f4445545245455f4f5054494d4953455228292e6d6170417267283129 6068:S33|434f4445545245455f4f5054494d4953455228292e66696e645475706c65283229 6069:O1|@15663 6070:S51|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e2832296d657267655061747465726e283229 6071:O1|@15664 6072:O4|@73,@5939,0,@6074 6073:S19|4c697374506169722e6d617045712833292829 6074:O5|@5940,68,0,68,0 6075:O1|@15665 6076:O1|@15666 6077:O4|@72,@5747,0,@6078 6078:O5|@6003,522,0,522,0 6079:O1|@15667 6080:O1|@15668 6081:O1|@15669 6082:S40|434f4445545245455f4f5054494d4953455228292e626f647952657475726e735475706c65283129 6083:O2|0,@5064 6084:O1|@15670 6085:O1|@15680 6086:S39|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329 6087:O4|@16,@4583,@6089,@6088 6088:O5|@6003,936,0,936,0 6089:S15|6465637572727946756e6374696f6e 6090:S47|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329646f4d6170283129 6091:O1|@15673 6092:O1|@15674 6093:S50|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e2833296d61704172672833292829 6094:O1|@15675 6095:O1|@15676 6096:O1|@15677 6097:O1|@15678 6098:O1|@15679 6099:O1|@15681 6100:O1|@15689 6101:S37|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429 6102:S45|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429646f4d6170283129 6103:O1|@15684 6104:O1|@15685 6105:O1|@15686 6106:O1|@15687 6107:S48|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c742834296d61704172672833292829 6108:O1|@15688 6109:O2|@6110,0 6110:O2|@5044,1 6111:S47|434f4445545245455f4f5054494d4953455228292e6275696c6446756c6c5475706c65283229657874417267283229 6112:O1|@15719 6113:S45|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429 6114:O1|@15691 6115:O1|@15711 6116:S58|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834296d61705061747465726e283429 6117:O1|@15692 6118:O1|@15708 6119:S73|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e74283529 6120:O1|@15693 6121:O1|@15703 6122:S85|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b283229 6123:S2|2d50 6124:O1|@15694 6125:O1|@15695 6126:O1|@15696 6127:O1|@15697 6128:O4|@72,@5747,0,@6129 6129:O5|@4724,48,0,48,0 6130:O1|@15698 6131:O1|@15699 6132:S95|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d617041726773283229 6133:O4|@16,@4583,@6138,@6137 6134:S104|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d6170417267732832296d6170417267283229 6135:O1|@15700 6136:O1|@15701 6137:O5|@6003,731,0,731,0 6138:S17|6d6170417267733a206d69736d61746368 6139:O1|@15702 6140:O1|@15704 6141:O1|@15705 6142:S86|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c79283329 6143:O1|@15706 6144:S97|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c792833296d616b6541726773283229 6145:O1|@15707 6146:S2|2d45 6147:O1|@15709 6148:O1|@15710 6149:S53|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429646f4d6170283129 6150:O1|@15714 6151:O1|@15715 6152:O1|@15717 6153:O1|@15716 6154:O1|@15718 6155:O1|@15720 6156:O1|@15721 6157:O1|@15723 6158:O1|@15726 6159:O1|@15727 6160:O1|@15728 6161:S45|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e67283129 6162:O1|@15732 6163:O1|@15734 6164:S57|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e672831296d6170526563446563283229 6165:O4|@16,@4583,@6167,@6166 6166:O5|@6003,963,0,963,0 6167:S22|6d617062696e64696e673a206e6f74206c616d626461 6168:O1|@15733 6169:O1|@15735 6170:S53|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e283429 6171:O1|@15954 6172:S70|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229 6173:O1|@15738 6174:O1|@15739 6175:O1|@15740 6176:O2|@15948,@24 6177:S53|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429 6178:O4|@16,@4583,@6181,@6180 6179:S66|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296c6f6f6b757041646472283129 6180:O5|@6182,261,0,261,0 6181:S33|6c6f6f6b7570436f6e7374616e743a20746f702d6c6576656c2072656163686564 6182:S68|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e532e736d6c 6183:S64|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429636f6e746578742d283129 6184:O2|@15744,@6186 6185:S50|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283129283129 6186:O2|@15941,@6184 6187:O1|@15758 6188:S47|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283429 6189:O1|@15746 6190:O1|@15748 6191:O1|@15749 6192:O1|@15750 6193:S15|4c6973742e666f6c64722833292829 6194:O1|@15751 6195:S65|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e7328342970726f6365737342696e64696e6773283129 6196:O1|@15754 6197:O1|@15755 6198:O4|@73,@5939,0,@6199 6199:O5|@5940,75,0,75,0 6200:O1|@15802 6201:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465546f436f6e7374616e74283329 6202:O1|@15759 6203:O4|@16,@4583,@6206,@6205 6204:S49|434f4445545245455f4c414d4244415f4c49465428292e636f646547656e6572617465283329746f706c6576656c283129 6205:O5|@6207,476,0,476,0 6206:S17|546f70206c6576656c2072656163686564 6207:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4c414d4244415f4c4946542e736d6c 6208:O1|@15760 6209:S35|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429 6210:O1|@15769 6211:S47|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f6465283129 6212:O1|@15762 6213:O4|11,@4007,0,@6219 6214:S61|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f646528312970726f6365737344656373283129 6215:O1|@15763 6216:S66|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f526563757273697665283129 6217:S64|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f436c6f73757265283129 6218:O1|@15766 6219:O5|@5973,396,0,396,0 6220:O1|@15770 6221:S37|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f6479283529 6222:O1|@15801 6223:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f6465283129 6224:O1|@15772 6225:O1|@15790 6226:S65|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f646528312970726f6365737344656373283129 6227:O1|@15773 6228:O1|@15774 6229:O1|@15789 6230:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d62646173283129 6231:O1|@15775 6232:S20|4c6973742e6d61705061727469616c2832292829 6233:O1|@15776 6234:O1|@15777 6235:O1|@15778 6236:O1|@15779 6237:O1|@15786 6238:S69|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329 6239:O1|@15780 6240:O1|@15782 6241:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283129 6242:O1|@15784 6243:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283229 6244:O1|@15783 6245:O4|@16,@4583,@6247,@6246 6246:O5|@6207,400,0,400,0 6247:S8|6d6170546f417267 6248:S84|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329726563757273697665526566283129 6249:O1|@15787 6250:O1|@15788 6251:S11|3c746f70206c6576656c3e 6252:S61|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831296765744974656d283229 6253:O1|@15791 6254:O1|@15795 6255:S64|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929 6256:O1|@15793 6257:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283129 6258:O1|@15794 6259:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283229 6260:S81|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f7375726528392970726f636573736564426f64792d283129 6261:O4|@16,@4583,@6263,@6262 6262:O5|@6207,207,0,207,0 6263:S30|4c69667465642066756e6374696f6e206f7574206f6620636f6e74657874 6264:O1|@15796 6265:O1|@15797 6266:O1|@15798 6267:O1|@15799 6268:O1|@15800 6269:O4|@16,@4583,@6271,@6270 6270:O5|@6207,481,0,481,0 6271:S33|434f4445545245455f4c414d4244415f4c4946543a636f646547656e6572617465 6272:O2|@15895,@6533 6273:S48|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e636f646547656e6572617465283329 6274:O1|@15803 6275:O1|@15807 6276:S54|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329 6277:O1|@15804 6278:O4|@16,@4583,@6281,@6280 6279:S67|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837292d45 6280:O5|@6282,847,0,847,0 6281:S31|6f75746572206c6576656c207265616368656420696e20636f7079436f6465 6282:S63|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f5354415449435f4c494e4b5f414e445f43415345532e736d6c 6283:O1|@15805 6284:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329746f704c6576656c283129 6285:O1|@15806 6286:O1|@15858 6287:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729 6288:O2|@15808,@6289 6289:O2|@15850,@6288 6290:O1|@15849 6291:S74|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129 6292:O1|@15809 6293:O1|@15810 6294:O1|@15816 6295:S78|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929 6296:O1|@15812 6297:S85|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392970726576283329 6298:S104|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929707265762833296d616b65436c6f73757265456e747279283229 6299:S88|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392972656343616c6c283129 6300:O1|@15814 6301:O5|0,0,0,@6306,@6315 6302:S9|7072696e742d747269 6303:O2|3,@4353 6304:O5|0,0,0,@6306,@6305 6305:O2|@6309,0 6306:O2|@6307,0 6307:O2|0,@6308 6308:O5|@6282,745,745,0,0 6309:O2|3,@6310 6310:S7|54726943616c6c 6311:O5|0,0,0,@6306,@6312 6312:O2|@6313,0 6313:O2|3,@6314 6314:S10|547269436c6f73757265 6315:O2|@6316,0 6316:O2|3,@6317 6317:S8|547269556e726566 6318:O1|@15817 6319:S84|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e736572742831296d617041726773283229 6320:O1|@15818 6321:O1|@15819 6322:O1|@15820 6323:O3|7,0,0 6324:O1|@15821 6325:O1|@15822 6326:O1|@15823 6327:O1|@15834 6328:S81|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129 6329:O1|@15824 6330:O2|@15825,@73 6331:O5|@5940,51,0,51,0 6332:S17|4c697374506169722e7a69704571283229 6333:O1|@15826 6334:S87|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129 6335:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129283129 6336:O1|@15828 6337:O1|@15829 6338:S17|4d6973632e717569636b536f7274283229 6339:O1|@15830 6340:S22|4d6973632e717569636b536f72742832297173283229 6341:O1|@15831 6342:O1|@15832 6343:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e766572744361736528312966696c746572283129 6344:O1|@15833 6345:S94|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129657874656e6443617365283229 6346:O4|@16,@4583,@6348,@6347 6347:O5|@6282,659,0,659,0 6348:S5|4361736573 6349:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831297265636f6e76657274283129 6350:O1|11 6351:O1|@15835 6352:O1|@15836 6353:O1|@15837 6354:O1|@15848 6355:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e73283129 6356:O1|@15838 6357:O1|@15839 6358:O1|@15840 6359:O1|@15841 6360:O1|@15842 6361:S111|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e7328312970726f63657373436c6f7375726573283329 6362:O1|@15843 6363:O1|@15844 6364:O1|@15845 6365:O1|@15846 6366:O4|@16,@4583,@6368,@6367 6367:O5|@6282,381,0,381,0 6368:S8|61734d757475616c 6369:O1|@15847 6370:O4|@16,@4583,@6372,@6371 6371:O5|@6282,419,0,419,0 6372:S30|64656353657175656e63655769746846696e616c4578703a20656d707479 6373:O4|@16,@4583,@6375,@6374 6374:O5|@6282,421,0,421,0 6375:S46|64656353657175656e63655769746846696e616c4578703a206c617374206973206e6f742061204e756c6c446563 6376:O1|@15855 6377:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e64283329 6378:O1|@15851 6379:O5|0,0,0,@6383,@6424 6380:S16|7072696e742d73696d696c6172697479 6381:O5|0,0,0,@6383,@6382 6382:O2|@6386,0 6383:O2|@6384,0 6384:O2|0,@6385 6385:O5|@6282,495,495,0,0 6386:O2|3,@6387 6387:S9|446966666572656e74 6388:O1|@15852 6389:O5|0,0,0,@6419,@6418 6390:S17|7072696e742d6269634c6f6164466f726d 6391:O1|@15853 6392:O2|@5268,@6393 6393:O2|@6394,0 6394:O2|3,@4369 6395:O2|3,@4362 6396:O5|0,0,0,@6398,@6397 6397:O2|@6402,0 6398:O2|@6399,0 6399:O2|0,@6400 6400:O5|@6401,219,219,0,0 6401:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f4261636b656e64496e7465726d656469617465436f64652e736d6c 6402:O2|3,@6403 6403:S15|4249434c6f6164417267756d656e74 6404:O5|0,0,0,@6406,@6405 6405:O2|@6409,0 6406:O2|@6407,0 6407:O2|0,@6408 6408:O5|@6401,220,220,0,0 6409:O2|3,@6410 6410:S14|4249434c6f6164436c6f73757265 6411:O5|0,0,0,@6413,@6412 6412:O2|@6416,0 6413:O2|@6414,0 6414:O2|0,@6415 6415:O5|@6401,218,218,0,0 6416:O2|3,@6417 6417:S12|4249434c6f61644c6f63616c 6418:O2|@6422,0 6419:O2|@6420,0 6420:O2|0,@6421 6421:O5|@6401,221,221,0,0 6422:O2|3,@6423 6423:S16|4249434c6f6164526563757273697665 6424:O2|@6425,0 6425:O2|3,@6426 6426:S7|53696d696c6172 6427:O1|@15854 6428:S86|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e6428332973696d696c6172283229 6429:O1|@15856 6430:O1|@15857 6431:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f646528372967657450726f7073283129 6432:O1|@15859 6433:S83|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f707950726f63436c6f73757265283329 6434:O1|@15860 6435:O1|@15887 6436:S33|4261636b656e64496e7465726d656469617465436f64652e707265747479283129 6437:O1|@15861 6438:O2|3,@4164 6439:S34|4261636b656e64496e7465726d656469617465436f64652e704c6973742833292829 6440:O2|3,@4163 6441:O1|@15862 6442:O2|3,@6443 6443:S2|2428 6444:O1|@15863 6445:O1|@15864 6446:O1|@15865 6447:O1|@15866 6448:O1|@15867 6449:S6|4445434c2023 6450:O2|@4154,0 6451:O1|@15868 6452:O1|@15869 6453:O1|@15870 6454:S7|282066726f6d20 6455:S11|2065786861757374697665 6456:O1|@15871 6457:O2|3,@6460 6458:O2|3,@6459 6459:S10|3d3e2064656661756c74 6460:S2|3d3e 6461:O2|3,@6462 6462:S5|454c53453a 6463:O1|@15872 6464:O2|3,@6465 6465:S6|434153452028 6466:O2|3,@5645 6467:O2|3,@6468 6468:S3|494628 6469:O2|@6471,@6470 6470:O2|@4134,0 6471:S10|52454355525349564528 6472:S5|434c4f5328 6473:S6|504152414d28 6474:S6|4c4f43414c28 6475:S9|494e44495245435428 6476:S5|66616c7365 6477:S4|74727565 6478:S3|434c3d 6479:S8|204c4f43414c533d 6480:O1|@15873 6481:S50|4261636b656e64496e7465726d656469617465436f64652e7072657474792831297072657474794172675479706573283129 6482:O2|3,@6483 6483:S5|415247533d 6484:O2|3,@6485 6485:S4|5245533d 6486:O1|@15874 6487:S6|20434c4f533d 6488:O1|@15875 6489:O1|@15876 6490:O2|@6491,0 6491:O2|3,@6492 6492:S9|297b4c414d4244417d 6493:O2|3,@6494 6494:S7|4c414d42444128 6495:O1|@15877 6496:O1|@15878 6497:S5|424c4f434b 6498:O1|@15879 6499:O1|@15880 6500:O1|@15882 6501:S40|4261636b656e64496e7465726d656469617465436f64652e70726574747942696e64696e67283129 6502:S11|434f4e5441494e45522023 6503:S6|4d555455414c 6504:O1|@15881 6505:O2|@5268,@6506 6506:O2|@6507,0 6507:O2|3,@6508 6508:S5|20414e4420 6509:O1|@15883 6510:S9|524543434f4e535452 6511:O1|@15884 6512:O1|@15885 6513:O1|@15886 6514:O4|@16,@4583,@6516,@6515 6515:O5|@6282,861,0,861,0 6516:S13|4e6f74204249434c616d626461 6517:O1|@15888 6518:O2|@15889,@70 6519:S27|494e54434f4445434f4e5328292e636f6465437265617465283229 6520:S26|5072657474792e67657453696d706c655072696e746572283229 6521:O1|@15891 6522:O4|11,@4007,0,@6532 6523:S40|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d283129 6524:O1|@15892 6525:O4|11,@4007,0,@6527 6526:S25|537472696e672e6669656c64732832296669656c6427283229 6527:O5|@4025,305,0,305,0 6528:O1|@15893 6529:O1|@15894 6530:S50|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c64283229 6531:S60|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c6428322966696e64546162283329 6532:O5|@4415,121,0,121,0 6533:O4|@15916,@76,@77,@6821 6534:O3|@15897,@6805,@6553 6535:S21|494e5447434f444528292e636f646567656e283629 6536:O1|@15896 6537:O5|0,0,0,@6548,@6547 6538:S14|7072696e742d646563456e747279 6539:O5|0,0,0,@6541,@6540 6540:O2|@6545,0 6541:O2|@6542,0 6542:O2|0,@6543 6543:O5|@6544,73,73,0,0 6544:S49|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42797465436f64652f494e5447434f44452e4d4c 6545:O2|3,@6546 6546:S5|456d707479 6547:O2|@6551,0 6548:O2|@6549,0 6549:O2|0,@6550 6550:O5|@6544,72,72,0,0 6551:O2|3,@6552 6552:S9|537461636b41646472 6553:O2|@15913,@6534 6554:O5|@6544,839,0,839,0 6555:S30|494e5447434f444528292e636f646567656e28362967656e636465283429 6556:O2|4,@5948 6557:O2|4,@6558 6558:O2|218,0 6559:O1|@15898 6560:O1|@15899 6561:O2|4,@6562 6562:O2|169,0 6563:O2|4,@6564 6564:O2|168,0 6565:O2|4,@6566 6566:O2|167,0 6567:O2|4,@6568 6568:O2|166,0 6569:O2|4,@6570 6570:O2|165,0 6571:O2|4,@6572 6572:O2|164,0 6573:O2|4,@6574 6574:O2|163,0 6575:O2|4,@6576 6576:O2|162,0 6577:O2|4,@6578 6578:O2|160,0 6579:O2|4,@6580 6580:O2|189,0 6581:O4|@16,@4583,@6583,@6582 6582:O5|@6544,517,0,517,0 6583:S34|544f444f3a204669786564507265636973696f6e41726974682041726974684d6f64 6584:O4|@16,@4583,@6586,@6585 6585:O5|@6544,516,0,516,0 6586:S34|544f444f3a204669786564507265636973696f6e4172697468204172697468446976 6587:O2|4,@6588 6588:O2|174,0 6589:O2|4,@6590 6590:O2|173,0 6591:O2|4,@6592 6592:O2|172,0 6593:O2|4,@6594 6594:O2|171,0 6595:O2|4,@6596 6596:O2|170,0 6597:O2|4,@6598 6598:O2|200,0 6599:O2|4,@6600 6600:O2|199,0 6601:O2|4,@6602 6602:O2|198,0 6603:O2|4,@6604 6604:O2|197,0 6605:O4|@16,@4583,@6607,@6606 6606:O5|@6544,547,0,547,0 6607:S42|4c61726765576f72644172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 6608:O2|4,@6609 6609:O2|196,0 6610:O2|4,@6611 6611:O2|195,0 6612:O2|4,@6613 6613:O2|194,0 6614:O2|4,@6615 6615:O2|193,0 6616:O2|4,@6617 6617:O2|192,0 6618:O2|4,@6619 6619:O2|190,0 6620:O2|4,@6621 6621:O2|203,0 6622:O2|4,@6623 6623:O2|202,0 6624:O2|4,@6625 6625:O2|201,0 6626:O2|4,@6627 6627:O2|206,0 6628:O2|4,@6629 6629:O2|205,0 6630:O2|4,@6631 6631:O2|204,0 6632:O2|4,@6633 6633:O2|216,0 6634:O2|4,@6635 6635:O2|215,0 6636:O2|4,@6637 6637:O2|214,0 6638:O4|@16,@4583,@6640,@6639 6639:O5|@6544,566,0,566,0 6640:S37|5265616c4172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 6641:O2|4,@6642 6642:O2|213,0 6643:O2|4,@6644 6644:O2|212,0 6645:O2|4,@6646 6646:O2|211,0 6647:O2|4,@6648 6648:O2|210,0 6649:O2|4,@6650 6650:O2|209,0 6651:O2|4,@6652 6652:O2|207,0 6653:O2|4,@6654 6654:O2|181,0 6655:O2|4,@6656 6656:O2|180,0 6657:O2|4,@6658 6658:O2|179,0 6659:O2|4,@6660 6660:O2|178,0 6661:O4|@16,@4583,@6663,@6662 6662:O5|@6544,524,0,524,0 6663:S37|576f72644172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 6664:O2|4,@6665 6665:O2|177,0 6666:O2|4,@6667 6667:O2|185,0 6668:O2|4,@6669 6669:O2|184,0 6670:O2|4,@6671 6671:O2|183,0 6672:O2|4,@6673 6673:O2|188,0 6674:O2|4,@6675 6675:O2|187,0 6676:O2|4,@6677 6677:O2|186,0 6678:O1|@15900 6679:O1|@15901 6680:S26|494e54434f4445434f4e5328292e70757368436f6e7374283229 6681:O2|4,@6682 6682:O2|64,0 6683:O2|4,@6684 6684:O2|238,0 6685:O2|4,@6686 6686:O2|237,0 6687:O2|4,@6688 6688:O2|235,0 6689:O2|4,@6690 6690:O2|236,0 6691:O1|@15902 6692:O1|@15903 6693:O4|@16,@4583,@6696,@6695 6694:S31|494e5447434f444528292e636f646567656e2836296c6f6361646472283129 6695:O5|@6544,110,0,110,0 6696:S26|6c6f63616464723a2062616420737461636b2061646472657373 6697:O2|4,@6698 6698:O2|217,0 6699:O2|4,@6700 6700:O2|120,0 6701:O2|4,@6702 6702:O2|241,0 6703:O2|4,@6704 6704:O2|109,0 6705:O1|@15904 6706:O4|@16,@4583,@6710,@6712 6707:S27|494e54434f4445434f4e5328292e7265736574537461636b283329 6708:O4|@16,@4583,@6710,@6709 6709:O5|@6711,1181,0,1181,0 6710:S10|7265736574537461636b 6711:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42797465436f64652f494e54434f4445434f4e532e4d4c 6712:O5|@6711,1174,0,1174,0 6713:O1|@15905 6714:S35|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d283129 6715:O2|4,@6716 6716:O2|239,0 6717:O2|4,@6718 6718:O2|226,0 6719:O2|4,@6720 6720:O2|225,0 6721:O4|@16,@4583,@6723,@6722 6722:O5|@6544,649,0,649,0 6723:S32|4c6f616453746f726543363420627574206e6f742036342d626974206d6f6465 6724:O2|4,@6725 6725:O2|223,0 6726:O2|4,@6727 6727:O2|222,0 6728:O2|4,@6729 6729:O2|221,0 6730:O2|4,@6731 6731:O2|220,0 6732:O2|4,@6733 6733:O2|219,0 6734:O4|@16,@4583,@6736,@6735 6735:O5|@6544,604,0,604,0 6736:S44|67656e6364653a204249434c6f61644f7065726174696f6e202d206e6f7420776f7264206d756c7469706c65 6737:O4|@16,@4583,@6739,@6738 6738:O5|@6544,257,0,257,0 6739:S27|4e6f20426567696e4c6f6f7020666f72204c6f6f7020696e737472 6740:O1|@15906 6741:O1|@15907 6742:O4|@16,@4583,@6745,@6744 6743:S43|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d6c6f616441726773283229 6744:O5|@6544,272,0,272,0 6745:S30|6c6f6164417267733a204d69736d61746368656420617267756d656e7473 6746:O1|@15908 6747:O1|@15909 6748:S44|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d636f64654465636c73283129 6749:S48|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d67656e4d757475616c44656373283129 6750:S51|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d67656e4d757475616c44656373283129283129 6751:O2|4,@6752 6752:O2|16,0 6753:O1|@15911 6754:S44|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d73657456616c756573283329 6755:O2|4,@6756 6756:O2|42,0 6757:O2|4,@6758 6758:O2|227,0 6759:O2|4,@6760 6760:O2|230,0 6761:O2|4,@6762 6762:O2|231,0 6763:O2|4,@6764 6764:O2|232,0 6765:O2|4,@6766 6766:O2|229,0 6767:O2|4,@6768 6768:O2|234,0 6769:O2|4,@6770 6770:O2|233,0 6771:O2|4,@6772 6772:O2|228,0 6773:O2|4,@6774 6774:O2|240,0 6775:O2|4,@6776 6776:O2|145,0 6777:O2|4,@6778 6778:O2|152,0 6779:O2|4,@6780 6780:O2|151,0 6781:O2|4,@6782 6782:O2|153,0 6783:O2|4,@6784 6784:O2|149,0 6785:O2|4,@6786 6786:O2|159,0 6787:O2|4,@6788 6788:O2|146,0 6789:O2|4,@6790 6790:O2|154,0 6791:O2|4,@6792 6792:O2|148,0 6793:O2|4,@6794 6794:O2|147,0 6795:O2|4,@6796 6796:O2|157,0 6797:O2|4,@6798 6798:O2|158,0 6799:O2|4,@6800 6800:O2|155,0 6801:O2|4,@6802 6802:O2|156,0 6803:S23|67656e6364653a206261642061646a7573746d656e7420 6804:O5|@6544,856,0,856,0 6805:O2|@15912,@6534 6806:O2|4,@6810 6807:S31|494e5447434f444528292e636f646567656e28362967656e50726f63283329 6808:O2|4,@6809 6809:O2|69,0 6810:O2|108,0 6811:O2|4,@6820 6812:S31|494e5447434f444528292e636f646567656e28362967656e4576616c283229 6813:O1|@15914 6814:O1|@15915 6815:O2|4,@6819 6816:S28|494e54434f4445434f4e5328292e67656e5461696c43616c6c283329 6817:O2|4,@6818 6818:O2|128,0 6819:O2|127,0 6820:O2|12,0 6821:O1|@15940 6822:O1|@15939 6823:S25|494e54434f4445434f4e5328292e636f7079436f6465283229 6824:O1|@15917 6825:O1|@15921 6826:S24|494e54434f4445434f4e5328292e67656e436f6465283329 6827:O1|@15918 6828:O4|@16,@4583,@6831,@6830 6829:S25|494e54434f4445434f4e5328292e636f646553697a65283129 6830:O5|@6711,765,0,765,0 6831:S8|636f646553697a65 6832:O1|@15919 6833:O4|@16,@4583,@6838,@6837 6834:S50|494e54434f4445434f4e5328292e7365744c6162656c73416e6453697a65732831297365744c6162416e6453697a65283229 6835:O1|@15920 6836:S59|494e54434f4445434f4e5328292e7365744c6162656c73416e6453697a65732831297365744c6162416e6453697a6528322961646a757374283329 6837:O5|@6711,854,0,854,0 6838:S30|7365744c6162416e6453697a65202d2073697a6520696e63726561736564 6839:O4|@16,@4583,@6864,@6871 6840:S38|494e54434f4445434f4e5328292e67656e436f646528332967656e42797465436f6465283329 6841:O4|@16,@4583,@6843,@6842 6842:O5|@6711,1027,0,1027,0 6843:S30|67656e42797465436f6465202d20496e6465786564436173652062797465 6844:O4|11,@4007,0,@6845 6845:O5|@6846,99,0,99,0 6846:S42|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f44455f41525241592e4d4c 6847:O4|@16,@4583,@6849,@6848 6848:O5|@6711,1017,0,1017,0 6849:S26|67656e42797465436f6465202d20696e64657865642063617365 6850:O4|@16,@4583,@6849,@6851 6851:O5|@6711,1018,0,1018,0 6852:O4|@16,@4583,@6849,@6853 6853:O5|@6711,995,0,995,0 6854:O4|@16,@4583,@6856,@6855 6855:O5|@6711,978,0,978,0 6856:S28|67656e42797465436f6465202d20636f6e7374616e742072616e6765 6857:O4|@16,@4583,@6856,@6858 6858:O5|@6711,967,0,967,0 6859:O4|@16,@4583,@6861,@6860 6860:O5|@6711,929,0,929,0 6861:S23|67656e42797465436f6465202d206261636b206a756d70 6862:O4|@16,@4583,@6864,@6863 6863:O5|@6711,931,0,931,0 6864:S24|67656e42797465436f6465202d206a756d702072616e6765 6865:O4|@16,@4583,@6864,@6866 6866:O5|@6711,944,0,944,0 6867:O4|@16,@4583,@6861,@6868 6868:O5|@6711,902,0,902,0 6869:O4|@16,@4583,@6864,@6870 6870:O5|@6711,904,0,904,0 6871:O5|@6711,918,0,918,0 6872:O1|@15922 6873:S21|506f6c79436f707942797465566563546f436f6465 6874:O4|11,@4007,0,@6875 6875:O5|@6846,112,0,112,0 6876:O1|@15923 6877:O1|@15938 6878:S26|494e54434f4445434f4e5328292e7072696e74436f6465283429 6879:S2|3a0a 6880:O1|@15924 6881:O4|11,@4007,0,@6883 6882:S35|494e54434f4445434f4e5328292e7072696e74436f6465283429676574422833292829 6883:O5|@6846,89,0,89,0 6884:O4|@16,@4583,@6886,@6885 6885:O5|@6711,682,0,682,0 6886:S36|7072696e74436f64653a20696e646972656374696f6e206c69737420636f6e6675736564 6887:O1|@15925 6888:O1|@15926 6889:O1|@15927 6890:O1|@15928 6891:O1|@15929 6892:O1|@15930 6893:O1|@15931 6894:O1|@15932 6895:S2|0a09 6896:O1|@15933 6897:O1|@15934 6898:O1|@15935 6899:O1|@15936 6900:O1|@15937 6901:S19|506f6c794c6f636b4d757461626c65436f6465 6902:S13|3c554e4b4e4f574e203235353e 6903:S8|656e746572496e74 6904:S11|3c554e4b4e4f574e20313e 6905:S4|6a756d70 6906:S9|6a756d7046616c7365 6907:S11|3c554e4b4e4f574e20343e 6908:S10|64656c48616e646c6572 6909:S9|616c6c6f635f726566 6910:S11|3c554e4b4e4f574e20373e 6911:S11|3c554e4b4e4f574e20383e 6912:S11|3c554e4b4e4f574e20393e 6913:S6|636173653136 6914:S12|3c554e4b4e4f574e2031313e 6915:S11|63616c6c436c6f73757265 6916:S7|72657475726e57 6917:S3|706164 6918:S12|3c554e4b4e4f574e2031353e 6919:S7|72616973654578 6920:S9|67657453746f726557 6921:S8|6e6f6e4c6f63616c 6922:S6|6c6f63616c57 6923:S9|696e64697265637457 6924:S10|6d6f7665546f56656357 6925:S12|3c554e4b4e4f574e2032323e 6926:S12|736574537461636b56616c57 6927:S6|726573657457 6928:S8|7265736574525f77 6929:S11|636f6e7374416464723136 6930:S9|636f6e7374496e7457 6931:S12|3c554e4b4e4f574e2032383e 6932:S12|3c554e4b4e4f574e2032393e 6933:S9|6a756d704261636b38 6934:S7|72657475726e42 6935:S10|6a756d704261636b3136 6936:S9|67657453746f726542 6937:S6|6c6f63616c42 6938:S9|696e64697265637442 6939:S10|6d6f7665546f56656342 6940:S12|736574537461636b56616c42 6941:S6|726573657442 6942:S7|72657365745242 6943:S9|636f6e7374496e7442 6944:S7|6c6f63616c5f30 6945:S7|6c6f63616c5f31 6946:S7|6c6f63616c5f32 6947:S7|6c6f63616c5f33 6948:S7|6c6f63616c5f34 6949:S7|6c6f63616c5f35 6950:S7|6c6f63616c5f36 6951:S7|6c6f63616c5f37 6952:S7|6c6f63616c5f38 6953:S7|6c6f63616c5f39 6954:S8|6c6f63616c5f3130 6955:S8|6c6f63616c5f3131 6956:S10|696e6469726563745f30 6957:S10|696e6469726563745f31 6958:S10|696e6469726563745f32 6959:S10|696e6469726563745f33 6960:S10|696e6469726563745f34 6961:S10|696e6469726563745f35 6962:S7|636f6e73745f30 6963:S7|636f6e73745f31 6964:S7|636f6e73745f32 6965:S7|636f6e73745f33 6966:S7|636f6e73745f34 6967:S8|636f6e73745f3130 6968:S8|72657475726e5f30 6969:S8|72657475726e5f31 6970:S8|72657475726e5f32 6971:S8|72657475726e5f33 6972:S11|6d6f7665546f5665635f30 6973:S11|6d6f7665546f5665635f31 6974:S11|6d6f7665546f5665635f32 6975:S11|6d6f7665546f5665635f33 6976:S11|6d6f7665546f5665635f34 6977:S11|6d6f7665546f5665635f35 6978:S11|6d6f7665546f5665635f36 6979:S11|6d6f7665546f5665635f37 6980:S12|3c554e4b4e4f574e2037373e 6981:S12|3c554e4b4e4f574e2037383e 6982:S12|3c554e4b4e4f574e2037393e 6983:S7|72657365745f31 6984:S7|72657365745f32 6985:S10|67657453746f72655f32 6986:S10|67657453746f72655f33 6987:S10|67657453746f72655f34 6988:S12|3c554e4b4e4f574e2038353e 6989:S11|6e6f6e4c6f63616c4c5f31 6990:S11|6e6f6e4c6f63616c4c5f32 6991:S11|6e6f6e4c6f63616c4c5f33 6992:S12|3c554e4b4e4f574e2038393e 6993:S12|3c554e4b4e4f574e2039303e 6994:S12|3c554e4b4e4f574e2039313e 6995:S12|3c554e4b4e4f574e2039323e 6996:S12|3c554e4b4e4f574e2039333e 6997:S12|3c554e4b4e4f574e2039343e 6998:S12|3c554e4b4e4f574e2039353e 6999:S12|3c554e4b4e4f574e2039363e 7000:S12|3c554e4b4e4f574e2039373e 7001:S12|3c554e4b4e4f574e2039383e 7002:S12|3c554e4b4e4f574e2039393e 7003:S8|7265736574525f31 7004:S8|7265736574525f32 7005:S8|7265736574525f33 7006:S6|7475706c6557 7007:S6|7475706c6542 7008:S7|7475706c655f32 7009:S7|7475706c655f33 7010:S7|7475706c655f34 7011:S4|6c6f636b 7012:S5|6c64657863 7013:S13|3c554e4b4e4f574e203131303e 7014:S13|3c554e4b4e4f574e203131313e 7015:S13|3c554e4b4e4f574e203131323e 7016:S13|3c554e4b4e4f574e203131333e 7017:S13|3c554e4b4e4f574e203131343e 7018:S13|3c554e4b4e4f574e203131353e 7019:S13|3c554e4b4e4f574e203131363e 7020:S13|3c554e4b4e4f574e203131373e 7021:S13|3c554e4b4e4f574e203131383e 7022:S13|3c554e4b4e4f574e203131393e 7023:S11|7075736848616e646c6572 7024:S13|3c554e4b4e4f574e203132313e 7025:S13|3c554e4b4e4f574e203132323e 7026:S6|7461696c6262 7027:S4|7461696c 7028:S6|7461696c3362 7029:S6|7461696c3462 7030:S7|7461696c335f32 7031:S7|7461696c335f33 7032:S10|73657448616e646c6572 7033:S13|3c554e4b4e4f574e203133303e 7034:S12|63616c6c4661737452545330 7035:S12|63616c6c4661737452545331 7036:S12|63616c6c4661737452545332 7037:S12|63616c6c4661737452545333 7038:S12|63616c6c4661737452545334 7039:S12|63616c6c4661737452545335 7040:S12|63616c6c46756c6c52545330 7041:S12|63616c6c46756c6c52545331 7042:S12|63616c6c46756c6c52545332 7043:S12|63616c6c46756c6c52545333 7044:S12|63616c6c46756c6c52545334 7045:S12|63616c6c46756c6c52545335 7046:S15|63616c6c46756c6c52545346746f46 7047:S15|63616c6c46756c6c52545347746f46 7048:S10|6e6f74426f6f6c65616e 7049:S8|6973546167676564 7050:S10|63656c6c4c656e677468 7051:S9|63656c6c466c616773 7052:S12|636c6561724d757461626c65 7053:S13|3c554e4b4e4f574e203135303e 7054:S10|61746f6d6963496e6372 7055:S10|61746f6d696344656372 7056:S11|61746f6d69635265736574 7057:S13|6c6f6e6757546f546167676564 7058:S13|7369676e6564546f4c6f6e6757 7059:S15|756e7369676e6564546f4c6f6e6757 7060:S7|7265616c416273 7061:S7|7265616c4e6567 7062:S13|666c6f61744669786564496e74 7063:S9|657175616c576f7264 7064:S12|6e6f74657175616c576f7264 7065:S10|6c6573735369676e6564 7066:S12|6c657373556e7369676e6564 7067:S12|6c65737345715369676e6564 7068:S14|6c6573734571556e7369676e6564 7069:S13|677265617465725369676e6564 7070:S15|67726561746572556e7369676e6564 7071:S15|6772656174657245715369676e6564 7072:S17|677265617465724571556e7369676e6564 7073:S8|6669786564416464 7074:S8|6669786564537562 7075:S9|66697865644d756c74 7076:S9|666978656451756f74 7077:S8|666978656452656d 7078:S8|6669786564446976 7079:S8|66697865644d6f64 7080:S7|776f7264416464 7081:S7|776f7264537562 7082:S8|776f72644d756c74 7083:S7|776f7264446976 7084:S7|776f72644d6f64 7085:S13|3c554e4b4e4f574e203138323e 7086:S7|776f7264416e64 7087:S6|776f72644f72 7088:S7|776f7264586f72 7089:S13|776f726453686966744c656674 7090:S13|776f72645368696674524c6f67 7091:S15|776f72645368696674524172697468 7092:S12|616c6c6f63427974654d656d 7093:S11|6c67576f7264457175616c 7094:S14|6c67576f72644e6f74657175616c 7095:S10|6c67576f72644c657373 7096:S12|6c67576f72644c6573734571 7097:S13|6c67576f726447726561746572 7098:S15|6c67576f7264477265617465724571 7099:S9|6c67576f7264416464 7100:S9|6c67576f7264537562 7101:S10|6c67576f72644d756c74 7102:S9|6c67576f7264446976 7103:S9|6c67576f72644d6f64 7104:S9|6c67576f7264416e64 7105:S8|6c67576f72644f72 7106:S9|6c67576f7264586f72 7107:S15|6c67576f726453686966744c656674 7108:S15|6c67576f72645368696674524c6f67 7109:S17|6c67576f72645368696674524172697468 7110:S9|7265616c457175616c 7111:S12|7265616c4e6f74657175616c 7112:S8|7265616c4c657373 7113:S10|7265616c4c6573734571 7114:S11|7265616c47726561746572 7115:S13|7265616c477265617465724571 7116:S7|7265616c416464 7117:S7|7265616c537562 7118:S8|7265616c4d756c74 7119:S7|7265616c446976 7120:S11|6765745468726561644964 7121:S15|616c6c6f63576f72644d656d6f7279 7122:S10|6c6f61644d4c576f7264 7123:S10|6c6f61644d4c42797465 7124:S6|6c6f61644338 7125:S7|6c6f6164433136 7126:S7|6c6f6164433332 7127:S7|6c6f6164433634 7128:S10|6c6f616443466c6f6174 7129:S11|6c6f616443446f75626c65 7130:S11|73746f72654d4c576f7264 7131:S11|73746f72654d4c42797465 7132:S7|73746f72654338 7133:S8|73746f7265433136 7134:S8|73746f7265433332 7135:S8|73746f7265433634 7136:S11|73746f726543466c6f6174 7137:S12|73746f726543446f75626c65 7138:S13|626c6f636b4d6f7665576f7264 7139:S13|626c6f636b4d6f766542797465 7140:S14|626c6f636b457175616c42797465 7141:S16|626c6f636b436f6d7061726542797465 7142:S12|6c6f6164556e746167676564 7143:S13|3c554e4b4e4f574e203234303e 7144:S13|64656c65746548616e646c6572 7145:S6|6a756d703332 7146:S11|6a756d70333246616c7365 7147:S11|636f6e7374416464723332 7148:S12|73657448616e646c65723332 7149:S6|636173653332 7150:S6|6a756d703136 7151:S11|6a756d70313666616c7365 7152:S12|73657448616e646c65723136 7153:S10|636f6e73744164647238 7154:S10|737461636b53697a6538 7155:S11|737461636b53697a653136 7156:S13|3c554e4b4e4f574e203235333e 7157:S13|3c554e4b4e4f574e203235343e 7158:S15|506f6c794973426967456e6469616e 7159:S49|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429 7160:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d6264612834296c6f6f6b75704c6f63616c283129 7161:S60|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429636f6e746578742d283129 7162:O1|@15945 7163:O1|@15946 7164:O1|@15947 7165:S68|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296578747261637450726f7073283129 7166:O1|@15953 7167:S51|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e6d657267655475706c6550726f7073283229 7168:O1|@15949 7169:S48|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e73706c697450726f70732833292829 7170:O1|@15950 7171:O1|@15951 7172:O1|@15952 7173:S83|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229676574526573756c7473283229 7174:O4|@16,@4583,@7186,@7185 7175:S65|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129 7176:O1|@15955 7177:O1|@15956 7178:O4|@16,@4583,@7184,@7183 7179:S81|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129636865636b42696e64696e6773283229 7180:O1|@15957 7181:O1|@15958 7182:O1|@15959 7183:O5|@6003,1441,0,1441,0 7184:S13|636865636b42696e64696e6773 7185:O5|@6003,1428,0,1428,0 7186:S14|70726f636573734c616d62646173 7187:S19|4f7574707574206f66206f7074696d69736572 7188:O1|@15960 7189:O1|@15961 7190:S36|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129 7191:S24|434f44455452454528292e67656e436f6465283329283129 7192:O1|@15963 7193:O5|0,0,0,@7197,@7206 7194:S11|7072696e742d7669736974 7195:O5|0,0,0,@7197,@7196 7196:O2|@7200,0 7197:O2|@7198,0 7198:O2|0,@7199 7199:O5|@4715,186,186,0,0 7200:O2|3,@7201 7201:S9|556e56697369746564 7202:O5|0,0,0,@7197,@7203 7203:O2|@7204,0 7204:O2|3,@7205 7205:S14|5669736974656447656e6572616c 7206:O2|@7207,0 7207:O2|3,@7208 7208:S14|566973697465645370656369616c 7209:O2|@15964,@7210 7210:O2|@15967,@7209 7211:O1|@15966 7212:S32|434f44455452454528292e67656e436f646528332966696e6444656373283129 7213:O1|@15965 7214:O4|@16,@4583,@7217,@7216 7215:S41|434f44455452454528292e67656e436f646528332970726f6365737347656e416e6453706563283229 7216:O5|@4715,234,0,234,0 7217:S36|646f47656e6572616c3a206e6f74204c6f61644c6f63616c206f7220436f6e7374616e74 7218:O1|@15968 7219:O1|@15969 7220:S31|434f44455452454528292e67656e436f646528332961646444656373283129 7221:O1|@15970 7222:O4|@16,@4583,@7224,@7223 7223:O5|@4715,274,0,274,0 7224:S31|526573756c7420766563746f72206973206e6f7420616e2061646472657373 7225:O1|@15971 7226:S14|506f6c7953697a65446f75626c65 7227:S13|506f6c7953697a65466c6f6174 7228:O3|@7229,@4655,@4760 7229:S4|776f7264 7230:S14|4c61726765576f72642e776f7264 7231:O2|@7233,@7232 7232:O2|@7234,0 7233:S3|65786e 7234:O4|@7233,0,@4653,@7235 7235:O3|@7237,@7241,@7236 7236:O3|@7233,@4655,@4760 7237:O2|1,@7238 7238:O3|6,@7239,0 7239:O4|0,@79,2,1 7240:O1|@15973 7241:O4|1,@80,0,0 7242:O2|@7229,@7243 7243:O2|@7244,0 7244:O4|@7229,0,@4653,@7245 7245:O3|@7247,@7246,@7228 7246:O4|1,@82,0,0 7247:O2|1,@7248 7248:O3|6,@7250,@7249 7249:O2|@7252,0 7250:O4|@7251,@81,1,1 7251:O1|@15974 7252:O4|@25,@4162,@7253,0 7253:O3|3,4,@7254 7254:O5|@15289,@7256,@4719,@7255,@4707 7255:O2|@7250,@7251 7256:O2|@15291,@7257 7257:O2|@4779,@7258 7258:O2|@7259,@4789 7259:O2|@7260,@4719 7260:O3|0,@81,0 7261:O1|@15975 7262:S7|52756e43616c6c 7263:O1|@15976 7264:S13|756e7361666543617374283129 7265:O1|@15977 7266:O1|@15978 7267:S10|756e7361666543617374 7268:O1|@15979 7269:S7|697353686f7274 7270:O1|@15980 7271:O1|@15982 7272:S24|434f44455452454528292e6d6b42696e617279466e283129 7273:O1|@15981 7274:O1|@15983 7275:O1|@15984 7276:S26|545950455f5452454528292e6d6170746f5265636f7264283229 7277:O1|@15985 7278:S9|706f696e7465724571 7279:O1|@15986 7280:O1|@15987 7281:O3|13,@5407,@7282 7282:O3|@5039,@7283,0 7283:O1|@5041 7284:S15|6c6f61644f7065726174696f6e2829 7285:O1|@15988 7286:O2|@7287,0 7287:O5|5,0,@7229,@7244,0 7288:S8|6c6f6164576f7264 7289:O3|13,@7290,@7282 7290:O2|7,1 7291:O1|@15989 7292:S21|6c6f6164576f726446726f6d496d6d757461626c65 7293:O3|13,@5948,@7282 7294:O1|@15990 7295:S8|6c6f616442797465 7296:O3|13,@7297,@7282 7297:O2|6,1 7298:O1|@15991 7299:S21|6c6f61644279746546726f6d496d6d757461626c65 7300:O1|@15992 7301:S16|6d656d6f727943656c6c4c656e677468 7302:O1|@15993 7303:S15|6d656d6f727943656c6c466c616773 7304:O2|@7306,@7305 7305:O7|@7306,2,@7307,@7287,@4653,0,0 7306:S12|6279746573506572576f7264 7307:O2|1,@7308 7308:O3|6,4,0 7309:O1|@15994 7310:O1|@15995 7311:O4|18,@5407,@7312,@7282 7312:O4|11,@4684,2,0 7313:S16|73746f72654f7065726174696f6e2829 7314:O1|@15996 7315:O5|5,0,@4797,@4798,0 7316:S9|73746f7265576f7264 7317:O4|18,@5948,@7312,@7282 7318:O1|@15997 7319:S9|73746f726542797465 7320:O1|@15998 7321:S15|636c6561724d757461626c65426974 7322:O1|@15999 7323:O2|@7287,@7324 7324:O2|@7287,0 7325:S18|616c6c6f63617465427974654d656d6f7279 7326:O2|12,@7327 7327:O8|@7329,@7328,0,0,@5205,0,0,1 7328:S20|416c6c6f63617465576f72644d656d6f72792829 7329:O4|0,@5041,@7312,@5039 7330:O1|@16000 7331:S18|616c6c6f63617465576f72644d656d6f7279 7332:O1|@16001 7333:O1|@16002 7334:O5|4,1,@7336,@7337,@7335 7335:O3|@5039,@7340,0 7336:O4|11,@4684,4,0 7337:O3|@5041,@7338,0 7338:O1|@7339 7339:O4|11,@4684,3,0 7340:O1|@7312 7341:S16|626c6f636b4f7065726174696f6e2829 7342:O1|@16003 7343:O2|@7287,@7323 7344:S15|62797465566563746f72457175616c 7345:O5|4,0,@7336,@7337,@7335 7346:O1|@16004 7347:S17|62797465566563746f72436f6d70617265 7348:O5|4,@5064,@7336,@7337,@7335 7349:O1|@16005 7350:S9|6d6f76654279746573 7351:O5|4,@4517,@7336,@7337,@7335 7352:O1|@16006 7353:S9|6d6f7665576f726473 7354:O3|13,@4982,@7282 7355:O2|@7356,@7324 7356:O5|5,0,@4954,@4955,0 7357:O4|18,@4982,@7312,@7282 7358:O2|@7356,@7323 7359:S13|73746f7265556e746167676564 7360:O3|6,@7361,0 7361:O1|@16007 7362:O2|4,@7370 7363:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6543616c6c283129283129283129 7364:O1|@16008 7365:S26|506f6c79437265617465456e747279506f696e744f626a656374 7366:O2|4,@7367 7367:O2|43,0 7368:O2|4,@7369 7369:O2|138,0 7370:O2|66,0 7371:O1|@16009 7372:S12|72747343616c6c46756c6c31 7373:O1|@16010 7374:O3|6,@7375,0 7375:O1|@16011 7376:O2|4,@7377 7377:O2|132,0 7378:O1|@16012 7379:S12|72747343616c6c4661737431 7380:O1|@16013 7381:O1|@16014 7382:O2|4,@7385 7383:O2|4,@7384 7384:O2|137,0 7385:O2|65,0 7386:O1|@16015 7387:O1|@16018 7388:S50|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c6564283229 7389:S7|72747343616c6c 7390:O1|@16016 7391:S3|283129 7392:O2|@5044,0 7393:O1|@16017 7394:O1|@16019 7395:O1|@16020 7396:O2|4,@7397 7397:O2|131,0 7398:O1|@16021 7399:O1|@16022 7400:O2|4,@7405 7401:O2|4,@7402 7402:O2|44,0 7403:O2|4,@7404 7404:O2|139,0 7405:O2|67,0 7406:O1|@16023 7407:O1|@16024 7408:O2|4,@7409 7409:O2|133,0 7410:O1|@16025 7411:O1|@16026 7412:O2|4,@7417 7413:O2|4,@7414 7414:O2|45,0 7415:O2|4,@7416 7416:O2|140,0 7417:O2|68,0 7418:O1|@16027 7419:O1|@16028 7420:O2|4,@7421 7421:O2|134,0 7422:O1|@16029 7423:O1|@16030 7424:O2|4,@7429 7425:O2|4,@7426 7426:O2|46,0 7427:O2|4,@7428 7428:O2|135,0 7429:O2|31,@7430 7430:O2|4,0 7431:O1|@16031 7432:S12|72747343616c6c46756c6c30 7433:S12|72747343616c6c4661737430 7434:S12|72747343616c6c46756c6c32 7435:S12|72747343616c6c4661737432 7436:S12|72747343616c6c46756c6c33 7437:S12|72747343616c6c4661737433 7438:S12|72747343616c6c4661737434 7439:O1|@16032 7440:O1|@16033 7441:O1|@16038 7442:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c656457697468436f6e7461696e6572283329 7443:S8|72756e5f63616c6c 7444:O1|@16034 7445:O1|@16035 7446:O1|@16036 7447:O1|@16037 7448:O2|@7450,@7449 7449:O2|@7453,@7452 7450:O2|@7451,1 7451:S9|496e74657272757074 7452:O2|@7456,@7455 7453:O2|@7454,4 7454:S4|53697a65 7455:O2|@7459,@7458 7456:O2|@7457,100 7457:S4|42696e64 7458:O2|@7461,@7460 7459:O2|@5491,7 7460:O2|@7464,@7463 7461:O2|@7462,101 7462:S5|4d61746368 7463:O2|@7466,0 7464:O2|@7465,5 7465:S8|4f766572666c6f77 7466:O2|@7467,11 7467:S9|537562736372697074 7468:O5|5,0,@7233,@7234,0 7469:S6|537973457272 7470:O3|@7471,12,@7356 7471:S6|546872656164 7472:O3|@7473,23,@7356 7473:S7|466f726569676e 7474:O3|@7475,10,@7356 7475:S8|5857696e646f7773 7476:O3|@7477,8,@7356 7477:S10|436f6e76657273696f6e 7478:O3|@7479,103,@7356 7479:S4|4661696c 7480:O1|@16039 7481:S8|4c61726765496e74 7482:O2|@4649,@7483 7483:O2|@4649,0 7484:S11|63616c6c51756f7452656d 7485:O2|@4651,@7486 7486:O2|@4650,0 7487:O2|1,3 7488:O1|@16040 7489:O1|@16043 7490:S27|434f44455452454528292e6d6b417262697472617279466e283129 7491:O2|@7492,0 7492:O3|20,@7493,0 7493:O2|@5039,@7494 7494:O2|@5041,0 7495:O1|@16041 7496:O4|5,@7498,@7497,@4689 7497:O3|21,@5041,5 7498:O3|21,@5039,5 7499:S9|417262697472617279 7500:O1|@16042 7501:S4|6c657373 7502:O2|1,1 7503:S7|67726561746572 7504:O2|1,4 7505:S6|6c6573734571 7506:S9|677265617465724571 7507:S3|616464 7508:O2|0,6 7509:S8|7375627472616374 7510:O2|0,3 7511:S8|6d756c7469706c79 7512:O1|@16044 7513:S8|4669786564496e74 7514:O2|@4762,@7515 7515:O2|@4762,0 7516:O2|@4651,@7517 7517:O2|@4794,0 7518:O3|9,3,1 7519:O3|9,4,1 7520:O3|9,1,1 7521:O3|9,2,1 7522:S2|3e3d 7523:O2|1,6 7524:S4|71756f74 7525:O2|1,5 7526:S3|72656d 7527:O1|@16045 7528:O2|3,3 7529:O2|3,4 7530:O2|3,1 7531:O2|3,2 7532:S3|646976 7533:S3|6d6f64 7534:O2|4,1 7535:S3|6f7262 7536:S4|616e6462 7537:O2|4,2 7538:S4|786f7262 7539:O2|5,0 7540:S2|3c3c 7541:O2|5,2 7542:S2|3e3e 7543:O2|5,1 7544:S3|7e3e3e 7545:O1|@16046 7546:S11|746f4c61726765576f7264 7547:S12|746f4c61726765576f726458 7548:S13|66726f6d4c61726765576f7264 7549:O3|9,3,0 7550:O3|9,4,0 7551:O3|9,1,0 7552:O3|9,2,0 7553:O2|8,0 7554:O2|8,6 7555:O2|8,3 7556:O2|8,1 7557:O2|8,2 7558:O2|10,1 7559:O2|10,0 7560:O2|10,2 7561:O2|11,0 7562:O2|11,2 7563:O2|11,1 7564:O1|@16047 7565:S4|43686172 7566:O2|@7568,@7567 7567:O2|@7568,0 7568:O5|5,0,@4933,@4934,0 7569:O1|@16048 7570:S6|537472696e67 7571:O1|@16049 7572:O3|6,@7573,0 7573:O1|@16050 7574:O2|4,@7576 7575:S53|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b65466173745265616c5265616c43616c6c283129 7576:O2|143,0 7577:O1|@16051 7578:S19|72747343616c6c466173745265616c5265616c 7579:O3|6,@7580,0 7580:O1|@16052 7581:O2|4,@7583 7582:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6546617374496e74496e665265616c43616c6c283129 7583:O2|144,0 7584:O1|@16053 7585:S21|72747343616c6c46617374496e74496e665265616c 7586:S14|72747343616c6c46617374465f46 7587:O3|2,@7356,@7588 7588:O3|2,@7589,@7589 7589:O5|5,0,@4994,@4995,0 7590:S14|72747343616c6c46617374495f46 7591:O3|2,@7356,@7592 7592:O3|2,@4649,@7589 7593:O2|@7589,@7594 7594:O2|@7589,0 7595:O2|7,3 7596:O2|7,4 7597:O2|7,2 7598:S2|3d3d 7599:O2|6,6 7600:O2|6,3 7601:O3|2,@7589,@7589 7602:S3|616273 7603:S12|66726f6d4669786564496e74 7604:O3|2,@4762,@7589 7605:O1|@16054 7606:S9|426f6f747374726170 7607:O1|@16055 7608:O1|@16056 7609:O2|@5389,@5415 7610:O2|12,@7611 7611:O8|@4785,@4771,0,0,@7612,0,0,1 7612:O2|@4688,@5205 7613:O3|@7614,@4655,@4760 7614:S6|746872656164 7615:S4|73656c66 7616:O2|1,@7617 7617:O2|12,@7618 7618:O8|@5719,@7619,0,0,@5205,0,0,1 7619:S13|47657454687265616449642829 7620:O3|2,@7621,@7287 7621:O5|5,@7324,@5350,@5351,@4653 7622:O3|2,@7621,@7315 7623:O1|@16057 7624:S13|466f726569676e4d656d6f7279 7625:O3|13,@4705,@7282 7626:O1|@16058 7627:S4|67657438 7628:O3|13,@4517,@7282 7629:S5|6765743136 7630:O3|13,@5064,@7282 7631:O1|@16059 7632:S5|6765743332 7633:O3|13,@4719,@7282 7634:S5|6765743634 7635:O3|13,@7636,@7282 7636:O1|5 7637:S8|676574466c6f6174 7638:O3|13,@5395,@7282 7639:S9|676574446f75626c65 7640:O4|18,@4705,@7312,@7282 7641:O1|@16060 7642:S4|73657438 7643:O4|18,@4517,@7312,@7282 7644:S5|7365743136 7645:O4|18,@5064,@7312,@7282 7646:O1|@16061 7647:S5|7365743332 7648:O4|18,@4719,@7312,@7282 7649:S5|7365743634 7650:O2|@7287,@7651 7651:O2|@7589,0 7652:O4|18,@7636,@7312,@7282 7653:S8|736574466c6f6174 7654:O4|18,@5395,@7312,@7282 7655:S9|736574446f75626c65 7656:O3|6,@7657,0 7657:O1|@16062 7658:O1|@16064 7659:S22|4d6973632e756e657363617065537472696e67283129 7660:S28|4d6973632e756e657363617065537472696e67283129726472283129 7661:O4|8,@7477,@7675,@7674 7662:S34|4d6973632e756e657363617065537472696e67283129636f6e764368617273283129 7663:O2|@16065,@4064 7664:S1|07 7665:S11|7363616e42617365283229 7666:O1|@16066 7667:S11|7265616448657827283429 7668:S1|0d 7669:S1|0c 7670:S1|0b 7671:S1|0a 7672:S1|09 7673:S1|08 7674:O5|@7676,91,0,91,0 7675:S23|496e76616c696420737472696e6720636f6e7374616e74 7676:S27|6d6c736f757263652f4d4c436f6d70696c65722f4d6973632e4d4c 7677:O3|6,@7678,0 7678:O1|@16067 7679:O4|8,@7477,@7693,@7692 7680:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229696e744f66537472696e67283129 7681:S2|3078 7682:S3|7e3078 7683:S29|537472696e674376742e7363616e537472696e67283229726472283129 7684:O9|@16069,268435456,7,1000000000,9,134217728,9,536870912,29 7685:O1|@16071 7686:S16|4c61726765496e742e7363616e283329 7687:O1|@16070 7688:S34|4c61726765496e742e7363616e283329726561645f6865785f646967697473283329 7689:S21|506f6c794d756c7469706c79417262697472617279 7690:O4|5,@4089,0,@7691 7691:O5|@4568,352,0,352,0 7692:O5|@7694,910,0,910,0 7693:S24|496e76616c696420696e746567657220636f6e7374616e74 7694:S34|6d6c736f757263652f4d4c436f6d70696c65722f494e495449414c4953455f2e4d4c 7695:O3|6,@7696,0 7696:O1|@16072 7697:O4|8,@7477,@7712,@7711 7698:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229776f72644f66537472696e67283129 7699:O1|@16074 7700:O1|@16075 7701:S11|7363616e576f7264283329 7702:S29|7363616e576f7264283329726561645f6865785f646967697473283329 7703:B4|ffffff7f 7704:O1|@16076 7705:S20|506f6c79436f6d70617265417262697472617279 7706:O4|5,@4089,0,@7707 7707:O5|@7708,201,0,201,0 7708:S21|2e2f62617369732f4c61726765576f72642e736d6c 7709:O1|@16077 7710:S26|506f6c794765744c6f774f7264657241734c61726765576f7264 7711:O5|@7694,921,0,921,0 7712:S21|496e76616c696420776f726420636f6e7374616e74 7713:O2|@7715,@7714 7714:O7|@7715,2,@7716,@7356,@4653,0,0 7715:S14|636f6e76537472696e674e616d65 7716:O2|1,@7717 7717:O3|6,@7718,0 7718:S10|636f6e76537472696e67 7719:O2|@7721,@7720 7720:O7|@7721,2,@7723,@7722,@4653,0,0 7721:S7|636f6e76496e74 7722:O3|2,@7356,@4649 7723:O2|1,@7677 7724:O2|@7726,@7725 7725:O7|@7726,2,@7728,@7727,@4653,0,0 7726:S8|636f6e76576f7264 7727:O3|2,@7356,@7287 7728:O2|1,@7695 7729:O2|@7718,@7730 7730:O7|@7718,2,@7732,@7731,@4653,0,0 7731:O3|2,@7356,@7356 7732:O2|1,@7656 7733:S23|696e744973417262697472617279507265636973696f6e 7734:O4|@4954,0,@4653,@4956 7735:O2|@16078,@83 7736:O1|@16079 7737:S28|5052494e545f5441424c4528292e6164644f7665726c6f6164283329 7738:S37|5052494e545f5441424c4528292e6164644f7665726c6f616428332966696c746572283129 7739:O2|@7741,@7740 7740:O2|@7745,0 7741:O3|13,@7290,@7742 7742:O3|@7744,@7743,0 7743:O1|@4684 7744:O2|8,@7487 7745:O3|13,@7290,@7746 7746:O3|@7747,@7743,0 7747:O2|8,@7504 7748:O4|11,@7749,0,0 7749:O2|8,@4614 7750:O2|@7751,0 7751:O4|3,@4684,@4683,@7553 7752:O2|8,@7502 7753:O4|3,@5175,@4684,@4786 7754:O2|@5044,@7755 7755:O2|@7757,@7756 7756:O2|@5175,@7758 7757:O2|8,@5054 7758:O2|@4684,@7759 7759:O2|@4686,0 7760:O1|@16080 7761:O1|@16081 7762:S11|766563746f722d6c6f6f70 7763:O4|@16,@4583,@7765,@7764 7764:O5|@4715,520,0,520,0 7765:S36|6d6b4d757475616c446563733a20656d707479206465636c61726174696f6e206c697374 7766:O1|@16082 7767:O4|@16,@4583,@7769,@7768 7768:O5|@4715,524,0,524,0 7769:S53|6d6b4d757475616c446563733a20526563757273697665206465636c61726174696f6e206973206e6f7420612066756e6374696f6e 7770:O4|1,0,1,@7771 7771:O3|21,@4686,8 7772:O4|1,0,0,@7773 7773:O3|21,@4684,8 7774:O2|@4689,0 7775:O4|3,@5044,@5045,@4786 7776:O1|@16083 7777:S9|766563746f722d6571 7778:O1|@16084 7779:S11|766563746f722d65712829 7780:O1|@16085 7781:O1|@16086 7782:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129 7783:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129283129 7784:O1|@16087 7785:S12|626f7865642d766563746f72 7786:O1|@16088 7787:S11|73697a652d766563746f72 7788:O3|@7789,@4655,@4760 7789:S6|766563746f72 7790:O1|@16089 7791:O3|15,@7793,@7792 7792:O4|5,@7775,@7795,@4689 7793:O2|@7772,@7794 7794:O2|@7770,0 7795:O3|15,@7797,@7796 7796:O5|4,1,@7757,@7801,@7800 7797:O2|@7798,0 7798:O4|1,0,2,@7799 7799:O4|3,@7308,@5044,@7555 7800:O3|@4684,@5406,0 7801:O3|@4686,@5406,0 7802:S13|62797465566563746f722d6571 7803:O1|@16090 7804:O2|@5389,@7805 7805:O2|@4683,0 7806:O3|@7807,@4655,@4760 7807:S10|62797465566563746f72 7808:O2|@7810,@7809 7809:O2|@7811,0 7810:S5|6172726179 7811:O4|@7810,@7813,@4653,@7812 7812:O3|@7816,@7833,@7815 7813:O2|@7814,0 7814:O2|@84,79992 7815:O3|@7834,@4655,@4760 7816:O2|1,@7817 7817:O3|6,@7819,@7818 7818:O2|@7824,0 7819:O4|@7821,@85,@7823,@7820 7820:O1|@16094 7821:O1|@16091 7822:O1|@16092 7823:O1|@16093 7824:O4|@25,@4162,@7825,0 7825:O3|3,4,@7826 7826:O5|@15289,@7828,@5393,@7827,@4707 7827:O4|@7819,@7821,@7823,@7820 7828:O2|@15291,@7829 7829:O2|@5378,@7830 7830:O2|@7831,@5382 7831:O2|@7832,@4719 7832:O3|0,@85,0 7833:O4|1,@86,1,0 7834:S11|41727261792e6172726179 7835:O2|@7810,@7836 7836:O2|@7837,0 7837:O4|@7810,@7839,@4653,@7838 7838:O3|@7842,@7859,@7841 7839:O2|@7840,0 7840:O2|@87,79992 7841:O3|@7860,@4655,@4760 7842:O2|1,@7843 7843:O3|6,@7845,@7844 7844:O2|@7850,0 7845:O4|@7847,@88,@7849,@7846 7846:O1|@16098 7847:O1|@16095 7848:O1|@16096 7849:O1|@16097 7850:O4|@25,@4162,@7851,0 7851:O3|3,4,@7852 7852:O5|@15289,@7854,@5393,@7853,@4707 7853:O4|@7845,@7847,@7849,@7846 7854:O2|@15291,@7855 7855:O2|@5378,@7856 7856:O2|@7857,@5382 7857:O2|@7858,@4719 7858:O3|0,@88,0 7859:O4|1,@89,1,0 7860:S12|4172726179322e6172726179 7861:O2|@7863,@7862 7862:O2|@7864,0 7863:S9|627974654172726179 7864:O4|@7863,0,@4653,@7865 7865:O3|@7867,@7884,@7866 7866:O3|@7863,@4655,@4760 7867:O2|1,@7868 7868:O3|6,@7870,@7869 7869:O2|@7872,0 7870:O4|@7871,@90,2,1 7871:O1|@16099 7872:O4|@25,@4162,@7873,0 7873:O3|3,4,@7874 7874:O5|@15289,@7876,@4719,@7875,@4707 7875:O2|@7870,@7871 7876:O2|@15291,@7877 7877:O2|@4779,@7878 7878:O2|@7880,@7879 7879:O2|@7882,@4742 7880:O2|@7881,@4719 7881:O3|0,@90,0 7882:O2|@7883,@4719 7883:O3|0,2,0 7884:O4|1,@91,0,0 7885:S2|3c3e 7886:O2|3,6 7887:O1|@16100 7888:S6|506f6c794d4c 7889:O1|@16101 7890:S9|4e616d655370616365 7891:O1|@16102 7892:S6|56616c756573 7893:O1|@16103 7894:S11|54797065436f6e73747273 7895:O1|@16104 7896:S7|496e6669786573 7897:O1|@16105 7898:S10|53747275637475726573 7899:O1|@16106 7900:S10|5369676e617475726573 7901:O1|@16107 7902:S8|46756e63746f7273 7903:O1|@16108 7904:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f747970655072696e746572283129 7905:O2|@5206,@7805 7906:O3|@7907,@4655,@4760 7907:S29|506f6c794d4c2e4e616d6553706163652e56616c7565732e76616c7565 7908:S5|76616c7565 7909:O3|@7910,@4655,@4760 7910:S38|506f6c794d4c2e4e616d6553706163652e56616c7565732e7479706545787072657373696f6e 7911:S14|7479706545787072657373696f6e 7912:O3|@7913,@4655,@4760 7913:S39|506f6c794d4c2e4e616d6553706163652e54797065436f6e737472732e74797065436f6e737472 7914:S10|74797065436f6e737472 7915:O3|@7916,@4655,@4760 7916:S31|506f6c794d4c2e4e616d6553706163652e496e66697865732e666978697479 7917:S6|666978697479 7918:O3|@7919,@4655,@4760 7919:S40|506f6c794d4c2e4e616d6553706163652e5369676e6174757265732e7369676e617475726556616c 7920:S12|7369676e617475726556616c 7921:O3|@7922,@4655,@4760 7922:S40|506f6c794d4c2e4e616d6553706163652e537472756374757265732e73747275637475726556616c 7923:S12|73747275637475726556616c 7924:O3|@7925,@4655,@4760 7925:S36|506f6c794d4c2e4e616d6553706163652e46756e63746f72732e66756e63746f7256616c 7926:S10|66756e63746f7256616c 7927:S3|56616c 7928:S4|54797065 7929:S3|466978 7930:S6|537472756374 7931:S3|536967 7932:S5|46756e6374 7933:O1|@16109 7934:S3|616c6c 7935:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296372656174654669656c6473283229 7936:S5|656e746572 7937:O1|@16110 7938:S40|545950455f5452454528292e6d6b4c6162656c456e74727928332973747269705a65726f73283129 7939:S6|6c6f6f6b7570 7940:O1|@16111 7941:O1|@16112 7942:O1|@16113 7943:S25|545950455f5452454528292e736f72744c6162656c73283129 7944:S35|545950455f5452454528292e736f72744c6162656c73283129656e7465722833292829 7945:O1|@16114 7946:O3|@7947,@4655,@4760 7947:S26|506f6c794d4c2e4e616d6553706163652e6e616d655370616365 7948:S9|6e616d655370616365 7949:S6|76616c756573 7950:S5|6669786573 7951:S5|7479706573 7952:S10|73747275637475726573 7953:S10|7369676e617475726573 7954:S8|66756e63746f7273 7955:O1|@16115 7956:O2|@7958,@7957 7957:O2|@7959,0 7958:S8|6c6f636174696f6e 7959:O4|@7958,0,@4653,@7960 7960:O3|@4801,@7962,@7961 7961:O3|@7985,@4655,@4760 7962:O3|2,0,@7963 7963:O3|3,@7965,@7964 7964:O3|0,@7980,1 7965:O2|@7967,@7966 7966:O2|@7970,@7969 7967:O2|@7968,@7356 7968:S4|66696c65 7969:O2|@7973,@7972 7970:O2|@7971,@4762 7971:S7|656e644c696e65 7972:O2|@7976,@7975 7973:O2|@7974,@4762 7974:S9|73746172744c696e65 7975:O2|@7978,0 7976:O2|@7977,@4762 7977:S11|656e64506f736974696f6e 7978:O2|@7979,@4762 7979:S13|7374617274506f736974696f6e 7980:O2|@7968,@7981 7981:O2|@7971,@7982 7982:O2|@7974,@7983 7983:O2|@7977,@7984 7984:O2|@7979,0 7985:S15|506f6c794d4c2e6c6f636174696f6e 7986:O1|@16116 7987:S17|4465627567676572496e74657266616365 7988:O3|@7989,@4655,@4760 7989:S41|506f6c794d4c2e4465627567676572496e746572666163652e6c6f636174696f6e50726f704c697374 7990:S16|6c6f636174696f6e50726f704c697374 7991:O3|@7992,@4655,@4760 7992:S31|506f6c794d4c2e4465627567676572496e746572666163652e747970654964 7993:S6|747970654964 7994:O3|@7995,@4655,@4760 7995:S36|506f6c794d4c2e4465627567676572496e746572666163652e6d616368696e65576f7264 7996:S11|6d616368696e65576f7264 7997:O3|@7998,@4655,@4760 7998:S34|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065 7999:S9|6c6f63616c54797065 8000:O3|@8001,@4655,@4760 8001:S40|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065436f6e737472 8002:S15|6c6f63616c54797065436f6e737472 8003:O3|@8004,@4655,@4760 8004:S33|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c536967 8005:S8|6c6f63616c536967 8006:O3|@8007,@4655,@4760 8007:S37|506f6c794d4c2e4465627567676572496e746572666163652e656e7669726f6e456e747279 8008:S12|656e7669726f6e456e747279 8009:O5|5,0,@7958,@7959,@4653 8010:S14|456e76456e6446756e6374696f6e 8011:S12|456e76457863657074696f6e 8012:S16|456e76537461727446756e6374696f6e 8013:S12|456e76537472756374757265 8014:S10|456e7654436f6e737472 8015:S9|456e76547970656964 8016:S10|456e7656436f6e737472 8017:S8|456e7656616c7565 8018:O1|@16117 8019:O1|@16133 8020:S34|44415441545950455f52455028292e63686f6f7365436f6e73747252657072283329 8021:O1|@16118 8022:O1|@16119 8023:O1|@16121 8024:S30|44415441545950455f52455028292e6765745475706c654b696e64283129 8025:O4|@16,@4583,@8027,@8026 8026:O5|@8028,1594,0,1594,0 8027:S35|6d616b654571756976616c656e743a204e6f74206120747970652066756e6374696f6e 8028:S32|6d6c736f757263652f4d4c436f6d70696c65722f545950455f545245452e4d4c 8029:S38|545950455f5452454528292e6d616b654571756976616c656e74283229676574417267283129 8030:O1|@16126 8031:S30|545950455f5452454528292e67656e6572616c6973655479706573283329 8032:O1|@16124 8033:S44|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129 8034:O1|@16123 8035:O4|101,@8038,0,@8037 8036:S36|545950455f5452454528292e67656e6572616c6973655479706573283329747673283129 8037:O5|@8028,90,0,90,0 8038:S5|4d61746368 8039:S47|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129283129 8040:O1|@16125 8041:S40|545950455f5452454528292e67656e6572616c6973655479706573283329636f706965642d283129 8042:O1|@16130 8043:S23|545950455f5452454528292e636f707954797065283329 8044:O1|@16127 8045:O1|@16128 8046:S23|545950455f5452454528292e6576656e7475616c283129 8047:S39|545950455f5452454528292e6576656e7475616c283129616464546f496e7374616e6365283229 8048:O4|@16,@4583,@8050,@8049 8049:O5|@8028,776,0,776,0 8050:S27|636f7079547970653a204f7665726c6f616453657420666f756e64 8051:O1|@16129 8052:S40|545950455f5452454528292e636f707954797065283329636f70795265636f72644c697374283129 8053:S34|545950455f5452454528292e636f707954797065283329636f70794c697374283129 8054:O2|@5206,@4683 8055:O1|@16131 8056:S10|626f7865642f73697a65 8057:O1|@16132 8058:O1|@16139 8059:S47|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f736552657072283129 8060:O1|@16134 8061:O1|@16135 8062:O1|@16136 8063:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707231283329 8064:O1|@16137 8065:O1|@16138 8066:S60|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963726561746552657072283229 8067:O1|@16140 8068:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707232283329 8069:O1|@16141 8070:O2|@8009,0 8071:O3|@8072,@4655,@4760 8072:S35|506f6c794d4c2e4465627567676572496e746572666163652e64656275675374617465 8073:S10|64656275675374617465 8074:S9|6d616b6556616c7565 8075:O1|@16142 8076:S24|44454255474745525f28292e6d616b6556616c7565283129 8077:O1|@16159 8078:S27|44454255474745525f28292e6d616b6556616c7565283129283129 8079:O1|@16145 8080:S35|44454255474745525f28292e72756e54696d6554797065283229636f70794964283129 8081:O2|@8095,@7905 8082:S25|44454255474745525f28292e73656172636854797065283429 8083:O4|@16,@4583,@8086,@8085 8084:S33|44454255474745525f28292e736561726368547970652834296d61746368283129 8085:O5|@8087,160,0,160,0 8086:S24|736561726368547970653a205479706546756e6374696f6e 8087:S33|6d6c736f757263652f4d4c436f6d70696c65722f44454255474745525f2e736d6c 8088:O1|@16147 8089:S25|44454255474745525f28292e736561726368456e7673283329 8090:O1|@16148 8091:S21|636f6465466f72556e6971756549642d657175616c 8092:O4|@16,@4583,@8094,@8093 8093:O5|@4896,347,0,347,0 8094:S18|6973457175616c6974793a2054797065466e 8095:O4|0,@4868,@8096,@4683 8096:O2|12,@8097 8097:O8|@8099,@8098,0,0,@5205,1,0,1 8098:S13|7072696e742d64656661756c74 8099:O3|6,@4667,0 8100:O1|@16152 8101:S29|44454255474745525f28292e72756e54696d6554797065283229283129 8102:O1|@16150 8103:S32|44454255474745525f28292e72756e54696d6554797065283229283129283129 8104:O1|@16151 8105:O1|@16157 8106:S38|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529 8107:O1|@16154 8108:S53|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129 8109:S56|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129283129 8110:O1|@16155 8111:O1|@16156 8112:S27|5554494c49544945535f28292e73706c6974537472696e67283229 8113:O1|@16158 8114:S27|545950455f5452454528292e657175616c54797065496473283229 8115:S40|545950455f5452454528292e657175616c54797065496473283229657175616c5479706573283229 8116:S13|6d616b65457863657074696f6e 8117:O1|@16160 8118:S28|44454255474745525f28292e6d616b65457863657074696f6e283129 8119:O1|@16166 8120:S31|44454255474745525f28292e6d616b65457863657074696f6e283129283129 8121:O1|@16165 8122:O1|@16164 8123:S15|6d616b65436f6e7374727563746f72 8124:O1|@16167 8125:S30|44454255474745525f28292e6d616b65436f6e7374727563746f72283129 8126:O1|@16173 8127:S33|44454255474745525f28292e6d616b65436f6e7374727563746f72283129283129 8128:O1|@16172 8129:O1|@16171 8130:S18|6d616b65416e6f6e796d6f757356616c7565 8131:O1|@16174 8132:S33|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129 8133:O1|@16180 8134:S36|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129283129 8135:O1|@16179 8136:O1|@16178 8137:S13|6d616b65537472756374757265 8138:O1|@16181 8139:S28|44454255474745525f28292e6d616b65537472756374757265283129 8140:S31|44454255474745525f28292e6d616b65537472756374757265283129283129 8141:O3|@4062,@4655,@4760 8142:S40|44454255474745525f28292e6d616b65537472756374757265283529676574467265654964283129 8143:O1|@16185 8144:S29|545950455f5452454528292e636f6d706f73654d617073283129283129 8145:O1|@16186 8146:S26|545950455f5452454528292e636f6d706f73654d617073283329 8147:O1|@16191 8148:S33|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129 8149:S42|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f70794964283129 8150:O1|@16190 8151:S48|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129 8152:O1|@16189 8153:S51|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129283129 8154:S14|6d616b6554797065436f6e737472 8155:O1|@16192 8156:S29|44454255474745525f28292e6d616b6554797065436f6e737472283129 8157:S32|44454255474745525f28292e6d616b6554797065436f6e737472283129283129 8158:S9|756e697456616c7565 8159:O7|@4062,2,@4801,@7315,0,0,0 8160:O2|@7356,@8070 8161:S10|7365744f6e456e747279 8162:O2|@16194,@92 8163:S25|44454255474745525f28292e7365744f6e456e747279283129 8164:O1|@16196 8165:S22|44454255474745525f28292e77726170283129283129 8166:S19|44454255474745525f28292e77726170283229 8167:S9|7365744f6e45786974 8168:O2|@16197,@93 8169:S24|44454255474745525f28292e7365744f6e45786974283129 8170:O3|2,@7468,@7315 8171:S18|7365744f6e45786974457863657074696f6e 8172:O2|@16199,@94 8173:S33|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129 8174:S36|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129283129 8175:O2|@8009,@8176 8176:O2|@8177,0 8177:O5|5,@8178,@5350,@5351,@4653 8178:O2|@4870,0 8179:S15|7365744f6e427265616b506f696e74 8180:O2|@16202,@95 8181:S30|44454255474745525f28292e7365744f6e427265616b506f696e74283129 8182:O2|@8184,@8183 8183:O2|@8186,@8185 8184:S7|636f6e74657874 8185:O2|@8245,@8244 8186:O4|@8184,0,@4653,@8187 8187:O3|@8189,@8242,@8188 8188:O3|@8243,@4655,@4760 8189:O2|1,@8190 8190:O3|6,@8192,@8191 8191:O2|@8221,0 8192:O4|@8193,@96,3,1 8193:O1|@16204 8194:S5|6e6f2d6571 8195:O1|@16205 8196:O5|0,0,0,@4653,@8218 8197:S13|7072696e742d636f6e74657874 8198:O2|@8199,0 8199:O2|3,@8200 8200:S4|2e2e2e7d 8201:O2|@8202,0 8202:O2|3,@4218 8203:O2|3,@8204 8204:S15|7374617274506f736974696f6e203d 8205:O2|3,@8206 8206:S11|73746172744c696e65203d 8207:O2|3,@8208 8208:S6|66696c65203d 8209:O2|3,@8210 8210:S13|656e64506f736974696f6e203d 8211:O2|3,@8212 8212:S9|656e644c696e65203d 8213:O2|3,@4216 8214:O5|0,0,0,@4653,@8215 8215:O2|@8216,0 8216:O2|3,@8217 8217:S15|436f6e746578744c6f636174696f6e 8218:O2|@8219,0 8219:O2|3,@8220 8220:S15|436f6e7465787450726f7065727479 8221:O4|@25,@4162,@8222,0 8222:O3|3,4,@8223 8223:O6|@15283,@4708,@8225,@8232,@8224,@4707 8224:O12|@8234,@8237,@8238,@8236,@8235,@8239,@8240,@8241,@8233,@8193,@96,@8192 8225:O2|@15291,@8226 8226:O2|@8228,@8227 8227:O2|@8231,@4739 8228:O2|@5203,@8229 8229:O3|1,@8230,@4720 8230:O8|@4689,@8194,0,0,@7612,0,0,1 8231:O2|@5209,@4719 8232:O11|2,2,2,2,2,2,2,2,2,1,2 8233:O3|@8239,@8240,@8241 8234:O3|@8192,@8235,@8233 8235:O3|@8237,@8238,@8236 8236:O1|@16208 8237:O1|@16206 8238:O1|@16207 8239:O1|@16209 8240:O1|@16210 8241:O1|@16211 8242:O4|1,@97,0,0 8243:S14|506f6c794d4c2e636f6e74657874 8244:O2|@8290,0 8245:O7|@8217,@5009,@8247,@8246,@4653,0,0 8246:O3|2,@8273,@8272 8247:O2|1,@8248 8248:O3|6,@8235,@8249 8249:O2|@8250,0 8250:O4|@25,@4162,@8251,0 8251:O3|3,3,@8252 8252:O6|@15283,@4708,@8253,@8232,@8224,@4707 8253:O2|@15291,@8254 8254:O2|@8256,@8255 8255:O2|@8264,@8263 8256:O2|@4781,@8257 8257:O3|1,@8258,@4720 8258:O8|@8260,@8217,0,0,@8259,0,0,1 8259:O2|@8261,0 8260:O4|19,0,@5039,1 8261:O2|1,@8262 8262:O2|@5049,0 8263:O2|@8269,0 8264:O2|@5030,@8265 8265:O3|1,@8266,@4720 8266:O8|@8267,@8217,0,0,@4787,0,0,1 8267:O3|20,@8268,1 8268:O2|@4689,@5344 8269:O2|@5053,@8270 8270:O3|1,@8271,@4720 8271:O8|@5066,@8217,0,0,@4787,0,0,1 8272:O5|5,0,@8184,@8186,@4653 8273:O5|5,0,@7958,@8274,@4653 8274:O4|@7958,0,@4653,@8275 8275:O3|@4801,@8276,@7961 8276:O3|2,0,@8277 8277:O3|3,@8278,@7964 8278:O2|@8280,@8279 8279:O2|@8283,@8282 8280:O2|@7968,@8281 8281:O5|5,0,@4954,@7734,0 8282:O2|@8286,@8285 8283:O2|@7971,@8284 8284:O5|5,0,@4651,@4794,0 8285:O2|@8288,@8287 8286:O2|@7974,@8284 8287:O2|@8289,0 8288:O2|@7977,@8284 8289:O2|@7979,@8284 8290:O7|@8220,@5009,@8292,@8291,@4653,0,0 8291:O3|2,@8322,@8272 8292:O2|1,@8293 8293:O3|6,@8233,@8294 8294:O2|@8295,0 8295:O4|@25,@4162,@8296,0 8296:O3|3,3,@8297 8297:O6|@15283,@4708,@8298,@8232,@8224,@4707 8298:O2|@15291,@8299 8299:O2|@8301,@8300 8300:O2|@8306,@8305 8301:O2|@5224,@8302 8302:O3|1,@8303,@4720 8303:O8|@8304,@8220,0,0,@8259,0,0,1 8304:O4|19,1,@5039,1 8305:O2|@8313,0 8306:O2|@8308,@8307 8307:O3|1,@8309,@4720 8308:O2|1,@5145 8309:O8|@8310,@8220,0,0,@5033,0,2,1 8310:O3|15,@5036,@8311 8311:O3|20,@8312,1 8312:O2|@4683,@5042 8313:O2|@5130,@8314 8314:O3|1,@8315,@4720 8315:O8|@8316,@8220,0,0,@5056,0,2,1 8316:O3|15,@8317,@5058 8317:O2|@8319,@8318 8318:O2|@8320,0 8319:O4|1,@5063,0,@5066 8320:O4|1,@5063,1,@8321 8321:O4|11,@4684,2,1 8322:O3|3,@8323,@5102 8323:O2|@8325,@8324 8324:O2|@8326,0 8325:O2|@5107,@8281 8326:O2|@5109,@8281 8327:O2|@8329,@8328 8328:O2|@8331,@8330 8329:S6|707265747479 8330:O2|@8399,@8398 8331:O4|@8329,0,@4653,@8332 8332:O3|@8334,@8396,@8333 8333:O3|@8397,@4655,@4760 8334:O2|1,@8335 8335:O3|6,@8337,@8336 8336:O2|@8363,0 8337:O4|@8338,@98,3,1 8338:O1|@16212 8339:O2|@16213,@98 8340:O5|0,0,0,@4653,@8360 8341:S12|7072696e742d707265747479 8342:O4|0,@8343,3,1 8343:O1|@16214 8344:O5|0,0,0,@4653,@8345 8345:O2|@8346,0 8346:O2|3,@8347 8347:S11|507265747479426c6f636b 8348:O5|0,0,0,@4653,@8349 8349:O2|@8350,0 8350:O2|3,@8351 8351:S11|507265747479427265616b 8352:O5|0,0,0,@4653,@8353 8353:O2|@8354,0 8354:O2|3,@8355 8355:S15|5072657474794c696e65427265616b 8356:O5|0,0,0,@4653,@8357 8357:O2|@8358,0 8358:O2|3,@8359 8359:S12|507265747479537472696e67 8360:O2|@8361,0 8361:O2|3,@8362 8362:S21|507265747479537472696e67576974685769647468 8363:O4|@25,@4162,@8364,0 8364:O3|3,4,@8365 8365:O6|@15283,@4708,@8367,@8376,@8366,@4707 8366:O22|@8378,@8382,@8383,@8381,@8380,@8386,@8387,@8385,@8384,@8389,@8388,@8391,@8392,@8390,@8379,@8393,@8394,@8395,@8377,@8338,@98,@8337 8367:O2|@15291,@8368 8368:O2|@8370,@8369 8369:O2|@8373,@4739 8370:O2|@8371,@8229 8371:O2|1,@8372 8372:O2|2,18 8373:O2|@8374,@4719 8374:O2|1,@8375 8375:O2|2,19 8376:O21|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2 8377:O3|@8393,@8394,@8395 8378:O6|@8337,@8380,@8384,@8388,@8379,@8377 8379:O3|@8391,@8392,@8390 8380:O3|@8382,@8383,@8381 8381:O1|@16218 8382:O1|@16216 8383:O1|@16217 8384:O3|@8386,@8387,@8385 8385:O1|@16221 8386:O1|@16219 8387:O1|@16220 8388:O2|@8389,@4719 8389:O1|@16222 8390:O1|@16225 8391:O1|@16223 8392:O1|@16224 8393:O1|@16226 8394:O1|@16227 8395:O1|@16228 8396:O4|1,@99,0,0 8397:S13|506f6c794d4c2e707265747479 8398:O2|@8477,@8476 8399:O7|@8347,@8401,@8402,@8400,@4653,0,0 8400:O3|2,@8455,@8454 8401:O2|0,5 8402:O2|1,@8403 8403:O3|6,@8380,@8404 8404:O2|@8405,0 8405:O4|@25,@4162,@8406,0 8406:O3|3,3,@8407 8407:O6|@15283,@4708,@8408,@8376,@8366,@4707 8408:O2|@15291,@8409 8409:O2|@8411,@8410 8410:O2|@8416,@8415 8411:O2|@4781,@8412 8412:O3|1,@8413,@4720 8413:O8|@8414,@8347,0,0,@8259,0,0,1 8414:O4|19,0,@5039,4 8415:O2|@8441,0 8416:O2|@5030,@8417 8417:O3|1,@8418,@4720 8418:O8|@8420,@8347,0,0,@8419,0,4,1 8419:O2|@8434,0 8420:O3|15,@8422,@8421 8421:O3|20,@8428,1 8422:O2|@5038,@8423 8423:O2|@5040,@8424 8424:O2|@8426,@8425 8425:O2|@8427,0 8426:O4|1,@4706,2,@7312 8427:O4|1,@4706,3,@7339 8428:O2|@4689,@8429 8429:O2|@5044,@8430 8430:O2|@5045,@8431 8431:O2|@7757,@8432 8432:O2|@8433,0 8433:O2|8,@5341 8434:O2|1,@8435 8435:O2|@5049,@8436 8436:O2|@5050,@8437 8437:O2|@8439,@8438 8438:O2|@8440,0 8439:O3|2,2,@4706 8440:O3|2,3,@4706 8441:O2|@5053,@8442 8442:O3|1,@8443,@4720 8443:O8|@8444,@8347,0,0,@4986,0,4,1 8444:O3|15,@8446,@8445 8445:O3|20,@8429,0 8446:O2|@8319,@8447 8447:O2|@8320,@8448 8448:O2|@8450,@8449 8449:O2|@8452,0 8450:O4|1,@5063,2,@8451 8451:O4|11,@4684,3,1 8452:O4|1,@5063,3,@8453 8453:O4|11,@4684,4,1 8454:O5|5,0,@8329,@8331,@4653 8455:O3|3,@8457,@8456 8456:O3|0,@8472,1 8457:O2|@8459,@8458 8458:O2|@8461,@8460 8459:O2|@5107,@8284 8460:O2|@8464,@8463 8461:O2|@5109,@8462 8462:O5|5,0,@4872,@4930,0 8463:O2|@8468,0 8464:O2|@8466,@8465 8465:O5|5,@8467,@5114,@5112,@4653 8466:S1|33 8467:O2|@8272,0 8468:O2|@8470,@8469 8469:O5|5,@8471,@5114,@5112,@4653 8470:S1|34 8471:O2|@8454,0 8472:O2|@5107,@8473 8473:O2|@5109,@8474 8474:O2|@8466,@8475 8475:O2|@8470,0 8476:O2|@8504,@8503 8477:O7|@8351,@8401,@8479,@8478,@4653,0,0 8478:O3|2,@8499,@8454 8479:O2|1,@8480 8480:O3|6,@8384,@8481 8481:O2|@8482,0 8482:O4|@25,@4162,@8483,0 8483:O3|3,3,@8484 8484:O6|@15283,@4708,@8485,@8376,@8366,@4707 8485:O2|@15291,@8486 8486:O2|@8488,@8487 8487:O2|@8493,@8492 8488:O2|@5224,@8489 8489:O3|1,@8490,@4720 8490:O8|@8491,@8351,0,0,@8259,0,0,1 8491:O4|19,1,@5039,4 8492:O2|@8496,0 8493:O2|@8308,@8494 8494:O3|1,@8495,@4720 8495:O8|@8310,@8351,0,0,@5033,0,2,1 8496:O2|@5130,@8497 8497:O3|1,@8498,@4720 8498:O8|@8316,@8351,0,0,@5056,0,2,1 8499:O3|3,@8500,@5102 8500:O2|@8459,@8501 8501:O2|@8502,0 8502:O2|@5109,@8284 8503:O2|@8521,@8520 8504:O7|@8355,@7525,@8505,@8454,@4653,0,0 8505:O2|1,@8506 8506:O3|6,@8388,@8507 8507:O2|@8508,0 8508:O4|@25,@4162,@8509,0 8509:O3|3,2,@8510 8510:O6|@15283,@4708,@8511,@8376,@8366,@4707 8511:O2|@15291,@8512 8512:O2|@8514,@8513 8513:O2|@8518,0 8514:O2|@5203,@8515 8515:O3|1,@8516,@4720 8516:O8|@8517,@8355,0,0,@8259,0,0,1 8517:O4|19,2,@5039,4 8518:O2|@8519,@4719 8519:O3|0,@4719,0 8520:O2|@8551,0 8521:O7|@8359,@8401,@8523,@8522,@4653,0,0 8522:O3|2,@8281,@8454 8523:O2|1,@8524 8524:O3|6,@8379,@8525 8525:O2|@8526,0 8526:O4|@25,@4162,@8527,0 8527:O3|3,3,@8528 8528:O6|@15283,@4708,@8529,@8376,@8366,@4707 8529:O2|@15291,@8530 8530:O2|@8532,@8531 8531:O2|@8539,@8538 8532:O2|@8534,@8533 8533:O3|1,@8536,@4720 8534:O2|1,@8535 8535:O2|2,10 8536:O8|@8537,@8359,0,0,@8259,0,0,1 8537:O4|19,3,@5039,4 8538:O2|@8546,0 8539:O2|@8541,@8540 8540:O3|1,@8543,@4720 8541:O2|1,@8542 8542:O2|2,11 8543:O8|@8544,@8359,0,0,@4787,0,0,1 8544:O3|20,@8545,1 8545:O2|@5206,@5344 8546:O2|@8548,@8547 8547:O3|1,@8550,@4720 8548:O2|1,@8549 8549:O2|2,12 8550:O8|@5066,@8359,0,0,@4787,0,0,1 8551:O7|@8362,@8401,@8553,@8552,@4653,0,0 8552:O3|2,@8582,@8454 8553:O2|1,@8554 8554:O3|6,@8377,@8555 8555:O2|@8556,0 8556:O4|@25,@4162,@8557,0 8557:O3|3,3,@8558 8558:O6|@15283,@4708,@8559,@8376,@8366,@4707 8559:O2|@15291,@8560 8560:O2|@8562,@8561 8561:O2|@8569,@8568 8562:O2|@8564,@8563 8563:O3|1,@8566,@4720 8564:O2|1,@8565 8565:O2|2,14 8566:O8|@8567,@8362,0,0,@8259,0,0,1 8567:O4|19,4,@5039,4 8568:O2|@8577,0 8569:O2|@8571,@8570 8570:O3|1,@8573,@4720 8571:O2|1,@8572 8572:O2|2,15 8573:O8|@8574,@8362,0,0,@5033,0,2,1 8574:O3|15,@5036,@8575 8575:O3|20,@8576,1 8576:O2|@7308,@5042 8577:O2|@8579,@8578 8578:O3|1,@8581,@4720 8579:O2|1,@8580 8580:O2|2,16 8581:O8|@8316,@8362,0,0,@5056,0,2,1 8582:O3|3,@8583,@5102 8583:O2|@8325,@8501 8584:S5|7072696e74 8585:O2|3,7 8586:S10|6d616b65737472696e67 8587:O2|3,5 8588:S20|707265747479526570726573656e746174696f6e 8589:S16|6164645072657474795072696e746572 8590:O3|2,@7356,@7315 8591:S11|6164644f7665726c6f6164 8592:O2|@8594,@8593 8593:O7|@8594,2,@8596,@8595,@4653,0,0 8594:S26|73657444656661756c74496e7454797065417262697472617279 8595:O3|2,@4870,@7315 8596:O2|1,@8597 8597:O3|6,@8598,0 8598:O1|@16229 8599:S40|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973657454797065283129 8600:O2|@8602,@8601 8601:O7|@8602,2,@7528,@8603,@4653,0,0 8602:S14|736f757263654c6f636174696f6e 8603:O3|2,@7315,@8009 8604:O1|@16230 8605:S9|556e6976657273616c 8606:O1|@16231 8607:O1|@16232 8608:O1|@16233 8609:S9|626f7865642d746167 8610:O1|@16234 8611:S8|73697a652d746167 8612:O3|@8613,@4655,@4760 8613:S3|746167 8614:O3|@8615,@4655,@4760 8615:S9|756e6976657273616c 8616:O3|6,@8617,0 8617:O1|@16235 8618:S27|556e6976657273616c2e746167496e6a6563742d23696e6a656374 8619:O1|@16236 8620:S9|746167496e6a656374 8621:O3|6,@8622,0 8622:O1|@16237 8623:S29|556e6976657273616c2e74616750726f6a6563742d2370726f6a656374 8624:O1|@16238 8625:S10|74616750726f6a656374 8626:O3|6,@8627,0 8627:O1|@16239 8628:S19|556e6976657273616c2e74616749732d236973 8629:O1|@16240 8630:S5|7461674973 8631:O3|@8632,@4655,@4760 8632:S19|506f6c794d4c2e707450726f70657274696573 8633:S12|707450726f70657274696573 8634:O3|@8635,@4655,@4760 8635:S16|506f6c794d4c2e706172736554726565 8636:S9|706172736554726565 8637:S12|505466697273744368696c64 8638:S13|50546e6578745369626c696e67 8639:S8|5054706172656e74 8640:S17|505470726576696f75735369626c696e67 8641:O2|@4870,@8642 8642:O2|@8643,0 8643:O5|5,@8070,@5114,@5112,@4653 8644:S12|50547265666572656e636573 8645:S6|505474797065 8646:O2|@8647,@8009 8647:S13|50547374727563747572654174 8648:O2|@8649,@4762 8649:S7|50547265664964 8650:O2|@8652,@8651 8651:O3|2,@4762,@8454 8652:S7|50547072696e74 8653:O2|@8654,@8009 8654:S10|50546f70656e65644174 8655:O2|@8656,@4762 8656:S7|50546465664964 8657:O2|@8658,@8009 8658:S12|50546465636c617265644174 8659:O2|@8661,@8660 8660:O5|5,@8662,@5114,@5112,@4653 8661:S13|5054636f6d706c6574696f6e73 8662:O2|@7356,0 8663:O2|@8664,@8177 8664:S12|5054627265616b506f696e74 8665:O1|@16241 8666:O3|2,@7315,@8667 8667:O5|5,@7567,@5278,@5275,@4653 8668:O1|@16243 8669:S27|4d414b455f28292e757365496e746f456e76283129283129283129 8670:O1|@18640 8671:S21|4d414b455f28292e757365496e746f456e76283329 8672:S5|5573653a20 8673:S2|2d49 8674:O6|@16244,@8683,@8692,@100,@8699,@8675 8675:O3|@16252,@8701,@8692 8676:O1|@16245 8677:S17|4f532e506174682e636f6e636174283229 8678:S4|50617468 8679:O5|@8680,580,0,580,0 8680:S14|2e2f62617369732f4f532e736d6c 8681:O5|@8680,582,0,582,0 8682:S32|4f532e506174682e636f6e636174283229636f6e636174417263732832292829 8683:O7|@16246,@100,@8692,@4140,@101,@8696,@8684 8684:O1|@16250 8685:O5|@8680,400,0,400,0 8686:S19|4f532e506174682e746f537472696e67283329 8687:O5|@8680,382,0,382,0 8688:S10|496e76616c6964417263 8689:O5|@8680,385,0,385,0 8690:O1|@16247 8691:S33|4f532e506174682e746f537472696e6728332961726373546f4c696e6b73283129 8692:O1|@16248 8693:O4|0,@4062,0,0 8694:S33|4f532e506174682e6d61746368566f6c756d65507265666978506f736978283129 8695:O4|1,@4062,1,1 8696:O1|@16249 8697:S7|6f283229283129 8698:S23|4f532e506174682e76616c6964566f6c756d652d283129 8699:O1|@16251 8700:S27|4f532e506174682e746f43616e6f6e6963616c436173652d283129 8701:O1|@16254 8702:O1|@16253 8703:S21|4f532e506174682e66726f6d537472696e67283229 8704:O3|@4062,0,0 8705:S23|4f532e506174682e6973536570617261746f722d283129 8706:O2|@16255,@8701 8707:O1|@16256 8708:S23|4f532e506174682e73706c697442617365457874283229 8709:S32|4f532e506174682e73706c697442617365457874283229676574457874283129 8710:O1|@8711 8711:S3|353731 8712:O1|@16257 8713:S22|4f532e506174682e6a6f696e42617365457874283229 8714:O1|@16258 8715:S13|54657874494f2e6f70656e496e 8716:O5|@8717,290,0,290,0 8717:S18|2e2f62617369732f54657874494f2e736d6c 8718:O1|@16259 8719:S25|4d414b455f28292e636f6d70696c65496e746f456e76283129 8720:O1|@16275 8721:O1|@16278 8722:O1|@16281 8723:O1|@16284 8724:O1|@16287 8725:O1|@16290 8726:S25|4d414b455f28292e6462456e76416c6c283129283129283129 8727:O1|@16293 8728:O1|@16296 8729:O1|@16299 8730:O1|@16302 8731:O1|@16305 8732:O1|@16308 8733:O1|@16309 8734:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283129 8735:O5|@4620,264,0,264,0 8736:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329 8737:O1|@16311 8738:S41|4d414b455f28292e636f6d70696c65496e746f456e7628312975736528332967657443686172283129 8739:O1|@16312 8740:S32|4261736963496d7065726174697665494f28292e696e70757431283129283129 8741:O1|@16313 8742:S29|426173696353747265616d494f28292e696e7075744e4c697374283329 8743:O1|@16314 8744:S30|426173696353747265616d494f28292e696e7075744e4c69737427283129 8745:O5|@4405,140,0,140,0 8746:S30|426173696353747265616d494f28292e696e7075744e4c69737427283429 8747:O2|@4062,0 8748:S5|696e707574 8749:S39|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329636f64652d283129 8750:O2|@8752,@8751 8751:O2|@5436,@8772 8752:O4|@102,@4162,@8753,0 8753:O1|@16316 8754:S5|20696e2027 8755:S43|4d414b455f28292e636f6d70696c65496e746f456e762831297573652833296572726f7250726f63283129 8756:S6|4572726f722d 8757:S8|5761726e696e672d 8758:O1|@16317 8759:O4|101,@8038,0,@8768 8760:S19|5072657474792e75676c795072696e74283129 8761:O4|101,@8038,0,@8762 8762:O5|@8763,98,0,98,0 8763:S30|6d6c736f757263652f4d4c436f6d70696c65722f5072657474792e736d6c 8764:O1|@16318 8765:O4|101,@8038,0,@8766 8766:O5|@8763,108,0,108,0 8767:O1|@16319 8768:O5|@8763,118,0,118,0 8769:O2|@4103,0 8770:S2|2e0a 8771:S8|272c206c696e6520 8772:O2|@8774,@8773 8773:O2|@5463,@8775 8774:O4|@65,@4162,1,0 8775:O2|@8777,@8776 8776:O2|@8791,@8790 8777:O4|@103,@4162,@8778,0 8778:O1|@16320 8779:O1|@16322 8780:S24|5072657474792e7072657474795072696e74283129283129 8781:O2|@16321,@18932 8782:S15|54657874494f2e7072696e74283129 8783:O1|@16323 8784:S21|5072657474792e7072657474795072696e74283329 8785:O1|@16325 8786:S30|5072657474792e7072657474795072696e742833296c61794f7574283329 8787:O1|@16324 8788:S31|5072657474792e7072657474795072696e7428332967657453697a65283229 8789:S40|5072657474792e7072657474795072696e742833296c61794f7574283329646f5072696e74283229 8790:O2|@5440,@8793 8791:O4|@62,@4162,@8792,0 8792:O1|@16326 8793:O2|@5442,@8794 8794:O2|@5450,@8795 8795:O2|@5444,@8796 8796:O2|@5448,0 8797:O4|@70,@4162,@8798,0 8798:O1|@16327 8799:O1|@16328 8800:O1|@16329 8801:O5|@14715,255,0,255,0 8802:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283329 8803:O2|@16330,@102 8804:O1|@16331 8805:S17|4c45585f28292e696e697469616c283329 8806:O4|103,@4629,@8809,@8808 8807:S37|4c45585f28292e696e697469616c2833296572726f724d65737361676550726f632d283129 8808:O5|@8810,99,0,99,0 8809:S20|4572726f7220696e20736f7572636520636f6465 8810:S27|6d6c736f757263652f4d4c436f6d70696c65722f4c45585f2e4d4c 8811:O1|@16332 8812:O1|@16333 8813:S31|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429 8814:O1|@16335 8815:O1|@16337 8816:S42|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429676c6f62616c732d283129 8817:S34|756e657870656374656420656e64206f662066696c6520656e636f756e7465726564 8818:O1|@16338 8819:S15|436861722e69735370616365283129 8820:O1|@16339 8821:O1|@16340 8822:S16|537472696e672e746f6b656e73283229 8823:S23|537472696e672e746f6b656e73283229746f6b27283229 8824:O1|@16341 8825:O2|@5658,0 8826:S32|4c45585f28292e627265616b576f726473283129616464427265616b73283129 8827:O4|@16,@4583,@8829,@8828 8828:O5|@8810,600,0,600,0 8829:S11|656e64206f662066696c65 8830:O2|@16342,@104 8831:S19|756e6b6e6f776e206368617261637465722022 8832:S20|4c45585f28292e7061727365546f6b656e283129 8833:S16|756e6b6e6f776e2073796d626f6c202e 8834:S17|756e6b6e6f776e2073796d626f6c202e2e 8835:O1|@16343 8836:O1|@16344 8837:S22|4c45585f28292e7061727365436f6d6d656e74283129 8838:S28|656e64206f662066696c6520666f756e6420696e20636f6d6d656e74 8839:S36|4c45585f28292e7061727365436f6d6d656e74283129736b6970436f6d6d656e74283129 8840:O1|@16345 8841:S36|6e6f206d61746368696e672071756f746520666f756e64206f6e2074686973206c696e65 8842:S21|4c45585f28292e7061727365537472696e67283129 8843:O1|@16346 8844:S16|20666f756e6420696e20737472696e67 8845:S33|4c45585f28292e7061727365537472696e67283129676574537472696e67283129 8846:S21|756e65787065637465642063686172616374657220 8847:S11|20696e205c202e2e2e205c 8848:S9|456e644f664c696e65 8849:O5|@8810,350,0,350,0 8850:O5|@8810,389,0,389,0 8851:S22|756e7072696e7461626c652063686172616374657220 8852:O1|@16347 8853:S20|3a3d3c3e2b2a215e2f7c26257e2d3f60405c2423 8854:S27|436861722e636f6e7461696e732831296d61746368283129283129 8855:O1|@16348 8856:O3|0,@8866,@8865 8857:S20|4c45585f28292e70617273654964656e74283329 8858:O1|@16349 8859:O1|@16350 8860:S19|4c45585f28292e726561644368617273283329 8861:S26|4c45585f28292e7265616443686172732833296c6f6f70283129 8862:O1|@16351 8863:S24|4c45585f28292e6973416c7068614e756d65726963283129 8864:S21|696e76616c6964206964656e746966696572202d20 8865:O200|0,0,0,0,0,0,@8868,@8870,@8872,0,@8874,0,0,0,0,0,0,0,0,@8875,@8876,0,0,0,0,@8878,0,0,@8880,0,0,0,0,0,0,@8882,0,0,0,0,0,0,@8883,0,0,0,0,0,0,0,0,0,0,0,0,0,@8884,0,@8886,0,@8887,@8889,0,0,0,0,0,0,0,0,@8890,@8892,@8894,0,0,@8896,0,@8897,0,@8899,0,0,0,0,@8900,0,0,@8902,@8904,@8906,@8908,@8909,@8911,@8913,@8914,@8916,0,@8918,@8920,@8922,0,0,@8923,0,@8925,0,0,0,0,0,0,@8927,0,0,0,@8929,0,0,0,0,0,0,@8931,@8932,@8933,0,0,0,0,0,0,0,0,0,0,@8935,@8936,@8938,0,0,0,0,0,0,0,0,0,@8940,0,0,0,0,0,0,0,@8942,0,0,0,0,0,0,0,0,0,0,0,@8944,0,0,0,@8946,0,0,@8947,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@8949,0,0,0,0,0,0,0,0,@8867 8866:O2|@15222,200 8867:O2|@8951,63 8868:O2|@8869,29 8869:S6|696e66697872 8870:O2|@8871,36 8871:S6|6e6f6e666978 8872:O2|@8873,28 8873:S5|696e666978 8874:O2|@5670,65 8875:O2|@5538,25 8876:O2|@8877,49 8877:S7|73686172696e67 8878:O2|@8879,37 8879:S2|6f66 8880:O2|@8881,12 8881:S8|6461746174797065 8882:O2|@4128,23 8883:O2|@4135,6 8884:O2|@8885,7 8885:S4|63617365 8886:O2|@4151,9 8887:O2|@8888,1 8888:S7|61627374797065 8889:O2|@4154,17 8890:O2|@8891,51 8891:S9|7369676e6174757265 8892:O2|@8893,44 8893:S3|726563 8894:O2|@8895,19 8895:S2|666e 8896:O2|@5639,26 8897:O2|@8898,13 8898:S2|646f 8899:O2|@5587,4 8900:O2|@8901,42 8901:S5|7261697365 8902:O2|@8903,18 8903:S9|657863657074696f6e 8904:O2|@8905,22 8905:S6|68616e646c65 8906:O2|@8907,61 8907:S3|76616c 8908:O2|@4188,60 8909:O2|@8910,54 8910:S9|737472756374757265 8911:O2|@8912,10 8912:S2|3a3e 8913:O2|@6460,56 8914:O2|@8915,59 8915:S4|74797065 8916:O2|@8917,38 8917:S2|6f70 8918:O2|@8919,50 8919:S3|736967 8920:O2|@8921,16 8921:S6|657174797065 8922:O2|@5641,34 8923:O2|@8924,5 8924:S2|6173 8925:O2|@8926,66 8926:S8|7769746874797065 8927:O2|@8928,20 8928:S3|66756e 8929:O2|@8930,35 8930:S5|6c6f63616c 8931:O2|@4217,62 8932:O2|@5540,55 8933:O2|@8934,40 8934:S6|6f72656c7365 8935:O2|@5542,14 8936:O2|@8937,27 8937:S7|696e636c756465 8938:O2|@8939,64 8939:S5|7768696c65 8940:O2|@8941,21 8941:S7|66756e63746f72 8942:O2|@8943,53 8943:S6|737472756374 8944:O2|@8945,2 8945:S3|616e64 8946:O2|@5637,15 8947:O2|@8948,39 8948:S4|6f70656e 8949:O2|@8950,3 8950:S7|616e64616c736f 8951:S5|7768657265 8952:O1|@16352 8953:S2|457e 8954:S21|4c45585f28292e70617273654e756d626572283229 8955:O1|@16353 8956:S15|436861722e69734469676974283129 8957:S3|307778 8958:O1|@16354 8959:S18|436861722e69734865784469676974283129 8960:S2|3077 8961:S23|6d616c666f726d6564207265616c206e756d6265723a20 8962:O1|@8963 8963:O1|@16355 8964:O6|0,0,0,0,0,0 8965:S34|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429283129 8966:O1|@16356 8967:S26|5554494c49544945535f28292e7365617263684c697374283229 8968:O1|@16359 8969:S34|5554494c49544945535f28292e7365617263684c6973742832296170706c79283129 8970:S41|5554494c49544945535f28292e7365617263684c6973742832296170706c792831296170706c283129 8971:S34|5554494c49544945535f28292e7365617263684c697374283229656e746572283129 8972:S35|5554494c49544945535f28292e7365617263684c6973742832296c6f6f6b7570283129 8973:S24|4d6973632e6c6f6f6b757044656661756c74283229283129 8974:O1|@16362 8975:S15|53796d5365742e2b2b283229283129 8976:O1|@16363 8977:O1|@16612 8978:S23|50415253455f44454328292e7061727365446563283329 8979:O1|@16365 8980:S36|50415253455f44454328292e7061727365446563283329676c6f62616c456e762d283129 8981:S31|467265652074797065207661726961626c6573206e6f7420616c6c6f776564 8982:O1|@16367 8983:O1|@16368 8984:O1|@16496 8985:S38|50415253455f44454328292e70617273654465632833297061727365546f7044656373283229 8986:O3|@16369,@9128,@8987 8987:O2|@16479,@8986 8988:S38|50415253455f44454328292e7061727365446563283329737472756374757265446563283329 8989:O1|@16371 8990:O1|@16462 8991:S49|50415253455f44454328292e7061727365446563283329737472756374757265446563283329646f537472446563283229 8992:O1|@16373 8993:O1|@16374 8994:O2|@4062,@8997 8995:S17|534b4950535f28292e6765746964283429 8996:S10|4964656e746966696572 8997:O5|@4062,0,0,0,0 8998:O1|@16375 8999:O1|@16376 9000:S28|5554494c49544945535f28292e636865636b466f72446f7473283329 9001:S13|20696c6c6567616c2068657265 9002:S36|5554494c49544945535f28292e636865636b466f72446f7473283329636865636b283129 9003:S15|7175616c6966696564206e616d6520 9004:O2|@16378,@9005 9005:O2|@16419,@9004 9006:O1|@16383 9007:S40|50415253455f44454328292e706172736544656328332970617273655369676e6174757265283329 9008:O1|@16379 9009:S18|5374617274206f66207369676e6174757265 9010:O1|@16380 9011:S18|534b4950535f28292e736b69706f6e283429 9012:S5|6572726f72 9013:O4|@16,@4583,@9087,@9086 9014:S56|50415253455f44454328292e706172736544656328332970617273655369676e617475726528332967657457686572655479706573283229 9015:O1|@16384 9016:O1|@16391 9017:S37|50415253455f44454328292e70617273654465632833296765745479706556617273283229 9018:O1|@16385 9019:O1|@16388 9020:S50|50415253455f44454328292e7061727365446563283329676574547970655661727328322967657454797065566172283229 9021:O1|@16387 9022:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283129 9023:S23|2068617320616c7265616479206265656e20757365642e 9024:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283229 9025:O1|@16389 9026:S19|534b4950535f28292e62616473796d73283229 9027:S15|3c776f726420636f6e7374616e743e 9028:S15|53796d626f6c732e72657072283129 9029:S15|3c6368617220636f6e7374616e743e 9030:S12|3c6964656e7469666965723e 9031:S18|3c696e746567657220636f6e7374616e743e 9032:S14|756e6b6e6f776e2073796d626f6c 9033:S15|3c7265616c20636f6e7374616e743e 9034:S17|3c737472696e6720636f6e7374616e743e 9035:S17|3c74797065206964656e7469666965723e 9036:O1|@16390 9037:S20|53796d5365742e747970654964656e742d283129 9038:S19|534b4950535f28292e74657374666f72283329 9039:O1|@16393 9040:S16|53796d5365742e6964656e742d283129 9041:O1|@16394 9042:S39|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329 9043:S42|20686173206e6f74206265656e206465636c6172656420696e2074797065206465636c61726174696f6e 9044:S42|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329283129 9045:O1|@16396 9046:O1|@16398 9047:S11|456e64206f662074797065 9048:S25|50415253455f5459504528292e706172736554797065283429 9049:O1|@16400 9050:O1|@16401 9051:S37|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229 9052:O1|@16403 9053:S50|50415253455f5459504528292e7061727365547970652834297475706c655479706528322967657450726f64756374283229 9054:O1|@16418 9055:S49|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229 9056:O4|@9058,0,@4653,@9057 9057:O3|@9060,@9064,@9059 9058:S9|756e646566696e6564 9059:O3|@9058,@4655,@9065 9060:O2|1,@9061 9061:O3|6,@9062,0 9062:O4|0,@106,3,1 9063:O1|@16404 9064:O4|1,@107,0,0 9065:S9|556e646566696e6564 9066:S25|292061707065617273206d6f7265207468616e206f6e63652e 9067:S75|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d7265706f7274447570283329 9068:S7|4c6162656c2028 9069:O1|@16406 9070:S28|5554494c49544945535f28292e6e6f4475706c696361746573283229 9071:O1|@16409 9072:S36|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c79283129 9073:S43|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c792831296170706c283129 9074:S36|5554494c49544945535f28292e6e6f4475706c696361746573283229656e746572283129 9075:S37|5554494c49544945535f28292e6e6f4475706c6963617465732832296c6f6f6b7570283129 9076:O1|@16412 9077:S25|4c6162656c73206d75737420626520312c322c332c2e2e2e2e 9078:S20|534b4950535f28292e6765744c6162656c283329 9079:O1|@16414 9080:S16|53796d5365742e656d7074792d283129 9081:O1|@16415 9082:O1|@16417 9083:S77|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c697374283129 9084:S87|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c69737428312974657374666f72283329 9085:S64|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229636f6e7374727563746f7273283329 9086:O5|@8810,612,0,612,0 9087:S31|417474656d707420746f20707573682074776f20706172656e746865736573 9088:O1|@16421 9089:S39|50415253455f44454328292e70617273654465632833297369676e617475726553706563283329 9090:S43|50415253455f44454328292e70617273654465632833296d616b6554797065566172456e76283229283129 9091:O1|@16460 9092:S57|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129 9093:S9|5369676e6174757265 9094:S75|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d6e6577656e762d283129 9095:O1|@16425 9096:S43|50415253455f44454328292e706172736544656328332964617461747970654465634f725265706c283529 9097:S52|4461746174797065207265706c69636174696f6e206d757374206e6f7420636f6e7461696e2074797065207661726961626c6573 9098:O1|@16429 9099:O2|@9056,0 9100:S38|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729 9101:O1|@16430 9102:O1|@16431 9103:O7|@9107,2,@4801,@4517,@4653,0,0 9104:S48|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729636f6e73747273283229 9105:S62|60606f702727206d6179206e6f7420617070656172206265666f7265206120636f6e7374727563746f7220696e20612073706563696669636174696f6e2e 9106:O1|@16432 9107:S11|3c756e646566696e65643e 9108:S44|50415253455f44454328292e7061727365446563283329646174617479706542696e64696e67283129283129 9109:O1|@16438 9110:S37|50415253455f44454328292e7061727365446563283329616e6442696e64696e6773283329 9111:O1|@16440 9112:S40|50415253455f44454328292e70617273654465632833297479706542696e64696e67283129283129 9113:S37|50415253455f44454328292e70617273654465632833297479706542696e64696e67283529 9114:O1|@16444 9115:S72|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f4578283229 9116:O1|@16447 9117:O1|@16448 9118:O1|@16450 9119:S74|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d736967696473283229 9120:O1|@16453 9121:S79|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f537472756374757265283229 9122:O1|@16457 9123:S73|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f56616c283229 9124:S18|534b4950535f28292e67657473796d283229 9125:O1|@16463 9126:S19|53796d5365742e73747275637453792d283129 9127:S35|50415253455f44454328292e6d6b4c6f63616c426f6479466978456e76283529283129 9128:O2|@16467,@8987 9129:O1|@16478 9130:S35|50415253455f44454328292e706172736544656328332973747275637456616c283329 9131:O1|@16468 9132:S29|737472756374206f722066756e63746f72206170706c69636174696f6e 9133:S51|50415253455f44454328292e706172736544656328332973747275637456616c283329646f436f6e73747261696e7473283329 9134:O1|@16480 9135:S32|50415253455f44454328292e7061727365446563283329737472446563283329 9136:S42|50415253455f44454328292e706172736544656328332973747244656328332967657444656373283129 9137:O1|@16482 9138:O1|@16483 9139:O6|@9142,@9107,0,0,@9141,0 9140:S38|50415253455f44454328292e70617273654465632833297369676e6174757265446563283329 9141:O1|@16485 9142:O3|0,@9144,@9143 9143:O10|0,0,0,0,0,0,0,0,0,0 9144:O2|@15222,10 9145:O4|11,@4007,0,@9147 9146:S35|5349474e41545552455328292e756e646566696e65645369676e61747572652d283129 9147:O5|@9148,177,0,177,0 9148:S34|6d6c736f757263652f4d4c436f6d70696c65722f5349474e4154555245532e736d6c 9149:O1|@16486 9150:S22|53796d5365742e7369676e617475726553792d283129 9151:O1|@16487 9152:O1|@16488 9153:S36|50415253455f44454328292e706172736544656328332966756e63746f72446563283329 9154:S49|50415253455f44454328292e706172736544656328332966756e63746f72446563283329646f46756e6374446563283229 9155:O1|@16495 9156:S20|53796d5365742e66756e63746f7253792d283129 9157:S2|6974 9158:S29|50415253455f44454328292e7061727365446563283329646563283529 9159:O1|@16503 9160:S43|50415253455f44454328292e706172736544656328332964656328352964656353657175656e6365283229 9161:O1|@16505 9162:O1|@16507 9163:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283129 9164:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283229 9165:O1|@16510 9166:S26|50415253455f5452454528292e6d6b4964656e74283229283129 9167:S39|50415253455f44454328292e70617273654465632833296465632835296e6577456e762d283129 9168:O1|@16513 9169:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283129 9170:O1|@16514 9171:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283229 9172:O1|@16555 9173:S47|50415253455f44454328292e706172736544656328332964656328352966756e4228322962696e64696e6773283229 9174:O1|@16516 9175:S14|456e64206f66207061747465726e 9176:S39|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329 9177:O1|@16539 9178:S55|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229 9179:O1|@16518 9180:S46|292068617320696e666978207374617475732062757420776173206e6f74207072656365646564206279206f702e 9181:S41|50415253455f44454328292e70617273654465632833296765744c6f6e674e6f6e496e666978283729 9182:O1|@16519 9183:S7|5061747465726e 9184:O1|@16520 9185:O7|@9188,2,@9189,@9187,@4653,0,0 9186:S45|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e742831292d45 9187:O3|2,@7356,@9190 9188:S8|636f6e7643686172 9189:O2|3,8 9190:O3|6,@108,79992 9191:O1|@16521 9192:S43|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e74283129 9193:O1|@16522 9194:O7|@7721,2,@9189,@9187,@4653,0,0 9195:O1|@16523 9196:S68|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d766172734c697374283129 9197:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832297265706f7274447570283329 9198:O1|@16526 9199:O1|@16530 9200:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832296765744c6162656c73283229 9201:S35|203d20706174206578706563746564206166746572206e756d65726963206c6162656c 9202:O1|@16529 9203:S32|4578706563746564206964206f722069643a7479206265666f72652060617327 9204:S61|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329636f6e73747261696e744f724c617965726564283429 9205:O1|@16532 9206:S42|50415253455f44454328292e7061727365446563283329646563283529636f6e73747261696e74283529 9207:O1|@16535 9208:S66|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d7475706c6573283129 9209:S38|5265616c20636f6e7374616e7473206e6f7420616c6c6f77656420696e207061747465726e73 9210:O1|@16537 9211:O7|@9212,2,@9189,@9187,@4653,0,0 9212:S8|636f6e765265616c 9213:O1|@16538 9214:O7|@7718,2,@9189,@9187,@4653,0,0 9215:O7|@7726,2,@9189,@9187,@4653,0,0 9216:O1|@16540 9217:O1|@16542 9218:O1|@16548 9219:S42|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729 9220:O1|@16543 9221:O2|-1,0 9222:S56|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729726561644e6578744f7073283229 9223:O1|@16546 9224:S61|50415253455f44454328292e70617273654465632833296465632835297061727365496e66697828372970617273654170706c69636174696f6e283429 9225:O3|@4062,@8997,@4719 9226:O1|@16550 9227:S54|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729 9228:O1|@16549 9229:S11|4f70657261746f72732022 9230:S75|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729636865636b4173736f636961746976697479283229 9231:S5|7269676874 9232:S4|6c656674 9233:O2|@9234,0 9234:S13|2d6173736f636961746976652e 9235:S5|2220697320 9236:S20|2d6173736f63696174697665207768696c652022 9237:S32|222068617665207468652073616d6520707265636564656e6365206275742022 9238:S7|2220616e642022 9239:O1|@16551 9240:S79|53796e746178206572726f723a2066756e2062696e64696e67206973206e6f7420616e206964656e746966696572206170706c69656420746f206f6e65206f72206d6f7265207061747465726e732e 9241:S28|50415253455f5452454528292e6d6b46756e5061747465726e283329 9242:O1|@16552 9243:O1|@16553 9244:S37|50415253455f5452454528292e6d6b46756e5061747465726e283329756e7069636b283229 9245:S70|506172656e74686573657320617265206f6e6c7920616c6c6f77656420666f7220696e6669786564206170706c69636174696f6e7320696e2066756e2062696e64696e67732e 9246:S63|436f6e7374727563746f72206170706c69636174696f6e7320696e2066756e2062696e64696e6773206d75737420626520706172656e74686573697365642e 9247:S31|5468697320636c6175736520646566696e65732066756e6374696f6e206060 9248:S36|2727206275742070726576696f757320636c6175736528732920646566696e6564206060 9249:S2|2727 9250:S16|5468697320636c617573652068617320 9251:S38|20617267756d656e7473206275742070726576696f757320636c617573652873292068616420 9252:O1|@16593 9253:S42|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e283329 9254:O1|@16576 9255:S61|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229 9256:S21|456e64206f66206c65742065787072657373696f6e 9257:O1|@16560 9258:O1|@16561 9259:S73|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e2832297265706f7274447570283329 9260:O1|@16563 9261:S72|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229676574456e747279283229 9262:O1|@16568 9263:O1|@16571 9264:O1|@16572 9265:O1|@16573 9266:O1|@16574 9267:O1|@16575 9268:O1|@16577 9269:S10|45787072657373696f6e 9270:O1|@16579 9271:O1|@16581 9272:S56|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332970617273654f72656c7365283229 9273:O1|@16583 9274:S57|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833297061727365416e64616c736f283229 9275:S55|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296b6579576f7264457870283229 9276:O1|@16586 9277:S12|456e64206f66206d61746368 9278:S50|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296d61746368283129 9279:O1|@16596 9280:O1|@16599 9281:S32|50415253455f44454328292e7061727365446563283329666978697479283329 9282:O1|@16597 9283:S37|206e6f7420616c6c6f7765642c206d757374206265206265747765656e203020616e642039 9284:S48|50415253455f44454328292e7061727365446563283329666978697479283329676574507265636564656e6365283129 9285:S11|507265636564656e636520 9286:O4|@16,@4583,@7917,@9287 9287:O5|@9288,558,0,558,0 9288:S32|6d6c736f757263652f4d4c436f6d70696c65722f50415253455f4445432e4d4c 9289:S8|5661726961626c65 9290:S39|50415253455f44454328292e706172736544656328332966697869747928332976617273283229 9291:O1|@16604 9292:S36|50415253455f44454328292e706172736544656328332964656328352976617273283229 9293:O1|@16608 9294:S36|50415253455f44454328292e706172736544656328332964656328352976616c42283329 9295:O1|@16611 9296:S10|2077617320666f756e64 9297:S20|534b4950535f28292e6e6f74666f756e64283229 9298:S14|2065787065637465642062757420 9299:O1|@16613 9300:O1|@16614 9301:S30|535452554354555245535f28292e646973706c6179546f70446563283129 9302:O1|@16716 9303:S30|535452554354555245535f28292e646973706c6179546f70446563283229 9304:O1|@16615 9305:O1|@16616 9306:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283129 9307:O1|@16714 9308:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283229 9309:S2|203a 9310:O2|@5485,0 9311:O1|@16617 9312:O2|3,@8919 9313:S27|5349474e41545552455328292e646973706c617953696773283229 9314:O1|@16618 9315:S30|545950455f5452454528292e7661724e616d6553657175656e6365283129 9316:O1|@16620 9317:O5|0,0,0,@9329,@9328 9318:S11|7072696e742d6e616d6573 9319:O1|@16621 9320:O2|@9321,0 9321:O2|3,@4396 9322:O2|3,@9323 9323:S6|6e616d65203d 9324:O2|3,@4385 9325:O2|3,@9326 9326:S7|656e747279203d 9327:O2|3,@4363 9328:O2|@9332,0 9329:O2|@9330,0 9330:O2|0,@9331 9331:O5|@8028,1192,1192,0,0 9332:O2|3,@9333 9333:S5|4e616d6573 9334:O1|@16622 9335:S33|545950455f5452454528292e7661724e616d6553657175656e6365283129283129 9336:S40|545950455f5452454528292e7661724e616d6553657175656e63652831292831296e616d65283129 9337:O2|@16623,@9338 9338:O11|@16629,@29,@38,@4995,@82,@7244,@34,@4934,@36,@7734,@107 9339:O1|@16628 9340:S28|545950455f5452454528292e7072696e745479706556617273283329 9341:O2|@9343,@9342 9342:O1|@16625 9343:O1|@16624 9344:S28|545950455f5452454528292e656d70747954797065456e762d283129 9345:O2|@5081,0 9346:O1|@16626 9347:O1|@16627 9348:S36|545950455f5452454528292e7072696e7454797065566172732833297056617273283229 9349:O2|@5268,0 9350:O1|@16630 9351:S20|545950455f5452454528292e7444697370283529 9352:O1|@16652 9353:S28|545950455f5452454528292e74446973702835296469737050283229 9354:O2|3,@9355 9355:S3|626164 9356:O2|3,@9357 9357:S7|6e6f2074797065 9358:O1|@16631 9359:S28|545950455f5452454528292e697350726f6475637454797065283129 9360:O1|@16632 9361:O1|@16633 9362:S41|545950455f5452454528292e744469737028352964697370502832297072657474794c697374283329 9363:O1|@16634 9364:S45|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283129 9365:S48|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283229283129 9366:O1|@16636 9367:O1|@16638 9368:S35|545950455f5452454528292e7444697370283529646973705028322970526563283229 9369:O1|@16637 9370:S6|2c202e2e2e7d 9371:O1|@16639 9372:O1|@16640 9373:O2|3,@4140 9374:S42|545950455f5452454528292e744469737028352964697370502832297072696e745443636f6e73283129 9375:O1|@16641 9376:O5|0,0,0,@9380,@9389 9377:S13|7072696e742d6973466f756e64 9378:O5|0,0,0,@9380,@9379 9379:O2|@9383,0 9380:O2|@9381,0 9381:O2|0,@9382 9382:O5|@8028,961,961,0,0 9383:O2|3,@9384 9384:S10|466f756e644d61746368 9385:O5|0,0,0,@9380,@9386 9386:O2|@9387,0 9387:O2|3,@9388 9388:S13|466f756e644e6f744d61746368 9389:O2|@9390,0 9390:O2|3,@9391 9391:S8|4e6f74466f756e64 9392:O1|@16642 9393:O1|@16643 9394:S41|545950455f5452454528292e744469737028352964697370502832296e616d65546f4c697374283329 9395:S39|545950455f5452454528292e7444697370283529646973705028322966696e6454797065283229 9396:S40|545950455f5452454528292e657154797065436f6e73747273283429636f70794964283129283129 9397:O1|@16646 9398:S33|545950455f5452454528292e657154797065436f6e737472732834296964283129 9399:S55|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b757054797065283129 9400:S57|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b7570537472756374283129 9401:O1|@16650 9402:S25|537472696e672e636f6e636174576974682832296d6b283129 9403:O1|@16651 9404:O2|@5093,@9349 9405:O1|@16653 9406:O1|@16658 9407:S32|545950455f5452454528292e7479706546726f6d547970655061727365283129 9408:O1|@16654 9409:O1|@16655 9410:O1|@16656 9411:O1|@16657 9412:O1|@16659 9413:O2|3,@8915 9414:O2|3,@8951 9415:O1|@16660 9416:O1|@16661 9417:S28|5349474e41545552455328292e646973706c61795370656373283129 9418:O2|3,@8907 9419:S28|5349474e41545552455328292e646973706c61795370656373283229 9420:O1|@16662 9421:S3|203a3e 9422:S46|5349474e41545552455328292e646973706c61795370656373283229646973706c61795369677342696e64283129 9423:O1|@16663 9424:S27|5349474e41545552455328292e646973706c61794c697374283429 9425:O2|3,@8910 9426:O1|@16664 9427:O2|3,@8939 9428:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229 9429:O1|@16665 9430:O1|@16668 9431:S57|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446174617479706542696e64283129 9432:O1|@16666 9433:O2|3,@8879 9434:S56|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436f6e7374727563746f72283129 9435:O1|@16667 9436:S30|5052494e545f50415253455452454528292e7072696e744c697374283429 9437:O1|@16669 9438:O1|@16670 9439:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745479706542696e64283129 9440:O1|@16671 9441:O2|3,@8926 9442:O1|@16672 9443:S60|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61794c69737457697468427074732d283129 9444:O1|@16673 9445:O1|@16674 9446:O1|@16675 9447:O2|3,@8888 9448:O1|@16676 9449:O2|3,@8881 9450:O2|3,@8950 9451:O2|@5091,@9452 9452:O2|@9433,0 9453:O2|3,@8885 9454:O1|@16677 9455:S33|5052494e545f50415253455452454528292e646973706c61794d61746368283129 9456:O2|3,@4151 9457:O2|3,@8869 9458:O2|3,@8873 9459:O2|3,@8871 9460:O1|@16678 9461:S40|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229283129 9462:O2|3,@9463 9463:S7|3c456d7074793e 9464:O1|@16679 9465:O1|@16680 9466:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283129 9467:O1|@16681 9468:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283229 9469:O2|3,@8903 9470:O1|@16682 9471:O2|3,@8895 9472:O1|@16683 9473:O1|@16684 9474:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e746676616c62696e64283129 9475:O1|@16685 9476:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436c61757365283129 9477:O1|@16691 9478:S48|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446563283229 9479:O1|@16686 9480:O1|@16687 9481:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283129 9482:O1|@16688 9483:O1|@16689 9484:O1|@16690 9485:O2|3,@8928 9486:O2|3,@8905 9487:O1|@16692 9488:S2|203d 9489:S54|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61795265634c697374283229 9490:O1|@16693 9491:O2|3,@8924 9492:O1|@16694 9493:O2|@4127,0 9494:S2|2322 9495:O1|@16695 9496:O2|@5091,@9497 9497:O2|@5638,@5598 9498:O1|@16696 9499:O1|@16697 9500:O1|@16698 9501:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745374724e616d65283129 9502:O2|3,@8948 9503:O2|3,@8934 9504:O2|3,@8901 9505:O1|@16699 9506:O2|3,@4926 9507:O1|@16700 9508:O1|@16702 9509:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e7456616c42696e64283229 9510:O2|@9511,@5598 9511:O2|3,@8893 9512:O1|@16701 9513:O2|@5091,@9514 9514:O2|@9515,0 9515:O2|3,@8945 9516:O2|3,@8898 9517:O3|1,1,1 9518:O1|@16703 9519:S27|5349474e41545552455328292e646973706c617953696773283129 9520:O2|3,@8937 9521:O2|@9413,@5598 9522:O1|@16704 9523:S31|5349474e41545552455328292e646973706c61795370656373283229283129 9524:O1|@16705 9525:O2|3,@8877 9526:O1|@16706 9527:O1|@16707 9528:O1|@16708 9529:O2|3,@8943 9530:S35|535452554354555245535f28292e646973706c617953747275637456616c7565283229 9531:O1|@16709 9532:S30|535452554354555245535f28292e646973706c6179537472756374283129 9533:O1|@16710 9534:S28|535452554354555245535f28292e646973706c61794c697374283429 9535:O1|@16711 9536:O1|@16712 9537:O1|@16713 9538:O2|3,@8941 9539:O1|@16715 9540:S47|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617953696742696e64283129 9541:O2|3,@8891 9542:O1|@16720 9543:S30|535452554354555245535f28292e646973706c6179537472756374283229 9544:O1|@16717 9545:O1|@16718 9546:O1|@16719 9547:O2|3,@8930 9548:O1|@16721 9549:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283129 9550:O1|@16722 9551:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283229 9552:O2|3,@9488 9553:O2|@16723,@110 9554:S29|535452554354555245535f28292e706173733253747275637473283329 9555:O1|@16732 9556:S43|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d6573283129 9557:S48|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d65732831295f2d283129 9558:O1|@16733 9559:S36|535452554354555245535f28292e706173733253747275637473283329656e762d283129 9560:S48|535452554354555245535f28292e706173733253747275637473283329746f704c6576656c49644e756d626572283129 9561:S49|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129 9562:S52|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129283129 9563:O1|@16737 9564:S43|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229 9565:O1|@16741 9566:S49|535452554354555245535f28292e706173733253747275637473283329636865636b5661726961626c6573283229283129 9567:O2|@16740,@8096 9568:S31|545950454944434f444528292e636f6465466f72556e697175654964283129 9569:O1|@16746 9570:S40|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429 9571:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129 9572:O1|@16744 9573:S56|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129283129 9574:S13|5468652074797065206f662028 9575:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283229 9576:O1|@16745 9577:S50|545950455f5452454528292e636865636b466f7246726565547970655661726961626c657328342967656e4e616d65283129 9578:S38|436f6e73747275637465642066726f6d206120667265652074797065207661726961626c652e 9579:O2|@9580,0 9580:S65|2920636f6e7461696e73206120667265652074797065207661726961626c652e2053657474696e6720697420746f206120756e69717565206d6f6e6f747970652e 9581:S23|545950455f5452454528292e666f6c6454797065283129 9582:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283129 9583:O1|@16749 9584:S34|545950455f5452454528292e666f6c6454797065283129666f6c6454283129283129 9585:O1|@16751 9586:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283229 9587:O1|@16750 9588:O1|@16753 9589:S66|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229 9590:O1|@16755 9591:S79|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229636865636b456e747279283329 9592:O1|@16758 9593:S51|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329 9594:S54|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329283129 9595:S10|5369676e617475726520 9596:S43|2068617320616c7265616479206265656e20626f756e6420696e2074686973206465636c61726174696f6e 9597:S29|535452554354555245535f28292e6572726f724d73674e656172283529 9598:O2|@16760,@9142 9599:S22|5349474e41545552455328292e73696756616c283629 9600:O1|@16762 9601:O5|0,0,0,@10785,@10784 9602:S11|7072696e742d7661724964 9603:O3|@16763,@113,@112 9604:O5|0,0,0,@9615,@9614 9605:S12|7072696e742d747970654964 9606:O2|3,@9607 9607:S10|6c6f636174696f6e203d 9608:O2|3,@9609 9609:S13|6465736372697074696f6e203d 9610:O2|3,@9611 9611:S8|69644b696e64203d 9612:O2|3,@9613 9613:S8|616363657373203d 9614:O2|@9618,0 9615:O2|@9616,0 9616:O2|0,@9617 9617:O5|@4896,113,113,0,0 9618:O2|3,@9619 9619:S6|547970654964 9620:O3|@16764,@120,@114 9621:O5|0,0,0,@9684,@9683 9622:S16|7072696e742d7479706549644b696e64 9623:O4|0,@9624,1,1 9624:O1|@16765 9625:S10|7072696e742d626f6f6c 9626:O1|@16766 9627:O2|3,@9628 9628:S8|6f6666736574203d 9629:O2|3,@9630 9630:S12|69734461746174797065203d 9631:O2|3,@9632 9632:S8|657154797065203d 9633:O2|3,@9634 9634:S7|6172697479203d 9635:O5|0,0,0,@9637,@9636 9636:O2|@9640,0 9637:O2|@9638,0 9638:O2|0,@9639 9639:O5|@4896,117,117,0,0 9640:O2|3,@9641 9641:S5|426f756e64 9642:O2|@16767,@117 9643:O1|@16770 9644:S7|61646450502d32 9645:S14|7072696e745f7265662833292d45 9646:O5|@9652,115,0,115,0 9647:S12|7072696e745f726566283329 9648:O1|@16771 9649:S15|706172656e74686573697365283129 9650:O2|3,@9651 9651:S3|726566 9652:S22|2e2f62617369732f45786e5072696e7465722e736d6c 9653:O4|0,@9654,1,1 9654:O1|@16772 9655:O2|3,@9656 9656:S5|756964203d 9657:O2|3,@9658 9658:S13|616c6c6f77557064617465203d 9659:O5|0,0,0,@9661,@9660 9660:O2|@9664,0 9661:O2|@9662,0 9662:O2|0,@9663 9663:O5|@4896,116,116,0,0 9664:O2|3,@9665 9665:S4|46726565 9666:O1|@16773 9667:O2|3,@4364 9668:O2|@4045,0 9669:O1|@16775 9670:S21|7072696e745f6c697374283329706c697374283229 9671:O1|@16776 9672:O2|@9674,0 9673:S6|402832292829 9674:O2|3,@9675 9675:S1|5d 9676:O2|3,@9682 9677:O1|@16778 9678:S3|307778 9679:S11|7072696e742d7479706573 9680:O2|3,@9681 9681:S7|76616c7565203d 9682:S10|656e636f64696e67203d 9683:O2|@9687,0 9684:O2|@9685,0 9685:O2|0,@9686 9686:O5|@4896,118,118,0,0 9687:O2|3,@9688 9688:S6|54797065466e 9689:O1|@16780 9690:S14|7072696e74706f73735265662829 9691:O5|0,0,0,@9695,@9700 9692:S13|7072696e742d706f7373526566 9693:O5|0,0,0,@9695,@9694 9694:O2|@9698,0 9695:O2|@9696,0 9696:O2|0,@9697 9697:O5|@4896,77,77,0,0 9698:O2|3,@9699 9699:S9|46726f7a656e526566 9700:O2|@9701,0 9701:O2|3,@9702 9702:S11|5661726961626c65526566 9703:O5|@16782,@114,@122,@123,@121 9704:O5|0,0,0,@9768,@9767 9705:O5|0,0,0,@9707,@9706 9706:O2|@9710,0 9707:O2|@9708,0 9708:O2|0,@9709 9709:O5|@4896,145,145,0,0 9710:O2|3,@9711 9711:S7|42616454797065 9712:O5|0,0,0,@9714,@9713 9713:O2|@9717,0 9714:O2|@9715,0 9715:O2|0,@9716 9716:O5|@4896,147,147,0,0 9717:O2|3,@9718 9718:S9|456d70747954797065 9719:O2|3,@9720 9720:S8|726573756c74203d 9721:O2|3,@9722 9722:S5|617267203d 9723:O5|0,0,0,@9725,@9724 9724:O2|@9728,0 9725:O2|@9726,0 9726:O2|0,@9727 9727:O5|@4896,132,132,0,0 9728:O2|3,@9729 9729:S12|46756e6374696f6e54797065 9730:O2|3,@9731 9731:S8|747970656f66203d 9732:O2|3,@9733 9733:S9|7265634c697374203d 9734:O2|3,@9735 9735:S10|66756c6c4c697374203d 9736:O5|0,0,0,@9738,@9737 9737:O2|@9741,0 9738:O2|@9739,0 9739:O2|0,@9740 9740:O5|@4896,138,138,0,0 9741:O2|3,@9742 9742:S12|4c6162656c6c656454797065 9743:S17|7072696e742d74797065436f6e73747273 9744:O2|3,@9745 9745:S9|74797065736574203d 9746:O5|0,0,0,@9748,@9747 9747:O2|@9751,0 9748:O2|@9749,0 9749:O2|0,@9750 9750:O5|@4896,140,140,0,0 9751:O2|3,@9752 9752:S11|4f7665726c6f6164536574 9753:S18|7072696e742d6c6f636174696f6e50726f70 9754:O2|3,@9755 9755:S11|6c6f636174696f6e73203d 9756:O2|3,@9757 9757:S8|636f6e737472203d 9758:O2|3,@9759 9759:S6|61726773203d 9760:O5|0,0,0,@9762,@9761 9761:O2|@9765,0 9762:O2|@9763,0 9763:O2|0,@9764 9764:O5|@4896,124,124,0,0 9765:O2|3,@9766 9766:S16|54797065436f6e737472756374696f6e 9767:O2|@9771,0 9768:O2|@9769,0 9769:O2|0,@9770 9770:O5|@4896,122,122,0,0 9771:O2|3,@9772 9772:S7|54797065566172 9773:O2|@16788,@122 9774:O5|0,0,0,@9786,@9785 9775:S20|7072696e742d6c6162656c4669656c644c697374 9776:O4|0,@9777,3,1 9777:O1|@16789 9778:O5|0,0,0,@9780,@9779 9779:O2|@9783,0 9780:O2|@9781,0 9781:O2|0,@9782 9782:O5|@4896,162,162,0,0 9783:O2|3,@9784 9784:S9|4669656c644c697374 9785:O2|@9789,0 9786:O2|@9787,0 9787:O2|0,@9788 9788:O5|@4896,163,163,0,0 9789:O2|3,@9790 9790:S12|466c657869626c654c697374 9791:O4|@16791,@114,@121,@124 9792:O5|0,0,0,@9798,@9797 9793:O2|3,@9794 9794:S10|7479706556617273203d 9795:O2|3,@9796 9796:S12|6964656e746966696572203d 9797:O2|@9801,0 9798:O2|@9799,0 9799:O2|0,@9800 9800:O5|@4896,150,150,0,0 9801:O2|3,@7894 9802:O1|@16795 9803:O5|0,0,0,@9826,@9825 9804:O5|0,0,0,@9806,@9805 9805:O2|@9809,0 9806:O2|@9807,0 9807:O2|0,@9808 9808:O5|@4896,267,267,0,0 9809:O2|3,@9810 9810:S10|4465636c617265644174 9811:O5|0,0,0,@9813,@9812 9812:O2|@9816,0 9813:O2|@9814,0 9814:O2|0,@9815 9815:O5|@4896,268,268,0,0 9816:O2|3,@9817 9817:S8|4f70656e65644174 9818:O5|0,0,0,@9820,@9819 9819:O2|@9823,0 9820:O2|@9821,0 9821:O2|0,@9822 9822:O5|@4896,270,270,0,0 9823:O2|3,@9824 9824:S10|53657175656e63654e6f 9825:O2|@9829,0 9826:O2|@9827,0 9827:O2|0,@9828 9828:O5|@4896,269,269,0,0 9829:O2|3,@9830 9830:S11|5374727563747572654174 9831:O3|@16796,@125,@112 9832:O5|0,0,0,@10688,@10687 9833:S15|7072696e742d76616c416363657373 9834:O5|0,0,0,@9836,@9835 9835:O2|@9839,0 9836:O2|@9837,0 9837:O2|0,@9838 9838:O5|@4896,170,170,0,0 9839:O2|3,@9840 9840:S6|466f726d616c 9841:O7|@16797,@126,@140,@141,@142,@143,@127 9842:O5|0,0,0,@10499,@10498 9843:S14|7072696e742d636f646574726565 9844:O2|3,@9845 9845:S10|6e756d576f726473203d 9846:O2|3,@9847 9847:S9|696e697469616c203d 9848:O2|3,@9849 9849:S7|666c616773203d 9850:O5|0,0,0,@9852,@9851 9851:O2|@5488,0 9852:O2|@9853,0 9853:O2|0,@9854 9854:O5|@5716,112,112,0,0 9855:O2|3,@9856 9856:S11|73686f7274436f6e64203d 9857:O2|3,@9858 9858:S6|6f706572203d 9859:O2|3,@9860 9860:S10|6c6f6e6743616c6c203d 9861:O2|3,@9862 9862:S6|61726732203d 9863:O2|3,@9864 9864:S6|61726731203d 9865:O5|0,0,0,@9867,@9866 9866:O2|@9870,0 9867:O2|@9868,0 9868:O2|0,@9869 9869:O5|@5716,76,76,0,0 9870:O2|3,@7499 9871:S13|7072696e742d636f6465557365 9872:O2|3,@9873 9873:S5|757365203d 9874:O2|3,@9875 9875:S6|61646472203d 9876:O1|@16800 9877:O5|0,0,0,@9887,@9886 9878:S18|7072696e742d617267756d656e7454797065 9879:O5|0,0,0,@9881,@9880 9880:O2|@9884,0 9881:O2|@9882,0 9882:O2|0,@9883 9883:O5|@6401,137,137,0,0 9884:O2|3,@9885 9885:S14|466c6f6174696e67507454797065 9886:O2|@9890,0 9887:O2|@9888,0 9888:O2|0,@9889 9889:O5|@6401,136,136,0,0 9890:O2|3,@9891 9891:S11|47656e6572616c54797065 9892:O2|3,@9893 9893:S6|6c6f6f70203d 9894:O2|3,@9895 9895:S11|617267756d656e7473203d 9896:O5|0,0,0,@9898,@9897 9897:O2|@9901,0 9898:O2|@9899,0 9899:O2|0,@9900 9900:O5|@5716,83,83,0,0 9901:O2|3,@9902 9902:S9|426567696e4c6f6f70 9903:O5|@16801,@131,@132,@133,@130 9904:O5|0,0,0,@9987,@9986 9905:S15|7072696e742d62696e6172794f7073 9906:O5|0,0,0,@9908,@9907 9907:O2|@9911,0 9908:O2|@9909,0 9909:O2|0,@9910 9910:O5|@6401,74,74,0,0 9911:O2|3,@5514 9912:O5|0,0,0,@9914,@9913 9913:O2|@9917,0 9914:O2|@9915,0 9915:O2|0,@9916 9916:O5|@6401,70,70,0,0 9917:O2|3,@9918 9918:S19|4669786564507265636973696f6e4172697468 9919:O5|0,0,0,@9921,@9920 9920:O2|@9924,0 9921:O2|@9922,0 9922:O2|0,@9923 9923:O5|@6401,76,76,0,0 9924:O2|3,@9925 9925:S14|4c61726765576f72644172697468 9926:O5|0,0,0,@9928,@9927 9927:O2|@9931,0 9928:O2|@9929,0 9929:O2|0,@9930 9930:O5|@6401,75,75,0,0 9931:O2|3,@9932 9932:S19|4c61726765576f7264436f6d70617269736f6e 9933:O5|0,0,0,@9935,@9934 9934:O2|@9938,0 9935:O2|@9936,0 9936:O2|0,@9937 9937:O5|@6401,77,77,0,0 9938:O2|3,@9939 9939:S16|4c61726765576f72644c6f676963616c 9940:O5|0,0,0,@9942,@9941 9941:O2|@9945,0 9942:O2|@9943,0 9943:O2|0,@9944 9944:O5|@6401,78,78,0,0 9945:O2|3,@9946 9946:S14|4c61726765576f72645368696674 9947:O5|0,0,0,@9949,@9948 9948:O2|@9952,0 9949:O2|@9950,0 9950:O2|0,@9951 9951:O5|@6401,80,80,0,0 9952:O2|3,@9953 9953:S9|5265616c4172697468 9954:O5|0,0,0,@9956,@9955 9955:O2|@9959,0 9956:O2|@9957,0 9957:O2|0,@9958 9958:O5|@6401,79,79,0,0 9959:O2|3,@9960 9960:S14|5265616c436f6d70617269736f6e 9961:O5|0,0,0,@9963,@9962 9962:O2|@9966,0 9963:O2|@9964,0 9964:O2|0,@9965 9965:O5|@6401,71,71,0,0 9966:O2|3,@9967 9967:S9|576f72644172697468 9968:O2|3,@9969 9969:S6|74657374203d 9970:O2|3,@9971 9971:S10|69735369676e6564203d 9972:O5|0,0,0,@9974,@9973 9973:O2|@9977,0 9974:O2|@9975,0 9975:O2|0,@9976 9976:O5|@6401,69,69,0,0 9977:O2|3,@9978 9978:S14|576f7264436f6d70617269736f6e 9979:O5|0,0,0,@9981,@9980 9980:O2|@9984,0 9981:O2|@9982,0 9982:O2|0,@9983 9983:O5|@6401,72,72,0,0 9984:O2|3,@9985 9985:S11|576f72644c6f676963616c 9986:O2|@9990,0 9987:O2|@9988,0 9988:O2|0,@9989 9989:O5|@6401,73,73,0,0 9990:O2|3,@9991 9991:S9|576f72645368696674 9992:O1|@16802 9993:O5|0,0,0,@10038,@10037 9994:S26|7072696e742d61726974686d657469634f7065726174696f6e73 9995:O5|0,0,0,@9997,@9996 9996:O2|@10000,0 9997:O2|@9998,0 9998:O2|0,@9999 9999:O5|@6401,34,34,0,0 10000:O2|3,@10001 10001:S8|4172697468416464 10002:O5|0,0,0,@10004,@10003 10003:O2|@10007,0 10004:O2|@10005,0 10005:O2|0,@10006 10006:O5|@6401,39,39,0,0 10007:O2|3,@10008 10008:S8|4172697468446976 10009:O5|0,0,0,@10011,@10010 10010:O2|@10014,0 10011:O2|@10012,0 10012:O2|0,@10013 10013:O5|@6401,40,40,0,0 10014:O2|3,@10015 10015:S8|41726974684d6f64 10016:O5|0,0,0,@10018,@10017 10017:O2|@10021,0 10018:O2|@10019,0 10019:O2|0,@10020 10020:O5|@6401,36,36,0,0 10021:O2|3,@10022 10022:S9|41726974684d756c74 10023:O5|0,0,0,@10025,@10024 10024:O2|@10028,0 10025:O2|@10026,0 10026:O2|0,@10027 10027:O5|@6401,37,37,0,0 10028:O2|3,@10029 10029:S9|417269746851756f74 10030:O5|0,0,0,@10032,@10031 10031:O2|@10035,0 10032:O2|@10033,0 10033:O2|0,@10034 10034:O5|@6401,38,38,0,0 10035:O2|3,@10036 10036:S8|417269746852656d 10037:O2|@10041,0 10038:O2|@10039,0 10039:O2|0,@10040 10040:O5|@6401,35,35,0,0 10041:O2|3,@10042 10042:S8|4172697468537562 10043:O1|@16803 10044:O5|0,0,0,@10075,@10074 10045:S20|7072696e742d74657374436f6e646974696f6e73 10046:O5|0,0,0,@10048,@10047 10047:O2|@10051,0 10048:O2|@10049,0 10049:O2|0,@10050 10050:O5|@6401,27,27,0,0 10051:O2|3,@10052 10052:S9|54657374457175616c 10053:O5|0,0,0,@10055,@10054 10054:O2|@10058,0 10055:O2|@10056,0 10056:O2|0,@10057 10057:O5|@6401,30,30,0,0 10058:O2|3,@10059 10059:S11|5465737447726561746572 10060:O5|0,0,0,@10062,@10061 10061:O2|@10065,0 10062:O2|@10063,0 10063:O2|0,@10064 10064:O5|@6401,31,31,0,0 10065:O2|3,@10066 10066:S16|5465737447726561746572457175616c 10067:O5|0,0,0,@10069,@10068 10068:O2|@10072,0 10069:O2|@10070,0 10070:O2|0,@10071 10071:O5|@6401,28,28,0,0 10072:O2|3,@10073 10073:S8|546573744c657373 10074:O2|@10078,0 10075:O2|@10076,0 10076:O2|0,@10077 10077:O5|@6401,29,29,0,0 10078:O2|3,@10079 10079:S13|546573744c657373457175616c 10080:O1|@16804 10081:O5|0,0,0,@10098,@10097 10082:S23|7072696e742d6c6f676963616c4f7065726174696f6e73 10083:O5|0,0,0,@10085,@10084 10084:O2|@10088,0 10085:O2|@10086,0 10086:O2|0,@10087 10087:O5|@6401,43,43,0,0 10088:O2|3,@10089 10089:S10|4c6f676963616c416e64 10090:O5|0,0,0,@10092,@10091 10091:O2|@10095,0 10092:O2|@10093,0 10093:O2|0,@10094 10094:O5|@6401,44,44,0,0 10095:O2|3,@10096 10096:S9|4c6f676963616c4f72 10097:O2|@10101,0 10098:O2|@10099,0 10099:O2|0,@10100 10100:O5|@6401,45,45,0,0 10101:O2|3,@10102 10102:S10|4c6f676963616c586f72 10103:O1|@16805 10104:O5|0,0,0,@10121,@10120 10105:S21|7072696e742d73686966744f7065726174696f6e73 10106:O5|0,0,0,@10108,@10107 10107:O2|@10111,0 10108:O2|@10109,0 10109:O2|0,@10110 10110:O5|@6401,48,48,0,0 10111:O2|3,@10112 10112:S9|53686966744c656674 10113:O5|0,0,0,@10115,@10114 10114:O2|@10118,0 10115:O2|@10116,0 10116:O2|0,@10117 10117:O5|@6401,50,50,0,0 10118:O2|3,@10119 10119:S20|5368696674526967687441726974686d65746963 10120:O2|@10124,0 10121:O2|@10122,0 10122:O2|0,@10123 10123:O5|@6401,49,49,0,0 10124:O2|3,@10125 10125:S17|536869667452696768744c6f676963616c 10126:O5|0,0,0,@10128,@10127 10127:O2|@10131,0 10128:O2|@10129,0 10129:O2|0,@10130 10130:O5|@5716,70,70,0,0 10131:O2|3,@10132 10132:S6|42696e617279 10133:O2|3,@10134 10134:S7|696e646578203d 10135:O2|3,@10136 10136:S6|62617365203d 10137:O1|@16807 10138:O5|0,0,0,@10157,@10156 10139:S17|7072696e742d626c6f636b4f704b696e64 10140:O5|0,0,0,@10142,@10141 10141:O2|@10145,0 10142:O2|@10143,0 10143:O2|0,@10144 10144:O5|@6401,237,237,0,0 10145:O2|3,@10146 10146:S18|426c6f636b4f70436f6d7061726542797465 10147:O5|0,0,0,@10149,@10148 10148:O2|@10152,0 10149:O2|@10150,0 10150:O2|0,@10151 10151:O5|@6401,236,236,0,0 10152:O2|3,@10153 10153:S16|426c6f636b4f70457175616c42797465 10154:O2|3,@10155 10155:S12|6973427974654d6f7665203d 10156:O2|@10160,0 10157:O2|@10158,0 10158:O2|0,@10159 10159:O5|@6401,235,235,0,0 10160:O2|3,@10161 10161:S11|426c6f636b4f704d6f7665 10162:O2|3,@10163 10163:S12|736f757263654c656674203d 10164:O2|3,@10165 10165:S8|6c656e677468203d 10166:O2|3,@10167 10167:S6|6b696e64203d 10168:O2|3,@10169 10169:S11|646573745269676874203d 10170:O5|0,0,0,@10172,@10171 10171:O2|@10175,0 10172:O2|@10173,0 10173:O2|0,@10174 10174:O5|@5716,107,107,0,0 10175:O2|3,@10176 10176:S14|426c6f636b4f7065726174696f6e 10177:O5|0,0,0,@10179,@10178 10178:O2|@10182,0 10179:O2|@10180,0 10180:O2|0,@10181 10181:O5|@5716,81,81,0,0 10182:O2|3,@10183 10183:S4|436f6e64 10184:O1|@16809 10185:O4|0,@10186,2,1 10186:O1|@16810 10187:S25|7072696e742d556e6976657273616c2e756e6976657273616c 10188:O1|@16811 10189:O5|0,0,0,@10191,@10190 10190:O2|@10194,0 10191:O2|@10192,0 10192:O2|0,@10193 10193:O5|@5716,54,54,0,0 10194:O2|3,@10195 10195:S7|436f6e73746e74 10196:O2|3,@10197 10197:S12|726573756c7454797065203d 10198:O2|3,@10199 10199:S10|66756e6374696f6e203d 10200:O2|3,@10201 10201:S9|6172674c697374203d 10202:O5|0,0,0,@10204,@10203 10203:O2|@10207,0 10204:O2|@10205,0 10205:O2|0,@10206 10206:O5|@5716,61,61,0,0 10207:O2|3,@10208 10208:S4|4576616c 10209:O5|0,0,0,@10211,@10210 10210:O2|@10214,0 10211:O2|@10212,0 10212:O2|0,@10213 10213:O5|@5716,56,56,0,0 10214:O2|3,@10215 10215:S7|45787472616374 10216:O5|0,0,0,@10218,@10217 10217:O2|@5559,0 10218:O2|@10219,0 10219:O2|0,@10220 10220:O5|@5716,110,110,0,0 10221:O2|3,@10222 10222:S9|68616e646c6572203d 10223:O2|3,@10224 10224:S5|657870203d 10225:O2|3,@10226 10226:S14|65785061636b657441646472203d 10227:O5|0,0,0,@10229,@10228 10228:O2|@10232,0 10229:O2|@10230,0 10230:O2|0,@10231 10231:O5|@5716,90,90,0,0 10232:O2|3,@10233 10233:S6|48616e646c65 10234:O2|3,@10235 10235:S11|697356617269616e74203d 10236:O5|0,0,0,@10238,@10237 10237:O2|@10241,0 10238:O2|@10239,0 10239:O2|0,@10240 10240:O5|@5716,58,58,0,0 10241:O2|3,@10242 10242:S8|496e646972656374 10243:S14|7072696e742d6c6f6164466f726d 10244:O2|3,@10245 10245:S8|726563557365203d 10246:O2|3,@10247 10247:S12|6c6f63616c436f756e74203d 10248:O2|3,@10249 10249:S10|6973496e6c696e65203d 10250:O2|3,@10251 10251:S9|636c6f73757265203d 10252:O2|3,@10253 10253:S6|626f6479203d 10254:O2|3,@10255 10255:S10|6172675479706573203d 10256:O5|0,0,0,@10258,@10257 10257:O2|@10261,0 10258:O2|@10259,0 10259:O2|0,@10260 10260:O5|@5716,79,79,0,0 10261:O2|3,@10262 10262:S6|4c616d626461 10263:O1|@16818 10264:O5|0,0,0,@10325,@10324 10265:S19|7072696e742d6c6f616453746f72654b696e64 10266:O5|0,0,0,@10268,@10267 10267:O2|@10271,0 10268:O2|@10269,0 10269:O2|0,@10270 10270:O5|@6401,227,227,0,0 10271:O2|3,@10272 10272:S12|4c6f616453746f7265433136 10273:O5|0,0,0,@10275,@10274 10274:O2|@10278,0 10275:O2|@10276,0 10276:O2|0,@10277 10277:O5|@6401,228,228,0,0 10278:O2|3,@10279 10279:S12|4c6f616453746f7265433332 10280:O5|0,0,0,@10282,@10281 10281:O2|@10285,0 10282:O2|@10283,0 10283:O2|0,@10284 10284:O5|@6401,229,229,0,0 10285:O2|3,@10286 10286:S12|4c6f616453746f7265433634 10287:O5|0,0,0,@10289,@10288 10288:O2|@10292,0 10289:O2|@10290,0 10290:O2|0,@10291 10291:O5|@6401,226,226,0,0 10292:O2|3,@10293 10293:S11|4c6f616453746f72654338 10294:O5|0,0,0,@10296,@10295 10295:O2|@10299,0 10296:O2|@10297,0 10297:O2|0,@10298 10298:O5|@6401,231,231,0,0 10299:O2|3,@10300 10300:S16|4c6f616453746f726543446f75626c65 10301:O5|0,0,0,@10303,@10302 10302:O2|@10306,0 10303:O2|@10304,0 10304:O2|0,@10305 10305:O5|@6401,230,230,0,0 10306:O2|3,@10307 10307:S15|4c6f616453746f726543466c6f6174 10308:O2|3,@10309 10309:S13|6973496d6d757461626c65203d 10310:O5|0,0,0,@10312,@10311 10311:O2|@10315,0 10312:O2|@10313,0 10313:O2|0,@10314 10314:O5|@6401,225,225,0,0 10315:O2|3,@10316 10316:S15|4c6f616453746f72654d4c42797465 10317:O5|0,0,0,@10319,@10318 10318:O2|@10322,0 10319:O2|@10320,0 10320:O2|0,@10321 10321:O5|@6401,224,224,0,0 10322:O2|3,@10323 10323:S15|4c6f616453746f72654d4c576f7264 10324:O2|@10328,0 10325:O2|@10326,0 10326:O2|0,@10327 10327:O5|@6401,232,232,0,0 10328:O2|3,@10329 10329:S25|4c6f616453746f7265556e746167676564556e7369676e6564 10330:O2|3,@10331 10331:S9|61646472657373203d 10332:O5|0,0,0,@10334,@10333 10333:O2|@10337,0 10334:O2|@10335,0 10335:O2|0,@10336 10336:O5|@5716,103,103,0,0 10337:O2|3,@10338 10338:S13|4c6f61644f7065726174696f6e 10339:O5|0,0,0,@10341,@10340 10340:O2|@10344,0 10341:O2|@10342,0 10342:O2|0,@10343 10343:O5|@5716,86,86,0,0 10344:O2|3,@10345 10345:S4|4c6f6f70 10346:S17|7072696e742d636f646542696e64696e67 10347:O5|0,0,0,@10349,@10348 10348:O2|@10352,0 10349:O2|@10350,0 10350:O2|0,@10351 10351:O5|@5716,52,52,0,0 10352:O2|3,@10353 10353:S6|4e6577656e76 10354:O5|0,0,0,@10356,@10355 10355:O2|@10359,0 10356:O2|@10357,0 10357:O2|0,@10358 10358:O5|@5716,88,88,0,0 10359:O2|3,@10360 10360:S5|5261697365 10361:O1|@16821 10362:O1|@16822 10363:O2|3,@10371 10364:S20|426f6f6c566563746f722e707265747479283329 10365:O2|@10366,0 10366:O2|3,@10367 10367:S4|2e2e2e5d 10368:O2|@10369,0 10369:O2|3,@4186 10370:O2|3,@4137 10371:S9|66726f6d4c6973745b 10372:O2|3,@10373 10373:S7|7475706c65203d 10374:O2|3,@10375 10375:S8|66696c746572203d 10376:O2|3,@10377 10377:S11|636f6e7461696e6572203d 10378:O5|0,0,0,@10380,@10379 10379:O2|@10383,0 10380:O2|@10381,0 10381:O2|0,@10382 10382:O5|@5716,94,94,0,0 10383:O2|3,@10384 10384:S12|536574436f6e7461696e6572 10385:O5|0,0,0,@10387,@10386 10386:O2|@10390,0 10387:O2|@10388,0 10388:O2|0,@10389 10389:O5|@5716,105,105,0,0 10390:O2|3,@10391 10391:S14|53746f72654f7065726174696f6e 10392:O2|3,@10393 10393:S5|746167203d 10394:O2|3,@10395 10395:S8|6d6178546167203d 10396:O5|0,0,0,@10398,@10397 10397:O2|@10401,0 10398:O2|@10399,0 10399:O2|0,@10400 10400:O5|@5716,101,101,0,0 10401:O2|3,@10402 10402:S7|54616754657374 10403:O2|3,@10404 10404:S8|6669656c6473203d 10405:O5|0,0,0,@10407,@10406 10406:O2|@10410,0 10407:O2|@10408,0 10408:O2|0,@10409 10409:O5|@5716,92,92,0,0 10410:O2|3,@10411 10411:S5|5475706c65 10412:O1|@16825 10413:O5|0,0,0,@10494,@10493 10414:S14|7072696e742d756e6172794f7073 10415:O5|0,0,0,@10417,@10416 10416:O2|@10420,0 10417:O2|@10418,0 10418:O2|0,@10419 10419:O5|@6401,59,59,0,0 10420:O2|3,@4913 10421:O5|0,0,0,@10423,@10422 10422:O2|@10426,0 10423:O2|@10424,0 10424:O2|0,@10425 10425:O5|@6401,58,58,0,0 10426:O2|3,@4914 10427:O5|0,0,0,@10429,@10428 10428:O2|@10432,0 10429:O2|@10430,0 10430:O2|0,@10431 10431:O5|@6401,60,60,0,0 10432:O2|3,@4915 10433:O5|0,0,0,@10435,@10434 10434:O2|@10438,0 10435:O2|@10436,0 10436:O2|0,@10437 10437:O5|@6401,57,57,0,0 10438:O2|3,@4916 10439:O5|0,0,0,@10441,@10440 10440:O2|@10444,0 10441:O2|@10442,0 10442:O2|0,@10443 10443:O5|@6401,66,66,0,0 10444:O2|3,@4917 10445:O5|0,0,0,@10447,@10446 10446:O2|@10450,0 10447:O2|@10448,0 10448:O2|0,@10449 10449:O5|@6401,54,54,0,0 10450:O2|3,@4918 10451:O5|0,0,0,@10453,@10452 10452:O2|@10456,0 10453:O2|@10454,0 10454:O2|0,@10455 10455:O5|@6401,61,61,0,0 10456:O2|3,@4919 10457:O5|0,0,0,@10459,@10458 10458:O2|@10462,0 10459:O2|@10460,0 10460:O2|0,@10461 10461:O5|@6401,56,56,0,0 10462:O2|3,@4920 10463:O5|0,0,0,@10465,@10464 10464:O2|@10468,0 10465:O2|@10466,0 10466:O2|0,@10467 10467:O5|@6401,55,55,0,0 10468:O2|3,@4921 10469:O5|0,0,0,@10471,@10470 10470:O2|@10474,0 10471:O2|@10472,0 10472:O2|0,@10473 10473:O5|@6401,53,53,0,0 10474:O2|3,@4912 10475:O5|0,0,0,@10477,@10476 10476:O2|@10480,0 10477:O2|@10478,0 10478:O2|0,@10479 10479:O5|@6401,64,64,0,0 10480:O2|3,@4922 10481:O5|0,0,0,@10483,@10482 10482:O2|@10486,0 10483:O2|@10484,0 10484:O2|0,@10485 10485:O5|@6401,65,65,0,0 10486:O2|3,@4923 10487:O5|0,0,0,@10489,@10488 10488:O2|@10492,0 10489:O2|@10490,0 10490:O2|0,@10491 10491:O5|@6401,62,62,0,0 10492:O2|3,@4924 10493:O2|@10497,0 10494:O2|@10495,0 10495:O2|0,@10496 10496:O5|@6401,63,63,0,0 10497:O2|3,@4925 10498:O2|@10502,0 10499:O2|@10500,0 10500:O2|0,@10501 10501:O5|@5716,69,69,0,0 10502:O2|3,@10503 10503:S5|556e617279 10504:O1|@16826 10505:O5|0,0,0,@10515,@10514 10506:S21|7072696e742d617262507265636973696f6e4f7073 10507:O5|0,0,0,@10509,@10508 10508:O2|@10512,0 10509:O2|@10510,0 10510:O2|0,@10511 10511:O5|@5716,36,36,0,0 10512:O2|3,@10513 10513:S8|4172624172697468 10514:O2|@10518,0 10515:O2|@10516,0 10516:O2|0,@10517 10517:O5|@5716,35,35,0,0 10518:O2|3,@10519 10519:S10|417262436f6d70617265 10520:O3|@16827,@126,@141 10521:O5|0,0,0,@10543,@10542 10522:O5|0,0,0,@10524,@10523 10523:O2|@10527,0 10524:O2|@10525,0 10525:O2|0,@10526 10526:O5|@5716,46,46,0,0 10527:O2|3,@10528 10528:S8|5573654170706c79 10529:O5|0,0,0,@10531,@10530 10530:O2|@10534,0 10531:O2|@10532,0 10532:O2|0,@10533 10533:O5|@5716,45,45,0,0 10534:O2|3,@10535 10535:S9|5573654578706f7274 10536:O5|0,0,0,@10538,@10537 10537:O2|@10541,0 10538:O2|@10539,0 10539:O2|0,@10540 10540:O5|@5716,49,49,0,0 10541:O2|3,@5574 10542:O2|@10546,0 10543:O2|@10544,0 10544:O2|0,@10545 10545:O5|@5716,44,44,0,0 10546:O2|3,@10547 10547:S10|55736547656e6572616c 10548:O1|@16831 10549:O5|0,0,0,@10572,@10571 10550:O5|0,0,0,@10552,@10551 10551:O2|@10555,0 10552:O2|@10553,0 10553:O2|0,@10554 10554:O5|@5716,123,123,0,0 10555:O2|3,@10556 10556:S12|4c6f6164417267756d656e74 10557:O5|0,0,0,@10559,@10558 10558:O2|@10562,0 10559:O2|@10560,0 10560:O2|0,@10561 10561:O5|@5716,125,125,0,0 10562:O2|3,@10563 10563:S11|4c6f6164436c6f73757265 10564:O5|0,0,0,@10566,@10565 10565:O2|@10569,0 10566:O2|@10567,0 10567:O2|0,@10568 10568:O5|@5716,124,124,0,0 10569:O2|3,@10570 10570:S9|4c6f61644c6f63616c 10571:O2|@10575,0 10572:O2|@10573,0 10573:O2|0,@10574 10574:O5|@5716,126,126,0,0 10575:O2|3,@10576 10576:S13|4c6f6164526563757273697665 10577:O1|@16832 10578:O5|0,0,0,@10588,@10587 10579:S18|7072696e742d696e6c696e65537461747573 10580:O5|0,0,0,@10582,@10581 10581:O2|@10585,0 10582:O2|@10583,0 10583:O2|0,@10584 10584:O5|@5716,40,40,0,0 10585:O2|3,@10586 10586:S6|496e6c696e65 10587:O2|@10591,0 10588:O2|@10589,0 10589:O2|0,@10590 10590:O5|@5716,39,39,0,0 10591:O2|3,@10592 10592:S9|4e6f6e496e6c696e65 10593:O5|@16833,@141,@126,@143,@142 10594:O5|0,0,0,@10623,@10622 10595:O2|3,@10596 10596:S6|73697a65203d 10597:O2|3,@10598 10598:S8|736574746572203d 10599:O5|0,0,0,@10601,@10600 10600:O2|@10604,0 10601:O2|@10602,0 10602:O2|0,@10603 10603:O5|@5716,118,118,0,0 10604:O2|3,@10605 10605:S9|436f6e7461696e6572 10606:O5|0,0,0,@10608,@10607 10607:O2|@10611,0 10608:O2|@10609,0 10609:O2|0,@10610 10610:O5|@5716,115,115,0,0 10611:O2|3,@10612 10612:S6|4465636c6172 10613:O5|0,0,0,@10615,@10614 10614:O2|@10618,0 10615:O2|@10616,0 10616:O2|0,@10617 10617:O5|@5716,117,117,0,0 10618:O2|3,@10619 10619:S11|4e756c6c42696e64696e67 10620:O2|3,@10621 10621:S8|6c616d626461203d 10622:O2|@10626,0 10623:O2|@10624,0 10624:O2|0,@10625 10625:O5|@5716,116,116,0,0 10626:O2|3,@10627 10627:S7|52656344656373 10628:O5|0,0,0,@10630,@10629 10629:O2|@10633,0 10630:O2|@10631,0 10631:O2|0,@10632 10632:O5|@4896,167,167,0,0 10633:O2|3,@10634 10634:S6|476c6f62616c 10635:O4|0,@10636,1,1 10636:O1|@16842 10637:S9|7072696e742d696e74 10638:O4|0,@10639,3,1 10639:O1|@16843 10640:S11|7072696e742d6c6576656c 10641:O2|@16844,@145 10642:O5|0,0,0,@10655,@10654 10643:O2|@9324,@10644 10644:O2|@5091,@10645 10645:O2|@10647,@10646 10646:O2|@5091,@10649 10647:O2|3,@10648 10648:S8|6c6f6f6b7570203d 10649:O2|@10650,@9320 10650:O2|3,@10651 10651:S2|666e 10652:O2|3,@10653 10653:S5|6c6576203d 10654:O2|@10658,0 10655:O2|@10656,0 10656:O2|0,@10657 10657:O5|@4715,71,71,0,0 10658:O2|3,@10659 10659:S5|4c6576656c 10660:O1|@16845 10661:O5|0,0,0,@10668,@10667 10662:S19|7072696e742d637265617465436c6f73757265 10663:O4|0,@10664,3,1 10664:O1|@16846 10665:O4|0,@10666,2,2 10666:O1|@16847 10667:O2|@10671,0 10668:O2|@10669,0 10669:O2|0,@10670 10670:O5|@4824,460,460,0,0 10671:O2|3,@5554 10672:O2|3,@10673 10673:S7|6c6576656c203d 10674:O5|0,0,0,@10676,@10675 10675:O2|@10679,0 10676:O2|@10677,0 10677:O2|0,@10678 10678:O5|@4896,168,168,0,0 10679:O2|3,@5555 10680:O5|0,0,0,@10682,@10681 10681:O2|@10685,0 10682:O2|@10683,0 10683:O2|0,@10684 10684:O5|@4896,171,171,0,0 10685:O2|3,@10686 10686:S10|4f7665726c6f61646564 10687:O2|@10691,0 10688:O2|@10689,0 10689:O2|0,@10690 10690:O5|@4896,169,169,0,0 10691:O2|3,@10692 10692:S8|53656c6563746564 10693:O1|@16848 10694:O5|0,0,0,@10752,@10751 10695:S19|7072696e742d74797065446570656e64656e74 10696:O5|0,0,0,@10698,@10697 10697:O2|@10701,0 10698:O2|@10699,0 10699:O2|0,@10700 10700:O5|@4896,239,239,0,0 10701:O2|3,@10702 10702:S11|4164644f7665726c6f6164 10703:O5|0,0,0,@10705,@10704 10704:O2|@10708,0 10705:O2|@10706,0 10706:O2|0,@10707 10707:O5|@4896,236,236,0,0 10708:O2|3,@10709 10709:S9|416464507265747479 10710:O5|0,0,0,@10712,@10711 10711:O2|@10715,0 10712:O2|@10713,0 10713:O2|0,@10714 10714:O5|@4896,237,237,0,0 10715:O2|3,@5501 10716:O5|0,0,0,@10718,@10717 10717:O2|@10721,0 10718:O2|@10719,0 10719:O2|0,@10720 10720:O5|@4896,241,241,0,0 10721:O2|3,@10722 10722:S11|4765744c6f636174696f6e 10723:O5|0,0,0,@10725,@10724 10724:O2|@10728,0 10725:O2|@10726,0 10726:O2|0,@10727 10727:O5|@4896,234,234,0,0 10728:O2|3,@10729 10729:S9|476574507265747479 10730:O5|0,0,0,@10732,@10731 10731:O2|@10735,0 10732:O2|@10733,0 10733:O2|0,@10734 10734:O5|@4896,235,235,0,0 10735:O2|3,@10736 10736:S10|4d616b65537472696e67 10737:O5|0,0,0,@10739,@10738 10738:O2|@10742,0 10739:O2|@10740,0 10740:O2|0,@10741 10741:O5|@4896,238,238,0,0 10742:O2|3,@10743 10743:S8|4e6f74457175616c 10744:O5|0,0,0,@10746,@10745 10745:O2|@10749,0 10746:O2|@10747,0 10747:O2|0,@10748 10748:O5|@4896,233,233,0,0 10749:O2|3,@10750 10750:S5|5072696e74 10751:O2|@10755,0 10752:O2|@10753,0 10753:O2|0,@10754 10754:O5|@4896,240,240,0,0 10755:O2|3,@10756 10756:S7|54797065446570 10757:O5|0,0,0,@10759,@10758 10758:O2|@10762,0 10759:O2|@10760,0 10760:O2|0,@10761 10761:O5|@9148,463,463,0,0 10762:O2|3,@10763 10763:S8|46726565536c6f74 10764:O5|0,0,0,@10766,@10765 10765:O2|@10769,0 10766:O2|@10767,0 10767:O2|0,@10768 10768:O5|@9148,461,461,0,0 10769:O2|3,@10770 10770:S10|53686172656457697468 10771:O5|0,0,0,@10773,@10772 10772:O2|@10776,0 10773:O2|@10774,0 10774:O2|0,@10775 10775:O5|@9148,464,464,0,0 10776:O2|3,@10777 10777:S5|556e736574 10778:O4|0,@10779,3,1 10779:O1|@16849 10780:O2|3,@10781 10781:S14|6465736372697074696f6e73203d 10782:O2|3,@10783 10783:S9|626f756e644964203d 10784:O2|@10788,0 10785:O2|@10786,0 10786:O2|0,@10787 10787:O5|@9148,462,462,0,0 10788:O2|3,@10789 10789:S12|5661726961626c65536c6f74 10790:O2|@16850,@10791 10791:O2|@17560,@10790 10792:O1|@17558 10793:S36|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529 10794:O1|@16854 10795:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283129283129 10796:S54|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e7465722836292d45 10797:S5|56616c7565 10798:O1|@16853 10799:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529737472756374456e762d283129 10800:O1|@16856 10801:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629 10802:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629283129 10803:S2|2028 10804:S39|2920697320616c72656164792070726573656e7420696e2074686973207369676e61747572652e 10805:S28|5349474e41545552455328292e6572726f724d73674e656172283529 10806:O1|@16859 10807:O1|@16862 10808:S9|537472756374757265 10809:O1|@16863 10810:O4|@16,@4583,@10812,@10811 10811:O5|@9148,989,0,989,0 10812:S28|456e746572696e672066697869747920696e207369676e6174757265 10813:O1|@16864 10814:O4|@16,@4583,@10816,@10815 10815:O5|@9148,990,0,990,0 10816:S31|456e746572696e67207369676e617475726520696e207369676e6174757265 10817:O1|@16865 10818:O4|@16,@4583,@10820,@10819 10819:O5|@9148,991,0,991,0 10820:S29|456e746572696e672066756e63746f7220696e207369676e6174757265 10821:O1|@16866 10822:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329 10823:O1|@16868 10824:S59|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332970537472756374283229 10825:O1|@16873 10826:S69|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329705374727563742832296e6577456e762d283129 10827:O1|@16874 10828:S44|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529 10829:O1|@16876 10830:S32|5349474e41545552455328292e73696756616c2836296c6f6f6b536967283229 10831:S11|5369676e61747572652028 10832:S23|2920686173206e6f74206265656e206465636c61726564 10833:S31|5349474e41545552455328292e676976654572726f72283329283129283129 10834:O1|@16878 10835:S49|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529762d283129 10836:O1|@16879 10837:S57|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e6577496473283229 10838:O4|@16,@4583,@10840,@10839 10839:O5|@9148,778,0,778,0 10840:S28|4d617020646f6573206e6f742072657475726e20426f756e64204964 10841:O1|@16881 10842:O1|@16884 10843:S39|5349474e41545552455328292e73696756616c2836296d616b655661726961626c654964283629 10844:O1|@16882 10845:S40|5354525543545f56414c5328292e6d616b65426f756e644964576974684571557064617465283129 10846:O1|@16883 10847:S28|5354525543545f56414c5328292e6d616b65426f756e644964283129 10848:O4|11,@4007,0,@10854 10849:S22|5374726574636841727261792e757064617465283329 10850:O4|103,@4629,@10852,@10851 10851:O5|@10853,93,0,93,0 10852:S39|417474656d707420746f207570646174652061206c6f636b656420737472657463684172726179 10853:S35|6d6c736f757263652f4d4c436f6d70696c65722f5374726574636841727261792e4d4c 10854:O5|@4559,138,0,138,0 10855:S66|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e65774964732832296e65774d6170283129 10856:S59|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d61704964732d6d61704964283129 10857:S60|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657256616c283129 10858:S58|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f636573735369672833296d616b654964283429 10859:O1|@16900 10860:S64|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332966696e64457175616c697479283129 10861:O1|@16892 10862:S37|545950455f5452454528292e747970655065726d697473457175616c697479283129283129 10863:O1|@16893 10864:O6|@16894,@91,@89,@86,@47,@107 10865:S23|545950455f5452454528292e657175616c697479283329 10866:O4|@16,@4583,@10868,@10867 10867:O5|@8028,1725,0,1725,0 10868:S28|657175616c697479202d204f7665726c6f616473657420666f756e64 10869:O1|@16896 10870:O4|@16,@4583,@10872,@10871 10871:O5|@9148,493,0,493,0 10872:S20|7265616c49643a2053686172696e67206c6f6f70 10873:O1|@16897 10874:O1|@16898 10875:O4|@16,@4583,@10877,@10876 10876:O5|@9148,1261,0,1261,0 10877:S30|696e7465726e616c4d61703a204e6f7420626f756e64206f722046726565 10878:O1|@16899 10879:O2|@16901,@10880 10880:O5|@17186,@11719,@157,@174,@151 10881:O1|@16903 10882:S30|54595045434845434b5f50415253455452454528292e7061737332283529 10883:O1|@16902 10884:S37|54595045434845434b5f50415253455452454528292e7061737332283529656e762d283129 10885:O1|@16906 10886:S45|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529 10887:S56|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352974797065456e762d283129 10888:O2|3,@11428 10889:S57|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229 10890:O4|@16,@4583,@10892,@10891 10891:O5|@10893,1414,0,1414,0 10892:S28|61737369676e54797065733a20656d7074797472656520666f756e64 10893:S53|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f54595045434845434b5f5041525345545245452e736d6c 10894:O4|@16,@4583,@10896,@10895 10895:O5|@10893,1411,0,1411,0 10896:S34|61737369676e54797065733a206c617965726564207061747465726e20666f756e64 10897:O4|@16,@4583,@10899,@10898 10898:O5|@10893,1408,0,1408,0 10899:S27|61737369676e54797065733a2077696c646361726420666f756e64 10900:O1|@16908 10901:S45|54595045434845434b5f50415253455452454528292e7061737332283529676976654572726f72283329283129 10902:S30|5052494e545f50415253455452454528292e6572726f724e656172283529 10903:S20|56616c7565206f7220636f6e7374727563746f72 10904:O1|@16909 10905:S14|20696e2073747275637475726520 10906:S26|56414c55455f4f505328292e6c6f6f6b757056616c7565283429 10907:O1|@16910 10908:O1|@16911 10909:S30|56414c55455f4f505328292e6c6f6f6b7570537472756374757265283429 10910:O1|@16913 10911:S36|56414c55455f4f505328292e6d616b6553656c6563746564537472756374757265283229 10912:O1|@16914 10913:O1|@16920 10914:S32|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229 10915:S41|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70794964283129 10916:O1|@16918 10917:S46|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129 10918:S49|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129283129 10919:O1|@16919 10920:O1|@16922 10921:S28|56414c55455f4f505328292e6d6b53656c6563746564566172283329 10922:O1|@16921 10923:O1|@9103 10924:O1|@16923 10925:O1|@16928 10926:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296f7665726c6f616454797065283229 10927:O1|@16924 10928:S42|5052494e545f5441424c4528292e6765744f7665726c6f6164732831297365617263684c697374283129 10929:O1|@16925 10930:O4|@16,@4583,@10932,@10931 10931:O5|@8028,2584,0,2584,0 10932:S26|676574526573756c74202d206e6f7420612066756e6374696f6e 10933:O4|@16,@4583,@10935,@10934 10934:O5|@8028,2599,0,2599,0 10935:S42|67656e6572616c6973654f7665726c6f6164202d20617267206973206e6f742061207479706520766172 10936:S38|545950455f5452454528292e67656e6572616c6973654f7665726c6f6164283429742d283129 10937:O1|@16927 10938:S39|545950455f5452454528292e67656e6572616c6973652832296e65774d617463687c742d283129 10939:O1|@16929 10940:O1|@16930 10941:O4|@16,@4583,@11173,@11172 10942:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737341627344617461283629 10943:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836296d657373466e283329 10944:O1|@16932 10945:O3|0,@10946,@146 10946:O1|@16933 10947:O4|@16,@4583,@10953,@10952 10948:S25|434f44455452454528292e626f74746f6d4c6576656c283129 10949:O4|@16,@4583,@10951,@10950 10950:O5|@4715,79,0,79,0 10951:S12|626f74746f6d206c6576656c 10952:O5|@4715,76,0,76,0 10953:S14|6c6f61643a206e65676174697665 10954:O1|@16934 10955:O2|@16973,@107 10956:O1|@16938 10957:S28|545950455f5452454528292e61737369676e54797065732833292d45 10958:S16|5479706520636f6e7374727563746f72 10959:S24|56414c55455f4f505328292e6c6f6f6b7570547970283329 10960:O1|@16939 10961:O1|@16944 10962:S28|434f5049455228292e66756c6c436f70794461746174797065283329 10963:S38|434f5049455228292e66756c6c436f70794461746174797065283329726573456e762d283129 10964:O1|@16941 10965:O5|@10967,259,0,259,0 10966:S9|656e74657256616c20 10967:S30|6d6c736f757263652f4d4c436f6d70696c65722f434f504945522e736d6c 10968:O1|@16942 10969:O5|@10967,258,0,258,0 10970:S12|656e74657253747275637420 10971:O1|@16943 10972:O4|11,@4007,0,@10974 10973:S33|434f5049455228292e66756c6c436f707944617461747970652833295f2d283129 10974:O5|@10967,261,0,261,0 10975:S24|434f5049455228292e6c6f63616c436f7079536967283729 10976:O1|@16946 10977:S41|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629 10978:O1|@16949 10979:S58|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6453756253747275637473283329 10980:O1|@16951 10981:O1|@16956 10982:S53|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329 10983:S64|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6454797065732833296d616b654e616d65283129 10984:S62|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f70794964283129 10985:O1|@16955 10986:S68|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129 10987:S71|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129283129 10988:O1|@16960 10989:S39|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129 10990:S48|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129636f70794964283129 10991:S42|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129283129 10992:O1|@16961 10993:O1|@16972 10994:S27|434f5049455228292e6c6f63616c436f7079536967283729283329 10995:O1|@16964 10996:S39|434f5049455228292e6c6f63616c436f70795369672837292833296e65775369672d5f2d283129 10997:O1|@16966 10998:O1|@16968 10999:O1|@16970 11000:O1|@16971 11001:S37|434f5049455228292e6c6f63616c436f7079536967283729636f7079547970283129283129 11002:O1|@9099 11003:O1|@16974 11004:S26|545950455f5452454528292e61737369676e5479706573283329 11005:O1|@16979 11006:S46|545950455f5452454528292e61737369676e54797065732833297479706546726f6d547970655061727365283129 11007:S13|2074797065287329206e6f7420 11008:S11|2920726571756972657320 11009:S18|5479706520636f6e7374727563746f722028 11010:O1|@16975 11011:O1|@16976 11012:O1|@16977 11013:O1|@16978 11014:S52|2068617320616c7265616479206265656e2075736564206173206120636f6e7374727563746f7220696e20746869732074797065 11015:O1|@16981 11016:O1|@16982 11017:O1|@16986 11018:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e73747273283229 11019:O1|@16983 11020:O1|@16984 11021:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129 11022:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129283129 11023:O1|@16990 11024:S12|2220697320696c6c6567616c 11025:S48|54595045434845434b5f50415253455452454528292e7061737332283529636865636b466f724275696c74496e283529 11026:S25|526562696e64696e67206f722073706563696679696e672022 11027:O3|@16991,@10864,@147 11028:O1|@17015 11029:S40|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229 11030:O5|0,0,0,@11120,@11119 11031:S11|7072696e742d7374617465 11032:O4|0,@11033,3,1 11033:O1|@16993 11034:S19|7072696e742d74797065436f6e737472536574 11035:O3|@16994,@149,@123 11036:O5|0,0,0,@11039,@11038 11037:S12|7072696e742d76616c756573 11038:O2|@11042,0 11039:O2|@11040,0 11040:O2|0,@11041 11041:O5|@4896,159,159,0,0 11042:O2|3,@11043 11043:S13|54797065436f6e737472536574 11044:O5|@16996,@114,@121,@150,@112 11045:O5|0,0,0,@11074,@11073 11046:S9|7072696e742d726566 11047:O4|0,@11048,2,3 11048:O1|@17001 11049:O2|3,@11064 11050:O4|0,@11051,1,1 11051:O1|@17002 11052:O4|0,@11053,3,1 11053:O1|@17003 11054:O4|0,@11055,2,1 11055:O1|@17004 11056:O4|0,@11057,3,1 11057:O1|@17005 11058:O4|0,@11059,2,2 11059:O1|@17006 11060:O2|3,@11061 11061:S14|726563757273697665526566203d 11062:O2|3,@11063 11063:S10|6c6f63616c526566203d 11064:S13|6578706f72746564526566203d 11065:O2|3,@11066 11066:S8|747970654f66203d 11067:O2|3,@11068 11068:S12|7265666572656e636573203d 11069:O2|3,@11070 11070:S15|696e7374616e63655479706573203d 11071:O2|3,@11072 11072:S7|636c617373203d 11073:O2|@11077,0 11074:O2|@11075,0 11075:O2|0,@11076 11076:O5|@4896,244,244,0,0 11077:O2|3,@10797 11078:O1|@17007 11079:O5|0,0,0,@11107,@11106 11080:S16|7072696e742d76616c7565436c617373 11081:O2|3,@11082 11082:S11|6f66436f6e73747273203d 11083:O2|3,@11084 11084:S9|6e756c6c617279203d 11085:O5|0,0,0,@11087,@11086 11086:O2|@11090,0 11087:O2|@11088,0 11088:O2|0,@11089 11089:O5|@4896,260,260,0,0 11090:O2|3,@11091 11091:S11|436f6e7374727563746f72 11092:O5|0,0,0,@11094,@11093 11093:O2|@11097,0 11094:O2|@11095,0 11095:O2|0,@11096 11096:O5|@4896,259,259,0,0 11097:O2|3,@11098 11098:S9|457863657074696f6e 11099:O5|0,0,0,@11101,@11100 11100:O2|@11104,0 11101:O2|@11102,0 11102:O2|0,@11103 11103:O5|@4896,258,258,0,0 11104:O2|3,@11105 11105:S9|50617474426f756e64 11106:O2|@11110,0 11107:O2|@11108,0 11108:O2|0,@11109 11109:O5|@4896,257,257,0,0 11110:O2|3,@11111 11111:S8|56616c426f756e64 11112:O5|0,0,0,@11114,@11113 11113:O2|@11117,0 11114:O2|@11115,0 11115:O2|0,@11116 11116:O5|@8028,1740,1740,0,0 11117:O2|3,@11118 11118:S7|4e6f745365656e 11119:O2|@11123,0 11120:O2|@11121,0 11121:O2|0,@11122 11122:O5|@8028,1739,1739,0,0 11123:O2|3,@11124 11124:S9|50726f636573736564 11125:O1|@17008 11126:S26|5554494c49544945535f28292e6d61705461626c652832292d45 11127:O1|@17009 11128:S24|5554494c49544945535f28292e6d61705461626c65283229 11129:O1|@17012 11130:S32|5554494c49544945535f28292e6d61705461626c65283229656e746572283129 11131:S35|5554494c49544945535f28292e6d61705461626c6528322964656c6574652832292829 11132:S33|5554494c49544945535f28292e6d61705461626c652832296c6f6f6b7570283129 11133:O1|@17014 11134:S54|545950455f5452454528292e636f6d707574654461746174797065457175616c697469657328322967656e457175616c697479283129 11135:O4|101,@8038,0,@11136 11136:O5|@8028,1748,0,1748,0 11137:O4|101,@8038,0,@11138 11138:O5|@8028,1749,0,1749,0 11139:O4|101,@8038,0,@11140 11140:O5|@8028,93,0,93,0 11141:S57|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229636f6e737472457128332965712d283129 11142:S43|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229283129 11143:O1|@17016 11144:O5|0,0,0,@11160,@11159 11145:O5|0,0,0,@11147,@11146 11146:O2|@11150,0 11147:O2|@11148,0 11148:O2|0,@11149 11149:O5|@8028,1638,1638,0,0 11150:O2|3,@11151 11151:S5|4d61796265 11152:O5|0,0,0,@11154,@11153 11153:O2|@11157,0 11154:O2|@11155,0 11155:O2|0,@11156 11156:O5|@8028,1637,1637,0,0 11157:O2|3,@11158 11158:S2|4e6f 11159:O2|@11163,0 11160:O2|@11161,0 11161:O2|0,@11162 11162:O5|@8028,1636,1636,0,0 11163:O2|3,@11164 11164:S3|596573 11165:S80|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657256616c466e283129 11166:O1|@17023 11167:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d616c6c56616c4e616d6573283129 11168:S57|54595045434845434b5f50415253455452454528292e7061737332283529737472696e67734f665365617263684c6973742834295f2d283129 11169:O1|@17022 11170:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657254797065466e283129 11171:O1|@17026 11172:O5|@4896,354,0,354,0 11173:S41|736574457175616c6974793a2063616e27742073657420657175616c69747920617474726962757465 11174:O2|@4870,@8178 11175:O12|@17027,@10864,@107,@29,@38,@4995,@82,@7244,@34,@4934,@36,@7734 11176:O1|@17028 11177:S25|545950455f5452454528292e756e6966795479706573283229 11178:S20|28496e636f6d70617469626c6520747970657329 11179:S33|545950455f5452454528292e756e69667954797065732832296d61746368283229 11180:O1|@17029 11181:O1|@17038 11182:S42|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229 11183:S42|2843616e6e6f7420756e6966792077697468206578706c696369742074797065207661726961626c6529 11184:O1|@17031 11185:S44|2854797065207661726961626c65206973206672656520696e20737572726f756e64696e672073636f706529 11186:S61|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296f6363757273436865636b4661696c73283229 11187:O1|@17032 11188:O1|@17034 11189:S44|2854797065207661726961626c6520746f20626520756e6966696564206f636375727320696e207479706529 11190:O1|@17035 11191:S45|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229283129 11192:O1|@17036 11193:O1|@17037 11194:S54|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b45715476283129 11195:S63|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b4571547628312966696c746572283129 11196:S24|28526571756972657320657175616c697479207479706529 11197:S57|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129 11198:S60|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129283129 11199:O1|@17040 11200:O1|@17042 11201:S48|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f726473283429 11202:S28|28446966666572656e74206e756d626572206f66206669656c647329 11203:O1|@17041 11204:S9|206d697373696e6729 11205:S64|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f7264732834296d617463684c6162656c6c6564283229 11206:S7|284669656c6420 11207:O1|@17043 11208:S47|545950455f5452454528292e756e69667954797065732832296d61746368283229696e746572736563742832292829 11209:S27|28496e636f6d70617469626c65206f7665726c6f6164696e677329 11210:S32|28446966666572656e74206e756d62657273206f6620617267756d656e747329 11211:S29|28446966666572656e74207479706520636f6e7374727563746f727329 11212:O4|@16,@4583,@11214,@11213 11213:O5|@8028,2443,0,2443,0 11214:S36|556e696669636174696f6e3a204f7665726c6f61645365742f4f7665726c6f6164536574 11215:S10|417267756d656e74733a 11216:O1|@17056 11217:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283529 11218:S5|756e696679 11219:O2|@17057,@9338 11220:S36|545950455f5452454528292e756e69667954797065734572726f725265706f7274283429 11221:O2|3,@11230 11222:S50|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129 11223:S6|43616e277420 11224:O1|@17059 11225:O1|@17060 11226:S71|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e737472283329 11227:O1|@17062 11228:S87|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e7374722833297072696e745769746844657363283329 11229:O1|@17061 11230:S2|746f 11231:O2|@5091,@11232 11232:O2|@11233,0 11233:O2|3,@11211 11234:O3|1,1,3 11235:O2|3,@11236 11236:S7|526561736f6e3a 11237:O2|3,@11238 11238:S46|417267756d656e7473206f6620616e64616c736f206d7573742068617665207479706520626f6f6c2a626f6f6c2e 11239:O1|@17063 11240:O1|@17064 11241:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296e6f6e457870616e73697665283129 11242:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352969734e6f6e526566436f6e7374727563746f72283129 11243:S9|46756e6374696f6e3a 11244:S9|417267756d656e743a 11245:O2|@5091,@11246 11246:O2|@11247,0 11247:O5|0,0,0,0,@11248 11248:O2|@11235,@11249 11249:O2|@11234,@11250 11250:O2|@11251,0 11251:O2|3,@11252 11252:S49|56616c7565206265696e67206170706c69656420646f6573206e6f74206861766520612066756e6374696f6e2074797065 11253:O2|3,@11254 11254:S35|54797065206572726f7220696e2066756e6374696f6e206170706c69636174696f6e2e 11255:O1|@17066 11256:S63|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283129283129 11257:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229 11258:S37|2068617320616c7265616479206265656e20626f756e6420696e2074686973206d61746368 11259:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d61746368547265652832296d657373466e283329 11260:O1|@17069 11261:S28|56414c55455f4f505328292e6d616b654c6f63616c56283129283129 11262:O1|@17070 11263:O1|@17084 11264:S62|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e283629 11265:O1|@17072 11266:S21|206973206e6f74206120636f6e7374727563746f72 11267:S46|436f6e7374727563746f7220696e2061207061747465726e20776173206e6f7420616e206964656e746966696572 11268:S6|56616c75653a 11269:O2|3,@11270 11270:S11|436f6e73747261696e743a 11271:O2|3,@11272 11272:S33|54797065206d69736d6174636820696e207479706520636f6e73747261696e742e 11273:S49|4964656e746966696572206265666f72652060617327206d757374206e6f74206265206120636f6e7374727563746f722e 11274:O1|@17076 11275:S51|436f6e7374727563746f72206d757374206265206170706c69656420746f20616e20617267756d656e74207061747465726e2e 11276:O1|@17077 11277:S74|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e2836296d61704c6162656c73283129 11278:S79|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e28362970726f63657373456c656d656e74283129 11279:O1|@17079 11280:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129 11281:S50|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129283129 11282:S40|456c656d656e747320696e2061206c697374206861766520646966666572656e742074797065732e 11283:S4|4974656d 11284:O1|@17081 11285:O1|@17082 11286:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c697374283329 11287:O2|@4151,0 11288:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833296170706c794c697374283329 11289:S3|20313a 11290:S4|7320312d 11291:O1|@17083 11292:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833297072696e744c697374283429 11293:O1|@17087 11294:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229626f6479456e762d283129 11295:O1|@17088 11296:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129 11297:O1|@17090 11298:S52|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129283129 11299:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283529 11300:S37|436c617573657320696e2063617365206861766520646966666572656e742074797065732e 11301:S6|436c61757365 11302:S3|49663a 11303:O2|3,@11304 11304:S46|436f6e646974696f6e20696e2069662d73746174656d656e74206d7573742068617665207479706520626f6f6c2e 11305:S5|5468656e3a 11306:S5|456c73653a 11307:O2|3,@11308 11308:S46|54797065206d69736d61746368206265747765656e207468656e2d7061727420616e6420656c73652d706172742e 11309:O1|@17095 11310:O1|@17096 11311:O1|@17098 11312:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129 11313:S91|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f707954797065436f6e73283129 11314:S89|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f7079547970283129283129 11315:S66|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296d657373466e283329 11316:O1|@17100 11317:O4|@16,@4583,@11321,@11320 11318:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f63657373457863657074696f6e283129 11319:S22|29206973206e6f7420616e20657863657074696f6e2e 11320:O5|@10893,1279,0,1279,0 11321:S41|70726f63657373457863657074696f6e3a206261646c792d666f726d65642070617273652d74726565 11322:O1|@17104 11323:O1|@11327 11324:S27|545950455f5452454528292e636865636b44697363617264283229 11325:O1|@11326 11326:S36|41206e6f6e20756e69742076616c7565206973206265696e67206469736361726465642e 11327:S36|412066756e6374696f6e2076616c7565206973206265696e67206469736361726465642e 11328:S46|436c617573657320696e20666e2065787072657373696f6e206861766520646966666572656e742074797065732e 11329:O1|@17108 11330:O11|@17132,@9338,@29,@38,@4995,@82,@7244,@34,@4934,@36,@7734 11331:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e283429 11332:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834295f2d283129 11333:O1|@17111 11334:S27|545950455f5452454528292e6c696e6b5479706556617273283229 11335:S73|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834296d7367466e283329 11336:O1|@17113 11337:S46|436c617573616c2066756e6374696f6e20646f6573206e6f74206861766520616e7920706172616d65746572732e 11338:S84|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342966696e644e616d65416e645061747473283129 11339:O4|@16,@4583,@11341,@11340 11340:O5|@10893,1676,0,1676,0 11341:S41|66696e644e616d65416e6450617474733a206261646c792d666f726d65642070617273652d74726565 11342:O1|@17114 11343:O2|3,@11367 11344:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e67283129 11345:O1|@17115 11346:O2|3,@11361 11347:S98|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129 11348:S39|2068617320616c7265616479206265656e20626f756e6420696e207468697320636c617573652e 11349:S107|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c617573652831296d657373466e283329 11350:O1|@17117 11351:O1|@17124 11352:S109|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129626f6479456e762d283129 11353:O1|@17123 11354:S11|45787072657373696f6e3a 11355:O2|3,@11356 11356:S51|426f6479206f662066756e2062696e64696e6720646f6573206e6f74206d61746368207479706520636f6e73747261696e742e 11357:O1|@17127 11358:S7|436c617573653a 11359:O2|3,@11360 11360:S14|4f7468657220636c61757365733a 11361:S59|54797065206f6620636c6175736520646f6573206e6f74206d61746368207468652074797065206f662070726576696f757320636c61757365732e 11362:O1|@17128 11363:O1|@17129 11364:O1|@17130 11365:S95|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e672831296d6b4964656e74283229283129 11366:S9|5661726961626c653a 11367:S62|54797065206f662066756e6374696f6e20646f6573206e6f74206d617463682074797065206f6620726563757273697665206170706c69636174696f6e2e 11368:S45|54595045434845434b5f50415253455452454528292e7061737332283529666f756e644e656172283129283129 11369:O1|@17133 11370:S34|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729 11371:S32|697320616e20756e7265736f6c76656420666c657869626c65207265636f7264 11372:S44|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e28372967656e6572616c283329 11373:O1|@17134 11374:O1|@17136 11375:O1|@17137 11376:S29|696e636c75646573206120667265652074797065207661726961626c65 11377:O1|@17138 11378:S46|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729676976654572726f72283229 11379:O4|@16,@4583,@11381,@11380 11380:O5|@8028,2889,0,2889,0 11381:S25|67656e6572616c3a204e6f206d61746368696e672074797065 11382:S40|436c617573657320696e2068616e646c6572206861766520646966666572656e742074797065732e 11383:O1|@17140 11384:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283129283129 11385:O1|@17147 11386:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296c6f63616c456e762d283129 11387:O1|@17148 11388:S68|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229626f6479456e762d283129 11389:O1|@17152 11390:O1|@17154 11391:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e7472696573283229 11392:O1|@17157 11393:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e74726965732832295f2d283129 11394:O1|@17159 11395:O1|@17161 11396:S35|5354525543545f56414c5328292e6d616b6553656c6563746564537472756374283329 11397:O1|@17160 11398:O1|@17162 11399:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229283329 11400:O1|@17163 11401:O1|@17164 11402:O2|3,@11403 11403:S45|417267756d656e7473206f66206f72656c7365206d7573742068617665207479706520626f6f6c2a626f6f6c2e 11404:S6|52616973653a 11405:O2|3,@11406 11406:S42|457863657074696f6e20746f20626520726169736564206d757374206861766520747970652065786e2e 11407:O1|@17165 11408:O1|@17167 11409:O1|@17170 11410:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f6365737354797065283229 11411:O1|@17171 11412:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329 11413:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833295f2d283129 11414:S75|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833296e6577456e762d283329 11415:O1|@17176 11416:O1|@17178 11417:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329646f56616c283129656e74657256616c73283129 11418:O1|@17179 11419:S51|526563757273697665206465636c61726174696f6e206973206e6f74206f662074686520666f726d2060666e206d6174636827 11420:S78|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b5479706573283229 11421:O1|@17184 11422:S88|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b54797065732832296e6577456e762d283129 11423:S8|5061747465726e3a 11424:O2|3,@11425 11425:S47|5061747465726e20616e642065787072657373696f6e206861766520696e636f6d70617469626c652074797065732e 11426:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329656e746572446563283129 11427:S6|5768696c653a 11428:S55|4c6f6f7020636f6e646974696f6e206f66207768696c652d65787072657373696f6e206d7573742068617665207479706520626f6f6c2e 11429:O1|@17376 11430:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283329 11431:O1|@17187 11432:O1|@17189 11433:S37|4578706f72745472656528292e6578706f72744e617669676174696f6e50726f7073283329 11434:O1|@17188 11435:S50|4558504f52545f50415253455452454528292e6765744578706f727454726565283329636f6d6d6f6e50726f70732d283129 11436:O1|@17191 11437:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296173506172656e74283129 11438:O5|0,0,0,@11442,@11458 11439:S11|7072696e742d6c54797065 11440:O5|0,0,0,@11442,@11441 11441:O2|@11446,0 11442:O2|@11443,0 11443:O2|0,@11444 11444:O5|@11445,66,66,0,0 11445:S50|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4558504f52545f5041525345545245452e736d6c 11446:O2|3,@11447 11447:S5|4461746154 11448:O4|0,@11449,3,1 11449:O1|@17194 11450:O4|0,@11451,2,1 11451:O1|@17195 11452:O4|0,@11453,1,1 11453:O1|@17196 11454:O5|0,0,0,@11442,@11455 11455:O2|@11456,0 11456:O2|3,@11457 11457:S4|4465636c 11458:O2|@11459,0 11459:O2|3,@11460 11460:S5|5479706542 11461:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745472656557697468427074283129 11462:O1|@17199 11463:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283129 11464:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329 11465:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296173506172656e74283129 11466:O1|@17205 11467:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296765744e616d65283129 11468:S34|4578706f72745472656528292e676574537472696e67417354726565283529283129 11469:O1|@17204 11470:O4|@17208,@9338,@11472,@107 11471:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e6728332967657454797065283129 11472:O2|@17240,@11470 11473:O1|@17239 11474:S29|545950455f5452454528292e747970654578706f727454726565283329 11475:S44|545950455f5452454528292e747970654578706f727454726565283329636f6d6d6f6e50726f70732d283129 11476:S40|545950455f5452454528292e747970654578706f7274547265652833296173506172656e74283129 11477:O1|@17211 11478:O2|@4062,0 11479:O1|@17215 11480:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d6765744e616d65283129 11481:O1|@17214 11482:S53|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d676574417267283129 11483:O1|@17220 11484:O1|@17219 11485:O1|@17227 11486:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d67657441726773283129 11487:O1|@17222 11488:S26|4578706f72745472656528292e6578706f72744c697374283229 11489:O1|@17224 11490:S40|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283129283129 11491:S37|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283329 11492:O4|@72,@5747,0,@11493 11493:O5|@11494,88,0,88,0 11494:S34|6d6c736f757263652f4d4c436f6d70696c65722f4578706f7274547265652e736d6c 11495:O1|@17228 11496:O1|@17229 11497:O1|@17231 11498:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283129 11499:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283329 11500:S54|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 11501:S53|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c6428332967657454797065283129 11502:O1|@17237 11503:S52|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296765744c6162283129 11504:O1|@17236 11505:O1|@17238 11506:S29|545950455f5452454528292e747970654578706f727454726565283129 11507:O1|@17244 11508:O1|@17243 11509:O1|@17252 11510:S68|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e73747273283129 11511:O1|@17247 11512:O1|@17248 11513:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283129 11514:O1|@17251 11515:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283229 11516:O1|@17250 11517:O1|@17255 11518:O1|@17254 11519:O1|@17257 11520:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283129 11521:O1|@17262 11522:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329 11523:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d617463682833296173506172656e74283129 11524:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329283129 11525:O1|@17260 11526:O1|@17261 11527:O1|@17263 11528:O1|@17264 11529:O1|@17265 11530:O1|@17266 11531:O1|@17267 11532:O1|@17268 11533:O1|@17269 11534:O1|@17270 11535:O1|@17271 11536:O1|@17272 11537:O1|@17273 11538:O1|@17274 11539:O1|@17275 11540:O1|@17276 11541:O1|@17277 11542:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657445787072283129 11543:O1|@17280 11544:S48|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296765744d617463686573283129 11545:O1|@17281 11546:O1|@17282 11547:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657454797065283129 11548:O1|@17286 11549:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283129 11550:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283329 11551:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296173506172656e74283129 11552:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744f6654797065283129 11553:O1|@17293 11554:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744e616d65283129 11555:O1|@17292 11556:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274457864656328332967657450726576696f7573457863283129 11557:O1|@17299 11558:O1|@17298 11559:O2|13,@7468 11560:O1|@17301 11561:O1|@17302 11562:O1|@17307 11563:O1|@17306 11564:O1|@17308 11565:O1|@17309 11566:O1|@17310 11567:O5|0,0,0,@11653,@11652 11568:S14|7072696e742d66756e456e747279 11569:O2|@17312,@153 11570:O5|0,0,0,@11622,@11621 11571:S19|7072696e742d74797065506172736574726565 11572:O5|0,0,0,@11574,@11573 11573:O2|@11577,0 11574:O2|@11575,0 11575:O2|0,@11576 11576:O5|@8028,1279,1279,0,0 11577:O2|3,@11578 11578:S12|506172736554797065426164 11579:O4|0,@11580,3,1 11580:O1|@17314 11581:O2|3,@11582 11582:S9|6e616d654c6f63203d 11583:O2|3,@11584 11584:S18|666f756e64436f6e7374727563746f72203d 11585:O2|3,@11586 11586:S8|6172674c6f63203d 11587:O5|0,0,0,@11589,@11588 11588:O2|@11592,0 11589:O2|@11590,0 11590:O2|0,@11591 11591:O5|@8028,1264,1264,0,0 11592:O2|3,@11593 11593:S21|506172736554797065436f6e737472756374696f6e 11594:O2|3,@11595 11595:S9|61726754797065203d 11596:O5|0,0,0,@11598,@11597 11597:O2|@11601,0 11598:O2|@11599,0 11599:O2|0,@11600 11600:O5|@8028,1273,1273,0,0 11601:O2|3,@11602 11602:S17|50617273655479706546756e6374696f6e 11603:O2|3,@11604 11604:S7|7479706573203d 11605:O5|0,0,0,@11607,@11606 11606:O2|@11610,0 11607:O2|@11608,0 11608:O2|0,@11609 11609:O5|@8028,1278,1278,0,0 11610:O2|3,@11611 11611:S11|5061727365547970654964 11612:O2|3,@11613 11613:S8|66726f7a656e203d 11614:O5|0,0,0,@11616,@11615 11615:O2|@11619,0 11616:O2|@11617,0 11617:O2|0,@11618 11618:O5|@8028,1275,1275,0,0 11619:O2|3,@11620 11620:S17|5061727365547970654c6162656c6c6564 11621:O2|@11625,0 11622:O2|@11623,0 11623:O2|0,@11624 11624:O5|@8028,1271,1271,0,0 11625:O2|3,@11626 11626:S16|50617273655479706550726f64756374 11627:O5|0,0,0,@11629,@11628 11628:O2|@11632,0 11629:O2|@11630,0 11630:O2|0,@11631 11631:O5|@11445,235,235,0,0 11632:O2|3,@11633 11633:S13|46756e436f6e73747261696e74 11634:O4|0,@11635,3,1 11635:O1|@17317 11636:O2|3,@11637 11637:S9|65787054797065203d 11638:O5|0,0,0,@11640,@11639 11639:O2|@11643,0 11640:O2|@11641,0 11641:O2|0,@11642 11642:O5|@11445,233,233,0,0 11643:O2|3,@11644 11644:S8|46756e4964656e74 11645:O5|0,0,0,@11647,@11646 11646:O2|@11650,0 11647:O2|@11648,0 11648:O2|0,@11649 11649:O5|@11445,236,236,0,0 11650:O2|3,@11651 11651:S10|46756e496e6669786564 11652:O2|@11656,0 11653:O2|@11654,0 11654:O2|0,@11655 11655:O5|@11445,234,234,0,0 11656:O2|3,@11657 11657:S8|46756e5074726565 11658:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283129 11659:O1|@17326 11660:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283329 11661:S63|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e7472792833296173506172656e74283129 11662:O1|@17322 11663:O1|@17323 11664:O1|@17324 11665:O1|@17325 11666:O1|@17328 11667:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283129 11668:O1|@17342 11669:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283329 11670:S57|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274464228332961734368696c642d283129 11671:O1|@17330 11672:O1|@17335 11673:S51|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727441436c61757365283329 11674:O1|@17331 11675:O1|@17332 11676:O1|@17333 11677:O1|@17334 11678:O1|@17336 11679:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f727454686973283129 11680:O1|@17339 11681:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283129 11682:O1|@17341 11683:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283329 11684:S72|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c6175736528332961734368696c642d283129 11685:O1|@17343 11686:O1|@17346 11687:O1|@17347 11688:O1|@17349 11689:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283129 11690:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329 11691:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 11692:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329676574457870283129 11693:O1|@17355 11694:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296765744c6162283129 11695:O1|@17354 11696:O1|@17356 11697:O1|@17357 11698:O1|@17358 11699:O1|@17359 11700:O1|@17360 11701:O1|@17361 11702:O1|@17362 11703:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745374727563744964656e74283129 11704:O1|@17363 11705:O1|@17364 11706:S44|4558504f52545f50415253455452454528292e6765744578706f727454726565283329676574457870283129 11707:O1|@17366 11708:O1|@17367 11709:O1|@17368 11710:O1|@17369 11711:O2|13,@7315 11712:O1|@17371 11713:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283129 11714:O1|@17373 11715:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283329 11716:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727456422833296578706f727454686973283129 11717:O1|@17374 11718:O1|@17375 11719:O2|@17377,@10880 11720:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283129 11721:O8|@17378,@167,@168,@169,@170,@171,@172,@158 11722:O5|0,0,0,@12240,@12239 11723:S15|7072696e742d706172736574726565 11724:O4|0,@11725,3,1 11725:O1|@17380 11726:O4|0,@11727,2,1 11727:O1|@17381 11728:O4|0,@11729,1,1 11729:O1|@17382 11730:O4|0,@11731,3,1 11731:O1|@17383 11732:O4|0,@11733,1,1 11733:O1|@17384 11734:S18|7072696e742d646174617479706562696e64 11735:S14|7072696e742d7479706562696e64 11736:O2|3,@11737 11737:S11|776974687479706573203d 11738:O2|3,@11739 11739:S10|747970656c697374203d 11740:O2|3,@11741 11741:S11|697341627354797065203d 11742:O2|3,@11743 11743:S16|657175616c697479537461747573203d 11744:O2|3,@11745 11745:S9|6465636c697374203d 11746:O5|0,0,0,@11748,@11747 11747:O2|@11752,0 11748:O2|@11749,0 11749:O2|0,@11750 11750:O5|@11751,144,144,0,0 11751:S49|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f424153455f50415253455f545245452e736d6c 11752:O2|3,@11753 11753:S22|41627344617461747970654465636c61726174696f6e 11754:O2|3,@11755 11755:S8|7365636f6e64203d 11756:O2|3,@11757 11757:S7|6669727374203d 11758:O5|0,0,0,@11760,@11759 11759:O2|@11763,0 11760:O2|@11761,0 11761:O2|0,@11762 11762:O5|@11751,186,186,0,0 11763:O2|3,@11764 11764:S7|416e64616c736f 11765:O4|0,@11766,3,1 11766:O1|@17387 11767:O2|3,@11768 11768:S9|6973496e666978203d 11769:O2|3,@11770 11770:S3|66203d 11771:O5|0,0,0,@11773,@11772 11772:O2|@11776,0 11773:O2|@11774,0 11774:O2|0,@11775 11775:O5|@11751,70,70,0,0 11776:O2|3,@11777 11777:S6|4170706c6963 11778:O4|0,@11779,3,1 11779:O1|@17388 11780:S15|7072696e742d6d6174636874726565 11781:O2|3,@11782 11782:S7|6d61746368203d 11783:O2|3,@11784 11784:S14|6c6973744c6f636174696f6e203d 11785:O5|0,0,0,@11787,@11786 11786:O2|@11790,0 11787:O2|@11788,0 11788:O2|0,@11789 11789:O5|@11751,182,182,0,0 11790:O2|3,@11791 11791:S4|43617365 11792:O4|0,@11793,3,1 11793:O1|@17390 11794:O4|0,@11795,2,1 11795:O1|@17391 11796:O4|0,@11797,1,1 11797:O1|@17392 11798:O4|0,@11799,3,1 11799:O1|@17393 11800:O4|0,@11801,2,1 11801:O1|@17394 11802:O4|0,@11803,1,1 11803:O1|@17395 11804:O2|3,@11805 11805:S8|7468656e7074203d 11806:O2|3,@11807 11807:S11|7468656e427265616b203d 11808:O2|3,@11809 11809:S8|656c73657074203d 11810:O2|3,@11811 11811:S11|656c7365427265616b203d 11812:O5|0,0,0,@11813,@10178 11813:O2|@11814,0 11814:O2|0,@11815 11815:O5|@11751,74,74,0,0 11816:O2|3,@11817 11817:S7|676976656e203d 11818:O5|0,0,0,@11820,@11819 11819:O2|@11823,0 11820:O2|@11821,0 11821:O2|0,@11822 11822:O5|@11751,118,118,0,0 11823:O2|3,@11824 11824:S10|436f6e73747261696e74 11825:O2|3,@11826 11826:S9|6f6c6454797065203d 11827:O2|3,@11828 11828:S8|6f6c644c6f63203d 11829:O2|3,@11830 11830:S9|6e657754797065203d 11831:O2|3,@11832 11832:S8|6e65774c6f63203d 11833:O5|0,0,0,@11835,@11834 11834:O2|@11838,0 11835:O2|@11836,0 11836:O2|0,@11837 11837:O5|@11751,154,154,0,0 11838:O2|3,@11839 11839:S19|44617461747970655265706c69636174696f6e 11840:O1|@17396 11841:O5|0,0,0,@11858,@11857 11842:S14|7072696e742d696e666978697479 11843:O5|0,0,0,@11845,@11844 11844:O2|@11848,0 11845:O2|@11846,0 11846:O2|0,@11847 11847:O5|@4896,502,502,0,0 11848:O2|3,@11849 11849:S5|496e666978 11850:O5|0,0,0,@11852,@11851 11851:O2|@11855,0 11852:O2|@11853,0 11853:O2|0,@11854 11854:O5|@4896,503,503,0,0 11855:O2|3,@11856 11856:S6|496e66697852 11857:O2|@11861,0 11858:O2|@11859,0 11859:O2|0,@11860 11860:O5|@4896,504,504,0,0 11861:O2|3,@11862 11862:S6|4e6f6e666978 11863:O4|0,@11864,3,1 11864:O1|@17397 11865:O2|3,@11866 11866:S7|746c697374203d 11867:O2|3,@11868 11868:S5|666978203d 11869:O5|0,0,0,@11871,@11870 11870:O2|@11874,0 11871:O2|@11872,0 11872:O2|0,@11873 11873:O5|@11751,165,165,0,0 11874:O2|3,@11875 11875:S9|446972656374697665 11876:O5|0,0,0,@11878,@11877 11877:O2|@11881,0 11878:O2|@11879,0 11879:O2|0,@11880 11880:O5|@11751,200,200,0,0 11881:O2|3,@11882 11882:S9|456d70747954726565 11883:S12|7072696e742d657862696e64 11884:O5|0,0,0,@11886,@11885 11885:O2|@11889,0 11886:O2|@11887,0 11887:O2|0,@11888 11888:O5|@11751,170,170,0,0 11889:O2|3,@11890 11890:S13|45784465636c61726174696f6e 11891:O4|0,@11892,3,1 11892:O1|@17400 11893:O4|0,@11894,2,1 11894:O1|@17401 11895:O4|0,@11896,1,1 11896:O1|@17402 11897:O5|0,0,0,@11899,@11898 11898:O2|@11902,0 11899:O2|@11900,0 11900:O2|0,@11901 11901:O5|@11751,163,163,0,0 11902:O2|3,@11903 11903:S6|457870536571 11904:O4|0,@11905,3,1 11905:O1|@17403 11906:O2|3,@11907 11907:S9|6d617463686573203d 11908:O5|0,0,0,@11910,@11909 11909:O2|@11913,0 11910:O2|@11911,0 11911:O2|0,@11912 11912:O5|@11751,129,129,0,0 11913:O2|3,@11914 11914:S2|466e 11915:S14|7072696e742d6676616c62696e64 11916:O2|@11918,@11917 11917:O2|@5091,@11920 11918:O2|3,@11919 11919:S7|6170706c79203d 11920:O2|@10650,@10643 11921:O2|3,@11922 11922:S10|696d706c69636974203d 11923:O2|3,@11924 11924:S10|6578706c69636974203d 11925:O2|3,@11926 11926:S5|646563203d 11927:O5|0,0,0,@11929,@11928 11928:O2|@11932,0 11929:O2|@11930,0 11930:O2|0,@11931 11931:O5|@11751,97,97,0,0 11932:O2|3,@11933 11933:S14|46756e4465636c61726174696f6e 11934:O2|3,@11935 11935:S8|6872756c6573203d 11936:O5|0,0,0,@11938,@11937 11937:O2|@11941,0 11938:O2|@11939,0 11939:O2|0,@11940 11940:O5|@11751,174,174,0,0 11941:O2|3,@11942 11942:S10|48616e646c6554726565 11943:O4|0,@11944,3,1 11944:O1|@17407 11945:O4|0,@11946,2,1 11946:O1|@17408 11947:S14|7072696e742d66756e6374696f6e 11948:O4|0,@11949,3,1 11949:O1|@17409 11950:O2|3,@11951 11951:S10|706f737369626c65203d 11952:O5|0,0,0,@11954,@11953 11953:O2|@11957,0 11954:O2|@11955,0 11955:O2|0,@11956 11956:O5|@11751,48,48,0,0 11957:O2|3,@11958 11958:S5|4964656e74 11959:O4|0,@11960,3,1 11960:O1|@17410 11961:O2|3,@11966 11962:O4|0,@11963,3,1 11963:O1|@17412 11964:O2|3,@11965 11965:S10|76616c4f72506174203d 11966:S14|66756c6c4c6f636174696f6e203d 11967:O5|0,0,0,@11969,@11968 11968:O2|@11972,0 11969:O2|@11970,0 11970:O2|0,@11971 11971:O5|@11751,190,190,0,0 11972:O2|3,@11973 11973:S8|4c6162656c6c6564 11974:O2|3,@11975 11975:S5|766172203d 11976:O2|3,@11977 11977:S9|7061747465726e203d 11978:O5|0,0,0,@11980,@11979 11979:O2|@11983,0 11980:O2|@11981,0 11981:O2|0,@11982 11982:O5|@11751,124,124,0,0 11983:O2|3,@11984 11984:S7|4c617965726564 11985:O4|0,@11986,3,1 11986:O1|@17414 11987:O2|3,@11988 11988:S10|656c656d656e7473203d 11989:O5|0,0,0,@11991,@11990 11990:O2|@11994,0 11991:O2|@11992,0 11992:O2|0,@11993 11993:O5|@11751,198,198,0,0 11994:O2|3,@11995 11995:S4|4c697374 11996:O4|0,@11997,3,1 11997:O1|@17415 11998:O2|3,@11999 11999:S9|6c69746572616c203d 12000:O2|3,@12001 12001:S11|636f6e766572746572203d 12002:O5|0,0,0,@12004,@12003 12003:O2|@12007,0 12004:O2|@12005,0 12005:O2|0,@12006 12006:O5|@11751,64,64,0,0 12007:O2|3,@12008 12008:S7|4c69746572616c 12009:O4|0,@12010,3,1 12010:O1|@17417 12011:O4|0,@12012,2,1 12012:O1|@17418 12013:O4|0,@12014,1,1 12014:O1|@17419 12015:O4|0,@12016,3,1 12016:O1|@17421 12017:O4|0,@12018,2,1 12018:O1|@17422 12019:O4|0,@12020,1,1 12020:O1|@17423 12021:O4|0,@12022,3,1 12022:O1|@17424 12023:O4|0,@12024,3,1 12024:O1|@17425 12025:O2|3,@12026 12026:S12|76617273496e426f6479203d 12027:O2|3,@12028 12028:S9|69734c6f63616c203d 12029:O2|3,@12030 12030:S6|64656373203d 12031:O5|0,0,0,@12033,@12032 12032:O2|@12036,0 12033:O2|@12034,0 12034:O2|0,@12035 12035:O5|@11751,132,132,0,0 12036:O2|3,@12037 12037:S8|4c6f63616c646563 12038:O4|0,@12039,2,3 12039:O1|@17426 12040:O4|0,@12041,3,1 12041:O1|@17427 12042:O4|0,@12043,3,1 12043:O1|@17428 12044:S16|7072696e742d73747275637456616c73 12045:O4|@17429,@161,@121,@112 12046:O5|0,0,0,@12050,@12049 12047:O2|3,@12048 12048:S8|7369676e6174203d 12049:O2|@12053,0 12050:O2|@12051,0 12051:O2|0,@12052 12052:O5|@4896,175,175,0,0 12053:O2|3,@7930 12054:O3|@17431,@121,@124 12055:O5|0,0,0,@12137,@12136 12056:S16|7072696e742d7369676e617475726573 12057:O1|@17434 12058:O5|0,0,0,@12119,@12118 12059:S15|7072696e742d756e69765461626c65 12060:O2|@17435,@164 12061:S11|7072696e74686173682829 12062:O5|0,0,0,@12095,@12094 12063:S10|7072696e742d68617368 12064:O1|@17437 12065:O1|@17440 12066:S18|566563746f722e7072657474792833292d45 12067:S16|566563746f722e707265747479283329 12068:S17|7072696e742d6e616d65644f7074696f6e 12069:O2|@9324,@12070 12070:O2|@5091,@12071 12071:O2|@12072,@10646 12072:O2|3,@12073 12073:S6|68617368203d 12074:O2|3,@12075 12075:S9|656e7472696573203d 12076:O5|0,0,0,@12078,@12077 12077:O2|@12081,0 12078:O2|@12079,0 12079:O2|0,@12080 12080:O5|@4584,74,74,0,0 12081:O2|3,@12082 12082:S6|46726f7a656e 12083:S11|7072696e742d6172726179 12084:O1|@17444 12085:O1|@17447 12086:S17|41727261792e7072657474792833292d45 12087:S15|41727261792e707265747479283329 12088:O4|0,@12089,2,1 12089:O1|@17448 12090:O4|0,@12091,1,1 12091:O1|@17449 12092:O2|3,@12093 12093:S6|75736564203d 12094:O2|@12098,0 12095:O2|@12096,0 12096:O2|0,@12097 12097:O5|@4584,68,68,0,0 12098:O2|3,@12099 12099:S4|48617368 12100:O1|@17450 12101:S18|7072696e746e616d65644f7074696f6e2829 12102:O5|0,0,0,@12105,@12110 12103:O5|0,0,0,@12105,@12104 12104:O2|@12108,0 12105:O2|@12106,0 12106:O2|0,@12107 12107:O5|@4584,52,52,0,0 12108:O2|3,@12109 12109:S4|4e6f6e65 12110:O2|@12111,0 12111:O2|3,@12112 12112:S4|536f6d65 12113:O4|0,@12114,3,1 12114:O1|@17452 12115:O4|0,@12116,2,1 12116:O1|@17453 12117:S15|7072696e742d756e6976657273616c 12118:O2|@12123,0 12119:O2|@12120,0 12120:O2|0,@12121 12121:O5|@12122,49,49,0,0 12122:S37|6d6c736f757263652f4d4c436f6d70696c65722f556e6976657273616c5461626c652e4d4c 12123:O2|3,@12124 12124:S5|5461626c65 12125:O2|@9324,@12126 12126:O2|@5091,@12127 12127:O2|@12128,@10646 12128:O2|3,@12129 12129:S11|7479706549644d6170203d 12130:O2|3,@12131 12131:S5|746162203d 12132:O2|3,@12133 12133:S17|6669727374426f756e64496e646578203d 12134:O2|3,@12135 12135:S10|626f756e64496473203d 12136:O2|@12140,0 12137:O2|@12138,0 12138:O2|0,@12139 12139:O5|@4896,208,208,0,0 12140:O2|3,@7900 12141:O4|0,@12142,3,1 12142:O1|@17454 12143:O4|0,@12144,3,1 12144:O1|@17455 12145:O4|0,@12146,3,1 12146:O1|@17456 12147:O4|0,@12148,3,1 12148:O1|@17457 12149:O4|0,@12150,3,1 12150:O1|@17458 12151:O4|0,@12152,3,1 12152:O1|@17459 12153:O2|3,@12154 12154:S11|7661726961626c6573203d 12155:O2|3,@12156 12156:S13|74797065636f6e73747273203d 12157:O2|3,@12158 12158:S12|73747275637475726573203d 12159:O5|0,0,0,@12161,@12160 12160:O2|@12164,0 12161:O2|@12162,0 12162:O2|0,@12163 12163:O5|@11751,107,107,0,0 12164:O2|3,@12165 12165:S7|4f70656e446563 12166:O5|0,0,0,@12168,@12167 12167:O2|@12171,0 12168:O2|@12169,0 12169:O2|0,@12170 12170:O5|@11751,188,188,0,0 12171:O2|3,@12172 12172:S6|4f72656c7365 12173:O5|0,0,0,@12175,@12174 12174:O2|@12178,0 12175:O2|@12176,0 12176:O2|0,@12177 12177:O5|@11751,203,203,0,0 12178:O2|3,@12179 12179:S13|506172656e7468657369736564 12180:O5|0,0,0,@12181,@10355 12181:O2|@12182,0 12182:O2|0,@12183 12183:O5|@11751,172,172,0,0 12184:O2|3,@12185 12185:S9|6c616254797065203d 12186:O5|0,0,0,@12188,@12187 12187:O2|@12191,0 12188:O2|@12189,0 12189:O2|0,@12190 12190:O5|@11751,195,195,0,0 12191:O2|3,@12192 12192:S8|53656c6563746f72 12193:O4|0,@12194,3,1 12194:O1|@17460 12195:O5|0,0,0,@12197,@12196 12196:O2|@12200,0 12197:O2|@12198,0 12198:O2|0,@12199 12199:O5|@11751,85,85,0,0 12200:O2|3,@12201 12201:S9|5475706c6554726565 12202:O5|0,0,0,@12204,@12203 12203:O2|@12207,0 12204:O2|@12205,0 12205:O2|0,@12206 12206:O5|@11751,142,142,0,0 12207:O2|3,@12208 12208:S15|547970654465636c61726174696f6e 12209:O5|0,0,0,@12211,@12210 12210:O2|@12214,0 12211:O2|@12212,0 12212:O2|0,@12213 12213:O5|@11751,202,202,0,0 12214:O2|3,@12215 12215:S4|556e6974 12216:S13|7072696e742d76616c62696e64 12217:O5|0,0,0,@12219,@12218 12218:O2|@12222,0 12219:O2|@12220,0 12220:O2|0,@12221 12221:O5|@11751,87,87,0,0 12222:O2|3,@12223 12223:S14|56616c4465636c61726174696f6e 12224:O4|0,@12225,3,1 12225:O1|@17464 12226:O4|0,@12227,2,1 12227:O1|@17465 12228:O4|0,@12229,1,1 12229:O1|@17466 12230:O2|3,@12231 12231:S12|627265616b506f696e74203d 12232:O5|0,0,0,@12234,@12233 12233:O2|@12237,0 12234:O2|@12235,0 12235:O2|0,@12236 12236:O5|@11751,178,178,0,0 12237:O2|3,@12238 12238:S5|5768696c65 12239:O2|@12243,0 12240:O2|@12241,0 12241:O2|0,@12242 12242:O5|@11751,201,201,0,0 12243:O2|3,@12244 12244:S8|57696c6443617264 12245:O1|@17467 12246:O5|0,0,0,@12263,@12262 12247:O4|0,@12248,3,1 12248:O1|@17468 12249:O4|0,@12250,3,1 12250:O1|@17469 12251:O4|0,@12252,2,2 12252:O1|@17470 12253:S17|7072696e742d74797065566172466f726d 12254:O2|3,@12255 12255:S6|74636f6e203d 12256:O2|3,@12257 12257:S10|6973457174797065203d 12258:O2|3,@12259 12259:S9|66756c6c4c6f63203d 12260:O2|3,@12261 12261:S9|64656354797065203d 12262:O2|@12266,0 12263:O2|@12264,0 12264:O2|0,@12265 12265:O5|@11751,242,242,0,0 12266:O2|3,@12267 12267:S8|5479706542696e64 12268:O1|@17471 12269:O5|0,0,0,@12291,@12290 12270:O4|0,@12271,2,4 12271:O1|@17472 12272:O2|3,@12283 12273:O4|0,@12274,3,1 12274:O1|@17473 12275:O4|0,@12276,3,1 12276:O1|@17474 12277:O2|3,@12278 12278:S8|69644c6f636e203d 12279:O2|3,@12280 12280:S11|636f6e73747256616c203d 12281:O2|3,@12282 12282:S12|636f6e7374724e616d65203d 12283:S11|636f6e737472417267203d 12284:O4|0,@12285,3,1 12285:O1|@17475 12286:O4|0,@12287,2,2 12287:O1|@17476 12288:O2|3,@12289 12289:S9|636f6e73747273203d 12290:O2|@12294,0 12291:O2|@12292,0 12292:O2|0,@12293 12293:O5|@11751,254,254,0,0 12294:O2|3,@12295 12295:S12|446174617479706542696e64 12296:O2|@17477,@169 12297:O5|0,0,0,@12313,@12312 12298:O4|0,@12299,3,1 12299:O1|@17478 12300:O4|0,@12301,3,1 12301:O1|@17479 12302:O4|0,@12303,2,1 12303:O1|@17480 12304:O4|0,@12305,1,1 12305:O1|@17481 12306:O4|0,@12307,3,1 12307:O1|@17482 12308:O2|3,@12309 12309:S6|76617273203d 12310:O2|3,@12311 12311:S9|72657354797065203d 12312:O2|@12316,0 12313:O2|@12314,0 12314:O2|0,@12315 12315:O5|@11751,279,279,0,0 12316:O2|3,@12317 12317:S9|4d6174636854726565 12318:O2|@17483,@169 12319:O5|0,0,0,@12329,@12328 12320:O4|0,@12321,3,1 12321:O1|@17484 12322:O4|0,@12323,3,1 12323:O1|@17485 12324:O2|3,@12325 12325:S10|70726576696f7573203d 12326:O2|3,@12327 12327:S8|6f6654797065203d 12328:O2|@12332,0 12329:O2|@12330,0 12330:O2|0,@12331 12331:O5|@11751,266,266,0,0 12332:O2|3,@12333 12333:S6|457842696e64 12334:O2|@17486,@173 12335:O5|0,0,0,@12352,@12351 12336:O4|0,@12337,3,1 12337:O1|@17487 12338:S16|7072696e742d6676616c636c61757365 12339:O4|0,@12340,3,1 12340:O1|@17489 12341:O4|0,@12342,1,1 12342:O1|@17490 12343:O4|0,@12344,3,1 12344:O1|@17491 12345:O2|3,@12346 12346:S12|6e756d4f665061747473203d 12347:O2|3,@12348 12348:S10|66756e6374566172203d 12349:O2|3,@12350 12350:S9|636c6175736573203d 12351:O2|@12355,0 12352:O2|@12353,0 12353:O2|0,@12354 12354:O5|@11751,222,222,0,0 12355:O2|3,@12356 12356:S8|4656616c42696e64 12357:O2|@17492,@169 12358:O5|0,0,0,@12376,@12375 12359:O4|0,@12360,3,1 12360:O1|@17493 12361:O4|0,@12362,2,1 12362:O1|@17494 12363:O4|0,@12364,1,1 12364:O1|@17495 12365:O4|0,@12366,3,1 12366:O1|@17497 12367:O4|0,@12368,3,1 12368:O1|@17498 12369:O2|3,@12370 12370:S7|6964656e74203d 12371:O2|3,@12372 12372:S12|636f6e73747261696e74203d 12373:O2|3,@12374 12374:S6|6c696e65203d 12375:O2|@12379,0 12376:O2|@12377,0 12377:O2|0,@12378 12378:O5|@11751,233,233,0,0 12379:O2|3,@12380 12380:S10|4656616c436c61757365 12381:O2|@17499,@169 12382:O5|0,0,0,@12390,@12389 12383:O4|0,@12384,3,1 12384:O1|@17500 12385:O4|0,@12386,3,1 12386:O1|@17501 12387:O2|3,@12388 12388:S13|6973526563757273697665203d 12389:O2|@12393,0 12390:O2|@12391,0 12391:O2|0,@12392 12392:O5|@11751,206,206,0,0 12393:O2|3,@12394 12394:S7|56616c42696e64 12395:S66|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657246696e616c54797065283129 12396:O1|@17504 12397:S32|5349474e41545552455328292e67697665537065634572726f72283329283129 12398:S35|5349474e41545552455328292e67697665537065634572726f72283329283129283129 12399:S12|53706563696679696e672022 12400:S13|2220697320696c6c6567616c2e 12401:O1|@17512 12402:S65|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229 12403:S77|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657254797065283129 12404:O1|@17518 12405:O4|@16,@4583,@12407,@12406 12406:O5|@9148,1141,0,1141,0 12407:S21|6e65774163636573733a204e6f7420466f726d616c 12408:S79|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e746572537472756374283129 12409:S76|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657256616c283129 12410:O1|@17522 12411:O1|@17538 12412:S47|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e74283329 12413:O4|@72,@5747,0,@12414 12414:O5|@9148,709,0,709,0 12415:S66|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e742833296c6f6f6b75704661696c757265283129283129 12416:S14|20696e207369676e61747572652e 12417:O1|@17527 12418:O1|@17533 12419:S35|5349474e41545552455328292e73696756616c28362973686172655479706573283829 12420:S50|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e745368617265283129283129 12421:O1|@17529 12422:S62|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e74536861726528312973686f7754797065436f6e73283229 12423:O2|@5268,@12424 12424:O2|@12426,@12425 12425:O2|@5091,@12427 12426:O2|3,@4139 12427:O2|@12428,0 12428:O2|3,@12429 12429:S58|546865207479706520636f6e7374727563746f72732074616b6520646966666572656e74206e756d62657273206f6620617267756d656e74732e 12430:O2|3,@12431 12431:S9|776974682074797065 12432:O2|3,@12433 12433:S17|43616e6e6f742073686172652074797065 12434:O4|@16,@4583,@12436,@12435 12435:O5|@9148,504,0,504,0 12436:S5|6973566172 12437:O1|@17530 12438:S25|5349474e41545552455328292e7072696e7444657363283329 12439:O2|3,@12440 12440:S21|697320616c726561647920646566696e6564206173 12441:O1|@17534 12442:S44|5349474e41545552455328292e73696756616c2836296c696e6b466c657869626c6554797065496473283229 12443:O4|@16,@4583,@12445,@12444 12444:O5|@9148,552,0,552,0 12445:S30|6c696e6b466c657869626c65547970654964733a206e6f7420626f756e64 12446:O4|@16,@4583,@12448,@12447 12447:O5|@9148,550,0,550,0 12448:S33|6c696e6b466c657869626c65547970654964733a206e6f74207661726961626c65 12449:O4|@16,@4583,@12451,@12450 12450:O5|@9148,540,0,540,0 12451:S38|6c696e6b466c657869626c65547970654964733a20646966666572656e742061726974696573 12452:O1|@17535 12453:O1|@17540 12454:S41|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329 12455:O1|@17539 12456:O4|@72,@5747,0,@12468 12457:S56|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329736861726553747275637473283129 12458:O1|@17541 12459:S40|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229 12460:O1|@17544 12461:S46|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229676574283429 12462:O1|@17545 12463:S59|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283129 12464:S62|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283229283129 12465:O1|@17547 12466:S54|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129676574457175616c73283429 12467:O1|@17548 12468:O5|@9148,676,0,676,0 12469:O1|@17556 12470:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329283129 12471:O1|@17557 12472:S34|5349474e41545552455328292e73696756616c283629747970654964456e76283129 12473:O4|4,@4058,0,@12474 12474:O5|@4601,101,0,101,0 12475:S37|5349474e41545552455328292e73696756616c283629747970654964456e76283129283129 12476:S21|6973206e6f7420612073696d706c6520747970652e 12477:S43|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729 12478:S59|5349474e41545552455328292e73696756616c2836297369676e61747572655768657265547970652837296c6f6f6b75704661696c757265283129 12479:S28|5349474e41545552455328292e676976654572726f72283329283129 12480:S46|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729283129 12481:S2|6060 12482:O2|3,@12483 12483:S24|2068617320616c7265616479206265656e2073657420746f 12484:O2|3,@12485 12485:S30|43616e6e6f74206170706c792074797065207265616c69736174696f6e2e 12486:O4|@16,@4583,@12488,@12487 12487:O5|@9148,937,0,937,0 12488:S12|736574576865726554797065 12489:O4|@16,@4583,@12488,@12490 12490:O5|@9148,935,0,935,0 12491:O1|@17567 12492:O1|@17568 12493:S16|697320616e2065717479706520627574 12494:S25|646f6573206e6f74207065726d697420657175616c6974792e 12495:O1|@17569 12496:S53|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229 12497:S64|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e7453657428322974797065456e762d283129 12498:S56|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229283129 12499:S17|6973206120646174617479706520627574 12500:O1|@17573 12501:O1|@17574 12502:S44|434f5049455228292e6765744e65787452756e74696d654f66667365742831296765744f6666736574283329 12503:O1|@17575 12504:S8|73686172696e6720 12505:S31|5349474e41545552455328292e73696756616c2836296d6170496473283229 12506:O4|@16,@4583,@12509,@12508 12507:S40|5349474e41545552455328292e73696756616c2836296d6170496473283229636f70794964283129 12508:O5|@9148,1350,0,1350,0 12509:S21|6d61704964733a636f707954797065436f6e737472 12510:O1|@17579 12511:S46|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129 12512:O1|@17578 12513:S49|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129283129 12514:O1|@17580 12515:O4|@16,@4583,@12517,@12516 12516:O5|@9148,1376,0,1376,0 12517:S6|6d6170496473 12518:O1|@17581 12519:S36|5349474e41545552455328292e73696756616c2836296d617046756e6374696f6e283129 12520:S8|46756e63746f7220 12521:O1|@17588 12522:O1|@17743 12523:S63|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229 12524:O1|@17589 12525:O1|@17590 12526:O4|@16,@4583,@12529,@12528 12527:S70|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296d6b4964283129 12528:O5|@12530,2191,0,2191,0 12529:S29|6d6b49643a204e6f7420426f756e64206f72206e6f7420466f726d616c 12530:S34|6d6c736f757263652f4d4c436f6d70696c65722f535452554354555245535f2e4d4c 12531:S98|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296172675369675769746853656c65637465642d6d6170546f53656c6563746564283129 12532:S68|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132295f2d283129 12533:O1|@17602 12534:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229656e7657697468417267732d283129 12535:O1|@17601 12536:O1|@17603 12537:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296e6577547970654964283129 12538:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129 12539:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129283129 12540:S73|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132297265735369672d283129 12541:O2|@17608,@12542 12542:O2|@17709,@12541 12543:S28|535452554354555245535f28292e73747275637456616c7565283829 12544:S39|535452554354555245535f28292e73747275637456616c756528382974797065456e762d283129 12545:S52|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e744d616b65547970654964283129 12546:S51|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129 12547:O4|11,@4007,0,@12549 12548:S54|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129283129 12549:O5|@12530,1743,0,1743,0 12550:S57|535452554354555245535f28292e73747275637456616c75652838296d61746368416374696f6e737c6d61746368526573756c74732d283129 12551:O1|@17616 12552:O1|@17650 12553:S26|535452554354555245535f28292e6d6174636853696773283829 12554:O4|@16,@4583,@12556,@12555 12555:O5|@12530,1035,0,1035,0 12556:S48|43616e646964617465207374727563747572652077697468206e6f6e2d656d70747920626f756e64204944206c697374 12557:O1|@17617 12558:S22|434f5049455228292e7265706c6163654d6170283529 12559:O1|@17620 12560:S32|434f5049455228292e7265706c6163654d6170283529747376456e762d283129 12561:O1|@17622 12562:O1|@17623 12563:S42|535452554354555245535f28292e6d61746368536967732838297461726765742d6e65774d6170283129 12564:S39|535452554354555245535f28292e6d61746368536967732838296c6f6f6b757054797065283129 12565:S39|535452554354555245535f28292e6d6174636853696773283829726573756c7454797065283129 12566:O1|@17627 12567:S39|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329 12568:O1|@17629 12569:O1|@17649 12570:S42|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329 12571:O4|@17633,@9338,@9337,@11175 12572:S56|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c617954797065283129 12573:O2|@12575,@12574 12574:O1|@17632 12575:O1|@17631 12576:S58|535452554354555245535f28292e6d61746368536967732838296d617463684e616d65732833292833297072696e7454797065456e762d283129 12577:O1|@17643 12578:S40|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d6170283429 12579:O1|@17634 12580:O1|@17635 12581:O1|@17636 12582:O2|@5091,@12583 12583:O2|@5663,0 12584:O1|@17637 12585:O1|@17638 12586:O5|0,0,0,0,@12592 12587:S53|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e737472283429 12588:O1|@17639 12589:O1|@17640 12590:O2|@12591,@9452 12591:O3|1,1,4 12592:O2|@5583,@9310 12593:O1|@17641 12594:O1|@17642 12595:S57|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e73747252657374283229 12596:O1|@17644 12597:O2|@5091,@12603 12598:S36|535452554354555245535f28292e7369675374727563744d697373696e674d7367283629 12599:S18|20696e207375622d73747275637475726520 12600:S34|53747275637475726520646f6573206e6f74206d61746368207369676e6174757265 12601:O2|3,@12602 12602:S10|5369676e61747572653a 12603:O2|@12604,0 12604:O5|0,3,0,0,@12605 12605:O2|@12607,@12606 12606:O2|@5091,@12609 12607:O2|3,@12608 12608:S10|5374727563747572653a 12609:O2|@12610,0 12610:O2|3,@12611 12611:S11|4e6f742070726573656e74 12612:O2|3,@12613 12613:S47|54797065732074616b6520646966666572656e74206e756d62657273206f66207479706520617267756d656e74732e 12614:O1|@17645 12615:S34|535452554354555245535f28292e7369675374727563744d617463684d7367283829 12616:O2|3,@12617 12617:S35|5479706520696e20737472756374757265206973206e6f742061206461746174797065 12618:O1|@17646 12619:O1|@17647 12620:O1|@17648 12621:O2|3,@12622 12622:S41|5479706520696e20737472756374757265206973206e6f7420616e20657175616c6974792074797065 12623:S61|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c6179537472756374757265283129 12624:S38|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329 12625:O1|@17653 12626:O1|@17654 12627:S56|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d6174636853747275637475726573283329 12628:S5|6d61746368 12629:S33|535452554354555245535f28292e636865636b54797065436f6e73747273283829 12630:O1|@17655 12631:O2|@12634,@12633 12632:S52|535452554354555245535f28292e636865636b54797065436f6e737472732838296572726f72496e44617461747970652d283129 12633:O1|@17658 12634:O1|@17657 12635:S49|535452554354555245535f28292e636865636b54797065436f6e737472732838297072696e7454797065456e762d283129 12636:O1|@17659 12637:O1|@17665 12638:S27|535452554354555245535f28292e6d617463685479706573283429 12639:S36|535452554354555245535f28292e6d617463685479706573283429636f70794964283129 12640:O1|@17663 12641:S45|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129 12642:O1|@17662 12643:S48|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129283129 12644:O1|@17664 12645:S43|535452554354555245535f28292e6d617463685479706573283429636f7079546172676574283129283129 12646:O2|@12647,0 12647:S55|207761732070726573656e7420696e207468652073747275637475726520627574206e6f7420696e20746865207369676e61747572652e 12648:S14|3a20636f6e7374727563746f7220 12649:S30|4572726f72207768696c65206d61746368696e6720646174617479706520 12650:O2|3,@12652 12651:S53|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329646973706c617956616c7565283129 12652:S11|636f6e7374727563746f72 12653:O1|@17667 12654:O1|@17670 12655:S57|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d617463684c6f63616c56616c756573283329 12656:O5|0,0,0,@12660,@12666 12657:S15|7072696e742d6d6174636854797065 12658:O5|0,0,0,@12660,@12659 12659:O2|@12663,0 12660:O2|@12661,0 12661:O2|0,@12662 12662:O5|@12530,1266,1266,0,0 12663:O2|3,@12664 12664:S4|49734f4b 12665:O1|@17669 12666:O2|@12667,0 12667:O2|3,@12668 12668:S7|497357726f6e67 12669:O2|1,@12670 12670:O2|3,@12671 12671:S25|56616c7565206973206e6f7420616e20657863657074696f6e 12672:O2|1,@12673 12673:O2|3,@12674 12674:S26|56616c7565206973206e6f74206120636f6e7374727563746f72 12675:O1|@17671 12676:O1|@17672 12677:S29|437265617465642066726f6d206f7061717565207369676e6174757265 12678:O4|@16,@4583,@12680,@12679 12679:O5|@12530,1770,0,1770,0 12680:S9|4e6f7420426f756e64 12681:O1|@17673 12682:S42|535452554354555245535f28292e73747275637456616c7565283829725369672d6f6c644d6170283129 12683:S46|535452554354555245535f28292e73747275637456616c7565283829725369672d6d617463686564496473283129 12684:O1|@17682 12685:S40|535452554354555245535f28292e73747275637456616c75652838296c6f63616c456e762d283129 12686:O1|@17683 12687:O1|@17688 12688:S38|535452554354555245535f28292e73747275637456616c75652838296e6577456e762d283129 12689:O1|@17689 12690:O1|@17690 12691:O4|@16,@4583,@12693,@12692 12692:O5|@12530,1573,0,1573,0 12693:S23|5369676e617475726520696e2053747275637420456e64 12694:O1|@17691 12695:O4|@16,@4583,@12697,@12696 12696:O5|@12530,1574,0,1574,0 12697:S21|46756e63746f7220696e2053747275637420456e64 12698:O1|@17693 12699:O1|@17694 12700:S40|535452554354555245535f28292e73747275637456616c7565283829656e7465724974656d283429 12701:O1|@17695 12702:S32|535452554354555245535f28292e6d616b65436f7079416374696f6e73283129 12703:O1|@17696 12704:S45|535452554354555245535f28292e6d616b65436f7079416374696f6e732831296d61746368456e747279283329 12705:O1|@17698 12706:O4|@16,@4583,@12709,@12708 12707:S29|535452554354555245535f28292e6d6174636854797065496473283229 12708:O5|@12530,1408,0,1408,0 12709:S24|6d61746368547970654964733a204e6f7420466f726d616c 12710:O1|@17699 12711:O1|@17700 12712:O1|@17701 12713:O1|@17702 12714:O1|@17703 12715:S30|437265617465642066726f6d206170706c79696e672066756e63746f7220 12716:S44|535452554354555245535f28292e73747275637456616c75652838296d616b654e6577547970654964283229 12717:O4|@16,@4583,@12680,@12718 12718:O5|@12530,1513,0,1513,0 12719:O1|@17704 12720:S48|535452554354555245535f28292e73747275637456616c7565283829676574436f6d62696e6564547970654964283129 12721:S9|46756e63746f722028 12722:S32|535452554354555245535f28292e676976654572726f72283329283129283129 12723:S29|535452554354555245535f28292e676976654572726f72283329283129 12724:O1|@17732 12725:S28|535452554354555245535f28292e7061737332537472756374283829 12726:O1|@17710 12727:O1|@17720 12728:S45|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e283229 12729:O1|@17712 12730:S55|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296e6577456e762d283129 12731:O1|@17714 12732:O1|@17716 12733:O1|@17718 12734:S54|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296d616b654964283429 12735:S50|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832295f2d283129 12736:O1|@17721 12737:S44|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229 12738:O1|@17727 12739:S56|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c6465632832296c6f63616c456e762d283129 12740:O1|@17728 12741:S55|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229626f6479456e762d283129 12742:O1|@17736 12743:S48|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329 12744:S10|53747275637475726520 12745:S56|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329 12746:S59|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329283129 12747:S61|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332963617074757265496473283129 12748:O1|@17737 12749:S69|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329706173733253747275637475726542696e64283629 12750:O1|@17738 12751:S35|535452554354555245535f28292e6d61726b56616c7341734578706f72746564283129 12752:O1|@17739 12753:S3|28292e 12754:O1|@17740 12755:S76|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229726573547970654d6170283129 12756:S52|535452554354555245535f28292e7061737332537472756374732833297061737332546f704465632832296d616b654964283129 12757:O1|@17746 12758:S32|535452554354555245535f28292e706173733253747275637473283329283129 12759:O1|@17747 12760:O5|0,0,0,@12777,@12776 12761:S20|7072696e742d76616c7565436f657263696f6e73 12762:O5|0,0,0,@12764,@12763 12763:O2|@12767,0 12764:O2|@12765,0 12765:O2|0,@12766 12766:O5|@12530,129,129,0,0 12767:O2|3,@12768 12768:S18|436f6e7374727563746f72546f56616c7565 12769:O5|0,0,0,@12771,@12770 12770:O2|@12774,0 12771:O2|@12772,0 12772:O2|0,@12773 12773:O5|@12530,128,128,0,0 12774:O2|3,@12775 12775:S16|457863657074696f6e546f56616c7565 12776:O2|@12780,0 12777:O2|@12778,0 12778:O2|0,@12779 12779:O5|@12530,127,127,0,0 12780:O2|3,@12781 12781:S10|4e6f436f657263696f6e 12782:O3|@17748,@12852,@12783 12783:O3|@17876,@12853,@12852 12784:O1|@17749 12785:S34|535452554354555245535f28292e737472756374734578706f727454726565283229 12786:O1|@17812 12787:S47|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329 12788:O1|@17751 12789:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283129283129 12790:O1|@17755 12791:S58|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329 12792:O4|@72,@5747,0,@12793 12793:O5|@12530,835,0,835,0 12794:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329283129 12795:O1|@17811 12796:S33|535452554354555245535f28292e746f704465634578706f727454726565283329 12797:S48|535452554354555245535f28292e746f704465634578706f727454726565283329636f6d6d6f6e50726f70732d283129 12798:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296173506172656e74283129 12799:O1|@17759 12800:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283129 12801:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329 12802:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296578706f727454686973283129 12803:O1|@17763 12804:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574536967283129 12805:O1|@17796 12806:S29|5349474e41545552455328292e7369674578706f727454726565283329 12807:S44|5349474e41545552455328292e7369674578706f727454726565283329636f6d6d6f6e50726f70732d283129 12808:S40|5349474e41545552455328292e7369674578706f7274547265652833296173506172656e74283129 12809:O1|@17766 12810:O1|@17767 12811:S30|5349474e41545552455328292e737065634578706f727454726565283129 12812:S30|5349474e41545552455328292e737065634578706f727454726565283329 12813:S45|5349474e41545552455328292e737065634578706f727454726565283329636f6d6d6f6e50726f70732d283129 12814:S41|5349474e41545552455328292e737065634578706f7274547265652833296173506172656e74283129 12815:O1|@17771 12816:O1|@17772 12817:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283129 12818:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329 12819:S54|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296578706f727454686973283129 12820:S56|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329676574536967537472756374283129 12821:O1|@17778 12822:S51|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296765744e616d65283129 12823:O1|@17777 12824:O1|@17779 12825:S40|5349474e41545552455328292e737065634578706f72745472656528332967657454797065283129 12826:O1|@17784 12827:S40|5349474e41545552455328292e737065634578706f7274547265652833296765744e616d65283129 12828:O1|@17783 12829:O1|@17788 12830:O1|@17787 12831:O1|@17789 12832:S29|5349474e41545552455328292e7369674578706f727454726565283129 12833:O1|@17790 12834:O1|@17794 12835:O1|@17793 12836:O1|@17795 12837:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574426f6479283129 12838:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574417267283129 12839:O1|@17801 12840:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296765744e616d65283129 12841:O1|@17800 12842:O1|@17802 12843:O1|@17803 12844:O1|@17804 12845:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283129 12846:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329 12847:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296578706f727454686973283129 12848:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329676574536967283129 12849:O1|@17810 12850:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296765744e616d65283129 12851:O1|@17809 12852:O5|@17813,@12783,@176,@177,@12853 12853:O2|@17875,@12783 12854:O1|@17829 12855:S38|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329 12856:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329636f6d6d6f6e50726f70732d283129 12857:S49|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296173506172656e74283129 12858:S53|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296765745369676e6174757265283129 12859:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329676574537472756374757265283129 12860:O5|0,0,0,@12864,@11073 12861:S16|7072696e742d616c6c456e7472696573 12862:O5|0,0,0,@12864,@12863 12863:O2|@12867,0 12864:O2|@12865,0 12865:O2|0,@12866 12866:O5|@12530,714,714,0,0 12867:O2|3,@12868 12868:S3|446563 12869:S54|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296578706f7274456e7472696573283129 12870:O1|@17820 12871:O1|@17821 12872:O1|@17822 12873:S54|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f72417267283129 12874:O1|@17827 12875:S55|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f724e616d65283129 12876:O1|@17826 12877:O1|@17828 12878:O4|@17830,@178,@176,@177 12879:O5|0,0,0,@12910,@12909 12880:S15|7072696e742d737472756374446563 12881:S21|7072696e742d636f72654465636c61726174696f6e 12882:O5|0,0,0,@12884,@12883 12883:O2|@12887,0 12884:O2|@12885,0 12885:O2|0,@12886 12886:O5|@12530,187,187,0,0 12887:O2|3,@12888 12888:S8|436f72654c616e67 12889:O5|0,0,0,@12890,@12032 12890:O2|@12891,0 12891:O2|0,@12892 12892:O5|@12530,194,194,0,0 12893:O2|3,@12900 12894:O4|0,@12895,3,1 12895:O1|@17836 12896:O4|0,@12897,3,1 12897:O1|@17837 12898:O2|3,@12899 12899:S8|76616c526566203d 12900:S9|68617665536967203d 12901:O4|0,@12902,3,1 12902:O1|@17838 12903:O4|0,@12904,3,1 12904:O1|@17839 12905:O2|3,@12906 12906:S17|74797065496473466f724465627567203d 12907:O2|3,@12908 12908:S10|62696e64696e6773203d 12909:O2|@12913,0 12910:O2|@12911,0 12911:O2|0,@12912 12912:O5|@12530,180,180,0,0 12913:O2|3,@12914 12914:S12|537472756374757265446563 12915:O1|@17840 12916:O5|0,0,0,@12948,@12947 12917:O2|@17841,@180 12918:O5|0,0,0,@12921,@12920 12919:S15|7072696e742d666978537461747573 12920:O2|@12924,0 12921:O2|@12922,0 12922:O2|0,@12923 12923:O5|@4896,506,506,0,0 12924:O2|3,@12925 12925:S9|466978537461747573 12926:O5|0,0,0,@12928,@12927 12927:O2|@12931,0 12928:O2|@12929,0 12929:O2|0,@12930 12930:O5|@12530,114,114,0,0 12931:O2|3,@12932 12932:S7|436f7265466978 12933:O5|0,0,0,@12935,@12934 12934:O2|@12938,0 12935:O2|@12936,0 12936:O2|0,@12937 12937:O5|@12530,115,115,0,0 12938:O2|3,@12939 12939:S10|436f7265537472756374 12940:O5|0,0,0,@12942,@12941 12941:O2|@12945,0 12942:O2|@12943,0 12943:O2|0,@12944 12944:O5|@12530,113,113,0,0 12945:O2|3,@12946 12946:S8|436f726554797065 12947:O2|@12951,0 12948:O2|@12949,0 12949:O2|0,@12950 12950:O5|@12530,112,112,0,0 12951:O2|3,@12952 12952:S9|436f726556616c7565 12953:O4|@17842,@181,@177,@176 12954:O5|0,0,0,@13126,@13125 12955:S17|7072696e742d73747275637456616c7565 12956:O4|0,@12957,3,1 12957:O1|@17843 12958:O4|0,@12959,2,2 12959:O1|@17844 12960:O2|3,@12963 12961:O2|3,@12962 12962:S8|736f75726365203d 12963:S6|64657374203d 12964:O4|0,@12965,3,1 12965:O1|@17847 12966:O4|0,@12967,2,2 12967:O1|@17848 12968:O4|0,@12969,3,1 12969:O1|@17849 12970:O4|0,@12971,3,1 12971:O1|@17850 12972:S14|7072696e742d66756e63746f7273 12973:O5|@17851,@161,@121,@183,@112 12974:O5|0,0,0,@12976,@12975 12975:O2|@12979,0 12976:O2|@12977,0 12977:O2|0,@12978 12978:O5|@4896,219,219,0,0 12979:O2|3,@12980 12980:S7|46756e63746f72 12981:O2|3,@12982 12982:S8|726573496473203d 12983:O2|3,@12984 12984:S17|6d61746368546f417267756d656e74203d 12985:O2|3,@12986 12986:S8|617267496473203d 12987:O5|0,0,0,@12989,@12988 12988:O2|@12992,0 12989:O2|@12990,0 12990:O2|0,@12991 12991:O5|@12530,150,150,0,0 12992:O2|3,@12993 12993:S11|46756e63746f724170706c 12994:O5|0,0,0,@12996,@12995 12995:O2|@12999,0 12996:O2|@12997,0 12997:O2|0,@12998 12998:O5|@12530,162,162,0,0 12999:O2|3,@13000 13000:S6|4c6574446563 13001:O3|@17854,@187,@185 13002:O5|0,0,0,@13032,@13031 13003:S10|7072696e742d73696773 13004:S11|7072696e742d7370656373 13005:O5|0,0,0,@13007,@13006 13006:O2|@13010,0 13007:O2|@13008,0 13008:O2|0,@13009 13009:O5|@9148,78,78,0,0 13010:O2|3,@13011 13011:S6|536967446563 13012:O4|0,@13013,3,1 13013:O1|@17856 13014:O4|0,@13015,3,1 13015:O1|@17857 13016:O5|0,0,0,@13018,@13017 13017:O2|@13021,0 13018:O2|@13019,0 13019:O2|0,@13020 13020:O5|@9148,76,76,0,0 13021:O2|3,@13022 13022:S14|5369676e61747572654964656e74 13023:O4|0,@13024,2,2 13024:O1|@17858 13025:O2|3,@13026 13026:S10|747970654e616d65203d 13027:O2|3,@13028 13028:S8|736967457870203d 13029:O2|3,@13030 13030:S13|7265616c69736174696f6e203d 13031:O2|@13035,0 13032:O2|@13033,0 13033:O2|0,@13034 13034:O5|@9148,80,80,0,0 13035:O2|3,@13036 13036:S9|576865726554797065 13037:O2|@17859,@185 13038:O5|0,0,0,@13082,@13081 13039:O5|0,0,0,@13040,@12941 13040:O2|@13041,0 13041:O2|0,@13042 13042:O5|@9148,91,91,0,0 13043:O4|0,@13044,3,1 13044:O1|@17860 13045:O5|0,0,0,@13047,@13046 13046:O2|@13050,0 13047:O2|@13048,0 13048:O2|0,@13049 13049:O5|@9148,88,88,0,0 13050:O2|3,@13051 13051:S5|4578536967 13052:O5|0,0,0,@13054,@13053 13053:O2|@13057,0 13054:O2|@13055,0 13055:O2|0,@13056 13056:O5|@9148,99,99,0,0 13057:O2|3,@13058 13058:S10|496e636c756465536967 13059:O4|0,@13060,2,2 13060:O1|@17862 13061:O2|3,@13062 13062:S8|736861726573203d 13063:O2|3,@13064 13064:S8|697354797065203d 13065:O5|0,0,0,@13067,@13066 13066:O2|@13070,0 13067:O2|@13068,0 13068:O2|0,@13069 13069:O5|@9148,97,97,0,0 13070:O2|3,@13071 13071:S7|53686172696e67 13072:O2|3,@13073 13073:S11|736967537472756374203d 13074:O5|0,0,0,@13076,@13075 13075:O2|@13079,0 13076:O2|@13077,0 13077:O2|0,@13078 13078:O5|@9148,83,83,0,0 13079:O2|3,@13080 13080:S12|537472756374757265536967 13081:O2|@13085,0 13082:O2|@13083,0 13083:O2|0,@13084 13084:O5|@9148,85,85,0,0 13085:O2|3,@13086 13086:S6|56616c536967 13087:O4|0,@13088,3,1 13088:O1|@17866 13089:O4|0,@13090,2,2 13090:O1|@17867 13091:O2|3,@13092 13092:S5|737472203d 13093:O2|3,@13094 13094:S8|7369674c6f63203d 13095:O2|3,@13096 13096:S11|6f7061717565496473203d 13097:O2|3,@13098 13098:S8|6f7061717565203d 13099:O2|3,@13100 13100:S19|6d61746368546f436f6e73747261696e74203d 13101:O2|3,@13102 13102:S6|63736967203d 13103:O5|0,0,0,@13105,@13104 13104:O2|@13108,0 13105:O2|@13106,0 13106:O2|0,@13107 13107:O5|@12530,169,169,0,0 13108:O2|3,@13109 13109:S13|536967436f6e73747261696e74 13110:O2|3,@13111 13111:S15|6d61746368546f526573756c74203d 13112:O2|3,@13113 13113:S7|616c697374203d 13114:O5|0,0,0,@13116,@13115 13115:O2|@13119,0 13116:O2|@13117,0 13117:O2|0,@13118 13118:O5|@12530,143,143,0,0 13119:O2|3,@13120 13120:S9|537472756374446563 13121:O4|0,@13122,3,1 13122:O1|@17871 13123:O4|0,@13124,3,1 13124:O1|@17872 13125:O2|@13129,0 13126:O2|@13127,0 13127:O2|0,@13128 13128:O5|@12530,136,136,0,0 13129:O2|3,@13130 13130:S14|5374727563747572654964656e74 13131:O3|@17873,@181,@110 13132:O5|0,0,0,@13163,@13162 13133:S19|7072696e742d76616c75654d61746368696e67 13134:O2|3,@13135 13135:S17|736f75726365537472756374757265203d 13136:O2|3,@13137 13137:S15|636f6e74656e74734d61746368203d 13138:O5|0,0,0,@13140,@13139 13139:O2|@13143,0 13140:O2|@13141,0 13141:O2|0,@13142 13142:O5|@12530,121,121,0,0 13143:O2|3,@13144 13144:S14|5374727563747572654d61746368 13145:O2|3,@13146 13146:S12|736f7572636549644e6f203d 13147:O2|3,@13148 13148:S12|6973457175616c697479203d 13149:O5|0,0,0,@13151,@13150 13150:O2|@13154,0 13151:O2|@13152,0 13152:O2|0,@13153 13153:O5|@12530,123,123,0,0 13154:O2|3,@13155 13155:S11|5479706549644d61746368 13156:O2|3,@13157 13157:S12|74617267657454797065203d 13158:O2|3,@13159 13159:S13|736f7572636556616c7565203d 13160:O2|3,@13161 13161:S10|636f657263696f6e203d 13162:O2|@13166,0 13163:O2|@13164,0 13164:O2|0,@13165 13165:O5|@12530,119,119,0,0 13166:O2|3,@13167 13167:S10|56616c75654d61746368 13168:S33|535452554354555245535f28292e7374727563744578706f727454726565283129 13169:O1|@17890 13170:S33|535452554354555245535f28292e7374727563744578706f727454726565283329 13171:S48|535452554354555245535f28292e7374727563744578706f727454726565283329636f6d6d6f6e50726f70732d283129 13172:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296173506172656e74283129 13173:O1|@17879 13174:O1|@17880 13175:O1|@17882 13176:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283129 13177:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329 13178:S57|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296578706f727454686973283129 13179:S55|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f7274534228332967657456616c7565283129 13180:O1|@17889 13181:S54|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296765744e616d65283129 13182:O1|@17888 13183:S59|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329676574536967537472756374283129 13184:O1|@17891 13185:O1|@18593 13186:S31|535452554354555245535f28292e67656e636f646553747275637473283329 13187:O1|@17892 13188:O1|@17933 13189:S53|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e53747275637456616c7565283129 13190:O1|@17893 13191:O1|@17894 13192:O1|@17897 13193:S51|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e537472756374446563283129 13194:O1|@17895 13195:O1|@17896 13196:O1|@17932 13197:S59|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c54797065732832296c6561737447656e457870283129 13198:O1|@17898 13199:O1|@17899 13200:O1|@17900 13201:O1|@17911 13202:S91|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e6365283229 13203:O1|@17901 13204:O1|@17903 13205:O1|@17902 13206:O1|@17904 13207:O1|@17906 13208:S103|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832297472616e73706f7365283129 13209:O1|@17905 13210:O1|@17907 13211:S107|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832296f726967696e616c566172732d283129 13212:O1|@17908 13213:O1|@17909 13214:O1|@17910 13215:O1|@17912 13216:O2|@17913,@13217 13217:O10|@17929,@29,@4995,@7244,@4934,@7734,@36,@34,@82,@38 13218:O1|@17926 13219:S27|545950455f5452454528292e6c6561737447656e6572616c283129 13220:O1|@17915 13221:O1|@17917 13222:O1|@17918 13223:O1|@17919 13224:O1|@17921 13225:S39|545950455f5452454528292e6c6561737447656e6572616c2831296c6561737441726773283129 13226:O4|@72,@5747,0,@13227 13227:O5|@8028,3105,0,3105,0 13228:O1|@17920 13229:O1|@17922 13230:O1|@17923 13231:O1|@17925 13232:S17|4c697374506169722e756e7a6970283229 13233:O1|@17928 13234:S44|545950455f5452454528292e6c6561737447656e6572616c28312967657454797065436f6e73747273283129 13235:O4|@16,@4583,@13239,@13242 13236:S37|545950455f5452454528292e74797065436f6e73747246726f6d4f7665726c6f6164283229 13237:O4|@16,@4583,@13239,@13238 13238:O5|@8028,2772,0,2772,0 13239:S40|74797065436f6e73747246726f6d4f7665726c6f61643a204e6f206d61746368696e672074797065 13240:O4|@16,@4583,@13239,@13241 13241:O5|@8028,2764,0,2764,0 13242:O5|@8028,2762,0,2762,0 13243:O4|@16,@4583,@13245,@13244 13244:O5|@10893,2217,0,2217,0 13245:S36|72656475636554797065733a20556e61626c6520746f2073657420747970652076617273 13246:O1|@17931 13247:S40|535452554354555245535f28292e67656e636f6465537472756374732833296d6b41646472283129 13248:O3|@13249,@8997,0 13249:O1|@17935 13250:S37|44454255474745525f28292e696e697469616c44656275676765725374617475732d283129 13251:O1|@17936 13252:O1|@18587 13253:S43|535452554354555245535f28292e67656e636f6465537472756374732833296d6170506169722834292829 13254:O1|@17937 13255:O1|@18586 13256:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429 13257:O1|@17938 13258:O1|@18584 13259:O1|@17939 13260:O1|@18582 13261:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e64283329 13262:S72|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e642833296d6b41646472283129 13263:O4|@16,@4583,@10953,@13268 13264:S34|434f44455452454528292e6e65774c6576656c283129746869734c6576656c283129 13265:O4|@16,@4583,@13267,@13266 13266:O5|@4715,93,0,93,0 13267:S34|6d6b4c6f61643a206c6576656c206d757374206265206e6f6e2d6e65676174697665 13268:O5|@4715,90,0,90,0 13269:O4|101,@8038,0,@13270 13270:O5|@4896,509,0,509,0 13271:O1|@17942 13272:O1|@17948 13273:S37|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629 13274:O1|@17943 13275:O1|@17947 13276:S47|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629666f6c64496473283329 13277:O1|@17944 13278:O4|@16,@4583,@13281,@13280 13279:S28|545950454944434f444528292e636f64654163636573732832292829 13280:O5|@13282,80,0,80,0 13281:S9|4e6f20616363657373 13282:S34|6d6c736f757263652f4d4c436f6d70696c65722f545950454944434f44452e736d6c 13283:S29|434f44455452454528292e6d756c7469706c6555736573283429283129 13284:S35|434f44455452454528292e6d756c7469706c65557365732834296c6f6164466e283129 13285:O1|@17950 13286:S26|44454255474745525f28292e7570646174655374617465283529 13287:O1|@13288 13288:O3|6,6,0 13289:O1|@13290 13290:O3|6,7,0 13291:O1|@17949 13292:O1|@17951 13293:O1|@17952 13294:S37|44454255474745525f28292e6d616b655374727563744465627567456e7472696573283629 13295:O1|@17956 13296:S50|44454255474745525f28292e6d616b655374727563744465627567456e74726965732836296c6f6164537472756374283329 13297:O1|@17953 13298:O4|@16,@4583,@13281,@13300 13299:S27|56414c55455f4f505328292e636f64654163636573732832292829 13300:O5|@13301,668,0,668,0 13301:S32|6d6c736f757263652f4d4c436f6d70696c65722f56414c55455f4f50532e4d4c 13302:O1|@17957 13303:O1|@17958 13304:S34|44454255474745525f28292e6d616b6556616c4465627567456e7472696573283729 13305:O1|@18092 13306:S44|44454255474745525f28292e6d616b6556616c4465627567456e74726965732837296c6f6164566172283329 13307:O1|@17959 13308:S22|56414c55455f4f505328292e636f646556616c283629 13309:O1|@17962 13310:O2|@18053,@83 13311:S28|56414c55455f4f505328292e6170706c7946756e6374696f6e283729 13312:S40|56414c55455f4f505328292e6170706c7946756e6374696f6e283729676574436f6e737472283129 13313:O1|@17964 13314:O7|@17965,@13390,@13513,@13614,@13626,@13315,@8096 13315:O4|@18014,@13390,@13513,@13614 13316:O1|@17966 13317:S32|545950454944434f444528292e6170706c79546f496e7374616e636527283429 13318:O1|@17967 13319:O1|@18003 13320:S52|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329 13321:O1|@17968 13322:O1|@17969 13323:S62|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296571436f64652d283129 13324:O1|@17970 13325:O4|@16,@4583,@13377,@13376 13326:S22|545950454944434f444528292e6d616b654571283429 13327:O1|@17972 13328:S39|545950454944434f444528292e6d616b654571283429636f6d62696e65456e7472696573283229 13329:O1|@17973 13330:O1|@17974 13331:S10|65717b2e2e2e7d283229 13332:O1|@17976 13333:O1|@17977 13334:S48|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229 13335:O1|@17978 13336:O1|@17992 13337:S57|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229676574417267283129 13338:O1|@17979 13339:O1|@17986 13340:S45|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229 13341:S48|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229283129 13342:O1|@17982 13343:S65|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229 13344:O1|@17984 13345:S56|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322973616d6554797065283229 13346:S68|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229283129 13347:S67|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329 13348:S70|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329283129 13349:O4|@16,@4583,@13351,@13350 13350:O5|@13282,631,0,631,0 13351:S6|676574417267 13352:O1|@17988 13353:O4|@16,@4583,@13362,@13361 13354:S32|545950454944434f444528292e626f7865646e657373466f7254797065283429 13355:O1|@17990 13356:O1|@17991 13357:S59|545950454944434f444528292e626f7865646e657373466f7254797065283429626f7865646e657373466f72436f6e737472756374696f6e283229 13358:O4|@16,@4583,@13360,@13359 13359:O5|@13282,393,0,393,0 13360:S30|626f7865646e657373466f72547970653a20556e6b6e6f776e2074797065 13361:O5|@13282,377,0,377,0 13362:S43|626f7865646e6573733a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 13363:O4|@16,@4583,@13372,@13371 13364:S27|545950454944434f444528292e73697a65466f7254797065283429 13365:O1|@17994 13366:O1|@17995 13367:S49|545950454944434f444528292e73697a65466f725479706528342973697a65466f72436f6e737472756374696f6e283229 13368:O4|@16,@4583,@13370,@13369 13369:O5|@13282,455,0,455,0 13370:S25|73697a65466f72547970653a20556e6b6e6f776e2074797065 13371:O5|@13282,429,0,429,0 13372:S38|73697a653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 13373:O4|@16,@4583,@13375,@13374 13374:O5|@13282,719,0,719,0 13375:S21|457175616c69747920666f722066756e6374696f6e 13376:O5|@13282,683,0,683,0 13377:S40|6d616b6545713a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 13378:O1|@17996 13379:O1|@17997 13380:S72|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296765745479706556616c7565466f724944283129 13381:O1|@17998 13382:O1|@18000 13383:S27|545950454944434f444528292e6765744d61784465707468283329 13384:S47|545950454944434f444528292e547970655661724d61702e636865636b54797065436f6e7374727563746f72283229 13385:O1|@18001 13386:O1|@18002 13387:S65|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329626f786564436f64652d283129 13388:O1|@18004 13389:S64|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d6574657228332973697a65436f64652d283129 13390:O3|6,@13392,@13391 13391:O2|@13397,0 13392:O4|@13394,@13393,2,1 13393:O1|@18006 13394:O1|@18005 13395:S10|6572726f72436f646532 13396:S14|7072696e742d66756e6374696f6e 13397:O4|@25,@4162,@13398,0 13398:O3|3,4,@13399 13399:O6|@15283,@4708,@13401,@13411,@13412,@13400 13400:O2|@15292,@13428 13401:O2|@15291,@13402 13402:O2|@13404,@13403 13403:O2|@13407,@7879 13404:O2|@5340,@13405 13405:O3|1,@13406,@4720 13406:O8|@4689,@13395,0,0,@7612,0,0,1 13407:O2|@5224,@13408 13408:O3|1,@13409,@4720 13409:O8|@13410,@13396,0,0,@5205,0,0,1 13410:O3|6,@9471,0 13411:O16|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 13412:O17|@13414,@13418,@13417,@13416,@13394,@13393,@13392,@13420,@13419,@13422,@13421,@13424,@13423,@13425,@13415,@13426,@13413 13413:O4|@4941,@13426,1,1 13414:O7|@13416,@13392,@13419,@13421,@13423,@13415,@13413 13415:O4|@4962,@13425,3,1 13416:O4|@13418,@13417,3,1 13417:O1|@18008 13418:O1|@18007 13419:O4|@4770,@13420,1,1 13420:O1|@18009 13421:O4|@4662,@13422,3,1 13422:O1|@18010 13423:O4|@4879,@13424,1,1 13424:O1|@18011 13425:O1|@18012 13426:O1|@18013 13427:S10|7072696e742d63686172 13428:O2|@13430,@13429 13429:O2|0,@13499 13430:O2|@13431,0 13431:O4|@24,@4162,@13432,0 13432:O2|0,@13433 13433:O2|0,@13434 13434:O2|@13436,@13435 13435:O2|@13449,@13448 13436:O2|@13438,@13437 13437:O2|@13444,0 13438:O4|@24,@4162,@13439,0 13439:O2|@13440,@4672 13440:O2|@13441,0 13441:O4|@25,@4162,@13442,0 13442:O3|1,@4783,@13443 13443:O6|@15284,@4708,@4720,@4719,@4775,@4707 13444:O4|@25,@4162,@13445,0 13445:O3|3,4,@13446 13446:O4|@15293,@13447,@13439,@13419 13447:O2|@13442,@4756 13448:O2|@13462,@13461 13449:O2|@13451,@13450 13450:O2|@13457,0 13451:O4|@24,@4162,@13452,0 13452:O2|@13453,@4672 13453:O2|@13454,0 13454:O4|@25,@4162,@13455,0 13455:O3|1,@4677,@13456 13456:O6|@15284,@4708,@4676,@4725,@4747,@4732 13457:O4|@25,@4162,@13458,0 13458:O3|3,4,@13459 13459:O4|@15293,@13460,@13452,@13421 13460:O2|@13455,@4756 13461:O2|@13475,@13474 13462:O2|@13464,@13463 13463:O2|@13470,0 13464:O4|@24,@4162,@13465,0 13465:O2|@13466,@4672 13466:O2|@13467,0 13467:O4|@25,@4162,@13468,0 13468:O3|1,@4783,@13469 13469:O6|@15284,@4708,@4720,@4719,@4883,@4707 13470:O4|@25,@4162,@13471,0 13471:O3|3,4,@13472 13472:O4|@15293,@13473,@13465,@13423 13473:O2|@13468,@4756 13474:O2|@13487,0 13475:O2|@13477,@13476 13476:O2|@13483,0 13477:O4|@24,@4162,@13478,0 13478:O2|@13479,@4672 13479:O2|@13480,0 13480:O4|@25,@4162,@13481,0 13481:O3|1,@4973,@13482 13482:O6|@15284,@4708,@4720,@4719,@4967,@4707 13483:O4|@25,@4162,@13484,0 13484:O3|3,4,@13485 13485:O4|@15293,@13486,@13478,@13415 13486:O2|@13481,@4756 13487:O2|@13489,@13488 13488:O2|@13495,0 13489:O4|@24,@4162,@13490,0 13490:O2|@13491,@4672 13491:O2|@13492,0 13492:O4|@25,@4162,@13493,0 13493:O3|1,@4783,@13494 13494:O6|@15284,@4708,@4720,@4719,@4945,@4707 13495:O4|@25,@4162,@13496,0 13496:O3|3,4,@13497 13497:O4|@15293,@13498,@13490,@13413 13498:O2|@13493,@4756 13499:O2|0,@13500 13500:O2|0,@13501 13501:O2|0,@13502 13502:O2|0,@13503 13503:O2|0,@13504 13504:O2|0,@13505 13505:O2|@13436,@13506 13506:O2|0,@13507 13507:O2|@13449,@13508 13508:O2|0,@13509 13509:O2|@13462,@13510 13510:O2|0,@13511 13511:O2|@13475,@13512 13512:O2|0,@13474 13513:O2|@13515,@13514 13514:O2|@13536,@13535 13515:O2|@4794,@13516 13516:O3|6,@13419,@13517 13517:O2|@13438,@13518 13518:O2|@13519,0 13519:O4|@25,@4162,@13520,0 13520:O3|3,4,@13521 13521:O6|@15283,@4708,@13522,@13411,@13412,@13400 13522:O2|@15291,@13523 13523:O2|@13525,@13524 13524:O2|@13527,@4789 13525:O2|@13526,@13442 13526:O3|0,@4770,@13440 13527:O2|@5130,@13528 13528:O3|1,@13529,@4720 13529:O8|@13530,@10637,0,0,@4787,0,0,1 13530:O4|7,@13532,@13531,1 13531:O3|13,@5407,@13533 13532:O2|@4699,0 13533:O3|@13534,0,0 13534:O3|6,@27,0 13535:O2|@13556,@13555 13536:O2|@4650,@13537 13537:O3|6,@13421,@13538 13538:O2|@13451,@13539 13539:O2|@13540,0 13540:O4|@25,@4162,@13541,0 13541:O3|3,4,@13542 13542:O6|@15283,@4708,@13543,@13411,@13412,@13400 13543:O2|@15291,@13544 13544:O2|@13546,@13545 13545:O2|@13548,@4739 13546:O2|@13547,@13455 13547:O3|0,@4662,@13453 13548:O2|@5203,@13549 13549:O3|1,@13550,@4720 13550:O8|@13551,@10637,0,0,@4787,0,0,1 13551:O4|7,@13532,@13552,1 13552:O3|13,@5407,@13553 13553:O3|@13554,0,0 13554:O3|6,@23,0 13555:O2|@13576,@13575 13556:O2|@4930,@13557 13557:O3|6,@13423,@13558 13558:O2|@13464,@13559 13559:O2|@13560,0 13560:O4|@25,@4162,@13561,0 13561:O3|3,4,@13562 13562:O6|@15283,@4708,@13563,@13411,@13412,@13400 13563:O2|@15291,@13564 13564:O2|@13566,@13565 13565:O2|@13568,@4789 13566:O2|@13567,@13468 13567:O3|0,@4879,@13466 13568:O2|@8534,@13569 13569:O3|1,@13570,@4720 13570:O8|@13571,@9625,0,0,@4787,0,0,1 13571:O4|7,@13532,@13572,1 13572:O3|13,@5407,@13573 13573:O3|@13574,0,0 13574:O3|6,@31,0 13575:O2|@13595,0 13576:O2|@7734,@13577 13577:O3|6,@13415,@13578 13578:O2|@13477,@13579 13579:O2|@13580,0 13580:O4|@25,@4162,@13581,0 13581:O3|3,4,@13582 13582:O6|@15283,@4708,@13583,@13411,@13412,@13400 13583:O2|@15291,@13584 13584:O2|@13586,@13585 13585:O2|@13588,@4739 13586:O2|@13587,@13481 13587:O3|0,@4962,@13479 13588:O2|@8548,@13589 13589:O3|1,@13590,@4720 13590:O8|@13591,@4582,0,0,@4787,0,0,1 13591:O4|7,@13532,@13592,1 13592:O3|13,@5407,@13593 13593:O3|@13594,0,0 13594:O3|6,@35,0 13595:O2|@4934,@13596 13596:O3|6,@13413,@13597 13597:O2|@13489,@13598 13598:O2|@13599,0 13599:O4|@25,@4162,@13600,0 13600:O3|3,4,@13601 13601:O6|@15283,@4708,@13602,@13411,@13412,@13400 13602:O2|@15291,@13603 13603:O2|@13605,@13604 13604:O2|@13607,@4789 13605:O2|@13606,@13493 13606:O3|0,@4941,@13491 13607:O2|@8564,@13608 13608:O3|1,@13609,@4720 13609:O8|@13610,@13427,0,0,@4787,0,0,1 13610:O4|7,@13532,@13611,1 13611:O3|13,@5407,@13612 13612:O3|@13613,0,0 13613:O3|6,@33,0 13614:O3|6,@13416,@13615 13615:O2|@13616,0 13616:O4|@25,@4162,@13617,0 13617:O3|3,4,@13618 13618:O6|@15283,@4708,@13619,@13411,@13412,@13400 13619:O2|@15291,@13620 13620:O2|@13622,@13621 13621:O2|@13623,@4739 13622:O2|@4781,@13405 13623:O2|@5030,@13624 13624:O3|1,@13625,@4720 13625:O8|@8099,@8098,0,0,@5205,0,0,1 13626:O2|12,@13627 13627:O8|@4689,@13628,0,0,@7612,1,0,1 13628:S10|6e6f457175616c697479 13629:O1|@18015 13630:S30|545950454944434f444528292e7072696e746572466f7254797065283329 13631:S11|7072696e742d656d707479 13632:S42|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f6465283229 13633:O2|@5206,@13634 13634:O2|@13635,0 13635:O3|6,@8895,0 13636:O3|20,@13633,1 13637:O1|@18016 13638:O2|@4683,@13639 13639:O2|@4683,@7774 13640:O3|20,@13638,1 13641:O2|@5206,@13642 13642:O2|@13643,0 13643:O3|6,@4218,0 13644:O3|20,@13641,1 13645:O1|@18018 13646:O2|@5206,@13647 13647:O2|@13648,0 13648:O3|6,@4216,0 13649:O3|20,@13646,1 13650:O1|@18019 13651:S14|7072696e742d6c6162656c6c6564 13652:O1|@18021 13653:O1|@18022 13654:S56|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283129 13655:S59|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283229283129 13656:O1|@18024 13657:O1|@18029 13658:S53|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f646528322961735265636f7264283229 13659:O4|@72,@5747,0,@13660 13660:O5|@13282,565,0,565,0 13661:O2|@13662,0 13662:O4|3,@13663,@4683,@7523 13663:O4|11,@4684,1,0 13664:O2|0,@4134 13665:O1|@18025 13666:O1|@18026 13667:O2|@5206,@13668 13668:O2|@13669,0 13669:O3|6,@4137,0 13670:O3|20,@13667,1 13671:O1|@18027 13672:O1|@18028 13673:O1|@18030 13674:O2|@5206,@13675 13675:O2|@13676,0 13676:O3|6,@4926,0 13677:O3|20,@13674,1 13678:O1|@18031 13679:O1|@18034 13680:O1|@18035 13681:O1|@18036 13682:O1|@18037 13683:S70|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832296d616b655072696e7465724964283129636f6465466f724964283129 13684:S6|7072696e742d 13685:O1|@18038 13686:O1|@18039 13687:O4|@16,@4583,@13689,@13688 13688:O5|@13282,470,0,470,0 13689:S48|7072696e746572466f72547970653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 13690:O2|@5206,@13691 13691:O2|@13692,0 13692:O3|6,@13693,0 13693:S7|3c656d7074793e 13694:O3|20,@13690,1 13695:O1|@18040 13696:O2|@4517,@4517 13697:S49|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f616447656e6572616c283129 13698:O1|@18043 13699:S48|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283129283129 13700:O1|@18044 13701:S45|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283229 13702:S4|636f6e76 13703:S42|56414c55455f4f505328292e6170706c7946756e6374696f6e283729666f6c6c6f775479706573283129 13704:O4|103,@4629,@13706,@13705 13705:O5|@13301,1115,0,1115,0 13706:S52|496e76616c6964207479706520286e6f742061207479706520636f6e737472756374696f6e2920286164644f7665726c6f616429 13707:O4|103,@4629,@13709,@13708 13708:O5|@13301,1113,0,1113,0 13709:S56|43616e6e6f7420696e7374616c6c20616e206f7665726c6f61642077697468696e206120737472756374757265206f722066756e63746f72 13710:O4|@16,@4583,@13712,@13711 13711:O5|@13301,1060,0,1060,0 13712:S14|4f7665726c6f616420457175616c 13713:O4|@18047,@13390,@13513,@13614 13714:S8|657175616c697479 13715:S31|545950454944434f444528292e657175616c697479466f7254797065283329 13716:O1|@18049 13717:O1|@18050 13718:S45|545950454944434f444528292e657175616c697479466f7254797065283329726573756c74436f64652d283129 13719:O1|@18051 13720:O4|@16,@4583,@13722,@13721 13721:O5|@13301,1073,0,1073,0 13722:S17|4f7665726c6f6164204e6f74457175616c 13723:O4|@16,@4583,@13725,@13724 13724:O5|@13301,1086,0,1086,0 13725:S16|4f7665726c6f61642054797065446570 13726:O1|@18052 13727:O4|@16,@4583,@13730,@13729 13728:S37|56414c55455f4f505328292e6765744f7665726c6f6164496e7374616e6365283429283129 13729:O5|@13301,683,0,683,0 13730:S28|6765744f7665726c6f6164496e7374616e63653a204d697373696e67 13731:O1|@18054 13732:S28|5052494e545f5441424c4528292e6765744f7665726c6f6164283329 13733:S41|5052494e545f5441424c4528292e6765744f7665726c6f61642833297365617263684c697374283129 13734:O1|@18055 13735:O4|@16,@4583,@13737,@13736 13736:O5|@13301,1003,0,1003,0 13737:S42|4f7665726c6f6164656420416464507265747479202d2077726f6e6720696e7374616e63652074797065 13738:O1|@18056 13739:S36|56414c55455f4f505328292e636f646556616c283629666f6c6c6f775479706573283129 13740:O1|@18058 13741:O1|@18059 13742:S14|6164645072657474795072696e74 13743:O1|@18060 13744:O2|3,@13746 13745:S27|56414c55455f4f505328292e636f646556616c2836295f2d283129 13746:S133|6164645072657474795072696e7420656c656d656e742066756e6374696f6e73206d75737420686176652074797065202761202a20696e74202d3e207072657474792c202762202a20696e74202d3e207072657474792c202e2e2e2077697468206f6e652066756e6374696f6e20666f722065616368207479706520706172616d65746572 13747:O1|@18061 13748:O2|3,@13753 13749:S26|56414c55455f4f505328292e636865636b505054797065283629 13750:S13|417267756d656e7420666f7220 13751:O2|3,@13752 13752:S14|526571756972656420747970653a 13753:S14|417267756d656e7420747970653a 13754:O3|6,@13755,0 13755:O1|@18062 13756:O4|103,@4629,@13759,@13758 13757:S25|56414c55455f4f505328292e636f646556616c283629283129 13758:O5|@13301,999,0,999,0 13759:S68|6164645072657474795072696e743a2054686520617267756d656e74207479706520776173206e6f7420612073696d706c65207479706520636f6e737472756374696f6e 13760:O2|@5039,0 13761:O1|@18063 13762:S7|61646450502d31 13763:O2|@13764,0 13764:O4|11,@7752,1,0 13765:O1|@18064 13766:O1|@18065 13767:O1|@18066 13768:S7|61646450502d32 13769:O1|@18067 13770:O1|@18068 13771:O1|@18069 13772:S5|6164645050 13773:O1|@18070 13774:O3|6,@13775,0 13775:O1|@18071 13776:O4|103,@4629,@13759,@13777 13777:O5|@13301,870,0,870,0 13778:S12|416464507265747479285029 13779:O3|6,@13780,0 13780:O1|@18072 13781:O4|103,@4629,@13784,@13783 13782:S31|56414c55455f4f505328292e636f646556616c2836296765744c6f63283129 13783:O5|@13301,1009,0,1009,0 13784:S68|546865207370656369616c2066756e6374696f6e20506f6c794d4c2e736f757263654c6f636174696f6e2063616e6e6f74206265207573656420617320612076616c7565 13785:O4|@16,@4583,@13787,@13786 13786:O5|@13301,864,0,864,0 13787:S42|4f7665726c6f6164656420476574507265747479202d2077726f6e6720696e7374616e63652074797065 13788:O1|@18074 13789:S9|676574507265747479 13790:O4|@16,@4583,@13792,@13791 13791:O5|@13301,849,0,849,0 13792:S43|4f7665726c6f61646564204d616b65537472696e67202d2077726f6e6720696e7374616e63652074797065 13793:O2|@13794,0 13794:O3|20,@13795,0 13795:O2|@4684,@13796 13796:O2|@13797,0 13797:O3|6,10000,0 13798:O3|6,@8758,0 13799:O1|@18076 13800:S12|6d616b65737472696e672829 13801:O1|@18077 13802:O3|6,@4156,0 13803:O1|@18078 13804:S13|6d616b65737472696e67285029 13805:O4|@16,@4583,@13807,@13806 13806:O5|@13301,822,0,822,0 13807:S38|4f7665726c6f61646564205072696e74202d2077726f6e6720696e7374616e63652074797065 13808:O1|@18079 13809:O1|@18081 13810:S7|7072696e742829 13811:O1|@18082 13812:O2|@8099,0 13813:O1|@18083 13814:O1|@18084 13815:S8|7072696e74285029 13816:O4|@16,@4583,@13818,@13817 13817:O5|@13301,758,0,758,0 13818:S16|636f646556616c202d20466f726d616c 13819:O1|@18086 13820:O1|@18087 13821:O1|@18088 13822:S32|56414c55455f4f505328292e636f646556616c2836296c6f6164566172283129 13823:O1|@18093 13824:O1|@18094 13825:S41|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629 13826:O1|@18098 13827:S51|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629666f6c64496473283329 13828:O1|@18095 13829:O1|@18099 13830:O1|@18100 13831:O1|@18101 13832:O2|@18102,@13833 13833:O2|@18195,@13832 13834:O1|@18194 13835:S47|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f6465283629 13836:O1|@18105 13837:O1|@18106 13838:S47|535452554354555245535f28292e67656e636f6465537472756374732833296c6f61644f7061717565496473283329 13839:O5|@18107,@8096,@13390,@13513,@13614 13840:S14|7072696e742d68656c7065722829 13841:S32|545950454944434f444528292e636f646547656e657261746976654964283529 13842:O1|@18108 13843:O1|@18109 13844:S42|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283129 13845:O1|@18110 13846:O1|@18111 13847:S45|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283129 13848:O1|@18112 13849:O1|@18113 13850:S44|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283129 13851:O1|@18114 13852:S47|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832292d45 13853:O1|@18116 13854:O1|@18122 13855:S45|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229 13856:S54|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832296d6b41646472283129 13857:O1|@18119 13858:S56|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229617267732d283129283129 13859:O1|@18121 13860:O1|@18124 13861:O1|@18125 13862:S45|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283229283129 13863:S10|657175616c6974792829 13864:O1|@18127 13865:O1|@18128 13866:S48|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283229283129 13867:S11|626f7865646e6573732829 13868:O1|@18130 13869:O1|@18131 13870:S47|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283229283129 13871:S6|73697a652829 13872:O1|@18132 13873:O1|@18133 13874:O4|@16,@4583,@13876,@13875 13875:O5|@13282,1164,0,1164,0 13876:S15|416c726561647920636865636b6564 13877:O1|@18136 13878:O1|@18137 13879:O1|@18138 13880:O1|@18139 13881:O4|11,@4007,0,@13883 13882:S53|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835292d45 13883:O5|@12530,2792,0,2792,0 13884:O1|@18140 13885:O1|@18141 13886:S51|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e73283529 13887:O1|@18144 13888:S71|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d61746368537562537472756374757265283329 13889:O1|@18145 13890:O1|@18174 13891:S85|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e283329 13892:O1|@18146 13893:O1|@18150 13894:S96|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296c6f6164436f6465283129 13895:O2|@4684,@7774 13896:O1|@18149 13897:O2|@4689,@7774 13898:O1|@18154 13899:S29|56414c55455f4f505328292e636f6465457846756e6374696f6e283629 13900:O1|@18152 13901:O1|@18153 13902:O1|@18155 13903:O1|@18156 13904:O2|@18157,@192 13905:S29|706f6c79436f6d70696c65722832297072696e7444657074682d283129 13906:O1|@18158 13907:O5|0,0,0,@13917,@13916 13908:S17|7072696e742d6d61746368526573756c74 13909:O5|0,0,0,@13911,@13910 13910:O2|@13914,0 13911:O2|@13912,0 13912:O2|0,@13913 13913:O5|@8028,1869,1869,0,0 13914:O2|3,@13915 13915:S11|53696d706c654572726f72 13916:O2|@13920,0 13917:O2|@13918,0 13918:O2|0,@13919 13919:O5|@8028,1870,1870,0,0 13920:O2|3,@13921 13921:S20|54797065436f6e7374727563746f724572726f72 13922:O3|@18159,@8781,77 13923:O1|@18162 13924:S28|506f6c794d4c2e7072657474794d61726b7570283129283129283129 13925:O1|@18160 13926:S22|506f6c794d4c2e7072657474795072696e742d283129 13927:O1|@18161 13928:O1|@18163 13929:S22|506f6c794d4c2e7072657474794d61726b7570283529 13930:O1|@18165 13931:S31|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329 13932:O1|@18164 13933:S32|506f6c794d4c2e7072657474794d61726b757028352967657453697a65283229 13934:S41|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329646f5072696e74283329 13935:O4|@16,@4583,@13937,@13936 13936:O5|@12530,2608,0,2608,0 13937:S27|756e6966795479706573206661696c656420696e20706173732033 13938:O1|@18166 13939:S97|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e28332964657374566172732d283129 13940:O1|@18167 13941:O1|@18169 13942:S118|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d61726741646472732d283129283129 13943:S113|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d6d6b4164647273283129 13944:O1|@18172 13945:S3|285029 13946:O1|@18173 13947:O1|@18175 13948:S61|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f646528362970726f63657373426f6479283129 13949:O1|@18176 13950:O1|@18183 13951:S49|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229 13952:O1|@18177 13953:O4|@16,@4583,@13956,@13955 13954:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229747970655661724d61702d283129 13955:O5|@12530,2898,0,2898,0 13956:S10|747970655661724d6170 13957:O1|@18178 13958:O17|@195,@196,@197,@198,@13963,@189,@4062,@5423,@5427,@199,@188,@194,@8804,0,@191,@190,@5432 13959:S60|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f6164537472646563732832296c6f616456616c73283229 13960:O1|@18179 13961:O1|@18180 13962:O1|@18181 13963:O1|@18182 13964:S18|4c45585f28292e6e756c6c4c65782d283129 13965:O1|@18184 13966:O1|@18185 13967:O1|@18186 13968:O4|11,@4007,0,@13969 13969:O5|@12530,2780,0,2780,0 13970:O1|@18187 13971:O1|@18188 13972:O1|@18189 13973:O1|@18190 13974:O1|@18192 13975:O4|@16,@4583,@13977,@13976 13976:O5|@12530,2726,0,2726,0 13977:S37|6d616b6553656c65637465643a204e6f7420426f756e64206f72206e6f7420466f726d616c 13978:O4|@16,@4583,@13980,@13979 13979:O5|@12530,2735,0,2735,0 13980:S22|46756e63746f724170706c3a20756e646566696e6564 13981:O1|@18193 13982:O1|@18571 13983:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929 13984:S33|434f444547454e5f50415253455452454528292e67656e636f6465283829283129 13985:O3|@18197,@14200,@13986 13986:O2|@18529,@14332 13987:O1|@18308 13988:S35|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529 13989:O1|@18198 13990:O1|@18199 13991:O1|@18200 13992:O1|@18202 13993:O1|@18201 13994:O1|@18203 13995:O1|@18206 13996:S48|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529646563436f6e73747273283429 13997:O1|@18204 13998:O4|@16,@4583,@14000,@13999 13999:O5|@14001,1034,0,1034,0 14000:S18|646563436f6e733a204e6f74206c6f63616c 14001:S51|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f434f444547454e5f5041525345545245452e736d6c 14002:O1|@18205 14003:O6|@18207,@13315,@8096,@13390,@13513,@13614 14004:O1|@18261 14005:S39|545950454944434f444528292e637265617465446174617479706546756e6374696f6e73283529 14006:O1|@18208 14007:O1|@18209 14008:O1|@18210 14009:S36|545950454944434f444528292e657175616c697479466f72446174617479706573283429 14010:O1|@18234 14011:S58|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229 14012:O1|@18211 14013:O1|@18213 14014:S93|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d617267732d283129283129 14015:O1|@18215 14016:S91|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d6d6b41646472283129 14017:O1|@18218 14018:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283129 14019:O1|@18219 14020:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283329 14021:O1|@18220 14022:O1|@18226 14023:S75|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f72446174617479706528322970726f63657373436f6e73747273283129 14024:O1|@18221 14025:O1|@18222 14026:O4|@16,@4583,@14028,@14027 14027:O5|@8028,1576,0,1576,0 14028:S19|4e6f7420612066756e6374696f6e2074797065 14029:O1|@18223 14030:S41|545950455f5452454528292e636f6e7374727563746f72526573756c74283229676574417267283129 14031:O1|@18225 14032:S3|65712d 14033:S3|283229 14034:O1|@18227 14035:O1|@18228 14036:O1|@18229 14037:O1|@18230 14038:S6|283229285029 14039:O1|@18231 14040:O4|@16,@4583,@14042,@14041 14041:O5|@13282,138,0,138,0 14042:S19|6765744361636865645479706556616c756573 14043:O1|@18232 14044:O1|@18233 14045:O1|@18235 14046:O4|0,@4868,@4689,@4683 14047:O1|@18236 14048:O1|@18237 14049:O1|@18260 14050:S52|545950454944434f444528292e637265617465446174617479706546756e6374696f6e732835297365745072696e746572283429 14051:O1|@18238 14052:O1|@18258 14053:S34|545950454944434f444528292e7072696e746572466f724461746174797065283329 14054:O1|@18240 14055:O1|@18242 14056:O1|@18246 14057:S85|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429 14058:O1|@18243 14059:O1|@18244 14060:S96|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429617267732d283129283129 14061:S81|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b41646472283129 14062:O2|@5206,@14063 14063:O2|@14064,0 14064:O3|6,@4133,0 14065:O3|20,@14062,1 14066:O2|@4683,@13897 14067:O3|20,@14066,1 14068:O2|@5206,@14069 14069:O2|@14070,0 14070:O3|6,@4134,0 14071:O3|20,@14068,1 14072:O4|5,@14074,@14073,@4689 14073:O4|5,@14077,@14076,@4689 14074:O3|21,@14075,9 14075:O3|21,@5044,5 14076:O3|21,@14080,9 14077:O3|21,@14078,9 14078:O3|21,@14079,5 14079:O4|11,@5044,1,1 14080:O4|5,@14082,@14081,@4689 14081:O3|15,@14086,@14085 14082:O4|19,3,@14083,4 14083:O4|11,@14084,0,0 14084:O4|11,@5044,0,1 14085:O4|5,@14090,@4683,@14089 14086:O2|@14087,0 14087:O4|1,0,1,@14088 14088:O4|11,@14084,1,1 14089:O4|5,@14092,@4683,@14091 14090:O4|3,@5045,@14064,@4786 14091:O4|3,@5045,@14093,@4786 14092:O4|3,@5045,@13648,@4786 14093:O3|6,@4184,0 14094:O2|@14095,0 14095:O4|1,0,0,@8453 14096:O1|@18248 14097:S12|706172656e74686573697365 14098:O1|@18249 14099:O4|3,@5041,@4683,@7518 14100:S59|545950454944434f444528292e7072696e746572466f7244617461747970652833297072696e746572466f72436f6e7374727563746f7273283129 14101:S16|4e6f20636f6e7374727563746f72733a 14102:O5|@13282,1053,0,1053,0 14103:O1|@18250 14104:O1|@18251 14105:O1|@18252 14106:O2|@14107,0 14107:O4|3,@5041,@4683,@7523 14108:O1|@18254 14109:O2|@5206,@14110 14110:O2|@14111,0 14111:O3|6,@5082,0 14112:O3|20,@14109,1 14113:O1|@18255 14114:O1|@18256 14115:O1|@18257 14116:O1|@18259 14117:S18|7072696e742d7072696e7464656661756c74 14118:O1|@18262 14119:O1|@18263 14120:O1|@18264 14121:O1|@18265 14122:S57|434f444547454e5f50415253455452454528292e636f646553657175656e63652835296e657744656275677c6c6f63616c446563732d283129 14123:O1|@18266 14124:O1|@18267 14125:O1|@18268 14126:O1|@18269 14127:O1|@18270 14128:O1|@18271 14129:O1|@18272 14130:O4|@18273,@5323,@5233,@14137 14131:O4|@16,@4583,@14133,@14132 14132:O5|@14001,962,0,962,0 14133:S6|6c7641646472 14134:O4|@16,@4583,@14136,@14135 14135:O5|@14001,982,0,982,0 14136:S6|636f64654578 14137:O5|5,@14143,@5278,@5275,@4653 14138:S26|44415441545950455f52455028292e6d6b45784964656e283329 14139:O4|101,@8038,0,@14141 14140:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b65536f6d652d283129 14141:O5|@4896,508,0,508,0 14142:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b654e6f6e652d283129 14143:O2|@14144,0 14144:O3|2,@14145,@8454 14145:O3|3,@14146,@5102 14146:O2|@14148,@14147 14147:O2|@14149,0 14148:O2|@5107,@7468 14149:O2|@5109,@4762 14150:O1|@18276 14151:O1|@18277 14152:O1|@18278 14153:O1|@18279 14154:O1|@18281 14155:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283129 14156:O1|@18282 14157:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283229 14158:O1|@18283 14159:O1|@18284 14160:O1|@18285 14161:O1|@18286 14162:O1|@18287 14163:O1|@18288 14164:S53|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529636865636b56617273283129283129283129 14165:O1|@18290 14166:S40|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229 14167:S25|29206f7574736964652069747320646566696e6974696f6e2e 14168:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283229 14169:S44|54797065206f662065787072657373696f6e20636f6e7461696e73206c6f63616c2064617461747970652028 14170:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129 14171:S56|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129283129 14172:O1|@18295 14173:O3|@5719,@14175,0 14174:S34|44454255474745525f28292e75706461746544656275674c6f636174696f6e283429 14175:O1|@14176 14176:O3|6,8,0 14177:O2|@18296,@14178 14178:O3|13,@5407,@14181 14179:O1|@18297 14180:S29|44454255474745525f28292e627265616b506f696e74436f6465283529 14181:O3|@14182,@5406,0 14182:O3|6,@95,0 14183:O1|@18298 14184:O1|@18299 14185:O1|@18300 14186:O1|@18303 14187:S61|434f444547454e5f50415253455452454528292e636f646552656356616c42696e64696e677328332976616c42696e64546f4676616c42696e64283229 14188:O4|@16,@4583,@14190,@14189 14189:O5|@14001,1535,0,1535,0 14190:S10|6765744d617463686573 14191:O1|@18301 14192:O1|@18302 14193:O4|@16,@4583,@14195,@14194 14194:O5|@14001,1554,0,1554,0 14195:S10|6d6b4656616c42696e64 14196:O1|@18304 14197:O1|@18305 14198:O1|@18306 14199:O1|@18307 14200:O2|@18309,@14201 14201:O3|@18392,@14332,@10880 14202:O1|@18391 14203:S38|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429 14204:O1|@18310 14205:S53|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429636865636b56617273283129283129 14206:O1|@18312 14207:O4|@16,@4583,@14209,@14208 14208:O5|@14001,1149,0,1149,0 14209:S15|73657456616c756541646472657373 14210:O1|@18313 14211:O1|@18314 14212:O1|@18316 14213:S48|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429676574506f6c79283129 14214:S41|545950454944434f444528292e547970655661724d61702e6d61705479706556617273283129283129 14215:O1|@18317 14216:O1|@18384 14217:S52|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329 14218:O4|@16,@4583,@14220,@14219 14219:O5|@14001,1204,0,1204,0 14220:S23|6261646c7920666f726d65642070617273652074726565 14221:O1|@18318 14222:O1|@18319 14223:O1|@18322 14224:S33|434f444547454e5f50415253455452454528292e7475706c655769647468283129 14225:O10|@18320,@38,@29,@4995,@7244,@4934,@7734,@36,@34,@82 14226:S27|545950455f5452454528292e6973466c6f6174696e675074283129 14227:O4|@16,@4583,@14229,@14228 14228:O5|@8028,97,0,97,0 14229:S33|74634571756976616c656e743a204e6f74206120747970652066756e6374696f6e 14230:O4|@16,@4583,@14232,@14231 14231:O5|@8028,3042,0,3042,0 14232:S26|656e7472794e756d626572202d206e6f742061207265636f7264 14233:O1|@18321 14234:O4|@16,@4583,@14236,@14235 14235:O5|@14001,176,0,176,0 14236:S26|7475706c6557696474683a20656d707479206c6f63616c646563 14237:O1|@18323 14238:O1|@18324 14239:O1|@18325 14240:O1|@18330 14241:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6541726773283229 14242:O1|@18326 14243:O1|@18327 14244:O1|@18328 14245:O1|@18329 14246:O4|@16,@4583,@14248,@14247 14247:O5|@14001,125,0,125,0 14248:S10|6d6b4172675475706c65 14249:O1|@18332 14250:O1|@18333 14251:O1|@18334 14252:S71|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296172674c6973742d6d616b6541726773283229 14253:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329666e4d6b41646472283129 14254:O1|@18336 14255:S67|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e4465637328332961726741646472732d283129283129 14256:O1|@18338 14257:S87|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329616464457874726173283229636865636b506f6c796d6f72706869736d283229283129 14258:O1|@18339 14259:O1|@18340 14260:O1|@18341 14261:S73|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296372656174654170706c69636174696f6e73283429 14262:O4|@16,@4583,@14264,@14263 14263:O5|@14001,1368,0,1368,0 14264:S31|6372656174654d6174636865733a204d697373696e67207479706520766172 14265:O1|@18343 14266:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329636f6465426f6479283129 14267:O1|@18344 14268:S29|434f44455452454528292e6d6b536574436f6e7461696e65722d283329 14269:O4|@18345,@14294,@14297,@14270 14270:O3|13,@5407,@14300 14271:O1|@18367 14272:S35|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029 14273:O1|@14274 14274:O3|6,5,0 14275:O1|@18346 14276:O1|@18347 14277:O1|@18348 14278:O1|@18349 14279:O1|@18350 14280:O1|@18353 14281:O1|@18354 14282:O1|@18355 14283:O1|@18356 14284:O1|@18357 14285:O1|@18358 14286:S57|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e7472792835292d45 14287:O1|@18359 14288:S55|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e747279283529 14289:O1|@18362 14290:O1|@18363 14291:O1|@18364 14292:O1|@18365 14293:O1|@18366 14294:O3|13,@5407,@14295 14295:O3|@14296,@5406,0 14296:O3|6,@93,0 14297:O3|13,@5407,@14298 14298:O3|@14299,@5406,0 14299:O3|6,@94,0 14300:O3|@14301,@5406,0 14301:O3|6,@92,0 14302:O4|@16,@4583,@14304,@14303 14303:O5|@14001,1425,0,1425,0 14304:S23|417267756d656e74206c656e6774682070726f626c656d 14305:O1|@18368 14306:O1|@18369 14307:O1|@18370 14308:O1|@18372 14309:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296261736546756e2d283129 14310:O1|@18373 14311:O1|@18383 14312:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e73283529 14313:O1|@18377 14314:S75|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e732835296e6578745061726d73283129 14315:O1|@18376 14316:O1|@18378 14317:O1|@18379 14318:O1|@18380 14319:O1|@18381 14320:O1|@18382 14321:O1|@18385 14322:O1|@18387 14323:S59|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129 14324:O1|@18386 14325:O1|@18390 14326:S68|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129757064617465283229 14327:O1|@18388 14328:O1|@18389 14329:S26|2920686173206e6f74206265656e207265666572656e6365642e 14330:S46|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c7565283229 14331:S18|56616c7565206964656e7469666965722028 14332:O5|@18477,@14201,@10880,@13985,@14522 14333:O1|@18476 14334:S32|434f444547454e5f50415253455452454528292e636f64654d61746368283529 14335:O1|@18393 14336:S41|434f444547454e5f50415253455452454528292e6765745661726961626c6573496e50617474283229 14337:O4|101,@8038,0,@14338 14338:O5|@14001,322,0,322,0 14339:O1|@18399 14340:S56|434f444547454e5f50415253455452454528292e636f64654d61746368283529636f64655061747465726e45787072657373696f6e283129 14341:O1|@18397 14342:O1|@18398 14343:O4|@16,@4583,@14345,@14344 14344:O5|@14001,374,0,374,0 14345:S7|6d616b65417267 14346:O1|@18400 14347:O1|@18454 14348:S37|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e73283729 14349:O3|0,@5395,0 14350:O1|@18401 14351:O1|@18436 14352:S28|4d415443485f434f4d50494c455228292e6275696c64416f74283529 14353:O1|@18402 14354:O1|@18408 14355:S30|56414c55455f4f505328292e676574506f6c796d6f72706869736d283329 14356:O1|@18403 14357:O1|@18404 14358:O1|@18406 14359:O1|@18409 14360:S36|4d415443485f434f4d50494c455228292e6275696c64416f74283529646f417267283129 14361:O1|@18411 14362:O4|@16,@4583,@14371,@14370 14363:S31|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429 14364:O1|@18412 14365:S30|4d415443485f434f4d50494c455228292e74657374416363657373283129 14366:O1|@18413 14367:O1|@18414 14368:S42|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429616464436c697374283129 14369:S24|4d415443485f434f4d50494c455228292e706c7573283229 14370:O5|@14372,401,0,401,0 14371:S37|6164644578636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 14372:S48|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4d415443485f434f4d50494c45522e736d6c 14373:O1|@18415 14374:O4|@16,@4583,@14379,@14378 14375:S29|4d415443485f434f4d50494c455228292e616464436f6e737472283629 14376:O1|@18416 14377:S40|4d415443485f434f4d50494c455228292e616464436f6e737472283629616464436c697374283129 14378:O5|@14372,316,0,316,0 14379:S35|616464436f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 14380:O1|@18417 14381:O2|30,@8997 14382:O1|@18419 14383:O1|@18422 14384:S30|4d415443485f434f4d50494c455228292e61646444656661756c74283229 14385:O1|@18420 14386:O1|@18421 14387:S31|43616e27742066696e642061206669786564207265636f726420747970652e 14388:O4|@16,@4583,@14232,@14389 14389:O5|@8028,3037,0,3037,0 14390:O1|@18423 14391:O1|@18424 14392:O4|101,@8038,0,@14396 14393:S26|545950455f5452454528292e656e7472794e756d626572283229 14394:O4|@16,@4583,@14232,@14395 14395:O5|@8028,3023,0,3023,0 14396:O5|@8028,3011,0,3011,0 14397:O1|@18425 14398:O4|@16,@4583,@14401,@14400 14399:S39|4d415443485f434f4d50494c455228292e6275696c64416f742835296d657267656e2833292829 14400:O5|@14372,472,0,472,0 14401:S6|6d657267656e 14402:O1|@18426 14403:S42|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229 14404:O4|@16,@4583,@14407,@14406 14405:S54|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c6973742832296d6b436f6e73506174283129 14406:O5|@14372,539,0,539,0 14407:S34|6d6b436f6e735061743a206261646c792d666f726d65642070617273652d74726565 14408:S45|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229283129 14409:O1|@18429 14410:O4|@16,@4583,@14413,@14412 14411:S40|4d415443485f434f4d50494c455228292e6275696c64416f74283529657175616c6974792d283129 14412:O5|@14372,559,0,559,0 14413:S15|657175616c697479466f7254797065 14414:S40|4d415443485f434f4d50494c455228292e6275696c64416f742835296c697456616c75652d283129 14415:O1|@18431 14416:S4|20746f20 14417:S30|56414c55455f4f505328292e6765744c69746572616c56616c7565283429 14418:O1|@18432 14419:S22|436f6e76657273696f6e20657863657074696f6e2028 14420:S26|2920726169736564207768696c6520636f6e76657274696e6720 14421:S43|4f766572666c6f7720657863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 14422:O4|1,@4417,0,@14423 14423:O5|@13301,1286,0,1286,0 14424:S34|457863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 14425:O1|@18433 14426:O4|@16,@4583,@14431,@14430 14427:S30|4d415443485f434f4d50494c455228292e61646453636f6e737472283529 14428:O1|@18434 14429:S41|4d415443485f434f4d50494c455228292e61646453636f6e737472283529616464436c697374283129 14430:O5|@14372,349,0,349,0 14431:S36|61646453636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 14432:O1|@18435 14433:O4|@16,@4583,@14435,@14434 14434:O5|@14372,446,0,446,0 14435:S31|7061747465726e206973206e6f742061207475706c6520696e20612d6f2d74 14436:O1|@18437 14437:S45|4d415443485f434f4d50494c455228292e636f6e7461696e734e6f6e436f6e7374457863657074696f6e283129 14438:O1|@18438 14439:S26|4d415443485f434f4d50494c455228292e66726f6d2832292829 14440:O1|@18439 14441:S47|4d415443485f434f4d50494c455228292e6275696c645061747465726e436f64652833296669726550617474283129 14442:O1|@18440 14443:O1|@18452 14444:S28|4d415443485f434f4d50494c455228292e70617474436f6465283529 14445:O1|@18441 14446:S29|4d415443485f434f4d50494c455228292e696e74657273656374283229 14447:O1|@18442 14448:O1|@18443 14449:S43|4d415443485f434f4d50494c455228292e70617474436f64652835296d616b655061747454657374283329 14450:O1|@18444 14451:S29|4d415443485f434f4d50494c455228292e6d616b654e61697665283229 14452:O1|@18447 14453:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655061747473283129 14454:O1|@18445 14455:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655465737473283229 14456:O1|@18446 14457:S24|4d415443485f434f4d50494c455228292e64696666283229 14458:O1|@18448 14459:O1|@18449 14460:S48|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283429 14461:O1|@18451 14462:S29|4d415443485f434f4d50494c455228292e706174744465707468283229 14463:S51|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283129283129 14464:O3|6,101,0 14465:S48|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e732837296669726550617474283129 14466:O4|@16,@4583,@14468,@14467 14467:O5|@14372,1179,0,1179,0 14468:S33|636f646544656661756c742063616c6c6564206275742065786861757374697665 14469:O3|6,@7462,0 14470:O1|@18455 14471:S37|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429 14472:O1|@18464 14473:S49|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d61746368283329 14474:O4|@16,@4583,@14476,@14475 14475:O5|@14372,609,0,609,0 14476:S7|73657441646472 14477:O1|@18456 14478:O1|@18463 14479:S73|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d6d616b655061747465726e73283129 14480:O4|@16,@4583,@14482,@14481 14481:O5|@14372,1083,0,1083,0 14482:S16|6d616b6554657374733a20656d707479 14483:O1|@18457 14484:O1|@18458 14485:S29|4d415443485f434f4d50494c455228292e6d616b654c6f616473283529 14486:O1|@18461 14487:S35|4d415443485f434f4d50494c455228292e636f6e7374727563746f72436f6465283429 14488:O1|@18459 14489:S24|56414c55455f4f505328292e6d616b654775617264283529 14490:O4|@16,@4583,@14492,@14491 14491:O5|@13301,1207,0,1207,0 14492:S9|6d616b654775617264 14493:S33|56414c55455f4f505328292e6d616b654775617264283529746573746572283129 14494:S26|56414c55455f4f505328292e6d616b65496e7665727365283529 14495:O4|@16,@4583,@14497,@14496 14496:O5|@13301,1234,0,1234,0 14497:S11|6d616b65496e7665727365 14498:S39|56414c55455f4f505328292e6d616b65496e7665727365283529676574496e7665727365283129 14499:S34|4d415443485f434f4d50494c455228292e6d616b654e616976655465737473283429 14500:O4|@16,@4583,@14503,@14502 14501:S70|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d646f5061747465726e283229 14502:O5|@14372,1060,0,1060,0 14503:S21|646f5061747465726e3a206e6f7420617420656e64 14504:S31|48616e646c6572206361746368657320616c6c20657863657074696f6e732e 14505:S27|4d61746368657320617265206e6f7420657868617573746976652e 14506:O1|@18465 14507:S14|20697320726564756e64616e742e 14508:S50|434f444547454e5f50415253455452454528292e636f64654d617463682835297265706f7274526564756e64616e74283229 14509:S8|5061747465726e20 14510:O1|@18466 14511:O1|@18475 14512:S41|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729 14513:S53|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729666e4d6b4164647273283129 14514:O1|@18469 14515:O1|@18470 14516:O1|@18471 14517:O4|@16,@4583,@14476,@14518 14518:O5|@14001,449,0,449,0 14519:O1|@18472 14520:O1|@18473 14521:O1|@18474 14522:O2|@18514,@14201 14523:O1|@18513 14524:S35|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329 14525:O1|@18478 14526:O1|@18479 14527:O1|@18480 14528:O1|@18482 14529:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f64654c697374283329 14530:O4|@16,@4583,@14532,@14531 14531:O5|@14001,695,0,695,0 14532:S22|4578705365713a20656d7074792073657175656e6365 14533:O1|@18481 14534:O1|@18484 14535:S47|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329676574436f6e737472283129 14536:O1|@18486 14537:O4|@16,@4583,@14540,@14539 14538:S38|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329283129 14539:O5|@14001,591,0,591,0 14540:S17|6d697373696e6720696e207265636f7264 14541:O1|@18487 14542:O1|@18492 14543:S45|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c697374283329 14544:S54|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c6973742833296c6f6f6b466e283129 14545:O1|@18491 14546:O4|@16,@4583,@14548,@14547 14547:O5|@14001,630,0,630,0 14548:S22|4c6973743a2062616420656c656d656e742074797065 14549:O1|@18493 14550:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129 14551:S58|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129676574436f6e737472283129 14552:O1|@18497 14553:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283129 14554:O1|@18502 14555:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329 14556:O1|@18498 14557:O1|@18501 14558:S60|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329636f64654c697374283329 14559:O1|@18499 14560:O1|@18500 14561:O4|@16,@4583,@6372,@14562 14562:O5|@4824,421,0,421,0 14563:O4|@16,@4583,@6375,@14564 14564:O5|@4824,423,0,423,0 14565:O1|@18506 14566:O1|@18507 14567:O1|@18508 14568:O1|@18509 14569:O4|@16,@4583,@14571,@14570 14570:O5|@14001,555,0,555,0 14571:S20|636f646567656e3a20556e617279207475706c65 14572:O1|@18510 14573:O1|@18511 14574:O1|@18512 14575:O1|@18528 14576:S33|434f444547454e5f50415253455452454528292e636f64654c616d626461283429 14577:O4|@16,@4583,@14579,@14578 14578:O5|@14001,797,0,797,0 14579:S42|676574466e426f64793a206e6f74206120636f6e73747261696e656420666e2d65787072657373696f6e 14580:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429666e4d6b41646472283129 14581:O4|@16,@4583,@14583,@14582 14582:O5|@14001,813,0,813,0 14583:S43|636f64654c616d6264613a20626f6479206f6620666e206973206e6f74206120636c61757365206c697374 14584:O1|@18518 14585:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429636f6465416c7473283129 14586:O1|@18520 14587:O1|@18521 14588:O1|@18522 14589:O1|@18523 14590:O1|@18524 14591:O1|@18527 14592:O1|@18530 14593:S44|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329 14594:O1|@18559 14595:S58|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229 14596:O1|@18531 14597:O1|@18532 14598:O1|@18533 14599:O1|@18534 14600:O1|@18536 14601:S77|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229706f6c7956617273466f7256616c732d283129 14602:O1|@18537 14603:S106|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d666e4d6b41646472283129 14604:O1|@18540 14605:S110|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d61726741646472732d283129283129 14606:O1|@18544 14607:O1|@18545 14608:O1|@18546 14609:O1|@18547 14610:S31|4d415443485f434f4d50494c455228292e636f646542696e64696e67283429 14611:O4|@16,@4583,@14613,@14612 14612:O5|@14372,1124,0,1124,0 14613:S42|636f646542696e64696e673a2073686f756c64206265206e61697665207061747465726e206d61746368 14614:O3|6,@7457,0 14615:O3|6,100,0 14616:S26|5061747465726e206973206e6f7420657868617573746976652e 14617:O1|@18548 14618:O1|@18549 14619:O1|@18550 14620:O1|@18551 14621:O4|@16,@4583,@14623,@14622 14622:O5|@14001,1642,0,1642,0 14623:S7|6c6f616456616c 14624:O1|@18552 14625:O1|@18553 14626:O1|@18558 14627:S85|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6c6f616446756e6374696f6e73283329 14628:O4|@16,@4583,@14630,@14629 14629:O5|@14001,1681,0,1681,0 14630:S13|6c6f616446756e6374696f6e73 14631:O1|@18554 14632:O1|@18556 14633:S83|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6170706c69636174696f6e283229 14634:O1|@18555 14635:O1|@18560 14636:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f636573735461696c283129 14637:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f63657373426f6479283129 14638:O1|@18563 14639:O1|@18567 14640:O1|@18564 14641:O1|@18566 14642:S65|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929636f646553747275637475726542696e64283329 14643:O1|@18565 14644:O1|@18568 14645:O1|@18569 14646:O1|@18570 14647:O1|@18573 14648:O1|@18574 14649:O1|@18580 14650:S25|434f44455452454528292e6d6b4d6163726f50726f63283129 14651:O1|@18575 14652:O1|@18576 14653:O1|@18577 14654:O4|@16,@4583,@14657,@14656 14655:S28|434f44455452454528292e6d6b4d6163726f50726f63283129283129 14656:O5|@4715,356,0,356,0 14657:S20|6d6b4d6163726f50726f633a20636c6f73757265 14658:O1|@18578 14659:O1|@18579 14660:O1|@18581 14661:O1|@18583 14662:O1|@18585 14663:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f706465637328342964656275677c636f64652d283129 14664:O1|@18588 14665:O1|@18592 14666:S45|535452554354555245535f28292e67656e636f6465537472756374732833296c6f6164546f7064656373283129 14667:O1|@18589 14668:O1|@18590 14669:O1|@18591 14670:O1|@18594 14671:S45|434f4d50494c45525f424f445928292e62617365436f6d70696c657228342965786563757465436f6465283129 14672:O1|@18624 14673:S29|535452554354555245535f28292e706173733453747275637473283329 14674:O4|0,@8964,0,@14675 14675:O1|@18595 14676:O4|11,@4007,0,@14678 14677:S39|535452554354555245535f28292e706173733453747275637473283329726573756c742d283129 14678:O5|@12530,3264,0,3264,0 14679:O1|@18596 14680:O1|@18608 14681:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329 14682:O1|@18597 14683:O1|@18598 14684:S61|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e6174757265283129 14685:S70|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e61747572652831296d6170494473283129 14686:O1|@18601 14687:O1|@18602 14688:S66|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e64283329 14689:S75|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e642833296e65774d6170283129 14690:O4|@16,@4583,@12680,@14691 14691:O5|@12530,3171,0,3171,0 14692:S58|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296d617054797065496473283129 14693:O1|@18617 14694:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374537472756374283429 14695:O1|@18609 14696:O1|@18616 14697:S56|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296d616b6544656373283329 14698:O1|@18610 14699:S69|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129636f70794964283129 14700:O1|@18615 14701:S81|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129 14702:O1|@18614 14703:S84|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129283129 14704:S63|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129283129 14705:S68|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296578747261637453747275637475726542696e64283329 14706:O1|@18619 14707:O1|@18620 14708:O1|@18621 14709:O1|@18622 14710:O1|@18623 14711:O2|3,@14712 14712:S24|436f6d70696c6174696f6e20696e7465727275707465640a 14713:O4|1,@4417,0,@14714 14714:O5|@14715,237,0,237,0 14715:S36|6d6c736f757263652f4d4c436f6d70696c65722f434f4d50494c45525f424f44592e4d4c 14716:S26|457863657074696f6e2d20496e7465726e616c4572726f723a20 14717:S23|20726169736564207768696c6520636f6d70696c696e67 14718:O5|@14715,246,0,246,0 14719:S11|457863657074696f6e2d20 14720:S36|20756e65787065637465646c7920726169736564207768696c6520636f6d70696c696e67 14721:O4|103,@4629,@14723,@14722 14722:O5|@4620,241,0,241,0 14723:S13|537461746963204572726f7273 14724:O1|@18626 14725:O1|@18628 14726:O1|@18630 14727:O1|@18632 14728:O1|@18634 14729:O1|@18636 14730:O1|@18637 14731:O1|@18638 14732:S33|4261736963496d7065726174697665494f28292e636c6f7365496e283129283129 14733:S26|426173696353747265616d494f28292e646f436c6f7365283129 14734:O5|@4620,258,0,258,0 14735:S8|207261697365640a 14736:O1|@18639 14737:S3|757365 14738:S24|4d414b455f28292e757365496e746f456e76283129283129 14739:S12|757365576974685061726d73 14740:S8|636f6d70696c6572 14741:O2|1,@14742 14742:O3|6,@14743,0 14743:O1|@18643 14744:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283129 14745:O1|@18644 14746:S26|4d414b455f28292e67456e7641734e616d655370616365283229 14747:O1|@18660 14748:O1|@18663 14749:O1|@18666 14750:O1|@18669 14751:O1|@18672 14752:O1|@18675 14753:O1|@18678 14754:O1|@18681 14755:O1|@18684 14756:O1|@18687 14757:O1|@18690 14758:O1|@18692 14759:S11|676c6f62616c5370616365 14760:S4|68617264 14761:S7|6d657373616765 14762:O5|5,@8471,@5278,@5275,@4653 14763:S6|706172656e74 14764:S4|6e657874 14765:S8|70726576696f7573 14766:S21|636f6d70696c657256657273696f6e4e756d626572 14767:O2|@14768,0 14768:O3|2,@7315,@4762 14769:S13|6c696e654e756d626572546167 14770:O3|@14772,@14774,@14771 14771:O2|@18695,@49 14772:O2|@18693,@49 14773:S19|556e6976657273616c2e746167283229283129 14774:O2|@18694,@49 14775:S9|6f6666736574546167 14776:O3|@14778,@14779,@14777 14777:O2|@18698,@50 14778:O2|@18696,@50 14779:O2|@18697,@50 14780:S11|66696c654e616d65546167 14781:O3|@14783,@14784,@14782 14782:O2|@18701,@51 14783:O2|@18699,@51 14784:O2|@18700,@51 14785:S17|62696e64696e67436f756e746572546167 14786:O3|@14788,@14789,@14787 14787:O2|@18704,@52 14788:O2|@18702,@52 14789:O2|@18703,@52 14790:S16|6d6178496e6c696e6553697a65546167 14791:O3|@14793,@14794,@14792 14792:O2|@18707,@54 14793:O2|@18705,@54 14794:O2|@18706,@54 14795:S15|617373656d626c79436f6465546167 14796:O3|@14798,@14799,@14797 14797:O2|@18710,@59 14798:O2|@18708,@59 14799:O2|@18709,@59 14800:S12|706172736574726565546167 14801:O3|@14803,@14804,@14802 14802:O2|@18713,@56 14803:O2|@18711,@56 14804:O2|@18712,@56 14805:S11|636f646574726565546167 14806:O3|@14808,@14809,@14807 14807:O2|@18716,@48 14808:O2|@18714,@48 14809:O2|@18715,@48 14810:S8|69636f6465546167 14811:O3|@14813,@14814,@14812 14812:O2|@18719,@57 14813:O2|@18717,@57 14814:O2|@18718,@57 14815:S19|6c6f776c6576656c4f7074696d697365546167 14816:O3|@14818,@14819,@14817 14817:O2|@18722,@58 14818:O2|@18720,@58 14819:O2|@18721,@58 14820:S19|636f64657472656541667465724f7074546167 14821:O3|@14823,@14824,@14822 14822:O2|@18725,@60 14823:O2|@18723,@60 14824:O2|@18724,@60 14825:S17|696e6c696e6546756e63746f7273546167 14826:O3|@14828,@14829,@14827 14827:O2|@18728,@53 14828:O2|@18726,@53 14829:O2|@18727,@53 14830:S8|6465627567546167 14831:O3|@14833,@14834,@14832 14832:O2|@18731,@64 14833:O2|@18729,@64 14834:O2|@18730,@64 14835:S16|7072696e74446570746846756e546167 14836:O3|@14838,@14839,@14837 14837:O2|@18734,@62 14838:O2|@18732,@62 14839:O2|@18733,@62 14840:S13|6572726f724465707468546167 14841:O3|@14843,@14844,@14842 14842:O2|@18737,@61 14843:O2|@18735,@61 14844:O2|@18736,@61 14845:S13|6c696e654c656e677468546167 14846:O3|@14848,@14849,@14847 14847:O2|@18740,@63 14848:O2|@18738,@63 14849:O2|@18739,@63 14850:S20|70726f66696c65416c6c6f636174696f6e546167 14851:O3|@14853,@14854,@14852 14852:O2|@18743,@55 14853:O2|@18741,@55 14854:O2|@18742,@55 14855:O2|@14856,0 14856:O3|2,@8454,@7315 14857:S14|7072696e744f7574707574546167 14858:O3|@14860,@14861,@14859 14859:O2|@18746,@103 14860:O2|@18744,@103 14861:O2|@18745,@103 14862:S17|636f6d70696c65724f7574707574546167 14863:O3|@14865,@14866,@14864 14864:O2|@18749,@70 14865:O2|@18747,@70 14866:O2|@18748,@70 14867:S19|6572726f724d65737361676550726f63546167 14868:O3|@14870,@14871,@14869 14869:O2|@18752,@102 14870:O2|@18750,@102 14871:O2|@18751,@102 14872:S11|726f6f7454726565546167 14873:O3|@14875,@14876,@14874 14874:O2|@18755,@105 14875:O2|@18753,@105 14876:O2|@18754,@105 14877:S24|7265706f7274556e7265666572656e636564496473546167 14878:O3|@14880,@14881,@14879 14879:O2|@18758,@65 14880:O2|@18756,@65 14881:O2|@18757,@65 14882:S27|7265706f72744578686175737469766548616e646c657273546167 14883:O3|@14885,@14886,@14884 14884:O2|@18761,@66 14885:O2|@18759,@66 14886:O2|@18760,@66 14887:S27|6e6172726f774f7665726c6f6164466c65785265636f7264546167 14888:O3|@14890,@14891,@14889 14889:O2|@18764,@67 14890:O2|@18762,@67 14891:O2|@18763,@67 14892:S23|6372656174655072696e7446756e6374696f6e73546167 14893:O3|@14895,@14896,@14894 14894:O2|@18767,@68 14895:O2|@18765,@68 14896:O2|@18766,@68 14897:S24|7265706f727444697363617264656456616c756573546167 14898:O3|@14900,@14901,@14899 14899:O2|@18770,@69 14900:O2|@18768,@69 14901:O2|@18769,@69 14902:O3|@14904,@14903,@7356 14903:S13|352e372e312052656c65617365 14904:S15|636f6d70696c657256657273696f6e 14905:O1|@18771 14906:S8|436f646554726565 14907:S16|506f6c794d4c2e436f6465547265652e 14908:S8|636f646574726565 14909:S11|636f646542696e64696e67 14910:S10|6d6b436f6e7374616e74 14911:O1|@18772 14912:S21|434f44455452454528292e6d6b436f6e7374283129 14913:S7|67656e436f6465 14914:O2|@18773,@5417 14915:S21|434f44455452454528292e67656e436f6465283129 14916:S6|6576616c7565 14917:O1|@18774 14918:S30|434f4445545245455f46554e4354494f4e5328292e6576616c7565283129 14919:S10|6d6b46756e6374696f6e 14920:O1|@18775 14921:O1|@18776 14922:S41|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65466e283129 14923:S16|6d6b496e6c696e6546756e6374696f6e 14924:O1|@18777 14925:O1|@18780 14926:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65496e6c696e65466e283129 14927:O1|@18778 14928:O1|@18779 14929:S6|6d6b43616c6c 14930:O1|@18781 14931:O1|@18782 14932:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c6543616c6c283129 14933:S11|6d6b4c6f61644c6f63616c 14934:O1|@18783 14935:S14|6d6b4c6f6164417267756d656e74 14936:O1|@18784 14937:S13|6d6b4c6f6164436c6f73757265 14938:O1|@18785 14939:S5|6d6b446563 14940:O1|@18786 14941:S19|434f44455452454528292e6d6b446563283129 14942:S5|6d6b496e64 14943:O1|@18787 14944:S37|434f4445545245455f46554e4354494f4e5328292e6d6b496e646972656374283129283129 14945:S4|6d6b4966 14946:O1|@18788 14947:S7|6d6b5768696c65 14948:O1|@18789 14949:S21|434f44455452454528292e6d6b5768696c65283129 14950:S6|6d6b4c6f6f70 14951:O1|@18790 14952:O1|@18791 14953:S20|434f44455452454528292e6d6b4c6f6f70283129 14954:S11|6d6b426567696e4c6f6f70 14955:O1|@18792 14956:O1|@18793 14957:S25|434f44455452454528292e6d6b426567696e4c6f6f70283129 14958:S5|6d6b456e76 14959:O1|@18794 14960:S29|434f4445545245455f46554e4354494f4e5328292e6d6b456e76283129 14961:S12|6d6b4d757475616c44656373 14962:O1|@18795 14963:S26|434f44455452454528292e6d6b4d757475616c44656373283129 14964:S7|6d6b5475706c65 14965:O1|@18796 14966:S35|434f4445545245455f46554e4354494f4e5328292e6d6b5265636f7264283129283129 14967:S7|6d6b5261697365 14968:O1|@18797 14969:S8|6d6b48616e646c65 14970:O1|@18798 14971:S22|434f44455452454528292e6d6b48616e646c65283129 14972:S9|6d6b4e756c6c446563 14973:O1|@18799 14974:S4|6e616d65 14975:O1|@18800 14976:S24|5354525543545f56414c5328292e76616c4e616d65283129 14977:O1|@18801 14978:O1|@18802 14979:S26|56414c55455f4f505328292e7072696e7456616c756573283129 14980:S32|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329 14981:S41|56414c55455f4f505328292e7072696e7456616c7565466f72547970652833296d6b41646472283129 14982:O1|@18805 14983:S46|56414c55455f4f505328292e7072696e7456616c7565466f725479706528332964756d6d7954797065732d283129 14984:O1|@18806 14985:S44|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329706f6c79436f64652d283129 14986:S13|7072696e745769746854797065 14987:O1|@18807 14988:O1|@18812 14989:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617956616c756573283129 14990:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6554797065456e76283229283129 14991:O2|@14993,@14992 14992:O1|@18811 14993:O1|@18810 14994:O1|@18813 14995:S28|56414c55455f4f505328292e646973706c617956616c756573283429 14996:O2|@9456,0 14997:S9|7072696e7454797065 14998:O1|@18814 14999:O2|@15002,@15001 15000:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065457870283129 15001:O1|@18818 15002:O1|@18817 15003:S6|747970656f66 15004:O1|@18819 15005:S26|5354525543545f56414c5328292e76616c547970654f66283129 15006:S4|636f6465 15007:O1|@18820 15008:O4|103,@4629,@15011,@15010 15009:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7256616c7565283129 15010:O5|@7694,1651,0,1651,0 15011:S18|4e6f74206120676c6f62616c2076616c7565 15012:S10|70726f70657274696573 15013:O1|@18821 15014:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7256616c7565283129 15015:S13|6973436f6e7374727563746f72 15016:O1|@18822 15017:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973436f6e7374727563746f72283129 15018:S11|6973457863657074696f6e 15019:O1|@18823 15020:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973457863657074696f6e283129 15021:O1|@18824 15022:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7254797065283129 15023:O1|@18825 15024:O2|@15027,@15026 15025:S58|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065436f6e737472283129 15026:O1|@18829 15027:O1|@18828 15028:O1|@18830 15029:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7254797065436f6e737472283129 15030:O1|@18831 15031:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72537472756374283129 15032:O1|@18832 15033:O1|@18833 15034:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283129 15035:O1|@18838 15036:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283329 15037:O2|@15039,@15038 15038:O1|@18837 15039:O1|@18836 15040:O2|@5268,@14996 15041:O1|@18847 15042:S25|56414c55455f4f505328292e646973706c6179536967283529 15043:S41|56414c55455f4f505328292e646973706c6179536967283529636f6d706f73697465456e762d283129 15044:O2|@5091,@9345 15045:O1|@18843 15046:S33|56414c55455f4f505328292e646973706c61795369672835296f72646572283129 15047:S36|56414c55455f4f505328292e646973706c61795369672835296f72646572283129283129 15048:O1|@18845 15049:S39|56414c55455f4f505328292e646973706c6179536967283529646973706c617953706563283229 15050:O1|@18846 15051:O1|@18848 15052:O4|103,@4629,@15055,@15054 15053:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f72537472756374283129 15054:O5|@7694,1709,0,1709,0 15055:S22|4e6f74206120676c6f62616c20737472756374757265 15056:O1|@18849 15057:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72537472756374283129 15058:S8|636f6e74656e7473 15059:O1|@18850 15060:O1|@18851 15061:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283129 15062:O1|@18870 15063:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229 15064:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757056616c283129 15065:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757054797065283129 15066:S66|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b7570537472756374283129 15067:O1|@18857 15068:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c56616c756573283129 15069:O1|@18856 15070:O1|@18860 15071:S62|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c5479706573283129 15072:O1|@18859 15073:O1|@18863 15074:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c53747275637473283129 15075:O1|@18862 15076:O1|@18864 15077:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229283129 15078:O1|@18865 15079:O1|@18866 15080:O1|@18867 15081:O4|103,@4629,@15084,@15083 15082:S67|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229656e74657246756e6374696f6e283129 15083:O5|@7694,1750,0,1750,0 15084:S37|7570646174696e67206120737472756374757265206973206e6f7420706f737369626c652e 15085:O1|@18868 15086:O1|@18869 15087:O1|@18871 15088:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72536967283129 15089:O1|@18872 15090:O2|@15093,@15092 15091:S52|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953696773283129 15092:O1|@18876 15093:O1|@18875 15094:O1|@18877 15095:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72536967283129 15096:O1|@18878 15097:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7246756e63746f72283129 15098:O1|@18879 15099:O1|@18884 15100:S56|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617946756e63746f7273283129 15101:O2|@15103,@15102 15102:O1|@18883 15103:O1|@18882 15104:O2|@5091,@15112 15105:S30|56414c55455f4f505328292e646973706c617946756e63746f7273283329 15106:O2|@5268,@15107 15107:O2|@15108,@5598 15108:O2|3,@15109 15109:S2|293a 15110:O1|@18885 15111:S40|56414c55455f4f505328292e646973706c617946756e63746f7273283329617267456e762d283129 15112:O2|@5093,0 15113:O1|@18889 15114:O4|103,@4629,@15117,@15116 15115:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7246756e6374283129 15116:O5|@7694,1817,0,1817,0 15117:S20|4e6f74206120676c6f62616c2066756e63746f72 15118:O1|@18890 15119:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7246756e63746f72283129 15120:O1|@18891 15121:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72466978283129 15122:S31|56414c55455f4f505328292e646973706c6179466978537461747573283129 15123:O3|@15125,@15124,0 15124:O2|@18939,@18940 15125:S7|3c737464696e3e 15126:O1|@18893 15127:O1|@18894 15128:S10|506f6c7946696e697368 15129:O1|@18895 15130:S29|4f532e50726f636573732e657869742831296578697446756e2d283129 15131:O1|@18896 15132:D16,236|fb12faf435faf50c7881b47881833c28483cda40faea0c2a2a693c3bfae60c29299291033029352a362afadca003033c02142a3b3bef280da0030a2a3ffac93f280ded02013b03033c0207292503511e2f3b6502013b642b2afab10c2cfab10cfab22a0c5178810928133bfaab0cf102096d3bfaa70c50faa7647881063b2c0cf102036d3b6450501e233b642706f102296d78810928133bfa7e0cf102096d3cfa7a0c50fa7e647881063b2c0cf102036d3b6450501e233b6464503bf102036d3c6478810928133bfa4e0cf102096d2afa4a0c50fa52647881063b2c0cf102036d3b6450501e233b64654200|@3970,1,@200,@0,@4552,@4554,@4585,@4586,@4587,@8718,@15123,@15126,@15127,@15129,@15131,@3969| 15133:D3,12|fb0529363b3b3be342000000|@3974,1,@201| 15134:D11,84|fb0f7881270b02003b3b3b2cfa520c5029352a36fa4e2ab9293db72c2ab833362a3bfa440c503b2708f102266d2935280ca003043b5002022910fa303529fa30fa320c50fa263529392afa2c2bfa2d0c66644200|@3979,1,@202,@3980,-1,@3987,@18932,@4020,@4021,@4406,@3978| 15135:D5,180|fb112b2f299291039f29352a362a353da00309292503511e133b02892a353ca0033e2a36293ca0030428060211293ba003033f0209293ea003033d02013b2934b8332806b7293ba0910303fa73103b50342806b8312f2d2c2cfa6922107b06102a36293ba0031e313cb7293ba0910303fa4e103b50323cb82f2d220d2c2cfa44220e7b060e323cb8323cb7293ba0910303fa2d103b50333cb8302e2d2c2cfa24220f7b060f6502052a30452f4664641f04000000|@3982,1,@203,@3981,@3980| 15136:D4,12|fb042d2d2dfa118c44000000|@3988,1,@204,@18898| 15137:D3,16|fb06281d2a373b2c362e7b0503000000|@3997,1,@206| 15138:D4,12|fb042d2d2dfa118c44000000|@3998,1,@207,@18899| 15139:D3,16|fb0628072a373b2c362e7b0503000000|@3997,1,@208| 15140:D4,52|fb0b2b352c362d3729362c3ba803043b500203fa2b102b3ba803043b500203fa1f10292d2d6a280b2f372b3136337b0508000000|@4005,1,@209,@4004| 15141:D4,12|fb042d2d2dfa118c44000000|@3998,1,@210,@18900| 15142:D4,52|fb0b2b352c362d372b3ba803043b500203fa2d102a3ba803043b500203fa21102b3fb12a2a2d6a280b2f372b3136337b05080000|@4011,1,@211,@4004| 15143:D3,16|fb05281c2a373b2c360c293ba6644200|@3997,1,@212| 15144:D4,12|fb042d2d2dfa118c44000000|@3998,1,@213,@18901| 15145:D3,20|fb033b2a370c030a2b2a360c2968016402013b42|@4017,1,@214| 15146:D3,20|fb033b2a370c030a2b2a360c2968016402013b42|@4019,1,@215| 15147:D13,240|fb142c3a2935293ca003cc2d3b3bef29293ba003033b0233293cab293ba203033c0208303b3bef2a2aa8640303facd103b50293fb1312adc2940a003032c020a2c3cab250426031e373b6664293ba003182f3b3bef303b2b6afaa52a693339342b2bfaa0220d7b050c2f3b3bef2a3ba803043b500203fa90102a2aa503043b500203fa8810303b2c6afa852a693339342b2bfa700c503439220cfa782bfa650c502e3ba803043b500203fa5c10343b3bef2f2aa503043b500203fa5c102930b2220d312b6afa552a6922103922112b2bfa3222137b05122d3b3bef2e3b2b6afa3f2a693139322b2bfa1a347b050a0000|@4022,1,@216,@4023,@15149,@3978,@4004,@4413,@15168,@4406,@4426,@15169,@15148| 15148:D4,12|fb052b2a36fa112d7e030000|@4027,1,@238,@4026| 15149:D4,12|fb052b2a36fa112d7e030000|@4027,1,@217,@4026| 15150:D13,428|fb262c3729352e382935293ca003152b1aa5011aa6016a1aa6011aa7012b1aa7016b64103b5030353136323a3235333634372e352a2aa60314220e1a8e010c50220e2d2d2d1a880122117b060f2d35293da0030d220f2e2e2e1a740122127b06102f352b2aab2d2aa2036e3135303b3bef303ba803043b5002041a5701102f3ba803043b5002041a4a01103030b1292ba503043b5002041a3e0110220c35220d362d3ba803043b5002041a2701102d33b1292ca703041a2301103b50343fb1220d2a2d32220fec50220f3529220daa22113b3b2ce3270902cc31352d2aab3335323b3bef323ba803043b500203fae5102b3ba803043b500203fad910322cb1292ba503043b500203face10220e35220f362d3ba803043b500203fab8102d2fb1292ca70303fab5103b50220d3fb1220f2a2d3234ec502211352932aa22133b3b2ce350221cfa850c50221033aa221034ab22133b3bef2b3ba803043b500203fa73102a3ba803043b500203fa67102b2bb1292ba503043b500203fa5c102218352219362d2ba70303fa52103b502e3fb122182a2c3b32ec5022162211ab221b3b3b2ce327136564270b430000|@4029,1,@218,@4030,@4032,@5,@4403,@4404,@4406,@4418,@4004,@4413,@4028| 15151:D19,140|fb162b363ba20304fa8e02732b35362c363cab2a2a69fa84352a2a0c642f363ca20304fa7b02432f353730363cab2a2a69fa71352a2a0c6433353534363cab2a2a69fa60352a2a0c6429fa5c69fa5d2a69fa5d2a69fa5d2a69fa5d2a69322a69fa5a2a69fa5a2a69270ffa582a69fa582a692c2a69fa552a69fa552a692709fa532a693b3c3b3b2d68056542|@4036,1,@219,@4037,@6,@4037,@7,@4394,@4383,@4397,@4383,@4384,@4383,@4399,@4383,@4384,@4383,@4401,@4035| 15152:D4,16|fb082b362c35293b2cfa11307b050500|@4042,1,@220,@4041| 15153:D15,460|fb132d352e362f372b92f8880130353da0037e30372f3ca403051abb0102542f3cab293ba203051ab201023a2a352a3cab2a2a691aa901352a2a0c642e362e3cab2a2a691a9d01351a9d012a0c642a2a0c64291a9601691a96012a691a95012a69302a69270b1a8f012a693b3c3b3b2d680566291a85010c293b691a82012a691a81012a693b3c3b3b2d68052706f70201303540a0032e30372f3cab2a2a691a3e01352a2a0c643e2f692a1a4e010c293b691a4b012a692c2a693b3c3b3b2d6805270902ce3035280ca0032e30372f3cab2a2a691a0901352a2a0c643e2f692a1a19010c293b691a16012a692c2a693b3c3b3b2d68052709029930352817a0032b30372f3cab2a2a69fad5352a2a0c643e2f692afae60c293b69fae42a692c2a693b3c3b3b2d68052709026730352867a0032b30372f3cab2a2a69faa3352a2a0c643e2f692afab40c293b69fab22a692c2a693b3c3b3b2d68052709023530352808a0032b30372f3cab2a2a69fa71352a2a0c643e2f692afa820c293b69fa802a692c2a693b3c3b3b2d6805270902033e2b6902322b3529929103272935303cab2c2a69642a0c3e2e692afa4f0c293b69fa4d2a692c2a693b3c3b3b2d6805270702033e2c69646644000000|@4044,1,@221,@4045,@4047,@7,@9,@4375,@4381,@4383,@4384,@4386,@4387,@4392,@4043| 15154:D7,28|fb062b35292b36fa1f0c29fa1f69fa202a6965fa1f0c3e2a69654200|@4042,1,@222,@4053,@4060,@4061,@4052| 15155:D6,172|fb122c3b3bef3b3b292ca003032a0220293cb12a3fb1312adc64300c293b3bef2d2aaa292d2506250626041e233b270465293ba803043b500203fa7c10292ba003032e0263292808b1293cb2293fb429fa6aa503043b500203fa6510292841bd2a3cb22a2a3b3bf02b3b3b32f0503f3b2933a003043b500228293fb1220e2adc64220d0c293b3bef2a3f312f2dec502b3cb12d2bb1292b2506250626041e2d2604512b95502b270665430000|@4055,1,@223,@4056,16777215,@4054| 15156:D7,172|fb142b929103a22b352c36293ba003032a02932d3b2a9291031a2a352b362a3b3bef2c2aaa2b2a2506250626041e183b270402012965293ba00304fa7b0266293ba803043b500203fa7210292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f0503f220c299291032029352a362a3b3bef2b3f32302dec502d2ab1292c2506250626041e1f260402023b50512b95502b270664650202fa0d42|@4063,1,@224,@4062,@4056,16777215,@4054| 15157:D18,352|fb102b285ca003061a6101f750012b2822a003061a5901f7440128212ca503062b287ea502013b03033c02042b2820a0030829362c3bdbf724012b2807a003061a3101f718012b2808a003061a2901f70c012b2809a003061a2101f700012b40a003051a1a0102f62b280ba003051a130102eb2b280ca003051a0c0102e02b280da003051a050102d52b2820a303772b2840aa293ba203033c02042928ffa60303faed103b503b502a362a3bdb293b3bef293ba00304fadc02493d2ab1292808b1293cb2293fb429facea503043b500203fac9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f285ce4502b2805285ee450313f2d280634ec502b95502b27076602582b3e402c36fa930c293b3bef293ba00304fa8b02423c2ab1292808b1293cb2293fb429fa6da503043b500203fa68103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f285ce450313f2d280534ec502b95502b2707654200|@4066,1,@225,@4067,@4068,@4069,@4070,@4071,@4072,@4073,@4074,@4075,@4076,@4079,16777215,@4054,@4080,@4065| 15158:D13,276|fb192d3ba003061a1601f705012d3cab2d3ba003041a0c01103b503b502d1a0701a003072f1a0401a002013b03041aff00103b503b502f2ead2e3ba00303faf4103b503b50302fae293ba003033c020a293ba2303ba22a2aa06503032a02032a3cab292d3232fad00c313ba00303fac4103b503b503332ae293ba003033b0213293ba2333ba22a2aa003032b02042b220caa65292830aa293ba203033c02042928ffa60303fa95103b503b50332a3bdb2d3b3bef2a3b3bef2a3ba003032b0250293ba003032f02482a2ab1292808b1293cb2293fb429fa68a503043b500203fa63103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f220cec503f32b1333f2e2c220cec502c95502c2708270b1f04|@4082,1,@226,@4062,@4083,-1,-1073741824,@4087,@4081,@4080,@4076,16777215,@4054| 15159:D4,8|fb03fa102c694200|@4349,1,@227,@15160| 15160:D14,164|fb0c2b363ca20304faa602952b35293ba00304fa9f02892c363ca20304fa99027f2c3529352e363cab2a2a69662b36360c29353ba00354293929929103302936929103272935353ea0031c29353629fa6ba003033c020d29fa66a003033c020429fa61a06402013b9102013b02013b03162afa5469fa552a69fa552a693b3e3c3b2d68056602012a64020129293b69fa432a69fa432a693b3c3b3b2d6805270564420000|@4351,1,@228,@4352,@4354,@4352,@4362,@4363,@4364,@4365,@4367,@4370,@4371,@4350| 15161:D4,12|fb05fa14352c2a2d7d040000|@4377,1,@229,@10| 15162:D4,16|fb052b3529fa150c3e2a696542000000|@4042,1,@230,@4379| 15163:D4,8|fb022bfa0f8a4200|@4380,1,@231,@18902| 15164:D12,192|fb0c2b353ba003b42b39299291039a29352a36293ba003032e028b2a353ea003752a3629faa6a003033c0212293b3bef3ca00309293ffa943f3ced02013b03032f025029fa8aa003033c0212293b3bef3ca00309293ffa783f3ced02013b03032f023029fa6ea003033c0212293b3bef3ca00309293ffa5c3f3ced02013b03032f02102ffa5269fa532a693b3e3c3b2d6805656402102efa4769fa482a693b3e3c3b2d6805656502102cfa3c69fa3d2a693b3e3c3b2d6805656402012b420000|@4389,1,@232,@4184,@4216,@4133,@4390,@4388,@4390,@4388,@4390,@4388| 15165:D13,220|fb152b3629352d3729352f352c3ba003033b02c32b230729929103043b5002102bfac5fac76afac8faca2bfacb6b641029352f3b3b3be3503b788136312cab2f352d3ba803043b500203fab0102a3ba803043b500203faa4102d2bb1292ba503043b500203fa99102e2c336a662d0cf1024e6d0b03002d35fa76a0030e2d2a2a35452a36462a37475102252d353ca0030ffa712a2a35452a36462a3747510210322efa646a2afa4845fa49462a47505029352a362b372b2b2bfa516b27071064292baa2932a003033b02092a2caa2503511e983b6564652705420000|@4408,1,@233,@4409,@4411,@5,@4403,@4412,@4004,@4413,@4416,@4411,@4407| 15166:D14,276|fb132e3729230829929103ad29352b353b78813e2b34aa332dab220d3b3bef2b3ba803043b500203faf6102a3ba803043b500203faea102b2bb1292ba503043b500203fadf102c2c22116a27042e0cf1024e6d0b03002d35facea0030e2d2a2a35452a36462a37475102252d353ca0030ffab92a2a35452a36462a37475102102f2efaac6a2afaa045faa9462a47505029352a362b372b2b2bfa9d6b27071064292baa2933a003033b02092a2caa2503511ea03b65646502582a230729929103043b5002122b3529fa72fa746afa59fa632bfa706b641029352c353e2841bd293b28083bf03b402aa503043b50020d2b2a2820e450293cb125011e1450402b693b34220d220f2f322f33fa3c22127b0a0e651f04|@4420,1,@234,@4004,@4413,@5,@4416,@4032,@4403,@4421,@4409,@4032,@4422,@4419| 15167:D12,240|fb143133ab2940a20303290201403433aa323b3bef2a3ba803043b500203fadc102b3ba803043b500203fad0102a2cb1292ba503043b500203fac5102c40a70303fac1103b502b3fb1220c2a220d3b31ec788123303ba803043b500203fa9d103040a503043b500203fa95103b31220e6a220e0cf1024f6d0b03002d35fa89a0030e2d2a2a35452a36462a37475102262d353ca0030ffa742a2a35452a36462a3747510211220e2efa666a2afa5a45fa63462a47505029352a362b372b2b2bfa576b27071064292212aa292212a003033b02192a2213aa2212221222122212221222122212fa3522137b0a1327091f08|@4424,1,@235,@4004,@4413,@4028,@5,@4416,@4032,@4403,@4423,@4419| 15168:D4,12|fb052b2a36fa112d7e030000|@4027,1,@236,@4026| 15169:D4,12|fb052b2a36fa112d7e030000|@4027,1,@237,@4026| 15170:D9,308|fb1ad92936292806b7293ba003033b020fd91a2b012cb7293fb82b3b3f2ce3663b3035293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464643098293ba003033b020931faf50c50511e323b6578810634340cf102976d3197293ca003043b50020832995032fad70c50d9293b3f32e3502f3fb7293fa00314d92938293ba0910306fabf0c5002023b505102023b502c38299291031829352a362b372c382d392d2b2e2c2f6805296801270602013b29929103043b50020e2e352f3630372b2b2bfa846b6610293529352a362b372c382d393435220c36220d37302f2e323168052c2c2c2c6b29fa620c2710643197293ca003043b50020832995032fa410c50d9293b3f32e3502f3fb7293fa00314d92938293ba0910306fa290c5002023b505102023b502c2709440000|@4429,1,@239,-7,@4430,@4432,@4434,@4436,@4428| 15171:D4,8|fb022bfa0f8a4200|@4431,1,@240,@18903| 15172:D4,8|fb022bfa0f8a4200|@4433,1,@241,@18904| 15173:D4,8|fb01fa1089410000|@4435,1,@242,@18905| 15174:D3,4|fb022b10|@4438,1,@243| 15175:D9,104|fb0f29360c293ba00344fa6835293ca00309fa6098293ba06402013b03083b3cfa560c5002250b02003b3b3b2cfa4d0c5029352a36fa492ab9293db72c2ab8fa432a3bfa430c503b50260850021229352a367881062b2d0cf102036d3b645051501e5f3b64420000|@4441,1,@244,@18934,@4442,@3980,-1,@4440,@3987| 15176:D11,348|fb122b03043b50023d3b1a5b0135293ca003033b02152a1b204ea003033b020b2a3caa292503511e1d3b6464641a380198293ba003043b50020b1a2b011a2c010c50511e3a51d92936292806b7293ba003033d020c293da003033e0204293fa091293da003043b500214d9d929361aff002ab73d2ab82d3b3f2ce35026053bfaf335293ca003033b02152a1b204ea003033b020b2a3caa292503511e1c3b646464fad198293ba003043b500209fac5fabb0c50511e3651fabf3529299291031329352a362afab50c50292503511e123b6502013b64faa13b3b2ce350fa9697293ca003043b50020afa8a9950fa86fa900c50d92d3ca00304280602112d3ba003033f02092d3ea003033d02013bd92936fa5e2ab72c2ab82e3b3f2ce350323ba003033c0203323ca00314d92938293ba0910306fa4f0c5002023b505102023b50fa2697293ca003033b020cfa1b9950fa17fa2d22117d12270e430000|@4444,1,@245,@18934,@4430,-7,@18935,@18936,@4443,@4432,@4434| 15177:D4,8|fb022bfa0f844200|@4445,1,@246,@18906| 15178:D4,12|fb052b3bfa122d7e03000000|@4446,1,@247,@4442| 15179:D4,8|fb01fa1089410000|@4447,1,@248,@18907| 15180:D4,12|fb0528122a36fa102d7e0300|@4452,1,@249,@4451| 15181:D4,8|fb032c2cfa0e8b43|@4453,1,@250,@18908| 15182:D4,56|fb0d293735293b2a929103252a352b3678810d2c392d32362bfa290c64f102036d3b642a2a2505250526031e243b66020129656442000000|@4454,1,@251,@3978| 15183:D4,20|fb072b3729372d2c362d37fa130c503b2a2e7d05|@4457,1,@252,@4456| 15184:D7,116|fb092d382935293ca003033b02622a3b3b3ce3503b2f35293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464642f98293ba003043b50020830fa3c0c50511e33512d35292cfa340c2f3b3b2ce3503097293ca003043b50020831995031fa200c5032fa1f317d0a65440000|@4459,1,@253,@4430,@4460,@4432,@4458| 15185:D4,44|fb082c929103212c352d362a38292fa091030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@254,@4460| 15186:D13,220|fb152b3629352d3729352f352c3ba003033b02c32b230729929103043b5002102bfac5fac76afac8faca2bfacb6b641029352f3b3b3be3503b788136312cab2f352d3ba803043b500203fab0102a3ba803043b500203faa4102d2bb1292ba503043b500203fa99102e2c336a662d0cf1024e6d0b03002d35fa76a0030e2d2a2a35452a36462a37475102252d353ca0030ffa712a2a35452a36462a3747510210322efa646a2afa4845fa49462a47505029352a362b372b2b2bfa516b27071064292baa2932a003033b02092a2caa2503511e983b6564652705420000|@4408,1,@255,@4409,@4411,@5,@4403,@4412,@4004,@4413,@4416,@4411,@4407| 15187:D7,40|fb0c3bfa2f3cfa300c3c2a6929063c28483cda3c2b2b6afa232a692f362a3137fa1e347b05090000|@4464,1,@256,@4465,@4466,@15188,@3978| 15188:D3,12|fb052b3b3b2c36e342000000|@4506,1,@283| 15189:D16,316|fb2b1a43012a362f6a1a40012b37306a0b04003203132e68013068012b2b452a463b473b48505102221a2401312308306a2968011a1d01332308336a2968012d3b453b462c472a4850260429352a362b372c38281e22103b220e380c0b03002d3da4030ffaf22a2a35452a36462a374751026d78810f281222173b221523070c503cf102116d29353da003043b50020229103b503b6429030ffac12212230722176a2968016402013b2a030ffab22213230622186a2968016402013b2b030efaa322143a22196a2968016402013b2b2b2b6a2c2c2c6a2f2e452d462c4750260629352a362b37fa8022143822196a280f22193b2217380cfa73221639221b6a296801fa6c221838221d6a296801fa65221a39221f6a221e6801221e312f2d220c220f2f2210221a221c220c2211221c221e2218680f29fa40221f7d21|@4469,1,@257,@15190,@15191,@15192,@15193,@4473,@15194,@15195,@15196,@15197,@15198,@15199,@15200,@4468| 15190:D4,52|fb0b2b352c362d3729362c3ba803043b500203fa2b102b3ba803043b500203fa1f10292d2d6a28082f372b3136337b0508000000|@4470,1,@258,@4004| 15191:D3,12|fb06402a372d2c362e7b0503|@4471,1,@259| 15192:D3,12|fb052b2a372b362d7e030000|@4472,1,@260| 15193:D3,12|fb052b2a372b362d7e030000|@4472,1,@261| 15194:D3,16|fb0628122a373b2c362e7b0503000000|@4474,1,@262| 15195:D3,16|fb0528132a372d2c360c503b42000000|@4475,1,@263| 15196:D3,16|fb0628142a373b2c362e7b0503000000|@4476,1,@264| 15197:D4,48|fb0778810b28112c373b2e360cf102106d29353da003043b5002022910fa1d64293ba8030529680102013b6442000000|@4477,1,@265,-1| 15198:D3,16|fb06281b2a373b2c362e7b0503000000|@4478,1,@266| 15199:D3,16|fb0528102a373b2c360c293ba6644200|@4478,1,@267| 15200:D3,16|fb0628072a373b2c362e7b0503000000|@4478,1,@268| 15201:D11,324|fb252b352c362d372e382f39303a312306322307332308342309220c230a220d230b220e230c220f230d2210230e2e3ba003162f3ba003033b020c2f351a10012a2f6a2968016502012e303ba003142f3ba003033b020a2f35faf92a69296801650201302c3ba003312d3ba0031f2f929103052a929102013b030f2f352b35fad72a2c6a2968016602013b020b2d35facb2a316a2968016502012c2e3ba003302d3ba0031f30929103052a929102013b030f30352b35faa82a2c6a2968016602013b020a2d35fa9c2a692968016502012e2c3ba003232210929103052a929102013b03122210352b35fa7d22152b2d6b2968016602013b02012c2c3ba003232211929103052a929102013b03122211352b35fa5822162b2d6b2968016602013b02012c22142214221422142214221422142214313322142214220e22102214680f271542|@4479,1,@269,@15203,@15204,@15205,@15206,@15207,@15208,@15209,@15202| 15202:D8,44|fb073b2a380c502b2a370c29929103043b5002112a36fa20fa226afa23fa252bfa266b641029356442000000|@4493,1,@277,@4409,@4494,@5,@4403,@4492| 15203:D12,208|fb142b2a37a203032b02022937293ba803043b500203fac41029fac4a70303fac3103b50293fb1293cb2293fb4292841bd2a3ba003033b02092a3cb22a2a3b3bf0643b2f2aa503043b50020d2b2a2820e450293cb125011e14502e2b693b302b6a31360c293ba803043b500203fa79102931a503043b500203fa7110293ba00304fa6d0246293ca0030b2c3bdcfa652a3bdb640236292808b1293cb2293fb429fa56a503043b500203fa5110292841bd2a3cb22a2a3b3bf02b3b3b32f050323b2d3f33ec502b95502b27062708420000|@4481,1,@270,@4056,67108856,@4480,@4004,@4413,@4062,@4064,16777215,@4054| 15204:D5,60|fb0e2b352c362d372a2d360c2a352b362b3b3bef2f3ba803043b500203fa29102f2ab1292da70303fa22103b502d3f2d332eec502d3b3bef27084200|@4484,1,@271,@4004,@4483| 15205:D3,20|fb033b2a370c030a2b2a360c2968016402013b42|@4486,1,@272| 15206:D12,220|fb152b2a37a203032b02022937293ba803043b500203fad01029fad0a70303facf103b50293fb1293cb2293fb4292841bd2a3ba003033b02092a3cb22a2a3b3bf0643b2f2aa503043b50020d2b2a2820e450293cb125011e14502e2b693b302b6a31360c299291036f2935293ba803043b500203fa7e102932a503043b500203fa7610293ba00304fa720246293ca0030b2d3bdcfa6a2a3bdb640236292808b1293cb2293fb429fa5ba503043b500203fa5610292841bd2a3cb22a2a3b3bf02b3b3b32f050333b2d3f33ec502b95502b27062968016502013b270842|@4486,1,@273,@4056,67108856,@4480,@4004,@4413,@4062,@4064,16777215,@4054| 15207:D3,20|fb033b2a370c030a2b2a360c2968016402013b42|@4487,1,@274| 15208:D5,76|fb0f2b352c362d372a2d360c299291033529352b352c362b3b3bef303ba803043b500203fa3210302ab1292da70303fa2b103b502d3f2d342eec502d3b3bef296801270602013b2704420000|@4487,1,@275,@4004,@4483| 15209:D8,44|fb073b2a380c502b2a370c29929103043b5002112a36fa20fa226afa23fa252bfa266b641029356442000000|@4489,1,@276,@4409,@4490,@5,@4403,@4488| 15210:D4,12|fb042d2d2dfa118c44000000|@3998,1,@278,@18909| 15211:D4,12|fb042d2d2dfa118c44000000|@3998,1,@279,@18910| 15212:D4,12|fb042d2d2dfa118c44000000|@3998,1,@280,@18911| 15213:D4,12|fb042d2d2dfa118c44000000|@3998,1,@281,@18912| 15214:D4,176|fb0c78810a2e2e0c29680164f1029f6d29353da0030a293729362992916502013b03043b50020229103b502937293629352d3a3ba003033b02072d3a352a2abe6403033b02662d393ba003033b02072d39352a2abe6403033b02512d383ba003033b02072d38352a2abe6403033b023c2d373ba003033b02072d37352a2abe6403033b02272d363ba003033b02072d36352a2abe6403043b50020e2c352d362e372b2b2bfa166b66103b503b66644300|@4501,1,@282,@4500| 15215:D4,12|fb0528122a36fa102d7e0300|@4452,1,@284,@4451| 15216:D4,56|fb0d293735293b2a929103252a352b3678810d2c392d32362bfa290c64f102036d3b642a2a2505250526031e243b66020129656442000000|@4454,1,@285,@3978| 15217:D4,20|fb072b3729372d2c362d37fa130c503b2a2e7d05|@4457,1,@286,@4530| 15218:D7,116|fb092d382935293ca003033b02622a3b3b3ce3503b2f35293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464642f98293ba003043b50020830fa3c0c50511e33512d35292cfa340c2f3b3b2ce3503097293ca003043b50020831995031fa200c5032fa1f317d0a65440000|@4459,1,@287,@4430,@4531,@4432,@4406| 15219:D4,44|fb082c929103212c352d362a38292fa091030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@288,@4531| 15220:D4,36|fb072b929103182b352c3629fa220c507881063b2d0cf102036d3b646502013b42000000|@4553,1,@290,@4552| 15221:D12,160|fb1078812c3b062e3ba203033c02042efa9aa80303fa99103b502e28403bda2906fa91316929063c2a2f2e6b2705f1026c6d29353fa003602c3cfa7c0c293b3bef293ba00304fa74024428102ab1292808b1293cb2293fb429fa51a503043b500203fa5c10292841bd2a3cb22a2a3b3bf02b3b3b32f050fa433f2d3f2810ec50313f2d281434ec502b95502b2707fa34fa362bfa376b66103b50291064420000|@4556,1,@291,16777215,@4557,@15222,@4569,@4579,@4054,@16,@4583,@4555| 15222:D7,104|fb0c2b3b3bef3b2a293ba003032a0220293cb22a3cb2293fb1312adc28072fb32a2ab1292f2508250826061e233b2706652b363ba00303fa3b103b50292c36b529920305293ba2020529942811a00308fa262afa270c020129299203043b500203fa1d1029270442|@4561,1,@292,@4562,@4564,@4565,@4560| 15223:D4,8|fb032c2cfa0e8b43|@4566,1,@293,@18913| 15224:D6,160|fb150b03002f3da0030d292810452e36462e37475002302f3ca0030c2940452e38462e394750021f2f3ea0030e292808452e3a462e23064750020c293d452e2307462e2308475029352a362b3733920305333ba2020533942811a03c0305343ba002033b3ba00304fa42022e34920305343ba8020434943ca003033402063b220cfa2d0c0b02002c3b2b30343434fa240c502935299550292705270843000000|@4571,1,@294,@4141,@4572,@4570| 15225:D4,8|fb032c2cfa0e8b43|@4573,1,@295,@18914| 15226:D10,196|fb113192031c319203043b500203fac0103b5031313b3b33333333333236347b0b090b0200349203292f9203223c03062ffaa1a002033b3ba0030e3c030634fa97a002033b3ba002013b29916402013b02013b033e2f3ba00303fa80103b503b502ffa70a0030634fa6ea002013b0303fa6e103b503b503430ad303ba00303fa63103b503b50220c31ae2b2b452a465051020734302bfa500c5029352a36299203043b500203fa28103b5029220d2c33220f220f220f220f220f220e3622107b0b0e0000|@4576,1,@296,@4560,-1,-1073741824,@4083,@4087,@4081,@4575| 15227:D4,12|fb042d2d2dfa118c44000000|@4577,1,@297,@18915| 15228:D11,452|fb16333ba003cf3c0305313ba002033b3ba0037c2e0341323cb1292808b1293cb2293fb4291aa801a503043b5002041aa201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f287ee450220d2c4528054627070236322808b1293cb2293fb4291a6a01a503043b5002041a6401103b50292841bd2a3cb22a2a3b3bf02b3b3b2212f050220c2c453f46270602443231b10b0200220c2d2b220c220c220c220c34360c5029352a363b29220fa003043b5002122a2ab12c2a2830e4502a3cb12502501e19505029220eb1220d2c452a46270702ec2d3ba00303fafb103b503b50332eae293ba003033b0212293ba22f3ba22a2aa003032b02032b31aa652940a2031d28302aaa293ba203033c02042928ffa60303fac4103b503b502964021e28412aaa2940ab293ba203033c02042928ffa60303faa4103b503b502965303ba00303fa9a103b503b5030fa96a00307220dfa93a002013b0303fa8f103b503b50220d31ad313ba00303fa6b103b503b50220e32ae293ba003033c020a293ba2333ba22a2aa06503032a02032a3cab220f3cb1220e3cb20b02002e2e22152f2d221522152215221522140c5029352a362a2a220ce450293cb122142c452a46270e1f09|@4578,1,@298,16777215,@4054,@4081,@4076,@4083,-1,-1073741824,@4087| 15229:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@299,@7| 15230:D4,8|fb032c2cfa0e8b43|@4453,1,@300,@18916| 15231:D916,21308|fc510a2c1a41530c29372a382e03051a3a5302031a39532f03051a375302031a36531a37533b3b2ce31a34532d0c1a33531a34531a35530c3b1a34530c3b1a33530c2b1a32533b2d2d3b3b3c6808280c2a691a0f531a24531a25530c293b692b2a6928142a3b6a3c2a691a17531a18532b1a18531a19533b3b68071a16531ae7521ae8520c3b1ae7520c3b1ae6520c2b1a05533b2d2d3b3b3c6808280c2a691af2521ad7521ad8520c293b692b2a6928142a3b6a3c2a691ae2521ae3522b1acb521acc523b3b6807401ad8520c291ad7523b1ad7521ad8523b68061ad6521ad7522b1ad7526b1acb522a692220230a0c2c1acc520c28091aca520c3c2a691ac7523d2b1ac6521a87523b3b680722133b69322a691ab9522a691ab8522a69662d380c1ab35233692e370c1aaf522216692f370c1aaa522d6930370c222b03051a125202031a1152293b691a97522a696522270c1a925222280c1a905222290c1a8e52222a0c1a8c52299291031829352a362a35292c6922300c502a250426031e173b6602013b641a6e52222c0c1a6c52299291031829352a362a35292c6922320c502a250426031e173b6602013b641a4e52222e0c1a4c52061b0f273eba28062b2b6a293b6928052a1a3c521a3d521abe5168053d2c2b6a2c3b691a32522a1a32521a33520c3c2a691a30521a31522b2f1a9c513b3b6807293b691a0e522a691a21522a696522390c1a1c522b69223b0c3b1a5b510c3b1a12520c1a12521a13523b2d2d3b3b3c6808280c2a691a08520628062a3b6a291a0252692c2a6928142a3b6a293b3b1af7510c3b2a0c643c2a693c063c2a3b3b6b2b2a1ae7516a1ae7513b1a2b512c6b28053b1adf512c1a1f5168051ada51224b0c1ad851224c0c401a21510c291a20513b1a20511ac9513b68061ac7511a20512b1a20516b1abc512a692252230a0c2c1a15510c1a5551061b0f273eba28062b2b6a1a4751061b0f273eba28062b2b6a3b1aa4500c3b1a8f510c1a8f511a90513b2d2d3b3b3c6808280c2a692d3b69312a69291a7e510c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a59500c2a3ba203041a5051103b503b2b1a4c510c2f1a4b513b2d2d3b3b3c6808280c2a6927043d220c336a3c2b691a36513d2b2d1a44503b3b68071a29512a692212370c1aa850061b0f273eba28062b2b6a1a9a50061b0f273eba28062b2b6a2c3b6928051a47500c2a1aea500c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ac54f0c2a3ba203041abc50103b503b2b1ac4500c2d1ab7503b2d2d3b3b3c6808280c2a6927043d311ab84f6a3c2b691aa9503d2b2d1aaf4f3b3b68071a9c502a692220370c343b691a94501a95500c2a1a70500c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a4b4f0c2a3ba203041a4250103b503b2b1a5a500c2d1a3d503b2d2d3b3b3c6808280c2a692704220f3b6922102a69293c1a3e500c291a3d500c3b2a3c6a3e2c2b6a3d2a1a234f6a3c31691a2c503d2b2d1a1a4f3b3b68071a1f502a69222e370c22163b69221a2a693b1a11500c3b1a10500c1a10501a11503b2d2d3b3b3c6808280c2a692d1ac14f0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a9c4e0c2a3ba203041a934f103b503b2b1acb4f0c2d1a8e4f3b2d2d3b3b3c6808280c2a69270422211ab74f69293c1a914f0c291a904f0c3b2a3c6a3e2c2b6a3d2a22256a3c30691a9c4f3d2b2d1a6e4e3b3b68071a8f4f2a69223f370c22273b69222b2a693b1a654f0c3b1a644f0c1a784f1a654f3b2d2d3b3b3c6808280c2a692d1a154f0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1af04d0c2a3ba203041ae74e103b503b2b1a2f4f0c2d1ae24e3b2d2d3b3b3c6808280c2a69270422321a1b4f69293c1ae54e0c291ae44e0c3b2a3c6a3e2c2b6a3d2a22366a3c30691a004f3d2b2d1ac24d3b3b68071af34e2a692250370c22383b69223c2a693b1ab94e0c3b1ab84e0c1adc4e1ab94e3b2d2d3b3b3c6808280c2a692d1a694e0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a444d0c2a3ba203041a3b4e103b503b2b1a934e0c2d1a364e3b2d2d3b3b3c6808280c2a69270422431a7f4e69293c1a394e0c291a384e0c3b2a3c6a3e2c2b6a3d2a22476a3c30691a644e3d2b2d1a164d3b3b68071a574e2a692261370c22493b69224d2a693b1a0d4e0c3b1a0c4e0c1a404e1a0d4e3b2d2d3b3b3c6808280c2a692d1abd4d0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a984c0c2a3ba203041a8f4d103b503b2b1af74d0c2d1a8a4d3b2d2d3b3b3c6808280c2a69270422541ae34d69293c1a8d4d0c291a8c4d0c3b2a3c6a3e2c2b6a3d2a22586a3c30691ac84d3d2b2d1a6a4c3b3b68071abb4d2a692272370c225d3b6928081a884c0c2a1a2b4d0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a064c0c2a3ba203041afd4c103b503b2b1a714d0c2d1af84c3b2d2d3b3b3c6808280c2a6927043d22621a5c4d6a3c2b691a594d3d2b2d1aef4b3b3b68071a4c4d2a69227a370c22653b6928071a0d4c0c2a1ab04c0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a8b4b0c2a3ba203041a824c103b503b2b1a024d0c2d1a7d4c3b2d2d3b3b3c6808280c2a6927043d226a1ae14c6a3c2b691ae64c3d2b2d1a744b3b3b68071ad94c2a692282370c1ad44c2283370c226b3b69226f2a693b1ac84c0c3b1ac74c0c1ac74c1ac84c3b2d2d3b3b3c6808280c2a692d1a144c0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1aef4a0c2a3ba203041ae64b103b503b2b1a824c0c2d1ae14b3b2d2d3b3b3c6808280c2a69270422733b691a444c2a6922782a69293c1add4b0c291adc4b0c3b2a3c6a3e2c2b6a3d2a1a4e4c6a3c32691a4b4c3d2b2d1ab94a3b3b68071a3e4c2a692296370c227e3b6922822a693b1a144c0c3b1a134c0c1a274c1a144c3b2d2d3b3b3c6808280c2a692d1a604b0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a3b4a0c2a3ba203041a324b103b503b2b1ade4b0c2d1a2d4b3b2d2d3b3b3c6808280c2a69270422863b691a904b2a69228b2a69293c1a294b0c291a284b0c3b2a3c6a3e2c2b6a3d2a1a9a4b6a3c32691aa34b3d2b2d1a054a3b3b68071a964b2a6922a9370c22943b693e1a244a0c2a1ac74a0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1aa2490c2a3ba203041a994a103b503b2b1a4d4b0c2d1a944a3b2d2d3b3b3c6808280c2a6927043d22991a204b6a3c2b691a314b3d2b2d1a8b493b3b68071a244b2a6922b1370c229c3b691a1b4b1a704a0c2a1a4b4a0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a26490c2a3ba203041a1d4a103b503b2b1add4a0c2d1a184a3b2d2d3b3b3c6808280c2a6927041acb4a3c1a1f4a0c291a1e4a0c3b2a3c6a3e2c2b6a3d2a22a66a3c2f691ab24a3d2b2d1afc483b3b68071aa54a2a6922bd370c22a53b6922a92a69291abf490c2992919103051a8d4a02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1a98480c2a3ba203041a8f49103b503b2b1a5f4a0c1a574a1a88493b2d2d3b3b3c6808280c2a69270422ac3b691aeb492a691ae6492a69293c1a83490c291a82490c3b2a3c6a3e2c2b6a3d2a22b26a3c32691a224a3d2b2d1a60483b3b68071a154a2a6922cc370c22b73b693b1a0b4a0c3b1a0a4a0c1a0a4a1a0b4a3b2d2d3b3b3c6808280c2a692d1a0b490c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ae6470c2a3ba203041add48103b503b2b1ac5490c2d1ad8483b2d2d3b3b3c6808280c2a69270422be1ab1496922bf2a69293c1ad7480c291ad6480c3b2a3c6a3e2c2b6a3d2a1abc476a3c31691a91493d2b2d1ab3473b3b68071a84492a6922dd370c22c83b693b1a5e490c3b1a5d490c1a71491a5e493b2d2d3b3b3c6808280c2a692d1a5e480c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a39470c2a3ba203041a3048103b503b2b1a28490c2d1a2b483b2d2d3b3b3c6808280c2a69270422cf1a14496922d02a69293c1a2a480c291a29480c3b2a3c6a3e2c2b6a3d2a133c016a3c31691af4483d2b2d1a06473b3b68071ae7482a6922ee370c22d93b693b1ab1480c3b1ab0480c1ad4481ab1483b2d2d3b3b3c6808280c2a692d1ab1470c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a8c460c2a3ba203041a8347103b503b2b1a8b480c2d1a7e473b2d2d3b3b3c6808280c2a69270422e01a77486922e12a69293c1a7d470c291a7c470c3b2a3c6a3e2c2b6a3d2a1aee476a3c31691a57483d2b2d1a59463b3b68071a4a482a6922ff370c22ea3b693b1a04480c3b1a03480c1a37481a04483b2d2d3b3b3c6808280c2a692d1a04470c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1adf450c2a3ba203041ad646103b503b2b1aee470c2d1ad1463b2d2d3b3b3c6808280c2a69270422f11ada476922f22a69293c1ad0460c291acf460c3b2a3c6a3e2c2b6a3d2a1a41476a3c31691aba473d2b2d1aac453b3b68071aad472a69131001370c3b1aaa460c3b1aa9460c1a9d471aaa463b2d2d3b3b3c6808280c2a691a8f473c1a7f460c291a7e460c3b2a3c6a3e2c2b6a3d2a1ac8466a3c2f691a75473d2b2d1a5b453b3b68071a68472a69131c01370c3b1abd460c3b1abc460c1a58471abd463b2d2d3b3b3c6808280c2a691a4a473c1a2e460c291a2d460c3b2a3c6a3e2c2b6a3d2a1a9f466a3c2f691a30473d2b2d1a0a453b3b68071a23472a69132801370c1a6d45061b0f273eba28062b2b6a1a5f45061b0f273eba28062b2b6a1a01471a02470c28072a1aff463c6b3b1aad440c3b1af8460c2b1af7463b2d2d3b3b3c6808280c2a692f3b69332a69291a89450c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a64440c2a3ba203041a5b45103b503b2b1aab460c2f1a56453b2d2d3b3b3c6808280c2a6927041a81461a82460c28072a1a8f463c6b3b1a2d440c3b1a88460c2b1a87463b2d2d3b3b3c6808280c2a6922103b6922142a69291a07450c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ae2430c2a3ba203041ad944103b503b2b1a39460c2f1ad4443b2d2d3b3b3c6808280c2a6927041a4f44061b0f273eba28062b2b6a1a4144061b0f273eba28062b2b6a1a3344061b0f273eba28062b2b6a1a2544061b0f273eba28062b2b6a1a1744061b0f273eba28062b2b6a220c3b693b1adc451add450c2a1a64440c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a3f430c2a3ba203041a3644103b503b2b1aa2450c2d1a31443b2d2d3b3b3c6808280c2a69270422103b693b1a8b451a80450c2a1a07440c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ae2420c2a3ba203041ad943103b503b2b1a4d450c2d1ad4433b2d2d3b3b3c6808280c2a6927043d1a624422166a3d1a33452b6a3d221722156a3d1a27452b6a22123b6922162a69221a2a693d1a19451a02450c2a1a89430c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a64420c2a3ba203041a5b43103b503b2b1adb440c2d1a56433b2d2d3b3b3c6808280c2a69270422183b69221c2a6922202a693d1abc441a9d440c2a1a24430c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1aff410c2a3ba203041af642103b503b2b1a7e440c2d1af1423b2d2d3b3b3c6808280c2a69270422213b6922252a69293c1af2420c291af1420c3b2a3c6a3e2c2b6a3d2a22266a3d1a37442b6a22233b6922272a69222b2a69222f2a693e1a35441a0e440c2a1a95420c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a70410c2a3ba203041a6742103b503b2b1af7430c2d1a62423b2d2d3b3b3c6808280c2a692704222a3b69222e2a6922322a6922362a693e1ad4431aa5430c2a1a2c420c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a07410c2a3ba203041afe41103b503b2b1a96430c2d1af9413b2d2d3b3b3c6808280c2a69270422343b6922382a69223c2a69293c1af6410c291af5410c3b2a3c6a3e2c2b6a3d2a223a6a3d1a3b432b6a22373b69223b2a69223f2a6922432a6922472a693f1a45431a0e430c2a1a95410c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a70400c2a3ba203041a6741103b503b2b1a07430c2d1a62413b2d2d3b3b3c6808280c2a69270422423b6922462a69224a2a69224e2a69293c1a5b410c291a5a410c3b2a3c6a3e2c2b6a3d2a22496a3d1aa0422b6a3c2246691ac3423d2b22431a30403b3b68071ab5422a69139d01370c3c2245691aab423d2b22461a14403b3b68071a9d422a6913a001370c3c2269691a93423d2b22471af83f3b3b68071a85422a6913a301370c3c2262691a7b423d2b224a1adc3f3b3b68071a6d422a6913a601370c3c2244691a63423d2b22391ac03f3b3b68071a55422a6913a901370c3c2241691a4b423d2b223c1aa43f3b3b68071a3d422a6913ac01370c3c2235691a33423d2b22281a883f3b3b68071a25422a6913af01370c3c2231691a1b423d2b222b1a6c3f3b3b68071a0d422a6913b201370c3c2223691a03423d2b221c1a503f3b3b68071af5412a6913b501370c3d3d1aed411aee410c1aee41299291033229352a362a352b3628062a3b6a3c2a692c3b2b1ad7411a183f3b3b68072d2a6913bf01370c502e250826071e303b270702013b6413be013b6928052a1ab2411ab3411aec3e6805293b691a44412a69293c1ae13f0c291ae03f0c3b2a3c6a3e2c2b6a1a94413d2b6a293b691a8f412a691a8e412a691a8d412a691a8c412a691a8b412a6929299291033829352a362a352b362c373d2a1a54416a28062c3b6a3c2a692e3b2b2e1a883e3b3b68072f2a6913d101370c5030250a26091e363b270902013b64401a7d3e0c291a7c3e3b1a7c3e1a3d413b68061a3b411a7c3e2b1a7c3e6b1a30412a69131e02230a0c2c1a703e0c1a24413c1a3c3f0c291a3b3f0c3b2a3c6a3e2c2b6a3d2a1ae53d6a293b691ada3d2a691ad53d2a69293c1a163f0c291a153f0c3b2a3c6a3e2c2b6a3d2a1afb3d6a1ae7403c1afb3e0c291afa3e0c3b2a3c6a3e2c2b6a3d2a1aa03d6a293b691a993d2a691a943d2a69293c1ad53e0c291ad43e0c3b2a3c6a3e2c2b6a3d2a1a7a3d6a1aaa403c1aba3e0c291ab93e0c3b2a3c6a3e2c2b6a1a99403c1aa53e0c291aa43e0c3b2a3c6a3e2c2b6a3d2e2b6a3d1aeb3f2b6a3c223b691a7a403d2b2d1a7c3d3b3b68071a71402227380c1a6e401a6f400c3c2a691a6c403d2b221f1a5d3d3b3b68071a5e402a69222b370c1a59401a4e400c3c2a691a53403d2b22231a3c3d3b3b68071a45402a69222f370c1a40401a2d400c3c2a691a3a403d2b22271a1b3d3b3b68071a2c402a692233370c1a27401a0c400c3c2a691a21403d2b222b1afa3c3b3b68071a13402a692237370c1a0e401aeb3f0c3c2a691a08403d2b22221ad93c3b3b68071afa3f2a69223b370c1af53f1aca3f0c3c2a691aef3f3d2b22261ab83c3b3b68071ae13f2a69223f370c1adc3f1aa93f0c3c2a691ad63f3d2b222a1a973c3b3b68071ac83f2a692243370c1ac33f221e692244370c401a903c0c291a8f3c3b1a8f3c1ab03f3b68061aae3f1a8f3c2b1a8f3c6b1aa33f2a69136702230a0c2c1a833c0c1a973f3c1a4f3d0c291a4e3d0c3b2a3c6a3e2c2b6a3d2a1a343c6a1a803f3c1a343d0c291a333d0c3b2a3c6a3e2c2b6a3d2a1add3b6a1a693f34380c1a673f1a0c3d0c3c2a691a613f3d2b341a033c3b3b68071a543f2a69220f370c1a4f3f1aec3c0c3c2a691a493f3d2b220f1ae23b3b3b68071a3b3f2a692213370c1a363f1acb3c0c3c2a691a303f3d2b22131ac13b3b3b68071a223f2a692217370c1a1d3f1aaa3c0c3c2a691a173f3d2b22171aa03b3b3b68071a093f2a69221b370c1a043f1a893c0c3c2a691afe3e3d2b22161a7f3b3b3b68071af03e2a69221f370c1aeb3e1a683c0c3c2a691ae53e3d2b221a1a5e3b3b3b68071ad73e2a692223370c1ad23e1a473c0c3c2a691acc3e3d2b221e1a3d3b3b3b68071abe3e2a692227370c1ab93e1a263c0c3c2a691ab33e3d2b22221a1c3b3b3b68071aa53e2a69222b370c1aa03e1a053c0c3c2a691a9a3e3d2b22261afb3a3b3b68071a8c3e2a69222f370c401afe3a0c291afd3a3b1afd3a1a7a3e3b68061a783e1afd3a2b1afd3a6b1a6d3e2a69139b02230a0c2c1af13a0c1350023b691351022a69293c1ab53b0c291ab43b0c3b2a3c6a3e2c2b6a3d2a1a9a3a6a1357023b691358022a69293c1a923b0c291a913b0c3b2a3c6a3e2c2b6a3d2a135f026a135e021a183e69293c1a723b0c291a713b0c3b2a3c6a3e2c2b6a3d2a1365026a1365023b691afa3d2a69642215380c1af43d1a413b0c3c2a691a963d3d2b22131a373a3b3b68071a883d2a692219370c1ad73d1a203b0c3c2a691ad13d3d2b22171a163a3b3b68071ac33d2a69221d370c1abe3d1aff3a0c3c2a691a643d3d2b221b1af5393b3b68071a563d2a692221370c1aa13d1ade3a0c3c2a691a9b3d3d2b221f1ad4393b3b68071a8d3d2a692225370c1a883d1abd3a0c3c2a691a323d3d2b221c1ab3393b3b68071a243d2a692229370c1a6b3d1a9c3a0c3c2a691a193d3d2b22201a92393b3b68071a0b3d2a69222d370c1a4e3d1a7b3a0c3c2a691a003d3d2b22241a71393b3b68071af23c2a692231370c1a313d1a5a3a0c3c2a691a2b3d3d2b22281a50393b3b68071a1d3d2a692235370c1a183d1a393a0c3c2a691a123d3d2b222c1a2f393b3b68071a043d2a692239370c1aff3c1a183a0c3c2a691af93c3d2b22301a0e393b3b68071aeb3c2a69223d370c1ae63c1af7390c3c2a691ae03c3d2b22341aed383b3b68071ad23c2a692241370c1acd3c1ad6390c3c2a691ac73c3d2b22381acc383b3b68071ab93c2a692245370c1ab43c1ab5390c3c2a691aae3c3d2b22361aab383b3b68071aa03c2a692249370c1a9b3c1a94390c3c2a691a953c3d2b223a1a8a383b3b68071a873c2a69224d370c1a823c1a73390c3c2a691a7c3c3d2b223e1a69383b3b68071a6e3c2a692251370c401a6c380c291a6b383b1a6b381a5c3c3b68061a5a3c1a6b382b1a6b386b1a4f3c2a6913f102230a0c2c1a5f380c1a433c3c1a2b390c291a2a390c3b2a3c6a3e2c2b6a3d2a1a10386a1a2c3c3c1a10390c291a0f390c3b2a3c6a3e2c2b6a3d2a1a59396a3d1a543913b2026a280d1a1f380c3c2a691a043c3d2b2e1ade373b3b68073d1a363913b6026a280c1a01380c3c2a691aea3b3d2b2e1ac0373b3b68073d13b9021a15396a28061ae3370c3c2a691ad03b3d2b2e1aa2373b3b68071ac73b2217380c1ac43b1a8d380c3c2a691ae23a3d2b22171a83373b3b68071ad43a2a69221b370c1aa73b1a6c380c3c2a691aa13b3d2b221b1a62373b3b68071a933b2a69221f370c1a8e3b1a4b380c3c2a691ab03a3d2b221f1a41373b3b68071aa23a2a692223370c1a713b1a2a380c3c2a691a6b3b3d2b22231a20373b3b68071a5d3b2a692227370c1a583b1a09380c3c2a691a7e3a3d2b22221aff363b3b68071a703a2a69222b370c1a3b3b1ae8370c3c2a691a653a3d2b22261ade363b3b68071a573a2a69222f370c1a1e3b1ac7370c3c2a691a4c3a3d2b222a1abd363b3b68071a3e3a2a692233370c1a013b1aa6370c3c2a691afb3a3d2b222e1a9c363b3b68071aed3a2a692237370c1ae83a1a85370c3c2a691ae23a3d2b22321a7b363b3b68071ad43a2a69223b370c1acf3a1a64370c3c2a691ac93a3d2b22361a5a363b3b68071abb3a2a69223f370c1ab63a1a43370c3c2a691ab03a3d2b223a1a39363b3b68071aa23a2a692243370c1a9d3a1a22370c3c2a691a973a3d2b223e1a18363b3b68071a893a2a692247370c1a843a1a01370c3c2a691a7e3a3d2b22421af7353b3b68071a703a2a69224b370c1a6b3a1ae0360c3c2a691a653a3d2b22461ad6353b3b68071a573a2a69224f370c1a523a1abf360c3c2a691a4c3a3d2b224a1ab5353b3b68071a3e3a2a692253370c1a393a2246692254370c1a333a2243692255370c1a2d3a2240692256370c401a9a350c291a99353b1a99351a1a3a3b68061a183a1a99352b1a99356b1a0d3a2a69134c03230a0c2c1a8d350c1a013a2a380c1aff393c1a53360c291a52360c3b2a3c6a3e2c2b6a3d2a1a38356a1ae8391a31360c3c2a691a86383d2b2e1a28353b3b68071a79382a6933370c1ac5393c1a19360c291a18360c3b2a3c6a3e2c2b6a3d2a1afe346a1ab2391af7350c3c2a691aac393d2b2e1aee343b3b68071a9f392a692213370c1a8a393c1ade350c291add350c3b2a3c6a3e2c2b6a3d2a1ac3346a1a7f391abc350c3c2a691a21383d2b2e1ab3343b3b68071a14382a69221c370c1a4f393c1aa3350c291aa2350c3b2a3c6a3e2c2b6a3d2a1a88346a1a48391a81350c3c2a691a42393d2b2e1a78343b3b68071a35392a692225370c401a7b340c291a7a343b1a7a341a23393b68061a21391a7a342b1a7a346b1a16392a69137603230a0c2c1a6e340c1a0a392a380c401a47340c291a46343b1a46341afb383b68061af9381a46342b1a46346b1aee382a69137c03230a0c2c1a3a340c1ae2381a2b360c28072a1adc383c6b3b1ad6330c3b1ad5380c2b1ad4383b2d2d3b3b3c6808280c2a691ac9381a02360c28072a1ac3383c6b3b1aad330c3b1abc380c2b1abb383b2d2d3b3b3c6808280c2a693c30691aad383d2b1aac381aa9333b3b68073c2c691aa3383d2b1aa2381a97333b3b68071a9c383c1a90340c291a8f340c3b2a3c6a3e2c2b6a3d2a1a75336a1a85383c1a75340c291a74340c3b2a3c6a3e2c2b6a3d2a1a72386a1a7238221b380c1a6f38220e69221c370c1a6938220d69221d370c1a63381a38340c3c2a691a8d363d2b220d1a2e333b3b68071a7f362a692221370c1a46381a17340c3c2a691a40383d2b22111a0d333b3b68071a32382a692225370c1a2d381af6330c3c2a691a5b363d2b22151aec323b3b68071a4d362a692229370c1a10381ad5330c3c2a691a0a383d2b22191acb323b3b68071afc372a69222d370c1af7371ab4330c3c2a691af1373d2b221d1aaa323b3b68071ae3372a692231370c1ade371a93330c3c2a691a08363d2b221c1a89323b3b68071afa352a692235370c1ac1371a72330c3c2a691aef353d2b22201a68323b3b68071ae1352a692239370c1aa4371a51330c3c2a691ad6353d2b22241a47323b3b68071ac8352a69223d370c1a87371a30330c3c2a691a81373d2b22281a26323b3b68071a73372a692241370c280b1a48320c3c2a691a65373d2b1a64371a05323b3b68071a56372a692245370c401a28320c3c2a691a4d373d2b1a44371ae5313b3b68071a3e372a692249370c3f1a08320c3c2a691a31373d2b1a30371ac5313b3b68071a22372a69224d370c401ac8310c291ac7313b1ac7311a14373b68061a12371ac7312b1ac7316b1a07372a6913ce03230a0c2c1abb310c401a9a310c291a99313b1a99311aee363b68061aec361a99312b1a99316b1ae1362a6913d303230a0c2c1a8d310c1ad5360628062a3b6a291acf36691acf362a6928142a3b6a293b3b1aee310c3b2a0c643c2a693c063c2a3b3b6b2b2a1ab2366a1ab2363b1ab2362c6b28053b1aae362c3b68053d1a9a322b6a1aa5363d1aa5362c1a05313b3b68073c1a31310c3c2a691a96363d2b1a95361aee303b3b68073b1a1a310c3c2a691a87363d2b1a86361ad7303b3b68073d1a03310c3c2a691a78363d2b1a77361ac0303b3b6807220c3b691a6d362a69642218380c1a673634692219370c1a62363269221a370c1a5d363069221b370c1a58362e69221c370c401a9a300c291a99303b1a99301a46363b68061a44361a99302b1a99306b1a39362a6913f403230a0c2c1a8d300c1acd30061b0f273eba28062b2b6a13ac031a1c3669293c1a46310c291a45310c3b2a3c6a3e2c2b6a3d2a306a2f3b693b1a39310c3b1a38310c1af8351a39313b2d2d3b3b3c6808280c2a692d1ae9300c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ac42f0c2a3ba203041abb30103b503b2b1aaf350c2d1ab6303b2d2d3b3b3c6808280c2a6927043c2a691a9a353d2b341ab42f3b3b680713bb031a8e3569293c1aa8300c291aa7300c3b2a3c6a3e2c2b6a3d2a1af1306a3b1a9c300c3b1a9b300c1a6b351a9c303b2d2d3b3b3c6808280c2a693c2a691a5a353d2b311a682f3b3b680713c7031a4e3569293c1a5c300c291a5b300c3b2a3c6a3e2c2b6a3d2a22226a22213b693b1a4d300c3b1a4c300c1a28351a4d303b2d2d3b3b3c6808280c2a692d1afd2f0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ad82e0c2a3ba203041acf2f103b503b2b1adf340c2d1aca2f3b2d2d3b3b3c6808280c2a6927043c2a691aca343d2b341ac82e3b3b680713d6031abe3469293c1abc2f0c291abb2f0c3b2a3c6a3e2c2b6a3d2a13dd036a3b1ab02f0c3b1aaf2f0c1a9b341ab02f3b2d2d3b3b3c6808280c2a693c2a691a8a343d2b311a7c2e3b3b680713e2031a7e3469293c1a702f0c291a6f2f0c3b2a3c6a3e2c2b6a3d2a1a6d336a3b1a642f0c3b1a632f0c1a5b341a642f3b2d2d3b3b3c6808280c2a693c2a691a4a343d2b311a302e3b3b680713ee031a3e3469293c1a242f0c291a232f0c3b2a3c6a3e2c2b6a3d2a1a21336a3b1a182f0c3b1a172f0c1a1b341a182f3b2d2d3b3b3c6808280c2a693c2a691a0a343d2b311ae42d3b3b6807224e3b691a392f2a6913fc032a69293c1ad12e0c291ad02e0c3b2a3c6a3e2c2b6a3d2a1a422f6a22563b693b1a252f0c3b1a242f0c1acc331a252f3b2d2d3b3b3c6808280c2a692d1a712e0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a4c2d0c2a3ba203041a432e103b503b2b1a83330c2d1a3e2e3b2d2d3b3b3c6808280c2a6927043c2a691a6e333d2b341a3c2d3b3b6807130b041a623369293c1a302e0c291a2f2e0c3b2a3c6a3e2c2b6a3d2a1aa12e6a3b1a882e0c3b1a872e0c1a3f331a882e3b2d2d3b3b3c6808280c2a693c2a691a2e333d2b311af02c3b3b6807226b3b691a452e2a691319042a69293c1add2d0c291adc2d0c3b2a3c6a3e2c2b6a3d2a1a4e2e6a22733b693b1a312e0c3b1a302e0c1af0321a312e3b2d2d3b3b3c6808280c2a692d1a7d2d0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a582c0c2a3ba203041a4f2d103b503b2b1aa7320c2d1a4a2d3b2d2d3b3b3c6808280c2a6927043c2a691a92323d2b341a482c3b3b68071328043b691a9c2d2a69132a042a69293c1a342d0c291a332d0c3b2a3c6a3e2c2b6a3d2a1aa52d6a3b1a8c2d0c3b1a8b2d0c1a57321a8c2d3b2d2d3b3b3c6808280c2a693c2a691a46323d2b311af42b3b3b68071336041a3a3269293c1ae82c0c291ae72c0c3b2a3c6a3e2c2b6a3d2a1a592d6a3b1a402d0c3b1a3f2d0c1a17321a402d3b2d2d3b3b3c6808280c2a693c2a691a06323d2b311aa82b3b3b68071342041afa3169293c1a9c2c0c291a9b2c0c3b2a3c6a3e2c2b6a3d2a1a0d2d6a3b1af42c0c3b1af32c0c1ad7311af42c3b2d2d3b3b3c6808280c2a693c2a691ac6313d2b311a5c2b3b3b68071abd3122946922a6370c1ab73122896922a7370c1ab131227b6922a8370c1aab3122706922a9370c1aa53122656922aa370c1a9f31225a6922ab370c1a9931224a6922ac370c1a9331223f6922ad370c1a8d31222f6922ae370c1a873122226922af370c1a813122176922b0370c1a7b31220c6922b1370c1a75313b3b1a882b0c3b2a0c641a6c313b3b1a7b2b0c3b2a0c641a63313b3b1a6e2b0c3b2a0c641a5a3122db370c1a573122dc370c1a543122dd370c1a513122de370c280613b1043b6a3c2a691a44313d2b1a872a1a882a3b3b68071a35312a6922e2370c1a30311a3131220c1a30310c1a30311a312a220c1a24310c1a28311a212a220d1a18310c1a20311a2131220d1a0c310c1a1c311a6d2c0c28072a1a16313c6b1a15311a5e2c0c28072a1a0f313c6b28052c2b1a0a316b28051a08311a09312c6b1a08311a09310c3b1a08310c2b1a07313b2d2d3c3b3c6808280c2a693d2a69293b69293ba003041af130103b50291aee300c3e2a69293b691ae8302a691ae7302a691ae6301afb2b0c28072a1ae0303c6b28051add302b1aa5306b2c3ba00303290205280f2d2b6a1acc301aa1300c3b1ac8300c2b1ac7303b2d2d3c3e3c6808280c2a693b1a73290c3b1ab6300c2b1ab5303b2d2d3b3b3c6808280c2a691aaa300628062a3b6a3b1a50290c3b1a9f300c1a9f301aa0303b2d2d3b3b3c6808280c2a693b1a34290c3b1a8f300c1a8f301a90303b2d2d3b3b3c6808280c2a69293b692e2a69332a69220d2a6928142a3b6a293b3b1ad4290c3b2a0c643c2a691a8d29061b0f273eba2a2a69293b693c063c2a3c3b6b2f2a1a4d306a1a4d302d1af9282c6b293b691a45302a696413ea040c3b1ada2f0c3b1a39300c1a39301a3a303b2d2d3c3e3c6808280c2a691a2f300628062a3b6a291a2930692c2a6928142a3b6a293b3b1a62290c3b2a0c643c2a693c063c2a3b3b6b2b2a1a0a306a1a0a303b1a96282c6b293b691a02302a6964132d01380c1afb2f13fb040c1af82f132f01380c1af42f133001380c1ae028061b0f273eba293fb828062c2b6a293b692a2a69293c1a57290c291a56290c3b2a3c6a3e2c2b6a3d2a1a3c286a1ac02f3d1ac02f2c1ac02f3b3b68071ab12f2a69130b050c1a9828061b0f273eba293fb828062c2b6a293b692a2a69293c1a0f290c291a0e290c3b2a3c6a3e2c2b6a3d2a1af4276a1a842f3d1a842f2c1a782f3b3b68071a7d2f2a691318050c401aef270c291aee273b1aee271a6b2f3b68061a692f1aee272b1aee276b1a5e2f2a69131d05230a0c2c1ae2270c2937401abf270c291abe273b1abe271a432f3b68061a412f1abe272b1abe276b1a362f2a692e230a0c2c1ab4270c401a93270c291a92273b1a92271a1f2f3b68061a1d2f1a92272b1a92276b1a122f2a692d230a0c2c1a88270c401a67270c291a66273b1a66271afb2e3b68061af92e1a66272b1a66276b1aee2e2a6932230a0c2c1a5c270c401a3b270c291a3a273b1a3a271ad72e3b68061ad52e1a3a272b1a3a276b1aca2e2a69220e230a0c2c1a2f270c401a0e270c291a0d273b1a0d271ab22e3b68061ab02e1a0d272b1a0d276b1aa52e2a692213230a0c2c1a02270c401ae1260c291ae0263b1ae0261a8d2e3b68061a8b2e1ae0262b1ae0266b1a802e2a692218230a0c2c1ad5260c401ab4260c291ab3263b1ab3261a682e3b68061a662e1ab3262b1ab3266b1a5b2e2a69221d230a0c2c1aa8260c1a502e0628062a3b6a291a4a2e691a52262a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1d2e0c020129293b3b1adf260c3b2a0c643c2a693b063c2a3b3b6b2b2a1a032e6a1a032e3b1a13262c6b293b691af72d2a69642226380c5028053b1ae92d2c1af92568051ad02d0628062a3b6a291aca2d691ad2252a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a9d2d0c020129293b3b1a5f260c3b2a0c643c2a693b063c2a3b3b6b2b2a1a8b2d6a1a8b2d3b1a93252c6b293b691a7f2d2a69642233380c5028053b1a712d2c1a792568051a502d0628062a3b6a291a4a2d691a52252a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1d2d0c020129293b3b1adf250c3b2a0c643c2a693b063c2a3b3b6b2b2a1a132d6a1a132d3b1a13252c6b293b691a072d2a6964223b380c5028053b1af92c2c1af92468051ad02c0628062a3b6a291aca2c691ad2242a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a9d2c0c020129293b3b1a5f250c3b2a0c643c2a693b063c2a3b3b6b2b2a1a9b2c6a1a9b2c3b1a93242c6b293b691a8f2c2a69642243380c5028053b1a812c2c1a792468051a502c0628062a3b6a291a4a2c691a52242a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1d2c0c020129293b3b1adf240c3b2a0c643c2a693b063c2a3b3b6b2b2a1a232c6a1a232c3b1a13242c6b293b691a172c2a69642246380c5028053b1a092c2c1af92368051ad02b0628062a3b6a291aca2b691ad2232a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a9d2b0c020129293b3b1a5f240c3b2a0c643c2a693b063c2a3b3b6b2b2a1aab2b6a1aab2b3b1a93232c6b293b691a9f2b2a69642258380c5028053b1a912b2c1a792368051a502b0628062a3b6a291a4a2b691a52232a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1d2b0c020129293b3b1adf230c3b2a0c643c2a693b063c2a3b3b6b2b2a1a332b6a1a332b3b1a13232c6b293b691a272b2a6964225b380c5028053b1a192b2c1af92268051a142b224f691a122b2236691a102b222a691a0e2b2211691a0c2b221f691a0a2b2f69293b692b2a692d2a692f2a69312a69332a69293b2a929103292a352b362a352b361ae82a0c2c3ba00303290206292d1ade2a0c2b2a2506250626041e273b270402012965291acc2a0c291acb2a0c3b2a3c6a3e2c2b6a3d3b2b6a1abf2a2a1abf2a6a1abf2a3b1a6b222c6b293b691ab72a2a6964228e380c22633b691ab5242a69293c1a52230c291a51230c3b2a3c6a3e2c2b6a293b6928052a1a8f2a1a902a1a312268051a8c2a2a6922453b691a83242a69293c1a20230c291a1f230c3b2a3c6a3e2c2b6a293b6928052a1a5d2a1a5e2a1aff2168051a5e2a2a69225b3b691a51242a69293c1aee220c291aed220c3b2a3c6a3e2c2b6a293b6928052a1a2b2a1a2c2a1acd2168051a302a2a69223d3b691a1f242a69293c1abc220c291abb220c3b2a3c6a3e2c2b6a293b6928052a1af9291afa291a9b2168051a022a2a6922533b691aed232a69293c1a8a220c291a89220c3b2a3c6a3e2c2b6a293b6928052a1ac7291ac8291a692168051ad4292a6922423b691abb232a69293c1a58220c291a57220c3b2a3c6a3e2c2b6a293b6928052a1a95291a96291a372168051aa6292a69293b69332a6922142a69221e2a6922282a6922322a69291a8e290c28053b1a8b2922411a0a2168052a1a44290c291a43290c3b2a3c6a3e2c2b6a1a732922d7380c401aff200c291afe203b1afe201a63293b68061a61291afe202b1afe206b1a56292a6922db230a0c2c1af3200c1a9b280628062a3b6a291a9528691a9d202a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a68280c020129293b3b1a2a210c3b2a0c643c2a693b063c2a3b3b6b2b2a1af2286a1af2283b1a5e202c6b293b691ae6282a6964220d380c5028053b1ad8282c1a442068051a1b280628062a3b6a291a1528691a1d202a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae8270c020129293b3b1aaa200c3b2a0c643c2a693b063c2a3b3b6b2b2a1a7a286a1a7a283b1ade1f2c6b293b691a6e282a6964221a380c5028053b1a60282c1ac41f68051a9b270628062a3b6a291a9527691a9d1f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a68270c020129293b3b1a2a200c3b2a0c643c2a693b063c2a3b3b6b2b2a1a02286a1a02283b1a5e1f2c6b293b691af6272a69642227380c5028053b1ae8272c1a441f68051a1b270628062a3b6a291a1527691a1d1f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae8260c020129293b3b1aaa1f0c3b2a0c643c2a693b063c2a3b3b6b2b2a1a8a276a1a8a273b1ade1e2c6b293b691a7e272a69642234380c5028053b1a70272c1ac41e68051a9b260628062a3b6a291a9526691a9d1e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a68260c020129293b3b1a2a1f0c3b2a0c643c2a693b063c2a3b3b6b2b2a1a12276a1a12273b1a5e1e2c6b293b691a06272a69642241380c5028053b1af8262c1a441e68051a1b260628062a3b6a291a1526691a1d1e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae8250c020129293b3b1aaa1e0c3b2a0c643c2a693b063c2a3b3b6b2b2a1a9a266a1a9a263b1ade1d2c6b293b691a8e262a6964224e380c5028053b1a80262c1ac41d68051a9b250628062a3b6a291a9525691a9d1d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a68250c020129293b3b1a2a1e0c3b2a0c643c2a693b063c2a3b3b6b2b2a1a22266a1a22263b1a5e1d2c6b28053b1a1a262c1a521d680522273b691a11262a691aa41f2a69293c1a411e0c291a401e0c3b2a3c6a3e2c2b6a1af8252a6922563b6922302a691a7f1f2a69293c1a1c1e0c291a1b1e0c3b2a3c6a3e2c2b6a1ad7252a6922373b691ac6252a691a591f2a69293c1af61d0c291af51d0c3b2a3c6a3e2c2b6a1ab5252a6922663b6922262a691a341f2a69293c1ad11d0c291ad01d0c3b2a3c6a3e2c2b6a1a94252a69223a3b691a131f2a69293c1ab01d0c291aaf1d0c3b2a3c6a3e2c2b6a1a77252a6922683b6922692a69293c1a901d0c291a8f1d0c3b2a3c6a3e2c2b6a1a5b252a69227c3b691381062a691a691c2a6922582a691ac41e2a69293c1a611d0c291a601d0c3b2a3c6a3e2c2b6a1a30252a6922863b6922602a691a9f1e2a69293c1a3c1d0c291a3b1d0c3b2a3c6a3e2c2b6a1a0f252a69293b69322a6922142a69221c2a6922242a69222d2a6922362a69223f2a693b2a299291031229362b3caa292b25042504511e113b6502012a650b03002e3b2b1acf240c5029372f2a2250311ac7240c29299291031929352a362a35292c696422ae370c50292503511e183b6502013b6422512b691aa2242a696422ac380c22513b6928052a1af5231af6231a971b680522873b6928052a1ae3231ae4231a851b6805291a7724692c2a69293c1a7a1c0c291a791c0c3b2a3c6a3e2c2b6a3d3b2b6a1aa9232a1a59246a1a59243b1a551b2c6b293b691a51242a696422ba380c28053b1a48242d1a3c1b680522943b6922af2a6922892a691a8b1d2a69293c1a281c0c291a271c0c3b2a3c6a3e2c2b6a3d2a1370016a3d332b6a1a15241a16242b6a229f3b6922ba2a6922942a691a551d2a69293c1af21b0c291af11b0c3b2a3c6a3e2c2b6a3d2a137b016a3d22152b6a1ae6231ae7232b6a22aa3b6922c52a6913ca062a691ab91a2a6922a12a691a141d2a69293c1ab11b0c291ab01b0c3b2a3c6a3e2c2b6a3d2a1388016a3d22222b6a1aad231aae232b6a22b73b6922ab2a69293c1a831b0c291a821b0c3b2a3c6a3e2c2b6a3d2a1391016a3d222b2b6a1a87231a88232b6a22c03b6922db2a69229b2a691aaf1c2a69293c1a4c1b0c291a4b1b0c3b2a3c6a3e2c2b6a3d2a135b016a3d22362b6a1a58231a59232b6a3d22b21385016a3d22392b6a1a4c231a4d232b6a1a4c231a4d2313a2016a1a4a233c1a061b0c291a051b0c3b2a3c6a3e2c2b6a3d2a1a771b6a293b6928052a1aa51c1aa61c1adf1968053d2a1a601b6a1a1c231a1d232b6a1a1c233c1acc1a0c291acb1a0c3b2a3c6a3e2c2b6a3d2a1a3d1b6a293b6928052a1a6b1c1a6c1c1aa51968053d2a1a261b6a1aee221aef222b6a1aee223c1a921a0c291a911a0c3b2a3c6a3e2c2b6a3d2a1adb226a293b6928052a1a311c1a321c1a6b1968053d2a1aec1a6a1ac4221ac5222b6a1ac4223c1a581a0c291a571a0c3b2a3c6a3e2c2b6a3d2a1ac91a6a293b6928052a1af71b1af81b1a311968053d2a1ab21a6a1a96221a97222b6a293b69332a6922142a69221e2a6922282a69222a2a69222e2a69223a2a6922442a6922522a69225e2a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1ad8183b3b68072e2a6966132c01370c502c250626051e313b270502013b641a3122130302380c1a2d22299291031a29352a362a35292c69130802370c502a250426031e193b6602013b641a0d22130502380c1a0922299291031a29352a362a35292c69130a02370c502a250426031e193b6602013b641ad518061b0f273eba293cb828062c2b6a3d2a2b6a1ad4213d1ad4212c1ad01f3b3b68071acd212a69130c020c1aa818061b0f273eba293cb828062c2b6a3d2a1a811a6a1ab1213d1ab1212c1aa11f3b3b68071aaa212a691313020c1a7918061b0f273eba293cb828062c2b6a291a932169293c1af1180c291af0180c3b2a3c6a3e2c2b6a3d2a1a7e216a1a7e213d1a7e212c1a5a1f3b3b68071a77212a69131f020c1a3218061b0f273eba28062b2b6a1a2418061b0f273eba28062b2b6a3d2d1a44216a3d2b2b6a3d1a57172b6a3d2a1a18196a1a40213d1a40212c1a101f3b3b68071a39212a69132b020c1ae817061b0f273eba28062b2b6a1ada17061b0f273eba28062b2b6a3d2d2b6a3d2a1a12216a1a12213d1a12212c1ad21e3b3b68071a0b212a69130107370c1a0521130207370c1a01211337020c401a39170c291a38173b1a38171af1203b68061aef201a38172b1a38176b1ae4202a69138b03230a0c2c1a2c170c1ad8200628062a3b6a3b1ace160c3b1acd200c1acd201ace203b2d2d3b3b3c6808280c2a693b1ab2160c3b1abd200c1a0d1e1aba203b2d2d3b3b3c6808280c2a69293b692e2a69332a691a9a162a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a651e0c020129293b3b1a27170c3b2a0c643c2a691ae016061b0f273eba2a2a69293b693b063c2a3c3b6b2f2a1a4c206a1a4c202d1a4c162c6b293b691a44202a6964221b380c1a161e0628062a3b6a291a101e691a18162a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae31d0c020129293b3b1aa5160c3b2a0c643c2a693b063c2a3b3b6b2b2a1ae51f6a1ae51f3b1ad9152c6b293b691add1f2a69642228380c28053b1ad41f2d1ac01568051a2f16061b0f273eba28062b2b6a293b6928052a1abb1f22161aa21568053d2c306a3d2b2b6a2d3b69291a6d160c2992919103051a9f1f02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1a46150c2a3ba203041a3d16103b503b2b1a711f0c1a691f1a36163b2d2d3b3b3c6808280c2a6927043c2a691a5a1f3d2b301a34153b3b68071a4d1f2a692236370c333b6928052a1a321f22201a191568053d2210220e6a3d2b2b6a220e3b69291ae1150c2992919103051a1f1f02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1aba140c2a3ba203041ab115103b503b2b1af11e0c1ae91e1aaa153b2d2d3b3b3c6808280c2a6927043c2a691ada1e3d2b301aa8143b3b68071acd1e2a692240370c22143b6928052a1aa51e222a1a8c1468053d221a1a80146a3d2b2b6a22183b69291a53150c2992919103051a9d1e02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1a2c140c2a3ba203041a2315103b503b2b1a6f1e0c1a671e1a1c153b2d2d3b3b3c6808280c2a6927043c2a691a581e3d2b301a1a143b3b68071a4b1e2a69224a370c1ae61b0628062a3b6a291ae01b691ae8132a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ab31b0c020129293b3b1a75140c3b2a0c643c2a693b063c2a3b3b6b2b2a1aed1d6a1aed1d3b1aa9132c6b28053b1ae51d2c1a9d136805293b6928052a1aea1b1aeb1b1a8c136805293b691a4c1c2a69293c1a81140c291a80140c3b2a3c6a3e2c2b6a3d3b2b6a1ab01b2a1aac1d6a1aac1d3b1a5c132c6b28053b1aa41d2c1a501368052a3b691a9c1d2a696413a102380c3d1ac4142c6a1a8f1d2a693d1ab9142e6a1a881d2a693d1aae14306a1a811d2a693d1aa314326a1a7a1d2a691a791d3c1a11140c291a10140c3b2a3c6a3e2c2b6a1a681d2a691a671d13710269293b691a611d2a691a601d2a692d2a691a5c1d2a69342a69220e2a691a541d2a6922122a6922152a691a4b1d2a691a4a1d2a691a491d2a691a481d2a693b2a299291031229362b3caa292b25042504511e113b6502012a650b03002e3b2b1a7e1b0c5029372f2a2231311a1a1d0c29299291031a29352a362a35292c696413c802370c50292503511e193b6502013b6422322b691af41c2a696413c602380c22603b6928052a1aa21a1aa31a1a44126805293b691ad81c2a6913f8012a69293c1a34130c291a33130c3b2a3c6a3e2c2b6a222f3b6928052a1ad8141ad9141a121268053d1a941313fd016a293b6928052a1abf141ac0141af9116805293b692d2a69293c1af0120c291aef120c3b2a3c6a3e2c2b6a3d220c2b6a1a761c13fe076928062a3b6a3c2a691a6b1c3d2b1a6a1c1abf113b3b68071a5c1c2a69132f04370c1a5a1c1303086928062a3b6a227c3b6928052a1af3191af4191a951168053d2a1a3e1c6a3c2d691a3b1c3d2b2d1a81113b3b68071a2e1c2a69133704370c1a281c3d1a281c22101a67113b3b68071a201c2a696413e8020c0b1200131e082a1a131c0c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f2210231022112311221122112211221122112211221122112211221122112211221122112211221122112211681228062a3b6a3c2a691aae1b3d2b1342021ade103b3b68071a9f1b2a69136204370c1a4111061b0f273eba28062b2b6a2b3b3b1a881be350293b692a2a69293c1ab3110c291ab2110c3b2a3c6a3e2c2b6a3d2a316a3d31326a313b69322a69293c1a92110c291a91110c3b2a3c6a3e2c2b6a3d2a1a77106a1aef133d1a431b341afb173b3b68071ae0132a69641343080c1ade133d1a2a1b220c1ae1173b3b68071ace132a69641344080c1acc133d1a101b220d1ac7173b3b68071abc132a69641345080c1a82153d1af61a220d1aad173b3b68071a72152a69641346080c1ae41a3d1adc1a220e1a93173b3b68071ad81a2a69641347080c1ad21a3d1ac21a311a7a173b3b68071ac71a2a69641348080c1ac11a3d1aa91a321a61173b3b68071ab61a2a69641349080c1a2c133d1a901a331a48173b3b68071a1d132a6964134a080c1a03133d1a771a341a2f173b3b68071af4122a6964134b080c1a7e1a3d1a5e1a22141a15173b3b68071a721a2a6964134c080c1a6c1a3d1a441a22151afb163b3b68071a601a2a6964134d080c1ab2143d1a2a1a22161ae1163b3b68071aa2142a6964134e080c1a401a1a411a0c291a0418691a3c1a1a351a0c291a2c0f691a341a1a291a0c291ac818691a2c1a1a1d1a0c291a281a69293b692c2a692f2a69322a69291a47170c291a46170c3b2a3c6a3e2c2b6a3d2a1a7c106a3d1a771022a46a293b6928052a1aa3111aa4111add0e68051aec191ad5190c292b691ae6191acb190c292d691ae0191ac1190c292f69293b692c2a692f2a69291af0160c291aef160c3b2a3c6a3e2c2b6a1abf191b3b02136f086a28051ab7191aa41822ff1a8b0e68051aae191aaf192b6a28051aac191a8d181301011a730e68051aa2191aa3192b6a28051aa0191a75181303011a5b0e68051a96191a97192b6a28051a94191a5d181305011a430e68051a8a191a8b192b6a28051a88191a45181307011a2b0e68051a7e191a7f192b6a28051a7c191a2d181309011a130e68051a72191a73192b6a28051a70191a1518130b011afb0d68051a66191a67192b6a28051a64191afd17130d011ae30d68051a5a191a5b192b6a28051a58191ae517130f011acb0d68051a4e191a4f192b6a28051a4c191acd171311011ab30d68051a42191a43192b6a28051a40191ab5171313011a9b0d68051a36191a37192b6a28051a34191a9d171315011a830d68051a2a191a2b192b6a28051a28191a85171317011a6b0d68051a1e191a1f192b6a28051a1c191a6d171319011a530d68051a12191a13192b6a28051a10191a5517131b011a3b0d68051a06191a07192b6a28051a04191a3d17131d011a230d68051afa181afb182b6a28051af8181a2517131f011a0b0d68051aee181aef182b6a28051aec181a0d171321011af30c68051ae2181ae3182b6a28051ae0181af5161323011adb0c68051ad6181ad7182b6a22373b6928052a1adb161326011ac10c68051ac4181ac5182b6a222a3b6928052a1ac1161329011aa70c68051ab2181ab3182b6a28051ab0181aa916132b011a8f0c68051aa6181aa7182b6a28051aa4181a9116132d011a770c68051a9a181a9b182b6a28051a98181a7916132f011a5f0c68051a8e181a8f182b6a28051a8c181a61161331011a470c68051a82181a83182b6a28051a80181a49161333011a2f0c68051a76181a77182b6a293b692c2a692f2a69322a69220c2a69220f2a6922132a6922172a69221a2a69221d2a6922202a6922232a6922262a6922292a69222c2a69222f2a6922322a6922352a6922382a69223b2a69223e2a6922412a6922442a6922472a69224a2a69224d2a6922502a691a0e182a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a990b3b3b68072e2a6913fe04370c502f250926081e303b270802013b64401a8e0b0c291a8d0b3b1a8d0b1ac6173b68061ac4171a8d0b2b1a8d0b6b1ab9172a6913aa03230a0c2c1a810b0c28072841bd293b28183bf02a3b3b2818f0501a9b173f2c3f2810ec501a95173f2c28142808ec502a95501aff120628062a3b6a291af912691a010b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291acc120c020129293b3b1a8e0b0c3b2a0c643c2a69321a3a171a3b176a3b063c2a3b3b6b2c2a2d6a1a24173b1abc0a2c6b293b691a18172a69642210380c5028053b1a0a172c1aa20a680528082841bd293b281c3bf02a3b3b281bf0501aeb163f2c3f2810ec501af1163f2c2814280bec502a95501a4f120628062a3b6a291a4912691a510a2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1c120c020129293b3b1ade0a0c3b2a0c643c2a69321a8a161a8b166a3b063c2a3b3b6b2c2a2d6a1a80163b1a0c0a2c6b293b691a74162a69642220380c5028053b1a66162c1af209680528082841bd293b281c3bf02a3b3b281bf0501a3b163f2c3f2810ec501a45163f2c2814280bec502a95501a9f110628062a3b6a291a9911691aa1092a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6c110c020129293b3b1a2e0a0c3b2a0c643c2a69321ada151adb156a3b063c2a3b3b6b2c2a2d6a1ad4153b1a5c092c6b293b691ac8152a69642230380c5028053b1aba152c1a420968053d22211ade126a1aae151aaf152b6a3d221322246a1aa8151aa9152b6a1379013b6928052a1a70111a71111a1209680513fc083b692a2a6922282a69293c1a030a0c291a020a0c3b2a3c6a3e2c2b6a3d1a750a222f6a3d2b2b6a1a6b151a6c152b6a22203b6928052a1a940b1a950b1ace0868053d22332b6a1a54151a55152b6a22343b6928052a1a0d111a0e111aaf086805130c093b692a2a691a020b2a69130f092a69223a2a69293c1a96090c291a95090c3b2a3c6a3e2c2b6a3d2a22416a1a14151a15152b6a22413b6928052a1ac5101ac6101a670868051319093b692a2a691aba0a2a69131c092a6922472a69293c1a4e090c291a4d090c3b2a3c6a3e2c2b6a3d2a224e6a1ad4141ad5142b6a224e3b6928052a1a7d101a7e101a1f086805293b6922512a69293c1a15090c291a14090c3b2a3c6a3e2c2b6a3d2a22586a1aa3141aa4142b6a3d132f09225a6a1a9c141a9d142b6a3d133109225c6a1a95141a96142b6a3d133309225e6a1a8e141a8f142b6a225e3b691335092a69293c1abf080c291abe080c3b2a3c6a3e2c2b6a3d2a22466a1a6d141a6e142b6a22663b69133d092a69293c1a96080c291a95080c3b2a3c6a3e2c2b6a3d2a226e6a1a4c141a4d142b6a226e3b69226f2a6922702a69293c1a6a080c291a69080c3b2a3c6a3e2c2b6a3d2a22776a1a28141a29142b6a22773b6922782a69293c1a42080c291a41080c3b2a3c6a3e2c2b6a3d2a227f6a1a08141a09142b6a227f3b6928052a1a710f1a720f1a130768053d2a22836a1af1131af2132b6a22833b69135a092a69293c1afa070c291af9070c3b2a3c6a3e2c2b6a293b6928052a1a370f1a380f1ad9066805293b69228c2a69293c1acf070c291ace070c3b2a3c6a3e2c2b6a3d2a22936a1aa5131aa6132b6a22733b6928052a1afe0e1aff0e1aa006680522953b692a2a69293c1a96070c291a95070c3b2a3c6a3e2c2b6a3d2a229d6a1a74131a75132b6a229d3b691374092a69293c1a6d070c291a6c070c3b2a3c6a3e2c2b6a293b6928052a1aaa0e1aab0e1a4c0668053d2a22876a1a42131a43132b6a22a73b6928052a1a8b0e1a8c0e1a2d0668053d2a22ab6a1a2b131a2c132b6a3d22ac22ad6a1a25131a26132b6a1383093b6922ae2a6922af2a69293c1a02070c291a01070c3b2a3c6a3e2c2b6a3d2a22b66a1a00131a01132b6a3d22b722986a1afa121afb122b6a293b692c2a69220d2a6922102a6922152a6922202a69222b2a69223c2a6922412a69224a2a6922542a69225d2a6922662a6922692a69226c2a69226f2a69227a2a6922882a6922962a69229b2a6922a82a6922ab2a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a60053b3b68072e2a696622e5370c502c250626051e303b270502013b643d135a041a9e076a1a62121a63122b6a135b041a5f1269293c1a2d060c291a2c060c3b2a3c6a3e2c2b6a3d2a1aba0e6a1a46121a47122b6a13c1033b6928052a1ac2071ac3071afc046805293b691ab4042a691366042a69293c1aec050c291aeb050c3b2a3c6a3e2c2b6a3d2a1a790e6a1a0d121a0e122b6a13cc033b6928052a1a81071a82071abb046805293b691a73042a691364042a69293c1aab050c291aaa050c3b2a3c6a3e2c2b6a3d2a1a380e6a1ad4111ad5112b6a3d137904136d046a1acc111acd112b6a3d137b0422f26a1ac5111ac6112b6a1319023b6928052a1ab90c1aba0c1a5b0468053d137f042b6a1aac111aad112b6a3d1381041a40046a1aa4111aa5112b6a3d1383041a30046a1a9c111a9d112b6a293b692c2a692f2a69342a69220e2a6922112a69221d2a6922292a6922312a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1aec033b3b68072e2a696613ba04370c502c250626051e313b270502013b643d1375041a29066a1a39111a3a112b6a13ef033b6928052a1a75061a76061aaf036805293b691a67032a69137a042a69293c1a9f040c291a9e040c3b2a3c6a3e2c2b6a3d2a1a2c0d6a1a00111a01112b6a1338023b6928052a1acc0b1acd0b1a6e0368053d1384042b6a1ae7101ae8102b6a293b692e2a6922112a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a35033b3b68072e2a696613ca04370c502c250626051e313b270502013b643d1363041a72056a1a9a101a9b102b6a1304043b6928052a1abe051abf051af8026805293b691ab0022a691368042a69293c1ae8030c291ae7030c3b2a3c6a3e2c2b6a3d2a1a750c6a1a61101a62102b6a3d1370041328016a1a59101a5a102b6a134f023b6928052a1a050b1a060b1aa70268053d1374042b6a1a40101a41102b6a3d1376041317046a1a38101a39102b6a293b692c2a69312a69342a6922172a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a58023b3b68072e2a696613db04370c502c250626051e313b270502013b643d138b041a95046a1ae50f1ae60f2b6a131f043b6928052a1ae1041ae2041a1b026805293b691ad3012a691390042a69293c1a0b030c291a0a030c3b2a3c6a3e2c2b6a3d2a1a980b6a1aac0f1aad0f2b6a1368023b6928052a1a380a1a390a1ada0168053d139a042b6a1a930f1a940f2b6a293b692e2a6922112a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1aa1013b3b68072e2a696613eb04370c502c250626051e313b270502013b643d1386041ade036a1a460f1a470f2b6a1334043b6928052a1a2a041a2b041a64016805293b691a1c012a69138b042a69293c1a54020c291a53020c3b2a3c6a3e2c2b6a3d2a1ae10a6a1a0d0f1a0e0f2b6a3d1393041358016a1a050f1a060f2b6a137f023b6928052a1a71091a72091a130168053d1397042b6a1aec0e1aed0e2b6a293b692e2a69312a6922142a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2efad83b3b68072e2a696613fe04370c502c250626051e303b270502013b643d13c5041a15036a1a9d0e1a9e0e2b6a3d13c7041a490a6a1a950e1a960e2b6a293b692c2a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2efa783b3b68072e2a6966131405370c502c250626051e303b270502013b643b19420a43000000|@4589,1,@301,@4590,@4649,@4762,@4650,@4794,@29,@4795,@4805,@4684,@4806,@4838,@4842,@4844,@4689,@4845,@4844,@4614,@4870,@4653,@4890,@4891,@4891,@4614,@4554,@4062,@4653,@4892,@4897,@4801,@4653,@4898,@4909,@4928,@4929,@4930,@4872,@4891,@4844,@4928,@4651,@4931,@4952,@4992,@5004,@5229,@5231,@5348,@5064,@5350,@5351,@5395,@5350,@5396,@5350,@4687,@5350,@5350,@5408,@5409,@5411,@5412,@5414,@5417,@7228,@7229,@7230,@7231,@7242,@7261,@7262,@7263,@4684,@7264,@7265,@4848,@7266,@4866,@7267,@7268,@7269,@4786,@7270,@7274,@7275,@7277,@7278,@7279,@7280,@7281,@7284,@7285,@7286,@7288,@7289,@7291,@7286,@7292,@7293,@7294,@7286,@7295,@7296,@7298,@7286,@7299,@7300,@7287,@7301,@7302,@7303,@7304,@7309,@7310,@7311,@7313,@7314,@7315,@7316,@7317,@7318,@7319,@7320,@7321,@4517,@7322,@7323,@7325,@7326,@7330,@7331,@7332,@7333,@7334,@7341,@7342,@7343,@7344,@7345,@7346,@7343,@7347,@7348,@7349,@7343,@7350,@7351,@7352,@7343,@7353,@7354,@7355,@7142,@7357,@7358,@7359,@5344,@4867,@7360,@7371,@7372,@7373,@7374,@7378,@7379,@7380,@7381,@7386,@7394,@7395,@7398,@7356,@7399,@7406,@7407,@7410,@7411,@7418,@7419,@7422,@7423,@7431,@7432,@7433,@7372,@7379,@7434,@7435,@7436,@7437,@7438,@7439,@7440,@7448,@7468,@5278,@5275,@7469,@7470,@7472,@7474,@7476,@7478,@7480,@7481,@7482,@7482,@7482,@7482,@7484,@7485,@7487,@7488,@7501,@7502,@7503,@7504,@7505,@4614,@7506,@4685,@7507,@7508,@7509,@7510,@7511,@7484,@7512,@7513,@7514,@7514,@7516,@7518,@4153,@7519,@5649,@7520,@4155,@7521,@7522,@4688,@4136,@7523,@4138,@7487,@4135,@7504,@7524,@7525,@7526,@7527,@5516,@7324,@7229,@7528,@7529,@5649,@7530,@7531,@7522,@4782,@5131,@5341,@5031,@7532,@5054,@7533,@7534,@7535,@7430,@7536,@7537,@7538,@7539,@7540,@7541,@7542,@7543,@7544,@7545,@5509,@7323,@7323,@7546,@7547,@7548,@7242,@7549,@7550,@5649,@7551,@7552,@7522,@7553,@7554,@7555,@7556,@7532,@7557,@7533,@7558,@7535,@7559,@7536,@7560,@7538,@7561,@7540,@7562,@7542,@7563,@7544,@7546,@7547,@7548,@7564,@7565,@4931,@7566,@7549,@7550,@5649,@7551,@7552,@7522,@7569,@7570,@4952,@7571,@5523,@5344,@7572,@7577,@7578,@5344,@7579,@7584,@7585,@7586,@7587,@7590,@7591,@7593,@7593,@7589,@4992,@7586,@7590,@7595,@7596,@5649,@7290,@7597,@7522,@5407,@7598,@5948,@7599,@7600,@7297,@4140,@4219,@7601,@7602,@7603,@7604,@7605,@7606,@7607,@7471,@7608,@7609,@7610,@7613,@7614,@4653,@7614,@7615,@7616,@7054,@7620,@7055,@7620,@7056,@7622,@7614,@7615,@7054,@7055,@7056,@7623,@7624,@7324,@7625,@7626,@7627,@7324,@7628,@7629,@7324,@7630,@7631,@7632,@7324,@7633,@7634,@7324,@7635,@7637,@7324,@7638,@7639,@7640,@7641,@7642,@7323,@7643,@7644,@7645,@7646,@7647,@7648,@7649,@7650,@7652,@7653,@7650,@7654,@7655,@7627,@7629,@7632,@7634,@7637,@7639,@7642,@7644,@7647,@7649,@7653,@7655,@7656,@7677,@7695,@7713,@7719,@7724,@7729,@7733,@7718,@7734,@7735,@7721,@7721,@7726,@7244,@7739,@7748,@7750,@7752,@4689,@7753,@4683,@7754,@7760,@7761,@7762,@7763,@7766,@7770,@7772,@7774,@7757,@7775,@5344,@7776,@7777,@7778,@7779,@7780,@7784,@5389,@7785,@7786,@4683,@7787,@7788,@7789,@7789,@7790,@7791,@7802,@7803,@7804,@7806,@7807,@7807,@7808,@7835,@7861,@4154,@7531,@4653,@7885,@7886,@7885,@7887,@7888,@7889,@7890,@7891,@7892,@7893,@7894,@7895,@7896,@7897,@7898,@7899,@7900,@7901,@7902,@7903,@7905,@4851,@7906,@7908,@7909,@7911,@7912,@7914,@7915,@7917,@7918,@7920,@7921,@7923,@7924,@7926,@7927,@7928,@7929,@7930,@7931,@7932,@7933,@7940,@7941,@7945,@4801,@7946,@7948,@7948,@5114,@5112,@7949,@7950,@7951,@7952,@7953,@7954,@7955,@7948,@7956,@7986,@7987,@7988,@7990,@7991,@7993,@7994,@7996,@7997,@7999,@8000,@8002,@8003,@8005,@8006,@8008,@8008,@8009,@8010,@8011,@8012,@8013,@8014,@8015,@8016,@8017,@8018,@8069,@8008,@8070,@8071,@8073,@8073,@8073,@8074,@8075,@8116,@8117,@8123,@8124,@8130,@8131,@8137,@8138,@8154,@8155,@8158,@8159,@8160,@8161,@8162,@8160,@8167,@8168,@8160,@8170,@8171,@8172,@8175,@8179,@8180,@8182,@8185,@8327,@8330,@8584,@8585,@8584,@8586,@8587,@8586,@7515,@8454,@8588,@7529,@8588,@8589,@7530,@8589,@8590,@8591,@5410,@8591,@8592,@8600,@8604,@8605,@8606,@8608,@5206,@8609,@8610,@8611,@8612,@8613,@8613,@8614,@8615,@8615,@8615,@8613,@8616,@8619,@8620,@8621,@8624,@8625,@8626,@8629,@8630,@8631,@8633,@8633,@8634,@8636,@8636,@8636,@8637,@8638,@8639,@8640,@8641,@8644,@8645,@8646,@8648,@8650,@8653,@8655,@8657,@8659,@8663,@8665,@8633,@8666,@16242,@14737,@8590,@18641,@8590,@14739,@14740,@14741,@14740,@14745,@14759,@7430,@9189,@7602,@7602,@7522,@7522,@5649,@5649,@7532,@7532,@7533,@7533,@7958,@7937,@14760,@14761,@8184,@14762,@14763,@14764,@14765,@14766,@14767,@14769,@14770,@14767,@14775,@14776,@8662,@14780,@14781,@14767,@14785,@14786,@7515,@14790,@14791,@8178,@14795,@14796,@8178,@14800,@14801,@8178,@14805,@14806,@8178,@14810,@14811,@8178,@14815,@14816,@8178,@14820,@14821,@8178,@14825,@14826,@8178,@14830,@14831,@14767,@14835,@14836,@7515,@14840,@14841,@7515,@14845,@14846,@7515,@14850,@14851,@14855,@14857,@14858,@14855,@14862,@14863,@14867,@14868,@14872,@14873,@8178,@14877,@14878,@8178,@14882,@14883,@8178,@14887,@14888,@8178,@14892,@14893,@7515,@14897,@14898,@14902,@14905,@14906,@14907,@14908,@4655,@4760,@7996,@14909,@8329,@5475,@14910,@14911,@14913,@14914,@14916,@14917,@14919,@14920,@14923,@14924,@14929,@14930,@14933,@14934,@14935,@14936,@14937,@14938,@14939,@14940,@14942,@14943,@14945,@14946,@14947,@14948,@14950,@14951,@14954,@14955,@14958,@14959,@14961,@14962,@14964,@14965,@14967,@14968,@14969,@14970,@14972,@14973,@14974,@14975,@7515,@8584,@14977,@14986,@14987,@14997,@14998,@15003,@15004,@15006,@15007,@15012,@15013,@15015,@15016,@15018,@15019,@14974,@15021,@8584,@15023,@15012,@15028,@14974,@15030,@8584,@15032,@15006,@15051,@15012,@15056,@15058,@15059,@14974,@15087,@8584,@15089,@15012,@15094,@14974,@15096,@8584,@15098,@15006,@15113,@15012,@15118,@14974,@15120,@8584,@4588| 15232:D16,84|fb1bfa5c2c69fa5c2d69fa5c2e69fa5c2f69fa5c3069fa5c3169fa5c3269fa5c3369fa5c3469fa5c220c69fa5b220d69fa5a220e69fa59220f692f2d30302210220e221131221232220c22122214680d270d4200|@4591,1,@302,@15234,@15240,@15242,@15244,@15246,@15248,@15250,@15256,@15259,@15262,@15265,@15268,@15233| 15233:D6,24|fb082936352a3636fa1a2a69292cfa180c29fa18307d0700|@4641,1,@340,@15271,@4592,@4640| 15234:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@303,@15235,@4592| 15235:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@304,@4596,@17,@4594| 15236:D5,220|fb122c353ba003652c362d372d2b0c292b932a2aa90303facf103b502c2b3bdb299291034229352a36332ba003033c0217333b3bef2b3b3befa0030b333f2c3f2e3b3befed02013b030529680102152d3ba003042f9302012d293cab64250526041e513b6502013b656466026b2c362d382a352a352f2b0c292b932a2aa90303fa6a103b502c2b3bdb299291034529352a36220c2ba003033c0219220c3b3bef2b3b3befa0030c220c3f2c3f2e3b3befed02013b030529680102152d3ba003042f9302012d293cab64250526041e543b6502013b6564270543000000|@4598,1,@305,@4599,@4597| 15237:D4,8|fb02fa1042000000|@4606,1,@306,@4605| 15238:D12,564|fb37d92939293ba003033b02032968013d2a692c36293cb7293ca03b2a692c2806b7293ba003033d020c293da003033e0204293fa0913c2a69293b692d2a69322a69d929360b02001af5013b3b2c1af3010c5029352a362f391ae401299291033029352a362a353da0031c2a3629929103112935293ba403041acc01103b50296402013b640207292503511e2f3b6502012a64d91ab5012db92933b72f2ab82c3b3f2ce350220c392e2aa003043b5002062e1a9b010c50313fb7293fa00313d92938293ba09103061a89010c02013b6502013b3b222135293ca003033b02152a1b204ea003033b020b2a3caa292503511e1c3b646464222198293ba003033b020b22221a52010c50511e363b657881073b22250cf102956d222297293ca003043b50020b2223995022231a2f010c50d929360b020022183b3b2c1a07010c5029352a36222592910311222535293ba40303faf5103b50296402013bd9faee2cb92932b72e2ab82c3b3f2ce35034392e2aa003043b5002052efad60c50303fb7293fa00314d92938293ba0910306fac50c5002023b505102023b50220f352210362211372b2b2bfab86b661064222297293ca003043b50020a222399502223fa9c0c50d929360b020022183b3b2cfa750c5029352a36222592910311222535293ba40303fa63103b50296402013bd9fa5c2cb92932b72e2ab82c3b3f2ce35034392e2aa003043b5002052efa440c50303fb7293fa00314d92938293ba0910306fa330c5002023b505102023b50220f272f43000000|@4612,1,@307,@4613,@3980,@4615,-1,@4618,@4434,@4430,@4432,@4611| 15239:D4,8|fb022bfa0f8a4200|@4619,1,@308,@18917| 15240:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@309,@15241,@4592| 15241:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@310,@4596,@18,@4594| 15242:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@311,@15243,@4592| 15243:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@312,@4596,@19,@4594| 15244:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@313,@15245,@4592| 15245:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@314,@4596,@20,@4594| 15246:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@315,@15247,@4592| 15247:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@316,@4596,@21,@4594| 15248:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@317,@15249,@4592| 15249:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@318,@4596,@22,@4594| 15250:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@319,@15251,@4592| 15251:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@320,@17,@4162,@4596,@4624,@4622| 15252:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@321,@17,@4624| 15253:D17,460|fb262d353ca003043b5002b92c3b3bef293ba003051ac001024728222ab1292808b1293cb2293fb4291ab001a503043b5002041aaa0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a8c013f2d3f2822ec50343f2d282634ec502b95502b2707293b3bef293ba003051a77010249292818b1292808b1293cb2293fb4291a5b01a503043b5002041a550110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a39013f2e2c2818ec502c95502c270828671a2b012b1a2b016b2704102d362e372f38293529932d35322a0c3333692d2b2b1a13010c3035293caa323b3b2ce33335292805ac323fac2a2aa603d2333dac293ba203033c020429fad8a80303faeb103b502928403bdafae52b69220f3b3b2de322123b3b2de3221093293cab29293ba203033b02932213932a2aa90303fac2103b5022142b3bdb29929103702935293b3bef3b2a293ba003032a0220293cb22a3cb2293fb12f2adc28072fb32a2ab1292f2508250826061e233b270665220c3ba00303fa80103b5029220db529920305293ba2020529942811a00308fa6b2afa6c0c020129299203043b500203fa6210220d2a30fa3f0c50260502023b502b3cab2503511e973b6564270702013b270f44|@4626,1,@322,@4627,16777215,@4054,@4628,@4629,@4630,@4631,@4557,@15254,@4597,@4562,@4564,@4565,@4560| 15254:D7,104|fb0c2b3b3bef3b2a293ba003032a0220293cb22a3cb2293fb1312adc28072fb32a2ab1292f2508250826061e233b2706652b363ba00303fa3b103b50292c36b529920305293ba2020529942811a00308fa262afa270c020129299203043b500203fa1d1029270442|@4561,1,@324,@4562,@4564,@4565,@4560| 15255:D5,136|fb0d2b9291037e2b352d2f932a2aa90303fa81103b50302b3bdb299291034f2935292ea003033c0217293b3bef2e3b3befa0030b293f2f3f313b3befed02013b031432932d2aa90303fa4d103b50332e3b34e36402152c3ba00304329302012c293cab64250426031e5e3b64021231932c2aa90303fa21103b50322d3b33e36465646402013b4400|@4633,1,@323,@4597,@4632| 15256:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@325,@15257,@4592| 15257:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@326,@18,@4162,@4596,@4635,@4622| 15258:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@327,@18,@4635| 15259:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@328,@15260,@4592| 15260:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@329,@19,@4162,@4596,@4636,@4622| 15261:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@330,@19,@4636| 15262:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@331,@15263,@4592| 15263:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@332,@20,@4162,@4596,@4637,@4622| 15264:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@333,@20,@4637| 15265:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@334,@15266,@4592| 15266:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@335,@21,@4162,@4596,@4638,@4622| 15267:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@336,@21,@4638| 15268:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@337,@15269,@4592| 15269:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@338,@22,@4162,@4596,@4639,@4622| 15270:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@339,@22,@4639| 15271:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@341,@4644,@4642| 15272:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@342,@18,@4594| 15273:D5,104|fb0f0b020030353ba0031230372993fa632b692c2b452a465026030212303829352993fa532b692d2b452a4650260429352a36313b292da803032a0225292c0c299291030d29352a362a2a2f220f0c6502012b2b3caa2a2a2505250526031e293b66652705440000|@4646,1,@343,@15275,@15274| 15274:D4,24|fb052936932c2aa90303fa18103b502a362d3bdb64420000|@4647,1,@345,@4597| 15275:D4,24|fb052936932c2aa90303fa18103b502a362d3bdb64420000|@4647,1,@344,@4599| 15276:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@346,@4640| 15277:D4,40|fb053c03052c2ca002033b3ba003033c02152c929103052b929102013b03072c2cfa112d7e043b43|@4664,1,@347,@4663| 15278:D3,36|fb082c942c94a003162b932d932aa0030a2d3b2e3b3f2eb3ed02013b6402013b43000000|@4665,1,@348| 15279:D4,8|fb02fa1042000000|@4668,1,@349,@4667| 15280:D5,32|fb0b0b02002efa242e36692b2f3730383139fa1c0c5029352a362a2a69270542|@4709,1,@350,@15281,@4708| 15281:D3,16|fb032c2a360c2c2a35452a3646644300|@4710,1,@351| 15282:D10,212|fb130b0200332a340c5029352a360b02002d353ba0030d2d362e372b2b452a465051024c2d3629353da003043b500203faae103b502936220e932a2aa90303faa3103b503b50220f2b3bdb293ba09103043b500203fa91103b502b3cb122102a3bdb2d3caa22110c302b452a4650260729352a362e353ba00304fa7002482e353fa00304fa66023e2e353ca003182e362f37fa5cfa5e2b22132213221368063c2c2b6a6602202e353ea003182e362f37fa46fa402b22132213221368063e2c2b6a660202fa263b2c2c6a22112a452b46270c1f06|@4711,1,@352,@4712,@4599,@4716,@4719,@15284,@4708,@15283| 15283:D4,32|fb0b0b02002efa242e37692b2f383039313a32360c5029352a362a2a69270542|@4709,1,@355,@15286| 15284:D4,32|fb0b0b02002efa242e37692b2f383039313a32360c5029352a362a2a69270542|@4709,1,@353,@15285| 15285:D3,16|fb032c2a360c2c2a35452a3646644300|@4710,1,@354| 15286:D3,16|fb032c2a360c2c2a35452a3646644300|@4710,1,@356| 15287:D5,56|fb0829362c2a929103043b500203fa34102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465653c2a6929fa1469654200|@4722,1,@357,@4721,@4719| 15288:D3,4|fb023b42|@4727,1,@358| 15289:D5,32|fb0b0b02002efa242e36692b2f3730383139fa1c0c5029352a362a2a69270542|@4709,1,@359,@15290,@4708| 15290:D3,16|fb032c2a360c2c2a35452a3646644300|@4710,1,@360| 15291:D4,48|fb0829362c2a929103043b500203fa2c102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465654200|@4735,1,@361,@4721| 15292:D4,48|fb0829362c2a929103043b500203fa2c102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465654200|@4727,1,@362,@4721| 15293:D4,108|fb0b29382c3bdb2a372d2a929103043b500203fa63102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465653b2b2b6a2c362f2a929103043b500203fa33102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465652a2a69270442000000|@4755,1,@363,@4721| 15294:D3,8|fb032c2ca0430000|@4771,1,@364| 15295:D8,224|fb092c350a0a00230032006b0078007c0080009000b2001400d40028152c28056a28152a28096a6402b328152c28056a28152a28096a6402a42c362d372a920303faa9103b502a35299203043b500203fa9e102e352806a003082e3b3bfa950c0206280b2f3b3b6b28132b2b2e6b2704026b2c362d3728132b2f2c6b65025efa77025afa7302562c3628062a3b6a3e2a2ffa696b6502462c362d372d352806a003082d3b3bfa4d0c0206280b2e3b3b6b28132c2b2d6b6602242c362d382d352806a003082d3b3bfa2b0c0206280b2e3b3b6b28132c2b2d6b660202fa1b430000|@4808,1,@365,@4809,@4816,@4807,@4683,@4786| 15296:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@366,@7| 15297:D17,436|fb102d352806a0f830012d362e3729299291031b29352a362a351aa301a003052a68010207292503511e1a3b6502013b642992910343293529351a8301a003043b5002041a7d0110293729322a929103043b5002041a7001102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b6465656502013b2b299291032a29352a362a351a4301a003142a351a3b01a003043b5002041a2901102a370207292503511e293b6502031a23016429353ea0032a2937322a0c293529353ba003043b5002041a0c011029362a372c362a2a1a04010c28062d2b6a270702582d9203033c022e2d920303faf1103b502d942928ffb7293eb7293ba0299103033c021031920303fad9103b50319329220ea5642704030e3003043b500203fac610fac702132d920303fac3103b502d323bdb28062a2d6a64270502792d352814a0036c2d362e37292ea003043b500203faa0103b2b299291031229362b3caa292b25042504511e113b6502012a652f2aa2032d2b302a929103043b500203fa4a102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565020c2e03043b500203fa4d10fa3e660206280b2e2e2e6b44|@4820,1,@367,@24,@4594,@4721,@25,@4719,@4821,@4825,@4809,@4809,@4827,@4830,@4809,@4834,@4819| 15298:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@368,@25,@4162,@4825| 15299:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@369,@4839,@4838| 15300:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@370,@4842,@4688| 15301:D15,424|fb122c350a0a008c00c000ca00d400d700e000ea00290114009b012c36293ba003032c026a293ba203041a8701103b503b2a1a83010c28142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a5b010c0201293b1a57010c3b1a56010c2b1a55013b2d2d3b3b3c6808280c2a69333b69291a46010c28072a2d3c6b270964f711012b3b6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fafc2e7d06296502dd2c3628062a3b6a6402d32c3628062a3b6a6402c92b02c63bfaef2dfaf06b02bd2c3628062a3b6a6402b32c3628062a3b6a2d3b692a2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa94317d0929270502742c362d3728062b3b6a2a3ba20303fa74103b503b2bfa910c2a2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa470c0201293bfa440c3bfa5c0c2bfa443b2d2d3b3b3c6808280c2a69220d3b6929fa350c28072a2d3c6b270d0202fa3c43000000|@4847,1,@371,@4848,@4850,@4851,@4838,@4865,@4866,@4867,@4868,@4683,@4869,@4846,@4689| 15302:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@372,@4684,@4850| 15303:D14,212|fb0d2b352814a003b92b36293ba00304face02ab3b2a299291031229362b3caa292b25042504511e113b6502012a6529fab2a90303fab1103b502928403bda2bfaaa0c293b2cfaa80c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b024829fa840c29299291031729352a362a353da00309292503511e133b02013b6502013c6403033b0215fa612a2c2f6b3e2f2b6afa5bfa5d2b3b6b293b6966fa58fa522d3b6b292b69662c955028062d2b6a270564020f2b352806a003043b500203fa39102b420000|@4853,1,@373,@4689,16777215,@4854,@4856,@4857,@4862,@15293,@25,@4162,@24,@4852| 15304:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@374,@4851,@4856| 15305:D5,56|fb0a2d9291032c2d352e362a352806a003043b500203fa2c102a362b372f313b2de350303cb12c2a32fa1d0c2b2a69270602013b44000000|@4859,1,@375,@4858,@4857| 15306:D7,72|fb082b9291033f2b352c362a299291032729352a362a35fa3ba003122a35fa34a003043b500203fa2f102a370207292503511e263b650202fa22642afa220c2a2a69270402013b42|@4648,1,@376,@25,@4594,@4719,@4862| 15307:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@377,@4865,@4688| 15308:D4,28|fb072b929103122b352c362a3c692afa170c2a2a69270402013b4200|@4648,1,@378,@4867| 15309:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@379,@4684,@4869| 15310:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@380,@4846,@4688| 15311:D3,8|fb032c2ca0430000|@4771,1,@381| 15312:D4,8|fb02fa1010000000|@4894,1,@382,@4893| 15313:D16,116|fb1bfa7c2a362d6afa7a2b372e6afa782c382f6afa762d39306afa742e3a316afa722f2306326afa6f3231366afa6d3332376afa6b3433386afa69220c34396afa66220d220c3a6afa62220e220d23066afa5d220d3622106a2d2c3131220e220d221231221332220d22122215680d270d420000|@4899,1,@383,@15315,@15316,@15317,@15318,@15319,@15320,@15321,@15323,@15325,@15327,@15329,@15331,@15314| 15314:D5,20|fb07fa1c2a36692a373b2bfa172f7b0504000000|@4908,1,@402,@15333,@4642| 15315:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@384,@4596,@4594| 15316:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@385,@4596,@4594| 15317:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@386,@4596,@4594| 15318:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@387,@4596,@4594| 15319:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@388,@4596,@4594| 15320:D5,72|fb0829372cfa4d0c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa2b102a37296801640207292503511e2a3b6502013b646402013b6442|@4900,1,@389,@4596,@4594| 15321:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@390,@4162,@4596,@4901,@4622| 15322:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@391,@4901| 15323:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@392,@4162,@4596,@4903,@4622| 15324:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@393,@4903| 15325:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@394,@4162,@4596,@4904,@4622| 15326:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@395,@4904| 15327:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@396,@4162,@4596,@4905,@4622| 15328:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@397,@4905| 15329:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@398,@4162,@4596,@4906,@4622| 15330:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@399,@4906| 15331:D7,52|fb0b2b352c362b37fa362b3b6b2c362cfa320c293ba003052a3b69020a2935292f372dfa230c642e362e2bfa1f337b0508000000|@4902,1,@400,@4162,@4596,@4907,@4622| 15332:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa190c2b2a69646502032b3b694400|@4625,1,@401,@4907| 15333:D3,44|fb082c2c2a9291031f2a352b362a352e36a00305312c6902012b2a2a2505250526031e1e3b66020129654400|@4645,1,@403| 15334:D25,240|fb102815faf62d6a2c0a0e002000240028002c003000340038003c0040001c00440048004c005000fad60232fad6022efad6022afad60226fad60222fad6021efad6021afad60216fad60212fad6020efad6020afad60206fad60202fad6293b3bef293ba00304facf024a293db1292808b1293cb2293fb429fac1a503043b500203fabc10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c270829fa8ca003033c0212293b3bef3ba00309293ffa7a3f3bed02013b0304fa740201293bfa720c3bfa720c2f2c3b2d2d3b3b3c6808280c2a69270842|@4911,1,@404,@4684,@4912,@4913,@4914,@4915,@4916,@4917,@4918,@4919,@4920,@4921,@4922,@4923,@4924,@4925,@4926,16777215,@4054,@4062,@4866,@4927,@4910| 15335:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@405,@4839,@4927| 15336:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@406,@4910,@4688| 15337:D3,8|fb032c2ca0430000|@4771,1,@407| 15338:D3,36|fb082c2ca003033c02172c3b3bef2c3b3befa0030b2c3f2d3f2f3b3befed02013b430000|@4963,1,@408| 15339:D4,8|fb02fa1042000000|@5002,1,@409,@4667| 15340:D3,8|fb022b9291420000|@5008,1,@410| 15341:D3,12|fb052b352c362a2a69654200|@5008,1,@411| 15342:D3,12|fb052b352c362a2a69654200|@5008,1,@412| 15343:D3,8|fb022b3ba0420000|@5073,1,@413| 15344:D4,8|fb03fa102c694200|@5075,1,@414,@15345| 15345:D3,64|fb0a2c2c2a2aa003033c02302a9291032a29929103222a352b362b352c362c2b3136350c030d2b2a2506250626041e2a3b02013b270402013b02013b65430000|@5076,1,@415| 15346:D4,12|fb04fa142c2b366a42000000|@5078,1,@416,@15347| 15347:D13,144|fb112b363ca20304fa9202832b35293ba00304fa8b02772c363ca20304fa85026d2c3529352a362f363cab293ba20304fa76023b293cab2c2a69642f36360c2a3cab2c2a693137353236363336373436383b2c2c2c6b662a0c642a2a0c6429fa4b69fa4c2a69fa4c2a692f2a692707fa472a693b3c3b3b2d6805293b69fa3d2a69fa3d2a693b3c3b3b2d6805270a6442|@5080,1,@417,@5081,@5083,@5081,@5086,@5089,@5091,@5092,@5093,@5091,@5079| 15348:D3,4|fb023e42|@5097,1,@418| 15349:D3,4|fb023c42|@5099,1,@419| 15350:D3,8|fb022b3ba0420000|@5235,1,@420| 15351:D3,8|fb022b9291420000|@5255,1,@421| 15352:D3,8|fb022b6801420000|@5255,1,@422| 15353:D3,8|fb022b3542000000|@5255,1,@423| 15354:D4,8|fb03fa102c694200|@5258,1,@424,@15355| 15355:D3,36|fb052c2ca003033c02182c929103122b9291030a2c352c352b36352d7e043b02013b4300|@5259,1,@425| 15356:D4,8|fb03fa102c694200|@5261,1,@426,@15357| 15357:D14,164|fb0c2b363ca20304faa602952b35293ba00304fa9f02892c363ca20304fa99027f2c3529352e363cab2a2a69662b36360c29353ba00354293929929103302936929103272935353ea0031c29353629fa6ba003033c020d29fa66a003033c020429fa61a06402013b9102013b02013b03162afa5469fa552a69fa552a693b3e3c3b2d68056602012a64020129293b69fa432a69fa432a693b3c3b3b2d6805270564420000|@5263,1,@427,@5081,@5264,@5081,@4133,@4216,@4184,@5267,@5268,@5093,@5091,@5262| 15358:D3,4|fb023e42|@5272,1,@428| 15359:D3,4|fb023c42|@5274,1,@429| 15360:D4,8|fb02fa1042000000|@5363,1,@430,@5362| 15361:D3,8|fb032c2ca0430000|@4771,1,@431| 15362:D4,8|fb02fa1042000000|@5366,1,@432,@5365| 15363:D4,8|fb02fa1042000000|@5367,1,@433,@4667| 15364:D3,4|fb023d42|@5369,1,@434| 15365:D3,4|fb023c42|@5370,1,@435| 15366:D13,212|fb192dfadbfadd0c2cfadda003033c02122c3b3bef3ba003092c3ffacb3f3bed02013b0304fac502012c3bfac30c3bfac30c2c2c3b2d2d3b3b3c6808280c2a6933fa9dfab30c32fa9fa003033c0212323b3bef3ba00309323ffa8d3f3bed02013b0304fa870201323bfa850c3bfa8d0c2c2c3b2d2d3b3b3c6808280c2a692210fa5efa7c0c220ffa5fa003033c0214220f3b3bef3ba0030a220f3ffa4b3f3bed02013b0304fa450202220f3bfa420c3bfa520c2c2c3b2d2d3b3b3c6808280c2a69293b69302a69220e2a6928142a3b6a27154400|@5398,1,@436,@4684,@4806,@4062,@4866,@4838,@5399,@4845,@5400,@5401,@5397| 15367:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@437,@5399,@4688| 15368:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@438,@5400,@4688| 15369:D15,324|fb0f2c350a0a0086009e00a200a600a900b700bb00d30014003a012c36293ba003032c0265293ba203041a2301103b503b2a1a1f010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faf80c0201293bfaf50c3bfaf50c2bfaf53b2d2d3b3b3c6808280c2a69333b6929fae70c28072a2d3c6b27096402b62b352806a003092b3b3cfad32e7b0504280b2c3b3c6b029efac9029afac502962b02932bfac13b6a280dfabf2b6a640285fab002812b352806a003092b3c3cfa9e2e7b0504280b2c3c3c6b02692c37293ba20303fa6d103b503b2afa920c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa430c0201293bfa400c3bfa400c2bfa403b2d2d3b3b3c6808280c2a69333b6929fa320c28072a2d3c6b270a0202fa2d43|@5403,1,@439,@4848,@5404,@4851,@4838,@5405,@4866,@4867,@4807,@4689,@5406,@5407,@5402| 15370:D5,32|fb062c2ca003033b0213280bfa1e2e3c6b2d3caa292efa180c2b2a6966430000|@4843,1,@440,@4684,@5404| 15371:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@441,@5405,@4688| 15372:D5,36|fb072c2ca003033b02172c3caa280bfa1f2b3c6b2e3caa292ffa190c2b2a692704430000|@4843,1,@442,@4684,@5402| 15373:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@443,@5397,@4688| 15374:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@444,@5408,@4688| 15375:D4,8|fb02fa1042000000|@5413,1,@445,@4667| 15376:D23,612|fb282c299291031b29352a362a351a5f02a003052a68010207292503511e1a3b6502013b64293ba0034b1a4702299291031b29352a362a351a3502a003052a68010207292503511e1a3b6502013b64293ba003041a2102103b503b50293529351a0d02a003043b5002041a0f02103b502937650217293529351af401a003043b5002041af601103b502937642e299291031b29352a362a351ae501a003052a68010207292503511e1a3b6502013b64293ba003051acd010217293529351ac001a003043b5002041ab201103b502937642b0309311ab1010c2a0c02013b0b0400220e220e220e2c220e37220f382210361a99010c5029352a362b372c382b1a8f010c29353da0033b2b3ba003032d0205280f2c2f6a220e030a291a6b010c220d0c02013b0b02002d3022192c2218361a62010c5029352a361a5d012a2c6a2707f71c013b06293b3b1a5101e3502b3ba203033c02052b1a4701a803041a4501103b503b502b28403bda2b2a1a3a010c2a93293ba003051a330102132928403bda2c3b3b2c3b3b30eb5029955029642f3ba203033c02052f1a0601a803041a0401103b503b502f28401a0501da31299291031529352a362a2e2efaf90c50292503511e143b6502013b642a933b2a293ba003032a021a293cb22a3cb22f2a3bdb292e69292d2506250626041e1d3b270465220d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa9a0c020129220e3ba00303290206280f220f2b6a221a030929fa500c22190c02013b0b02002d221322252c222436fa470c5029352a36fa67220f22152c2e68052713270f440000|@5419,1,@446,@48,@5420,@5469,@4594,@70,@5473,@5475,@5681,@7188,@6175,@15962,@7192,16777215,@4557,@7209,@4725,@4689,@7218,@4851,@15377| 15377:D13,212|fb0e3b2a390c29920303fad4103b503b5029920303facd103b503b5029352b38299291031a29352a362a35fabba003052a68010207292503511e193b6502013b64293ba003033b021829352935fa99a003043b500203fa94103b5029372968016529929103092935fa862a69640202fa833b2a0c2f37353ba00304fa7b02472f37353fa00304fa70023c2f37353ca003162f3736303737fa632a3336333068053c2c2b6a66021f2f37353ea003162f3736303737fa4a2a3336333068053e2c2b6a660202fa322a2afa3a0c2806302b6a27084200|@7191,1,@1039,@7222,@4809,@24,@4594,@15292,@4707,@4719,@15280,@15289,@7221| 15378:D3,4|fb023b42|@5424,1,@447| 15379:D3,4|fb023b42|@5424,1,@448| 15380:D3,4|fb023b42|@5424,1,@449| 15381:D3,4|fb023b42|@5424,1,@450| 15382:D3,4|fb023b42|@5474,1,@451| 15383:D167,3904|fb402b350a16009600e100a301e5013302e70353042c00e2043906750600074a077809d30a280b740b8f0b310c950d140e930e2b362c3729352806a00305292c0c022729352808a00305292c0c021b292c0c291af60e691af60e2a691af50e2a693b3d3c3b2d680527042b2d1ae90e0c291ae80e0c1ae80e2a691ae70e2a693b3d3c3b2d6805293b691adc0e2a69302a693b3d3b3b2d6805270bf79f0e2b362c372d382a3b692c2a692b2a6929301abb0e0c291aba0e0c1aba0e2a693b3c3c3b2d6805291ab10e693b3d3c3b2d6805293b691aa70e2a691aa60e2a693b3d3b3b2d6805270ff7540e2b3629352a362b372c382d392b353ba003382b36290a07000e00130018001d00220027002c001a730e021c1a720e02171a710e02121a700e020d1a6f0e02081a6e0e02031a6d0e64022e2b36293da003051a640e0221293ca003051a5e0e0217293fa003051a580e020d293ea003051a520e02031a510e642b3b692e2a69302a692d2a693e2e692a220d1a3f0e0c291a3e0e0c1af60d2a693b3c3c3b2d6805291aed0d693b3d3c3b2d6805293b691ae30d2a69312a693b3d3b3b2d68052715f7920d2b362c37292c361a080e0c291a070e0c1a070e2a693b3c3c3b2d68052e300c291afb0d691afb0d2a691afa0d2a691af90d2a692e2a693b3e3b3b2d6805270cf7500d2b362c372d38291ae20d0c2b3b692d2a693e2c692a311ad70d0c291ad60d0c1a660d2a693b3c3c3b2d6805291a5d0d693b3d3c3b2d6805293b691a530d2a69312a693b3d3b3b2d68052710f7020d2b362c372d382e392c3ba003051a9a0d021a2c3ca003051a940d02102c35293ca003051a8c0d02031a8b0d64293b3bef293ba003051a820d0246293cb1292808b1293cb2293fb4291a730da503043b5002041a6d0d103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c95502c27083e2a692d352e362f372b220c0c2b929103092b3529220e0c6402031a280d2b9203052b3ba202052b942811a0030a1a190d2c1a190d0c02012b293d1a140d0c3e2a69291a100d691a100d2a691a0f0d2a691a0e0d2a69302a691a0a0d2a691a090d2a691a080d2a69220c2a691a030d2a691a020d2a693b3c3c3b2d6805221935221a36221b372b22200c2b929103092b352922220c6402031aab0c2b9203052b3ba202052b942811a0030a1a9c0c2c1a9c0c0c02012b293d1a970c0c3e2a69291a930c691a930c2a691a920c2a691a910c2a69302a691a8d0c2a691a8c0c2a691a8b0c2a69220c2a691a860c2a691a850c2a693b3c3c3b2d6805222e22310c291a770c691a770c2a691a760c2a692d2a691a720c2a691a710c2a69221b2a691a6c0c2a6922312a693b3e3b3b2d6805273af74e0b2b362c372d382b2d0c293b691a4f0c2a691a4e0c2a693b3d3b3b2d68052f320c293b691a380c2a691a3b0c2a693b3d3b3b2d680533220e0c293b691a200c2a691a270c2a693b3d3b3b2d6805293b691a0c0c2a69302a691a040c2a69220e2a693b3b3c3b2d68052717f7e20a2b362c372a9203132a9203043b5002041aef0b103b502a3ba002013b036429299291031a29352a362a352f38a003052a68010207292503511e193b6502013b64293ba0030b2b1abd0b0c3e2a6964022f293529352e38a003043b5002041aaa0b103b50293729353ca0030a2936280c2a6930327d092d1a8d0b0c3e2a6964656402092a1a800b0c3e2a696465f7530a2b3629353ea003061a740bf7450129353ca003662936293c1a080b0c293b3bef293ba003051a5b0b024928072ab1292808b1293cb2293fb4291ad30aa503043b5002041acd0a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a250b3f2d3f2807ec50313f2d280b34ec502b95502b27073e2a69270402d929353da003662936293c1a9c0a0c293b3bef293ba003051af30a024928052ab1292808b1293cb2293fb4291a670aa503043b5002041a610a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501abd0a3f2d3f2805ec50313f2d280934ec502b95502b27073e2a692704026d2936293c1a360a0c293b3bef293ba003051a910a02523e2ab1292808b1293cb2293fb4291a020aa503043b5002041afc09103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2841e4502b28052872e4502b28062867e450313f2d280734ec502b95502b27073e2a69270464f7fc083b2a1a330a0c291a320a0c1a26092a693b3c3c3b2d6805291a1d09693b3d3c3b2d6805293b691a13092a691a120a2a693b3d3b3b2d68052709f7c0082b362c372d382b2d0c2a3c1a82090c293b3bef293ba003051aed090247402ab1292808b1293cb2293fb4291a4e09a503043b5002041a4809103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ab8093f2d3f40ec50313f2d280e34ec502b95502b27073e2a692f320c291a9e09691a9e092a692c2a69312a691a97092a693b3e3b3b2d6805270ef735082b362c372d382b2d0c2b3c1af7080c2b03051a780902031a7709293b691a75092a692c2a691a71092a6927051a6e090c3e2a69293b691a68092a692d2a693b3d3b3b2d68052709f7eb072b3629352a362b372c382d392e3a2f23062a3ba003051a420902031a29093b2d1a3c090c3b3b3b3b2d6805313b3bef293ba003051a2c0902453c2ab1292808b1293cb2293fb4291a5d08a503043b5002041a5708103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2822e45022103f2d280534ec502b95502b2707293b3bef293ba003051ad9080246293cb1292808b1293cb2293fb4291a0a08a503043b5002041a0408103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2822e4502c95502c27083e2a693e3169323c1ade070c293b3bef293ba003051a7d08024b292808b1292808b1293cb2293fb4291aa907a503043b5002041aa307103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a3d083f2e2c2808ec502c95502c27083e2a6922101a2c080c3f2841bd293b280c3bf02a3b3b2809f0501a1b083f2c3f2808ec502a280c2828e4502a95503e2b692c221a1a05080c291a04080c2b2a693b3c3c3b2d680528052841bd293b28103bf02a3b3b280ff0501ae8073f2c3f280eec502a2812285be4502a95503e2b69221c1ad3070c291ad2070c2b2a693b3c3c3b2d6805291ac707691a37072a69322a691a2f072a6922132a691a26072a6922192a691a1d072a69221c2a691a14072a691a9f072a691a0a072a691a99072a691a00072a6922272a691af7062a691a8a072a693b3f3b3b2d6805223422370c293b691a7a072a692c2a693b3d3c3b2d6805273af7bd052b362c372a350a0900240029002e00330038003d004200120054002a36293ba003051a480702031a47076402331a4507022e1a440702291a430702241a4207021f1a4107021a1a400702152a36293ba003051a380702031a37076402031a3507293b3bef293ba003051a2d0702593f2ab1292808b1293cb2293fb4291afa05a503043b5002041af405103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f284ce4502b2805286fe4502b28062861e4502b28072864e450313f2d280834ec502b95502b27073e2a692d352e362f372b330c2b929103092b3529220c0c6402031a9d052b9203052b3ba202052b942811a0030a1a8e052c1a8e050c02012b293d1a89050c3e2a69291a8505691a85052a691a84052a691a83052a69302a691a7f052a691a7e052a691a7d052a69220c2a691a78052a691a77052a693b3c3c3b2d6805293b691a54062a6922162a693b3e3b3b2d6805271df762042b363e2841bd293b28083bf02a3b3b2805f0502a3f284ce4502a2805284fe4502a2806284fe4502a28072850e4502a28082828e4502a95503e2b692c2e1a06060c291a05060c2b2a693b3c3c3b2d68052707f70d042b362c372a2c371aef050c3b3d3c3b2d68052b2e0c293b693b3d3c3b2d6805291ada05691ada052a691ad9052a691aec042a69302a691ad0052a691acf052a693b3b3c3b2d6805270ef7c1032b36292b0c291abc05691abc052a693b3c3c3b2d68052704f7a6032b362c372d382a352b353b3b292ca903032a023a293cb12f362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293c1a22040c2c3c1a1c040c291a5305691a53052a692c2a691a4f052a6927051a9c040c3e2a692e320c31330c291a3e05691a3e052a691a3d052a691a3c052a692e2a69302a693b3e3b3b2d68052710f704032b362c372d382b350a0900240029002e00330038003d004200120054002b36293ba003051a8d0402031a8c046402331a8a04022e1a890402291a880402241a8704021f1a8604021a1a850402152b36293ba003051a7d0402031a7c046402031a7a04293b3bef293ba003051abe04024928052ab1292808b1293cb2293fb4291a3e03a503043b5002041a3803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a88043f2d3f2805ec50313f2d280934ec502b95502b27073e2a692d352e362f372b340c2b929103092b3529220d0c6402031af2022b9203052b3ba202052b942811a0030a1ae3022c1ae3020c02012b293d1ade020c3e2a69291ada02691ada022a691ad9022a691ad8022a69302a691ad4022a691ad3022a691ad2022a69220c2a691acd022a691acc022a693b3c3c3b2d68052219221c0c293b691af0032a691aef032a691aee032a692e2a691aea032a69221b2a693b3e3b3b2d68052723f7a0012b362c372d382b9203052b3ba202052b942811a0030a1a4f022c1a4f020c02012b293d1a4a020c2b9203052b3ba202052b942811a0030a1a2e022c1a2e020c02012b293d1a29020c291a9003691a90032a692d2a691a8c032a6927071aa9020c3e2a692c2f0c291a7e03691a7e032a692c2a693b3e3b3b2d68052709f721012b362c372903051a670302031a6603293b3bef293ba003051abe010246293cb1292808b1293cb2293fb4291aaf01a503043b5002041aa901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c95502c27083e2a692e301a0e030c291a0d030c2b2a693b3c3c3b2d6805270902a22b362c37290a0e00210026002b00300035003a003f00440049001c004e00530058005d001adb02023f1ada02023a1ad90202351ad80202301ad702022b1ad60202261ad50202211ad402021c1ad30202171ad20202121ad102020d1ad00202081acf0202031ace022b3b693e2b692a2f1ac7020c291ac6020cfa5f2a693b3c3c3b2d680529fa57693b3d3c3b2d6805293b69fa4e2a69312a693b3d3b3b2d6805270e42000000|@5478,1,@452,@5267,@5268,@5093,@5479,@5483,@5268,@5093,@5485,@5486,@5487,@5093,@5267,@5485,@5488,@5490,@5491,@5492,@5493,@5494,@5495,@5496,@5497,@5498,@5499,@5500,@5501,@5502,@5503,@5504,@5505,@5506,@5267,@5268,@5093,@5268,@5508,@5524,@5525,@5526,@5527,@5528,@5529,@4133,16777215,@4054,@5530,@4564,@4565,@4569,@5531,@5091,@5092,@5268,@5091,@5092,@5268,@5534,@5535,@5536,@5092,@5091,@5092,@5091,@5091,@5091,@5537,@5539,@5541,@4816,@5543,@4594,@5552,@5554,@5555,@5556,@5557,@5558,@5559,@5561,@5089,@5091,@5562,@5564,@4062,@4186,@4184,@4052,@5565,@5566,@5567,@4127,@5600,@5601,@5602,@5603,@5604,@5605,@5606,@5607,@5608,@5612,@5090,@5614,@5485,@5616,@5617,@5618,@5619,@5620,@5621,@5622,@5623,@5624,@5625,@5626,@5627,@5091,@5628,@5629,@5630,@5634,@5485,@5638,@5485,@5640,@5267,@5642,@5644,@4140,@5646,@5267,@5091,@5092,@5268,@5647,@5091,@5648,@5091,@5091,@5650,@5645,@5651,@5267,@5091,@5652,@5653,@5654,@5655,@4912,@4913,@4914,@4915,@4916,@4917,@4918,@4919,@4920,@4921,@4922,@4923,@4924,@4925,@5656,@5477| 15384:D6,64|fb0b2c929103352c352d36293ba0030b2a35292f0c293b6965021e2a35292f0c29fa29693b3b3b3b2d68052d32fa210cfa222a692b2a6927066502013b430000|@5481,1,@453,@5480,@5479,@5091| 15385:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@454,@5483,@5267| 15386:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@455,@5480,@5486,@5091| 15387:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@456,@5487,@5267| 15388:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@457,@5480,@5502,@5091| 15389:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@458,@5503,@5267| 15390:D6,72|fb0b2c9291033f2c352d36293ba003102a3529352a362b37310c293b696502232a3529352a362b37310c29fa27693b3b3b3b2d68052d32fa1f0cfa202a692b2a6927066502013b43|@5481,1,@459,@5480,@5504,@5091| 15391:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@460,@5505,@5267| 15392:D39,1896|fb162b350a0c001b012101b10141022f03a3031704ba04bb0518005e06e2062b362c372a3da003051a490702212a3ca003051a430702172a3fa003051a3d07020d2a3ea003051a370702031a3607293b3bef293ba003051a2e0702573f2ab1292808b1293cb2293fb4291a1f07a503043b5002041a190710292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2854e4502b28052865e4502b28062873e4502b28072874e450313f2d280834ec502b95502b27072c03051adb0602031ada062a3b3bef2a3b3bef2a3ba003032b024f293ba003032c02472a2ab1292808b1293cb2293fb4291aa506a503043b5002041a9f0610292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c27082708f745061a7706f73f062b36290a07000e00130018001d00220027002c001a6106021c1a600602171a5f0602121a5e06020d1a5d0602081a5c0602031a5b06293b3bef293ba003051a53060249292805b1292808b1293cb2293fb4291a0f06a503043b5002041a090610292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a15063f2e2c2805ec502c95502c270866f7af052b36290a07000e00130018001d00220027002c001ad105021c1ad00502171acf0502121ace05020d1acd0502081acc0502031acb05293b3bef293ba003051ac7050249292809b1292808b1293cb2293fb4291a7f05a503043b5002041a790510292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a89053f2e2c2809ec502c95502c270866f71f052b36293da003051a22050221293ca003051a1c050217293fa003051a1605020d293ea003051a100502031a0f05293b3bef293ba003051a430502573f2ab1292808b1293cb2293fb4291af804a503043b5002041af20410292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2854e4502b28052865e4502b28062873e4502b28072874e450313f2d280834ec502b95502b2707293b3bef293ba003051ae2040249292809b1292808b1293cb2293fb4291a9204a503043b5002041a8c0410292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11aa4043f2e2c2809ec502c95502c27082705f731042b36293da003051a8c04020d293ca003051a860402031a8504293b3bef293ba003051a7d040249292809b1292808b1293cb2293fb4291a1d04a503043b5002041a170410292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a3f043f2e2c2809ec502c95502c270866f7bd032b36293ca003051a2804020d293da003051a220402031a2104293b3bef293ba003051a19040249292809b1292808b1293cb2293fb4291aa903a503043b5002041aa30310292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11adb033f2e2c2809ec502c95502c270866f749032b36290a07000e00130018001d00220027002c001a6b03021c1a6a0302171a690302121a6803020d1a670302081a660302031a6503293b3bef293ba003051a8d03025c293fb1292808b1293cb2293fb4291a1a03a503043b5002041a140310292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2852e4502c2a3cb12865e4502c2a3db12861e4502c2a3eb1286ce4502c95502c270866f7a6022b36293da003051aa9020221293ca003051aa3020217293fa003051a9d02020d293ea003051a970202031a9602293b3bef293ba003051af60202573f2ab1292808b1293cb2293fb4291a7f02a503043b5002041a790210292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2854e4502b28052865e4502b28062873e4502b28072874e450313f2d280834ec502b95502b2707293b3bef293ba003051a9502025c293fb1292808b1293cb2293fb4291a1a02a503043b5002041a140210292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2852e4502c2a3cb12865e4502c2a3db12861e4502c2a3eb1286ce4502c95502c27082705f7a5012b36290a07000e00130018001d00220027002c001ac701021c1ac60102171ac50102121ac401020d1ac30102081ac20102031ac101293b3bef293ba003051af501025c293fb1292808b1293cb2293fb4291a7601a503043b5002041a700110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c270866f702012b36293da003051a5d01020d293ca003051a570102031a5601293b3bef293ba003051a7201025a293fb1292808b1293cb2293fb429faf0a503043b500203faeb10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c270866027e2b36293ca00304faea020b293da00304fae50202fae5293b3bef293ba00304faf6025a293fb1292808b1293cb2293fb429fa70a503043b500203fa6b10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c27086642|@5510,1,@461,@5497,@5498,@5499,@5500,@5501,@5511,16777215,@4054,@5512,@5513,@5514,@5490,@5491,@5492,@5493,@5494,@5495,@5496,@5515,@5516,@5511,@5516,@5517,@5518,@5519,@5516,@5520,@5521,@5522,@5516,@5523,@5511,@5523,@5509,@5509,@5509| 15393:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@462,@5480,@5524,@5091| 15394:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@463,@5525,@5267| 15395:D24,1012|fb1c2b9203852b9203052b3ba202052b942811a0030a1ae7032c1ae7030c02012b293d1ae2030c293b3bef293ba003051ad90302523e2ab1292808b1293cb2293fb4291aca03a503043b5002041ac403103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f284ce4502b28052849e4502b28062854e450313f2d280734ec502b95502b270766f765032b92030d29371a84031a85031a86036b103b503b502b942928ffb7293eb7293da003b32e2d360c293b3bef293ba003051a6603024828062ab1292808b1293cb2293fb4291a3e03a503043b5002041a3803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a30033f2d3f2806ec50313f2d4034ec502b95502b2707293b3bef293ba003051a14030246293cb1292808b1293cb2293fb4291ae902a503043b5002041ae302103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2822e4502c95502c27082704f78e022e942928ffb7293eb7293ca0f81b01319329920305293ba2020529942811a0030a1a7b022a1a7b020c020129299203043b5002041a9402103b50293fac292810a203032902022810293ca0030d220c3bdc1a7b022a3bdb64026c293ba003051a71020262293ba803043b5002041a6702103b50292808b1293cb2293fb4291a2e02a503043b5002041a2802103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503b302aa503043b500215293fb122142bdc2e2b2be4502b3cb12503511e1b51502b95502b2706291a11021a12020c293b3bef293ba003051a0902024928092ab1292808b1293cb2293fb4291ac101a503043b5002041abb01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ad3013f2d3f2809ec50313f2d280d34ec502b95502b27072707f763013192030d2f371a84011a85011a86016b103b503b5031942928ffb7293eb7293ba003463492030d32371a61011a62011a63016b103b503b50349329920305293ba2020529942811a0030a1a28012a1a28010c020129299203043b5002041a4101103b50293ca86502013b03f43492030d32371a18011a19011a1a016b103b503b5034352992299103222a92030b3437fafcfafe1aff006b103b503b502a942928ffb7293eb7293da06602013b03ad2a220c360c293b3bef293ba00304faff024628052ab1292808b1293cb2293fb429fab4a503043b500203faaf103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050facc3f2d3f2805ec50313f2d280934ec502b95502b2707293b3bef293ba00304fa8c0244293cb1292808b1293cb2293fb429fa62a503043b500203fa5d103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2822e4502c95502c270827040202fa64650202fa6366666642000000|@5546,1,@464,@4564,@4565,@4569,@5547,16777215,@4054,@4813,@4814,@4810,@5548,@4127,@4560,@4064,@4062,@4056,@4051,@4053,@5549,@5550,@5545,@5545| 15396:D4,8|fb022bfa0f8a4200|@5551,1,@465,@18918| 15397:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@466,@5480,@5557,@5091| 15398:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@467,@5558,@5267| 15399:D16,220|fb192b3ba003033b02cf2b352c362a352b36303cfad20c293b3bef293ba00304faca024e3e2ab1292808b1293cb2293fb429fabca503043b500203fab710292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2841e4502b28052872e4502b28062867e450313f2d280734ec502b95502b27073e2a692dfa800c29fa800cfa812a693b3c3c3b2d6805293b69fa772a692f2a69220c3ba00304fa6e02013b220e92919103033b0202fa63293ba003032a02052a2afa5b0c293ba003032c02052c2afa520c3b3f3b3b2d680522173caa292214fa450c2b2a692716430000|@5569,1,@468,@4569,@5556,16777215,@4054,@5570,@5591,@5535,@5091,@5592,@5596,@5599,@5568,@5567| 15400:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@469,@5571,@5480,@5570,@5091| 15401:D21,292|fb132b353da003c62b362c372a3c1a1f010c293b3bef293ba003051a1601024628082ab1292808b1293cb2293fb4291a0601a503043b5002041a000110292841bd2a3cb22a2a3b3bf02b3b3b32f050fae33f2d3f2808ec50313f2d280c34ec502b95502b2707293b3bef293ba00304facf0242293cb1292808b1293cb2293fb429fab5a503043b500203fab010292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a285be4502c95502c27083e2a692ffa890c29fa890c2b2a693b3c3c3b2d6805270b02522b353ba003402b362c3729fa710c2bfa710c29fa710cfa722a69fa722a69fa722a69fa6a2a69fa6e2a69293ba00303300205302afa640cfa652a693b3c3c3b2d6805270c020c2b353ca00304fa540202fa5442000000|@5573,1,@470,@4569,@5574,16777215,@4054,@4184,@5575,@5576,@5577,@5584,@5585,@5093,@5091,@5586,@5090,@5588,@5093,@5589,@5572| 15402:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@471,@5571,@5480,@5575,@5091| 15403:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@472,@5576,@5531| 15404:D7,36|fb062b9291031b2b36293ba00304fa20020d29fa1f0cfa202a69fa202a69656402013b42|@5481,1,@473,@5579,@5577,@5091,@5578| 15405:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@474,@5571,@5581,@5584,@5091| 15406:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@475,@5585,@5267| 15407:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@476,@5588| 15408:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@477,@5591,@5531| 15409:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@478,@5599| 15410:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@479,@5568| 15411:D4,28|fb072b929103132b352c3628082b692afa160c2a2a69270402013b42|@4648,1,@480,@5601| 15412:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@481,@5480,@5603,@5091| 15413:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@482,@5604,@5267| 15414:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@483,@5571,@5480,@5606,@5091| 15415:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@484,@5607,@5531| 15416:D6,64|fb0b2c929103352c352d36293ba0030b2a35292f0c293b6965021e2a35292f0c29fa29693b3b3b3b2d68052d32fa210cfa222a692b2a6927066502013b430000|@5481,1,@485,@5480,@5628,@5091| 15417:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@486,@5629,@5267| 15418:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@487,@5631,@5630,@5091| 15419:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@488,@5480,@5654,@5091| 15420:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@489,@5655,@5267| 15421:D6,60|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa29693b3b3b3b2d68052c31fa210cfa222a692b2a6927056502013b430000|@5481,1,@490,@5480,@5656,@5091| 15422:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@491,@5477,@5267| 15423:D16,184|fb1d2c3cfabe0c293b3bef293ba00304fab6024628092ab1292808b1293cb2293fb429faa7a503043b500203faa2103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa833f2d3f2809ec50313f2d280d34ec502b95502b27073e2a6931fa740c29fa740cfa752a693b3c3c3b2d68053332360c293b693b3d3b3b2d6805293b69fa5d2a69fa5d2a69fa5d2a69fa5d2a69fa552a69322a69fa4e2a69fa522a69fa522a69fa422a6922122a693b3c3b3b2d68052717440000|@5659,1,@492,@4569,@5660,16777215,@4054,@5661,@5662,@5535,@5485,@5663,@5091,@5610,@5658,@5612| 15424:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@493,@5571,@5480,@5661,@5091| 15425:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@494,@5662,@5531| 15426:D18,356|fb252b353ba0f820012b362c372d382e392b3c1a5a010c293b3bef293ba003051a5101024928092ab1292808b1293cb2293fb4291a4101a503043b5002041a3b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a1b013f2d3f2809ec50313f2d280d34ec502b95502b27073e2a69301a0b010c291a0a010c1a0a012a693b3c3c3b2d6805323cfae50c293b3bef293ba00304faf50246280c2ab1292808b1293cb2293fb429facea503043b500203fac9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fac23f2d3f280cec50313f2d281034ec502b95502b27073e2a69220c2211360c293b69faa32a69faa32a69fa9b2a692e2a69fa942a69fa982a69fa8c2a69220d2a69fa842a69fa8c2a69fa8c2a69fa782a6922162a693b3c3b3b2d6805271f02392b353da003082b36292b362d7d042b353ea003162b36292b36fa600cfa612a693b3b3c3b2d680566020f2b362c372d382b2b2b2f37317b05064200|@5665,1,@495,@4569,@5660,16777215,@4054,@5666,@5667,@5535,@5668,@5091,@5669,@5610,@5658,@5612,@5671,@5664| 15427:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@496,@5571,@5480,@5666,@5091| 15428:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@497,@5667,@5531| 15429:D20,428|fb222c9291f8a1012c352d36293ba003c82a352b362c372a3c1a9c010c293b3bef293ba003051a9301024928052ab1292808b1293cb2293fb4291a8301a503043b5002041a7d01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a5d013f2d3f2805ec50313f2d280934ec502b95502b27073e2a692f1a4d010c291a4c010c1a4c012a693b3c3c3b2d6805280c326922100c293b693b3d3b3b2d6805293b691a30012a691a2f012a691a2e012a691a2d012a691a24012a69322a691a24012a691a17012a6922102a693b3b3b3b2d6805293b69271902cd2a352b362c372a3cfad50c293b3bef293ba00304facd024628052ab1292808b1293cb2293fb429fabea503043b500203fab9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa9a3f2d3f2805ec50313f2d280934ec502b95502b27073e2a692ffaab0c29faab0cfa8c2a693b3c3c3b2d6805280c326922100c293b693b3d3b3b2d6805293b69fa712a69fa712a69fa712a69fa712a69fa692a69322a69fa6a2a69fa5e2a6922102a693b3b3b3b2d680529fa62693b3b3b3b2d6805221b2220fa580cfa592a692b2a69271d6502013b4300|@5481,1,@498,@4569,@5555,16777215,@4054,@5673,@5674,@5535,@5485,@5663,@5091,@5610,@5612,@5675,@5676,@5672,@5671,@5091| 15430:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@499,@5571,@5480,@5673,@5091| 15431:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@500,@5674,@5531| 15432:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@5481,1,@501,@5571,@5480,@5675,@5091| 15433:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@502,@5676,@5531| 15434:D4,44|fb0d0b020034333c2c34342210220cfa270c5029352a362a352b362c37220d2c452a462b472d4827081f0700|@5683,1,@503,@5682| 15435:D25,452|fb2e0b0300220d220d2b220c220c1abf010c5029352a362b37220e03033c020129f8950133299291031b29352a362a351aa101a003052a68010207292503511e1a3b6502013b64293ba0034b1a8901299291031b29352a362a351a7701a003052a68010207292503511e1a3b6502013b64293ba003041a6301103b503b50293529351a4f01a003043b5002041a5101103b502937650217293529351a3601a003043b5002041a3801103b50293764220c299291031b29352a362a351a2601a003052a68010207292503511e1a3b6502013b64293ba003051a0e010216293529351a0101a003043b500203faf4103b502937642f35303631372a2c2bfaef0c2f0306faed2e0c02013b3003082afae60c2f0c02013b2bfae1fae3fae5220ffae5fae70c320306fae5310c02013b3303082afac20c320c02013b3b06220f06fad12a6929221b2d6afacc2a69302afaca0c0b03003235030f313533352b30452b462a475051022031350b03003222272f2c2229faa90c5029352a362b37312c452b462a4750260829352a362b3722180307fa8f22170c02013b221903092cfa560c22180c02013b2d2d2d222c222c222c222c222cfa70222d7b0a2d220d2c452b4627071f0800|@5685,1,@504,@5686,@48,@5420,@5469,@4594,@70,@5994,@5995,@5997,@5475,@5063,@5999,@6004,@6005,@5812,@6006,@15614,@15615,@5704,@6169,@5684,@5682| 15436:D9,124|fb163b062f3ba203033c02042ffa79a80303fa78103b503b502f28403bdafa702a69fa702b69fa702d693b062b2a2e2d6b0b030022112e3b2c22122212fa5d0c5029352a362b372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c2a2c6a220f35343522162c452b462a4727121f050000|@5688,1,@505,16777215,@4557,@15437,@15438,@15439,@5687| 15437:D7,108|fb092b353ca00303fa6e103b500b02002e353ea0030d3c2f692a2a45fa5e465050023d2e353ba0030d3c2f692a2a45fa4b465050022a2e362d36932a2aa90303fa3e103b502e362b3bdb293ba00303fa33103b5029352d2a35452a364651260329352a362a2a692705420000|@5690,1,@506,@5691,@4719,@4597,@5689| 15438:D4,32|fb092b352c362968012c36932c2aa90303fa19103b502d362d3b2de327044200|@5698,1,@507,@4632| 15439:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@5699,1,@508| 15440:D8,612|fb1b30350a16004a00a4002c00f0002c000a012c0024013f012c002c006f01fd012c002c0024022c002c002c002c00380249021a3a022a230a312f2f6805312a1a31020c2931311a2e02307b050af711023036313732380b03002d220e220e2c220e220e220d0c5029352a360b0300220c22142f2c2214221422130c5029352a360b03002211221a2f2c221a221a22190c5029352a363b312c22106b221a2a452b461ad701472716f7b7013036293729353ba0032129362b352c362d382e392d2a2e2e2e2212221222122212221222113822137b0c0f29362b352c362d382e392d2a2e2e2e2212221222122212221222113922137b0c0f303631373238292c2c220c220c220c220c220c343a220d7b0a0b3036313732382b2b2b220c220c220c220c220c3437220d7b0a0b3036313732382a2c2b220c220c220c220c220c342307220d7b0a0b303630372a2a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a6964332a45220c462b47270602ec3036313732380b03002f220e220e2c220e220e220d0c5029352a362b3729353ea0032e2937322a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a696422132a4530462b47270502393003172b352806a003082b323cfaaa0c0206280b2c333c6b02152b352806a003082b323bfa930c0206280b2c333b6b220f2a452c46fa7e4764270a025e30360b02002c343b3b2d220c220c3423080c5029352a36280c2b69342a45220d462b4727070237303631372a2a69293333333333322309347b080b303631372a2a33333333333236347b090a30363137292b3333333333322306347b090a1f06|@5702,1,@509,@15441,@5704,@5701,@4719,@4807| 15441:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@510| 15442:D4,24|fb062c2c0c293ba003072d2dfa162e7e0529356443000000|@5706,1,@511,@5705| 15443:D11,788|fb212c350a1600460068009c00b500d1005f0182018601a301a701ad01c901e001140255022c00630271028b02d602eb02fc022c362d372a2e1ae4020c2a2f1ae2020c280f2b2b6a2704f7c5022c362d372e38292f1acc020c2c301ac6020c2c311ac0020c3b2b2b2e6b2706f7a3022c3629352a362b372c382d3929321aa4020c2e331a9e020c2e341a98020c2d220c1a91020c2b2b312c3068053c2a69270bf76f022c362d372a2e1a78020c2a2f1a76020c3d2b2b6a2704f756022c362d372e382b2f1a5d020c2b301a57020c3e2b2b2e6b2705f73a022c362d372e382f3929352a362b372b331a39020c2b9291030f2b3529220c1a2b020c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a220c35220d36220e372b22151aff010c2b9291030f2b352922171af1010c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a2218221d1acd010c3f221b2b2d22106805271bf7ac012c362d372e382b2f1ab3010c2b301aad010c2b311aa7010c28052c2c2c6b2706f789012cf785012c362d372e382a2f1a8c010c2c301a8e010c28072a2c2e6b2705f768012cf764011a7f01f75e012c362d372e382b2f1a65010c2b301a5f010c402b2b2e6b2705f742012c362d372e382b2f1a49010c280b2a2d2d6b2704f72b012c3629352a362b372c382d392e3a2f230630230730220c1a23010c2e220d1a2c010c2a32322c323232326808280c2a69270c02f72c362d3729352a362b372b31fafb0c2b9291030d2b352933faef0c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a280d220d2b6a270d02b62c36292dfad60c280e2a696502a82c36292dfab40c28102a6965029a2c362d372e38292ffaa20c2c30fa9d0c28112a2e2d6b270502802c362d372e3829352a362b372b32fa820c2b9291030d2b352934fa760c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a220c2211fa530c2812220f2b2d6b270f02352c362d372e382a2ffa3d0c28132d2b2d6b270402202c362d372a2efa420c28142a2c6a66020f2c362d372a2efa190c28152a2c6a664300|@5708,1,@512,@5709,@5704,@5717,@5718,@5719,@5720,@5723,@5707| 15444:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@513,@5710,@5709| 15445:D5,92|fb0b2c353ba003182c362d372e382f392930fa540c3b2e2e2e2d6805270502382c353da0030d2c36292dfa3c0c3d2a696502252c353ea0030d2c36292dfa2d0c3e2a696502122c362d372e38292ffa180c3c2d2d2c6b270443000000|@5712,1,@514,@5704,@5711| 15446:D6,64|fb0d2c929103342c352d362a352b362c37280c2a692932fa330c2935280ca003043b500203fa291029362e2e2b6a30220cfa210c2a2a69270a02013b43000000|@4648,1,@515,@5704,@5713,@5711| 15447:D5,48|fb0e2c929103272c352d362a352b362a352b362c372933fa230c2c2c2b6a292f6931220dfa1a0c2a2a69270b02013b43|@4648,1,@516,@5704,@5717| 15448:D5,40|fb0a2c9291031c2c352d362a352b362a30fa210c292b692d32fa1d0c2a2a69270702013b43000000|@4648,1,@517,@5704,@5718| 15449:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@518,@5704,@5721,@5720| 15450:D5,40|fb0a2c9291031c2c352d362a352b362a30fa210c292b692d32fa1d0c2a2a69270702013b43000000|@4648,1,@519,@5704,@5723| 15451:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@520,@5704,@5707| 15452:D8,152|fb0a2d352806a003442d362e3728062b2b6a2a299291032729352a362a35fa84a003122a35fa7da003043b500203fa78102a370207292503511e263b650202fa6b642f2b4531462a47270402472d35280fa003382d362e372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba003032902052930fa2e0c2b2a31fa2c327b05092b2e452d46fa194744000000|@5725,1,@521,@25,@4594,@4719,@5724,@5701| 15453:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@522,@5724| 15454:D7,128|fb0d3b32299291031229362b3caa292b25042504511e113b6502012a650b0200220c332b303634342210fa600c5029352a362afa5b0c29299291031829352a362a352806a00309292503511e143b02013b6502013c64030b28142a22106afa340c020628142a22106afa2d2d2211336b3e322b6a220e2c452e462a47270a1f07|@5727,1,@523,@5728,@5730,@4851,@15455| 15455:D6,96|fb0b0b02002e2d38a203352c362f2a929103043b500203fa53102a352b362b3ba0030b2a2e2a35452a364651020e2b3cab2a2a2505250526031e2b50515102152c3703043b500203fa2610fa272a2a35452a36465129352a362a2a6927054200|@5733,1,@527,@4721,@5732,@5227| 15456:D4,168|fb1a319291039a313532360b03002e32220f2c220e220e22110c5029352a362b370b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a4532465026040220220e383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a360b0200220f2d2b2219221922192219fa260c5029352a362f2b69221a2a452b46271402052f3b4531461f07|@5729,1,@524,@5728| 15457:D5,60|fb0b2b929103312b352c362a352b362a353ba003112a362b37292cfa2b0c28062c2b6a6602072a3628082a69642cfa1c0c2a2a69270602013b420000|@4648,1,@525,@5731,@5730| 15458:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@526,@25,@4162,@5731| 15459:D17,512|fb1d0b0300220d34342c343433360c5029352a362a352806a0031f2a36293ba00304220e0202220f29220f2d220f220f220f220e3622107b08120b0300221222113b2c221122112210360c5029352a362b370b0300221822183b2c221822182217360c5029352a362b3732352810a003323133321a95010c280522112b1a90016b3d2a6929221269293ba003032e02062e2a1a7f010c221d31452a462f472705f7570132352806a003f93236323ba0030f2c352806a003052b3ba002013b02013b03862c362a2aa0032d22111a49010c291a4801b7291a4301a00304221202093d2214692922146964221d220f452a461a2d014766024f2a3ca00305293ba002013b030e221a2212452211461a11014702342a3ba00305293ca002013b03142815221228096a221b2a45221246faf14764021328052212220d306b221b2a45221246fadc47646402572c352810a003322b2d2cfacf0c28052212fab42c6b3d2a6929221369293ba00304220d0206220d2afab50c221e2210452a46220e472705021e323433faa50c2c2e2dfaa30c280522132c2c6b221c2a45221346fa8247666402572b352810a003322a2c2bfa850c28052211fa5a2c6b3d2a6929221269293ba00304220c0206220c2afa6b0c221d220f452a46220d472705021e313332fa5b0c2b2d2cfa590c280522122c2c6b221b2a45221246fa284766270e27061f08|@5738,1,@528,@5739,@4689,@5751,@5752,-536870912,@4719,@5754,@5756,@5757,@5759,@5761,@5763,@5764,@5737| 15460:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@529,@5742,@5739,@5740| 15461:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@530,@25,@4162,@5742| 15462:D6,148|fb0d2c3ba003032b02882b352808a003092b3629353da06402013b03702b3629362e29929103043b500203fa731029352a36293ba003032a0207292503511e1c3b656429353ca0033c29372a382c2ba0032b3b32299291031229362b3caa292b25042504511e113b6502012a65293cab332afa300c292dfa2f220c7e0c280f32326a650205280f30306a660205280f2d2d6a4300|@5744,1,@531,@5745,@5743,@5740| 15463:D5,40|fb072b3ba003033b021d2c929103043b500203fa1f102c352d362d3cab2a2afa170c2c2a69270443|@5749,1,@532,@5748,@5743| 15464:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@533,@5751| 15465:D10,840|fb112b350a16003200570083008700f9006b012c008b012c008f019501b0012c00b90116021a02760283028602b602be02e7021a1e03f70c032b362c372d38291a15030c1a15032ab72d1a0b030c2a2ab72e1a03030c2a2ab72708f7e7022b3629352a362b382c39291aec020c2d1ae7020c2a2ab72e1adf020c2a2ab72f1ad7020c2a2ab7270bf7bb023bf7b7022b362c372d3829350a0c001d00220027002c00310036003b004000450018004a004f001aa00202351aa30202301aa202022b1a910202261a8c0202211a8702021c1a820202171a850202121a7802020d1a730202081a6e0202031a69022c1a69020c2a2ab72d1a61020c2a2ab72707f745022b362c372d382e392c3ba003051a4402020d2c3ca003051a3a0202031a45022a352b36299291031229352b1a2a020c2a1a25020c2a2ab76602052a1a1a020c2c2ab72f353036299291031229352b1a07020c2a1a02020c2a2ab76602052a1af7010c2c2ab7341aef010c2a2ab7270ef7d3012b362c372d382b1adc010c2b1ad7010c2a2ab72c1acf010c2a2ab72707f7b3013bf7af011ac301f7a9012b362c372a1ab4010c291abb01b82b1aaa010c2a2ab72705f78e012b36291a9b012d7d042b362c372a352807a003082a36293ca06402013b03051a7b01021a2a352806a003082a36293ca06402013b03051a640102031a67012a352b36299291031229352b1a54010c2a1a4f010c2a2ab76602052a1a44010c2c2ab72706f728013bf724012b362c37291a2f010c2b2a2a929103472a352b362a353ba0030a2a39291a17010c6402212a353da0030a2a36291a07010c6402112a353ea00304faf702072a3829faf40c64292db72b2a2506250626041e453b2704020129656602c82b3629fad60c29fae2b76502bb3b02b82b372c3829352a36299291031029352bfab90c2afab50c2a2ab76602042afaab0cfabc2ab72efaa30c2a2ab7270702882b3729fa962d7d042b3629fa8a2a9291031a2a352b362afa820c292db72b2a2506250626041e183b2704020129656402572b362c37290a0e002000240028002c0030001c0034001c001c001c0038003c0040004400fa400226fa4c0222fa48021efa4c021afa480216fa340212fa28020efa24020afa200206fa1c0202fa182bfa190c2a2ab72704420000|@5753,1,@534,-268435456,@5752,-536870912,805306368,-1073741824,1073741823,-805306368| 15466:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@535,@5755,@5754,@5740| 15467:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@536,@25,@4162,@5755| 15468:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@537,@5756| 15469:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@538,@5758,@5757,@5740| 15470:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@539,@25,@4162,@5758| 15471:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@540,@5760,@5759,@5740| 15472:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@541,@25,@4162,@5760| 15473:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@542,@5762,@5761,@5740| 15474:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@543,@25,@4162,@5762| 15475:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@544,@5763| 15476:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@545,@5765,@5764,@5740| 15477:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@546,@25,@4162,@5765| 15478:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@547,@5766,@5737,@5740| 15479:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@548,@25,@4162,@5766| 15480:D9,228|fb1c0b0300220e34342c343433370c5029352a360b0300221322112f2c221122112210370c5029352a360b0300221822172f2c221722172216370c5029352a36220d352806a0036b220d3629920312299203043b500203fa97103b50293ba002013b031ffa8e221436221b221922196805221b2afa820c22192a452d46fa7d4765022d3b221f69fa77221536221c221a221a6805221c2afa5f0c342f2d2c221568053c2a69221c2a453046fa4f47270564022d3b221e69fa4b221436221b221922196805221b2afa2f0c332e2d2c221468053c2a69221b2a452f46fa1f47270527121f0a|@5768,1,@549,@4816,@15482,@5704,@4719,@15483,@15481| 15481:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@552| 15482:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@550| 15483:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@551| 15484:D13,516|fb20343ba0036f0b0300220e34342c343433370c5029352a360b0300221322112f2c221122112210370c5029352a360b0300221822172f2c221722172216370c5029352a361ac801221336221a221822186805221a2a1abb010c322d1ab9012c221368053c2a69221a2a452e461aac01472716f789012f360b0300220f220c220c2c220c220c34370c5029352a360b0300221422122f2c221222122211370c5029352a360b0300221922182f2c221822182217370c5029352a36220d352806a0036b220d3629920313299203043b5002041a4c01103b50293ba002013b0330280922203c6a1a3c01221636221d221b221b6805221d2a1a1b010c3e2a1a29012e6b221c2a452f461a1201472704021b280922203c6a3e332e2c6b22153b3b3ce3221b2b452e46faf447666402d02a352806a0034b221e3fa003033c0204221e3ea028153228056a280922213c6a3e342f2c6b2815220c28076a2d0304281102013c28062a3b6a3e2c2bfac16b2805302f2c6b22202a453346faa2472709027e30352806a0034a221e3fa003033c0204221e3ea028152c28056a280922213c6a3e342f2c6b28152f28076a2d03033c0202281128062a3b6a3e2c2bfa746b2805302f2c6b22202a453346fa51472709022d3c221f69fa5e221536221c221a221a6805221c2afa2e0c332e2d2c221468053c2a69221c2a452f46fa2247270527131f0a000000|@5770,1,@553,@15486,@5704,@4688,@4719,@4816,@15487,@4689,@4786,@4786,@15485| 15485:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@556| 15486:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@554| 15487:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@555| 15488:D38,2208|fb1b2f360b0300220d220c220c2c220c220c34360c5029352a360b0300221222122f2c221222122211360c5029352a3622163540a0f838012216362b352806a003cc2b3632352806a0037f32362992299103033c02052b9229916403143e220c30221d6b22162a452f461a3f084764025622103b3b3ce32b9203043b5002041a2e08103b502c9203043b5002041a2408103b502d3da0030b2b2db928062a3b6a6402192d3ca0030b2b2db828062a3b6a6402092b2db728062a3b6a6422172a4530461ae707476565024129920313299203043b5002041adf07103b50293ba002013b03162a3ba003032c02013222142a452d461ab607476402113e332e221b6b22142a452d461aa307476464025e31352806a00346313629920313299203043b5002041a9607103b50293ba002013b03162a3ba003032c02012c22142a452d461a6907476402113e332e221b6b22142a452d461a560747646402113e322d221a6b22132a452c461a4207476464f729072216352808a0f8f30122163631352806a003072b352806a002013b03d831362c362a92299103033c02052a9229916403143e220c30221d6b22162a452f461afb06476402ac22103b3b3ce32c9203043b5002041afa06103b502b9203043b5002041af006103b502d3da003182b3ba003041ae406103b503b502c2cb528062a3b6a6402622d3ca003182b3ba003041acb06103b503b502c2cb428062a3b6a6402452d2805a003041ab606103b503b502d3fa003041aad06103b503b502d3ea0030b2c2cb328062a3b6a64021a2d2806a0030b2c2cb228062a3b6a6402092c2cb128062a3b6a6422172a4530461a4d06476566f70301221736293ba003072c352806a002013b033c2c3629920313299203043b5002041a5006103b50293ba002013b030c221434452d461a10064702113e342f221c6b22152a452e461afe0547646402b4221836293ba0030733352806a002013b033d333629920313299203043b5002041a0606103b50293ba002013b030c22152f452e461ac2054702123e220c30221d6b22162a452f461aaf054764640264221936292806a003072e352806a002013b033e2e3629920313299203043b5002041aba05103b50293ba002013b030d2216220d452f461a71054702123e220d31221e6b22172a4530461a5e0547646402123e220c30221d6b22162a452f461a4905476464646464f72d052216353ca0f8650322163631352806a003072b352806a002013bf8490231362c362a92299103033c02052a9229916403153e220c30221d6b22162a452f461aff044764f71c0222103b3b3ce32c9203043b5002041a2105103b502b9203043b5002041a1305103b502d0a07000e003400b6000e0133018a01c80178810c2e2eaa28062a3b6a64f102146d29352805a003043b50020229103b501ae00464f7b70178815c2d3ba003041ad504103b503b502d1ad004a003072e1acd04a002013b03041ac804103b503b502e2ead2e3ba003041abc04103b503b502f2fae293ba003033c020a293ba2303ba22a2aa06503032a02032a3cab28062a3b6a66f102206d29352807a003051a8a04021229352805a003043b50020229103b501a5e0464f735017881332d3ba003041a6304103b503b502e2eae293ba003033b0212293ba22f3ba22a2aa003032b02032b31aa6528062a3b6a65f102206d29352807a003051a3104021229352805a003043b50020229103b501a05046402dd78810c2e2eac28062a3b6a64f102146d29352805a003043b50020229103b501ae0036402b87881322d3ba003041ad603103b503b502d1ad103a003072e1ace03a002013b03041ac903103b503b502e2ead28062a3b6a64f102206d29352807a003051ab503021229352805a003043b50020229103b501a89036402617881192d3ba003041a8f03103b503b502e2eae28062a3b6a64f102206d29352807a003051a7703021229352805a003043b50020229103b501a4b0364022378810c2e2eab28062a3b6a64f102146d29352805a003043b50020229103b501a26036422172a4530461ae002476566f70301221736293ba003072c352806a002013b033c2c3629920313299203043b5002041a0f03103b50293ba002013b030c221434452d461aa3024702113e342f221c6b22152a452e461a910247646402b4221836293ba0030733352806a002013b033d333629920313299203043b5002041ac502103b50293ba002013b030c22152f452e461a55024702123e220c30221d6b22162a452f461a42024764640264221936292806a003072e352806a002013b033e2e3629920313299203043b5002041a7902103b50293ba002013b030d2216220d452f461a04024702123e220d31221e6b22172a4530461af10147646402123e220c30221d6b22162a452f461adc01476464646464f7c0012216352809a0f8a70122163622173732352806a003072c352806a002013bf87c0132362d362c3ba003033b020f2a92299103033c02052a922991646403153e220c30221d6b22162a452f461a85014764f7470122103b3b3ce32d3da003472c3ca003212b9203043b5002041a9d01103b502a9203043b5002041a8f01103b502b2ba8021f2b9203043b5002041aa801103b502a9203043b5002041a9e01103b502b2ba902e22d3ca003472c3ca003212b9203043b5002041a5101103b502a9203043b5002041a4301103b502b2ba6021f2b9203043b5002041a6401103b502a9203043b5002041a5a01103b502b2ba702962d3fa003462c3ca003202b9203043b5002041a0501103b502a9203043b500203faf8103b502b2ba4021f2b9203043b5002041a2101103b502a9203043b5002041a1701103b502b2ba5024b2d3ea003432c3ca0031f2b9203043b500203fabb103b502a9203043b500203faae103b502b2ba2021d2b9203043b500203fae0103b502a9203043b500203fad7103b502b2ba302032b2ba0290304facb0202facb22182a453146fa3b47666502103e332e221b6b22142a452d46fa2847646502103e312c22196b22122a452b46fa154764270d1f08000000|@5773,1,@557,@4719,@4816,@4816,@4816,@4816,@4816,@4816,@4562,@5774,@5776,@5779,@4816,@4816,@4816,@4816,@5782,@4083,-1,-1073741824,@4087,@4081,@5772,@4816,@4816,@4816,@4816,@4816,@4816,@4816,@4816,@4816,@4816,@4816,@4683,@4689| 15489:D10,628|fb0f2f360b0300220c220c220c2c220c220c34360c5029352a362b3722100a0e001c001c001c001c001c003000a000fe004f0199011c001c00e501190228152c22126a220d2a452c461a34024764f71f022b352806a003212b36313b3b3ce350299203051a1d0202031a1c02220e2a452d461a0b024765024529353ca00314303b3b3ce3220d1aff01452c461af1014764022b29353ea00314303b3b3ce3220d1ae501452c461ad7014764021128152c22126a220d2a452c461ac4014764f7af012b352806a0031c2b36313b3b3ce350299a28062a3b6a220f2a452e461aa0014766023829353fa00309293629280da06402013b03152937313b3b3ce350220d2a452c461a79014764021128152c28066a220d2a452c461a66014764f751012b352806a003362b36313b3b3ce350299203051a57010218299203041a5201103b503b5029942928ffb728062a3b6a65220e2a452d461a28014765021128152c22126a220d2a452c461a15014764f700012b352806a003312b36313b3b3ce350299203051a06010214299203041a0501103b503b50299328062a3b6a64220e2a452d46fadc4765021028152c22126a220d2a452c46faca476402b62b352806a003332b36313b3b3ce35029920312299203043b500203fac1103b50293ba002013b0304faa00202faa0220e2a452d46fa904765021028152c22126a220d2a452c46fa7e4764026a2b352806a0031b2b36313b3b3ce350299b28062a3b6a220f2a452e46fa5c4766021028152c22126a220d2a452c46fa4a476402362b352806a0031b2b36313b3b3ce350299c28062a3b6a220f2a452e46fa284766021428152c22126a3f280d2e6a220e2b452d462a476527081f07|@5788,1,@558,@4719,@4683,@4689,@4689,@4809,@4809,@4816| 15490:D17,496|fb292f360b0300220e220c220c2c220c220c34360c5029352a362b372211352808a0034a2211363d28403bda1acd01453e28403bda1ac80145292b462c476c502a2a466c502213299291031d29352a362a35293b301aac010c03033c02082a250426031e1c3b6602013b646602013b2a353ca00305293ba002013bf828012a362b372a352b392c23063b2b299291031229362b3caa292b25042504511e113b6502012a653b2218299291031229362b3caa292b25042504511e113b6502012a652a2aa003043b5002041a3c01103b50220f3b3b3ce32217362218382e3ba203033c02052e1a2501a803041a2301103b503b502e28403bda0b0200221f22112b221a36221e221e22231a09010c5029352a362a3ba003051aff0002573b2b299291031229362b3caa292b25042504511e113b6502012a6529fad3a80303fade103b503b502928403bda3b2d293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965faac22102b326bfaa9316929342c220c6b0b030022152e332c222822282227360c5029352a362b3722282c452b462a47271b02452c352806a0032022113337220e220e2213fa6f0c28072a2f22146b220f2a452e46fa634765021e22113337220e220e2213fa570c28072a2f22146b220f2a452e46fa43476527091f0800|@5791,1,@559,@15491,@15492,@5793,@5798,16777215,@4557,@5801,@4725,@5803,@15496,@15497,@5810,@4719,@5790| 15491:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@5792,1,@560| 15492:D4,208|fb0c2d352807a003072b2d453c4602be2d35280ca003332d362938292f2a9291031e2a352b3628082b69292d3236faac0c2b2a2506250626041e1c3b2704020129652e2a453c466602842d352808a003782d362d03033c0268292b37a003033c025f29353ba003152a37353ba0030b29362b37362a2aa06502013b024429353ca003152a37353ca0030b29362b37362a2aa06502013b022929353da003152a37353da0030b29362b37362a2aa06502013b020e29353ea003072a37353ea002013b2d2a453b466502052b2d453b464400|@5794,1,@561,@5793| 15493:D4,32|fb092d2d692c0c2936293ba0030b2a35302a30fa17317b05082a356544000000|@5796,1,@562,@5795| 15494:D4,832|fb122d350a1600bb00d90004013a014f01aa01c801cc010102050209021e022a02610286022c00af02ba02cd02fa0205032b032d362e372a2f2a929103752a352b362a353ba0030c2a39292d341afc020c6402512a353da0030c2a36292d341aea020c64023f2a353ea0032f2a36292d2a929103212a352b362a37280c2a69292e22111ac6020c2c2a2507250726051e1f3b27050201296564020a2a38292d341aa9020c642a2a2505250526031e743b66020129652a2a301a9102317b0508f77b022d362e372f382930301a7e020c2c2a311a77020c2c2a321a7002337b050a2d3629352a362b382c392932321a5c020c2d2a331a55020c2d2a341a4e020c2d2a220c1a4602220d7b050d2d362e37292f2a9291031f2a352b362a352937292e220c1a27020c2c2a2507250726051e1d3b2705020129652b2a301a0f02317b05082d362e372a2f2f1a01020c2a2a301afa01317b05082d372e382f392a352b36299291031329352b33331adf010c2a2a341ad8010c6502072a32321ace010c2c352d36299291031529352b2d220d1abb010c2a2a220e1ab3010c6502082a2c220c1aa8010c312a220d1aa001220e7b050e2d362e372f382b30301a8f010c2b2a311a88010c2b2a321a8101337b050a2cf76a012d362e37292f2f1a6f010c2b2a2a9291031d2a352b362a35292d220c1a5a010c2b2a2506250626041e1b3b27040201296566f735012cf731012cf72d012d362e372a2f2f1a32010c2a2a301a2b01317b05082d36292e2e1a1f012f7b05062d3629352a3829302a9291031f2a352b3628082b69292d220c1aff000c2b2a2506250626041e1d3b2704020129652b2a31fae8327b05092d3729352a36299291031129352b3131fad20c2a2a32facc337b050a2a3030fac3317b05082d36292e2a9291031b2a352b362a35292d33faab0c2b2a2506250626041e193b2704020129656402872d36292e2efa8f2f7b05062d362e38292f2ffa820c2b2a30fa7c317b05082d372e3829352a36299291031129352b3232fa640c2a2a33fa5e0c6502062a3131fa550c2d2a32fa4f337b050a2d37292e2efa442f7b05062d36292e2a929103182a352b362a2c32fa2e0c2a2a2505250526031e173b660201296564020b2d36292e2efa132f7b0506440000|@5797,1,@563,@5793| 15495:D4,172|fb1b319291039c313532362a350b03002d3322102c220f220f22120c5029352a362b370b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a4532465026040220220f383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a360b020022102d2b221a221a221a221afa280c5029352a362f2b69221b2a452b46271502052f3b4531461f070000|@5802,1,@564,@5801| 15496:D7,92|fb062b353ea00303fa5e103b502b353ca003082b36292b362d7d042b353ba003172b362a37932a2aa90303fa3f103b502b372b3bdb6502212b362a38932a2aa90303fa2c103b502b382b3bdb293ba00303fa21103b50293566420000|@5806,1,@565,@5805,@4599,@4597,@5689| 15497:D4,32|fb092b352c362968012c36932c2aa90303fa19103b502d362d3b2de327044200|@5809,1,@566,@4632| 15498:D6,56|fb0e2f9291032b2f3530362a352b36fa333331343468052b2afa2d0c292c692e220d220d220d220dfa220c2a2a69270802013b1f05000000|@4648,1,@567,@15499,@5704,@5810| 15499:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@568| 15500:D6,56|fb0e2f9291032b2f3530362a352b36fa333331343468052b2afa2d0c292c692e220d220d220d220dfa220c2a2a69270802013b1f05000000|@4648,1,@569,@15501,@5704,@5790| 15501:D3,28|fb0a2b2a37352b37362c37372d37382e382f393036327b0903000000|@5703,1,@570| 15502:D17,212|fb203135323633383439220c3a220d2306220e2307220e36220f372c3ba203033c02042cfabaa80303fab9103b503b502c28403bda3b063b06faad3322142c30221630326808faa42d693b06faa22a69faa22211362d34302e22192219680822102afa940c3035293b2a929103182a352b362a35292d692b2a2506250626041e163b2704020129652e3522103ca003033c02023235293ca003032d020d2dfa5cfa5efa602efa61fa630c2922163b2f22172f31221768082b3ca00304fa520209fa522e693c2b2b6a64221d2b452a4627191f0700|@5813,1,@571,16777215,@4557,@15503,@15509,@15510,@15511,@5704,@5063,@5826,@5828,@5830,@5812,@4719,@15287| 15503:D4,40|fb0e0b02002e2a2e362f3730383139323a332306342307fa1b0c5029352a362a2a69270542000000|@5815,1,@572,@5814| 15504:D9,212|fb0c33353ca003793336322a2a929103043b500203fac9103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b64656529353da0030532929102013b0316293633352a2aa00309333b3b3ce3503c02013b6502013b030dfa84220c2a35452a364664021329310c29352a36220e33220d34fa6e347b080e65025033353ea0030c3c3469332a45fa5d4664023e33353ba0030c3c3469332a45fa4b4664022c33362c932a2aa90303fa40103b503b502d2b3bdb293ba00303fa34103b503b502935220d2a35452a364664661f0900|@5817,1,@573,@4721,@5818,@5816,@4719,@4597,@5689| 15505:D9,180|fb0a30353ca00311303629353da003052e929102013b6402013b0318303629362f352a2aa003092f3b3b3ce3503c02013b6602013b030cfa872f2a35452a364664026e30353ba0030b303631373b2b2b6a65020b3036292dfa6a0c3c2a696530353da00304fa61024230353ba00304fa57023830353fa00304fa4d022e30353ca0031530363137fa43fa453232322e68063c2c2b6a66021330363137fa36fa303232322e68063e2c2b6a66302b452a46651f0600|@5820,1,@574,@5818,@5821,@4719,@15508,@5816,@15506| 15506:D3,40|fb0e2b2a3a0c29352a360b02002d2d2b323733383439220c360c5029352a362a2a69270842000000|@5823,1,@577| 15507:D4,200|fb0d2b3529299291037829352a362a352932a003033c025829353ba0031331353ba0030a293632362a2aa06502013b023f29353ca0031331353ca0030a293632362a2aa06502013b022629353da0031331353da0030a293632362a2aa06502013b020d29353ea0030631353ea002013b03052b680102082a250426031e773b6602013b642d352a3ba00333299291031d29352936293caa322a69292e69333b3b2ce3502c3caa3c2a692706020f2f3b69293b69303b3b2ce350fa196502082a3529363c2a69656643|@5822,1,@575,@4688| 15508:D3,40|fb0e2b2a3a0c29352a360b02002d2d2b323733383439220c360c5029352a362a2a69270842000000|@5823,1,@576| 15509:D4,32|fb092b352c362968012c36932c2aa90303fa19103b502d362d3b2de327044200|@5824,1,@578,@4632| 15510:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@5825,1,@579| 15511:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@580| 15512:D3,8|fb033c2d69430000|@5827,1,@581| 15513:D3,4|fb023b42|@5829,1,@582| 15514:D3,4|fb023b43|@5827,1,@583| 15515:D6,40|fb0a2c3ba203033c02042cfa27a80303fa26103b502c28403bda31313032302efa1a327b08090000|@5832,1,@584,16777215,@4557,@5831| 15516:D7,40|fb093030fa2e31313131fa2c0c293ba00311fa28fa1e313131316806322afa202f7e0a2935641f06|@5833,1,@585,@5831,@5834,@15517,@5704| 15517:D5,24|fb0a2bfa1f2b362c372d382e392f3afa17327b0903000000|@5877,1,@610,@4706,@5834| 15518:D17,564|fb1b31350a16002c002c0030002c002c0085002c00bc00f4002c002c007201a3012c002c00df012c002c002c002c0009022c003bf7fa01313632372a3332323232220e0c0b02002d2a220e220e220e220e220e1aea010c5029352a36299291912991031b1add013169302a1ada010c3d2a2f6a280f2e2b6a296801270402083d302d6a296801642709f7a5013136323733382b1ab60133333333220f0c2b220c3434343422100c2b220d220c220c220c220c22110c28052c2c2c6b2968012707f76e013136323733382b33333333331a7e010c291a7d010c3b220d2b6a293b692e2a220e220e220e220e22130c28072e2b316b2968012709f73601313629353ea0030931300c501a4e01026329353ca0030929362933310c64025429353ba0030b29362933300c502a64024329363292919103041a2501103b502d932a2aa903041a1c01103b502e2b3bdb293ba00303340206342a1a0c010c30932d2aa903041a0501103b50312e3b2de3502e270528082a692968016602b8313632373338293ba003223d2b220c6a293b692d2a220c220c220c220c22110c280b2a2f3b6b296801270402013b66028731360b08003222122b2212221222122212faaf0c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692968012714024b31363237293332323232220e0c2b2f34343434fa750c293ba003032a0205280f2a2c6a2968012705022131363237293ba003162a3b343434343434fa510c28142a3b6a2968016502013b651f0700|@5836,1,@586,@5837,@15520,@5704,@4706,@5846,@5847,@4705,@5848,@4597,@5851,@4632,@5852,@5870,@5835| 15519:D6,152|fb143192910384313532362a352935293ba003372a370b02002f2a22102210221022102210fa7d0c5029352a362efa78221122112211221122160c3d2a69292c6922142e452a462709023c2a362b372e360b0200312a22122212221222122212fa420c5029352a362f32221322132213221322180c32322b6a293169292e6922172a452e46270c2704020afa1f312a35452a3646641f0700|@5838,1,@587,@5837,@4706,@4685| 15520:D4,68|fb0b2b353da003052b680102352b35280ca003052b680102292b35280ea003212b360b02002c2e362bfa250c5029352a36280e2b69280f2b2b6a296801270802013b4200|@5840,1,@588,@5839| 15521:D7,120|fb112d9291035a2d352e362a352f929103043b500203fa6c102f3530362a352935293ba0031e0b0200312f2bfa5a0c5029352a363d3369292b6922102d452a46270702190b0200312f2bfa3c0c5029352a36342b69220f2a452b462706270702162c3ba003043b500203fa2010fa212c2a35452a36466444|@5842,1,@589,@5841,@5839,@5841,@4685| 15522:D5,52|fb0e309291032a303531362a352b362afa2e3434343422100c292b692d220d220d220d220d220dfa1b0c2a2a69270702013b1f06|@4648,1,@590,@4706,@5846| 15523:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@591,@5847| 15524:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@592,@5851| 15525:D20,648|fb1e3135323633383439220c3a220d2306220e23073b063b2e299291031229362b3caa292b25042504511e113b6502012a65293ba203033c0205291a5602a803041a5402103b502928403bda3b061a4b022a6922133b2a9291033d2a352b362a353ca003071a38022c69021e2a353ba003132a362c3ba00303290206292d1a23020c6402051a20022c692a2a2505250526031e3c3b6602012965220c2a1a0c02312216221622162216221268072d341afe0132691afd010c2c35293b2a9291033d2a352b362a353ca003071ad2012c69021e2a353ba003132a362c3ba00303290206292d1ad1010c6402051aba012c692a2a2505250526031e3c3b66020129652a92919103033c02282c299291032029352a362a353ca003033c02042a353ea003033c0207292503511e1f3b6502013b6403033b02b52c299291031729352a362a353da00309292503511e133b02013b6502013c64032129299291031729352a362a353da00309292503511e133b02013b6502013c6402013b036e293b2a9291035b2a352b362b3ca003033c02412a353da003043b5002041a2101102a3631299291032829352a362a353da003043b5002041a0b01102a36292ea091030a2a250426031e243b02013b6602013c64642a2a2505250526031e5a3b660201296503052a680102013b0202fad9293ba0036f3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965220ffab10c33933b2a293ba003032a021b293cb22a3cb2220f2a3bdb292e69292d2506250626041e1e3b2704652b2afa880c221d334522164632472e482a4922134a22124b22114c270602252935293ba003042219020622192afa610c221b2a221b221b221b221b221bfa55221c7b091c27111f07|@5854,1,@593,16777215,@4557,@15526,@5064,@5857,@4705,@15529,@15531,@5812,@5860,@5861,@5864,@5866,@5867,@5868,@5853,@5852| 15526:D4,28|fb07293635293ba003032c02052c2afa170c2b363b3b2ce365420000|@5856,1,@594,@5855| 15527:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@595,@5855| 15528:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@596,@5857| 15529:D10,172|fb0b2923062d2a929103043b500203faa7102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ea003092c2b370c50fa80026529353ca0030a2936292e2d380c64025529353ba0030c2936292e2d390c502a64024329362d9291910303fa56103b502b3a932a2aa90303fa4d103b502c3a2b3bdb293ba003032f02052f2afa3d0c2e3a932d2aa90303fa36103b502f3a2e3b2de3502e2705292c36fa282f7e0600|@5827,1,@597,@4721,@4705,@5848,@4597,@5858,@4632,@5821| 15530:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@598,@5858| 15531:D6,56|fb092936932d2aa90303fa38103b502a362e3bdb293ba003032d02052d2afa280c2c3693302aa90303fa21103b502d36313b2de327044300|@5827,1,@599,@4597,@5859,@4632| 15532:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@600,@5859| 15533:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@601,@5860| 15534:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@602,@5867| 15535:D4,40|fb092c929103052b929102013b03172c352d362d352e362c2b692c2bfa160c2a2a69270602013b43|@5869,1,@603,@5868| 15536:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@604,@5853| 15537:D14,412|fb23309291f89001303531362a353ba003702a372b382c392c220c220c220c220c220c1a82010c220c932d2aa903041a7a01103b50220d2e3bdb293ba0031a2c1a6d010c291a6c01b7291a6701a003033b02031a6201650201292992919103032c021a2d1a5501220f220f220f221422140c3b2b32322d6805292f69652707f713012a353da0033a2a362a33333333331a15010c2a1a18010c291a1701b7291a1201a003032b02162c1a1401220c220c220c221122110c3d2a69292e6965270402d32a353ea003332a362a3333333333fad60c2a3b3b220d220c220c220cfae40c29220cfae20c2992919103032b02073e2a69292d69642704029a2a372b382b3434343434faa10c34932c2aa90303fa9b103b50220c2d3bdb293ba003162cfa8f0c29fa8fb729fa8ba003033b0202fa9b650201292992919103032c02552d35280ca003382d360b080032342b221922192219221efa790c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692713020d2d2a220e220e220e221322130c3c2b312c6b292f696527066502013b1f0600|@5872,1,@605,@5870,@4597,@5752,-536870912,@4706,@4706,@4706,@5873,@5871,@4706,@5852| 15538:D7,164|fb233192910384313532362a362b3732932b2aa90303fa98103b50332c3bdb293ba003172e220e692e2a220f220f220f220f220ffa7e22107b0910fa7b2a690b0800220c332b221722172217221bfa6c0c5029352a362b372c382d392e3a2f23063023073030303030303030680822162a69221822223c2222222222222222fa330c2a2a692715270602152f3ba003033b020d303b3b31313131fa18327b09091f070000|@5874,1,@606,@4597,@5873,@4705,@5852| 15539:D5,52|fb0b2c929103282c352d362a352b362f932b2aa90303fa28103b50302c3bdb292d2d6a2e33fa1d0c2a2a69270802013b43000000|@4648,1,@607,@4597,@5871| 15540:D6,128|fb10329291037432353336323b2a929103382a352b362a353da0031d2a362b3722102ba0030f2d3ba00303290205292efa5a0c02012d6502032a2c692a2a2505250526031e373b6602012965293ba00304fa3d0201292c2a3434343422100c220d3caa2d2a220f220f220f220f220f220ffa210c2b2a69270702013b1f080000|@5876,1,@608,@5875,@4706,@5835| 15541:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@609,@5875| 15542:D4,40|fb14303531363135323633382d34342c2f3336220e220e221333220f37220efa1322137b0e0d0000|@5880,1,@611,@5879| 15543:D19,992|fb2f220d9291f8c403220d35220e362a353ba0f8cb012a372b382c393b22100c3d2a693c2a69291ac203692f2a696622100c0b03002f22113b2c2216221622190c5029352a362a352811a0f859012a362b372c3829352808a00309293629353da06402013b030b2936293629220da06502013b03043b5002041a7403103b503b221b0c3d2a693c2a69291a5f036922112a6966221b0c3b221d0c3c3b2b316b2a3ba203041a4d03103b503b503d2b6928082a6930353b2a293ba003032a024a293cb22a3cb22b3cb2220d362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba091293ba0030334020c280b220e333b6b29220d69642934250d250d260b1e4d3b270b653b2a299291031229362b3caa292b25042504511e113b6502012a65292216a003043b5002041ac602103b5028142b3b6a2b299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a9c020c0201293c3b220c2c6b22203b3b3ce322293ba00304221002082210222a1a7f020c332a692c2a69221e2a222d222d222d222d222d222d222d222d222d222d1a6202222e7b0e2e3b3b32220c2e6805221a3ba003032a02072a221b1a4a020c2a2a69220e2a221d221d221d221d221d221d221d221d221d221d1a2802221e7b0e1e2a353ea003dd2a360b02002c2a1a1b020c5029352a36293ba003032a02062a2a1a0c020c29221422141a07020c2a2a220f22142214221422191afb010c291afa011afb010c293b2a929103482a352b362a929103043b5002041ae701103b502a352b36293ba003162a352b362c37280c2a693c2d2d2c6b293369270502073e2d69292f69642c2a2507250726051e463b270502012965293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965221a3ba0030329020729221b1a84010c220d2a221c221c221c221c221c221c221c221c221c221c1a4501221d7b0e1d2a353da003512a360b03002d220d22152c2212221222150c5029352a362b372b352810a0030a22152c452b462a4702233d2c69292c69332a2219221922192219221922192219221922192219faf2221a7b0e1a270802af2a372b380b03002d220e22162c2213221322160c5029352a362b372b352810a0030a22162c452b462a4702810b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a45324650260402202213383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a36220d2b69221a0c220f2b221e221e221e221e221e221e221e221e221e221efa41221f7b0e1f270965020e2b2f220e220e3434220e317b080e1f0c000000|@5882,1,@612,@4719,@5883,@5886,@5889,@4851,@5892,@5879,@5893,@5894,@5897,@5898,@5899,@5901,@5906,@5916,@5881| 15544:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@613,@5892| 15545:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@614,@5893| 15546:D5,72|fb0e2c929103352c352d362a37293a293ba00b02002f2afa3b0c5029352a362e030c322b69220d2a452b4664020a322a69220d2c452a4664270a020afa1a2c2a35452a3646644300|@5896,1,@615,@5894,@5895| 15547:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@616,@5897| 15548:D5,48|fb0a2d929103272d352e362a363b300c3d2a693c2a6929fa23692d2a6966300c502b3131fa1a0c2a2a69270502013b44|@4648,1,@617,@4719,@5898| 15549:D4,104|fb18319291030530929102013b035431353236323533362c362d372a68012d68010b02002e220f2f2f2d2215221522180c5029352a363d34693c2a69292c69342a696622100c3b220c2d6a220d220c22172217221722172217fa190c2a2a69271002013b1f070000|@5900,1,@618,@5899| 15550:D3,52|fb0a2b372938293b2a929103212a352b362a353da003082a36292d696402012b2a2a2505250526031e203b660201296565420000|@5904,1,@619| 15551:D3,8|fb022b3642000000|@5905,1,@620| 15552:D8,224|fb222c929103d42c352c352d362b2a0c292a690b0200342d2a929103322a352b362b352c362c220c0c292ca203032902012b2a3caa292da603032902012c2b2a69302a250b250b26091e3126090209292c2a35452a3646515129352a36292bab293ba203033c020429fa81a80303fa80103b502928403bda220ffa782a929103522a352b362a220e0c2932ab2f932a2aa90303fa63103b50302b3bdb293ba003220b030032342b2218221a221422122222fa490c5029352a362b372b2b2b6a270702012f2e2a2509250926071e503b2707020229376529270d02013b43000000|@5908,1,@621,16777215,@4557,@5228,@4597,@5907| 15553:D9,256|fb24313532363337220c330c220d330c220e2d692b34ab2f3069296801220c932c2aa90303fae5103b50220d2d3b2de3333caa2930346a0b0300220c2e2a929103252a352b362a2c221d221a221d221d2217fabc2222fabc0c2a2a2505250526031e242603020c292c2a35452a36462a3747515129352a362b37221793220e2aa90303fa93103b502218220f3bdb293ba00303fa87103b5029352936292218a003500b0200313b2a929103043b500203fa6e102a352b362a22260c29221da0030c2b2d692f2c452a465050020e2b2d692b2a2506250626041e315026035129352a362933692225220d452c462a4727060208221f30452f462e4727181f080000|@5910,1,@622,@4632,@5907,@5911,@4597,@5689,@5909| 15554:D9,424|fb21323631299291031c29352a362a220d0c220f2aa003033c02082a250426031e1b3b6602013b64f879013431ab30932a2aa903041a7c01103b50312b3bdb299291039c2c299291031c29352a362a22100c22122aa003033c02082a250426031e1b3b6602013b64037032932c2aa903041a4001103b50332d3bdb293ba003041a3501103b5029352935220c220fab220e932a2aa903041a1a01103b50220f2b3bdb293ba003041a1201103b50293529352a362930a203032902012f2b2a69296801221693322aa90303faf4103b502217333b2de350260e02023b50220d02c134299291031e29352a362a22100c292213a003052b680102082a250426031e1d3b6602013b64293ba00303fab7103b5029350b03002d22142b2215221022152215221822150c5029352a362b372b2b2b6a221393220d2aa90303fa78103b502214220e3bdb293ba00303fa7c103b502935293622162219ab2218932a2aa90303fa52103b5022192b3bdb293ba00303fa4b103b50293529352a362930a203032902012f2b2a69296801222093322aa90303fa2d103b502221333b2de350220e271866020133641f09|@5912,1,@623,@4597,@5689,@5689,@4632,@5689,@5689| 15555:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@624,@5881| 15556:D49,2320|fb32303030306b32350a160030008a00fd00e601140296032c00c303f1032c0022047a04230545052c001b072c004807c1075608af08d7083bf7ce083236333734380b03002d313b2c220f220f220e360c5029352a360b0300220c220e2f2c221522152214360c5029352a360b0300221122142f2c221b221b221a360c5029352a363b312c22106b2a2a1a8f080c2968012717f774083236293729353ba0033329362b352c362d382e390b0300312e32323222103b302217221722163a0c5029352a362b372a2c2b1a55080c296801270d023229362b352c362d382e390b0300312e32323222103b3022172217221623060c5029352a362b372a2c2b1a25080c296801270d65f701083236333732352a1a15080c292d1a13080c1a130830220f220f220f220f220f220f68082a2a1a03080c293b1a01080c299103052a680102ac220f3b3b31e330220f2213220d22112211221622161ae3070c1ae307220c2214221422142214221422146808332a1ac2070c331acd070c2a2a2e1aca070c29299291031429352a362a03033c0207292503511e133b6502013b6403460b02002c312b1aa6070c5029352a3622122f1a9e070c1a9e072216221e221e221e221e221e221e68082a2a1a69070c221d3b3b3ce33d2b2f6a2f2a1a51070c296801270b02083d2c2f6a2968016427062708f718073236333734380b03002d3030333b2e22112211221023070c5029352a362b372a2c2b1a41070c296801270bf7ea06323633373438220c392c3ba003033c02142c3ca003033c020c2c35293ca003033c02013f640b02002d2d332c22102210220f370c5029352a360b02003332220f2c221522152214370c5029352a360b0300221122143b2c221b221b221a360c5029352a362a352806a003252a362992031b299203043b5002041ac006103b50293fa5030529680102013b02013b6402013b220c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965313b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032a02062a2a1a47060c293ba003032c02062c2a1a3d060c2e92910306221a929102013b03532e35221b3522243b3b3ce32215352216362217372213352214362215373003051a0f0602031a0e063b3322222d303033220d220d321a02060c293ba00303340206342a1af8050c291af7051aa8050c270c02113f221b322210221668052a2a1a94050c64296801271cf768053236333734380b03002f2f2f333b2e221122112210390c5029352a362b372a2c2b1ab6050c296801270bf73b053236333734380b03002e302f333b2e22112211221023090c5029352a362b372a2c2b1a8c050c296801270bf70d05323629310c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a69643b2a2c1a5f050c2968012706f7dc043236333734381a51052e220d220d220d220d220d220d68082c2a1ae9040c3b340c3d2a693c2a69291a3305692f2a6966220f0c1a2c053222112211221122112211221168082f2a1abc040c402e2b2f6b296801270af784043236333734380b03002f313b2c220f220f220e360c5029352a362b370b03002d353ea0032f2d37220d2a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a69642e2a4534462b47502605024034031a2f352806a0030a2f220d3c1aa9040c0207280b30220e3c6b02182f352806a0030a2f220d3b1a8f040c0207280b30220e3b6b2a2a4530461a750447505029352a362b372a2c2b1a72040c2968012712f7db0332360b02002c2e3b3b2d220d220d220c230a0c502935280c2a692968012706f7b903323633372a350a0900150018001b001f00220027002c0012002f003f021b3d02183f0215280802113c020e3b300c02093b2f0c02043c02013f0b02002d2d312c220e220e220d370c5029352a362a3529352806a0f84e0129362c36293ba0f83c012d3734352808a0035b2b920308280d220c306a024d2b9203041ace03103b503b502b942928ffb7292840b7292840a003033c02192e942928ffb7293eb7293ca0299103033c0204303ba09127040308280d220f336a020a2e3b3bef28062a3b6a646602d534352806a003602b920308280d220c306a02522b9203041a7003103b503b50293fb42c942928ffb7292840b7292840a003033c021b2f942928ffb7293eb7293ca0299103033c02063393312aa96427040308280d2210346a02092f2edc28062a3b6a642704026e34352807a003612b920308280d220c306a02532b9203041a0d03103b503b50293fb42c942928ffb7292840b7292840a003033c021b2f942928ffb7293eb7293ba0299103033c02063393312aa96427040308280d2210346a020a2f2d3bdb28062a3b6a6427040206280d220c306a640205280d342f6a650205280d322d6a2b3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292b1a0e020c296801270cf7e301323633372a2a690b03002d313b2c220f220f220e230b0c5029352a362b372a2c2b1a5d020c296801270bf7b6013236333734381a4f022e220d220d220d220d220d220d68082a2a1ac3010c0b030031333b2c221122112210360c5029352a362b3729353ea0032d29362a372a3ba203041a1602103b503b503b2b2b1a0f020c28142a3b6a342a3022111a05020c2968012705020d302c2c220d1af5010c29680164270cf73d013236333734382b350a0900150018001b001f00220027002c0012002f003f021b3d02183f0215280802113c020e3b310c02093b300c02043c02013f0b02002d2d322c220f220f220e370c5029352a360b030034220e2f2c221522152214360c5029352a36293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965281222102d346b2a2afad20c296801271202a83236333734381a51012e220d220d220d220d220d220d68082b2afab60c29352806a00327293629920313299203043b5002041a2901103b50292fa002013b03051a1f0102031a1e0164020a28132e2b2e6b296801642705024f323633370b03002e2e313b2d220f220f220e380c5029352a362b372a2c2bfaf10c296801270a0227323633370b03002d2f313b2d220f220f220e23080c5029352a362b372a2c2bfacc0c296801270a641f07000000|@5921,1,@625,@5922,@5923,@5925,@5927,@5740,@15563,@5704,@5928,@5930,@15567,@5931,@5932,@5935,@5941,@15574,@5944,@4816,@5946,@5947,@5948,@5407,@5949,@5951,@4689,@5952,@5954,@5956,@15587,@4719,@15588,@4807,@5958,@4809,@4809,@4809,@5960,@15593,@4848,@5962,@5963,@15601,@4816,@5985,@5987,@5989,@5920| 15557:D5,56|fb082c3ba003032b022a2c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2dfa180c2a2afa172f7e0643000000|@5741,1,@626,@5922,@5740| 15558:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@627,@5924,@5923,@5740| 15559:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@628,@25,@4162,@5924| 15560:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@629,@5926,@5925,@5740| 15561:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@630,@25,@4162,@5926| 15562:D4,40|fb0b2b9291031c2b352c362a3529352a362b373c2c2c2c6b2efa190c2a2a69270802013b42000000|@4648,1,@631,@5927| 15563:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@632| 15564:D4,104|fb082c350a16002c002c002c002c002c002f002c002c002c002c003f002c002c002c0048004b002c0054002c002c002c002c002b022e2c372d382a2efa360c2a2afa31307e072c37292dfa282e7e053c02122c37292dfa1c2e7e052c36292dfa132e7e0543000000|@5929,1,@633,@5928| 15565:D7,104|fb16329291035b323533362a352b362a352b362c373b22100c3d2a693c2a6929fa52692e2a696622100c50fa4b220f2211220e220e22152213221368082b2afa3b0c2e2c2b6a293169332215221522152215221522152215fa260c2a2a69270d02013b1f08000000|@4648,1,@634,@4719,@15566,@5704,@5930| 15566:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@635| 15567:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@636| 15568:D4,24|fb052b9291030c2b3629fa180c3c2a696502013b42000000|@4648,1,@637,@5931| 15569:D5,120|fb092d350a16002c002c002c002c002c002f002c002c002c002c0042002c002c002c004d0058002c0063002c002c002c002c002c023f2d372e382a2f2ffa450c2a2a30fa3f317b05082d37292e2efa342f7b05062d36292d2ffa2d2f7b05062d37292e2efa1e2f7b05062d36292e2efa132f7b0506440000|@5929,1,@638,@5932,@5933| 15570:D4,96|fb0f2d9291030d2c929103052b929102013b02013b03462d352e362e352f362f3530362e3529352808a00309293629353da06402013b03112f3529362936303529362b2aa0270502013b03032b02013b2f2e2dfa170c2a2a69270902013b4400|@5934,1,@639,@5933| 15571:D7,112|fb122d3ba003182c3ba003043b500203fa6a10fa6b2c2a35452a364664024d2d352e362e929103043b500203fa56102e352f360b02002e2d2bfa4d0c5029352a36313ba0030c2f2a69220c2c452a466402182f3529352a362b373c2c2c2c6b29306922112a4530462706270944000000|@5937,1,@640,@5936,@4685,@5936,@5935| 15572:D5,152|fb0a2c350a16002c002c002c002c002c002f002c002c002c002c0049002c002c002c005d006b002c007c002c002c002c002c002c02602c362d372e382a2ffa640c2a30fa5f0c28052e2c2c6b270502462c362d372e382a2ffa4a0c402d2b2d6b270402322c362c2afa3e0c280e2a696502242c362d37292efa2a0c280f2c2b6a6602132c362d372e382b2ffa170c28112a2d2d6b27044300|@5943,1,@641,@5941,@5942| 15573:D6,64|fb082c3ba0030f2b3ba003043b500203fa3a103b02262c352d362d929103043b500203fa2b102d352e362b2afa260c2d3ca003032902032b2a69270543000000|@5937,1,@642,@5936,@5936,@5942| 15574:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@643| 15575:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@644,@5945,@5944,@5740| 15576:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@645,@25,@4162,@5945| 15577:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@646,@5946| 15578:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@647,@5947| 15579:D4,80|fb153434a003033b02423433b3322ab132322b6a220e220db3322ab132322b6a280d322b6a2812332b306b3d2a6922143cb1221422142214221422142214221422142214fa160c2a2a69270a1f0a0000|@5950,1,@648,@5949| 15580:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@649,@5951| 15581:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@650,@5953,@5952,@5740| 15582:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@651,@25,@4162,@5953| 15583:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@652,@5955,@5954,@5740| 15584:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@653,@25,@4162,@5955| 15585:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@654,@5957,@5956,@5740| 15586:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@655,@25,@4162,@5957| 15587:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@656| 15588:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@657| 15589:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@658,@5959,@5958,@5740| 15590:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@659,@25,@4162,@5959| 15591:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@660,@5961,@5960,@5740| 15592:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@661,@25,@4162,@5961| 15593:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@662| 15594:D4,56|fb092d2da003033b022c2d2c0c293529353ba0030c29362a3728062b2b6a650207293628082a6964303caa293131fa140c2b2a6927054400|@4843,1,@663,@5962| 15595:D16,1060|fb1c2d350a16002c002c005c002c002c0092002c002c002c002c00d4002c002c002c0015013b012c002c002c002c0076012c002c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652e2d311ad9030c2a2a1ad7032f7e08f7bc032d362e372e3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965312c3b311aac030c3d2a2d6a2b2a1a9e03327e0b2d362e372f382f3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965322c3b321a74030c332c3b331a6c030c28052f2c2c6b2c2a1a5c03347e0d2d362e372f382f3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965322d3b321a32030c332d3b331a2a030c402b2b2f6b2c2a1a1b03347e0d2c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292f1af5022e7e072d362e372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba0030329020629301acb020c322c2b321abf02337b060a2d363b2a2e1abb020c3b2a301ab8020c293ba0f82d012f3b2a929103152a352b362a2c692a2a2505250526031e143b660201296528142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6c020c0201293b2e299291031229362b3caa292b25042504511e113b6502012a65293ba803043b5002041a450210293ba203033c0205291a3c02a603041a3a02103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502d2b692811302b22146b322a1a780122117e13293529352a360b02002c2a1a8a010c5029352a362a2a6930353da0f80f0130363c3b292fa903032a0234293cb12a3ebb2f2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba0912903033102013b2931250a250a26081e373b2708652211299291035829352a362a353ba003262a372b382c39302ca0030b2a34a003032f02013b02013b0309292d692968016402013b6602252a353ca0031e2a3829fafb0c29fafbb729faf7a0030a2c250626051e503b02013b6602013b6502013b64293ba0033322123b2a929103152a352b362a2c692a2a2505250526031e143b66020129652808220c6928112a3022196b2b2afa8022167e18293529352a363c3b30221a6b292b69293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292efa4b22197e1b220f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652808326928112a2d22166b2b2afa1922137e151f04000000|@5965,1,@664,@5966,@5740,@5963,@5968,@5969,@5974,@4851,@5978,16777215,@5980,@5964,@5752,-536870912| 15596:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa690c2b3131fa630c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa3f0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa240c2a3131fa1e0c28052e2c2c6b2705020628112e2e2e6b44|@5967,1,@665,@5966| 15597:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@666,@5968| 15598:D5,116|fb112c3ba003033b02662c352d362d35302aa803033b02572e352f36323ba203033c0203322ba80303fa55103b50323ebb2a2adc342807b729281fa903033b02033c2aba2b2ab7293ba0910311220e3caa2933220ffa2d0c342a6965020f220e3caa2933220ffa1c22107b051027076644000000|@5971,1,@667,@5970,@5969| 15599:D5,340|fb162c3ba003042df745012c352d362a352808a003092a3629353da06402013bf82b012a3629362f299291032429352a362a353ca003082a37292ea06402013b03052a68010207292503511e233b6502013b64299291032d293529353ca0032129382935280ba0031429362a382a352808a00305293ba002013b6502013b6402013b6402013b03c22935293829362a372a36220e92910399220e3529352a362a2da003033c02582a353ba003132c353ba0030a2a362d362a2aa06502013b023f2a353ca003132c353ca0030a2a362d362a2aa06502013b02262a353da003132c353da0030a2a362d362a2aa06502013b020d2a353ea003062c353ea002013b031429929103043b500203fa541029352e2aa66402013b03152d2a692d2a6929680129220f2214fa3c22157b05153b6602152a3b692a2a6929680129220c2211fa2322127b0512270502013b6602013b6544000000|@5976,1,@668,@5975,@5974| 15600:D8,444|fb1f2c1ac2012a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b6602012965293caa293ba203033c0205291a9501a603041a9301103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64220c299291034229352a362a3ba203033c02032a34a803041a2801103b502a3ebb312adc2c2807b729281fa903033b02033c2aba2b2ab8220c2e2be4502e250826071e403b270702013b64313ba803043b500203faf110313ba203033c020431fad9a60303fad8103b5031281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b292211a20365293ebb220e2adc2b2807b729281fa903033b02033c2aba2b2ab7293ba09103053032b8020131312880a0031e34312be4502f3caa313cb13b3c2b2d250c250c250c250c26081e4b5102172f3caa323cba2b2a342d250c250c250c250c26081e64512606020e2c3ba003043b5002052e2b2ee45026042a95502210220d452b46270e430000|@5983,1,@669,-1,16777215,@5980,@5982,@5978| 15601:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@5703,1,@670| 15602:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@671,@5990,@5989,@5740| 15603:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@672,@25,@4162,@5990| 15604:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa460c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa1b0c2a2afa1a2f7e07440000|@5741,1,@673,@5991,@5920,@5740| 15605:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@674,@25,@4162,@5991| 15606:D5,204|fb1a3036299291039a2935323533370b03002e220e3b2c220f220f220e360c5029352a360b0300220c22143b2c221522152214360c5029352a360b02002d352806a003322d362992031e299203043b500203fa84103b5029221bb322112ab12c3b452a465051020b2e68012b2a45221246505050020b2d68012a2a45221146505029352a36220c2b2b6a220c3ba003032f02062f220dfa440c221b2b452a4627160225313532370b03002e220d3b2c220e220e220d360c5029352a362a3b316a220e2a452b462709641f0600|@5993,1,@675,@4816,@5992| 15607:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@676,@5992| 15608:D3,4|fb023b42|@5474,1,@677| 15609:D6,48|fb072d3ba0031b2c352806a003112c362d37292efa260c28062c2b6a6602012c020d3b2d2dfa190c2e2afa182e7e0644|@5741,1,@678,@5996,@5995,@5740| 15610:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@679,@25,@4162,@5996| 15611:D4,8|fb02fa1010000000|@5827,1,@680,@6000| 15612:D3,4|fb023b42|@5829,1,@681| 15613:D3,4|fb023b43|@5827,1,@682| 15614:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@6008,1,@683| 15615:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@684,@5063,@6009| 15616:D18,496|fb152d350a16002c002c0030002c002c0062002c0094002c002c002c00650192012c002c00cb012c002c002c002c002c002c003bf7b8012b299291031729352a362a353da00309292503511e133b02013b6502013c64030d2d2d2d1a9e010c2968016402013bf786012b299291031729352a362a353da00309292503511e133b02013b6502013c64030d2d2d2d1a6c010c2968016402013bf754012d362e372f382a352805a003412a362b372c383237293b3b3ce3501a470134346a2807312e316b292b1a3d010c1a3d01220e220e6a28073430346b292b1a29010c2805332e2c6b296801270b02802a35280ca003542a362c311a15010c291a14010c3b322b6a293b690b0200220e2d323b2d1a04010c5029352a362807322b220d6b2b3ba003032902182bfaf00c3e2a69293b69293ba003032c0205280f2a2e6a66296801270c02252b30fad40c29fad40c3b312b6a293b69face342b6a2f2afaa70c28072f2b326b29680127076602832d362e372f38293ba0031e3d2b306a293b69faa8322b6a2e2afa7d0c280b2a303b6b296801270502013b6602562d360b020030302e3c2dfa6f0c5029352a362a3ba003032902182afa760c3e2a69293b69293ba003032c0205280f2a2e6a662968012707021d2d362e372a2ffa560cfa5730306a2b2afa200c280f2c2b6a296801270644|@6011,1,@685,@6012,@15628,@5704,@15629,@6024,@6025,@6026,@6155,@6156,@6157,@15724,@15725,@6158,@6159,@15617| 15617:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@803,@6009| 15618:D16,528|fb1e2c352d372d3b2a929103272a352b362a353da0030e2a36292da603032902012c6402012b2a2a2505250526031e263b6602012965293caa293ba203033c0205291ad701a603041ad501103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64220d299291034f29352a362a353da003392a36293ba203033c020429220ca803041a6101103b50293ebb322adc2b2807b729281fa903033b02033c2aba2b2ab8220d2e2be450260602023b50292503511e4e3b6502013b643b32293ba003032a023e293cb22a3cb22b3cb2293ebb342adc2b2807b729281fa903033b02033c2aba2b2ab7293ba091293ca003053034690201332933250c250c260a1e413b270a65343b3b3ce32a929103082a36293ba06402013b03332a35facf2a6922142afacc0cfacd2215692a2afaca0c2d3caa293ba20303fac3103b503b2a302dfabe0c28142a3b6a270702833b220e0c3b2c299291031229362b3caa292b25042504511e113b6502012a653d2b6928082a69fa902a306a22172afa740cfa892218692a2afa720c3b3b32322d680522143caa312aa00318313ba20303fa5e103b503b3234fa660c28142a3b6a64020e3b3b220d32fa5a0c28142a3b6a642b3b69293ba003032a0205280f2a2c6a270c270e440000|@6014,1,@686,16777215,@5980,@5982,@15619,@6016,@15621,@5704,@4848,@6018,@15623,@15625,@6022,@6013| 15619:D4,28|fb062b352806a0030a2b2a363bfa192e7b0503280b2c2b363b6b4200|@6015,1,@687,@4807| 15620:D4,144|fb0a2c350a16002c002c0033002c002c0043002c002c002c002c005d002c002c002c00760079002c002c002c002c002c002c002c2c2c7d0402552c362d372a2efa5a0c3d2a2c6a6602452c362d372e382a2ffa480c2a30fa430c28052e2c2c6b2705022b2c362d372e382b2ffa2e0c2b30fa290c402b2b2e6b270502122c020f2c362d37292efa140c280f2c2b6a6643|@6017,1,@688,@6016| 15621:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@689,@4706,@6009| 15622:D5,36|fb082e2ea003033b02182e2da003032b0202fa1c2f3caa29303030fa170c2b2a69661f04|@4843,1,@690,@4689,@6018| 15623:D4,16|fb062937fa160c28112d2b2d366b6442|@6020,1,@691,@6019| 15624:D8,440|fb1f2b1abe012a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b6602012965293caa293ba203033c0205291a9101a603041a8f01103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b6434299291034229352a362a3ba203033c02032a34a803041a2501103b502a3ebb312adc2c2807b729281fa903033b02033c2aba2b2ab8220c2e2be4502e250826071e403b270702013b64313ba803043b500203faee10313ba203033c020431fad6a60303fad5103b5031281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b292211a20365293ebb220e2adc2b2807b729281fa903033b02033c2aba2b2ab7293ba09103053032b8020131312880a0031e34312be4502f3caa313cb13b3c2b2d250c250c250c250c26081e4b5102172f3caa323cba2b2a342d250c250c250c250c26081e64512606020e2c3ba003043b5002052e2b2ee45026042a9550220c2b69270e420000|@6021,1,@692,-1,16777215,@5980,@5982,@5978| 15625:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@693,@4706,@6009| 15626:D5,48|fb092d2da003033b02252b3ba20303fa2b103b503d2c6928082a69280b2a313b6b303caa293131fa170c2b2a69270544|@4843,1,@694,@5886,@6022| 15627:D5,68|fb0b2c929103382c352d36302ba0031a280b2e313b6b313caa313caa2a2a2e33fa2e0c2c2a6927040212303caa2b2b692a322b32fa1a0cfa1b2a69666502013b1f040000|@6023,1,@695,@6013,@4689| 15628:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@696,@6009| 15629:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@697,@6009| 15630:D6,44|fb0b2c929103202c352d362a352b36fa2730692b2afa250c292c692e33fa210c2a2a69270802013b43000000|@4648,1,@698,@15631,@5704,@6024| 15631:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@699,@4706,@6009| 15632:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@700,@6025| 15633:D29,1652|fb3a2f353036313730353136323733383439220c3a220d2306220e23072e3ba003042210020722102f1a54060c220f3da032352807a00305293ba002013b03f43236333734382b3b2a3ba003033c023b2a352b362a3529352808a00309293629353ba06402013b03202b35293629362930a003112f3caa2e2a2509250926071e373b6402013b6602013b666503412b322a3ba00305293ba0022a2a352b362b9291031f2b352c362c362b352a2aa0030d2d2c2508250826061e283b02013b270402013b65650305292fa002013b02013b299103033b02592b352808a003452b3629353ca003392936220c2a2a929103043b5002041a8d05102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b64656528082a692968016602013b64020d2b352806a003052b680102013b270402013b293ba0f82b052e3ba003212b299291031729352a362a353ca003033c0207292503511e163b6502013b6402013b033a2d061a1f052a6929220f220f6a1a18052a69220e2a1a14050c2d352a221022102210221022102f22106808280c2a6922183b452a462708f7c6042d061af1042a6929220f220f6a1aea042a69220e2a1ada040c2211299291031b29352a362a351ad504a003052a68010207292503511e1a3b6502013b64293ba003471abd04299291031b29352a362a351aab04a003052a68010207292503511e1a3b6502013b64293ba003041a9704103b50293529351a8504a003043b5002041a8704102937650215293529351a6e04a003043b5002041a7004102937643b220e299291031229362b3caa292b25042504511e113b6502012a652a3ba091030622193ba002013b03051be80302012a2d2b2b1a39040c0b03002d353ea0030e220d352a3c4534462a47505002a82d353ca003752d3629933b292ba903033b02162b2a3bdb29030529680102092a3cb12502501e1a3b6464293ba091033a3b2219299291031229362b3caa292b25042504511e113b6502012a65221135220e221a2f2d2220221b2f1ac8030c2f3b452a463b47502603020d2210352d3c45220e462a4750502603022d2d353da0031b2d363322162b22111a9d030c220f352c3b452b462a47502603020c220d352a3b4534462a47505029352a362b372a221b221b221b221b302f221b68080b0200221a3ca0f8bf0222173c1a60030c29353ba003132936299291030829362992916402013b6402013b033b29362a372a352b3629352a36220c35280ca003192a3b692d2a692b92919103032f02031a21033b2b2b6a66020a2c3b693b2a1a12036a642706020129221d1a0a030c0b02002d353ba003082d362992916402013b03e92d362e372a3622203b2a929103262a352b362a353ba0030d2a37291adb020c292e696502012b2a2a2505250526031e253b66020129652929929103043b5002041aba021029352a36299291031829352a362c2b1aab020c292b6964250526041e283b6502012a656429321a98020c292d6922121a93020c29353da003062f353ca002013b03582225293ba003033b024329352a362a353ba003312a3629299291031729352a362a353da003033c0207292503511e163b6502013b6403033c02082a250426031e3d3b640207292503511e473b656403032902031a150202012f322c452a46502609020b1a21022a2a35452a36465129352a362a9291f812012a352b362992910323222a3b3b3ce3500b0200221022302b1af8010c5029352a36220f2b452a4650260502e32b353da003262b36222b3b3b3ce3500b020022112d22322c1ad0010c5029352a3622102b452a4650260602b72a299291038229352a362a353ba0035a2a362b372a9291034d2a352b36293ba003112b353da003082b37293ba06402013b02013b03033c022a2a299291032229352a362a353da003082a37293ba06402013b03033c0207292503511e213b6502013b646502013b65020f2a353da003082a37293ba06402013b03033c0207292503511e813b6502013b640324222a3b3b3ce3500b020022102e22312c1a24010c5029352a36220f2b452a46502605020733220e453b465051023229353da00325293622293b3b3ce3500b0200220f2d22302cfaeb0c5029352a36220e2b452a46502606020731220c453b465026080206292d453b465029352a362a3a293ba00328221d3ca0031f221a92910315221a35221b362a353ca00305293ba002013b6502013b9102013b02013b030922233b3b3ce35002023b50280c2c6922292c452a4627190209293522113b452a4664270e1f0500|@6028,1,@701,@6029,@4721,@15635,@15636,@5704,@15637,@15638,@54,@5420,@5469,@4594,@6031,@6035,@6056,@6061,@5064,@6075,@6076,@6077,@6079,@6080,@6081,@6083,@6084,@6099,@6027| 15634:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@702,@6029| 15635:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@6030,1,@703| 15636:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@704,@4706,@6009| 15637:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@6030,1,@705| 15638:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@706,@4706,@6009| 15639:D9,140|fb0f3b063c062e3ba203033c02042efa87a80303fa86103b502e28403cda302f3c3c2d3030fa790c293ba00304fa7502552c3529910304fa6f024a2c3503242b93293ba00304fa6402132928403bda2d3b3b2c3b3b30eb5029955029643d2a696502222b93293ba00304fa4002132928403bda2d3b3b2c3b3b30eb5029955029643c2a696564270444000000|@6033,1,@707,16777215,@4557,@6032,@4705,@4517,@4725| 15640:D5,1852|fb18303ba003043bf72e0731350a1600ea0035017d01bf010302c9020d03250338045a0468048604a1042a058f052c00c205dd055706c706e1060f07313632372a332a9291039f2a352b362a353ba0031f2a392c3ca803052c3cab02013b2a2a3b22102210221022101adc060c6502682a353da003142a36292d3b220f220f220f220f1ac2060c64024e2a353ea003362a36292d2a929103282a352b362a37280c2a69292e3b22152215221522151a97060c2c2a2507250726051e263b2705020129656402122a38292d3b220f220f220f220f1a72060c642a2a2505250526031e9e3b66020129652a2a34343434341a5606220c7b090cf73f063136323733382a3b692c2a692b2a69220d3ca80306220d3cab02013b2a2a2a929103212a352b362a2c3b22132213221322131a19060c2a2a2505250526031e203b66020129652707f7f405313629352a36293b692b2a69220c3fa80306220c3fab02013b2a2a2a929103212a352b362a2c3b22122212221222121ad1050c2a2a2505250526031e203b66020129652706f7ac053136323729332a929103262a352b362a352937292e3b22102210221022101a9a050c2c2a2507250726051e243b2705020129652b2a3b343434341a7e05220c7b090c31363237293b692b2a69343ca80305343cab02013b2a2a2a929103212a352b362a2c3b22112211221122111a4b050c2a2a2505250526031e203b66020129652705f72605313732383339333ca80305333cab02013b2a36299291033829352c352a3b692a2a69292f2a929103212a352b362a2c3b22152215221522151afa040c2a2a2505250526031e203b6602012965270402122b35292c3b220e220e220e220e1ad5040c642d36299291033829352f352a3b692a2a69292f2a929103212a352b362a2c3b22172217221722171aa9040c2a2a2505250526031e203b6602012965270402122e35292c3b22102210221022101a84040c64302a3b22102210221022101a740422117b0911313632373338333da80305333dab02013b2a2a220c220c220c220c220c1a4f040c2c2a220d220d220d220d220d1a3f040c2e2a3b220e220e220e220e1a3004220f7b090f31362992030331020b313ca80305313cab02013b64f704043136323729352808a00311293629353ea00305313ca002013b6402013b03a52a3b2a929103502a352b362a3529352808a00309293629353ba06402013b030a293629362e2aa06502013b03043b50021534932d2aa903041abd03103b50220c2e3b3be350502c3caa2b2a2506250626041e4f26040200512e3b3b3ce3503103043b5002062d3b3b3be350323ea80305323eab02013b2b2a2a929103232a352b362a35292d3b3c2210221022101a64030c2b2a2506250626041e213b27040201296564024b323da80305323dab02013b2b2a2a929103242a352b362a35292d3b22102210221022101a29030c2b2a2506250626041e223b2704020129652b2a3b220c220c220c220c1a0903220d7b090d65f7f102313629353ea003052f3ca002013b03033b020b313ca80305313cab02013b64f7cf02303ca80305303cab02013bf7c10231363237293333333333331ac2020c2b2a3b343434341ab702220c7b090c3136313ca80305313cab02013b2a2a3b333333331a9b02347b090b313629352a382b392a299291031729352a362a353ea003033c0207292503511e163b6502013b6403033b02583b2a299291031229362b3caa292b25042504511e113b6502012a653b2c299291031229362b3caa292b25042504511e113b6502012a652a2aaa220e2aa80306220e2aab02013b2f2a3b3b2210221022101a180222117b09112704f7ff013137313ca80305313cab02013b2a36299291033829352c352a3b692a2a69292f2a929103212a352b362a2c3b22132213221322131ad7010c2a2a2505250526031e203b6602012965270402152b35292c3b220c220c220c220c1ab201220d7b090d66f79a01313629322a929103242a352b362a35292d3b220e220e220e220e1a8c010c2b2a2506250626041e223b27040201296564f767013136313ca80305313cab02013b2a2a3b333333331a5f01347b090b3136323733382b352814a003402b3629220c2a929103212a352b362a2c3b22102210221022101a32010c2a2a2505250526031e203b66020129652b2a3b220d220d220d220d1a1301220e7b090e2a35342aa80305342aab02013b2d2a3b220d220d220d220dfaf40c2c2a3b220e220e220e220efae6220f7b090f31373238323ca80305323cab02013b2a36299291033729352c352a3b692a2a69292f2a929103202a352b362a2c3b2214221422142214faa90c2a2a2505250526031e1f3b6602012965270402112b35292c3b220d220d220d220dfa850c642d2a3b220d220d220d220dfa76220e7b090e3137313ca80305313cab02013b2a2a3b33333333fa5b347b090b313629322a929103202a352b362a2c3b220d220d220d220dfa3d0c2a2a2505250526031e1f3b660201296564021a3136313ca80305313cab02013b2a2a3b33333333fa13347b090b1f0700|@6034,1,@708,@6032,@4632| 15641:D17,288|fb170b0300343b343b3b3b3b3022121a1a010c5029352a362b37293ba003051a0e0102553b2a299291031229362b3caa292b25042504511e113b6502012a6529faf2a80303faf1103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e260351299550296522102a2210fabcfabe0c220d3b3bef293ba00304fab5024b293db1292808b1293cb2293fb429fa93a503043b500203fa9e10292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c270822103ba20303fa68103b503b2211fa640c303ba003032902052931fa5b0c30fa5b0c2e2dfa5a2d2d3c221622186808280c2a6933fa4e0c28072a2c22176b27111f070000|@6037,1,@709,@6038,@4725,16777215,@5803,@6040,@6043,@4926,@4054,@4848,@6053,@6054,@6055,@4706,@6036| 15642:D5,232|fb19333ba003642f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2c452b462a47660278333534362a352b363b220e693093220f2aa90303fa73103b503122103bdb0328220f3caa220f3caa2c220f693c22126929220f69322e2e22152f22152f22152215fa4a22167b0b16220f3caa220e3caa28082d692930306a292210693b2213692922116934302217312217302f22172217fa1a22187b0b181f09000000|@6039,1,@710,@4599,@6038| 15643:D4,12|fb0528072dfa112e6b430000|@6042,1,@711,@6041| 15644:D6,20|fb07fa1c2e2d2f6bfa1a2a69302afa182f7e0800|@6044,1,@712,@15646,@15645,@5704| 15645:D4,64|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa2a0c3131312c313131316808280c2a69296801270c02052b2a362c80420000|@6049,1,@717,@6052| 15646:D5,112|fb082b352808a003092b3629353ba06402013b03212b3629362b36932a2aa90303fa59103b502c362b3bdb28082a69296801270502392b352807a003162b3729352808a00309293629353ea06402013b6402013b03182b362c382a3b2d382efa1f0c292b2e370c296801270402013b42|@6046,1,@713,@4599,@6045| 15647:D7,84|fb0f2e3ba003033b02482e352f362a352b363093322aa90303fa45103b5031333bdb030e323caa2d2a3434fa37220c7b060cfa3431692c2afa320c292d69220c3caa302a220e220efa1a0c2b2a69270527051f04|@6047,1,@714,@4599,@6045,@15648,@5704| 15648:D4,64|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa2a0c3131312c313131316808280c2a69296801270c02052b2a362c80420000|@6049,1,@715,@6048| 15649:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@716,@5704,@6050,@6048| 15650:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@718,@5704,@6050,@6052| 15651:D4,28|fb062c2ca003033b020f3c2d692d3caa292efa140c2b2a6966430000|@4843,1,@719,@6053| 15652:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@720,@6054| 15653:D4,32|fb092b929103162b352c362a362b372a2a692cfa170c2a2a69270602013b4200|@4648,1,@721,@6055| 15654:D4,32|fb092b929103162b352c362a352b362a2a692cfa170c2a2a69270602013b4200|@4648,1,@722,@6036| 15655:D9,132|fb100b0200303b3b3b2d3434fa820c5029352a36293ba00304fa7902553b2a299291031229362b3caa292b25042504511e113b6502012a6529fa5da80303fa5c103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965342a34fa29fa2b0c3d2a2e6a27071f040000|@6058,1,@723,@6059,@4725,16777215,@5803,@6057,@6043| 15656:D6,208|fb1b313ba003442f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2b452a46650281313532362a352b363093220c2aa90303fa7f103b5031220d3bdb031e220c3caa3b220e6929220d692f2c22102c221022102210fa6022117b091130353135293caa333b3b2ce322103caa22113ba20303fa47103b503b22126928082a6931302b6a293469292215693d336929221669220f312d2c221922192219fa19221a7b091a1f070000|@6060,1,@724,@4599,@6059,@5886| 15657:D3,8|fb03280e2d694300|@6042,1,@725| 15658:D12,376|fb142c9291f86c012c352d362a353da003cb2a36293caa293ba803043b5002041a610110293ba203033c0205291a5801a603041a5601103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203492933a003052b2db802012c2c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e2f5102172a3caa2d3cba2b2a2f2d250725072507250726031e485150020e2c3ba003043b5002052e2b2ee45026042a95502d2b693d2a3b3c6b270702802a353ba003782a362b372f3ba003033d02012f2b2afa9c0c0b02002c353ba0030d2c362d372b2b452a4650510206293b452d465029352a3630fa7c0c220e3da0032931299291031f29352a362afa6c0c29fa6ca0299103033c02082b250526041e1d3b270402013b6402013b0304fa530208292c693b2a2d6a64270a0202fa432a3ba0030329020c2a2ffa270c2a2afa36317e08660202fa2a4300|@6063,1,@726,@5978,16777215,@5980,@6061,@6064,@5752,-268435456,@5064,@6062| 15659:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@727,@6065,@6064| 15660:D8,212|fb150b02002e2afad70c5029352a362a3ca40304face02b92a3ba803043b500203fac5102a3ba203033c02042afabda60303fabc103b502a281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2933a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502e2b693d2a303b6b2705270542|@6067,1,@728,@6066,@5064,@5978,16777215,@5980| 15661:D14,308|fb102c350a16002c002c002c002c002c0039007b002c00de002c002c002c002c002c002c00ea002c002c002c002c00f3002c001a0a012c2a35452a36466402f12c372d380b02002d2afaf90c5029352a360b0200312afaec0c5029352a362f2ba003102e03032902013b220f31452a4664020bfad3220f2a35452a364664270c02af2c36299203033c021429920303fabb103b5029942928ffb7293ba09165030cfaad2d2a35452a364664023529920303faa1103b50299329920305293ba2020529942811a00308fa8e2afa8f0c020129299203043b500203fa85102e2a453c466564024cfa7d2c2a35452a36466402402c37292dfa4d2e7e052c362d37293ba003233b2b299291031229362b3caa292b25042504511e113b6502012a652e2a453b4664020afa402e2a35452a36466465430000|@6068,1,@729,@4688,@6066,@4688,@4809,@4688,@4809,@4564,@4565,@4560,@4688,@4688| 15662:D10,708|fb212c353ba003062b353ba002013b03292c362d372d362e372c2b1ab2020c2992919103051aac02020b2c2b1aa9020c3b2b2b6a642705f789022c353da003062b353da002013bf877022c362d372e382e362f3730382e353b2a293ba003032a0241293cb22a3cb22b3cb234362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b652d353b2a293ba003032a0241293cb22a3cb22b3cb233362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b652b2a2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b6503183103032e02013b3103032e02013b3d220c2c2c6b65f779013003032d02013bf86d01323530352a2aa603032a020129293ba803043b5002041a750110293ba203033c0205291a6c01a603041a6a01103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203d12214352a2aa2033a2215352216362c3ba203033c02032c2ba803041a1101103b502c3ebb2a2adc2e2807b729281fa903033b02033c2aba2b2ab7293ba091270702013b03033c02432212352b2aa203392213352214362d3ba203033c02032d2ba80303faca103b502d3ebb2a2adc2f2807b729281fa903033b02033c2aba2b2ab7293ba091270702013b6403052c2eb802012d2d2880a0031e302d2be4502b3caa2d3cb13b3c2b2d250825082508250826041eb75102172b3caa2e3cba2b2a302d250825082508250826041ed05151020e2c3ba003043b5002052e2b2ee45026042a95502d2b6922100304220d02013b22100304220d02013b3d2c2c2c6b270a0202fa17270a0202fa1143|@6070,1,@730,@6069,@5064,@6062,@5978,16777215,@5980,@5970| 15663:D5,44|fb092c929103052b929102013b03192c352d362d352e362c2bfa1d0c2c2bfa1c0c2a2a69270602013b430000|@5900,1,@731,@6071,@6069| 15664:D7,60|fb092c3ba0030f2b3ba003043b500203fa36103b02232c352d362d929103043b500203fa27102d352e362c2bfa220c2c2bfa210c2a2a692706430000|@6073,1,@732,@6072,@6072,@6062,@6071| 15665:D5,32|fb082b929103162b352c362a36293bfa1b0c2bfa1b0c2a2a69270502013b4200|@4648,1,@733,@6061,@6075| 15666:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@734,@6065,@6076| 15667:D6,64|fb092c3ba0030f2b3ba003043b500203fa3a103b02282c352d362d929103043b500203fa2b102d352e362c353da003032c02012a2c2bfa1c0c2a2a6927064300|@6073,1,@735,@6072,@6072,@6079| 15668:D7,76|fb092c3ba0030f2b3ba003043b500203fa46103b02322c352d362d929103043b500203fa37102d352e362a353da0030d2c353da003032a0202fa2502012a2c2bfa220c2a2a69270643000000|@6073,1,@736,@6072,@6072,@5064,@6080| 15669:D8,292|fb132b35280fa003092b37291a21012d7d042b352805a0031c2b372c382a1a0f010c29353da003032902072a1a01012f7d066602ed2b352814a003e42b362c37293ba003d63b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fac910293ba203033c020429fac1a60303fac0103b5029281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502d2b693d2a3b3b6b27060202fa23650202fa1e4200|@6082,1,@737,@6081,@5978,16777215,@5980,@5064| 15670:D23,392|fb2f2d352935280ca003043b5002041a820110293629392a2307313632383339343a220c2306220d23073b220e0c3b220f0c3b30299291031229362b3caa292b25042504511e113b6502012a653c2a691a45012a691a44012a2c6a220f2a1a3f010c3b34299291031229362b3caa292b25042504511e113b6502012a65220f3b2b1a20010c28072a2d22126b3d3269293b69293ba003042210020722102a1a07010c22143ba003042210020722102215fafa0c2d2214faf82d2d22152215221b6808220e2a69313ba20303fae7103b503b32fae40cfae52a6922153bfae20c221a3bfae00c293ba003032a02052a2afad70c28072afad522186b221b3b3bef293ba00304faca0243293cb1292808b1293cb2293fb429fabca503043b500203fab710292841bd2a3cb22a2a3b3bf02b3b3b32f05022233f2d3f34ec503f31b12c2a282de4502c95502c27082b2afa8d3222233b3b22256808280c2a693d221a69293b692b2222fa782c22233b3b22236808221b2a69293b69220f2a69222c2d452a46272a44000000|@6086,1,@738,@6087,@15671,@15672,@5704,@6092,@6094,@6095,@4706,@4848,@6096,@4688,@6097,@6098,@6085,@5175,@4138,16777215,@4054,@4706,@4706| 15671:D3,36|fb032b352808a003092b3629353ea06402013b030b28082a36692968016402013b420000|@6090,1,@739| 15672:D4,88|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa420c3131312c313131316808280c2a69296801270c021f2b352808a003092b3629353ea06402013b030b28082a37692968016402013b42|@6049,1,@740,@6091| 15673:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@741,@5704,@6050,@6091| 15674:D4,48|fb0d2d3ba003033b02222d352e362a352f2faa3b2a6928082a69292d69333caa2f2a220cfa160c2b2a69270944000000|@6093,1,@742,@6092| 15675:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@743,@6094| 15676:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@744,@6095| 15677:D4,28|fb062c2ca003033b020f3b2d692d3caa292efa140c2b2a6966430000|@4843,1,@745,@6096| 15678:D4,44|fb0c2c3ba003033b02202c352d362a352e3caa3c2a6928082a69292d69323caa2f2afa140c2b2a6927094300|@6093,1,@746,@6097| 15679:D4,40|fb0b2c3ba003033b021d2c352d362a353b2f6928082a69292c69313caa2e2afa130c2b2a69270843|@6093,1,@747,@6098| 15680:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@748,@6085| 15681:D15,372|fb2f2e352f3630383139323a3323063423073b340c3b220c0c3b30299291031229362b3caa292b25042504511e113b6502012a653c2a691a46012a691a45012a2c6a220c2a1a40010c3b34299291031229362b3caa292b25042504511e113b6502012a653b2a6928082a6928112d22172c6b220e1a15010c3d3469293b69293ba003042212020722122a1a03010c22103caa2e2216fafd2d3122172f3c680822102a69221d353b3b292ca903032a023b293cb12221362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3e3b27096522173bfaa70c29faa70c28072afaa53c6b3b3b3b2f2d6805293b693b3b2226fa970c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa700c0201292c3ba00303290205280f2d2b6a3d221d69293b692b2225fa572c22263b3c22266808221e2a69293b6922102a69222c2d452a46272a1f0400|@6101,1,@749,@15682,@15683,@5704,@6104,@6105,@4706,@6106,@6108,@5175,@6100,@4851,@4706| 15682:D3,36|fb032b352808a003092b3629353ea06402013b030b28082a36692968016402013b420000|@6102,1,@750| 15683:D4,88|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa420c3131312c313131316808280c2a69296801270c021f2b352808a003092b3629353ea06402013b030b28082a37692968016402013b42|@6049,1,@751,@6103| 15684:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@752,@5704,@6050,@6103| 15685:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@753,@6104,@5205| 15686:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@754,@6105| 15687:D4,40|fb0b2c3ba003033b021d2c352d362a353b2f6928082a69292c69313caa2e2afa130c2b2a69270843|@6107,1,@755,@6106| 15688:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@756,@6108,@6109| 15689:D7,116|fb102b352e2aa003033b02662c352d36303ba203033c0203302ba80303fa61103b50303ebb2a2adc322807b729281fa903033b02033c2aba2b2ab7293ba091031e280bfa3f220d3b6b220d3caa220d3caa2a2a220ffa310c2c2a6927040211220c3caa29220d220dfa1e0cfa1f2a696527076444|@6111,1,@757,@5970,@5044,@6100,@4689| 15690:D16,312|fb2c2e352f3630383139323a3323063423072a060b030022103b3b2c31220f1a22010c5029352a362b37293ba003051a160102553b2a299291031229362b3caa292b25042504511e113b6502012a6529fafaa80303faf9103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029653b220e299291031229362b3caa292b25042504511e113b6502012a653c2a69faaa2a2d6afaa92a2c2f6b22132afaa40c22192212faa10c312afaa00c3b221b0c3b221c0c220c3ba003032d0206280f220d2f6a3d2b69293b69293ba003042219020622192afa780c2215352d221dfa732d220c221e2f221e6808302a69280733fa65221c6b3d3369293b692b2222fa5b2c22233b3b22236808342a69293b692f2a6922292d452a4627271f04000000|@6113,1,@758,@6114,@4725,16777215,@5803,@15712,@15713,@5704,@6151,@6154,@6112,@4706,@5175,@4706| 15691:D10,856|fb22303ba003111a5a032e2a35452a36462a374764f73d03303531362a353ba0f884012a362b372a9291f83e012a352b36293ba003112b353da003082b37293ba06402013b02013b035f2b363b220d69293b693b221069293b692d68010b0300220d3130302d221822181afb020c5029352a362b3722193caa22193caa0b030022172f2f2c222022201ae0020c5029352a362b37342c69342c69342c6922232c452b462a47271902bf2a299291032229352a362a353da003082a37293ba06402013b03033c0207292503511e213b6502013b6403593b220c69293b693b220f69293b690b030034302f3b2d221622161a76020c5029352a362b3722173caa22173caa0b030022152f2f2c221e221e1a5b020c5029352a362b37342c69342c69342c6922212c452b462a472717023a220c3caa220c3caa0b0300332f2f2c221322131a28020c5029352a362b373b22166928082a69292d693b221869292e69221831452c462a47270e650238333caa333caa0b0300312f2f2c221122111aed010c5029352a362b373b22146928082a69292d693b221669292e69221631452c462a47270e65f7ad012a353da0f86f012a362b37293ba0f82b012a353b2a293ba003032a0241293cb22a3cb22b3cb230362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b65220c3caa2d353b3b292ca903032a023a293cb131362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965220e2aaa0b0300220c312f2c221522151a08010c5029352a362b37221435221535293caa22173b3b2ce33b3b2214221dfaed0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fac60c0201293c3b312c6b22132220fabb0c2a220c69343ba003032a02062a220cfaad0c3d346929220d6922222d452c462a47271a0237333caa333caa0b0300312f2f2c22112211fa760c5029352a362b373b22146928082a69292d693b221669292e69221631452c462a47270e650237313caa313caa0b03002f2f2f2c220f220ffa3c0c5029352a362b373b22126928082a69292d693b221469292e69221431452c462a47270e651f0600|@6116,1,@759,@5228,@6117,@6114,@6147,@4851,@6148,@6115| 15692:D15,400|fb2131929103043b5002041a8e01103135293b692e352f35293caa313b3b2ce32d220e220d34311a76010c3c3b2f2c6b2f3b1a6f011a70010c303b2a929103942a352b362a3b2a929103752a352b362a353da003082a37293ba06402013b034f2a3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965292faa6602032b3caa2a2a2505250526031e743b66020129652c2aaa2b2a2506250626041e923b270402012965220f92912a2aaa2211929103212211352a3cab293ba20303fabc103b503b2a6928082a69302d2bfab10c270402012c220f3b3bef293ba00304faa3024b293db1292808b1293cb2293fb429fa95a503043b500203fa9010292841bd2a3cb22a2a3b3bf02b3b3b32f05022173f2d3f34ec503f31b12c2a282de4502c2a3cb12845e4502c95502c27082c3ba20303fa5b103b503b2dfa580c2c2bfa5722192d3b3b3c6808280c2a693d2210692217220c452b462a4727131f070000|@6119,1,@760,@5975,@6120,@5175,@6140,@5886,@6145,@6146,16777215,@4054,@4848,@6118,@4706| 15693:D20,504|fb152f9291f802012f3530363b2b299291031229362b3caa292b25042504511e113b6502012a652a3ba0030530929102013b303b3bef293ba003051ac601024d293db1292808b1293cb2293fb4291ab701a503043b5002041ab10110292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3f2d3f34ec503f31b12c2a282de4502c2a3cb12850e4502c95502c27082c3ba203041a7b01103b503b2d1a77010c3b220d299291031229362b3caa292b25042504511e113b6502012a65293ba203041a4e01103b503b2a1a4e010c2f3ba203041a3d01103b503b301a41010c293ba003032a02062a2a1a37010c322a2211221122111a2f010c29303b2214323b220e3c6808280c2a69270d02e92e929103043b5002041a1201102e362c2a1a0e010c2f929103b52f3529353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b27096533929103043b500203fab810333528082a692efab20c28072a2c3c6b3bfaac3b302d6805293b693b3b33faa30c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa7c0c0201292c3ba00303290205280f2d2b6a270c021930929103043b500203fa6010303528082a6928072c2b3c6b65651f05000000|@6122,1,@761,@6123,16777215,@4054,@4848,@6124,@6125,@6126,@6127,@6120,@6128,@6130,@5975,@6139,@4706,@6121,@4851,@5975| 15694:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@762,@6124,@4788| 15695:D4,28|fb062c2ca003033b020f3c2d692d3caa292efa140c2b2a6966430000|@4843,1,@763,@6125| 15696:D4,28|fb062c2ca003033b020f3b2d692d3caa292efa140c2b2a6966430000|@4843,1,@764,@6126| 15697:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@765,@6127| 15698:D4,24|fb082c9291030d2c352d362a2e2bfa14307b05063b430000|@6132,1,@766,@6131| 15699:D8,200|fb162d929103b62d352e362a353da003102a37293ba003052f929102013b6402013b03742a362f3530362b353b2a293ba003032a0241293cb22a3cb22b3cb231362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b65292dfa580c2f2d220cfa550c293ba003032a02082a2afa4c220d7e0e270702222e929103043b500203fa3d102e352f3628082b69293c692d2c33fa240c2a2a6927056502072b2dfa232d7e0544000000|@6134,1,@767,@6135,@6131,@6136,@6133,@6130| 15700:D4,40|fb092c9291031d2c352d3628082e69280b2a2d3b6b293c692c31fa180c2a2a69270602013b430000|@4648,1,@768,@6135| 15701:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@769,@6136| 15702:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@770,@6139,@6109| 15703:D7,116|fb102b352e2aa003033b02662c352d36303ba203033c0203302ba80303fa61103b50303ebb2a2adc322807b729281fa903033b02033c2aba2b2ab7293ba091031e280bfa3f220d3b6b220d3caa220d3caa2a2a220ffa310c2c2a6927040211220c3caa29220d220dfa1e0cfa1f2a696527076444|@6111,1,@771,@5970,@5044,@6121,@4689| 15704:D5,164|fb172d3ba003032b02992d352e362e2bfa9e0c2b3b2a929103752a352b362a353da003082a37293ba06402013b034f2a3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965292faa6602032b3caa2a2a2505250526031e743b6602012965302aaa28072c323c6b2d2b2bfa15347b050b44|@6142,1,@772,@6141,@6140| 15705:D7,212|fb162b929103ca2b352c362a353da003082a37293ba06402013b03912a363b3b2b32fabc0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa950c020129293c692d353b3b292ca903032a023a293cb131362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965220c2aaa2932fa430c2d2a69270902212e3ba20303fa38103b503b2f6928082a69293c69313caa292efa200c2b2a6927056502013b4300|@6144,1,@773,@6143,@4851,@6141,@5886| 15706:D7,136|fb132c352f2aa003033b02772d352e36313ba203033c0203312ba80303fa75103b50313ebb2a2adc332807b729281fa903033b02033c2aba2b2ab7293ba091032d220c34aa293ba20303fa4c103b503b2a6928082a6922103caa22103caa2a2a22122212fa360c2c2a6927060213220d3caa29220e220e220efa210cfa222a69652707641f040000|@6111,1,@774,@5970,@5886,@6143,@4689| 15707:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa690c2b3131fa630c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa3f0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa240c2a3131fa1e0c28052e2c2c6b2705020628112e2e2e6b44|@5967,1,@775,@6145| 15708:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@776,@6118,@4788| 15709:D7,136|fb132c352f2aa003033b02772d352e36313ba203033c0203312ba80303fa75103b50313ebb2a2adc332807b729281fa903033b02033c2aba2b2ab7293ba091032d33220daa293ba20303fa4c103b503b2a6928082a6922103caa22103caa2a2a22122212fa360c2c2a6927060213220d3caa29220e220e220efa210cfa222a69652707641f040000|@6111,1,@777,@5970,@5886,@6147,@4689| 15710:D5,48|fb092c929103272c352d362d3ba20303fa2a103b503b2e6928082a69280b2a2e3b6b2c31fa1a0c2a2a69270602013b43|@4648,1,@778,@5886,@6148| 15711:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@779,@6115| 15712:D4,72|fb072b352808a0033c2b3629353ea0030b28082b366929680164022629353ba0031f29362b37932a2aa90303fa26103b502c372b3bdb28082a69296801270402013b6402013b4200|@6149,1,@780,@4599| 15713:D5,128|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa6a0c3131312c313131316808280c2a69296801270c02442b352808a0033c2b3629353ea0030b28082b376929680164022629353ba0031f29362b38932a2aa90303fa2c103b502c382b3bdb28082a69296801270402013b6402013b42000000|@6049,1,@781,@6150,@4599| 15714:D6,52|fb092c929103292c352d3628082b69292ffa2d0c29352808a003043b500203fa231029362c31fa200c2a2a69270602013b430000|@4648,1,@782,@5704,@6050,@6150| 15715:D9,180|fb152c3ba0030f2b3ba003043b500203faae103b029b2c352d362d929103043b500203fa9f102d352e362b2afa9a0c2d353da003082d37293ba06402013b036c2d3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293ba20303fa3c103b503b2afa390c2d3ba00303290208292efa30220d7e0d270402032b2a692705430000|@5937,1,@783,@5936,@5936,@6151,@4848,@6153,@6152| 15716:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@784,@6153,@4688| 15717:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@785,@6152| 15718:D6,60|fb0a2c3ba0030f2b3ba003043b500203fa36103b02232c352d362d929103043b500203fa27102d352e362a352d2a692d2cfa1d0c2a2a692707430000|@6073,1,@786,@6072,@6072,@6154| 15719:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@787,@6112| 15720:D4,32|fb092b929103172b352c362a352b363b2b2b6a2cfa160c2a2a69270602013b42|@4648,1,@788,@6155| 15721:D6,44|fb0b2c929103202c352d362a352b36fa2730692b2afa250c292c692e33fa210c2a2a69270802013b43000000|@4648,1,@789,@15722,@5704,@6156| 15722:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@790,@4706,@6009| 15723:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@791,@6157| 15724:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@792,@6009| 15725:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@793,@6009| 15726:D4,32|fb092b929103172b352c362a352b363b2b2b6a2cfa160c2a2a69270602013b42|@4648,1,@794,@6158| 15727:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@795,@6160,@6159| 15728:D8,132|fb0c2c353ba0031c2c362d372e382f39fa7e30692a2afa7c0c3b2f2f2f2d68052706025d2c353da003112c36fa6a2d692a2afa600c3d2a696602462c353ea003292c36293b2a929103182a352b362a2c32fa490c2a2a2505250526031e173b66020129653e2a696502172c362d372e38fa2e2f2d6a2a2afa1b0c3c2e2e2c6b2705430000|@6161,1,@796,@15730,@5704,@15731,@6162,@15729| 15729:D4,16|fb062b2a362b37fa132e7b0503000000|@6010,1,@802,@6009| 15730:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@797,@4706,@6009| 15731:D5,16|fb062b2a36fa15fa172e7b0503000000|@6010,1,@798,@4706,@6009| 15732:D7,72|fb0f2d352e362f370b0200312f2e3d2dfa420c5029352a362935280ca003043b500203fa3310293631312b6a2c33fa2c0c220e3ba0030329020629220ffa210c2b2a69270c440000|@6164,1,@799,@6026,@6165,@6168,@6163| 15733:D4,36|fb092c929103182c352d362a352b362f2b2b6a2c31fa190c2a2a69270602013b43000000|@4648,1,@800,@6168| 15734:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@801,@6163| 15735:D6,56|fb083b06280528403bdafa38453d28403bdafa3445292b466c502a2c4632472f482a496c50322afa230c2c35312b4533462a4727051f0500|@6170,1,@804,@15737,@15736,@5704| 15736:D7,184|fb0f2b35280fa0031c2b362c372a2c2d36fab10c2a2dfab00c280f2b2b6a296801270502902b35280ca003882b362938293ba003082a3a293ca06402013b03703b3b2c6a293b690b02002c2a32360c5029352a362a3ba0032e299291031329352a362a353ca00305293ba002013b6502013b03043b500203fa52103b50293529382968016502252a352b36293ba003052b3ba002013b03043b500203fa32103b502a37280c2a692968012704270702013b6502013b420000|@7175,1,@1023,@7176,@5704,@7174,@7174| 15737:D8,356|fb1a2936352a363b3b3be32e2c391a5f010c2c36352c03082d363b3b3ce302013b2a03033c029531299291031c29352a362a37293a293ba003033c02082b250526041e1a3b270402013b6403033c026c31299291036429352a362a37293829299291034329352a362a353da003292a362211299291031929352a362a36292ea003033c02082a250426031e183b6602013b6429916502013c03033c0207292503511e423b6502013b6403033c02082b250526041e623b270402013b640307302c453b4602992bfaac0c3e2d69293b6928142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa7f0c020129280f2c2b6a313b2a9291031e2a352b362a36292da603032902012c2b2a2506250626041e1c3b270402012965293caa0b02002e2d2212372c221438fa420c5029352a363b2b0c28062a2c6a2214363b3b3ce322123b2cfa2b0c22183b452a462711270543000000|@6172,1,@805,@6173,@6174,@4851,@6175,@6171| 15738:D5,76|fb172c929103402c352d362a352b362c3729352a362b372c382d392e3a2f2306302307302210fa300c29313131313131316808220c220c2b6a220e2213fa1d0c2a2a69271102013b43000000|@4648,1,@806,@5704,@6173| 15739:D4,36|fb092b929103182b352c362a363d2a6928082a692cfa190c2a2a69270602013b42000000|@4648,1,@807,@6174| 15740:D18,140|fb112e3ba203033c02042efa8ba80303fa8a103b503b502e28403bdafa822a69fa822b69fa82312c2c326805332afa7c0c29fa7c3b3bfa7c3c22103c68083c06280c2b6929fa71fa6f3bfa700c29fa68fa663b22112210fa670c2935280ca003043b500203fa5d103b5029362922102f2210fa540c2212220cfa510c292bfa500c221131452a46270e1f0500|@6177,1,@808,16777215,@4557,@15741,@15742,@15743,@5704,@6251,@5205,@7162,@6208,@6220,@6269,@6200,@7163,@6176| 15741:D5,60|fb0a2b353da003043b500203fa3a102b362a36932a2aa90303fa31103b502b362b3bdb299291030d293529352a363b2b2b6a6602033c2f6966420000|@6179,1,@809,@6178,@4597| 15742:D4,32|fb092b352c362968012c36932c2aa90303fa19103b502d362d3b2de327044200|@6183,1,@810,@4632| 15743:D4,20|fb082b2a362b372c382d39fa13307b0703000000|@6185,1,@811,@6184| 15744:D14,424|fb302e2e2e6a30352814a00390303631372903421a9d012d3333333368062b2a1a95010c28142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6d010c0201296602401a67012d3333333368062b2a1a5f010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2b010c0201296629680166f708013035280fa00344303631372a1a1c010c292e31220c220c220c3336331a10010c1a10012f220c220c220c220c68062c2a1a04010c2b3ba003052968010209280f2c2b6a29680164270602bd3035280ca0038730360b08003333fae02c22112210360c5029352a362b372c382d392e3a2f2306302307303030303030303068082e3ba003493c063b2a3b6a0b0800221e221e342c22252224360c5029352a362b372c382d392e3a2f23063023073030303030303030680829222e2215222dfa800c280622152b6a29680127160208280c2a69296801642713022f30352808a00327303629300c29353ba0030f29362a3728062b2b6a29680166020a293628082a69296801656502013b641f05|@6188,1,@812,@15745,@6189,@4851,@15747,@6190,@6191,@6194,@15757,@5704,@5819,@6187| 15745:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@813| 15746:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@814,@5704,@6189| 15747:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@815| 15748:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@816,@5704,@6190| 15749:D8,136|fb142b9291037f2b352c3629fa860c2b353ea0035b2b3629fa7efa800c293b2a929103472a352b362a929103043b500203fa6d103b502a352b36293ba003162a352b362c37280c2a693c2d2d2c6b293369270502073e2d69292f69642c2a2507250726051e453b2705020129656502032b3b692a3ba00303290207292bfa25317e07270402013b42|@6193,1,@817,@6191,@5901,@5906,@5916,@6192| 15750:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@818,@6192| 15751:D13,620|fb2a323ba003043bf75f02323533362a353ba0033f2a362b372c382d391a5802220f220e220e220e221268062a2a1a4b020c3b2f2f2f2d68053022122212221222122212221222121a35020c2a2a692708f715022a353ea0f879012a362b3629929103082936293ba06402013b032d2c36293529352a362b37280c2a693c2d2d2c6b2933696522122212221222122212221222121ae90122137b0a132a31220d321ae0010c29299291036129352a362a37293829299291034029352a362a353da003262a3632299291031929352a362a362d2aa003033c02082a250426031e183b6602013b646402013b0309292503511e3c3b02013b6502013c64030a2b250526041e5c3b02013b270402013c642903a62a341a72010c2b2a2a3ba00312293ba003043b5002041a6201103b503b02702a352b362b929103043b5002041a5001103b502b352c362c362d373b2d3b6a0b0800221b34342c222422210c5029352a362b372c382d392e3a2f2306302307303030303030303068082922292218222c1a11010c22172a6922162a696422280c5022182217251c251c261a1e823b271a652f2211221122112211221122112211face22127b0a123e2b692e2210221022102210221022102210fab50c2a2a6965656502952a353da0032e2a36faba220c343434220f68062a2afa910c3d2a692d220f220f220f220f220f220f220ffa800c2a2a69270502612a362b372c38fa8c220e220d220d220d221168062a2afa5c0c29352806a0032429362a372a2a692f2a69220f0c50312213221322132213221322132213fa3922147b0a143c2e2e2c6b2f2211221122112211221122112211fa1e0c2a2a69652705651f08|@6195,1,@819,@15753,@5704,@6194,@6196,@6197,@6198,@6198,@6187,@15756,@15752| 15752:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@824| 15753:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@820| 15754:D5,88|fb1f2e9291034d2e352f362a352b362c370b0800221033fa4b2c221522170c5029352a362b372c382d392e3a2f230630230730303030303030306808221422142b6a2216221d221d221dfa1c0c2a2a69271902013b1f0400|@4648,1,@821,@5819,@6196| 15755:D4,40|fb082c9291031e2c352d362a363c06293b692b2a6964300c502b30fa170c2a2a69270502013b4300|@4648,1,@822,@6197| 15756:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@823| 15757:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@825| 15758:D14,276|fb0c2d299291031b29352a362a351a0f01a003052a68010207292503511e1a3b6502013b64293ba00346faf8299291031a29352a362a35fae7a003052a68010207292503511e193b6502013b64293ba00303fad4103b503b5029352935fac1a003043b500203fac4103b50293765021529352935faaaa003043b500203faad103b5029376403522e299291031a29352a362a35fa9ba003052a68010207292503511e193b6502013b64293ba0030b280c3169fa800c3b64021d29352935fa71a003043b500203fa64103b50280c3269fa630c2a370c646402013b280c316929fa57fa553bfa560c29fa4efa4c3b220c34fa4e0c2935280ca003043b500203fa44103b50293629343434fa3d0c33952a27081f0400|@6201,1,@826,@60,@5420,@5469,@4594,@70,@5475,@6202,@6208,@6220,@6269,@6200| 15759:D4,8|fb02fa1010000000|@6204,1,@827,@6203| 15760:D7,124|fb0d2b3ba203033c02042bfa7ba60303fa7a103b502b281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350502f2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64fa28220c220c220c316805220d2afa1e220c7e0e0000|@6209,1,@828,16777215,@5980,@15761,@5704| 15761:D11,280|fb152b35280fa003242b362c37292c1a12010c2b2d2e362f37303831391a08010c280f2a2c6a296801270502ea2b35280ca0034c2b3629352a362b382c392d23062e23073b06fae42a69fae433363437220c39220d38336806312a2c30fad50c2c350304fad202013b2a332b34343c220c220c6808280c2a69296801270e02972b352807a003222b362c372d382a352808a003112b2dfaa40c28072a2d2d6b2968016502013b66026e2b352808a003662b3629353ba003043b50025429353ca0030a2936292c360c5050024429353ea003073b2b370c5002372936293ba203033c0204292c38a80303fa55103b50293ebb2c392adc2b2807b729281fa903033b02033c2aba2b2ab830392e2be45026062c68016402013b42|@6211,1,@829,@5704,@6212,@15767,@15768,@6208,@4706,@6210,@5982| 15762:D9,220|fb1130929103d1303531362a353ba003282a372b382c392c220c220c220c220c220cfac40c2a220dfac20c3b3b2f2f2d6805292c692706029c2a353da0031a2a362a3333333333fa9f0c2a34fa9e0c3d2a69292c692704027c2a353ea003232a362a3333333333fa7f0c2a33333333fa7f0c293232fa7d0c3e2a69292d69270502532a372b382b3434343434fa5a0c2a220cfa580c2c3ba203033c02032c33a80303fa54103b502c3ebb322adc2e2807b729281fa903033b02033c2aba2b2ab7293ba0910304fa3402013b3c2a34326b293269270b6502013b1f0600|@6214,1,@830,@6212,@5704,@6215,@6218,@6213,@4706| 15763:D8,104|fb182f9291035e2f3530362a362b3729352a362b382c392d23062e23073b06fa532a69fa532212221222112213336806312a2c30fa460c2c350304fa4302013b2a332b34343c220c220c68083b220e2b6a220f2217221722172217fa270c2a2a69271202013b1f05|@4648,1,@831,@15765,@15764,@6208,@4706,@6215| 15764:D5,140|fb0b293a2c2a929103043b500203fa88102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ba003033b025029353ca003082936292c362e7d0529353ea003063b2b372d7d042936293ba203033c0204292c39a80303fa39103b50293ebb2c382adc2b2807b729281fa903033b02033c2aba2b2ab830382e2be427066442000000|@6217,1,@833,@4721,@5982| 15765:D3,12|fb0529363b3b3ce342000000|@6216,1,@832| 15766:D6,92|fb102d929103512d352e362a362b372a3ba203033c02032a31a80303fa4a103b502a3ebb302adc2c2807b729281fa903033b02033c2aba2b2ab7293ba0910304fa2a02013b2931316a32220f220ffa200c2a2a69270c02013b440000|@4648,1,@834,@6213,@4706,@6218| 15767:D3,12|fb0529363b3b3ce342000000|@6216,1,@835| 15768:D5,140|fb0b293a2c2a929103043b500203fa88102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ba003033b025029353ca003082936292c362e7d0529353ea003063b2b372d7d042936293ba203033c0204292c39a80303fa39103b50293ebb2c382adc2b2807b729281fa903033b02033c2aba2b2ab830382e2be427066442000000|@6217,1,@836,@4721,@5982| 15769:D5,40|fb0a2c9291031c2c352d362a352b362a30fa210c292b692d32fa1d0c2a2a69270702013b43000000|@4648,1,@837,@5704,@6210| 15770:D8,48|fb092d3ba203033c02042dfa2fa80303fa2e103b503b502d28403bdafa2631312cfa2531336807322afa212f7e0a0000|@6221,1,@838,16777215,@4557,@15771,@6220,@5704| 15771:D17,660|fb1b2b35280fa0032a2b362c372a2c2d362e372f383039313a3223061a81020c2a2d1a7f020c280f2b2b6a2968012705f760022b35280ca0035d2b360b0800323533363437220c38220d39220e3a220f2306221023073122133622143722153822163922173a221823061a3b020c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692968012714f7fc012b352808a003a82b360b02002c353ba0030c3c2d692a2a453b46505002672c353ca003112c36292f360c2b2a35452a3646515002502c353ea0030f3b2e370c2a1ad201452a465050023b2c362e38932a2aa903041ac201103b503b502f382b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ca00305293ba002013b03043b5002041a7f01103b502a3628082a692968012708f74d012b352807a0f844012b362c372d382a35280ca003612a362937293ba003542a3b69293b69642f36303731383239333a3423061a3d010c29929103043b5002041a3401103b50293529352a3631331a2a010c2a1a29010c293ba003032a02062a2a1a1f010c28072a2f220c6b296801270802013b6502d32a352808a003cb2a360b02002c353ba0030c3c2d692a2a453b46505002652c353ca003112c362932360c2b2a35452a36465150024e2c353ea0030e3b31370c2afaae452a465050023a2c363138932a2aa90303fa9f103b503b5032382b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a360b02002d353ca0030f2d3628082a692b2a452f46505102092d362a2a452e46505029352a36220d220ffa5e0c2afa5e0c293ba003032a02052a2afa550c28072a2f22116b296801270f02013b6602013b42|@6223,1,@839,@6224,@5704,@6253,@5819,@4597,@6261,@6228,@5975,@6264,@6265,@6266,@6267,@6268,@6222| 15772:D12,504|fb15329291f8ec01323533362a353ba0032f2a372b382c3929220e1ae6010c3b3b2e2e2d68052e22102210221022102210221022101ad0010c2a2a692706f7b0012a353da003272a3629220c1ab5010c3d2a692c220e220e220e220e220e220e220e1aa3010c2a2a692704f783012a353ea003df2a36293c2a9291032d2a352b362a35293ba003122b372937293ba003052e3ca002013b6502013b2b2a2506250626041e2b3b270402012965037f291a5a010c3434343434341a54010c292b2a3ba00313293ba003043b5002041a4401103b503b50023f2a352b362b929103043b5002041a3101103b502b352c362a362d68012211932b2aa903041a1e01103b503b5022122c3b2de3502e2d2509250926071e532607512b220d220d220d220d220d220d220dfae0220e7b0a0e29343434343434faea0c3e2a692c220e220e220e220e220e220e220efabd0c2a2a696664029e2a362b372c382b3ba003142935280ca0030a29362937293ba06502013b02013b035a29362b68012a2a69293b6965220e220e220e220e220e220efa810c29929103043b500203fa89103b502935296801220e932f2aa90303fa6f103b503b50220f303b2de350312213221322132213221322132213fa3e22147b0a1429220efa300c3c3b2d2c6b2e2210221022102210221022102210fa1d0c2a2a6966666502013b1f0800|@6226,1,@840,@5704,@6224,@6227,@6228,@6198,@6198,@4632,@6225,@5975| 15773:D4,36|fb0a2b929103192b352c362a362b372a68012a2a692dfa180c2a2a69270702013b420000|@4648,1,@841,@6227| 15774:D17,508|fb1d3b06321a00020c3329929103fb29352a362a3529382929929103de29352a362a353da003232a3632299291031629352a362a2da003033c0207292503511e153b6502013b646402013b03043b5002a10b02002d353ba0030c3c2e692a2a453b46505002672d353ca003112d362922160c2b2a35452a3646515002502d353ea0030f3b22140c2a1a8101452a465050023b2d362213932a2aa903041a7101103b503b5022142b3bdb293ba0030c3c31692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020d2a362922101a32010c3c2a69652a22101a2b010c3b502607292503511ede5102023b50502b250526041ef93b270402013b642b35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529faea0c3b2b299291031229362b3caa292b25042504511e113b6502012a65220f2a30221122112211220c22122212221234fabd0c2210fabc0c293b2a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b66020129652afa980c3e2d69293b6928142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa6b0c020129280f2c2b6a3c06303caa2bfa5e3b3bfa5e3c2f3c68082922162d2219fa550c3b2d0c28062a2c6a221e3b2b2214fa48221c7b061f000000|@6230,1,@842,@6231,@5819,@4597,@5821,@6233,@6234,@6235,@6249,@6250,@4851,@6251,@5205,@6200,@6229| 15775:D4,40|fb082b9291031e2b352c362a36293ba003062afa1f2f7d0629352bfa170c2a2a69656602013b4200|@6232,1,@843,@6231| 15776:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@844,@5821,@6233| 15777:D5,24|fb052b9291030d2b3629fa180cfa192a696502013b420000|@4648,1,@845,@6234,@4688| 15778:D5,92|fb17220c9291034f220c35220d360b03002e352f362b2214221422142214221422142214221422142214fa3c0c5029352a362b372b2b2b6a312216221622162216221622162216221622162216fa1d0c2a2a69270b02013b1f0b0000|@4648,1,@846,@6236,@6235| 15779:D8,192|fb18220e35220f3622103822113922122306221323073b2c299291031229362b3caa292b25042504511e113b6502012a6522123ba20303fa93103b503b503b22132bfa8c0c3b06fa8b3022152c2e221722172217221734680afa7d2c69332b2b322212221422160c2c35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296522103ba00303330206332211fa430c2c220e3b2d2d3c221022106808221d3ba003033b0203221d35221d3b452a462b4727111f0d00|@6238,1,@847,@4848,@6239,@15781,@15785,@6237| 15780:D4,32|fb082d2da003033b02142d2caa3b2a692f3caa293030fa140c2b2a6927044400|@4843,1,@848,@6239| 15781:D4,48|fb100b02002e2a2e362f3730383139323a332306342307220c2308220d2309fa1b0c5029352a362a2a69270542000000|@6241,1,@849,@6240| 15782:D10,316|fb0f33220d2a929103043b5002041a3701103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e263b64656529353da00323293634299291031629352a362a2da003033c0207292503511e153b6502013b646402013b03112933faeb0c3c2a69220e2a4534466502ca0b02002c353ba0030c3c2d692a2a453b46505002622c353ca003112c3629220c0c2b2a35452a36465150024b2c353ea0030d3b330c2afaaa452a46505002382c3632932a2aa90303fa9c103b503b50332b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020b2a362934fa540c3c2a69652a34fa570c2a353ba003032a021f2a3629353ca003043b500203fa43103b50293629220daa3b2a693c2a6927042a220cfa310c22152b452a462709641f0b00|@6243,1,@850,@4721,@5821,@5819,@4597,@6244,@6245,@6242| 15783:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@851,@5821,@6244| 15784:D5,48|fb092c929103272c352d362a353ca003043b500203fa25103b502a36292faa3b2a692c31fa1a0c2a2a69270602013b43|@4648,1,@852,@6245,@6242| 15785:D3,8|fb02293642000000|@6248,1,@853| 15786:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@854,@6237| 15787:D4,36|fb082b9291031b2b352c362a36293ba003033b020229352bfa160c2a2a69270502013b42|@4648,1,@855,@6249| 15788:D4,32|fb082b929103162b352c363d2b6928082a692bfa170c2a2a69270502013b4200|@4648,1,@856,@6250| 15789:D5,40|fb0a2e9291031c2e362d2f3bfa260c292e69303caa2c2a3232fa1d0c2b2a69270502013b1f040000|@6252,1,@857,@4807,@6229| 15790:D5,120|fb20319291036c313532362a362b370b0800323533363437220c38220d39220e3a220f23062210230731221d221d221d221d221d221dfa4c0c5029352a362b372c382d392e3a2f2306302307303030303030303068083b22142b6a2215221f221f221f221f221f221ffa1d0c2a2a69271802013b1f070000|@4648,1,@858,@6253,@6225| 15791:D5,88|fb0d3b06fa5e220f3333332e680622122afa55220f3133220c0c2b35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965220d2c452215463b472a482212493c4a22104b220f4c27051f0f00|@6255,1,@859,@15792,@6254| 15792:D4,32|fb0c0b02002e2a2e362f3730383139323afa190c5029352a362a2a6927054200|@6257,1,@860,@6256| 15793:D8,204|fb0e2f322a929103043b500203fac9103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b6465650b02002c353ba0030c3c2d692a2a453b46505002612c353ca003102c3629340c2b2a35452a36465150024b2c353ea0030d3b320c2afa76452a46505002382c3631932a2aa90303fa68103b503b50322b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020b2a362933fa2c0c3c2a69652a33fa270c220f2b452a4627081f07|@6259,1,@861,@4721,@5819,@4597,@5821,@6258| 15794:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@862,@5821,@6258| 15795:D3,4|fb023b42|@6260,1,@863| 15796:D5,40|fb0a2c9291031c2c352d362a352b362a30fa210c292b692d32fa1d0c2a2a69270702013b43000000|@4648,1,@864,@5704,@6264| 15797:D4,32|fb082b929103162b352c3628082b69293c692bfa170c2a2a69270502013b4200|@4648,1,@865,@6265| 15798:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@866,@6266| 15799:D5,40|fb0a2c9291031c2c352d362a352b362a30fa210c292b692d32fa1d0c2a2a69270702013b43000000|@4648,1,@867,@5704,@6267| 15800:D4,32|fb082b929103162b352c3628082b69293c692bfa170c2a2a69270502013b4200|@4648,1,@868,@6268| 15801:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@869,@6222| 15802:D13,352|fb23280c2f690b02002c3b2b321a5c010c5029352a3633299291031b29352a362a351a4b01a003052a68010207292503511e1a3b6502013b64293ba003491a3301299291031b29352a362a351a2101a003052a68010207292503511e1a3b6502013b64293ba003041a0d01103b503b5029352935fafaa003043b500203fafd103b50293765021529352935fae3a003043b500203fae6103b50293764034c34299291031a29352a362a35fad4a003052a68010207292503511e193b6502013b64293ba003082cfabc0c3b64021a29352935faada003043b500203faa0103b502dfaa20c2a370c646402013b2c35280da003043b500203fa90103b502c3629352a362b382c390b05003122182bfa7e0c5029352a362b372c382d392d2d2d2d2d6805221c68013b220f299291031229362b3caa292b25042504511e113b6502012a6522112c2c2c22122224fa440c221f3b3b2ce350221f952217271d1f04000000|@6273,1,@870,@6274,@60,@5420,@5469,@4594,@70,@6434,@6514,@6517,@6272| 15803:D7,36|fb0e3b060b020032fa26fa283430fa282f220dfa270c5029352a36322b452a4627061f04|@6276,1,@871,@6277,@6283,@6285,@6275| 15804:D4,8|fb02fa1010000000|@6279,1,@872,@6278| 15805:D4,8|fb02fa1010000000|@6284,1,@873,@6278| 15806:D3,4|fb023b43|@6279,1,@874| 15807:D11,300|fb1b2f3ba203033c02052f1a2a01a803041a2801103b503b502f28403bda303ba203033c0205301a0e01a803041a0c01103b503b503028403bda313ba203033c020431faf3a80303faf2103b503b503128403bda220c352806a0031e220c37220d332e2e2e22112211220ffad3220ffad30c312a452b466502ad220c35280fa00324220c37220d332e2e2e22112211220ffaad220ffaad0c2a2c32faab0c322b452a46660281220c35280ca00360220c360b04002e352f36303731383239333a342306220c230731221a221a221822142213fa6c221afa740c5029352a362b382b2b3c22172217221522112211fa610c2a92919103033b020b220ffa572c3b6b293b696422112b452a46270b0219220c322d2d2d22102210220efa24220efa240c302a453b4664661f080000|@6287,1,@875,16777215,@4557,@6275,@6288,@6429,@6293,@6286,@4162| 15808:D24,2260|fb1c34350a160047029b029203dc031a04d104f8042c00060577057d050f0632067706ca06ec069907b807f60762088a08aa083436220c37220d382a35280ca003682a362c2e2210221022102210221022102210221022101a85080c0b04002f353036313732383339343a220c2306220d230731221922192219221f221e221b221b1a5f080c5029352a362b372b2b2b221622162216221c221c1a4b080c2808332b220e6b270bf7a0012a352806a0036d2a362b3729299291031929352a362a3534a003052a68010207292503511e183b6502013b6429929103172935293533a003043b5002041a0208103b5029376402013b3b302b221022102210221622152212221222192212221d1ae3070c28072e2e6a28082b2b326b2706f72c012a352808a003f02a3629353ea003293b2d220c220c220c221222123422162214221122111aaf070c3b340c28092a6928082c2b306b6602bc29353ca0031229360b02002c3b2b22110c5029362704022a29353ea003033b022129353ba003033b02182936220c932a2aa903041a6b07103b503b50220d2b3bdb653b2e2b220e220e220e221422132210221022172210221b1a4a070c2b353ca003122b360b02002c3b2b22130c5029352704023b2b353ea003063b220c0c022f2b353ba0030e2b36293b220d0c503b2a6964021b2b36220f932a2aa903041a0007103b503b5022102b3bdb3d2a696628092a6928082c2b316b27046402352b2d220f220f220f220f220f220f220f220f220f1ad4060c2b220f220f220f220f220f220f220f220f220f220e0c28082b2b2e6b6566f784063436220c37220d3829220e220e220e220e220e220e220e220e220e220d0c2c220f220f220f220f220f220f220f220f220f220e0c2c221022102210221022102210221022102210220f0c3b2b2b2e6b2706f73006343629352a362b382c392d3729353ba0036829362e22122212221222122212221222122212221222110c2e22132213221322132213221322132213221322120c2e22142214221422142214221422142214221422130c2e22152215221522152215221522152215221522140c2c2c2f2d2d68053c2a692706027829362e22122212221222122212221222122212221222110c2e22132213221322132213221322132213221322120c2e22142214221422142214221422142214221422130c2e22152215221522152215221522152215221522140c28092e3c6a3e2e2e2c6b2809303c6a3e2e1a7a052c6b28062e2d2c6b27092706f739053436220c3729220d220d220d220d1a5e050c2b220e220e220e220e220e220e220e220e220e220d0c2b2b2f2211221122112211221122112211221122111a33050c3d2b2b6a2705f7ef043436220c37220d382b220e220e220e220e220e220e220e220e220e220d0c2b220f220f220f220f220f220f220f220f220f220e0c3e2b2b2e6b2705f7b1043436220c37220d38220e3929352a362b372b22122212221222122212221222122212221222110c2b3ba003033b021c2b352922142214221422142214221422142214221422130c296801652a2a2d6a3035313632372b22182218221822182218221822182218221822170c2b3ba003033b021c2b3529221a221a221a221a221a221a221a221a221a22190c296801652a2a2d6a220e221b221b221b221b221b221b221b221b221b221a0c3f22112b2d3468052711f7fa033436220c37220d382b2b2b221022102210221022102210221022102210220f360c1a14042f7d0f3436220c3728072b2b6a65f7c503343629353ca0031229360b02002c3c2b220e0c5029352704024f29353ea003053c300c024429353ba0030d2936293c310c503b2a69640231293634932a2aa903041ac303103b503b50220c2b3b3ce3220c932c2aa903041a9103103b503b50220d2d3bdb3d2a69270528092a6965f754031a9703f74e033436220c37220d38220d35220e35293caa22103b3b2ce32210932e2aa903041a6e03103b503b5022112f3b3be3221193302aa903041a5803103b503b502212313b32e3221293322aa903041a4203103b503b502213333b3be33422182218221822182218221822182218221822170c220d22192219221922192219221922192219221922180c280c2a2c220e6b270ff7bc023436220c372a220d220d220d220d220d220d220d220d220d220c0c402a2c6a66f7990234360b04002e352f36303731383239333a342306220c230731221522152215221b221a221722171a81020c5029352a362a2a3c221122112211221722171a6f0222127b0a143436220c3729352a362b372b221022102210221022102210221022102210220f0c2b3ba003033b021c2b352922122212221222122212221222122212221222110c296801652a2a2d6a280e312b6a2708f701023436292b220d220d220d220d220d220d220d220d220d1a32020c280f2a6965f7df013436220c373d2a69293b69293ba003032c02062c2a1a15020c65220d220d220d220d30220e220e220e220e220e1a01020c0b02002c3b2a929103043b5002041af301103b502a352b36293ba003392a353da003043b5002041ade01103b502a362c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2a452b465051020e2a2c692a2a2505250526031e5c50515129352a362a3ba0030329020528102b2b6a2708f73201343629220c220c220c220c220c220c220c220c220c340c28112a6965f713013436220c37220d3829220e220e220e220e220e220e220e220e220e220d0c2c220f220f220f220f220f220f220f220f220f220e0c28122a2e2d6b270502d53436220c37220d3829352a362b372b22112211221122112211221122112211221122100c2b3ba003033b021c2b352922132213221322132213221322132213221322120c296801652a2a2d6a3022142214221422142214221422142214221422130c2813332b2d6b270a02693436220c37220d382a220e220e220e220e220e220e220e220e220e220d0c28142d2b2d6b270402413436292b220d220d220d220d220d220d220d220d220dfa870c28152a696502213436220c372a220d220d220d220d220d220d220d220d220d220c0c28162a2c6a661f0a|@6291,1,@876,@6292,@6293,@6286,@4594,@6318,@6320,@4597,@6321,@6322,@6323,@6324,@6325,@6326,@4632,@6350,@6351,@6352,@6353,@6370,@6373,@6290| 15809:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa1a0c2a2a69270702013b1f0b000000|@4648,1,@877,@6292| 15810:D10,212|fb1a3b063b063b06fad62c2c220e220e220e220d220f22196809fac82b693b06293b3bfac3e3503b2214299291031229362b3caa292b25042504511e113b6502012a65293ba203033c020429fa9ea80303fa9d103b503b502928403dda3b060b0200221d3232221a30fa8933692f221522170c502935220c352f933b2a293ba003032a0226293cb22a3cb22b3cb2220c2a3bdb293ba003052b2f6902012e292e2507250726051e293b270565221dfa480c31352e22233b2d2d22213b6807280d2a69221135221e2b4531462a472f4827151f1000|@6295,1,@878,@15811,@15813,@6300,16777215,@4557,@15815,@6294| 15811:D7,188|fb0b2923082e2a929103043b500203fab7103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b64656529353ca0031229360b02002c322b31380c5029362704025729353ea003082d2b390c503b024929353ba0030c2936292f2d3a0c503b64023729362e031a2b2307932a2aa90303fa53103b503b502c23072b3b3ce36402013b2c2306932b2aa90303fa3c103b503b502d23062c3bdb662b36352c37352a2a2e30363137fa250c3c2a69312a452e4627064400|@6297,1,@879,@4721,@4632,@4597,@6296| 15812:D4,160|fb0b2f9291037c2f3530362a30a003033c02582a353ba003132f353ba0030a2a3630362a2aa06502013b023f2a353ca003132f353ca0030a2a3630362a2aa06502013b02262a353da003132f353da0030a2a3630362a2aa06502013b020d2a353ea003062f353ea002013b0305303cab020e303cab2a2a323232fa30337b070a65021a2c352e2a692e3b3b2ce32e35293caa303b3b2ce350293cab27051f0500|@6298,1,@880,@6296| 15813:D4,20|fb052b030929363b3b3ce35002023b50fa0e4200|@6299,1,@881,@4705| 15814:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@6302,1,@882,@6303,@6304,@6303,@6311,@6303,@6301| 15815:D5,52|fb072b03033c02162936932d2aa90303fa2e103b502a362e3bdb293ca0652a36932e2aa90303fa1c103b502b362f3b2de3654300|@6279,1,@883,@4597,@4632| 15816:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@884,@6294| 15817:D8,440|fb20220d3ba003043bf7aa01220d35220e362a352935280ca0039429362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429910b04003135323633373438220c39220d3a220e2306220f23073122202220222022202220222022201a58010c5029352a362a2a32221c221c221c221c22191a46010c293469221e3caa292210221f221f221f221f221f221f221f221f221f221f221f1a26010c2b2a69270ff7060129352808a003c229362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429912c353ca003122c360b02002c2e2b22190c502935270402572c353ea003062922120c024b2c353ba0030e2c36292b22130c503b2a696402372c362a03182210932a2aa90303faad103b503b5022112b3b3ce36402013b220d932b2aa90303fa98103b503b50220e2c3bdb3d2a69270428092a69292e6922183caa293322192219221922192219221922192219221922192219fa5c0c2b2a692709023d2b362a30220e34220f2214221422142212221222110c292b6922143caa292f22152215221522152215221522152215221522152215fa1d0c2b2a692705661f0d|@6319,1,@885,@6293,@6286,@6318,@4632,@4597| 15818:D6,276|fb1b220c3ba003043bf70301220c35220d362a352b3529352808a00309293629353ba06402013b03a82c35293629362f3622152ba0912c353ca003122c360b02002c2e2b221b0c502935270402572c353ea003062922140c024b2c353ba0030e2c36292b22150c503b2a696402372c362a03182212932a2aa90303faa3103b503b5022132b3b3ce36402013b2212932b2aa90303fa8e103b503b5022132c3bdb3d2a69270428092a69292d6922193caa29220c221a221a221a221a221a221a221a221a221a221afa5f0c2b2a69270a023c2c362b34220f220f220d2215221522152210221022150c292b6922143caa29302215221522152215221522152215221522152215fa210c2b2a69270527041f0c000000|@6319,1,@886,@4632,@4597,@6320| 15819:D8,440|fb20220d3ba003043bf7aa01220d35220e362a352935280ca0039429362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429910b04003135323633373438220c39220d3a220e2306220f23073122202220222022202220222022201a58010c5029352a362a2a32221c221c221c221c22191a46010c293469221e3caa292210221f221f221f221f221f221f221f221f221f221f221f1a26010c2b2a69270ff7060129352808a003c229362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429912c353ca003122c360b02002c2e2b22190c502935270402572c353ea003062922120c024b2c353ba0030e2c36292b22130c503b2a696402372c362a03182210932a2aa90303faad103b503b5022112b3b3ce36402013b220d932b2aa90303fa98103b503b50220e2c3bdb3d2a69270428092a69292e6922183caa293322192219221922192219221922192219221922192219fa5c0c2b2a692709023d2b362a30220e34220f2214221422142212221222110c292b6922143caa292f22152215221522152215221522152215221522152215fa1d0c2b2a692705661f0d|@6319,1,@887,@6293,@6286,@6321,@4632,@4597| 15820:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa1a0c2a2a69270702013b1f0b000000|@4648,1,@888,@6322| 15821:D5,116|fb152f929103682f3530362a35293632353335293caa220c3b3b2ce3220c932e2aa90303fa5a103b503b50220d2f3b3be3220d93302aa90303fa45103b503b50220e313b32e3220e93322aa90303fa30103b503b50220f333b3be3220c2214221422142214fa1d0c332a69270f02013b1f050000|@4648,1,@889,@4632,@6324| 15822:D4,100|fb18220d92910306220c929102013b034e220d35220e36220e35220f362c3529372e362a221222122212221222122212221222122212221c0c2e2a69292c6931302217221722172217221722172217221722172217fa190c2a2a69270b02013b1f0c0000|@5900,1,@890,@6325| 15823:D15,472|fb222b353ca003052b36f7c7012b362c372d382e3929929103213b2c299291031229362b3caa292b25042504511e113b6502012a65293fa66402892b929103043b5002041a9d01102b352936292a690b0200312d2a9291032d2a352b362a362c352d362b2ba303032b02012a2c2ba703032c02012a2a2a692f2a250a250a26081e2c26080209292c2a35452a3646515129352a363b34299291031229362b3caa292b25042504511e113b6502012a65292807a6030c2a2cb2293eb42b2aa96502013b270929f800013b2d299291031229362b3caa292b25042504511e113b6502012a65293ba203041afd00103b503b2afafa0c2e2afaf90c29faf9fafb0c29fafb0c29fafb0c0b0300349291030d34352a3c453b462a47505002622d929103043b500203fade102d352936292a690b0200332d2a9291032d2a352b362a362c352d362b2ba303032b02012a2c2ba703032c02012a2a2a692f2a250a250a26081e2c26080209292c2a35452a3646515129352a36313b452b462a4750260829352a362b373b312b2dfa7f0c3b2a299291031229362b3caa292b25042504511e113b6502012a652b2db2293cb12b2aa003043b500203fa561022152d22153133680528052a692712020a2c2b2f2efa42347b0608270542000000|@6328,1,@891,@5975,@4848,@6329,@6330,@6333,@6336,@6341,@6342,@5975,@6344,@6346,@6327| 15824:D4,24|fb052c2ca003033b020c2c3caa292dfa130c2e2a69654300|@4843,1,@892,@6329| 15825:D6,72|fb092c3ba003172b3ba003043b5002092936fa403bfa416b103b503b02282c352d362d929103043b5002092b36fa253bfa2a6b103b502d352e362c2b692c2b300c2a2a6927064300|@6332,1,@893,@5939,@6331,@6331| 15826:D4,8|fb03fa102c694200|@6334,1,@894,@15827| 15827:D3,32|fb092b352c362b36352c36362a362d362a2aa003052b2ea402032a2aa3270642|@6335,1,@895| 15828:D4,12|fb062c3b2dfa112e7b050400|@6338,1,@896,@6337| 15829:D5,68|fb102d929103382d352e36293ba003052a2f6902272a2e0c0b02002d2a2efa300c5029352a362a220c220cfa270c312a692b2a220efa1d220f7b050f6502012c44000000|@6340,1,@897,@6339,@6337| 15830:D5,68|fb0c2d929103322d352e362a2e0c0b02002d2a33fa3a0c5029352a362e030c302b69220c2a452b4664020a302a69220c2c452a46642708020afa192d2a35452a36466444|@5896,1,@898,@6339,@5895| 15831:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@899,@6341| 15832:D4,64|fb0a2b929103342b352c36299291032529352a362a362d36292ba0030a2bfa2c0c2f2a6964020a2c2c69fa200c2f2a6964270402032a3b696502013b42000000|@6343,1,@900,@6342| 15833:D4,92|fb0d2d3ba0031c2c2cb22f2aa703033b020e2f3cb1293b3030fa4d0c3b2a69656402352d352e362a352b363230b1292ba003152b6801343cb1292f220c220cfa270c2b2a6966020e333cb129343434fa170c3b2a696527051f040000|@6345,1,@901,@6344| 15834:D5,64|fb0b2e929103352e352f362a352b36319291030b313528142b332c6b64020c28072a3b6a3e322bfa236b642c333333fa1f0c28062b2e2c6b270602012b1f0400|@6349,1,@902,@4786,@6327| 15835:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa1a0c2a2a69270702013b1f0b000000|@4648,1,@903,@6351| 15836:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@904,@6352| 15837:D18,844|fb27220c9291f84003220c35220d362a353ba0039c2a372b382c39221035221135293caa22133b3b2ce3221393302aa903041a2303103b503b502214313b3be3221493322aa903041a0d03103b503b502215333b32e3221593342aa903041af702103b503b502216220c3b3be3220d221b221b221b221b221b221b221b221b221b221b1ad6020c34221c221c221c221c221b221b221b221b221b22210c3b220c220f6a3d2b69292d692b2a692712f795022a353da003622a362a220f220f220f220f220f220f220f220f220f220f1a8b020c2a2210221022102210220f220f220f220f220f22150c29352810a0031f29362a373d2a69292e69293ba003032c02092c2a1a5a02220d7e16270402073d2a69292c696466f72d022a353ea0039e2a3629220f220f220f220f1a37020c2b22102210221022102210221022102210221022101a16020c2b220c220c220c22132212220e220e1a0f020c293b3b221322102210221022161a02020c0b02002c2a1afd010c5029352a362a9291910319291af1010c313ba0030329020929321ae70122117e1a6402202a1ae0010c3e2a692b1adc010c333ba0030329020629341ad2010c2b2a692704270af789012a372b382935280ca003f62936221035221135293caa22133b3b2ce3221393302aa903041a7401103b503b502214313b3be3221493322aa903041a5e01103b503b502215333b32e3221593342aa903041a4801103b503b502216220c3b3be30b0400220f3522103622113722123822133922143a221523062216230731222322232223222a2229222522251a3d010c5029352a362b372c3822209322162aa90303faf8103b503b50222122173b2de322182226222622262226222622262226222622262226fad80c2d03033c021722259322192aa90303faf6103b503b502226221a3bdb6430302b222522252225222c222cfadf0c3c22182b6a292d69271a0287220f35221035293caa22123b3b2ce32212932f2aa90303fa81103b503b502213303b3be3221393312aa90303fa6c103b503b502214323b32e3221493332aa90303fa57103b503b502215343b3be3220c221a221a221a221a221a221a221a221a221a221afa380c34221b221b221b221b221a221a221a221a221a22200c3c220c2b6a292c69270d656502013b1f0b|@6355,1,@905,@4632,@6353,@6356,@6357,@6358,@6359,@6362,@6363,@6364,@6365,@6369,@6354,@6293,@4597,@6286| 15838:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@906,@6356| 15839:D5,112|fb142f929103632f3530362a3631353235293caa343b3b2ce334932e2aa90303fa5a103b503b50220c2f3b3be3220c93302aa90303fa45103b503b50220d313b32e3220d93322aa90303fa30103b503b50220e333b3be3342213221322132213fa1e0c332a69270e02013b1f05000000|@4648,1,@907,@4632,@6357| 15840:D6,152|fb1b329291038c323533362a362b370b04002e352f36303731383239333a342306220c230731221a221a221a221a221a221a221afa6e0c5029352a362b372c382a0319221293342aa90303fa5b103b503b502213220c3b3ce36402013b221293220c2aa90303fa40103b503b502213220d3b2ee3220d30306a220f221a221a221a221a221a221a221afa210c2a2a69271202013b1f080000|@4648,1,@908,@6293,@4632,@6358| 15841:D7,164|fb143292910379323533362a352b362c3734932c2aa90303fa96103b503b50220c2d3bdb033d2b2b3c220e220e220e2212220ffa7f0c32932e2aa90303fa71103b503b50332f3bdb292c693122133c22132213221322132213fa5d0c2a2a69270502192e220f692e2a221022102210221022102210fa4122117b0a112706021f303ba0030c312f2f2f3330fa2f317b080a313b3b3232323232fa1d337b0a0a1f08000000|@6361,1,@909,@4597,@6286,@6359,@6360| 15842:D6,80|fb113092910344303531362a352b362c372a2a3b220e220e220e220e220efa3c0c31932d2aa90303fa36103b503b50322e3bdb292c693022102210221022102210fa210c2a2a69270a02013b1f060000|@4648,1,@910,@6286,@4597,@6360| 15843:D5,72|fb0d2c929103352c352d362a362935280da00b02002e2afa3b0c5029352a362e030c312b69220c2a452b4664020a312a69220c2c452a46642709020afa1a2c2a35452a3646644300|@5896,1,@911,@6362,@5895| 15844:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa160c2a2a69270602013b42|@4648,1,@912,@6363| 15845:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@913,@6364| 15846:D5,48|fb0a2b929103262b352c362a352b362935280da003043b500203fa201029362b2a692dfa1b0c2a2a69270702013b4200|@4648,1,@914,@6366,@6365| 15847:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa160c2a2a69270602013b42|@4648,1,@915,@6369| 15848:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@916,@6354| 15849:D4,72|fb10220c9291033b220c35220d362a220d220d220d220d220d220d220d220d220d22170c2a220f220f220f220f220f220f220f220f220f220ffa190c2a2a69270402013b1f0b0000|@4648,1,@917,@6290| 15850:D9,428|fb18220c34343434343434343433360c220c352805a00324220c36220d37220e382b2b2b22112211221122112211221122112211221122100c66021b220c220c220c220c220c220c220c220c220c220c34360c3c2a6964220f220d220d220d220d220d220d220d220d220d220c360c3b06293b3b1a4101e3502a352814a003142a362b372c382968012c2c2b6a296801270502762a353ea0036f2a362b372c3829352809a003082936293ba06402013b03532b352807a003212b3629920317299203043b500203faf3103b50292c3b6a2968016402013b6402292a352807a003212a3629920317299203043b500203facf103b50292d3b6a2968016402013b6402013b02013b6602013b299291038b293529352a362b3730353ca003123036322d69293b693b2e2b2e30680566026730363137323833392c2ffa890c2e2ba003033c02182e929103122a9291030a2e352b352a2aa06502013b02013b2a92910305293ca002013b0316220e32692efa580c2a2a693b322b32220d6805660215220e3269293b69220ffa420c3b342c2c220d68056627062704020e2cfa2f0c28062d302c6b3c2a696527051f0c|@6377,1,@918,@6378,@4816,@4816,@6427,@6376,@6326| 15851:D15,164|fb102b363ca20304faa602972b35293ba00304fa9f028b2c363ca20304fa9902812c3529352e363cab2a2a69fa8e352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6da003033c020d29fa68a003033c020429fa63a06402013b9102013b02013b03162afa5669fa572a69fa572a693b3e3c3b2d68056602012a64020129293b69fa452a69fa452a693b3c3b3b2d680527096442|@6380,1,@919,@6303,@6381,@6303,@74,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@6379| 15852:D21,484|fb122b363ca203061ae501f7d4012b3529353ba0038d2c3529362e363cab2a2a691ad001352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aae01a003033c020f291aa801a003033c0205291aa201a06402013b9102013b02013b03192a1a9401691a94012a691a93012a693b3e3c3b2d68056602012a64020129293b691a80012a691a7f012a693b3c3b3b2d68052709f73e012c363ca203061a6c01f732012c3529353ca003872d3529362f363cab2a2a691a2f01352a2a0c6429353ba003572939299291033329369291032a2935353ea0031f293536291a0d01a003033c020f291a0701a003033c0205291a0101a06402013b9102013b02013b03162afaf469faf52a69faf52a693b3e3c3b2d68056602012a64020129293b69faef2a69faef2a693b3c3b3b2d6805270902a22d363ca20304fade02982d3529353da003832e35293630363cab2a2a69fa97352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa76a003033c020d29fa71a003033c020429fa6ca06402013b9102013b02013b03162afa5f69fa602a69fa602a693b3e3c3b2d68056602012a64020129293b69fa662a69fa662a693b3c3b3b2d68052709020c2e363ca20304fa550202fa556464644200|@6390,1,@920,@6303,@75,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@6396,@6303,@5091,@6404,@6303,@5091,@6411,@6303,@6389| 15853:D4,16|fb052b35293cfa140c3e2a6965420000|@4042,1,@921,@4569| 15854:D4,176|fb092c352809a003072b352809a002013b036f2c362c362a2aa003033c02582a353ba0031329353ba0030a2a362a362a2aa06502013b023f2a353ca0031329353ca0030a2a362a362a2aa06502013b02262a353da0031329353da0030a2a362a362a2aa06502013b020d2a353ea0030629353ea002013b03052a680102013b65022c2c3540a003062b3540a002013b031c2c362d372d362e372b2aa09103033b02072c2bfa16317e08270402013b4300|@6428,1,@922,@6427| 15855:D4,32|fb092b929103162b352c362a352b362a2a692cfa170c2a2a69270602013b4200|@4648,1,@923,@6376| 15856:D8,132|fb092d352814a0033c2d3629fa822f2ffa820c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b020bfa5ffa612b3b6b293b696465023e2d352808a003362d3629353da0032a29362e932a2aa90303fa41103b503b502f2b3bdb2992919103033b020a2ffa282b3b6b293b69646602013b6402013b44|@6431,1,@924,@6429,@6430,@24,@4162,@4597| 15857:D4,36|fb092e929103172e352f362a2f2f320c2a313131fa1a0c2a2a69270402013b1f04000000|@4648,1,@925,@6430| 15858:D4,100|fb113235280da00357323629352a362b382c392d3a220e220d220f220e220e220e220efa4b0c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965220f03033c02042992919130302c3131312f6807280d2a69270a0201321f0800|@6433,1,@926,@6432| 15859:D6,140|fb0c319291037f313532362a353ca003132a360b02002c220d2b22100c502935270402512a353ea0030531310c02462a353ba0030d2a362933320c503b2a696402332a363203162f932a2aa90303fa48103b503b50302b3b3ce36402013b2f932b2aa90303fa35103b503b50302c3bdb3d2a6927042a343434343434fa220c2a2a69270402013b1f07000000|@4648,1,@927,@4632,@4597,@6432| 15860:D179,3784|fb402b350a17007b00b90034017601b7016e035d05a2052e00b0052a06ff06050792072e098a0ade0a3b0b580bfe0b640de40d250e2b362c372d382b1a950e0c291a940e0c1a940e2a693b3c3c3b2d68052e1a8b0e0c2e3ba003051a860e02031a850e2b3b691a830e2a692b2a691a7f0e2a692e2a693b3e3b3b2d6805270ef7420e2b362c372d382a3b692c2a692b2a69291a5f0e0c291a5e0e0c1a5e0e2a693b3c3c3b2d6805293b691a530e2a691a520e2a693b3e3b3b2d6805270df7040e2b3629352a362b372c382d392b0a07000e00130018001d00220027002c001a270e021c1a260e02171a250e02121a240e020d1a230e02081a220e02031a210e3e2a692c3b692f2a69312a692e2a69291a120e0c291a110e0c1a110e2a693b3c3c3b2d6805293b691a060e2a69332a693b3e3b3b2d68052713f7890d2b362c37291af10d0c291af00d0c1af00d2a693b3c3c3b2d68052e1a870d0c291ae20d691ae20d2a691ae10d2a691ae00d2a692e2a693b3e3b3b2d6805270cf7470d2b362c372d38291ac90d0c3e2a692c3b692e2a69291abf0d0c291abe0d0c1abe0d2a693b3c3c3b2d6805293b691ab30d2a69312a693b3e3b3b2d6805270ef7060d2b362c372d382e392c3ba003051a960d021a2c3ca003051a900d02102c35293ca003051a880d02031a870d64293b3bef293ba003051a7e0d0244293cb1292808b1293cb2293fb4291a6f0da503043b5002041a690d10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c95502c27083e2a692d352e362f372b1a970c0c2b9291030a2b35291a8b0c0c6402031a240d2b9203052b3ba202052b942811a0030a1a150d2c1a150d0c02012b293d1a100d0c3e2a69291a0c0d691a0c0d2a691a0b0d2a691a0a0d2a69302a691a060d2a691a050d2a691a040d2a69220c2a691aff0c2a691afe0c2a693b3c3c3b2d6805221935221a36221b372b1a180c0c2b9291030a2b35291a0c0c0c6402031aa50c2b9203052b3ba202052b942811a0030a1a960c2c1a960c0c02012b293d1a910c0c3e2a69291a8d0c691a8d0c2a691a8c0c2a691a8b0c2a69302a691a870c2a691a860c2a691a850c2a69220c2a691a800c2a691a7f0c2a693b3c3c3b2d6805222e1aa10b0c291a700c691a700c2a691a6f0c2a692d2a691a6b0c2a691a6a0c2a69221b2a691a650c2a6922312a693b3e3b3b2d6805273af74f0b2b3629352a362b372c382d392d1a5b0b0c2b9203052b3ba202052b942811a0030a1aeb0b2c1aeb0b0c02012b293d1ae60b0c293b3bef293ba003051a190c024728072ab1292808b1293cb2293fb4291ab10ba503043b5002041aab0b10292841bd2a3cb22a2a3b3bf02b3b3b32f0501ae50b3f2d3f2807ec50313f2d280b34ec502b95502b27072e03051ace0b02031acd0b2a3b3bef2a3b3bef2a3ba003032b024f293ba003032c02472a2ab1292808b1293cb2293fb4291a480ba503043b5002041a420b10292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c27083e2a69220d1a6a0b0c220d1a6c0a0c293b691a610b2a691a600b2a693b3c3b3b2d68053e2841bd293b28083bf02a3b3b2807f0502a3f2829e4502a28052820e4502a2806287be4502a28072843e4502a28082841e4502a28092853e4502a402845e4502a95502a3b3bef293ba003051a0c0b0244293cb1292808b1293cb2293fb4291a8d0aa503043b5002041a870a10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a287de4502c95502c27083e2a69293b691ac10a2a69302a691abd0a2a69293ba00304220e0207220e2a1ab00a0c1ab00a2a6922112a691aab0a2a69221c2a691aa60a2a693b3c3c3b2d68052725f760092b362c372d382b1a72090c2b1a6d090c2b1a68090c291a830a691a830a2a691a820a2a692d2a691a7e0a2a691a7d0a2a69312a691a790a2a693b3c3c3b2d6805270ef71b092b36291a690a0c3e2a6965f70d092b3629353ea0030d1a5a0a1a5b0a0c3e2a6964026129353ca0031d2936293c1ab3090c291a460a691a460a2a69651a380a0c3e2a6965023e29353ba0031d2936293c1a90090c291a2b0a691a2b0a2a69651a150a0c3e2a6965021b2936293c1a73090c291a160a691a160a2a69651af8090c3e2a696564f793082b362c37293c1a52090c293b3bef293ba003051af509024728092ab1292808b1293cb2293fb4291a1d09a503043b5002041a170910292841bd2a3cb22a2a3b3bf02b3b3b32f0501ac1093f2d3f2809ec50313f2d280d34ec502b95502b2707293b3bef293ba003051aa409024c293db1292808b1293cb2293fb4291ac908a503043b5002041ac30810292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ce4502c2a3cb12820e4502c95502c27083e2a69301aef070c291a4e09692b2a693b3b3b3b2d6805270bf7be071a3f09f7b8072b362c372d382b1aca070c2a3c1a70080c293b3bef293ba003051a23090245402ab1292808b1293cb2293fb4291a3c08a503043b5002041a360810292841bd2a3cb22a2a3b3bf02b3b3b32f0501af0083f2d3f40ec50313f2d280e34ec502b95502b27073e2a692f1a69070c291ad408691ad4082a692c2a69312a691acd082a693b3e3b3b2d6805270ef72b072b3629352a362b372c382d392e3a2f23063e2f692a3ba003051aa70802031aa608293b3bef293ba003051a9e0802503e2ab1292808b1293cb2293fb4291a9f07a503043b5002041a990710292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2843e4502b2805284ce4502b2806283de450313f2d280734ec502b95502b27073e2a69303c1a6c070c293b3bef293ba003051a3b08024728082ab1292808b1293cb2293fb4291a3707a503043b5002041a310710292841bd2a3cb22a2a3b3bf02b3b3b32f0501a07083f2d3f2808ec50313f2d280c34ec502b95502b27073e2a69220c1aee070c1aee072a693b3c3b3b2d6805220d3ba003051a500602031a4f06293b691ad5072a693b3c3b3b2d680522141acb070c3e2841bd293b28083bf02a3b3b2807f0501aba073f2c3f2806ec502a402828e4502a95503e2b692c1aa7070c291aa6070c2b2a693b3c3c3b2d6805221e1af2050c291a9507691a95072a692c2a69220c2a691a8d072a6922122a691a88072a6922172a69221c2a691a7f072a6922222a691a7a072a691a79072a693b3c3c3b2d6805272ef78f052b362c372a350a0900240029002e00330038003d004200120054002a36293ba003051a4a0702031a49076402331a4707022e1a460702291a450702241a4407021f1a4307021a1a420702152a36293ba003051a3a0702031a39076402031a3707293b3bef293ba003051a2f0702573f2ab1292808b1293cb2293fb4291ac405a503043b5002041abe0510292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f284ce4502b2805286fe4502b28062861e4502b28072864e450313f2d280834ec502b95502b27073e2a692d352e362f372b1ad9040c2b9291030a2b35291acd040c6402031a66052b9203052b3ba202052b942811a0030a1a57052c1a57050c02012b293d1a52050c3e2a69291a4e05691a4e052a691a4d052a691a4c052a69302a691a48052a691a47052a691a46052a69220c2a691a41052a691a40052a693b3c3c3b2d6805293b691a55062a6922162a693b3e3b3b2d6805271df733042b363e2841bd293b28083bf02a3b3b2805f0502a3f284ce4502a2805284fe4502a2806284fe4502a28072850e4502a28082828e4502a95503e2b692c1a08060c291a07060c2b2a693b3c3c3b2d68052707f7df032b362c373e2841bd293b28083bf02a3b3b2806f0501ae3053f2c3f2805ec502a28092828e4502a95503e2b692d1acf050c2d1ac6030c291ac905691ac9052a69293ba003032c02062c2a1abe050c2e2a693b3c3c3b2d6805270bf782032b36291a98030c291aa705691aa7052a693b3c3c3b2d68052704f765032b362c372d382a352b353b3b292ca903032a023a293cb12f362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293c1ad9030c2c3c1ad3030c291a3e05691a3e052a692c2a691a3a052a6927051a4f040c3e2a692e1a07030c311a02030c291a2505691a25052a691a24052a691a23052a692e2a69302a693b3e3b3b2d68052710f7bf022b362c372d382b350a0900240029002e00330038003d004200120054002b36293ba003051a780402031a77046402331a7504022e1a740402291a730402241a7204021f1a7104021a1a700402152b36293ba003051a680402031a67046402031a6504293b3bef293ba003051aa504024728052ab1292808b1293cb2293fb4291af102a503043b5002041aeb0210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a71043f2d3f2805ec50313f2d280934ec502b95502b27073e2a692d352e362f372b1a17020c2b9291030a2b35291a0b020c6402031aa4022b9203052b3ba202052b942811a0030a1a95022c1a95020c02012b293d1a90020c3e2a69291a8c02691a8c022a691a8b022a691a8a022a69302a691a86022a691a85022a691a84022a69220c2a691a7f022a691a7e022a693b3c3c3b2d680522191aa0010c293b691ad5032a691ad4032a691ad3032a692e2a691acf032a69221b2a693b3e3b3b2d68052723f759012b362c372d382b9203052b3ba202052b942811a0030a1a00022c1a00020c02012b293d1afb010c2b9203052b3ba202052b942811a0030a1adf012c1adf010c02012b293d1ada010c291a7503691a75032a692d2a691a71032a6927071a56020c3e2a692c1a0e010c291a6103691a61032a692c2a693b3e3b3b2d6805270902d92b363f2841bd293b280c3bf02a3b3b40f0501a40033f2c3f2809ec502a280d2828e4502a95503e2b692c1a2c030c291a2b030c2b2a693b3c3c3b2d6805270702982b362c37290a0e00210026002b00300035003a003f00440049001c004e00530058005d001af902023f1af802023a1af70202351af60202301af502022b1af40202261af30202211af202021c1af10202171af00202121aef02020d1aee0202081aed0202031aec023e2a692c3b69291ae6020c291ae5020c1ae5022a693b3c3c3b2d6805293b691ada022a69302a693b3e3b3b2d6805270c42000000|@6436,1,@928,@6437,@6441,@6442,@6434,@6440,@6438,@5091,@5091,@6444,@6445,@5093,@5091,@5488,@5490,@5491,@5492,@5493,@5494,@5495,@5496,@6446,@6447,@5093,@5091,@6448,@6451,@5506,@5267,@5268,@5093,@5268,@5508,@6452,@6453,@5093,@5091,@5526,@5527,@5528,@5529,@4133,16777215,@4054,@5530,@4564,@4565,@4569,@5531,@5091,@5092,@5268,@5091,@5092,@5268,@5534,@5535,@5536,@5092,@5091,@5092,@5091,@5091,@6454,@6455,@4062,@6456,@5091,@6461,@4218,@5091,@5091,@6463,@5091,@5091,@6464,@5267,@5268,@6466,@5268,@6466,@6467,@5543,@6469,@4052,@6470,@6472,@6470,@6473,@6470,@6474,@6475,@5645,@5089,@5559,@5561,@5089,@5091,@5562,@6476,@6477,@6478,@6479,@6480,@6482,@6484,@6486,@6487,@6488,@6489,@6490,@5091,@5091,@5091,@5091,@5091,@6493,@5616,@5617,@5618,@5619,@5620,@5621,@5622,@5623,@5624,@5625,@5626,@5627,@5091,@6495,@6496,@6497,@6498,@5267,@5091,@6509,@5267,@5642,@5644,@4140,@5646,@5267,@5091,@5092,@5268,@5647,@5091,@5648,@5091,@5091,@5650,@5645,@5651,@5267,@5091,@6510,@6511,@6512,@4912,@4913,@4914,@4915,@4916,@4917,@4918,@4919,@4920,@4921,@4922,@4923,@4924,@4925,@6513,@6435,@5093,@5091| 15861:D10,124|fb112b929103732b352c36293ba0032b2a352b362afa710c2a3ba00304fa6d0202fa6d293b69fa6c2a692c2a693b3c3b3b2d6805293b692708023c2a352b362afa460c2a3ba00304fa420202fa42293b69fa412a692c2a693b3c3b3b2d680529fa36693b3b3b3b2d680533fa2f0cfa302a692b2a69270c6502013b42|@6439,1,@929,@6434,@6440,@6438,@5091,@5480,@6437,@5091| 15862:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@930,@6441,@5267| 15863:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@931,@6434,@5480,@6444,@5091| 15864:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@932,@6445,@5267| 15865:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@933,@6434,@5480,@6446,@5091| 15866:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@934,@6447,@5267| 15867:D15,208|fb192b929103c62b352c36293ba003542a352b362a352b362a3cfac00c29fac069fac12a6965fac00c3e2a692bfabd0c293b69fabb2a692c2a693b3c3b3b2d6805323ba00304faac0202faac293b69faab2a692c2a693b3c3b3b2d6805293b69271002662a352b362a352b362a3cfa6c0c29fa6c69fa6d2a6965fa6c0c3e2a692bfa690c293b69fa672a692c2a693b3c3b3b2d6805323ba00304fa580202fa58293b69fa572a692c2a693b3c3b3b2d680529fa4c693b3b3b3b2d68052212fa440cfa452a692b2a6927146502013b4200|@6439,1,@935,@4569,@6450,@6449,@4052,@6434,@5091,@6440,@6438,@5091,@5480,@6448,@5091| 15868:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@936,@6451,@5267| 15869:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@937,@6434,@5480,@6452,@5091| 15870:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@938,@6453,@5267| 15871:D10,124|fb0d2b929103702b352c36293ba003292a3ba00304fa71021a2a3529fa6e0c293b69fa6c2a69fa6c2a693b3c3c3b2d68052705293b6964023b2a3ba00304fa48021a2a3529fa450c293b69fa432a69fa432a693b3c3c3b2d6805270529fa39693b3b3b3b2d68052cfa320cfa332a692b2a6927056502013b42000000|@6439,1,@939,@6458,@6434,@5091,@6457,@5480,@6456,@5091| 15872:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@940,@6463| 15873:D7,64|fb082b929103342b352c36293ba003112a3ba00304fa350202fa35293b696402172a3ba00304fa240202fa242afa250cfa262a692b2a69666502013b42000000|@6481,1,@941,@6440,@6438,@6480,@5091| 15874:D4,28|fb072b929103132b352c3628092b692afa160c2a2a69270402013b42|@4648,1,@942,@6486| 15875:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@943,@6434,@5480,@6488,@5091| 15876:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@944,@6489,@5267| 15877:D10,124|fb112b929103732b352c36293ba0032b2a352b362afa710c2a3ba00304fa6d0202fa6d293b69fa6c2a692c2a693b3c3b3b2d6805293b692708023c2a352b362afa460c2a3ba00304fa420202fa42293b69fa412a692c2a693b3c3b3b2d680529fa36693b3b3b3b2d680533fa2f0cfa302a692b2a69270c6502013b42|@6439,1,@945,@6434,@6440,@6438,@5091,@5480,@6495,@5091| 15878:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@946,@6496,@5267| 15879:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@947,@6499,@5631,@6498,@5091| 15880:D14,180|fb0e2b353ba003272b362c372a3cfab00c2a3cfaab0c293b69faa92a692c2a69faa62a692705faa40c3e2a696602812b353da003082b3629fa962d7d042b353ea0033e2b363e2841bd293b28083bf02a3b3b2807f050fa7c3f2c3f2806ec502a402828e4502a95503e2b692cfa6a0c29fa6a0c2b2a693b3c3c3b2d68052707022f2b362c372a3cfa370c29fa5369fa542a6965fa370c3e2a692bfa340c293b69fa462a692c2a693b3c3b3b2d6805270842000000|@6501,1,@948,@4569,@4154,@6502,@4052,@6434,@6503,@6504,@6500,@6450,@6449,@5091| 15881:D12,148|fb122b9291038b2b352c36293ba003372a352b362a3cfa880c29fa8869fa892a6965fa880c3e2a69280d2c69fa820c293b69fa802a692c2a693b3c3b3b2d6805293b69270902482a352b362a3cfa510c29fa5169fa522a6965fa510c3e2a69280d2c69fa4b0c293b69fa492a692c2a693b3c3b3b2d680529fa3e693b3b3b3b2d680534fa370cfa382a692b2a69270d6502013b42|@6439,1,@949,@4569,@6450,@6449,@4052,@6434,@5091,@6505,@6504,@5091| 15882:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@950,@6500,@5267| 15883:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@951,@6509| 15884:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@952,@6434,@5480,@6511,@5091| 15885:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@953,@6512,@5267| 15886:D7,60|fb0a2b929103322b352c36293ba0030a2afa350c293b6964021c2afa2b0c29fa2b693b3b3b3b2d68052cfa240cfa252a692b2a6927056502013b4200|@6439,1,@954,@6434,@5480,@6513,@5091| 15887:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@955,@6435,@5267| 15888:D8,152|fb092c3bfa9e0c3b062e299291031a29352a362a35fa91a003052a68010207292503511e193b6502013b64293ba00342fa7a299291031a29352a362a35fa69a003052a68010207292503511e193b6502013b64293ba00303fa56103b5029352935fa45a003043b500203fa4810293765021329352935fa30a003043b500203fa33102937643b06302d4533462a472e482b49270544000000|@6519,1,@956,@6518,@59,@5420,@5469,@4594| 15889:D7,80|fb082c299291031a29352a362a352d36a003052a68010207292503511e193b6502013b64293ba00304fa310215293529352c36a003043b500203fa24103b50293764fa2006fa212a2c316b6643000000|@6520,1,@957,@6521,@4594,@4062,@15890| 15890:D10,560|fb25293635293b3bef2d3b3bef2a3ba003032e0252293ba003032b024a2a2ab1292808b1293cb2293fb4291a0e02a503043b5002041a0802103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220d3f2e2c220cec502c95502c2708293b3bef0b02003b292ea003113b2e306a2a3b316a2c2b452a465051022d293fb12f2adc2940a091030d2b3cb129250426031e2a5002133b2c326a302db22d2a346a2f2c452a46502603515029352a362936293ba0036e2b352c362d37293b3bef2c3ba003052b2aa002013b03032a02482b3ba003051a6401023e2b2808b1293cb2293fb4291a4c01a503043b5002041a4601103b50292841bd2a3cb22a2a3b3bf02b3b3b34f0503f33b1312a2e3f220dec502c95502c27072210363b3b2ce32705f701012b352c362d37293b3bef2c3ba003052b2aa002013b03032a02452b3ba00304faf7023c2b2808b1293cb2293fb429fae0a503043b500203fadb103b50292841bd2a3cb22a2a3b3bf02b3b3b34f0503f33b1312a2e3f220dec502c95502c2707293b3bef3b3b2b2dfab30c29221338fab00cfab10c3e2a69642213370c502212363b3bfa94e3503135323633373c2ba503043b500203fa91103b503c2cb12b3cb22b3b3bef2b3ba003052a2aa002013b03032c02452a3ba00304fa5d023c2a2808b1293cb2293fb429fa46a503043b500203fa41103b50292841bd2a3cb22a2a3b3bf02b3b3b33f0503f32b1332a2e3f220cec502c95502c27072706221322157d15270b42|@6523,1,@959,16777215,@4054,@4062,@6524,@6528,@4052,@6522| 15891:D3,4|fb023b42|@5474,1,@958| 15892:D9,356|fb132d2da0039b2d2fab2c3b3bef303ba803043b5002041a5601103b502a3ba803043b5002041a4701103b50302bb1292ba703041a3d01103b503b502e3b3bef323ba003052c2aa002013b03032f024b2c3ba003051a200102412c2808b1293cb2293fb4291a1401a503043b5002041a0e01103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2210b1220d2a2e3f220eec502c95502c2707293b69270502bf2d3fb12c2adc292809a003a52f31ab2e3b3bef323ba803043b500203fab0103b502a3ba803043b500203faa2103b50322bb1292ba70303fa99103b503b50303b3bef343ba003052c2aa002013b03033102482c3ba00304fa7d023f2c2808b1293cb2293fb429fa72a503043b500203fa6d103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2212b1220f2a2e3f220eec502c95502c2707343caa220c3caa292b220e220efa390c2c2a692708020d2f3caa312a3131fa28327b0609651f0400|@6526,1,@960,@4004,@6525,@4062,16777215,@4054,@6524| 15893:D10,164|fb142c3ba003033b02962c352d362a3b3bef0b02002c322bfa960c5029352a362a3ba40304fa8d026a2a3ca00304fa8802612a3ba00304fa7b02582a3ba803043b500203fa76102a2808b1293cb2293fb429fa6ca503043b500203fa6710292841bd2a3cb22a2a3b3bf02b3b3b33f0503b312aa503043b500212293fb12d2a2820e4502a3cb12502501e1850502b95502b2706302bfa310c2a2a69332a69270b43000000|@6530,1,@961,@6529,@4062,@4125,@4056,16777215,@4054,@6528| 15894:D4,76|fb0c2c929103332c352d362f2ba8031e2f2bab0b02002c2e2bfa3d0c5029352a362a220daa342a452b46270702092a30ab2e2a452b466465020e2d2808ae28082aab2d2a453b466544000000|@6531,1,@962,@6529| 15895:D7,248|fb173b06293b3bfafbe3502d3ba203033c02042dfaf2a80303faf1103b503b502d28403bda3c063c063b06220c3c3b3b34332211323232220d22152215fad10c2a3503033b02a33b34a40305333ea402013b03233328ffb728412ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce3270802733b34a403063328ffa402013b031f3328ffb7293b69281f2a693f2a6922103729352b2a692b3b3b2ce3270702463328ffb7341b0001ad220c1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69280d2a693f2a6922153729352b2a692b3b3b2ce3270c2c35220e2a3336220c7e10000000|@6535,1,@963,@6536,16777215,@4557,@6534| 15896:D15,164|fb102b363ca20304faa602972b35293ba00304fa9f028b2c363ca20304fa9902812c3529352e363cab2a2a69fa8e352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6da003033c020d29fa68a003033c020429fa63a06402013b9102013b02013b03162afa5669fa572a69fa572a693b3e3c3b2d68056602012a64020129293b69fa452a69fa452a693b3c3b3b2d680527096442|@6538,1,@964,@6303,@6539,@6303,@75,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@6537| 15897:D139,15296|fb483035220f350a17005900d501fa015c02fc07440f2e1123122e00551272123a137213e5140715bd222d238723bd235926e83724382e39220f362210372211382b2b2b6a2922122211221122112211221122112211221122112210370c2704f7103a220f362210372211382b352807a0030729352807a002013b03e52b362a3629920331299203043b5002041a3c3b103b50293ca0031b2a9203142a9203043b5002041a293b103b502a2840a002013b02013b02013b032d2c3c3c221422142214221422142214221422142214221422130c50220e3729351af83a2a692b3b3b2ce36602792b3c3c221422142214221422142214221422142214221422130c2e3c3c221522152215221522152215221522152215221522140c2e3c3c221622162216221622162216221622162216221622150c22113729351a9c3a2a692b3b3b2ce350221335293cab22153b3b2ce350221535293cab22173b3b2ce3270a650279293c3c221222122212221222122212221222122212221222110c2c3c3c221322132213221322132213221322132213221322120c2c3c3c221422142214221422142214221422142214221422130c220f3729351a203a2a692b3b3b2ce350221135293cab22133b3b2ce350221335293cab22153b3b2ce3270a66f79438220f3629382922112211221122112211221122112211221122112211221122100c65f76f38220f36221037291ace390c292e221022102210221022102210221022102210221a1ab8390c220c353b063d2a6922103729352b2a692b3b3b2ce32e30326a296801220c221c221c2c221c221c221c221c221c221c221c221c221c221b0c270df70d38220f362210372211382b3c3c221222122212221222122212221222122212221222110c2b3c3c221322132213221322132213221322132213221322120c2b350a0c00fa000f01a7013302af02f9024303b60332041800bd0406052b362c372a3da0032d293ba0031422103729351a0e392a692b3b3b2ce3502603021222103729351afe382a692b3b3b2ce350260302a82a3ca0032d293ba0031422103729351ae4382a692b3b3b2ce3502603021222103729351ad4382a692b3b3b2ce350260302762a3fa0032d293ba0031422103729351aba382a692b3b3b2ce3502603021222103729351aaa382a692b3b3b2ce350260302442a3ea0032d293ba0031422103729351a90382a692b3b3b2ce3502603021222103729351a80382a692b3b3b2ce3502603021222103729351a70382a692b3b3b2ce350260351f75304220e3729351a5e382a692b3b3b2ce3502603f73e042b36293da003041a4b38103b503b50293ca003041a4238103b503b50292805a00314220f3729351a33382a692b3b3b2ce3502603025e293fa00314220f3729351a1e382a692b3b3b2ce35026030245293ea00314220f3729351a09382a692b3b3b2ce3502603022c292806a00314220f3729351af3372a692b3b3b2ce35026030212220f3729351ae3372a692b3b3b2ce350260350f7a6032b36293da00314220f3729351aca372a692b3b3b2ce3502603026d293ca00314220f3729351ab5372a692b3b3b2ce35026030254293ea00314220f3729351aa0372a692b3b3b2ce3502603023b292806a00314220f3729351a8a372a692b3b3b2ce35026030221293ba003043b5002041a7637103b50220f3729351a6f372a692b3b3b2ce350260350f71a032b36293da00314220f3729351a56372a692b3b3b2ce3502603025d293ca00314220f3729351a41372a692b3b3b2ce35026030244293fa00314220f3729351a2c372a692b3b3b2ce3502603022b293ea00314220f3729351a17372a692b3b3b2ce35026030212220f3729351a07372a692b3b3b2ce350260350f79e022b36293da00314220f3729351aee362a692b3b3b2ce3502603022b293ca00314220f3729351ad9362a692b3b3b2ce35026030212220f3729351ac9362a692b3b3b2ce350260350f754022b36293ca00314220f3729351ab0362a692b3b3b2ce3502603022b293da00314220f3729351a9b362a692b3b3b2ce35026030212220f3729351a8b362a692b3b3b2ce350260350f70a022b36293ca00314220f3729351a72362a692b3b3b2ce35026030254293ea00314220f3729351a5d362a692b3b3b2ce3502603023b292806a00314220f3729351a47362a692b3b3b2ce35026030221293ba003043b5002041a3336103b50220f3729351a2c362a692b3b3b2ce350260350f797012b36293da00314220f3729351a13362a692b3b3b2ce3502603025d293ca00314220f3729351afe352a692b3b3b2ce35026030244293fa00314220f3729351ae9352a692b3b3b2ce3502603022b293ea00314220f3729351ad4352a692b3b3b2ce35026030212220f3729351ac4352a692b3b3b2ce350260350f71b012b36293da00314220f3729351aab352a692b3b3b2ce3502603026d293ca00314220f3729351a96352a692b3b3b2ce35026030254293ea00314220f3729351a81352a692b3b3b2ce3502603023b292806a00314220f3729351a6b352a692b3b3b2ce35026030221293ba003043b5002041a5735103b50220f3729351a50352a692b3b3b2ce35026035002902b36293da00314220f3729351a38352a692b3b3b2ce3502603022b293ca00314220f3729351a23352a692b3b3b2ce35026030212220f3729351a13352a692b3b3b2ce35026035002472b36293ca00314220f3729351afb342a692b3b3b2ce3502603022b293da00314220f3729351ae6342a692b3b3b2ce35026030212220f3729351ad6342a692b3b3b2ce350260350220d35293cab220f3b3b2ce32707f76d32220f362210372211382212392c3ba0f8c90129352a362b372b3c3c221622162216221622162216221622162216221622150c502a9291035c2a352a3ba0031d293c3c221722172217221722172217221722172217221722160c500235293c3c221722172217221722172217221722172217221722160c502a22121a41340c5022113729351a1b342a692b3b3b2ce35026035002312922111a24340c50220f35293caa22113b3b2ce3502211352211352a2aa6030d22133522133b3b2ce3505002023b5026042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a8e330c5022143729351a68332a692b3b3b2ce35026035002312922141a71330c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a27332a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce32711f768052c3ca0f8c90129352a362b372b3c3c221622162216221622162216221622162216221622150c502a9291035c2a352a3ba0031d293c3c221722172217221722172217221722172217221722160c500235293c3c221722172217221722172217221722172217221722160c502a22121a72320c5022113729351a4c322a692b3b3b2ce35026035002312922111a55320c50220f35293caa22113b3b2ce3502211352211352a2aa6030d22133522133b3b2ce3505002023b5026042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151abf310c5022143729351a99312a692b3b3b2ce35026035002312922141aa2310c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a5c312a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce32711f799032c35293ba0f8ca012a352b362c372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121ac0300c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a8f300c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b503235333634372b3c3c221e221e221e221e221e221e221e221e221e221e221d0c502a929103202a35293c3c221f221f221f221f221f221f221f221f221f221f221e0c505002313b22191a1a300c50221735293caa22193b3b2ce3502219352219352a2aa6030d221b35221b3b3b2ce3505002023b5026042922191ae92f0c50221735293caa22193b3b2ce3502219352219352a2aa6030d221b35221b3b3b2ce3505002023b5022113c3c222222222222222222222222222222222222222222210c50221c3729351aa82f2a692b3b3b2ce350221e35293cab22203b3b2ce350222035293cab22223b3b2ce350222235293cab22243b3b2ce350222435293cab22263b3b2ce350222635293cab22283b3b2ce350222835293cab222a3b3b2ce3271df7c6012a352b362c372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131ad72e0c5022123729351ab12e2a692b3b3b2ce35026035002312922121aba2e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042e352f3630372b3c3c221a221a221a221a221a221a221a221a221a221a22190c502a9291035c2a352a3ba0031d293c3c221b221b221b221b221b221b221b221b221b221b221a0c500235293c3c221b221b221b221b221b221b221b221b221b221b221a0c502a22161a242e0c5022153729351afe2d2a692b3b3b2ce35026035002312922151a072e0c50221335293caa22153b3b2ce3502215352215352a2aa6030d22173522173b3b2ce3505002023b502604323c3c221a221a221a221a221a221a221a221a221a221a22190c5022143729351ac92d2a692b3b3b2ce350221635293cab22183b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32711642704f7252b220f3629352a362b372c382c3c3c221422142214221422142214221422142214221422130c3b062b3ba003033b02182b22111a412d0c5022103729351a132d2a692b3b3b2ce3663b2f299291031229362b3caa292b25042504511e113b6502012a65293ba203041a202d103b503b503b2a1a1a2d0c3c063b2a2c6a22153729352b2a692b3b3b2ce350221735293cab22193b3b2ce3220f322a3ba00312293ba003043b5002041ae92c103b503b02402a352b362b929103043b5002041ad72c103b502b352c362c929103043b5002133d2b6922223729352b2a692b3b3b2ce35026042b2a2506250626041e523b270465220f22222222222222222222222222222222222222222222222222210c221a3b3b3be32212220c2a3ba00312293ba003043b5002041a722c103b503b029f2a352b362b929103043b5002041a602c103b502b352c362c3ba003043b5002722c3522223503043b5002183c063c2a22183b6b22273729352b2a692b3b3b2ce3502605222a3ba003043b50020e222435293cab22263b3b2ce350513d2c6922263729352b2a692b3b3b2ce35022263b3b3be3502d222f222f222f222f222f222f222f222f222f222f222f222f222e0c5026052b2a2506250626041eb13b2704653d22106922203729352b2a692b3b3b2ce322213b3b3be3271bf73b29220f362210372211382b3c3c221222122212221222122212221222122212221222110c3b063b063c063c2a2d3c6b22113729352b2a692b3b3b2ce3221435293cab22163b3b2ce3220d221e221e221e221e221e221e221e221e221e221e221e221e221d0c221e3ba003033b020d221835293cab221a3b3b2ce3652217352903033b02173c063c2a220f3b6b221d3729352b2a692b3b3b2ce327053d220f69221d3729352b2a692b3b3b2ce3221e3b3b3be3221622282228222822282228222822282228222822282228222822270c2220353d22166922253729352b2a692b3b3b2ce3220e03032e02013b22273b3b2ce32721f74628220f3629341a8f2a0c3335293caa220c3b3b2ce350220c35220c352a2aa6030c220e35220e3b3b2ce36402013b2706f71428220f36220f3ba003033b020d292f34220d220c34331a792a0c64f7f727220f362210372a3c3c221122112211221122112211221122112211221122100c503b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922103729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a69220f3729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922143729352b2a692b3b3b2ce3270c65f72f27323729351aa9292a692b3b3b2ce3503435293caa220d3b3b2ce350220d35220d352a2aa6030c220f35220f3b3b2ce36402013b2707f7f726220f36221037221138220c3729351a6b292a692b3b3b2ce3220f35293caa22113b3b2ce3502211352211352a2aa6030c22133522133b3b2ce36402013b3b063c063c2a2c3d6b22183729352b2a692b3b3b2ce3221b35293caa221d3b3b2ce350221d35221d352a2aa6030c221f35221f3b3b2ce36402013b22173c3c222722272227222722272227222722272227222722260c22223729351ae5282a692b3b3b2ce33b063c063c2a2c3b6b22293729352b2a692b3b3b2ce3222c3b3b2227e3222b3b3b3be33d221a6922303729352b2a692b3b3b2ce322343729351aa6282a692b3b3b2ce3223735293caa22393b3b2ce3502239352239352a2aa6030c223b35223b3b3b2ce36402013b223c35296801223b9322342aa903041a6c28103b503b50223c22353b2de322363c3c224722472247224722472247224722472247224722460c3c3c22441a42280c224235293cab22443b3b2ce33d22206922473729352b2a692b3b3b2ce322483b3b3be32742f78425220f36293b1a1528220f220f220f220f220f220f220f220f220f220e360c64f76225220f362210372936299291f89c0629352b352c372e352808a003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a4c270c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a1b270c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a36272a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef7b7052e353fa003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a72260c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a41260c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a60262a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef7dd042e352805a003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a97250c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a66250c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a89252a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef702042e353da003041a5e25103b503b502e353ca003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131aaf240c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a7e240c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351aa9242a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef71a032e353ba003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131ad5230c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131aa4230c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351ad3232a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef740022e353ea003d42d352e362f372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141adc220c5022133729351ab6222a692b3b3b2ce35026035002312922131abf220c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50260422123729351af0222a692b3b3b2ce350221435293cab22163b3b2ce32708f766012e352806a003d32d352e362f372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a01220c5022133729351adb212a692b3b3b2ce35026035002312922131ae4210c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50260422123729351a19222a692b3b3b2ce350221435293cab22163b3b2ce32708028c2a3c3c221522152215221522152215221522152215221522140c2c3c3c221622162216221622162216221622162216221622150c2b22121a5f210c50221035293caa22123b3b2ce3502212352212352a2aa6030c22143522143b3b2ce36402013b22163729351a9c212a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270e66f708072a352b372d352808a003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121ab2200c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a81200c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a9c202a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef728062d353fa003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121ad81f0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121aa71f0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351ac61f2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef74e052d352805a003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121afd1e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121acc1e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351aef1e2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef773042d353da003041adc1e103b503b502d353ca003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a151e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121ae41d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a0f1e2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef78b032d353ba003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a3b1d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a0a1d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a391d2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef7b1022d353ea003d42c352d362e372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131a421c0c5022123729351a1c1c2a692b3b3b2ce35026035002312922121a251c0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b50260422113729351a561c2a692b3b3b2ce350221335293cab22153b3b2ce32708f7d7012d352806a003d32c352d362e372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131a671b0c5022123729351a411b2a692b3b3b2ce35026035002312922121a4a1b0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b50260422113729351a7f1b2a692b3b3b2ce350221335293cab22153b3b2ce3270802fd2a3c3c221422142214221422142214221422142214221422130c50293fb5293ba003043b5002041a491b103b502a3fb429920305293ba2020529942811a0030a1a341b2a1a341b0c020129299203043b5002041a291b103b503b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922163729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a6922153729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a69221a3729352b2a692b3b3b2ce3270c666566f7ac17220f36220d3ba003041a751a103b503b50220d3529352a362b372d1a671a0c292b32221422142214221422142214221422142214220e1a501a0c220f35292ea0910312221035292fab293b22151af1190c505102023b503c063c2a313b6b22133729352b2a692b3b3b2ce3270df73c17220f362210372a299291032b29352a362a30221222122212221222122212221222122212221c2212361af1190c50292503511e2b5102023b50502922112211221122112211221122112211221122112211221122100c65f7e216220f36293c3c2210221022102210221022102210221022102210220f0c343729351aa3192a692b3b3b2ce3220c3b3b3ce32706f7ac16220f362210372211382b352815a0033d2b362a3c3c221322132213221322132213221322132213221322120c2a3b3b2f33221522152215221522152215221522152215221f1a4d190c65f74b022b3c3c221222122212221222122212221222122212221222110c2a3c3c221322132213221322132213221322132213221322120c2c351a13193b292ca903032a0238293cb130362b3ebb2a2adc2d2807b729281fa903033b02033c2aba2b2ab7293ba091293ba00303320201312932250b250b26091e3b3b2709653b3b303531362c3ba203033c02032c2ba803041abf18103b503b502c3ebb2a2adc2e2807b729281fa903033b02033c2aba2b2ab7293ba091f8800122193729351a96182a692b3b3b2ce3503b220ca40306342805a402013b03243428ffb728352ab12928ffb7293b693f2a6922213729352b2a692b3b3b2ce350260802773b220ca403063428ffa402013b03203428ffb7293b6928232a693f2a6922203729352b2a692b3b3b2ce350260702483428ffb7220c1b0001ad220d1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922253729352b2a692b3b3b2ce350260c3b34a40306332807a402013b03243328ffb728452ab12928ffb7293b693f2a6922213729352b2a692b3b3b2ce350260802753b34a403063328ffa402013b03203328ffb7293b6928242a693f2a6922203729352b2a692b3b3b2ce350260702473328ffb7341b0001ad220c1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922253729352b2a692b3b3b2ce350260c34220da003033b0213343caa343caa2a2a250e250e260c20b1013b65660210313caa2932250a250a260820c4013b64270765270466f71014220f362210372211382936299291f8b90829352b352c372f350a0900c800c501c202bf03bb04b805b5061200b0072a3c3c221622162216221622162216221622162216221622150c2c3c3c221722172217221722172217221722172217221722160c2b22131af9150c221235293caa22143b3b2ce3502214352214352a2aa6030c22163522163b3b2ce36402013b220d3c3c221e221e221e221e221e221e221e221e221e221e221d0c22193729351a58162a692b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce350221f35293cab22213b3b2ce32712f7e2072d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a31150c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a00150c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a5f152a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7e5062d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a34140c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a03140c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a66142a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7e8052d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a37130c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a06130c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a6d132a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7eb042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a1b120c5022143729351af5112a692b3b3b2ce35026035002312922141afe110c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a68122a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce3270af7ef032d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a3e110c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a0d110c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a7c112a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7f2022d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a41100c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a10100c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a83102a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7f5012d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a250f0c5022143729351aff0e2a692b3b3b2ce35026035002312922141a080f0c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a7e0f2a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce3270a02fa2d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a490e0c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a180e0c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a930e2a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce3271066f7c0082a352b372e350a0900da00d601d202ce03ca04c605c2061200bd072a3c3c221522152215221522152215221522152215221522140c3b22111a5c0d0c221035293caa22123b3b2ce3502212352212352a2aa6030c22143522143b3b2ce36402013b3022171a300d0c221635293caa22183b3b2ce3502218352218352a2aa6030c221a35221a3b3b2ce36402013b22113c3c222222222222222222222222222222222222222222210c221d3729351a8f0d2a692b3b3b2ce350221f35293cab22213b3b2ce350222135293cab22233b3b2ce350222335293cab22253b3b2ce32717f7dc072c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a680c0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a370c0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a970c2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e0062c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a6c0b0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a3b0b0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a9f0b2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e4052c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a700a0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a3f0a0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351aa70a2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e8042c352d362e372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a55090c5022133729351a2f092a692b3b3b2ce35026035002312922131a38090c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b502604303c3c221822182218221822182218221822182218221822170c5022123729351aa2092a692b3b3b2ce350221435293cab22163b3b2ce350221635293cab22183b3b2ce3270af7ec032c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a78080c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a47080c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351ab7082a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7f0022c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a7c070c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a4b070c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351abf072a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7f4012c352d362e372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a61060c5022133729351a3b062a692b3b3b2ce35026035002312922131a44060c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b502604303c3c221822182218221822182218221822182218221822170c5022123729351aba062a692b3b3b2ce350221435293cab22163b3b2ce350221635293cab22183b3b2ce3270a02f92c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a85050c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a54050c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351ad0052a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710652704f78102220f36221037293c3c221122112211221122112211221122112211221122100c502a220c1aab040c50343729351ae2032a692b3b3b2ce32705f74502220f363b2a299291031229362b3caa292b25042504511e113b6502012a652a299291032829352a362a3c3c221422142214221422142214221422142214221422130c50292503511e285102023b50503d2aa40305293fa402013b0327293dab2928ffb728692ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce350260902743b2aa403062928ffa402013b03202928ffb7293b6928682a693f2a69220f3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928672a693f2a6922143729352b2a692b3b3b2ce350260c33352a3cab2a2aab220d3b3b2ce32705f73b01220f362210372a3c3c221122112211221122112211221122112211221122100c2a0a0e002e00400052006400760088009a00ac00be001c00d000e200f4000601220c3729351a10042a692b3b3b2ce36602e8220c3729351a02042a692b3b3b2ce36602d6220c3729351af4032a692b3b3b2ce36602c4220c3729351ae6032a692b3b3b2ce36602b2220c3729351ad8032a692b3b3b2ce36602a0220c3729351aca032a692b3b3b2ce366028e220c3729351abc032a692b3b3b2ce366027c220c3729351aae032a692b3b3b2ce366026a220c3729351aa0032a692b3b3b2ce3660258220c3729351a92032a692b3b3b2ce3660246220c3729351a84032a692b3b3b2ce3660234220c3729351a76032a692b3b3b2ce3660222220c3729351a68032a692b3b3b2ce3660210220c3729351a5a032a692b3b3b2ce36666220f3ba003983235292cab323503033c0203293ba003033b027b293ba2036a293c1a31030c293b3bef293ba003051a2803024928172ab1292808b1293cb2293fb4291a1803a503043b5002041a1203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501af2023f2d3f2817ec50313f2d281b34ec502b95502b27071ae6021ae7022b1ae7026b66103b503b50293b220e1a01020c220c3b3b30e36602ac2a3caa3335292bab333503033c0203293ba003033b028d291a3402a2036a293c1a94020c293b3bef293ba003051aa302024928172ab1292808b1293cb2293fb4291a7b02a503043b5002041a7502103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a6d023f2d3f2817ec50313f2d281b34ec502b95502b27071a49021a4a022b1a52026b66103b503b50291abf01a003093b220e1a1a010c0208293c220f1a54010c220d3b3b2fe32704651f0d|@6555,1,@965,@4816,@4816,@6556,@6557,@6559,@6560,@6561,@6563,@6565,@6567,@6569,@6571,@6573,@6575,@6577,@6579,@6581,@6584,@6587,@6589,@6591,@6593,@6595,@6597,@6599,@6601,@6603,@6605,@6608,@6610,@6612,@6614,@6616,@6618,@6620,@6622,@6624,@6626,@6628,@6630,@6632,@6634,@6636,@6638,@6641,@6643,@6645,@6647,@6649,@6651,@6653,@6655,@6657,@6659,@6661,@6664,@6666,@6668,@6670,@6672,@6674,@6676,@6678,@6683,@6685,@6687,@6689,@4848,@6691,@6198,@6198,@6198,@6198,@6692,@6697,@6699,@6701,@6703,@4632,@6705,@6713,@6715,@6717,@6719,@6721,@6724,@6726,@6728,@6730,@6732,@6721,@6734,@4564,@4565,@4560,@6737,@6740,@6741,@6746,@6751,@6753,-1,@5970,@6755,@6757,@6759,@6761,@6763,@6765,@6767,@6769,@6771,@6773,@6775,@6777,@6779,@6781,@6783,@6785,@6787,@6789,@6791,@6793,@6795,@6797,@6799,@6801,@4569,@6803,16777215,@4054,@16,@4583,@6804,@6803,@6554| 15898:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@966,@6559| 15899:D5,112|fb16220d92910363220d35220e362a352b36293c3c32221322132213221322132213221322132213221d0c50220c3529680134932d2aa90303fa41103b503b50220c2e3b2de350220f352f22152215221522152215221522152215221522152215fa1d0c2a2a69270902013b1f0c0000|@4648,1,@967,@4632,@6560| 15900:D11,340|fb122c9203132c9203043b5002041a4f01102c1a4e01a302013b03dd2c9203043b5002041a4101102c9203052c3ba202052c942811a0030a1a31012d1a31010c02012c299203043b5002041a2601102940a003112c3729351a1d012a692b3b3b2ce3660291293fa403222928ffb7283b2ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce32708026a291b0001a2031e2928ffb7293b6928282a693f2a69303729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69281b2a693f2a69220c3729352b2a692b3b3b2ce3270c6402582b3529353b2a299291031e29352a36322ba003032c020f2c3caa292b2505250526031e1c3b6465021a2c35313b69293ba003032a02052a2afa490c2f3b3b2ce3502d66653c063e2a2c6a303729352b2a692b3b3b2ce32708430000|@6680,1,@968,@4816,32768,@4816,@4564,@4565,@4560,@6681,@6679| 15901:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@969,@6679| 15902:D4,28|fb062c2ca003033b020e3b062d3caa292efa150c2b2a696643000000|@4843,1,@970,@6691| 15903:D7,1132|fb1931353ea0f80201303ba003d02f35291a6404aa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220c3729352b2a692b3b3b2ce350260802733b2aa403062928ffa402013b031f2928ffb7293b6928222a693f2a69343729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922103729352b2a692b3b3b2ce350260c3135293caa333b3b2ce350333532352a2aa6030b220c35343b3b2ce36402013b2706022a303529301a97030c503035293caa323b3b2ce350323531352a2aa6030a3435333b3b2ce36402013b2705f75c0331353ca0f87d0131363035291a5e03aa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220d3729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a69220c3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922113729352b2a692b3b3b2ce350260c3235293caa343b3b2ce350343533352a2aa6030d220d35220c3b3b2ce3505002023b502f3caa3b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922123729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a6922113729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922163729352b2a692b3b3b2ce3270c2708f7d80131353da003fd31362d932a2aa903041adf01103b503b502e2b3bdb29929103043b5002041ace01103b5029353b2aab3435292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922103729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922153729352b2a692b3b3b2ce350260c220d35293caa220f3b3b2ce350220f35220e352a2aa6030c22113522103b3b2ce36402013b270b02d531362c2aab3135292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220e3729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a69220d3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922123729352b2a692b3b3b2ce350260c3335293caa220c3b3b2ce350220c3534352a2aa6030c220e35220d3b3b2ce36402013b27081f07000000|@6694,1,@971,-1,@6678,@4597,@6693| 15904:D5,332|fb112d3ba003043bf740012c3ba0039f2d3ba203041a4001103b502d28ffa603462d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928182a693f2a69343729352b2a692b3b3b2ce3270c02462d3da6031e2d28ffb7293b6928262a693f2a692f3729352b2a692b3b3b2ce3270702232d3cab2928ffb728502ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce32709029c2d3ba20303faa6103b502d28ffa603462d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928192a693f2a69343729352b2a692b3b3b2ce3270c02462d3ea6031e2d28ffb7293b6928272a693f2a692f3729352b2a692b3b3b2ce3270702232d3cab2928ffb728642ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce3270944|@6707,1,@972,@6708,@6706| 15905:D3,4|fb023b42|@6714,1,@973| 15906:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@974,@6740| 15907:D6,296|fb16220e9291f80701220e35220f36220f929103043b5002041a1801103b50220f362b3c3c3b221222122212221222122212221222122212221c0c2b2b22122212221222122212221222122212221222122212fae30c3c2aa40305293ba402013b0327293cab2928ffb728252ab12928ffb7293b693f2a6922143729352b2a692b3b3b2ce350260902743b2aa403062928ffa402013b03202928ffb7293b6928252a693f2a6922123729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928172a693f2a6922173729352b2a692b3b3b2ce350260c220d35293cab220f3b3b2ce3502b27070215220d3ba003043b500203fa20103b503135292dab641f0d00|@6743,1,@975,@6742,@6741,@6742| 15908:D5,272|fb19220e353da00320220e36293b3c30221122112211221122112211221122112211221b22107b0f10220e353ca0033c220e36220f37293c3c31221222122212221222122212221222122212221c0c50343529680133932d2aa90303fabe103b503b50342e3b2de32705029f220e353ba0037c220e36220f372928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69280b2a693f2a6922153729352b2a692b3b3b2ce35022173529220eaa293caa221a3b3b2ce350221a3529680122199322132aa90303fa3d103b503b50221a22143b2de32714021c220e362934322f22112211221122102210220f220ffa1a220e7b0d101f0d000000|@6748,1,@976,@4632,@6747| 15909:D5,80|fb14220c92910343220c35220d362a352b36fa48fa4a2d2212221222122212221222122212221222122212220e680e2a3c2b221022102210221622112211221822122212221a22137b0e123b1f0b0000|@6749,1,@977,@15910,@6747| 15910:D4,72|fb112938352968012b39932c230d2aa90303fa40103b502c392d230d3b2de3502c372d382e392f3a30230631230732230833230934230a220c230b220d230c220e3622107b0d0600|@6750,1,@978,@4632| 15911:D5,388|fb1922109291f87801221035221136220f3522122aa2034022103522113622143ba203033c020422142ba803041a6001103b503b5022143ebb2a2adc22162807b729281fa903033b02033c2aba2b2ab7293ba091270702013b03ff2b3c3c31221222122212221222122212221222122212221c0c503b2212a4030722112807a402013b0325221128ffb728452ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce3502608027a3b2212a40307221128ffa402013b0321221128ffb7293b6928242a693f2a6922103729352b2a692b3b3b2ce35026070249221128ffb722121b0001ad22131b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922153729352b2a692b3b3b2ce350260c3435293cab220d3b3b2ce35022143caa22143caa2e2b2b221722172217221722172217221722172217221722172217fa3f22187b111822123caa2b2a2214221422142214221422142214221422142214221422142214fa1822157b11153b1f0f|@6754,1,@979,@5970,@6753| 15912:D9,1164|fb47220d37293ba0039e220e35220f362210382211393b060b05003222172b1a76040c5029352a362b372c382d392d2d2d2d2d6805220c68013b2210299291031229362b3caa292b25042504511e113b6502012a6522122c2c2c2213222322230c220f3b3b2ce3221095221122201a2b040c221f35293caa22213b3b2ce3502221352221352a2aa6030c22233522233b3b2ce36402013b222903073b222922207d2b3b271cf7e103220e35220f362210382211390b05003122162b1ada030c5029352a362b372c382d392d2d2d2d2d68053b220e299291031229362b3caa292b25042504511e113b6502012a6522102b3b2c2211222122210c3b2213299291031229362b3caa292b25042504511e113b6502012a65293caa2221f8510229221e1a79030c2840221f1a71030c3b22201a6a030c22203729351a65032a692b3b3b2ce3222335293caa22253b3b2ce3502225352225352a2aa6030c22273522273b3b2ce36402013b220e222a1a2e030c222a3729351a2d032a692b3b3b2ce3222d353b22330c3b2bab223035292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922383729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922373729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a69223c3729352b2a692b3b3b2ce350260c223235293caa22343b3b2ce3502234352234352a2aa6030c22363522363b3b2ce36402013b222f3c2a929103e32a352b3628092b69293c3c3b2243224322432243224322432243224322432242360c3b2ea403062d2807a402013b03232d28ffb728452ab12928ffb7293b693f2a6922433729352b2a692b3b3b2ce3270802723b2ea403062d28ffa402013b031f2d28ffb7293b6928242a693f2a6922423729352b2a692b3b3b2ce3270702452d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922473729352b2a692b3b3b2ce3270c223e35293cab22403b3b2ce3313caa302a250b250b26091ee13b270902013b6522393729351a5a012a692b3b3b2ce33c3b223f1a50010c223d35293cab223f3b3b2ce32723f719012b221e1a28010c221d35293caa221f3b3b2ce350221f35221f352a2aa6030c22213522213b3b2ce36402013b221a299291032e29352a3628092b69293c3c3b222d222d222d222d222d222d222d222d222d222c360c502a250426031e2d3b6602013b643d31a40305303fa402013b0326303dab2928ffb728692ab12928ffb7293b693f2a69222a3729352b2a692b3b3b2ce3270902723b31a403063028ffa402013b031f3028ffb7293b6928682a693f2a6922283729352b2a692b3b3b2ce3270702453028ffb7311b0001ad321b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928672a693f2a69222d3729352b2a692b3b3b2ce3270c222435323cab2a2aab22273b3b2ce3270b2714641f0c|@6807,1,@980,@6517,@6678,@6557,@6808,@6806,@6705| 15913:D6,736|fb17220c35291ae3020c3b2a299291031229362b3caa292b25042504511e113b6502012a652a3ba003033c0231220f3629293540a0030c2936292502501e0c3b64021929352809a003033c020f2935280da003033c020529352807a0646403522a299291032929352a362a3c3c3b2214221422142214221422142214221422142213360c2a250426031e283b6602013b64221036293c3c3b2213221322132213221322132213221322132212360c65f71801220f36293c3c3b2212221222122212221222122212221222122211360c2c299291032929352a362a3c3c3b2216221622162216221622162216221622162215360c2a250426031e283b6602013b643b2da403062c280ba402013b03232c28ffb728292ab12928ffb7293b693f2a6922133729352b2a692b3b3b2ce3270802723b2da403062c28ffa402013b031f2c28ffb7293b6928222a693f2a6922123729352b2a692b3b3b2ce3270702452c28ffb72d1b0001ad2e1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922173729352b2a692b3b3b2ce3270c220e35293caa22103b3b2ce3502210352210352a2aa6030c22123522123b3b2ce36402013b2708220f3ba003ee34353b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922123729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922113729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922163729352b2a692b3b3b2ce350260c220c35293caa220e3b3b2ce350220e35220e352a2aa6030c22103522103b3b2ce36402013b303daa221235293cab220f34ab2a2aaa2d2a2219fa3d0c22153b3b3ce3270c020f220c372935fa2f2a692b3b3b2ce366220c35292dab220e3b3b2ce327071f0b000000|@6812,1,@981,@6813,@6814,@6811| 15914:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@982,@6813| 15915:D5,288|fb182d1b0001a203072c1b0001a202013b03952d3fa0031e2c28ffb7293b69287e2a693f2a692f3729352b2a692b3b3b2ce3270702702d3ea003482c3ea003102b372935fae62a692b3b3b2ce36602312c3da003102b372935fad52a692b3b3b2ce366021c2c28ffb7293b69287d2a693f2a692f3729352b2a692b3b3b2ce3270702232d28ffb72d28ffb7293b692b2a69287b2a693f2a69313729352b2a692b3b3b2ce3270902752d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb73128ffb7321b0001ad331b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69302a69220c2a69287c2a693f2a6922123729352b2a692b3b3b2ce32713440000|@6816,1,@983,@6817,@6815| 15916:D10,544|fb302c352d362e372f3830392b35293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965321b0001a203113228ffb7293b6928fb2a693f2a696602383228ffb7331b0001ad341b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928fc2a693f2a692708292b690b02002c22102b1aa3010c5029352a36220d353b2a299291031229362b3caa292b25042504511e113b6502012a652b3fb4292bb1293fb12e280cb12a3cb2293fb32f3eaa293b293fa003033b02863b221a380c299103052d2bb1020a2d3fb1292cb2293cb2652c1b0001ae293ba003033b0211293ba2293ba003032a02052a1b0001aa642928ffb72211933f2ab32e2aa303043b5002041a1701103b5022132f2de450311b0001ad321b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab333cb12a2a250d250d260b1e893b270b6534fadd0c29932933a50303fad7103b503b502a333b221be3333cb12c93292ba50303fac0103b503b502d2b3b3ce33c2841bd3f293ba003033b0212293cb22b2a3be4502a3cb22502501e163b6464220f3db13193292ba50303fa89103b503b50322b3b2fe3222235293b2a929103332a352b3622143fb4292db1221193292ba50303fa60103b503b5022122b3b30e3502e3cb12d2a2508250826061e313b2706020129652220031a220c222422192224222936222a37fa300c50fa3022220c5002023b50220cfa2822287d29|@6823,1,@984,@6824,@6844,@6872,@6874,@6876,@4103,@6822| 15917:D7,216|fb1f2c352e3b2a3ba003032902342a352b362a353da003162a36293b3b2fe3502a2d2505250526031e223b6402132afab30c2c2ab12b2a2506250626041e373b6565652f2afaa10c293fb1293cb229fa9bb7293fb42a280cb130353b2a299291031229362b3caa292b25042504511e113b6502012a652c2ab1293fb1292841bd2a3fb33b292ba3030f2b2a3be450293cb125011e0f3b02013b643b0622143b3b2b929103272b352c362afa380c2d2ab12c2f2f33220e2214fa360c2c2b2b25082508250826051e2626050200260322122d45344627104400|@6826,1,@985,@6827,@6832,-4,@6825| 15918:D4,204|fb0a2b353ba0035e2b362c372a35293da00303fac3103b50293ba003243b2b299291031229362b3caa292b25042504511e113b6502012a65293dac3e2aaa6502223b2b299291031229362b3caa292b25042504511e113b6502012a65293fac3e2aaa656602652b353ea003192b362935293ca0030428050209293ba003033e02013d6502462b353ca003192b362935293ca0030428050209293ba003033e02013d6502272b353da003033b021e2b363b2a299291031229362b3caa292b25042504511e113b6502012a656442|@6829,1,@986,@6828| 15919:D8,156|fb112b3fb1293cb229fa9db729280cb1303b3b2b929103242b352c362afa8d0c2d2ab12c2f2f33fa870c2c2b2b25082508250826051e223b270502012966313b2a3ba003032902342a352b362a353da003162a36293b3b2fe3502a2d2505250526031e223b6402132afa410c2c2ab12b2a2506250626041e373b6565652932a30307322afa2e337e0a2932a003043b500203fa241031270643000000|@6834,1,@987,-4,@6827,@6835,@6832,@6833| 15920:D5,320|fb0c2e353ea0035e2e362f372a35293ba0031e2a3fb32f2ab1323eb12a2ab22928fda303072f3b3b3de302013b27040232293ca0032c2a3fb32f2ab1322805b12a2ab22928fda303072f3b3b3de3020e29faf9a303072f3b3b3be302013b270402013b6602d62e353ba0034d2e362f372a35293ca0033e303eb12b299291032629352a362a35292ea7030a2dfac2b12a2aa36402013b030a2a250426031e223b02013b6602013c6403072c3b3b3be302013b6402013b6602832e353ca0037c2e362f372a35293ba003352a352932a50315312ab2291b0001a303072d3b3b3de302013b640216313eb12a2ab2291b0001a303072e3b3b3de302013b65640239293ca003332a352932a50305312ab20208312805b12a2ab264291b0001a303072d3b3b3de3020e29fa27a303072d3b3b3be302013b6502013b6602013b1f040000|@6836,1,@988,65533,65536| 15921:D17,2308|fb4b30353ba0f81603303631372a35293da003041af908103b50293ba0f856013b2b299291031229362b3caa292b25042504511e113b6502012a65313531933f2ab32b2aa303043b5002041ac60810332c40e4220c35293cb1220e3b3b2ce33028ffb72210352210933f2ab32b2aa303043b5002041a9c081022122c2ee4221435293cb122163b3b2ce3220f1b0001ad22101b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7221b35221b933f2ab32b2aa303043b5002041a4e0810221d2c2ee4221f35293cb122213b3b2ce322243eb1221d299291038c29352a362a35292eb22a2fa703043b5002041a200810291a1f08a303043b5002041a1908102928ffb72229352229933f2ab32b2aa303043b5002041af30710222b2c2ee4222d35293cb1222f3b3b2ce3312808bb2928ffb72232352232933f2ab32b2aa303043b5002041ac4071022342c2ee4223635293cb122383b3b2ce32213251626151e8a3b271502013b64271cf7a5013b2b299291031229362b3caa292b25042504511e113b6502012a65313531933f2ab32b2aa303043b5002041a700710332c28f6e4220c35293cb1220e3b3b2ce33028ffb72210352210933f2ab32b2aa303043b5002041a45071022122c2ee4221435293cb122163b3b2ce3220f1b0001ad22101b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7221b35221b933f2ab32b2aa303043b5002041af70610221d2c2ee4221f35293cb122213b3b2ce322243eb1221d29929103dd29352a362a35292eb22a2fa703043b5002041ad506102928ffb72229352229933f2ab32b2aa303043b5002041aab0610222b2c2ee4222d35293cb1222f3b3b2ce3312808bb2928ffb72232352232933f2ab32b2aa303043b5002041a7c061022342c2ee4223635293cb122383b3b2ce322112810bb2928ffb7223b35223b933f2ab32b2aa303043b5002041a4c0610223d2c2ee4223f35293cb122413b3b2ce3221a2818bb2928ffb72244352244933f2ab32b2aa303043b5002041a1c061022462c2ee4224835293cb1224a3b3b2ce32225252826271edb3b272702013b64271c66f7e20530353ea0f81802303631372a35293da003722a3fb32f2ab1343db12a2ab2291b0001a303043b5002041add0510343534933f2ab32b2aa303043b5002041ab50510220d2c28fae4220f35293cb122113b3b2ce33028ffb72213352213933f2ab32b2aa303043b5002041a89051022152c2ee4221735293cb122193b3b2ce32c2713f79701293ba003a12a3fb32f2ab1343eb12a2ab2291a6405a303043b5002041a6a0510343534933f2ab32b2aa303043b5002041a3e0510220d2c281ae4220f35293cb122113b3b2ce33028ffb72213352213933f2ab32b2aa303043b5002041a12051022152c2ee4221735293cb122193b3b2ce3220f2808bb2928ffb7221c35221c933f2ab32b2aa303043b5002041ae20410221e2c2ee4222035293cb122223b3b2ce32c271c02f12a3fb32f2ab1342805b12a2ab2343534933f2ab32b2aa303043b5002041aab0410220d2c28f4e4220f35293cb122113b3b2ce33028ffb72213352213933f2ab32b2aa303043b5002041a7f041022152c2ee4221735293cb122193b3b2ce3220f2808bb2928ffb7221c35221c933f2ab32b2aa303043b5002041a4f0410221e2c2ee4222035293cb122223b3b2ce322182810bb2928ffb72225352225933f2ab32b2aa303043b5002041a1f041022272c2ee4222935293cb1222b3b3b2ce322212818bb2928ffb7222e35222e933f2ab32b2aa303043b5002041aef031022302c2ee4223235293cb122343b3b2ce32c272e66f7c30330353ca0f875033036313732382b35293da003fe2b3529220ca503752b3ba003043b5002041aca0310342ab2291b0001a303043b5002041abc0310333533933f2ab32b2aa303043b5002041a880310220c2c281ee4220e35293cb122103b3b2ce33028ffb72212352212933f2ab32b2aa303043b5002041a5c031022142c2ee4221635293cb122183b3b2ce32c2710027d2b3ba003033d020a2b3ca003033e02022881220c3db12b2ab2291b0001a303043b5002041a420310220c35220c933f2ab32b2aa303043b5002041a080310220e2c30e4221035293cb122123b3b2ce33028ffb72214352214933f2ab32b2aa303043b5002041add021022162c2ee4221835293cb1221a3b3b2ce32c271264f76602293ba0f860012b3529220ca503a52b3ba003043b5002041ad20210342ab2291aaa02a303043b5002041ac40210333533933f2ab32b2aa303043b5002041a840210220c2c2820e4220e35293cb122103b3b2ce33028ffb72212352212933f2ab32b2aa303043b5002041a58021022142c2ee4221635293cb122183b3b2ce3220f2808bb2928ffb7221b35221b933f2ab32b2aa303043b5002041a280210221d2c2ee4221f35293cb122213b3b2ce32c271902af2b3ba0030428f7020b2b3ca0030428f8020228f9220c3eb12b2ab2291afa01a303043b5002041a180210220c35220c933f2ab32b2aa303043b5002041ad20110220e2c30e4221035293cb122123b3b2ce33028ffb72214352214933f2ab32b2aa303043b5002041aa7011022162c2ee4221835293cb1221a3b3b2ce3220f2808bb2928ffb7221d35221d933f2ab32b2aa303043b5002041a770110221f2c2ee4222135293cb122233b3b2ce32c271b64f700012b352b3ba0030428f2020b2b3ca0030428f3020228f5220c2805b12b2ab2220c35220c933f2ab32b2aa303043b5002041a2b0110220e2c30e4221035293cb122123b3b2ce33028ffb72214352214933f2ab32b2aa303043b5002041a00011022162c2ee4221835293cb1221a3b3b2ce3220f2808bc2928ffb7221d35221d933f2ab32b2aa303043b500203fad110221f2c2ee4222135293cb122233b3b2ce322182810bc2928ffb72226352226933f2ab32b2aa303043b500203faa21022282c2ee4222a35293cb1222c3b3b2ce322212818bc2928ffb7222f35222f933f2ab32b2aa303043b500203fa731022312c2ee4223335293cb122353b3b2ce32c272e2704024730353da003033b023e303629299291033329352a36313531933f2ab32b2aa303043b500203fa3310332c2fe4220c35293cb1220e3b3b2ce330250a26091e313b270902013b64641f0600|@6840,1,@989,@6841,@6844,@6847,65536,@6850,@6852,@6854,@6857,@6859,@6862,@6865,@6867,@6869,@6839| 15922:D4,8|fb022bfa0f8a4200|@6873,1,@990,@18919| 15923:D31,1444|fb2a1aab052e0c301aa905a003033c0213303b3bef3ba0030a303f1a96053f3bed02013b03071a8f052f0c0203302f0c1a8905300c3b063b062a3529220ca3f85a052b3529920305293ba2020529942811a0030a1a69052a1a69050c020129293d1a64050c64220c0c502b35293ba003033b02062935292ca06403682d353d2a22121a47050c2f352a2ab1293db11a3f0522120c2a9203052a3ba202052a942811a0030a1a19052b1a19050c02012a293d1a14050c6422130c3435293db1220d3b3b2ce3220d3529929103043b5002041a0105103b502936220f3b3b2ce350260cf7a9041ae904220d0c2e352211933f2ab32b2aa303043b5002041ada04103b5022132cdc3235293cb1343b3b2ce32213932d2aa903041ac204103b503b5022142e3bdb6422150c2213932e2aa903041aa904103b503b5022142f3bdb293ca003053b50f744042f3da003033c024b2f3ea003033c02432f2881a003033c023a2f2805a003033c02312f281aa003033c02282f28f2a003033c021f2f28f3a003033c02162f28f5a003033c020d2f28faa003033c02042f28f4a00354293cab2210352a2a221e1a37040c2212352a2ab1292eb11a1a04221e0c2a9203052a3ba202052a942811a0030a1af4032b1af4030c02012a293d1aef030c64221f0c2217352932b122193b3b2ce350260af79b032f281ea003531ad70322180c50220f35293cb22211353c2a221f1ad7030c2b2ab229920305293ba2020529942811a0030a1a9c032a1a9c030c020129293d1a97030c64221d0c50221435293cb122163b3b2ce3502607f742032f2820a003531a7e0322180c50220f35293cb22211353d2a221f1a82030c2b2ab229920305293ba2020529942811a0030a1a43032a1a43030c020129293d1a3e030c64221d0c50221435293db122163b3b2ce3502607f7e9022f2812a003ce1a250322180c2210353d2a221e1a34030c29920305293ba2020529942811a0030a1af4022a1af4020c020129293d1aef020c64221b0c221335293db122153b3b2ce3501a0203221e0c2216353d2a22241af9020c29920305293ba2020529942811a0030a1ab1022a1ab1020c020129293d1aac020c6422210c221935293db1221b3b3b2ce3501abf0222240c221c353d2a222a1aba020c29920305293ba2020529942811a0030a1a6e022a1a6e020c020129293d1a69020c6422270c221f35293db122213b3b2ce3502612f715022f40a003b4220f353d2a221d1a77020c1a4702221a0c2212353d2a22201a6a020c29920305293ba2020529942811a0030a1a16022a1a16020c020129293d1a11020c64221d0c221535293db122173b3b2ce32218353b2933a703043b5002541a2c0222230c50221a353d2a22281a22020c2c2ab129920305293ba2020529942811a0030a1ac3012a1ac3010c020129293d1abe010c6422260c50221d35293db1221f3b3b2ce3502e3cb129250726061e59260650260af75c012f287ca0038a1a980122180c2210353d2a221e1ac7010c29920305293ba2020529942811a0030a1a67012a1a67010c020129293d1a62010c64221b0c221335293db122153b3b2ce3501a7501221e0c2216353d2a22241a88010c29920305293ba2020529942811a0030a1a24012a1a24010c020129293d1a1f010c6422210c221935293db1221b3b3b2ce350260c02cc2f287ba003831a080122180c2210353c2a221e1a3f010c29920305293ba2020529942811a00308fad82afad90c020129293dfad50c64221b0c221335293cb122153b3b2ce350fae9221e0c2216353c2a22241a04010c29920305293ba2020529942811a00308fa992afa9a0c020129293dfa960c6422210c221935293cb1221b3b3b2ce350260c0243293cabfa8322190c2211352b2a221ffac30c29920305293ba2020529942811a00308fa542afa550c020129293dfa510c64221c0c221435292fb122163b3b2ce3502607260bfa21220d0c502603205c053b6502013b6427051f060000|@6878,1,@991,@4103,@4062,@4156,@6879,@4564,@4565,@4569,@6880,@4102,@6884,@6881,@4597,@6887,@6888,@6889,@6890,@4137,@6891,@6892,@6893,@6894,@6895,@6896,@6897,@6898,@6899,@6900,@6877| 15924:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@992,@6880,@6881| 15925:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@993,@6887,@6881| 15926:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@994,@6888,@6881| 15927:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@995,@6889,@6881| 15928:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@996,@6890,@6881| 15929:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@997,@6891,@6881| 15930:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@998,@6892,@6881| 15931:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@999,@6893,@6881| 15932:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1000,@6894,@6881| 15933:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1001,@6896,@6881| 15934:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1002,@6897,@6881| 15935:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1003,@6898,@6881| 15936:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1004,@6899,@6881| 15937:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1005,@6900,@6881| 15938:D5,56|fb0a2d3ba003033b022b2d3cab2d3cb12a2a2ffa2f0c292808ba2f933f2ab3322aa303043b500203fa1e103b503133dc2c2ab12707440000|@6882,1,@1006,@6877,@6881| 15939:D4,8|fb022bfa0f8a4200|@6901,1,@1007,@18920| 15940:D4,8|fb022bfa0f844200|@7158,1,@1008,@18921| 15941:D9,152|fb1a2f35303630353136323733383439220c3a220d2306220e23072a3ba203033c02042afa7ea80303fa7d103b503b502a28403bda3b06fa7322112b220d332f6806fa6c2c69fa6c220f36220f2d2d22156806220c2afa600c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296522152c45220f46220e472a48220c49344a334b324c27121f05000000|@7159,1,@1009,16777215,@4557,@15943,@15944,@15942,@5704| 15942:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@6185,1,@1012| 15943:D6,152|fb0a2b353ea00304293602882b353ca0034b2b362a392a2a929103043b500203fa82103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b6465652b380c29353ba0030329020c2936292d37fa530c3c2a69656502372b353da0032e2b362a3a932a2aa90303fa3d103b503b502b3a2b3bdb299291030d293529352a363b2b2b6a6602033c2f696602033c2c6942000000|@7160,1,@1010,@4721,@5821,@4597| 15944:D4,32|fb092b352c362968012c36932c2aa90303fa19103b502d362d3b2de327044200|@7161,1,@1011,@4632| 15945:D4,8|fb02fa1010000000|@6204,1,@1013,@6203| 15946:D9,180|fb0b2c35280fa003092c37292dfab12e7e052c352814a0033b2c3629faa22efaa30c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b020bfa80fa822b3b6b293b696465025c2c352808a003492c3629353da003043b500203fa67103b5029362d932a2aa90303fa5d103b503b502e2b3bdb299291030d293529352a363b2b2b6a6602033c2d6929353ba00304293702013b2705020c2c352806a003042c3702013b43000000|@7165,1,@1014,@7163,@7164,@24,@4162,@6178,@4597| 15947:D4,32|fb082d929103152d352e362a2e300c2a3030fa180c2a2a69270402013b440000|@4648,1,@1015,@7164| 15948:D10,164|fb142b3ba003032c02962c3ba003032b028e0b02002f2a2e36fa950c5029352a360b0200332a3336fa8a0c5029352a362f929103052a929102013b034d2f352b352a35220d36a003043b500203fa69103b502a372a35220e36a003043b500203fa56103b502a372a2a2210fa4f0c220f36fa4d2b3b6b2f3ba003033402053430fa420c2a2a6927070214220c3ba00304220d020a220d220dfa2e220e7e0e270a43000000|@7167,1,@1016,@7168,@7170,@4594,@7171,@4162,@7172,@7166| 15949:D5,68|fb0b2d929103302d352e362a352ea0030b2a68012f2a452b466402180b02002c2a32fa2c0c5029352a362f2a69342c452a46270665020afa1b2d2a35452a364664440000|@7169,1,@1017,@7168,@4685| 15950:D5,68|fb0b2d929103302d352e362a352ea0030b2a68012f2a452b466402180b02002c2a32fa2c0c5029352a362f2a69342c452a46270665020afa1b2d2a35452a364664440000|@7169,1,@1018,@7170,@4685| 15951:D6,64|fb0a2d3ba003112c3ba003043b500203fa3a103b503b02252d352e362e929103043b500203fa29103b502e352f362c2b310c2c2b32fa1d0c2a2a692706440000|@6073,1,@1019,@6072,@6072,@7171| 15952:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1020,@7172| 15953:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1021,@7166| 15954:D5,44|fb0c2d929103232d352e362a352b362f313bfa240c3c2c2c2c6b323caa2e2a34fa1a0c2b2a69270802013b44|@7173,1,@1022,@4807,@6171| 15955:D5,32|fb0a2d929103142d352e36292f2ffa1c0c2b2a3131fa19327b06083b44000000|@6193,1,@1024,@7176,@7177| 15956:D8,256|fb162e353ba0031b2e362f37303831392931faf80c3b2e2e2e2d6805293469270602da2e353da003102e36292efadd0c3d2a692931696602c42e353ea003402e360b02002c2a310c5029352a362a92919103033b02073e2b69293b6964343ba0030329020629220cfaa60c293ba003032b02082b2afa9d220c7e0e2708027e2e362f3730382935280ca0036229362c2c2b6a293b690b02002c2a220d0c5029352a362a3ba00314220f3ba00303290209292210fa63220f7e11022f2a352b36293ba003052b3ba002013b03043b500203fa4a103b502a352b362c37280c2a693c2d2d2c6b2922176927072708020e2930fa1a0c3c2d2d2c6b29336965661f0400|@7179,1,@1025,@5704,@7180,@7181,@7182,@7178| 15957:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1026,@7180| 15958:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1027,@7181| 15959:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1028,@7182| 15960:D7,84|fb092b353ea003482b362c372a3ba20303fa4d103b503b2b2bfa490c29299291031a29352a362a3629353da0030a2a250426031e163b02013b6602013c640304fa260209fa262a693e2d2b6a646602012b420000|@7190,1,@1029,@4848,@7189,@4719,@15291| 15961:D5,40|fb0b2d2da003033b021c2d2c0c29352a3629fa200c2b2a69323caa293333fa180c2b2a6927074400|@4843,1,@1030,@7188,@7189| 15962:D3,16|fb053b2a370c28062a2c366a64420000|@7191,1,@1031| 15963:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@7194,1,@1032,@6303,@7195,@6303,@7202,@6303,@7193| 15964:D6,180|fb0d2c353ba003033b02a52c353fa003033b029c2c353ca003572c362d372a383b2a299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa7e103b503b503b2a2dfa780c29299291031829352a362a352b36220c34360c50292503511e173b6502013b642705023f2c353ea003382c362d372a3ba20303fa3e103b503b503b2b2bfa3c0c29299291031729352a362a352b363332360c50292503511e163b6502013b646602013b43000000|@7212,1,@1033,@4848,@7213,@7211| 15965:D4,28|fb072d2da003033b02102d2c0c2e3caa292f2ffa130c2b2a69664400|@4843,1,@1034,@7213| 15966:D4,28|fb072d2da003033b02102d2c0c2e3caa292f2ffa130c2b2a69664400|@4843,1,@1035,@7211| 15967:D6,160|fb0a2d353ba003033b02912d3629353da003043b500203fa93103b5029362d932a2aa90303fa89103b503b502e2b3bdb293ca0032630353da003033b021b2f932c2aa90303fa6d103b503b50302d3b3de35031313036327e0a023f293da003033b023730353da003162f932c2aa90303fa42103b503b50302d3b3ce364021b2f932c2aa90303fa2c103b503b50302d3b3de35031313036327e0a270444000000|@7215,1,@1036,@7214,@4597,@4632| 15968:D8,276|fb0f2d353ba003502d372e38293ba203041a0c01103b503b503b2a2c1a05010c28142a3b6a30932d2aa90303fafa103b503b50312e3bdb293ba091031631932f2aa90303fae6103b503b5032303b2fe36402013b270602b92d353da003033b02b02d353ea003642d3629299291035729352a362a36293ba20303fab4103b503b503d2a6928082a6933932c2aa90303fa97103b503b50342d3bdb293ba091031834932e2aa90303fa83103b503b50220c2f3b2fe3505002023b502e250826071e553b270702013b646402462d37293ba20303fa5c103b503b503d2a6928082a692f932c2aa90303fa3f103b503b50302d3bdb293ba091031630932e2aa90303fa2b103b503b50312f3b2fe36402013b2705440000|@7220,1,@1037,@4848,@7219,@4599,@4632,@5886| 15969:D5,52|fb092d2da003033b02272b3ba20303fa2f103b503b503d2c6928082a69280b2a313b6b303caa293131fa190c2b2a692705440000|@4843,1,@1038,@5886,@7219| 15970:D6,60|fb072c3ba003162b353da003033b020bfa36fa382d3b6b293b6964021c2c352d362a35fa23a00307292efa242f7e06292efa1d0c2b2a696465430000|@4826,1,@1040,@25,@4162,@7221| 15971:D4,8|fb022bfa0f844200|@7226,1,@1041,@18922| 15972:D4,8|fb022bfa0f844200|@7227,1,@1042,@18923| 15973:D4,8|fb02fa1042000000|@5002,1,@1043,@4667| 15974:D3,8|fb032c2ca0430000|@4771,1,@1044| 15975:D4,8|fb02fa1010000000|@4894,1,@1045,@4893| 15976:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1046,@7263,@4688| 15977:D4,56|fb072b9291032d2b352c362a352806a0030c2a37293fb7293ba0916502013b030a29fa200c2b2a6964020629fa162e7d056502013b420000|@4461,1,@1047,@7265| 15978:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1048,@7266,@4688| 15979:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1049,@7268,@4688| 15980:D13,160|fb103efaa7faa92e6b2cfaa80c293b3bef293ba00304faa0024a293db1292808b1293cb2293fb429fa92a503043b500203fa8d10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c270829fa5da003033c0212293b3bef3ba00309293ffa4b3f3bed02013b0304fa450201293bfa430c3bfa430c2f2c3b2d2d3b3b3c6808280c2a6927084200|@7272,1,@1050,@5039,@5041,@5508,@4926,16777215,@4054,@4062,@4866,@7273,@7271| 15981:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1051,@4839,@7273| 15982:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1052,@7271,@4688| 15983:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1053,@7274,@4688| 15984:D5,36|fb092c9291031b2c352d362d3cfa210c292c692f3caa2c2afa1a0c2b2a69270602013b43|@7276,1,@1054,@4569,@7275| 15985:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1055,@7277| 15986:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1056,@4839,@7279| 15987:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1057,@7280,@4688| 15988:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1058,@7285,@4688| 15989:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1059,@7291,@4688| 15990:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1060,@7294,@4688| 15991:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1061,@7298,@4688| 15992:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1062,@7300,@4688| 15993:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1063,@7302,@4688| 15994:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1064,@4839,@7309| 15995:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1065,@7310,@4688| 15996:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1066,@7314,@4688| 15997:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1067,@7318,@4688| 15998:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1068,@7320,@4688| 15999:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1069,@7322,@4688| 16000:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1070,@7330,@4688| 16001:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1071,@4839,@7332| 16002:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1072,@7333,@4688| 16003:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1073,@7342,@4688| 16004:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1074,@7346,@4688| 16005:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1075,@7349,@4688| 16006:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1076,@7352,@4688| 16007:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3c293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333dfa340c333b3b2ce350339550332717420000|@7363,1,@1077,@6517,@7364,@7366,@6678,@7368,@7362,@6533| 16008:D4,8|fb022bfa0f8a4200|@7365,1,@1078,@18924| 16009:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1079,@7371,@4688| 16010:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1080,@7373,@4688| 16011:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3c293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333dfa340c333b3b2ce350339550332717420000|@7363,1,@1081,@6517,@7364,@7366,@6678,@7376,@7362,@6533| 16012:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1082,@7378,@4688| 16013:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1083,@7380,@4688| 16014:D9,84|fb1b0b0500313b2bfa560c5029352a362b372c382d392d2d2d2d2d68053b06220ffa410c292cfa400c2f35fa3f2a69313b3b2ce33235fa382a69343b3b2ce3323cfa310c323b3b2ce35032955032271642000000|@7363,1,@1084,@6517,@7364,@6678,@7383,@7382,@6533| 16015:D19,380|fb1f2c3c1a81010c293b3bef293ba003051a7801024728072ab1292808b1293cb2293fb4291a6801a503043b5002041a620110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a44013f2d3f2807ec50313f2d280b34ec502b95502b27072f3ba203041a3301103b503b301a2f010c291a2e010c28072a1a2b013c6b2806323b6a1a25011a1a010c28072a2c3c6b2f3b3bef293ba003051a13010253293eb1292808b1293cb2293fb429fae5a503043b500203fae010292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c270829fabfa003033c0212293b3bef3ba00309293ffaad3f3bed02013b0304faa7020129faa6faa80c3bfaa80c312c3b2d2d3b3b3c6808280c2a693c3b3b336b293b69293ba003032b0205280f2a2d6a2210fa70a003033c021422103b3bef3ba0030a22103ffa5c3f3bed02013b0304fa56020222103bfa570c3bfa5b0c2c2c3b2d2d3b3c3c6808280c2a6927174300|@7388,1,@1085,@4569,@7389,16777215,@4054,@4848,@7390,@4867,@5175,@5344,@7391,@4062,@4866,@7392,@4838,@7393,@7387| 16016:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@1086,@4684,@7390| 16017:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1087,@7393,@4688| 16018:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1088,@7387,@4688| 16019:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1089,@7394,@4688| 16020:D9,84|fb1b0b0500313b2bfa560c5029352a362b372c382d392d2d2d2d2d68053b06220ffa410c292cfa400c2f35fa3f2a69313b3b2ce33235fa382a69343b3b2ce3323cfa310c323b3b2ce35032955032271642000000|@7363,1,@1090,@6517,@7364,@6678,@7396,@7382,@6533| 16021:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1091,@7398,@4688| 16022:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3d293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333efa340c333b3b2ce350339550332717420000|@7363,1,@1092,@6517,@7364,@7401,@6678,@7403,@7400,@6533| 16023:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1093,@7406,@4688| 16024:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3d293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333efa340c333b3b2ce350339550332717420000|@7363,1,@1094,@6517,@7364,@7401,@6678,@7408,@7400,@6533| 16025:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1095,@7410,@4688| 16026:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3e293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333ffa340c333b3b2ce350339550332717420000|@7363,1,@1096,@6517,@7364,@7413,@6678,@7415,@7412,@6533| 16027:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1097,@7418,@4688| 16028:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3e293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333ffa340c333b3b2ce350339550332717420000|@7363,1,@1098,@6517,@7364,@7413,@6678,@7420,@7412,@6533| 16029:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1099,@7422,@4688| 16030:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3f293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3332805fa330c333b3b2ce3503395503327174200|@7363,1,@1100,@6517,@7364,@7425,@6678,@7427,@7424,@6533| 16031:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1101,@7431,@4688| 16032:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3e293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333ffa340c333b3b2ce350339550332717420000|@7363,1,@1102,@6517,@7364,@7413,@6678,@7415,@7412,@6533| 16033:D23,376|fb232d3c1a7d010c2d3c1a77010c293b691a74012a692c2a691a70012a6927051a6d010c2e3ba203041a6801103b503b2f1a64010c291a63010c291a62010c28072a1a5f013c6b3b3b3b342d6805293b69333ba203041a3b01103b503b341a47010c28142a3b6a2b3ba00303290205280f2c2b6a323b3bef293ba003051a2c010255293eb1292808b1293cb2293fb4291a1d01a503043b5002041a170110292841bd2a3cb22a2a3b3bf02b3b3b32f05022113f2d3f34ec503f31b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c270829fadea003033c0212293b3bef3ba00309293ffacc3f3bed02013b0304fac6020129fac5fac70c3bfac70c2e2c3b2d2d3b3c3c6808280c2a69280622143b6afab4fa860c28072a2c3c6b3c3b3b2c6b293b69293ba003032e0205280f2a306a2216fa7ea003033c021422163b3bef3ba0030a22163ffa6a3f3bed02013b0304fa64020222163bfa650c3bfa6d0c2c2c3b2d2d3b3c3c6808280c2a69271b44000000|@7442,1,@1103,@4569,@4160,@7443,@4052,@4848,@7444,@7445,@4867,@5175,@7446,@7391,16777215,@4054,@4062,@4866,@7392,@4838,@7447,@5344,@7441| 16034:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@1104,@4684,@7444| 16035:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1105,@7445,@7392| 16036:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@1106,@5044,@7446| 16037:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1107,@7447,@4688| 16038:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1108,@7441,@4688| 16039:D4,8|fb02fa1010000000|@4894,1,@1109,@4893| 16040:D29,372|fb151a7b011a7c010c28072a1a79013c6b1a78011a79012f2c1a780168053c2a692f353ba003382f36290a07000e00130018001d00220027002c001a5a01021c1a590102171a580102121a5701020d1a560102081a550102031a540164022e2f36293da003051a4b010221293ca003051a45010217293fa003051a3f01020d293ea003051a390102031a380164293b3bef293ba003051a2f01024628092ab1292808b1293cb2293fb4291a1f01a503043b5002041a190110292841bd2a3cb22a2a3b3bf02b3b3b32f050fafc3f2d3f2809ec50313f2d280d34ec502b95502b2707293b3bef293ba00304fae8024a293db1292808b1293cb2293fb429facea503043b500203fac910292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c270829fa9da003033c0212293b3bef3ba00309293ffa8b3f3bed02013b0304fa850201293bfa830c3bfa830c312c3b2d2d3b3b3c6808280c2a69270d4200|@7490,1,@1110,@7491,@7495,@7312,@5039,@5041,@7496,@5490,@5491,@5492,@5493,@5494,@5495,@5496,@5497,@5498,@5499,@5500,@5501,@7499,16777215,@4054,@4926,@4062,@4866,@7500,@7489| 16041:D4,28|fb072b929103122b352c362a3c692afa170c2a2a69270402013b4200|@4648,1,@1111,@7495| 16042:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1112,@4839,@7500| 16043:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1113,@7489,@4688| 16044:D4,8|fb02fa1010000000|@4894,1,@1114,@4893| 16045:D4,8|fb02fa1010000000|@4894,1,@1115,@4893| 16046:D4,8|fb02fa1010000000|@4894,1,@1116,@4893| 16047:D4,8|fb02fa1010000000|@4894,1,@1117,@4893| 16048:D4,8|fb02fa1010000000|@4894,1,@1118,@4893| 16049:D4,8|fb02fa1010000000|@4894,1,@1119,@4893| 16050:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3c293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333dfa340c333b3b2ce350339550332717420000|@7575,1,@1120,@6517,@7364,@7366,@6678,@7574,@7362,@6533| 16051:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1121,@7577,@4688| 16052:D10,116|fb1c0b0500313b2bfa760c5029352a362b372c382d392d2d2d2d2d68053b06220ffa610c3c293ba003033b02162f35fa572a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa440c3035fa432a69323b3b2ce33335fa3c2a69220c3b3b2ce3333dfa340c333b3b2ce350339550332717420000|@7582,1,@1122,@6517,@7364,@7366,@6678,@7581,@7362,@6533| 16053:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1123,@7584,@4688| 16054:D4,8|fb02fa1010000000|@4894,1,@1124,@4893| 16055:D4,8|fb02fa1010000000|@4894,1,@1125,@4893| 16056:D4,8|fb02fa1042000000|@5413,1,@1126,@4667| 16057:D4,8|fb02fa1010000000|@4894,1,@1127,@4893| 16058:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1128,@7626,@4688| 16059:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1129,@7631,@4688| 16060:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1130,@7641,@4688| 16061:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1131,@7646,@4688| 16062:D10,168|fb132b3b3beffaac2d2b6a3b2b2b30faa70c299291038b29353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fa7d10293ca00307fa792b3bdb0253292808b1293cb2293fb429fa6ba503043b500203fa6610292841bd2a3cb22a2a3b3bf02b3b3b32f0503f32299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202fa2866420000|@7659,1,@1132,@16063,@7658,@4056,@4064,16777215,@4054,@4062| 16063:D4,56|fb062b2a37a003033b022a2b3ba203033c020929363b3bef2c2aa8640303fa24103b502b3fb12a362adc2d3caa2a2a692968012704420000|@7660,1,@1133,@4023| 16064:D8,176|fb0b2e2ea003033b02a12e292efaad0c29929103752935293529faa4a003033c0212293b3bef3ba00309293ffa923f3bed02013b03452a362933a003033b0228293ba203033c0208303b3bef2a2aa8640303fa70103b50293fb1312adc2b3caa2a2a692968012704293ba003033b02082a250626051e6a3b65020c2a362a3fdc292b69296801666502013b646429929103043b500203fa3010293529352a3629323232fa270c2b2a6927051f04000000|@7662,1,@1134,@7663,@4062,@4023,@7661,@7658| 16065:D15,736|fb172c2c0c299291f8c802293529352a362a2820a303033c0204287e2ba303043bf7ac022a285ca0f8990229300c299291f88c0229352935292875a0032b2a363b3f2b220d1aa4020c2992910316293529352a36220c362b3bdb292b69296801270502013b65f7540229285ea003512a3629340c2992910342293529352a362a2840a80306285f2ba802013b03292a2840ab293ba203033c02042928ffa603041a4d02103b503b50220d362a3bdb292c692968016602013b6602013b65f7fd01292822a0030e2a361a29022a6929680165f7e90129285ca0030e2a361a19022a6929680165f7d501292872a0030e2a361a09022a6929680165f7c101292866a0030e2a361af9012a6929680165f7ad01292876a0030e2a361ae9012a6929680165f7990129286ea0030e2a361ad9012a6929680165f78501292874a0030e2a361ac9012a6929680165f77101292862a0030e2a361ab9012a6929680165f75d01292861a0030e2a361aa9012a6929680165f749012a3628092ba503062a280da502013b03033c02042a2820a003602929220c0c299291032c293529352a3628092ba503062a280da502013b03033c02042a2820a0030a29250526041e2c3b02012d6602012a6464340c299291031c293529352a362a285ca09103033b02091a37012a69296801646602013b6402ce28302ba503062a2832a502013b03be3b3e2f2a3ba003272b28ffa603033b021c2b3ba203033c02042b28ffa60303fad2103b503b502b2a6929680164026f29220e0c2992910338293529352a3628302ba5030628392ba802013b031f2e3cab3040ac292daa292830ab292d2f250b250b250b26081e623b270402013b66022d2c28ffa603033c02032b3ba603033b021c2c3ba203033c02042c28ffa60303fa62103b503b502c2b692968016464662992910316293529352a36220c362b3bdb292b69296801270502013b6402013b646502013b64020c2d362b3bdb292b6929680165660208fa432e69296801646443000000|@7665,1,@1135,@7666,@4076,@4061,@4065,@7668,@7669,@7670,@7671,@7672,@7673,@7664,@4062| 16066:D6,284|fb102d3ba003262e28ffa603033b021b2e3ba203033c02042e28ffa603041a0701103b502e2d692968016402eb2c2c0c29929103b6293529352a3628302ba503062a2839a502013b031a313cab332810ac292daa292830ab292d2f220dfacd220e7b060e28612ba503062a2866a502013b031d313cab332810ac292daa292861ab2940aa292e30220efaa1220f7b060f28412ba503062a2846a502013b031d313cab332810ac292daa292841ab2940aa292e30220efa75220f7b060f31fa71a803033c02043228ffa603033b021a323ba203033c02043228ffa60303fa4a103b503231692968016466022c2efa42a803033c02042f28ffa603033b021a2f3ba203033c02042f28ffa60303fa1b103b502f2e6929680164641f040000|@7667,1,@1136,@4076,@7666,-1| 16067:D10,312|fb0b2b3b3bef293ea8035d2c3b3bef3d2aa703041a2d01103b502d3b3bef293da003032e02243d2841bd293b3f3bf02a3b3b3df0502a3f323fdce4502a2805322805dce4502a95502a6529fafba003033c0212293b3bef3da00309293ffae93f3ded02013b6602013b03033c02702c3b3bef293fa803652d3b3bef3e2aa70303fac2103b502e3b3bef293ea003032f022d3d2841bd293b3f3bf02a3b3b3ef0502a3f333fdce4502a2805332805dce4502a2806332806dce4502a95502a6529fa8ba003033c0212293b3bef3ea00309293ffa793f3eed02013b6602013b6403033d02013c2d3b3beffa662f2b6a3b2a2dfa620c299291031b293529352a362a9203043b500203fa50102a2a69296801270402013b299291030a293529352968016502013b29929103043b500203fa2d102935270742000000|@7680,1,@1137,@6525,@7681,@7682,@16068,@7684,@7690,@7679| 16068:D3,32|fb062b2a37a003033b02122b3fb12a362adc2d3cb12a2a692968012704420000|@7683,1,@1138| 16069:D7,876|fb180b03002f3da0030d292810452e36462e37475002302f3ca0030c2940452e38462e394750021f2f3ea0030e292808452e3a462e23064750020c293d452e2307462e23084750293532320c299291f81603293529352a3628092ba503062a280da502013b03033c02042a2820a0030c29220d220d220c220e7b050e2a282ba003eb2d2810a0037b29220d0c299291036e293529352a362a2830a091030d3b3b2f22131ad20222137b06122922110c2992910340293529352a362a2878a003033c02042a2858a0031b3b3b2b22171aa7020c293ba003093b2f692968016402012964020d3b3b3322171a8c0222177b06166602073b2b6929680164646602013b6402673b3b2b2922100c299291034c293529352a362a2830a8030b2830220caa2b2aa26402013b03222e220c1a4d020c2b2830ab2a2a1a47020c3c2a2e250a250a250a26071e3f3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466f7f8012a282da003033c02042a287ea0f801012d2810a0037529220d0c2992910368293529352a362a2830a091030b3b3b2f22131ad7010c024d2922110c299291033c293529352a362a2878a003033c02042a2858a0031b3b3b2b22171aae010c293ba003093b2f69296801640201296402093b3b3322171a93010c6602073b2b6929680164646602013b6402673b3b2b2922100c299291034c293529352a362a2830a8030b2830220caa2b2aa26402013b03222e220c1a58010c2b2830ab2a2a1a52010c3c2a2e250a250a250a26071e3f3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64662992910316293529352a363b2b1a15010c292b69296801270502013b6402e72d2810a0037b220d220d0c299291036d293529352a362a2830a091030d3b3b22132213fad522137b06122922110c299291033f293529352a362a2878a003033c02042a2858a0031a3b3b2b2217faab0c293ba003093b2f692968016402012964020d3b3b22172217fa9022177b06166602073b2b6929680164646602013b6402663b3b220f2922100c299291034a293529352a362a2830a8030b2830220caa2b2aa26402013b03202e220cfa510c2b2830ab2a2afa4c0c3c2a2e250a250a250a26071e3d3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b270644|@7686,1,@1139,@7687,@7685,@4565,@4572| 16070:D6,180|fb0f2c2c0c299291039a293529352a362a2830a803062a2839a402013b031b312810fa9c0c2b2830ab2a2afa970c3c2a2e220cfa93220d7b060d2a2841a803062a2846a402013b031e312810fa720c2b2841ab2940aa2b2afa6a0c3c2a2f220dfa66220e7b060e2a2861a803062a2866a402013b031e312810fa450c2b2861ab2940aa2b2afa3d0c3c2a2f220dfa39220e7b060e3203093131692968016402013b66020d2f03092e2e692968016402013b641f04|@7688,1,@1140,@7685,@4565,@7687| 16071:D4,8|fb032c2cfa0e8b43|@7689,1,@1141,@18925| 16072:D11,144|fb0c2b3b3bef293da603192c3b3bef3d2aa80303fa86103b502d2806dc292878a06502013b03033d02013c2d3b3beffa6f2f2b6a3b2a2dfa6b0c299291032d293529352a362afa60fa620c3ba60303fa5f103b502a9203032a02072afa560c299a64292b69296801270502013b299291030a293529352968016502013b29929103043b500203fa301029352707420000|@7698,1,@1142,@4023,@16073,@7699,@7703,@7704,@7706,@7709,@7697| 16073:D3,32|fb062b2a37a003033b02122b3fb12a362adc2d3cb12a2a692968012704420000|@7683,1,@1143| 16074:D8,1004|fb1b2b3da00304281002122b3ca0030340020a2b3ea00304280802013d2e2e0c299291f8c10329352935292830a0f810032a3629320c299291f8f202293529352a362a2877a0f8bf01343da0f8320129220d0c299291f82401293529352a362a2878a003033c02042a2858a00387220f3da0030b3b3b2b22131a7c030c02743b3b2b2922140c2992910359293529352a362a2830a8031822139203043b5002041a59031028302214aa2b2aa26402013b03222e22141a48030c2b2830ab2a2a1a42030c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64660285220f3da0030b3b3b2f22131af5020c02743b3b2f2922140c2992910359293529352a362a2830a8031822139203043b5002041ad2021028302214aa2b2aa26402013b03222e22141ac1020c2b2830ab2a2a1abb020c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b640284343da0030b3b3b2b220f1a6a020c02743b3b2b2922100c2992910359293529352a362a2830a80318220f9203043b5002041a47021028302210aa2b2aa26402013b03222e22101a36020c2b2830ab2a2a1a30020c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466f723012a2878a003033c02042a2858a00305343da002013b0386343da0030b3b3b2b220f1acc010c02743b3b2b2922100c2992910359293529352a362a2830a80318220f9203043b5002041aa9011028302210aa2b2aa26402013b03222e22101a98010c2b2830ab2a2a1a92010c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64660286343da0030c3b3b220f220f1a45010c02753b3b220f2922100c2992910359293529352a362a2830a80318220f9203043b5002041a21011028302210aa2b2aa26402013b03222e22101a10010c2b2830ab2a2a1a0a010c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b293ba003093b2c69296801640201296602a32a3628092ba503062a280da502013b03033c02042a2820a00309293232faa8337b050a303da0030a3b3b3434fa89347b060a3b3b3429220c0c2992910355293529352a362a2830a80316349203043b500203fa67102830220caa2b2aa26402013b03202e220cfa570c2b2830ab2a2afa520c3c2a2e250a250a250a26071e483b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466646502013b65440000|@7701,1,@1144,@7700,@4560,@7685,@4565,@7699| 16075:D6,180|fb0f2c2c0c299291039a293529352a362a2830a803062a2839a402013b031b312810fa9c0c2b2830ab2a2afa970c3c2a2e220cfa93220d7b060d2a2841a803062a2846a402013b031e312810fa720c2b2841ab2940aa2b2afa6a0c3c2a2f220dfa66220e7b060e2a2861a803062a2866a402013b031e312810fa450c2b2861ab2940aa2b2afa3d0c3c2a2f220dfa39220e7b060e3203093131692968016402013b66020d2f03092e2e692968016402013b641f04|@7702,1,@1145,@7685,@4565,@7700| 16076:D4,8|fb032c2cfa0e8543|@7705,1,@1146,@18926| 16077:D4,8|fb022bfa0f8a4200|@7710,1,@1147,@18927| 16078:D4,28|fb082d2d2d6a2a36352f2ffa1b0c2a2a692c363b3b2ce36644000000|@7737,1,@1148,@7736| 16079:D4,156|fb0f2d929103922d352e362a352b362a31a003033c02172a3b3bef313b3befa0030b2a3f323f343b3befed02013b034f2f382a382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b646602013b03092b3131fa21327b05092b3131fa180c2d2a6964270402013b4400|@7738,1,@1149,@7736| 16080:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@1150,@4839,@7760| 16081:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1151,@7761,@4688| 16082:D5,48|fb0a2b929103272b352c362a352b362935280ca003043b500203fa201029363b2c2b6a2dfa1a0c2a2a69270702013b42|@4648,1,@1152,@7767,@7766| 16083:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1153,@7776,@4688| 16084:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1154,@7778,@4688| 16085:D4,8|fb02fa1042000000|@7782,1,@1155,@7781| 16086:D4,8|fb02fa1042000000|@7783,1,@1156,@4667| 16087:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1157,@7784,@4688| 16088:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1158,@7786,@4688| 16089:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1159,@7790,@4688| 16090:D4,8|fb02fa1042000000|@5413,1,@1160,@4667| 16091:D4,8|fb02fa1042000000|@5363,1,@1161,@7822| 16092:D3,8|fb032c2ca0430000|@4771,1,@1162| 16093:D3,4|fb023d42|@5369,1,@1163| 16094:D3,4|fb023c42|@5370,1,@1164| 16095:D4,8|fb02fa1042000000|@5363,1,@1165,@7848| 16096:D3,8|fb032c2ca0430000|@4771,1,@1166| 16097:D3,4|fb023d42|@5369,1,@1167| 16098:D3,4|fb023c42|@5370,1,@1168| 16099:D3,8|fb032c2ca0430000|@4771,1,@1169| 16100:D4,8|fb02fa1010000000|@4894,1,@1170,@4893| 16101:D4,8|fb02fa1010000000|@4894,1,@1171,@4893| 16102:D4,8|fb02fa1010000000|@4894,1,@1172,@4893| 16103:D4,8|fb02fa1010000000|@4894,1,@1173,@4893| 16104:D4,8|fb02fa1010000000|@4894,1,@1174,@4893| 16105:D4,8|fb02fa1010000000|@4894,1,@1175,@4893| 16106:D4,8|fb02fa1010000000|@4894,1,@1176,@4893| 16107:D4,8|fb02fa1010000000|@4894,1,@1177,@4893| 16108:D4,8|fb02fa1042000000|@7904,1,@1178,@4667| 16109:D18,412|fb292b3b691aa0012a69293c1a9d010c291a9c010c3b2a3c6a3e2c2b6a3d2a1a92016a323b6928052a1a8c011a8d011a8e0168053d1a70012b6a220c3b691a67012a69293c1a64010c291a63010c3b2a3c6a3e2c2b6a293b6928052a1a65011a66011a5b0168053d1a49012b6a22163b3bef293ba003051a5201024828052ab1292808b1293cb2293fb4291a4201a503043b5002041a3c0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a1e013f2d3f2805ec50221e3f2d280934ec502b95502b2707291a10010c29221069221a3b3bef293ba003051a0201024428062ab1292808b1293cb2293fb429fae3a503043b500203fade10292841bd2a3cb22a2a3b3bf02b3b3b32f050fad13f2d3f2806ec5022223f2d4034ec502b95502b270729fab50c29221169221e3b3bef293ba00304faac024f3e2ab1292808b1293cb2293fb429fa8aa503043b500203fa8510292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2861e4502b2805286ce4502b2806286ce45022263f2d280734ec502b95502b270729fa500c29220c69293b692e2a69332a69272143000000|@7935,1,@1179,@7356,@7275,@7277,@7315,@5278,@5275,@4653,@5114,@5112,@7936,16777215,@4054,@7937,@7939,@7934| 16110:D12,184|fb112b3b3bef293ca403033c02332c3b3bef3b2aa80303faab103b502d3fdcfaa72a3bdb29faa5a003033c0212293b3bef3ca00309293ffa933f3ced02013b916603032c026d2c3b3bef293cab2e3b3bef2a3ba803043b500203fa74103c2bb1292ba70303fa6d103b502b3ba00304fa6702392b2808b1293cb2293fb429fa5ca503043b500203fa5710292841bd2a3cb22a2a3b3bf02b3b3b34f050220d28052d3f220cec502b95502b27062704fa342d7d046442000000|@7938,1,@1180,@4023,@4064,@4141,@4004,@6525,@4062,16777215,@4054,@7937| 16111:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1181,@7940| 16112:D5,28|fb0a2b929103132b352c362a352afa180c292b2efa16327b05073b42|@7943,1,@1182,@7941,@7942| 16113:D5,156|fb0e2d929103912d352e362a352f3b3bef2a3b3bef2a2aa00353312ca003033c0217313b3bef2c3b3befa0030b313f2d3f2f3b3befed02013b03033b022d313b3bef2c3b3bef2a2aa303032a020129343f303f2dee293ba003052c2ca30203293ba20304fa4202013c27040213313b3bef2c3b3bef2a2aa20304fa2c02013c65293ba40305313469020a2d3333fa1d0c2f2a6964270602032b3b6944|@7944,1,@1183,-1,@7942| 16114:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1184,@7945| 16115:D5,36|fb0a2b9291031a2b352c362a352b362afa1e0c292b692dfa1b0c2a2a69270702013b4200|@4648,1,@1185,@7937,@7955| 16116:D4,8|fb02fa1010000000|@4894,1,@1186,@4893| 16117:D13,180|fb152dfabb0c0b0200303ba0030cfab42a2a35452a36465102853b31299291031229362b3caa292b25042504511e113b6502012a653bfa900c2a3ba20303fa8c103b503b2bfa890cfa8afa8c3b2d2d3b3b3c6808280c2a693b220d299291031229362b3caa292b25042504511e113b6502012a653bfa510c2a3ba20303fa4d103b503b2bfa560cfa57fa4d3b2d2d3b3b3c6808280c2a69332f452a4650260a29352a362e33fa3d0c322b452c462a472707440000|@8020,1,@1187,@8021,@8054,@4838,@4848,@8055,@5206,@8056,@8057,@4683,@8019| 16118:D5,64|fb0e2b929103362b352c362a352b360b02002c353ca00308293b452e4650020b2cfa290c2a2a452f46505029352a362a2a6931fa1b0c2a2a69270b02013b4200|@4648,1,@1188,@8022,@8021| 16119:D8,156|fb122b352805a003442b362c382938293629353da003312b38293629353da003043b500203fa811029362a372a31fa7c0cfa7d2a690b02002e2d2bfa770c5029352709fa73307d073d2704024e2b353da003033c02452b353ea0033e2b3629929103082936293ba06402013b030a2935293629fa432f7d063b2a299291031229362b3caa292b25042504511e113b6502012a65296801646402013d42|@8024,1,@1189,@8025,@5868,@16120,@8023,@8022| 16120:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@1190| 16121:D6,28|fb073b06fa222a2f6a2f2afa1ffa210c2b352f2b452a462704440000|@8031,1,@1191,@16122,@8040,@8030| 16122:D10,124|fb0d2b352806a0036e2b362c37293ebb29920305293ba2020529942811a00308fa662afa670c020129299203043b500203fa5d10291b0f27a09103032f02342f2e362f37fa4e0c2d3529353ea003202a352806a003043b500203fa3c102a362a31fa39fa3b0c2a3b3b2ce3505102023b502a65270402012b42000000|@8033,1,@1192,@4564,@4565,@4560,@8034,@8035,@8032,@8030| 16123:D5,160|fb192d352806a003043b500203fa9d102d362e372a2a692f3529299291031e29352a362a3629352932a003052c680102082b250526041e1c3b270402013b64293ba003542b310c293ba003472d3fb7293ba0912f3cb7293ba091fa54061b0f273eba2d03033f02013b2a2ab8292eb828062e2b6a220f352f3b3b2ce3502a220f692215352a2a6922173b3b2ce3502d270e020229356402052935293564270544|@8036,1,@1193,@8035,@5064| 16124:D3,4|fb022b42|@8039,1,@1194| 16125:D3,4|fb022b42|@8041,1,@1195| 16126:D10,164|fb0d2dfaab0c29353fa00303faa6103b5029350a0700150019001d0045000e005e000e00292e2d7d060274fa8b0270fa8b026c29362a372a3030fa840c2a3131fa7e0c2a2da00305292ca002013b03032d02043d2b2b6a2704024429362a372a3030fa600c292ca003032c02043e2a2c6a66022b29362a382b392b3131fa490c2b310c29352b2fa003052a2ea002013b03032f020828052c2b2d30680527066444000000|@8043,1,@1196,@8044,@8048,@4517,@5064,@8030,@8051,@8042| 16127:D5,324|fb1b2b352806a0f837012b362c372a35291a3c010c2a2aa003043b5002062c3b3b2ce35029353fa003042ff70f0129353ea003ff29362a373b2b299291031229362b3caa292b25042504511e113b6502012a650b02002d29353ba0030d29362a372c2b452a465051020b29362935292503511e1b515029353b2a299291031229362b3caa292b25042504511e113b6502012a652e2aa0032f0b02003229353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936030334020222116602680b02003229353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293529220c2210fa610c3e2a220d6a22113b3b2ce3500b0200220f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603032c0202221727092708020a29353ca003032f020129270402012b4200|@8046,1,@1197,@8044,@8045| 16128:D9,392|fb1a2d9291f873012d352e362e9291f808012e352f362a352d3b3bef2a3b3bef2a2aa003542f2ca003033c02172f3b3bef2c3b3befa0030b2f3f2d3f2f3b3befed02013b03033b022e2f3b3bef2c3b3bef2a2aa303032a020129323f303f2dee293ba003052c2ca30203293ba203051a220102013c270402142f3b3bef2c3b3bef2a2aa203051a0b0102013c65293ba0030e2f2e220c1aff000c2f2a69640276293ba20363333ebb29920305293ba2020529942811a00308fae22afae30c020129299203043b500203fad910220c3fb7293ba091220e3cb7293ba091faca062e3eba2d03033f02013b2a2ab8292eb828062e2b6a22132a69221322192219fa980c2a2a69270e020e303069292f220dfa870c302a69652706025e2d3ebb29920305293ba2020529942811a00308fa6d2afa6e0c020129299203043b500203fa64102f3fb7293ba091313cb7293ba091fa57062e3eba2d03033f02013b2a2ab8292eb828062e2b6a220d2a69220d3b2213fa260c2a2a69270e6502092c3ba003033b02012c44000000|@8047,1,@1198,-1,@8045,@4564,@4565,@4560,@5064| 16129:D5,56|fb0a2d9291032f2d352e362a352b36293131fa300c2c3232fa2e0c2a2ca00305292ea002013b03033302072c2b69292b6964270602013b44|@8052,1,@1199,@8030,@8051| 16130:D5,48|fb082d929103272d352e362a2f2ffa2c0c2a3030fa2a0c2a2da00305292ca002013b03033102032a2a69270402013b44|@8053,1,@1200,@8030,@8042| 16131:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1201,@8055,@4688| 16132:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1202,@8057,@4688| 16133:D17,412|fb0f2c929103142c352d362a35293ba003052a3ba002013b6602013b03682c3529361a83011a84011a85010c2a1a8401a003033c02132a3b3bef3ba0030a2a3f1a71013f3bed02013b03051a6a0102012a3b1a67010c3b1a66010c2c2c3b2d2d3b3b3c6808280c2a691a3c011a55011a56010c293b692b2a6928142a3b6a293b69270cf714012c929103142c352d362a35293da003052a3ba002013b6602013b03132c3529361a23012e2b1a22010c293b696602e52c929103142c352d362a35293ca003052a3ba002013b6602013b03112c352936faf52e2bfaf50c293b696602b82c929103142c352d362a3529929103052a3ba002013b6602013b03112c352936fac82e2bfac80c293b6966028b2c3b2a929103202a352b362a35293ba003032c02032c3caa2b2a2506250626041e1e3b270402012965293ca003093b2d2ffa922f7b0505293ba003273b2e299291031229362b3caa292b25042504511e113b6502012a65293cb23b302bfa6a317b05073b2e299291031229362b3caa292b25042504511e113b6502012a65293cb23b2f312cfa46327b06074300|@8059,1,@1203,@5719,@4684,@4806,@4062,@4866,@4838,@8060,@4689,@4845,@4705,@5396,@8061,@8064,@8058| 16134:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1204,@8060,@4688| 16135:D15,232|fb152b929103de2b352c362a3529929103362935293ba003152c36fad7322bfad70c33332ffad50c2a2a696602172c3628082b6929332cfabf0c343430fabd0c2a2a69270464029a293ca003152b36faaf312bfaa30c32322efaa10c2a2a69660280293da003152b36fa89312bfa890c32322efa870c2a2a696602662b362805326929fa7ffa810c2bfa81a003033c02122b3b3bef3ba003092b3ffa6f3f3bed02013b0304fa6902012b3bfa670c3bfa670c2c2c3b2d2d3b3b3c6808280c2a692ffa59fa5b0c293b692b2a6928142a3b6a22133cb12922142210fa200c2b2a69270e6602013b4400|@8063,1,@1205,@4517,@5396,@8061,@7553,@4684,@4806,@4062,@4866,@4838,@8062,@4689,@4845| 16136:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1206,@8062,@4688| 16137:D12,120|fb142c9291036c2c352d362a363d31306a29fa70fa720c2bfa72a003033c02122b3b3bef3ba003092b3ffa603f3bed02013b0304fa5a02012b3bfa580c3bfa580c2c2c3b2d2d3b3b3c6808280c2a692ffa4afa4c0c293b692b2a6928142a3b6a22123cb129220e2213fa390c2b2a69271002013b44000000|@8066,1,@1207,@4684,@4806,@4062,@4866,@4838,@8065,@4689,@4845,@8064| 16138:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1208,@8065,@4688| 16139:D13,224|fb172c929103d62c352d362a35299291031f29352c362a3fa403082807342c336b0205280634326a29342cfabf0c66029b293ca003102b36280633316a29332cfaaa0c650286293da003102b36280633316a29332cfa950c6502712b363c3b34da29942928ffb7292840b7292840a003042c9502013b3c2e220d6a29fa72fa740c30fa74a003033c0212303b3bef3ba00309303ffa623f3bed02013b0304fa5c0201303bfa5a0c3bfa5a0c2c2c3b2d2d3b3b3c6808280c2a692ffa4cfa4e0c293b692b2a6928142a3b6a2710323cb129332e33fa3b0c2b2a69270602013b1f04|@8068,1,@1209,@5396,@4684,@4806,@4062,@4866,@4838,@8067,@4689,@4845,@8058| 16140:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1210,@8067,@4688| 16141:D5,68|fb112e929103052d929102013b03302e352f362f3530362c352d363d2a346a3c2e693b34692d2a2c2efa253b3b68073130220f220ffa1d0c2a2a69270b02013b1f040000|@5900,1,@1211,@4653,@8069| 16142:D4,8|fb03fa102c694200|@8076,1,@1212,@16143| 16143:D7,48|fb112b352c362d372e38fa302e3669fa2f2a692dfa2e2bfa2f0c28062d3b6a3c2a69313d2b2e333b3b68072709420000|@8078,1,@1213,@16144,@16149,@8077,@8030| 16144:D4,44|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa130c296801646442|@8080,1,@1214,@8079| 16145:D13,264|fb141a0f012f692e2e2b1a0b010c293ba003ee303629353ca00366293732373bfafa0c3bfafa0cfafbfafd3b2d2d3c3b3c6808280c2a6929faf26928142a3b6a3c2a6922113629353da00303fae2103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a220d3b6b2d2a220d6a270d027d29353ba00366293632373bfa8e0c3bfa8e0cfa8ffa913b2d2d3c3b3c6808280c2a6929fa8e6928142a3b6a3c2a6922113629353da00303fa76103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a220d3b6b2d2a220d6a270d021129362a3733373d2c2c6afa3f2a2c6a27046402022935651f040000|@8082,1,@1215,@16146,@8088,@7760,@8090,@4683,@8091,@8081,@8092,@8081,@4801| 16146:D4,140|fb0d2b352c362a352805a0037a2a362b37293629353ca0030a2e363629353ca06402013b03102a36293630363629362b2aa0270402272a3629353ba0030a2f363629353ba06402013b03102b36293831363629382b2aa0270402013b6403242b3629353ca003043b500203fa2b102c3728062f3b6a3c2a69292d2d6a296801270502013b6602013b65420000|@8084,1,@1216,@8083| 16147:D4,144|fb0b2d929103052c929102013b037d2d352e362e352f362c2b69300c293ba003612d350a08001b0024002d0036003f001000480051002c2b32fa61337b050a023f2c2b32fa56337b050a2c2b32fa4d337b050a2c2b32fa44337b050a2c2b32fa3b337b050a2c3232fa32337b050a2c2b32fa29337b050a2c2b32fa20337b050a0206293529680164270502013b440000|@8089,1,@1217,@8088| 16148:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1218,@8090,@4688| 16149:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@8101,1,@1219,@8102,@8104,@8100| 16150:D3,4|fb022b42|@8103,1,@1220| 16151:D3,4|fb022b42|@8103,1,@1221| 16152:D8,280|fb1a3038293629353da0035329362a372c352d371a0d01220d220c220c6b2c1a06012b1a06010c2d2aa00312220f342a35452a36462a37472a384864021d220f35220d0c3d302c6a2e2a2f6a221237220e2d4533462a472b482704270602b42a320c299291039c293534350b02002c2afabe0c502936220c299291035129352a362a382933faad0c03312b350b02002c2afa9d0c5029362933a003033c0218293b3bef333b3befa0030c293f343f220d3b3befed02013b270502013b03052b680102082a250426031e503b6602013b64293ba00319221135220f0c221236221337220f2c452b462a4733486602112935220d2a35452a36462a37472a3848642707020f332f2a35452a36462a37472a38486464651f060000|@8106,1,@1222,@16153,@8110,@8030,@8111,@8105| 16153:D5,36|fb0e0b0400302f36fa26313732382efa230c5029352a362b372c382c2c2c2c6b27094200|@8108,1,@1223,@8107,@8100| 16154:D3,4|fb022b42|@8109,1,@1224| 16155:D3,4|fb022b42|@8108,1,@1225| 16156:D6,344|fb242c3b3bef0b02002c293ba00311293b336a3b2f346a2c2b452a4650510234293cb2293fb1332adc29282ea091030d2c3cb229250526041e2e5002153b2d220d6a312eb22e2a220f6a302c452a4650260326035029352a362a36293ba00309321a000145344602e92b352c362d370b03003c2fa6030a2930453b462e4750020c2e3cb22a31452a462f47505029352a362b37293b3bef2c3ba003052b2aa002013b03032a02432b3ba00304fab6023a2b2808b1293cb2293fb429faaba503043b500203faa610292841bd2a3cb22a2a3b3bf02b3b3b34f0503f33b1312a2e3f220dec502c95502c2707220d35220e36220f37293b3bef2c3ba003052b2aa002013b03032a02432b3ba00304fa56023a2b2808b1293cb2293fb429fa4ba503043b500203fa4610292841bd2a3cb22a2a3b3bf02b3b3b34f0503f33b1312a2e3f220dec502c95502c2707221a2f452a462711270743000000|@8112,1,@1226,@4062,16777215,@4054| 16157:D4,112|fb0a2c3629353da003092c3629353da06402013b030f2d3629372e3629372b2afa5a327e092d3629353ca003092d3629353ca06402013b030f2e3629362f3629362b2aa0270402252e3629353ba003092e3629353ba06402013b030f2f362938303629382b2aa0270402013b64646443|@8114,1,@1227,@8113| 16158:D5,396|fb1a2c352805a003072b352805a002013b03512c362d382d362e382b382a382a2a1a74010c03372e2d2a9291032a2a352b362b9291031d2b352c362c2b1a5c010c030d2b2a2506250626041e223b02013b6502013b650203293ba06502013b2706f726012c353da003062b353da002013b031d2c362d372d362e372c2b1a1c010c03082b2a1a1401317e083b270402fa2c353ea003062b353ea002013b03c32c362d372d362e370b02002e29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936038f0b02002f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936036432312a929103572a352b362b9291034a2b352c362c352b352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b031c2e362d362a2afa660c030d2f2e250a250a26081e4a3b02013b6502013b270402013b650203293ba06502013b6602013b270702282c352806a003072b352806a002013b030a2c362c362a2aa065020d2c353ca003062b353ca002013b4300|@8115,1,@1228,@8105,@8113| 16159:D3,4|fb022b42|@8101,1,@1229| 16160:D4,8|fb03fa102c694200|@8118,1,@1230,@16161| 16161:D7,48|fb112b352c362d372e38fa302e3669fa2f2a692dfa2e2bfa2f0c28062d3b6a3c2a69313b2b2e333b3b68072709420000|@8120,1,@1231,@16162,@16163,@8119,@8030| 16162:D4,44|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa130c296801646442|@8080,1,@1232,@8079| 16163:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@8101,1,@1233,@8122,@8121,@8100| 16164:D3,4|fb022b42|@8103,1,@1234| 16165:D3,4|fb022b42|@8103,1,@1235| 16166:D3,4|fb022b42|@8101,1,@1236| 16167:D4,8|fb03fa102c694200|@8125,1,@1237,@16168| 16168:D7,56|fb142b352c362d372e382f39303afa34303669fa332a692ffa322bfa330c28062d3b6a3c2a69313169342a2c2f343b3b6807270c42000000|@8127,1,@1238,@16169,@16170,@8126,@8030| 16169:D4,44|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa130c296801646442|@8080,1,@1239,@8079| 16170:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@8101,1,@1240,@8129,@8128,@8100| 16171:D3,4|fb022b42|@8103,1,@1241| 16172:D3,4|fb022b42|@8103,1,@1242| 16173:D3,4|fb022b42|@8101,1,@1243| 16174:D4,8|fb03fa102c694200|@8132,1,@1244,@16175| 16175:D8,44|fb0f2b352c36fa302c3669fa2f2a692cfa2e2bfa2f0c28062d3b6a3c2a69fa283d2b2e3b3b3b680727074200|@8134,1,@1245,@16176,@16177,@8133,@8030,@4062| 16176:D4,44|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa130c296801646442|@8080,1,@1246,@8079| 16177:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@8101,1,@1247,@8136,@8135,@8100| 16178:D3,4|fb022b42|@8103,1,@1248| 16179:D3,4|fb022b42|@8103,1,@1249| 16180:D3,4|fb022b42|@8101,1,@1250| 16181:D4,8|fb03fa102c694200|@8139,1,@1251,@16182| 16182:D6,112|fb192b352c362d372e382b352c362d382e392f3afa66333669fa652c2b6a2f353ca0032e2f3630382a352a352993293ba00304fa4f02132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012f29303b312e3168062806333b6a3c2a69220e2a2d220f6b270f42000000|@8140,1,@1252,@16184,@16183,@4725| 16183:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@1254,@8143| 16184:D7,32|fb093b3bfa262e3b6805fa242afa256a292c36352d36362e3637fa1c317b0605|@8142,1,@1253,@4685,@4801,@8141,@8079| 16185:D4,12|fb052d2d0c2cfa102d7e0500|@8146,1,@1255,@8145| 16186:D8,68|fb0d2c3629353da0032529362a372f353037fa3cfa3e326afa3e2a692dfa3d2bfa3e0c3d302b6a2e2a2f6a2708021029353ca003032d02072938292e2e7d066443000000|@8148,1,@1256,@16187,@8145,@16188,@8147,@8030| 16187:D3,28|fb052b3629353ca003033b020a2c2b372c360c296801646442000000|@8149,1,@1257| 16188:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@8151,1,@1258,@8152,@8150,@8100| 16189:D3,4|fb022b42|@8153,1,@1259| 16190:D3,4|fb022b42|@8153,1,@1260| 16191:D3,4|fb022b42|@8151,1,@1261| 16192:D4,8|fb03fa102c694200|@8156,1,@1262,@16193| 16193:D4,36|fb0b2b352938292c36352d36362e3637fa1e0c2b352c362d372b2b2b2f6b293b69270742|@8157,1,@1263,@8079| 16194:D4,32|fb072b9291030f2b35fa212a692b363b3b2ce365020629363b3b3be342000000|@8163,1,@1264,@16195| 16195:D4,12|fb052b2a36fa112d7e030000|@8165,1,@1265,@8164| 16196:D5,176|fb17d9293a2a23062b23072c230878810633330cf102796d2e3b281430e3502e3b28182fe3502e3b281c2ee3502e3b28202de3502938299291031829352a362b372c382d392d2b2e2c2f6805296801270602013b29929103043b50020e2b352c362d372b2b2bfa546b6610293529352a362b372c382d39313532363337302f2e323168052c2c2c2c6b29fa340c270d64502d3b28142fe3502d3b28182ee3502d3b281c2de3502d3b28202ce327054300|@8166,1,@1266,@4436,@4428| 16197:D4,32|fb072b9291030f2b35fa212a692b363b3b2ce365020629363b3b3be342000000|@8169,1,@1267,@16198| 16198:D4,12|fb052b2a36fa112d7e030000|@8165,1,@1268,@8164| 16199:D4,32|fb072b9291030f2b35fa212a692b363b3b2ce365020629363b3b3be342000000|@8173,1,@1269,@16200| 16200:D4,12|fb042b2a360cfa102a696442|@8174,1,@1270,@16201| 16201:D4,12|fb052b2a36fa112d7e030000|@8165,1,@1271,@8164| 16202:D4,32|fb072b9291030f2b35fa212a692b363b3b2ce365020629363b3b3be342000000|@8181,1,@1272,@16203| 16203:D4,12|fb052b2a36fa112d7e030000|@8165,1,@1273,@8164| 16204:D3,4|fb023b43|@8194,1,@1274| 16205:D40,412|fb222b363ca203061a9d01f78b012b3529353ba0f81a012c3529362e363cab293ba203051a850102e62a362a3cab2a2a691a7c01352a2a0c642d3ca203051a730102b32e382e3cab2a2a691a6201352a2a0c64313da203051a5d0102803235323cab2a2a691a5401352a2a0c64220c3ea203051a4a01024c220d37220d3cab2a2a691a2b01352a2a0c6422113922113cab2a2a691a1901352a2a0c64291a2401691a24012a691a23012a691a22012a691a21012a69322a691a1d012a691a1c012a69270f1a19012a691a18012a692c2a691a14012a691a13012a6927091a10012a691a0f012a692c2a691a0b012a691a0a012a6927091a07012a691a06012a692c2a691a02012a691a01012a6927091afe002a693b3c3b3b2d6805293b69faf42a69faf42a693b3c3b3b2d6805270902672c363ca20304fae3025d2c3529362a372f363cab293ba20304fad4022b293cab2c2a69fa66352a2a0c642c3cab2e2a69fa59352a2a0c6429fab969faba2a69faba2a692f2a692709fab52a693b3c3b3b2d6805293b69faab2a69faab2a693b3c3b3b2d6805270a64420000|@8197,1,@1275,@5081,@8198,@27,@8198,@8198,@35,@8198,@8201,@5091,@8203,@5091,@5092,@5091,@8205,@5091,@5092,@5091,@8207,@5091,@5092,@5091,@8209,@5091,@5092,@5091,@8211,@8213,@5091,@8214,@5081,@5086,@5089,@5091,@5092,@5093,@5091,@8196| 16206:D3,8|fb022b353ba04200|@8217,1,@1276| 16207:D3,8|fb033b2c69420000|@8217,1,@1277| 16208:D3,8|fb022b3642000000|@8217,1,@1278| 16209:D3,8|fb022b353ca04200|@8220,1,@1279| 16210:D3,12|fb062b352c363c2b2b6a6542|@8220,1,@1280| 16211:D3,12|fb052b362c372a2a69654200|@8220,1,@1281| 16212:D3,4|fb023b43|@8194,1,@1282| 16213:D50,652|fb192b363ca203061a8d02f77c022b3529353ba003d12c3529362a372b382c3931363cab293ba203051a70020294293cab2e2a691a6902352a2a0c642c3ca203051a6002026d2c3cab302a691a5902352a2a0c642f3da203051a500202462f3cab322a691a4902351a49022a0c642a2a0c64323cab342a691a3502351a3902221436693b2a3e3c6b642a0c642a2a0c64291a2802691a28022a691a27022a692f2a6927091a21022a691a20022a692c2a6927061a1a022a691a19022a692c2a6927061a13022a693b3c3b3b2d6805293b691a08022a691a07022a693b3c3b3b2d6805270cf7a2012c363ca203061af401f796012c3529353ca003692d3529362a3730363cab293ba203051adb010230293cab2c2a691a8801352a2a0c642c3cab2e2a691a7a01352a2a0c64291abd01691abd012a691abc012a692f2a6927091ab6012a693b3c3b3b2d6805293b691aab012a691aaa012a693b3c3b3b2d6805270af724012d363ca203061a9701f718012d3529353da003061a8d01f709012e363ca203051a850102fe2e3529353ea0038c2f35293631363cab2a2a691a7101352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a4f01a003033c020f291a4901a003033c0205291a4301a06402013b9102013b02013b03192a1a3501691a35012a691a34012a693b3e3c3b2d68056602012a64020129293b691a21012a691a20012a693b3c3b3b2d6805270902692f363ca203051a0e01025e2f3529362a3732363cab293ba203051afe00022b293cab2c2a69facc352a2a0c642c3cab2e2a69fa4f352a2a0c6429fae369fae42a69fae42a692f2a692709fadf2a693b3c3b3b2d6805293b69fad52a69fad52a693b3c3b3b2d6805270a646464644200|@8341,1,@1283,@5081,@5086,@27,@5086,@31,@5086,@39,@8342,@16215,@5089,@5091,@5092,@5091,@5092,@5091,@5092,@5093,@5091,@8344,@5081,@5086,@5089,@5091,@5092,@5093,@5091,@8348,@5081,@8352,@5081,@35,@4133,@4216,@4184,@5267,@5268,@5093,@5091,@8356,@5081,@5086,@5089,@5091,@5092,@5093,@5091,@8340| 16214:D4,12|fb05fa14352c2a2d7d040000|@8197,1,@1284,@96| 16215:D3,12|fb052936352c2a2d7d040000|@8341,1,@1285| 16216:D3,8|fb022b353ba04200|@8347,1,@1286| 16217:D3,20|fb0a2b352c362d372e383b2d2d2d2d6805270442|@8347,1,@1287| 16218:D3,20|fb092b362c372d382e392c2c2c2c6b2704420000|@8347,1,@1288| 16219:D3,8|fb022b353ca04200|@8351,1,@1289| 16220:D3,12|fb062b352c363c2b2b6a6542|@8351,1,@1290| 16221:D3,12|fb052b362c372a2a69654200|@8351,1,@1291| 16222:D3,8|fb022b353da04200|@8355,1,@1292| 16223:D3,8|fb022b353ea04200|@8359,1,@1293| 16224:D3,8|fb033e2c69420000|@8359,1,@1294| 16225:D3,8|fb022b3642000000|@8359,1,@1295| 16226:D3,8|fb022b353fa04200|@8362,1,@1296| 16227:D3,12|fb062b352c363f2b2b6a6542|@8362,1,@1297| 16228:D3,12|fb052b362c372a2a69654200|@8362,1,@1298| 16229:D6,20|fb062b0304fa190202fa19fa1b3b3b2ce3644200|@8599,1,@1299,@4650,@4794,@29| 16230:D4,8|fb02fa1010000000|@4894,1,@1300,@4893| 16231:D4,8|fb02fa1042000000|@7782,1,@1301,@8607| 16232:D4,8|fb02fa1042000000|@7783,1,@1302,@4667| 16233:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1303,@8608,@4688| 16234:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@1304,@8610,@4688| 16235:D3,8|fb022b3642000000|@8618,1,@1305| 16236:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1306,@8619,@4688| 16237:D3,8|fb022b3742000000|@8623,1,@1307| 16238:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1308,@8624,@4688| 16239:D3,8|fb022b3542000000|@8628,1,@1309| 16240:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@1310,@8629,@4688| 16241:D5,68|fb112e929103052d929102013b03302e352f362f3530362c352d363d2a346a3c2e693b34692d2a2c2efa253b3b68073130220f220ffa1d0c2a2a69270b02013b1f040000|@5900,1,@1311,@4653,@8665| 16242:D4,12|fb062b3b2b36fa102e7b0503|@8669,1,@1312,@8668| 16243:D27,624|fb212d3b3bef293ba003051a6e02024828052ab1292808b1293cb2293fb4291a5e02a503043b5002041a580210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a3a023f2d3f2805ec50220c3f2d280934ec502b95502b2707293b3bef293ba003051a24020243293cb1292808b1293cb2293fb4291a0902a503043b5002041a030210292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a40e4502c95502c27081ae00135292b1ade010c501ad5013529392a1ad6012b1ad6010c3c3b1ad4010c29299291033929352a362a1ac901a003033c02132a3b3bef3da0030a2a3f1ab6013f3ded02013b030529929102013b030429350207292503511e383b6502031a99016429220f1a96010c0b02002c2a1a91010c5029352a361a8c012a1a8c010c2b2a1a86010c78818c78810a3e3b2f1a7d010cf102546d0b03002d351a7401a0030e2d2a2a35452a36462a37475102292d353ca003101a5e012a2a35452a36462a3747510213302e1a50016a2a1a4301451a4b01462a47505029352a362b372b2b2b1a3e016b27071064292d3c1a37010c3c2a6929063c28483cda3c2b2b6a3c28482bda3c28483cda292b6929220c692709f102926d2935faf9a003043b500202291078810a3e3b220cfae30cf1024f6d0b03002d35fadba0030e2d2a2a35452a36462a37475102262d353ca0030ffac62a2a35452a36462a3747510211220d2efab86a2afaac45fab5462a47505029352a362b372b2b2bfaa96b2707106429333cfaa30c3c2a6929063c28483cda3c2b2b6a3c28482bda3c28483cda292b692922126927096429352a362217fa7c0c2a2c221b6a2a0c512a352b3629fa702cfa2d221c7b051c|@8671,1,@1313,@8672,16777215,@4054,@4103,@18932,@4021,@4406,@3978,@4585,@8673,@4139,@8674,@8706,@8710,@8712,@8714,@5,@4416,@8715,@4403,@8716,@4466,@8718,@8670| 16244:D8,228|fb180b0300302a2f3a0c5029352a362b370b0300220d2a220d3a0c5029352a362b3729030a220e38fac63bfac76b103b503b502bfac2a003033c02122b3b3bef3ba003092b3ffab03f3bed02013b91032e32220f390c2c2210390c2a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b29916602013b030a220e38fa693bfa726b103b503b502210220f370c293703382b929103202b3529fa54a003033c0212293b3bef3ba00309293ffa423f3bed02013b6402013b03042b3602012b342a3422133622157b0514322cfa2a0c342a3422133622157b05140000|@8677,1,@1314,@8678,@8679,@4062,@8681,@8676| 16245:D5,68|fb082c9291033a2c352d36293ba003252afa3da003033c02122a3b3bef3ba003092a3ffa2b3f3bed02013b03032d02032a2e690209292efa1b0c2b2a69646502012b4300|@8682,1,@1315,@4062,@8676| 16246:D12,228|fb112d2c692a23060c299103092a36fadf3bfae06b103b503b502d299291031a29352a362a2e3a0c299103033c02082a250426031e193b6602013b6403092a39fab63bfab76b103b503b502c3ca003662e3b3bef2b383b3bef2a3ba003042c380251293ba003033002492a2ab1292808b1293cb2293fb429fa86a503043b500203fa81103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f220cec503f32b134383f2e2c220cec502c95502c27086502012e2e2c38fa4c0c2a2a6965fa490c292c370c29352930a09103092d36fa1c3bfa396b103b503b502b270444000000|@8686,1,@1316,@8678,@8687,@8688,@8689,16777215,@4054,@8690,@4052,@8685| 16247:D4,40|fb072c9291031d2c352d36293ba003052a3b69020c292efa1b0c2e2a692c2a69656502013b430000|@8691,1,@1317,@8690| 16248:D6,92|fb0f2b3b3bef0b04002e3ba60318313b3bef3b2aa80303fa4f103b50323fdc29282fa06502013b0312fa412a2a35452a36462a37472a3848510210fa332a2a35452a36462a37472a38485129352a362b372c382c2c2c2c6b270a4200|@8694,1,@1318,@4023,@8695,@8693| 16249:D3,60|fb072b3b3bef3b292ba903033b0223293fb12e2adc29282fa003033c0203293ba0030529680102092b3cb12503511e273b6564293ba0912991664200|@8697,1,@1319| 16250:D4,36|fb072b3529fa29a003033c0212293b3bef3ba00309293ffa173f3bed02013b6442000000|@8698,1,@1320,@4062| 16251:D3,4|fb022b42|@8700,1,@1321| 16252:D10,252|fb172c1a0201a003033c02122c3b3bef3ba003092c3ffaf03f3bed02013b030ffaea2c2a35452a36462a37476402cb2c2a370c29352a362b372c38313b3bef292bab333b3bef2c3ba803043b500203fabf103b502a3ba803043b500203fab1103b502c2bb1292ba70303faa8103b503b50220c3b3bef2e3ba003052c2aa002013b0304220d02482c3ba00304fa7a023f2c2808b1293cb2293fb429fa7ba503043b500203fa76103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f220cb122142a2e3f220eec502c95502c2707293b3bef3b3b2b2d221036fa440c320304349102013b0306fa1f2a690201292210220c452a46220d47270e4300|@8703,1,@1322,@4062,@8704,@4004,@6525,16777215,@4054,@8702| 16253:D9,356|fb112e2ea0039b2e30ab2d3b3bef313ba803043b5002041a5601103b502a3ba803043b5002041a4701103b50312bb1292ba703041a3d01103b503b502f3b3bef333ba003052c2aa002013b030330024b2c3ba003051a200102412c2808b1293cb2293fb4291a1401a503043b5002041a0e01103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2211b1220e2a2e3f220eec502c95502c2707293b69270502bf2e3fb12d2adc642c0c03a62e30ab2d3b3bef313ba803043b500203fab1103b502a3ba803043b500203faa3103b50312bb1292ba70303fa9a103b503b502f3b3bef333ba003052c2aa002013b03033002482c3ba00304fa7e023f2c2808b1293cb2293fb429fa73a503043b500203fa6e103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2211b1220e2a2e3f220eec502c95502c2707333caa343caa292b220d220d220dfa390c2c2a692708020e2e3caa302a303030fa27317b07081f0500|@6526,1,@1323,@4004,@6525,@4062,16777215,@4054,@8702| 16254:D3,8|fb032b282fa04200|@8705,1,@1324| 16255:D9,308|fb192c3b3bef293cab2b362f2c1a30010c299291f8160129352f3b3bef2a3ba803043b5002041a1b01103b502a2aa703041a1401103b503b50303b3bef2b2aa003033102442b3ba003051aff00023a2b2808b1293cb2293fb429faf4a503043b500203faef103b50292841bd2a3cb22a2a3b3bf02b3b3b34f050220e3f2d3f220cec502b95502b27062c3caa2f2eab293cab220c3b3bef2c3ba803043b500203faa2103b502a3ba803043b500203fa94103b502c2bb1292ba70303fa8b103b503b50220e3b3bef2e3ba003052c2aa002013b0304220f02482c3ba00304fa6d023f2c2808b1293cb2293fb429fa62a503043b500203fa5d103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f220cb122162a2e3f220eec502c95502c270729680122102a453246270c02052d3b452f466543|@8708,1,@1325,@8707,@4004,@6525,@4062,16777215,@4054| 16256:D5,160|fb092e3ba403033b02942e3ba203033c02082c3b3bef2f2aa8640303fa8e103b503b502e3fb12d2adc642e0c03033b026d2e3ba203033c02082c3b3bef2f2aa8640303fa67103b503b502e3fb12d2adc29282ea0033b2d3cab312aa003033b022d313cab293ba203033c0208303b3bef2a2aa8640303fa34103b503b50293fb1312adc65310c03033b020331680164020c303cab303030fa17317b0608651f04|@8709,1,@1326,@4023,@8707| 16257:D7,224|fb132c929103d42c3529fae0a003033c0212293b3bef3ba00309293fface3f3bed02013b03032c02af2c3b3bef293ba00304fabc0242293cb1292808b1293cb2293fb429faaea503043b500203faa910292841bd2a3cb22a2a3b3bf02b3b3b32f050343f2d3f34ec503f31b12c2a282ee4502c95502c2708293b3bef2c3b3bef2a3ba003032d024e293ba003032b02462a2ab1292808b1293cb2293fb429fa54a503043b500203fa4f10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220c3f2e2c220cec502c95502c270827046402012b43000000|@8713,1,@1327,@4062,@4139,16777215,@4054| 16258:D4,12|fb042d2d2dfa118c44000000|@3998,1,@1328,@18928| 16259:D22,124|fb25fa842c69fa842d69fa842e69fa842f69fa843069fa843169fa843269fa843369fa843469fa84220c69fa83220d69fa82220e69fa81220f69fa80221069fa7f221169fa7e221269fa7d221369fa7c2214692e2c2f2f2d2210220d2211322212221b2219221c2213221d2217221c221e6812fa5b2a22176a271342|@8719,1,@1329,@16261,@16263,@16265,@16267,@16269,@16271,@16273,@16276,@16279,@16282,@16285,@16288,@16291,@16294,@16297,@16300,@16303,@16306,@16260| 16260:D4,20|fb082b352c362d372c362d37fa12307b07030000|@8734,1,@1378,@8733| 16261:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1330,@16262,@4592| 16262:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1331,@4596,@17,@4594| 16263:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1332,@16264,@4592| 16264:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1333,@4596,@18,@4594| 16265:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1334,@16266,@4592| 16266:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1335,@4596,@19,@4594| 16267:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1336,@16268,@4592| 16268:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1337,@4596,@20,@4594| 16269:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1338,@16270,@4592| 16270:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1339,@4596,@21,@4594| 16271:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@1340,@16272,@4592| 16272:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@1341,@4596,@22,@4594| 16273:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1342,@16274,@4592| 16274:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1343,@17,@4162,@4596,@8720,@4622| 16275:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1344,@17,@8720| 16276:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1345,@16277,@4592| 16277:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1346,@18,@4162,@4596,@8721,@4622| 16278:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1347,@18,@8721| 16279:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1348,@16280,@4592| 16280:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1349,@19,@4162,@4596,@8722,@4622| 16281:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1350,@19,@8722| 16282:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1351,@16283,@4592| 16283:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1352,@21,@4162,@4596,@8723,@4622| 16284:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1353,@21,@8723| 16285:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1354,@16286,@4592| 16286:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1355,@20,@4162,@4596,@8724,@4622| 16287:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1356,@20,@8724| 16288:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@1357,@16289,@4592| 16289:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@1358,@22,@4162,@4596,@8725,@4622| 16290:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@1359,@22,@8725| 16291:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1360,@16292,@4592| 16292:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1361,@8727,@4642| 16293:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1362,@17,@4594| 16294:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1363,@16295,@4592| 16295:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1364,@8728,@4642| 16296:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1365,@18,@4594| 16297:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1366,@16298,@4592| 16298:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1367,@8729,@4642| 16299:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1368,@19,@4594| 16300:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1369,@16301,@4592| 16301:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1370,@8730,@4642| 16302:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1371,@20,@4594| 16303:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1372,@16304,@4592| 16304:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1373,@8731,@4642| 16305:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1374,@21,@4594| 16306:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@1375,@16307,@4592| 16307:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@1376,@8732,@4642| 16308:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@1377,@22,@4594| 16309:D33,684|fb233c063b061aaf022a2c336b78f994012c352991f887011aa1022f691aa0021aa1022b3b6b1a9f021a980222103b6b291a9802692b2a691a95022a69293ba003042210020722102a1a88020c2210342b1a84020c293629929103043b5002041a79021029353b2a0c29352a362b372c382d392e3a2e299291032729352a362a352b36221e35221f361a54022a2e2e6b292c1a4f020c502e250826071e26260702023b50502c299291032729352a362a352b36221e35221f361a2c022a2e2e6b292c1a1f020c502e250826071e26260702023b505029299291032729352a362a352b36221e35221f361a00022a2e2e6b292c1aef010c502e250826071e26260702023b50502a299291032729352a362a352b36221e35221f361ad4012a2e2e6b292c1abf010c502e250826071e26260702023b50502b299291032729352a362a352b36221e35221f361aa8012a2e2e6b292c1a8f010c502e250826071e26260702023b50502d299291032729352a362a352b36221e35221f361a7c012a2e2e6b292c1a5f010c502e250826071e26260702023b505026122086013b271102013b64f1f703016d29352867a0031b293733353436291a45012c1a45010c5028671a42012d1a42016b103b502936293b3bef293ba003051a34010247280b2ab1292808b1293cb2293fb4291a2401a503043b5002041a1e0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a00013f2d3f280bec50313f2d280f34ec502b95502b2707293b3bef293ba00304faec0246292808b1292808b1293cb2293fb429fad1a503043b500203facc10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fab13f2e2c2808ec502c95502c2708faa635292bfaa50c50fa9d3529392afa9f2bfa780c5022113522123629fa952cfa6a0c5033353436220c372b2b2bfa886b661064661f0500|@8736,1,@1379,@16310,@16315,@49,@4162,@51,@8750,@8797,@8799,@8800,@14721,@18625,@4592,@18627,@18629,@18631,@18633,@18635,@14730,@3978,@4629,@14734,@14719,16777215,@4054,@14735,@18932,@4021,@4406,@14736,@8735| 16310:D5,60|fb0b2938352a383629fa3d2cfa3e0c293ba0030a2c363b3b3ce3503b021a29352940a003112d3735293caa2f373b3b2ce3502c6502012a6466420000|@8738,1,@1380,@8737,@3978| 16311:D6,64|fb0c2b350b02002c3c2bfa400c5029352a362afa3b0c323b3b2de350293b3bef293ba003033b02152a3b3bef3b2aa80303fa21103b502b3fdc29680165270842|@8740,1,@1381,@8739,@4052,@4023| 16312:D12,572|fb1e2d353ba0f818022d362e372f3830392c3b3bef293ba0030c2d3b69312a452e4664f7f701292cab322aa203b22e3b3bef2d3ba803043b5002041a0a02103b50333ba803043b5002041afb01103b502d34b1292ba503043b5002041aed01103b50303b3bef2f3ba00306220c2aa002013b030331024d220c3ba003051ad0010242220c2808b1293cb2293fb4291ac301a503043b5002041abd01103b50292841bd2a3cb22a2a3b3bf02b3b3b2215f0503f220db1220f2a2e3f2217ec502c95502c2707293b6931220faa3b220c220c2c220c6805220f2c452a462707f73c012a2dab332aa003902d3ba803043b5002041a5401103b502f3b3bef2e2aa503043b5002041a5501103b50292fb2313b3bef303ba003052a2aa002013b030332024a2a3ba003051a270102402a2808b1293cb2293fb4291a1b01a503043b5002041a1501103b50292841bd2a3cb22a2a3b3bf02b3b3b33f0503f220eb122102a2e3f220cec502c95502c2707293b69220e2a453446270502a32b2eab342aab0b0200332d2bfada0c5029352a36343ba803043b500203fab1103b50220d3b3bef220c2aa503043b500203fab1103b5029220db2220f3b3bef220e3ba003052a2aa002013b0304221002472a3ba00304fa80023e2a2808b1293cb2293fb429fa75a503043b500203fa70103b50292841bd2a3cb22a2a3b3bf02b3b3b33f0503f2215b122172a2e3f220cec502c95502c2707292f6922152a452f46270c6464270502182d362e372a2a306a29fa382cfa390c2f2a35452a36466466440000|@8742,1,@1382,@4004,@4413,@4062,16777215,@4054,@4426,@8739,@8741,@3978| 16313:D4,28|fb090b02002e352f3630372cfa1a0c5029352a362a2a692705420000|@8744,1,@1383,@8743| 16314:D15,440|fb132e3529353da0030f3c30306a2d1ab201452a4664f79a0129353ba003e329362a372b382b3b3bef293ba003102c3b693c2d220c6a322b452a466502c0312aa203882c3b3bef323ba803043b5002041a750110322aa503043b5002041a6c01102d3b3bef332aa003032e0244333ba003051a5b01023a332808b1293cb2293fb4291a4f01a503043b5002041a490110292841bd2a3cb22a2a3b3bf02b3b3b2213f050343f2d3f2214ec502b95502b2706293b693c30220f6a3b322b2210336805220d2c452a4627060233312aa003102c3b693c2d220c6a322b452a4665021e312aab0b02002f220e2e2cfaef0c5029352a36322b69220e2a452b462707270402b12f350b02002c353ca003582c3629230929929103043b5002122a3529fac0fac26afac3fac52bfac66b641029352b3a2c230b2a3ba003033b02092a353b2a0c296801652a2d0c33063b2b2b2e6b22133b3b2ce3503c2b22146a332d452a4650260a02252c353da0030e3c34346a2afa5e452a46505002112c362d373c2a220d6a2c2c452a4650260329352a362a3b3bef293ba0030b2b3b69342a452c4664020f220d220d220d220dfa30220e7b060e2707641f040000|@8746,1,@1384,@8747,@4004,@4413,@4062,16777215,@4054,@8743,@4409,@8748,@5,@4403,@8745| 16315:D3,8|fb02293635420000|@8749,1,@1385| 16316:D16,88|fb112b352c372d3829352a372d0304fa530202fa532a3cfa530c2efa530c29fa5369fa542a692c2a69fa512a69312a69fa4e2a69312a692709fa490cfa4a35292bfa490c50fa413529392afa432bfa44220e7b050c000000|@8755,1,@1386,@8756,@8757,@4569,@8758,@8769,@8770,@8771,@8754,@4052,@18932,@4021,@4406,@3978| 16317:D18,340|fb192b35299203043b5002041a510110293ba003402c35299203043b5002041a3e0110293ba003043b5002041a3501102d362e372f3830392c2c2c2c6b29352a362b372c386b2938291a1c010c27081a1a012d7d042c35299203043b5002041a0e0110293ca003cc2d35299203043b500203fafc10293ca003043b500203faf4102e362f372a2a6929352a36692935293ba20303fae2103b503b2afadf0c299291038b29353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fab510293ca00307fab12b3bdb0253292808b1293cb2293fb429faa3a503043b500203fa9e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503f32299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202fa602707021c2d35299203043b500203fa5410293ea003043b500203fa4c102e366464644200|@8760,1,@1387,@4816,@8761,@8764,@4052,@4816,@8765,@4848,@8767,@4056,@4064,16777215,@4054,@4062,@4816,@8759| 16318:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@1388,@8758,@8764| 16319:D4,24|fb052c2ca003033b020d2c3caa292dfa130c28202a696543|@4843,1,@1389,@8767| 16320:D5,16|fb062bfa172846fa172e7b0503000000|@8780,1,@1390,@8781,@8779| 16321:D6,28|fb09293635292dfa1f0c502a363529392afa192bfa1a317b05060000|@8782,1,@1391,@4021,@4406,@3978| 16322:D5,28|fb072d3b2d2f2ffa1f0c292da0910306fa1a2e2d7d063b6444000000|@8784,1,@1392,@8783,@4103| 16323:D13,268|fb132f35299203043b5002041a090110293ba0036c3035299203043b500203faf710293ba003043b500203faef10313632373339332caa220c34fae40c293ba003122b220c2e220d2e220efad7fad922107b090e29352c220d2a9291031c2a352b362a302d22122212fab90c2a2a2505250526031e1b26030200512964270602853035299203043b500203fa9f10293ca003413135299203043b500203fa8d10293ca003043b500203fa8510323629293ba6030efa7e320c50293cab25011e0f02023b5050312aab293ba603032902013b6602313135299203043b500203fa5810293ea003043b500203fa5010323629310c50293b3bef322aab293ba603032902013b270464641f05000000|@8786,1,@1393,@4816,@8761,@8787,@8783,@8785,@4816,@8765,@4125,@4816,@8759| 16324:D10,248|fb132c35299203043b500203faf610293ba003632d35299203043b500203fae410293ba003043b500203fadc102e362f37303831392c2c2c2c6b29352a362b372c386b29383468012a2a2a929103222a352b362b3ba003033b02082b352b2afaab0c642a2a2505250526031e213b66020129652709027c2d35299203043b500203fa8d10293ca0033a2e35299203043b500203fa7b10293ca003043b500203fa73102f3630372a2a6929352a366929352934a40309332aab2968016402013b2706022f2e35299203043b500203fa4910293ea003043b500203fa41102f36293b3bef2931a40309302aab2968016402013b66646443000000|@8788,1,@1394,@4816,@8761,@8787,@4816,@8765,@4816,@8759| 16325:D11,392|fb13319291f87b01313532362a35299203043b5002041a7b0110293ca003f82a92919103033302ed2b35299203043b5002041a5f0110293ca003043b5002041a5601102c362d37220c03033c025b220d2ba403033c0252220d2bab2e2a2a9291033c2a352b362a35299203043b5002041a210110293ca003052c6801021d2b2d1a19010c299291031029352c2a2507250726051e363b6402013b6466020329680165293ba091299166033bfaf3220c0c50332aaa29293ba6030ffae8220e0c50293cab25011e1002023b505033220cab292cab302a22112211221122112211fac722127b09122a293ba6030ffab6220d0c50293cab25011e1002023b5050220d2bab2e2a220f220f220f220f220ffa9822107b091002692b35299203043b500203fa8910293ea0033b2c35299203043b500203fa7710293ea003043b500203fa6f102d3629220c0c50293b3bef220e2aab2f2a22102210221022102210fa4922117b09112c32220d220c34340c2c2a220d220d220d220d220dfa2d220e7b090e660201301f070000|@8789,1,@1395,@4816,@8765,@8787,@4103,@4125,@8785,@4816,@8759| 16326:D3,8|fb02281442000000|@8749,1,@1396| 16327:D5,16|fb062bfa172846fa172e7b0503000000|@8780,1,@1397,@8781,@8779| 16328:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1398,@8799| 16329:D23,796|fb3b0b1100221522152b1a1b030c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f221023102210221022102210221022102210221022102210221022102210221022102210221068112226299291031b29352a362a351ab702a003052a68010207292503511e1a3b6502013b64293ba003051a9f020217293529351a9202a003043b5002041a9002103b5029376478811b0b0200302230222f2c1a7f020c5029352a362a2a692705f1f74f026d29353ca0030a1a6a022b0c501a6802103b503b5029351a6202a0f81e012937291a5c021a5d020c293b3bef293ba003051a54020249281a2ab1292808b1293cb2293fb4291a4402a503043b5002041a3e02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a1e023f2d3f281aec50313f2d281e34ec502b95502b2707293b3bef293ba003051a0902024b292817b1292808b1293cb2293fb4291aed01a503043b5002041ae701103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11ac9013f2e2c2817ec502c95502c2708293b3bef293ba003051ab4010245293cb1292808b1293cb2293fb4291a9501a503043b5002041a8f01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a40e4502c95502c27083e2a69330c5028671a66012d1a66016b103b503b502936293b3bef293ba003051a56010249280b2ab1292808b1293cb2293fb4291a2a01a503043b5002041a2401103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a20013f2d3f280bec50313f2d280f34ec502b95502b2707293b3bef293ba003051a03010248292824b1292808b1293cb2293fb429fad4a503043b500203facf103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fac63f2e2c2824ec502c95502c2708293b3bef293ba00304fa9e0243293cb1292808b1293cb2293fb429fa80a503043b500203fa7b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a40e4502c95502c27083e2a69320c502867fa532dfa606b10642726440000|@8802,1,@1399,@8803,@70,@8811,@4594,@8812,@14711,@14713,@16,@4051,@4053,@14716,16777215,@4054,@14717,@4103,@4629,@14718,@14719,@14720,@8801| 16330:D13,628|fb192c299291031a29352a362a352d36a003052a68010207292503511e193b6502013b64293ba003051a54020216293529352c36a003043b5002041a4602103b502937642e299291031b29352a362a351a3502a003052a68010207292503511e1a3b6502013b64293ba003051a1d020217293529351a1002a003043b5002041a0202103b5029376430299291031b29352a362a351af901a003052a68010207292503511e1a3b6502013b64293ba0034b1ae101299291031b29352a362a351acf01a003052a68010207292503511e1a3b6502013b64293ba003041abb01103b503b50293529351aa701a003043b5002041a9101103b502937650217293529351a8e01a003043b5002041a7801103b5029376432299291031b29352a362a351a7b01a003052a68010207292503511e1a3b6502013b64293ba0034b1a5701299291031b29352a362a351a5101a003052a68010207292503511e1a3b6502013b64293ba003041a3101103b503b50293529351a2901a003043b5002041a0701103b502937650216293529351a1001a003043b500203faef103b502937643b2e0c3b2d0c220d299291031a29352a362a35faf0a003052a68010207292503511e193b6502013b64293ba00346fac9299291031a29352a362a35fac8a003052a68010207292503511e193b6502013b64293ba00303faa5103b503b5029352935faa2a003043b500203fa7d103b50293765021529352935fa8ba003043b500203fa66103b50293764282006283006fa78063b062829063b06320633063306340622183345314632473048221b492c4a220f4b22134c221124082f24092d240a2e240b2215240c221a240d2a240e2b240f3424102716440000|@8805,1,@1400,@8804,@4594,@49,@5423,@50,@5420,@5469,@51,@52,@4062| 16331:D4,8|fb02fa1010000000|@8807,1,@1401,@8806| 16332:D3,4|fb023b42|@5474,1,@1402| 16333:D33,920|fb452c299291031b29352a362a351a9303a003052a68010207292503511e1a3b6502013b64293ba003051a7b030217293529351a6e03a003043b5002041a6c03103b502937642e299291031b29352a362a351a5b03a003052a68010207292503511e1a3b6502013b64293ba0034b1a4303299291031b29352a362a351a3103a003052a68010207292503511e1a3b6502013b64293ba003041a1d03103b503b50293529351a0903a003043b5002041afb02103b502937650217293529351af002a003043b5002041ae202103b5029376431230a32230c33230e34230b220c2311220d2310220e3a220f2307221023092211230f221223062213230d1abe022215692f2c30302210220e221131221232220d22122214680d221723062218230a2219230f2a352a35221c37221d23092a352a35292829a09103032902012a292830a003e0222137222223092935292829a09103082a3b3b2829e302c52b35293ba003ac22253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e68051adf011ae0011ae1010c291ae0010c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c501ac301103b503b502c3b3b2829e35022251ab6010c646602013b2220299291031b29352a362a351aa401a003052a68010207292503511e1a3b6502013b64293ba003051a8c010217293529351a7f01a003043b5002041a4901103b50293764222437222523092a352a35292829a09103032902012a292830a003033c0203293ba0033d2229382935030e1a490122282a35452a3646640225222a3a222b230e2a352a3522162b22152c22166805293b69296801222e2a451a20014627076402c80b03003b2a1a16010c5029362a371a110122262b6a2b2a691a0b0122322b1a09010c2229031d29351a03012a1a03011b10271a01010c3b3b3c3b2d680565222c0c02013b2233382935030dfaed22322a35452a364664026e2b2235221ffadf0c2235382935031222122efad60c29680122352a453b4665024c0b020030223a2bfac40c5029352a36223b3829350312221834faae0c296801223b2a453b466502222b223b2cfaa30cfaa4220c2b6a221a220dfa8e0c2968012b6801223e2b452a462705270665270b27241f040000|@8813,1,@1403,@70,@8814,@4594,@56,@5420,@5469,@16336,@8817,@8818,@8820,@8824,@8827,@8830,@105,@5228,@4685,@8962,@8966,@16361,@8974,@8976,@9299,@4062,@9533,@4685,@9553,@12782,@13184,@5417,@16334| 16334:D4,40|fb153b2a370c0b06003032362bfa250c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270e42|@14671,1,@3663,@14670| 16335:D3,4|fb023b42|@5474,1,@1404| 16336:D4,16|fb053b2a36370c29fa122d7d04000000|@8816,1,@1405,@8815| 16337:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1406,@8815| 16338:D3,28|fb0328092ca503062b280da502013b03033c02042b2820a042000000|@8819,1,@1407| 16339:D4,20|fb092c3b3bef3b3b2b3030fa13317b0705000000|@8822,1,@1408,@8821| 16340:D10,392|fb112e2ea0039b2f2fa003033b02912e30ab2d3b3bef313ba803043b5002041a7201102a3ba803043b5002041a650110312bb1292ba703041a5d01103b502f3b3bef333ba003052c2aa002013b03033002492c3ba003051a4201023f2c2808b1293cb2293fb4291a3601a503043b5002041a300110292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2211b1220e2a2e3f220eec502c95502c2707293b69270502e42e3ba203033c02082c3b3bef2f2aa8640303faf2103b502e3fb12d2adc642c0c03b42f2fa003112e3caa2f3caa292b313131fad6327b07092e30ab2d3b3bef313ba803043b500203faa8102a3ba803043b500203fa9c10312bb1292ba70303fa95103b502f3b3bef333ba003052c2aa002013b03033002462c3ba00304fa7b023d2c2808b1293cb2293fb429fa70a503043b500203fa6b10292841bd2a3cb22a2a3b3bf02b3b3b220cf0503f2211b1220e2a2e3f220eec502c95502c2707333caa343caa292b220d220d220dfa3c0c2c2a692708020e2e3caa302a303030fa2a317b07081f05|@8823,1,@1409,@4004,@6525,@4062,16777215,@4054,@4023,@8821| 16341:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa1d0cfa1e2a692b2a6966650202fa17420000|@8826,1,@1410,@8824,@5091,@8825| 16342:D24,2376|fb3d2b352c362d372e35293528092aa5030629280da502013b03033c0204292820a0035e303a31230732230833230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350220d35220e39220f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260c1e733b270a020129652f3a30230731230832230a33230e34230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35033282ea0f8b4022210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113529282ea09103d32212351a4e082a3bdb293b3bef293ba003051a4308024928102ab1292808b1293cb2293fb4291a3308a503043b5002041a2d08103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a0d083f2d3f2810ec50313f2d281434ec502b95502b270722193a221a2307221b2308221c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e680522101abc071abd070c291abc070c3b3e3b3b2d68053c3b2b2f6b222d38222e230c2a3b3b3ce3502b2a0c50261af79a0122153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b35221c39221d230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051221c3529282ea09103d2221d351a18072a3bdb293b3bef293ba003051a2507024928112ab1292808b1293cb2293fb4291afd06a503043b5002041af706103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aef063f2d3f2811ec50313f2d281534ec502b95502b270722243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e680522101a86061a87060c291a86060c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c50261a0263221b3b3b2839e35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502226352227392228230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260a260b2605f7c10533287da00344343b3b282ee3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7770533287ba00344343b3b2820e3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f72d0533285fa00344343b3b283ce3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7e30433285da00344343b3b282de3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7990433285ba00344343b3b281fe3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f74f04332829a00344343b3b282fe3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f70504332828a003582210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113529282aa091030a22103b3b2821e350020722151aef030c502605f7a70333282ca00344343b3b280be3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f75d0333283ba00312343b3b2830e350220d3b3b2820e350f74503332822a003142210220f361a7c030c50343b3b2834e350f72b03332823a003672210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051221135292822a0031422152214361a21030c5022103b3b2808e350020d1a16031a170322171a16030c502605f7be0233287ea003c42210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113528302aa50306292839a502013b03683c22161abd020c50221135293b3bef293ba003051ab00202443c2ab1292808b1293cb2293fb4291a6d02a503043b5002041a6702103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f287ee450313f2d280534ec502b95502b270722143b3b2ce3502603020d1a5c021a4d0222171a4c020c502605f7f401333fa00309343b3b3be350f7e601283034a50306332839a502013b030b3b22111a26020c50f7cc01284134a5030633285aa502013b03033c020d286134a5030633287aa502013b03033c0204332827a003101afc011afd0122121ae8010c50f792012814293ba003033b0221293cb2293fb11ae4012adc29220fa003033c020c2c3cb229250526041e243b64666403101abe011aab0122121aaa010c50f75401331ab9010c293b3bef293ba003051ab001024928132ab1292808b1293cb2293fb4291a5801a503043b5002041a5201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a7a013f2d3f2813ec50313f2d281734ec502b95502b2707293b3bef293ba003051a5d010245293cb1292808b1293cb2293fb4291a0201a503043b500203fafd103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2822e4502c95502c270822153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e68052210fa8ffa910c29fa910c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50222b35222c39222d230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051261f3435292829a003082211221022127d123b270f4200|@8832,1,@1411,@4064,@8833,16777215,@4054,@8818,@8820,@8824,@8834,@8835,@8840,@4128,@8852,@8855,@8952,@4219,@4062,@8862,@8853,@4051,@8831,@4127| 16343:D4,20|fb082b352c393b2a2ffa150c2b3b3b2ce3664200|@8837,1,@1412,@8836| 16344:D8,248|fb243b2d0c293ba003033f0202293529293fa0038d2e3a2f230730230831230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350343a220c2307220d2308220e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022113a221223062213230a2214230e2215230f2b352e352b352d35302c2e2c2e6805fa8efa90fa920c29fa920c3b3e3b3b2d68053c3b2b2f6b221f382220230c2a3b3b3ce3502b2a0c50221c271c02513b300c293ba003033f020229352b282aa00306292829a002013b03103b320c293ba003033f020229356402242b2828a0030629282aa002013b030e3b3232fa320c2503511ed63b0207292503511edf3b656465440000|@8839,1,@1413,@8838,@8818,@8820,@8824,@8836| 16345:D13,388|fb222c352d362e352f3930230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350517881c83b31220d220d1a49010c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965299291039029353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b5002041a0001103b50293ca00307fafa2b3bdb0255292808b1293cb2293fb429faeca503043b500203fae7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503f32299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202faa7323b3b2ce366f1027a6d293533a003043b50020229103b50333a342307220c2308220d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022103a221123062212230a2213230e2214230f2b352e352b352d35302c2e2c2e6805fa50fa52fa540c29fa540c3b3e3b3b2d68053c3b2b2f6b221e38221f230c2a3b3b3ce3502b2a0c27166427064300|@8842,1,@1414,@8843,@4056,@4064,16777215,@4054,@4062,@8841,@8818,@8820,@8824| 16346:D19,1488|fb362d3529285ca0f860032d352e392f230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365333533353439220c230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce36528092fa503062e280da502013b03033c02042e2820a0f86d02220f35293528092aa5030629280da502013b03033c0204292820a0036222113a22122307221323082214230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502217352218392219230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260c1e783b270a0201296529285ca003053b50f799012211351abd042a3bdb291aba041abb040c293b3bef293ba003051ab204024928152ab1292808b1293cb2293fb4291aa204a503043b5002041a9c04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a7c043f2d3f2815ec50313f2d281934ec502b95502b2707293b3bef293ba003051a6704024b29280bb1292808b1293cb2293fb4291a4b04a503043b5002041a4504103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a27043f2e2c280bec502c95502c270822173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e680522101ad6031ad7030c291ad6030c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c50222e3529285ca0910318222f35292822a091030a223035293fa0916402013b6402013b0340222e35222f392230230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505126051e5f260402023b5050261d2210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122162216221622161a0f0322177b06172e285ea003542210352210352211392212230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365285c221869285e2a69302a69652217221722171ab50222187b0618285c2212692f2a69642211221122111a9e0222127b06122940a0035e2d3a2e23072f230830230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35033353439220c230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d1a40023b1a40026b103b503b50292822a0035a2d3a2e23072f230830230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35033353439220c230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512210270af799012d352e392f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512d3fa0030a301a98013b1a9c016b103b503b5028212ea503062d287ea502013b03033c02042d2820a0030d2d34693333331a6901347b060b2d1a3d010c293b3bef293ba003051a6401024928162ab1292808b1293cb2293fb4291a2801a503043b5002041a2201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a2e013f2d3f2816ec50313f2d281a34ec502b95502b2707293b3bef293ba003051a11010248292810b1292808b1293cb2293fb429fad2a503043b500203facd103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fad43f2e2c2810ec502c95502c2708220d3a220e2307220f23082210230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68052210fa60fa620c29fa620c3b3e3b3b2d68053c3b2b2f6b2221382222230c2a3b3b3ce3502b2a0c502225222522252225fa3e22267b0626641f040000|@8845,1,@1415,@4064,@4051,@4053,@8846,16777215,@4054,@8847,@8818,@8820,@8824,@8843,@8848,@8849,@8850,@8851,@8844| 16347:D4,48|fb072814293ba003033b021f293cb2293fb1fa282adc2930a003033c020c2c3cb229250526041e223b64666442000000|@8854,1,@1416,@8853| 16348:D20,840|fb2e2b352c362d373030301a46030c2c3529282ea0f8c9023035313932230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365323528412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b0363303b3bef293ba003051ade020247293cb1292808b1293cb2293fb4291acf02a503043b5002041ac902103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3f2d3f34ec503f31b12c2a282ee4502c95502c2708291a9d0222111a9c0222127b05122814293ba003033b0220293cb2293fb11a88022adc292ea003033c020c2c3cb229250526041e233b6466640363303b3bef293ba003051a4e020247293cb1292808b1293cb2293fb4291a3f02a503043b5002041a3902103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3f2d3f34ec503f31b12c2a282ee4502c95502c2708291a190222111a0c0222127b0512303b3bef293ba003051a0702024a28152ab1292808b1293cb2293fb4291adb01a503043b5002041ad501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ad1013f2d3f2815ec50220f3f2d281934ec502b95502b2707293b3bef293ba003051a93010246293cb1292808b1293cb2293fb4291a8401a503043b5002041a7e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27081a68012e3bdb2a3b3bef2a3b3bef2a3ba003032b0251293ba003032c02492a2ab1292808b1293cb2293fb4291a2001a503043b5002041a1a01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c270822153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e68052210fac1fac30c29fac30c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a222c7d2e2c3b3b2de3502a3b3bef3b2aa203362b3b3bef3b2aa80303fa8d103b503b502c3fdcfa732a3bdb29fa81a003033c0212293b3bef3ca00309293ffa6f3f3ced02013b6602013b0304283a0212fa612cfa620c293ba00304281802022935642d3b3b2ce365270544|@8857,1,@1417,@8858,@4139,16777215,@4054,@8862,@8855,@8853,@8852,@8864,@4064,@8818,@8820,@8824,@4023,@4132,@8856,@4596| 16349:D5,20|fb072b353b2a2f2ffa160c2f2a6964fa132d7d06|@8860,1,@1418,@8859,@4052| 16350:D5,120|fb122d35292e0c03682c3a2d23072e23082f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3503235333934230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051fa27343bdb3b221122112211fa1f0c2a2a69270c02013b641f04000000|@8861,1,@1419,@4064,@8859| 16351:D3,72|fb0328412ca503062b285aa502013b03033c020d28612ca503062b287aa502013b03033c020d28302ca503062b2839a502013b03033c020d2b2827a003033c02042b285fa0420000|@8863,1,@1420| 16352:D21,1604|fb342b352c362d372e230b2a3b3b281ee3501a3b061a3c06311a3c060c2c3b3b2ce3503191032e2d35292877a003222d35291a2706a003033c0213293b3bef3ca0030a293f1a14063f3ced02013b6402013b6402013bf82a013035313932230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350513135292878a003a8220c35220d39220e230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d3528302aa50306292839a502013b03033c021f28612aa50306292866a502013b03033c020d28412aa50306292846a502013b031d220c3b3b2843e3501a51051a520522131a41050c220e3b3b2ce3640219220e35293b6928782a69220e3b3b2ce35022113b3b2877e36627050240323528302aa50306292839a502013b031b313b3b2843e3501a0f051af804220f1af7040c333b3b2ce36402133335293b69323b3b2ce350220c3b3b2877e365642705f7bc042d35292878a003222d35291acb04a003033c0213293b3bef3ca0030a293f1ab8043f3ced02013b6402013b03963135323933230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051323528302aa50306292839a502013b03033c021f28612aa50306292866a502013b03033c020d28412aa50306292846a502013b03141a4f041a4404220f1a33040c333b3b2ce36402133335293b69323b3b2ce350220c3b3b2878e3652705f7f8032e3529282ea003033c02132f35292845a003033c02073035292865a06464f8d5032f3529282ea0f8f9012e3b3b282be3502f35293b3bef293ba003051aeb030244293cb1292808b1293cb2293fb4291adc03a503043b5002041ad60310292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c2708323b3b2ce350220d35220e39220f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220e3528302aa50306292839a502013b2991f83201220f35293b3bef293ba003051a4f03024728172ab1292808b1293cb2293fb4291a3303a503043b5002041a2d0310292841bd2a3cb22a2a3b3bf02b3b3b32f0501a1b033f2d3f2817ec50313f2d281b34ec502b95502b27072213351a04032a3bdb2b3b3bef2a3b3bef2a3ba003032b024f293ba003032d02472a2ab1292808b1293cb2293fb4291acc02a503043b5002041ac60210292841bd2a3cb22a2a3b3bf02b3b3b32f050343f2d3f220cec503f32b1333f2e2c220cec502c95502c2708221b3a221c2307221d2308221e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022213a222223062223230a2224230e2225230f2b352e352b352d35302c2e2c2e680522101a5e021a5f020c291a5e020c3b3e3b3b2d68053c3b2b2f6b222f382230230c2a3b3b3ce3502b2a0c50261e0215220f35291afd0122161afc010c22113b3b2ce35051260902023b503035292845a003033c02073135292865a064f8b8013135220c35220d39220e230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d3529287ea003de2211352212392213230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122123528302aa50306292839a502013b037722113b3b282be350221235293b3bef293ba003051a6c01024c293db1292808b1293cb2293fb4291a3d01a503043b5002041a370110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2845e4502c2a3cb1287ee4502c95502c270829fadf221bfadf0c22163b3b2ce327040219221335293b69287e2a6922133b3b2ce35022163b3b2210e36627050293220e3528302aa50306292839a502013b036c220d3b3b282be350220e35293b3bef293ba00304facb0242293cb1292808b1293cb2293fb429fa99a503043b500203fa9410292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2845e4502c95502c270829fa442217fa440c22123b3b2ce327040214220f35293b69220e3b3b2ce35022113b3b34e36564270602013b6502013b64642705430000|@8954,1,@1421,@4062,@8955,@8858,@4141,@8957,@8958,@8960,@7681,@4139,16777215,@4054,@8961,@4064,@8818,@8820,@8824,@8953,@4162| 16353:D3,16|fb0328302ca503062b2839a502013b42|@8956,1,@1422| 16354:D3,52|fb0328302ca503062b2839a502013b03033c021f28612ca503062b2866a502013b03033c020d28412ca503062b2846a502013b42|@8959,1,@1423| 16355:D4,8|fb02fa1042000000|@8965,1,@1424,@8964| 16356:D6,28|fb073b06fa222a69fa222b69fa222c692f2c452b462a472704430000|@8967,1,@1425,@16358,@16360,@16357| 16357:D3,76|fb0e29363529299291033b29352a362a352b362a32a003033c02182a3b3bef323b3befa0030c2a3f333f220c3b3befed02013b030529680102082b250526041e393b270402013b6464420000|@8972,1,@1429| 16358:D4,12|fb052936352cfa102d7e0300|@8969,1,@1426,@8968| 16359:D4,32|fb082c929103152c352d362a352b362b30fa190c502a2a6930307d083b430000|@8970,1,@1427,@8968| 16360:D3,24|fb0a2b352c362a2a692c36352a2a692e363b3b2ce3270542|@8971,1,@1428| 16361:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1430| 16362:D3,16|fb022b2830a003033c02032b3ba04200|@8975,1,@1431| 16363:D10,440|fb292b352c361abb012f692b2b2b6a1ab601326931373223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d292823a003033c0204292836a003033c020d292833a003033c0204292815a0031d0b0200facb2a22122214220d220dfac40c5029352a362a2a6927050299220d2306220e230a220f230f2a352a350b0200220d22163b22112d221b221bfa9a0c5029352a363b063b2c2b2d6b221937221a23092a352a35292829a09103032902012a292830a091031e221e37221f23092a352a35292829a09103032902012a293ba091270502013b0309fa51221ffa510c02013b3b063d312b6a293b6922223a2223230e2a352a3522182b22172c221868052e2a69271a270a44000000|@8978,1,@1432,@16364,@16366,@8982,@8983,@8984,@4152,@8977| 16364:D8,96|fb1729363a2a3623062b36230a2c36230e2d36230f2b352e352b352d35302c2e2c2e6805fa46fa48fa4a0c29fa4a0c3b3e3b3b2d68053c3b2b2f6b220e3638220f36230c2a3b3b3ce3502b2a0cfa2d061b0f273eba293db82b2a692714420000|@8980,1,@1433,@8981,@8818,@8820,@8979,@5064| 16365:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa1d0cfa1e2a692b2a6966650202fa17420000|@8826,1,@1434,@8979,@5091,@8825| 16366:D3,508|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02c92b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02162b2833a003033c020d2b2815a003033c02042b2836a003033c02052b2a362c804200|@8975,1,@1435| 16367:D3,216|fb022b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d2b2823a003033c02042b2836a003033c020d2b2833a003033c02042b2815a042000000|@8975,1,@1436| 16368:D13,540|fb222e372f23092a352a35292829a09103032902012a333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805332830a003033c0203333ba0030922153b452a46f7ca01330a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880033283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d332823a003033c0204332836a003033c020d332833a003033c0204332815a003e80b0200220d2823a0031e221522182216221a221afaf10c3b063d2b2b6a2c2a45fae946502603028c220d2836a0031e221522182216221a221afacc0c3b063d2b2b6a2c2a45fac4465026030267220d2833a00315221522182216221afab10c2a2a45faaf465050024b220d2815a00317221522182216221a221afa9b0c2a2a45fa99465050022d0b02002217221b3c221b2d221e2220fa870c5029352a363b063b2c2b2d6b3b063d2b2b6a322a45fa5b4650260929352a360b02002c2a221e221e221e221efa5c0c5029352a362f2b692a362b3822152b22132c2213680522232d452a46270e020efa3d2215fa3d0c5022153b452a46270f1f0600|@8985,1,@1437,@8986,@9137,@9138,@9149,@9151,@9155,@8984,@8983,@4152,@8977| 16369:D18,568|fb342f352f230630230a31230f2a352a353437220c23092a352a35292829a09103032902012a292836a0f87c01221037221123092935292829a09103082a3b3b2829e302c52b35293ba003ac22143a22152307221623082217230a2218230e2219230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221e3a221f2307222023082221230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022243a222523062226230a2227230e2228230f2b352e352b352d35302c2e2c2e68051a79011a7a011a7b010c291a7a010c3b3e3b3b2d68053c3b2b2f6b2232382233230c2a3b3b3ce3502b2a0c501a5d01103b503b502c3b3b2829e35022141a50010c64221423062215230a2216230f2a352a350b02003b0b02003b2a222122232222222622213622241a29010c5029352a363d1a230122241a22010c030d2a2f6929250726061e2f5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a3629362a3822192b22182c221968053b063d2b302c6b2712028b28232211fab90c221123062212230a2213230f2a352a352217362218370b03003b2afa9f0c5029362a37fa9b312b6a2b2a326afa962220692a22222b222222222221370c281a2223fa750cfa82221e316a292f220e6afa7b2225692a22272b222722272226370c22273a2228230e2a352a35280f222cfa470c221a2c22192d221a68053c30220d2c6b271d270b1f05|@8988,1,@1438,@8817,@8818,@8820,@8824,@8827,@8830,@8989,@9125,@9016,@8990,@8966,@16464,@16465,@16466,@16370| 16370:D3,20|fb042b280fa003033c02052b2a362c8042000000|@8975,1,@1535| 16371:D17,692|fb351abb0231690b02001ab7022d220c2c1ab4020c5029352a362a220d2b1aab020c220d37220e23092a352a35292829a09103032902012a2940a0f80301221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051af4011af5011af6010c291af5010c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501ad801103b503b502c3b3b2829e35022161acb010c641aca012218690b02002218221b2e2c221d1abd010c5029352a362a3c2b6a296801270bf70101292809a003fa221237221323092935292829a09103082a3b3b2829e302bf2b35293ba003a722163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e6805faecfaeefaf00c29faf00c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c50fad4103b503b502c3b3b2829e3502216fac80c64fad02218690b02002218221b2e2c221dfabc0c5029352a362a3b2b6a296801270b02013b28112214faac0c0b020022152218221a2c221a2218221a0c5029352a36220d35220e37220f392c362d382d2b2e2c2f6805220c9291031d220c3529352a362b373b063b06220d2e2e2e2e2e68063d2a692707020130220d3ba0913b062c22182d2c2e221b680622252a452e46271d1f080000|@8991,1,@1439,@16372,@8992,@8993,@8998,@8817,@8818,@8820,@8824,@8827,@8830,@16377,@9004,@16461,@8990| 16372:D3,36|fb042b2811a003033c020c2b40a003033c02042b2809a003033c02052b2a362c80420000|@8975,1,@1440| 16373:D3,16|fb022b2806a003033c02042b2818a042|@8975,1,@1441| 16374:D12,576|fb3a2c372d23092a352a35292829a09103032902012a29340cf80d0131362935333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805221437221523092935292829a09103092a3b3b2829e35002c42b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051a6d011a6e011a6f010c291a6e010c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501a5101103b502c3b3b2829e35022181a46010c50502216220e452d46270ff712011a3801321a38010c5031373223092a352a35292829a09103032902012a29220f0c299103df220e37220f23092935292829a09103092a3b3b2829e35002be2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa60fa62fa640c29fa640c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa48103b502c3b3b2829e3502212fa3e0c505026091ef5260302023b502606fa39312a35452a36466427051f0400|@8995,1,@1442,@8817,@8818,@8820,@8824,@8827,@8830,@8996,@8977,@8994| 16375:D4,12|fb073c2e2d2ffa102f7b0605|@9000,1,@1443,@8999| 16376:D14,308|fb162d3b3bef2f2aa603043bf720012f3cab293ba203033c02082f3b3bef2a2aa86403041a1901103b50293fb1302adc1a11012a3bdb291a0e01a003033c0212293b3bef3ca00309293ffafc3f3ced02013b03cf323b3bef293ba00304faed0245280f2ab1292808b1293cb2293fb429fadea503043b500203fad910292841bd2a3cb22a2a3b3bf02b3b3b32f050fabc3f2d3f280fec5022113f2d281334ec502b95502b2707293b3bef293ba00304faa7024629280db1292808b1293cb2293fb429fa8ca503043b500203fa8710292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa6c3f2e2c280dec502c95502c270829fa60fa620c29fa620c3b3e3b3b2d68053c3b2b22126b220f382210230c2a3b3b3ce3502b2a22127d15333caa333333fa3d347b060b641f040000|@9002,1,@1444,@4023,@4064,@4139,@9003,16777215,@4054,@9001,@8818,@8820,@8979,@8999| 16377:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1445| 16378:D20,756|fb3a1afb022e1afb02311afb020c2f230630230a31230f2a352a353437220c23092a352a35292829a09103032902012a292818a003301ad3022210690b02001ace022d22162c1acb020c5029352a362a22172b1ac2020c3b063c2d2d2c6b292d692709f77001292832a0f81701221037221123092935292829a09103082a3b3b2829e302c52b35293ba003ac22143a22152307221623082217230a2218230e2219230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221e3a221f2307222023082221230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022243a222523062226230a2227230e2228230f2b352e352b352d35302c2e2c2e68051a11021a12021a13020c291a12020c3b3e3b3b2d68053c3b2b2f6b2232382233230c2a3b3b3ce3502b2a0c501af501103b503b502c3b3b2829e35022141ae8010c641ae701221469221622162b22152214360c22163a2217230e2a352a3522132b22122c22136805280f221c1ac1010c503b2f2b6a292b69270c025222103a221123062212230a2213230e2214230f2b352e352b352d35302c2e2c2e68053b063c1a90012c2c6b221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e6805332a692716221137221223092a352a35292829a09103032902012a29283fa003f2221637221723092935292829a09103092a3b3b2829e35002c02b35293ba003a7221a3a221b2307221c2308221d230a221e230e221f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e6805fa8cfa8efa900c29fa900c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c50fa74103b503b502c3b3b2829e350221afa680c505031353236221b2219221cfa690c22182a35452a36466466020a2e22152a35452a36466427111f050000|@9007,1,@1446,@9008,@9009,@9010,@16381,@8992,@8993,@8998,@8817,@8818,@8820,@8824,@8827,@8830,@16382,@8990,@9012,@9006| 16379:D3,28|fb022b2832a003033c020d2b2806a003033c02042b2818a042000000|@8975,1,@1447| 16380:D10,308|fb352b372c23092a352a35292829a09103032902012a29340c2991f8100132321a1d010c5031373223092a352a35292829a09103032902012a2922100c03033c02042922110c299103df220e37220f23092935292829a09103092a3b3b2829e35002be2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa5cfa5efa600c29fa600c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa44103b502c3b3b2829e3502212fa3a0c505026091efe3b6602013b270602013b27061f0400|@9011,1,@1448,@8977,@8817,@8818,@8820,@8824,@8827,@8830| 16381:D3,20|fb042b283fa003033c02052b2a362c8042000000|@8975,1,@1449| 16382:D3,36|fb042b2830a003033c02172b283fa003033c020e2b280fa003033c02052b2a362c804200|@8975,1,@1450| 16383:D23,728|fb50283b2e1adc020c0b03003b2a1ad7020c5029352a362b372b2b2b6a3b2a220e1ac8020c1ac802220d690b02001ac3022d22142c1ac0020c5029352a3633333322161ab6020c281122161a96020c1aae0222151aad0222191aac020c1aac022216690b02002c221c312c1aa2020c5029352a36322220220c22122e68053d2a692220352221372222392e362f382d2b2e2c2f68052f2a69222637222723092a352a35292829a09103032902012a293da0f82f01222b37222c23092935292829a09103092a3b3b2829e35002c62b35293ba003ac222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e68051ac1011ac2011ac3010c291ac2010c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c501aa501103b503b502c3b3b2829e350222f1a98010c5050222e37222f23092a352a35292829a09103032902012a29283ba003122214220f2235223522351a700122367b0736223323092935292829a09103041a5f01103b503b502a3b3b3de350220f65270802f029283fa003e9222b37222c23092935292829a09103092a3b3b2829e35002c02b35293ba003a7222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e6805fa8dfa8ffa910c29fa910c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c50fa75103b503b502c3b3b2829e350222ffa690c5050220f33223022302230fa5f22317b07312e27271f0500|@9014,1,@1451,@8990,@8966,@9015,@16392,@9039,@8993,@9041,@9045,@8915,@9010,@16397,@9046,@8817,@8818,@8820,@8824,@8827,@8830,@9006,@9013| 16384:D14,492|fb302c352d362d372e23092a352a35292829a09103032902012a292821a0f8a40132373323092935292829a09103092a3b3b2829e35002c62b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a3a011a3b011a3c010c291a3b010c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501a1e01103b503b502c3b3b2829e350220d1a11010c5050220c37220d23092a352a35292829a09103032902012a29283aa0038a221123062212230a2213230f2a352a350b02003b0b02003b2a221f221d2223221efad30c5029352a36280bfacd2221facd0c030d2a2f6929250726061e285002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935282f221bfa7f0c50292709021d221123092935292829a0910303fa6d103b503b502a3b3b2821e3503b652708022129283aa0031a0b02003b2a220e220c2212220dfa360c502935293b69270402013b270744000000|@9017,1,@1452,@8817,@8818,@8820,@8824,@8827,@8830,@9018,@9036,@9016,@8990,@9013| 16385:D15,488|fb422e372f23092a352a35292829a09103032902012a29283aa0f8840133362935220c3a220d2306220e230a220f230e2210230f2b352e352b352d35302c2e2c2e68051aae013422186a22160c2215034a343b3bef293ca6033d220c3b3bef3c2aa803041a9101103b503b50220d2805dc1a88012a3bdb291a8501a003033c0213293b3bef3ca0030a293f1a72013f3ced02013b6602013b6402013b1a6501061b0f273eba2b03033f02013b2a2ab8293db82d2a6922122a69221c0c50221e37221f23092935292829a09103092a3b3b2829e35002c02b35293ba003a722223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e6805faadfaaffab10c29fab10c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c50fa95103b503b502c3b3b2829e3502222fa890c505022222d45220c4627170242283a34fa7a0c50fa5a061b0f273eba293fb8293db82c2a69220f3a221023062211230a2212230e2213230f2b352e352b352d35302c2e2c2e6805221a34452a46270f27051f0600|@9020,1,@1453,@16386,@4023,@4064,@4132,@5064,@8817,@8818,@8820,@8824,@8827,@8830,@9019| 16386:D4,16|fb072b352c362b362c37fa102f7b0603|@9022,1,@1454,@9021| 16387:D9,196|fb192e2da003033c02172e3b3bef2d3b3befa0030b2e3f2e3f303b3befed02013b039d2b3a2c23062d230a2e230e2f230f2b352e352b352d35302c2e2c2e6805220f3b3bef293ba00304fa840249292817b1292808b1293cb2293fb429fa75a503043b500203fa70103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022173f2d3f34ec503f31b1fa463f2e2c2817ec502c95502c270829fa42fa440c29fa440c3b3e3b3b2d68053c3b2b316b2212382213230c2a3b3b3ce3502b2a22157d183b1f0400|@9024,1,@1455,@9023,16777215,@4054,@8818,@8820,@8979| 16388:D11,224|fb2a2cfae70c292dfae60c502c372d23092935292829a09103082a3b3b2829e302b82b35293ba003a2303a31230732230833230a34230e220c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022113a22122307221323082214230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022173a221823062219230a221a230e221b230f2b352e352b352d35302c2e2c2e6805fa52fa54fa560c29fa560c3b3e3b3b2d68053c3b2b2f6b2225382226230c2a3b3b3ce3502b2a0c50fa3a103b502c3b3b2829e35030fa31317d09270443000000|@9026,1,@1456,@9025,@8977,@8817,@8818,@8820,@8824,@8827,@8830| 16389:D71,500|fb022b0a440088008e0094009a00a000a600ac00b200b800be00c400ca00d000d600dc00e200e800ed00f200f700fc00010106010b01100115011a011f01240129012e01330138013d01420147014c01510156015b01600165016a016f01740179017e01830188018d01920197019c01a101a601ab01b001b501ba01bf01c401c901ce01d301d801dd01e201e7011a6f01f75c011a6d01f756011a6b01f750011a6901f74a011a6701f744011a6501f73e011a6301f738011a6101f732011a5f01f72c011a5d01f726011a5b01f720011a5901f71a011a5701f714011a5501f70e011a5301f708011a5101f702011a4f0102fd1a4e0102f81a4d0102f31a4c0102ee1a4b0102e91a4a0102e41a490102df1a480102da1a470102d51a460102d01a450102cb1a440102c61a430102c11a420102bc1a410102b71a400102b21a3f0102ad1a3e0102a81a3d0102a31a3c01029e1a3b0102991a3a0102941a3901028f1a3801028a1a370102851a360102801a3501027b1a340102761a330102711a3201026c1a310102671a300102621a2f01025d1a2e0102581a2d0102531a2c01024e1a2b0102491a2a0102441a2901023f1a2801023a1a270102351a260102301a2501022b1a240102261a230102211a2201021c1a210102171a200102121a1f01020d1a1e0102081a1d0102031a1c0142000000|@9028,1,@1457,@4100,@8888,@8945,@8950,@5587,@8924,@4135,@8885,@9029,@4151,@8912,@4137,@8881,@8898,@5542,@5637,@8921,@4154,@8903,@8895,@8928,@8941,@8905,@4128,@9030,@5538,@5639,@8937,@8873,@8869,@9031,@4184,@4216,@4133,@5641,@8930,@8871,@8879,@8917,@8948,@8934,@9032,@8901,@9033,@8893,@4186,@4218,@4134,@4152,@8877,@8919,@8891,@9034,@8943,@8910,@5540,@6460,@5082,@9035,@8915,@4188,@8907,@4217,@8951,@8939,@5670,@8926,@9027| 16390:D3,8|fb022b283aa04200|@9037,1,@1458| 16391:D10,288|fb2e2b372c23092a352a35292829a09103032902012a2933a003d730373123092935292829a09103092a3b3b2829e35002bc2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa76fa78fa7a0c29fa7a0c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa5e103b502c3b3b2829e35034fa550c50503c66022830373123092a352a35292829a09103032902012a29220e0c030b220e220dfa320c503c02013b2705270544000000|@9038,1,@1459,@8817,@8818,@8820,@8824,@8827,@8830,@9019| 16392:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1460| 16393:D3,8|fb022b2818a04200|@9040,1,@1461| 16394:D4,12|fb04fa142c2e6a1f04000000|@9042,1,@1462,@16395| 16395:D10,196|fb1a2b2a370c293ba003b42a363a2b3623062c36230a2d36230e2e36230f2b352e352b352d35302c2e2c2e6805220d3b3bef293ba00304fa97024929282ab1292808b1293cb2293fb429fa88a503043b500203fa83103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f34ec503f31b1fa593f2e2c282aec502c95502c270829fa55fa570c29fa570c3b3e3b3b2d68053c3b2b316b22113638221236230c2a3b3b3ce3502b2a0c50fa39061b0f273eba293db82b2a69271502022935644200|@9044,1,@1463,@9043,16777215,@4054,@8818,@8820,@8979,@5064| 16396:D3,36|fb022b2820a003033c02162b2821a003033c020d2b2818a003033c02042b283aa0420000|@8975,1,@1464| 16397:D3,28|fb042b3da003033c020e2b283fa003033c02052b2a362c8042000000|@8975,1,@1465| 16398:D15,340|fb341a5b012f690b02002c2a33331a53010c5029352a3633373423092a352a35292829a09103032902012a293fa0f80b01220f37221023092935292829a09103082a3b3b2829e302bd2b35293ba003a722133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805fa9afa9cfa9e0c29fa9e0c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50fa82103b502c3b3b2829e3502213fa780c640b02002217221722172cfa6e0c5029352a36220e35220f372210392c362d382d2b2e2c2f68053d22162b336b221d2a452b46271002122210fa44fa462212fa460c50220d30452f46270b1f040000|@9048,1,@1466,@16399,@9049,@8817,@8818,@8820,@8824,@8827,@8830,@9046,@9079,@9047,@9010| 16399:D3,16|fb042b3fa003033c02052b2a362c8042|@8975,1,@1467| 16400:D4,60|fb0a0b02003b2a333232fa3c0c5029352a362a929103082a36293ba06402013b030a2a35332a452b4664020b28052b2b6a332a452b466427051f0400|@9051,1,@1468,@9050| 16401:D12,332|fb341a53012e690b02002c2a32321a4b010c5029352a3632373323092a352a35292829a09103032902012a292806a0f80a01220e37220f23092935292829a09103082a3b3b2829e302bd2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa91fa93fa950c29fa950c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa79103b502c3b3b2829e3502212fa6f0c640b02003b2a221822182218fa640c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805222030452a462710020a2f3b6922112a45304664270b1f050000|@9053,1,@1469,@16402,@9052,@8817,@8818,@8820,@8824,@8827,@8830,@9050| 16402:D3,20|fb042b2806a003033c02052b2a362c8042000000|@8975,1,@1470| 16403:D25,1308|fb4d2c372d23092a352a35292829a09103032902012a313a32230633230a34230e220c230f2b352e352b352d35302c2e2c2e68050b0200220d2818a003310b02001ae404221b221a2c1ae0040c5029352a361adb04063b2c2c2d2e2e68063c2a69293b69322a452e46502609f74c04220d283aa0032422153629356422150c283a22171aae040c503e2a2f6a293b692c2a453046502603f72104220d2820a0f8fd02221537221623092935292829a09103082a3b3b2829e302c32b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051af8031af9031afa030c291af9030c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501adc03103b502c3b3b2829e35022191ad1030c6422193a221a230e2a352a35221d37221e23092a352a35292829a09103032902012a29282ea003f9222237222323092935292829a09103082a3b3b2829e302c32b35293ba003ac22263a22272307222823082229230a222a230e222b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022303a22312307223223082233230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022363a223723062238230a2239230e223a230f2b352e352b352d35302c2e2c2e68051af6021af7021af8020c291af7020c3b3e3b3b2d68053c3b2b2f6b2244382245230c2a3b3b3ce3502b2a0c501ada02103b502c3b3b2829e35022261acf020c64221c34221a220c221a68053f3b3c2c6b293b6922142a452c4650260702fd1ab0022223690b03002d2a1aa9020c502936222823062229230a222a230f2a352a350b02003b1a92022234690b02002c22362b1a89020c5029352a362a2a692922110c2809223a1a4d020c1a7502223d690b02002c223f223f2c1a6a020c5029352a363235333734392c362d382d2b2e2c2f6805220e312b6a280b1a4d0222491a4c020c030e2922176929251826171e6950023529221769293b2a929103152a352b362a2c692a2a2505250526031e143b660201296522202f221f3022206805221a2b452a46502603261650293522313a2232230e2a352a35222b2b22292c22296805282e22371aad010c503f2f3c2c6b293b6922232a452c46502616260df71c01220d2821a0f80601221537221623092935292829a09103082a3b3b2829e302bd2b35293ba003a722193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e6805faf4faf6faf80c29faf80c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c50fadc103b502c3b3b2829e3502219fad20c643b221a221d221bfaeb0c221a3a221b230e2a352a35282f221ffa9d0c5022142b22122c22126805332f452a4650260a020e28182216fac10c50293b452d465029352a36221737221823092a352a35292829a09103032902012a292818a0030d2f2f221f221ffa95221f7b061f2f929103222f353036293ba00308221f2b453146020e2818221ffa700c50221f2b453146650207221dfa69452f4627191f040000|@9055,1,@1471,@9039,@8993,@9056,@8990,@8817,@8818,@8820,@8824,@8827,@8830,@16405,@9069,@16411,@9076,@16413,@9046,@9079,@9016,@9081,@9019,@9054,@4517| 16404:D4,8|fb02fa1042000000|@5002,1,@1472,@4667| 16405:D10,212|fb112d3b3bef293ba00304fad3024528072ab1292808b1293cb2293fb429fac4a503043b500203fabf10292841bd2a3cb22a2a3b3bf02b3b3b32f050faa23f2d3f2807ec50220c3f2d280b34ec502b95502b2707293b3bef293ba00304fa8d0246292819b1292808b1293cb2293fb429fa72a503043b500203fa6d10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa523f2e2c2819ec502c95502c270829fa46fa480c29fa480c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f000000|@9067,1,@1473,@9068,16777215,@4054,@9066,@8818,@8820,@8979| 16406:D6,28|fb073b06fa222a69fa222f2c6afa212c692f2c452b462a4727044300|@9070,1,@1474,@16408,@16410,@16407| 16407:D3,76|fb0e29363529299291033b29352a362a352b362a32a003033c02182a3b3bef323b3befa0030c2a3f333f220c3b3befed02013b030529680102082b250526041e393b270402013b6464420000|@9075,1,@1478| 16408:D4,12|fb052936352cfa102d7e0300|@9072,1,@1475,@9071| 16409:D4,32|fb082c929103152c352d362a352b362b30fa190c502a2a6930307d083b430000|@9073,1,@1476,@9071| 16410:D3,100|fb102b352c362b373529299291033f29352a362a352b362a31a003033c02172a3b3bef313b3befa0030b2a3f323f343b3befed02013b030a302a313436220d7b050b2b250526041e3d3b270402102c2c692e37352a2a6930373b3b2ce366646642000000|@9074,1,@1477| 16411:D3,20|fb042b2809a003033c02052b2a362c8042000000|@8975,1,@1479| 16412:D17,472|fb3d2c372d23092a352a35292829a09103032902012a29281ea0f8ab0131362935333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805333b3bef3b2aa803041a9701103b50343fdc1a92012a3bdb221737221823092935292829a09103092a3b3b2829e35002be2b35293ba003a7221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e6805faf5faf7faf90c29faf90c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c50fadd103b502c3b3b2829e350221bfad30c50502cfad1a003033c02122c3b3bef3ca003092c3ffabf3f3ced02013b03033c021b2cfab5a003033c02122c3b3bef3ca003092c3ffaa33f3ced02013b034e221a3a221b2306221c230a221d230e221e230f2b352e352b352d35302c2e2c2e6805fa7bfa5dfa5f0c29fa770c3b3e3b3b2d68053c3b2b2f6b2228382229230c2a3b3b3ce3502b2a0c50261002023b50221922114530462712020bfa4a333333fa49347b060a2705440000|@9078,1,@1480,@4023,@4064,@8817,@8818,@8820,@8824,@8827,@8830,@4219,@4141,@9077,@8979,@8992,@8993| 16413:D3,28|fb042b282ea003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1481| 16414:D3,4|fb023b42|@9080,1,@1482| 16415:D10,120|fb0f2d372e23092a352a35292829a09103032902012a292820a003033c0216292821a003033c020d292818a003033c020429283aa00317fa4b32690b02002c220e220d2cfa420c50293527040209283a33fa390c50fa39280bfa39220cfa390c030d3b343434fa340c2a2a69640203293b6927061f040000|@9083,1,@1483,@16416,@9046,@9019,@4517,@9045,@9082,@9081| 16416:D3,28|fb042b282fa003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1484| 16417:D10,288|fb2e2b372c23092a352a35292829a09103032902012a2933a003d730373123092935292829a09103092a3b3b2829e35002bc2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa76fa78fa7a0c29fa7a0c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa5e103b502c3b3b2829e35034fa550c50503c66022830373123092a352a35292829a09103032902012a29220e0c030b220e220dfa320c503c02013b2705270544000000|@9084,1,@1485,@8817,@8818,@8820,@8824,@8827,@8830,@9019| 16418:D11,340|fb3c2b3629352d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68052210352211372212392b302c302d68051a2a0106221622102217312e2e68063c2a69221537221623092935292829a09103092a3b3b2829e35002be2b35293ba003a722193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e6805fa81fa83fa850c29fa850c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c50fa69103b502c3b3b2829e3502219fa5f0c5050221837221923092a352a35292829a09103032902012a292818a00311313b6929220d22212221fa3822227b0622221e3245220c46271b1f04|@9085,1,@1486,@9056,@8817,@8818,@8820,@8824,@8827,@8830,@9054| 16419:D6,44|fb132e370b03003b2afa2d0c5029362a37fa292b2b6a3b220c220e3436220e2212220d30fa1a22127b0a0e00|@9089,1,@1487,@8966,@16420,@9088| 16420:D7,116|fb0c2b2a370c293ba003622c3b3bef293ca603352d3b3bef3c2aa80303fa61103b502e2805dcfa5c2a3bdb29fa5aa003033c0212293b3bef3ca00309293ffa483f3ced02013b6602013bfa40061b0f273eba2b03033f02013b2a2ab8293db82d2a69342a6933360c2a2709020229356442000000|@9090,1,@1488,@4023,@4064,@4132,@5064| 16421:D37,3408|fb431a570d326929331a540d341a540d0c32373323092a352a35292829a09103032902012a220e2306220f230a2210230f2a352a352e0a44008800880088008800880088008800880088008800880088008c00880088008800e3008800fe01880088008800880088008800880088005d03880088008800880088008800880088008800880088008800880088008800880088008800880088008800900488008800880088004a078800880088008800b6088800d1098800880088008800880088003bf7a10a22133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68051a7e0c221f69221b35221c361a760c2221692b2b2b6a0b0200302d3c342d22281a660c0c5029352a363b2b2b6a293b692715f74a0a1a550c221569221437221523092935292829a09103082a3b3b2829e302c52b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051ab80b1ab90b1aba0b0c291ab90b0c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501a9c0b103b503b502c3b3b2829e35022181a8f0b0c641a8e0b221622186a0b0200312d2b221d1a820b0c5029352a36281a2b2b6a2a362b3822122b22112c221268053b2d2b6a293b692710f72f09221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051aa30a1aa40a1aa50a0c291aa40a0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a870a103b503b502c3b3b2829e35022171a7a0a0c64221723062218230a2219230f2a352a350b02003b0b02003b2a2226222622231a620a0c5029352a363d1a5c0a22271a5b0a0c030d2a2f6929250726061e285002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270cf7d007221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a44091a45091a46090c291a45090c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a2809103b503b502c3b3b2829e35022171a1b090c641a2e0922191a2d09221a1ae4080c1a2809221a690b02002219221d2e2c221e22200c5029352a360b02002c2a222322251a0a090c5029352a362f2b692a362b3822172b22162c221768053d2d2b6a293b692715f79d06221323062214230a2215230f2a352a35221837221923092935292829a09103082a3b3b2829e302c52b35293ba003ac221c3a221d2307221e2308221f230a2220230e2221230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022263a22272307222823082229230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222c3a222d2306222e230a222f230e2230230f2b352e352b352d35302c2e2c2e68051a01081a02081a03080c291a02080c3b3e3b3b2d68053c3b2b2f6b223a38223b230c2a3b3b3ce3502b2a0c501ae507103b503b502c3b3b2829e350221c1ad8070c64221c37221d23092a352a35292829a09103032902012a29283ba003e3222137222223092935292829a09103092a3b3b2829e35002c62b35293ba003ac22253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e68051a07071a08071a09070c291a08070c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c501aeb06103b503b502c3b3b2829e35022251ade060c50503c6602013b1afb062224690b02001af6062d22282c1af3060c5029352a362a2a692811222a1ae7060c222a2306222b230a222c230f2a352a350b02003b1ad3062235690b02001abe062d22392c1abb060c5029352a362a2a6928111ab906223c1a8c060c030d29316929250926081e31500238293169293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c362d3822132b22122c22136805220d2d452a4650260526075029352a3629362a3822222b22212c22226805220e2e693e2b22182c6b293b692726f7e303221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a57051a58051a59050c291a58050c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a3b05103b503b502c3b3b2829e35022171a2e050c64221723062218230a2219230f2a352a350b02003b0b02003b2a222522272226222622261a46050c5029352a363d1a0c0522271a0b050c030d2a2f6929250726061e2c5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a363f2b2b6a293b69270ff777021ade04221569221437221523092935292829a09103082a3b3b2829e302c52b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051ae5031ae6031ae7030c291ae6030c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501ac903103b503b502c3b3b2829e35022181abc030c641aff03221622186a0b0200312d2b221d1aaf030c5029352a36281a2b2b6a2a362b3822122b22112c221268053b2d2b6a293b692710f75c01221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051ad0021ad1021ad2020c291ad1020c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501ab402103b503b502c3b3b2829e35022171aa7020c64221723062218230a2219230f2a352a350b02003b0b02003b2a2226222622221acf020c5029352a363d1a890222271a88020c030d2a2f6929250726061e285002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270c221437221523092a352a35292829a09103032902012a292830a003e0221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051a58011a59011a5a010c291a59010c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501a3c01103b503b502c3b3b2829e350221d1a2f010c646602013b221a37221b23092a352a35292829a09103032902012a290a440088008800880088008800880088008800880088008800880088008800880088008e00880091008800880088008800880088008800880094008800880088008800880088008800880088008800880088008800880088008800880088008800880097009a0088008800880088009d008800880088008800a0008800a30088008800880088008800880029280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03273b2221222122212221222122212221faa80c293ba00304220c0209220c2afa9d221d7e236402013427181f0800|@9092,1,@1489,@16422,@9093,@9010,@16423,@16424,@9095,@16442,@8817,@8818,@8820,@8824,@8827,@8830,@16443,@9109,@9114,@9079,@9016,@9117,@9009,@16449,@9118,@16451,@8992,@8993,@8990,@16452,@9039,@9120,@16455,@16456,@9122,@9088,@9091| 16422:D3,184|fb042b0a440088008800880088008800880088008800880088008800880088008800880088008e00880091008800880088008800880088008800880094008800880088008800880088008800880088008800880088008800880088008800880088008800880097009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@8975,1,@1490| 16423:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@8975,1,@1491| 16424:D10,172|fb1929363a2a3623062b36230a2c36230e2d36230f2b352e352b352d35302c2e2c2e6805220c3b3bef293ba00304fa88024929282ab1292808b1293cb2293fb429fa79a503043b500203fa74103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f34ec503f31b1fa4a3f2e2c282aec502c95502c270829fa46fa480c29fa480c3b3e3b3b2d68053c3b2b316b22103638221136230c2a3b3b3ce3502b2a0c50fa2a271242000000|@9094,1,@1492,@9043,16777215,@4054,@8818,@8820,@8979,@4517| 16425:D24,1368|fb5b2b372c23092935292829a09103082a3b3b2829e302be2b35293ba003a62f3a30230731230832230a33230e34230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022103a22112307221223082213230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e68051acc041acd041ace040c291acd040c3b3e3b3b2d68053c3b2b2f6b2224382225230c2a3b3b3ce3502b2a0c501ab004103b503b502c3b3b2829e3502f1aa4040c640b03003b2a1a9e040c5029352a362b372b2b2b6a3c2a22101a8f040c1a8f042215690b02001a8a042d22152c1a87040c5029352a362a22162b1a7e040c281122171a7a040c221737221823092a352a35292829a09103032902012a29280ca0f87501220d3ba003033b024f221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e68051a32041aff031a00040c291a2b040c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c2710221d37221e23092935292829a09103082a3b3b2829e302c52b35293ba003ac22213a22222307222323082224230a2225230e2226230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222b3a222c2307222d2308222e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022313a223223062233230a2234230e2235230f2b352e352b352d35302c2e2c2e68051a36031a37031a38030c291a37030c3b3e3b3b2d68053c3b2b2f6b223f382240230c2a3b3b3ce3502b2a0c501a1a03103b503b502c3b3b2829e35022211a0d030c640b02001a1503222a22262c1a11030c5029352a36222835222937222a392c362d382d2b2e2c2f6805221730221a332d680528062a69222f2a452c462712f7a4021af0022222690b02002c220d22132215220f22282f22271add020c5029352a36222237222323092a352a35292829a09103032902012a0b02002c3da0f80801222a37222b23092935292829a09103092a3b3b2829e35002c62b35293ba003ac222e3a222f2307223023082231230a2232230e2233230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022383a22392307223a2308223b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223e3a223f23062240230a2241230e2242230f2b352e352b352d35302c2e2c2e68051ad9011ada011adb010c291ada010c3b3e3b3b2d68053c3b2b2f6b224c38224d230c2a3b3b3ce3502b2a0c501abd01103b503b502c3b3b2829e350222e1ab0010c50501ada012233691ad801223222306a0b02002d2d2b22351acc010c5029352a36332b452a4650260a0206293b4532465029352a36222c37222d23092a352a35292829a09103032902012a0b02002c2842a003fb223437223523092935292829a09103092a3b3b2829e35002c02b35293ba003a722383a22392307223a2308223b230a223c230e223d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022423a22432307224423082245230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022483a22492306224a230a224b230e224c230f2b352e352b352d35302c2e2c2e6805faa9faabfaad0c29faad0c3b3e3b3b2d68053c3b2b2f6b2256382257230c2a3b3b3ce3502b2a0c50fa91103b503b502c3b3b2829e3502238fa850c5050fabc223c22396a0b020022402d2b223efaa80c5029352a36322b452a465026090206293b4532465029352a36223835223937223a392c362d382d2b2e2c2f6805221b2212693b063b2c2c3b220d2e68063b2a6922412a452e462724271a1f06000000|@9096,1,@1493,@8817,@8818,@8820,@8824,@8827,@8830,@8966,@9015,@16427,@9039,@8993,@8998,@8990,@9097,@8979,@16428,@9098,@16435,@16436,@9109,@16426| 16426:D4,28|fb0b0b02002e3b3b2f362d3137fa190c5029352a362a2a6927054200|@9112,1,@1507,@9111| 16427:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1494| 16428:D3,28|fb042b3da003033c020e2b2842a003033c02052b2a362c8042000000|@8975,1,@1495| 16429:D9,84|fb15fa5c33fa5d2efa5e0c3035313632372ffa580c0b0200220e2a32220c30fa4f0c5029352a36220c35220d37220e392c362d382d2b2e2c2f6805fa370622162a332d2217221a680622122a452c46270f1f0800|@9100,1,@1496,@9101,@8915,@9010,@9041,@9102,@9099| 16430:D3,64|fb022b2826a003033c020d2b2806a003033c02042b2818a003033c021f2b2820a003033c02162b2821a003033c020d2b2818a003033c02042b283aa042000000|@8975,1,@1497| 16431:D19,1016|fb452d372e23092a352a35292829a09103032902012a292826a0f82901310346323a33230634230a220c230e220d230f2b352e352b352d35302c2e2c2e68051ac2031ac3031ac4030c291ac3030c3b3e3b3b2d68053b3b2b2f6b2217230c2a2a0c50260f02023b5032373323092935292829a09103082a3b3b2829e302c52b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a10031a01031a02030c291a09030c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501aec02103b503b502c3b3b2829e350220d1adf020c646602013b1ada02220d690b02001ad5022d22102c1ad2020c5029352a362a22112b1ac9020c221137221223092a352a35292829a09103032902012a0b02002c2825a0f82201221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051aee011adf011ae0010c291ae7010c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501aca01103b503b502c3b3b2829e350221d1abd010c641acc012220690b02002c222222212c1ac1010c5029352a362a68011ab9010622152b2b22196b2216352217372218392f3630382d2b2e2c2f6805221330452a4650261302121a8f0106333b2b220e6b2b2a45220c46505129352a36221b37221c23092a352a35292829a09103032902012a29283ea0f80d01222037222123092935292829a09103082a3b3b2829e302bf2b35293ba003a722243a22252307222623082227230a2228230e2229230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222e3a222f2307223023082231230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022343a223523062236230a2237230e2238230f2b352e352b352d35302c2e2c2e6805fa9afa8cfa8e0c29fa960c3b3e3b3b2d68053c3b2b2f6b2242382243230c2a3b3b3ce3502b2a0c50fa7a103b503b502c3b3b2829e3502224fa6e0c640b020022292a222922292229fa7e0c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805223130452a462710020a2f3b6922222a45304664271c1f05|@9104,1,@1498,@9105,@8818,@8820,@9106,@8817,@8824,@8827,@8830,@16433,@8992,@8993,@8998,@16434,@9046,@9103,@9102| 16432:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa1d0cfa1e2a692b2a6966650202fa17420000|@8826,1,@1499,@9106,@5091,@8825| 16433:D3,28|fb042b283ea003033c02042b2825a003033c02052b2a362c80420000|@8975,1,@1500| 16434:D3,20|fb042b283ea003033c02052b2a362c8042000000|@8975,1,@1501| 16435:D3,20|fb042b2842a003033c02052b2a362c8042000000|@8975,1,@1502| 16436:D11,100|fb1e0b03003b2afa670c5029352a362b372b2b2b6a3c2a3337fa590cfa5a220c690b0200fa562d220f372cfa530c5029352a362a2210372bfa4a0c2811221137fa460c0b0200221630220d220f322219362f221b37fa350c5029352a362a2a6927164200|@9108,1,@1503,@8966,@9015,@16437,@9039,@8993,@8998,@8990,@9098| 16437:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1504| 16438:D11,320|fb311a47012f692e0c29352a362e372f23092a352a35292829a09103032902012a293da0f8090133373423092935292829a09103082a3b3b2829e302bf2b35293ba003a7220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805fa8efa90fa920c29fa920c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50fa76103b503b502c3b3b2829e350220efa6a0c640b0200221422142b2214fa600c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805221b30452a462710020a2f3b69220c2a4530466427081f040000|@9110,1,@1505,@16439,@8817,@8818,@8820,@8824,@8827,@8830,@9109| 16439:D3,16|fb042b3da003033c02052b2a362c8042|@8975,1,@1506| 16440:D16,216|fb250b03003b2afadb0c5029352a362b372b2b2b6a3b2a220cfacd0cface2211690b0200faca2d22112cfac80c5029352a362a22122bfac00c3434342215fabc0c0b0200221a031f221637221723092a352a35292829a09103032902012a292811a091270502013b03033c020222190308293b452f4650022e28112217fa810cfa82221dfa82221afa820c0b02002220221c332cfa7a0c5029352a362a6801312a452b4650260829352a363035313732392c362d382d2b2e2c2f6805fa5606220f2a332d22122227221a680722212a452c46271e1f060000|@9113,1,@1508,@8966,@9015,@16441,@9039,@8993,@8998,@9041,@8990,@9045,@8915,@9010,@9046,@9099| 16441:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1509| 16442:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@8975,1,@1510| 16443:D4,28|fb0b0b02002e3c3c2f362d3137fa190c5029352a362a2a6927054200|@9112,1,@1511,@9111| 16444:D15,364|fb391a73012e690b02001a6f012d322c1a6d010c5029352a362a2a692b342c1a62010c3437220c23092a352a35292829a09103032902012a0b02002c2825a0f80f01221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805faa9faabfaad0c29faad0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50fa91103b503b502c3b3b2829e3502217fa850c64fa852219690b02002c221c221c2cfa7b0c5029352a362a68012215352216372217392d362e382d2b2e2c2f6805221130452a465026110206293b4534465029352a363c2a220d2d6b22182a452b4627131f0500|@9115,1,@1512,@16446,@9116,@8993,@8998,@8817,@8818,@8820,@8824,@8827,@8830,@16445,@9046| 16445:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@8975,1,@1515| 16446:D3,20|fb042b2825a003033c02052b2a362c8042000000|@8975,1,@1513| 16447:D3,28|fb022b2811a003033c020d2b2806a003033c02042b2818a042000000|@8975,1,@1514| 16448:D3,28|fb022b2832a003033c020d2b2806a003033c02042b2818a042000000|@8975,1,@1516| 16449:D3,200|fb042b2806a003033c02042b2818a003033c02b22b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c804200|@8975,1,@1517| 16450:D7,100|fb162c372d23092a352a35292829a09103032902012a292818a0033d0b0200fa4f34220d2cfa4d0c5029352a362a220e2bfa450c0b02002d2a22132213fa3d0c5029352a363b063c32322c6b292d6922172a452d46270e0205323b45344627051f040000|@9119,1,@1518,@8992,@8993,@8998,@9118| 16451:D3,28|fb042b2811a003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1519| 16452:D3,28|fb042b2811a003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1520| 16453:D9,96|fb190b0200fa65fa67342cfa670c5029352a362a220c2bfa5f0c2809220dfa5c0cfa5d220d690b0200220d22122e2c221222140c5029352a363135323733392c362d382d2b2e2c2f6805303b316a2a221122112c6b221c2a452c4627151f0700|@9121,1,@1521,@9116,@9079,@8993,@8998,@8990,@16454| 16454:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@8975,1,@1522| 16455:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@8975,1,@1523| 16456:D4,28|fb0b0b02002e3c3b2f362d3137fa190c5029352a362a2a6927054200|@9112,1,@1524,@9111| 16457:D10,96|fb1afa682e690b0200fa652d322cfa640c5029352a362a2a692b342cfa5a0c2809220cfa570cfa58220e690b02002c221122112cfa4e0c5029352a363235333734392c362d382d2b2e2c2f680528052a2210336b221b2a452b4627161f050000|@9123,1,@1525,@16459,@8992,@8993,@8998,@8990,@16458,@9046| 16458:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@8975,1,@1527| 16459:D3,20|fb042b2809a003033c02052b2a362c8042000000|@8975,1,@1526| 16460:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1528,@9091| 16461:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1529| 16462:D11,256|fb2e2b372c23092a352a35292829a09103032902012a2932a003d630373123092935292829a09103082a3b3b2829e302bd2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa57fa59fa5b0c29fa5b0c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa3f103b502c3b3b2829e35034fa36220c7d0d66020b31fa300c2932fa2f337e0a27054300|@9124,1,@1530,@8817,@8818,@8820,@8824,@8827,@8830,@9025,@8977| 16463:D3,8|fb022b2835a04200|@9126,1,@1531| 16464:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1532| 16465:D3,28|fb042b280fa003033c02042b281aa003033c02052b2a362c80420000|@8975,1,@1533| 16466:D3,12|fb042b2a370c502b2a362c80|@9127,1,@1534| 16467:D27,1516|fb481af3052f1af305321af3050c1af305306931230632230a33230f2a352a35220d37220e23092a352a35292829a09103032902012a0b02002c2822a0f85c01221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051a2a051a2b051a2c050c291a2b050c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501a0e05103b503b502c3b3b2829e35022191a01050c64221a36221b370b03003b2a1af5040c5029362a371af004312b6a2b2a326a1aea042223692a22252b222422242223360c281a22261ad8040c1ad8042226690b020030222b2e2c222b222b222a0c502935222b3a222c230e2a352a35280f22301aad040c22272c22262d222768053c30220e2c6b221d2a452b4650261df736042c2835a0f83d01221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051ac7031ac8031ac9030c291ac8030c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501aab03103b503b502c3b3b2829e35022191a9e030c64221a36221b370b03003b2a1a92030c5029362a371a9d03312b6a2b2a326a1a97032223692a22252b222422242223360c22253a2226230e2a352a3522202b221f2c22206805280f222b1a60030c3b063e312d2c6b22182a452d46502618f7f2021a59032215690b02001a54032d221b2c1a51030c5029352a36221b2306221c230a221d230f2a352a35222037222123092a352a35292829a09103032902012a292821a0f89802222537222623092935292829a09103082a3b3b2829e302c52b35293ba003ac22293a222a2307222b2308222c230a222d230e222e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022333a22342307223523082236230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022393a223a2306223b230a223c230e223d230f2b352e352b352d35302c2e2c2e68051a44021a45021a46020c291a45020c3b3e3b3b2d68053c3b2b2f6b2247382248230c2a3b3b3ce3502b2a0c501a2802103b503b502c3b3b2829e35022291a1b020c64220f222a22101a3c020c222a37222b23092a352a35292829a09103032902012a29282fa00321222f3a2230230e2a352a3522172b22162c221768053b063e3b2c2c6b2706f72f011aff01222f69223037223123092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a60088008800880088008800880088008800880088008800880088008800a9008800880088008800ac008800880088008800880088008800880029283da0021f3c021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c034a2236362237370b03003b2afafa0c5029362a371a2101312b6a2b2a326a2922402211223f223f223e360c22403a2241230e2a352a3522282b22272c222868053b063e302c2c6b271102140b020022392239332c2239223922380c50293566270622303a2231230e2a352a35282f2235faa20c221a35221b37221c392b2f2c302d68053b063b063b063b06220d22242d2d303222283068083b2a69222a2a45304650261a02123b063f220d2b220e6b22122a45220d465051261029352a362a2a2217221a2218221d2215fa70221a7b0919000000|@9130,1,@1536,@9131,@9132,@9010,@16469,@8817,@8818,@8820,@8824,@8827,@8830,@8966,@16470,@16471,@8990,@16472,@16473,@16474,@16475,@8992,@8993,@8998,@16476,@16477,@9129| 16468:D3,36|fb022b2822a003033c020d2b2806a003033c02042b2818a003033c02042b2835a0420000|@8975,1,@1537| 16469:D3,28|fb042b40a003033c020e2b2809a003033c02052b2a362c8042000000|@8975,1,@1538| 16470:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1539| 16471:D3,44|fb042b280fa003033c02042b281aa003033c02162b40a003033c020e2b2809a003033c02052b2a362c804200|@8975,1,@1540| 16472:D3,36|fb042b280fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c80420000|@8975,1,@1541| 16473:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1542| 16474:D3,36|fb042b280fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c80420000|@8975,1,@1543| 16475:D3,36|fb042b2821a003033c02162b40a003033c020e2b2809a003033c02052b2a362c80420000|@8975,1,@1544| 16476:D3,44|fb042b280ba003033c02042b282fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c804200|@8975,1,@1545| 16477:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1546| 16478:D11,632|fb2e2e372f23092a352a35292829a09103032902012a2940a0f8280133373423092935292829a09103082a3b3b2829e302c52b35293ba003ac220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e68051acc011acd011ace010c291acd010c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c501ab001103b503b502c3b3b2829e350220e1aa3010c640b0200220f221222102c22141a96010c5029352a363b063b0622182d3c2e2e2e68063d2a69221935221a37221b39303631382d2b2e2c2f68052f2a222022202220222022201a610122217b0921292809a0f8200133373423092935292829a09103082a3b3b2829e302bf2b35293ba003a7220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805fa9efaa0faa20c29faa20c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50fa86103b503b502c3b3b2829e350220efa7a0c640b0200220f221222102c2214fa6e0c5029352a363b063b0622182d3b2e2e2e68063d2a69221935221a37221b39303631382d2b2e2c2f68052f2a22202220222022202220fa3a22217b092134220e45220d4627051f070000|@9133,1,@1547,@8817,@8818,@8820,@8824,@8827,@8830,@9004,@9129| 16479:D4,20|fb0a3b2e302c363030220cfa13327b0907000000|@9135,1,@1548,@9134| 16480:D12,608|fb2f1a6702316930373123092a352a35292829a09103032902012a292830a003f2220c37220d23092935292829a09103082a3b3b2829e302c52b35293ba003ac22103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e68051ab1011ab2011ab3010c291ab2010c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c501a9501103b503b502c3b3b2829e35022101a88010c643b2212221222122212221222121a7a0122137b0913220c37220d23092a352a35292829a09103032902012a292823a003033c0204292836a00324220d2212220c2212221222150c3b2214221422142214221422141a33010c2a2a696502fe221137221223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03350b02002212221a3c22182d221b221dfa590c5029352a363b063b2c2b2d6b3b221f221f221f221f221f221ffa390c2a2a69270802013b2705270527061f07|@9136,1,@1549,@16481,@8817,@8818,@8820,@8824,@8827,@8830,@9134,@8984| 16481:D3,208|fb042b2836a003033c02b72b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02042b2830a003033c02052b2a362c8042000000|@8975,1,@1550| 16482:D3,196|fb022b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d2b2823a003033c02042b2836a04200|@8975,1,@1551| 16483:D18,448|fb302d23062e230a2f230f2a352a3532373323092935292829a09103082a3b3b2829e302c42b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a21011a22011a23010c291a22010c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501a0501103b503b502c3b3b2829e350220dfaf90c64220d2306220e230a220f230f2a352a350b02003b0b0200fae2fae4221b2cfae30c5029352a362a221c2bfadb0c2811221dfad80cfad9221d690b0200222222222e2c2223facd0c5029352a363135323733392c362d382d2b2e2c2f6805fab8062a22112b2212220c68053dfa92222dfaaa0c030e2922166929251726161e6950023529221669293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965221f30221e31221f680522192b452a4650260326155029352a3629362a3822142b22132c221468053c2e2b6a27161f04000000|@9140,1,@1552,@8817,@8818,@8820,@8824,@8827,@8830,@9116,@9079,@8993,@8998,@8990,@16484,@9004,@9139,@9016| 16484:D3,28|fb042b3da003033c02042b280fa003033c02052b2a362c8042000000|@8975,1,@1553| 16485:D4,8|fb02fa1010000000|@9146,1,@1554,@9145| 16486:D3,8|fb022b2833a04200|@9150,1,@1555| 16487:D12,380|fb2e2e23062f230a30230f2a352a3533373423092935292829a09103082a3b3b2829e302bf2b35293ba003a7220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805fadefae0fae20c29fae20c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50fac6103b503b502c3b3b2829e350220efaba0c64220e2306220f230a2210230f2a352a350b02003b0b02003b2a221b221d221c2220221dfa970c5029352a363dfa92221efa920c030d2a2f6929250726061e295002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a3629362a3822142b22132c221468053b2e2b6a27161f050000|@9153,1,@1556,@8817,@8818,@8820,@8824,@8827,@8830,@9152,@9125,@9016| 16488:D23,1140|fb3e1a7b0430690b02001a77042d342c1a75040c5029352a362a220c2b1a6c040c2821220d1a68040c1a6804220f69220e37220f23092a352a35292829a09103032902012a29282fa0033322133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68053b3b2b6a3b061a22042a2c6a270cf74601221337221423092a352a35292829a09103032902012a290a440088008800880088008800880088008800880088008800880088008800880088008e0088009100880088008800880088008800880088009400880088008800880088008800880088008800880088008800880088008800880088008800880088008800970088008800880088009a0088008800880088009d008800a00088008800880088008800880029280ca002133c02103c020d3c020a3c02073c02043c02013c033e221823062219230a221a230f2a352a35221b221e2211221f1a46030c221e3a221f230e2a352a35322b312c3268053b2f2b6a3b061a26032a2c6a270d02491a2403221a690b02001aff022d221e2c1afc020c5029352a362a221f2b1af3020c280922201aef020c1aff022222690b0200222222252e2c22271af2020c5029353b06322a2c6a270e2705282f22151ac5020c221537221623092a352a35292829a09103032902012a2940a0f80301221a37221b23092935292829a09103082a3b3b2829e302c52b35293ba003ac221e3a221f2307222023082221230a2222230e2223230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022283a22292307222a2308222b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e3a222f23062230230a2231230e2232230f2b352e352b352d35302c2e2c2e68051a26021a27021a28020c291a27020c3b3e3b3b2d68053c3b2b2f6b223c38223d230c2a3b3b3ce3502b2a0c501a0a02103b503b502c3b3b2829e350221e1afd010c641afc012220690b0200222022232e2c22251acf010c5029352a362a3c2b6a296801270bf70601292809a003ff221a37221b23092935292829a09103082a3b3b2829e302c42b35293ba003ac221e3a221f2307222023082221230a2222230e2223230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022283a22292307222a2308222b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e3a222f23062230230a2231230e2232230f2b352e352b352d35302c2e2c2e68051a1d011a1e011a1f010c291a1e010c3b3e3b3b2d68053c3b2b2f6b223c38223d230c2a3b3b3ce3502b2a0c501a0101103b503b502c3b3b2829e350221efaf50c64faf92220690b0200222022232e2c2225fac90c5029352a362a3b2b6a296801270b02013b2811221cfa990c0b0200221d222022222c22222221fac40c5029352a362216352217372218392c362d382d2b2e2c2f6805220c9291031d220c3529352a362b373b063b06220d2e2e2e2e2e68063d2a692707020130220d3ba0913b063b063b063b063b063b06221b313322283133220c222b33220c3434680c22322a453346272b1f07|@9154,1,@1557,@16490,@8992,@8993,@8998,@8990,@16491,@4062,@9005,@16492,@16493,@9004,@8817,@8818,@8820,@8824,@8827,@8830,@16494,@16489,@9128| 16489:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1563| 16490:D3,36|fb042b2811a003033c020c2b40a003033c02042b2809a003033c02052b2a362c80420000|@8975,1,@1558| 16491:D3,28|fb042b280ba003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1559| 16492:D3,36|fb042b2809a003033c02172b280ba003033c02042b282fa003033c02052b2a362c804200|@8975,1,@1560| 16493:D3,36|fb042b2831a003033c02172b280ba003033c02042b282fa003033c02052b2a362c804200|@8975,1,@1561| 16494:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1562| 16495:D3,8|fb022b2815a04200|@9156,1,@1564| 16496:D46,3232|fb482e353003033c02c431373223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c2705f84b0b31373223092a352a35292829a09103032902012a220d3a220e2306220f230a2210230e2211230f2b352e352b352d35302c2e2c2e6805330a4400880093008800880088008800880088008800880088008800040388008800880088008800160388002b0488008800880088008800880088009105a10588008800880088008800b1052a07880088003a07880088008800880088008800880088008800880088008800880088008800880088008800880097088800ac0988008800880088008800880022141a140b452a46f77a0a221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a740a1a750a1a760a0c291a750a0c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a580a103b503b502c3b3b2829e350221b1a4b0a0c641a4a0a221d691a480a2218690b02002d2d2b221e1a3e0a0c502935222137222223092a352a35292829a09103032902012a292842a0f80001222637222723092935292829a09103092a3b3b2829e35002c62b35293ba003ac222a3a222b2307222c2308222d230a222e230e222f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022343a22352307223623082237230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223a3a223b2306223c230a223d230e223e230f2b352e352b352d35302c2e2c2e68051a5e091a5f091a60090c291a5f090c3b3e3b3b2d68053c3b2b2f6b2248382249230c2a3b3b3ce3502b2a0c501a4209103b503b502c3b3b2829e350222a1a35090c50501a3f09222b691a3d09222922276a0b02002d2d2b222c1a25090c502935270802013b284122281a21090c1a2109222a69292228222b1a1a09222922291a17090c222a3a222b230e2a352a35221f2b221d2c221d6805280f22301aee080c502e1af8080c3b062a2c22123c220e2e68063b2a6922302a452e46271cf70908221822163b2c221822171ad40822187b0819221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051af1071af2071af3070c291af2070c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501ad507103b503b502c3b3b2829e350221b1ac8070c641af307221c221b6a0b020022202d2b221d1abe070c5029352a3629362a3822142b22122c2212680528092e2b6a22222a452b46270ef7e206221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051adc061add061ade060c291add060c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501ac006103b503b502c3b3b2829e350221b1ab3060c640b03003b2a1add060c5029352a362b370b03003b2a1acd060c5029352a362b372227352228361ac00634342e6b2b2b2b6a2f2f2f6a3c2a222b1ab1060c1ab10622302d1a8b06222f222f68060b020022342d2b22311a65060c5029352a3629362a3822282b22262c2226680522112210692219221869280c302c2c2f680522382a452d462724f77c0522172216221622161a610622167b061922172216221622161a510622167b0619221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a56051a57051a58050c291a57050c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a3a05103b503b502c3b3b2829e350221b1a2d050c64221936221a370b03003b2a1a51050c5029362a371a5c05312b6a2b2a326a1a5605222769292b22281a2005222622261a1d050c281a22281a09050c1a3d052221316a292f220e6a1a3505222c69292b222d1af704222b222b1af4040c222c3a222d230e2a352a3522212b221f2c221f6805280f22321acb040c50331a05050c2f1a04050c3b062a2c3c2f2d680528132a6922332a452f46271ff7e30322172216221622161ac80422167b0619221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051acd031ace031acf030c291ace030c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501ab103103b503b502c3b3b2829e350221b1aa4030c64221b37221c23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a0033c0b0200220c2a222522271ac7030c5029352a3629362a3822182b22162c221668053b063b063b06302d2d2d2d680528142a69222a2a452f46270d0211281822211a95030c50221d1a12034533462709f77602221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a70021a71021a72020c291a71020c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a5402103b503b502c3b3b2829e350221b1a47020c641aaa02221a22186a0b020022202d2b221d1a3d020c5029352a3629362a3822142b22122c22126805281a2e2b6a22222a452b46270ef76101221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a5b011a5c011a5d010c291a5c010c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a3f01103b503b502c3b3b2829e350221b1a32010c640b03003b2a1a5c010c5029352a362b370b03003b2a1a4c010c5029352a362b372227352228361a730134342e6b2b2b2b6a2f2f2f6a3c2a222b1a30010c1a60012231690b02002c3b2b2236331a0101223522351a4e010c5029352a3629362a3822282b22262c2226680522112210692219221869281c302c2c2f680522382a452d462724270f02810b03003b2afad50c5029352a362b371a0e012b2b6a0b03003b2afac00c5029352a372214352215362a2a336a0b02002c221e2b221ffa91221d221dfae70c5029352a36fae306fae406fae506fae62b2dfae62d6805280e2a693b062a31312c3b6805293b692211221169221a221969281c2c2c2c220e680522262a45220c462721641f07|@9158,1,@1565,@4982,@8817,@8818,@8820,@8824,@8827,@8830,@16497,@16498,@9109,@16500,@16501,@8990,@16502,@8984,@9159,@9161,@9095,@16506,@8966,@16511,@9015,@16512,@9279,@16600,@16601,@16602,@16603,@9257,@9258,@9291,@9019,@16605,@16606,@16607,@9293,@16610,@9172,@5064,@9103,@9295,@9157,@8997| 16497:D3,28|fb042b2841a003033c02042b2842a003033c02052b2a362c80420000|@8975,1,@1566| 16498:D11,100|fb1e0b03003b2afa670c5029352a362b372b2b2b6a3c2a3336fa590cfa5a220c690b0200fa562d220f362cfa530c5029352a362a2210362bfa4a0c2811221136fa460c0b0200221630220d220f323b2f221b36fa370c5029352a362a2a69271642000000|@9108,1,@1567,@8966,@9015,@16499,@9039,@8993,@8998,@8990,@9098| 16499:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1568| 16500:D3,20|fb042b2841a003033c02052b2a362c8042000000|@8975,1,@1569| 16501:D4,28|fb0b0b02002e3b3b2f362d3137fa190c5029352a362a2a6927054200|@9112,1,@1570,@9111| 16502:D3,20|fb042b280fa003033c02052b2a362c8042000000|@8975,1,@1571| 16503:D11,520|fb2e2e372f23092a352a35292829a09103032902012a292830a003f133373423092935292829a09103092a3b3b2829e35002c62b35293ba003ac220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e68051a5b011a5c011a5d010c291a5c010c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c501a3f01103b503b502c3b3b2829e350220e1a32010c5050220f220f220f220f220f220f1a240122107b081033373423092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c032ffa5d2212690b02002c22143c22172d2216221622190c502935221622162216221622162216fa340c2a2a69270602013b270527051f0600|@9160,1,@1572,@8817,@8818,@8820,@8824,@8827,@8830,@9159,@16504| 16504:D3,196|fb042b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02042b2830a003033c02052b2a362c8042|@8975,1,@1573| 16505:D4,32|fb082b929103142b352c363b062b2a692bfa190c2a2a69270502013b42000000|@4648,1,@1574,@9161| 16506:D4,28|fb090b02002e2a2e362f37fa1b0c5029352a362a2a69270542000000|@9163,1,@1575,@9162| 16507:D19,1192|fb442c372d23092a352a35292829a09103032902012a292826a003de31373223092935292829a09103082a3b3b2829e302c52b35293ba003ac220c3a220d2307220e2308220f230a2210230e2211230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022163a22172307221823082219230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e68051afc031afd031afe030c291afd030c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c501ae003103b503b502c3b3b2829e350220c1ad3030c646602013b1ace03220c690b02001ac9032d220f2c1ac6030c5029352a362a22102b1abd030c221037221123092a352a35292829a09103032902012a292811a0f83302221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051add021ade021adf020c291ade020c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501ac102103b503b502c3b3b2829e35022191ab4020c64221937221a23092a352a35292829a09103032902012a292826a003e0221e37221f23092935292829a09103082a3b3b2829e302c52b35293ba003ac22223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e68051ae4011ae5011ae6010c291ae5010c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c501ac801103b503b502c3b3b2829e35022221abb010c646602013b0b02001ab701222522242c1ab3010c5029352a362215352216372217392c362d382d2b2e2c2f68051a9e01061a9e01061a9e0106332b2d220c2d6805280e2a691a8a010622222a3b3222252f680622322a453146271cf73801292825a0f81e01221537221623092935292829a09103082a3b3b2829e302bf2b35293ba003a722193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e6805faa4faa6faa80c29faa80c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c50fa8c103b503b502c3b3b2829e3502219fa800c64fa9c221c692219370b02002d221f2e2cfa900c5029352a362211352212372213392c362d382d2b2e2c2f6805306801fa6506221a2a2c2e221dfa6b6806222a2a452d4627140213fa4d06312a3b3334fa55680622182a4532466527121f04|@9164,1,@1576,@8817,@8818,@8820,@8824,@8827,@8830,@16509,@9116,@8993,@8998,@5064,@9103,@9165,@16508,@9046,@4982| 16508:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1579| 16509:D3,28|fb042b2811a003033c02042b2825a003033c02052b2a362c80420000|@8975,1,@1577| 16510:D3,4|fb023b42|@9166,1,@1578| 16511:D7,128|fb0d2b2a380c293ba003712c2b370c293ba003632d3b3bef293ca603352e3b3bef3c2aa80303fa64103b502f2805dcfa5f2a3bdb29fa5da003033c0212293b3bef3ca00309293ffa4b3f3ced02013b6602013bfa43061b0f273eba2b03033f02013b2a2ab8293db82d2a69220c2a6934360c2a27090202293564020229356442|@9167,1,@1580,@4023,@4064,@4132,@5064| 16512:D4,32|fb0c0b02002e2a2e362f3730383139323afa190c5029352a362a2a6927054200|@9169,1,@1581,@9168| 16513:D6,56|fb100b02003b2a220d220c220c220c220c220cfa2f0c5029352a363b06fa2906fa2a06fa27062a2f2d30302e680622112a452f46270a1f07|@9171,1,@1582,@9170,@9103,@4517| 16514:D26,1836|fb531a330731690b020032342e2c220e1a29070c5029352a360b03002e22112b1a1d070c5029352a362b3722163ba003043bf7650322163529352a362a2ea003033c02172a3b3bef2e3b3befa0030b2a3f2f3f313b3befed02013b03053b50f7c10122163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e6805220e3b3bef293ba003051ab306024a281f2ab1292808b1293cb2293fb4291aa306a503043b5002041a9d06103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a7d063f2d3f281fec5022163f2d282334ec502b95502b2707293b3bef293ba003051a6706024b292824b1292808b1293cb2293fb4291a4b06a503043b5002041a4506103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a27063f2e2c2824ec502c95502c2708293b3bef22103b3bef2a3ba0030422110252293ba003032b024a2a2ab1292808b1293cb2293fb4291ae705a503043b5002041ae105103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b122193f2e2c220cec502c95502c2708293b3bef293ba003051aae05024e293db1292808b1293cb2293fb4291a8f05a503043b5002041a8905103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2827e4502c2a3cb12827e4502c95502c2708291a5e051a5f050c291a5e050c3b3e3b3b2d68053c3b2b220f6b222d38222e230c2a3b3b3ce3502b2a0c502619292da003043bf76d0122163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e6805220d3c1a10050c293b3bef293ba003051a0705024928102ab1292808b1293cb2293fb4291ad304a503043b5002041acd04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ad1043f2d3f2810ec50313f2d281434ec502b95502b2707293b3bef293ba003051ab404024b292826b1292808b1293cb2293fb4291a7c04a503043b5002041a7604103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a74043f2e2c2826ec502c95502c2708220f3c1a59040c2a3b3bef2a3b3bef2a3ba003032b0251293ba003032c02492a2ab1292808b1293cb2293fb4291a1304a503043b5002041a0d04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708291ae7031ae8030c291ae7030c3b3e3b3b2d68053c3b2b220f6b222d38222e230c2a3b3b3ce3502b2a0c271966221437221523092a352a35292829a09103032902012a292811a003e1221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051a1c031a01031a02030c291a15030c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501af802103b503b502c3b3b2829e350221d1aeb020c6466f709011ae602221a1ae5020c50221937221a23092a352a35292829a09103032902012a292838a003e0221e37221f23092935292829a09103082a3b3b2829e302c52b35293ba003ac22223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e68051a15021afa011afb010c291a0e020c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c501af101103b503b502c3b3b2829e35022221ae4010c646602013b27051ae501221c690b0200221d2d2b22212220222022201ad4010c5029352a362214352215372216392c362d382d2b2e2c2f68053b062216322c2c6b222837222923092a352a35292829a09103032902012a0b02002c283ea0f80401223037223123092935292829a09103092a3b3b2829e35002c02b35293ba003a722343a22352307223623082237230a2238230e2239230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350223e3a223f2307224023082241230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022443a224523062246230a2247230e2248230f2b352e352b352d35302c2e2c2e6805fad8fabefac00c29fad40c3b3e3b3b2d68053c3b2b2f6b2252382253230c2a3b3b3ce3502b2a0c50fab8103b503b502c3b3b2829e3502234faac0c505022212221692968010b02002c2a223b223b223b223b223b223bfaa20c5029352a36332b452a4650260a0207293b452211465029352a36332b692227352228372229392d362e382d2b2e2c2f6805223b30452a4627331f080000|@9173,1,@1583,@16515,@9174,@9239,@9247,16777215,@4054,@9248,@9249,@8818,@8820,@8979,@4569,@9250,@9251,@8817,@8824,@8827,@8830,@4154,@8977,@16554,@9172,@9170| 16515:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1584| 16516:D14,100|fb18fa6c2c30fa6c336805fa6b2ffa6c32fa6d0cfa6e30693235333634370b02002e2e2e34fa51fa5f220c302213fa5c0c5029352a360b020022122e2e2c221422192219fa2efa480c502212fa46fa482216fa2c0c2a22132a35452a364664270f1f0500|@9176,1,@1585,@16517,@9174,@9216,@9183,@9010,@16541,@8992,@9217,@9199,@9079,@9175| 16517:D33,2812|fb4b2937372a3723092a352a35292829a09103032902012a2e373a2f3723063037230a3137230e3237230f2b352e352b352d35302c2e2c2e6805330a4400880088008800880088008800880088003f0288008800880088008800880088008800880088008800880088008800880088008800880088008800880053026702c10351068800880088008800880088008800880088003109880088008800880088008800880088009c098800880088008800880088008800b009880088008800880088008800ab0a220f373722103723092a352a35292829a09103032902012a292826a003033c020d292806a003033c0204292818a0f869012214373722153723092a352a35292829a09103032902012a292826a02903f4221a3737221b3723092935292829a09103082a3b3b2829e302d72b35293ba003bd221e373a221f3723072220372308222137230a222237230e222337230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502228373a2229372307222a372308222b37230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e373a222f372306223037230a223137230e223237230f2b352e352b352d35302c2e2c2e68051a43091a44091a45090c291a44090c3b3e3b3b2d68053c3b2b2f6b223c3738223d37230c2a3b3b3ce3502b2a0c501a2509103b503b502c3b3b2829e350221e371a17090c646602013b221b3935221c3936221d39370b02002e2e2e22243722281afb08220d301af9080c5029352a361af408061af408061af408062d2b2d2f2d6805280e2a692e362f3822232b22212c22216805222d2d452a46271702181ad10822181ad0082217371ace080c5022161acb08452f462705f77b081ac4082210361ac2080c22122a452b4664f767081ab8082210361aae080c22122a452b4664f75308220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051ab4071ab5071ab6070c291ab5070c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501a9607103b503b502c3b3b2829e3502213371a88070c642213373722143723092a352a35292829a09103032902012a29282da003033b02133b221c221a38221b36221c39221d371a87070c2219373a221a37230e2a352a3522162b22142c22146805282d221f371a6b070c1a3b070628112a322e6b22232a452d462712f7f906220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051a5a061a5b061a5c060c291a5b060c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501a3c06103b503b502c3b3b2829e3502213371a2e060c642213373a221437230e2a352a352217373722183723092a352a35292829a09103032902012a29282ea0f80a01221c3737221d3723092935292829a09103082a3b3b2829e302d72b35293ba003bd2220373a22213723072222372308222337230a222437230e222537230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222a373a222b372307222c372308222d37230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502230373a2231372306223237230a223337230e223437230f2b352e352b352d35302c2e2c2e68051a3d051a3e051a3f050c291a3e050c3b3e3b3b2d68053c3b2b2f6b223e3738223f37230c2a3b3b3ce3502b2a0c501a1f05103b503b502c3b3b2829e3502220371a11050c642219342217220c22176805281b2a6922242a452b46270602641a2f05221d37690b03002d2a1a27050c5029360b02003b2a222737222b30222a38222b36222c391a10050c5029352a362227373a222837230e2a352a3522242b22222c22226805282e222d371adf040c1aaf0406280f322b332f680522312a452d462713270df76904220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051aca031acb031acc030c291acb030c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501aac03103b503b502c3b3b2829e3502213371a9e030c642213373722143723092a352a35292829a09103032902012a29282fa003202218373a221937230e2a352a3522152b22132c22136805281b2a692705f786011aa303221c690b0200221c39221d372e2c2220362221380c502935221d3737221e3723092a352a35292829a09103032902012a29280ba0f82c012222373722233723092935292829a09103082a3b3b2829e302d72b35293ba003bd2226373a22273723072228372308222937230a222a37230e222b37230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502230373a22313723072232372308223337230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502236373a2237372306223837230a223937230e223a37230f2b352e352b352d35302c2e2c2e68051a61021a62021a63020c291a62020c3b3e3b3b2d68053c3b2b2f6b22443738224537230c2a3b3b3ce3502b2a0c501a4302103b503b502c3b3b2829e3502226371a35020c643b222a222838222936222a39222b371a6d020c332a692228373a222937230e2a352a3522252b22232c222368051a0f02062819302b2d6b270c021e2222373a222337230e2a352a35221f2b221d2c221d68052816342b6a2705270a2219373a221a37230e2a352a3522162b22142c22146805282f221f371af1010c222130452b462710f78901220f373a2210372306221137230a221237230e221337230f2b352e352b352d35302c2e2c2e68051ad3011a70011a71010c291acc010c3b3e3b3b2d68053c3b2b2f6b221d3738221e37230c2a3b3b3ce3502b2a0c501aad012220361a7b010c22222a452212462711f71e011a9b012210361a65010c22122a452b4664f70a01220f373722103723092935292829a09103092a3b3b2829e35002d22b35293ba003b82213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e6805fa6bfa6dfa6f0c29fa6f0c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c50fa51103b503b502c3b3b2829e350221337fa440c5050281e2d6922152a452e462704020ffa91221036fa580c22122a452b4664270f4300|@9178,1,@1586,@8817,@8818,@8820,@8824,@8827,@8830,@8992,@9179,@5064,@9103,@9182,@9079,@9183,@9010,@4982,@9184,@9191,@9193,@9195,@8990,@16525,@9069,@9198,@16534,@9207,@9209,@8979,@9210,@9213,@9177| 16518:D11,268|fb180b02003032342c1a0c010c5029352a362a220e0c29929103142935293629353ca003033c020429353ba06502013b290304339102013b03c32c3b3bef293ba00304fad702403c2ab1292808b1293cb2293fb429fac9a503043b500203fac410292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2828e450343f2d280534ec502b95502b2707293b3bef293ba00304fa96024629282eb1292808b1293cb2293fb429fa7ba503043b500203fa7610292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa5b3f2e2c282eec502c95502c270829fa4ffa510c29fa510c3b3e3b3b2d68053b3b2b220c6b2215230c2a2a0c50260902023b502d332a35452a36466427071f08|@9181,1,@1587,@8993,@4133,16777215,@4054,@9180,@8818,@8820,@9106| 16519:D3,4|fb023b42|@9166,1,@1588| 16520:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1589,@5064,@9185| 16521:D9,264|fb352b3629352d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e6805220e37220f23092935292829a09103092a3b3b2829e35002c02b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa53fa55fa570c29fa570c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa3b103b503b502c3b3b2829e3502212fa2f0c5050220d2d221422137e13000000|@9192,1,@1590,@8817,@8818,@8820,@8824,@8827,@8830| 16522:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1591,@5064,@9194| 16523:D11,296|fb331a2f0130690b020030302e2c220c220e0c50293530373123092a352a35292829a09103032902012a29280ba003ee220c37220d23092935292829a09103092a3b3b2829e35002c02b35293ba003a722103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e6805fa6afa6cfa6e0c29fa6e0c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c50fa52103b503b502c3b3b2829e3502210fa460c50503b22142214221422142214fa3a0c322a69270402032e3b69270a1f06000000|@9196,1,@1592,@16524,@8817,@8818,@8820,@8824,@8827,@8830,@9195| 16524:D3,28|fb042b282da003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1593| 16525:D10,216|fb112d3b3bef293ba00304fad7024728072ab1292808b1293cb2293fb429fac8a503043b500203fac3103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faa43f2d3f2807ec50220c3f2d280b34ec502b95502b2707293b3bef293ba00304fa8f0248292819b1292808b1293cb2293fb429fa74a503043b500203fa6f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa523f2e2c2819ec502c95502c270829fa46fa480c29fa480c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f000000|@9197,1,@1594,@9068,16777215,@4054,@9066,@8818,@8820,@8979| 16526:D24,1196|fb4d30373123092a352a35292829a09103032902012a292839a003ef220c37220d23092935292829a09103092a3b3b2829e35002c62b35293ba003ac22103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e68051afd031afe031aff030c291afe030c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c501ae103103b503b502c3b3b2829e35022101ad4030c50501ad20322112a35452a36466466f79d031ac603220c691ac403220d690b02002c22122b1abb030c5029352a362a2a6922120c221437221523092a352a35292829a09103032902012a0b02002c2811a003f1221c37221d23092935292829a09103092a3b3b2829e35002c62b35293ba003ac22203a22212307222223082223230a2224230e2225230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222a3a222b2307222c2308222d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022303a223123062232230a2233230e2234230f2b352e352b352d35302c2e2c2e68051acd021ace021acf020c291ace020c3b3e3b3b2d68053c3b2b2f6b223e38223f230c2a3b3b3ce3502b2a0c501ab102103b503b502c3b3b2829e35022201aa4020c5050221a222022142f221f22210c502603f72101333b3bef3b2aa20386343b3bef3b2aa803041a8e02103b503b50220c3fdc1a86022a3bdb293b3bef293ca303032902013c2b3f1a75023f2dee293ba003052b3ca90203293ba8034222113b3bef3b2aa803041a4e02103b503b5022123fdc1a46022a3bdb293b3bef293ca303032902013c2b3f1a39023f2dee293ba003052b3ca50203293ba4270602013b270602013b0352221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051afc011ac5011ac6010c291af5010c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c50261002023b501ad201061ad201061ad20106220e2b2d22102d6805280e2a690b020022182d22142c22252225222b22291ab4010c5029352a36342b452a4650260b29352a363435220c37220d392c362d382d2b2e2c2f68051a80010622132a2214342e6805222637222723092a352a35292829a09103032902012a29280ba003fe222b37222c23092935292829a09103082a3b3b2829e302bf2b35293ba003a7222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e6805fa7dfa7ffa810c29fa810c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c50fa65103b503b502c3b3b2829e350222ffa590c640b02003b2a223422342234223422342234fa800c5029352a36220e2a6922362c452a46270a020a2e3b69222d3c452a4664271f27051f08|@9200,1,@1595,@8817,@8818,@8820,@8824,@8827,@8830,@4685,@16527,@16528,@9076,@4023,@4064,@4142,@4150,@9201,@8979,@5064,@9103,@9202,@9199,@9198| 16527:D3,28|fb042b282ea003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1596| 16528:D3,36|fb042b2811a003033c02172b282ea003033c02042b280ba003033c02052b2a362c804200|@8975,1,@1597| 16529:D3,4|fb023b42|@9166,1,@1598| 16530:D13,428|fb353135280ea01aae0134690b0200322d220f220f2d220f1aa1010c5029352a3633373423092a352a35292829a09103032902012a292805a0f86301220f37221023092935292829a09103082a3b3b2829e302bf2b35293ba003a722133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805fae7fae9faeb0c29faeb0c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50facf103b503b502c3b3b2829e3502213fac30c64220f91034d22133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e6805fa9cfa86fa880c29fa980c3b3e3b3b2d68053c3b2b2f6b2221382222230c2a3b3b3ce3502b2a0c271002013b0b020022182218221f2c221d221b0c5029352a36221d35221e37221f392c362d382d2b2e2c2f680528102217322c6b22232a452b4627110206221230452f46270c1f08000000|@9204,1,@1599,@16531,@9205,@8817,@8818,@8820,@8824,@8827,@8830,@9203,@8979| 16531:D3,20|fb042b2805a003033c02052b2a362c8042000000|@8975,1,@1600| 16532:D12,320|fb2f30372c372d23092a352a35292829a09103032902012a292809a0f8170131373223092935292829a09103082a3b3b2829e302bf2b35293ba003a7220c3a220d2307220e2308220f230a2210230e2211230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022163a22172307221823082219230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e6805fa92fa94fa960c29fa960c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c50fa7a103b503b502c3b3b2829e350220cfa6e0c64fa6e2211690b02002c2211220f2cfa640c5029352a362214352215372216392c362d382d2b2e2c2f6805280531221d2c6b221e221e2b2d221e221efa3b221f7b081f32220c45344627061f06|@9206,1,@1601,@8817,@8818,@8820,@8824,@8827,@8830,@16533,@9046,@9205| 16533:D3,20|fb042b2809a003033c02052b2a362c8042000000|@8975,1,@1602| 16534:D3,28|fb042b280ba003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1603| 16535:D11,296|fb331a2f0130690b020030302e2c220c220e0c50293530373123092a352a35292829a09103032902012a29280ba003ee220c37220d23092935292829a09103092a3b3b2829e35002c02b35293ba003a722103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e6805fa6afa6cfa6e0c29fa6e0c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c50fa52103b503b502c3b3b2829e3502210fa460c50503b22142214221422142214fa3a0c322a69270402032e3b69270a1f06000000|@9208,1,@1604,@16536,@8817,@8818,@8820,@8824,@8827,@8830,@9207| 16536:D3,28|fb042b280ba003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1605| 16537:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1606,@5064,@9211| 16538:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1607,@5064,@9214| 16539:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1608,@5064,@9215| 16540:D3,228|fb022b2826a003033c02d82b2820a003033c02cf2b281fa003033c02c62b2821a003033c02bd2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02162b2806a003033c02042b2818a003033c02042b283ca042|@8975,1,@1609| 16541:D3,28|fb042b2805a003033c02042b2809a003033c02052b2a362c80420000|@8975,1,@1610| 16542:D7,88|fb180b04003b2a220c220c220f2211220d2215fa4f0c5029352a362b372c38293ba2030c2b220d2a35452a3646640224fa363bfa372f2f2f2f221522152218221a2216221efa290c2936220e2a35452a3646646427091f09|@9219,1,@1611,@9220,-1,@8994,@9218| 16543:D10,224|fb22fae830326afae731316a0b02002c2a340c5029352a360b02002d2d342c22112214221722132216fac90c5029352a362a2a69221037221123092a352a35292829a09103032902012a0b03002d221e0c03320b020022202220221e2cfa990c5029352a362a221e0c293ba00303fa8c103b503b5029352936312e452d462a47502608020dfa792a2a35452a36462a37475129352a362b370b02002c353da0030cfa612a2a35452a364651021a2c353ca0030b2c362a2a453c46505002092c362a2a453b46505029352a3630306922272b452213462a472c48271f1f08000000|@9222,1,@1612,@16544,@16545,@9223,@8993,@5689,@9225,@9221| 16544:D3,20|fb042b2a370c03033c02052b2a362c8042000000|@8975,1,@1613| 16545:D3,28|fb042b2a370c03033c02042b2826a003033c02052b2a362c80420000|@8975,1,@1614| 16546:D6,200|fb252f373023092a352a35292829a09103032902012a29340c039f3437220c23092a352a35292829a09103032902012a29220f0c0326221036293564220e0c29929103142935293629353ca003033c020429353ba06502013b6402013b030a2211221545221446024dfa69221322116a0b02002c2a22120c5029352a36221935221a37221b392c362d382d2b2e2c2f6805fa45062221322b3b2e68053d2a69292d2223222322232223222322232223fa2b22247b0b2427050208220c221045220f4627051f090000|@9224,1,@1615,@16547,@5064,@9223| 16547:D3,20|fb042b2a370c03033c02052b2a362c8042000000|@8975,1,@1616| 16548:D9,288|fb3e0b04003b2a220e220e220e220e220e220e1a16010c5029352a362b372c382c2c2c2c6b2215221422146a292b22101afd000c2c2215a603033c020b221703062c2215a002013b031b22142218221732323232221a221a221a221a221a221afad20c02012b221635221736faca06facb06facc062d2b2d2f2d6805280e2a69221e36313629362b352c372d392c362d382d2b2e2c2f68052227352211362935293b692c2a69fa900628192b2b326bfa870622112b2b3c220c68053d2a69293469221b37221c38221d35292d2d2d6b22392239223c6a2922212232fa530c5022203829223da603033c020f22213829223ea00304223c02013b64031d223c223c223c2f333333223c223c223c223c223c223cfa20223d7b0f3d2b272e1f0d0000|@9227,1,@1617,@9220,@9228,@9218,@5064,@9103,@9226| 16549:D18,192|fb242d372d382a2aa0030b2f352f352a2aa0916502013b03a22d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68052210362935221137293522143629352216350304fa800202fa8022163729352218350304fa780202fa7829fa7969fa7a2a692c2a69fa772a69302a69fa742a69332a69fa712a69220e2a69fa6d2a6922122a69fa692a692715fa670c29fa67fa690c29fa690c3b3e3b3b2d68053c3b2b306b2213382214230c2a3b3b3ce3502b2a22167d183b65440000|@9230,1,@1618,@9231,@9232,@9231,@9232,@9233,@9235,@9236,@9235,@9237,@9238,@9229,@4052,@8818,@8820,@8979| 16550:D3,4|fb023b42|@9166,1,@1619| 16551:D13,736|fb272d353da0031d0b0400322a331adb020c5029352a362b372c382c2c2c2c6b2709f790022d352816a003a42d3629353da0031c0b0400332a341aaf020c5029352a362b372c382c2c2c2c6b2709027c2d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68051a80021a81021a82020c291a81020c3b3e3b3b2d68053c3b2b2f6b2212382213230c2a3b3b3ce3502b2a0c5022143a221523062216230a2217230e2218230f2b352e352b352d35302c2e2c2e68051a4202061a42022a2c6a3b2a3b3b6b271c64f7e5012d352805a0f851012d362e3729352816a003a5293629353da0031e0b04002f2a220d1af7010c5029352a362b373368012c2c2c2c6b2709027c2f3a30230631230a32230e33230f2b352e352b352d35302c2e2c2e68051adf011ac8011ac9010c291ac8010c3b3e3b3b2d68053c3b2b2f6b2214382215230c2a3b3b3ce3502b2a0c5022163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e68051a8901061a89012a2c6a3b2a3b3b6b271c64029e29353da0031e0b04002e2a220c1a54010c5029352a362b373268012c2c2c2c6b2709027a2e3a2f230630230a31230e32230f2b352e352b352d35302c2e2c2e68051a40011a25011a26010c291a25010c3b3e3b3b2d68053c3b2b2f6b2213382214230c2a3b3b3ce3502b2a0c5022153a221623062217230a2218230e2219230f2b352e352b352d35302c2e2c2e6805fae706fae82a2c6a3b2a3b3b6b271c65028c2c3a2d23062e230a2f230e30230f2b352e352b352d35302c2e2c2e6805fac8faaafaac0c29faac0c3b3e3b3b2d68053c3b2b2f6b2211382212230c2a3b3b3ce3502b2a0c5022133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e6805fa6e06fa6f2a2c6a3b2a3b3b6b29352a362b372c386b29352a362b372c382c2c2c2c6b272229352a3629353b2c299291031229362b3caa292b25042504511e113b6502012a65302e452b462a47270544|@9241,1,@1620,@9242,@9240,@8818,@8820,@8979,@5064,@4062,@9240,@9240,@9240| 16552:D14,584|fb1f2d352816a0038d2d362e372a353da003172a3629352935280ea003082a38293ca06402013b6502013b03252a362935293629352a382d361a1802062c2a2d6a2b3b69220e2a452b463c473b48270902401a03021a04021a05020c291a04020c3b3e3b3b2d68053c3b2b2f6b313832230c2a3b3b3ce3502b2a0c501ad501061ae5012a326a220d3b452a463b473b48270865f7b0012d35280ea0031c2d3629352a381aae01062b2a2c6a313b452a463b473b482705f78d012d353da0f80b012d3629352a362b38293ca003332a352819a003292a36299291031e29352a3629929103112936293ba003062b353da002013b6402013b6502013b6402013b02013b03302a381a64011a51011a52010c291a51010c3b3e3b3b2d68053c3b2b2f6b3438220c230c2a3b3b3ce3502b2a0c27070269293ca003332a352819a003292a36299291031e2936299291031329352a36293ba003062a353da002013b6502013b6402013b6402013b02013b032d2a381afd00fae7fae90c29fae90c3b3e3b3b2d68053c3b2b2f6b3438220c230c2a3b3b3ce3502b2a0c270702013b0b0400312a220efacf0c5029352a362b37333b69293ba003032c02052c2afabc0c22122a452d462c473b48270f027b2b3a2c23062d230a2e230e2f230f2b352e352b352d35302c2e2c2e6805fa92fa70fa720c29fa720c3b3e3b3b2d68053c3b2b2f6b2210382211230c2a3b3b3ce3502b2a0c5022123a221323062214230a2215230e2216230f2b352e352b352d35302c2e2c2e6805fa2006fa312a2c6a221f3b452a463b473b48271c4400|@9244,1,@1621,@5064,@9245,@8818,@8820,@8979,@4062,@9246,@9246,@9242,@9243,@9240| 16553:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1622,@9243| 16554:D3,20|fb042b283ea003033c02052b2a362c8042000000|@8975,1,@1623| 16555:D18,740|fb3a1aeb022f1aeb02303030220e68071ae502321ae502321ae5020c502f373023092a352a35292829a09103032902012a292817a003033c02ea290a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d00292818a002103c020d3c020a3c02073c02043c02013c03033c0243292811a003033c020d292806a003033c0204292818a003033c0228292820a003033c021f292821a003033c021629281fa003033c020d292826a003033c0204292822a003033c0228292813a003033c021f292807a003033c0216292840a003033c020d292819a003033c020429282aa0f862011aad01220e690b02002c2a221122151a8e0122132213221322111a97010c5029352a36221137221223092a352a35292829a09103032902012a292816a0f81801221637221723092935292829a09103082a3b3b2829e302bf2b35293ba003a7221a3a221b2307221c2308221d230a221e230e221f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e6805fadbfaddfadf0c29fadf0c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c50fac3103b503b502c3b3b2829e350221afab70c640b0200221f2a221f2223fa7d222122212221faa50c5029352a36220e35220f372210392c362d382d2b2e2c2f6805280d2216322c33680522272a452b4627100206221730452f46270b022a343a220c2306220d230a220e230e220f230f2b352e352b352d35302c2e2c2e68052216fa4d452a46270a27061f07|@9253,1,@1624,@16556,@9172,@9268,@9269,@9010,@16578,@9270,@8817,@8818,@8820,@8824,@8827,@8830,@9252,@4982| 16556:D45,4500|fb4d2936372a3623092a352a35292829a09103032902012a2e3623062f36230a3036230f2a352a352e2822a0f81502333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051ac4101ac5101ac6100c291ac5100c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501aa610103b503b502c3b3b2829e350220e361a98100c64220e230636220f2306370b03003b2a1a88100c5029362a371a8310312b6a2b2a326a1a7d10221c69292b221b36221c38221d39221e3a1a6d100c281a221b361a68100c1a6810221f69221c362306221d36230a221e36230f2a352a350b02003b0b02002210220d2b222b36222c38222d39222e3a222f370c5029352a3628301a3010222c361a2e100c030d2a2f6929250726061e335002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352225363a222636230e2a352a3522232b22222c22236805280f222b361ab70f0c222e1ab90f1abe0f222e361abc0f0c22121aba0f0c311ab90f0c3b062a2c3b312d680528132a6922332a4531462727f74b0f2e2820a0f80403333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051aa80e1aa90e1aaa0e0c291aa90e0c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501a8a0e103b503b502c3b3b2829e350220e361a7c0e0c64220e363a220f36230e2a352a352212363722133623092a352a35292829a09103032902012a29282ea0f80a012217363722183623092935292829a09103082a3b3b2829e302d72b35293ba003bd221b363a221c362307221d362308221e36230a221f36230e222036230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502225363a22263623072227362308222836230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b363a222c362306222d36230a222e36230e222f36230f2b352e352b352d35302c2e2c2e68051a8b0d1a8c0d1a8d0d0c291a8c0d0c3b3e3b3b2d68053c3b2b2f6b22393638223a36230c2a3b3b3ce3502b2a0c501a6d0d103b503b502c3b3b2829e350221b361a5f0d0c642215342214220c22156805281b2a69221f2a452b46270602da1a750d221836690b03002d2a1a6d0d0c502936221d362306221e36230a221f36230f2a352a350b02003b0b02003b2a222e222c362210222e37222f3822303922313a223223061a370d0c5029352a36280b1a0c0d222d361a0a0d0c030d2a2f6929250726061e3b5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352226363a222736230e2a352a3522242b22232c222468051ac40c06280f3c2b322e6805282e222e361a870c0c22302b452d462717270df7400c2e2821a0f81806333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051a9d0b1a9e0b1a9f0b0c291a9e0b0c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501a7f0b103b503b502c3b3b2829e350220e361a710b0c64220e363a220f36230e2a352a352212363722133623092a352a35292829a09103032902012a29282fa0f80b012217363722183623092935292829a09103082a3b3b2829e302d72b35293ba003bd221b363a221c362307221d362308221e36230a221f36230e222036230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502225363a22263623072227362308222836230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b363a222c362306222d36230a222e36230e222f36230f2b352e352b352d35302c2e2c2e68051a800a1a810a1a820a0c291a810a0c3b3e3b3b2d68053c3b2b2f6b22393638223a36230c2a3b3b3ce3502b2a0c501a620a103b503b502c3b3b2829e350221b361a540a0c642215342214220c22156805281b2a69221f2a452b462706f7ed031a790a221b690b0200221b23062d2b221e36221f3822203922213a2222370c502935221c3637221d3623092a352a35292829a09103032902012a0b02002c2830a0f8b4012224363722253623092935292829a09103082a3b3b2829e302d72b35293ba003bd2228363a2229362307222a362308222b36230a222c36230e222d36230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502232363a22333623072234362308223536230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502238363a2239362306223a36230a223b36230e223c36230f2b352e352b352d35302c2e2c2e68051a31091a32091a33090c291a32090c3b3e3b3b2d68053c3b2b2f6b22463638224736230c2a3b3b3ce3502b2a0c501a1309103b503b502c3b3b2829e3502228361a05090c641a4809222c692229362306222a36230a222b36230f2a352a350b02003b0b020022352306220d2b223836223938223a39223b3a223c370c5029352a3628301ade082239361adc080c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a46502605260550293522162a692233363a223436230e2a352a3522312b22302c223168052e1a9d080c402a2c6a22162a452c46502616f7e0012c280ba0f8b4012224363722253623092935292829a09103082a3b3b2829e302d72b35293ba003bd2228363a2229362307222a362308222b36230a222c36230e222d36230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502232363a22333623072234362308223536230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502238363a2239362306223a36230a223b36230e223c36230f2b352e352b352d35302c2e2c2e68051a76071a77071a78070c291a77070c3b3e3b3b2d68053c3b2b2f6b22463638224736230c2a3b3b3ce3502b2a0c501a5807103b503b502c3b3b2829e3502228361a4a070c641a9507222c692229362306222a36230a222b36230f2a352a350b02003b0b020022352306220d2b223836223938223a39223b3a223c370c5029352a36280b1a23072239361a21070c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a46502605260550293522162a692233363a223436230e2a352a3522312b22302c223168051ad706062819302b2d6b22162a452c4650261602252224363a222536230e2a352a3522222b22212c222268052816220e2b6a2f2a452b4650260629352a36282f2227361a68060c22292c452b462710270df721062e281fa0f8db01333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051a7e051a7f051a80050c291a7f050c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501a6005103b503b502c3b3b2829e350220e361a52050c64220e3637220f3623092a352a35292829a09103032902012a29282da09103971a82052217692214362306221536230a221636230f2a352a350b02003b0b020022202306220d2b22233622243822253922263a2227370c5029352a36280b1a0c052224361a0a050c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270902013b2214363a221536230e2a352a3522122b22112c22126805282d221a361a8e040c1ab6040628112a322e6b221e2a452d462712f73f042e2826a02903f3343637220c3623092935292829a09103082a3b3b2829e302d72b35293ba003bd220f363a22103623072211362308221236230a221336230e221436230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502219363a221a362307221b362308221c36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f363a2220362306222136230a222236230e222336230f2b352e352b352d35302c2e2c2e68051a9b031a9c031a9d030c291a9c030c3b3e3b3b2d68053c3b2b2f6b222d3638222e36230c2a3b3b3ce3502b2a0c501a7d03103b503b502c3b3b2829e350220f361a6f030c646602013b220c3637220d3623092a352a35292829a09103032902012a2211363a2212362306221336230a221436230e221536230f2b352e352b352d35302c2e2c2e6805330a4400880088008800880088008800880088000d01880088008800880088008800880088008800880088008800880088002b018800880088008800880088009302880088008800880088008800880088008800880088008800b00288008800880088008800880088008800cb0288008800880088008800880088008800880088008800880088008800e602332811a003033c020d332806a003033c0204332818a00358221b230635221c230636221d2306370b02002e2e2e22243622281ac102221c301abf020c5029352a361a9a02061ab602061ab602062d2b2d2f2d6805280e2a692e362f3822242b22232c22246805222d2d452a46271002122818221c361a8e020c50221d1a8b02452a46f7f2011a8602221c361a84020c22162e22152e22166805221f2b452a4665f7d401221b3637221c3623092935292829a09103082a3b3b2829e302d72b35293ba003bd221f363a22203623072221362308222236230a222336230e222436230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502229363a222a362307222b362308222c36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222f363a2230362306223136230a223236230e223336230f2b352e352b352d35302c2e2c2e68051a38011a39011a3a010c291a39010c3b3e3b3b2d68053c3b2b2f6b223d3638223e36230c2a3b3b3ce3502b2a0c501a1a01103b503b502c3b3b2829e350221f361a0c010c640b020022252223362b1a76010c5029352a3629362a3822202b221f2c222068051a2701061b0f273eba28062b2b6a301a54010c292b69293b69291a4d010c3b2a3b6a29063c2a693e2e2b6afafd061b0f273eba28062b2b6a2b3b3b2fe33d2b220e6a281822152b2e22146805223a2a45221246271d026c1a1401221c361afe000c22162e22152e22166805221f2b452a4665024ffafc221c36fae30c22162e22152e22166805221f2b452a46650234fae5221c36fac80c22162e22152e22166805221f2b452a46650219face221c36faad0c22162e22152e22166805221f2b452a46652711270a430000|@9255,1,@1625,@8817,@8818,@8820,@8824,@8827,@8830,@8966,@16557,@16558,@9159,@8990,@16559,@9079,@9016,@9256,@9010,@9257,@9258,@16562,@9069,@9260,@5064,@16566,@16567,@9262,@16569,@16570,@9116,@9179,@9103,@9263,@9019,@4982,@9264,@9191,@9076,@7937,@7945,@9265,@9266,@9267,@9254| 16557:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1626| 16558:D3,20|fb042b281aa003033c02052b2a362c8042000000|@8975,1,@1627| 16559:D3,28|fb042b280fa003033c02042b2830a003033c02052b2a362c80420000|@8975,1,@1628| 16560:D4,32|fb082b929103142b352c363b062b2a692bfa190c2a2a69270502013b42000000|@4648,1,@1629,@9257| 16561:D4,32|fb082b929103142b352c363b062b2a692bfa190c2a2a69270502013b42000000|@4648,1,@1630,@9258| 16562:D10,216|fb112d3b3bef293ba00304fad7024728072ab1292808b1293cb2293fb429fac8a503043b500203fac3103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faa43f2d3f2807ec50220c3f2d280b34ec502b95502b2707293b3bef293ba00304fa8f0248292819b1292808b1293cb2293fb429fa74a503043b500203fa6f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa523f2e2c2819ec502c95502c270829fa46fa480c29fa480c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f000000|@9259,1,@1631,@9068,16777215,@4054,@9066,@8818,@8820,@8979| 16563:D8,104|fb1bfa7033690b02002c220d2bfa690c5029352a362a2a69220e0c28112210fa5b0cfa5c2212690b0200220e2d2b221722152215221522190c5029352a363135323733392c362d382d2b2e2c2f6805fa330622102a2211342e680522202a452c4627161f0a000000|@9261,1,@1632,@16565,@9076,@8990,@16564,@5064| 16564:D3,28|fb042b282ea003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1634| 16565:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1633| 16566:D3,36|fb042b280ba003033c020d2b2830a003033c02042b282fa003033c02052b2a362c804200|@8975,1,@1635| 16567:D3,28|fb042b2830a003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1636| 16568:D4,32|fb082b929103142b352c363b062b2a692bfa190c2a2a69270502013b42000000|@4648,1,@1637,@9262| 16569:D3,28|fb042b280ba003033c02042b282fa003033c02052b2a362c80420000|@8975,1,@1638| 16570:D3,28|fb042b282da003033c02042b280ba003033c02052b2a362c80420000|@8975,1,@1639| 16571:D3,4|fb023b42|@9166,1,@1640| 16572:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1641,@5064,@9185| 16573:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1642,@5064,@9194| 16574:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1643,@5064,@9211| 16575:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1644,@5064,@9214| 16576:D5,16|fb07fa180628122a2f2ffa1468056443|@9186,1,@1645,@5064,@9215| 16577:D3,292|fb022b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa04200|@8975,1,@1646| 16578:D3,20|fb042b2816a003033c02052b2a362c8042000000|@8975,1,@1647| 16579:D12,356|fb341a6b0134690b02002c2a220e220e220e220e220e220e220e1a57010c5029352a36220e37220f23092a352a35292829a09103032902012a292828a0f81801221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805fa9bfa9dfa9f0c29fa9f0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50fa83103b503b502c3b3b2829e3502217fa770c640b0200221c2a221c221c221c221c221c221c221cfa630c5029352a36220e35220f372210392c362d382d2b2e2c2f680528152216322c6b22242a452b4627100206221430452f46270b1f090000|@9272,1,@1648,@16580,@9271,@8817,@8818,@8820,@8824,@8827,@8830,@9270| 16580:D3,20|fb042b2828a003033c02052b2a362c8042000000|@8975,1,@1649| 16581:D12,352|fb341a670134690b02002c2a220e220e220e220e220e220e220e1a53010c5029352a36220e37220f23092a352a35292829a09103032902012a293ea0f81701221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805fa98fa9afa9c0c29fa9c0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50fa80103b503b502c3b3b2829e3502217fa740c640b0200221c2a221c221c221c221c221c221c221cfa600c5029352a36220e35220f372210392c362d382d2b2e2c2f68053c2216322c6b22242a452b4627100206221430452f46270b1f09|@9274,1,@1650,@16582,@9273,@8817,@8818,@8820,@8824,@8827,@8830,@9271| 16582:D3,16|fb042b3ea003033c02052b2a362c8042|@8975,1,@1651| 16583:D25,2068|fb4231373223092a352a35292829a09103032902012a220d2306220e230a220f230f2a352a352e0a44008800880088008800880088008800cd0088008800880088008800880088008800880088008800140288008800880088008800340388008800880088008800880088008800880088008800880088008800880088009904880088008800880088008800880088008800880088008800880088008800880088008800880088008800ac058800880088001a6b072215692212352213362214370b02002e2e2e22161a58071a5907220c3022211a55070c5029352a361a5007221e69221b2a2d2d222122211a4507221c7b081ff71807221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051aa3061aa4061aa5060c291aa4060c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a8706103b503b502c3b3b2829e35022161a7a060c641a79062219690b020022192d2b221d221b221b221b221f0c5029352825221c1a5e060c1a5e06221f690b02002c2a2222222222222222222222221a4b060c5029352a3629362a3822162b22152c221668051a380606342f2b2d3168053e2a6922292a452d462716f7d105221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a5c051a5d051a5e050c291a5d050c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a4005103b503b502c3b3b2829e35022161a33050c641a46052219690b02002c2a221c221c221c221c221c221c1a27050c5029352a3629362a3822102b220f2c221068051a140506280b2a302d6b22222a452c46270ff7b104221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a3c041a3d041a3e040c291a3d040c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a2004103b503b502c3b3b2829e35022161a13040c641a2a042219690b020022192d2b221d221b221b221b221f0c5029352837221c1af7030c1a0b04221f690b0200221f2d2b222322212221222122250c502935280e22221ad4030c0b0200222422282b2228222622262226222a0c5029352a3629362a38221b2b221a2c221b68053b063b06221130220d2e2d2f68063f2a69222f2a452e46271cf74c03221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051ad7021ad8021ad9020c291ad8020c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501abb02103b503b502c3b3b2829e35022161aae020c640b02002218221c2b221c221a221a221a221e0c5029352a3629362a38220f2b220e2c220f680528172e2b6a22202a452b46270df73902221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051ac4011ac5011ac6010c291ac5010c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501aa801103b503b502c3b3b2829e35022161a9b010c641aba012219690b020022192d2b221d221b221b221b221f0c5029352a36221c37221d23092a352a35292829a09103032902012a29280da0f81201222137222223092935292829a09103082a3b3b2829e302bf2b35293ba003a722253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e6805faaefab0fab20c29fab20c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c50fa96103b503b502c3b3b2829e3502225fa8a0c640b02002227222b2b222b222922292229222d0c5029352a3629362a38221e2b221d2c221e68053b06281d2f22152d2d680522302a452c46270e020e280d2222fa6f0c50222230452f46270f270a1f0900|@9275,1,@1652,@16585,@9276,@9116,@9217,@16587,@9205,@8817,@8818,@8820,@8824,@8827,@8830,@16588,@8990,@16589,@9252,@5064,@16590,@16591,@16592,@16584,@9019| 16584:D3,20|fb042b280da003033c02052b2a362c8042000000|@8975,1,@1661| 16585:D3,28|fb042b2809a003033c02032b3ea003033c02052b2a362c8042000000|@8975,1,@1653| 16586:D3,248|fb022b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a0420000|@8975,1,@1654| 16587:D3,16|fb042b3ea003033c02052b2a362c8042|@8975,1,@1655| 16588:D3,248|fb042b2826a003033c02d82b2820a003033c02cf2b281fa003033c02c62b2821a003033c02bd2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02162b2806a003033c02042b2818a003033c02042b283ca003033c02042b2825a003033c02052b2a362c804200|@8975,1,@1656| 16589:D3,20|fb042b2830a003033c02052b2a362c8042000000|@8975,1,@1657| 16590:D3,20|fb042b2830a003033c02052b2a362c8042000000|@8975,1,@1658| 16591:D3,312|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02042b2837a003033c02052b2a362c80420000|@8975,1,@1659| 16592:D3,312|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02042b280ea003033c02052b2a362c80420000|@8975,1,@1660| 16593:D21,964|fb4e1acb03331acb03331acb030c1acb0334690b020034220d2e2c22101ac0030c5029352a36220e37220f23092a352a35292829a09103032902012a292838a003e1221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a04031a05031a06030c291a05030c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501ae802103b503b502c3b3b2829e35022171adb020c6466f709011ad60222141ad5020c50221337221423092a352a35292829a09103032902012a292811a003e0221837221923092935292829a09103082a3b3b2829e302c52b35293ba003ac221c3a221d2307221e2308221f230a2220230e2221230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022263a22272307222823082229230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222c3a222d2306222e230a222f230e2230230f2b352e352b352d35302c2e2c2e68051afd011afe011aff010c291afe010c3b3e3b3b2d68053c3b2b2f6b223a38223b230c2a3b3b3ce3502b2a0c501ae101103b503b502c3b3b2829e350221c1ad4010c646602013b27051ad5012217690b020022172d2b221b221922192219221d0c5029352a36220c35220d37220e392c362d382d2b2e2c2f68051aa801061aa401063b063322172d2d302e6806222437222523092a352a35292829a09103032902012a0b02002c283ea0f80e01222c37222d23092935292829a09103082a3b3b2829e302bf2b35293ba003a722303a22312307223223082233230a2234230e2235230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350223a3a223b2307223c2308223d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022403a224123062242230a2243230e2244230f2b352e352b352d35302c2e2c2e6805fab7fab9fabb0c29fabb0c3b3e3b3b2d68053c3b2b2f6b224e38224f230c2a3b3b3ce3502b2a0c50fa9f103b503b502c3b3b2829e3502230fa930c640b020022352a223522352235223522352235fa910c5029352a3622112b692a362b38221d2b221e2c221f6805220d2d452a4650260d020b313b692a2a45220e465050222efa63fa65222ffa250c5029222e2a35452a36466427251f0800|@9278,1,@1662,@9216,@7462,@9010,@16594,@9174,@8817,@8818,@8820,@8824,@8827,@8830,@6460,@8977,@16595,@4517,@9252,@9079,@9277| 16594:D3,20|fb042b2838a003033c02052b2a362c8042000000|@8975,1,@1663| 16595:D3,20|fb042b283ea003033c02052b2a362c8042000000|@8975,1,@1664| 16596:D16,388|fb382e372f23092a352a35292829a09103032902012a333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805221437221523092935292829a09103082a3b3b2829e302bf2b35293ba003a722183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e6805fabdfabffac10c29fac10c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c50faa5103b503b502c3b3b2829e3502218fa990c64220e281da0030c3b2219fa8f0c3c2a69640225220e281ca0030c3b2219fa7c0c3b2a69640212220e2824a003043b500203fa6c103b50fa6bfa6d2217fa6d221cfa6d0c0b0200322a221f221d222032fa620c5029352a3629362a3822152b22132c221368052807332f2c6b22212a452b46271e1f040000|@9281,1,@1665,@8817,@8818,@8820,@8824,@8827,@8830,@9282,@9286,@4719,@9116,@9289,@9010,@9280| 16597:D18,624|fb362b372c23092a352a35292829a09103032902012a29281ea0f84d0230362935293b3bef1a54022b2b6a3b2a3c1a4f020c299291031e293529352a362a9203043b5002041a3c02103b502a2a69296801270402013b299291030a293529352968016502013b293ba003041a1a02103b503b502935293ba203033c0204292809a6f80601220f3a221023062211230a2212230e2213230f2b352e352b352d35302c2e2c2e68052219362935293b3bef293ba003051ad5010249280b2ab1292808b1293cb2293fb4291ac501a503043b5002041abf01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a9f013f2d3f280bec50313f2d280f34ec502b95502b2707293b3bef293ba003051a8a01024b292825b1292808b1293cb2293fb4291a6e01a503043b5002041a6801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a4a013f2e2c2825ec502c95502c2708291a3d011a3e010c291a3d010c3b3e3b3b2d68053c3b2b220c6b2223382224230c2a3b3b3ce3502b2a0c50261602023b50220f37221023092935292829a09103092a3b3b2829e35002c02b35293ba003a722133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805fa7efa70fa720c29fa7a0c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50fa5e103b503b502c3b3b2829e3502213fa520c50502c270b02013b2705430000|@9284,1,@1666,@16598,@7684,@7690,@5689,@9285,16777215,@4054,@9283,@8818,@8820,@8979,@8817,@8824,@8827,@8830| 16598:D3,32|fb062b2a37a003033b02122b3fb12a362adc2d3cb12a2a692968012704420000|@7683,1,@1667| 16599:D7,128|fb172e372f23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a003470b0200fa59220d220f2cfa560c5029352a362a22102bfa4e0c2b220e692c2a6964220f350c0b02002e2a2216221622162216fa360c5029352a36312b6922182a452b46270d0206343b45220d4627051f0600|@9290,1,@1668,@9116,@8993,@8998,@9280| 16600:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1669| 16601:D3,28|fb042b280fa003033c02042b281aa003033c02052b2a362c80420000|@8975,1,@1670| 16602:D3,12|fb042b2a370c502b2a362c80|@9127,1,@1671| 16603:D3,20|fb042b280fa003033c02052b2a362c8042000000|@8975,1,@1672| 16604:D6,108|fb152c372d23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a003350b0200fa4534220d2cfa430c5029352a360b02002c2a22122212fa360c5029352a363b06302a316a292d6922162a452d46270d0205323b45344627051f04|@9292,1,@1673,@9116,@8993,@9291| 16605:D4,28|fb0b0b02002e3b3b2f362d3137fa190c5029352a362a2a6927054200|@9112,1,@1674,@9111| 16606:D7,128|fb0d2b2a380c293ba003712c2b370c293ba003632d3b3bef293ca603352e3b3bef3c2aa80303fa64103b502f2805dcfa5f2a3bdb29fa5da003033c0212293b3bef3ca00309293ffa4b3f3ced02013b6602013bfa43061b0f273eba2b03033f02013b2a2ab8293db82d2a69220c2a6934360c2a27090202293564020229356442|@9167,1,@1675,@4023,@4064,@4132,@5064| 16607:D3,16|fb042b3da003033c02052b2a362c8042|@8975,1,@1676| 16608:D14,676|fb422f373023092a352a35292829a09103032902012a29282ca003f53437220c23092935292829a09103092a3b3b2829e35002c62b35293ba003ac220f3a22102307221123082212230a2213230e2214230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022193a221a2307221b2308221c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e68051af6011af7011af8010c291af7010c3b3e3b3b2d68053c3b2b2f6b222d38222e230c2a3b3b3ce3502b2a0c501ada01103b503b502c3b3b2829e350220f1acd010c505022113c2211221122112211221122111abc0122127b0a121ab801220f690b0200220e22102e2c22131aab010c5029352a36281122121aa2010c0b0200221422192b22182217221722171a92010c5029352a36221737221823092a352a35292829a09103032902012a0b02002c3da003fd221f37222023092935292829a09103092a3b3b2829e35002c02b35293ba003a722233a22242307222523082226230a2227230e2228230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222d3a222e2307222f23082230230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022333a223423062235230a2236230e2237230f2b352e352b352d35302c2e2c2e6805faa8faaafaac0c29faac0c3b3e3b3b2d68053c3b2b2f6b2241382242230c2a3b3b3ce3502b2a0c50fa90103b503b502c3b3b2829e3502223fa840c50500b0200222822282b22282228222822282228fa710c5029352a36312b452a465026080206293b4532465029352a36221035221137221239220d36220e382d2b2e2c2f68053b06221822132c2c222e6805293369222b2a453346271f27051f080000|@9294,1,@1677,@8817,@8818,@8820,@8824,@8827,@8830,@9293,@16609,@9174,@8990,@9172| 16609:D3,20|fb042b2811a003033c02052b2a362c8042000000|@8975,1,@1678| 16610:D7,116|fb0c2b2a370c293ba003622c3b3bef293ca603352d3b3bef3c2aa80303fa61103b502e2805dcfa5c2a3bdb29fa5aa003033c0212293b3bef3ca00309293ffa483f3ced02013b6602013bfa40061b0f273eba2b03033f02013b2a2ab8293db82d2a69342a6933360c2a2709020229356442000000|@9090,1,@1679,@4023,@4064,@4132,@5064| 16611:D3,4|fb023b42|@9166,1,@1680| 16612:D12,628|fb242b372c23092a352a35292829a09103032902012a292834a003aa30362935293b3bef293ba003051a540202423c2ab1292808b1293cb2293fb4291a4502a503043b5002041a3f0210292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2822e450313f2d280534ec502b95502b2707293b3bef293ba003051a04020244293cb1292808b1293cb2293fb4291af501a503043b5002041aef0110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2822e4502c95502c27082705025b30373123092a352a35292829a09103032902012a29282ba003033c021629281ea003033c020d29283aa003033c0204292818a00308220c36293564021c220c37220d23092a352a35292829a09103032902012a27041a6e010c2705313a32230633230a34230e220c230f2b352e352b352d35302c2e2c2e680522133b3bef293ba003051a4401024a29280eb1292808b1293cb2293fb4291a2401a503043b5002041a1e0110292841bd2a3cb22a2a3b3bf02b3b3b32f050221b3f2d3f34ec503f31b11a05013f2e2c280eec502c95502c2708293b3bef220d3b3bef2a3ba00304220e024e293ba003032b02462a2ab1292808b1293cb2293fb429fac2a503043b500203fabd10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b122163f2e2c220cec502c95502c2708293b3bef293ba00304fa9102442940b1292808b1293cb2293fb429fa6fa503043b500203fa6a10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa573f2e2c40ec502c95502c270829fa4cfa4e0c29fa4e0c3b3e3b3b2d68053c3b2b220d6b221d38221e230c2a3b3b3ce3502b2a22207d2100|@9297,1,@1681,@4127,16777215,@4054,@9025,@9298,@9296,@8818,@8820,@8979| 16613:D4,12|fb052b352c36fa102d7e0300|@9301,1,@1682,@9300| 16614:D14,96|fb0a2b3ba40304fa6302512c353ba0031e2c36fa5b2afa5c2ffa5d0cfa5e2a69fa5e2a693b3e3b3b2d68052704022d2c353ca0031e2c36fa4b2afa4c2ffa390cfa4a2a69fa4a2a693b3e3b3b2d6805270402092c36292dfa3b2e7e0543000000|@9303,1,@1683,@5081,@9304,@8945,@9533,@5091,@9538,@9539,@8945,@5091,@9541,@9302| 16615:D4,12|fb052b352c36fa102d7e0300|@9306,1,@1684,@9305| 16616:D21,436|fb262c3529352a372f3630383123060b02002c3ca003062e353da002013b031b2e3629352a362b372c382b2b2b6a296801302a452f465026070206293b452f465029352a362f3b3bef293ba003051a6f010247293cb1292808b1293cb2293fb4291a6001a503043b5002041a5a01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b12c2a2828e4502c95502c27083e2a69220c1a2a01a003033c0215220c3b3bef3ba0030b220c3f1a15013f3bed02013b03033b0264220c3b3bef293ba003051a0101024d293db1292808b1293cb2293fb429fae3a503043b500203fade103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f34ec503f31b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a6929fab0696622113cab220d2afaa90c293b69293ba003032c02052c2afa9d0c3b3c3b3b2d68053392910329333529352a36290304fa890202fa893e2a69221b3cab2d2afa720c293b69fa7c2a692d2a69270902013b22173cab342afa6e0c293b69fa6c2a69fa6c2a69fa6c2a69293ba003032f02052f2afa620cfa632a69322a69fa602a6922112a693b3e3b3b2d6805272043|@9308,1,@1685,@4133,16777215,@4054,@4062,@9309,@9310,@9311,@9527,@9421,@9309,@5091,@9528,@5091,@5663,@5091,@9307,@5090,@5091| 16617:D25,180|fb1f2b3ba40304fab702a62c353da003722c3629362a372b382c392c31faa50c3bfaa50c2c332bfaa30c3e2f69343cab2efa9d0c3bfa910c2a2c2bfa973bfa980c293b69fa962a69fa962a69fa962a69312a69293ba00303330205332afa890cfa8a2a69fa8a2a69fa8a2a69fa8a2a69fa8a2a6922122a693b3e3b3b2d68052719022e2c353ba003222c36fa732afa742ffa750c29fa750cfa762a69fa762a693b3b3c3b2d6805270502062c363e2a6964430000|@9313,1,@1686,@5081,@9311,@9314,@9337,@9405,@9341,@9338,@5091,@5663,@5091,@9412,@5091,@9413,@5091,@9414,@5091,@9415,@4062,@9423,@9526,@5091,@9312| 16618:D6,24|fb073b06293b3bfa1be350fa1b063b06fa1a2a2c6a664200|@9315,1,@1687,@9316,-1,@16619| 16619:D8,212|fb1929363529299291032029352a362a36293531352a2aa003052d680102082c250626051e1e3b270502013b642992910307293529356402962b3735293caa2d373b3b2ce33036293fb7293ba0910304fa8e0202fa8e313735fa8d0c2a3b3bef2a3b3bef2a3ba003032b024d293ba003032c02452a2ab1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c270829220f69220d36352a2a69220f363b3b2ce3502c270d6542000000|@9335,1,@1690,@9249,@4132,@9334,16777215,@4054| 16620:D17,124|fb142b363ca20304fa7e026d2b352c363cab293ba20304fa73023f2a362a3cab2a2a69fa6b352a2a0c642e352e3cab2a2a69fa60352a2a0c6429fa5c69fa5d2a69fa5d2a69fa5d2a69fa5d2a69322a69fa5a2a69fa5a2a69270ffa582a693b3c3b3b2d6805293b69fa4e2a69fa4e2a693b3c3b3b2d68052708420000|@9318,1,@1688,@6303,@8198,@109,@7,@9320,@5091,@9322,@5091,@9324,@5091,@9325,@9327,@5091,@9317| 16621:D4,8|fb02fa1042000000|@4606,1,@1689,@4605| 16622:D9,204|fb152b281aa803282b281aad2c281aae293ba003033c0207293ba2293ba06403032a02032a3cab293cab66faab0c0202faaa2c281aae293ba003033b0210293ba2293ba003032a02042a281aaa64292861aa293ba203033c02042928ffa60303fa7e103b50fa7d2a3bdb2d3b3bef2a3b3bef2a3ba003032b024e293ba003032f02462a2ab1292808b1293cb2293fb429fa56a503043b500203fa5110292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f220cec503f32b1333f2e2c220cec502c95502c270827074200|@9336,1,@1691,@9334,@4062,@4076,@4064,16777215,@4054| 16623:D11,92|fb0c2d929103502d352e36293ba0031a2a352b3628062b2b6a293232fa4a3b33360c29fa47692704022a2e3ca40304fa3f02212e302d3630fa3a0c29fa3a0cfa3b2a69fa3b2a693b3b3b3b2d680529fa336927056502013b44000000|@9340,1,@1692,@9341,@5598,@9345,@9346,@9339,@5268,@5093,@5598| 16624:D3,4|fb023b42|@9344,1,@1693| 16625:D3,4|fb023b42|@9344,1,@1694| 16626:D13,144|fb0f2e3ba40304fa9302812d92919103033b02782d929103043b500203fa81103b502d3529352a3628062b2b6a293331fa723b220c0c29fa6f6933929103043b500203fa67103b5033362992919103033b022734929103043b500203fa52103b503436220d3cab292b220e220efa450cfa462a69fa462a692704293ba003032b02082b2afa3a220c7e0e27081f040000|@9348,1,@1695,@9345,@5975,@9341,@9349,@6128,@6128,@9346,@5091,@5092,@9347| 16627:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1696,@9347| 16628:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1697,@9339,@5089| 16629:D4,44|fb122f2f2b362c372d382e392f3a30230631230732230833230934230a220e22102212fa1322117b11070000|@9351,1,@1698,@9350| 16630:D41,1500|fb2c22101ae1050c29350a0700500056005c002501ff01b8030e0029362a372a2a692b3529353ca003092a310c3e2a6964022529221522152215221522152215221522152215221522152215221522151a990522167b11162704f779051a9005f773051a8e05f76d0529362a3722123ba403051a820502b62a1a6c050c29353da0034422133ca403051a7005023722133cab2a2a22152215221522152215221522152215221522152215221522151a3b050c291a4a05691a4a052a693b3b3b3b2d68052704022522133cab2a2a22152215221522152215221522152215221522152215221522151a02050c6422143cab2c2a22162216221622162216221622162216221622162216221622161add040c293b691af2042a691af1042a691af0042a692f2a693b3b3b3b2d6805270965f7a40429362a3722123ba403051ad50402c72b1ad3040c03362a1ad0040c1ad00422142b1a960422162216221622162216221622162216221622162216221622161ab1040c3b3b3b3b2d680565028a2a1aa6041aa7040c22133cab292b1a5d0422162216221622162216221622162216221622162216221622161a84040c0b02002f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603051a5d04020d303ba003051a570402031a56043e2a69293b69293ba003032f02062f2a1a47040c1a47042a693b3d3b3b2d6805270b65f7ca032936293ba003061a3204f7a8012210352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092211352968016402eb2a293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102b02a293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d680102752a293ba003033b022929352a362a38293629353ca0030b2a36293622132aa06502013b03033c02082b250526041e2c3b2704640305346801023b2a293ba003033b022929352a362a38293629353ca0030b2a36293622112aa06502013b03033c02082b250526041e2c3b270464030532680102013b293ba0030f2b1ac8020c3b3b3b3b2d68056402312935293528053b2b2d3b680529221722172217221722172217221722172217221722172217221722171a310222187b11186564f7110229362a372b382938293629353ca0030b2a36293629220ea06502013b03032c02022b353b06293b3b1a6002e3500b02002d3b2b22123422131a54020c5029352a36293ba003032a02813238221292910309293629353ba06402013b030f2212352a362938292c0c3735660203293735291a2002a003033c0213293b3bef3ba0030a293f1a0d023f3bed02013b030f2b3ca003071a01022d6902012c022c0b02002c3b2b22192212221a1ae3010c5029352a36293ba003032a020d303ca003071ad5013269020131270565299291031c29352a36293ba003032a020d291abc010c2b2a69641ab8010c6502031aa5013438293629353ca0030b2a362936292219a06502013b03033b0244220d3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b653e2d69293b693b3b3b2e2d68052213929103ae2213352214362afaba0c2a929191031229fae00c03033c020429353da029916402013b032622273cab2a2a2229222922292229222922292229222922292229222922292229fa800c64024e22273ca40304faf0024422273cabfaec2a2219fa67222b222b222b222b222b222b222b222b222b222b222b222b222bfa830c29facb0c293ba00304fac70206fac32afac40c3b3b3b3b2d680527042d3b69fab92a692b2a693b3b3b3b2d680527070201292714641f0f000000|@9353,1,@1699,@8044,@9350,@9354,@9356,@5081,@5081,@5089,@5093,@5485,@5586,@5485,@5081,@9358,@9360,@4135,@9361,@9363,@6336,@9366,@4218,@8200,@9370,@9371,@8213,@9356,@9372,@9375,@9392,@4062,@4156,@9401,@4052,@5081,@4137,@9403,@9404,@9352,@5091| 16631:D4,160|fb132b353ea003132b36299291030829362992916402013b6402013b037d2b362c370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936034d3c2e299291034229352a362a352d3cfa520c2a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b03112e3caa292d2507250726051e3c3b6402013b270402013c6502013b270502013b42000000|@9359,1,@1700,@4569| 16632:D4,28|fb072b929103112b352c362a362afa180c2a2a69270402013b420000|@4648,1,@1701,@9360| 16633:D13,464|fb1f22109291f8c301221035221136293ba003a92a1ac4010c22151ac201a003033c021522153b3bef3ca0030b22153f1aad013f3ced02013b031029353da003033c0205291a9c010c02013b034722143ca403051a9101023622143cab2a2a221422142214221422142214221422142214221422142214221422220c291a6c01691a6c012a693b3b3b3b2d68052704293b69640224292215221322132213221322132213221322132213221322132213221322210c293b696464f70c0122133ba403061a2e01f700012a1a0f010c22151a0d01a003033c021422153b3bef3ca0030a22153ffaf93f3ced02013b030f29353da003033c020429fae90c02013b034022143ca40304fadf023422143cab2a2a221422142214221422142214221422142214221422142214221422220c29fabb69fabc2a693b3b3b3b2d680527040220292215221322132213221322132213221322132213221322132213221322210c2216fa93a003033c021422163b3bef3ca0030a22163ffa7f3f3ced02013b913c2a3b6a3e221969293b692b2a692e2a693b3b3b3b2d6805221c3cab221e2a220c221e221e221e221e221e221e221e221e221e221e221e221e221e221efa3d0cfa3e2a692c2a69270c6502013b1f1100|@9362,1,@1702,@8044,@4135,@9358,@5081,@5089,@5093,@9345,@4137,@9361,@5091| 16634:D4,12|fb042b35fa122a6964420000|@9364,1,@1703,@16635| 16635:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d363f2e3f2dee293ba003052c2ca50203293ba4270542000000|@9365,1,@1704| 16636:D13,280|fb2322109291f80b012210352211362a352b3622153ba403051a080102f22a3b3bef293ba003051afe000244293cb1292808b1293cb2293fb429faf0a503043b500203faeb103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a283ae4502c95502c27083e2a6922183cab2d2a221822182218221822182218221822182218221822182218221822260c293b69fa992a692d2a693392919103033b0202fa8d293ba003032a02052a2afa850c3b3b3b3b2d6805293b69220e92919103033b022b22213cab29221022222222222222222222222222222222222222222222222222222222fa4f0cfa502a6965293ba003032a02052a2afa450c3b3b3b3b2d6805293b69270f270402013b1f1000|@9368,1,@1705,@9345,@4151,16777215,@4054,@5091,@5480,@9369,@9366,@5091,@9367| 16637:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1706,@9369| 16638:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1707,@9367| 16639:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1708,@9371| 16640:D6,208|fb0f2b929103c62b352c36293ba003582a3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2d353e2a69293b693b3b3b2f2d6805293b69270702622a3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2d353e2a69293b693b3b3b2f2d680530fa200cfa212a69fa212a692c2a69270a6502013b4200|@9374,1,@1709,@9372,@9373,@5268| 16641:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@9377,1,@1710,@6303,@9378,@6303,@9385,@6303,@9376| 16642:D7,144|fb1230fa97a003033c0212303b3bef3ba00309303ffa853f3bed02013b03072e30453d4602680b0200332afa730c5029352a3629220c69312a220c220cfa650c293da003112c2b220e220e220e220efa57220f7b080f293ca0032b0b02002f2e2b221122112211fa3f0c5029352a36293ba0030822112b452a46020622112b453c4627050206220c2b453b4627071f06|@9394,1,@1711,@4062,@8111,@9393,@9392| 16643:D13,180|fb1d2d929103a82d352e36293ba0034d30352b2a0c293ba003033d023d293529352a362a35fa99220c690b040022102ffa92fa903b2efa900c502938fa8e32690b0400220d2ffa7cfa7a3b2efa7a0c502938302afa7a0c91271265024f30362b2a0c293ba003033d02412935293529372b362a352b392afa5b0c2923082a230c2e3ba003032c02082e35fa4c2e2b6a64fa4a2a2d6afa492b2d6a2a2a6929221022162216fa3e22177b0617656502013d1f040000|@9395,1,@1712,@16645,@9397,@8100,@16647,@8105,@4898,@16648,@16649,@16644,@9393| 16644:D3,32|fb062b2a370c299291030f29352b3668012a2a692968016602013b6442000000|@9400,1,@1718| 16645:D3,40|fb062936929103092b3629353ba06402013b03112936352c362938292c0c296801270402013b4200|@9396,1,@1713| 16646:D3,4|fb022b42|@9398,1,@1714| 16647:D3,40|fb062936929103092b3629353ba06402013b03112936352c362938292c0c296801270402013b4200|@9396,1,@1715| 16648:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@1716,@8143| 16649:D3,32|fb062b2a370c299291030f29352b3668012a2a692968016602013b6442000000|@9399,1,@1717| 16650:D5,28|fb072b929103132b352c3629fa1a0c2b2a69fa182a69270402013b42|@9402,1,@1719,@9401,@4139| 16651:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1720,@9403,@5267| 16652:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1721,@9352| 16653:D13,184|fb0f2b350a06002e000c0032004600540096002b36293a29352b352c362d392bfaa20c3b2b69293b6928052c2f322d680527090281fa91027d2b362c382afa8c0c2afa880c3d2b2b6a270402692b3629352a3628062b2b6a66025b2b362c372afa6e0cfa6f0c29fa6f0c3b2a2d6a2c030329020629063c2a69643e2d2b6a2e0303290215fa56061b0f273eba28062b2b6a2b3b3b2fe32a2704270702192b3629fa3e0c293cfa3d0c29fa3d0c3b2a3c6a3e2c2b6a27054200|@9407,1,@1722,@9408,@4517,@9405,@9409,@7941,@9410,@5064,@9411,@7275,@9406| 16654:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@1723,@9405,@9408| 16655:D6,56|fb102b9291032c2b352c362a352b362a352afa300c2afa300c292b6929352a366929352a362a2a6933fa210c2a2a69270d02013b42000000|@4648,1,@1724,@9405,@7937,@9409| 16656:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1725,@9410| 16657:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@1726,@9405,@9411| 16658:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1727,@9406| 16659:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1728,@9412| 16660:D4,12|fb052b352c36fa102d7e0300|@9417,1,@1729,@9416| 16661:D36,516|fb162b3ba403061a0602f7f6012c350a060030003d00fd0023010c005f012c361af1012a1af1012f1af1010c1af1012a691af0012a693b3e3b3b2d68052704f7c1012c362c3cab2a2a1adc012f7e062c372d382a352a929103992a352a3b3bef293ba003051ac401024e293db1292808b1293cb2293fb4291ab501a503043b5002041aaf01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a69323cab2d1a76010c3b1a75010c2a2c2b1a72013b1a72010c293b691a6f012a692f2a691a6b012a691a6a012a693b3b3b3b2d6805270d02193e2a69293b691a58012a691a57012a693b3b3b3b2d680527046602f42c362c3cab1a45012b1a45012c1afd000c1a41012a691a40012a693b3e3c3b2d6805270502ce2c372d382a9103033b02031a29011a2a012b1a2a0131facf0c293ba003032a02062a2a1a1d010c1a1d012a691a1c012a693b3e3b3b2d6805270702922c372d382a35293b3bef293ba003051a0101024c293db1292808b1293cb2293fb429fa9ba503043b500203fa96103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a69313cab2efa5e0c3bfa5e0c2a2c2bfa5c3bfa5d0c293b69fa9b2a692f2a69fa982a69fa982a693b3b3b3b2d6805270f43|@9419,1,@1730,@5081,@9420,@8945,@9423,@5091,@9425,@9426,@9309,16777215,@4054,@9405,@9314,@9341,@9338,@5091,@9517,@9469,@9517,@9469,@9518,@4062,@5091,@9520,@9521,@9522,@4154,@9524,@5091,@9525,@9309,@5091,@9517,@9418| 16662:D7,60|fb152b352c362a362b3829352a363e2d692a0304fa320202fa323e2a69303cab2e2afa2c0c293b69fa2a2a692d2a69302a693b3e3b3b2d6805270f42|@9422,1,@1731,@9421,@9309,@9311,@5091| 16663:D9,164|fb112d929103972d352e36293ba003142d3ba40304fa9902092a2e69310c293b696402772d3ba40304fa89026e2efa88a003033c02122e3b3bef3ca003092e3ffa763f3ced02013b03033c021b2efa6ca003033c02122e3b3bef3ca003092e3ffa5a3f3ced02013b912b2f69320c3c2b3b6a3e3269293b692b2a692d2a693b3b3b3b2d6805220c3cab22103322102cfa2f0cfa302a692c2a69270b6502013b1f04000000|@9424,1,@1732,@9345,@9345,@4137,@4152,@9423,@5091| 16664:D150,2104|fb1b2b3ba403061a3a08f727082c350a1f00490054018b0134027c02dd0220036103dd03e3030a0436045d0484043e00c804110548057405e50552067b06b206d506f90653077d07bc07c107e1071f082c3629353e2a6965f7d9072c3629352a372b392c38293ca0039e303cab2c1ad7072b1ad7071ad8070c2c92919103033b0220323cab2d1acb072b1acb071ac0070c291ac7070c1ac7072a691ac6072a692704333cab301abf072b1abf071aa0070c3b3e3c3b2d6805293b691ab2072a691ab1072a69293ba003032f02062f2a1aa6070c293ba003051aa10702081a9c072a1a9c070c293ba00303320206322a1a92070c1a92072a691a91072a693b3e3c3b2d6805270e0259303cab2c1a81072b1a39071a3a070c2c92919103033b0220323cab2d1a6d072b1a2d071a22070c1a66072a691a65072a691a64072a692704293ba003032a02062a2a1a57070c1a57072a691a56072a693b3e3c3b2d680527062705f7ce062c362d372d3cab2b2a1a3e070c2f3cab2c2a1a35070c293b691a32072a691a31072a691a30072a692f2a693b3e3c3b2d6805270bf797062c3629362a3629352819a003292936299291031e293629929103132936293ba003082e38293ca06402013b6402013b6402013b6402013b03442b36293629352a3629353035343cab2d2a1ac6060c2b220e1abf060c220e3cab2e2a1ab5060c293b691abe062a692d2a691aba062a69302a693b3b3b3b2d6805271002282b352f3cab2a2a1a8c060c313cab2e2a1a83060c293b691a94062a692d2a693b3b3b3b2d6805270866f7ee052c3629352a362e3cab2b2a1a5c060c291a7306691a73062a691a72062a693b3b3b3b2d6805343cab301a66062b1a66061ad7050c1a63062a692c2a693b3e3c3b2d6805270df7a6052c3629352a362b372f3cab2c2a1a12060c313cab2c2a1a09060c333cab2f2a1a00060c293b691a2d062a691a2c062a691a2b062a692f2a691a27062a691a26062a691a25062a69220c2a691a20062a691a1f062a693b3b3b3b2d68052715f745052c362d372d3cab2a2a1ab5050c2c1a04060c3b1a03060c2a322b1a00063b1a00060c293b691afd052a691afc052a691afb052a69302a693b3e3b3b2d6805270cf702052c3629372a383e2b693e2b69293b691adc052a691adb052a691ada052a691ad9052a691ad8052a69302a691ad4052a691ad3052a693b3e3c3b2d6805270ef7c1042c362d372a353ca003232a36293c1ab8050c3e2a69293b691ab2052a691ab1052a693b3b3b3b2d68052706022c2a353ba003232a36293c1a8f050c3e2a69293b691a91052a691a90052a693b3b3b3b2d6805270602031a84052e3cab2b1a81052b1a81051a76040c1a7e052a692c2a693b3e3c3b2d68052707f745041a6e05f73f042c362c3cab2a1a66052b1a66051a4b040c1a63052a691a62052a693b3e3c3b2d68052705f718042c362c3cab2a1a43042b1a43041a24040c291a43050c1a43052a691a42052a693b3e3c3b2d68052706f7ec032c372c3cab2a1a87042b1a87041af8030c1a24052a691a23052a693b3e3c3b2d68052705f7c5032c362c3cab2a1a10052b1a10051ad1030c1a0d052a691a0c052a693b3e3c3b2d68052705f79e032c362d372d3cab2b2a1a0e040c2f3cab2c1a2e042b1a2e041a9f030c1ae3042a691ae2042a693b3e3c3b2d6805293b691ad7042a69302a693b3b3b3b2d6805270cf75a032c362d382d3cab2a2a1abe040c2c03051abb0402152b92919103051ab40402031ab3043e2a69293b6965293ba003032a02062a2a1aa3040c1aa3042a693b3d3b3b2d68052707f711032c362d372d3cab2b2a1a81030c2f3cab2c2a1a78030c293b691a7d042a691a7c042a691a7b042a692f2a693b3e3c3b2d6805270bf7da022c372c3cab2a1a65042b1a65041ae6020c291a61040c1a61042a691a60042a693b3e3c3b2d68052706f7ae022c372d392935291a4c04a003033c0213293b3bef40a0030a293f1a39043f40ed02013b03112b1a3104691a31042a69641a2f040c0233291a2c04a003033c0215293b3bef2808a0030b293f1a18043f2808ed02013b03112b1a0f04691a0f042a69641afd030c02012b3e2a692704f73d022c3629352a362b372903051af30302031af2033e2a69313cab2d1a54022b1a54021a35020c333cab301a45022b1a45021a26020c291ad1030c293ba003051acc0302081ac7032a1ac7030c293ba003032d02062d2a1abd030c1abd032a69312a693b3e3b3b2d6805270ff7d0012c3629352d3cab2a1ae5022b1aa1031ada010c1a9e032a691a9d032a693b3e3c3b2d68052706f7a7012c362d372d3cab2b2a1a17020c2f3cab2c2a1a0e020c293b691a77032a691a76032a691a75032a692f2a693b3e3c3b2d6805270bf770012c36292d1ae5010c291a5c03691a5c032a691a5b032a693b3b3b3b2d68052705f74d012c362c3cab2a2a1abf010c293b691a40032a691a3f032a693b3b3b3b2d68052706f729012c36293b3bef293ba003051a270302443c2ab1292808b1293cb2293fb4291a1803a503043b5002041a1203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2823e450313f2d280534ec502b95502b27073e2a696602cf2c362c3cab2a1a5a022b1a5a02fadc0c1ad4022a691ad3022a69291ad1020c3b3e3c3b2d6805270602a52c36299291030a2935293a293ca06502013b03051ab20202031ab1023e2a692e3cab2c1aab022bfaa0fa960c1aa6022a692c2a693b3e3c3b2d6805270702661a970202612c362c3cab2a2a1a8f020c1a8f022a691a8e022a693b3e3c3b2d6805270502412c362d372d3cab2a2afab20c2f3cab2d2afaaa0c293b691a6b022a691a6a022a691a69022a692f2a691a65022a691a64022a693b3b3b3b2d6805270d02031a580243000000|@9428,1,@1733,@5081,@8945,@9429,@9435,@8945,@9437,@9440,@5091,@9441,@4152,@9442,@5091,@5669,@9444,@5598,@9445,@9446,@5091,@9447,@8945,@8945,@5091,@9441,@5091,@9448,@5091,@9449,@9426,@5091,@9450,@5091,@5091,@5091,@5091,@9451,@5091,@9453,@4217,@9454,@5091,@5091,@5541,@5091,@5091,@5539,@5091,@5091,@5537,@9405,@9314,@9341,@9338,@5091,@9456,@5091,@5091,@9449,@5091,@5663,@5091,@5091,@9449,@4569,@5091,@9457,@5091,@9458,@9459,@4062,@9460,@5091,@9462,@8945,@9464,@5091,@9469,@9470,@5268,@5093,@5091,@9471,@8945,@9472,@5091,@9485,@5091,@9486,@5091,@9487,@8201,@8200,@9370,@9490,@8213,@5091,@9491,@5091,@4137,@9480,@9492,@5268,@5535,@7718,@9493,@4127,@4052,@9188,@9493,@9494,@8930,@5641,@9495,@9496,@9498,@9499,@5091,@9500,@5091,@9502,@5091,@9503,@5091,@5267,@5268,@5093,@5091,@9504,@4128,16777215,@4054,@5268,@5093,@9505,@8921,@8915,@8945,@5091,@9506,@9507,@5091,@9418,@5091,@9516,@5091,@5091,@9427,@5572| 16665:D12,76|fb152b352c362a352b372c3a3bfa490c2a2e2bfa470c3e2e692f3cab2efa412bfa42fa440cfa452a69fa452a69fa452a692e2a69293ba00303300205302afa380c3b3e3c3b2d6805270f4200|@9431,1,@1734,@9314,@9337,@4217,@9432,@9435,@5091,@5663,@5091,@9430| 16666:D10,72|fb0f2b352c362a362b383e2a692b929103262b3529fa3d0c3bfa3d0c2a302bfa3b3bfa3c0c293b69fa3a2a69fa3a2a69fa3a2a69270702013b2a2a693b3d3b3b2d68052707420000|@9434,1,@1735,@9405,@9314,@9341,@9338,@5091,@9433,@5091| 16667:D9,184|fb112c3ba40304fabb02ab2e929103a52e352f36293ba0030b2a2f692e0c293b6964028e2a2f692e0c30fa9ca003033c0212303b3bef3ca00309303ffa8a3f3ced02013b03033c023b30fa80a003033c0212303b3bef3ca00309303ffa6e3f3ced02013b03033c021b30fa64a003033c0212303b3bef3ba00309303ffa523f3bed02013b913c2a3b6a3e3369293b692b2a692e2a693b3b3b3b2d6805220d3cab3222102b2210fa2c0cfa2d2a692c2a69270b6502013b1f04|@9436,1,@1736,@9345,@4137,@4152,@4062,@9435,@5091| 16668:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1737,@9430| 16669:D12,96|fb122b352c362a352b372c23063bfa5c0c2a2e2bfa5a0c3e2e692d929103262d3529fa500c3bfa440c2a332bfa4a3bfa4b0c293b69fa492a69fa492a69fa492a69270702013b2a2a69293ba003032c02052c2afa370c3b3e3c3b2d6805270b42|@9439,1,@1738,@9314,@9337,@9405,@9341,@9338,@5091,@5663,@5091,@9438| 16670:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1739,@9438| 16671:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1740,@9440,@5598| 16672:D4,16|fb082b352c362a35292bfa10307e0600|@9443,1,@1741,@9426| 16673:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1742,@9444| 16674:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1743,@9445| 16675:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1744,@9446| 16676:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1745,@9448| 16677:D7,56|fb132b352c362a352b362b3cab2a2afa330c2d3cab2d2afa2b0c293b69fa292a69fa292a69fa292a692f2a693b3b3b3b2d6805270d420000|@9455,1,@1746,@9426,@5091,@6457,@5091| 16678:D3,12|fb042b353e2a696442000000|@9461,1,@1747| 16679:D4,12|fb052b352c36fa102d7e0300|@9466,1,@1748,@9465| 16680:D15,116|fb0e2c352d372e3a3e2c692b929103262b3529fa6b0c3bfa6b0c2a332bfa693bfa6a0c293b69fa682a69fa682a69fa682a69270702013b2b352808a003033b0219303cab2c2afa540c293b69fa522a69fa522a69fa522a692705293ba003032a02052a2afa460c2c2a693b3b3b3b2d6805270843|@9468,1,@1749,@9405,@9314,@9341,@9338,@5091,@9433,@5091,@9426,@5091,@5663,@5091,@9467| 16681:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1750,@9467| 16682:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1751,@9470,@5267| 16683:D6,32|fb0b2b352c362a362a3cab2afa1e2bfa1ffa210c3b3e3c3b2d68052705420000|@9474,1,@1752,@4217,@9473,@9435| 16684:D8,56|fb132b352c362a352b362b3cab2b2afa330c2d3cab2c2afa2f0c293b69fa2d2a69fa2d2a69fa2d2a692f2a693b3e3c3b2d6805270d420000|@9476,1,@1753,@9475,@9426,@5091,@5663,@5091| 16685:D27,576|fb262c352d35299291034029352a362a352819a003312a3629929103262936299291031b2936293ba003102c3ba003083337293ca06402013b02013b6402013b6402013b6402013b6502013b038e2e352935293629352a36293534362935220d38220d3cab2f2a1ae2010c3e2d6922103cab302a1ad5010c293b691ad2012a692d2a691ace012a69302a6922173cab349291032d3435291abe010c3b1abd010c2a2d2b1aba013b1aba010c293b691ab7012a691ab6012a691ab5012a69270702013b293ba003032b02062b2a1aa5010c3b3b3b3b2d68052716f761012e352992910336293529352819a003292936299291031e293629929103132936293ba003083337293ca06402013b6402013b6402013b6402013b6402013b03b42f3529352a362a3629352a362935220d362935220f38220f3cab2f2a1a11010c3e2d6922123cab302a1a04010c291a2b01691a2b012a692d2a691a27012a69302a691a23012a691a22012a69221b3cab22141a1b012b1a1b011a1c010c221d3dab220f92910327220f3529facf0c3bfacf0c2a2d2bfacd3bface0c293b69facc2a69facc2a69facc2a69270702013b293ba003032b02052b2afae10c293ba003032e02052e2afad80c3b3b3b3b2d6805271c026c2f36293531383e2b6929fac469333cab31faa92bfaaafaac0c220c3dab2e929103262e3529fa610c3bfa610c2a2d2bfa5f3bfa600c293b69fa5e2a69fa5e2a69fa5e2a69270702013b293ba003032b02052b2afa7f0c293ba003032e02052e2afa760c3b3b3b3b2d6805270b64654300|@9478,1,@1754,@9426,@5091,@5091,@9405,@9314,@9341,@9338,@5091,@9456,@5091,@9479,@5267,@5091,@5091,@5268,@5093,@4062,@9480,@9435,@9482,@9483,@5598,@9484,@9477| 16686:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1755,@9479| 16687:D4,12|fb052b352c36fa102d7e0300|@9481,1,@1756,@9426| 16688:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1757,@9482| 16689:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1758,@9483| 16690:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1759,@9484| 16691:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1760,@9477| 16692:D14,316|fb152b3ba403061a3e01f72d012c9291f826012c352d36293ba003832a352b382a3b3bef293ba003051a2001024e293db1292808b1293cb2293fb4291a1101a503043b5002041a0b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a69323cab2d2afad20c293b69fad02a692d2a693b3b3b3b2d6805293b69270b02972a352b382a3b3bef293ba00304fab2024c293db1292808b1293cb2293fb429fa90a503043b500203fa8b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a69323cab2d2afa520c293b69fa582a692d2a693b3b3b3b2d680529fa4d693b3b3b3b2d680522113cab220e2afa400cfa412a692c2a6927106502013b4300|@9489,1,@1761,@9345,@9488,16777215,@4054,@9426,@5091,@9488,@5091,@5480,@9487,@5091| 16693:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1762,@9490| 16694:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1763,@9492,@5531| 16695:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1764,@9495,@5634| 16696:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1765,@9498| 16697:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1766,@9499| 16698:D3,12|fb052b3529353e2a69654200|@9501,1,@1767| 16699:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1768,@9505,@5267| 16700:D14,156|fb192c929103912c352d362a352b362c39303ba40304fa90027a290304fa8d02013b313cab2d2afa870c333cab2e2afa7f0c293b69fa7d2a69fa7d2a69fa7d2a692f2a693b3e3b3b2d6805220e3ba00316293b69293ba00303340208342afa6022157e1564022b29fa5a69293ba00303340205342afa510c3b3b3b3b2d680522153cab22122afa440cfa452a692c2a692706270b270502013b430000|@9509,1,@1769,@9345,@9510,@9426,@5091,@5663,@5091,@9512,@9513,@9508,@9507,@5091| 16701:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1770,@9512| 16702:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1771,@9508| 16703:D4,12|fb052b352c36fa102d7e0300|@9519,1,@1772,@9311| 16704:D3,12|fb052b3529353e2a69654200|@9523,1,@1773| 16705:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1774,@9524| 16706:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1775,@9526,@5634| 16707:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1776,@9527| 16708:D28,348|fb142b3ba403061a5e01f74c012c353da003422c3629352a362b372f3cab2c2a1a49010c2b03051a460102031a45013e2a69333cab2f2a1a3e010c293b691a3b012a692d2a69302a693b3b3b3b2d6805270ef704012c353ca003552c362d372d3cab1a1b012b1a1b012c1a1b010c2f3cab2d2afaf70c293b691a10012a691a0f012a691a0e012a69291a0c010c293ba00303300206302a1a02010c1a02012a691a01012a693b3e3b3b2d6805270e02a92c353ba003752c3629352a36293b3bef293ba00304fae10244293cb1292808b1293cb2293fb429fad3a503043b500203face103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c95502c27083e2a692d32fa580c29fa9c69fa9d2a692c2a693b3c3b3b2d6805270a022e2c353ea003222c36fa4b2afa842ffa4d0c29fa810cfa822a69fa822a693b3c3c3b2d6805270502062c363e2a6964430000|@9530,1,@1777,@5081,@9528,@9421,@9309,@9311,@5091,@9531,@4152,@9533,@5091,@5638,@5091,@9535,@9536,@5091,@5640,@4133,16777215,@4054,@5267,@5268,@4062,@9537,@5091,@9529| 16709:D4,12|fb052b352c36fa102d7e0300|@9532,1,@1778,@9302| 16710:D9,164|fb112d929103972d352e36293ba003142d3ba40304fa9902092a2e69310c293b696402772d3ba40304fa89026e2efa88a003033c02122e3b3bef3ca003092e3ffa763f3ced02013b03033c021b2efa6ca003033c02122e3b3bef3ca003092e3ffa5a3f3ced02013b912b2f69320c3c2b3b6a3e3269293b692b2a692d2a693b3b3b3b2d6805220c3cab22103322102cfa2f0cfa302a692c2a69270b6502013b1f04000000|@9534,1,@1779,@9345,@9345,@4137,@4152,@9533,@5091| 16711:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1780,@9535,@5634| 16712:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1781,@9536| 16713:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1782,@9537,@5634| 16714:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1783,@9307| 16715:D8,128|fb122b352c362a362b392a3b3bef293ba00304fa77024a293db1292808b1293cb2293fb429fa69a503043b500203fa6410292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a692e3cab2d2afa2d0c293b69fa2b2a692d2a693b3e3b3b2d6805270c42|@9540,1,@1784,@9488,16777215,@4054,@9311,@5091| 16716:D18,144|fb112b3ba40304fa9302832c353ba0030c2c362c3cab2a2afa862f7e062c353ca0034f2c362d372d3cabfa782bfa792cfa7a0c2f3cabfa6c2efa6d2cfa6e0c29fa6e0c293ba00304fa6a0206fa662afa670c293ba003032d02052d2afa5e0cfa5f2a69fa5f2a693b3e3b3b2d6805270b021c2c37fa522afa532ffa300cfa512a69fa512a693b3e3b3b2d680527044300|@9543,1,@1785,@5081,@9426,@9531,@4152,@9533,@9544,@9496,@9545,@9546,@5091,@9547,@9542,@8945,@5091,@9425| 16717:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@1786,@9544,@5634| 16718:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1787,@9545| 16719:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1788,@9546| 16720:D4,12|fb052b352c36fa102d7e0300|@9549,1,@1789,@9548| 16721:D11,160|fb172c362d372e390b02002c3ca003062d353da002013b031b2d3629352a362b372c382b2b2b6a296801302a452f465026070206293b452e465029352a363e31692b929103292b3529352a36290304fa5b0202fa5b3e2a6922103cab2d2afa540c293b69fa522a692d2a69270902013b220c3cab2c2afa440c293b69fa422a69fa422a69293ba003032e02052e2afa380c302a693b3e3b3b2d68052711430000|@9551,1,@1790,@9421,@9309,@9311,@5091,@9528,@5091,@9552,@9550| 16722:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1791,@9550| 16723:D15,240|fb4f2d350b03003b2afaf10c5029352a362b372b2b2b6a0b03003b2afade0c5029362a370b03003b2afad10c5029352a362b372b2b2b6a0b03003b2afabe0c5029362a370b03003b2afab10c5029362a3722252306faa92a221e6a22272308faa32a22196a2229230cfa9d2a22146a222b3afa982a220f6a222d230bfa922a346afa91223022296a223039fa8b2214222a22242d32221022142210332224220d2212680d3b06fa742a69fa742b6922323b22382e30221c22312216222c22162227221622392242223a22342214221922232231221a2248362217221722422235fa420c50fa42222c69222e22367d3800|@9554,1,@1792,@8966,@16725,@16726,@16727,@16728,@16729,@16730,@9558,@16734,@16735,@9563,@16724| 16724:D6,96|fb122b352c362a2c360c299291030a2935293a2992916502013b03122935293a29352936293b3b3ce350260402023b502a2306299291032329352c380b02002cfa2a2bfa2b0c5029352a3629fa260c2b3b69313b3b2ce3270902013b27044200|@12758,1,@2814,@12757,@8023,@10925| 16725:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1793| 16726:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1794| 16727:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1795| 16728:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1796| 16729:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1797| 16730:D5,40|fb093b06fa2e2a692b370c2a353b2d3623090c293ba003032a02072a2afa19317e07270442000000|@9556,1,@1798,@16731,@9555| 16731:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@9557,1,@1799| 16732:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1800,@9555| 16733:D3,4|fb023b42|@9559,1,@1801| 16734:D3,36|fb082936353b2a299291031229362b3caa292b25042504511e113b6502012a6564420000|@9560,1,@1802| 16735:D7,136|fb0d293635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba00304fa6a02553b2a299291031229362b3caa292b25042504511e113b6502012a6529fa4ea80303fa4d103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa1d2a69664200|@9561,1,@1803,@4725,16777215,@5803,@16736| 16736:D4,24|fb052936932c2aa90303fa18103b502a362d3bdb64420000|@9562,1,@1804,@4599| 16737:D23,1096|fb3a221b9291f80e04221b35221c362a353ca0f8ce012a362b37221e299291032829352a362a352b361a28042223692b350c501a22042223692a350c502b250526041e263b270402013b641a0e042e22202d6b0b03002d2a1a05040c5029352a362224353b2a299291031229362b3caa292b25042504511e113b6502012a65222635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051abc0302593b2a299291031229362b3caa292b25042504511e113b6502012a65291a9f03a803041a9d03103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029651a6a032a69220f299291039229352a362a352b362c372d382e3929220d3322342237321a4b030c29352a372b392c3a3b3069223923103b2a0c3d2a69293b692d2a6932353ca0032f323633382a352a352993293ba003051a070302132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020132292210342d220c220c6806220f3b3b2ce35022102a69221c0c502212251526141e91261402023b50502228310c5022103b222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d1a9902222e7b1c2e2a353ba0f89a012a362b37221e299291032829352a362a352b361a7b022223692b350c501a75022223692a350c502b250526041e263b270402013b641a61022e22202d6b0b03002d2a1a30020c5029352a362224353b2a299291031229362b3caa292b25042504511e113b6502012a65222635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051ae70102593b2a299291031229362b3caa292b25042504511e113b6502012a65291aca01a803041ac801103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029651aad012a69220f299291035f29352a362a352b362c372d382e392f3a30230631230732230833230934230a220c230b22132210223a223d2214223b223b223b223b223b223b223b223b2244223c223c223c223c223c223c223c223c222b1a54010c50292503511e5f5102023b5050221b310c5022103b222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222dfaf8222e7b1c2e2a362b371a04012a221e6a2b3b69221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e680533220c22172217222b222e2ffad1221efad10c50222938293503033b020a221422146929222d696422102a222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222dfa66222e7b1c2e221a299291032629352a362a352b36fa74221f692b350c50fa6f221f692a350c502b250526041e243b270402013b641f1a|@9564,1,@1805,@16739,@16752,@16756,@9069,@4725,16777215,@5803,@16759,@9598,@9563,@17583,@17584,@17585,@17587,@12521,@17744,@4062,@12542,@17745,@16738| 16738:D7,100|fb102b352c362a3b3bef293ba00304fa5f0242293cb1292808b1293cb2293fb429fa51a503043b500203fa4c10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a282ee4502c95502c27082b372a2a3036fa1f337b0508000000|@9566,1,@2813,@4139,16777215,@4054,@9588| 16739:D5,20|fb0a2b352c3629382b2a2e36fa12fa14327b0606|@9566,1,@1806,@9567,@9565| 16740:D10,52|fb0b3bfa3b0c3bfa3b0cfa3cfa3e3b2d2d3c3b3c6808280c2a693bfa332f36fa336b29fa33692b2a6928142a3b6a270742000000|@9568,1,@1807,@7760,@8090,@4683,@8091,@4868,@4683,@7905| 16741:D5,28|fb073b06fa222a2f2f33680529fa1d0c302a0c643b2a0c513b651f04|@9570,1,@1808,@16742,@9569| 16742:D4,16|fb07fa182c2b362c372d382e39680642|@9571,1,@1809,@16743| 16743:D4,20|fb092b2a362b372c382d392e3afa11317b080300|@9573,1,@1810,@9572| 16744:D17,356|fb342f352806a0f854012f3630372a3529353ca003302a3ebb29920305293ba2020529942811a0030a1a44012a1a44010c020129299203043b5002041a390110293ca06502013bf8100131351a2d010c293b3bef293ba003051a240102423c2ab1292808b1293cb2293fb4291a1501a503043b5002041a0f0110292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f285fe450313f2d280534ec502b95502b27073435293caa220d3b3b2ce3220d3a220e2306220f230a2210230e2211230f2b352e352b352d35302c2e2c2e6805220d2afaba6a3b22180c3c2a6922143fb7293ba09129063c2a3b3b6b2d2a316a3b3269293b6922173b2b2e6b28053b221a2c3b680522233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805222bfa6869fa692a6964fa680c29fa68fa6a0c29fa6a0c3b3e3b3b2d68053b3b2b306b2232230c2a2a0c50222e3b3b2213e3272c02013b6602013b1f06000000|@9575,1,@1811,@4564,@4565,@4560,@9576,@4188,16777215,@4054,@9578,@9579,@9574,@4052,@8818,@8820,@9106| 16745:D9,204|fb152b281aa803282b281aad2c281aae293ba003033c0207293ba2293ba06403032a02032a3cab293cab66faab0c0202faaa2c281aae293ba003033b0210293ba2293ba003032a02042a281aaa64292861aa293ba203033c02042928ffa60303fa7e103b50fa7d2a3bdb2d3b3bef2a3b3bef2a3ba003032b024e293ba003032f02462a2ab1292808b1293cb2293fb429fa56a503043b500203fa5110292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f220cec503f32b1333f2e2c220cec502c95502c270827074200|@9577,1,@1812,@9576,@4062,@4076,@4064,16777215,@4054| 16746:D4,8|fb03fa102c694200|@9581,1,@1813,@16747| 16747:D4,12|fb04fa142c2b366a42000000|@9582,1,@1814,@16748| 16748:D4,16|fb062b2a362b37fa132e7b0503000000|@9584,1,@1815,@9583| 16749:D7,104|fb0b2cfa6f0c292d0c2f2a0c642a350a07001d00200023003600430046000e002a3629352b2a31fa4f327b050902362902332902302a362b372b2a31fa3a0c292c32fa34337b050a2a3629fa2b302dfa2b327b060829020d2a3629fa1b302dfa1f327b0608654400|@9586,1,@1816,@8044,@9583,@9587,@9585| 16750:D4,32|fb0a2e929103152e352f3629303030fa1b0c2b362a2a3234327b050a2b1f0400|@6193,1,@1817,@9587| 16751:D4,32|fb092e929103132e352f3629303030fa1b0c292c3133317b05092b1f04000000|@6193,1,@1818,@9585| 16752:D7,100|fb102b352c362a3b3bef293ba00304fa5f0242293cb1292808b1293cb2293fb429fa51a503043b500203fa4c10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a282ee4502c95502c27082b372a2a3036fa1f337b0508000000|@9566,1,@1819,@4139,16777215,@4054,@9588| 16753:D6,20|fb082c35fa1a2ffa1b2f6b2a3b2bfa18307b0507|@9589,1,@1820,@16754,@9588,@4642| 16754:D4,44|fb0c2c2c2a9291031e2a352b36312b2d303631373238fa200c2a2a2505250526031e1d3b6602012965440000|@4645,1,@1821,@9590| 16755:D11,360|fb112f351a6d01a003d32d3b3bef313b3bef2a3ba00303320253293ba003032f024b2a2ab1292808b1293cb2293fb4291a4501a503043b5002041a3f01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f220cec503f32b122113f2e2c220cec502c95502c2708293b3bef293ba003051a07010244293cb1292808b1293cb2293fb429faeda503043b500203fae8103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27083435fab1a003043b500203fab8103b50343729372b2a34220d220c7b050f2f35faa7a003802d3b3bef313b3bef2a3ba00303320251293ba003032f02492a2ab1292808b1293cb2293fb429fa6ca503043b500203fa67103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f220cec503f32b122113f2e2c220cec502c95502c27083235fa3fa003043b500203fa32103b50323729382b2a32fa2efa30347b060d3b1f0600|@9591,1,@1822,@21,16777215,@4054,@4139,@4594,@18,@9567,@9565| 16756:D9,204|fb12fad42a36692e3b3bef293ba00304faca0245402ab1292808b1293cb2293fb429fabca503043b500203fab7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa983f2d3f40ec50220d3f2d280e34ec502b95502b2707293b3bef293ba00304fa84024829282bb1292808b1293cb2293fb429fa69a503043b500203fa64103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa473f2e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa28220f7b070d000000|@9593,1,@1823,@16757,@9595,16777215,@4054,@9596,@9592| 16757:D4,12|fb0529362cfa112d7e030000|@9594,1,@1824,@9300| 16758:D7,168|fb0d2f230d29299291031a29352a362a35faa1a003052a68010207292503511e193b6502013b64293ba00342fa8a299291031a29352a362a35fa79a003052a68010207292503511e193b6502013b64293ba00303fa66103b5029352935fa55a003043b500203fa5810293765021329352935fa40a003043b500203fa431029376429310c296801332a32346b220c38220d230c220d03082a3b3b3ce35002023b502b2a347d0f0000|@9597,1,@1825,@61,@5420,@5469,@4594| 16759:D4,24|fb052936932c2aa90303fa18103b502a362d3bdb64420000|@9562,1,@1826,@4599| 16760:D17,612|fb303b06293b3b1a6602e35030064028401a6002da3c2a692906291a5602694028403bda3c2a692906293b690b04002216353ba003472216362217370b060031221d323b1a31022e22252222221e2227221c221922292220221d222b222836222b1a18020c5029352a362b382c39220d2d452c462b472a4850260d028f2216353da0034622163629352a362b372c382d392c2b2d2c31221e1add0122232220221c2225221a22172227221e221b222922263622291ac9010c302a35452a36462a38472a394851260602422216362217372218380b060032323222201a9a012e2223222722242222362221222a221f221c222c1a8f010c5029352a362b382c39220e2d452c462b472a4850260e29352a362b372c382c3b1a6f011a70010c221a062a060b02003b2a221922222218221833331a5c010c5029352a36293ba003051a520102593b2a299291031229362b3caa292b25042504511e113b6502012a65291a3501a803041a3301103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652b3ba00304faf002573b2c299291031229362b3caa292b25042504511e113b6502012a6529fad4a80303fad3103b503b502928403bda3b2e293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965faa122232c22266b2b932b932a2aa0290304220e0206fa8f220f2e6a2212353ca003302212362213382a352a352993293ba00304fa6102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020222122922133422142e222e680627231f06000000|@9599,1,@1827,@9600,@4719,@4062,@10790,@10791,@10827,@12500,@4642,@12503,@4725,16777215,@5803,@17582,@16761| 16761:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2649,@8143| 16762:D33,468|fb172b363ca203061ad501f7c3012b3529353ba0038d2c3529362e363cab2a2a691ac001352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a9e01a003033c020f291a9801a003033c0205291a9201a06402013b9102013b02013b03192a1a8401691a84012a691a83012a693b3e3c3b2d68056602012a64020129293b691a70012a691a6f012a693b3c3b3b2d68052709f72d012c363ca203061a5c01f721012c3529353ca003852d3529362f363cab2a2a691a4701352a2a0c6429353ba00355293929929103312936929103282935353ea0031d293536291afd00a003033c020d29faf8a003033c020429faf3a06402013b9102013b02013b03162afae669fae72a69fae72a693b3e3c3b2d68056602012a64020129293b69fae52a69fae52a693b3c3b3b2d6805270902932d363ca20304fad402892d3529353da00304facc027c2e363ca20304fac602722e3529362a3731363cab293ba20304fab70240293cab2c2a69fa6d352a2a0c642c3cab2e2a69faa435faa52a0c642a2a0c6429fa9f69faa02a69faa02a69faa02a69faa02a69312a69fa9d2a69fa9d2a69270dfa9b2a693b3c3b3b2d6805293b69fa912a69fa912a693b3c3b3b2d6805270a646464420000|@9602,1,@1828,@6303,@111,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10757,@6303,@75,@5091,@10764,@6303,@10771,@6303,@8198,@118,@10778,@9320,@5091,@10780,@5091,@9324,@5091,@10782,@9327,@5091,@9601| 16763:D60,564|fb2c2b363ca203061a3502f724022b352c363cab293ba203061a2802f7f3012a352a3cab2a2a692e37352a2a0c642d3ca203061a1202f7c0012e372e3cab293ba203061a0602f76c012a372a3cab2a2a691afc01352a2a0c642d3ca203061af301f738012e362e3cab293ba203051ae70102e62a362a3cab2a2a691ade01352a2a0c642d3ca203051ad50102b32e382e3cab2a2a691ac401352a2a0c64313da203051abf0102803235323cab2a2a691a9e01352a2a0c64220c3ea203051aa801024c220d37220d3cab2a2a691a8d01352a2a0c6422113922113cab2a2a691a7b01352a2a0c64291a8201691a82012a691a81012a691a80012a691a7f012a69322a691a7b012a691a7a012a69270f1a77012a691a76012a692c2a691a72012a691a71012a6927091a6e012a691a6d012a692c2a691a69012a691a68012a6927091a65012a691a64012a692c2a691a60012a691a5f012a6927091a5c012a693b3c3b3b2d68053335333cab2a2a69fae1352a2a0c64291a4401691a44012a691a43012a691a42012a691a41012a69322a691a3d012a691a3c012a6927101a39012a691a38012a692c2a691a34012a691a33012a6927091a30012a693b3c3b3b2d68053336333cab2a2a69220e36352a2a0c64291a1701691a17012a691a16012a691a15012a691a14012a69322a691a10012a691a0f012a6927101a0c012a691a0b012a692c2a691a07012a691a06012a6927091a03012a693b3c3b3b2d6805293b69faf92a69faf92a693b3c3b3b2d680527084200|@9605,1,@1829,@6303,@8198,@8198,@8198,@7,@8198,@8198,@75,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@9608,@9327,@9320,@5091,@9610,@5091,@9324,@5091,@9608,@5091,@9324,@5091,@9612,@9327,@5091,@9604| 16764:D57,584|fb1d2b363ca203061a4902f739022b3529353ba003ea2c3529362a372b382c3931363cab293ba203051a2c0202ad293cab2e2a691a2502352a2a0c642c3ca203051a1c02027c2c3cab302a69220c36351a11022a0c642a2a0c642f3da203051a060202452f3cab312a691aff01352a2a0c64323cab220c2a691ae001352a2a0c64291aeb01691aeb012a691aea012a691ae9012a691ae8012a69312a691ae4012a691ae3012a69270d1ae0012a691adf012a692c2a691adb012a691ada012a6927081ad7012a691ad6012a692c2a691ad2012a691ad1012a6927081ace012a693b3c3b3b2d6805293b691ac3012a691ac2012a693b3c3b3b2d6805270cf746012c363ca203061aaf01f73a012c3529353ca003b52d3529362a372b3831363cab293ba203051a9401027b293cab2b2a691a3901352a2a0c642c3ca203051a8001024a2c3cab2f2a691a1101352a2a0c642f3cab332a691a6b01351a6b012a0c642a2a0c64291a6401691a64012a691a63012a691a62012a691a61012a69312a691a5d012a691a5c012a69270d1a59012a691a58012a692c2a691a54012a691a53012a6927081a50012a693b3c3b3b2d6805293b691a45012a691a44012a693b3c3b3b2d6805270b027c2d363ca203051a320102712d3529362a3730363cab293ba203051a2201023e293cab2c2a691a1b01351a1b013337693b2a3d3d6b642a0c642a2a0c642c3cab2e2a693437352a2a0c64291afe00691afe002a691afd002a692f2a692709faf82a693b3c3b3b2d6805293b69faee2a69faee2a693b3c3b3b2d6805270a646442|@9622,1,@1830,@6303,@8198,@75,@8198,@9623,@8198,@115,@9320,@5091,@9627,@5091,@9324,@5091,@9629,@5091,@9324,@5091,@9631,@5091,@9324,@5091,@9633,@9327,@5091,@9635,@6303,@8198,@8198,@116,@9653,@9320,@5091,@9655,@5091,@9324,@5091,@9633,@5091,@9324,@5091,@9657,@9327,@5091,@9659,@6303,@5086,@118,@16777,@6393,@5091,@9324,@6395,@5091,@9621| 16765:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@1831,@115| 16766:D5,20|fb052b35290304fa170202fa173e2a6965420000|@4042,1,@1832,@6477,@6476| 16767:D4,12|fb04fa142a362d6a42000000|@4042,1,@1833,@16768| 16768:D5,24|fb0a2b362a37362d3529fa182c692d2f36fa15327b060600|@9644,1,@1834,@16769,@9643| 16769:D3,12|fb042c2c692a362c7d040000|@9645,1,@1835| 16770:D11,404|fb1b2e352d3ba403061a9401f78201d9293729299291032f29352a362a35293533a00318293533a003043b5002041a7301103b5029372968016402082a250426031e2e3b6602013b642992910304293502013b29299291031729352a362a220ea003033c0207292503511e163b6502013b6403061a3101f715017881ba220c2c69d9293729299291032929352a362a3529352211a0031122101a1001313b6b2c3b3b2ce3505002072a250426031e2826030216d9220efaf42f3b6b2906292e692c3b28082ce350260450220d3cab332a22110c64fada0c293b69fad82a69fad82a693b3e3b3b2d6805d9293729299291032829352a362a3529352218a003102217faa922123b6b2c3b3b2ce36402082a250426031e273b660216d92215fa8d22103b6b2906292e692c3b28082ce32704642c270bf102586dd9293729299291032829352a362a352935220fa00310220efa5a323b6b2c3b3b2ce3505002072a250426031e2726030216d9220cfa3e303b6b2906292e692c3b28082ce3502604502b352c362d372b2b2bfa316b6610642704641f04|@9647,1,@1836,@4045,@4594,@4045,@4162,@9648,@4383,@9650,@9646| 16771:D12,192|fb0c2b353ba003b42b39299291039a29352a36293ba003032e028b2a353ea003752a3629faa6a003033c0212293b3bef3ca00309293ffa943f3ced02013b03032f025029fa8aa003033c0212293b3bef3ca00309293ffa783f3ced02013b03032f023029fa6ea003033c0212293b3bef3ca00309293ffa5c3f3ced02013b03032f02102ffa5269fa532a693b3e3c3b2d6805656402102efa4769fa482a693b3e3c3b2d6805656502102cfa3c69fa3d2a693b3e3c3b2d6805656402012b420000|@9649,1,@1837,@4184,@4216,@4133,@4390,@4388,@4390,@4388,@4390,@4388| 16772:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@1838,@115| 16773:D4,8|fb03fa102c694200|@4042,1,@1839,@16774| 16774:D7,44|fb0c2b362a36362d352b3ba40304fa2802062b2a2cfa250c29fa250cfa262a693b3c3b3b2d68052706420000|@9644,1,@1840,@9668,@9669,@9671,@9667| 16775:D8,80|fb0a2c929103442c352d36293ba003142f3ba00304fa4502092a30692e0c293b696402242f3ba00304fa35021b2a30692e0c303cab292c31fa2a0cfa2b2a69fa2b2a692d2a6927056502013b44000000|@9670,1,@1841,@9668,@9668,@9669,@4383,@4384| 16776:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@9673,1,@1842,@9671,@9672| 16777:D15,108|fb122b363ba20304fa6e02512b35362c363cab2a2a69fa64352a2a0c642f353530363cab2a2a69fa5735fa583236693b2a3e3c6b642a0c642a2a0c6429fa4969fa4a2a69fa4a2a69fa4a2a69fa4a2a69322a69fa472a69fa472a69270ffa452a693b3c3b3b2d680565420000|@4036,1,@1843,@8198,@119,@116,@16779,@9320,@5091,@9680,@5091,@9324,@5091,@9676,@9327| 16778:D9,132|fb112b3529920305293ba2020529942811a00308fa7a2afa7b0c020129293dfa770c293b3bef293ba00304fa6f024e3e2ab1292808b1293cb2293fb429fa61a503043b500203fa5c10292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2830e4502b28052877e4502b28062878e450313f2d280734ec502b95502b27073e2a6927054200|@4042,1,@1844,@4564,@4565,@4569,@9678,16777215,@4054| 16779:D3,12|fb052936352c2a2d7d040000|@9679,1,@1845| 16780:D4,8|fb03fa102c694200|@9690,1,@1846,@16781| 16781:D16,312|fb102b363ca203061a3901f728012b3529353ba003822c3529362e363cab2a2a69662b36360c29353ba00355293929929103312936929103282935353ea0031d293536291a0101a003033c020d29fafca003033c020429faf7a06402013b9102013b02013b03162afaea69faeb2a69faeb2a693b3e3c3b2d68056602012a64020129293b69fad92a69fad92a693b3c3b3b2d68052705029d2c363ca20304fac802932c3529362e363cab2a2a69fabd352f36363036373136383b2c2c2c6b662a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa62a003033c020d29fa5da003033c020429fa58a06402013b9102013b02013b03162afa4b69fa4c2a69fa4c2a693b3e3c3b2d68056602012a64020129293b69fa4a2a69fa4a2a693b3c3b3b2d68052709644200|@9692,1,@1847,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@9693,@6303,@116,@5091,@9691| 16782:D81,904|fb222b363ca203061a8903f777032b3529353ba003061a7f03f768032c363ca203061a7703f75c032c3529353ca003061a6d03f74d032d363ca203061a6503f741032d3529353da0037c2e3529362a3731363cab293ba203051a4c030243293cab2c2a693236352a2a0c642c3cab2e2a69220c36352a2a0c64291a2f03691a2f032a691a2e032a691a2d032a691a2c032a69312a691a28032a691a27032a69270d1a24032a693b3c3b3b2d6805293b691a19032a691a18032a693b3c3b3b2d6805270af7bc022e363ca203061a0503f7b0022e3529353ea0038c2f3529362a3732363cab293ba203051aec020253293cab2b2a693337352a2a0c642c3cab2f2a691ad802351ad802220f36693b2a3d3d6b642a0c642a2a0c64291ac702691ac7022a691ac6022a691ac5022a691ac4022a69312a691ac0022a691abf022a69270d1abc022a693b3c3b3b2d6805293b691ab1022a691ab0022a693b3c3b3b2d6805270af71b022f363ca203061a9d02f70f022f3529353fa003563035293632363cab2a2a691a5402351a84023438693b2a3e3c6b642a0c642a2a0c64291a7402691a74022a691a73022a691a72022a693b3c3b3b2d6805293b691a67022a691a66022a693b3c3b3b2d6805270df7b00130363ca203061a5302f7a401303529352805a0f80401313529362a372b382c39220d363cab293ba203051a330202c7293cab2e2a691ad401351a2802221036693b2a3e3c6b642a0c642a2a0c642c3ca203051a130202862c3cab2f2a69221138352a2a0c642f3da203051aff0102552f3cab312a691a9401351af401221639693b2a3e3c6b642a0c642a2a0c64323cab220d2a691add01352a2a0c64291ad801691ad8012a691ad7012a691ad6012a691ad5012a69312a691ad1012a691ad0012a69270d1acd012a691acc012a692c2a691ac8012a691ac7012a6927081ac4012a691ac3012a692c2a691abf012a691abe012a6927081abb012a693b3c3b3b2d6805293b691ab0012a691aaf012a693b3c3b3b2d6805270c029531363ca203051a9d01028a313529362a3734363cab293ba203051a8d010254293cab2b2a691a8601352a2a0c642c3cab2f2a691a7c01351a7c01221136693b2a3e3c6b642a0c642a2a0c64291a6b01691a6b012a691a6a012a691a69012a691a68012a69312a691a64012a691a63012a69270d1a60012a693b3c3b3b2d6805293b691a55012a691a54012a693b3c3b3b2d6805270a646464646464420000|@9679,1,@1848,@6303,@9705,@6303,@9712,@6303,@8198,@9320,@5091,@9719,@5091,@9324,@5091,@9721,@9327,@5091,@9723,@6303,@8198,@118,@16783,@9320,@5091,@9732,@5091,@9324,@5091,@9734,@9327,@5091,@9736,@6303,@16784,@9320,@5091,@9744,@9327,@5091,@9746,@6303,@8198,@16785,@8198,@8198,@16786,@7,@9320,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@9756,@5091,@9324,@5091,@9758,@9327,@5091,@9760,@6303,@8198,@119,@116,@16787,@9320,@5091,@9680,@5091,@9324,@5091,@9676,@9327,@5091,@9704| 16783:D13,92|fb122b363ba20304fa5e02432b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a693036352a2a0c6429fa3f69fa402a69fa402a69fa402a69fa402a69322a69fa3d2a69fa3d2a69270ffa3b2a693b3c3b3b2d68056542|@4036,1,@1849,@8198,@7,@9320,@5091,@9730,@5091,@9324,@5091,@9322,@9327| 16784:D3,12|fb052936352c2a2d7d040000|@9743,1,@1850| 16785:D3,12|fb052936352c2a2d7d040000|@9679,1,@1851| 16786:D3,12|fb052936352c2a2d7d040000|@9753,1,@1852| 16787:D3,12|fb052936352c2a2d7d040000|@9679,1,@1853| 16788:D25,280|fb112b363ca203061a1901f707012b3529353ba003652c3529362a372f363cab293ba203051a00010230293cab2c2a69fafa35fafb2a0c642a2a0c642c3cab2e2a69faf0352a2a0c6429faec69faed2a69faed2a692f2a692709fae82a693b3c3b3b2d6805293b69fade2a69fade2a693b3c3b3b2d6805270a02992c363ca20304facd028f2c3529362e363cab2a2a69fac235fac33036693b2a3e3c6b642a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa97a003033c020d29fa92a003033c020429fa8da06402013b9102013b02013b03162afa8069fa812a69fa812a693b3e3c3b2d68056602012a64020129293b69fa6f2a69fa6f2a693b3c3b3b2d6805270964420000|@9775,1,@1854,@6303,@5086,@118,@9776,@115,@6393,@5091,@9324,@6395,@5091,@9778,@6303,@116,@16790,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@9774| 16789:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@1855,@7| 16790:D3,12|fb052936352c2a2d7d040000|@9775,1,@1856| 16791:D29,244|fb1c2b363ca20304faf602e62b352c363cab293ba20304faeb02b82a382a3cab2a2a692e38352a2a0c642d3ca20304fad7028b2e372e3cab2a2a69facf35fad03437693b2a3e3c6b642a0c642a2a0c64313da20304fabd02503235323cab2a2a69fab5352a2a0c64220d36220d3cab2a2a69fa9835faa5221336693b2a3d3d6b642a0c642a2a0c6429fa9569fa962a69fa962a69fa962a69fa962a69322a69fa932a69fa932a69270ffa912a69fa912a692c2a69fa8e2a69fa8e2a692709fa8c2a69fa8c2a692c2a69fa892a69fa892a692709fa872a693b3c3b3b2d6805293b69fa7d2a69fa7d2a693b3c3b3b2d680527084200|@9743,1,@1857,@6303,@8198,@8198,@118,@16792,@8198,@7,@16793,@9320,@5091,@9793,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@9795,@9327,@5091,@9792| 16792:D3,12|fb052936352c2a2d7d040000|@9753,1,@1858| 16793:D15,108|fb122b363ba20304fa6e02512b35362c363cab2a2a69fa64352a2a0c642f353530363cab2a2a69fa5735fa583236693b2a3e3c6b642a0c642a2a0c6429fa4969fa4a2a69fa4a2a69fa4a2a69fa4a2a69322a69fa472a69fa472a69270ffa452a693b3c3b3b2d680565420000|@4036,1,@1859,@8198,@119,@116,@16794,@9320,@5091,@9680,@5091,@9324,@5091,@9676,@9327| 16794:D3,12|fb052936352c2a2d7d040000|@9679,1,@1860| 16795:D95,1072|fb242b363ca203061a3104f71e042b3529353ba0f81d012c3529362e363cab293ba203051a190402e62a362a3cab2a2a691a1004352a2a0c642d3ca203051a070402b32e382e3cab2a2a691af603352a2a0c64313da203051af10302803235323cab2a2a691ae803352a2a0c64220c3ea203051ade03024c220d37220d3cab2a2a691abf03352a2a0c6422113922113cab2a2a691aad03352a2a0c64291ab803691ab8032a691ab7032a691ab6032a691ab5032a69322a691ab1032a691ab0032a69270f1aad032a691aac032a692c2a691aa8032a691aa7032a6927091aa4032a691aa3032a692c2a691a9f032a691a9e032a6927091a9b032a691a9a032a692c2a691a96032a691a95032a6927091a92032a693b3c3b3b2d6805293b691a87032a691a86032a693b3c3b3b2d68052709f7f7022c363ca203061a7303f7eb022c3529353ca0f81d012d3529362f363cab293ba203051a5b0302e62a362a3cab2a2a691ade02352a2a0c642d3ca203051a450302b32e382e3cab2a2a691ac402352a2a0c64313da203051a2f0302803235323cab2a2a691ab602352a2a0c64220c3ea203051a1803024c220d37220d3cab2a2a691a8d02352a2a0c6422113922113cab2a2a691a7b02352a2a0c64291af202691af2022a691af1022a691af0022a691aef022a69322a691aeb022a691aea022a69270f1ae7022a691ae6022a692c2a691ae2022a691ae1022a6927091ade022a691add022a692c2a691ad9022a691ad8022a6927091ad5022a691ad4022a692c2a691ad0022a691acf022a6927091acc022a693b3c3b3b2d6805293b691ac1022a691ac0022a693b3c3b3b2d68052709f7c4012d363ca203061aad02f7b8012d3529353da0038d2e35293630363cab2a2a691abc01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a7202a003033c020f291a6c02a003033c0205291a6602a06402013b9102013b02013b03192a1a5802691a58022a691a57022a693b3e3c3b2d68056602012a64020129293b691a44022a691a43022a693b3c3b3b2d68052709f722012e363ca203061a3002f716012e35293630363cab293ba203051a210202e22a362a3cab2a2a691a1401352a2a0c642d3ca203051a0b0202af2e382e3cab2a2a69fafb352a2a0c64313da203051af601027d3235323cab2a2a69faee352a2a0c64220c3ea203051ae001024a220d37220d3cab2a2a69fac6352a2a0c6422113922113cab2a2a69fab5352a2a0c64291abc01691abc012a691abb012a691aba012a691ab9012a69322a691ab5012a691ab4012a69270f1ab1012a691ab0012a692c2a691aac012a691aab012a6927091aa8012a691aa7012a692c2a691aa3012a691aa2012a6927091a9f012a691a9e012a692c2a691a9a012a691a99012a6927091a96012a693b3c3b3b2d6805293b691a8b012a691a8a012a693b3c3b3b2d6805270964646442000000|@9753,1,@1861,@6303,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5091,@9804,@6303,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5091,@9811,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@9818,@6303,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5091,@9803| 16796:D47,760|fb182b363ca203061af902f7e9022b3529353ba0038d2c3529362e363cab2a2a691ae402352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ac202a003033c020f291abc02a003033c0205291ab602a06402013b9102013b02013b03192a1aa802691aa8022a691aa7022a693b3e3c3b2d68056602012a64020129293b691a94022a691a93022a693b3c3b3b2d68052709f753022c363ca203061a8002f747022c3529353ca0038d2d3529362f363cab2a2a691a6b02352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2102a003033c020f291a1b02a003033c0205291a1502a06402013b9102013b02013b03192a1a0702691a07022a691a06022a693b3e3c3b2d68056602012a64020129293b691a03022a691a02022a693b3c3b3b2d68052709f7b1012d363ca203061aef01f7a5012d3529353da003892e3529362a3731363cab293ba203051ad6010250293cab2c2a691acf01351acf012a0c642a2a0c642c3cab2e2a691abb01351abf012a0c642a2a0c64291ab801691ab8012a691ab7012a691ab6012a691ab5012a69312a691ab1012a691ab0012a69270d1aad012a693b3c3b3b2d6805293b691aa2012a691aa1012a693b3c3b3b2d6805270af713012e363ca203061a8e01f707012e3529353ea003852f35293631363cab2a2a693136352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fae5a003033c020d29fae0a003033c020429fadba06402013b9102013b02013b03162aface69facf2a69facf2a693b3e3c3b2d68056602012a64020129293b691a14012a691a13012a693b3c3b3b2d6805270902792f363ca203051a0101026e2f3529362a3732363cab293ba20304faf2023c293cab2c2a69fa68352a2a0c642c3cab2e2a69220d37352a2a0c6429fad669fad72a69fad72a69fad72a69fad72a69312a69fad42a69fad42a69270dfad22a693b3c3b3b2d6805293b69fac82a69fac82a693b3c3b3b2d6805270a6464646442|@9833,1,@1862,@6303,@75,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@9834,@6303,@126,@5091,@10628,@6303,@8198,@116,@10635,@10638,@9320,@5091,@10672,@5091,@9324,@5091,@9874,@9327,@5091,@10674,@6303,@5091,@10680,@6303,@8198,@9320,@5091,@10135,@5091,@9324,@5091,@9874,@9327,@5091,@9832| 16797:D404,4924|fb3a2b363ca203061a3d13f72b132b3529353ba003ae2c3529362a372b3830363cab293ba203051a22130273293cab2d2a693136352a2a0c642c3ca203051a0f1302432c3cab2f2a693436352a2a0c642f3cab312a69220e36352a2a0c64291af212691af2122a691af1122a691af0122a691aef122a69312a691aeb122a691aea122a69270d1ae7122a691ae6122a692c2a691ae2122a691ae1122a6927081ade122a693b3c3b3b2d6805293b691ad3122a691ad2122a693b3c3b3b2d6805270bf774122c363ca203061abf12f768122c3529353ca0f81c012d3529362f363cab293ba203051aa71202e52a352a3cab2a2a693136352a2a0c642d3ca203051a921202b32e362e3cab2a2a69220c36352a2a0c64313da203051a7c1202803238323cab2a2a69221036352a2a0c64220c3ea203051a6512024c220d37220d3cab2a2a69221437352a2a0c6422113922113cab2a2a69221836352a2a0c64291a3f12691a3f122a691a3e122a691a3d122a691a3c122a69322a691a38122a691a37122a69270f1a34122a691a33122a692c2a691a2f122a691a2e122a6927091a2b122a691a2a122a692c2a691a26122a691a25122a6927091a22122a691a21122a692c2a691a1d122a691a1c122a6927091a19122a693b3c3b3b2d6805293b691a0e122a691a0d122a693b3c3b3b2d68052709f742112d363ca203061afa11f736112d3529353da0038f2e3529362a3731363cab293ba203051ae1110256293cab2b2a691ada11351ada113436220c386a3b2a3d3d6b642a0c642a2a0c642c3cab2f2a69220c36352a2a0c64291ab911691ab9112a691ab8112a691ab7112a691ab6112a69312a691ab2112a691ab1112a69270d1aae112a693b3c3b3b2d6805293b691aa3112a691aa2112a693b3c3b3b2d6805270af79e102e363ca203061a8f11f792102e3529353ea003af2f3529362a372b3833363cab293ba203051a74110274293cab2d2a693436352a2a0c642c3ca203051a611102442c3cab2f2a69220e36352a2a0c642f3cab312a691a4c11352a2a0c64291a4711691a47112a691a46112a691a45112a691a44112a69312a691a40112a691a3f112a69270d1a3c112a691a3b112a692c2a691a37112a691a36112a6927081a33112a693b3c3b3b2d6805293b691a28112a691a27112a693b3c3b3b2d6805270bf7da0f2f363ca203061a1411f7ce0f2f3529353fa0f81502303529362a372b382c39220c363cab293ba203061af510f7d601293cab293ba203051aeb10028b2c352a3cab2a2a69220f36352a2a0c642d3ca203051ad510025830362e3cab2a2a691acc10351acc10221536693b2a3e3c6b642a0c642a2a0c643437323cab2a2a691ab410352a2a0c64291aaf10691aaf102a691aae102a691aad102a691aac102a69322a691aa8102a691aa7102a69270f1aa4102a691aa3102a692c2a691a9f102a691a9e102a6927091a9b102a693b3c3b3b2d68052d3ca203061a8e10f70e012d3cab322a691a8610352a2a0c64303da203051a7d1002dd303cab342a69221436352a2a0c64333cab293ba203051a6610028e220c352a3cab2a2a69221936352a2a0c642d3ca203051a4f10025a2210362e3cab2a2a691af50f351a4110221f36693b2a3e3c6b642a0c642a2a0c64221437323cab2a2a691adc0f352a2a0c64291a1f10691a1f102a691a1e102a691a1d102a691a1c102a69322a691a18102a691a17102a69270f1a14102a691a13102a692c2a691a0f102a691a0e102a6927091a0b102a693b3c3b3b2d6805291a0210691a02102a691a01102a691a00102a691aff0f2a69322a691afb0f2a691afa0f2a69270e1af70f2a691af60f2a692c2a691af20f2a691af10f2a6927081aee0f2a691aed0f2a692c2a691ae90f2a691ae80f2a6927091ae50f2a693b3c3b3b2d6805293b691ada0f2a691ad90f2a693b3c3b3b2d6805270cf7af0d30363ca203061ac60ff7a30d303529352805a00393313529362a372b38220c363cab293ba203051aa90f0257293cab2d2a69220d36352a2a0c642c3ca203051a950f02302c3cab2f2a69221036352a2a0c642f3cab312a69221336352a2a0c64291a770f691a770f2a691a760f2a692f2a6927091a700f2a691a6f0f2a692c2a6927061a690f2a693b3c3b3b2d6805293b691a5e0f2a691a5d0f2a693b3c3b3b2d6805270bf7060d31363ca203061a4a0ff7fa0c313529352806a00370323529362a37220c363cab293ba203051a2f0f0236293cab2c2a691a280f352a2a0c642c3cab2e2a691a920d351a1a0f2a0c642a2a0c64291a130f691a130f2a691a120f2a692f2a6927091a0c0f2a693b3c3b3b2d6805293b691a010f2a691a000f2a693b3c3b3b2d6805270af7800c32363ca203061aed0ef7740c323529352807a003c1333529362a372b38220e363cab293ba203051ad00e0285293cab2d2a691a190d351ac50e221136693b2a3d3d6b642a0c642a2a0c642c3ca203051ab00e02442c3cab2f2a69221236352a2a0c642f3cab312a691a9b0e352a2a0c64291a960e691a960e2a691a950e2a691a940e2a691a930e2a69312a691a8f0e2a691a8e0e2a69270d1a8b0e2a691a8a0e2a692c2a691a860e2a691a850e2a6927081a820e2a693b3c3b3b2d6805293b691a770e2a691a760e2a693b3c3b3b2d6805270bf7a90b33363ca203061a630ef79d0b333529352808a0038e34352936220d363cab2a2a69220d39352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a260ea003033c020f291a200ea003033c0205291a1a0ea06402013b9102013b02013b03192a1a0c0e691a0c0e2a691a0b0e2a693b3e3c3b2d68056602012a64020129293b691af80d2a691af70d2a693b3c3b3b2d68052709f7050b34363ca203061ae40df7f90a343529352809a003061ad90df7e90a220c363ca203061ad00df7dc0a220c35293540a003b2220d3529362a372b382211363cab293ba203051ab20d0275293cab2b2a691aab0d352a2a0c642c3ca203051aa20d02442c3cab302a69221536352a2a0c642f3cab322a69221836352a2a0c64291a840d691a840d2a691a830d2a691a820d2a691a810d2a69312a691a7d0d2a691a7c0d2a69270d1a790d2a691a780d2a692c2a691a740d2a691a730d2a6927081a700d2a693b3c3b3b2d6805293b691a650d2a691a640d2a693b3c3b3b2d6805270bf7200a220d363ca203061a500df7130a220d352935280ba003b2220e3529362a372b382212363cab293ba203051a310d0275293cab2d2a69221336352a2a0c642c3ca203051a1d0d02442c3cab2e2a691a160d352a2a0c642f3cab322a691abc0c352a2a0c64291a030d691a030d2a691a020d2a691a010d2a691a000d2a69312a691afc0c2a691afb0c2a69270d1af80c2a691af70c2a692c2a691af30c2a691af20c2a6927081aef0c2a693b3c3b3b2d6805293b691ae40c2a691ae30c2a693b3c3b3b2d6805270bf75609220e363ca203061acf0cf74909220e352935280ca0f8f901220f3529362211363cab293ba203061ab30cf7bf012a392a3cab2a2a691af109351aa50c221538693b2a3d3d6b642a0c642a2a0c642d3ca203061a900cf77b012e352e3cab2a2a69221736352a2a0c64313da203061a790cf747013238323cab2a2a691aab09351a6b0c221d39693b2a3e3c6b642a0c642a2a0c64220c3ea203061a550cf70201220d3a220d3cab2a2a69221f3a352a2a0c6422103fa203051a3b0c02cc2211230622113cab2a2a691a870b352a2a0c6422142805a203051a200c029422153622153cab2a2a691a150c352a2a0c6422182806a203051a0a0c025d22193722193cab2a2a691a2309351afb0b222d38693b2a3e3c6b642a0c642a2a0c64221d2307221d3cab2a2a691ab80a352a2a0c64291ad70b691ad70b2a691ad60b2a691ad50b2a691ad40b2a69322a691ad00b2a691acf0b2a69270f1acc0b2a691acb0b2a692c2a691ac70b2a691ac60b2a6927091ac30b2a691ac20b2a692c2a691abe0b2a691abd0b2a6927091aba0b2a691ab90b2a692c2a691ab50b2a691ab40b2a6927091ab10b2a691ab00b2a692c2a691aac0b2a691aab0b2a6927091aa80b2a691aa70b2a692c2a691aa30b2a691aa20b2a6927091a9f0b2a691a9e0b2a692c2a691a9a0b2a691a990b2a6927091a960b2a693b3c3b3b2d6805293b691a8b0b2a691a8a0b2a693b3c3b3b2d68052709f74407220f363ca203061a760bf73707220f352935280da0f8150122103529362a372213363cab293ba203051a580b02da293cab293ba203051a4f0b028b2b352a3cab2a2a69221636352a2a0c642d3ca203051a390b02582f362e3cab2a2a691a4008351a2c0b221c36693b2a3e3c6b642a0c642a2a0c643337323cab2a2a691a2808352a2a0c64291a0b0b691a0b0b2a691a0a0b2a691a090b2a691a080b2a69322a691a040b2a691a030b2a69270f1a000b2a691aff0a2a692c2a691afb0a2a691afa0a2a6927091af70a2a693b3c3b3b2d68052d3cab302a691ae90a352a2a0c64291ae40a691ae40a2a691ae30a2a691ae20a2a691ae10a2a69312a691add0a2a691adc0a2a69270e1ad90a2a693b3c3b3b2d6805293b691ace0a2a691acd0a2a693b3c3b3b2d6805270af716062210363ca203061ab90af709062210352935280ea0039f22113529362213363cab2a2a691ac406351a9c0a221536693b2a3d3d6b642a0c642a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a8608a003033c020f291a8008a003033c0205291a7a08a06402013b9102013b02013b03192a1a6c08691a6c082a691a6b082a693b3e3c3b2d68056602012a64020129293b691a280a2a691a270a2a693b3c3b3b2d68052709f75f052211363ca203061a130af752052211352935280fa0037c22123529362a372215363cab293ba203051af6090241293cab2c2a691aff05351aeb0922182306693b2a3e3c6b642a0c642a2a0c642c3cab2e2a69221936352a2a0c64291acb09691acb092a691aca092a692f2a6927091ac4092a693b3c3b3b2d6805293b691ab9092a691ab8092a693b3c3b3b2d6805270af7cb042212363ca203061aa409f7be0422123529352810a0038f22133529362215363cab2a2a69221536352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a4d07a003033c020f291a4707a003033c0205291a4107a06402013b9102013b02013b03192a1a3307691a33072a691a32072a693b3e3c3b2d68056602012a64020129293b691a1f092a691a1e092a693b3c3b3b2d68052709f724042213363ca203061a0a09f7170422133529352811a003b222143529362a372b382218363cab293ba203051aeb080275293cab2b2a69221936352a2a0c642c3ca203051ad70802442c3cab2f2a691ad008352a2a0c642f3cab332a69221f36352a2a0c64291abd08691abd082a691abc082a691abb082a691aba082a69312a691ab6082a691ab5082a69270d1ab2082a691ab1082a692c2a691aad082a691aac082a6927081aa9082a693b3c3b3b2d6805293b691a9e082a691a9d082a693b3c3b3b2d6805270bf75a032214363ca203061a8908f74d0322143529352812a0f8490122153529362a372b382219363cab293ba203061a6908f70b01293cab293ba203051a5f08028b2b352a3cab2a2a69221c36352a2a0c642d3ca203051a490802582f362e3cab2a2a691a5804351a3c08222236693b2a3e3c6b642a0c642a2a0c643337323cab2a2a691a4004352a2a0c64291a1b08691a1b082a691a1a082a691a19082a691a18082a69322a691a14082a691a13082a69270f1a10082a691a0f082a692c2a691a0b082a691a0a082a6927091a07082a693b3c3b3b2d68052d3ca203051afa0702442d3cab312a691af706352a2a0c64303cab332a69222136352a2a0c64291adc07691adc072a691adb072a691ada072a691ad9072a69312a691ad5072a691ad4072a69270d1ad1072a691ad0072a692c2a691acc072a691acb072a6927091ac8072a693b3c3b3b2d6805293b691abd072a691abc072a693b3c3b3b2d6805270bf7f8012215363ca203061aa807f7eb0122153529352813a003b222163529362a372b38221a363cab293ba203051a89070275293cab2b2a691a2a03352a2a0c642c3ca203051a750702442c3cab302a691a1203352a2a0c642f3cab322a69222136352a2a0c64291a5707691a57072a691a56072a691a55072a691a54072a69312a691a50072a691a4f072a69270d1a4c072a691a4b072a692c2a691a47072a691a46072a6927081a43072a693b3c3b3b2d6805293b691a38072a691a37072a693b3c3b3b2d6805270bf72e012216363ca203061a2307f7210122163529352814a0038e22173529362a37221a363cab293ba203051a06070254293cab2c2a691ad301351afb06221d36693b2a3e3c6b642a0c642a2a0c642c3cab2e2a691a2904352a2a0c64291adc06691adc062a691adb062a691ada062a691ad9062a69312a691ad5062a691ad4062a69270d1ad1062a693b3c3b3b2d6805293b691ac6062a691ac5062a693b3c3b3b2d6805270a02882217363ca203051ab206027c22173529362a37221a363cab293ba203051aa0060244293cab2c2a69221b36352a2a0c642c3cab2e2a691a8b06352a2a0c64291a8606691a86062a691a85062a691a84062a691a83062a69312a691a7f062a691a7e062a69270d1a7b062a693b3c3b3b2d6805293b691a70062a691a6f062a693b3c3b3b2d6805270a646464646464646464646464646464646464646464420000|@9843,1,@1863,@6303,@8198,@8198,@9320,@5091,@9844,@5091,@9324,@5091,@9846,@5091,@9324,@5091,@9848,@9327,@5091,@9850,@6303,@8198,@8198,@8198,@8198,@9320,@5091,@9855,@5091,@9324,@5091,@9857,@5091,@9324,@5091,@9859,@5091,@9324,@5091,@9861,@5091,@9324,@5091,@9863,@9327,@5091,@9865,@6303,@8198,@118,@16798,@9320,@5091,@9892,@5091,@9324,@5091,@9894,@9327,@5091,@9896,@6303,@8198,@8198,@129,@9320,@5091,@9857,@5091,@9324,@5091,@9861,@5091,@9324,@5091,@9863,@9327,@5091,@10126,@6303,@8198,@8198,@8198,@9,@16806,@119,@9320,@5091,@9627,@5091,@9324,@5091,@10133,@5091,@9324,@5091,@10135,@9327,@8198,@134,@8198,@8198,@8198,@16808,@9320,@5091,@9627,@5091,@9324,@5091,@10133,@5091,@9324,@5091,@10135,@9327,@9320,@5091,@10162,@5091,@9324,@5091,@10164,@5091,@9324,@5091,@10166,@5091,@9324,@5091,@10168,@9327,@5091,@10170,@6303,@5086,@5086,@6393,@5091,@9324,@5091,@9324,@6395,@5091,@10177,@6303,@5086,@135,@10185,@6393,@5091,@9324,@6395,@5091,@10189,@6303,@8198,@16812,@8198,@128,@9320,@5091,@10196,@5091,@9324,@5091,@10198,@5091,@9324,@5091,@10200,@9327,@5091,@10202,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10209,@6303,@10216,@6303,@8198,@75,@8198,@9320,@5091,@10221,@5091,@9324,@5091,@10223,@5091,@9324,@5091,@10225,@9327,@5091,@10227,@6303,@8198,@8198,@115,@9320,@5091,@9627,@5091,@9324,@5091,@10234,@5091,@9324,@5091,@10135,@9327,@5091,@10236,@6303,@8198,@16813,@8198,@8198,@16815,@8198,@8198,@8198,@7,@8198,@16816,@9320,@5091,@10196,@5091,@9324,@5091,@10244,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@10246,@5091,@9324,@5091,@10248,@5091,@9324,@5091,@10250,@5091,@9324,@5091,@10252,@5091,@9324,@5091,@10254,@9327,@5091,@10256,@6303,@8198,@8198,@8198,@16817,@9320,@5091,@9627,@5091,@9324,@5091,@10133,@5091,@9324,@5091,@10135,@9327,@137,@9320,@5091,@10166,@5091,@9324,@5091,@10330,@9327,@5091,@10332,@6303,@16819,@5091,@10339,@6303,@5086,@16820,@6393,@5091,@9324,@6395,@5091,@10347,@6303,@5091,@10354,@6303,@8198,@8198,@138,@9320,@5091,@10372,@5091,@9324,@5091,@10374,@5091,@9324,@5091,@10376,@9327,@5091,@10378,@6303,@8198,@8198,@8198,@16823,@9320,@5091,@9627,@5091,@9324,@5091,@10133,@5091,@9324,@5091,@10135,@9327,@8198,@9320,@5091,@9680,@5091,@9324,@5091,@10166,@5091,@9324,@5091,@10330,@9327,@5091,@10385,@6303,@8198,@8198,@9320,@5091,@9968,@5091,@9324,@5091,@10392,@5091,@9324,@5091,@10394,@9327,@5091,@10396,@6303,@8198,@16824,@9320,@5091,@10234,@5091,@9324,@5091,@10403,@9327,@5091,@10405,@6303,@8198,@139,@9320,@5091,@9857,@5091,@9324,@5091,@9863,@9327,@5091,@9842| 16798:D26,212|fb182b363ba20304fad602b82b35352c363cab293ba20304faca027b2a362a3cab2a2a69fac2352a2a0c642d3ca20304faba024e2e352e3cab2a2a69fab235fab33437693b2a3e3c6b642a0c642a2a0c643237323cab2a2a69220d36352a2a0c6429fa9469fa952a69fa952a69fa952a69fa952a69322a69fa922a69fa922a69270ffa902a69fa902a692c2a69fa8d2a69fa8d2a692709fa8b2a693b3c3b3b2d680530353631363cab2a2a69fa7a352a2a0c6429fa7669fa772a69fa772a69302a69270cfa722a693b3c3b3b2d68056542000000|@4036,1,@1864,@5086,@8198,@75,@8198,@118,@16799,@9320,@5091,@9680,@5091,@9324,@5091,@9872,@5091,@9324,@5091,@9874,@9327,@128,@6393,@5091,@9324,@6395| 16799:D3,12|fb052936352c2a2d7d040000|@9871,1,@1865| 16800:D7,40|fb042b363ca20304fa2a02182b35293ba00304fa23020c2c363ca20304fa1d0202fa1d6442000000|@9878,1,@1866,@6303,@9879,@6303,@9877| 16801:D54,1784|fb1e2b363ca203061af906f7e6062b3529353ba003061aef06f7d7062c363ca203061ae706f7cb062c3529353ca0038c2d3529362f363cab2a2a692f36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aad06a003033c020f291aa706a003033c0205291aa106a06402013b9102013b02013b03192a1a9306691a93062a691a92062a693b3e3c3b2d68056602012a64020129293b691a7f062a691a7e062a693b3c3b3b2d68052709f736062d363ca203061a6b06f72a062d3529353da0038c2e35293630363cab2a2a693036352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0d06a003033c020f291a0706a003033c0205291a0106a06402013b9102013b02013b03192a1af305691af3052a691af2052a693b3e3c3b2d68056602012a64020129293b691aeb052a691aea052a693b3c3b3b2d68052709f795052e363ca203061ad705f789052e3529353ea0038c2f35293631363cab2a2a693137352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a6d05a003033c020f291a6705a003033c0205291a6105a06402013b9102013b02013b03192a1a5305691a53052a691a52052a693b3e3c3b2d68056602012a64020129293b691a57052a691a56052a693b3c3b3b2d68052709f7f4042f363ca203061a4305f7e8042f3529353fa0038c3035293632363cab2a2a693238352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291acd04a003033c020f291ac704a003033c0205291ac104a06402013b9102013b02013b03192a1ab304691ab3042a691ab2042a693b3e3c3b2d68056602012a64020129293b691ac3042a691ac2042a693b3c3b3b2d68052709f7530430363ca203061aaf04f74704303529352805a0038c3135293633363cab2a2a693339352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2c04a003033c020f291a2604a003033c0205291a2004a06402013b9102013b02013b03192a1a1204691a12042a691a11042a693b3e3c3b2d68056602012a64020129293b691a2e042a691a2d042a693b3c3b3b2d68052709f7b10331363ca203061a1a04f7a503313529352806a0038c3235293634363cab2a2a693436352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a8b03a003033c020f291a8503a003033c0205291a7f03a06402013b9102013b02013b03192a1a7103691a71032a691a70032a693b3e3c3b2d68056602012a64020129293b691a99032a691a98032a693b3c3b3b2d68052709f70f0332363ca203061a8503f70303323529352807a0038e33352936220c363cab2a2a69220c37352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ae802a003033c020f291ae202a003033c0205291adc02a06402013b9102013b02013b03192a1ace02691ace022a691acd022a693b3e3c3b2d68056602012a64020129293b691a02032a691a01032a693b3c3b3b2d68052709f76b0233363ca203061aee02f75f02333529352808a0038e34352936220d363cab2a2a69220d36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a4502a003033c020f291a3f02a003033c0205291a3902a06402013b9102013b02013b03192a1a2b02691a2b022a691a2a022a693b3e3c3b2d68056602012a64020129293b691a6b022a691a6a022a693b3c3b3b2d68052709f7c70134363ca203061a5702f7bb01343529352809a0037f220c3529362a37220f363cab293ba203051a3b020244293cab2b2a691a3402352a2a0c642c3cab2f2a69221337352a2a0c64291a2102691a21022a691a20022a691a1f022a691a1e022a69312a691a1a022a691a19022a69270d1a16022a693b3c3b3b2d6805293b691a0b022a691a0a022a693b3c3b3b2d6805270af73201220c363ca203061af601f72501220c35293540a0038b220d352936220f363cab2a2a69220f38352a2a0c6429353ba003572939299291033329369291032a2935353ea0031f293536291a0c01a003033c020f291a0601a003033c0205291a0001a06402013b9102013b02013b03162afaf369faf42a69faf42a693b3e3c3b2d68056602012a64020129293b691a75012a691a74012a693b3c3b3b2d680527090290220d363ca203051a61010284220d352936220f363cab2a2a69220f39352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa76a003033c020d29fa71a003033c020429fa6ca06402013b9102013b02013b03162afa5f69fa602a69fa602a693b3e3c3b2d68056602012a64020129293b69faee2a69faee2a693b3c3b3b2d68052709646464646464646464646442000000|@9905,1,@1867,@6303,@9906,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@9912,@6303,@5091,@9919,@6303,@5091,@9926,@6303,@5091,@9933,@6303,@5091,@9940,@6303,@5091,@9947,@6303,@5091,@9954,@6303,@5091,@9961,@6303,@8198,@115,@9320,@5091,@9968,@5091,@9324,@5091,@9970,@9327,@5091,@9972,@6303,@5091,@9979,@6303,@5091,@9904| 16802:D17,148|fb092b363ca20304fa9602872b35293ba00304fa8f027b2c363ca20304fa8902712c35293ca00304fa8202652d363ca20304fa7c025b2d35293da00304fa75024f2e363ca20304fa6f02452e35293ea00304fa6802392f363ca20304fa62022f2f35293fa00304fa5b022330363ca20304fa5502193035292805a00304fa4d020c31363ca20304fa470202fa4764646464646442|@9994,1,@1868,@6303,@9995,@6303,@10002,@6303,@10009,@6303,@10016,@6303,@10023,@6303,@10030,@6303,@9993| 16803:D13,104|fb072b363ca20304fa6a025a2b35293ba00304fa63024e2c363ca20304fa5d02442c35293ca00304fa5602382d363ca20304fa50022e2d35293da00304fa4902222e363ca20304fa4302182e35293ea00304fa3c020c2f363ca20304fa360202fa36646464644200|@10045,1,@1869,@6303,@10046,@6303,@10053,@6303,@10060,@6303,@10067,@6303,@10044| 16804:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@10082,1,@1870,@6303,@10083,@6303,@10090,@6303,@10081| 16805:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@10105,1,@1871,@6303,@10106,@6303,@10113,@6303,@10104| 16806:D3,12|fb052936352c2a2d7d040000|@9843,1,@1872| 16807:D15,120|fb152b363ca20304fa7a02692b35293ba00304fa73025d2c363ca20304fa6d02532c35293ca00304fa6602472d363ca20304fa60023d2d3529352f363cab2a2a69fa55352a2a0c6429fa5169fa522a69fa522a69fa522a693b3c3b3b2d6805293b69fa482a69fa482a693b3c3b3b2d6805270d6464420000|@10139,1,@1873,@6303,@10140,@6303,@10147,@6303,@115,@9320,@5091,@10154,@9327,@5091,@10138| 16808:D3,12|fb052936352c2a2d7d040000|@9843,1,@1874| 16809:D4,16|fb052b3529fa150c3e2a696542000000|@4042,1,@1875,@5543| 16810:D4,12|fb05fa14352c2a2d7d040000|@10187,1,@1876,@136| 16811:D4,8|fb02fa1042000000|@4606,1,@1877,@4605| 16812:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa33352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@1878,@5086,@128,@6393,@5091,@9324,@6395| 16813:D11,92|fb0e2b363ba20304fa5e02412b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a69fa4735fa483236693b2a3e3c6b642a0c642a2a0c6429fa3969fa3a2a69fa3a2a69302a69270bfa352a693b3c3b3b2d680565420000|@4036,1,@1879,@5086,@128,@118,@16814,@6393,@5091,@9324,@6395| 16814:D3,12|fb052936352c2a2d7d040000|@9871,1,@1880| 16815:D3,12|fb052936352c2a2d7d040000|@10243,1,@1881| 16816:D3,12|fb052936352c2a2d7d040000|@9871,1,@1882| 16817:D3,12|fb052936352c2a2d7d040000|@9843,1,@1883| 16818:D32,340|fb1b2b363ca203061a5501f742012b3529353ba003061a4b01f733012c363ca203061a4301f727012c3529353ca003061a3901f718012d363ca203061a3101f70c012d3529353da003051a270102fe2e363ca203051a200102f32e3529353ea003051a170102e52f363ca203051a100102da2f3529353fa003051a070102cc30363ca203051a000102c1303529352805a00304faf702b331363ca20304faf102a9313529352806a0033f3235293634363cab2a2a69fadd352a2a0c6429fad969fada2a69fada2a69fada2a693b3c3b3b2d6805293b69fad02a69fad02a693b3c3b3b2d6805270d026032363ca20304fabf0256323529352807a0034033352936220c363cab2a2a69fa8a352a2a0c6429faa269faa32a69faa32a69faa32a693b3c3b3b2d6805293b69fa992a69fa992a693b3c3b3b2d6805270d020c33363ca20304fa880202fa88646464646464646442000000|@10265,1,@1884,@6303,@10266,@6303,@10273,@6303,@10280,@6303,@10287,@6303,@10294,@6303,@10301,@6303,@115,@9320,@5091,@10308,@9327,@5091,@10310,@6303,@9320,@5091,@10308,@9327,@5091,@10317,@6303,@10264| 16819:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa33352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@1885,@5086,@128,@6393,@5091,@9324,@6395| 16820:D3,12|fb052936352c2a2d7d040000|@10346,1,@1886| 16821:D4,16|fb082b362c35293b2cfa11307b050500|@4042,1,@1887,@10362| 16822:D11,208|fb1e2d35293cab2d3ba40304face02af2d2aabfacb2a6931352a2a293ba003042a350297293cb22a3cb22b3cb2220e362a3ebb2a2adc2c2807b729281fa903033b02033c2aba2b2ab7293ba0913435220c360b02002c3ba0030d2c3caa2afa84452a465050023f2c3ba2030c2c3caa2a3b452a465050022e2e0304fa6b0202fa6b3e2a69220f2217a091030bfa623069fa622a696402012f2a2a69303caa2e2b452a4650260529352a362a2a692922122514251426121e9b3b271265292704fa372a693b3e3b3b2d6805270444000000|@10364,1,@1888,@10365,@10368,@10365,@6477,@6476,@4383,@10370,@10363| 16823:D3,12|fb052936352c2a2d7d040000|@9843,1,@1889| 16824:D3,12|fb052936352c2a2d7d040000|@9843,1,@1890| 16825:D31,332|fb102b363ca203061a4d01f73c012b35293ba003061a4401f72e012c363ca203061a3c01f722012c35293ca003061a3301f714012d363ca203061a2b01f708012d35293da003051a220102fb2e363ca203051a1b0102f02e35293ea003051a130102e32f363ca203051a0c0102d82f35293fa003051a040102cb30363ca203051afd0002c03035292805a00304faf502b331363ca20304faef02a93135292806a00304fae7029c32363ca20304fae102923235292807a00304fad9028533363ca20304fad3027b3335292808a00304facb026e34363ca20304fac502643435292809a00304fabd0257220c363ca20304fab6024c220c352940a00304faae023f220d363ca20304faa70234220d3529280ba00304fa9e0226220e363ca20304fa97021b220e3529280ca00304fa8e020d220f363ca20304fa870202fa87646464646464646464646464644200|@10414,1,@1891,@6303,@10415,@6303,@10421,@6303,@10427,@6303,@10433,@6303,@10439,@6303,@10445,@6303,@10451,@6303,@10457,@6303,@10463,@6303,@10469,@6303,@10475,@6303,@10481,@6303,@10487,@6303,@10413| 16826:D17,296|fb102b363ca203061a2901f718012b3529353ba003842c3529362e363cab2a2a691a1401352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629faf3a003033c020d29faeea003033c020429fae9a06402013b9102013b02013b03162afadc69fadd2a69fadd2a693b3e3c3b2d68056602012a64020129293b69facb2a69facb2a693b3c3b3b2d68052709028b2c363ca20304faba02812c3529362e363cab2a2a69faaf352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa66a003033c020d29fa61a003033c020429fa5ca06402013b9102013b02013b03162afa4f69fa502a69fa502a693b3e3c3b2d68056602012a64020129293b69fa4e2a69fa4e2a693b3c3b3b2d68052709644200|@10506,1,@1892,@6303,@131,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10507,@6303,@132,@5091,@10505| 16827:D28,320|fb132b363ca203061a4101f72e012b3529353ba003812c3529362a372f363cab293ba203051a2801024c293cab2c2a691a2101351a21013237693b2a3e3c6b642a0c642a2a0c642c3cab2e2a691a0401351a0801220c36693b2a3e3c6b642a0c642a2a0c6429faf869faf92a69faf92a692f2a692709faf42a693b3c3b3b2d6805293b69faea2a69faea2a693b3c3b3b2d6805270a02a42c363ca20304fad9029a2c3529353ca00304fad1028d2d363ca20304facb02832d3529353da0036e2e3529362a3731363cab293ba20304fab4023a293cab2c2a69faae352a2a0c642c3cab2e2a69fa6d35faa2220e37693b2a3e3c6b642a0c642a2a0c6429fa9269fa932a69fa932a692f2a692709fa8e2a693b3c3b3b2d6805293b69fa842a69fa842a693b3c3b3b2d6805270a020c2e363ca20304fa730202fa7364646442000000|@9871,1,@1893,@6303,@5086,@118,@16828,@16829,@6393,@5091,@9324,@6395,@5091,@10522,@6303,@10529,@6303,@5086,@75,@16830,@6393,@5091,@9324,@6395,@5091,@10536,@6303,@10521| 16828:D3,12|fb052936352c2a2d7d040000|@9871,1,@1894| 16829:D3,12|fb052936352c2a2d7d040000|@9843,1,@1895| 16830:D3,12|fb052936352c2a2d7d040000|@9871,1,@1896| 16831:D21,484|fb122b363ca203061ae501f7d4012b3529353ba0038d2c3529362e363cab2a2a691ad001352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aae01a003033c020f291aa801a003033c0205291aa201a06402013b9102013b02013b03192a1a9401691a94012a691a93012a693b3e3c3b2d68056602012a64020129293b691a80012a691a7f012a693b3c3b3b2d68052709f73e012c363ca203061a6c01f732012c3529353ca003872d3529362f363cab2a2a691a2f01352a2a0c6429353ba003572939299291033329369291032a2935353ea0031f293536291a0d01a003033c020f291a0701a003033c0205291a0101a06402013b9102013b02013b03162afaf469faf52a69faf52a693b3e3c3b2d68056602012a64020129293b69faef2a69faef2a693b3c3b3b2d6805270902a22d363ca20304fade02982d3529353da003832e35293630363cab2a2a69fa97352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa76a003033c020d29fa71a003033c020429fa6ca06402013b9102013b02013b03162afa5f69fa602a69fa602a693b3e3c3b2d68056602012a64020129293b69fa662a69fa662a693b3c3b3b2d68052709020c2e363ca20304fa550202fa556464644200|@10243,1,@1897,@6303,@75,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10550,@6303,@5091,@10557,@6303,@5091,@10564,@6303,@10549| 16832:D7,40|fb042b363ca20304fa2a02182b35293ba00304fa23020c2c363ca20304fa1d0202fa1d6442000000|@10579,1,@1898,@6303,@10580,@6303,@10578| 16833:D59,808|fb1d2b363ca203061a2903f718032b3529353ba003f42c3529362a372b382c3931363cab293ba203051a0c0302b7293cab2d2a691a0503352a2a0c642c3ca203051afc0202862c3cab2e2a69220c37352a2a0c642f3da203051ae80202552f3cab322a691ad502352a2a0c64323cab220e2a691ad202351ad202221436693b2a3e3c6b642a0c642a2a0c64291ac102691ac1022a691ac0022a691abf022a691abe022a69312a691aba022a691ab9022a69270d1ab6022a691ab5022a692c2a691ab1022a691ab0022a6927081aad022a691aac022a692c2a691aa8022a691aa7022a6927081aa4022a693b3c3b3b2d6805293b691a99022a691a98022a693b3c3b3b2d6805270cf71b022c363ca203061a8502f70f022c3529353ca003c02d3529362a372b3831363cab293ba203051a6a020285293cab2c2a691aff01352a2a0c642c3ca203051a560202542c3cab302a691af301351a4b02220e36693b2a3e3c6b642a0c642a2a0c642f3cab312a69220f37352a2a0c64291a2c02691a2c022a691a2b022a691a2a022a691a29022a69312a691a25022a691a24022a69270d1a21022a691a20022a692c2a691a1c022a691a1b022a6927081a18022a693b3c3b3b2d6805293b691a0d022a691a0c022a693b3c3b3b2d6805270bf746012d363ca203061af901f73a012d3529353da0038b2e35293630363cab2a2a693037352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291abf01a003033c020f291ab901a003033c0205291ab301a06402013b9102013b02013b03192a1aa501691aa5012a691aa4012a693b3e3c3b2d68056602012a64020129293b691a91012a691a90012a693b3c3b3b2d6805270902a62e363ca203051a7e01029b2e35293630363cab2a2a69fab3351a6f01323633383439220c3768053b2a3d3e6b642a0c642a2a0c6429353ba003572939299291033329369291032a2935353ea0031f293536291a1201a003033c020f291a0c01a003033c0205291a0601a06402013b9102013b02013b03162afaf969fafa2a69fafa2a693b3e3c3b2d68056602012a64020129293b69faf82a69faf82a693b3c3b3b2d680527096464644200|@10346,1,@1899,@6303,@8198,@75,@8198,@8198,@118,@16834,@9320,@5091,@9872,@5091,@9324,@5091,@10595,@5091,@9324,@5091,@10597,@5091,@9324,@5091,@9874,@9327,@5091,@10599,@6303,@8198,@8198,@16835,@9320,@5091,@9680,@5091,@9324,@5091,@9872,@5091,@9324,@5091,@9874,@9327,@5091,@10606,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10613,@6303,@16836,@5091,@10594| 16834:D3,12|fb052936352c2a2d7d040000|@9871,1,@1900| 16835:D3,12|fb052936352c2a2d7d040000|@9871,1,@1901| 16836:D64,636|fb302b363ba203061a7d02f75d022b35362c363cab2a2a691a7102352a2a0c642f363ca203061a6702f726022f353730363cab293ba203061a5902f7be012a392a3cab2a2a691a4f02351a4f023436693b2a3d3d6b642a0c642a2a0c642d3ca203061a3b02f77b012e352e3cab2a2a69220d39352a2a0c64313da203061a2402f747013238323cab2a2a691a0a02351a1602221338693b2a3e3c6b642a0c642a2a0c64220c3ea203061a0002f70201220d3a220d3cab2a2a69221537352a2a0c6422103fa203051ae60102cc2211230622113cab2a2a691ab201352a2a0c6422142805a203051acb01029422153622153cab2a2a691ac001352a2a0c6422182806a203051ab501025d22193722193cab2a2a691a8201351aa601222336693b2a3e3c6b642a0c642a2a0c64221d2307221d3cab2a2a691a8b01352a2a0c64291a8601691a86012a691a85012a691a84012a691a83012a69322a691a7f012a691a7e012a69270f1a7b012a691a7a012a692c2a691a76012a691a75012a6927091a72012a691a71012a692c2a691a6d012a691a6c012a6927091a69012a691a68012a692c2a691a64012a691a63012a6927091a60012a691a5f012a692c2a691a5b012a691a5a012a6927091a57012a691a56012a692c2a691a52012a691a51012a6927091a4e012a691a4d012a692c2a691a49012a691a48012a6927091a45012a693b3c3b3b2d6805343535220c363cab2a2a69fa83351a2f01220e36693b2a3e3c6b642a0c642a2a0c64291a1e01691a1e012a691a1d012a691a1c012a691a1b012a69322a691a17012a691a16012a6927101a13012a691a12012a692c2a691a0e012a691a0d012a6927091a0a012a693b3c3b3b2d68056542000000|@4036,1,@1902,@8198,@75,@8198,@8198,@118,@16837,@8198,@8198,@16839,@8198,@8198,@8198,@7,@8198,@16840,@128,@9320,@5091,@10196,@5091,@9324,@5091,@10244,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@10246,@5091,@9324,@5091,@10248,@5091,@9324,@5091,@10250,@5091,@9324,@5091,@10252,@5091,@9324,@5091,@10254,@9327,@16841,@9320,@5091,@9872,@5091,@9324,@5091,@10620,@5091,@9324,@5091,@9874,@9327| 16837:D11,92|fb0e2b363ba20304fa5e02412b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a69fa4735fa483236693b2a3e3c6b642a0c642a2a0c6429fa3969fa3a2a69fa3a2a69302a69270bfa352a693b3c3b3b2d680565420000|@4036,1,@1903,@5086,@128,@118,@16838,@6393,@5091,@9324,@6395| 16838:D3,12|fb052936352c2a2d7d040000|@9871,1,@1904| 16839:D3,12|fb052936352c2a2d7d040000|@10243,1,@1905| 16840:D3,12|fb052936352c2a2d7d040000|@9871,1,@1906| 16841:D3,12|fb052936352c2a2d7d040000|@9871,1,@1907| 16842:D4,12|fb05fa14352c2a2d7d040000|@10637,1,@1908,@75| 16843:D4,12|fb05fa14352c2a2d7d040000|@10640,1,@1909,@144| 16844:D17,136|fb102b363ca20304fa8a027b2b352c363cab293ba20304fa7f024d2a372a3cab2a2a692e36352a2a0c642d3ca20304fa6b02202e352e3cab2a2a69fa63352a2a0c64313cab2afa5c69fa5d2a69fa5d2a692707fa5b2a69fa5b2a692c2a69fa582a69fa582a692709fa562a693b3c3b3b2d6805293b69fa4c2a69fa4c2a693b3c3b3b2d6805270842|@10640,1,@1910,@6303,@8198,@8198,@75,@10643,@5091,@10652,@5091,@9324,@5091,@10250,@9327,@5091,@10642| 16845:D14,148|fb0e2b363ca20304fa9602842b352c363cab2a2a69fa8d35fa8e2a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6ba003033c020d29fa66a003033c020429fa61a06402013b9102013b02013b03162afa5469fa552a69fa552a693b3e3c3b2d68056602012a64020129293b69fa432a69fa432a693b3c3b3b2d6805270842000000|@10662,1,@1911,@6303,@116,@10663,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@10661| 16846:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@1912,@118,@10665| 16847:D10,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a69fa44352a2a0c642f353630363cab2a2a69fa37352a2a0c6429fa3369fa342a69fa342a69302a69270bfa2f2a693b3c3b3b2d68056542|@4036,1,@1913,@5086,@142,@75,@6393,@5091,@9324,@6395| 16848:D21,196|fb0b2b363ca20304fac602b52b35293ba00304fabf02a92c363ca20304fab9029f2c35293ca00304fab202932d363ca20304faac02892d35293da00304faa5027d2e363ca20304fa9f02732e35293ea00304fa9802672f363ca20304fa92025d2f35293fa00304fa8b025130363ca20304fa8502473035292805a00304fa7d023a31363ca20304fa7702303135292806a00304fa6f022332363ca20304fa6902193235292807a00304fa61020c33363ca20304fa5b0202fa5b6464646464646464420000|@10695,1,@1914,@6303,@10696,@6303,@10703,@6303,@10710,@6303,@10716,@6303,@10723,@6303,@10730,@6303,@10737,@6303,@10744,@6303,@10694| 16849:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@1915,@7| 16850:D15,332|fb3e401a52010c291a51010c2923062a23082b392c230c2d3a2e230b2f373023061a3c012b2b221a221f221b680632383323081a2e012b2b221d2222221e6806220c230a220d230c1a1d012b2b2220222522216806220f23091a10011a110132302211221022151a0a012216323422152218680d222622242a9291035e2a352b362a2c222a2227222c2228221422142231221c221b221d221c222122132215221f2233223322332233223b22342234222322232236221f222822262235223a223a223a223936222b222bfaac0c2a2a2505250526031e5d3b66020129653b222669222123103b2a0c3d2a69293b692d2a692225353b2227222722232226fa7d0c221b353ca00330221b36221c382a352a352993293ba00304fa6602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060202221b222b2a45fa45463b472d482b492c4a271d1f12|@10793,1,@1916,@4554,@4898,@16851,@16857,@16860,@10809,@10813,@10817,@10821,@10792,@4725,@4062| 16851:D7,32|fb0e2b352c362a2afa222e36692e37fa1ffa2131383239333afa1d220d7b0b05|@10795,1,@1917,@16852,@10797,@10798,@10794| 16852:D3,12|fb042c2c692a362c7d040000|@10796,1,@1918| 16853:D3,8|fb022b3942000000|@10799,1,@1919| 16854:D9,360|fb1833310c293ba003063434342e7e0c1a61012f6934310c29293ba0030330021629352a362a353ba003042a360207292503511e1a3b6564333b3bef293ba003051a3401024f293db1292808b1293cb2293fb4291a2501a503043b5002041a1f01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022123f2d3f34ec503f31b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef22113b3bef2a3ba0030422120250293ba003032b02482a2ab1292808b1293cb2293fb429fabda503043b500203fab8103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1221a3f2e2c220cec502c95502c2708293b3bef293ba00304fa820248292827b1292808b1293cb2293fb429fa67a503043b500203fa62103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa453f2e2c2827ec502c95502c27083e2a69293b693b3b3b3b2d680522103c220e220d2dfa2522157b0719|@10801,1,@1920,@16855,@10803,16777215,@4054,@10804,@10800| 16855:D4,12|fb0529362cfa112d7e030000|@10802,1,@1921,@9311| 16856:D7,168|fb0d2f230d29299291031a29352a362a35faa1a003052a68010207292503511e193b6502013b64293ba00342fa8a299291031a29352a362a35fa79a003052a68010207292503511e193b6502013b64293ba00303fa66103b5029352935fa55a003043b500203fa5810293765021329352935fa40a003043b500203fa431029376429310c296801332a32346b220c38220d230c220d03082a3b3b3ce35002023b502b2a347d0f0000|@10805,1,@1922,@61,@5420,@5469,@4594| 16857:D7,32|fb0e2b352c362a2afa222e36692e37fa1ffa2131383239333afa1d220d7b0b05|@10795,1,@1923,@16858,@7928,@10806,@10794| 16858:D3,12|fb042c2c692a362c7d040000|@10796,1,@1924| 16859:D3,8|fb032b3529376442|@8697,1,@1925| 16860:D7,32|fb0e2b352c362a2afa222e36692e37fa1ffa2131383239333afa1d220d7b0b05|@10795,1,@1926,@16861,@10808,@10807,@10794| 16861:D3,12|fb042c2c692a362c7d040000|@10796,1,@1927| 16862:D3,8|fb022b3842000000|@10799,1,@1928| 16863:D4,8|fb02fa1010000000|@10799,1,@1929,@10810| 16864:D4,8|fb02fa1010000000|@10799,1,@1930,@10814| 16865:D4,8|fb02fa1010000000|@10799,1,@1931,@10818| 16866:D50,1436|fb2a2226350a06005900f400150380030c00ae0322263622262a222122212221221e2211221122242224222422232223221f2217223322322227222722272227222622262224222022202220222022412240222222221a4f0522237b2228f738052226362226061a4205222322232228222822282f68070b03003b2a1a31050c5029352a362b37222823081a26052a222a2d6b222a230c1a1e052a222b6a1a1b051a1c05220d31222d222d222d1a140533222f222f222f220c680d1a0a052221222622262226222668061aff042221222122276b22102b2d22352d1af2040c1af204222122212238223822382216680729220c0c2212352714f79d042226362227372228382a352b361acc04222c2228306b2c9291031e2c35291abf04222622262e222a6805222a1ab5040c3d2a1ab3046a6502031aac043b2c69222923103b2a0c3d2a69293b692d2a69321a9904a003033c0213323b3bef3fa0030a323f1a86043f3fed02013b03033c02a7321a7b04a003033c0215323b3bef2805a0030b323f1a67043f2805ed02013b03033c0283321a5b04a003033c0213323b3bef3ea0030a323f1a48043f3eed02013b03033c0261321a3d04a003033c0213323b3bef3da0030a323f1a2a043f3ded02013b03033c023f321a1f04a003033c0213323b3bef3ea0030a323f1a0c043f3eed02013b03033c021d321a0104a003033c0213323b3bef3da0030a323f1aee033f3ded02013b03d4323b3bef293ba003051ade03024a280c2ab1292808b1293cb2293fb4291ace03a503043b5002041ac803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aa8033f2d3f280cec5022113f2d281034ec502b95502b2707293b3bef293ba003051a9203024b29280db1292808b1293cb2293fb4291a7603a503043b5002041a7003103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a52033f2e2c280dec502c95502c27081a46032238693e2b69293b693b3b3b3b2d680522363c2e22172d1a30030c50260802023b503b223369333b2b332e3b3b6807342a1a1a0322326922311a16031a17032238223822381a12030c5022343caa270ff77c022226362922272a9291035a2a352b362a2c22252225222522142214222722272227222722272227221a22362235222a222a222a222a2229222922272223222322232230222422432230223022272227224622461ab5020c2a2a2505250526031e593b660201296564f711022226362227372228382b2b2b6a2922102229222a2229221e221e2217221c221c22211a7f020c5022292704f7e3012226362227372228382a352b362a1a6902a003033c02132a3b3bef3fa0030a2a3f1a56023f3fed02013b03033c02852a1a4b02a003033c02152a3b3bef2805a0030b2a3f1a37023f2805ed02013b03033c02612a1a2b02a003033c02132a3b3bef3ea0030a2a3f1a18023f3eed02013b03033c023f2a1a0d02a003033c02132a3b3bef3da0030a2a3f1afa013f3ded02013b03033c021d2a1aef01a003033c02132a3b3bef3ea0030a2a3f1adc013f3eed02013b03d12a3b3bef293ba003051acc010249280c2ab1292808b1293cb2293fb4291a7801a503043b5002041a7201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a96013f2d3f280cec50323f2d281034ec502b95502b2707293b3bef293ba003051a7901024b29280db1292808b1293cb2293fb4291a2101a503043b5002041a1b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a39013f2e2c280dec502c95502c27081a2d012230693e2b69293b693b3b3b3b2d6805222e3c2e220f2dfadc0c270802013b2c1a0e01222522252230222c222a68062229fa8e0c3b2c69222923103b2a0c3d2a69293b692d2a692ffaebfaedfaef0c3b223469343d2b2d2f3b3b6807220c2afae02233692232fa95fa97223922392239fa930c5022353caa27101f2500|@10822,1,@1932,@10823,@16886,@8966,@16888,@16889,@10809,@10813,@10817,@16890,@16891,@10879,@17502,@17505,@17507,@10955,@7468,@4891,@4844,@5073,@5008,@5350,@9157,@12399,16777215,@4054,@12400,@17510,@10800,@17511,@10797,@10798,@10794,@12401,@12410,@4891,@4844,@5073,@5008,@5350,@12399,@12400,@17550,@17551,@12469,@12471,@8030,@16867| 16867:D3,12|fb042c2c692a362c7d040000|@10796,1,@2623| 16868:D18,592|fb3422209291f843022220352221362a362b382935222423081a40022a22266a2226230c1a39022a22276a1a3602222922276a1a32021a3302222722272227222722271a2a023432222a222a220d680d221f3b3bef323b3bef2a3ba00303330254293ba003042221024b2a2ab1292808b1293cb2293fb4291af901a503043b5002041af301103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022283f2d3f220cec503f32b122123f2e2c220cec502c95502c2708293b3bef293ba003051abb010246293cb1292808b1293cb2293fb4291aa001a503043b5002041a9a01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c270834353ba003443436220c370b060031220f323b220d2e223122312231223122312231223122312231223122312231223e0c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270f027934353da00334343629352a362b372c382d392c2b2d2c312210220c222f222f222f222f222f222f222f222f222f222f222f222f222f0c2706023f3436220c37220d380b06003232322212220e2e222922332233222b22342234223422342234facc0c5029352a362b372c382d392e3a2e2e2e2e2e2e6806271022323caa292211223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233fa730c3b221969222523103b2a0c3d2a69293b692d2a693b223b6922172a342d6b22182afa532221692220fa50fa52223322262234fa4e0c32271c020222211f20|@10824,1,@1933,@16870,@16871,@16872,@10809,@10813,@10817,16777215,@4054,@4139,@10827,@10823,@16869,@10808,@10807,@10794| 16869:D3,12|fb042c2c692a362c7d040000|@10796,1,@1950| 16870:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1934| 16871:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1935| 16872:D4,32|fb073b2a370c3b2b3623090c293ba003032a02072a2afa142f7e056542000000|@10826,1,@1936,@10825| 16873:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1937,@10825| 16874:D11,264|fb210b0600221722172b22142214221422141aff000c5029352a362b372c382d392e3a221b3b3b2ee32214352efae922172217221722172221fae10c293ba00304fadd02573b2a299291031229362b3caa292b25042504511e113b6502012a6529fac1a80303fac0103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652d2ca003033c02043092919103032e020dfa7d22142b306bfa7a302b6a6422183534353ca0032f3436220c382a352a352993293ba00304fa4b02132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020134221f2a45220c463b4733482c492b4a27141f0f0000|@10828,1,@1938,@10829,@10834,@10836,@4725,16777215,@5803,@16885,@16875| 16875:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@1949,@8143| 16876:D11,256|fb12312f3a0c293ba003da323b3bef293ba00304faf60247280b2ab1292808b1293cb2293fb429fae7a503043b500203fae2103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fac33f2d3f280bec5022113f2d280f34ec502b95502b2707293b3bef293ba00304faae0248292817b1292808b1293cb2293fb429fa93a503043b500203fa8e103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa713f2e2c2817ec502c95502c2708fa6633693e2b69293b693b3b3b3b2d6805220c3c2e22132dfa520c50220f220c45fa4d463b473b48fa4a493b4a270802162935312a35452a36462a37472a38482a39492a3a4a64641f070000|@10830,1,@1939,@10831,16777215,@4054,@10832,@16877,@10800,@9107,@9141| 16877:D4,12|fb0529362cfa112d7e030000|@10833,1,@1940,@9311| 16878:D3,4|fb023b42|@10835,1,@1941| 16879:D8,132|fb15319291037a313532362a3629353ba003043b500203fa77103b5029362a382b392e372f3629353da00303fa66103b503b5029353ba00314293729353ca0030729362935640202293664020529362935642e2a2e3b2f22102215221522152215fa350cfa362a2213316b322a22132213221322132213fa270c2b2a69270c02013b1f07|@10837,1,@1942,@10838,@8092,@10841,@16880,@10836| 16880:D3,36|fb062b3629353ba003172938292c38a003062b36680102062d2c372e7d056402013b6442|@10855,1,@1947| 16881:D9,200|fb17303531363237323b3bef2c3b3bef2a3ba003032d0251293ba003033402492a2ab1292808b1293cb2293fb429faa4a503043b500203fa9f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022123f2d3f220cec503f32b1220c3f2e2c220cec502c95502c2708292e2e6a220c35220d35293caa220f3b3b2ce3221303112216fa582e22182218326806fa520c020f2216fa472e22182218326806fa450c2f3b693e2b2b6a2f2213ab22122a2cfa370c312215ab2e680122142b2bfa290c3027131f0a000000|@10843,1,@1943,16777215,@4054,@4685,@10844,@10846,@10842| 16882:D3,36|fb0e2b352c362d372e382f39303a2b063c2a693b312b31306805302a2e6a270942000000|@10845,1,@1944| 16883:D3,32|fb0d2b352c362d372e382f39303a3b2c693b302b302f68052f2a2d6a27084200|@10847,1,@1945| 16884:D8,152|fb142d35293529353ca003043b500203fa9210293630362a93312aa203142b93322aa90303fa81103b502c333b34e36402602b93293eac333caa2a2aa603032a020129293ba203033c020429fa5ea80303fa5d103b5029284030da30932a932a2aa60303fa4e103b50323b3b2e3b3b30eb503c2c69220c3b3b2ce3502c9322112aa90303fa22103b502d22123b2213e32709270544000000|@10849,1,@1946,@10850,@4632,16777215,@4557,@10848| 16885:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@10856,1,@1948,@4599| 16886:D7,76|fb182b352c3629352a362b382c392f23063530230635293caa3223063b3b2ce33b2d6931312b32323b3b6807342afa28220f3669220f37fa23fa2522123822133922143afa1e22177b0b0f00|@10857,1,@1951,@16887,@10797,@10798,@10794| 16887:D3,12|fb042c2c692a362c7d040000|@10796,1,@1952| 16888:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@1953| 16889:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@1954| 16890:D7,188|fb152c3629353ca003342d353b2a299291031229362b3caa292b25042504511e113b6502012a652932323c323136323733383439220c3afa8f220f7b0c092d352d352e362f372e363b3bef2c3b3bef2a3ba003032d0253293ba003043036024a2a2ab1292808b1293cb2293fb429fa5ca503043b500203fa57103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e363f2d3f220cec503f32b1220c3f2e2c220cec502c95502c2708292e2e6a3d31336afa202a2c6a2709641f04|@10858,1,@1955,@10841,16777215,@4054,@4801| 16891:D16,388|fb0a2b2a38a203542b2a360c293629353da003142937291a76011a77011a78010c293ca0916502302a3629353da003041a6901103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646465f725012b2a38ab292b373529353ba00325293629932c2aa203162a932d2aa903041a2301103b503b502b2e3bdb6402031a1801650222293629932c2aa203162a932d2aa903041a0601103b503b502b2e3bdb640202faf46529353ca003192936292da80303faec103b503b5029250426031e693b64020129656429353ea0034d2936293629353da00311293729fac8facafaac0c293ca09165022f2a3629353da00303fa9e103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646465025a29353ba003043b500203fa86103b502936293629353da00311293729fa78fa7afa500c293ca09165022f2a3629353da00303fa42103b503b5029353ba00314293729353ca003072936293564020229366402052936293564646565420000|@10860,1,@1956,@10861,@10863,@10864,@8092,@4599,@4719,@4597,@10870,@10873,@10874,@10875,@10878,@10859| 16892:D3,4|fb023c42|@10862,1,@1957| 16893:D3,4|fb023d42|@10862,1,@1958| 16894:D11,600|fb172d1a5e020c29353ca003043cf7450229353ba003043cf73b0229353fa003041a4402103b503b5029353ea003452936291a37020c293d2a929103312a352b362a3434330c293da0030d2a2d2505250526031e1b3b0213293ba0030d2a3b2505250526031e2d3b02013c660201296565f7e20129352805a0f8970129362a382938293629353ca0030b2a36293629313aa06502013b03043cf773012b38293629353da0033c2d38293629353da003043b5002041ab901103b5029362a372a331ab1010c1ab1012a690b02002e2d2b1aaa010c5029352922152215221422167b05162d38293629353ca0030c2a36293629220c39a06502013b03033c024c2a3629353ca0030c2b36293629220d38a06502013b03033c02312b3629353ca0030c2c36293629220e37a06502013b03033c02162c3629353ca0030c2d36293629220f36a06502013b64646403033d02be2f38293629353da003041a2401103b503b5029353ba00314293729353ca003072936293564020229366402052936293564033f323d2a929103342a352b362a2213221322120c293da0030d2a2d2505250526031e1e3b0213293ba0030d2a3b2505250526031e303b02013c6602012965024b3138220f0c293ca003033c023d332a2a929103342a352b362a2214221422130c293da0030d2a2d2505250526031e1e3b0213293ba0030d2a3b2505250526031e303b02013c6602012965646565652704024329353da003033c023a29362a372a2a692a3fb7293ba09103033d02252c3529353ea003172b320c293ca003033c02092a343433220c7b050c6402052b32327d0b6427046444|@10865,1,@1959,@8044,@10866,@10869,@8025,@5868,@16895,@8023,@8092| 16895:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@1961| 16896:D4,28|fb072b929103112b352c362a362afa180c2a2a69270402013b420000|@4648,1,@1960,@10869| 16897:D3,4|fb023c42|@10862,1,@1962| 16898:D3,4|fb023d42|@10862,1,@1963| 16899:D3,4|fb023c42|@10862,1,@1964| 16900:D3,4|fb023d42|@10862,1,@1965| 16901:D5,88|fb1c2d23062e23082f3930230c313a32230b33373438220c35220d230a220e36220f2307221023092d2c3131220e220d221231221332220d2212fa282216680e3c3b2b22172218221622192217221636fa1622197b0b1500|@10882,1,@1966,@10883,@10881| 16902:D3,4|fb023b42|@10884,1,@1967| 16903:D7,40|fb12fa303269fa3033692a2a693234220d342d220e2213fa23220f220f220f2217fa1d22117b0e0e|@10886,1,@1968,@16904,@16905,@10881,@10885| 16904:D3,28|fb052b2a3623080c299291030b2935293b692968016502013b644200|@10887,1,@1969| 16905:D3,28|fb052b2a36230d0c299291030b2935293b692968016502013b644200|@10887,1,@1970| 16906:D134,6436|fb43220d352816a00322220d3629220e220e220e220e220e220e220e220e220e220e220e1a0919220f7b0e0f220d352808a003041afd18103b503b50220d352810a003041af118103b503b50220d35281ea003041ae518103b503b50220d350a1f00f5001d017d0263059d07390ab30b810c3e00b00cf20c630db40de50d3e00220f3e008e0fff0fea117013ee133e004e1595169b16de163e17441770173e00220d3629352a362b372c382d39221123062212230d2a2a691a851822142217306b1a80182b332c1a7e180c293729353ea003092936292808a06402013b03082a3b1a68180c021b2a380b02002c1a60182b1a60180c5029352a36291a5a180c2b27072b3a2992910314293529352935220c2a692b3b3b2ce350260402023b502c23062992910311293529352d2a692b3b3b2ce350260302023b50343b3b2ee350220c3b3b30e350221a2309333b3b2ce3502c2710f7cb17220d3629352a362b372c382d392e3a2211221034220f221622102213221122161ae21722127b110f220d36220e37220f382a3b692c2a691acf170628192b2b2f6b29221522142214221422142214221422142214221422141a7e170c1aae173c1aae170c291aad170c3b2a3c6a3e2c2b6a2d2a1aa3170c299291f8020129351a9b173131221b221b1a96170c22192219221a1a90171a91170c2b2a0c64293b691a8a172a691a89172a693b3b3b3b2d6805293b691a7e172a69302a691a7a172a691a79172a693b3e3c3b2d68052224230d29299291031b29352a362a351a6117a003052a68010207292503511e1a3b6502013b64293ba0034b1a4917299291031b29352a362a351a3717a003052a68010207292503511e1a3b6502013b64293ba003041a2317103b503b50293529351a0f17a003043b5002041a1117103b502937650217293529351af616a003043b5002041af816103b50293764222a2a1af0160c2968013c2a30221f6b222a38222b230c2a3b3b3ce3502b2a0c271502013b1ad216270ef74316220d3629352a362b372c392c221222122212221222122212221222122212221222121a2c160c2c221322132213221322132213221322132213221322131a11160c22141a8b160c03033b02161a321606220f3eba28062b2b6a2d2a1a33160c503b662b1a6f160c29353da0030e29362a372a2a6929680166f724011a0316061b0f273eba28062b2b6a1af515061b0f273eba28062b2b6a3d2a2e6a29341af1150c29929103f01a30162210220d221e221e1ae5150c1a25162210220d221f221f1ad6150c291a1916691a19162a692c2a691a15162a691a14162a693b3e3c3b2d68052223230d29299291031b29352a362a351ac415a003052a68010207292503511e1a3b6502013b64293ba0034b1aac15299291031b29352a362a351a9a15a003052a68010207292503511e1a3b6502013b64293ba003041a8615103b503b50293529351a7215a003043b5002041a7415103b502937650217293529351a5915a003043b5002041a5b15103b5029376422282a1a53150c2968013c2a30221c6b222938222a230c2a3b3b3ce3502b2a0c503b271002072b2f69296801642708299291f83901293529352a362a301ae1140c299291f81a0129351a3515220e34221c221c1ad3140c1a2b15220e34221d221d1ac5140c221b221b221c1abf141ac0140c2c2a0c64293b691a0d152a691a0c152a693b3b3b3b2d6805293b691a01152a69302a691add142a69332a691ad9142a691af0142a693b3e3c3b2d68052228230d29299291031b29352a362a351a8814a003052a68010207292503511e1a3b6502013b64293ba0034b1a7014299291031b29352a362a351a5e14a003052a68010207292503511e1a3b6502013b64293ba003041a4a14103b503b50293529351a3614a003043b5002041a3814103b502937650217293529351a1d14a003043b5002041a1f14103b50293764222d2a1a17140c2968013c2a3022216b222e38222f230c2a3b3b3ce3502b2a0c50261802023b50333b3b2de3502a270402031a2814270af75d13220d3629352a362b372c381a191422132211221022102213221622122212221222122212680c291a01141a02146a1a02141a03141a04142e221868052e2a2c221522151af9130c30221722162216221622162216221622162216221622161a0a130c2a1a89130c29353da003db29362a372a2d1a35130c29929103c6293522192219221a1a30131a31130c2a2a0c64221a230d29299291031b29352a362a351a3113a003052a68010207292503511e1a3b6502013b64293ba0034b1a1913299291031b29352a362a351a0713a003052a68010207292503511e1a3b6502013b64293ba003041af312103b503b50293529351adf12a003043b5002041ae112103b502937650217293529351ac612a003043b5002041ac812103b5029376422202a1ac0120c2968013c2a3022136b2220382221230c2a3b3b3ce3502b2a0c50260a02023b502a6602e61a5012061b0f273eba28062b2b6a3d2e2b6a2d2a1a4c120c29929103c52935221b221b221c1a47121a48120c2a2a0c64221c230d29299291031b29352a362a351a4812a003052a68010207292503511e1a3b6502013b64293ba0034b1a3012299291031b29352a362a351a1e12a003052a68010207292503511e1a3b6502013b64293ba003041a0a12103b503b50293529351af611a003043b5002041af811103b502937650217293529351add11a003043b5002041adf11103b5029376422222a1ad7110c2968013c2a3022156b2222382223230c2a3b3b3ce3502b2a0c270a02013b2c2706313b3b2ce35029270cf72311220d3629352a362b372c382c221322122212221222122212221222122212221222121a0c110c2b221422132213221322132213221322132213221322131af1100c2d221522142214221422142214221422142214221422141ad6100c2b1a4d111a0e110c299291f8030129351a9a11322f221722171a01110c2215221522161afb101afc100c2b2a0c64293b691af5102a691af4102a693b3b3b3b2d6805293b691ae9102a69302a691ae5102a691a5c112a693b3e3c3b2d68052220230d29299291031b29352a362a351acc10a003052a68010207292503511e1a3b6502013b64293ba0034b1ab410299291031b29352a362a351aa210a003052a68010207292503511e1a3b6502013b64293ba003041a8e10103b503b50293529351a7a10a003043b5002041a7c10103b502937650217293529351a6110a003043b5002041a6310103b5029376422262a1a5b100c2968013c2a3022196b2226382227230c2a3b3b3ce3502b2a0c50261502023b502b2b1afd0f0c299291f81b0129351a9110312f221822181af00f0c1a8810332f221922191ae30f0c2217221722181add0f1ade0f0c2c2a0c64293b691a2b102a691a2a102a693b3b3b3b2d6805293b691a1f102a69302a691afb0f2a69332a691af70f2a691a42102a693b3e3c3b2d68052224230d29299291031b29352a362a351aa60fa003052a68010207292503511e1a3b6502013b64293ba0034b1a8e0f299291031b29352a362a351a7c0fa003052a68010207292503511e1a3b6502013b64293ba003041a680f103b503b50293529351a540fa003043b5002041a560f103b502937650217293529351a3b0fa003043b5002041a3d0f103b50293764222a2a1a350f0c2968013c2a30221d6b222a38222b230c2a3b3b3ce3502b2a0c501a570f271802012c270af7870e220d36220e37220f382a221022102210221022102210221022102210221022101a720e0c2c1a590f2210221422136b22101a510f0c2a2a1a9b0e0c299291f8310129351a430f2f2e221422141a8e0e0c3b1a390f0c2d1b10272b22153b1a310f0c293b691a2e0f2a691a2d0f2a693b3b3b3b2d68052218221822191a630e1a640e0c312a0c64293b691ab10e2a691ab00e2a693b3b3b3b2d6805293b691aa50e2a69302a691a810e2a69220f2a691a7c0e2a691ae70e2a693b3e3c3b2d68052225230d29299291031b29352a362a351a2b0ea003052a68010207292503511e1a3b6502013b64293ba0034b1a130e299291031b29352a362a351a010ea003052a68010207292503511e1a3b6502013b64293ba003041aed0d103b503b50293529351ad90da003043b5002041adb0d103b502937650217293529351ac00da003043b5002041ac20d103b50293764222b2a1aba0d0c2968013c2a3022206b222b38222c230c2a3b3b3ce3502b2a0c50261d02023b502a2706f70d0d220d3629352a362b372c38221023082211230d2a2a691a0e0e22132216316b2a2e2b1a060e0c0b0200312a1a010e0c502935291afd0da003033c0213293b3bef3ba0030a293f1aea0d3f3bed02013b03033b02192219230d1adc0d221a221e220f6b1ad60d2b2d2c1ad40d0c652e352f363b221069221c23103b2a0c3d2a69293b692d2a693038313622152a2d2d6b322c2b220e301aab0d0c2a2a692a299291031829352a362a35292c6964222b370c50292503511e185102023b505022182a692228380c501a0a0d271cf73f0c220d36220e3729299291031929352a362a2e692b2a69642211350c50292503511e195102023b50501ada0c65f7100c220d361a440d220c22106a0b03002d2a1a3b0d0c5029362f299291031b29352a362a22162216221a301a260d0c50292503511e1a3b6502013b641a990c2708f7ce0b220d36291a8d0c2a9291035f2a352b362a35220d32221322112d221522112211221122150c2b9291912991032e2a22131ae10c0c299291031e29350b02001ad70c312b22130c50293522183b332c311aca0c0c270502013b6402013b2d2c2508250826061e5d3b27060201296564f75d0b220d36220e37220f381aa30c2211220f220e220e2211221422102210221022102210680c291a030c1a040c6a1a840c1a850c1a060c2e221668052d2a2c221322131afb0b0c2f3b3b2ce350292707f70c0b220d36220e37220f382210392c2c2c2c220f2214221422132215221322132213221322131a430c0c501aa60b2704f7db0a220d36220e37220f382b221122102210221022102210221022102210221022101ac60a0c1a160c22122210220f220f2212221522112211221122112211680c291a660b1a670b6a1af70b1af80b1a690b2f221768052e2a2c221422141a5e0b0c3d1ae50b2f6a2a2a1abe0a0c29929103c529352215221522161ab90a1aba0a0c2a2a0c642216230d29299291031b29352a362a351aba0aa003052a68010207292503511e1a3b6502013b64293ba0034b1aa20a299291031b29352a362a351a900aa003052a68010207292503511e1a3b6502013b64293ba003041a7c0a103b503b50293529351a680aa003043b5002041a6a0a103b502937650217293529351a4f0aa003043b5002041a510a103b50293764221c2a1a490a0c2968013c2a3022116b221c38221d230c2a3b3b3ce3502b2a0c270a02013b30270bf79e09220d36220e37220f38291a9f092210221022102210221022102210221022102210221c1aea0a0c1aea0a0c291ae90a0c3b2a2f6a2e030329020629063c2a69643e2d2b6a3003032902161a8f09061b0f273eba28062b2b6a2b3b3b2fe32a2704303b3b2ce350292709f73209220d36220e37220f381aa40a1a310922122211221122112211221122112211221122112211680d291a890a1a8a0a6a1a8a0a1a8b0a1a8c0a2e221668052d2a2c221322131acd090c29353ba003051aa7090212293b6928052a1a6c0a1a6d0a1a6e0a680564303b3b2ce350292708f7c108220d36220e38220f39293c1add080c291a40090c29353da003dd29362a372a1a410a1aea080c29929103c629352213221322141ae5081ae6080c2a2a0c642214230d29299291031b29352a362a351ae608a003052a68010207292503511e1a3b6502013b64293ba0034b1ace08299291031b29352a362a351abc08a003052a68010207292503511e1a3b6502013b64293ba003041aa808103b503b50293529351a9408a003043b5002041a9608103b502937650217293529351a7b08a003043b5002041a7d08103b5029376422192a1a75080c2968013c2a3022106b221a38221b230c2a3b3b3ce3502b2a0c50260a02023b502a6602e81a0508061b0f273eba28062b2b6a3d1a5a092b6a2d2a1aff070c29929103c529352215221522161afa071afb070c2a2a0c642216230d29299291031b29352a362a351afb07a003052a68010207292503511e1a3b6502013b64293ba0034b1ae307299291031b29352a362a351ad107a003052a68010207292503511e1a3b6502013b64293ba003041abd07103b503b50293529351aa907a003043b5002041aab07103b502937650217293529351a9007a003043b5002041a9207103b50293764221b2a1a8a070c2968013c2a3022126b221c38221d230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce350292706f7d606220d3629352a362b372c390b03003b2a1a69080c5029352a362b370b03003b2a1a59080c5029362a370b03003b2a1a4b080c5029362a3722140304221a0204221a3caa222423061a36082a22106a222623081a2f082a220c6a2228392229230d1a25082a326a222b3a222c230b222d230c222e36222f23071a11082231221d6a1a0d082c221d2218220c332211312211322219220f220f2213680e22241afc062a929103282a352b362a35223322143022372d223b223722372237223b0c2b2a2506250626041e263b2704020129651ac2072234221f22266b1abc072235221a6a2235351ab507223722166a223736223823072c2b30302214221222193022192211220c22172217221b680e222b91222e1a88062a929103662a352b362a35223c221d3122402d224422402240224022440c2f03092b92919129916402013b032e2922411ad5060c299291031e29350b02001acb06302b22410c50293522463b322c311abe060c270502013b6402013b2c2b2507250726051e643b2705020129652730f75005220d3629352a372b382c39401a0b070c401a06070c401a01070c2f2214221422181afa060c29299291031c29352a362a352b3630221a31341ae7060c50292503511e1b3b6502013b642d3b1ad8061ad9060c313b3b2ce3502c3b1ad1061aca060c313b3b2ce3502e3b1ac6061abb060c313b3b2ce3501a9d05270df7d204220d36220e37220f382a3b692c2a691afe040628192b2b2f6b29221522142214221422142214221422142214221422141aad040c1a81063c1add040c291adc040c3b2a3c6a3e2c2b6a2d2a1ad2040c299291f8020129351a62063131221b221b1ac5040c22192219221a1abf041ac0040c2b2a0c64293b691ab9042a691ab8042a693b3b3b3b2d6805293b691aad042a69302a691aa9042a691a24062a693b3e3c3b2d68052224230d29299291031b29352a362a351a9004a003052a68010207292503511e1a3b6502013b64293ba0034b1a7804299291031b29352a362a351a6604a003052a68010207292503511e1a3b6502013b64293ba003041a5204103b503b50293529351a3e04a003043b5002041a4004103b502937650217293529351a2504a003043b5002041a2704103b50293764222a2a1a1f040c2968013c2a30221f6b222a38222b230c2a3b3b3ce3502b2a0c271502013b1a0104270ef77203220d36220e372a2210220f220f220f220f220f220f220f220f220f220f1a60030c291abb041a98030c299291f8030129351a30052e2d221222121a8b030c2210221022111a85031a86030c2b2a0c64293b691a7f032a691a7e032a693b3b3b3b2d6805293b691a73032a69302a691a6f032a691af2042a693b3e3c3b2d6805221b230d29299291031b29352a362a351a5603a003052a68010207292503511e1a3b6502013b64293ba0034b1a3e03299291031b29352a362a351a2c03a003052a68010207292503511e1a3b6502013b64293ba003041a1803103b503b50293529351a0403a003043b5002041a0603103b502937650217293529351aeb02a003043b5002041aed02103b5029376422212a1ae5020c2968013c2a3022176b2221382222230c2a3b3b3ce3502b2a0c50261502023b501a7902061b0f273eba28062b2b6a2706f72b02220d37f72502220d36220e372a1a2902220f220f220f220f220f220f220f220f220f220f221a1afc030c293c1a42020c291a41020c3b2a3c6a3e2c2b6a2e3b3b2ce350292707f7e201220d361ada03220c22106a0b03002d2a1a0d030c5029362f2213221322171ac3030c302a2a9291030529929102013b03252a352b362b352c362c2b221a221634221e1aa3030c502b2a2506250626041e2b3b270402013b651a4d022709f782011a8903f77c01220d36220e37220f382b2b2b220d2212221222112213221122112211221122111a67030c501a1a0266f75001220d36220e37220f382a221122102210221022102210221022102210221022101a3b010c291ab2011a73010c29929103fd29351a2c032e2d221322131a67010c2211221122121a61011a62010c2b2a0c64293b691a5b012a691a5a012a693b3b3b3b2d6805293b691a4f012a69302a691a4b012a691aee022a693b3e3c3b2d6805221c230d29299291031b29352a362a351a3201a003052a68010207292503511e1a3b6502013b64293ba003481a1a01299291031b29352a362a351a0801a003052a68010207292503511e1a3b6502013b64293ba00303faf5103b503b5029352935fae2a003043b500203fae5103b50293765021529352935facba003043b500203face103b5029376422222afac70c2968013c2a3022176b2222382223230c2a3b3b3ce3502b2a0c50261502023b502d22132212221222122212221222122212221222122212fa150c501a0c0227051f0c|@10889,1,@1971,@10885,@10890,@10894,@10897,@16907,@10903,@10904,@10924,@10939,@8023,@10925,@10940,@5064,@11174,@7275,@7277,@11175,@11215,@11216,@11218,@11219,@11234,@11235,@5091,@5091,@11237,@61,@5420,@5469,@4594,@9426,@4870,@11239,@8044,@11243,@11244,@11245,@5091,@5091,@11253,@11243,@11244,@11234,@11235,@5091,@11253,@4517,@17065,@9454,@11295,@11300,@11301,@4217,@11284,@11302,@11303,@11305,@11306,@11307,@17091,@10955,@11268,@9314,@9338,@5091,@11269,@11271,@17093,@10956,@8111,@4062,@17094,@10808,@10907,@11309,@17099,@9069,@11316,@11322,@5228,@10900,@17107,@11328,@11301,@11329,@17139,@11382,@11301,@7468,@11383,@7941,@7945,@17141,@9480,@11279,@11282,@11283,@4137,@5114,@5112,@4653,@7356,@8966,@17142,@17143,@17144,@17145,@11387,@17149,@17150,@17151,@4554,@11389,@11390,@11398,@4642,@11400,@11401,@11174,@11215,@11402,@11404,@11405,@11407,@17166,@11408,@11409,@7315,@11411,@11427,@10888| 16907:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@1972,@10900| 16908:D8,192|fb102f230d29299291031a29352a362a35fab9a003052a68010207292503511e193b6502013b64293ba00346faa2299291031a29352a362a35fa91a003052a68010207292503511e193b6502013b64293ba00303fa7e103b503b5029352935fa6ba003043b500203fa6e103b50293765021529352935fa54a003043b500203fa57103b502937643e2f69293b693b3b3b3b2d6805332dfa440c296801220d2a2d220e6b220f382210230c221003082a3b3b3ce35002023b502b2a220e7d120000|@10902,1,@1973,@61,@5420,@5469,@4594,@9426| 16909:D16,624|fb202d352e360b0200312a1a6e020c5029352a362a1a6802a003033c02132a3b3bef3ba0030a2a3f1a55023f3bed02013b030529300c023c1a49022f2c220c1a46020c2992910328293529372935291a3a020c2e2a23060c293ba003033b020c2935292f1a29020c29680165270502031a210264293ba0f8ed01220d3b3bef293ba003051a1102024d293db1292808b1293cb2293fb4291a0202a503043b5002041afc0110292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f34ec503f31b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef2d3b3bef2a3ba003032e0250293ba003032b02482a2ab1292808b1293cb2293fb4291a9d01a503043b5002041a970110292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220d3f2e2c220cec502c95502c2708293b3bef293ba003051a62010249292817b1292808b1293cb2293fb4291a4601a503043b5002041a400110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a24013f2e2c2817ec502c95502c270832faf0a003033c0212323b3bef3ba00309323ffade3f3bed02013b0304fad40253323b3bef293ba00304faef0245280e2ab1292808b1293cb2293fb429fad0a503043b500203facb10292841bd2a3cb22a2a3b3bf02b3b3b32f050fabe3f2d3f280eec5022113f2d281234ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b024d293ba003032c02452a2ab1292808b1293cb2293fb429fa73a503043b500203fa6e10292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708270a340c50fa470202293527081f04000000|@10906,1,@1974,@8111,@4062,@10808,@10907,@4898,@10912,@10923,@10803,16777215,@4054,@10832,@10905,@9103| 16910:D14,620|fb1e0b02002f2a1a6e020c5029352a362a1a6802a003033c02132a3b3bef3ba0030a2a3f1a55023f3bed02013b030529330c023a1a4902332c331a47020c2992910329293529372935291a3b020c29230c2f2a0c293ba003033b020c293529301a29020c29680165270602013b64293ba0f8eb01343b3bef293ba003051a1002024d293db1292808b1293cb2293fb4291a0102a503043b5002041afb0110292841bd2a3cb22a2a3b3bf02b3b3b32f05022133f2d3f34ec503f31b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef2d3b3bef2a3ba003032e0250293ba003032b02482a2ab1292808b1293cb2293fb4291a9c01a503043b5002041a960110292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220d3f2e2c220cec502c95502c2708293b3bef293ba003051a61010249292817b1292808b1293cb2293fb4291a4501a503043b5002041a3f0110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a23013f2e2c2817ec502c95502c270832faf3a003033c0212323b3bef3ba00309323ffae13f3bed02013b0304fad70253323b3bef293ba00304faee0245280e2ab1292808b1293cb2293fb429facfa503043b500203faca10292841bd2a3cb22a2a3b3bf02b3b3b32f050fabd3f2d3f280eec5022113f2d281234ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b024d293ba003032c02452a2ab1292808b1293cb2293fb429fa72a503043b500203fa6d10292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708270a320c503b020629352968016427061f04000000|@10909,1,@1975,@8111,@4062,@10808,@10907,@4898,@10908,@10803,16777215,@4054,@10832,@10905| 16911:D7,236|fb1b2c352d362e372f382f3729392a3a32362e352f3630383139fadc2a316a2d353ca0032e2d362e382a352a352993293ba00304fac602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e220c6806220d353ba0032d220d3631353ca0031d313629352806a00308292b3bfa850c0206280b2a2c3b6b3c2a696502043f2a336a640202220d220c299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363e2a69293b696602013b220e3ba0030329020629220ffa220c22122d2f2c6b271343|@10911,1,@1976,@16912,@4725,@4807,@10910| 16912:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@1977,@8143| 16913:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1978,@10910| 16914:D8,124|fb152c352d362e372f383039303729393235fa742b69fa742b2b6a2ffa722bfa730c2f299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363e2a69293b696602013b220c220c220c2e220c3b3b68072922112cfa2322137b05120000|@10914,1,@1979,@16915,@16916,@10919,@8030,@10913| 16915:D3,28|fb052b3629353ba0030c2938292c360c2968016502013b6442000000|@10915,1,@1980| 16916:D6,40|fb0ffa302a36690b0400313037fa29313b2efa280c5029352a362b372c382c2c2c2c6b270a420000|@10917,1,@1981,@16917,@10916,@8100| 16917:D6,180|fb1229363b3bef293ba00304fab20243293cb1292808b1293cb2293fb429faa4a503043b500203fa9f10292841bd2a3cb22a2a3b3bf02b3b3b32f05031363f2d3f34ec503f31b12c2a282ee4502c95502c2708293b3bef2e3b3bef2a3ba003032f024e293ba003032b02462a2ab1292808b1293cb2293fb429fa49a503043b500203fa4410292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220e3f2e2c220cec502c95502c2708270442|@10918,1,@1982,@4139,16777215,@4054| 16918:D3,4|fb022b42|@10918,1,@1983| 16919:D3,4|fb022b42|@10917,1,@1984| 16920:D6,136|fb112d3729353ca0032729362f353036313832393c2e692a3ba00303320205322bfa710c2e2e2c2f2d3b3b68072707025429353ba0034d29362f35303631383239323629353ca0031d293629352806a0030829303bfa410c0206280b2a313b6b3c2a696502043f2f2b6a2b3ba00303330205332cfa260c2f2f2c302d3b3b6807270802012e644400|@10921,1,@1985,@10922,@4807,@10920| 16921:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1986,@10922| 16922:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@1987,@10920| 16923:D14,228|fb112c3729353ea003092936292808a06402013b03b32d352e38fad4352bfad40c29fad40c3003162b353da003043b500203fac8102b3729fac60c64022e2b353da003272b3629353ea0030829362992916402013b030d29362935293629faa00c66020429fa990c6402012b29352806a003043b500203fa8b1029362b929103082b36293ba06402013b030f2b35293528053b2b2d3b6805650219fa6b061b0f273eba28062b2b6a3f2f692c3b3b2ce3502a2704fa562a2c6a0b0200322d2bfa4f0c502935270b02182d380b02002cfa432bfa3c0c5029352a3629fa3b0c2b2707644300|@10926,1,@1988,@83,@10927,@10929,@10930,@8044,@10933,@5064,@16926,@8023,@10937,@10925| 16924:D4,80|fb0d2c929103442c352d362a352b362c37302ca003033c0217303b3bef2c3b3befa0030b303f2d3f2f3b3befed02013b030e2a2a692d32fa230c2a2a696502072c31fa18327e09270502013b43000000|@10928,1,@1989,@10927| 16925:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@1990,@10929| 16926:D3,20|fb042b35292b37a003062a36680102013b644200|@10936,1,@1991| 16927:D3,4|fb023b42|@10938,1,@1992| 16928:D4,52|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa180c2a2a69270c02013b420000|@4648,1,@1993,@10925| 16929:D3,4|fb023b42|@10938,1,@1994| 16930:D21,552|fb421a2f0234346a0b03002d2a1a28020c5029362a3722152210221022142e1a1a020c2214220f2c221522151a11020c22152a2a9291030529929102013b03722a352b362b352c362c352d362e392f23062c2b1aee016a3b2c69221f23103b2a0c3d2a69293b692d2a6930220d693b3b2b3322260c220c332d2c6b293b69220d3b3b2ce350220e2229220e1aba010c50220e2a6922190c50220e2a692225380c50221122102515251526131e783b271302013b651a9501221522156a0b03002d2a1a74010c5029352a362b370b03003b2a1a7c010c5029362a37222622112224222122152226220d222c321a66010c29221f1a63010c2227910308222037340cf71f010b03003b2a1a45010c5029352a362b371a460122282c6a222823061a3f012a22132e6b1a3b01222b2216316b1a3601222c22106a222c23081a2e012a22116a222e39222f230d22303a2231230b2232230c2233352234230a223536223623072c2b2211220e220c3422133022112215220c221022102214680e2242faf02a929103272a352b362a35223922403022432d224622442243224222440c2b2a2506250626041e262604020051222afac30c223e3b3b2ce350222b299291035c29352a362a38293629353ca003082938293ca06402013b030d2a362936293b3b3be35051022b2a3629353ba00309293729353ca06402013b03043b500203fa78103b502b3629372936293b3b3be35026042b250526041e5b260402023b50503b2719fa4c271b1f0f|@10942,1,@1995,@16931,@9069,@10944,@10954,@4062,@8998,@16980,@8966,@11015,@11027,@17017,@17018,@17019,@17024,@17025,@4517,@11171,@10941| 16931:D8,140|fb122b35293729299291031829352a362a353ba003042a360207292503511e173b650202fa7264303b3bef293ba00304fa6a024729282bb1292808b1293cb2293fb429fa5ba503043b500203fa5610292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3f2d3f34ec503f31b1fa2e3f2e2c282bec502c95502c27082e363c30372e2dfa24220c7b070a000000|@10943,1,@1996,@8997,@9596,16777215,@4054,@10900| 16932:D9,176|fb192f929103a32f3530362a352b362c392d3a2c2bfaa56a3b2b299291031229362b3caa292b25042504511e113b6502012a65220d3ba0030e2bfa84693b3c2b2e22110c640217fa7b06fa7c063d2b2b6a3b063c2a2f3c6b2b2a316a27053b2e69220d23103b2a0c3d2a69293b692d2a69220c332b326b293b69220d3b3b2ce3502a3b69220f2216220ffa400c50220f2a6922150c5022102218221822182218fa2e0c2c2a69271302013b1f05000000|@4648,1,@1997,@4062,@5064,-1,@10945,@8998,@10944| 16933:D5,44|fb062b352c362d372a3ba00305293ba002013b03043b500203fa1d102b3ba20303fa19103b503d2c69664200|@10948,1,@1998,@10949,@10947| 16934:D7,60|fb0b2f9291032f2f3530362a372992910313293529fa31333333220e680532fa2b0c640202fa292b33333333fa260c2a2a69270502013b1f05000000|@4648,1,@1999,@16935,@10955,@5064,@10954| 16935:D6,44|fb0a29392308fa302a2c366a2b39230d2a2a69fa272e372f38336b2a332bfa200c312a354564270544000000|@10957,1,@2000,@16936,@16937,@10956| 16936:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2001| 16937:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2002,@10900| 16938:D17,664|fb202d352e360b0200312a1a96020c5029352a362a1a9002a003033c02132a3b3bef3ba0030a2a3f1a7d023f3bed02013b030529300c02961a71022f2c220c1a6e020c2992910382293529372935291a62020c2e2a23080c293ba003033b026629352e3729393035293b3bef293ba003051a44020244293cb1292808b1293cb2293fb4291a3502a503043b5002041a2f0210292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082e2d2b1a04020c2968012707270502031afb0164293ba0f8be0128062841bd293b28143bf02a3b3b2812f0501ae3013f2c3f2810ec502a28142820e4502a28152828e4502a95502a3b3bef2d3b3bef2a3ba003032e0250293ba003032c02482a2ab1292808b1293cb2293fb4291a9201a503043b5002041a8c0110292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1220d3f2e2c220cec502c95502c2708293b3bef293ba003051a63010249292817b1292808b1293cb2293fb4291a3b01a503043b5002041a350110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a25013f2e2c2817ec502c95502c270832faeda003033c0212323b3bef3ba00309323ffadb3f3bed02013b0304fad10253323b3bef293ba00304faf00245280e2ab1292808b1293cb2293fb429fac5a503043b500203fac010292841bd2a3cb22a2a3b3bf02b3b3b32f050fabf3f2d3f280eec5022113f2d281234ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b024d293ba003032c02452a2ab1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708270a340c50fa480202293527084400|@10959,1,@2003,@8111,@4062,@10808,@10907,@4898,@4139,16777215,@4054,@10960,@11002,@10958,@10832,@10905,@9099| 16939:D11,64|fb1040fa470c29fa470c293830352935293369652a0c3b06fa3a2a69fa3a2afa3b6a2f2a220c3c220dfa353bfa360c2c35293ba00303fa30103b502935270944|@10962,1,@2004,@4554,@4898,@16940,@10964,@10968,@10971,@10961,@5689| 16940:D3,16|fb072b362968012b363b3b2ce3654200|@10963,1,@2005| 16941:D9,96|fb0f2b35293b3bef293ba00304fa5d024428092ab1292808b1293cb2293fb429fa4ea503043b500203fa4910292841bd2a3cb22a2a3b3bf02b3b3b32f050fa2c3f2d3f2809ec50313f2d280d34ec502b95502b2707fa21fa232bfa246b651000|@10963,1,@2006,@10966,16777215,@4054,@16,@4583,@10965| 16942:D9,96|fb0f2b35293b3bef293ba00304fa5d0244280c2ab1292808b1293cb2293fb429fa4ea503043b500203fa4910292841bd2a3cb22a2a3b3bf02b3b3b32f050fa2c3f2d3f280cec50313f2d281034ec502b95502b2707fa21fa232bfa246b651000|@10963,1,@2007,@10970,16777215,@4054,@16,@4583,@10969| 16943:D4,8|fb02fa1010000000|@10973,1,@2008,@10972| 16944:D7,48|fb0c312e313c3b30fa320c322f323b2d2efa290cfa2a32312c6bfa28323433332f2210306808220c3b2bfa1c327b050d|@10975,1,@2009,@10976,@16957,@16945,@4642| 16945:D4,56|fb102c2c2a9291032a2a352b36312b2d3036313732383339343a220c2306220d2307fa200c2a2a2505250526031e293b6602012965440000|@4645,1,@2025,@10992| 16946:D6,36|fb09fa2c303030306805312d2bfa250cfa26323232326805332b2bfa17317b050b000000|@10977,1,@2010,@16948,@4642,@16947| 16947:D4,44|fb0d2c2c2a929103202a352b36312b2d3036313732383339fa1e0c2a2a2505250526031e1f3b660201296544|@4645,1,@2014,@10980| 16948:D4,44|fb0d2c2c2a929103202a352b36312b2d3036313732383339fa1e0c2a2a2505250526031e1f3b660201296544|@4645,1,@2011,@10978| 16949:D10,232|fb153035faeea003dc3035fae7a003043b500203fae2103037293729352a39323b3bef220d3b3bef2a3ba00304220e024f293ba003033402472a2ab1292808b1293cb2293fb429fab3a503043b500203faae10292841bd2a3cb22a2a3b3bf02b3b3b32f05022123f2d3f220cec503f32b122163f2e2c220cec502c95502c2708293b3bef293ba00304fa790242293cb1292808b1293cb2293fb429fa5fa503043b500203fa5a10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c2708fa372f220f6a302b2b221022102215fa2c22127b08132f1f07|@10979,1,@2012,@21,@4594,16777215,@4054,@4139,@16950,@10976| 16950:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2013,@8143| 16951:D12,376|fb1f30351a7d01a0f8680130351a7401a003043b5002041a6e0110303729351a6a0131691a690131692b38293629353da003a129362a372c352d37220d03042210028d1a4e013032220f6b2c1a49012b1a49010c3d2f2b6a2d2a2e6a220c3522143b3bef2a3b3bef2a3ba003032b0251293ba00304221602482a2ab1292808b1293cb2293fb4291a1601a503043b5002041a100110292841bd2a3cb22a2a3b3bf02b3b3b32f050221d3f2d3f220cec503f32b1333f2e2c220cec502c95502c27082210372a220d2b316b29221b69270a2704029b32910304220c02932a3629353ba0030c293829220d0c2968016502013b299291037629353035220f3b3bef2a3b3bef2a3ba003032b024f293ba00304221102462a2ab1292808b1293cb2293fb429fa7ca503043b500203fa7710292841bd2a3cb22a2a3b3bf02b3b3b32f05022183f2d3f220cec503f32b1333f2e2c220cec502c95502c27083436220c372b2b2b326b2922176927080202220e65270602012f1f070000|@10982,1,@2015,@19,@4594,@16952,@16953,@16954,@10981,@8030,16777215,@4054| 16952:D5,104|fb1029363b3bef2c3b3bef2a3ba003032d0250293ba003042b3602472a2ab1292808b1293cb2293fb429fa48a503043b500203fa4310292841bd2a3cb22a2a3b3bf02b3b3b32f05032363f2d3f220cec503f32b1220c3f2e2c220cec502c95502c27086542000000|@10983,1,@2016,16777215,@4054| 16953:D3,28|fb052b3629353ba0030c2938292c360c2968016502013b6442000000|@10984,1,@2017| 16954:D5,36|fb0e0b0400302f36fa26313732382efa230c5029352a362b372c382c2c2c2c6b27094200|@10986,1,@2018,@10985,@8100| 16955:D3,4|fb022b42|@10987,1,@2019| 16956:D3,4|fb022b42|@10986,1,@2020| 16957:D7,44|fb10fa342a3669fa332b37690b04003230fa2d3134382efa2b0c5029352a362b372c382c2c2c2c6b270b4200|@10989,1,@2021,@16958,@16959,@10988,@8100| 16958:D3,28|fb052b3629353ba0030c2938292c360c2968016502013b6442000000|@10990,1,@2022| 16959:D5,104|fb1029363b3bef2c3b3bef2a3ba003032d0250293ba003042b3602472a2ab1292808b1293cb2293fb429fa48a503043b500203fa4310292841bd2a3cb22a2a3b3bf02b3b3b32f05032363f2d3f220cec503f32b1220c3f2e2c220cec502c95502c27086542000000|@10991,1,@2023,16777215,@4054| 16960:D3,4|fb022b42|@10991,1,@2024| 16961:D21,564|fb2433351a3902a0f8a90133351a3002a003043b5002041a2a0210333729352a362b372c382a352b362c382d392e3a221203491a12022b22136a2e353ca0032f2e362f382a352a352993293ba003051afa0102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e292f3b302e30680665f72801401ad0010c1ad0012a691acf012b691ace012c69292c2c6a1ac9013022186a22163b3bef221c3b3bef2a3ba00304221d0252293ba00304221802492a2ab1292808b1293cb2293fb4291a9c01a503043b5002041a960110292841bd2a3cb22a2a3b3bf02b3b3b32f050221f3f2d3f220cec503f32b122253f2e2c220cec502c95502c2708293b3bef293ba003051a60010244293cb1292808b1293cb2293fb4291a4501a503043b5002041a3f0110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c2708220f30303b2d221f221f1a11010c34353ca0032f3436220c382a352a352993293ba00304fad402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060201342922113b2212222022126806270d32322b326b22172a69221037220f7d183335fabca003293335fab5a003043b500203fa7c10333729352a362a2f0c2a30faa20c2a2a6922112a69643236317d113335fa94a003443335fa8da003043b500203fa4c10333729352a362b372c382d392e3a2f23062cfa73220cfa730c292ea02991030b3131312d3131316807020132322a69220f35220e7d173b1f0a0000|@10994,1,@2026,@21,@4594,@16962,@4725,@4554,@16963,@16965,@16967,@16969,16777215,@4054,@4139,@10961,@19,@10999,@18,@10993,@8030| 16962:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2027,@8143| 16963:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@10996,1,@2028,@19,@4162,@4596,@10995,@4622| 16964:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2029,@19,@10995| 16965:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@10996,1,@2030,@21,@4162,@4596,@10997,@4622| 16966:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2031,@21,@10997| 16967:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@10996,1,@2032,@18,@4162,@4596,@10998,@4622| 16968:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2033,@18,@10998| 16969:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2034,@8143| 16970:D6,68|fb132c9291033b2c352d362a352b362c372d382e392f3a3023062cfa33220dfa330c292ea02991030b3131312d313131680702013333220ffa1e0c2a2a69270d02013b43|@4648,1,@2035,@11000,@8030,@10999| 16971:D3,4|fb022b42|@11001,1,@2036| 16972:D3,4|fb022b42|@11001,1,@2037| 16973:D4,16|fb072d2d2b362efa132f7b0605000000|@11004,1,@2038,@11003| 16974:D21,436|fb1b2e350a060017010c001b01350143018a012e3629352a362b392c3a0b01002d2d2b220e0c5029352938293629353ca0030b2a362936292210a06502013b299103bb2c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643b220d299291031229362b3caa292b25042504511e113b6502012a652a2aa091035a30352b3c1a1e010c2b3c1a18010c293b691a15012a692c2a691a11012a692f2a691a0d012a6927081a0a010c291a09011a0a010c291a09010c3b3e3b3b2d68053c3b2b22126b2216382217230c2a3b3b3ce3502b2a0c27070205333b3b33e3270402013b33fade221222122212fada0c3b3369293b6928052c220e332d6805270f0291fac8028d2e362f382a303030fab40c2a313131faad0c3d2b2b6a270402732e3629352a3628062b2b6a6602652e362f372afa8f313131fa960cfa970c29fa970c3b2a2d6a2c030329020629063c2a69643e2d2b6a2e0303290215fa7e061b0f273eba28062b2b6a2b3b3b2fe32a27042707021e2e3629fa4a303030fa610c293cfa600c29fa600c3b2a3c6a3e2c2b6a27051f04000000|@11006,1,@2039,@4569,@11007,@11008,@11009,@4052,@8818,@8820,@8979,@11003,@11010,@4517,@11011,@7941,@11012,@5064,@11013,@7275,@11005| 16975:D4,36|fb0a2f929103192f3530362a303030340c2a32323232fa180c2a2a69270402013b1f0500|@4648,1,@2040,@11010| 16976:D5,56|fb0f2f9291032b2f3530362a352b362a352a333333220e0c2afa290c292b692f220e220e220e220efa1e0c2a2a69270902013b1f05000000|@4648,1,@2041,@7937,@11011| 16977:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2042,@11012| 16978:D4,36|fb0a2f929103192f3530362a303030340c2a32323232fa180c2a2a69270402013b1f0500|@4648,1,@2043,@11013| 16979:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2044,@11005| 16980:D8,136|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa680247292834b1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c2834ec502c95502c27082d363c2f372e2dfa22347b07090000|@10943,1,@2045,@8997,@11014,16777215,@4054,@10900| 16981:D5,72|fb10339291030532929102013b0336333534363435220c362c2b220e220e220e220e220e220e220efa2a0c2c2b220f220f220f220f220f220f220ffa1b0c2a2a69270602013b1f09|@5900,1,@2046,@11016,@11015| 16982:D7,152|fb1933353436220c37220d39220e3a3b2c299291031229362b3caa292b25042504511e113b6502012a652afa770c3b2d69221023103b2a0c3d2a69293b692d2a69280530220e22192d680534fa5afa5c0c2922172217221a22182f220f221afa4f0c22192a692214031822102a6922140c50221a3b6922112a69642219380c50020922102a692219380c50220f3b3b2ce3502927111f0900|@11018,1,@2047,@11019,@11020,@6336,@11017| 16983:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@2048,@11019| 16984:D4,8|fb03fa102c694200|@11021,1,@2049,@16985| 16985:D3,48|fb0b2b382a3638293b3bef2b3b3bef2a2aa303032a0201292c3f2f3f2dee293ba003052c2ca30203293ba22706420000|@11022,1,@2050| 16986:D10,180|fb2432929103aa323533362a352b362c372d380b02002e929103232e3529faa0221322132213221768052212fa960c3d2a22116a2c2a453b46502603020729220e453c465029352a363b3269221223103b2a0c3d2a69293b692d2a69fa6a06fa6b063d2b2b6a32221869220f2a2c220e313b3b68072210221d2215fa530c2211221d221f22173cfa4b0c22122c69221b0c22143b3b2fe322182223222322232223222322232223fa2f0c2e2a69271b02013b1f08|@4648,1,@2051,@16987,@10955,-1,@10945,@8998,@11023,@11017| 16987:D6,44|fb0a29392308fa302a2c366a2b39230d2a2a69fa272e372f38336b2a332bfa200c312a354564270544000000|@10957,1,@2052,@16989,@16988,@10956| 16988:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2054,@10900| 16989:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2053| 16990:D14,392|fb112f1a8e01a003033c02132f3b3bef3fa0030a2f3f1a7b013f3fed02013b03033c02ab2f1a7001a003033c02152f3b3bef2805a0030b2f3f1a5c013f2805ed02013b03033c02872f1a5001a003033c02132f3b3bef3ea0030a2f3f1a3d013f3eed02013b03033c02652f1a3201a003033c02132f3b3bef3da0030a2f3f1a1f013f3ded02013b03033c02432f1a1401a003033c02132f3b3bef3ea0030a2f3f1a01013f3eed02013b03033c02212b031d2ffaf4a003033c02122f3b3bef3da003092f3ffae23f3ded02013b02013b03b42f3b3bef293ba00304fad0024728192ab1292808b1293cb2293fb429fac1a503043b500203fabc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa9d3f2d3f2819ec50220e3f2d281d34ec502b95502b2707293b3bef293ba00304fa88024829280cb1292808b1293cb2293fb429fa6da503043b500203fa68103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa4b3f2e2c280cec502c95502c2708313c34332dfa3b347b070b3b1f05|@11025,1,@2055,@4891,@4844,@5073,@5008,@5350,@9157,@11026,16777215,@4054,@11024,@10900| 16991:D10,196|fb183b06293b3bfac72e3769e3500b0200fac12afac20c5029352a36fabe2b3136342d680533299291031429352a362a2e30faac0c50292503511e145102023b505033299291037529352a362a352938292f0c293ca003043b5002552afa8569320c502b38293629353ca003082938293ca06402013b030d2a362936293b3b3ce35051022b2a3629353ba00309293729353ca06402013b03043b500203fa49103b502b3629372936293b3b3ce3502604512c250626051e733b270502013b642707430000|@11029,1,@2056,@16992,@11125,@11127,@17013,@11028,@4614,@10941| 16992:D17,304|fb102b363ca203061a3101f71e012b3529353ba0038a2c3529362e363cab2a2a691a1c01351a1c012a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629faf9a003033c020d29faf4a003033c020429faefa06402013b9102013b02013b03162afae269fae32a69fae32a693b3e3c3b2d68056602012a64020129293b69fad12a69fad12a693b3c3b3b2d68052709028b2c363ca20304fac002812c3529362e363cab2a2a692e36352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6ca003033c020d29fa67a003033c020429fa62a06402013b9102013b02013b03162afa5569fa562a69fa562a693b3e3c3b2d68056602012a64020129293b69fa502a69fa502a693b3c3b3b2d680527096442000000|@11031,1,@2057,@6303,@118,@11032,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@11112,@6303,@5091,@11030| 16993:D4,12|fb05fa14352c2a2d7d040000|@11034,1,@2058,@148| 16994:D13,120|fb102b363ca20304fa7a026b2b352c363cab293ba20304fa6f023d2a352a3cab2a2a692e37352a2a0c642e362e3cab2a2a69fa5835fa593436693b2a3e3c6b642a0c642a2a0c6429fa4a69fa4b2a69fa4b2a69302a69270bfa462a693b3c3b3b2d6805293b69fa3c2a69fa3c2a693b3c3b3b2d6805270842|@11034,1,@2059,@6303,@5086,@118,@16995,@6393,@5091,@9324,@6395,@5091,@11036| 16995:D3,12|fb052936352c2a2d7d040000|@11037,1,@2060| 16996:D46,416|fb282b363ca203061aa101f78e012b352c363cab293ba203061a9401f75e012a372a3cab2a2a692e39352a2a0c642d3ca203061a7e01f72f012e362e3cab2a2a693238352a2a0c64313da203061a6801f70001322306323cab2a2a691a5d01351a5d01220f36693b2a3d3c6b642a0c642a2a0c64220c3ea203051a470102bf220d39220d3cab2a2a691a3c01351a3c01221337693b2a3e3c6b642a0c642a2a0c6422103fa203051a2601027d22113522113cab2a2a691a1b01352a2a0c6422142805a203051a1001024a22153a22153cab2a2a69fae6351a02012a0c642a2a0c6422193822193cab2a2a69221d36352a2a0c6429faea69faeb2a69faeb2a69faeb2a69faeb2a69322a69fae82a69fae82a69270ffae62a69fae62a692c2a69fae32a69fae32a692709fae12a69fae12a692c2a69fade2a69fade2a692709fadc2a69fadc2a692c2a69fad92a69fad92a692709fad72a69fad72a692c2a69fad42a69fad42a692709fad22a69fad22a692c2a69facf2a69facf2a692709facd2a693b3c3b3b2d6805293b69fac32a69fac32a693b3c3b3b2d6805270842000000|@11037,1,@2061,@6303,@8198,@8198,@8198,@9,@16997,@8198,@118,@17000,@8198,@7,@8198,@11047,@9320,@5091,@11065,@5091,@9324,@5091,@11067,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@11069,@5091,@9324,@5091,@11071,@5091,@9324,@5091,@9612,@9327,@5091,@11045| 16997:D5,24|fb07fa2035fa212b36693b2a3e3c6b642a0c642c2a2d7d04|@11046,1,@2062,@116,@16998| 16998:D5,24|fb07fa2035fa212b36693b2a3e3c6b642a0c642c2a2d7d04|@5080,1,@2063,@118,@16999| 16999:D3,12|fb052936352c2a2d7d040000|@9679,1,@2064| 17000:D3,12|fb052936352c2a2d7d040000|@9753,1,@2065| 17001:D21,156|fb162b363ba20304fa9e02822b35362c363cab2a2a69fa9435fa952a0c642a2a0c642f363ca20304fa8a024d2f353530363cab2a2a69fa7435fa7d2a0c642a2a0c6433353734363cab2a2a69fa5e35fa6b2a0c642a2a0c6429fa6569fa662a69fa662a69fa662a69fa662a69322a69fa632a69fa632a69270ffa612a69fa612a692c2a69fa5e2a69fa5e2a692709fa5c2a693b3c3b3b2d6805654200|@4036,1,@2066,@8198,@116,@11050,@8198,@11052,@11056,@9320,@5091,@11060,@5091,@9324,@5091,@11062,@5091,@9324,@5091,@11049,@9327| 17002:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2067,@115| 17003:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2068,@118,@11054| 17004:D29,244|fb1e2b363ba20304faf602d82b35362c363cab2a2a69faec352a2a0c642f363ca20304fae302a82f353830363cab2a2a69fad1352a2a0c6433363da20304facc027833353534363cab2a2a69fac2352a2a0c64220e363ea20304fab80247220e3537220f363cab2a2a69fa98352a2a0c64221235392213363cab2a2a69fa85352a2a0c6429fa9169fa922a69fa922a69fa922a69fa922a69322a69fa8f2a69fa8f2a69270ffa8d2a69fa8d2a692c2a69fa8a2a69fa8a2a692709fa882a69fa882a692c2a69fa852a69fa852a692709fa832a69fa832a692c2a69fa802a69fa802a692709fa7e2a693b3c3b3b2d68056542000000|@4036,1,@2069,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327| 17005:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2070,@118,@11058| 17006:D34,296|fb202b363ba203061a2901f70b012b35352c363cab293ba203051a1b0102cd2a362a3cab2a2a691a1201352a2a0c642d3ca203051a0901029e2e382e3cab2a2a69faf9352a2a0c64313da20304faf502713235323cab2a2a69faed352a2a0c64220c3ea20304fae40243220d37220d3cab2a2a69fac6352a2a0c6422113922113cab2a2a69fab5352a2a0c6429fac169fac22a69fac22a69fac22a69fac22a69322a69fabf2a69fabf2a69270ffabd2a69fabd2a692c2a69faba2a69faba2a692709fab82a69fab82a692c2a69fab52a69fab52a692709fab32a69fab32a692c2a69fab02a69fab02a692709faae2a693b3c3b3b2d680530353631363cab2a2a69fa45352a2a0c6429fa9569fa962a69fa962a69302a69270cfa912a693b3c3b3b2d680565420000|@4036,1,@2071,@5086,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395| 17007:D23,188|fb152b363ca20304fabe02af2b35299291036f2c3529352a362f363cab293ba20304faa8023b293cab2c2a69faa2352a2a0c642c3cab2e2a69fa99352a2a0c6429fa9569fa962a69fa962a69fa962a69fa962a69312a69fa932a69fa932a69270dfa912a693b3c3b3b2d6805293b69fa872a69fa872a693b3c3b3b2d6805270a02382c363ca20304fa76022e2c35293ba00304fa6f02222d363ca20304fa6902182d35293ca00304fa62020c2e363ca20304fa5c0202fa5c64646442|@11080,1,@2072,@6303,@8198,@115,@75,@9320,@5091,@11081,@5091,@9324,@5091,@11083,@9327,@5091,@11085,@6303,@11092,@6303,@11099,@6303,@11079| 17008:D3,76|fb092c3629353ca003092c3629353ca06402013b030f2d3629362e3629362b2aa0270402252d3629353ba003092d3629353ba06402013b030f2e3629382f3629382b2aa0270402013b646443|@11126,1,@2073| 17009:D5,24|fb063b06fa1e2a2f6afa1d2f2c6a2e2b452a466643000000|@11128,1,@2074,@17011,@17010| 17010:D3,48|fb0a29373529299291032029352a362a352b362a3231360c030529680102082b250526041e1e3b270402013b64644200|@11132,1,@2077| 17011:D4,68|fb0a2b352a363529299291031b29352a362a35292f31370c03033c02082a250426031e1a3b6602013b640309292c372cfa1e0c0201292e2a692d363b3b2ce32704420000|@11130,1,@2075,@11129| 17012:D4,40|fb082d9291031c2d352e362a35292f310c03032a020a2a3030fa190c2c2a69646602013b44000000|@11131,1,@2076,@11129| 17013:D9,252|fb162b2a390c293ba0031f2c3629353ba003122938292d380c03033d02013c3c2a69650202fae1640202293529353ca0031329353ca003043b500203face103b50293602b52dfac8692c360c2a353ba003043b500203fabc103b502a36293d2a9291037f2a352b362b3ca003033c02652a362c2a299291035929352a362a3829353da02991030d2e2c2506250626041e1b3b023a2c3829353da003043b500203fa76103b502936292212fa702214370c293ca003033c0215293ba003033b0201312930250a250a26081e553b6466270402012a65642a2a2505250526031e7e3b6602012965293ba003032c02033c2a69312a69642f360c5029666542|@11134,1,@2078,@7502,@11135,@4688,@11137,@11139,@11133| 17014:D3,4|fb023d42|@11141,1,@2079| 17015:D7,292|fb162d3529382e0c299291f80301293529353ba003043b5002041a1301103b502936312a692d38293629353da003041a0201103b503b5029353ba00314293729353ca00307293629356402022936640205293629356403033c02442c929103043b500203fad2103b502c3529352938293629353da00303fabb103b503b5029353ba00314293729353ca003072936293564020229366402052936293564270403692b299291035e29352a362a352938293629353ca003082938293ca06402013b030d2a362936293b3b3ce35051022b2a3629353ba00309293729353ca06402013b03043b500203fa53103b502b3629372936293b3b3ce35026042c250626051e5d260502023b505002023b502b270502032f3b692b383b2b692a2a69652f2f7d08000000|@11142,1,@2080,@11137,@8092,@5975,@10941| 17016:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@6302,1,@2081,@6303,@11145,@6303,@11152,@6303,@11144| 17017:D3,16|fb042b2a370c502b2a36372c80000000|@11165,1,@2082| 17018:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2083| 17019:D7,64|fb0d3b06fa462a692b380c2a353b06fa3f2a692e370c2a353b303623090c293ba003032a02052a2afa2a0c293ba003032e02082e2afa21220c7e0b2708420000|@11167,1,@2084,@17020,@17021,@11169,@11166| 17020:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2085| 17021:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2086| 17022:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2087,@11169| 17023:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2088,@11166| 17024:D3,16|fb042b2a370c502b2a36382c80000000|@11170,1,@2089| 17025:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2090| 17026:D5,72|fb092b9291033d2b352c362a38293629353da00303fa3d103b5029353ba00314293729353ca0030729362935640202293664020529362935642cfa1c0c2a2a69270602013b420000|@4648,1,@2091,@8092,@11171| 17027:D4,48|fb113b062d2d2b2d362e372f383039313a322306332307342308220c2309220d230a220e230bfa140c50293564430000|@11177,1,@2092,@11176| 17028:D34,4508|fb29220f1aa1110c220f1a9b110c2a352805a0031b2a382938293629353ca0030b2a362936292213a06502013b6602013b03033c022329352805a0031b29382938293629353ca0030b2a362936292213a06502013b6602013b03043bf73a112a353ba003043bf7301129353ba003043bf726112a352806a0030729352806a002013bf84e022a362b372a2a692c362d372a2a692e352f2da003043bf730022e3db7293ba09103292b33221b221b221b1afa10221c221c221c221c221c221c221c221c221c221c221c1ae510221d7b131a2d352b353ea0030629353ea002013b03932b362c372a2a692c362d372a2a69343b3b1abf10e350220e3b3b1ab610e3502c2a33321aa5102223222322232223222322232223222322232223222322231a96100c332a2223222322231a7e10222422242224222422242224222422242224222422241a69100c50220d22112223222322231a5610222422242224222422242224222422242224222422241a411022257b13222b353fa0030629353fa002013b03cc2b362a36292b1a30100c293ba003213b221e221e1a26106b221c3529929103033b020a2a6801221e3b3b2ce364650299313b3b1afb0fe350343b3b1af30fe35029929103082936293ba06402013b030f2935293528053b2b2d3b680565021a1acf0f061b0f273eba28062b2b6a3f2d692c3b3b2ce3502a2704302a2220222022201aa50f222122212221222122212221222122212221222122211a900f0c5033220e2220222022201a7e0f222122212221222122212221222122212221222122211a690f22227b131f66027d2b353ca003292f33221c221c221c1a4c0f221d221d221d221d221d221d221d221d221d221d221d1a370f221e7b131b29353ca003292c34221c221c221c1a1d0f221d221d221d221d221d221d221d221d221d221d221d1a080f221e7b131b3b221b221b1a0f0f6b22193529929103033b020a2a6801221b3b3b2ce3646564642707f7c60e2a352806a0f8da012a362b372a2a692a3db7293ba09103033c02072c3529353fa064f894012d352805a0f863012d362e382938293629353ca0030b2a362936292218a06502013b03033c020b2b38293629353da029916603df31352805a003af313632382938293629353ca0030b2a36293629221ca06502013b03033c020b2b38293629353da0299166032a32220d221f221f221f1a410e222022202220222022202220222022202220222022201a2c0e22217b131e2b38293629353da003043b5002041a2e0e103b5029362a372a311a260e0c1a260e2a690b02002e2d2b1a1f0e0c50293527091aea0d0c220e2a221e221e221e221e221e221e221e221e221e221e221e221e1acf0d221f7b101f2e32221b221b221b1abf0d221c221c221c221c221c221c221c221c221c221c221c1aaa0d221d7b131a2b38293629353da003043b5002041aac0d103b5029362a372a311aa40d0c1aac0d2a690b02002e2d2b1a9d0d0c50293527091a680d0c332a221a221a221a221a221a221a221a221a221a221a221a221a1a4e0d221b7b101b2a2e2217221722171a3e0d221822182218221822182218221822182218221822181a290d22197b13162a2e2217221722171a150d221822182218221822182218221822182218221822181a000d22197b131629352806a0f8b10129362a37293db7293ba09103033c02072b3529353fa064f83e012d352805a003de2d362e382938293629353ca0030b2a362936292217a06502013b03033c020b2b38293629353da0299166035a30352806a00331303631372a2a6929220c221d221d221d1a880c221e221e221e221e221e221e221e221e221e221e221e1a730c221f7b131c31312218221822182218221822182218221822182218221822181a4d0c22197b10192b38293629353da003043b5002041a530c103b5029362a372a311a4b0c0c1a570c2a690b02002e2d2b1a440c0c50293527091a0f0c0c29322219221922192219221922192219221922192219221922191af50b221a7b101a2c352806a003302c362d372a2a6929312219221922191ad70b221a221a221a221a221a221a221a221a221a221a221a1ac20b221b7b13182d2d2214221422142214221422142214221422142214221422141a9c0b22157b10152c352806a003302c362d372a2a6929312219221922191a7e0b221a221a221a221a221a221a221a221a221a221a221a1a690b221b7b13182d2d2214221422142214221422142214221422142214221422141a430b22157b10152a352805a0030729352805a002013bf861022a362b382b362c382b38293629353ca0030b2a362936292216a06502013b03033c02172b38293629353ca0030b2a362936292218a06502013b6503043bf71c022d38293629353da003542f38293629353da003043b5002041aed0a103b5029362a372a220c1ae40a0c1af40a2a690b02002e2d2b1add0a0c5029352922132223222322232223222322232223222322232223222322231a930a22247b10242d38293629353da003542f38293629353da003043b5002041a8f0a103b5029362a372a220c1a860a0c1a9a0a2a690b02002e2d2b1a7f0a0c50293522152a2225222522252225222522252225222522252225222522251a350a22267b10262f38293629353da003543138293629353da003043b5002041a310a103b5029362a372a220e1a280a0c1a400a2a690b02002e2d2b1a210a0c50293522172a2227222722272227222722272227222722272227222722271ad70922287b1028333832382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b64038f220c220f299291035c29352a362c929103312c352d362c2b2226222622262226222622262226222622262226222622261a51090c50292c2506250626041e393b65021f3b222522251a79096b22233529929103033b020a2a680122253b3b2ce364656502272a3ba003033b021f3b222322231a53096b22213529929103033b020a2a680122233b3b2ce364656502213c221122112210220f6805221f3529929103033b020a2a680122213b3b2ce36465666565652706f7b8082a353fa0030729352805a002013bf833032a362a362b382938293629353ca0030b2a362936292215a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041a9508103b5029362a372a321a8d080c1ab1082a690b02002e2d2b1a86080c50293522112a2221222122212221222122212221222122212221222122211a3c0822227b10222c38293629353ca0030b2a362936292218a06502013b03043bf78e022e38293629353da003543038293629353da003043b5002041a1c08103b5029362a372a220d1a13080c1a3b082a690b02002e2d2b1a0c080c50293522152a2225222522252225222522252225222522252225222522251ac20722267b102631929191036b32293ba003033b025f29352a3633382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056402013b03043bf7b70122163533293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092217352968016402ed33293ba003033b022929352a362a38293629353ca0030b2a362936221d2aa06502013b03033c02082b250526041e2c3b27046403062215680102b233293ba003033b022929352a362a38293629353ca0030b2a362936221b2aa06502013b03033c02082b250526041e2c3b270464030622136801027733293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b270464030622116801023c33293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102013b299291032e2935293528053b2b2d3b68053c2a22112e22106805221f3529929103033b020a2a680122213b3b2ce3642705021f3b220e220e1af6056b221c3529929103033b020a2a6801221e3b3b2ce364656565652706f774052a352805a0030629353fa002013bf8b4022a362b382b362a38293629353ca0030b2a362936292215a06502013b03033c020b2c38293629353da0299166299103532d38293629353da003043b5002041a5105103b5029362a372a331a49050c1a79052a690b02002e2d2b1a42050c5029352922112221222122212221222122212221222122212221222122211af80422227b10222e929191036b2c293ba003033b025f29352a3630382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056402013b03043bf7b4012212352d293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092213352968016402ec2d293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b27046403062211680102b12d293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102762d293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d6801023b2d293ba003033b022929352a362a38293629353ca0030b2a36293622132aa06502013b03033c02082b250526041e2c3b270464030534680102013b299291032e2935293528053b2b2d3b68053c220d2b220c2f6805221b3529929103033b020a2a6801221d3b3b2ce3642705021d3b33331a37036b22183529929103033b020a2a6801221a3b3b2ce36465652706f7af022a353fa0030629353fa002013b03041a0c03103b503b502a352805a003a32a362b382938293629353ca0030b2a362936292214a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041a8102103b5029362a372a321a79020c1ab5022a690b02002e2d2b1a72020c5029352922102220222022202220222022202220222022202220222022201a280222217b10213b30301a81026b22153529929103033b020a2a680122173b3b2ce364652705f7ee0129352805a0f81e0129362a382938293629353ca0030b2a362936292214a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041ad601103b5029362a372a321ace010c1a12022a690b02002e2d2b1ac7010c50293522102a2220222022202220222022202220222022202220222022201a7d0122217b10212c38293629353ca0030b2a362936292217a06502013b03033b027d2e38293629353da003543038293629353da003043b5002041a5e01103b5029362a372a220d1a55010c1a9d012a690b02002e2d2b1a4e010c50293522142a2224222422242224222422242224222422242224222422241a040122257b10253b33220c1a68016b22193529929103033b020a2a6801221b3b3b2ce364656565270502c82a353da0030629353da002013b03472a362b372b362c372c2b221522152215221522152215221522152215221522152215faa80c502b2a221522152215221522152215221522152215221522152215fa8a22167b10162a353ca0030629353ca002013b03033b02602a353ea0030629353ea002013b03352a362b372a2a692c362d372a2a692c2a3232fa50221a221a221a221a221a221a221a221a221a221a221a221afa420c503b2706021c3b2b2bfa9e6b22103529929103033b020a2a680122123b3b2ce36465651f0e|@11179,1,@2093,@8044,@11176,@11180,@5064,@11199,@11207,@11209,@11178,@8025,@5868,@17044,@8023,@17045,@17046,@17047,@17048,@17049,@11210,@11210,@17050,@17051,@11211,@17052,@11211,@11212,@17053,@11178,@17054,@17055,@11178,@11178| 17029:D16,424|fb1622123529352213291aa7010c29352805a0034e29362a382938293629353da0033b2b38293629353da003043b5002041a8401103b5029362a372a311a7c010c1a7c012a690b02002e2d2b1a75010c5029352709250626051e503b02012d2704020129646429352806a0030b29362216352a2aa06502013b2b353fa003212b2216221422132213221322132213221322132213221322132213221f0c5002292b353ea003212b2216221422132213221322132213221322132213221322132213221f0c5002023b502903033b02d3221636293db7293ba09103203b22172217fae66b22153529929103033b020a2a680122173b3b2ce3646502a63b2d221a221922192219fac50c03203b22172217fabf6b22153529929103033b020a2a680122173b3b2ce364650277221836293fb7293ba091030f2219fa9afa9c22170c293ca06402013b03223b22192219fa8d6b22173529929103043b50020b2a680122193b3b2ce350505102023b50221a36293cb7293ba0910310fa66fa680c221c2a0c643b2a0c5102023b5022183529929103033b020a221d35293b3b2220e36427056527041f110000|@11182,1,@2094,@8044,@8025,@5868,@17030,@8023,@11183,@11184,@11189,@11190,@11192,@11196,@11181,@9569| 17030:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2095| 17031:D16,480|fb1c303ba0f8d2012f1ae0010c29353ea003112936291ad701323232321ad401337b080a29353da0032429362a373b2b333333331ab9010c03033c020d3b2a333333331aaa01347b080b65f7890129352805a0036429362a382938293629353da003422b38293629353da003043b5002041a8401103b5029362a372a311a7c010c1a7c012a690b02002e2d2b1a75010c5029353b2a22162216221622161a500122177b08172c1a4701220c220c220c220c1a5401220d7b080d29352806a0f8150129362a373136293ebb29920305293ba2020529942811a0030a1a2f012a1a2f010c020129299203043b5002041a2401103b502c3ebb29920305293ba2020529942811a0030a1a03012a1a03010c020129299203043b500203faf9103b502b2aa203032b0201293035303ebb29920305293ba2020529942811a00308face2afacf0c020129299203043b500203fac5103b50292da0910365323db7293ba09103223b22122212fab06b22103529929103043b50020b2a680122123b3b2ce35050510237333fb7293ba091220c3cb7293ba091fa8806323eba2d03033f02013b2a2ab8292eb828062e2b6a2e3b3b2210e35022153b3b2ce350260a5002023b50221135342aa0292e2215221522152215fa1f22167b08163b6402013c1f06000000|@11186,1,@2096,@8044,@11184,@11187,@8025,@5868,@17033,@8023,@11188,@4564,@4565,@4560,@11185,@5064| 17032:D4,40|fb0d309291031c30353136293232323232fa210c2b362a2a343434342210220c7b080c3b1f060000|@6193,1,@2097,@11187| 17033:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2098| 17034:D4,36|fb0c309291031930353136293232323232fa1d0c292c33333333220f347b080b3b1f0600|@6193,1,@2099,@11188| 17035:D3,4|fb023c42|@11191,1,@2100| 17036:D8,192|fb1d2b36293fb7293ba09103033d02ab2d36293db7293ba09103033c029c2f36293ebb29920305293ba2020529942811a00308fa972afa980c020129299203043b500203fa8e103236293cb7293ba091fa86062d3eba293fb8292db828062d2b6a2211352935221335293b3b2fe3502a353fa0033c2a3629fa620c299291032d29352a36293ba003152a3528053b2b2e3b6805220d3b3b2ce3503d65020c3f2c69220c3b3b2ce3503d646502013c650207303b3b2de3503d270e656542000000|@11194,1,@2101,@4564,@4565,@4560,@5064,@11193| 17037:D5,84|fb082b929103482b352c362a38293629353da00303fa49103b5029353ba00314293729353ca003072936293564020229366402052936293564030a2bfa260c2d2a696402062bfa1c307d07270402013b42000000|@11195,1,@2102,@8092,@11193| 17038:D4,8|fb03fa102c694200|@11197,1,@2103,@17039| 17039:D7,148|fb172936352806a003872936362a3637293cb7293ba09103033b02722b3529353fa003033b02662b3ebb29920305293ba2020529942811a00308fa642afa650c020129299203043b500203fa5b102d3fb7293ba0912f3db7293ba091fa4e062e3eba2d03033f02013b2a2ab82d03033d02013b2a2ab8293cb82806302b6a22113b3b2ce350303b3b2211e3270e646602013b4200|@11198,1,@2104,@4564,@4565,@4560,@5064| 17040:D10,524|fb232212352213362213352214362216360b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936221a360b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b515029362e034529033f3b220e299291031229362b3caa292b25042504511e113b6502012a653b220d299291031229362b3caa292b25042504511e113b6502012a652a2aa0916502013b02013b03243b221f221f1a67016b221c3529929103043b50020b2a6801221e3b3b2ce350503b65022a220d220c221e221e221e221e221e221e221e221e221e221e221e221e221e220f222e222e22171a26010c2f03432a03043b5002383429353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303faf6103b503b502935293b3b2212e35051221f02cb2a033d220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303faba103b503b502935293b3b2210e350222065028b220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303fa81103b503b502935220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303fa54103b503b5029352b2aa003043b5002192dfa450c3b2a3b6a2d3b3b2ce3503c2e692c3b3b2ce35026033e2e22136a2704270f1f11|@11201,1,@2105,@11202,@11203,@5689,@5689,@5689,@5689,@11200| 17041:D15,1220|fb2022149291f8d8032214352215362a352b3622179291f8ea022217352218362a352b362e3b3bef2b3b3bef2a2aa00354302da003033c0217303b3bef2d3b3befa0030b303f2e3f303b3befed02013b03033b022e303b3bef2d3b3bef2a2aa303032a020129333f313f2dee293ba003052c2ca30203293ba203051a520402013c27040214303b3bef2d3b3bef2a2aa203051a3b0402013c65293ba0034d302d221e221e221e221e221e221e221e221e221e221e221e221e222b0c50322f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1af1030c342a6964f71502293ba2f80901221003d5313b3bef293ba003051ad703024a28072ab1292808b1293cb2293fb4291ac703a503043b5002041ac103103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aa1033f2d3f2807ec5022103f2d280b34ec502b95502b2707293b3bef293ba003051a8b03024b292809b1292808b1293cb2293fb4291a6f03a503043b5002041a6903103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a4b033f2e2c2809ec502c95502c27083b221422142c6b22213529929103043b50020b2a680122233b3b2ce3505022252706022d32221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1ae2020c342a6964f70601220d03d52d3b3bef293ba003051ade02024a28072ab1292808b1293cb2293fb4291abe02a503043b5002041ab802103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aa8023f2d3f2807ec50220c3f2d280b34ec502b95502b2707293b3bef293ba003051a8a02024b292809b1292808b1293cb2293fb4291a6602a503043b5002041a6002103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a4a023f2e2c2809ec502c95502c27083b221422142c6b22213529929103043b50020b2a680122233b3b2ce3505022242706022d221f2f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1ad9010c302a6964270702d93203d22a3b3bef293ba003051add01024928072ab1292808b1293cb2293fb4291ab501a503043b5002041aaf01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aa7013f2d3f2807ec50323f2d280b34ec502b95502b2707293b3bef293ba003051a8a01024b292809b1292808b1293cb2293fb4291a5e01a503043b5002041a5801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a4a013f2e2c2809ec502c95502c27083b220d220d2c6b221a3529929103043b50020b2a6801221c3b3b2ce35050260602023b502218270402df2213929103d822133529352d03c9293b3bef293ba003051afd00024628072ab1292808b1293cb2293fb429facea503043b500203fac9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faca3f2d3f2807ec50313f2d280b34ec502b95502b2707293b3bef293ba00304faae0248292809b1292808b1293cb2293fb429fa7ba503043b500203fa76103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa713f2e2c2809ec502c95502c27083b34342c6b22183529929103043b50020b2a6801221a3b3b2ce35050260602023b5022156502013b1f130000|@11205,1,@2106,-1,@11203,@11206,16777215,@4054,@11204,@11206,@11204,@11206,@11204,@11206,@11204| 17042:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2107,@11200| 17043:D4,144|fb102c929103842c352d362d293ba003033b025f29352a362d382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b270564030b292efa220c2b2a69640207292efa172f7e066502013b43000000|@11208,1,@2108,@11207| 17044:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2109| 17045:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2110| 17046:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2111| 17047:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2112| 17048:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2113| 17049:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2114| 17050:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2115| 17051:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2116| 17052:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2117| 17053:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2118| 17054:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2119| 17055:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2120| 17056:D14,196|fb142c230d29299291031a29352a362a35fabda003052a68010207292503511e193b6502013b64293ba00346faa6299291031a29352a362a35fa95a003052a68010207292503511e193b6502013b64293ba00303fa82103b503b5029352935fa6fa003043b500203fa72103b50293765021529352935fa58a003043b500203fa5b103b502937643e3369322bfa520c3bfa520c331b10272b343bfa4c0c293b69fa4a2a69fa4a2a69fa4a2a692f2a69fa472a69322a693b3e3b3b2d6805270e1f05000000|@11217,1,@2121,@61,@5420,@5469,@4594,@9426,@9314,@9338,@5091,@9456,@5091,@5091| 17057:D4,16|fb06fa182d2b362e3168051f04000000|@11220,1,@2122,@17058| 17058:D21,384|fb1a2b353ca003cb2b362c372d382e392d383b3bef293ba003051a6f01024a28062ab1292808b1293cb2293fb4291a5f01a503043b5002041a5901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a39013f2d3f2806ec50220c383f2d4034ec502b95502b27073e2a692f31392f33371a23010c31381a2101a003033c021731383b3bef2805a0030c31383f1a0b013f2805ed02013b03051a030102031a02013e2a6931343631220d37faea0c29faf669faf72a692c2a69faf42a69302a69faf12a69332a693b3e3b3b2d6805271202ab2b362c372d382c383b3bef293ba00304fad3024628062ab1292808b1293cb2293fb429fa98a503043b500203fa93103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faa03f2d3f2806ec5034383f2d4034ec502b95502b27073e2a693bfa890c2f1be8032b33393b220c370c3bfa790c301be8032b220c363b220e370c3e3169293b69fa672a692c2a69fa642a69fa642a69fa642a69322a69fa612a69220d2a693b3e3b3b2d680527144200|@11222,1,@2123,@11223,16777215,@4054,@11224,@11218,@5670,@11230,@11231,@5091,@5091,@5091,@11223,@9314,@5091,@5091,@11221,@5091,@5091| 17059:D4,24|fb0c2c38293729352a362b3730343434fa12347b09080000|@11226,1,@2124,@11225| 17060:D16,408|fb1f3b1a9e010c2e1be8032b303b340c293b690b0200220e2a1a8c010c50293632350b02002c2a1a7e010c5029362e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b03033b02293b221469293b693e221769293b693b3b3b2e2d6805293b691a3f012a691a3e012a691a3d012a69270822131a3801a003033c021522133b3bef3ba0030b22133f1a23013f3bed02013b03033b02cf3b221569293b6922153b3bef293ba003051a0801024a3d2ab1292808b1293cb2293fb429fafaa503043b500203faf5103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2828e4502b2805282ae450221d3f2d280634ec502b95502b2707293b3bef293ba00304fabd024c293db1292808b1293cb2293fb429faa3a503043b500203fa9e103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ae4502c2a3cb12829e4502c95502c27083e2a69293b693b3b3b322d6805293b69fa612a69270a293ba003032a02052a2afa550c293ba00304220c0206220c2afa4a0c3b3e3b3b2d680527101f070000|@11228,1,@2125,@9314,@8111,@5091,@5663,@5091,@4062,@5613,16777215,@4054,@5611,@5091,@11229,@11227| 17061:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2126,@11229| 17062:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2127,@11227| 17063:D5,264|fb0a2b350a1f003e003e0045003e003e005b003e003e003e003e003e003e003e003e00630066003e009300c5003e003e003e00c8003e00d000d3003e00fd003e003e003e002b35280ba002b92b3629352a362afabf0c030629fabd2f7d063b6602a32b3729fab12d7d043c02982b38293c2a9291031f2a352b362a382c030629fa960c02013b2b2a2506250626041e1d3b27040201296564026b2b37293ba003033c0225293c2a9291031c2a352b362b03062afa630c02013b2a2a2505250526031e1b3b66020129656402393c02362b3629fa442d7d043c022b2b36293c2a9291031c2a352b362b03062afa2b0c02013b2a2a2505250526031e1b3b66020129656402013c420000|@11241,1,@2128,@11240,@11239| 17064:D6,132|fb102b352816a003082b3629fa822d7d042b352805a003082b3729fa732d7d042b35280ea003582b36293629352936293ba003033c0203299291033e2a3829fa530c29353da0032c293729fa470c29352805a0031b29382938293629353ca0030b2a36293629fa30a06502013b6602013b6502013b29916602013b270402013b42000000|@11242,1,@2129,@11240,@8044,@47| 17065:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa13220e7b0e030000|@11256,1,@2130,@11255| 17066:D9,184|fb2c220d35220e36220f37221038fab4221022106a0b03002d2afaac0c5029352a362b3722153caa342c2b3bfa9e3b221e221c221c2220fa970c22152306fa942a2e6a221723082218392219230d221a3a221b230b221c230c221d37221e38221f352220230a22213622222307fa69222422146a2d2c3131220f220e221331221432220d221322132217680e221122212b222b2221222e222922292229222d0c221b3b3b2ce350221c3b3b2214e3503d22122b6a271f1f0c|@11257,1,@2131,@17068,@9069,@11260,@11262,@17085,@17067| 17067:D5,40|fb093b06fa2e2a692b370c2a353b2d3623090c293ba003032a02072a2afa19317e07270442000000|@11294,1,@2150,@17086,@11293| 17068:D8,136|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa680247292825b1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c2825ec502c95502c27082d363c2f372e2dfa22347b07090000|@11259,1,@2132,@8997,@11258,16777215,@4054,@10900| 17069:D5,52|fb152b352c362d37fa3606fa37063d2b2b6a3b063b063b062a2c2b6a2968013b06296801220c3c32220e220e302f6807270d4200|@11261,1,@2133,-1,@10945| 17070:D70,2728|fb2834350a1f003e003e0044003e003e0079033e003e003e003e003e003e003e003e00eb047206d506e1074d083e003e003e00360a3e003e00520a3e008a0a3e003e008f0a1a6c0af7590a343629352a362b372c392c35280ea0f824012c3629352a362b372c382d39220e23092a3b3b2ce3221023062211230d2a2a691a380a2216221d326b1a330a2b220c2c1a300a0c2936293ba003033c020329929103492a3729353ea003092936292808a06402013b03082b3b1a0b0a0c021b2b380b02002c1a030a2b1a030a0c5029352a36291afd090c2b2707220d3b3b2fe350220c3b3b2ce350296502942a35291ae509a003033c0215293b3bef280ba0030b293f1ad1093f280bed02013b03043b500269220d3b3bef293ba003051abb09024c292815b1292808b1293cb2293fb4291aab09a503043b5002041aa509103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f34ec503f31b11a7a093f2e2c2815ec502c95502c2708221b3c2223220f2d1a6e090c50511a380964270e0210333c22122c1a5f091a58090c501a23092c2211221122112211221122112211221122111a45090c2a1a44090c29353da003db29362a372a2d1a38090c29929103c629352211221122121a2b091a2c090c2a2a0c642212230d29299291031b29352a362a351a1809a003052a68010207292503511e1a3b6502013b64293ba0034b1a0009299291031b29352a362a351aee08a003052a68010207292503511e1a3b6502013b64293ba003041ada08103b503b50293529351ac608a003043b5002041ac808103b502937650217293529351aad08a003043b5002041aaf08103b50293764221b2a1aa7080c2968013c2a3022106b2218382219230c2a3b3b3ce3502b2a0c50260a02023b502a6602e61a8308061b0f273eba28062b2b6a3d2e2b6a2d2a1a4f080c29929103c529352213221322141a42081a43080c2a2a0c642214230d29299291031b29352a362a351a2f08a003052a68010207292503511e1a3b6502013b64293ba0034b1a1708299291031b29352a362a351a0508a003052a68010207292503511e1a3b6502013b64293ba003041af107103b503b50293529351add07a003043b5002041adf07103b502937650217293529351ac407a003043b5002041ac607103b50293764221d2a1abe070c2968013c2a3022126b221a38221b230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce350292709f724073436220c37220d382a220e220e220e220e220e220e220e220e220e1a4e070c2c1a7507342212346b341a70070c2a2a1a42070c299291f8310129351a62072f2e220f220f1a5d070c3b1a5c070c2d1b10272b22103b1a54070c293b691a51072a691a50072a693b3b3b3b2d68052213221322141a02071a03070c312a0c64293b691a34072a691a33072a693b3b3b3b2d6805293b691a28072a69302a691a24072a69220f2a691a1f072a691a1e072a693b3e3c3b2d68052220230d29299291031b29352a362a351ab606a003052a68010207292503511e1a3b6502013b64293ba0034b1a9e06299291031b29352a362a351a8c06a003052a68010207292503511e1a3b6502013b64293ba003041a7806103b503b50293529351a6406a003043b5002041a6606103b502937650217293529351a4b06a003043b5002041a4d06103b5029376422292a1a45060c2968013c2a3022206b2226382227230c2a3b3b3ce3502b2a0c50261d02023b502a2706f7b205343629352a362b372c382d390b0200302a1a4a060c502935221003051a43060255291a4106a003033c0213293b3bef3ba0030a293f1a2e063f3bed02013b031531220e23060c293ba003051a140602022935640221220d2306220e230d2a2a691a07062213221a346b1a02062b220e2c1a5b050c2704220e23092f3b3b2ce32b36293ba003033c020329929103982216031422133c221b220c1ad6051a53050c501a1e05027e343b3b2fe32d3629929103042935021e2e38291a42050c29353da0030829362968016402013b293ba0912991270429033a2f3729353ea003092936292808a06402013b0308303b1ae2040c021b30380b02002c1a7a052b1ada040c5029352a36291ad4040c2b270764021222163c221e220f1a5f051ad4040c501a9f046602553b3369221423103b2a0c3d2a69293b692d2a691ae60406221e3eba28062b2b6a22152a2e6a66221c0c2213221b22121a26050c5022132218221c22133b1a1c050c5022132a6922200c5022123b3b2ce35029382707343b3b2ce35029270ff72b043436220c37220d38291a670433333333221322132213221322131ae2040c1ae2040c291ae1040c3b2a2f6a2e030329020629063c2a69643e2d2b6a3003032902161a5704061b0f273eba28062b2b6a2b3b3b2fe32a2704303b3b2ce350292709f7c8033436220c37220d382b220e220e3c220e220e220e220e220e220e1af3030c2b220f220f220f220f220f220f220f220f220f1adc030c2a2a1ade030c29929103c52935220c220c220d1ad1031ad2030c2a2a0c64220d230d29299291031b29352a362a351abe03a003052a68010207292503511e1a3b6502013b64293ba0034b1aa603299291031b29352a362a351a9403a003052a68010207292503511e1a3b6502013b64293ba003041a8003103b503b50293529351a6c03a003043b5002041a6e03103b502937650217293529351a5303a003043b5002041a5503103b5029376422162a1a4d030c2968013c2a30220d6b2213382214230c2a3b3b3ce3502b2a0c270a02013b2c2707f7bc023436220c37220d381a91031af602220f220f220f220f220f220f220f220f220f680b291a7a031a7b036a1a7b031a7c031a7d032e221468052d2a2c220e220e1a72030c29353ba003051a80020212293b6928052a1a61031a62031a6303680564303b3b2ce350292708f750023436220c38220d39293c1a63020c291a8a020c29353da003dd29362a372a1a37031a7c020c29929103c62935220e220e220f1a6f021a70020c2a2a0c64220f230d29299291031b29352a362a351a5c02a003052a68010207292503511e1a3b6502013b64293ba0034b1a4402299291031b29352a362a351a3202a003052a68010207292503511e1a3b6502013b64293ba003041a1e02103b503b50293529351a0a02a003043b5002041a0c02103b502937650217293529351af101a003043b5002041af301103b5029376422182a1aeb010c2968013c2a3022106b2215382216230c2a3b3b3ce3502b2a0c50260a02023b502a6602e81ac701061b0f273eba28062b2b6a3d1a50022b6a2d2a1a91010c29929103c529352210221022111a84011a85010c2a2a0c642211230d29299291031b29352a362a351a7101a003052a68010207292503511e1a3b6502013b64293ba0034b1a5901299291031b29352a362a351a4701a003052a68010207292503511e1a3b6502013b64293ba003041a3301103b503b50293529351a1f01a003043b5002041a2101103b502937650217293529351a0601a003043b5002041a0801103b50293764221a2a1a00010c2968013c2a3022126b2217382218230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce3502927060267343629220c220c220c220c220c220c220c220c220cfa98220d7b0c0d3436220c372afa8b32323232221222122212221222121a3e010c293c1a3c010c291a3b010c3b2a3c6a3e2c2b6a2e3b3b2ce35029270702131a2801020efa7c061b0f273eba28062b2b6a651f0a0000|@11264,1,@2134,@4517,@17071,@11091,@10904,@10924,@11265,@8023,@10925,@9107,@11266,16777215,@4054,@10900,@11267,@11262,@8044,@11175,@11218,@11219,@61,@5420,@5469,@4594,@9426,@5064,@17073,@10955,@11268,@11216,@9314,@9338,@5091,@11269,@11234,@11235,@5091,@5091,@5091,@11271,@8111,@9103,@4062,@17075,@11091,@11273,@11274,@11275,@8998,@11023,@11276,@7941,@7945,@17078,@9480,@11279,@11282,@11283,@4137,@11284,@5114,@5112,@4653,@7356,@11263,@7275,@7277,@7315| 17071:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2135,@10900| 17072:D3,4|fb023b42|@10938,1,@2136| 17073:D5,36|fb09293823082a38230d2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2137,@17074,@10956| 17074:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2138,@10900| 17075:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2139,@10900| 17076:D3,4|fb023b42|@10938,1,@2140| 17077:D5,92|fb15220c9291034e220c35220d362a352b362c3829220c220c220c220c220c2215221522152215221a0c2b3b3b2ce3502cfa350c292b692f2214221422142214221422142214221422142214fa1e0c2a2a69270902013b1f0b000000|@11277,1,@2141,@7937,@11276| 17078:D3,36|fb0d2b2a372b382c392d3a2e23062f230730230831230932230a3336220c7b0c03000000|@11278,1,@2142| 17079:D4,8|fb03fa102c694200|@11280,1,@2143,@17080| 17080:D4,20|fb082b352c362d372c36352d3636fa10307b0703|@11281,1,@2144,@11216| 17081:D5,92|fb1c2f929103432f353036293ba003072f352b2a2f7d0a2f353036313733353436220c37220d38220e3932310c293c3434221232221733220f221622102210220d220ffa23221b7b1012fa20061b0f273eba28062b2b6a651f050000|@11286,1,@2145,@11285,@5064| 17082:D35,1040|fb40220d9291f80204220d35220e362a220f0c22122a1a03040c299291f8c60329352210230d29299291031b29352a362a351aeb03a003052a68010207292503511e1a3b6502013b64293ba0034b1ad303299291031b29352a362a351ac103a003052a68010207292503511e1a3b6502013b64293ba003041aad03103b503b50293529351a9903a003043b5002041a9b03103b502937650217293529351a8003a003043b5002041a8203103b5029376422163ca0036a22123b3bef293ba003051a6d030257293eb1292808b1293cb2293fb4291a5e03a503043b5002041a5803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a3f2d3f34ec503f31b12c2a2820e4502c2a3cb12831e4502c2a3db1283ae4502c95502c270864f72c0122123b3bef293ba003051a0f03025f293fb1292808b1293cb2293fb4291af402a503043b5002041aee02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a3f2d3f34ec503f31b12c2a2873e4502c2a3cb12820e4502c2a3db12831e4502c2a3eb1282de4502c95502c270822183c1aac020c2a3b3bef2a3b3bef2a3ba003032b0251293ba003032c02492a2ab1292808b1293cb2293fb4291a7602a503043b5002041a7002103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708293b3bef293ba003051a42020246293cb1292808b1293cb2293fb4291a1f02a503043b5002041a1902103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a283ae4502c95502c270827073e2a69221322191af2010c2922142e22151aec010c3b3b3b3b2d68053b1ae4010c221d1b10272b22173b1adb010c293b691ad8012a691ad7012a691ad6012a692f2a691ad2012a69342a693b3e3b3b2d68052222221e69221d0c22263caa293c1a91010c291ab401691ab4012a6922262a6927041aad010c29221922186a642a0c642223221f22201a9d011a9e010c22142a0c643e221e692a3b691a92012a691a91012a693b3b3b3b2d6805293b691a86012a69312a691a82012a69342a691a7e012a69332a693b3e3c3b2d68052231230d29299291031a29352a362a35faf4a003052a68010207292503511e193b6502013b64293ba00346fadd299291031a29352a362a35facca003052a68010207292503511e193b6502013b64293ba00303fab9103b503b5029352935faa6a003043b500203faa9103b50293765021529352935fa8fa003043b500203fa92103b50293764222c2afaeb0c2968013c2a3022306b2237382238230c2a3b3b3ce3502b2a0c50223c3caaface2a222f223e223e223e223e223e223e223e223e223e223e223efab7223f7b103f22123caa22142a2e22142214221422142214221422142214221422142214fa9222157b1015220f1f0e00|@11288,1,@2146,@11175,@61,@5420,@5469,@4594,@11289,16777215,@4054,@11290,@4569,@4151,@5743,@11291,@9314,@9338,@5091,@9456,@5091,@5091,@11287,@4125,@4052,@11218,@11219,@11234,@11235,@5091,@5091,@5091,@9426,@4517,@11285| 17083:D9,184|fb112c3ba40304fabb02ab2e929103a52e352f36293ba0030b2a2f692e0c293b6964028e2a2f692e0c30fa9ca003033c0212303b3bef3ca00309303ffa8a3f3ced02013b03033c023b30fa80a003033c0212303b3bef3ca00309303ffa6e3f3ced02013b03033c021b30fa64a003033c0212303b3bef3ba00309303ffa523f3bed02013b913c2a3b6a3e3369293b692b2a692e2a693b3b3b3b2d6805220d3cab3222102b2210fa2c0cfa2d2a692c2a69270b6502013b1f04|@11292,1,@2147,@9345,@4137,@4152,@4062,@11291,@5091| 17084:D4,68|fb10220c92910336220c35220d362a3232323232221222122212221222170c2a220f220f220f220f220f220f220f220f220f220ffa1a0c2a2a69270402013b1f0b000000|@4648,1,@2148,@11263| 17085:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2149| 17086:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2151| 17087:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2152,@11293| 17088:D4,8|fb03fa102c694200|@11296,1,@2153,@17089| 17089:D4,20|fb082b352c362d372c36352d3636fa10307b0703|@11298,1,@2154,@11297| 17090:D17,236|fb1f2c230d29299291031a29352a362a35fae5a003052a68010207292503511e193b6502013b64293ba00346face299291031a29352a362a35fabda003052a68010207292503511e193b6502013b64293ba00303faaa103b503b5029352935fa97a003043b500203fa9a103b50293765021529352935fa80a003043b500203fa83103b502937643e3369323533362c3cab2a2afa730c2e3cab2d2afa6b0c293b69fa692a69fa692a69fa692a692f2a693b3b3b3b2d68053bfa5e0c22151b10272b22163bfa560c293b69fa542a69fa542a69fa542a692f2a69fa512a6922142a693b3e3b3b2d680527191f05|@11299,1,@2155,@61,@5420,@5469,@4594,@9426,@5091,@6457,@5091,@9314,@9338,@5091,@9456,@5091,@5091| 17091:D5,36|fb09293823082a38230d2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2156,@17092,@10956| 17092:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2157,@10900| 17093:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2158,@10900| 17094:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2159,@10900| 17095:D5,40|fb0a2f9291031b2f3530362a31313131fa220c2a32323232fa1e0c2a2a69270402013b1f05000000|@4648,1,@2160,@11310,@11309| 17096:D6,68|fb0f2f35303631373238fa4432346a2afa422bfa430c2c353ba003162c36333ba003032d0209333529363f2c2b6a656402012c2f2f2b2d220d3b3b680727071f05000000|@11312,1,@2161,@17097,@11311,@8030| 17097:D3,92|fb0a2b38293629353ca0030a2b373629353ca06402013b03102a3629362d373629362b2aa0270402272a3629353ba0030a2c373629353ba06402013b03102b3629382e373629382b2aa0270402013b6403042b3602012d6542000000|@11313,1,@2162| 17098:D3,4|fb022b42|@11314,1,@2163| 17099:D7,100|fb0f2d3b3bef293ba00304fa63024729282bb1292808b1293cb2293fb429fa54a503043b500203fa4f10292841bd2a3cb22a2a3b3bf02b3b3b32f050220c3f2d3f34ec503f31b1fa273f2e2c282bec502c95502c27082b363c2d37302dfa1d327b070700|@11315,1,@2164,@9596,16777215,@4054,@10900| 17100:D18,444|fb2a2f35303631373239333a2b9291031c2b35291ab101220c220c220f6b220c1aa9010c3d2a1aa7016a6502031aa0013b2c693423103b2a0c3d2a69293b692d2a693035280ea0f81c01303629352a362b372c382d39221723062218230d2a2a691a7001221a221a306b1a6b012b332c1a69010c29382a36293ba003043b5002b7343b3bef293ba003051a530102453c2ab1292808b1293cb2293fb4291a4401a503043b5002041a3e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2828e45022133f2d280534ec502b95502b2707293b3bef293ba003051a0c010248292816b1292808b1293cb2293fb429faf1a503043b500203faec103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1facf3f2e2c2816ec502c95502c270822213c2222220f2dfabc0c502604333b3b2ee350323b3b2de350221e2309313b3b2ce3503b06faa2063d2b2b6a221c3b2b3122153b3b68072711022530352808a003043b500203fa85103b503b06fa7a063d2b2b6a220e3b2b220c303b3b680766343b3b2ce350220c336922100c50220c221234fa5c0c50220c22112213220c3cfa530c50220c2a6922133722107d140000|@11318,1,@2165,@17101,@10955,@7468,@17103,@11098,@10904,@4133,16777215,@4054,@11319,@10900,@10945,@11317,@8998,@11023| 17101:D5,36|fb09293823082a38230d2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2166,@17102,@10956| 17102:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2167,@10900| 17103:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2168,@10900| 17104:D15,372|fb172b230d29299291031b29352a362a351a6c01a003052a68010207292503511e1a3b6502013b64293ba003471a5401299291031b29352a362a351a4201a003052a68010207292503511e1a3b6502013b64293ba003041a2e01103b50293529351a1c01a003043b5002041a1e01102937650215293529351a0501a003043b5002041a070110293764293da003792f1afe000c2929352806a003033c025e29352805a0034829362a382938293629353da003352b38293629353da003043b500203fad11029362a372a31facc0cfacd2a690b02002e2d2bfac70c5029352709250526041e4f3b02013b2704020f29353ea003082936293ba06402013b6403033b0202faa0640269293ca003632ffa810c2929352805a0034829362a382938293629353da003352b38293629353da003043b500203fa5e1029362a372a31fa590cfa662a690b02002e2d2bfa540c5029352709250526041e453b02013b2704020429353da0640304fa4302013b6402013b66430000|@11324,1,@2169,@69,@5420,@5469,@4594,@8044,@8025,@5868,@17105,@8023,@11325,@17106,@11323| 17105:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2170| 17106:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2171| 17107:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa13220e7b0e030000|@11256,1,@2172,@11255| 17108:D13,272|fb21343caa1a14012a692210350c1a0f012b220e6a2210350c1a0801220d220d6a0b03002d2a1aff000c5029352a362b37221a299291031a29352a362a2218220f221931fae60c50292503511e193b6502013b64221b299291033129352a362a221e221e221b2212221b221f221e220c220f221f221f221f221f221f222dfab00c50292503511e303b6502013b64221c299291037529352a362a37293529352a382b392c23062a299291031829352a362a353ba003042a360207292503511e173b650202fa6e64fa6f222022226a2d22183c22242e2e2225fa620c502b3ba00303fa5d103b503b502b35293b3b3be3502f31692224370c50313b3b33e35032250c260b1e733b270b02013b64270d1f0e|@11331,1,@2173,@17109,@17110,@17112,@9069,@11336,@11342,@8997,@17131,@11330,@5689| 17109:D6,88|fb142b3629352a3628062b2b6a65fa540c29352806a003043b500203fa4a1029362a37293fb7293ba0912b3cb7293ba091fa390632363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270f420000|@11332,1,@2174,@8044,@8035,@5064| 17110:D7,112|fb162b352c362a2c37230c0c293ba003532a352b3628062b2b6a65fa5f0c29352806a003043b500203fa551029362a37293fb7293ba0912b3cb7293ba091fa440634363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270e02092935292cfa1e317e07664200|@11332,1,@2175,@8044,@8035,@5064,@11333| 17111:D8,188|fb122c352d3628062b2b6a65faba0c29352806a003043b500203fab01029362a372e352f3628062b2b6a65fa9b0c29352806a003043b500203fa911029362a372c3ebb29920305293ba2020529942811a00308fa7b2afa7c0c020129299203043b500203fa72102b3ebb29920305293ba2020529942811a00308fa542afa550c020129299203043b500203fa4b102b2aa60313220c35220d3628062b2b6a343b3b2ce3660211220d35220e3628062b2b6a313b3b2ce366270a430000|@11334,1,@2176,@8044,@8035,@4564,@4565,@4560| 17112:D8,136|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa68024729282bb1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c282bec502c95502c27082d363c2f372e2dfa22347b07090000|@11335,1,@2177,@8997,@9596,16777215,@4054,@10900| 17113:D11,204|fb282f3629929103043b500203fac9103b50293529352a37333734392c3629352a373b2a69220f23103b2a0c3d2a69293b692d2a69faa50622143eba28062b2b6afa9d06fa9e063d2b2b6a3b063b063b062a2c2b6a2968013b0629680122143d32220d2211302f6807221a353b2a299291031229362b3caa292b25042504511e113b6502012a6522193b3b2ce32a3ba0030e22253c2225221ffa4dfa4f0c02013b22192227221ffa470c5022192225222822203bfa3e0c50221c3b3b30e35022192e69222422247d28000000|@11338,1,@2178,@11339,@5064,-1,@10945,@11337,@10900,@8998,@11023| 17114:D27,520|fb31221137293522133522143622153822163a1afe01061b0f273eba28062b2b6a2e299291033729352a362a221d221d220d221e221e221e221e221e2212221f221f221f221f221f221f221f221722151ac5010c50292503511e375102023b505034299291034f29352a362a372935293a293ba003041aa301103b503b502935293529352b372211352b2a1a92010c2b35293ba003032a02062a2a1a86010c2d3b3b2ce3502f3b3b3be35034250e260d1e4e260d02023b505030382a2a1a68010c299291f83c012935221d3b69280c2a221f221f220c68051a51012a30221f221e1a4c010c220d351a2901061a4501061a4501062c2b2d22112d6805280e2a692213381a36012b2b222722261a21010c2225222422251a27011a28010c220c2a0c64293b691a20012a691a1f012a693b3b3b3b2d6805293b691a14012a69302a691a10012a6922112a691a0b012a691a0a012a693b3e3c3b2d68052232230d29299291031a29352a362a35faf3a003052a68010207292503511e193b6502013b64293ba00346fadc299291031a29352a362a35facba003052a68010207292503511e193b6502013b64293ba00303fab8103b503b5029352935faa5a003043b500203faa8103b50293765021529352935fa8ea003043b500203fa91103b5029376422192afa8a0c2968013c2a3022276b2238382239230c2a3b3b3ce3502b2a222f7d3e3b270b1f10|@11344,1,@2179,@5064,@11345,@5689,@11362,@11363,@11175,@11243,@11216,@9103,@11364,@11366,@11218,@11219,@11234,@11235,@5091,@5091,@5091,@11343,@61,@5420,@5469,@4594,@9426| 17115:D40,964|fb572214352215362216372b352c362d38221a3b693b061ab603061ab603061ab203062a2e2d34302e6806293b69280c2a22222222220e680532362220382a3b3b2ce31a920322222e6a0b03002d2a1a8a030c5029352a362b3722283caa2216222b222a222a222a302f1a73030c299291032329352a36293ba003032a02142b3c1a60030c291a5f030c3b2a3c6a3e2c2b6a666502031a3b0322273b3b2ce3222a23061a46032a222a316b222c2308222d39222e230d222f3a2230230b2237362237362233230c1a26032a2c2e6b2235372236382237352238230a223936223a23071a0f03223c2239221a6b2d2c313122122211221631221732220d22162213221a680e221622352b223122322245223d223d223d22410c222b9291f85801222b35291ad2022244224122436b22441aca020c2b2a1ac8020c299291f8320129351ac00222342f224822471aba020c3b1ab9020c2d1b10272b22483b1ab1020c293b691aae022a691aad022a693b3b3b3b2d6805224c224b224c1a9f021aa0020c312a0c64293b691a99022a691a98022a693b3b3b3b2d6805293b691a8d022a69302a691a89022a69220f2a691a84022a691a83022a693b3e3c3b2d68052259230d29299291031b29352a362a351a6b02a003052a68010207292503511e1a3b6502013b64293ba0034b1a5302299291031b29352a362a351a4102a003052a68010207292503511e1a3b6502013b64293ba003041a2d02103b503b50293529351a1902a003043b5002041a1b02103b502937650217293529351a0002a003043b5002041a0202103b50293764223e2a1afa010c2968013c2a30224e6b225f382260230c2a3b3b3ce3502b2a0c50261d02023b502a6602012922353b3b2ce322182b1acc010c2922371a75010c299291f82b0129351abd0122292d224922481a67010c3b1a66010c223a1b10272b22493b1a5d010c293b691a9e012a691a9d012a693b3b3b3b2d6805224d224c224d1a4b011a4c010c312a0c64293b691a45012a691a44012a693b3b3b3b2d6805293b691a39012a69302a691a35012a69220f2a691a30012a691a57012a693b3e3c3b2d6805225a230d29299291031b29352a362a351a1701a003052a68010207292503511e1a3b6502013b64293ba003471aff00299291031a29352a362a35faeea003052a68010207292503511e193b6502013b64293ba00303fadb103b503b5029352935fac8a003043b500203facb103b50293765021529352935fab1a003043b500203fab4103b50293764223f2afaad0c2968013c2a30224f6b2260382261230c2a3b3b3ce3502b2a0c271d02013b3b27361f1300|@11347,1,@2180,@9103,@4517,@17116,@9069,@11350,@7275,@7277,@17118,@17119,@17120,@17125,@10955,@11175,@11354,@11216,@9314,@9338,@5091,@11269,@11218,@11219,@11234,@11235,@5091,@5091,@5091,@11355,@61,@5420,@5469,@4594,@9426,@11357,@11358,@5091,@11359,@11346| 17116:D8,136|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa680247292827b1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c2827ec502c95502c27082d363c2f372e2dfa22347b07090000|@11349,1,@2181,@8997,@11348,16777215,@4054,@10900| 17117:D6,52|fb0e3192910327313532362a2f2f3bfa2f3b220f220f220f220ffa280c2a343434343434fa220c2a2a69270402013b1f07000000|@4648,1,@2182,@11260,@11262,@11350| 17118:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2183| 17119:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2184| 17120:D7,64|fb0d3b06fa462a692b380c2a353b06fa3f2a692e370c2a353b303623090c293ba003032a02052a2afa2a0c293ba003032e02082e2afa21220c7e0b2708420000|@11352,1,@2185,@17121,@17122,@11353,@11351| 17121:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2186| 17122:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2187| 17123:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2188,@11353| 17124:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2189,@11351| 17125:D5,36|fb09293823082a38230d2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2190,@17126,@10956| 17126:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2191,@10900| 17127:D4,28|fb072c929103102c352d36292efa190c3d2c2b6a6602012b43000000|@6193,1,@2192,@11357| 17128:D4,28|fb072c929103132c352d362a2e692a2ffa160c2a2a69270402013b43|@4648,1,@2193,@11362| 17129:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2194,@11363| 17130:D3,4|fb023b42|@11365,1,@2195| 17131:D8,140|fb082937230d29299291031a29352a362a35fa84a003052a68010207292503511e193b6502013b64293ba00342fa6d299291031a29352a362a35fa5ca003052a68010207292503511e193b6502013b64293ba00303fa49103b5029352935fa38a003043b500203fa3b10293765021329352935fa23a003043b500203fa26102937642c362afa21307e060000|@11368,1,@2196,@61,@5420,@5469,@4594,@9426| 17132:D8,204|fb1d2e230d29299291031a29352a362a35fac5a003052a68010207292503511e193b6502013b64293ba00346faae299291031a29352a362a35fa9da003052a68010207292503511e193b6502013b64293ba00303fa8a103b503b5029352935fa77a003043b500203fa7a103b50293765021529352935fa60a003043b500203fa63103b502937643c33690b02002c22102b22112210220c362215221022122214220e22123722133822143922153a22162306221723072218230822192309221a230afa240c503b27071f0700|@11370,1,@2197,@67,@5420,@5469,@4594,@11369| 17133:D22,1212|fb2f22153522163622161abb040c29353ea0033b2936291ab20422182218221822182218221822182218221822182218221822182218221822182218222c1a8f040c22182a35452a36466464f76a0429353da0036729362a370b0200221d2d2b221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d1a47040c5029352a362a2a6929312220222022202220222022202220222022202220222022202220222022202220222022201a150422217b162129352805a003e729362a382938293629353da0039f2b38293629353da003043b5002041af203103b5029362a372a311aea030c1aea032a690b02002e2d2b1ae3030c5029350b020022292d2b222922292229222922292229222922292229222922292229222922292229222922291a9f030c5029350b020022142a1a9203222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d22171a83030c502935222c2a45221846271202352c1a5803221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b222f1a4d030c221b2a35452a3646642704f70f0329352806a0f8fc0229362a37293ebb29920305293ba2020529942811a0030a1a20032a1a20030c020129299203043b5002041a1503103b5029221aa803422b3ebb29920305293ba2020529942811a0030a1aee022a1aee020c020129299203043b5002041ae302103b50291b0f27a091030a2e3529353fa0916402013b6502013b03962e91290306221a3cab02031b0f272d3db7293ba09103092b03033202013b02013b031a1aa5021aa602221d221d221d221d221d221d1a9b020c503b0201322f3fb7293ba0912e030a313db7293ba0916402013b323cb7293ba0911a7a0206313eba2e03033f02013b2a2ab82f03033d02013b2a2ab82930b82806302b6a221435313b3b2ce35022153b3b2de350220e22186927120202221c2d3522143ca0f8af0129353fa0f8880129362214352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092215352968016402ed2a293ba003033b022929352a362a38293629353ca0030b2a362936221b2aa06502013b03033c02082b250526041e2c3b27046403062213680102b22a293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b27046403062211680102772a293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f6801023c2a293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d680102013b293ba00303fac6103b503b502935293528053b2b2d3b6805343b3b2ce3502606021e29353ea00316faa7faa9221c221c221c221c221c221cfa8b0c5002023b5002023b502e352b2a221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221ffa2322207b1620221822172a35452a364664661f14|@11372,1,@2198,@8044,@11369,@11373,@8025,@5868,@17135,@8023,@11374,@11375,@4564,@4565,@4560,@7928,@11376,@11377,@5064,@11379,@7928,@11371| 17134:D4,116|fb1d221592910369221535221636292217221722172217221722172217221722172217221722172217221722172217221722172217fa490c2b360b02002d2d2b221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d222f0c5029352a362a2a69270902012b1f14|@6193,1,@2199,@11373| 17135:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2200| 17136:D4,124|fb1f2216929103692216352217360b02002c2a221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221bfa4d0c5029352a362a2a692931221f221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e2230221e7b161f22152c453c461f15000000|@6193,1,@2201,@11374| 17137:D4,116|fb1c221592910367221535221636292217221722172217221722172217221722172217221722172217221722172217221722172217fa490c0b02002c2f2b221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c222e0c5029352a362a2a69270802012b1f140000|@6193,1,@2202,@11375| 17138:D10,212|fb173bfadb0c31230d29299291031a29352a362a35facda003052a68010207292503511e193b6502013b64293ba00346fab6299291031a29352a362a35faa5a003052a68010207292503511e193b6502013b64293ba00303fa92103b503b5029352935fa7fa003043b500203fa82103b50293765021529352935fa68a003043b500203fa6b103b502937643e220e69332b2f220c3b22100c3e220f69293b69fa532a692c2a69fa502a692f2a693b3e3b3b2d68053b22110c2968013c2a2d22146b2217382218230c2a3b3b3ce3502b2a22157d1c|@11378,1,@2203,@9314,@61,@5420,@5469,@4594,@5091,@5091| 17139:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa13220e7b0e030000|@11256,1,@2204,@11255| 17140:D4,92|fb16220e92910351220e35220f362a352b362c3829312213221322132213221322132213221322132213221e0c2b3b3b2ce3502c2a692e221522152215221522152215221522152215221522152215fa170c2a2a69270802013b1f0d|@4648,1,@2205,@11383| 17141:D3,40|fb0f2b2a372b382c392d3a2e23062f230730230831230932230a33230b34230c220c36220e7b0e03|@11384,1,@2206| 17142:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2207| 17143:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2208| 17144:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2209| 17145:D5,40|fb093b06fa2e2a692b370c2a353b2d3623090c293ba003032a02072a2afa19317e07270442000000|@11386,1,@2210,@17146,@11385| 17146:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2211| 17147:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2212,@11385| 17148:D3,4|fb023b42|@11386,1,@2213| 17149:D3,32|fb082b362a38352a2a692c383b3b2ce3502e2d370c502e2d36372f7d06000000|@11388,1,@2214| 17150:D3,16|fb042b2a370c502b2a36382c80000000|@11388,1,@2215| 17151:D3,16|fb042b2a370c502b2a36230a2c800000|@11388,1,@2216| 17152:D7,100|fb112e929103582e352f362a352b362c3732230dfa5a33332d6bfa582b2f2cfa570c2d3b3b2ce32a3ba003033b02092a35292f6929680165293ba0030e31220f220f220ffa3622107b0610293532221022102210fa260c2a2a6965270a02013b1f040000|@6232,1,@2217,@17153,@10808,@10907,@11389| 17153:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2218,@10900| 17154:D10,220|fb1730353137323829299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b0315293529363e2a693c220e69293b692b2a69270502073c3469293b6964fa9033220c220f2d6805fa8a343422102e6805fa85220c3422112f6805292c2c6a313b3bef293ba00304fa720245293cb1292808b1293cb2293fb429fa64a503043b500203fa5f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022103f2d3f34ec503f31b12c2a282ee4502c95502c2708323533392a2e2b3c2f2e3bfa2a0c3b270e1f06|@11391,1,@2219,@17156,@17158,@17155,@4139,16777215,@4054,@10961| 17155:D5,32|fb082b352c36292c382d39fa1f0c2c372c2bfa1c0c502b2a692d36372f7d0600|@11393,1,@2226,@10913,@4622| 17156:D5,40|fb0b2b352c3629352a36292e382f39fa230c2b2a692f372f2bfa1d0c502e2a69303638327d090000|@11393,1,@2220,@11392,@4622| 17157:D5,32|fb082d929103172d352e362a2f2ffa1c0c2a3030fa1a0c2a2a69270402013b44|@4648,1,@2221,@10913,@11392| 17158:D5,32|fb082b352c36292c382d39fa1f0c2c372c2bfa1c0c502b2a692d36230a2f7d06|@11393,1,@2222,@11394,@4622| 17159:D5,84|fb0d2d352e362f3730382b353ca0031a2b363c2a692b3ba00303310205312cfa3f0c2f2b2f2c6b6602252b353ba0031e2b3631363f2b2b6a2c3ba00303320205322dfa200c302b302c6b27040201312704440000|@11396,1,@2223,@11397,@11395| 17160:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2224,@11397| 17161:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2225,@11395| 17162:D3,8|fb032c2c69440000|@11399,1,@2227| 17163:D3,8|fb032c2c69440000|@11399,1,@2228| 17164:D3,8|fb032c2c69440000|@11399,1,@2229| 17165:D4,80|fb12220e92910342220e35220f362a2e2210221022102210221022102210221022102210221b0c2a221122112211221122112211221122112211221122112211fa1a0c2a2a69270402013b1f0d000000|@4648,1,@2230,@11407| 17166:D8,136|fb112b3729299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa68024729282bb1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c282bec502c95502c27082d363c2f372e2dfa22347b07090000|@11315,1,@2231,@8997,@9596,16777215,@4054,@10900| 17167:D7,56|fb0a2e9291032c2e352f362a372992910311293529fa2d3232220c6b32fa290c640202fa272b323232fa250c2a2a69270502013b1f040000|@4648,1,@2232,@17168,@10955,@5064,@11408| 17168:D5,36|fb09293823082a38230d2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2233,@17169,@10956| 17169:D4,16|fb0829363c2b372c382ffa10307b0703|@10901,1,@2234,@10900| 17170:D6,252|fb18303531363239333a3423063b2c693423103b2a0c3d2a69293b692d2a692211353ca003193332fade6a30fade69323b2b2d22150c220d332e2c6b6602932211352805a003622211362212382a322a3ba00305293ba002342a352b362b929103292b352c362c352806a0030a2c362b352a2aa06502013b030d2b2a2506250626041e333b02013b6502013b6565299103033b02112a38293629353da003033b02032a6801656602013b293ba003193433fa556a31221469333b2b2d22160c220e342f2c6b6602092935220c322d2c6b646434221234fa380c50342a6922100c50293b69343b3b2ce3502a3b69220d2a696422103822107d15000000|@11410,1,@2235,@4062,@5064,@8998| 17171:D16,256|fb2a343caa1a04012a69220f350c1aff002b220e6a220f350cfaf9220d220d6a0b03002d2afaf10c5029352a360b03003b2afae80c5029352a362b37221f312c221d221c2220221f2217fad40c2922212a9291030529929102013b03382a352b362b352c362c2b22243322292229220f2225222922262226222622232227222d222ffaa00c502b2a2506250626041e3e3b270402013b652a22222a3ba00312293ba003043b500203fa7e103b503b50023f2a352b362b929103043b500203fa6c103b502b352c362a362b372afa620cfa63222522276a30221d2c22292f2e222afa560c502f2e250a250a26081e52260851fa49221e6929220c22177d23000000|@11412,1,@2236,@17173,@17174,@17175,@9069,@8966,@11415,@11418,@6198,@6198,@11239,@17185,@11330,@17172| 17172:D4,36|fb092b352c36292306293ba00303fa20103b502935293b3b3be3502c2c692e3637307d07|@11426,1,@2250,@5689| 17173:D6,88|fb142b3629352a3628062b2b6a65fa540c29352806a003043b500203fa4a1029362a37293fb7293ba0912b3cb7293ba091fa390632363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270f420000|@11413,1,@2237,@8044,@8035,@5064| 17174:D7,112|fb162b352c362a2c37230c0c293ba003532a352b3628062b2b6a65fa5f0c29352806a003043b500203fa551029362a37293fb7293ba0912b3cb7293ba091fa440634363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270e02092935292cfa1e317e07664200|@11413,1,@2238,@8044,@8035,@5064,@11333| 17175:D8,136|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa70642f3b3bef293ba00304fa68024729282bb1292808b1293cb2293fb429fa59a503043b500203fa5410292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3f2d3f34ec503f31b1fa2c3f2e2c282bec502c95502c27082d363c2f372e2dfa22347b07090000|@11414,1,@2239,@8997,@9596,16777215,@4054,@10900| 17176:D7,76|fb12329291033f323533362a352b382c39fa452b220e2c221168052c2a333bfa3b2f2212221222122212fa340c2e2210221022102210221022102210fa260c2a2a69270802013b1f08000000|@4648,1,@2240,@17177,@11416,@11262,@11415| 17177:D3,36|fb082b362c2b390c502a3803072c2b370c5002023b502a36352a2a692c363b3b2ce36642|@11417,1,@2241| 17178:D5,52|fb152b352c362d37fa3606fa37063d2b2b6a3b063b063b062a2c2b6a2968013b06296801220c3d32220e220e302f6807270d4200|@11261,1,@2242,-1,@10945| 17179:D25,528|fb3522103522113622123722133929030e221323061a04022a22156a64020422132306221423082215392216230d22173a2218230b221736221736221b230c1ade012a2c2e6b221d37221e38221f352220230a222136222223072210030a1ac301222422216a0204222323092d2c313122122211221631221732220d22162213221a680e221b221b2b22172218222422242224222422290c22282a1a8a010c299291f8140129351a82012219222c222522201a7b010c1a7b0122192e222622211a6d010c2224221f22201a6b011a6c010c2c2a0c64293b691a65012a691a64012a693b3b3b3b2d6805293b691a59012a69302a691a55012a69332a691a51012a691a50012a693b3e3c3b2d68052231230d29299291031b29352a362a351a3801a003052a68010207292503511e1a3b6502013b64293ba003481a2001299291031b29352a362a351a0e01a003052a68010207292503511e1a3b6502013b64293ba00303fafb103b503b5029352935fae8a003043b500203faeb103b50293765021529352935fad1a003043b500203fad4103b50293764222d2afacd0c2968013c2a30222d6b2237382238230c2a3b3b3ce3502b2a0c271802013b22150339221729352816a0030c2936292502501e0d3b64021e2935280ba003033c021429352805a0030c2937292502501e2a3b6402013b6429916402013b031022223c221d2219fa69fa6b22207b072b3b27191f1000|@11420,1,@2243,@17180,@17181,@17182,@11175,@11423,@11216,@11354,@11218,@11219,@11234,@11235,@5091,@5091,@5091,@11424,@61,@5420,@5469,@4594,@9426,@11419,@10900| 17180:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2244| 17181:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2245| 17182:D5,40|fb093b06fa2e2a692b370c2a353b2d3623090c293ba003032a02072a2afa19317e07270442000000|@11422,1,@2246,@17183,@11421| 17183:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@11168,1,@2247| 17184:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2248,@11421| 17185:D8,140|fb082937230d29299291031a29352a362a35fa84a003052a68010207292503511e193b6502013b64293ba00342fa6d299291031a29352a362a35fa5ca003052a68010207292503511e193b6502013b64293ba00303fa49103b5029352935fa38a003043b500203fa3b10293765021329352935fa23a003043b500203fa26102937642c362afa21307e060000|@11368,1,@2249,@61,@5420,@5469,@4594,@9426| 17186:D68,2392|fb2a2d352e362f371a59090c1a59092e6928092a69293b69293ba003032c02062c2a1a47090c1a47092f34346b3b06293b3b1a3f093438220c37220d396be3501a350931691a340932691a3309333669220d350a1f00e801480280024603ac03f7033a044904560461049304be04f70457053e00b105f005280663067d06bb06ea06220731075e077607b107e207f407b408f308220d36293729352b352c362d382e392b3529350b03002d1ad608a003033c02152d3b3bef280ba0030b2d3f1ac2083f280bed02013b031e2f353b2a0c6429341ab2080c3c2a69293b692d3b453b462a4750260402dd2e392f3a2a299291037d29352a362a353ba003612a362935220e352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b03352b362210362a2aa003272d372212372a2aa003192f382214382a2aa0030b31392216392a2aa06502013b6502013b6502013b6502013b6602013b03052a68010207292503511e7c3b6502013b64293ba003072b1a11080c023e2b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652d2a452c463b4750260429352a362b372a9291032c2a35293529352b3629352d372935291aad070c2e3ba00303290206292f1aa3070c402e2b6a293b69270a02013b280d220f692b3ba003032a02062a2c1a88070c293ba003042218020722182a1a7c070c293ba003032f02062f2a1a72070c2c2a6922222211452a462716f71507220d3629352a362b372c392a1a57070c2a1a56070c2e1a55070c293ba003032a02062a2a1a4b070c293ba003032c02062c2a1a41070c220e6801220c2a692b2a1a37070c22123ba003032902072922131a2b070c221a220c452a46270ef7b506220d36220e37220f38306801220e362a692c3b692e2a69292c1afe060c220d3ba0030329020729220e1af6060c221530452a462709f77d06220d3629362a3629352819a003292936299291031e293629929103132936293ba003082e38293ca06402013b6402013b6402013b6402013b034c2b36293629352a3629353035313932372935280d2a69221168012218362a69303b69302a69342a69292d1a7b060c22183ba003032902072922191a77060c302a692221220c452a462712023c2b352c392d372935280d2a69220c68012213362a69313b69302a69292c1a3c060c22123ba003032902072922131a3c060c2f2a69221b34452a46270c66f7b705220d3629352a362b382c392d372935280528403bda1a180645280628403bda1a120645292e462b47220e483049334a6c502a22144631472a48220e496c503f2b69280d2d69293b692b2a6922123ba003032902072922131ade050c221a34452a46270ef75105220d3629352a362b372c382d392e3a346801332a693b06312a69302e69323069293b692b2a692d2a6929311a88050c22163ba003032902072922171a98050c221e220e452a462712f70605220d36220e37220f383f28403bda1a7e0545280528403bda1a780545292210462d472b4833496c502a2e462a4733486c503f2a6929220c6922132e452a462707f7c304220d362939220e2a45314665f7b404220d38220d2a45304664f7a704220c1a3305452f46f79c04220d36220e371a2805220d693068012a2a692d2a1aea040c343ba0030329020729220c1a0f050c22132f452a462707f76a04220d36220e372f68012e2a692c2a1abe040c333ba0030329020629341ae8040c22122e452a462706f73f04220d36220e37220f382b35280d2a693268012f2a692e2a1a8a040c220d3ba0030329020729220e1ab6040c2d2a69221631452a46270af70604220d36220e393b06293b3b1a9d042d2212376ae3503d28403bda1a9204453e28403bda1a8d0445292b462210476c502a2a466c501a80042b693368012a2a69302a1a27040c220e3ba0030329020729220f1a67040c221632452a46270af7a603220d36220e37220f38221039280528403bda1a4a0445280628403bda1a440445292c462b4734482e49304a6c502a2211462f472a4834496c503f2b69293b69220d3ba0030329020729220e1a19040c221530452a462709f74c03220d37220e38220f392b351a0304220f693268012a2a692e2a1a95030c280d2e69220e3ba003032a02072a220f1ae5030c2a2a69221732452a46270bf70d03220d36220e37220f38306801220e362a692c3b692e2a69292c1a56030c220d3ba0030329020729220e1aae030c221530452a462709f7d502220d36220e37220f382b35280d2a693268012210362a692e2a1a1e030c220d3ba0030329020729220e1a7a030c2d2a69221631452a46270af79a02220d36220e382a35280d2a6929336922112d452a462705f78002220d3629352a362b38316801302a692d3ba003032c02062c2e1a39030c292b1ac3020c220d3ba0030329020729220e1a27030c22152f452a462709f74202220d3629352a363068011a12032a692c2a1a93020c343ba0030329020729220c1a00030c22132e452a462707f71302220d36220e37220f38306801220e362a692c3b692e2a69292c1a5c020c220d3ba0030329020729220e1acc020c221530452a462709f7db01220d36220f2a220f220e22107b0510220d36220e371aac02220d2c326b3f2a69293b69333ba0030329020629341a98020c22122e452a462706f79f01220d37220e39280d2b6929326922102c452a462704f78701220d36220e37220f382a35280d2a693268012210362a692f2a1ad0010c220d3ba0030329020729220e1a4c020c2d2a69221631452a46270af74c01220d36220e372a1a37020c3068012e2a692b2a1a9b010c343ba0030329020729220c1a20020c22132f452a462707f71b01220d361a12023069220e2b452a4665f70901220d36220e391a0102220d36693068012a2a692d2a1a56010c2e9291033d2e352f362a352935280ea0032c29362935291adb01a003033c0213293b3bef3da0030a293f1ac8013f3ded02013b03052c3ba002013b6502013b6602013b03482e352935293629382c362a392b382a2aa0030a2c372d362a2aa06502013b030c221b2c221b221a221c7b051c22123ba003033002073022131a79010c221a220d452a466427070216343ba0030329020729220c1a62010c22132f452a466427060249220d36220e37220f38221039316801302a693b062e2a69302e69293b692b2a69292ffa8a0c22113ba003032902072922121a26010c221934452a46270d020a220d36220d2a45304664270a440000|@11430,1,@2251,@11431,@17190,@11436,@17192,@17193,@17197,@17198,@17256,@9107,@11527,@11477,@11528,@11529,@11530,@11531,@11532,@11533,@11534,@11535,@11536,@11537,@11487,@11538,@11539,@11540,@11541,@17278,@17279,@11545,@11546,@17283,@17284,@8997,@17285,@11564,@11565,@11566,@17311,@17319,@17320,@17327,@11685,@17344,@17345,@11687,@17348,@11696,@11697,@11698,@11699,@11700,@11701,@11704,@11705,@17365,@11707,@11708,@11709,@11710,@11711,@17370,@9157,@11717,@11718,@11429| 17187:D5,88|fb092c9291030c2c3528072a69293b696502013b2c9291030c2c3528082a69293b696502013b2f9291030c2f3528052a69293b696502013b293ba003032a02052a2afa200c293ba003032c02072c2afa17317e0927044400|@11433,1,@2252,@11434,@11432| 17188:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2253,@11434| 17189:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2254,@11432| 17190:D4,12|fb0529362cfa112d7e030000|@11435,1,@2255,@9426| 17191:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2256,@11436| 17192:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@11437,1,@2257| 17193:D25,432|fb122b363ca203061ab101f79e012b3529353ba0038c2c3529362e363cab2a2a692e36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a7701a003033c020f291a7101a003033c0205291a6b01a06402013b9102013b02013b03192a1a5d01691a5d012a691a5c012a693b3e3c3b2d68056602012a64020129293b691a49012a691a48012a693b3c3b3b2d68052709f709012c363ca203051a350102fe2c3529353ca0036a2d3529362a3730363cab293ba203051a1d010235293cab2c2a693137352a2a0c642c3cab2e2a691a0901351a09012a0c642a2a0c64291a0201691a02012a691a01012a692f2a692709fafc2a693b3c3b3b2d6805293b69faf22a69faf22a693b3c3b3b2d6805270a028b2d363ca20304fae102812d3529362f363cab2a2a692f38352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa65a003033c020d29fa60a003033c020429fa5ba06402013b9102013b02013b03162afa4e69fa4f2a69fa4f2a693b3e3c3b2d68056602012a64020129293b69fa712a69fa712a693b3c3b3b2d68052709646442000000|@11439,1,@2258,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@11440,@6303,@5086,@116,@11448,@6393,@5091,@9324,@6395,@5091,@11454,@6303,@5091,@11438| 17194:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2259,@9,@11450| 17195:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2260,@116,@11452| 17196:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2261,@115| 17197:D3,76|fb132b352c36293629350b02002c929103232c352f350b0200342d2b220f360c5029352a363b3069292b69322d452a46502609020a2e35302a2c34360c505029352a362a2a69270942000000|@11461,1,@2262| 17198:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11463,1,@2263,@11462| 17199:D13,336|fb122d353ca003382d362e372935299291032129350b0200220c302b220c0c5029352a363b2f69292b69220e2d452a4627080208312c3131317b050966f70b012d353da003a52d362937293ba0033e2a352b382c392d36293529351afe001aff00220f220f220e6805faf9302f2d2d68053f2a69221035221136221237fae90c2a2a69221033452a46270b025b29352b352c36293529352f383039facffac122102210220f68053f28403bdafac245280628403bdafabd452932462d472f482b492c4a6c502a33462a472c486c503f2a69221235221336221437fa8c0c2a2a69221231452a46270d6502602d362936293529352c352d372e382f39fa7bfa61220f220f220e6805280528403bdafa6d45280628403bdafa68452930462d4731482b492c4a6c502a2e462a472c482f496c503f2a69221135221236221337fa290c2a2a69221131452a46270e1f04000000|@11464,1,@2264,@17201,@11462,@17202,@11431,@17206,@17207,@17241,@17245,@17246,@17200| 17200:D7,128|fb0d293a68012a3968012b3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652b2d3bfa3c0cfa3d2f366928092a69293b69293ba003032c02052c2afa2b0c293ba003032e02052e2afa220c33372a69270a420000|@11467,1,@2317,@11431,@17253,@11518,@11517| 17201:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11465,1,@2265| 17202:D7,124|fb0c293968012a3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129653b2c3bfa3c0cfa3d2e366928092a69293b69293ba003032c02052c2afa2b0c293ba003032e02052e2afa220c32372a692709420000|@11467,1,@2266,@11431,@17203,@11469,@11466| 17203:D3,8|fb033e2a36694200|@11468,1,@2267| 17204:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2268,@11469| 17205:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2269,@11466| 17206:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11465,1,@2270| 17207:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@11471,1,@2271,@11470| 17208:D20,468|fb1a2c1ada010c1ada012b362b6a28092a69280d2c693135323633371ac9010c2a2a692c2a691ac30131220d220d6b34350a060006010c000e0140014a017501343629352a372b382c390b0200220f352805a00338220f372210382938293629353ca0030c2a36293629221738a06502013b03082d2d453b4650020d2b371a6f010c2e2e452a4650502604020b1a64012a2a35452a36465129352a36319291037f31353236293ba00338280628403bda1a450145280528403bda1a3f0145292217462d472b48220f496c502a2f4634472e482a49220f4a6c503f2a69293b6966023b280628403bda1a150145280628403bda1a0f014529220c462b47220f48220d492217374a6c502a2f4634472e482a49220f4a6c503f2a69293b696665020129220c3ba0030329020629220dfad90c221631452a46270c029533facf452b46028d3436220c37220d382c6801220c372a692b3b692e2a69292cfab40c323ba003032902052933faab0c221331452a462709025b3437342a452c466402513436220c38fa9334692c68012a2a692d2afa7f0c303ba003032902052931fa7e0c22112f452a46270702263436220c372b680134372a692c2afa570c2f3ba003032902052930fa5a0c22102e452a4627062708440000|@11474,1,@2272,@9405,@17209,@11431,@17210,@11477,@11478,@17212,@17216,@17217,@17221,@11495,@8997,@11487,@11496,@17230,@11505,@11473| 17209:D5,20|fb093bfa1b0c2a372d2bfa183b2f36317b070400|@11475,1,@2273,@9314,@9341| 17210:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@11476,1,@2274| 17211:D4,76|fb072b929103422b352c362a353da003092a36280b2a696402242a353ea003092a36280c2a696402152a353ca003092a3628062a696402062a363d2a69642afa170c2a2a69270402013b4200|@4648,1,@2275,@11477| 17212:D7,64|fb0b293a68012a3968013b2b2bfa3d0cfa3e2d366928092a69293b69293ba003032c02052c2afa2c0c293ba003043038020630382afa210c31372a6927084200|@11480,1,@2276,@11431,@17213,@11481,@11479| 17213:D3,8|fb033e2a36694200|@11468,1,@2277| 17214:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2278,@11481| 17215:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2279,@11479| 17216:D3,36|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a6927084200|@11482,1,@2280| 17217:D7,64|fb0b293a68012a3968013b2b2bfa3d0cfa3e2d366928092a69293b69293ba003032c02052c2afa2c0c293ba003043038020630382afa210c31372a6927084200|@11480,1,@2281,@11431,@17218,@11484,@11483| 17218:D3,8|fb033e2a36694200|@11468,1,@2282| 17219:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2283,@11484| 17220:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2284,@11483| 17221:D6,52|fb0a2968012a3a2a692b392afa320c2c3868012d376801292b3bfa280c293ba003032c02052c2afa1f0c30362a69270742000000|@11486,1,@2285,@11487,@11431,@11485| 17222:D4,32|fb072c3ba003033b02122b352c36fa1c2f2c2c6b3f2a69293b69270443000000|@11488,1,@2286,@17223| 17223:D4,16|fb082b2a363b2c372d38fa10307b0703|@11490,1,@2287,@11489| 17224:D7,68|fb0b2e929103043b500203fa43102e352f36293ba003033b021bfa38fa3a323232326806296801fa33fa2d2d2c3434680629680166292f326a292d69652f2e7d09000000|@11491,1,@2288,@11492,@17226,@11489,@17225| 17225:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@11490,1,@2290| 17226:D3,20|fb082b2a372b382c392d3a2e36307b0703000000|@11490,1,@2289| 17227:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2291,@11485| 17228:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2292,@11495| 17229:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2293,@11496| 17230:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11498,1,@2294,@11497| 17231:D8,96|fb0e2d3529352a3630363137fa5efa60220c220c346805280528403bdafa5545280628403bdafa50452930462f472e482b492c4a6c502a34462e472a482c496c503f2a69220e35220f36221037fa2d0c2a2a69220e30452a46270b1f04000000|@11499,1,@2295,@17233,@11497,@17234,@17232,@11431| 17232:D8,76|fb0e293a68012a3968012b38fa4a0c280d2a69293b692c2e3bfa410cfa4230366928092a69293b69293ba003032c02052c2afa300c293ba003032e02052e2afa270c34372a69270b42000000|@11503,1,@2298,@9405,@11431,@17235,@11504,@11502| 17233:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11500,1,@2296| 17234:D3,36|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a6927084200|@11501,1,@2297| 17235:D3,8|fb033e2a36694200|@11468,1,@2299| 17236:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2300,@11504| 17237:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2301,@11502| 17238:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2302,@11505| 17239:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2303,@11473| 17240:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@11506,1,@2304| 17241:D7,128|fb0d293a68012a3968012b3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652b2d3bfa3c0cfa3d2f366928092a69293b69293ba003032c02052c2afa2b0c293ba003032e02052e2afa220c33372a69270a420000|@11467,1,@2305,@11431,@17242,@11508,@11507| 17242:D3,8|fb033e2a36694200|@11468,1,@2306| 17243:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2307,@11508| 17244:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2308,@11507| 17245:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11465,1,@2309| 17246:D7,52|fb0a29386801fa382a692b392afa350c2c3868012d3768013b2b2bfa2b0c293ba003032c02052c2afa220c30362a692707420000|@11510,1,@2310,@11511,@11487,@11431,@11509| 17247:D4,12|fb052b352c36fa102d7e0300|@11513,1,@2311,@11512| 17248:D7,128|fb0f2b37293529392e352f382b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b6602012965323533363437fa3a0cfa3b2c6928092a69293b69293ba003032c02052c2afa2a0c293ba003032e02052e2afa210c312a69270c430000|@11515,1,@2312,@11431,@17249,@11516,@11514| 17249:D3,8|fb033e2a36694200|@11468,1,@2313| 17250:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2314,@11516| 17251:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2315,@11514| 17252:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2316,@11509| 17253:D3,8|fb033e2a36694200|@11468,1,@2318| 17254:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2319,@11518| 17255:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2320,@11517| 17256:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11520,1,@2321,@11519| 17257:D11,160|fb1d2d3729352f382935313a293533353436220c39fa95fa9722102210220f68052d9291030b2d353b2a69293b696502013bfa8022106928092a693d220c346a280d2a69293b692c2a6930680122142a69220c3b69220c2a69292cfa5b0c221b35221c36221d37fa530c220c3ba0030329020629220dfa480c293ba003032b02052b2afa3f0c293ba00303310205312afa360c221d2212452a46271a1f040000|@11522,1,@2322,@17258,@11519,@17259,@11487,@11431,@11525,@11526,@11521| 17258:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11523,1,@2323| 17259:D7,52|fb112936352a36362d3cab2a2afa310c2f3cab2d2afa290c293b69fa272a69fa272a69fa272a692f2a693b3b3b3b2d6805270b42|@11524,1,@2324,@9426,@5091,@6457,@5091| 17260:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2325,@11525| 17261:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2326,@11526| 17262:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2327,@11521| 17263:D4,60|fb0a2c929103322c352d362d3b3bef2b3b3bef2a2aa403082f3f2e3f2eed02013b030b2b30fa210c2d2a696402072b30fa16317e08270402013b4300|@4461,1,@2328,@11527| 17264:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2329,@11528| 17265:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2330,@11529| 17266:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2331,@11530| 17267:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2332,@11531| 17268:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2333,@11532| 17269:D4,28|fb072b929103122b352c363b2b692afa170c2a2a69270402013b4200|@4648,1,@2334,@11533| 17270:D4,28|fb072b929103122b352c363d2b692afa170c2a2a69270402013b4200|@4648,1,@2335,@11534| 17271:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa160c2a2a69270602013b42|@4648,1,@2336,@11535| 17272:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2337,@11536| 17273:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2338,@11537| 17274:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2339,@11538| 17275:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2340,@11539| 17276:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2341,@11540| 17277:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2342,@11541| 17278:D3,36|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a6927084200|@11542,1,@2343| 17279:D6,52|fb0a2968012a3a2a692b392afa320c2c3868012d3768013b2b2bfa280c293ba003032c02052c2afa1f0c30362a69270742000000|@11544,1,@2344,@11487,@11431,@11543| 17280:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2345,@11543| 17281:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2346,@11545| 17282:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2347,@11546| 17283:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@11547,1,@2348,@11470| 17284:D3,36|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a6927084200|@11542,1,@2349| 17285:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11549,1,@2350,@11548| 17286:D18,460|fb122d3729929103d129352f3a29352808a0036130353136293529393438220c391ab4011ab50122102210220f68053f28403bda1aa90145280628403bda1aa301452932462d472f482b492c4a6c502a34462a472c486c503f2a692212352213362214371a81010c2a2a69221231452a46270c02623035313832393336293529391a68011a550122102210220f6805280528403bda1a580145280628403bda1a52014529324630472d482b492c4a6c502a220f4633472a482c496c503f2a692212352213362214371a1d010c2a2a69221234452a46270c6502ee2e3a29352808a003872f3629352939323533392b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b6602012965facb2a69220e35220f36221037faae0cfabf2e6928092a69293b69293ba003032c02052c2afaae0c293ba003032e02052e2afaa50c221232452a46270d025d2f3530383139323629352939fa90fa62220f220f220e6805280528403bdafa8245280628403bdafa7d4529324630472d482b492c4a6c502a220e4633472a482c496c503f2a69221135221236221337fa2d0c2a2a69221134452a46270c64641f0400|@11550,1,@2351,@17288,@11548,@17289,@17290,@11431,@17294,@17295,@17296,@11559,@17300,@11560,@11561,@17303,@17304,@17287| 17287:D7,124|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa3a0cfa3b2e366928092a69293b69293ba003032c02052c2afa290c293ba003032e02052e2afa200c32372a69270942|@11554,1,@2369,@11431,@17305,@11563,@11562| 17288:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11551,1,@2352| 17289:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@11552,1,@2353,@11470| 17290:D7,124|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa3a0cfa3b2e366928092a69293b69293ba003032c02052c2afa290c293ba003032e02052e2afa200c32372a69270942|@11554,1,@2354,@11431,@17291,@11555,@11553| 17291:D3,8|fb033e2a36694200|@11468,1,@2355| 17292:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2356,@11555| 17293:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2357,@11553| 17294:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11551,1,@2358| 17295:D3,36|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a6927084200|@11556,1,@2359| 17296:D7,124|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa3a0cfa3b2e366928092a69293b69293ba003032c02052c2afa290c293ba003032e02052e2afa200c32372a69270942|@11554,1,@2360,@11431,@17297,@11558,@11557| 17297:D3,8|fb033e2a36694200|@11468,1,@2361| 17298:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2362,@11558| 17299:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2363,@11557| 17300:D3,8|fb033e2a36694200|@11468,1,@2364| 17301:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2365,@11560| 17302:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2366,@11561| 17303:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11551,1,@2367| 17304:D3,36|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a6927084200|@11556,1,@2368| 17305:D3,8|fb033e2a36694200|@11468,1,@2370| 17306:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2371,@11563| 17307:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2372,@11562| 17308:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2373,@11564| 17309:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2374,@11565| 17310:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2375,@11566| 17311:D101,1204|fb2b2b363ca203061ab504f7a4042b3529353ba0038d2c3529362e363cab2a2a691aa004352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a7e04a003033c020f291a7804a003033c0205291a7204a06402013b9102013b02013b03192a1a6404691a64042a691a63042a693b3e3c3b2d68056602012a64020129293b691a50042a691a4f042a693b3c3b3b2d68052709f70e042c363ca203061a3c04f702042c3529353ca0f8ea012d3529362a3730363cab293ba203061a2204f7b001293cab293ba203061a1804f774012c362a3cab2a2a691a0e04351a0e042a0c642a2a0c642d3ca203061a0304f73a0130372e3cab293ba203051af70302e62a362a3cab2a2a691aee03352a2a0c642d3ca203051ae50302b32e382e3cab2a2a691ad403352a2a0c64313da203051acf0302803235323cab2a2a691ac603352a2a0c64220c3ea203051abc03024c220d37220d3cab2a2a691a9d03352a2a0c6422113922113cab2a2a691a8b03352a2a0c64291a9603691a96032a691a95032a691a94032a691a93032a69322a691a8f032a691a8e032a69270f1a8b032a691a8a032a692c2a691a86032a691a85032a6927091a82032a691a81032a692c2a691a7d032a691a7c032a6927091a79032a691a78032a692c2a691a74032a691a73032a6927091a70032a693b3c3b3b2d6805220c35333cab2a2a691a0703352a2a0c64291a5603691a56032a691a55032a691a54032a691a53032a69322a691a4f032a691a4e032a6927101a4b032a691a4a032a692c2a691a46032a691a45032a6927091a42032a693b3c3b3b2d68052d3cab2f2a691a3403352a2a0c64291a2f03691a2f032a691a2e032a692f2a69270a1a28032a693b3c3b3b2d6805293b691a1d032a691a1c032a693b3c3b3b2d6805270af70e022d363ca203061a0903f702022d3529353da0f86a012e3529362a3731363cab293ba203061aef02f73101293cab2c2a691ae702351ae7023436693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051ad00202e72e362a3cab2a2a691a0302352a2a0c642d3ca203051aba0202b432382e3cab2a2a691ae901352a2a0c64313da203051aa4020281220d35323cab2a2a691ada01352a2a0c64220c3ea203051a8c02024c221137220d3cab2a2a691ab101352a2a0c6422153922113cab2a2a691a9f01352a2a0c64291a6602691a66022a691a65022a691a64022a691a63022a69322a691a5f022a691a5e022a69270f1a5b022a691a5a022a692c2a691a56022a691a55022a6927091a52022a691a51022a692c2a691a4d022a691a4c022a6927091a49022a691a48022a692c2a691a44022a691a43022a6927091a40022a693b3c3b3b2d6805291a3702691a37022a691a36022a69302a69270a1a30022a693b3c3b3b2d6805293b691a25022a691a24022a693b3c3b3b2d6805270a028e2e363ca203051a120202832e35293630363cab2a2a693037352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6aa003033c020d29fa65a003033c020429fa60a06402013b9102013b02013b03162afa5369fa542a69fa542a693b3e3c3b2d68056602012a64020129293b691aa1012a691aa0012a693b3c3b3b2d680527096464644200|@11568,1,@2376,@6303,@152,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@11627,@6303,@5086,@8198,@116,@11634,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11636,@9327,@156,@6393,@5091,@9324,@6395,@5091,@11638,@6303,@5086,@118,@17318,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@11645,@6303,@5091,@11567| 17312:D273,2824|fb3b2b363ca203061a090bf7f70a2b3529353ba003061aff0af7e80a2c363ca203061af70af7dc0a2c3529353ca0f841042d3529362f363cab293ba203061adf0af709042a372a3cab293ba203051ad30a02e62a362a3cab2a2a691aca0a352a2a0c642d3ca203051ac10a02b32e382e3cab2a2a691ab00a352a2a0c64313da203051aab0a02803235323cab2a2a691aa20a352a2a0c64220c3ea203051a980a024c220d37220d3cab2a2a691a790a352a2a0c6422113922113cab2a2a691a670a352a2a0c64291a720a691a720a2a691a710a2a691a700a2a691a6f0a2a69322a691a6b0a2a691a6a0a2a69270f1a670a2a691a660a2a692c2a691a620a2a691a610a2a6927091a5e0a2a691a5d0a2a692c2a691a590a2a691a580a2a6927091a550a2a691a540a2a692c2a691a500a2a691a4f0a2a6927091a4c0a2a693b3c3b3b2d68052e3ca203061a3f0af7e4022f352f3cab2a2a691a350a351a350a220f36693b2a3e3c6b642a0c642a2a0c64323da203061a200af7a002333a333cab2a2a691a160a351a160a2a0c642a2a0c64220d3ea203061a0a0af76502220e39220e3cab293ba203051afc0902e62a362a3cab2a2a691a6f09352a2a0c642d3ca203051ae60902b32e382e3cab2a2a691a5509352a2a0c64313da203051ad00902803235323cab2a2a691a4709352a2a0c64220c3ea203051ab909024c220d37220d3cab2a2a691a1e09352a2a0c6422113922113cab2a2a691a0c09352a2a0c64291a9309691a93092a691a92092a691a91092a691a90092a69322a691a8c092a691a8b092a69270f1a88092a691a87092a692c2a691a83092a691a82092a6927091a7f092a691a7e092a692c2a691a7a092a691a79092a6927091a76092a691a75092a692c2a691a71092a691a70092a6927091a6d092a693b3c3b3b2d680522123fa203061a5f09f73d0122133622133cab2a2a691a7b08352a2a0c6422173822173cab293ba203051a3f0902e62a362a3cab2a2a691a4e08352a2a0c642d3ca203051a290902b32e382e3cab2a2a691a3408352a2a0c64313da203051a130902803235323cab2a2a691a2608352a2a0c64220c3ea203051afc08024c220d37220d3cab2a2a691afd07352a2a0c6422113922113cab2a2a691aeb07352a2a0c64291ad608691ad6082a691ad5082a691ad4082a691ad3082a69322a691acf082a691ace082a69270f1acb082a691aca082a692c2a691ac6082a691ac5082a6927091ac2082a691ac1082a692c2a691abd082a691abc082a6927091ab9082a691ab8082a692c2a691ab4082a691ab3082a6927091ab0082a693b3c3b3b2d6805291aa708691aa7082a691aa6082a691aa5082a691aa4082a69332a691aa0082a691a9f082a6927101a9c082a691a9b082a692c2a691a97082a691a96082a69270a1a93082a691a92082a692c2a691a8e082a691a8d082a6927091a8a082a691a89082a692c2a691a85082a691a84082a6927091a81082a691a80082a692c2a691a7c082a691a7b082a69270a1a78082a693b3c3b3b2d6805293b691a6d082a691a6c082a693b3c3b3b2d68052709f791062d363ca203061a5908f785062d3529353da0f8a3012e3529362a372b3832363cab293ba203061a3d08f76701293cab2d2a693336352a2a0c642c3ca203061a2908f736012c3cab293ba203051a1f0802e72f362a3cab2a2a691a5a06352a2a0c642d3ca203051a090802b433382e3cab2a2a691a4006352a2a0c64313da203051af3070281220e35323cab2a2a691a3106352a2a0c64220c3ea203051adb07024c221237220d3cab2a2a691a0806352a2a0c6422163922113cab2a2a691af605352a2a0c64291ab507691ab5072a691ab4072a691ab3072a691ab2072a69322a691aae072a691aad072a69270f1aaa072a691aa9072a692c2a691aa5072a691aa4072a6927091aa1072a691aa0072a692c2a691a9c072a691a9b072a6927091a98072a691a97072a692c2a691a93072a691a92072a6927091a8f072a693b3c3b3b2d6805303cab322a69221136352a2a0c64291a7807691a78072a691a77072a691a76072a691a75072a69312a691a71072a691a70072a69270e1a6d072a691a6c072a692c2a691a68072a691a67072a6927081a64072a693b3c3b3b2d6805293b691a59072a691a58072a693b3c3b3b2d6805270bf7d8042e363ca203061a4507f7cc042e3529353ea0f86f012f3529362a3732363cab293ba203061a2b07f73501293cab293ba203051a210702e62b362a3cab2a2a691abc04352a2a0c642d3ca203051a0b0702b32f382e3cab2a2a691aa204352a2a0c64313da203051af50602803335323cab2a2a691a9404352a2a0c64220c3ea203051ade06024c220e37220d3cab2a2a691a6b04352a2a0c6422123922113cab2a2a691a5904352a2a0c64291ab806691ab8062a691ab7062a691ab6062a691ab5062a69322a691ab1062a691ab0062a69270f1aad062a691aac062a692c2a691aa8062a691aa7062a6927091aa4062a691aa3062a692c2a691a9f062a691a9e062a6927091a9b062a691a9a062a692c2a691a96062a691a95062a6927091a92062a693b3c3b3b2d68052d3cab302a691a8406352a2a0c64291a7f06691a7f062a691a7e062a691a7d062a691a7c062a69312a691a78062a691a77062a69270e1a74062a693b3c3b3b2d6805293b691a69062a691a68062a693b3c3b3b2d6805270af753032f363ca203061a5506f747032f3529353fa0f8b501303529362a372b3834363cab293ba203061a3906f77901293cab2d2a691aad03351a2d06220e36693b2a3d3e6b642a0c642a2a0c642c3ca203061a1806f737012c3cab2f2a691a1006352a2a0c642f3cab293ba203051a040602e831362a3cab2a2a691aff02352a2a0c642d3ca203051aee0502b5220c382e3cab2a2a691ae402352a2a0c64313da203051ad7050281221035323cab2a2a691ad502352a2a0c64220c3ea203051abf05024c221437220d3cab2a2a691aac02352a2a0c6422183922113cab2a2a691a9a02352a2a0c64291a9905691a99052a691a98052a691a97052a691a96052a69322a691a92052a691a91052a69270f1a8e052a691a8d052a692c2a691a89052a691a88052a6927091a85052a691a84052a692c2a691a80052a691a7f052a6927091a7c052a691a7b052a692c2a691a77052a691a76052a6927091a73052a693b3c3b3b2d6805291a6a05691a6a052a691a69052a691a68052a691a67052a69322a691a63052a691a62052a69270e1a5f052a691a5e052a692c2a691a5a052a691a59052a6927081a56052a693b3c3b3b2d6805293b691a4b052a691a4a052a693b3c3b3b2d6805270bf7880130363ca203061a3705f77c01303529362a3733363cab293ba203061a2605f74501293cab2c2a691aee01351a1a05220d36693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a020502e62e362a3cab2a2a691a5901352a2a0c642d3ca203051aec0402b332382e3cab2a2a691a3f01352a2a0c64313da203051ad6040280220d35323cab2a2a691a3001352a2a0c64220c3ea203051abe04024b221137220d3cab2a2a691a0701352a2a0c6422153922113cab2a2a69faf6352a2a0c64291a9904691a99042a691a98042a691a97042a691a96042a69322a691a92042a691a91042a69270f1a8e042a691a8d042a692c2a691a89042a691a88042a6927091a85042a691a84042a692c2a691a80042a691a7f042a6927091a7c042a691a7b042a692c2a691a77042a691a76042a6927091a73042a693b3c3b3b2d6805291a6a04691a6a042a691a69042a691a68042a691a67042a69322a691a63042a691a62042a69270e1a5f042a693b3c3b3b2d6805293b691a54042a691a53042a693b3c3b3b2d6805270a6464646464420000|@11571,1,@2377,@6303,@11572,@6303,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@118,@17313,@8198,@116,@11579,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11583,@5091,@9324,@5091,@9758,@5091,@9324,@5091,@11585,@9327,@5091,@11587,@6303,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@10196,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11594,@9327,@5091,@11596,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@109,@9320,@5091,@11603,@5091,@9324,@5091,@9606,@9327,@5091,@11605,@6303,@8198,@17315,@8198,@115,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11612,@5091,@9324,@5091,@10403,@9327,@5091,@11614,@6303,@8198,@17316,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@10403,@9327,@5091,@11570| 17313:D3,12|fb052936352c2a2d7d040000|@11571,1,@2378| 17314:D4,12|fb05fa14352c2a2d7d040000|@9743,1,@2379,@154| 17315:D66,672|fb292b363ba203061aa102f784022b35352c363cab293ba203061a9302f725012a352a3cab2a2a691a8902352a2a0c642e362e3cab293ba203051a7b0202e62a362a3cab2a2a691a7202352a2a0c642d3ca203051a690202b32e382e3cab2a2a691a5802352a2a0c64313da203051a530202803235323cab2a2a691a3602352a2a0c64220c3ea203051a3c02024c220d37220d3cab2a2a691a2102352a2a0c6422113922113cab2a2a691a0f02352a2a0c64291a1602691a16022a691a15022a691a14022a691a13022a69322a691a0f022a691a0e022a69270f1a0b022a691a0a022a692c2a691a06022a691a05022a6927091a02022a691a01022a692c2a691afd012a691afc012a6927091af9012a691af8012a692c2a691af4012a691af3012a6927091af0012a693b3c3b3b2d6805291ae701691ae7012a691ae6012a69312a69270c1ae0012a693b3c3b3b2d680530363ca203061ad201f7260130353631363cab2a2a693136352a2a0c64343537220c363cab293ba203051ab20102e32a362a3cab2a2a691a3101352a2a0c642d3ca203051a9c0102b02e382e3cab2a2a691a1701352a2a0c64313da203051a8601027d3235323cab2a2a69faf6352a2a0c64220c3ea203051a7001024a220d37220d3cab2a2a69fae2352a2a0c6422113922113cab2a2a69fad1352a2a0c64291a4c01691a4c012a691a4b012a691a4a012a691a49012a69322a691a45012a691a44012a69270f1a41012a691a40012a692c2a691a3c012a691a3b012a6927091a38012a691a37012a692c2a691a33012a691a32012a6927091a2f012a691a2e012a692c2a691a2a012a691a29012a6927091a26012a693b3c3b3b2d6805291a1d01691a1d012a691a1c012a69312a69270c1a16012a691a15012a692c2a6927081a0f012a693b3c3b3b2d68056542|@4036,1,@2380,@5086,@5086,@7,@8198,@75,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@5091,@9324,@6395| 17316:D3,12|fb052936352c2a2d7d040000|@11571,1,@2381| 17317:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2382,@155| 17318:D3,12|fb052936352c2a2d7d040000|@11568,1,@2383| 17319:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@11658,1,@2384| 17320:D12,280|fb142c353da003392c362d371a15012c31316b2968012d362a692d2a1a09010c33353436220c371a02010c293ba003032a02052a2afaf90c3330452a46270802d32c353ba0030b2c362e2a2efae62f7b05062c353ea0030b2c362e2a2e2d372f7b05062c362d372a3629352c372c392d3a299291032a2935293529352b3629352d37293529fab10c2e3ba00303290205292ffaa80c402e2b6a293b69270a02013b2b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b6602012965280d2f69220e35220f36221037fa3e0c2a2a69293ba003032c02052c2afa420c293ba003032e02052e2afa390c221033452a46270e44000000|@11660,1,@2385,@17321,@11487,@11431,@11662,@11470,@11663,@11664,@11665,@11659| 17321:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@11661,1,@2386| 17322:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2387,@11662| 17323:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2388,@11663| 17324:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2389,@11664| 17325:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2390,@11665| 17326:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2391,@11659| 17327:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11667,1,@2392,@11666| 17328:D12,156|fb0f2d362e3629929103082936293ba06402013b03412f362935313729353338220c35220d36220e37fa7d0cfa7efa80220f220f220e68052e2d2b220efa750c2b3ba00303290205292cfa6c0c220e2e452a46270902412f372935313833353436220c37fa420cfa53fa45220d220d220c6805fa4b332e6a2a68012a2a69322afa420c2e3ba00303290205292ffa390c220f31452a46270a651f0400|@11669,1,@2393,@11431,@17329,@11666,@11671,@11678,@17337,@17338,@11487,@11668| 17329:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11670,1,@2394| 17330:D9,244|fb1a2e382935303529352a362b372c38220c362b3ca003332d9291032b2d3529352819a0031e29362992910313293629929103082936293ba06402013b6402013b6402013b6402013b02013b03332d352e362a362b382a352b3629353e2c693c220c22166a3e2c69293b692b2a692d2a693d2a346a220cfa870c2a2a69270f020d3c2d220e6a2efa7b0c2a2a69652b9291030b2b353b2a69293b696502013b319291030b31353b2a69293b696502013b220e6801220e2a693e2f69293b69293ba003032e02052e2afa3e0c293ba00303300205302afa350c292efa340c303ba003032902082931fa2b22167e1827121f04000000|@11673,1,@2395,@11674,@11675,@11676,@11677,@11487,@11672| 17331:D4,28|fb072b929103122b352c363e2b692afa170c2a2a69270402013b4200|@4648,1,@2396,@11674| 17332:D4,28|fb072b929103122b352c363e2b692afa170c2a2a69270402013b4200|@4648,1,@2397,@11675| 17333:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2398,@11676| 17334:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2399,@11677| 17335:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2400,@11672| 17336:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2401,@11678| 17337:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11679,1,@2402| 17338:D4,28|fb0a0b02002e352f362b2f363037fa180c5029352a362a2a69270542|@11681,1,@2403,@11680| 17339:D8,52|fb092e37303531363237fa340cfa35fa37333332326806312f2b32fa2f0c2b3ba00303290205292cfa260c322e452a4627051f05|@11683,1,@2404,@11431,@17340,@11680,@11671,@11682| 17340:D3,28|fb0a0b02002c372d382b2f39303a31360c5029352a362a2a69270542|@11684,1,@2405| 17341:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2406,@11682| 17342:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2407,@11668| 17343:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2408,@11685| 17344:D3,36|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a6927084200|@11542,1,@2409| 17345:D6,52|fb0a2968012a3a2a692b392afa320c2c3868012d3768013b2b2bfa280c293ba003032c02052c2afa1f0c30362a69270742000000|@11544,1,@2410,@11487,@11431,@11686| 17346:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2411,@11686| 17347:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2412,@11687| 17348:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11689,1,@2413,@11688| 17349:D8,220|fb182d3629352f353037313832390b0200220e2e2b220e0c5029352a362a352f352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b03332c3631362a2aa003262e3733372a2aa003193038220c382a2aa0030b3239220e392a2aa06502013b6502013b6502013b6502013b030822102d452c460256fa66fa682214221422136805280528403bdafa5c45280628403bdafa574529220e46220d47220f482b492c4a6c502a221346220c472a482c496c503f2a69221635221736221837fa2f0c2a2a692216220e452a462706270d1f040000|@11690,1,@2414,@17351,@11688,@17352,@17350,@11431| 17350:D7,72|fb0d293a68012a396801280d2c3869293b692b2d3bfa3d0cfa3e2f366928092a69293b69293ba003032c02052c2afa2c0c293ba003032e02052e2afa230c33372a69270a42000000|@11694,1,@2417,@11431,@17353,@11695,@11693| 17351:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11691,1,@2415| 17352:D3,36|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a6927084200|@11692,1,@2416| 17353:D3,8|fb033e2a36694200|@11468,1,@2418| 17354:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2419,@11695| 17355:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2420,@11693| 17356:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2421,@11696| 17357:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2422,@11697| 17358:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2423,@11698| 17359:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2424,@11699| 17360:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2425,@11700| 17361:D6,60|fb0b2b352c3629362a372a35293ba003033b02092935293829fa2d0c652e352f363037fa270c2a3ba00303290205292bfa1e0c2d2a69270842000000|@11703,1,@2426,@11477,@11431,@11702| 17362:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2427,@11702| 17363:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2428,@11704| 17364:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2429,@11705| 17365:D3,32|fb0a293868013b2a3b6a0b02002c2f372b31360c5029352a362a2a6927074200|@11706,1,@2430| 17366:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2431,@11707| 17367:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2432,@11708| 17368:D4,28|fb072b929103122b352c363d2b692afa170c2a2a69270402013b4200|@4648,1,@2433,@11709| 17369:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2434,@11710| 17370:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@11713,1,@2435,@11712| 17371:D8,68|fb0e2d352e362f37313532363337fa400cfa41fa433434336805296801312a692e3b69302a69292cfa320c2f3ba003032902052930fa290c220e32452a46270b1f040000|@11715,1,@2436,@11431,@17372,@11712,@11487,@11714| 17372:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@11716,1,@2437| 17373:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2438,@11714| 17374:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2439,@11717| 17375:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2440,@11718| 17376:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2441,@11429| 17377:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@11720,1,@2442| 17378:D1440,15536|fb4b2b363ca203061ab13cf79e3c2b3529353ba0f87d022c3529362e363cab293ba203061a993cf745022a352a3cab2a2a691a8f3c351a8f3c3238693b2a3d3d6b642a0c642a2a0c642d3ca203061a7b3cf702022e3a2e3cab2a2a691a713c351a713c2a0c642a2a0c64313da203061a663cf7c8013238323cab2a2a691a5c3c352a2a0c64220c3ea203061a523cf79301220d36220d3cab293ba203051a443c02e62a362a3cab2a2a691a3b3c352a2a0c642d3ca203051a323c02b32e382e3cab2a2a691a213c352a2a0c64313da203051a1c3c02803235323cab2a2a691a133c352a2a0c64220c3ea203051a093c024c220d37220d3cab2a2a691aea3b352a2a0c6422113922113cab2a2a691ad83b352a2a0c64291ae33b691ae33b2a691ae23b2a691ae13b2a691ae03b2a69322a691adc3b2a691adb3b2a69270f1ad83b2a691ad73b2a692c2a691ad33b2a691ad23b2a6927091acf3b2a691ace3b2a692c2a691aca3b2a691ac93b2a6927091ac63b2a691ac53b2a692c2a691ac13b2a691ac03b2a6927091abd3b2a693b3c3b3b2d680522113fa203051aaf3b026c22123722123cab2a2a691a183b351aa03b221a37693b2a3e3c6b642a0c642a2a0c6422163922163cab2a2a691af63a351a823b221e36693b2a3e3c6b642a0c642a2a0c64291a713b691a713b2a691a703b2a691a6f3b2a691a6e3b2a69322a691a6a3b2a691a693b2a69270f1a663b2a691a653b2a692c2a691a613b2a691a603b2a69270a1a5d3b2a691a5c3b2a692c2a691a583b2a691a573b2a6927091a543b2a691a533b2a692c2a691a4f3b2a691a4e3b2a6927091a4b3b2a691a4a3b2a692c2a691a463b2a691a453b2a6927091a423b2a693b3c3b3b2d6805293b691a373b2a691a363b2a693b3c3b3b2d68052709f7173a2c363ca203061a233bf70b3a2c3529353ca0f8a3012d3529362a372b3831363cab293ba203061a073bf76701293cab2d2a693238352a2a0c642c3ca203061af33af736012c3cab293ba203051ae93a02e72e362a3cab2a2a691af839352a2a0c642d3ca203051ad33a02b432382e3cab2a2a691ade39352a2a0c64313da203051abd3a0281220d35323cab2a2a691acf39352a2a0c64220c3ea203051aa53a024c221137220d3cab2a2a691aa639352a2a0c6422153922113cab2a2a691a9439352a2a0c64291a7f3a691a7f3a2a691a7e3a2a691a7d3a2a691a7c3a2a69322a691a783a2a691a773a2a69270f1a743a2a691a733a2a692c2a691a6f3a2a691a6e3a2a6927091a6b3a2a691a6a3a2a692c2a691a663a2a691a653a2a6927091a623a2a691a613a2a692c2a691a5d3a2a691a5c3a2a6927091a593a2a693b3c3b3b2d6805303cab332a69221038352a2a0c64291a423a691a423a2a691a413a2a691a403a2a691a3f3a2a69312a691a3b3a2a691a3a3a2a69270e1a373a2a691a363a2a692c2a691a323a2a691a313a2a6927081a2e3a2a693b3c3b3b2d6805293b691a233a2a691a223a2a693b3c3b3b2d6805270bf75e382d363ca203061a0f3af752382d3529353da0f817022e35293630363cab293ba203061af739f7df012a362a3cab2a2a693238352a2a0c642d3ca203061ae139f7ac012e372e3cab2a2a691a3738351ad3392a0c642a2a0c64313da203061ac839f772013235323cab2a2a69221138352a2a0c64220c3ea203061ab039f73d01220d38220d3cab2a2a691a0438352a2a0c6422113922113cab293ba203051a903902e62a362a3cab2a2a691aef37352a2a0c642d3ca203051a7a3902b32e382e3cab2a2a691ad537352a2a0c64313da203051a643902803235323cab2a2a691ac737352a2a0c64220c3ea203051a4d39024c220d37220d3cab2a2a691a9e37352a2a0c6422113922113cab2a2a691a8c37352a2a0c64291a2739691a27392a691a26392a691a25392a691a24392a69322a691a20392a691a1f392a69270f1a1c392a691a1b392a692c2a691a17392a691a16392a6927091a13392a691a12392a692c2a691a0e392a691a0d392a6927091a0a392a691a09392a692c2a691a05392a691a04392a6927091a01392a693b3c3b3b2d6805291af838691af8382a691af7382a691af6382a691af5382a69332a691af1382a691af0382a6927101aed382a691aec382a692c2a691ae8382a691ae7382a6927091ae4382a691ae3382a692c2a691adf382a691ade382a6927091adb382a691ada382a692c2a691ad6382a691ad5382a6927091ad2382a693b3c3b3b2d6805293b691ac7382a691ac6382a693b3c3b3b2d68052709f731362e363ca203061ab338f725362e3529353ea0f818032f35293631363cab293ba203061a9b38f7e0022a372a3cab2a2a691a2536351a8d382a0c642a2a0c642d3ca203061a8238f7a6022e392e3cab293ba203051a763802e62a362a3cab2a2a691a0d36352a2a0c642d3ca203051a603802b32e382e3cab2a2a691af335352a2a0c64313da203051a4a3802803235323cab2a2a691ae535352a2a0c64220c3ea203051a3338024c220d37220d3cab2a2a691abc35352a2a0c6422113922113cab2a2a691aaa35352a2a0c64291a0d38691a0d382a691a0c382a691a0b382a691a0a382a69322a691a06382a691a05382a69270f1a02382a691a01382a692c2a691afd372a691afc372a6927091af9372a691af8372a692c2a691af4372a691af3372a6927091af0372a691aef372a692c2a691aeb372a691aea372a6927091ae7372a693b3c3b3b2d6805323da203061ada37f781013338333cab293ba203051ace3702e62a362a3cab2a2a691a0135352a2a0c642d3ca203051ab83702b32e382e3cab2a2a691ae734352a2a0c64313da203051aa23702803235323cab2a2a691ad934352a2a0c64220c3ea203051a8b37024c220d37220d3cab2a2a691ab034352a2a0c6422113922113cab2a2a691a9e34352a2a0c64291a6537691a65372a691a64372a691a63372a691a62372a69322a691a5e372a691a5d372a69270f1a5a372a691a59372a692c2a691a55372a691a54372a6927091a51372a691a50372a692c2a691a4c372a691a4b372a6927091a48372a691a47372a692c2a691a43372a691a42372a6927091a3f372a693b3c3b3b2d6805220e3ea203051a3137025c220f36220f3cab2a2a691ade33351a2237221a39693b2a3e3c6b642a0c642a2a0c6422133522133cab2a2a69221c38352a2a0c64291aff36691aff362a691afe362a691afd362a691afc362a69322a691af8362a691af7362a69270f1af4362a691af3362a692c2a691aef362a691aee362a69270a1aeb362a691aea362a692c2a691ae6362a691ae5362a69270a1ae2362a691ae1362a692c2a691add362a691adc362a6927091ad9362a693b3c3b3b2d6805293b691ace362a691acd362a693b3c3b3b2d68052709f703332f363ca203061aba36f7f7322f3529353fa0f853023035293632363cab293ba203061aa236f71b022a392a3cab2a2a691af832351a94362a0c642a2a0c642d3ca203061a8936f7e1012e362e3cab2a2a69220f38352a2a0c64313da203061a7236f7ad013238323cab293ba203051a663602e62a362a3cab2a2a691ac532352a2a0c642d3ca203051a503602b32e382e3cab2a2a691aab32352a2a0c64313da203051a3a3602803235323cab2a2a691a9d32352a2a0c64220c3ea203051a2336024c220d37220d3cab2a2a691a7432352a2a0c6422113922113cab2a2a691a6232352a2a0c64291afd35691afd352a691afc352a691afb352a691afa352a69322a691af6352a691af5352a69270f1af2352a691af1352a692c2a691aed352a691aec352a6927091ae9352a691ae8352a692c2a691ae4352a691ae3352a6927091ae0352a691adf352a692c2a691adb352a691ada352a6927091ad7352a693b3c3b3b2d6805220d3ea203051ac9350288220e35220e3cab2a2a69221838352a2a0c6422113fa203051ab035025222123a22123cab2a2a691a9131351aa1352a0c642a2a0c6422163722163cab2a2a69222038352a2a0c64291a8835691a88352a691a87352a691a86352a691a85352a69322a691a81352a691a80352a69270f1a7d352a691a7c352a692c2a691a78352a691a77352a6927091a74352a691a73352a692c2a691a6f352a691a6e352a69270a1a6b352a691a6a352a692c2a691a66352a691a65352a6927091a62352a691a61352a692c2a691a5d352a691a5c352a6927091a59352a693b3c3b3b2d6805293b691a4e352a691a4d352a693b3c3b3b2d68052709f79a3030363ca203061a3a35f78e30303529352805a0f8a501313529362a372b38220c363cab293ba203061a1c35f76801293cab2d2a691a1435352a2a0c642c3ca203061a0b35f736012c3cab293ba203051a013502e72e362a3cab2a2a691a7c30352a2a0c642d3ca203051aeb3402b432382e3cab2a2a691a6230352a2a0c64313da203051ad5340281220d35323cab2a2a691a5330352a2a0c64220c3ea203051abd34024c221137220d3cab2a2a691a2a30352a2a0c6422153922113cab2a2a691a1830352a2a0c64291a9734691a97342a691a96342a691a95342a691a94342a69322a691a90342a691a8f342a69270f1a8c342a691a8b342a692c2a691a87342a691a86342a6927091a83342a691a82342a692c2a691a7e342a691a7d342a6927091a7a342a691a79342a692c2a691a75342a691a74342a6927091a71342a693b3c3b3b2d6805303cab332a69221438352a2a0c64291a5a34691a5a342a691a59342a691a58342a691a57342a69312a691a53342a691a52342a69270e1a4f342a691a4e342a692c2a691a4a342a691a49342a6927081a46342a693b3c3b3b2d6805293b691a3b342a691a3a342a693b3c3b3b2d6805270bf7de2e31363ca203061a2734f7d22e313529352806a0f8f4033235293634363cab293ba203061a0e34f7bc032a392a3cab293ba203051a023402e62a362a3cab2a2a691add2e352a2a0c642d3ca203051aec3302b32e382e3cab2a2a691ac32e352a2a0c64313da203051ad63302803235323cab2a2a691ab52e352a2a0c64220c3ea203051abf33024c220d37220d3cab2a2a691a8c2e352a2a0c6422113922113cab2a2a691a7a2e352a2a0c64291a9933691a99332a691a98332a691a97332a691a96332a69322a691a92332a691a91332a69270f1a8e332a691a8d332a692c2a691a89332a691a88332a6927091a85332a691a84332a692c2a691a80332a691a7f332a6927091a7c332a691a7b332a692c2a691a77332a691a76332a6927091a73332a693b3c3b3b2d68052e3ca203061a6633f797022f352f3cab293ba203051a5a3302e62a362a3cab2a2a691ad12d352a2a0c642d3ca203051a443302b32e382e3cab2a2a691ab72d352a2a0c64313da203051a2e3302803235323cab2a2a691aa92d352a2a0c64220c3ea203051a1733024c220d37220d3cab2a2a691a802d352a2a0c6422113922113cab2a2a691a6e2d352a2a0c64291af132691af1322a691af0322a691aef322a691aee322a69322a691aea322a691ae9322a69270f1ae6322a691ae5322a692c2a691ae1322a691ae0322a6927091add322a691adc322a692c2a691ad8322a691ad7322a6927091ad4322a691ad3322a692c2a691acf322a691ace322a6927091acb322a693b3c3b3b2d6805333da203061abe32f772013437343cab2a2a691ae02c352a2a0c64220e3ea203061aa632f73d01220f36220f3cab293ba203051a983202e62a362a3cab2a2a691aa72c352a2a0c642d3ca203051a823202b32e382e3cab2a2a691a8d2c352a2a0c64313da203051a6c3202803235323cab2a2a691a7f2c352a2a0c64220c3ea203051a5532024c220d37220d3cab2a2a691a562c352a2a0c6422113922113cab2a2a691a442c352a2a0c64291a2f32691a2f322a691a2e322a691a2d322a691a2c322a69322a691a28322a691a27322a69270f1a24322a691a23322a692c2a691a1f322a691a1e322a6927091a1b322a691a1a322a692c2a691a16322a691a15322a6927091a12322a691a11322a692c2a691a0d322a691a0c322a6927091a09322a693b3c3b3b2d680522143822143cab2a2a691abf2b352a2a0c64291aee31691aee312a691aed312a691aec312a691aeb312a69322a691ae7312a691ae6312a6927101ae3312a691ae2312a692c2a691ade312a691add312a6927091ada312a691ad9312a692c2a691ad5312a691ad4312a69270a1ad1312a691ad0312a692c2a691acc312a691acb312a69270a1ac8312a693b3c3b3b2d6805293b691abd312a691abc312a693b3c3b3b2d68052709f7d32a32363ca203061aa931f7c72a323529352807a0f8ab01333529362a372b38220e363cab293ba203061a8b31f76e01293cab2d2a691a8331352a2a0c642c3ca203061a7a31f73c012c3cab293ba203051a703102e72e362a3cab2a2a691ab72a352a2a0c642d3ca203051a5a3102b432382e3cab2a2a691a9d2a352a2a0c64313da203051a44310281220d35323cab2a2a691a8e2a352a2a0c64220c3ea203051a2c31024c221137220d3cab2a2a691a652a352a2a0c6422153922113cab2a2a691a532a352a2a0c64291a0631691a06312a691a05312a691a04312a691a03312a69322a691aff302a691afe302a69270f1afb302a691afa302a692c2a691af6302a691af5302a6927091af2302a691af1302a692c2a691aed302a691aec302a6927091ae9302a691ae8302a692c2a691ae4302a691ae3302a6927091ae0302a693b3c3b3b2d6805303cab332a691aa229351ace302a0c642a2a0c64291ac730691ac7302a691ac6302a691ac5302a691ac4302a69312a691ac0302a691abf302a69270e1abc302a691abb302a692c2a691ab7302a691ab6302a6927081ab3302a693b3c3b3b2d6805293b691aa8302a691aa7302a693b3c3b3b2d6805270bf7112933363ca203061a9430f70529333529352808a003061a8930f7f52834363ca203061a8130f7e928343529352809a0f86e01220c3529362a37220f363cab293ba203061a6430f73201293cab2c2a691ae028351a583022123a693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a403002e72e362a3cab2a2a691ad728352a2a0c642d3ca203051a2a3002b432382e3cab2a2a691abd28352a2a0c64313da203051a14300281220d35323cab2a2a691aae28352a2a0c64220c3ea203051afc2f024c221137220d3cab2a2a691a8528352a2a0c6422153922113cab2a2a691a7328352a2a0c64291ad62f691ad62f2a691ad52f2a691ad42f2a691ad32f2a69322a691acf2f2a691ace2f2a69270f1acb2f2a691aca2f2a692c2a691ac62f2a691ac52f2a6927091ac22f2a691ac12f2a692c2a691abd2f2a691abc2f2a6927091ab92f2a691ab82f2a692c2a691ab42f2a691ab32f2a6927091ab02f2a693b3c3b3b2d6805291aa72f691aa72f2a691aa62f2a69302a69270a1aa02f2a693b3c3b3b2d6805293b691a952f2a691a942f2a693b3c3b3b2d6805270af77027220c363ca203061a802ff76327220c35293540a0f86e01220d3529362a372210363cab293ba203061a632ff73201293cab2c2a691a5b27351a572f221338693b2a3d3d6b642a0c642a2a0c642c3cab293ba203051a3f2f02e72e362a3cab2a2a691a5227352a2a0c642d3ca203051a292f02b432382e3cab2a2a691a3827352a2a0c64313da203051a132f0281220d35323cab2a2a691a2927352a2a0c64220c3ea203051afb2e024c221137220d3cab2a2a691a0027352a2a0c6422153922113cab2a2a691aee26352a2a0c64291ad52e691ad52e2a691ad42e2a691ad32e2a691ad22e2a69322a691ace2e2a691acd2e2a69270f1aca2e2a691ac92e2a692c2a691ac52e2a691ac42e2a6927091ac12e2a691ac02e2a692c2a691abc2e2a691abb2e2a6927091ab82e2a691ab72e2a692c2a691ab32e2a691ab22e2a6927091aaf2e2a693b3c3b3b2d6805291aa62e691aa62e2a691aa52e2a69302a69270a1a9f2e2a693b3c3b3b2d6805293b691a942e2a691a932e2a693b3c3b3b2d6805270af7ea25220d363ca203061a7f2ef7dd25220d352935280ba0f8bc01220e3529362a372b382212363cab293ba203061a5f2ef77e01293cab2d2a691adf25351a532e2a0c642a2a0c642c3ca203061a482ef746012c3cab293ba203051a3e2e02e72e362a3cab2a2a691ac925352a2a0c642d3ca203051a282e02b432382e3cab2a2a691aaf25352a2a0c64313da203051a122e0281220d35323cab2a2a691aa025352a2a0c64220c3ea203051afa2d024c221137220d3cab2a2a691a7725352a2a0c6422153922113cab2a2a691a6525352a2a0c64291ad42d691ad42d2a691ad32d2a691ad22d2a691ad12d2a69322a691acd2d2a691acc2d2a69270f1ac92d2a691ac82d2a692c2a691ac42d2a691ac32d2a6927091ac02d2a691abf2d2a692c2a691abb2d2a691aba2d2a6927091ab72d2a691ab62d2a692c2a691ab22d2a691ab12d2a6927091aae2d2a693b3c3b3b2d6805303cab332a691ab424351a9c2d221c39693b2a3e3c6b642a0c642a2a0c64291a8b2d691a8b2d2a691a8a2d2a691a892d2a691a882d2a69312a691a842d2a691a832d2a69270e1a802d2a691a7f2d2a692c2a691a7b2d2a691a7a2d2a6927081a772d2a693b3c3b3b2d6805293b691a6c2d2a691a6b2d2a693b3c3b3b2d6805270bf71524220e363ca203061a572df70824220e352935280ca0f81302220f3529362a392212363cab293ba203061a392df7d701293cab2c2a691a0124351a2d2d22152306693b2a3e3c6b642a0c642a2a0c642c3ca203061a172df794012c3cab293ba203051a0d2d020a293cab2a3cab1a062d651a062d2a693b3c3b3b2d6805303da203061af92cf74d01303cab293ba203051aef2c020a293cab2a3cab1ae82c651ae82c2a693b3c3b3b2d6805343cab293ba203051ad82c02e9220d362a3cab2a2a691a9a23352a2a0c642d3ca203051ac12c02b52211382e3cab2a2a691a7f23352a2a0c64313da203051aaa2c0281221535323cab2a2a691a7023352a2a0c64220c3ea203051a922c024c221937220d3cab2a2a691a4723352a2a0c64221d3922113cab2a2a691a3523352a2a0c64291a6c2c691a6c2c2a691a6b2c2a691a6a2c2a691a692c2a69322a691a652c2a691a642c2a69270f1a612c2a691a602c2a692c2a691a5c2c2a691a5b2c2a6927091a582c2a691a572c2a692c2a691a532c2a691a522c2a6927091a4f2c2a691a4e2c2a692c2a691a4a2c2a691a492c2a6927091a462c2a693b3c3b3b2d6805291a3d2c691a3d2c2a691a3c2c2a691a3b2c2a691a3a2c2a69322a691a362c2a691a352c2a69270f1a322c2a691a312c2a692c2a691a2d2c2a691a2c2c2a6927091a292c2a691a282c2a692c2a691a242c2a691a232c2a6927081a202c2a693b3c3b3b2d6805293b691a152c2a691a142c2a693b3c3b3b2d6805270af7e921220f363ca203061a002cf7dc21220f352935280da0f8df0222103529362a372b382c392215363cab293ba203061ade2bf79f02293cab2e2a69221638352a2a0c642c3ca203061ac92bf76d022c3cab302a691ab921351abd2b221b39693b2a3e3c6b642a0c642a2a0c642f3da203061aa82bf72b022f3cab293ba203051a9e2b02e831362a3cab2a2a691aa521352a2a0c642d3ca203051a882b02b5220c382e3cab2a2a691a8a21352a2a0c64313da203051a712b0281221035323cab2a2a691a7b21352a2a0c64220c3ea203051a592b024c221437220d3cab2a2a691a5221352a2a0c6422183922113cab2a2a691a4021352a2a0c64291a332b691a332b2a691a322b2a691a312b2a691a302b2a69322a691a2c2b2a691a2b2b2a69270f1a282b2a691a272b2a692c2a691a232b2a691a222b2a6927091a1f2b2a691a1e2b2a692c2a691a1a2b2a691a192b2a6927091a162b2a691a152b2a692c2a691a112b2a691a102b2a6927091a0d2b2a693b3c3b3b2d6805333cab293ba203051afd2a02e9220d362a3cab2a2a691aa320352a2a0c642d3ca203051ae62a02b52211382e3cab2a2a691a8820352a2a0c64313da203051acf2a0281221535323cab2a2a691a7920352a2a0c64220c3ea203051ab72a024c221937220d3cab2a2a691a5020352a2a0c64221d3922113cab2a2a691a3e20352a2a0c64291a912a691a912a2a691a902a2a691a8f2a2a691a8e2a2a69322a691a8a2a2a691a892a2a69270f1a862a2a691a852a2a692c2a691a812a2a691a802a2a6927091a7d2a2a691a7c2a2a692c2a691a782a2a691a772a2a6927091a742a2a691a732a2a692c2a691a6f2a2a691a6e2a2a6927091a6b2a2a693b3c3b3b2d6805291a622a691a622a2a691a612a2a691a602a2a691a5f2a2a69322a691a5b2a2a691a5a2a2a69270f1a572a2a691a562a2a692c2a691a522a2a691a512a2a6927081a4e2a2a691a4d2a2a692c2a691a492a2a691a482a2a6927081a452a2a693b3c3b3b2d6805293b691a3a2a2a691a392a2a693b3c3b3b2d6805270cf7f11e2210363ca203061a252af7e41e2210352935280ea0f8240222113529362213363cab293ba203061a092af7ea012a372a3cab2a2a691aeb1e351afb292a0c642a2a0c642d3ca203061af029f7b0012e382e3cab293ba203051ae42902e62a362a3cab2a2a691ad31e352a2a0c642d3ca203051ace2902b32e382e3cab2a2a691ab91e352a2a0c64313da203051ab82902803235323cab2a2a691aab1e352a2a0c64220c3ea203051aa129024c220d37220d3cab2a2a691a821e352a2a0c6422113922113cab2a2a691a701e352a2a0c64291a7b29691a7b292a691a7a292a691a79292a691a78292a69322a691a74292a691a73292a69270f1a70292a691a6f292a692c2a691a6b292a691a6a292a6927091a67292a691a66292a692c2a691a62292a691a61292a6927091a5e292a691a5d292a692c2a691a59292a691a58292a6927091a55292a693b3c3b3b2d6805323da203051a4829028c3335333cab2a2a691ae31d352a2a0c64220d3ea203051a31290258220e39220e3cab2a2a691aa21d351a22292a0c642a2a0c6422123622123cab2a2a691a8a1d351a0e292a0c642a2a0c64291a0729691a07292a691a06292a691a05292a691a04292a69322a691a00292a691aff282a69270f1afc282a691afb282a692c2a691af7282a691af6282a6927091af3282a691af2282a692c2a691aee282a691aed282a69270a1aea282a691ae9282a692c2a691ae5282a691ae4282a6927091ae1282a693b3c3b3b2d6805293b691ad6282a691ad5282a693b3c3b3b2d68052709f7b41c2211363ca203061ac128f7a71c2211352935280fa0f8f20122123529362a372b382c392217363cab293ba203061a9f28f7b201293cab2d2a691aab1c351a93282a0c642a2a0c642c3ca203061a8828f77a012c3cab312a691a981c352a2a0c642f3da203061a7328f748012f3cab293ba203051a692802e831362a3cab2a2a691a7c1c352a2a0c642d3ca203051a532802b5220c382e3cab2a2a691a611c352a2a0c64313da203051a3c280281221035323cab2a2a691a521c352a2a0c64220c3ea203051a2428024c221437220d3cab2a2a691a291c352a2a0c6422183922113cab2a2a691a171c352a2a0c64291afe27691afe272a691afd272a691afc272a691afb272a69322a691af7272a691af6272a69270f1af3272a691af2272a692c2a691aee272a691aed272a6927091aea272a691ae9272a692c2a691ae5272a691ae4272a6927091ae1272a691ae0272a692c2a691adc272a691adb272a6927091ad8272a693b3c3b3b2d6805333cab220d2a691a651b351ac527222438693b2a3d3c6b642a0c642a2a0c64291ab427691ab4272a691ab3272a691ab2272a691ab1272a69312a691aad272a691aac272a69270e1aa9272a691aa8272a692c2a691aa4272a691aa3272a6927081aa0272a691a9f272a692c2a691a9b272a691a9a272a6927081a97272a693b3c3b3b2d6805293b691a8c272a691a8b272a693b3c3b3b2d6805270cf7a91a2212363ca203061a7727f79c1a22123529352810a0f8a40122133529362a372b382217363cab293ba203061a5727f76601293cab293ba203051a4d2702e62b362a3cab2a2a691aac1a352a2a0c642d3ca203051a372702b32f382e3cab2a2a691a921a352a2a0c64313da203051a212702803335323cab2a2a691a841a352a2a0c64220c3ea203051a0a27024c220e37220d3cab2a2a691a5b1a352a2a0c6422123922113cab2a2a691a491a352a2a0c64291ae426691ae4262a691ae3262a691ae2262a691ae1262a69322a691add262a691adc262a69270f1ad9262a691ad8262a692c2a691ad4262a691ad3262a6927091ad0262a691acf262a692c2a691acb262a691aca262a6927091ac7262a691ac6262a692c2a691ac2262a691ac1262a6927091abe262a693b3c3b3b2d68052d3ca203051ab12602442d3cab302a69221c38352a2a0c64303cab342a69221f38352a2a0c64291a9326691a93262a691a92262a691a91262a691a90262a69312a691a8c262a691a8b262a69270d1a88262a691a87262a692c2a691a83262a691a82262a6927091a7f262a693b3c3b3b2d6805293b691a74262a691a73262a693b3c3b3b2d6805270bf7ec182213363ca203061a5f26f7df1822133529352811a0f8bd0122143529362a372b382218363cab293ba203061a3f26f77f01293cab2c2a691adb18351a3326221b38693b2a3e3c6b642a0c642a2a0c642c3ca203061a1e26f73d012c3cab302a691abe18351a12262a0c642a2a0c642f3cab293ba203051a042602e831362a3cab2a2a691ab318352a2a0c642d3ca203051aee2502b5220c382e3cab2a2a691a9818352a2a0c64313da203051ad7250281221035323cab2a2a691a8918352a2a0c64220c3ea203051abf25024c221437220d3cab2a2a691a6018352a2a0c6422183922113cab2a2a691a4e18352a2a0c64291a9925691a99252a691a98252a691a97252a691a96252a69322a691a92252a691a91252a69270f1a8e252a691a8d252a692c2a691a89252a691a88252a6927091a85252a691a84252a692c2a691a80252a691a7f252a6927091a7c252a691a7b252a692c2a691a77252a691a76252a6927091a73252a693b3c3b3b2d6805291a6a25691a6a252a691a69252a691a68252a691a67252a69322a691a63252a691a62252a69270e1a5f252a691a5e252a692c2a691a5a252a691a59252a6927081a56252a693b3c3b3b2d6805293b691a4b252a691a4a252a693b3c3b3b2d6805270bf716172214363ca203061a3625f7091722143529352812a0f8e20122153529362a372b382c39221a363cab293ba203061a1425f7a201293cab2b2a691a0c25352a2a0c642c3ca203061a0325f770012c3cab312a691af716351af7242a0c642a2a0c642f3da203061aec24f738012f3cab332a691afc16352a2a0c64323cab293ba203051ad42402e9220c362a3cab2a2a691ad216352a2a0c642d3ca203051abd2402b52210382e3cab2a2a691ab716352a2a0c64313da203051aa6240281221435323cab2a2a691aa816352a2a0c64220c3ea203051a8e24024c221837220d3cab2a2a691a7f16352a2a0c64221c3922113cab2a2a691a6d16352a2a0c64291a6824691a68242a691a67242a691a66242a691a65242a69322a691a61242a691a60242a69270f1a5d242a691a5c242a692c2a691a58242a691a57242a6927091a54242a691a53242a692c2a691a4f242a691a4e242a6927091a4b242a691a4a242a692c2a691a46242a691a45242a6927091a42242a693b3c3b3b2d6805291a3924691a39242a691a38242a691a37242a691a36242a69322a691a32242a691a31242a69270e1a2e242a691a2d242a692c2a691a29242a691a28242a6927081a25242a691a24242a692c2a691a20242a691a1f242a6927081a1c242a693b3c3b3b2d6805293b691a11242a691a10242a693b3c3b3b2d6805270cf71b152215363ca203061afc23f70e1522153529352813a0f83a0222163529362218363cab293ba203061ae023f700022a352a3cab2a2a691a0e15351ad223221c38693b2a3d3d6b642a0c642a2a0c642d3ca203061abd23f7bc012e362e3cab2a2a691ae314351aaf23222038693b2a3d3d6b642a0c642a2a0c64313da203061a9a23f778013237323cab2a2a691ad014352a2a0c64220c3ea203061a8223f74301220d38220d3cab293ba203051a742302e62a362a3cab2a2a691aaf14352a2a0c642d3ca203051a5e2302b32e382e3cab2a2a691a9514352a2a0c64313da203051a482302803235323cab2a2a691a8714352a2a0c64220c3ea203051a3123024c220d37220d3cab2a2a691a5e14352a2a0c6422113922113cab2a2a691a4c14352a2a0c64291a0b23691a0b232a691a0a232a691a09232a691a08232a69322a691a04232a691a03232a69270f1a00232a691aff222a692c2a691afb222a691afa222a6927091af7222a691af6222a692c2a691af2222a691af1222a6927091aee222a691aed222a692c2a691ae9222a691ae8222a6927091ae5222a693b3c3b3b2d680522123922123cab2a2a691aa313351acf222a0c642a2a0c64291ac822691ac8222a691ac7222a691ac6222a691ac5222a69322a691ac1222a691ac0222a6927101abd222a691abc222a692c2a691ab8222a691ab7222a6927091ab4222a691ab3222a692c2a691aaf222a691aae222a6927091aab222a691aaa222a692c2a691aa6222a691aa5222a6927091aa2222a693b3c3b3b2d6805293b691a97222a691a96222a693b3c3b3b2d68052709f7c8122216363ca203061a8222f7bb1222163529352814a0f82a0222173529362219363cab293ba203061a6622f7f0012a352a3cab2a2a691abc12351a58222a0c642a2a0c642d3ca203061a4d22f7b6012e362e3cab293ba203051a412202e62a362a3cab2a2a691ab012352a2a0c642d3ca203051a2b2202b32e382e3cab2a2a691a9612352a2a0c64313da203051a152202803235323cab2a2a691a8812352a2a0c64220c3ea203051afe21024c220d37220d3cab2a2a691a5f12352a2a0c6422113922113cab2a2a691a4d12352a2a0c64291ad821691ad8212a691ad7212a691ad6212a691ad5212a69322a691ad1212a691ad0212a69270f1acd212a691acc212a692c2a691ac8212a691ac7212a6927091ac4212a691ac3212a692c2a691abf212a691abe212a6927091abb212a691aba212a692c2a691ab6212a691ab5212a6927091ab2212a693b3c3b3b2d6805323da203051aa52102923338333cab2a2a691a9c11351a98212a0c642a2a0c64220d3ea203051a8c210258220e39220e3cab2a2a691a7911351a7d212a0c642a2a0c6422123722123cab2a2a691a6111351a69212a0c642a2a0c64291a6221691a62212a691a61212a691a60212a691a5f212a69322a691a5b212a691a5a212a69270f1a57212a691a56212a692c2a691a52212a691a51212a6927091a4e212a691a4d212a692c2a691a49212a691a48212a69270a1a45212a691a44212a692c2a691a40212a691a3f212a6927091a3c212a693b3c3b3b2d6805293b691a31212a691a30212a693b3c3b3b2d68052709f785102217363ca203061a1c21f7781022173529352815a0f8a60122183529362a372b38221c363cab293ba203061afc20f76801293cab2d2a69221d38352a2a0c642c3ca203061ae720f736012c3cab293ba203051add2002e72e362a3cab2a2a691a7410352a2a0c642d3ca203051ac72002b432382e3cab2a2a691a5a10352a2a0c64313da203051ab1200281220d35323cab2a2a691a4b10352a2a0c64220c3ea203051a9920024c221137220d3cab2a2a691a2210352a2a0c6422153922113cab2a2a691a1010352a2a0c64291a7320691a73202a691a72202a691a71202a691a70202a69322a691a6c202a691a6b202a69270f1a68202a691a67202a692c2a691a63202a691a62202a6927091a5f202a691a5e202a692c2a691a5a202a691a59202a6927091a56202a691a55202a692c2a691a51202a691a50202a6927091a4d202a693b3c3b3b2d6805303cab332a69222438352a2a0c64291a3620691a36202a691a35202a691a34202a691a33202a69312a691a2f202a691a2e202a69270e1a2b202a691a2a202a692c2a691a26202a691a25202a6927081a22202a693b3c3b3b2d6805293b691a17202a691a16202a693b3c3b3b2d6805270bf7c60e2218363ca203061a0220f7b90e22183529352816a0f85e0122193529362a37221c363cab293ba203061ae41ff72201293cab2c2a69221d38352a2a0c642c3cab293ba203051acc1f02e72e362a3cab2a2a691ac30e352a2a0c642d3ca203051ab61f02b432382e3cab2a2a691aa90e352a2a0c64313da203051aa01f0281220d35323cab2a2a691a9a0e352a2a0c64220c3ea203051a881f024c221137220d3cab2a2a691a710e352a2a0c6422153922113cab2a2a691a5f0e352a2a0c64291a621f691a621f2a691a611f2a691a601f2a691a5f1f2a69322a691a5b1f2a691a5a1f2a69270f1a571f2a691a561f2a692c2a691a521f2a691a511f2a6927091a4e1f2a691a4d1f2a692c2a691a491f2a691a481f2a6927091a451f2a691a441f2a692c2a691a401f2a691a3f1f2a6927091a3c1f2a693b3c3b3b2d6805291a331f691a331f2a691a321f2a69302a69270a1a2c1f2a693b3c3b3b2d6805293b691a211f2a691a201f2a693b3c3b3b2d6805270af74f0d2219363ca203061a0c1ff7420d22193529352817a0f85e01221a3529362a37221d363cab293ba203061aee1ef72201293cab2c2a69221e38352a2a0c642c3cab293ba203051ad61e02e72e362a3cab2a2a691a4d0d352a2a0c642d3ca203051ac01e02b432382e3cab2a2a691a330d352a2a0c64313da203051aaa1e0281220d35323cab2a2a691a240d352a2a0c64220c3ea203051a921e024c221137220d3cab2a2a691afb0c352a2a0c6422153922113cab2a2a691ae90c352a2a0c64291a6c1e691a6c1e2a691a6b1e2a691a6a1e2a691a691e2a69322a691a651e2a691a641e2a69270f1a611e2a691a601e2a692c2a691a5c1e2a691a5b1e2a6927091a581e2a691a571e2a692c2a691a531e2a691a521e2a6927091a4f1e2a691a4e1e2a692c2a691a4a1e2a691a491e2a6927091a461e2a693b3c3b3b2d6805291a3d1e691a3d1e2a691a3c1e2a69302a69270a1a361e2a693b3c3b3b2d6805293b691a2b1e2a691a2a1e2a693b3c3b3b2d6805270af7d80b221a363ca203061a161ef7cb0b221a3529352818a0f8db01221b3529362a372b382c392220363cab293ba203061af41df79b01293cab2c2a691aec1d352a2a0c642c3ca203061ae31df769012c3cab293ba203051ad91d02e72e362a3cab2a2a691ac80b352a2a0c642d3ca203051ac31d02b432382e3cab2a2a691aae0b352a2a0c64313da203051aad1d0281220d35323cab2a2a691a9f0b352a2a0c64220c3ea203051a951d024c221137220d3cab2a2a691a760b352a2a0c6422153922113cab2a2a691a640b352a2a0c64291a6f1d691a6f1d2a691a6e1d2a691a6d1d2a691a6c1d2a69322a691a681d2a691a671d2a69270f1a641d2a691a631d2a692c2a691a5f1d2a691a5e1d2a6927091a5b1d2a691a5a1d2a692c2a691a561d2a691a551d2a6927091a521d2a691a511d2a692c2a691a4d1d2a691a4c1d2a6927091a491d2a693b3c3b3b2d6805303da203051a3c1d0246303cab220c2a691ad80a352a2a0c64333cab220e2a691ab91c352a2a0c64291a1c1d691a1c1d2a691a1b1d2a691a1a1d2a691a191d2a69312a691a151d2a691a141d2a69270d1a111d2a691a101d2a692c2a691a0c1d2a691a0b1d2a6927091a081d2a691a071d2a692c2a691a031d2a691a021d2a6927081aff1c2a693b3c3b3b2d6805293b691af41c2a691af31c2a693b3c3b3b2d6805270cf7e409221b363ca203061adf1cf7d709221b3529352819a0f8bd01221c3529362a372b382220363cab293ba203061abf1cf77f01293cab2c2a691ae709351ab31c2a0c642a2a0c642c3ca203061aa81cf747012c3cab302a691abc09351a9c1c222638693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051a841c02e831362a3cab2a2a691ab309352a2a0c642d3ca203051a6e1c02b5220c382e3cab2a2a691a9809352a2a0c64313da203051a571c0281221035323cab2a2a691a8909352a2a0c64220c3ea203051a3f1c024c221437220d3cab2a2a691a6009352a2a0c6422183922113cab2a2a691a4e09352a2a0c64291a191c691a191c2a691a181c2a691a171c2a691a161c2a69322a691a121c2a691a111c2a69270f1a0e1c2a691a0d1c2a692c2a691a091c2a691a081c2a6927091a051c2a691a041c2a692c2a691a001c2a691aff1b2a6927091afc1b2a691afb1b2a692c2a691af71b2a691af61b2a6927091af31b2a693b3c3b3b2d6805291aea1b691aea1b2a691ae91b2a691ae81b2a691ae71b2a69322a691ae31b2a691ae21b2a69270e1adf1b2a691ade1b2a692c2a691ada1b2a691ad91b2a6927081ad61b2a693b3c3b3b2d6805293b691acb1b2a691aca1b2a693b3c3b3b2d6805270bf70e08221c363ca203061ab61bf70108221c352935281aa0f86e01221d3529362a372220363cab293ba203061a981bf73201293cab2c2a691a0808351a8c1b222336693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a741b02e72e362a3cab2a2a691aff07352a2a0c642d3ca203051a5e1b02b432382e3cab2a2a691ae507352a2a0c64313da203051a481b0281220d35323cab2a2a691ad607352a2a0c64220c3ea203051a301b024c221137220d3cab2a2a691aad07352a2a0c6422153922113cab2a2a691a9b07352a2a0c64291a0a1b691a0a1b2a691a091b2a691a081b2a691a071b2a69322a691a031b2a691a021b2a69270f1aff1a2a691afe1a2a692c2a691afa1a2a691af91a2a6927091af61a2a691af51a2a692c2a691af11a2a691af01a2a6927091aed1a2a691aec1a2a692c2a691ae81a2a691ae71a2a6927091ae41a2a693b3c3b3b2d6805291adb1a691adb1a2a691ada1a2a69302a69270a1ad41a2a693b3c3b3b2d6805293b691ac91a2a691ac81a2a693b3c3b3b2d6805270af78706221d363ca203061ab41af77a06221d352935281ba0f81f01221e3529362220363cab293ba203051a981a02e62a362a3cab2a2a691aa706352a2a0c642d3ca203051a821a02b32e382e3cab2a2a691a8d06352a2a0c64313da203051a6c1a02803235323cab2a2a691a7f06352a2a0c64220c3ea203051a551a024c220d37220d3cab2a2a691a5606352a2a0c6422113922113cab2a2a691a4406352a2a0c64291a2f1a691a2f1a2a691a2e1a2a691a2d1a2a691a2c1a2a69322a691a281a2a691a271a2a69270f1a241a2a691a231a2a692c2a691a1f1a2a691a1e1a2a6927091a1b1a2a691a1a1a2a692c2a691a161a2a691a151a2a6927091a121a2a691a111a2a692c2a691a0d1a2a691a0c1a2a6927091a091a2a693b3c3b3b2d6805293b691afe192a691afd192a693b3c3b3b2d68052709f74f05221e363ca203061ae919f74205221e352935281ca0f81302221f3529362a392222363cab293ba203061acb19f7d701293cab2c2a691a4b05351abf1922252307693b2a3e3c6b642a0c642a2a0c642c3ca203061aa919f794012c3cab293ba203051a9f19020a293cab2a3cab1a9819651a98192a693b3c3b3b2d6805303da203061a8b19f74d01303cab293ba203051a8119020a293cab2a3cab1a7a19651a7a192a693b3c3b3b2d6805343cab293ba203051a6a1902e9220d362a3cab2a2a691ae404352a2a0c642d3ca203051a531902b52211382e3cab2a2a691ac904352a2a0c64313da203051a3c190281221535323cab2a2a691aba04352a2a0c64220c3ea203051a2419024c221937220d3cab2a2a691a9104352a2a0c64221d3922113cab2a2a691a7f04352a2a0c64291afe18691afe182a691afd182a691afc182a691afb182a69322a691af7182a691af6182a69270f1af3182a691af2182a692c2a691aee182a691aed182a6927091aea182a691ae9182a692c2a691ae5182a691ae4182a6927091ae1182a691ae0182a692c2a691adc182a691adb182a6927091ad8182a693b3c3b3b2d6805291acf18691acf182a691ace182a691acd182a691acc182a69322a691ac8182a691ac7182a69270f1ac4182a691ac3182a692c2a691abf182a691abe182a6927091abb182a691aba182a692c2a691ab6182a691ab5182a6927081ab2182a693b3c3b3b2d6805293b691aa7182a691aa6182a693b3c3b3b2d6805270af72303221f363ca203061a9218f71603221f352935281da0f8e20122203529362a372b382c392225363cab293ba203061a7018f7a201293cab2e2a69222638352a2a0c642c3ca203061a5b18f770012c3cab2e2a691a0f03351a4f182a0c642a2a0c642f3da203061a4418f738012f3cab293ba203051a3a1802e832362a3cab2a2a691af902352a2a0c642d3ca203051a241802b5220d382e3cab2a2a691ade02352a2a0c64313da203051a0d180281221135323cab2a2a691acf02352a2a0c64220c3ea203051af517024c221537220d3cab2a2a691aa602352a2a0c6422193922113cab2a2a691a9402352a2a0c64291acf17691acf172a691ace172a691acd172a691acc172a69322a691ac8172a691ac7172a69270f1ac4172a691ac3172a692c2a691abf172a691abe172a6927091abb172a691aba172a692c2a691ab6172a691ab5172a6927091ab2172a691ab1172a692c2a691aad172a691aac172a6927091aa9172a693b3c3b3b2d6805333cab220e2a69223038352a2a0c64291a9117691a91172a691a90172a691a8f172a691a8e172a69312a691a8a172a691a89172a69270e1a86172a691a85172a692c2a691a81172a691a80172a6927081a7d172a691a7c172a692c2a691a78172a691a77172a6927081a74172a693b3c3b3b2d6805293b691a69172a691a68172a693b3c3b3b2d6805270cf728012220363ca203061a5417f71b0122203529362222363cab293ba203051a431702e52a362a3cab2a2a691a5601352a2a0c642d3ca203051a2d1702b22e382e3cab2a2a691a3c01352a2a0c64313da203051a1717027f3235323cab2a2a691a2e01352a2a0c64220c3ea203051a0017024b220d37220d3cab2a2a691a0501352a2a0c6422113922113cab2a2a69faf4352a2a0c64291adb16691adb162a691ada162a691ad9162a691ad8162a69322a691ad4162a691ad3162a69270f1ad0162a691acf162a692c2a691acb162a691aca162a6927091ac7162a691ac6162a692c2a691ac2162a691ac1162a6927091abe162a691abd162a692c2a691ab9162a691ab8162a6927091ab5162a693b3c3b3b2d6805293b691aaa162a691aa9162a693b3c3b3b2d6805270964646464646464646464646464646464646464646464646464646464646442000000|@11723,1,@2443,@6303,@8198,@118,@17379,@8198,@116,@11730,@8198,@115,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@17385,@17386,@9320,@5091,@11736,@5091,@9324,@5091,@11738,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11740,@5091,@9324,@5091,@11742,@5091,@9324,@5091,@11744,@9327,@5091,@11746,@6303,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@11754,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11756,@9327,@5091,@11758,@6303,@8198,@8198,@11765,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11767,@5091,@9324,@5091,@11769,@5091,@9324,@5091,@11636,@5091,@9324,@5091,@9721,@9327,@5091,@11771,@6303,@8198,@11778,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@17389,@9320,@5091,@9968,@5091,@9324,@5091,@11781,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11783,@5091,@9324,@5091,@11636,@9327,@5091,@11785,@6303,@8198,@11792,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@11798,@9320,@5091,@11804,@5091,@9324,@5091,@11806,@5091,@9324,@5091,@9968,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11808,@5091,@9324,@5091,@11810,@9327,@5091,@11812,@6303,@8198,@152,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9680,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11816,@9327,@5091,@11818,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@11825,@5091,@9324,@5091,@11827,@5091,@9324,@5091,@11829,@5091,@9324,@5091,@11831,@5091,@9324,@5091,@9606,@9327,@5091,@11833,@6303,@8198,@159,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@11863,@9320,@5091,@11865,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11867,@9327,@5091,@11869,@6303,@11876,@6303,@5086,@17398,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@11884,@6303,@5086,@17399,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@11897,@6303,@8198,@11904,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@17404,@9320,@5091,@11906,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11636,@9327,@5091,@11908,@6303,@8198,@17405,@8198,@8198,@11916,@9327,@8198,@8198,@11916,@9327,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11921,@5091,@9324,@5091,@11923,@5091,@9324,@5091,@11925,@9327,@5091,@11927,@6303,@8198,@8198,@17406,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11783,@5091,@9324,@5091,@11934,@5091,@9324,@5091,@10223,@9327,@5091,@11936,@6303,@8198,@11943,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@11945,@11948,@9320,@5091,@9680,@5091,@9324,@5091,@11950,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11636,@9327,@5091,@11952,@6303,@8198,@11959,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@17411,@9320,@5091,@9732,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11612,@5091,@9324,@5091,@11636,@9327,@5091,@11967,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@9320,@5091,@11974,@5091,@9324,@5091,@11976,@5091,@9324,@5091,@9606,@9327,@5091,@11978,@6303,@8198,@17413,@8198,@11985,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11636,@5091,@9324,@5091,@11987,@9327,@5091,@11989,@6303,@8198,@156,@8198,@11996,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11998,@5091,@9324,@5091,@11636,@5091,@9324,@5091,@12000,@9327,@5091,@12002,@6303,@8198,@17416,@8198,@17420,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@12021,@9320,@5091,@12025,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@12027,@5091,@9324,@5091,@12029,@5091,@9324,@5091,@10252,@9327,@5091,@12031,@6303,@8198,@12038,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@12141,@8198,@12145,@12149,@9320,@5091,@12153,@5091,@9324,@5091,@12155,@5091,@9324,@5091,@12157,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@12029,@9327,@5091,@12159,@6303,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@11754,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11756,@9327,@5091,@12166,@6303,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@12173,@6303,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@12180,@6303,@8198,@155,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@9320,@5091,@9730,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@12184,@9327,@5091,@12186,@6303,@8198,@12193,@8198,@17461,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@10403,@5091,@9324,@5091,@11636,@9327,@5091,@12195,@6303,@5086,@17462,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@12202,@6303,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5091,@12209,@6303,@8198,@17463,@8198,@8198,@11916,@9327,@8198,@8198,@11916,@9327,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11921,@5091,@9324,@5091,@11923,@5091,@9324,@5091,@11925,@9327,@5091,@12217,@6303,@8198,@8198,@12224,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9968,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@12230,@5091,@9324,@5091,@10252,@9327,@5091,@12232,@6303,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5091,@11722| 17379:D10,84|fb0e2b363ba20304fa5602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa3b35fa3c2a0c642a2a0c6429fa3669fa372a69fa372a69302a69270bfa322a693b3c3b3b2d68056542000000|@4036,1,@2444,@5086,@116,@11724,@6393,@5091,@9324,@6395| 17380:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2445,@9,@11726| 17381:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2446,@116,@11728| 17382:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2447,@115| 17383:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2448,@118,@11732| 17384:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2449,@115| 17385:D3,12|fb052936352c2a2d7d040000|@11734,1,@2450| 17386:D3,12|fb052936352c2a2d7d040000|@11735,1,@2451| 17387:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2452,@155| 17388:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2453,@155| 17389:D3,12|fb052936352c2a2d7d040000|@11780,1,@2454| 17390:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2455,@9,@11794| 17391:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2456,@116,@11796| 17392:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2457,@115| 17393:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2458,@9,@11800| 17394:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2459,@116,@11802| 17395:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2460,@115| 17396:D18,324|fb112b363ca203061a4501f732012b3529353ba003872c3529362e363cab2a2a691a3001352a2a0c6429353ba003572939299291033329369291032a2935353ea0031f293536291a0e01a003033c020f291a0801a003033c0205291a0201a06402013b9102013b02013b03162afaf569faf62a69faf62a693b3e3c3b2d68056602012a64020129293b69fae42a69fae42a693b3c3b3b2d6805270902a22c363ca20304fad302982c3529353ca003832d3529362f363cab2a2a69fa98352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa77a003033c020d29fa72a003033c020429fa6da06402013b9102013b02013b03162afa6069fa612a69fa612a693b3e3c3b2d68056602012a64020129293b69fa5b2a69fa5b2a693b3c3b3b2d68052709020c2d363ca20304fa4a0202fa4a646442000000|@11842,1,@2461,@6303,@75,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@11843,@6303,@5091,@11850,@6303,@11841| 17397:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@2462,@7| 17398:D3,12|fb052936352c2a2d7d040000|@11883,1,@2463| 17399:D10,84|fb0e2b363ba20304fa5602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa3b35fa3c2a0c642a2a0c6429fa3669fa372a69fa372a69302a69270bfa322a693b3c3b3b2d68056542000000|@4036,1,@2464,@5086,@116,@11891,@6393,@5091,@9324,@6395| 17400:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2465,@9,@11893| 17401:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2466,@116,@11895| 17402:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2467,@115| 17403:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2468,@155| 17404:D3,12|fb052936352c2a2d7d040000|@11780,1,@2469| 17405:D3,12|fb052936352c2a2d7d040000|@11915,1,@2470| 17406:D3,12|fb052936352c2a2d7d040000|@11780,1,@2471| 17407:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2472,@155| 17408:D4,8|fb02fa1042000000|@11947,1,@2473,@10650| 17409:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2474,@156| 17410:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2475,@155| 17411:D79,764|fb2d2b363ba203061afd02f7df022b35362c363cab2a2a691af102351af1022a0c642a2a0c642f363ca203061ae502f7a2022f353930363cab293ba203051ad70202e62a362a3cab2a2a691ace02352a2a0c642d3ca203051ac50202b32e382e3cab2a2a691ab402352a2a0c64313da203051aaf0202803235323cab2a2a691aa602352a2a0c64220c3ea203051a9c02024c220d37220d3cab2a2a691a7d02352a2a0c6422113922113cab2a2a691a6b02352a2a0c64291a7602691a76022a691a75022a691a74022a691a73022a69322a691a6f022a691a6e022a69270f1a6b022a691a6a022a692c2a691a66022a691a65022a6927091a62022a691a61022a692c2a691a5d022a691a5c022a6927091a59022a691a58022a692c2a691a54022a691a53022a6927091a50022a693b3c3b3b2d680534363da203061a4202f77a01343535220c363cab2a2a691ad901352a2a0c64220f363ea203061a2602f74101220f35372210363cab293ba203051a160202e62a362a3cab2a2a691a9d01352a2a0c642d3ca203051a000202b32e382e3cab2a2a691a8301352a2a0c64313da203051aea0102803235323cab2a2a691a7501352a2a0c64220c3ea203051ad301024c220d37220d3cab2a2a691a4c01352a2a0c6422113922113cab2a2a691a3a01352a2a0c64291aad01691aad012a691aac012a691aab012a691aaa012a69322a691aa6012a691aa5012a69270f1aa2012a691aa1012a692c2a691a9d012a691a9c012a6927091a99012a691a98012a692c2a691a94012a691a93012a6927091a90012a691a8f012a692c2a691a8b012a691a8a012a6927091a87012a693b3c3b3b2d6805221435382215363cab2a2a69221536352a2a0c64291a6a01691a6a012a691a69012a691a68012a691a67012a69322a691a63012a691a62012a6927101a5f012a691a5e012a692c2a691a5a012a691a59012a6927091a56012a691a55012a692c2a691a51012a691a50012a69270a1a4d012a691a4c012a692c2a691a48012a691a47012a6927091a44012a693b3c3b3b2d6805654200|@4036,1,@2476,@8198,@116,@11962,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@11964,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@11961,@5091,@9324,@5091,@11636,@9327| 17412:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2477,@155| 17413:D3,12|fb052936352c2a2d7d040000|@11723,1,@2478| 17414:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2479,@155| 17415:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2480,@155| 17416:D10,84|fb0e2b363ba20304fa5602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa3b35fa3c2a0c642a2a0c6429fa3669fa372a69fa372a69302a69270bfa322a693b3c3b3b2d68056542000000|@4036,1,@2481,@5086,@116,@12009,@6393,@5091,@9324,@6395| 17417:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2482,@9,@12011| 17418:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2483,@116,@12013| 17419:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2484,@115| 17420:D10,84|fb0e2b363ba20304fa5602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa3b35fa3c2a0c642a2a0c6429fa3669fa372a69fa372a69302a69270bfa322a693b3c3b3b2d68056542000000|@4036,1,@2485,@5086,@116,@12015,@6393,@5091,@9324,@6395| 17421:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2486,@9,@12017| 17422:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2487,@116,@12019| 17423:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2488,@115| 17424:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2489,@118,@12023| 17425:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2490,@156| 17426:D45,384|fb202b363ba203061a8101f764012b35372c363cab293ba203051a730102e02a362a3cab2a2a691a6a01352a2a0c642d3ca203051a610102b12e382e3cab2a2a691a5001352a2a0c64313da203051a4b0102803235323cab2a2a691a4201352a2a0c64220c3ea203051a3801024c220d37220d3cab2a2a691a1901352a2a0c6422113922113cab2a2a691a0701352a2a0c64291a1201691a12012a691a11012a691a10012a691a0f012a69322a691a0b012a691a0a012a69270f1a07012a691a06012a692c2a691a02012a691a01012a6927091afe002a691afd002a692c2a69fafa2a69fafa2a692709faf82a69faf82a692c2a69faf52a69faf52a692709faf32a693b3c3b3b2d680530363ca20304fae6024930353531363cab2a2a69fa80352a2a0c64343536220c363cab2a2a69faca35facb2a0c642a2a0c6429fac569fac62a69fac62a69fac62a69fac62a69322a69fac32a69fac32a69270ffac12a69fac12a692c2a69fabe2a69fabe2a69270afabc2a693b3c3b3b2d6805654200|@4036,1,@2491,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@116,@12040,@9320,@5091,@9680,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9606,@9327| 17427:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2492,@9,@12042| 17428:D4,12|fb05fa14352c2a2d7d040000|@12044,1,@2493,@160| 17429:D28,232|fb1c2b363ca20304faea02d82b352c363cab293ba20304fadf02aa2a362a3cab2a2a692e38352a2a0c642d3ca20304facb027d2e382e3cab2a2a69fac335fac43437693b2a3e3c6b642a0c642a2a0c64313da20304fab102423235323cab2a2a69faa9352a2a0c64220d37220d3cab2a2a69221136352a2a0c6429fa9369fa942a69fa942a69fa942a69fa942a69322a69fa912a69fa912a69270ffa8f2a69fa8f2a692c2a69fa8c2a69fa8c2a692709fa8a2a69fa8a2a692c2a69fa872a69fa872a692709fa852a693b3c3b3b2d6805293b69fa7b2a69fa7b2a693b3c3b3b2d6805270842000000|@12044,1,@2494,@6303,@8198,@8198,@118,@17430,@8198,@7,@9320,@5091,@12047,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@9612,@9327,@5091,@12046| 17430:D3,12|fb052936352c2a2d7d040000|@9753,1,@2495| 17431:D37,316|fb1c2b363ca203061a3d01f72c012b352c363cab293ba203051a300102fd2a372a3cab2a2a691a2701351a27013037693b2a3e3c6b642a0c642a2a0c642d3ca203051a130102bf2e3a2e3cab2a2a691a0a01352a2a0c64313da203051a010102903238323cab2a2a69fae535faf6220f36693b2a3e3c6b642a0c642a2a0c64220c3ea20304fae10253220d36220d3cab2a2a69fad7352a2a0c6422103fa20304face022322113522113cab2a2a69fac4352a2a0c6422143cab2afabc69fabd2a69fabd2a692707fabb2a69fabb2a692c2a69fab82a69fab82a692709fab62a69fab62a692c2a69fab32a69fab32a692709fab12a69fab12a692c2a69faae2a69faae2a692709faac2a69faac2a692c2a69faa92a69faa92a692709faa72a693b3c3b3b2d6805293b69fa9d2a69fa9d2a693b3c3b3b2d680527084200|@12056,1,@2496,@6303,@8198,@118,@17432,@8198,@75,@8198,@17433,@8198,@7,@8198,@162,@12125,@5091,@12130,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@12132,@5091,@9324,@5091,@12134,@9327,@5091,@12055| 17432:D3,12|fb052936352c2a2d7d040000|@9605,1,@2497| 17433:D3,12|fb052936352c2a2d7d040000|@9753,1,@2498| 17434:D14,148|fb0e2b363ca20304fa9602842b352c363cab2a2a69fa8d35fa8e2a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa6ba003033c020d29fa66a003033c020429fa61a06402013b9102013b02013b03162afa5469fa552a69fa552a693b3e3c3b2d68056602012a64020129293b69fa432a69fa432a693b3c3b3b2d6805270842000000|@12059,1,@2499,@6303,@163,@12113,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@12058| 17435:D4,12|fb04fa142c2b366a42000000|@12061,1,@2500,@17436| 17436:D34,320|fb192b363ca203061a4101f730012b3529353ba003692c3529372e363cab293ba203051a2a010233293cab2b2a691a2301351a2301313632376a3b2a3e3c6b642a0c642a2a0c642c3cab2a1a0e01691a0e012a691a0d012a6927061a0a012a693b3c3b3b2d6805293b691aff002a691afe002a693b3c3b3b2d6805270902be2c363ca20304faed02b42c3529362a372b3830363cab293ba20304fadc0280293cab2b2a69fad635fad7333634376a3b2a3d3c6b642a0c642a2a0c642c3ca20304fac202452c3cab302a69fab035fab92a0c642a2a0c642f3cab322a69fa9e35faab2a0c642a2a0c6429faa569faa62a69faa62a69faa62a69faa62a69312a69faa32a69faa32a69270dfaa12a69faa12a692c2a69fa9e2a69fa9e2a692708fa9c2a693b3c3b3b2d6805293b69fa922a69fa922a693b3c3b3b2d6805270b644200|@12063,1,@2501,@6303,@8198,@165,@17441,@12069,@5091,@12074,@9327,@5091,@12076,@6303,@8198,@116,@17442,@8198,@12088,@12090,@9320,@5091,@12092,@5091,@9324,@5091,@12072,@5091,@9324,@5091,@12074,@9327,@5091,@12062| 17437:D4,8|fb03fa102c694200|@4042,1,@2502,@17438| 17438:D5,24|fb092b362a36362d3529fa182c692dfa17317b0506000000|@9644,1,@2503,@17439,@12065| 17439:D3,12|fb042c2c692a362c7d040000|@12066,1,@2504| 17440:D9,172|fb182d93293cab2d3ba40304faaa028e2d2aabfaa72a6931932a2a293ba003042a350276293cb22a3cb22b3cb2220e2a3bdb2e352f360b02002c3ba0030d2c3caa2afa7c452a465050023a2c3ba2030c2c3caa2a3b452a46505002292c3cab2f2a22160c322211a091030bfa573069fa572a696402012f2a2a69303caa2e2b452a4650260529352a362a2a6929220c250e250e260c1e7a3b270c65292704fa2c2a693b3e3b3b2d6805270444|@12067,1,@2505,@10365,@10368,@10365,@4383,@10370,@10363| 17441:D3,28|fb092937352a36362b36372c36383b2c2c2c6b662a0c642c2a2d7d04|@12068,1,@2506| 17442:D5,28|fb07fa2435fa252b362c376a3b2a3e3c6b642a0c642c2a2d7d040000|@12083,1,@2507,@166,@17443| 17443:D3,28|fb092937352a36362b36372c36383b2c2c2c6b662a0c642c2a2d7d04|@12068,1,@2512| 17444:D4,8|fb03fa102c694200|@4042,1,@2508,@17445| 17445:D5,24|fb092b362a36362d3529fa182c692dfa17317b0506000000|@9644,1,@2509,@17446,@12085| 17446:D3,12|fb042c2c692a362c7d040000|@12086,1,@2510| 17447:D9,172|fb182d93293cab2d3ba40304faaa028e2d2aabfaa72a6931932a2a293ba003042a350276293cb22a3cb22b3cb2220e2a3bdb2e352f360b02002c3ba0030d2c3caa2afa7c452a465050023a2c3ba2030c2c3caa2a3b452a46505002292c3cab2f2a22160c322211a091030bfa573069fa572a696402012f2a2a69303caa2e2b452a4650260529352a362a2a6929220c250e250e260c1e7a3b270c65292704fa2c2a693b3e3b3b2d6805270444|@12087,1,@2511,@10365,@10368,@10365,@4383,@10370,@10363| 17448:D4,8|fb02fa1042000000|@11947,1,@2513,@10650| 17449:D4,12|fb05fa14352c2a2d7d040000|@10637,1,@2514,@75| 17450:D4,8|fb03fa102c694200|@12101,1,@2515,@17451| 17451:D14,128|fb112b363ca20304fa8202712b35293ba00304fa7b02652c363ca20304fa75025b2c3529352a362f363cab293ba20304fa660229293cab2c2a69fa60352a2a0c642c3cab2e2a69643236360c29fa5169fa522a69fa522a692d2a692707fa4d2a693b3c3b3b2d6805293b69fa432a69fa432a693b3c3b3b2d6805270a64420000|@12068,1,@2516,@6303,@12103,@6303,@5086,@7,@6393,@5091,@9324,@6395,@5091,@12102| 17452:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2517,@118,@12115| 17453:D4,12|fb05fa14352c2a2d7d040000|@12117,1,@2518,@136| 17454:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2519,@118,@12143| 17455:D4,12|fb05fa14352c2a2d7d040000|@12044,1,@2520,@160| 17456:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2521,@118,@12147| 17457:D4,12|fb05fa14352c2a2d7d040000|@11034,1,@2522,@148| 17458:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2523,@118,@12151| 17459:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2524,@156| 17460:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2525,@155| 17461:D3,12|fb052936352c2a2d7d040000|@11723,1,@2526| 17462:D3,12|fb052936352c2a2d7d040000|@11735,1,@2527| 17463:D3,12|fb052936352c2a2d7d040000|@12216,1,@2528| 17464:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2529,@9,@12226| 17465:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2530,@116,@12228| 17466:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2531,@115| 17467:D97,912|fb332b363ca203061a9103f77f032b352c363cab293ba203061a8403f74c032a372a3cab2a2a691a7a03351a7a032a0c642a2a0c642d3ca203061a6f03f712032e382e3cab293ba203051a630302e62a362a3cab2a2a691a5a03352a2a0c642d3ca203051a510302b32e382e3cab2a2a691a4003352a2a0c64313da203051a3b0302803235323cab2a2a691a3203352a2a0c64220c3ea203051a2803024c220d37220d3cab2a2a691a0903352a2a0c6422113922113cab2a2a691af702352a2a0c64291a0203691a02032a691a01032a691a00032a691aff022a69322a691afb022a691afa022a69270f1af7022a691af6022a692c2a691af2022a691af1022a6927091aee022a691aed022a692c2a691ae9022a691ae8022a6927091ae5022a691ae4022a692c2a691ae0022a691adf022a6927091adc022a693b3c3b3b2d6805323da203061acf02f7ed01333a333cab2a2a691ac502352a2a0c64220d3ea203061abb02f7b801220e35220e3cab2a2a691a4b02352a2a0c6422113fa203061aa102f7810122123922123cab293ba203051a930202e62a362a3cab2a2a691a1202352a2a0c642d3ca203051a7d0202b32e382e3cab2a2a691af801352a2a0c64313da203051a670202803235323cab2a2a691aea01352a2a0c64220c3ea203051a5002024c220d37220d3cab2a2a691ac101352a2a0c6422113922113cab2a2a691aaf01352a2a0c64291a2a02691a2a022a691a29022a691a28022a691a27022a69322a691a23022a691a22022a69270f1a1f022a691a1e022a692c2a691a1a022a691a19022a6927091a16022a691a15022a692c2a691a11022a691a10022a6927091a0d022a691a0c022a692c2a691a08022a691a07022a6927091a04022a693b3c3b3b2d680522162805a203051af501025922173622173cab2a2a691aea01351aea012a0c642a2a0c64221b2306221b3cab2a2a691ad901351ad9012a0c642a2a0c64291ad201691ad2012a691ad1012a691ad0012a691acf012a69322a691acb012a691aca012a69270f1ac7012a691ac6012a692c2a691ac2012a691ac1012a69270a1abe012a691abd012a692c2a691ab9012a691ab8012a6927091ab5012a691ab4012a692c2a691ab0012a691aaf012a6927091aac012a691aab012a692c2a691aa7012a691aa6012a69270a1aa3012a691aa2012a692c2a691a9e012a691a9d012a6927091a9a012a693b3c3b3b2d6805293b691a8f012a691a8e012a693b3c3b3b2d68052708420000|@11735,1,@2532,@6303,@8198,@9,@12247,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@115,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@116,@12249,@118,@12251,@9320,@5091,@9793,@5091,@9324,@5091,@12254,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12256,@5091,@9324,@5091,@12258,@5091,@9324,@5091,@12260,@9327,@5091,@12246| 17468:D4,12|fb05fa14352c2a2d7d040000|@11571,1,@2533,@152| 17469:D4,12|fb05fa14352c2a2d7d040000|@11034,1,@2534,@148| 17470:D4,12|fb05fa14352c2a2d7d040000|@12253,1,@2535,@109| 17471:D90,852|fb2f2b363ca203061a5503f745032b352c363cab293ba203061a4803f712032a372a3cab2a2a691a3e03351a3e032a0c642a2a0c642d3ca203061a3303f7d8022e382e3cab293ba203051a270302e62a362a3cab2a2a691a1e03352a2a0c642d3ca203051a150302b32e382e3cab2a2a691a0403352a2a0c64313da203051aff0202803235323cab2a2a691af602352a2a0c64220c3ea203051aec02024c220d37220d3cab2a2a691acd02352a2a0c6422113922113cab2a2a691abb02352a2a0c64291ac602691ac6022a691ac5022a691ac4022a691ac3022a69322a691abf022a691abe022a69270f1abb022a691aba022a692c2a691ab6022a691ab5022a6927091ab2022a691ab1022a692c2a691aad022a691aac022a6927091aa9022a691aa8022a692c2a691aa4022a691aa3022a6927091aa0022a693b3c3b3b2d6805323da203061a9302f7b3013335333cab2a2a691a2d02352a2a0c64220d3ea203061a7b02f77e01220e39220e3cab293ba203051a6d0202e62a362a3cab2a2a691af401352a2a0c642d3ca203051a570202b32e382e3cab2a2a691ada01352a2a0c64313da203051a410202803235323cab2a2a691acc01352a2a0c64220c3ea203051a2a02024c220d37220d3cab2a2a691aa301352a2a0c6422113922113cab2a2a691a9101352a2a0c64291a0402691a04022a691a03022a691a02022a691a01022a69322a691afd012a691afc012a69270f1af9012a691af8012a692c2a691af4012a691af3012a6927091af0012a691aef012a692c2a691aeb012a691aea012a6927091ae7012a691ae6012a692c2a691ae2012a691ae1012a6927091ade012a693b3c3b3b2d680522123fa203051ad001025722133622133cab2a2a691ac501351ac5012a0c642a2a0c6422173a22173cab2a2a69face351ab2012a0c642a2a0c64291aab01691aab012a691aaa012a691aa9012a691aa8012a69322a691aa4012a691aa3012a69270f1aa0012a691a9f012a692c2a691a9b012a691a9a012a69270a1a97012a691a96012a692c2a691a92012a691a91012a6927091a8e012a691a8d012a692c2a691a89012a691a88012a69270a1a85012a691a84012a692c2a691a80012a691a7f012a6927091a7c012a693b3c3b3b2d6805293b691a71012a691a70012a693b3c3b3b2d6805270842|@11734,1,@2536,@6303,@8198,@118,@12270,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@116,@12284,@12286,@9320,@5091,@9793,@5091,@9324,@5091,@12254,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12258,@5091,@9324,@5091,@12288,@9327,@5091,@12269| 17472:D52,444|fb2c2b363ba203061abd01f79f012b35362c363cab2a2a691ab101351ab1012a0c642a2a0c642f363ca203061aa501f766012f353830363cab2a2a691a9901352a2a0c6433363da203061a8f01f7330133353734363cab2a2a691a8301351a83012a0c642a2a0c64220e3535220f363cab293ba203051a6f0102dc2a362a3cab2a2a691a6601352a2a0c642d3ca203051a5d0102ad2e382e3cab2a2a691a4c01352a2a0c64313da203051a4701027e3235323cab2a2a691a1e01352a2a0c64220c3ea203051a3001024c220d37220d3cab2a2a691a1501352a2a0c6422113922113cab2a2a691a0301352a2a0c64291a0a01691a0a012a691a09012a691a08012a691a07012a69322a691a03012a691a02012a69270f1aff002a691afe002a692c2a69fafb2a69fafb2a692709faf92a69faf92a692c2a69faf62a69faf62a692709faf42a69faf42a692c2a69faf12a69faf12a692709faef2a693b3c3b3b2d680529fae769fae82a69fae82a69fae82a69fae82a69332a69fae52a69fae52a692710fae32a69fae32a692c2a69fae02a69fae02a692709fade2a69fade2a692c2a69fadb2a69fadb2a692709fad92a693b3c3b3b2d680565420000|@4036,1,@2537,@8198,@9,@12273,@8198,@7,@8198,@116,@12275,@8198,@75,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@12277,@5091,@9324,@5091,@12279,@5091,@9324,@5091,@12281,@5091,@9324,@5091,@12272,@9327| 17473:D4,12|fb05fa14352c2a2d7d040000|@11571,1,@2538,@152| 17474:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2539,@156| 17475:D4,12|fb05fa14352c2a2d7d040000|@11034,1,@2540,@148| 17476:D4,12|fb05fa14352c2a2d7d040000|@12253,1,@2541,@109| 17477:D65,612|fb2e2b363ca203061a6502f754022b352c363cab293ba203061a5802f721022a372a3cab2a2a691a4e02351a4e022a0c642a2a0c642d3ca203061a4302f7e7012e3a2e3cab2a2a691a2d02351a35022a0c642a2a0c64313da203061a2a02f7ad013235323cab2a2a69220d36352a2a0c64220c3ea203061a1202f77801220d39220d3cab293ba203051a040202e62a362a3cab2a2a691afb01352a2a0c642d3ca203051af20102b32e382e3cab2a2a691ae101352a2a0c64313da203051adc0102803235323cab2a2a691ad301352a2a0c64220c3ea203051ac901024c220d37220d3cab2a2a691aaa01352a2a0c6422113922113cab2a2a691a9801352a2a0c64291aa301691aa3012a691aa2012a691aa1012a691aa0012a69322a691a9c012a691a9b012a69270f1a98012a691a97012a692c2a691a93012a691a92012a6927091a8f012a691a8e012a692c2a691a8a012a691a89012a6927091a86012a691a85012a692c2a691a81012a691a80012a6927091a7d012a693b3c3b3b2d680522113fa203051a6f01025122123822123cab2a2a69fae1351a61012a0c642a2a0c6422163622163cab2a2a69221a36352a2a0c64291a4801691a48012a691a47012a691a46012a691a45012a69322a691a41012a691a40012a69270f1a3d012a691a3c012a692c2a691a38012a691a37012a69270a1a34012a691a33012a692c2a691a2f012a691a2e012a6927091a2b012a691a2a012a692c2a691a26012a691a25012a6927091a22012a691a21012a692c2a691a1d012a691a1c012a6927091a19012a693b3c3b3b2d6805293b691a0e012a691a0d012a693b3c3b3b2d680527084200|@11780,1,@2542,@6303,@8198,@116,@12298,@8198,@12300,@8198,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@12306,@9320,@5091,@12308,@5091,@9324,@5091,@12310,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@10223,@5091,@9324,@5091,@12230,@5091,@9324,@5091,@11594,@9327,@5091,@12297| 17478:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2543,@155| 17479:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2544,@9,@12302| 17480:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2545,@116,@12304| 17481:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2546,@115| 17482:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2547,@155| 17483:D89,848|fb2b2b363ca203061a5103f73f032b352c363cab293ba203061a4403f70c032a382a3cab293ba203051a380302e62a362a3cab2a2a691a2f03352a2a0c642d3ca203051a260302b32e382e3cab2a2a691a1503352a2a0c64313da203051a100302803235323cab2a2a691a0703352a2a0c64220c3ea203051afd02024c220d37220d3cab2a2a691ade02352a2a0c6422113922113cab2a2a691acc02352a2a0c64291ad702691ad7022a691ad6022a691ad5022a691ad4022a69322a691ad0022a691acf022a69270f1acc022a691acb022a692c2a691ac7022a691ac6022a6927091ac3022a691ac2022a692c2a691abe022a691abd022a6927091aba022a691ab9022a692c2a691ab5022a691ab4022a6927091ab1022a693b3c3b3b2d68052e3ca203061aa402f7e7012f352f3cab2a2a691a3e02352a2a0c64323da203061a8d02f7b3013339333cab293ba203051a810202e62a362a3cab2a2a691a0802352a2a0c642d3ca203051a6b0202b32e382e3cab2a2a691aee01352a2a0c64313da203051a550202803235323cab2a2a691ae001352a2a0c64220c3ea203051a3e02024c220d37220d3cab2a2a691ab701352a2a0c6422113922113cab2a2a691aa501352a2a0c64291a1802691a18022a691a17022a691a16022a691a15022a69322a691a11022a691a10022a69270f1a0d022a691a0c022a692c2a691a08022a691a07022a6927091a04022a691a03022a692c2a691aff012a691afe012a6927091afb012a691afa012a692c2a691af6012a691af5012a6927091af2012a693b3c3b3b2d6805220e3ea203051ae401028e220f37220f3cab2a2a691ad901351ad9012a0c642a2a0c6422123fa203051acd01025222133a22133cab2a2a69221736352a2a0c6422173622173cab2a2a691ab001351ab0012a0c642a2a0c64291aa901691aa9012a691aa8012a691aa7012a691aa6012a69322a691aa2012a691aa1012a69270f1a9e012a691a9d012a692c2a691a99012a691a98012a6927091a95012a691a94012a692c2a691a90012a691a8f012a69270a1a8c012a691a8b012a692c2a691a87012a691a86012a6927091a83012a691a82012a692c2a691a7e012a691a7d012a69270a1a7a012a693b3c3b3b2d6805293b691a6f012a691a6e012a693b3c3b3b2d68052708420000|@11883,1,@2548,@6303,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@9,@12320,@8198,@116,@12322,@9320,@5091,@9680,@5091,@9324,@5091,@12324,@5091,@9324,@5091,@12326,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12258,@9327,@5091,@12319| 17484:D4,12|fb05fa14352c2a2d7d040000|@11571,1,@2549,@152| 17485:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2550,@156| 17486:D68,632|fb2e2b363ca203061a7902f768022b352c363cab293ba203061a6c02f735022a352a3cab2a2a691a6202351a62022a0c642a2a0c642d3ca203061a5702f7fb012e362e3cab2a2a691a4d02351a4d023436693b2a3e3c6b642a0c642a2a0c64313da203061a3902f7b8013237323cab2a2a691a1702351a2b022a0c642a2a0c64220c3ea203061a1f02f77d01220d38220d3cab293ba203051a110202e62a362a3cab2a2a691a0802352a2a0c642d3ca203051aff0102b32e382e3cab2a2a691aee01352a2a0c64313da203051ae90102803235323cab2a2a691ae001352a2a0c64220c3ea203051ad601024c220d37220d3cab2a2a691ab701352a2a0c6422113922113cab2a2a691aa501352a2a0c64291ab001691ab0012a691aaf012a691aae012a691aad012a69322a691aa9012a691aa8012a69270f1aa5012a691aa4012a692c2a691aa0012a691a9f012a6927091a9c012a691a9b012a692c2a691a97012a691a96012a6927091a93012a691a92012a692c2a691a8e012a691a8d012a6927091a8a012a693b3c3b3b2d680522113fa203051a7c01025622123922123cab2a2a69fae6351a6e012a0c642a2a0c6422163a22163cab2a2a69facf351a5b012a0c642a2a0c64291a5401691a54012a691a53012a691a52012a691a51012a69322a691a4d012a691a4c012a69270f1a49012a691a48012a692c2a691a44012a691a43012a69270a1a40012a691a3f012a692c2a691a3b012a691a3a012a6927091a37012a691a36012a692c2a691a32012a691a31012a6927091a2e012a691a2d012a692c2a691a29012a691a28012a6927091a25012a693b3c3b3b2d6805293b691a1a012a691a19012a693b3c3b3b2d680527084200|@11915,1,@2551,@6303,@8198,@116,@12336,@8198,@118,@17488,@8198,@12339,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@12341,@12343,@9320,@5091,@10196,@5091,@9324,@5091,@12345,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@12347,@5091,@9324,@5091,@12349,@5091,@9324,@5091,@11594,@9327,@5091,@12335| 17487:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2552,@155| 17488:D3,12|fb052936352c2a2d7d040000|@12338,1,@2553| 17489:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2554,@156| 17490:D4,12|fb05fa14352c2a2d7d040000|@10637,1,@2555,@75| 17491:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2556,@155| 17492:D116,1088|fb362b363ca203061a4104f72f042b352c363cab293ba203061a3404f7fc032a382a3cab2a2a691a2a04351a2a042a0c642a2a0c642d3ca203061a1f04f7c2032e352e3cab293ba203061a1304f747022a352a3cab2a2a691a0904351a0904220d36693b2a3e3c6b642a0c642a2a0c642d3ca203061af403f703022e382e3cab2a2a691aea03351aea032a0c642a2a0c64313da203061adf03f7c9013236323cab293ba203061ad303f773012a362a3cab2a2a691a9d03351ac5032a0c642a2a0c642d3ca203061aba03f739012e372e3cab293ba203051aae0302e62a362a3cab2a2a691aa503352a2a0c642d3ca203051a9c0302b32e382e3cab2a2a691a8b03352a2a0c64313da203051a860302803235323cab2a2a691a7d03352a2a0c64220c3ea203051a7303024c220d37220d3cab2a2a691a5403352a2a0c6422113922113cab2a2a691a4203352a2a0c64291a4d03691a4d032a691a4c032a691a4b032a691a4a032a69322a691a46032a691a45032a69270f1a42032a691a41032a692c2a691a3d032a691a3c032a6927091a39032a691a38032a692c2a691a34032a691a33032a6927091a30032a691a2f032a692c2a691a2b032a691a2a032a6927091a27032a693b3c3b3b2d68053335333cab2a2a691abf02352a2a0c64291a0e03691a0e032a691a0d032a691a0c032a691a0b032a69322a691a07032a691a06032a6927101a03032a691a02032a692c2a691afe022a691afd022a6927091afa022a693b3c3b3b2d6805220e37220e3cab2a2a691ae802352a2a0c64291ae302691ae3022a691ae2022a691ae1022a691ae0022a69322a691adc022a691adb022a6927101ad8022a691ad7022a692c2a691ad3022a691ad2022a6927091acf022a691ace022a692c2a691aca022a691ac9022a6927091ac6022a693b3c3b3b2d6805323da203061ab902f73b013336333cab2a2a69220e36352a2a0c64220e37220e3cab293ba203051a9b0202e62a362a3cab2a2a691ab201352a2a0c642d3ca203051a850202b32e382e3cab2a2a691a9801352a2a0c64313da203051a6f0202803235323cab2a2a691a8a01352a2a0c64220c3ea203051a5802024c220d37220d3cab2a2a691a6101352a2a0c6422113922113cab2a2a691a4f01352a2a0c64291a3202691a32022a691a31022a691a30022a691a2f022a69322a691a2b022a691a2a022a69270f1a27022a691a26022a692c2a691a22022a691a21022a6927091a1e022a691a1d022a692c2a691a19022a691a18022a6927091a15022a691a14022a692c2a691a10022a691a0f022a6927091a0c022a693b3c3b3b2d6805291a0302691a03022a691a02022a691a01022a691a00022a69332a691afc012a691afb012a6927101af8012a691af7012a692c2a691af3012a691af2012a69270a1aef012a691aee012a692c2a691aea012a691ae9012a6927091ae6012a693b3c3b3b2d6805293b691adb012a691ada012a693b3c3b3b2d68052708420000|@12338,1,@2557,@6303,@8198,@116,@12359,@8198,@8198,@118,@17496,@8198,@9,@12365,@8198,@8198,@12367,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9322,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11636,@9327,@115,@9320,@5091,@11767,@5091,@9324,@5091,@12369,@5091,@9324,@5091,@12371,@5091,@9324,@5091,@9758,@9327,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@12373,@5091,@9324,@5091,@10223,@5091,@9324,@5091,@11925,@5091,@9324,@5091,@12230,@9327,@5091,@12358| 17493:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2558,@9,@12361| 17494:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@11046,1,@2559,@116,@12363| 17495:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@2560,@115| 17496:D3,12|fb052936352c2a2d7d040000|@11723,1,@2561| 17497:D4,12|fb05fa14352c2a2d7d040000|@11571,1,@2562,@152| 17498:D4,12|fb05fa14352c2a2d7d040000|@9679,1,@2563,@155| 17499:D59,544|fb2e2b363ca203061a2102f70f022b352c363cab293ba203061a1402f7de012a352a3cab2a2a692e36352a2a0c642d3ca203061afe01f7ab012e362e3cab2a2a693236352a2a0c64313da203061ae801f778013239323cab2a2a691ade01352a2a0c64220c3ea203061ad401f74301220d37220d3cab293ba203051ac60102e62a362a3cab2a2a691abd01352a2a0c642d3ca203051ab40102b32e382e3cab2a2a691aa301352a2a0c64313da203051a9e0102803235323cab2a2a691a9501352a2a0c64220c3ea203051a8b01024c220d37220d3cab2a2a691a6c01352a2a0c6422113922113cab2a2a691a5a01352a2a0c64291a6501691a65012a691a64012a691a63012a691a62012a69322a691a5e012a691a5d012a69270f1a5a012a691a59012a692c2a691a55012a691a54012a6927091a51012a691a50012a692c2a691a4c012a691a4b012a6927091a48012a691a47012a692c2a691a43012a691a42012a6927091a3f012a693b3c3b3b2d680522123822123cab2a2a691a2d01351a2d012a0c642a2a0c64291a2601691a26012a691a25012a691a24012a691a23012a69322a691a1f012a691a1e012a6927101a1b012a691a1a012a692c2a691a16012a691a15012a6927091a12012a691a11012a692c2a691a0d012a691a0c012a6927091a09012a691a08012a692c2a691a04012a691a03012a6927091a00012a693b3c3b3b2d6805293b69faf62a69faf62a693b3c3b3b2d68052708420000|@12216,1,@2564,@6303,@8198,@8198,@8198,@115,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@116,@12383,@9320,@5091,@12153,@5091,@9324,@5091,@12373,@5091,@9324,@5091,@12387,@5091,@9324,@5091,@10223,@5091,@9324,@5091,@11925,@9327,@5091,@12382| 17500:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2565,@118,@12385| 17501:D4,12|fb05fa14352c2a2d7d040000|@11037,1,@2566,@156| 17502:D8,52|fb122b352c3629352a36292e2306fa300c2b2a692e2afa2c3236693237fa29fa2b220c38220d39220e3afa2422117b0b09000000|@12395,1,@2567,@12396,@17503,@7928,@10806,@10794| 17503:D3,12|fb042c2c692a362c7d040000|@10796,1,@2569| 17504:D4,60|fb132c929103312c352d362a352b362c382d3931353235293caa343b3b2ce33b2d6931312b32323b3b680733220ffa180c2a2a69270d02013b430000|@4648,1,@2568,@12396| 17505:D5,36|fb0cfa2c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa17347b0707000000|@12397,1,@2570,@17506,@10800| 17506:D4,12|fb0529362cfa112d7e030000|@12398,1,@2571,@9416| 17507:D6,40|fb0a29392308fa2c2a2c366a2b39230cfa262a2e376a2b2a6929333038fa1d0c312a354564270544|@10957,1,@2572,@17509,@17508,@10956| 17508:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2574| 17509:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2573| 17510:D4,12|fb0529362cfa112d7e030000|@12398,1,@2575,@9416| 17511:D3,12|fb042c2c692a362c7d040000|@10796,1,@2576| 17512:D14,324|fb26222306222323081a44012a22256a2225230c1a3d012a22266a1a3a011a3b01222622262226222622261a320133222822282228220c680d0b0200222d353ba0033b222d36222e370b060031220d323b22202e222e222e222e222e222e222e222e222e222e222e222e222e223b0c5029352a39342b452a4650260b027b222d353da0033d222d3629352a362b372c382d392c2b2d2c31220e221f222c222c222c222c222c222c222c222c222c222c222c222c222b0c302a35452a39465126060237222d36222e37222f380b0600323232221022212e222622302230222822312231223122312231fa7a0c5029352a39220c2b452a4650260c29352a36fa692213221322242217222522106807fa5d2212221222252218222622116807fa512211221122262219222722126807292c2c6a2e2a2f3cfa3d323bfa3d0c220f3527101f2300|@12402,1,@2577,@17514,@17515,@10809,@10813,@10817,@10827,@17516,@17519,@17513,@4062,@10961| 17513:D8,88|fb172b352c3629352a362b372c382d392b353ba003043b500203fa481030230635293caa3223063b3b2ce3503b2b6930302b30303b3b6807332afa2c220e3669220e37fa27fa2922113822123922133afa2222167b0b0e00|@12409,1,@2585,@12405,@17521,@10797,@10798,@10794| 17514:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2578| 17515:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2579| 17516:D8,72|fb112b352c3629352a36293ba003032b02192a352b362c382d372c2c2b2d6b2e332306fa2f0c2a2a6927062d2afa293136693137fa26fa283438220c39220d3afa2222107b0b0800|@12403,1,@2580,@12404,@17517,@7928,@10806,@10794| 17517:D3,12|fb042c2c692a362c7d040000|@10796,1,@2582| 17518:D5,76|fb122c929103412c352d362a352b362c372d382e392b353ba003043b500203fa37103b503235293caa343b3b2ce3503b2b6930302b30303b3b680732220efa1c0c2a2a69270c02013b430000|@4648,1,@2581,@12405,@12404| 17519:D8,84|fb162b352c3629352a362b372c382b353ba003043b500203fa46102f230635293caa3123063b3b2ce3503b2b692f2a2f2f6b322afa2e220d3669220d37fa29fa2b22103822113922123afa2422157b0b0d000000|@12408,1,@2583,@12405,@17520,@10808,@10807,@10794| 17520:D3,12|fb042c2c692a362c7d040000|@10796,1,@2584| 17521:D3,12|fb042c2c692a362c7d040000|@10796,1,@2586| 17522:D13,236|fb29220c35220d36220e372a03b629929103043b500203fadf103b5029352a362a352b36221223082213230c2a2a69facb221422142f6b2a2f2bfac40c29352938293629353ca0030b2a36293629fab4a06502013b03033b026633299291035e29352a362a352b36221f23082220230c2a2a69fa93222122212f6b2a2f2bfa800c3b2221222122212221fa800c3b2222222222222222fa740c2bfa742c2212fa6f2e2220222c222b222a22282228fa640c5032250c260b1e5c3b270b02013b64270c022329220f220e220efa4b0c292d2210220f220e220c220c221222112211fa3a22107b0c11661f0b0000|@12412,1,@2587,@12413,@17523,@10956,@107,@17525,@10792,@4062,@12417,@12452,@12411| 17523:D8,120|fb0f2b3b3bef293ba00304fa77024629280eb1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f34ec503f31b1fa3c3f2e2c280eec502c95502c2708fa392c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa24220d7b0709000000|@12415,1,@2588,@12416,16777215,@4054,@17524,@10800| 17524:D4,12|fb0529362cfa112d7e030000|@10833,1,@2589,@9311| 17525:D8,120|fb0f2b3b3bef293ba00304fa77024629280eb1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f34ec503f31b1fa3c3f2e2c280eec502c95502c2708fa392c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa24220d7b0709000000|@12415,1,@2590,@12416,16777215,@4054,@17526,@10800| 17526:D4,12|fb0529362cfa112d7e030000|@10833,1,@2591,@9311| 17527:D30,1128|fb38220d3534352a38293629353ca0030c2a362936291a5b04a06502013b03033c02182b38293629353ca0030c2a362936291a3f04a06502013b6503043bf723042c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642e38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa091034e1ac203221169221822181abc030c221622161ab4030c291ab303691ab3032a691ab2032a691ab1032a692e2a691aad032a691aac032a693b3e3b3b2d6805221a3c220c221f2d1a9c03221c7b07233238293629353ba0030929382922190c6402012a3438293629353ba0030929382922190c6402012a2c3629353ba003a12938292217a203033b0293292217ab2922173529353ba00325293629932c2aa203162a932d2aa903041a3f03103b503b502b2e3bdb6402031a3403650223293629932c2aa203162a932d2aa903041a2203103b503b502b2e3bdb6402031a0f036529353ca0031a2936292da803041a0603103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041ae202103b503c656402013b299103f0221135221f3b3bef2a3b3bef2a3ba003032b0253293ba003042221024a2a2ab1292808b1293cb2293fb4291aab02a503043b5002041aa502103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022283f2d3f220cec503f32b1333f2e2c220cec502c95502c27083e2a69333729352a362b371a6c020c293b691a69022a691a68022a691a67022a692f2a693b3e3b3b2d68051a5c02222669222d222d1a06020c222b222b1afe010c2c3b691a47022a691a46022a691a45022a692d2a691aed012a691aec012a691aeb012a69322a691ae7012a691ae6012a693b3e3b3b2d680522333c221022382d1ad60122357b073c2b3629353ba003a12938292219a203033b0293292219ab2922193529353ba00325293629932c2aa203162a932d2aa903041aa101103b503b502b2e3bdb6402031a9601650223293629932c2aa203162a932d2aa903041a8401103b503b502b2e3bdb6402031a71016529353ca0031a2936292da803041a6801103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041a4401103b503c656402013b299103e0221235221e3b3bef2a3b3bef2a3ba003032b0253293ba003042220024a2a2ab1292808b1293cb2293fb4291a0d01a503043b5002041a0701103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022273f2d3f220cec503f32b1333f2e2c220cec502c95502c27083e2a69323729352a362b37facf0c293b69facd2a69facd2a69facd2a692f2a693b3e3b3b2d6805fad3222869222f222ffa6e0c222d222dfa670c2c3b69fab12a69fab12a69fab12a692d2a69fa5a2a69fa5a2a69fa5a2a69322a69fa572a69fa572a693b3e3b3b2d680522353c2210223a2dfa4822377b073e302e221a221a221afa7d221b7b072227041f0c|@12419,1,@2592,@107,@17528,@12421,@12423,@5091,@12430,@5091,@5485,@12432,@10800,@4599,@4719,@4597,@10870,@12434,16777215,@4054,@12437,@5091,@12439,@5091,@17531,@5091,@12426,@5268,@17532,@12418| 17528:D4,12|fb0529362cfa112d7e030000|@12420,1,@2593,@9311| 17529:D5,184|fb152c35293729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2c35303b3bef2a3b3bef2a3ba003032b024e293ba003033202462a2ab1292808b1293cb2293fb429fa54a503043b500203fa4f10292841bd2a3cb22a2a3b3bf02b3b3b32f05022103f2d3f220cec503f32b1333f2e2c220cec502c95502c27083e2a69293b693b3b3b322d6805270a430000|@12422,1,@2594,16777215,@4054| 17530:D9,260|fb132b1a0a01a003033c02122b3b3bef3ba003092b3ffaf83f3bed02013b03173b2d69293b693e3069293b693b3b3b2e2d6805270402cc3b2d69293b693e30692e3b3bef293ba00304fac902483d2ab1292808b1293cb2293fb429fabba503043b500203fab610292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2828e4502b2805282ae450220d3f2d280634ec502b95502b2707293b3bef293ba00304fa80024a293db1292808b1293cb2293fb429fa66a503043b500203fa6110292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ae4502c2a3cb12829e4502c95502c27083e2a69293b69fa302a69302a693b3b3b220c2d6805270b44|@12438,1,@2595,@4062,@5613,16777215,@4054,@5611,@5091| 17531:D4,12|fb0529362cfa112d7e030000|@12420,1,@2596,@9311| 17532:D4,12|fb0529362cfa112d7e030000|@12420,1,@2597,@9311| 17533:D13,524|fb2b2f3629353ba003092f3629353ba06402013b03043b5002041afb01103b5030362938313629382b33ab29333529353ba00325293629932c2aa203162a932d2aa903041ad501103b503b502b2e3bdb6402031aca01650223293629932c2aa203162a932d2aa903041ab801103b503b502b2e3bdb6402031aa5016529353ca0031a2936292da803041a9c01103b503b5029250426031e6a3b6402012965642b220cab29220c3529353ba00325293629932c2aa203162a932d2aa903041a5c01103b503b502b2e3bdb6402031a5101650223293629932c2aa203162a932d2aa903041a3f01103b503b502b2e3bdb6402031a2c016529353ca0031a2936292da803041a2301103b503b5029250426031e6b3b6402012965642b353ea003222b36293629353ba003142b353ea0030b2b36293629353ba06502013b02013b6502013b03043b500203fae3103b502b362c372a3629362a372b382c392f37313632372a3629362a372b382c39322ba003033b0296322ba203033202012a332ca603033302012b3303033c02012b220e30a003043b500203fa99103b50220d353ca00308220d362935640203220d3603033c020f2e353ca003072e3629356402022e363b2a693b22112b302f6805fa672a220f6a220c3ba00304221402072214220dfa570c3e2b2b6a312226ab22242a2cfa4c0c50312227ab332228ab3c2a6922272c2bfa39222a7b052c27181f05|@12442,1,@2598,@12443,@4599,@4719,@4597,@10870,@12446,@12449,@4685,@12441,@10842| 17534:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2599,@12441| 17535:D7,76|fb0e2e929103402e352f362a352b3631230cfa4432322d6bfa422b2e2cfa410c293ba0030e2e220c220c220cfa36220d7b060d29352f220d220d220dfa260c2a2a6965270702013b1f040000|@6232,1,@2600,@17536,@10808,@10907,@12452| 17536:D8,120|fb0f2b3b3bef293ba00304fa77024629280eb1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f34ec503f31b1fa3c3f2e2c280eec502c95502c2708fa392c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa24220d7b0709000000|@12415,1,@2601,@12416,16777215,@4054,@17537,@10800| 17537:D4,12|fb0529362cfa112d7e030000|@10833,1,@2602,@9311| 17538:D5,24|fb0a342e322f2ffa1b0c32323232220f220ffa14327b090c|@12454,1,@2603,@12455,@12453| 17539:D8,128|fb112f929103762f3530362a35293b3bef293ba00304fa740244293cb1292808b1293cb2293fb429fa66a503043b500203fa61103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27083b34343434fa330c2e2b2b6a2e220d220d220d220dfa270c2a2a69270802013b1f05|@4648,1,@2604,@4139,16777215,@4054,@10792,@12455| 17540:D13,224|fb250b020034fae42a929103172a352b362a2cfadb0c2a2a2505250526031e1626030209292c2a35452a3646515129352a362afabffac10c29fac13b3bfac10c2bfac1fab30c29fab33b3bfab30c2b299291035b29352a362a929103043b500203faa5103b502a352b362a352b362c372c299291032b29352a362a352b362c373131312e2e2e222022202226222622262226fa780c502c250626051e2a260502023b50502e250826071e5a260702023b505029299291031f29352a362a221422142214221422142214fa450c50292503511e1e3b6502013b6427091f07000000|@12457,1,@2605,@4685,@12458,@12462,@6336,@4062,@12465,@12467,@12456,@12417,@12453| 17541:D6,36|fb0e2c35293729352a3930363137fa202c2b6afa1f2c2b6a2e342bfa1b220d7b050c0000|@12459,1,@2606,@17543,@17542,@4642| 17542:D4,56|fb0f2c2c2a9291032a2a352b360b0200342e302c3436220c37fa290c5029352a362a2a692f2a250a250a26081e283b270802012965440000|@4645,1,@2608,@12460| 17543:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2607,@8143| 17544:D9,280|fb142e352f3631351a1901a003d731351a1101a003043b5002041a0b011031372f3b3bef343b3bef2a3ba00304220c024f293ba003033102472a2ab1292808b1293cb2293fb429fae3a503043b500203fade10292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3f2d3f220cec503f32b122143f2e2c220cec502c95502c2708293b3bef293ba00304faa90242293cb1292808b1293cb2293fb429fa8fa503043b500203fa8a10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082e2a220c6a22102a69293269220f34452a462709022f3135fa4fa003233135fa48a003043b500203fa2f1031372930306a342a69292e69332a452e46270402052f2b452a46651f0600|@12461,1,@2609,@21,@4594,16777215,@4054,@4139,@19| 17545:D4,12|fb042b35fa122a6964420000|@12463,1,@2610,@17546| 17546:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d363f2e3f2dee293ba003052c2ca50203293ba4270542000000|@12464,1,@2611| 17547:D4,144|fb0e2e9291036e2e352f362a352b36312ba003033c0217313b3bef2b3b3befa0030b313f2c3f2e3b3befed02013b030d2931692c332b33fa63347b060b30929103263036293ba0030e2a3b692d2d2b34fa4a220c7b060c2a3b693232692e2e2c2cfa39220d7b060d293b692c2c2b33fa2b347b060b2c929103102c36293ba003032c02032d2d696402012b1f04000000|@12466,1,@2612,@12465| 17548:D4,12|fb042b35fa122a6964420000|@12463,1,@2613,@17549| 17549:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d363f2e3f2dee293ba003052c2ca50203293ba4270542000000|@12464,1,@2614| 17550:D4,12|fb0529362cfa112d7e030000|@12398,1,@2615,@9416| 17551:D7,48|fb0b293a2308fa342a2c366a2b3a230cfa2e2a2e376a2b2a69fa292f383039346b2a342bfa220c322a35456427064400|@10957,1,@2616,@17553,@17554,@17552,@10956| 17552:D5,36|fb0cfa2c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa17347b0707000000|@12397,1,@2619,@17555,@10800| 17553:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2617| 17554:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2618| 17555:D4,12|fb0529362cfa112d7e030000|@12398,1,@2620,@9416| 17556:D3,4|fb022b42|@12470,1,@2621| 17557:D3,4|fb022b42|@12470,1,@2622| 17558:D10,176|fb0c2e35292fab293ba00304faae0295293ba6030629faa8a202013b03043b500203faa0103b502928403bda3b2b2aa403043b500269303529353ba00322293629932c2aa203152a932d2aa90303fa78103b503b502b2e3bdb6402013b650220293629932c2aa203152a932d2aa90303fa5a103b503b502b2e3bdb6402013b65293ba00303fa49103b503b5029352d2d3b2ce3502c3caa250426031e6e2603502995502964fa2d2f2b336b661f050000|@12472,1,@2624,@4725,16777215,@12473,@4599,@4597,@5689,@17559| 17559:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@12475,1,@2625,@4599| 17560:D41,1388|fb2c2214353ba003462214362215370b0600312219323b221b2e221c221c221c221c221c221c221c221c221c221c221c221c221b360c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270f027d2214353da0033522143629352a362b372c382d392c2b2d2c31221a221a221a221a221a221a221a221a221a221a221a221a221a221a22190c270602412214362215372216380b0600323232221c221c2e2214221e221e2216221f221f221f221f221f1ac4040c5029352a362b372c382d392e3a2e2e2e2e2e2e6806271029352a392a1aa8040c1aa8042212221222176b2a23082b230c2a2a6929221b2e1a95040c221a1a930422182218221c6b22171a8b040c2a352938293629353ca0030c2a362936291a7a04a06502013b03053b50f741042d35293829360b02002c353ba003112c382922120c2b2a36452a3746515002092d2a2a36452a37465129352a362a353ba003a12a38292221a203033b0293292221ab29221e3529353ba00325293629932c2aa203162a932d2aa903041a1304103b503b502b2e3bdb6402031a0804650223293629932c2aa203162a932d2aa903041af603103b503b502b2e3bdb6402031ae3036529353ca0031a2936292da803041ada03103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041ab603103b503c656402013b2991f802011aa903222b6922293b3bef293ba003051a9d03024c3d2ab1292808b1293cb2293fb4291a8e03a503043b5002041a8803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2860e4502b28052860e45022313f2d280634ec502b95502b2707293b3bef293ba003051a4f03024e293db1292808b1293cb2293fb4291a3403a503043b5002041a2e03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2827e4502c2a3cb12827e4502c95502c27083e2a693035313632371af7020c293b691af4022a691af3022a691af2022a692e2a691aee022a691aed022a693b3e3b3b2d680522313c2210222a2d1add020c50260ff763022b353ba003043b5002041acd02103b502b38292222ab29221f3529353ba00325293629932c2aa203162a932d2aa903041a6302103b503b502b2e3bdb6402031a5802650223293629932c2aa203162a932d2aa903041a4602103b503b502b2e3bdb6402031a33026529353ca0031a2936292da803041a2a02103b503b5029250426031e6b3b64020129656429353ea0030b2936293629353ba06502013b03043b5002041a3802103b502936293629372a382b392b353ca003072b3629356402022b36031522141a19021a1a021a1b020c293ca09129916502013b031a1a0f021a1002222f223522342219223022271a05020c50f76b012214352805a003632214362215382a22342a3ba00305293ba002342a352b362b929103292b352c362c352806a0030a2c362b352a2aa06502013b030d2b2a2506250626041e333b02013b6502013b6565299103033b02112a38293629353da003033b02032a6801656602013b293ba003442a03191a8d011a8e01223022362235221a223122281a77010c500226223122301a78016a3d223422186a1a72012a2c6a2e222dab3b2b69222d2b2b1a65010c50260502b52935293629353ba00385293829222da203053b2c69027529222dab29222a3529353ba00323293629932c2aa203152a932d2aa90303fab4103b503b502b2e3bdb640202faaa650221293629932c2aa203152a932d2aa90303fa99103b503b502b2e3bdb640202fa876529353ca003192936292da80303fa7f103b503b5029250426031e663b640201296564646402033b2b6929353ea0030e2b32222e222b222ffac10c50020d2e222dab222c2a2cfaaf0c505026035026082609220c270d1f13000000|@12477,1,@2626,@10827,@4898,@17561,@10956,@17563,@10955,@107,@4599,@4719,@4597,@10870,@12434,@17566,@12481,16777215,@4054,@9249,@12437,@5091,@12482,@5091,@5485,@12484,@10800,@12486,@12489,@12491,@12492,@10864,@12493,@12494,@12495,@12499,@12476,@4062,@4801,@10842,@12418| 17561:D8,120|fb0f2b3b3bef293ba00304fa77024629280eb1292808b1293cb2293fb429fa68a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f34ec503f31b1fa3c3f2e2c280eec502c95502c2708fa392c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa24220d7b0709000000|@12478,1,@2627,@12416,16777215,@4054,@17562,@10800| 17562:D4,12|fb0529362cfa112d7e030000|@10833,1,@2628,@9311| 17563:D5,36|fb09293823082a38230c2a2a69fa212d362e37326b2a322bfa1a0c302a35456427044400|@10957,1,@2629,@17564,@10956| 17564:D5,36|fb0cfa2c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa17347b0707000000|@12479,1,@2630,@17565,@10800| 17565:D4,12|fb0529362cfa112d7e030000|@10833,1,@2631,@9311| 17566:D4,12|fb0529362cfa112d7e030000|@12480,1,@2632,@9311| 17567:D3,4|fb023c42|@10862,1,@2633| 17568:D3,4|fb023d42|@10862,1,@2634| 17569:D18,280|fb1f1a1f0131691a1e0132692a2a691a1a013369323b3bef293ba003051a1001024b3d2ab1292808b1293cb2293fb4291a0101a503043b500203fafc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2860e4502b28052860e45022113f2d280634ec502b95502b2707293b3bef293ba00304fac4024c293db1292808b1293cb2293fb429faaaa503043b500203faa5103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2827e4502c2a3cb12827e4502c95502c27083e2a693e2213693bfa700c220f1be8032b343bfa690c3e221569293b69fa632a692c2a69fa602a69302a69fa5d2a69332a69fa5a2a69fa5a2a693b3e3b3b2d6805221a3c2215221c2dfa4b221e7b07210000|@12496,1,@2635,@17571,@17572,@17570,@12481,16777215,@4054,@9249,@9314,@9338,@5268,@5091,@5091,@5485,@12484,@10800| 17570:D4,12|fb0529362cfa112d7e030000|@12498,1,@2638,@9311| 17571:D3,28|fb052b2a3623080c299291030b2935293b692968016502013b644200|@12497,1,@2636| 17572:D3,28|fb052b2a36230c0c299291030b2935293b692968016502013b644200|@12497,1,@2637| 17573:D4,36|fb092c2c2a929103182a352b36312b2dfa1e0c2a2a2505250526031e173b660201296544|@4645,1,@2639,@12501| 17574:D7,192|fb0c2c35fac6a0032d2c35fabfa003043b500203faba102c37293729353ba003112936293caa2930a603032902012f6502012d6502872c35fa9aa0032d2c35fa93a003043b500203fa86102c37293629353ba003112936293caa2930a603032902012f6502012d6502532c35fa6aa0034b2c35fa63a003043b500203fa52102c372936292e2a9291032d2a352b362a3729353ba003112936293caa292fa603032902012e6502012c2b2a2506250626041e2b3b2704020129656502012b440000|@12502,1,@2640,@18,@4594,@21,@19| 17575:D23,616|fb2a30352931ab342aa0030e1a6502342a35452a364664f7490234313529353ba00325293629932c2aa203162a932d2aa903041a4202103b503b502b2e3bdb6402031a3702650223293629932c2aa203162a932d2aa903041a2502103b503b502b2e3bdb6402031a12026529353ca0031a2936292da803041a0902103b503b5029250426031e6a3b64020129656429353ba003942936293629353da0035d29362a372c371ae101220e22106a1add012a692c1adb012b1adb010c3d2f2b6a1ad7012a2f6a3b2a69221222182b1acd010c22183caa0b02002c2a221c221c221c221c221c221c1ab8010c5029352a36312a69221e2c452a4627110229220e3caa0b02002c2a2212221222122212221222121a8d010c5029352a36302a6922142c452a46270765f73a0129353ea003043b5002041a6f01103b5029362a372a3629353ba003043b5002041a5d01103b5029362a372b392e3729352a362b37319291030831362992916402013b037d319291031c31353236293ba003032a020d291a2b010c2b2a69641a27010c6502031a2401293b3bef293ba003051a1c01024828082ab1292808b1293cb2293fb4291a0c01a503043b5002041a0601103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fae73f2d3f2808ec50313f2d280c34ec502b95502b270765020129221135293caa22133b3b2ce3221335293caa22153b3b2ce33232316a3b2d69220e353ca00308220e362935640203220e363b2a693b22122b220c221368052c2a2f6a3b2a69221f22252bfa660c22253caa0b02002c2a222922292229222922292229fa520c5029352a36312b69322b69222c2b452a46272164651f080000|@12505,1,@2641,@4685,@4599,@4719,@4597,@10870,@17576,@17577,@12514,@8030,@4801,@10842,@12503,@12515,@12515,@12518,@4052,@4062,@12504,16777215,@4054| 17576:D8,164|fb0c2b3629353ba003972938292c37a203033b0289292c37ab292d363529353ba00323293629932c2aa203152a932d2aa90303fa7b103b503b502b2e3bdb640202fa71650221293629932c2aa203152a932d2aa90303fa60103b503b502b2e3bdb640202fa4e6529353ca003192936292da80303fa46103b503b5029250426031e663b64020129656429353ba003043b500203fa2b103b502936296801666402013b6442|@12507,1,@2642,@4599,@4719,@4597,@10870,@12506| 17577:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@12511,1,@2643,@12512,@12510,@8100| 17578:D3,4|fb022b42|@12513,1,@2644| 17579:D3,4|fb022b42|@12513,1,@2645| 17580:D3,4|fb022b42|@12511,1,@2646| 17581:D5,28|fb072b929103132b352c3629fa1a0c2b2a69fa182a69270402013b42|@9402,1,@2647,@12518,@4137| 17582:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@12519,1,@2648,@4599| 17583:D5,20|fb0a2b352c3629382b2a2e36fa12fa14327b0606|@9566,1,@2650,@9567,@9565| 17584:D7,100|fb102b352c362a3b3bef293ba00304fa5f0242293cb1292808b1293cb2293fb429fa51a503043b500203fa4c10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f34ec503f31b12c2a282ee4502c95502c27082b372a2a3036fa1f337b0508000000|@9566,1,@2651,@4139,16777215,@4054,@9588| 17585:D9,204|fb12fad42a36692e3b3bef293ba00304faca024728082ab1292808b1293cb2293fb429fabba503043b500203fab6103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa973f2d3f2808ec50220d3f2d280c34ec502b95502b2707293b3bef293ba00304fa82024829282bb1292808b1293cb2293fb429fa67a503043b500203fa62103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa453f2e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa26220f7b070d00|@9593,1,@2652,@17586,@12520,16777215,@4054,@9596,@9592| 17586:D4,12|fb0529362cfa112d7e030000|@9594,1,@2653,@9300| 17587:D4,24|fb052936932c2aa90303fa18103b502a362d3bdb64420000|@9562,1,@2654,@4599| 17588:D41,1292|fb64222435222536222637221b063b062b221e221e221e221e222c1afa040c3b222469221c23103b2a0c3d2a69293b692d2a691ae604061ae604063d2b2b6a220e2a342f6b33372922112d1ad6040c293ba003051ad10402593b2a299291031229362b3caa292b25042504511e113b6502012a65291ab404a803041ab204103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965220f35220e373b2a299291031229362b3caa292b25042504511e113b6502012a652b2aaa22133b3b2ce32214352213352214362215382216391a46042232220c22386b1a40042b2b6a2e353ca0032f2e362f382a352a352993293ba003051a150402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e292f3b302e220c6806401afe030c1afe030c22211afc03a003033c021522213b3bef3ba0030b22213f1ae7033f3bed02013b91031d222122142c22196b293b69223e3b3b2ce35022232b692c230a0c65022d1ac2032a223d6a1abf032b223f22166b1aba032c224222176b292c2c6a2f2a323c1a9d03220c3b1aa7030c27042213680122223b3b2ce32c23061a98032239223b2c6b2e23081a90032239223b2c6b30230c1a88032239223b2c6b1a83032238223a220c6b1a7d03223822382238223822383422393432223b223b220d680d1a67032229222b6a1a63032243221d222b2219224b222f68071a5603222c690b0600225a333234220e2251225f1a12033122431a40030c5029352a362b372c382d392e3a2e2e2e2e2e2e6806225338293503033b026f22603b3bef293ba003051a17030257293eb1292808b1293cb2293fb4291ab402a503043b5002041afe02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022683f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c2a3db1282ee4502c95502c2708292d22581abf020c652b1abd020c323b1abb021abc020c223d35293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051a2a0202593b2a299291031229362b3caa292b25042504511e113b6502012a65291a0d02a803041a0b02103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652993293ba003051ac50102832928403bda3b292ca803043b50026e2c2a3bdb293629353ba0035029362a382b392d372f220daa3b2a69303629353da003041afa01103b503b5029353ba00314293729353ca0030729362935640202293664020529362935643b2a693b322b333368052d2a316a270a02012a2d2d3b2ce3502c3caa250426031e73260350299550296429933b2a293ba003032a021a293cb22a3cb22e2a3bdb292e69292d2506250626041e1d3b2704652d933b2a293ba003032a0233293cb22a3cb22b3cb2332a3bdb32932c2aa903041a6601103b503b50332d3bdb292c692932692931250a250a26081e363b270865226b3b3b2ce31a44012261223b2249322238226a68071a380122122b6a2216353ca003302216362217382a352a352993293ba00304faa202132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020222162922173122172e223b680629faf10c3b32faf00c293ba003032a02052a2afae70c226e3b3b2ce33b227269226a23103b2a0c3d2a69293b692d2a69fa3a06fa3b063d2b2b6a224d227f2b2210306805227f2a6922610c50296801227e3b3b2ce3275f1f23000000|@12523,1,@2655,@9598,-1,@10945,@12524,@4725,16777215,@5803,@17591,@17592,@4554,@4898,@4062,@17593,@17594,@17595,@10961,@17596,@17597,@17598,@17599,@12536,@17604,@17605,@17607,@12541,@12753,@4054,@9588,@12748,@12754,@4642,@8092,@4599,@17741,@17742,@12699,@12705,@12522| 17589:D5,32|fb082d929103172d352e362a2f2ffa1c0c2a3030fa1a0c2a2a69270402013b44|@4648,1,@2656,@12525,@12524| 17590:D8,296|fb1f2d3529353ba003092e3629353ba06402013b03043b5002041a1701103b502e352936303629362a372b382c39220c3729352a362b373b3131313168052210faf6a003033c021422103b3bef3ba0030a22103ffae23f3bed02013b03032c02b522103b3bef293ba00304facf0245293cb1292808b1293cb2293fb429fac1a503043b500203fabc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022183f2d3f34ec503f31b12c2a282ee4502c95502c2708293b3bef2f3b3bef2a3ba00303300250293ba003032b02482a2ab1292808b1293cb2293fb429fa64a503043b500203fa5f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220f3f2e2c220cec502c95502c27082704292d2d6a3f220d22136a292d2c6a27104400|@12527,1,@2657,@12526,@4062,@4139,16777215,@4054| 17591:D4,56|fb062b2a38a203152936932c2aa90303fa32103b502a362d3bdb6402172b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@12531,1,@2658,@4599| 17592:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2659,@8143| 17593:D3,28|fb092b352c362b37352a2a692d373b3b2ce3502c2c692e3638307d07|@12532,1,@2660| 17594:D4,36|fb0a2b352c36292c383bfa240c2c37352a2a692e373b3b2ce3502d2c692f36230a317d08|@12532,1,@2661,@11394| 17595:D4,36|fb0a2b352c36292c383bfa240c2c37352a2a692e373b3b2ce3502d2c692f3637317d0800|@12532,1,@2662,@10913| 17596:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2663| 17597:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2664| 17598:D3,36|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d0529640201296442000000|@8973,1,@2665| 17599:D6,56|fb0b3b2a3823090c3b06fa382a692c370c2a353b2e3623090c293ba003032a02052a2afa230c293ba003032e02072e2afa1a337e09270642|@12534,1,@2666,@17600,@12535,@12533| 17600:D3,20|fb082b352a36352a2a692c363b3b2ce366420000|@9557,1,@2667| 17601:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2668,@12535| 17602:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2669,@12533| 17603:D3,4|fb023b42|@12534,1,@2670| 17604:D7,92|fb122b352c362d372e382f392e3735293caa30373b3b2ce32f0318fa4b06fa4c063d2b2b6a332a30343434680666fa400c0216fa3306fa34063d2b2b6a332a30343434680666fa2c0c3236352a2a6934363b3b2ce3502b270b420000|@12537,1,@2671,-1,@10945,@10844,@10846| 17605:D7,152|fb0d29230635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba00304fa7902573b2a299291031229362b3caa292b25042504511e113b6502012a6529fa5da80303fa5c103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa2a2d362e372f382d3139323a68076642000000|@12538,1,@2672,@4725,16777215,@5803,@17606| 17606:D4,88|fb072b2a2306a203152936932c2aa90303fa51103b502a362d3bdb6402382b2a3aa2031b29383a2c2aab2b37932a2aa90303fa30103b502c372b3bdb6602172b2a3aab2a39932a2aa90303fa17103b502b392b3bdb654200|@12539,1,@2673,@4599| 17607:D3,8|fb02293635420000|@12540,1,@2674| 17608:D58,1852|fb541a430732326a1a410733336a2a2a69220e353da0f81d02220e3629352a362b372c382d392e3a3b063b22150c3b22150c1a1b072c22196a1a18072b2e2e6b0b0600221132222133222122212221222131222122200c5029352a362b372c382d392e3a2e2e2e2e2e2e680622172212221222272227221a1add060c293a2a372b3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa1ab906221f690b020033332e22222231221f222a3022311aa6060c5029352a36221f3b3b2ce3222303ff30220cab293ba203041a8e06103b503b503b2a2e220f1a85060c220e3729222622391a7d060c2b2a1a7b060c22263b3b2ce32b3ba003051a700602593b2c299291031229362b3caa292b25042504511e113b6502012a65291a5306a803041a5106103b503b502928403bda3b2e293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029653b223a0c1a1a062a2c22166b2215352216362217382218393b22410c1a06062b306a2e353ca0032f2e362f382a352a352993293ba003051adb0502132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e223d2a452f463b472e482b492c4a271002683b22330c1ab8052a2e22106b220e35220f362210382211393b223a0c1aa4052b306a2e353ca0032f2e362f382a352a352993293ba003051a710502132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e22362a452f463b472e482b492c4a27092727f70105220e353ca003a2220e36220f37221038401a46050c1a46050c292306220f23061a3f052a2c6a2c2308221223081a36052a2c6a2f3930230c2216230c1a2b052a2c6a22183a2219230b220c37220d38220e230a220f36221023071a1105222022136a1a0d052c3030220f220c221531221432220d22112214680d22152225222522252d2225221a222522242223360c22172226222622262e2226221b222622262226222522277b0c27220e353ea0f81001220e36220f37221038401a9c040c291a9b040c29382a372b230a2c2306221323061aa1042a2c6a2f2308221623081a98042a2c6a32230c2219230c1a8f042a2c6a221b3a221c230b221d391a8304221f22116a1a7f041a8004221022122e3122101a7904220f322217220d2210680d22152224222422242d22242224222422232222360c401a21040c291a20040c1a50042a6922161a4d042b1a4d040c293622193b3b2ce33b221c69222723103b2a0c3d2a69293b692d2a693b22300c3b22300c220d353ca00331220d36220e382a352a352993293ba003051ab10302132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060202220d222c2a451aeb03463b472d482b492c4a2726f74003220e353ba0f8d802220e3629352a362b372c382d392e3a2f23063023072f2214230b0c299291f8c9012935293529372b382c6801323b3b2ce30b06002215222522252225222522252216222531222522240c5029352a362b372c382d392e3a2e2e2e2e2e2e68061a7703222d693b222b0c0b02002e22172f221f22303122293022301ae4020c5029352a362218373b2a1a52030c293ba003032b02062b2a1a48030c221f3b3b2ce3221c37221d3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa22203a2a2aab293ba203041a9302103b503b503b2a220d2d1a06030c2223372a2a1a01030c222e3b3b2ce3222537292232222f22441af1020c22303b3b2ce32a1aea020c293ba003051a650202593b2a299291031229362b3caa292b25042504511e113b6502012a65291a4802a803041a4602103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965222b3a222b3a2a2aa203032a0201293b22470c1a74022a2f2231221c2234306807222f352230362231383b224d0c2233391a5a022a306a2e353ca0032f2e362f382a352a352993293ba003051abb0102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e224a2a452f463b472e482b492d4a273a02ea303b3bef293ba003051a0702024a28092ab1292808b1293cb2293fb4291a6f01a503043b5002041aed01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ad1013f2d3f2809ec50220f3f2d280d34ec502b95502b2707293b3bef293ba003051ab701024b292817b1292808b1293cb2293fb4291a1701a503043b5002041a9501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11a77013f2e2c2817ec502c95502c27081a6b01221d693e2b69293b693b3b3b3b2d6805221b3c2e220d2d1a55010c501a540122192a35452a36462a37472a38482a39492a3a4a642708270a0260220e36220f37221038220d230c1a2d012213220f2d6b1a28012b2f2c1a26010c2d3b3b2ce32a3ba0031a1a1c01220e2a35452a36462a37472a38482a39492a3a4a64021a2a352937220f2a35452a36462a37472a38482a39492a3a4a64642707661f0a0000|@12543,1,@2675,@17610,@17611,@17612,@17613,@9598,@17615,@12551,@4848,@12675,@12676,@12681,@4725,16777215,@5803,@17674,@17675,@17676,@17677,@4554,@4898,@17678,@17679,@17680,@17681,@12686,@17684,@17685,@17686,@17687,@12689,@12690,@12694,@17692,@4685,@4642,@4062,@17697,@12705,@12710,@12711,@12712,@12713,@12719,@17705,@17706,@12721,@4054,@10832,@17707,@9592,@9139,@17609,@10808,@10907,@9139| 17609:D5,36|fb0cfa2c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa17347b0707000000|@12723,1,@2774,@17708,@9592| 17610:D3,36|fb072b2a3723080c299291031329353b2c360c2968012b2a69296801270402013b644200|@12544,1,@2676| 17611:D3,36|fb072b2a37230c0c299291031329353b2c360c2968012b2a69296801270402013b644200|@12544,1,@2677| 17612:D3,40|fb0d2b352c362d372e382f392d2d2d2d2d68052f370c2f36352a2a6931363b3b2ce3502b27084200|@12545,1,@2678| 17613:D4,12|fb05fa142a362b372c386b42|@12546,1,@2679,@17614| 17614:D5,84|fb092b2a38a203052b2a362c8029373529299291032b29352a362a3629353ba003043b500203fa381029382932a003052c680102082b250526041e293b270402013b64293ba00303fa1a103b5029356542000000|@12548,1,@2680,@12547,@5689| 17615:D4,12|fb0529362cfa112d7e030000|@12550,1,@2681,@9528| 17616:D15,220|fb1f33373439220c3a2b3ba003043b500203fad4103b50220d3629facfa003033c0214293b3bef280ba0030a293ffabc3f280bed02013b0304fab5020a220e2c2c3b220dfaae0c220e37220f3922103afaa6220e2d2c6b22122c2c2f2dfa950c293a2a372b3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa292eab293ba203033c020429fa6aa80303fa69103b503b502928403bdafa612a316afa602b326a220e33fa5c221c221f221f220e32fa550c220f34fa4b2e221e22212221221f221efa460c22182c452a4627151f09000000|@12553,1,@2682,@12554,@9107,@9139,@12557,@17624,16777215,@4557,@17625,@17626,@4062,@12566,@12552| 17617:D10,112|fb172f353036313840fa710cfa722a69fa722b69fa722c69292c2c6a302a220f3bfa69220f3bfa680c2e353ca0032e2e362f382a352a352993293ba00304fa5402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e2932220f33221022136806270a1f05000000|@12558,1,@2683,@4554,@17619,@17621,@17618,@4062,@10961,@4725| 17618:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@12560,1,@2688,@18,@4162,@4596,@12562,@4622| 17619:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@12560,1,@2684,@19,@4162,@4596,@12559,@4622| 17620:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2685,@19,@12559| 17621:D8,48|fb0b2b352c36fa34fa362b3b6b2c362cfa320c293ba003052a3b6902082935292cfa250c642e362e2bfa21337b050800|@12560,1,@2686,@21,@4162,@4596,@12561,@4622| 17622:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2687,@21,@12561| 17623:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@2689,@18,@12562| 17624:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa2d102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@12563,1,@2690,@4721| 17625:D4,36|fb062b2a37a203033b02172b2a37ab2a36932a2aa90303fa17103b502b362b3bdb654200|@12564,1,@2691,@4597| 17626:D5,40|fb062b2a37ab2a36932a2aa90303fa24103b502b362b3bdb293ba00304fa19020229356642000000|@12565,1,@2692,@4597,@9057| 17627:D7,68|fb0c323629fa49a003033c0214293b3bef280ba0030a293ffa363f280bed02013b03033b021a3235fa2a32220d3333220e3434fa2368092a3b2bfa20317b050d641f0800|@12567,1,@2693,@9107,@17628,@12566,@4642| 17628:D4,60|fb112c2c2a9291032e2a352b36312b2d3036313732383339343a220c2306220d2307220e2308fa200c2a2a2505250526031e2d3b6602012965440000|@4645,1,@2694,@12568| 17629:D24,980|fb2634351ad903a0f8730234351ad003a003043b5002041aca03103b50343729352a361ac203220d69220c352922121aba030c299291033d293529299291033029352a362a351a9703a0031a2a351a8f03a003043b5002041a8903103b502a37296801640207292503511e2f3b6502013b646402013b293ba003122f2d22122211221122111a6803220f7b0814293529352a363138293629353ca0030c2a362936291a4f03a06502013b2991f8c7013438293629353ba00331293830382a2216a203043b5002202a2216ab2a68012216932b2aa903041a1f03103b503b5022172c3b2de35026035102023b50220d38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643238293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa0910319220d22151a9602221422222221222122211a8d02221f7b0a22221292919129910307220c92919102013b0319220e22161a7202221522232222222222221a610222207b0a23221438293629353da0299103a2221738293629353da003041a4902103b503b5029353ba00314293729353ca003072936293564020229366402052936293564036a221238293629353da00327221435221536291a12020c28052a2d221a3b6805291a08021a09021a0a020c293ca09127050233221438293629353da003041ae301103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646529916602013b6502013b0319221122191abf01221822262225222522251a960122237b0a263b6664270802013b27062707f7520134351a9d01a0f8480134351a9401a003043b5002041a4e01103b503437323529220f1a49010c299291033d293529299291033029352a362a351a6601a0031a2a351a5e01a003043b5002041a1801103b502a37296801640207292503511e2f3b6502013b646402013b293ba003132c1a3401220f220e220e220efaf6220c7b0811293529372e37220c3b3bef22143b3bef2a3ba0030422150252293ba00304220e02492a2ab1292808b1293cb2293fb429faf7a503043b500203faf2103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f220cec503f32b1221d3f2e2c220cec502c95502c2708293b3bef293ba00304fabb0244293cb1292808b1293cb2293fb429faa1a503043b500203fa9c103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082f2f2b22182217221722162216221622167b0a193b1f0b0000|@12570,1,@2695,@19,@4594,@17630,@4596,@12596,@107,@4632,@12612,@12614,@12616,@8092,@12618,@12619,@12620,@10864,@12621,@21,@12569,16777215,@4054,@4139| 17630:D9,144|fb0a2936230d29299291031a29352a362a35fa88a003052a68010207292503511e193b6502013b64293ba00342fa71299291031a29352a362a35fa60a003052a68010207292503511e193b6502013b64293ba00303fa4d103b5029352935fa3ca003043b500203fa3f10293765021329352935fa27a003043b500203fa2a102937642e2afa263bfa27327b0606000000|@12572,1,@2696,@61,@5420,@5469,@4594,@12573,@12571| 17631:D3,4|fb023b42|@12576,1,@2697| 17632:D3,4|fb023b42|@12576,1,@2698| 17633:D28,480|fb252e36293ba0f80f012f352938293629353da0037529362a372d35343ba403051ac80102623b1ac6010c2c220d2b34370c0b02002e2a1aba010c5029363e2a6922123cab322a32221522152214360c293b691aa2012a691aa1012a691aa0012a692f2a69293ba00304220c0207220c2a1a90010c1a90012a691a8f012a693b3e3b3b2d6805271166028b313ba403051a7d0102812b38293629353da003041a7201103b503b5029353ba00314293729353ca00307293629356402022936640205293629356403051a4d0102031a4c013e2a692f363b1a17010c2a220f2b220d370c32350b02002c2a1a08010c5029363e2a69293b69293ba00303300206302a1a1d010c1a1d012a69220c2a693b3e3b3b2d680527116602c22f3529352a37313ba403051a010102b13bfac40c2c3629fafa0c28052a2f313068052b220d2e34370c30350b02002c2afaa90c5029363e2a6929fadb69293ba00303300205302afad20cfad32a69fad32a693b3b3b3b2d680522183cab22149291034d2214352215362a352b383c2b2b30221d382216221f36221b22242224faa60c2e3cab2d2a221d382216221f36221b22242224fa940c293ba003032b02052b2afa8b0c3b3d3c3b2d680527080202fa81293b692c2a693b3b3b3b2d6805271466641f040000|@12578,1,@2699,@5081,@9314,@8111,@5091,@5663,@5091,@12579,@5091,@9413,@5081,@8092,@8921,@8915,@12580,@5091,@5081,@12581,@12582,@12584,@5485,@9449,@12585,@12593,@12577,@5658| 17634:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2700,@12579| 17635:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2701,@12580| 17636:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@2702,@12581| 17637:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2703,@12584| 17638:D14,192|fb170b0200220cfac32bfac40c5029352a3629fabf0c221103033d02013b3c3c2b6a2d353da003652d362e3729221122130c22160304faa00202faa022143ba40304fa9c02093e22176929fa9769642a2a693b3b3b3b2d680522173ba6031922173cab302a221622162216221a0c293b69fa752a696602013b2a2a693b3b3b3b2d6805293b69342a69270b022e22130304fa590202fa5922113ba40304fa55020222133e2a69293b692c2a693b3b3b3b2d6805293b69302a69270727081f0a00|@12587,1,@2704,@12588,@8023,@12589,@5565,@12586,@9345,@12590,@12591,@5565,@12586,@5082| 17639:D3,4|fb023b42|@10938,1,@2705| 17640:D4,52|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa180c2a2a69270c02013b420000|@4648,1,@2706,@12589| 17641:D6,88|fb10329291034d32353336333ba203033b023e2a352b383b2b2b220f220f220f220f220f220f220ffa3a0c220d3cab2d2a220f220f220f220f220f220ffa290c293ba003032b02072b2afa20347e1127056502013b1f0800|@12595,1,@2707,@12585,@12593,@12594| 17642:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2708,@12594| 17643:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2709,@12577| 17644:D14,256|fb152b1a0601a003033c02122b3b3bef3ba003092b3ffaf43f3bed02013b0304faee02522b3b3bef293ba00304fae5024428122ab1292808b1293cb2293fb429fad6a503043b500203fad110292841bd2a3cb22a2a3b3bf02b3b3b32f050fab43f2d3f2812ec50333f2d281634ec502b95502b270764293b3bef293ba00304fa9f024428222ab1292808b1293cb2293fb429fa84a503043b500203fa7f10292841bd2a3cb22a2a3b3bf02b3b3b32f050fa6e3f2d3f2822ec50313f2d282634ec502b95502b27073e2a6934340c293b69fa522a69fa522a693b3e3b3b2d680529fa4a69fa4b2a69302a693b3e3c3b2d680522123c221322132dfa3922147b0715|@12598,1,@2710,@4062,@4139,@12599,16777215,@4054,@12600,@5091,@12601,@12597,@5091,@9592| 17645:D19,320|fb222b1a4601a003033c02132b3b3bef3ba0030a2b3f1a33013f3bed02013b03051a2c0102552b3b3bef293ba003051a2201024628122ab1292808b1293cb2293fb4291a1201a503043b5002041a0c0110292841bd2a3cb22a2a3b3bf02b3b3b32f050faef3f2d3f2812ec50333f2d281634ec502b95502b270764293b3bef293ba00304fada024428222ab1292808b1293cb2293fb429fabfa503043b500203faba10292841bd2a3cb22a2a3b3bf02b3b3b32f050faa93f2d3f2822ec50313f2d282634ec502b95502b27073e2a69220c340c293b69fa8c2a69fa8c2a693b3e3b3b2d6805221222100c293b69fa7d2a69fa7d2a693b3e3b3b2d680522153b69fa722a69fa722a693b3e3b3b2d6805293b69fa682a692f2a69fa652a69220d2a69fa612a6922142a693b3e3c3b2d6805221f3c222022202dfa4e22217b072400|@12615,1,@2711,@4062,@4139,@12599,16777215,@4054,@12600,@5091,@12601,@5091,@12607,@5091,@11235,@5091,@5091,@5091,@9592| 17646:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@2712,@12618| 17647:D3,4|fb023c42|@10862,1,@2713| 17648:D3,4|fb023d42|@10862,1,@2714| 17649:D5,28|fb0b2b353e2a69293b69fa1c2a69fa1c2a693b3b3b3b2d6805270542|@12623,1,@2715,@11234,@9425| 17650:D9,108|fb11333629fa71a003033c0214293b3bef280ba0030a293ffa5e3f280bed02013b03033b02403335fa52220d34343434342211fa4b220d680a2a3b2bfa460cfa4731220c6a220e35fa4222113322102210220e30221222122217680a2a2d2bfa23220c7b0512641f09000000|@12624,1,@2716,@9107,@17652,@12552,@4642,@17666,@17651| 17651:D4,64|fb122c2c2a929103322a352b36312b2d3036313732383339343a220c2306220d2307220e2308220f2309fa200c2a2a2505250526031e313b6602012965440000|@4645,1,@2732,@12653| 17652:D4,64|fb122c2c2a929103322a352b36312b2d3036313732383339343a220c2306220d2307220e2308220f2309fa200c2a2a2505250526031e313b6602012965440000|@4645,1,@2717,@12625| 17653:D11,580|fb18220c351a4802a003d2220c351a3f02a003043b5002041a3902103b50220c3734352922101a2f020c299291033d293529299291033029352a362a351a1002a0031a2a351a0802a003043b5002041a0202103b502a37296801640207292503511e2f3b6502013b646402013b293ba00304220f02622935292e2210221022102210221022101ad3010c5029362e362a2a22142b929103052a929102013b03352b352c362c352d362c382b3729353ba0031029363d3d2d326b2a2a692933696602012f2e2d2b250a250a250a26071e3b3b270702012966662704f76501220c351a7d01a0f85a01220c351a7301a003043b5002041a5d01103b50220c3734352922101a53010c299291033d293529299291033029352a362a351a4401a0031a2a351a3c01a003043b5002041a2601103b502a37296801640207292503511e2f3b6502013b646402013b293ba00304220f02eb293529372e37343b3bef22153b3bef2a3ba0030422160252293ba00304220d02492a2ab1292808b1293cb2293fb429fae1a503043b500203fadc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f220cec503f32b1221e3f2e2c220cec502c95502c2708293b3bef293ba00304faa50244293cb1292808b1293cb2293fb429fa8ba503043b500203fa86103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082f2f2b22182218221822182218221622180c220c3629353ba0031129363b2c220c6a2a2a6929221d696602022219270a27040201341f0c|@12627,1,@2718,@19,@4594,@4596,@12626,@21,16777215,@4054,@4139| 17654:D14,444|fb2432353336333534362c352b352c36291ab4010c1ab401220f693138293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643238293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa09103043bf72601280531220c22113b6805280532220c22103b68052a2a221a221a1a22010c29353ca003da220e92919103033b02ce3b2211299291031229362b3caa292b25042504511e113b6502012a653b2210299291031229362b3caa292b25042504511e113b6502012a652a2aa403033b028d2212299291038429352a362a352214299291033529352a362a35292ea003033c0217293b3bef2e3b3befa0030b293f2f3f313b3befed02013b03033c02082a250426031e343b6602013b6403043b50022f29fa8169fa822a6922152a69fa7e2a6966fa7d0c3e2a69293b693b3b3b3b2d680522223c222322232dfa690c5026042a250426031e833b6602013b646502272936221922172218fa4ffa510c2a2a0c64221d221d2b220e221e221e221e221dfa3f221e7b0a1e66270f1f0800|@12629,1,@2719,@12630,@17656,@12636,@12646,@12648,@12649,@4052,@9592,@12628,@11219,@12614| 17655:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@2720,@12630| 17656:D9,144|fb0a2936230d29299291031a29352a362a35fa88a003052a68010207292503511e193b6502013b64293ba00342fa71299291031a29352a362a35fa60a003052a68010207292503511e193b6502013b64293ba00303fa4d103b5029352935fa3ca003043b500203fa3f10293765021329352935fa27a003043b500203fa2a102937642e2afa263bfa27327b0606000000|@12632,1,@2721,@61,@5420,@5469,@4594,@12631,@12571| 17657:D3,4|fb023b42|@12635,1,@2722| 17658:D3,4|fb023b42|@12635,1,@2723| 17659:D11,64|fb0efa482d69fa482a692ffa472bfa480c0b020034fa452bfa460c5029352a3629fa410c2b30fa400c299291030829353b2a696402033c3169270a1f04000000|@12638,1,@2724,@17660,@17661,@12644,@8030,@12637,@8023,@10925,@11175| 17660:D3,24|fb062b3629353ba003082938292c362e7d053b6442000000|@12639,1,@2725| 17661:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@12641,1,@2726,@12642,@12640,@8100| 17662:D3,4|fb022b42|@12643,1,@2727| 17663:D3,4|fb022b42|@12643,1,@2728| 17664:D3,4|fb022b42|@12645,1,@2729| 17665:D3,4|fb023b42|@10938,1,@2730| 17666:D21,720|fb1b2b352c382d3929299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d68053336293ba003ea301a7c020c29353da0030829362968016402013b29929103b72935220c37230d29299291031b29352a362a351a5502a003052a68010207292503511e1a3b6502013b64293ba0034b1a3d02299291031b29352a362a351a2b02a003052a68010207292503511e1a3b6502013b64293ba003041a1702103b503b50293529351a0302a003043b5002041a0502103b502937650217293529351aea01a003043b5002041aec01103b502937643b1ae6010c2d2b2b2213363b1adf010c293b691adc012a691adb012a691ada012a69270902013b2d2a691ad1012a691ad0012a693b3b3b3b2d68052706f7840129929103c83237230d29299291031b29352a362a351a8201a003052a68010207292503511e1a3b6502013b64293ba0034b1a6a01299291031b29352a362a351a5801a003052a68010207292503511e1a3b6502013b64293ba003041a4401103b503b50293529351a3001a003043b5002041a3201103b502937650217293529351a1701a003043b5002041a1901103b502937643b1a13010c342b2b2210363b1a0c010c293b691a1d012a691a1c012a691a1b012a69332a691a17012a691a16012a693b3b3b3b2d6805270c02b73237230d29299291031a29352a362a35fabba003052a68010207292503511e193b6502013b64293ba00346faa4299291031a29352a362a35fa93a003052a68010207292503511e193b6502013b64293ba00303fa80103b503b5029352935fa6da003043b500203fa70103b50293765021529352935fa56a003043b500203fa59103b502937643bfa540c342b2b2210363bfa4e0c293b69fa602a69fa602a69fa602a69332a69fa5d2a69fa612a693b3b3b3b2d6805270c270942000000|@12651,1,@2731,@8044,@61,@5420,@5469,@4594,@9314,@9338,@11234,@9433,@9517,@11234,@9469,@5091,@9456,@5268,@11234,@12650,@9418| 17667:D22,424|fb1f220c351aac01a0f89701220c351aa201a003043b5002041a9c01103b50220c3729362a372b38220e352922131a8b010c299291033d293529299291033029352a362a351a6c01a0031a2a351a6401a003043b5002041a5e01103b502a37296801640207292503511e2f3b6502013b646402013b299291f81301293529362a383b06293b3b1a3701221869e350323ba0030f2b3ba003051a290102031a2801022b329291030f2b929103051a1d0102031a1c0102172b3ba003051a1601020d2b929103051a100102031a0f0129353ba003a029362c33221722171a02010c29353ba003282936221622162217faf5faf70c2a2a0c643122102b2218221b221922192219fae60c50221b6502632936303a299291030d29352936293b3b3ce3505102023b50312306299291032429350b02002ffabb2bfabc0c5029352a3629fab70c2f352c2a69313b3b2ce350260902023b50220e353ba00313220e363d2f2e220d6b2a2a6929222069660202221c6665021729362e220d2b22152218221622162216fa670c50221864270502112f220d2210220e220e220efa610c50221227070201341f0c0000|@12655,1,@2733,@18,@4594,@4596,@17668,@5009,@12669,@5009,@12672,@4687,@4685,@5009,@12636,@12628,@11219,@12614,@12654,@8023,@10925,@12596| 17668:D16,296|fb102b363ca203061a2901f717012b3529353ba003832c3529362e363cab2a2a692e36352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629faf0a003033c020d29faeba003033c020429fae6a06402013b9102013b02013b03162afad969fada2a69fada2a693b3e3c3b2d68056602012a64020129293b69fac82a69fac82a693b3c3b3b2d68052709028b2c363ca20304fab702812c3529362e363cab2a2a69faac352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa63a003033c020d29fa5ea003033c020429fa59a06402013b9102013b02013b03162afa4c69fa4d2a69fa4d2a693b3e3c3b2d68056602012a64020129293b69fa4b2a69fa4b2a693b3c3b3b2d6805270964420000|@12657,1,@2734,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@12658,@6303,@175,@5091,@12656| 17669:D4,8|fb02fa1042000000|@4606,1,@2735,@4605| 17670:D3,4|fb023b42|@10938,1,@2736| 17671:D4,32|fb082e2ea003033b02132e2caa2d0c2f3caa29303030fa140c2b2a69661f0400|@4843,1,@2737,@12675| 17672:D7,116|fb102d929103692d352e362a3629353ba003043b500203fa67103b5029362a392d3729352934fa5c6a303629353da00303fa55103b503b5029353ba00314293729353ca0030729362935640202293664020529362935642f3b2b312f680565340c30220d220dfa240c2a2a69270a02013b440000|@4648,1,@2738,@12678,@12677,@8092,@12676| 17673:D6,56|fb092c3ba0030f2b3ba003043b500203fa32103b02212c352d362d929103043b500203fa23102d352e362a2d692c2bfa1b0c2a2a69270643|@6073,1,@2739,@6072,@6072,@12681| 17674:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@12682,1,@2740,@4599| 17675:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2741,@8143| 17676:D3,24|fb0529383a2c2aa203062c2b362d7d042c2b372d7d040000|@12683,1,@2742| 17677:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2743,@8143| 17678:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2744| 17679:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2745| 17680:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2746| 17681:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa122f7e05654200|@12685,1,@2747,@12684| 17682:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2748,@12684| 17683:D3,4|fb023b42|@12685,1,@2749| 17684:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2750| 17685:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2751| 17686:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2752| 17687:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa122f7e05654200|@12688,1,@2753,@12687| 17688:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2754,@12687| 17689:D3,4|fb023b42|@12688,1,@2755| 17690:D4,8|fb02fa1010000000|@12688,1,@2756,@12691| 17691:D4,8|fb02fa1010000000|@12688,1,@2757,@12695| 17692:D4,52|fb0e2c2c2a929103272a352b360b0200342e302c3436fa280c5029352a362a2a692f2a250a250a26081e253b2708020129654400|@4645,1,@2758,@12698| 17693:D8,428|fb242d352e3630351aad01a003de30351aa501a003043b5002041a9f01103b50303729352a3629929191030e342c6931380c50312e452d4602af2d2d693b2a690b02002e2d2a9291034d2a352b362a352b362c382d392e3a2f23063135323629352a363b2b6933332b343434346807292f692d3caa3d3d220d22126b2f2a692930692c2a692e2a6922132a2517251726151e4c26150209292c2a35452a3646515129352a3631353236333834372c2c2b2d6b2f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652a2a6922192a69652214380c502e22152a35452a364664270c6602bc3035fad0a003443035fac9a003043b500203fabc103b50303729382a3729fab80c3b2f69220d2a2d2f6b220e2a696532230a0c502e3caa3b2b2f6a302a69293169220d2d452a46270802713035fa8da003653035fa86a003043b500203fa71103b503037293729353ea0030e332b6930370c50302d452c46023a2a362b382c392d3a2e23063b326922102f2b30303030680722112a69220e370c50333caa3d3d31220c6b220c2a6929220d6922122d452a46270b6502052e2b452a46651f0500|@12700,1,@2759,@19,@4594,@21,@12699,@18| 17694:D5,16|fb072b35293bfa14fa162f7b05040000|@12702,1,@2760,@12701,@4642| 17695:D4,36|fb092c2c2a929103182a352b36312b2dfa1e0c2a2a2505250526031e173b660201296544|@4645,1,@2761,@12703| 17696:D8,200|fb0e2c35facea003312c35fac7a003043b500203fac2102c37293629353ba0031529362b37fab50c3b2a2e6a2b2a69293269270402012d65028b2c35faa2a0032f2c35fa9ba003043b500203fa8a102c37293729353ba0031329362b383d3d2b2f6b2b2a69293269270402012d6502552c35fa70a0034d2c35fa69a003043b500203fa54102c372936292e2a9291032f2a352b362a3729353ba0031329362c383d3d2b306b2b2a69293169270402012c2b2a2506250626041e2d3b2704020129656502012b440000|@12704,1,@2762,@21,@4594,@12699,@18,@19| 17697:D4,12|fb0529362cfa112d7e030000|@12550,1,@2763,@9528| 17698:D6,96|fb0d2b929103572b352c362a3529353ba003043b500203fa531029362c3629353da00303fa4a103b5029353ba00314293729353ca0030729362935640202293664020529362935643c2a346a2c2a69343caa2931fa1e0c2b2a69270a02013b43|@12707,1,@2764,@12706,@8092,@12705| 17699:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2765,@12710| 17700:D4,32|fb082e2ea003033b02132e2caa2d0c2f3caa29303030fa140c2b2a69661f0400|@4843,1,@2766,@12711| 17701:D6,56|fb092c3ba0030f2b3ba003043b500203fa32103b02212c352d362d929103043b500203fa23102d352e362a2d692c2bfa1b0c2a2a69270643|@6073,1,@2767,@6072,@6072,@12712| 17702:D5,52|fb0e2e929103282e352f360b02002d2a343434fa2b0c5029352a362a2a692f220d220d220dfa1d0c2a2a69270902013b1f040000|@4648,1,@2768,@12714,@12713| 17703:D8,184|fb132f3629353ba003043b500203fab4103b5029362a3932372935323b3bef293ba00304faa20247281e2ab1292808b1293cb2293fb429fa93a503043b500203fa8e103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa6f3f2d3f281eec5022113f2d282234ec502b95502b27072b342b6a220e3629353da00303fa56103b503b5029353ba00314293729353ca003072936293564020229366402052936293564313b2b332f680565340c220e2a4522104627091f0500|@12716,1,@2769,@12717,@12715,16777215,@4054,@8092| 17704:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2770,@12719| 17705:D4,72|fb082b2a2306a203052b2a362c8029383a2c2aa8031b2a383a2d2aab2c37932a2aa90303fa2e103b502d372b3bdb6602152a3a3a2d2aa803062d2c392e7d052d2c3a392e7d056442|@12720,1,@2771,@4599| 17706:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2772,@8143| 17707:D4,12|fb0529362cfa112d7e030000|@12722,1,@2773,@9528| 17708:D4,12|fb0529362cfa112d7e030000|@12722,1,@2775,@9528| 17709:D6,120|fb1333299291036b29352a362a353ba003152a362b372a2a220d2211220c220ffa620c505102422a353ca0031d2a362b37292b220d3134221322132213221222122212fa430c5051021f2a372b382c2b2b220d220d2213220e220c36220f221622162216fa260c5051292503511e6a3b6502013b641f0900|@12725,1,@2776,@12726,@12736,@12724| 17710:D10,104|fb1b2e23062f2308303931230c323a33230bfa60220d220d6afa5d220e220e6afa5a220f220f6afa57221022106a220f3622102307221123092d2c3131220e220d221231221332220d22122215680dfa33221322136a22162a2c2214fa2afa2c0c3b27101f060000|@12728,1,@2777,@17711,@17713,@17715,@17717,@17719,@12727,@10879| 17711:D4,44|fb0a2b362c2b37370c502a36353e2b69293b69293ba003032b02052b2afa190c2e363b3b2ce3270542000000|@12730,1,@2778,@12729| 17712:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2779,@12729| 17713:D4,44|fb0a2b362c2b37380c502a36353d2b69293b69293ba003032b02052b2afa190c2e363b3b2ce3270542000000|@12730,1,@2780,@12731| 17714:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2781,@12731| 17715:D4,44|fb0b2b2a37350c502936352c352d363b2b2b6a293b69293ba003032d02052d2afa160c2f363b3b2ce3270642|@12730,1,@2782,@12732| 17716:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2783,@12732| 17717:D4,44|fb0a2b362c2b37230a0c502a36353c2b69293b69293ba003032b02052b2afa180c2e363b3b2ce32705420000|@12730,1,@2784,@12733| 17718:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2785,@12733| 17719:D6,292|fb162c3629353ca0039b2d352d352e362f373b2d299291031229362b3caa292b25042504511e113b6502012a652f373b3bef2d3b3bef2a3ba003032e0253293ba003043137024a2a2ab1292808b1293cb2293fb429fad9a503043b500203fad4103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f373f2d3f220cec503f32b1220d3f2e2c220cec502c95502c2708292f2f6a2d3c221122112d680527052f36317d0b2d352d352e362f372e373b3bef2c3b3bef2a3ba003032d0253293ba003043037024a2a2ab1292808b1293cb2293fb429fa59a503043b500203fa54103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e373f2d3f220cec503f32b1220c3f2e2c220cec502c95502c2708292e2e6a3d31336afa1d2a2c6a2709641f0400|@12734,1,@2786,16777215,@4054,@4801| 17720:D3,4|fb023b42|@12735,1,@2787| 17721:D14,200|fb2740facf0cfad00c292306220c2306faca2a2c6a2c2308220f2308fac22a2c6a2f3930230c2213230cfab82a2c6a22153a2216230b220c37220d38220e230a220f3622102307fa9f221d22136afa9c2c3030220f220c221531221432220d22112214680d2220221c221c221c2d221d221d221d222422260cfa75222022166afa72222122176afa6f222222186afa6c222322196afa552a2e2e22152212221b220e221a220f342217221a680d22252222222222222d222322232223222a222c22257b0b27000000|@12737,1,@2788,@4554,@4898,@17723,@17724,@17725,@17726,@12740,@17729,@17730,@17731,@17722| 17722:D3,16|fb042b2a37360c502b2a36362c800000|@12741,1,@2798| 17723:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2789| 17724:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2790| 17725:D3,20|fb052b2a370c293ba003062c2b362d7d04296442|@8973,1,@2791| 17726:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa122f7e05654200|@12739,1,@2792,@12738| 17727:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2793,@12738| 17728:D3,4|fb023b42|@12739,1,@2794| 17729:D3,16|fb042b2a37370c502b2a36372c800000|@12741,1,@2795| 17730:D3,16|fb042b2a37380c502b2a36382c800000|@12741,1,@2796| 17731:D3,16|fb042b2a37230a0c502b2a36230a2c80|@12741,1,@2797| 17732:D7,96|fb1cfa68220e220c220c6b0b03002d2afa5e0c5029352a36fa5a221322116a2214299291032f29352a362a352b362c372d382e392f3a221822182218220c22192219221922222212fa2e0c50292503511e2f5102023b505033230a2c347d1600|@12743,1,@2799,@17733,@9069,@17735,@12742| 17733:D9,204|fb12fad42a36692e3b3bef293ba00304faca0245402ab1292808b1293cb2293fb429fabca503043b500203fab7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa983f2d3f40ec50220d3f2d280e34ec502b95502b2707293b3bef293ba00304fa84024829282bb1292808b1293cb2293fb429fa69a503043b500203fa64103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa473f2e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa28220f7b070d000000|@12745,1,@2800,@17734,@12744,16777215,@4054,@9596,@9592| 17734:D4,12|fb0529362cfa112d7e030000|@12746,1,@2801,@9302| 17735:D3,24|fb082b2a370c2a36352a2a692c363b3b2ce3502b66420000|@12747,1,@2802| 17736:D9,296|fb24333b3bef22103b3bef2a3ba0030422110254293ba00304220c024b2a2ab1292808b1293cb2293fb4291a0601a503043b5002041a0001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022133f2d3f220cec503f32b122193f2e2c220cec502c95502c2708293b3bef293ba00304fac90244293cb1292808b1293cb2293fb429faafa503043b500203faaa103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27080b0600221a221422142214221422142222220e31221d221f0c5029352a362b372c382d392e3a2e2e2e2e2e2e680629fa560c3b222069221823103b2a0c3d2a69293b692d2a69fa4306fa44063d2b2b6a222c2a220c2f6b222d2a6922210c50296801222c3b3b2ce3271f1f0f000000|@12749,1,@2803,16777215,@4054,@4139,@12748,-1,@10945| 17737:D5,16|fb072b35293bfa14fa162f7b05040000|@12751,1,@2804,@12750,@4642| 17738:D8,124|fb152c2c2a9291036f2a352b362a35fa77a003552a35fa70a003043b500203fa6b102a37293a299291030d29352936293b3b3ce3505102023b502a2306299291032329352c380b02002cfa442bfa450c5029352a3629fa400c2b3b69313b3b2ce3270902013b6602013b2a2a2505250526031e6e3b66020129654400|@4645,1,@2805,@18,@4594,@12752,@8023,@10925| 17739:D3,4|fb023b42|@10938,1,@2806| 17740:D4,36|fb092c2c2a929103182a352b36312b2dfa1e0c2a2a2505250526031e173b660201296544|@4645,1,@2807,@12501| 17741:D4,88|fb072b2a2306a203152936932c2aa90303fa51103b502a362d3bdb6402382b2a3aa2031b29383a2c2aab2b37932a2aa90303fa30103b502c372b3bdb6602172b2a3aab2a39932a2aa90303fa17103b502b392b3bdb654200|@12755,1,@2808,@4599| 17742:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@2809,@8143| 17743:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2810,@12522| 17744:D7,124|fb112b352c362d372e382f392e37353b2a299291031229362b3caa292b25042504511e113b6502012a652e0318fa5906fa5a063d2b2b6a322a2e333333680666fa4e0c0216fa4106fa42063d2b2b6a322a2e333333680666fa3a0c3137352a2a6933373b3b2ce3503336352c2a69220c363b3b2ce3502d270c420000|@12756,1,@2811,-1,@10945,@10844,@10846| 17745:D5,20|fb0a2b352c3629382b2a2e36fa12fa14327b0606|@9566,1,@2812,@9567,@9565| 17746:D3,4|fb023b42|@10938,1,@2815| 17747:D9,60|fb052b363ca20304fa3e022e2b35293ba00304fa3702222c363ca20304fa3102182c35293ca00304fa2a020c2d363ca20304fa240202fa2464644200|@12761,1,@2816,@6303,@12762,@6303,@12769,@6303,@12760| 17748:D5,40|fb0c2c352d362e37fa2a0c0b02002f3530362b2f31363237fa1e0c5029352a362a2a692706430000|@12785,1,@2817,@11431,@12784| 17749:D6,56|fb08303ba003072e30452e460226fa3431fa35303030220c68073f2a69293b69293ba00303300205302afa200c3234452a4627041f060000|@12787,1,@2818,@17750,@12784,@12786| 17750:D4,28|fb0c2b2a363b2c372d382e392f3a3036312306fa13347b0b03000000|@12789,1,@2819,@12788| 17751:D9,124|fb1132929103043b500203fa7b103b5032353336fa76333030220c220c220c68072968012b3ba003033b0231fa62fa64220f220f220f220f220f220f220f220f680a296801fa51fa4b2f2c221122112211221122112211680a29680166292b220f6a0b02002c322b22112211fa2e0c5029352a362a2a69270b1f0900|@12791,1,@2820,@12792,@17752,@17753,@12788,@17754,@12790| 17752:D3,32|fb0b0b02002c372d382b2f39303a31230632360c5029352a362a2a6927054200|@12794,1,@2821| 17753:D3,32|fb0c2b2a372b382c392d3a2e23062f23073023083123093236347b0b03000000|@12789,1,@2822| 17754:D3,32|fb0c2b2a372b382c392d3a2e23062f23073023083123093236347b0b03000000|@12789,1,@2823| 17755:D12,144|fb0ffa982f6928092a69313532363337fa8e0c2a2a69fa8cfa8e220c220c3434680633353ba0032a33363437fa7e34692c68012a2a692d2afa760c303ba003032902052931fa6d0c22102f452a462707023933353ca00327333634372b6801fa572a692c2afa490c2f3ba003032902052930fa480c220f2e452a462706020c3336220c2a220c34347b050d27051f0500|@12796,1,@2824,@17756,@11431,@17757,@12790,@17758,@11487,@12842,@12843,@12795| 17756:D4,12|fb0529362cfa112d7e030000|@12797,1,@2825,@9300| 17757:D3,28|fb0a0b02002c372d382b2f39303a31360c5029352a362a2a69270542|@12798,1,@2826| 17758:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@12800,1,@2827,@12799| 17759:D10,228|fb1a2d3a29352f352937313632373338342306220c23073092910307303529396402013b0b02002e3ca0030631353da002013b031b313629352a362b372c382b2b2b6a296801302a452f465026070206293b4532465029352a36221435221536221637fa8b0cfa8cfa8e2217221722166805280528403bdafa8245280728403bdafa7d45280728403bdafa7845280628403bdafa734529220f46220d47220c482b492e4a6c502a2212462a472e482d492c4a314b6c502b22184630472e482d492b4a314b6c502c31462c472b482e496c503f2a69293069221a2212452a4627171f040000|@12801,1,@2828,@11431,@17761,@12799,@17762,@17797,@17798,@17760| 17760:D7,124|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa3a0cfa3b2e366928092a69293b69293ba003032c02052c2afa290c293ba003032e02052e2afa200c32372a69270942|@12840,1,@2867,@11431,@17799,@12841,@12839| 17761:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@12802,1,@2829| 17762:D5,56|fb0e293968012a3868012b376801292c2c6a2d363ba00303fa2a103b502d363529350b02002e2d2bfa1e0c5029352a362a2a69270b420000|@12804,1,@2830,@5689,@12803| 17763:D12,120|fb0efa802d6928092a692f3530363137fa760c2a2a69fa7432326a31353da0030830fa6c452b46024c31353ba00327313632372b6801fa5c2a692c2afa5a0c2f3ba003032902052930fa510c220d2e452a462706021f31373238293529fa410c2e3ba00303290205292ffa380c220c2e452a462705270544|@12806,1,@2831,@17764,@11431,@17765,@8997,@12809,@11487,@12836,@11477,@12805| 17764:D4,12|fb0529362cfa112d7e030000|@12807,1,@2832,@9311| 17765:D4,24|fb080b02002c362d372bfa180c5029352a362a2a69270542|@12808,1,@2833,@12803| 17766:D4,24|fb080b02002e352f362bfa180c5029352a362a2a69270542|@12811,1,@2834,@12810| 17767:D18,304|fb121a37012d6928092a692f35303631371a2c010c2a2a691a290132326a31350a0600360041009e00c5000c00cd00313632372b68011a0f012a692c2a1a0c010c2f3ba0030329020629301a02010c220d2e452a46270602d43136332a33faf4347b050b3136323733382a352b362b929103372b353f28403bdafadc45280528403bdafad745292e462d472b4832496c502a2c462a4732486c503f2a69293469221133452a4627050213fab42b2b316b3f2a69293269220f31452a46662705026c313632372b6801fa9a2a692c2afa7c0c2f3ba003032902052930fa8b0c220d2e452a462706024530fa81452b46023d3136323733382a352b363f28403bdafa6f45280528403bdafa6a45292d462c472b4831496c502a2e462a4731486c503f2a69293369221032452a462709270544|@12812,1,@2835,@17769,@11431,@17770,@12815,@11487,@12824,@10880,@17780,@17781,@17785,@12831,@12833,@8997,@17791,@17768| 17768:D7,64|fb0b293968012a386801292b3bfa3d0cfa3e2d366928092a69293b69293ba003032c02052c2afa2c0c293ba003033b02053b2afa230c31372a69270842000000|@12827,1,@2859,@11431,@17792,@12835,@12834| 17769:D4,12|fb0529362cfa112d7e030000|@12813,1,@2836,@9416| 17770:D4,24|fb080b02002c362d372bfa180c5029352a362a2a69270542|@12814,1,@2837,@12810| 17771:D4,24|fb080b02002e352f362bfa180c5029352a362a2a69270542|@12817,1,@2838,@12816| 17772:D7,84|fb0e2c352d362e372f382935fa5233336a3f28403bdafa4c45280528403bdafa47452930462f472b482c496c502a2d462a472c486c503f2a69220d35220e36220f37fa280c2a2a69220d34452a46270b44000000|@12818,1,@2839,@17774,@17775,@17773,@11431| 17773:D7,64|fb0b293968012a386801292b3bfa3d0cfa3e2d366928092a69293b69293ba003032c02052c2afa2c0c293ba003033b02053b2afa230c31372a69270842000000|@12822,1,@2842,@11431,@17776,@12823,@12821| 17774:D4,24|fb080b02002c362d372bfa180c5029352a362a2a69270542|@12819,1,@2840,@12816| 17775:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@12820,1,@2841,@12803| 17776:D3,8|fb033e2a36694200|@11468,1,@2843| 17777:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2844,@12823| 17778:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2845,@12821| 17779:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2846,@12824| 17780:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@12825,1,@2847,@11470| 17781:D7,64|fb0b293968012a386801292b3bfa3d0cfa3e2d366928092a69293b69293ba003032c02052c2afa2c0c293ba003033b02053b2afa230c31372a69270842000000|@12827,1,@2848,@11431,@17782,@12828,@12826| 17782:D3,8|fb033e2a36694200|@11468,1,@2849| 17783:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2850,@12828| 17784:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2851,@12826| 17785:D7,60|fb0a293868013b2a3bfa3d0cfa3e2c366928092a69293b69293ba003032c02052c2afa2c0c293ba003033b02053b2afa230c30372a69270742000000|@12827,1,@2852,@11431,@17786,@12830,@12829| 17786:D3,8|fb033e2a36694200|@11468,1,@2853| 17787:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2854,@12830| 17788:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2855,@12829| 17789:D4,24|fb080b02002e352f362bfa180c5029352a362a2a69270542|@12832,1,@2856,@12803| 17790:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2857,@12833| 17791:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@12825,1,@2858,@11470| 17792:D3,8|fb033e2a36694200|@11468,1,@2860| 17793:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2861,@12835| 17794:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2862,@12834| 17795:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2863,@12836| 17796:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2864,@12805| 17797:D3,48|fb0c2923063ba091030429390202293a2a3868012a68013b2b2b6a0b02002c31372b33360c5029352a362a2a69270942|@12837,1,@2865| 17798:D4,52|fb0d2923063ba091030429390202293a2a3868012b3768012b6801292c2c6a0b02002c32362bfa180c5029352a362a2a69270a42|@12838,1,@2866,@12803| 17799:D3,8|fb033e2a36694200|@11468,1,@2868| 17800:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2869,@12841| 17801:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2870,@12839| 17802:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2871,@12842| 17803:D4,24|fb080b02002e352f362bfa180c5029352a362a2a69270542|@12845,1,@2872,@12844| 17804:D7,92|fb102c37293529382f35303631383239fa56220c220c6a3f28403bdafa4e45280628403bdafa4945292f462e4731482b492c4a6c502a2d462a472c486c503f2a69220f35221036221137fa280c2a2a69220f33452a46270d44000000|@12846,1,@2873,@17806,@17807,@17805,@11431| 17805:D7,124|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa3a0cfa3b2e366928092a69293b69293ba003032c02052c2afa290c293ba003032e02052e2afa200c32372a69270942|@12850,1,@2876,@11431,@17808,@12851,@12849| 17806:D4,24|fb080b02002c362d372bfa180c5029352a362a2a69270542|@12847,1,@2874,@12844| 17807:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@12848,1,@2875,@12803| 17808:D3,8|fb033e2a36694200|@11468,1,@2877| 17809:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2878,@12851| 17810:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2879,@12849| 17811:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2880,@12795| 17812:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2881,@12786| 17813:D19,388|fb151a8b012d6928092a692f35303631371a80010c2a2a691a7d012e33336b31353da00341313629352a362b383f28403bda1a670145280528403bda1a61014529220c462e472b4830496c502a2d462a4730486c503f2a69293269220f2e452a462708f7190131353ca0035c3136323733383b06293b3b1a2a01220d37220e386ae3501a22013336346a2e68012a2a692e1a18010c3c3169293b69293ba003032b02062b2a1a08010c292e1a06010c220d3ba0030329020629220efafb0c221434452a46270d02b731353ba00358313629352a362b392c3a2d23062b35293ba003033b02052935293964280528403bdafaca45280628403bdafac5452931462e472c482b49344a6c502a22104632472a4834496c503f2a6929220d69221331452a46270c025931353ea00327313632372b680131392a692c2afa790c2f3ba003032902052930fa7c0c220d2e452a462706022c313732382a35293ba003033b0205293529386429fa5f0c2f3ba003032902052930fa560c220d2e452a4627062705440000|@12855,1,@2882,@17814,@11431,@17815,@17816,@17817,@17818,@17819,@12870,@12871,@11487,@12872,@17823,@17824,@12877,@11477,@12854| 17814:D4,12|fb0529362cfa112d7e030000|@12856,1,@2883,@9528| 17815:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@12857,1,@2884| 17816:D4,36|fb0b293868012a3768013b2b2b6a0b02002c30362bfa190c5029352a362a2a6927084200|@12858,1,@2885,@12803| 17817:D3,36|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a6927084200|@12859,1,@2886| 17818:D15,296|fb102b363ca203061a2901f717012b3529353ba003832c3529362e363cab2a2a692e36352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629faf0a003033c020d29faeba003033c020429fae6a06402013b9102013b02013b03162afad969fada2a69fada2a693b3e3c3b2d68056602012a64020129293b69fac82a69fac82a693b3c3b3b2d68052709028b2c363ca20304fab702812c3529362e363cab2a2a692e37352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa63a003033c020d29fa5ea003033c020429fa59a06402013b9102013b02013b03162afa4c69fa4d2a69fa4d2a693b3e3c3b2d68056602012a64020129293b69fa472a69fa472a693b3c3b3b2d6805270964420000|@12861,1,@2887,@6303,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@12862,@6303,@5091,@12860| 17819:D3,60|fb0b2b352c3629353ba0031729360b02002e2d2b32360c5029352a362a2a692706021529360b02002e2d2b32370c5029352a362a2a69270665420000|@12869,1,@2888| 17820:D4,28|fb072b929103122b352c363b2b692afa170c2a2a69270402013b4200|@4648,1,@2889,@12870| 17821:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2890,@12871| 17822:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2891,@12872| 17823:D3,36|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a6927084200|@12873,1,@2892| 17824:D8,68|fb0c293a68012a3968012b38fa420c2a2c3bfa400cfa412e366928092a69293b69293ba003032c02052c2afa2f0c293ba003032e02052e2afa260c32372a692709420000|@12875,1,@2893,@11477,@11431,@17825,@12876,@12874| 17825:D3,8|fb033e2a36694200|@11468,1,@2894| 17826:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2895,@12876| 17827:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2896,@12874| 17828:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2897,@12877| 17829:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2898,@12854| 17830:D136,1384|fb2c2b363ca203061a6905f759052b3529353ba0f8b4012c3529362a372b3830363cab293ba203061a4d05f77801293cab2d2a691a4505352a2a0c642c3ca203061a3c05f746012c3cab293ba203051a320502e72e362a3cab2a2a691a2905352a2a0c642d3ca203051a200502b432382e3cab2a2a691a0f05352a2a0c64313da203051a0a050281220d35323cab2a2a691a0005352a2a0c64220c3ea203051af604024c221137220d3cab2a2a691ad704352a2a0c6422153922113cab2a2a691ac504352a2a0c64291ad004691ad0042a691acf042a691ace042a691acd042a69322a691ac9042a691ac8042a69270f1ac5042a691ac4042a692c2a691ac0042a691abf042a6927091abc042a691abb042a692c2a691ab7042a691ab6042a6927091ab3042a691ab2042a692c2a691aae042a691aad042a6927091aaa042a693b3c3b3b2d6805303cab332a691a9c04351a9c04221136693b2a3e3c6b642a0c642a2a0c64291a8b04691a8b042a691a8a042a691a89042a691a88042a69312a691a84042a691a83042a69270e1a80042a691a7f042a692c2a691a7b042a691a7a042a6927081a77042a693b3c3b3b2d6805293b691a6c042a691a6b042a693b3c3b3b2d6805270bf79b032c363ca203061a5804f78f032c3529353ca0f8c4012d3529362a372b3831363cab293ba203061a3c04f78801293cab2d2a691a3404351a34043437693b2a3e3c6b642a0c642a2a0c642c3ca203061a2004f747012c3cab2f2a691a0c04351a1404220e37693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051afc0302e831362a3cab2a2a691a3303352a2a0c642d3ca203051ae60302b5220c382e3cab2a2a691a1803352a2a0c64313da203051acf030281221035323cab2a2a691a0903352a2a0c64220c3ea203051ab703024c221437220d3cab2a2a691ae002352a2a0c6422183922113cab2a2a691ace02352a2a0c64291a9103691a91032a691a90032a691a8f032a691a8e032a69322a691a8a032a691a89032a69270f1a86032a691a85032a692c2a691a81032a691a80032a6927091a7d032a691a7c032a692c2a691a78032a691a77032a6927091a74032a691a73032a692c2a691a6f032a691a6e032a6927091a6b032a693b3c3b3b2d6805291a6203691a62032a691a61032a691a60032a691a5f032a69322a691a5b032a691a5a032a69270e1a57032a691a56032a692c2a691a52032a691a51032a6927081a4e032a693b3c3b3b2d6805293b691a43032a691a42032a693b3c3b3b2d6805270bf7c1012d363ca203061a2f03f7b5012d3529362a372b3831363cab293ba203061a1c03f77c01293cab2c2a691a6402351a10033438693b2a3d3c6b642a0c642a2a0c642c3ca203061afc02f73b012c3cab293ba203051af20202e730362a3cab2a2a691a8101352a2a0c642d3ca203051adc0202b434382e3cab2a2a691a6701352a2a0c64313da203051ac6020281220f35323cab2a2a691a5801352a2a0c64220c3ea203051aae02024c221337220d3cab2a2a691a2f01352a2a0c6422173922113cab2a2a691a1d01352a2a0c64291a8802691a88022a691a87022a691a86022a691a85022a69322a691a81022a691a80022a69270f1a7d022a691a7c022a692c2a691a78022a691a77022a6927091a74022a691a73022a692c2a691a6f022a691a6e022a6927091a6b022a691a6a022a692c2a691a66022a691a65022a6927091a62022a693b3c3b3b2d6805303cab322a69faf5351a51022a0c642a2a0c64291a4a02691a4a022a691a49022a691a48022a691a47022a69312a691a43022a691a42022a69270e1a3f022a691a3e022a692c2a691a3a022a691a39022a6927081a36022a693b3c3b3b2d6805293b691a2b022a691a2a022a693b3c3b3b2d6805270b646442|@12880,1,@2899,@6303,@8198,@157,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@116,@17831,@9320,@5091,@12308,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@11925,@9327,@5091,@12882,@6303,@8198,@118,@17833,@8198,@17834,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@12373,@5091,@9324,@5091,@12029,@5091,@9324,@5091,@10252,@9327,@5091,@12889,@6303,@8198,@17835,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@12901,@9320,@5091,@12905,@5091,@9324,@5091,@12373,@5091,@9324,@5091,@12907,@9327,@5091,@12879| 17831:D5,24|fb07fa2035fa212b36693b2a3e3c6b642a0c642c2a2d7d04|@5080,1,@2900,@118,@17832| 17832:D3,12|fb052936352c2a2d7d040000|@12881,1,@2901| 17833:D3,12|fb052936352c2a2d7d040000|@12880,1,@2902| 17834:D3,12|fb052936352c2a2d7d040000|@12880,1,@2903| 17835:D85,820|fb2d2b363ba203061a3503f718032b35392c363cab2a2a691a2903352a2a0c642f363ca203061a1f03f7e1022f353530363cab293ba203051a110302e62a362a3cab2a2a691a0803352a2a0c642d3ca203051aff0202b32e382e3cab2a2a691aee02352a2a0c64313da203051ae90202803235323cab2a2a691ae002352a2a0c64220c3ea203051ad602024c220d37220d3cab2a2a691ab702352a2a0c6422113922113cab2a2a691aa502352a2a0c64291ab002691ab0022a691aaf022a691aae022a691aad022a69322a691aa9022a691aa8022a69270f1aa5022a691aa4022a692c2a691aa0022a691a9f022a6927091a9c022a691a9b022a692c2a691a97022a691a96022a6927091a93022a691a92022a692c2a691a8e022a691a8d022a6927091a8a022a693b3c3b3b2d680534363da203061a7c02f7b901343536220c363cab2a2a691a1302352a2a0c64220f363ea203061a6002f78001220f353a2210363cab293ba203051a500202e62a362a3cab2a2a691ad701352a2a0c642d3ca203051a3a0202b32e382e3cab2a2a691abd01352a2a0c64313da203051a240202803235323cab2a2a691aaf01352a2a0c64220c3ea203051a0d02024c220d37220d3cab2a2a691a8601352a2a0c6422113922113cab2a2a691a7401352a2a0c64291ae701691ae7012a691ae6012a691ae5012a691ae4012a69322a691ae0012a691adf012a69270f1adc012a691adb012a692c2a691ad7012a691ad6012a6927091ad3012a691ad2012a692c2a691ace012a691acd012a6927091aca012a691ac9012a692c2a691ac5012a691ac4012a6927091ac1012a693b3c3b3b2d68052214363fa203051ab2010256221435382215363cab2a2a691aa501351aa5012a0c642a2a0c64221835372219363cab2a2a69221936352a2a0c64291a8a01691a8a012a691a89012a691a88012a691a87012a69322a691a83012a691a82012a69270f1a7f012a691a7e012a692c2a691a7a012a691a79012a69270a1a76012a691a75012a692c2a691a71012a691a70012a6927091a6d012a691a6c012a692c2a691a68012a691a67012a69270a1a64012a691a63012a692c2a691a5f012a691a5e012a6927091a5b012a693b3c3b3b2d68056542|@4036,1,@2904,@8198,@115,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@116,@12894,@9320,@5091,@9680,@5091,@9324,@5091,@12898,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12373,@5091,@9324,@5091,@12893,@9327| 17836:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2905,@9,@12896| 17837:D4,12|fb05fa14352c2a2d7d040000|@12044,1,@2906,@160| 17838:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2907,@118,@12903| 17839:D4,12|fb05fa14352c2a2d7d040000|@9605,1,@2908,@111| 17840:D31,592|fb122b363ca203061a5102f740022b3529353ba003692c3529362a372f363cab293ba203051a38020230293cab2c2a691a3102352a2a0c642c3cab2e2a691a2702352a2a0c64291a2202691a22022a691a21022a692f2a6927091a1b022a693b3c3b3b2d6805293b691a10022a691a0f022a693b3c3b3b2d6805270af7ce012c363ca203061afc01f7c2012c3529353ca0038d2d3529362f363cab2a2a691ae701352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ac501a003033c020f291abf01a003033c0205291ab901a06402013b9102013b02013b03192a1aab01691aab012a691aaa012a693b3e3c3b2d68056602012a64020129293b691a97012a691a96012a693b3c3b3b2d68052709f72c012d363ca203061a8301f720012d3529353da0038c2e35293630363cab2a2a691a6e01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2401a003033c020f291a1e01a003033c0205291a1801a06402013b9102013b02013b03192a1a0a01691a0a012a691a09012a693b3e3c3b2d68056602012a64020129293b691a06012a691a05012a693b3c3b3b2d68052709028b2e363ca20304faf402812e35293630363cab2a2a69fae9352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa90a003033c020d29fa8ba003033c020429fa86a06402013b9102013b02013b03162afa7969fa7a2a69fa7a2a693b3e3c3b2d68056602012a64020129293b69fa882a69fa882a693b3c3b3b2d680527096464644200|@12881,1,@2909,@6303,@5086,@7,@179,@6393,@5091,@9324,@6395,@5091,@12926,@6303,@160,@4362,@4363,@4364,@6392,@5268,@6395,@5091,@12933,@6303,@148,@5091,@12940,@6303,@156,@5091,@12916| 17841:D12,108|fb102b363ca20304fa6e025d2b352c363cab293ba20304fa63022f2a352a3cab2a2a69fa5b352a2a0c642e362e3cab2a2a693236352a2a0c6429fa4869fa492a69fa492a69302a69270bfa442a693b3c3b3b2d6805293b69fa3a2a69fa3a2a693b3c3b3b2d68052708420000|@12919,1,@2910,@6303,@5086,@7,@6393,@5091,@9324,@6395,@5091,@12918| 17842:D288,2992|fb392b363ca203061ab10bf79e0b2b3529353ba0f8cc032c3529362e363cab293ba203061a990bf794032a352a3cab2a2a693037352a2a0c642d3ca203061a830bf761032e372e3cab2a2a691a790b351a790b2a0c642a2a0c64313da203061a6e0bf72703323a323cab293ba203051a620b02e62a362a3cab2a2a691a590b352a2a0c642d3ca203051a500b02b32e382e3cab2a2a691a3f0b352a2a0c64313da203051a3a0b02803235323cab2a2a691a310b352a2a0c64220c3ea203051a270b024c220d37220d3cab2a2a691a080b352a2a0c6422113922113cab2a2a691af60a352a2a0c64291a010b691a010b2a691a000b2a691aff0a2a691afe0a2a69322a691afa0a2a691af90a2a69270f1af60a2a691af50a2a692c2a691af10a2a691af00a2a6927091aed0a2a691aec0a2a692c2a691ae80a2a691ae70a2a6927091ae40a2a691ae30a2a692c2a691adf0a2a691ade0a2a6927091adb0a2a693b3c3b3b2d6805220d3ea203061acd0af70102220e2307220e3cab2a2a691a480a351abc0a221636693b2a3e3c6b642a0c642a2a0c6422113fa203061aa60af7b90122123622123cab2a2a691a360a352a2a0c6422152805a203061a8b0af781012216230622163cab293ba203051a7c0a02e62a362a3cab2a2a691afb09352a2a0c642d3ca203051a660a02b32e382e3cab2a2a691ae109352a2a0c64313da203051a500a02803235323cab2a2a691ad309352a2a0c64220c3ea203051a390a024c220d37220d3cab2a2a691aaa09352a2a0c6422113922113cab2a2a691a9809352a2a0c64291a130a691a130a2a691a120a2a691a110a2a691a100a2a69322a691a0c0a2a691a0b0a2a69270f1a080a2a691a070a2a692c2a691a030a2a691a020a2a6927091aff092a691afe092a692c2a691afa092a691af9092a6927091af6092a691af5092a692c2a691af1092a691af0092a6927091aed092a693b3c3b3b2d6805221a2806a203051ade090258221b38221b3cab2a2a691aeb08351acf092a0c642a2a0c64221f39221f3cab2a2a691ad308351abb092a0c642a2a0c64291ab409691ab4092a691ab3092a691ab2092a691ab1092a69322a691aad092a691aac092a69270f1aa9092a691aa8092a692c2a691aa4092a691aa3092a69270a1aa0092a691a9f092a692c2a691a9b092a691a9a092a6927091a97092a691a96092a692c2a691a92092a691a91092a6927091a8e092a691a8d092a692c2a691a89092a691a88092a69270a1a85092a691a84092a692c2a691a80092a691a7f092a6927091a7c092a691a7b092a692c2a691a77092a691a76092a6927091a73092a693b3c3b3b2d6805293b691a68092a691a67092a693b3c3b3b2d68052709f7c8072c363ca203061a5409f7bc072c3529353ca0f8b4012d3529362a372b3831363cab293ba203061a3809f77801293cab2d2a693237352a2a0c642c3ca203061a2409f747012c3cab2f2a691a1c09351a1c09220e38693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051a040902e831362a3cab2a2a691a7b07352a2a0c642d3ca203051aee0802b5220c382e3cab2a2a691a6007352a2a0c64313da203051ad7080281221035323cab2a2a691a5107352a2a0c64220c3ea203051abf08024c221437220d3cab2a2a691a2807352a2a0c6422183922113cab2a2a691a1607352a2a0c64291a9908691a99082a691a98082a691a97082a691a96082a69322a691a92082a691a91082a69270f1a8e082a691a8d082a692c2a691a89082a691a88082a6927091a85082a691a84082a692c2a691a80082a691a7f082a6927091a7c082a691a7b082a692c2a691a77082a691a76082a6927091a73082a693b3c3b3b2d6805291a6a08691a6a082a691a69082a691a68082a691a67082a69322a691a63082a691a62082a69270e1a5f082a691a5e082a692c2a691a5a082a691a59082a6927081a56082a693b3c3b3b2d6805293b691a4b082a691a4a082a693b3c3b3b2d6805270bf7fe052d363ca203061a3708f7f2052d3529353da0f85f022e35293630363cab293ba203061a1f08f727022a362a3cab2a2a691a1508352a2a0c642d3ca203061a0c08f7f3012e3a2e3cab2a2a691ace05351afe07220f36693b2a3e3c6b642a0c642a2a0c64313da203061ae907f7af013237323cab2a2a691adf07352a2a0c64220c3ea203061ad507f77a01220d39220d3cab2a2a691a8505351ac5072a0c642a2a0c6422103fa203061ab907f73d0122113822113cab293ba203051aab0702e62a362a3cab2a2a691a6205352a2a0c642d3ca203051a950702b32e382e3cab2a2a691a4805352a2a0c64313da203051a7f0702803235323cab2a2a691a3a05352a2a0c64220c3ea203051a6807024c220d37220d3cab2a2a691a1105352a2a0c6422113922113cab2a2a691aff04352a2a0c64291a4207691a42072a691a41072a691a40072a691a3f072a69322a691a3b072a691a3a072a69270f1a37072a691a36072a692c2a691a32072a691a31072a6927091a2e072a691a2d072a692c2a691a29072a691a28072a6927091a25072a691a24072a692c2a691a20072a691a1f072a6927091a1c072a693b3c3b3b2d680522163522163cab2a2a69221e37352a2a0c64291a0107691a01072a691a00072a691aff062a691afe062a69322a691afa062a691af9062a6927101af6062a691af5062a692c2a691af1062a691af0062a6927091aed062a691aec062a692c2a691ae8062a691ae7062a6927091ae4062a691ae3062a692c2a691adf062a691ade062a6927091adb062a691ada062a692c2a691ad6062a691ad5062a6927091ad2062a693b3c3b3b2d6805293b691ac7062a691ac6062a693b3c3b3b2d68052709f789032e363ca203061ab306f77d032e3529353ea0f8c4012f3529362a372b3833363cab293ba203061a9706f78801293cab2d2a691af704351a8b06220d38693b2a3e3c6b642a0c642a2a0c642c3ca203061a7606f746012c3cab293ba203051a6c0602e72f362a3cab2a2a691a4b03352a2a0c642d3ca203051a560602b433382e3cab2a2a691a3103352a2a0c64313da203051a40060281220e35323cab2a2a691a2203352a2a0c64220c3ea203051a2806024c221237220d3cab2a2a691af902352a2a0c6422163922113cab2a2a691ae702352a2a0c64291a0206691a02062a691a01062a691a00062a691aff052a69322a691afb052a691afa052a69270f1af7052a691af6052a692c2a691af2052a691af1052a6927091aee052a691aed052a692c2a691ae9052a691ae8052a6927091ae5052a691ae4052a692c2a691ae0052a691adf052a6927091adc052a693b3c3b3b2d6805303cab322a691a4a02351aca05221436693b2a3e3c6b642a0c642a2a0c64291ab905691ab9052a691ab8052a691ab7052a691ab6052a69312a691ab2052a691ab1052a69270e1aae052a691aad052a692c2a691aa9052a691aa8052a6927081aa5052a693b3c3b3b2d6805293b691a9a052a691a99052a693b3c3b3b2d6805270bf7af012f363ca203061a8605f7a3012f3529362a372b3833363cab293ba203061a7305f76a01293cab293ba203051a690502e62b362a3cab2a2a691aa401352a2a0c642d3ca203051a530502b32f382e3cab2a2a691a8a01352a2a0c64313da203051a3d0502803335323cab2a2a691a7c01352a2a0c64220c3ea203051a2605024c220e37220d3cab2a2a691a5301352a2a0c6422123922113cab2a2a691a4101352a2a0c64291a0005691a00052a691aff042a691afe042a691afd042a69322a691af9042a691af8042a69270f1af5042a691af4042a692c2a691af0042a691aef042a6927091aec042a691aeb042a692c2a691ae7042a691ae6042a6927091ae3042a691ae2042a692c2a691ade042a691add042a6927091ada042a693b3c3b3b2d68052d3ca203051acd0402482d3cab312a69fab7352a2a0c64303cab332a69fa8e351ab6042a0c642a2a0c64291aaf04691aaf042a691aae042a691aad042a691aac042a69312a691aa8042a691aa7042a69270d1aa4042a691aa3042a692c2a691a9f042a691a9e042a6927091a9b042a693b3c3b3b2d6805293b691a90042a691a8f042a693b3c3b3b2d6805270b6464646442000000|@12955,1,@2911,@6303,@8198,@8198,@116,@12956,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@17845,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@12964,@12968,@9320,@5091,@12898,@5091,@9324,@5091,@12981,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12983,@5091,@9324,@5091,@12258,@5091,@9324,@5091,@12985,@5091,@9324,@5091,@9721,@9327,@5091,@12987,@6303,@8198,@8198,@118,@17853,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@12373,@5091,@9324,@5091,@12029,@5091,@9324,@5091,@10252,@9327,@5091,@12994,@6303,@8198,@184,@8198,@17864,@8198,@115,@8198,@13087,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@13091,@5091,@9324,@5091,@13093,@5091,@9324,@5091,@13095,@5091,@9324,@5091,@13097,@5091,@9324,@5091,@13099,@5091,@9324,@5091,@13101,@9327,@5091,@13103,@6303,@8198,@17868,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@17869,@9320,@5091,@13110,@5091,@9324,@5091,@9606,@5091,@9324,@5091,@13112,@9327,@5091,@13114,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@13121,@9320,@5091,@12898,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9606,@9327,@5091,@12954| 17843:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2912,@118,@12958| 17844:D13,92|fb122b363ba20304fa5e02432b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a69fa43352a2a0c6429fa3f69fa402a69fa402a69fa402a69fa402a69322a69fa3d2a69fa3d2a69270ffa3b2a693b3c3b3b2d68056542|@4036,1,@2913,@8198,@111,@9320,@5091,@12961,@5091,@9324,@5091,@12960,@9327| 17845:D5,24|fb07fa2035fa212b36693b2a3d3d6b642a0c642c2a2d7d04|@5080,1,@2914,@118,@17846| 17846:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a69fa44352a2a0c642f353630363cab2a2a693036352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@2915,@5086,@75,@6393,@5091,@9324,@6395| 17847:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2916,@118,@12966| 17848:D13,92|fb122b363ba20304fa5e02432b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a69fa43352a2a0c6429fa3f69fa402a69fa402a69fa402a69fa402a69322a69fa3d2a69fa3d2a69270ffa3b2a693b3c3b3b2d68056542|@4036,1,@2917,@8198,@111,@9320,@5091,@12961,@5091,@9324,@5091,@12960,@9327| 17849:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2918,@9,@12970| 17850:D4,12|fb05fa14352c2a2d7d040000|@12972,1,@2919,@182| 17851:D33,284|fb202b363ca203061a1d01f70a012b352c363cab293ba203051a100102db2a372a3cab2a2a692e39352a2a0c642d3ca20304fafc02ae2e352e3cab2a2a693238352a2a0c64313da20304fae802813239323cab2a2a69fae035fae1220f37693b2a3e3c6b642a0c642a2a0c64220c3ea20304facc0244220d36220d3cab2a2a69fac2352a2a0c6422113822113cab2a2a69221536352a2a0c6429faac69faad2a69faad2a69faad2a69faad2a69322a69faaa2a69faaa2a69270ffaa82a69faa82a692c2a69faa52a69faa52a692709faa32a69faa32a692c2a69faa02a69faa02a692709fa9e2a69fa9e2a692c2a69fa9b2a69fa9b2a692709fa992a693b3c3b3b2d6805293b69fa8f2a69fa8f2a693b3c3b3b2d6805270842000000|@12972,1,@2920,@6303,@8198,@8198,@8198,@118,@17852,@8198,@7,@9320,@5091,@9719,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@9754,@5091,@9324,@5091,@9721,@5091,@9324,@5091,@9612,@9327,@5091,@12974| 17852:D3,12|fb052936352c2a2d7d040000|@9753,1,@2921| 17853:D3,12|fb052936352c2a2d7d040000|@12880,1,@2922| 17854:D129,1348|fb292b363ca203061a4505f733052b3529353ba0f86b012c3529362a372f363cab293ba203061a2b05f73101293cab2c2a691a2305351a23053236693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a0c0502e72e362a3cab2a2a691a0305352a2a0c642d3ca203051afa0402b432382e3cab2a2a691ae904352a2a0c64313da203051ae4040281220d35323cab2a2a691ada04352a2a0c64220c3ea203051ad004024c221137220d3cab2a2a691ab104352a2a0c6422153922113cab2a2a691a9f04352a2a0c64291aaa04691aaa042a691aa9042a691aa8042a691aa7042a69322a691aa3042a691aa2042a69270f1a9f042a691a9e042a692c2a691a9a042a691a99042a6927091a96042a691a95042a692c2a691a91042a691a90042a6927091a8d042a691a8c042a692c2a691a88042a691a87042a6927091a84042a693b3c3b3b2d6805291a7b04691a7b042a691a7a042a69302a69270a1a74042a693b3c3b3b2d6805293b691a69042a691a68042a693b3c3b3b2d6805270af7be032c363ca203061a5504f7b2032c3529353ca0f88c012d3529362a372b3831363cab293ba203061a3904f75001293cab2d2a691ab903352a2a0c642c3ca203061a2404f728012c3cab293ba203051a1a0402e72f362a3cab2a2a691a8503352a2a0c642d3ca203051a040402b433382e3cab2a2a691a6b03352a2a0c64313da203051aee030281220e35323cab2a2a691a5c03352a2a0c64220c3ea203051ad603024c221237220d3cab2a2a691a3303352a2a0c6422163922113cab2a2a691a2103352a2a0c64291ab003691ab0032a691aaf032a691aae032a691aad032a69322a691aa9032a691aa8032a69270f1aa5032a691aa4032a692c2a691aa0032a691a9f032a6927091a9c032a691a9b032a692c2a691a97032a691a96032a6927091a93032a691a92032a692c2a691a8e032a691a8d032a6927091a8a032a693b3c3b3b2d6805303cab322a691a7c03351a7c032a0c642a2a0c64291a7503691a75032a691a74032a692f2a69270a1a6e032a691a6d032a692c2a6927061a67032a693b3c3b3b2d6805293b691a5c032a691a5b032a693b3c3b3b2d6805270bf71c022d363ca203061a4803f710022d3529362f363cab293ba203061a3903f7db012a352a3cab293ba203051a2d0302e62a362a3cab2a2a691a0802352a2a0c642d3ca203051a170302b32e382e3cab2a2a691aee01352a2a0c64313da203051a010302803235323cab2a2a691ae001352a2a0c64220c3ea203051aea02024c220d37220d3cab2a2a691ab701352a2a0c6422113922113cab2a2a691aa501352a2a0c64291ac402691ac4022a691ac3022a691ac2022a691ac1022a69322a691abd022a691abc022a69270f1ab9022a691ab8022a692c2a691ab4022a691ab3022a6927091ab0022a691aaf022a692c2a691aab022a691aaa022a6927091aa7022a691aa6022a692c2a691aa2022a691aa1022a6927091a9e022a693b3c3b3b2d68052e3ca203051a910202b72f392f3cab2a2a691a8802352a2a0c64323da203051a7f0202843336333cab2a2a69221137352a2a0c64220d3ea203051a68020250220e37220e3cab2a2a69fae2352a2a0c6422123822123cab2a2a69fab9351a49022a0c642a2a0c64291a4202691a42022a691a41022a691a40022a691a3f022a69322a691a3b022a691a3a022a69270f1a37022a691a36022a692c2a691a32022a691a31022a6927091a2e022a691a2d022a692c2a691a29022a691a28022a6927091a25022a691a24022a692c2a691a20022a691a1f022a69270a1a1c022a693b3c3b3b2d6805293b691a11022a691a10022a693b3c3b3b2d680527096464420000|@13003,1,@2923,@6303,@5086,@118,@17855,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@13005,@6303,@5086,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@116,@13012,@6393,@5091,@9324,@5091,@9324,@6395,@5091,@13016,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@152,@8198,@8198,@13023,@9320,@5091,@9793,@5091,@9324,@5091,@13025,@5091,@9324,@5091,@13027,@5091,@9324,@5091,@13029,@5091,@9324,@5091,@12373,@9327,@5091,@13002| 17855:D3,12|fb052936352c2a2d7d040000|@13004,1,@2924| 17856:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2925,@118,@13014| 17857:D4,12|fb05fa14352c2a2d7d040000|@9753,1,@2926,@186| 17858:D4,12|fb05fa14352c2a2d7d040000|@12253,1,@2927,@109| 17859:D295,3100|fb332b363ca203061a1d0cf70c0c2b3529353ba0f870012c3529362a372f363cab293ba203061a030cf73601293cab2c2a691afb0b352a2a0c642c3cab293ba203051aef0b02e72e362a3cab2a2a691ae60b352a2a0c642d3ca203051add0b02b432382e3cab2a2a691acc0b352a2a0c64313da203051ac70b0281220d35323cab2a2a691abd0b352a2a0c64220c3ea203051ab30b024c221137220d3cab2a2a691a940b352a2a0c6422153922113cab2a2a691a820b352a2a0c64291a8d0b691a8d0b2a691a8c0b2a691a8b0b2a691a8a0b2a69322a691a860b2a691a850b2a69270f1a820b2a691a810b2a692c2a691a7d0b2a691a7c0b2a6927091a790b2a691a780b2a692c2a691a740b2a691a730b2a6927091a700b2a691a6f0b2a692c2a691a6b0b2a691a6a0b2a6927091a670b2a693b3c3b3b2d6805291a5e0b691a5e0b2a691a5d0b2a691a5c0b2a691a5b0b2a69322a691a570b2a691a560b2a69270e1a530b2a693b3c3b3b2d6805293b691a480b2a691a470b2a693b3c3b3b2d6805270af7920a2c363ca203061a340bf7860a2c3529353ca0f8db022d3529362a372b3831363cab293ba203061a180bf79f02293cab293ba203051a0e0b02e72d362a3cab2a2a691a6d0a352a2a0c642d3ca203051af80a02b431382e3cab2a2a691a530a352a2a0c64313da203051ae20a0281220c35323cab2a2a691a440a352a2a0c64220c3ea203051aca0a024c221037220d3cab2a2a691a1b0a352a2a0c6422143922113cab2a2a691a090a352a2a0c64291aa40a691aa40a2a691aa30a2a691aa20a2a691aa10a2a69322a691a9d0a2a691a9c0a2a69270f1a990a2a691a980a2a692c2a691a940a2a691a930a2a6927091a900a2a691a8f0a2a692c2a691a8b0a2a691a8a0a2a6927091a870a2a691a860a2a692c2a691a820a2a691a810a2a6927091a7e0a2a693b3c3b3b2d68052d3ca203061a710af77b012d3cab293ba203061a670af7250130352a3cab2a2a691a6d09352a2a0c6434362e3cab293ba203051a4b0a02e62a362a3cab2a2a691a4209352a2a0c642d3ca203051a350a02b32e382e3cab2a2a691a2809352a2a0c64313da203051a1f0a02803235323cab2a2a691a1a09352a2a0c64220c3ea203051a080a024c220d37220d3cab2a2a691af108352a2a0c6422113922113cab2a2a691adf08352a2a0c64291ae209691ae2092a691ae1092a691ae0092a691adf092a69322a691adb092a691ada092a69270f1ad7092a691ad6092a692c2a691ad2092a691ad1092a6927091ace092a691acd092a692c2a691ac9092a691ac8092a6927091ac5092a691ac4092a692c2a691ac0092a691abf092a6927091abc092a693b3c3b3b2d6805291ab309691ab3092a691ab2092a69312a69270c1aac092a693b3c3b3b2d6805313cab332a691a9e09351a9e092a0c642a2a0c64291a9709691a97092a691a96092a691a95092a691a94092a69312a691a90092a691a8f092a69270e1a8c092a691a8b092a692c2a691a87092a691a86092a6927091a83092a693b3c3b3b2d6805293b691a78092a691a77092a693b3c3b3b2d6805270bf7a1072d363ca203061a6409f795072d3529353da0f86b012e3529362a3731363cab293ba203061a4a09f73101293cab2c2a691a4209351a42093436693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a2b0902e72e362a3cab2a2a691a6207352a2a0c642d3ca203051a150902b432382e3cab2a2a691a4807352a2a0c64313da203051aff080281220d35323cab2a2a691a3907352a2a0c64220c3ea203051ae708024c221137220d3cab2a2a691a1007352a2a0c6422153922113cab2a2a691afe06352a2a0c64291ac108691ac1082a691ac0082a691abf082a691abe082a69322a691aba082a691ab9082a69270f1ab6082a691ab5082a692c2a691ab1082a691ab0082a6927091aad082a691aac082a692c2a691aa8082a691aa7082a6927091aa4082a691aa3082a692c2a691a9f082a691a9e082a6927091a9b082a693b3c3b3b2d6805291a9208691a92082a691a91082a69302a69270a1a8b082a693b3c3b3b2d6805293b691a80082a691a7f082a693b3c3b3b2d6805270af720062e363ca203061a6c08f714062e3529353ea0f8aa012f3529362a372b3833363cab293ba203061a5008f76e01293cab2c2a691a4808352a2a0c642c3ca203061a3f08f73c012c3cab293ba203051a350802e730362a3cab2a2a691ae405352a2a0c642d3ca203051a1f0802b434382e3cab2a2a691aca05352a2a0c64313da203051a09080281220f35323cab2a2a691abb05352a2a0c64220c3ea203051af107024c221337220d3cab2a2a691a9205352a2a0c6422173922113cab2a2a691a8005352a2a0c64291acb07691acb072a691aca072a691ac9072a691ac8072a69322a691ac4072a691ac3072a69270f1ac0072a691abf072a692c2a691abb072a691aba072a6927091ab7072a691ab6072a692c2a691ab2072a691ab1072a6927091aae072a691aad072a692c2a691aa9072a691aa8072a6927091aa5072a693b3c3b3b2d6805303cab322a691aa706351a93072a0c642a2a0c64291a8c07691a8c072a691a8b072a691a8a072a691a89072a69312a691a85072a691a84072a69270e1a81072a691a80072a692c2a691a7c072a691a7b072a6927081a78072a693b3c3b3b2d6805293b691a6d072a691a6c072a693b3c3b3b2d6805270bf760042f363ca203061a5907f754042f3529353fa0f86c01303529362a3733363cab293ba203061a3f07f73201293cab2c2a691a0306351a3307220d36693b2a3d3f6b642a0c642a2a0c642c3cab293ba203051a1b0702e72e362a3cab2a2a691a2204352a2a0c642d3ca203051a050702b432382e3cab2a2a691a0804352a2a0c64313da203051aef060281220d35323cab2a2a691af903352a2a0c64220c3ea203051ad706024c221137220d3cab2a2a691ad003352a2a0c6422153922113cab2a2a691abe03352a2a0c64291ab106691ab1062a691ab0062a691aaf062a691aae062a69322a691aaa062a691aa9062a69270f1aa6062a691aa5062a692c2a691aa1062a691aa0062a6927091a9d062a691a9c062a692c2a691a98062a691a97062a6927091a94062a691a93062a692c2a691a8f062a691a8e062a6927091a8b062a693b3c3b3b2d6805291a8206691a82062a691a81062a69302a69270a1a7b062a693b3c3b3b2d6805293b691a70062a691a6f062a693b3c3b3b2d6805270af7de0230363ca203061a5c06f7d202303529362a372b3834363cab293ba203061a4906f79902293cab293ba203051a3f0602e72d362a3cab2a2a691ac602352a2a0c642d3ca203051a290602b431382e3cab2a2a691aac02352a2a0c64313da203051a13060281220c35323cab2a2a691a9d02352a2a0c64220c3ea203051afb05024c221037220d3cab2a2a691a7402352a2a0c6422143922113cab2a2a691a6202352a2a0c64291ad505691ad5052a691ad4052a691ad3052a691ad2052a69322a691ace052a691acd052a69270f1aca052a691ac9052a692c2a691ac5052a691ac4052a6927091ac1052a691ac0052a692c2a691abc052a691abb052a6927091ab8052a691ab7052a692c2a691ab3052a691ab2052a6927091aaf052a693b3c3b3b2d68052d3ca203061aa205f775012d3cab293ba203061a9805f7250130352a3cab2a2a691ac601352a2a0c6434362e3cab293ba203051a7c0502e62a362a3cab2a2a691a9b01352a2a0c642d3ca203051a660502b32e382e3cab2a2a691a8101352a2a0c64313da203051a500502803235323cab2a2a691a7301352a2a0c64220c3ea203051a3905024c220d37220d3cab2a2a691a4a01352a2a0c6422113922113cab2a2a691a3801352a2a0c64291a1305691a13052a691a12052a691a11052a691a10052a69322a691a0c052a691a0b052a69270f1a08052a691a07052a692c2a691a03052a691a02052a6927091aff042a691afe042a692c2a691afa042a691af9042a6927091af6042a691af5042a692c2a691af1042a691af0042a6927091aed042a693b3c3b3b2d6805291ae404691ae4042a691ae3042a69312a69270c1add042a693b3c3b3b2d6805313cab332a691acf04352a2a0c64291aca04691aca042a691ac9042a691ac8042a691ac7042a69312a691ac3042a691ac2042a69270e1abf042a691abe042a692c2a691aba042a691ab9042a6927091ab6042a693b3c3b3b2d6805293b691aab042a691aaa042a693b3c3b3b2d6805270b64646464644200|@13004,1,@2928,@6303,@8198,@157,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@9320,@5091,@9606,@5091,@9324,@5091,@11925,@9327,@5091,@13039,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@9,@13043,@9320,@5091,@9730,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12373,@9327,@5091,@13045,@6303,@5086,@118,@17861,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@13052,@6303,@8198,@115,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@13059,@9320,@5091,@13061,@5091,@9324,@5091,@12373,@5091,@9324,@5091,@13063,@9327,@5091,@13065,@6303,@5086,@17863,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@5091,@13074,@6303,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@5086,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395,@152,@9320,@5091,@9730,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12373,@9327,@5091,@13038| 17860:D4,12|fb05fa14352c2a2d7d040000|@11571,1,@2929,@152| 17861:D3,12|fb052936352c2a2d7d040000|@13003,1,@2930| 17862:D34,296|fb242b363ba203061a2901f70b012b35352c363cab2a2a691a1d01352a2a0c642f353630363cab293ba203051a0d0102cc2a362a3cab2a2a691a0401352a2a0c642d3ca20304fafc029e2e382e3cab2a2a69faec352a2a0c64313da20304fae802713235323cab2a2a69facc352a2a0c64220c3ea20304fad30243220d37220d3cab2a2a69fab9352a2a0c6422113922113cab2a2a69faa8352a2a0c6429fab069fab12a69fab12a69fab12a69fab12a69322a69faae2a69faae2a69270ffaac2a69faac2a692c2a69faa92a69faa92a692709faa72a69faa72a692c2a69faa42a69faa42a692709faa22a69faa22a692c2a69fa9f2a69fa9f2a692709fa9d2a693b3c3b3b2d680529fa9569fa962a69fa962a69312a69270cfa912a693b3c3b3b2d680565420000|@4036,1,@2931,@5086,@7,@8198,@75,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@6395| 17863:D105,1048|fb382b363ba203061a1904f7fa032b35352c363cab293ba203051a0b0402e62a362a3cab2a2a691a0204352a2a0c642d3ca203051af90302b32e382e3cab2a2a691ae803352a2a0c64313da203051ae30302803235323cab2a2a691ada03352a2a0c64220c3ea203051ad003024c220d37220d3cab2a2a691ab103352a2a0c6422113922113cab2a2a691a9f03352a2a0c64291aaa03691aaa032a691aa9032a691aa8032a691aa7032a69322a691aa3032a691aa2032a69270f1a9f032a691a9e032a692c2a691a9a032a691a99032a6927091a96032a691a95032a692c2a691a91032a691a90032a6927091a8d032a691a8c032a692c2a691a88032a691a87032a6927091a84032a693b3c3b3b2d680530363ca203061a7603f7d20230353631363cab2a2a691a0e03352a2a0c6434363da203061a5c03f79b02343537220c363cab293ba203051a4d0302e62a362a3cab2a2a691ad402352a2a0c642d3ca203051a370302b32e382e3cab2a2a691aba02352a2a0c64313da203051a210302803235323cab2a2a691aac02352a2a0c64220c3ea203051a0a03024c220d37220d3cab2a2a691a8302352a2a0c6422113922113cab2a2a691a7102352a2a0c64291ae402691ae4022a691ae3022a691ae2022a691ae1022a69322a691add022a691adc022a69270f1ad9022a691ad8022a692c2a691ad4022a691ad3022a6927091ad0022a691acf022a692c2a691acb022a691aca022a6927091ac7022a691ac6022a692c2a691ac2022a691ac1022a6927091abe022a693b3c3b3b2d6805221035382211363cab293ba203061aa802f74f012a352a3cab2a2a69221336352a2a0c642d3ca203061a9102f725012e362e3cab2a2a691a8702352a2a0c643237323cab293ba203051a790202e62a362a3cab2a2a691a9401352a2a0c642d3ca203051a630202b32e382e3cab2a2a691a7a01352a2a0c64313da203051a4d0202803235323cab2a2a691a6c01352a2a0c64220c3ea203051a3602024c220d37220d3cab2a2a691a4301352a2a0c6422113922113cab2a2a691a3101352a2a0c64291a1002691a10022a691a0f022a691a0e022a691a0d022a69322a691a09022a691a08022a69270f1a05022a691a04022a692c2a691a00022a691aff012a6927091afc012a691afb012a692c2a691af7012a691af6012a6927091af3012a691af2012a692c2a691aee012a691aed012a6927091aea012a693b3c3b3b2d6805291ae101691ae1012a691ae0012a69312a69270c1ada012a691ad9012a692c2a6927071ad3012a693b3c3b3b2d6805291aca01691aca012a691ac9012a691ac8012a691ac7012a69332a691ac3012a691ac2012a6927111abf012a691abe012a692c2a691aba012a691ab9012a6927091ab6012a691ab5012a692c2a691ab1012a691ab0012a69270a1aad012a693b3c3b3b2d680565420000|@4036,1,@2932,@8198,@8198,@75,@8198,@8198,@7,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@8198,@8198,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@5086,@5086,@115,@8198,@8198,@8198,@8198,@9320,@5091,@8203,@5091,@9324,@5091,@8205,@5091,@9324,@5091,@8207,@5091,@9324,@5091,@8209,@5091,@9324,@5091,@8211,@9327,@6393,@5091,@9324,@5091,@9324,@6395,@9320,@5091,@13072,@5091,@9324,@5091,@11581,@5091,@9324,@5091,@9322,@5091,@9324,@5091,@12373,@9327| 17864:D5,24|fb07fa2035fa212b36693b2a3d3d6b642a0c642c2a2d7d04|@5080,1,@2933,@118,@17865| 17865:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a69fa44352a2a0c642f353630363cab2a2a693036352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@2934,@5086,@75,@6393,@5091,@9324,@6395| 17866:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5080,1,@2935,@118,@13089| 17867:D13,92|fb122b363ba20304fa5e02432b35352c363cab2a2a69fa54352a2a0c642f353630363cab2a2a69fa43352a2a0c6429fa3f69fa402a69fa402a69fa402a69fa402a69322a69fa3d2a69fa3d2a69270ffa3b2a693b3c3b3b2d68056542|@4036,1,@2936,@8198,@111,@9320,@5091,@12961,@5091,@9324,@5091,@12960,@9327| 17868:D3,12|fb052936352c2a2d7d040000|@12880,1,@2937| 17869:D5,24|fb07fa2035fa212b36693b2a3d3d6b642a0c642c2a2d7d04|@5080,1,@2938,@118,@17870| 17870:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a69fa44352a2a0c642f353630363cab2a2a693036352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@2939,@5086,@75,@6393,@5091,@9324,@6395| 17871:D5,16|fb05fa1835fa192a0c642c2a2d7d0400|@5263,1,@2940,@9,@13123| 17872:D4,12|fb05fa14352c2a2d7d040000|@12044,1,@2941,@160| 17873:D51,476|fb1a2b363ca203061add01f7cc012b3529353ba0038c2c3529362a372f363cab293ba203051ac4010253293cab2c2a691abd01351abd013236693b2a3d3d6b642a0c642a2a0c642c3cab2e2a691aa801352a2a0c64291aa301691aa3012a691aa2012a691aa1012a691aa0012a69312a691a9c012a691a9b012a69270d1a98012a693b3c3b3b2d6805293b691a8d012a691a8c012a693b3c3b3b2d6805270af737012c363ca203061a7901f72b012c3529353ca0037c2d3529362a3730363cab293ba203051a60010244293cab2c2a691a5901352a2a0c642c3cab2e2a691a4f01352a2a0c64291a4a01691a4a012a691a49012a691a48012a691a47012a69312a691a43012a691a42012a69270d1a3f012a693b3c3b3b2d6805293b691a34012a691a33012a693b3c3b3b2d6805270a02a62d363ca203051a2101029b2d3529362a372b3831363cab293ba203051a0f010266293cab2d2a693237352a2a0c642c3ca20304fafd023b2c3cab2e2a69faf7352a2a0c642f3cab322a69faee352a2a0c6429faea69faeb2a69faeb2a69faeb2a69faeb2a69312a69fae82a69fae82a69270dfae62a69fae62a692c2a69fae32a69fae32a692708fae12a693b3c3b3b2d6805293b69fad72a69fad72a693b3c3b3b2d6805270b64644200|@13133,1,@2942,@6303,@8198,@118,@17874,@160,@9320,@5091,@13134,@5091,@9324,@5091,@13136,@9327,@5091,@13138,@6303,@8198,@115,@75,@9320,@5091,@13145,@5091,@9324,@5091,@13147,@9327,@5091,@13149,@6303,@8198,@8198,@156,@155,@9320,@5091,@13156,@5091,@9324,@5091,@13158,@5091,@9324,@5091,@13160,@9327,@5091,@13132| 17874:D9,76|fb0e2b363ba20304fa4e02332b35352c363cab2a2a69fa44352a2a0c642f353630363cab2a2a693036352a2a0c6429fa2f69fa302a69fa302a69302a69270bfa2b2a693b3c3b3b2d68056542|@4036,1,@2943,@5086,@75,@6393,@5091,@9324,@6395| 17875:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@13168,1,@2944| 17876:D12,152|fb10faa02d6928092a692f3530363137fa960c2a2a69fa942e33336b31353ca003363136323733382c680132362a692d3ba003032c02052c2efa750c292bfa740c313ba003032902052932fa6b0c220f2f452a462708023a31353ba0030b3136332a33fa57347b050b31363237fa513137692c68012a2a692c2afa380c303ba003032902052931fa3b0c220e30452a462707270544000000|@13170,1,@2945,@17877,@11431,@17878,@13173,@11487,@13174,@10880,@17881,@13169| 17877:D4,12|fb0529362cfa112d7e030000|@13171,1,@2946,@9302| 17878:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@13172,1,@2947| 17879:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2948,@13173| 17880:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2949,@13174| 17881:D4,28|fb090b02002e352f362b2f36fa1a0c5029352a362a2a692705420000|@13176,1,@2950,@13175| 17882:D9,260|fb182d3829352f35303631373239333a0b02002d3ca003062e353da002013b031b2e3629352a362b372c382b2b2b6a296801302a452f465026070206293b452f465029352a36fac8faca2213221322126805349291034534352938293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129656502013b280728403bdafa7345280828403bdafa6e45280528403bdafa6945292b462e4730482c496c502a220e4634472d482e492c4a2a4b304c6c502b2214462f472e482a492b4a304b6c503f2b69221735221836221937fa310c2a2a6922172212452a4627141f040000|@13177,1,@2951,@17884,@13175,@17885,@17886,@17883,@11431| 17883:D5,56|fb0e293968012a383ba00303fa36103b502a383529352c3768012d3668012d2b2b6a0b02002c302bfa1e0c5029352a362a2a69270b420000|@13183,1,@2958,@5689,@12803| 17884:D3,28|fb090b02002c372d382b2f3930360c5029352a362a2a692705420000|@13178,1,@2952| 17885:D3,48|fb0c2923069291030429390202293a2a3868012a68013b2b2b6a0b02002c31372b33360c5029352a362a2a6927094200|@13179,1,@2953| 17886:D7,76|fb0c2923073ba00304293a02032923062a3968012a6801292b3bfa3c0cfa3d2e366928092a69293b69293ba003032c02052c2afa2b0c293ba003043138020631382afa200c32372a69270942|@13181,1,@2954,@11431,@17887,@13182,@13180| 17887:D3,8|fb033e2a36694200|@11468,1,@2955| 17888:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2956,@13182| 17889:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2957,@13180| 17890:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2959,@13169| 17891:D11,264|fb142d3529299291034a29352a362a353ca003043b5002322a353ba003242a3629299291031629352a362a3629fae50c502a250426031e15260302023b50505002082a3629fad10c5050292503511e493b6502013b643b06fac22a690b0200fabf302b220d30fabc0c502935303b2a929103242a352b362afaae0c2c3ba00303290205292dfaa50c2b2a2506250626041e223b270402012965293b2a929103152a352b362a2c692a2a2505250526031e143b660201296528142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa4f0c0201292d3ba00303290205280f2e2b6a33353435220c3b3b2ce322122d452c46271044000000|@13186,1,@2960,@13187,@13191,@17934,@13248,@13251,@14664,@13185,@4851| 17892:D6,72|fb062b353da0030a2b36293529fa452e7d052b353ca0030f2b362c372afa350c5029fa342e7d052b353ba0030a2b36293529fa202e7d052b353ea003082b3629fa1a2d7d043b4200|@13189,1,@2961,@13187,@13190,@13188| 17893:D5,24|fb072b9291030e2b352c3629fa160c2bfa162f7d063b4200|@6193,1,@2962,@13190,@13191| 17894:D7,72|fb072b353ca0030f2b362c372afa450c5029fa442e7d052b353ba003082b3629fa3a2d7d042b3729299291031429352a362a37fa2b0c50292503511e133b6502013b646442000000|@13193,1,@2963,@13194,@13195,@13192,@13187| 17895:D5,24|fb072b9291030e2b352c3629fa160c2bfa162f7d063b4200|@6193,1,@2964,@13194,@13191| 17896:D5,24|fb072b9291030e2b352c3629fa160c2bfa162f7d063b4200|@6193,1,@2965,@13195,@13191| 17897:D13,848|fb112b350a1f0042004d005e007100a000bb003e003e003e003e00c400e7000c01b4013e00e1013e0004023e0026023e00500260023e003e0068023e003e00880237033e003bf704032b362935291a0b032e7d052b362c372a1a04030c50291afe022e7d052b3629352a362a1af1020c50291aeb022f7d062b3629352a362a1ade020c5029299291031729352a362a35291acc020c502a250426031e163b6602013b6466f7a6022b3629352a362b372b1aad020c50291aa7020c502a1aa102307d072b37291a98022d7d042b3629299291031529352a362a351a84020c50292503511e143b6502013b6464f75f022b3729299291031729352a362a35291a60020c502a250426031e163b6602013b6464f73a022b36291a4b020c293b2a929103182a352b362a2c1a3e020c2a2a2505250526031e173b660201296529299291033a29352a362a352b3629352b352c3628062b2b6a2c1a14020c1a14020c2a2a1a12020c293ba09103041a0c02103b5031250b260a1e383b270a02013b642c299291033129352a362a3629299291031729352a362a36291ac7010c502a250426031e16260302023b50502a250426031e303b6602013b642704f792012b362c372a1a9d010c5029299291031729352a362a35291a8b010c502a250426031e163b6602013b6465f765012b3829299291031529352a362a381a67010c50292503511e143b6502013b6464f742012b3729299291031429352a362a1a45010c50292503511e133b6502013b6464f720012b3629352a362a299291031429352a362a351a1e010c50292503511e145102023b5050291a28012f7d062b362c372a1a01010c5029fafc2e7d052b3629faf42d7d042b3629299291031329352a362afae20c50292503511e123b6502013b646402be2b36293b2a929103242a352b362a3829352d3ba00303290205292efad40c2c2a2507250726051e223b270502012965293b2a929103172a352b362a2cfa9b0c2a2a2505250526031e163b660201296529299291033629352a362a352b3629352b352c3628062b2b6a2cfa720cfa730c2a2afa720c293ba0910303fa6d103b5031250b260a1e343b270a02013b642c299291031629352a362a3629fa350c502a250426031e153b6602013b642704020f2b362c3729fa1b0c502afa162e7d05420000|@13197,1,@2966,@13198,@13192,@13199,@13200,@13215,@13216,@11175,@13243,@13246,@13196| 17898:D5,28|fb082b929103102b352c3629fa1a0c2b3529fa18307d073b42000000|@6193,1,@2967,@13198,@13192| 17899:D4,28|fb082b929103132b352c362a3729352bfa160c2a2a69270502013b42|@4648,1,@2968,@13199| 17900:D11,76|fb112c382d2306293ba00303fa4a103b5029352935292dfa430c29fa430c0b020031fa402bfa410c50293629fa3e0c292f220ffa3b0c220e3ba0030329020929220ffa3022107e10270c4300|@13202,1,@2969,@5689,@13203,@13206,@13210,@8023,@13212,@13213,@13201| 17901:D9,80|fb112c929103462c352d360b020030fa4b2bfa4c0c5029352a3629fa470c2b31fa460c293ba09103160b0200220efa3c2bfa2d0c50293629fa2a0c270402012a31220dfa2b0c2a2a69270b02013b4300|@4648,1,@2970,@13205,@8023,@10925,@11175,@13204,@13203| 17902:D3,4|fb023b42|@10938,1,@2971| 17903:D3,4|fb023b42|@10938,1,@2972| 17904:D6,40|fb062b3ba003033b021a2b35293ba003033b020f2cfa1d0c2dfa1d0cfa1e0c2a2a69656442000000|@13208,1,@2973,@13209,@13207,@13206| 17905:D5,40|fb072b9291031d2b352c362a929103043b500203fa1e102a352afa1c0c2a2a69270402013b420000|@4648,1,@2974,@5975,@13209| 17906:D5,40|fb072b9291031d2b352c362a929103043b500203fa1e102a362afa1c0c2a2a69270402013b420000|@4648,1,@2975,@6128,@13207| 17907:D3,4|fb023b42|@13211,1,@2976| 17908:D4,28|fb072b929103112b352c362a362afa180c2a2a69270402013b420000|@4648,1,@2977,@13212| 17909:D5,144|fb112d929103052c929102013b037c2d352e362e352f362f299291032029352a362a35293531352a2aa003052d680102082c250626051e1e3b270502013b640b02002c929103262c3529362935293ba00303310205312afa430c2b3b3b2ce3502c2e2a35452a364651260402092e062a32452a46505029352a362a2a693231220ffa1d0c2a2a69270c02013b44000000|@5900,1,@2978,@13214,@13213| 17910:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2979,@13214| 17911:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@2980,@13201| 17912:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@2981,@13215| 17913:D15,684|fb152b9291f8a0022b352c362a29352805a0034e29362a382938293629353da0033b2b38293629353da003043b5002041a8502103b5029362a372a311a7d020c1a7d022a690b02002e2d2b1a76020c5029352709250526041e4b3b02012d2704023729352806a0032f2936293529353fa003122b3b30360c293528053b2b2d3b680565021029353ca003032b0207292503511e853b650201296429353ea003b029362a370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603712f32362f1af6010c3b2a299291031229362b3caa292b25042504511e113b6502012a653b32299291031229362b3caa292b25042504511e113b6502012a652a2aa0031c301aba010c292d6964220c1ab4010c312a1ab2010c3e2a336a65020f1aab01061b0f273eba28062b2b6a6566020f1a9901061b0f273eba28062b2b6a652705f7550129353da0037b29362a372c2f361a7c010c3b2a299291031229362b3caa292b25042504511e113b6502012a653b2f299291031229362b3caa292b25042504511e113b6502012a652a2aa003220b02002e2a1a3c010c5029352a36322b69220e0c322b69220f0c3d2b2b6a2707020f1a1701061b0f273eba28062b2b6a65270502d429352805a003a829362a372b382c392a38293529353ca003843b2f299291031229362b3caa292b25042504511e113b6502012a65312c2b220d36fad70c3b2a299291031229362b3caa292b25042504511e113b6502012a653b34299291031229362b3caa292b25042504511e113b6502012a652a2aa00313322c69220efa800c28052a343434680564020efa7a061b0f273eba28062b2b6a652704020efa68061b0f273eba28062b2b6a652706022529352806a00310fa4f061b0f273eba28062b2b6a65020efa3f061b0f273eba28062b2b6a65660202fa2e4200|@13219,1,@2982,@8025,@5868,@17914,@8023,@13220,@13222,@13223,@13229,@5064,@13230,@13231,@13218| 17914:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2983| 17915:D9,292|fb152d9291f818012d352e362a29352805a0034b29362a382938293629353da003382b38293629353da003043b5002041afd00103b5029362a372a31faf60cfaf72a690b02002e2d2bfaf10c5029352709250526041e483b02012d2704023629352806a0032e2936293529353fa003112b3b330c293528053b2b2d3b680565021029353ca003032b0207292503511e813b650201296429353ea0036529362f2a2a3ba00305293ba002462a352b362b9291033b2b352c362c352b352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b030d2d2c2508250826061e443b02013b270402013b6565030a29fa4a0c2968016402013b6402013b293ba003092b3131fa38327b050929352c3232fa2d0c2a2a6965270402013b440000|@6232,1,@2984,@8025,@5868,@17916,@8023,@13221,@13220| 17916:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2985| 17917:D4,28|fb072b929103112b352c362a362afa180c2a2a69270402013b420000|@4648,1,@2986,@13221| 17918:D4,28|fb072b929103112b352c362a362afa180c2a2a69270402013b420000|@4648,1,@2987,@13222| 17919:D7,48|fb062c929103043b500203fa2f103b502c35293ba003033b02122dfa230c2d0c2efa210c2efa210c2a2a696564430000|@13225,1,@2988,@13226,@13228,@13224,@13223| 17920:D5,40|fb072b9291031d2b352c362a929103043b500203fa1e102a352afa1c0c2a2a69270402013b420000|@4648,1,@2989,@5975,@13228| 17921:D5,40|fb072b9291031d2b352c362a929103043b500203fa1e102a362afa1c0c2a2a69270402013b420000|@4648,1,@2990,@6128,@13224| 17922:D4,44|fb0a2c929103052b929102013b03192c352d362d352e362c35292c692d2cfa180c2a2a69270702013b430000|@5900,1,@2991,@13229| 17923:D8,200|fb152c929103bc2c352d362a29352805a0034a29362a382938293629353da003372b38293629353da003043b500203faa3103b5029362a372a31fa9c0cfa9d2a690b02002e2d2bfa970c5029352709250526041e473b02012d2704023629352806a0032e2936293529353fa003112b3b320c293528053b2b2d3b680565021029353ca003032b0207292503511e803b650201296429353da0030d29362a372a2a692968016602013b293ba003072b30fa33317e0829352c31fa2a0c2a2a6965270402013b43000000|@6232,1,@2992,@8025,@5868,@17924,@8023,@13230| 17924:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2993| 17925:D5,56|fb0e2c3ba0030cfa3b2c2a35452a36466402232c352d362a352b360b02002e2afa260c5029352a362f2b692f2b69220d2b452a46270b4300|@13232,1,@2994,@5895,@13231| 17926:D9,188|fb152e929103b12e352f362a29352805a0034a29362a382938293629353da003372b38293629353da003043b500203fa97103b5029362a372a31fa900cfa912a690b02002e2d2bfa8b0c5029352709250526041e473b02012d2704023629352806a0032e2936293529353fa003112b3b320c293528053b2b2d3b680565021029353ca003032b0207292503511e803b65020129643030fa400c293ba0030a2a313131fa38327b060929352b323232fa2c0c2a2a69656602013b1f0400|@6232,1,@2995,@8025,@5868,@17927,@8023,@13233,@13218| 17927:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2996| 17928:D3,140|fb0c2d352805a0037e2d362e3829382f3629353ca003092a3629353ca06402013b030f303629362c3629362b2aa027040225303629353ba003092b3629353ba06402013b030f313629382d3629382b2aa0270402013b6403213b2d299291031229362b3caa292b25042504511e113b6502012a652931a06402013b03052c680102013b270402013b44000000|@13234,1,@2997| 17929:D11,584|fb162c1a4e020c29353da00329293629353ea0030829362992916402013b030e293629352936291a2a020c660205291a22020c640201292929352805a0035129362a382938293629353da0299103032c02392c38293629353da003043b5002041af501103b5029362a372a321aed010c1aed012a690b02002e2d2b1ae6010c5029352709250626051e503b2705f7b40129352806a003043b5002041aca01103b502936293529353fa003043b5002041aba01103b5029362f36352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403093036352968016402f52a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23092aa06502013b03033c02082b250526041e2e3b27046403063037680102b82a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23082aa06502013b03033c02082b250526041e2e3b270464030630386801027b2a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23072aa06502013b03033c02082b250526041e2e3b270464030630396801023e2a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23062aa06502013b03033c02082b250526041e2e3b2704640306303a680102013b293ba00303fa46103b503b502935293528053b2b2d3b6805303b3b2ce3502b270864654300|@13236,1,@2998,@8044,@8025,@5868,@17930,@8023,@13237,@13240,@13235| 17930:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@2999| 17931:D5,28|fb082b929103102b352c3629fa1a0c2b3529fa18307d073b42000000|@6193,1,@3000,@13246,@13192| 17932:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3001,@13196| 17933:D5,24|fb072b9291030e2b352c3629fa160c2bfa162f7d063b4200|@6193,1,@3002,@13188,@13191| 17934:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@13247,1,@3003| 17935:D4,8|fb02fa1042000000|@13250,1,@3004,@4689| 17936:D6,80|fb112e9291033f2e352f360b02002d220c322c220cfa450c5029352a360b02002c322b22102210fa370c5029352a362a3ba003032f02052f2bfa290c22112a452b46270d02052d3b4530461f05000000|@13253,1,@3005,@13254,@13251,@13252| 17937:D11,140|fb142f353ca003072c3b452f4602782f353ba0030d2f362f2a2f2f32fa7a317b07082f363b0629fa7331fa746b293b692c3b690b0200fa6c2d220f220ffa5d323bfa65312213fa640c5029352a36313529fa5d0c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303290205292efa360c22112a452e46270e1f05000000|@13256,1,@3006,@13257,@10945,@4685,@4062,@14662,@13833,@13944,@13255| 17938:D6,76|fb112e9291033e2e352f360b02002d220c2b3434fa420c5029352a360b02002c322b22102210fa340c5029352a362a3ba003032f02052f2bfa260c22112a452b46270d02052d3b4530461f05|@13253,1,@3007,@13259,@13257,@13258| 17939:D33,836|fb572f392935312309293533352936220c36220d38220e3a220f23082210230a2211230b2f35293ba003041a2203103b5029353c061a1c032a693b061a19032a693c2a2c6a2e3629353da003043b5002041a08031029362a3730353135293caa333b3b2ce32e3b3b2fe32e3b3b34e3221335293ba003041ae602103b50293522103729370b02002c22292212222922172e1ad0020c5029352a36221a350b02002c2e2218222f221d2e1abc020c5029352a363b0629221a221e1ab0026b293b692224350b02002c31222122382226322f1a9d020c5029352a362228350b02002c2e2227223e222c2e1a89020c5029352a362a3ba00303300206302b1a7a020c293ba003042211020722112a1a6e020c293ba003042218020722182a1a62020c22353b3bef293ba003051a58020255293eb1292808b1293cb2293fb4291a4902a503043b5002041a430210292841bd2a3cb22a2a3b3bf02b3b3b32f050223d3f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c2a3db1282ee4502c95502c27080b0200223b2d33223522332e224b1afc010c5029352a362922411af4012234223822476b22372235224c1ae8010c2248230d29299291031b29352a362a351ad801a003052a68010207292503511e1a3b6502013b64293ba003471ac001299291031b29352a362a351aae01a003052a68010207292503511e1a3b6502013b64293ba003041a9a01103b50293529351a8801a003043b5002041a8a01102937650215293529351a7101a003043b5002041a730110293764036b3c3b22321a6a016b2e3ba00303340206342f1a60010c2a2a69293ba003032e0205280f2a306a223a35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a2b010c223f3522403522413b3b2ce32f3c224b2f2f6805270a1a15010c02673c3b22321aff006b2e3ba00303340206342f1a01010c2a2a69293ba003032e0205280f2a306a223a35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fac10c223f3522403522413b3b2ce32f3c224b2f2f6805270afab40c3c224b0c222b3729353da003043b500203fa3c1029362a372a3b3b2fe32a3b3bfa95e33c3b30326b293b6922542a4522564627501f0500|@13261,1,@3008,@5689,@17940,@17941,@13269,@5689,@13271,@13292,@4685,@13302,@13823,@13829,@13830,@13831,@12753,16777215,@4054,@13832,@18572,@13884,@53,@5420,@5469,@4594,@4684,@14647,@13329,@14648,@14660,@13260,@10945| 17940:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@13262,1,@3009| 17941:D8,100|fb0a2b352c362d372a3ba20303fa61103b502a3ba6032c2a3cab293ba003052a3ba002013b03043b500203fa47102c3ba20303fa43103b503d2d69292f36fa3c327e0829030f2b3ba20303fa33103b503b2c69020d2b3ba20303fa24103b503d2c696642|@13264,1,@3010,@13265,@10949,@10947,@5821,@13263| 17942:D9,180|fb102d230d29299291031a29352a362a35faada003052a68010207292503511e193b6502013b64293ba00342fa96299291031a29352a362a35fa85a003052a68010207292503511e193b6502013b64293ba00303fa72103b5029352935fa61a003043b500203fa6410293765021329352935fa4ca003043b500203fa4f10293764299103072e3b45334602230b0200220d220d2b220e220dfa360c5029352a362a2a220f220e220efa2a220f7b0710661f060000|@13273,1,@3011,@64,@5420,@5469,@4594,@13274,@13272| 17943:D12,304|fb1f2f3ba003082d3b452f46f71d012f3530363035313632372d3529353ba0030d2936280b1a14012b3b6b6402092e3529341a0b010c64332e0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fada0c0201290b02002c352806a0030dface2d692a3b452a465050021a3c22120cfac12a22156a3c3b2c316b293b692d2a452c4650260429352a3622103629353ba00348293622123722133629353da00303fa94103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a2f3b6bfa6d2a2f6a28052a221a6a270702072805221222136a29220f692c22112b6a0b020022162d2b221e221efa470c5029352a362a3ba00303330205332bfa390c221f2a452b46271b1f050000|@13276,1,@3012,@4684,@13277,@4851,@17945,@17946,@8092,@4801,@13274,@13275| 17944:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3013,@13277,@4807,@13278| 17945:D3,8|fb02293642000000|@13283,1,@3014| 17946:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3015| 17947:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3016,@13275| 17948:D9,152|fb1e2e352f373c2f0c3c3b2bfa966b293b6928062d3b6a33353436220c352b2aab302a3b6a642b0c28082a6929fa793b6a2812fa77312c6b3d2a692212220e0c2213352214362215352b2aab22102a3b6a642b0c28082a6929fa553b6a2812fa4b312c6b3d2a69293b69332a69293ba003042214020622142afa390c293ba003042220020622202afa2e0c221d2a45222146271b1f050000|@13286,1,@3017,@5719,@13287,@5407,@13289,@13291,@13285| 17949:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3018,@13291| 17950:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3019,@13285| 17951:D9,224|fb142d230d29299291031a29352a362a35fad9a003052a68010207292503511e193b6502013b64293ba00342fac2299291031a29352a362a35fab1a003052a68010207292503511e193b6502013b64293ba00303fa9e103b5029352935fa8da003043b500203fa9010293765021329352935fa78a003043b500203fa7b1029376403523b32690b0200220d2d2a929103272a352b360b02002d2f2b22152214fa5b0c5029352a362a2a692f2a250a250a26081e2626080209292c2a35452a3646515129352a362a2a220f220e220efa30220f7b07102d3b453246651f06000000|@13294,1,@3020,@64,@5420,@5469,@4594,@13293,@13272| 17952:D8,180|fb1b2f35303731383135323629352a362b37220e3629220dfaa60c220d2e0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa750c0201290b02002c352806a0030dfa692d692a3b452a465050021a3c22150cfa5c2a22186a3c3b2c316b293b692d2a452c4650260429352a363e2214221422146b2b3ba003042211020622112cfa320c2a220f692c22112b6a221c2c452a4627181f050000|@13296,1,@3021,@13297,@4851,@17954,@17955,@13295| 17953:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3022,@13297,@4807,@13298| 17954:D3,8|fb02293642000000|@13283,1,@3023| 17955:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3024| 17956:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3025,@13295| 17957:D9,228|fb162e230d29299291031a29352a362a35fadda003052a68010207292503511e193b6502013b64293ba00342fac6299291031a29352a362a35fab5a003052a68010207292503511e193b6502013b64293ba00303faa2103b5029352935fa91a003043b500203fa9410293765021329352935fa7ca003043b500203fa7f1029376403563b33690b0200220e2d2a9291032b2a352b360b02002d2f2b2216221422172217fa5b0c5029352a362a2a692f2a250a250a26081e2a26080209292c2a35452a3646515129352a362a2a2210220f220efa30220f7b07112d3b453346651f07000000|@13304,1,@3026,@64,@5420,@5469,@4594,@13303,@13272| 17958:D9,240|fb1c3035313629352a362b37220d34343b220cfae7fae90c342d0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fab90c0201290b02002c352806a0030dfaad2d692a3b452a465050021a3c22110cfaa02a22166a3c3b2c316b293b692d2a452c4650260429352a36221836299291031c29352a36221b35221c38221d392b2b2f2f2d680528062a6927060226293ba00311221935221a38221b393c2c2c2c6b660210221935221a38221b3928072c2c2c6b662c3ba003042211020622112dfa340c2a220f692d22112b6a221b2c452a4627151f07|@13306,1,@3027,@8997,@13307,@4851,@18090,@18091,@13305| 17959:D98,2128|fb30303729353ea0f8df062936290a090012007e0012002e033403bc0312008e041200313532363b061a30082a2c6a2c3caa292b2d6a220f1a25082b22102210221022101a1d080c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291af9070c291af8070c3b1af7070c2e1af6073b2d2d3c3b3c6808280c2a69270df757062f9291f88a022f35303629929103082936293ba06402013b03043b5002041ac80710293529352c351ac207061b0f273eba28062b2b6a2c1ab7070c299291039e293529362a37293ba203041aa707103b503b2a1aa3070c299291034829352a36293ba003212a1a940769293c1a92070c291a91070c3b2a3c6a3e2c2b6a3d2a220e6a2705021b2b311a7e070c293c1a70070c291a6f070c3b2a3c6a3e2c2b6a27046502031a66073d33316a3d220c2b6a2e353b221669293b692805302d342d68053d2a220e6a3d312b6a2f2a1a4207221e221e1a3f071a40070c270d02013b2a3ba003061a3607f7a2012a3529352a37293ba003491a29071a2a070c28072a1a27073c6b1a26071a1b070c28072a2c3c6b1a1d071a0e070c28072a2c3c6b1a14071ab9060c3b1a10070c2b1a0f073b2d2d3c3b3c6808280c2a69270902d1293ca003051afb060244293ba203041aa506103b503b2a1aed060c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ac5060c020129293b69661abe061a93060c28072a1ab8063c6b2b1a86060c28072a2c3c6b1aac061a79060c28072a2c3c6b303ba203041a3a06103b503b311a96060c1a96062a69291a10060c3b1a8f060c2d1a8e063b2d2d3c3b3c6808280c2a691a83061af4050c220e3ba203041a0206103b503b220f1a71060c2b1a70063b2d2d3c3b3c6808280c2a6927102216352217363b062b3caa2f35292b2e2e1a52060c29352806a00309293c3b1a48060c0206280b2a3c3b6b291a3f063b6a28121a3c06332c6b2f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a6a050c291a69050c3b1a0c060c2e1a0b063b2d2d3c3b3c6808280c2a692713270a021d3b1a49050c3b1af4050c1af4051af5053b2d2d3c3b3c6808280c2a6966f7a7031ae605f7a1032f9291031f2f353036293ba003043b5002041ad205102a3529220c220c1acb05337b050d313532363b061ac2052a2c6a2c3caa292b2d6a1ab9052a220f1aab050c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291abb040c291aba040c3b1a85050c2e1a84053b2d2d3c3b3c6808280c2a69270df719032f929103922f353036293ba003043b5002041a6205102a353435220c363b061a59052a2c6a2c3caa292b2d6a2f2a22121a30050c1a48051aad040c28072a2c3c6b293b69291a9f040c28072a1a34053c6b3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a23040c291a22040c3b1a05050c2e1a04053b2d2d3c3b3c6808280c2a69271502383b1a04040c3b1aef040c1aef041af0043b2d2d3c3b3c6808280c2a693b1ae4040c3b1ae3040c2b1ae2043b2d2d3b3b3c6808280c2a692707f747022f9291f89d012f353036293ba003043b5002041abf04102a3531230d29299291031b29352a362a351aae04a003052a68010207292503511e1a3b6502013b64293ba003471a9604299291031b29352a362a351a8404a003052a68010207292503511e1a3b6502013b64293ba003041a7004103b50293529351a5e04a003043b5002041a6004102937650215293529351a4704a003043b5002041a49041029376434230d29299291031b29352a362a351a3704a003052a68010207292503511e1a3b6502013b64293ba003051a1f040215293529351a1204a003043b5002041a0404102937642211352212363b061a01042a2c6a2c3caa292b2d6a2806303b6a220d2b22191a8a030c2806220c3b6a1ae4031a01030c28072a2c3c6b293b691aa0022a6928142a3b6a293b69291ae6020c28072a333c6b293b69291ad8020c28072a220e3c6b3d2a69293b69293ba003051a6e020207280f2a1a66026a221435293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a45020c291a44020c3b1a6b030c2e1a6a033b2d2d3c3b3c6808280c2a69272602a42e230d29299291031b29352a362a351a3403a003052a68010207292503511e1a3b6502013b64293ba003051a30030215293529351a0f03a003043b5002041a01031029376428062a3b6a1a15031a22020c28072a2c3c6b3d2a69293b69293ba003051ab9010207280f2a1ab1016a3b1ab8010c3b1aef020c2b1aee023b2d2d3c3b3c6808280c2a693b1a9e010c3b1add020c2b1adc023b2d2d3c3b3c6808280c2a69271064f7600129353ba003041ac502103b5029353fa0038729362a3733361ab7022c2c6a2a3ba003212b220c1aad020c29352806a0030a292e3b1ae701347b050e280b2a2f3b6b6402512a3ca003212b220c1a8b020c29352806a0030a292e3b1ac101347b050e280b2a2f3b6b64022b2a929103133b1a6b020c29220d220d2d1a6502220c7b060e321a58020c29220d220d2d1a5202220c7b060e270402c729353da0037e29362a372a352a35220c361a39022c2c6a2a3ba0031a220d35220e362d352b2aab302a3b6a642b0c28082a692704024a2a3ca0031a220d35220e362d352b2aab302a3b6a642b0c28082a692704022b2a929103133b1ae7010c29220f220f2d1ae101220e7b0610341ad4010c29220f220f2d1ace01220e7b061027060243293632361ac6012b692a3ba003032b02312a3ca003032b02292a929103123b1a9f010c29220c220c2d1a9901347b060d311a8d010c29220c220c2d1a8701347b060d66641f06000000|@13308,1,@3028,@17961,@4684,@13309,@13329,@7760,@13734,@4866,@13735,@5064,@13738,@4848,@13740,@7515,@7275,@7277,@13741,@7315,@13742,@13743,@13747,@13754,@7494,@4867,@5175,@7774,@13760,@5344,@13761,@13762,@13763,@13765,@4851,@7494,@5175,@13760,@13766,@5175,@13767,@13768,@5344,@13769,@13762,@13770,@4807,@5406,@5407,@13771,@13772,@13773,@13774,@13778,@13779,@13785,@13315,@18073,@4517,@13788,@13789,@13790,@18075,@13793,@13798,@13799,@13800,@13801,@13802,@13800,@4838,@13803,@13804,@13805,@62,@5420,@5469,@4594,@103,@13808,@18080,@7774,@13809,@13810,@13811,@13812,@13813,@13810,@13814,@13815,@13816,@18085,@13820,@13821,@13313,@13314,@18089,@17960| 17960:D3,8|fb02293642000000|@13757,1,@3158| 17961:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3029,@13265,@5821,@13263| 17962:D20,588|fb13313629929103291a4c023331303068053b1a46020c2933332d1a42020c343b69291a3e020c28072a2d3c6b2705f71502293ba003503231313131311a28020c333528062a3b6a341a2002692a2a692d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291af201347d11292707f7c001323729353ea0f89f01293634352a0a090030001200e6001b0112001200220112005d01220c34343434341ab4010c220c3b69291aa7010c28072a2d3c6b66f764010b02003492910313343629929103082936293ba06402013b6402013b03433435220c36293529352c352929352806a0030d293629352502501e0e3b64020129642b29352806a0030d293629352502501e0e3b6402012964302b452a46502607020b1a48012a2a35452a36465129352a361a3d012b2b6a2211352806a003092211362968016402013b293ba0031728062b3b6a22133b69291a02010c28072a2d3c6b66020e1a0d0122132e2e6b28062a3b6a64270702ae31929103083136293ba06402013b03043b500203faec103135293529220d220dfae40c220e3b6929fabc0c28072a2d3c6b270502792806303b6a027231929103083136293ba06402013b03043b500203fab8103135293529220d220dfaa80c220e3b6929fa800c28072a2d3c6b28152a28096a2706023731929103083136293ba06402013b03043b500203fa811031352935293bfa7c0c2c2afa7bfa7d0c220f3b6929fa410c28072a2d3c6b2706650217333232323232fa310c333b6929fa260c28072a2d3c6b6664641f070000|@13311,1,@3030,@17963,@13313,@13314,@4867,@13307,@7774,@4851,@13696,@18041,@18046,@13710,@13713,@13720,@13723,@13217,@13726,@13310| 17963:D5,40|fb0829362c2b373b2d382e39fa260c29352806a00309293c3bfa1d2f7b0504280b2a3c3b6b644200|@13312,1,@3031,@13307,@4807| 17964:D4,40|fb072b9291031c2b352c362a3629030a2afa210c2c2a696402062afa172f7d066602013b42000000|@4461,1,@3032,@13313| 17965:D5,48|fb0c2e3ba003052d2c2c7d062d2c0c2f2b362c372d3832323039313a322306fa1b0c29fa1b0c28072a2d3c6b661f0400|@13317,1,@3033,@13316,@4867| 17966:D5,68|fb0f3392910338333534362a352b362c37220e220e220e220e220e220e220e220efa2d0c2a220d220d220d220d220d220d220d220dfa1d0c2a2a69270402013b1f090000|@4648,1,@3034,@13318,@13316| 17967:D14,384|fb203403033c0201330386340313220c301a780131220d220d220d1a72010c02012d220d311a6c0132220e220e220e1a66010c220c0308220e3232310c02012d220f331a4e01342210221022101a4c010c293b692c2a692c2a692f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640308291a1801220c7d1629270902ec2e220d3434341a0a010c293ba003d3220d3c31220d220d220dfafc0c3b31299291031229362b3caa292b25042504511e113b6502012a65292bab0b0300220d2e2a929103043b500203fad0103b502a352b362b3ba0030e2a2e2a35452a36462a374751020e2b3cab2a2a2505250526031e3050515129352a362b3722172bfa9f2213221822182218fa7d0c22182cfa932214221922192219fa710c293b692b2a6922112a6922142a6928142a3b6a3c310c3c3b2b2d6b22202b2b6a220c352a2a69220e3b3b2ce3221e35221f362210352b2aab322a3b6a642b0c28082a69271b020929352935322a2f7d10641f0b00|@13320,1,@3035,@13321,@13324,@13378,@13352,@13336,@4851,@13338,@13381,@4721,@13385,@13319| 17968:D4,16|fb082b352c372a35292bfa10307e0600|@13323,1,@3036,@13322| 17969:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3037,@13322,@4807,@13278| 17970:D20,388|fb1831353ea00393313629929103082936293ba06402013b031329352936293434343434341a6801220c7b090c313532363b061a5e012a2c6a2c3caa292b2d6a2f3b1a4b01220e220e220e2f221422141a45010c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a21010c291a20010c3b1a1f010c2e1a1e013b2d2d3c3b3c6808280c2a69270d6402e631352805a00362313632382938293629353da003402b38293629353da003043b500203faec103b5029362a372a31fae50cfae62a690b02002e2d2bfae00c50293529221622162216221622162216faa522177b09172b2d333333220e2211fa952212fabd220f7b0b0d31352806a003043b500203faaf103b503136293529353ca003363034313131fa9f0c293ba00303fa9b103b503b5029352935220c2a0c29352806a00309293b3bfa86347b050f280b2a3b3b6b2704022c29353fa00319333bfa720c293b323232220d2210fa262211fa4e220e7b0b0c29333333333333fa14347b090b651f0700|@13326,1,@3038,@13324,@17971,@13327,@13329,@7760,@13330,@13331,@8025,@5868,@17975,@8023,@13332,@13373,@13338,@13325,@4807,@13217| 17971:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3039,@13265,@5821,@13263| 17972:D9,96|fb163392910355333534362a3629313131220e220e220e22120c280bfa4e220f3b6b280bfa4a22103b6b293b692b2a6929fa410c28072a303c6b22133caa322a2215221522152215221522152215fa280c28052c2bfa256b270c0202fa221f09|@13328,1,@3040,@4684,@4686,@4867,@13327,@4689,@4683| 17973:D4,28|fb072b929103132b352c3628082b692afa160c2a2a69270402013b42|@4648,1,@3041,@13329| 17974:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3042,@13330,@4688| 17975:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3043| 17976:D11,184|fb0e3338293629353ca0030b2a36293629fab1a06502013b03033c02492a3629353ca0030b2b36293629fa9ca06502013b03033c022f2b3629353ca0030b2c36293629fa87a06502013b03033c02152c3629353ca0030b2d36293629fa72a06502013b6464640304fa6a0249220c3829220d326a642e0c29352806a00308293b3bfa550c0206280b2a3b3b6b220d929191030329021e220d220d220d220d220d220d220d220dfa340c29fa340c28072a2d3c6b6565651f09|@13334,1,@3044,@47,@86,@89,@91,@7610,@4807,@13333,@4867| 17977:D5,52|fb0d3292910328323533362a34343434343434fa2b0c2a220c220c220c220c220c220c220cfa1d0c2a2a69270402013b1f080000|@4648,1,@3045,@13335,@13333| 17978:D9,156|fb0d32352806a0030b3236293529353ca06502013b031d2e33333333fa8a0c293ba00303fa86103b503b5029352935302a2f7d0d322e2d31220c220c220c330c332f2e32220d220d220dfa640c34302f33220e220e220efa5b0c293b692b2a69fa562a692e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa2b347d122927081f08000000|@13337,1,@3046,@13338,@13349,@13352,@13336,@4689,@4851| 17979:D14,380|fb162e353da003111a7d012e69291a7b016929680165f760012e352805a003ed2e362f382938293629353da003412b38293629353da003043b5002041a5101103b5029362a372a311a49010c1a49012a690b02002e2d2b1a42010c50293522142a2214221422141a360122157b07152c929191038d30299291036529352a362a35293830382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403052e680102082d250726061e633b270602013b64293ba003073434fab9327e0c29352936fab42a6929fa936929680127046402073333fa9e317e0b2704026c2e352806a0035e2e362f372a2a692b3529353fa0031f323bfa850c293528053b2b2d3b6805220d2a220d220d220dfa63220e7b070e29353ca0031b0b0200220d2e2b220cfa5d0c5029352a362a2a692968012706020b332a333333fa36347b070b270402072f2ffa2e2d7e071f0500|@13340,1,@3047,@17980,-1,@8025,@5868,@17981,@8023,@13338,@13342,@17985,@13217,@13339| 17980:D3,8|fb02293642000000|@13341,1,@3048| 17981:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3049| 17982:D6,124|fb102c929103712c352d362a3529352c362a299291031e29352a362a3529220cfa660c03052b680102082a250426031e1d3b6602013b64299291033129352936fa4a2a2e6a3b31299291031229362b3caa292b25042504511e113b6502012a65293caa2b2a69296801270602072d32fa1f337e0a270602013b430000|@13343,1,@3050,@13344,@17983,@13342| 17983:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13346,1,@3052| 17984:D5,392|fb162c1a8e010c2c1a89010c2a352806a0030729352806a002013b03222a362a362a352a352a353ca0030629353ca002013b03052c2ca002013b2704f747012a353da0030629353da002013b031e2a362b372b362c372c2b1a3d010c03082b2a1a3501337e0a3b2704f71a012a353ea0030629353ea002013b03682a362a362a2a2a3ba00305293ba002542a352b362b929103492b352c362c352d362c352d362c2ba003033c02172c3b3bef2b3b3befa0030b2c3f2c3f2e3b3befed02013b03072b2afad30c02013b030d2f2e250a250a26081e523b02013b270602013b65656502a32a352805a0030729352805a002013b03912a362b382b362c382b382a382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403362f2e2a3ba00305293ba002272a352b362b9291031c2b352c362c2bfa310c030d2b2a2506250626041e263b02013b6502013b656502013b270702013b6543|@13345,1,@3051,@8044,@13344| 17985:D3,8|fb02293642000000|@13341,1,@3053| 17986:D5,148|fb0e2e929103802e352f362a3829353ca00367293629299291032129352a362a352935220d352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c333333fa57347b060b293529363b2f299291031229362b3caa292b25042504511e113b6502012a65293caa220c2c452a46270465020a2a313131fa20327b060966020afa1b2c692d2a453b46641f0400|@13347,1,@3054,@13339,@17987| 17987:D3,8|fb02293642000000|@13348,1,@3055| 17988:D15,296|fb192e322f2f2f1a2a010c293ba003f432353ea0032f323629929103082936293ba06402013b03182935293629220c220c220c220c220c220cfafd220d7b090dfafa6402bd32352805a00365323633382938293629353da003402b38293629353da003043b500203fad6103b5029362a372a31facf0cfad02a690b02002e2d2bfaca0c50293529221722172217221722172217faa322187b09182b2d220d220ffa96220e220e220e2212faa422107b0b0e32352806a003043b500203fa96103b503236293529353ca00303fa8b103b503b5029353fa0031c343bfa800c293b220c220efa53220d220d220d2211fa61220f7b0b0d29343434343434fa3b220c7b090c021e29352935332a0c29352806a00309293d3bfa49327b050d280b2a3d3b6b66641f07000000|@13354,1,@3056,@13338,@13352,@5389,@8025,@5868,@17989,@8023,@13355,@13358,@13353,@13217,@4807| 17989:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3057| 17990:D6,68|fb0c33382934336a64320c29352806a00308293d3bfa390c0206280b2a3d3b6b3492919103032902183432323232220e221034fa1f0c29fa1f0c28072a2d3c6b65651f09|@13357,1,@3058,@4807,@13356,@4867| 17991:D7,112|fb123292910364323533362a303030220d220d220d22110c29fa6169fa622a69fa5e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa360c0201292f2211221122112211221122112211fa250c2a2a69270902013b1f080000|@4648,1,@3059,@7805,@4689,@4851,@13356| 17992:D15,336|fb192e322f2f2f1a52010c293ba0f81d0132353ea00358323629929103082936293ba06402013b03192935293629220c220c220c220c220c220c1a2301220d7b090d3b2a299291031229362b3caa292b25042504511e113b6502012a65293fa4030728062a3b6a0202faf9646402bd32352805a00365323633382938293629353da003402b38293629353da003043b500203fad4103b5029362a372a31facd0cface2a690b02002e2d2bfac80c50293529221722172217221722172217faa122187b09182b2d220d220ffa94220e220e220e2212faa222107b0b0e32352806a003043b500203fa94103b503236293529353ca00303fa89103b503b5029353fa0031c343bfa7e0c293b220c220efa51220d220d220d2211fa5f220f7b0b0d29343434343434fa39220c7b090c021e29352935332a0c29352806a00309293e3bfa47327b050d280b2a3e3b6b66641f0700|@13364,1,@3060,@13338,@13336,@4683,@8025,@5868,@17993,@8023,@13365,@13368,@13363,@13217,@4807| 17993:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3061| 17994:D6,68|fb0c33382934336a64320c29352806a00308293e3bfa390c0206280b2a3e3b6b3492919103032902183432323232220e221034fa1f0c29fa1f0c28072a2d3c6b65651f09|@13367,1,@3062,@4807,@13366,@4867| 17995:D6,116|fb133292910367323533362a303030220d220d220d22110c293b69fa632a69fa5f2a69fa5b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa330c020129302212221222122212221222122212fa220c2a2a69270a02013b1f08000000|@4648,1,@3063,@4689,@4851,@13366| 17996:D4,16|fb082b352c372a35292bfa10307e0600|@13380,1,@3064,@13379| 17997:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3065,@13379,@4807,@13278| 17998:D10,280|fb182e312f2f2f1a1a010c293ba003f531353ea00330313629322a929103222a352b362a36292d220e220e220e220efaf70c2b2a2506250626041e203b2704020129656402bd31352805a00389313632382938293629353da0033e2b38293629353da003043b500203fac1103b5029362a372a31faba0cfabb2a690b02002e2d2bfab50c5029352922162216221622162216fa9422177b08172b34fa9f0c220c2aa60304220c0201292e2a2a9291031f2a352b362a2c2212221222122212fa680c2a2a2505250526031e1e3b6602012965652704022d31352806a003253136293529353ca0030332021529353fa0030332020c293333333333fa2d347b080b65020130020e293529362933a603032902013265641f060000|@13383,1,@3066,@13338,@13381,@8025,@5868,@17999,@8023,@13382| 17999:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3067| 18000:D5,184|fb122b929103ae2b352c362a3829353ba00398293629299291036129352a362a3834382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e5f3b270502013b6403213b2c299291031229362b3caa292b25042504511e113b6502012a65293caa640207302cfa1f317e086402072f2bfa15307e07660202fa1143|@13384,1,@3068,@13382,-1| 18001:D4,16|fb082b352c372a35292bfa10307e0600|@13387,1,@3069,@13386| 18002:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3070,@13386,@4807,@13278| 18003:D4,16|fb082b352c372a35292bfa10307e0600|@13389,1,@3071,@13388| 18004:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3072,@13388,@4807,@13278| 18005:D3,4|fb023b43|@13395,1,@3073| 18006:D4,8|fb02fa1042000000|@13396,1,@3074,@9471| 18007:D3,4|fb023b43|@13395,1,@3075| 18008:D4,8|fb02fa1042000000|@8098,1,@3076,@4667| 18009:D4,12|fb05fa14352c2a2d7d040000|@10637,1,@3077,@27| 18010:D4,12|fb05fa14352c2a2d7d040000|@10637,1,@3078,@23| 18011:D4,12|fb05fa14352c2a2d7d040000|@9625,1,@3079,@31| 18012:D4,12|fb05fa14352c2a2d7d040000|@4582,1,@3080,@35| 18013:D4,12|fb05fa14352c2a2d7d040000|@13427,1,@3081,@33| 18014:D4,20|fb092d2d2b362c372d3830fa13317b0805000000|@13630,1,@3082,@13629| 18015:D77,2116|fb3730353da0034f1a4508299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a25081a26080c02031a1c083b1a20080c3b1a1f080c2b1a1e083b2d2d3c3b3c6808280c2a692704f7ea0730353ea0f8a704303631372a9291f84d042a352b36293ba0f831022a352b36220c35220d363b061ae7072a2c6a2c3caa292b2d6a2f2a22132213221322131ad4070c1ad4071ad5070c28072a2c3c6b333b3bef293ba003051ac607024f293db1292808b1293cb2293fb4291ab707a503043b5002041ab107103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022123f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691a76072a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1d070c0201291a4607299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a26071aef060c02031a1d071a1e07299291031829352a362a352806a00309292503511e143b02013b6502013c6403091afe061abf060c02031af506293b69332a692c2a692e2a69291ae9060c1ae906299291031829352a362a352806a00309292503511e143b02013b6502013c6403091ac9061a7e060c02031ac0062a3b692a2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a47060c020129293b691a89062a691a88062a691a87062a691a86062a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a01060c020129222035293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a31060c291ad4050c3b1a2b060c2e1a2a063b2d2d3c3b3c6808280c2a69272bf70f020b02002e29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603722f3c2a929103432a352b362a352c3c1ae4050c2a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b03112d3caa2c2a2507250726051e3d3b6402013b270402013c6503213b30299291031229362b3caa292b25042504511e113b6502012a65293da86402013b02013b220e35220f363b061a7c052a2c6a2c3caa292b2d6a3b220e299291031229362b3caa292b25042504511e113b6502012a65293ba203041a5205103b503b503b2a1a4c050c220f2a1a49050c320303290208291a42051a43050c3303051a400502031a3f0528062a3b6a293b691ad8042a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a7f040c0201292f3b1a8a042220222022202220221122181af3040c293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a35040c020129293b691abb042a691aba042a691ab9042a691a74042a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aef030c020129221935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a1f040c291ac2030c3b1a55040c2e1a54043b2d2d3c3b3c6808280c2a69272665024c1a4404299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a24041a79030c02031a1b043b1a73030c3b1a16040c2b1a15043b2d2d3c3b3c6808280c2a69270465f73c0330352805a0f868023036313732382938293629353da003432b38293629353da003043b5002041ade03103b5029362a372a321ad6030c1ad6032a690b02002e2d2b1acf030c50293529221622162216221622161a110322177b08173435220c363b061ab2032a2c6a2c3caa292b2d6a31382935292d31311aa1030c29352806a00309293c3b1a97030c0206280b2a3c3b6b220e1ad1022216221622162216331a81030c220f3ba003dc2a1a7a033b6a280d1a77032b6a1a76031ab3020c28072a2c3c6b22123b3bef293ba003051a6303024928062ab1292808b1293cb2293fb4291a9302a503043b5002041a8d02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a2d033f2d3f2806ec50221a3f2d4034ec502b95502b2707220e35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a6c020c2c1aef02a003033c02132c3b3bef3ba0030a2c3f1adc023f3bed02013b03051ad50202012c2a1aea010c3b1acd020c312c3b2d2d3c3b3c6808280c2a69270d02e52a1aba023b6a280d1ab7022b6a2b1ad9010c28072a2c3c6b1aab021acc010c28072a2c3c6b22143b3bef293ba003051a9802024928062ab1292808b1293cb2293fb4291aac01a503043b5002041aa601103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a62023f2d3f2806ec50221c3f2d4034ec502b95502b2707221035293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a85010c2c1a0802a003033c02132c3b3bef3ba0030a2c3f1af5013f3bed02013b03051aee0102012c2a1a03010c3b1afa010c312c3b2d2d3c3b3c6808280c2a69270f270b270502cc30352806a0037b3036293529353fa00322323b1ad1010c293528053b2b2d3b680529220c220c220c220c220cfac9220d7b080d29353ca003382d333232321aaa010c293ba003041aa501103b503b5029352935342a0c29352806a0030a293c3b1a4c01347b050e280b2a3c3b6b2704020e2a35293333333333fa7c347b080b65024a1a6e01299291031829352a362a352806a00309292503511e143b02013b6502013c6403081a4e01fa380c02031a46013bfa330c3b1a42010c2b1a41013b2d2d3c3b3c6808280c2a6927041f0600|@13632,1,@3083,@13633,@13636,@4851,@7760,@13637,@13396,@18017,@13629,@5344,@4867,@9488,16777215,@4054,@5206,@13638,@13640,@13641,@13644,@13645,@13646,@13649,@4689,@4689,@4683,@4689,@13329,@13650,@13651,@4569,@18020,@4848,@13652,@6330,@13653,@6336,@4133,@4216,@13656,@4689,@4689,@4683,@13673,@13651,@13674,@13677,@13678,@13651,@8025,@5868,@18032,@8023,@18033,@13679,@4807,@13680,@5406,@5407,@5344,@13684,@4062,@4866,@13685,@5406,@5407,@5344,@13684,@13686,@13217,@13338,@13687,@13690,@13694,@13695,@13631| 18016:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3084,@13637,@4688| 18017:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3085,@13265,@5821,@13263| 18018:D6,76|fb0b2b929103402b352c3629fa4a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1d327d092927060202fa17420000|@6193,1,@3086,@13645,@4851,@4689| 18019:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3087,@13650,@4688| 18020:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3088,@13265,@5821,@13263| 18021:D4,24|fb052c2ca003033b020c2c3caa292dfa130c2e2a69654300|@4843,1,@3089,@13652| 18022:D4,12|fb052b352935fa102a696542|@13654,1,@3090,@18023| 18023:D3,48|fb0b2b3529352b363b3bef2a3b3bef2a2aa303032a0201292e363f2e3f2dee293ba003052c2ca50203293ba427064200|@13655,1,@3091| 18024:D34,1044|fb2b33929103043b5002041a1204103b5033353436293ba0f87f012a3529352a362d362a33220f220f220f220f22140c280b1aef032c3b6b291aec036928142a3b6a293b69291ae3030c28072a303c6b0b02002212030d1ad6032a2a35452a36465102da220c3b3bef293ba003051ac303024f293db1292808b1293cb2293fb4291ab403a503043b5002041aae03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691a73032a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a4a030c0201291a4703299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a27031a1c030c02031a1e03293b692b2a69332a451a16034650260a29352a3628062a3b6a293b691af3022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aca020c020129293b69342a69293ba00303310206312a1ac3020c291ac202221d7d252a3529352a362d360b020034030d1ab1022a2a35452a36465102d92e3b3bef293ba003051a9f02024f293db1292808b1293cb2293fb4291a6402a503043b5002041a5e02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d3f2d3f34ec503f31b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691a23022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291afa010c0201291a1302299291031829352a362a352806a00309292503511e143b02013b6502013c6403091af3011acc010c02031aea01293b692b2a69332a451ac6014650260a29352a362f220f221422142214221422190c280b1a7f01313b6b291ac0016928142a3b6a293b69291a73010c28072a303c6b1aad01299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a8d011a5a010c02031a84011a8501299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a65011a2a010c02031a5c01293b692b2a692d2a69293ba00304220d0207220d2a1a48010c22213caa22172a22232223222322232223222322231a33010c2b2a1a31010c22103b3bef293ba003051a270102513e2ab1292808b1293cb2293fb429fac1a503043b500203fabc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f282ee4502b2805282ee4502b2806282ee45022183f2d280734ec502b95502b270728062a3b6a293b69fa7e2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa560c020129293b6929fa980c2806222e3b6a3efa922bfa936b28052a2d220e6b2724651f090000|@13658,1,@3092,@13659,@5039,@13661,@4867,@13664,@9488,16777215,@4054,@5206,@4851,@13638,@13640,@4218,@13665,@13666,@13664,@9488,@13638,@13640,@13661,@13667,@13670,@13638,@13640,@13671,@13656,@13672,@5082,@13657,@5041,@7518| 18025:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3093,@13665| 18026:D6,76|fb0b2b929103402b352c3629fa4a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1d327d092927060202fa17420000|@6193,1,@3094,@13666,@4851,@4689| 18027:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3095,@13671| 18028:D5,76|fb0b2c929103412c352d36292efa490c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1c327d0a29270602012b430000|@6193,1,@3096,@13672,@4851| 18029:D6,76|fb0b2b929103402b352c3629fa4a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1d327d092927060202fa17420000|@6193,1,@3097,@13657,@4851,@4689| 18030:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3098,@13673,@4688| 18031:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3099,@13678,@4688| 18032:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3100| 18033:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3101,@13265,@5821,@13263| 18034:D9,140|fb0b2e353fa003242e362f3729303030fa860c29352806a00309292c3bfa7d317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa5a103b503b50293ba60312293cab2d2a3b6a64330c2933fa460c64020f2c3ba20303fa3f103b503b503d2d6928082a69270702112e353ca003043b500203fa27103b502e361f04|@13279,1,@3102,@13679,@4807,@13265,@5821,@13263,@13278| 18035:D9,136|fb14319291037b313532362a2e33333333220f0c2b2ffa7c32220d220d220dfa770c2c30fa6e33220e220e220efa6d0c293b692b2a692d2a69fa652a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa3d0c02012932221322132213221322132213fa2e0c2a2a69270c02013b1f07000000|@4648,1,@3103,@13681,@13352,@13336,@4689,@4851,@13680| 18036:D4,16|fb082b352c372a35292bfa10307e0600|@13683,1,@3104,@13682| 18037:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3105,@13682,@4807,@13278| 18038:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3106,@13685,@4688| 18039:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3107,@13686,@4688| 18040:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3108,@13695,@4688| 18041:D4,20|fb0628062c3b6afa172a2c362d376b6442000000|@13697,1,@3109,@18042| 18042:D4,16|fb072b2a362b372c38fa112f7b060300|@13699,1,@3110,@13698| 18043:D7,216|fb0a2e3b3bef293fa603722f3b3bef3f2aa70303face103b50303b3bef293fa0030331023a3d2841bd293b3f3bf02a3b3b3ff0502a3f220c3fdce4502a2805220c2805dce4502a2806220c2806dce4502a2807220c2807dce4502a95502a6529fa86a003033c0212293b3bef3fa00309293ffa743f3fed02013b6602013b03032d02482c353ea0031e2c362992910313293629929103082936293ba06402013b6402013b6402013b03202c36293529362929352806a0030d293629352502501e0e3b64020129646602012c29fa1e0c312a32fa1c317b0509|@13701,1,@3111,@6525,@13702,@13700,@7735| 18044:D10,96|fb122b352805a003043b500203fa5d102b362c382938293629353ba00303fa50103b5029353da003312b38293629353da003043b500203fa3b1029362a372a31fa360cfa372a690b02002e2d2bfa310c5029352709fa2d307d072b2704420000|@13703,1,@3112,@13704,@13707,@8025,@5868,@18045,@8023,@13700| 18045:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3113| 18046:D4,16|fb072b2a362b372c38fa112f7b060300|@13699,1,@3114,@13698| 18047:D12,112|fb172c352d363b06fa722a2c6a2c3caa292b2d6a332afa683433363437220c38fa620cfa63fa650c28072a2c3c6b2f35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa3c0c29fa3c0c3bfa3c0c2efa3c3b2d2d3b3b3c6808280c2a69270f4400|@13715,1,@3115,@18048,@13716,@13324,@7493,@4867,@13329,@4838,@13719,@13714| 18048:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3116,@13265,@5821,@13263| 18049:D4,16|fb082b352c372a35292bfa10307e0600|@13718,1,@3117,@13717| 18050:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3118,@13717,@4807,@13278| 18051:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3119,@13719,@4688| 18052:D4,8|fb02fa1010000000|@13728,1,@3120,@13727| 18053:D4,16|fb072936352e2e2efa122f7b06050000|@13732,1,@3121,@13731| 18054:D4,156|fb102e9291038e2e352f362a352b362c37322ca003033c0217323b3bef2c3b3befa0030b323f2d3f2f3b3befed02013b034f31382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b646602013b030329020a2c333333fa1b347b060b270502053b2c2c7d061f04|@13733,1,@3122,@13731| 18055:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3123,@13734,@4688| 18056:D8,148|fb132b352806a003162b36293529353ca003033b020629fa872e7d056502742b352805a0036c2b362c382938293629353da0299103272c383b2f299291031229362b3caa292b25042504511e113b6502012a652a2f2b6a2968016602312c38293629353da003043b500203fa371029362a372a32fa320cfa332a690b02002e2d2bfa2d0c5029352709fa15317d08270502013b42|@13739,1,@3124,@13738,@8025,@5868,@18057,@8023| 18057:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3125| 18058:D5,40|fb092c2ca003033b021bfa28063b3eba293db828062c2b6a303caa2931fa190c2b2a692706430000|@4843,1,@3126,@5064,@13740| 18059:D7,52|fb0c2c929103292c352d362afa3269293cfa310c29fa310c3b2a3c6a3e2c2b6a3d2a346a2f34fa240c2a2a69270902013b430000|@4648,1,@3127,@7515,@7275,@7277,@13741| 18060:D4,8|fb02fa1042000000|@13745,1,@3128,@13744| 18061:D23,388|fb2730301a89010c299291f86f0129352f230d29299291031b29352a362a351a7201a003052a68010207292503511e1a3b6502013b64293ba003471a5a01299291031b29352a362a351a4801a003052a68010207292503511e1a3b6502013b64293ba003041a3401103b50293529351a2201a003043b5002041a2401102937650215293529351a0b01a003043b5002041a0d0110293764333b3bef293ba003051a01010245280d2ab1292808b1293cb2293fb429faf2a503043b500203faed10292841bd2a3cb22a2a3b3bf02b3b3b32f050fad03f2d3f280dec5022123f2d281134ec502b95502b27073e2a693bfac00c220f2e2bfabd3bfabe0c293b69fabc2a69fabc2a693b3b3b3b2d68053bfaa00c2216342bfa9d3bfa9e0c293b69faa42a69faa42a693b3b3b3b2d68052218fa83fa81fa97fa990c22132a0c64293b69fa922a692c2a69fa8f2a69342a69fa8c2a6922132a693b3b3c3b2d68053b22200c2968013c2a2d22256b2224382225230c2a3b3b3ce3502b2a22257d2a3b641f06000000|@13749,1,@3129,@11175,@61,@5420,@5469,@4594,@13750,16777215,@4054,@9314,@9341,@9338,@5091,@13751,@5091,@13748,@11218,@11219,@11234,@11234,@11234| 18062:D4,8|fb02fa1010000000|@13757,1,@3130,@13756| 18063:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3131,@13761,@4688| 18064:D5,52|fb092c2ca003033b02272c3caa293ba20303fa2c103b503c2a6928082a69280b2a3c3b6b303caa2931fa190c2b2a692706430000|@4843,1,@3132,@5886,@13765| 18065:D5,44|fb072c2ca003033b021e2c3ba20303fa27103b503b2d6928082a692e3caa292ffa1a0c2b2a69270443000000|@4843,1,@3133,@5886,@13766| 18066:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3134,@13767,@4688| 18067:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3135,@13769,@4688| 18068:D9,136|fb0b2e353fa003242e362f3729303030fa820c29352806a00309292c3bfa79317b0509280b2a2d3b6b6602582e353da003432e362f372a352a352935322aab293ba20303fa56103b50293ba60312293cab2d2a3b6a64330c2933fa440c64020d2c3ba20303fa3d103b503d2d6928082a692707020f2e353ca003043b500203fa27102e361f040000|@13299,1,@3136,@13770,@4807,@13265,@5821,@13263,@13298| 18069:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3137,@13771,@4688| 18070:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3138,@13773,@4688| 18071:D4,8|fb02fa1010000000|@13757,1,@3139,@13776| 18072:D4,8|fb02fa1010000000|@13782,1,@3140,@13781| 18073:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3141,@13265,@5821,@13263| 18074:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3142,@13788,@4688| 18075:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3143,@13265,@5821,@13263| 18076:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3144,@13799,@4688| 18077:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3145,@13801,@4688| 18078:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3146,@13803,@4688| 18079:D3,4|fb023b42|@5474,1,@3147| 18080:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3148,@13265,@5821,@13263| 18081:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3149,@13809,@4688| 18082:D3,4|fb023b42|@5474,1,@3150| 18083:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3151,@13813,@4688| 18084:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3152,@13814,@4688| 18085:D5,36|fb0729372cfa290c29352806a0030a292b363bfa1f2f7b0504280b2a2c363b6b64420000|@13757,1,@3153,@13819,@4807| 18086:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3154,@13819,@4807,@13298| 18087:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3155,@13820,@4807,@13298| 18088:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3156,@13821,@4807,@13298| 18089:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13822,1,@3157| 18090:D3,8|fb02293642000000|@13283,1,@3159| 18091:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3160| 18092:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3161,@13305| 18093:D9,180|fb102d230d29299291031a29352a362a35faada003052a68010207292503511e193b6502013b64293ba00342fa96299291031a29352a362a35fa85a003052a68010207292503511e193b6502013b64293ba00303fa72103b5029352935fa61a003043b500203fa6410293765021329352935fa4ca003043b500203fa4f10293764299103072e3b45334602230b0200220d220d2b220e220dfa360c5029352a362a2a220f220e220efa2a220f7b0710661f060000|@13825,1,@3162,@64,@5420,@5469,@4594,@13824,@13272| 18094:D12,360|fb2b2f3ba003082d3b452f46f755012f3530363035313632372d3529382a350b02002c2a1a4d010c50293634352938293629353da003203f2d22106a29220c69220e220e2b6a22102a2218221822181a260122197b071931352922141a1d010c2214220f0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faeb0c0201290b02002c352806a0030dfadf2d692a3b452a465050021a3c221c0cfad22a221f6a3c3b2c316b293b692d2a452c4650260429352a363f2210221c6a22153629353ba00348293622173722183629353da00303fa9f103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a2f3b6bfa782a2f6a28052a221f6a270702072805221722186a29221a692c2a692e221d2b6a0b020022222d2b222a222afa330c5029352a362a3ba00304220c0206220c2bfa3b0c222b2a452b462718270f1f050000|@13827,1,@3163,@8111,@13824,@13828,@4851,@18096,@18097,@8092,@4801,@13826| 18095:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3164,@13828,@4807,@13278| 18096:D3,8|fb02293642000000|@13283,1,@3165| 18097:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3166| 18098:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3167,@13826| 18099:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3168,@13829| 18100:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3169,@13830| 18101:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3170,@13831| 18102:D32,804|fb2631353da0039f313629352a3929352c3a29350b02003022112211221122112e221122100c5029352a360b02002c352806a0030e1af8022d692a3b452a465050021b3c22140c1aea022a22156a3c3b2c316b293b692d2a452c4650260429352a36220c221622161acd020c293ba003032b02062b2a1ac3020c293ba00303310206312a1ab9020c22172d0c29220f1ab202221c221c221b1aad020c22182c452a462715f77a0231353ea003f93136323829353b062932341a91026b293b690b0200221032221122112211313b1a80023122142213360c502935323b2a929103282a352b362a22131a69020c2c3ba00303290206292d1a5f020c2b2a2506250626041e263b270402012965293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653135291a2d020c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652e3ba00303290206292f1a05020c28142e3b6a2e299291031829352a362a352806a00309292503511e143b02013b6502013c640307291add010c0201292922101ad701221a221a22191aae010c22162d452a462713f77b0131353ca00390313632373b062931331a94016b293b690b0200220f30221022102210313b1a9f013122132212360c5029352a360b0200220c22152e221522152e221522140c5029352a36220c35291a65010c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303320206322e1a4d010c293ba003032a02062a2a1a43010c22172a452f46271402e531353fa0032231372935293ba003041a2a01103b502935293629321a22010c313b452a46270502bd3136293729352b3829352d3929352f2307293531350b02002c22152215221522152e221522140c5029352a362930faec2216221822116b221722172216faa50c3c22160cfada06fadb063d2b2b6a2b3b3b2fe32b3b3b221ce322112cfaca0c29221d221dfa6e0c22113ba00303fabd103b50221135293729221ffab40c343b6929fab10c28072a2d3c6b3c3b220f2c6b293169293ba003042212020622122afa970c22103ba20303fa92103b503d22116928082a6922262c452a4627231f0700|@13835,1,@3171,@18103,@18104,@13836,@13878,@13879,@13880,@13884,@4685,@13947,@13949,@13965,@13944,@13966,@4851,@13967,@13970,@13971,@13972,@5689,@13973,@18191,-1,@10945,@13974,@13978,@13981,@4867,@13834,@5886| 18103:D3,8|fb02293642000000|@13283,1,@3172| 18104:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3173| 18105:D4,12|fb062d2d2dfa112e7b050500|@13838,1,@3174,@13837| 18106:D7,140|fb152d929103832d352e362a352b362a362b3529353da003043b500203fa791029362a373c220c0c2b3b3b2ce32b3b3b220fe32f353ba003042f3902013b323629353da00303fa54103b5029353ba00314293729353ca0030729362935640202293664020529362935642922112213220d2ffa2c0c3c3b312c6b220e22142214fa220c2a2a69271102013b44|@4648,1,@3175,@13269,@8092,@13839,@13837| 18107:D40,836|fb1a2c3629353da0f8e30129362a372a3ba003cc3b062933331a34036b293b69220c9103051a2c0302122c220c1a28032c33373438220c391a21030c2d220d1a1e032d3437220c38220d391a16030c2e220e1a13032e220c37220d38220e391a0a030c2e35291a07030c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b1ae802220e361ae6026b2d3b692f2a692b2a69322a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ab2020c020129303ba00303290205280f312b6a2710f70a013b062933331a68026b293b693b2e299291031229362b3caa292b25042504511e113b6502012a651a76023136691a7402220e2c322f1a70020c220e9103051a330202191a66022f33373438220c3968051a5d02220f2d33301a4d020c1a5502303437220c38220d3968051a4b0222102e34311a33020c1a430231220c37220d38220e3968051a380222112f220c321a17020c3035291a2c020c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b1a0d02311a0d026b2d3b692f2a692b2a69322a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aa5010c020129303ba00303290205280f312b6a271265f751012d3529311abb010c0b02002c352806a0030e1ab1012d692a3b452a465050021a3c340c1aa4012a220e6a3c3b2c316b293b692d2a452c4650260429352a36220d2a0c220c3629353da003041a8001103b503b5029353ca00304293702022936220d03262b352806a003092b3c3b1a62010c0206280b2c3c3b6b291a59013b6a280d1a56012b6a650234293ba003043436022b3b1a48010c2a3ba203041a4301103b503b503b2b1a3d010c220d361a3a013b2d2d3c3b3c6808280c2a69663b1a2d012b1a2d016b2d352806a003092d3b3b1aff000c0206280b2e3b3b6b2e352806a003082e3d3bfaea0c0206280b2f3d3b6b2f352806a003082f3e3bfad50c0206280b303e3b6b293b692b2a692e2a692e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa520c020129220f3ba00303290206280f22102b6a2715641f050000|@13841,1,@3176,@4685,@4689,@13842,@13324,@13845,@13352,@13848,@13336,@13851,@4868,@4683,@4851,@18115,@13840,@13853,@18123,@13863,@18126,@13867,@18129,@13871,@13872,@4868,@4683,@13873,@18134,@18135,@13874,@4807,@5406,@5407,@7760,@4848,@13877,@13840,@4868,@4683| 18108:D4,16|fb082b352c372a35292bfa10307e0600|@13844,1,@3177,@13843| 18109:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3178,@13843,@4807,@13278| 18110:D4,16|fb082b352c372a35292bfa10307e0600|@13847,1,@3179,@13846| 18111:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3180,@13846,@4807,@13278| 18112:D4,16|fb082b352c372a35292bfa10307e0600|@13850,1,@3181,@13849| 18113:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3182,@13849,@4807,@13278| 18114:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3183,@13851| 18115:D3,8|fb02293643000000|@13852,1,@3184| 18116:D14,244|fb232e352f363b06faf62a2c6a2c3caa292b2d6a3b06faec2a69220c3ba20303fae6103b503b503b220d2efadf0c220c2afadd0c3c2a693b0629302f2d6b29221069312a22170c2c3529fac80c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a221035293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa790c220f35221dfa75a003033c0214221d3b3bef3ba0030a221d3ffa613f3bed02013b0304fa5b0202221d2bfa580c221d3ba20303fa33103b503b503b221efa490c302c3b2d2d3c323c6808280c2a69271b1f060000|@13855,1,@3185,@18117,@18118,@4848,@13857,@6330,@13859,@13329,@4062,@4866,@7760,@13854| 18117:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3186,@13265,@5821,@13263| 18118:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@13856,1,@3187| 18119:D5,32|fb072d2da003033b0212fa202e2d6a2e3caa292f2ffa190c2b2a696644000000|@4843,1,@3188,@18120,@13857| 18120:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@13858,1,@3189| 18121:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3190,@13859| 18122:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3191,@13854,@4688| 18123:D5,20|fb0a29362dfa192e2d372e382f39fa14327b0904|@13852,1,@3192,@13860,@13324| 18124:D4,16|fb082b352c372a35292bfa10307e0600|@13862,1,@3193,@13861| 18125:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3194,@13861,@4807,@13278| 18126:D5,20|fb0a29362dfa192e2d372e382f39fa14327b0904|@13852,1,@3195,@13864,@13352| 18127:D4,16|fb082b352c372a35292bfa10307e0600|@13866,1,@3196,@13865| 18128:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3197,@13865,@4807,@13278| 18129:D5,20|fb0a29362dfa192e2d372e382f39fa14327b0904|@13852,1,@3198,@13868,@13336| 18130:D4,16|fb082b352c372a35292bfa10307e0600|@13870,1,@3199,@13869| 18131:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13279,1,@3200,@13869,@4807,@13278| 18132:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3201,@13872| 18133:D6,100|fb0c2c353fa003222c362d37292efa600c29352806a00309292c3bfa57317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa1c103b502c36430000|@13279,1,@3202,@13873,@4807,@13278| 18134:D3,8|fb02293642000000|@13283,1,@3203| 18135:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3204| 18136:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3205,@13877,@4688| 18137:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3206,@13878| 18138:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3207,@13879| 18139:D4,8|fb02fa1010000000|@13882,1,@3208,@13881| 18140:D4,24|fb0c0b020033332b3333220d34fa150c502935661f060000|@13886,1,@3209,@13885| 18141:D12,328|fb170b020034352806a0030f1a4501220c692a3b452a465050021a3c320c1a37012a336a3c3b2c22106b293b692d2a452c4650260429352a363b220d299291031229362b3caa292b25042504511e113b6502012a65293ba203033c020429fafca80303fafb103b502928403bda220e299291032929352a362a352b362968012f932c2aa90303fadc103b50302d3b2de3502d250726061e273b270602013b642a933b2a293ba003032a022c293cb22a3cb22b3cb2302a3bdb293ba00303faa9103b5029352c2a6929316929302509250926071e2f3b2707650b02002c2a221222142216220d2215fa83fa850c5029352a3629030922152218453c46024428142b3b6a2b299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa4d0c020129220d3ba00303290206280f220e2b6a22182a453b4666270f1f07000000|@13888,1,@3210,@18142,@18143,16777215,@4557,@4632,@5689,@13885,@13887,@4851| 18142:D3,8|fb02293642000000|@13283,1,@3211| 18143:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3212| 18144:D6,76|fb143292910337323533360b02002c2a220e220e220e220e220e220efa3a0c5029352a362a2a69302a2212221222122212221222122212fa2322137b0b12fa20322a35452a3646641f080000|@6193,1,@3213,@13887,@13889,@4687| 18145:D42,1068|fb45333629353ca0032129362a37220c352a2c220d0c29220c1a1c040c292c69220f2a453b462706f7fe0329353da0f8710329362a372b3829352a382210352210352211363b0629221122111aed036b293b691aea03221132221533220f220e30221768090b0200331ad8032b1ad8030c5029352a36291ad2030c291ad1030c2c22121ace030c2992910392293522113b3bef293ba003051abd03024c293db1292808b1293cb2293fb4291aae03a503043b5002041aa80310292841bd2a3cb22a2a3b3bf02b3b3b32f05022193f2d3f34ec503f31b12c2a283ae4502c2a3cb140e4502c95502c27081a780335292b1a76030c501a6d033529392a1a6e032b1a6e030c503b1a6c030c2f2a691a6903352a2a0c64651a64030c501a6303103b500b020022151a5c032b1a1c030c502936291a54030c291a53030c0b0200332d2a3ba00305293ba0023c2a352b362b929103312b352c362c35291a34030c29352806a0030a29362d352a2aa06502013b030d2d2c2508250826061e3a3b02013b270402013b65650323222422120c221b3729353ba003092936221a2aa06402013b2c2c452a46502603f7a2012c929191031a331adf020c292226221522151ad8020c2b2a453b465051f782013b2d299291031229362b3caa292b25042504511e113b6502012a652225352226363b061aab022a2c6a2c3caa292b2d6a2f3ba203041a9d02103b503b302c1a98020c342a1a96020c3b061a94022a693c2c693b0629302d2d6b2922216922191a67020c29332c22241a62020c2d35291a73020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a222e3b3bef293ba003051a3e020255293eb1292808b1293cb2293fb4291ad301a503043b5002041acd0110292841bd2a3cb22a2a3b3bf02b3b3b32f05022363f2d3f34ec503f31b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708221335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ac3010c2210352d1abf01a003033c02132d3b3bef3ba0030a2d3f1aac013f3bed02013b03051aa50102012d2b1aa2010c221c3ba203041a7401103b503b221d1a93010c322c3b2d2d3c323c6808280c2a6922202a453b4650262029352a36221635291a58010c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032d0205280f2a2f6a29221d69221c030c2e030622233da002013b02013b222e2b452a462725028629362a37220d35220d35220e362c360b02002c353ba0032a2c36221122100c29352806a00309292b3b1afd000c0206280b2a2c3b6b2b33a02d2b452a46502604020f3036292212fae40c2b2a453b46505129352a360b02002d220e2b22172219221b221822180c5029352a362a220d69220c03092f03032a02013b02013b221b2b452a462712641f09|@13891,1,@3214,@13892,@4685,@18147,@13902,@8023,@10925,@13903,@11175,@6879,16777215,@4054,@18932,@4021,@4406,@3978,@13904,@193,@13922,@13935,@13938,@13212,@13940,@8044,@13313,@13314,@18168,@4848,@13941,@6330,@18171,@13944,@13945,@13329,@4062,@4866,@7760,@13946,@4807,@13890| 18146:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3215,@13892,@4807,@13298| 18147:D20,564|fb1f2923063729353ba0f88b0129362b3a3ba003352d2c360c29352806a00309292b3b1a1a020c0206280b2a2c3b6b29352806a0030a293c3b1a0402327b0507280b2a3c3b6b65f74b012b3a3ca0f829012b391aee010c29353da0030829362968016402013b29929103b32d38352e38363b061ad2012a2c6a2c3caa292b2d6a2934360c29352806a0030929333b1aaf010c0206280b2a343b6b2806220d373b6a291aa701692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a7c010c0201293335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a55010c291a54010c3b1a53010c2e1a52013b2d2d3c3b3c6808280c2a69271302592f2e360c29352806a00309292d3b1a11010c0206280b2a2e3b6b280630373b6a291a2201692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030729fae0220d7d0d29270665021b2d2c360c29352806a00309292b3bfab6317b0506280b2a2c3b6b646402982a3a3ba0033efac835fac935faca35facb35facc2c2e2c2e68052f2306323123073b3323082efabc0c29352806a0030a293c3bfa73220c7b050a280b2a3c3b6b270602542a3a3ca00327fa8435fa8535fa8635fa8735fa882c2e2c2e68052f2306323123073b3323082efa7c220e7b0809fa5d35fa5e35fa5f35fa6035fa612c2e2c2e68052f2306323123073b3323082efa51220e7b080964420000|@13894,1,@3216,@4807,@8044,@18148,@13895,@4851,@13329,@7760,@13896,@4866,@13897,@188,@189,@190,@191,@4062,@13307,@13893| 18148:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3217,@13265,@5821,@13263| 18149:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3218,@13896,@4688| 18150:D14,160|fb19303829faa50c29353da0030829362968016402013b2992910368323533363b06fa8c2a2c6a2c3caa292b2d6a220dfa820c2211fa812c22122d22122212fa7b0c2e35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa580c29fa580c3bfa580c2efa583b2d2d3c3b3c6808280c2a69270e021730fa490c34fa49220c220c2d220c220cfa26220d7b090c661f060000|@13899,1,@3219,@8044,@18151,@13900,@4684,@13309,@13329,@7760,@13901,@4866,@13898,@4689| 18151:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3220,@13265,@5821,@13263| 18152:D4,28|fb072b929103132b352c362a3b3b6a2afa160c2a2a69270402013b42|@4648,1,@3221,@13900| 18153:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3222,@13901,@4688| 18154:D4,28|fb072b929103132b352c362a3b3b6a2afa160c2a2a69270402013b42|@4648,1,@3223,@13898| 18155:D3,4|fb023b42|@10938,1,@3224| 18156:D4,40|fb072b9291031c2b352c362a3629030a2afa210c2c2a696402062afa172f7d066602013b42000000|@4461,1,@3225,@13903| 18157:D3,8|fb02293635420000|@13905,1,@3226| 18158:D31,348|fb192b363ca203061a5d01f74b012b3529353ba003912c3529362a372b3830363cab293ba203051a42010257293cab2d2a691a3b01352a2a0c642c3ca203051a320102302c3cab2f2a691a2301352a2a0c642f3cab312a691a1d01352a2a0c64291a1801691a18012a691a17012a692f2a6927091a11012a691a10012a692c2a6927061a0a012a693b3c3b3b2d6805293b691aff002a691afe002a693b3c3b3b2d6805270b02b12c363ca20304faed02a72c3529362a372b382c3931363cab293ba20304fada0271293cab2e2a69faa0352a2a0c642c3ca20304fac8024e2c3cab302a69fa8a352a2a0c642f3da20304fab6022b2f3cab322a69fab0352a2a0c64323cab342a69faa3352a2a0c6429fa9f69faa02a69faa02a692f2a692709fa9b2a69fa9b2a692c2a692706fa962a69fa962a692c2a692706fa912a693b3c3b3b2d6805293b69fa872a69fa872a693b3c3b3b2d6805270c64420000|@13908,1,@3227,@6303,@5086,@155,@5086,@7,@6393,@5091,@9324,@5091,@9324,@6395,@5091,@13909,@6303,@5086,@5086,@5086,@154,@6393,@5091,@9324,@5091,@9324,@5091,@9324,@6395,@5091,@13907| 18159:D6,20|fb082b2a362b37fa17fa19fa1b307b0703000000|@13924,1,@3228,@13925,@13927,@13923| 18160:D3,4|fb023b42|@13926,1,@3229| 18161:D3,4|fb023b42|@13926,1,@3230| 18162:D5,28|fb092f3b2f31313131fa1d0c292fa0910306fa18302d7d083b641f05|@13929,1,@3231,@13928,@4103| 18163:D7,228|fb1431353da003032f02d631353fa00317313632372a310c50312aab293ba603032902013b6602b931353ea00319313629300c50293b3bef312aab293ba603032902013b66029a31353ca00328313629293ba6030efa99310c50293cab25011e0f02023b5050302aab293ba603032902013b65026c3136323733383439342daa220d220cfa6e0c293ba0031e2c330c2c3b220f220f2f2210fa5e22112211220efa5a0c2e340c2a66023529352d340c502c220e2a929103202a352b362a302d2213221322132213fa2f0c2a2a2505250526031e1f26030200512d330c50296427061f0700|@13931,1,@3232,@4125,@13932,@13928,@13930| 18164:D4,144|fb0b2c353da003033b02832c353fa003142c37292da403092c2aab2968016402013b6402692c353ea003182c36293b3bef292ea403092d2aab2968016402013b65024b2c353ca003142c36292da403092c2aab2968016402013b6402312c392c68012a2a2a929103222a352b362b3ba003033b02082b352b2afa210c642a2a2505250526031e213b6602012965654300|@13933,1,@3233,@13932| 18165:D7,436|fb13349291f8a7013435220c362a353da0033b1aaa01340c5032293ba603101aa201220c0c50293cab25011e1102023b50503133ab2a3b2b220e220e220e220e220e220e220e1a7f01220f7b0c0f2a353ba0032c32220daa2b2a220e220e220d220c220c220f0c2b3b2b220f220f220f220f220f220f220f1a4d0122107b0c102a353fa003262a362b372a220d0c50220d2aab2c3b2b22102210221022102210221022101a210122117b0c112a353ea003272a3629220c0c50293b3bef220d2aab2c3b2b2210221022102210221022102210faf422117b0c112a362b372b3ba00304220d02c5342aaa3003033c024d220e2ca403033c0244220e2cab2d2a2a9291032e2a352b362a353ca003052b6801021c2a2cfab60c299291031029352b2a2506250626041e283b6402013b6465020329680165293ba0912991660339fa80220e0c5029293ba6030ffa78220f0c50293cab25011e1002023b5050342aab2d2c2b2211221122112211221122112211fa5622127b0c122b293ba6030ffa45220f0c50293cab25011e1002023b5050220e2cab2d3b2b2211221122112211221122112211fa2222127b0c1265650201321f0a0000|@13934,1,@3234,@4103,@4125,@13930,@13932| 18166:D3,4|fb023b42|@13939,1,@3235| 18167:D4,44|fb082b929103232b352c362a36293fb7293ba091030a2bfa1f0c2d2a696402062bfa15307d07270402013b42|@4461,1,@3236,@13940| 18168:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3237,@13265,@5821,@13263| 18169:D5,32|fb072d2da003033b0212fa202e2d6a2e3caa292f2ffa190c2b2a696644000000|@4843,1,@3238,@18170,@13941| 18170:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@13942,1,@3239| 18171:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@13943,1,@3240| 18172:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3241,@13944| 18173:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3242,@13946,@4688| 18174:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3243,@13890,@4807,@13298| 18175:D3,12|fb052b352c372a2a69654200|@13948,1,@3244| 18176:D11,208|fb112c353ba003372c3729353b06292ffacafacc6b293b692c3b2a9291031a2a352b362a2c220d30faba0c2a2a2505250526031e193b66020129652705028f2c353ca003332c36293b2a929103252a352b362a31fa920c2c3ba00303290205292dfa890c2b2a2506250626041e233b2704020129656402562c37293b2a9291034a2a352b362a382935293ba00303fa60103b502935293629353da003043b500203fa511029362935293ba20303fa49103b503d2a6928082a69293469322a250d250d260b1e483b270b02012965644300|@13951,1,@3245,@13952,@4685,@13957,@13949,@13950,@5689,@13269,@5886| 18177:D4,8|fb02fa1010000000|@13954,1,@3246,@13953| 18178:D13,140|fb0e2e353da0033b2e362936292f2ffa870c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965313ba003032902072932fa60317e0a270402442e353ca0030f2e362936292ffa4f0c29316966022f2e353ea003282e36fa4235fa4335fa4435fa4535fa462c2e2c2e68052e33333bfa3e2efa3f0c29220c69270702012d1f04000000|@13959,1,@3247,@13960,@13961,@13962,@188,@189,@190,@191,@4062,@13958,@13307| 18179:D11,60|fb0f2d929103312d352e36fa3b35fa3c35fa3d35fa3e35fa3f2c2e2c2e68052f34343bfa372efa380c2f220c220cfa340c2a2a69270902013b440000|@4648,1,@3248,@188,@189,@190,@191,@4062,@13958,@13307,@13960| 18180:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3249,@13961| 18181:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3250,@13962,@4807,@13298| 18182:D3,4|fb023b42|@13964,1,@3251| 18183:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3252,@13950| 18184:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3253,@13965| 18185:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3254,@13966| 18186:D4,8|fb02fa1010000000|@13882,1,@3255,@13968| 18187:D3,12|fb052b352c372a2a69654200|@13948,1,@3256| 18188:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3257,@13971| 18189:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3258,@13972| 18190:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3259,@13973,@4807,@13298| 18191:D5,76|fb0929382d2a929103043b500203fa48102a352b362b3ba003042a36020f2b3cab2a2a2505250526031e243b646565293629353da003102d2c362d372d3bfa1c0c3c2a696402022a35654300|@13882,1,@3260,@4721,@13839| 18192:D5,64|fb0f2c929103362c352d362a352b36293529353ba003043b500203fa2f1029362b362c373f2c220c6a292c2c6a302a6932220efa1b0c2a2a69270c02013b4300|@4648,1,@3261,@13975,@13974| 18193:D6,96|fb0c2c353fa003222c362d37292efa5c0c29352806a00309292c3bfa53317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa18102c3643|@13299,1,@3262,@13981,@4807,@13298| 18194:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3263,@13834| 18195:D16,380|fb21339291f85d01333534362a353ba003572a363b062a2a69293b693b0632220f22112215221422123c3068081a580132221532221422142212221168080b02002f3b2f2f2d1a43010c5029352a362a3ba003042213020722132b1a32010c22122a452b46270d02f92a353ca0032f2a362b371a1e012e2d343368051a19012f2d2c34680522112c221122112211221122113022112211221022127b0c122a372b3829350b020022112f2b2216220c36220f221622162219fae20c5029352a360b0200312d2216221222192efad20c5029352a363b06292218221afac76b293b690b0200222022143122202220313b2220312220221f0c5029352a36303529faa70c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303290205292efa800c293ba00304220d0206220d2afa750c293ba003042213020622132afa6a0c293ba003042222020622222afa5f0c22212a453146271c6502132e220c3434343468062e0c2d2a35452a3646641f0a0000|@13983,1,@3264,@18196,@13985,@14635,@18561,@18562,@14638,@13271,@4685,@13944,@14644,@14645,@14646,@13982| 18196:D3,52|fb132b352c3629392a3a0b0200303731382f3339343a31220c220e230631221023072211360c5029352a362a2a69270942000000|@13984,1,@3265| 18197:D54,2004|fb582f9291f8bc072f3530362a3529350a1f004b003e003e003e003e003e003e003e003e00cd033e003e0056043e003e003e003e003e003e00a904dc043e003e003e003e003e00a1053e0003063e003e002a3232323231337b070af763072936293a29352b352c372d382e39220e35220f3622103722113922123a301a61070c300303330205291a5a070c322a1a58070c0b02002c2a1a53070c5029352a363b33690b020022132e2e2b929103052a929102013b03322b352c362c352d360b02002f2e322c221c221e222f1a22070c5029352a362a2a6931302b250d250d250d260a1e39260a0209292d2a35452a364651260329352a362212230d29299291031b29352a362a351aea06a003052a68010207292503511e1a3b6502013b64293ba0034b1ad206299291031b29352a362a351ac006a003052a68010207292503511e1a3b6502013b64293ba003041aac06103b503b50293529351a9806a003043b5002041a9a06103b502937650217293529351a7f06a003043b5002041a8106103b50293764332214221622142d1a74060c0b0200221431221a221c221b2e1a67060c5029352a36221c1a60060c0b02002c2e2220222222212e1a4c060c5029352a362a3ba00303300206302b1a41060c221d1a3f060c3b2a693b0629222522252d6b29222369222903922222222d2a3ba00312293ba003043b5002041a1906103b503b02742a352b362b929103043b5002041a0706103b502b352c362c352938293629353ca003082938293ca06402013b030d2a362936293b3b32e35051022c2a3629353ba00309293729353ca06402013b03043b5002041ac505103b502b3629372936293b3b34e35026042e2d2509250926071e863b27076502013b223735223836223937223a38223b2306223c23072e2e2e2e2211220c303068080b020022363b2e1a7d052d22420c5029352a362236036b222f299291036029352a362a352938293629353ca003082938293ca06402013b030d2a362936293b3b3be35051022c2a3629353ba00309293729353ca06402013b03043b5002041a2205103b502b3629372936293b3b3be35026042c250626051e5e3b270502013b6402013b22443522453622463722473822482306224923072e2e2e2e342219303068080b020022483b2e22502d224f0c5029352a36221c35291ad0040c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba003042211020722112e1aa6040c293ba003032a02062a2a1a9c040c293ba003042224020722242a1a90040c293ba003042231020722312a1a84040c293ba003042237020722372a1a78040c293ba003042259020722592a1a6c040c22572a4533462752f7e1032936313532363337343a2d2b2d2c301a52040c2e1a51040c220e35220f3622103722113922123a0b0200312e313332312f1a38040c5029352a362a3ba00303340206342b1a29040c293ba00304221a0207221a2a1a1d040c221a35221b36221c37221d38221e3a221f2306222023072f2f2f2f220d3030306808221c322b22242224222322257b072529360b02002c2e220d2c34360c5029352a362a3ba00304220e0207220e2b1ace030c220e35220f3622103722113822123a22132306221423072f2f2f2f220c30303068082210322b22182218221722197b07192936293929352b352c361a9303220d2d3433221068062b3ba003032a02062a2c1a81030c29221022102d2210220f22117b07112936293729352b3829352d392935220e35220f3622103722113522123622133722143922153a0b0200220f2e313332312f1a29030c5029352a360b020022102d2210221222112e1acf020c5029352a360b020022172d2215221722162e1a15030c5029352a362a3ba003032f02062f2b1a06030c293ba00304220c0207220c2a1afa020c293ba003042228020722282a1aee020c222835222936222a37222b38222c3a222d2306222e23072f2f2f2f220e3030306808222a322b22322232223122337b0733293631353236333734392d1ab2020c0b02002c2e3133322e1a39020c5029352a362a3ba003042213020722132b1a94020c22133522143622153722163822173a22182306221923072f2f2f2f220c30303068082215322b221d221d221c221e7b071e29362a392d3633352c299291033f29352a362a3829352c372a299291032029352a362a381a3f02342210306b2a2a1a39020c502b250526041e1f260402023b50502c250626051e3d3b270502013b64220c35220d36220e37220f390b02002c34312c1a09020c5029352a3634220d3234331afe010c293ba003032b02062b2a1af4010c221735221836221937221a38221b3a221c2306221d23072f2f2f2f220d30303068080b0200221a2a1acc010c5029352a3629221e302223370c2b3ba003033b02332b3b2a929103182a352b362a2c1aaa010c2a2a2505250526031e173b66020129650b02002c2223220c2c2229360c5029352704221e3b2a929103252a352b362a3829352d3ba00303290206292e1a6e010c2c2a2507250726051e233b2705020129650b02002c221622132215221422132f1afe000c5029352a362a3ba003032f02062f2b1a3b010c293ba00303310206312a1a31010c293ba003042217020722172a1a25010c293ba003042230020722302a1a19010c22303522313622323722333822343a22352306223623072f2f2f2f220f30303068082232322b223a223a2239223b7b073b66020d2e2e692d0c2c2a35452a3646641f0500|@13988,1,@3266,@13989,@13990,@13991,@13231,@13994,@68,@5420,@5469,@4594,@14003,@13823,@14118,@14119,@14120,@6198,@6198,@10941,@14121,@13944,@14123,@14124,@14125,@14126,@14127,@14128,@14129,@14150,@13302,@14151,@14152,@14153,@18280,@14158,@13292,@14159,@14160,@14161,@14162,@14163,@18289,@14165,@14172,@14177,@14183,@14184,@14185,@14196,@14197,@14198,@14199,@13987| 18198:D4,28|fb082b929103132b352c362a3629352bfa160c2a2a69270502013b42|@4648,1,@3267,@13989| 18199:D5,72|fb0a2b9291033f2b352c362a352938293629353da00303fa3b103b5029353ba00314293729353ca0030729362935640202293664020529362935642dfa1a0c2a2a69270702013b42|@4648,1,@3268,@8092,@13990| 18200:D9,112|fb1b2c3ba0030f2b3ba003043b500203fa6a103b02562c352d362d929103043b500203fa5b102d352e362c36293529362f3a2afa4f0c2afa4f0c0b03002e2e2bfa4a0c5029352a362b37220e2c2c220e6b292b6929352a366929352a362a2a6922152214fa2a0c2a2a69271843000000|@6073,1,@3269,@6072,@6072,@13993,@13992,@8018,@13991| 18201:D5,68|fb0d2b929103382b352c362a380b02002c353da0030d2c362f352b2a452b465051020a2e352a2a45fa2646505029352a362a2a6930fa1d0c2a2a69270a02013b42000000|@4648,1,@3270,@5064,@13993| 18202:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@3271,@13992| 18203:D7,84|fb16313629352936323533362b220d3434fa4d0c313532363337343a0b02003332303231312ffa3c0c5029352a362a3ba00303340205342bfa2e0c293ba00303330205332afa250c22162a452c4627111f070000|@13996,1,@3272,@13997,@13302,@14002,@13995| 18204:D5,84|fb0f2e929103052d929102013b03422e352f362f3530362c3729353da003043b500203fa3b103b5029362a373c340c2b3b3b2ce3502a3b3b220de3503c3b2b316b302f220e220efa1b0c2a2a69270a02013b1f04|@5900,1,@3273,@13998,@13997| 18205:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3274,@14002| 18206:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3275,@13995| 18207:D10,80|fb0d2f2ffa560c302a30302e382f39303afa4d0c293ba00303fa49103b503b5029fa450c3e2a69332d3434fa3f0c34313036220c220c3337fa360c293ba003032a02052a2afa2d0c2c2a6927071f0500|@14005,1,@3276,@14006,@14007,@7763,@7766,@14045,@14047,@14004| 18208:D4,96|fb0e2c929103562c352d362a3829352938293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba003033c02013d66300c2c31fa170c2a2a69270602013b4300|@4648,1,@3277,@14006| 18209:D5,56|fb0f3131fa3e0c293b2a929103222a352b362a2c220d220d31220e220e220efa270c2a2a2505250526031e213b6602012965641f07000000|@14009,1,@3278,@6330,@14008| 18210:D45,1868|fb5e3235293829352a362c35220e362af811072c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642f38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba203041ad106103b503b503b2a1acb060c2214352215363b061ac3062a2c6a2c3caa292b2d6a2f3ba0030422190249333ba203041aa006103b503b503b342c1aa1060c302a1a9f060c220c3ba203041a8506103b503b503b220d2e32321a8b060c3b061a89062a693c2d693b0629312d2d6b2922226927081a7806221a221d6a22112d3131220c221e221e221e3332341a64060c28051a62061a63062c6b33929191f83a01221435293b3bef293ba003051a4f0602523e2ab1292808b1293cb2293fb4291a4006a503043b5002041a3a06103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2865e4502b28052871e4502b2806282de450313f2d280734ec502b95502b2707293b3bef293ba003051afb050256293eb1292808b1293cb2293fb4291ae005a503043b5002041ada05103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12832e4502c2a3db12829e4502c95502c2708220c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a7f050c2c1a7e05a003033c02132c3b3bef3ba0030a2c3f1a6b053f3bed02013b03051a640502012c2a1a61050c3b1a60050c342c3b2d2d3c3b3c6808280c2a69221e2a6929222e69270ef7c0043b34299291031229362b3caa292b25042504511e113b6502012a65221f352220363b062b3caa3b062a3caa2f3ba203041ac504103b503b503b302b2e3131301a06050c22193caa2227352c2aab293ba203041af704103b503b50293ba60341293cab293ba203041ae204103b503b50293ba60313293cab2d2a3b6a64330c29331acd040c6402102c3ba203041ac504103b503b503d2d6929311ab4040c6502102b3ba203041aac04103b503b503d2c6928082a692e3ba003051a9c0402081a97042f1a97040c291a96040c28072a2d3c6b222435293b3bef293ba003051a840402523e2ab1292808b1293cb2293fb4291a3504a503043b5002041a2f04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2865e4502b28052871e4502b2806282de450313f2d280734ec502b95502b2707293b3bef293ba003051a28040256293eb1292808b1293cb2293fb4291ad503a503043b5002041acf03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12832e4502c2a3db12829e4502c95502c2708220f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a74030c2c1a7303a003033c02132c3b3bef3ba0030a2c3f1a60033f3bed02013b03051a590302012c2a1a82030c3b1a81030c342c3b2d2d3b3b3c6808280c2a69223135293b3bef293ba003051a670302523e2ab1292808b1293cb2293fb4291a0803a503043b5002041a0203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2865e4502b28052871e4502b2806282de450313f2d280734ec502b95502b2707293b3bef293ba003051a0b03024b292806b1292808b1293cb2293fb4291aa702a503043b5002041aa102103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11acb023f2e2c2806ec502c95502c2708221e35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a52020c2c1a5102a003033c02132c3b3bef3ba0030a2c3f1a3e023f3bed02013b03051a370202012c2a1a60020c22263ba203041ae201103b503b503b22271a5b020c342c3b2d2d3b3b3c6808280c2a69223b2a69223c3caa222f929103043b5002041a3b02103b50222f3529352935291a31020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba0030422310206280f2a22336a3d2241aa224735293b3bef293ba003051af40102523e2ab1292808b1293cb2293fb4291a8101a503043b5002041a7b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b3f2865e4502b28052871e4502b2806282de450313f2d280734ec502b95502b2707293b3bef293ba003051a9801024e293db1292808b1293cb2293fb4291a2101a503043b5002041a1b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c2708223f35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fac90c2cfac9a003033c02122c3b3bef3ba003092c3ffab73f3bed02013b0304fab102012c2afaaf0c333ba20303fa5f103b503b503b34faee0c220c2c3b2d2d3c3b3c6808280c2a6922142a692922616922172a692742271102213bfa790c3bfac90cfacafacc3b2d2d3c3b3c6808280c2a692d2a6929221469270527061f08000000|@14011,1,@3279,@4848,@14012,@18212,@14013,@6330,@14015,@18216,@18217,@14021,@4785,@4683,@14032,16777215,@4054,@14033,@13329,@4062,@4866,@7760,@14034,@14035,@13265,@5821,@13263,@7758,@14036,@4867,@14032,@14033,@4838,@14037,@14032,@14038,@14039,@14040,@14043,@14032,@4926,@14044,@14010,@4689,@8194| 18211:D5,36|fb082c2ca003033b0218fa24061b0f273eba2a2a692f3caa2930fa180c2b2a6927054300|@4843,1,@3280,@5064,@14012| 18212:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3281,@13265,@5821,@13263| 18213:D5,32|fb072d2da003033b0212fa202c2f6a2e3caa292f2ffa190c2b2a696644000000|@4843,1,@3282,@18214,@14013| 18214:D3,28|fb0829373daa2c352d362a2d36ab2c2a3c6a642a0c28082a69270442|@14014,1,@3283| 18215:D7,88|fb0c2f2fa003033b024c2f3daa2e2fab293ba20303fa4d103b503b50293ba60312293cab2b2a3c6a642f0c292ffa390c64020f2a3ba20303fa32103b503b503b2b6928082a69333caa2934343434fa200c2b2a6927061f05|@4843,1,@3284,@13265,@5821,@13263,@14015| 18216:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14016,1,@3285| 18217:D4,20|fb082b352c362d372c362d37fa12307b07030000|@14018,1,@3286,@14017| 18218:D5,184|fb132c299291036b29352a362a35293829352938293629353ca0030a220e3629353ca06402013b03102a36293622103629362b2aa0270402272a3629353ba0030a220f3629353ba06402013b03102b36293822113629382b2aa0270402013b6403052f680102082e250826071e693b270702013b64293ba0030930352930fa442f7e092935293529362a372c363335343633352b2aab2d2a3b6a642b0c28082a69303b69302a69fa1f2a692c2a6928142a3b6a270e641f05|@14020,1,@3287,@14019,@4689| 18219:D6,100|fb0c2c353fa003222c362d37292efa600c29352806a00309292c3bfa57317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa1c103b502c36430000|@13279,1,@3288,@14019,@4807,@13278| 18220:D26,608|fb3a220c9291f85202220c35220d362a362b372c382a2211221122111a4d020c2c929103082c35293ca06402013b038f29352806a00309293c3b1a33020c0206280b2a3c3b6b28152a28056a2b352806a003092b3b3b1a17020c0206280b2c3b3b6b1a0f021a10020c28072a2c3c6b28052d1a07022c6b2f352806a003092f3b3b1aec010c0206280b303b3b6b1af0011ae5010c28072a2c3c6b220d221b221b221b221b221b221b221b221b221b221b1ad1010c28052e2c2c6b270af79801220e1ac4010c2b353da0030a2b3729352805a06402013b03043b5002041aad01103b502b362c372936291aa4010c292e1aa2010c1aa2012a690b0200312d2b1a9b010c50293529221622162216221c221c221c1a8b010c220e221e221e221e1a83010c29352806a00309293d3b1a41010c0206280b2a3d3b6b221f2220ab293ba203041a6301103b503b50293ba60315293cab3b2a3c6a6422200c2922201a4c010c6402031a490128082a69293b69291a06010c28072a303c6b22162226222622261a30010c29352806a00308293d3bfadf0c0206280b2a3d3b6b22272228ab293ba203041a0101103b503b50293ba60314293cab3c2a3c6a6422280c292228faeb0c640202faf128082a69293b6929faa70c28072a303c6b293b69322a6929fa970c28072a22153c6b2220352806a0030922203b3bfa790c0207280b22213b3b6bfab9fa730c28072a2c3c6b2223352806a0030922233b3bfa560c0207280b22243b3b6bfa9afa500c28072a2c3c6b28052a31fa8f6b222b2239223922392239223922392239223922392239fa360c28052f2c2c6b272827060202fa671f0b00|@14023,1,@3289,@14024,@4807,@5344,@4867,@4689,@7759,@14021,@14025,@14026,@14029,@5868,@18224,@8023,@13324,@14031,@13265,@5821,@4685,@14022,@4687,@5344,@7759,@4689| 18221:D9,140|fb0b2e353fa003242e362f3729303030fa860c29352806a00309292c3bfa7d317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa5a103b503b50293ba60312293cab2d2a3b6a64330c2933fa460c64020f2c3ba20303fa3f103b503b503d2d6928082a69270702112e353ca003043b500203fa27103b502e361f04|@13279,1,@3290,@14024,@4807,@13265,@5821,@13263,@13278| 18222:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@3291,@14025| 18223:D5,48|fb092b929103242b352c362a352806a003043b500203fa24102a362b372a2a692cfa1d0c2a2a69270602013b42000000|@4648,1,@3292,@8035,@14029| 18224:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@14030,1,@3293| 18225:D9,140|fb0b2e353fa003242e362f3729303030fa860c29352806a00309292c3bfa7d317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa5a103b503b50293ba60312293cab2d2a3b6a64330c2933fa460c64020f2c3ba20303fa3f103b503b503d2d6928082a69270702112e353ca003043b500203fa27103b502e361f04|@13279,1,@3294,@14031,@4807,@13265,@5821,@13263,@13278| 18226:D9,140|fb0b2e353fa003242e362f3729303030fa860c29352806a00309292c3bfa7d317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa5a103b503b50293ba60312293cab2d2a3b6a64330c2933fa460c64020f2c3ba20303fa3f103b503b503d2d6928082a69270702112e353ca003043b500203fa27103b502e361f04|@13279,1,@3295,@14022,@4807,@13265,@5821,@13263,@13278| 18227:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3296,@14034,@4688| 18228:D7,136|fb0d3131a003033b027c2f2fab293ba20303fa80103b503b50293ba6033d293cab293ba20303fa6c103b503b50293ba60312293cab342a3c6a64300c2930fa580c64020f333ba20303fa51103b503b503b3469292ffa410c65020f323ba20303fa3a103b503b503b336928082a69343caa29220c220c220c220c220c220cfa200c2b2a6927051f07|@4843,1,@3297,@13265,@5821,@13263,@14035| 18229:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3298,@14036| 18230:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3299,@14037,@4688| 18231:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3300,@14039,@4688| 18232:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3301,@14043| 18233:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3302,@14044,@4688| 18234:D5,24|fb052b3da003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3303,@14010,@4688| 18235:D7,136|fb1b2e929103052d929102013b03742e352f362f3530362c362d372e3829352938293529353da003043b500203fa65103b5029362a373c22100c333ba20303fa57103b503b503d346928082a69333b69332a69fa472a692c2a6928142a3b6a323b3b33e350313b3b2219e3503c3b322c6b22132212221a221afa250c2a2a69271602013b1f040000|@5900,1,@3304,@13269,@5886,@14046,@14045| 18236:D5,52|fb0d3092910329303531362a352b362c372d38220c220c220c220c220cfa210c2a3333333333fa1c0c2a2a69270402013b1f0600|@4648,1,@3305,@14048,@14047| 18237:D12,168|fb10303529382a38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a656434030b220c3333220dfa6d0c022d293ba003033002253bfa630c2a3ba20303fa5f103b503b503b2bfa5a0c32fa5a3b2d2d3c3b3c6808280c2a69662d3529220cfa4a0c29352806a00308293c3bfa410c0206280b2a3c3b6b29fa393b6a2812fa372f2c6b3d2a69270b1f0900|@14050,1,@3306,@14051,@7760,@4848,@14116,@14117,@14049,@4807,@5406,@5407| 18238:D47,1512|fb5b2e3529353036303531363b061ae3052a2c6a2c3caa292b2d6a3138293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba203041a9f05103b503b503b2a1a99050c0b02002d3ba003092931452214465002403b061a86052a220d220f6b333caa292b2d6a0b0200332d22102c1a72050c5029353c061a6d052a693c2c693b062922142d2d6b29222169220e34452a4650260e29352a361a5005299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a30051a31050c02031a27051a2c05299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a0c051a01050c02031a03051a0405299291031829352a362a352806a00309292503511e143b02013b6502013c6403091ae4041ad1040c02031adb041adc04299291031829352a362a352806a00309292503511e143b02013b6502013c6403091abc041aa1040c02031ab304291ab3046928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6b040c020129293b692e2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a36040c020129293b691a4c042a6928142a3c6a293b69220d2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291af3030c020129293b6922122a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291abd030c020129293b691ad7032a691ad6032a691ad5032a691ad4032a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a77030c02012928051aa2032b1aa2036b280f1aa0032b6a28051a9d032b1a9d036b3b1a9c030c3b1a9b030c2b1a9a033b2d2d3c3d3c6808280c2a69223322352227222c223c22292f1a82030c222b3ba003c522353b3bef293ba003051a7203024928062ab1292808b1293cb2293fb4291a6203a503043b5002041a5c03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a3c033f2d3f2806ec50223d3f2d4034ec502b95502b27072228372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a09030c2d1a0803a003033c02132d3b3bef3ba0030a2d3f1af5023f3bed02013b03051aee0202012d2a1ac3020c3b1ae6020c322c3b2d2d3c3b3c6808280c2a69270af72f022225929103043b5002041ac902103b5022253529352935291abf020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965223a3b3bef293ba003051a9702024928062ab1292808b1293cb2293fb4291a6302a503043b5002041a5d02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a61023f2d3f2806ec5022423f2d4034ec502b95502b2707222d372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a0a020c2d1a0902a003033c02132d3b3bef3ba0030a2d3f1af6013f3bed02013b03051aef0102012d2a1ac4010c3b1af7010c220e2c3b2d2d3c3b3c6808280c2a69343ba00303290206280f220c2b6a22463b3bef293ba003051ad001024a28052ab1292808b1293cb2293fb4291a9401a503043b5002041a8e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a9a013f2d3f2805ec50224e3f2d280934ec502b95502b2707293b3bef293ba003051a7c01024e293db1292808b1293cb2293fb4291a3d01a503043b5002041a3701103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12829e4502c95502c2708224635293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fae10c2cfae1a003033c02122c3b3bef3ba003092c3ffacf3f3bed02013b0304fac902012c2afa9f0c22453ba20303fa32103b503b503b2246fad00c332c3b2d2d3c3b3c6808280c2a69271c27371f04000000|@14053,1,@3307,@18239,@4848,@14054,@18241,@14055,@18247,@14062,@14065,@4851,@14066,@14067,@14066,@14067,@14068,@14071,@7774,@4684,@4689,@4683,@5206,@4689,@14072,@4684,@14094,@8414,@4684,@7760,@14096,@14097,@14098,@13684,16777215,@4054,@13329,@4062,@4866,@14113,@14040,@14114,@13684,@14115,@8584,@4926,@14052| 18239:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3308,@13265,@5821,@13263| 18240:D5,36|fb082c2ca003033b0218fa24061b0f273eba2a2a692f3caa2930fa180c2b2a6927054300|@4843,1,@3309,@5064,@14054| 18241:D6,148|fb0a2b352c362d372a3ba20303fa91103b503b502a3ba603532a3cab293ba20303fa7d103b503b50293ba60314293cab2d2a2d6a642e380c292f37fa670c6402232a03112c3ba20303fa5d103b503b503b2d69020f2c3ba20303fa4c103b503b503d2d69292f36fa3b327e082903112b3ba20303fa32103b503b503b2c69020f2b3ba20303fa21103b503b503d2c696642000000|@13264,1,@3310,@13265,@5821,@13263| 18242:D8,72|fb093b2f299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa30103b503b2afa2d0c292ffa2c0c312afa2b0c2b3232fa290c302b452a4627051f04000000|@14057,1,@3311,@4848,@14058,@14059,@6330,@14056| 18243:D4,24|fb052c2ca003033b020c2c3caa292dfa130c2e2a69654300|@4843,1,@3312,@14058| 18244:D5,32|fb072c929103152c352d36fa1f2b2f6a2a2ffa1c0c2a2a69270402013b430000|@4648,1,@3313,@18245,@14059| 18245:D3,28|fb082b352c362b37352b2aab2d362a3c6a642b0c28082a6927044200|@14060,1,@3314| 18246:D4,48|fb0c2d929103252d352e362e352f362f352b2aab2e2a3c6a642b0c28082a692e3434fa180c2a2a69270802013b440000|@4648,1,@3315,@14056| 18247:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14061,1,@3316| 18248:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3317,@14096,@4688| 18249:D37,764|fb40319291030a313529362992916502013b03043b500265303b3bef293ba003051ae402024a28102ab1292808b1293cb2293fb4291ad402a503043b5002041ace02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aae023f2d3f2810ec50220f3f2d281434ec502b95502b27071aa1021aa2022b1aa2026b65103b50313532362a3629352c352d372e382f392b220f1a8b020c2a3b2a929103242a352b362a353ba0030b2a363b2a69293b696502012b2a2a2505250526031e233b660201296528062f3b6a293b691a56022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2d020c020129293b69291a26020c2806313b6a2a3b692a2a691a1b022a691a1a022a691a19022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291adc010c0201292215030429f72401221e1adf010c2213353da0030b22133729352805a06402013b03043b5002041ac601103b502213362214372936291abb010c292e1ab9010c1ab9012a690b0200312d2b1ab2010c502935221b352806a0030a221b3d3b1aa3010c0207280b221c3d3b6b1a9a011a9b010c28072a2c3c6b1a9501299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a75011a36010c02031a6c012d222f222d222f0c2b1a64016928142a3b6a293b69291a4b010c28072a2f3c6b293b69291a3d010c28072a22343c6b293b69332a69221a2a69291a37010c293b691a34012a691a33012a691a32012a69faee2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fab20c02012927222218929191030329023c2211352806a0030922113b3bfac00c0207280b22123b3b6bfadcfaba0c28072a2c3c6b221b222522252225222522252225fac70c28052b2f2c6b2704fac0299291031829352a362a352806a00309292503511e143b02013b6502013c640307faa1fa3f0c0202fa9a2805fa9a2b2d6b271c1f07000000|@14100,1,@3318,@14101,16777215,@4054,@16,@4583,@14102,@14103,@5206,@4851,@14104,@4689,@4689,@4689,@14105,@14026,@14029,@5868,@18253,@8023,@4807,@13760,@4867,@13638,@13640,@14106,@14108,@4689,@4689,@4683,@13760,@14098,@14109,@14112,@14099| 18250:D6,100|fb0c2c353fa003222c362d37292efa600c29352806a00309292c3bfa57317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa1c103b502c36430000|@13279,1,@3319,@14103,@4807,@13278| 18251:D6,76|fb0b2b929103402b352c3629fa4a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1d327d092927060202fa17420000|@6193,1,@3320,@14104,@4851,@4689| 18252:D4,36|fb092b929103182b352c362a352b3628062b2b6a2cfa190c2a2a69270602013b42000000|@4648,1,@3321,@14105| 18253:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@14030,1,@3322| 18254:D6,76|fb0b2b929103402b352c3629fa4a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa1d327d092927060202fa17420000|@6193,1,@3323,@14108,@4851,@4689| 18255:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3324,@14113,@4688| 18256:D4,28|fb072b929103112b352c362a372afa180c2a2a69270402013b420000|@4648,1,@3325,@14114| 18257:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3326,@14115,@4688| 18258:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3327,@14052,@4688| 18259:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3328,@14116,@4688| 18260:D6,100|fb0c2c353fa003222c362d37292efa600c29352806a00309292c3bfa57317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa1c103b502c36430000|@13279,1,@3329,@14049,@4807,@13278| 18261:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3330,@14004| 18262:D4,28|fb082b929103132b352c362a3629352bfa160c2a2a69270502013b42|@4648,1,@3331,@14118| 18263:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3332,@14119| 18264:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3333,@14120| 18265:D3,16|fb062b352c3629392b2a696642000000|@14122,1,@3334| 18266:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3335,@14123| 18267:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3336,@14124| 18268:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3337,@14125| 18269:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3338,@14126| 18270:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3339,@14127| 18271:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3340,@14128| 18272:D8,144|fb172f929103832f3530362a3629352c3a2a3729353da003043b500203fa7d103b5029362a372d383c220f0c2c3b3b2ce3502b3b3b2211e3502c352f35280ea003182f36293629352b382a221422143b22152efa4b0c270402182f352808a003043b500203fa3d103b502b22102210fa370c3c3b2c2c6b342213221322132213fa2a0c2a2a69270e02013b1f05000000|@4648,1,@3341,@14131,@13307,@14134,@14130,@14129| 18273:D11,100|fb1329383b3b6a293b69fa642c36692afa620c2931312dfa5f0c2e383b3b6a293b69fa583137692afa4a0c29220d220d2dfa450c220e353da0031c220e3629220f220ffa3b0c293b6929fa380c28072a343c6b27040201293bfa2d2bfa2e6b270b440000|@14138,1,@3342,@18275,@13313,@13314,@18274,@13315,@4867,@4868,@4683| 18274:D5,44|fb0829363729353ca003043b500203fa2710293629352806a00309293c3bfa1c307b0505280b2a3c3b6b6542|@14142,1,@3344,@14139,@4807| 18275:D5,44|fb0829363729353ca003043b500203fa2710293629352806a00309293c3bfa1c307b0505280b2a3c3b6b6542|@14140,1,@3343,@14139,@4807| 18276:D4,28|fb082b929103132b352c362a3629352bfa160c2a2a69270502013b42|@4648,1,@3345,@14150| 18277:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3346,@14151| 18278:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3347,@14152| 18279:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3348,@14153| 18280:D4,24|fb0a2b352c362b362c372d382e392f3afa12327b09030000|@14155,1,@3349,@14154| 18281:D5,108|fb1d2f35303631373239333a0b0200220d2e313332312ffa5f0c5029352a362a3ba003042212020622122bfa4f0c22123522133622143722153822163a22172306221823072f2f2f2f220c30303068080b02002219220c2e221b2d221f0c5029352a362a2a6927181f070000|@14157,1,@3350,@13302,@14156| 18282:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3351,@14156| 18283:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3352,@14158| 18284:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3353,@14159| 18285:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3354,@14160| 18286:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3355,@14161| 18287:D4,28|fb082b929103132b352c362a3629352bfa160c2a2a69270502013b42|@4648,1,@3356,@14162| 18288:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3357,@14163| 18289:D4,16|fb0829363c2b372c382ffa10307b0703|@14164,1,@3358,@10900| 18290:D6,48|fb063e28403bdafa33453d28403bdafa2f45292b466c502a2a462e476c5029fa230c2f2a0c643c2a0c513b6543000000|@14166,1,@3359,@18292,@18291,@9569| 18291:D4,12|fb04fa142a362d6a42000000|@14170,1,@3362,@18294| 18292:D12,300|fb1a2b352805a0f81e012b362c382938293629353da0033e2d361a1b010c2c38293629353da003043b5002041a0d011029362a372a321a07010c1a07012a690b02002e2d2b1a00010c50293527092a0c64312a317d093003ca2b38293529353da003bc29362935293ba203af2f35293b3bef293ba00304fad30244282c2ab1292808b1293cb2293fb429fac4a503043b500203fabf10292841bd2a3cb22a2a3b3bf02b3b3b32f050faa23f2d3f282cec50313f2d283034ec502b95502b2707293b3bef293ba00304fa8e0246292819b1292808b1293cb2293fb429fa73a503043b500203fa6e10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa533f2e2c2819ec502c95502c2708270432370c503b02013c6502013c6502013b270402012c430000|@14168,1,@3360,@9569,@8025,@5868,@18293,@8023,@14169,16777215,@4054,@14167| 18293:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@8029,1,@3361| 18294:D3,12|fb052b2a372b362d7e030000|@14171,1,@3363| 18295:D9,284|fb132e352f3630372f230d29299291031b29352a362a351a0e01a003052a68010207292503511e1a3b6502013b64293ba00342faf7299291031a29352a362a35fae6a003052a68010207292503511e193b6502013b64293ba00303fad3103b5029352935fac2a003043b500203fac510293765021329352935faada003043b500203fab010293764299103033c025d2d3534352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b03362f36220d362a2aa003283137220f372a2aa0031a33382211382a2aa0030c220c392213392a2aa06502013b6502013b6502013b6502013b650308313b45220c4602202806343b6a2812fa392bfa3a6b3d2a69293b6932220f326a220d2b452a46270527061f040000|@14174,1,@3364,@64,@5420,@5469,@4594,@5407,@14173| 18296:D11,360|fb252c230d29299291031b29352a362a351a6001a003052a68010207292503511e1a3b6502013b64293ba0034b1a4801299291031b29352a362a351a3601a003052a68010207292503511e1a3b6502013b64293ba003041a2201103b503b50293529351a0e01a003043b5002041a1001103b50293765021529352935faf6a003043b500203faf9103b50293764299103033b02cf3235293ba003103b06296801220c3b3b2ce3502a65020229353c310c3c3b2b32366b293b69220c35220d36220e352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b28152a28096a2213352214362215352b2aab220d2a3b6a642b0c28082a692806221a3b6a280622113b6a293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa540c020129293b6929fa4e0c28072a333c6b2805220f2bfa446b3d2a69293b69293ba003042218020922182afa3322247e27271d661f050000|@14180,1,@3365,@64,@5420,@5469,@4594,@4851,@4867,@4689,@14179| 18297:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3366,@14179| 18298:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3367,@14183| 18299:D5,64|fb0c2c9291032e2c352d362a390b02002d2afa380c5029352a362e030b302b69342a452b46640209302a69342c452a46642708020afa192c2a35452a36466443|@5896,1,@3368,@14184,@5895| 18300:D7,96|fb0c2c3829352e362f372a29352816a0030c2936292502501e0d3b64022329352805a0030c2937292502501e203b6402102935280ba003043b500203fa2e1029376429fa2b0c2d2a2dfa290c293ba00303320207322afa20347e0b2707430000|@14187,1,@3369,@14188,@14191,@14192,@14186| 18301:D6,56|fb0f2b9291032c2b352c362a352b362c392d3afa2f06fa302a2d6a2d3b69292b3b3b6b293130306b32fa210c2a2a69270c02013b42000000|@4648,1,@3370,@5064,@4062,@14191| 18302:D7,96|fb162d929103562d352e362a38fa5d061b0f273eba28062b2b6afa50061b0f273eba28062b2b6a3d2d2b6a302afa410c293ba0910303fa3c103b503c06340630062e062a22132d2214302e6806220e22142214fa230c2a2a69271102013b4400|@4648,1,@3371,@5064,@11175,@14193,@14192| 18303:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3372,@14186| 18304:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3373,@14196| 18305:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3374,@14197| 18306:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3375,@14198| 18307:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3376,@14199| 18308:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3377,@13987| 18309:D23,560|fb1f2c352d362e372f38303a331a2c020c34299291032829352a362a3729352c382a381a1a02220d22132d6b2a2a1a13020c502e250826071e263b270702013b64220c2e1a01020c220d2a2a3ba00312293ba003043b5002041af001103b503b024b2a352b362b929103043b5002041ade01103b502b352c362c372935293729353da003043b5002041ac801103b5029362a372a3b3b32e350293b3b2214e350302f250b250b26091e5d3b270965220e2e1aa4010c220f2a2d32220d220d2f220c22152218220c220f221636221b1a8b010c22102d2a3ba00312293ba003043b5002041a7a01103b503b024b2a352b362b929103043b5002041a6801103b502b352c362c372935293729353da003043b5002041a3e01103b5029362a372a3b3b32e350293b3b2217e350302f250b250b26091e5d3b270965220f3522103622113722123922133a0b0200220e2e313332312f1a13010c5029352a362215230d29299291031b29352a362a351afe00a003052a68010207292503511e1a3b6502013b64293ba00346fae7299291031a29352a362a35fad6a003052a68010207292503511e193b6502013b64293ba00303fac3103b503b5029352935fab0a003043b500203fab3103b50293765021529352935fa99a003043b500203fa9c103b5029376403262212fa940c502212299291031529352a362a221bfa860c50292503511e143b6502013b6402013b220e3ba00303fa71103b503b50220efa6c0c3e2a69293069221e2a453046271c1f04000000|@14203,1,@3378,@14204,@18311,@14165,@14206,@6198,@6198,@14207,@14210,@14215,@6198,@6198,@13302,@65,@5420,@5469,@4594,@14321,@14202,@7763,@7766| 18310:D4,28|fb082b929103132b352c362a3729352bfa160c2a2a69270502013b42|@4648,1,@3379,@14204| 18311:D4,16|fb0829363c2b372c382ffa10307b0703|@14205,1,@3380,@10900| 18312:D4,28|fb062c929103102c363d2d0c2a2efa180c2a2a696602013b43000000|@4648,1,@3381,@14206| 18313:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@3382,@14211,@14210| 18314:D7,36|fb0d2c3729352938fa262f690b02002d2d2bfa200c50293629fa1d0c29fa1d220c7d0d00|@14213,1,@3383,@18315,@8023,@13212,@14212| 18315:D3,116|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b64420000|@14214,1,@3384| 18316:D4,44|fb082b929103232b352c362a36293fb7293ba091030a2bfa1f0c2d2a696402062bfa15307d07270402013b42|@4461,1,@3385,@14212| 18317:D55,1996|fb73220f9291030f220e92910306220d929102013b02013bf8ad07220f352210362a3529352c37293529352f392935313a293533363438221b35221c36221c35221d36221d3b3bef343b3bef2a3ba00304220c0254293ba00304221f024b2a2ab1292808b1293cb2293fb4291a6907a503043b5002041a6307103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022263f2d3f220cec503f32b122143f2e2c220cec502c95502c27083b30299291031229362b3caa292b25042504511e113b6502012a6532929103043b5002041a1007103b50323529352935291a07070c220d1a05072a9291032d2a352b362b929103082b36293ba06402013b030a2a36291aea060c6402012b2a2a2505250526031e2c3b66020129652225230d29299291031b29352a362a351ac606a003052a68010207292503511e1a3b6502013b64293ba0034b1aae06299291031b29352a362a351a9c06a003052a68010207292503511e1a3b6502013b64293ba003041a8806103b503b50293529351a7406a003043b5002041a7606103b502937650217293529351a5b06a003043b5002041a5d06103b5029376403051a560602012b3b2a299291031229362b3caa292b25042504511e113b6502012a650b02002d929103082d36293ba06402013b030b2d352a2a453b465050020b1a1b062a2a35452a36465129352a3629220faa341a0b060c292b2a929103152a352b362a2caa2a2a2505250526031e143b6602012965221d3ca00382293ca0037a220d1ae0052a2aa003033c02622a9291035c29929103542a352b362b352c362c2b2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b65030d2b2a2506250626041e5c3b02013b270402013b02013b6503052d3ca002013b02013b02013b221b221f1a64050c3b22102215220d1a5d050c3b2a299291031229362b3caa292b25042504511e113b6502012a652234352235363b061a3a052a2c6a2c3caa292b2d6a22273ca0037b2f34ab34220fab29221eab293ca003172b3ba203041a1605103b503b503b2c6928082a69640251293ba403041a0305103b503b50293ba203041afa04103b503b503b2a2d1af3040c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291acb040c0201296566023d220d221caa22182a321abb040c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a8b040c020129663c061a89042a69220d3c1a85040c291a8404691a84042a6922222a69661a7e040c22163ca09122203ba203041a4f04103b503b503b2221220d2c331a64040c22282a1a61040c22403b2a9291039a2a352b362a2c2a9291037f2a352b3631299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba09103033c022d2c299291032029352a362a35293530352a2aa003052d680102082c250626051e1e3b270502013b64293ba0916403032c02092b1ae60369292e69642b2a2506250626041e7d3b2704020129652a2a2505250526031e993b6602012965293ba003032a02062a2a1ab7030c3c2a693b0629220c332d6b2922456922443522453922462307221903033b021922462246224b3b224e220c221622152219221d221d1a82030c1a82032224221622182216221c224a224a22212219220d221c221a221a221222102255681129222f22132241223b223a322219220c22181a4f030c3b221b299291031229362b3caa292b25042504511e113b6502012a6529221fa003043b5002041a2903103b503235291a24030c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba0030329020629301afc020c293ba003032e0205280f2a306a221c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aca020c221a35221b35221c3b3b2ce3221b1abc02a003033c0215221b3b3bef3ba0030b221b3f1aa7023f3bed02013b03051aa0020202221b2d1a9c020c22281a9a020c322c3b2d2d3c3422376808280c2a6922469291910304225e0217225e35225f363b061a78022a2c6a2c3caa292b2d6a27052254372935293729353da003043b5002041a5c02103b5029362a372a3b3b224de350293b3b2267e32234032b224b3169225a224e224d226b226b226b226b226b226b226b226b226b226b226b1a25020c2a2a6965f755010b020032224b1a180222482d2253226e22502211224922461a0a020c502935225192919103032902f93b2252299291031229362b3caa292b25042504511e113b6502012a65224c3b3bef293ba003051ad7010257293eb1292808b1293cb2293fb4291a0401a503043b5002041afe00103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022543f2d3f34ec503f31b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708220d372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a2c010c2d1a2b01a003033c02132d3b3bef3ba0030a2d3f1a18013f3bed02013b03051a350102012d2a1a32010c313ba20303faae103b503b503b321a24010c332c3b2d2d3b3b3c6808280c2a69270b22503caa29220e6922522c6922612255225422722272227222722272227222722272227222722272fad10c2a2a692c2a69270a275b02013b1f0e00|@14217,1,@3386,16777215,@4054,@14218,@14221,@4688,@14222,@64,@5420,@5469,@4594,@4688,@7502,@14237,@5205,@14238,@14239,@18331,@5886,@14246,@4848,@14249,@4851,@14250,@18335,@4569,@6470,@4133,@4052,@14254,@6330,@14256,@14258,@14259,@18342,@14269,@14302,@13944,@14305,@13329,@4062,@4866,@14306,@14307,@18371,@14207,@14215,@14308,@14310,@13945,@4866,@4838,@14216| 18318:D5,28|fb072b929103132b352c362afa1a0c2afa1a0c2a2a69270402013b42|@4648,1,@3387,@14222,@14221| 18319:D15,624|fb0d2b350a1f003e003e00440058009800c0003e003e003e003e00c9003e003e00f500fe0012013e003e00bf01ce013e003e0004023e003e000c023e003e003e003e003e001a3402f721022b3629372935291a2b020c91293b692704f70d022b362936291a1d022a9291032d2a352b362b929103082b36293ba06402013b030a2a35291a02020c6402012b2a2a2505250526031e2c3b660201296565f7cd012b3629362a37291adf010c29929103082936293ba06402013b03072b1aca01307d07292704f7a5012b37291abb012d7d042b362929929103043b5002041aad011029352a36293ba003042a350207292503511e1e3b65641a8f012d7d042b36291a86012d7d042b3629372935291a71010c91293b692704f753012b3729352929353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b6403051a240102552929352805a0032229382938293629353da003043b5002041a0b0110293729250526041e223b2704022a29352806a0030e29362935292503511e383b65021529353ea003043b500203fadf10293629fadd307d07646502a62b36293529fab30c91293b696602972b362935293ba00303fac0103b502929929103043b500203fab51029352a36293ba003042a350207292503511e1d3b6564fa802e7d052b3629fa782d7d042b3729352929352805a0032129382938293629353da003043b500203fa6310293729250526041e213b2704022a29352806a0030e29362935292503511e373b65021529353ea003043b500203fa3710293629fa41307d07646542000000|@14224,1,@3388,@4688,@14225,@4688,@14222,@5745,@4688,@14227,@14230,@14233,@14234,@5745,@14223| 18320:D4,460|fb112b1ad2010c29353fa0f88e0129362b37352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092c37352968016402f12a293ba003033b022929352a362a38293629353ca0030b2a36293633362aa06502013b03033c02082b250526041e2c3b27046403062c38680102b62a293ba003033b022a29352a362a38293629353ca0030c2a3629363323092aa06502013b03033c02082b250526041e2d3b27046403062c396801027a2a293ba003033b022a29352a362a38293629353ca0030c2a3629363323082aa06502013b03033c02082b250526041e2d3b27046403062c3a6801023e2a293ba003033b022a29352a362a38293629353ca0030c2a3629363323072aa06502013b03033c02082b250526041e2d3b27046403072c2306680102013b293ba003033b021929352938293629353ca0030b2a362936293336a06502013b6666022e29352805a0032629362a382a3ba003192938293629353ca0030b2a362936293136a06502013b6502013b6502013b6442|@14226,1,@3389,@8044| 18321:D5,32|fb082b929103162b352c362a3629fa1c0c912bfa1b0c2a2a69270502013b4200|@4648,1,@3390,@14225,@14233| 18322:D5,32|fb082b929103162b352c362a3629fa1c0c912bfa1b0c2a2a69270502013b4200|@4648,1,@3391,@14225,@14223| 18323:D4,52|fb092b9291032a2b352c363b2b299291031229362b3caa292b25042504511e113b6502012a652afa170c2a2a69270402013b4200|@4648,1,@3392,@14237| 18324:D7,84|fb112c9291034a2c352d362a3529352c362d372e38323ca003122c929103043b500203fa3b103b502c35020afa360628192e2b2e6b64fa3006fa2d062e2c2c2c3131680632220efa230c2a2a69270c02013b4300|@4648,1,@3393,@5975,@5064,@4517,@14238| 18325:D10,96|fb0a2d9291031b2d352e36303ba003032a02052a31fa550c292b3131fa52327b06092c3ba20303fa4b103b503b503b2dfa460c2c3ca00311293ba003032f02072f2afa382e7e07021429fa340c293ba00303300207302afa2b2f7e0864641f04|@14241,1,@3394,@14242,@14239,@4848,@14243,@14244,@14245,@14240| 18326:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3395,@14242| 18327:D4,24|fb052c2ca003033b020c2c3caa292dfa130c3c2a69654300|@4843,1,@3396,@14243| 18328:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3397,@14244| 18329:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@3398,@14245,@4688| 18330:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3399,@14240| 18331:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3400,@13265,@5821,@13263| 18332:D5,48|fb092d2da003033b02242d2caa293ba20303fa28103b503b503b2a6928082a69303caa293131fa180c2b2a6927054400|@4843,1,@3401,@5886,@14249| 18333:D9,224|fb0e2d929103d42d352e362d2fab3b2c299291031229362b3caa292b25042504511e113b6502012a652a2aab3b2e299291031229362b3caa292b25042504511e113b6502012a65293ca003162a3ba20303fa99103b503b503b2b6928082a6964024d293ba40303fa87103b503b50293ba20303fa7f103b503b503b2a2cfa790c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa520c020129653b30299291031229362b3caa292b25042504511e113b6502012a65342aaa302a220dfa2d0c2c2a69270a02013b44000000|@14252,1,@3402,@5886,@14246,@4848,@14251,@4851,@14250| 18334:D5,48|fb092d2da003033b02242d2caa293ba20303fa28103b503b503b2a6928082a69303caa293131fa180c2b2a6927054400|@4843,1,@3403,@5886,@14251| 18335:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14253,1,@3404| 18336:D5,36|fb092f2fa003033b0218fa242c2e3133326806303caa2931313131fa170c2b2a69661f05|@4843,1,@3405,@18337,@14254| 18337:D3,40|fb0a29392a3aaa292b38ab292c37ab2e352f362a2f36ab2c2a3c6a642a0c28082a69270642000000|@14255,1,@3406| 18338:D4,8|fb02fa1042000000|@14257,1,@3407,@13614| 18339:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3408,@14258| 18340:D10,332|fb27220c92910318349291031033929103083335293ba06402013b02013b02013b0350220c35220d36220d35220e36220e362d372935293729353da003043b5002041a1301103b5029362a372a3b3b33e350293b3b2215e35031303022162216221622162216221622162216faee22177b0d17220c9291030d349291030533929102013b02013b03c0220c35220d36220d35220e36220e35220f362a220e220efabe0c220c35220d35293caa220f3b3b2ce322133522102aab293ba20303faa4103b503b50293ba60314293cab342a3b6a6422110c292211fa8e0c64020f333ba20303fa87103b503b503d346928082a69220e372935293729353da003043b500203fa54103b5029362a372a3b3b220fe350293b3b221de3220efa540c28072a323c6b3c3b22112c6b292222692217221622152c2225222522252225222522252225fa1822267b0d26321f0b|@14261,1,@3409,@14207,@14259,@14260,@13265,@5821,@13263,@4867| 18341:D5,88|fb0b2d9291034c2d352e362e299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba00303fa2a103b503b5029352936302a0c2d3333fa1d0c2a2a69270702013b44000000|@4648,1,@3410,@14262,@14260| 18342:D8,172|fb120b02002c23102f2e230b2f230a30230c31230e2ffaa00c5029352a362e230a2f230b30230c31230d2d33230e3b220c230f68082f23073023083123093b2d3423060c2c3ba00303290205280f2d2b6a31363ca0030329024e313a3cab32393339ab293ba20303fa52103b503b50293ba60315293cab2b2a3c6a6434380c29220c37fa3b0c64020f2a3ba20303fa34103b503b503b2b6928082a69292e220e36fa2522117b050f27084200|@14266,1,@3411,@13302,@13265,@5821,@13263,@14265| 18343:D7,192|fb102b3ba803043b500203fabf102b3ba203033c02042bfab7a60303fab6103b502b281fb1292820b4292841bd2a3fb3293ba003043b50021b293fb229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2934a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502f2b69312a34fa1f337b050a000000|@14268,1,@3412,@5978,16777215,@5980,@14267| 18344:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa690c2b3131fa630c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa3f0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa240c2a3131fa1e0c28052e2c2c6b2705020628112e2e2e6b44|@5967,1,@3413,@14267| 18345:D51,1868|fc28012c230d29299291031b29352a362a351a4307a003052a68010207292503511e1a3b6502013b64293ba0034b1a2b07299291031b29352a362a351a1907a003052a68010207292503511e1a3b6502013b64293ba003041a0507103b503b50293529351af106a003043b5002041af306103b502937650217293529351ad806a003043b5002041ada06103b502937642991030631220f2f7d0f220d336928062a3b6a293b693c320c3c3b2b1ab9066b293b69220d35220e36220f352b2aab2f2a3b6a642b0c28082a69291a9e063b6a280d1a9b062b6a3c22130c3c3b2b2d6b293b692217352218362219352b2aab22102a3b6a642b0c28082a69291a75063b6a280d1a6a062b6a3c221d0c3c3b2b2d6b293b692221352222362223352b2aab221a2a3b6a642b0c28082a69291a48063b6a280d1a39062b6a3c22270c3c3b2b2d6b293b69222b35222c36222d352b2aab22242a3b6a642b0c28082a69291a1b063b6a280d1a08062b6a3c22310c3c3b2b2d6b293b692235352236362237352b2aab222e2a3b6a642b0c28082a69223a35223b36223c352b2aab22292a3b6a642b0c28082a69223f352240362241352b2aab22242a3b6a642b0c28082a692244352245362246352b2aab221f2a3b6a642b0c28082a69224935224a36224b352b2aab221a2a3b6a642b0c28082a69293b692f2a69220c2a6922122a6928142a3c6a22191a7a053b6a28121a77052c2c6b3d2a69293b69293ba003042222020722222a1a63050c293ba00304222d0207222d2a1a57050c293ba003042238020722382a1a4b050c293ba003042243020722432a1a3f050c293ba00304224e0207224e2a1a33050c225d35225e36225f37225f2c0c293b6922662a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291af7040c0201290b02002c352806a0030e1aea042d692a3b452a465050021b3c22660c1adc042a226a6a3c3b2c316b293b692d2a452c4650260429352a363d2270226d22706b29220c692b220e2b6a226c35226d36226e352b2aab22652a3b6a642b0c28082a692806303b6a2a1a96043b6a28121a93042c2c6b2274352275362276352b2aab226d2a3b6a642b0c28082a69227922110c2a1a73043b6a28121a70042c2c6b227c35227d36227e352b2aab22752a3b6a642b0c28082a69280622843b6a2a1a4f043b6a28121a4c042c2c6b3c22830c3c3b2b2284386b293b692287352288362289352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b228d35228e36228f352b2aab220c2a3b6a642b0c28082a6922881a05040c28072a2c3c6b2805311afc032c6b3d2222693d221b693d221469293b692b2a692d2a693d3069293b69293ba003042216020722162a1ad4030c293ba003032c02062c2a1aca030c293ba003042237020722372a1abe030c22a03522a13622a2352b2aab228f2a3b6a642b0c28082a6922a53522a63622a7352b2aab229e2a3b6a642b0c28082a69291a8d033b6a28121a8a03312c6b3d2a6922ad3522ae3622af352b2aab22922a3b6a642b0c28082a6922b23522b33622b4352b2aab22ab2a3b6a642b0c28082a69291a54033b6a28121a4903312c6b3d2a6922ba3522bb3622bc352b2aab22952a3b6a642b0c28082a6922bf3522c03622c1352b2aab22b82a3b6a642b0c28082a69291a17033b6a28121a0803312c6b3d2a6922c73522c83622c9352b2aab22982a3b6a642b0c28082a6922cc3522cd3622ce352b2aab22c52a3b6a642b0c28082a69291ada023b6a28121ac702312c6b3d2a69293b69220e2a69221c2a69222a2a693c22d70c3c22d80c3c3b2b22d9376b293b6922dc3522dd3622de352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b22e23522e33622e4352b2aab220c2a3b6a642b0c28082a6922dd1a4e020c28072a2c3c6b22103ba203041a6602103b503b503d22116928082a69293b69291a2a020c28072a2f3c6b2805220d1a20022c6b3d2a69293b6922193ba0030329020729221a1a31020c293ba003042216020722162a1a25020c221a3ba203041a1302103b503b503d221b6928082a6928102a692c3ba00303290205280f2d2b6a228b22ff0c402a2c22226b3c22f80c3c3b2b2d6b293b6922fc3522fd3622fe352b2aab2f2a3b6a642b0c28082a690b02001305012d1309011ac6012d130901130801131101130e011aba010c5029352a360b02002d2d130b01130a012d1aa9010c5029353c1309010c3c3b2b130a01366b293b69130d0135130e0136130f01352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b1313013513140136131501352b2aab220c2a3b6a642b0c28082a69130e011a18010c28072a2c3c6b2805311a0f012c6b3d2a69293b69293ba003042210020722102a1a34010c293ba003042214020722142a1a28010c22473ba003032902072922481a1c010c293ba003042224020722242a1a10010c293ba003042281020722812a1a04010c293ba0030422c6020622c62afaf90c1323013513240136132501352b2aab222d2a3b6a642b0c28082a692e3ba00303290205280f2f2b6a192101661f0a0000|@14272,1,@3414,@64,@5420,@5469,@4594,@5719,@13287,@5407,@13289,@14175,@14273,@14273,@5407,@14275,@14276,@14277,@14278,@14279,@4851,@18351,@18352,@13287,@5407,@13289,@5407,@14175,@5407,@4867,@4689,@14280,@14281,@14282,@13287,@5407,@13289,@14175,@14273,@5886,@14283,@14284,@14285,@14287,@13272,@14289,@14290,@14291,@14292,@14293,@14271| 18346:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3415,@14275| 18347:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3416,@14276| 18348:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3417,@14277| 18349:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3418,@14278| 18350:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3419,@14279| 18351:D3,8|fb02293642000000|@13283,1,@3420| 18352:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3421| 18353:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3422,@14280| 18354:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3423,@14281| 18355:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3424,@14282| 18356:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3425,@14283| 18357:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3426,@14284| 18358:D3,8|fb053b2e2e2e6b44|@14286,1,@3427| 18359:D6,148|fb1333353436220c37312c0c293b69220e2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa630c0201290b02002c352806a0030dfa572d692a3b452a465050021a3c22100cfa4a2a22136a3c3b2c316b293b692d2a452c4650260429352a3622102210221722170c29220c692b220e2b6a22162e452a4627101f090000|@14288,1,@3428,@4851,@18361,@18360| 18360:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3430| 18361:D3,8|fb02293642000000|@13283,1,@3429| 18362:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3431,@14289| 18363:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3432,@14290| 18364:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3433,@14291| 18365:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3434,@14292| 18366:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3435,@14293| 18367:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3436,@14271| 18368:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3437,@14305| 18369:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@3438,@4839,@14306| 18370:D4,28|fb072b929103122b352c362a3b692afa170c2a2a69270402013b4200|@4648,1,@3439,@14307| 18371:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3440,@13265,@5821,@13263| 18372:D3,4|fb023b42|@14309,1,@3441| 18373:D20,452|fb1f329291f8120132353336220e35220f363b061ab9012a2c6a2c3caa292b2d6a22133b3bef293ba003051aa6010257293eb1292808b1293cb2293fb4291a9701a503043b5002041a9101103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221b3f2d3f34ec503f31b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c27081a56012215342f6b0b02002f2e2e220f2d221a221a221a221a221a221a1a3d010c5029352a363435293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a14010c321a1301a003033c0213323b3bef3ba0030a323f1a00013f3bed02013b0304fafa0201322afaf80c3bfaf80c302c3b2d2d3b220c3c6808280c2a6922202a453b46271802a7303caa220d35220e3632352b2aab2d2a3b6a642b0c28082a69343ba20303fac2103b503b503b220c2214220dfab80c221322120c343ca0031d2a3ba00303290205292bfaa50c28072a2e220e6b22122a453b4665024f2afa950c293ba003032a02052a2afa8c0c28072a2f3c6b3b3b3b22112d6805293b6922103ba20303fa62103b503b503b2211fa6c0c28142a3b6a2b3ba00303290205280f2c2b6a22182a453c46270827081f0b00|@14312,1,@3442,@18374,@7391,16777215,@4054,@18375,@14310,@13329,@4062,@4866,@4838,@14316,@4848,@14317,@14318,@14319,@14320,@14311| 18374:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3443,@13265,@5821,@13263| 18375:D7,128|fb0b2b352c362a2c38ab3b2a3c6a642a0c28082a692d37929103092d3736293ba06402013b030c2d37352a2a69293b696502353b2e37299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa36103b503b503b2a2cfa300c293037fa2e0c65302f360c293ba003032a02072a2afa20337e092706420000|@14314,1,@3444,@4848,@14315,@5868,@14313| 18376:D4,32|fb072d2da003033b0213280b2c2f3b6b2e3caa292f2ffa140c2b2a6966440000|@4843,1,@3445,@14315| 18377:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3446,@14313| 18378:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3447,@14316,@4688| 18379:D4,56|fb0d2e2ea003033b02292c352d362d352b2aab322a3c6a642b0c28082a69293c69343caa29220c220c220cfa170c2b2a6927081f04000000|@4843,1,@3448,@14317| 18380:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3449,@14318| 18381:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@3450,@14319,@6109| 18382:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3451,@14320| 18383:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@3452,@5044,@14311| 18384:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3453,@14216,@4688| 18385:D6,60|fb0e0b02002e2afa3f0c5029352a362a3b2a929103182a352b362a2c2ffa2d0c2a2a2505250526031e173b660201296503062afa1b317d083b270542|@14323,1,@3454,@14324,@14322,@14321| 18386:D5,100|fb0d2c9291034f2c352d362a3a2992910319293529352935293ba0030a2b362935293ba06502013b6602013b0b02002e2afa3d0c5029352a362e030c312b69220c2a452b4664020a312a69220c2c452a46642709020afa1c2c2a35452a36466443000000|@5896,1,@3455,@14324,@5895| 18387:D6,84|fb122d3a2992910346293529352a3729350b02002c2a220cfa460c5029352a362a9291910304220d02212afa370c3135293ba003032a02052a2afa2c0c333b3b2ce350323b3b2fe3503c66270902012d64440000|@14326,1,@3456,@14327,@14328,@14325| 18388:D5,128|fb0f2d9291036e2d352e362a362e299291033529352a362a35292ea003033c0217293b3bef2e3b3befa0030b293f2f3f313b3befed02013b03033c02082a250426031e343b6602013b640b02002e2a34fa3a0c5029352a362e030c312b69220d2a452b4664020a312a69220d2c452a46642709020afa192d2a35452a36466444|@5896,1,@3457,@14327,@5895| 18389:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3458,@14328| 18390:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3459,@14325| 18391:D11,276|fb152c3a2992910319293529352935293ba0030a2b362935293ba06502013b6602013b03e92d352e3929293ba00304faef021629352a362a353ba003042a360207292503511e1b3b65642b3b3bef293ba00304facf024428122ab1292808b1293cb2293fb429fac0a503043b500203fabb10292841bd2a3cb22a2a3b3bf02b3b3b32f050fa9e3f2d3f2812ec50333f2d281634ec502b95502b2707293b3bef293ba00304fa8a024629281ab1292808b1293cb2293fb429fa6fa503043b500203fa6a10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa4f3f2e2c281aec502c95502c270829fa43fa450c29fa450c3b3e3b3b2d68053b3b2b336b220e230c2a2a22107d113b6443000000|@14330,1,@3460,@8997,@14331,16777215,@4054,@14329,@8818,@8820,@9106| 18392:D23,692|fb272b352c362d372e3a3b33299291031229362b3caa292b25042504511e113b6502012a652d230d29299291031b29352a362a351a8902a003052a68010207292503511e1a3b6502013b64293ba0034b1a7102299291031b29352a362a351a5f02a003052a68010207292503511e1a3b6502013b64293ba003041a4b02103b503b50293529351a3702a003043b5002041a3902103b502937650217293529351a1e02a003043b5002041a2002103b502937640345220c3b2a9291031b2a352b362a36292d1a09020c2b2a2506250626041e193b27040201296529299291031529352a362a341aec010c50292503511e143b6502013b646402013b220d929103043b5002041ad101103b50220d3529390b02002211352806a0030f1abf012212692a3b452a465050021b3c340c1ab1012a220e6a3c3b2c22166b293b692d2a452c4650260429352a36220d2a0c34220e0c220c3ba203033c0206220c1a8601a803041a8401103b503b50220c28403bda1a7a0122133622162215372e221c2f680722122212221222126b0b0200221c31221c221031312f1a57010c5029352a362903a3221c038b2218230d29299291031b29352a362a351a3b01a003052a68010207292503511e1a3b6502013b64293ba00347faf0299291031b29352a362a351a1201a003052a68010207292503511e1a3b6502013b64293ba00303facb103b503b5029352935faeca003043b500203fabb103b50293765021529352935fad5a003043b500203faa4103b502937646502013b030e22183b22212212fabbfabd0c02013b0213221c03033b020c22183b22212212faabfaa50c31933b292ba903033b021a332a3bdb2a2a2224221f2227fa930c502a3cb12502501e1e3b64642221220c3c220d221f22272224222337222436fa750c293ba00304220f0206220f2afa6a0c293ba003032f0205280f2a316a271e1f05|@14334,1,@3461,@65,@5420,@5469,@4594,@14335,@14202,@14337,@18394,@18395,16777215,@4557,@18396,@14346,@66,@14504,@10900,@14505,@14506,@14510,@14333| 18393:D4,264|fb0a2c350a1f003e003e0041003e003e004c003e003e003e003e003e003e003e003e00550074009c00ac003e003e003e003e00d1003e003e00da003e003e003e003e003e002b02bc2c362936292efac42f7e062c37292dfabb2e7e052c36293629352936293ba003033c020329929103032f02032a3069270402892c38292d2a9291031a2a352b362a38292dfa860c2b2a2506250626041e183b2704020129656402612c362d372a2efa690c2a2afa64307e072c37292d2a929103172a352b362a2cfa500c2a2a2505250526031e163b660201296564022c2c36292dfa362e7e052c36292d2a929103172a352b362a2cfa220c2a2a2505250526031e163b66020129656443000000|@14336,1,@3462,@14335| 18394:D3,8|fb02293642000000|@13283,1,@3463| 18395:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3464| 18396:D16,372|fb36292306932c2aa903041a7201103b503b502a23062d3bdb293caa2c2306932f2aa903041a5c01103b503b502d2306303b2de30b0300323a220c2a929103043b5002041a4101103b502a352b362b3ba0030e2a2e2a35452a36462a3a4751020e2b3cab2a2a2505250526031e3150515129352a362b37323ea403c52a3b1a0b010c220d3735220e3736220f3737221037392211373a0b0200312e313332312ffaee0c5029352a360b0200fae722112b221d380c502935221b3735221c3736221d37370b02003330302cfacc0c5029352a36221732313332fac20c293ba003032b02052b2afab90c293ba00304220f0206220f2afaae0c22263735222737362228373722293738222a373a222b372306222c3723072f2f2f2f220e30303068080b020022272d2b2234360c502935220c3ba00303290206280f220d2b6a2726022e2a3bfa470c29fa5f0c220e392211aa293ba20303fa55103b503b503d2a6928082a692cfa4a0c28072a2c3c6b2706270c420000|@14340,1,@3465,@4597,@4632,@4721,@14335,@13302,@5228,@14172,@14177,@14341,@14342,@14339,@5886,@4867| 18397:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3466,@14341| 18398:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3467,@14342| 18399:D6,60|fb0b2b929103332b352c362a3729353da003043b500203fa2f1029362935293ba20303fa27103b503d2a6928082a692efa1e0c2a2a69270802013b42|@4648,1,@3468,@14343,@5886,@14339| 18400:D18,440|fb222c353b33299291031229362b3caa292b25042504511e113b6502012a651aa2013c220c299291033929352a362a362b392e3caa0b03002f220c220c3122152e1a84010c5029352a362b372b2b2b6a2932220d251025102510260d1e373b270d02012b66291a63010c03033c028c2b230d29299291031b29352a362a351a4f01a003052a68010207292503511e1a3b6502013b64293ba0034b1a3701299291031b29352a362a351a2501a003052a68010207292503511e1a3b6502013b64293ba003041a1101103b503b50293529351afd00a003043b5002041aff00103b50293765021529352935fae5a003043b500203fae8103b50293764653c2cfae10c0b0400302ffadd3b2dfadd0c5029352a362b372c382c2c2c2c6b0b0400221003082e2afac70c50020a2933453246314730485029352a362b372c382c2c2c2c6b2b293ba003033b024b29929103043b500203fa9c103b502935293ba003033c02322a929103043b500203fa84103b502a353b2aa203033b02192b929103043b500203fa70103b502b3629250426031e4d3b646464642991fa5f2223222222242d222468062c22242b2222fa500c221f2a452c46271d1f0700|@14348,1,@3469,@14349,@14350,@14436,@64,@5420,@5469,@4594,@14438,@14440,@14442,@14448,@5975,@6128,@18453,@14347| 18401:D38,1076|fb1730350a1f003e003e004d003e003e00e3003e003e003e003e003e003e003e003e00f4007d01a902fe024b033e003e003e00af033e003e00bf033e0017043e003e0020042f2c2a35452a36462a374764f7dc03303629352935280ea0037b2936293629352b3729352f363039220c382e2d2b1aca030c291ac9030c1ac9032e22132f221368053136293ba00318322b221622161ab5030c22112a35452a36462a3747640230299291031d2936332a2d22182218311a98030c22122a35452a36462a37476464020e221422112a35452a36462a374764270c020c312e2a35452a36462a37476465f74603303731382a32322c32321a5d03337b080a3036293629352b37293531382c2b2b1a33030c291a46030c1a4603220e220e220e6b2f36293ba00318302b221222121a1f030c220d2a35452a36462a3747640243299291031d2936312a2d22142214311a02030c220e2a35452a36462a3747646402210b0300221322152b1af7020c5029352a362b37220e2c6922142a452c462b472708270af7ac023037313832392b3530352a29353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b64030e293c220e2e1a82021a83020c02013b2b29352805a0032229382938293629353da003043b5002041a6802103b502937652502501e233b64024229352806a0030d293629352502501e373b64022e29353ea003043b5002041a3c02103b5029363b2a299291031229362b3caa292b25042504511e113b6502012a656464293ba203041a1602103b503b503b2a1a10020c2f2a2a929103242a352b362a352b382a341aff010c292f2c1afc010c2d2a2508250826061e223b2706020129652e0628192b2b336b292212221234221222121aa90122137b08133036313732380b03002e220e220e30220e2e1a8f010c5029352a362b373229352805a0030c2937292502501e0d3b6402132935280ea003092936293629356502031a900164292d69220e2a452d462c47270cf72b013036313732382b351a7801061b0f273eba28062b2b6a293b6928052a1a68011a69011a6a016805292f1a67010c2c3b6922113322123422122e1a5b010c220e2a35452a36462a374764270b02de30363137323833392c35313532362b3c1a3b010c293528053b2b2d3b68053b06291a2e011a2f011a30016b293b692c302b1a2a010c1a2a01322217220e6b34220e220c2c1a1f010c2b2a22182218220e1a17010c22132a35452a36462a3747642710027a303631372a32322c3232fa92337b080a30363138313629353ea0031f2936333534372e2c220d220d220dfade0c3e2a69332d452a462c472705022a29353fa003043b500203fac7103b50323533372d220c220c2f220cfaba0c3e2a69322d452a462c4727046602122e302dfa3d2e7b05082e302dfa342e7b05081f060000|@14352,1,@3470,@14353,@14359,@18410,@14361,@14373,@14350,@14380,@18418,@14382,@14387,@10900,@14227,@14388,@4848,@14390,@14391,@14397,@9103,@5064,@5114,@5112,@4653,@11175,@14402,@13217,@10945,@14409,@4685,@13713,@18430,@14415,@14425,@14432,@14433,@14351| 18402:D15,240|fb152d352e372f380b02002d353ea003092d36292808a06402013b03a5fadd352ffadd0c29fadd0c2e353da003272e3629353ea0030829362992916402013b030d29362935293629fabe0c66020429fab70c6402012e29352806a003043b500203faa91029362b929103082b36293ba06402013b030f2b35293528053b2b2d3b6805650219fa89061b0f273eba28062b2b6a3f2f692c3b3b2ce3502a2704fa742a2c6a0b0200220c2d2bfa6c0c5029352e3b6929fa660c220c2c452a4650260c021efa5c32690b0200302d2bfa4a0c5029352a3629fa4d0c302c452a4650260729352a362a220cfa3f0c2a2709440000|@14355,1,@3471,@83,@14356,@14357,@8044,@10933,@5064,@18405,@8023,@14358,@18407,@14354,@11175| 18403:D4,80|fb0d2c929103442c352d362a352b362c37302ca003033c0217303b3bef2c3b3befa0030b303f2d3f2f3b3befed02013b030e2a2a692d32fa230c2a2a696502072c31fa18327e09270502013b43000000|@10928,1,@3472,@14356| 18404:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3473,@14357| 18405:D3,20|fb042b35292b37a003062a36680102013b644200|@10936,1,@3474| 18406:D4,28|fb072b929103132b352c362a3b3b6a2afa160c2a2a69270402013b42|@4648,1,@3475,@14358| 18407:D3,116|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b64420000|@14214,1,@3476| 18408:D4,52|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa180c2a2a69270c02013b420000|@4648,1,@3477,@14354| 18409:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3478,@14359| 18410:D4,32|fb0c0b03002d36302f37303831392efa1b0c5029352a362b372b2b2b6a270742|@14360,1,@3479,@14350| 18411:D7,104|fb0e2c3629353ca0032329362e352f37323729fa5f0c2d2a33220d220d2210fa570c3c2a692e2a2f6a2707023629353fa003043b500203fa43102d352e372e3b6930373bfa3a2b6a64320c333729fa240c2c2a2d220f6b293b693c2a69312a326a2709641f040000|@14363,1,@3480,@14364,@14366,@14362,@5395| 18412:D5,88|fb0a2b353fa003312b362c3729fa550c2992910320293528062a3b6a292e3bfa470c29352806a0030829362968016402013b6602013b66021c2b353ca003152b3629352806a0030829362968016402013b6402013b420000|@14365,1,@3481,@14364,@4807| 18413:D6,120|fb0e3092910356303531362a352b362c372d38220c929103052b929102013b030b220c352c352a2aa06502013b0318343b69292efa4e0c2c220d0c2a2f2b2f6b293269270402122d220d220d220d220d220dfa340c2f2a6964270602162e3b692d373bfa272b6a642f0c2a322b306b293b69661f06000000|@14368,1,@3482,@14367,@14366,@5395| 18414:D6,220|fb0a2c3ba003032b02ce2b3ba003032c02c62c929103043b500203facb102c352c929103043b500203fabd102c352a2aa003362e929103043b500203faaa102e352f929103043b500203faa0102f362f929103043b500203fa92102f362a2afa8f0c2c2a692704026e2e929103043b500203fa74102e352e929103043b500203fa66102e352a2aa2032730929103043b500203fa5310303531929103043b500203fa491031362932fa460c2b2a696602252f929103043b500203fa2c102f3530929103043b500203fa22103036322afa1f0c2b2a6966656543000000|@14369,1,@3483,@5975,@6128,@14367| 18415:D6,96|fb0d2d3629353ba0032029362a37303531372c220d33220d34220efa4f0c3b2a2e6a2c2a2d6a2706023229353fa003043b500203fa3a102e352f372f3b6931373bfa312b6a64330c2a312b220f6b293b693b2a220f6a2f2a306a2707641f0600|@14375,1,@3484,@14376,@14374,@5395| 18416:D6,128|fb0f3092910361303531362a352b372c382935220c352a2aa003033c02172a3b3bef2a3b3befa0030b2a3f2b3f2d3b3befed02013b031b220c3b69292ffa4d0c2e220e0c2a220e2b22136b293369270402122e220e220e220e220e220efa310c302a6964270702162e3b692c373bfa242b6a642f0c2a2f2b346b293b69661f06|@14377,1,@3485,@14367,@14376,@5395| 18417:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3486,@14380| 18418:D5,32|fb0c0b0300fa25302f36303731382efa1f0c5029352a362b372b2b2b6a270742|@14360,1,@3487,@14381,@14350| 18419:D7,88|fb0a2c352d362e372a353ca0030d2a362932fa500c3c2a6965022a2a353ba003102a362b372a33fa3f0c3b2a2c6a6602142a353ea0030d2a362932fa2f0c3e2a696502012a313b692b2afa240c312f452c462a4727064400|@14384,1,@3488,@14385,@14386,@14383,@14367| 18420:D5,64|fb132c929103342c352d362a352b362c372d380b0300220c2f2bfa300c5029352a362b372b2b2b6a34342b346b220d2212fa1d0c2a2a69271002013b43000000|@4648,1,@3489,@14382,@14385| 18421:D5,64|fb132c929103342c352d362a352b362c372d380b0300220c2f2bfa300c5029352a362b372b2b2b6a34342b346b220d2212fa1d0c2a2a69271002013b43000000|@4648,1,@3490,@14382,@14386| 18422:D5,48|fb0e2c929103252c352d360b0300312f2bfa290c5029352a362b372b2b2b6a31220dfa1c0c2a2a69270b02013b430000|@4648,1,@3491,@14382,@14383| 18423:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3492,@14390,@14381| 18424:D7,144|fb0e2b352805a0031c2b382938293629353da003043b500203fa81102937302afa7e317e082b352806a0030b2b3629352e2afa6c2f7e062b353ea003043b500203fa61102b363b2a293ba00303fa59103b5029352a362a352933a003033c0218293b3bef333b3befa0030c293f343f220d3b3befed02013b03032d020f2d3caa292c2506250626041e403b6466656443|@14393,1,@3493,@14227,@14391,@14394,@14392| 18425:D5,44|fb082c3ba00303fa2f103b503b502c352d362f3ba003052d2a69020d2f3cab292b30fa180c2c2a6965654400|@14399,1,@3494,@14398,@14397| 18426:D9,60|fb0c2f9291031f2f353036fa3bfa3d2b33333333316808fa373d2b220d220c33fa32347b080bfa302f2f2f6bfa2e3d2b343331fa1f327b0809000000|@14403,1,@3495,@18428,@14402,@5006,@14373,@18427,@5212| 18427:D5,32|fb0c0b0300fa25302f36303731382efa1f0c5029352a362b372b2b2b6a270742|@14408,1,@3497,@14381,@14350| 18428:D7,236|fb182b3629353fa003592c352d372e373bfae52b6a30373bfade2b6a0b030034230730220d38220e39220f3a2efacd0c5029352a362b372b2b2b6a3122103722113822123922133a221423062215360c293b692b2a693e2a6922112a22126a2712028729353ea003043b500203fa91103b5029362992910313293629929103082936293ba06402013b6402013b03043b500203fa6f103b502a3629352a362935313532370b0300220c230732220e38220f3922103a2efa440c5029352a362b372b2b2b6a3322113722123822133922143a221523062216360c293b692b2a693e2a69220d2a220e6a27136442|@14405,1,@3496,@5395,@14350,@14404,@14404| 18429:D4,8|fb02fa1010000000|@14411,1,@3498,@14410| 18430:D4,16|fb0829363c2b372c382ffa10307b0703|@14414,1,@3499,@10900| 18431:D17,1184|fb1f2e352d3c1aa3040c2a2a1aa1041aa2040c2a357881292c352806a003082c362968016402013b293ba003041a8804103b502935220c2a0c29680166f1f75a046d29352865a003043bf74d0429352808a0f8e6012937293b3bef293ba003051a5904024728162ab1292808b1293cb2293fb4291a4904a503043b5002041a430410292841bd2a3cb22a2a3b3bf02b3b3b32f0501a25043f2d3f2816ec50313f2d281a34ec502b95502b2707293b3bef293ba003051a1004024929281ab1292808b1293cb2293fb4291af403a503043b5002041aee0310292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b11ad2033f2e2c281aec502c95502c2708293b3bef220f3b3bef2a3ba0030422100250293ba003032b02482a2ab1292808b1293cb2293fb4291a9203a503043b5002041a8c0310292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b122183f2e2c220cec502c95502c2708293b3bef293ba003051a5b03025c293fb1292808b1293cb2293fb4291a3c03a503043b5002041a360310292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef220c3b3bef2a3ba00304220d0250293ba003032b02482a2ab1292808b1293cb2293fb4291ac602a503043b5002041ac00210292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b122153f2e2c220cec502c95502c2708270b320c503b64f75f0229352805a0f82901323b3bef293ba003051a81020248282b2ab1292808b1293cb2293fb4291a5d02a503043b5002041a570210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a4d023f2d3f282bec5022113f2d282f34ec502b95502b2707293b3bef293ba003051a2f02025c293fb1292808b1293cb2293fb4291a0802a503043b5002041a020210292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef2f3b3bef2a3ba00303300250293ba003032b02482a2ab1292808b1293cb2293fb4291a9401a503043b5002041a8e0110292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220f3f2e2c220cec502c95502c27082706310c503bf72e0129353ca003041a6301103b50323b3bef293ba003051a5801024828222ab1292808b1293cb2293fb4291a2801a503043b5002041a220110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a24013f2d3f2822ec5022113f2d282634ec502b95502b2707293b3bef293ba003051a0601025a293fb1292808b1293cb2293fb429fad4a503043b500203facf10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef2f3b3bef2a3ba0030330024e293ba003032b02462a2ab1292808b1293cb2293fb429fa62a503043b500203fa5d10292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220f3f2e2c220cec502c95502c27082706310c503b6427041f0400|@14417,1,@3500,@13217,@14418,@13310,@5689,@14419,16777215,@4054,@14420,@14416,@14421,@14416,@14422,@14424,@14416| 18432:D4,8|fb02fa1010000000|@13728,1,@3501,@13727| 18433:D5,76|fb0b2d3629353da0031a29362f3530372b33220c3234fa400c3d2a692c2a2d6a2705022429353fa003043b500203fa2c102e352f372f3b69332a346a293b693d2a692e2a2f6a2706641f0500|@14427,1,@3502,@14428,@14426| 18434:D9,208|fb152f929103b92f3530362a362b37329291030529929102013b037e32352a3528062b3b6a28062b3b6a293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa820c020129293b6929fa7c0c28072a22143c6b2212230d2a2a3bfa6f0c3b2a0c6429352806a0030829362968016402013b293ba00303fa57103b502935270e02013b03132f3b69292cfa480c332a220d6a292f6966020c2b33333333fa390c2d2a69642704020b2b3b692e2a316a293b69651f05000000|@14429,1,@3503,@4851,@4867,@5417,@5689,@14367,@14428| 18435:D7,92|fb132f3ba003112e3ba003043b500203fa56103b503b02402f35303630929103043b500203fa45103b50303531360b0300302f220e220e220e2efa340c5029352a362b372b2b2b6a3332221222122212fa220c2a2a69270d1f050000|@6073,1,@3504,@6072,@6072,@14350,@14432| 18436:D6,68|fb132f929103382f35303630373bfa402b6a0b0300302e220e220e220e2efa340c5029352a362b372b2b2b6a332212221222122212fa210c2a2a69270d02013b1f050000|@4648,1,@3505,@5395,@14350,@14351| 18437:D4,172|fb0c2b3629353ca0033b2936293b2a9291032d2a352b362a362b372d03033c02102a3ba091299103033c02042afa890c642c2a2507250726051e2b3b27050201296564026429353ba0032d2936293b2a9291031f2a352b362a372c03033c020429fa550c2b2a2506250626041e1d3b27040201296564023129353ea0032a2936293b2a9291031c2a352b362b03033c02042afa240c2a2a2505250526031e1b3b66020129656402013b644200|@14437,1,@3506,@14436| 18438:D4,24|fb052c2ca603033b020c2c3caa292dfa130c2e2a69654300|@14439,1,@3507,@14438| 18439:D5,40|fb082b35293ba003033b020e29929103043b500203fa1d102935293b69fa193b2b3c6b6642000000|@14441,1,@3508,@5975,@4719| 18440:D10,692|fb242f353036313729321ab3020c0b0400220e3ba003033c0239220e2f2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b650319220e220d69220e0c2a2a35452a36462a37472a384851f71f0230353fa003182e220d69220e0c2a2a35452a36462a37472a384851f7010230353da003623036293b2a929103422a352b362a352b362c372a22171a15020c293ba003032f021a3d2d2c6a2a22101a06020c292218696422180c2a2a69293369662e2a2509250926071e403b27070201296530220f6922100c2a2a3b2f1adb010c502603f7990130353ca003783036293b2a929103582a352b362a352b372c382b22171aad010c293ba003032f023029220f1aa2010c0b0400312f221e221e2d1a9c010c5029352a362b372c382c2c2c2c6b3c220d69292b6929221469270d2e2a2509250926071e563b27070201296530220f6922100c2a2a3b2f1a5d010c502603f71b0130353ba0037c303631372a3b2a9291035c2a352b362a352b362c372d382c22191a2b010c293ba003033002322922111a20010c0b0400312f222022202d1a1a010c5029352a362b372c382c2c2c2c6b3b220d22106a292b6929221569270d2f2a250a250a26081e5a3b2708020129653122106922110c2a2a2d30fada0c50260402993036313629929103082936293ba06402013b032a323629350b04002e2218221822182dfab30c5029352a362b372c38220d2d452c462b472a4850260b025a220e3caa3b2c299291031229362b3caa292b25042504511e113b6502012a65293cab3b2afa780c0b0400221932302c221c220c2210221efa690c5029352a362b372c382c2c2c2c6b3b2a221e6a22112a453b462d472c4850260f5129352a362b372c382b3ba00304220c0206220c2cfa350c22102e452a462c472b48270e1f050000|@14444,1,@3509,@14445,@14367,@14447,@14442,@14458,@14459,@14443| 18441:D6,184|fb0a2c3ba003033c02032b3ba003033b02a32c929103043b500203faa7102c352c929103043b500203fa99102c352a2aa003362e929103043b500203fa86102e352f929103043b500203fa7c102f362f929103043b500203fa6e102f362a2afa6b0c2c2a692704024b2e929103043b500203fa50102e352e929103043b500203fa42102e352a2aa2031530929103043b500203fa331030362931fa30327e092f929103043b500203fa1e102f36312afa1b327e0965430000|@14446,1,@3510,@5975,@6128,@14445| 18442:D6,340|fb153b2f299291031229362b3caa292b25042504511e113b6502012a650b02002c31a0030d1a38012a2a35452a364651020b313732382b2b452a46505129352a363337220c299291035129352a362a362937292f2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b65030a2b250526041e4c3b02013b270402013c64290312220c342a35452a36462a37472a384864029b220d2d2a9291031c2a352b362a3629372d2afa9e0c2c2a2507250726051e1a3b270502012965220e2d2a9291031a2a352b362a3629382d2aaa2c2a2507250726051e183b2705020129653c220f220f22126b293b2d2d6b2b3ca603273b2d299291031229362b3caa292b25042504511e113b6502012a65293dac293cab2e2aa86602013b030929220ffa2b22107e12220e2b453b462d472c48270427081f04000000|@14449,1,@3511,@4685,@14367,@14448| 18443:D4,56|fb0b2c362d37292ffa3a0c3e2a693b2c299291031229362b3caa292b25042504511e113b6502012a65302b452e462d472a48270543000000|@14451,1,@3512,@14450| 18444:D8,80|fb0a2c3ba003033b02422c929103043b500203fa47102c35292dfa440c292b692b3b69302afa3d0c642ffa3c0c2c3ba003152a3b69293ba003032a02072a2afa2b327e096402032a2a69270443000000|@14453,1,@3513,@5975,@14454,@14456,@14450,@14452| 18445:D9,424|fb102b3529353ea0034329362d362a299291031b29352a362a36332aa003052b680102082a250426031e1a3b6602013b64293ba003041a7b01103b50293529351a75012d69292b692706f7560129353ca0f8060129362a382e362b3729293ba003033b024829929103043b5002041a4b01102935332aa003033c02302a929103043b5002041a3401102a35342aa203033b02182b929103043b5002041a2101102b3629250426031e4a3b6464646403111a05012b69322e1a0a010c2a2a696502952b299291036c29352a362a36293729293ba003033b024729929103043b500203fad9102935220f2aa003033c022f2a929103043b500203fac2102a3522102aa203033b02172b929103043b500203faaf102b3629250426031e493b6464646403052c680102082b250526041e6a3b270402013b64293ba00303fa8c103b50293529352a363c2b69293069220e2cfa740c2a2a6927072704024929353fa0031b29362a372b382f363d2c2c6a292b69332ffa510c2a2a692707022829353ba0031829362a372e363b2b69292b69322efa330c2a2a692706020a2c36fa1b2a69293b69656443000000|@14455,1,@3514,@5689,@4705,@5975,@6128,@14454,@5689| 18446:D6,184|fb0a2c3ba003033b02ab2b3ba003032c02a32c929103043b500203faa7102c352c929103043b500203fa99102c352a2aa003232e929103043b500203fa8a102e362e929103043b500203fa7c102e362a2afa79317e082e929103043b500203fa63102e352e929103043b500203fa55102e352a2aa2032730929103043b500203fa4210303531929103043b500203fa381031362932fa350c2b2a696602152f929103043b500203fa1f102f36312afa1c327e096565430000|@14457,1,@3515,@5975,@6128,@14456| 18447:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3516,@14452| 18448:D4,24|fb052c2ca603033b020c2c3caa292dfa130c2e2a69654300|@14439,1,@3517,@14458| 18449:D11,360|fb14303ba003033c0203323ba003163232692f0c302a35452a36462a37472a384864f740013b3b3b2b31a003032a02c433293ba003033b024829929103043b5002041a2f011029352d2aa003033c02302a929103043b5002041a1801102a352e2aa203033b02182b929103043b5002041a0501102b3629250426031e4a3b64646464035f2f2c2a929103043b500203faeb102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529220efacc0c292ca603142d3caa292f2c25062506250626031ea03b6402122d3caa292e2e25062506250626031eb43b646502112b3caa292c2c250425042504501ec83b64662d2a2a929103043b500203fa7a102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465652a3b69332afa5d0cfa5efa602b220c220c220c220c68070b04003122143022152dfa4d0c5029352a362b372c382c2c2c2c6b3f2a221322116b22162a453b462d472c4827101f0800|@14460,1,@3518,@5975,@6128,@4721,@14461,@14456,@18450,@14459,@14442| 18450:D3,44|fb0f0b04003035313630372c32383339343a220c2306220d360c5029352a362b372c382c2c2c2c6b27094200|@14463,1,@3520| 18451:D6,216|fb0c2c3629353ea0032f2936293b2a929103212a352b362a32fac90c292da603032902012c2b2a2506250626041e1f3b27040201296564029b2d37292efaa90c293ba0299103102a929103043b500203fa9a102a35027c2c353da003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa6502532c353ca003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa65022a2c353ba003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa6502013b6664430000|@14462,1,@3519,@14461,@14445,@5975| 18452:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3521,@14443| 18453:D10,184|fb102b3ba003a829390303fab7103b503b502938030728102a366902902937352a37362b37372c37382d37392dfa99a003033c02122d3b3bef3ba003092d3ffa873f3bed02013b030d2b3ba00305293ba002013b02013b0304fa71020d2d2c2b2f2e680528062a3b6a64293b69fa612a69fa612a69fa612a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa390c02012928102a69270c02072b3cab2a3a2c804200|@14465,1,@3522,@14466,@4062,@4689,@4689,@14469,@14464,@4851| 18454:D4,20|fb0c2b362c3830303b30322f2ffa11347b090800|@14471,1,@3523,@14470| 18455:D11,332|fb1a313532363337313632373c2a0c3c3b2b22106b2a3ba203041a3b01103b503d2b6928082a6930299291033229352a362a3729353da003043b5002041a1c011029362a372a3b3b220ce350293b3b220ee3502c250626051e303b270502013b6432353ea003113236292213221322132213faec0c6402c032353ca0031f323633373438292bfadc221522152215221532221c221c220efacf0c66029b32353fa003603236333734382213299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303fa98103b502935293629352806a00308292d3bfa890c0206280b2a2e3b6b2f2a22192219221922192219fa660c2707023532353ba0031e32363337292d69292214692c22162b2216221622162216fa420c2704021130929103043b500203fa42103035220f0c2d3b69293ba003032a0205280f2a2c6a270c1f07|@14473,1,@3524,@5886,@14474,@14477,@14470,@14472,@5689,@4807,@5975| 18456:D7,88|fb0f2f929103043b500203fa57102f3530362a352b362a2a343434fa4b0c2a310c2a3ba00303290205280f2b2b6a2e929191030329021d2d220d220d220dfa2c0c2f220e220e220e220efa240c28052b2d2c6b6527071f05|@14479,1,@3525,@14480,@14483,@14478,@14477| 18457:D9,292|fb182f9291f816012f3530362a352b362f3630373c2a0c3c3b2b220e6b2a3ba203041a0b01103b503d2b6928082a692f299291033129352a362a3729353da003043b500203faed1029362a372a3b3b220ce350293b3b220ee3502c250626051e2f3b270502013b6431353ca0032031360b02002c2f22132cfabe0c502936220e22162b22162216fab30c2705028931353da0035b313632372210299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303fa7d103b502935293629352806a00308292d3bfa6e0c0206280b2a2e3b6b220f22172b22172217fa520c2706022831353ba003173136292c6929221169220c22142f2c2214fa340c66020b3222112c22112211fa260c2d2a69270c02013b1f05000000|@14485,1,@3526,@5886,@14474,@14484,@14483,@5689,@4807| 18458:D8,176|fb0e2e353da003612e362f37293ba00304faa90208293528062a3b6a64293b69312a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa730c020129293b6929fa6d0c28072a333c6b220c2a45fa5846270a02442e353ca0031f2e362d362e382b3b322d2dfa4c0c2c3b332e2efa480c302b452a462705021f2e362f372e362f382c2c332d2dfa2b0c2d2d342e2efa270c312b452a4627061f0400|@14487,1,@3527,@4689,@4851,@4867,@14488,@14486| 18459:D17,120|fb0f2f36293ba0033e2e352806a003082e3b3bfa6f0c0206280b2f3b3b6bfa6835fa6935fa6a35fa6b35fa6c2c2e2c2e6805220d34343bfa632efa640c3e302bfa626b2707022b29929103043b500203fa5610fa57312e6a3bfa550c2930302dfa520c313b6929fa4f0c28072a2d3c6b2705641f05000000|@14489,1,@3528,@4807,@188,@189,@190,@191,@4062,@13958,@13307,@4786,@14490,@18460,@13313,@13314,@4867| 18460:D11,60|fb0dfa4435fa4535fa4635fa4735fa482c2e2c2e68052e363130373bfa3e2efa3f0c29352806a00309293b3bfa36347b0509280b2a3b3b6b27064200|@14493,1,@3529,@188,@189,@190,@191,@4062,@13958,@13307,@4807| 18461:D10,92|fb0c2f36293ba003182e352806a003092e3d3cfa532f7b0508280b2f3d3c6b023729929103043b500203fa40102935293ca00304fa3a021ffa3a322f6a3bfa380c2931312dfa350c323b6929fa320c28072a2d3c6b270564641f0500|@14494,1,@3530,@4807,@14495,@4689,@18462,@13313,@13314,@4867| 18462:D11,60|fb0dfa4435fa4535fa4635fa4735fa482c2e2c2e68052e363130373bfa3e2efa3f0c29352806a00309293d3bfa36347b0509280b2a3d3b6b27064200|@14498,1,@3531,@188,@189,@190,@191,@4062,@13958,@13307,@4807| 18463:D10,288|fb152e9291f812012e352f362a3529353ca0035429362f373c2a0c3c3b2b220d6b2a3ba203041a0301103b503d2b6928082a690b0200312d22102cfaf30c5029352a36303b69220d2b22142214fae50c28052d2bfae26b2b3ba00303290205280f2c2b6a270e02af29353da0035729362a3731299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303faa0103b502935293629352806a00308292d3bfa910c0206280b2a2e3b6b302a220e220efa74220f7b060f29353ba0034229362f373c2a0c3c3b2b220d6b2a3ba20303fa4d103b503d2b6928082a692b3b692f2b6929220f693322112b2211fa390c2c3ba00303290205280f2d2b6a270a020a2a313131fa21327b0609660202fa281f040000|@14499,1,@3532,@5886,@14484,@14478,@4689,@5689,@4807,@4683| 18464:D7,176|fb19220c3ba003112e2e2e220c220c220c220c2211327b090d220c35220d362a352b3529353ba00306220f3ca002013b03332c3529362a372f362f92919103043b500203fa76102b2b220c22122212fa6f0c2a2a220e2215221522152215221a22127b09162c360b02002e3422132cfa530c5029352a362e2a220f2216221622162216221b0c22163cab332a221822182218221822182218221822182218fa280c28052e2d2c6b270927041f0b000000|@14501,1,@3533,@14500,@14486,@14484,@14472| 18465:D10,244|fb142e3ba003ea2d302a929103043b500203faec103b502a352b362b3ba003042a39020f2b3cab2a2a2505250526031e263b646565303caa293cfac80c293b3bef293ba00304fac0024628082ab1292808b1293cb2293fb429fab1a503043b500203faac103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa8d3f2d3f2808ec50313f2d280c34ec502b95502b2707293b3bef293ba00304fa79024829280eb1292808b1293cb2293fb429fa5ea503043b500203fa59103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b1fa3c3f2e2c280eec502c95502c2708333b34322dfa2c220e7b070e3b1f05|@14508,1,@3534,@4721,@4569,@14509,16777215,@4054,@14507,@10900| 18466:D31,804|fb54339291f81703333534362a352b362c3a32363338220f3cab220f932a2aa903041a0b03103b503b5022102b3bdb293ea4031c22123caa3222152b2215221522152215221522151ae90222167b0b162d352e363b061adf022a2c6a2c3caa292b2d6a3c061ad4022a6922163522173922183a2219230722123b1ac3020c3b2a299291031229362b3caa292b25042504511e113b6502012a65293ba203041aa302103b503b503b2a1a9d020c2b321a9b020c292b1a99020c2d2b2a3ba00312293ba003043b5002041a8902103b503b02472a352b362b929103043b5002041a7702103b502b352c362c3729353da003043b5002041a6502103b5029362a372a3b3b30e350293b3b2217e3502e2d2509250926071e593b2707650b020031220c2211220f2211220f2f1a35020c5029352a360b02001a2d0222222b222a0c5029350b0200302d22172c1a1d020c5029352a3622252f221c221a221c1a0f020c293ba003032b02062b2a1a05020c293ba00304220c0207220c2a1af9010c293ba003042212020722122a1aed010c221b221f221e222a31221e3b221f68080b0200222f2d2b22370c5029352e3ba00303290205280f2f2b6a223c3cab223e2aaa222f3b3bef293ba003051ab1010247293cb1292808b1293cb2293fb4291aa201a503043b5002041a9c01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022373f2d3f34ec503f31b12c2a282fe4502c95502c270822403c1a6e010c2a3b3bef2a3b3bef2a3ba003032b0251293ba003032c02492a2ab1292808b1293cb2293fb4291a3c01a503043b5002041a3601103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708222f35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fae90c222e35222f3522303b3b2ce32ffadda003033c02122f3b3bef3ba003092f3ffacb3f3bed02013b0304fac502012f2dfac30c222c3ba20303fa66103b503b503b222dfab40c22112c3b2d2d3c343c6808280c2a693c3b22132c6b22503caa224722532b225322532253225322532253fa1f0c2b2a692740270a02013b1f090000|@14512,1,@3535,@4597,@14510,@18467,@18468,@14335,@4848,@14514,@14515,@14516,@6198,@6198,@14517,@13302,@5228,@14172,@14177,@14519,@14520,@14521,@4140,16777215,@4054,@4569,@13329,@4062,@4866,@7760,@14511| 18467:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3536,@13265,@5821,@13263| 18468:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14513,1,@3537| 18469:D5,44|fb072c2ca003033b02202c3ba20303fa27103b503b503b2d6928082a692e3caa292ffa180c2b2a6927044300|@4843,1,@3538,@5886,@14514| 18470:D4,36|fb092c9291031a2c362c352d35293caa2f3b3b2ce32d31fa170c2d2a69270602013b4300|@4648,1,@3539,@14515| 18471:D6,60|fb092c3ba0030f2b3ba003043b500203fa36103b02232c352d362d929103043b500203fa27102d352e363c3b2e2d6b2c2bfa1d0c2a2a692706430000|@6073,1,@3540,@6072,@6072,@14516| 18472:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3541,@14519| 18473:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3542,@14520| 18474:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3543,@14521| 18475:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3544,@14511,@4688| 18476:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3545,@14333| 18477:D64,3368|fb462d350a1f003e004b009d0046016e019c023e003e003e003e00a602d8023e0013035903ee033e006504df041e053e00c00512061c065607f00b3e004b0c3e00560c3e002c392c1ae90c452a4664f7d20c2d362e370b02002d322b310c5029352a3633353436220c37220d38220e3a220f2306221023072f2f2f2f3430303068080b020022102d2b22150c5029352805220e2b1a9d0c6b22162a45220e462714f7800c2d3629352935280ea003452936293629352b3729352f363039220c35220d36220e3a302f2b1a6c0c0c0b02003122142b22130c5029352a36220d2b323232220d220f1a530c0c22152a452b46271102552a360b02002d332b320c5029352a363435220c36220d37220e38220f3a22102306221123072f2f2f2f3430303068080b020022102d2b22160c5029352a362a3b69291a070c0c28072a22123c6b221a2a452d46271665f7d70b2d3629352a362f390b02002e342b330c502935220c2f2b3b220f220d360c342a452f462709f7af0b2d3629352a362b372c392d3a0b020030220d2b220c0c5029352a360b02001aae0b342b2211370c5029352212352213362214370b02003330302c1a960b0c5029352a362211323133321a8b0b0c293ba003032b02062b2a1a810b0c221c35221d36221e37221f3822203a22212306222223072f2f2f2f220d30303068080b020022202d2b22270c5029350b02001a3f0b22262b222b370c502935222c35222d36222e370b0200222430302c1a250b0c5029352a36222c323133321a1a0b0c293ba003032b02062b2a1a140b0c223635223736223837223938223a3a223b2306223c23072f2f2f2f220d30303068080b0200223b2d2b22410c50293522263ba00304221a0207280f2227221c6a220d3ba003032a0206280f220e2c6a280522382c2c6b22442a452238462742f7810a2d37292e2e2d2f7b05062d362d390b03002e2e2b3237220d341a990a0c5029352a362b372b3ba003032a0205280f2c2c6a220c2a452b46270af7450a2d362e382a352f39303a1a700a2a690b02002f2d2b1a690a0c502936291a650a0c291a640a0c2210342b22122210390c220f2a453346270df70a0a2d362e372e372f393c2b0c0b020030220c2b340c5029352d3ba203041a330a103b503b503d2e6928082a69220f332b3c22122210360c402d2b336b220f2a453346270df7c4092d3629362935293629929103372c3729352e3833353436220c39220d3a1af009322b2f31680532302c1aac090c3b1ae3090c292f2e2e1adf090c22112a452f46270b024c293ba0031e2c38313532363339343a2f2c2b3b30321ac0090c220c2a452c46270602292c3729352e3833353436220c39220d3a312f2b1a5b090c322d2c2c31331a99090c220f2a452d4627092704f72f092d372e3829929103082936293ba06402013b030c2935293829313130327b05092a352f36303731393b2e299291031229362b3caa292b25042504511e113b6502012a650b02001a4609322b220d221133220c220e341a3b090c5029352a362a3ba00303290205280f2b2b6a220f2a453146270b65f7b8082d362e372f382b35303531363239333a2d352805a003132d3629929103082936293ba06402013b6402013b03043b5002041aec08103b502d3629352f3b692a2a69293c1ade080c291add080c3b2a3c6a3e2c2b6a3d2a220e6a220f221222162c220d22102212221522151abf080c22142a45220c462712f73e082d362e372f3830392c35313532391aa5082b220d306b2d302e2c1a9d080c293ba00309341a2708452c46020e293528062a3b6a220d2a452e46652709f7ff072d3629352a361a76082d372e2d6b0b02002d3b220c2f2d220c380c5029352a360b02002d3b2a929103043b5002041a5208103b502a352b36293ba003392a353da003043b5002041a3d08103b502a362c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2a452b465051020e2a2c692a2a2505250526031e5c50515129352a362a3ba00303290205280f2b2b6a22112a453046270ff75d072d362e370b02002d322b310c5029352a3633353436220c37220d38220e3a220f2306221023072f2f2f2f3430303068080b020022102d2b22150c5029352805220e1aa5072c6b22162a45220e462714f70b072d36292e2e2d2f7b05062d362e372e362f370b02002f342b330c5029352a360b02002d352806a0030e1a6f072e692a3b452a465050021a3c320c1a62072a220c6a3c3b2c326b293b692d2a452c4650260429352a36342a0c29352806a00309293b3b1a3e070c0206280b2a3b3b6b2a352806a003092a3c3b1a28070c0206280b2b3c3b6b2b352806a003092b3d3b1a12070c0206280b2c3d3b6b2210352211362212372213382214392d1afa06a003033c02132d3b3bef3ba0030a2d3f1ae7063f3bed02013b030d2b3ba00305293ba002013b02013b03051ad006020d2d2c2b2f2e680528062a3b6a64293b69302a69322a69342a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a8e060c02012922113ba00303290206280f22122b6a28102a6922222a452218462720f7c7052d362e372f383039303531383239333a2e29353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b64030e2c3c220e301a0b061a0c060c02013b2f29352805a0032229382938293629353da003043b5002041af105103b502937652502501e233b64024229352806a0030d293629352502501e373b64022e29353ea003043b5002041ac505103b5029363b2a299291031229362b3caa292b25042504511e113b6502012a656464293ca003051a9f05020f32311a9c050c280b1a92052b3b6b641a93052d690b0200220d2d2b1a03050c502936291aff040c291a7e050c293ba003fd220c3b3bef293ba003051a6f050247293cb1292808b1293cb2293fb4291a6005a503043b5002041a5a05103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f34ec503f31b12c2a2823e4502c95502c2708293b3bef22143b3bef2a3ba0030422150252293ba003032b024a2a2ab1292808b1293cb2293fb4291aff04a503043b5002041af904103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1221d3f2e2c220cec502c95502c2708291a9204a003033c0213293b3bef3ba0030a293f1a7f043f3bed02013b03051aac040201293b1aa9040c3b1aa8040c220f2c3b2d2d3b3b3c6808280c2a692709f77e02220c3b3bef293ba003051a72040247293cb1292808b1293cb2293fb4291a6304a503043b5002041a5d04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022143f2d3f34ec503f31b12c2a2823e4502c95502c2708293b3bef22143b3bef2a3ba0030422150252293ba003032b024a2a2ab1292808b1293cb2293fb4291a0204a503043b5002041afc03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1221d3f2e2c220cec502c95502c2708291a9503a003033c0213293b3bef3ba0030a293f1a82033f3bed02013b03051aaf030201293b1aac030c3b1aaf030c220f2c3b2d2d3b3b3c6808280c2a693b34299291031229362b3caa292b25042504511e113b6502012a6522173b3bef293ba003051a5f030247293cb1292808b1293cb2293fb4291a5003a503043b5002041a4a03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221f3f2d3f34ec503f31b12c2a2823e4502c95502c2708293b3bef221f3b3bef2a3ba0030422200252293ba003032b024a2a2ab1292808b1293cb2293fb4291aef02a503043b5002041ae902103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b122283f2e2c220cec502c95502c2708293b3bef293ba003051ac2020256293eb1292808b1293cb2293fb4291a9702a503043b5002041a9102103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708291a1e02a003033c0213293b3bef3ba0030a293f1a0b023f3bed02013b03051a38020201293b1a35020c323ba203041a3c02103b503b503b331a36020c342c3b2d2d3b3b3c6808280c2a69271622152a45220d462713f72d012d3629929103082936293ba06402013b03041a0802103b503b502d392a2c301aff010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a83010c020129302a452d46270502d22c392cfadd452a466402c72d362e372f392f390b02002e342b330c5029352a360b0200facd220c2b220f370c5029352210352211362212370b02003330302cfab50c5029352a36221232313332faab0c293ba003032b02062b2a1a6d010c221a35221b36221c37221d38221e3a221f2306222023072f2f2f2f220d30303068080b020022212d2b22250c502935220c3ba00303290206280f220d2b6a3d2a69293b693b1a28010c280e2a692b3ba00303290205280f2c2b6a280522222bfa236b3b1a0e010c3d2b2b6a222e2a45222946272c44000000|@14524,1,@3546,@4689,@14353,@13309,@4867,@5228,@14172,@14177,@14525,@14526,@14527,@18483,@8023,@13212,@14534,@5886,@18485,@13313,@13314,@13893,@13307,@14536,@14541,@14546,@7275,@7277,@14549,@18495,@14415,@18496,@14561,@14563,@4683,@18503,@18504,@4807,@4062,@4689,@4851,@14387,@10900,@14227,@14388,@4684,@14391,@18505,@14565,@4128,16777215,@4054,@4866,@4838,@14566,@14567,@13945,@4848,@14568,@14569,@14572,@14573,@14574,@14523| 18478:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3547,@14525| 18479:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3548,@14526| 18480:D10,208|fb2c30929103043b500203facf103b50303531362a352b360b0200fac32e2b220e0c5029353435220c36220d370b0200221430302cfaad0c5029352a36220c32313332faa30c293ba003032b02052b2afa9a0c22153522163622173722183822193a221a2306221b23072f2f2f2f220d30303068080b0200221a2d2b22220c5029352a36221d3ba0030b2224220e452b462a4702360b030022212e2b222a222a222afa4c0c5029352a362b373d3269292d69293ba003042216020622162afa340c222e2a452e462d47270a271f1f0600|@14529,1,@3549,@14530,@5228,@14172,@14177,@14533,@14527,@14528| 18481:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3550,@14533| 18482:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3551,@14528| 18483:D3,116|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b64420000|@14214,1,@3552| 18484:D4,44|fb082b929103232b352c362a36293fb7293ba091030a2bfa1f0c2d2a696402062bfa15307d07270402013b42|@4461,1,@3553,@14534| 18485:D5,40|fb0829362c2b373b2d382e39fa260c29352806a00309293c3bfa1d2f7b0504280b2a3c3b6b644200|@14535,1,@3554,@13307,@4807| 18486:D4,8|fb02fa1010000000|@14538,1,@3555,@14537| 18487:D12,220|fb1d329291038c323533362a352b380b02002c220e2b22110c5029350b02002c352806a0030dfac02d692a3b452a465050021a3c22110cfab32a22126a3c3b2c316b293b692d2a452c4650260429352a36332211fa9a0cfa9b2b2214221b2d68050b02002c22112b221c221c221c221c221c221cfa820c5029352a362a3ba00303310205312bfa740c221d2a452b46271502472b3ba20303fa66103b503b503b2c220cfa5f0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa380c020129343b452a46661f09|@14543,1,@3556,@18488,@18489,@14391,@18490,@14541,@14545,@4848,@14542,@4851| 18488:D3,8|fb02293642000000|@13283,1,@3557| 18489:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3558| 18490:D3,20|fb042b2a39a0030629372a362c802b2a382c8000|@14544,1,@3559| 18491:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3560,@14545| 18492:D4,28|fb072d2da003033b02102d2c0c2e3caa292f2ffa130c2b2a69664400|@4843,1,@3561,@14542| 18493:D12,152|fb163392910375333534360b02002d220e2b22110c5029352d22102210221022102210221022102210fa790cfa7a220f220ffa780c2a3b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa4b0c020129fa3d2a221322153122152215fa3d22157b0917fa3a2c31fa2a0cfa373130306b2afa340c2932342dfa31327b060e00|@14550,1,@3562,@14549,@5006,@14353,@4851,@13309,@5212,@18494,@13313,@13314| 18494:D6,40|fb08fa302c2b363b2d372e38fa2a0c29352806a00309293c3bfa212f7b0504280b2a3c3b6b644200|@14551,1,@3563,@5212,@13307,@4807| 18495:D4,16|fb0829363c2b372c382ffa10307b0703|@14538,1,@3564,@10900| 18496:D4,32|fb0b0b02002e352f362b2f3630373138fa1a0c5029352a362a2a692705420000|@14553,1,@3565,@14552| 18497:D5,48|fb0c2f390b02002f2d2b34220e220cfa2b0c5029352a362a3ba00304220d0206220d2bfa1b0c220c2a452b4627071f06|@14555,1,@3566,@14556,@14554| 18498:D10,196|fb2a30929103b4303531362a352b360b0200fabc2e2b220e0c5029353435220c36220d370b0200221430302cfaa60c5029352a36220c32313332fa9c0c293ba003032b02052b2afa930c22153522163622173722183822193a221a2306221b23072f2f2f2f220d30303068080b0200221a2d2b22220c5029353d2a690b0200222022132b222922292229fa540c5029352a362e3b692b3ba00303290205292cfa430c293ba003042214020622142afa380c222c2a452d46272702052e3b4530461f060000|@14558,1,@3567,@5228,@14172,@14177,@14559,@14556,@14560,@14557| 18499:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3568,@14559| 18500:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3569,@14560| 18501:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3570,@14557| 18502:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3571,@14554| 18503:D3,8|fb02293642000000|@13283,1,@3572| 18504:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3573| 18505:D3,116|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b64420000|@14214,1,@3574| 18506:D4,44|fb082b929103232b352c362a36293fb7293ba091030a2bfa1f0c2d2a696402062bfa15307d07270402013b42|@4461,1,@3575,@14565| 18507:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3576,@14566,@4688| 18508:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3577,@14567,@4688| 18509:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3578,@14568,@4688| 18510:D4,40|fb0b2d9291031c2d352e360b02002d312b340c5029352d3333fa190c2a2a69270702013b44000000|@4648,1,@3579,@14572| 18511:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3580,@14573| 18512:D4,28|fb072b929103122b352c362a3c692afa170c2a2a69270402013b4200|@4648,1,@3581,@14574| 18513:D4,36|fb0a2b9291031a2b352c362a352b363b2b2b6a293c692dfa170c2a2a69270702013b4200|@4648,1,@3582,@14523| 18514:D45,1752|fb542b362c372d383129352816a0030c2936292502501e0d3b6402262935280ba003042937021b29352805a003043b5002041aaf06103b502937292502501e353b64640b030034929191030e302a2a35452a36462a3747510219303531363b061a85062a2c6a2c3caa2e2a452b462c4750260529352a362b373c061a6e062a6932929103043b5002041a6406103b503235293729352b3829352d36291a55060c3b2a299291031229362b3caa292b25042504511e113b6502012a65293ca0910307221892919102013bf8e80322123b3bef293ba003051a1f060247293cb1292808b1293cb2293fb4291a1006a503043b5002041a0a06103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a3f2d3f34ec503f31b12c2a2828e4502c95502c27082b3c1add050c2a3b3bef2a3b3bef2a3ba003032b0251293ba003032c02492a2ab1292808b1293cb2293fb4291aab05a503043b5002041aa505103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050333f2d3f220cec503f32b1333f2e2c220cec502c95502c2708293b3bef293ba003051a73050246293cb1292808b1293cb2293fb4291a5405a503043b5002041a4e05103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a2829e4502c95502c27083b061a2a052a22166a22163caa292b2d6a220c3ca003051a19050253220c3ba403041a1205103b503b50220c3ba203041a0805103b503b503b220d1a01050c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ad9040c0201296522243522253922263a222723071ac804222736222d2225313134222022113333680b293430221a2219223032220d220c22231aa7040c3335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a83040c221f3522203522213b3b2ce322111a7504a003033c021522113b3bef3ba0030b22113f1a60043f3bed02013b03051a5904020222112d1a55040c221b3ba203041a2b04103b503b503b221c1a44040c322c3b2d2d3c343c6808280c2a693c22320c3c3b2b2d6b293b692235352236363b062b3caa2239352a2aab293ba203041a1404103b503b50293ba60313293cab322a3b6a642e0c292e1aff030c640210313ba203041af703103b503b503d326928082a6922293ba203041ab203103b503b503b222a1adb030c29929103082936293ba06402013b030d29351ac9032a69293b696502353b2a299291031229362b3caa292b25042504511e113b6502012a65293ba203041a6603103b503b503b2a1a98030c292c1a96030c65291a94030c291a93030c28072a2f3c6b22403b3bef293ba003051a83030257293eb1292808b1293cb2293fb4291a0803a503043b5002041a0203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022483f2d3f34ec503f31b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c2708220c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aca020c2c1ac902a003033c02132c3b3bef3ba0030a2c3f1ab6023f3bed02013b03051aaf0202012c2a1adc020c3b1adb020c312c3b2d2d3b3b3c6808280c2a6922173ba00303290206280f22182b6a2738f71e0222123b3bef293ba003051aaf020257293eb1292808b1293cb2293fb4291a2802a503043b5002041a2202103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a3f2d3f34ec503f31b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c27083b061a55022a22106a22103caa292b2d6a221d35221e39221f3a222023071a3d022220362226221e30322218220f3232680a29331a2b0222132212222932220c220c221c1ac7010c3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aa3010c221835221935221a3b3b2ce322101a9501a003033c021522103b3bef3ba0030b22103f1a80013f3bed02013b03051a7901020222102d1a75010c3b1ab8010c322c3b2d2d3c343c6808280c2a69222f92919103032902ef3b2230299291031229362b3caa292b25042504511e113b6502012a6522163b3bef293ba003051a7a010255293eb1292808b1293cb2293fb429fae0a503043b500203fadb103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221e3f2d3f34ec503f31b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708222435293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529faa40c2cfaa4a003033c02122c3b3bef3ba003092c3ffa923f3bed02013b0304fa8c02012c2afa8a0c303ba20303fa62103b503b503b31fac90c322c3b2d2d3c3b3c6808280c2a69270a271727151f040000|@14576,1,@3583,@14577,@18515,@18516,@14581,@14222,@4133,16777215,@4054,@4569,@4134,@18517,@4684,@14246,@4848,@14584,@4851,@18519,@14269,@13329,@4062,@4866,@7760,@14586,@13265,@5821,@13263,@14587,@4684,@14588,@5868,@14589,@4867,@7391,@4838,@14590,@7391,@18525,@18526,@4684,@14591,@13945,@14575| 18515:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3584,@13265,@5821,@13263| 18516:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14580,1,@3585| 18517:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3586,@13265,@5821,@13263| 18518:D5,44|fb072c2ca003033b02202c3ba20303fa27103b503b503b2d6928082a692e3caa292ffa180c2b2a6927044300|@4843,1,@3587,@5886,@14584| 18519:D3,40|fb09293a2a23062b23072c23082f2e23093b30230a68082a372b382c393b2d2f36317b0704000000|@14585,1,@3588| 18520:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3589,@14586,@4688| 18521:D4,24|fb052c2ca003033b020c2c3caa292dfa130c3c2a69654300|@4843,1,@3590,@14587| 18522:D5,32|fb062c2ca003033b0213280bfa1e2e3b6b2d3caa292efa180c2b2a6966430000|@4843,1,@3591,@4684,@14588| 18523:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3592,@14589| 18524:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3593,@14590,@4688| 18525:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3594,@13265,@5821,@13263| 18526:D4,36|fb0929392a3a2b23062c23072f2e23083b30230968082a372b38fa143b2d2f36317b0704|@14585,1,@3595,@4684| 18527:D5,24|fb052b3ca003033b020c2b3caa29fa140cfa152a69654200|@4843,1,@3596,@14591,@4688| 18528:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3597,@14575,@4688| 18529:D4,60|fb132b352c382d3a2e2306313b2a929103232a352b362a2c30220d33220d36220d342213fa220c2a2a2505250526031e223b66020129652704440000|@14593,1,@3598,@14592| 18530:D51,1328|fb6e33382935220c35220d36220e372c3ba003051a2505022a2c1a23050c299291031c29352a36293ba003032a020d291a11050c2b2a69641a0d050c6502031a0a05642d220f1a07050c293b2a929103202a352b362b3ba003032a02062a2c1af2040c2a2a2505250526031e1f3b66020129653b2a299291031229362b3caa292b25042504511e113b6502012a650b0700313ba0031d22182a2a35452a36462a37472a39482a3a492a23064a2a23074b5102693c061aa0042a69221a3629352a363b061a96042a2c6a2c3caa292b2d6a22113ba203041a8704103b503b503b22122c1a7f040c22132a1a7c040c22233a3c2b693b06292f220e2d6b292d69222835222939222a230722132c4534462212472b482d493b4a2a4b50261329352a362b372c382d392e3a2f2306221e3b3bef22133b3bef2a3ba0030422140254293ba003042220024b2a2ab1292808b1293cb2293fb4291a1404a503043b5002041a0e04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f05022273f2d3f220cec503f32b1221c3f2e2c220cec502c95502c2708293b3bef293ba003051ad6030246293cb1292808b1293cb2293fb4291abb03a503043b5002041ab503103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282de4502c95502c27083434342c220c220c220c220c68080b0200221d2d2b22290c5029350b02002c352806a0030e1a6a032d692a3b452a465050021b3c22120c1a5c032a22156a3c3b2c316b293b692d2a452c4650260429352a36222b2215221522146b22152b0c0b0300222a1a33033c222b322e1a2f030c5029352a362b372b2b2b6a3c1a23030c0b04002f2f1a1e033b2d1a1d030c5029352a362b372c382c2c2c2c6b0b04002e2a1a0a030c5029352a362b372c382c2c2c2c6b2b293ba003033b024e29929103043b5002041aea02103b502935293ba003033c02342a929103043b5002041ad102103b502a353b2aa203033b021a2b929103043b5002041abc02103b502b3629250426031e503b6464646429912b2220224522231aa3020c2a910305224c9102013b0310224d3b224d22471a90021a91020c02013b224e230d29299291031b29352a362a351a7e02a003052a68010207292503511e1a3b6502013b64293ba0034b1a6602299291031b29352a362a351a5402a003052a68010207292503511e1a3b6502013b64293ba003041a4002103b503b50293529351a2c02a003043b5002041a2e02103b502937650217293529351a1302a003043b5002041a1502103b50293764032822493b1a0b020c29299291031629352a362a22551afe010c50292503511e153b6502013b646402013b22443ba003132d3ba003042227020722272e1adb010cf72a012254372255363c2b0c223a929103043b5002041ac501103b50223a3529352935291abb010c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965220c3ba00304222f0208222f220d1a8f010c293ba003032a02062a2a1a85010c22551a83010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a5b010c0201292c3ba00303290205280f2d2b6a2248372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a24010c3b224c0c2a1a1f010c22583ba20303fa92103b503b503b22591a0f010c301a0e013b2d2d3b313c6808280c2a693c3b22162c6b2263225f3b221a221a221a2263faf10c3b2218221922192262fae90c3d2a69292c692d2a69271c293ba003042257020922572afad322527e59274e1f09000000|@14595,1,@3599,@4188,@14596,@14597,@4052,@4062,@14598,@14602,@18538,@18539,@4848,@14604,@6330,16777215,@4054,@4138,@18542,@18543,@14349,@14350,@14606,@14607,@14442,@14448,@5975,@6128,@14608,@14616,@10900,@65,@5420,@5469,@4594,@14335,@14202,@14617,@14040,@13944,@14618,@14619,@14620,@4851,@13329,@4838,@14624,@13945,@14625,@14631,@14594| 18531:D4,28|fb072b929103112b352c362a352afa180c2a2a69270402013b420000|@4648,1,@3600,@14596| 18532:D5,28|fb072b929103132b352c3629fa1a0c2b2a69fa182a69270402013b42|@9402,1,@3601,@14597,@4217| 18533:D5,32|fb072c929103152c352d362a2efa1d0c2a2ffa1c0c2a2a69270402013b430000|@4648,1,@3602,@14599,@14598| 18534:D7,32|fb0b2c38fa262d690b02002d2d2bfa200c50293629fa1d0c29fa1d337d0b0000|@14601,1,@3603,@18535,@8023,@13212,@14600| 18535:D3,116|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b64420000|@14214,1,@3604| 18536:D4,44|fb082b929103232b352c362a36293fb7293ba091030a2bfa1f0c2d2a696402062bfa15307d07270402013b42|@4461,1,@3605,@14600| 18537:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3606,@14602| 18538:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14603,1,@3607| 18539:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3608,@13265,@5821,@13263| 18540:D5,32|fb072d2da003033b0212fa202e2d6a2e3caa292f2ffa190c2b2a696644000000|@4843,1,@3609,@18541,@14604| 18541:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@14605,1,@3610| 18542:D3,8|fb02293642000000|@13283,1,@3611| 18543:D3,28|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a6927044200|@13284,1,@3612| 18544:D4,24|fb052b3ca603033b020b2b3caa29fa140c2d2a6965420000|@14439,1,@3613,@14606| 18545:D5,40|fb082b35293ba003033b020e29929103043b500203fa1d102935293b69fa193b2b3c6b6642000000|@14441,1,@3614,@5975,@4719| 18546:D17,416|fb222e3529353ea0030829362992916402013b03043b5002041a9001102f3529362935293533363437323633373c2a0c3c3b2b22116b2a3ba203041a7201103b503d2b6928082a6930299291033229352a362a3729353da003043b5002041a53011029362a372a3b3b220ce350293b3b220ee3502c250626051e303b270502013b6430293ba003033b024729929103043b5002041a2101102935293ba003033c022f2a929103043b5002041a0a01102a353b2aa203033b02172b929103043b500203faf8102b3629250426031e493b64646464299103033b02a6332c3b2214fadf0c2213352214362215372216382217392dfad0a003033c02122d3b3bef3ba003092d3ffabe3f3bed02013b030d2b3ba00305293ba002013b02013b0304faa8020d2d2c2b2f2e680528062a3b6a64293b69fa982a69fa982a69fa982a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa700c02012928102a692805220efa562c6b3d2a69293b692710343c2e3b2216fa540c293ba003032a02052a2afa4b0c302a6927121f04000000|@14610,1,@3615,@14611,@5886,@14474,@5975,@6128,@14478,@4062,@4689,@4689,@14614,@14615,@4851,@14483,@14609| 18547:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3616,@14609| 18548:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3617,@14617| 18549:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3618,@14618| 18550:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3619,@14619| 18551:D6,60|fb0b2b929103332b352c362a3729353da003043b500203fa2f1029362935293ba20303fa27103b503d2a6928082a692efa1e0c2a2a69270802013b42|@4648,1,@3620,@14621,@5886,@14620| 18552:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3621,@14624,@4688| 18553:D13,300|fb20319291030530929102013bf8170131353236323533363c330c2d3729353da003043b5002041a0e01103b5029362a372a3b3b2fe350293b3b220fe32f3ba003263b220e220f220f220ffaef0c29352806a003092922113bfae50c0207280b2a22123b6b6402a13b30299291031229362b3caa292b25042504511e113b6502012a65220e35220f363b06fab72a2c6a2c3caa292b2d6a220d2a221622162216fa9a0c29352806a003092922183bfa900c0207280b2a22193b6b2e35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa680c29fa680c220c3ba20303fa63103b503b503b220dfa5d0c2efa5d3b2d2d3b3b3c6808280c2a69270f3c3b302c6b22113caa33322b2214221422142214fa3d0c2b2a69270d02013b1f070000|@14627,1,@3622,@14628,@14631,@4807,@18557,@13329,@4838,@4848,@14626,@13945,@14625| 18554:D8,92|fb0f3b30299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa44103b503b503b2afa3f0c312afa3e0c3135323632352b2aab332a3b6a642b0c28082a69332f220ffa270c29fa270c28072a2d3c6b270a1f05|@14633,1,@3623,@4848,@14634,@6330,@14632,@4867| 18555:D4,24|fb052c2ca003033b020c2c3caa292dfa130c2e2a69654300|@4843,1,@3624,@14634| 18556:D5,104|fb0d2d9291035c2d352e362e299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba00304fa3a021a293529363035313632352b2aab2d2a3c6a642b0c28082a6927062b3131fa1d0c2a2a69270502013b44000000|@4648,1,@3625,@13614,@14632| 18557:D6,76|fb092b352c362d372a3ba20303fa49103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa35317e0729030f2b3ba20303fa2c103b503b2c69020d2b3ba20303fa1d103b503d2c69664200|@13264,1,@3626,@13265,@5821,@13263| 18558:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3627,@14626,@4688| 18559:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3628,@14594| 18560:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3629,@14635| 18561:D3,48|fb152b352c362d372e382f39303a0b020030333731313131220e221038312212392213360c5029352a362a2a69270b42|@14636,1,@3630| 18562:D3,48|fb152b352c362d372e382f39303a0b020030333731313131220e221038312212392213360c5029352a362a2a69270b42|@14637,1,@3631| 18563:D6,96|fb153292910350323533360b02002d22102b220f220f220f220f220f220ffa4c0c5029352a360b02002c322b221422142214221422142214fa360c5029352a362a3ba003032f02052f2bfa280c22152a452b46270d0205313b4534461f090000|@13253,1,@3632,@14640,@14638,@14639| 18564:D11,332|fb2233363437220c382935293ba003041a4501103b502935220c3b3bef2e3b3bef2a3ba003032f0252293ba00304220e02492a2ab1292808b1293cb2293fb4291a1901a503043b5002041a130110292841bd2a3cb22a2a3b3bf02b3b3b32f05022153f2d3f220cec503f32b1220e3f2e2c220cec502c95502c2708293b3bef293ba00304fade0242293cb1292808b1293cb2293fb429fac4a503043b500203fabf10292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27080b0200342d2218221422142e2218221a0c5029352a363c22140c343629353da003043b500203fa761029362a372a3b3b2fe32a3b3b221ae322103b690b02002c221c221e222122212efa570c5029352a363c3b220d220f6b293b692c3ba00303290205292dfa3f0c293ba003042210020622102afa340c22272a452e46271f1f0900|@14642,1,@3633,@5689,16777215,@4054,@4139,@13269,@13292,@14643,@14641| 18565:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3634,@14643| 18566:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3635,@14641| 18567:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3636,@14639| 18568:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3637,@14644| 18569:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3638,@14645| 18570:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3639,@14646| 18571:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3640,@13982| 18572:D5,76|fb0929382d2a929103043b500203fa48102a352b362b3ba003042a36020f2b3cab2a2a2505250526031e243b646565293629353da003102d2c362d372d3bfa1c0c3c2a696402022a35654300|@13882,1,@3641,@4721,@13839| 18573:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3642,@14647| 18574:D12,184|fb122b38293ba0035c2c352d362e372f3830392bfaaea003033c02122b3b3bef3ba003092b3ffa9c3f3bed02013b0304fa9602012b2bfa940c2e3ba20303fa90103b503b2ffa8d0c302c3b2d2d3b323c68083c2afa826a3b2afa810c28063b2b6a270b024f2c352d362e372f3830392bfa52a003033c02122b3b3bef3ba003092b3ffa403f3bed02013b0304fa3a02012b2bfa4c0c2e3ba20303fa34103b503b2ffa410c302c3b2d2d3b323c6808280c2a69270964420000|@14650,1,@3643,@4062,@4866,@14651,@4848,@14652,@14653,@14658,@14659,@14649| 18575:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@3644,@4839,@14651| 18576:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3645,@14652,@4688| 18577:D4,8|fb02fa1010000000|@14655,1,@3646,@14654| 18578:D6,52|fb072c3ba0030dfa37fa392d3b6b293b6964021c2c352d362a35fa24a00307292efa252f7e06292efa1e0c2b2a69646543000000|@4826,1,@3647,@25,@4162,@14658| 18579:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@3648,@4839,@14659| 18580:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3649,@14649,@4688| 18581:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3650,@14660| 18582:D8,84|fb112b352c362d372e382f392bfa51a003033c02122b3b3bef3ba003092b3ffa3f3f3bed02013b0304fa3902012b2bfa370c2e3ba20303fa33103b503b2ffa300c302c3b2d2d3c323c6808280c2a692709420000|@8697,1,@3651,@4062,@4866,@7760,@4848,@14661| 18583:D5,24|fb052c2ca003033b020d2c3caa292dfa130cfa142a696543|@4843,1,@3652,@14661,@4688| 18584:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3653,@13258| 18585:D3,12|fb052b352c372a2a69654200|@14663,1,@3654| 18586:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3655,@13255| 18587:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3656,@13252| 18588:D8,120|fb0d2b353ca003033b026c2b353ba003272b3629fa6e0c293b2a929103152a352b362a2c692a2a2505250526031e143b660201296565023f2b362c3729352bfa47fa490c2afa490c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032b02072b2afa22337e09270642|@14666,1,@3657,@14667,@10945,@13949,@14668,@14665| 18589:D7,76|fb0e2b929103432b352c362a3a2935293ba00303fa42103b502935293729353da003043b500203fa331029362935293ba20303fa2b103b503d2a6928082a6931fa220c2a2a69270b02013b42|@4648,1,@3658,@5689,@13269,@5886,@14667| 18590:D5,32|fb082b929103152b352c362a3529fa1c0c2bfa1c0c2a2a69270502013b420000|@4648,1,@3659,@14669,@14668| 18591:D8,112|fb0a2b353fa003212b362c3729fa6d0c29352806a00309292c3bfa64317b0506280b2a2d3b6b6602432b353da0032e2b362c372a352a3529353b2aab293ba003043b500203fa3d102c3ba20303fa39103b503d2d6928082a692707020f2b353ca003043b500203fa23102b3642000000|@13279,1,@3660,@14669,@4807,@10949,@10947,@13278| 18592:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3661,@14665| 18593:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3662,@13185| 18594:D11,340|fb1d2c350b0600301a55012a9291032c2a352b360b04002f312b22181a45010c5029352a362b372c382c2c2c2c6b332a250e250e260c1e2b260c021629362c2a35452a36462a37472a38482a39492a3a4a515129352a362b372c382d392e3a2e3b2a9291031d2a352b362a352a2afaf80c2c2e692a2a2507250726051e1b3b2705020129652d3b2a9291031d2a352b362a352a2afad60c2c2e692a2a2507250726051e1b3b2705020129652b3b2a9291031d2a352b362a352a2afab40c2c2e692a2a2507250726051e1b3b2705020129652e3b2a9291031d2a352b362a352a2afa920c2c2e692a2a2507250726051e1b3b270502012965313b2a9291031d2a352b362a352a2afa700c2c2e692a2a2507250726051e1b3b2705020129652f3b2a9291031d2a352b362a352a2afa4e0c2c2e692a2a2507250726051e1b3b27050201296522162f452b462e472c482a492d4a271444|@14673,1,@3664,@14674,@14679,@14706,@14707,@14708,@14709,@14710,@14672| 18595:D4,8|fb02fa1010000000|@14677,1,@3665,@14676| 18596:D13,472|fb272d352e3629352a362b372c382d392e3a220c37220d38220f353ca0032f220f36292b1abd010c2e3ba00303290206292f1ab3010c333333332d3368062211220e452a462f472e482704f78501220f353ba00362220f36332f690b02002d2d2a929103282a352b360b02002d2f2b221b22101a76010c5029352a362a2a692f2a250a250a26081e2726080209292c2a35452a3646515129352a36220e220e220e2c220e220e680622152c452a46334732482708f71c01220f362210372935220c3b690b02002d2d2a9291036b2a352b362a3629353ba003043b5002041a10011029362a372d372f353036221d352806a00309221d2b3bfafb0c0207280b221e2c3b6b3c2a692e353ca003072e3629356402022e3629063c2a333b6b2c2a326a303caa2a31692a2a69220f2a2513251326111e6a26110209292c2a35452a3646515129352a36293ba00304faab02553b2a299291031229362b3caa292b25042504511e113b6502012a6529fa8fa80303fa8e103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa5e342b220e6b2c2214690b0200220e2e2e2c221ffa4d0c5029352a36309322132aaa22202d452c462a4732482713270a1f0400|@14681,1,@3666,@14682,@14686,@14687,@14690,@4807,@4725,16777215,@5803,@18607,@14680| 18597:D5,40|fb0b2c9291031e2c352d362a362b3729352931fa1f0c2c2a692e33fa1b0c2a2a69270802013b4300|@4648,1,@3667,@14683,@14682| 18598:D6,92|fb162c352d362e372f383039313afa58322e2c6bfa562c2b6a30353ca0032e303631382a352a352993293ba00304fa4002132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e316806270943000000|@14684,1,@3668,@18600,@18599,@4725| 18599:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3670,@8143| 18600:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa2d102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@14685,1,@3669,@4721| 18601:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3671,@14686| 18602:D10,292|fb302f38303a3035313630352806a00309302b3b1a19010c0206280b312c3b6b2c35293ba003041a0a01103b502935293529352a372c362d382e392c352d362e372f383039313afaef22162e2c6bfaec2c2b6a30353ca0032e303631382a352a352993293ba00304fad602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e316806220f3622103822102b2d2c6b220e35220f3622103722113822123922133afa942d2b221a2214221222286807fa8a2c2b6a30353ca0032e303631382a352a352993293ba00304fa6802132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e3168063c22206934221b2b2d221c680522233caa22262b6929222569222d2c452a4627291f05000000|@14688,1,@3672,@4807,@5689,@18604,@18605,@4725,@18606,@18603| 18603:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3676,@8143| 18604:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa2d102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@14689,1,@3673,@4721| 18605:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3674,@8143| 18606:D8,376|fb1d2b2a37a803352b2a37ab2a362a2a929103043b5002041a6901102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b64656564f738012b2a3aa8f82b012b2a3aab0b03002e392e2a929103043b5002041a2a01102a352b362b3ba0030e2a2e2a35452a36462a374751020e2b3cab2a2a2505250526031e2f50515129352a362b3729352a362b373438faf6a003033c021434383b3bef3ba0030a34383ffae23f3bed02013b03032b02b234383b3bef293ba00304facf0244293cb1292808b1293cb2293fb429fac1a503043b500203fabc10292841bd2a3cb22a2a3b3bf02b3b3b32f0502213383f2d3f34ec503f31b12c2a282ee4502c95502c2708293b3bef2e3b3bef2a3ba003032f024e293ba003032b02462a2ab1292808b1293cb2293fb429fa65a503043b500203fa6010292841bd2a3cb22a2a3b3bf02b3b3b32f050323f2d3f220cec503f32b1220e3f2e2c220cec502c95502c27082704292c2c6a30302b6a270d02062b2a23062c80420000|@14689,1,@3675,@4721,@4062,@4139,16777215,@4054| 18607:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa19103b502b372b3bdb6542000000|@14692,1,@3677,@4599| 18608:D6,260|fb1b2d352e3629352a362b372c382d392e3a220e353ba00343220e37293529220f2a929103282a352b360b02002d2f2b2216221afada0c5029352a362a2a692f2a250a250a26081e263b2708020a2922102a35452a364664656502a2220e353ca00341220e3629220e2a929103282a352b360b02002d2216302c2216fa960c5029352a362a2a692f2a250a250a26081e263b2708020a29220f2a35452a3646646564025a220e37312b690b02002d2d2a929103272a352b360b02002d2f2b2219221dfa540c5029352a362a2a692f2a250a250a26081e2626080209292c2a35452a3646515129352a36220c220c220c220c220c2e680622132c452a46270827081f050000|@14694,1,@3678,@14695,@14680,@14693| 18609:D14,568|fb232f353da003ca2f3629352a363135323629352a362b372c382d392e3a303b690b0200220c2d2a9291035b2a352b362a352b362c382d392f353036221c352806a0030a221c2b3b1af9010c0207280b221d2c3b6b3c2a6930302b31313b3b68072d3caa2a3b69293ba003032e02062e2a1ad4010c2b2a69220d2a25112511260f1e5a260f0209292c2a35452a3646515129352a36220f2a692922151aad011aae010c2211350b02002c2a1aa6010c502936292f692922136922142a22142214221422146806221f220c452a46271bf763012f353ba0032d2f3630372a2a693135323629352a362b372c382d392e3a312f69292f2f2f2f2f6806221133452a46270df730012f353ca003ab2f362f35303629352a362b372c382d392e3a313729352a362b382c391a2e012a22126a2d353ca0032f2d362e382a352a352993293ba003051a160102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e3b68062210352215352806a0030a221522113bfac60c0208280b221622123b6b3c2a692213382c2b2f2c6b22143caa2e2b6929221069221522152215221522152e6806221e2d452a46271a027f2f3629352a362b372c382d393435220c3629352a362b372c382d392e3a33353ea0030333021c2211352806a003092211313bfa5a0c0207280b2212323b6b3c2a6964fa66221269fa652a69220cfa632bfa640c221022102e2c22103b3b6807220c3caa22122b69293469220d220d2b220d220d220d6806221b2d452a4627171f0500|@14697,1,@3679,@4807,@14698,@4062,@10960,@8111,@18611,@4725,@18612,@18613,@14696,@8030| 18610:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3680,@14698| 18611:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3681,@8143| 18612:D3,28|fb052b3629353ba0030c2938292c360c2968016502013b6442000000|@14699,1,@3682| 18613:D6,36|fb0e0b0400302f36fa26fa283b2efa280c5029352a362b372c382c2c2c2c6b2709420000|@14701,1,@3683,@14702,@14700,@8100| 18614:D3,4|fb022b42|@14703,1,@3684| 18615:D3,4|fb022b42|@14703,1,@3685| 18616:D3,4|fb022b42|@14704,1,@3686| 18617:D7,164|fb1c2f35303631383135323631352806a00308312b3bfa980c0206280b322c3b6b2c35293ba00303fa8a103b502935293729352a362b382c39fa7d2a22116a2d353ca0032e2d362e382a352a352993293ba00304fa6602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e3b6806220c3caa3b221169293b693c220e6922122a2f2d6b22132a6929221269221b30452a4627171f0500|@14705,1,@3687,@4807,@5689,@18618,@4725| 18618:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3688,@8143| 18619:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3689,@14706| 18620:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3690,@14707| 18621:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3691,@14708| 18622:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3692,@14709| 18623:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3693,@14710| 18624:D4,72|fb0b2c9291033d2c352d362a352e2aa003033c02172e3b3bef2a3b3befa0030b2e3f2b3f2d3b3befed02013b91030b2a2ffa210c2c2a696402072a2ffa16307e076602013b430000|@4461,1,@3694,@14672| 18625:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3695,@17,@4162,@4596,@14724,@4622| 18626:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3696,@17,@14724| 18627:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3697,@18,@4162,@4596,@14725,@4622| 18628:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3698,@18,@14725| 18629:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3699,@21,@4162,@4596,@14726,@4622| 18630:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3700,@21,@14726| 18631:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3701,@20,@4162,@4596,@14727,@4622| 18632:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3702,@20,@14727| 18633:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3703,@22,@4162,@4596,@14728,@4622| 18634:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3704,@22,@14728| 18635:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3705,@19,@4162,@4596,@14729,@4622| 18636:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3706,@19,@14729| 18637:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa162bfa17327b0507646442|@14732,1,@3707,@14731,@3978| 18638:D4,52|fb092b293529353ca00310293629382c3b3bfa2ce3503b2a307d0729353da003033b020a2937292503511e273b64646442000000|@14733,1,@3708,@4542| 18639:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa162bfa17327b0507646442|@14732,1,@3709,@14731,@3978| 18640:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa162bfa17327b0507646442|@14732,1,@3710,@14731,@3978| 18641:D4,12|fb04fa142c2b366a42000000|@14738,1,@3711,@18642| 18642:D4,16|fb062b2a362b37fa132e7b0503000000|@8669,1,@3712,@8668| 18643:D4,16|fb062b352c362d37fa122e7b05030000|@14744,1,@3713,@8800| 18644:D21,144|fb15fa982d69fa982e69fa982f69fa983069fa983169fa983269fa983369fa983469fa98220c69fa97220d69fa96220e69fa95220f69fa94221069fa93221169fa92221269fa91221369fa90221469fa8f22156922142f452c462e472d482a49220c4a324b344c2b24083324092212240a220f240b2211240c30240d2210240e31240f220d2410220e24112712430000|@14746,1,@3714,@18646,@18648,@18650,@18652,@18654,@18656,@18658,@18661,@18664,@18667,@18670,@18673,@18676,@18679,@18682,@18685,@18688,@18645| 18645:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3760,@18691,@4592| 18646:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3715,@18647,@4592| 18647:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3716,@4596,@17,@4594| 18648:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3717,@18649,@4592| 18649:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3718,@4596,@18,@4594| 18650:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3719,@18651,@4592| 18651:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3720,@4596,@19,@4594| 18652:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3721,@18653,@4592| 18653:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3722,@4596,@20,@4594| 18654:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3723,@18655,@4592| 18655:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3724,@4596,@21,@4594| 18656:D5,20|fb082936352a3636fa162a2f6a292cfa13307e06|@4593,1,@3725,@18657,@4592| 18657:D6,76|fb0829362a37fa500c2992910338293529299291032b29352a362a35fa3ea003162a35fa37a003043b500203fa32102a37296801640207292503511e2a3b6502013b646402013b6442000000|@4595,1,@3726,@4596,@22,@4594| 18658:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3727,@18659,@4592| 18659:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3728,@17,@4162,@4596,@14747,@4622| 18660:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3729,@17,@14747| 18661:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3730,@18662,@4592| 18662:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3731,@18,@4162,@4596,@14748,@4622| 18663:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3732,@18,@14748| 18664:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3733,@18665,@4592| 18665:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3734,@19,@4162,@4596,@14749,@4622| 18666:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3735,@19,@14749| 18667:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3736,@18668,@4592| 18668:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3737,@20,@4162,@4596,@14750,@4622| 18669:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3738,@20,@14750| 18670:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3739,@18671,@4592| 18671:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3740,@21,@4162,@4596,@14751,@4622| 18672:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3741,@21,@14751| 18673:D5,28|fb0a2b352c362b36352c3636fa1a2a2e2e6b292cfa16327e08000000|@4621,1,@3742,@18674,@4592| 18674:D8,48|fb09fa38fa3a2b383b6b2a362b37fa340c293ba003052a3b6902082935292cfa270c642c362d372bfa22317b05060000|@4623,1,@3743,@22,@4162,@4596,@14752,@4622| 18675:D5,40|fb062c9291031c2c352d362a35fa25a003052d2a690209292efa1d0c2b2a69646502032b3b694300|@4625,1,@3744,@22,@14752| 18676:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3745,@18677,@4592| 18677:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3746,@14753,@4642| 18678:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3747,@17,@4594| 18679:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3748,@18680,@4592| 18680:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3749,@14754,@4642| 18681:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3750,@18,@4594| 18682:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3751,@18683,@4592| 18683:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3752,@14755,@4642| 18684:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3753,@19,@4594| 18685:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3754,@18686,@4592| 18686:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3755,@14756,@4642| 18687:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3756,@20,@4594| 18688:D5,20|fb082936352a3636fa162a69292cfa14307e0600|@8726,1,@3757,@18689,@4592| 18689:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3758,@14757,@4642| 18690:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3759,@21,@4594| 18691:D5,16|fb0629363bfa15fa172e7b0503000000|@4643,1,@3761,@14758,@4642| 18692:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3762,@22,@4594| 18693:D3,8|fb032b352a36a042|@14773,1,@3763| 18694:D4,12|fb052936fa122d3b6b420000|@14773,1,@3764,@4162| 18695:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3765,@4594| 18696:D3,8|fb032b352a36a042|@14773,1,@3766| 18697:D4,12|fb052936fa122d3b6b420000|@14773,1,@3767,@4162| 18698:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3768,@4594| 18699:D3,8|fb032b352a36a042|@14773,1,@3769| 18700:D4,12|fb052936fa122d3b6b420000|@14773,1,@3770,@4162| 18701:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3771,@4594| 18702:D3,8|fb032b352a36a042|@14773,1,@3772| 18703:D4,12|fb052936fa122d3b6b420000|@14773,1,@3773,@4162| 18704:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3774,@4594| 18705:D3,8|fb032b352a36a042|@14773,1,@3775| 18706:D4,12|fb052936fa122d3b6b420000|@14773,1,@3776,@4162| 18707:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3777,@4594| 18708:D3,8|fb032b352a36a042|@14773,1,@3778| 18709:D4,12|fb052936fa122d3b6b420000|@14773,1,@3779,@4162| 18710:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3780,@4594| 18711:D3,8|fb032b352a36a042|@14773,1,@3781| 18712:D4,12|fb052936fa122d3b6b420000|@14773,1,@3782,@4162| 18713:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3783,@4594| 18714:D3,8|fb032b352a36a042|@14773,1,@3784| 18715:D4,12|fb052936fa122d3b6b420000|@14773,1,@3785,@4162| 18716:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3786,@4594| 18717:D3,8|fb032b352a36a042|@14773,1,@3787| 18718:D4,12|fb052936fa122d3b6b420000|@14773,1,@3788,@4162| 18719:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3789,@4594| 18720:D3,8|fb032b352a36a042|@14773,1,@3790| 18721:D4,12|fb052936fa122d3b6b420000|@14773,1,@3791,@4162| 18722:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3792,@4594| 18723:D3,8|fb032b352a36a042|@14773,1,@3793| 18724:D4,12|fb052936fa122d3b6b420000|@14773,1,@3794,@4162| 18725:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3795,@4594| 18726:D3,8|fb032b352a36a042|@14773,1,@3796| 18727:D4,12|fb052936fa122d3b6b420000|@14773,1,@3797,@4162| 18728:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3798,@4594| 18729:D3,8|fb032b352a36a042|@14773,1,@3799| 18730:D4,12|fb052936fa122d3b6b420000|@14773,1,@3800,@4162| 18731:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3801,@4594| 18732:D3,8|fb032b352a36a042|@14773,1,@3802| 18733:D4,12|fb052936fa122d3b6b420000|@14773,1,@3803,@4162| 18734:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3804,@4594| 18735:D3,8|fb032b352a36a042|@14773,1,@3805| 18736:D4,12|fb052936fa122d3b6b420000|@14773,1,@3806,@4162| 18737:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3807,@4594| 18738:D3,8|fb032b352a36a042|@14773,1,@3808| 18739:D4,12|fb052936fa122d3b6b420000|@14773,1,@3809,@4162| 18740:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3810,@4594| 18741:D3,8|fb032b352a36a042|@14773,1,@3811| 18742:D4,12|fb052936fa122d3b6b420000|@14773,1,@3812,@4162| 18743:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3813,@4594| 18744:D3,8|fb032b352a36a042|@14773,1,@3814| 18745:D4,12|fb052936fa122d3b6b420000|@14773,1,@3815,@4162| 18746:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3816,@4594| 18747:D3,8|fb032b352a36a042|@14773,1,@3817| 18748:D4,12|fb052936fa122d3b6b420000|@14773,1,@3818,@4162| 18749:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3819,@4594| 18750:D3,8|fb032b352a36a042|@14773,1,@3820| 18751:D4,12|fb052936fa122d3b6b420000|@14773,1,@3821,@4162| 18752:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3822,@4594| 18753:D3,8|fb032b352a36a042|@14773,1,@3823| 18754:D4,12|fb052936fa122d3b6b420000|@14773,1,@3824,@4162| 18755:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3825,@4594| 18756:D3,8|fb032b352a36a042|@14773,1,@3826| 18757:D4,12|fb052936fa122d3b6b420000|@14773,1,@3827,@4162| 18758:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3828,@4594| 18759:D3,8|fb032b352a36a042|@14773,1,@3829| 18760:D4,12|fb052936fa122d3b6b420000|@14773,1,@3830,@4162| 18761:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3831,@4594| 18762:D3,8|fb032b352a36a042|@14773,1,@3832| 18763:D4,12|fb052936fa122d3b6b420000|@14773,1,@3833,@4162| 18764:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3834,@4594| 18765:D3,8|fb032b352a36a042|@14773,1,@3835| 18766:D4,12|fb052936fa122d3b6b420000|@14773,1,@3836,@4162| 18767:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3837,@4594| 18768:D3,8|fb032b352a36a042|@14773,1,@3838| 18769:D4,12|fb052936fa122d3b6b420000|@14773,1,@3839,@4162| 18770:D4,20|fb032b352a36a003043b500203fa11102b374200|@14773,1,@3840,@4594| 18771:D4,8|fb02fa1010000000|@4894,1,@3841,@4893| 18772:D3,8|fb0428062c3b6a42|@14912,1,@3842| 18773:D3,16|fb062b352c362d372c362e7b05030000|@14915,1,@3843| 18774:D3,20|fb032b352806a003082b362968016402013b4200|@14918,1,@3844| 18775:D9,88|fb122b352c362d372e382f392c3ba20303fa51103b503b2dfa4e0c2cfa4ea003033c02122c3b3bef3ba003092c3ffa3c3f3bed02013b0304fa3602012c2cfa340c2bfa340c312c3b2d2d3c333c6808280c2a69270a420000|@14922,1,@3845,@4848,@14921,@4062,@4866,@14306,@14307| 18776:D4,24|fb052c2ca003033b020c2c3caa292dfa130c3c2a69654300|@4843,1,@3846,@14921| 18777:D9,88|fb122b352c362d372e382f392c3ba20303fa51103b503b2dfa4e0c2cfa4ea003033c02122c3b3bef3ba003092c3ffa3c3f3bed02013b0304fa3602012c2cfa340c2bfa340c312c3b2d2d3b333c6808280c2a69270a420000|@14926,1,@3847,@4848,@14927,@4062,@4866,@14928,@14925| 18778:D4,24|fb052c2ca003033b020c2c3caa292dfa130c3c2a69654300|@4843,1,@3848,@14927| 18779:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa1c102a362afa1a0c2a2a69270402013b42|@4648,1,@3849,@4839,@14928| 18780:D4,28|fb072b929103122b352c362a3b692afa170c2a2a69270402013b4200|@4648,1,@3850,@14925| 18781:D4,20|fb082b352c3629fa170c28072a2d3c6b66420000|@14932,1,@3851,@14931| 18782:D4,28|fb072b929103122b352c362a3c692afa170c2a2a69270402013b4200|@4648,1,@3852,@14931| 18783:D4,24|fb042b3ba20303fa1b103b503d2c6928082a696442000000|@8697,1,@3853,@5886| 18784:D4,24|fb042b3ba20303fa1b103b503b2c6928082a696442000000|@8697,1,@3854,@5886| 18785:D4,24|fb042b3ba20303fa1b103b503c2c6928082a696442000000|@8697,1,@3855,@5886| 18786:D3,16|fb072b352c363c3b2c2c6b6542000000|@14941,1,@3856| 18787:D4,32|fb082b352c3629352806a00309292b3bfa1a307b0505280b2a2c3b6b65420000|@14944,1,@3857,@4807| 18788:D3,16|fb082b352c362d3728052c2c2c6b6642|@10183,1,@3858| 18789:D6,52|fb0d2b352c363d2a69293b693bfa310c280e2a692b3ba00303290205280f2c2b6a2805302bfa1d6b3bfa1d0c3d2b2b6a27094200|@14949,1,@3859,@14574,@4689,@14523| 18790:D4,12|fb042bfa130c280e2a696442|@14953,1,@3860,@14952| 18791:D4,28|fb072b929103122b352c362a3c692afa170c2a2a69270402013b4200|@4648,1,@3861,@14952| 18792:D4,16|fb072b352c3629fa130c3d2c2b6a6642|@14957,1,@3862,@14956| 18793:D4,36|fb0a2b9291031a2b352c362a352b363b2b2b6a293c692dfa170c2a2a69270702013b4200|@4648,1,@3863,@14956| 18794:D3,24|fb062b352c362a3ba00303290205280f2b2b6a6542000000|@14960,1,@3864| 18795:D5,24|fb042b3ba00303fa1b103b502bfa190c3e2a696442000000|@14963,1,@3865,@7763,@7766| 18796:D4,52|fb0628142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa142d7d042964420000|@14966,1,@3866,@4851| 18797:D3,8|fb0328102c694200|@10360,1,@3867| 18798:D3,16|fb082b352c362d37402c2c2c6b664200|@14971,1,@3868| 18799:D3,8|fb033d2c69420000|@10619,1,@3869| 18800:D3,8|fb022b3542000000|@14976,1,@3870| 18801:D6,72|fb0e2b352c362a362b372c382b3da003062a353ca002013b03282a3629352806a0030829362968016402013b293ba00303fa21103b502935292d31fa1b220d7b050bfa1827054200|@14979,1,@3871,@5689,@14978,@5658| 18802:D19,232|fb213b06faee2a693b0629faeb2cfaec6b293b690b020034fae62bfae70c50293629fae40c29fae40cfae52210692afae30c29fac3332dfadf0c2211faba34fadb0c280622123b6a293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faa80c020129293b6929faa20c28072a323c6b22143529fa990c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a221a352a3b2bfa690c3b2a0c6429352806a0030829362968016402013b293ba00303fa51103b502935271e4400|@14980,1,@3872,@18804,@10945,@4685,@14982,@8023,@13212,@14984,@18803,@13313,@13314,@13315,@4851,@4867,@13944,@5417,@5689| 18803:D3,12|fb0428062a363b6a42000000|@14985,1,@3876| 18804:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@14981,1,@3873| 18805:D3,4|fb023b42|@14983,1,@3874| 18806:D5,40|fb0a2b9291031d2b352c362a36293fb7293ba091fa1e2a3b6a2dfa1c0c2a2a69270702013b420000|@4648,1,@3875,@7315,@14984| 18807:D7,64|fb102b352c362d370b02002c929103142c35fa382a69fa382b692c2b452a46502603020afa2e2a2a35452a36465129352a362a2a6931312b3bfa1d220f7b060c|@14989,1,@3877,@18808,@18809,@14991,@14988| 18808:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3878| 18809:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3879| 18810:D3,4|fb023b42|@14990,1,@3880| 18811:D3,4|fb023b42|@14990,1,@3881| 18812:D29,1036|fb222e352f36303731383239313532362a2a69220c3ba403061afc03f7e6032f3ca003d0303b3bef3b2aa803041aec03103b50313fdc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299130299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220e69293b693b3b3b2e2d68053c2f3b6a291a6a03692b2a691a67032a691a66032a693b3b3b3b2d68053b1a5d030c2214221d2b2213221e1a54030c293b691a51032a692d2a693b3e3b3b2d68052714f711032f929103d0303b3bef3b2aa803041a1703103b50313fdc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299130299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220e69293b693b3b3b2e2d68053c2f3b6a291aad02692b2a691a92022a691aa5022a693b3b3b3b2d68053b1a88020c2214221d2b2213221e1a7f020c293b691a88022a692d2a693b3e3b3b2d68052714f73c022f3ba003b42c299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e3369293b693b3b3b2e2d6805293b691a23022a691a22022a693b3b3b3b2d6805220d1a18020c29353da0030829362968016402013b299291032929353b1add010c2a221a2b2210221b1ad5010c293b691aee012a691aed012a691aec012a69270602013b2c2a693b3b3b3b2d6805270df783012e353ca003152e3629352806a0030829362968016402013b6402013b299291038f2935323b3bef3b2aa803041a6b01103b502f299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220d69293b693b3b3b2e2d6805291a5601691a1a012a691a51012a693b3b3b3b2d6805332211221a1a44010c291a4301691a43012a692c2a69270e02a8313b3bef3b2aa80303fadf103b50323fdc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299131299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220f69293b693b3b3b2e2d68053c2f3b6a29faae692b2a69fa5c2a69faa82a693b3b3b3b2d6805293b69270f3bfa4f0c3022102b2f2211fa490c293b69fa8b2a69293ba003032d02052d2afa810c3b3e3b3b2d6805270727081f04000000|@14995,1,@3882,@5081,@4023,@14996,@5091,@9418,@9314,@9338,@5091,@14996,@12650,@5091,@5091,@9469,@8044,@11234,@9433,@9517,@12582,@9418,@14978,@14996,@5091,@14996,@9418,@5091,@14994| 18813:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3883,@14994| 18814:D8,72|fb122b352c362d370b02002c929103142c35fa402a69fa402b692c2b452a46502603020afa362a2a35452a36465129352a362a2a693bfa280c32322b2d3bfa2422117b070d000000|@15000,1,@3884,@18815,@18816,@14999,@9314,@9338| 18815:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3885| 18816:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3886| 18817:D3,4|fb023b42|@14990,1,@3887| 18818:D3,4|fb023b42|@14990,1,@3888| 18819:D3,8|fb022b3842000000|@15005,1,@3889| 18820:D4,36|fb042b36293da003092c3729353ca06402013b03043b500203fa15102c37293665420000|@15009,1,@3890,@15008| 18821:D4,20|fb072b382c39280d2b692afa130c2a2a69270442|@15014,1,@3891,@11477| 18822:D3,20|fb042b3629929103033c02033b2aa06442000000|@15017,1,@3892| 18823:D3,12|fb042b363b2aa06442000000|@15020,1,@3893| 18824:D3,8|fb032b3529356442|@15022,1,@3894| 18825:D7,64|fb102b352c362d370b02002c929103142c35fa382a69fa382b692c2b452a46502603020afa2e2a2a35452a36465129352a362a2a6931312b3bfa1d220f7b060c|@15025,1,@3895,@18826,@18827,@15024,@12571| 18826:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3896| 18827:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3897| 18828:D3,4|fb023b42|@14990,1,@3898| 18829:D3,4|fb023b42|@14990,1,@3899| 18830:D4,12|fb062b35293729fa0f2e7d05|@15029,1,@3900,@11477| 18831:D3,8|fb022b3542000000|@15031,1,@3901| 18832:D4,16|fb062b352c362d37fa122e7b05030000|@15034,1,@3902,@15033| 18833:D13,232|fb1e0b02002e929103142e35fae62a69fae62b692c2b452a46502603020afadc2a2a35452a36465129352a362a2a6933353437220c38220c3ba40304fac202a529299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d680529fa7469fa752a69fa752a693b3b3b3b2d680522153cab343629fa67a003033c0212293b3bef3ba00309293ffa553f3bed02013b030c220c2b3c22113bfa480c02033e2a69293b69fa412a692e2a693b3b3b3b2d6805270f270944|@15036,1,@3903,@18834,@18835,@15037,@5081,@15040,@5091,@9425,@4062,@15035,@5485| 18834:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3904| 18835:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3905| 18836:D3,4|fb023b42|@14990,1,@3906| 18837:D3,4|fb023b42|@14990,1,@3907| 18838:D16,168|fb1c2f3530392e352f362cfaa70c2923082a230c329291030d3235fa9b302b6a2968016502032e6801fa912a302e6bfa8f2b302e6b2a2a692b2b6922113ca40304fa8102503b06fa7f2a69220d3b2bfa7b0c502a3529fa78fa7a0c293b2a9291032f2a352b362a352b36221b220c2210220dfa640c2c3ba00303290205292dfa5b0c2b2a2506250626041e2d3b270402012965270429fa480cfa492a693b3b3c3b2d6805270f1f05|@15042,1,@3908,@4898,@18839,@18840,@18841,@15044,@18842,@4642,@15045,@6336,@15048,@15050,@15041,@9312| 18839:D4,16|fb062b2a362b37fa132e7b0503000000|@8144,1,@3909,@8143| 18840:D3,32|fb052b2a380c299291030c2935292c36692968016502062c2b372d7d04644200|@15043,1,@3910| 18841:D3,32|fb052b2a380c299291030c2935292c36692968016502062c2b372d7d04644200|@15043,1,@3911| 18842:D3,48|fb0c2c2c2a929103222a352b36312b692e36352a2a6930363b3b2ce32d2a2508250826061e203b270602012965440000|@4645,1,@3912| 18843:D4,8|fb03fa102c694200|@15046,1,@3913,@18844| 18844:D3,48|fb0b2b352a3635293b3bef2b3b3bef2a2aa303032a0201292c3f2f3f2dee293ba003052c2ca70203293ba62706420000|@15047,1,@3914| 18845:D35,656|fb1a2f351a9502a003b32f351a8d02a003043b5002041a8702102f372f3cab2a362b382b3ba403051a7902028329299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2d69293b693b3b3b2e2d6805291a2a02691a2a022a691a29022a693b3b3b3b2d6805220c220c3c22143b1a19020c293b691a16022a692c2a693b3b3b3b2d6805270d293b691a06022a692706f7d0012f351afe01a003de2f351af601a003043b5002041acc01102f372f3cab2a352b372c382c3ba403051adc0102ad29299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d6805291a8d01691a8d012a691a8c012a693b3b3b3b2d6805220c3cab3436291a7d01a003033c0213293b3bef3ba0030a293f1a6a013f3bed02013b030e220c2b3c221722171a37010c02033e2a69293b691a4f012a692e2a693b3b3b3b2d6805270f293b691a3f012a69270702ea2f351a3801a003242f351a3001a003043b500203fae7102f3729302e301a21010c293b691a1e012a696602be2f351a1801a0032d2f351a1001a003043b500203fabb102f37293629929103033b020f2a313131faf80c293b69faf62a69656502892f35faf0a003812f35fae9a003043b500203fa88102f3729352a3629353ca003202936293cfad10c3e2a69293b69facc2a69facc2a693b3b3b3b2d68052706022829353ba003202936293cfaab0c3e2a69293b69faae2a69faae2a693b3b3b3b2d680527060202faa33e2c69293b69fa9f2a692c2a693b3b3b3b2d6805293b69fa922a69270a02013b1f0600|@15049,1,@3915,@20,@4594,@5081,@12582,@5091,@9541,@15035,@5485,@5485,@21,@5081,@15040,@5091,@9425,@4062,@5485,@5485,@19,@12571,@5485,@18,@14988,@5485,@17,@4569,@5091,@9457,@5091,@9458,@9459,@5091,@5485| 18846:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3916,@15050| 18847:D5,24|fb062b9291030e2b352c3629fa160c2b2a69660202fa1142|@5484,1,@3917,@15041,@5634| 18848:D4,24|fb032b3629353ca003043b500203fa141029366442000000|@15053,1,@3918,@15052| 18849:D4,12|fb052b3829fa112d7d040000|@15057,1,@3919,@11477| 18850:D4,108|fb380b120022152afa6e0c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f2210231022112311221122112211221122112211221122112211221122112211221122112211221122112211681227254200|@15061,1,@3920,@15060| 18851:D16,100|fb0b2c372935fa682f2b6afa67302c6afa66312d6afa65322e6afa64332f6afa6334306a33fa6145fa62462c472b48fa5f49fa604afa5d4bfa5a4c2a2408fa542409fa54240afa54240b2f240cfa45240d2e240efa3e240ffa4624102d24112708430000|@15063,1,@3921,@18852,@18853,@18854,@18855,@18858,@18861,@15076,@15078,@15079,@15080,@15085,@15086,@15062| 18852:D7,92|fb0829372cfa610c2992910338293529299291032b29352a362a35fa4fa003162a35fa48a003043b500203fa43102a37296801640207292503511e2a3b6502013b646402013b299291030e2935292d36fa220c2968016502013b6542|@15064,1,@3922,@4596,@18,@4594,@10912| 18853:D10,180|fb1429372cfab90c2992910338293529299291032b29352a362a35faa7a003162a35faa0a003043b500203fa9b102a37296801640207292503511e2a3b6502013b646402013b299291036629352c363729392e3635293b3bef293ba00304fa6c0242293cb1292808b1293cb2293fb429fa5ea503043b500203fa5910292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082e2d2bfa2f0c296801270702013b6542|@15065,1,@3923,@4596,@19,@4594,@4139,16777215,@4054,@10960| 18854:D7,92|fb0829372cfa610c2992910338293529299291032b29352a362a35fa4fa003162a35fa48a003043b500203fa43102a37296801640207292503511e2a3b6502013b646402013b299291030e2935292d36fa220c2968016502013b6542|@15066,1,@3924,@4596,@21,@4594,@10908| 18855:D6,20|fb0629373bfa19fa1b0c292b36fa192e7e040000|@15068,1,@3925,@15069,@4642,@15067| 18856:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3926,@18,@4594| 18857:D5,40|fb0a2c9291031c2c352d362a352b362930fa210c2b2a692d32fa1d0c2a2a69270702013b43000000|@4648,1,@3927,@10912,@15067| 18858:D6,20|fb0629373bfa19fa1b0c292b36fa192e7e040000|@15071,1,@3928,@15072,@4642,@15070| 18859:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3929,@19,@4594| 18860:D8,124|fb152c929103732c352d362a352b362f3729393135293b3bef293ba00304fa680242293cb1292808b1293cb2293fb429fa5aa503043b500203fa5510292841bd2a3cb22a2a3b3bf02b3b3b32f050313f2d3f34ec503f31b12c2a282ee4502c95502c27082e2d2bfa2b0c302a6932220efa260c2a2a69270c02013b43|@4648,1,@3930,@4139,16777215,@4054,@10960,@15070| 18861:D6,20|fb0629373bfa19fa1b0c292b36fa192e7e040000|@15074,1,@3931,@15075,@4642,@15073| 18862:D5,64|fb092c2c2a929103332a352b362a35fa3ba003192a35fa34a003043b500203fa2f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@4645,1,@3932,@21,@4594| 18863:D5,40|fb0a2c9291031c2c352d362a352b362930fa210c2b2a692d32fa1d0c2a2a69270702013b43000000|@4648,1,@3933,@10908,@15073| 18864:D3,4|fb023b42|@15077,1,@3934| 18865:D3,4|fb023b42|@15077,1,@3935| 18866:D3,4|fb023b42|@15077,1,@3936| 18867:D4,8|fb02fa1010000000|@15082,1,@3937,@15081| 18868:D3,4|fb023b42|@15077,1,@3938| 18869:D3,4|fb023b42|@15077,1,@3939| 18870:D3,4|fb023b42|@15077,1,@3940| 18871:D3,8|fb022b3642000000|@15088,1,@3941| 18872:D12,196|fb1e2b352c362d370b02002c929103142c35fabc2a69fabc2b692c2b452a46502603020afab22a2a35452a36465129352a362a2a6931363238323ba40304fa9c027e29299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2d69293b693b3b3b2e2d680529fa4e69fa4f2a69fa4f2a693b3b3b3b2d6805221322133c220e3bfa400c293b69fa3e2a692c2a693b3b3b3b2d6805270d270b4200|@15091,1,@3942,@18873,@18874,@15090,@5081,@12582,@5091,@9541,@15035,@5485| 18873:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3943| 18874:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3944| 18875:D3,4|fb023b42|@14990,1,@3945| 18876:D3,4|fb023b42|@14990,1,@3946| 18877:D4,12|fb052b3829fa112d7d040000|@15095,1,@3947,@11477| 18878:D3,8|fb022b3642000000|@15097,1,@3948| 18879:D7,64|fb0f2b352c362d370b02002c929103142c35fa382a69fa382b692c2b452a46502603020afa2e2a2a35452a36465129352a362a2a6931312bfa1e220e7b050c00|@15100,1,@3949,@18880,@18881,@15101,@15099| 18880:D3,28|fb052b2a36230e0c299291030b2935293b692968016502013b644200|@14990,1,@3950| 18881:D3,28|fb052b2a3623110c299291030b2935293b692968016502013b644200|@14990,1,@3951| 18882:D3,4|fb023b42|@14990,1,@3952| 18883:D3,4|fb023b42|@14990,1,@3953| 18884:D19,428|fb282d352e362f383039303ba403061aa601f793012c3729352e35291a9d01a003033c0213293b3bef3ba0030a293f1a8a013f3bed02013b9103173e2a69291a7e01693b3b3b3b2d6805291a7601696602013b343cab2d36291a6001a003033c0213293b3bef3ba0030a293f1a4d013f3bed02013b030c2e2b3b220f3b1a48010c02033e2a69291a420169293ba003032d02062d2a1a38010c2f1a1f01a003033c02132f3b3bef3ba0030a2f3f1a0c013f3bed02013b0320301a18010c2923082a230c1a120122132c6a1a0f0122142c6a2a2a6927050210220f351a0201220e2212336b2a2a696533299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220f69293b693b3b3b2e2d680529faab69faac2a69faac2a693b3b3b3b2d68053b3b3b3b220e6805293b69fa9a2a692c2a693b3b3b3b2d6805221f3cab221a3629fa50a003033c0212293b3bef3ba00309293ffa3e3f3bed02013b030c221b2b3c22133bfa390c02033e2a69293b69fa5a2a692e2a693b3b3b3b2d6805271e27044400|@15105,1,@3954,@5081,@4062,@15040,@9310,@15035,@15106,@15110,@4898,@18886,@18887,@18888,@15104,@5091,@9538,@5565,@5565| 18885:D4,24|fb062c9291030f2c352d36292efa150c2b2a696602012b43|@5484,1,@3955,@15110| 18886:D3,32|fb052b2a370c299291030b2935293b692968016502072c2b36352d7d04644200|@15111,1,@3956| 18887:D3,32|fb052b2a370c299291030b2935293b692968016502072c2b36362d7d04644200|@15111,1,@3957| 18888:D3,56|fb082b2a38a003033c021a2b3b3bef2a383b3befa0030d2b3f2b383f2d383b3befed02013b030a29363b692968016402062b2a37362c8042|@15111,1,@3958| 18889:D4,24|fb032b3729353ca003043b500203fa141029366442000000|@15115,1,@3959,@15114| 18890:D4,12|fb052b3929fa112d7d040000|@15119,1,@3960,@11477| 18891:D3,8|fb022b3542000000|@15121,1,@3961| 18892:D10,108|fb0e2b352c3629353ca003202936293cfa660c3e2a69293b69fa612a69fa612a693b3b3b3b2d68052706022829353ba003202936293cfa400c3e2a69293b69fa432a69fa432a693b3b3b3b2d680527060202fa383e2c69293b69fa342a692c2a693b3b3b3b2d680527074200|@15122,1,@3962,@4569,@5091,@9457,@5091,@9458,@9459,@5091| 18893:D4,8|fb032c2cfa0e8b43|@4453,1,@3963,@18929| 18894:D4,8|fb022bfa0f8a4200|@15128,1,@3964,@18930| 18895:D3,4|fb023b42|@15130,1,@3965| 18896:D3,4|fb023b42|@15130,1,@3966| 18897:D3,4|fb023b42|@15130,1,@3967| 200:MB4|00000000 201:MB4|00000000 202:MB4|00000000 203:MB4|00000000 204:MB4|00000000 205:MB4096|4372656174656420737472756374757265204d4c436f6d70696c65720a73696f6e0a0a69670a670a540a46554e4354494f4e530a290a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 206:MB4|00000000 207:MB4|00000000 208:MB4|00000000 209:MB4|00000000 210:MB4|00000000 211:MB4|00000000 212:MB4|00000000 213:MB4|00000000 214:MB4|00000000 215:MB4|00000000 216:MB4|00000000 217:MB4|00000000 218:MB4|00000000 219:MB4|00000000 220:MB4|00000000 221:MB4|00000000 222:MB4|00000000 223:MB4|00000000 224:MB4|00000000 225:MB4|00000000 226:MB4|00000000 227:MB4|00000000 228:MB4|00000000 229:MB4|00000000 230:MB4|00000000 231:MB4|00000000 232:MB4|00000000 233:MB4|00000000 234:MB4|00000000 235:MB4|00000000 236:MB4|00000000 237:MB4|00000000 238:MB4|00000000 239:MB4|00000000 240:MB4|00000000 241:MB4|00000000 242:MB4|00000000 243:MB4|00000000 244:MB4|00000000 245:MB4|00000000 246:MB4|00000000 247:MB4|00000000 248:MB4|00000000 249:MB4|00000000 250:MB4|00000000 251:MB4|00000000 252:MB4|00000000 253:MB4|00000000 254:MB4|00000000 255:MB4|00000000 256:MB4|00000000 257:MB4|00000000 258:MB4|00000000 259:MB4|00000000 260:MB4|00000000 261:MB4|00000000 262:MB4|00000000 263:MB4|00000000 264:MB4|00000000 265:MB4|00000000 266:MB4|00000000 267:MB4|00000000 268:MB4|00000000 269:MB4|00000000 270:MB4|00000000 271:MB4|00000000 272:MB4|00000000 273:MB4|00000000 274:MB4|00000000 275:MB4|00000000 276:MB4|00000000 277:MB4|00000000 278:MB4|00000000 279:MB4|00000000 280:MB4|00000000 281:MB4|00000000 282:MB4|00000000 283:MB4|00000000 284:MB4|00000000 285:MB4|00000000 286:MB4|00000000 287:MB4|00000000 288:MB4|00000000 289:MB4096|20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 290:MB4|00000000 291:MB4|00000000 292:MB4|00000000 293:MB4|00000000 294:MB4|00000000 295:MB4|00000000 296:MB4|00000000 297:MB4|00000000 298:MB4|00000000 299:MB4|00000000 300:MB4|00000000 301:MB4|00000000 302:MB4|00000000 303:MB4|00000000 304:MB4|00000000 305:MB4|00000000 306:MB4|00000000 307:MB4|00000000 308:MB4|00000000 309:MB4|00000000 310:MB4|00000000 311:MB4|00000000 312:MB4|00000000 313:MB4|00000000 314:MB4|00000000 315:MB4|00000000 316:MB4|00000000 317:MB4|00000000 318:MB4|00000000 319:MB4|00000000 320:MB4|00000000 321:MB4|00000000 322:MB4|00000000 323:MB4|00000000 324:MB4|00000000 325:MB4|00000000 326:MB4|00000000 327:MB4|00000000 328:MB4|00000000 329:MB4|00000000 330:MB4|00000000 331:MB4|00000000 332:MB4|00000000 333:MB4|00000000 334:MB4|00000000 335:MB4|00000000 336:MB4|00000000 337:MB4|00000000 338:MB4|00000000 339:MB4|00000000 340:MB4|00000000 341:MB4|00000000 342:MB4|00000000 343:MB4|00000000 344:MB4|00000000 345:MB4|00000000 346:MB4|00000000 347:MB4|00000000 348:MB4|00000000 349:MB4|00000000 350:MB4|00000000 351:MB4|00000000 352:MB4|00000000 353:MB4|00000000 354:MB4|00000000 355:MB4|00000000 356:MB4|00000000 357:MB4|00000000 358:MB4|00000000 359:MB4|00000000 360:MB4|00000000 361:MB4|00000000 362:MB4|00000000 363:MB4|00000000 364:MB4|00000000 365:MB4|00000000 366:MB4|00000000 367:MB4|00000000 368:MB4|00000000 369:MB4|00000000 370:MB4|00000000 371:MB4|00000000 372:MB4|00000000 373:MB4|00000000 374:MB4|00000000 375:MB4|00000000 376:MB4|00000000 377:MB4|00000000 378:MB4|00000000 379:MB4|00000000 380:MB4|00000000 381:MB4|00000000 382:MB4|00000000 383:MB4|00000000 384:MB4|00000000 385:MB4|00000000 386:MB4|00000000 387:MB4|00000000 388:MB4|00000000 389:MB4|00000000 390:MB4|00000000 391:MB4|00000000 392:MB4|00000000 393:MB4|00000000 394:MB4|00000000 395:MB4|00000000 396:MB4|00000000 397:MB4|00000000 398:MB4|00000000 399:MB4|00000000 400:MB4|00000000 401:MB4|00000000 402:MB4|00000000 403:MB4|00000000 404:MB4|00000000 405:MB4|00000000 406:MB4|00000000 407:MB4|00000000 408:MB4|00000000 409:MB4|00000000 410:MB4|00000000 411:MB4|00000000 412:MB4|00000000 413:MB4|00000000 414:MB4|00000000 415:MB4|00000000 416:MB4|00000000 417:MB4|00000000 418:MB4|00000000 419:MB4|00000000 420:MB4|00000000 421:MB4|00000000 422:MB4|00000000 423:MB4|00000000 424:MB4|00000000 425:MB4|00000000 426:MB4|00000000 427:MB4|00000000 428:MB4|00000000 429:MB4|00000000 430:MB4|00000000 431:MB4|00000000 432:MB4|00000000 433:MB4|00000000 434:MB4|00000000 435:MB4|00000000 436:MB4|00000000 437:MB4|00000000 438:MB4|00000000 439:MB4|00000000 440:MB4|00000000 441:MB4|00000000 442:MB4|00000000 443:MB4|00000000 444:MB4|00000000 445:MB4|00000000 446:MB4|00000000 447:MB4|00000000 448:MB4|00000000 449:MB4|00000000 450:MB4|00000000 451:MB4|00000000 452:MB4|00000000 453:MB4|00000000 454:MB4|00000000 455:MB4|00000000 456:MB4|00000000 457:MB4|00000000 458:MB4|00000000 459:MB4|00000000 460:MB4|00000000 461:MB4|00000000 462:MB4|00000000 463:MB4|00000000 464:MB4|00000000 465:MB4|00000000 466:MB4|00000000 467:MB4|00000000 468:MB4|00000000 469:MB4|00000000 470:MB4|00000000 471:MB4|00000000 472:MB4|00000000 473:MB4|00000000 474:MB4|00000000 475:MB4|00000000 476:MB4|00000000 477:MB4|00000000 478:MB4|00000000 479:MB4|00000000 480:MB4|00000000 481:MB4|00000000 482:MB4|00000000 483:MB4|00000000 484:MB4|00000000 485:MB4|00000000 486:MB4|00000000 487:MB4|00000000 488:MB4|00000000 489:MB4|00000000 490:MB4|00000000 491:MB4|00000000 492:MB4|00000000 493:MB4|00000000 494:MB4|00000000 495:MB4|00000000 496:MB4|00000000 497:MB4|00000000 498:MB4|00000000 499:MB4|00000000 500:MB4|00000000 501:MB4|00000000 502:MB4|00000000 503:MB4|00000000 504:MB4|00000000 505:MB4|00000000 506:MB4|00000000 507:MB4|00000000 508:MB4|00000000 509:MB4|00000000 510:MB4|00000000 511:MB4|00000000 512:MB4|00000000 513:MB4|00000000 514:MB4|00000000 515:MB4|00000000 516:MB4|00000000 517:MB4|00000000 518:MB4|00000000 519:MB4|00000000 520:MB4|00000000 521:MB4|00000000 522:MB4|00000000 523:MB4|00000000 524:MB4|00000000 525:MB4|00000000 526:MB4|00000000 527:MB4|00000000 528:MB4|00000000 529:MB4|00000000 530:MB4|00000000 531:MB4|00000000 532:MB4|00000000 533:MB4|00000000 534:MB4|00000000 535:MB4|00000000 536:MB4|00000000 537:MB4|00000000 538:MB4|00000000 539:MB4|00000000 540:MB4|00000000 541:MB4|00000000 542:MB4|00000000 543:MB4|00000000 544:MB4|00000000 545:MB4|00000000 546:MB4|00000000 547:MB4|00000000 548:MB4|00000000 549:MB4|00000000 550:MB4|00000000 551:MB4|00000000 552:MB4|00000000 553:MB4|00000000 554:MB4|00000000 555:MB4|00000000 556:MB4|00000000 557:MB4|00000000 558:MB4|00000000 559:MB4|00000000 560:MB4|00000000 561:MB4|00000000 562:MB4|00000000 563:MB4|00000000 564:MB4|00000000 565:MB4|00000000 566:MB4|00000000 567:MB4|00000000 568:MB4|00000000 569:MB4|00000000 570:MB4|00000000 571:MB4|00000000 572:MB4|00000000 573:MB4|00000000 574:MB4|00000000 575:MB4|00000000 576:MB4|00000000 577:MB4|00000000 578:MB4|00000000 579:MB4|00000000 580:MB4|00000000 581:MB4|00000000 582:MB4|00000000 583:MB4|00000000 584:MB4|00000000 585:MB4|00000000 586:MB4|00000000 587:MB4|00000000 588:MB4|00000000 589:MB4|00000000 590:MB4|00000000 591:MB4|00000000 592:MB4|00000000 593:MB4|00000000 594:MB4|00000000 595:MB4|00000000 596:MB4|00000000 597:MB4|00000000 598:MB4|00000000 599:MB4|00000000 600:MB4|00000000 601:MB4|00000000 602:MB4|00000000 603:MB4|00000000 604:MB4|00000000 605:MB4|00000000 606:MB4|00000000 607:MB4|00000000 608:MB4|00000000 609:MB4|00000000 610:MB4|00000000 611:MB4|00000000 612:MB4|00000000 613:MB4|00000000 614:MB4|00000000 615:MB4|00000000 616:MB4|00000000 617:MB4|00000000 618:MB4|00000000 619:MB4|00000000 620:MB4|00000000 621:MB4|00000000 622:MB4|00000000 623:MB4|00000000 624:MB4|00000000 625:MB4|00000000 626:MB4|00000000 627:MB4|00000000 628:MB4|00000000 629:MB4|00000000 630:MB4|00000000 631:MB4|00000000 632:MB4|00000000 633:MB4|00000000 634:MB4|00000000 635:MB4|00000000 636:MB4|00000000 637:MB4|00000000 638:MB4|00000000 639:MB4|00000000 640:MB4|00000000 641:MB4|00000000 642:MB4|00000000 643:MB4|00000000 644:MB4|00000000 645:MB4|00000000 646:MB4|00000000 647:MB4|00000000 648:MB4|00000000 649:MB4|00000000 650:MB4|00000000 651:MB4|00000000 652:MB4|00000000 653:MB4|00000000 654:MB4|00000000 655:MB4|00000000 656:MB4|00000000 657:MB4|00000000 658:MB4|00000000 659:MB4|00000000 660:MB4|00000000 661:MB4|00000000 662:MB4|00000000 663:MB4|00000000 664:MB4|00000000 665:MB4|00000000 666:MB4|00000000 667:MB4|00000000 668:MB4|00000000 669:MB4|00000000 670:MB4|00000000 671:MB4|00000000 672:MB4|00000000 673:MB4|00000000 674:MB4|00000000 675:MB4|00000000 676:MB4|00000000 677:MB4|00000000 678:MB4|00000000 679:MB4|00000000 680:MB4|00000000 681:MB4|00000000 682:MB4|00000000 683:MB4|00000000 684:MB4|00000000 685:MB4|00000000 686:MB4|00000000 687:MB4|00000000 688:MB4|00000000 689:MB4|00000000 690:MB4|00000000 691:MB4|00000000 692:MB4|00000000 693:MB4|00000000 694:MB4|00000000 695:MB4|00000000 696:MB4|00000000 697:MB4|00000000 698:MB4|00000000 699:MB4|00000000 700:MB4|00000000 701:MB4|00000000 702:MB4|00000000 703:MB4|00000000 704:MB4|00000000 705:MB4|00000000 706:MB4|00000000 707:MB4|00000000 708:MB4|00000000 709:MB4|00000000 710:MB4|00000000 711:MB4|00000000 712:MB4|00000000 713:MB4|00000000 714:MB4|00000000 715:MB4|00000000 716:MB4|00000000 717:MB4|00000000 718:MB4|00000000 719:MB4|00000000 720:MB4|00000000 721:MB4|00000000 722:MB4|00000000 723:MB4|00000000 724:MB4|00000000 725:MB4|00000000 726:MB4|00000000 727:MB4|00000000 728:MB4|00000000 729:MB4|00000000 730:MB4|00000000 731:MB4|00000000 732:MB4|00000000 733:MB4|00000000 734:MB4|00000000 735:MB4|00000000 736:MB4|00000000 737:MB4|00000000 738:MB4|00000000 739:MB4|00000000 740:MB4|00000000 741:MB4|00000000 742:MB4|00000000 743:MB4|00000000 744:MB4|00000000 745:MB4|00000000 746:MB4|00000000 747:MB4|00000000 748:MB4|00000000 749:MB4|00000000 750:MB4|00000000 751:MB4|00000000 752:MB4|00000000 753:MB4|00000000 754:MB4|00000000 755:MB4|00000000 756:MB4|00000000 757:MB4|00000000 758:MB4|00000000 759:MB4|00000000 760:MB4|00000000 761:MB4|00000000 762:MB4|00000000 763:MB4|00000000 764:MB4|00000000 765:MB4|00000000 766:MB4|00000000 767:MB4|00000000 768:MB4|00000000 769:MB4|00000000 770:MB4|00000000 771:MB4|00000000 772:MB4|00000000 773:MB4|00000000 774:MB4|00000000 775:MB4|00000000 776:MB4|00000000 777:MB4|00000000 778:MB4|00000000 779:MB4|00000000 780:MB4|00000000 781:MB4|00000000 782:MB4|00000000 783:MB4|00000000 784:MB4|00000000 785:MB4|00000000 786:MB4|00000000 787:MB4|00000000 788:MB4|00000000 789:MB4|00000000 790:MB4|00000000 791:MB4|00000000 792:MB4|00000000 793:MB4|00000000 794:MB4|00000000 795:MB4|00000000 796:MB4|00000000 797:MB4|00000000 798:MB4|00000000 799:MB4|00000000 800:MB4|00000000 801:MB4|00000000 802:MB4|00000000 803:MB4|00000000 804:MB4|00000000 805:MB4|00000000 806:MB4|00000000 807:MB4|00000000 808:MB4|00000000 809:MB4|00000000 810:MB4|00000000 811:MB4|00000000 812:MB4|00000000 813:MB4|00000000 814:MB4|00000000 815:MB4|00000000 816:MB4|00000000 817:MB4|00000000 818:MB4|00000000 819:MB4|00000000 820:MB4|00000000 821:MB4|00000000 822:MB4|00000000 823:MB4|00000000 824:MB4|00000000 825:MB4|00000000 826:MB4|00000000 827:MB4|00000000 828:MB4|00000000 829:MB4|00000000 830:MB4|00000000 831:MB4|00000000 832:MB4|00000000 833:MB4|00000000 834:MB4|00000000 835:MB4|00000000 836:MB4|00000000 837:MB4|00000000 838:MB4|00000000 839:MB4|00000000 840:MB4|00000000 841:MB4|00000000 842:MB4|00000000 843:MB4|00000000 844:MB4|00000000 845:MB4|00000000 846:MB4|00000000 847:MB4|00000000 848:MB4|00000000 849:MB4|00000000 850:MB4|00000000 851:MB4|00000000 852:MB4|00000000 853:MB4|00000000 854:MB4|00000000 855:MB4|00000000 856:MB4|00000000 857:MB4|00000000 858:MB4|00000000 859:MB4|00000000 860:MB4|00000000 861:MB4|00000000 862:MB4|00000000 863:MB4|00000000 864:MB4|00000000 865:MB4|00000000 866:MB4|00000000 867:MB4|00000000 868:MB4|00000000 869:MB4|00000000 870:MB4|00000000 871:MB4|00000000 872:MB4|00000000 873:MB4|00000000 874:MB4|00000000 875:MB4|00000000 876:MB4|00000000 877:MB4|00000000 878:MB4|00000000 879:MB4|00000000 880:MB4|00000000 881:MB4|00000000 882:MB4|00000000 883:MB4|00000000 884:MB4|00000000 885:MB4|00000000 886:MB4|00000000 887:MB4|00000000 888:MB4|00000000 889:MB4|00000000 890:MB4|00000000 891:MB4|00000000 892:MB4|00000000 893:MB4|00000000 894:MB4|00000000 895:MB4|00000000 896:MB4|00000000 897:MB4|00000000 898:MB4|00000000 899:MB4|00000000 900:MB4|00000000 901:MB4|00000000 902:MB4|00000000 903:MB4|00000000 904:MB4|00000000 905:MB4|00000000 906:MB4|00000000 907:MB4|00000000 908:MB4|00000000 909:MB4|00000000 910:MB4|00000000 911:MB4|00000000 912:MB4|00000000 913:MB4|00000000 914:MB4|00000000 915:MB4|00000000 916:MB4|00000000 917:MB4|00000000 918:MB4|00000000 919:MB4|00000000 920:MB4|00000000 921:MB4|00000000 922:MB4|00000000 923:MB4|00000000 924:MB4|00000000 925:MB4|00000000 926:MB4|00000000 927:MB4|00000000 928:MB4|00000000 929:MB4|00000000 930:MB4|00000000 931:MB4|00000000 932:MB4|00000000 933:MB4|00000000 934:MB4|00000000 935:MB4|00000000 936:MB4|00000000 937:MB4|00000000 938:MB4|00000000 939:MB4|00000000 940:MB4|00000000 941:MB4|00000000 942:MB4|00000000 943:MB4|00000000 944:MB4|00000000 945:MB4|00000000 946:MB4|00000000 947:MB4|00000000 948:MB4|00000000 949:MB4|00000000 950:MB4|00000000 951:MB4|00000000 952:MB4|00000000 953:MB4|00000000 954:MB4|00000000 955:MB4|00000000 956:MB4|00000000 957:MB4|00000000 958:MB4|00000000 959:MB4|00000000 960:MB4|00000000 961:MB4|00000000 962:MB4|00000000 963:MB4|00000000 964:MB4|00000000 965:MB4|00000000 966:MB4|00000000 967:MB4|00000000 968:MB4|00000000 969:MB4|00000000 970:MB4|00000000 971:MB4|00000000 972:MB4|00000000 973:MB4|00000000 974:MB4|00000000 975:MB4|00000000 976:MB4|00000000 977:MB4|00000000 978:MB4|00000000 979:MB4|00000000 980:MB4|00000000 981:MB4|00000000 982:MB4|00000000 983:MB4|00000000 984:MB4|00000000 985:MB4|00000000 986:MB4|00000000 987:MB4|00000000 988:MB4|00000000 989:MB4|00000000 990:MB4|00000000 991:MB4|00000000 992:MB4|00000000 993:MB4|00000000 994:MB4|00000000 995:MB4|00000000 996:MB4|00000000 997:MB4|00000000 998:MB4|00000000 999:MB4|00000000 1000:MB4|00000000 1001:MB4|00000000 1002:MB4|00000000 1003:MB4|00000000 1004:MB4|00000000 1005:MB4|00000000 1006:MB4|00000000 1007:MB4|00000000 1008:MB4|00000000 1009:MB4|00000000 1010:MB4|00000000 1011:MB4|00000000 1012:MB4|00000000 1013:MB4|00000000 1014:MB4|00000000 1015:MB4|00000000 1016:MB4|00000000 1017:MB4|00000000 1018:MB4|00000000 1019:MB4|00000000 1020:MB4|00000000 1021:MB4|00000000 1022:MB4|00000000 1023:MB4|00000000 1024:MB4|00000000 1025:MB4|00000000 1026:MB4|00000000 1027:MB4|00000000 1028:MB4|00000000 1029:MB4|00000000 1030:MB4|00000000 1031:MB4|00000000 1032:MB4|00000000 1033:MB4|00000000 1034:MB4|00000000 1035:MB4|00000000 1036:MB4|00000000 1037:MB4|00000000 1038:MB4|00000000 1039:MB4|00000000 1040:MB4|00000000 1041:MB4|00000000 1042:MB4|00000000 1043:MB4|00000000 1044:MB4|00000000 1045:MB4|00000000 1046:MB4|00000000 1047:MB4|00000000 1048:MB4|00000000 1049:MB4|00000000 1050:MB4|00000000 1051:MB4|00000000 1052:MB4|00000000 1053:MB4|00000000 1054:MB4|00000000 1055:MB4|00000000 1056:MB4|00000000 1057:MB4|00000000 1058:MB4|00000000 1059:MB4|00000000 1060:MB4|00000000 1061:MB4|00000000 1062:MB4|00000000 1063:MB4|00000000 1064:MB4|00000000 1065:MB4|00000000 1066:MB4|00000000 1067:MB4|00000000 1068:MB4|00000000 1069:MB4|00000000 1070:MB4|00000000 1071:MB4|00000000 1072:MB4|00000000 1073:MB4|00000000 1074:MB4|00000000 1075:MB4|00000000 1076:MB4|00000000 1077:MB4|00000000 1078:MB4|00000000 1079:MB4|00000000 1080:MB4|00000000 1081:MB4|00000000 1082:MB4|00000000 1083:MB4|00000000 1084:MB4|00000000 1085:MB4|00000000 1086:MB4|00000000 1087:MB4|00000000 1088:MB4|00000000 1089:MB4|00000000 1090:MB4|00000000 1091:MB4|00000000 1092:MB4|00000000 1093:MB4|00000000 1094:MB4|00000000 1095:MB4|00000000 1096:MB4|00000000 1097:MB4|00000000 1098:MB4|00000000 1099:MB4|00000000 1100:MB4|00000000 1101:MB4|00000000 1102:MB4|00000000 1103:MB4|00000000 1104:MB4|00000000 1105:MB4|00000000 1106:MB4|00000000 1107:MB4|00000000 1108:MB4|00000000 1109:MB4|00000000 1110:MB4|00000000 1111:MB4|00000000 1112:MB4|00000000 1113:MB4|00000000 1114:MB4|00000000 1115:MB4|00000000 1116:MB4|00000000 1117:MB4|00000000 1118:MB4|00000000 1119:MB4|00000000 1120:MB4|00000000 1121:MB4|00000000 1122:MB4|00000000 1123:MB4|00000000 1124:MB4|00000000 1125:MB4|00000000 1126:MB4|00000000 1127:MB4|00000000 1128:MB4|00000000 1129:MB4|00000000 1130:MB4|00000000 1131:MB4|00000000 1132:MB4|00000000 1133:MB4|00000000 1134:MB4|00000000 1135:MB4|00000000 1136:MB4|00000000 1137:MB4|00000000 1138:MB4|00000000 1139:MB4|00000000 1140:MB4|00000000 1141:MB4|00000000 1142:MB4|00000000 1143:MB4|00000000 1144:MB4|00000000 1145:MB4|00000000 1146:MB4|00000000 1147:MB4|00000000 1148:MB4|00000000 1149:MB4|00000000 1150:MB4|00000000 1151:MB4|00000000 1152:MB4|00000000 1153:MB4|00000000 1154:MB4|00000000 1155:MB4|00000000 1156:MB4|00000000 1157:MB4|00000000 1158:MB4|00000000 1159:MB4|00000000 1160:MB4|00000000 1161:MB4|00000000 1162:MB4|00000000 1163:MB4|00000000 1164:MB4|00000000 1165:MB4|00000000 1166:MB4|00000000 1167:MB4|00000000 1168:MB4|00000000 1169:MB4|00000000 1170:MB4|00000000 1171:MB4|00000000 1172:MB4|00000000 1173:MB4|00000000 1174:MB4|00000000 1175:MB4|00000000 1176:MB4|00000000 1177:MB4|00000000 1178:MB4|00000000 1179:MB4|00000000 1180:MB4|00000000 1181:MB4|00000000 1182:MB4|00000000 1183:MB4|00000000 1184:MB4|00000000 1185:MB4|00000000 1186:MB4|00000000 1187:MB4|00000000 1188:MB4|00000000 1189:MB4|00000000 1190:MB4|00000000 1191:MB4|00000000 1192:MB4|00000000 1193:MB4|00000000 1194:MB4|00000000 1195:MB4|00000000 1196:MB4|00000000 1197:MB4|00000000 1198:MB4|00000000 1199:MB4|00000000 1200:MB4|00000000 1201:MB4|00000000 1202:MB4|00000000 1203:MB4|00000000 1204:MB4|00000000 1205:MB4|00000000 1206:MB4|00000000 1207:MB4|00000000 1208:MB4|00000000 1209:MB4|00000000 1210:MB4|00000000 1211:MB4|00000000 1212:MB4|00000000 1213:MB4|00000000 1214:MB4|00000000 1215:MB4|00000000 1216:MB4|00000000 1217:MB4|00000000 1218:MB4|00000000 1219:MB4|00000000 1220:MB4|00000000 1221:MB4|00000000 1222:MB4|00000000 1223:MB4|00000000 1224:MB4|00000000 1225:MB4|00000000 1226:MB4|00000000 1227:MB4|00000000 1228:MB4|00000000 1229:MB4|00000000 1230:MB4|00000000 1231:MB4|00000000 1232:MB4|00000000 1233:MB4|00000000 1234:MB4|00000000 1235:MB4|00000000 1236:MB4|00000000 1237:MB4|00000000 1238:MB4|00000000 1239:MB4|00000000 1240:MB4|00000000 1241:MB4|00000000 1242:MB4|00000000 1243:MB4|00000000 1244:MB4|00000000 1245:MB4|00000000 1246:MB4|00000000 1247:MB4|00000000 1248:MB4|00000000 1249:MB4|00000000 1250:MB4|00000000 1251:MB4|00000000 1252:MB4|00000000 1253:MB4|00000000 1254:MB4|00000000 1255:MB4|00000000 1256:MB4|00000000 1257:MB4|00000000 1258:MB4|00000000 1259:MB4|00000000 1260:MB4|00000000 1261:MB4|00000000 1262:MB4|00000000 1263:MB4|00000000 1264:MB4|00000000 1265:MB4|00000000 1266:MB4|00000000 1267:MB4|00000000 1268:MB4|00000000 1269:MB4|00000000 1270:MB4|00000000 1271:MB4|00000000 1272:MB4|00000000 1273:MB4|00000000 1274:MB4|00000000 1275:MB4|00000000 1276:MB4|00000000 1277:MB4|00000000 1278:MB4|00000000 1279:MB4|00000000 1280:MB4|00000000 1281:MB4|00000000 1282:MB4|00000000 1283:MB4|00000000 1284:MB4|00000000 1285:MB4|00000000 1286:MB4|00000000 1287:MB4|00000000 1288:MB4|00000000 1289:MB4|00000000 1290:MB4|00000000 1291:MB4|00000000 1292:MB4|00000000 1293:MB4|00000000 1294:MB4|00000000 1295:MB4|00000000 1296:MB4|00000000 1297:MB4|00000000 1298:MB4|00000000 1299:MB4|00000000 1300:MB4|00000000 1301:MB4|00000000 1302:MB4|00000000 1303:MB4|00000000 1304:MB4|00000000 1305:MB4|00000000 1306:MB4|00000000 1307:MB4|00000000 1308:MB4|00000000 1309:MB4|00000000 1310:MB4|00000000 1311:MB4|00000000 1312:MB4|00000000 1313:MB4|00000000 1314:MB4|00000000 1315:MB4|00000000 1316:MB4|00000000 1317:MB4|00000000 1318:MB4|00000000 1319:MB4|00000000 1320:MB4|00000000 1321:MB4|00000000 1322:MB4|00000000 1323:MB4|00000000 1324:MB4|00000000 1325:MB4|00000000 1326:MB4|00000000 1327:MB4|00000000 1328:MB4|00000000 1329:MB4|00000000 1330:MB4|00000000 1331:MB4|00000000 1332:MB4|00000000 1333:MB4|00000000 1334:MB4|00000000 1335:MB4|00000000 1336:MB4|00000000 1337:MB4|00000000 1338:MB4|00000000 1339:MB4|00000000 1340:MB4|00000000 1341:MB4|00000000 1342:MB4|00000000 1343:MB4|00000000 1344:MB4|00000000 1345:MB4|00000000 1346:MB4|00000000 1347:MB4|00000000 1348:MB4|00000000 1349:MB4|00000000 1350:MB4|00000000 1351:MB4|00000000 1352:MB4|00000000 1353:MB4|00000000 1354:MB4|00000000 1355:MB4|00000000 1356:MB4|00000000 1357:MB4|00000000 1358:MB4|00000000 1359:MB4|00000000 1360:MB4|00000000 1361:MB4|00000000 1362:MB4|00000000 1363:MB4|00000000 1364:MB4|00000000 1365:MB4|00000000 1366:MB4|00000000 1367:MB4|00000000 1368:MB4|00000000 1369:MB4|00000000 1370:MB4|00000000 1371:MB4|00000000 1372:MB4|00000000 1373:MB4|00000000 1374:MB4|00000000 1375:MB4|00000000 1376:MB4|00000000 1377:MB4|00000000 1378:MB4|00000000 1379:MB4|00000000 1380:MB4|00000000 1381:MB4|00000000 1382:MB4|00000000 1383:MB4|00000000 1384:MB4|00000000 1385:MB4|00000000 1386:MB4|00000000 1387:MB4|00000000 1388:MB4|00000000 1389:MB4|00000000 1390:MB4|00000000 1391:MB4|00000000 1392:MB4|00000000 1393:MB4|00000000 1394:MB4|00000000 1395:MB4|00000000 1396:MB4|00000000 1397:MB4|00000000 1398:MB4|00000000 1399:MB4|00000000 1400:MB4|00000000 1401:MB4|00000000 1402:MB4|00000000 1403:MB4|00000000 1404:MB4|00000000 1405:MB4|00000000 1406:MB4|00000000 1407:MB4|00000000 1408:MB4|00000000 1409:MB4|00000000 1410:MB4|00000000 1411:MB4|00000000 1412:MB4|00000000 1413:MB4|00000000 1414:MB4|00000000 1415:MB4|00000000 1416:MB4|00000000 1417:MB4|00000000 1418:MB4|00000000 1419:MB4|00000000 1420:MB4|00000000 1421:MB4|00000000 1422:MB4|00000000 1423:MB4|00000000 1424:MB4|00000000 1425:MB4|00000000 1426:MB4|00000000 1427:MB4|00000000 1428:MB4|00000000 1429:MB4|00000000 1430:MB4|00000000 1431:MB4|00000000 1432:MB4|00000000 1433:MB4|00000000 1434:MB4|00000000 1435:MB4|00000000 1436:MB4|00000000 1437:MB4|00000000 1438:MB4|00000000 1439:MB4|00000000 1440:MB4|00000000 1441:MB4|00000000 1442:MB4|00000000 1443:MB4|00000000 1444:MB4|00000000 1445:MB4|00000000 1446:MB4|00000000 1447:MB4|00000000 1448:MB4|00000000 1449:MB4|00000000 1450:MB4|00000000 1451:MB4|00000000 1452:MB4|00000000 1453:MB4|00000000 1454:MB4|00000000 1455:MB4|00000000 1456:MB4|00000000 1457:MB4|00000000 1458:MB4|00000000 1459:MB4|00000000 1460:MB4|00000000 1461:MB4|00000000 1462:MB4|00000000 1463:MB4|00000000 1464:MB4|00000000 1465:MB4|00000000 1466:MB4|00000000 1467:MB4|00000000 1468:MB4|00000000 1469:MB4|00000000 1470:MB4|00000000 1471:MB4|00000000 1472:MB4|00000000 1473:MB4|00000000 1474:MB4|00000000 1475:MB4|00000000 1476:MB4|00000000 1477:MB4|00000000 1478:MB4|00000000 1479:MB4|00000000 1480:MB4|00000000 1481:MB4|00000000 1482:MB4|00000000 1483:MB4|00000000 1484:MB4|00000000 1485:MB4|00000000 1486:MB4|00000000 1487:MB4|00000000 1488:MB4|00000000 1489:MB4|00000000 1490:MB4|00000000 1491:MB4|00000000 1492:MB4|00000000 1493:MB4|00000000 1494:MB4|00000000 1495:MB4|00000000 1496:MB4|00000000 1497:MB4|00000000 1498:MB4|00000000 1499:MB4|00000000 1500:MB4|00000000 1501:MB4|00000000 1502:MB4|00000000 1503:MB4|00000000 1504:MB4|00000000 1505:MB4|00000000 1506:MB4|00000000 1507:MB4|00000000 1508:MB4|00000000 1509:MB4|00000000 1510:MB4|00000000 1511:MB4|00000000 1512:MB4|00000000 1513:MB4|00000000 1514:MB4|00000000 1515:MB4|00000000 1516:MB4|00000000 1517:MB4|00000000 1518:MB4|00000000 1519:MB4|00000000 1520:MB4|00000000 1521:MB4|00000000 1522:MB4|00000000 1523:MB4|00000000 1524:MB4|00000000 1525:MB4|00000000 1526:MB4|00000000 1527:MB4|00000000 1528:MB4|00000000 1529:MB4|00000000 1530:MB4|00000000 1531:MB4|00000000 1532:MB4|00000000 1533:MB4|00000000 1534:MB4|00000000 1535:MB4|00000000 1536:MB4|00000000 1537:MB4|00000000 1538:MB4|00000000 1539:MB4|00000000 1540:MB4|00000000 1541:MB4|00000000 1542:MB4|00000000 1543:MB4|00000000 1544:MB4|00000000 1545:MB4|00000000 1546:MB4|00000000 1547:MB4|00000000 1548:MB4|00000000 1549:MB4|00000000 1550:MB4|00000000 1551:MB4|00000000 1552:MB4|00000000 1553:MB4|00000000 1554:MB4|00000000 1555:MB4|00000000 1556:MB4|00000000 1557:MB4|00000000 1558:MB4|00000000 1559:MB4|00000000 1560:MB4|00000000 1561:MB4|00000000 1562:MB4|00000000 1563:MB4|00000000 1564:MB4|00000000 1565:MB4|00000000 1566:MB4|00000000 1567:MB4|00000000 1568:MB4|00000000 1569:MB4|00000000 1570:MB4|00000000 1571:MB4|00000000 1572:MB4|00000000 1573:MB4|00000000 1574:MB4|00000000 1575:MB4|00000000 1576:MB4|00000000 1577:MB4|00000000 1578:MB4|00000000 1579:MB4|00000000 1580:MB4|00000000 1581:MB4|00000000 1582:MB4|00000000 1583:MB4|00000000 1584:MB4|00000000 1585:MB4|00000000 1586:MB4|00000000 1587:MB4|00000000 1588:MB4|00000000 1589:MB4|00000000 1590:MB4|00000000 1591:MB4|00000000 1592:MB4|00000000 1593:MB4|00000000 1594:MB4|00000000 1595:MB4|00000000 1596:MB4|00000000 1597:MB4|00000000 1598:MB4|00000000 1599:MB4|00000000 1600:MB4|00000000 1601:MB4|00000000 1602:MB4|00000000 1603:MB4|00000000 1604:MB4|00000000 1605:MB4|00000000 1606:MB4|00000000 1607:MB4|00000000 1608:MB4|00000000 1609:MB4|00000000 1610:MB4|00000000 1611:MB4|00000000 1612:MB4|00000000 1613:MB4|00000000 1614:MB4|00000000 1615:MB4|00000000 1616:MB4|00000000 1617:MB4|00000000 1618:MB4|00000000 1619:MB4|00000000 1620:MB4|00000000 1621:MB4|00000000 1622:MB4|00000000 1623:MB4|00000000 1624:MB4|00000000 1625:MB4|00000000 1626:MB4|00000000 1627:MB4|00000000 1628:MB4|00000000 1629:MB4|00000000 1630:MB4|00000000 1631:MB4|00000000 1632:MB4|00000000 1633:MB4|00000000 1634:MB4|00000000 1635:MB4|00000000 1636:MB4|00000000 1637:MB4|00000000 1638:MB4|00000000 1639:MB4|00000000 1640:MB4|00000000 1641:MB4|00000000 1642:MB4|00000000 1643:MB4|00000000 1644:MB4|00000000 1645:MB4|00000000 1646:MB4|00000000 1647:MB4|00000000 1648:MB4|00000000 1649:MB4|00000000 1650:MB4|00000000 1651:MB4|00000000 1652:MB4|00000000 1653:MB4|00000000 1654:MB4|00000000 1655:MB4|00000000 1656:MB4|00000000 1657:MB4|00000000 1658:MB4|00000000 1659:MB4|00000000 1660:MB4|00000000 1661:MB4|00000000 1662:MB4|00000000 1663:MB4|00000000 1664:MB4|00000000 1665:MB4|00000000 1666:MB4|00000000 1667:MB4|00000000 1668:MB4|00000000 1669:MB4|00000000 1670:MB4|00000000 1671:MB4|00000000 1672:MB4|00000000 1673:MB4|00000000 1674:MB4|00000000 1675:MB4|00000000 1676:MB4|00000000 1677:MB4|00000000 1678:MB4|00000000 1679:MB4|00000000 1680:MB4|00000000 1681:MB4|00000000 1682:MB4|00000000 1683:MB4|00000000 1684:MB4|00000000 1685:MB4|00000000 1686:MB4|00000000 1687:MB4|00000000 1688:MB4|00000000 1689:MB4|00000000 1690:MB4|00000000 1691:MB4|00000000 1692:MB4|00000000 1693:MB4|00000000 1694:MB4|00000000 1695:MB4|00000000 1696:MB4|00000000 1697:MB4|00000000 1698:MB4|00000000 1699:MB4|00000000 1700:MB4|00000000 1701:MB4|00000000 1702:MB4|00000000 1703:MB4|00000000 1704:MB4|00000000 1705:MB4|00000000 1706:MB4|00000000 1707:MB4|00000000 1708:MB4|00000000 1709:MB4|00000000 1710:MB4|00000000 1711:MB4|00000000 1712:MB4|00000000 1713:MB4|00000000 1714:MB4|00000000 1715:MB4|00000000 1716:MB4|00000000 1717:MB4|00000000 1718:MB4|00000000 1719:MB4|00000000 1720:MB4|00000000 1721:MB4|00000000 1722:MB4|00000000 1723:MB4|00000000 1724:MB4|00000000 1725:MB4|00000000 1726:MB4|00000000 1727:MB4|00000000 1728:MB4|00000000 1729:MB4|00000000 1730:MB4|00000000 1731:MB4|00000000 1732:MB4|00000000 1733:MB4|00000000 1734:MB4|00000000 1735:MB4|00000000 1736:MB4|00000000 1737:MB4|00000000 1738:MB4|00000000 1739:MB4|00000000 1740:MB4|00000000 1741:MB4|00000000 1742:MB4|00000000 1743:MB4|00000000 1744:MB4|00000000 1745:MB4|00000000 1746:MB4|00000000 1747:MB4|00000000 1748:MB4|00000000 1749:MB4|00000000 1750:MB4|00000000 1751:MB4|00000000 1752:MB4|00000000 1753:MB4|00000000 1754:MB4|00000000 1755:MB4|00000000 1756:MB4|00000000 1757:MB4|00000000 1758:MB4|00000000 1759:MB4|00000000 1760:MB4|00000000 1761:MB4|00000000 1762:MB4|00000000 1763:MB4|00000000 1764:MB4|00000000 1765:MB4|00000000 1766:MB4|00000000 1767:MB4|00000000 1768:MB4|00000000 1769:MB4|00000000 1770:MB4|00000000 1771:MB4|00000000 1772:MB4|00000000 1773:MB4|00000000 1774:MB4|00000000 1775:MB4|00000000 1776:MB4|00000000 1777:MB4|00000000 1778:MB4|00000000 1779:MB4|00000000 1780:MB4|00000000 1781:MB4|00000000 1782:MB4|00000000 1783:MB4|00000000 1784:MB4|00000000 1785:MB4|00000000 1786:MB4|00000000 1787:MB4|00000000 1788:MB4|00000000 1789:MB4|00000000 1790:MB4|00000000 1791:MB4|00000000 1792:MB4|00000000 1793:MB4|00000000 1794:MB4|00000000 1795:MB4|00000000 1796:MB4|00000000 1797:MB4|00000000 1798:MB4|00000000 1799:MB4|00000000 1800:MB4|00000000 1801:MB4|00000000 1802:MB4|00000000 1803:MB4|00000000 1804:MB4|00000000 1805:MB4|00000000 1806:MB4|00000000 1807:MB4|00000000 1808:MB4|00000000 1809:MB4|00000000 1810:MB4|00000000 1811:MB4|00000000 1812:MB4|00000000 1813:MB4|00000000 1814:MB4|00000000 1815:MB4|00000000 1816:MB4|00000000 1817:MB4|00000000 1818:MB4|00000000 1819:MB4|00000000 1820:MB4|00000000 1821:MB4|00000000 1822:MB4|00000000 1823:MB4|00000000 1824:MB4|00000000 1825:MB4|00000000 1826:MB4|00000000 1827:MB4|00000000 1828:MB4|00000000 1829:MB4|00000000 1830:MB4|00000000 1831:MB4|00000000 1832:MB4|00000000 1833:MB4|00000000 1834:MB4|00000000 1835:MB4|00000000 1836:MB4|00000000 1837:MB4|00000000 1838:MB4|00000000 1839:MB4|00000000 1840:MB4|00000000 1841:MB4|00000000 1842:MB4|00000000 1843:MB4|00000000 1844:MB4|00000000 1845:MB4|00000000 1846:MB4|00000000 1847:MB4|00000000 1848:MB4|00000000 1849:MB4|00000000 1850:MB4|00000000 1851:MB4|00000000 1852:MB4|00000000 1853:MB4|00000000 1854:MB4|00000000 1855:MB4|00000000 1856:MB4|00000000 1857:MB4|00000000 1858:MB4|00000000 1859:MB4|00000000 1860:MB4|00000000 1861:MB4|00000000 1862:MB4|00000000 1863:MB4|00000000 1864:MB4|00000000 1865:MB4|00000000 1866:MB4|00000000 1867:MB4|00000000 1868:MB4|00000000 1869:MB4|00000000 1870:MB4|00000000 1871:MB4|00000000 1872:MB4|00000000 1873:MB4|00000000 1874:MB4|00000000 1875:MB4|00000000 1876:MB4|00000000 1877:MB4|00000000 1878:MB4|00000000 1879:MB4|00000000 1880:MB4|00000000 1881:MB4|00000000 1882:MB4|00000000 1883:MB4|00000000 1884:MB4|00000000 1885:MB4|00000000 1886:MB4|00000000 1887:MB4|00000000 1888:MB4|00000000 1889:MB4|00000000 1890:MB4|00000000 1891:MB4|00000000 1892:MB4|00000000 1893:MB4|00000000 1894:MB4|00000000 1895:MB4|00000000 1896:MB4|00000000 1897:MB4|00000000 1898:MB4|00000000 1899:MB4|00000000 1900:MB4|00000000 1901:MB4|00000000 1902:MB4|00000000 1903:MB4|00000000 1904:MB4|00000000 1905:MB4|00000000 1906:MB4|00000000 1907:MB4|00000000 1908:MB4|00000000 1909:MB4|00000000 1910:MB4|00000000 1911:MB4|00000000 1912:MB4|00000000 1913:MB4|00000000 1914:MB4|00000000 1915:MB4|00000000 1916:MB4|00000000 1917:MB4|00000000 1918:MB4|00000000 1919:MB4|00000000 1920:MB4|00000000 1921:MB4|00000000 1922:MB4|00000000 1923:MB4|00000000 1924:MB4|00000000 1925:MB4|00000000 1926:MB4|00000000 1927:MB4|00000000 1928:MB4|00000000 1929:MB4|00000000 1930:MB4|00000000 1931:MB4|00000000 1932:MB4|00000000 1933:MB4|00000000 1934:MB4|00000000 1935:MB4|00000000 1936:MB4|00000000 1937:MB4|00000000 1938:MB4|00000000 1939:MB4|00000000 1940:MB4|00000000 1941:MB4|00000000 1942:MB4|00000000 1943:MB4|00000000 1944:MB4|00000000 1945:MB4|00000000 1946:MB4|00000000 1947:MB4|00000000 1948:MB4|00000000 1949:MB4|00000000 1950:MB4|00000000 1951:MB4|00000000 1952:MB4|00000000 1953:MB4|00000000 1954:MB4|00000000 1955:MB4|00000000 1956:MB4|00000000 1957:MB4|00000000 1958:MB4|00000000 1959:MB4|00000000 1960:MB4|00000000 1961:MB4|00000000 1962:MB4|00000000 1963:MB4|00000000 1964:MB4|00000000 1965:MB4|00000000 1966:MB4|00000000 1967:MB4|00000000 1968:MB4|00000000 1969:MB4|00000000 1970:MB4|00000000 1971:MB4|00000000 1972:MB4|00000000 1973:MB4|00000000 1974:MB4|00000000 1975:MB4|00000000 1976:MB4|00000000 1977:MB4|00000000 1978:MB4|00000000 1979:MB4|00000000 1980:MB4|00000000 1981:MB4|00000000 1982:MB4|00000000 1983:MB4|00000000 1984:MB4|00000000 1985:MB4|00000000 1986:MB4|00000000 1987:MB4|00000000 1988:MB4|00000000 1989:MB4|00000000 1990:MB4|00000000 1991:MB4|00000000 1992:MB4|00000000 1993:MB4|00000000 1994:MB4|00000000 1995:MB4|00000000 1996:MB4|00000000 1997:MB4|00000000 1998:MB4|00000000 1999:MB4|00000000 2000:MB4|00000000 2001:MB4|00000000 2002:MB4|00000000 2003:MB4|00000000 2004:MB4|00000000 2005:MB4|00000000 2006:MB4|00000000 2007:MB4|00000000 2008:MB4|00000000 2009:MB4|00000000 2010:MB4|00000000 2011:MB4|00000000 2012:MB4|00000000 2013:MB4|00000000 2014:MB4|00000000 2015:MB4|00000000 2016:MB4|00000000 2017:MB4|00000000 2018:MB4|00000000 2019:MB4|00000000 2020:MB4|00000000 2021:MB4|00000000 2022:MB4|00000000 2023:MB4|00000000 2024:MB4|00000000 2025:MB4|00000000 2026:MB4|00000000 2027:MB4|00000000 2028:MB4|00000000 2029:MB4|00000000 2030:MB4|00000000 2031:MB4|00000000 2032:MB4|00000000 2033:MB4|00000000 2034:MB4|00000000 2035:MB4|00000000 2036:MB4|00000000 2037:MB4|00000000 2038:MB4|00000000 2039:MB4|00000000 2040:MB4|00000000 2041:MB4|00000000 2042:MB4|00000000 2043:MB4|00000000 2044:MB4|00000000 2045:MB4|00000000 2046:MB4|00000000 2047:MB4|00000000 2048:MB4|00000000 2049:MB4|00000000 2050:MB4|00000000 2051:MB4|00000000 2052:MB4|00000000 2053:MB4|00000000 2054:MB4|00000000 2055:MB4|00000000 2056:MB4|00000000 2057:MB4|00000000 2058:MB4|00000000 2059:MB4|00000000 2060:MB4|00000000 2061:MB4|00000000 2062:MB4|00000000 2063:MB4|00000000 2064:MB4|00000000 2065:MB4|00000000 2066:MB4|00000000 2067:MB4|00000000 2068:MB4|00000000 2069:MB4|00000000 2070:MB4|00000000 2071:MB4|00000000 2072:MB4|00000000 2073:MB4|00000000 2074:MB4|00000000 2075:MB4|00000000 2076:MB4|00000000 2077:MB4|00000000 2078:MB4|00000000 2079:MB4|00000000 2080:MB4|00000000 2081:MB4|00000000 2082:MB4|00000000 2083:MB4|00000000 2084:MB4|00000000 2085:MB4|00000000 2086:MB4|00000000 2087:MB4|00000000 2088:MB4|00000000 2089:MB4|00000000 2090:MB4|00000000 2091:MB4|00000000 2092:MB4|00000000 2093:MB4|00000000 2094:MB4|00000000 2095:MB4|00000000 2096:MB4|00000000 2097:MB4|00000000 2098:MB4|00000000 2099:MB4|00000000 2100:MB4|00000000 2101:MB4|00000000 2102:MB4|00000000 2103:MB4|00000000 2104:MB4|00000000 2105:MB4|00000000 2106:MB4|00000000 2107:MB4|00000000 2108:MB4|00000000 2109:MB4|00000000 2110:MB4|00000000 2111:MB4|00000000 2112:MB4|00000000 2113:MB4|00000000 2114:MB4|00000000 2115:MB4|00000000 2116:MB4|00000000 2117:MB4|00000000 2118:MB4|00000000 2119:MB4|00000000 2120:MB4|00000000 2121:MB4|00000000 2122:MB4|00000000 2123:MB4|00000000 2124:MB4|00000000 2125:MB4|00000000 2126:MB4|00000000 2127:MB4|00000000 2128:MB4|00000000 2129:MB4|00000000 2130:MB4|00000000 2131:MB4|00000000 2132:MB4|00000000 2133:MB4|00000000 2134:MB4|00000000 2135:MB4|00000000 2136:MB4|00000000 2137:MB4|00000000 2138:MB4|00000000 2139:MB4|00000000 2140:MB4|00000000 2141:MB4|00000000 2142:MB4|00000000 2143:MB4|00000000 2144:MB4|00000000 2145:MB4|00000000 2146:MB4|00000000 2147:MB4|00000000 2148:MB4|00000000 2149:MB4|00000000 2150:MB4|00000000 2151:MB4|00000000 2152:MB4|00000000 2153:MB4|00000000 2154:MB4|00000000 2155:MB4|00000000 2156:MB4|00000000 2157:MB4|00000000 2158:MB4|00000000 2159:MB4|00000000 2160:MB4|00000000 2161:MB4|00000000 2162:MB4|00000000 2163:MB4|00000000 2164:MB4|00000000 2165:MB4|00000000 2166:MB4|00000000 2167:MB4|00000000 2168:MB4|00000000 2169:MB4|00000000 2170:MB4|00000000 2171:MB4|00000000 2172:MB4|00000000 2173:MB4|00000000 2174:MB4|00000000 2175:MB4|00000000 2176:MB4|00000000 2177:MB4|00000000 2178:MB4|00000000 2179:MB4|00000000 2180:MB4|00000000 2181:MB4|00000000 2182:MB4|00000000 2183:MB4|00000000 2184:MB4|00000000 2185:MB4|00000000 2186:MB4|00000000 2187:MB4|00000000 2188:MB4|00000000 2189:MB4|00000000 2190:MB4|00000000 2191:MB4|00000000 2192:MB4|00000000 2193:MB4|00000000 2194:MB4|00000000 2195:MB4|00000000 2196:MB4|00000000 2197:MB4|00000000 2198:MB4|00000000 2199:MB4|00000000 2200:MB4|00000000 2201:MB4|00000000 2202:MB4|00000000 2203:MB4|00000000 2204:MB4|00000000 2205:MB4|00000000 2206:MB4|00000000 2207:MB4|00000000 2208:MB4|00000000 2209:MB4|00000000 2210:MB4|00000000 2211:MB4|00000000 2212:MB4|00000000 2213:MB4|00000000 2214:MB4|00000000 2215:MB4|00000000 2216:MB4|00000000 2217:MB4|00000000 2218:MB4|00000000 2219:MB4|00000000 2220:MB4|00000000 2221:MB4|00000000 2222:MB4|00000000 2223:MB4|00000000 2224:MB4|00000000 2225:MB4|00000000 2226:MB4|00000000 2227:MB4|00000000 2228:MB4|00000000 2229:MB4|00000000 2230:MB4|00000000 2231:MB4|00000000 2232:MB4|00000000 2233:MB4|00000000 2234:MB4|00000000 2235:MB4|00000000 2236:MB4|00000000 2237:MB4|00000000 2238:MB4|00000000 2239:MB4|00000000 2240:MB4|00000000 2241:MB4|00000000 2242:MB4|00000000 2243:MB4|00000000 2244:MB4|00000000 2245:MB4|00000000 2246:MB4|00000000 2247:MB4|00000000 2248:MB4|00000000 2249:MB4|00000000 2250:MB4|00000000 2251:MB4|00000000 2252:MB4|00000000 2253:MB4|00000000 2254:MB4|00000000 2255:MB4|00000000 2256:MB4|00000000 2257:MB4|00000000 2258:MB4|00000000 2259:MB4|00000000 2260:MB4|00000000 2261:MB4|00000000 2262:MB4|00000000 2263:MB4|00000000 2264:MB4|00000000 2265:MB4|00000000 2266:MB4|00000000 2267:MB4|00000000 2268:MB4|00000000 2269:MB4|00000000 2270:MB4|00000000 2271:MB4|00000000 2272:MB4|00000000 2273:MB4|00000000 2274:MB4|00000000 2275:MB4|00000000 2276:MB4|00000000 2277:MB4|00000000 2278:MB4|00000000 2279:MB4|00000000 2280:MB4|00000000 2281:MB4|00000000 2282:MB4|00000000 2283:MB4|00000000 2284:MB4|00000000 2285:MB4|00000000 2286:MB4|00000000 2287:MB4|00000000 2288:MB4|00000000 2289:MB4|00000000 2290:MB4|00000000 2291:MB4|00000000 2292:MB4|00000000 2293:MB4|00000000 2294:MB4|00000000 2295:MB4|00000000 2296:MB4|00000000 2297:MB4|00000000 2298:MB4|00000000 2299:MB4|00000000 2300:MB4|00000000 2301:MB4|00000000 2302:MB4|00000000 2303:MB4|00000000 2304:MB4|00000000 2305:MB4|00000000 2306:MB4|00000000 2307:MB4|00000000 2308:MB4|00000000 2309:MB4|00000000 2310:MB4|00000000 2311:MB4|00000000 2312:MB4|00000000 2313:MB4|00000000 2314:MB4|00000000 2315:MB4|00000000 2316:MB4|00000000 2317:MB4|00000000 2318:MB4|00000000 2319:MB4|00000000 2320:MB4|00000000 2321:MB4|00000000 2322:MB4|00000000 2323:MB4|00000000 2324:MB4|00000000 2325:MB4|00000000 2326:MB4|00000000 2327:MB4|00000000 2328:MB4|00000000 2329:MB4|00000000 2330:MB4|00000000 2331:MB4|00000000 2332:MB4|00000000 2333:MB4|00000000 2334:MB4|00000000 2335:MB4|00000000 2336:MB4|00000000 2337:MB4|00000000 2338:MB4|00000000 2339:MB4|00000000 2340:MB4|00000000 2341:MB4|00000000 2342:MB4|00000000 2343:MB4|00000000 2344:MB4|00000000 2345:MB4|00000000 2346:MB4|00000000 2347:MB4|00000000 2348:MB4|00000000 2349:MB4|00000000 2350:MB4|00000000 2351:MB4|00000000 2352:MB4|00000000 2353:MB4|00000000 2354:MB4|00000000 2355:MB4|00000000 2356:MB4|00000000 2357:MB4|00000000 2358:MB4|00000000 2359:MB4|00000000 2360:MB4|00000000 2361:MB4|00000000 2362:MB4|00000000 2363:MB4|00000000 2364:MB4|00000000 2365:MB4|00000000 2366:MB4|00000000 2367:MB4|00000000 2368:MB4|00000000 2369:MB4|00000000 2370:MB4|00000000 2371:MB4|00000000 2372:MB4|00000000 2373:MB4|00000000 2374:MB4|00000000 2375:MB4|00000000 2376:MB4|00000000 2377:MB4|00000000 2378:MB4|00000000 2379:MB4|00000000 2380:MB4|00000000 2381:MB4|00000000 2382:MB4|00000000 2383:MB4|00000000 2384:MB4|00000000 2385:MB4|00000000 2386:MB4|00000000 2387:MB4|00000000 2388:MB4|00000000 2389:MB4|00000000 2390:MB4|00000000 2391:MB4|00000000 2392:MB4|00000000 2393:MB4|00000000 2394:MB4|00000000 2395:MB4|00000000 2396:MB4|00000000 2397:MB4|00000000 2398:MB4|00000000 2399:MB4|00000000 2400:MB4|00000000 2401:MB4|00000000 2402:MB4|00000000 2403:MB4|00000000 2404:MB4|00000000 2405:MB4|00000000 2406:MB4|00000000 2407:MB4|00000000 2408:MB4|00000000 2409:MB4|00000000 2410:MB4|00000000 2411:MB4|00000000 2412:MB4|00000000 2413:MB4|00000000 2414:MB4|00000000 2415:MB4|00000000 2416:MB4|00000000 2417:MB4|00000000 2418:MB4|00000000 2419:MB4|00000000 2420:MB4|00000000 2421:MB4|00000000 2422:MB4|00000000 2423:MB4|00000000 2424:MB4|00000000 2425:MB4|00000000 2426:MB4|00000000 2427:MB4|00000000 2428:MB4|00000000 2429:MB4|00000000 2430:MB4|00000000 2431:MB4|00000000 2432:MB4|00000000 2433:MB4|00000000 2434:MB4|00000000 2435:MB4|00000000 2436:MB4|00000000 2437:MB4|00000000 2438:MB4|00000000 2439:MB4|00000000 2440:MB4|00000000 2441:MB4|00000000 2442:MB4|00000000 2443:MB4|00000000 2444:MB4|00000000 2445:MB4|00000000 2446:MB4|00000000 2447:MB4|00000000 2448:MB4|00000000 2449:MB4|00000000 2450:MB4|00000000 2451:MB4|00000000 2452:MB4|00000000 2453:MB4|00000000 2454:MB4|00000000 2455:MB4|00000000 2456:MB4|00000000 2457:MB4|00000000 2458:MB4|00000000 2459:MB4|00000000 2460:MB4|00000000 2461:MB4|00000000 2462:MB4|00000000 2463:MB4|00000000 2464:MB4|00000000 2465:MB4|00000000 2466:MB4|00000000 2467:MB4|00000000 2468:MB4|00000000 2469:MB4|00000000 2470:MB4|00000000 2471:MB4|00000000 2472:MB4|00000000 2473:MB4|00000000 2474:MB4|00000000 2475:MB4|00000000 2476:MB4|00000000 2477:MB4|00000000 2478:MB4|00000000 2479:MB4|00000000 2480:MB4|00000000 2481:MB4|00000000 2482:MB4|00000000 2483:MB4|00000000 2484:MB4|00000000 2485:MB4|00000000 2486:MB4|00000000 2487:MB4|00000000 2488:MB4|00000000 2489:MB4|00000000 2490:MB4|00000000 2491:MB4|00000000 2492:MB4|00000000 2493:MB4|00000000 2494:MB4|00000000 2495:MB4|00000000 2496:MB4|00000000 2497:MB4|00000000 2498:MB4|00000000 2499:MB4|00000000 2500:MB4|00000000 2501:MB4|00000000 2502:MB4|00000000 2503:MB4|00000000 2504:MB4|00000000 2505:MB4|00000000 2506:MB4|00000000 2507:MB4|00000000 2508:MB4|00000000 2509:MB4|00000000 2510:MB4|00000000 2511:MB4|00000000 2512:MB4|00000000 2513:MB4|00000000 2514:MB4|00000000 2515:MB4|00000000 2516:MB4|00000000 2517:MB4|00000000 2518:MB4|00000000 2519:MB4|00000000 2520:MB4|00000000 2521:MB4|00000000 2522:MB4|00000000 2523:MB4|00000000 2524:MB4|00000000 2525:MB4|00000000 2526:MB4|00000000 2527:MB4|00000000 2528:MB4|00000000 2529:MB4|00000000 2530:MB4|00000000 2531:MB4|00000000 2532:MB4|00000000 2533:MB4|00000000 2534:MB4|00000000 2535:MB4|00000000 2536:MB4|00000000 2537:MB4|00000000 2538:MB4|00000000 2539:MB4|00000000 2540:MB4|00000000 2541:MB4|00000000 2542:MB4|00000000 2543:MB4|00000000 2544:MB4|00000000 2545:MB4|00000000 2546:MB4|00000000 2547:MB4|00000000 2548:MB4|00000000 2549:MB4|00000000 2550:MB4|00000000 2551:MB4|00000000 2552:MB4|00000000 2553:MB4|00000000 2554:MB4|00000000 2555:MB4|00000000 2556:MB4|00000000 2557:MB4|00000000 2558:MB4|00000000 2559:MB4|00000000 2560:MB4|00000000 2561:MB4|00000000 2562:MB4|00000000 2563:MB4|00000000 2564:MB4|00000000 2565:MB4|00000000 2566:MB4|00000000 2567:MB4|00000000 2568:MB4|00000000 2569:MB4|00000000 2570:MB4|00000000 2571:MB4|00000000 2572:MB4|00000000 2573:MB4|00000000 2574:MB4|00000000 2575:MB4|00000000 2576:MB4|00000000 2577:MB4|00000000 2578:MB4|00000000 2579:MB4|00000000 2580:MB4|00000000 2581:MB4|00000000 2582:MB4|00000000 2583:MB4|00000000 2584:MB4|00000000 2585:MB4|00000000 2586:MB4|00000000 2587:MB4|00000000 2588:MB4|00000000 2589:MB4|00000000 2590:MB4|00000000 2591:MB4|00000000 2592:MB4|00000000 2593:MB4|00000000 2594:MB4|00000000 2595:MB4|00000000 2596:MB4|00000000 2597:MB4|00000000 2598:MB4|00000000 2599:MB4|00000000 2600:MB4|00000000 2601:MB4|00000000 2602:MB4|00000000 2603:MB4|00000000 2604:MB4|00000000 2605:MB4|00000000 2606:MB4|00000000 2607:MB4|00000000 2608:MB4|00000000 2609:MB4|00000000 2610:MB4|00000000 2611:MB4|00000000 2612:MB4|00000000 2613:MB4|00000000 2614:MB4|00000000 2615:MB4|00000000 2616:MB4|00000000 2617:MB4|00000000 2618:MB4|00000000 2619:MB4|00000000 2620:MB4|00000000 2621:MB4|00000000 2622:MB4|00000000 2623:MB4|00000000 2624:MB4|00000000 2625:MB4|00000000 2626:MB4|00000000 2627:MB4|00000000 2628:MB4|00000000 2629:MB4|00000000 2630:MB4|00000000 2631:MB4|00000000 2632:MB4|00000000 2633:MB4|00000000 2634:MB4|00000000 2635:MB4|00000000 2636:MB4|00000000 2637:MB4|00000000 2638:MB4|00000000 2639:MB4|00000000 2640:MB4|00000000 2641:MB4|00000000 2642:MB4|00000000 2643:MB4|00000000 2644:MB4|00000000 2645:MB4|00000000 2646:MB4|00000000 2647:MB4|00000000 2648:MB4|00000000 2649:MB4|00000000 2650:MB4|00000000 2651:MB4|00000000 2652:MB4|00000000 2653:MB4|00000000 2654:MB4|00000000 2655:MB4|00000000 2656:MB4|00000000 2657:MB4|00000000 2658:MB4|00000000 2659:MB4|00000000 2660:MB4|00000000 2661:MB4|00000000 2662:MB4|00000000 2663:MB4|00000000 2664:MB4|00000000 2665:MB4|00000000 2666:MB4|00000000 2667:MB4|00000000 2668:MB4|00000000 2669:MB4|00000000 2670:MB4|00000000 2671:MB4|00000000 2672:MB4|00000000 2673:MB4|00000000 2674:MB4|00000000 2675:MB4|00000000 2676:MB4|00000000 2677:MB4|00000000 2678:MB4|00000000 2679:MB4|00000000 2680:MB4|00000000 2681:MB4|00000000 2682:MB4|00000000 2683:MB4|00000000 2684:MB4|00000000 2685:MB4|00000000 2686:MB4|00000000 2687:MB4|00000000 2688:MB4|00000000 2689:MB4|00000000 2690:MB4|00000000 2691:MB4|00000000 2692:MB4|00000000 2693:MB4|00000000 2694:MB4|00000000 2695:MB4|00000000 2696:MB4|00000000 2697:MB4|00000000 2698:MB4|00000000 2699:MB4|00000000 2700:MB4|00000000 2701:MB4|00000000 2702:MB4|00000000 2703:MB4|00000000 2704:MB4|00000000 2705:MB4|00000000 2706:MB4|00000000 2707:MB4|00000000 2708:MB4|00000000 2709:MB4|00000000 2710:MB4|00000000 2711:MB4|00000000 2712:MB4|00000000 2713:MB4|00000000 2714:MB4|00000000 2715:MB4|00000000 2716:MB4|00000000 2717:MB4|00000000 2718:MB4|00000000 2719:MB4|00000000 2720:MB4|00000000 2721:MB4|00000000 2722:MB4|00000000 2723:MB4|00000000 2724:MB4|00000000 2725:MB4|00000000 2726:MB4|00000000 2727:MB4|00000000 2728:MB4|00000000 2729:MB4|00000000 2730:MB4|00000000 2731:MB4|00000000 2732:MB4|00000000 2733:MB4|00000000 2734:MB4|00000000 2735:MB4|00000000 2736:MB4|00000000 2737:MB4|00000000 2738:MB4|00000000 2739:MB4|00000000 2740:MB4|00000000 2741:MB4|00000000 2742:MB4|00000000 2743:MB4|00000000 2744:MB4|00000000 2745:MB4|00000000 2746:MB4|00000000 2747:MB4|00000000 2748:MB4|00000000 2749:MB4|00000000 2750:MB4|00000000 2751:MB4|00000000 2752:MB4|00000000 2753:MB4|00000000 2754:MB4|00000000 2755:MB4|00000000 2756:MB4|00000000 2757:MB4|00000000 2758:MB4|00000000 2759:MB4|00000000 2760:MB4|00000000 2761:MB4|00000000 2762:MB4|00000000 2763:MB4|00000000 2764:MB4|00000000 2765:MB4|00000000 2766:MB4|00000000 2767:MB4|00000000 2768:MB4|00000000 2769:MB4|00000000 2770:MB4|00000000 2771:MB4|00000000 2772:MB4|00000000 2773:MB4|00000000 2774:MB4|00000000 2775:MB4|00000000 2776:MB4|00000000 2777:MB4|00000000 2778:MB4|00000000 2779:MB4|00000000 2780:MB4|00000000 2781:MB4|00000000 2782:MB4|00000000 2783:MB4|00000000 2784:MB4|00000000 2785:MB4|00000000 2786:MB4|00000000 2787:MB4|00000000 2788:MB4|00000000 2789:MB4|00000000 2790:MB4|00000000 2791:MB4|00000000 2792:MB4|00000000 2793:MB4|00000000 2794:MB4|00000000 2795:MB4|00000000 2796:MB4|00000000 2797:MB4|00000000 2798:MB4|00000000 2799:MB4|00000000 2800:MB4|00000000 2801:MB4|00000000 2802:MB4|00000000 2803:MB4|00000000 2804:MB4|00000000 2805:MB4|00000000 2806:MB4|00000000 2807:MB4|00000000 2808:MB4|00000000 2809:MB4|00000000 2810:MB4|00000000 2811:MB4|00000000 2812:MB4|00000000 2813:MB4|00000000 2814:MB4|00000000 2815:MB4|00000000 2816:MB4|00000000 2817:MB4|00000000 2818:MB4|00000000 2819:MB4|00000000 2820:MB4|00000000 2821:MB4|00000000 2822:MB4|00000000 2823:MB4|00000000 2824:MB4|00000000 2825:MB4|00000000 2826:MB4|00000000 2827:MB4|00000000 2828:MB4|00000000 2829:MB4|00000000 2830:MB4|00000000 2831:MB4|00000000 2832:MB4|00000000 2833:MB4|00000000 2834:MB4|00000000 2835:MB4|00000000 2836:MB4|00000000 2837:MB4|00000000 2838:MB4|00000000 2839:MB4|00000000 2840:MB4|00000000 2841:MB4|00000000 2842:MB4|00000000 2843:MB4|00000000 2844:MB4|00000000 2845:MB4|00000000 2846:MB4|00000000 2847:MB4|00000000 2848:MB4|00000000 2849:MB4|00000000 2850:MB4|00000000 2851:MB4|00000000 2852:MB4|00000000 2853:MB4|00000000 2854:MB4|00000000 2855:MB4|00000000 2856:MB4|00000000 2857:MB4|00000000 2858:MB4|00000000 2859:MB4|00000000 2860:MB4|00000000 2861:MB4|00000000 2862:MB4|00000000 2863:MB4|00000000 2864:MB4|00000000 2865:MB4|00000000 2866:MB4|00000000 2867:MB4|00000000 2868:MB4|00000000 2869:MB4|00000000 2870:MB4|00000000 2871:MB4|00000000 2872:MB4|00000000 2873:MB4|00000000 2874:MB4|00000000 2875:MB4|00000000 2876:MB4|00000000 2877:MB4|00000000 2878:MB4|00000000 2879:MB4|00000000 2880:MB4|00000000 2881:MB4|00000000 2882:MB4|00000000 2883:MB4|00000000 2884:MB4|00000000 2885:MB4|00000000 2886:MB4|00000000 2887:MB4|00000000 2888:MB4|00000000 2889:MB4|00000000 2890:MB4|00000000 2891:MB4|00000000 2892:MB4|00000000 2893:MB4|00000000 2894:MB4|00000000 2895:MB4|00000000 2896:MB4|00000000 2897:MB4|00000000 2898:MB4|00000000 2899:MB4|00000000 2900:MB4|00000000 2901:MB4|00000000 2902:MB4|00000000 2903:MB4|00000000 2904:MB4|00000000 2905:MB4|00000000 2906:MB4|00000000 2907:MB4|00000000 2908:MB4|00000000 2909:MB4|00000000 2910:MB4|00000000 2911:MB4|00000000 2912:MB4|00000000 2913:MB4|00000000 2914:MB4|00000000 2915:MB4|00000000 2916:MB4|00000000 2917:MB4|00000000 2918:MB4|00000000 2919:MB4|00000000 2920:MB4|00000000 2921:MB4|00000000 2922:MB4|00000000 2923:MB4|00000000 2924:MB4|00000000 2925:MB4|00000000 2926:MB4|00000000 2927:MB4|00000000 2928:MB4|00000000 2929:MB4|00000000 2930:MB4|00000000 2931:MB4|00000000 2932:MB4|00000000 2933:MB4|00000000 2934:MB4|00000000 2935:MB4|00000000 2936:MB4|00000000 2937:MB4|00000000 2938:MB4|00000000 2939:MB4|00000000 2940:MB4|00000000 2941:MB4|00000000 2942:MB4|00000000 2943:MB4|00000000 2944:MB4|00000000 2945:MB4|00000000 2946:MB4|00000000 2947:MB4|00000000 2948:MB4|00000000 2949:MB4|00000000 2950:MB4|00000000 2951:MB4|00000000 2952:MB4|00000000 2953:MB4|00000000 2954:MB4|00000000 2955:MB4|00000000 2956:MB4|00000000 2957:MB4|00000000 2958:MB4|00000000 2959:MB4|00000000 2960:MB4|00000000 2961:MB4|00000000 2962:MB4|00000000 2963:MB4|00000000 2964:MB4|00000000 2965:MB4|00000000 2966:MB4|00000000 2967:MB4|00000000 2968:MB4|00000000 2969:MB4|00000000 2970:MB4|00000000 2971:MB4|00000000 2972:MB4|00000000 2973:MB4|00000000 2974:MB4|00000000 2975:MB4|00000000 2976:MB4|00000000 2977:MB4|00000000 2978:MB4|00000000 2979:MB4|00000000 2980:MB4|00000000 2981:MB4|00000000 2982:MB4|00000000 2983:MB4|00000000 2984:MB4|00000000 2985:MB4|00000000 2986:MB4|00000000 2987:MB4|00000000 2988:MB4|00000000 2989:MB4|00000000 2990:MB4|00000000 2991:MB4|00000000 2992:MB4|00000000 2993:MB4|00000000 2994:MB4|00000000 2995:MB4|00000000 2996:MB4|00000000 2997:MB4|00000000 2998:MB4|00000000 2999:MB4|00000000 3000:MB4|00000000 3001:MB4|00000000 3002:MB4|00000000 3003:MB4|00000000 3004:MB4|00000000 3005:MB4|00000000 3006:MB4|00000000 3007:MB4|00000000 3008:MB4|00000000 3009:MB4|00000000 3010:MB4|00000000 3011:MB4|00000000 3012:MB4|00000000 3013:MB4|00000000 3014:MB4|00000000 3015:MB4|00000000 3016:MB4|00000000 3017:MB4|00000000 3018:MB4|00000000 3019:MB4|00000000 3020:MB4|00000000 3021:MB4|00000000 3022:MB4|00000000 3023:MB4|00000000 3024:MB4|00000000 3025:MB4|00000000 3026:MB4|00000000 3027:MB4|00000000 3028:MB4|00000000 3029:MB4|00000000 3030:MB4|00000000 3031:MB4|00000000 3032:MB4|00000000 3033:MB4|00000000 3034:MB4|00000000 3035:MB4|00000000 3036:MB4|00000000 3037:MB4|00000000 3038:MB4|00000000 3039:MB4|00000000 3040:MB4|00000000 3041:MB4|00000000 3042:MB4|00000000 3043:MB4|00000000 3044:MB4|00000000 3045:MB4|00000000 3046:MB4|00000000 3047:MB4|00000000 3048:MB4|00000000 3049:MB4|00000000 3050:MB4|00000000 3051:MB4|00000000 3052:MB4|00000000 3053:MB4|00000000 3054:MB4|00000000 3055:MB4|00000000 3056:MB4|00000000 3057:MB4|00000000 3058:MB4|00000000 3059:MB4|00000000 3060:MB4|00000000 3061:MB4|00000000 3062:MB4|00000000 3063:MB4|00000000 3064:MB4|00000000 3065:MB4|00000000 3066:MB4|00000000 3067:MB4|00000000 3068:MB4|00000000 3069:MB4|00000000 3070:MB4|00000000 3071:MB4|00000000 3072:MB4|00000000 3073:MB4|00000000 3074:MB4|00000000 3075:MB4|00000000 3076:MB4|00000000 3077:MB4|00000000 3078:MB4|00000000 3079:MB4|00000000 3080:MB4|00000000 3081:MB4|00000000 3082:MB4|00000000 3083:MB4|00000000 3084:MB4|00000000 3085:MB4|00000000 3086:MB4|00000000 3087:MB4|00000000 3088:MB4|00000000 3089:MB4|00000000 3090:MB4|00000000 3091:MB4|00000000 3092:MB4|00000000 3093:MB4|00000000 3094:MB4|00000000 3095:MB4|00000000 3096:MB4|00000000 3097:MB4|00000000 3098:MB4|00000000 3099:MB4|00000000 3100:MB4|00000000 3101:MB4|00000000 3102:MB4|00000000 3103:MB4|00000000 3104:MB4|00000000 3105:MB4|00000000 3106:MB4|00000000 3107:MB4|00000000 3108:MB4|00000000 3109:MB4|00000000 3110:MB4|00000000 3111:MB4|00000000 3112:MB4|00000000 3113:MB4|00000000 3114:MB4|00000000 3115:MB4|00000000 3116:MB4|00000000 3117:MB4|00000000 3118:MB4|00000000 3119:MB4|00000000 3120:MB4|00000000 3121:MB4|00000000 3122:MB4|00000000 3123:MB4|00000000 3124:MB4|00000000 3125:MB4|00000000 3126:MB4|00000000 3127:MB4|00000000 3128:MB4|00000000 3129:MB4|00000000 3130:MB4|00000000 3131:MB4|00000000 3132:MB4|00000000 3133:MB4|00000000 3134:MB4|00000000 3135:MB4|00000000 3136:MB4|00000000 3137:MB4|00000000 3138:MB4|00000000 3139:MB4|00000000 3140:MB4|00000000 3141:MB4|00000000 3142:MB4|00000000 3143:MB4|00000000 3144:MB4|00000000 3145:MB4|00000000 3146:MB4|00000000 3147:MB4|00000000 3148:MB4|00000000 3149:MB4|00000000 3150:MB4|00000000 3151:MB4|00000000 3152:MB4|00000000 3153:MB4|00000000 3154:MB4|00000000 3155:MB4|00000000 3156:MB4|00000000 3157:MB4|00000000 3158:MB4|00000000 3159:MB4|00000000 3160:MB4|00000000 3161:MB4|00000000 3162:MB4|00000000 3163:MB4|00000000 3164:MB4|00000000 3165:MB4|00000000 3166:MB4|00000000 3167:MB4|00000000 3168:MB4|00000000 3169:MB4|00000000 3170:MB4|00000000 3171:MB4|00000000 3172:MB4|00000000 3173:MB4|00000000 3174:MB4|00000000 3175:MB4|00000000 3176:MB4|00000000 3177:MB4|00000000 3178:MB4|00000000 3179:MB4|00000000 3180:MB4|00000000 3181:MB4|00000000 3182:MB4|00000000 3183:MB4|00000000 3184:MB4|00000000 3185:MB4|00000000 3186:MB4|00000000 3187:MB4|00000000 3188:MB4|00000000 3189:MB4|00000000 3190:MB4|00000000 3191:MB4|00000000 3192:MB4|00000000 3193:MB4|00000000 3194:MB4|00000000 3195:MB4|00000000 3196:MB4|00000000 3197:MB4|00000000 3198:MB4|00000000 3199:MB4|00000000 3200:MB4|00000000 3201:MB4|00000000 3202:MB4|00000000 3203:MB4|00000000 3204:MB4|00000000 3205:MB4|00000000 3206:MB4|00000000 3207:MB4|00000000 3208:MB4|00000000 3209:MB4|00000000 3210:MB4|00000000 3211:MB4|00000000 3212:MB4|00000000 3213:MB4|00000000 3214:MB4|00000000 3215:MB4|00000000 3216:MB4|00000000 3217:MB4|00000000 3218:MB4|00000000 3219:MB4|00000000 3220:MB4|00000000 3221:MB4|00000000 3222:MB4|00000000 3223:MB4|00000000 3224:MB4|00000000 3225:MB4|00000000 3226:MB4|00000000 3227:MB4|00000000 3228:MB4|00000000 3229:MB4|00000000 3230:MB4|00000000 3231:MB4|00000000 3232:MB4|00000000 3233:MB4|00000000 3234:MB4|00000000 3235:MB4|00000000 3236:MB4|00000000 3237:MB4|00000000 3238:MB4|00000000 3239:MB4|00000000 3240:MB4|00000000 3241:MB4|00000000 3242:MB4|00000000 3243:MB4|00000000 3244:MB4|00000000 3245:MB4|00000000 3246:MB4|00000000 3247:MB4|00000000 3248:MB4|00000000 3249:MB4|00000000 3250:MB4|00000000 3251:MB4|00000000 3252:MB4|00000000 3253:MB4|00000000 3254:MB4|00000000 3255:MB4|00000000 3256:MB4|00000000 3257:MB4|00000000 3258:MB4|00000000 3259:MB4|00000000 3260:MB4|00000000 3261:MB4|00000000 3262:MB4|00000000 3263:MB4|00000000 3264:MB4|00000000 3265:MB4|00000000 3266:MB4|00000000 3267:MB4|00000000 3268:MB4|00000000 3269:MB4|00000000 3270:MB4|00000000 3271:MB4|00000000 3272:MB4|00000000 3273:MB4|00000000 3274:MB4|00000000 3275:MB4|00000000 3276:MB4|00000000 3277:MB4|00000000 3278:MB4|00000000 3279:MB4|00000000 3280:MB4|00000000 3281:MB4|00000000 3282:MB4|00000000 3283:MB4|00000000 3284:MB4|00000000 3285:MB4|00000000 3286:MB4|00000000 3287:MB4|00000000 3288:MB4|00000000 3289:MB4|00000000 3290:MB4|00000000 3291:MB4|00000000 3292:MB4|00000000 3293:MB4|00000000 3294:MB4|00000000 3295:MB4|00000000 3296:MB4|00000000 3297:MB4|00000000 3298:MB4|00000000 3299:MB4|00000000 3300:MB4|00000000 3301:MB4|00000000 3302:MB4|00000000 3303:MB4|00000000 3304:MB4|00000000 3305:MB4|00000000 3306:MB4|00000000 3307:MB4|00000000 3308:MB4|00000000 3309:MB4|00000000 3310:MB4|00000000 3311:MB4|00000000 3312:MB4|00000000 3313:MB4|00000000 3314:MB4|00000000 3315:MB4|00000000 3316:MB4|00000000 3317:MB4|00000000 3318:MB4|00000000 3319:MB4|00000000 3320:MB4|00000000 3321:MB4|00000000 3322:MB4|00000000 3323:MB4|00000000 3324:MB4|00000000 3325:MB4|00000000 3326:MB4|00000000 3327:MB4|00000000 3328:MB4|00000000 3329:MB4|00000000 3330:MB4|00000000 3331:MB4|00000000 3332:MB4|00000000 3333:MB4|00000000 3334:MB4|00000000 3335:MB4|00000000 3336:MB4|00000000 3337:MB4|00000000 3338:MB4|00000000 3339:MB4|00000000 3340:MB4|00000000 3341:MB4|00000000 3342:MB4|00000000 3343:MB4|00000000 3344:MB4|00000000 3345:MB4|00000000 3346:MB4|00000000 3347:MB4|00000000 3348:MB4|00000000 3349:MB4|00000000 3350:MB4|00000000 3351:MB4|00000000 3352:MB4|00000000 3353:MB4|00000000 3354:MB4|00000000 3355:MB4|00000000 3356:MB4|00000000 3357:MB4|00000000 3358:MB4|00000000 3359:MB4|00000000 3360:MB4|00000000 3361:MB4|00000000 3362:MB4|00000000 3363:MB4|00000000 3364:MB4|00000000 3365:MB4|00000000 3366:MB4|00000000 3367:MB4|00000000 3368:MB4|00000000 3369:MB4|00000000 3370:MB4|00000000 3371:MB4|00000000 3372:MB4|00000000 3373:MB4|00000000 3374:MB4|00000000 3375:MB4|00000000 3376:MB4|00000000 3377:MB4|00000000 3378:MB4|00000000 3379:MB4|00000000 3380:MB4|00000000 3381:MB4|00000000 3382:MB4|00000000 3383:MB4|00000000 3384:MB4|00000000 3385:MB4|00000000 3386:MB4|00000000 3387:MB4|00000000 3388:MB4|00000000 3389:MB4|00000000 3390:MB4|00000000 3391:MB4|00000000 3392:MB4|00000000 3393:MB4|00000000 3394:MB4|00000000 3395:MB4|00000000 3396:MB4|00000000 3397:MB4|00000000 3398:MB4|00000000 3399:MB4|00000000 3400:MB4|00000000 3401:MB4|00000000 3402:MB4|00000000 3403:MB4|00000000 3404:MB4|00000000 3405:MB4|00000000 3406:MB4|00000000 3407:MB4|00000000 3408:MB4|00000000 3409:MB4|00000000 3410:MB4|00000000 3411:MB4|00000000 3412:MB4|00000000 3413:MB4|00000000 3414:MB4|00000000 3415:MB4|00000000 3416:MB4|00000000 3417:MB4|00000000 3418:MB4|00000000 3419:MB4|00000000 3420:MB4|00000000 3421:MB4|00000000 3422:MB4|00000000 3423:MB4|00000000 3424:MB4|00000000 3425:MB4|00000000 3426:MB4|00000000 3427:MB4|00000000 3428:MB4|00000000 3429:MB4|00000000 3430:MB4|00000000 3431:MB4|00000000 3432:MB4|00000000 3433:MB4|00000000 3434:MB4|00000000 3435:MB4|00000000 3436:MB4|00000000 3437:MB4|00000000 3438:MB4|00000000 3439:MB4|00000000 3440:MB4|00000000 3441:MB4|00000000 3442:MB4|00000000 3443:MB4|00000000 3444:MB4|00000000 3445:MB4|00000000 3446:MB4|00000000 3447:MB4|00000000 3448:MB4|00000000 3449:MB4|00000000 3450:MB4|00000000 3451:MB4|00000000 3452:MB4|00000000 3453:MB4|00000000 3454:MB4|00000000 3455:MB4|00000000 3456:MB4|00000000 3457:MB4|00000000 3458:MB4|00000000 3459:MB4|00000000 3460:MB4|00000000 3461:MB4|00000000 3462:MB4|00000000 3463:MB4|00000000 3464:MB4|00000000 3465:MB4|00000000 3466:MB4|00000000 3467:MB4|00000000 3468:MB4|00000000 3469:MB4|00000000 3470:MB4|00000000 3471:MB4|00000000 3472:MB4|00000000 3473:MB4|00000000 3474:MB4|00000000 3475:MB4|00000000 3476:MB4|00000000 3477:MB4|00000000 3478:MB4|00000000 3479:MB4|00000000 3480:MB4|00000000 3481:MB4|00000000 3482:MB4|00000000 3483:MB4|00000000 3484:MB4|00000000 3485:MB4|00000000 3486:MB4|00000000 3487:MB4|00000000 3488:MB4|00000000 3489:MB4|00000000 3490:MB4|00000000 3491:MB4|00000000 3492:MB4|00000000 3493:MB4|00000000 3494:MB4|00000000 3495:MB4|00000000 3496:MB4|00000000 3497:MB4|00000000 3498:MB4|00000000 3499:MB4|00000000 3500:MB4|00000000 3501:MB4|00000000 3502:MB4|00000000 3503:MB4|00000000 3504:MB4|00000000 3505:MB4|00000000 3506:MB4|00000000 3507:MB4|00000000 3508:MB4|00000000 3509:MB4|00000000 3510:MB4|00000000 3511:MB4|00000000 3512:MB4|00000000 3513:MB4|00000000 3514:MB4|00000000 3515:MB4|00000000 3516:MB4|00000000 3517:MB4|00000000 3518:MB4|00000000 3519:MB4|00000000 3520:MB4|00000000 3521:MB4|00000000 3522:MB4|00000000 3523:MB4|00000000 3524:MB4|00000000 3525:MB4|00000000 3526:MB4|00000000 3527:MB4|00000000 3528:MB4|00000000 3529:MB4|00000000 3530:MB4|00000000 3531:MB4|00000000 3532:MB4|00000000 3533:MB4|00000000 3534:MB4|00000000 3535:MB4|00000000 3536:MB4|00000000 3537:MB4|00000000 3538:MB4|00000000 3539:MB4|00000000 3540:MB4|00000000 3541:MB4|00000000 3542:MB4|00000000 3543:MB4|00000000 3544:MB4|00000000 3545:MB4|00000000 3546:MB4|00000000 3547:MB4|00000000 3548:MB4|00000000 3549:MB4|00000000 3550:MB4|00000000 3551:MB4|00000000 3552:MB4|00000000 3553:MB4|00000000 3554:MB4|00000000 3555:MB4|00000000 3556:MB4|00000000 3557:MB4|00000000 3558:MB4|00000000 3559:MB4|00000000 3560:MB4|00000000 3561:MB4|00000000 3562:MB4|00000000 3563:MB4|00000000 3564:MB4|00000000 3565:MB4|00000000 3566:MB4|00000000 3567:MB4|00000000 3568:MB4|00000000 3569:MB4|00000000 3570:MB4|00000000 3571:MB4|00000000 3572:MB4|00000000 3573:MB4|00000000 3574:MB4|00000000 3575:MB4|00000000 3576:MB4|00000000 3577:MB4|00000000 3578:MB4|00000000 3579:MB4|00000000 3580:MB4|00000000 3581:MB4|00000000 3582:MB4|00000000 3583:MB4|00000000 3584:MB4|00000000 3585:MB4|00000000 3586:MB4|00000000 3587:MB4|00000000 3588:MB4|00000000 3589:MB4|00000000 3590:MB4|00000000 3591:MB4|00000000 3592:MB4|00000000 3593:MB4|00000000 3594:MB4|00000000 3595:MB4|00000000 3596:MB4|00000000 3597:MB4|00000000 3598:MB4|00000000 3599:MB4|00000000 3600:MB4|00000000 3601:MB4|00000000 3602:MB4|00000000 3603:MB4|00000000 3604:MB4|00000000 3605:MB4|00000000 3606:MB4|00000000 3607:MB4|00000000 3608:MB4|00000000 3609:MB4|00000000 3610:MB4|00000000 3611:MB4|00000000 3612:MB4|00000000 3613:MB4|00000000 3614:MB4|00000000 3615:MB4|00000000 3616:MB4|00000000 3617:MB4|00000000 3618:MB4|00000000 3619:MB4|00000000 3620:MB4|00000000 3621:MB4|00000000 3622:MB4|00000000 3623:MB4|00000000 3624:MB4|00000000 3625:MB4|00000000 3626:MB4|00000000 3627:MB4|00000000 3628:MB4|00000000 3629:MB4|00000000 3630:MB4|00000000 3631:MB4|00000000 3632:MB4|00000000 3633:MB4|00000000 3634:MB4|00000000 3635:MB4|00000000 3636:MB4|00000000 3637:MB4|00000000 3638:MB4|00000000 3639:MB4|00000000 3640:MB4|00000000 3641:MB4|00000000 3642:MB4|00000000 3643:MB4|00000000 3644:MB4|00000000 3645:MB4|00000000 3646:MB4|00000000 3647:MB4|00000000 3648:MB4|00000000 3649:MB4|00000000 3650:MB4|00000000 3651:MB4|00000000 3652:MB4|00000000 3653:MB4|00000000 3654:MB4|00000000 3655:MB4|00000000 3656:MB4|00000000 3657:MB4|00000000 3658:MB4|00000000 3659:MB4|00000000 3660:MB4|00000000 3661:MB4|00000000 3662:MB4|00000000 3663:MB4|00000000 3664:MB4|00000000 3665:MB4|00000000 3666:MB4|00000000 3667:MB4|00000000 3668:MB4|00000000 3669:MB4|00000000 3670:MB4|00000000 3671:MB4|00000000 3672:MB4|00000000 3673:MB4|00000000 3674:MB4|00000000 3675:MB4|00000000 3676:MB4|00000000 3677:MB4|00000000 3678:MB4|00000000 3679:MB4|00000000 3680:MB4|00000000 3681:MB4|00000000 3682:MB4|00000000 3683:MB4|00000000 3684:MB4|00000000 3685:MB4|00000000 3686:MB4|00000000 3687:MB4|00000000 3688:MB4|00000000 3689:MB4|00000000 3690:MB4|00000000 3691:MB4|00000000 3692:MB4|00000000 3693:MB4|00000000 3694:MB4|00000000 3695:MB4|00000000 3696:MB4|00000000 3697:MB4|00000000 3698:MB4|00000000 3699:MB4|00000000 3700:MB4|00000000 3701:MB4|00000000 3702:MB4|00000000 3703:MB4|00000000 3704:MB4|00000000 3705:MB4|00000000 3706:MB4|00000000 3707:MB4|00000000 3708:MB4|00000000 3709:MB4|00000000 3710:MB4|00000000 3711:MB4|00000000 3712:MB4|00000000 3713:MB4|00000000 3714:MB4|00000000 3715:MB4|00000000 3716:MB4|00000000 3717:MB4|00000000 3718:MB4|00000000 3719:MB4|00000000 3720:MB4|00000000 3721:MB4|00000000 3722:MB4|00000000 3723:MB4|00000000 3724:MB4|00000000 3725:MB4|00000000 3726:MB4|00000000 3727:MB4|00000000 3728:MB4|00000000 3729:MB4|00000000 3730:MB4|00000000 3731:MB4|00000000 3732:MB4|00000000 3733:MB4|00000000 3734:MB4|00000000 3735:MB4|00000000 3736:MB4|00000000 3737:MB4|00000000 3738:MB4|00000000 3739:MB4|00000000 3740:MB4|00000000 3741:MB4|00000000 3742:MB4|00000000 3743:MB4|00000000 3744:MB4|00000000 3745:MB4|00000000 3746:MB4|00000000 3747:MB4|00000000 3748:MB4|00000000 3749:MB4|00000000 3750:MB4|00000000 3751:MB4|00000000 3752:MB4|00000000 3753:MB4|00000000 3754:MB4|00000000 3755:MB4|00000000 3756:MB4|00000000 3757:MB4|00000000 3758:MB4|00000000 3759:MB4|00000000 3760:MB4|00000000 3761:MB4|00000000 3762:MB4|00000000 3763:MB4|00000000 3764:MB4|00000000 3765:MB4|00000000 3766:MB4|00000000 3767:MB4|00000000 3768:MB4|00000000 3769:MB4|00000000 3770:MB4|00000000 3771:MB4|00000000 3772:MB4|00000000 3773:MB4|00000000 3774:MB4|00000000 3775:MB4|00000000 3776:MB4|00000000 3777:MB4|00000000 3778:MB4|00000000 3779:MB4|00000000 3780:MB4|00000000 3781:MB4|00000000 3782:MB4|00000000 3783:MB4|00000000 3784:MB4|00000000 3785:MB4|00000000 3786:MB4|00000000 3787:MB4|00000000 3788:MB4|00000000 3789:MB4|00000000 3790:MB4|00000000 3791:MB4|00000000 3792:MB4|00000000 3793:MB4|00000000 3794:MB4|00000000 3795:MB4|00000000 3796:MB4|00000000 3797:MB4|00000000 3798:MB4|00000000 3799:MB4|00000000 3800:MB4|00000000 3801:MB4|00000000 3802:MB4|00000000 3803:MB4|00000000 3804:MB4|00000000 3805:MB4|00000000 3806:MB4|00000000 3807:MB4|00000000 3808:MB4|00000000 3809:MB4|00000000 3810:MB4|00000000 3811:MB4|00000000 3812:MB4|00000000 3813:MB4|00000000 3814:MB4|00000000 3815:MB4|00000000 3816:MB4|00000000 3817:MB4|00000000 3818:MB4|00000000 3819:MB4|00000000 3820:MB4|00000000 3821:MB4|00000000 3822:MB4|00000000 3823:MB4|00000000 3824:MB4|00000000 3825:MB4|00000000 3826:MB4|00000000 3827:MB4|00000000 3828:MB4|00000000 3829:MB4|00000000 3830:MB4|00000000 3831:MB4|00000000 3832:MB4|00000000 3833:MB4|00000000 3834:MB4|00000000 3835:MB4|00000000 3836:MB4|00000000 3837:MB4|00000000 3838:MB4|00000000 3839:MB4|00000000 3840:MB4|00000000 3841:MB4|00000000 3842:MB4|00000000 3843:MB4|00000000 3844:MB4|00000000 3845:MB4|00000000 3846:MB4|00000000 3847:MB4|00000000 3848:MB4|00000000 3849:MB4|00000000 3850:MB4|00000000 3851:MB4|00000000 3852:MB4|00000000 3853:MB4|00000000 3854:MB4|00000000 3855:MB4|00000000 3856:MB4|00000000 3857:MB4|00000000 3858:MB4|00000000 3859:MB4|00000000 3860:MB4|00000000 3861:MB4|00000000 3862:MB4|00000000 3863:MB4|00000000 3864:MB4|00000000 3865:MB4|00000000 3866:MB4|00000000 3867:MB4|00000000 3868:MB4|00000000 3869:MB4|00000000 3870:MB4|00000000 3871:MB4|00000000 3872:MB4|00000000 3873:MB4|00000000 3874:MB4|00000000 3875:MB4|00000000 3876:MB4|00000000 3877:MB4|00000000 3878:MB4|00000000 3879:MB4|00000000 3880:MB4|00000000 3881:MB4|00000000 3882:MB4|00000000 3883:MB4|00000000 3884:MB4|00000000 3885:MB4|00000000 3886:MB4|00000000 3887:MB4|00000000 3888:MB4|00000000 3889:MB4|00000000 3890:MB4|00000000 3891:MB4|00000000 3892:MB4|00000000 3893:MB4|00000000 3894:MB4|00000000 3895:MB4|00000000 3896:MB4|00000000 3897:MB4|00000000 3898:MB4|00000000 3899:MB4|00000000 3900:MB4|00000000 3901:MB4|00000000 3902:MB4|00000000 3903:MB4|00000000 3904:MB4|00000000 3905:MB4|00000000 3906:MB4|00000000 3907:MB4|00000000 3908:MB4|00000000 3909:MB4|00000000 3910:MB4|00000000 3911:MB4|00000000 3912:MB4|00000000 3913:MB4|00000000 3914:MB4|00000000 3915:MB4|00000000 3916:MB4|00000000 3917:MB4|00000000 3918:MB4|00000000 3919:MB4|00000000 3920:MB4|00000000 3921:MB4|00000000 3922:MB4|00000000 3923:MB4|00000000 3924:MB4|00000000 3925:MB4|00000000 3926:MB4|00000000 3927:MB4|00000000 3928:MB4|00000000 3929:MB4|00000000 3930:MB4|00000000 3931:MB4|00000000 3932:MB4|00000000 3933:MB4|00000000 3934:MB4|00000000 3935:MB4|00000000 3936:MB4|00000000 3937:MB4|00000000 3938:MB4|00000000 3939:MB4|00000000 3940:MB4|00000000 3941:MB4|00000000 3942:MB4|00000000 3943:MB4|00000000 3944:MB4|00000000 3945:MB4|00000000 3946:MB4|00000000 3947:MB4|00000000 3948:MB4|00000000 3949:MB4|00000000 3950:MB4|00000000 3951:MB4|00000000 3952:MB4|00000000 3953:MB4|00000000 3954:MB4|00000000 3955:MB4|00000000 3956:MB4|00000000 3957:MB4|00000000 3958:MB4|00000000 3959:MB4|00000000 3960:MB4|00000000 3961:MB4|00000000 3962:MB4|00000000 3963:MB4|00000000 3964:MB4|00000000 3965:MB4|00000000 3966:MB4|00000000 3967:MB4|00000000 0:MO1|@3971 1:MO1|1 2:MO1|0 3:MO1|0 4:MO1|0 5:MO1|@4033 6:MO1|@4040 7:MO1|@4050 8:MO1|0 9:MO1|@4348 10:MO1|@4378 11:MO1|0 12:MO1|@4510 13:MO1|2 14:MO1|0 15:MO1|0 16:MO1|@4580 17:MO1|@4603 18:MO1|@4603 19:MO1|@4603 20:MO1|@4603 21:MO1|@4603 22:MO1|@4603 23:MO1|@4666 24:MO1|@4603 25:MO1|@4603 26:MO1|1 27:MO1|@4666 28:MO1|1 29:MO1|@4794 30:MO1|@4811 31:MO1|@4666 32:MO1|1 33:MO1|@4666 34:MO1|1 35:MO1|@4666 36:MO1|1 37:MO1|@5001 38:MO1|0 39:MO1|@5077 40:MO1|@5064 41:MO1|1 42:MO1|@5260 43:MO1|@5064 44:MO1|1 45:MO1|@5064 46:MO1|@5364 47:MO1|1 48:MO1|@4603 49:MO1|@4603 50:MO1|@4603 51:MO1|@4603 52:MO1|@4603 53:MO1|@4603 54:MO1|@4603 55:MO1|@4603 56:MO1|@4603 57:MO1|@4603 58:MO1|@4603 59:MO1|@4603 60:MO1|@4603 61:MO1|@4603 62:MO1|@4603 63:MO1|@4603 64:MO1|@4603 65:MO1|@4603 66:MO1|@4603 67:MO1|@4603 68:MO1|@4603 69:MO1|@4603 70:MO1|@4603 71:MO1|0 72:MO1|0 73:MO1|0 74:MO1|@6388 75:MO1|@6391 76:MO256|@6903,@6904,@6905,@6906,@6907,@6908,@6909,@6910,@6911,@6912,@6913,@6914,@6915,@6916,@6917,@6918,@6919,@6920,@6921,@6922,@6923,@6924,@6925,@6926,@6927,@6928,@6929,@6930,@6931,@6932,@6933,@6934,@6935,@6936,@6937,@6938,@6939,@6940,@6941,@6942,@6943,@6944,@6945,@6946,@6947,@6948,@6949,@6950,@6951,@6952,@6953,@6954,@6955,@6956,@6957,@6958,@6959,@6960,@6961,@6962,@6963,@6964,@6965,@6966,@6967,@6968,@6969,@6970,@6971,@6972,@6973,@6974,@6975,@6976,@6977,@6978,@6979,@6980,@6981,@6982,@6983,@6984,@6985,@6986,@6987,@6988,@6989,@6990,@6991,@6992,@6993,@6994,@6995,@6996,@6997,@6998,@6999,@7000,@7001,@7002,@7003,@7004,@7005,@7006,@7007,@7008,@7009,@7010,@7011,@7012,@7013,@7014,@7015,@7016,@7017,@7018,@7019,@7020,@7021,@7022,@7023,@7024,@7025,@7026,@7027,@7028,@7029,@7030,@7031,@7032,@7033,@7034,@7035,@7036,@7037,@7038,@7039,@7040,@7041,@7042,@7043,@7044,@7045,@7046,@7047,@7048,@7049,@7050,@7051,@7052,@7053,@7054,@7055,@7056,@7057,@7058,@7059,@7060,@7061,@7062,@7063,@7064,@7065,@7066,@7067,@7068,@7069,@7070,@7071,@7072,@7073,@7074,@7075,@7076,@7077,@7078,@7079,@7080,@7081,@7082,@7083,@7084,@7085,@7086,@7087,@7088,@7089,@7090,@7091,@7092,@7093,@7094,@7095,@7096,@7097,@7098,@7099,@7100,@7101,@7102,@7103,@7104,@7105,@7106,@7107,@7108,@7109,@7110,@7111,@7112,@7113,@7114,@7115,@7116,@7117,@7118,@7119,@7120,@7121,@7122,@7123,@7124,@7125,@7126,@7127,@7128,@7129,@7130,@7131,@7132,@7133,@7134,@7135,@7136,@7137,@7138,@7139,@7140,@7141,@7142,@7143,@7144,@7145,@7146,@7147,@7148,@7149,@7150,@7151,@7152,@7153,@7154,@7155,@7156,@7157,@6902 77:MO256|2,1,2,2,1,2,1,1,1,1,3,1,1,3,1,1,1,3,7,3,3,3,1,3,3,3,3,3,1,1,2,2,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,5,2,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,3,1,1,1,2,2,3,1,1,1 78:MO1|@4603 79:MO1|@7240 80:MO1|0 81:MO1|@4666 82:MO1|1 83:MO1|0 84:MO1|@5064 85:MO1|@5364 86:MO1|1 87:MO1|@5064 88:MO1|@5364 89:MO1|1 90:MO1|@4666 91:MO1|1 92:MO1|0 93:MO1|0 94:MO1|0 95:MO1|0 96:MO1|@8195 97:MO1|0 98:MO1|@8339 99:MO1|0 100:MO1|0 101:MO1|0 102:MO1|@4603 103:MO1|@4603 104:MO1|0 105:MO1|@4603 106:MO1|@9063 107:MO1|0 108:MO1|@7430 109:MO1|@9319 110:MO1|@12759 111:MO1|@9603 112:MO1|@9831 113:MO1|@9620 114:MO1|@9703 115:MO1|@9626 116:MO1|@9642 117:MO1|@4603 118:MO1|@9666 119:MO1|@9677 120:MO1|@9689 121:MO1|@9802 122:MO1|@9773 123:MO1|@9791 124:MO1|@9603 125:MO1|@10693 126:MO1|@9841 127:MO1|@10593 128:MO1|@9876 129:MO1|@9903 130:MO1|@10103 131:MO1|@9992 132:MO1|@10043 133:MO1|@10080 134:MO1|@10137 135:MO1|@10184 136:MO1|@10188 137:MO1|@10263 138:MO1|@10361 139:MO1|@10412 140:MO1|@10504 141:MO1|@10520 142:MO1|@10548 143:MO1|@10577 144:MO1|@10641 145:MO1|@10660 146:MO1|0 147:MO1|@11143 148:MO1|@11035 149:MO1|@11044 150:MO1|@11078 151:MO1|@12245 152:MO1|@11569 153:MO1|@11569 154:MO1|@9791 155:MO1|@9703 156:MO1|@11044 157:MO1|@11721 158:MO1|@12381 159:MO1|@11840 160:MO1|@12045 161:MO1|@12054 162:MO1|@12057 163:MO1|@12060 164:MO1|@12100 165:MO1|@12064 166:MO1|@12084 167:MO1|@12245 168:MO1|@12268 169:MO1|@11721 170:MO1|@12296 171:MO1|@12318 172:MO1|@12334 173:MO1|@12357 174:MO1|@12268 175:MO1|@12665 176:MO1|@12878 177:MO1|@12953 178:MO1|@12915 179:MO1|@12917 180:MO1|@11840 181:MO1|@13131 182:MO1|@12973 183:MO1|@12045 184:MO1|@13001 185:MO1|@13001 186:MO1|@9802 187:MO1|@13037 188:MO1|0 189:MO1|0 190:MO1|0 191:MO1|0 192:MO1|0 193:MO1|@13906 194:MO1|0 195:MO1|32 196:MO1|@4062 197:MO1|48 198:MO1|0 199:MO1|41 18931:MVO1|0 18932:MVO1|@3989 18933:MVO1|1 18934:MVO1|1 18935:MVO1|1 18936:MVO1|0 18937:MVO1|0 18938:MVO1|1 18939:MVO1|1 18940:MVO1|@4507 18941:MVO1|1 18942:MVO1|@4532 18943:MVO1|1 18944:MVO1|1 18898:MWVB28|00000000506f6c79546872656164466f726b54687265616400000000 18899:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18900:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18901:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18902:MWVB28|00000000506f6c7950726f63657373456e764572726f724e616d6500 18903:MWVB28|00000000506f6c795468726561644d75746578426c6f636b00000000 18904:MWVB28|00000000506f6c795468726561644d75746578556e6c6f636b000000 18905:MWVB28|00000000506f6c7954687265616454657374496e7465727275707400 18906:MWVB28|00000000506f6c79546872656164436f6e6456617257616b65000000 18907:MWVB24|00000000506f6c7957616974466f725369676e616c000000 18908:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 18909:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18910:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18911:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18912:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18913:MWVB24|00000000506f6c7941646441726269747261727900000000 18914:MWVB28|00000000506f6c795375627472616374417262697472617279000000 18915:MWVB28|00000000506f6c7951756f7452656d41726269747261727900000000 18916:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 18917:MWVB28|00000000506f6c795468726561644d6178537461636b53697a650000 18918:MWVB24|00000000506f6c7947657446756e6374696f6e4e616d6500 18919:MWVB28|00000000506f6c79436f707942797465566563546f436f6465000000 18920:MWVB24|00000000506f6c794c6f636b4d757461626c65436f646500 18921:MWVB20|00000000506f6c794973426967456e6469616e00 18922:MWVB20|00000000506f6c7953697a65446f75626c650000 18923:MWVB20|00000000506f6c7953697a65466c6f6174000000 18924:MWVB32|00000000506f6c79437265617465456e747279506f696e744f626a6563740000 18925:MWVB28|00000000506f6c794d756c7469706c79417262697472617279000000 18926:MWVB28|00000000506f6c79436f6d7061726541726269747261727900000000 18927:MWVB32|00000000506f6c794765744c6f774f7264657241734c61726765576f72640000 18928:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 18929:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 18930:MWVB16|00000000506f6c7946696e6973680000 polyml-5.7.1/imports/polymlint64.txt0000644000175000017500000650377513204034553016465 0ustar daviddavidObjects 18943 Root 200 200:O1|@15130 201:O1|@18895 202:S24|506f6c794d4c2e72756e46756e6374696f6e283129283129 203:O2|@205,@204 204:O2|@208,@207 205:O2|@15131,@18929 206:S19|466f726569676e4d656d6f72792e5f2d283129 207:O2|@681,@680 208:O2|@15132,@209 209:O2|@15173,@671 210:O1|@15168 211:S20|5369676e616c2e666f726b546872656164283129 212:O1|@15133 213:O4|12,@216,@217,@215 214:S38|5468726561642e5468726561642e6174747273546f576f7264283129636f6e76657274283429 215:O5|@218,218,0,218,0 216:S6|546872656164 217:S53|5468652073616d65206174747269627574652061707065617273206d6f7265207468616e206f6e636520696e20746865206c697374 218:S18|2e2f62617369732f5468726561642e736d6c 219:O1|@15134 220:S20|506f6c79546872656164466f726b546872656164 221:O6|@222,@2,@223,@3,@18931,@1 222:O2|4096,@11367 223:O14|@225,@226,@231,0,0,@232,0,@233,@241,@244,4096,0,@247,@224 224:O1|@250 225:S6|7374644f7574 226:O1|@227 227:O3|@15135,@228,1 228:O1|@15136 229:S50|4c696272617279494f537570706f72742e777261704f757446696c654465736372283529746578745072696d57722d283129 230:S18|506f6c794261736963494f47656e6572616c 231:O3|@15137,@228,1 232:O1|1 233:O1|@234 234:O3|@15138,@235,1 235:O1|@15139 236:O4|11,@239,0,@238 237:S49|4c696272617279494f537570706f72742e777261704f757446696c65446573637228352977726974654172726179283129 238:O5|@240,143,0,143,0 239:S9|537562736372697074 240:S26|2e2f62617369732f4c696272617279537570706f72742e736d6c 241:O1|@242 242:O3|@15140,@235,1 243:S50|4c696272617279494f537570706f72742e777261704f757446696c6544657363722835297772697465566563746f72283129 244:O1|@245 245:O3|@15141,@246,1 246:O1|@15142 247:O1|@248 248:O3|@15143,@234,@245 249:S40|5072696d494f28292e6175676d656e7457726974657228312977726974654172724e42272d283129 250:O3|@15144,@242,@245 251:S40|5072696d494f28292e6175676d656e7457726974657228312977726974655665634e42272d283129 252:S31|556e61626c6520746f20637265617465207369676e616c207468726561640a 253:O1|@15145 254:S29|54657874494f2e5465787453747265616d494f2e6f7574707574283229 255:O4|11,@239,0,@256 256:O5|@257,267,0,267,0 257:S18|2e2f62617369732f537472696e672e736d6c 258:O1|@15148 259:S34|426173696353747265616d494f28292e6f7574707574566563746f72283129283129 260:O4|11,@239,0,@657 261:S31|426173696353747265616d494f28292e6f7574707574566563746f72283229 262:O4|@4,@263,0,0 263:S12|436c6f73656453747265616d 264:S6|6f7574707574 265:O1|@266 266:O1|@15149 267:O2|3,@595 268:S14|7072696e742d6c6162656c6c6564 269:O2|@270,0 270:O2|3,@271 271:S4|2e2e2e7d 272:O1|@15150 273:O1|@15151 274:S7|61646450502d31 275:O2|3,@625 276:S11|65786e5072696e74283329 277:O2|3,@278 278:S3|2e2e2e 279:O2|@280,0 280:O2|3,@281 281:S4|2e2e2e29 282:O2|@15152,@283 283:O2|@15155,@296 284:O1|@15154 285:O1|@15153 286:O4|4,@290,0,@291 287:S19|537472696e672e746f537472696e6773283229 288:O4|4,@290,0,@289 289:O5|@240,138,0,138,0 290:S4|53697a65 291:O5|@240,169,0,169,0 292:O2|@293,0 293:S1|22 294:B8|0000000000000000 295:S16|537472696e672e636f6e636174283129 296:O256|@325,@326,@327,@328,@329,@330,@331,@332,@333,@334,@335,@336,@337,@338,@339,@340,@341,@342,@343,@344,@345,@346,@347,@348,@349,@350,@351,@352,@353,@354,@355,@356,@357,@358,@359,@360,@361,@362,@363,@364,@365,@366,@367,@368,@369,@370,@371,@372,@373,@374,@375,@376,@377,@378,@379,@380,@381,@382,@383,@384,@385,@386,@387,@388,@389,@390,@391,@392,@393,@394,@395,@396,@397,@398,@399,@400,@401,@402,@403,@404,@405,@406,@407,@408,@409,@410,@411,@412,@413,@414,@415,@416,@417,@418,@419,@420,@421,@422,@423,@424,@425,@426,@427,@428,@429,@430,@431,@432,@433,@434,@435,@436,@437,@438,@439,@440,@441,@442,@443,@444,@445,@446,@447,@448,@449,@450,@451,@452,@453,@454,@455,@456,@457,@458,@459,@460,@461,@462,@463,@464,@465,@466,@467,@468,@469,@470,@471,@472,@473,@474,@475,@476,@477,@478,@479,@480,@481,@482,@483,@484,@485,@486,@487,@488,@489,@490,@491,@492,@493,@494,@495,@496,@497,@498,@499,@500,@501,@502,@503,@504,@505,@506,@507,@508,@509,@510,@511,@512,@513,@514,@515,@516,@517,@518,@519,@520,@521,@522,@523,@524,@525,@526,@527,@528,@529,@530,@531,@532,@533,@534,@535,@536,@537,@538,@539,@540,@541,@542,@543,@544,@545,@546,@547,@548,@549,@550,@551,@552,@553,@554,@555,@556,@557,@558,@559,@560,@561,@562,@563,@564,@565,@566,@567,@568,@569,@570,@571,@572,@573,@574,@575,@576,@577,@578,@579,@324 297:S1|5c 298:S16|436861722e746f537472696e67283129 299:S2|5c5c 300:S2|5c22 301:S2|5c61 302:S2|5c62 303:S2|5c74 304:S2|5c6e 305:S2|5c76 306:S2|5c66 307:S2|5c72 308:O4|@8,@310,0,@309 309:O5|@257,126,0,126,0 310:S3|436872 311:S2|5c5e 312:O1|@15156 313:O4|7,@323,0,@322 314:S18|436861722e6f6374496e7452657072283329 315:O4|7,@317,0,@316 316:O5|@318,125,0,125,0 317:S3|446976 318:S23|2e2f62617369732f496e697469616c42617369732e4d4c 319:O4|5,@321,0,@320 320:O5|@318,128,0,128,0 321:S8|4f766572666c6f77 322:O5|@318,134,0,134,0 323:S3|446976 324:S1|ff 325:S1|00 326:S1|01 327:S1|02 328:S1|03 329:S1|04 330:S1|05 331:S1|06 332:S1|07 333:S1|08 334:S1|09 335:S1|0a 336:S1|0b 337:S1|0c 338:S1|0d 339:S1|0e 340:S1|0f 341:S1|10 342:S1|11 343:S1|12 344:S1|13 345:S1|14 346:S1|15 347:S1|16 348:S1|17 349:S1|18 350:S1|19 351:S1|1a 352:S1|1b 353:S1|1c 354:S1|1d 355:S1|1e 356:S1|1f 357:S1|20 358:S1|21 359:S1|22 360:S1|23 361:S1|24 362:S1|25 363:S1|26 364:S1|27 365:S1|28 366:S1|29 367:S1|2a 368:S1|2b 369:S1|2c 370:S1|2d 371:S1|2e 372:S1|2f 373:S1|30 374:S1|31 375:S1|32 376:S1|33 377:S1|34 378:S1|35 379:S1|36 380:S1|37 381:S1|38 382:S1|39 383:S1|3a 384:S1|3b 385:S1|3c 386:S1|3d 387:S1|3e 388:S1|3f 389:S1|40 390:S1|41 391:S1|42 392:S1|43 393:S1|44 394:S1|45 395:S1|46 396:S1|47 397:S1|48 398:S1|49 399:S1|4a 400:S1|4b 401:S1|4c 402:S1|4d 403:S1|4e 404:S1|4f 405:S1|50 406:S1|51 407:S1|52 408:S1|53 409:S1|54 410:S1|55 411:S1|56 412:S1|57 413:S1|58 414:S1|59 415:S1|5a 416:S1|5b 417:S1|5c 418:S1|5d 419:S1|5e 420:S1|5f 421:S1|60 422:S1|61 423:S1|62 424:S1|63 425:S1|64 426:S1|65 427:S1|66 428:S1|67 429:S1|68 430:S1|69 431:S1|6a 432:S1|6b 433:S1|6c 434:S1|6d 435:S1|6e 436:S1|6f 437:S1|70 438:S1|71 439:S1|72 440:S1|73 441:S1|74 442:S1|75 443:S1|76 444:S1|77 445:S1|78 446:S1|79 447:S1|7a 448:S1|7b 449:S1|7c 450:S1|7d 451:S1|7e 452:S1|7f 453:S1|80 454:S1|81 455:S1|82 456:S1|83 457:S1|84 458:S1|85 459:S1|86 460:S1|87 461:S1|88 462:S1|89 463:S1|8a 464:S1|8b 465:S1|8c 466:S1|8d 467:S1|8e 468:S1|8f 469:S1|90 470:S1|91 471:S1|92 472:S1|93 473:S1|94 474:S1|95 475:S1|96 476:S1|97 477:S1|98 478:S1|99 479:S1|9a 480:S1|9b 481:S1|9c 482:S1|9d 483:S1|9e 484:S1|9f 485:S1|a0 486:S1|a1 487:S1|a2 488:S1|a3 489:S1|a4 490:S1|a5 491:S1|a6 492:S1|a7 493:S1|a8 494:S1|a9 495:S1|aa 496:S1|ab 497:S1|ac 498:S1|ad 499:S1|ae 500:S1|af 501:S1|b0 502:S1|b1 503:S1|b2 504:S1|b3 505:S1|b4 506:S1|b5 507:S1|b6 508:S1|b7 509:S1|b8 510:S1|b9 511:S1|ba 512:S1|bb 513:S1|bc 514:S1|bd 515:S1|be 516:S1|bf 517:S1|c0 518:S1|c1 519:S1|c2 520:S1|c3 521:S1|c4 522:S1|c5 523:S1|c6 524:S1|c7 525:S1|c8 526:S1|c9 527:S1|ca 528:S1|cb 529:S1|cc 530:S1|cd 531:S1|ce 532:S1|cf 533:S1|d0 534:S1|d1 535:S1|d2 536:S1|d3 537:S1|d4 538:S1|d5 539:S1|d6 540:S1|d7 541:S1|d8 542:S1|d9 543:S1|da 544:S1|db 545:S1|dc 546:S1|dd 547:S1|de 548:S1|df 549:S1|e0 550:S1|e1 551:S1|e2 552:S1|e3 553:S1|e4 554:S1|e5 555:S1|e6 556:S1|e7 557:S1|e8 558:S1|e9 559:S1|ea 560:S1|eb 561:S1|ec 562:S1|ed 563:S1|ee 564:S1|ef 565:S1|f0 566:S1|f1 567:S1|f2 568:S1|f3 569:S1|f4 570:S1|f5 571:S1|f6 572:S1|f7 573:S1|f8 574:S1|f9 575:S1|fa 576:S1|fb 577:S1|fc 578:S1|fd 579:S1|fe 580:O1|@15157 581:S13|7072696e746f7074696f6e2829 582:O5|0,0,0,@588,@604 583:S12|7072696e742d6f7074696f6e 584:O2|3,@585 585:S3|2e2e2e 586:O5|0,0,0,@588,@587 587:O2|@592,0 588:O2|@589,0 589:O2|0,@590 590:O5|@591,0,0,0,0 591:S14|5374616e64617264204261736973 592:O2|3,@593 593:S4|4e4f4e45 594:S1|28 595:S1|7b 596:S1|5b 597:O2|@599,@598 598:O2|@600,0 599:O3|1,0,0 600:O2|3,@601 601:S1|29 602:O2|3,@594 603:O3|1,1,0 604:O2|@605,0 605:O2|3,@606 606:S4|534f4d45 607:O4|0,@608,1,1 608:O1|@15159 609:S17|7072696e742d4f532e7379736572726f72 610:O1|@15160 611:O1|@15161 612:S23|506f6c7950726f63657373456e764572726f724e616d65 613:O2|@614,0 614:O2|3,@601 615:O3|1,1,0 616:O2|3,@617 617:S1|2c 618:O2|3,@594 619:O1|@15162 620:O2|3,@365 621:S26|65786e5072696e74283329706172656e74686573697365283129 622:O2|@623,0 623:O2|3,@366 624:O3|1,1,1 625:S6|537973457272 626:O2|@627,0 627:O2|3,@628 628:S1|7d 629:O2|3,@630 630:S6|6e616d65203d 631:O2|3,@632 632:S10|66756e6374696f6e203d 633:O2|3,@634 634:S7|6361757365203d 635:S2|496f 636:O5|@637,610,0,610,0 637:S25|2e2f62617369732f426173696353747265616d494f2e736d6c 638:O1|@15163 639:O5|@637,501,0,501,0 640:S28|426173696353747265616d494f28292e666c7573684f757427283129 641:O4|@11,@642,0,0 642:S20|426c6f636b696e674e6f74537570706f72746564 643:S8|666c7573684f7574 644:O5|@637,514,0,515,0 645:O4|11,@239,0,@646 646:O5|@647,111,0,111,0 647:S33|2e2f62617369732f566563746f72536c6963654f7065726174696f6e732e736d6c 648:O3|1,@649,0 649:S9|496e74657272757074 650:O1|@15164 651:O1|@15165 652:S27|426173696353747265616d494f28292e7772697465566563283429 653:O5|@637,577,0,577,0 654:O5|@637,604,0,605,0 655:O5|@637,595,0,595,0 656:S38|426173696353747265616d494f28292e7772697465566563283429666f7263654f7574283129 657:O5|@257,1646,0,1646,0 658:O4|11,@239,0,@659 659:O5|@647,101,0,101,0 660:O1|@15172 661:S20|5468726561644c69622e70726f74656374283329 662:O1|@15169 663:S20|506f6c795468726561644d75746578426c6f636b 664:O1|@15170 665:S21|506f6c795468726561644d75746578556e6c6f636b 666:O1|@15171 667:S23|506f6c7954687265616454657374496e74657272757074 668:O5|@669,77,0,77,0 669:S27|2e2f62617369732f506f6c794d4c457863657074696f6e2e736d6c 670:S7|7261697365466e 671:O1|@15177 672:O1|@15176 673:S19|5369676e616c2e736967546872656164283129 674:O1|@15174 675:O1|@15175 676:S35|5369676e616c2e73696754687265616428312962726f6164436173745765616b283229 677:S21|506f6c79546872656164436f6e6456617257616b65 678:S38|5369676e616c2e73696754687265616428312962726f6164436173745765616b283129283129 679:S17|506f6c7957616974466f725369676e616c 680:O2|@695,@694 681:O2|@15178,@682 682:O3|@15180,@687,@18935 683:O1|@15179 684:S28|426173696353747265616d494f28292e646f4f6e456e747279283129 685:S21|506f6c7950726f63657373456e7647656e6572616c 686:S27|426173696353747265616d494f28292e636c6f7365416c6c283129 687:O3|@15181,@18936,@18935 688:O1|@15182 689:S28|426173696353747265616d494f28292e636c6f73654f757427283129 690:O1|@15184 691:S35|426173696353747265616d494f28292e7465726d696e61746553747265616d27283129 692:O1|@15183 693:S16|4c6973742e66696c7465722832292829 694:O2|@759,0 695:O3|@15185,@18938,@18937 696:S19|54657874494f2e6f6e53746172745570283129 697:S5|737464496e 698:O9|@15187,@235,@727,@246,@228,@728,@729,@730,@699 699:O6|@15212,0,0,@735,@731,@731 700:O1|@15199 701:S35|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329 702:S47|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329726561644172726179283129 703:S48|4c696272617279494f537570706f72742e77726170496e46696c65446573637228332972656164566563746f72283129 704:S34|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283129283129 705:O3|0,0,0 706:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229676574506f732d283129 707:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229736574506f732d283129 708:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229656e64506f732d283129 709:S43|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329617661696c283129 710:S49|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329746578745072696d52642d283129 711:S25|5072696d494f28292e6175676d656e74526561646572283129 712:O4|4,@290,0,@714 713:S37|5072696d494f28292e6175676d656e7452656164657228312972656164566563272d283129 714:O5|@240,149,0,149,0 715:O4|11,@239,0,@717 716:S37|5072696d494f28292e6175676d656e7452656164657228312972656164417272272d283129 717:O5|@257,1211,0,1211,0 718:S39|5072696d494f28292e6175676d656e74526561646572283129726561645665634e42272d283129 719:S39|5072696d494f28292e6175676d656e74526561646572283129726561644172724e42272d283129 720:O5|@723,239,0,242,0 721:S38|5072696d494f28292e6175676d656e745265616465722831297265616456656327272d283129 722:S7|72656164566563 723:S18|2e2f62617369732f5072696d494f2e736d6c 724:O5|@723,262,0,265,0 725:S38|5072696d494f28292e6175676d656e745265616465722831297265616441727227272d283129 726:S7|72656164417272 727:O1|@15208 728:O1|@15209 729:O1|@15210 730:O1|@15211 731:O1|@737 732:O5|@734,135,0,135,0 733:S31|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283229 734:S28|2e2f62617369732f4c696272617279494f537570706f72742e736d6c 735:O1|@736 736:B8|7300000000000000 737:B8|0b00000000000000 738:S37|4261736963496d7065726174697665494f28292e736574496e73747265616d283229283129 739:O5|0,@741,@740,1693,0 740:O3|1,@12,@18939 741:S1694|282a0a20202020436f707972696768742028632920323030362d31302c20323031352d31362020446176696420432e204a2e204d617474686577730a0a2020202054686973206c696272617279206973206672656520736f6674776172653b20796f752063616e2072656469737472696275746520697420616e642f6f720a202020206d6f6469667920697420756e64657220746865207465726d73206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e73652076657273696f6e20322e31206173207075626c697368656420627920746865204672656520536f66747761726520466f756e646174696f6e2e0a202020200a2020202054686973206c69627261727920697320646973747269627574656420696e2074686520686f706520746861742069742077696c6c2062652075736566756c2c0a2020202062757420574954484f555420414e592057415252414e54593b20776974686f7574206576656e2074686520696d706c6965642077617272616e7479206f660a202020204d45524348414e544142494c495459206f72204649544e45535320464f52204120504152544943554c415220505552504f53452e20205365652074686520474e550a202020204c65737365722047656e6572616c205075626c6963204c6963656e736520666f72206d6f72652064657461696c732e0a202020200a20202020596f752073686f756c642068617665207265636569766564206120636f7079206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e736520616c6f6e6720776974682074686973206c6962726172793b206966206e6f742c20777269746520746f20746865204672656520536f6674776172650a20202020466f756e646174696f6e2c20496e632e2c203531204672616e6b6c696e2053742c20466966746820466c6f6f722c20426f73746f6e2c204d41202030323131302d3133303120205553410a2a290a0a282a20436f6d70696c65722074686520636f6d70696c657220616e64206578706f7274206974206173206120706f727461626c652066696c652e20205468652072657374206f66207468650a202020626f6f7473747261702070726f63657373206973207468656e20646f6e65207768656e2074686520706f727461626c652066696c6520697320696d706f727465642e202a290a0a506f6c794d4c2e7072696e745f646570746820303b0a0a506f6c794d4c2e6d616b6520226d6c736f757263652f4d4c436f6d70696c6572223b0a0a66756e20636f6d70696c654261736973416e644578706f72742829203d0a6c65740a20202020282a20546869732066756e6374696f6e2069732074686520726f6f74206f662074686520227072652d6275696c742220636f6d70696c6572732e2020497420636f6d70696c657320696e0a20202020202020746865206261736973206c69627261727920616e64206578706f7274732074686520636f6d70696c657220616c6f6e67207769746820746865206261736973206c6962726172790a20202020202020617320616e206f7065726174696e672d73797374656d207370656369666963206f626a6563742066696c652e202a290a2020202076616c20676c6f62616c5461626c65203a204d616b652e67456e76203d204d616b652e6d616b6547456e762028290a2020202076616c2074657374203d204c6973742e6578697374732028666e20222d2d696e744973496e74496e6622203d3e2074727565207c205f203d3e2066616c7365292028436f6d6d616e644c696e652e617267756d656e74732829290a2020202076616c202829203d20496e697469616c6973652e696e6974476c6f62616c456e767b676c6f62616c5461626c653d676c6f62616c5461626c652c20696e744973417262697472617279507265636973696f6e3d746573747d0a696e0a202020204d616b652e7368656c6c50726f6320676c6f62616c5461626c6528290a656e643b0a0a506f6c794d4c2e7368617265436f6d6d6f6e4461746120636f6d70696c654261736973416e644578706f72743b0a0a506f6c794d4c2e6578706f7274506f727461626c652822706f6c7974656d70222c0a20202020666e202829203d3e2028636f6d70696c654261736973416e644578706f72742028293b204f532e50726f636573732e65786974204f532e50726f636573732e73756363657373292068616e646c65205f203d3e204f532e50726f636573732e65786974204f532e50726f636573732e6661696c757265293b0a 742:O2|1,@743 743:O15|@697,@745,@746,@748,0,0,@749,0,@750,@752,@754,4096,@756,@744,0 744:O1|@758 745:O3|@15195,@246,0 746:O1|@747 747:O3|@15196,@228,0 748:O3|@15198,@228,0 749:O1|0 750:O1|@751 751:O3|@15188,@235,0 752:O1|@753 753:O3|@15189,@727,0 754:O1|@755 755:O3|@15197,@246,0 756:O1|@757 757:O3|@15205,@751,@755 758:O3|@15203,@753,@755 759:O2|@15213,@760 760:O3|@15214,@761,@18940 761:O3|@15215,@18941,@18940 762:O1|@15216 763:O1|@15217 764:O2|@766,@765 765:O2|@221,0 766:O6|@767,@14,@768,@15,@18942,@13 767:O2|4096,@11451 768:O14|@770,@771,@773,0,0,@774,0,@775,@777,@779,4096,0,@781,@769 769:O1|@783 770:S6|737464457272 771:O1|@772 772:O3|@15135,@228,2 773:O3|@15137,@228,2 774:O1|2 775:O1|@776 776:O3|@15138,@235,2 777:O1|@778 778:O3|@15140,@235,2 779:O1|@780 780:O3|@15141,@246,2 781:O1|@782 782:O3|@15143,@776,@780 783:O3|@15144,@778,@780 784:O1|@15218 785:S20|506f6c794d4c2e72756e4f6e456e747279283129 786:O1|@15219 787:O5|@816,88,0,88,0 788:S21|486173685461626c652e686173684d616b65283129 789:O4|4,@290,0,@790 790:O5|@791,70,0,70,0 791:S17|2e2f62617369732f41727261792e736d6c 792:O4|5,@321,0,@799 793:S25|486173685461626c652e6861736856616c7565283129283129 794:O4|7,@317,0,@795 795:O5|@318,253,0,253,0 796:B8|0000000000000080 797:O1|@15221 798:S16|506f6c79416464417262697472617279 799:O5|@800,74,0,74,0 800:S15|2e2f62617369732f496e742e736d6c 801:O9|@15222,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 802:O2|@15224,@806 803:S15|4c61726765496e742e666d74283229 804:O1|@15223 805:S21|506f6c795375627472616374417262697472617279 806:O2|@15226,@802 807:O1|@15225 808:S29|4c61726765496e742e666d74283229746f4368617247726f7570283229 809:S20|506f6c7951756f7452656d417262697472617279 810:S25|4c61726765496e742e666d74283229746f4368617273283529 811:S16|486173685461626c652e686173683a20 812:O1|@813 813:O1|@15227 814:S12|7072696e742d737472696e67 815:S13|496e7465726e616c4572726f72 816:S32|6d6c736f757263652f4d4c436f6d70696c65722f486173685461626c652e4d4c 817:O1|@15228 818:S13|2d2d696e744973496e74496e66 819:O1|@15229 820:O1|@18890 821:S30|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229 822:O1|@15230 823:S20|4d414b455f28292e67456e764173456e76283129 824:O1|@15236 825:S28|4d414b455f28292e6462456e764c6f6f6b7570283129283129283129 826:O4|101,@841,0,@840 827:S25|4d414b455f28292e6462456e764c6f6f6b7570283329283129 828:O1|@15234 829:O4|11,@239,0,@834 830:S20|486173685461626c652e68617368537562283229 831:O4|11,@239,0,@832 832:O5|@833,68,0,68,0 833:S18|2e2f62617369732f566563746f722e736d6c 834:O5|@791,81,0,81,0 835:O1|@836 836:O1|@15235 837:O2|3,@839 838:S13|7072696e742d64656661756c74 839:S1|3f 840:O5|@842,56,0,56,0 841:S5|4d61746368 842:S20|2e2f62617369732f556e6976657273616c2e4d4c 843:O5|@852,94,0,94,0 844:S18|4d414b455f28292e70726f74656374283229 845:O2|@846,0 846:O2|1,2 847:O4|12,@216,@849,@848 848:O5|@218,336,0,336,0 849:S40|54686520737461636b2073697a65206d7573742062652067726561746572207468616e207a65726f 850:O1|@15237 851:S22|506f6c795468726561644d6178537461636b53697a65 852:S28|6d6c736f757263652f4d4c436f6d70696c65722f4d414b455f2e4d4c 853:S27|4d414b455f28292e6462456e76456e746572283129283129283129 854:O1|@15251 855:S24|4d414b455f28292e6462456e76456e746572283429283129 856:O1|@15250 857:S36|556e6976657273616c5461626c652e756e6976456e746572283429736561726368283129 858:S20|486173685461626c652e68617368536574283329 859:S34|417474656d707420746f2073657420612076616c75652077697468206e616d652028 860:S24|2920696e20612066726f7a656e2068617368207461626c65 861:S4|4661696c 862:O5|@816,128,0,128,0 863:O1|@15253 864:O4|11,@239,0,@866 865:S31|486173685461626c652e68617368536574283329656e746572546162283329 866:O5|@791,86,0,86,0 867:O1|@15256 868:O1|@15259 869:O1|@15262 870:O1|@15265 871:O1|@15268 872:O1|@15274 873:S23|4d414b455f28292e67456e764173456e76283129283129 874:O1|@15271 875:S22|4d414b455f28292e6462456e76416c6c283329283129 876:O1|@15270 877:S38|556e6976657273616c5461626c652e666f6c64283329666f6c6448617368456e747279283329 878:S17|486173685461626c652e666f6c64283329 879:S35|486173685461626c652e666f6c642833296765744974656d7c6c656e6774682d283129 880:S13|4c6973742e6d61702832292829 881:O5|5,0,@883,@882,0 882:O4|@883,0,@885,@884 883:S3|696e74 884:O3|@890,@991,@889 885:O2|@886,0 886:O2|0,@887 887:O5|@888,0,0,0,0 888:S14|5374616e64617264204261736973 889:O3|@993,@887,@992 890:O2|1,@891 891:O3|6,@893,@892 892:O2|@902,@901 893:O4|@894,@23,3,1 894:O1|@15275 895:O1|@15276 896:S14|696e74496e66457175616c697479 897:S26|617262697472617279507265636973696f6e457175616c697479 898:O1|@15277 899:O2|3,@388 900:S37|545950455f5452454528292e64656661756c744d6f6e6f547970655072696e746572283129 901:O2|@961,0 902:O4|@24,@394,@903,0 903:O2|@905,@904 904:O2|0,@960 905:O2|@906,0 906:O4|@25,@394,@907,0 907:O3|1,@909,@908 908:O5|@15278,@952,@957,@958,@939 909:O8|@911,@896,0,0,@910,0,0,1 910:O2|@934,@933 911:O4|5,@913,@915,@912 912:O4|5,@923,@922,@921 913:O2|1,@914 914:O5|@916,@918,@920,@921,@915 915:O3|6,1,0 916:O2|8,@917 917:O2|0,0 918:O2|8,@919 919:O2|0,1 920:O2|1,0 921:O3|6,0,0 922:O4|7,@929,@928,1 923:O4|5,@925,@924,@921 924:O3|21,@927,9 925:O3|21,@926,9 926:O3|21,@916,5 927:O3|21,@918,5 928:O3|6,@895,0 929:O2|@931,@930 930:O2|@932,0 931:O2|@916,1 932:O2|@918,1 933:O2|@934,0 934:O2|1,@935 935:O2|@937,@936 936:O2|@937,@938 937:O1|3 938:O2|@937,0 939:O1|@15286 940:O1|@15280 941:S40|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283129283129 942:S39|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e2833292d45 943:S37|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283329 944:O4|@16,@815,@946,@945 945:O5|@947,306,0,306,0 946:S43|636f646574726565206e6577456e7669726f6e3a204e6f742045787472616374206f7220436f6e73746e74 947:S40|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245452e4d4c 948:O4|@16,@815,@950,@949 949:O5|@947,302,0,302,0 950:S33|5265666572656e636520746f206e6f6e2d6578697374656e742062696e64696e67 951:O1|2 952:O2|@15285,0 953:O4|11,@239,0,@955 954:S49|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529696e6c696e65436f64652d283129 955:O5|@956,60,0,60,0 956:S16|2e2f62617369732f4c6973742e736d6c 957:O0| 958:O1|@894 959:S38|434f44455452454528292e67656e436f64652833292831296669656c6450726f70732d283129 960:O2|0,@917 961:O4|@25,@394,@962,0 962:O3|3,4,@963 963:O5|@15287,@965,@957,@979,@964 964:O2|@15290,@980 965:O2|@15289,@966 966:O2|@969,@968 967:S39|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129283129 968:O2|@972,@971 969:O2|@970,@907 970:O3|0,@894,@905 971:O2|@975,@974 972:O2|@973,@951 973:O3|0,@23,0 974:O2|@977,0 975:O2|@976,@951 976:O3|0,3,0 977:O2|@978,@951 978:O3|0,1,0 979:O1|@893 980:O2|@981,0 981:O2|@902,@982 982:O2|@983,0 983:O4|@25,@394,@984,0 984:O3|3,4,@985 985:O4|@15291,@986,@903,@893 986:O2|@907,@988 987:S81|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c2831297475706c6550726f70732d696e6c696e6550726f702d7475706c65456e747279283129 988:O2|@951,@989 989:O2|@951,@990 990:O2|@951,0 991:O4|1,@26,0,0 992:S8|496e204261736973 993:S10|496e74496e662e696e74 994:O5|5,0,@883,@995,0 995:O4|@883,0,@885,@996 996:O3|@998,@1024,@997 997:O3|@1025,@887,@992 998:O2|1,@999 999:O3|6,@1001,@1000 1000:O2|@1004,0 1001:O4|@1002,@27,1,1 1002:O1|@15292 1003:S11|457175616c576f72642829 1004:O4|@25,@394,@1005,0 1005:O3|3,4,@1006 1006:O5|@15287,@1008,@951,@1007,@939 1007:O2|@1001,@1002 1008:O2|@15289,@1009 1009:O2|@1011,@1010 1010:O2|@1022,@1021 1011:O2|@1013,@1012 1012:O3|1,@1015,@952 1013:O2|1,@1014 1014:O2|2,0 1015:O8|@1017,@1003,0,0,@1016,0,0,1 1016:O2|@1020,@1019 1017:O4|3,@916,@918,@1018 1018:O3|9,0,0 1019:O2|@1020,0 1020:O2|1,@938 1021:O2|@977,@974 1022:O2|@1023,@951 1023:O3|0,@27,0 1024:O4|1,@28,0,0 1025:S12|4669786564496e742e696e74 1026:O4|@883,0,@885,@996 1027:O2|@1029,@1028 1028:O2|@1030,0 1029:S4|756e6974 1030:O4|@1029,0,@885,@1031 1031:O3|@1033,@1034,@1032 1032:O3|@1029,@887,@1029 1033:O2|1,@921 1034:O3|2,0,@1035 1035:O3|3,0,@1036 1036:O3|0,0,1 1037:O3|2,0,1 1038:O1|@15293 1039:O1|@15295 1040:S29|44415441545950455f52455028292e636f6e7374724d61746368283229 1041:O4|@30,@1045,@1046,@1042 1042:O5|@1047,102,0,102,0 1043:O1|@1044 1044:O1|@15294 1045:S4|43617374 1046:S9|746f41646472657373 1047:S30|6d6c736f757263652f4d4c436f6d70696c65722f416464726573732e4d4c 1048:O4|@30,@1045,@1050,@1049 1049:O5|@1047,105,0,105,0 1050:S7|746f53686f7274 1051:O4|@16,@815,@1061,@1069 1052:S40|434f4445545245455f46554e4354494f4e5328292e66696e64456e747279496e426c6f636b283329 1053:O4|@16,@815,@1055,@1054 1054:O5|@1056,373,0,373,0 1055:S30|66696e64456e747279496e426c6f636b3a206e6f7420636f6e7374616e74 1056:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f46554e4354494f4e532e736d6c 1057:O1|@15296 1058:S35|434f4445545245455f46554e4354494f4e5328292e736574496e6c696e652832292829 1059:O4|@16,@815,@1061,@1060 1060:O5|@1056,387,0,387,0 1061:S33|66696e64456e747279496e426c6f636b3a20696e76616c69642061646472657373 1062:O2|16,@1063 1063:O3|6,@1064,0 1064:O4|@16,@815,@1065,0 1065:S36|496e76616c6964206c6f616420656e636f756e746572656420696e20636f6d70696c6572 1066:O4|@16,@815,@1068,@1067 1067:O5|@1056,345,0,345,0 1068:S41|66696e64456e747279496e426c6f636b3a207475706c652f6461746174797065206d69736d61746368 1069:O5|@1056,352,0,352,0 1070:O1|@15297 1071:O4|@16,@815,@1073,@1072 1072:O5|@947,68,0,68,0 1073:S9|646545787472616374 1074:O1|@15298 1075:S14|4c6973742e746162462833292829 1076:S5|66616c7365 1077:O1|@15299 1078:O1|@15308 1079:S29|44415441545950455f52455028292e636f6e7374724170706c79283229 1080:O4|4,@290,0,@1081 1081:O5|@956,136,0,136,0 1082:O1|@15300 1083:O1|@15301 1084:O4|@16,@815,@1096,@1095 1085:S46|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129 1086:O4|4,@290,0,@1087 1087:O5|@1047,149,0,149,0 1088:O1|@15302 1089:O1|@15303 1090:O4|@16,@815,@1093,@1092 1091:S58|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129636f7079546f566563283229 1092:O5|@1056,242,0,242,0 1093:S12|6e6f7420636f6e7374616e74 1094:O1|@15304 1095:O5|@1056,273,0,273,0 1096:S31|6d616b6556616c202d206e6f7420636f6e7374616e74206f72207475706c65 1097:O1|@15305 1098:S6|3c616e6f6e3e 1099:O1|@15306 1100:O3|6,64,0 1101:O1|@15307 1102:O5|5,0,@1104,@1103,0 1103:O4|@1104,0,@885,@1105 1104:S4|626f6f6c 1105:O3|@1107,@1121,@1106 1106:O3|@1104,@887,@992 1107:O2|1,@1108 1108:O3|6,@1110,@1109 1109:O2|@1112,0 1110:O4|@1111,@31,1,1 1111:O1|@15309 1112:O4|@25,@394,@1113,0 1113:O3|3,4,@1114 1114:O5|@15287,@1116,@951,@1115,@939 1115:O2|@1110,@1111 1116:O2|@15289,@1117 1117:O2|@1011,@1118 1118:O2|@1119,@1021 1119:O2|@1120,@951 1120:O3|0,@31,0 1121:O4|1,@32,0,0 1122:O3|2,1,1 1123:S4|74727565 1124:O1|@15310 1125:O4|11,@239,0,@1127 1126:S35|5354525543545f56414c5328292e6d616b65456d707479476c6f62616c283129283129 1127:O5|@1128,530,0,530,0 1128:S34|6d6c736f757263652f4d4c436f6d70696c65722f5354525543545f56414c532e4d4c 1129:S4|426f6f6c 1130:O7|@15311,@18,@19,@17,@21,@20,@22 1131:S24|5354525543545f56414c5328292e6d616b65456e76283129 1132:S31|5354525543545f56414c5328292e6d616b654c6f6f6b283129283129283129 1133:O1|@15320 1134:S32|5354525543545f56414c5328292e6d616b65456e746572283129283129283129 1135:O1|@15322 1136:O1|@15324 1137:O1|@15326 1138:O1|@15328 1139:O1|@15330 1140:S35|5354525543545f56414c5328292e6d616b65416c6c4e616d6573283129283129283129 1141:O1|@15332 1142:O1|@15334 1143:S23|434f44455452454528292e6d6b556e617279466e283129 1144:S10|4e6f74426f6f6c65616e 1145:S15|41746f6d696344656372656d656e74 1146:S15|41746f6d6963496e6372656d656e74 1147:S11|41746f6d69635265736574 1148:S16|436c6561724d757461626c65466c6167 1149:S13|466c6f61744669786564496e74 1150:S13|497354616767656456616c7565 1151:S16|4c6f6e67576f7264546f546167676564 1152:S15|4d656d6f727943656c6c466c616773 1153:S16|4d656d6f727943656c6c4c656e677468 1154:S7|5265616c416273 1155:S7|5265616c4e6567 1156:S16|5369676e6564546f4c6f6e67576f7264 1157:S18|556e7369676e6564546f4c6f6e67576f7264 1158:S2|2829 1159:O1|@15333 1160:S3|6e6f74 1161:O3|2,@1102,@1102 1162:O4|@1104,0,@885,@1105 1163:O2|@1165,@1164 1164:O2|@1166,0 1165:S4|63686172 1166:O4|@1165,0,@885,@1167 1167:O3|@1169,@1183,@1168 1168:O3|@1165,@887,@992 1169:O2|1,@1170 1170:O3|6,@1172,@1171 1171:O2|@1174,0 1172:O4|@1173,@33,1,1 1173:O1|@15335 1174:O4|@25,@394,@1175,0 1175:O3|3,4,@1176 1176:O5|@15287,@1178,@951,@1177,@939 1177:O2|@1172,@1173 1178:O2|@15289,@1179 1179:O2|@1011,@1180 1180:O2|@1181,@1021 1181:O2|@1182,@951 1182:O3|0,@33,0 1183:O4|1,@34,0,0 1184:O2|@1186,@1185 1185:O2|@1187,0 1186:S6|737472696e67 1187:O4|@1186,0,@885,@1188 1188:O3|@1190,@1223,@1189 1189:O3|@1186,@887,@992 1190:O2|1,@1191 1191:O3|6,@1193,@1192 1192:O2|@1196,0 1193:O4|@1194,@35,3,1 1194:O1|@15336 1195:S14|737472696e67457175616c697479 1196:O4|@25,@394,@1197,0 1197:O3|3,4,@1198 1198:O5|@15287,@1200,@951,@1199,@939 1199:O2|@1193,@1194 1200:O2|@15289,@1201 1201:O2|@1203,@1202 1202:O2|@1221,@971 1203:O2|@1013,@1204 1204:O3|1,@1205,@952 1205:O8|@1207,@1195,0,0,@1206,0,0,1 1206:O2|@934,@1218 1207:O4|5,@1017,@915,@1208 1208:O4|5,@1210,@1209,@921 1209:O5|4,1,@1211,@1217,@1216 1210:O4|3,@1212,@1211,@1018 1211:O3|13,@1214,@1215 1212:O3|13,@1214,@1213 1213:O3|@916,0,0 1214:O1|8 1215:O3|@918,0,0 1216:O3|@916,0,8 1217:O3|@918,0,8 1218:O2|@1219,0 1219:O2|1,@1220 1220:O2|@937,@935 1221:O2|@1222,@951 1222:O3|0,@35,0 1223:O4|1,@36,0,0 1224:O2|@1226,@1225 1225:O2|@1227,0 1226:S4|7265616c 1227:O4|@1226,0,@885,@1228 1228:O3|@1230,@1235,@1229 1229:O3|@1226,@887,@992 1230:O2|1,@1231 1231:O3|6,@1232,0 1232:O4|0,@37,2,1 1233:O1|@15337 1234:S40|545950455f5452454528292e6d616b655479706528332964656661756c745072696e746572283129 1235:O4|1,@38,0,0 1236:O2|@1238,@1237 1237:O2|@1444,0 1238:O7|@1240,@1241,@1242,@1239,@885,0,0 1239:O3|2,@1333,@1332 1240:S2|3a3a 1241:O2|0,2 1242:O2|1,@1243 1243:O3|6,@1245,@1244 1244:O2|@1249,0 1245:O3|@1247,@1248,@1246 1246:O1|@15340 1247:O1|@15338 1248:O1|@15339 1249:O4|@25,@394,@1250,0 1250:O3|3,3,@1251 1251:O6|@15281,@940,@1253,@1300,@1252,@939 1252:O12|@1302,@1247,@1248,@1246,@1245,@1304,@1303,@1306,@39,@1328,@1330,@1301 1253:O2|@15289,@1254 1254:O2|@1256,@1255 1255:O2|@1260,@1259 1256:O2|@1013,@1257 1257:O3|1,@1258,@952 1258:O8|@925,@1240,0,0,@1019,0,0,1 1259:O2|@1283,0 1260:O2|@1262,@1261 1261:O3|1,@1264,@952 1262:O2|1,@1263 1263:O2|2,1 1264:O8|@1266,@1240,0,0,@1265,0,2,1 1265:O2|@1278,0 1266:O3|15,@1268,@1267 1267:O3|20,@1274,1 1268:O2|@1270,@1269 1269:O2|@1272,0 1270:O4|1,@938,0,@1271 1271:O4|11,@916,0,0 1272:O4|1,@938,1,@1273 1273:O4|11,@916,1,0 1274:O2|@1276,@1275 1275:O2|@1277,0 1276:O2|8,@1014 1277:O2|8,@1263 1278:O2|1,@1279 1279:O2|@1281,@1280 1280:O2|@1282,0 1281:O3|2,0,@938 1282:O3|2,1,@938 1283:O2|@1285,@1284 1284:O3|1,@1287,@952 1285:O2|1,@1286 1286:O2|2,2 1287:O8|@1289,@1240,0,0,@1288,0,2,1 1288:O2|@1299,0 1289:O3|15,@1291,@1290 1290:O3|20,@1274,0 1291:O2|@1293,@1292 1292:O2|@1297,0 1293:O4|1,@1295,0,@1294 1294:O4|11,@916,0,1 1295:O2|@1296,0 1296:O1|1 1297:O4|1,@1295,1,@1298 1298:O4|11,@916,1,1 1299:O2|1,@936 1300:O11|2,2,2,2,2,2,2,1,2,2,2 1301:O4|@1306,@39,@1328,@1330 1302:O3|@1301,@1245,@1303 1303:O2|@1304,0 1304:O1|@15341 1305:S3|6e696c 1306:O1|@15342 1307:S13|65712d6c697374283229285029 1308:S10|65712d6c697374283229 1309:O2|@15344,@39 1310:S11|7072696e746c6973742829 1311:O5|0,0,0,@885,@1326 1312:S10|7072696e742d6c697374 1313:O2|3,@1314 1314:S3|2e2e2e 1315:O5|0,0,0,@885,@1316 1316:O2|@1317,0 1317:O2|3,@1305 1318:O2|@1319,0 1319:O2|3,@1320 1320:S4|2e2e2e29 1321:O2|@1322,0 1322:O2|3,@366 1323:O3|1,1,0 1324:O2|3,@369 1325:O2|3,@365 1326:O2|@1327,0 1327:O2|3,@1240 1328:O1|@15346 1329:S10|626f7865642d6c697374 1330:O1|@15347 1331:S9|73697a652d6c697374 1332:O5|5,@1345,@1346,@1344,@885 1333:O3|3,@1335,@1334 1334:O3|0,@1342,1 1335:O2|@1337,@1336 1336:O2|@1340,0 1337:O2|@1339,@1338 1338:O3|6,@40,79992 1339:S1|31 1340:O2|@1341,@1332 1341:S1|32 1342:O2|@1339,@1343 1343:O2|@1341,0 1344:O4|@1346,@1348,@885,@1347 1345:O2|@1338,0 1346:S4|6c697374 1347:O3|@1351,@1443,@1350 1348:O2|@1349,0 1349:O2|@40,79992 1350:O3|@1346,@887,@992 1351:O2|1,@1352 1352:O3|6,@1301,@1353 1353:O2|@1354,0 1354:O4|@25,@394,@1355,0 1355:O3|3,4,@1356 1356:O6|@15281,@940,@1357,@1300,@1252,@939 1357:O2|@15289,@1358 1358:O2|@1360,@1359 1359:O2|@1430,@1429 1360:O2|@1362,@1361 1361:O3|1,@1364,@952 1362:O2|1,@1363 1363:O2|2,6 1364:O8|@1366,@1307,0,0,@1365,0,0,1 1365:O2|@1422,0 1366:O2|12,@1367 1367:O8|@1369,@1308,0,@1421,@1368,0,10,1 1368:O2|@1219,@1218 1369:O3|2,@1371,@1370 1370:O2|@1417,@1416 1371:O4|5,@1373,@915,@1372 1372:O4|5,@1379,@1378,@921 1373:O4|3,@1375,@1374,@1018 1374:O2|8,@1377 1375:O2|8,@1376 1376:O2|2,4 1377:O2|2,5 1378:O4|5,@1382,@1381,@921 1379:O3|21,@1380,9 1380:O3|21,@1375,5 1381:O3|15,@1385,@1384 1382:O3|21,@1383,9 1383:O3|21,@1374,5 1384:O4|5,@1398,@1397,@921 1385:O2|@1387,@1386 1386:O2|@1390,@1389 1387:O4|1,@938,6,@1388 1388:O4|11,@1375,0,1 1389:O2|@1393,@1392 1390:O4|1,@938,7,@1391 1391:O4|11,@1375,1,1 1392:O2|@1395,0 1393:O4|1,@938,8,@1394 1394:O4|11,@1374,0,1 1395:O4|1,@938,9,@1396 1396:O4|11,@1374,1,1 1397:O2|14,@1408 1398:O4|7,@1400,@1399,1 1399:O4|11,@1407,0,0 1400:O2|@1402,@1401 1401:O2|@1404,0 1402:O2|@1403,1 1403:O2|8,@1363 1404:O2|@1405,1 1405:O2|8,@1406 1406:O2|2,8 1407:O2|8,@920 1408:O2|@1410,@1409 1409:O2|@1413,0 1410:O2|@1411,1 1411:O2|8,@1412 1412:O2|2,7 1413:O2|@1414,1 1414:O2|8,@1415 1415:O2|2,9 1416:O2|@1419,0 1417:O2|@1418,1 1418:O3|@1220,4,@916 1419:O2|@1420,1 1420:O3|@1220,5,@918 1421:O2|@917,0 1422:O2|1,@1423 1423:O2|@1424,0 1424:O3|2,0,@1425 1425:O2|@1426,0 1426:O3|0,@938,@1427 1427:O2|@1403,@1428 1428:O2|@1405,0 1429:O2|@1433,@1432 1430:O2|@1431,@951 1431:O2|1,@1412 1432:O2|@1439,0 1433:O2|@1435,@1434 1434:O3|1,@1436,@952 1435:O2|1,@1406 1436:O8|@1438,@1329,0,0,@1437,0,0,1 1437:O2|@920,0 1438:O3|6,3,0 1439:O2|@1441,@1440 1440:O3|1,@1442,@952 1441:O2|1,@1415 1442:O8|@915,@1331,0,0,@1437,0,0,1 1443:O4|1,@41,1,0 1444:O7|@1305,@846,@1445,@1332,@885,0,0 1445:O2|1,@1446 1446:O3|6,@1303,@1447 1447:O2|@1448,0 1448:O4|@25,@394,@1449,0 1449:O3|3,2,@1450 1450:O6|@15281,@940,@1451,@1300,@1252,@939 1451:O2|@15289,@1452 1452:O2|@1454,@1453 1453:O2|@1459,0 1454:O2|@1456,@1455 1455:O3|1,@1457,@952 1456:O2|1,@1376 1457:O8|@1458,@1305,0,0,@1019,0,0,1 1458:O4|19,0,@916,0 1459:O2|@1460,@951 1460:O3|0,0,0 1461:O2|@1346,@1462 1462:O2|@1344,@1236 1463:O2|@1465,@1464 1464:O2|@1555,0 1465:O7|@1467,@846,@1468,@1466,@885,0,0 1466:O5|5,@1508,@1510,@1507,@885 1467:S4|4e4f4e45 1468:O2|1,@1469 1469:O3|6,@1471,@1470 1470:O2|@1473,0 1471:O2|@1472,0 1472:O1|@15348 1473:O4|@25,@394,@1474,0 1474:O3|3,2,@1475 1475:O6|@15281,@940,@1477,@1300,@1476,@939 1476:O12|@1483,@1472,@1471,@1486,@1488,@1485,@1484,@1489,@42,@1503,@1505,@1482 1477:O2|@15289,@1478 1478:O2|@1479,@1453 1479:O2|@1013,@1480 1480:O3|1,@1481,@952 1481:O8|@1458,@1467,0,0,@1019,0,0,1 1482:O4|@1489,@42,@1503,@1505 1483:O3|@1482,@1471,@1484 1484:O3|@1486,@1488,@1485 1485:O1|@15351 1486:O1|@15349 1487:S4|534f4d45 1488:O1|@15350 1489:O1|@15352 1490:S15|65712d6f7074696f6e283229285029 1491:S12|65712d6f7074696f6e283229 1492:O1|@15354 1493:S13|7072696e746f7074696f6e2829 1494:O5|0,0,0,@885,@1501 1495:S12|7072696e742d6f7074696f6e 1496:O5|0,0,0,@885,@1497 1497:O2|@1498,0 1498:O2|3,@1467 1499:O2|@1500,@1321 1500:O3|1,0,0 1501:O2|@1502,0 1502:O2|3,@1487 1503:O1|@15356 1504:S12|626f7865642d6f7074696f6e 1505:O1|@15357 1506:S11|73697a652d6f7074696f6e 1507:O4|@1510,@1512,@885,@1511 1508:O2|@1509,0 1509:O3|6,@43,79992 1510:S6|6f7074696f6e 1511:O3|@1515,@1554,@1514 1512:O2|@1513,0 1513:O2|@43,79992 1514:O3|@1510,@887,@992 1515:O2|1,@1516 1516:O3|6,@1482,@1517 1517:O2|@1518,0 1518:O4|@25,@394,@1519,0 1519:O3|3,4,@1520 1520:O6|@15281,@940,@1521,@1300,@1476,@939 1521:O2|@15289,@1522 1522:O2|@1524,@1523 1523:O2|@1430,@1546 1524:O2|@1362,@1525 1525:O3|1,@1526,@952 1526:O8|@1528,@1490,0,0,@1527,0,0,1 1527:O2|@1539,0 1528:O2|12,@1529 1529:O8|@1530,@1491,0,@1421,@910,0,0,1 1530:O4|5,@1017,@915,@1531 1531:O4|5,@925,@1532,@921 1532:O4|5,@924,@1533,@921 1533:O4|7,@1534,@1399,1 1534:O2|@1536,@1535 1535:O2|@1537,0 1536:O2|@1294,1 1537:O2|@1538,1 1538:O4|11,@918,0,1 1539:O2|1,@1540 1540:O2|@1541,0 1541:O3|2,0,@1542 1542:O2|@1543,0 1543:O3|0,@1295,@1544 1544:O2|@1294,@1545 1545:O2|@1538,0 1546:O2|@1548,@1547 1547:O2|@1551,0 1548:O2|@1435,@1549 1549:O3|1,@1550,@952 1550:O8|@1438,@1504,0,0,@1437,0,0,1 1551:O2|@1441,@1552 1552:O3|1,@1553,@952 1553:O8|@915,@1506,0,0,@1437,0,0,1 1554:O4|1,@44,1,0 1555:O7|@1487,@1241,@1557,@1556,@885,0,0 1556:O3|2,@1509,@1466 1557:O2|1,@1558 1558:O3|6,@1484,@1559 1559:O2|@1560,0 1560:O4|@25,@394,@1561,0 1561:O3|3,3,@1562 1562:O6|@15281,@940,@1563,@1300,@1476,@939 1563:O2|@15289,@1564 1564:O2|@1566,@1565 1565:O2|@1570,@1569 1566:O2|@1285,@1567 1567:O3|1,@1568,@952 1568:O8|@925,@1487,0,0,@1019,0,0,1 1569:O2|@1577,0 1570:O2|@1572,@1571 1571:O3|1,@1574,@952 1572:O2|1,@1573 1573:O2|2,3 1574:O8|@1575,@1487,0,0,@1019,0,0,1 1575:O3|20,@1576,1 1576:O2|@916,0 1577:O2|@1456,@1578 1578:O3|1,@1579,@952 1579:O8|@1294,@1487,0,0,@1019,0,0,1 1580:O2|@1510,@1581 1581:O2|@1507,@1463 1582:S3|726566 1583:O4|@1582,@1585,@885,@1584 1584:O3|@1588,@1626,@1587 1585:O2|@1586,0 1586:O2|@45,79992 1587:O3|@1582,@887,@992 1588:O2|1,@1589 1589:O3|6,@1591,@1590 1590:O2|@1603,0 1591:O4|@1593,@46,@1600,@1592 1592:O1|@15363 1593:O1|@15358 1594:O1|@15359 1595:S11|65712d68656c7065722829 1596:O1|@15360 1597:O1|@15361 1598:S37|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129 1599:S40|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129283129 1600:O1|@15362 1601:S14|626f7865642d68656c7065722829 1602:S13|73697a652d68656c7065722829 1603:O4|@25,@394,@1604,0 1604:O3|3,4,@1605 1605:O5|@15287,@1607,@1625,@1606,@939 1606:O4|@1591,@1593,@1600,@1592 1607:O2|@15289,@1608 1608:O2|@1610,@1609 1609:O2|@1615,@1614 1610:O2|@1013,@1611 1611:O3|1,@1612,@952 1612:O8|@1613,@1595,0,0,@1437,0,0,1 1613:O2|12,@1015 1614:O2|@1618,@1617 1615:O2|@1616,@951 1616:O3|0,@46,0 1617:O2|@1622,0 1618:O2|@1262,@1619 1619:O3|1,@1620,@952 1620:O8|@1621,@1601,0,0,@1437,0,0,1 1621:O3|6,2,0 1622:O2|@1285,@1623 1623:O3|1,@1624,@952 1624:O8|@915,@1602,0,0,@1437,0,0,1 1625:O3|2,2,2 1626:O4|1,@47,1,0 1627:O1|4 1628:O1|@15364 1629:O1|@15371 1630:S40|44415441545950455f52455028292e637265617465556e617279436f6e7374727563746f72283329 1631:O1|@15365 1632:O1|@15366 1633:O1|@15367 1634:O1|@15370 1635:S32|44415441545950455f52455028292e636f6e7374724465737472756374283229 1636:O1|@15368 1637:O1|@15369 1638:O1|@921 1639:O2|7,0 1640:O1|@15372 1641:O4|3,@916,@918,@1642 1642:O2|3,0 1643:S16|457175616c4c61726765576f72642829 1644:O1|@15373 1645:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f547970655072696e746572283129 1646:O2|@915,@1647 1647:O2|@1648,0 1648:O3|6,1,0 1649:O4|@15374,@78,@3456,@1650 1650:O1|@15970 1651:S21|434f44455452454528292e67656e436f6465283329 1652:O2|@1654,@1653 1653:O2|@1658,@1657 1654:O4|@49,@394,@1655,0 1655:O1|@15376 1656:S18|44656275672e64656661756c74732d283129 1657:O2|@1661,@1660 1658:O4|@50,@394,@1659,0 1659:O1|@15377 1660:O2|@1663,@1662 1661:O4|@51,@394,@294,0 1662:O2|@1666,@1665 1663:O4|@52,@394,@1664,0 1664:O1|@15378 1665:O2|@1668,@1667 1666:O4|@53,@394,1,0 1667:O2|@1670,@1669 1668:O4|@54,@394,80,0 1669:O2|@1672,@1671 1670:O4|@55,@394,0,0 1671:O2|@1674,@1673 1672:O4|@56,@394,0,0 1673:O2|@1676,@1675 1674:O4|@48,@394,0,0 1675:O2|@1678,@1677 1676:O4|@57,@394,0,0 1677:O2|@1680,@1679 1678:O4|@58,@394,1,0 1679:O2|@1682,@1681 1680:O4|@59,@394,0,0 1681:O2|@1684,@1683 1682:O4|@60,@394,0,0 1683:O2|@1686,@1685 1684:O4|@61,@394,6,0 1685:O2|@1689,@1688 1686:O4|@62,@394,@1687,0 1687:O1|@15379 1688:O2|@1691,@1690 1689:O4|@63,@394,77,0 1690:O2|@1693,@1692 1691:O4|@64,@394,0,0 1692:O2|@1695,@1694 1693:O4|@65,@394,0,0 1694:O2|@1697,@1696 1695:O4|@66,@394,0,0 1696:O2|@1699,@1698 1697:O4|@67,@394,0,0 1698:O2|@1700,0 1699:O4|@68,@394,1,0 1700:O4|@69,@394,1,0 1701:O4|@16,@815,@1703,@1702 1702:O5|@1704,123,0,123,0 1703:S11|746167206d697373696e67 1704:S28|6d6c736f757263652f4d4c436f6d70696c65722f44656275672e4d4c 1705:O1|@15380 1706:S19|5072657474792e676574546167283229283129 1707:O4|@15381,@1889,@1708,@25 1708:O3|@15424,@1707,@1889 1709:O1|@15420 1710:S22|42617365436f6465547265652e707265747479283129 1711:O1|@15382 1712:O2|@1500,@1714 1713:S23|42617365436f6465547265652e704c6973742833292829 1714:O2|@1324,0 1715:O1|@15383 1716:S15|4c6973742e40283229617070283129 1717:O3|1,1,2 1718:O1|@15384 1719:O1|@15385 1720:O2|3,@1721 1721:S18|416c6c6f63617465576f72644d656d6f7279 1722:S3|416464 1723:S3|446976 1724:S3|4d6f64 1725:S4|4d756c74 1726:S4|51756f74 1727:S3|52656d 1728:S3|537562 1729:S12|47726561746572457175616c 1730:S7|47726561746572 1731:S9|4c657373457175616c 1732:S4|4c657373 1733:S5|457175616c 1734:O1|@15386 1735:O1|@15387 1736:O1|@15388 1737:O1|@15389 1738:O2|3,@1739 1739:S10|424547494e4c4f4f5028 1740:O1|@15390 1741:S4|576f7264 1742:S46|4261636b656e64496e7465726d656469617465436f64652e4275696c74496e732e62696e61727952657072283129 1743:S4|54657374 1744:S6|5369676e6564 1745:S8|556e7369676e6564 1746:S18|416c6c6f63617465427974654d656d6f7279 1747:S5|4669786564 1748:S9|4c61726765576f7264 1749:S3|586f72 1750:S2|4f72 1751:S3|416e64 1752:S15|526967687441726974686d65746963 1753:S12|52696768744c6f676963616c 1754:S4|4c656674 1755:S4|5265616c 1756:O1|@15391 1757:O1|@15392 1758:S11|436f6d7061726542797465 1759:S9|457175616c42797465 1760:S8|4d6f766542797465 1761:S8|4d6f7665576f7264 1762:O2|3,@370 1763:O2|@1500,@1764 1764:O2|@1765,0 1765:O2|3,@418 1766:O3|1,0,3 1767:O2|3,@416 1768:O2|@1323,@1321 1769:O2|3,@1770 1770:S2|6966 1771:O2|3,@1772 1772:S4|7468656e 1773:O2|3,@1774 1774:S4|656c7365 1775:O3|@15393,@1776,@30 1776:O1|@15394 1777:S20|4c4954203c6c6f6e6720776f726420646174613e 1778:S23|416464726573732e737472696e674f66576f7264283129 1779:S3|4c4954 1780:S6|434f44452022 1781:S9|425954452064617461 1782:S5|46554e2022 1783:S19|506f6c7947657446756e6374696f6e4e616d65 1784:O2|3,@1785 1785:S9|526563757273697665 1786:S7|436c6f73757265 1787:S5|4c6f63616c 1788:S3|417267 1789:O1|@15395 1790:O1|@15396 1791:O2|3,@1792 1792:S11|4765745468726561644964 1793:S10|5749544820657869643d 1794:O2|3,@1795 1795:S7|48414e444c4528 1796:S5|282a562a29 1797:O3|1,0,2 1798:S7|696e6c696e652c 1799:O1|@15397 1800:O1|@15408 1801:S34|42617365436f6465547265652e7072657474792831297072696e7441726773283229 1802:O1|@15398 1803:O1|@15399 1804:O2|3,@420 1805:S27|42617365436f6465547265652e7072657474795573616765283129 1806:S8|5573654669656c64 1807:O1|@15400 1808:O1|@15401 1809:O1|@15402 1810:O5|0,0,0,0,@1812 1811:O2|@1762,0 1812:O2|@1762,@1813 1813:O2|@1500,@1814 1814:O2|@1815,0 1815:O2|3,@449 1816:O1|@15403 1817:O1|@15404 1818:O2|3,@1819 1819:S2|2d3e 1820:O1|@15405 1821:O2|3,@1822 1822:S6|4578706f7274 1823:O1|@15406 1824:O2|@1323,@1825 1825:O2|@1826,0 1826:O2|3,@1827 1827:S5|3a7265616c 1828:O2|@1500,@1829 1829:O2|@1324,@1830 1830:O2|@1323,0 1831:O1|@15407 1832:S8|206c6f63616c732c 1833:O1|@15409 1834:S8|636c6f737572653d 1835:O1|@15410 1836:O1|@15411 1837:S14|726563757273697665207573653d 1838:O1|@15412 1839:O1|@15413 1840:O2|@1323,@1841 1841:O2|@1842,0 1842:O2|3,@1843 1843:S2|2a29 1844:O2|3,@1845 1845:S2|282a 1846:O2|3,@1847 1847:S3|666e28 1848:S6|4d4c576f7264 1849:S15|4d4c576f7264496d6d757461626c65 1850:S6|433136426974 1851:S6|433332426974 1852:S6|433634426974 1853:S5|4338426974 1854:S7|43446f75626c65 1855:S6|43466c6f6174 1856:S6|4d4c42797465 1857:S15|4d4c42797465496d6d757461626c65 1858:S14|4d4c576f7264556e746167676564 1859:S4|4c6f6164 1860:O1|@15414 1861:O1|@15415 1862:O1|@15416 1863:O2|@1500,@1864 1864:O2|@1865,0 1865:O2|3,@384 1866:O2|@1323,@1867 1867:O2|@1868,0 1868:O2|3,@1869 1869:S3|656e64 1870:O2|3,@1871 1871:S2|696e 1872:O2|3,@1873 1873:S3|6c6574 1874:O2|3,@1875 1875:S6|524149534528 1876:O2|@1877,0 1877:S2|2c20 1878:S13|534554434f4e5441494e455228 1879:S5|53746f7265 1880:O2|3,@1881 1881:S2|3c3d 1882:O2|@369,0 1883:S8|5441475445535428 1884:S8|4441544154595045 1885:S5|5455504c45 1886:O1|@15417 1887:O1|@15418 1888:O1|@15419 1889:O2|@15421,@1707 1890:O2|3,@294 1891:S35|42617365436f6465547265652e70726574747953696d706c6542696e64696e67283329 1892:S9|76616c204c6f63616c 1893:O1|@15422 1894:O1|@15423 1895:O2|3,@386 1896:O2|3,@1912 1897:S29|42617365436f6465547265652e70726574747942696e64696e67283129 1898:O1|@15425 1899:O1|@15426 1900:S12|3d20436f6e7461696e657220 1901:O2|3,@1902 1902:S4|77697468 1903:O1|@15427 1904:O2|@1500,@1909 1905:O1|@15428 1906:O1|@15429 1907:O1|@15430 1908:O1|@15431 1909:O2|@1910,0 1910:O2|3,@1911 1911:S5|20616e6420 1912:S8|76616c2072656320 1913:O1|@15432 1914:O1|@15433 1915:S41|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d69736572283429 1916:O2|3,@3418 1917:S55|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f6365737354726565283429 1918:O1|@15434 1919:O11|@15438,@1958,@1968,@1999,@2001,@2003,@2019,@2021,@2043,@2110,@1932 1920:S35|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329 1921:O4|@71,@1928,0,@1927 1922:S48|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296c6f6f6b757041646472283129 1923:O4|@16,@815,@1925,@1924 1924:O5|@1926,1602,0,1602,0 1925:S31|746f70206c6576656c207265616368656420696e2073696d706c6966696572 1926:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f53494d504c49464945522e736d6c 1927:O5|@1929,52,0,52,0 1928:S6|4f7074696f6e 1929:S18|2e2f62617369732f4f7074696f6e2e736d6c 1930:S47|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329656e74657241646472283129 1931:S44|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296d6b41646472283129 1932:O12|@15554,@1919,@2151,@1958,@1968,@1999,@2001,@2003,@2019,@2021,@2043,@2110 1933:O1|@15450 1934:S36|434f4445545245455f53494d504c494649455228292e73696d705370656369616c283429 1935:S39|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283129283129 1936:O1|@15440 1937:O1|@15441 1938:S27|42617365436f6465547265652e6d6170436f646574726565283229 1939:O1|@15449 1940:S34|42617365436f6465547265652e6d6170436f6465747265652832296d617074283129 1941:O1|@15442 1942:O1|@15443 1943:O1|@15444 1944:S47|42617365436f6465547265652e6d6170436f6465747265652832296d6170742831296d617062696e64696e67283129 1945:O4|@16,@815,@1947,@1946 1946:O5|@1948,617,0,617,0 1947:S8|64654c616d626461 1948:S45|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42617365436f6465547265652e736d6c 1949:O1|@15445 1950:O1|@15446 1951:O1|9 1952:O1|@15447 1953:O4|@16,@815,@1073,@1954 1954:O5|@1948,616,0,616,0 1955:O1|@15448 1956:O1|@15451 1957:S44|434f4445545245455f53494d504c494649455228292e73696d705370656369616c28342973706c6974283329 1958:O2|@15452,@1919 1959:S34|434f4445545245455f53494d504c494649455228292e73696d705475706c65283529 1960:O1|@15454 1961:S50|434f4445545245455f53494d504c494649455228292e73696d705475706c6528352970726f636573734669656c6473283329 1962:O1|@15455 1963:O1|@15456 1964:O4|@16,@815,@1967,@1966 1965:S45|434f4445545245455f53494d504c494649455228292e73696d705475706c652835296765744669656c64283129 1966:O5|@1926,1441,0,1441,0 1967:S24|6765744669656c64202d20696e76616c696420696e646578 1968:O2|@15457,@1919 1969:O1|@15476 1970:S39|434f4445545245455f53494d504c494649455228292e73696d7049665468656e456c7365283629 1971:O1|@15458 1972:O1|@15460 1973:S43|434f4445545245455f53494d504c494649455228292e7370656369616c546f47656e6572616c2833292829 1974:O1|@15459 1975:O1|@15461 1976:S30|434f4445545245455f53494d504c494649455228292e6d6b456e76283229 1977:O4|@72,@1979,0,@1978 1978:O5|@956,51,0,51,0 1979:S5|456d707479 1980:O4|11,@239,0,@1982 1981:S12|4c6973742e74616b65283229 1982:O5|@956,71,0,71,0 1983:O1|@15462 1984:O1|@15463 1985:S33|434f4445545245455f46554e4354494f4e5328292e636f646550726f7073283129 1986:O1|@15464 1987:O1|@15465 1988:O1|@15466 1989:O1|@15467 1990:O1|@15468 1991:O1|@15469 1992:O1|@15470 1993:O1|@15471 1994:O1|@15472 1995:O1|@15473 1996:O1|@15474 1997:O1|@15475 1998:O1|@15477 1999:O3|@15478,@1932,@1919 2000:S43|434f4445545245455f53494d504c494649455228292e73696d704172626974726172794172697468283829 2001:O3|@15482,@1932,@1919 2002:S45|434f4445545245455f53494d504c494649455228292e73696d70417262697472617279436f6d70617265283829 2003:O2|@15486,@1919 2004:O2|16,@2017 2005:S35|434f4445545245455f53494d504c494649455228292e73696d7042696e617279283629 2006:O4|7,@317,0,@2007 2007:O5|@318,252,0,252,0 2008:O4|@16,@815,@2010,@2009 2009:O5|@1926,1022,0,1022,0 2010:S19|576f726441726974683a20417269746852656d 2011:O4|@16,@815,@2013,@2012 2012:O5|@1926,1021,0,1021,0 2013:S20|576f726441726974683a20417269746851756f74 2014:O2|16,@2015 2015:O3|6,@2016,0 2016:O4|5,@321,0,0 2017:O3|6,@2018,0 2018:O4|7,@323,0,0 2019:O2|@15487,@1919 2020:S34|434f4445545245455f53494d504c494649455228292e73696d70556e617279283529 2021:O3|@15488,@1919,@1932 2022:O1|@15498 2023:S41|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629 2024:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283129 2025:O1|@15491 2026:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283329 2027:O1|@15492 2028:S24|42617365436f6465547265652e666f6c6474726565283329 2029:S32|42617365436f6465547265652e666f6c64747265652833296674726565283229 2030:O4|@16,@815,@2032,@2031 2031:O5|@1926,783,0,783,0 2032:S35|73696d7046756e6374696f6e43616c6c3a20617267756d656e74206d69736d61746368 2033:O1|@15493 2034:S55|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362970726f6365737341726773283329 2035:O4|4,@290,0,@2036 2036:O5|@833,78,0,78,0 2037:O4|@16,@815,@2040,@2039 2038:S56|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c2836296c6f63616c4f6c6441646472283129 2039:O5|@1926,818,0,818,0 2040:S27|6c6f63616c4f6c64416464723a204c6f6164526563757273697665 2041:S59|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629736574546162466f72496e6c696e65283129 2042:O1|@15496 2043:O2|@15500,@1932 2044:O1|@15513 2045:S35|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529 2046:O1|@15502 2047:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283129 2048:O1|@15503 2049:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229 2050:O2|@2051,@951 2051:O2|1,@937 2052:S66|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329 2053:O1|@15505 2054:S36|434f4445545245455f46554e4354494f4e5328292e616464546f436c6f73757265283229 2055:S82|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329636f6e76657274456e76283129283129 2056:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529736574546162283129 2057:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296d6b41646472283129 2058:O1|@15510 2059:S42|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632836292d45 2060:O1|@15511 2061:S44|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632d283429283129 2062:O1|@15512 2063:O1|@15514 2064:S40|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629 2065:S52|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229 2066:O1|@15516 2067:O1|@15538 2068:S62|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283229 2069:O1|@15517 2070:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c746572556e75736564283229 2071:O1|@15519 2072:S79|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c7465724c6f6f7041726773283129 2073:O4|@16,@815,@2076,@2075 2074:S74|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322973706c697441726773283329 2075:O5|@2077,337,0,337,0 2076:S9|73706c697441726773 2077:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f52454d4f56455f524544554e44414e542e736d6c 2078:O1|@15520 2079:O1|@15521 2080:O4|@16,@815,@2082,@2081 2081:O5|@2077,126,0,126,0 2082:S25|636c65616e457874726163743a20656d707479207573616765 2083:O1|@15522 2084:O1|@15523 2085:O1|@15534 2086:S54|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329 2087:O1|@15525 2088:S63|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329616464526566283129 2089:O1|@15526 2090:O1|@15528 2091:O1|@15530 2092:O1|@15531 2093:O4|@16,@815,@2095,@2094 2094:O5|@2077,101,0,101,0 2095:S12|6e6f74205573654669656c64 2096:O4|@16,@815,@2095,@2097 2097:O5|@2077,98,0,98,0 2098:O1|@938 2099:O1|@15532 2100:O1|@15533 2101:S15|4c697374506169722e7a6970283229 2102:O1|@15535 2103:O1|@15537 2104:S76|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f6365737344656373283129 2105:O1|@15536 2106:S93|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734465637328312970726f636573734d757475616c73283329 2107:O1|@15539 2108:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734669656c64283229 2109:S65|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283129283129 2110:O3|@15540,@1919,@2043 2111:O1|@15541 2112:S35|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329 2113:O1|@15553 2114:S46|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329636f707944656373283229 2115:O4|@16,@815,@2117,@2116 2116:O5|@1926,590,0,590,0 2117:S32|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e6572 2118:O4|@16,@815,@2120,@2119 2119:O5|@1056,310,0,310,0 2120:S27|6d6b4c6f616478783a20617267756d656e74206e65676174697665 2121:O4|@16,@815,@2123,@2122 2122:O5|@1926,599,0,599,0 2123:S37|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e65722073697a65 2124:O1|@15542 2125:O1|@15543 2126:O1|@15544 2127:O2|0,0 2128:S19|4c6973742e706172746974696f6e2833292829 2129:O1|@15545 2130:O1|@15546 2131:O1|@15547 2132:S17|4c697374506169722e6d61702833292829 2133:O2|@2135,@2134 2134:O1|@15549 2135:O1|@15548 2136:S28|434f4445545245455f46554e4354494f4e5328292e61726373283129 2137:S35|434f4445545245455f46554e4354494f4e5328292e6e6f646541646472657373283129 2138:O1|@15550 2139:O1|@15551 2140:S48|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e7473283229 2141:O4|103,@861,@2146,@2145 2142:S66|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e74283329 2143:O1|@15552 2144:S80|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e7428332970726f636573734c696e6b283229 2145:O5|@2147,91,0,91,0 2146:S11|737461636b20656d707479 2147:S41|6d6c736f757263652f4d4c436f6d70696c65722f5374726f6e676c79436f6e6e65637465642e736d6c 2148:O4|@16,@815,@2150,@2149 2149:O5|@1056,449,0,449,0 2150:S24|706172746974696f6e4d757461626c6542696e64696e6773 2151:O2|@15604,@1919 2152:O1|@15602 2153:S36|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529 2154:O1|@15555 2155:O1|@15556 2156:O1|@15557 2157:O1|@15558 2158:O1|@15559 2159:O1|@15560 2160:O1|@15562 2161:S49|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529666f6c644c6f6f702833292829 2162:O1|@15563 2163:O1|@15566 2164:O1|@15567 2165:O1|@15568 2166:S59|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529636865636b4c6f6f70417267732832296d617033283329 2167:O1|@15569 2168:O4|@73,@2171,0,@2170 2169:S21|4c697374506169722e666f6c647245712834292829 2170:O5|@2172,89,0,89,0 2171:S14|556e657175616c4c656e67746873 2172:S20|2e2f62617369732f4c697374506169722e736d6c 2173:O1|@15570 2174:O1|@15571 2175:S50|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296368616e67654c6f6f7073283129 2176:O1|@15573 2177:O1|@15574 2178:O1|@15575 2179:O1|@15576 2180:O2|6,0 2181:O1|@15577 2182:S58|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296f7065726174696f6e2d6d616b654d6f766573283129 2183:O1|@15578 2184:O1|@15579 2185:O1|@15580 2186:O1|@15581 2187:O1|@15582 2188:O1|@15583 2189:O1|@15584 2190:O1|@15587 2191:O1|@15588 2192:O1|@15589 2193:O1|@15590 2194:O1|@15592 2195:O1|@15593 2196:O1|@15598 2197:S45|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429 2198:O1|@15594 2199:S40|434f4445545245455f46554e4354494f4e5328292e6d6b536574436f6e7461696e65722833292829 2200:O1|@15595 2201:O1|@15596 2202:O4|11,@239,0,@2204 2203:S54|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e657228342973656c656374283229 2204:O5|@2205,199,0,199,0 2205:S21|2e2f62617369732f426f6f6c41727261792e736d6c 2206:O1|@15597 2207:O4|@72,@1979,0,@2209 2208:S59|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429636865636b4669656c6473283229 2209:O5|@956,47,0,47,0 2210:O4|4,@290,0,@2211 2211:O5|@2205,104,0,104,0 2212:O4|4,@290,0,@2213 2213:O5|@2205,47,0,47,0 2214:O4|11,@239,0,@2216 2215:S62|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e65722834296669656c6473546f46696c746572283129 2216:O5|@2205,402,0,402,0 2217:O1|@2218 2218:O3|6,1,0 2219:O1|@2220 2220:O3|6,0,0 2221:O1|@15600 2222:O1|@15601 2223:O1|@15603 2224:O1|@15605 2225:S36|434f4445545245455f53494d504c494649455228292e73696d7041646472657373283429 2226:O1|@15606 2227:O1|@15607 2228:O1|@15608 2229:O2|3,@2230 2230:S20|4f7574707574206f662073696d706c6966696572 2231:O1|@15609 2232:O4|@16,@815,@2234,@2233 2233:O5|@2235,1476,0,1476,0 2234:S30|746f70206c6576656c207265616368656420696e206f7074696d69736572 2235:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4f5054494d495345522e736d6c 2236:O1|@15610 2237:O1|@15611 2238:O2|3,@2239 2239:S17|4f7574707574206f6620636c65616e6572 2240:S66|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f63657373547265652834296d616b6541646472283129 2241:O1|@15614 2242:S35|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283129283129 2243:S32|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283329 2244:O1|@15616 2245:O1|@15625 2246:S33|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329 2247:S42|434f4445545245455f4f5054494d4953455228292e6f70744669656c64732833296669656c642d283129 2248:O1|@15618 2249:S49|434f4445545245455f4f5054494d4953455228292e6f70744669656c647328332970757368436f6e7461696e6572283229 2250:O1|@15620 2251:O1|@15622 2252:S48|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329736574436f6e7461696e6572283129 2253:S38|434f4445545245455f4f5054494d4953455228292e6669656c6473546f46696c746572283129 2254:O1|@15624 2255:S53|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329636f6e7461696e65722d6d6b4669656c64283329 2256:O1|@15628 2257:O1|@15630 2258:O1|@15631 2259:O1|@15688 2260:S33|434f4445545245455f4f5054494d4953455228292e6f70744c616d626461283529 2261:O1|@15632 2262:S47|434f4445545245455f4f5054494d4953455228292e6f70744c616d6264612835296f7074436f6e746578742d283129 2263:O1|@15637 2264:O1|@15638 2265:S40|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329 2266:S51|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329636865636b557365283429 2267:O1|@15639 2268:O1|@15652 2269:S45|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e283729 2270:O1|@15640 2271:S55|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e28372967657441726773283829 2272:O1|@15641 2273:O2|8,@937 2274:S53|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e672834292d45 2275:O1|@15642 2276:S51|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429 2277:O1|@15645 2278:S62|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e747279283129 2279:S71|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e7472792831296d6170417267283229 2280:O1|@15647 2281:S39|434f4445545245455f4f5054494d4953455228292e6f6e6c7946756e6374696f6e283129283129 2282:O4|@16,@815,@1073,@2283 2283:O5|@2235,248,0,248,0 2284:O1|@15648 2285:O1|@15649 2286:O1|@15650 2287:O1|@15651 2288:O1|@15653 2289:O1|@15655 2290:S52|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f70283429 2291:O1|@15654 2292:S62|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f702834296d617041726773283529 2293:O1|@15656 2294:O1|@15660 2295:S36|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e283229 2296:O1|@15657 2297:O1|@15658 2298:O1|@15659 2299:S30|434f4445545245455f4f5054494d4953455228292e6d6170417267283129 2300:S33|434f4445545245455f4f5054494d4953455228292e66696e645475706c65283229 2301:O1|@15661 2302:S51|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e2832296d657267655061747465726e283229 2303:O1|@15662 2304:O4|@73,@2171,0,@2306 2305:S19|4c697374506169722e6d617045712833292829 2306:O5|@2172,68,0,68,0 2307:O1|@15663 2308:O1|@15664 2309:O4|@72,@1979,0,@2310 2310:O5|@2235,522,0,522,0 2311:O1|@15665 2312:O1|@15666 2313:O1|@15667 2314:S40|434f4445545245455f4f5054494d4953455228292e626f647952657475726e735475706c65283129 2315:O2|0,@1296 2316:O1|@15668 2317:O1|@15678 2318:S39|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329 2319:O4|@16,@815,@2321,@2320 2320:O5|@2235,936,0,936,0 2321:S15|6465637572727946756e6374696f6e 2322:S47|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329646f4d6170283129 2323:O1|@15671 2324:O1|@15672 2325:S50|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e2833296d61704172672833292829 2326:O1|@15673 2327:O1|@15674 2328:O1|@15675 2329:O1|@15676 2330:O1|@15677 2331:O1|@15679 2332:O1|@15687 2333:S37|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429 2334:S45|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429646f4d6170283129 2335:O1|@15682 2336:O1|@15683 2337:O1|@15684 2338:O1|@15685 2339:S48|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c742834296d61704172672833292829 2340:O1|@15686 2341:O2|@2342,0 2342:O2|@1276,1 2343:S47|434f4445545245455f4f5054494d4953455228292e6275696c6446756c6c5475706c65283229657874417267283229 2344:O1|@15717 2345:S45|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429 2346:O1|@15689 2347:O1|@15709 2348:S58|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834296d61705061747465726e283429 2349:O1|@15690 2350:O1|@15706 2351:S73|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e74283529 2352:O1|@15691 2353:O1|@15701 2354:S85|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b283229 2355:S2|2d50 2356:O1|@15692 2357:O1|@15693 2358:O1|@15694 2359:O1|@15695 2360:O4|@72,@1979,0,@2361 2361:O5|@956,48,0,48,0 2362:O1|@15696 2363:O1|@15697 2364:S95|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d617041726773283229 2365:O4|@16,@815,@2370,@2369 2366:S104|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d6170417267732832296d6170417267283229 2367:O1|@15698 2368:O1|@15699 2369:O5|@2235,731,0,731,0 2370:S17|6d6170417267733a206d69736d61746368 2371:O1|@15700 2372:O1|@15702 2373:O1|@15703 2374:S86|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c79283329 2375:O1|@15704 2376:S97|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c792833296d616b6541726773283229 2377:O1|@15705 2378:S2|2d45 2379:O1|@15707 2380:O1|@15708 2381:S53|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429646f4d6170283129 2382:O1|@15712 2383:O1|@15713 2384:O1|@15715 2385:O1|@15714 2386:O1|@15716 2387:O1|@15718 2388:O1|@15719 2389:O1|@15721 2390:O1|@15724 2391:O1|@15725 2392:O1|@15726 2393:S45|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e67283129 2394:O1|@15730 2395:O1|@15732 2396:S57|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e672831296d6170526563446563283229 2397:O4|@16,@815,@2399,@2398 2398:O5|@2235,963,0,963,0 2399:S22|6d617062696e64696e673a206e6f74206c616d626461 2400:O1|@15731 2401:O1|@15733 2402:S53|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e283429 2403:O1|@15952 2404:S70|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229 2405:O1|@15736 2406:O1|@15737 2407:O1|@15738 2408:O2|@15946,@24 2409:S53|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429 2410:O4|@16,@815,@2413,@2412 2411:S66|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296c6f6f6b757041646472283129 2412:O5|@2414,261,0,261,0 2413:S33|6c6f6f6b7570436f6e7374616e743a20746f702d6c6576656c2072656163686564 2414:S68|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e532e736d6c 2415:S64|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429636f6e746578742d283129 2416:O2|@15742,@2418 2417:S50|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283129283129 2418:O2|@15939,@2416 2419:O1|@15756 2420:S47|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283429 2421:O1|@15744 2422:O1|@15746 2423:O1|@15747 2424:O1|@15748 2425:S15|4c6973742e666f6c64722833292829 2426:O1|@15749 2427:S65|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e7328342970726f6365737342696e64696e6773283129 2428:O1|@15752 2429:O1|@15753 2430:O4|@73,@2171,0,@2431 2431:O5|@2172,75,0,75,0 2432:O1|@15800 2433:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465546f436f6e7374616e74283329 2434:O1|@15757 2435:O4|@16,@815,@2438,@2437 2436:S49|434f4445545245455f4c414d4244415f4c49465428292e636f646547656e6572617465283329746f706c6576656c283129 2437:O5|@2439,476,0,476,0 2438:S17|546f70206c6576656c2072656163686564 2439:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4c414d4244415f4c4946542e736d6c 2440:O1|@15758 2441:S35|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429 2442:O1|@15767 2443:S47|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f6465283129 2444:O1|@15760 2445:O4|11,@239,0,@2451 2446:S61|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f646528312970726f6365737344656373283129 2447:O1|@15761 2448:S66|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f526563757273697665283129 2449:S64|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f436c6f73757265283129 2450:O1|@15764 2451:O5|@2205,396,0,396,0 2452:O1|@15768 2453:S37|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f6479283529 2454:O1|@15799 2455:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f6465283129 2456:O1|@15770 2457:O1|@15788 2458:S65|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f646528312970726f6365737344656373283129 2459:O1|@15771 2460:O1|@15772 2461:O1|@15787 2462:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d62646173283129 2463:O1|@15773 2464:S20|4c6973742e6d61705061727469616c2832292829 2465:O1|@15774 2466:O1|@15775 2467:O1|@15776 2468:O1|@15777 2469:O1|@15784 2470:S69|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329 2471:O1|@15778 2472:O1|@15780 2473:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283129 2474:O1|@15782 2475:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283229 2476:O1|@15781 2477:O4|@16,@815,@2479,@2478 2478:O5|@2439,400,0,400,0 2479:S8|6d6170546f417267 2480:S84|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329726563757273697665526566283129 2481:O1|@15785 2482:O1|@15786 2483:S11|3c746f70206c6576656c3e 2484:S61|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831296765744974656d283229 2485:O1|@15789 2486:O1|@15793 2487:S64|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929 2488:O1|@15791 2489:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283129 2490:O1|@15792 2491:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283229 2492:S81|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f7375726528392970726f636573736564426f64792d283129 2493:O4|@16,@815,@2495,@2494 2494:O5|@2439,207,0,207,0 2495:S30|4c69667465642066756e6374696f6e206f7574206f6620636f6e74657874 2496:O1|@15794 2497:O1|@15795 2498:O1|@15796 2499:O1|@15797 2500:O1|@15798 2501:O4|@16,@815,@2503,@2502 2502:O5|@2439,481,0,481,0 2503:S33|434f4445545245455f4c414d4244415f4c4946543a636f646547656e6572617465 2504:O2|@15893,@2765 2505:S48|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e636f646547656e6572617465283329 2506:O1|@15801 2507:O1|@15805 2508:S54|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329 2509:O1|@15802 2510:O4|@16,@815,@2513,@2512 2511:S67|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837292d45 2512:O5|@2514,847,0,847,0 2513:S31|6f75746572206c6576656c207265616368656420696e20636f7079436f6465 2514:S63|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f5354415449435f4c494e4b5f414e445f43415345532e736d6c 2515:O1|@15803 2516:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329746f704c6576656c283129 2517:O1|@15804 2518:O1|@15856 2519:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729 2520:O2|@15806,@2521 2521:O2|@15848,@2520 2522:O1|@15847 2523:S74|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129 2524:O1|@15807 2525:O1|@15808 2526:O1|@15814 2527:S78|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929 2528:O1|@15810 2529:S85|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392970726576283329 2530:S104|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929707265762833296d616b65436c6f73757265456e747279283229 2531:S88|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392972656343616c6c283129 2532:O1|@15812 2533:O5|0,0,0,@2538,@2547 2534:S9|7072696e742d747269 2535:O2|3,@585 2536:O5|0,0,0,@2538,@2537 2537:O2|@2541,0 2538:O2|@2539,0 2539:O2|0,@2540 2540:O5|@2514,745,745,0,0 2541:O2|3,@2542 2542:S7|54726943616c6c 2543:O5|0,0,0,@2538,@2544 2544:O2|@2545,0 2545:O2|3,@2546 2546:S10|547269436c6f73757265 2547:O2|@2548,0 2548:O2|3,@2549 2549:S8|547269556e726566 2550:O1|@15815 2551:S84|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e736572742831296d617041726773283229 2552:O1|@15816 2553:O1|@15817 2554:O1|@15818 2555:O3|7,0,0 2556:O1|@15819 2557:O1|@15820 2558:O1|@15821 2559:O1|@15832 2560:S81|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129 2561:O1|@15822 2562:O2|@15823,@73 2563:O5|@2172,51,0,51,0 2564:S17|4c697374506169722e7a69704571283229 2565:O1|@15824 2566:S87|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129 2567:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129283129 2568:O1|@15826 2569:O1|@15827 2570:S17|4d6973632e717569636b536f7274283229 2571:O1|@15828 2572:S22|4d6973632e717569636b536f72742832297173283229 2573:O1|@15829 2574:O1|@15830 2575:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e766572744361736528312966696c746572283129 2576:O1|@15831 2577:S94|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129657874656e6443617365283229 2578:O4|@16,@815,@2580,@2579 2579:O5|@2514,659,0,659,0 2580:S5|4361736573 2581:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831297265636f6e76657274283129 2582:O1|11 2583:O1|@15833 2584:O1|@15834 2585:O1|@15835 2586:O1|@15846 2587:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e73283129 2588:O1|@15836 2589:O1|@15837 2590:O1|@15838 2591:O1|@15839 2592:O1|@15840 2593:S111|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e7328312970726f63657373436c6f7375726573283329 2594:O1|@15841 2595:O1|@15842 2596:O1|@15843 2597:O1|@15844 2598:O4|@16,@815,@2600,@2599 2599:O5|@2514,381,0,381,0 2600:S8|61734d757475616c 2601:O1|@15845 2602:O4|@16,@815,@2604,@2603 2603:O5|@2514,419,0,419,0 2604:S30|64656353657175656e63655769746846696e616c4578703a20656d707479 2605:O4|@16,@815,@2607,@2606 2606:O5|@2514,421,0,421,0 2607:S46|64656353657175656e63655769746846696e616c4578703a206c617374206973206e6f742061204e756c6c446563 2608:O1|@15853 2609:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e64283329 2610:O1|@15849 2611:O5|0,0,0,@2615,@2656 2612:S16|7072696e742d73696d696c6172697479 2613:O5|0,0,0,@2615,@2614 2614:O2|@2618,0 2615:O2|@2616,0 2616:O2|0,@2617 2617:O5|@2514,495,495,0,0 2618:O2|3,@2619 2619:S9|446966666572656e74 2620:O1|@15850 2621:O5|0,0,0,@2651,@2650 2622:S17|7072696e742d6269634c6f6164466f726d 2623:O1|@15851 2624:O2|@1500,@2625 2625:O2|@2626,0 2626:O2|3,@601 2627:O2|3,@594 2628:O5|0,0,0,@2630,@2629 2629:O2|@2634,0 2630:O2|@2631,0 2631:O2|0,@2632 2632:O5|@2633,219,219,0,0 2633:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f4261636b656e64496e7465726d656469617465436f64652e736d6c 2634:O2|3,@2635 2635:S15|4249434c6f6164417267756d656e74 2636:O5|0,0,0,@2638,@2637 2637:O2|@2641,0 2638:O2|@2639,0 2639:O2|0,@2640 2640:O5|@2633,220,220,0,0 2641:O2|3,@2642 2642:S14|4249434c6f6164436c6f73757265 2643:O5|0,0,0,@2645,@2644 2644:O2|@2648,0 2645:O2|@2646,0 2646:O2|0,@2647 2647:O5|@2633,218,218,0,0 2648:O2|3,@2649 2649:S12|4249434c6f61644c6f63616c 2650:O2|@2654,0 2651:O2|@2652,0 2652:O2|0,@2653 2653:O5|@2633,221,221,0,0 2654:O2|3,@2655 2655:S16|4249434c6f6164526563757273697665 2656:O2|@2657,0 2657:O2|3,@2658 2658:S7|53696d696c6172 2659:O1|@15852 2660:S86|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e6428332973696d696c6172283229 2661:O1|@15854 2662:O1|@15855 2663:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f646528372967657450726f7073283129 2664:O1|@15857 2665:S83|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f707950726f63436c6f73757265283329 2666:O1|@15858 2667:O1|@15885 2668:S33|4261636b656e64496e7465726d656469617465436f64652e707265747479283129 2669:O1|@15859 2670:O2|3,@396 2671:S34|4261636b656e64496e7465726d656469617465436f64652e704c6973742833292829 2672:O2|3,@395 2673:O1|@15860 2674:O2|3,@2675 2675:S2|2428 2676:O1|@15861 2677:O1|@15862 2678:O1|@15863 2679:O1|@15864 2680:O1|@15865 2681:S6|4445434c2023 2682:O2|@386,0 2683:O1|@15866 2684:O1|@15867 2685:O1|@15868 2686:S7|282066726f6d20 2687:S11|2065786861757374697665 2688:O1|@15869 2689:O2|3,@2692 2690:O2|3,@2691 2691:S10|3d3e2064656661756c74 2692:S2|3d3e 2693:O2|3,@2694 2694:S5|454c53453a 2695:O1|@15870 2696:O2|3,@2697 2697:S6|434153452028 2698:O2|3,@1877 2699:O2|3,@2700 2700:S3|494628 2701:O2|@2703,@2702 2702:O2|@366,0 2703:S10|52454355525349564528 2704:S5|434c4f5328 2705:S6|504152414d28 2706:S6|4c4f43414c28 2707:S9|494e44495245435428 2708:S5|66616c7365 2709:S4|74727565 2710:S3|434c3d 2711:S8|204c4f43414c533d 2712:O1|@15871 2713:S50|4261636b656e64496e7465726d656469617465436f64652e7072657474792831297072657474794172675479706573283129 2714:O2|3,@2715 2715:S5|415247533d 2716:O2|3,@2717 2717:S4|5245533d 2718:O1|@15872 2719:S6|20434c4f533d 2720:O1|@15873 2721:O1|@15874 2722:O2|@2723,0 2723:O2|3,@2724 2724:S9|297b4c414d4244417d 2725:O2|3,@2726 2726:S7|4c414d42444128 2727:O1|@15875 2728:O1|@15876 2729:S5|424c4f434b 2730:O1|@15877 2731:O1|@15878 2732:O1|@15880 2733:S40|4261636b656e64496e7465726d656469617465436f64652e70726574747942696e64696e67283129 2734:S11|434f4e5441494e45522023 2735:S6|4d555455414c 2736:O1|@15879 2737:O2|@1500,@2738 2738:O2|@2739,0 2739:O2|3,@2740 2740:S5|20414e4420 2741:O1|@15881 2742:S9|524543434f4e535452 2743:O1|@15882 2744:O1|@15883 2745:O1|@15884 2746:O4|@16,@815,@2748,@2747 2747:O5|@2514,861,0,861,0 2748:S13|4e6f74204249434c616d626461 2749:O1|@15886 2750:O2|@15887,@70 2751:S27|494e54434f4445434f4e5328292e636f6465437265617465283229 2752:S26|5072657474792e67657453696d706c655072696e746572283229 2753:O1|@15889 2754:O4|11,@239,0,@2764 2755:S40|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d283129 2756:O1|@15890 2757:O4|11,@239,0,@2759 2758:S25|537472696e672e6669656c64732832296669656c6427283229 2759:O5|@257,305,0,305,0 2760:O1|@15891 2761:O1|@15892 2762:S50|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c64283229 2763:S60|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c6428322966696e64546162283329 2764:O5|@647,121,0,121,0 2765:O4|@15914,@76,@77,@3052 2766:O3|@15895,@3036,@2785 2767:S21|494e5447434f444528292e636f646567656e283629 2768:O1|@15894 2769:O5|0,0,0,@2780,@2779 2770:S14|7072696e742d646563456e747279 2771:O5|0,0,0,@2773,@2772 2772:O2|@2777,0 2773:O2|@2774,0 2774:O2|0,@2775 2775:O5|@2776,73,73,0,0 2776:S49|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42797465436f64652f494e5447434f44452e4d4c 2777:O2|3,@2778 2778:S5|456d707479 2779:O2|@2783,0 2780:O2|@2781,0 2781:O2|0,@2782 2782:O5|@2776,72,72,0,0 2783:O2|3,@2784 2784:S9|537461636b41646472 2785:O2|@15911,@2766 2786:O5|@2776,839,0,839,0 2787:S30|494e5447434f444528292e636f646567656e28362967656e636465283429 2788:O2|4,@2180 2789:O2|4,@2790 2790:O2|218,0 2791:O1|@15896 2792:O1|@15897 2793:O2|4,@2794 2794:O2|169,0 2795:O2|4,@2796 2796:O2|168,0 2797:O2|4,@2798 2798:O2|167,0 2799:O2|4,@2800 2800:O2|166,0 2801:O2|4,@2802 2802:O2|165,0 2803:O2|4,@2804 2804:O2|164,0 2805:O2|4,@2806 2806:O2|163,0 2807:O2|4,@2808 2808:O2|162,0 2809:O2|4,@2810 2810:O2|160,0 2811:O2|4,@2812 2812:O2|189,0 2813:O4|@16,@815,@2815,@2814 2814:O5|@2776,517,0,517,0 2815:S34|544f444f3a204669786564507265636973696f6e41726974682041726974684d6f64 2816:O4|@16,@815,@2818,@2817 2817:O5|@2776,516,0,516,0 2818:S34|544f444f3a204669786564507265636973696f6e4172697468204172697468446976 2819:O2|4,@2820 2820:O2|174,0 2821:O2|4,@2822 2822:O2|173,0 2823:O2|4,@2824 2824:O2|172,0 2825:O2|4,@2826 2826:O2|171,0 2827:O2|4,@2828 2828:O2|170,0 2829:O2|4,@2830 2830:O2|200,0 2831:O2|4,@2832 2832:O2|199,0 2833:O2|4,@2834 2834:O2|198,0 2835:O2|4,@2836 2836:O2|197,0 2837:O4|@16,@815,@2839,@2838 2838:O5|@2776,547,0,547,0 2839:S42|4c61726765576f72644172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 2840:O2|4,@2841 2841:O2|196,0 2842:O2|4,@2843 2843:O2|195,0 2844:O2|4,@2845 2845:O2|194,0 2846:O2|4,@2847 2847:O2|193,0 2848:O2|4,@2849 2849:O2|192,0 2850:O2|4,@2851 2851:O2|190,0 2852:O2|4,@2853 2853:O2|203,0 2854:O2|4,@2855 2855:O2|202,0 2856:O2|4,@2857 2857:O2|201,0 2858:O2|4,@2859 2859:O2|206,0 2860:O2|4,@2861 2861:O2|205,0 2862:O2|4,@2863 2863:O2|204,0 2864:O2|4,@2865 2865:O2|216,0 2866:O2|4,@2867 2867:O2|215,0 2868:O2|4,@2869 2869:O2|214,0 2870:O4|@16,@815,@2872,@2871 2871:O5|@2776,566,0,566,0 2872:S37|5265616c4172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 2873:O2|4,@2874 2874:O2|213,0 2875:O2|4,@2876 2876:O2|212,0 2877:O2|4,@2878 2878:O2|211,0 2879:O2|4,@2880 2880:O2|210,0 2881:O2|4,@2882 2882:O2|209,0 2883:O2|4,@2884 2884:O2|207,0 2885:O2|4,@2886 2886:O2|181,0 2887:O2|4,@2888 2888:O2|180,0 2889:O2|4,@2890 2890:O2|179,0 2891:O2|4,@2892 2892:O2|178,0 2893:O4|@16,@815,@2895,@2894 2894:O5|@2776,524,0,524,0 2895:S37|576f72644172697468202d20756e696d706c656d656e74656420696e737472756374696f6e 2896:O2|4,@2897 2897:O2|177,0 2898:O2|4,@2899 2899:O2|185,0 2900:O2|4,@2901 2901:O2|184,0 2902:O2|4,@2903 2903:O2|183,0 2904:O2|4,@2905 2905:O2|188,0 2906:O2|4,@2907 2907:O2|187,0 2908:O2|4,@2909 2909:O2|186,0 2910:O1|@15898 2911:O1|@15899 2912:S26|494e54434f4445434f4e5328292e70757368436f6e7374283229 2913:O2|4,@2914 2914:O2|64,0 2915:O2|4,@2916 2916:O2|238,0 2917:O2|4,@2918 2918:O2|237,0 2919:O2|4,@2920 2920:O2|235,0 2921:O2|4,@2922 2922:O2|236,0 2923:O1|@15900 2924:O1|@15901 2925:O4|@16,@815,@2928,@2927 2926:S31|494e5447434f444528292e636f646567656e2836296c6f6361646472283129 2927:O5|@2776,110,0,110,0 2928:S26|6c6f63616464723a2062616420737461636b2061646472657373 2929:O2|4,@2930 2930:O2|217,0 2931:O2|4,@2932 2932:O2|120,0 2933:O2|4,@2934 2934:O2|241,0 2935:O2|4,@2936 2936:O2|109,0 2937:O1|@15902 2938:O4|@16,@815,@2942,@2944 2939:S27|494e54434f4445434f4e5328292e7265736574537461636b283329 2940:O4|@16,@815,@2942,@2941 2941:O5|@2943,1181,0,1181,0 2942:S10|7265736574537461636b 2943:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42797465436f64652f494e54434f4445434f4e532e4d4c 2944:O5|@2943,1174,0,1174,0 2945:O1|@15903 2946:S35|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d283129 2947:O2|4,@2948 2948:O2|219,0 2949:O2|4,@2950 2950:O2|222,0 2951:O2|4,@2952 2952:O2|223,0 2953:O2|4,@2954 2954:O2|224,0 2955:O2|4,@2956 2956:O2|221,0 2957:O2|4,@2958 2958:O2|226,0 2959:O2|4,@2960 2960:O2|225,0 2961:O2|4,@2962 2962:O2|220,0 2963:O2|4,@2964 2964:O2|239,0 2965:O4|@16,@815,@2967,@2966 2966:O5|@2776,604,0,604,0 2967:S44|67656e6364653a204249434c6f61644f7065726174696f6e202d206e6f7420776f7264206d756c7469706c65 2968:O4|@16,@815,@2970,@2969 2969:O5|@2776,257,0,257,0 2970:S27|4e6f20426567696e4c6f6f7020666f72204c6f6f7020696e737472 2971:O1|@15904 2972:O1|@15905 2973:O4|@16,@815,@2976,@2975 2974:S43|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d6c6f616441726773283229 2975:O5|@2776,272,0,272,0 2976:S30|6c6f6164417267733a204d69736d61746368656420617267756d656e7473 2977:O1|@15906 2978:O1|@15907 2979:S44|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d636f64654465636c73283129 2980:S48|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d67656e4d757475616c44656373283129 2981:S51|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d67656e4d757475616c44656373283129283129 2982:O2|4,@2983 2983:O2|16,0 2984:O1|@15909 2985:S44|494e5447434f444528292e636f646567656e28362967656e6364652834295f2d73657456616c756573283329 2986:O2|4,@2987 2987:O2|42,0 2988:O2|4,@2989 2989:O2|227,0 2990:O2|4,@2991 2991:O2|230,0 2992:O2|4,@2993 2993:O2|231,0 2994:O2|4,@2995 2995:O2|232,0 2996:O2|4,@2997 2997:O2|229,0 2998:O2|4,@2999 2999:O2|234,0 3000:O2|4,@3001 3001:O2|233,0 3002:O2|4,@3003 3003:O2|228,0 3004:O2|4,@3005 3005:O2|240,0 3006:O2|4,@3007 3007:O2|145,0 3008:O2|4,@3009 3009:O2|152,0 3010:O2|4,@3011 3011:O2|151,0 3012:O2|4,@3013 3013:O2|153,0 3014:O2|4,@3015 3015:O2|149,0 3016:O2|4,@3017 3017:O2|159,0 3018:O2|4,@3019 3019:O2|146,0 3020:O2|4,@3021 3021:O2|154,0 3022:O2|4,@3023 3023:O2|148,0 3024:O2|4,@3025 3025:O2|147,0 3026:O2|4,@3027 3027:O2|157,0 3028:O2|4,@3029 3029:O2|158,0 3030:O2|4,@3031 3031:O2|155,0 3032:O2|4,@3033 3033:O2|156,0 3034:S23|67656e6364653a206261642061646a7573746d656e7420 3035:O5|@2776,856,0,856,0 3036:O2|@15910,@2766 3037:O2|4,@3041 3038:S31|494e5447434f444528292e636f646567656e28362967656e50726f63283329 3039:O2|4,@3040 3040:O2|69,0 3041:O2|108,0 3042:O2|4,@3051 3043:S31|494e5447434f444528292e636f646567656e28362967656e4576616c283229 3044:O1|@15912 3045:O1|@15913 3046:O2|4,@3050 3047:S28|494e54434f4445434f4e5328292e67656e5461696c43616c6c283329 3048:O2|4,@3049 3049:O2|128,0 3050:O2|127,0 3051:O2|12,0 3052:O1|@15938 3053:O1|@15937 3054:S25|494e54434f4445434f4e5328292e636f7079436f6465283229 3055:O1|@15915 3056:O1|@15919 3057:S24|494e54434f4445434f4e5328292e67656e436f6465283329 3058:O1|@15916 3059:O4|@16,@815,@3062,@3061 3060:S25|494e54434f4445434f4e5328292e636f646553697a65283129 3061:O5|@2943,765,0,765,0 3062:S8|636f646553697a65 3063:O1|@15917 3064:O4|@16,@815,@3069,@3068 3065:S50|494e54434f4445434f4e5328292e7365744c6162656c73416e6453697a65732831297365744c6162416e6453697a65283229 3066:O1|@15918 3067:S59|494e54434f4445434f4e5328292e7365744c6162656c73416e6453697a65732831297365744c6162416e6453697a6528322961646a757374283329 3068:O5|@2943,854,0,854,0 3069:S30|7365744c6162416e6453697a65202d2073697a6520696e63726561736564 3070:O4|@16,@815,@3095,@3102 3071:S38|494e54434f4445434f4e5328292e67656e436f646528332967656e42797465436f6465283329 3072:O4|@16,@815,@3074,@3073 3073:O5|@2943,1027,0,1027,0 3074:S30|67656e42797465436f6465202d20496e6465786564436173652062797465 3075:O4|11,@239,0,@3076 3076:O5|@3077,99,0,99,0 3077:S42|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f44455f41525241592e4d4c 3078:O4|@16,@815,@3080,@3079 3079:O5|@2943,1017,0,1017,0 3080:S26|67656e42797465436f6465202d20696e64657865642063617365 3081:O4|@16,@815,@3080,@3082 3082:O5|@2943,1018,0,1018,0 3083:O4|@16,@815,@3080,@3084 3084:O5|@2943,995,0,995,0 3085:O4|@16,@815,@3087,@3086 3086:O5|@2943,978,0,978,0 3087:S28|67656e42797465436f6465202d20636f6e7374616e742072616e6765 3088:O4|@16,@815,@3087,@3089 3089:O5|@2943,967,0,967,0 3090:O4|@16,@815,@3092,@3091 3091:O5|@2943,929,0,929,0 3092:S23|67656e42797465436f6465202d206261636b206a756d70 3093:O4|@16,@815,@3095,@3094 3094:O5|@2943,931,0,931,0 3095:S24|67656e42797465436f6465202d206a756d702072616e6765 3096:O4|@16,@815,@3095,@3097 3097:O5|@2943,944,0,944,0 3098:O4|@16,@815,@3092,@3099 3099:O5|@2943,902,0,902,0 3100:O4|@16,@815,@3095,@3101 3101:O5|@2943,904,0,904,0 3102:O5|@2943,918,0,918,0 3103:O1|@15920 3104:S21|506f6c79436f707942797465566563546f436f6465 3105:O4|11,@239,0,@3106 3106:O5|@3077,112,0,112,0 3107:O1|@15921 3108:O1|@15936 3109:S26|494e54434f4445434f4e5328292e7072696e74436f6465283429 3110:S2|3a0a 3111:O1|@15922 3112:O4|11,@239,0,@3114 3113:S35|494e54434f4445434f4e5328292e7072696e74436f6465283429676574422833292829 3114:O5|@3077,89,0,89,0 3115:O4|@16,@815,@3117,@3116 3116:O5|@2943,682,0,682,0 3117:S36|7072696e74436f64653a20696e646972656374696f6e206c69737420636f6e6675736564 3118:O1|@15923 3119:O1|@15924 3120:O1|@15925 3121:O1|@15926 3122:O1|@15927 3123:O1|@15928 3124:O1|@15929 3125:O1|@15930 3126:S2|0a09 3127:O1|@15931 3128:O1|@15932 3129:O1|@15933 3130:O1|@15934 3131:O1|@15935 3132:S19|506f6c794c6f636b4d757461626c65436f6465 3133:S13|3c554e4b4e4f574e203235353e 3134:S8|656e746572496e74 3135:S11|3c554e4b4e4f574e20313e 3136:S4|6a756d70 3137:S9|6a756d7046616c7365 3138:S11|3c554e4b4e4f574e20343e 3139:S10|64656c48616e646c6572 3140:S9|616c6c6f635f726566 3141:S11|3c554e4b4e4f574e20373e 3142:S11|3c554e4b4e4f574e20383e 3143:S11|3c554e4b4e4f574e20393e 3144:S6|636173653136 3145:S12|3c554e4b4e4f574e2031313e 3146:S11|63616c6c436c6f73757265 3147:S7|72657475726e57 3148:S3|706164 3149:S12|3c554e4b4e4f574e2031353e 3150:S7|72616973654578 3151:S9|67657453746f726557 3152:S8|6e6f6e4c6f63616c 3153:S6|6c6f63616c57 3154:S9|696e64697265637457 3155:S10|6d6f7665546f56656357 3156:S12|3c554e4b4e4f574e2032323e 3157:S12|736574537461636b56616c57 3158:S6|726573657457 3159:S8|7265736574525f77 3160:S11|636f6e7374416464723136 3161:S9|636f6e7374496e7457 3162:S12|3c554e4b4e4f574e2032383e 3163:S12|3c554e4b4e4f574e2032393e 3164:S9|6a756d704261636b38 3165:S7|72657475726e42 3166:S10|6a756d704261636b3136 3167:S9|67657453746f726542 3168:S6|6c6f63616c42 3169:S9|696e64697265637442 3170:S10|6d6f7665546f56656342 3171:S12|736574537461636b56616c42 3172:S6|726573657442 3173:S7|72657365745242 3174:S9|636f6e7374496e7442 3175:S7|6c6f63616c5f30 3176:S7|6c6f63616c5f31 3177:S7|6c6f63616c5f32 3178:S7|6c6f63616c5f33 3179:S7|6c6f63616c5f34 3180:S7|6c6f63616c5f35 3181:S7|6c6f63616c5f36 3182:S7|6c6f63616c5f37 3183:S7|6c6f63616c5f38 3184:S7|6c6f63616c5f39 3185:S8|6c6f63616c5f3130 3186:S8|6c6f63616c5f3131 3187:S10|696e6469726563745f30 3188:S10|696e6469726563745f31 3189:S10|696e6469726563745f32 3190:S10|696e6469726563745f33 3191:S10|696e6469726563745f34 3192:S10|696e6469726563745f35 3193:S7|636f6e73745f30 3194:S7|636f6e73745f31 3195:S7|636f6e73745f32 3196:S7|636f6e73745f33 3197:S7|636f6e73745f34 3198:S8|636f6e73745f3130 3199:S8|72657475726e5f30 3200:S8|72657475726e5f31 3201:S8|72657475726e5f32 3202:S8|72657475726e5f33 3203:S11|6d6f7665546f5665635f30 3204:S11|6d6f7665546f5665635f31 3205:S11|6d6f7665546f5665635f32 3206:S11|6d6f7665546f5665635f33 3207:S11|6d6f7665546f5665635f34 3208:S11|6d6f7665546f5665635f35 3209:S11|6d6f7665546f5665635f36 3210:S11|6d6f7665546f5665635f37 3211:S12|3c554e4b4e4f574e2037373e 3212:S12|3c554e4b4e4f574e2037383e 3213:S12|3c554e4b4e4f574e2037393e 3214:S7|72657365745f31 3215:S7|72657365745f32 3216:S10|67657453746f72655f32 3217:S10|67657453746f72655f33 3218:S10|67657453746f72655f34 3219:S12|3c554e4b4e4f574e2038353e 3220:S11|6e6f6e4c6f63616c4c5f31 3221:S11|6e6f6e4c6f63616c4c5f32 3222:S11|6e6f6e4c6f63616c4c5f33 3223:S12|3c554e4b4e4f574e2038393e 3224:S12|3c554e4b4e4f574e2039303e 3225:S12|3c554e4b4e4f574e2039313e 3226:S12|3c554e4b4e4f574e2039323e 3227:S12|3c554e4b4e4f574e2039333e 3228:S12|3c554e4b4e4f574e2039343e 3229:S12|3c554e4b4e4f574e2039353e 3230:S12|3c554e4b4e4f574e2039363e 3231:S12|3c554e4b4e4f574e2039373e 3232:S12|3c554e4b4e4f574e2039383e 3233:S12|3c554e4b4e4f574e2039393e 3234:S8|7265736574525f31 3235:S8|7265736574525f32 3236:S8|7265736574525f33 3237:S6|7475706c6557 3238:S6|7475706c6542 3239:S7|7475706c655f32 3240:S7|7475706c655f33 3241:S7|7475706c655f34 3242:S4|6c6f636b 3243:S5|6c64657863 3244:S13|3c554e4b4e4f574e203131303e 3245:S13|3c554e4b4e4f574e203131313e 3246:S13|3c554e4b4e4f574e203131323e 3247:S13|3c554e4b4e4f574e203131333e 3248:S13|3c554e4b4e4f574e203131343e 3249:S13|3c554e4b4e4f574e203131353e 3250:S13|3c554e4b4e4f574e203131363e 3251:S13|3c554e4b4e4f574e203131373e 3252:S13|3c554e4b4e4f574e203131383e 3253:S13|3c554e4b4e4f574e203131393e 3254:S11|7075736848616e646c6572 3255:S13|3c554e4b4e4f574e203132313e 3256:S13|3c554e4b4e4f574e203132323e 3257:S6|7461696c6262 3258:S4|7461696c 3259:S6|7461696c3362 3260:S6|7461696c3462 3261:S7|7461696c335f32 3262:S7|7461696c335f33 3263:S10|73657448616e646c6572 3264:S13|3c554e4b4e4f574e203133303e 3265:S12|63616c6c4661737452545330 3266:S12|63616c6c4661737452545331 3267:S12|63616c6c4661737452545332 3268:S12|63616c6c4661737452545333 3269:S12|63616c6c4661737452545334 3270:S12|63616c6c4661737452545335 3271:S12|63616c6c46756c6c52545330 3272:S12|63616c6c46756c6c52545331 3273:S12|63616c6c46756c6c52545332 3274:S12|63616c6c46756c6c52545333 3275:S12|63616c6c46756c6c52545334 3276:S12|63616c6c46756c6c52545335 3277:S15|63616c6c46756c6c52545346746f46 3278:S15|63616c6c46756c6c52545347746f46 3279:S10|6e6f74426f6f6c65616e 3280:S8|6973546167676564 3281:S10|63656c6c4c656e677468 3282:S9|63656c6c466c616773 3283:S12|636c6561724d757461626c65 3284:S13|3c554e4b4e4f574e203135303e 3285:S10|61746f6d6963496e6372 3286:S10|61746f6d696344656372 3287:S11|61746f6d69635265736574 3288:S13|6c6f6e6757546f546167676564 3289:S13|7369676e6564546f4c6f6e6757 3290:S15|756e7369676e6564546f4c6f6e6757 3291:S7|7265616c416273 3292:S7|7265616c4e6567 3293:S13|666c6f61744669786564496e74 3294:S9|657175616c576f7264 3295:S12|6e6f74657175616c576f7264 3296:S10|6c6573735369676e6564 3297:S12|6c657373556e7369676e6564 3298:S12|6c65737345715369676e6564 3299:S14|6c6573734571556e7369676e6564 3300:S13|677265617465725369676e6564 3301:S15|67726561746572556e7369676e6564 3302:S15|6772656174657245715369676e6564 3303:S17|677265617465724571556e7369676e6564 3304:S8|6669786564416464 3305:S8|6669786564537562 3306:S9|66697865644d756c74 3307:S9|666978656451756f74 3308:S8|666978656452656d 3309:S8|6669786564446976 3310:S8|66697865644d6f64 3311:S7|776f7264416464 3312:S7|776f7264537562 3313:S8|776f72644d756c74 3314:S7|776f7264446976 3315:S7|776f72644d6f64 3316:S13|3c554e4b4e4f574e203138323e 3317:S7|776f7264416e64 3318:S6|776f72644f72 3319:S7|776f7264586f72 3320:S13|776f726453686966744c656674 3321:S13|776f72645368696674524c6f67 3322:S15|776f72645368696674524172697468 3323:S12|616c6c6f63427974654d656d 3324:S11|6c67576f7264457175616c 3325:S14|6c67576f72644e6f74657175616c 3326:S10|6c67576f72644c657373 3327:S12|6c67576f72644c6573734571 3328:S13|6c67576f726447726561746572 3329:S15|6c67576f7264477265617465724571 3330:S9|6c67576f7264416464 3331:S9|6c67576f7264537562 3332:S10|6c67576f72644d756c74 3333:S9|6c67576f7264446976 3334:S9|6c67576f72644d6f64 3335:S9|6c67576f7264416e64 3336:S8|6c67576f72644f72 3337:S9|6c67576f7264586f72 3338:S15|6c67576f726453686966744c656674 3339:S15|6c67576f72645368696674524c6f67 3340:S17|6c67576f72645368696674524172697468 3341:S9|7265616c457175616c 3342:S12|7265616c4e6f74657175616c 3343:S8|7265616c4c657373 3344:S10|7265616c4c6573734571 3345:S11|7265616c47726561746572 3346:S13|7265616c477265617465724571 3347:S7|7265616c416464 3348:S7|7265616c537562 3349:S8|7265616c4d756c74 3350:S7|7265616c446976 3351:S11|6765745468726561644964 3352:S15|616c6c6f63576f72644d656d6f7279 3353:S10|6c6f61644d4c576f7264 3354:S10|6c6f61644d4c42797465 3355:S6|6c6f61644338 3356:S7|6c6f6164433136 3357:S7|6c6f6164433332 3358:S7|6c6f6164433634 3359:S10|6c6f616443466c6f6174 3360:S11|6c6f616443446f75626c65 3361:S11|73746f72654d4c576f7264 3362:S11|73746f72654d4c42797465 3363:S7|73746f72654338 3364:S8|73746f7265433136 3365:S8|73746f7265433332 3366:S8|73746f7265433634 3367:S11|73746f726543466c6f6174 3368:S12|73746f726543446f75626c65 3369:S13|626c6f636b4d6f7665576f7264 3370:S13|626c6f636b4d6f766542797465 3371:S14|626c6f636b457175616c42797465 3372:S16|626c6f636b436f6d7061726542797465 3373:S12|6c6f6164556e746167676564 3374:S13|3c554e4b4e4f574e203234303e 3375:S13|64656c65746548616e646c6572 3376:S6|6a756d703332 3377:S11|6a756d70333246616c7365 3378:S11|636f6e7374416464723332 3379:S12|73657448616e646c65723332 3380:S6|636173653332 3381:S6|6a756d703136 3382:S11|6a756d70313666616c7365 3383:S12|73657448616e646c65723136 3384:S10|636f6e73744164647238 3385:S10|737461636b53697a6538 3386:S11|737461636b53697a653136 3387:S13|3c554e4b4e4f574e203235333e 3388:S13|3c554e4b4e4f574e203235343e 3389:S15|506f6c794973426967456e6469616e 3390:S49|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429 3391:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d6264612834296c6f6f6b75704c6f63616c283129 3392:S60|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429636f6e746578742d283129 3393:O1|@15943 3394:O1|@15944 3395:O1|@15945 3396:S68|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296578747261637450726f7073283129 3397:O1|@15951 3398:S51|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e6d657267655475706c6550726f7073283229 3399:O1|@15947 3400:S48|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e73706c697450726f70732833292829 3401:O1|@15948 3402:O1|@15949 3403:O1|@15950 3404:S83|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229676574526573756c7473283229 3405:O4|@16,@815,@3417,@3416 3406:S65|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129 3407:O1|@15953 3408:O1|@15954 3409:O4|@16,@815,@3415,@3414 3410:S81|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129636865636b42696e64696e6773283229 3411:O1|@15955 3412:O1|@15956 3413:O1|@15957 3414:O5|@2235,1441,0,1441,0 3415:S13|636865636b42696e64696e6773 3416:O5|@2235,1428,0,1428,0 3417:S14|70726f636573734c616d62646173 3418:S19|4f7574707574206f66206f7074696d69736572 3419:O1|@15958 3420:O1|@15959 3421:S36|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129 3422:S24|434f44455452454528292e67656e436f6465283329283129 3423:O1|@15961 3424:O5|0,0,0,@3428,@3437 3425:S11|7072696e742d7669736974 3426:O5|0,0,0,@3428,@3427 3427:O2|@3431,0 3428:O2|@3429,0 3429:O2|0,@3430 3430:O5|@947,186,186,0,0 3431:O2|3,@3432 3432:S9|556e56697369746564 3433:O5|0,0,0,@3428,@3434 3434:O2|@3435,0 3435:O2|3,@3436 3436:S14|5669736974656447656e6572616c 3437:O2|@3438,0 3438:O2|3,@3439 3439:S14|566973697465645370656369616c 3440:O2|@15962,@3441 3441:O2|@15965,@3440 3442:O1|@15964 3443:S32|434f44455452454528292e67656e436f646528332966696e6444656373283129 3444:O1|@15963 3445:O4|@16,@815,@3448,@3447 3446:S41|434f44455452454528292e67656e436f646528332970726f6365737347656e416e6453706563283229 3447:O5|@947,234,0,234,0 3448:S36|646f47656e6572616c3a206e6f74204c6f61644c6f63616c206f7220436f6e7374616e74 3449:O1|@15966 3450:O1|@15967 3451:S31|434f44455452454528292e67656e436f646528332961646444656373283129 3452:O1|@15968 3453:O4|@16,@815,@3455,@3454 3454:O5|@947,274,0,274,0 3455:S31|526573756c7420766563746f72206973206e6f7420616e2061646472657373 3456:O1|@15969 3457:S14|506f6c7953697a65446f75626c65 3458:S13|506f6c7953697a65466c6f6174 3459:O3|@3460,@887,@992 3460:S4|776f7264 3461:S14|4c61726765576f72642e776f7264 3462:O2|@3464,@3463 3463:O2|@3465,0 3464:S3|65786e 3465:O4|@3464,0,@885,@3466 3466:O3|@3468,@3472,@3467 3467:O3|@3464,@887,@992 3468:O2|1,@3469 3469:O3|6,@3470,0 3470:O4|0,@79,2,1 3471:O1|@15971 3472:O4|1,@80,0,0 3473:O2|@3460,@3474 3474:O2|@3475,0 3475:O4|@3460,0,@885,@3476 3476:O3|@3478,@3477,@3459 3477:O4|1,@82,0,0 3478:O2|1,@3479 3479:O3|6,@3481,@3480 3480:O2|@3483,0 3481:O4|@3482,@81,1,1 3482:O1|@15972 3483:O4|@25,@394,@3484,0 3484:O3|3,4,@3485 3485:O5|@15287,@3487,@951,@3486,@939 3486:O2|@3481,@3482 3487:O2|@15289,@3488 3488:O2|@1011,@3489 3489:O2|@3490,@1021 3490:O2|@3491,@951 3491:O3|0,@81,0 3492:O1|@15973 3493:S7|52756e43616c6c 3494:O1|@15974 3495:S13|756e7361666543617374283129 3496:O1|@15975 3497:O1|@15976 3498:S10|756e7361666543617374 3499:O1|@15977 3500:S7|697353686f7274 3501:O1|@15978 3502:O1|@15980 3503:S24|434f44455452454528292e6d6b42696e617279466e283129 3504:O1|@15979 3505:O1|@15981 3506:O1|@15982 3507:S26|545950455f5452454528292e6d6170746f5265636f7264283229 3508:O1|@15983 3509:S9|706f696e7465724571 3510:O1|@15984 3511:O1|@15985 3512:O3|13,@1639,@3513 3513:O3|@1271,@3514,0 3514:O1|@1273 3515:S15|6c6f61644f7065726174696f6e2829 3516:O1|@15986 3517:O2|@3518,0 3518:O5|5,0,@3460,@3475,0 3519:S8|6c6f6164576f7264 3520:O3|13,@3521,@3513 3521:O2|7,1 3522:O1|@15987 3523:S21|6c6f6164576f726446726f6d496d6d757461626c65 3524:O3|13,@2180,@3513 3525:O1|@15988 3526:S8|6c6f616442797465 3527:O3|13,@3528,@3513 3528:O2|6,1 3529:O1|@15989 3530:S21|6c6f61644279746546726f6d496d6d757461626c65 3531:O1|@15990 3532:S16|6d656d6f727943656c6c4c656e677468 3533:O1|@15991 3534:S15|6d656d6f727943656c6c466c616773 3535:O2|@3537,@3536 3536:O7|@3537,2,@3538,@3518,@885,0,0 3537:S12|6279746573506572576f7264 3538:O2|1,@3539 3539:O3|6,8,0 3540:O1|@15992 3541:O1|@15993 3542:O4|18,@1639,@3543,@3513 3543:O4|11,@916,2,0 3544:S16|73746f72654f7065726174696f6e2829 3545:O1|@15994 3546:O5|5,0,@1029,@1030,0 3547:S9|73746f7265576f7264 3548:O4|18,@2180,@3543,@3513 3549:O1|@15995 3550:S9|73746f726542797465 3551:O1|@15996 3552:S15|636c6561724d757461626c65426974 3553:O1|@15997 3554:O2|@3518,@3555 3555:O2|@3518,0 3556:S18|616c6c6f63617465427974654d656d6f7279 3557:O2|12,@3558 3558:O8|@3560,@3559,0,0,@1437,0,0,1 3559:S20|416c6c6f63617465576f72644d656d6f72792829 3560:O4|0,@1273,@3543,@1271 3561:O1|@15998 3562:S18|616c6c6f63617465576f72644d656d6f7279 3563:O1|@15999 3564:O1|@16000 3565:O5|4,1,@3567,@3568,@3566 3566:O3|@1271,@3571,0 3567:O4|11,@916,4,0 3568:O3|@1273,@3569,0 3569:O1|@3570 3570:O4|11,@916,3,0 3571:O1|@3543 3572:S16|626c6f636b4f7065726174696f6e2829 3573:O1|@16001 3574:O2|@3518,@3554 3575:S15|62797465566563746f72457175616c 3576:O5|4,0,@3567,@3568,@3566 3577:O1|@16002 3578:S17|62797465566563746f72436f6d70617265 3579:O5|4,@1296,@3567,@3568,@3566 3580:O1|@16003 3581:S9|6d6f76654279746573 3582:O5|4,@749,@3567,@3568,@3566 3583:O1|@16004 3584:S9|6d6f7665576f726473 3585:O3|13,@1214,@3513 3586:O2|@3587,@3555 3587:O5|5,0,@1186,@1187,0 3588:O4|18,@1214,@3543,@3513 3589:O2|@3587,@3554 3590:S13|73746f7265556e746167676564 3591:O3|6,@3592,0 3592:O1|@16005 3593:O2|4,@3601 3594:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6543616c6c283129283129283129 3595:O1|@16006 3596:S26|506f6c79437265617465456e747279506f696e744f626a656374 3597:O2|4,@3598 3598:O2|43,0 3599:O2|4,@3600 3600:O2|138,0 3601:O2|66,0 3602:O1|@16007 3603:S12|72747343616c6c46756c6c31 3604:O1|@16008 3605:O3|6,@3606,0 3606:O1|@16009 3607:O2|4,@3608 3608:O2|132,0 3609:O1|@16010 3610:S12|72747343616c6c4661737431 3611:O1|@16011 3612:O1|@16012 3613:O2|4,@3616 3614:O2|4,@3615 3615:O2|137,0 3616:O2|65,0 3617:O1|@16013 3618:O1|@16016 3619:S50|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c6564283229 3620:S7|72747343616c6c 3621:O1|@16014 3622:S3|283129 3623:O2|@1276,0 3624:O1|@16015 3625:O1|@16017 3626:O1|@16018 3627:O2|4,@3628 3628:O2|131,0 3629:O1|@16019 3630:O1|@16020 3631:O2|4,@3636 3632:O2|4,@3633 3633:O2|44,0 3634:O2|4,@3635 3635:O2|139,0 3636:O2|67,0 3637:O1|@16021 3638:O1|@16022 3639:O2|4,@3640 3640:O2|133,0 3641:O1|@16023 3642:O1|@16024 3643:O2|4,@3648 3644:O2|4,@3645 3645:O2|45,0 3646:O2|4,@3647 3647:O2|140,0 3648:O2|68,0 3649:O1|@16025 3650:O1|@16026 3651:O2|4,@3652 3652:O2|134,0 3653:O1|@16027 3654:O1|@16028 3655:O2|4,@3660 3656:O2|4,@3657 3657:O2|46,0 3658:O2|4,@3659 3659:O2|135,0 3660:O2|31,@3661 3661:O2|4,0 3662:O1|@16029 3663:S12|72747343616c6c46756c6c30 3664:S12|72747343616c6c4661737430 3665:S12|72747343616c6c46756c6c32 3666:S12|72747343616c6c4661737432 3667:S12|72747343616c6c46756c6c33 3668:S12|72747343616c6c4661737433 3669:S12|72747343616c6c4661737434 3670:O1|@16030 3671:O1|@16031 3672:O1|@16036 3673:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c656457697468436f6e7461696e6572283329 3674:S8|72756e5f63616c6c 3675:O1|@16032 3676:O1|@16033 3677:O1|@16034 3678:O1|@16035 3679:O2|@3681,@3680 3680:O2|@3684,@3683 3681:O2|@3682,1 3682:S9|496e74657272757074 3683:O2|@3687,@3686 3684:O2|@3685,4 3685:S4|53697a65 3686:O2|@3690,@3689 3687:O2|@3688,100 3688:S4|42696e64 3689:O2|@3692,@3691 3690:O2|@1723,7 3691:O2|@3695,@3694 3692:O2|@3693,101 3693:S5|4d61746368 3694:O2|@3697,0 3695:O2|@3696,5 3696:S8|4f766572666c6f77 3697:O2|@3698,11 3698:S9|537562736372697074 3699:O5|5,0,@3464,@3465,0 3700:S6|537973457272 3701:O3|@3702,12,@3587 3702:S6|546872656164 3703:O3|@3704,23,@3587 3704:S7|466f726569676e 3705:O3|@3706,10,@3587 3706:S8|5857696e646f7773 3707:O3|@3708,8,@3587 3708:S10|436f6e76657273696f6e 3709:O3|@3710,103,@3587 3710:S4|4661696c 3711:O1|@16037 3712:S8|4c61726765496e74 3713:O2|@881,@3714 3714:O2|@881,0 3715:S11|63616c6c51756f7452656d 3716:O2|@883,@3717 3717:O2|@882,0 3718:O2|1,3 3719:O1|@16038 3720:O1|@16041 3721:S27|434f44455452454528292e6d6b417262697472617279466e283129 3722:O2|@3723,0 3723:O3|20,@3724,0 3724:O2|@1271,@3725 3725:O2|@1273,0 3726:O1|@16039 3727:O4|5,@3729,@3728,@921 3728:O3|21,@1273,5 3729:O3|21,@1271,5 3730:S9|417262697472617279 3731:O1|@16040 3732:S4|6c657373 3733:O2|1,1 3734:S7|67726561746572 3735:O2|1,4 3736:S6|6c6573734571 3737:S9|677265617465724571 3738:S3|616464 3739:O2|0,6 3740:S8|7375627472616374 3741:O2|0,3 3742:S8|6d756c7469706c79 3743:O1|@16042 3744:S8|4669786564496e74 3745:O2|@994,@3746 3746:O2|@994,0 3747:O2|@883,@3748 3748:O2|@1026,0 3749:O3|9,3,1 3750:O3|9,4,1 3751:O3|9,1,1 3752:O3|9,2,1 3753:S2|3e3d 3754:O2|1,6 3755:S4|71756f74 3756:O2|1,5 3757:S3|72656d 3758:O1|@16043 3759:O2|3,3 3760:O2|3,4 3761:O2|3,1 3762:O2|3,2 3763:S3|646976 3764:S3|6d6f64 3765:O2|4,1 3766:S3|6f7262 3767:S4|616e6462 3768:O2|4,2 3769:S4|786f7262 3770:O2|5,0 3771:S2|3c3c 3772:O2|5,2 3773:S2|3e3e 3774:O2|5,1 3775:S3|7e3e3e 3776:O1|@16044 3777:S11|746f4c61726765576f7264 3778:S12|746f4c61726765576f726458 3779:S13|66726f6d4c61726765576f7264 3780:O3|9,3,0 3781:O3|9,4,0 3782:O3|9,1,0 3783:O3|9,2,0 3784:O2|8,0 3785:O2|8,6 3786:O2|8,3 3787:O2|8,1 3788:O2|8,2 3789:O2|10,1 3790:O2|10,0 3791:O2|10,2 3792:O2|11,0 3793:O2|11,2 3794:O2|11,1 3795:O1|@16045 3796:S4|43686172 3797:O2|@3799,@3798 3798:O2|@3799,0 3799:O5|5,0,@1165,@1166,0 3800:O1|@16046 3801:S6|537472696e67 3802:O1|@16047 3803:O3|6,@3804,0 3804:O1|@16048 3805:O2|4,@3807 3806:S53|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b65466173745265616c5265616c43616c6c283129 3807:O2|143,0 3808:O1|@16049 3809:S19|72747343616c6c466173745265616c5265616c 3810:O3|6,@3811,0 3811:O1|@16050 3812:O2|4,@3814 3813:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6546617374496e74496e665265616c43616c6c283129 3814:O2|144,0 3815:O1|@16051 3816:S21|72747343616c6c46617374496e74496e665265616c 3817:S14|72747343616c6c46617374465f46 3818:O3|2,@3587,@3819 3819:O3|2,@3820,@3820 3820:O5|5,0,@1226,@1227,0 3821:S14|72747343616c6c46617374495f46 3822:O3|2,@3587,@3823 3823:O3|2,@881,@3820 3824:O2|@3820,@3825 3825:O2|@3820,0 3826:O2|7,3 3827:O2|7,4 3828:O2|7,2 3829:S2|3d3d 3830:O2|6,6 3831:O2|6,3 3832:O3|2,@3820,@3820 3833:S3|616273 3834:S12|66726f6d4669786564496e74 3835:O3|2,@994,@3820 3836:O1|@16052 3837:S9|426f6f747374726170 3838:O1|@16053 3839:O1|@16054 3840:O2|@1621,@1647 3841:O2|12,@3842 3842:O8|@1017,@1003,0,0,@3843,0,0,1 3843:O2|@920,@1437 3844:O3|@3845,@887,@992 3845:S6|746872656164 3846:S4|73656c66 3847:O2|1,@3848 3848:O2|12,@3849 3849:O8|@1951,@3850,0,0,@1437,0,0,1 3850:S13|47657454687265616449642829 3851:O3|2,@3852,@3518 3852:O5|5,@3555,@1582,@1583,@885 3853:O3|2,@3852,@3546 3854:O1|@16055 3855:S13|466f726569676e4d656d6f7279 3856:O3|13,@937,@3513 3857:O1|@16056 3858:S4|67657438 3859:O3|13,@749,@3513 3860:S5|6765743136 3861:O3|13,@1296,@3513 3862:O1|@16057 3863:S5|6765743332 3864:O3|13,@951,@3513 3865:S5|6765743634 3866:O3|13,@3867,@3513 3867:O1|5 3868:S8|676574466c6f6174 3869:O3|13,@1627,@3513 3870:S9|676574446f75626c65 3871:O4|18,@937,@3543,@3513 3872:O1|@16058 3873:S4|73657438 3874:O4|18,@749,@3543,@3513 3875:S5|7365743136 3876:O4|18,@1296,@3543,@3513 3877:O1|@16059 3878:S5|7365743332 3879:O4|18,@951,@3543,@3513 3880:S5|7365743634 3881:O2|@3518,@3882 3882:O2|@3820,0 3883:O4|18,@3867,@3543,@3513 3884:S8|736574466c6f6174 3885:O4|18,@1627,@3543,@3513 3886:S9|736574446f75626c65 3887:O3|6,@3888,0 3888:O1|@16060 3889:O1|@16062 3890:S22|4d6973632e756e657363617065537472696e67283129 3891:S28|4d6973632e756e657363617065537472696e67283129726472283129 3892:O4|8,@3708,@3906,@3905 3893:S34|4d6973632e756e657363617065537472696e67283129636f6e764368617273283129 3894:O2|@16063,@296 3895:S1|07 3896:S11|7363616e42617365283229 3897:O1|@16064 3898:S11|7265616448657827283429 3899:S1|0d 3900:S1|0c 3901:S1|0b 3902:S1|0a 3903:S1|09 3904:S1|08 3905:O5|@3907,91,0,91,0 3906:S23|496e76616c696420737472696e6720636f6e7374616e74 3907:S27|6d6c736f757263652f4d4c436f6d70696c65722f4d6973632e4d4c 3908:O3|6,@3909,0 3909:O1|@16065 3910:O4|8,@3708,@3924,@3923 3911:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229696e744f66537472696e67283129 3912:S2|3078 3913:S3|7e3078 3914:S29|537472696e674376742e7363616e537472696e67283229726472283129 3915:O9|@16067,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 3916:O1|@16069 3917:S16|4c61726765496e742e7363616e283329 3918:O1|@16068 3919:S34|4c61726765496e742e7363616e283329726561645f6865785f646967697473283329 3920:S21|506f6c794d756c7469706c79417262697472617279 3921:O4|5,@321,0,@3922 3922:O5|@800,352,0,352,0 3923:O5|@3925,910,0,910,0 3924:S24|496e76616c696420696e746567657220636f6e7374616e74 3925:S34|6d6c736f757263652f4d4c436f6d70696c65722f494e495449414c4953455f2e4d4c 3926:O3|6,@3927,0 3927:O1|@16070 3928:O4|8,@3708,@3943,@3942 3929:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229776f72644f66537472696e67283129 3930:O1|@16072 3931:O1|@16073 3932:S11|7363616e576f7264283329 3933:S29|7363616e576f7264283329726561645f6865785f646967697473283329 3934:B8|ffffffffffffff7f 3935:O1|@16074 3936:S20|506f6c79436f6d70617265417262697472617279 3937:O4|5,@321,0,@3938 3938:O5|@3939,201,0,201,0 3939:S21|2e2f62617369732f4c61726765576f72642e736d6c 3940:O1|@16075 3941:S26|506f6c794765744c6f774f7264657241734c61726765576f7264 3942:O5|@3925,921,0,921,0 3943:S21|496e76616c696420776f726420636f6e7374616e74 3944:O2|@3946,@3945 3945:O7|@3946,2,@3947,@3587,@885,0,0 3946:S14|636f6e76537472696e674e616d65 3947:O2|1,@3948 3948:O3|6,@3949,0 3949:S10|636f6e76537472696e67 3950:O2|@3952,@3951 3951:O7|@3952,2,@3954,@3953,@885,0,0 3952:S7|636f6e76496e74 3953:O3|2,@3587,@881 3954:O2|1,@3908 3955:O2|@3957,@3956 3956:O7|@3957,2,@3959,@3958,@885,0,0 3957:S8|636f6e76576f7264 3958:O3|2,@3587,@3518 3959:O2|1,@3926 3960:O2|@3949,@3961 3961:O7|@3949,2,@3963,@3962,@885,0,0 3962:O3|2,@3587,@3587 3963:O2|1,@3887 3964:S23|696e744973417262697472617279507265636973696f6e 3965:O4|@1186,0,@885,@1188 3966:O2|@16076,@83 3967:O1|@16077 3968:S28|5052494e545f5441424c4528292e6164644f7665726c6f6164283329 3969:S37|5052494e545f5441424c4528292e6164644f7665726c6f616428332966696c746572283129 3970:O2|@3972,@3971 3971:O2|@3976,0 3972:O3|13,@3521,@3973 3973:O3|@3975,@3974,0 3974:O1|@916 3975:O2|8,@3718 3976:O3|13,@3521,@3977 3977:O3|@3978,@3974,0 3978:O2|8,@3735 3979:O4|11,@3980,0,0 3980:O2|8,@846 3981:O2|@3982,0 3982:O4|3,@916,@915,@3784 3983:O2|8,@3733 3984:O4|3,@1407,@916,@1018 3985:O2|@1276,@3986 3986:O2|@3988,@3987 3987:O2|@1407,@3989 3988:O2|8,@1286 3989:O2|@916,@3990 3990:O2|@918,0 3991:O1|@16078 3992:O1|@16079 3993:S11|766563746f722d6c6f6f70 3994:O4|@16,@815,@3996,@3995 3995:O5|@947,520,0,520,0 3996:S36|6d6b4d757475616c446563733a20656d707479206465636c61726174696f6e206c697374 3997:O1|@16080 3998:O4|@16,@815,@4000,@3999 3999:O5|@947,524,0,524,0 4000:S53|6d6b4d757475616c446563733a20526563757273697665206465636c61726174696f6e206973206e6f7420612066756e6374696f6e 4001:O4|1,0,1,@4002 4002:O3|21,@918,8 4003:O4|1,0,0,@4004 4004:O3|21,@916,8 4005:O2|@921,0 4006:O4|3,@1276,@1277,@1018 4007:O1|@16081 4008:S9|766563746f722d6571 4009:O1|@16082 4010:S11|766563746f722d65712829 4011:O1|@16083 4012:O1|@16084 4013:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129 4014:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129283129 4015:O1|@16085 4016:S12|626f7865642d766563746f72 4017:O1|@16086 4018:S11|73697a652d766563746f72 4019:O3|@4020,@887,@992 4020:S6|766563746f72 4021:O1|@16087 4022:O3|15,@4024,@4023 4023:O4|5,@4006,@4026,@921 4024:O2|@4003,@4025 4025:O2|@4001,0 4026:O3|15,@4028,@4027 4027:O5|4,1,@3988,@4032,@4031 4028:O2|@4029,0 4029:O4|1,0,2,@4030 4030:O4|3,@3539,@1276,@3786 4031:O3|@916,@1638,0 4032:O3|@918,@1638,0 4033:S13|62797465566563746f722d6571 4034:O1|@16088 4035:O2|@1621,@4036 4036:O2|@915,0 4037:O3|@4038,@887,@992 4038:S10|62797465566563746f72 4039:O2|@4041,@4040 4040:O2|@4042,0 4041:S5|6172726179 4042:O4|@4041,@4044,@885,@4043 4043:O3|@4047,@4064,@4046 4044:O2|@4045,0 4045:O2|@84,79992 4046:O3|@4065,@887,@992 4047:O2|1,@4048 4048:O3|6,@4050,@4049 4049:O2|@4055,0 4050:O4|@4052,@85,@4054,@4051 4051:O1|@16092 4052:O1|@16089 4053:O1|@16090 4054:O1|@16091 4055:O4|@25,@394,@4056,0 4056:O3|3,4,@4057 4057:O5|@15287,@4059,@1625,@4058,@939 4058:O4|@4050,@4052,@4054,@4051 4059:O2|@15289,@4060 4060:O2|@1610,@4061 4061:O2|@4062,@1614 4062:O2|@4063,@951 4063:O3|0,@85,0 4064:O4|1,@86,1,0 4065:S11|41727261792e6172726179 4066:O2|@4041,@4067 4067:O2|@4068,0 4068:O4|@4041,@4070,@885,@4069 4069:O3|@4073,@4090,@4072 4070:O2|@4071,0 4071:O2|@87,79992 4072:O3|@4091,@887,@992 4073:O2|1,@4074 4074:O3|6,@4076,@4075 4075:O2|@4081,0 4076:O4|@4078,@88,@4080,@4077 4077:O1|@16096 4078:O1|@16093 4079:O1|@16094 4080:O1|@16095 4081:O4|@25,@394,@4082,0 4082:O3|3,4,@4083 4083:O5|@15287,@4085,@1625,@4084,@939 4084:O4|@4076,@4078,@4080,@4077 4085:O2|@15289,@4086 4086:O2|@1610,@4087 4087:O2|@4088,@1614 4088:O2|@4089,@951 4089:O3|0,@88,0 4090:O4|1,@89,1,0 4091:S12|4172726179322e6172726179 4092:O2|@4094,@4093 4093:O2|@4095,0 4094:S9|627974654172726179 4095:O4|@4094,0,@885,@4096 4096:O3|@4098,@4115,@4097 4097:O3|@4094,@887,@992 4098:O2|1,@4099 4099:O3|6,@4101,@4100 4100:O2|@4103,0 4101:O4|@4102,@90,2,1 4102:O1|@16097 4103:O4|@25,@394,@4104,0 4104:O3|3,4,@4105 4105:O5|@15287,@4107,@951,@4106,@939 4106:O2|@4101,@4102 4107:O2|@15289,@4108 4108:O2|@1011,@4109 4109:O2|@4111,@4110 4110:O2|@4113,@974 4111:O2|@4112,@951 4112:O3|0,@90,0 4113:O2|@4114,@951 4114:O3|0,2,0 4115:O4|1,@91,0,0 4116:S2|3c3e 4117:O2|3,6 4118:O1|@16098 4119:S6|506f6c794d4c 4120:O1|@16099 4121:S9|4e616d655370616365 4122:O1|@16100 4123:S6|56616c756573 4124:O1|@16101 4125:S11|54797065436f6e73747273 4126:O1|@16102 4127:S7|496e6669786573 4128:O1|@16103 4129:S10|53747275637475726573 4130:O1|@16104 4131:S10|5369676e617475726573 4132:O1|@16105 4133:S8|46756e63746f7273 4134:O1|@16106 4135:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f747970655072696e746572283129 4136:O2|@1438,@4036 4137:O3|@4138,@887,@992 4138:S29|506f6c794d4c2e4e616d6553706163652e56616c7565732e76616c7565 4139:S5|76616c7565 4140:O3|@4141,@887,@992 4141:S38|506f6c794d4c2e4e616d6553706163652e56616c7565732e7479706545787072657373696f6e 4142:S14|7479706545787072657373696f6e 4143:O3|@4144,@887,@992 4144:S39|506f6c794d4c2e4e616d6553706163652e54797065436f6e737472732e74797065436f6e737472 4145:S10|74797065436f6e737472 4146:O3|@4147,@887,@992 4147:S31|506f6c794d4c2e4e616d6553706163652e496e66697865732e666978697479 4148:S6|666978697479 4149:O3|@4150,@887,@992 4150:S40|506f6c794d4c2e4e616d6553706163652e5369676e6174757265732e7369676e617475726556616c 4151:S12|7369676e617475726556616c 4152:O3|@4153,@887,@992 4153:S40|506f6c794d4c2e4e616d6553706163652e537472756374757265732e73747275637475726556616c 4154:S12|73747275637475726556616c 4155:O3|@4156,@887,@992 4156:S36|506f6c794d4c2e4e616d6553706163652e46756e63746f72732e66756e63746f7256616c 4157:S10|66756e63746f7256616c 4158:S3|56616c 4159:S4|54797065 4160:S3|466978 4161:S6|537472756374 4162:S3|536967 4163:S5|46756e6374 4164:O1|@16107 4165:S3|616c6c 4166:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296372656174654669656c6473283229 4167:S5|656e746572 4168:O1|@16108 4169:S40|545950455f5452454528292e6d6b4c6162656c456e74727928332973747269705a65726f73283129 4170:S6|6c6f6f6b7570 4171:O1|@16109 4172:O1|@16110 4173:O1|@16111 4174:S25|545950455f5452454528292e736f72744c6162656c73283129 4175:S35|545950455f5452454528292e736f72744c6162656c73283129656e7465722833292829 4176:O1|@16112 4177:O3|@4178,@887,@992 4178:S26|506f6c794d4c2e4e616d6553706163652e6e616d655370616365 4179:S9|6e616d655370616365 4180:S6|76616c756573 4181:S5|6669786573 4182:S5|7479706573 4183:S10|73747275637475726573 4184:S10|7369676e617475726573 4185:S8|66756e63746f7273 4186:O1|@16113 4187:O2|@4189,@4188 4188:O2|@4190,0 4189:S8|6c6f636174696f6e 4190:O4|@4189,0,@885,@4191 4191:O3|@1033,@4193,@4192 4192:O3|@4216,@887,@992 4193:O3|2,0,@4194 4194:O3|3,@4196,@4195 4195:O3|0,@4211,1 4196:O2|@4198,@4197 4197:O2|@4201,@4200 4198:O2|@4199,@3587 4199:S4|66696c65 4200:O2|@4204,@4203 4201:O2|@4202,@994 4202:S7|656e644c696e65 4203:O2|@4207,@4206 4204:O2|@4205,@994 4205:S9|73746172744c696e65 4206:O2|@4209,0 4207:O2|@4208,@994 4208:S11|656e64506f736974696f6e 4209:O2|@4210,@994 4210:S13|7374617274506f736974696f6e 4211:O2|@4199,@4212 4212:O2|@4202,@4213 4213:O2|@4205,@4214 4214:O2|@4208,@4215 4215:O2|@4210,0 4216:S15|506f6c794d4c2e6c6f636174696f6e 4217:O1|@16114 4218:S17|4465627567676572496e74657266616365 4219:O3|@4220,@887,@992 4220:S41|506f6c794d4c2e4465627567676572496e746572666163652e6c6f636174696f6e50726f704c697374 4221:S16|6c6f636174696f6e50726f704c697374 4222:O3|@4223,@887,@992 4223:S31|506f6c794d4c2e4465627567676572496e746572666163652e747970654964 4224:S6|747970654964 4225:O3|@4226,@887,@992 4226:S36|506f6c794d4c2e4465627567676572496e746572666163652e6d616368696e65576f7264 4227:S11|6d616368696e65576f7264 4228:O3|@4229,@887,@992 4229:S34|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065 4230:S9|6c6f63616c54797065 4231:O3|@4232,@887,@992 4232:S40|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065436f6e737472 4233:S15|6c6f63616c54797065436f6e737472 4234:O3|@4235,@887,@992 4235:S33|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c536967 4236:S8|6c6f63616c536967 4237:O3|@4238,@887,@992 4238:S37|506f6c794d4c2e4465627567676572496e746572666163652e656e7669726f6e456e747279 4239:S12|656e7669726f6e456e747279 4240:O5|5,0,@4189,@4190,@885 4241:S14|456e76456e6446756e6374696f6e 4242:S12|456e76457863657074696f6e 4243:S16|456e76537461727446756e6374696f6e 4244:S12|456e76537472756374757265 4245:S10|456e7654436f6e737472 4246:S9|456e76547970656964 4247:S10|456e7656436f6e737472 4248:S8|456e7656616c7565 4249:O1|@16115 4250:O1|@16131 4251:S34|44415441545950455f52455028292e63686f6f7365436f6e73747252657072283329 4252:O1|@16116 4253:O1|@16117 4254:O1|@16119 4255:S30|44415441545950455f52455028292e6765745475706c654b696e64283129 4256:O4|@16,@815,@4258,@4257 4257:O5|@4259,1594,0,1594,0 4258:S35|6d616b654571756976616c656e743a204e6f74206120747970652066756e6374696f6e 4259:S32|6d6c736f757263652f4d4c436f6d70696c65722f545950455f545245452e4d4c 4260:S38|545950455f5452454528292e6d616b654571756976616c656e74283229676574417267283129 4261:O1|@16124 4262:S30|545950455f5452454528292e67656e6572616c6973655479706573283329 4263:O1|@16122 4264:S44|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129 4265:O1|@16121 4266:O4|101,@4269,0,@4268 4267:S36|545950455f5452454528292e67656e6572616c6973655479706573283329747673283129 4268:O5|@4259,90,0,90,0 4269:S5|4d61746368 4270:S47|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129283129 4271:O1|@16123 4272:S40|545950455f5452454528292e67656e6572616c6973655479706573283329636f706965642d283129 4273:O1|@16128 4274:S23|545950455f5452454528292e636f707954797065283329 4275:O1|@16125 4276:O1|@16126 4277:S23|545950455f5452454528292e6576656e7475616c283129 4278:S39|545950455f5452454528292e6576656e7475616c283129616464546f496e7374616e6365283229 4279:O4|@16,@815,@4281,@4280 4280:O5|@4259,776,0,776,0 4281:S27|636f7079547970653a204f7665726c6f616453657420666f756e64 4282:O1|@16127 4283:S40|545950455f5452454528292e636f707954797065283329636f70795265636f72644c697374283129 4284:S34|545950455f5452454528292e636f707954797065283329636f70794c697374283129 4285:O2|@1438,@915 4286:O1|@16129 4287:S10|626f7865642f73697a65 4288:O1|@16130 4289:O1|@16137 4290:S47|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f736552657072283129 4291:O1|@16132 4292:O1|@16133 4293:O1|@16134 4294:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707231283329 4295:O1|@16135 4296:O1|@16136 4297:S60|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963726561746552657072283229 4298:O1|@16138 4299:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707232283329 4300:O1|@16139 4301:O2|@4240,0 4302:O3|@4303,@887,@992 4303:S35|506f6c794d4c2e4465627567676572496e746572666163652e64656275675374617465 4304:S10|64656275675374617465 4305:S9|6d616b6556616c7565 4306:O1|@16140 4307:S24|44454255474745525f28292e6d616b6556616c7565283129 4308:O1|@16157 4309:S27|44454255474745525f28292e6d616b6556616c7565283129283129 4310:O1|@16143 4311:S35|44454255474745525f28292e72756e54696d6554797065283229636f70794964283129 4312:O2|@4326,@4136 4313:S25|44454255474745525f28292e73656172636854797065283429 4314:O4|@16,@815,@4317,@4316 4315:S33|44454255474745525f28292e736561726368547970652834296d61746368283129 4316:O5|@4318,160,0,160,0 4317:S24|736561726368547970653a205479706546756e6374696f6e 4318:S33|6d6c736f757263652f4d4c436f6d70696c65722f44454255474745525f2e736d6c 4319:O1|@16145 4320:S25|44454255474745525f28292e736561726368456e7673283329 4321:O1|@16146 4322:S21|636f6465466f72556e6971756549642d657175616c 4323:O4|@16,@815,@4325,@4324 4324:O5|@1128,347,0,347,0 4325:S18|6973457175616c6974793a2054797065466e 4326:O4|0,@1100,@4327,@915 4327:O2|12,@4328 4328:O8|@4330,@4329,0,0,@1437,1,0,1 4329:S13|7072696e742d64656661756c74 4330:O3|6,@899,0 4331:O1|@16150 4332:S29|44454255474745525f28292e72756e54696d6554797065283229283129 4333:O1|@16148 4334:S32|44454255474745525f28292e72756e54696d6554797065283229283129283129 4335:O1|@16149 4336:O1|@16155 4337:S38|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529 4338:O1|@16152 4339:S53|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129 4340:S56|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129283129 4341:O1|@16153 4342:O1|@16154 4343:S27|5554494c49544945535f28292e73706c6974537472696e67283229 4344:O1|@16156 4345:S27|545950455f5452454528292e657175616c54797065496473283229 4346:S40|545950455f5452454528292e657175616c54797065496473283229657175616c5479706573283229 4347:S13|6d616b65457863657074696f6e 4348:O1|@16158 4349:S28|44454255474745525f28292e6d616b65457863657074696f6e283129 4350:O1|@16164 4351:S31|44454255474745525f28292e6d616b65457863657074696f6e283129283129 4352:O1|@16163 4353:O1|@16162 4354:S15|6d616b65436f6e7374727563746f72 4355:O1|@16165 4356:S30|44454255474745525f28292e6d616b65436f6e7374727563746f72283129 4357:O1|@16171 4358:S33|44454255474745525f28292e6d616b65436f6e7374727563746f72283129283129 4359:O1|@16170 4360:O1|@16169 4361:S18|6d616b65416e6f6e796d6f757356616c7565 4362:O1|@16172 4363:S33|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129 4364:O1|@16178 4365:S36|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129283129 4366:O1|@16177 4367:O1|@16176 4368:S13|6d616b65537472756374757265 4369:O1|@16179 4370:S28|44454255474745525f28292e6d616b65537472756374757265283129 4371:S31|44454255474745525f28292e6d616b65537472756374757265283129283129 4372:O3|@294,@887,@992 4373:S40|44454255474745525f28292e6d616b65537472756374757265283529676574467265654964283129 4374:O1|@16183 4375:S29|545950455f5452454528292e636f6d706f73654d617073283129283129 4376:O1|@16184 4377:S26|545950455f5452454528292e636f6d706f73654d617073283329 4378:O1|@16189 4379:S33|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129 4380:S42|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f70794964283129 4381:O1|@16188 4382:S48|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129 4383:O1|@16187 4384:S51|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129283129 4385:S14|6d616b6554797065436f6e737472 4386:O1|@16190 4387:S29|44454255474745525f28292e6d616b6554797065436f6e737472283129 4388:S32|44454255474745525f28292e6d616b6554797065436f6e737472283129283129 4389:S9|756e697456616c7565 4390:O7|@294,2,@1033,@3546,0,0,0 4391:O2|@3587,@4301 4392:S10|7365744f6e456e747279 4393:O2|@16192,@92 4394:S25|44454255474745525f28292e7365744f6e456e747279283129 4395:O1|@16194 4396:S22|44454255474745525f28292e77726170283129283129 4397:S19|44454255474745525f28292e77726170283229 4398:S9|7365744f6e45786974 4399:O2|@16195,@93 4400:S24|44454255474745525f28292e7365744f6e45786974283129 4401:O3|2,@3699,@3546 4402:S18|7365744f6e45786974457863657074696f6e 4403:O2|@16197,@94 4404:S33|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129 4405:S36|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129283129 4406:O2|@4240,@4407 4407:O2|@4408,0 4408:O5|5,@4409,@1582,@1583,@885 4409:O2|@1102,0 4410:S15|7365744f6e427265616b506f696e74 4411:O2|@16200,@95 4412:S30|44454255474745525f28292e7365744f6e427265616b506f696e74283129 4413:O2|@4415,@4414 4414:O2|@4417,@4416 4415:S7|636f6e74657874 4416:O2|@4476,@4475 4417:O4|@4415,0,@885,@4418 4418:O3|@4420,@4473,@4419 4419:O3|@4474,@887,@992 4420:O2|1,@4421 4421:O3|6,@4423,@4422 4422:O2|@4452,0 4423:O4|@4424,@96,3,1 4424:O1|@16202 4425:S5|6e6f2d6571 4426:O1|@16203 4427:O5|0,0,0,@885,@4449 4428:S13|7072696e742d636f6e74657874 4429:O2|@4430,0 4430:O2|3,@4431 4431:S4|2e2e2e7d 4432:O2|@4433,0 4433:O2|3,@450 4434:O2|3,@4435 4435:S15|7374617274506f736974696f6e203d 4436:O2|3,@4437 4437:S11|73746172744c696e65203d 4438:O2|3,@4439 4439:S6|66696c65203d 4440:O2|3,@4441 4441:S13|656e64506f736974696f6e203d 4442:O2|3,@4443 4443:S9|656e644c696e65203d 4444:O2|3,@448 4445:O5|0,0,0,@885,@4446 4446:O2|@4447,0 4447:O2|3,@4448 4448:S15|436f6e746578744c6f636174696f6e 4449:O2|@4450,0 4450:O2|3,@4451 4451:S15|436f6e7465787450726f7065727479 4452:O4|@25,@394,@4453,0 4453:O3|3,4,@4454 4454:O6|@15281,@940,@4456,@4463,@4455,@939 4455:O12|@4465,@4468,@4469,@4467,@4466,@4470,@4471,@4472,@4464,@4424,@96,@4423 4456:O2|@15289,@4457 4457:O2|@4459,@4458 4458:O2|@4462,@971 4459:O2|@1435,@4460 4460:O3|1,@4461,@952 4461:O8|@921,@4425,0,0,@3843,0,0,1 4462:O2|@1441,@951 4463:O11|2,2,2,2,2,2,2,2,2,1,2 4464:O3|@4470,@4471,@4472 4465:O3|@4423,@4466,@4464 4466:O3|@4468,@4469,@4467 4467:O1|@16206 4468:O1|@16204 4469:O1|@16205 4470:O1|@16207 4471:O1|@16208 4472:O1|@16209 4473:O4|1,@97,0,0 4474:S14|506f6c794d4c2e636f6e74657874 4475:O2|@4521,0 4476:O7|@4448,@1241,@4478,@4477,@885,0,0 4477:O3|2,@4504,@4503 4478:O2|1,@4479 4479:O3|6,@4466,@4480 4480:O2|@4481,0 4481:O4|@25,@394,@4482,0 4482:O3|3,3,@4483 4483:O6|@15281,@940,@4484,@4463,@4455,@939 4484:O2|@15289,@4485 4485:O2|@4487,@4486 4486:O2|@4495,@4494 4487:O2|@1013,@4488 4488:O3|1,@4489,@952 4489:O8|@4491,@4448,0,0,@4490,0,0,1 4490:O2|@4492,0 4491:O4|19,0,@1271,1 4492:O2|1,@4493 4493:O2|@1281,0 4494:O2|@4500,0 4495:O2|@1262,@4496 4496:O3|1,@4497,@952 4497:O8|@4498,@4448,0,0,@1019,0,0,1 4498:O3|20,@4499,1 4499:O2|@921,@1576 4500:O2|@1285,@4501 4501:O3|1,@4502,@952 4502:O8|@1298,@4448,0,0,@1019,0,0,1 4503:O5|5,0,@4415,@4417,@885 4504:O5|5,0,@4189,@4505,@885 4505:O4|@4189,0,@885,@4506 4506:O3|@1033,@4507,@4192 4507:O3|2,0,@4508 4508:O3|3,@4509,@4195 4509:O2|@4511,@4510 4510:O2|@4514,@4513 4511:O2|@4199,@4512 4512:O5|5,0,@1186,@3965,0 4513:O2|@4517,@4516 4514:O2|@4202,@4515 4515:O5|5,0,@883,@1026,0 4516:O2|@4519,@4518 4517:O2|@4205,@4515 4518:O2|@4520,0 4519:O2|@4208,@4515 4520:O2|@4210,@4515 4521:O7|@4451,@1241,@4523,@4522,@885,0,0 4522:O3|2,@4553,@4503 4523:O2|1,@4524 4524:O3|6,@4464,@4525 4525:O2|@4526,0 4526:O4|@25,@394,@4527,0 4527:O3|3,3,@4528 4528:O6|@15281,@940,@4529,@4463,@4455,@939 4529:O2|@15289,@4530 4530:O2|@4532,@4531 4531:O2|@4537,@4536 4532:O2|@1456,@4533 4533:O3|1,@4534,@952 4534:O8|@4535,@4451,0,0,@4490,0,0,1 4535:O4|19,1,@1271,1 4536:O2|@4544,0 4537:O2|@4539,@4538 4538:O3|1,@4540,@952 4539:O2|1,@1377 4540:O8|@4541,@4451,0,0,@1265,0,2,1 4541:O3|15,@1268,@4542 4542:O3|20,@4543,1 4543:O2|@915,@1274 4544:O2|@1362,@4545 4545:O3|1,@4546,@952 4546:O8|@4547,@4451,0,0,@1288,0,2,1 4547:O3|15,@4548,@1290 4548:O2|@4550,@4549 4549:O2|@4551,0 4550:O4|1,@1295,0,@1298 4551:O4|1,@1295,1,@4552 4552:O4|11,@916,2,1 4553:O3|3,@4554,@1334 4554:O2|@4556,@4555 4555:O2|@4557,0 4556:O2|@1339,@4512 4557:O2|@1341,@4512 4558:O2|@4560,@4559 4559:O2|@4562,@4561 4560:S6|707265747479 4561:O2|@4630,@4629 4562:O4|@4560,0,@885,@4563 4563:O3|@4565,@4627,@4564 4564:O3|@4628,@887,@992 4565:O2|1,@4566 4566:O3|6,@4568,@4567 4567:O2|@4594,0 4568:O4|@4569,@98,3,1 4569:O1|@16210 4570:O2|@16211,@98 4571:O5|0,0,0,@885,@4591 4572:S12|7072696e742d707265747479 4573:O4|0,@4574,3,1 4574:O1|@16212 4575:O5|0,0,0,@885,@4576 4576:O2|@4577,0 4577:O2|3,@4578 4578:S11|507265747479426c6f636b 4579:O5|0,0,0,@885,@4580 4580:O2|@4581,0 4581:O2|3,@4582 4582:S11|507265747479427265616b 4583:O5|0,0,0,@885,@4584 4584:O2|@4585,0 4585:O2|3,@4586 4586:S15|5072657474794c696e65427265616b 4587:O5|0,0,0,@885,@4588 4588:O2|@4589,0 4589:O2|3,@4590 4590:S12|507265747479537472696e67 4591:O2|@4592,0 4592:O2|3,@4593 4593:S21|507265747479537472696e67576974685769647468 4594:O4|@25,@394,@4595,0 4595:O3|3,4,@4596 4596:O6|@15281,@940,@4598,@4607,@4597,@939 4597:O22|@4609,@4613,@4614,@4612,@4611,@4617,@4618,@4616,@4615,@4620,@4619,@4622,@4623,@4621,@4610,@4624,@4625,@4626,@4608,@4569,@98,@4568 4598:O2|@15289,@4599 4599:O2|@4601,@4600 4600:O2|@4604,@971 4601:O2|@4602,@4460 4602:O2|1,@4603 4603:O2|2,18 4604:O2|@4605,@951 4605:O2|1,@4606 4606:O2|2,19 4607:O21|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2 4608:O3|@4624,@4625,@4626 4609:O6|@4568,@4611,@4615,@4619,@4610,@4608 4610:O3|@4622,@4623,@4621 4611:O3|@4613,@4614,@4612 4612:O1|@16216 4613:O1|@16214 4614:O1|@16215 4615:O3|@4617,@4618,@4616 4616:O1|@16219 4617:O1|@16217 4618:O1|@16218 4619:O2|@4620,@951 4620:O1|@16220 4621:O1|@16223 4622:O1|@16221 4623:O1|@16222 4624:O1|@16224 4625:O1|@16225 4626:O1|@16226 4627:O4|1,@99,0,0 4628:S13|506f6c794d4c2e707265747479 4629:O2|@4708,@4707 4630:O7|@4578,@4632,@4633,@4631,@885,0,0 4631:O3|2,@4686,@4685 4632:O2|0,5 4633:O2|1,@4634 4634:O3|6,@4611,@4635 4635:O2|@4636,0 4636:O4|@25,@394,@4637,0 4637:O3|3,3,@4638 4638:O6|@15281,@940,@4639,@4607,@4597,@939 4639:O2|@15289,@4640 4640:O2|@4642,@4641 4641:O2|@4647,@4646 4642:O2|@1013,@4643 4643:O3|1,@4644,@952 4644:O8|@4645,@4578,0,0,@4490,0,0,1 4645:O4|19,0,@1271,4 4646:O2|@4672,0 4647:O2|@1262,@4648 4648:O3|1,@4649,@952 4649:O8|@4651,@4578,0,0,@4650,0,4,1 4650:O2|@4665,0 4651:O3|15,@4653,@4652 4652:O3|20,@4659,1 4653:O2|@1270,@4654 4654:O2|@1272,@4655 4655:O2|@4657,@4656 4656:O2|@4658,0 4657:O4|1,@938,2,@3543 4658:O4|1,@938,3,@3570 4659:O2|@921,@4660 4660:O2|@1276,@4661 4661:O2|@1277,@4662 4662:O2|@3988,@4663 4663:O2|@4664,0 4664:O2|8,@1573 4665:O2|1,@4666 4666:O2|@1281,@4667 4667:O2|@1282,@4668 4668:O2|@4670,@4669 4669:O2|@4671,0 4670:O3|2,2,@938 4671:O3|2,3,@938 4672:O2|@1285,@4673 4673:O3|1,@4674,@952 4674:O8|@4675,@4578,0,0,@1218,0,4,1 4675:O3|15,@4677,@4676 4676:O3|20,@4660,0 4677:O2|@4550,@4678 4678:O2|@4551,@4679 4679:O2|@4681,@4680 4680:O2|@4683,0 4681:O4|1,@1295,2,@4682 4682:O4|11,@916,3,1 4683:O4|1,@1295,3,@4684 4684:O4|11,@916,4,1 4685:O5|5,0,@4560,@4562,@885 4686:O3|3,@4688,@4687 4687:O3|0,@4703,1 4688:O2|@4690,@4689 4689:O2|@4692,@4691 4690:O2|@1339,@4515 4691:O2|@4695,@4694 4692:O2|@1341,@4693 4693:O5|5,0,@1104,@1162,0 4694:O2|@4699,0 4695:O2|@4697,@4696 4696:O5|5,@4698,@1346,@1344,@885 4697:S1|33 4698:O2|@4503,0 4699:O2|@4701,@4700 4700:O5|5,@4702,@1346,@1344,@885 4701:S1|34 4702:O2|@4685,0 4703:O2|@1339,@4704 4704:O2|@1341,@4705 4705:O2|@4697,@4706 4706:O2|@4701,0 4707:O2|@4735,@4734 4708:O7|@4582,@4632,@4710,@4709,@885,0,0 4709:O3|2,@4730,@4685 4710:O2|1,@4711 4711:O3|6,@4615,@4712 4712:O2|@4713,0 4713:O4|@25,@394,@4714,0 4714:O3|3,3,@4715 4715:O6|@15281,@940,@4716,@4607,@4597,@939 4716:O2|@15289,@4717 4717:O2|@4719,@4718 4718:O2|@4724,@4723 4719:O2|@1456,@4720 4720:O3|1,@4721,@952 4721:O8|@4722,@4582,0,0,@4490,0,0,1 4722:O4|19,1,@1271,4 4723:O2|@4727,0 4724:O2|@4539,@4725 4725:O3|1,@4726,@952 4726:O8|@4541,@4582,0,0,@1265,0,2,1 4727:O2|@1362,@4728 4728:O3|1,@4729,@952 4729:O8|@4547,@4582,0,0,@1288,0,2,1 4730:O3|3,@4731,@1334 4731:O2|@4690,@4732 4732:O2|@4733,0 4733:O2|@1341,@4515 4734:O2|@4752,@4751 4735:O7|@4586,@3756,@4736,@4685,@885,0,0 4736:O2|1,@4737 4737:O3|6,@4619,@4738 4738:O2|@4739,0 4739:O4|@25,@394,@4740,0 4740:O3|3,2,@4741 4741:O6|@15281,@940,@4742,@4607,@4597,@939 4742:O2|@15289,@4743 4743:O2|@4745,@4744 4744:O2|@4749,0 4745:O2|@1435,@4746 4746:O3|1,@4747,@952 4747:O8|@4748,@4586,0,0,@4490,0,0,1 4748:O4|19,2,@1271,4 4749:O2|@4750,@951 4750:O3|0,@951,0 4751:O2|@4782,0 4752:O7|@4590,@4632,@4754,@4753,@885,0,0 4753:O3|2,@4512,@4685 4754:O2|1,@4755 4755:O3|6,@4610,@4756 4756:O2|@4757,0 4757:O4|@25,@394,@4758,0 4758:O3|3,3,@4759 4759:O6|@15281,@940,@4760,@4607,@4597,@939 4760:O2|@15289,@4761 4761:O2|@4763,@4762 4762:O2|@4770,@4769 4763:O2|@4765,@4764 4764:O3|1,@4767,@952 4765:O2|1,@4766 4766:O2|2,10 4767:O8|@4768,@4590,0,0,@4490,0,0,1 4768:O4|19,3,@1271,4 4769:O2|@4777,0 4770:O2|@4772,@4771 4771:O3|1,@4774,@952 4772:O2|1,@4773 4773:O2|2,11 4774:O8|@4775,@4590,0,0,@1019,0,0,1 4775:O3|20,@4776,1 4776:O2|@1438,@1576 4777:O2|@4779,@4778 4778:O3|1,@4781,@952 4779:O2|1,@4780 4780:O2|2,12 4781:O8|@1298,@4590,0,0,@1019,0,0,1 4782:O7|@4593,@4632,@4784,@4783,@885,0,0 4783:O3|2,@4814,@4685 4784:O2|1,@4785 4785:O3|6,@4608,@4786 4786:O2|@4787,0 4787:O4|@25,@394,@4788,0 4788:O3|3,3,@4789 4789:O6|@15281,@940,@4790,@4607,@4597,@939 4790:O2|@15289,@4791 4791:O2|@4793,@4792 4792:O2|@4800,@4799 4793:O2|@4795,@4794 4794:O3|1,@4797,@952 4795:O2|1,@4796 4796:O2|2,14 4797:O8|@4798,@4593,0,0,@4490,0,0,1 4798:O4|19,4,@1271,4 4799:O2|@4809,0 4800:O2|@4802,@4801 4801:O3|1,@4804,@952 4802:O2|1,@4803 4803:O2|2,15 4804:O8|@4805,@4593,0,0,@1265,0,2,1 4805:O3|15,@1268,@4806 4806:O3|20,@4807,1 4807:O2|@4808,@1274 4808:O3|6,4,0 4809:O2|@4811,@4810 4810:O3|1,@4813,@952 4811:O2|1,@4812 4812:O2|2,16 4813:O8|@4547,@4593,0,0,@1288,0,2,1 4814:O3|3,@4815,@1334 4815:O2|@4556,@4732 4816:S5|7072696e74 4817:O2|3,7 4818:S10|6d616b65737472696e67 4819:O2|3,5 4820:S20|707265747479526570726573656e746174696f6e 4821:S16|6164645072657474795072696e746572 4822:O3|2,@3587,@3546 4823:S11|6164644f7665726c6f6164 4824:O2|@4826,@4825 4825:O7|@4826,2,@4828,@4827,@885,0,0 4826:S26|73657444656661756c74496e7454797065417262697472617279 4827:O3|2,@1102,@3546 4828:O2|1,@4829 4829:O3|6,@4830,0 4830:O1|@16227 4831:S40|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973657454797065283129 4832:O2|@4834,@4833 4833:O7|@4834,2,@3759,@4835,@885,0,0 4834:S14|736f757263654c6f636174696f6e 4835:O3|2,@3546,@4240 4836:O1|@16228 4837:S9|556e6976657273616c 4838:O1|@16229 4839:O1|@16230 4840:O1|@16231 4841:S9|626f7865642d746167 4842:O1|@16232 4843:S8|73697a652d746167 4844:O3|@4845,@887,@992 4845:S3|746167 4846:O3|@4847,@887,@992 4847:S9|756e6976657273616c 4848:O3|6,@4849,0 4849:O1|@16233 4850:S27|556e6976657273616c2e746167496e6a6563742d23696e6a656374 4851:O1|@16234 4852:S9|746167496e6a656374 4853:O3|6,@4854,0 4854:O1|@16235 4855:S29|556e6976657273616c2e74616750726f6a6563742d2370726f6a656374 4856:O1|@16236 4857:S10|74616750726f6a656374 4858:O3|6,@4859,0 4859:O1|@16237 4860:S19|556e6976657273616c2e74616749732d236973 4861:O1|@16238 4862:S5|7461674973 4863:O3|@4864,@887,@992 4864:S19|506f6c794d4c2e707450726f70657274696573 4865:S12|707450726f70657274696573 4866:O3|@4867,@887,@992 4867:S16|506f6c794d4c2e706172736554726565 4868:S9|706172736554726565 4869:S12|505466697273744368696c64 4870:S13|50546e6578745369626c696e67 4871:S8|5054706172656e74 4872:S17|505470726576696f75735369626c696e67 4873:O2|@1102,@4874 4874:O2|@4875,0 4875:O5|5,@4301,@1346,@1344,@885 4876:S12|50547265666572656e636573 4877:S6|505474797065 4878:O2|@4879,@4240 4879:S13|50547374727563747572654174 4880:O2|@4881,@994 4881:S7|50547265664964 4882:O2|@4884,@4883 4883:O3|2,@994,@4685 4884:S7|50547072696e74 4885:O2|@4886,@4240 4886:S10|50546f70656e65644174 4887:O2|@4888,@994 4888:S7|50546465664964 4889:O2|@4890,@4240 4890:S12|50546465636c617265644174 4891:O2|@4893,@4892 4892:O5|5,@4894,@1346,@1344,@885 4893:S13|5054636f6d706c6574696f6e73 4894:O2|@3587,0 4895:O2|@4896,@4408 4896:S12|5054627265616b506f696e74 4897:O1|@16239 4898:O3|2,@3546,@4899 4899:O5|5,@3798,@1510,@1507,@885 4900:O1|@16241 4901:S27|4d414b455f28292e757365496e746f456e76283129283129283129 4902:O1|@18638 4903:S21|4d414b455f28292e757365496e746f456e76283329 4904:S5|5573653a20 4905:S2|2d49 4906:O6|@16242,@4915,@4924,@100,@4931,@4907 4907:O3|@16250,@4933,@4924 4908:O1|@16243 4909:S17|4f532e506174682e636f6e636174283229 4910:S4|50617468 4911:O5|@4912,580,0,580,0 4912:S14|2e2f62617369732f4f532e736d6c 4913:O5|@4912,582,0,582,0 4914:S32|4f532e506174682e636f6e636174283229636f6e636174417263732832292829 4915:O7|@16244,@100,@4924,@372,@101,@4928,@4916 4916:O1|@16248 4917:O5|@4912,400,0,400,0 4918:S19|4f532e506174682e746f537472696e67283329 4919:O5|@4912,382,0,382,0 4920:S10|496e76616c6964417263 4921:O5|@4912,385,0,385,0 4922:O1|@16245 4923:S33|4f532e506174682e746f537472696e6728332961726373546f4c696e6b73283129 4924:O1|@16246 4925:O4|0,@294,0,0 4926:S33|4f532e506174682e6d61746368566f6c756d65507265666978506f736978283129 4927:O4|1,@294,1,1 4928:O1|@16247 4929:S7|6f283229283129 4930:S23|4f532e506174682e76616c6964566f6c756d652d283129 4931:O1|@16249 4932:S27|4f532e506174682e746f43616e6f6e6963616c436173652d283129 4933:O1|@16252 4934:O1|@16251 4935:S21|4f532e506174682e66726f6d537472696e67283229 4936:O3|@294,0,0 4937:S23|4f532e506174682e6973536570617261746f722d283129 4938:O2|@16253,@4933 4939:O1|@16254 4940:S23|4f532e506174682e73706c697442617365457874283229 4941:S32|4f532e506174682e73706c697442617365457874283229676574457874283129 4942:O1|@4943 4943:S3|353731 4944:O1|@16255 4945:S22|4f532e506174682e6a6f696e42617365457874283229 4946:O1|@16256 4947:S13|54657874494f2e6f70656e496e 4948:O5|@4949,290,0,290,0 4949:S18|2e2f62617369732f54657874494f2e736d6c 4950:O1|@16257 4951:S25|4d414b455f28292e636f6d70696c65496e746f456e76283129 4952:O1|@16273 4953:O1|@16276 4954:O1|@16279 4955:O1|@16282 4956:O1|@16285 4957:O1|@16288 4958:S25|4d414b455f28292e6462456e76416c6c283129283129283129 4959:O1|@16291 4960:O1|@16294 4961:O1|@16297 4962:O1|@16300 4963:O1|@16303 4964:O1|@16306 4965:O1|@16307 4966:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283129 4967:O5|@852,264,0,264,0 4968:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329 4969:O1|@16309 4970:S41|4d414b455f28292e636f6d70696c65496e746f456e7628312975736528332967657443686172283129 4971:O1|@16310 4972:S32|4261736963496d7065726174697665494f28292e696e70757431283129283129 4973:O1|@16311 4974:S29|426173696353747265616d494f28292e696e7075744e4c697374283329 4975:O1|@16312 4976:S30|426173696353747265616d494f28292e696e7075744e4c69737427283129 4977:O5|@637,140,0,140,0 4978:S30|426173696353747265616d494f28292e696e7075744e4c69737427283429 4979:O2|@294,0 4980:S5|696e707574 4981:S39|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329636f64652d283129 4982:O2|@4984,@4983 4983:O2|@1668,@5004 4984:O4|@102,@394,@4985,0 4985:O1|@16314 4986:S5|20696e2027 4987:S43|4d414b455f28292e636f6d70696c65496e746f456e762831297573652833296572726f7250726f63283129 4988:S6|4572726f722d 4989:S8|5761726e696e672d 4990:O1|@16315 4991:O4|101,@4269,0,@5000 4992:S19|5072657474792e75676c795072696e74283129 4993:O4|101,@4269,0,@4994 4994:O5|@4995,98,0,98,0 4995:S30|6d6c736f757263652f4d4c436f6d70696c65722f5072657474792e736d6c 4996:O1|@16316 4997:O4|101,@4269,0,@4998 4998:O5|@4995,108,0,108,0 4999:O1|@16317 5000:O5|@4995,118,0,118,0 5001:O2|@335,0 5002:S2|2e0a 5003:S8|272c206c696e6520 5004:O2|@5006,@5005 5005:O2|@1695,@5007 5006:O4|@65,@394,1,0 5007:O2|@5009,@5008 5008:O2|@5023,@5022 5009:O4|@103,@394,@5010,0 5010:O1|@16318 5011:O1|@16320 5012:S24|5072657474792e7072657474795072696e74283129283129 5013:O2|@16319,@18930 5014:S15|54657874494f2e7072696e74283129 5015:O1|@16321 5016:S21|5072657474792e7072657474795072696e74283329 5017:O1|@16323 5018:S30|5072657474792e7072657474795072696e742833296c61794f7574283329 5019:O1|@16322 5020:S31|5072657474792e7072657474795072696e7428332967657453697a65283229 5021:S40|5072657474792e7072657474795072696e742833296c61794f7574283329646f5072696e74283229 5022:O2|@1672,@5025 5023:O4|@62,@394,@5024,0 5024:O1|@16324 5025:O2|@1674,@5026 5026:O2|@1682,@5027 5027:O2|@1676,@5028 5028:O2|@1680,0 5029:O4|@70,@394,@5030,0 5030:O1|@16325 5031:O1|@16326 5032:O1|@16327 5033:O5|@10945,255,0,255,0 5034:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283329 5035:O2|@16328,@102 5036:O1|@16329 5037:S17|4c45585f28292e696e697469616c283329 5038:O4|103,@861,@5041,@5040 5039:S37|4c45585f28292e696e697469616c2833296572726f724d65737361676550726f632d283129 5040:O5|@5042,99,0,99,0 5041:S20|4572726f7220696e20736f7572636520636f6465 5042:S27|6d6c736f757263652f4d4c436f6d70696c65722f4c45585f2e4d4c 5043:O1|@16330 5044:O1|@16331 5045:S31|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429 5046:O1|@16333 5047:O1|@16335 5048:S42|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429676c6f62616c732d283129 5049:S34|756e657870656374656420656e64206f662066696c6520656e636f756e7465726564 5050:O1|@16336 5051:S15|436861722e69735370616365283129 5052:O1|@16337 5053:O1|@16338 5054:S16|537472696e672e746f6b656e73283229 5055:S23|537472696e672e746f6b656e73283229746f6b27283229 5056:O1|@16339 5057:O2|@1890,0 5058:S32|4c45585f28292e627265616b576f726473283129616464427265616b73283129 5059:O4|@16,@815,@5061,@5060 5060:O5|@5042,600,0,600,0 5061:S11|656e64206f662066696c65 5062:O2|@16340,@104 5063:S19|756e6b6e6f776e206368617261637465722022 5064:S20|4c45585f28292e7061727365546f6b656e283129 5065:S16|756e6b6e6f776e2073796d626f6c202e 5066:S17|756e6b6e6f776e2073796d626f6c202e2e 5067:O1|@16341 5068:O1|@16342 5069:S22|4c45585f28292e7061727365436f6d6d656e74283129 5070:S28|656e64206f662066696c6520666f756e6420696e20636f6d6d656e74 5071:S36|4c45585f28292e7061727365436f6d6d656e74283129736b6970436f6d6d656e74283129 5072:O1|@16343 5073:S36|6e6f206d61746368696e672071756f746520666f756e64206f6e2074686973206c696e65 5074:S21|4c45585f28292e7061727365537472696e67283129 5075:O1|@16344 5076:S16|20666f756e6420696e20737472696e67 5077:S33|4c45585f28292e7061727365537472696e67283129676574537472696e67283129 5078:S21|756e65787065637465642063686172616374657220 5079:S11|20696e205c202e2e2e205c 5080:S9|456e644f664c696e65 5081:O5|@5042,350,0,350,0 5082:O5|@5042,389,0,389,0 5083:S22|756e7072696e7461626c652063686172616374657220 5084:O1|@16345 5085:S20|3a3d3c3e2b2a215e2f7c26257e2d3f60405c2423 5086:S27|436861722e636f6e7461696e732831296d61746368283129283129 5087:O1|@16346 5088:O3|0,@5098,@5097 5089:S20|4c45585f28292e70617273654964656e74283329 5090:O1|@16347 5091:O1|@16348 5092:S19|4c45585f28292e726561644368617273283329 5093:S26|4c45585f28292e7265616443686172732833296c6f6f70283129 5094:O1|@16349 5095:S24|4c45585f28292e6973416c7068614e756d65726963283129 5096:S21|696e76616c6964206964656e746966696572202d20 5097:O200|0,0,0,0,0,0,@5100,@5102,@5104,0,@5106,0,0,0,0,0,0,0,0,@5107,@5108,0,0,0,0,@5110,0,0,@5112,0,0,0,0,0,0,@5114,0,0,0,0,0,0,@5115,0,0,0,0,0,0,0,0,0,0,0,0,0,@5116,0,@5118,0,@5119,@5121,0,0,0,0,0,0,0,0,@5122,@5124,@5126,0,0,@5128,0,@5129,0,@5131,0,0,0,0,@5132,0,0,@5134,@5136,@5138,@5140,@5141,@5143,@5145,@5146,@5148,0,@5150,@5152,@5154,0,0,@5155,0,@5157,0,0,0,0,0,0,@5159,0,0,0,@5161,0,0,0,0,0,0,@5163,@5164,@5165,0,0,0,0,0,0,0,0,0,0,@5167,@5168,@5170,0,0,0,0,0,0,0,0,0,@5172,0,0,0,0,0,0,0,@5174,0,0,0,0,0,0,0,0,0,0,0,@5176,0,0,0,@5178,0,0,@5179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@5181,0,0,0,0,0,0,0,0,@5099 5098:O2|@15220,200 5099:O2|@5183,63 5100:O2|@5101,29 5101:S6|696e66697872 5102:O2|@5103,36 5103:S6|6e6f6e666978 5104:O2|@5105,28 5105:S5|696e666978 5106:O2|@1902,65 5107:O2|@1770,25 5108:O2|@5109,49 5109:S7|73686172696e67 5110:O2|@5111,37 5111:S2|6f66 5112:O2|@5113,12 5113:S8|6461746174797065 5114:O2|@360,23 5115:O2|@367,6 5116:O2|@5117,7 5117:S4|63617365 5118:O2|@383,9 5119:O2|@5120,1 5120:S7|61627374797065 5121:O2|@386,17 5122:O2|@5123,51 5123:S9|7369676e6174757265 5124:O2|@5125,44 5125:S3|726563 5126:O2|@5127,19 5127:S2|666e 5128:O2|@1871,26 5129:O2|@5130,13 5130:S2|646f 5131:O2|@1819,4 5132:O2|@5133,42 5133:S5|7261697365 5134:O2|@5135,18 5135:S9|657863657074696f6e 5136:O2|@5137,22 5137:S6|68616e646c65 5138:O2|@5139,61 5139:S3|76616c 5140:O2|@420,60 5141:O2|@5142,54 5142:S9|737472756374757265 5143:O2|@5144,10 5144:S2|3a3e 5145:O2|@2692,56 5146:O2|@5147,59 5147:S4|74797065 5148:O2|@5149,38 5149:S2|6f70 5150:O2|@5151,50 5151:S3|736967 5152:O2|@5153,16 5153:S6|657174797065 5154:O2|@1873,34 5155:O2|@5156,5 5156:S2|6173 5157:O2|@5158,66 5158:S8|7769746874797065 5159:O2|@5160,20 5160:S3|66756e 5161:O2|@5162,35 5162:S5|6c6f63616c 5163:O2|@449,62 5164:O2|@1772,55 5165:O2|@5166,40 5166:S6|6f72656c7365 5167:O2|@1774,14 5168:O2|@5169,27 5169:S7|696e636c756465 5170:O2|@5171,64 5171:S5|7768696c65 5172:O2|@5173,21 5173:S7|66756e63746f72 5174:O2|@5175,53 5175:S6|737472756374 5176:O2|@5177,2 5177:S3|616e64 5178:O2|@1869,15 5179:O2|@5180,39 5180:S4|6f70656e 5181:O2|@5182,3 5182:S7|616e64616c736f 5183:S5|7768657265 5184:O1|@16350 5185:S2|457e 5186:S21|4c45585f28292e70617273654e756d626572283229 5187:O1|@16351 5188:S15|436861722e69734469676974283129 5189:S3|307778 5190:O1|@16352 5191:S18|436861722e69734865784469676974283129 5192:S2|3077 5193:S23|6d616c666f726d6564207265616c206e756d6265723a20 5194:O1|@5195 5195:O1|@16353 5196:O6|0,0,0,0,0,0 5197:S34|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429283129 5198:O1|@16354 5199:S26|5554494c49544945535f28292e7365617263684c697374283229 5200:O1|@16357 5201:S34|5554494c49544945535f28292e7365617263684c6973742832296170706c79283129 5202:S41|5554494c49544945535f28292e7365617263684c6973742832296170706c792831296170706c283129 5203:S34|5554494c49544945535f28292e7365617263684c697374283229656e746572283129 5204:S35|5554494c49544945535f28292e7365617263684c6973742832296c6f6f6b7570283129 5205:S24|4d6973632e6c6f6f6b757044656661756c74283229283129 5206:O1|@16360 5207:S15|53796d5365742e2b2b283229283129 5208:O1|@16361 5209:O1|@16610 5210:S23|50415253455f44454328292e7061727365446563283329 5211:O1|@16363 5212:S36|50415253455f44454328292e7061727365446563283329676c6f62616c456e762d283129 5213:S31|467265652074797065207661726961626c6573206e6f7420616c6c6f776564 5214:O1|@16365 5215:O1|@16366 5216:O1|@16494 5217:S38|50415253455f44454328292e70617273654465632833297061727365546f7044656373283229 5218:O3|@16367,@5360,@5219 5219:O2|@16477,@5218 5220:S38|50415253455f44454328292e7061727365446563283329737472756374757265446563283329 5221:O1|@16369 5222:O1|@16460 5223:S49|50415253455f44454328292e7061727365446563283329737472756374757265446563283329646f537472446563283229 5224:O1|@16371 5225:O1|@16372 5226:O2|@294,@5229 5227:S17|534b4950535f28292e6765746964283429 5228:S10|4964656e746966696572 5229:O5|@294,0,0,0,0 5230:O1|@16373 5231:O1|@16374 5232:S28|5554494c49544945535f28292e636865636b466f72446f7473283329 5233:S13|20696c6c6567616c2068657265 5234:S36|5554494c49544945535f28292e636865636b466f72446f7473283329636865636b283129 5235:S15|7175616c6966696564206e616d6520 5236:O2|@16376,@5237 5237:O2|@16417,@5236 5238:O1|@16381 5239:S40|50415253455f44454328292e706172736544656328332970617273655369676e6174757265283329 5240:O1|@16377 5241:S18|5374617274206f66207369676e6174757265 5242:O1|@16378 5243:S18|534b4950535f28292e736b69706f6e283429 5244:S5|6572726f72 5245:O4|@16,@815,@5319,@5318 5246:S56|50415253455f44454328292e706172736544656328332970617273655369676e617475726528332967657457686572655479706573283229 5247:O1|@16382 5248:O1|@16389 5249:S37|50415253455f44454328292e70617273654465632833296765745479706556617273283229 5250:O1|@16383 5251:O1|@16386 5252:S50|50415253455f44454328292e7061727365446563283329676574547970655661727328322967657454797065566172283229 5253:O1|@16385 5254:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283129 5255:S23|2068617320616c7265616479206265656e20757365642e 5256:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283229 5257:O1|@16387 5258:S19|534b4950535f28292e62616473796d73283229 5259:S15|3c776f726420636f6e7374616e743e 5260:S15|53796d626f6c732e72657072283129 5261:S15|3c6368617220636f6e7374616e743e 5262:S12|3c6964656e7469666965723e 5263:S18|3c696e746567657220636f6e7374616e743e 5264:S14|756e6b6e6f776e2073796d626f6c 5265:S15|3c7265616c20636f6e7374616e743e 5266:S17|3c737472696e6720636f6e7374616e743e 5267:S17|3c74797065206964656e7469666965723e 5268:O1|@16388 5269:S20|53796d5365742e747970654964656e742d283129 5270:S19|534b4950535f28292e74657374666f72283329 5271:O1|@16391 5272:S16|53796d5365742e6964656e742d283129 5273:O1|@16392 5274:S39|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329 5275:S42|20686173206e6f74206265656e206465636c6172656420696e2074797065206465636c61726174696f6e 5276:S42|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329283129 5277:O1|@16394 5278:O1|@16396 5279:S11|456e64206f662074797065 5280:S25|50415253455f5459504528292e706172736554797065283429 5281:O1|@16398 5282:O1|@16399 5283:S37|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229 5284:O1|@16401 5285:S50|50415253455f5459504528292e7061727365547970652834297475706c655479706528322967657450726f64756374283229 5286:O1|@16416 5287:S49|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229 5288:O4|@5290,0,@885,@5289 5289:O3|@5292,@5296,@5291 5290:S9|756e646566696e6564 5291:O3|@5290,@887,@5297 5292:O2|1,@5293 5293:O3|6,@5294,0 5294:O4|0,@106,3,1 5295:O1|@16402 5296:O4|1,@107,0,0 5297:S9|556e646566696e6564 5298:S25|292061707065617273206d6f7265207468616e206f6e63652e 5299:S75|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d7265706f7274447570283329 5300:S7|4c6162656c2028 5301:O1|@16404 5302:S28|5554494c49544945535f28292e6e6f4475706c696361746573283229 5303:O1|@16407 5304:S36|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c79283129 5305:S43|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c792831296170706c283129 5306:S36|5554494c49544945535f28292e6e6f4475706c696361746573283229656e746572283129 5307:S37|5554494c49544945535f28292e6e6f4475706c6963617465732832296c6f6f6b7570283129 5308:O1|@16410 5309:S25|4c6162656c73206d75737420626520312c322c332c2e2e2e2e 5310:S20|534b4950535f28292e6765744c6162656c283329 5311:O1|@16412 5312:S16|53796d5365742e656d7074792d283129 5313:O1|@16413 5314:O1|@16415 5315:S77|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c697374283129 5316:S87|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c69737428312974657374666f72283329 5317:S64|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229636f6e7374727563746f7273283329 5318:O5|@5042,612,0,612,0 5319:S31|417474656d707420746f20707573682074776f20706172656e746865736573 5320:O1|@16419 5321:S39|50415253455f44454328292e70617273654465632833297369676e617475726553706563283329 5322:S43|50415253455f44454328292e70617273654465632833296d616b6554797065566172456e76283229283129 5323:O1|@16458 5324:S57|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129 5325:S9|5369676e6174757265 5326:S75|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d6e6577656e762d283129 5327:O1|@16423 5328:S43|50415253455f44454328292e706172736544656328332964617461747970654465634f725265706c283529 5329:S52|4461746174797065207265706c69636174696f6e206d757374206e6f7420636f6e7461696e2074797065207661726961626c6573 5330:O1|@16427 5331:O2|@5288,0 5332:S38|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729 5333:O1|@16428 5334:O1|@16429 5335:O7|@5339,2,@1033,@749,@885,0,0 5336:S48|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729636f6e73747273283229 5337:S62|60606f702727206d6179206e6f7420617070656172206265666f7265206120636f6e7374727563746f7220696e20612073706563696669636174696f6e2e 5338:O1|@16430 5339:S11|3c756e646566696e65643e 5340:S44|50415253455f44454328292e7061727365446563283329646174617479706542696e64696e67283129283129 5341:O1|@16436 5342:S37|50415253455f44454328292e7061727365446563283329616e6442696e64696e6773283329 5343:O1|@16438 5344:S40|50415253455f44454328292e70617273654465632833297479706542696e64696e67283129283129 5345:S37|50415253455f44454328292e70617273654465632833297479706542696e64696e67283529 5346:O1|@16442 5347:S72|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f4578283229 5348:O1|@16445 5349:O1|@16446 5350:O1|@16448 5351:S74|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d736967696473283229 5352:O1|@16451 5353:S79|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f537472756374757265283229 5354:O1|@16455 5355:S73|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f56616c283229 5356:S18|534b4950535f28292e67657473796d283229 5357:O1|@16461 5358:S19|53796d5365742e73747275637453792d283129 5359:S35|50415253455f44454328292e6d6b4c6f63616c426f6479466978456e76283529283129 5360:O2|@16465,@5219 5361:O1|@16476 5362:S35|50415253455f44454328292e706172736544656328332973747275637456616c283329 5363:O1|@16466 5364:S29|737472756374206f722066756e63746f72206170706c69636174696f6e 5365:S51|50415253455f44454328292e706172736544656328332973747275637456616c283329646f436f6e73747261696e7473283329 5366:O1|@16478 5367:S32|50415253455f44454328292e7061727365446563283329737472446563283329 5368:S42|50415253455f44454328292e706172736544656328332973747244656328332967657444656373283129 5369:O1|@16480 5370:O1|@16481 5371:O6|@5374,@5339,0,0,@5373,0 5372:S38|50415253455f44454328292e70617273654465632833297369676e6174757265446563283329 5373:O1|@16483 5374:O3|0,@5376,@5375 5375:O10|0,0,0,0,0,0,0,0,0,0 5376:O2|@15220,10 5377:O4|11,@239,0,@5379 5378:S35|5349474e41545552455328292e756e646566696e65645369676e61747572652d283129 5379:O5|@5380,177,0,177,0 5380:S34|6d6c736f757263652f4d4c436f6d70696c65722f5349474e4154555245532e736d6c 5381:O1|@16484 5382:S22|53796d5365742e7369676e617475726553792d283129 5383:O1|@16485 5384:O1|@16486 5385:S36|50415253455f44454328292e706172736544656328332966756e63746f72446563283329 5386:S49|50415253455f44454328292e706172736544656328332966756e63746f72446563283329646f46756e6374446563283229 5387:O1|@16493 5388:S20|53796d5365742e66756e63746f7253792d283129 5389:S2|6974 5390:S29|50415253455f44454328292e7061727365446563283329646563283529 5391:O1|@16501 5392:S43|50415253455f44454328292e706172736544656328332964656328352964656353657175656e6365283229 5393:O1|@16503 5394:O1|@16505 5395:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283129 5396:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283229 5397:O1|@16508 5398:S26|50415253455f5452454528292e6d6b4964656e74283229283129 5399:S39|50415253455f44454328292e70617273654465632833296465632835296e6577456e762d283129 5400:O1|@16511 5401:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283129 5402:O1|@16512 5403:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283229 5404:O1|@16553 5405:S47|50415253455f44454328292e706172736544656328332964656328352966756e4228322962696e64696e6773283229 5406:O1|@16514 5407:S14|456e64206f66207061747465726e 5408:S39|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329 5409:O1|@16537 5410:S55|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229 5411:O1|@16516 5412:S46|292068617320696e666978207374617475732062757420776173206e6f74207072656365646564206279206f702e 5413:S41|50415253455f44454328292e70617273654465632833296765744c6f6e674e6f6e496e666978283729 5414:O1|@16517 5415:S7|5061747465726e 5416:O1|@16518 5417:O7|@5420,2,@5421,@5419,@885,0,0 5418:S45|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e742831292d45 5419:O3|2,@3587,@5422 5420:S8|636f6e7643686172 5421:O2|3,8 5422:O3|6,@108,79992 5423:O1|@16519 5424:S43|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e74283129 5425:O1|@16520 5426:O7|@3952,2,@5421,@5419,@885,0,0 5427:O1|@16521 5428:S68|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d766172734c697374283129 5429:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832297265706f7274447570283329 5430:O1|@16524 5431:O1|@16528 5432:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832296765744c6162656c73283229 5433:S35|203d20706174206578706563746564206166746572206e756d65726963206c6162656c 5434:O1|@16527 5435:S32|4578706563746564206964206f722069643a7479206265666f72652060617327 5436:S61|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329636f6e73747261696e744f724c617965726564283429 5437:O1|@16530 5438:S42|50415253455f44454328292e7061727365446563283329646563283529636f6e73747261696e74283529 5439:O1|@16533 5440:S66|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d7475706c6573283129 5441:S38|5265616c20636f6e7374616e7473206e6f7420616c6c6f77656420696e207061747465726e73 5442:O1|@16535 5443:O7|@5444,2,@5421,@5419,@885,0,0 5444:S8|636f6e765265616c 5445:O1|@16536 5446:O7|@3949,2,@5421,@5419,@885,0,0 5447:O7|@3957,2,@5421,@5419,@885,0,0 5448:O1|@16538 5449:O1|@16540 5450:O1|@16546 5451:S42|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729 5452:O1|@16541 5453:O2|-1,0 5454:S56|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729726561644e6578744f7073283229 5455:O1|@16544 5456:S61|50415253455f44454328292e70617273654465632833296465632835297061727365496e66697828372970617273654170706c69636174696f6e283429 5457:O3|@294,@5229,@951 5458:O1|@16548 5459:S54|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729 5460:O1|@16547 5461:S11|4f70657261746f72732022 5462:S75|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729636865636b4173736f636961746976697479283229 5463:S5|7269676874 5464:S4|6c656674 5465:O2|@5466,0 5466:S13|2d6173736f636961746976652e 5467:S5|2220697320 5468:S20|2d6173736f63696174697665207768696c652022 5469:S32|222068617665207468652073616d6520707265636564656e6365206275742022 5470:S7|2220616e642022 5471:O1|@16549 5472:S79|53796e746178206572726f723a2066756e2062696e64696e67206973206e6f7420616e206964656e746966696572206170706c69656420746f206f6e65206f72206d6f7265207061747465726e732e 5473:S28|50415253455f5452454528292e6d6b46756e5061747465726e283329 5474:O1|@16550 5475:O1|@16551 5476:S37|50415253455f5452454528292e6d6b46756e5061747465726e283329756e7069636b283229 5477:S70|506172656e74686573657320617265206f6e6c7920616c6c6f77656420666f7220696e6669786564206170706c69636174696f6e7320696e2066756e2062696e64696e67732e 5478:S63|436f6e7374727563746f72206170706c69636174696f6e7320696e2066756e2062696e64696e6773206d75737420626520706172656e74686573697365642e 5479:S31|5468697320636c6175736520646566696e65732066756e6374696f6e206060 5480:S36|2727206275742070726576696f757320636c6175736528732920646566696e6564206060 5481:S2|2727 5482:S16|5468697320636c617573652068617320 5483:S38|20617267756d656e7473206275742070726576696f757320636c617573652873292068616420 5484:O1|@16591 5485:S42|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e283329 5486:O1|@16574 5487:S61|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229 5488:S21|456e64206f66206c65742065787072657373696f6e 5489:O1|@16558 5490:O1|@16559 5491:S73|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e2832297265706f7274447570283329 5492:O1|@16561 5493:S72|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229676574456e747279283229 5494:O1|@16566 5495:O1|@16569 5496:O1|@16570 5497:O1|@16571 5498:O1|@16572 5499:O1|@16573 5500:O1|@16575 5501:S10|45787072657373696f6e 5502:O1|@16577 5503:O1|@16579 5504:S56|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332970617273654f72656c7365283229 5505:O1|@16581 5506:S57|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833297061727365416e64616c736f283229 5507:S55|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296b6579576f7264457870283229 5508:O1|@16584 5509:S12|456e64206f66206d61746368 5510:S50|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296d61746368283129 5511:O1|@16594 5512:O1|@16597 5513:S32|50415253455f44454328292e7061727365446563283329666978697479283329 5514:O1|@16595 5515:S37|206e6f7420616c6c6f7765642c206d757374206265206265747765656e203020616e642039 5516:S48|50415253455f44454328292e7061727365446563283329666978697479283329676574507265636564656e6365283129 5517:S11|507265636564656e636520 5518:O4|@16,@815,@4148,@5519 5519:O5|@5520,558,0,558,0 5520:S32|6d6c736f757263652f4d4c436f6d70696c65722f50415253455f4445432e4d4c 5521:S8|5661726961626c65 5522:S39|50415253455f44454328292e706172736544656328332966697869747928332976617273283229 5523:O1|@16602 5524:S36|50415253455f44454328292e706172736544656328332964656328352976617273283229 5525:O1|@16606 5526:S36|50415253455f44454328292e706172736544656328332964656328352976616c42283329 5527:O1|@16609 5528:S10|2077617320666f756e64 5529:S20|534b4950535f28292e6e6f74666f756e64283229 5530:S14|2065787065637465642062757420 5531:O1|@16611 5532:O1|@16612 5533:S30|535452554354555245535f28292e646973706c6179546f70446563283129 5534:O1|@16714 5535:S30|535452554354555245535f28292e646973706c6179546f70446563283229 5536:O1|@16613 5537:O1|@16614 5538:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283129 5539:O1|@16712 5540:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283229 5541:S2|203a 5542:O2|@1717,0 5543:O1|@16615 5544:O2|3,@5151 5545:S27|5349474e41545552455328292e646973706c617953696773283229 5546:O1|@16616 5547:S30|545950455f5452454528292e7661724e616d6553657175656e6365283129 5548:O1|@16618 5549:O5|0,0,0,@5561,@5560 5550:S11|7072696e742d6e616d6573 5551:O1|@16619 5552:O2|@5553,0 5553:O2|3,@628 5554:O2|3,@5555 5555:S6|6e616d65203d 5556:O2|3,@617 5557:O2|3,@5558 5558:S7|656e747279203d 5559:O2|3,@595 5560:O2|@5564,0 5561:O2|@5562,0 5562:O2|0,@5563 5563:O5|@4259,1192,1192,0,0 5564:O2|3,@5565 5565:S5|4e616d6573 5566:O1|@16620 5567:S33|545950455f5452454528292e7661724e616d6553657175656e6365283129283129 5568:S40|545950455f5452454528292e7661724e616d6553657175656e63652831292831296e616d65283129 5569:O2|@16621,@5570 5570:O11|@16627,@29,@38,@1227,@82,@3475,@34,@1166,@36,@3965,@107 5571:O1|@16626 5572:S28|545950455f5452454528292e7072696e745479706556617273283329 5573:O2|@5575,@5574 5574:O1|@16623 5575:O1|@16622 5576:S28|545950455f5452454528292e656d70747954797065456e762d283129 5577:O2|@1313,0 5578:O1|@16624 5579:O1|@16625 5580:S36|545950455f5452454528292e7072696e7454797065566172732833297056617273283229 5581:O2|@1500,0 5582:O1|@16628 5583:S20|545950455f5452454528292e7444697370283529 5584:O1|@16650 5585:S28|545950455f5452454528292e74446973702835296469737050283229 5586:O2|3,@5587 5587:S3|626164 5588:O2|3,@5589 5589:S7|6e6f2074797065 5590:O1|@16629 5591:S28|545950455f5452454528292e697350726f6475637454797065283129 5592:O1|@16630 5593:O1|@16631 5594:S41|545950455f5452454528292e744469737028352964697370502832297072657474794c697374283329 5595:O1|@16632 5596:S45|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283129 5597:S48|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283229283129 5598:O1|@16634 5599:O1|@16636 5600:S35|545950455f5452454528292e7444697370283529646973705028322970526563283229 5601:O1|@16635 5602:S6|2c202e2e2e7d 5603:O1|@16637 5604:O1|@16638 5605:O2|3,@372 5606:S42|545950455f5452454528292e744469737028352964697370502832297072696e745443636f6e73283129 5607:O1|@16639 5608:O5|0,0,0,@5612,@5621 5609:S13|7072696e742d6973466f756e64 5610:O5|0,0,0,@5612,@5611 5611:O2|@5615,0 5612:O2|@5613,0 5613:O2|0,@5614 5614:O5|@4259,961,961,0,0 5615:O2|3,@5616 5616:S10|466f756e644d61746368 5617:O5|0,0,0,@5612,@5618 5618:O2|@5619,0 5619:O2|3,@5620 5620:S13|466f756e644e6f744d61746368 5621:O2|@5622,0 5622:O2|3,@5623 5623:S8|4e6f74466f756e64 5624:O1|@16640 5625:O1|@16641 5626:S41|545950455f5452454528292e744469737028352964697370502832296e616d65546f4c697374283329 5627:S39|545950455f5452454528292e7444697370283529646973705028322966696e6454797065283229 5628:S40|545950455f5452454528292e657154797065436f6e73747273283429636f70794964283129283129 5629:O1|@16644 5630:S33|545950455f5452454528292e657154797065436f6e737472732834296964283129 5631:S55|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b757054797065283129 5632:S57|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b7570537472756374283129 5633:O1|@16648 5634:S25|537472696e672e636f6e636174576974682832296d6b283129 5635:O1|@16649 5636:O2|@1325,@5581 5637:O1|@16651 5638:O1|@16656 5639:S32|545950455f5452454528292e7479706546726f6d547970655061727365283129 5640:O1|@16652 5641:O1|@16653 5642:O1|@16654 5643:O1|@16655 5644:O1|@16657 5645:O2|3,@5147 5646:O2|3,@5183 5647:O1|@16658 5648:O1|@16659 5649:S28|5349474e41545552455328292e646973706c61795370656373283129 5650:O2|3,@5139 5651:S28|5349474e41545552455328292e646973706c61795370656373283229 5652:O1|@16660 5653:S3|203a3e 5654:S46|5349474e41545552455328292e646973706c61795370656373283229646973706c61795369677342696e64283129 5655:O1|@16661 5656:S27|5349474e41545552455328292e646973706c61794c697374283429 5657:O2|3,@5142 5658:O1|@16662 5659:O2|3,@5171 5660:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229 5661:O1|@16663 5662:O1|@16666 5663:S57|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446174617479706542696e64283129 5664:O1|@16664 5665:O2|3,@5111 5666:S56|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436f6e7374727563746f72283129 5667:O1|@16665 5668:S30|5052494e545f50415253455452454528292e7072696e744c697374283429 5669:O1|@16667 5670:O1|@16668 5671:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745479706542696e64283129 5672:O1|@16669 5673:O2|3,@5158 5674:O1|@16670 5675:S60|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61794c69737457697468427074732d283129 5676:O1|@16671 5677:O1|@16672 5678:O1|@16673 5679:O2|3,@5120 5680:O1|@16674 5681:O2|3,@5113 5682:O2|3,@5182 5683:O2|@1323,@5684 5684:O2|@5665,0 5685:O2|3,@5117 5686:O1|@16675 5687:S33|5052494e545f50415253455452454528292e646973706c61794d61746368283129 5688:O2|3,@383 5689:O2|3,@5101 5690:O2|3,@5105 5691:O2|3,@5103 5692:O1|@16676 5693:S40|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229283129 5694:O2|3,@5695 5695:S7|3c456d7074793e 5696:O1|@16677 5697:O1|@16678 5698:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283129 5699:O1|@16679 5700:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283229 5701:O2|3,@5135 5702:O1|@16680 5703:O2|3,@5127 5704:O1|@16681 5705:O1|@16682 5706:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e746676616c62696e64283129 5707:O1|@16683 5708:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436c61757365283129 5709:O1|@16689 5710:S48|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446563283229 5711:O1|@16684 5712:O1|@16685 5713:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283129 5714:O1|@16686 5715:O1|@16687 5716:O1|@16688 5717:O2|3,@5160 5718:O2|3,@5137 5719:O1|@16690 5720:S2|203d 5721:S54|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61795265634c697374283229 5722:O1|@16691 5723:O2|3,@5156 5724:O1|@16692 5725:O2|@359,0 5726:S2|2322 5727:O1|@16693 5728:O2|@1323,@5729 5729:O2|@1870,@1830 5730:O1|@16694 5731:O1|@16695 5732:O1|@16696 5733:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745374724e616d65283129 5734:O2|3,@5180 5735:O2|3,@5166 5736:O2|3,@5133 5737:O1|@16697 5738:O2|3,@1158 5739:O1|@16698 5740:O1|@16700 5741:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e7456616c42696e64283229 5742:O2|@5743,@1830 5743:O2|3,@5125 5744:O1|@16699 5745:O2|@1323,@5746 5746:O2|@5747,0 5747:O2|3,@5177 5748:O2|3,@5130 5749:O3|1,1,1 5750:O1|@16701 5751:S27|5349474e41545552455328292e646973706c617953696773283129 5752:O2|3,@5169 5753:O2|@5645,@1830 5754:O1|@16702 5755:S31|5349474e41545552455328292e646973706c61795370656373283229283129 5756:O1|@16703 5757:O2|3,@5109 5758:O1|@16704 5759:O1|@16705 5760:O1|@16706 5761:O2|3,@5175 5762:S35|535452554354555245535f28292e646973706c617953747275637456616c7565283229 5763:O1|@16707 5764:S30|535452554354555245535f28292e646973706c6179537472756374283129 5765:O1|@16708 5766:S28|535452554354555245535f28292e646973706c61794c697374283429 5767:O1|@16709 5768:O1|@16710 5769:O1|@16711 5770:O2|3,@5173 5771:O1|@16713 5772:S47|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617953696742696e64283129 5773:O2|3,@5123 5774:O1|@16718 5775:S30|535452554354555245535f28292e646973706c6179537472756374283229 5776:O1|@16715 5777:O1|@16716 5778:O1|@16717 5779:O2|3,@5162 5780:O1|@16719 5781:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283129 5782:O1|@16720 5783:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283229 5784:O2|3,@5720 5785:O2|@16721,@110 5786:S29|535452554354555245535f28292e706173733253747275637473283329 5787:O1|@16730 5788:S43|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d6573283129 5789:S48|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d65732831295f2d283129 5790:O1|@16731 5791:S36|535452554354555245535f28292e706173733253747275637473283329656e762d283129 5792:S48|535452554354555245535f28292e706173733253747275637473283329746f704c6576656c49644e756d626572283129 5793:S49|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129 5794:S52|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129283129 5795:O1|@16735 5796:S43|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229 5797:O1|@16739 5798:S49|535452554354555245535f28292e706173733253747275637473283329636865636b5661726961626c6573283229283129 5799:O2|@16738,@4327 5800:S31|545950454944434f444528292e636f6465466f72556e697175654964283129 5801:O1|@16744 5802:S40|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429 5803:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129 5804:O1|@16742 5805:S56|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129283129 5806:S13|5468652074797065206f662028 5807:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283229 5808:O1|@16743 5809:S50|545950455f5452454528292e636865636b466f7246726565547970655661726961626c657328342967656e4e616d65283129 5810:S38|436f6e73747275637465642066726f6d206120667265652074797065207661726961626c652e 5811:O2|@5812,0 5812:S65|2920636f6e7461696e73206120667265652074797065207661726961626c652e2053657474696e6720697420746f206120756e69717565206d6f6e6f747970652e 5813:S23|545950455f5452454528292e666f6c6454797065283129 5814:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283129 5815:O1|@16747 5816:S34|545950455f5452454528292e666f6c6454797065283129666f6c6454283129283129 5817:O1|@16749 5818:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283229 5819:O1|@16748 5820:O1|@16751 5821:S66|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229 5822:O1|@16753 5823:S79|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229636865636b456e747279283329 5824:O1|@16756 5825:S51|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329 5826:S54|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329283129 5827:S10|5369676e617475726520 5828:S43|2068617320616c7265616479206265656e20626f756e6420696e2074686973206465636c61726174696f6e 5829:S29|535452554354555245535f28292e6572726f724d73674e656172283529 5830:O2|@16758,@5374 5831:S22|5349474e41545552455328292e73696756616c283629 5832:O1|@16760 5833:O5|0,0,0,@7017,@7016 5834:S11|7072696e742d7661724964 5835:O3|@16761,@113,@112 5836:O5|0,0,0,@5847,@5846 5837:S12|7072696e742d747970654964 5838:O2|3,@5839 5839:S10|6c6f636174696f6e203d 5840:O2|3,@5841 5841:S13|6465736372697074696f6e203d 5842:O2|3,@5843 5843:S8|69644b696e64203d 5844:O2|3,@5845 5845:S8|616363657373203d 5846:O2|@5850,0 5847:O2|@5848,0 5848:O2|0,@5849 5849:O5|@1128,113,113,0,0 5850:O2|3,@5851 5851:S6|547970654964 5852:O3|@16762,@120,@114 5853:O5|0,0,0,@5916,@5915 5854:S16|7072696e742d7479706549644b696e64 5855:O4|0,@5856,1,1 5856:O1|@16763 5857:S10|7072696e742d626f6f6c 5858:O1|@16764 5859:O2|3,@5860 5860:S8|6f6666736574203d 5861:O2|3,@5862 5862:S12|69734461746174797065203d 5863:O2|3,@5864 5864:S8|657154797065203d 5865:O2|3,@5866 5866:S7|6172697479203d 5867:O5|0,0,0,@5869,@5868 5868:O2|@5872,0 5869:O2|@5870,0 5870:O2|0,@5871 5871:O5|@1128,117,117,0,0 5872:O2|3,@5873 5873:S5|426f756e64 5874:O2|@16765,@117 5875:O1|@16768 5876:S7|61646450502d32 5877:S14|7072696e745f7265662833292d45 5878:O5|@5884,115,0,115,0 5879:S12|7072696e745f726566283329 5880:O1|@16769 5881:S15|706172656e74686573697365283129 5882:O2|3,@5883 5883:S3|726566 5884:S22|2e2f62617369732f45786e5072696e7465722e736d6c 5885:O4|0,@5886,1,1 5886:O1|@16770 5887:O2|3,@5888 5888:S5|756964203d 5889:O2|3,@5890 5890:S13|616c6c6f77557064617465203d 5891:O5|0,0,0,@5893,@5892 5892:O2|@5896,0 5893:O2|@5894,0 5894:O2|0,@5895 5895:O5|@1128,116,116,0,0 5896:O2|3,@5897 5897:S4|46726565 5898:O1|@16771 5899:O2|3,@596 5900:O2|@277,0 5901:O1|@16773 5902:S21|7072696e745f6c697374283329706c697374283229 5903:O1|@16774 5904:O2|@5906,0 5905:S6|402832292829 5906:O2|3,@5907 5907:S1|5d 5908:O2|3,@5914 5909:O1|@16776 5910:S3|307778 5911:S11|7072696e742d7479706573 5912:O2|3,@5913 5913:S7|76616c7565203d 5914:S10|656e636f64696e67203d 5915:O2|@5919,0 5916:O2|@5917,0 5917:O2|0,@5918 5918:O5|@1128,118,118,0,0 5919:O2|3,@5920 5920:S6|54797065466e 5921:O1|@16778 5922:S14|7072696e74706f73735265662829 5923:O5|0,0,0,@5927,@5932 5924:S13|7072696e742d706f7373526566 5925:O5|0,0,0,@5927,@5926 5926:O2|@5930,0 5927:O2|@5928,0 5928:O2|0,@5929 5929:O5|@1128,77,77,0,0 5930:O2|3,@5931 5931:S9|46726f7a656e526566 5932:O2|@5933,0 5933:O2|3,@5934 5934:S11|5661726961626c65526566 5935:O5|@16780,@114,@122,@123,@121 5936:O5|0,0,0,@6000,@5999 5937:O5|0,0,0,@5939,@5938 5938:O2|@5942,0 5939:O2|@5940,0 5940:O2|0,@5941 5941:O5|@1128,145,145,0,0 5942:O2|3,@5943 5943:S7|42616454797065 5944:O5|0,0,0,@5946,@5945 5945:O2|@5949,0 5946:O2|@5947,0 5947:O2|0,@5948 5948:O5|@1128,147,147,0,0 5949:O2|3,@5950 5950:S9|456d70747954797065 5951:O2|3,@5952 5952:S8|726573756c74203d 5953:O2|3,@5954 5954:S5|617267203d 5955:O5|0,0,0,@5957,@5956 5956:O2|@5960,0 5957:O2|@5958,0 5958:O2|0,@5959 5959:O5|@1128,132,132,0,0 5960:O2|3,@5961 5961:S12|46756e6374696f6e54797065 5962:O2|3,@5963 5963:S8|747970656f66203d 5964:O2|3,@5965 5965:S9|7265634c697374203d 5966:O2|3,@5967 5967:S10|66756c6c4c697374203d 5968:O5|0,0,0,@5970,@5969 5969:O2|@5973,0 5970:O2|@5971,0 5971:O2|0,@5972 5972:O5|@1128,138,138,0,0 5973:O2|3,@5974 5974:S12|4c6162656c6c656454797065 5975:S17|7072696e742d74797065436f6e73747273 5976:O2|3,@5977 5977:S9|74797065736574203d 5978:O5|0,0,0,@5980,@5979 5979:O2|@5983,0 5980:O2|@5981,0 5981:O2|0,@5982 5982:O5|@1128,140,140,0,0 5983:O2|3,@5984 5984:S11|4f7665726c6f6164536574 5985:S18|7072696e742d6c6f636174696f6e50726f70 5986:O2|3,@5987 5987:S11|6c6f636174696f6e73203d 5988:O2|3,@5989 5989:S8|636f6e737472203d 5990:O2|3,@5991 5991:S6|61726773203d 5992:O5|0,0,0,@5994,@5993 5993:O2|@5997,0 5994:O2|@5995,0 5995:O2|0,@5996 5996:O5|@1128,124,124,0,0 5997:O2|3,@5998 5998:S16|54797065436f6e737472756374696f6e 5999:O2|@6003,0 6000:O2|@6001,0 6001:O2|0,@6002 6002:O5|@1128,122,122,0,0 6003:O2|3,@6004 6004:S7|54797065566172 6005:O2|@16786,@122 6006:O5|0,0,0,@6018,@6017 6007:S20|7072696e742d6c6162656c4669656c644c697374 6008:O4|0,@6009,3,1 6009:O1|@16787 6010:O5|0,0,0,@6012,@6011 6011:O2|@6015,0 6012:O2|@6013,0 6013:O2|0,@6014 6014:O5|@1128,162,162,0,0 6015:O2|3,@6016 6016:S9|4669656c644c697374 6017:O2|@6021,0 6018:O2|@6019,0 6019:O2|0,@6020 6020:O5|@1128,163,163,0,0 6021:O2|3,@6022 6022:S12|466c657869626c654c697374 6023:O4|@16789,@114,@121,@124 6024:O5|0,0,0,@6030,@6029 6025:O2|3,@6026 6026:S10|7479706556617273203d 6027:O2|3,@6028 6028:S12|6964656e746966696572203d 6029:O2|@6033,0 6030:O2|@6031,0 6031:O2|0,@6032 6032:O5|@1128,150,150,0,0 6033:O2|3,@4125 6034:O1|@16793 6035:O5|0,0,0,@6058,@6057 6036:O5|0,0,0,@6038,@6037 6037:O2|@6041,0 6038:O2|@6039,0 6039:O2|0,@6040 6040:O5|@1128,267,267,0,0 6041:O2|3,@6042 6042:S10|4465636c617265644174 6043:O5|0,0,0,@6045,@6044 6044:O2|@6048,0 6045:O2|@6046,0 6046:O2|0,@6047 6047:O5|@1128,268,268,0,0 6048:O2|3,@6049 6049:S8|4f70656e65644174 6050:O5|0,0,0,@6052,@6051 6051:O2|@6055,0 6052:O2|@6053,0 6053:O2|0,@6054 6054:O5|@1128,270,270,0,0 6055:O2|3,@6056 6056:S10|53657175656e63654e6f 6057:O2|@6061,0 6058:O2|@6059,0 6059:O2|0,@6060 6060:O5|@1128,269,269,0,0 6061:O2|3,@6062 6062:S11|5374727563747572654174 6063:O3|@16794,@125,@112 6064:O5|0,0,0,@6920,@6919 6065:S15|7072696e742d76616c416363657373 6066:O5|0,0,0,@6068,@6067 6067:O2|@6071,0 6068:O2|@6069,0 6069:O2|0,@6070 6070:O5|@1128,170,170,0,0 6071:O2|3,@6072 6072:S6|466f726d616c 6073:O7|@16795,@126,@140,@141,@142,@143,@127 6074:O5|0,0,0,@6731,@6730 6075:S14|7072696e742d636f646574726565 6076:O2|3,@6077 6077:S10|6e756d576f726473203d 6078:O2|3,@6079 6079:S9|696e697469616c203d 6080:O2|3,@6081 6081:S7|666c616773203d 6082:O5|0,0,0,@6084,@6083 6083:O2|@1720,0 6084:O2|@6085,0 6085:O2|0,@6086 6086:O5|@1948,112,112,0,0 6087:O2|3,@6088 6088:S11|73686f7274436f6e64203d 6089:O2|3,@6090 6090:S6|6f706572203d 6091:O2|3,@6092 6092:S10|6c6f6e6743616c6c203d 6093:O2|3,@6094 6094:S6|61726732203d 6095:O2|3,@6096 6096:S6|61726731203d 6097:O5|0,0,0,@6099,@6098 6098:O2|@6102,0 6099:O2|@6100,0 6100:O2|0,@6101 6101:O5|@1948,76,76,0,0 6102:O2|3,@3730 6103:S13|7072696e742d636f6465557365 6104:O2|3,@6105 6105:S5|757365203d 6106:O2|3,@6107 6107:S6|61646472203d 6108:O1|@16798 6109:O5|0,0,0,@6119,@6118 6110:S18|7072696e742d617267756d656e7454797065 6111:O5|0,0,0,@6113,@6112 6112:O2|@6116,0 6113:O2|@6114,0 6114:O2|0,@6115 6115:O5|@2633,137,137,0,0 6116:O2|3,@6117 6117:S14|466c6f6174696e67507454797065 6118:O2|@6122,0 6119:O2|@6120,0 6120:O2|0,@6121 6121:O5|@2633,136,136,0,0 6122:O2|3,@6123 6123:S11|47656e6572616c54797065 6124:O2|3,@6125 6125:S6|6c6f6f70203d 6126:O2|3,@6127 6127:S11|617267756d656e7473203d 6128:O5|0,0,0,@6130,@6129 6129:O2|@6133,0 6130:O2|@6131,0 6131:O2|0,@6132 6132:O5|@1948,83,83,0,0 6133:O2|3,@6134 6134:S9|426567696e4c6f6f70 6135:O5|@16799,@131,@132,@133,@130 6136:O5|0,0,0,@6219,@6218 6137:S15|7072696e742d62696e6172794f7073 6138:O5|0,0,0,@6140,@6139 6139:O2|@6143,0 6140:O2|@6141,0 6141:O2|0,@6142 6142:O5|@2633,74,74,0,0 6143:O2|3,@1746 6144:O5|0,0,0,@6146,@6145 6145:O2|@6149,0 6146:O2|@6147,0 6147:O2|0,@6148 6148:O5|@2633,70,70,0,0 6149:O2|3,@6150 6150:S19|4669786564507265636973696f6e4172697468 6151:O5|0,0,0,@6153,@6152 6152:O2|@6156,0 6153:O2|@6154,0 6154:O2|0,@6155 6155:O5|@2633,76,76,0,0 6156:O2|3,@6157 6157:S14|4c61726765576f72644172697468 6158:O5|0,0,0,@6160,@6159 6159:O2|@6163,0 6160:O2|@6161,0 6161:O2|0,@6162 6162:O5|@2633,75,75,0,0 6163:O2|3,@6164 6164:S19|4c61726765576f7264436f6d70617269736f6e 6165:O5|0,0,0,@6167,@6166 6166:O2|@6170,0 6167:O2|@6168,0 6168:O2|0,@6169 6169:O5|@2633,77,77,0,0 6170:O2|3,@6171 6171:S16|4c61726765576f72644c6f676963616c 6172:O5|0,0,0,@6174,@6173 6173:O2|@6177,0 6174:O2|@6175,0 6175:O2|0,@6176 6176:O5|@2633,78,78,0,0 6177:O2|3,@6178 6178:S14|4c61726765576f72645368696674 6179:O5|0,0,0,@6181,@6180 6180:O2|@6184,0 6181:O2|@6182,0 6182:O2|0,@6183 6183:O5|@2633,80,80,0,0 6184:O2|3,@6185 6185:S9|5265616c4172697468 6186:O5|0,0,0,@6188,@6187 6187:O2|@6191,0 6188:O2|@6189,0 6189:O2|0,@6190 6190:O5|@2633,79,79,0,0 6191:O2|3,@6192 6192:S14|5265616c436f6d70617269736f6e 6193:O5|0,0,0,@6195,@6194 6194:O2|@6198,0 6195:O2|@6196,0 6196:O2|0,@6197 6197:O5|@2633,71,71,0,0 6198:O2|3,@6199 6199:S9|576f72644172697468 6200:O2|3,@6201 6201:S6|74657374203d 6202:O2|3,@6203 6203:S10|69735369676e6564203d 6204:O5|0,0,0,@6206,@6205 6205:O2|@6209,0 6206:O2|@6207,0 6207:O2|0,@6208 6208:O5|@2633,69,69,0,0 6209:O2|3,@6210 6210:S14|576f7264436f6d70617269736f6e 6211:O5|0,0,0,@6213,@6212 6212:O2|@6216,0 6213:O2|@6214,0 6214:O2|0,@6215 6215:O5|@2633,72,72,0,0 6216:O2|3,@6217 6217:S11|576f72644c6f676963616c 6218:O2|@6222,0 6219:O2|@6220,0 6220:O2|0,@6221 6221:O5|@2633,73,73,0,0 6222:O2|3,@6223 6223:S9|576f72645368696674 6224:O1|@16800 6225:O5|0,0,0,@6270,@6269 6226:S26|7072696e742d61726974686d657469634f7065726174696f6e73 6227:O5|0,0,0,@6229,@6228 6228:O2|@6232,0 6229:O2|@6230,0 6230:O2|0,@6231 6231:O5|@2633,34,34,0,0 6232:O2|3,@6233 6233:S8|4172697468416464 6234:O5|0,0,0,@6236,@6235 6235:O2|@6239,0 6236:O2|@6237,0 6237:O2|0,@6238 6238:O5|@2633,39,39,0,0 6239:O2|3,@6240 6240:S8|4172697468446976 6241:O5|0,0,0,@6243,@6242 6242:O2|@6246,0 6243:O2|@6244,0 6244:O2|0,@6245 6245:O5|@2633,40,40,0,0 6246:O2|3,@6247 6247:S8|41726974684d6f64 6248:O5|0,0,0,@6250,@6249 6249:O2|@6253,0 6250:O2|@6251,0 6251:O2|0,@6252 6252:O5|@2633,36,36,0,0 6253:O2|3,@6254 6254:S9|41726974684d756c74 6255:O5|0,0,0,@6257,@6256 6256:O2|@6260,0 6257:O2|@6258,0 6258:O2|0,@6259 6259:O5|@2633,37,37,0,0 6260:O2|3,@6261 6261:S9|417269746851756f74 6262:O5|0,0,0,@6264,@6263 6263:O2|@6267,0 6264:O2|@6265,0 6265:O2|0,@6266 6266:O5|@2633,38,38,0,0 6267:O2|3,@6268 6268:S8|417269746852656d 6269:O2|@6273,0 6270:O2|@6271,0 6271:O2|0,@6272 6272:O5|@2633,35,35,0,0 6273:O2|3,@6274 6274:S8|4172697468537562 6275:O1|@16801 6276:O5|0,0,0,@6307,@6306 6277:S20|7072696e742d74657374436f6e646974696f6e73 6278:O5|0,0,0,@6280,@6279 6279:O2|@6283,0 6280:O2|@6281,0 6281:O2|0,@6282 6282:O5|@2633,27,27,0,0 6283:O2|3,@6284 6284:S9|54657374457175616c 6285:O5|0,0,0,@6287,@6286 6286:O2|@6290,0 6287:O2|@6288,0 6288:O2|0,@6289 6289:O5|@2633,30,30,0,0 6290:O2|3,@6291 6291:S11|5465737447726561746572 6292:O5|0,0,0,@6294,@6293 6293:O2|@6297,0 6294:O2|@6295,0 6295:O2|0,@6296 6296:O5|@2633,31,31,0,0 6297:O2|3,@6298 6298:S16|5465737447726561746572457175616c 6299:O5|0,0,0,@6301,@6300 6300:O2|@6304,0 6301:O2|@6302,0 6302:O2|0,@6303 6303:O5|@2633,28,28,0,0 6304:O2|3,@6305 6305:S8|546573744c657373 6306:O2|@6310,0 6307:O2|@6308,0 6308:O2|0,@6309 6309:O5|@2633,29,29,0,0 6310:O2|3,@6311 6311:S13|546573744c657373457175616c 6312:O1|@16802 6313:O5|0,0,0,@6330,@6329 6314:S23|7072696e742d6c6f676963616c4f7065726174696f6e73 6315:O5|0,0,0,@6317,@6316 6316:O2|@6320,0 6317:O2|@6318,0 6318:O2|0,@6319 6319:O5|@2633,43,43,0,0 6320:O2|3,@6321 6321:S10|4c6f676963616c416e64 6322:O5|0,0,0,@6324,@6323 6323:O2|@6327,0 6324:O2|@6325,0 6325:O2|0,@6326 6326:O5|@2633,44,44,0,0 6327:O2|3,@6328 6328:S9|4c6f676963616c4f72 6329:O2|@6333,0 6330:O2|@6331,0 6331:O2|0,@6332 6332:O5|@2633,45,45,0,0 6333:O2|3,@6334 6334:S10|4c6f676963616c586f72 6335:O1|@16803 6336:O5|0,0,0,@6353,@6352 6337:S21|7072696e742d73686966744f7065726174696f6e73 6338:O5|0,0,0,@6340,@6339 6339:O2|@6343,0 6340:O2|@6341,0 6341:O2|0,@6342 6342:O5|@2633,48,48,0,0 6343:O2|3,@6344 6344:S9|53686966744c656674 6345:O5|0,0,0,@6347,@6346 6346:O2|@6350,0 6347:O2|@6348,0 6348:O2|0,@6349 6349:O5|@2633,50,50,0,0 6350:O2|3,@6351 6351:S20|5368696674526967687441726974686d65746963 6352:O2|@6356,0 6353:O2|@6354,0 6354:O2|0,@6355 6355:O5|@2633,49,49,0,0 6356:O2|3,@6357 6357:S17|536869667452696768744c6f676963616c 6358:O5|0,0,0,@6360,@6359 6359:O2|@6363,0 6360:O2|@6361,0 6361:O2|0,@6362 6362:O5|@1948,70,70,0,0 6363:O2|3,@6364 6364:S6|42696e617279 6365:O2|3,@6366 6366:S7|696e646578203d 6367:O2|3,@6368 6368:S6|62617365203d 6369:O1|@16805 6370:O5|0,0,0,@6389,@6388 6371:S17|7072696e742d626c6f636b4f704b696e64 6372:O5|0,0,0,@6374,@6373 6373:O2|@6377,0 6374:O2|@6375,0 6375:O2|0,@6376 6376:O5|@2633,237,237,0,0 6377:O2|3,@6378 6378:S18|426c6f636b4f70436f6d7061726542797465 6379:O5|0,0,0,@6381,@6380 6380:O2|@6384,0 6381:O2|@6382,0 6382:O2|0,@6383 6383:O5|@2633,236,236,0,0 6384:O2|3,@6385 6385:S16|426c6f636b4f70457175616c42797465 6386:O2|3,@6387 6387:S12|6973427974654d6f7665203d 6388:O2|@6392,0 6389:O2|@6390,0 6390:O2|0,@6391 6391:O5|@2633,235,235,0,0 6392:O2|3,@6393 6393:S11|426c6f636b4f704d6f7665 6394:O2|3,@6395 6395:S12|736f757263654c656674203d 6396:O2|3,@6397 6397:S8|6c656e677468203d 6398:O2|3,@6399 6399:S6|6b696e64203d 6400:O2|3,@6401 6401:S11|646573745269676874203d 6402:O5|0,0,0,@6404,@6403 6403:O2|@6407,0 6404:O2|@6405,0 6405:O2|0,@6406 6406:O5|@1948,107,107,0,0 6407:O2|3,@6408 6408:S14|426c6f636b4f7065726174696f6e 6409:O5|0,0,0,@6411,@6410 6410:O2|@6414,0 6411:O2|@6412,0 6412:O2|0,@6413 6413:O5|@1948,81,81,0,0 6414:O2|3,@6415 6415:S4|436f6e64 6416:O1|@16807 6417:O4|0,@6418,2,1 6418:O1|@16808 6419:S25|7072696e742d556e6976657273616c2e756e6976657273616c 6420:O1|@16809 6421:O5|0,0,0,@6423,@6422 6422:O2|@6426,0 6423:O2|@6424,0 6424:O2|0,@6425 6425:O5|@1948,54,54,0,0 6426:O2|3,@6427 6427:S7|436f6e73746e74 6428:O2|3,@6429 6429:S12|726573756c7454797065203d 6430:O2|3,@6431 6431:S10|66756e6374696f6e203d 6432:O2|3,@6433 6433:S9|6172674c697374203d 6434:O5|0,0,0,@6436,@6435 6435:O2|@6439,0 6436:O2|@6437,0 6437:O2|0,@6438 6438:O5|@1948,61,61,0,0 6439:O2|3,@6440 6440:S4|4576616c 6441:O5|0,0,0,@6443,@6442 6442:O2|@6446,0 6443:O2|@6444,0 6444:O2|0,@6445 6445:O5|@1948,56,56,0,0 6446:O2|3,@6447 6447:S7|45787472616374 6448:O5|0,0,0,@6450,@6449 6449:O2|@1791,0 6450:O2|@6451,0 6451:O2|0,@6452 6452:O5|@1948,110,110,0,0 6453:O2|3,@6454 6454:S9|68616e646c6572203d 6455:O2|3,@6456 6456:S5|657870203d 6457:O2|3,@6458 6458:S14|65785061636b657441646472203d 6459:O5|0,0,0,@6461,@6460 6460:O2|@6464,0 6461:O2|@6462,0 6462:O2|0,@6463 6463:O5|@1948,90,90,0,0 6464:O2|3,@6465 6465:S6|48616e646c65 6466:O2|3,@6467 6467:S11|697356617269616e74203d 6468:O5|0,0,0,@6470,@6469 6469:O2|@6473,0 6470:O2|@6471,0 6471:O2|0,@6472 6472:O5|@1948,58,58,0,0 6473:O2|3,@6474 6474:S8|496e646972656374 6475:S14|7072696e742d6c6f6164466f726d 6476:O2|3,@6477 6477:S8|726563557365203d 6478:O2|3,@6479 6479:S12|6c6f63616c436f756e74203d 6480:O2|3,@6481 6481:S10|6973496e6c696e65203d 6482:O2|3,@6483 6483:S9|636c6f73757265203d 6484:O2|3,@6485 6485:S6|626f6479203d 6486:O2|3,@6487 6487:S10|6172675479706573203d 6488:O5|0,0,0,@6490,@6489 6489:O2|@6493,0 6490:O2|@6491,0 6491:O2|0,@6492 6492:O5|@1948,79,79,0,0 6493:O2|3,@6494 6494:S6|4c616d626461 6495:O1|@16816 6496:O5|0,0,0,@6557,@6556 6497:S19|7072696e742d6c6f616453746f72654b696e64 6498:O5|0,0,0,@6500,@6499 6499:O2|@6503,0 6500:O2|@6501,0 6501:O2|0,@6502 6502:O5|@2633,227,227,0,0 6503:O2|3,@6504 6504:S12|4c6f616453746f7265433136 6505:O5|0,0,0,@6507,@6506 6506:O2|@6510,0 6507:O2|@6508,0 6508:O2|0,@6509 6509:O5|@2633,228,228,0,0 6510:O2|3,@6511 6511:S12|4c6f616453746f7265433332 6512:O5|0,0,0,@6514,@6513 6513:O2|@6517,0 6514:O2|@6515,0 6515:O2|0,@6516 6516:O5|@2633,229,229,0,0 6517:O2|3,@6518 6518:S12|4c6f616453746f7265433634 6519:O5|0,0,0,@6521,@6520 6520:O2|@6524,0 6521:O2|@6522,0 6522:O2|0,@6523 6523:O5|@2633,226,226,0,0 6524:O2|3,@6525 6525:S11|4c6f616453746f72654338 6526:O5|0,0,0,@6528,@6527 6527:O2|@6531,0 6528:O2|@6529,0 6529:O2|0,@6530 6530:O5|@2633,231,231,0,0 6531:O2|3,@6532 6532:S16|4c6f616453746f726543446f75626c65 6533:O5|0,0,0,@6535,@6534 6534:O2|@6538,0 6535:O2|@6536,0 6536:O2|0,@6537 6537:O5|@2633,230,230,0,0 6538:O2|3,@6539 6539:S15|4c6f616453746f726543466c6f6174 6540:O2|3,@6541 6541:S13|6973496d6d757461626c65203d 6542:O5|0,0,0,@6544,@6543 6543:O2|@6547,0 6544:O2|@6545,0 6545:O2|0,@6546 6546:O5|@2633,225,225,0,0 6547:O2|3,@6548 6548:S15|4c6f616453746f72654d4c42797465 6549:O5|0,0,0,@6551,@6550 6550:O2|@6554,0 6551:O2|@6552,0 6552:O2|0,@6553 6553:O5|@2633,224,224,0,0 6554:O2|3,@6555 6555:S15|4c6f616453746f72654d4c576f7264 6556:O2|@6560,0 6557:O2|@6558,0 6558:O2|0,@6559 6559:O5|@2633,232,232,0,0 6560:O2|3,@6561 6561:S25|4c6f616453746f7265556e746167676564556e7369676e6564 6562:O2|3,@6563 6563:S9|61646472657373203d 6564:O5|0,0,0,@6566,@6565 6565:O2|@6569,0 6566:O2|@6567,0 6567:O2|0,@6568 6568:O5|@1948,103,103,0,0 6569:O2|3,@6570 6570:S13|4c6f61644f7065726174696f6e 6571:O5|0,0,0,@6573,@6572 6572:O2|@6576,0 6573:O2|@6574,0 6574:O2|0,@6575 6575:O5|@1948,86,86,0,0 6576:O2|3,@6577 6577:S4|4c6f6f70 6578:S17|7072696e742d636f646542696e64696e67 6579:O5|0,0,0,@6581,@6580 6580:O2|@6584,0 6581:O2|@6582,0 6582:O2|0,@6583 6583:O5|@1948,52,52,0,0 6584:O2|3,@6585 6585:S6|4e6577656e76 6586:O5|0,0,0,@6588,@6587 6587:O2|@6591,0 6588:O2|@6589,0 6589:O2|0,@6590 6590:O5|@1948,88,88,0,0 6591:O2|3,@6592 6592:S5|5261697365 6593:O1|@16819 6594:O1|@16820 6595:O2|3,@6603 6596:S20|426f6f6c566563746f722e707265747479283329 6597:O2|@6598,0 6598:O2|3,@6599 6599:S4|2e2e2e5d 6600:O2|@6601,0 6601:O2|3,@418 6602:O2|3,@369 6603:S9|66726f6d4c6973745b 6604:O2|3,@6605 6605:S7|7475706c65203d 6606:O2|3,@6607 6607:S8|66696c746572203d 6608:O2|3,@6609 6609:S11|636f6e7461696e6572203d 6610:O5|0,0,0,@6612,@6611 6611:O2|@6615,0 6612:O2|@6613,0 6613:O2|0,@6614 6614:O5|@1948,94,94,0,0 6615:O2|3,@6616 6616:S12|536574436f6e7461696e6572 6617:O5|0,0,0,@6619,@6618 6618:O2|@6622,0 6619:O2|@6620,0 6620:O2|0,@6621 6621:O5|@1948,105,105,0,0 6622:O2|3,@6623 6623:S14|53746f72654f7065726174696f6e 6624:O2|3,@6625 6625:S5|746167203d 6626:O2|3,@6627 6627:S8|6d6178546167203d 6628:O5|0,0,0,@6630,@6629 6629:O2|@6633,0 6630:O2|@6631,0 6631:O2|0,@6632 6632:O5|@1948,101,101,0,0 6633:O2|3,@6634 6634:S7|54616754657374 6635:O2|3,@6636 6636:S8|6669656c6473203d 6637:O5|0,0,0,@6639,@6638 6638:O2|@6642,0 6639:O2|@6640,0 6640:O2|0,@6641 6641:O5|@1948,92,92,0,0 6642:O2|3,@6643 6643:S5|5475706c65 6644:O1|@16823 6645:O5|0,0,0,@6726,@6725 6646:S14|7072696e742d756e6172794f7073 6647:O5|0,0,0,@6649,@6648 6648:O2|@6652,0 6649:O2|@6650,0 6650:O2|0,@6651 6651:O5|@2633,59,59,0,0 6652:O2|3,@1145 6653:O5|0,0,0,@6655,@6654 6654:O2|@6658,0 6655:O2|@6656,0 6656:O2|0,@6657 6657:O5|@2633,58,58,0,0 6658:O2|3,@1146 6659:O5|0,0,0,@6661,@6660 6660:O2|@6664,0 6661:O2|@6662,0 6662:O2|0,@6663 6663:O5|@2633,60,60,0,0 6664:O2|3,@1147 6665:O5|0,0,0,@6667,@6666 6666:O2|@6670,0 6667:O2|@6668,0 6668:O2|0,@6669 6669:O5|@2633,57,57,0,0 6670:O2|3,@1148 6671:O5|0,0,0,@6673,@6672 6672:O2|@6676,0 6673:O2|@6674,0 6674:O2|0,@6675 6675:O5|@2633,66,66,0,0 6676:O2|3,@1149 6677:O5|0,0,0,@6679,@6678 6678:O2|@6682,0 6679:O2|@6680,0 6680:O2|0,@6681 6681:O5|@2633,54,54,0,0 6682:O2|3,@1150 6683:O5|0,0,0,@6685,@6684 6684:O2|@6688,0 6685:O2|@6686,0 6686:O2|0,@6687 6687:O5|@2633,61,61,0,0 6688:O2|3,@1151 6689:O5|0,0,0,@6691,@6690 6690:O2|@6694,0 6691:O2|@6692,0 6692:O2|0,@6693 6693:O5|@2633,56,56,0,0 6694:O2|3,@1152 6695:O5|0,0,0,@6697,@6696 6696:O2|@6700,0 6697:O2|@6698,0 6698:O2|0,@6699 6699:O5|@2633,55,55,0,0 6700:O2|3,@1153 6701:O5|0,0,0,@6703,@6702 6702:O2|@6706,0 6703:O2|@6704,0 6704:O2|0,@6705 6705:O5|@2633,53,53,0,0 6706:O2|3,@1144 6707:O5|0,0,0,@6709,@6708 6708:O2|@6712,0 6709:O2|@6710,0 6710:O2|0,@6711 6711:O5|@2633,64,64,0,0 6712:O2|3,@1154 6713:O5|0,0,0,@6715,@6714 6714:O2|@6718,0 6715:O2|@6716,0 6716:O2|0,@6717 6717:O5|@2633,65,65,0,0 6718:O2|3,@1155 6719:O5|0,0,0,@6721,@6720 6720:O2|@6724,0 6721:O2|@6722,0 6722:O2|0,@6723 6723:O5|@2633,62,62,0,0 6724:O2|3,@1156 6725:O2|@6729,0 6726:O2|@6727,0 6727:O2|0,@6728 6728:O5|@2633,63,63,0,0 6729:O2|3,@1157 6730:O2|@6734,0 6731:O2|@6732,0 6732:O2|0,@6733 6733:O5|@1948,69,69,0,0 6734:O2|3,@6735 6735:S5|556e617279 6736:O1|@16824 6737:O5|0,0,0,@6747,@6746 6738:S21|7072696e742d617262507265636973696f6e4f7073 6739:O5|0,0,0,@6741,@6740 6740:O2|@6744,0 6741:O2|@6742,0 6742:O2|0,@6743 6743:O5|@1948,36,36,0,0 6744:O2|3,@6745 6745:S8|4172624172697468 6746:O2|@6750,0 6747:O2|@6748,0 6748:O2|0,@6749 6749:O5|@1948,35,35,0,0 6750:O2|3,@6751 6751:S10|417262436f6d70617265 6752:O3|@16825,@126,@141 6753:O5|0,0,0,@6775,@6774 6754:O5|0,0,0,@6756,@6755 6755:O2|@6759,0 6756:O2|@6757,0 6757:O2|0,@6758 6758:O5|@1948,46,46,0,0 6759:O2|3,@6760 6760:S8|5573654170706c79 6761:O5|0,0,0,@6763,@6762 6762:O2|@6766,0 6763:O2|@6764,0 6764:O2|0,@6765 6765:O5|@1948,45,45,0,0 6766:O2|3,@6767 6767:S9|5573654578706f7274 6768:O5|0,0,0,@6770,@6769 6769:O2|@6773,0 6770:O2|@6771,0 6771:O2|0,@6772 6772:O5|@1948,49,49,0,0 6773:O2|3,@1806 6774:O2|@6778,0 6775:O2|@6776,0 6776:O2|0,@6777 6777:O5|@1948,44,44,0,0 6778:O2|3,@6779 6779:S10|55736547656e6572616c 6780:O1|@16829 6781:O5|0,0,0,@6804,@6803 6782:O5|0,0,0,@6784,@6783 6783:O2|@6787,0 6784:O2|@6785,0 6785:O2|0,@6786 6786:O5|@1948,123,123,0,0 6787:O2|3,@6788 6788:S12|4c6f6164417267756d656e74 6789:O5|0,0,0,@6791,@6790 6790:O2|@6794,0 6791:O2|@6792,0 6792:O2|0,@6793 6793:O5|@1948,125,125,0,0 6794:O2|3,@6795 6795:S11|4c6f6164436c6f73757265 6796:O5|0,0,0,@6798,@6797 6797:O2|@6801,0 6798:O2|@6799,0 6799:O2|0,@6800 6800:O5|@1948,124,124,0,0 6801:O2|3,@6802 6802:S9|4c6f61644c6f63616c 6803:O2|@6807,0 6804:O2|@6805,0 6805:O2|0,@6806 6806:O5|@1948,126,126,0,0 6807:O2|3,@6808 6808:S13|4c6f6164526563757273697665 6809:O1|@16830 6810:O5|0,0,0,@6820,@6819 6811:S18|7072696e742d696e6c696e65537461747573 6812:O5|0,0,0,@6814,@6813 6813:O2|@6817,0 6814:O2|@6815,0 6815:O2|0,@6816 6816:O5|@1948,40,40,0,0 6817:O2|3,@6818 6818:S6|496e6c696e65 6819:O2|@6823,0 6820:O2|@6821,0 6821:O2|0,@6822 6822:O5|@1948,39,39,0,0 6823:O2|3,@6824 6824:S9|4e6f6e496e6c696e65 6825:O5|@16831,@141,@126,@143,@142 6826:O5|0,0,0,@6855,@6854 6827:O2|3,@6828 6828:S6|73697a65203d 6829:O2|3,@6830 6830:S8|736574746572203d 6831:O5|0,0,0,@6833,@6832 6832:O2|@6836,0 6833:O2|@6834,0 6834:O2|0,@6835 6835:O5|@1948,118,118,0,0 6836:O2|3,@6837 6837:S9|436f6e7461696e6572 6838:O5|0,0,0,@6840,@6839 6839:O2|@6843,0 6840:O2|@6841,0 6841:O2|0,@6842 6842:O5|@1948,115,115,0,0 6843:O2|3,@6844 6844:S6|4465636c6172 6845:O5|0,0,0,@6847,@6846 6846:O2|@6850,0 6847:O2|@6848,0 6848:O2|0,@6849 6849:O5|@1948,117,117,0,0 6850:O2|3,@6851 6851:S11|4e756c6c42696e64696e67 6852:O2|3,@6853 6853:S8|6c616d626461203d 6854:O2|@6858,0 6855:O2|@6856,0 6856:O2|0,@6857 6857:O5|@1948,116,116,0,0 6858:O2|3,@6859 6859:S7|52656344656373 6860:O5|0,0,0,@6862,@6861 6861:O2|@6865,0 6862:O2|@6863,0 6863:O2|0,@6864 6864:O5|@1128,167,167,0,0 6865:O2|3,@6866 6866:S6|476c6f62616c 6867:O4|0,@6868,1,1 6868:O1|@16840 6869:S9|7072696e742d696e74 6870:O4|0,@6871,3,1 6871:O1|@16841 6872:S11|7072696e742d6c6576656c 6873:O2|@16842,@145 6874:O5|0,0,0,@6887,@6886 6875:O2|@5556,@6876 6876:O2|@1323,@6877 6877:O2|@6879,@6878 6878:O2|@1323,@6881 6879:O2|3,@6880 6880:S8|6c6f6f6b7570203d 6881:O2|@6882,@5552 6882:O2|3,@6883 6883:S2|666e 6884:O2|3,@6885 6885:S5|6c6576203d 6886:O2|@6890,0 6887:O2|@6888,0 6888:O2|0,@6889 6889:O5|@947,71,71,0,0 6890:O2|3,@6891 6891:S5|4c6576656c 6892:O1|@16843 6893:O5|0,0,0,@6900,@6899 6894:S19|7072696e742d637265617465436c6f73757265 6895:O4|0,@6896,3,1 6896:O1|@16844 6897:O4|0,@6898,2,2 6898:O1|@16845 6899:O2|@6903,0 6900:O2|@6901,0 6901:O2|0,@6902 6902:O5|@1056,460,460,0,0 6903:O2|3,@1786 6904:O2|3,@6905 6905:S7|6c6576656c203d 6906:O5|0,0,0,@6908,@6907 6907:O2|@6911,0 6908:O2|@6909,0 6909:O2|0,@6910 6910:O5|@1128,168,168,0,0 6911:O2|3,@1787 6912:O5|0,0,0,@6914,@6913 6913:O2|@6917,0 6914:O2|@6915,0 6915:O2|0,@6916 6916:O5|@1128,171,171,0,0 6917:O2|3,@6918 6918:S10|4f7665726c6f61646564 6919:O2|@6923,0 6920:O2|@6921,0 6921:O2|0,@6922 6922:O5|@1128,169,169,0,0 6923:O2|3,@6924 6924:S8|53656c6563746564 6925:O1|@16846 6926:O5|0,0,0,@6984,@6983 6927:S19|7072696e742d74797065446570656e64656e74 6928:O5|0,0,0,@6930,@6929 6929:O2|@6933,0 6930:O2|@6931,0 6931:O2|0,@6932 6932:O5|@1128,239,239,0,0 6933:O2|3,@6934 6934:S11|4164644f7665726c6f6164 6935:O5|0,0,0,@6937,@6936 6936:O2|@6940,0 6937:O2|@6938,0 6938:O2|0,@6939 6939:O5|@1128,236,236,0,0 6940:O2|3,@6941 6941:S9|416464507265747479 6942:O5|0,0,0,@6944,@6943 6943:O2|@6947,0 6944:O2|@6945,0 6945:O2|0,@6946 6946:O5|@1128,237,237,0,0 6947:O2|3,@1733 6948:O5|0,0,0,@6950,@6949 6949:O2|@6953,0 6950:O2|@6951,0 6951:O2|0,@6952 6952:O5|@1128,241,241,0,0 6953:O2|3,@6954 6954:S11|4765744c6f636174696f6e 6955:O5|0,0,0,@6957,@6956 6956:O2|@6960,0 6957:O2|@6958,0 6958:O2|0,@6959 6959:O5|@1128,234,234,0,0 6960:O2|3,@6961 6961:S9|476574507265747479 6962:O5|0,0,0,@6964,@6963 6963:O2|@6967,0 6964:O2|@6965,0 6965:O2|0,@6966 6966:O5|@1128,235,235,0,0 6967:O2|3,@6968 6968:S10|4d616b65537472696e67 6969:O5|0,0,0,@6971,@6970 6970:O2|@6974,0 6971:O2|@6972,0 6972:O2|0,@6973 6973:O5|@1128,238,238,0,0 6974:O2|3,@6975 6975:S8|4e6f74457175616c 6976:O5|0,0,0,@6978,@6977 6977:O2|@6981,0 6978:O2|@6979,0 6979:O2|0,@6980 6980:O5|@1128,233,233,0,0 6981:O2|3,@6982 6982:S5|5072696e74 6983:O2|@6987,0 6984:O2|@6985,0 6985:O2|0,@6986 6986:O5|@1128,240,240,0,0 6987:O2|3,@6988 6988:S7|54797065446570 6989:O5|0,0,0,@6991,@6990 6990:O2|@6994,0 6991:O2|@6992,0 6992:O2|0,@6993 6993:O5|@5380,463,463,0,0 6994:O2|3,@6995 6995:S8|46726565536c6f74 6996:O5|0,0,0,@6998,@6997 6997:O2|@7001,0 6998:O2|@6999,0 6999:O2|0,@7000 7000:O5|@5380,461,461,0,0 7001:O2|3,@7002 7002:S10|53686172656457697468 7003:O5|0,0,0,@7005,@7004 7004:O2|@7008,0 7005:O2|@7006,0 7006:O2|0,@7007 7007:O5|@5380,464,464,0,0 7008:O2|3,@7009 7009:S5|556e736574 7010:O4|0,@7011,3,1 7011:O1|@16847 7012:O2|3,@7013 7013:S14|6465736372697074696f6e73203d 7014:O2|3,@7015 7015:S9|626f756e644964203d 7016:O2|@7020,0 7017:O2|@7018,0 7018:O2|0,@7019 7019:O5|@5380,462,462,0,0 7020:O2|3,@7021 7021:S12|5661726961626c65536c6f74 7022:O2|@16848,@7023 7023:O2|@17558,@7022 7024:O1|@17556 7025:S36|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529 7026:O1|@16852 7027:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283129283129 7028:S54|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e7465722836292d45 7029:S5|56616c7565 7030:O1|@16851 7031:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529737472756374456e762d283129 7032:O1|@16854 7033:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629 7034:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629283129 7035:S2|2028 7036:S39|2920697320616c72656164792070726573656e7420696e2074686973207369676e61747572652e 7037:S28|5349474e41545552455328292e6572726f724d73674e656172283529 7038:O1|@16857 7039:O1|@16860 7040:S9|537472756374757265 7041:O1|@16861 7042:O4|@16,@815,@7044,@7043 7043:O5|@5380,989,0,989,0 7044:S28|456e746572696e672066697869747920696e207369676e6174757265 7045:O1|@16862 7046:O4|@16,@815,@7048,@7047 7047:O5|@5380,990,0,990,0 7048:S31|456e746572696e67207369676e617475726520696e207369676e6174757265 7049:O1|@16863 7050:O4|@16,@815,@7052,@7051 7051:O5|@5380,991,0,991,0 7052:S29|456e746572696e672066756e63746f7220696e207369676e6174757265 7053:O1|@16864 7054:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329 7055:O1|@16866 7056:S59|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332970537472756374283229 7057:O1|@16871 7058:S69|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329705374727563742832296e6577456e762d283129 7059:O1|@16872 7060:S44|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529 7061:O1|@16874 7062:S32|5349474e41545552455328292e73696756616c2836296c6f6f6b536967283229 7063:S11|5369676e61747572652028 7064:S23|2920686173206e6f74206265656e206465636c61726564 7065:S31|5349474e41545552455328292e676976654572726f72283329283129283129 7066:O1|@16876 7067:S49|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529762d283129 7068:O1|@16877 7069:S57|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e6577496473283229 7070:O4|@16,@815,@7072,@7071 7071:O5|@5380,778,0,778,0 7072:S28|4d617020646f6573206e6f742072657475726e20426f756e64204964 7073:O1|@16879 7074:O1|@16882 7075:S39|5349474e41545552455328292e73696756616c2836296d616b655661726961626c654964283629 7076:O1|@16880 7077:S40|5354525543545f56414c5328292e6d616b65426f756e644964576974684571557064617465283129 7078:O1|@16881 7079:S28|5354525543545f56414c5328292e6d616b65426f756e644964283129 7080:O4|11,@239,0,@7086 7081:S22|5374726574636841727261792e757064617465283329 7082:O4|103,@861,@7084,@7083 7083:O5|@7085,93,0,93,0 7084:S39|417474656d707420746f207570646174652061206c6f636b656420737472657463684172726179 7085:S35|6d6c736f757263652f4d4c436f6d70696c65722f5374726574636841727261792e4d4c 7086:O5|@791,138,0,138,0 7087:S66|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e65774964732832296e65774d6170283129 7088:S59|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d61704964732d6d61704964283129 7089:S60|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657256616c283129 7090:S58|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f636573735369672833296d616b654964283429 7091:O1|@16898 7092:S64|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332966696e64457175616c697479283129 7093:O1|@16890 7094:S37|545950455f5452454528292e747970655065726d697473457175616c697479283129283129 7095:O1|@16891 7096:O6|@16892,@91,@89,@86,@47,@107 7097:S23|545950455f5452454528292e657175616c697479283329 7098:O4|@16,@815,@7100,@7099 7099:O5|@4259,1725,0,1725,0 7100:S28|657175616c697479202d204f7665726c6f616473657420666f756e64 7101:O1|@16894 7102:O4|@16,@815,@7104,@7103 7103:O5|@5380,493,0,493,0 7104:S20|7265616c49643a2053686172696e67206c6f6f70 7105:O1|@16895 7106:O1|@16896 7107:O4|@16,@815,@7109,@7108 7108:O5|@5380,1261,0,1261,0 7109:S30|696e7465726e616c4d61703a204e6f7420626f756e64206f722046726565 7110:O1|@16897 7111:O2|@16899,@7112 7112:O5|@17184,@7951,@157,@174,@151 7113:O1|@16901 7114:S30|54595045434845434b5f50415253455452454528292e7061737332283529 7115:O1|@16900 7116:S37|54595045434845434b5f50415253455452454528292e7061737332283529656e762d283129 7117:O1|@16904 7118:S45|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529 7119:S56|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352974797065456e762d283129 7120:O2|3,@7660 7121:S57|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229 7122:O4|@16,@815,@7124,@7123 7123:O5|@7125,1414,0,1414,0 7124:S28|61737369676e54797065733a20656d7074797472656520666f756e64 7125:S53|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f54595045434845434b5f5041525345545245452e736d6c 7126:O4|@16,@815,@7128,@7127 7127:O5|@7125,1411,0,1411,0 7128:S34|61737369676e54797065733a206c617965726564207061747465726e20666f756e64 7129:O4|@16,@815,@7131,@7130 7130:O5|@7125,1408,0,1408,0 7131:S27|61737369676e54797065733a2077696c646361726420666f756e64 7132:O1|@16906 7133:S45|54595045434845434b5f50415253455452454528292e7061737332283529676976654572726f72283329283129 7134:S30|5052494e545f50415253455452454528292e6572726f724e656172283529 7135:S20|56616c7565206f7220636f6e7374727563746f72 7136:O1|@16907 7137:S14|20696e2073747275637475726520 7138:S26|56414c55455f4f505328292e6c6f6f6b757056616c7565283429 7139:O1|@16908 7140:O1|@16909 7141:S30|56414c55455f4f505328292e6c6f6f6b7570537472756374757265283429 7142:O1|@16911 7143:S36|56414c55455f4f505328292e6d616b6553656c6563746564537472756374757265283229 7144:O1|@16912 7145:O1|@16918 7146:S32|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229 7147:S41|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70794964283129 7148:O1|@16916 7149:S46|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129 7150:S49|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129283129 7151:O1|@16917 7152:O1|@16920 7153:S28|56414c55455f4f505328292e6d6b53656c6563746564566172283329 7154:O1|@16919 7155:O1|@5335 7156:O1|@16921 7157:O1|@16926 7158:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296f7665726c6f616454797065283229 7159:O1|@16922 7160:S42|5052494e545f5441424c4528292e6765744f7665726c6f6164732831297365617263684c697374283129 7161:O1|@16923 7162:O4|@16,@815,@7164,@7163 7163:O5|@4259,2584,0,2584,0 7164:S26|676574526573756c74202d206e6f7420612066756e6374696f6e 7165:O4|@16,@815,@7167,@7166 7166:O5|@4259,2599,0,2599,0 7167:S42|67656e6572616c6973654f7665726c6f6164202d20617267206973206e6f742061207479706520766172 7168:S38|545950455f5452454528292e67656e6572616c6973654f7665726c6f6164283429742d283129 7169:O1|@16925 7170:S39|545950455f5452454528292e67656e6572616c6973652832296e65774d617463687c742d283129 7171:O1|@16927 7172:O1|@16928 7173:O4|@16,@815,@7405,@7404 7174:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737341627344617461283629 7175:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836296d657373466e283329 7176:O1|@16930 7177:O3|0,@7178,@146 7178:O1|@16931 7179:O4|@16,@815,@7185,@7184 7180:S25|434f44455452454528292e626f74746f6d4c6576656c283129 7181:O4|@16,@815,@7183,@7182 7182:O5|@947,79,0,79,0 7183:S12|626f74746f6d206c6576656c 7184:O5|@947,76,0,76,0 7185:S14|6c6f61643a206e65676174697665 7186:O1|@16932 7187:O2|@16971,@107 7188:O1|@16936 7189:S28|545950455f5452454528292e61737369676e54797065732833292d45 7190:S16|5479706520636f6e7374727563746f72 7191:S24|56414c55455f4f505328292e6c6f6f6b7570547970283329 7192:O1|@16937 7193:O1|@16942 7194:S28|434f5049455228292e66756c6c436f70794461746174797065283329 7195:S38|434f5049455228292e66756c6c436f70794461746174797065283329726573456e762d283129 7196:O1|@16939 7197:O5|@7199,259,0,259,0 7198:S9|656e74657256616c20 7199:S30|6d6c736f757263652f4d4c436f6d70696c65722f434f504945522e736d6c 7200:O1|@16940 7201:O5|@7199,258,0,258,0 7202:S12|656e74657253747275637420 7203:O1|@16941 7204:O4|11,@239,0,@7206 7205:S33|434f5049455228292e66756c6c436f707944617461747970652833295f2d283129 7206:O5|@7199,261,0,261,0 7207:S24|434f5049455228292e6c6f63616c436f7079536967283729 7208:O1|@16944 7209:S41|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629 7210:O1|@16947 7211:S58|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6453756253747275637473283329 7212:O1|@16949 7213:O1|@16954 7214:S53|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329 7215:S64|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6454797065732833296d616b654e616d65283129 7216:S62|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f70794964283129 7217:O1|@16953 7218:S68|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129 7219:S71|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129283129 7220:O1|@16958 7221:S39|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129 7222:S48|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129636f70794964283129 7223:S42|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129283129 7224:O1|@16959 7225:O1|@16970 7226:S27|434f5049455228292e6c6f63616c436f7079536967283729283329 7227:O1|@16962 7228:S39|434f5049455228292e6c6f63616c436f70795369672837292833296e65775369672d5f2d283129 7229:O1|@16964 7230:O1|@16966 7231:O1|@16968 7232:O1|@16969 7233:S37|434f5049455228292e6c6f63616c436f7079536967283729636f7079547970283129283129 7234:O1|@5331 7235:O1|@16972 7236:S26|545950455f5452454528292e61737369676e5479706573283329 7237:O1|@16977 7238:S46|545950455f5452454528292e61737369676e54797065732833297479706546726f6d547970655061727365283129 7239:S13|2074797065287329206e6f7420 7240:S11|2920726571756972657320 7241:S18|5479706520636f6e7374727563746f722028 7242:O1|@16973 7243:O1|@16974 7244:O1|@16975 7245:O1|@16976 7246:S52|2068617320616c7265616479206265656e2075736564206173206120636f6e7374727563746f7220696e20746869732074797065 7247:O1|@16979 7248:O1|@16980 7249:O1|@16984 7250:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e73747273283229 7251:O1|@16981 7252:O1|@16982 7253:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129 7254:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129283129 7255:O1|@16988 7256:S12|2220697320696c6c6567616c 7257:S48|54595045434845434b5f50415253455452454528292e7061737332283529636865636b466f724275696c74496e283529 7258:S25|526562696e64696e67206f722073706563696679696e672022 7259:O3|@16989,@7096,@147 7260:O1|@17013 7261:S40|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229 7262:O5|0,0,0,@7352,@7351 7263:S11|7072696e742d7374617465 7264:O4|0,@7265,3,1 7265:O1|@16991 7266:S19|7072696e742d74797065436f6e737472536574 7267:O3|@16992,@149,@123 7268:O5|0,0,0,@7271,@7270 7269:S12|7072696e742d76616c756573 7270:O2|@7274,0 7271:O2|@7272,0 7272:O2|0,@7273 7273:O5|@1128,159,159,0,0 7274:O2|3,@7275 7275:S13|54797065436f6e737472536574 7276:O5|@16994,@114,@121,@150,@112 7277:O5|0,0,0,@7306,@7305 7278:S9|7072696e742d726566 7279:O4|0,@7280,2,3 7280:O1|@16999 7281:O2|3,@7296 7282:O4|0,@7283,1,1 7283:O1|@17000 7284:O4|0,@7285,3,1 7285:O1|@17001 7286:O4|0,@7287,2,1 7287:O1|@17002 7288:O4|0,@7289,3,1 7289:O1|@17003 7290:O4|0,@7291,2,2 7291:O1|@17004 7292:O2|3,@7293 7293:S14|726563757273697665526566203d 7294:O2|3,@7295 7295:S10|6c6f63616c526566203d 7296:S13|6578706f72746564526566203d 7297:O2|3,@7298 7298:S8|747970654f66203d 7299:O2|3,@7300 7300:S12|7265666572656e636573203d 7301:O2|3,@7302 7302:S15|696e7374616e63655479706573203d 7303:O2|3,@7304 7304:S7|636c617373203d 7305:O2|@7309,0 7306:O2|@7307,0 7307:O2|0,@7308 7308:O5|@1128,244,244,0,0 7309:O2|3,@7029 7310:O1|@17005 7311:O5|0,0,0,@7339,@7338 7312:S16|7072696e742d76616c7565436c617373 7313:O2|3,@7314 7314:S11|6f66436f6e73747273203d 7315:O2|3,@7316 7316:S9|6e756c6c617279203d 7317:O5|0,0,0,@7319,@7318 7318:O2|@7322,0 7319:O2|@7320,0 7320:O2|0,@7321 7321:O5|@1128,260,260,0,0 7322:O2|3,@7323 7323:S11|436f6e7374727563746f72 7324:O5|0,0,0,@7326,@7325 7325:O2|@7329,0 7326:O2|@7327,0 7327:O2|0,@7328 7328:O5|@1128,259,259,0,0 7329:O2|3,@7330 7330:S9|457863657074696f6e 7331:O5|0,0,0,@7333,@7332 7332:O2|@7336,0 7333:O2|@7334,0 7334:O2|0,@7335 7335:O5|@1128,258,258,0,0 7336:O2|3,@7337 7337:S9|50617474426f756e64 7338:O2|@7342,0 7339:O2|@7340,0 7340:O2|0,@7341 7341:O5|@1128,257,257,0,0 7342:O2|3,@7343 7343:S8|56616c426f756e64 7344:O5|0,0,0,@7346,@7345 7345:O2|@7349,0 7346:O2|@7347,0 7347:O2|0,@7348 7348:O5|@4259,1740,1740,0,0 7349:O2|3,@7350 7350:S7|4e6f745365656e 7351:O2|@7355,0 7352:O2|@7353,0 7353:O2|0,@7354 7354:O5|@4259,1739,1739,0,0 7355:O2|3,@7356 7356:S9|50726f636573736564 7357:O1|@17006 7358:S26|5554494c49544945535f28292e6d61705461626c652832292d45 7359:O1|@17007 7360:S24|5554494c49544945535f28292e6d61705461626c65283229 7361:O1|@17010 7362:S32|5554494c49544945535f28292e6d61705461626c65283229656e746572283129 7363:S35|5554494c49544945535f28292e6d61705461626c6528322964656c6574652832292829 7364:S33|5554494c49544945535f28292e6d61705461626c652832296c6f6f6b7570283129 7365:O1|@17012 7366:S54|545950455f5452454528292e636f6d707574654461746174797065457175616c697469657328322967656e457175616c697479283129 7367:O4|101,@4269,0,@7368 7368:O5|@4259,1748,0,1748,0 7369:O4|101,@4269,0,@7370 7370:O5|@4259,1749,0,1749,0 7371:O4|101,@4269,0,@7372 7372:O5|@4259,93,0,93,0 7373:S57|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229636f6e737472457128332965712d283129 7374:S43|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229283129 7375:O1|@17014 7376:O5|0,0,0,@7392,@7391 7377:O5|0,0,0,@7379,@7378 7378:O2|@7382,0 7379:O2|@7380,0 7380:O2|0,@7381 7381:O5|@4259,1638,1638,0,0 7382:O2|3,@7383 7383:S5|4d61796265 7384:O5|0,0,0,@7386,@7385 7385:O2|@7389,0 7386:O2|@7387,0 7387:O2|0,@7388 7388:O5|@4259,1637,1637,0,0 7389:O2|3,@7390 7390:S2|4e6f 7391:O2|@7395,0 7392:O2|@7393,0 7393:O2|0,@7394 7394:O5|@4259,1636,1636,0,0 7395:O2|3,@7396 7396:S3|596573 7397:S80|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657256616c466e283129 7398:O1|@17021 7399:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d616c6c56616c4e616d6573283129 7400:S57|54595045434845434b5f50415253455452454528292e7061737332283529737472696e67734f665365617263684c6973742834295f2d283129 7401:O1|@17020 7402:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657254797065466e283129 7403:O1|@17024 7404:O5|@1128,354,0,354,0 7405:S41|736574457175616c6974793a2063616e27742073657420657175616c69747920617474726962757465 7406:O2|@1102,@4409 7407:O12|@17025,@7096,@107,@29,@38,@1227,@82,@3475,@34,@1166,@36,@3965 7408:O1|@17026 7409:S25|545950455f5452454528292e756e6966795479706573283229 7410:S20|28496e636f6d70617469626c6520747970657329 7411:S33|545950455f5452454528292e756e69667954797065732832296d61746368283229 7412:O1|@17027 7413:O1|@17036 7414:S42|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229 7415:S42|2843616e6e6f7420756e6966792077697468206578706c696369742074797065207661726961626c6529 7416:O1|@17029 7417:S44|2854797065207661726961626c65206973206672656520696e20737572726f756e64696e672073636f706529 7418:S61|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296f6363757273436865636b4661696c73283229 7419:O1|@17030 7420:O1|@17032 7421:S44|2854797065207661726961626c6520746f20626520756e6966696564206f636375727320696e207479706529 7422:O1|@17033 7423:S45|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229283129 7424:O1|@17034 7425:O1|@17035 7426:S54|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b45715476283129 7427:S63|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b4571547628312966696c746572283129 7428:S24|28526571756972657320657175616c697479207479706529 7429:S57|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129 7430:S60|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129283129 7431:O1|@17038 7432:O1|@17040 7433:S48|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f726473283429 7434:S28|28446966666572656e74206e756d626572206f66206669656c647329 7435:O1|@17039 7436:S9|206d697373696e6729 7437:S64|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f7264732834296d617463684c6162656c6c6564283229 7438:S7|284669656c6420 7439:O1|@17041 7440:S47|545950455f5452454528292e756e69667954797065732832296d61746368283229696e746572736563742832292829 7441:S27|28496e636f6d70617469626c65206f7665726c6f6164696e677329 7442:S32|28446966666572656e74206e756d62657273206f6620617267756d656e747329 7443:S29|28446966666572656e74207479706520636f6e7374727563746f727329 7444:O4|@16,@815,@7446,@7445 7445:O5|@4259,2443,0,2443,0 7446:S36|556e696669636174696f6e3a204f7665726c6f61645365742f4f7665726c6f6164536574 7447:S10|417267756d656e74733a 7448:O1|@17054 7449:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283529 7450:S5|756e696679 7451:O2|@17055,@5570 7452:S36|545950455f5452454528292e756e69667954797065734572726f725265706f7274283429 7453:O2|3,@7462 7454:S50|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129 7455:S6|43616e277420 7456:O1|@17057 7457:O1|@17058 7458:S71|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e737472283329 7459:O1|@17060 7460:S87|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e7374722833297072696e745769746844657363283329 7461:O1|@17059 7462:S2|746f 7463:O2|@1323,@7464 7464:O2|@7465,0 7465:O2|3,@7443 7466:O3|1,1,3 7467:O2|3,@7468 7468:S7|526561736f6e3a 7469:O2|3,@7470 7470:S46|417267756d656e7473206f6620616e64616c736f206d7573742068617665207479706520626f6f6c2a626f6f6c2e 7471:O1|@17061 7472:O1|@17062 7473:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296e6f6e457870616e73697665283129 7474:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352969734e6f6e526566436f6e7374727563746f72283129 7475:S9|46756e6374696f6e3a 7476:S9|417267756d656e743a 7477:O2|@1323,@7478 7478:O2|@7479,0 7479:O5|0,0,0,0,@7480 7480:O2|@7467,@7481 7481:O2|@7466,@7482 7482:O2|@7483,0 7483:O2|3,@7484 7484:S49|56616c7565206265696e67206170706c69656420646f6573206e6f74206861766520612066756e6374696f6e2074797065 7485:O2|3,@7486 7486:S35|54797065206572726f7220696e2066756e6374696f6e206170706c69636174696f6e2e 7487:O1|@17064 7488:S63|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283129283129 7489:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229 7490:S37|2068617320616c7265616479206265656e20626f756e6420696e2074686973206d61746368 7491:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d61746368547265652832296d657373466e283329 7492:O1|@17067 7493:S28|56414c55455f4f505328292e6d616b654c6f63616c56283129283129 7494:O1|@17068 7495:O1|@17082 7496:S62|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e283629 7497:O1|@17070 7498:S21|206973206e6f74206120636f6e7374727563746f72 7499:S46|436f6e7374727563746f7220696e2061207061747465726e20776173206e6f7420616e206964656e746966696572 7500:S6|56616c75653a 7501:O2|3,@7502 7502:S11|436f6e73747261696e743a 7503:O2|3,@7504 7504:S33|54797065206d69736d6174636820696e207479706520636f6e73747261696e742e 7505:S49|4964656e746966696572206265666f72652060617327206d757374206e6f74206265206120636f6e7374727563746f722e 7506:O1|@17074 7507:S51|436f6e7374727563746f72206d757374206265206170706c69656420746f20616e20617267756d656e74207061747465726e2e 7508:O1|@17075 7509:S74|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e2836296d61704c6162656c73283129 7510:S79|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e28362970726f63657373456c656d656e74283129 7511:O1|@17077 7512:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129 7513:S50|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129283129 7514:S40|456c656d656e747320696e2061206c697374206861766520646966666572656e742074797065732e 7515:S4|4974656d 7516:O1|@17079 7517:O1|@17080 7518:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c697374283329 7519:O2|@383,0 7520:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833296170706c794c697374283329 7521:S3|20313a 7522:S4|7320312d 7523:O1|@17081 7524:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833297072696e744c697374283429 7525:O1|@17085 7526:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229626f6479456e762d283129 7527:O1|@17086 7528:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129 7529:O1|@17088 7530:S52|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129283129 7531:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283529 7532:S37|436c617573657320696e2063617365206861766520646966666572656e742074797065732e 7533:S6|436c61757365 7534:S3|49663a 7535:O2|3,@7536 7536:S46|436f6e646974696f6e20696e2069662d73746174656d656e74206d7573742068617665207479706520626f6f6c2e 7537:S5|5468656e3a 7538:S5|456c73653a 7539:O2|3,@7540 7540:S46|54797065206d69736d61746368206265747765656e207468656e2d7061727420616e6420656c73652d706172742e 7541:O1|@17093 7542:O1|@17094 7543:O1|@17096 7544:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129 7545:S91|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f707954797065436f6e73283129 7546:S89|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f7079547970283129283129 7547:S66|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296d657373466e283329 7548:O1|@17098 7549:O4|@16,@815,@7553,@7552 7550:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f63657373457863657074696f6e283129 7551:S22|29206973206e6f7420616e20657863657074696f6e2e 7552:O5|@7125,1279,0,1279,0 7553:S41|70726f63657373457863657074696f6e3a206261646c792d666f726d65642070617273652d74726565 7554:O1|@17102 7555:O1|@7559 7556:S27|545950455f5452454528292e636865636b44697363617264283229 7557:O1|@7558 7558:S36|41206e6f6e20756e69742076616c7565206973206265696e67206469736361726465642e 7559:S36|412066756e6374696f6e2076616c7565206973206265696e67206469736361726465642e 7560:S46|436c617573657320696e20666e2065787072657373696f6e206861766520646966666572656e742074797065732e 7561:O1|@17106 7562:O11|@17130,@5570,@29,@38,@1227,@82,@3475,@34,@1166,@36,@3965 7563:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e283429 7564:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834295f2d283129 7565:O1|@17109 7566:S27|545950455f5452454528292e6c696e6b5479706556617273283229 7567:S73|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834296d7367466e283329 7568:O1|@17111 7569:S46|436c617573616c2066756e6374696f6e20646f6573206e6f74206861766520616e7920706172616d65746572732e 7570:S84|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342966696e644e616d65416e645061747473283129 7571:O4|@16,@815,@7573,@7572 7572:O5|@7125,1676,0,1676,0 7573:S41|66696e644e616d65416e6450617474733a206261646c792d666f726d65642070617273652d74726565 7574:O1|@17112 7575:O2|3,@7599 7576:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e67283129 7577:O1|@17113 7578:O2|3,@7593 7579:S98|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129 7580:S39|2068617320616c7265616479206265656e20626f756e6420696e207468697320636c617573652e 7581:S107|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c617573652831296d657373466e283329 7582:O1|@17115 7583:O1|@17122 7584:S109|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129626f6479456e762d283129 7585:O1|@17121 7586:S11|45787072657373696f6e3a 7587:O2|3,@7588 7588:S51|426f6479206f662066756e2062696e64696e6720646f6573206e6f74206d61746368207479706520636f6e73747261696e742e 7589:O1|@17125 7590:S7|436c617573653a 7591:O2|3,@7592 7592:S14|4f7468657220636c61757365733a 7593:S59|54797065206f6620636c6175736520646f6573206e6f74206d61746368207468652074797065206f662070726576696f757320636c61757365732e 7594:O1|@17126 7595:O1|@17127 7596:O1|@17128 7597:S95|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e672831296d6b4964656e74283229283129 7598:S9|5661726961626c653a 7599:S62|54797065206f662066756e6374696f6e20646f6573206e6f74206d617463682074797065206f6620726563757273697665206170706c69636174696f6e2e 7600:S45|54595045434845434b5f50415253455452454528292e7061737332283529666f756e644e656172283129283129 7601:O1|@17131 7602:S34|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729 7603:S32|697320616e20756e7265736f6c76656420666c657869626c65207265636f7264 7604:S44|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e28372967656e6572616c283329 7605:O1|@17132 7606:O1|@17134 7607:O1|@17135 7608:S29|696e636c75646573206120667265652074797065207661726961626c65 7609:O1|@17136 7610:S46|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729676976654572726f72283229 7611:O4|@16,@815,@7613,@7612 7612:O5|@4259,2889,0,2889,0 7613:S25|67656e6572616c3a204e6f206d61746368696e672074797065 7614:S40|436c617573657320696e2068616e646c6572206861766520646966666572656e742074797065732e 7615:O1|@17138 7616:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283129283129 7617:O1|@17145 7618:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296c6f63616c456e762d283129 7619:O1|@17146 7620:S68|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229626f6479456e762d283129 7621:O1|@17150 7622:O1|@17152 7623:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e7472696573283229 7624:O1|@17155 7625:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e74726965732832295f2d283129 7626:O1|@17157 7627:O1|@17159 7628:S35|5354525543545f56414c5328292e6d616b6553656c6563746564537472756374283329 7629:O1|@17158 7630:O1|@17160 7631:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229283329 7632:O1|@17161 7633:O1|@17162 7634:O2|3,@7635 7635:S45|417267756d656e7473206f66206f72656c7365206d7573742068617665207479706520626f6f6c2a626f6f6c2e 7636:S6|52616973653a 7637:O2|3,@7638 7638:S42|457863657074696f6e20746f20626520726169736564206d757374206861766520747970652065786e2e 7639:O1|@17163 7640:O1|@17165 7641:O1|@17168 7642:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f6365737354797065283229 7643:O1|@17169 7644:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329 7645:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833295f2d283129 7646:S75|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833296e6577456e762d283329 7647:O1|@17174 7648:O1|@17176 7649:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329646f56616c283129656e74657256616c73283129 7650:O1|@17177 7651:S51|526563757273697665206465636c61726174696f6e206973206e6f74206f662074686520666f726d2060666e206d6174636827 7652:S78|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b5479706573283229 7653:O1|@17182 7654:S88|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b54797065732832296e6577456e762d283129 7655:S8|5061747465726e3a 7656:O2|3,@7657 7657:S47|5061747465726e20616e642065787072657373696f6e206861766520696e636f6d70617469626c652074797065732e 7658:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329656e746572446563283129 7659:S6|5768696c653a 7660:S55|4c6f6f7020636f6e646974696f6e206f66207768696c652d65787072657373696f6e206d7573742068617665207479706520626f6f6c2e 7661:O1|@17374 7662:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283329 7663:O1|@17185 7664:O1|@17187 7665:S37|4578706f72745472656528292e6578706f72744e617669676174696f6e50726f7073283329 7666:O1|@17186 7667:S50|4558504f52545f50415253455452454528292e6765744578706f727454726565283329636f6d6d6f6e50726f70732d283129 7668:O1|@17189 7669:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296173506172656e74283129 7670:O5|0,0,0,@7674,@7690 7671:S11|7072696e742d6c54797065 7672:O5|0,0,0,@7674,@7673 7673:O2|@7678,0 7674:O2|@7675,0 7675:O2|0,@7676 7676:O5|@7677,66,66,0,0 7677:S50|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4558504f52545f5041525345545245452e736d6c 7678:O2|3,@7679 7679:S5|4461746154 7680:O4|0,@7681,3,1 7681:O1|@17192 7682:O4|0,@7683,2,1 7683:O1|@17193 7684:O4|0,@7685,1,1 7685:O1|@17194 7686:O5|0,0,0,@7674,@7687 7687:O2|@7688,0 7688:O2|3,@7689 7689:S4|4465636c 7690:O2|@7691,0 7691:O2|3,@7692 7692:S5|5479706542 7693:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745472656557697468427074283129 7694:O1|@17197 7695:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283129 7696:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329 7697:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296173506172656e74283129 7698:O1|@17203 7699:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296765744e616d65283129 7700:S34|4578706f72745472656528292e676574537472696e67417354726565283529283129 7701:O1|@17202 7702:O4|@17206,@5570,@7704,@107 7703:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e6728332967657454797065283129 7704:O2|@17238,@7702 7705:O1|@17237 7706:S29|545950455f5452454528292e747970654578706f727454726565283329 7707:S44|545950455f5452454528292e747970654578706f727454726565283329636f6d6d6f6e50726f70732d283129 7708:S40|545950455f5452454528292e747970654578706f7274547265652833296173506172656e74283129 7709:O1|@17209 7710:O2|@294,0 7711:O1|@17213 7712:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d6765744e616d65283129 7713:O1|@17212 7714:S53|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d676574417267283129 7715:O1|@17218 7716:O1|@17217 7717:O1|@17225 7718:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d67657441726773283129 7719:O1|@17220 7720:S26|4578706f72745472656528292e6578706f72744c697374283229 7721:O1|@17222 7722:S40|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283129283129 7723:S37|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283329 7724:O4|@72,@1979,0,@7725 7725:O5|@7726,88,0,88,0 7726:S34|6d6c736f757263652f4d4c436f6d70696c65722f4578706f7274547265652e736d6c 7727:O1|@17226 7728:O1|@17227 7729:O1|@17229 7730:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283129 7731:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283329 7732:S54|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 7733:S53|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c6428332967657454797065283129 7734:O1|@17235 7735:S52|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296765744c6162283129 7736:O1|@17234 7737:O1|@17236 7738:S29|545950455f5452454528292e747970654578706f727454726565283129 7739:O1|@17242 7740:O1|@17241 7741:O1|@17250 7742:S68|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e73747273283129 7743:O1|@17245 7744:O1|@17246 7745:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283129 7746:O1|@17249 7747:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283229 7748:O1|@17248 7749:O1|@17253 7750:O1|@17252 7751:O1|@17255 7752:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283129 7753:O1|@17260 7754:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329 7755:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d617463682833296173506172656e74283129 7756:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329283129 7757:O1|@17258 7758:O1|@17259 7759:O1|@17261 7760:O1|@17262 7761:O1|@17263 7762:O1|@17264 7763:O1|@17265 7764:O1|@17266 7765:O1|@17267 7766:O1|@17268 7767:O1|@17269 7768:O1|@17270 7769:O1|@17271 7770:O1|@17272 7771:O1|@17273 7772:O1|@17274 7773:O1|@17275 7774:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657445787072283129 7775:O1|@17278 7776:S48|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296765744d617463686573283129 7777:O1|@17279 7778:O1|@17280 7779:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657454797065283129 7780:O1|@17284 7781:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283129 7782:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283329 7783:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296173506172656e74283129 7784:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744f6654797065283129 7785:O1|@17291 7786:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744e616d65283129 7787:O1|@17290 7788:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274457864656328332967657450726576696f7573457863283129 7789:O1|@17297 7790:O1|@17296 7791:O2|13,@3699 7792:O1|@17299 7793:O1|@17300 7794:O1|@17305 7795:O1|@17304 7796:O1|@17306 7797:O1|@17307 7798:O1|@17308 7799:O5|0,0,0,@7885,@7884 7800:S14|7072696e742d66756e456e747279 7801:O2|@17310,@153 7802:O5|0,0,0,@7854,@7853 7803:S19|7072696e742d74797065506172736574726565 7804:O5|0,0,0,@7806,@7805 7805:O2|@7809,0 7806:O2|@7807,0 7807:O2|0,@7808 7808:O5|@4259,1279,1279,0,0 7809:O2|3,@7810 7810:S12|506172736554797065426164 7811:O4|0,@7812,3,1 7812:O1|@17312 7813:O2|3,@7814 7814:S9|6e616d654c6f63203d 7815:O2|3,@7816 7816:S18|666f756e64436f6e7374727563746f72203d 7817:O2|3,@7818 7818:S8|6172674c6f63203d 7819:O5|0,0,0,@7821,@7820 7820:O2|@7824,0 7821:O2|@7822,0 7822:O2|0,@7823 7823:O5|@4259,1264,1264,0,0 7824:O2|3,@7825 7825:S21|506172736554797065436f6e737472756374696f6e 7826:O2|3,@7827 7827:S9|61726754797065203d 7828:O5|0,0,0,@7830,@7829 7829:O2|@7833,0 7830:O2|@7831,0 7831:O2|0,@7832 7832:O5|@4259,1273,1273,0,0 7833:O2|3,@7834 7834:S17|50617273655479706546756e6374696f6e 7835:O2|3,@7836 7836:S7|7479706573203d 7837:O5|0,0,0,@7839,@7838 7838:O2|@7842,0 7839:O2|@7840,0 7840:O2|0,@7841 7841:O5|@4259,1278,1278,0,0 7842:O2|3,@7843 7843:S11|5061727365547970654964 7844:O2|3,@7845 7845:S8|66726f7a656e203d 7846:O5|0,0,0,@7848,@7847 7847:O2|@7851,0 7848:O2|@7849,0 7849:O2|0,@7850 7850:O5|@4259,1275,1275,0,0 7851:O2|3,@7852 7852:S17|5061727365547970654c6162656c6c6564 7853:O2|@7857,0 7854:O2|@7855,0 7855:O2|0,@7856 7856:O5|@4259,1271,1271,0,0 7857:O2|3,@7858 7858:S16|50617273655479706550726f64756374 7859:O5|0,0,0,@7861,@7860 7860:O2|@7864,0 7861:O2|@7862,0 7862:O2|0,@7863 7863:O5|@7677,235,235,0,0 7864:O2|3,@7865 7865:S13|46756e436f6e73747261696e74 7866:O4|0,@7867,3,1 7867:O1|@17315 7868:O2|3,@7869 7869:S9|65787054797065203d 7870:O5|0,0,0,@7872,@7871 7871:O2|@7875,0 7872:O2|@7873,0 7873:O2|0,@7874 7874:O5|@7677,233,233,0,0 7875:O2|3,@7876 7876:S8|46756e4964656e74 7877:O5|0,0,0,@7879,@7878 7878:O2|@7882,0 7879:O2|@7880,0 7880:O2|0,@7881 7881:O5|@7677,236,236,0,0 7882:O2|3,@7883 7883:S10|46756e496e6669786564 7884:O2|@7888,0 7885:O2|@7886,0 7886:O2|0,@7887 7887:O5|@7677,234,234,0,0 7888:O2|3,@7889 7889:S8|46756e5074726565 7890:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283129 7891:O1|@17324 7892:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283329 7893:S63|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e7472792833296173506172656e74283129 7894:O1|@17320 7895:O1|@17321 7896:O1|@17322 7897:O1|@17323 7898:O1|@17326 7899:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283129 7900:O1|@17340 7901:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283329 7902:S57|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274464228332961734368696c642d283129 7903:O1|@17328 7904:O1|@17333 7905:S51|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727441436c61757365283329 7906:O1|@17329 7907:O1|@17330 7908:O1|@17331 7909:O1|@17332 7910:O1|@17334 7911:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f727454686973283129 7912:O1|@17337 7913:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283129 7914:O1|@17339 7915:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283329 7916:S72|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c6175736528332961734368696c642d283129 7917:O1|@17341 7918:O1|@17344 7919:O1|@17345 7920:O1|@17347 7921:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283129 7922:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329 7923:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 7924:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329676574457870283129 7925:O1|@17353 7926:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296765744c6162283129 7927:O1|@17352 7928:O1|@17354 7929:O1|@17355 7930:O1|@17356 7931:O1|@17357 7932:O1|@17358 7933:O1|@17359 7934:O1|@17360 7935:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745374727563744964656e74283129 7936:O1|@17361 7937:O1|@17362 7938:S44|4558504f52545f50415253455452454528292e6765744578706f727454726565283329676574457870283129 7939:O1|@17364 7940:O1|@17365 7941:O1|@17366 7942:O1|@17367 7943:O2|13,@3546 7944:O1|@17369 7945:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283129 7946:O1|@17371 7947:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283329 7948:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727456422833296578706f727454686973283129 7949:O1|@17372 7950:O1|@17373 7951:O2|@17375,@7112 7952:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283129 7953:O8|@17376,@167,@168,@169,@170,@171,@172,@158 7954:O5|0,0,0,@8472,@8471 7955:S15|7072696e742d706172736574726565 7956:O4|0,@7957,3,1 7957:O1|@17378 7958:O4|0,@7959,2,1 7959:O1|@17379 7960:O4|0,@7961,1,1 7961:O1|@17380 7962:O4|0,@7963,3,1 7963:O1|@17381 7964:O4|0,@7965,1,1 7965:O1|@17382 7966:S18|7072696e742d646174617479706562696e64 7967:S14|7072696e742d7479706562696e64 7968:O2|3,@7969 7969:S11|776974687479706573203d 7970:O2|3,@7971 7971:S10|747970656c697374203d 7972:O2|3,@7973 7973:S11|697341627354797065203d 7974:O2|3,@7975 7975:S16|657175616c697479537461747573203d 7976:O2|3,@7977 7977:S9|6465636c697374203d 7978:O5|0,0,0,@7980,@7979 7979:O2|@7984,0 7980:O2|@7981,0 7981:O2|0,@7982 7982:O5|@7983,144,144,0,0 7983:S49|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f424153455f50415253455f545245452e736d6c 7984:O2|3,@7985 7985:S22|41627344617461747970654465636c61726174696f6e 7986:O2|3,@7987 7987:S8|7365636f6e64203d 7988:O2|3,@7989 7989:S7|6669727374203d 7990:O5|0,0,0,@7992,@7991 7991:O2|@7995,0 7992:O2|@7993,0 7993:O2|0,@7994 7994:O5|@7983,186,186,0,0 7995:O2|3,@7996 7996:S7|416e64616c736f 7997:O4|0,@7998,3,1 7998:O1|@17385 7999:O2|3,@8000 8000:S9|6973496e666978203d 8001:O2|3,@8002 8002:S3|66203d 8003:O5|0,0,0,@8005,@8004 8004:O2|@8008,0 8005:O2|@8006,0 8006:O2|0,@8007 8007:O5|@7983,70,70,0,0 8008:O2|3,@8009 8009:S6|4170706c6963 8010:O4|0,@8011,3,1 8011:O1|@17386 8012:S15|7072696e742d6d6174636874726565 8013:O2|3,@8014 8014:S7|6d61746368203d 8015:O2|3,@8016 8016:S14|6c6973744c6f636174696f6e203d 8017:O5|0,0,0,@8019,@8018 8018:O2|@8022,0 8019:O2|@8020,0 8020:O2|0,@8021 8021:O5|@7983,182,182,0,0 8022:O2|3,@8023 8023:S4|43617365 8024:O4|0,@8025,3,1 8025:O1|@17388 8026:O4|0,@8027,2,1 8027:O1|@17389 8028:O4|0,@8029,1,1 8029:O1|@17390 8030:O4|0,@8031,3,1 8031:O1|@17391 8032:O4|0,@8033,2,1 8033:O1|@17392 8034:O4|0,@8035,1,1 8035:O1|@17393 8036:O2|3,@8037 8037:S8|7468656e7074203d 8038:O2|3,@8039 8039:S11|7468656e427265616b203d 8040:O2|3,@8041 8041:S8|656c73657074203d 8042:O2|3,@8043 8043:S11|656c7365427265616b203d 8044:O5|0,0,0,@8045,@6410 8045:O2|@8046,0 8046:O2|0,@8047 8047:O5|@7983,74,74,0,0 8048:O2|3,@8049 8049:S7|676976656e203d 8050:O5|0,0,0,@8052,@8051 8051:O2|@8055,0 8052:O2|@8053,0 8053:O2|0,@8054 8054:O5|@7983,118,118,0,0 8055:O2|3,@8056 8056:S10|436f6e73747261696e74 8057:O2|3,@8058 8058:S9|6f6c6454797065203d 8059:O2|3,@8060 8060:S8|6f6c644c6f63203d 8061:O2|3,@8062 8062:S9|6e657754797065203d 8063:O2|3,@8064 8064:S8|6e65774c6f63203d 8065:O5|0,0,0,@8067,@8066 8066:O2|@8070,0 8067:O2|@8068,0 8068:O2|0,@8069 8069:O5|@7983,154,154,0,0 8070:O2|3,@8071 8071:S19|44617461747970655265706c69636174696f6e 8072:O1|@17394 8073:O5|0,0,0,@8090,@8089 8074:S14|7072696e742d696e666978697479 8075:O5|0,0,0,@8077,@8076 8076:O2|@8080,0 8077:O2|@8078,0 8078:O2|0,@8079 8079:O5|@1128,502,502,0,0 8080:O2|3,@8081 8081:S5|496e666978 8082:O5|0,0,0,@8084,@8083 8083:O2|@8087,0 8084:O2|@8085,0 8085:O2|0,@8086 8086:O5|@1128,503,503,0,0 8087:O2|3,@8088 8088:S6|496e66697852 8089:O2|@8093,0 8090:O2|@8091,0 8091:O2|0,@8092 8092:O5|@1128,504,504,0,0 8093:O2|3,@8094 8094:S6|4e6f6e666978 8095:O4|0,@8096,3,1 8096:O1|@17395 8097:O2|3,@8098 8098:S7|746c697374203d 8099:O2|3,@8100 8100:S5|666978203d 8101:O5|0,0,0,@8103,@8102 8102:O2|@8106,0 8103:O2|@8104,0 8104:O2|0,@8105 8105:O5|@7983,165,165,0,0 8106:O2|3,@8107 8107:S9|446972656374697665 8108:O5|0,0,0,@8110,@8109 8109:O2|@8113,0 8110:O2|@8111,0 8111:O2|0,@8112 8112:O5|@7983,200,200,0,0 8113:O2|3,@8114 8114:S9|456d70747954726565 8115:S12|7072696e742d657862696e64 8116:O5|0,0,0,@8118,@8117 8117:O2|@8121,0 8118:O2|@8119,0 8119:O2|0,@8120 8120:O5|@7983,170,170,0,0 8121:O2|3,@8122 8122:S13|45784465636c61726174696f6e 8123:O4|0,@8124,3,1 8124:O1|@17398 8125:O4|0,@8126,2,1 8126:O1|@17399 8127:O4|0,@8128,1,1 8128:O1|@17400 8129:O5|0,0,0,@8131,@8130 8130:O2|@8134,0 8131:O2|@8132,0 8132:O2|0,@8133 8133:O5|@7983,163,163,0,0 8134:O2|3,@8135 8135:S6|457870536571 8136:O4|0,@8137,3,1 8137:O1|@17401 8138:O2|3,@8139 8139:S9|6d617463686573203d 8140:O5|0,0,0,@8142,@8141 8141:O2|@8145,0 8142:O2|@8143,0 8143:O2|0,@8144 8144:O5|@7983,129,129,0,0 8145:O2|3,@8146 8146:S2|466e 8147:S14|7072696e742d6676616c62696e64 8148:O2|@8150,@8149 8149:O2|@1323,@8152 8150:O2|3,@8151 8151:S7|6170706c79203d 8152:O2|@6882,@6875 8153:O2|3,@8154 8154:S10|696d706c69636974203d 8155:O2|3,@8156 8156:S10|6578706c69636974203d 8157:O2|3,@8158 8158:S5|646563203d 8159:O5|0,0,0,@8161,@8160 8160:O2|@8164,0 8161:O2|@8162,0 8162:O2|0,@8163 8163:O5|@7983,97,97,0,0 8164:O2|3,@8165 8165:S14|46756e4465636c61726174696f6e 8166:O2|3,@8167 8167:S8|6872756c6573203d 8168:O5|0,0,0,@8170,@8169 8169:O2|@8173,0 8170:O2|@8171,0 8171:O2|0,@8172 8172:O5|@7983,174,174,0,0 8173:O2|3,@8174 8174:S10|48616e646c6554726565 8175:O4|0,@8176,3,1 8176:O1|@17405 8177:O4|0,@8178,2,1 8178:O1|@17406 8179:S14|7072696e742d66756e6374696f6e 8180:O4|0,@8181,3,1 8181:O1|@17407 8182:O2|3,@8183 8183:S10|706f737369626c65203d 8184:O5|0,0,0,@8186,@8185 8185:O2|@8189,0 8186:O2|@8187,0 8187:O2|0,@8188 8188:O5|@7983,48,48,0,0 8189:O2|3,@8190 8190:S5|4964656e74 8191:O4|0,@8192,3,1 8192:O1|@17408 8193:O2|3,@8198 8194:O4|0,@8195,3,1 8195:O1|@17410 8196:O2|3,@8197 8197:S10|76616c4f72506174203d 8198:S14|66756c6c4c6f636174696f6e203d 8199:O5|0,0,0,@8201,@8200 8200:O2|@8204,0 8201:O2|@8202,0 8202:O2|0,@8203 8203:O5|@7983,190,190,0,0 8204:O2|3,@8205 8205:S8|4c6162656c6c6564 8206:O2|3,@8207 8207:S5|766172203d 8208:O2|3,@8209 8209:S9|7061747465726e203d 8210:O5|0,0,0,@8212,@8211 8211:O2|@8215,0 8212:O2|@8213,0 8213:O2|0,@8214 8214:O5|@7983,124,124,0,0 8215:O2|3,@8216 8216:S7|4c617965726564 8217:O4|0,@8218,3,1 8218:O1|@17412 8219:O2|3,@8220 8220:S10|656c656d656e7473203d 8221:O5|0,0,0,@8223,@8222 8222:O2|@8226,0 8223:O2|@8224,0 8224:O2|0,@8225 8225:O5|@7983,198,198,0,0 8226:O2|3,@8227 8227:S4|4c697374 8228:O4|0,@8229,3,1 8229:O1|@17413 8230:O2|3,@8231 8231:S9|6c69746572616c203d 8232:O2|3,@8233 8233:S11|636f6e766572746572203d 8234:O5|0,0,0,@8236,@8235 8235:O2|@8239,0 8236:O2|@8237,0 8237:O2|0,@8238 8238:O5|@7983,64,64,0,0 8239:O2|3,@8240 8240:S7|4c69746572616c 8241:O4|0,@8242,3,1 8242:O1|@17415 8243:O4|0,@8244,2,1 8244:O1|@17416 8245:O4|0,@8246,1,1 8246:O1|@17417 8247:O4|0,@8248,3,1 8248:O1|@17419 8249:O4|0,@8250,2,1 8250:O1|@17420 8251:O4|0,@8252,1,1 8252:O1|@17421 8253:O4|0,@8254,3,1 8254:O1|@17422 8255:O4|0,@8256,3,1 8256:O1|@17423 8257:O2|3,@8258 8258:S12|76617273496e426f6479203d 8259:O2|3,@8260 8260:S9|69734c6f63616c203d 8261:O2|3,@8262 8262:S6|64656373203d 8263:O5|0,0,0,@8265,@8264 8264:O2|@8268,0 8265:O2|@8266,0 8266:O2|0,@8267 8267:O5|@7983,132,132,0,0 8268:O2|3,@8269 8269:S8|4c6f63616c646563 8270:O4|0,@8271,2,3 8271:O1|@17424 8272:O4|0,@8273,3,1 8273:O1|@17425 8274:O4|0,@8275,3,1 8275:O1|@17426 8276:S16|7072696e742d73747275637456616c73 8277:O4|@17427,@161,@121,@112 8278:O5|0,0,0,@8282,@8281 8279:O2|3,@8280 8280:S8|7369676e6174203d 8281:O2|@8285,0 8282:O2|@8283,0 8283:O2|0,@8284 8284:O5|@1128,175,175,0,0 8285:O2|3,@4161 8286:O3|@17429,@121,@124 8287:O5|0,0,0,@8369,@8368 8288:S16|7072696e742d7369676e617475726573 8289:O1|@17432 8290:O5|0,0,0,@8351,@8350 8291:S15|7072696e742d756e69765461626c65 8292:O2|@17433,@164 8293:S11|7072696e74686173682829 8294:O5|0,0,0,@8327,@8326 8295:S10|7072696e742d68617368 8296:O1|@17435 8297:O1|@17438 8298:S18|566563746f722e7072657474792833292d45 8299:S16|566563746f722e707265747479283329 8300:S17|7072696e742d6e616d65644f7074696f6e 8301:O2|@5556,@8302 8302:O2|@1323,@8303 8303:O2|@8304,@6878 8304:O2|3,@8305 8305:S6|68617368203d 8306:O2|3,@8307 8307:S9|656e7472696573203d 8308:O5|0,0,0,@8310,@8309 8309:O2|@8313,0 8310:O2|@8311,0 8311:O2|0,@8312 8312:O5|@816,74,74,0,0 8313:O2|3,@8314 8314:S6|46726f7a656e 8315:S11|7072696e742d6172726179 8316:O1|@17442 8317:O1|@17445 8318:S17|41727261792e7072657474792833292d45 8319:S15|41727261792e707265747479283329 8320:O4|0,@8321,2,1 8321:O1|@17446 8322:O4|0,@8323,1,1 8323:O1|@17447 8324:O2|3,@8325 8325:S6|75736564203d 8326:O2|@8330,0 8327:O2|@8328,0 8328:O2|0,@8329 8329:O5|@816,68,68,0,0 8330:O2|3,@8331 8331:S4|48617368 8332:O1|@17448 8333:S18|7072696e746e616d65644f7074696f6e2829 8334:O5|0,0,0,@8337,@8342 8335:O5|0,0,0,@8337,@8336 8336:O2|@8340,0 8337:O2|@8338,0 8338:O2|0,@8339 8339:O5|@816,52,52,0,0 8340:O2|3,@8341 8341:S4|4e6f6e65 8342:O2|@8343,0 8343:O2|3,@8344 8344:S4|536f6d65 8345:O4|0,@8346,3,1 8346:O1|@17450 8347:O4|0,@8348,2,1 8348:O1|@17451 8349:S15|7072696e742d756e6976657273616c 8350:O2|@8355,0 8351:O2|@8352,0 8352:O2|0,@8353 8353:O5|@8354,49,49,0,0 8354:S37|6d6c736f757263652f4d4c436f6d70696c65722f556e6976657273616c5461626c652e4d4c 8355:O2|3,@8356 8356:S5|5461626c65 8357:O2|@5556,@8358 8358:O2|@1323,@8359 8359:O2|@8360,@6878 8360:O2|3,@8361 8361:S11|7479706549644d6170203d 8362:O2|3,@8363 8363:S5|746162203d 8364:O2|3,@8365 8365:S17|6669727374426f756e64496e646578203d 8366:O2|3,@8367 8367:S10|626f756e64496473203d 8368:O2|@8372,0 8369:O2|@8370,0 8370:O2|0,@8371 8371:O5|@1128,208,208,0,0 8372:O2|3,@4131 8373:O4|0,@8374,3,1 8374:O1|@17452 8375:O4|0,@8376,3,1 8376:O1|@17453 8377:O4|0,@8378,3,1 8378:O1|@17454 8379:O4|0,@8380,3,1 8380:O1|@17455 8381:O4|0,@8382,3,1 8382:O1|@17456 8383:O4|0,@8384,3,1 8384:O1|@17457 8385:O2|3,@8386 8386:S11|7661726961626c6573203d 8387:O2|3,@8388 8388:S13|74797065636f6e73747273203d 8389:O2|3,@8390 8390:S12|73747275637475726573203d 8391:O5|0,0,0,@8393,@8392 8392:O2|@8396,0 8393:O2|@8394,0 8394:O2|0,@8395 8395:O5|@7983,107,107,0,0 8396:O2|3,@8397 8397:S7|4f70656e446563 8398:O5|0,0,0,@8400,@8399 8399:O2|@8403,0 8400:O2|@8401,0 8401:O2|0,@8402 8402:O5|@7983,188,188,0,0 8403:O2|3,@8404 8404:S6|4f72656c7365 8405:O5|0,0,0,@8407,@8406 8406:O2|@8410,0 8407:O2|@8408,0 8408:O2|0,@8409 8409:O5|@7983,203,203,0,0 8410:O2|3,@8411 8411:S13|506172656e7468657369736564 8412:O5|0,0,0,@8413,@6587 8413:O2|@8414,0 8414:O2|0,@8415 8415:O5|@7983,172,172,0,0 8416:O2|3,@8417 8417:S9|6c616254797065203d 8418:O5|0,0,0,@8420,@8419 8419:O2|@8423,0 8420:O2|@8421,0 8421:O2|0,@8422 8422:O5|@7983,195,195,0,0 8423:O2|3,@8424 8424:S8|53656c6563746f72 8425:O4|0,@8426,3,1 8426:O1|@17458 8427:O5|0,0,0,@8429,@8428 8428:O2|@8432,0 8429:O2|@8430,0 8430:O2|0,@8431 8431:O5|@7983,85,85,0,0 8432:O2|3,@8433 8433:S9|5475706c6554726565 8434:O5|0,0,0,@8436,@8435 8435:O2|@8439,0 8436:O2|@8437,0 8437:O2|0,@8438 8438:O5|@7983,142,142,0,0 8439:O2|3,@8440 8440:S15|547970654465636c61726174696f6e 8441:O5|0,0,0,@8443,@8442 8442:O2|@8446,0 8443:O2|@8444,0 8444:O2|0,@8445 8445:O5|@7983,202,202,0,0 8446:O2|3,@8447 8447:S4|556e6974 8448:S13|7072696e742d76616c62696e64 8449:O5|0,0,0,@8451,@8450 8450:O2|@8454,0 8451:O2|@8452,0 8452:O2|0,@8453 8453:O5|@7983,87,87,0,0 8454:O2|3,@8455 8455:S14|56616c4465636c61726174696f6e 8456:O4|0,@8457,3,1 8457:O1|@17462 8458:O4|0,@8459,2,1 8459:O1|@17463 8460:O4|0,@8461,1,1 8461:O1|@17464 8462:O2|3,@8463 8463:S12|627265616b506f696e74203d 8464:O5|0,0,0,@8466,@8465 8465:O2|@8469,0 8466:O2|@8467,0 8467:O2|0,@8468 8468:O5|@7983,178,178,0,0 8469:O2|3,@8470 8470:S5|5768696c65 8471:O2|@8475,0 8472:O2|@8473,0 8473:O2|0,@8474 8474:O5|@7983,201,201,0,0 8475:O2|3,@8476 8476:S8|57696c6443617264 8477:O1|@17465 8478:O5|0,0,0,@8495,@8494 8479:O4|0,@8480,3,1 8480:O1|@17466 8481:O4|0,@8482,3,1 8482:O1|@17467 8483:O4|0,@8484,2,2 8484:O1|@17468 8485:S17|7072696e742d74797065566172466f726d 8486:O2|3,@8487 8487:S6|74636f6e203d 8488:O2|3,@8489 8489:S10|6973457174797065203d 8490:O2|3,@8491 8491:S9|66756c6c4c6f63203d 8492:O2|3,@8493 8493:S9|64656354797065203d 8494:O2|@8498,0 8495:O2|@8496,0 8496:O2|0,@8497 8497:O5|@7983,242,242,0,0 8498:O2|3,@8499 8499:S8|5479706542696e64 8500:O1|@17469 8501:O5|0,0,0,@8523,@8522 8502:O4|0,@8503,2,4 8503:O1|@17470 8504:O2|3,@8515 8505:O4|0,@8506,3,1 8506:O1|@17471 8507:O4|0,@8508,3,1 8508:O1|@17472 8509:O2|3,@8510 8510:S8|69644c6f636e203d 8511:O2|3,@8512 8512:S11|636f6e73747256616c203d 8513:O2|3,@8514 8514:S12|636f6e7374724e616d65203d 8515:S11|636f6e737472417267203d 8516:O4|0,@8517,3,1 8517:O1|@17473 8518:O4|0,@8519,2,2 8519:O1|@17474 8520:O2|3,@8521 8521:S9|636f6e73747273203d 8522:O2|@8526,0 8523:O2|@8524,0 8524:O2|0,@8525 8525:O5|@7983,254,254,0,0 8526:O2|3,@8527 8527:S12|446174617479706542696e64 8528:O2|@17475,@169 8529:O5|0,0,0,@8545,@8544 8530:O4|0,@8531,3,1 8531:O1|@17476 8532:O4|0,@8533,3,1 8533:O1|@17477 8534:O4|0,@8535,2,1 8535:O1|@17478 8536:O4|0,@8537,1,1 8537:O1|@17479 8538:O4|0,@8539,3,1 8539:O1|@17480 8540:O2|3,@8541 8541:S6|76617273203d 8542:O2|3,@8543 8543:S9|72657354797065203d 8544:O2|@8548,0 8545:O2|@8546,0 8546:O2|0,@8547 8547:O5|@7983,279,279,0,0 8548:O2|3,@8549 8549:S9|4d6174636854726565 8550:O2|@17481,@169 8551:O5|0,0,0,@8561,@8560 8552:O4|0,@8553,3,1 8553:O1|@17482 8554:O4|0,@8555,3,1 8555:O1|@17483 8556:O2|3,@8557 8557:S10|70726576696f7573203d 8558:O2|3,@8559 8559:S8|6f6654797065203d 8560:O2|@8564,0 8561:O2|@8562,0 8562:O2|0,@8563 8563:O5|@7983,266,266,0,0 8564:O2|3,@8565 8565:S6|457842696e64 8566:O2|@17484,@173 8567:O5|0,0,0,@8584,@8583 8568:O4|0,@8569,3,1 8569:O1|@17485 8570:S16|7072696e742d6676616c636c61757365 8571:O4|0,@8572,3,1 8572:O1|@17487 8573:O4|0,@8574,1,1 8574:O1|@17488 8575:O4|0,@8576,3,1 8576:O1|@17489 8577:O2|3,@8578 8578:S12|6e756d4f665061747473203d 8579:O2|3,@8580 8580:S10|66756e6374566172203d 8581:O2|3,@8582 8582:S9|636c6175736573203d 8583:O2|@8587,0 8584:O2|@8585,0 8585:O2|0,@8586 8586:O5|@7983,222,222,0,0 8587:O2|3,@8588 8588:S8|4656616c42696e64 8589:O2|@17490,@169 8590:O5|0,0,0,@8608,@8607 8591:O4|0,@8592,3,1 8592:O1|@17491 8593:O4|0,@8594,2,1 8594:O1|@17492 8595:O4|0,@8596,1,1 8596:O1|@17493 8597:O4|0,@8598,3,1 8598:O1|@17495 8599:O4|0,@8600,3,1 8600:O1|@17496 8601:O2|3,@8602 8602:S7|6964656e74203d 8603:O2|3,@8604 8604:S12|636f6e73747261696e74203d 8605:O2|3,@8606 8606:S6|6c696e65203d 8607:O2|@8611,0 8608:O2|@8609,0 8609:O2|0,@8610 8610:O5|@7983,233,233,0,0 8611:O2|3,@8612 8612:S10|4656616c436c61757365 8613:O2|@17497,@169 8614:O5|0,0,0,@8622,@8621 8615:O4|0,@8616,3,1 8616:O1|@17498 8617:O4|0,@8618,3,1 8618:O1|@17499 8619:O2|3,@8620 8620:S13|6973526563757273697665203d 8621:O2|@8625,0 8622:O2|@8623,0 8623:O2|0,@8624 8624:O5|@7983,206,206,0,0 8625:O2|3,@8626 8626:S7|56616c42696e64 8627:S66|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657246696e616c54797065283129 8628:O1|@17502 8629:S32|5349474e41545552455328292e67697665537065634572726f72283329283129 8630:S35|5349474e41545552455328292e67697665537065634572726f72283329283129283129 8631:S12|53706563696679696e672022 8632:S13|2220697320696c6c6567616c2e 8633:O1|@17510 8634:S65|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229 8635:S77|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657254797065283129 8636:O1|@17516 8637:O4|@16,@815,@8639,@8638 8638:O5|@5380,1141,0,1141,0 8639:S21|6e65774163636573733a204e6f7420466f726d616c 8640:S79|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e746572537472756374283129 8641:S76|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657256616c283129 8642:O1|@17520 8643:O1|@17536 8644:S47|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e74283329 8645:O4|@72,@1979,0,@8646 8646:O5|@5380,709,0,709,0 8647:S66|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e742833296c6f6f6b75704661696c757265283129283129 8648:S14|20696e207369676e61747572652e 8649:O1|@17525 8650:O1|@17531 8651:S35|5349474e41545552455328292e73696756616c28362973686172655479706573283829 8652:S50|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e745368617265283129283129 8653:O1|@17527 8654:S62|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e74536861726528312973686f7754797065436f6e73283229 8655:O2|@1500,@8656 8656:O2|@8658,@8657 8657:O2|@1323,@8659 8658:O2|3,@371 8659:O2|@8660,0 8660:O2|3,@8661 8661:S58|546865207479706520636f6e7374727563746f72732074616b6520646966666572656e74206e756d62657273206f6620617267756d656e74732e 8662:O2|3,@8663 8663:S9|776974682074797065 8664:O2|3,@8665 8665:S17|43616e6e6f742073686172652074797065 8666:O4|@16,@815,@8668,@8667 8667:O5|@5380,504,0,504,0 8668:S5|6973566172 8669:O1|@17528 8670:S25|5349474e41545552455328292e7072696e7444657363283329 8671:O2|3,@8672 8672:S21|697320616c726561647920646566696e6564206173 8673:O1|@17532 8674:S44|5349474e41545552455328292e73696756616c2836296c696e6b466c657869626c6554797065496473283229 8675:O4|@16,@815,@8677,@8676 8676:O5|@5380,552,0,552,0 8677:S30|6c696e6b466c657869626c65547970654964733a206e6f7420626f756e64 8678:O4|@16,@815,@8680,@8679 8679:O5|@5380,550,0,550,0 8680:S33|6c696e6b466c657869626c65547970654964733a206e6f74207661726961626c65 8681:O4|@16,@815,@8683,@8682 8682:O5|@5380,540,0,540,0 8683:S38|6c696e6b466c657869626c65547970654964733a20646966666572656e742061726974696573 8684:O1|@17533 8685:O1|@17538 8686:S41|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329 8687:O1|@17537 8688:O4|@72,@1979,0,@8700 8689:S56|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329736861726553747275637473283129 8690:O1|@17539 8691:S40|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229 8692:O1|@17542 8693:S46|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229676574283429 8694:O1|@17543 8695:S59|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283129 8696:S62|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283229283129 8697:O1|@17545 8698:S54|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129676574457175616c73283429 8699:O1|@17546 8700:O5|@5380,676,0,676,0 8701:O1|@17554 8702:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329283129 8703:O1|@17555 8704:S34|5349474e41545552455328292e73696756616c283629747970654964456e76283129 8705:O4|4,@290,0,@8706 8706:O5|@833,101,0,101,0 8707:S37|5349474e41545552455328292e73696756616c283629747970654964456e76283129283129 8708:S21|6973206e6f7420612073696d706c6520747970652e 8709:S43|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729 8710:S59|5349474e41545552455328292e73696756616c2836297369676e61747572655768657265547970652837296c6f6f6b75704661696c757265283129 8711:S28|5349474e41545552455328292e676976654572726f72283329283129 8712:S46|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729283129 8713:S2|6060 8714:O2|3,@8715 8715:S24|2068617320616c7265616479206265656e2073657420746f 8716:O2|3,@8717 8717:S30|43616e6e6f74206170706c792074797065207265616c69736174696f6e2e 8718:O4|@16,@815,@8720,@8719 8719:O5|@5380,937,0,937,0 8720:S12|736574576865726554797065 8721:O4|@16,@815,@8720,@8722 8722:O5|@5380,935,0,935,0 8723:O1|@17565 8724:O1|@17566 8725:S16|697320616e2065717479706520627574 8726:S25|646f6573206e6f74207065726d697420657175616c6974792e 8727:O1|@17567 8728:S53|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229 8729:S64|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e7453657428322974797065456e762d283129 8730:S56|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229283129 8731:S17|6973206120646174617479706520627574 8732:O1|@17571 8733:O1|@17572 8734:S44|434f5049455228292e6765744e65787452756e74696d654f66667365742831296765744f6666736574283329 8735:O1|@17573 8736:S8|73686172696e6720 8737:S31|5349474e41545552455328292e73696756616c2836296d6170496473283229 8738:O4|@16,@815,@8741,@8740 8739:S40|5349474e41545552455328292e73696756616c2836296d6170496473283229636f70794964283129 8740:O5|@5380,1350,0,1350,0 8741:S21|6d61704964733a636f707954797065436f6e737472 8742:O1|@17577 8743:S46|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129 8744:O1|@17576 8745:S49|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129283129 8746:O1|@17578 8747:O4|@16,@815,@8749,@8748 8748:O5|@5380,1376,0,1376,0 8749:S6|6d6170496473 8750:O1|@17579 8751:S36|5349474e41545552455328292e73696756616c2836296d617046756e6374696f6e283129 8752:S8|46756e63746f7220 8753:O1|@17586 8754:O1|@17741 8755:S63|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229 8756:O1|@17587 8757:O1|@17588 8758:O4|@16,@815,@8761,@8760 8759:S70|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296d6b4964283129 8760:O5|@8762,2191,0,2191,0 8761:S29|6d6b49643a204e6f7420426f756e64206f72206e6f7420466f726d616c 8762:S34|6d6c736f757263652f4d4c436f6d70696c65722f535452554354555245535f2e4d4c 8763:S98|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296172675369675769746853656c65637465642d6d6170546f53656c6563746564283129 8764:S68|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132295f2d283129 8765:O1|@17600 8766:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229656e7657697468417267732d283129 8767:O1|@17599 8768:O1|@17601 8769:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296e6577547970654964283129 8770:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129 8771:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129283129 8772:S73|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132297265735369672d283129 8773:O2|@17606,@8774 8774:O2|@17707,@8773 8775:S28|535452554354555245535f28292e73747275637456616c7565283829 8776:S39|535452554354555245535f28292e73747275637456616c756528382974797065456e762d283129 8777:S52|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e744d616b65547970654964283129 8778:S51|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129 8779:O4|11,@239,0,@8781 8780:S54|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129283129 8781:O5|@8762,1743,0,1743,0 8782:S57|535452554354555245535f28292e73747275637456616c75652838296d61746368416374696f6e737c6d61746368526573756c74732d283129 8783:O1|@17614 8784:O1|@17648 8785:S26|535452554354555245535f28292e6d6174636853696773283829 8786:O4|@16,@815,@8788,@8787 8787:O5|@8762,1035,0,1035,0 8788:S48|43616e646964617465207374727563747572652077697468206e6f6e2d656d70747920626f756e64204944206c697374 8789:O1|@17615 8790:S22|434f5049455228292e7265706c6163654d6170283529 8791:O1|@17618 8792:S32|434f5049455228292e7265706c6163654d6170283529747376456e762d283129 8793:O1|@17620 8794:O1|@17621 8795:S42|535452554354555245535f28292e6d61746368536967732838297461726765742d6e65774d6170283129 8796:S39|535452554354555245535f28292e6d61746368536967732838296c6f6f6b757054797065283129 8797:S39|535452554354555245535f28292e6d6174636853696773283829726573756c7454797065283129 8798:O1|@17625 8799:S39|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329 8800:O1|@17627 8801:O1|@17647 8802:S42|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329 8803:O4|@17631,@5570,@5569,@7407 8804:S56|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c617954797065283129 8805:O2|@8807,@8806 8806:O1|@17630 8807:O1|@17629 8808:S58|535452554354555245535f28292e6d61746368536967732838296d617463684e616d65732833292833297072696e7454797065456e762d283129 8809:O1|@17641 8810:S40|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d6170283429 8811:O1|@17632 8812:O1|@17633 8813:O1|@17634 8814:O2|@1323,@8815 8815:O2|@1895,0 8816:O1|@17635 8817:O1|@17636 8818:O5|0,0,0,0,@8824 8819:S53|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e737472283429 8820:O1|@17637 8821:O1|@17638 8822:O2|@8823,@5684 8823:O3|1,1,4 8824:O2|@1815,@5542 8825:O1|@17639 8826:O1|@17640 8827:S57|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e73747252657374283229 8828:O1|@17642 8829:O2|@1323,@8835 8830:S36|535452554354555245535f28292e7369675374727563744d697373696e674d7367283629 8831:S18|20696e207375622d73747275637475726520 8832:S34|53747275637475726520646f6573206e6f74206d61746368207369676e6174757265 8833:O2|3,@8834 8834:S10|5369676e61747572653a 8835:O2|@8836,0 8836:O5|0,3,0,0,@8837 8837:O2|@8839,@8838 8838:O2|@1323,@8841 8839:O2|3,@8840 8840:S10|5374727563747572653a 8841:O2|@8842,0 8842:O2|3,@8843 8843:S11|4e6f742070726573656e74 8844:O2|3,@8845 8845:S47|54797065732074616b6520646966666572656e74206e756d62657273206f66207479706520617267756d656e74732e 8846:O1|@17643 8847:S34|535452554354555245535f28292e7369675374727563744d617463684d7367283829 8848:O2|3,@8849 8849:S35|5479706520696e20737472756374757265206973206e6f742061206461746174797065 8850:O1|@17644 8851:O1|@17645 8852:O1|@17646 8853:O2|3,@8854 8854:S41|5479706520696e20737472756374757265206973206e6f7420616e20657175616c6974792074797065 8855:S61|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c6179537472756374757265283129 8856:S38|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329 8857:O1|@17651 8858:O1|@17652 8859:S56|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d6174636853747275637475726573283329 8860:S5|6d61746368 8861:S33|535452554354555245535f28292e636865636b54797065436f6e73747273283829 8862:O1|@17653 8863:O2|@8866,@8865 8864:S52|535452554354555245535f28292e636865636b54797065436f6e737472732838296572726f72496e44617461747970652d283129 8865:O1|@17656 8866:O1|@17655 8867:S49|535452554354555245535f28292e636865636b54797065436f6e737472732838297072696e7454797065456e762d283129 8868:O1|@17657 8869:O1|@17663 8870:S27|535452554354555245535f28292e6d617463685479706573283429 8871:S36|535452554354555245535f28292e6d617463685479706573283429636f70794964283129 8872:O1|@17661 8873:S45|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129 8874:O1|@17660 8875:S48|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129283129 8876:O1|@17662 8877:S43|535452554354555245535f28292e6d617463685479706573283429636f7079546172676574283129283129 8878:O2|@8879,0 8879:S55|207761732070726573656e7420696e207468652073747275637475726520627574206e6f7420696e20746865207369676e61747572652e 8880:S14|3a20636f6e7374727563746f7220 8881:S30|4572726f72207768696c65206d61746368696e6720646174617479706520 8882:O2|3,@8884 8883:S53|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329646973706c617956616c7565283129 8884:S11|636f6e7374727563746f72 8885:O1|@17665 8886:O1|@17668 8887:S57|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d617463684c6f63616c56616c756573283329 8888:O5|0,0,0,@8892,@8898 8889:S15|7072696e742d6d6174636854797065 8890:O5|0,0,0,@8892,@8891 8891:O2|@8895,0 8892:O2|@8893,0 8893:O2|0,@8894 8894:O5|@8762,1266,1266,0,0 8895:O2|3,@8896 8896:S4|49734f4b 8897:O1|@17667 8898:O2|@8899,0 8899:O2|3,@8900 8900:S7|497357726f6e67 8901:O2|1,@8902 8902:O2|3,@8903 8903:S25|56616c7565206973206e6f7420616e20657863657074696f6e 8904:O2|1,@8905 8905:O2|3,@8906 8906:S26|56616c7565206973206e6f74206120636f6e7374727563746f72 8907:O1|@17669 8908:O1|@17670 8909:S29|437265617465642066726f6d206f7061717565207369676e6174757265 8910:O4|@16,@815,@8912,@8911 8911:O5|@8762,1770,0,1770,0 8912:S9|4e6f7420426f756e64 8913:O1|@17671 8914:S42|535452554354555245535f28292e73747275637456616c7565283829725369672d6f6c644d6170283129 8915:S46|535452554354555245535f28292e73747275637456616c7565283829725369672d6d617463686564496473283129 8916:O1|@17680 8917:S40|535452554354555245535f28292e73747275637456616c75652838296c6f63616c456e762d283129 8918:O1|@17681 8919:O1|@17686 8920:S38|535452554354555245535f28292e73747275637456616c75652838296e6577456e762d283129 8921:O1|@17687 8922:O1|@17688 8923:O4|@16,@815,@8925,@8924 8924:O5|@8762,1573,0,1573,0 8925:S23|5369676e617475726520696e2053747275637420456e64 8926:O1|@17689 8927:O4|@16,@815,@8929,@8928 8928:O5|@8762,1574,0,1574,0 8929:S21|46756e63746f7220696e2053747275637420456e64 8930:O1|@17691 8931:O1|@17692 8932:S40|535452554354555245535f28292e73747275637456616c7565283829656e7465724974656d283429 8933:O1|@17693 8934:S32|535452554354555245535f28292e6d616b65436f7079416374696f6e73283129 8935:O1|@17694 8936:S45|535452554354555245535f28292e6d616b65436f7079416374696f6e732831296d61746368456e747279283329 8937:O1|@17696 8938:O4|@16,@815,@8941,@8940 8939:S29|535452554354555245535f28292e6d6174636854797065496473283229 8940:O5|@8762,1408,0,1408,0 8941:S24|6d61746368547970654964733a204e6f7420466f726d616c 8942:O1|@17697 8943:O1|@17698 8944:O1|@17699 8945:O1|@17700 8946:O1|@17701 8947:S30|437265617465642066726f6d206170706c79696e672066756e63746f7220 8948:S44|535452554354555245535f28292e73747275637456616c75652838296d616b654e6577547970654964283229 8949:O4|@16,@815,@8912,@8950 8950:O5|@8762,1513,0,1513,0 8951:O1|@17702 8952:S48|535452554354555245535f28292e73747275637456616c7565283829676574436f6d62696e6564547970654964283129 8953:S9|46756e63746f722028 8954:S32|535452554354555245535f28292e676976654572726f72283329283129283129 8955:S29|535452554354555245535f28292e676976654572726f72283329283129 8956:O1|@17730 8957:S28|535452554354555245535f28292e7061737332537472756374283829 8958:O1|@17708 8959:O1|@17718 8960:S45|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e283229 8961:O1|@17710 8962:S55|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296e6577456e762d283129 8963:O1|@17712 8964:O1|@17714 8965:O1|@17716 8966:S54|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296d616b654964283429 8967:S50|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832295f2d283129 8968:O1|@17719 8969:S44|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229 8970:O1|@17725 8971:S56|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c6465632832296c6f63616c456e762d283129 8972:O1|@17726 8973:S55|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229626f6479456e762d283129 8974:O1|@17734 8975:S48|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329 8976:S10|53747275637475726520 8977:S56|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329 8978:S59|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329283129 8979:S61|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332963617074757265496473283129 8980:O1|@17735 8981:S69|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329706173733253747275637475726542696e64283629 8982:O1|@17736 8983:S35|535452554354555245535f28292e6d61726b56616c7341734578706f72746564283129 8984:O1|@17737 8985:S3|28292e 8986:O1|@17738 8987:S76|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229726573547970654d6170283129 8988:S52|535452554354555245535f28292e7061737332537472756374732833297061737332546f704465632832296d616b654964283129 8989:O1|@17744 8990:S32|535452554354555245535f28292e706173733253747275637473283329283129 8991:O1|@17745 8992:O5|0,0,0,@9009,@9008 8993:S20|7072696e742d76616c7565436f657263696f6e73 8994:O5|0,0,0,@8996,@8995 8995:O2|@8999,0 8996:O2|@8997,0 8997:O2|0,@8998 8998:O5|@8762,129,129,0,0 8999:O2|3,@9000 9000:S18|436f6e7374727563746f72546f56616c7565 9001:O5|0,0,0,@9003,@9002 9002:O2|@9006,0 9003:O2|@9004,0 9004:O2|0,@9005 9005:O5|@8762,128,128,0,0 9006:O2|3,@9007 9007:S16|457863657074696f6e546f56616c7565 9008:O2|@9012,0 9009:O2|@9010,0 9010:O2|0,@9011 9011:O5|@8762,127,127,0,0 9012:O2|3,@9013 9013:S10|4e6f436f657263696f6e 9014:O3|@17746,@9084,@9015 9015:O3|@17874,@9085,@9084 9016:O1|@17747 9017:S34|535452554354555245535f28292e737472756374734578706f727454726565283229 9018:O1|@17810 9019:S47|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329 9020:O1|@17749 9021:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283129283129 9022:O1|@17753 9023:S58|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329 9024:O4|@72,@1979,0,@9025 9025:O5|@8762,835,0,835,0 9026:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329283129 9027:O1|@17809 9028:S33|535452554354555245535f28292e746f704465634578706f727454726565283329 9029:S48|535452554354555245535f28292e746f704465634578706f727454726565283329636f6d6d6f6e50726f70732d283129 9030:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296173506172656e74283129 9031:O1|@17757 9032:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283129 9033:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329 9034:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296578706f727454686973283129 9035:O1|@17761 9036:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574536967283129 9037:O1|@17794 9038:S29|5349474e41545552455328292e7369674578706f727454726565283329 9039:S44|5349474e41545552455328292e7369674578706f727454726565283329636f6d6d6f6e50726f70732d283129 9040:S40|5349474e41545552455328292e7369674578706f7274547265652833296173506172656e74283129 9041:O1|@17764 9042:O1|@17765 9043:S30|5349474e41545552455328292e737065634578706f727454726565283129 9044:S30|5349474e41545552455328292e737065634578706f727454726565283329 9045:S45|5349474e41545552455328292e737065634578706f727454726565283329636f6d6d6f6e50726f70732d283129 9046:S41|5349474e41545552455328292e737065634578706f7274547265652833296173506172656e74283129 9047:O1|@17769 9048:O1|@17770 9049:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283129 9050:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329 9051:S54|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296578706f727454686973283129 9052:S56|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329676574536967537472756374283129 9053:O1|@17776 9054:S51|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296765744e616d65283129 9055:O1|@17775 9056:O1|@17777 9057:S40|5349474e41545552455328292e737065634578706f72745472656528332967657454797065283129 9058:O1|@17782 9059:S40|5349474e41545552455328292e737065634578706f7274547265652833296765744e616d65283129 9060:O1|@17781 9061:O1|@17786 9062:O1|@17785 9063:O1|@17787 9064:S29|5349474e41545552455328292e7369674578706f727454726565283129 9065:O1|@17788 9066:O1|@17792 9067:O1|@17791 9068:O1|@17793 9069:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574426f6479283129 9070:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574417267283129 9071:O1|@17799 9072:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296765744e616d65283129 9073:O1|@17798 9074:O1|@17800 9075:O1|@17801 9076:O1|@17802 9077:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283129 9078:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329 9079:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296578706f727454686973283129 9080:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329676574536967283129 9081:O1|@17808 9082:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296765744e616d65283129 9083:O1|@17807 9084:O5|@17811,@9015,@176,@177,@9085 9085:O2|@17873,@9015 9086:O1|@17827 9087:S38|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329 9088:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329636f6d6d6f6e50726f70732d283129 9089:S49|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296173506172656e74283129 9090:S53|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296765745369676e6174757265283129 9091:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329676574537472756374757265283129 9092:O5|0,0,0,@9096,@7305 9093:S16|7072696e742d616c6c456e7472696573 9094:O5|0,0,0,@9096,@9095 9095:O2|@9099,0 9096:O2|@9097,0 9097:O2|0,@9098 9098:O5|@8762,714,714,0,0 9099:O2|3,@9100 9100:S3|446563 9101:S54|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296578706f7274456e7472696573283129 9102:O1|@17818 9103:O1|@17819 9104:O1|@17820 9105:S54|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f72417267283129 9106:O1|@17825 9107:S55|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f724e616d65283129 9108:O1|@17824 9109:O1|@17826 9110:O4|@17828,@178,@176,@177 9111:O5|0,0,0,@9142,@9141 9112:S15|7072696e742d737472756374446563 9113:S21|7072696e742d636f72654465636c61726174696f6e 9114:O5|0,0,0,@9116,@9115 9115:O2|@9119,0 9116:O2|@9117,0 9117:O2|0,@9118 9118:O5|@8762,187,187,0,0 9119:O2|3,@9120 9120:S8|436f72654c616e67 9121:O5|0,0,0,@9122,@8264 9122:O2|@9123,0 9123:O2|0,@9124 9124:O5|@8762,194,194,0,0 9125:O2|3,@9132 9126:O4|0,@9127,3,1 9127:O1|@17834 9128:O4|0,@9129,3,1 9129:O1|@17835 9130:O2|3,@9131 9131:S8|76616c526566203d 9132:S9|68617665536967203d 9133:O4|0,@9134,3,1 9134:O1|@17836 9135:O4|0,@9136,3,1 9136:O1|@17837 9137:O2|3,@9138 9138:S17|74797065496473466f724465627567203d 9139:O2|3,@9140 9140:S10|62696e64696e6773203d 9141:O2|@9145,0 9142:O2|@9143,0 9143:O2|0,@9144 9144:O5|@8762,180,180,0,0 9145:O2|3,@9146 9146:S12|537472756374757265446563 9147:O1|@17838 9148:O5|0,0,0,@9180,@9179 9149:O2|@17839,@180 9150:O5|0,0,0,@9153,@9152 9151:S15|7072696e742d666978537461747573 9152:O2|@9156,0 9153:O2|@9154,0 9154:O2|0,@9155 9155:O5|@1128,506,506,0,0 9156:O2|3,@9157 9157:S9|466978537461747573 9158:O5|0,0,0,@9160,@9159 9159:O2|@9163,0 9160:O2|@9161,0 9161:O2|0,@9162 9162:O5|@8762,114,114,0,0 9163:O2|3,@9164 9164:S7|436f7265466978 9165:O5|0,0,0,@9167,@9166 9166:O2|@9170,0 9167:O2|@9168,0 9168:O2|0,@9169 9169:O5|@8762,115,115,0,0 9170:O2|3,@9171 9171:S10|436f7265537472756374 9172:O5|0,0,0,@9174,@9173 9173:O2|@9177,0 9174:O2|@9175,0 9175:O2|0,@9176 9176:O5|@8762,113,113,0,0 9177:O2|3,@9178 9178:S8|436f726554797065 9179:O2|@9183,0 9180:O2|@9181,0 9181:O2|0,@9182 9182:O5|@8762,112,112,0,0 9183:O2|3,@9184 9184:S9|436f726556616c7565 9185:O4|@17840,@181,@177,@176 9186:O5|0,0,0,@9358,@9357 9187:S17|7072696e742d73747275637456616c7565 9188:O4|0,@9189,3,1 9189:O1|@17841 9190:O4|0,@9191,2,2 9191:O1|@17842 9192:O2|3,@9195 9193:O2|3,@9194 9194:S8|736f75726365203d 9195:S6|64657374203d 9196:O4|0,@9197,3,1 9197:O1|@17845 9198:O4|0,@9199,2,2 9199:O1|@17846 9200:O4|0,@9201,3,1 9201:O1|@17847 9202:O4|0,@9203,3,1 9203:O1|@17848 9204:S14|7072696e742d66756e63746f7273 9205:O5|@17849,@161,@121,@183,@112 9206:O5|0,0,0,@9208,@9207 9207:O2|@9211,0 9208:O2|@9209,0 9209:O2|0,@9210 9210:O5|@1128,219,219,0,0 9211:O2|3,@9212 9212:S7|46756e63746f72 9213:O2|3,@9214 9214:S8|726573496473203d 9215:O2|3,@9216 9216:S17|6d61746368546f417267756d656e74203d 9217:O2|3,@9218 9218:S8|617267496473203d 9219:O5|0,0,0,@9221,@9220 9220:O2|@9224,0 9221:O2|@9222,0 9222:O2|0,@9223 9223:O5|@8762,150,150,0,0 9224:O2|3,@9225 9225:S11|46756e63746f724170706c 9226:O5|0,0,0,@9228,@9227 9227:O2|@9231,0 9228:O2|@9229,0 9229:O2|0,@9230 9230:O5|@8762,162,162,0,0 9231:O2|3,@9232 9232:S6|4c6574446563 9233:O3|@17852,@187,@185 9234:O5|0,0,0,@9264,@9263 9235:S10|7072696e742d73696773 9236:S11|7072696e742d7370656373 9237:O5|0,0,0,@9239,@9238 9238:O2|@9242,0 9239:O2|@9240,0 9240:O2|0,@9241 9241:O5|@5380,78,78,0,0 9242:O2|3,@9243 9243:S6|536967446563 9244:O4|0,@9245,3,1 9245:O1|@17854 9246:O4|0,@9247,3,1 9247:O1|@17855 9248:O5|0,0,0,@9250,@9249 9249:O2|@9253,0 9250:O2|@9251,0 9251:O2|0,@9252 9252:O5|@5380,76,76,0,0 9253:O2|3,@9254 9254:S14|5369676e61747572654964656e74 9255:O4|0,@9256,2,2 9256:O1|@17856 9257:O2|3,@9258 9258:S10|747970654e616d65203d 9259:O2|3,@9260 9260:S8|736967457870203d 9261:O2|3,@9262 9262:S13|7265616c69736174696f6e203d 9263:O2|@9267,0 9264:O2|@9265,0 9265:O2|0,@9266 9266:O5|@5380,80,80,0,0 9267:O2|3,@9268 9268:S9|576865726554797065 9269:O2|@17857,@185 9270:O5|0,0,0,@9314,@9313 9271:O5|0,0,0,@9272,@9173 9272:O2|@9273,0 9273:O2|0,@9274 9274:O5|@5380,91,91,0,0 9275:O4|0,@9276,3,1 9276:O1|@17858 9277:O5|0,0,0,@9279,@9278 9278:O2|@9282,0 9279:O2|@9280,0 9280:O2|0,@9281 9281:O5|@5380,88,88,0,0 9282:O2|3,@9283 9283:S5|4578536967 9284:O5|0,0,0,@9286,@9285 9285:O2|@9289,0 9286:O2|@9287,0 9287:O2|0,@9288 9288:O5|@5380,99,99,0,0 9289:O2|3,@9290 9290:S10|496e636c756465536967 9291:O4|0,@9292,2,2 9292:O1|@17860 9293:O2|3,@9294 9294:S8|736861726573203d 9295:O2|3,@9296 9296:S8|697354797065203d 9297:O5|0,0,0,@9299,@9298 9298:O2|@9302,0 9299:O2|@9300,0 9300:O2|0,@9301 9301:O5|@5380,97,97,0,0 9302:O2|3,@9303 9303:S7|53686172696e67 9304:O2|3,@9305 9305:S11|736967537472756374203d 9306:O5|0,0,0,@9308,@9307 9307:O2|@9311,0 9308:O2|@9309,0 9309:O2|0,@9310 9310:O5|@5380,83,83,0,0 9311:O2|3,@9312 9312:S12|537472756374757265536967 9313:O2|@9317,0 9314:O2|@9315,0 9315:O2|0,@9316 9316:O5|@5380,85,85,0,0 9317:O2|3,@9318 9318:S6|56616c536967 9319:O4|0,@9320,3,1 9320:O1|@17864 9321:O4|0,@9322,2,2 9322:O1|@17865 9323:O2|3,@9324 9324:S5|737472203d 9325:O2|3,@9326 9326:S8|7369674c6f63203d 9327:O2|3,@9328 9328:S11|6f7061717565496473203d 9329:O2|3,@9330 9330:S8|6f7061717565203d 9331:O2|3,@9332 9332:S19|6d61746368546f436f6e73747261696e74203d 9333:O2|3,@9334 9334:S6|63736967203d 9335:O5|0,0,0,@9337,@9336 9336:O2|@9340,0 9337:O2|@9338,0 9338:O2|0,@9339 9339:O5|@8762,169,169,0,0 9340:O2|3,@9341 9341:S13|536967436f6e73747261696e74 9342:O2|3,@9343 9343:S15|6d61746368546f526573756c74203d 9344:O2|3,@9345 9345:S7|616c697374203d 9346:O5|0,0,0,@9348,@9347 9347:O2|@9351,0 9348:O2|@9349,0 9349:O2|0,@9350 9350:O5|@8762,143,143,0,0 9351:O2|3,@9352 9352:S9|537472756374446563 9353:O4|0,@9354,3,1 9354:O1|@17869 9355:O4|0,@9356,3,1 9356:O1|@17870 9357:O2|@9361,0 9358:O2|@9359,0 9359:O2|0,@9360 9360:O5|@8762,136,136,0,0 9361:O2|3,@9362 9362:S14|5374727563747572654964656e74 9363:O3|@17871,@181,@110 9364:O5|0,0,0,@9395,@9394 9365:S19|7072696e742d76616c75654d61746368696e67 9366:O2|3,@9367 9367:S17|736f75726365537472756374757265203d 9368:O2|3,@9369 9369:S15|636f6e74656e74734d61746368203d 9370:O5|0,0,0,@9372,@9371 9371:O2|@9375,0 9372:O2|@9373,0 9373:O2|0,@9374 9374:O5|@8762,121,121,0,0 9375:O2|3,@9376 9376:S14|5374727563747572654d61746368 9377:O2|3,@9378 9378:S12|736f7572636549644e6f203d 9379:O2|3,@9380 9380:S12|6973457175616c697479203d 9381:O5|0,0,0,@9383,@9382 9382:O2|@9386,0 9383:O2|@9384,0 9384:O2|0,@9385 9385:O5|@8762,123,123,0,0 9386:O2|3,@9387 9387:S11|5479706549644d61746368 9388:O2|3,@9389 9389:S12|74617267657454797065203d 9390:O2|3,@9391 9391:S13|736f7572636556616c7565203d 9392:O2|3,@9393 9393:S10|636f657263696f6e203d 9394:O2|@9398,0 9395:O2|@9396,0 9396:O2|0,@9397 9397:O5|@8762,119,119,0,0 9398:O2|3,@9399 9399:S10|56616c75654d61746368 9400:S33|535452554354555245535f28292e7374727563744578706f727454726565283129 9401:O1|@17888 9402:S33|535452554354555245535f28292e7374727563744578706f727454726565283329 9403:S48|535452554354555245535f28292e7374727563744578706f727454726565283329636f6d6d6f6e50726f70732d283129 9404:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296173506172656e74283129 9405:O1|@17877 9406:O1|@17878 9407:O1|@17880 9408:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283129 9409:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329 9410:S57|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296578706f727454686973283129 9411:S55|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f7274534228332967657456616c7565283129 9412:O1|@17887 9413:S54|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296765744e616d65283129 9414:O1|@17886 9415:S59|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329676574536967537472756374283129 9416:O1|@17889 9417:O1|@18591 9418:S31|535452554354555245535f28292e67656e636f646553747275637473283329 9419:O1|@17890 9420:O1|@17931 9421:S53|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e53747275637456616c7565283129 9422:O1|@17891 9423:O1|@17892 9424:O1|@17895 9425:S51|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e537472756374446563283129 9426:O1|@17893 9427:O1|@17894 9428:O1|@17930 9429:S59|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c54797065732832296c6561737447656e457870283129 9430:O1|@17896 9431:O1|@17897 9432:O1|@17898 9433:O1|@17909 9434:S91|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e6365283229 9435:O1|@17899 9436:O1|@17901 9437:O1|@17900 9438:O1|@17902 9439:O1|@17904 9440:S103|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832297472616e73706f7365283129 9441:O1|@17903 9442:O1|@17905 9443:S107|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832296f726967696e616c566172732d283129 9444:O1|@17906 9445:O1|@17907 9446:O1|@17908 9447:O1|@17910 9448:O2|@17911,@9449 9449:O10|@17927,@29,@1227,@3475,@1166,@3965,@36,@34,@82,@38 9450:O1|@17924 9451:S27|545950455f5452454528292e6c6561737447656e6572616c283129 9452:O1|@17913 9453:O1|@17915 9454:O1|@17916 9455:O1|@17917 9456:O1|@17919 9457:S39|545950455f5452454528292e6c6561737447656e6572616c2831296c6561737441726773283129 9458:O4|@72,@1979,0,@9459 9459:O5|@4259,3105,0,3105,0 9460:O1|@17918 9461:O1|@17920 9462:O1|@17921 9463:O1|@17923 9464:S17|4c697374506169722e756e7a6970283229 9465:O1|@17926 9466:S44|545950455f5452454528292e6c6561737447656e6572616c28312967657454797065436f6e73747273283129 9467:O4|@16,@815,@9471,@9474 9468:S37|545950455f5452454528292e74797065436f6e73747246726f6d4f7665726c6f6164283229 9469:O4|@16,@815,@9471,@9470 9470:O5|@4259,2772,0,2772,0 9471:S40|74797065436f6e73747246726f6d4f7665726c6f61643a204e6f206d61746368696e672074797065 9472:O4|@16,@815,@9471,@9473 9473:O5|@4259,2764,0,2764,0 9474:O5|@4259,2762,0,2762,0 9475:O4|@16,@815,@9477,@9476 9476:O5|@7125,2217,0,2217,0 9477:S36|72656475636554797065733a20556e61626c6520746f2073657420747970652076617273 9478:O1|@17929 9479:S40|535452554354555245535f28292e67656e636f6465537472756374732833296d6b41646472283129 9480:O3|@9481,@5229,0 9481:O1|@17933 9482:S37|44454255474745525f28292e696e697469616c44656275676765725374617475732d283129 9483:O1|@17934 9484:O1|@18585 9485:S43|535452554354555245535f28292e67656e636f6465537472756374732833296d6170506169722834292829 9486:O1|@17935 9487:O1|@18584 9488:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429 9489:O1|@17936 9490:O1|@18582 9491:O1|@17937 9492:O1|@18580 9493:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e64283329 9494:S72|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e642833296d6b41646472283129 9495:O4|@16,@815,@7185,@9500 9496:S34|434f44455452454528292e6e65774c6576656c283129746869734c6576656c283129 9497:O4|@16,@815,@9499,@9498 9498:O5|@947,93,0,93,0 9499:S34|6d6b4c6f61643a206c6576656c206d757374206265206e6f6e2d6e65676174697665 9500:O5|@947,90,0,90,0 9501:O4|101,@4269,0,@9502 9502:O5|@1128,509,0,509,0 9503:O1|@17940 9504:O1|@17946 9505:S37|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629 9506:O1|@17941 9507:O1|@17945 9508:S47|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629666f6c64496473283329 9509:O1|@17942 9510:O4|@16,@815,@9513,@9512 9511:S28|545950454944434f444528292e636f64654163636573732832292829 9512:O5|@9514,80,0,80,0 9513:S9|4e6f20616363657373 9514:S34|6d6c736f757263652f4d4c436f6d70696c65722f545950454944434f44452e736d6c 9515:S29|434f44455452454528292e6d756c7469706c6555736573283429283129 9516:S35|434f44455452454528292e6d756c7469706c65557365732834296c6f6164466e283129 9517:O1|@17948 9518:S26|44454255474745525f28292e7570646174655374617465283529 9519:O1|@9520 9520:O3|6,6,0 9521:O1|@9522 9522:O3|6,7,0 9523:O1|@17947 9524:O1|@17949 9525:O1|@17950 9526:S37|44454255474745525f28292e6d616b655374727563744465627567456e7472696573283629 9527:O1|@17954 9528:S50|44454255474745525f28292e6d616b655374727563744465627567456e74726965732836296c6f6164537472756374283329 9529:O1|@17951 9530:O4|@16,@815,@9513,@9532 9531:S27|56414c55455f4f505328292e636f64654163636573732832292829 9532:O5|@9533,668,0,668,0 9533:S32|6d6c736f757263652f4d4c436f6d70696c65722f56414c55455f4f50532e4d4c 9534:O1|@17955 9535:O1|@17956 9536:S34|44454255474745525f28292e6d616b6556616c4465627567456e7472696573283729 9537:O1|@18090 9538:S44|44454255474745525f28292e6d616b6556616c4465627567456e74726965732837296c6f6164566172283329 9539:O1|@17957 9540:S22|56414c55455f4f505328292e636f646556616c283629 9541:O1|@17960 9542:O2|@18051,@83 9543:S28|56414c55455f4f505328292e6170706c7946756e6374696f6e283729 9544:S40|56414c55455f4f505328292e6170706c7946756e6374696f6e283729676574436f6e737472283129 9545:O1|@17962 9546:O7|@17963,@9622,@9745,@9846,@9858,@9547,@4327 9547:O4|@18012,@9622,@9745,@9846 9548:O1|@17964 9549:S32|545950454944434f444528292e6170706c79546f496e7374616e636527283429 9550:O1|@17965 9551:O1|@18001 9552:S52|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329 9553:O1|@17966 9554:O1|@17967 9555:S62|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296571436f64652d283129 9556:O1|@17968 9557:O4|@16,@815,@9609,@9608 9558:S22|545950454944434f444528292e6d616b654571283429 9559:O1|@17970 9560:S39|545950454944434f444528292e6d616b654571283429636f6d62696e65456e7472696573283229 9561:O1|@17971 9562:O1|@17972 9563:S10|65717b2e2e2e7d283229 9564:O1|@17974 9565:O1|@17975 9566:S48|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229 9567:O1|@17976 9568:O1|@17990 9569:S57|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229676574417267283129 9570:O1|@17977 9571:O1|@17984 9572:S45|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229 9573:S48|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229283129 9574:O1|@17980 9575:S65|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229 9576:O1|@17982 9577:S56|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322973616d6554797065283229 9578:S68|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229283129 9579:S67|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329 9580:S70|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329283129 9581:O4|@16,@815,@9583,@9582 9582:O5|@9514,631,0,631,0 9583:S6|676574417267 9584:O1|@17986 9585:O4|@16,@815,@9594,@9593 9586:S32|545950454944434f444528292e626f7865646e657373466f7254797065283429 9587:O1|@17988 9588:O1|@17989 9589:S59|545950454944434f444528292e626f7865646e657373466f7254797065283429626f7865646e657373466f72436f6e737472756374696f6e283229 9590:O4|@16,@815,@9592,@9591 9591:O5|@9514,393,0,393,0 9592:S30|626f7865646e657373466f72547970653a20556e6b6e6f776e2074797065 9593:O5|@9514,377,0,377,0 9594:S43|626f7865646e6573733a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 9595:O4|@16,@815,@9604,@9603 9596:S27|545950454944434f444528292e73697a65466f7254797065283429 9597:O1|@17992 9598:O1|@17993 9599:S49|545950454944434f444528292e73697a65466f725479706528342973697a65466f72436f6e737472756374696f6e283229 9600:O4|@16,@815,@9602,@9601 9601:O5|@9514,455,0,455,0 9602:S25|73697a65466f72547970653a20556e6b6e6f776e2074797065 9603:O5|@9514,429,0,429,0 9604:S38|73697a653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 9605:O4|@16,@815,@9607,@9606 9606:O5|@9514,719,0,719,0 9607:S21|457175616c69747920666f722066756e6374696f6e 9608:O5|@9514,683,0,683,0 9609:S40|6d616b6545713a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 9610:O1|@17994 9611:O1|@17995 9612:S72|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296765745479706556616c7565466f724944283129 9613:O1|@17996 9614:O1|@17998 9615:S27|545950454944434f444528292e6765744d61784465707468283329 9616:S47|545950454944434f444528292e547970655661724d61702e636865636b54797065436f6e7374727563746f72283229 9617:O1|@17999 9618:O1|@18000 9619:S65|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329626f786564436f64652d283129 9620:O1|@18002 9621:S64|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d6574657228332973697a65436f64652d283129 9622:O3|6,@9624,@9623 9623:O2|@9629,0 9624:O4|@9626,@9625,2,1 9625:O1|@18004 9626:O1|@18003 9627:S10|6572726f72436f646532 9628:S14|7072696e742d66756e6374696f6e 9629:O4|@25,@394,@9630,0 9630:O3|3,4,@9631 9631:O6|@15281,@940,@9633,@9643,@9644,@9632 9632:O2|@15290,@9660 9633:O2|@15289,@9634 9634:O2|@9636,@9635 9635:O2|@9639,@4110 9636:O2|@1572,@9637 9637:O3|1,@9638,@952 9638:O8|@921,@9627,0,0,@3843,0,0,1 9639:O2|@1456,@9640 9640:O3|1,@9641,@952 9641:O8|@9642,@9628,0,0,@1437,0,0,1 9642:O3|6,@5703,0 9643:O16|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 9644:O17|@9646,@9650,@9649,@9648,@9626,@9625,@9624,@9652,@9651,@9654,@9653,@9656,@9655,@9657,@9647,@9658,@9645 9645:O4|@1173,@9658,1,1 9646:O7|@9648,@9624,@9651,@9653,@9655,@9647,@9645 9647:O4|@1194,@9657,3,1 9648:O4|@9650,@9649,3,1 9649:O1|@18006 9650:O1|@18005 9651:O4|@1002,@9652,1,1 9652:O1|@18007 9653:O4|@894,@9654,3,1 9654:O1|@18008 9655:O4|@1111,@9656,1,1 9656:O1|@18009 9657:O1|@18010 9658:O1|@18011 9659:S10|7072696e742d63686172 9660:O2|@9662,@9661 9661:O2|0,@9731 9662:O2|@9663,0 9663:O4|@24,@394,@9664,0 9664:O2|0,@9665 9665:O2|0,@9666 9666:O2|@9668,@9667 9667:O2|@9681,@9680 9668:O2|@9670,@9669 9669:O2|@9676,0 9670:O4|@24,@394,@9671,0 9671:O2|@9672,@904 9672:O2|@9673,0 9673:O4|@25,@394,@9674,0 9674:O3|1,@1015,@9675 9675:O6|@15282,@940,@952,@951,@1007,@939 9676:O4|@25,@394,@9677,0 9677:O3|3,4,@9678 9678:O4|@15291,@9679,@9671,@9651 9679:O2|@9674,@988 9680:O2|@9694,@9693 9681:O2|@9683,@9682 9682:O2|@9689,0 9683:O4|@24,@394,@9684,0 9684:O2|@9685,@904 9685:O2|@9686,0 9686:O4|@25,@394,@9687,0 9687:O3|1,@909,@9688 9688:O6|@15282,@940,@908,@957,@979,@964 9689:O4|@25,@394,@9690,0 9690:O3|3,4,@9691 9691:O4|@15291,@9692,@9684,@9653 9692:O2|@9687,@988 9693:O2|@9707,@9706 9694:O2|@9696,@9695 9695:O2|@9702,0 9696:O4|@24,@394,@9697,0 9697:O2|@9698,@904 9698:O2|@9699,0 9699:O4|@25,@394,@9700,0 9700:O3|1,@1015,@9701 9701:O6|@15282,@940,@952,@951,@1115,@939 9702:O4|@25,@394,@9703,0 9703:O3|3,4,@9704 9704:O4|@15291,@9705,@9697,@9655 9705:O2|@9700,@988 9706:O2|@9719,0 9707:O2|@9709,@9708 9708:O2|@9715,0 9709:O4|@24,@394,@9710,0 9710:O2|@9711,@904 9711:O2|@9712,0 9712:O4|@25,@394,@9713,0 9713:O3|1,@1205,@9714 9714:O6|@15282,@940,@952,@951,@1199,@939 9715:O4|@25,@394,@9716,0 9716:O3|3,4,@9717 9717:O4|@15291,@9718,@9710,@9647 9718:O2|@9713,@988 9719:O2|@9721,@9720 9720:O2|@9727,0 9721:O4|@24,@394,@9722,0 9722:O2|@9723,@904 9723:O2|@9724,0 9724:O4|@25,@394,@9725,0 9725:O3|1,@1015,@9726 9726:O6|@15282,@940,@952,@951,@1177,@939 9727:O4|@25,@394,@9728,0 9728:O3|3,4,@9729 9729:O4|@15291,@9730,@9722,@9645 9730:O2|@9725,@988 9731:O2|0,@9732 9732:O2|0,@9733 9733:O2|0,@9734 9734:O2|0,@9735 9735:O2|0,@9736 9736:O2|0,@9737 9737:O2|@9668,@9738 9738:O2|0,@9739 9739:O2|@9681,@9740 9740:O2|0,@9741 9741:O2|@9694,@9742 9742:O2|0,@9743 9743:O2|@9707,@9744 9744:O2|0,@9706 9745:O2|@9747,@9746 9746:O2|@9768,@9767 9747:O2|@1026,@9748 9748:O3|6,@9651,@9749 9749:O2|@9670,@9750 9750:O2|@9751,0 9751:O4|@25,@394,@9752,0 9752:O3|3,4,@9753 9753:O6|@15281,@940,@9754,@9643,@9644,@9632 9754:O2|@15289,@9755 9755:O2|@9757,@9756 9756:O2|@9759,@1021 9757:O2|@9758,@9674 9758:O3|0,@1002,@9672 9759:O2|@1362,@9760 9760:O3|1,@9761,@952 9761:O8|@9762,@6869,0,0,@1019,0,0,1 9762:O4|7,@9764,@9763,1 9763:O3|13,@1639,@9765 9764:O2|@931,0 9765:O3|@9766,0,0 9766:O3|6,@27,0 9767:O2|@9788,@9787 9768:O2|@882,@9769 9769:O3|6,@9653,@9770 9770:O2|@9683,@9771 9771:O2|@9772,0 9772:O4|@25,@394,@9773,0 9773:O3|3,4,@9774 9774:O6|@15281,@940,@9775,@9643,@9644,@9632 9775:O2|@15289,@9776 9776:O2|@9778,@9777 9777:O2|@9780,@971 9778:O2|@9779,@9687 9779:O3|0,@894,@9685 9780:O2|@1435,@9781 9781:O3|1,@9782,@952 9782:O8|@9783,@6869,0,0,@1019,0,0,1 9783:O4|7,@9764,@9784,1 9784:O3|13,@1639,@9785 9785:O3|@9786,0,0 9786:O3|6,@23,0 9787:O2|@9808,@9807 9788:O2|@1162,@9789 9789:O3|6,@9655,@9790 9790:O2|@9696,@9791 9791:O2|@9792,0 9792:O4|@25,@394,@9793,0 9793:O3|3,4,@9794 9794:O6|@15281,@940,@9795,@9643,@9644,@9632 9795:O2|@15289,@9796 9796:O2|@9798,@9797 9797:O2|@9800,@1021 9798:O2|@9799,@9700 9799:O3|0,@1111,@9698 9800:O2|@4765,@9801 9801:O3|1,@9802,@952 9802:O8|@9803,@5857,0,0,@1019,0,0,1 9803:O4|7,@9764,@9804,1 9804:O3|13,@1639,@9805 9805:O3|@9806,0,0 9806:O3|6,@31,0 9807:O2|@9827,0 9808:O2|@3965,@9809 9809:O3|6,@9647,@9810 9810:O2|@9709,@9811 9811:O2|@9812,0 9812:O4|@25,@394,@9813,0 9813:O3|3,4,@9814 9814:O6|@15281,@940,@9815,@9643,@9644,@9632 9815:O2|@15289,@9816 9816:O2|@9818,@9817 9817:O2|@9820,@971 9818:O2|@9819,@9713 9819:O3|0,@1194,@9711 9820:O2|@4779,@9821 9821:O3|1,@9822,@952 9822:O8|@9823,@814,0,0,@1019,0,0,1 9823:O4|7,@9764,@9824,1 9824:O3|13,@1639,@9825 9825:O3|@9826,0,0 9826:O3|6,@35,0 9827:O2|@1166,@9828 9828:O3|6,@9645,@9829 9829:O2|@9721,@9830 9830:O2|@9831,0 9831:O4|@25,@394,@9832,0 9832:O3|3,4,@9833 9833:O6|@15281,@940,@9834,@9643,@9644,@9632 9834:O2|@15289,@9835 9835:O2|@9837,@9836 9836:O2|@9839,@1021 9837:O2|@9838,@9725 9838:O3|0,@1173,@9723 9839:O2|@4795,@9840 9840:O3|1,@9841,@952 9841:O8|@9842,@9659,0,0,@1019,0,0,1 9842:O4|7,@9764,@9843,1 9843:O3|13,@1639,@9844 9844:O3|@9845,0,0 9845:O3|6,@33,0 9846:O3|6,@9648,@9847 9847:O2|@9848,0 9848:O4|@25,@394,@9849,0 9849:O3|3,4,@9850 9850:O6|@15281,@940,@9851,@9643,@9644,@9632 9851:O2|@15289,@9852 9852:O2|@9854,@9853 9853:O2|@9855,@971 9854:O2|@1013,@9637 9855:O2|@1262,@9856 9856:O3|1,@9857,@952 9857:O8|@4330,@4329,0,0,@1437,0,0,1 9858:O2|12,@9859 9859:O8|@921,@9860,0,0,@3843,1,0,1 9860:S10|6e6f457175616c697479 9861:O1|@18013 9862:S30|545950454944434f444528292e7072696e746572466f7254797065283329 9863:S11|7072696e742d656d707479 9864:S42|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f6465283229 9865:O2|@1438,@9866 9866:O2|@9867,0 9867:O3|6,@5127,0 9868:O3|20,@9865,1 9869:O1|@18014 9870:O2|@915,@9871 9871:O2|@915,@4005 9872:O3|20,@9870,1 9873:O2|@1438,@9874 9874:O2|@9875,0 9875:O3|6,@450,0 9876:O3|20,@9873,1 9877:O1|@18016 9878:O2|@1438,@9879 9879:O2|@9880,0 9880:O3|6,@448,0 9881:O3|20,@9878,1 9882:O1|@18017 9883:S14|7072696e742d6c6162656c6c6564 9884:O1|@18019 9885:O1|@18020 9886:S56|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283129 9887:S59|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283229283129 9888:O1|@18022 9889:O1|@18027 9890:S53|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f646528322961735265636f7264283229 9891:O4|@72,@1979,0,@9892 9892:O5|@9514,565,0,565,0 9893:O2|@9894,0 9894:O4|3,@1273,@915,@3754 9895:O2|0,@366 9896:O1|@18023 9897:O1|@18024 9898:O2|@1438,@9899 9899:O2|@9900,0 9900:O3|6,@369,0 9901:O3|20,@9898,1 9902:O1|@18025 9903:O1|@18026 9904:O1|@18028 9905:O2|@1438,@9906 9906:O2|@9907,0 9907:O3|6,@1158,0 9908:O3|20,@9905,1 9909:O1|@18029 9910:O1|@18032 9911:O1|@18033 9912:O1|@18034 9913:O1|@18035 9914:S70|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832296d616b655072696e7465724964283129636f6465466f724964283129 9915:S6|7072696e742d 9916:O1|@18036 9917:O1|@18037 9918:O4|@16,@815,@9920,@9919 9919:O5|@9514,470,0,470,0 9920:S48|7072696e746572466f72547970653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 9921:O2|@1438,@9922 9922:O2|@9923,0 9923:O3|6,@9924,0 9924:S7|3c656d7074793e 9925:O3|20,@9921,1 9926:O1|@18038 9927:O2|@749,@749 9928:S49|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f616447656e6572616c283129 9929:O1|@18041 9930:S48|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283129283129 9931:O1|@18042 9932:S45|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283229 9933:S4|636f6e76 9934:S42|56414c55455f4f505328292e6170706c7946756e6374696f6e283729666f6c6c6f775479706573283129 9935:O4|103,@861,@9937,@9936 9936:O5|@9533,1115,0,1115,0 9937:S52|496e76616c6964207479706520286e6f742061207479706520636f6e737472756374696f6e2920286164644f7665726c6f616429 9938:O4|103,@861,@9940,@9939 9939:O5|@9533,1113,0,1113,0 9940:S56|43616e6e6f7420696e7374616c6c20616e206f7665726c6f61642077697468696e206120737472756374757265206f722066756e63746f72 9941:O4|@16,@815,@9943,@9942 9942:O5|@9533,1060,0,1060,0 9943:S14|4f7665726c6f616420457175616c 9944:O4|@18045,@9622,@9745,@9846 9945:S8|657175616c697479 9946:S31|545950454944434f444528292e657175616c697479466f7254797065283329 9947:O1|@18047 9948:O1|@18048 9949:S45|545950454944434f444528292e657175616c697479466f7254797065283329726573756c74436f64652d283129 9950:O1|@18049 9951:O4|@16,@815,@9953,@9952 9952:O5|@9533,1073,0,1073,0 9953:S17|4f7665726c6f6164204e6f74457175616c 9954:O4|@16,@815,@9956,@9955 9955:O5|@9533,1086,0,1086,0 9956:S16|4f7665726c6f61642054797065446570 9957:O1|@18050 9958:O4|@16,@815,@9961,@9960 9959:S37|56414c55455f4f505328292e6765744f7665726c6f6164496e7374616e6365283429283129 9960:O5|@9533,683,0,683,0 9961:S28|6765744f7665726c6f6164496e7374616e63653a204d697373696e67 9962:O1|@18052 9963:S28|5052494e545f5441424c4528292e6765744f7665726c6f6164283329 9964:S41|5052494e545f5441424c4528292e6765744f7665726c6f61642833297365617263684c697374283129 9965:O1|@18053 9966:O4|@16,@815,@9968,@9967 9967:O5|@9533,1003,0,1003,0 9968:S42|4f7665726c6f6164656420416464507265747479202d2077726f6e6720696e7374616e63652074797065 9969:O1|@18054 9970:S36|56414c55455f4f505328292e636f646556616c283629666f6c6c6f775479706573283129 9971:O1|@18056 9972:O1|@18057 9973:S14|6164645072657474795072696e74 9974:O1|@18058 9975:O2|3,@9977 9976:S27|56414c55455f4f505328292e636f646556616c2836295f2d283129 9977:S133|6164645072657474795072696e7420656c656d656e742066756e6374696f6e73206d75737420686176652074797065202761202a20696e74202d3e207072657474792c202762202a20696e74202d3e207072657474792c202e2e2e2077697468206f6e652066756e6374696f6e20666f722065616368207479706520706172616d65746572 9978:O1|@18059 9979:O2|3,@9984 9980:S26|56414c55455f4f505328292e636865636b505054797065283629 9981:S13|417267756d656e7420666f7220 9982:O2|3,@9983 9983:S14|526571756972656420747970653a 9984:S14|417267756d656e7420747970653a 9985:O3|6,@9986,0 9986:O1|@18060 9987:O4|103,@861,@9990,@9989 9988:S25|56414c55455f4f505328292e636f646556616c283629283129 9989:O5|@9533,999,0,999,0 9990:S68|6164645072657474795072696e743a2054686520617267756d656e74207479706520776173206e6f7420612073696d706c65207479706520636f6e737472756374696f6e 9991:O2|@1271,0 9992:O1|@18061 9993:S7|61646450502d31 9994:O2|@9995,0 9995:O4|11,@3983,1,0 9996:O1|@18062 9997:O1|@18063 9998:O1|@18064 9999:S7|61646450502d32 10000:O1|@18065 10001:O1|@18066 10002:O1|@18067 10003:S5|6164645050 10004:O1|@18068 10005:O3|6,@10006,0 10006:O1|@18069 10007:O4|103,@861,@9990,@10008 10008:O5|@9533,870,0,870,0 10009:S12|416464507265747479285029 10010:O3|6,@10011,0 10011:O1|@18070 10012:O4|103,@861,@10015,@10014 10013:S31|56414c55455f4f505328292e636f646556616c2836296765744c6f63283129 10014:O5|@9533,1009,0,1009,0 10015:S68|546865207370656369616c2066756e6374696f6e20506f6c794d4c2e736f757263654c6f636174696f6e2063616e6e6f74206265207573656420617320612076616c7565 10016:O4|@16,@815,@10018,@10017 10017:O5|@9533,864,0,864,0 10018:S42|4f7665726c6f6164656420476574507265747479202d2077726f6e6720696e7374616e63652074797065 10019:O1|@18072 10020:S9|676574507265747479 10021:O4|@16,@815,@10023,@10022 10022:O5|@9533,849,0,849,0 10023:S43|4f7665726c6f61646564204d616b65537472696e67202d2077726f6e6720696e7374616e63652074797065 10024:O2|@10025,0 10025:O3|20,@10026,0 10026:O2|@916,@10027 10027:O2|@10028,0 10028:O3|6,10000,0 10029:O3|6,@4990,0 10030:O1|@18074 10031:S12|6d616b65737472696e672829 10032:O1|@18075 10033:O3|6,@388,0 10034:O1|@18076 10035:S13|6d616b65737472696e67285029 10036:O4|@16,@815,@10038,@10037 10037:O5|@9533,822,0,822,0 10038:S38|4f7665726c6f61646564205072696e74202d2077726f6e6720696e7374616e63652074797065 10039:O1|@18077 10040:O1|@18079 10041:S7|7072696e742829 10042:O1|@18080 10043:O2|@4330,0 10044:O1|@18081 10045:O1|@18082 10046:S8|7072696e74285029 10047:O4|@16,@815,@10049,@10048 10048:O5|@9533,758,0,758,0 10049:S16|636f646556616c202d20466f726d616c 10050:O1|@18084 10051:O1|@18085 10052:O1|@18086 10053:S32|56414c55455f4f505328292e636f646556616c2836296c6f6164566172283129 10054:O1|@18091 10055:O1|@18092 10056:S41|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629 10057:O1|@18096 10058:S51|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629666f6c64496473283329 10059:O1|@18093 10060:O1|@18097 10061:O1|@18098 10062:O1|@18099 10063:O2|@18100,@10064 10064:O2|@18193,@10063 10065:O1|@18192 10066:S47|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f6465283629 10067:O1|@18103 10068:O1|@18104 10069:S47|535452554354555245535f28292e67656e636f6465537472756374732833296c6f61644f7061717565496473283329 10070:O5|@18105,@4327,@9622,@9745,@9846 10071:S14|7072696e742d68656c7065722829 10072:S32|545950454944434f444528292e636f646547656e657261746976654964283529 10073:O1|@18106 10074:O1|@18107 10075:S42|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283129 10076:O1|@18108 10077:O1|@18109 10078:S45|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283129 10079:O1|@18110 10080:O1|@18111 10081:S44|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283129 10082:O1|@18112 10083:S47|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832292d45 10084:O1|@18114 10085:O1|@18120 10086:S45|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229 10087:S54|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832296d6b41646472283129 10088:O1|@18117 10089:S56|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229617267732d283129283129 10090:O1|@18119 10091:O1|@18122 10092:O1|@18123 10093:S45|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283229283129 10094:S10|657175616c6974792829 10095:O1|@18125 10096:O1|@18126 10097:S48|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283229283129 10098:S11|626f7865646e6573732829 10099:O1|@18128 10100:O1|@18129 10101:S47|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283229283129 10102:S6|73697a652829 10103:O1|@18130 10104:O1|@18131 10105:O4|@16,@815,@10107,@10106 10106:O5|@9514,1164,0,1164,0 10107:S15|416c726561647920636865636b6564 10108:O1|@18134 10109:O1|@18135 10110:O1|@18136 10111:O1|@18137 10112:O4|11,@239,0,@10114 10113:S53|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835292d45 10114:O5|@8762,2792,0,2792,0 10115:O1|@18138 10116:O1|@18139 10117:S51|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e73283529 10118:O1|@18142 10119:S71|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d61746368537562537472756374757265283329 10120:O1|@18143 10121:O1|@18172 10122:S85|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e283329 10123:O1|@18144 10124:O1|@18148 10125:S96|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296c6f6164436f6465283129 10126:O2|@916,@4005 10127:O1|@18147 10128:O2|@921,@4005 10129:O1|@18152 10130:S29|56414c55455f4f505328292e636f6465457846756e6374696f6e283629 10131:O1|@18150 10132:O1|@18151 10133:O1|@18153 10134:O1|@18154 10135:O2|@18155,@192 10136:S29|706f6c79436f6d70696c65722832297072696e7444657074682d283129 10137:O1|@18156 10138:O5|0,0,0,@10148,@10147 10139:S17|7072696e742d6d61746368526573756c74 10140:O5|0,0,0,@10142,@10141 10141:O2|@10145,0 10142:O2|@10143,0 10143:O2|0,@10144 10144:O5|@4259,1869,1869,0,0 10145:O2|3,@10146 10146:S11|53696d706c654572726f72 10147:O2|@10151,0 10148:O2|@10149,0 10149:O2|0,@10150 10150:O5|@4259,1870,1870,0,0 10151:O2|3,@10152 10152:S20|54797065436f6e7374727563746f724572726f72 10153:O3|@18157,@5013,77 10154:O1|@18160 10155:S28|506f6c794d4c2e7072657474794d61726b7570283129283129283129 10156:O1|@18158 10157:S22|506f6c794d4c2e7072657474795072696e742d283129 10158:O1|@18159 10159:O1|@18161 10160:S22|506f6c794d4c2e7072657474794d61726b7570283529 10161:O1|@18163 10162:S31|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329 10163:O1|@18162 10164:S32|506f6c794d4c2e7072657474794d61726b757028352967657453697a65283229 10165:S41|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329646f5072696e74283329 10166:O4|@16,@815,@10168,@10167 10167:O5|@8762,2608,0,2608,0 10168:S27|756e6966795479706573206661696c656420696e20706173732033 10169:O1|@18164 10170:S97|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e28332964657374566172732d283129 10171:O1|@18165 10172:O1|@18167 10173:S118|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d61726741646472732d283129283129 10174:S113|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d6d6b4164647273283129 10175:O1|@18170 10176:S3|285029 10177:O1|@18171 10178:O1|@18173 10179:S61|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f646528362970726f63657373426f6479283129 10180:O1|@18174 10181:O1|@18181 10182:S49|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229 10183:O1|@18175 10184:O4|@16,@815,@10187,@10186 10185:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229747970655661724d61702d283129 10186:O5|@8762,2898,0,2898,0 10187:S10|747970655661724d6170 10188:O1|@18176 10189:O17|@195,@196,@197,@198,@10194,@189,@294,@1655,@1659,@199,@188,@194,@5036,0,@191,@190,@1664 10190:S60|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f6164537472646563732832296c6f616456616c73283229 10191:O1|@18177 10192:O1|@18178 10193:O1|@18179 10194:O1|@18180 10195:S18|4c45585f28292e6e756c6c4c65782d283129 10196:O1|@18182 10197:O1|@18183 10198:O1|@18184 10199:O4|11,@239,0,@10200 10200:O5|@8762,2780,0,2780,0 10201:O1|@18185 10202:O1|@18186 10203:O1|@18187 10204:O1|@18188 10205:O1|@18190 10206:O4|@16,@815,@10208,@10207 10207:O5|@8762,2726,0,2726,0 10208:S37|6d616b6553656c65637465643a204e6f7420426f756e64206f72206e6f7420466f726d616c 10209:O4|@16,@815,@10211,@10210 10210:O5|@8762,2735,0,2735,0 10211:S22|46756e63746f724170706c3a20756e646566696e6564 10212:O1|@18191 10213:O1|@18569 10214:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929 10215:S33|434f444547454e5f50415253455452454528292e67656e636f6465283829283129 10216:O3|@18195,@10430,@10217 10217:O2|@18527,@10562 10218:O1|@18306 10219:S35|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529 10220:O1|@18196 10221:O1|@18197 10222:O1|@18198 10223:O1|@18200 10224:O1|@18199 10225:O1|@18201 10226:O1|@18204 10227:S48|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529646563436f6e73747273283429 10228:O1|@18202 10229:O4|@16,@815,@10231,@10230 10230:O5|@10232,1034,0,1034,0 10231:S18|646563436f6e733a204e6f74206c6f63616c 10232:S51|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f434f444547454e5f5041525345545245452e736d6c 10233:O1|@18203 10234:O6|@18205,@9547,@4327,@9622,@9745,@9846 10235:O1|@18259 10236:S39|545950454944434f444528292e637265617465446174617479706546756e6374696f6e73283529 10237:O1|@18206 10238:O1|@18207 10239:O1|@18208 10240:S36|545950454944434f444528292e657175616c697479466f72446174617479706573283429 10241:O1|@18232 10242:S58|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229 10243:O1|@18209 10244:O1|@18211 10245:S93|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d617267732d283129283129 10246:O1|@18213 10247:S91|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d6d6b41646472283129 10248:O1|@18216 10249:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283129 10250:O1|@18217 10251:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283329 10252:O1|@18218 10253:O1|@18224 10254:S75|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f72446174617479706528322970726f63657373436f6e73747273283129 10255:O1|@18219 10256:O1|@18220 10257:O4|@16,@815,@10259,@10258 10258:O5|@4259,1576,0,1576,0 10259:S19|4e6f7420612066756e6374696f6e2074797065 10260:O1|@18221 10261:S41|545950455f5452454528292e636f6e7374727563746f72526573756c74283229676574417267283129 10262:O1|@18223 10263:S3|65712d 10264:S3|283229 10265:O1|@18225 10266:O1|@18226 10267:O1|@18227 10268:O1|@18228 10269:S6|283229285029 10270:O1|@18229 10271:O4|@16,@815,@10273,@10272 10272:O5|@9514,138,0,138,0 10273:S19|6765744361636865645479706556616c756573 10274:O1|@18230 10275:O1|@18231 10276:O1|@18233 10277:O4|0,@1100,@921,@915 10278:O1|@18234 10279:O1|@18235 10280:O1|@18258 10281:S52|545950454944434f444528292e637265617465446174617479706546756e6374696f6e732835297365745072696e746572283429 10282:O1|@18236 10283:O1|@18256 10284:S34|545950454944434f444528292e7072696e746572466f724461746174797065283329 10285:O1|@18238 10286:O1|@18240 10287:O1|@18244 10288:S85|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429 10289:O1|@18241 10290:O1|@18242 10291:S96|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429617267732d283129283129 10292:S81|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b41646472283129 10293:O2|@1438,@10294 10294:O2|@10295,0 10295:O3|6,@365,0 10296:O3|20,@10293,1 10297:O2|@915,@10128 10298:O3|20,@10297,1 10299:O2|@1438,@10300 10300:O2|@10301,0 10301:O3|6,@366,0 10302:O3|20,@10299,1 10303:O4|5,@10305,@10304,@921 10304:O4|5,@10308,@10307,@921 10305:O3|21,@10306,9 10306:O3|21,@1276,5 10307:O3|21,@10311,9 10308:O3|21,@10309,9 10309:O3|21,@10310,5 10310:O4|11,@1276,1,1 10311:O4|5,@10313,@10312,@921 10312:O3|15,@10317,@10316 10313:O4|19,3,@10314,4 10314:O4|11,@10315,0,0 10315:O4|11,@1276,0,1 10316:O4|5,@10321,@915,@10320 10317:O2|@10318,0 10318:O4|1,0,1,@10319 10319:O4|11,@10315,1,1 10320:O4|5,@10323,@915,@10322 10321:O4|3,@1277,@10295,@1018 10322:O4|3,@1277,@10324,@1018 10323:O4|3,@1277,@9880,@1018 10324:O3|6,@416,0 10325:O2|@10326,0 10326:O4|1,0,0,@4684 10327:O1|@18246 10328:S12|706172656e74686573697365 10329:O1|@18247 10330:O4|3,@1273,@915,@3749 10331:S59|545950454944434f444528292e7072696e746572466f7244617461747970652833297072696e746572466f72436f6e7374727563746f7273283129 10332:S16|4e6f20636f6e7374727563746f72733a 10333:O5|@9514,1053,0,1053,0 10334:O1|@18248 10335:O1|@18249 10336:O1|@18250 10337:O2|@10338,0 10338:O4|3,@1273,@915,@3754 10339:O1|@18252 10340:O2|@1438,@10341 10341:O2|@10342,0 10342:O3|6,@1314,0 10343:O3|20,@10340,1 10344:O1|@18253 10345:O1|@18254 10346:O1|@18255 10347:O1|@18257 10348:S18|7072696e742d7072696e7464656661756c74 10349:O1|@18260 10350:O1|@18261 10351:O1|@18262 10352:O1|@18263 10353:S57|434f444547454e5f50415253455452454528292e636f646553657175656e63652835296e657744656275677c6c6f63616c446563732d283129 10354:O1|@18264 10355:O1|@18265 10356:O1|@18266 10357:O1|@18267 10358:O1|@18268 10359:O1|@18269 10360:O1|@18270 10361:O4|@18271,@1555,@1465,@10368 10362:O4|@16,@815,@10364,@10363 10363:O5|@10232,962,0,962,0 10364:S6|6c7641646472 10365:O4|@16,@815,@10367,@10366 10366:O5|@10232,982,0,982,0 10367:S6|636f64654578 10368:O5|5,@10374,@1510,@1507,@885 10369:S26|44415441545950455f52455028292e6d6b45784964656e283329 10370:O4|101,@4269,0,@10372 10371:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b65536f6d652d283129 10372:O5|@1128,508,0,508,0 10373:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b654e6f6e652d283129 10374:O2|@10375,0 10375:O3|2,@10376,@4685 10376:O3|3,@10377,@1334 10377:O2|@10379,@10378 10378:O2|@10380,0 10379:O2|@1339,@3699 10380:O2|@1341,@994 10381:O1|@18274 10382:O1|@18275 10383:O1|@18276 10384:O1|@18277 10385:O1|@18279 10386:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283129 10387:O1|@18280 10388:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283229 10389:O1|@18281 10390:O1|@18282 10391:O1|@18283 10392:O1|@18284 10393:O1|@18285 10394:O1|@18286 10395:S53|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529636865636b56617273283129283129283129 10396:O1|@18288 10397:S40|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229 10398:S25|29206f7574736964652069747320646566696e6974696f6e2e 10399:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283229 10400:S44|54797065206f662065787072657373696f6e20636f6e7461696e73206c6f63616c2064617461747970652028 10401:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129 10402:S56|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129283129 10403:O1|@18293 10404:O3|@1951,@10406,0 10405:S34|44454255474745525f28292e75706461746544656275674c6f636174696f6e283429 10406:O1|@3539 10407:O2|@18294,@10408 10408:O3|13,@1639,@10411 10409:O1|@18295 10410:S29|44454255474745525f28292e627265616b506f696e74436f6465283529 10411:O3|@10412,@1638,0 10412:O3|6,@95,0 10413:O1|@18296 10414:O1|@18297 10415:O1|@18298 10416:O1|@18301 10417:S61|434f444547454e5f50415253455452454528292e636f646552656356616c42696e64696e677328332976616c42696e64546f4676616c42696e64283229 10418:O4|@16,@815,@10420,@10419 10419:O5|@10232,1535,0,1535,0 10420:S10|6765744d617463686573 10421:O1|@18299 10422:O1|@18300 10423:O4|@16,@815,@10425,@10424 10424:O5|@10232,1554,0,1554,0 10425:S10|6d6b4656616c42696e64 10426:O1|@18302 10427:O1|@18303 10428:O1|@18304 10429:O1|@18305 10430:O2|@18307,@10431 10431:O3|@18390,@10562,@7112 10432:O1|@18389 10433:S38|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429 10434:O1|@18308 10435:S53|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429636865636b56617273283129283129 10436:O1|@18310 10437:O4|@16,@815,@10439,@10438 10438:O5|@10232,1149,0,1149,0 10439:S15|73657456616c756541646472657373 10440:O1|@18311 10441:O1|@18312 10442:O1|@18314 10443:S48|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429676574506f6c79283129 10444:S41|545950454944434f444528292e547970655661724d61702e6d61705479706556617273283129283129 10445:O1|@18315 10446:O1|@18382 10447:S52|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329 10448:O4|@16,@815,@10450,@10449 10449:O5|@10232,1204,0,1204,0 10450:S23|6261646c7920666f726d65642070617273652074726565 10451:O1|@18316 10452:O1|@18317 10453:O1|@18320 10454:S33|434f444547454e5f50415253455452454528292e7475706c655769647468283129 10455:O10|@18318,@38,@29,@1227,@3475,@1166,@3965,@36,@34,@82 10456:S27|545950455f5452454528292e6973466c6f6174696e675074283129 10457:O4|@16,@815,@10459,@10458 10458:O5|@4259,97,0,97,0 10459:S33|74634571756976616c656e743a204e6f74206120747970652066756e6374696f6e 10460:O4|@16,@815,@10462,@10461 10461:O5|@4259,3042,0,3042,0 10462:S26|656e7472794e756d626572202d206e6f742061207265636f7264 10463:O1|@18319 10464:O4|@16,@815,@10466,@10465 10465:O5|@10232,176,0,176,0 10466:S26|7475706c6557696474683a20656d707479206c6f63616c646563 10467:O1|@18321 10468:O1|@18322 10469:O1|@18323 10470:O1|@18328 10471:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6541726773283229 10472:O1|@18324 10473:O1|@18325 10474:O1|@18326 10475:O1|@18327 10476:O4|@16,@815,@10478,@10477 10477:O5|@10232,125,0,125,0 10478:S10|6d6b4172675475706c65 10479:O1|@18330 10480:O1|@18331 10481:O1|@18332 10482:S71|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296172674c6973742d6d616b6541726773283229 10483:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329666e4d6b41646472283129 10484:O1|@18334 10485:S67|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e4465637328332961726741646472732d283129283129 10486:O1|@18336 10487:S87|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329616464457874726173283229636865636b506f6c796d6f72706869736d283229283129 10488:O1|@18337 10489:O1|@18338 10490:O1|@18339 10491:S73|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296372656174654170706c69636174696f6e73283429 10492:O4|@16,@815,@10494,@10493 10493:O5|@10232,1368,0,1368,0 10494:S31|6372656174654d6174636865733a204d697373696e67207479706520766172 10495:O1|@18341 10496:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329636f6465426f6479283129 10497:O1|@18342 10498:S29|434f44455452454528292e6d6b536574436f6e7461696e65722d283329 10499:O4|@18343,@10524,@10527,@10500 10500:O3|13,@1639,@10530 10501:O1|@18365 10502:S35|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029 10503:O1|@10504 10504:O3|6,5,0 10505:O1|@18344 10506:O1|@18345 10507:O1|@18346 10508:O1|@18347 10509:O1|@18348 10510:O1|@18351 10511:O1|@18352 10512:O1|@18353 10513:O1|@18354 10514:O1|@18355 10515:O1|@18356 10516:S57|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e7472792835292d45 10517:O1|@18357 10518:S55|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e747279283529 10519:O1|@18360 10520:O1|@18361 10521:O1|@18362 10522:O1|@18363 10523:O1|@18364 10524:O3|13,@1639,@10525 10525:O3|@10526,@1638,0 10526:O3|6,@93,0 10527:O3|13,@1639,@10528 10528:O3|@10529,@1638,0 10529:O3|6,@94,0 10530:O3|@10531,@1638,0 10531:O3|6,@92,0 10532:O4|@16,@815,@10534,@10533 10533:O5|@10232,1425,0,1425,0 10534:S23|417267756d656e74206c656e6774682070726f626c656d 10535:O1|@18366 10536:O1|@18367 10537:O1|@18368 10538:O1|@18370 10539:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296261736546756e2d283129 10540:O1|@18371 10541:O1|@18381 10542:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e73283529 10543:O1|@18375 10544:S75|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e732835296e6578745061726d73283129 10545:O1|@18374 10546:O1|@18376 10547:O1|@18377 10548:O1|@18378 10549:O1|@18379 10550:O1|@18380 10551:O1|@18383 10552:O1|@18385 10553:S59|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129 10554:O1|@18384 10555:O1|@18388 10556:S68|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129757064617465283229 10557:O1|@18386 10558:O1|@18387 10559:S26|2920686173206e6f74206265656e207265666572656e6365642e 10560:S46|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c7565283229 10561:S18|56616c7565206964656e7469666965722028 10562:O5|@18475,@10431,@7112,@10216,@10752 10563:O1|@18474 10564:S32|434f444547454e5f50415253455452454528292e636f64654d61746368283529 10565:O1|@18391 10566:S41|434f444547454e5f50415253455452454528292e6765745661726961626c6573496e50617474283229 10567:O4|101,@4269,0,@10568 10568:O5|@10232,322,0,322,0 10569:O1|@18397 10570:S56|434f444547454e5f50415253455452454528292e636f64654d61746368283529636f64655061747465726e45787072657373696f6e283129 10571:O1|@18395 10572:O1|@18396 10573:O4|@16,@815,@10575,@10574 10574:O5|@10232,374,0,374,0 10575:S7|6d616b65417267 10576:O1|@18398 10577:O1|@18452 10578:S37|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e73283729 10579:O3|0,@1627,0 10580:O1|@18399 10581:O1|@18434 10582:S28|4d415443485f434f4d50494c455228292e6275696c64416f74283529 10583:O1|@18400 10584:O1|@18406 10585:S30|56414c55455f4f505328292e676574506f6c796d6f72706869736d283329 10586:O1|@18401 10587:O1|@18402 10588:O1|@18404 10589:O1|@18407 10590:S36|4d415443485f434f4d50494c455228292e6275696c64416f74283529646f417267283129 10591:O1|@18409 10592:O4|@16,@815,@10601,@10600 10593:S31|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429 10594:O1|@18410 10595:S30|4d415443485f434f4d50494c455228292e74657374416363657373283129 10596:O1|@18411 10597:O1|@18412 10598:S42|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429616464436c697374283129 10599:S24|4d415443485f434f4d50494c455228292e706c7573283229 10600:O5|@10602,401,0,401,0 10601:S37|6164644578636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 10602:S48|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4d415443485f434f4d50494c45522e736d6c 10603:O1|@18413 10604:O4|@16,@815,@10609,@10608 10605:S29|4d415443485f434f4d50494c455228292e616464436f6e737472283629 10606:O1|@18414 10607:S40|4d415443485f434f4d50494c455228292e616464436f6e737472283629616464436c697374283129 10608:O5|@10602,316,0,316,0 10609:S35|616464436f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 10610:O1|@18415 10611:O2|30,@5229 10612:O1|@18417 10613:O1|@18420 10614:S30|4d415443485f434f4d50494c455228292e61646444656661756c74283229 10615:O1|@18418 10616:O1|@18419 10617:S31|43616e27742066696e642061206669786564207265636f726420747970652e 10618:O4|@16,@815,@10462,@10619 10619:O5|@4259,3037,0,3037,0 10620:O1|@18421 10621:O1|@18422 10622:O4|101,@4269,0,@10626 10623:S26|545950455f5452454528292e656e7472794e756d626572283229 10624:O4|@16,@815,@10462,@10625 10625:O5|@4259,3023,0,3023,0 10626:O5|@4259,3011,0,3011,0 10627:O1|@18423 10628:O4|@16,@815,@10631,@10630 10629:S39|4d415443485f434f4d50494c455228292e6275696c64416f742835296d657267656e2833292829 10630:O5|@10602,472,0,472,0 10631:S6|6d657267656e 10632:O1|@18424 10633:S42|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229 10634:O4|@16,@815,@10637,@10636 10635:S54|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c6973742832296d6b436f6e73506174283129 10636:O5|@10602,539,0,539,0 10637:S34|6d6b436f6e735061743a206261646c792d666f726d65642070617273652d74726565 10638:S45|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229283129 10639:O1|@18427 10640:O4|@16,@815,@10643,@10642 10641:S40|4d415443485f434f4d50494c455228292e6275696c64416f74283529657175616c6974792d283129 10642:O5|@10602,559,0,559,0 10643:S15|657175616c697479466f7254797065 10644:S40|4d415443485f434f4d50494c455228292e6275696c64416f742835296c697456616c75652d283129 10645:O1|@18429 10646:S4|20746f20 10647:S30|56414c55455f4f505328292e6765744c69746572616c56616c7565283429 10648:O1|@18430 10649:S22|436f6e76657273696f6e20657863657074696f6e2028 10650:S26|2920726169736564207768696c6520636f6e76657274696e6720 10651:S43|4f766572666c6f7720657863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 10652:O4|1,@649,0,@10653 10653:O5|@9533,1286,0,1286,0 10654:S34|457863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 10655:O1|@18431 10656:O4|@16,@815,@10661,@10660 10657:S30|4d415443485f434f4d50494c455228292e61646453636f6e737472283529 10658:O1|@18432 10659:S41|4d415443485f434f4d50494c455228292e61646453636f6e737472283529616464436c697374283129 10660:O5|@10602,349,0,349,0 10661:S36|61646453636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 10662:O1|@18433 10663:O4|@16,@815,@10665,@10664 10664:O5|@10602,446,0,446,0 10665:S31|7061747465726e206973206e6f742061207475706c6520696e20612d6f2d74 10666:O1|@18435 10667:S45|4d415443485f434f4d50494c455228292e636f6e7461696e734e6f6e436f6e7374457863657074696f6e283129 10668:O1|@18436 10669:S26|4d415443485f434f4d50494c455228292e66726f6d2832292829 10670:O1|@18437 10671:S47|4d415443485f434f4d50494c455228292e6275696c645061747465726e436f64652833296669726550617474283129 10672:O1|@18438 10673:O1|@18450 10674:S28|4d415443485f434f4d50494c455228292e70617474436f6465283529 10675:O1|@18439 10676:S29|4d415443485f434f4d50494c455228292e696e74657273656374283229 10677:O1|@18440 10678:O1|@18441 10679:S43|4d415443485f434f4d50494c455228292e70617474436f64652835296d616b655061747454657374283329 10680:O1|@18442 10681:S29|4d415443485f434f4d50494c455228292e6d616b654e61697665283229 10682:O1|@18445 10683:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655061747473283129 10684:O1|@18443 10685:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655465737473283229 10686:O1|@18444 10687:S24|4d415443485f434f4d50494c455228292e64696666283229 10688:O1|@18446 10689:O1|@18447 10690:S48|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283429 10691:O1|@18449 10692:S29|4d415443485f434f4d50494c455228292e706174744465707468283229 10693:S51|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283129283129 10694:O3|6,101,0 10695:S48|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e732837296669726550617474283129 10696:O4|@16,@815,@10698,@10697 10697:O5|@10602,1179,0,1179,0 10698:S33|636f646544656661756c742063616c6c6564206275742065786861757374697665 10699:O3|6,@3693,0 10700:O1|@18453 10701:S37|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429 10702:O1|@18462 10703:S49|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d61746368283329 10704:O4|@16,@815,@10706,@10705 10705:O5|@10602,609,0,609,0 10706:S7|73657441646472 10707:O1|@18454 10708:O1|@18461 10709:S73|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d6d616b655061747465726e73283129 10710:O4|@16,@815,@10712,@10711 10711:O5|@10602,1083,0,1083,0 10712:S16|6d616b6554657374733a20656d707479 10713:O1|@18455 10714:O1|@18456 10715:S29|4d415443485f434f4d50494c455228292e6d616b654c6f616473283529 10716:O1|@18459 10717:S35|4d415443485f434f4d50494c455228292e636f6e7374727563746f72436f6465283429 10718:O1|@18457 10719:S24|56414c55455f4f505328292e6d616b654775617264283529 10720:O4|@16,@815,@10722,@10721 10721:O5|@9533,1207,0,1207,0 10722:S9|6d616b654775617264 10723:S33|56414c55455f4f505328292e6d616b654775617264283529746573746572283129 10724:S26|56414c55455f4f505328292e6d616b65496e7665727365283529 10725:O4|@16,@815,@10727,@10726 10726:O5|@9533,1234,0,1234,0 10727:S11|6d616b65496e7665727365 10728:S39|56414c55455f4f505328292e6d616b65496e7665727365283529676574496e7665727365283129 10729:S34|4d415443485f434f4d50494c455228292e6d616b654e616976655465737473283429 10730:O4|@16,@815,@10733,@10732 10731:S70|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d646f5061747465726e283229 10732:O5|@10602,1060,0,1060,0 10733:S21|646f5061747465726e3a206e6f7420617420656e64 10734:S31|48616e646c6572206361746368657320616c6c20657863657074696f6e732e 10735:S27|4d61746368657320617265206e6f7420657868617573746976652e 10736:O1|@18463 10737:S14|20697320726564756e64616e742e 10738:S50|434f444547454e5f50415253455452454528292e636f64654d617463682835297265706f7274526564756e64616e74283229 10739:S8|5061747465726e20 10740:O1|@18464 10741:O1|@18473 10742:S41|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729 10743:S53|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729666e4d6b4164647273283129 10744:O1|@18467 10745:O1|@18468 10746:O1|@18469 10747:O4|@16,@815,@10706,@10748 10748:O5|@10232,449,0,449,0 10749:O1|@18470 10750:O1|@18471 10751:O1|@18472 10752:O2|@18512,@10431 10753:O1|@18511 10754:S35|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329 10755:O1|@18476 10756:O1|@18477 10757:O1|@18478 10758:O1|@18480 10759:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f64654c697374283329 10760:O4|@16,@815,@10762,@10761 10761:O5|@10232,695,0,695,0 10762:S22|4578705365713a20656d7074792073657175656e6365 10763:O1|@18479 10764:O1|@18482 10765:S47|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329676574436f6e737472283129 10766:O1|@18484 10767:O4|@16,@815,@10770,@10769 10768:S38|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329283129 10769:O5|@10232,591,0,591,0 10770:S17|6d697373696e6720696e207265636f7264 10771:O1|@18485 10772:O1|@18490 10773:S45|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c697374283329 10774:S54|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c6973742833296c6f6f6b466e283129 10775:O1|@18489 10776:O4|@16,@815,@10778,@10777 10777:O5|@10232,630,0,630,0 10778:S22|4c6973743a2062616420656c656d656e742074797065 10779:O1|@18491 10780:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129 10781:S58|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129676574436f6e737472283129 10782:O1|@18495 10783:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283129 10784:O1|@18500 10785:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329 10786:O1|@18496 10787:O1|@18499 10788:S60|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329636f64654c697374283329 10789:O1|@18497 10790:O1|@18498 10791:O4|@16,@815,@2604,@10792 10792:O5|@1056,421,0,421,0 10793:O4|@16,@815,@2607,@10794 10794:O5|@1056,423,0,423,0 10795:O1|@18504 10796:O1|@18505 10797:O1|@18506 10798:O1|@18507 10799:O4|@16,@815,@10801,@10800 10800:O5|@10232,555,0,555,0 10801:S20|636f646567656e3a20556e617279207475706c65 10802:O1|@18508 10803:O1|@18509 10804:O1|@18510 10805:O1|@18526 10806:S33|434f444547454e5f50415253455452454528292e636f64654c616d626461283429 10807:O4|@16,@815,@10809,@10808 10808:O5|@10232,797,0,797,0 10809:S42|676574466e426f64793a206e6f74206120636f6e73747261696e656420666e2d65787072657373696f6e 10810:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429666e4d6b41646472283129 10811:O4|@16,@815,@10813,@10812 10812:O5|@10232,813,0,813,0 10813:S43|636f64654c616d6264613a20626f6479206f6620666e206973206e6f74206120636c61757365206c697374 10814:O1|@18516 10815:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429636f6465416c7473283129 10816:O1|@18518 10817:O1|@18519 10818:O1|@18520 10819:O1|@18521 10820:O1|@18522 10821:O1|@18525 10822:O1|@18528 10823:S44|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329 10824:O1|@18557 10825:S58|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229 10826:O1|@18529 10827:O1|@18530 10828:O1|@18531 10829:O1|@18532 10830:O1|@18534 10831:S77|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229706f6c7956617273466f7256616c732d283129 10832:O1|@18535 10833:S106|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d666e4d6b41646472283129 10834:O1|@18538 10835:S110|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d61726741646472732d283129283129 10836:O1|@18542 10837:O1|@18543 10838:O1|@18544 10839:O1|@18545 10840:S31|4d415443485f434f4d50494c455228292e636f646542696e64696e67283429 10841:O4|@16,@815,@10843,@10842 10842:O5|@10602,1124,0,1124,0 10843:S42|636f646542696e64696e673a2073686f756c64206265206e61697665207061747465726e206d61746368 10844:O3|6,@3688,0 10845:O3|6,100,0 10846:S26|5061747465726e206973206e6f7420657868617573746976652e 10847:O1|@18546 10848:O1|@18547 10849:O1|@18548 10850:O1|@18549 10851:O4|@16,@815,@10853,@10852 10852:O5|@10232,1642,0,1642,0 10853:S7|6c6f616456616c 10854:O1|@18550 10855:O1|@18551 10856:O1|@18556 10857:S85|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6c6f616446756e6374696f6e73283329 10858:O4|@16,@815,@10860,@10859 10859:O5|@10232,1681,0,1681,0 10860:S13|6c6f616446756e6374696f6e73 10861:O1|@18552 10862:O1|@18554 10863:S83|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6170706c69636174696f6e283229 10864:O1|@18553 10865:O1|@18558 10866:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f636573735461696c283129 10867:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f63657373426f6479283129 10868:O1|@18561 10869:O1|@18565 10870:O1|@18562 10871:O1|@18564 10872:S65|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929636f646553747275637475726542696e64283329 10873:O1|@18563 10874:O1|@18566 10875:O1|@18567 10876:O1|@18568 10877:O1|@18571 10878:O1|@18572 10879:O1|@18578 10880:S25|434f44455452454528292e6d6b4d6163726f50726f63283129 10881:O1|@18573 10882:O1|@18574 10883:O1|@18575 10884:O4|@16,@815,@10887,@10886 10885:S28|434f44455452454528292e6d6b4d6163726f50726f63283129283129 10886:O5|@947,356,0,356,0 10887:S20|6d6b4d6163726f50726f633a20636c6f73757265 10888:O1|@18576 10889:O1|@18577 10890:O1|@18579 10891:O1|@18581 10892:O1|@18583 10893:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f706465637328342964656275677c636f64652d283129 10894:O1|@18586 10895:O1|@18590 10896:S45|535452554354555245535f28292e67656e636f6465537472756374732833296c6f6164546f7064656373283129 10897:O1|@18587 10898:O1|@18588 10899:O1|@18589 10900:O1|@18592 10901:S45|434f4d50494c45525f424f445928292e62617365436f6d70696c657228342965786563757465436f6465283129 10902:O1|@18622 10903:S29|535452554354555245535f28292e706173733453747275637473283329 10904:O4|0,@5196,0,@10905 10905:O1|@18593 10906:O4|11,@239,0,@10908 10907:S39|535452554354555245535f28292e706173733453747275637473283329726573756c742d283129 10908:O5|@8762,3264,0,3264,0 10909:O1|@18594 10910:O1|@18606 10911:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329 10912:O1|@18595 10913:O1|@18596 10914:S61|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e6174757265283129 10915:S70|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e61747572652831296d6170494473283129 10916:O1|@18599 10917:O1|@18600 10918:S66|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e64283329 10919:S75|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e642833296e65774d6170283129 10920:O4|@16,@815,@8912,@10921 10921:O5|@8762,3171,0,3171,0 10922:S58|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296d617054797065496473283129 10923:O1|@18615 10924:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374537472756374283429 10925:O1|@18607 10926:O1|@18614 10927:S56|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296d616b6544656373283329 10928:O1|@18608 10929:S69|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129636f70794964283129 10930:O1|@18613 10931:S81|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129 10932:O1|@18612 10933:S84|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129283129 10934:S63|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129283129 10935:S68|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296578747261637453747275637475726542696e64283329 10936:O1|@18617 10937:O1|@18618 10938:O1|@18619 10939:O1|@18620 10940:O1|@18621 10941:O2|3,@10942 10942:S24|436f6d70696c6174696f6e20696e7465727275707465640a 10943:O4|1,@649,0,@10944 10944:O5|@10945,237,0,237,0 10945:S36|6d6c736f757263652f4d4c436f6d70696c65722f434f4d50494c45525f424f44592e4d4c 10946:S26|457863657074696f6e2d20496e7465726e616c4572726f723a20 10947:S23|20726169736564207768696c6520636f6d70696c696e67 10948:O5|@10945,246,0,246,0 10949:S11|457863657074696f6e2d20 10950:S36|20756e65787065637465646c7920726169736564207768696c6520636f6d70696c696e67 10951:O4|103,@861,@10953,@10952 10952:O5|@852,241,0,241,0 10953:S13|537461746963204572726f7273 10954:O1|@18624 10955:O1|@18626 10956:O1|@18628 10957:O1|@18630 10958:O1|@18632 10959:O1|@18634 10960:O1|@18635 10961:O1|@18636 10962:S33|4261736963496d7065726174697665494f28292e636c6f7365496e283129283129 10963:S26|426173696353747265616d494f28292e646f436c6f7365283129 10964:O5|@852,258,0,258,0 10965:S8|207261697365640a 10966:O1|@18637 10967:S3|757365 10968:S24|4d414b455f28292e757365496e746f456e76283129283129 10969:S12|757365576974685061726d73 10970:S8|636f6d70696c6572 10971:O2|1,@10972 10972:O3|6,@10973,0 10973:O1|@18641 10974:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283129 10975:O1|@18642 10976:S26|4d414b455f28292e67456e7641734e616d655370616365283229 10977:O1|@18658 10978:O1|@18661 10979:O1|@18664 10980:O1|@18667 10981:O1|@18670 10982:O1|@18673 10983:O1|@18676 10984:O1|@18679 10985:O1|@18682 10986:O1|@18685 10987:O1|@18688 10988:O1|@18690 10989:S11|676c6f62616c5370616365 10990:S4|68617264 10991:S7|6d657373616765 10992:O5|5,@4702,@1510,@1507,@885 10993:S6|706172656e74 10994:S4|6e657874 10995:S8|70726576696f7573 10996:S21|636f6d70696c657256657273696f6e4e756d626572 10997:O2|@10998,0 10998:O3|2,@3546,@994 10999:S13|6c696e654e756d626572546167 11000:O3|@11002,@11004,@11001 11001:O2|@18693,@49 11002:O2|@18691,@49 11003:S19|556e6976657273616c2e746167283229283129 11004:O2|@18692,@49 11005:S9|6f6666736574546167 11006:O3|@11008,@11009,@11007 11007:O2|@18696,@50 11008:O2|@18694,@50 11009:O2|@18695,@50 11010:S11|66696c654e616d65546167 11011:O3|@11013,@11014,@11012 11012:O2|@18699,@51 11013:O2|@18697,@51 11014:O2|@18698,@51 11015:S17|62696e64696e67436f756e746572546167 11016:O3|@11018,@11019,@11017 11017:O2|@18702,@52 11018:O2|@18700,@52 11019:O2|@18701,@52 11020:S16|6d6178496e6c696e6553697a65546167 11021:O3|@11023,@11024,@11022 11022:O2|@18705,@54 11023:O2|@18703,@54 11024:O2|@18704,@54 11025:S15|617373656d626c79436f6465546167 11026:O3|@11028,@11029,@11027 11027:O2|@18708,@59 11028:O2|@18706,@59 11029:O2|@18707,@59 11030:S12|706172736574726565546167 11031:O3|@11033,@11034,@11032 11032:O2|@18711,@56 11033:O2|@18709,@56 11034:O2|@18710,@56 11035:S11|636f646574726565546167 11036:O3|@11038,@11039,@11037 11037:O2|@18714,@48 11038:O2|@18712,@48 11039:O2|@18713,@48 11040:S8|69636f6465546167 11041:O3|@11043,@11044,@11042 11042:O2|@18717,@57 11043:O2|@18715,@57 11044:O2|@18716,@57 11045:S19|6c6f776c6576656c4f7074696d697365546167 11046:O3|@11048,@11049,@11047 11047:O2|@18720,@58 11048:O2|@18718,@58 11049:O2|@18719,@58 11050:S19|636f64657472656541667465724f7074546167 11051:O3|@11053,@11054,@11052 11052:O2|@18723,@60 11053:O2|@18721,@60 11054:O2|@18722,@60 11055:S17|696e6c696e6546756e63746f7273546167 11056:O3|@11058,@11059,@11057 11057:O2|@18726,@53 11058:O2|@18724,@53 11059:O2|@18725,@53 11060:S8|6465627567546167 11061:O3|@11063,@11064,@11062 11062:O2|@18729,@64 11063:O2|@18727,@64 11064:O2|@18728,@64 11065:S16|7072696e74446570746846756e546167 11066:O3|@11068,@11069,@11067 11067:O2|@18732,@62 11068:O2|@18730,@62 11069:O2|@18731,@62 11070:S13|6572726f724465707468546167 11071:O3|@11073,@11074,@11072 11072:O2|@18735,@61 11073:O2|@18733,@61 11074:O2|@18734,@61 11075:S13|6c696e654c656e677468546167 11076:O3|@11078,@11079,@11077 11077:O2|@18738,@63 11078:O2|@18736,@63 11079:O2|@18737,@63 11080:S20|70726f66696c65416c6c6f636174696f6e546167 11081:O3|@11083,@11084,@11082 11082:O2|@18741,@55 11083:O2|@18739,@55 11084:O2|@18740,@55 11085:O2|@11086,0 11086:O3|2,@4685,@3546 11087:S14|7072696e744f7574707574546167 11088:O3|@11090,@11091,@11089 11089:O2|@18744,@103 11090:O2|@18742,@103 11091:O2|@18743,@103 11092:S17|636f6d70696c65724f7574707574546167 11093:O3|@11095,@11096,@11094 11094:O2|@18747,@70 11095:O2|@18745,@70 11096:O2|@18746,@70 11097:S19|6572726f724d65737361676550726f63546167 11098:O3|@11100,@11101,@11099 11099:O2|@18750,@102 11100:O2|@18748,@102 11101:O2|@18749,@102 11102:S11|726f6f7454726565546167 11103:O3|@11105,@11106,@11104 11104:O2|@18753,@105 11105:O2|@18751,@105 11106:O2|@18752,@105 11107:S24|7265706f7274556e7265666572656e636564496473546167 11108:O3|@11110,@11111,@11109 11109:O2|@18756,@65 11110:O2|@18754,@65 11111:O2|@18755,@65 11112:S27|7265706f72744578686175737469766548616e646c657273546167 11113:O3|@11115,@11116,@11114 11114:O2|@18759,@66 11115:O2|@18757,@66 11116:O2|@18758,@66 11117:S27|6e6172726f774f7665726c6f6164466c65785265636f7264546167 11118:O3|@11120,@11121,@11119 11119:O2|@18762,@67 11120:O2|@18760,@67 11121:O2|@18761,@67 11122:S23|6372656174655072696e7446756e6374696f6e73546167 11123:O3|@11125,@11126,@11124 11124:O2|@18765,@68 11125:O2|@18763,@68 11126:O2|@18764,@68 11127:S24|7265706f727444697363617264656456616c756573546167 11128:O3|@11130,@11131,@11129 11129:O2|@18768,@69 11130:O2|@18766,@69 11131:O2|@18767,@69 11132:O3|@11134,@11133,@3587 11133:S13|352e372e312052656c65617365 11134:S15|636f6d70696c657256657273696f6e 11135:O1|@18769 11136:S8|436f646554726565 11137:S16|506f6c794d4c2e436f6465547265652e 11138:S8|636f646574726565 11139:S11|636f646542696e64696e67 11140:S10|6d6b436f6e7374616e74 11141:O1|@18770 11142:S21|434f44455452454528292e6d6b436f6e7374283129 11143:S7|67656e436f6465 11144:O2|@18771,@1649 11145:S21|434f44455452454528292e67656e436f6465283129 11146:S6|6576616c7565 11147:O1|@18772 11148:S30|434f4445545245455f46554e4354494f4e5328292e6576616c7565283129 11149:S10|6d6b46756e6374696f6e 11150:O1|@18773 11151:O1|@18774 11152:S41|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65466e283129 11153:S16|6d6b496e6c696e6546756e6374696f6e 11154:O1|@18775 11155:O1|@18778 11156:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65496e6c696e65466e283129 11157:O1|@18776 11158:O1|@18777 11159:S6|6d6b43616c6c 11160:O1|@18779 11161:O1|@18780 11162:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c6543616c6c283129 11163:S11|6d6b4c6f61644c6f63616c 11164:O1|@18781 11165:S14|6d6b4c6f6164417267756d656e74 11166:O1|@18782 11167:S13|6d6b4c6f6164436c6f73757265 11168:O1|@18783 11169:S5|6d6b446563 11170:O1|@18784 11171:S19|434f44455452454528292e6d6b446563283129 11172:S5|6d6b496e64 11173:O1|@18785 11174:S37|434f4445545245455f46554e4354494f4e5328292e6d6b496e646972656374283129283129 11175:S4|6d6b4966 11176:O1|@18786 11177:S7|6d6b5768696c65 11178:O1|@18787 11179:S21|434f44455452454528292e6d6b5768696c65283129 11180:S6|6d6b4c6f6f70 11181:O1|@18788 11182:O1|@18789 11183:S20|434f44455452454528292e6d6b4c6f6f70283129 11184:S11|6d6b426567696e4c6f6f70 11185:O1|@18790 11186:O1|@18791 11187:S25|434f44455452454528292e6d6b426567696e4c6f6f70283129 11188:S5|6d6b456e76 11189:O1|@18792 11190:S29|434f4445545245455f46554e4354494f4e5328292e6d6b456e76283129 11191:S12|6d6b4d757475616c44656373 11192:O1|@18793 11193:S26|434f44455452454528292e6d6b4d757475616c44656373283129 11194:S7|6d6b5475706c65 11195:O1|@18794 11196:S35|434f4445545245455f46554e4354494f4e5328292e6d6b5265636f7264283129283129 11197:S7|6d6b5261697365 11198:O1|@18795 11199:S8|6d6b48616e646c65 11200:O1|@18796 11201:S22|434f44455452454528292e6d6b48616e646c65283129 11202:S9|6d6b4e756c6c446563 11203:O1|@18797 11204:S4|6e616d65 11205:O1|@18798 11206:S24|5354525543545f56414c5328292e76616c4e616d65283129 11207:O1|@18799 11208:O1|@18800 11209:S26|56414c55455f4f505328292e7072696e7456616c756573283129 11210:S32|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329 11211:S41|56414c55455f4f505328292e7072696e7456616c7565466f72547970652833296d6b41646472283129 11212:O1|@18803 11213:S46|56414c55455f4f505328292e7072696e7456616c7565466f725479706528332964756d6d7954797065732d283129 11214:O1|@18804 11215:S44|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329706f6c79436f64652d283129 11216:S13|7072696e745769746854797065 11217:O1|@18805 11218:O1|@18810 11219:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617956616c756573283129 11220:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6554797065456e76283229283129 11221:O2|@11223,@11222 11222:O1|@18809 11223:O1|@18808 11224:O1|@18811 11225:S28|56414c55455f4f505328292e646973706c617956616c756573283429 11226:O2|@5688,0 11227:S9|7072696e7454797065 11228:O1|@18812 11229:O2|@11232,@11231 11230:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065457870283129 11231:O1|@18816 11232:O1|@18815 11233:S6|747970656f66 11234:O1|@18817 11235:S26|5354525543545f56414c5328292e76616c547970654f66283129 11236:S4|636f6465 11237:O1|@18818 11238:O4|103,@861,@11241,@11240 11239:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7256616c7565283129 11240:O5|@3925,1651,0,1651,0 11241:S18|4e6f74206120676c6f62616c2076616c7565 11242:S10|70726f70657274696573 11243:O1|@18819 11244:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7256616c7565283129 11245:S13|6973436f6e7374727563746f72 11246:O1|@18820 11247:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973436f6e7374727563746f72283129 11248:S11|6973457863657074696f6e 11249:O1|@18821 11250:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973457863657074696f6e283129 11251:O1|@18822 11252:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7254797065283129 11253:O1|@18823 11254:O2|@11257,@11256 11255:S58|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065436f6e737472283129 11256:O1|@18827 11257:O1|@18826 11258:O1|@18828 11259:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7254797065436f6e737472283129 11260:O1|@18829 11261:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72537472756374283129 11262:O1|@18830 11263:O1|@18831 11264:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283129 11265:O1|@18836 11266:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283329 11267:O2|@11269,@11268 11268:O1|@18835 11269:O1|@18834 11270:O2|@1500,@11226 11271:O1|@18845 11272:S25|56414c55455f4f505328292e646973706c6179536967283529 11273:S41|56414c55455f4f505328292e646973706c6179536967283529636f6d706f73697465456e762d283129 11274:O2|@1323,@5577 11275:O1|@18841 11276:S33|56414c55455f4f505328292e646973706c61795369672835296f72646572283129 11277:S36|56414c55455f4f505328292e646973706c61795369672835296f72646572283129283129 11278:O1|@18843 11279:S39|56414c55455f4f505328292e646973706c6179536967283529646973706c617953706563283229 11280:O1|@18844 11281:O1|@18846 11282:O4|103,@861,@11285,@11284 11283:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f72537472756374283129 11284:O5|@3925,1709,0,1709,0 11285:S22|4e6f74206120676c6f62616c20737472756374757265 11286:O1|@18847 11287:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72537472756374283129 11288:S8|636f6e74656e7473 11289:O1|@18848 11290:O1|@18849 11291:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283129 11292:O1|@18868 11293:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229 11294:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757056616c283129 11295:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757054797065283129 11296:S66|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b7570537472756374283129 11297:O1|@18855 11298:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c56616c756573283129 11299:O1|@18854 11300:O1|@18858 11301:S62|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c5479706573283129 11302:O1|@18857 11303:O1|@18861 11304:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c53747275637473283129 11305:O1|@18860 11306:O1|@18862 11307:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229283129 11308:O1|@18863 11309:O1|@18864 11310:O1|@18865 11311:O4|103,@861,@11314,@11313 11312:S67|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229656e74657246756e6374696f6e283129 11313:O5|@3925,1750,0,1750,0 11314:S37|7570646174696e67206120737472756374757265206973206e6f7420706f737369626c652e 11315:O1|@18866 11316:O1|@18867 11317:O1|@18869 11318:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72536967283129 11319:O1|@18870 11320:O2|@11323,@11322 11321:S52|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953696773283129 11322:O1|@18874 11323:O1|@18873 11324:O1|@18875 11325:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72536967283129 11326:O1|@18876 11327:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7246756e63746f72283129 11328:O1|@18877 11329:O1|@18882 11330:S56|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617946756e63746f7273283129 11331:O2|@11333,@11332 11332:O1|@18881 11333:O1|@18880 11334:O2|@1323,@11342 11335:S30|56414c55455f4f505328292e646973706c617946756e63746f7273283329 11336:O2|@1500,@11337 11337:O2|@11338,@1830 11338:O2|3,@11339 11339:S2|293a 11340:O1|@18883 11341:S40|56414c55455f4f505328292e646973706c617946756e63746f7273283329617267456e762d283129 11342:O2|@1325,0 11343:O1|@18887 11344:O4|103,@861,@11347,@11346 11345:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7246756e6374283129 11346:O5|@3925,1817,0,1817,0 11347:S20|4e6f74206120676c6f62616c2066756e63746f72 11348:O1|@18888 11349:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7246756e63746f72283129 11350:O1|@18889 11351:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72466978283129 11352:S31|56414c55455f4f505328292e646973706c6179466978537461747573283129 11353:O3|@11355,@11354,0 11354:O2|@18937,@18938 11355:S7|3c737464696e3e 11356:O1|@18891 11357:O1|@18892 11358:S10|506f6c7946696e697368 11359:O1|@18893 11360:S29|4f532e50726f636573732e657869742831296578697446756e2d283129 11361:O1|@18894 15130:D16,248|fb121a0b01351a0f010c7881b97881883c28483cda401a07010c2a2a693c3b1a06010c29299291033329352a362a1aff00a003033c02162a3b3bef280da0030c2a2808faeb2808280ded02013b03033c0207292503511e323b6502013b642b2afad60c2cfada0cfadf2a0c5178810928133bfadc0cf102096d3bfadc0c50fae0647881063b2c0cf102036d3b6450501e233b642706f102296d78810928133bfaaf0cf102096d3cfaaf0c50fabb647881063b2c0cf102036d3b6450501e233b6464503bf102036d3c6478810928133bfa7f0cf102096d2afa7f0c50fa93647881063b2c0cf102036d3b6450501e233b646542000000000000|@202,1,@11362,@0,@784,@786,@817,@818,@819,@4950,@11353,@11356,@11357,@11359,@11361,@201| 15131:D3,16|fb0529363b3b3be34200000000000000|@206,1,@11363| 15132:D11,88|fb0f7881270b02003b3b3b2cfa620c5029352a36fa622ab9293db72c2ab833362a3bfa5c0c503b2708f102266d2935280ca003043b5002022910fa4c3529fa50fa560c50fa423529392afa542bfa590c6664420000000000|@211,1,@11364,@212,-1,@219,@18930,@252,@253,@638,@210| 15133:D5,184|fb112b2f299291039f29352a362a353da00309292503511e133b02892a353ca0033e2a36293ca0030428060211293ba003033f0209293ea003033d02013b2934b8332806b7293ba0910303fa83103b50342806b8312f2d2c2cfa7d22107b06102a36293ba0031e313cb7293ba0910303fa5e103b50323cb82f2d220d2c2cfa58220e7b060e323cb8323cb7293ba0910303fa3d103b50333cb8302e2d2c2cfa38220f7b060f6502052a30452f4664641f0400000000000000|@214,1,@11365,@213,@212| 15134:D4,16|fb042d2d2dfa218c4400000000000000|@220,1,@11366,@18896| 15135:D3,16|fb06281d2a373b2c362e7b0503000000|@229,1,@11368| 15136:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11369,@18897| 15137:D3,16|fb0628072a373b2c362e7b0503000000|@229,1,@11370| 15138:D4,56|fb0b2b352c362d3729362c3ba803043b500203fa3b102b3ba803043b500203fa2f10292d2d6a280b2f372b3136337b050800000000000000|@237,1,@11371,@236| 15139:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11372,@18898| 15140:D4,56|fb0b2b352c362d372b3ba803043b500203fa3d102a3ba803043b500203fa31102b2808b12a2a2d6a280b2f372b3136337b05080000000000|@243,1,@11373,@236| 15141:D3,16|fb05281c2a373b2c360c293ba6644200|@229,1,@11374| 15142:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11375,@18899| 15143:D3,24|fb033b2a370c030a2b2a360c2968016402013b4200000000|@249,1,@11376| 15144:D3,24|fb033b2a370c030a2b2a360c2968016402013b4200000000|@251,1,@11377| 15145:D13,240|fb142c3a2935293ca003cd2d3b3bef29293ba003033b0234293cab293ba203033c0208303b3bef2a2aa8640303fad9103b50292808b1312adc2940a003032c020a2c3cab250426031e383b6664293ba003182f3b3bef303b2b6afab42a693339342b2bfab3220d7b050c2f3b3bef2a3ba803043b500203faa7102a2aa503043b500203faa310303b2c6afaa42a693339342b2bfa830c503439220cfa9b2bfa780c502e3ba803043b500203fa7310343b3bef2f2aa503043b500203fa83102930b2220d312b6afa802a6922103922112b2bfa4522137b05122d3b3bef2e3b2b6afa6e2a693139322b2bfa2d347b050a00|@254,1,@11378,@255,@15147,@210,@236,@645,@15166,@638,@658,@15167,@15146| 15146:D4,16|fb052b2a36fa212d7e03000000000000|@259,1,@11400,@258| 15147:D4,16|fb052b2a36fa212d7e03000000000000|@259,1,@11379,@258| 15148:D13,432|fb262c3729352e382935293ca003152b1ab5011aba016a1abe011ac3012b1ac7016b64103b5030353136323a3235333634372e352a2aa60314220e1ab2010c50220e2d2d2d1ab00122117b060f2d35293da0030d220f2e2e2e1a9c0122127b06102f352b2aab2d2aa2036f3135303b3bef303ba803043b5002041a8301102f3ba803043b5002041a7601103030b1292ba503043b5002041a6e0110220c35220d362d3ba803043b5002041a5301102d33b1292ca703041a5701103b50342808b1220d2a2d32220fec50220f3529220daa22113b3b2ce3270902d131352d2aab3335323b3bef323ba803043b5002041a0f01102b3ba803043b5002041a020110322cb1292ba503043b5002041afa0010220e35220f362d3ba803043b500203fae0102d2fb1292ca70303fae5103b50220d2808b1220f2a2d3234ec502211352932aa22133b3b2ce350221cfaa40c50221033aa221034ab22133b3bef2b3ba803043b500203fa9a102a3ba803043b500203fa8e102b2bb1292ba503043b500203fa87102218352219362d2ba70303fa81103b502e2808b122182a2c3b32ec5022162211ab221b3b3b2ce327136564270b43|@261,1,@11380,@262,@264,@5,@635,@636,@638,@650,@236,@645,@260| 15149:D19,144|fb162b363ba20304fa9e02732b35362c363cab2a2a69fa98352a2a0c642f363ca20304fa9302432f353730363cab2a2a69fa8d352a2a0c6433353534363cab2a2a69fa7c352a2a0c6429fa7c69fa812a69fa852a69fa892a69fa8d2a69322a69fa8e2a69fa922a69270ffa942a69fa982a692c2a69fa992a69fa9d2a692709fa9f2a693b3c3b3b2d6805654200000000|@268,1,@11381,@269,@6,@269,@7,@626,@615,@629,@615,@616,@615,@631,@615,@616,@615,@633,@267| 15150:D4,16|fb082b362c35293b2cfa1d307b050500|@274,1,@11382,@273| 15151:D15,464|fb132d352e362f372b92f88a0130353da0037e30372f3ca403051acb0102542f3cab293ba203051ac601023a2a352a3cab2a2a691ac101352a2a0c642e362e3cab2a2a691ab901351abd012a0c642a2a0c64291aba01691abe012a691ac1012a69302a69270b1abf012a693b3c3b3b2d680566291ab9010c293b691aba012a691abd012a693b3c3b3b2d68052706f70401303540a0032e30372f3cab2a2a691a5601352a2a0c643e2f692a1a82010c293b691a83012a692c2a693b3c3b3b2d6805270902d03035280ca0032e30372f3cab2a2a691a2101352a2a0c643e2f692a1a4d010c293b691a4e012a692c2a693b3c3b3b2d68052709029b30352817a0032d30372f3cab2a2a69faed352a2a0c643e2f692a1a19010c293b691a1a012a692c2a693b3c3b3b2d68052709026730352867a0032b30372f3cab2a2a69fab9352a2a0c643e2f692afae60c293b69fae82a692c2a693b3c3b3b2d68052709023530352808a0032b30372f3cab2a2a69fa87352a2a0c643e2f692afab40c293b69fab62a692c2a693b3c3b3b2d6805270902033e2b6902322b3529929103272935303cab2c2a69642a0c3e2e692afa810c293b69fa832a692c2a693b3c3b3b2d6805270702033e2c696466440000000000|@276,1,@11383,@277,@279,@7,@9,@607,@613,@615,@616,@618,@619,@624,@275| 15152:D7,32|fb062b35292b36fa2f0c29fa3369fa382a6965fa3b0c3e2a6965420000000000|@274,1,@11384,@285,@292,@293,@284| 15153:D6,176|fb122c3b3bef3b3b292ca003032a0221293cb12a2808b1312adc64300c293b3bef2d2aaa292d2506250626041e243b270465293ba803043b500203fa8b10292ba003032e0267292810b1293cb2292808b429fa7ca503043b500203fa7b10292841bd2a3cb22a2a3b3bf02b3b3b32f05028083b2933a003043b50022a292808b1220e2adc64220d0c293b3bef2a2808312f2dec502b3cb12d2bb1292b2506250626041e2f2604512b95502b2706654300|@287,1,@11385,@288,72057594037927935,@286| 15154:D7,176|fb142b929103a52b352c36293ba003032a02962d3b2a9291031a2a352b362a3b3bef2c2aaa2b2a2506250626041e183b270402012965293ba00304fa8b0269293ba803043b500203fa8610292810b1293cb2292808b429fa7fa503043b500203fa7e10292841bd2a3cb22a2a3b3bf02b3b3b32f0502808220c299291032129352a362a3b3bef2b280832302dec502d2ab1292c2506250626041e20260402023b50512b95502b270664650202fa1a4200|@295,1,@11386,@294,@288,72057594037927935,@286| 15155:D18,360|fb102b285ca003061a7501f759012b2822a003061a7101f74d0128212ca503062b287ea502013b03033c02042b2820a0030829362c3bdbf72d012b2807a003061a4d01f721012b2808a003061a4901f715012b2809a003061a4501f709012b40a003051a420102ff2b280ba003051a3f0102f42b280ca003051a3c0102e92b280da003051a390102de2b2820a3037d2b2840aa293ba203033c02042928ffa603041a2401103b503b502a362a3bdb293b3bef293ba003051a1601024d3d2ab1292810b1293cb2292808b4291a0a01a503043b5002041a0801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808285ce4502b2809285ee4503128082d4034ec502b95502b270766025b2b3e402c36fad50c293b3bef293ba00304fad102453c2ab1292810b1293cb2292808b429faa6a503043b500203faa5103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808285ce4503128082d280934ec502b95502b27076542|@298,1,@11387,@299,@300,@301,@302,@303,@304,@305,@306,@307,@308,@311,72057594037927935,@286,@312,@297| 15156:D13,288|fb192d3ba003061a2e01f70c012d3cab2d3ba003041a2801103b503b502d1a2701a003072f1a2801a002013b03041a2701103b503b502f2ead2e3ba003041a1f01103b503b50302fae293ba003033c020a293ba2303ba22a2aa06503032a02032a3cab292d32321afe000c313ba00303faee103b503b503332ae293ba003033b0213293ba2333ba22a2aa003032b02042b220caa65292830aa293ba203033c02042928ffa60303fac7103b503b50332a3bdb2d3b3bef2a3b3bef2a3ba003032b0255293ba003032f024d2a2ab1292810b1293cb2292808b429fa9da503043b500203fa9c103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d2808220cec50280832b13328082e2c220cec502c95502c2708270b1f040000000000|@314,1,@11388,@294,@315,-1,-4611686018427387904,@319,@313,@312,@308,72057594037927935,@286| 15157:D4,8|fb03fa1c2c694200|@581,1,@11389,@15158| 15158:D14,168|fb0c2b363ca20304fab602952b35293ba00304fab302892c363ca20304fab1027f2c3529352e363cab2a2a69662b36360c29353ba00354293929929103302936929103272935353ea0031c29353629fa87a003033c020d29fa86a003033c020429fa85a06402013b9102013b02013b03162afa7c69fa812a69fa852a693b3e3c3b2d68056602012a64020129293b69fa772a69fa7b2a693b3c3b3b2d680527056442000000000000|@583,1,@11390,@584,@586,@584,@594,@595,@596,@597,@599,@602,@603,@582| 15159:D4,16|fb05fa24352c2a2d7d04000000000000|@609,1,@11391,@10| 15160:D4,16|fb052b3529fa210c3e2a696542000000|@274,1,@11392,@611| 15161:D4,8|fb022bfa1b8a4200|@612,1,@11393,@18900| 15162:D12,200|fb0c2b353ba003ba2b3929929103a029352a36293ba003032e02912a353ea0037b2a3629fabaa003033c0214293b3bef3ca0030b292808faa728083ced02013b03032f025429faa0a003033c0214293b3bef3ca0030b292808fa8d28083ced02013b03032f023229fa86a003033c0214293b3bef3ca0030b292808fa7328083ced02013b03032f02102ffa6c69fa712a693b3e3c3b2d6805656402102efa6969fa6e2a693b3e3c3b2d6805656502102cfa6669fa6b2a693b3e3c3b2d6805656402012b4200000000|@621,1,@11394,@416,@448,@365,@622,@620,@622,@620,@622,@620| 15163:D13,224|fb152b3629352d3729352f352c3ba003033b02c32b230729929103043b5002102bfad5fadb6afae0fae62bfaeb6b641029352f3b3b3be3503b788136312cab2f352d3ba803043b500203fad4102a3ba803043b500203fac8102d2bb1292ba503043b500203fac1102e2c336a662d0cf1024e6d0b03002d35fa8ea0030e2d2a2a35452a36462a37475102252d353ca0030ffa9d2a2a35452a36462a3747510210322efa946a2afa6045fa65462a47505029352a362b372b2b2bfa856b27071064292baa2932a003033b02092a2caa2503511e983b656465270542000000000000|@640,1,@11395,@641,@643,@5,@635,@644,@236,@645,@648,@643,@639| 15164:D14,280|fb132e3729230829929103ae29352b353b78813f2b34aa332dab220d3b3bef2b3ba803043b5002041a0501102a3ba803043b500203faf9102b2bb1292ba503043b500203faf2102c2c22116a27042e0cf1024e6d0b03002d35fae5a0030e2d2a2a35452a36462a37475102252d353ca0030ffad42a2a35452a36462a37475102102f2efacb6a2afab745facc462a47505029352a362b372b2b2bfac46b27071064292baa2933a003033b02092a2caa2503511ea13b65646502582a230729929103043b5002122b3529fa9dfaa36afa70fa862bfaa36b641029352c353d2841bd293b28083bf03b402aa503043b50020d2b2a2820e450293cb125011e1450402b693b34220d220f2f322f33fa7322127b0a0e651f04000000|@652,1,@11396,@236,@645,@5,@648,@264,@635,@653,@641,@264,@654,@651| 15165:D12,248|fb143133ab2940a20303290201403433aa323b3bef2a3ba803043b500203faf0102b3ba803043b500203fae4102a2cb1292ba503043b500203fadd102c40a70303fadd103b502b2808b1220c2a220d3b31ec788123303ba803043b500203fab0103040a503043b500203faac103b31220e6a220e0cf1024f6d0b03002d35faa8a0030e2d2a2a35452a36462a37475102262d353ca0030ffa972a2a35452a36462a3747510211220e2efa8d6a2afa7945fa8e462a47505029352a362b372b2b2bfa866b27071064292212aa292212a003033b02192a2213aa2212221222122212221222122212fa6822137b0a1327091f0800000000000000|@656,1,@11397,@236,@645,@260,@5,@648,@264,@635,@655,@651| 15166:D4,16|fb052b2a36fa212d7e03000000000000|@259,1,@11398,@258| 15167:D4,16|fb052b2a36fa212d7e03000000000000|@259,1,@11399,@258| 15168:D9,312|fb1ad92936292806b7293ba003033b0210d91a3b012cb7293fb82b3b28082ce3663b3035293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464643098293ba003033b020a311a07010c50511e333b6578810634340cf102986d3197293ca003043b50020832995032faed0c50d9293b280832e3502f3fb7293fa00314d92938293ba0910306fad80c5002023b505102023b502c38299291031829352a362b372c382d392d2b2e2c2f6805296801270602013b29929103043b50020e2e352f3630372b2b2bfaa16b6610293529352a362b372c382d393435220c36220d37302f2e323168052c2c2c2c6b29fa830c2710643197293ca003043b50020832995032fa560c50d9293b280832e3502f3fb7293fa00314d92938293ba0910306fa410c5002023b505102023b502c2709440000|@661,1,@11401,-7,@662,@664,@666,@668,@660| 15169:D4,8|fb022bfa1b8a4200|@663,1,@11402,@18901| 15170:D4,8|fb022bfa1b8a4200|@665,1,@11403,@18902| 15171:D4,8|fb01fa1c89410000|@667,1,@11404,@18903| 15172:D3,8|fb022b1000000000|@670,1,@11405| 15173:D9,104|fb0f29360c293ba00344fa7435293ca00309fa6c98293ba06402013b03083b3cfa660c5002250b02003b3b3b2cfa610c5029352a36fa612ab9293db72c2ab8fa5f2a3bfa630c503b50260850021229352a367881062b2d0cf102036d3b645051501e5f3b64420000|@673,1,@11406,@18932,@674,@212,-1,@672,@219| 15174:D11,352|fb122b03043b50023d3b1a6b0135293ca003033b02152a1b204ea003033b020b2a3caa292503511e1d3b6464641a480198293ba003043b50020b1a3b011a40010c50511e3a51d92936292806b7293ba003033d020c293da003033e0204293fa091293da003043b500215d9d929361a17012ab73d2ab82d3b28082ce35026053b1a0d0135293ca003033b02152a1b204ea003033b020b2a3caa292503511e1d3b646464faeb98293ba003043b500209fadffacd0c50511e3751fadd3529299291031329352a362afad70c50292503511e123b6502013b64fabf3b3b2ce350fab097293ca003043b50020afaa49950faa0fab60c50d92d3ca00304280602112d3ba003033f02092d3ea003033d02013bd92936fa742ab72c2ab82e3b28082ce350323ba003033c0203323ca00314d92938293ba0910306fa780c5002023b505102023b50fa3397293ca003033b020cfa289950fa24fa5222117d12270e43000000|@676,1,@11407,@18932,@662,-7,@18933,@18934,@675,@664,@666| 15175:D4,8|fb022bfa1b844200|@677,1,@11408,@18904| 15176:D4,16|fb052b3bfa222d7e0300000000000000|@678,1,@11409,@674| 15177:D4,8|fb01fa1c89410000|@679,1,@11410,@18905| 15178:D4,16|fb0528122a36fa202d7e030000000000|@684,1,@11411,@683| 15179:D4,8|fb032c2cfa1a8b43|@685,1,@11412,@18906| 15180:D4,56|fb0d293735293b2a929103252a352b3678810d2c392d32362bfa350c64f102036d3b642a2a2505250526031e243b66020129656442000000|@686,1,@11413,@210| 15181:D4,24|fb072b3729372d2c362d37fa230c503b2a2e7d0500000000|@689,1,@11414,@688| 15182:D7,120|fb092d382935293ca003033b02622a3b3b3ce3503b2f35293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464642f98293ba003043b50020830fa4c0c50511e33512d35292cfa480c2f3b3b2ce3503097293ca003043b50020831995031fa380c5032fa3b317d0a6544000000000000|@691,1,@11415,@662,@692,@664,@690| 15183:D4,48|fb082c929103212c352d362a38292fa091030b2a2ffa310c2c2a696402072a2ffa26307e076602013b43000000000000|@693,1,@11416,@692| 15184:D13,224|fb152b3629352d3729352f352c3ba003033b02c32b230729929103043b5002102bfad5fadb6afae0fae62bfaeb6b641029352f3b3b3be3503b788136312cab2f352d3ba803043b500203fad4102a3ba803043b500203fac8102d2bb1292ba503043b500203fac1102e2c336a662d0cf1024e6d0b03002d35fa8ea0030e2d2a2a35452a36462a37475102252d353ca0030ffa9d2a2a35452a36462a3747510210322efa946a2afa6045fa65462a47505029352a362b372b2b2bfa856b27071064292baa2932a003033b02092a2caa2503511e983b656465270542000000000000|@640,1,@11417,@641,@643,@5,@635,@644,@236,@645,@648,@643,@639| 15185:D7,40|fb0c3bfa3b3cfa400c3c2a6929063c28483cda3c2b2b6afa372a692f362a3137fa36347b05090000|@696,1,@11418,@697,@698,@15186,@210| 15186:D3,16|fb052b3b3b2c36e34200000000000000|@738,1,@11445| 15187:D16,320|fb2b1a53012a362f6a1a54012b37306a0b04003203132e68013068012b2b452a463b473b48505102221a3c01312308306a2968011a3901332308336a2968012d3b453b462c472a4850260429352a362b372c38281e22103b220e380c0b03002d3da403101a11012a2a35452a36462a374751026d78810f281222173b221523070c503cf102116d29353da003043b50020229103b503b6429030ffae42212230722176a2968016402013b2a030ffad92213230622186a2968016402013b2b030eface22143a22196a2968016402013b2b2b2b6a2c2c2c6a2f2e452d462c4750260629352a362b37faaf22143822196a280f22193b2217380cfaa6221639221b6a296801faa3221838221d6a296801faa0221a39221f6a221e6801221e312f2d220c220f2f2210221a221c220c2211221c221e2218680f29fa7f221f7d21000000|@701,1,@11419,@15188,@15189,@15190,@15191,@705,@15192,@15193,@15194,@15195,@15196,@15197,@15198,@700| 15188:D4,56|fb0b2b352c362d3729362c3ba803043b500203fa3b102b3ba803043b500203fa2f10292d2d6a28082f372b3136337b050800000000000000|@702,1,@11420,@236| 15189:D3,16|fb06402a372d2c362e7b050300000000|@703,1,@11421| 15190:D3,16|fb052b2a372b362d7e03000000000000|@704,1,@11422| 15191:D3,16|fb052b2a372b362d7e03000000000000|@704,1,@11423| 15192:D3,16|fb0628122a373b2c362e7b0503000000|@706,1,@11424| 15193:D3,16|fb0528132a372d2c360c503b42000000|@707,1,@11425| 15194:D3,16|fb0628142a373b2c362e7b0503000000|@708,1,@11426| 15195:D4,48|fb0778810b28112c373b2e360cf102106d29353da003043b5002022910fa2964293ba8030529680102013b6442000000|@709,1,@11427,-1| 15196:D3,16|fb06281b2a373b2c362e7b0503000000|@710,1,@11428| 15197:D3,16|fb0528102a373b2c360c293ba6644200|@710,1,@11429| 15198:D3,16|fb0628072a373b2c362e7b0503000000|@710,1,@11430| 15199:D11,328|fb252b352c362d372e382f39303a312306322307332308342309220c230a220d230b220e230c220f230d2210230e2e3ba003162f3ba003033b020c2f351a20012a2f6a2968016502012e303ba003152f3ba003033b020b2f351a0c012a69296801650201302c3ba003312d3ba0031f2f929103052a929102013b030f2f352b35faee2a2c6a2968016602013b020b2d35fae62a316a2968016502012c2e3ba003302d3ba0031f30929103052a929102013b030f30352b35fac72a2c6a2968016602013b020a2d35fabf2a692968016502012e2c3ba003232210929103052a929102013b03122210352b35faa422152b2d6b2968016602013b02012c2c3ba003232211929103052a929102013b03122211352b35fa8322162b2d6b2968016602013b02012c22142214221422142214221422142214313322142214220e22102214680f271542000000|@711,1,@11431,@15201,@15202,@15203,@15204,@15205,@15206,@15207,@15200| 15200:D8,48|fb073b2a380c502b2a370c29929103043b5002112a36fa30fa366afa3bfa412bfa466b64102935644200000000000000|@725,1,@11439,@641,@726,@5,@635,@724| 15201:D12,216|fb142b2a37a203032b02022937293ba803043b500203fad81029fadca70303fadf103b50292808b1293cb2292808b4292841bd2a3ba003033b02092a3cb22a2a3b3bf0643b2f2aa503043b50020d2b2a2820e450293cb125011e14502e2b693b302b6a31360c293ba803043b500203fa97102931a503043b500203fa9310293ba00304fa930248293ca0030b2c3bdcfa8f2a3bdb640238292810b1293cb2292808b429fa83a503043b500203fa8210292841bd2a3cb22a2a3b3bf02b3b3b32f050323b2d280833ec502b95502b2706270842000000000000|@713,1,@11432,@288,576460752303423472,@712,@236,@645,@294,@296,72057594037927935,@286| 15202:D5,64|fb0e2b352c362d372a2d360c2a352b362b3b3bef2f3ba803043b500203fa39102f2ab1292da70303fa36103b502d28082d332eec502d3b3bef27084200000000|@716,1,@11433,@236,@715| 15203:D3,24|fb033b2a370c030a2b2a360c2968016402013b4200000000|@718,1,@11434| 15204:D12,224|fb152b2a37a203032b02022937293ba803043b500203fae01029fae4a70303fae7103b50292808b1293cb2292808b4292841bd2a3ba003033b02092a3cb22a2a3b3bf0643b2f2aa503043b50020d2b2a2820e450293cb125011e14502e2b693b302b6a31360c29929103712935293ba803043b500203fa98102932a503043b500203fa9410293ba00304fa940248293ca0030b2d3bdcfa902a3bdb640238292810b1293cb2292808b429fa84a503043b500203fa8310292841bd2a3cb22a2a3b3bf02b3b3b32f050333b2d280833ec502b95502b27062968016502013b270842|@718,1,@11435,@288,576460752303423472,@712,@236,@645,@294,@296,72057594037927935,@286| 15205:D3,24|fb033b2a370c030a2b2a360c2968016402013b4200000000|@719,1,@11436| 15206:D5,80|fb0f2b352c362d372a2d360c299291033629352b352c362b3b3bef303ba803043b500203fa4210302ab1292da70303fa3f103b502d28082d342eec502d3b3bef296801270602013b2704420000000000|@719,1,@11437,@236,@715| 15207:D8,48|fb073b2a380c502b2a370c29929103043b5002112a36fa30fa366afa3bfa412bfa466b64102935644200000000000000|@721,1,@11438,@641,@722,@5,@635,@720| 15208:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11440,@18907| 15209:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11441,@18908| 15210:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11442,@18909| 15211:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@11443,@18910| 15212:D4,176|fb0c78810a2e2e0c29680164f1029f6d29353da0030a293729362992916502013b03043b50020229103b502937293629352d3a3ba003033b02072d3a352a2abe6403033b02662d393ba003033b02072d39352a2abe6403033b02512d383ba003033b02072d38352a2abe6403033b023c2d373ba003033b02072d37352a2abe6403033b02272d363ba003033b02072d36352a2abe6403043b50020e2c352d362e372b2b2bfa226b66103b503b66644300|@733,1,@11444,@732| 15213:D4,16|fb0528122a36fa202d7e030000000000|@684,1,@11446,@683| 15214:D4,56|fb0d293735293b2a929103252a352b3678810d2c392d32362bfa350c64f102036d3b642a2a2505250526031e243b66020129656442000000|@686,1,@11447,@210| 15215:D4,24|fb072b3729372d2c362d37fa230c503b2a2e7d0500000000|@689,1,@11448,@762| 15216:D7,120|fb092d382935293ca003033b02622a3b3b3ce3503b2f35293ca003033b02152a1b204ea003033b020b2a3caa292503511e1b3b6464642f98293ba003043b50020830fa4c0c50511e33512d35292cfa480c2f3b3b2ce3503097293ca003043b50020831995031fa380c5032fa3b317d0a6544000000000000|@691,1,@11449,@662,@763,@664,@638| 15217:D4,48|fb082c929103212c352d362a38292fa091030b2a2ffa310c2c2a696402072a2ffa26307e076602013b43000000000000|@693,1,@11450,@763| 15218:D4,40|fb072b929103182b352c3629fa320c507881063b2d0cf102036d3b646502013b4200000000000000|@785,1,@11452,@784| 15219:D12,168|fb1078812c3b062e3ba203033c02042efaaea80303fab1103b502e28403bda2906faad316929063c2a2f2e6b2705f102706d29353fa003642c3cfa9c0c293b3bef293ba00304fa98024828102ab1292810b1293cb2292808b429fa64a503043b500203fa8310292841bd2a3cb22a2a3b3bf02b3b3b32f050fa6628082d28082810ec503128082d281834ec502b95502b2707fa5cfa622bfa676b66103b5029106442000000000000|@788,1,@11453,72057594037927935,@789,@15220,@801,@811,@286,@16,@815,@787| 15220:D7,112|fb0c2b3b3bef3b2a293ba003032a0221293cb22a3cb2292808b1312adc28072fb32a2ab1292f2508250826061e243b2706652b363ba00303fa4e103b50292c36b529920305293ba2020529942811a00308fa3d2afa420c020129299203043b500203fa3c102927044200000000000000|@793,1,@11454,@794,@796,@797,@792| 15221:D4,8|fb032c2cfa1a8b43|@798,1,@11455,@18911| 15222:D6,160|fb150b03002f3da0030d292810452e36462e37475002302f3ca0030c2940452e38462e394750021f2f3ea0030e292808452e3a462e23064750020c293d452e2307462e2308475029352a362b3733920305333ba2020533942811a03c0305343ba002033b3ba00304fa4e022e34920305343ba8020434943ca003033402063b220cfa3d0c0b02002c3b2b30343434fa380c502935299550292705270843000000|@803,1,@11456,@373,@804,@802| 15223:D4,8|fb032c2cfa1a8b43|@805,1,@11457,@18912| 15224:D10,200|fb113192031c319203043b500203fad0103b5031313b3b33333333333236347b0b090b0200349203292f9203223c03062ffab5a002033b3ba0030e3c030634faafa002033b3ba002013b29916402013b02013b033e2f3ba00303fa9c103b503b502ffa84a0030634fa86a002013b0303fa8e103b503b503430ad303ba00303fa87103b503b50220c31ae2b2b452a465051020734302bfa780c5029352a36299203043b500203fa38103b5029220d2c33220f220f220f220f220f220e3622107b0b0e000000000000|@808,1,@11458,@792,-1,-4611686018427387904,@315,@319,@313,@807| 15225:D4,16|fb042d2d2dfa218c4400000000000000|@809,1,@11459,@18913| 15226:D11,464|fb16333ba003d33c0305313ba002033b3ba003802e0343323cb1292810b1293cb2292808b4291abf01a503043b5002041abd01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808287ee450220d2c4528094627070238322810b1293cb2292808b4291a7f01a503043b5002041a7d01103b50292841bd2a3cb22a2a3b3bf02b3b3b2212f050220c2c45280846270602443231b10b0200220c2d2b220c220c220c220c34360c5029352a363b29220fa003043b5002122a2ab12c2a2830e4502a3cb12502501e19505029220eb1220d2c452a46270702ed2d3ba003041a1601103b503b50332eae293ba003033b0212293ba22f3ba22a2aa003032b02032b31aa652940a2031d28302aaa293ba203033c02042928ffa60303fae3103b503b502964021e28412aaa2940ab293ba203033c02042928ffa60303fac3103b503b502965303ba00303fabd103b503b5030fabda00307220dfabea002013b0303fabe103b503b50220d31ad313ba00303fa86103b503b50220e32ae293ba003033c020a293ba2333ba22a2aa06503032a02032a3cab220f3cb1220e3cb20b02002e2e22152f2d221522152215221522140c5029352a362a2a220ce450293cb122142c452a46270e1f0900000000000000|@810,1,@11460,72057594037927935,@286,@313,@308,@315,-1,-4611686018427387904,@319| 15227:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@11461,@7| 15228:D4,8|fb032c2cfa1a8b43|@685,1,@11462,@18914| 15229:D916,21320|fc510a2c1a59530c29372a382e03051a565302031a59532f03051a5b5302031a5e531a63533b3b2ce31a64532d0c1a67531a6c531a71530c3b1a74530c3b1a77530c2b1a7a533b2d2d3b3b3c6808280c2a691a43531a70531a75530c293b692b2a6928142a3b6a3c2a691a6b531a70532b1a74531a79533b3b68071a7a531a1f531a24530c3b1a27530c3b1a2a530c2b1a6d533b2d2d3b3b3c6808280c2a691a56531a23531a28530c293b692b2a6928142a3b6a3c2a691a4e531a53532b1a27531a2c533b3b6807401a4c530c291a4f533b1a53531a58533b68061a5a531a5f532b1a63536b1a4f532a692220230a0c2c1a5c530c28091a5e530c3c2a691a5f533d2b1a62531ae7523b3b680722133b69322a691a59532a691a5c532a69662d380c1a5b5333692e370c1a5b532216692f370c1a5a532d6930370c222b03051a365202031a3952293b691a4b532a696522270c1a4a5322280c1a4c5322290c1a4e53222a0c1a5053299291031829352a362a35292c6922300c502a250426031e173b6602013b641a3653222c0c1a3853299291031829352a362a35292c6922320c502a250426031e173b6602013b641a1e53222e0c1a2053061b0f273eba28062b2b6a293b6928052a1a14531a19531a1e5268053d2c2b6a2c3b691a12532a1a16531a1b530c3c2a691a1c531a21532b2f1afc513b3b6807293b691aea522a691a15532a696522390c1a14532b69223b0c3b1a9b510c3b1a0e530c1a12531a17533b2d2d3b3b3c6808280c2a691a10530628062a3b6a291a0e53692c2a6928142a3b6a293b3b1a07530c3b2a0c643c2a693c063c2a3b3b6b2b2a1afb526a1aff523b1a8b512c6b28053b1afb522c1a7f5168051afa52224b0c1afc52224c0c401a95510c291a98513b1a9c511af1523b68061af3521aa8512b1aac516b1ae8522a692252230a0c2c1aa5510c1a2952061b0f273eba28062b2b6a1a1b52061b0f273eba28062b2b6a3b1ae4500c3b1abf520c1ac3521ac8523b2d2d3b3b3c6808280c2a692d3b69312a69291aba520c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a99500c2a3ba203041a9052103b503b2b1a90520c2f1a93523b2d2d3b3b3c6808280c2a6927043d220c336a3c2b691a82523d2b2d1aa4503b3b68071a75522a692212370c1a7c51061b0f273eba28062b2b6a1a6e51061b0f273eba28062b2b6a2c3b6928051adb500c2a1a26520c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a05500c2a3ba203041afc51103b503b2b1a14520c2d1aff513b2d2d3b3b3c6808280c2a6927043d311a14506a3c2b691afd513d2b2d1a0f503b3b68071af0512a692220370c343b691aec511af1510c2a1aac510c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a8b4f0c2a3ba203041a8251103b503b2b1aba510c2d1a85513b2d2d3b3b3c6808280c2a692704220f3b6922102a69293c1aa2510c291aa5510c3b2a3c6a3e2c2b6a3d2a1a7f4f6a3c31691a98513d2b2d1a7a4f3b3b68071a8b512a69222e370c22163b69221a2a693b1a81510c3b1a84510c1a88511a8d513b2d2d3b3b3c6808280c2a692d1afd500c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1adc4e0c2a3ba203041ad350103b503b2b1a4b510c2d1ad6503b2d2d3b3b3c6808280c2a69270422211a3b5169293c1af5500c291af8500c3b2a3c6a3e2c2b6a3d2a22256a3c30691a24513d2b2d1ace4e3b3b68071a17512a69223f370c22273b69222b2a693b1ad5500c3b1ad8500c1a04511ae1503b2d2d3b3b3c6808280c2a692d1a51500c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a304e0c2a3ba203041a2750103b503b2b1abf500c2d1a2a503b2d2d3b3b3c6808280c2a69270422321aaf5069293c1a49500c291a4c500c3b2a3c6a3e2c2b6a3d2a22366a3c30691a98503d2b2d1a224e3b3b68071a8b502a692250370c22383b69223c2a693b1a29500c3b1a2c500c1a78501a35503b2d2d3b3b3c6808280c2a692d1aa54f0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a844d0c2a3ba203041a7b4f103b503b2b1a33500c2d1a7e4f3b2d2d3b3b3c6808280c2a69270422431a235069293c1a9d4f0c291aa04f0c3b2a3c6a3e2c2b6a3d2a22476a3c30691a0c503d2b2d1a764d3b3b68071aff4f2a692261370c22493b69224d2a693b1a7d4f0c3b1a804f0c1aec4f1a894f3b2d2d3b3b3c6808280c2a692d1af94e0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ad84c0c2a3ba203041acf4e103b503b2b1aa74f0c2d1ad24e3b2d2d3b3b3c6808280c2a69270422541a974f69293c1af14e0c291af44e0c3b2a3c6a3e2c2b6a3d2a22586a3c30691a804f3d2b2d1aca4c3b3b68071a734f2a692272370c225d3b6928081a1c4d0c2a1a674e0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a464c0c2a3ba203041a3d4e103b503b2b1a2d4f0c2d1a404e3b2d2d3b3b3c6808280c2a6927043d22621a1c4f6a3c2b691a1d4f3d2b2d1a4f4c3b3b68071a104f2a69227a370c22653b6928071aa14c0c2a1aec4d0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1acb4b0c2a3ba203041ac24d103b503b2b1aca4e0c2d1ac54d3b2d2d3b3b3c6808280c2a6927043d226a1aa14e6a3c2b691ab24e3d2b2d1ad44b3b3b68071aa54e2a692282370c1aa44e2283370c226b3b69226f2a693b1a9c4e0c3b1a9f4e0c1aa34e1aa84e3b2d2d3b3b3c6808280c2a692d1a504d0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a2f4b0c2a3ba203041a264d103b503b2b1a664e0c2d1a294d3b2d2d3b3b3c6808280c2a69270422733b691a044e2a6922782a69293c1a414d0c291a444d0c3b2a3c6a3e2c2b6a3d2a1a364e6a3c32691a374e3d2b2d1a194b3b3b68071a2a4e2a692296370c227e3b6922822a693b1ae84d0c3b1aeb4d0c1a174e1af44d3b2d2d3b3b3c6808280c2a692d1a9c4c0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a7b4a0c2a3ba203041a724c103b503b2b1ad24d0c2d1a754c3b2d2d3b3b3c6808280c2a69270422863b691a504d2a69228b2a69293c1a8d4c0c291a904c0c3b2a3c6a3e2c2b6a3d2a1a824d6a3c32691a9b4d3d2b2d1a654a3b3b68071a8e4d2a6922a9370c22943b693e1ab84a0c2a1a034c0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ae2490c2a3ba203041ad94b103b503b2b1a494d0c2d1adc4b3b2d2d3b3b3c6808280c2a6927043d22991a084d6a3c2b691a314d3d2b2d1aeb493b3b68071a244d2a6922b1370c229c3b691a1f4d1acc4b0c2a1a874b0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a66490c2a3ba203041a5d4b103b503b2b1ae54c0c2d1a604b3b2d2d3b3b3c6808280c2a6927041ad74c3c1a834b0c291a864b0c3b2a3c6a3e2c2b6a3d2a22a66a3c2f691ac24c3d2b2d1a5c493b3b68071ab54c2a6922bd370c22a53b6922a92a69291afb4a0c2992919103051aa14c02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1ad8480c2a3ba203041acf4a103b503b2b1a774c0c1a6b4c1ad04a3b2d2d3b3b3c6808280c2a69270422ac3b691aab4b2a691aa64b2a69293c1ae74a0c291aea4a0c3b2a3c6a3e2c2b6a3d2a22b26a3c32691a3e4c3d2b2d1ac0483b3b68071a314c2a6922cc370c22b73b693b1a2b4c0c3b1a2e4c0c1a324c1a374c3b2d2d3b3b3c6808280c2a692d1a474a0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a26480c2a3ba203041a1d4a103b503b2b1af54b0c2d1a204a3b2d2d3b3b3c6808280c2a69270422be1ae54b6922bf2a69293c1a3b4a0c291a3e4a0c3b2a3c6a3e2c2b6a3d2a1a18486a3c31691ac94b3d2b2d1a13483b3b68071abc4b2a6922dd370c22c83b693b1a7e4b0c3b1a814b0c1aad4b1a8a4b3b2d2d3b3b3c6808280c2a692d1a9a490c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a79470c2a3ba203041a7049103b503b2b1a684b0c2d1a73493b2d2d3b3b3c6808280c2a69270422cf1a584b6922d02a69293c1a8e490c291a91490c3b2a3c6a3e2c2b6a3d2a133c016a3c31691a3c4b3d2b2d1a66473b3b68071a2f4b2a6922ee370c22d93b693b1ad14a0c3b1ad44a0c1a204b1add4a3b2d2d3b3b3c6808280c2a692d1aed480c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1acc460c2a3ba203041ac348103b503b2b1adb4a0c2d1ac6483b2d2d3b3b3c6808280c2a69270422e01acb4a6922e12a69293c1ae1480c291ae4480c3b2a3c6a3e2c2b6a3d2a1ad6496a3c31691aaf4a3d2b2d1ab9463b3b68071aa24a2a6922ff370c22ea3b693b1a244a0c3b1a274a0c1a934a1a304a3b2d2d3b3b3c6808280c2a692d1a40480c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a1f460c2a3ba203041a1648103b503b2b1a4e4a0c2d1a19483b2d2d3b3b3c6808280c2a69270422f11a3e4a6922f22a69293c1a34480c291a37480c3b2a3c6a3e2c2b6a3d2a1a29496a3c31691a224a3d2b2d1a0c463b3b68071a154a2a69131001370c3b1a1a480c3b1a1d480c1a094a1a26483b2d2d3b3b3c6808280c2a691aff493c1ae3470c291ae6470c3b2a3c6a3e2c2b6a3d2a1a88486a3c2f691ae9493d2b2d1abb453b3b68071adc492a69131c01370c3b1a91480c3b1a94480c1ad0491a9d483b2d2d3b3b3c6808280c2a691ac6493c1a92470c291a95470c3b2a3c6a3e2c2b6a3d2a1a87486a3c2f691ab0493d2b2d1a6a453b3b68071aa3492a69132801370c1a4146061b0f273eba28062b2b6a1a3346061b0f273eba28062b2b6a1a85491a8a490c28072a1a8b493c6b3b1aed440c3b1a88490c2b1a8b493b2d2d3b3b3c6808280c2a692f3b69332a69291ac5460c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1aa4440c2a3ba203041a9b46103b503b2b1a43490c2f1a9e463b2d2d3b3b3c6808280c2a6927041a05491a0a490c28072a1a2b493c6b3b1a6d440c3b1a28490c2b1a2b493b2d2d3b3b3c6808280c2a6922103b6922142a69291a43460c2992919103032c02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a22440c2a3ba203041a1946103b503b2b1ae1480c2f1a1c463b2d2d3b3b3c6808280c2a6927041a2345061b0f273eba28062b2b6a1a1545061b0f273eba28062b2b6a1a0745061b0f273eba28062b2b6a1af944061b0f273eba28062b2b6a1aeb44061b0f273eba28062b2b6a220c3b693b1a88481a8d480c2a1aa0450c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a7f430c2a3ba203041a7645103b503b2b1a56480c2d1a79453b2d2d3b3b3c6808280c2a69270422103b693b1a43481a30480c2a1a43450c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a22430c2a3ba203041a1945103b503b2b1a09480c2d1a1c453b2d2d3b3b3c6808280c2a6927043d1a4a4622166a3d1af3472b6a3d221722156a3d1ae7472b6a22123b6922162a69221a2a693d1add471ab2470c2a1ac5440c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1aa4420c2a3ba203041a9b44103b503b2b1aa3470c2d1a9e443b2d2d3b3b3c6808280c2a69270422183b69221c2a6922202a693d1a88471a4d470c2a1a60440c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a3f420c2a3ba203041a3644103b503b2b1a4e470c2d1a39443b2d2d3b3b3c6808280c2a69270422213b6922252a69293c1a56440c291a59440c3b2a3c6a3e2c2b6a3d2a22266a3d1af7462b6a22233b6922272a69222b2a69222f2a693e1a09471abe460c2a1ad1430c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ab0410c2a3ba203041aa743103b503b2b1acf460c2d1aaa433b2d2d3b3b3c6808280c2a692704222a3b69222e2a6922322a6922362a693e1ab0461a55460c2a1a68430c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a47410c2a3ba203041a3e43103b503b2b1a76460c2d1a41433b2d2d3b3b3c6808280c2a69270422343b6922382a69223c2a69293c1a5a430c291a5d430c3b2a3c6a3e2c2b6a3d2a223a6a3d1afb452b6a22373b69223b2a69223f2a6922432a6922472a693f1a29461abe450c2a1ad1420c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1ab0400c2a3ba203041aa742103b503b2b1aef450c2d1aaa423b2d2d3b3b3c6808280c2a69270422423b6922462a69224a2a69224e2a69293c1abf420c291ac2420c3b2a3c6a3e2c2b6a3d2a22496a3d1a60452b6a3c2246691aaf453d2b22431a90403b3b68071aa1452a69139d01370c3c2245691a9b453d2b22461a74403b3b68071a8d452a6913a001370c3c2269691a87453d2b22471a58403b3b68071a79452a6913a301370c3c2262691a73453d2b224a1a3c403b3b68071a65452a6913a601370c3c2244691a5f453d2b22391a20403b3b68071a51452a6913a901370c3c2241691a4b453d2b223c1a04403b3b68071a3d452a6913ac01370c3c2235691a37453d2b22281ae83f3b3b68071a29452a6913af01370c3c2231691a23453d2b222b1acc3f3b3b68071a15452a6913b201370c3c2223691a0f453d2b221c1ab03f3b3b68071a01452a6913b501370c3d3d1afd441a02450c1a0645299291033229352a362a352b3628062a3b6a3c2a692c3b2b1af3441a783f3b3b68072d2a6913bf01370c502e250826071e303b270702013b6413be013b6928052a1ad2441ad7441a4c3f6805293b691a04442a69293c1a45410c291a48410c3b2a3c6a3e2c2b6a1abc443d2b6a293b691abb442a691abe442a691ac1442a691ac4442a691ac7442a6929299291033829352a362a352b362c373d2a1a70446a28062c3b6a3c2a692e3b2b2e1ae83e3b3b68072f2a6913d101370c5030250a26091e363b270902013b64401af13e0c291af43e3b1af83e1a7d443b68061a7f441a043f2b1a083f6b1a74442a69131e02230a0c2c1a003f0c1a6c443c1aa0400c291aa3400c3b2a3c6a3e2c2b6a3d2a1a053e6a293b691af63d2a691af13d2a69293c1a7a400c291a7d400c3b2a3c6a3e2c2b6a3d2a1a573e6a1a33443c1a5f400c291a62400c3b2a3c6a3e2c2b6a3d2a1abc3d6a293b691ab53d2a691ab03d2a69293c1a39400c291a3c400c3b2a3c6a3e2c2b6a3d2a1a963d6a1afa433c1a1e400c291a21400c3b2a3c6a3e2c2b6a1aed433c1a09400c291a0c400c3b2a3c6a3e2c2b6a3d2e2b6a3d1aab422b6a3c223b691ad2433d2b2d1adc3d3b3b68071acd432227380c1ace431ad3430c3c2a691ad4433d2b221f1abd3d3b3b68071ac6432a69222b370c1ac5431ab2430c3c2a691ac3433d2b22231a9c3d3b3b68071ab5432a69222f370c1ab4431a91430c3c2a691ab2433d2b22271a7b3d3b3b68071aa4432a692233370c1aa3431a70430c3c2a691aa1433d2b222b1a5a3d3b3b68071a93432a692237370c1a92431a4f430c3c2a691a90433d2b22221a393d3b3b68071a82432a69223b370c1a81431a2e430c3c2a691a7f433d2b22261a183d3b3b68071a71432a69223f370c1a70431a0d430c3c2a691a6e433d2b222a1af73c3b3b68071a60432a692243370c1a5f43221e692244370c401a043d0c291a073d3b1a0b3d1a50433b68061a52431a173d2b1a1b3d6b1a47432a69136702230a0c2c1a133d0c1a3f433c1ab33e0c291ab63e0c3b2a3c6a3e2c2b6a3d2a1a903c6a1a2c433c1a983e0c291a9b3e0c3b2a3c6a3e2c2b6a3d2a1afd3b6a1a194334380c1a1b431a683e0c3c2a691a19433d2b341a633c3b3b68071a0c432a69220f370c1a0b431a483e0c3c2a691a09433d2b220f1a423c3b3b68071afb422a692213370c1afa421a273e0c3c2a691af8423d2b22131a213c3b3b68071aea422a692217370c1ae9421a063e0c3c2a691ae7423d2b22171a003c3b3b68071ad9422a69221b370c1ad8421ae53d0c3c2a691ad6423d2b22161adf3b3b3b68071ac8422a69221f370c1ac7421ac43d0c3c2a691ac5423d2b221a1abe3b3b3b68071ab7422a692223370c1ab6421aa33d0c3c2a691ab4423d2b221e1a9d3b3b3b68071aa6422a692227370c1aa5421a823d0c3c2a691aa3423d2b22221a7c3b3b3b68071a95422a69222b370c1a94421a613d0c3c2a691a92423d2b22261a5b3b3b3b68071a84422a69222f370c401a723b0c291a753b3b1a793b1a76423b68061a78421a853b2b1a893b6b1a6d422a69139b02230a0c2c1a813b0c1350023b691351022a69293c1a193d0c291a1c3d0c3b2a3c6a3e2c2b6a3d2a1af63a6a1357023b691358022a69293c1af63c0c291af93c0c3b2a3c6a3e2c2b6a3d2a135f026a135e021a1c4269293c1ad63c0c291ad93c0c3b2a3c6a3e2c2b6a3d2a1365026a1365023b691a02422a69642215380c1a00421a9d3c0c3c2a691a4e413d2b22131a973a3b3b68071a40412a692219370c1ae7411a7c3c0c3c2a691ae5413d2b22171a763a3b3b68071ad7412a69221d370c1ad6411a5b3c0c3c2a691a2c413d2b221b1a553a3b3b68071a1e412a692221370c1abd411a3a3c0c3c2a691abb413d2b221f1a343a3b3b68071aad412a692225370c1aac411a193c0c3c2a691a0a413d2b221c1a133a3b3b68071afc402a692229370c1a93411af83b0c3c2a691af9403d2b22201af2393b3b68071aeb402a69222d370c1a7a411ad73b0c3c2a691ae8403d2b22241ad1393b3b68071ada402a692231370c1a61411ab63b0c3c2a691a5f413d2b22281ab0393b3b68071a51412a692235370c1a50411a953b0c3c2a691a4e413d2b222c1a8f393b3b68071a40412a692239370c1a3f411a743b0c3c2a691a3d413d2b22301a6e393b3b68071a2f412a69223d370c1a2e411a533b0c3c2a691a2c413d2b22341a4d393b3b68071a1e412a692241370c1a1d411a323b0c3c2a691a1b413d2b22381a2c393b3b68071a0d412a692245370c1a0c411a113b0c3c2a691a0a413d2b22361a0b393b3b68071afc402a692249370c1afb401af03a0c3c2a691af9403d2b223a1aea383b3b68071aeb402a69224d370c1aea401acf3a0c3c2a691ae8403d2b223e1ac9383b3b68071ada402a692251370c401ae0380c291ae3383b1ae7381acc403b68061ace401af3382b1af7386b1ac3402a6913f102230a0c2c1aef380c1abb403c1a8f3a0c291a923a0c3b2a3c6a3e2c2b6a3d2a1a6c386a1aa8403c1a743a0c291a773a0c3b2a3c6a3e2c2b6a3d2a1a193b6a3d1a143b13b2026a280d1ab3380c3c2a691a84403d2b2e1a3e383b3b68073d1af63a13b6026a280c1a95380c3c2a691a6e403d2b2e1a20383b3b68073d13b9021ad53a6a28061a77380c3c2a691a58403d2b2e1a02383b3b68071a53402217380c1a54401ae9390c3c2a691a9a3e3d2b22171ae3373b3b68071a8c3e2a69221b370c1a3b401ac8390c3c2a691a39403d2b221b1ac2373b3b68071a2b402a69221f370c1a2a401aa7390c3c2a691a783e3d2b221f1aa1373b3b68071a6a3e2a692223370c1a11401a86390c3c2a691a0f403d2b22231a80373b3b68071a01402a692227370c1a00401a65390c3c2a691a563e3d2b22221a5f373b3b68071a483e2a69222b370c1ae73f1a44390c3c2a691a453e3d2b22261a3e373b3b68071a373e2a69222f370c1ace3f1a23390c3c2a691a343e3d2b222a1a1d373b3b68071a263e2a692233370c1ab53f1a02390c3c2a691ab33f3d2b222e1afc363b3b68071aa53f2a692237370c1aa43f1ae1380c3c2a691aa23f3d2b22321adb363b3b68071a943f2a69223b370c1a933f1ac0380c3c2a691a913f3d2b22361aba363b3b68071a833f2a69223f370c1a823f1a9f380c3c2a691a803f3d2b223a1a99363b3b68071a723f2a692243370c1a713f1a7e380c3c2a691a6f3f3d2b223e1a78363b3b68071a613f2a692247370c1a603f1a5d380c3c2a691a5e3f3d2b22421a57363b3b68071a503f2a69224b370c1a4f3f1a3c380c3c2a691a4d3f3d2b22461a36363b3b68071a3f3f2a69224f370c1a3e3f1a1b380c3c2a691a3c3f3d2b224a1a15363b3b68071a2e3f2a692253370c1a2d3f2246692254370c1a2b3f2243692255370c1a293f2240692256370c401a0e360c291a11363b1a15361a1a3f3b68061a1c3f1a21362b1a25366b1a113f2a69134c03230a0c2c1a1d360c1a093f2a380c1a0b3f3c1ab7370c291aba370c3b2a3c6a3e2c2b6a3d2a1a94356a1af83e1a8d370c3c2a691a3e3c3d2b2e1a88353b3b68071a313c2a6933370c1ad13e3c1a7d370c291a80370c3b2a3c6a3e2c2b6a3d2a1a5a356a1ac63e1a53370c3c2a691ac43e3d2b2e1a4e353b3b68071ab73e2a692213370c1a963e3c1a42370c291a45370c3b2a3c6a3e2c2b6a3d2a1a1f356a1a9b3e1a18370c3c2a691ae93b3d2b2e1a13353b3b68071adc3b2a69221c370c1a5b3e3c1a07370c291a0a370c3b2a3c6a3e2c2b6a3d2a1ae4346a1a683e1add360c3c2a691a663e3d2b2e1ad8343b3b68071a593e2a692225370c401aef340c291af2343b1af6341a4b3e3b68061a4d3e1a02352b1a06356b1a423e2a69137603230a0c2c1afe340c1a3a3e2a380c401abb340c291abe343b1ac2341a2f3e3b68061a313e1ace342b1ad2346b1a263e2a69137c03230a0c2c1aca340c1a1e3e1ab3380c28072a1a1c3e3c6b3b1a16340c3b1a193e0c2b1a1c3e3b2d2d3b3b3c6808280c2a691a153e1a8a380c28072a1a133e3c6b3b1aed330c3b1a103e0c2b1a133e3b2d2d3b3b3c6808280c2a693c30691a093e3d2b1a0c3e1a09343b3b68073c2c691a073e3d2b1a0a3e1af7333b3b68071a083e3c1af4350c291af7350c3b2a3c6a3e2c2b6a3d2a1ad1336a1af53d3c1ad9350c291adc350c3b2a3c6a3e2c2b6a3d2a1ae63d6a1aea3d221b380c1aeb3d220e69221c370c1ae93d220d69221d370c1ae73d1a94350c3c2a691a453a3d2b220d1a8e333b3b68071a373a2a692221370c1ace3d1a73350c3c2a691acc3d3d2b22111a6d333b3b68071abe3d2a692225370c1abd3d1a52350c3c2a691a233a3d2b22151a4c333b3b68071a153a2a692229370c1aa43d1a31350c3c2a691aa23d3d2b22191a2b333b3b68071a943d2a69222d370c1a933d1a10350c3c2a691a913d3d2b221d1a0a333b3b68071a833d2a692231370c1a823d1aef340c3c2a691ae0393d2b221c1ae9323b3b68071ad2392a692235370c1a693d1ace340c3c2a691acf393d2b22201ac8323b3b68071ac1392a692239370c1a503d1aad340c3c2a691abe393d2b22241aa7323b3b68071ab0392a69223d370c1a373d1a8c340c3c2a691a353d3d2b22281a86323b3b68071a273d2a692241370c280b1adc320c3c2a691a1d3d3d2b1a203d1a65323b3b68071a0e3d2a692245370c401abc320c3c2a691a0d3d3d2b1a003d1a45323b3b68071afe3c2a692249370c3f1a9c320c3c2a691af53c3d2b1af83c1a25323b3b68071ae63c2a69224d370c401a3c320c291a3f323b1a43321ae03c3b68061ae23c1a4f322b1a53326b1ad73c2a6913ce03230a0c2c1a4b320c401a0e320c291a11323b1a15321ac23c3b68061ac43c1a21322b1a25326b1ab93c2a6913d303230a0c2c1a1d320c1ab13c0628062a3b6a291aaf3c691ab33c2a6928142a3b6a293b3b1afe320c3b2a0c643c2a693c063c2a3b3b6b2b2a1a9a3c6a1a9e3c3b1aa23c2c6b28053b1aa23c2c3b68053d1a82342b6a1a9d3c3d1aa13c2c1a65313b3b68073c1ac5310c3c2a691a963c3d2b1a993c1a4e313b3b68073b1aae310c3c2a691a8f3c3d2b1a923c1a37313b3b68073d1a97310c3c2a691a883c3d2b1a8b3c1a20313b3b6807220c3b691a853c2a69642218380c1a833c34692219370c1a823c3269221a370c1a813c3069221b370c1a803c2e69221c370c401a0e310c291a11313b1a15311a723c3b68061a743c1a21312b1a25316b1a693c2a6913f403230a0c2c1a1d310c1aa131061b0f273eba28062b2b6a13ac031a503c69293c1aaa320c291aad320c3b2a3c6a3e2c2b6a3d2a306a2f3b693b1aa9320c3b1aac320c1a303c1ab5323b2d2d3b3b3c6808280c2a692d1a25320c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a04300c2a3ba203041afb31103b503b2b1aeb3b0c2d1afe313b2d2d3b3b3c6808280c2a6927043c2a691ada3b3d2b341a14303b3b680713bb031ad23b69293c1a0c320c291a0f320c3b2a3c6a3e2c2b6a3d2a1ab1326a3b1a0c320c3b1a0f320c1ab33b1a18323b2d2d3b3b3c6808280c2a693c2a691aa63b3d2b311ac82f3b3b680713c7031a9e3b69293c1ac0310c291ac3310c3b2a3c6a3e2c2b6a3d2a22226a22213b693b1abd310c3b1ac0310c1a7c3b1ac9313b2d2d3b3b3c6808280c2a692d1a39310c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a182f0c2a3ba203041a0f31103b503b2b1a373b0c2d1a12313b2d2d3b3b3c6808280c2a6927043c2a691a263b3d2b341a282f3b3b680713d6031a1e3b69293c1a20310c291a23310c3b2a3c6a3e2c2b6a3d2a13dd036a3b1a20310c3b1a23310c1aff3a1a2c313b2d2d3b3b3c6808280c2a693c2a691af23a3d2b311adc2e3b3b680713e2031aea3a69293c1ad4300c291ad7300c3b2a3c6a3e2c2b6a3d2a1ae1386a3b1ad4300c3b1ad7300c1acb3a1ae0303b2d2d3b3b3c6808280c2a693c2a691abe3a3d2b311a902e3b3b680713ee031ab63a69293c1a88300c291a8b300c3b2a3c6a3e2c2b6a3d2a1a95386a3b1a88300c3b1a8b300c1a973a1a94303b2d2d3b3b3c6808280c2a693c2a691a8a3a3d2b311a442e3b3b6807224e3b691af9302a6913fc032a69293c1a35300c291a38300c3b2a3c6a3e2c2b6a3d2a1a2a316a22563b693b1af9300c3b1afc300c1a503a1a05313b2d2d3b3b3c6808280c2a692d1aad2f0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a8c2d0c2a3ba203041a832f103b503b2b1a0b3a0c2d1a862f3b2d2d3b3b3c6808280c2a6927043c2a691afa393d2b341a9c2d3b3b6807130b041af23969293c1a942f0c291a972f0c3b2a3c6a3e2c2b6a3d2a1a89306a3b1a5c300c3b1a5f300c1ad3391a68303b2d2d3b3b3c6808280c2a693c2a691ac6393d2b311a502d3b3b6807226b3b691a05302a691319042a69293c1a412f0c291a442f0c3b2a3c6a3e2c2b6a3d2a1a36306a22733b693b1a05300c3b1a08300c1a8c391a11303b2d2d3b3b3c6808280c2a692d1ab92e0c2992919103032a02433b2a299291031229362b3caa292b25042504511e113b6502012a653b1a982c0c2a3ba203041a8f2e103b503b2b1a47390c2d1a922e3b2d2d3b3b3c6808280c2a6927043c2a691a36393d2b341aa82c3b3b68071328043b691a5c2f2a69132a042a69293c1a982e0c291a9b2e0c3b2a3c6a3e2c2b6a3d2a1a8d2f6a3b1a602f0c3b1a632f0c1aff381a6c2f3b2d2d3b3b3c6808280c2a693c2a691af2383d2b311a542c3b3b68071336041aea3869293c1a4c2e0c291a4f2e0c3b2a3c6a3e2c2b6a3d2a1a412f6a3b1a142f0c3b1a172f0c1acb381a202f3b2d2d3b3b3c6808280c2a693c2a691abe383d2b311a082c3b3b68071342041ab63869293c1a002e0c291a032e0c3b2a3c6a3e2c2b6a3d2a1af52e6a3b1ac82e0c3b1acb2e0c1a97381ad42e3b2d2d3b3b3c6808280c2a693c2a691a8a383d2b311abc2b3b3b68071a853822946922a6370c1a833822896922a7370c1a8138227b6922a8370c1a7f3822706922a9370c1a7d3822656922aa370c1a7b38225a6922ab370c1a7938224a6922ac370c1a7738223f6922ad370c1a7538222f6922ae370c1a733822226922af370c1a713822176922b0370c1a6f38220c6922b1370c1a6d383b3b1a982c0c3b2a0c641a68383b3b1a8b2c0c3b2a0c641a63383b3b1a7e2c0c3b2a0c641a5e3822db370c1a5f3822dc370c1a603822dd370c1a613822de370c280613b1043b6a3c2a691a58383d2b1ae32a1ae82a3b3b68071a49382a6922e2370c1a48381a4d38220c1a50380c1a54381a592a220c1a44380c1a50381a452a220d1a38380c1a4c381a5138220d1a2c380c1a50381af52e0c28072a1a4e383c6b1a51381ae62e0c28072a1a4f383c6b28052c2b1a4e386b28051a50381a55382c6b1a58381a5d380c3b1a60380c2b1a63383b2d2d3c3b3c6808280c2a693d2a69293b69293ba003041a5138103b50291a52380c3e2a69293b691a50382a691a53382a691a56381a832e0c28072a1a54383c6b28051a55382b1ae9376b2c3ba00303290205280f2d2b6a1a48381af5370c3b1a48380c2b1a4b383b2d2d3c3e3c6808280c2a693b1ab3290c3b1a3e380c2b1a41383b2d2d3b3b3c6808280c2a691a3a380628062a3b6a3b1a90290c3b1a33380c1a37381a3c383b2d2d3b3b3c6808280c2a693b1a74290c3b1a2f380c1a33381a38383b2d2d3b3b3c6808280c2a69293b692e2a69332a69220d2a6928142a3b6a293b3b1ae42a0c3b2a0c643c2a691a612a061b0f273eba2a2a69293b693c063c2a3c3b6b2f2a1af9376a1afd372d1a59292c6b293b691af9372a696413ea040c3b1a2e370c3b1af1370c1af5371afa373b2d2d3c3e3c6808280c2a691af3370628062a3b6a291af137692c2a6928142a3b6a293b3b1a722a0c3b2a0c643c2a693c063c2a3b3b6b2b2a1ad6376a1ada373b1af6282c6b293b691ad6372a6964132d01380c1ad33713fb040c1ad437132f01380c1ad437133001380c1ab429061b0f273eba293fb828062c2b6a293b692a2a69293c1abb2a0c291abe2a0c3b2a3c6a3e2c2b6a3d2a1a98286a1aa4373d1aa8372c1aac373b3b68071a95372a69130b050c1a6c29061b0f273eba293fb828062c2b6a293b692a2a69293c1a732a0c291a762a0c3b2a3c6a3e2c2b6a3d2a1a50286a1a74373d1a78372c1a64373b3b68071a75372a691318050c401a63280c291a66283b1a6a281a67373b68061a69371a76282b1a7a286b1a5e372a69131d05230a0c2c1a72280c2937401a33280c291a36283b1a3a281a47373b68061a49371a46282b1a4a286b1a3e372a692e230a0c2c1a44280c401a07280c291a0a283b1a0e281a2b373b68061a2d371a1a282b1a1e286b1a22372a692d230a0c2c1a18280c401adb270c291ade273b1ae2271a0f373b68061a11371aee272b1af2276b1a06372a6932230a0c2c1aec270c401aaf270c291ab2273b1ab6271af3363b68061af5361ac2272b1ac6276b1aea362a69220e230a0c2c1abf270c401a82270c291a85273b1a89271ad6363b68061ad8361a95272b1a99276b1acd362a692213230a0c2c1a92270c401a55270c291a58273b1a5c271ab9363b68061abb361a68272b1a6c276b1ab0362a692218230a0c2c1a65270c401a28270c291a2b273b1a2f271a9c363b68061a9e361a3b272b1a3f276b1a93362a69221d230a0c2c1a38270c1a8c360628062a3b6a291a8a36691a9e262a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a61360c020129293b3b1aef270c3b2a0c643c2a693b063c2a3b3b6b2b2a1a4b366a1a4f363b1a73262c6b293b691a43362a69642226380c5028053b1a35362c1a592668051a0c360628062a3b6a291a0a36691a1e262a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae1350c020129293b3b1a6f270c3b2a0c643c2a693b063c2a3b3b6b2b2a1adb356a1adf353b1af3252c6b293b691ad3352a69642233380c5028053b1ac5352c1ad92568051a8c350628062a3b6a291a8a35691a9e252a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a61350c020129293b3b1aef260c3b2a0c643c2a693b063c2a3b3b6b2b2a1a6b356a1a6f353b1a73252c6b293b691a63352a6964223b380c5028053b1a55352c1a592568051a0c350628062a3b6a291a0a35691a1e252a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae1340c020129293b3b1a6f260c3b2a0c643c2a693b063c2a3b3b6b2b2a1afb346a1aff343b1af3242c6b293b691af3342a69642243380c5028053b1ae5342c1ad92468051a8c340628062a3b6a291a8a34691a9e242a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a61340c020129293b3b1aef250c3b2a0c643c2a693b063c2a3b3b6b2b2a1a8b346a1a8f343b1a73242c6b293b691a83342a69642246380c5028053b1a75342c1a592468051a0c340628062a3b6a291a0a34691a1e242a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae1330c020129293b3b1a6f250c3b2a0c643c2a693b063c2a3b3b6b2b2a1a1b346a1a1f343b1af3232c6b293b691a13342a69642258380c5028053b1a05342c1ad92368051a8c330628062a3b6a291a8a33691a9e232a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a61330c020129293b3b1aef240c3b2a0c643c2a693b063c2a3b3b6b2b2a1aab336a1aaf333b1a73232c6b293b691aa3332a6964225b380c5028053b1a95332c1a592368051a9433224f691a96332236691a9833222a691a9a332211691a9c33221f691a9e332f69293b692b2a692d2a692f2a69312a69332a69293b2a929103292a352b362a352b361a80330c2c3ba00303290206292d1a7a330c2b2a2506250626041e273b270402012965291a6c330c291a6f330c3b2a3c6a3e2c2b6a3d3b2b6a1a67332a1a6b336a1a6f333b1acb222c6b293b691a6b332a6964228e380c22633b691a75272a69293c1ab6240c291ab9240c3b2a3c6a3e2c2b6a293b6928052a1a47331a4c331a912268051a4c332a6922453b691a43272a69293c1a84240c291a87240c3b2a3c6a3e2c2b6a293b6928052a1a15331a1a331a5f2268051a22332a69225b3b691a11272a69293c1a52240c291a55240c3b2a3c6a3e2c2b6a293b6928052a1ae3321ae8321a2d2268051af8322a69223d3b691adf262a69293c1a20240c291a23240c3b2a3c6a3e2c2b6a293b6928052a1ab1321ab6321afb2168051ace322a6922533b691aad262a69293c1aee230c291af1230c3b2a3c6a3e2c2b6a293b6928052a1a7f321a84321ac92168051aa4322a6922423b691a7b262a69293c1abc230c291abf230c3b2a3c6a3e2c2b6a293b6928052a1a4d321a52321a972168051a7a322a69293b69332a6922142a69221e2a6922282a6922322a69291a66320c28053b1a673222411a6a2168052a1ae4310c291ae7310c3b2a3c6a3e2c2b6a1a533222d7380c401a73210c291a76213b1a7a211a47323b68061a49321a86212b1a8a216b1a3e322a6922db230a0c2c1a83210c1ad7300628062a3b6a291ad530691ae9202a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aac300c020129293b3b1a3a220c3b2a0c643c2a693b063c2a3b3b6b2b2a1ade316a1ae2313b1abe202c6b293b691ad6312a6964220d380c5028053b1ac8312c1aa42068051a57300628062a3b6a291a5530691a69202a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2c300c020129293b3b1aba210c3b2a0c643c2a693b063c2a3b3b6b2b2a1a6e316a1a72313b1a3e202c6b293b691a66312a6964221a380c5028053b1a58312c1a242068051ad72f0628062a3b6a291ad52f691ae91f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aac2f0c020129293b3b1a3a210c3b2a0c643c2a693b063c2a3b3b6b2b2a1afe306a1a02313b1abe1f2c6b293b691af6302a69642227380c5028053b1ae8302c1aa41f68051a572f0628062a3b6a291a552f691a691f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2c2f0c020129293b3b1aba200c3b2a0c643c2a693b063c2a3b3b6b2b2a1a8e306a1a92303b1a3e1f2c6b293b691a86302a69642234380c5028053b1a78302c1a241f68051ad72e0628062a3b6a291ad52e691ae91e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aac2e0c020129293b3b1a3a200c3b2a0c643c2a693b063c2a3b3b6b2b2a1a1e306a1a22303b1abe1e2c6b293b691a16302a69642241380c5028053b1a08302c1aa41e68051a572e0628062a3b6a291a552e691a691e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2c2e0c020129293b3b1aba1f0c3b2a0c643c2a693b063c2a3b3b6b2b2a1aae2f6a1ab22f3b1a3e1e2c6b293b691aa62f2a6964224e380c5028053b1a982f2c1a241e68051ad72d0628062a3b6a291ad52d691ae91d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aac2d0c020129293b3b1a3a1f0c3b2a0c643c2a693b063c2a3b3b6b2b2a1a3e2f6a1a422f3b1abe1d2c6b28053b1a3e2f2c1ab21d680522273b691a392f2a691a64222a69293c1aa51f0c291aa81f0c3b2a3c6a3e2c2b6a1a242f2a6922563b6922302a691a3f222a69293c1a801f0c291a831f0c3b2a3c6a3e2c2b6a1a072f2a6922373b691aee2e2a691a19222a69293c1a5a1f0c291a5d1f0c3b2a3c6a3e2c2b6a1ae92e2a6922663b6922262a691af4212a69293c1a351f0c291a381f0c3b2a3c6a3e2c2b6a1acc2e2a69223a3b691ad3212a69293c1a141f0c291a171f0c3b2a3c6a3e2c2b6a1ab32e2a6922683b6922692a69293c1af41e0c291af71e0c3b2a3c6a3e2c2b6a1a9b2e2a69227c3b691381062a691ac51c2a6922582a691a84212a69293c1ac51e0c291ac81e0c3b2a3c6a3e2c2b6a1a742e2a6922863b6922602a691a5f212a69293c1aa01e0c291aa31e0c3b2a3c6a3e2c2b6a1a572e2a69293b69322a6922142a69221c2a6922242a69222d2a6922362a69223f2a693b2a299291031229362b3caa292b25042504511e113b6502012a650b03002e3b2b1a1b2e0c5029372f2a2250311a172e0c29299291031929352a362a35292c696422ae370c50292503511e183b6502013b6422512b691af62d2a696422ac380c22513b6928052a1aad2c1ab22c1af71b680522873b6928052a1a9b2c1aa02c1ae51b6805291acf2d692c2a69293c1ade1d0c291ae11d0c3b2a3c6a3e2c2b6a3d3b2b6a1a512c2a1ab52d6a1ab92d3b1ab51b2c6b293b691ab52d2a696422ba380c28053b1ab02d2d1a9c1b680522943b6922af2a6922892a691a4b202a69293c1a8c1d0c291a8f1d0c3b2a3c6a3e2c2b6a3d2a1370016a3d332b6a1a812d1a862d2b6a229f3b6922ba2a6922942a691a15202a69293c1a561d0c291a591d0c3b2a3c6a3e2c2b6a3d2a137b016a3d22152b6a1a5a2d1a5f2d2b6a22aa3b6922c52a6913ca062a691a151b2a6922a12a691ad41f2a69293c1a151d0c291a181d0c3b2a3c6a3e2c2b6a3d2a1388016a3d22222b6a1a292d1a2e2d2b6a22b73b6922ab2a69293c1ae71c0c291aea1c0c3b2a3c6a3e2c2b6a3d2a1391016a3d222b2b6a1a0b2d1a102d2b6a22c03b6922db2a69229b2a691a6f1f2a69293c1ab01c0c291ab31c0c3b2a3c6a3e2c2b6a3d2a135b016a3d22362b6a1ae42c1ae92c2b6a3d22b21385016a3d22392b6a1ae02c1ae52c2b6a1ae82c1aed2c13a2016a1aee2c3c1a6a1c0c291a6d1c0c3b2a3c6a3e2c2b6a3d2a1a5f1d6a293b6928052a1ac51f1aca1f1a3f1a68053d2a1a481d6a1ac42c1ac92c2b6a1acc2c3c1a301c0c291a331c0c3b2a3c6a3e2c2b6a3d2a1a251d6a293b6928052a1a8b1f1a901f1a051a68053d2a1a0e1d6a1aa22c1aa72c2b6a1aaa2c3c1af61b0c291af91b0c3b2a3c6a3e2c2b6a3d2a1a9b2c6a293b6928052a1a511f1a561f1acb1968053d2a1ad41c6a1a882c1a8d2c2b6a1a902c3c1abc1b0c291abf1b0c3b2a3c6a3e2c2b6a3d2a1ab11c6a293b6928052a1a171f1a1c1f1a911968053d2a1a9a1c6a1a662c1a6b2c2b6a293b69332a6922142a69221e2a6922282a69222a2a69222e2a69223a2a6922442a6922522a69225e2a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a38193b3b68072e2a6966132c01370c502c250626051e313b270502013b641a092c130302380c1a092c299291031a29352a362a35292c69130802370c502a250426031e193b6602013b641aed2b130502380c1aed2b299291031a29352a362a35292c69130a02370c502a250426031e193b6602013b641aa919061b0f273eba293cb828062c2b6a3d2a2b6a1abc2b3d1ac02b2c1abc273b3b68071abd2b2a69130c020c1a7c19061b0f273eba293cb828062c2b6a3d2a1a411d6a1aa52b3d1aa92b2c1a8d273b3b68071aa62b2a691313020c1a4d19061b0f273eba293cb828062c2b6a291a932b69293c1a551a0c291a581a0c3b2a3c6a3e2c2b6a3d2a1a822b6a1a862b3d1a8a2b2c1a46273b3b68071a872b2a69131f020c1a0619061b0f273eba28062b2b6a1af818061b0f273eba28062b2b6a3d2d1a482b6a3d2b2b6a3d1a77172b6a3d2a1a001b6a1a542b3d1a582b2c1afc263b3b68071a552b2a69132b020c1abc18061b0f273eba28062b2b6a1aae18061b0f273eba28062b2b6a3d2d2b6a3d2a1a322b6a1a362b3d1a3a2b2c1abe263b3b68071a372b2a69130107370c1a352b130207370c1a352b1337020c401aad170c291ab0173b1ab4171a292b3b68061a2b2b1ac0172b1ac4176b1a202b2a69138b03230a0c2c1abc170c1a182b0628062a3b6a3b1a0e170c3b1a112b0c1a152b1a1a2b3b2d2d3b3b3c6808280c2a693b1af2160c3b1a0d2b0c1ab1251a0e2b3b2d2d3b3b3c6808280c2a69293b692e2a69332a691ae6162a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aa9260c020129293b3b1a37180c3b2a0c643c2a691ab417061b0f273eba2a2a69293b693b063c2a3c3b6b2f2a1aa42a6a1aa82a2d1aac162c6b293b691aa42a2a6964221b380c1a52260628062a3b6a291a5026691a64162a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a27260c020129293b3b1ab5170c3b2a0c643c2a693b063c2a3b3b6b2b2a1a492a6a1a4d2a3b1a39162c6b293b691a492a2a69642228380c28053b1a442a2d1a201668051a0317061b0f273eba28062b2b6a293b6928052a1a2f2a22161a021668053d2c306a3d2b2b6a2d3b69291aa9170c2992919103051a172a02453b2a299291031229362b3caa292b25042504511e113b6502012a653b1a86150c2a3ba203041a7d17103b503b2b1aed290c1ae1291a7e173b2d2d3b3b3c6808280c2a6927043c2a691ada293d2b301a94153b3b68071acd292a692236370c333b6928052a1aa62922201a791568053d2210220e6a3d2b2b6a220e3b69291a1d170c2992919103051aa32902453b2a299291031229362b3caa292b25042504511e113b6502012a653b1afa140c2a3ba203041af116103b503b2b1a79290c1a6d291af2163b2d2d3b3b3c6808280c2a6927043c2a691a66293d2b301a08153b3b68071a59292a692240370c22143b6928052a1a1929222a1aec1468053d221a1adc146a3d2b2b6a22183b69291a8f160c2992919103051a2d2902453b2a299291031229362b3caa292b25042504511e113b6502012a653b1a6c140c2a3ba203041a6316103b503b2b1a03290c1af7281a64163b2d2d3b3b3c6808280c2a6927043c2a691af0283d2b301a7a143b3b68071ae3282a69224a370c1a22240628062a3b6a291a2024691a34142a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291af7230c020129293b3b1a85150c3b2a0c643c2a693b063c2a3b3b6b2b2a1a89286a1a8d283b1a09142c6b28053b1a89282c1afd136805293b6928052a1aa2241aa7241aec136805293b691a74252a69293c1ae5150c291ae8150c3b2a3c6a3e2c2b6a3d3b2b6a1a58242a1a54286a1a58283b1abc132c6b28053b1a54282c1ab01368052a3b691a50282a696413a102380c3d1aac162c6a1a47282a693d1aa1162e6a1a44282a693d1a9616306a1a41282a693d1a8b16326a1a3e282a691a41283c1a75150c291a78150c3b2a3c6a3e2c2b6a1a34282a691a372813710269293b691a35282a691a38282a692d2a691a38282a69342a69220e2a691a34282a6922122a6922152a691a2f282a691a32282a691a35282a691a38282a693b2a299291031229362b3caa292b25042504511e113b6502012a650b03002e3b2b1aca240c5029372f2a2231311a0e280c29299291031a29352a362a35292c696413c802370c50292503511e193b6502013b6422322b691aec272a696413c602380c22603b6928052a1a5a231a5f231aa4126805293b691ad4272a6913f8012a69293c1a98140c291a9b140c3b2a3c6a3e2c2b6a222f3b6928052a1af8171afd171a721268053d1a7c1513fd016a293b6928052a1adf171ae4171a59126805293b692d2a69293c1a54140c291a57140c3b2a3c6a3e2c2b6a3d220c2b6a1a762713fe076928062a3b6a3c2a691a6f273d2b1a72271a1f123b3b68071a60272a69132f04370c1a66271303086928062a3b6a227c3b6928052a1aab221ab0221af51168053d2a1a4e276a3c2d691a4f273d2b2d1ae1113b3b68071a42272a69133704370c1a40273d1a442722101ac7113b3b68071a40272a696413e8020c0b1200131e082a1a37270c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f2210231022112311221122112211221122112211221122112211221122112211221122112211221122112211681228062a3b6a3c2a691ad6263d2b1342021a3e113b3b68071ac7262a69136204370c1a1512061b0f273eba28062b2b6a2b3b3b1ab426e350293b692a2a69293c1a17130c291a1a130c3b2a3c6a3e2c2b6a3d2a316a3d31326a313b69322a69293c1af6120c291af9120c3b2a3c6a3e2c2b6a3d2a1ad3106a1ac7173d1a7326341ae71f3b3b68071ab8172a69641343080c1abe173d1a5a26220c1acd1f3b3b68071aae172a69641344080c1ab4173d1a4026220d1ab31f3b3b68071aa4172a69641345080c1a3a1b3d1a2626220d1a991f3b3b68071a2a1b2a69641346080c1a18263d1a0c26220e1a7f1f3b3b68071a10262a69641347080c1a0e263d1af225311a661f3b3b68071a07262a69641348080c1a05263d1ad925321a4d1f3b3b68071afe252a69641349080c1af4163d1ac025331a341f3b3b68071ae5162a6964134a080c1abb163d1aa725341a1b1f3b3b68071aac162a6964134b080c1aca253d1a8e2522141a011f3b3b68071ac2252a6964134c080c1ac0253d1a742522151ae71e3b3b68071ab8252a6964134d080c1a661a3d1a5a2522161acd1e3b3b68071a561a2a6964134e080c1a9c251aa1250c291a2c21691aa0251a95250c291a880f691a9c251a89250c291acc22691a98251a7d250c291a982569293b692c2a692f2a69322a69291ae71f0c291aea1f0c3b2a3c6a3e2c2b6a3d2a1a64126a3d1a5f1222a46a293b6928052a1ac3141ac8141a3d0f68051a60251a35250c292b691a5e251a2b250c292d691a5c251a21250c292f69293b692c2a692f2a69291a901f0c291a931f0c3b2a3c6a3e2c2b6a1a3f251b3b02136f086a28051a3b251a182322ff1aeb0e68051a36251a3b252b6a28051a3c251a01231301011ad30e68051a36251a3b252b6a28051a3c251ae9221303011abb0e68051a36251a3b252b6a28051a3c251ad1221305011aa30e68051a36251a3b252b6a28051a3c251ab9221307011a8b0e68051a36251a3b252b6a28051a3c251aa1221309011a730e68051a36251a3b252b6a28051a3c251a8922130b011a5b0e68051a36251a3b252b6a28051a3c251a7122130d011a430e68051a36251a3b252b6a28051a3c251a5922130f011a2b0e68051a36251a3b252b6a28051a3c251a41221311011a130e68051a36251a3b252b6a28051a3c251a29221313011afb0d68051a36251a3b252b6a28051a3c251a11221315011ae30d68051a36251a3b252b6a28051a3c251af9211317011acb0d68051a36251a3b252b6a28051a3c251ae1211319011ab30d68051a36251a3b252b6a28051a3c251ac921131b011a9b0d68051a36251a3b252b6a28051a3c251ab121131d011a830d68051a36251a3b252b6a28051a3c251a9921131f011a6b0d68051a36251a3b252b6a28051a3c251a81211321011a530d68051a36251a3b252b6a28051a3c251a69211323011a3b0d68051a36251a3b252b6a22373b6928052a1a4f211326011a210d68051a2c251a31252b6a222a3b6928052a1a35211329011a070d68051a22251a27252b6a28051a28251a1d21132b011aef0c68051a22251a27252b6a28051a28251a0521132d011ad70c68051a22251a27252b6a28051a28251aed20132f011abf0c68051a22251a27252b6a28051a28251ad5201331011aa70c68051a22251a27252b6a28051a28251abd201333011a8f0c68051a22251a27252b6a293b692c2a692f2a69322a69220c2a69220f2a6922132a6922172a69221a2a69221d2a6922202a6922232a6922262a6922292a69222c2a69222f2a6922322a6922352a6922382a69223b2a69223e2a6922412a6922442a6922472a69224a2a69224d2a6922502a691ac2242a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2e1af90b3b3b68072e2a6913fe04370c502f250926081e303b270802013b64401a020c0c291a050c3b1a090c1a7e243b68061a80241a150c2b1a190c6b1a75242a6913aa03230a0c2c1a110c0c3f2841bd293b28183bf02a3b3b2818f0501a5c2428082c28082810ec501a582428082c28182808ec502a95501a391b0628062a3b6a291a371b691a4b0b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a0e1b0c020129293b3b1a9c0c0c3b2a0c643c2a69321a00241a05246a3b063c2a3b3b6b2c2a2d6a1ae6233b1a1a0b2c6b293b691ada232a69642210380c5028053b1acc232c1a000b680528052841bd293b28203bf02a3b3b281bf0501aa92328082c28082810ec501abd2328082c2818280bec502a95501a861a0628062a3b6a291a841a691a980a2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a5b1a0c020129293b3b1ae90b0c3b2a0c643c2a69321a4d231a52236a3b063c2a3b3b6b2c2a2d6a1a4b233b1a670a2c6b293b691a3f232a69642220380c5028053b1a31232c1a4d0a680528052841bd293b28203bf02a3b3b281bf0501af62228082c28082810ec501a122328082c2818280bec502a95501ad3190628062a3b6a291ad119691ae5092a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aa8190c020129293b3b1a360b0c3b2a0c643c2a69321a9a221a9f226a3b063c2a3b3b6b2c2a2d6a1aa0223b1ab4092c6b293b691a94222a69642230380c5028053b1a86222c1a9a0968053d22211ada1c6a1a7e221a83222b6a3d221322246a1a80221a85222b6a1379013b6928052a1a201a1a251a1a6a09680513fc083b692a2a6922282a69293c1a5f0b0c291a620b0c3b2a3c6a3e2c2b6a3d1a550c222f6a3d2b2b6a1a4b221a50222b6a22203b6928052a1aac0e1ab10e1a260968053d22332b6a1a3c221a41222b6a22343b6928052a1abd191ac2191a07096805130c093b692a2a691aba0d2a69130f092a69223a2a69293c1af20a0c291af50a0c3b2a3c6a3e2c2b6a3d2a22416a1a04221a09222b6a22413b6928052a1a75191a7a191abf0868051319093b692a2a691a720d2a69131c092a6922472a69293c1aaa0a0c291aad0a0c3b2a3c6a3e2c2b6a3d2a224e6a1acc211ad1212b6a224e3b6928052a1a2d191a32191a77086805293b6922512a69293c1a710a0c291a740a0c3b2a3c6a3e2c2b6a3d2a22586a1aa3211aa8212b6a3d132f09225a6a1aa4211aa9212b6a3d133109225c6a1aa5211aaa212b6a3d133309225e6a1aa6211aab212b6a225e3b691335092a69293c1a1b0a0c291a1e0a0c3b2a3c6a3e2c2b6a3d2a22466a1a8d211a92212b6a22663b69133d092a69293c1af2090c291af5090c3b2a3c6a3e2c2b6a3d2a226e6a1a74211a79212b6a226e3b69226f2a6922702a69293c1ac6090c291ac9090c3b2a3c6a3e2c2b6a3d2a22776a1a58211a5d212b6a22773b6922782a69293c1a9e090c291aa1090c3b2a3c6a3e2c2b6a3d2a227f6a1a40211a45212b6a227f3b6928052a1a21181a26181a6b0768053d2a22836a1a31211a36212b6a22833b69135a092a69293c1a56090c291a59090c3b2a3c6a3e2c2b6a293b6928052a1ae7171aec171a31076805293b69228c2a69293c1a2b090c291a2e090c3b2a3c6a3e2c2b6a3d2a22936a1aed201af2202b6a22733b6928052a1aae171ab3171af806680522953b692a2a69293c1af2080c291af5080c3b2a3c6a3e2c2b6a3d2a229d6a1ac4201ac9202b6a229d3b691374092a69293c1ac9080c291acc080c3b2a3c6a3e2c2b6a293b6928052a1a5a171a5f171aa40668053d2a22876a1a9a201a9f202b6a22a73b6928052a1a3b171a40171a850668053d2a22ab6a1a8b201a90202b6a3d22ac22ad6a1a8d201a92202b6a1383093b6922ae2a6922af2a69293c1a5e080c291a61080c3b2a3c6a3e2c2b6a3d2a22b66a1a70201a75202b6a3d22b722986a1a72201a77202b6a293b692c2a69220d2a6922102a6922152a6922202a69222b2a69223c2a6922412a69224a2a6922542a69225d2a6922662a6922692a69226c2a69226f2a69227a2a6922882a6922962a69229b2a6922a82a6922ab2a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2e1ab8053b3b68072e2a696622e5370c502c250626051e303b270502013b643d135a041a560a6a1ae21f1ae71f2b6a135b041ae71f69293c1a89070c291a8c070c3b2a3c6a3e2c2b6a3d2a1ab6186a1ad21f1ad71f2b6a13c1033b6928052a1ada0a1adf0a1a54056805293b691acc042a691366042a69293c1a48070c291a4b070c3b2a3c6a3e2c2b6a3d2a1a75186a1aa11f1aa61f2b6a13cc033b6928052a1a990a1a9e0a1a13056805293b691a8b042a691364042a69293c1a07070c291a0a070c3b2a3c6a3e2c2b6a3d2a1a34186a1a701f1a751f2b6a3d137904136d046a1a701f1a751f2b6a3d137b0422f26a1a711f1a761f2b6a1319023b6928052a1a69151a6e151ab30468053d137f042b6a1a601f1a651f2b6a3d1381041a94046a1a601f1a651f2b6a3d1383041a84046a1a601f1a651f2b6a293b692c2a692f2a69342a69220e2a6922112a69221d2a6922292a6922312a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a44043b3b68072e2a696613ba04370c502c250626051e313b270502013b643d1375041ae1086a1a051f1a0a1f2b6a13ef033b6928052a1a8d091a92091a07046805293b691a7f032a69137a042a69293c1afb050c291afe050c3b2a3c6a3e2c2b6a3d2a1a28176a1ad41e1ad91e2b6a1338023b6928052a1a7c141a81141ac60368053d1384042b6a1ac31e1ac81e2b6a293b692e2a6922112a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a8d033b3b68072e2a696613ca04370c502c250626051e313b270502013b643d1363041a2a086a1a7e1e1a831e2b6a1304043b6928052a1ad6081adb081a50036805293b691ac8022a691368042a69293c1a44050c291a47050c3b2a3c6a3e2c2b6a3d2a1a71166a1a4d1e1a521e2b6a3d1370041328016a1a4d1e1a521e2b6a134f023b6928052a1ab5131aba131aff0268053d1374042b6a1a3c1e1a411e2b6a3d1376041317046a1a3c1e1a411e2b6a293b692c2a69312a69342a6922172a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1ab0023b3b68072e2a696613db04370c502c250626051e313b270502013b643d138b041a4d076a1af11d1af61d2b6a131f043b6928052a1af9071afe071a73026805293b691aeb012a691390042a69293c1a67040c291a6a040c3b2a3c6a3e2c2b6a3d2a1a94156a1ac01d1ac51d2b6a1368023b6928052a1ae8121aed121a320268053d139a042b6a1aaf1d1ab41d2b6a293b692e2a6922112a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1af9013b3b68072e2a696613eb04370c502c250626051e313b270502013b643d1386041a96066a1a6a1d1a6f1d2b6a1334043b6928052a1a42071a47071abc016805293b691a34012a69138b042a69293c1ab0030c291ab3030c3b2a3c6a3e2c2b6a3d2a1add146a1a391d1a3e1d2b6a3d1393041358016a1a391d1a3e1d2b6a137f023b6928052a1a21121a26121a6b0168053d1397042b6a1a281d1a2d1d2b6a293b692e2a69312a6922142a6929299291033329352a362a352b362c3728062b3b6a3c2a692d3d2b2e1a2f013b3b68072e2a696613fe04370c502c250626051e313b270502013b643d13c5041acc056a1ae01c1ae51c2b6a3d13c7041a44146a1ae01c1ae51c2b6a293b692c2a6929299291033229352a362a352b362c3728062b3b6a3c2a692d3d2b2efacf3b3b68072e2a6966131405370c502c250626051e303b270502013b643b19420a43000000000000|@821,1,@11463,@822,@881,@994,@882,@1026,@29,@1027,@1037,@916,@1038,@1070,@1074,@1076,@921,@1077,@1076,@846,@1102,@885,@1122,@1123,@1123,@846,@786,@294,@885,@1124,@1129,@1033,@885,@1130,@1141,@1160,@1161,@1162,@1104,@1123,@1076,@1160,@883,@1163,@1184,@1224,@1236,@1461,@1463,@1580,@1296,@1582,@1583,@1627,@1582,@1628,@1582,@919,@1582,@1582,@1640,@1641,@1643,@1644,@1646,@1649,@3459,@3460,@3461,@3462,@3473,@3492,@3493,@3494,@916,@3495,@3496,@1080,@3497,@1098,@3498,@3499,@3500,@1018,@3501,@3505,@3506,@3508,@3509,@3510,@3511,@3512,@3515,@3516,@3517,@3519,@3520,@3522,@3517,@3523,@3524,@3525,@3517,@3526,@3527,@3529,@3517,@3530,@3531,@3518,@3532,@3533,@3534,@3535,@3540,@3541,@3542,@3544,@3545,@3546,@3547,@3548,@3549,@3550,@3551,@3552,@749,@3553,@3554,@3556,@3557,@3561,@3562,@3563,@3564,@3565,@3572,@3573,@3574,@3575,@3576,@3577,@3574,@3578,@3579,@3580,@3574,@3581,@3582,@3583,@3574,@3584,@3585,@3586,@3373,@3588,@3589,@3590,@1576,@1099,@3591,@3602,@3603,@3604,@3605,@3609,@3610,@3611,@3612,@3617,@3625,@3626,@3629,@3587,@3630,@3637,@3638,@3641,@3642,@3649,@3650,@3653,@3654,@3662,@3663,@3664,@3603,@3610,@3665,@3666,@3667,@3668,@3669,@3670,@3671,@3679,@3699,@1510,@1507,@3700,@3701,@3703,@3705,@3707,@3709,@3711,@3712,@3713,@3713,@3713,@3713,@3715,@3716,@3718,@3719,@3732,@3733,@3734,@3735,@3736,@846,@3737,@917,@3738,@3739,@3740,@3741,@3742,@3715,@3743,@3744,@3745,@3745,@3747,@3749,@385,@3750,@1881,@3751,@387,@3752,@3753,@920,@368,@3754,@370,@3718,@367,@3735,@3755,@3756,@3757,@3758,@1748,@3555,@3460,@3759,@3760,@1881,@3761,@3762,@3753,@1014,@1363,@1573,@1263,@3763,@1286,@3764,@3765,@3766,@3661,@3767,@3768,@3769,@3770,@3771,@3772,@3773,@3774,@3775,@3776,@1741,@3554,@3554,@3777,@3778,@3779,@3473,@3780,@3781,@1881,@3782,@3783,@3753,@3784,@3785,@3786,@3787,@3763,@3788,@3764,@3789,@3766,@3790,@3767,@3791,@3769,@3792,@3771,@3793,@3773,@3794,@3775,@3777,@3778,@3779,@3795,@3796,@1163,@3797,@3780,@3781,@1881,@3782,@3783,@3753,@3800,@3801,@1184,@3802,@1755,@1576,@3803,@3808,@3809,@1576,@3810,@3815,@3816,@3817,@3818,@3821,@3822,@3824,@3824,@3820,@1224,@3817,@3821,@3826,@3827,@1881,@3521,@3828,@3753,@1639,@3829,@2180,@3830,@3831,@3528,@372,@451,@3832,@3833,@3834,@3835,@3836,@3837,@3838,@3702,@3839,@3840,@3841,@3844,@3845,@885,@3845,@3846,@3847,@3285,@3851,@3286,@3851,@3287,@3853,@3845,@3846,@3285,@3286,@3287,@3854,@3855,@3555,@3856,@3857,@3858,@3555,@3859,@3860,@3555,@3861,@3862,@3863,@3555,@3864,@3865,@3555,@3866,@3868,@3555,@3869,@3870,@3871,@3872,@3873,@3554,@3874,@3875,@3876,@3877,@3878,@3879,@3880,@3881,@3883,@3884,@3881,@3885,@3886,@3858,@3860,@3863,@3865,@3868,@3870,@3873,@3875,@3878,@3880,@3884,@3886,@3887,@3908,@3926,@3944,@3950,@3955,@3960,@3964,@3949,@3965,@3966,@3952,@3952,@3957,@3475,@3970,@3979,@3981,@3983,@921,@3984,@915,@3985,@3991,@3992,@3993,@3994,@3997,@4001,@4003,@4005,@3988,@4006,@1576,@4007,@4008,@4009,@4010,@4011,@4015,@1621,@4016,@4017,@915,@4018,@4019,@4020,@4020,@4021,@4022,@4033,@4034,@4035,@4037,@4038,@4038,@4039,@4066,@4092,@386,@3762,@885,@4116,@4117,@4116,@4118,@4119,@4120,@4121,@4122,@4123,@4124,@4125,@4126,@4127,@4128,@4129,@4130,@4131,@4132,@4133,@4134,@4136,@1083,@4137,@4139,@4140,@4142,@4143,@4145,@4146,@4148,@4149,@4151,@4152,@4154,@4155,@4157,@4158,@4159,@4160,@4161,@4162,@4163,@4164,@4171,@4172,@4176,@1033,@4177,@4179,@4179,@1346,@1344,@4180,@4181,@4182,@4183,@4184,@4185,@4186,@4179,@4187,@4217,@4218,@4219,@4221,@4222,@4224,@4225,@4227,@4228,@4230,@4231,@4233,@4234,@4236,@4237,@4239,@4239,@4240,@4241,@4242,@4243,@4244,@4245,@4246,@4247,@4248,@4249,@4300,@4239,@4301,@4302,@4304,@4304,@4304,@4305,@4306,@4347,@4348,@4354,@4355,@4361,@4362,@4368,@4369,@4385,@4386,@4389,@4390,@4391,@4392,@4393,@4391,@4398,@4399,@4391,@4401,@4402,@4403,@4406,@4410,@4411,@4413,@4416,@4558,@4561,@4816,@4817,@4816,@4818,@4819,@4818,@3746,@4685,@4820,@3760,@4820,@4821,@3761,@4821,@4822,@4823,@1642,@4823,@4824,@4832,@4836,@4837,@4838,@4840,@1438,@4841,@4842,@4843,@4844,@4845,@4845,@4846,@4847,@4847,@4847,@4845,@4848,@4851,@4852,@4853,@4856,@4857,@4858,@4861,@4862,@4863,@4865,@4865,@4866,@4868,@4868,@4868,@4869,@4870,@4871,@4872,@4873,@4876,@4877,@4878,@4880,@4882,@4885,@4887,@4889,@4891,@4895,@4897,@4865,@4898,@16240,@10967,@4822,@18639,@4822,@10969,@10970,@10971,@10970,@10975,@10989,@3661,@5421,@3833,@3833,@3753,@3753,@1881,@1881,@3763,@3763,@3764,@3764,@4189,@4168,@10990,@10991,@4415,@10992,@10993,@10994,@10995,@10996,@10997,@10999,@11000,@10997,@11005,@11006,@4894,@11010,@11011,@10997,@11015,@11016,@3746,@11020,@11021,@4409,@11025,@11026,@4409,@11030,@11031,@4409,@11035,@11036,@4409,@11040,@11041,@4409,@11045,@11046,@4409,@11050,@11051,@4409,@11055,@11056,@4409,@11060,@11061,@10997,@11065,@11066,@3746,@11070,@11071,@3746,@11075,@11076,@3746,@11080,@11081,@11085,@11087,@11088,@11085,@11092,@11093,@11097,@11098,@11102,@11103,@4409,@11107,@11108,@4409,@11112,@11113,@4409,@11117,@11118,@4409,@11122,@11123,@3746,@11127,@11128,@11132,@11135,@11136,@11137,@11138,@887,@992,@4227,@11139,@4560,@1707,@11140,@11141,@11143,@11144,@11146,@11147,@11149,@11150,@11153,@11154,@11159,@11160,@11163,@11164,@11165,@11166,@11167,@11168,@11169,@11170,@11172,@11173,@11175,@11176,@11177,@11178,@11180,@11181,@11184,@11185,@11188,@11189,@11191,@11192,@11194,@11195,@11197,@11198,@11199,@11200,@11202,@11203,@11204,@11205,@3746,@4816,@11207,@11216,@11217,@11227,@11228,@11233,@11234,@11236,@11237,@11242,@11243,@11245,@11246,@11248,@11249,@11204,@11251,@4816,@11253,@11242,@11258,@11204,@11260,@4816,@11262,@11236,@11281,@11242,@11286,@11288,@11289,@11204,@11317,@4816,@11319,@11242,@11324,@11204,@11326,@4816,@11328,@11236,@11343,@11242,@11348,@11204,@11350,@4816,@820| 15230:D16,88|fb1bfa6c2c69fa702d69fa742e69fa782f69fa7c3069fa803169fa843269fa883369fa8c3469fa90220c69fa93220d69fa96220e69fa99220f692f2d30302210220e221131221232220c22122214680d270d420000000000|@823,1,@11464,@15232,@15238,@15240,@15242,@15244,@15246,@15248,@15254,@15257,@15260,@15263,@15266,@15231| 15231:D6,24|fb082936352a3636fa262a69292cfa280c29fa2c307d0700|@873,1,@11502,@15269,@824,@872| 15232:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11465,@15233,@824| 15233:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11466,@828,@17,@826| 15234:D5,224|fb122c353ba003672c362d372d2b0c292b932a2aa90303fadf103b502c2b3bdb299291034429352a36332ba003033c0219333b3bef2b3b3befa0030d3328082c28082e3b3befed02013b030529680102152d3ba003042f9302012d293cab64250526041e533b6502013b656466026d2c362d382a352a352f2b0c292b932a2aa90303fa7c103b502c2b3bdb299291034729352a36220c2ba003033c021b220c3b3bef2b3b3befa0030e220c28082c28082e3b3befed02013b030529680102152d3ba003042f9302012d293cab64250526041e563b6502013b6564270543000000|@830,1,@11467,@831,@829| 15235:D4,8|fb02fa1c42000000|@838,1,@11468,@837| 15236:D12,568|fb37d92939293ba003033b02032968013d2a692c36293cb7293ca03b2a692c2806b7293ba003033d020c293da003033e0204293fa0913c2a69293b692d2a69322a69d929360b02001a05023b3b2c1a07020c5029352a362f391af401299291033029352a362a353da0031c2a3629929103112935293ba403041ae401103b50296402013b640207292503511e2f3b6502012a64d91ad1012db92933b72f2ab82c3b28082ce350220c392e2aa003043b5002062e1aba010c50313fb7293fa00313d92938293ba09103061aac010c02013b6502013b3b222135293ca003033b02152a1b204ea003033b020b2a3caa292503511e1c3b646464222198293ba003033b020b22221a79010c50511e363b657881073b22250cf102986d222297293ca003043b50020b2223995022231a5a010c50d929360b020022183b3b2c1a1a010c5029352a36222592910312222535293ba403041a0b01103b50296402013bd91a07012cb92932b72e2ab82c3b28082ce35034392e2aa003043b5002052efaf20c50303fb7293fa00314d92938293ba0910306fae50c5002023b505102023b50220f352210362211372b2b2bfae46b661064222297293ca003043b50020a222399502223fac40c50d929360b020022183b3b2cfa850c5029352a36222592910311222535293ba40303fa77103b50296402013bd9fa742cb92932b72e2ab82c3b28082ce35034392e2aa003043b5002052efa5f0c50303fb7293fa00314d92938293ba0910306fa520c5002023b505102023b50220f272f430000|@844,1,@11469,@845,@212,@847,-1,@850,@666,@662,@664,@843| 15237:D4,8|fb022bfa1b8a4200|@851,1,@11470,@18915| 15238:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11471,@15239,@824| 15239:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11472,@828,@18,@826| 15240:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11473,@15241,@824| 15241:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11474,@828,@19,@826| 15242:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11475,@15243,@824| 15243:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11476,@828,@20,@826| 15244:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11477,@15245,@824| 15245:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11478,@828,@21,@826| 15246:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@11479,@15247,@824| 15247:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@11480,@828,@22,@826| 15248:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11481,@15249,@824| 15249:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11482,@17,@394,@828,@856,@854| 15250:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11483,@17,@856| 15251:D17,472|fb262d353ca003043b5002c22c3b3bef293ba003051ad801024b28222ab1292810b1293cb2292808b4291acb01a503043b5002041ac90110292841bd2a3cb22a2a3b3bf02b3b3b32f0501aa30128082d28082822ec503428082d282a34ec502b95502b2707293b3bef293ba003051a9701024e292818b1292810b1293cb2292808b4291a7201a503043b5002041a700110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a550128082e2c2818ec502c95502c270828671a4a012b1a4e016b2704102d362e372f38293529932d35322a0c3333692d2b2b1a3a010c3035293caa323b3b2ce33335292805ac323fac2a2aa603d5333dac293ba203033c020429faeba803041a1501103b502928403bda1a12012b69220f3b3b2de322123b3b2de3221093293cab29293ba203033b02942213932a2aa90303faf3103b5022142b3bdb29929103712935293b3bef3b2a293ba003032a0221293cb22a3cb2292808b12f2adc28072fb32a2ab1292f2508250826061e243b270665220c3ba00303fab4103b5029220db529920305293ba2020529942811a00308faa32afaa80c020129299203043b500203faa210220d2a30fa630c50260502023b502b3cab2503511e983b6564270702013b270f44|@858,1,@11484,@859,72057594037927935,@286,@860,@861,@862,@863,@789,@15252,@829,@794,@796,@797,@792| 15252:D7,112|fb0c2b3b3bef3b2a293ba003032a0221293cb22a3cb2292808b1312adc28072fb32a2ab1292f2508250826061e243b2706652b363ba00303fa4e103b50292c36b529920305293ba2020529942811a00308fa3d2afa420c020129299203043b500203fa3c102927044200000000000000|@793,1,@11486,@794,@796,@797,@792| 15253:D5,144|fb0d2b929103802b352d2f932a2aa90303fa95103b50302b3bdb29929103512935292ea003033c0219293b3bef2e3b3befa0030d2928082f2808313b3befed02013b031432932d2aa90303fa63103b50332e3b34e36402152c3ba00304329302012c293cab64250426031e603b64021231932c2aa90303fa37103b50322d3b33e36465646402013b4400000000000000|@865,1,@11485,@829,@864| 15254:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11487,@15255,@824| 15255:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11488,@18,@394,@828,@867,@854| 15256:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11489,@18,@867| 15257:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11490,@15258,@824| 15258:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11491,@19,@394,@828,@868,@854| 15259:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11492,@19,@868| 15260:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11493,@15261,@824| 15261:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11494,@20,@394,@828,@869,@854| 15262:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11495,@20,@869| 15263:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11496,@15264,@824| 15264:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11497,@21,@394,@828,@870,@854| 15265:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11498,@21,@870| 15266:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@11499,@15267,@824| 15267:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@11500,@22,@394,@828,@871,@854| 15268:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@11501,@22,@871| 15269:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@11503,@876,@874| 15270:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@11504,@18,@826| 15271:D5,104|fb0f0b020030353ba0031230372993fa6f2b692c2b452a465026030212303829352993fa632b692d2b452a4650260429352a36313b292da803032a0225292c0c299291030d29352a362a2a2f220f0c6502012b2b3caa2a2a2505250526031e293b66652705440000|@878,1,@11505,@15273,@15272| 15272:D4,24|fb052936932c2aa90303fa24103b502a362d3bdb64420000|@879,1,@11507,@829| 15273:D4,24|fb052936932c2aa90303fa24103b502a362d3bdb64420000|@879,1,@11506,@831| 15274:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@11508,@872| 15275:D4,40|fb053c03052c2ca002033b3ba003033c02152c929103052b929102013b03072c2cfa1d2d7e043b43|@896,1,@11509,@895| 15276:D3,40|fb082c942c94a003172b932d932aa0030b2d3b2e3b28082eb3ed02013b6402013b43000000000000|@897,1,@11510| 15277:D4,8|fb02fa1c42000000|@900,1,@11511,@899| 15278:D5,32|fb0b0b02002efa302e36692b2f3730383139fa2c0c5029352a362a2a69270542|@941,1,@11512,@15279,@940| 15279:D3,16|fb032c2a360c2c2a35452a3646644300|@942,1,@11513| 15280:D10,216|fb130b0200332a340c5029352a360b02002d353ba0030d2d362e372b2b452a465051024c2d3629353da003043b500203fabe103b502936220e932a2aa90303fab7103b503b50220f2b3bdb293ba09103043b500203faa9103b502b3cb122102a3bdb2d3caa22110c302b452a4650260729352a362e353ba00304fa8c02482e353fa00304fa82023e2e353ca003182e362f37fa7cfa822b22132213221368063c2c2b6a6602202e353ea003182e362f37fa6efa642b22132213221368063e2c2b6a660202fa423b2c2c6a22112a452b46270c1f0600000000|@943,1,@11514,@944,@831,@948,@951,@15282,@940,@15281| 15281:D4,32|fb0b0b02002efa302e37692b2f383039313a32360c5029352a362a2a69270542|@941,1,@11517,@15284| 15282:D4,32|fb0b0b02002efa302e37692b2f383039313a32360c5029352a362a2a69270542|@941,1,@11515,@15283| 15283:D3,16|fb032c2a360c2c2a35452a3646644300|@942,1,@11516| 15284:D3,16|fb032c2a360c2c2a35452a3646644300|@942,1,@11518| 15285:D5,56|fb0829362c2a929103043b500203fa40102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465653c2a6929fa2469654200|@954,1,@11519,@953,@951| 15286:D3,8|fb023b4200000000|@959,1,@11520| 15287:D5,32|fb0b0b02002efa302e36692b2f3730383139fa2c0c5029352a362a2a69270542|@941,1,@11521,@15288,@940| 15288:D3,16|fb032c2a360c2c2a35452a3646644300|@942,1,@11522| 15289:D4,48|fb0829362c2a929103043b500203fa38102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465654200|@967,1,@11523,@953| 15290:D4,48|fb0829362c2a929103043b500203fa38102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465654200|@959,1,@11524,@953| 15291:D4,112|fb0b29382c3bdb2a372d2a929103043b500203fa73102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465653b2b2b6a2c362f2a929103043b500203fa43102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465652a2a6927044200000000000000|@987,1,@11525,@953| 15292:D3,8|fb032c2ca0430000|@1003,1,@11526| 15293:D8,224|fb092c350a0a00230032006b0078007c0080009000b2001400d40028152c28056a28152a28096a6402b328152c28056a28152a28096a6402a42c362d372a920303fab5103b502a35299203043b500203faae102e352806a003082e3b3bfaa90c0206280b2f3b3b6b28132b2b2e6b2704026b2c362d3728132b2f2c6b65025efa8f025afa8b02562c3628062a3b6a3e2a2ffa856b6502462c362d372d352806a003082d3b3bfa610c0206280b2e3b3b6b28132c2b2d6b6602242c362d382d352806a003082d3b3bfa3f0c0206280b2e3b3b6b28132c2b2d6b660202fa33430000|@1040,1,@11527,@1041,@1048,@1039,@915,@1018| 15294:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@11528,@7| 15295:D17,448|fb102d352806a0f835012d362e3729299291031b29352a362a351abb01a003052a68010207292503511e1a3b6502013b642992910343293529351a9b01a003043b5002041a990110293729322a929103043b5002041a9001102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b6465656502013b2b299291032a29352a362a351a6701a003142a351a5f01a003043b5002041a4501102a370207292503511e293b6502031a4b016429353ea0032a2937322a0c293529353ba003043b5002041a38011029362a372c362a2a1a34010c28062d2b6a2707025d2d9203033c02302d9203041a2401103b502d942928ffb7293eb7293ba0299103033c0211319203041a0f01103b50319329220ea564270403103003043b5002041aff00101a030102142d9203041a0201103b502d323bdb28062a2d6a64270502792d352814a0036c2d362e37292ea003043b500203fae3103b2b299291031229362b3caa292b25042504511e113b6502012a652f2aa2032d2b302a929103043b500203fa65102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565020c2e03043b500203fa9410fa79660206280b2e2e2e6b4400000000000000|@1052,1,@11529,@24,@826,@953,@25,@951,@1053,@1057,@1041,@1041,@1059,@1062,@1041,@1066,@1051| 15296:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11530,@25,@394,@1057| 15297:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@11531,@1071,@1070| 15298:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11532,@1074,@920| 15299:D15,424|fb122c350a0a008c00c100cb00d500d800e300ed002c0114009e012c36293ba003032c026a293ba203041a9301103b503b2a1a93010c28142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6f010c0201293b1a6f010c3b1a72010c2b1a75013b2d2d3b3b3c6808280c2a69333b69291a6a010c28072a2d3c6b270964f714012b3b6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a0f012e7d06296502df2c3628062a3b6a6402d52c3628062a3b6a6402cb2b02c83b1a15012d1a19016b02bd2c3628062a3b6a6402b32c3628062a3b6a2d3b692a2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faa5317d0929270502742c362d3728062b3b6a2a3ba20303fa7d103b503b2bfabe0c2a2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa580c0201293bfa590c3bfa8d0c2bfa613b2d2d3b3b3c6808280c2a69220d3b6929fa560c28072a2d3c6b270d0202fa7143|@1079,1,@11533,@1080,@1082,@1083,@1070,@1097,@1098,@1099,@1100,@915,@1101,@1078,@921| 15300:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@11534,@916,@1082| 15301:D14,216|fb0d2b352814a003b92b36293ba00304fade02ab3b2a299291031229362b3caa292b25042504511e113b6502012a6529fac6a90303fac9103b502928403bda2bfac60c293b2cfac80c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b024829faa80c29299291031729352a362a353da00309292503511e133b02013b6502013c6403033b0215fa892a2c2f6b3e2f2b6afa87fa8d2b3b6b293b6966fa8cfa822d3b6b292b69662c955028062d2b6a270564020f2b352806a003043b500203fa71102b42000000000000|@1085,1,@11535,@921,72057594037927935,@1086,@1088,@1089,@1094,@15291,@25,@394,@24,@1084| 15302:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@11536,@1083,@1088| 15303:D5,56|fb0a2d9291032c2d352e362a352806a003043b500203fa38102a362b372f313b2de350303cb12c2a32fa2d0c2b2a69270602013b44000000|@1091,1,@11537,@1090,@1089| 15304:D7,72|fb082b9291033f2b352c362a299291032729352a362a35fa47a003122a35fa40a003043b500203fa3f102a370207292503511e263b650202fa36642afa3a0c2a2a69270402013b42|@880,1,@11538,@25,@826,@951,@1094| 15305:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11539,@1097,@920| 15306:D4,32|fb072b929103122b352c362a3c692afa270c2a2a69270402013b420000000000|@880,1,@11540,@1099| 15307:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@11541,@916,@1101| 15308:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11542,@1078,@920| 15309:D3,8|fb032c2ca0430000|@1003,1,@11543| 15310:D4,8|fb02fa1c10000000|@1126,1,@11544,@1125| 15311:D16,120|fb1bfa8c2a362d6afa8e2b372e6afa902c382f6afa922d39306afa942e3a316afa962f2306326afa973231366afa993332376afa9b3433386afa9d220c34396afa9e220d220c3a6afa9e220e220d23066afa9d220d3622106a2d2c3131220e220d221231221332220d22122215680d270d42000000000000|@1131,1,@11545,@15313,@15314,@15315,@15316,@15317,@15318,@15319,@15321,@15323,@15325,@15327,@15329,@15312| 15312:D5,24|fb07fa2c2a36692a373b2bfa2b2f7b050400000000000000|@1140,1,@11564,@15331,@874| 15313:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11546,@828,@826| 15314:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11547,@828,@826| 15315:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11548,@828,@826| 15316:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11549,@828,@826| 15317:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11550,@828,@826| 15318:D5,72|fb0829372cfa590c2992910338293529299291032b29352a362a352f36a003162a352f36a003043b500203fa3b102a37296801640207292503511e2a3b6502013b646402013b6442|@1132,1,@11551,@828,@826| 15319:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11552,@394,@828,@1133,@854| 15320:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11553,@1133| 15321:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11554,@394,@828,@1135,@854| 15322:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11555,@1135| 15323:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11556,@394,@828,@1136,@854| 15324:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11557,@1136| 15325:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11558,@394,@828,@1137,@854| 15326:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11559,@1137| 15327:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11560,@394,@828,@1138,@854| 15328:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11561,@1138| 15329:D7,56|fb0b2b352c362b37fa462b3b6b2c362cfa460c293ba003052a3b69020a2935292f372dfa3b0c642e362e2bfa3b337b050800000000000000|@1134,1,@11562,@394,@828,@1139,@854| 15330:D4,40|fb072d9291031c2d352e362a352fa003052d2a69020a292f2ffa250c2b2a69646502032b3b694400|@857,1,@11563,@1139| 15331:D3,48|fb082c2c2a9291031f2a352b362a352e36a00305312c6902012b2a2a2505250526031e1e3b6602012965440000000000|@877,1,@11565| 15332:D25,264|fb1028151a19012d6a2c0a0e00210026002b00300035003a003f00440049001c004e00530058005d001afc00023f1aff00023a1a020102351a050102301a0801022b1a0b0102261a0e0102211a1101021c1a140102171a170102121a1a01020d1a1d0102081a200102031a2301293b3bef293ba003051a1f010250293db1292810b1293cb2292808b4291a1301a503043b5002041a110110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c270829fae2a003033c0214293b3bef3ba0030b292808facf28083bed02013b0304facc0201293bface0c3bfad20c2f2c3b2d2d3b3b3c6808280c2a69270842|@1143,1,@11566,@916,@1144,@1145,@1146,@1147,@1148,@1149,@1150,@1151,@1152,@1153,@1154,@1155,@1156,@1157,@1158,72057594037927935,@286,@294,@1098,@1159,@1142| 15333:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@11567,@1071,@1159| 15334:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11568,@1142,@920| 15335:D3,8|fb032c2ca0430000|@1003,1,@11569| 15336:D3,40|fb082c2ca003033c02192c3b3bef2c3b3befa0030d2c28082d28082f3b3befed02013b4300000000|@1195,1,@11570| 15337:D4,8|fb02fa1c42000000|@1234,1,@11571,@899| 15338:D3,8|fb022b9291420000|@1240,1,@11572| 15339:D3,16|fb052b352c362a2a6965420000000000|@1240,1,@11573| 15340:D3,16|fb052b352c362a2a6965420000000000|@1240,1,@11574| 15341:D3,8|fb022b3ba0420000|@1305,1,@11575| 15342:D4,8|fb03fa1c2c694200|@1307,1,@11576,@15343| 15343:D3,64|fb0a2c2c2a2aa003033c02302a9291032a29929103222a352b362b352c362c2b3136350c030d2b2a2506250626041e2a3b02013b270402013b02013b65430000|@1308,1,@11577| 15344:D4,16|fb04fa242c2b366a4200000000000000|@1310,1,@11578,@15345| 15345:D13,144|fb112b363ca20304fa9e02832b35293ba00304fa9b02772c363ca20304fa99026d2c3529352a362f363cab293ba20304fa8e023b293cab2c2a69642f36360c2a3cab2c2a693137353236363336373436383b2c2c2c6b662a0c642a2a0c6429fa6769fa6c2a69fa702a692f2a692707fa6f2a693b3c3b3b2d6805293b69fa692a69fa6d2a693b3c3b3b2d6805270a6442|@1312,1,@11579,@1313,@1315,@1313,@1318,@1321,@1323,@1324,@1325,@1323,@1311| 15346:D3,8|fb023e4200000000|@1329,1,@11580| 15347:D3,8|fb023c4200000000|@1331,1,@11581| 15348:D3,8|fb022b3ba0420000|@1467,1,@11582| 15349:D3,8|fb022b9291420000|@1487,1,@11583| 15350:D3,8|fb022b6801420000|@1487,1,@11584| 15351:D3,8|fb022b3542000000|@1487,1,@11585| 15352:D4,8|fb03fa1c2c694200|@1490,1,@11586,@15353| 15353:D3,40|fb052c2ca003033c02182c929103122b9291030a2c352c352b36352d7e043b02013b430000000000|@1491,1,@11587| 15354:D4,8|fb03fa1c2c694200|@1493,1,@11588,@15355| 15355:D14,168|fb0c2b363ca20304fab602952b35293ba00304fab302892c363ca20304fab1027f2c3529352e363cab2a2a69662b36360c29353ba00354293929929103302936929103272935353ea0031c29353629fa87a003033c020d29fa86a003033c020429fa85a06402013b9102013b02013b03162afa7c69fa812a69fa852a693b3e3c3b2d68056602012a64020129293b69fa772a69fa7b2a693b3c3b3b2d680527056442000000000000|@1495,1,@11589,@1313,@1496,@1313,@365,@448,@416,@1499,@1500,@1325,@1323,@1494| 15356:D3,8|fb023e4200000000|@1504,1,@11590| 15357:D3,8|fb023c4200000000|@1506,1,@11591| 15358:D4,8|fb02fa1c42000000|@1595,1,@11592,@1594| 15359:D3,8|fb032c2ca0430000|@1003,1,@11593| 15360:D4,8|fb02fa1c42000000|@1598,1,@11594,@1597| 15361:D4,8|fb02fa1c42000000|@1599,1,@11595,@899| 15362:D3,8|fb023d4200000000|@1601,1,@11596| 15363:D3,8|fb023c4200000000|@1602,1,@11597| 15364:D13,224|fb192dfaf3faf90c2c1afc00a003033c02142c3b3bef3ba0030b2c2808fae928083bed02013b0304fae602012c3bfae80c3bfaec0c2c2c3b2d2d3b3b3c6808280c2a6933fab2fae00c32fabca003033c0214323b3bef3ba0030b322808faa928083bed02013b0304faa60201323bfaa80c3bfabc0c2c2c3b2d2d3b3b3c6808280c2a692210fa71faaf0c220ffa7aa003033c0216220f3b3bef3ba0030c220f2808fa6528083bed02013b0304fa620202220f3bfa630c3bfa870c2c2c3b2d2d3b3b3c6808280c2a69293b69302a69220e2a6928142a3b6a271544000000000000|@1630,1,@11598,@916,@1038,@294,@1098,@1070,@1631,@1077,@1632,@1633,@1629| 15365:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11599,@1631,@920| 15366:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11600,@1632,@920| 15367:D15,336|fb0f2c350a0a008b00a400a900ad00b000be00c200da00140041012c36293ba003032c026a293ba203041a3b01103b503b2a1a3b010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a17010c0201293b1a17010c3b1a1a010c2b1a1d013b2d2d3b3b3c6808280c2a69333b69291a12010c28072a2d3c6b27096402b82b352806a0030a2b3b3c1a01012e7b0504280b2c3b3c6b029f1afa00029afaf602962b02932bfaf63b6a280dfaf82b6a640285fae102812b352806a003092b3c3cfacb2e7b0504280b2c3c3c6b02692c37293ba20303fa7e103b503b2afacf0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa5c0c0201293bfa5d0c3bfa610c2bfa653b2d2d3b3b3c6808280c2a69333b6929fa5b0c28072a2d3c6b270a0202fa5e430000000000|@1635,1,@11601,@1080,@1636,@1083,@1070,@1637,@1098,@1099,@1039,@921,@1638,@1639,@1634| 15368:D5,32|fb062c2ca003033b0213280bfa2a2e3c6b2d3caa292efa280c2b2a6966430000|@1075,1,@11602,@916,@1636| 15369:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11603,@1637,@920| 15370:D5,40|fb072c2ca003033b02172c3caa280bfa2f2b3c6b2e3caa292ffa2d0c2b2a69270443000000000000|@1075,1,@11604,@916,@1634| 15371:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11605,@1629,@920| 15372:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@11606,@1640,@920| 15373:D4,8|fb02fa1c42000000|@1645,1,@11607,@899| 15374:D23,616|fb282c299291031b29352a362a351a6f02a003052a68010207292503511e1a3b6502013b64293ba0034b1a5b02299291031b29352a362a351a4502a003052a68010207292503511e1a3b6502013b64293ba003041a3902103b503b50293529351a1d02a003043b5002041a2b02103b502937650217293529351a0402a003043b5002041a1202103b502937642e299291031b29352a362a351a0502a003052a68010207292503511e1a3b6502013b64293ba003051af1010217293529351ae001a003043b5002041ace01103b502937642b0309311ad9010c2a0c02013b0b0400220e220e220e2c220e37220f382210361ac5010c5029352a362b372c382b1abf010c29353da0033b2b3ba003032d0205280f2c2f6a220e030a291a93010c220d0c02013b0b02002d3022192c2218361a96010c5029352a361a95012a2c6a2707f71d013b06293b3b1a8d01e3502b3ba203033c02052b1a8701a803041a8901103b503b502b28403bda2b2a1a82010c2a93293ba003051a7f0102132928403bda2c3b3b2c3b3b30eb5029955029642f3ba203033c02052f1a4601a803041a4801103b503b502f28401a5501da31299291031629352a362a2e2e1a4c010c50292503511e153b6502013b642a933b2a293ba003032a021a293cb22a3cb22f2a3bdb292e69292d2506250626041e1d3b270465220d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faf10c020129220e3ba00303290206280f220f2b6a221a030929fa770c22190c02013b0b02002d221322252c222436fa7a0c5029352a36fac2220f22152c2e68052713270f440000000000|@1651,1,@11608,@48,@1652,@1701,@826,@70,@1705,@1707,@1913,@3419,@2407,@15960,@3423,72057594037927935,@789,@3440,@957,@921,@3449,@1083,@15375| 15375:D13,216|fb0e3b2a390c29920303fae4103b503b5029920303fae1103b503b5029352b38299291031a29352a362a35fad3a003052a68010207292503511e193b6502013b64293ba003033b021829352935fab1a003043b500203fab0103b5029372968016529929103092935faa62a69640202faa73b2a0c2f37353ba00304faa302472f37353fa00304fa98023c2f37353ca003162f3736303737fa8f2a3336333068053c2c2b6a66021f2f37353ea003162f3736303737fa7a2a3336333068053e2c2b6a660202fa5a2a2afa6e0c2806302b6a2708420000000000|@3422,1,@12201,@3453,@1041,@24,@826,@15290,@939,@951,@15278,@15287,@3452| 15376:D3,8|fb023b4200000000|@1656,1,@11609| 15377:D3,8|fb023b4200000000|@1656,1,@11610| 15378:D3,8|fb023b4200000000|@1656,1,@11611| 15379:D3,8|fb023b4200000000|@1656,1,@11612| 15380:D3,8|fb023b4200000000|@1706,1,@11613| 15381:D167,3944|fb402b350a16009600e100a301e5013302eb0357042c00e6044706830612075c079909f60a4b0b970bb20b540cbc0d3b0ebe0e2b362c3729352806a00305292c0c022729352808a00305292c0c021b292c0c291a2a0f691a2e0f2a691a310f2a693b3d3c3b2d680527042b2d1a290f0c291a2c0f0c1a300f2a691a330f2a693b3d3c3b2d6805293b691a2c0f2a69302a693b3d3b3b2d6805270bf7ca0e2b362c372d382a3b692c2a692b2a6929301a0f0f0c291a120f0c1a160f2a693b3c3c3b2d6805291a110f693b3d3c3b2d6805293b691a0b0f2a691a0e0f2a693b3d3b3b2d6805270ff77f0e2b3629352a362b372c382d392b353ba003382b36290a07000e00130018001d00220027002c001adf0e021c1ae20e02171ae50e02121ae80e020d1aeb0e02081aee0e02031af10e64022e2b36293da003051aec0e0221293ca003051aea0e0217293fa003051ae80e020d293ea003051ae60e02031ae90e642b3b692e2a69302a692d2a693e2e692a220d1adb0e0c291ade0e0c1a520e2a693b3c3c3b2d6805291a4d0e693b3d3c3b2d6805293b691a470e2a69312a693b3d3b3b2d68052715f7bd0d2b362c37292c361aac0e0c291aaf0e0c1ab30e2a693b3c3c3b2d68052e300c291aab0e691aaf0e2a691ab20e2a691ab50e2a692e2a693b3e3b3b2d6805270cf77b0d2b362c372d38291aa20e0c2b3b692d2a693e2c692a311a9b0e0c291a9e0e0c1ac20d2a693b3c3c3b2d6805291abd0d693b3d3c3b2d6805293b691ab70d2a69312a693b3d3b3b2d68052710f72d0d2b362c372d382e392c3ba003051a660e021a2c3ca003051a640e02102c35293ca003051a600e02031a630e64293b3bef293ba003051a5e0e024a293cb1292810b1293cb2292808b4291a520ea503043b5002041a500e103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c95502c27083e2a692d352e362f372b220c0c2b929103092b3529220e0c6402031a0c0e2b9203052b3ba202052b942811a0030a1a010e2c1a050e0c02012b293d1a040e0c3e2a69291a040e691a080e2a691a0b0e2a691a0e0e2a69302a691a0e0e2a691a110e2a691a140e2a69220c2a691a130e2a691a160e2a693b3c3c3b2d6805221935221a36221b372b22200c2b929103092b352922220c6402031a8f0d2b9203052b3ba202052b942811a0030a1a840d2c1a880d0c02012b293d1a870d0c3e2a69291a870d691a8b0d2a691a8e0d2a691a910d2a69302a691a910d2a691a940d2a691a970d2a69220c2a691a960d2a691a990d2a693b3c3c3b2d6805222e22310c291a8f0d691a930d2a691a960d2a692d2a691a960d2a691a990d2a69221b2a691a980d2a6922312a693b3e3b3b2d6805273af7750b2b362c372d382b2d0c293b691a7f0d2a691a820d2a693b3d3b3b2d68052f320c293b691a680d2a691a730d2a693b3d3b3b2d680533220e0c293b691a500d2a691a630d2a693b3d3b3b2d6805293b691a3c0d2a69302a691a340d2a69220e2a693b3b3c3b2d68052717f7090b2b362c372a9203132a9203043b5002041a2f0d103b502a3ba002013b036429299291031a29352a362a352f38a003052a68010207292503511e193b6502013b64293ba0030b2b1a010d0c3e2a6964022f293529352e38a003043b5002041af20c103b50293729353ca0030a2936280c2a6930327d092d1ad10c0c3e2a6964656402092a1ac40c0c3e2a696465f77a0a2b3629353ea003061ac00cf74f0129353ca0036a2936293c1af80b0c293b3bef293ba003051aab0c024d28072ab1292810b1293cb2292808b4291aae0ba503043b5002041aac0b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a740c28082d28082807ec503128082d280f34ec502b95502b27073e2a69270402df29353da0036a2936293c1a880b0c293b3bef293ba003051a430c024d28052ab1292810b1293cb2292808b4291a3e0ba503043b5002041a3c0b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a0c0c28082d28082805ec503128082d280d34ec502b95502b27073e2a692704026f2936293c1a1e0b0c293b3bef293ba003051ae10b02543e2ab1292810b1293cb2292808b4291ad50aa503043b5002041ad30a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082841e4502b28092872e4502b402867e4503128082d280b34ec502b95502b27073e2a69270464f719093b2a1a850b0c291a880b0c1a74092a693b3c3c3b2d6805291a6f09693b3d3c3b2d6805293b691a69092a691a6c0b2a693b3d3b3b2d68052709f7dd082b362c372d382b2d0c2a3c1a680a0c293b3bef293ba003051a4b0b024b402ab1292810b1293cb2292808b4291a1f0aa503043b5002041a1d0a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a150b28082d280840ec503128082d281234ec502b95502b27073e2a692f320c291afc0a691a000b2a692c2a69312a691afd0a2a693b3e3b3b2d6805270ef74e082b362c372d382b2d0c2b3c1ad9090c2b03051ae20a02031ae50a293b691ae70a2a692c2a691ae70a2a6927051ae80a0c3e2a69293b691ae60a2a692d2a693b3d3b3b2d68052709f704082b3629352a362b372c382d392e3a2f23062a3ba003051ac40a02031a970a3b2d1ac20a0c3b3b3b3b2d6805313b3bef293ba003051ab60a02483c2ab1292810b1293cb2292808b4291a2a09a503043b5002041a2809103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082822e450221028082d280934ec502b95502b2707293b3bef293ba003051a600a024a293cb1292810b1293cb2292808b4291ad408a503043b5002041ad208103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2822e4502c95502c27083e2a693e3169323c1ab9080c293b3bef293ba003051a040a0250292808b1292810b1293cb2292808b4291a6f08a503043b5002041a6d08103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11ac00928082e2c2808ec502c95502c27083e2a6922101ab2090c3e2841bd293b28103bf02a3b3b2809f0501aa50928082c28082808ec502a28102828e4502a95503e2b692c221a1a91090c291a94090c2b2a693b3c3c3b2d68053e2841bd293b28103bf02a3b3b280ff0501a7d0928082c2808280eec502a2816285be4502a95503e2b69221c1a6a090c291a6d090c2b2a693b3c3c3b2d6805291a6609691a4a082a69322a691a42082a6922132a691a39082a6922192a691a30082a69221c2a691a27082a691a42092a691a1d082a691a40092a691a13082a6922272a691a0a082a691a35092a693b3f3b3b2d6805223422370c293b691a29092a692c2a693b3d3c3b2d6805273af7c7052b362c372a350a0900240029002e00330038003d004200120054002a36293ba003051afb0802031afe086402331a0009022e1a030902291a060902241a0909021f1a0c09021a1a0f0902152a36293ba003051a0b0902031a0e096402031a1009293b3bef293ba003051a0c09025b3f2ab1292810b1293cb2292808b4291ab806a503043b5002041ab606103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808284ce4502b2809286fe4502b402861e4502b280b2864e4503128082d280c34ec502b95502b27073e2a692d352e362f372b330c2b929103092b3529220c0c6402031a62062b9203052b3ba202052b942811a0030a1a57062c1a5b060c02012b293d1a5a060c3e2a69291a5a06691a5e062a691a61062a691a64062a69302a691a64062a691a67062a691a6a062a69220c2a691a69062a691a6c062a693b3c3c3b2d6805293b691a35082a6922162a693b3e3b3b2d6805271df76a042b363d2841bd293b28083bf02a3b3b2805f0502a2808284ce4502a2809284fe4502a40284fe4502a280b2850e4502a280c2828e4502a95503e2b692c2e1aeb070c291aee070c2b2a693b3c3c3b2d68052707f715042b362c372a2c371adc070c3b3d3c3b2d68052b2e0c293b693b3d3c3b2d6805291acb07691acf072a691ad2072a691afd052a69302a691acd072a691ad0072a693b3b3c3b2d6805270ef7c9032b36292b0c291ac107691ac5072a693b3c3c3b2d68052704f7ae032b362c372d382a352b353b3b292ca903032a023a293cb12f362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293c1af3040c2c3c1aed040c291a6007691a64072a692c2a691a64072a6927051a05060c3e2a692e320c31330c291a5707691a5b072a691a5e072a691a61072a692e2a69302a693b3e3b3b2d68052710f70c032b362c372d382b350a0900240029002e00330038003d004200120054002b36293ba003051a3e0602031a41066402331a4306022e1a460602291a490602241a4c06021f1a4f06021a1a520602152b36293ba003051a4e0602031a51066402031a5306293b3bef293ba003051ae706024d28052ab1292810b1293cb2292808b4291afa03a503043b5002041af803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ab00628082d28082805ec503128082d280d34ec502b95502b27073e2a692d352e362f372b340c2b929103092b3529220d0c6402031ab3032b9203052b3ba202052b942811a0030a1aa8032c1aac030c02012b293d1aab030c3e2a69291aab03691aaf032a691ab2032a691ab5032a69302a691ab5032a691ab8032a691abb032a69220c2a691aba032a691abd032a693b3c3c3b2d68052219221c0c293b691a19062a691a1c062a691a1f062a692e2a691a1f062a69221b2a693b3e3b3b2d68052723f7a4012b362c372d382b9203052b3ba202052b942811a0030a1a14032c1a18030c02012b293d1a17030c2b9203052b3ba202052b942811a0030a1af3022c1af7020c02012b293d1af6020c291ac905691acd052a692d2a691acd052a6927071a0e040c3e2a692c2f0c291ac305691ac7052a692c2a693b3e3b3b2d68052709f725012b362c372903051ab40502031ab705293b3bef293ba003051a7302024a293cb1292810b1293cb2292808b4291a6702a503043b5002041a6502103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c95502c27083e2a692e301a5f050c291a62050c2b2a693b3c3c3b2d6805270902a22b362c37290a0e00210026002b00300035003a003f00440049001c004e00530058005d001a3405023f1a3705023a1a3a0502351a3d0502301a4005022b1a430502261a460502211a4905021c1a4c0502171a4f0502121a5205020d1a550502081a580502031a5b052b3b693e2b692a2f1a58050c291a5b050cfa902a693b3c3c3b2d680529fa8c693b3d3c3b2d6805293b69fa872a69312a693b3d3b3b2d6805270e42|@1710,1,@11614,@1499,@1500,@1325,@1711,@1715,@1500,@1325,@1717,@1718,@1719,@1325,@1499,@1717,@1720,@1722,@1723,@1724,@1725,@1726,@1727,@1728,@1729,@1730,@1731,@1732,@1733,@1734,@1735,@1736,@1737,@1738,@1499,@1500,@1325,@1500,@1740,@1756,@1757,@1758,@1759,@1760,@1761,@365,72057594037927935,@286,@1762,@796,@797,@801,@1763,@1323,@1324,@1500,@1323,@1324,@1500,@1766,@1767,@1768,@1324,@1323,@1324,@1323,@1323,@1323,@1769,@1771,@1773,@1048,@1775,@826,@1784,@1786,@1787,@1788,@1789,@1790,@1791,@1793,@1321,@1323,@1794,@1796,@294,@418,@416,@284,@1797,@1798,@1799,@359,@1832,@1833,@1834,@1835,@1836,@1837,@1838,@1839,@1840,@1844,@1322,@1846,@1717,@1848,@1849,@1850,@1851,@1852,@1853,@1854,@1855,@1856,@1857,@1858,@1859,@1323,@1860,@1861,@1862,@1866,@1717,@1870,@1717,@1872,@1499,@1874,@1876,@372,@1878,@1499,@1323,@1324,@1500,@1879,@1323,@1880,@1323,@1323,@1882,@1877,@1883,@1499,@1323,@1884,@1885,@1886,@1887,@1144,@1145,@1146,@1147,@1148,@1149,@1150,@1151,@1152,@1153,@1154,@1155,@1156,@1157,@1888,@1709| 15382:D6,64|fb0b2c929103352c352d36293ba0030b2a35292f0c293b6965021e2a35292f0c29fa35693b3b3b3b2d68052d32fa310cfa362a692b2a6927066502013b430000|@1713,1,@11615,@1712,@1711,@1323| 15383:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11616,@1715,@1499| 15384:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11617,@1712,@1718,@1323| 15385:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11618,@1719,@1499| 15386:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11619,@1712,@1734,@1323| 15387:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11620,@1735,@1499| 15388:D6,72|fb0b2c9291033f2c352d36293ba003102a3529352a362b37310c293b696502232a3529352a362b37310c29fa33693b3b3b3b2d68052d32fa2f0cfa342a692b2a6927066502013b43|@1713,1,@11621,@1712,@1736,@1323| 15389:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11622,@1737,@1499| 15390:D39,1960|fb162b350a0c0022012801bd0152024703c0033904e004e70518008e0618072b362c372a3da003051a950702212a3ca003051a930702172a3fa003051a9107020d2a3ea003051a8f0702031a9207293b3bef293ba003051a8e0702593f2ab1292810b1293cb2292808b4291a8207a503043b5002041a800710292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082854e4502b28092865e4502b402873e4502b280b2874e4503128082d280c34ec502b95502b27072c03051a450702031a48072a3b3bef2a3b3bef2a3ba003032b0254293ba003032c024c2a2ab1292810b1293cb2292808b4291a0607a503043b5002041a040710292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c27082708f77c061ae406f776062b36290a07000e00130018001d00220027002c001ad206021c1ad50602171ad80602121adb06020d1ade0602081ae10602031ae406293b3bef293ba003051ae006024e292805b1292810b1293cb2292808b4291a6b06a503043b5002041a690610292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a9e0628082e2c2805ec502c95502c270866f7e1052b36290a07000e00130018001d00220027002c001a3d06021c1a400602171a430602121a4606020d1a490602081a4c0602031a4f06293b3bef293ba003051a5306024e292809b1292810b1293cb2292808b4291ad605a503043b5002041ad40510292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a110628082e2c2809ec502c95502c270866f74c052b36293da003051a5d050221293ca003051a5b050217293fa003051a5905020d293ea003051a570502031a5a05293b3bef293ba003051ace0502593f2ab1292810b1293cb2292808b4291a4a05a503043b5002041a480510292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082854e4502b28092865e4502b402873e4502b280b2874e4503128082d280c34ec502b95502b2707293b3bef293ba003051a6f05024e292809b1292810b1293cb2292808b4291ae204a503043b5002041ae00410292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a2d0528082e2c2809ec502c95502c27082705f757042b36293da003051a1805020d293ca003051a160502031a1905293b3bef293ba003051a1505024e292809b1292810b1293cb2292808b4291a6804a503043b5002041a660410292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11ad30428082e2c2809ec502c95502c270866f7de032b36293ca003051abf04020d293da003051abd0402031ac004293b3bef293ba003051abc04024e292809b1292810b1293cb2292808b4291aef03a503043b5002041aed0310292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a7a0428082e2c2809ec502c95502c270866f765032b36290a07000e00130018001d00220027002c001ac103021c1ac40302171ac70302121aca03020d1acd0302081ad00302031ad303293b3bef293ba003051a2f040260293fb1292810b1293cb2292808b4291a5b03a503043b5002041a590310292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2852e4502c2a3cb12865e4502c2a3db12861e4502c2a3eb1286ce4502c95502c270866f7be022b36293da003051acf020221293ca003051acd020217293fa003051acb02020d293ea003051ac90202031acc02293b3bef293ba003051a980302593f2ab1292810b1293cb2292808b4291abc02a503043b5002041aba0210292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082854e4502b28092865e4502b402873e4502b280b2874e4503128082d280c34ec502b95502b2707293b3bef293ba003051a39030260293fb1292810b1293cb2292808b4291a5502a503043b5002041a530210292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2852e4502c2a3cb12865e4502c2a3db12861e4502c2a3eb1286ce4502c95502c27082705f7b7012b36290a07000e00130018001d00220027002c001a1302021c1a160202171a190202121a1c02020d1a1f0202081a220202031a2502293b3bef293ba003051a99020260293fb1292810b1293cb2292808b4291aad01a503043b5002041aab0110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c270866f710012b36293da003051ad101020d293ca003051acf0102031ad201293b3bef293ba003051a16020260293fb1292810b1293cb2292808b4291a2201a503043b5002041a200110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c27086602862b36293ca003051a6701020d293da003051a650102031a6801293b3bef293ba003051a9401025e293fb1292810b1293cb2292808b429fa99a503043b500203fa9810292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2857e4502c2a3cb1286fe4502c2a3db12872e4502c2a3eb12864e4502c95502c270866420000|@1742,1,@11623,@1729,@1730,@1731,@1732,@1733,@1743,72057594037927935,@286,@1744,@1745,@1746,@1722,@1723,@1724,@1725,@1726,@1727,@1728,@1747,@1748,@1743,@1748,@1749,@1750,@1751,@1748,@1752,@1753,@1754,@1748,@1755,@1743,@1755,@1741,@1741,@1741| 15391:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11624,@1712,@1756,@1323| 15392:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11625,@1757,@1499| 15393:D24,1040|fb1c2b9203872b9203052b3ba202052b942811a0030a1a0f042c1a13040c02012b293d1a12040c293b3bef293ba003051a0d0402543e2ab1292810b1293cb2292808b4291a0104a503043b5002041aff03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808284ce4502b28092849e4502b402854e4503128082d280b34ec502b95502b270766f782032b92030d29371ac2031ac7031acc036b103b503b502b942928ffb7293eb7293da003bc2e2d360c293b3bef293ba003051ab003024d28062ab1292810b1293cb2292808b4291a7303a503043b5002041a7103103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a790328082d28082806ec503128082d280e34ec502b95502b2707293b3bef293ba003051a5d03024a293cb1292810b1293cb2292808b4291a1903a503043b5002041a1703103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2822e4502c95502c27082704f7a2022e942928ffb7293eb7293ca0f82201319329920305293ba2020529942811a0030a1a98022a1a9c020c020129299203043b5002041add02103b50292808ac292810a203032902022810293ca0030d220c3bdc1ac7022a3bdb64026e293ba003051ac1020264293ba803043b5002041abb02103b50292810b1293cb2292808b4291a5902a503043b5002041a5702103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503b302aa503043b500216292808b122142bdc2e2b2be4502b3cb12503511e1c51502b95502b2706291a67021a6c020c293b3bef293ba003051a6702024d28092ab1292810b1293cb2292808b4291aea01a503043b5002041ae801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a300228082d28082809ec503128082d281134ec502b95502b27072707f770013192030d2f371ab2011ab7011abc016b103b503b5031942928ffb7293eb7293ba003463492030d32371a8f011a94011a99016b103b503b50349329920305293ba2020529942811a0030a1a3e012a1a42010c020129299203043b5002041a8301103b50293ca86502013bf800013492030d32371a45011a4a011a4f016b103b503b5034352992299103242a92030d34371a28011a2d011a32016b103b503b502a942928ffb7293eb7293da06602013b03b72a220c360c293b3bef293ba003051a5901024b28052ab1292810b1293cb2292808b429fad5a503043b500203fad4103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a240128082d28082805ec503128082d280d34ec502b95502b2707293b3bef293ba00304fac10248293cb1292810b1293cb2292808b429fa7ea503043b500203fa7d103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2822e4502c95502c270827040202fab9650202fabc66666642|@1778,1,@11626,@796,@797,@801,@1779,72057594037927935,@286,@1045,@1046,@1042,@1780,@359,@792,@296,@294,@288,@283,@285,@1781,@1782,@1777,@1777| 15394:D4,8|fb022bfa1b8a4200|@1783,1,@11627,@18916| 15395:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11628,@1712,@1789,@1323| 15396:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11629,@1790,@1499| 15397:D16,224|fb192b3ba003033b02d12b352c362a352b36303cfae20c293b3bef293ba00304fade02503e2ab1292810b1293cb2292808b429fad3a503043b500203fad210292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082841e4502b28092872e4502b402867e4503128082d280b34ec502b95502b27073e2a692dfa9e0c29faa20cfaa72a693b3c3c3b2d6805293b69faa12a692f2a69220c3ba00304fa9c02013b220e92919103033b0202fa95293ba003032a02052a2afa910c293ba003032c02052c2afa8c0c3b3f3b3b2d680522173caa292214fa830c2b2a6927164300000000|@1801,1,@11630,@801,@1788,72057594037927935,@286,@1802,@1823,@1767,@1323,@1824,@1828,@1831,@1800,@1799| 15398:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11631,@1803,@1712,@1802,@1323| 15399:D21,304|fb132b353da003cf2b362c372a3c1a37010c293b3bef293ba003051a3201024b28082ab1292810b1293cb2292808b4291a2501a503043b5002041a230110292841bd2a3cb22a2a3b3bf02b3b3b32f0501afd0028082d28082808ec503128082d281034ec502b95502b2707293b3bef293ba00304faf20246293cb1292810b1293cb2292808b429facfa503043b500203face10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a285be4502c95502c27083e2a692ffaac0c29fab00c2b2a693b3c3c3b2d6805270b02522b353ba003402b362c3729fa9c0c2bfaa00c29faa40cfaa92a69faad2a69fab12a69faa52a69fab12a69293ba00303300205302afaab0cfab02a693b3c3c3b2d6805270c020c2b353ca00304faa30202faa742000000000000|@1805,1,@11632,@801,@1806,72057594037927935,@286,@416,@1807,@1808,@1809,@1816,@1817,@1325,@1323,@1818,@1322,@1820,@1325,@1821,@1804| 15400:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11633,@1803,@1712,@1807,@1323| 15401:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11634,@1808,@1763| 15402:D7,40|fb062b9291031b2b36293ba00304fa30020d29fa330cfa382a69fa3c2a69656402013b4200000000|@1713,1,@11635,@1811,@1809,@1323,@1810| 15403:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11636,@1803,@1813,@1816,@1323| 15404:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11637,@1817,@1499| 15405:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11638,@1820| 15406:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11639,@1823,@1763| 15407:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11640,@1831| 15408:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11641,@1800| 15409:D4,32|fb072b929103132b352c3628082b692afa260c2a2a69270402013b4200000000|@880,1,@11642,@1833| 15410:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11643,@1712,@1835,@1323| 15411:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11644,@1836,@1499| 15412:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11645,@1803,@1712,@1838,@1323| 15413:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11646,@1839,@1763| 15414:D6,64|fb0b2c929103352c352d36293ba0030b2a35292f0c293b6965021e2a35292f0c29fa35693b3b3b3b2d68052d32fa310cfa362a692b2a6927066502013b430000|@1713,1,@11647,@1712,@1860,@1323| 15415:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11648,@1861,@1499| 15416:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11649,@1863,@1862,@1323| 15417:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11650,@1712,@1886,@1323| 15418:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11651,@1887,@1499| 15419:D6,64|fb0a2c929103312c352d36293ba003092a2e0c293b6964021c2a2e0c29fa39693b3b3b3b2d68052c31fa350cfa3a2a692b2a6927056502013b43000000000000|@1713,1,@11652,@1712,@1888,@1323| 15420:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11653,@1709,@1499| 15421:D16,192|fb1d2c3cfad20c293b3bef293ba00304face024a28092ab1292810b1293cb2292808b429fac2a503043b500203fac1103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa9a28082d28082809ec503128082d281134ec502b95502b27073e2a6931fa940c29fa980cfa9d2a693b3c3c3b2d68053332360c293b693b3d3b3b2d6805293b69fa892a69fa8d2a69fa912a69fa952a69fa892a69322a69fa822a69fa8e2a69fa922a69fa762a6922122a693b3c3b3b2d6805271744000000000000|@1891,1,@11654,@801,@1892,72057594037927935,@286,@1893,@1894,@1767,@1717,@1895,@1323,@1842,@1890,@1844| 15422:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11655,@1803,@1712,@1893,@1323| 15423:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11656,@1894,@1763| 15424:D18,368|fb252b353ba0f829012b362c372d382e392b3c1a72010c293b3bef293ba003051a6d01024d28092ab1292810b1293cb2292808b4291a6001a503043b5002041a5e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a360128082d28082809ec503128082d281134ec502b95502b27073e2a69301a2f010c291a32010c1a36012a693b3c3c3b2d6805323cfaf90c293b3bef293ba003051a2401024a280c2ab1292810b1293cb2292808b429fae8a503043b500203fae7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faf028082d2808280cec503128082d281434ec502b95502b27073e2a69220c2211360c293b69fad22a69fad62a69faca2a692e2a69fac32a69facf2a69fabb2a69220d2a69fab32a69fac72a69facb2a69faa72a6922162a693b3c3b3b2d6805271f02392b353da003082b36292b362d7d042b353ea003162b36292b36faa30cfaa82a693b3b3c3b2d680566020f2b362c372d382b2b2b2f37317b05064200000000|@1897,1,@11657,@801,@1892,72057594037927935,@286,@1898,@1899,@1767,@1900,@1323,@1901,@1842,@1890,@1844,@1903,@1896| 15425:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11658,@1803,@1712,@1898,@1323| 15426:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11659,@1899,@1763| 15427:D20,440|fb222c9291f8a9012c352d36293ba003cc2a352b362c372a3c1ab4010c293b3bef293ba003051aaf01024d28052ab1292810b1293cb2292808b4291aa201a503043b5002041aa001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a780128082d28082805ec503128082d280d34ec502b95502b27073e2a692f1a71010c291a74010c1a78012a693b3c3c3b2d6805280c326922100c293b693b3d3b3b2d6805293b691a60012a691a63012a691a66012a691a69012a691a5c012a69322a691a64012a691a4f012a6922102a693b3b3b3b2d6805293b69271902d12a352b362c372a3cfae90c293b3bef293ba00304fae5024a28052ab1292810b1293cb2292808b429fad9a503043b500203fad8103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab128082d28082805ec503128082d280d34ec502b95502b27073e2a692ffaeb0c29faef0cfab42a693b3c3c3b2d6805280c326922100c293b693b3d3b3b2d6805293b69fa9d2a69faa12a69faa52a69faa92a69fa9d2a69322a69faa62a69fa922a6922102a693b3b3b3b2d680529faaa693b3b3b3b2d6805221b2220faa40cfaa92a692b2a69271d6502013b430000000000|@1713,1,@11660,@801,@1787,72057594037927935,@286,@1905,@1906,@1767,@1717,@1895,@1323,@1842,@1844,@1907,@1908,@1904,@1903,@1323| 15428:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11661,@1803,@1712,@1905,@1323| 15429:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11662,@1906,@1763| 15430:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@1713,1,@11663,@1803,@1712,@1907,@1323| 15431:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11664,@1908,@1763| 15432:D4,48|fb0d0b020034333c2c34342210220cfa370c5029352a362a352b362c37220d2c452a462b472d4827081f070000000000|@1915,1,@11665,@1914| 15433:D25,472|fb2e0b0300220d220d2b220c220c1adf010c5029352a362b37220e03033c020129f8a40133299291031b29352a362a351ac501a003052a68010207292503511e1a3b6502013b64293ba0034b1ab101299291031b29352a362a351a9b01a003052a68010207292503511e1a3b6502013b64293ba003041a8f01103b503b50293529351a7301a003043b5002041a8101103b502937650217293529351a5a01a003043b5002041a6801103b50293764220c299291031b29352a362a351a5a01a003052a68010207292503511e1a3b6502013b64293ba003051a46010217293529351a3501a003043b5002041a2301103b502937642f35303631372a2c2b1a29010c2f03071a2a012e0c02013b3003092a1a26010c2f0c02013b2b1a24011a29011a2e01220f1a31011a36010c3203071a3701310c02013b3303092a1afb000c320c02013b3b06220f061a25012a6929221b2d6a1a23012a69302a1a24010c0b03003235030f313533352b30452b462a475051022131350b03003222272f2c22291a06010c5029352a362b37312c452b462a4750260829352a362b3722180307faf022170c02013b221903092cfa8b0c22180c02013b2d2d2d222c222c222c222c222cfad5222d7b0a2d220d2c452b4627071f08000000000000|@1917,1,@11666,@1918,@48,@1652,@1701,@826,@70,@2226,@2227,@2229,@1707,@1295,@2231,@2236,@2237,@2044,@2238,@15612,@15613,@1936,@2401,@1916,@1914| 15434:D9,128|fb163b062f3ba203033c02042ffa89a80303fa8c103b503b502f28403bdafa882a69fa8c2b69fa902d693b062b2a2e2d6b0b030022112e3b2c22122212fa810c5029352a362b372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c2a2c6a220f35343522162c452b462a4727121f05000000000000|@1920,1,@11667,72057594037927935,@789,@15435,@15436,@15437,@1919| 15435:D7,112|fb092b353ca00303fa7e103b500b02002e353ea0030d3c2f692a2a45fa72465050023d2e353ba0030d3c2f692a2a45fa5f465050022a2e362d36932a2aa90303fa56103b502e362b3bdb293ba00303fa4f103b5029352d2a35452a364651260329352a362a2a69270542000000000000|@1922,1,@11668,@1923,@951,@829,@1921| 15436:D4,32|fb092b352c362968012c36932c2aa90303fa25103b502d362d3b2de327044200|@1930,1,@11669,@864| 15437:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@1931,1,@11670| 15438:D8,616|fb1b30350a16004a00a4002c00f0002c000a012c0024013f012c002c006f01fd012c002c0024022c002c002c002c00380249021a4a022a230a312f2f6805312a1a45020c2931311a4602307b050af711023036313732380b03002d220e220e2c220e220e220d0c5029352a360b0300220c22142f2c2214221422130c5029352a360b03002211221a2f2c221a221a22190c5029352a363b312c22106b221a2a452b461af301472716f7b7013036293729353ba0032129362b352c362d382e392d2a2e2e2e2212221222122212221222113822137b0c0f29362b352c362d382e392d2a2e2e2e2212221222122212221222113922137b0c0f303631373238292c2c220c220c220c220c220c343a220d7b0a0b3036313732382b2b2b220c220c220c220c220c3437220d7b0a0b3036313732382a2c2b220c220c220c220c220c342307220d7b0a0b303630372a2a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a6964332a45220c462b47270602ec3036313732380b03002f220e220e2c220e220e220d0c5029352a362b3729353ea0032e2937322a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a696422132a4530462b47270502393003172b352806a003082b323cfaca0c0206280b2c333c6b02152b352806a003082b323bfab30c0206280b2c333b6b220f2a452c46fa9a4764270a025e30360b02002c343b3b2d220c220c3423080c5029352a36280c2b69342a45220d462b4727070237303631372a2a69293333333333322309347b080b303631372a2a33333333333236347b090a30363137292b3333333333322306347b090a1f0600000000|@1934,1,@11671,@15439,@1936,@1933,@951,@1039| 15439:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11672| 15440:D4,24|fb062c2c0c293ba003072d2dfa222e7e0529356443000000|@1938,1,@11673,@1937| 15441:D11,792|fb212c350a1600460068009c00b500d1005f0182018601a301a701ad01c901e001140257022c00660274028e02d902ee02ff022c362d372a2e1af4020c2a2f1af6020c280f2b2b6a2704f7c8022c362d372e38292f1ae0020c2c301ada020c2c311ad4020c3b2b2b2e6b2706f7a6022c3629352a362b372c382d3929321ab8020c2e331ab2020c2e341aac020c2d220c1aa5020c2b2b312c3068053c2a69270bf772022c362d372a2e1a8c020c2a2f1a8e020c3d2b2b6a2704f759022c362d372e382b2f1a71020c2b301a6b020c3e2b2b2e6b2705f73d022c362d372e382f3929352a362b372b331a4d020c2b9291030f2b3529220c1a3f020c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a220c35220d36220e372b22151a13020c2b9291030f2b352922171a05020c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a2218221d1ae1010c3f221b2b2d22106805271bf7af012c362d372e382b2f1ac7010c2b301ac1010c2b311abb010c28052c2c2c6b2706f78c012cf788012c362d372e382a2f1aa0010c2c301aaa010c28072a2c2e6b2705f76b012cf767011a9f01f761012c362d372e382b2f1a79010c2b301a73010c402b2b2e6b2705f745012c362d372e382b2f1a5d010c280b2a2d2d6b2704f72e012c3629352a362b372c382d392e3a2f230630230730220c1a37010c2e220d1a50010c2a32322c323232326808280c2a69270c02fa2c362d3729352a362b372b311a0e010c2b9291030e2b3529331a01010c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a280d220d2b6a270d02b72c36292d1afb000c280e2a696502a82c36292dfac50c28102a6965029a2c362d372e38292ffab30c2c30faae0c28112a2e2d6b270502802c362d372e3829352a362b372b32fa930c2b9291030d2b352934fa870c2968016502013b2a2a2d6a29352a362b376a29352a362b372b2b2b6a220c2211fa640c2812220f2b2d6b270f02352c362d372e382a2ffa4e0c28132d2b2d6b270402202c362d372a2efa6b0c28142a2c6a66020f2c362d372a2efa2a0c28152a2c6a66430000|@1940,1,@11674,@1941,@1936,@1949,@1950,@1951,@1952,@1955,@1939| 15442:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@11675,@1942,@1941| 15443:D5,96|fb0b2c353ba003182c362d372e382f392930fa640c3b2e2e2e2d6805270502382c353da0030d2c36292dfa4c0c3d2a696502252c353ea0030d2c36292dfa410c3e2a696502122c362d372e38292ffa280c3c2d2d2c6b27044300000000000000|@1944,1,@11676,@1936,@1943| 15444:D6,64|fb0d2c929103342c352d362a352b362c37280c2a692932fa3f0c2935280ca003043b500203fa391029362e2e2b6a30220cfa350c2a2a69270a02013b43000000|@880,1,@11677,@1936,@1945,@1943| 15445:D5,48|fb0e2c929103272c352d362a352b362a352b362c372933fa2f0c2c2c2b6a292f6931220dfa2a0c2a2a69270b02013b43|@880,1,@11678,@1936,@1949| 15446:D5,40|fb0a2c9291031c2c352d362a352b362a30fa2d0c292b692d32fa2d0c2a2a69270702013b43000000|@880,1,@11679,@1936,@1950| 15447:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11680,@1936,@1953,@1952| 15448:D5,40|fb0a2c9291031c2c352d362a352b362a30fa2d0c292b692d32fa2d0c2a2a69270702013b43000000|@880,1,@11681,@1936,@1955| 15449:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@11682,@1936,@1939| 15450:D8,152|fb0a2d352806a003442d362e3728062b2b6a2a299291032729352a362a35fa90a003122a35fa89a003043b500203fa88102a370207292503511e263b650202fa7f642f2b4531462a47270402472d35280fa003382d362e372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba003032902052930fa460c2b2a31fa48327b05092b2e452d46fa2d4744000000|@1957,1,@11683,@25,@826,@951,@1956,@1933| 15451:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11684,@1956| 15452:D7,128|fb0d3b32299291031229362b3caa292b25042504511e113b6502012a650b0200220c332b303634342210fa6c0c5029352a362afa6b0c29299291031829352a362a352806a00309292503511e143b02013b6502013c64030b28142a22106afa480c020628142a22106afa452d2211336b3e322b6a220e2c452e462a47270a1f07|@1959,1,@11685,@1960,@1962,@1083,@15453| 15453:D6,96|fb0b0b02002e2d38a203352c362f2a929103043b500203fa5f102a352b362b3ba0030b2a2e2a35452a364651020e2b3cab2a2a2505250526031e2b50515102152c3703043b500203fa3610fa3b2a2a35452a36465129352a362a2a6927054200|@1965,1,@11689,@953,@1964,@1459| 15454:D4,168|fb1a319291039a313532360b03002e32220f2c220e220e22110c5029352a362b370b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a4532465026040220220e383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a360b0200220f2d2b2219221922192219fa320c5029352a362f2b69221a2a452b46271402052f3b4531461f07|@1961,1,@11686,@1960| 15455:D5,64|fb0b2b929103312b352c362a352b362a353ba003112a362b37292cfa3b0c28062c2b6a6602072a3628082a69642cfa300c2a2a69270602013b42000000000000|@880,1,@11687,@1963,@1962| 15456:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11688,@25,@394,@1963| 15457:D17,520|fb1d0b0300220d34342c343433360c5029352a362a352806a0031f2a36293ba00304220e0202220f29220f2d220f220f220f220e3622107b08120b0300221222113b2c221122112210360c5029352a362b370b0300221822183b2c221822182217360c5029352a362b3732352810a003323133321aa9010c280522112b1aa8016b3d2a6929221269293ba003032e02062e2a1a9b010c221d31452a462f472705f7590132352806a003fb3236323ba0030f2c352806a003052b3ba002013b02013b03882c362a2aa0032d22111a69010c291a6c01b7291a6701a00304221202093d2214692922146964221d220f452a461a5501476602512a3ca00305293ba002013b030e221a2212452211461a39014702362a3ba00305293ca002013b03152815221228096a221b2a452212461a18014764021428052212220d306b221b2a452212461a020147646402572c352810a003322b2d2cfaf90c28052212faca2c6b3d2a6929221369293ba00304220d0206220d2afae30c221e2210452a46220e472705021e323433fad70c2c2e2dfad90c280522132c2c6b221c2a45221346faa847666402572b352810a003322a2c2bfabf0c28052211fa702c6b3d2a6929221269293ba00304220c0206220c2afaa90c221d220f452a46220d472705021e313332fa9d0c2b2d2cfa9f0c280522122c2c6b221b2a45221246fa4e4766270e27061f08000000000000|@1970,1,@11690,@1971,@921,@1983,@1984,1610612736,@951,@1986,@1988,@1989,@1991,@1993,@1995,@1996,@1969| 15458:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11691,@1974,@1971,@1972| 15459:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11692,@25,@394,@1974| 15460:D6,152|fb0d2c3ba003032b02882b352808a003092b3629353da06402013b03702b3629362e29929103043b500203fa831029352a36293ba003032a0207292503511e1c3b656429353ca0033c29372a382c2ba0032b3b32299291031229362b3caa292b25042504511e113b6502012a65293cab332afa440c292dfa47220c7e0c280f32326a650205280f30306a660205280f2d2d6a430000000000|@1976,1,@11693,@1977,@1975,@1972| 15461:D5,40|fb072b3ba003033b021d2c929103043b500203fa2b102c352d362d3cab2a2afa270c2c2a69270443|@1981,1,@11694,@1980,@1975| 15462:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11695,@1983| 15463:D10,848|fb112b350a16003200570083008700f9006b012c008b012c008f019501b0012c00b90116021a02780286028902b902c102ea021a3203f70f032b362c372d38291a2d030c1a31032ab72d1a23030c2a2ab72e1a1b030c2a2ab72708f7ea022b3629352a362b382c39291a04030c2d1aff020c2a2ab72e1af7020c2a2ab72f1aef020c2a2ab7270bf7be023bf7ba022b362c372d3829350a0c001d00220027002c00310036003b004000450018004a004f001ab40202351abf0202301ac202022b1aa50202261aa00202211a9b02021c1a960202171aa10202121a8c02020d1a870202081a820202031a7d022c1a81020c2a2ab72d1a79020c2a2ab72707f748022b362c372d382e392c3ba003051a5802020d2c3ca003051a4e0202031a69022a352b36299291031229352b1a42020c2a1a3d020c2a2ab76602052a1a32020c2c2ab72f353036299291031229352b1a1f020c2a1a1a020c2a2ab76602052a1a0f020c2c2ab7341a07020c2a2ab7270ef7d6012b362c372d382b1af4010c2b1aef010c2a2ab72c1ae7010c2a2ab72707f7b6013bf7b2011adf01f7ac012b362c372a1acc010c291adf01b82b1ac2010c2a2ab72705f791012b36291ab3012d7d042b362c372a352807a003082a36293ca06402013b03051a8f01021a2a352806a003082a36293ca06402013b03051a780102031a83012a352b36299291031229352b1a6c010c2a1a67010c2a2ab76602052a1a5c010c2c2ab72706f72b013bf727012b362c37291a47010c2b2a2a929103492a352b362a353ba0030a2a39291a2f010c6402232a353da0030a2a36291a1f010c6402132a353ea003051a0a0102082a38291a0a010c64292db72b2a2506250626041e473b2704020129656602c92b3629faec0c291a0701b76502bb3b02b82b372c3829352a36299291031029352bface0c2afaca0c2a2ab76602042afac00cfae52ab72efab80c2a2ab7270702882b3729faab2d7d042b3629fa9b2a9291031a2a352b362afa970c292db72b2a2506250626041e183b2704020129656402572b362c37290a0e002000240028002c0030001c0034001c001c001c0038003c0040004400fa510226fa6d0222fa69021efa75021afa710216fa4d0212fa39020efa35020afa310206fa2d0202fa292bfa2e0c2a2ab727044200000000000000|@1985,1,@11696,1879048192,@1984,1610612736,805306368,1073741824,-1073741825,1342177280| 15464:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11697,@1987,@1986,@1972| 15465:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11698,@25,@394,@1987| 15466:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11699,@1988| 15467:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11700,@1990,@1989,@1972| 15468:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11701,@25,@394,@1990| 15469:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11702,@1992,@1991,@1972| 15470:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11703,@25,@394,@1992| 15471:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11704,@1994,@1993,@1972| 15472:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11705,@25,@394,@1994| 15473:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11706,@1995| 15474:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11707,@1997,@1996,@1972| 15475:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11708,@25,@394,@1997| 15476:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11709,@1998,@1969,@1972| 15477:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11710,@25,@394,@1998| 15478:D9,232|fb1c0b0300220e34342c343433370c5029352a360b0300221322112f2c221122112210370c5029352a360b0300221822172f2c221722172216370c5029352a36220d352806a0036b220d3629920312299203043b500203faa7103b50293ba002013b031ffaa2221436221b221922196805221b2afa9a0c22192a452d46fa994765022d3b221f69fa97221536221c221a221a6805221c2afa770c342f2d2c221568053c2a69221c2a453046fa6b47270564022d3b221e69fa6f221436221b221922196805221b2afa470c332e2d2c221468053c2a69221b2a452f46fa3b47270527121f0a00000000|@2000,1,@11711,@1048,@15480,@1936,@951,@15481,@15479| 15479:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11714| 15480:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11712| 15481:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11713| 15482:D13,520|fb20343ba0036f0b0300220e34342c343433370c5029352a360b0300221322112f2c221122112210370c5029352a360b0300221822172f2c221722172216370c5029352a361ad801221336221a221822186805221a2a1acf010c322d1ad1012c221368053c2a69221a2a452e461ac801472716f78a012f360b0300220f220c220c2c220c220c34370c5029352a360b0300221422122f2c221222122211370c5029352a360b0300221922182f2c221822182217370c5029352a36220d352806a0036c220d3629920313299203043b5002041a6c01103b50293ba002013b0330280922203c6a1a6001221636221d221b221b6805221d2a1a2f010c3e2a1a51012e6b221c2a452f461a2e01472704021c280922203c6a3e332e2c6b22153b3b3ce3221b2b452e461a0f0147666402d02a352806a0034b221e3fa003033c0204221e3ea028153228056a280922213c6a3e342f2c6b2815220c28076a2d0304281102013c28062a3b6a3e2c2bfaec6b2805302f2c6b22202a453346fabd472709027e30352806a0034a221e3fa003033c0204221e3ea028152c28056a280922213c6a3e342f2c6b28152f28076a2d03033c0202281128062a3b6a3e2c2bfaa36b2805302f2c6b22202a453346fa6c472709022d3c221f69fa91221536221c221a221a6805221c2afa410c332e2d2c221468053c2a69221c2a452f46fa3d47270527131f0a000000000000|@2002,1,@11715,@15484,@1936,@920,@951,@1048,@15485,@921,@1018,@1018,@15483| 15483:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11718| 15484:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11716| 15485:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11717| 15486:D38,2216|fb1b2f360b0300220d220c220c2c220c220c34360c5029352a360b0300221222122f2c221222122211360c5029352a3622163540a0f838012216362b352806a003cc2b3632352806a0037f32362992299103033c02052b9229916403143e220c30221d6b22162a452f461a53084764025622103b3b3ce32b9203043b5002041a4608103b502c9203043b5002041a4008103b502d3da0030b2b2db928062a3b6a6402192d3ca0030b2b2db828062a3b6a6402092b2db728062a3b6a6422172a4530461afb07476565024129920313299203043b5002041aff07103b50293ba002013b03162a3ba003032c02013222142a452d461aca07476402113e332e221b6b22142a452d461ab707476464025e31352806a00346313629920313299203043b5002041aba07103b50293ba002013b03162a3ba003032c02012c22142a452d461a7d07476402113e332e221b6b22142a452d461a6a0747646402113e322d221a6b22132a452c461a5607476464f72f072216352808a0f8f30122163631352806a003072b352806a002013b03d831362c362a92299103033c02052a9229916403143e220c30221d6b22162a452f461a0f07476402ac22103b3b3ce32c9203043b5002041a2207103b502b9203043b5002041a1c07103b502d3da003182b3ba003041a1407103b503b502c2cb528062a3b6a6402622d3ca003182b3ba003041aff06103b503b502c2cb428062a3b6a6402452d2805a003041aee06103b503b502d3fa003041ae906103b503b502d3ea0030b2c2cb328062a3b6a64021a2d2806a0030b2c2cb228062a3b6a6402092c2cb128062a3b6a6422172a4530461a6106476566f70301221736293ba003072c352806a002013b033c2c3629920313299203043b5002041a9006103b50293ba002013b030c221434452d461a24064702113e342f221c6b22152a452e461a120647646402b4221836293ba0030733352806a002013b033d333629920313299203043b5002041a4a06103b50293ba002013b030c22152f452e461ad6054702123e220c30221d6b22162a452f461ac3054764640264221936292806a003072e352806a002013b033e2e3629920313299203043b5002041a0206103b50293ba002013b030d2216220d452f461a85054702123e220d31221e6b22172a4530461a720547646402123e220c30221d6b22162a452f461a5d05476464646464f733052216353ca0f8650322163631352806a003072b352806a002013bf8490231362c362a92299103033c02052a9229916403153e220c30221d6b22162a452f461a13054764f71c0222103b3b3ce32c9203043b5002041a6d05103b502b9203043b5002041a5f05103b502d0a07000e003400b6000e0133018a01c80178810c2e2eaa28062a3b6a64f102146d29352805a003043b50020229103b501a300564f7b70178815c2d3ba003041a2905103b503b502d1a2805a003072e1a2905a002013b03041a2805103b503b502e2ead2e3ba003041a2005103b503b502f2fae293ba003033c020a293ba2303ba22a2aa06503032a02032a3cab28062a3b6a66f102206d29352807a003051af204021229352805a003043b50020229103b501aae0464f735017881332d3ba003041ac704103b503b502e2eae293ba003033b0212293ba22f3ba22a2aa003032b02032b31aa6528062a3b6a65f102206d29352807a003051a9904021229352805a003043b50020229103b501a55046402dd78810c2e2eac28062a3b6a64f102146d29352805a003043b50020229103b501a30046402b87881322d3ba003041a2a04103b503b502d1a2904a003072e1a2a04a002013b03041a2904103b503b502e2ead28062a3b6a64f102206d29352807a003051a1d04021229352805a003043b50020229103b501ad9036402617881192d3ba003041af303103b503b502e2eae28062a3b6a64f102206d29352807a003051adf03021229352805a003043b50020229103b501a9b0364022378810c2e2eab28062a3b6a64f102146d29352805a003043b50020229103b501a76036422172a4530461af402476566f70301221736293ba003072c352806a002013b033c2c3629920313299203043b5002041a7b03103b50293ba002013b030c221434452d461ab7024702113e342f221c6b22152a452e461aa50247646402b4221836293ba0030733352806a002013b033d333629920313299203043b5002041a3503103b50293ba002013b030c22152f452e461a69024702123e220c30221d6b22162a452f461a56024764640264221936292806a003072e352806a002013b033e2e3629920313299203043b5002041aed02103b50293ba002013b030d2216220d452f461a18024702123e220d31221e6b22172a4530461a050247646402123e220c30221d6b22162a452f461af001476464646464f7c6012216352809a0f8ad0122163622173732352806a003072c352806a002013bf8820132362d362c3ba003033b020f2a92299103033c02052a922991646403153e220c30221d6b22162a452f461a99014764f74d0122103b3b3ce32d3da003472c3ca003212b9203043b5002041ae901103b502a9203043b5002041adb01103b502b2ba8021f2b9203043b5002041a2002103b502a9203043b5002041a1a02103b502b2ba902e62d3ca003472c3ca003212b9203043b5002041a9d01103b502a9203043b5002041a8f01103b502b2ba6021f2b9203043b5002041ae401103b502a9203043b5002041ade01103b502b2ba7029a2d3fa003472c3ca003212b9203043b5002041a5101103b502a9203043b5002041a4301103b502b2ba4021f2b9203043b5002041aa801103b502a9203043b5002041aa201103b502b2ba5024e2d3ea003462c3ca003202b9203043b5002041a0501103b502a9203043b500203faf8103b502b2ba2021f2b9203043b5002041a6d01103b502a9203043b5002041a6701103b502b2ba302032b2ba02903051a5e0102031a610122182a453146fa4947666502103e332e221b6b22142a452d46fa3647646502103e312c22196b22122a452b46fa234764270d1f080000000000|@2005,1,@11719,@951,@1048,@1048,@1048,@1048,@1048,@1048,@794,@2006,@2008,@2011,@1048,@1048,@1048,@1048,@2014,@315,-1,-4611686018427387904,@319,@313,@2004,@1048,@1048,@1048,@1048,@1048,@1048,@1048,@1048,@1048,@1048,@1048,@915,@921| 15487:D10,632|fb0f2f360b0300220c220c220c2c220c220c34360c5029352a362b3722100a0e001c001c001c001c001c003000a000fe004f0199011c001c00e501190228152c22126a220d2a452c461a44024764f71f022b352806a003212b36313b3b3ce350299203051a310202031a3402220e2a452d461a1b024765024529353ca00314303b3b3ce3220d1a1702452c461a01024764022b29353ea00314303b3b3ce3220d1afd01452c461ae7014764021128152c22126a220d2a452c461ad4014764f7af012b352806a0031c2b36313b3b3ce350299a28062a3b6a220f2a452e461ab0014766023829353fa00309293629280da06402013b03152937313b3b3ce350220d2a452c461a89014764021128152c28066a220d2a452c461a76014764f751012b352806a003362b36313b3b3ce350299203051a73010218299203041a7201103b503b5029942928ffb728062a3b6a65220e2a452d461a38014765021128152c22126a220d2a452c461a25014764f700012b352806a003312b36313b3b3ce350299203051a22010214299203041a2901103b503b50299328062a3b6a64220e2a452d46faec4765021028152c22126a220d2a452c46fada476402b62b352806a003332b36313b3b3ce35029920312299203043b500203fae9103b50293ba002013b0304fab40202fab8220e2a452d46faa04765021028152c22126a220d2a452c46fa8e4764026a2b352806a0031b2b36313b3b3ce350299b28062a3b6a220f2a452e46fa6c4766021028152c22126a220d2a452c46fa5a476402362b352806a0031b2b36313b3b3ce350299c28062a3b6a220f2a452e46fa384766021428152c22126a3f280d2e6a220e2b452d462a476527081f0700000000|@2020,1,@11720,@951,@915,@921,@921,@1041,@1041,@1048| 15488:D17,496|fb292f360b0300220e220c220c2c220c220c34360c5029352a362b372211352808a0034a2211363d28403bda1ad901453e28403bda1ad80145292b462c476c502a2a466c502213299291031d29352a362a35293b301ac0010c03033c02082a250426031e1c3b6602013b646602013b2a353ca00305293ba002013bf829012a362b372a352b392c23063b2b299291031229362b3caa292b25042504511e113b6502012a653b2218299291031229362b3caa292b25042504511e113b6502012a652a2aa003043b5002041a5401103b50220f3b3b3ce32217362218382e3ba203033c02052e1a4101a803041a4301103b503b502e28403bda0b0200221f22112b221a36221e221e22231a2d010c5029352a362a3ba003051a270102583b2b299291031229362b3caa292b25042504511e113b6502012a6529faefa803041a0901103b503b502928403bda3b2d293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fadb22102b326bfadc316929342c220c6b0b030022152e332c222822282227360c5029352a362b3722282c452b462a47271b02452c352806a0032022113337220e220e2213faa60c28072a2f22146b220f2a452e46fa9e4765021e22113337220e220e2213fa960c28072a2f22146b220f2a452e46fa7e476527091f08|@2023,1,@11721,@15489,@15490,@2025,@2030,72057594037927935,@789,@2033,@957,@2035,@15494,@15495,@2042,@951,@2022| 15489:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@2024,1,@11722| 15490:D4,208|fb0c2d352807a003072b2d453c4602be2d35280ca003332d362938292f2a9291031e2a352b3628082b69292d3236fab80c2b2a2506250626041e1c3b2704020129652e2a453c466602842d352808a003782d362d03033c0268292b37a003033c025f29353ba003152a37353ba0030b29362b37362a2aa06502013b024429353ca003152a37353ca0030b29362b37362a2aa06502013b022929353da003152a37353da0030b29362b37362a2aa06502013b020e29353ea003072a37353ea002013b2d2a453b466502052b2d453b464400|@2026,1,@11723,@2025| 15491:D4,32|fb092d2d692c0c2936293ba0030b2a35302a30fa23317b05082a356544000000|@2028,1,@11724,@2027| 15492:D4,832|fb122d350a1600bb00d90004013a014f01aa01c801cc010102050209021e022a02610286022c00af02ba02cd02fa0205032b032d362e372a2f2a929103752a352b362a353ba0030c2a39292d341a08030c6402512a353da0030c2a36292d341af6020c64023f2a353ea0032f2a36292d2a929103212a352b362a37280c2a69292e22111ad2020c2c2a2507250726051e1f3b27050201296564020a2a38292d341ab5020c642a2a2505250526031e743b66020129652a2a301a9d02317b0508f77b022d362e372f382930301a8a020c2c2a311a83020c2c2a321a7c02337b050a2d3629352a362b382c392932321a68020c2d2a331a61020c2d2a341a5a020c2d2a220c1a5202220d7b050d2d362e37292f2a9291031f2a352b362a352937292e220c1a33020c2c2a2507250726051e1d3b2705020129652b2a301a1b02317b05082d362e372a2f2f1a0d020c2a2a301a0602317b05082d372e382f392a352b36299291031329352b33331aeb010c2a2a341ae4010c6502072a32321ada010c2c352d36299291031529352b2d220d1ac7010c2a2a220e1abf010c6502082a2c220c1ab4010c312a220d1aac01220e7b050e2d362e372f382b30301a9b010c2b2a311a94010c2b2a321a8d01337b050a2cf76a012d362e37292f2f1a7b010c2b2a2a9291031d2a352b362a35292d220c1a66010c2b2a2506250626041e1b3b27040201296566f735012cf731012cf72d012d362e372a2f2f1a3e010c2a2a301a3701317b05082d36292e2e1a2b012f7b05062d3629352a3829302a9291031f2a352b3628082b69292d220c1a0b010c2b2a2506250626041e1d3b2704020129652b2a31faf4327b05092d3729352a36299291031129352b3131fade0c2a2a32fad8337b050a2a3030facf317b05082d36292e2a9291031b2a352b362a35292d33fab70c2b2a2506250626041e193b2704020129656402872d36292e2efa9b2f7b05062d362e38292f2ffa8e0c2b2a30fa88317b05082d372e3829352a36299291031129352b3232fa700c2a2a33fa6a0c6502062a3131fa610c2d2a32fa5b337b050a2d37292e2efa502f7b05062d36292e2a929103182a352b362a2c32fa3a0c2a2a2505250526031e173b660201296564020b2d36292e2efa1f2f7b0506440000|@2029,1,@11725,@2025| 15493:D4,176|fb1b319291039c313532362a350b03002d3322102c220f220f22120c5029352a362b370b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a4532465026040220220f383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a360b020022102d2b221a221a221a221afa380c5029352a362f2b69221b2a452b46271502052f3b4531461f07000000000000|@2034,1,@11726,@2033| 15494:D7,96|fb062b353ea00303fa6e103b502b353ca003082b36292b362d7d042b353ba003172b362a37932a2aa90303fa53103b502b372b3bdb6502212b362a38932a2aa90303fa44103b502b382b3bdb293ba00303fa3d103b5029356642000000000000|@2038,1,@11727,@2037,@831,@829,@1921| 15495:D4,32|fb092b352c362968012c36932c2aa90303fa25103b502d362d3b2de327044200|@2041,1,@11728,@864| 15496:D6,56|fb0e2f9291032b2f3530362a352b36fa3f3331343468052b2afa3d0c292c692e220d220d220d220dfa360c2a2a69270802013b1f05000000|@880,1,@11729,@15497,@1936,@2042| 15497:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11730| 15498:D6,56|fb0e2f9291032b2f3530362a352b36fa3f3331343468052b2afa3d0c292c692e220d220d220d220dfa360c2a2a69270802013b1f05000000|@880,1,@11731,@15499,@1936,@2022| 15499:D3,32|fb0a2b2a37352b37362c37372d37382e382f393036327b090300000000000000|@1935,1,@11732| 15500:D17,216|fb203135323633383439220c3a220d2306220e2307220e36220f372c3ba203033c02042cfacaa80303facd103b503b502c28403bda3b063b06fac53322142c30221630326808fac02d693b06fac22a69fac62211362d34302e22192219680822102afabc0c3035293b2a929103182a352b362a35292d692b2a2506250626041e163b2704020129652e3522103ca003033c02023235293ca003032d020d2dfa88fa8efa942efa99fa9f0c2922163b2f22172f31221768082b3ca00304fa920209fa962e693c2b2b6a64221d2b452a4627191f070000000000|@2045,1,@11733,72057594037927935,@789,@15501,@15507,@15508,@15509,@1936,@1295,@2058,@2060,@2062,@2044,@951,@15285| 15501:D4,40|fb0e0b02002e2a2e362f3730383139323a332306342307fa270c5029352a362a2a69270542000000|@2047,1,@11734,@2046| 15502:D9,216|fb0c33353ca003793336322a2a929103043b500203fad9103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b64656529353da0030532929102013b0316293633352a2aa00309333b3b3ce3503c02013b6502013b030dfa98220c2a35452a364664021329310c29352a36220e33220d34fa86347b080e65025033353ea0030c3c3469332a45fa794664023e33353ba0030c3c3469332a45fa674664022c33362c932a2aa90303fa60103b503b502d2b3bdb293ba00303fa58103b503b502935220d2a35452a364664661f090000000000|@2049,1,@11735,@953,@2050,@2048,@951,@829,@1921| 15503:D9,184|fb0a30353ca00311303629353da003052e929102013b6402013b0318303629362f352a2aa003092f3b3b3ce3503c02013b6602013b030cfa972f2a35452a364664026e30353ba0030b303631373b2b2b6a65020b3036292dfa7e0c3c2a696530353da00304fa79024230353ba00304fa6f023830353fa00304fa65022e30353ca0031530363137fa5ffa653232322e68063c2c2b6a66021330363137fa5afa503232322e68063e2c2b6a66302b452a46651f060000000000|@2052,1,@11736,@2050,@2053,@951,@15506,@2048,@15504| 15504:D3,40|fb0e2b2a3a0c29352a360b02002d2d2b323733383439220c360c5029352a362a2a69270842000000|@2055,1,@11739| 15505:D4,200|fb0d2b3529299291037829352a362a352932a003033c025829353ba0031331353ba0030a293632362a2aa06502013b023f29353ca0031331353ca0030a293632362a2aa06502013b022629353da0031331353da0030a293632362a2aa06502013b020d29353ea0030631353ea002013b03052b680102082a250426031e773b6602013b642d352a3ba00333299291031d29352936293caa322a69292e69333b3b2ce3502c3caa3c2a692706020f2f3b69293b69303b3b2ce350fa256502082a3529363c2a69656643|@2054,1,@11737,@920| 15506:D3,40|fb0e2b2a3a0c29352a360b02002d2d2b323733383439220c360c5029352a362a2a69270842000000|@2055,1,@11738| 15507:D4,32|fb092b352c362968012c36932c2aa90303fa25103b502d362d3b2de327044200|@2056,1,@11740,@864| 15508:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@2057,1,@11741| 15509:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11742| 15510:D3,8|fb033c2d69430000|@2059,1,@11743| 15511:D3,8|fb023b4200000000|@2061,1,@11744| 15512:D3,8|fb023b4300000000|@2059,1,@11745| 15513:D6,40|fb0a2c3ba203033c02042cfa33a80303fa36103b502c28403bda31313032302efa2e327b08090000|@2064,1,@11746,72057594037927935,@789,@2063| 15514:D7,40|fb093030fa3a31313131fa3c0c293ba00311fa3cfa2a313131316806322afa382f7e0a2935641f06|@2065,1,@11747,@2063,@2066,@15515,@1936| 15515:D5,24|fb0a2bfa2b2b362c372d382e392f3afa27327b0903000000|@2109,1,@11772,@938,@2066| 15516:D17,568|fb1b31350a16002c002c0030002c002c0085002c00bc00f4002c002c007201a3012c002c00df012c002c002c002c0009022c003bf7fa01313632372a3332323232220e0c0b02002d2a220e220e220e220e220e1afa010c5029352a36299291912991031b1af1013169302a1af2010c3d2a2f6a280f2e2b6a296801270402083d302d6a296801642709f7a5013136323733382b1ad20133333333220f0c2b220c3434343422100c2b220d220c220c220c220c22110c28052c2c2c6b2968012707f76e013136323733382b33333333331a9e010c291aa1010c3b220d2b6a293b692e2a220e220e220e220e22130c28072e2b316b2968012709f73601313629353ea0030931300c501a7601026329353ca0030929362933310c64025429353ba0030b29362933300c502a64024329363292919103041a5101103b502d932a2aa903041a4c01103b502e2b3bdb293ba00303340206342a1a40010c30932d2aa903041a3d01103b50312e3b2de3502e270528082a692968016602b8313632373338293ba003223d2b220c6a293b692d2a220c220c220c220c22110c280b2a2f3b6b296801270402013b66028731360b08003222122b2212221222122212faeb0c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692968012714024b31363237293332323232220e0c2b2f34343434fab50c293ba003032a0205280f2a2c6a2968012705022131363237293ba003162a3b343434343434fa950c28142a3b6a2968016502013b651f070000000000|@2068,1,@11748,@2069,@15518,@1936,@938,@2078,@2079,@937,@2080,@829,@2083,@864,@2084,@2102,@2067| 15517:D6,152|fb143192910384313532362a352935293ba003372a370b02002f2a22102210221022102210fa890c5029352a362efa88221122112211221122160c3d2a69292c6922142e452a462709023c2a362b372e360b0200312a22122212221222122212fa4e0c5029352a362f32221322132213221322180c32322b6a293169292e6922172a452e46270c2704020afa33312a35452a3646641f0700|@2070,1,@11749,@2069,@938,@917| 15518:D4,72|fb0b2b353da003052b680102352b35280ca003052b680102292b35280ea003212b360b02002c2e362bfa350c5029352a36280e2b69280f2b2b6a296801270802013b420000000000|@2072,1,@11750,@2071| 15519:D7,120|fb112d9291035a2d352e362a352f929103043b500203fa78102f3530362a352935293ba0031e0b0200312f2bfa6a0c5029352a363d3369292b6922102d452a46270702190b0200312f2bfa4c0c5029352a36342b69220f2a452b462706270702162c3ba003043b500203fa3410fa392c2a35452a36466444|@2074,1,@11751,@2073,@2071,@2073,@917| 15520:D5,56|fb0e309291032a303531362a352b362afa3e3434343422100c292b692d220d220d220d220d220dfa2f0c2a2a69270702013b1f0600000000|@880,1,@11752,@938,@2078| 15521:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@11753,@2079| 15522:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11754,@2083| 15523:D20,656|fb1e3135323633383439220c3a220d2306220e23073b063b2e299291031229362b3caa292b25042504511e113b6502012a65293ba203033c0205291a6a02a803041a6c02103b502928403bda3b061a67022a6922133b2a9291033d2a352b362a353ca003071a58022c69021e2a353ba003132a362c3ba00303290206292d1a47020c6402051a48022c692a2a2505250526031e3c3b6602012965220c2a1a3802312216221622162216221268072d341a2e0232691a31020c2c35293b2a9291033d2a352b362a353ca003071af2012c69021e2a353ba003132a362c3ba00303290206292d1a09020c6402051ae2012c692a2a2505250526031e3c3b66020129652a92919103033c02282c299291032029352a362a353ca003033c02042a353ea003033c0207292503511e1f3b6502013b6403033b02b62c299291031729352a362a353da00309292503511e133b02013b6502013c64032129299291031729352a362a353da00309292503511e133b02013b6502013c6402013b036e293b2a9291035b2a352b362b3ca003033c02412a353da003043b5002041a5d01102a3631299291032829352a362a353da003043b5002041a4b01102a36292ea091030a2a250426031e243b02013b6602013c64642a2a2505250526031e5a3b660201296503052a680102013b02031a1c01293ba0036f3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965220ffaf80c33933b2a293ba003032a021b293cb22a3cb2220f2a3bdb292e69292d2506250626041e1e3b2704652b2afad30c221d334522164632472e482a4922134a22124b22114c270602252935293ba003042219020622192afab00c221b2a221b221b221b221b221bfaa8221c7b091c27111f0700000000000000|@2086,1,@11755,72057594037927935,@789,@15524,@1296,@2089,@937,@15527,@15529,@2044,@2092,@2093,@2096,@2098,@2099,@2100,@2085,@2084| 15524:D4,32|fb07293635293ba003032c02052c2afa270c2b363b3b2ce36542000000000000|@2088,1,@11756,@2087| 15525:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11757,@2087| 15526:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11758,@2089| 15527:D10,176|fb0b2923062d2a929103043b500203fab7102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ea003092c2b370c50fa94026529353ca0030a2936292e2d380c64025529353ba0030c2936292e2d390c502a64024329362d9291910303fa6e103b502b3a932a2aa90303fa69103b502c3a2b3bdb293ba003032f02052f2afa5d0c2e3a932d2aa90303fa5a103b502f3a2e3b2de3502e2705292c36fa502f7e060000000000|@2059,1,@11759,@953,@937,@2080,@829,@2090,@864,@2053| 15528:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11760,@2090| 15529:D6,56|fb092936932d2aa90303fa44103b502a362e3bdb293ba003032d02052d2afa380c2c3693302aa90303fa35103b502d36313b2de327044300|@2059,1,@11761,@829,@2091,@864| 15530:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11762,@2091| 15531:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11763,@2092| 15532:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@11764,@2099| 15533:D4,40|fb092c929103052b929102013b03172c352d362d352e362c2b692c2bfa220c2a2a69270602013b43|@2101,1,@11765,@2100| 15534:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11766,@2085| 15535:D14,416|fb23309291f89201303531362a353ba003702a372b382c392c220c220c220c220c220c1a92010c220c932d2aa903041a8e01103b50220d2e3bdb293ba0031a2c1a85010c291a8801b7291a8301a003033b02031a8201650201292992919103032c021a2d1a7901220f220f220f221422140c3b2b32322d6805292f69652707f715012a353da0033a2a362a33333333331a25010c2a1a30010c291a3301b7291a2e01a003032b02162c1a3c01220c220c220c221122110c3d2a69292e6965270402d52a353ea003352a362a3333333333fae60c2a3b3b220d220c220c220c1a0f010c29220c1a10010c2992919103032b02073e2a69292d69642704029a2a372b382b3434343434faaf0c34932c2aa90303faad103b50220c2d3bdb293ba003162cfaa50c29faa9b729faa5a003033b0202facd650201292992919103032c02552d35280ca003382d360b080032342b221922192219221efaaf0c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692713020d2d2a220e220e220e221322130c3c2b312c6b292f696527066502013b1f06000000|@2104,1,@11767,@2102,@829,@1984,1610612736,@938,@938,@938,@2105,@2103,@938,@2084| 15536:D7,168|fb233192910384313532362a362b3732932b2aa90303faa8103b50332c3bdb293ba003172e220e692e2a220f220f220f220f220ffa9222107b0910fa932a690b0800220c332b221722172217221bfa880c5029352a362b372c382d392e3a2f23063023073030303030303030680822162a69221822223c2222222222222222fa470c2a2a692715270602152f3ba003033b020d303b3b31313131fa2c327b09091f07000000000000|@2106,1,@11768,@829,@2105,@937,@2084| 15537:D5,56|fb0b2c929103282c352d362a352b362f932b2aa90303fa38103b50302c3bdb292d2d6a2e33fa310c2a2a69270802013b4300000000000000|@880,1,@11769,@829,@2103| 15538:D6,128|fb10329291037432353336323b2a929103382a352b362a353da0031d2a362b3722102ba0030f2d3ba00303290205292efa660c02012d6502032a2c692a2a2505250526031e373b6602012965293ba00304fa4d0201292c2a3434343422100c220d3caa2d2a220f220f220f220f220f220ffa350c2b2a69270702013b1f080000|@2108,1,@11770,@2107,@938,@2067| 15539:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11771,@2107| 15540:D4,40|fb14303531363135323633382d34342c2f3336220e220e221333220f37220efa1f22137b0e0d0000|@2112,1,@11773,@2111| 15541:D19,992|fb2f220d9291f8c503220d35220e362a353ba0f8cb012a372b382c393b22100c3d2a693c2a69291ace03692f2a696622100c0b03002f22113b2c2216221622190c5029352a362a352811a0f859012a362b372c3829352808a00309293629353da06402013b030b2936293629220da06502013b03043b5002041a8403103b503b221b0c3d2a693c2a69291a6b036922112a6966221b0c3b221d0c3c3b2b316b2a3ba203041a6103103b503b503d2b6928082a6930353b2a293ba003032a024a293cb22a3cb22b3cb2220d362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba091293ba0030334020c280b220e333b6b29220d69642934250d250d260b1e4d3b270b653b2a299291031229362b3caa292b25042504511e113b6502012a65292216a003043b5002041ade02103b5028142b3b6a2b299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ab8020c0201293c3b220c2c6b22203b3b3ce322293ba00304221002082210222a1a9f020c332a692c2a69221e2a222d222d222d222d222d222d222d222d222d222d1a8602222e7b0e2e3b3b32220c2e6805221a3ba003032a02072a221b1a72020c2a2a69220e2a221d221d221d221d221d221d221d221d221d221d1a4c02221e7b0e1e2a353ea003dd2a360b02002c2a1a47020c5029352a36293ba003032a02062a2a1a3c020c29221422141a3b020c2a2a220f22142214221422191a33020c291a36021a3b020c293b2a929103482a352b362a929103043b5002041a2b02103b502a352b36293ba003162a352b362c37280c2a693c2d2d2c6b293369270502073e2d69292f69642c2a2507250726051e463b270502012965293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965221a3ba0030329020729221b1acc010c220d2a221c221c221c221c221c221c221c221c221c221c1a6901221d7b0e1d2a353da003522a360b03002d220d22152c2212221222150c5029352a362b372b352810a0030a22152c452b462a4702243d2c69292c69332a22192219221922192219221922192219221922191a1501221a7b0e1a270802af2a372b380b03002d220e22162c2213221322160c5029352a362b372b352810a0030a22162c452b462a4702810b02002e352808a003122e363c2a69292f692c2a453146502603023c2e352806a003152e362f373b2b2b6a2930692d2a45324650260402202213383b2a0c3d2a693c2a692931693c3b2e220d6b293469302c452a4650260729352a36220d2b69221a0c220f2b221e221e221e221e221e221e221e221e221e221efa64221f7b0e1f270965020e2b2f220e220e3434220e317b080e1f0c0000|@2114,1,@11774,@951,@2115,@2118,@2121,@1083,@2124,@2111,@2125,@2126,@2129,@2130,@2131,@2133,@2138,@2148,@2113| 15542:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11775,@2124| 15543:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11776,@2125| 15544:D5,72|fb0e2c929103352c352d362a37293a293ba00b02002f2afa470c5029352a362e030c322b69220d2a452b4664020a322a69220d2c452a4664270a020afa2a2c2a35452a3646644300|@2128,1,@11777,@2126,@2127| 15545:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11778,@2129| 15546:D5,48|fb0a2d929103272d352e362a363b300c3d2a693c2a6929fa2f692d2a6966300c502b3131fa2a0c2a2a69270502013b44|@880,1,@11779,@951,@2130| 15547:D4,104|fb18319291030530929102013b035431353236323533362c362d372a68012d68010b02002e220f2f2f2d2215221522180c5029352a363d34693c2a69292c69342a696622100c3b220c2d6a220d220c22172217221722172217fa250c2a2a69271002013b1f070000|@2132,1,@11780,@2131| 15548:D3,56|fb0a2b372938293b2a929103212a352b362a353da003082a36292d696402012b2a2a2505250526031e203b66020129656542000000000000|@2136,1,@11781| 15549:D3,8|fb022b3642000000|@2137,1,@11782| 15550:D8,224|fb222c929103d42c352c352d362b2a0c292a690b0200342d2a929103322a352b362b352c362c220c0c292ca203032902012b2a3caa292da603032902012c2b2a69302a250b250b26091e3126090209292c2a35452a3646515129352a36292bab293ba203033c020429fa8da80303fa90103b502928403bda220ffa8c2a929103522a352b362a220e0c2932ab2f932a2aa90303fa7b103b50302b3bdb293ba003220b030032342b2218221a221422122222fa650c5029352a362b372b2b2b6a270702012f2e2a2509250926071e503b2707020229376529270d02013b43000000|@2140,1,@11783,72057594037927935,@789,@1460,@829,@2139| 15551:D9,256|fb24313532363337220c330c220d330c220e2d692b34ab2f3069296801220c932c2aa90303faf1103b50220d2d3b2de3333caa2930346a0b0300220c2e2a929103252a352b362a2c221d221a221d221d2217facc2222fad00c2a2a2505250526031e242603020c292c2a35452a36462a3747515129352a362b37221793220e2aa90303faab103b502218220f3bdb293ba00303faa3103b5029352936292218a003500b0200313b2a929103043b500203fa8e102a352b362a22260c29221da0030c2b2d692f2c452a465050020e2b2d692b2a2506250626041e315026035129352a362933692225220d452c462a4727060208221f30452f462e4727181f080000|@2142,1,@11784,@864,@2139,@2143,@829,@1921,@2141| 15552:D9,432|fb21323631299291031c29352a362a220d0c220f2aa003033c02082a250426031e1b3b6602013b64f87a013431ab30932a2aa903041a9001103b50312b3bdb299291039d2c299291031c29352a362a22100c22122aa003033c02082a250426031e1b3b6602013b64037132932c2aa903041a5401103b50332d3bdb293ba003041a4d01103b5029352935220c220fab220e932a2aa903041a2e01103b50220f2b3bdb293ba003041a2e01103b50293529352a362930a203032902012f2b2a69296801221693322aa903041a1301103b502217333b2de350260e02023b50220d02c134299291031e29352a362a22100c292213a003052b680102082a250426031e1d3b6602013b64293ba00303fada103b5029350b03002d22142b2215221022152215221822150c5029352a362b372b2b2b6a221393220d2aa90303fa8b103b502214220e3bdb293ba00303faa3103b502935293622162219ab2218932a2aa90303fa65103b5022192b3bdb293ba00303fa66103b50293529352a362930a203032902012f2b2a69296801222093322aa90303fa4c103b502221333b2de350220e271866020133641f0900000000000000|@2144,1,@11785,@829,@1921,@1921,@864,@1921,@1921| 15553:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11786,@2113| 15554:D49,2328|fb32303030306b32350a160030008a00fd00e601140297032c00c403f2032c0023047b04240546052c0020072c004d07c6075d08b608df083bf7d7083236333734380b03002d313b2c220f220f220e360c5029352a360b0300220c220e2f2c221522152214360c5029352a360b0300221122142f2c221b221b221a360c5029352a363b312c22106b2a2a1aa3080c2968012717f77d083236293729353ba0033329362b352c362d382e390b0300312e32323222103b302217221722163a0c5029352a362b372a2c2b1a6d080c296801270d023229362b352c362d382e390b0300312e32323222103b3022172217221623060c5029352a362b372a2c2b1a41080c296801270d65f70a083236333732352a1a35080c292d1a37080c1a3b0830220f220f220f220f220f220f68082a2a1a2f080c293b1a31080c299103052a680102ac220f3b3b31e330220f2213220d22112211221622161a17080c1a1b08220c2214221422142214221422146808332a1aee070c331a09080c2a2a2e1a0a080c29299291031429352a362a03033c0207292503511e133b6502013b6403460b02002c312b1aea070c5029352a3622122f1ae6070c1aea072216221e221e221e221e221e221e68082a2a1a95070c221d3b3b3ce33d2b2f6a2f2a1a75070c296801270b02083d2c2f6a2968016427062708f721073236333734380b03002d3030333b2e22112211221023070c5029352a362b372a2c2b1a91070c296801270bf7f306323633373438220c392c3ba003033c02152c3ca003033c020d2c35293ca003033c02022808640b02002d2d332c22102210220f370c5029352a360b02003332220f2c221522152214370c5029352a360b0300221122143b2c221b221b221a360c5029352a362a352806a003252a362992031b299203043b5002041a1307103b50293fa5030529680102013b02013b6402013b220c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965313b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032a02062a2a1a9e060c293ba003032c02062c2a1a98060c2e92910306221a929102013b03532e35221b3522243b3b3ce32215352216362217372213352214362215373003051a6e0602031a71063b3322222d303033220d220d321a69060c293ba00303340206342a1a63060c291a66061acb050c270c02113f221b322210221668052a2a1ab7050c64296801271cf770053236333734380b03002f2f2f333b2e221122112210390c5029352a362b372a2c2b1a29060c296801270bf743053236333734380b03002e302f333b2e22112211221023090c5029352a362b372a2c2b1a03060c296801270bf71505323629310c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a69643b2a2c1ada050c2968012706f7e4043236333734381ad0052e220d220d220d220d220d220d68082c2a1a14050c3b340c3d2a693c2a69291ab605692f2a6966220f0c1ab3053222112211221122112211221168082f2a1ae7040c402e2b2f6b296801270af78c043236333734380b03002f313b2c220f220f220e360c5029352a362b370b03002d353ea0032f2d37220d2a0c29352a362a353ba0030c2a362b3728062b2b6a6502072a3628082a69642e2a4534462b47502605024034031a2f352806a0030a2f220d3c1a34050c0207280b30220e3c6b02182f352806a0030a2f220d3b1a1a050c0207280b30220e3b6b2a2a4530461af80447505029352a362b372a2c2b1a01050c2968012712f7e30332360b02002c2e3b3b2d220d220d220c230a0c502935280c2a692968012706f7c103323633372a350a0900160019001c002000230028002d00120030002808021c3d02193f0216280802123c020f3b300c020a3b2f0c02053c020228080b02002d2d312c220e220e220d370c5029352a362a3529352806a0f8500129362c36293ba0f83e012d3734352808a0035b2b920308280d220c306a024d2b9203041a5f04103b503b502b942928ffb7292840b7292840a003033c02192e942928ffb7293eb7293ca0299103033c0204303ba09127040308280d220f336a020a2e3b3bef28062a3b6a646602d734352806a003612b920308280d220c306a02532b9203041a0504103b503b50292808b42c942928ffb7292840b7292840a003033c021b2f942928ffb7293eb7293ca0299103033c02063393312aa96427040308280d2210346a02092f2edc28062a3b6a642704026f34352807a003622b920308280d220c306a02542b9203041aa503103b503b50292808b42c942928ffb7292840b7292840a003033c021b2f942928ffb7293eb7293ba0299103033c02063393312aa96427040308280d2210346a020a2f2d3bdb28062a3b6a6427040206280d220c306a640205280d342f6a650205280d322d6a2b3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292b1a2d020c296801270cf7e701323633372a2a690b03002d313b2c220f220f220e230b0c5029352a362b372a2c2b1af8020c296801270bf7ba013236333734381aee022e220d220d220d220d220d220d68082a2a1aea010c0b030031333b2c221122112210360c5029352a362b3729353ea0032d29362a372a3ba203041ab902103b503b503b2b2b1ab6020c28142a3b6a342a3022111ab0020c2968012705020d302c2c220d1aa0020c29680164270cf741013236333734382b350a0900160019001c002000230028002d00120030002808021c3d02193f0216280802123c020f3b310c020a3b300c02053c020228080b02002d2d322c220f220f220e370c5029352a360b030034220e2f2c221522152214360c5029352a36293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965281222102d346b2a2afaef0c296801271202aa3236333734381afe012e220d220d220d220d220d220d68082b2afadb0c29352806a00327293629920313299203043b5002041ada01103b50292fa002013b03051ad40102031ad70164020a28132e2b2e6b2968016427050251323633370b03002e2e313b2d220f220f220e380c5029352a362b372a2c2b1aad010c296801270a0228323633370b03002d2f313b2d220f220f220e23080c5029352a362b372a2c2b1a8b010c296801270a641f070000|@2153,1,@11787,@2154,@2155,@2157,@2159,@1972,@15561,@1936,@2160,@2162,@15565,@2163,@2164,@2167,@2173,@15572,@2176,@1048,@2178,@2179,@2180,@1639,@2181,@2183,@921,@2184,@2186,@2188,@15585,@951,@15586,@1039,@2190,@1041,@1041,@1041,@2192,@15591,@1080,@2194,@2195,@15599,@1048,@2217,@2219,@2221,@2152| 15555:D5,56|fb082c3ba003032b022a2c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2dfa240c2a2afa272f7e0643000000|@1973,1,@11788,@2154,@1972| 15556:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11789,@2156,@2155,@1972| 15557:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11790,@25,@394,@2156| 15558:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11791,@2158,@2157,@1972| 15559:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11792,@25,@394,@2158| 15560:D4,40|fb0b2b9291031c2b352c362a3529352a362b373c2c2c2c6b2efa250c2a2a69270802013b42000000|@880,1,@11793,@2159| 15561:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11794| 15562:D4,104|fb082c350a16002c002c002c002c002c002f002c002c002c002c003f002c002c002c0048004b002c0054002c002c002c002c002b022e2c372d382a2efa420c2a2afa3d307e072c37292dfa342e7e053c02122c37292dfa282e7e052c36292dfa1f2e7e0543000000|@2161,1,@11795,@2160| 15563:D7,104|fb16329291035b323533362a352b362a352b362c373b22100c3d2a693c2a6929fa5e692e2a696622100c50fa5b220f2211220e220e22152213221368082b2afa4f0c2e2c2b6a293169332215221522152215221522152215fa3e0c2a2a69270d02013b1f08000000|@880,1,@11796,@951,@15564,@1936,@2162| 15564:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11797| 15565:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11798| 15566:D4,24|fb052b9291030c2b3629fa240c3c2a696502013b42000000|@880,1,@11799,@2163| 15567:D5,120|fb092d350a16002c002c002c002c002c002f002c002c002c002c0042002c002c002c004d0058002c0063002c002c002c002c002c023f2d372e382a2f2ffa510c2a2a30fa4b317b05082d37292e2efa402f7b05062d36292d2ffa3d2f7b05062d37292e2efa2a2f7b05062d36292e2efa1f2f7b0506440000|@2161,1,@11800,@2164,@2165| 15568:D4,96|fb0f2d9291030d2c929103052b929102013b02013b03462d352e362e352f362f3530362e3529352808a00309293629353da06402013b03112f3529362936303529362b2aa0270502013b03032b02013b2f2e2dfa230c2a2a69270902013b4400|@2166,1,@11801,@2165| 15569:D7,112|fb122d3ba003182c3ba003043b500203fa7610fa7b2c2a35452a364664024d2d352e362e929103043b500203fa6a102e352f360b02002e2d2bfa650c5029352a36313ba0030c2f2a69220c2c452a466402182f3529352a362b373c2c2c2c6b29306922112a4530462706270944000000|@2169,1,@11802,@2168,@917,@2168,@2167| 15570:D5,152|fb0a2c350a16002c002c002c002c002c002f002c002c002c002c0049002c002c002c005d006b002c007c002c002c002c002c002c02602c362d372e382a2ffa700c2a30fa6b0c28052e2c2c6b270502462c362d372e382a2ffa560c402d2b2d6b270402322c362c2afa4e0c280e2a696502242c362d37292efa360c280f2c2b6a6602132c362d372e382b2ffa230c28112a2d2d6b27044300|@2175,1,@11803,@2173,@2174| 15571:D6,64|fb082c3ba0030f2b3ba003043b500203fa46103b02262c352d362d929103043b500203fa3b102d352e362b2afa3a0c2d3ca003032902032b2a69270543000000|@2169,1,@11804,@2168,@2168,@2174| 15572:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11805| 15573:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11806,@2177,@2176,@1972| 15574:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11807,@25,@394,@2177| 15575:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11808,@2178| 15576:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11809,@2179| 15577:D4,80|fb153434a003033b02423433b3322ab132322b6a220e220db3322ab132322b6a280d322b6a2812332b306b3d2a6922143cb1221422142214221422142214221422142214fa220c2a2a69270a1f0a0000|@2182,1,@11810,@2181| 15578:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11811,@2183| 15579:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11812,@2185,@2184,@1972| 15580:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11813,@25,@394,@2185| 15581:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11814,@2187,@2186,@1972| 15582:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11815,@25,@394,@2187| 15583:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11816,@2189,@2188,@1972| 15584:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11817,@25,@394,@2189| 15585:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11818| 15586:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11819| 15587:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11820,@2191,@2190,@1972| 15588:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11821,@25,@394,@2191| 15589:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11822,@2193,@2192,@1972| 15590:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11823,@25,@394,@2193| 15591:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11824| 15592:D4,56|fb092d2da003033b022c2d2c0c293529353ba0030c29362a3728062b2b6a650207293628082a6964303caa293131fa200c2b2a6927054400|@1075,1,@11825,@2194| 15593:D16,1064|fb1c2d350a16002c002c005c002c002c0092002c002c002c002c00d4002c002c002c0015013b012c002c002c002c0076012c002c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652e2d311ae9030c2a2a1aeb032f7e08f7c1032d362e372e3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965312c3b311ac4030c3d2a2d6a2b2a1ab203327e0b2d362e372f382f3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965322c3b321a8c030c332c3b331a84030c28052f2c2c6b2c2a1a7003347e0d2d362e372f382f3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965322d3b321a4a030c332d3b331a42030c402b2b2f6b2c2a1a2f03347e0d2c3b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292f1a09032e7e072d362e372a3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba0030329020629301ae7020c322c2b321ad702337b060a2d363b2a2e1adb020c3b2a301adc020c293ba0f82f012f3b2a929103152a352b362a2c692a2a2505250526031e143b660201296528142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a94020c0201293b2e299291031229362b3caa292b25042504511e113b6502012a65293ba803043b5002041a710210293ba203033c0205291a6c02a603041a6e02103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502d2b692811302b22146b322a1a8a0122117e13293529352a360b02002c2a1ac0010c5029352a362a2a6930353da0f8120130363c3b292fa903032a0234293cb12a3ebb2f2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba0912903033102013b2931250a250a26081e373b2708652211299291035b29352a362a353ba003262a372b382c39302ca0030b2a34a003032f02013b02013b0309292d692968016402013b6602282a353ca003212a38291a34010c291a3701b7291a3201a0030a2c250626051e533b02013b6602013b6502013b64293ba0033322123b2a929103152a352b362a2c692a2a2505250526031e143b66020129652808220c6928112a3022196b2b2afa8f22167e18293529352a363c3b30221a6b292b69293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965292efa5a22197e1b220f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652808326928112a2d22166b2b2afa2822137e151f040000|@2197,1,@11826,@2198,@1972,@2195,@2200,@2201,@2206,@1083,@2210,72057594037927935,@2212,@2196,@1984,1610612736| 15594:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa750c2b3131fa6f0c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa4b0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa300c2a3131fa2a0c28052e2c2c6b2705020628112e2e2e6b44|@2199,1,@11827,@2198| 15595:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11828,@2200| 15596:D5,120|fb112c3ba003033b02662c352d362d35302aa803033b02572e352f36323ba203033c0203322ba80303fa65103b50323ebb2a2adc342807b729283fa903033b02033c2aba2b2ab7293ba0910311220e3caa2933220ffa410c342a6965020f220e3caa2933220ffa3022107b05102707664400000000000000|@2203,1,@11829,@2202,@2201| 15597:D5,344|fb162c3ba003042df745012c352d362a352808a003092a3629353da06402013bf82b012a3629362f299291032429352a362a353ca003082a37292ea06402013b03052a68010207292503511e233b6502013b64299291032d293529353ca0032129382935280ba0031429362a382a352808a00305293ba002013b6502013b6402013b6402013b03c22935293829362a372a36220e92910399220e3529352a362a2da003033c02582a353ba003132c353ba0030a2a362d362a2aa06502013b023f2a353ca003132c353ca0030a2a362d362a2aa06502013b02262a353da003132c353da0030a2a362d362a2aa06502013b020d2a353ea003062c353ea002013b031429929103043b500203fa641029352e2aa66402013b03152d2a692d2a6929680129220f2214fa5022157b05153b6602152a3b692a2a6929680129220c2211fa3722127b0512270502013b6602013b654400000000000000|@2208,1,@11830,@2207,@2206| 15598:D8,448|fb1f2c1ad2012a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b6602012965293caa293ba203033c0205291aa901a603041aab01103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64220c299291034229352a362a3ba203033c02032a34a803041a4201103b502a3ebb312adc2c2807b729283fa903033b02033c2aba2b2ab8220c2e2be4502e250826071e403b270702013b64313ba803043b5002041a0e0110313ba203033c020431faeaa60303faed103b5031283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b292211a20365293ebb220e2adc2b2807b729283fa903033b02033c2aba2b2ab7293ba09103053032b8020131312880a0031e34312be4502f3caa313cb13b3c2b2d250c250c250c250c26081e4b5102172f3caa323cba2b2a342d250c250c250c250c26081e64512606020e2c3ba003043b5002052e2b2ee45026042a95502210220d452b46270e4300|@2215,1,@11831,-1,72057594037927935,@2212,@2214,@2210| 15599:D3,24|fb0a2b2a372b382c392d3a2e23062f23073036327b090300|@1935,1,@11832| 15600:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11833,@2222,@2221,@1972| 15601:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11834,@25,@394,@2222| 15602:D6,80|fb082d3ba0031b2c352806a003112c362d37292efa520c28062c2b6a6602012c022b2d3b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b2e2efa2b0c2a2afa2e2f7e07440000|@1973,1,@11835,@2223,@2152,@1972| 15603:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11836,@25,@394,@2223| 15604:D5,208|fb1a3036299291039a2935323533370b03002e220e3b2c220f220f220e360c5029352a360b0300220c22143b2c221522152214360c5029352a360b02002d352806a003322d362992031e299203043b500203fa94103b5029221bb322112ab12c3b452a465051020b2e68012b2a45221246505050020b2d68012a2a45221146505029352a36220c2b2b6a220c3ba003032f02062f220dfa580c221b2b452a4627160225313532370b03002e220d3b2c220e220e220d360c5029352a362a3b316a220e2a452b462709641f060000000000|@2225,1,@11837,@1048,@2224| 15605:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11838,@2224| 15606:D3,8|fb023b4200000000|@1706,1,@11839| 15607:D6,48|fb072d3ba0031b2c352806a003112c362d37292efa320c28062c2b6a6602012c020d3b2d2dfa290c2e2afa2c2e7e0644|@1973,1,@11840,@2228,@2227,@1972| 15608:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@11841,@25,@394,@2228| 15609:D4,8|fb02fa1c10000000|@2059,1,@11842,@2232| 15610:D3,8|fb023b4200000000|@2061,1,@11843| 15611:D3,8|fb023b4300000000|@2059,1,@11844| 15612:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@2240,1,@11845| 15613:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11846,@1295,@2241| 15614:D18,504|fb152d350a16002c002c0030002c002c0062002c0094002c002c002c00690196012c002c00cf012c002c002c002c002c002c003bf7bc012b299291031729352a362a353da00309292503511e133b02013b6502013c64030d2d2d2d1ab2010c2968016402013bf78a012b299291031729352a362a353da00309292503511e133b02013b6502013c64030d2d2d2d1a80010c2968016402013bf758012d362e372f382a352805a003412a362b372c383237293b3b3ce3501a5f0134346a2807312e316b292b1a59010c1a5d01220e220e6a28073430346b292b1a45010c2805332e2c6b296801270b02842a35280ca003552a362c311a39010c291a3c010c3b322b6a293b690b0200220e2d323b2d1a30010c5029352a362807322b220d6b2b3ba003032902192b1a1f010c3e2a69293b69293ba003032c0205280f2a2e6a66296801270c02282b301a06010c291a09010c3b312b6a293b691a0601342b6a2f2afabf0c28072f2b326b29680127076602832d362e372f38293ba0031e3d2b306a293b69fae4322b6a2e2afa950c280b2a303b6b296801270502013b6602562d360b020030302e3c2dfa970c5029352a362a3ba003032902182afab60c3e2a69293b69293ba003032c0205280f2a2e6a662968012707021d2d362e372a2ffa9a0cfa9f30306a2b2afa380c280f2c2b6a29680127064400000000|@2243,1,@11847,@2244,@15626,@1936,@15627,@2256,@2257,@2258,@2387,@2388,@2389,@15722,@15723,@2390,@2391,@15615| 15615:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11965,@2241| 15616:D16,528|fb1e2c352d372d3b2a929103272a352b362a353da0030e2a36292da603032902012c6402012b2a2a2505250526031e263b6602012965293caa293ba203033c0205291ae301a603041ae501103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64220d299291034f29352a362a353da003392a36293ba203033c020429220ca803041a7301103b50293ebb322adc2b2807b729283fa903033b02033c2aba2b2ab8220d2e2be450260602023b50292503511e4e3b6502013b643b32293ba003032a023e293cb22a3cb22b3cb2293ebb342adc2b2807b729283fa903033b02033c2aba2b2ab7293ba091293ca003053034690201332933250c250c260a1e413b270a65343b3b3ce32a929103082a36293ba06402013b03332a35fae52a6922142afae60cfaeb2215692a2afaec0c2d3caa293ba20303fae9103b503b2a302dfae80c28142a3b6a270702833b220e0c3b2c299291031229362b3caa292b25042504511e113b6502012a653d2b6928082a69fabe2a306a22172afa8e0cfabb2218692a2afa940c3b3b32322d680522143caa312aa00318313ba20303fa84103b503b3234fa9c0c28142a3b6a64020e3b3b220d32fa940c28142a3b6a642b3b69293ba003032a0205280f2a2c6a270c270e44|@2246,1,@11848,72057594037927935,@2212,@2214,@15617,@2248,@15619,@1936,@1080,@2250,@15621,@15623,@2254,@2245| 15617:D4,32|fb062b352806a0030a2b2a363bfa292e7b0503280b2c2b363b6b420000000000|@2247,1,@11849,@1039| 15618:D4,144|fb0a2c350a16002c002c0033002c002c0043002c002c002c002c005d002c002c002c00760079002c002c002c002c002c002c002c2c2c7d0402552c362d372a2efa660c3d2a2c6a6602452c362d372e382a2ffa540c2a30fa4f0c28052e2c2c6b2705022b2c362d372e382b2ffa3a0c2b30fa350c402b2b2e6b270502122c020f2c362d37292efa200c280f2c2b6a6643|@2249,1,@11850,@2248| 15619:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11851,@938,@2241| 15620:D5,40|fb082e2ea003033b02182e2da003032b0202fa2c2f3caa29303030fa2b0c2b2a69661f0400000000|@1075,1,@11852,@921,@2250| 15621:D4,16|fb062937fa220c28112d2b2d366b6442|@2252,1,@11853,@2251| 15622:D8,448|fb1f2b1ad2012a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b6602012965293caa293ba203033c0205291aa901a603041aab01103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350502d2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b6434299291034229352a362a3ba203033c02032a34a803041a4301103b502a3ebb312adc2c2807b729283fa903033b02033c2aba2b2ab8220c2e2be4502e250826071e403b270702013b64313ba803043b5002041a0f0110313ba203033c020431faeba60303faee103b5031283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b292211a20365293ebb220e2adc2b2807b729283fa903033b02033c2aba2b2ab7293ba09103053032b8020131312880a0031e34312be4502f3caa313cb13b3c2b2d250c250c250c250c26081e4b5102172f3caa323cba2b2a342d250c250c250c250c26081e64512606020e2c3ba003043b5002052e2b2ee45026042a9550220c2b69270e420000000000|@2253,1,@11854,-1,72057594037927935,@2212,@2214,@2210| 15623:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11855,@938,@2241| 15624:D5,48|fb092d2da003033b02252b3ba20303fa37103b503d2c6928082a69280b2a313b6b303caa293131fa270c2b2a69270544|@1075,1,@11856,@2118,@2254| 15625:D5,72|fb0b2c929103382c352d36302ba0031a280b2e313b6b313caa313caa2a2a2e33fa3e0c2c2a6927040212303caa2b2b692a322b32fa2a0cfa2f2a69666502013b1f04000000000000|@2255,1,@11857,@2245,@921| 15626:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11858,@2241| 15627:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11859,@2241| 15628:D6,48|fb0b2c929103202c352d362a352b36fa3730692b2afa390c292c692e33fa390c2a2a69270802013b4300000000000000|@880,1,@11860,@15629,@1936,@2256| 15629:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11861,@938,@2241| 15630:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@11862,@2257| 15631:D29,1656|fb3a2f353036313730353136323733383439220c3a220d2306220e23072e3ba003042210020722102f1a64060c220f3da032352807a00305293ba002013b03f43236333734382b3b2a3ba003033c023b2a352b362a3529352808a00309293629353ba06402013b03202b35293629362930a003112f3caa2e2a2509250926071e373b6402013b6602013b666503412b322a3ba00305293ba0022a2a352b362b9291031f2b352c362c362b352a2aa0030d2d2c2508250826061e283b02013b270402013b65650305292fa002013b02013b299103033b02592b352808a003452b3629353ca003392936220c2a2a929103043b5002041aa105102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b64656528082a692968016602013b64020d2b352806a003052b680102013b270402013b293ba0f82c052e3ba003212b299291031729352a362a353ca003033c0207292503511e163b6502013b6402013b033a2d061a37052a6929220f220f6a1a34052a69220e2a1a34050c2d352a221022102210221022102f22106808280c2a6922183b452a462708f7c7042d061a15052a6929220f220f6a1a12052a69220e2a1afa040c2211299291031b29352a362a351a0105a003052a68010207292503511e1a3b6502013b64293ba003471aed04299291031b29352a362a351ad704a003052a68010207292503511e1a3b6502013b64293ba003041acb04103b50293529351ab104a003043b5002041abf04102937650215293529351a9a04a003043b5002041aa804102937643b220e299291031229362b3caa292b25042504511e113b6502012a652a3ba091030622193ba002013b03051be80302012a2d2b2b1a75040c0b03002d353ea0030e220d352a3c4534462a47505002a82d353ca003752d3629933b292ba903033b02162b2a3bdb29030529680102092a3cb12502501e1a3b6464293ba091033a3b2219299291031229362b3caa292b25042504511e113b6502012a65221135220e221a2f2d2220221b2f1a08040c2f3b452a463b47502603020d2210352d3c45220e462a4750502603022d2d353da0031b2d363322162b22111ae1030c220f352c3b452b462a47502603020c220d352a3b4534462a47505029352a362b372a221b221b221b221b302f221b68080b0200221a3ca0f8c00222173c1aa8030c29353ba003132936299291030829362992916402013b6402013b033b29362a372a352b3629352a36220c35280ca003192a3b692d2a692b92919103032f02031a6d033b2b2b6a66020a2c3b693b2a1a5e036a642706020129221d1a5a030c0b02002d353ba003082d362992916402013b03e92d362e372a3622203b2a929103262a352b362a353ba0030d2a37291a2f030c292e696502012b2a2a2505250526031e253b66020129652929929103043b5002041a12031029352a36299291031829352a362c2b1a07030c292b6964250526041e283b6502012a656429321af8020c292d6922121af7020c29353da003062f353ca002013b03582225293ba003033b024329352a362a353ba003312a3629299291031729352a362a353da003033c0207292503511e163b6502013b6403033c02082a250426031e3d3b640207292503511e473b656403032902031a610202012f322c452a46502609020b1a89022a2a35452a36465129352a362a9291f812012a352b362992910323222a3b3b3ce3500b0200221022302b1a64020c5029352a36220f2b452a4650260502e32b353da003262b36222b3b3b3ce3500b020022112d22322c1a40020c5029352a3622102b452a4650260602b72a299291038229352a362a353ba0035a2a362b372a9291034d2a352b36293ba003112b353da003082b37293ba06402013b02013b03033c022a2a299291032229352a362a353da003082a37293ba06402013b03033c0207292503511e213b6502013b646502013b65020f2a353da003082a37293ba06402013b03033c0207292503511e813b6502013b640324222a3b3b3ce3500b020022102e22312c1a98010c5029352a36220f2b452a46502605020733220e453b465051023329353da00326293622293b3b3ce3500b0200220f2d22302c1a5a010c5029352a36220e2b452a46502606020731220c453b465026080206292d453b465029352a362a3a293ba00328221d3ca0031f221a92910315221a35221b362a353ca00305293ba002013b6502013b9102013b02013b030922233b3b3ce35002023b50280c2c6922292c452a4627190209293522113b452a4664270e1f0500000000|@2260,1,@11863,@2261,@953,@15633,@15634,@1936,@15635,@15636,@54,@1652,@1701,@826,@2263,@2267,@2288,@2293,@1296,@2307,@2308,@2309,@2311,@2312,@2313,@2315,@2316,@2331,@2259| 15632:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11864,@2261| 15633:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@2262,1,@11865| 15634:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11866,@938,@2241| 15635:D3,24|fb082936352a3635293caa2c363b3b2ce32c270442000000|@2262,1,@11867| 15636:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11868,@938,@2241| 15637:D9,144|fb0f3b063c062e3ba203033c02042efa97a80303fa9a103b502e28403cda302f3c3c2d3030fa910c293ba00304fa9102552c3529910304fa8f024a2c3503242b93293ba00304fa8802132928403bda2d3b3b2c3b3b30eb5029955029643d2a696502222b93293ba00304fa6402132928403bda2d3b3b2c3b3b30eb5029955029643c2a69656427044400000000000000|@2265,1,@11869,72057594037927935,@789,@2264,@937,@749,@957| 15638:D5,1856|fb18303ba003043bf72f0731350a1600ea0035017d01bf010302c9020d03250338045a0468048604a1042a058f052c00c205dd055806c806e2061007313632372a332a9291039f2a352b362a353ba0031f2a392c3ca803052c3cab02013b2a2a3b22102210221022101aec060c6502682a353da003142a36292d3b220f220f220f220f1ad2060c64024e2a353ea003362a36292d2a929103282a352b362a37280c2a69292e3b22152215221522151aa7060c2c2a2507250726051e263b2705020129656402122a38292d3b220f220f220f220f1a82060c642a2a2505250526031e9e3b66020129652a2a34343434341a6606220c7b090cf740063136323733382a3b692c2a692b2a69220d3ca80306220d3cab02013b2a2a2a929103212a352b362a2c3b22132213221322131a29060c2a2a2505250526031e203b66020129652707f7f505313629352a36293b692b2a69220c3fa80306220c3fab02013b2a2a2a929103212a352b362a2c3b22122212221222121ae1050c2a2a2505250526031e203b66020129652706f7ad053136323729332a929103262a352b362a352937292e3b22102210221022101aaa050c2c2a2507250726051e243b2705020129652b2a3b343434341a8e05220c7b090c31363237293b692b2a69343ca80305343cab02013b2a2a2a929103212a352b362a2c3b22112211221122111a5b050c2a2a2505250526031e203b66020129652705f72705313732383339333ca80305333cab02013b2a36299291033829352c352a3b692a2a69292f2a929103212a352b362a2c3b22152215221522151a0a050c2a2a2505250526031e203b6602012965270402122b35292c3b220e220e220e220e1ae5040c642d36299291033829352f352a3b692a2a69292f2a929103212a352b362a2c3b22172217221722171ab9040c2a2a2505250526031e203b6602012965270402122e35292c3b22102210221022101a94040c64302a3b22102210221022101a840422117b0911313632373338333da80305333dab02013b2a2a220c220c220c220c220c1a5f040c2c2a220d220d220d220d220d1a4f040c2e2a3b220e220e220e220e1a4004220f7b090f31362992030331020b313ca80305313cab02013b64f705043136323729352808a00311293629353ea00305313ca002013b6402013b03a52a3b2a929103502a352b362a3529352808a00309293629353ba06402013b030a293629362e2aa06502013b03043b50021534932d2aa903041ad103103b50220c2e3b3be350502c3caa2b2a2506250626041e4f26040200512e3b3b3ce3503103043b5002062d3b3b3be350323ea80305323eab02013b2b2a2a929103232a352b362a35292d3b3c2210221022101a74030c2b2a2506250626041e213b27040201296564024b323da80305323dab02013b2b2a2a929103242a352b362a35292d3b22102210221022101a39030c2b2a2506250626041e223b2704020129652b2a3b220c220c220c220c1a1903220d7b090d65f7f202313629353ea003052f3ca002013b03033b020b313ca80305313cab02013b64f7d002303ca80305303cab02013bf7c20231363237293333333333331ad2020c2b2a3b343434341ac702220c7b090c3136313ca80305313cab02013b2a2a3b333333331aab02347b090b313629352a382b392a299291031729352a362a353ea003033c0207292503511e163b6502013b6403033b02583b2a299291031229362b3caa292b25042504511e113b6502012a653b2c299291031229362b3caa292b25042504511e113b6502012a652a2aaa220e2aa80306220e2aab02013b2f2a3b3b2210221022101a280222117b09112704f700023137313ca80305313cab02013b2a36299291033829352c352a3b692a2a69292f2a929103212a352b362a2c3b22132213221322131ae7010c2a2a2505250526031e203b6602012965270402152b35292c3b220c220c220c220c1ac201220d7b090d66f79b01313629322a929103242a352b362a35292d3b220e220e220e220e1a9c010c2b2a2506250626041e223b27040201296564f768013136313ca80305313cab02013b2a2a3b333333331a6f01347b090b3136323733382b352814a003402b3629220c2a929103212a352b362a2c3b22102210221022101a42010c2a2a2505250526031e203b66020129652b2a3b220d220d220d220d1a2301220e7b090e2a35342aa80305342aab02013b2d2a3b220d220d220d220d1a03010c2c2a3b220e220e220e220efaf5220f7b090f31373238323ca80305323cab02013b2a36299291033729352c352a3b692a2a69292f2a929103202a352b362a2c3b2214221422142214fab80c2a2a2505250526031e1f3b6602012965270402112b35292c3b220d220d220d220dfa940c642d2a3b220d220d220d220dfa85220e7b090e3137313ca80305313cab02013b2a2a3b33333333fa6a347b090b313629322a929103202a352b362a2c3b220d220d220d220dfa4c0c2a2a2505250526031e1f3b660201296564021a3136313ca80305313cab02013b2a2a3b33333333fa22347b090b1f0700000000|@2266,1,@11870,@2264,@864| 15639:D17,296|fb170b0300343b343b3b3b3b3022121a2e010c5029352a362b37293ba003051a260102573b2a299291031229362b3caa292b25042504511e113b6502012a65291a0d01a803041a0f01103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e260351299550296522102a2210fadefae40c220d3b3bef293ba00304fadf024f293db1292810b1293cb2292808b429faaca503043b500203facb10292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c270822103ba20303fa96103b503b2211fa960c303ba003032902052931fa910c30fa950c2e2dfa982d2d3c221622186808280c2a6933fa900c28072a2c22176b27111f0700000000|@2269,1,@11871,@2270,@957,72057594037927935,@2035,@2272,@2275,@1158,@286,@1080,@2285,@2286,@2287,@938,@2268| 15640:D5,232|fb19333ba003642f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2c452b462a47660278333534362a352b363b220e693093220f2aa90303fa7f103b503122103bdb0328220f3caa220f3caa2c220f693c22126929220f69322e2e22152f22152f22152215fa5a22167b0b16220f3caa220e3caa28082d692930306a292210693b2213692922116934302217312217302f22172217fa2a22187b0b181f09000000|@2271,1,@11872,@831,@2270| 15641:D4,16|fb0528072dfa212e6b43000000000000|@2274,1,@11873,@2273| 15642:D6,24|fb07fa2c2e2d2f6bfa2e2a69302afa302f7e080000000000|@2276,1,@11874,@15644,@15643,@1936| 15643:D4,64|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa360c3131312c313131316808280c2a69296801270c02052b2a362c80420000|@2281,1,@11879,@2284| 15644:D5,112|fb082b352808a003092b3629353ba06402013b03212b3629362b36932a2aa90303fa65103b502c362b3bdb28082a69296801270502392b352807a003162b3729352808a00309293629353ea06402013b6402013b03182b362c382a3b2d382efa2f0c292b2e370c296801270402013b42|@2278,1,@11875,@831,@2277| 15645:D7,88|fb0f2e3ba003033b02482e352f362a352b363093322aa90303fa55103b5031333bdb030e323caa2d2a3434fa4b220c7b060cfa4c31692c2afa4e0c292d69220c3caa302a220e220efa2e0c2b2a69270527051f0400000000|@2279,1,@11876,@831,@2277,@15646,@1936| 15646:D4,64|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa360c3131312c313131316808280c2a69296801270c02052b2a362c80420000|@2281,1,@11877,@2280| 15647:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11878,@1936,@2282,@2280| 15648:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11880,@1936,@2282,@2284| 15649:D4,32|fb062c2ca003033b020f3c2d692d3caa292efa240c2b2a696643000000000000|@1075,1,@11881,@2285| 15650:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11882,@2286| 15651:D4,32|fb092b929103162b352c362a362b372a2a692cfa230c2a2a69270602013b4200|@880,1,@11883,@2287| 15652:D4,32|fb092b929103162b352c362a352b362a2a692cfa230c2a2a69270602013b4200|@880,1,@11884,@2268| 15653:D9,136|fb100b0200303b3b3b2d3434fa920c5029352a36293ba00304fa8d02553b2a299291031229362b3caa292b25042504511e113b6502012a6529fa75a80303fa78103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965342a34fa49fa4f0c3d2a2e6a27071f04000000000000|@2290,1,@11885,@2291,@957,72057594037927935,@2035,@2289,@2275| 15654:D6,208|fb1b313ba003442f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2b452a46650281313532362a352b363093220c2aa90303fa8b103b5031220d3bdb031e220c3caa3b220e6929220d692f2c22102c221022102210fa7022117b091130353135293caa333b3b2ce322103caa22113ba20303fa5b103b503b22126928082a6931302b6a293469292215693d336929221669220f312d2c221922192219fa29221a7b091a1f070000|@2292,1,@11886,@831,@2291,@2118| 15655:D3,8|fb03280e2d694300|@2274,1,@11887| 15656:D12,384|fb142c9291f86e012c352d362a353da003cd2a36293caa293ba803043b5002041a750110293ba203033c0205291a7001a603041a7201103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203492933a003052b2db802012c2c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e2f5102172a3caa2d3cba2b2a2f2d250725072507250726031e485150020e2c3ba003043b5002052e2b2ee45026042a95502d2b693d2a3b3c6b270702802a353ba003782a362b372f3ba003033d02012f2b2afaba0c0b02002c353ba0030d2c362d372b2b452a4650510206293b452d465029352a3630fa9e0c220e3da0032931299291031f29352a362afa920c29fa96a0299103033c02082b250526041e1d3b270402013b6402013b0304fa810208292c693b2a2d6a64270a0202fa712a3ba0030329020c2a2ffa450c2a2afa68317e08660202fa584300000000000000|@2295,1,@11888,@2210,72057594037927935,@2212,@2293,@2296,@1984,1879048192,@1296,@2294| 15657:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@11889,@2297,@2296| 15658:D8,216|fb150b02002e2afae70c5029352a362a3ca40304fae202bb2a3ba803043b500203fadd102a3ba203033c02042afad9a60303fadc103b502a283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2933a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502e2b693d2a303b6b27052705420000|@2299,1,@11890,@2298,@1296,@2210,72057594037927935,@2212| 15659:D14,312|fb102c350a16002c002c002c002c002c0039007d002c00e0002c002c002c002c002c002c00ec002c002c002c002c00f5002c001a1a012c2a35452a36466402f32c372d380b02002d2a1a0c010c5029352a360b0200312a1afe000c5029352a362f2ba003102e03032902013b220f31452a4664020bfae9220f2a35452a364664270c02af2c36299203033c021429920303fad5103b5029942928ffb7293ba09165030cfacb2d2a35452a364664023529920303fac3103b50299329920305293ba2020529942811a00308fab42afab90c020129299203043b500203fab3102e2a453c466564024cfaaf2c2a35452a36466402402c37292dfa5f2e7e052c362d37293ba003233b2b299291031229362b3caa292b25042504511e113b6502012a652e2a453b4664020afa762e2a35452a364664654300000000|@2300,1,@11891,@920,@2298,@920,@1041,@920,@1041,@796,@797,@792,@920,@920| 15660:D10,712|fb212c353ba003062b353ba002013b03292c362d372d362e372c2b1ac2020c2992919103051ac002020b2c2b1ac1020c3b2b2b6a642705f78b022c353da003062b353da002013bf879022c362d372e382e362f3730382e353b2a293ba003032a0241293cb22a3cb22b3cb234362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b652d353b2a293ba003032a0241293cb22a3cb22b3cb233362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b652b2a2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b6503183103032e02013b3103032e02013b3d220c2c2c6b65f77b013003032d02013bf86f01323530352a2aa603032a020129293ba803043b5002041a910110293ba203033c0205291a8c01a603041a8e01103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203d12214352a2aa2033a2215352216362c3ba203033c02032c2ba803041a3701103b502c3ebb2a2adc2e2807b729283fa903033b02033c2aba2b2ab7293ba091270702013b03033c02432212352b2aa203392213352214362d3ba203033c02032d2ba80303faf0103b502d3ebb2a2adc2f2807b729283fa903033b02033c2aba2b2ab7293ba091270702013b6403052c2eb802012d2d2880a0031e302d2be4502b3caa2d3cb13b3c2b2d250825082508250826041eb75102172b3caa2e3cba2b2a302d250825082508250826041ed05151020e2c3ba003043b5002052e2b2ee45026042a95502d2b6922100304220d02013b22100304220d02013b3d2c2c2c6b270a0202fa29270a0202fa23430000|@2302,1,@11892,@2301,@1296,@2294,@2210,72057594037927935,@2212,@2202| 15661:D5,48|fb092c929103052b929102013b03192c352d362d352e362c2bfa2d0c2c2bfa300c2a2a69270602013b43000000000000|@2132,1,@11893,@2303,@2301| 15662:D7,64|fb092c3ba0030f2b3ba003043b500203fa46103b02232c352d362d929103043b500203fa3b102d352e362c2bfa3a0c2c2bfa3d0c2a2a69270643000000000000|@2305,1,@11894,@2304,@2304,@2294,@2303| 15663:D5,32|fb082b929103162b352c362a36293bfa270c2bfa2b0c2a2a69270502013b4200|@880,1,@11895,@2293,@2307| 15664:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@11896,@2297,@2308| 15665:D6,64|fb092c3ba0030f2b3ba003043b500203fa46103b02282c352d362d929103043b500203fa3b102d352e362c353da003032c02012a2c2bfa300c2a2a6927064300|@2305,1,@11897,@2304,@2304,@2311| 15666:D7,80|fb092c3ba0030f2b3ba003043b500203fa56103b02322c352d362d929103043b500203fa4b102d352e362a353da0030d2c353da003032a0202fa3d02012a2c2bfa3e0c2a2a6927064300000000000000|@2305,1,@11898,@2304,@2304,@1296,@2312| 15667:D8,296|fb132b35280fa003092b37291a31012d7d042b352805a0031c2b372c382a1a1f010c29353da003032902072a1a11012f7d066602ef2b352814a003e62b362c37293ba003d83b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fadd10293ba203033c020429fad9a60303fadc103b5029283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2932a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502d2b693d2a3b3b6b27060202fa41650202fa3c42000000|@2314,1,@11899,@2313,@2210,72057594037927935,@2212,@1296| 15668:D23,408|fb2f2d352935280ca003043b5002041a9e0110293629392a2307313632383339343a220c2306220d23073b220e0c3b220f0c3b30299291031229362b3caa292b25042504511e113b6502012a653c2a691a65012a691a68012a2c6a220f2a1a67010c3b34299291031229362b3caa292b25042504511e113b6502012a65220f3b2b1a4c010c28072a2d22126b3d3269293b69293ba003042210020722102a1a37010c22143ba0030422100208221022151a2d010c2d22141a2e012d2d22152215221b6808220e2a69313ba203041a2001103b503b321a20010c1a24012a6922153b1a24010c221a3b1a25010c293ba003032a02062a2a1a1f010c28072a1a200122186b221b3b3bef293ba003051a18010249293cb1292810b1293cb2292808b4291a0c01a503043b5002041a0a0110292841bd2a3cb22a2a3b3bf02b3b3b32f050222328082d280834ec50280831b12c2a282de4502c95502c27082b2afae13222233b3b22256808280c2a693d221a69293b692b2222fad02c22233b3b22236808221b2a69293b69220f2a69222c2d452a46272a44000000|@2318,1,@11900,@2319,@15669,@15670,@1936,@2324,@2326,@2327,@938,@1080,@2328,@920,@2329,@2330,@2317,@1407,@370,72057594037927935,@286,@938,@938| 15669:D3,40|fb032b352808a003092b3629353ea06402013b030b28082a36692968016402013b42000000000000|@2322,1,@11901| 15670:D4,88|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa4e0c3131312c313131316808280c2a69296801270c021f2b352808a003092b3629353ea06402013b030b28082a37692968016402013b42|@2281,1,@11902,@2323| 15671:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11903,@1936,@2282,@2323| 15672:D4,48|fb0d2d3ba003033b02222d352e362a352f2faa3b2a6928082a69292d69333caa2f2a220cfa220c2b2a69270944000000|@2325,1,@11904,@2324| 15673:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11905,@2326| 15674:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11906,@2327| 15675:D4,32|fb062c2ca003033b020f3b2d692d3caa292efa240c2b2a696643000000000000|@1075,1,@11907,@2328| 15676:D4,48|fb0c2c3ba003033b02202c352d362a352e3caa3c2a6928082a69292d69323caa2f2afa240c2b2a692709430000000000|@2325,1,@11908,@2329| 15677:D4,40|fb0b2c3ba003033b021d2c352d362a353b2f6928082a69292c69313caa2e2afa1f0c2b2a69270843|@2325,1,@11909,@2330| 15678:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11910,@2317| 15679:D15,376|fb2f2e352f3630383139323a3323063423073b340c3b220c0c3b30299291031229362b3caa292b25042504511e113b6502012a653c2a691a56012a691a59012a2c6a220c2a1a58010c3b34299291031229362b3caa292b25042504511e113b6502012a653b2a6928082a6928112d22172c6b220e1a31010c3d3469293b69293ba003042212020722122a1a23010c22103caa2e22161a20012d3122172f3c680822102a69221d353b3b292ca903032a023b293cb12221362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3e3b27096522173bface0c29fad20c28072afad43c6b3b3b3b2f2d6805293b693b3b2226faca0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faa70c0201292c3ba00303290205280f2d2b6a3d221d69293b692b2225fa922c22263b3c22266808221e2a69293b6922102a69222c2d452a46272a1f0400000000|@2333,1,@11911,@15680,@15681,@1936,@2336,@2337,@938,@2338,@2340,@1407,@2332,@1083,@938| 15680:D3,40|fb032b352808a003092b3629353ea06402013b030b28082a36692968016402013b42000000000000|@2334,1,@11912| 15681:D4,88|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa4e0c3131312c313131316808280c2a69296801270c021f2b352808a003092b3629353ea06402013b030b28082a37692968016402013b42|@2281,1,@11913,@2335| 15682:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11914,@1936,@2282,@2335| 15683:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11915,@2336,@1437| 15684:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11916,@2337| 15685:D4,40|fb0b2c3ba003033b021d2c352d362a353b2f6928082a69292c69313caa2e2afa1f0c2b2a69270843|@2339,1,@11917,@2338| 15686:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11918,@2340,@2341| 15687:D7,120|fb102b352e2aa003033b02662c352d36303ba203033c0203302ba80303fa71103b50303ebb2a2adc322807b729283fa903033b02033c2aba2b2ab7293ba091031e280bfa53220d3b6b220d3caa220d3caa2a2a220ffa490c2c2a6927040211220c3caa29220d220dfa360cfa3b2a69652707644400000000|@2343,1,@11919,@2202,@1276,@2332,@921| 15688:D16,312|fb2c2e352f3630383139323a3323063423072a060b030022103b3b2c31220f1a2e010c5029352a362b37293ba003051a260102573b2a299291031229362b3caa292b25042504511e113b6502012a65291a0d01a803041a0f01103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029653b220e299291031229362b3caa292b25042504511e113b6502012a653c2a69fac42a2d6afac72a2c2f6b22132afac60c22192212fac70c312afaca0c3b221b0c3b221c0c220c3ba003032d0206280f220d2f6a3d2b69293b69293ba003042219020622192afaa60c2215352d221dfaa52d220c221e2f221e6808302a69280733fa9b221c6b3d3369293b692b2222fa952c22233b3b22236808342a69293b692f2a6922292d452a4627271f0400|@2345,1,@11920,@2346,@957,72057594037927935,@2035,@15710,@15711,@1936,@2383,@2386,@2344,@938,@1407,@938| 15689:D10,856|fb22303ba003111a66032e2a35452a36462a374764f73e03303531362a353ba0f884012a362b372a9291f83e012a352b36293ba003112b353da003082b37293ba06402013b02013b035f2b363b220d69293b693b221069293b692d68010b0300220d3130302d221822181a0b030c5029352a362b3722193caa22193caa0b030022172f2f2c222022201af4020c5029352a362b37342c69342c69342c6922232c452b462a47271902bf2a299291032229352a362a353da003082a37293ba06402013b03033c0207292503511e213b6502013b6403593b220c69293b693b220f69293b690b030034302f3b2d221622161a86020c5029352a362b3722173caa22173caa0b030022152f2f2c221e221e1a6f020c5029352a362b37342c69342c69342c6922212c452b462a472717023a220c3caa220c3caa0b0300332f2f2c221322131a3c020c5029352a362b373b22166928082a69292d693b221869292e69221831452c462a47270e650238333caa333caa0b0300312f2f2c221122111a01020c5029352a362b373b22146928082a69292d693b221669292e69221631452c462a47270e65f7ae012a353da0f870012a362b37293ba0f82c012a353b2a293ba003032a0241293cb22a3cb22b3cb230362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b65220c3caa2d353b3b292ca903032a023a293cb131362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965220e2aaa0b0300220c312f2c221522151a1c010c5029352a362b37221435221535293caa22173b3b2ce33b3b2214221d1a04010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fae10c0201293c3b312c6b22132220fada0c2a220c69343ba003032a02062a220cfad00c3d346929220d6922222d452c462a47271a0237333caa333caa0b0300312f2f2c22112211fa890c5029352a362b373b22146928082a69292d693b221669292e69221631452c462a47270e650237313caa313caa0b03002f2f2f2c220f220ffa4f0c5029352a362b373b22126928082a69292d693b221469292e69221431452c462a47270e651f06|@2348,1,@11921,@1460,@2349,@2346,@2379,@1083,@2380,@2347| 15690:D15,408|fb2131929103043b5002041aa201103135293b692e352f35293caa313b3b2ce32d220e220d34311a8e010c3c3b2f2c6b2f3b1a8b011a90010c303b2a929103942a352b362a3b2a929103752a352b362a353da003082a37293ba06402013b034f2a3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965292faa6602032b3caa2a2a2505250526031e743b66020129652c2aaa2b2a2506250626041e923b270402012965220f92912a2aaa2211929103212211352a3cab293ba20303fae0103b503b2a6928082a69302d2bfad90c270402012c220f3b3bef293ba00304facf024f293db1292810b1293cb2292808b429fac4a503043b500203fac310292841bd2a3cb22a2a3b3bf02b3b3b32f050221728082d280834ec50280831b12c2a282de4502c2a3cb12845e4502c95502c27082c3ba20303fa8f103b503b2dfa900c2c2bfa9322192d3b3b3c6808280c2a693d2210692217220c452b462a4727131f07000000000000|@2351,1,@11922,@2207,@2352,@1407,@2372,@2118,@2377,@2378,72057594037927935,@286,@1080,@2350,@938| 15691:D20,512|fb152f9291f806012f3530363b2b299291031229362b3caa292b25042504511e113b6502012a652a3ba0030530929102013b303b3bef293ba003051ada010251293db1292810b1293cb2292808b4291ace01a503043b5002041acc0110292841bd2a3cb22a2a3b3bf02b3b3b32f050220f28082d280834ec50280831b12c2a282de4502c2a3cb12850e4502c95502c27082c3ba203041a9701103b503b2d1a97010c3b220d299291031229362b3caa292b25042504511e113b6502012a65293ba203041a6a01103b503b2a1a72010c2f3ba203041a5901103b503b301a69010c293ba003032a02062a2a1a63010c322a2211221122111a5f010c29303b2214323b220e3c6808280c2a69270d02e92e929103043b5002041a4601102e362c2a1a46010c2f929103b52f3529353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b27096533929103043b500203faf410333528082a692efaf20c28072a2c3c6b3bfaf03b302d6805293b693b3b33faeb0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fac80c0201292c3ba00303290205280f2d2b6a270c021930929103043b500203fab010303528082a6928072c2b3c6b65651f0500000000000000|@2354,1,@11923,@2355,72057594037927935,@286,@1080,@2356,@2357,@2358,@2359,@2352,@2360,@2362,@2207,@2371,@938,@2353,@1083,@2207| 15692:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@11924,@2356,@1020| 15693:D4,32|fb062c2ca003033b020f3c2d692d3caa292efa240c2b2a696643000000000000|@1075,1,@11925,@2357| 15694:D4,32|fb062c2ca003033b020f3b2d692d3caa292efa240c2b2a696643000000000000|@1075,1,@11926,@2358| 15695:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11927,@2359| 15696:D4,24|fb082c9291030d2c352d362a2e2bfa20307b05063b430000|@2364,1,@11928,@2363| 15697:D8,200|fb162d929103b62d352e362a353da003102a37293ba003052f929102013b6402013b03742a362f3530362b353b2a293ba003032a0241293cb22a3cb22b3cb231362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba091293ca0030631220c690201342934250d250d260b1e443b270b65292dfa640c2f2d220cfa650c293ba003032a02082a2afa60220d7e0e270702222e929103043b500203fa55102e352f3628082b69293c692d2c33fa340c2a2a6927056502072b2dfa3f2d7e0544000000|@2366,1,@11929,@2367,@2363,@2368,@2365,@2362| 15698:D4,40|fb092c9291031d2c352d3628082e69280b2a2d3b6b293c692c31fa240c2a2a69270602013b430000|@880,1,@11930,@2367| 15699:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11931,@2368| 15700:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@11932,@2371,@2341| 15701:D7,120|fb102b352e2aa003033b02662c352d36303ba203033c0203302ba80303fa71103b50303ebb2a2adc322807b729283fa903033b02033c2aba2b2ab7293ba091031e280bfa53220d3b6b220d3caa220d3caa2a2a220ffa490c2c2a6927040211220c3caa29220d220dfa360cfa3b2a69652707644400000000|@2343,1,@11933,@2202,@1276,@2353,@921| 15702:D5,168|fb172d3ba003032b02992d352e362e2bfaae0c2b3b2a929103752a352b362a353da003082a37293ba06402013b034f2a3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965292faa6602032b3caa2a2a2505250526031e743b6602012965302aaa28072c323c6b2d2b2bfa29347b050b4400000000|@2374,1,@11934,@2373,@2372| 15703:D7,216|fb162b929103ca2b352c362a353da003082a37293ba06402013b03912a363b3b2b32facc0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faa90c020129293c692d353b3b292ca903032a023a293cb131362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965220c2aaa2932fa5b0c2d2a69270902212e3ba20303fa54103b503b2f6928082a69293c69313caa292efa380c2b2a6927056502013b430000000000|@2376,1,@11935,@2375,@1083,@2373,@2118| 15704:D7,136|fb132c352f2aa003033b02772d352e36313ba203033c0203312ba80303fa81103b50313ebb2a2adc332807b729283fa903033b02033c2aba2b2ab7293ba091032d220c34aa293ba20303fa5c103b503b2a6928082a6922103caa22103caa2a2a22122212fa4a0c2c2a6927060213220d3caa29220e220e220efa350cfa3a2a69652707641f040000|@2343,1,@11936,@2202,@2118,@2375,@921| 15705:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa750c2b3131fa6f0c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa4b0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa300c2a3131fa2a0c28052e2c2c6b2705020628112e2e2e6b44|@2199,1,@11937,@2377| 15706:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@11938,@2350,@1020| 15707:D7,136|fb132c352f2aa003033b02772d352e36313ba203033c0203312ba80303fa81103b50313ebb2a2adc332807b729283fa903033b02033c2aba2b2ab7293ba091032d33220daa293ba20303fa5c103b503b2a6928082a6922103caa22103caa2a2a22122212fa4a0c2c2a6927060213220d3caa29220e220e220efa350cfa3a2a69652707641f040000|@2343,1,@11939,@2202,@2118,@2379,@921| 15708:D5,48|fb092c929103272c352d362d3ba20303fa36103b503b2e6928082a69280b2a2e3b6b2c31fa2a0c2a2a69270602013b43|@880,1,@11940,@2118,@2380| 15709:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11941,@2347| 15710:D4,72|fb072b352808a0033c2b3629353ea0030b28082b366929680164022629353ba0031f29362b37932a2aa90303fa32103b502c372b3bdb28082a69296801270402013b6402013b4200|@2381,1,@11942,@831| 15711:D5,128|fb132b35280ca0032f2b3629352a362b372c382d392e3a2f23063023072d3336fa760c3131312c313131316808280c2a69296801270c02442b352808a0033c2b3629353ea0030b28082b376929680164022629353ba0031f29362b38932a2aa90303fa3c103b502c382b3bdb28082a69296801270402013b6402013b42000000|@2281,1,@11943,@2382,@831| 15712:D6,56|fb092c929103292c352d3628082b69292ffa3d0c29352808a003043b500203fa371029362c31fa380c2a2a69270602013b43000000000000|@880,1,@11944,@1936,@2282,@2382| 15713:D9,184|fb152c3ba0030f2b3ba003043b500203fabe103b029b2c352d362d929103043b500203fab3102d352e362b2afab20c2d353da003082d37293ba06402013b036c2d3629353b3b292ca903032a023a293cb12d362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293ba20303fa58103b503b2afa590c2d3ba00303290208292efa54220d7e0d270402032b2a69270543000000000000|@2169,1,@11945,@2168,@2168,@2383,@1080,@2385,@2384| 15714:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@11946,@2385,@920| 15715:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11947,@2384| 15716:D6,64|fb0a2c3ba0030f2b3ba003043b500203fa46103b02232c352d362d929103043b500203fa3b102d352e362a352d2a692d2cfa350c2a2a69270743000000000000|@2305,1,@11948,@2304,@2304,@2386| 15717:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11949,@2344| 15718:D4,32|fb092b929103172b352c362a352b363b2b2b6a2cfa220c2a2a69270602013b42|@880,1,@11950,@2387| 15719:D6,48|fb0b2c929103202c352d362a352b36fa3730692b2afa390c292c692e33fa390c2a2a69270802013b4300000000000000|@880,1,@11951,@15720,@1936,@2388| 15720:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11952,@938,@2241| 15721:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@11953,@2389| 15722:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11954,@2241| 15723:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11955,@2241| 15724:D4,32|fb092b929103172b352c362a352b363b2b2b6a2cfa220c2a2a69270602013b42|@880,1,@11956,@2390| 15725:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@11957,@2392,@2391| 15726:D8,136|fb0c2c353ba0031c2c362d372e382f39fa8e30692a2afa900c3b2f2f2f2d68052706025d2c353da003112c36fa822d692a2afa740c3d2a696602462c353ea003292c36293b2a929103182a352b362a2c32fa650c2a2a2505250526031e173b66020129653e2a696502172c362d372e38fa4e2f2d6a2a2afa2f0c3c2e2e2c6b270543000000000000|@2393,1,@11958,@15728,@1936,@15729,@2394,@15727| 15727:D4,16|fb062b2a362b37fa1f2e7b0503000000|@2242,1,@11964,@2241| 15728:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11959,@938,@2241| 15729:D5,16|fb062b2a36fa21fa272e7b0503000000|@2242,1,@11960,@938,@2241| 15730:D7,72|fb0f2d352e362f370b0200312f2e3d2dfa4e0c5029352a362935280ca003043b500203fa4310293631312b6a2c33fa400c220e3ba0030329020629220ffa390c2b2a69270c440000|@2396,1,@11961,@2258,@2397,@2400,@2395| 15731:D4,40|fb092c929103182c352d362a352b362f2b2b6a2c31fa290c2a2a69270602013b4300000000000000|@880,1,@11962,@2400| 15732:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11963,@2395| 15733:D6,56|fb083b06280528403bdafa44453d28403bdafa4445292b466c502a2c4632472f482a496c50322afa370c2c35312b4533462a4727051f0500|@2402,1,@11966,@15735,@15734,@1936| 15734:D7,184|fb0f2b35280fa0031c2b362c372a2c2d36fabd0c2a2dfac00c280f2b2b6a296801270502902b35280ca003882b362938293ba003082a3a293ca06402013b03703b3b2c6a293b690b02002c2a32360c5029352a362a3ba0032e299291031329352a362a353ca00305293ba002013b6502013b03043b500203fa66103b50293529382968016502252a352b36293ba003052b3ba002013b03043b500203fa4a103b502a37280c2a692968012704270702013b6502013b420000|@3406,1,@12185,@3407,@1936,@3405,@3405| 15735:D8,360|fb1a2936352a363b3b3be32e2c391a6f010c2c36352c03082d363b3b3ce302013b2a03033c029531299291031c29352a362a37293a293ba003033c02082b250526041e1a3b270402013b6403033c026c31299291036429352a362a37293829299291034329352a362a353da003292a362211299291031929352a362a36292ea003033c02082a250426031e183b6602013b6429916502013c03033c0207292503511e423b6502013b6403033c02082b250526041e623b270402013b640307302c453b4602992bfac00c3e2d69293b6928142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa970c020129280f2c2b6a313b2a9291031e2a352b362a36292da603032902012c2b2a2506250626041e1c3b270402012965293caa0b02002e2d2212372c221438fa5e0c5029352a363b2b0c28062a2c6a2214363b3b3ce322123b2cfa4b0c22183b452a46271127054300000000000000|@2404,1,@11967,@2405,@2406,@1083,@2407,@2403| 15736:D5,80|fb172c929103402c352d362a352b362c3729352a362b372c382d392e3a2f2306302307302210fa400c29313131313131316808220c220c2b6a220e2213fa310c2a2a69271102013b4300000000000000|@880,1,@11968,@1936,@2405| 15737:D4,40|fb092b929103182b352c362a363d2a6928082a692cfa290c2a2a69270602013b4200000000000000|@880,1,@11969,@2406| 15738:D18,144|fb112e3ba203033c02042efa9ba80303fa9e103b503b502e28403bdafa9a2a69fa9e2b69faa2312c2c326805332afaa00c29faa43b3bfaa83c22103c68083c06280c2b6929faa1fa9f3bfaa40c29fa98fa963b22112210fa9f0c2935280ca003043b500203fa99103b5029362922102f2210fa940c2212220cfa950c292bfa980c221131452a46270e1f050000000000|@2409,1,@11970,72057594037927935,@789,@15739,@15740,@15741,@1936,@2483,@1437,@3393,@2440,@2452,@2501,@2432,@3394,@2408| 15739:D5,64|fb0a2b353da003043b500203fa4a102b362a36932a2aa90303fa45103b502b362b3bdb299291030d293529352a363b2b2b6a6602033c2f696642000000000000|@2411,1,@11971,@2410,@829| 15740:D4,32|fb092b352c362968012c36932c2aa90303fa25103b502d362d3b2de327044200|@2415,1,@11972,@864| 15741:D4,24|fb082b2a362b372c382d39fa23307b070300000000000000|@2417,1,@11973,@2416| 15742:D14,432|fb302e2e2e6a30352814a00390303631372903421ab1012d3333333368062b2a1aad010c28142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a89010c0201296602401a87012d3333333368062b2a1a83010c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a47010c0201296629680166f709013035280fa00344303631372a1a44010c292e31220c220c220c3336331a3c010c1a40012f220c220c220c220c68062c2a1a38010c2b3ba003052968010209280f2c2b6a29680164270602be3035280ca0038830360b080033331a17012c22112210360c5029352a362b372c382d392e3a2f2306302307303030303030303068082e3ba003493c063b2a3b6a0b0800221e221e342c22252224360c5029352a362b372c382d392e3a2f23063023073030303030303030680829222e2215222dfabb0c280622152b6a29680127160208280c2a69296801642713022f30352808a00327303629300c29353ba0030f29362a3728062b2b6a29680166020a293628082a69296801656502013b641f0500000000000000|@2420,1,@11974,@15743,@2421,@1083,@15745,@2422,@2423,@2426,@15755,@1936,@2051,@2419| 15743:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11975| 15744:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@11976,@1936,@2421| 15745:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11977| 15746:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@11978,@1936,@2422| 15747:D8,136|fb142b9291037f2b352c3629fa920c2b353ea0035b2b3629fa8efa940c293b2a929103472a352b362a929103043b500203fa85103b502a352b36293ba003162a352b362c37280c2a693c2d2d2c6b293369270502073e2d69292f69642c2a2507250726051e453b2705020129656502032b3b692a3ba00303290207292bfa41317e07270402013b42|@2425,1,@11979,@2423,@2133,@2138,@2148,@2424| 15748:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@11980,@2424| 15749:D13,624|fb2a323ba003043bf75f02323533362a353ba0033f2a362b372c382d391a6802220f220e220e220e221268062a2a1a5f020c3b2f2f2f2d68053022122212221222122212221222121a4d020c2a2a692708f715022a353ea0f879012a362b3629929103082936293ba06402013b032d2c36293529352a362b37280c2a693c2d2d2c6b2933696522122212221222122212221222121a010222137b0a132a31220d321afc010c29299291036129352a362a37293829299291034029352a362a353da003262a3632299291031929352a362a362d2aa003033c02082a250426031e183b6602013b646402013b0309292503511e3c3b02013b6502013c64030a2b250526041e5c3b02013b270402013c642903a62a341a92010c2b2a2a3ba00312293ba003043b5002041a8601103b503b02702a352b362b929103043b5002041a7801103b502b352c362c362d373b2d3b6a0b0800221b34342c222422210c5029352a362b372c382d392e3a2f2306302307303030303030303068082922292218222c1a3d010c22172a6922162a696422280c5022182217251c251c261a1e823b271a652f2211221122112211221122112211fae622127b0a123e2b692e2210221022102210221022102210facd0c2a2a6965656502952a353da0032e2a36faea220c343434220f68062a2afaa50c3d2a692d220f220f220f220f220f220f220ffa980c2a2a69270502612a362b372c38fac0220e220d220d220d221168062a2afa700c29352806a0032429362a372a2a692f2a69220f0c50312213221322132213221322132213fa5122147b0a143c2e2e2c6b2f2211221122112211221122112211fa360c2a2a69652705651f0800000000|@2427,1,@11981,@15751,@1936,@2426,@2428,@2429,@2430,@2430,@2419,@15754,@15750| 15750:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11986| 15751:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11982| 15752:D5,88|fb1f2e9291034d2e352f362a352b362c370b0800221033fa572c221522170c5029352a362b372c382d392e3a2f230630230730303030303030306808221422142b6a2216221d221d221dfa2c0c2a2a69271902013b1f0400|@880,1,@11983,@2051,@2428| 15753:D4,40|fb082c9291031e2c352d362a363c06293b692b2a6964300c502b30fa230c2a2a69270502013b4300|@880,1,@11984,@2429| 15754:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11985| 15755:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@11987| 15756:D14,280|fb0c2d299291031b29352a362a351a1f01a003052a68010207292503511e1a3b6502013b64293ba003471a0b01299291031a29352a362a35faf6a003052a68010207292503511e193b6502013b64293ba00303faeb103b503b5029352935fad0a003043b500203fadf103b50293765021529352935fab9a003043b500203fac8103b5029376403522e299291031a29352a362a35fabaa003052a68010207292503511e193b6502013b64293ba0030b280c3169faa30c3b64021d29352935fa90a003043b500203fa7f103b50280c3269fa860c2a370c646402013b280c316929fa7efa7c3bfa810c29fa75fa733b220c34fa7d0c2935280ca003043b500203fa77103b50293629343434fa740c33952a27081f0400000000|@2433,1,@11988,@60,@1652,@1701,@826,@70,@1707,@2434,@2440,@2452,@2501,@2432| 15757:D4,8|fb02fa1c10000000|@2436,1,@11989,@2435| 15758:D7,128|fb0d2b3ba203033c02042bfa8ba60303fa8e103b502b283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350502f2807b1293ebb3b292ba903033b020d2d2a3be450293cb125011e123b64fa3e220c220c220c316805220d2afa38220c7e0e00000000|@2441,1,@11990,72057594037927935,@2212,@15759,@1936| 15759:D11,288|fb152b35280fa003242b362c37292c1a26010c2b2d2e362f37303831391a20010c280f2a2c6a296801270502ec2b35280ca0034e2b3629352a362b382c392d23062e23073b061aff002a691a020133363437220c39220d38336806312a2c30faf70c2c350304faf802013b2a332b34343c220c220c6808280c2a69296801270e02972b352807a003222b362c372d382a352808a003112b2dface0c28072a2d2d6b2968016502013b66026e2b352808a003662b3629353ba003043b50025429353ca0030a2936292c360c5050024429353ea003073b2b370c5002372936293ba203033c0204292c38a80303fa83103b50293ebb2c392adc2b2807b729283fa903033b02033c2aba2b2ab830392e2be45026062c68016402013b42000000000000|@2443,1,@11991,@1936,@2444,@15765,@15766,@2440,@938,@2442,@2214| 15760:D9,224|fb1130929103d1303531362a353ba003282a372b382c392c220c220c220c220c220cfad40c2a220dfad60c3b3b2f2f2d6805292c692706029c2a353da0031a2a362a3333333333faaf0c2a34fab20c3d2a69292c692704027c2a353ea003232a362a3333333333fa8f0c2a33333333fa970c293232fa990c3e2a69292d69270502532a372b382b3434343434fa6a0c2a220cfa6c0c2c3ba203033c02032c33a80303fa74103b502c3ebb322adc2e2807b729283fa903033b02033c2aba2b2ab7293ba0910304fa5802013b3c2a34326b293269270b6502013b1f060000000000|@2446,1,@11992,@2444,@1936,@2447,@2450,@2445,@938| 15761:D8,104|fb182f9291035e2f3530362a362b3729352a362b382c392d23062e23073b06fa5f2a69fa632212221222112213336806312a2c30fa5a0c2c350304fa5b02013b2a332b34343c220c220c68083b220e2b6a220f2217221722172217fa430c2a2a69271202013b1f05|@880,1,@11993,@15763,@15762,@2440,@938,@2447| 15762:D5,144|fb0b293a2c2a929103043b500203fa98102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ba003033b025029353ca003082936292c362e7d0529353ea003063b2b372d7d042936293ba203033c0204292c39a80303fa4d103b50293ebb2c382adc2b2807b729283fa903033b02033c2aba2b2ab830382e2be42706644200000000000000|@2449,1,@11995,@953,@2214| 15763:D3,16|fb0529363b3b3ce34200000000000000|@2448,1,@11994| 15764:D6,96|fb102d929103512d352e362a362b372a3ba203033c02032a31a80303fa5a103b502a3ebb302adc2c2807b729283fa903033b02033c2aba2b2ab7293ba0910304fa3e02013b2931316a32220f220ffa380c2a2a69270c02013b44000000000000|@880,1,@11996,@2445,@938,@2450| 15765:D3,16|fb0529363b3b3ce34200000000000000|@2448,1,@11997| 15766:D5,144|fb0b293a2c2a929103043b500203fa98102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b64656529353ba003033b025029353ca003082936292c362e7d0529353ea003063b2b372d7d042936293ba203033c0204292c39a80303fa4d103b50293ebb2c382adc2b2807b729283fa903033b02033c2aba2b2ab830382e2be42706644200000000000000|@2449,1,@11998,@953,@2214| 15767:D5,40|fb0a2c9291031c2c352d362a352b362a30fa2d0c292b692d32fa2d0c2a2a69270702013b43000000|@880,1,@11999,@1936,@2442| 15768:D8,48|fb092d3ba203033c02042dfa3ba80303fa3e103b503b502d28403bdafa3a31312cfa3d31336807322afa3d2f7e0a0000|@2453,1,@12000,72057594037927935,@789,@15769,@2452,@1936| 15769:D17,664|fb1b2b35280fa0032a2b362c372a2c2d362e372f383039313a3223061a91020c2a2d1a93020c280f2b2b6a2968012705f760022b35280ca0035d2b360b0800323533363437220c38220d39220e3a220f2306221023073122133622143722153822163922173a221823061a53020c5029352a362b372c382d392e3a2f230630230730303030303030306808280c2a692968012714f7fc012b352808a003a82b360b02002c353ba0030c3c2d692a2a453b46505002672c353ca003112c36292f360c2b2a35452a3646515002502c353ea0030f3b2e370c2a1aee01452a465050023b2c362e38932a2aa903041ae201103b503b502f382b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ca00305293ba002013b03043b5002041aa301103b502a3628082a692968012708f74d012b352807a0f844012b362c372d382a35280ca003612a362937293ba003542a3b69293b69642f36303731383239333a3423061a65010c29929103043b5002041a6001103b50293529352a3631331a5a010c2a1a5d010c293ba003032a02062a2a1a57010c28072a2f220c6b296801270802013b6502d32a352808a003cb2a360b02002c353ba0030c3c2d692a2a453b46505002652c353ca003112c362932360c2b2a35452a36465150024e2c353ea0030e3b31370c2afaca452a465050023a2c363138932a2aa90303fabf103b503b5032382b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a360b02002d353ca0030f2d3628082a692b2a452f46505102092d362a2a452e46505029352a36220d220ffa9a0c2afa9e0c293ba003032a02052a2afa990c28072a2f22116b296801270f02013b6602013b4200000000|@2455,1,@12001,@2456,@1936,@2485,@2051,@829,@2493,@2460,@2207,@2496,@2497,@2498,@2499,@2500,@2454| 15770:D12,504|fb15329291f8ed01323533362a353ba0032f2a372b382c3929220e1af2010c3b3b2e2e2d68052e22102210221022102210221022101ae0010c2a2a692706f7b1012a353da003272a3629220c1ac1010c3d2a692c220e220e220e220e220e220e220e1ab3010c2a2a692704f784012a353ea003e02a36293c2a9291032d2a352b362a35293ba003122b372937293ba003052e3ca002013b6502013b2b2a2506250626041e2b3b270402012965037f291a6e010c3434343434341a6c010c292b2a3ba00313293ba003043b5002041a6001103b503b50023f2a352b362b929103043b5002041a5101103b502b352c362a362d68012211932b2aa903041a4201103b503b5022122c3b2de3502e2d2509250926071e532607512b220d220d220d220d220d220d220dfaf0220e7b0a0e293434343434341a11010c3e2a692c220e220e220e220e220e220e220efacc0c2a2a696664029e2a362b372c382b3ba003142935280ca0030a29362937293ba06502013b02013b035a29362b68012a2a69293b6965220e220e220e220e220e220efa980c29929103043b500203fab4103b502935296801220e932f2aa90303fa92103b503b50220f303b2de350312213221322132213221322132213fa4d22147b0a1429220efa3b0c3c3b2d2c6b2e2210221022102210221022102210fa2c0c2a2a6966666502013b1f08|@2458,1,@12002,@1936,@2456,@2459,@2460,@2430,@2430,@864,@2457,@2207| 15771:D4,40|fb0a2b929103192b352c362a362b372a68012a2a692dfa280c2a2a69270702013b42000000000000|@880,1,@12003,@2459| 15772:D17,512|fb1d3b06321a10020c3329929103fb29352a362a3529382929929103de29352a362a353da003232a3632299291031629352a362a2da003033c0207292503511e153b6502013b646402013b03043b5002a10b02002d353ba0030c3c2e692a2a453b46505002672d353ca003112d362922160c2b2a35452a3646515002502d353ea0030f3b22140c2a1a9501452a465050023b2d362213932a2aa903041a8901103b503b5022142b3bdb293ba0030c3c31692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020d2a362922101a4e010c3c2a69652a22101a4b010c3b502607292503511ede5102023b50502b250526041ef93b270402013b642b35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a0d010c3b2b299291031229362b3caa292b25042504511e113b6502012a65220f2a30221122112211220c22122212221234fae40c2210fae70c293b2a9291031b2a352b362a2ca603032a02012b2a2a2505250526031e1a3b66020129652afac70c3e2d69293b6928142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa9e0c020129280f2c2b6a3c06303caa2bfa953b3bfa993c2f3c68082922162d2219fa940c3b2d0c28062a2c6a221e3b2b2214fa8b221c7b061f000000000000|@2462,1,@12004,@2463,@2051,@829,@2053,@2465,@2466,@2467,@2481,@2482,@1083,@2483,@1437,@2432,@2461| 15773:D4,40|fb082b9291031e2b352c362a36293ba003062afa2b2f7d0629352bfa230c2a2a69656602013b4200|@2464,1,@12005,@2463| 15774:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@12006,@2053,@2465| 15775:D5,24|fb052b9291030d2b3629fa240cfa292a696502013b420000|@880,1,@12007,@2466,@920| 15776:D5,96|fb17220c9291034f220c35220d360b03002e352f362b2214221422142214221422142214221422142214fa4c0c5029352a362b372b2b2b6a312216221622162216221622162216221622162216fa310c2a2a69270b02013b1f0b000000000000|@880,1,@12008,@2468,@2467| 15777:D8,192|fb18220e35220f3622103822113922122306221323073b2c299291031229362b3caa292b25042504511e113b6502012a6522123ba20303fa9f103b503b503b22132bfa9c0c3b06fa9f3022152c2e221722172217221734680afa952c69332b2b322212221422160c2c35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296522103ba00303330206332211fa5f0c2c220e3b2d2d3c221022106808221d3ba003033b0203221d35221d3b452a462b4727111f0d00|@2470,1,@12009,@1080,@2471,@15779,@15783,@2469| 15778:D4,32|fb082d2da003033b02142d2caa3b2a692f3caa293030fa200c2b2a6927044400|@1075,1,@12010,@2471| 15779:D4,48|fb100b02002e2a2e362f3730383139323a332306342307220c2308220d2309fa270c5029352a362a2a69270542000000|@2473,1,@12011,@2472| 15780:D10,320|fb0f33220d2a929103043b5002041a4701103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e263b64656529353da00323293634299291031629352a362a2da003033c0207292503511e153b6502013b646402013b031229331afe000c3c2a69220e2a4534466502ca0b02002c353ba0030c3c2d692a2a453b46505002622c353ca003112c3629220c0c2b2a35452a36465150024b2c353ea0030d3b330c2afac1452a46505002382c3632932a2aa90303fab7103b503b50332b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020b2a362934fa670c3c2a69652a34fa760c2a353ba003032a021f2a3629353ca003043b500203fa66103b50293629220daa3b2a693c2a6927042a220cfa580c22152b452a462709641f0b00000000|@2475,1,@12012,@953,@2053,@2051,@829,@2476,@2477,@2474| 15781:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@12013,@2053,@2476| 15782:D5,48|fb092c929103272c352d362a353ca003043b500203fa31103b502a36292faa3b2a692c31fa2a0c2a2a69270602013b43|@880,1,@12014,@2477,@2474| 15783:D3,8|fb02293642000000|@2480,1,@12015| 15784:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12016,@2469| 15785:D4,40|fb082b9291031b2b352c362a36293ba003033b020229352bfa260c2a2a69270502013b4200000000|@880,1,@12017,@2481| 15786:D4,32|fb082b929103162b352c363d2b6928082a692bfa230c2a2a69270502013b4200|@880,1,@12018,@2482| 15787:D5,40|fb0a2e9291031c2e362d2f3bfa320c292e69303caa2c2a3232fa2d0c2b2a69270502013b1f040000|@2484,1,@12019,@1039,@2461| 15788:D5,120|fb20319291036c313532362a362b370b0800323533363437220c38220d39220e3a220f23062210230731221d221d221d221d221d221dfa580c5029352a362b372c382d392e3a2f2306302307303030303030303068083b22142b6a2215221f221f221f221f221f221ffa2d0c2a2a69271802013b1f070000|@880,1,@12020,@2485,@2457| 15789:D5,88|fb0d3b06fa6a220f3333332e680622122afa65220f3133220c0c2b35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965220d2c452215463b472a482212493c4a22104b220f4c27051f0f00|@2487,1,@12021,@15790,@2486| 15790:D4,32|fb0c0b02002e2a2e362f3730383139323afa250c5029352a362a2a6927054200|@2489,1,@12022,@2488| 15791:D8,208|fb0e2f322a929103043b500203fad9103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b6465650b02002c353ba0030c3c2d692a2a453b46505002612c353ca003102c3629340c2b2a35452a36465150024b2c353ea0030d3b320c2afa8a452a46505002382c3631932a2aa90303fa80103b503b50322b3bdb293ba0030c3c30692d2a453b4650500211293529352a363b2b69302a452b46502604260329352a362a353ba003032a020b2a362933fa480c3c2a69652a33fa470c220f2b452a4627081f0700000000|@2491,1,@12023,@953,@2051,@829,@2053,@2490| 15792:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@12024,@2053,@2490| 15793:D3,8|fb023b4200000000|@2492,1,@12025| 15794:D5,40|fb0a2c9291031c2c352d362a352b362a30fa2d0c292b692d32fa2d0c2a2a69270702013b43000000|@880,1,@12026,@1936,@2496| 15795:D4,32|fb082b929103162b352c3628082b69293c692bfa230c2a2a69270502013b4200|@880,1,@12027,@2497| 15796:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12028,@2498| 15797:D5,40|fb0a2c9291031c2c352d362a352b362a30fa2d0c292b692d32fa2d0c2a2a69270702013b43000000|@880,1,@12029,@1936,@2499| 15798:D4,32|fb082b929103162b352c3628082b69293c692bfa230c2a2a69270502013b4200|@880,1,@12030,@2500| 15799:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12031,@2454| 15800:D13,352|fb23280c2f690b02002c3b2b321a68010c5029352a3633299291031b29352a362a351a5b01a003052a68010207292503511e1a3b6502013b64293ba0034b1a4701299291031b29352a362a351a3101a003052a68010207292503511e1a3b6502013b64293ba003041a2501103b503b50293529351a0901a003043b5002041a1701103b50293765021629352935faf1a003043b5002041aff00103b50293764034c34299291031a29352a362a35faf1a003052a68010207292503511e193b6502013b64293ba003082cfadd0c3b64021a29352935facaa003043b500203fab9103b502dfac30c2a370c646402013b2c35280da003043b500203fab5103b502c3629352a362b382c390b05003122182bfaa70c5029352a362b372c382d392d2d2d2d2d6805221c68013b220f299291031229362b3caa292b25042504511e113b6502012a6522112c2c2c22122224fa710c221f3b3b2ce350221f952217271d1f04|@2505,1,@12032,@2506,@60,@1652,@1701,@826,@70,@2666,@2746,@2749,@2504| 15801:D7,40|fb0e3b060b020032fa36fa3c3430fa402f220dfa430c5029352a36322b452a4627061f0400000000|@2508,1,@12033,@2509,@2515,@2517,@2507| 15802:D4,8|fb02fa1c10000000|@2511,1,@12034,@2510| 15803:D4,8|fb02fa1c10000000|@2516,1,@12035,@2510| 15804:D3,8|fb023b4300000000|@2511,1,@12036| 15805:D11,304|fb1b2f3ba203033c02052f1a3a01a803041a3c01103b503b502f28403bda303ba203033c0205301a1e01a803041a2001103b503b503028403bda313ba203033c0205311a0201a803041a0401103b503b503128403bda220c352806a0031e220c37220d332e2e2e22112211220ffae9220ffaed0c312a452b466502ad220c35280fa00324220c37220d332e2e2e22112211220ffac3220ffac70c2a2c32fac90c322b452a46660281220c35280ca00360220c360b04002e352f36303731383239333a342306220c230731221a221a221822142213fa82221afa960c5029352a362b382b2b3c22172217221522112211fa870c2a92919103033b020b220ffa812c3b6b293b696422112b452a46270b0219220c322d2d2d22102210220efa3a220efa3e0c302a453b4664661f0800000000|@2519,1,@12037,72057594037927935,@789,@2507,@2520,@2661,@2525,@2518,@394| 15806:D24,2264|fb1c34350a160047029b029203dc031a04d104f8042c00060577057d050f0632067706ca06ec069907b807f60762088a08aa083436220c37220d382a35280ca003682a362c2e2210221022102210221022102210221022101a95080c0b04002f353036313732383339343a220c2306220d230731221922192219221f221e221b221b1a73080c5029352a362b372b2b2b221622162216221c221c1a63080c2808332b220e6b270bf7a0012a352806a0036d2a362b3729299291031929352a362a3534a003052a68010207292503511e183b6502013b6429929103172935293533a003043b5002041a1e08103b5029376402013b3b302b221022102210221622152212221222192212221d1a03080c28072e2e6a28082b2b326b2706f72c012a352808a003f02a3629353ea003293b2d220c220c220c221222123422162214221122111ad3070c3b340c28092a6928082c2b306b6602bc29353ca0031229360b02002c3b2b22110c5029362704022a29353ea003033b022129353ba003033b02182936220c932a2aa903041a9307103b503b50220d2b3bdb653b2e2b220e220e220e221422132210221022172210221b1a76070c2b353ca003122b360b02002c3b2b22130c5029352704023b2b353ea003063b220c0c022f2b353ba0030e2b36293b220d0c503b2a6964021b2b36220f932a2aa903041a2807103b503b5022102b3bdb3d2a696628092a6928082c2b316b27046402352b2d220f220f220f220f220f220f220f220f220f1a04070c2b220f220f220f220f220f220f220f220f220f220e0c28082b2b2e6b6566f784063436220c37220d3829220e220e220e220e220e220e220e220e220e220d0c2c220f220f220f220f220f220f220f220f220f220e0c2c221022102210221022102210221022102210220f0c3b2b2b2e6b2706f73006343629352a362b382c392d3729353ba0036829362e22122212221222122212221222122212221222110c2e22132213221322132213221322132213221322120c2e22142214221422142214221422142214221422130c2e22152215221522152215221522152215221522140c2c2c2f2d2d68053c2a692706027829362e22122212221222122212221222122212221222110c2e22132213221322132213221322132213221322120c2e22142214221422142214221422142214221422130c2e22152215221522152215221522152215221522140c28092e3c6a3e2e2e2c6b2809303c6a3e2e1aae052c6b28062e2d2c6b27092706f739053436220c3729220d220d220d220d1a96050c2b220e220e220e220e220e220e220e220e220e220d0c2b2b2f2211221122112211221122112211221122111a6f050c3d2b2b6a2705f7ef043436220c37220d382b220e220e220e220e220e220e220e220e220e220d0c2b220f220f220f220f220f220f220f220f220f220e0c3e2b2b2e6b2705f7b1043436220c37220d38220e3929352a362b372b22122212221222122212221222122212221222110c2b3ba003033b021c2b352922142214221422142214221422142214221422130c296801652a2a2d6a3035313632372b22182218221822182218221822182218221822170c2b3ba003033b021c2b3529221a221a221a221a221a221a221a221a221a22190c296801652a2a2d6a220e221b221b221b221b221b221b221b221b221b221a0c3f22112b2d3468052711f7fa033436220c37220d382b2b2b221022102210221022102210221022102210220f360c1a54042f7d0f3436220c3728072b2b6a65f7c503343629353ca0031229360b02002c3c2b220e0c5029352704024f29353ea003053c300c024429353ba0030d2936293c310c503b2a69640231293634932a2aa903041a0704103b503b50220c2b3b3ce3220c932c2aa903041ab903103b503b50220d2d3bdb3d2a69270528092a6965f754031adf03f74e033436220c37220d38220d35220e35293caa22103b3b2ce32210932e2aa903041ab203103b503b5022112f3b3be3221193302aa903041a9c03103b503b502212313b32e3221293322aa903041a8603103b503b502213333b3be33422182218221822182218221822182218221822170c220d22192219221922192219221922192219221922180c280c2a2c220e6b270ff7bc023436220c372a220d220d220d220d220d220d220d220d220d220c0c402a2c6a66f7990234360b04002e352f36303731383239333a342306220c230731221522152215221b221a221722171a95020c5029352a362a2a3c221122112211221722171a870222127b0a143436220c3729352a362b372b221022102210221022102210221022102210220f0c2b3ba003033b021c2b352922122212221222122212221222122212221222110c296801652a2a2d6a280e312b6a2708f701023436292b220d220d220d220d220d220d220d220d220d1a7e020c280f2a6965f7df013436220c373d2a69293b69293ba003032c02062c2a1a65020c65220d220d220d220d30220e220e220e220e220e1a55020c0b02002c3b2a929103043b5002041a4b02103b502a352b36293ba003392a353da003043b5002041a3a02103b502a362c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2a452b465051020e2a2c692a2a2505250526031e5c50515129352a362a3ba0030329020528102b2b6a2708f73201343629220c220c220c220c220c220c220c220c220c340c28112a6965f713013436220c37220d3829220e220e220e220e220e220e220e220e220e220d0c2c220f220f220f220f220f220f220f220f220f220e0c28122a2e2d6b270502d53436220c37220d3829352a362b372b22112211221122112211221122112211221122100c2b3ba003033b021c2b352922132213221322132213221322132213221322120c296801652a2a2d6a3022142214221422142214221422142214221422130c2813332b2d6b270a02693436220c37220d382a220e220e220e220e220e220e220e220e220e220d0c28142d2b2d6b270402413436292b220d220d220d220d220d220d220d220d220dfae70c28152a696502213436220c372a220d220d220d220d220d220d220d220d220d220c0c28162a2c6a661f0a00000000|@2523,1,@12038,@2524,@2525,@2518,@826,@2550,@2552,@829,@2553,@2554,@2555,@2556,@2557,@2558,@864,@2582,@2583,@2584,@2585,@2602,@2605,@2522| 15807:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa260c2a2a69270702013b1f0b000000|@880,1,@12039,@2524| 15808:D10,216|fb1a3b063b063b06fae62c2c220e220e220e220d220f22196809fadc2b693b06293b3bfadbe3503b2214299291031229362b3caa292b25042504511e113b6502012a65293ba203033c020429fabaa80303fabd103b503b502928403dda3b060b0200221d3232221a30faad33692f221522170c502935220c352f933b2a293ba003032a0226293cb22a3cb22b3cb2220c2a3bdb293ba003052b2f6902012e292e2507250726051e293b270565221dfa700c31352e22233b2d2d22213b6807280d2a69221135221e2b4531462a472f4827151f100000000000|@2527,1,@12040,@15809,@15811,@2532,72057594037927935,@789,@15813,@2526| 15809:D7,192|fb0b2923082e2a929103043b500203fac7103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b64656529353ca0031229360b02002c322b31380c5029362704025729353ea003082d2b390c503b024929353ba0030c2936292f2d3a0c503b64023729362e031a2b2307932a2aa90303fa67103b503b502c23072b3b3ce36402013b2c2306932b2aa90303fa54103b503b502d23062c3bdb662b36352c37352a2a2e30363137fa410c3c2a69312a452e462706440000000000|@2529,1,@12041,@953,@864,@829,@2528| 15810:D4,160|fb0b2f9291037c2f3530362a30a003033c02582a353ba003132f353ba0030a2a3630362a2aa06502013b023f2a353ca003132f353ca0030a2a3630362a2aa06502013b02262a353da003132f353da0030a2a3630362a2aa06502013b020d2a353ea003062f353ea002013b0305303cab020e303cab2a2a323232fa3c337b070a65021a2c352e2a692e3b3b2ce32e35293caa303b3b2ce350293cab27051f0500|@2530,1,@12042,@2528| 15811:D4,24|fb052b030929363b3b3ce35002023b50fa1e420000000000|@2531,1,@12043,@937| 15812:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@2534,1,@12044,@2535,@2536,@2535,@2543,@2535,@2533| 15813:D5,56|fb072b03033c02162936932d2aa90303fa3e103b502a362e3bdb293ca0652a36932e2aa90303fa30103b502b362f3b2de365430000000000|@2511,1,@12045,@829,@864| 15814:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12046,@2526| 15815:D8,440|fb20220d3ba003043bf7aa01220d35220e362a352935280ca0039429362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429910b04003135323633373438220c39220d3a220e2306220f23073122202220222022202220222022201a64010c5029352a362a2a32221c221c221c221c22191a56010c293469221e3caa292210221f221f221f221f221f221f221f221f221f221f221f1a3a010c2b2a69270ff7060129352808a003c229362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429912c353ca003122c360b02002c2e2b22190c502935270402572c353ea003062922120c024b2c353ba0030e2c36292b22130c503b2a696402372c362a03182210932a2aa90303fac5103b503b5022112b3b3ce36402013b220d932b2aa90303fab4103b503b50220e2c3bdb3d2a69270428092a69292e6922183caa293322192219221922192219221922192219221922192219fa700c2b2a692709023d2b362a30220e34220f2214221422142212221222110c292b6922143caa292f22152215221522152215221522152215221522152215fa310c2b2a692705661f0d|@2551,1,@12047,@2525,@2518,@2550,@864,@829| 15816:D6,280|fb1b220c3ba003043bf70301220c35220d362a352b3529352808a00309293629353ba06402013b03a82c35293629362f3622152ba0912c353ca003122c360b02002c2e2b221b0c502935270402572c353ea003062922140c024b2c353ba0030e2c36292b22150c503b2a696402372c362a03182212932a2aa90303fab3103b503b5022132b3b3ce36402013b2212932b2aa90303faa2103b503b5022132c3bdb3d2a69270428092a69292d6922193caa29220c221a221a221a221a221a221a221a221a221a221afa770c2b2a69270a023c2c362b34220f220f220d2215221522152210221022150c292b6922143caa29302215221522152215221522152215221522152215fa390c2b2a69270527041f0c00000000000000|@2551,1,@12048,@864,@829,@2552| 15817:D8,440|fb20220d3ba003043bf7aa01220d35220e362a352935280ca0039429362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429910b04003135323633373438220c39220d3a220e2306220f23073122202220222022202220222022201a64010c5029352a362a2a32221c221c221c221c22191a56010c293469221e3caa292210221f221f221f221f221f221f221f221f221f221f221f1a3a010c2b2a69270ff7060129352808a003c229362c362211299291031729352a362a2217a003033c0207292503511e163b6502013b6429912c353ca003122c360b02002c2e2b22190c502935270402572c353ea003062922120c024b2c353ba0030e2c36292b22130c503b2a696402372c362a03182210932a2aa90303fac5103b503b5022112b3b3ce36402013b220d932b2aa90303fab4103b503b50220e2c3bdb3d2a69270428092a69292e6922183caa293322192219221922192219221922192219221922192219fa700c2b2a692709023d2b362a30220e34220f2214221422142212221222110c292b6922143caa292f22152215221522152215221522152215221522152215fa310c2b2a692705661f0d|@2551,1,@12049,@2525,@2518,@2553,@864,@829| 15818:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa260c2a2a69270702013b1f0b000000|@880,1,@12050,@2554| 15819:D5,120|fb152f929103682f3530362a35293632353335293caa220c3b3b2ce3220c932e2aa90303fa6a103b503b50220d2f3b3be3220d93302aa90303fa55103b503b50220e313b32e3220e93322aa90303fa40103b503b50220f333b3be3220c2214221422142214fa310c332a69270f02013b1f05000000000000|@880,1,@12051,@864,@2556| 15820:D4,104|fb18220d92910306220c929102013b034e220d35220e36220e35220f362c3529372e362a221222122212221222122212221222122212221c0c2e2a69292c6931302217221722172217221722172217221722172217fa290c2a2a69270b02013b1f0c000000000000|@2132,1,@12052,@2557| 15821:D15,480|fb222b353ca003052b36f7ce012b362c372d382e3929929103213b2c299291031229362b3caa292b25042504511e113b6502012a65293fa66402892b929103043b5002041ab101102b352936292a690b0200312d2a9291032d2a352b362a362c352d362b2ba303032b02012a2c2ba703032c02012a2a2a692f2a250a250a26081e2c26080209292c2a35452a3646515129352a363b34299291031229362b3caa292b25042504511e113b6502012a65292807a6030c2a2cb2293eb42b2aa96502013b270929f807013b2d299291031229362b3caa292b25042504511e113b6502012a65293ba203041a1501103b503b2a1a15010c2e2a1a17010c291a1a011a1f010c291a22010c291a25010c0b0300349291030d34352a3c453b462a47505002632d929103043b5002041a0b01102d352936292a690b0200332d2a9291032d2a352b362a362c352d362b2ba303032b02012a2c2ba703032c02012a2a2a692f2a250a250a26081e2c26080209292c2a35452a3646515129352a36313b452b462a4750260829352a362b373b312b2dfab00c3b2a299291031229362b3caa292b25042504511e113b6502012a652b2db2293cb12b2aa003043b500203fa8b1022152d22153133680528052a692712020a2c2b2f2efa7b347b060827054200000000|@2560,1,@12053,@2207,@1080,@2561,@2562,@2565,@2568,@2573,@2574,@2207,@2576,@2578,@2559| 15822:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c2e2a69654300|@1075,1,@12054,@2561| 15823:D6,72|fb092c3ba003172b3ba003043b5002092936fa4c3bfa516b103b503b02282c352d362d929103043b5002092b36fa313bfa3e6b103b502d352e362c2b692c2b300c2a2a6927064300|@2564,1,@12055,@2171,@2563,@2563| 15824:D4,8|fb03fa1c2c694200|@2566,1,@12056,@15825| 15825:D3,32|fb092b352c362b36352c36362a362d362a2aa003052b2ea402032a2aa3270642|@2567,1,@12057| 15826:D4,16|fb062c3b2dfa212e7b05040000000000|@2570,1,@12058,@2569| 15827:D5,72|fb102d929103382d352e36293ba003052a2f6902272a2e0c0b02002d2a2efa400c5029352a362a220c220cfa3b0c312a692b2a220efa31220f7b050f6502012c4400000000000000|@2572,1,@12059,@2571,@2569| 15828:D5,72|fb0c2d929103322d352e362a2e0c0b02002d2a33fa4a0c5029352a362e030c302b69220c2a452b4664020a302a69220c2c452a46642708020afa2d2d2a35452a3646644400000000|@2128,1,@12060,@2571,@2127| 15829:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12061,@2573| 15830:D4,64|fb0a2b929103342b352c36299291032529352a362a362d36292ba0030a2bfa380c2f2a6964020a2c2c69fa2c0c2f2a6964270402032a3b696502013b42000000|@2575,1,@12062,@2574| 15831:D4,96|fb0d2d3ba0031c2c2cb22f2aa703033b020e2f3cb1293b3030fa5d0c3b2a69656402352d352e362a352b363230b1292ba003152b6801343cb1292f220c220cfa370c2b2a6966020e333cb129343434fa270c3b2a696527051f04000000000000|@2577,1,@12063,@2576| 15832:D5,64|fb0b2e929103352e352f362a352b36319291030b313528142b332c6b64020c28072a3b6a3e322bfa2f6b642c333333fa2f0c28062b2e2c6b270602012b1f0400|@2581,1,@12064,@1018,@2559| 15833:D4,80|fb13220c92910342220c35220d362a352b362a220f220f220f220f220f220f220f220f220f22190c292b692d2212221222122212221222122212221222122212fa260c2a2a69270702013b1f0b000000|@880,1,@12065,@2583| 15834:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12066,@2584| 15835:D18,848|fb27220c9291f84303220c35220d362a353ba0039c2a372b382c39221035221135293caa22133b3b2ce3221393302aa903041a3303103b503b502214313b3be3221493322aa903041a1d03103b503b502215333b32e3221593342aa903041a0703103b503b502216220c3b3be3220d221b221b221b221b221b221b221b221b221b221b1aea020c34221c221c221c221c221b221b221b221b221b22210c3b220c220f6a3d2b69292d692b2a692712f798022a353da003622a362a220f220f220f220f220f220f220f220f220f220f1a9f020c2a2210221022102210220f220f220f220f220f22150c29352810a0031f29362a373d2a69292e69293ba003032c02092c2a1a7202220d7e16270402073d2a69292c696466f730022a353ea0039e2a3629220f220f220f220f1a53020c2b22102210221022102210221022102210221022101a2a020c2b220c220c220c22132212220e220e1a2f020c293b3b221322102210221022161a26020c0b02002c2a1a25020c5029352a362a9291910319291a1d020c313ba0030329020929321a170222117e1a6402202a1a14020c3e2a692b1a14020c333ba0030329020629341a0e020c2b2a692704270af78c012a372b382935280ca003f92936221035221135293caa22133b3b2ce3221393302aa903041a8401103b503b502214313b3be3221493322aa903041a6e01103b503b502215333b32e3221593342aa903041a5801103b503b502216220c3b3be30b0400220f3522103622113722123822133922143a221523062216230731222322232223222a2229222522251a7d010c5029352a362b372c3822209322162aa903041a0701103b503b50222122173b2de322182226222622262226222622262226222622262226faeb0c2d03033c021822259322192aa903041a3801103b503b502226221a3bdb6430302b222522252225222c222c1a24010c3c22182b6a292d69271a0287220f35221035293caa22123b3b2ce32212932f2aa90303fa8e103b503b502213303b3be3221393312aa90303fa79103b503b502214323b32e3221493332aa90303fa64103b503b502215343b3be3220c221a221a221a221a221a221a221a221a221a221afa490c34221b221b221b221b221a221a221a221a221a22200c3c220c2b6a292c69270d656502013b1f0b00|@2587,1,@12067,@864,@2585,@2588,@2589,@2590,@2591,@2594,@2595,@2596,@2597,@2601,@2586,@2525,@829,@2518| 15836:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12068,@2588| 15837:D5,112|fb142f929103632f3530362a3631353235293caa343b3b2ce334932e2aa90303fa66103b503b50220c2f3b3be3220c93302aa90303fa51103b503b50220d313b32e3220d93322aa90303fa3c103b503b50220e333b3be3342213221322132213fa2e0c332a69270e02013b1f05000000|@880,1,@12069,@864,@2589| 15838:D6,152|fb1b329291038c323533362a362b370b04002e352f36303731383239333a342306220c230731221a221a221a221a221a221a221afa7a0c5029352a362b372c382a0319221293342aa90303fa6b103b503b502213220c3b3ce36402013b221293220c2aa90303fa50103b503b502213220d3b2ee3220d30306a220f221a221a221a221a221a221a221afa350c2a2a69271202013b1f080000|@880,1,@12070,@2525,@864,@2590| 15839:D7,168|fb143292910379323533362a352b362c3734932c2aa90303faa6103b503b50220c2d3bdb033d2b2b3c220e220e220e2212220ffa930c32932e2aa90303fa81103b503b50332f3bdb292c693122133c22132213221322132213fa750c2a2a69270502192e220f692e2a221022102210221022102210fa5922117b0a112706021f303ba0030c312f2f2f3330fa4b317b080a313b3b3232323232fa35337b0a0a1f0800000000000000|@2593,1,@12071,@829,@2518,@2591,@2592| 15840:D6,80|fb113092910344303531362a352b362c372a2a3b220e220e220e220e220efa480c31932d2aa90303fa46103b503b50322e3bdb292c693022102210221022102210fa350c2a2a69270a02013b1f060000|@880,1,@12072,@2518,@829,@2592| 15841:D5,72|fb0d2c929103352c352d362a362935280da00b02002e2afa470c5029352a362e030c312b69220c2a452b4664020a312a69220c2c452a46642709020afa2a2c2a35452a3646644300|@2128,1,@12073,@2594,@2127| 15842:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa220c2a2a69270602013b42|@880,1,@12074,@2595| 15843:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12075,@2596| 15844:D5,48|fb0a2b929103262b352c362a352b362935280da003043b500203fa2c1029362b2a692dfa2b0c2a2a69270702013b4200|@880,1,@12076,@2598,@2597| 15845:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa220c2a2a69270602013b42|@880,1,@12077,@2601| 15846:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12078,@2586| 15847:D4,72|fb10220c9291033b220c35220d362a220d220d220d220d220d220d220d220d220d22170c2a220f220f220f220f220f220f220f220f220f220ffa250c2a2a69270402013b1f0b0000|@880,1,@12079,@2522| 15848:D9,432|fb18220c34343434343434343433360c220c352805a00324220c36220d37220e382b2b2b22112211221122112211221122112211221122100c66021b220c220c220c220c220c220c220c220c220c220c34360c3c2a6964220f220d220d220d220d220d220d220d220d220d220c360c3b06293b3b1a5101e3502a352814a003142a362b372c382968012c2c2b6a296801270502772a353ea003702a362b372c3829352809a003082936293ba06402013b03542b352807a003222b3629920318299203043b5002041a0601103b50292c3b6a2968016402013b6402292a352807a003212a3629920317299203043b500203fae6103b50292d3b6a2968016402013b6402013b02013b6602013b299291038b293529352a362b3730353ca003123036322d69293b693b2e2b2e30680566026730363137323833392c2ffaa40c2e2ba003033c02182e929103122a9291030a2e352b352a2aa06502013b02013b2a92910305293ca002013b0316220e32692efa770c2a2a693b322b32220d6805660215220e3269293b69220ffa650c3b342c2c220d68056627062704020e2cfa520c28062d302c6b3c2a696527051f0c000000|@2609,1,@12080,@2610,@1048,@1048,@2659,@2608,@2558| 15849:D15,168|fb102b363ca20304fab602972b35293ba00304fab3028b2c363ca20304fab102812c3529352e363cab2a2a69faaa352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa8da003033c020d29fa8ca003033c020429fa8ba06402013b9102013b02013b03162afa8269fa872a69fa8b2a693b3e3c3b2d68056602012a64020129293b69fa7d2a69fa812a693b3c3b3b2d68052709644200000000|@2612,1,@12081,@2535,@2613,@2535,@74,@594,@595,@596,@2624,@1500,@2627,@1323,@2611| 15850:D21,496|fb122b363ca203061afd01f7da012b3529353ba0038d2c3529362e363cab2a2a691aec01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ace01a003033c020f291acc01a003033c0205291aca01a06402013b9102013b02013b03192a1ac001691ac4012a691ac7012a693b3e3c3b2d68056602012a64020129293b691ab8012a691abb012a693b3c3b3b2d68052709f744012c363ca203061aac01f738012c3529353ca0038c2d3529362f363cab2a2a691a4b01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2d01a003033c020f291a2b01a003033c0205291a2901a06402013b9102013b02013b03192a1a1f01691a23012a691a26012a693b3e3c3b2d68056602012a64020129293b691a2f012a691a32012a693b3c3b3b2d6805270902a32d363ca203051a240102982d3529353da003832e35293630363cab2a2a69faad352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa90a003033c020d29fa8fa003033c020429fa8ea06402013b9102013b02013b03162afa8569fa8a2a69fa8e2a693b3e3c3b2d68056602012a64020129293b69fab02a69fab42a693b3c3b3b2d68052709020c2e363ca20304faa70202faab6464644200000000000000|@2622,1,@12082,@2535,@75,@594,@595,@596,@2624,@1500,@2627,@1323,@2628,@2535,@1323,@2636,@2535,@1323,@2643,@2535,@2621| 15851:D4,16|fb052b35293cfa200c3e2a6965420000|@274,1,@12083,@801| 15852:D4,176|fb092c352809a003072b352809a002013b036f2c362c362a2aa003033c02582a353ba0031329353ba0030a2a362a362a2aa06502013b023f2a353ca0031329353ca0030a2a362a362a2aa06502013b02262a353da0031329353da0030a2a362a362a2aa06502013b020d2a353ea0030629353ea002013b03052a680102013b65022c2c3540a003062b3540a002013b031c2c362d372d362e372b2aa09103033b02072c2bfa22317e08270402013b4300|@2660,1,@12084,@2659| 15853:D4,32|fb092b929103162b352c362a352b362a2a692cfa230c2a2a69270602013b4200|@880,1,@12085,@2608| 15854:D8,136|fb092d352814a0033c2d3629fa922f2ffa960c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b020bfa77fa7d2b3b6b293b696465023e2d352808a003362d3629353da0032a29362e932a2aa90303fa61103b503b502f2b3bdb2992919103033b020a2ffa442b3b6b293b69646602013b6402013b4400000000|@2663,1,@12086,@2661,@2662,@24,@394,@829| 15855:D4,40|fb092e929103172e352f362a2f2f320c2a313131fa2a0c2a2a69270402013b1f0400000000000000|@880,1,@12087,@2662| 15856:D4,104|fb113235280da00357323629352a362b382c392d3a220e220d220f220e220e220e220efa5b0c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965220f03033c02042992919130302c3131312f6807280d2a69270a0201321f080000000000|@2665,1,@12088,@2664| 15857:D6,144|fb0c319291037f313532362a353ca003132a360b02002c220d2b22100c502935270402512a353ea0030531310c02462a353ba0030d2a362933320c503b2a696402332a363203162f932a2aa90303fa58103b503b50302b3b3ce36402013b2f932b2aa90303fa49103b503b50302c3bdb3d2a6927042a343434343434fa3a0c2a2a69270402013b1f0700000000000000|@880,1,@12089,@864,@829,@2664| 15858:D179,3832|fb402b350a17007b00b90034017601b70172036f05b4052e00c2053c0619071f07b0075509b30a070b660b830b290c930d130e560e2b362c372d382b1ad10e0c291ad40e0c1ad80e2a693b3c3c3b2d68052e1ad30e0c2e3ba003051ad20e02031ad50e2b3b691ad70e2a692b2a691ad70e2a692e2a693b3e3b3b2d6805270ef7730e2b362c372d382a3b692c2a692b2a69291abb0e0c291abe0e0c1ac20e2a693b3c3c3b2d6805293b691abb0e2a691abe0e2a693b3e3b3b2d6805270df7350e2b3629352a362b372c382d392b0a07000e00130018001d00220027002c001a970e021c1a9a0e02171a9d0e02121aa00e020d1aa30e02081aa60e02031aa90e3e2a692c3b692f2a69312a692e2a69291a9e0e0c291aa10e0c1aa50e2a693b3c3c3b2d6805293b691a9e0e2a69332a693b3e3b3b2d68052713f7ba0d2b362c37291a8d0e0c291a900e0c1a940e2a693b3c3c3b2d68052e1acf0d0c291a8a0e691a8e0e2a691a910e2a691a940e2a692e2a693b3e3b3b2d6805270cf7780d2b362c372d38291a810e0c3e2a692c3b692e2a69291a7b0e0c291a7e0e0c1a820e2a693b3c3c3b2d6805293b691a7b0e2a69312a693b3e3b3b2d6805270ef7370d2b362c372d382e392c3ba003051a620e021a2c3ca003051a600e02102c35293ca003051a5c0e02031a5f0e64293b3bef293ba003051a5a0e0248293cb1292810b1293cb2292808b4291a4e0ea503043b5002041a4c0e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c95502c27083e2a692d352e362f372b1adb0c0c2b9291030a2b35291acf0c0c6402031a080e2b9203052b3ba202052b942811a0030a1afd0d2c1a010e0c02012b293d1a000e0c3e2a69291a000e691a040e2a691a070e2a691a0a0e2a69302a691a0a0e2a691a0d0e2a691a100e2a69220c2a691a0f0e2a691a120e2a693b3c3c3b2d6805221935221a36221b372b1a5c0c0c2b9291030a2b35291a500c0c6402031a890d2b9203052b3ba202052b942811a0030a1a7e0d2c1a820d0c02012b293d1a810d0c3e2a69291a810d691a850d2a691a880d2a691a8b0d2a69302a691a8b0d2a691a8e0d2a691a910d2a69220c2a691a900d2a691a930d2a693b3c3c3b2d6805222e1ae50b0c291a880d691a8c0d2a691a8f0d2a692d2a691a8f0d2a691a920d2a69221b2a691a910d2a6922312a693b3e3b3b2d6805273af77c0b2b3629352a362b372c382d392d1a9f0b0c2b9203052b3ba202052b942811a0030a1ad30c2c1ad70c0c02012b293d1ad60c0c293b3bef293ba003051a490d024b28072ab1292810b1293cb2292808b4291a8c0ca503043b5002041a8a0c10292841bd2a3cb22a2a3b3bf02b3b3b32f0501a140d28082d28082807ec503128082d280f34ec502b95502b27072e03051afe0c02031a010d2a3b3bef2a3b3bef2a3ba003032b0254293ba003032c024c2a2ab1292810b1293cb2292808b4291a1f0ca503043b5002041a1d0c10292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c27083e2a69220d1a9d0c0c220d1aa70a0c293b691a980c2a691a9b0c2a693b3c3b3b2d68053d2841bd293b28083bf02a3b3b2807f0502a28082829e4502a28092820e4502a40287be4502a280b2843e4502a280c2841e4502a280d2853e4502a280e2845e4502a95502a3b3bef293ba003051a4a0c0248293cb1292810b1293cb2292808b4291a5e0ba503043b5002041a5c0b10292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a287de4502c95502c27083e2a69293b691aff0b2a69302a691aff0b2a69293ba00304220e0207220e2a1af60b0c1afa0b2a6922112a691af90b2a69221c2a691af80b2a693b3c3c3b2d68052725f77f092b362c372d382b1aa8090c2b1aa3090c2b1a9e090c291ad90b691add0b2a691ae00b2a692d2a691ae00b2a691ae30b2a69312a691ae30b2a693b3c3c3b2d6805270ef73a092b36291ad70b0c3e2a6965f72c092b3629353ea0030d1acc0b1ad10b0c3e2a6964026129353ca0031d2936293c1a950a0c291ac00b691ac40b2a69651aae0b0c3e2a6965023e29353ba0031d2936293c1a720a0c291aad0b691ab10b2a69651a8b0b0c3e2a6965021b2936293c1a550a0c291aa00b691aa40b2a69651a6e0b0c3e2a696564f7b2082b362c37293c1a340a0c293b3bef293ba003051a870b024b28092ab1292810b1293cb2292808b4291aea09a503043b5002041ae80910292841bd2a3cb22a2a3b3bf02b3b3b32f0501a520b28082d28082809ec503128082d281134ec502b95502b2707293b3bef293ba003051a360b0250293db1292810b1293cb2292808b4291a9209a503043b5002041a900910292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ce4502c2a3cb12820e4502c95502c27083e2a69301a1d080c291ae00a692b2a693b3b3b3b2d6805270bf7d5071ad50af7cf072b362c372d382b1af8070c2a3c1a4a090c293b3bef293ba003051abd0a0249402ab1292810b1293cb2292808b4291a0109a503043b5002041aff0810292841bd2a3cb22a2a3b3bf02b3b3b32f0501a890a28082d280840ec503128082d281234ec502b95502b27073e2a692f1a93070c291a6e0a691a720a2a692c2a69312a691a6f0a2a693b3e3b3b2d6805270ef73e072b3629352a362b372c382d392e3a2f23063e2f692a3ba003051a4d0a02031a500a293b3bef293ba003051a4c0a02523e2ab1292810b1293cb2292808b4291a6008a503043b5002041a5e0810292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082843e4502b2809284ce4502b40283de4503128082d280b34ec502b95502b27073e2a69303c1a40080c293b3bef293ba003051aeb09024b28082ab1292810b1293cb2292808b4291af607a503043b5002041af40710292841bd2a3cb22a2a3b3bf02b3b3b32f0501ab60928082d28082808ec503128082d281034ec502b95502b27073e2a69220c1a9e090c1aa2092a693b3c3b3b2d6805220d3ba003051a780602031a7b06293b691a8d092a693b3c3b3b2d680522141a87090c3d2841bd293b28083bf02a3b3b2807f0501a7a0928082c28082806ec502a280e2828e4502a95503e2b692c1a68090c291a6b090c2b2a693b3c3c3b2d6805221e1a13060c291a5e09691a62092a692c2a69220c2a691a5e092a6922122a691a5d092a6922172a69221c2a691a58092a6922222a691a57092a691a5a092a693b3c3c3b2d6805272ef799052b362c372a350a0900240029002e00330038003d004200120054002a36293ba003051a2f0902031a32096402331a3409022e1a370902291a3a0902241a3d09021f1a4009021a1a430902152a36293ba003051a3f0902031a42096402031a4409293b3bef293ba003051a400902593f2ab1292810b1293cb2292808b4291a7c06a503043b5002041a7a0610292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808284ce4502b2809286fe4502b402861e4502b280b2864e4503128082d280c34ec502b95502b27073e2a692d352e362f372b1af8040c2b9291030a2b35291aec040c6402031a25062b9203052b3ba202052b942811a0030a1a1a062c1a1e060c02012b293d1a1d060c3e2a69291a1d06691a21062a691a24062a691a27062a69302a691a27062a691a2a062a691a2d062a69220c2a691a2c062a691a2f062a693b3c3c3b2d6805293b691a68082a6922162a693b3e3b3b2d6805271df73b042b363d2841bd293b28083bf02a3b3b2805f0502a2808284ce4502a2809284fe4502a40284fe4502a280b2850e4502a280c2828e4502a95503e2b692c1a1f080c291a22080c2b2a693b3c3c3b2d68052707f7e7032b362c373d2841bd293b28083bf02a3b3b2806f0501a020828082c28082805ec502a280d2828e4502a95503e2b692d1af0070c2d1ae3030c291aee07691af2072a69293ba003032c02062c2a1aeb070c2e2a693b3c3c3b2d6805270bf788032b36291ab5030c291ad807691adc072a693b3c3c3b2d68052704f76b032b362c372d382a352b353b3b292ca903032a023a293cb12f362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320203323caa2932250b250b26091e3d3b270965293c1aa2040c2c3c1a9c040c291a7707691a7b072a692c2a691a7b072a6927051aac050c3e2a692e1a24030c311a1f030c291a6a07691a6e072a691a71072a691a74072a692e2a69302a693b3e3b3b2d68052710f7c5022b362c372d382b350a0900240029002e00330038003d004200120054002b36293ba003051a590602031a5c066402331a5e06022e1a610602291a640602241a6706021f1a6a06021a1a6d0602152b36293ba003051a690602031a6c066402031a6e06293b3bef293ba003051afa06024b28052ab1292810b1293cb2292808b4291aa503a503043b5002041aa30310292841bd2a3cb22a2a3b3bf02b3b3b32f0501ac50628082d28082805ec503128082d280d34ec502b95502b27073e2a692d352e362f372b1a30020c2b9291030a2b35291a24020c6402031a5d032b9203052b3ba202052b942811a0030a1a52032c1a56030c02012b293d1a55030c3e2a69291a5503691a59032a691a5c032a691a5f032a69302a691a5f032a691a62032a691a65032a69220c2a691a64032a691a67032a693b3c3c3b2d680522191ab9010c293b691a2a062a691a2d062a691a30062a692e2a691a30062a69221b2a693b3e3b3b2d68052723f75b012b362c372d382b9203052b3ba202052b942811a0030a1abd022c1ac1020c02012b293d1ac0020c2b9203052b3ba202052b942811a0030a1a9c022c1aa0020c02012b293d1a9f020c291ada05691ade052a692d2a691ade052a6927071aaf030c3e2a692c1a27010c291ad205691ad6052a692c2a693b3e3b3b2d6805270902db2b363e2841bd293b28103bf02a3b3b40f0501ab90528082c28082809ec502a28112828e4502a95503e2b692c1aa7050c291aaa050c2b2a693b3c3c3b2d6805270702982b362c37290a0e00210026002b00300035003a003f00440049001c004e00530058005d001a7c05023f1a7f05023a1a820502351a850502301a8805022b1a8b0502261a8e0502211a9105021c1a940502171a970502121a9a05020d1a9d0502081aa00502031aa3053e2a692c3b69291aa1050c291aa4050c1aa8052a693b3c3c3b2d6805293b691aa1052a69302a693b3e3b3b2d6805270c420000|@2668,1,@12090,@2669,@2673,@2674,@2666,@2672,@2670,@1323,@1323,@2676,@2677,@1325,@1323,@1720,@1722,@1723,@1724,@1725,@1726,@1727,@1728,@2678,@2679,@1325,@1323,@2680,@2683,@1738,@1499,@1500,@1325,@1500,@1740,@2684,@2685,@1325,@1323,@1758,@1759,@1760,@1761,@365,72057594037927935,@286,@1762,@796,@797,@801,@1763,@1323,@1324,@1500,@1323,@1324,@1500,@1766,@1767,@1768,@1324,@1323,@1324,@1323,@1323,@2686,@2687,@294,@2688,@1323,@2693,@450,@1323,@1323,@2695,@1323,@1323,@2696,@1499,@1500,@2698,@1500,@2698,@2699,@1775,@2701,@284,@2702,@2704,@2702,@2705,@2702,@2706,@2707,@1877,@1321,@1791,@1793,@1321,@1323,@1794,@2708,@2709,@2710,@2711,@2712,@2714,@2716,@2718,@2719,@2720,@2721,@2722,@1323,@1323,@1323,@1323,@1323,@2725,@1848,@1849,@1850,@1851,@1852,@1853,@1854,@1855,@1856,@1857,@1858,@1859,@1323,@2727,@2728,@2729,@2730,@1499,@1323,@2741,@1499,@1874,@1876,@372,@1878,@1499,@1323,@1324,@1500,@1879,@1323,@1880,@1323,@1323,@1882,@1877,@1883,@1499,@1323,@2742,@2743,@2744,@1144,@1145,@1146,@1147,@1148,@1149,@1150,@1151,@1152,@1153,@1154,@1155,@1156,@1157,@2745,@2667,@1325,@1323| 15859:D10,128|fb112b929103732b352c36293ba0032b2a352b362afa810c2a3ba00304fa810202fa85293b69fa882a692c2a693b3c3b3b2d6805293b692708023c2a352b362afa560c2a3ba00304fa560202fa5a293b69fa5d2a692c2a693b3c3b3b2d680529fa56693b3b3b3b2d680533fa530cfa582a692b2a69270c6502013b4200000000|@2671,1,@12091,@2666,@2672,@2670,@1323,@1712,@2669,@1323| 15860:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12092,@2673,@1499| 15861:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12093,@2666,@1712,@2676,@1323| 15862:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12094,@2677,@1499| 15863:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12095,@2666,@1712,@2678,@1323| 15864:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12096,@2679,@1499| 15865:D15,208|fb192b929103c62b352c36293ba003542a352b362a352b362a3cfacc0c29fad069fad52a6965fad80c3e2a692bfad90c293b69fadb2a692c2a693b3c3b3b2d6805323ba00304fad00202fad4293b69fad72a692c2a693b3c3b3b2d6805293b69271002662a352b362a352b362a3cfa780c29fa7c69fa812a6965fa840c3e2a692bfa850c293b69fa872a692c2a693b3c3b3b2d6805323ba00304fa7c0202fa80293b69fa832a692c2a693b3c3b3b2d680529fa7c693b3b3b3b2d68052212fa780cfa7d2a692b2a6927146502013b4200|@2671,1,@12097,@801,@2682,@2681,@284,@2666,@1323,@2672,@2670,@1323,@1712,@2680,@1323| 15866:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12098,@2683,@1499| 15867:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12099,@2666,@1712,@2684,@1323| 15868:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12100,@2685,@1499| 15869:D10,128|fb0d2b929103702b352c36293ba003292a3ba00304fa81021a2a3529fa820c293b69fa842a69fa882a693b3c3c3b2d68052705293b6964023b2a3ba00304fa58021a2a3529fa590c293b69fa5b2a69fa5f2a693b3c3c3b2d6805270529fa59693b3b3b3b2d68052cfa560cfa5b2a692b2a6927056502013b4200000000000000|@2671,1,@12101,@2690,@2666,@1323,@2689,@1712,@2688,@1323| 15870:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12102,@2695| 15871:D7,64|fb082b929103342b352c36293ba003112a3ba00304fa410202fa45293b696402172a3ba00304fa300202fa342afa390cfa3e2a692b2a69666502013b42000000|@2713,1,@12103,@2672,@2670,@2712,@1323| 15872:D4,32|fb072b929103132b352c3628092b692afa260c2a2a69270402013b4200000000|@880,1,@12104,@2718| 15873:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12105,@2666,@1712,@2720,@1323| 15874:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12106,@2721,@1499| 15875:D10,128|fb112b929103732b352c36293ba0032b2a352b362afa810c2a3ba00304fa810202fa85293b69fa882a692c2a693b3c3b3b2d6805293b692708023c2a352b362afa560c2a3ba00304fa560202fa5a293b69fa5d2a692c2a693b3c3b3b2d680529fa56693b3b3b3b2d680533fa530cfa582a692b2a69270c6502013b4200000000|@2671,1,@12107,@2666,@2672,@2670,@1323,@1712,@2727,@1323| 15876:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12108,@2728,@1499| 15877:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12109,@2731,@1863,@2730,@1323| 15878:D14,184|fb0e2b353ba003272b362c372a3cfac00c2a3cfabb0c293b69fabd2a692c2a69fabe2a692705fac00c3e2a696602842b353da003082b3629fab62d7d042b353ea003412b363d2841bd293b28083bf02a3b3b2807f050faa028082c28082806ec502a280e2828e4502a95503e2b692cfa8f0c29fa930c2b2a693b3c3c3b2d68052707022f2b362c372a3cfa440c29fa8069fa852a6965fa500c3e2a692bfa510c293b69fa7b2a692c2a693b3c3b3b2d680527084200000000|@2733,1,@12110,@801,@386,@2734,@284,@2666,@2735,@2736,@2732,@2682,@2681,@1323| 15879:D12,152|fb122b9291038b2b352c36293ba003372a352b362a3cfa980c29fa9c69faa12a6965faa40c3e2a69280d2c69faa20c293b69faa42a692c2a693b3c3b3b2d6805293b69270902482a352b362a3cfa610c29fa6569fa6a2a6965fa6d0c3e2a69280d2c69fa6b0c293b69fa6d2a692c2a693b3c3b3b2d680529fa66693b3b3b3b2d680534fa630cfa682a692b2a69270d6502013b4200000000|@2671,1,@12111,@801,@2682,@2681,@284,@2666,@1323,@2737,@2736,@1323| 15880:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12112,@2732,@1499| 15881:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12113,@2741| 15882:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12114,@2666,@1712,@2743,@1323| 15883:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12115,@2744,@1499| 15884:D7,64|fb0a2b929103322b352c36293ba0030a2afa450c293b6964021c2afa3b0c29fa3f693b3b3b3b2d68052cfa3c0cfa412a692b2a6927056502013b420000000000|@2671,1,@12116,@2666,@1712,@2745,@1323| 15885:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12117,@2667,@1499| 15886:D8,152|fb092c3bfaaa0c3b062e299291031a29352a362a35faa1a003052a68010207292503511e193b6502013b64293ba00342fa8e299291031a29352a362a35fa79a003052a68010207292503511e193b6502013b64293ba00303fa6e103b5029352935fa55a003043b500203fa6410293765021329352935fa40a003043b500203fa4f102937643b06302d4533462a472e482b49270544000000|@2751,1,@12118,@2750,@59,@1652,@1701,@826| 15887:D7,80|fb082c299291031a29352a362a352d36a003052a68010207292503511e193b6502013b64293ba00304fa3d0215293529352c36a003043b500203fa34103b50293764fa3406fa392a2c316b6643000000|@2752,1,@12119,@2753,@826,@294,@15888| 15888:D10,576|fb25293635293b3bef2d3b3bef2a3ba003032e0257293ba003032b024f2a2ab1292810b1293cb2292808b4291a2902a503043b5002041a2702103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220d28082e2c220cec502c95502c2708293b3bef0b02003b292ea003113b2e306a2a3b316a2c2b452a465051022e292808b12f2adc2940a091030d2b3cb129250426031e2b5002133b2c326a302db22d2a346a2f2c452a46502603515029352a362936293ba003712b352c362d37293b3bef2c3ba003052b2aa002013b03032a024b2b3ba003051a820102412b2810b1293cb2292808b4291a6101a503043b5002041a5f01103b50292841bd2a3cb22a2a3b3bf02b3b3b34f050280833b1312a2e2808220dec502c95502c27072210363b3b2ce32705f708012b352c362d37293b3bef2c3ba003052b2aa002013b03032a02492b3ba003051a1101023f2b2810b1293cb2292808b429faf1a503043b500203faf0103b50292841bd2a3cb22a2a3b3bf02b3b3b34f050280833b1312a2e2808220dec502c95502c2707293b3bef3b3b2b2dface0c29221338facf0cfad40c3e2a69642213370c502212363b3bfaabe3503135323633373c2ba503043b500203fab8103b503c2cb12b3cb22b3b3bef2b3ba003052a2aa002013b03032c02482a3ba00304fa74023f2a2810b1293cb2292808b429fa54a503043b500203fa53103b50292841bd2a3cb22a2a3b3bf02b3b3b33f050280832b1332a2e2808220cec502c95502c27072706221322157d15270b42|@2755,1,@12121,72057594037927935,@286,@294,@2756,@2760,@284,@2754| 15889:D3,8|fb023b4200000000|@1706,1,@12120| 15890:D9,368|fb132d2da0039e2d2fab2c3b3bef303ba803043b5002041a6e01103b502a3ba803043b5002041a5f01103b50302bb1292ba703041a5901103b503b502e3b3bef323ba003052c2aa002013b03032f024e2c3ba003051a400102442c2810b1293cb2292808b4291a3701a503043b5002041a3501103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082210b1220d2a2e2808220eec502c95502c2707293b69270502c32d2808b12c2adc292809a003a82f31ab2e3b3bef323ba803043b500203fac4103b502a3ba803043b500203fab6103b50322bb1292ba70303fab1103b503b50303b3bef343ba003052c2aa002013b030331024b2c3ba00304fa9902422c2810b1293cb2292808b429fa91a503043b500203fa90103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082212b1220f2a2e2808220eec502c95502c2707343caa220c3caa292b220e220efa5e0c2c2a692708020d2f3caa312a3131fa4d327b0609651f04000000000000|@2758,1,@12122,@236,@2757,@294,72057594037927935,@286,@2756| 15891:D10,168|fb142c3ba003033b02982c352d362a3b3bef0b02002c322bfaa60c5029352a362a3ba40304faa1026c2a3ca00304faa002632a3ba00304fa8f025a2a3ba803043b500203fa92102a2810b1293cb2292808b429fa8ba503043b500203fa8a10292841bd2a3cb22a2a3b3bf02b3b3b33f0503b312aa503043b500213292808b12d2a2820e4502a3cb12502501e1950502b95502b2706302bfa570c2a2a69332a69270b430000000000|@2762,1,@12123,@2761,@294,@357,@288,72057594037927935,@286,@2760| 15892:D4,80|fb0c2c929103332c352d362f2ba8031e2f2bab0b02002c2e2bfa4d0c5029352a362a220daa342a452b46270702092a30ab2e2a452b466465020e2d2808ae28082aab2d2a453b46654400000000000000|@2763,1,@12124,@2761| 15893:D7,248|fb173b06293b3b1a0601e3502d3ba203033c02052d1a0001a803041a0201103b503b502d28403bda3c063c063b06220c3c3b3b34332211323232220d22152215fae60c2a3503033b02a33b34a40305333ea402013b03233328ffb728412ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce3270802733b34a403063328ffa402013b031f3328ffb7293b69281f2a693f2a6922103729352b2a692b3b3b2ce3270702463328ffb7341b0001ad220c1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69280d2a693f2a6922153729352b2a692b3b3b2ce3270c2c35220e2a3336220c7e10|@2767,1,@12125,@2768,72057594037927935,@789,@2766| 15894:D15,168|fb102b363ca20304fab602972b35293ba00304fab3028b2c363ca20304fab102812c3529352e363cab2a2a69faaa352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa8da003033c020d29fa8ca003033c020429fa8ba06402013b9102013b02013b03162afa8269fa872a69fa8b2a693b3e3c3b2d68056602012a64020129293b69fa7d2a69fa812a693b3c3b3b2d68052709644200000000|@2770,1,@12126,@2535,@2771,@2535,@75,@594,@595,@596,@2624,@1500,@2627,@1323,@2769| 15895:D138,15664|fb483035220f350a17005900d501fa015c02fc07440f2e1123122e00551272123a137213e51407151f248f24e9241f25bb274a398639903a220f362210372211382b2b2b6a2922122211221122112211221122112211221122112210370c2704f7723b220f362210372211382b352807a0030729352807a002013b03e52b362a3629920331299203043b5002041ab83c103b50293ca0031b2a9203142a9203043b5002041aa93c103b502a2840a002013b02013b02013b032d2c3c3c221422142214221422142214221422142214221422130c50220e3729351a7c3c2a692b3b3b2ce36602792b3c3c221422142214221422142214221422142214221422130c2e3c3c221522152215221522152215221522152215221522140c2e3c3c221622162216221622162216221622162216221622150c22113729351a243c2a692b3b3b2ce350221335293cab22153b3b2ce350221535293cab22173b3b2ce3270a650279293c3c221222122212221222122212221222122212221222110c2c3c3c221322132213221322132213221322132213221322120c2c3c3c221422142214221422142214221422142214221422130c220f3729351aa83b2a692b3b3b2ce350221135293cab22133b3b2ce350221335293cab22153b3b2ce3270a66f7f639220f3629382922112211221122112211221122112211221122112211221122100c65f7d139220f36221037291a5a3b0c292e221022102210221022102210221022102210221a1a483b0c220c353b063d2a6922103729352b2a692b3b3b2ce32e30326a296801220c221c221c2c221c221c221c221c221c221c221c221c221c221b0c270df76f39220f362210372211382b3c3c221222122212221222122212221222122212221222110c2b3c3c221322132213221322132213221322132213221322120c2b350a0c00fa000f01a7013302af02f9024303b60332041800bd0406052b362c372a3da0032d293ba0031422103729351aa23a2a692b3b3b2ce3502603021222103729351a963a2a692b3b3b2ce350260302a82a3ca0032d293ba0031422103729351a803a2a692b3b3b2ce3502603021222103729351a743a2a692b3b3b2ce350260302762a3fa0032d293ba0031422103729351a5e3a2a692b3b3b2ce3502603021222103729351a523a2a692b3b3b2ce350260302442a3ea0032d293ba0031422103729351a3c3a2a692b3b3b2ce3502603021222103729351a303a2a692b3b3b2ce3502603021222103729351a243a2a692b3b3b2ce350260351f75304220e3729351a163a2a692b3b3b2ce3502603f73e042b36293da003041a073a103b503b50293ca003041a023a103b503b50292805a00314220f3729351af7392a692b3b3b2ce3502603025e293fa00314220f3729351ae6392a692b3b3b2ce35026030245293ea00314220f3729351ad5392a692b3b3b2ce3502603022c292806a00314220f3729351ac3392a692b3b3b2ce35026030212220f3729351ab7392a692b3b3b2ce350260350f7a6032b36293da00314220f3729351aa2392a692b3b3b2ce3502603026d293ca00314220f3729351a91392a692b3b3b2ce35026030254293ea00314220f3729351a80392a692b3b3b2ce3502603023b292806a00314220f3729351a6e392a692b3b3b2ce35026030221293ba003043b5002041a5e39103b50220f3729351a5b392a692b3b3b2ce350260350f71a032b36293da00314220f3729351a46392a692b3b3b2ce3502603025d293ca00314220f3729351a35392a692b3b3b2ce35026030244293fa00314220f3729351a24392a692b3b3b2ce3502603022b293ea00314220f3729351a13392a692b3b3b2ce35026030212220f3729351a07392a692b3b3b2ce350260350f79e022b36293da00314220f3729351af2382a692b3b3b2ce3502603022b293ca00314220f3729351ae1382a692b3b3b2ce35026030212220f3729351ad5382a692b3b3b2ce350260350f754022b36293ca00314220f3729351ac0382a692b3b3b2ce3502603022b293da00314220f3729351aaf382a692b3b3b2ce35026030212220f3729351aa3382a692b3b3b2ce350260350f70a022b36293ca00314220f3729351a8e382a692b3b3b2ce35026030254293ea00314220f3729351a7d382a692b3b3b2ce3502603023b292806a00314220f3729351a6b382a692b3b3b2ce35026030221293ba003043b5002041a5b38103b50220f3729351a58382a692b3b3b2ce350260350f797012b36293da00314220f3729351a43382a692b3b3b2ce3502603025d293ca00314220f3729351a32382a692b3b3b2ce35026030244293fa00314220f3729351a21382a692b3b3b2ce3502603022b293ea00314220f3729351a10382a692b3b3b2ce35026030212220f3729351a04382a692b3b3b2ce350260350f71b012b36293da00314220f3729351aef372a692b3b3b2ce3502603026d293ca00314220f3729351ade372a692b3b3b2ce35026030254293ea00314220f3729351acd372a692b3b3b2ce3502603023b292806a00314220f3729351abb372a692b3b3b2ce35026030221293ba003043b5002041aab37103b50220f3729351aa8372a692b3b3b2ce35026035002902b36293da00314220f3729351a94372a692b3b3b2ce3502603022b293ca00314220f3729351a83372a692b3b3b2ce35026030212220f3729351a77372a692b3b3b2ce35026035002472b36293ca00314220f3729351a63372a692b3b3b2ce3502603022b293da00314220f3729351a52372a692b3b3b2ce35026030212220f3729351a46372a692b3b3b2ce350260350220d35293cab220f3b3b2ce32707f7cf33220f362210372211382212392c3ba0f8c90129352a362b372b3c3c221622162216221622162216221622162216221622150c502a9291035c2a352a3ba0031d293c3c221722172217221722172217221722172217221722160c500235293c3c221722172217221722172217221722172217221722160c502a22121ab5360c5022113729351a73362a692b3b3b2ce35026035002312922111a98360c50220f35293caa22113b3b2ce3502211352211352a2aa6030d22133522133b3b2ce3505002023b5026042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a02360c5022143729351ac0352a692b3b3b2ce35026035002312922141ae5350c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a9f352a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce32711f768052c3ca0f8c90129352a362b372b3c3c221622162216221622162216221622162216221622150c502a9291035c2a352a3ba0031d293c3c221722172217221722172217221722172217221722160c500235293c3c221722172217221722172217221722172217221722160c502a22121ae6340c5022113729351aa4342a692b3b3b2ce35026035002312922111ac9340c50220f35293caa22113b3b2ce3502211352211352a2aa6030d22133522133b3b2ce3505002023b5026042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a33340c5022143729351af1332a692b3b3b2ce35026035002312922141a16340c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351ad8332a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce32711f799032c35293ba0f8ca012a352b362c372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a34330c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a03330c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b503235333634372b3c3c221e221e221e221e221e221e221e221e221e221e221d0c502a929103202a35293c3c221f221f221f221f221f221f221f221f221f221f221e0c505002313b22191a8e320c50221735293caa22193b3b2ce3502219352219352a2aa6030d221b35221b3b3b2ce3505002023b5026042922191a5d320c50221735293caa22193b3b2ce3502219352219352a2aa6030d221b35221b3b3b2ce3505002023b5022113c3c222222222222222222222222222222222222222222210c50221c3729351a28322a692b3b3b2ce350221e35293cab22203b3b2ce350222035293cab22223b3b2ce350222235293cab22243b3b2ce350222435293cab22263b3b2ce350222635293cab22283b3b2ce350222835293cab222a3b3b2ce3271df7c6012a352b362c372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131a4b310c5022123729351a09312a692b3b3b2ce35026035002312922121a2e310c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042e352f3630372b3c3c221a221a221a221a221a221a221a221a221a221a22190c502a9291035c2a352a3ba0031d293c3c221b221b221b221b221b221b221b221b221b221b221a0c500235293c3c221b221b221b221b221b221b221b221b221b221b221a0c502a22161a98300c5022153729351a56302a692b3b3b2ce35026035002312922151a7b300c50221335293caa22153b3b2ce3502215352215352a2aa6030d22173522173b3b2ce3505002023b502604323c3c221a221a221a221a221a221a221a221a221a221a22190c5022143729351a4d302a692b3b3b2ce350221635293cab22183b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32711642704f7872c220f3629352a362b372c382c3c3c221422142214221422142214221422142214221422130c3b062b3ba003033b02182b22111ab52f0c5022103729351a632f2a692b3b3b2ce3663b2f299291031229362b3caa292b25042504511e113b6502012a65293ba203041aa82f103b503b503b2a1aa62f0c3c063b2a2c6a22153729352b2a692b3b3b2ce350221735293cab22193b3b2ce3220f322a3ba00312293ba003043b5002041a792f103b503b02402a352b362b929103043b5002041a6b2f103b502b352c362c929103043b5002133d2b6922223729352b2a692b3b3b2ce35026042b2a2506250626041e523b270465220f22222222222222222222222222222222222222222222222222210c221a3b3b3be32212220c2a3ba00312293ba003043b5002041a0a2f103b503b029f2a352b362b929103043b5002041afc2e103b502b352c362c3ba003043b5002722c3522223503043b5002183c063c2a22183b6b22273729352b2a692b3b3b2ce3502605222a3ba003043b50020e222435293cab22263b3b2ce350513d2c6922263729352b2a692b3b3b2ce35022263b3b3be3502d222f222f222f222f222f222f222f222f222f222f222f222f222e0c5026052b2a2506250626041eb13b2704653d22106922203729352b2a692b3b3b2ce322213b3b3be3271bf79d2a220f362210372211382b3c3c221222122212221222122212221222122212221222110c3b063b063c063c2a2d3c6b22113729352b2a692b3b3b2ce3221435293cab22163b3b2ce3220d221e221e221e221e221e221e221e221e221e221e221e221e221d0c221e3ba003033b020d221835293cab221a3b3b2ce3652217352903033b02173c063c2a220f3b6b221d3729352b2a692b3b3b2ce327053d220f69221d3729352b2a692b3b3b2ce3221e3b3b3be3221622282228222822282228222822282228222822282228222822270c2220353d22166922253729352b2a692b3b3b2ce3220e03032e02013b22273b3b2ce32721f7a829220f3629341a032d0c3335293caa220c3b3b2ce350220c35220c352a2aa6030c220e35220e3b3b2ce36402013b2706f77629220f36220f3ba003033b020d292f34220d220c34331a192d0c64f75929220f362210372a3c3c221122112211221122112211221122112211221122100c503b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922103729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a69220f3729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922143729352b2a692b3b3b2ce3270c65f79128323729351a4d2c2a692b3b3b2ce3503435293caa220d3b3b2ce350220d35220d352a2aa6030c220f35220f3b3b2ce36402013b2707f75928220f36221037221138220c3729351a132c2a692b3b3b2ce3220f35293caa22113b3b2ce3502211352211352a2aa6030c22133522133b3b2ce36402013b3b063c063c2a2c3d6b22183729352b2a692b3b3b2ce3221b35293caa221d3b3b2ce350221d35221d352a2aa6030c221f35221f3b3b2ce36402013b22173c3c222722272227222722272227222722272227222722260c22223729351a912b2a692b3b3b2ce33b063c063c2a2c3b6b22293729352b2a692b3b3b2ce3222c3b3b2227e3222b3b3b3be33d221a6922303729352b2a692b3b3b2ce322343729351a562b2a692b3b3b2ce3223735293caa22393b3b2ce3502239352239352a2aa6030c223b35223b3b3b2ce36402013b223c35296801223b9322342aa903041a202b103b503b50223c22353b2de322363c3c224722472247224722472247224722472247224722460c3c3c22441afa2a0c224235293cab22443b3b2ce33d22206922473729352b2a692b3b3b2ce322483b3b3be32742f7e626220f36293b1ad12a220f220f220f220f220f220f220f220f220f220e360c64f7c426220f362210372936299291f84c0729352b352c372e350a0900a100750149021d03f103c504990512006c062a3c3c221522152215221522152215221522152215221522140c2c3c3c221622162216221622162216221622162216221622150c2b22121ac2290c50221035293caa22123b3b2ce3502212352212352a2aa6030c22143522143b3b2ce36402013b22163729351a2b2a2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef79c062d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a21290c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131af0280c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a5f292a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef7c8052d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a4d280c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a1c280c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a93282a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef7f4042d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a79270c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a48270c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351ac7272a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef720042d352e362f372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a86260c5022133729351a44262a692b3b3b2ce35026035002312922131a69260c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50260422123729351aee262a692b3b3b2ce350221435293cab22163b3b2ce32708f74c032d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131ad1250c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131aa0250c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a2f262a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef778022d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131afd240c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131acc240c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351a63252a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270ef7a4012d352e362f372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a0a240c5022133729351ac8232a692b3b3b2ce35026035002312922131aed230c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50260422123729351a8a242a692b3b3b2ce350221435293cab22163b3b2ce3270802d12d352e362f372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a56230c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a25230c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5022163729351acc232a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce3270e66f7ba072a352b372d350a09001401e801bc029003640438050c061200df062a3c3c221422142214221422142214221422142214221422130c50292808b5293ba003043b5002041a6723103b502a2808b429920305293ba2020529942811a0030a1a55232a1a59230c020129299203043b5002041a5223103b503b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922163729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a6922153729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a69221a3729352b2a692b3b3b2ce3270c66f79c062c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a64210c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a33210c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351aa2212a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef7c8052c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a90200c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a5f200c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351ad6202a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef7f4042c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121abc1f0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a8b1f0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a0a202a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef720042c352d362e372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131ac91e0c5022123729351a871e2a692b3b3b2ce35026035002312922121aac1e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b50260422113729351a311f2a692b3b3b2ce350221335293cab22153b3b2ce32708f74c032c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a141e0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121ae31d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a721e2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef778022c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a401d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a0f1d0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351aa61d2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270ef7a4012c352d362e372b3c3c221722172217221722172217221722172217221722160c502a9291035c2a352a3ba0031d293c3c221822182218221822182218221822182218221822170c500235293c3c221822182218221822182218221822182218221822170c502a22131a4d1c0c5022123729351a0b1c2a692b3b3b2ce35026035002312922121a301c0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b50260422113729351acd1c2a692b3b3b2ce350221335293cab22153b3b2ce3270802d12c352d362e372b3c3c221722172217221722172217221722172217221722160c502a929103202a35293c3c221822182218221822182218221822182218221822170c505002313b22121a991b0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5026042922121a681b0c50221035293caa22123b3b2ce3502212352212352a2aa6030d22143522143b3b2ce3505002023b5022153729351a0f1c2a692b3b3b2ce350221735293cab22193b3b2ce350221935293cab221b3b3b2ce3270e6566f7ac17220f36220d3ba003041a031c103b503b50220d3529352a362b372d1af91b0c292b32221422142214221422142214221422142214220e1ae61b0c220f35292ea0910312221035292fab293b22151a471b0c505102023b503c063c2a313b6b22133729352b2a692b3b3b2ce3270df73c17220f362210372a299291032b29352a362a30221222122212221222122212221222122212221c2212361a8b1b0c50292503511e2b5102023b50502922112211221122112211221122112211221122112211221122100c65f7e216220f36293c3c2210221022102210221022102210221022102210220f0c343729351a411b2a692b3b3b2ce3220c3b3b3ce32706f7ac16220f362210372211382b352815a0033d2b362a3c3c221322132213221322132213221322132213221322120c2a3b3b2f33221522152215221522152215221522152215221f1aef1a0c65f74b022b3c3c221222122212221222122212221222122212221222110c2a3c3c221322132213221322132213221322132213221322120c2c351ab91a3b292ca903032a0238293cb130362b3ebb2a2adc2d2807b729283fa903033b02033c2aba2b2ab7293ba091293ba00303320201312932250b250b26091e3b3b2709653b3b303531362c3ba203033c02032c2ba803041a691a103b503b502c3ebb2a2adc2e2807b729283fa903033b02033c2aba2b2ab7293ba091f8800122193729351a441a2a692b3b3b2ce3503b220ca40306342805a402013b03243428ffb728352ab12928ffb7293b693f2a6922213729352b2a692b3b3b2ce350260802773b220ca403063428ffa402013b03203428ffb7293b6928232a693f2a6922203729352b2a692b3b3b2ce350260702483428ffb7220c1b0001ad220d1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922253729352b2a692b3b3b2ce350260c3b34a40306332807a402013b03243328ffb728452ab12928ffb7293b693f2a6922213729352b2a692b3b3b2ce350260802753b34a403063328ffa402013b03203328ffb7293b6928242a693f2a6922203729352b2a692b3b3b2ce350260702473328ffb7341b0001ad220c1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922253729352b2a692b3b3b2ce350260c34220da003033b0213343caa343caa2a2a250e250e260c20b1013b65660210313caa2932250a250a260820c4013b64270765270466f71014220f362210372211382936299291f8b90829352b352c372f350a0900c800c501c202bf03bb04b805b5061200b0072a3c3c221622162216221622162216221622162216221622150c2c3c3c221722172217221722172217221722172217221722160c2b22131a0b170c221235293caa22143b3b2ce3502214352214352a2aa6030c22163522163b3b2ce36402013b220d3c3c221e221e221e221e221e221e221e221e221e221e221d0c22193729351a0a182a692b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce350221f35293cab22213b3b2ce32712f7e2072d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a43160c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a12160c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a15172a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7e5062d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a46150c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a15150c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a20162a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7e8052d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a49140c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a18140c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a2b152a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7eb042d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a2d130c5022143729351aeb122a692b3b3b2ce35026035002312922141a10130c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a2a142a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce3270af7ef032d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a50120c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a1f120c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a42132a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7f2022d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a53110c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a22110c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a4d122a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce32710f7f5012d352e362f372b3c3c221922192219221922192219221922192219221922180c502a9291035c2a352a3ba0031d293c3c221a221a221a221a221a221a221a221a221a221a22190c500235293c3c221a221a221a221a221a221a221a221a221a221a22190c502a22151a37100c5022143729351af50f2a692b3b3b2ce35026035002312922141a1a100c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b502604313c3c221922192219221922192219221922192219221922180c5022133729351a4c112a692b3b3b2ce350221535293cab22173b3b2ce350221735293cab22193b3b2ce3270a02fa2d352e362f372b3c3c221922192219221922192219221922192219221922180c502a929103202a35293c3c221a221a221a221a221a221a221a221a221a221a22190c505002313b22141a5b0f0c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b5026042922141a2a0f0c50221235293caa22143b3b2ce3502214352214352a2aa6030d22163522163b3b2ce3505002023b50220c3c3c221d221d221d221d221d221d221d221d221d221d221c0c5022173729351a65102a692b3b3b2ce350221935293cab221b3b3b2ce350221b35293cab221d3b3b2ce350221d35293cab221f3b3b2ce3271066f7c0082a352b372e350a0900da00d601d202ce03ca04c605c2061200bd072a3c3c221522152215221522152215221522152215221522140c3b22111a6e0e0c221035293caa22123b3b2ce3502212352212352a2aa6030c22143522143b3b2ce36402013b3022171a420e0c221635293caa22183b3b2ce3502218352218352a2aa6030c221a35221a3b3b2ce36402013b22113c3c222222222222222222222222222222222222222222210c221d3729351a410f2a692b3b3b2ce350221f35293cab22213b3b2ce350222135293cab22233b3b2ce350222335293cab22253b3b2ce32717f7dc072c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a7a0d0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a490d0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a4d0e2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e0062c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a7e0c0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a4d0c0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a590d2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e4052c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a820b0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a510b0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a650c2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7e8042c352d362e372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a670a0c5022133729351a250a2a692b3b3b2ce35026035002312922131a4a0a0c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b502604303c3c221822182218221822182218221822182218221822170c5022123729351a640b2a692b3b3b2ce350221435293cab22163b3b2ce350221635293cab22183b3b2ce3270af7ec032c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a8a090c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a59090c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a7d0a2a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7f0022c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a8e080c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a5d080c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351a89092a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710f7f4012c352d362e372b3c3c221822182218221822182218221822182218221822170c502a9291035c2a352a3ba0031d293c3c221922192219221922192219221922192219221922180c500235293c3c221922192219221922192219221922192219221922180c502a22141a73070c5022133729351a31072a692b3b3b2ce35026035002312922131a56070c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b502604303c3c221822182218221822182218221822182218221822170c5022123729351a88082a692b3b3b2ce350221435293cab22163b3b2ce350221635293cab22183b3b2ce3270a02f92c352d362e372b3c3c221822182218221822182218221822182218221822170c502a929103202a35293c3c221922192219221922192219221922192219221922180c505002313b22131a97060c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b5026042922131a66060c50221135293caa22133b3b2ce3502213352213352a2aa6030d22153522153b3b2ce3505002023b50343c3c221c221c221c221c221c221c221c221c221c221c221b0c5022163729351aa2072a692b3b3b2ce350221835293cab221a3b3b2ce350221a35293cab221c3b3b2ce350221c35293cab221e3b3b2ce32710652704f78102220f36221037293c3c221122112211221122112211221122112211221122100c502a220c1abd050c50343729351a34042a692b3b3b2ce32705f74502220f363b2a299291031229362b3caa292b25042504511e113b6502012a652a299291032829352a362a3c3c221422142214221422142214221422142214221422130c50292503511e285102023b50503d2aa40305293fa402013b0327293dab2928ffb728692ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce350260902743b2aa403062928ffa402013b03202928ffb7293b6928682a693f2a69220f3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928672a693f2a6922143729352b2a692b3b3b2ce350260c33352a3cab2a2aab220d3b3b2ce32705f73b01220f362210372a3c3c221122112211221122112211221122112211221122100c2a0a0e002e00400052006400760088009a00ac00be001c00d000e200f4000601220c3729351ae6052a692b3b3b2ce36602e8220c3729351adc052a692b3b3b2ce36602d6220c3729351ad2052a692b3b3b2ce36602c4220c3729351ac8052a692b3b3b2ce36602b2220c3729351abe052a692b3b3b2ce36602a0220c3729351ab4052a692b3b3b2ce366028e220c3729351aaa052a692b3b3b2ce366027c220c3729351aa0052a692b3b3b2ce366026a220c3729351a96052a692b3b3b2ce3660258220c3729351a8c052a692b3b3b2ce3660246220c3729351a82052a692b3b3b2ce3660234220c3729351a78052a692b3b3b2ce3660222220c3729351a6e052a692b3b3b2ce3660210220c3729351a64052a692b3b3b2ce36666220f3ba0039c3235292cab323503033c0203293ba003033b027f293ba2036e293c1a3f050c293b3bef293ba003051a3a05024d28172ab1292810b1293cb2292808b4291a2d05a503043b5002041a2b05103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a030528082d28082817ec503128082d281f34ec502b95502b27071a00051a05052b1a09056b66103b503b50293b220e1a53030c220c3b3b30e36602b02a3caa3335292bab333503033c0203293ba003033b0291291ad603a2036e293c1a9e040c293b3bef293ba003051ac904024d28172ab1292810b1293cb2292808b4291a8c04a503043b5002041a8a04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a920428082d28082817ec503128082d281f34ec502b95502b27071a5f041a64042b1a78046b66103b503b50291a5d03a003093b220e1a24020c0208293c220f1aa2020c220d3b3b2fe32704651f0d000000000000|@2787,1,@12127,@1048,@1048,@2788,@2789,@2791,@2792,@2793,@2795,@2797,@2799,@2801,@2803,@2805,@2807,@2809,@2811,@2813,@2816,@2819,@2821,@2823,@2825,@2827,@2829,@2831,@2833,@2835,@2837,@2840,@2842,@2844,@2846,@2848,@2850,@2852,@2854,@2856,@2858,@2860,@2862,@2864,@2866,@2868,@2870,@2873,@2875,@2877,@2879,@2881,@2883,@2885,@2887,@2889,@2891,@2893,@2896,@2898,@2900,@2902,@2904,@2906,@2908,@2910,@2915,@2917,@2919,@2921,@1080,@2923,@2430,@2430,@2430,@2430,@2924,@2929,@2931,@2933,@2935,@864,@2937,@2945,@2947,@2949,@2951,@2953,@2955,@2957,@2959,@2961,@2963,@2965,@796,@797,@792,@2968,@2971,@2972,@2977,@2982,@2984,-1,@2202,@2986,@2988,@2990,@2992,@2994,@2996,@2998,@3000,@3002,@3004,@3006,@3008,@3010,@3012,@3014,@3016,@3018,@3020,@3022,@3024,@3026,@3028,@3030,@3032,@801,@3034,72057594037927935,@286,@16,@815,@3035,@3034,@2786| 15896:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12128,@2791| 15897:D5,112|fb16220d92910363220d35220e362a352b36293c3c32221322132213221322132213221322132213221d0c50220c3529680134932d2aa90303fa4d103b503b50220c2e3b2de350220f352f22152215221522152215221522152215221522152215fa2d0c2a2a69270902013b1f0c0000|@880,1,@12129,@864,@2792| 15898:D11,344|fb122c9203132c9203043b5002041a5f01102c1a6201a302013b03dd2c9203043b5002041a5901102c9203052c3ba202052c942811a0030a1a4d012d1a51010c02012c299203043b5002041a4a01102940a003112c3729351a45012a692b3b3b2ce3660291293fa403222928ffb7283b2ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce32708026a291b0001a2031e2928ffb7293b6928282a693f2a69303729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69281b2a693f2a69220c3729352b2a692b3b3b2ce3270c6402582b3529353b2a299291031e29352a36322ba003032c020f2c3caa292b2505250526031e1c3b6465021a2c35313b69293ba003032a02052a2afa750c2f3b3b2ce3502d66653c063e2a2c6a303729352b2a692b3b3b2ce3270843000000000000|@2912,1,@12130,@1048,32768,@1048,@796,@797,@792,@2913,@2911| 15899:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12131,@2911| 15900:D4,32|fb062c2ca003033b020e3b062d3caa292efa250c2b2a69664300000000000000|@1075,1,@12132,@2923| 15901:D7,1136|fb1931353ea0f80201303ba003d02f35291a7404aa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220c3729352b2a692b3b3b2ce350260802733b2aa403062928ffa402013b031f2928ffb7293b6928222a693f2a69343729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922103729352b2a692b3b3b2ce350260c3135293caa333b3b2ce350333532352a2aa6030b220c35343b3b2ce36402013b2706022a303529301aab030c503035293caa323b3b2ce350323531352a2aa6030a3435333b3b2ce36402013b2705f75c0331353ca0f87d0131363035291a6e03aa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220d3729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a69220c3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922113729352b2a692b3b3b2ce350260c3235293caa343b3b2ce350343533352a2aa6030d220d35220c3b3b2ce3505002023b502f3caa3b2aa40306292805a402013b03232928ffb728352ab12928ffb7293b693f2a6922123729352b2a692b3b3b2ce3270802723b2aa403062928ffa402013b031f2928ffb7293b6928232a693f2a6922113729352b2a692b3b3b2ce3270702452928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928142a693f2a6922163729352b2a692b3b3b2ce3270c2708f7d80131353da003fd31362d932a2aa903041af701103b503b502e2b3bdb29929103043b5002041aea01103b5029353b2aab3435292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922103729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922153729352b2a692b3b3b2ce350260c220d35293caa220f3b3b2ce350220f35220e352a2aa6030c22113522103b3b2ce36402013b270b02d531362c2aab3135292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a69220e3729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a69220d3729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922123729352b2a692b3b3b2ce350260c3335293caa220c3b3b2ce350220c3534352a2aa6030c220e35220d3b3b2ce36402013b27081f0700000000000000|@2926,1,@12133,-1,@2910,@829,@2925| 15902:D5,336|fb112d3ba003043bf740012c3ba0039f2d3ba203041a5001103b502d28ffa603462d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928182a693f2a69343729352b2a692b3b3b2ce3270c02462d3da6031e2d28ffb7293b6928262a693f2a692f3729352b2a692b3b3b2ce3270702232d3cab2928ffb728502ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce32709029c2d3ba20303faba103b502d28ffa603462d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928192a693f2a69343729352b2a692b3b3b2ce3270c02462d3ea6031e2d28ffb7293b6928272a693f2a692f3729352b2a692b3b3b2ce3270702232d3cab2928ffb728642ab12928ffb7293b693f2a69313729352b2a692b3b3b2ce327094400000000|@2939,1,@12134,@2940,@2938| 15903:D3,8|fb023b4200000000|@2946,1,@12135| 15904:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12136,@2971| 15905:D6,296|fb16220e9291f80701220e35220f36220f929103043b5002041a2401103b50220f362b3c3c3b221222122212221222122212221222122212221c0c2b2b22122212221222122212221222122212221222122212faf30c3c2aa40305293ba402013b0327293cab2928ffb728252ab12928ffb7293b693f2a6922143729352b2a692b3b3b2ce350260902743b2aa403062928ffa402013b03202928ffb7293b6928252a693f2a6922123729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928172a693f2a6922173729352b2a692b3b3b2ce350260c220d35293cab220f3b3b2ce3502b27070215220d3ba003043b500203fa34103b503135292dab641f0d00|@2974,1,@12137,@2973,@2972,@2973| 15906:D5,272|fb19220e353da00320220e36293b3c30221122112211221122112211221122112211221b22107b0f10220e353ca0033c220e36220f37293c3c31221222122212221222122212221222122212221c0c50343529680133932d2aa90303faca103b503b50342e3b2de32705029f220e353ba0037c220e36220f372928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69280b2a693f2a6922153729352b2a692b3b3b2ce35022173529220eaa293caa221a3b3b2ce350221a3529680122199322132aa90303fa49103b503b50221a22143b2de32714021c220e362934322f22112211221122102210220f220ffa2a220e7b0d101f0d000000|@2979,1,@12138,@864,@2978| 15907:D5,80|fb14220c92910343220c35220d362a352b36fa54fa5a2d2212221222122212221222122212221222122212220e680e2a3c2b221022102210221622112211221822122212221a22137b0e123b1f0b0000|@2980,1,@12139,@15908,@2978| 15908:D4,72|fb112938352968012b39932c230d2aa90303fa4c103b502c392d230d3b2de3502c372d382e392f3a30230631230732230833230934230a220c230b220d230c220e3622107b0d0600|@2981,1,@12140,@864| 15909:D5,392|fb1922109291f87801221035221136220f3522122aa2034022103522113622143ba203033c020422142ba803041a7001103b503b5022143ebb2a2adc22162807b729283fa903033b02033c2aba2b2ab7293ba091270702013b03ff2b3c3c31221222122212221222122212221222122212221c0c503b2212a4030722112807a402013b0325221128ffb728452ab12928ffb7293b693f2a6922113729352b2a692b3b3b2ce3502608027a3b2212a40307221128ffa402013b0321221128ffb7293b6928242a693f2a6922103729352b2a692b3b3b2ce35026070249221128ffb722121b0001ad22131b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922153729352b2a692b3b3b2ce350260c3435293cab220d3b3b2ce35022143caa22143caa2e2b2b221722172217221722172217221722172217221722172217fa5322187b111822123caa2b2a2214221422142214221422142214221422142214221422142214fa2c22157b11153b1f0f00000000|@2985,1,@12141,@2202,@2984| 15910:D9,1168|fb47220d37293ba0039e220e35220f362210382211393b060b05003222172b1a86040c5029352a362b372c382d392d2d2d2d2d6805220c68013b2210299291031229362b3caa292b25042504511e113b6502012a6522122c2c2c2213222322230c220f3b3b2ce3221095221122201a3f040c221f35293caa22213b3b2ce3502221352221352a2aa6030c22233522233b3b2ce36402013b222903073b222922207d2b3b271cf7e103220e35220f362210382211390b05003122162b1aea030c5029352a362b372c382d392d2d2d2d2d68053b220e299291031229362b3caa292b25042504511e113b6502012a6522102b3b2c2211222122210c3b2213299291031229362b3caa292b25042504511e113b6502012a65293caa2221f8510229221e1a8d030c2840221f1a85030c3b22201a7e030c22203729351a7d032a692b3b3b2ce3222335293caa22253b3b2ce3502225352225352a2aa6030c22273522273b3b2ce36402013b220e222a1a42030c222a3729351a49032a692b3b3b2ce3222d353b22330c3b2bab223035292baa3b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922383729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922373729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a69223c3729352b2a692b3b3b2ce350260c223235293caa22343b3b2ce3502234352234352a2aa6030c22363522363b3b2ce36402013b222f3c2a929103e32a352b3628092b69293c3c3b2243224322432243224322432243224322432242360c3b2ea403062d2807a402013b03232d28ffb728452ab12928ffb7293b693f2a6922433729352b2a692b3b3b2ce3270802723b2ea403062d28ffa402013b031f2d28ffb7293b6928242a693f2a6922423729352b2a692b3b3b2ce3270702452d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928152a693f2a6922473729352b2a692b3b3b2ce3270c223e35293cab22403b3b2ce3313caa302a250b250b26091ee13b270902013b6522393729351a7a012a692b3b3b2ce33c3b223f1a74010c223d35293cab223f3b3b2ce32723f719012b221e1a3c010c221d35293caa221f3b3b2ce350221f35221f352a2aa6030c22213522213b3b2ce36402013b221a299291032e29352a3628092b69293c3c3b222d222d222d222d222d222d222d222d222d222c360c502a250426031e2d3b6602013b643d31a40305303fa402013b0326303dab2928ffb728692ab12928ffb7293b693f2a69222a3729352b2a692b3b3b2ce3270902723b31a403063028ffa402013b031f3028ffb7293b6928682a693f2a6922283729352b2a692b3b3b2ce3270702453028ffb7311b0001ad321b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928672a693f2a69222d3729352b2a692b3b3b2ce3270c222435323cab2a2aab22273b3b2ce3270b2714641f0c00000000|@3038,1,@12142,@2749,@2910,@2789,@3039,@3037,@2937| 15911:D6,736|fb17220c35291aef020c3b2a299291031229362b3caa292b25042504511e113b6502012a652a3ba003033c0231220f3629293540a0030c2936292502501e0c3b64021929352809a003033c020f2935280da003033c020529352807a0646403522a299291032929352a362a3c3c3b2214221422142214221422142214221422142213360c2a250426031e283b6602013b64221036293c3c3b2213221322132213221322132213221322132212360c65f71801220f36293c3c3b2212221222122212221222122212221222122211360c2c299291032929352a362a3c3c3b2216221622162216221622162216221622162215360c2a250426031e283b6602013b643b2da403062c280ba402013b03232c28ffb728292ab12928ffb7293b693f2a6922133729352b2a692b3b3b2ce3270802723b2da403062c28ffa402013b031f2c28ffb7293b6928222a693f2a6922123729352b2a692b3b3b2ce3270702452c28ffb72d1b0001ad2e1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922173729352b2a692b3b3b2ce3270c220e35293caa22103b3b2ce3502210352210352a2aa6030c22123522123b3b2ce36402013b2708220f3ba003ee34353b2aa4030629280ba402013b03242928ffb728292ab12928ffb7293b693f2a6922123729352b2a692b3b3b2ce350260802743b2aa403062928ffa402013b03202928ffb7293b6928222a693f2a6922113729352b2a692b3b3b2ce350260702462928ffb72a1b0001ad2b1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928132a693f2a6922163729352b2a692b3b3b2ce350260c220c35293caa220e3b3b2ce350220e35220e352a2aa6030c22103522103b3b2ce36402013b303daa221235293cab220f34ab2a2aaa2d2a2219fa4d0c22153b3b3ce3270c020f220c372935fa432a692b3b3b2ce366220c35292dab220e3b3b2ce327071f0b000000|@3043,1,@12143,@3044,@3045,@3042| 15912:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12144,@3044| 15913:D5,288|fb182d1b0001a203072c1b0001a202013b03952d3fa0031e2c28ffb7293b69287e2a693f2a692f3729352b2a692b3b3b2ce3270702702d3ea003482c3ea003102b372935faf22a692b3b3b2ce36602312c3da003102b372935fae52a692b3b3b2ce366021c2c28ffb7293b69287d2a693f2a692f3729352b2a692b3b3b2ce3270702232d28ffb72d28ffb7293b692b2a69287b2a693f2a69313729352b2a692b3b3b2ce3270902752d28ffb72e1b0001ad2f1b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb73128ffb7321b0001ad331b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a69302a69220c2a69287c2a693f2a6922123729352b2a692b3b3b2ce32713440000|@3047,1,@12145,@3048,@3046| 15914:D10,552|fb302c352d362e372f3830392b35293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965321b0001a203113228ffb7293b6928fb2a693f2a696602383228ffb7331b0001ad341b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7293b692e2a6928fc2a693f2a692708292b690b02002c22102b1ab7010c5029352a36220d353b2a299291031229362b3caa292b25042504511e113b6502012a652b2808b4292bb1293fb12e2818b12a3cb2292808b32f3eaa293b292808a003033b02883b221a380c299103052d2bb1020b2d2808b1292cb2293cb2652c1b0001ae293ba003033b0211293ba2293ba003032a02052a1b0001aa642928ffb722119328082ab32e2aa303043b5002041a2a01103b5022132f2de450311b0001ad321b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab333cb12a2a250d250d260b1e8c3b270b6534faf40c29932933a50303faf2103b503b502a333b221be3333cb12c93292ba50303fadb103b503b502d2b3b3ce33c2841bd2808293ba003033b0212293cb22b2a3be4502a3cb22502501e163b6464220f3db13193292ba50303faa3103b503b50322b3b2fe3222235293b2a929103342a352b3622142808b4292db1221193292ba50303fa79103b503b5022122b3b30e3502e3cb12d2a2508250826061e323b2706020129652220031a220c222422192224222936222a37fa4d0c50fa5122220c5002023b50220cfa4d22287d2900|@3054,1,@12146,@3055,@3075,@3103,@3105,@3107,@335,@3053| 15915:D7,224|fb1f2c352e3b2a3ba003032902342a352b362a353da003162a36293b3b2fe3502a2d2505250526031e223b6402132afac70c2c2ab12b2a2506250626041e373b6565652f2afab90c292808b1293cb229fab6b7292808b42a2818b130353b2a299291031229362b3caa292b25042504511e113b6502012a652c2ab1293fb1292841bd2a2808b33b292ba3030f2b2a3be450293cb125011e0f3b02013b643b0622143b3b2b929103272b352c362afa490c2d2ab12c2f2f33220e2214fa530c2c2b2b25082508250826051e2626050200260322122d453446271044000000000000|@3057,1,@12147,@3058,@3063,-8,@3056| 15916:D4,208|fb0a2b353ba0035e2b362c372a35293da00303fad3103b50293ba003243b2b299291031229362b3caa292b25042504511e113b6502012a65293dac3e2aaa6502223b2b299291031229362b3caa292b25042504511e113b6502012a65293fac3e2aaa656602652b353ea003192b362935293ca0030428050209293ba003033e02013d6502462b353ca003192b362935293ca0030428050209293ba003033e02013d6502272b353da003033b021e2b363b2a299291031229362b3caa292b25042504511e113b6502012a65644200000000|@3060,1,@12148,@3059| 15917:D8,160|fb112b2808b1293cb229faacb7292818b1303b3b2b929103242b352c362afaa00c2d2ab12c2f2f33fa9e0c2c2b2b25082508250826051e223b270502012966313b2a3ba003032902342a352b362a353da003162a36293b3b2fe3502a2d2505250526031e223b6402132afa540c2c2ab12b2a2506250626041e373b6565652932a30307322afa49337e0a2932a003043b500203fa431031270643000000000000|@3065,1,@12149,-8,@3058,@3066,@3063,@3064| 15918:D5,328|fb0c2e353ea003612e362f372a35293ba0031f2a2808b32f2ab1323eb12a2ab22928f9a303072f3b3b3de302013b27040234293ca0032e2a2808b32f2ab1322805b12a2ab22928f9a303072f3b3b3de3020f291a0a01a303072f3b3b3be302013b270402013b6602d62e353ba0034d2e362f372a35293ca0033e303eb12b299291032629352a362a35292ea7030a2dfad7b12a2aa36402013b030a2a250426031e223b02013b6602013c6403072c3b3b3be302013b6402013b6602832e353ca0037c2e362f372a35293ba003352a352932a50315312ab2291b0001a303072d3b3b3de302013b640216313eb12a2ab2291b0001a303072e3b3b3de302013b65640239293ca003332a352932a50305312ab20208312805b12a2ab264291b0001a303072d3b3b3de3020e29fa3ca303072d3b3b3be302013b6502013b6602013b1f0400000000000000|@3067,1,@12150,65529,65536| 15919:D17,2352|fb4b30353ba0f82203303631372a35293da003041a3109103b50293ba0f85b013b2b299291031229362b3caa292b25042504511e113b6502012a653135319328082ab32b2aa303043b5002041a010910332c40e4220c35293cb1220e3b3b2ce33028ffb722103522109328082ab32b2aa303043b5002041ad6081022122c2ee4221435293cb122163b3b2ce3220f1b0001ad22101b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7221b35221b9328082ab32b2aa303043b5002041a870810221d2c2ee4221f35293cb122213b3b2ce322243eb1221d299291038e29352a362a35292eb22a2fa703043b5002041a5d0810291a6008a303043b5002041a5e08102928ffb722293522299328082ab32b2aa303043b5002041a2b0810222b2c2ee4222d35293cb1222f3b3b2ce3312808bb2928ffb722323522329328082ab32b2aa303043b5002041afb071022342c2ee4223635293cb122383b3b2ce32213251626151e8c3b271502013b64271cf7ac013b2b299291031229362b3caa292b25042504511e113b6502012a653135319328082ab32b2aa303043b5002041aa60710332c28f6e4220c35293cb1220e3b3b2ce33028ffb722103522109328082ab32b2aa303043b5002041a7a071022122c2ee4221435293cb122163b3b2ce3220f1b0001ad22101b0001ae293ba003033c0207293ba2293ba06403032a02032a3cab2928ffb7221b35221b9328082ab32b2aa303043b5002041a2b0710221d2c2ee4221f35293cb122213b3b2ce322243eb1221d29929103e129352a362a35292eb22a2fa703043b5002041a1907102928ffb722293522299328082ab32b2aa303043b5002041ade0610222b2c2ee4222d35293cb1222f3b3b2ce3312808bb2928ffb722323522329328082ab32b2aa303043b5002041aae061022342c2ee4223635293cb122383b3b2ce322112810bb2928ffb7223b35223b9328082ab32b2aa303043b5002041a7d0610223d2c2ee4223f35293cb122413b3b2ce3221a2818bb2928ffb722443522449328082ab32b2aa303043b5002041a4c061022462c2ee4224835293cb1224a3b3b2ce32225252826271edf3b272702013b64271c66f7000630353ea0f82502303631372a35293da003752a2808b32f2ab1343db12a2ab2291b0001a303043b5002041a2006103435349328082ab32b2aa303043b5002041ae30510220d2c28fae4220f35293cb122113b3b2ce33028ffb722133522139328082ab32b2aa303043b5002041ab6051022152c2ee4221735293cb122193b3b2ce32c2713f7a101293ba003a52a2808b32f2ab1343eb12a2ab2291a9805a303043b5002041aae05103435349328082ab32b2aa303043b5002041a690510220d2c281ae4220f35293cb122113b3b2ce33028ffb722133522139328082ab32b2aa303043b5002041a3c051022152c2ee4221735293cb122193b3b2ce3220f2808bb2928ffb7221c35221c9328082ab32b2aa303043b5002041a0b0510221e2c2ee4222035293cb122223b3b2ce32c271c02f72a2808b32f2ab1342805b12a2ab23435349328082ab32b2aa303043b5002041ad20410220d2c28f4e4220f35293cb122113b3b2ce33028ffb722133522139328082ab32b2aa303043b5002041aa5041022152c2ee4221735293cb122193b3b2ce3220f2808bb2928ffb7221c35221c9328082ab32b2aa303043b5002041a740410221e2c2ee4222035293cb122223b3b2ce322182810bb2928ffb722253522259328082ab32b2aa303043b5002041a43041022272c2ee4222935293cb1222b3b3b2ce322212818bb2928ffb7222e35222e9328082ab32b2aa303043b5002041a12041022302c2ee4223235293cb122343b3b2ce32c272e66f7d40330353ca0f885033036313732382b35293da0f802012b3529220ca503772b3ba003043b5002041a080410342ab2291b0001a303043b5002041afe03103335339328082ab32b2aa303043b5002041aa90310220c2c281ee4220e35293cb122103b3b2ce33028ffb722123522129328082ab32b2aa303043b5002041a7c031022142c2ee4221635293cb122183b3b2ce32c2710027f2b3ba003033d020a2b3ca003033e02022881220c3db12b2ab2291b0001a303043b5002041a860310220c35220c9328082ab32b2aa303043b5002041a270310220e2c30e4221035293cb122123b3b2ce33028ffb722143522149328082ab32b2aa303043b5002041afb021022162c2ee4221835293cb1221a3b3b2ce32c271264f77102293ba0f866012b3529220ca503a82b3ba003043b5002041a180310342ab2291ad002a303043b5002041a0e03103335339328082ab32b2aa303043b5002041aa10210220c2c2820e4220e35293cb122103b3b2ce33028ffb722123522129328082ab32b2aa303043b5002041a74021022142c2ee4221635293cb122183b3b2ce3220f2808bb2928ffb7221b35221b9328082ab32b2aa303043b5002041a430210221d2c2ee4221f35293cb122213b3b2ce32c271902b22b3ba0030428f7020b2b3ca0030428f8020228f9220c3eb12b2ab2291a1d02a303043b5002041a630210220c35220c9328082ab32b2aa303043b5002041aec0110220e2c30e4221035293cb122123b3b2ce33028ffb722143522149328082ab32b2aa303043b5002041ac0011022162c2ee4221835293cb1221a3b3b2ce3220f2808bb2928ffb7221d35221d9328082ab32b2aa303043b5002041a8f0110221f2c2ee4222135293cb122233b3b2ce32c271b64f705012b352b3ba0030428f2020b2b3ca0030428f3020228f5220c2805b12b2ab2220c35220c9328082ab32b2aa303043b5002041a420110220e2c30e4221035293cb122123b3b2ce33028ffb722143522149328082ab32b2aa303043b5002041a16011022162c2ee4221835293cb1221a3b3b2ce3220f2808bc2928ffb7221d35221d9328082ab32b2aa303043b500203fae610221f2c2ee4222135293cb122233b3b2ce322182810bc2928ffb722263522269328082ab32b2aa303043b500203fab61022282c2ee4222a35293cb1222c3b3b2ce322212818bc2928ffb7222f35222f9328082ab32b2aa303043b500203fa861022312c2ee4223335293cb122353b3b2ce32c272e2704024830353da003033b023f303629299291033429352a363135319328082ab32b2aa303043b500203fa4510332c2fe4220c35293cb1220e3b3b2ce330250a26091e323b270902013b64641f06000000|@3071,1,@12151,@3072,@3075,@3078,65536,@3081,@3083,@3085,@3088,@3090,@3093,@3096,@3098,@3100,@3070| 15920:D4,8|fb022bfa1b8a4200|@3104,1,@12152,@18917| 15921:D31,1456|fb2a1ac3052e0c301ac505a003033c0215303b3bef3ba0030c3028081ab10528083bed02013b03071aad052f0c0203302f0c1aab05300c3b063b062a3529220ca3f860052b3529920305293ba2020529942811a0030a1a8f052a1a93050c020129293d1a92050c64220c0c502b35293ba003033b02062935292ca06403682d353d2a22121a79050c2f352a2ab1293db11a750522120c2a9203052a3ba202052a942811a0030a1a3f052b1a43050c02012a293d1a42050c6422130c3435293db1220d3b3b2ce3220d3529929103043b5002041a3b05103b502936220f3b3b2ce350260cf7af041a1f05220d0c2e3522119328082ab32b2aa303043b5002041a1705103b5022132cdc3235293cb1343b3b2ce32213932d2aa903041a0305103b503b5022142e3bdb6422150c2213932e2aa903041aea04103b503b5022142f3bdb293ca003053b50f749042f3da003033c024b2f3ea003033c02432f2881a003033c023a2f2805a003033c02312f281aa003033c02282f28f2a003033c021f2f28f3a003033c02162f28f5a003033c020d2f28faa003033c02042f28f4a00354293cab2210352a2a221e1a7c040c2212352a2ab1292eb11a4f04221e0c2a9203052a3ba202052a942811a0030a1a19042b1a1d040c02012a293d1a1c040c64221f0c2217352932b122193b3b2ce350260af7a0032f281ea003531a0c0422180c50220f35293cb22211353c2a221f1a20040c2b2ab229920305293ba2020529942811a0030a1ac1032a1ac5030c020129293d1ac4030c64221d0c50221435293cb122163b3b2ce3502607f747032f2820a003531ab30322180c50220f35293cb22211353d2a221f1acf030c2b2ab229920305293ba2020529942811a0030a1a68032a1a6c030c020129293d1a6b030c64221d0c50221435293db122163b3b2ce3502607f7ee022f2812a003ce1a5a0322180c2210353d2a221e1a85030c29920305293ba2020529942811a0030a1a19032a1a1d030c020129293d1a1c030c64221b0c221335293db122153b3b2ce3501a5703221e0c2216353d2a22241a52030c29920305293ba2020529942811a0030a1ad6022a1ada020c020129293d1ad9020c6422210c221935293db1221b3b3b2ce3501a140322240c221c353d2a222a1a17030c29920305293ba2020529942811a0030a1a93022a1a97020c020129293d1a96020c6422270c221f35293db122213b3b2ce3502612f71a022f40a003b4220f353d2a221d1ad8020c1a7c02221a0c2212353d2a22201acf020c29920305293ba2020529942811a0030a1a3b022a1a3f020c020129293d1a3e020c64221d0c221535293db122173b3b2ce32218353b2933a703043b5002541a950222230c50221a353d2a22281a8f020c2c2ab129920305293ba2020529942811a0030a1ae8012a1aec010c020129293d1aeb010c6422260c50221d35293db1221f3b3b2ce3502e3cb129250726061e59260650260af761012f287ca0038a1acd0122180c2210353d2a221e1a38020c29920305293ba2020529942811a0030a1a8c012a1a90010c020129293d1a8f010c64221b0c221335293db122153b3b2ce3501aca01221e0c2216353d2a22241afd010c29920305293ba2020529942811a0030a1a49012a1a4d010c020129293d1a4c010c6422210c221935293db1221b3b3b2ce350260c02d12f287ba003871a3d0122180c2210353c2a221e1ab8010c29920305293ba2020529942811a0030a1afc002a1a00010c020129293d1aff000c64221b0c221335293cb122153b3b2ce3501a3a01221e0c2216353c2a22241a7d010c29920305293ba2020529942811a00308faba2afabf0c020129293dfabf0c6422210c221935293cb1221b3b3b2ce350260c0244293cabfab422190c2211352b2a221f1a3f010c29920305293ba2020529942811a00308fa742afa790c020129293dfa790c64221c0c221435292fb122163b3b2ce3502607260bfa31220d0c5026032062053b6502013b6427051f06000000000000|@3109,1,@12153,@335,@294,@388,@3110,@796,@797,@801,@3111,@334,@3115,@3112,@829,@3118,@3119,@3120,@3121,@369,@3122,@3123,@3124,@3125,@3126,@3127,@3128,@3129,@3130,@3131,@3108| 15922:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12154,@3111,@3112| 15923:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12155,@3118,@3112| 15924:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12156,@3119,@3112| 15925:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12157,@3120,@3112| 15926:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12158,@3121,@3112| 15927:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12159,@3122,@3112| 15928:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12160,@3123,@3112| 15929:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12161,@3124,@3112| 15930:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12162,@3125,@3112| 15931:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12163,@3127,@3112| 15932:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12164,@3128,@3112| 15933:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12165,@3129,@3112| 15934:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12166,@3130,@3112| 15935:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12167,@3131,@3112| 15936:D5,56|fb0a2d3ba003033b022c2d3cab2d3cb12a2a2ffa3b0c292808ba2f9328082ab3322aa303043b500203fa2d103b503133dc2c2ab127074400|@3113,1,@12168,@3108,@3112| 15937:D4,8|fb022bfa1b8a4200|@3132,1,@12169,@18918| 15938:D4,8|fb022bfa1b844200|@3389,1,@12170,@18919| 15939:D9,152|fb1a2f35303630353136323733383439220c3a220d2306220e23072a3ba203033c02042afa8aa80303fa8d103b503b502a28403bda3b06fa8722112b220d332f6806fa842c69fa88220f36220f2d2d22156806220c2afa800c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296522152c45220f46220e472a48220c49344a334b324c27121f05000000|@3390,1,@12171,72057594037927935,@789,@15941,@15942,@15940,@1936| 15940:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@2417,1,@12174| 15941:D6,152|fb0a2b353ea00304293602882b353ca0034b2b362a392a2a929103043b500203fa8e103b502a352b362b3ba003032a020f2b3cab2a2a2505250526031e253b6465652b380c29353ba0030329020c2936292d37fa630c3c2a69656502372b353da0032e2b362a3a932a2aa90303fa51103b503b502b3a2b3bdb299291030d293529352a363b2b2b6a6602033c2f696602033c2c6942000000|@3391,1,@12172,@953,@2053,@829| 15942:D4,32|fb092b352c362968012c36932c2aa90303fa25103b502d362d3b2de327044200|@3392,1,@12173,@864| 15943:D4,8|fb02fa1c10000000|@2436,1,@12175,@2435| 15944:D9,184|fb0b2c35280fa003092c37292dfac12e7e052c352814a0033b2c3629fab22efab70c29299291031729352a362a9291910309292503511e133b02013b6502013c6403033b020bfa98fa9e2b3b6b293b696465025c2c352808a003492c3629353da003043b500203fa87103b5029362d932a2aa90303fa81103b503b502e2b3bdb299291030d293529352a363b2b2b6a6602033c2d6929353ba00304293702013b2705020c2c352806a003042c3702013b4300000000000000|@3396,1,@12176,@3394,@3395,@24,@394,@2410,@829| 15945:D4,32|fb082d929103152d352e362a2e300c2a3030fa240c2a2a69270402013b440000|@880,1,@12177,@3395| 15946:D10,168|fb142b3ba003032c02962c3ba003032b028e0b02002f2a2e36faa50c5029352a360b0200332a3336fa9e0c5029352a362f929103052a929102013b034d2f352b352a35220d36a003043b500203fa81103b502a372a35220e36a003043b500203fa6e103b502a372a2a2210fa6b0c220f36fa6d2b3b6b2f3ba003033402053430fa660c2a2a6927070214220c3ba00304220d020a220d220dfa56220e7e0e270a4300000000000000|@3398,1,@12178,@3399,@3401,@826,@3402,@394,@3403,@3397| 15947:D5,72|fb0b2d929103302d352e362a352ea0030b2a68012f2a452b466402180b02002c2a32fa3c0c5029352a362f2a69342c452a46270665020afa2f2d2a35452a36466444000000000000|@3400,1,@12179,@3399,@917| 15948:D5,72|fb0b2d929103302d352e362a352ea0030b2a68012f2a452b466402180b02002c2a32fa3c0c5029352a362f2a69342c452a46270665020afa2f2d2a35452a36466444000000000000|@3400,1,@12180,@3401,@917| 15949:D6,64|fb0a2d3ba003112c3ba003043b500203fa46103b503b02252d352e362e929103043b500203fa39103b502e352f362c2b310c2c2b32fa310c2a2a692706440000|@2305,1,@12181,@2304,@2304,@3402| 15950:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12182,@3403| 15951:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12183,@3397| 15952:D5,48|fb0c2d929103232d352e362a352b362f313bfa340c3c2c2c2c6b323caa2e2a34fa2e0c2b2a69270802013b4400000000|@3404,1,@12184,@1039,@2403| 15953:D5,32|fb0a2d929103142d352e36292f2ffa280c2b2a3131fa29327b06083b44000000|@2425,1,@12186,@3407,@3408| 15954:D8,256|fb162e353ba0031c2e362f373038313929311a03010c3b2e2e2e2d6805293469270602da2e353da003102e36292efae80c3d2a692931696602c42e353ea003402e360b02002c2a310c5029352a362a92919103033b02073e2b69293b6964343ba0030329020629220cfab50c293ba003032b02082b2afab0220c7e0e2708027e2e362f3730382935280ca0036229362c2c2b6a293b690b02002c2a220d0c5029352a362a3ba00314220f3ba00303290209292210fa7a220f7e11022f2a352b36293ba003052b3ba002013b03043b500203fa65103b502a352b362c37280c2a693c2d2d2c6b2922176927072708020e2930fa250c3c2d2d2c6b29336965661f04|@3410,1,@12187,@1936,@3411,@3412,@3413,@3409| 15955:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12188,@3411| 15956:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12189,@3412| 15957:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12190,@3413| 15958:D7,88|fb092b353ea003482b362c372a3ba20303fa5d103b503b2b2bfa5d0c29299291031a29352a362a3629353da0030a2a250426031e163b02013b6602013c640304fa3e0209fa422a693e2d2b6a646602012b42000000000000|@3421,1,@12191,@1080,@3420,@951,@15289| 15959:D5,40|fb0b2d2da003033b021c2d2c0c29352a3629fa2c0c2b2a69323caa293333fa280c2b2a6927074400|@1075,1,@12192,@3419,@3420| 15960:D3,16|fb053b2a370c28062a2c366a64420000|@3422,1,@12193| 15961:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@3425,1,@12194,@2535,@3426,@2535,@3433,@2535,@3424| 15962:D6,184|fb0d2c353ba003033b02a52c353fa003033b029c2c353ca003572c362d372a383b2a299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa8e103b503b503b2a2dfa8c0c29299291031829352a362a352b36220c34360c50292503511e173b6502013b642705023f2c353ea003382c362d372a3ba20303fa4e103b503b503b2b2bfa540c29299291031729352a362a352b363332360c50292503511e163b6502013b646602013b4300000000000000|@3443,1,@12195,@1080,@3444,@3442| 15963:D4,32|fb072d2da003033b02102d2c0c2e3caa292f2ffa230c2b2a6966440000000000|@1075,1,@12196,@3444| 15964:D4,32|fb072d2da003033b02102d2c0c2e3caa292f2ffa230c2b2a6966440000000000|@1075,1,@12197,@3442| 15965:D6,160|fb0a2d353ba003033b02912d3629353da003043b500203fa9f103b5029362d932a2aa90303fa99103b503b502e2b3bdb293ca0032630353da003033b021b2f932c2aa90303fa81103b503b50302d3b3de35031313036327e0a023f293da003033b023730353da003162f932c2aa90303fa56103b503b50302d3b3ce364021b2f932c2aa90303fa40103b503b50302d3b3de35031313036327e0a270444000000|@3446,1,@12198,@3445,@829,@864| 15966:D8,280|fb0f2d353ba003522d372e38293ba203041a1c01103b503b503b2a2c1a19010c28142a3b6a30932d2aa903041a1101103b503b50312e3bdb293ba091031731932f2aa903041a0001103b503b5032303b2fe36402013b270602b92d353da003033b02b02d353ea003642d3629299291035729352a362a36293ba20303fad2103b503b503d2a6928082a6933932c2aa90303faad103b503b50342d3bdb293ba091031834932e2aa90303fa9d103b503b50220c2f3b2fe3505002023b502e250826071e553b270702013b646402462d37293ba20303fa7a103b503b503d2a6928082a692f932c2aa90303fa55103b503b50302d3bdb293ba091031630932e2aa90303fa45103b503b50312f3b2fe36402013b27054400000000|@3451,1,@12199,@1080,@3450,@831,@864,@2118| 15967:D5,56|fb092d2da003033b02272b3ba20303fa3f103b503b503d2c6928082a69280b2a313b6b303caa293131fa2d0c2b2a69270544000000000000|@1075,1,@12200,@2118,@3450| 15968:D6,64|fb072c3ba003162b353da003033b020bfa46fa4c2d3b6b293b6964021c2c352d362a35fa33a00307292efa3c2f7e06292efa350c2b2a69646543000000000000|@1058,1,@12202,@25,@394,@3452| 15969:D4,8|fb022bfa1b844200|@3457,1,@12203,@18920| 15970:D4,8|fb022bfa1b844200|@3458,1,@12204,@18921| 15971:D4,8|fb02fa1c42000000|@1234,1,@12205,@899| 15972:D3,8|fb032c2ca0430000|@1003,1,@12206| 15973:D4,8|fb02fa1c10000000|@1126,1,@12207,@1125| 15974:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12208,@3494,@920| 15975:D4,56|fb072b9291032d2b352c362a352806a0030c2a37293fb7293ba0916502013b030a29fa2c0c2b2a6964020629fa222e7d056502013b420000|@693,1,@12209,@3496| 15976:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12210,@3497,@920| 15977:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12211,@3499,@920| 15978:D13,168|fb103efabbfac12e6b2cfac40c293b3bef293ba00304fac0024e293db1292810b1293cb2292808b429fab5a503043b500203fab410292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c270829fa85a003033c0214293b3bef3ba0030b292808fa7228083bed02013b0304fa6f0201293bfa710c3bfa750c2f2c3b2d2d3b3b3c6808280c2a69270842000000|@3503,1,@12212,@1271,@1273,@1740,@1158,72057594037927935,@286,@294,@1098,@3504,@3502| 15979:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12213,@1071,@3504| 15980:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12214,@3502,@920| 15981:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12215,@3505,@920| 15982:D5,40|fb092c9291031b2c352d362d3cfa310c292c692f3caa2c2afa2e0c2b2a69270602013b4300000000|@3507,1,@12216,@801,@3506| 15983:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12217,@3508| 15984:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12218,@1071,@3510| 15985:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12219,@3511,@920| 15986:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12220,@3516,@920| 15987:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12221,@3522,@920| 15988:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12222,@3525,@920| 15989:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12223,@3529,@920| 15990:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12224,@3531,@920| 15991:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12225,@3533,@920| 15992:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12226,@1071,@3540| 15993:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12227,@3541,@920| 15994:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12228,@3545,@920| 15995:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12229,@3549,@920| 15996:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12230,@3551,@920| 15997:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12231,@3553,@920| 15998:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12232,@3561,@920| 15999:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12233,@1071,@3563| 16000:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12234,@3564,@920| 16001:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12235,@3573,@920| 16002:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12236,@3577,@920| 16003:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12237,@3580,@920| 16004:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12238,@3583,@920| 16005:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3c293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333dfa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12239,@2749,@3595,@3597,@2910,@3599,@3593,@2765| 16006:D4,8|fb022bfa1b8a4200|@3596,1,@12240,@18922| 16007:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12241,@3602,@920| 16008:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12242,@3604,@920| 16009:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3c293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333dfa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12243,@2749,@3595,@3597,@2910,@3607,@3593,@2765| 16010:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12244,@3609,@920| 16011:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12245,@3611,@920| 16012:D9,88|fb1b0b0500313b2bfa660c5029352a362b372c382d392d2d2d2d2d68053b06220ffa550c292cfa580c2f35fa5b2a69313b3b2ce33235fa582a69343b3b2ce3323cfa550c323b3b2ce3503295503227164200000000000000|@3594,1,@12246,@2749,@3595,@2910,@3614,@3613,@2765| 16013:D19,400|fb1f2c3c1aa1010c293b3bef293ba003051a9c01024b28072ab1292810b1293cb2292808b4291a8f01a503043b5002041a8d0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a670128082d28082807ec503128082d280f34ec502b95502b27072f3ba203041a5f01103b503b301a5f010c291a62010c28072a1a63013c6b2806323b6a1a61011a4e010c28072a2c3c6b2f3b3bef293ba003051a53010259293eb1292810b1293cb2292808b4291a0701a503043b5002041a050110292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c2708291afc00a003033c0214293b3bef3ba0030b292808fae928083bed02013b0304fae6020129fae9faef0c3bfaf30c312c3b2d2d3b3b3c6808280c2a693c3b3b336b293b69293ba003032b0205280f2a2d6a2210faaba003033c021622103b3bef3ba0030c22102808fa9628083bed02013b0304fa93020222103bfa9c0c3bfaa80c2c2c3b2d2d3b3c3c6808280c2a69271743000000000000|@3619,1,@12247,@801,@3620,72057594037927935,@286,@1080,@3621,@1099,@1407,@1576,@3622,@294,@1098,@3623,@1070,@3624,@3618| 16014:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@12248,@916,@3621| 16015:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12249,@3624,@920| 16016:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12250,@3618,@920| 16017:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12251,@3625,@920| 16018:D9,88|fb1b0b0500313b2bfa660c5029352a362b372c382d392d2d2d2d2d68053b06220ffa550c292cfa580c2f35fa5b2a69313b3b2ce33235fa582a69343b3b2ce3323cfa550c323b3b2ce3503295503227164200000000000000|@3594,1,@12252,@2749,@3595,@2910,@3627,@3613,@2765| 16019:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12253,@3629,@920| 16020:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3d293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333efa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12254,@2749,@3595,@3632,@2910,@3634,@3631,@2765| 16021:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12255,@3637,@920| 16022:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3d293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333efa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12256,@2749,@3595,@3632,@2910,@3639,@3631,@2765| 16023:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12257,@3641,@920| 16024:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3e293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333ffa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12258,@2749,@3595,@3644,@2910,@3646,@3643,@2765| 16025:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12259,@3649,@920| 16026:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3e293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333ffa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12260,@2749,@3595,@3644,@2910,@3651,@3643,@2765| 16027:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12261,@3653,@920| 16028:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3f293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3332805fa5b0c333b3b2ce350339550332717420000000000|@3594,1,@12262,@2749,@3595,@3656,@2910,@3658,@3655,@2765| 16029:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12263,@3662,@920| 16030:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3e293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333ffa5c0c333b3b2ce35033955033271742000000000000|@3594,1,@12264,@2749,@3595,@3644,@2910,@3646,@3643,@2765| 16031:D23,392|fb232d3c1a99010c2d3c1a93010c293b691a94012a692c2a691a94012a6927051a95010c2e3ba203041a9401103b503b2f1a94010c291a97010c291a9a010c28072a1a9b013c6b3b3b3b342d6805293b69333ba203041a6701103b503b341a87010c28142a3b6a2b3ba00303290205280f2c2b6a323b3bef293ba003051a70010259293eb1292810b1293cb2292808b4291a6401a503043b5002041a620110292841bd2a3cb22a2a3b3bf02b3b3b32f050221128082d280834ec50280831b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c2708291a2901a003033c0215293b3bef3ba0030c2928081a150128083bed02013b03051a11010201291a13011a18010c3b1a1b010c2e2c3b2d2d3b3c3c6808280c2a69280622143b6a1a0b01fab10c28072a2c3c6b3c3b3b2c6b293b69293ba003032e0205280f2a306a2216fac1a003033c021622163b3bef3ba0030c22162808faac28083bed02013b0304faa9020222163bfab20c3bfac60c2c2c3b2d2d3b3c3c6808280c2a69271b4400000000|@3673,1,@12265,@801,@392,@3674,@284,@1080,@3675,@3676,@1099,@1407,@3677,@3622,72057594037927935,@286,@294,@1098,@3623,@1070,@3678,@1576,@3672| 16032:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@12266,@916,@3675| 16033:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12267,@3676,@3623| 16034:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@12268,@1276,@3677| 16035:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12269,@3678,@920| 16036:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12270,@3672,@920| 16037:D4,8|fb02fa1c10000000|@1126,1,@12271,@1125| 16038:D29,392|fb151a9b011aa0010c28072a1aa1013c6b1aa4011aa9012f2c1aac0168053c2a692f353ba003382f36290a07000e00130018001d00220027002c001a9201021c1a950102171a980102121a9b01020d1a9e0102081aa10102031aa40164022e2f36293da003051a9f010221293ca003051a9d010217293fa003051a9b01020d293ea003051a990102031a9c0164293b3bef293ba003051a9701024b28092ab1292810b1293cb2292808b4291a8a01a503043b5002041a880110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a620128082d28082809ec503128082d281134ec502b95502b2707293b3bef293ba003051a56010250293db1292810b1293cb2292808b4291a3201a503043b5002041a300110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c2708291a0801a003033c0214293b3bef3ba0030b292808faf528083bed02013b0304faf20201293bfaf40c3bfaf80c312c3b2d2d3b3b3c6808280c2a69270d42000000000000|@3721,1,@12272,@3722,@3726,@3543,@1271,@1273,@3727,@1722,@1723,@1724,@1725,@1726,@1727,@1728,@1729,@1730,@1731,@1732,@1733,@3730,72057594037927935,@286,@1158,@294,@1098,@3731,@3720| 16039:D4,32|fb072b929103122b352c362a3c692afa270c2a2a69270402013b420000000000|@880,1,@12273,@3726| 16040:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12274,@1071,@3731| 16041:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12275,@3720,@920| 16042:D4,8|fb02fa1c10000000|@1126,1,@12276,@1125| 16043:D4,8|fb02fa1c10000000|@1126,1,@12277,@1125| 16044:D4,8|fb02fa1c10000000|@1126,1,@12278,@1125| 16045:D4,8|fb02fa1c10000000|@1126,1,@12279,@1125| 16046:D4,8|fb02fa1c10000000|@1126,1,@12280,@1125| 16047:D4,8|fb02fa1c10000000|@1126,1,@12281,@1125| 16048:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3c293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333dfa5c0c333b3b2ce35033955033271742000000000000|@3806,1,@12282,@2749,@3595,@3597,@2910,@3805,@3593,@2765| 16049:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12283,@3808,@920| 16050:D10,120|fb1c0b0500313b2bfa860c5029352a362b372c382d392d2d2d2d2d68053b06220ffa750c3c293ba003033b02162f35fa6f2a69313b3b2ce3502b3cab2503511e1a3b65642a2dfa600c3035fa632a69323b3b2ce33335fa602a69220c3b3b2ce3333dfa5c0c333b3b2ce35033955033271742000000000000|@3813,1,@12284,@2749,@3595,@3597,@2910,@3812,@3593,@2765| 16051:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12285,@3815,@920| 16052:D4,8|fb02fa1c10000000|@1126,1,@12286,@1125| 16053:D4,8|fb02fa1c10000000|@1126,1,@12287,@1125| 16054:D4,8|fb02fa1c42000000|@1645,1,@12288,@899| 16055:D4,8|fb02fa1c10000000|@1126,1,@12289,@1125| 16056:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12290,@3857,@920| 16057:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12291,@3862,@920| 16058:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12292,@3872,@920| 16059:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12293,@3877,@920| 16060:D10,168|fb132b3b3beffab82d2b6a3b2b2b30fab70c299291038d29353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fa9110293ca00307fa912b3bdb0255292810b1293cb2292808b429fa86a503043b500203fa8510292841bd2a3cb22a2a3b3bf02b3b3b32f050280832299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202fa4a6642|@3890,1,@12294,@16061,@3889,@288,@296,72057594037927935,@286,@294| 16061:D4,56|fb062b2a37a003033b022b2b3ba203033c020929363b3bef2c2aa8640303fa30103b502b2808b12a362adc2d3caa2a2a6929680127044200|@3891,1,@12295,@255| 16062:D8,184|fb0b2e2ea003033b02a52e292efac10c29929103792935293529fabca003033c0214293b3bef3ba0030b292808faa928083bed02013b03462a362933a003033b0229293ba203033c0208303b3bef2a2aa8640303fa8a103b50292808b1312adc2b3caa2a2a692968012704293ba003033b02082a250626051e6d3b65020d2a362a2808dc292b69296801666502013b646429929103043b500203fa4c10293529352a3629323232fa470c2b2a6927051f0400000000000000|@3893,1,@12296,@3894,@294,@255,@3892,@3889| 16063:D15,736|fb172c2c0c299291f8c802293529352a362a2820a303033c0204287e2ba303043bf7ac022a285ca0f8990229300c299291f88c0229352935292875a0032b2a363b3f2b220d1ab0020c2992910316293529352a36220c362b3bdb292b69296801270502013b65f7540229285ea003512a3629340c2992910342293529352a362a2840a80306285f2ba802013b03292a2840ab293ba203033c02042928ffa603041a5d02103b503b50220d362a3bdb292c692968016602013b6602013b65f7fd01292822a0030e2a361a3d022a6929680165f7e90129285ca0030e2a361a31022a6929680165f7d501292872a0030e2a361a25022a6929680165f7c101292866a0030e2a361a19022a6929680165f7ad01292876a0030e2a361a0d022a6929680165f7990129286ea0030e2a361a01022a6929680165f78501292874a0030e2a361af5012a6929680165f77101292862a0030e2a361ae9012a6929680165f75d01292861a0030e2a361add012a6929680165f749012a3628092ba503062a280da502013b03033c02042a2820a003602929220c0c299291032c293529352a3628092ba503062a280da502013b03033c02042a2820a0030a29250526041e2c3b02012d6602012a6464340c299291031c293529352a362a285ca09103033b02091a6f012a69296801646602013b6402ce28302ba503062a2832a502013b03be3b3e2f2a3ba003272b28ffa603033b021c2b3ba203033c02042b28ffa60303fae2103b503b502b2a6929680164026f29220e0c2992910338293529352a3628302ba5030628392ba802013b031f2e3cab3040ac292daa292830ab292d2f250b250b250b26081e623b270402013b66022d2c28ffa603033c02032b3ba603033b021c2c3ba203033c02042c28ffa60303fa72103b503b502c2b692968016464662992910316293529352a36220c362b3bdb292b69296801270502013b6402013b646502013b64020c2d362b3bdb292b6929680165660208fa7b2e69296801646443000000|@3896,1,@12297,@3897,@308,@293,@297,@3899,@3900,@3901,@3902,@3903,@3904,@3895,@294| 16064:D6,288|fb102d3ba003262e28ffa603033b021b2e3ba203033c02042e28ffa603041a1701103b502e2d692968016402eb2c2c0c29929103b6293529352a3628302ba503062a2839a502013b031a313cab332810ac292daa292830ab292d2f220dfae1220e7b060e28612ba503062a2866a502013b031d313cab332810ac292daa292861ab2940aa292e30220efab5220f7b060f28412ba503062a2846a502013b031d313cab332810ac292daa292841ab2940aa292e30220efa89220f7b060f31fa89a803033c02043228ffa603033b021a323ba203033c02043228ffa60303fa5a103b503231692968016466022c2efa5aa803033c02042f28ffa603033b021a2f3ba203033c02042f28ffa60303fa2b103b502f2e6929680164641f04000000000000|@3898,1,@12298,@308,@3897,-1| 16065:D10,320|fb0b2b3b3bef293ea803642c3b3bef3d2aa703041a4101103b502d3b3bef293da003032e02273d2841bd293b28083bf02a3b3b3df0502a2808322808dce4502a2809322809dce4502a95502a65291a0f01a003033c0215293b3bef3da0030c2928081afb0028083ded02013b6602013b03033c02732c3b3bef293fa803682d3b3bef3e2aa70303facf103b502e3b3bef293ea003032f022e3d2841bd293b28083bf02a3b3b3ef0502a2808332808dce4502a2809332809dce4502a403340dce4502a95502a6529fa9fa003033c0214293b3bef3ea0030b292808fa8c28083eed02013b6602013b6403033d02013c2d3b3beffa7c2f2b6a3b2a2dfa7c0c299291031b293529352a362a9203043b500203fa6e102a2a69296801270402013b299291030a293529352968016502013b29929103043b500203fa4f10293527074200|@3911,1,@12299,@2757,@3912,@3913,@16066,@3915,@3921,@3910| 16066:D3,32|fb062b2a37a003033b02132b2808b12a362adc2d3cb12a2a6929680127044200|@3914,1,@12300| 16067:D7,880|fb180b03002f3da0030d292810452e36462e37475002302f3ca0030c2940452e38462e394750021f2f3ea0030e292808452e3a462e23064750020c293d452e2307462e23084750293532320c299291f81603293529352a3628092ba503062a280da502013b03033c02042a2820a0030c29220d220d220c220e7b050e2a282ba003eb2d2810a0037b29220d0c299291036e293529352a362a2830a091030d3b3b2f22131ae20222137b06122922110c2992910340293529352a362a2878a003033c02042a2858a0031b3b3b2b22171ab7020c293ba003093b2f692968016402012964020d3b3b3322171a9c0222177b06166602073b2b6929680164646602013b6402673b3b2b2922100c299291034c293529352a362a2830a8030b2830220caa2b2aa26402013b03222e220c1a61020c2b2830ab2a2a1a5f020c3c2a2e250a250a250a26071e3f3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466f7f8012a282da003033c02042a287ea0f801012d2810a0037529220d0c2992910368293529352a362a2830a091030b3b3b2f22131ae7010c024d2922110c299291033c293529352a362a2878a003033c02042a2858a0031b3b3b2b22171abe010c293ba003093b2f69296801640201296402093b3b3322171aa3010c6602073b2b6929680164646602013b6402673b3b2b2922100c299291034c293529352a362a2830a8030b2830220caa2b2aa26402013b03222e220c1a6c010c2b2830ab2a2a1a6a010c3c2a2e250a250a250a26071e3f3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64662992910316293529352a363b2b1a31010c292b69296801270502013b6402e72d2810a0037b220d220d0c299291036d293529352a362a2830a091030d3b3b22132213fae522137b06122922110c299291033f293529352a362a2878a003033c02042a2858a0031a3b3b2b2217fabb0c293ba003093b2f692968016402012964020d3b3b22172217faa022177b06166602073b2b6929680164646602013b6402663b3b220f2922100c299291034a293529352a362a2830a8030b2830220caa2b2aa26402013b03202e220cfa650c2b2830ab2a2afa640c3c2a2e250a250a250a26071e3d3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b27064400000000|@3917,1,@12301,@3918,@3916,@797,@804| 16068:D6,184|fb0f2c2c0c299291039a293529352a362a2830a803062a2839a402013b031b312810faac0c2b2830ab2a2afaab0c3c2a2e220cfaab220d7b060d2a2841a803062a2846a402013b031e312810fa820c2b2841ab2940aa2b2afa7e0c3c2a2f220dfa7e220e7b060e2a2861a803062a2866a402013b031e312810fa550c2b2861ab2940aa2b2afa510c3c2a2f220dfa51220e7b060e3203093131692968016402013b66020d2f03092e2e692968016402013b641f0400000000|@3919,1,@12302,@3916,@797,@3918| 16069:D4,8|fb032c2cfa1a8b43|@3920,1,@12303,@18923| 16070:D11,144|fb0c2b3b3bef293da603182c3b3bef3d2aa80303fa92103b502d40dc292878a06502013b03033d02013c2d3b3beffa802f2b6a3b2a2dfa800c299291032d293529352a362afa79fa7f0c3ba60303fa80103b502a9203032a02072afa7b0c299a64292b69296801270502013b299291030a293529352968016502013b29929103043b500203fa59102935270742000000|@3929,1,@12304,@255,@16071,@3930,@3934,@3935,@3937,@3940,@3928| 16071:D3,32|fb062b2a37a003033b02132b2808b12a362adc2d3cb12a2a6929680127044200|@3914,1,@12305| 16072:D8,1008|fb1b2b3da00304281002122b3ca0030340020a2b3ea00304280802013d2e2e0c299291f8c10329352935292830a0f810032a3629320c299291f8f202293529352a362a2877a0f8bf01343da0f8320129220d0c299291f82401293529352a362a2878a003033c02042a2858a00387220f3da0030b3b3b2b22131a8c030c02743b3b2b2922140c2992910359293529352a362a2830a8031822139203043b5002041a6d031028302214aa2b2aa26402013b03222e22141a60030c2b2830ab2a2a1a5e030c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64660285220f3da0030b3b3b2f22131a05030c02743b3b2f2922140c2992910359293529352a362a2830a8031822139203043b5002041ae6021028302214aa2b2aa26402013b03222e22141ad9020c2b2830ab2a2a1ad7020c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b640284343da0030b3b3b2b220f1a7a020c02743b3b2b2922100c2992910359293529352a362a2830a80318220f9203043b5002041a5b021028302210aa2b2aa26402013b03222e22101a4e020c2b2830ab2a2a1a4c020c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466f723012a2878a003033c02042a2858a00305343da002013b0386343da0030b3b3b2b220f1adc010c02743b3b2b2922100c2992910359293529352a362a2830a80318220f9203043b5002041abd011028302210aa2b2aa26402013b03222e22101ab0010c2b2830ab2a2a1aae010c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64660286343da0030c3b3b220f220f1a55010c02753b3b220f2922100c2992910359293529352a362a2830a80318220f9203043b5002041a35011028302210aa2b2aa26402013b03222e22101a28010c2b2830ab2a2a1a26010c3c2a2e250a250a250a26071e4c3b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b64666602013b293ba003093b2c69296801640201296602a32a3628092ba503062a280da502013b03033c02042a2820a00309293232fac8337b050a303da0030a3b3b3434fa99347b060a3b3b3429220c0c2992910355293529352a362a2830a80316349203043b500203fa7b102830220caa2b2aa26402013b03202e220cfa6f0c2b2830ab2a2afa6e0c3c2a2e250a250a250a26071e483b66020d2f03092e2e692968016402013b66020d2c03092b2b692968016402013b6466646502013b6544000000000000|@3932,1,@12306,@3931,@792,@3916,@797,@3930| 16073:D6,184|fb0f2c2c0c299291039a293529352a362a2830a803062a2839a402013b031b312810faac0c2b2830ab2a2afaab0c3c2a2e220cfaab220d7b060d2a2841a803062a2846a402013b031e312810fa820c2b2841ab2940aa2b2afa7e0c3c2a2f220dfa7e220e7b060e2a2861a803062a2866a402013b031e312810fa550c2b2861ab2940aa2b2afa510c3c2a2f220dfa51220e7b060e3203093131692968016402013b66020d2f03092e2e692968016402013b641f0400000000|@3933,1,@12307,@3916,@797,@3931| 16074:D4,8|fb032c2cfa1a8543|@3936,1,@12308,@18924| 16075:D4,8|fb022bfa1b8a4200|@3941,1,@12309,@18925| 16076:D4,32|fb082d2d2d6a2a36352f2ffa2b0c2a2a692c363b3b2ce3664400000000000000|@3968,1,@12310,@3967| 16077:D4,160|fb0f2d929103942d352e362a352b362a31a003033c02192a3b3bef313b3befa0030d2a2808322808343b3befed02013b034f2f382a382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b646602013b03092b3131fa2f327b05092b3131fa260c2d2a6964270402013b44000000|@3969,1,@12311,@3967| 16078:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@12312,@1071,@3991| 16079:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12313,@3992,@920| 16080:D5,48|fb0a2b929103272b352c362a352b362935280ca003043b500203fa2c1029363b2c2b6a2dfa2a0c2a2a69270702013b42|@880,1,@12314,@3998,@3997| 16081:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12315,@4007,@920| 16082:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12316,@4009,@920| 16083:D4,8|fb02fa1c42000000|@4013,1,@12317,@4012| 16084:D4,8|fb02fa1c42000000|@4014,1,@12318,@899| 16085:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12319,@4015,@920| 16086:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12320,@4017,@920| 16087:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12321,@4021,@920| 16088:D4,8|fb02fa1c42000000|@1645,1,@12322,@899| 16089:D4,8|fb02fa1c42000000|@1595,1,@12323,@4053| 16090:D3,8|fb032c2ca0430000|@1003,1,@12324| 16091:D3,8|fb023d4200000000|@1601,1,@12325| 16092:D3,8|fb023c4200000000|@1602,1,@12326| 16093:D4,8|fb02fa1c42000000|@1595,1,@12327,@4079| 16094:D3,8|fb032c2ca0430000|@1003,1,@12328| 16095:D3,8|fb023d4200000000|@1601,1,@12329| 16096:D3,8|fb023c4200000000|@1602,1,@12330| 16097:D3,8|fb032c2ca0430000|@1003,1,@12331| 16098:D4,8|fb02fa1c10000000|@1126,1,@12332,@1125| 16099:D4,8|fb02fa1c10000000|@1126,1,@12333,@1125| 16100:D4,8|fb02fa1c10000000|@1126,1,@12334,@1125| 16101:D4,8|fb02fa1c10000000|@1126,1,@12335,@1125| 16102:D4,8|fb02fa1c10000000|@1126,1,@12336,@1125| 16103:D4,8|fb02fa1c10000000|@1126,1,@12337,@1125| 16104:D4,8|fb02fa1c10000000|@1126,1,@12338,@1125| 16105:D4,8|fb02fa1c10000000|@1126,1,@12339,@1125| 16106:D4,8|fb02fa1c42000000|@4135,1,@12340,@899| 16107:D18,424|fb292b3b691ab8012a69293c1ab9010c291abc010c3b2a3c6a3e2c2b6a3d2a1ab6016a323b6928052a1ab4011ab9011abe0168053d1a88012b6a220c3b691a7f012a69293c1a80010c291a83010c3b2a3c6a3e2c2b6a293b6928052a1a99011a9e011a8b0168053d1a6d012b6a22163b3bef293ba003051a8e01024c28052ab1292810b1293cb2292808b4291a8101a503043b5002041a7f0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a590128082d28082805ec50221e28082d280d34ec502b95502b2707291a54010c29221069221a3b3bef293ba003051a4a01024c28062ab1292810b1293cb2292808b4291a1d01a503043b5002041a1b0110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a150128082d28082806ec50222228082d280e34ec502b95502b270729faf10c29221169221e3b3bef293ba00304faf002513e2ab1292810b1293cb2292808b429fabda503043b500203fabc10292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082861e4502b2809286ce4502b40286ce450222628082d280b34ec502b95502b270729fa8a0c29220c69293b692e2a69332a6927214300|@4166,1,@12341,@3587,@3506,@3508,@3546,@1510,@1507,@885,@1346,@1344,@4167,72057594037927935,@286,@4168,@4170,@4165| 16108:D12,192|fb112b3b3bef293ca403033c02362c3b3bef3b2aa80303fabf103b502d2808dcfabe2a3bdb29fac0a003033c0214293b3bef3ca0030b292808faad28083ced02013b916603032c026f2c3b3bef293cab2e3b3bef2a3ba803043b500203fa91103c2bb1292ba70303fa8e103b502b3ba00304fa8c023b2b2810b1293cb2292808b429fa84a503043b500203fa8310292841bd2a3cb22a2a3b3bf02b3b3b34f050220d28092d2808220cec502b95502b27062704fa632d7d046442000000000000|@4169,1,@12342,@255,@296,@373,@236,@2757,@294,72057594037927935,@286,@4168| 16109:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12343,@4171| 16110:D5,32|fb0a2b929103132b352c362a352afa280c292b2efa2a327b05073b4200000000|@4174,1,@12344,@4172,@4173| 16111:D5,160|fb0e2d929103952d352e362a352f3b3bef2a3b3bef2a2aa00357312ca003033c0219313b3bef2c3b3befa0030d3128082d28082f3b3befed02013b03033b022f313b3bef2c3b3bef2a2aa303032a0201293428083028082dee293ba003052c2ca30203293ba20304fa4e02013c27040213313b3bef2c3b3bef2a2aa20304fa3802013c65293ba40305313469020a2d3333fa2d0c2f2a6964270602032b3b6944|@4175,1,@12345,-1,@4173| 16112:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12346,@4176| 16113:D5,40|fb0a2b9291031a2b352c362a352b362afa2e0c292b692dfa2f0c2a2a69270702013b420000000000|@880,1,@12347,@4168,@4186| 16114:D4,8|fb02fa1c10000000|@1126,1,@12348,@1125| 16115:D13,184|fb152dfacb0c0b0200303ba0030cfac82a2a35452a36465102853b31299291031229362b3caa292b25042504511e113b6502012a653bfaa80c2a3ba20303faa8103b503b2bfaa90cfaaefab43b2d2d3b3b3c6808280c2a693b220d299291031229362b3caa292b25042504511e113b6502012a653bfa690c2a3ba20303fa69103b503b2bfa820cfa87fa753b2d2d3b3b3c6808280c2a69332f452a4650260a29352a362e33fa710c322b452c462a47270744000000000000|@4251,1,@12349,@4252,@4285,@1070,@1080,@4286,@1438,@4287,@4288,@915,@4250| 16116:D5,64|fb0e2b929103362b352c362a352b360b02002c353ca00308293b452e4650020b2cfa350c2a2a452f46505029352a362a2a6931fa2b0c2a2a69270b02013b4200|@880,1,@12350,@4253,@4252| 16117:D8,160|fb122b352805a003442b362c382938293629353da003312b38293629353da003043b500203fa911029362a372a31fa900cfa952a690b02002e2d2bfa930c5029352709fa93307d073d2704024e2b353da003033c02452b353ea0033e2b3629929103082936293ba06402013b030a2935293629fa632f7d063b2a299291031229362b3caa292b25042504511e113b6502012a65296801646402013d4200000000|@4255,1,@12351,@4256,@2100,@16118,@4254,@4253| 16118:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@12352| 16119:D6,32|fb073b06fa322a2f6a2f2afa33fa390c2b352f2b452a46270444000000000000|@4262,1,@12353,@16120,@4271,@4261| 16120:D10,128|fb0d2b352806a0036e2b362c37293ebb29920305293ba2020529942811a00308fa762afa7b0c020129299203043b500203fa7510291b0f27a09103032f02342f2e362f37fa6a0c2d3529353ea003202a352806a003043b500203fa5c102a362a31fa5dfa630c2a3b3b2ce3505102023b502a65270402012b4200000000000000|@4264,1,@12354,@796,@797,@792,@4265,@4266,@4263,@4261| 16121:D5,160|fb192d352806a003043b500203faa9102d362e372a2a692f3529299291031e29352a362a3629352932a003052c680102082b250526041e1c3b270402013b64293ba003542b310c293ba003472d3fb7293ba0912f3cb7293ba091fa64061b0f273eba2d03033f02013b2a2ab8292eb828062e2b6a220f352f3b3b2ce3502a220f692215352a2a6922173b3b2ce3502d270e020229356402052935293564270544|@4267,1,@12355,@4266,@1296| 16122:D3,8|fb022b4200000000|@4270,1,@12356| 16123:D3,8|fb022b4200000000|@4272,1,@12357| 16124:D10,168|fb0d2dfabb0c29353fa00303faba103b5029350a0700150019001d0045000e005e000e00292e2d7d060274faa30270faa7026c29362a372a3030faa40c2a3131fa9e0c2a2da00305292ca002013b03032d02043d2b2b6a2704024429362a372a3030fa840c292ca003032c02043e2a2c6a66022b29362a382b392b3131fa710c2b310c29352b2fa003052a2ea002013b03032f020828052c2b2d3068052706644400000000000000|@4274,1,@12358,@4275,@4279,@749,@1296,@4261,@4282,@4273| 16125:D5,328|fb1b2b352806a0f837012b362c372a35291a4c010c2a2aa003043b5002062c3b3b2ce35029353fa003042ff70f0129353ea003ff29362a373b2b299291031229362b3caa292b25042504511e113b6502012a650b02002d29353ba0030d29362a372c2b452a465051020b29362935292503511e1b515029353b2a299291031229362b3caa292b25042504511e113b6502012a652e2aa0032f0b02003229353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936030334020222116602680b02003229353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293529220c2210fa750c3e2a220d6a22113b3b2ce3500b0200220f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603032c0202221727092708020a29353ca003032f020129270402012b420000000000|@4277,1,@12359,@4275,@4276| 16126:D9,400|fb1a2d9291f879012d352e362e9291f80e012e352f362a352d3b3bef2a3b3bef2a2aa003582f2ca003033c02192f3b3bef2c3b3befa0030d2f28082d28082f3b3befed02013b03033b02302f3b3bef2c3b3bef2a2aa303032a0201293228083028082dee293ba003052c2ca30203293ba203051a320102013c270402142f3b3bef2c3b3bef2a2aa203051a1b0102013c65293ba0030e2f2e220c1a13010c2f2a69640278293ba20365333ebb29920305293ba2020529942811a0030a1af9002a1afd000c020129299203043b500203faf710220c3fb7293ba091220e3cb7293ba091faec062e3eba2d03033f02013b2a2ab8292eb828062e2b6a22132a69221322192219faaa0c2a2a69270e020e303069292f220dfa990c302a69652706025e2d3ebb29920305293ba2020529942811a00308fa832afa880c020129299203043b500203fa82102f3fb7293ba091313cb7293ba091fa79062e3eba2d03033f02013b2a2ab8292eb828062e2b6a220d2a69220d3b2213fa380c2a2a69270e6502092c3ba003033b02012c440000000000|@4278,1,@12360,-1,@4276,@796,@797,@792,@1296| 16127:D5,56|fb0a2d9291032f2d352e362a352b36293131fa3c0c2c3232fa3e0c2a2ca00305292ea002013b03033302072c2b69292b6964270602013b44|@4283,1,@12361,@4261,@4282| 16128:D5,48|fb082d929103272d352e362a2f2ffa380c2a3030fa3a0c2a2da00305292ca002013b03033102032a2a69270402013b44|@4284,1,@12362,@4261,@4273| 16129:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12363,@4286,@920| 16130:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12364,@4288,@920| 16131:D17,424|fb0f2c929103142c352d362a35293ba003052a3ba002013b6602013b036a2c3529361a9b011aa0011aa5010c2a1aa801a003033c02152a3b3bef3ba0030c2a28081a940128083bed02013b03051a900102012a3b1a91010c3b1a94010c2c2c3b2d2d3b3b3c6808280c2a691a52011a87011a8c010c293b692b2a6928142a3b6a293b69270cf718012c929103142c352d362a35293da003052a3ba002013b6602013b03132c3529361a5d012e2b1a60010c293b696602e92c929103142c352d362a35293ca003052a3ba002013b6602013b03132c3529361a2e012e2b1a31010c293b696602ba2c929103142c352d362a3529929103052a3ba002013b6602013b03132c3529361aff002e2b1a02010c293b6966028b2c3b2a929103202a352b362a35293ba003032c02032c3caa2b2a2506250626041e1e3b270402012965293ca003093b2d2ffad02f7b0505293ba003273b2e299291031229362b3caa292b25042504511e113b6502012a65293cb23b302bfaac317b05073b2e299291031229362b3caa292b25042504511e113b6502012a65293cb23b2f312cfa8c327b06074300000000000000|@4290,1,@12365,@1951,@916,@1038,@294,@1098,@1070,@4291,@921,@1077,@937,@1628,@4292,@4295,@4289| 16132:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12366,@4291,@920| 16133:D15,240|fb152b929103e02b352c362a3529929103362935293ba003152c36faeb322bfaef0c33332ffaf10c2a2a696602172c3628082b6929332cfad70c343430fad90c2a2a69270464029c293ca003152b36facf312bfabb0c32322efabd0c2a2a69660282293da003152b36fa9d312bfaa10c32322efaa30c2a2a696602682b362805326929faa3faa90c2bfaada003033c02142b3b3bef3ba0030b2b2808fa9a28083bed02013b0304fa9702012b3bfa990c3bfa9d0c2c2c3b2d2d3b3b3c6808280c2a692ffa93fa990c293b692b2a6928142a3b6a22133cb12922142210fa3a0c2b2a69270e6602013b4400000000000000|@4294,1,@12367,@749,@1628,@4292,@3784,@916,@1038,@294,@1098,@1070,@4293,@921,@1077| 16134:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12368,@4293,@920| 16135:D12,120|fb142c9291036e2c352d362a363d31306a29fa7cfa820c2bfa86a003033c02142b3b3bef3ba0030b2b2808fa7328083bed02013b0304fa7002012b3bfa720c3bfa760c2c2c3b2d2d3b3b3c6808280c2a692ffa6cfa720c293b692b2a6928142a3b6a22123cb129220e2213fa630c2b2a69271002013b4400|@4297,1,@12369,@916,@1038,@294,@1098,@1070,@4296,@921,@1077,@4295| 16136:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12370,@4296,@920| 16137:D13,232|fb172c929103d82c352d362a35299291031f29352c362a3fa403082807342c336b0205280634326a29342cfad30c66029d293ca003102b36280633316a29332cfabe0c650288293da003102b36280633316a29332cfaa90c6502732b363c3b34da29942928ffb7292840b7292840a003042c9502013b3c2e220d6a29fa8afa900c30fa94a003033c0214303b3bef3ba0030b302808fa8128083bed02013b0304fa7e0201303bfa800c3bfa840c2c2c3b2d2d3b3b3c6808280c2a692ffa7afa800c293b692b2a6928142a3b6a2710323cb129332e33fa710c2b2a69270602013b1f04000000000000|@4299,1,@12371,@1628,@916,@1038,@294,@1098,@1070,@4298,@921,@1077,@4289| 16138:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12372,@4298,@920| 16139:D5,72|fb112e929103052d929102013b03302e352f362f3530362c352d363d2a346a3c2e693b34692d2a2c2efa353b3b68073130220f220ffa310c2a2a69270b02013b1f04000000000000|@2132,1,@12373,@885,@4300| 16140:D4,8|fb03fa1c2c694200|@4307,1,@12374,@16141| 16141:D7,48|fb112b352c362d372e38fa3c2e3669fa3f2a692dfa422bfa470c28062d3b6a3c2a69313d2b2e333b3b68072709420000|@4309,1,@12375,@16142,@16147,@4308,@4261| 16142:D4,48|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa230c29680164644200000000|@4311,1,@12376,@4310| 16143:D13,272|fb141a23012f692e2e2b1a23010c293ba003f4303629353ca0036c293732373b1a15010c3b1a18010c1a1c011a21013b2d2d3c3b3c6808280c2a69291a19016928142a3b6a3c2a6922113629353da003041a0c01103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a220d3b6b2d2a220d6a270d027d29353ba00366293632373bfaa40c3bfaa80cfaadfab33b2d2d3c3b3c6808280c2a6929fabc6928142a3b6a3c2a6922113629353da00303faa0103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a220d3b6b2d2a220d6a270d021129362a3733373d2c2c6afa712a2c6a27046402022935651f0400000000|@4313,1,@12377,@16144,@4319,@3991,@4321,@915,@4322,@4312,@4323,@4312,@1033| 16144:D4,144|fb0d2b352c362a352805a0037a2a362b37293629353ca0030a2e363629353ca06402013b03102a36293630363629362b2aa0270402272a3629353ba0030a2f363629353ba06402013b03102b36293831363629382b2aa0270402013b6403242b3629353ca003043b500203fa3b102c3728062f3b6a3c2a69292d2d6a296801270502013b6602013b6542000000000000|@4315,1,@12378,@4314| 16145:D4,144|fb0b2d929103052c929102013b037d2d352e362e352f362c2b69300c293ba003612d350a08001b0024002d0036003f001000480051002c2b32fa6d337b050a023f2c2b32fa62337b050a2c2b32fa59337b050a2c2b32fa50337b050a2c2b32fa47337b050a2c3232fa3e337b050a2c2b32fa35337b050a2c2b32fa2c337b050a0206293529680164270502013b440000|@4320,1,@12379,@4319| 16146:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12380,@4321,@920| 16147:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@4332,1,@12381,@4333,@4335,@4331| 16148:D3,8|fb022b4200000000|@4334,1,@12382| 16149:D3,8|fb022b4200000000|@4334,1,@12383| 16150:D8,280|fb1a3038293629353da0035329362a372c352d371a1901220d220c220c6b2c1a16012b1a1a010c2d2aa00312220f342a35452a36462a37472a384864021d220f35220d0c3d302c6a2e2a2f6a221237220e2d4533462a472b482704270602b62a320c299291039e293534350b02002c2afad60c502936220c299291035329352a362a382933fac90c03332b350b02002c2afab50c5029362933a003033c021a293b3bef333b3befa0030e292808342808220d3b3befed02013b270502013b03052b680102082a250426031e523b6602013b64293ba00319221135220f0c221236221337220f2c452b462a4733486602112935220d2a35452a36462a37472a3848642707020f332f2a35452a36462a37472a38486464651f06|@4337,1,@12384,@16151,@4341,@4261,@4342,@4336| 16151:D5,40|fb0e0b0400302f36fa36313732382efa370c5029352a362b372c382c2c2c2c6b2709420000000000|@4339,1,@12385,@4338,@4331| 16152:D3,8|fb022b4200000000|@4340,1,@12386| 16153:D3,8|fb022b4200000000|@4339,1,@12387| 16154:D6,352|fb242c3b3bef0b02002c293ba00311293b336a3b2f346a2c2b452a4650510235293cb2292808b1332adc29282ea091030d2c3cb229250526041e2f5002153b2d220d6a312eb22e2a220f6a302c452a4650260326035029352a362a36293ba00309321a130145344602ef2b352c362d370b03003c2fa6030a2930453b462e4750020c2e3cb22a31452a462f47505029352a362b37293b3bef2c3ba003052b2aa002013b03032a02462b3ba00304fac9023d2b2810b1293cb2292808b429fac1a503043b500203fac010292841bd2a3cb22a2a3b3bf02b3b3b34f050280833b1312a2e2808220dec502c95502c2707220d35220e36220f37293b3bef2c3ba003052b2aa002013b03032a02462b3ba00304fa66023d2b2810b1293cb2292808b429fa5ea503043b500203fa5d10292841bd2a3cb22a2a3b3bf02b3b3b34f050280833b1312a2e2808220dec502c95502c2707221a2f452a46271127074300000000|@4343,1,@12388,@294,72057594037927935,@286| 16155:D4,112|fb0a2c3629353da003092c3629353da06402013b030f2d3629372e3629372b2afa66327e092d3629353ca003092d3629353ca06402013b030f2e3629362f3629362b2aa0270402252e3629353ba003092e3629353ba06402013b030f2f362938303629382b2aa0270402013b64646443|@4345,1,@12389,@4344| 16156:D5,400|fb1a2c352805a003072b352805a002013b03512c362d382d362e382b382a382a2a1a84010c03372e2d2a9291032a2a352b362b9291031d2b352c362c2b1a70010c030d2b2a2506250626041e223b02013b6502013b650203293ba06502013b2706f728012c353da003062b353da002013b031d2c362d372d362e372c2b1a30010c03082b2a1a2801317e083b270402fc2c353ea003062b353ea002013b03c52c362d372d362e370b02002e29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603910b02002f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936036632312a929103592a352b362b9291034c2b352c362c352b352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b031c2e362d362a2afa780c030d2f2e250a250a26081e4c3b02013b6502013b270402013b650203293ba06502013b6602013b270702282c352806a003072b352806a002013b030a2c362c362a2aa065020d2c353ca003062b353ca002013b43000000|@4346,1,@12390,@4336,@4344| 16157:D3,8|fb022b4200000000|@4332,1,@12391| 16158:D4,8|fb03fa1c2c694200|@4349,1,@12392,@16159| 16159:D7,48|fb112b352c362d372e38fa3c2e3669fa3f2a692dfa422bfa470c28062d3b6a3c2a69313b2b2e333b3b68072709420000|@4351,1,@12393,@16160,@16161,@4350,@4261| 16160:D4,48|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa230c29680164644200000000|@4311,1,@12394,@4310| 16161:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@4332,1,@12395,@4353,@4352,@4331| 16162:D3,8|fb022b4200000000|@4334,1,@12396| 16163:D3,8|fb022b4200000000|@4334,1,@12397| 16164:D3,8|fb022b4200000000|@4332,1,@12398| 16165:D4,8|fb03fa1c2c694200|@4356,1,@12399,@16166| 16166:D7,56|fb142b352c362d372e382f39303afa40303669fa432a692ffa462bfa4b0c28062d3b6a3c2a69313169342a2c2f343b3b6807270c42000000|@4358,1,@12400,@16167,@16168,@4357,@4261| 16167:D4,48|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa230c29680164644200000000|@4311,1,@12401,@4310| 16168:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@4332,1,@12402,@4360,@4359,@4331| 16169:D3,8|fb022b4200000000|@4334,1,@12403| 16170:D3,8|fb022b4200000000|@4334,1,@12404| 16171:D3,8|fb022b4200000000|@4332,1,@12405| 16172:D4,8|fb03fa1c2c694200|@4363,1,@12406,@16173| 16173:D8,48|fb0f2b352c36fa402c3669fa432a692cfa462bfa4b0c28062d3b6a3c2a69fa483d2b2e3b3b3b68072707420000000000|@4365,1,@12407,@16174,@16175,@4364,@4261,@294| 16174:D4,48|fb072b3529353ca003092c3629353ca06402013b03033b02112c2b36352c36362d3637fa230c29680164644200000000|@4311,1,@12408,@4310| 16175:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@4332,1,@12409,@4367,@4366,@4331| 16176:D3,8|fb022b4200000000|@4334,1,@12410| 16177:D3,8|fb022b4200000000|@4334,1,@12411| 16178:D3,8|fb022b4200000000|@4332,1,@12412| 16179:D4,8|fb03fa1c2c694200|@4370,1,@12413,@16180| 16180:D6,112|fb192b352c362d372e382b352c362d382e392f3afa72333669fa752c2b6a2f353ca0032e2f3630382a352a352993293ba00304fa6302132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012f29303b312e3168062806333b6a3c2a69220e2a2d220f6b270f42000000|@4371,1,@12414,@16182,@16181,@957| 16181:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@12416,@4374| 16182:D7,32|fb093b3bfa322e3b6805fa342afa396a292c36352d36362e3637fa34317b0605|@4373,1,@12415,@917,@1033,@4372,@4310| 16183:D4,16|fb052d2d0c2cfa202d7e050000000000|@4377,1,@12417,@4376| 16184:D8,72|fb0d2c3629353da0032529362a372f353037fa4cfa52326afa562a692dfa592bfa5e0c3d302b6a2e2a2f6a2708021029353ca003032d02072938292e2e7d06644300000000000000|@4379,1,@12418,@16185,@4376,@16186,@4378,@4261| 16185:D3,32|fb052b3629353ca003033b020a2c2b372c360c29680164644200000000000000|@4380,1,@12419| 16186:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@4382,1,@12420,@4383,@4381,@4331| 16187:D3,8|fb022b4200000000|@4384,1,@12421| 16188:D3,8|fb022b4200000000|@4384,1,@12422| 16189:D3,8|fb022b4200000000|@4382,1,@12423| 16190:D4,8|fb03fa1c2c694200|@4387,1,@12424,@16191| 16191:D4,40|fb0b2b352938292c36352d36362e3637fa2e0c2b352c362d372b2b2b2f6b293b6927074200000000|@4388,1,@12425,@4310| 16192:D4,32|fb072b9291030f2b35fa2d2a692b363b3b2ce365020629363b3b3be342000000|@4394,1,@12426,@16193| 16193:D4,16|fb052b2a36fa212d7e03000000000000|@4396,1,@12427,@4395| 16194:D5,176|fb17d9293a2a23062b23072c230878810633330cf102796d2e3b282830e3502e3b28302fe3502e3b28382ee3502e3b28402de3502938299291031829352a362b372c382d392d2b2e2c2f6805296801270602013b29929103043b50020e2b352c362d372b2b2bfa606b6610293529352a362b372c382d39313532363337302f2e323168052c2c2c2c6b29fa440c270d64502d3b28282fe3502d3b28302ee3502d3b28382de3502d3b28402ce327054300|@4397,1,@12428,@668,@660| 16195:D4,32|fb072b9291030f2b35fa2d2a692b363b3b2ce365020629363b3b3be342000000|@4400,1,@12429,@16196| 16196:D4,16|fb052b2a36fa212d7e03000000000000|@4396,1,@12430,@4395| 16197:D4,32|fb072b9291030f2b35fa2d2a692b363b3b2ce365020629363b3b3be342000000|@4404,1,@12431,@16198| 16198:D4,16|fb042b2a360cfa202a69644200000000|@4405,1,@12432,@16199| 16199:D4,16|fb052b2a36fa212d7e03000000000000|@4396,1,@12433,@4395| 16200:D4,32|fb072b9291030f2b35fa2d2a692b363b3b2ce365020629363b3b3be342000000|@4412,1,@12434,@16201| 16201:D4,16|fb052b2a36fa212d7e03000000000000|@4396,1,@12435,@4395| 16202:D3,8|fb023b4300000000|@4425,1,@12436| 16203:D40,424|fb222b363ca203061ab501f795012b3529353ba0f81c012c3529362e363cab293ba203051aa10102e62a362a3cab2a2a691a9c01352a2a0c642d3ca203051a970102b32e382e3cab2a2a691a8201352a2a0c64313da203051a850102803235323cab2a2a691a8001352a2a0c64220c3ea203051a7a01024c220d37220d3cab2a2a691a4b01352a2a0c6422113922113cab2a2a691a3901352a2a0c64291a5801691a5c012a691a5f012a691a62012a691a65012a69322a691a65012a691a68012a69270f1a69012a691a6c012a692c2a691a6c012a691a6f012a6927091a70012a691a73012a692c2a691a73012a691a76012a6927091a77012a691a7a012a692c2a691a7a012a691a7d012a6927091a7e012a693b3c3b3b2d6805293b691a77012a691a7a012a693b3c3b3b2d68052709026f2c363ca203051a6c0102642c3529362a372f363cab293ba203051a6001022e293cab2c2a69fa8e352a2a0c642c3cab2e2a69fa81352a2a0c64291a4801691a4c012a691a4f012a692f2a6927091a4d012a693b3c3b3b2d6805293b691a46012a691a49012a693b3c3b3b2d6805270a644200000000|@4428,1,@12437,@1313,@4429,@27,@4429,@4429,@35,@4429,@4432,@1323,@4434,@1323,@1324,@1323,@4436,@1323,@1324,@1323,@4438,@1323,@1324,@1323,@4440,@1323,@1324,@1323,@4442,@4444,@1323,@4445,@1313,@1318,@1321,@1323,@1324,@1325,@1323,@4427| 16204:D3,8|fb022b353ba04200|@4448,1,@12438| 16205:D3,8|fb033b2c69420000|@4448,1,@12439| 16206:D3,8|fb022b3642000000|@4448,1,@12440| 16207:D3,8|fb022b353ca04200|@4451,1,@12441| 16208:D3,16|fb062b352c363c2b2b6a654200000000|@4451,1,@12442| 16209:D3,16|fb052b362c372a2a6965420000000000|@4451,1,@12443| 16210:D3,8|fb023b4300000000|@4425,1,@12444| 16211:D50,664|fb192b363ca203061aa502f784022b3529353ba003d12c3529362a372b382c3931363cab293ba203051a8c020294293cab2e2a691a8902352a2a0c642c3ca203051a8402026d2c3cab302a691a8102352a2a0c642f3da203051a7c0202462f3cab322a691a7902351a7d022a0c642a2a0c64323cab342a691a6502351a7102221436693b2a3e3c6b642a0c642a2a0c64291a6402691a68022a691a6b022a692f2a6927091a69022a691a6c022a692c2a6927061a6a022a691a6d022a692c2a6927061a6b022a693b3c3b3b2d6805293b691a64022a691a67022a693b3c3b3b2d6805270cf7aa012c363ca203061a5802f79e012c3529353ca003692d3529362a3730363cab293ba203051a43020230293cab2c2a691aa801352a2a0c642c3cab2e2a691a9a01352a2a0c64291a2902691a2d022a691a30022a692f2a6927091a2e022a693b3c3b3b2d6805293b691a27022a691a2a022a693b3c3b3b2d6805270af72c012d363ca203061a1b02f720012d3529353da003061a1502f711012e363ca203061a1102f705012e3529353ea0038c2f35293631363cab2a2a691a0002352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ae201a003033c020f291ae001a003033c0205291ade01a06402013b9102013b02013b03192a1ad401691ad8012a691adb012a693b3e3c3b2d68056602012a64020129293b691acc012a691acf012a693b3c3b3b2d6805270902702f363ca203051ac10102652f3529362a3732363cab293ba203051ab501022f293cab2c2a691a5a01352a2a0c642c3cab2e2a69fa6d352a2a0c64291a9c01691aa0012a691aa3012a692f2a6927091aa1012a693b3c3b3b2d6805293b691a9a012a691a9d012a693b3c3b3b2d6805270a64646464420000000000|@4572,1,@12445,@1313,@1318,@27,@1318,@31,@1318,@39,@4573,@16213,@1321,@1323,@1324,@1323,@1324,@1323,@1324,@1325,@1323,@4575,@1313,@1318,@1321,@1323,@1324,@1325,@1323,@4579,@1313,@4583,@1313,@35,@365,@448,@416,@1499,@1500,@1325,@1323,@4587,@1313,@1318,@1321,@1323,@1324,@1325,@1323,@4571| 16212:D4,16|fb05fa24352c2a2d7d04000000000000|@4428,1,@12446,@96| 16213:D3,16|fb052936352c2a2d7d04000000000000|@4572,1,@12447| 16214:D3,8|fb022b353ba04200|@4578,1,@12448| 16215:D3,24|fb0a2b352c362d372e383b2d2d2d2d680527044200000000|@4578,1,@12449| 16216:D3,24|fb092b362c372d382e392c2c2c2c6b270442000000000000|@4578,1,@12450| 16217:D3,8|fb022b353ca04200|@4582,1,@12451| 16218:D3,16|fb062b352c363c2b2b6a654200000000|@4582,1,@12452| 16219:D3,16|fb052b362c372a2a6965420000000000|@4582,1,@12453| 16220:D3,8|fb022b353da04200|@4586,1,@12454| 16221:D3,8|fb022b353ea04200|@4590,1,@12455| 16222:D3,8|fb033e2c69420000|@4590,1,@12456| 16223:D3,8|fb022b3642000000|@4590,1,@12457| 16224:D3,8|fb022b353fa04200|@4593,1,@12458| 16225:D3,16|fb062b352c363f2b2b6a654200000000|@4593,1,@12459| 16226:D3,16|fb052b362c372a2a6965420000000000|@4593,1,@12460| 16227:D6,24|fb062b0304fa290202fa2dfa333b3b2ce364420000000000|@4831,1,@12461,@882,@1026,@29| 16228:D4,8|fb02fa1c10000000|@1126,1,@12462,@1125| 16229:D4,8|fb02fa1c42000000|@4013,1,@12463,@4839| 16230:D4,8|fb02fa1c42000000|@4014,1,@12464,@899| 16231:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12465,@4840,@920| 16232:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@12466,@4842,@920| 16233:D3,8|fb022b3642000000|@4850,1,@12467| 16234:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12468,@4851,@920| 16235:D3,8|fb022b3742000000|@4855,1,@12469| 16236:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12470,@4856,@920| 16237:D3,8|fb022b3542000000|@4860,1,@12471| 16238:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@12472,@4861,@920| 16239:D5,72|fb112e929103052d929102013b03302e352f362f3530362c352d363d2a346a3c2e693b34692d2a2c2efa353b3b68073130220f220ffa310c2a2a69270b02013b1f04000000000000|@2132,1,@12473,@885,@4897| 16240:D4,16|fb062b3b2b36fa202e7b050300000000|@4901,1,@12474,@4900| 16241:D27,648|fb212d3b3bef293ba003051a9202024c28052ab1292810b1293cb2292808b4291a8502a503043b5002041a830210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a5d0228082d28082805ec50220c28082d280d34ec502b95502b2707293b3bef293ba003051a50020247293cb1292810b1293cb2292808b4291a2c02a503043b5002041a2a0210292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a40e4502c95502c27081a0c0235292b1a0e020c501a01023529392a1a0a022b1a0e020c3c3b1a10020c29299291033b29352a362a1a0902a003033c02152a3b3bef3da0030c2a28081af50128083ded02013b030529929102013b030429350207292503511e3a3b6502031adb016429220f1adc010c0b02002c2a1adb010c5029352a361ada012a1ade010c2b2a1ad8010c78818c78810a3e3b2f1ad3010cf102546d0b03002d351ace01a0030e2d2a2a35452a36462a37475102292d353ca003101abc012a2a35452a36462a3747510213302e1ab2016a2a1a9d01451ab101462a47505029352a362b372b2b2b1aa8016b27071064292d3c1aa5010c3c2a6929063c28483cda3c2b2b6a3c28482bda3c28483cda292b6929220c692709f1029b6d29351a5201a003043b500202291078810b3e3b220c1a37010cf102556d0b03002d351a3201a0030e2d2a2a35452a36462a374751022a2d353ca003101a20012a2a35452a36462a3747510214220d2e1a15016a2a1a0001451a1401462a47505029352a362b372b2b2b1a0b016b2707106429333c1a08010c3c2a6929063c28483cda3c2b2b6a3c28482bda3c28483cda292b692922126927096429352a362217fae50c2a2c221b6a2a0c512a352b3629fadd2cfa5a221c7b051c0000000000|@4903,1,@12475,@4904,72057594037927935,@286,@335,@18930,@253,@638,@210,@817,@4905,@371,@4906,@4938,@4942,@4944,@4946,@5,@648,@4947,@635,@4948,@698,@4950,@4902| 16242:D8,232|fb180b0300302a2f3a0c5029352a362b370b0300220d2a220d3a0c5029352a362b3729030a220e38fad63bfadb6b103b503b502bfadaa003033c02142b3b3bef3ba0030b2b2808fac728083bed02013b91033032220f390c2c2210390c2a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b29916602013b030a220e38fa753bfa8a6b103b503b502210220f370c2937033a2b929103222b3529fa68a003033c0214293b3bef3ba0030b292808fa5528083bed02013b6402013b03042b3602012b342a3422133622157b0514322cfa440c342a3422133622157b0514|@4909,1,@12476,@4910,@4911,@294,@4913,@4908| 16243:D5,72|fb082c9291033c2c352d36293ba003272afa4da003033c02142a3b3bef3ba0030b2a2808fa3a28083bed02013b03032d02032a2e690209292efa2d0c2b2a69646502012b43000000|@4914,1,@12477,@294,@4908| 16244:D12,232|fb112d2c692a23060c299103092a36faef3bfaf46b103b503b502d299291031a29352a362a2e3a0c299103033c02082a250426031e193b6602013b6403092a39face3bfad36b103b503b502c3ca0036b2e3b3bef2b383b3bef2a3ba003042c380256293ba0030330024e2a2ab1292810b1293cb2292808b429faa5a503043b500203faa4103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d2808220cec50280832b1343828082e2c220cec502c95502c27086502012e2e2c38fa6f0c2a2a6965fa700c292c370c29352930a09103092d36fa273bfa646b103b503b502b2704440000|@4918,1,@12478,@4910,@4919,@4920,@4921,72057594037927935,@286,@4922,@284,@4917| 16245:D4,40|fb072c9291031d2c352d36293ba003052a3b69020c292efa270c2e2a692c2a69656502013b430000|@4923,1,@12479,@4922| 16246:D6,96|fb0f2b3b3bef0b04002e3ba60319313b3bef3b2aa80303fa5f103b50322808dc29282fa06502013b0312fa542a2a35452a36462a37472a3848510210fa4a2a2a35452a36462a37472a38485129352a362b372c382c2c2c2c6b270a4200000000|@4926,1,@12480,@255,@4927,@4925| 16247:D3,64|fb072b3b3bef3b292ba903033b0224292808b12e2adc29282fa003033c0203293ba0030529680102092b3cb12503511e283b6564293ba0912991664200000000|@4929,1,@12481| 16248:D4,40|fb072b3529fa39a003033c0214293b3bef3ba0030b292808fa2628083bed02013b64420000000000|@4930,1,@12482,@294| 16249:D3,8|fb022b4200000000|@4932,1,@12483| 16250:D10,264|fb172c1a1a01a003033c02152c3b3bef3ba0030c2c28081a060128083bed02013b03101a02012c2a35452a36462a37476402ce2c2a370c29352a362b372c38313b3bef292bab333b3bef2c3ba803043b500203fadb103b502a3ba803043b500203facd103b502c2bb1292ba70303fac8103b503b50220c3b3bef2e3ba003052c2aa002013b0304220d024b2c3ba00304fa8e02422c2810b1293cb2292808b429fa9ea503043b500203fa9d103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0502808220cb122142a2e2808220eec502c95502c2707293b3bef3b3b2b2d221036fa6d0c320304349102013b0306fa302a690201292210220c452a46220d47270e43000000000000|@4935,1,@12484,@294,@4936,@236,@2757,72057594037927935,@286,@4934| 16251:D9,368|fb112e2ea0039e2e30ab2d3b3bef313ba803043b5002041a6e01103b502a3ba803043b5002041a5f01103b50312bb1292ba703041a5901103b503b502f3b3bef333ba003052c2aa002013b030330024e2c3ba003051a400102442c2810b1293cb2292808b4291a3701a503043b5002041a3501103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082211b1220e2a2e2808220eec502c95502c2707293b69270502c32e2808b12d2adc642c0c03a92e30ab2d3b3bef313ba803043b500203fac5103b502a3ba803043b500203fab7103b50312bb1292ba70303fab2103b503b502f3b3bef333ba003052c2aa002013b030330024b2c3ba00304fa9a02422c2810b1293cb2292808b429fa92a503043b500203fa91103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082211b1220e2a2e2808220eec502c95502c2707333caa343caa292b220d220d220dfa5e0c2c2a692708020e2e3caa302a303030fa4c317b07081f05000000000000|@2758,1,@12485,@236,@2757,@294,72057594037927935,@286,@4934| 16252:D3,8|fb032b282fa04200|@4937,1,@12486| 16253:D9,320|fb192c3b3bef293cab2b362f2c1a48010c299291f81e0129352f3b3bef2a3ba803043b5002041a3701103b502a2aa703041a3401103b503b50303b3bef2b2aa003033102492b3ba003051a2301023f2b2810b1293cb2292808b4291a1a01a503043b5002041a1801103b50292841bd2a3cb22a2a3b3bf02b3b3b34f050220e28082d2808220cec502b95502b27062c3caa2f2eab293cab220c3b3bef2c3ba803043b500203fab9103b502a3ba803043b500203faab103b502c2bb1292ba70303faa6103b503b50220e3b3bef2e3ba003052c2aa002013b0304220f024b2c3ba00304fa8c02422c2810b1293cb2292808b429fa84a503043b500203fa83103b50292841bd2a3cb22a2a3b3bf02b3b3b220cf0502808220cb122162a2e2808220eec502c95502c270729680122102a453246270c02052d3b452f46654300000000|@4940,1,@12487,@4939,@236,@2757,@294,72057594037927935,@286| 16254:D5,168|fb092e3ba403033b02972e3ba203033c02082c3b3bef2f2aa8640303faa2103b503b502e2808b12d2adc642e0c03033b026f2e3ba203033c02082c3b3bef2f2aa8640303fa7a103b503b502e2808b12d2adc29282ea0033c2d3cab312aa003033b022e313cab293ba203033c0208303b3bef2a2aa8640303fa46103b503b50292808b1312adc65310c03033b020331680164020c303cab303030fa2c317b0608651f040000000000|@4941,1,@12488,@255,@4939| 16255:D7,240|fb132c929103e02c35291afb00a003033c0214293b3bef3ba0030b292808fae828083bed02013b03032c02b82c3b3bef293ba00304fad90246293cb1292810b1293cb2292808b429facea503043b500203facd10292841bd2a3cb22a2a3b3bf02b3b3b32f0503428082d280834ec50280831b12c2a282ee4502c95502c2708293b3bef2c3b3bef2a3ba003032d0253293ba003032b024b2a2ab1292810b1293cb2292808b429fa70a503043b500203fa6f10292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220c28082e2c220cec502c95502c270827046402012b4300000000000000|@4945,1,@12489,@294,@371,72057594037927935,@286| 16256:D4,16|fb042d2d2dfa218c4400000000000000|@230,1,@12490,@18926| 16257:D22,128|fb25fa942c69fa982d69fa9c2e69faa02f69faa43069faa83169faac3269fab03369fab43469fab8220c69fabb220d69fabe220e69fac1220f69fac4221069fac7221169faca221269facd221369fad02214692e2c2f2f2d2210220d2211322212221b2219221c2213221d2217221c221e6812fab32a22176a27134200000000|@4951,1,@12491,@16259,@16261,@16263,@16265,@16267,@16269,@16271,@16274,@16277,@16280,@16283,@16286,@16289,@16292,@16295,@16298,@16301,@16304,@16258| 16258:D4,24|fb082b352c362d372c362d37fa22307b0703000000000000|@4966,1,@12540,@4965| 16259:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12492,@16260,@824| 16260:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12493,@828,@17,@826| 16261:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12494,@16262,@824| 16262:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12495,@828,@18,@826| 16263:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12496,@16264,@824| 16264:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12497,@828,@19,@826| 16265:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12498,@16266,@824| 16266:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12499,@828,@20,@826| 16267:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12500,@16268,@824| 16268:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12501,@828,@21,@826| 16269:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@12502,@16270,@824| 16270:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@12503,@828,@22,@826| 16271:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12504,@16272,@824| 16272:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12505,@17,@394,@828,@4952,@854| 16273:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12506,@17,@4952| 16274:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12507,@16275,@824| 16275:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12508,@18,@394,@828,@4953,@854| 16276:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12509,@18,@4953| 16277:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12510,@16278,@824| 16278:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12511,@19,@394,@828,@4954,@854| 16279:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12512,@19,@4954| 16280:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12513,@16281,@824| 16281:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12514,@21,@394,@828,@4955,@854| 16282:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12515,@21,@4955| 16283:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12516,@16284,@824| 16284:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12517,@20,@394,@828,@4956,@854| 16285:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12518,@20,@4956| 16286:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@12519,@16287,@824| 16287:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@12520,@22,@394,@828,@4957,@854| 16288:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@12521,@22,@4957| 16289:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12522,@16290,@824| 16290:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12523,@4959,@874| 16291:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12524,@17,@826| 16292:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12525,@16293,@824| 16293:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12526,@4960,@874| 16294:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12527,@18,@826| 16295:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12528,@16296,@824| 16296:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12529,@4961,@874| 16297:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12530,@19,@826| 16298:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12531,@16299,@824| 16299:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12532,@4962,@874| 16300:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12533,@20,@826| 16301:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12534,@16302,@824| 16302:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12535,@4963,@874| 16303:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12536,@21,@826| 16304:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@12537,@16305,@824| 16305:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@12538,@4964,@874| 16306:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@12539,@22,@826| 16307:D33,704|fb233c063b061acf022a2c336b78f994012c352991f887011ac5022f691ac8021acd022b3b6b1acf021ac40222103b6b291acc02692b2a691acd022a69293ba003042210020722102a1ac4020c2210342b1ac4020c293629929103043b5002041abd021029353b2a0c29352a362b372c382d392e3a2e299291032729352a362a352b36221e35221f361a9c022a2e2e6b292c1a9b020c502e250826071e26260702023b50502c299291032729352a362a352b36221e35221f361a7c022a2e2e6b292c1a6b020c502e250826071e26260702023b505029299291032729352a362a352b36221e35221f361a54022a2e2e6b292c1a3b020c502e250826071e26260702023b50502a299291032729352a362a352b36221e35221f361a2c022a2e2e6b292c1a0b020c502e250826071e26260702023b50502b299291032729352a362a352b36221e35221f361a04022a2e2e6b292c1adb010c502e250826071e26260702023b50502d299291032729352a362a352b36221e35221f361adc012a2e2e6b292c1aab010c502e250826071e26260702023b505026122086013b271102013b64f1f716016d29352867a0031b293733353436291aa9012c1aad010c5028671aae012d1ab2016b103b502936293b3bef293ba003051aa801024b280b2ab1292810b1293cb2292808b4291a9b01a503043b5002041a990110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a730128082d2808280bec503128082d281334ec502b95502b2707293b3bef293ba003051a6701024e292808b1292810b1293cb2292808b4291a4201a503043b5002041a400110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a250128082e2c2808ec502c95502c27081a1c0135292b1a1e010c501a11013529392a1a1a012bfacf0c50221135221236291a13012cfac00c5033353436220c372b2b2b1a09016b661064661f050000|@4968,1,@12541,@16308,@16313,@49,@394,@51,@4982,@5029,@5031,@5032,@10951,@18623,@824,@18625,@18627,@18629,@18631,@18633,@10960,@210,@861,@10964,@10949,72057594037927935,@286,@10965,@18930,@253,@638,@10966,@4967| 16308:D5,64|fb0b2938352a383629fa4d2cfa520c293ba0030a2c363b3b3ce3503b021a29352940a003112d3735293caa2f373b3b2ce3502c6502012a646642000000000000|@4970,1,@12542,@4969,@210| 16309:D6,72|fb0c2b350b02002c3c2bfa540c5029352a362afa530c323b3b2de350293b3bef293ba003033b02162a3b3bef3b2aa80303fa3d103b502b2808dc2968016527084200000000000000|@4972,1,@12543,@4971,@284,@255| 16310:D12,584|fb1e2d353ba0f822022d362e372f3830392c3b3bef293ba0030c2d3b69312a452e4664f70102292cab322aa203b52e3b3bef2d3ba803043b5002041a2202103b50333ba803043b5002041a1302103b502d34b1292ba503043b5002041a0902103b50303b3bef2f3ba00306220c2aa002013b0303310250220c3ba003051af0010245220c2810b1293cb2292808b4291ae601a503043b5002041ae401103b50292841bd2a3cb22a2a3b3bf02b3b3b2215f0502808220db1220f2a2e28082217ec502c95502c2707293b6931220faa3b220c220c2c220c6805220f2c452a462707f743012a2dab332aa003932d3ba803043b5002041a6901103b502f3b3bef2e2aa503043b5002041a7e01103b50292fb2313b3bef303ba003052a2aa002013b030332024d2a3ba003051a440102432a2810b1293cb2292808b4291a3b01a503043b5002041a3901103b50292841bd2a3cb22a2a3b3bf02b3b3b33f0502808220eb122102a2e2808220cec502c95502c2707293b69220e2a453446270502a72b2eab342aab0b0200332d2b1a03010c5029352a36343ba803043b500203fac2103b50220d3b3bef220c2aa503043b500203fad6103b5029220db2220f3b3bef220e3ba003052a2aa002013b03042210024a2a3ba00304fa9902412a2810b1293cb2292808b429fa91a503043b500203fa90103b50292841bd2a3cb22a2a3b3bf02b3b3b33f05028082215b122172a2e2808220cec502c95502c2707292f6922152a452f46270c6464270502182d362e372a2a306a29fa622cfa670c2f2a35452a364664664400000000|@4974,1,@12544,@236,@645,@294,72057594037927935,@286,@658,@4971,@4973,@210| 16311:D4,32|fb090b02002e352f3630372cfa2a0c5029352a362a2a69270542000000000000|@4976,1,@12545,@4975| 16312:D15,448|fb132e3529353da0030f3c30306a2d1ac601452a4664f79f0129353ba003e729362a372b382b3b3bef293ba003102c3b693c2d220c6a322b452a466502c4312aa2038b2c3b3bef323ba803043b5002041a8d0110322aa503043b5002041a8801102d3b3bef332aa003032e0247333ba003051a7b01023d332810b1293cb2292808b4291a7201a503043b5002041a700110292841bd2a3cb22a2a3b3bf02b3b3b2213f0503428082d28082214ec502b95502b2706293b693c30220f6a3b322b2210336805220d2c452a4627060234312aa003102c3b693c2d220c6a322b452a4665021f312aab0b02002f220e2e2c1a17010c5029352a36322b69220e2a452b462707270402b22f350b02002c353ca003592c3629230929929103043b5002132a3529faecfaf26afaf7fafd2b1a01016b641029352b3a2c230b2a3ba003033b02092a353b2a0c296801652a2d0c33063b2b2b2e6b22133b3b2ce3503c2b22146a332d452a4650260a02252c353da0030e3c34346a2afa79452a46505002112c362d373c2a220d6a2c2c452a4650260329352a362a3b3bef293ba0030b2b3b69342a452c4664020f220d220d220d220dfa57220e7b060e2707641f040000000000|@4978,1,@12546,@4979,@236,@645,@294,72057594037927935,@286,@4975,@641,@4980,@5,@635,@4977| 16313:D3,8|fb02293635420000|@4981,1,@12547| 16314:D16,88|fb112b352c372d3829352a372d0304fa5f0202fa632a3cfa670c2efa6b0c29fa6f69fa742a692c2a69fa752a69312a69fa762a69312a692709fa750cfa7a35292bfa7d0c50fa713529392afa7b2bfa80220e7b050c000000|@4987,1,@12548,@4988,@4989,@801,@4990,@5001,@5002,@5003,@4986,@284,@18930,@253,@638,@210| 16315:D18,352|fb192b35299203043b5002041a690110293ba003402c35299203043b5002041a560110293ba003043b5002041a5101102d362e372f3830392c2c2c2c6b29352a362b372c386b2938291a3c010c27081a3e012d7d042c35299203043b5002041a360110293ca003d22d35299203043b5002041a230110293ca003043b5002041a1e01102e362f372a2a6929352a36692935293ba203041a0f01103b503b2a1a0f010c299291038d29353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b500203fae910293ca00307fae92b3bdb0255292810b1293cb2292808b429fadea503043b500203fadd10292841bd2a3cb22a2a3b3bf02b3b3b32f050280832299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202faa22707021c2d35299203043b500203fa9a10293ea003043b500203fa96102e366464644200000000000000|@4992,1,@12549,@1048,@4993,@4996,@284,@1048,@4997,@1080,@4999,@288,@296,72057594037927935,@286,@294,@1048,@4991| 16316:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@12550,@4990,@4996| 16317:D4,24|fb052c2ca003033b020d2c3caa292dfa1f0c28202a696543|@1075,1,@12551,@4999| 16318:D5,16|fb062bfa232846fa272e7b0503000000|@5012,1,@12552,@5013,@5011| 16319:D6,32|fb09293635292dfa2f0c502a363529392afa2d2bfa32317b0506000000000000|@5014,1,@12553,@253,@638,@210| 16320:D5,32|fb072d3b2d2f2ffa2f0c292da0910306fa2e2e2d7d063b644400000000000000|@5016,1,@12554,@5015,@335| 16321:D13,272|fb132f35299203043b5002041a190110293ba0036f3035299203043b5002041a060110293ba003043b5002041a010110313632373339332caa220c341af9000c293ba003122b220c2e220d2e220efaf0faf622107b090e29352c220d2a9291031c2a352b362a302d22122212fad20c2a2a2505250526031e1b26030200512964270602853035299203043b500203fac010293ca003413135299203043b500203faae10293ca003043b500203faaa10323629293ba6030efaa7320c50293cab25011e0f02023b5050312aab293ba603032902013b6602313135299203043b500203fa8510293ea003043b500203fa8110323629310c50293b3bef322aab293ba603032902013b270464641f0500000000|@5018,1,@12555,@1048,@4993,@5019,@5015,@5017,@1048,@4997,@357,@1048,@4991| 16322:D10,248|fb132c35299203043b5002041a010110293ba003632d35299203043b500203faef10293ba003043b500203faeb102e362f37303831392c2c2c2c6b29352a362b372c386b29383468012a2a2a929103222a352b362b3ba003033b02082b352b2afabe0c642a2a2505250526031e213b66020129652709027c2d35299203043b500203faa410293ca0033a2e35299203043b500203fa9210293ca003043b500203fa8e102f3630372a2a6929352a366929352934a40309332aab2968016402013b2706022f2e35299203043b500203fa6810293ea003043b500203fa64102f36293b3bef2931a40309302aab2968016402013b666464430000|@5020,1,@12556,@1048,@4993,@5019,@1048,@4997,@1048,@4991| 16323:D11,392|fb13319291f87d01313532362a35299203043b5002041a870110293ca003fa2a92919103033302ef2b35299203043b5002041a6b0110293ca003043b5002041a6601102c362d37220c03033c025b220d2ba403033c0252220d2bab2e2a2a9291033c2a352b362a35299203043b5002041a2d0110293ca003052c6801021d2b2d1a2d010c299291031029352c2a2507250726051e363b6402013b6466020329680165293ba091299166033d1a0a01220c0c50332aaa29293ba603101a0201220e0c50293cab25011e1102023b505033220cab292cab302a22112211221122112211fae522127b09122a293ba6030ffad0220d0c50293cab25011e1002023b5050220d2bab2e2a220f220f220f220f220ffab622107b091002692b35299203043b500203faab10293ea0033b2c35299203043b500203fa9910293ea003043b500203fa95102d3629220c0c50293b3bef220e2aab2f2a22102210221022102210fa6722117b09112c32220d220c34340c2c2a220d220d220d220d220dfa4b220e7b090e660201301f07|@5021,1,@12557,@1048,@4997,@5019,@335,@357,@5017,@1048,@4991| 16324:D3,8|fb02281442000000|@4981,1,@12558| 16325:D5,16|fb062bfa232846fa272e7b0503000000|@5012,1,@12559,@5013,@5011| 16326:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12560,@5031| 16327:D23,824|fb3b0b1100221522152b1a43030c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f221023102210221022102210221022102210221022102210221022102210221022102210221068112226299291031b29352a362a351ae302a003052a68010207292503511e1a3b6502013b64293ba003051acf020217293529351abe02a003043b5002041ac402103b5029376478811b0b0200302230222f2c1ab7020c5029352a362a2a692705f1f76c026d29353ca0030a1aa6022b0c501aa802103b503b5029351aa602a0f82b012937291aa4021aa9020c293b3bef293ba003051aa402024d281a2ab1292810b1293cb2292808b4291a9702a503043b5002041a9502103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a6d0228082d2808281aec503128082d282234ec502b95502b2707293b3bef293ba003051a61020250292817b1292810b1293cb2292808b4291a3c02a503043b5002041a3a02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a1d0228082e2c2817ec502c95502c2708293b3bef293ba003051a0b020249293cb1292810b1293cb2292808b4291adf01a503043b5002041add01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a40e4502c95502c27083e2a69330c5028671abd012d1ac1016b103b503b502936293b3bef293ba003051ab501024d280b2ab1292810b1293cb2292808b4291a7001a503043b5002041a6e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a7e0128082d2808280bec503128082d281334ec502b95502b2707293b3bef293ba003051a62010250292824b1292810b1293cb2292808b4291a1501a503043b5002041a1301103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a1e0128082e2c2824ec502c95502c2708293b3bef293ba00304fae50247293cb1292810b1293cb2292808b429fabaa503043b500203fab9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a40e4502c95502c27083e2a69320c502867fa9a2dfab76b106427264400|@5034,1,@12561,@5035,@70,@5043,@826,@5044,@10941,@10943,@16,@283,@285,@10946,72057594037927935,@286,@10947,@335,@861,@10948,@10949,@10950,@5033| 16328:D13,632|fb192c299291031a29352a362a352d36a003052a68010207292503511e193b6502013b64293ba003051a64020216293529352c36a003043b5002041a5a02103b502937642e299291031b29352a362a351a4d02a003052a68010207292503511e1a3b6502013b64293ba003051a39020217293529351a2802a003043b5002041a1602103b5029376430299291031b29352a362a351a1902a003052a68010207292503511e1a3b6502013b64293ba0034b1a0502299291031b29352a362a351aef01a003052a68010207292503511e1a3b6502013b64293ba003041ae301103b503b50293529351ac701a003043b5002041aa501103b502937650217293529351aae01a003043b5002041a8c01103b5029376432299291031b29352a362a351aa701a003052a68010207292503511e1a3b6502013b64293ba0034b1a7b01299291031b29352a362a351a7d01a003052a68010207292503511e1a3b6502013b64293ba003041a5901103b503b50293529351a5501a003043b5002041a1b01103b502937650217293529351a3c01a003043b5002041a0201103b502937643b2e0c3b2d0c220d299291031b29352a362a351a1e01a003052a68010207292503511e1a3b6502013b64293ba00346faeb299291031a29352a362a35faf6a003052a68010207292503511e193b6502013b64293ba00303facb103b503b5029352935fad0a003043b500203fa8f103b50293765021529352935fab9a003043b500203fa78103b50293764282006283006faaa063b062829063b06320633063306340622183345314632473048221b492c4a220f4b22134c221124082f24092d240a2e240b2215240c221a240d2a240e2b240f34241027164400000000|@5037,1,@12562,@5036,@826,@49,@1655,@50,@1652,@1701,@51,@52,@294| 16329:D4,8|fb02fa1c10000000|@5039,1,@12563,@5038| 16330:D3,8|fb023b4200000000|@1706,1,@12564| 16331:D33,928|fb452c299291031b29352a362a351aa703a003052a68010207292503511e1a3b6502013b64293ba003051a93030217293529351a8203a003043b5002041a8803103b502937642e299291031b29352a362a351a7b03a003052a68010207292503511e1a3b6502013b64293ba0034b1a6703299291031b29352a362a351a5103a003052a68010207292503511e1a3b6502013b64293ba003041a4503103b503b50293529351a2903a003043b5002041a1703103b502937650217293529351a1003a003043b5002041afe02103b5029376431230a32230c33230e34230b220c2311220d2310220e3a220f2307221023092211230f221223062213230d1aea022215692f2c30302210220e221131221232220d22122214680d221723062218230a2219230f2a352a35221c37221d23092a352a35292829a09103032902012a292830a003e0222137222223092935292829a09103082a3b3b2829e302c52b35293ba003ac22253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e68051a0f021a14021a19020c291a1c020c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c501a0302103b503b502c3b3b2829e35022251afa010c646602013b2220299291031b29352a362a351aec01a003052a68010207292503511e1a3b6502013b64293ba003051ad8010217293529351ac701a003043b5002041a6501103b50293764222437222523092a352a35292829a09103032902012a292830a003033c0203293ba0033d2229382935030e1a990122282a35452a3646640225222a3a222b230e2a352a3522162b22152c22166805293b69296801222e2a451a74014627076402d00b03003b2a1a6e010c5029362a371a6d0122262b6a2b2a691a6b0122322b1a6d010c2229031d29351a6b012a1a6f011b10271a71010c3b3b3c3b2d680565222c0c02013b2233382935030e1a600122322a35452a36466402752b2235221f1a55010c2235382935031322122e1a4f010c29680122352a453b466502510b020030223a2b1a40010c5029352a36223b38293503132218341a25010c296801223b2a453b466502252b223b2c1a21010c1a2501220c2b6a221a220d1a02010c2968012b6801223e2b452a462705270665270b27241f040000|@5045,1,@12565,@70,@5046,@826,@56,@1652,@1701,@16334,@5049,@5050,@5052,@5056,@5059,@5062,@105,@1460,@917,@5194,@5198,@16359,@5206,@5208,@5531,@294,@5765,@917,@5785,@9014,@9416,@1649,@16332| 16332:D4,40|fb153b2a370c0b06003032362bfa310c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270e42|@10901,1,@14825,@10900| 16333:D3,8|fb023b4200000000|@1706,1,@12566| 16334:D4,16|fb053b2a36370c29fa1e2d7d04000000|@5048,1,@12567,@5047| 16335:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12568,@5047| 16336:D3,32|fb0328092ca503062b280da502013b03033c02042b2820a04200000000000000|@5051,1,@12569| 16337:D4,24|fb092c3b3bef3b3b2b3030fa23317b070500000000000000|@5054,1,@12570,@5053| 16338:D10,408|fb112e2ea0039e2f2fa003033b02942e30ab2d3b3bef313ba803043b5002041a8e01102a3ba803043b5002041a810110312bb1292ba703041a7d01103b502f3b3bef333ba003052c2aa002013b030330024c2c3ba003051a660102422c2810b1293cb2292808b4291a5d01a503043b5002041a5b0110292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082211b1220e2a2e2808220eec502c95502c2707293b69270502ea2e3ba203033c02082c3b3bef2f2aa86403041a1e01103b502e2808b12d2adc642c0c03b82f2fa003122e3caa2f3caa292b3131311a0401327b07092e30ab2d3b3bef313ba803043b500203fabe102a3ba803043b500203fab210312bb1292ba70303faaf103b502f3b3bef333ba003052c2aa002013b03033002492c3ba00304fa9902402c2810b1293cb2292808b429fa91a503043b500203fa9010292841bd2a3cb22a2a3b3bf02b3b3b220cf05028082211b1220e2a2e2808220eec502c95502c2707333caa343caa292b220d220d220dfa670c2c2a692708020e2e3caa302a303030fa55317b07081f0500000000000000|@5055,1,@12571,@236,@2757,@294,72057594037927935,@286,@255,@5053| 16339:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa290cfa2e2a692b2a6966650202fa2b420000|@5058,1,@12572,@5056,@1323,@5057| 16340:D24,2400|fb3d2b352c362d372e35293528092aa5030629280da502013b03033c0204292820a0035e303a31230732230833230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350220d35220e39220f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260c1e733b270a020129652f3a30230731230832230a33230e34230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35033282ea0f8bc022210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113529282ea09103d72212351a72082a3bdb293b3bef293ba003051a6b08024d28102ab1292810b1293cb2292808b4291a5e08a503043b5002041a5c08103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a340828082d28082810ec503128082d281834ec502b95502b270722193a221a2307221b2308221c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e680522101aec071af1070c291af4070c3b3e3b3b2d68053c3b2b2f6b222d38222e230c2a3b3b3ce3502b2a0c50261af79e0122153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b35221c39221d230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051221c3529282ea09103d6221d351a38072a3bdb293b3bef293ba003051a6107024d28112ab1292810b1293cb2292808b4291a2407a503043b5002041a2207103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a2a0728082d28082811ec503128082d281934ec502b95502b270722243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e680522101ab2061ab7060c291aba060c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c50261a0263221b3b3b2839e35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502226352227392228230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260a260b2605f7ce0533287da00344343b3b282ee3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7840533287ba00344343b3b2820e3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f73a0533285fa00344343b3b283ce3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7f00433285da00344343b3b282de3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f7a60433285ba00344343b3b281fe3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f75c04332829a00344343b3b282fe3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f71204332828a003582210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113529282aa091030a22103b3b2821e350020722151a2b040c502605f7b40333282ca00344343b3b280be3502210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512604f76a0333283ba00312343b3b2830e350220d3b3b2820e350f75203332822a003142210220f361abc030c50343b3b2834e350f73803332823a003672210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051221135292822a0031422152214361a61030c5022103b3b2808e350020d1a5a031a5f0322171a62030c502605f7cb0233287ea003c72210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122113528302aa50306292839a502013b036b3c22161a0d030c50221135293b3bef293ba003051a040302473c2ab1292810b1293cb2292808b4291a9002a503043b5002041a8e02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808287ee4503128082d280934ec502b95502b270722143b3b2ce3502603020d1aad021a920222171a95020c502605f7fe01333fa00309343b3b3be350f7f001283034a50306332839a502013b030b3b22111a73020c50f7d601284134a5030633285aa502013b03033c020d286134a5030633287aa502013b03033c0204332827a003101a51021a560222121a31020c50f79c012814293ba003033b0222293cb2292808b11a40022adc29220fa003033c020c2c3cb229250526041e253b64666403101a12021aef0122121af2010c50f75d01331a19020c293b3bef293ba003051a1402024d28132ab1292810b1293cb2292808b4291a7701a503043b5002041a7501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501add0128082d28082813ec503128082d281b34ec502b95502b2707293b3bef293ba003051ac101024a293cb1292810b1293cb2292808b4291a1d01a503043b5002041a1b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2822e4502c95502c270822153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e68052210faaefab40c29fab80c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50222b35222c39222d230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051261f3435292829a003082211221022127d123b270f4200000000|@5064,1,@12573,@296,@5065,72057594037927935,@286,@5050,@5052,@5056,@5066,@5067,@5072,@360,@5084,@5087,@5184,@451,@294,@5094,@5085,@283,@5063,@359| 16341:D4,24|fb082b352c393b2a2ffa250c2b3b3b2ce366420000000000|@5069,1,@12574,@5068| 16342:D8,248|fb243b2d0c293ba003033f0202293529293fa0038d2e3a2f230730230831230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350343a220c2307220d2308220e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022113a221223062213230a2214230e2215230f2b352e352b352d35302c2e2c2e6805fa9afaa0faa60c29faaa0c3b3e3b3b2d68053c3b2b2f6b221f382220230c2a3b3b3ce3502b2a0c50221c271c02513b300c293ba003033f020229352b282aa00306292829a002013b03103b320c293ba003033f020229356402242b2828a0030629282aa002013b030e3b3232fa4e0c2503511ed63b0207292503511edf3b656465440000|@5071,1,@12575,@5070,@5050,@5052,@5056,@5068| 16343:D13,392|fb222c352d362e352f3930230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350517881cd3b31220d220d1a59010c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965299291039529353b2b299291031229362b3caa292b25042504511e113b6502012a65293ba803043b5002041a1401103b50293ca003081a11012b3bdb0259292810b1293cb2292808b4291a0501a503043b5002041a0301103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050280832299291031a29352a362f2d2ce4502c3cb1292b2505250526031e19260302023b50512b95502b2706650202fac6323b3b2ce366f1027a6d293533a003043b50020229103b50333a342307220c2308220d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022103a221123062212230a2213230e2214230f2b352e352b352d35302c2e2c2e6805fa73fa79fa7f0c29fa830c3b3e3b3b2d68053c3b2b2f6b221e38221f230c2a3b3b3ce3502b2a0c271664270643|@5074,1,@12576,@5075,@288,@296,72057594037927935,@286,@294,@5073,@5050,@5052,@5056| 16344:D19,1512|fb362d3529285ca0f869032d352e392f230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365333533353439220c230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce36528092fa503062e280da502013b03033c02042e2820a0f87602220f35293528092aa5030629280da502013b03033c0204292820a0036222113a22122307221323082214230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502217352218392219230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051260c1e783b270a0201296529285ca003053b50f7a2012211351ae1042a3bdb291ae2041ae7040c293b3bef293ba003051ae204024d28152ab1292810b1293cb2292808b4291ad504a503043b5002041ad304103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aab0428082d28082815ec503128082d281d34ec502b95502b2707293b3bef293ba003051a9f04025029280bb1292810b1293cb2292808b4291a7a04a503043b5002041a7804103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a5b0428082e2c280bec502c95502c270822173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e680522101a0d041a12040c291a15040c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c50222e3529285ca0910318222f35292822a091030a223035293fa0916402013b6402013b0340222e35222f392230230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505126051e5f260402023b5050261d2210352211392212230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122162216221622161a520322177b06172e285ea003542210352210352211392212230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365285c221869285e2a69302a69652217221722171af80222187b0618285c2212692f2a69642211221122111ae10222127b06122940a0035e2d3a2e23072f230830230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35033353439220c230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d1a87023b1a8b026b103b503b50292822a0035a2d3a2e23072f230830230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35033353439220c230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512210270af7a3012d352e392f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350512d3fa0030a301adf013b1aeb016b103b503b5028212ea503062d287ea502013b03033c02042d2820a0030d2d34693333331aac01347b060b2d1a5c010c293b3bef293ba003051ab701024d28162ab1292810b1293cb2292808b4291a5201a503043b5002041a5001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a800128082d28082816ec503128082d281e34ec502b95502b2707293b3bef293ba003051a6401024e292810b1292810b1293cb2292808b429faf8a503043b500203faf7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a220128082e2c2810ec502c95502c2708220d3a220e2307220f23082210230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68052210fa8dfa930c29fa970c3b3e3b3b2d68053c3b2b2f6b2221382222230c2a3b3b3ce3502b2a0c502225222522252225fa7722267b0626641f0400000000000000|@5077,1,@12577,@296,@283,@285,@5078,72057594037927935,@286,@5079,@5050,@5052,@5056,@5075,@5080,@5081,@5082,@5083,@5076| 16345:D4,48|fb072814293ba003033b0220293cb2292808b1fa332adc2930a003033c020c2c3cb229250526041e233b646664420000|@5086,1,@12578,@5085| 16346:D20,872|fb2e2b352c362d373030301a72030c2c3529282ea0f8e2023035313932230b2935299291031229352a362c3b3b2ce3502e3b3b2de36502133b2c0c293ba003033f020229352e3b3b2ce365323528412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b0367303b3bef293ba003051a0e03024b293cb1292810b1293cb2292808b4291a0203a503043b5002041a0003103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f28082d280834ec50280831b12c2a282ee4502c95502c2708291ad50222111ad80222127b05122814293ba003033b0221293cb2292808b11ac7022adc292ea003033c020c2c3cb229250526041e243b6466640367303b3bef293ba003051a7902024b293cb1292810b1293cb2292808b4291a6d02a503043b5002041a6b02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f28082d280834ec50280831b12c2a282ee4502c95502c2708291a580222111a430222127b0512303b3bef293ba003051a4a02024e28152ab1292810b1293cb2292808b4291a0502a503043b5002041a0302103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a130228082d28082815ec50220f28082d281d34ec502b95502b2707293b3bef293ba003051ab601024a293cb1292810b1293cb2292808b4291aaa01a503043b5002041aa801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27081aa7012e3bdb2a3b3bef2a3b3bef2a3ba003032b0256293ba003032c024e2a2ab1292810b1293cb2292808b4291a4201a503043b5002041a4001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c270822153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e680522101afe001a03010c291a06010c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a222c7d2e2c3b3b2de3502a3b3bef3b2aa203392b3b3bef3b2aa80303fad4103b503b502c2808dcfaa92a3bdb29facba003033c0214293b3bef3ca0030b292808fab828083ced02013b6602013b0304283a0212faad2cfab20c293ba00304281802022935642d3b3b2ce36527054400000000|@5089,1,@12579,@5090,@371,72057594037927935,@286,@5094,@5087,@5085,@5084,@5096,@296,@5050,@5052,@5056,@255,@364,@5088,@828| 16347:D5,24|fb072b353b2a2f2ffa260c2f2a6964fa272d7d0600000000|@5092,1,@12580,@5091,@284| 16348:D5,120|fb122d35292e0c03682c3a2d23072e23082f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3503235333934230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051fa33343bdb3b221122112211fa2f0c2a2a69270c02013b641f04000000|@5093,1,@12581,@296,@5091| 16349:D3,72|fb0328412ca503062b285aa502013b03033c020d28612ca503062b287aa502013b03033c020d28302ca503062b2839a502013b03033c020d2b2827a003033c02042b285fa0420000|@5095,1,@12582| 16350:D21,1632|fb342b352c362d372e230b2a3b3b281ee3501a63061a6806311a6c060c2c3b3b2ce350319103302d35292877a003242d35291a5b06a003033c0215293b3bef3ca0030c2928081a470628083ced02013b6402013b6402013bf82a013035313932230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce350513135292878a003a8220c35220d39220e230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d3528302aa50306292839a502013b03033c021f28612aa50306292866a502013b03033c020d28412aa50306292846a502013b031d220c3b3b2843e3501a87051a8c0522131a6f050c220e3b3b2ce3640219220e35293b6928782a69220e3b3b2ce35022113b3b2877e36627050240323528302aa50306292839a502013b031b313b3b2843e3501a4d051a2205220f1a25050c333b3b2ce36402133335293b69323b3b2ce350220c3b3b2877e365642705f7d4042d35292878a003242d35291afd04a003033c0215293b3bef3ca0030c2928081ae90428083ced02013b6402013b03963135323933230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051323528302aa50306292839a502013b03033c021f28612aa50306292866a502013b03033c020d28412aa50306292846a502013b03141a8f041a7c04220f1a5f040c333b3b2ce36402133335293b69323b3b2ce350220c3b3b2878e3652705f70e042e3529282ea003033c02132f35292845a003033c02073035292865a06464f8eb032f3529282ea0f806022e3b3b282be3502f35293b3bef293ba003051a2f040248293cb1292810b1293cb2292808b4291a2304a503043b5002041a210410292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c2708323b3b2ce350220d35220e39220f230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220e3528302aa50306292839a502013b2991f83b01220f35293b3bef293ba003051a9b03024b28172ab1292810b1293cb2292808b4291a7603a503043b5002041a740310292841bd2a3cb22a2a3b3bf02b3b3b32f0501a660328082d28082817ec503128082d281f34ec502b95502b27072213351a50032a3bdb2b3b3bef2a3b3bef2a3ba003032b0254293ba003032d024c2a2ab1292810b1293cb2292808b4291a0b03a503043b5002041a090310292841bd2a3cb22a2a3b3bf02b3b3b32f0503428082d2808220cec50280832b13328082e2c220cec502c95502c2708221b3a221c2307221d2308221e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022213a222223062223230a2224230e2225230f2b352e352b352d35302c2e2c2e680522101aa9021aae020c291ab1020c3b3e3b3b2d68053c3b2b2f6b222f382230230c2a3b3b3ce3502b2a0c50261e0215220f35291a180222161a1b020c22113b3b2ce35051260902023b503035292845a003033c02073135292865a064f8c1013135220c35220d39220e230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce35051220d3529287ea003e22211352212392213230b2935299291031329352a362c3b3b2ce3502e3b3b2de3505102143b2c0c293ba003033f020229352e3b3b2ce3505122123528302aa50306292839a502013b037b22113b3b282be350221235293b3bef293ba003051ac3010250293db1292810b1293cb2292808b4291a7701a503043b5002041a750110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2845e4502c2a3cb1287ee4502c95502c270829faf6221bfafa0c22163b3b2ce327040219221335293b69287e2a6922133b3b2ce35022163b3b2210e36627050298220e3528302aa50306292839a502013b0371220d3b3b282be350220e35293b3bef293ba003051a21010246293cb1292810b1293cb2292808b429facea503043b500203facd10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2845e4502c95502c270829fa562217fa5a0c22123b3b2ce327040214220f35293b69220e3b3b2ce35022113b3b34e36564270602013b6502013b646427054300000000|@5186,1,@12583,@294,@5187,@5090,@373,@5189,@5190,@5192,@3912,@371,72057594037927935,@286,@5193,@296,@5050,@5052,@5056,@5185,@394| 16351:D3,16|fb0328302ca503062b2839a502013b42|@5188,1,@12584| 16352:D3,56|fb0328302ca503062b2839a502013b03033c021f28612ca503062b2866a502013b03033c020d28412ca503062b2846a502013b4200000000|@5191,1,@12585| 16353:D4,8|fb02fa1c42000000|@5197,1,@12586,@5196| 16354:D6,32|fb073b06fa322a69fa362b69fa3a2c692f2c452b462a47270443000000000000|@5199,1,@12587,@16356,@16358,@16355| 16355:D3,80|fb0e29363529299291033d29352a362a352b362a32a003033c021a2a3b3bef323b3befa0030e2a2808332808220c3b3befed02013b030529680102082b250526041e3b3b270402013b64644200000000|@5204,1,@12591| 16356:D4,16|fb052936352cfa202d7e030000000000|@5201,1,@12588,@5200| 16357:D4,32|fb082c929103152c352d362a352b362b30fa250c502a2a6930307d083b430000|@5202,1,@12589,@5200| 16358:D3,24|fb0a2b352c362a2a692c36352a2a692e363b3b2ce3270542|@5203,1,@12590| 16359:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12592| 16360:D3,16|fb022b2830a003033c02032b3ba04200|@5207,1,@12593| 16361:D10,440|fb292b352c361ac7012f692b2b2b6a1ac601326931373223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d292823a003033c0204292836a003033c020d292833a003033c0204292815a0031d0b0200fadf2a22122214220d220dfadc0c5029352a362a2a6927050299220d2306220e230a220f230f2a352a350b0200220d22163b22112d221b221bfab60c5029352a363b063b2c2b2d6b221937221a23092a352a35292829a09103032902012a292830a091031e221e37221f23092a352a35292829a09103032902012a293ba091270502013b0309fa71221ffa750c02013b3b063d312b6a293b6922223a2223230e2a352a3522182b22172c221868052e2a69271a270a44000000|@5210,1,@12594,@16362,@16364,@5214,@5215,@5216,@384,@5209| 16362:D8,96|fb1729363a2a3623062b36230a2c36230e2d36230f2b352e352b352d35302c2e2c2e6805fa52fa58fa5e0c29fa620c3b3e3b3b2d68053c3b2b2f6b220e3638220f36230c2a3b3b3ce3502b2a0cfa49061b0f273eba293db82b2a692714420000|@5212,1,@12595,@5213,@5050,@5052,@5211,@1296| 16363:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa290cfa2e2a692b2a6966650202fa2b420000|@5058,1,@12596,@5211,@1323,@5057| 16364:D3,512|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02c92b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02162b2833a003033c020d2b2815a003033c02042b2836a003033c02052b2a362c80420000000000|@5207,1,@12597| 16365:D3,216|fb022b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d2b2823a003033c02042b2836a003033c020d2b2833a003033c02042b2815a042000000|@5207,1,@12598| 16366:D13,544|fb222e372f23092a352a35292829a09103032902012a333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805332830a003033c0203333ba0030922153b452a46f7cc01330a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880033283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d332823a003033c0204332836a003033c020d332833a003033c0204332815a003ea0b0200220d2823a00320221522182216221a221a1a00010c3b063d2b2b6a2c2a451afb0046502603028c220d2836a0031e221522182216221a221afada0c3b063d2b2b6a2c2a45fad6465026030267220d2833a00315221522182216221afac70c2a2a45fac9465050024b220d2815a00317221522182216221a221afab90c2a2a45fabb465050022d0b02002217221b3c221b2d221e2220faad0c5029352a363b063b2c2b2d6b3b063d2b2b6a322a45fa6d4650260929352a360b02002c2a221e221e221e221efa860c5029352a362f2b692a362b3822152b22132c2213680522232d452a46270e020efa6b2215fa6f0c5022153b452a46270f1f06000000|@5217,1,@12599,@5218,@5369,@5370,@5381,@5383,@5387,@5216,@5215,@384,@5209| 16367:D18,568|fb342f352f230630230a31230f2a352a353437220c23092a352a35292829a09103032902012a292836a0f87c01221037221123092935292829a09103082a3b3b2829e302c52b35293ba003ac22143a22152307221623082217230a2218230e2219230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221e3a221f2307222023082221230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022243a222523062226230a2227230e2228230f2b352e352b352d35302c2e2c2e68051a85011a8a011a8f010c291a92010c3b3e3b3b2d68053c3b2b2f6b2232382233230c2a3b3b3ce3502b2a0c501a7901103b503b502c3b3b2829e35022141a70010c64221423062215230a2216230f2a352a350b02003b0b02003b2a222122232222222622213622241a4d010c5029352a363d1a4b0122241a4e010c030d2a2f6929250726061e2f5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a3629362a3822192b22182c221968053b063d2b302c6b2712028b28232211fae90c221123062212230a2213230f2a352a352217362218370b03003b2afad30c5029362a37fad3312b6a2b2a326afad22220692a22222b222222222221370c281a2223faa50cfac2221e316a292f220e6afabf2225692a22272b222722272226370c22273a2228230e2a352a35280f222cfa770c221a2c22192d221a68053c30220d2c6b271d270b1f05|@5220,1,@12600,@5049,@5050,@5052,@5056,@5059,@5062,@5221,@5357,@5248,@5222,@5198,@16462,@16463,@16464,@16368| 16368:D3,24|fb042b280fa003033c02052b2a362c804200000000000000|@5207,1,@12697| 16369:D17,704|fb351ad30231690b02001ad3022d220c2c1ad4020c5029352a362a220d2b1acf020c220d37220e23092a352a35292829a09103032902012a2940a0f80301221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a1c021a21021a26020c291a29020c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a1002103b503b502c3b3b2829e35022161a07020c641a0a022218690b02002218221b2e2c221d1a01020c5029352a362a3c2b6a296801270bf70901292809a0f80101221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a12011a17011a1c010c291a1f010c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a0601103b503b502c3b3b2829e35022161afd000c641a10012218690b02002218221b2e2c221dfaf80c5029352a362a3b2b6a296801270b02013b28112214faf00c0b020022152218221a2c221a2218221a0c5029352a36220d35220e37220f392c362d382d2b2e2c2f6805220c9291031d220c3529352a362b373b063b06220d2e2e2e2e2e68063d2a692707020130220d3ba0913b062c22182d2c2e221b680622252a452e46271d1f08000000000000|@5223,1,@12601,@16370,@5224,@5225,@5230,@5049,@5050,@5052,@5056,@5059,@5062,@16375,@5236,@16459,@5222| 16370:D3,40|fb042b2811a003033c020c2b40a003033c02042b2809a003033c02052b2a362c8042000000000000|@5207,1,@12602| 16371:D3,16|fb022b2806a003033c02042b2818a042|@5207,1,@12603| 16372:D12,576|fb3a2c372d23092a352a35292829a09103032902012a29340cf80d0131362935333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805221437221523092935292829a09103092a3b3b2829e35002c42b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051a79011a7e011a83010c291a86010c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501a6d01103b502c3b3b2829e35022181a66010c50502216220e452d46270ff712011a5c01321a60010c5031373223092a352a35292829a09103032902012a29220f0c299103df220e37220f23092935292829a09103092a3b3b2829e35002be2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa6cfa72fa780c29fa7c0c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa64103b502c3b3b2829e3502212fa5e0c505026091ef5260302023b502606fa65312a35452a36466427051f0400|@5227,1,@12604,@5049,@5050,@5052,@5056,@5059,@5062,@5228,@5209,@5226| 16373:D4,16|fb073c2e2d2ffa202f7b060500000000|@5232,1,@12605,@5231| 16374:D14,328|fb162d3b3bef2f2aa603043bf730012f3cab293ba203033c02082f3b3bef2a2aa86403041a3901103b50292808b1302adc1a34012a3bdb291a3501a003033c0215293b3bef3ca0030c2928081a210128083ced02013b03db323b3bef293ba003051a1401024b280f2ab1292810b1293cb2292808b4291a0701a503043b5002041a050110292841bd2a3cb22a2a3b3bf02b3b3b32f050fae028082d2808280fec50221128082d281734ec502b95502b2707293b3bef293ba00304fad4024b29280db1292810b1293cb2292808b429fab0a503043b500203faaf10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa9528082e2c280dec502c95502c270829fa8cfa920c29fa960c3b3e3b3b2d68053c3b2b22126b220f382210230c2a3b3b3ce3502b2a22127d15333caa333333fa75347b060b641f04000000000000|@5234,1,@12606,@255,@296,@371,@5235,72057594037927935,@286,@5233,@5050,@5052,@5211,@5231| 16375:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12607| 16376:D20,760|fb3a1a0b032e1a0f03311a13030c2f230630230a31230f2a352a353437220c23092a352a35292829a09103032902012a292818a003301aef022210690b02001aee022d22162c1aef020c5029352a362a22172b1aea020c3b063c2d2d2c6b292d692709f77001292832a0f81701221037221123092935292829a09103082a3b3b2829e302c52b35293ba003ac22143a22152307221623082217230a2218230e2219230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221e3a221f2307222023082221230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022243a222523062226230a2227230e2228230f2b352e352b352d35302c2e2c2e68051a3d021a42021a47020c291a4a020c3b3e3b3b2d68053c3b2b2f6b2232382233230c2a3b3b3ce3502b2a0c501a3102103b503b502c3b3b2829e35022141a28020c641a2b02221469221622162b22152214360c22163a2217230e2a352a3522132b22122c22136805280f221c1a09020c503b2f2b6a292b69270c025222103a221123062212230a2213230e2214230f2b352e352b352d35302c2e2c2e68053b063c1adc012c2c6b221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e6805332a692716221137221223092a352a35292829a09103032902012a29283fa003f2221637221723092935292829a09103092a3b3b2829e35002c02b35293ba003a7221a3a221b2307221c2308221d230a221e230e221f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e6805fab8fabefac40c29fac80c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c50fab0103b503b502c3b3b2829e350221afaa80c505031353236221b2219221cfab90c22182a35452a36466466020a2e22152a35452a36466427111f05000000000000|@5239,1,@12608,@5240,@5241,@5242,@16379,@5224,@5225,@5230,@5049,@5050,@5052,@5056,@5059,@5062,@16380,@5222,@5244,@5238| 16377:D3,32|fb022b2832a003033c020d2b2806a003033c02042b2818a04200000000000000|@5207,1,@12609| 16378:D10,312|fb352b372c23092a352a35292829a09103032902012a29340c2991f8100132321a2d010c5031373223092a352a35292829a09103032902012a2922100c03033c02042922110c299103df220e37220f23092935292829a09103092a3b3b2829e35002be2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa70fa76fa7c0c29fa800c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa68103b502c3b3b2829e3502212fa620c505026091efe3b6602013b270602013b27061f040000000000|@5243,1,@12610,@5209,@5049,@5050,@5052,@5056,@5059,@5062| 16379:D3,24|fb042b283fa003033c02052b2a362c804200000000000000|@5207,1,@12611| 16380:D3,40|fb042b2830a003033c02172b283fa003033c020e2b280fa003033c02052b2a362c80420000000000|@5207,1,@12612| 16381:D23,728|fb50283b2e1ae8020c0b03003b2a1ae7020c5029352a362b372b2b2b6a3b2a220e1adc020c1ae002220d690b02001adf022d22142c1ae0020c5029352a3633333322161ada020c281122161aa2020c1ad60222151ad90222191adc020c1ae0022216690b02002c221c312c1ada020c5029352a36322220220c22122e68053d2a692220352221372222392e362f382d2b2e2c2f68052f2a69222637222723092a352a35292829a09103032902012a293da0f82f01222b37222c23092935292829a09103092a3b3b2829e35002c62b35293ba003ac222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e68051afd011a02021a07020c291a0a020c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c501af101103b503b502c3b3b2829e350222f1ae8010c5050222e37222f23092a352a35292829a09103032902012a29283ba003122214220f2235223522351ac40122367b0736223323092935292829a09103041ab701103b503b502a3b3b3de350220f65270802f029283fa003e9222b37222c23092935292829a09103092a3b3b2829e35002c02b35293ba003a7222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e6805fac9facffad50c29fad90c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c50fac1103b503b502c3b3b2829e350222ffab90c5050220f33223022302230fab322317b07312e27271f0500|@5246,1,@12613,@5222,@5198,@5247,@16390,@5271,@5225,@5273,@5277,@5147,@5242,@16395,@5278,@5049,@5050,@5052,@5056,@5059,@5062,@5238,@5245| 16382:D14,496|fb302c352d362d372e23092a352a35292829a09103032902012a292821a0f8a60132373323092935292829a09103092a3b3b2829e35002c62b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a4a011a4f011a54010c291a57010c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501a3e01103b503b502c3b3b2829e350220d1a35010c5050220c37220d23092a352a35292829a09103032902012a29283aa0038c221123062212230a2213230f2a352a350b02003b0b02003b2a221f221d2223221e1afa000c5029352a36280bfaf822211afb000c030d2a2f6929250726061e2a5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935282f221bfab10c50292709021d221123092935292829a0910303faa3103b503b502a3b3b2821e3503b652708022129283aa0031a0b02003b2a220e220c2212220dfa5c0c502935293b69270402013b2707440000000000|@5249,1,@12614,@5049,@5050,@5052,@5056,@5059,@5062,@5250,@5268,@5248,@5222,@5245| 16383:D15,496|fb422e372f23092a352a35292829a09103032902012a29283aa0f8860133362935220c3a220d2306220e230a220f230e2210230f2b352e352b352d35302c2e2c2e68051ac2013422186a22160c2215034c343b3bef293ca6033f220c3b3bef3c2aa803041aa901103b503b50220d2809dc1aa4012a3bdb291aa501a003033c0215293b3bef3ca0030c2928081a910128083ced02013b6602013b6402013b1a8701061b0f273eba2b03033f02013b2a2ab8293db82d2a6922122a69221c0c50221e37221f23092935292829a09103092a3b3b2829e35002c02b35293ba003a722223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e6805fad3fad9fadf0c29fae30c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c50facb103b503b502c3b3b2829e3502222fac30c505022222d45220c4627170242283a34fab80c50fa7c061b0f273eba293fb8293db82c2a69220f3a221023062211230a2212230e2213230f2b352e352b352d35302c2e2c2e6805221a34452a46270f27051f0600000000000000|@5252,1,@12615,@16384,@255,@296,@364,@1296,@5049,@5050,@5052,@5056,@5059,@5062,@5251| 16384:D4,16|fb072b352c362b362c37fa1c2f7b0603|@5254,1,@12616,@5253| 16385:D9,208|fb192e2da003033c02192e3b3bef2d3b3befa0030d2e28082e2808303b3befed02013b03a22b3a2c23062d230a2e230e2f230f2b352e352b352d35302c2e2c2e6805220f3b3bef293ba00304fa9a024e292817b1292810b1293cb2292808b429fa8ea503043b500203fa8d103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221728082d280834ec50280831b1fa5828082e2c2817ec502c95502c270829fa5ffa650c29fa690c3b3e3b3b2d68053c3b2b316b2212382213230c2a3b3b3ce3502b2a22157d183b1f04000000000000|@5256,1,@12617,@5255,72057594037927935,@286,@5050,@5052,@5211| 16386:D11,224|fb2a2cfaf30c292dfaf60c502c372d23092935292829a09103082a3b3b2829e302b82b35293ba003a2303a31230732230833230a34230e220c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022113a22122307221323082214230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022173a221823062219230a221a230e221b230f2b352e352b352d35302c2e2c2e6805fa66fa6cfa720c29fa760c3b3e3b3b2d68053c3b2b2f6b2225382226230c2a3b3b3ce3502b2a0c50fa5e103b502c3b3b2829e35030fa59317d09270443000000|@5258,1,@12618,@5257,@5209,@5049,@5050,@5052,@5056,@5059,@5062| 16387:D71,504|fb022b0a440088008e0094009a00a000a600ac00b200b800be00c400ca00d000d600dc00e200e800ed00f200f700fc00010106010b01100115011a011f01240129012e01330138013d01420147014c01510156015b01600165016a016f01740179017e01830188018d01920197019c01a101a601ab01b001b501ba01bf01c401c901ce01d301d801dd01e201e7011a7f01f75c011a8101f756011a8301f750011a8501f74a011a8701f744011a8901f73e011a8b01f738011a8d01f732011a8f01f72c011a9101f726011a9301f720011a9501f71a011a9701f714011a9901f70e011a9b01f708011a9d01f702011a9f0102fd1aa20102f81aa50102f31aa80102ee1aab0102e91aae0102e41ab10102df1ab40102da1ab70102d51aba0102d01abd0102cb1ac00102c61ac30102c11ac60102bc1ac90102b71acc0102b21acf0102ad1ad20102a81ad50102a31ad801029e1adb0102991ade0102941ae101028f1ae401028a1ae70102851aea0102801aed01027b1af00102761af30102711af601026c1af90102671afc0102621aff01025d1a020202581a050202531a0802024e1a0b0202491a0e0202441a1102023f1a1402023a1a170202351a1a0202301a1d02022b1a200202261a230202211a2602021c1a290202171a2c0202121a2f02020d1a320202081a350202031a38024200000000000000|@5260,1,@12619,@332,@5120,@5177,@5182,@1819,@5156,@367,@5117,@5261,@383,@5144,@369,@5113,@5130,@1774,@1869,@5153,@386,@5135,@5127,@5160,@5173,@5137,@360,@5262,@1770,@1871,@5169,@5105,@5101,@5263,@416,@448,@365,@1873,@5162,@5103,@5111,@5149,@5180,@5166,@5264,@5133,@5265,@5125,@418,@450,@366,@384,@5109,@5151,@5123,@5266,@5175,@5142,@1772,@2692,@1314,@5267,@5147,@420,@5139,@449,@5183,@5171,@1902,@5158,@5259| 16388:D3,8|fb022b283aa04200|@5269,1,@12620| 16389:D10,288|fb2e2b372c23092a352a35292829a09103032902012a2933a003d730373123092935292829a09103092a3b3b2829e35002bc2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa82fa88fa8e0c29fa920c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa7a103b502c3b3b2829e35034fa750c50503c66022830373123092a352a35292829a09103032902012a29220e0c030b220e220dfa560c503c02013b2705270544000000|@5270,1,@12621,@5049,@5050,@5052,@5056,@5059,@5062,@5251| 16390:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12622| 16391:D3,8|fb022b2818a04200|@5272,1,@12623| 16392:D4,16|fb04fa242c2e6a1f0400000000000000|@5274,1,@12624,@16393| 16393:D10,200|fb1a2b2a370c293ba003b92a363a2b3623062c36230a2d36230e2e36230f2b352e352b352d35302c2e2c2e6805220d3b3bef293ba00304faa7024e29282ab1292810b1293cb2292808b429fa9ba503043b500203fa9a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d280834ec50280831b1fa6528082e2c282aec502c95502c270829fa6cfa720c29fa760c3b3e3b3b2d68053c3b2b316b22113638221236230c2a3b3b3ce3502b2a0c50fa5c061b0f273eba293db82b2a692715020229356442|@5276,1,@12625,@5275,72057594037927935,@286,@5050,@5052,@5211,@1296| 16394:D3,40|fb022b2820a003033c02162b2821a003033c020d2b2818a003033c02042b283aa042000000000000|@5207,1,@12626| 16395:D3,32|fb042b3da003033c020e2b283fa003033c02052b2a362c804200000000000000|@5207,1,@12627| 16396:D15,344|fb341a6b012f690b02002c2a33331a67010c5029352a3633373423092a352a35292829a09103032902012a293fa0f80b01220f37221023092935292829a09103082a3b3b2829e302bd2b35293ba003a722133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805fab2fab8fabe0c29fac20c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50faaa103b502c3b3b2829e3502213faa40c640b02002217221722172cfa9e0c5029352a36220e35220f372210392c362d382d2b2e2c2f68053d22162b336b221d2a452b46271002122210fa78fa7e2212fa820c50220d30452f46270b1f04000000000000|@5280,1,@12628,@16397,@5281,@5049,@5050,@5052,@5056,@5059,@5062,@5278,@5311,@5279,@5242| 16397:D3,16|fb042b3fa003033c02052b2a362c8042|@5207,1,@12629| 16398:D4,64|fb0a0b02003b2a333232fa4c0c5029352a362a929103082a36293ba06402013b030a2a35332a452b4664020b28052b2b6a332a452b466427051f040000000000|@5283,1,@12630,@5282| 16399:D12,336|fb341a63012e690b02002c2a32321a5f010c5029352a3632373323092a352a35292829a09103032902012a292806a0f80a01220e37220f23092935292829a09103082a3b3b2829e302bd2b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805faa9faaffab50c29fab90c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50faa1103b502c3b3b2829e3502212fa9b0c640b02003b2a221822182218fa940c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805222030452a462710020a2f3b6922112a45304664270b1f05000000000000|@5285,1,@12631,@16400,@5284,@5049,@5050,@5052,@5056,@5059,@5062,@5282| 16400:D3,24|fb042b2806a003033c02052b2a362c804200000000000000|@5207,1,@12632| 16401:D25,1320|fb4d2c372d23092a352a35292829a09103032902012a313a32230633230a34230e220c230f2b352e352b352d35302c2e2c2e68050b0200220d2818a003310b02001afc04221b221a2c1afc040c5029352a361afb04063b2c2c2d2e2e68063c2a69293b69322a452e46502609f75404220d283aa0032422153629356422150c283a22171ad2040c503e2a2f6a293b692c2a453046502603f72904220d2820a0f8fd02221537221623092935292829a09103082a3b3b2829e302c32b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051a20041a25041a2a040c291a2d040c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501a1404103b502c3b3b2829e35022191a0d040c6422193a221a230e2a352a35221d37221e23092a352a35292829a09103032902012a29282ea003f9222237222323092935292829a09103082a3b3b2829e302c32b35293ba003ac22263a22272307222823082229230a222a230e222b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022303a22312307223223082233230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022363a223723062238230a2239230e223a230f2b352e352b352d35302c2e2c2e68051a1e031a23031a28030c291a2b030c3b3e3b3b2d68053c3b2b2f6b2244382245230c2a3b3b3ce3502b2a0c501a1203103b502c3b3b2829e35022261a0b030c64221c34221a220c221a68053f3b3c2c6b293b6922142a452c4650260702fd1af0022223690b03002d2a1aed020c502936222823062229230a222a230f2a352a350b02003b1ada022234690b02002c22362b1ad5020c5029352a362a2a692922110c2809223a1a71020c1ac502223d690b02002c223f223f2c1abe020c5029352a363235333734392c362d382d2b2e2c2f6805220e312b6a280b1aa50222491aa8020c030e2922176929251826171e6950023529221769293b2a929103152a352b362a2c692a2a2505250526031e143b660201296522202f221f3022206805221a2b452a46502603261650293522313a2232230e2a352a35222b2b22292c22296805282e22371ad1010c503f2f3c2c6b293b6922232a452c46502616260df72401220d2821a0f80d01221537221623092935292829a09103082a3b3b2829e302c32b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051a1b011a20011a25010c291a28010c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501a0f01103b502c3b3b2829e35022191a08010c643b221a221d221b1a44010c221a3a221b230e2a352a35282f221ffaba0c5022142b22122c22126805332f452a4650260a020f281822161a1d010c50293b452d465029352a36221737221823092a352a35292829a09103032902012a292818a0030d2f2f221f221ffaf5221f7b061f2f929103222f353036293ba00308221f2b453146020e2818221ffacc0c50221f2b453146650207221dfacd452f4627191f04000000000000|@5287,1,@12633,@5271,@5225,@5288,@5222,@5049,@5050,@5052,@5056,@5059,@5062,@16403,@5301,@16409,@5308,@16411,@5278,@5311,@5248,@5313,@5251,@5286,@749| 16402:D4,8|fb02fa1c42000000|@1234,1,@12634,@899| 16403:D10,224|fb112d3b3bef293ba00304faeb024928072ab1292810b1293cb2292808b429fadfa503043b500203fade10292841bd2a3cb22a2a3b3bf02b3b3b32f050fab928082d28082807ec50220c28082d280f34ec502b95502b2707293b3bef293ba00304faad024b292819b1292810b1293cb2292808b429fa89a503043b500203fa8810292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6e28082e2c2819ec502c95502c270829fa65fa6b0c29fa6f0c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f000000000000|@5299,1,@12635,@5300,72057594037927935,@286,@5298,@5050,@5052,@5211| 16404:D6,32|fb073b06fa322a69fa362f2c6afa392c692f2c452b462a472704430000000000|@5302,1,@12636,@16406,@16408,@16405| 16405:D3,80|fb0e29363529299291033d29352a362a352b362a32a003033c021a2a3b3bef323b3befa0030e2a2808332808220c3b3befed02013b030529680102082b250526041e3b3b270402013b64644200000000|@5307,1,@12640| 16406:D4,16|fb052936352cfa202d7e030000000000|@5304,1,@12637,@5303| 16407:D4,32|fb082c929103152c352d362a352b362b30fa250c502a2a6930307d083b430000|@5305,1,@12638,@5303| 16408:D3,104|fb102b352c362b373529299291034129352a362a352b362a31a003033c02192a3b3bef313b3befa0030d2a2808322808343b3befed02013b030a302a313436220d7b050b2b250526041e3f3b270402102c2c692e37352a2a6930373b3b2ce3666466420000000000|@5306,1,@12639| 16409:D3,24|fb042b2809a003033c02052b2a362c804200000000000000|@5207,1,@12641| 16410:D17,488|fb3d2c372d23092a352a35292829a09103032902012a29281ea0f8b70131362935333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805333b3bef3b2aa803041ab301103b50342808dc1ab1012a3bdb221737221823092935292829a09103092a3b3b2829e35002c42b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a17011a1c011a21010c291a24010c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a0b01103b502c3b3b2829e350221b1a04010c50502c1a0501a003033c02142c3b3bef3ca0030b2c2808faf228083ced02013b03033c021d2cfaeba003033c02142c3b3bef3ca0030b2c2808fad828083ced02013b034e221a3a221b2306221c230a221d230e221e230f2b352e352b352d35302c2e2c2e6805fab3fa79fa7f0c29fab30c3b3e3b3b2d68053c3b2b2f6b2228382229230c2a3b3b3ce3502b2a0c50261002023b50221922114530462712020bfa8a333333fa8d347b060a270544000000000000|@5310,1,@12642,@255,@296,@5049,@5050,@5052,@5056,@5059,@5062,@451,@373,@5309,@5211,@5224,@5225| 16411:D3,32|fb042b282ea003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12643| 16412:D3,8|fb023b4200000000|@5312,1,@12644| 16413:D10,120|fb0f2d372e23092a352a35292829a09103032902012a292820a003033c0216292821a003033c020d292818a003033c020429283aa00317fa5732690b02002c220e220d2cfa520c50293527040209283a33fa4d0c50fa51280bfa55220cfa590c030d3b343434fa580c2a2a69640203293b6927061f040000|@5315,1,@12645,@16414,@5278,@5251,@749,@5277,@5314,@5313| 16414:D3,32|fb042b282fa003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12646| 16415:D10,288|fb2e2b372c23092a352a35292829a09103032902012a2933a003d730373123092935292829a09103092a3b3b2829e35002bc2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa82fa88fa8e0c29fa920c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa7a103b502c3b3b2829e35034fa750c50503c66022830373123092a352a35292829a09103032902012a29220e0c030b220e220dfa560c503c02013b2705270544000000|@5316,1,@12647,@5049,@5050,@5052,@5056,@5059,@5062,@5251| 16416:D11,344|fb3c2b3629352d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68052210352211372212392b302c302d68051a3a0106221622102217312e2e68063c2a69221537221623092935292829a09103092a3b3b2829e35002be2b35293ba003a722193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e6805fa95fa9bfaa10c29faa50c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c50fa8d103b502c3b3b2829e3502219fa870c5050221837221923092a352a35292829a09103032902012a292818a00311313b6929220d22212221fa6422227b0622221e3245220c46271b1f0400000000|@5317,1,@12648,@5288,@5049,@5050,@5052,@5056,@5059,@5062,@5286| 16417:D6,48|fb132e370b03003b2afa3d0c5029362a37fa3d2b2b6a3b220c220e3436220e2212220d30fa3222127b0a0e0000000000|@5321,1,@12649,@5198,@16418,@5320| 16418:D7,120|fb0c2b2a370c293ba003642c3b3bef293ca603372d3b3bef3c2aa80303fa71103b502e2809dcfa702a3bdb29fa72a003033c0214293b3bef3ca0030b292808fa5f28083ced02013b6602013bfa5a061b0f273eba2b03033f02013b2a2ab8293db82d2a69342a6933360c2a27090202293564420000000000|@5322,1,@12650,@255,@296,@364,@1296| 16419:D37,3416|fb431a6b0d326929331a6c0d341a700d0c32373323092a352a35292829a09103032902012a220e2306220f230a2210230f2a352a352e0a44008800880088008800880088008800880088008800880088008c00880088008800e3008800fe01880088008800880088008800880088005d03880088008800880088008800880088008800880088008800880088008800880088008800880088008800900488008800880088004a078800880088008800b6088800d1098800880088008800880088003bf7a10a22133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68051a9e0c221f69221b35221c361a9a0c2221692b2b2b6a0b0200302d3c342d22281a8e0c0c5029352a363b2b2b6a293b692715f74a0a1a810c221569221437221523092935292829a09103082a3b3b2829e302c52b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051ae80b1aed0b1af20b0c291af50b0c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501adc0b103b503b502c3b3b2829e35022181ad30b0c641ad60b221622186a0b0200312d2b221d1ace0b0c5029352a36281a2b2b6a2a362b3822122b22112c221268053b2d2b6a293b692710f72f09221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051ad30a1ad80a1add0a0c291ae00a0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501ac70a103b503b502c3b3b2829e35022171abe0a0c64221723062218230a2219230f2a352a350b02003b0b02003b2a2226222622231ab20a0c5029352a363d1ab00a22271ab30a0c030d2a2f6929250726061e285002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270cf7d007221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a74091a79091a7e090c291a81090c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a6809103b503b502c3b3b2829e35022171a5f090c641a8a0922191a8d09221a1a00090c1a8c09221a690b02002219221d2e2c221e22200c5029352a360b02002c2a222322251a72090c5029352a362f2b692a362b3822172b22162c221768053d2d2b6a293b692715f79d06221323062214230a2215230f2a352a35221837221923092935292829a09103082a3b3b2829e302c52b35293ba003ac221c3a221d2307221e2308221f230a2220230e2221230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022263a22272307222823082229230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222c3a222d2306222e230a222f230e2230230f2b352e352b352d35302c2e2c2e68051a31081a36081a3b080c291a3e080c3b3e3b3b2d68053c3b2b2f6b223a38223b230c2a3b3b3ce3502b2a0c501a2508103b503b502c3b3b2829e350221c1a1c080c64221c37221d23092a352a35292829a09103032902012a29283ba003e3222137222223092935292829a09103092a3b3b2829e35002c62b35293ba003ac22253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e68051a37071a3c071a41070c291a44070c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c501a2b07103b503b502c3b3b2829e35022251a22070c50503c6602013b1a67072224690b02001a66072d22282c1a67070c5029352a362a2a692811222a1a5f070c222a2306222b230a222c230f2a352a350b02003b1a4f072235690b02001a2e072d22392c1a2f070c5029352a362a2a6928111a3907223c1ae4060c030d29316929250926081e31500238293169293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652c362d3822132b22122c22136805220d2d452a4650260526075029352a3629362a3822222b22212c22226805220e2e693e2b22182c6b293b692726f7e303221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a87051a8c051a91050c291a94050c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a7b05103b503b502c3b3b2829e35022171a72050c64221723062218230a2219230f2a352a350b02003b0b02003b2a222522272226222622261aca050c5029352a363d1a600522271a63050c030d2a2f6929250726061e2c5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a363f2b2b6a293b69270ff777021a6605221569221437221523092935292829a09103082a3b3b2829e302c52b35293ba003ac22183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e68051a15041a1a041a1f040c291a22040c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c501a0904103b503b502c3b3b2829e35022181a00040c641a8b04221622186a0b0200312d2b221d1afb030c5029352a36281a2b2b6a2a362b3822122b22112c221268053b2d2b6a293b692710f75c01221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a00031a05031a0a030c291a0d030c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501af402103b503b502c3b3b2829e35022171aeb020c64221723062218230a2219230f2a352a350b02003b0b02003b2a2226222622221a5f030c5029352a363d1add0222271ae0020c030d2a2f6929250726061e285002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270c221437221523092a352a35292829a09103032902012a292830a003e0221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051a88011a8d011a92010c291a95010c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501a7c01103b503b502c3b3b2829e350221d1a73010c646602013b221a37221b23092a352a35292829a09103032902012a290a440088008800880088008800880088008800880088008800880088008800880088008e00880091008800880088008800880088008800880094008800880088008800880088008800880088008800880088008800880088008800880088008800880097009a0088008800880088009d008800880088008800a0008800a30088008800880088008800880029280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03293b22212221222122212221222122211a3b010c293ba00304220c020a220c2a1a3301221d7e236402013427181f0800000000000000|@5324,1,@12651,@16420,@5325,@5242,@16421,@16422,@5327,@16440,@5049,@5050,@5052,@5056,@5059,@5062,@16441,@5341,@5346,@5311,@5248,@5349,@5241,@16447,@5350,@16449,@5224,@5225,@5222,@16450,@5271,@5352,@16453,@16454,@5354,@5320,@5323| 16420:D3,184|fb042b0a440088008800880088008800880088008800880088008800880088008800880088008e00880091008800880088008800880088008800880094008800880088008800880088008800880088008800880088008800880088008800880088008800880097009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@5207,1,@12652| 16421:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@5207,1,@12653| 16422:D10,176|fb1929363a2a3623062b36230a2c36230e2d36230f2b352e352b352d35302c2e2c2e6805220c3b3bef293ba00304fa98024e29282ab1292810b1293cb2292808b429fa8ca503043b500203fa8b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d280834ec50280831b1fa5628082e2c282aec502c95502c270829fa5dfa630c29fa670c3b3e3b3b2d68053c3b2b316b22103638221136230c2a3b3b3ce3502b2a0c50fa4d2712420000|@5326,1,@12654,@5275,72057594037927935,@286,@5050,@5052,@5211,@749| 16423:D24,1368|fb5b2b372c23092935292829a09103082a3b3b2829e302be2b35293ba003a62f3a30230731230832230a33230e34230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022103a22112307221223082213230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e68051ad8041add041ae2040c291ae5040c3b3e3b3b2d68053c3b2b2f6b2224382225230c2a3b3b3ce3502b2a0c501acc04103b503b502c3b3b2829e3502f1ac4040c640b03003b2a1ac2040c5029352a362b372b2b2b6a3c2a22101ab7040c1abb042215690b02001aba042d22152c1abb040c5029352a362a22162b1ab6040c281122171ab6040c221737221823092a352a35292829a09103032902012a29280ca0f87501220d3ba003033b024f221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e68051a72041a0f041a14040c291a6f040c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c2710221d37221e23092935292829a09103082a3b3b2829e302c52b35293ba003ac22213a22222307222323082224230a2225230e2226230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222b3a222c2307222d2308222e230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022313a223223062233230a2234230e2235230f2b352e352b352d35302c2e2c2e68051a42031a47031a4c030c291a4f030c3b3e3b3b2d68053c3b2b2f6b223f382240230c2a3b3b3ce3502b2a0c501a3603103b503b502c3b3b2829e35022211a2d030c640b02001a4503222a22262c1a45030c5029352a36222835222937222a392c362d382d2b2e2c2f6805221730221a332d680528062a69222f2a452c462712f7a6021a38032222690b02002c220d22132215220f22282f22271a29030c5029352a36222237222323092a352a35292829a09103032902012a0b02002c3da0f80801222a37222b23092935292829a09103092a3b3b2829e35002c62b35293ba003ac222e3a222f2307223023082231230a2232230e2233230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022383a22392307223a2308223b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223e3a223f23062240230a2241230e2242230f2b352e352b352d35302c2e2c2e68051ae5011aea011aef010c291af2010c3b3e3b3b2d68053c3b2b2f6b224c38224d230c2a3b3b3ce3502b2a0c501ad901103b503b502c3b3b2829e350222e1ad0010c50501a2a022233691a2c02223222306a0b02002d2d2b22351a24020c5029352a36332b452a4650260a0206293b4532465029352a36222c37222d23092a352a35292829a09103032902012a0b02002c2842a003fd223437223523092935292829a09103092a3b3b2829e35002c02b35293ba003a722383a22392307223a2308223b230a223c230e223d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022423a22432307224423082245230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022483a22492306224a230a224b230e224c230f2b352e352b352d35302c2e2c2e6805fab5fabbfac10c29fac50c3b3e3b3b2d68053c3b2b2f6b2256382257230c2a3b3b3ce3502b2a0c50faad103b503b502c3b3b2829e3502238faa50c50501a1701223c22396a0b020022402d2b223e1afe000c5029352a36322b452a465026090206293b4532465029352a36223835223937223a392c362d382d2b2e2c2f6805221b2212693b063b2c2c3b220d2e68063b2a6922412a452e462724271a1f0600|@5328,1,@12655,@5049,@5050,@5052,@5056,@5059,@5062,@5198,@5247,@16425,@5271,@5225,@5230,@5222,@5329,@5211,@16426,@5330,@16433,@16434,@5341,@16424| 16424:D4,32|fb0b0b02002e3b3b2f362d3137fa290c5029352a362a2a692705420000000000|@5344,1,@12669,@5343| 16425:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12656| 16426:D3,32|fb042b3da003033c020e2b2842a003033c02052b2a362c804200000000000000|@5207,1,@12657| 16427:D9,88|fb15fa6c33fa712efa760c3035313632372ffa740c0b0200220e2a32220c30fa6f0c5029352a36220c35220d37220e392c362d382d2b2e2c2f6805fa5b0622162a332d2217221a680622122a452c46270f1f080000000000|@5332,1,@12658,@5333,@5147,@5242,@5273,@5334,@5331| 16428:D3,64|fb022b2826a003033c020d2b2806a003033c02042b2818a003033c021f2b2820a003033c02162b2821a003033c020d2b2818a003033c02042b283aa042000000|@5207,1,@12659| 16429:D19,1016|fb452d372e23092a352a35292829a09103032902012a292826a0f82901310346323a33230634230a220c230e220d230f2b352e352b352d35302c2e2c2e68051ace031ad3031ad8030c291adb030c3b3e3b3b2d68053b3b2b2f6b2217230c2a2a0c50260f02023b5032373323092935292829a09103082a3b3b2829e302c52b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a2c031a11031a16030c291a29030c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501a1003103b503b502c3b3b2829e350220d1a07030c646602013b1a0603220d690b02001a05032d22102c1a06030c5029352a362a22112b1a01030c221137221223092a352a35292829a09103032902012a0b02002c2825a0f82201221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051a0a021aef011af4010c291a07020c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501aee01103b503b502c3b3b2829e350221d1ae5010c641a08022220690b02002c222222212c1a01020c5029352a362a68011afd010622152b2b22196b2216352217372218392f3630382d2b2e2c2f6805221330452a4650261302121ad30106333b2b220e6b2b2a45220c46505129352a36221b37221c23092a352a35292829a09103032902012a29283ea0f80d01222037222123092935292829a09103082a3b3b2829e302bf2b35293ba003a722243a22252307222623082227230a2228230e2229230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222e3a222f2307223023082231230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022343a223523062236230a2237230e2238230f2b352e352b352d35302c2e2c2e6805fab6fa9cfaa20c29fab60c3b3e3b3b2d68053c3b2b2f6b2242382243230c2a3b3b3ce3502b2a0c50fa9e103b503b502c3b3b2829e3502224fa960c640b020022292a222922292229fac60c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805223130452a462710020a2f3b6922222a45304664271c1f05|@5336,1,@12660,@5337,@5050,@5052,@5338,@5049,@5056,@5059,@5062,@16431,@5224,@5225,@5230,@16432,@5278,@5335,@5334| 16430:D6,48|fb082b929103242b352c36293ba003093e2b69293b6964020f3e2b692afa290cfa2e2a692b2a6966650202fa2b420000|@5058,1,@12661,@5338,@1323,@5057| 16431:D3,32|fb042b283ea003033c02042b2825a003033c02052b2a362c8042000000000000|@5207,1,@12662| 16432:D3,24|fb042b283ea003033c02052b2a362c804200000000000000|@5207,1,@12663| 16433:D3,24|fb042b2842a003033c02052b2a362c804200000000000000|@5207,1,@12664| 16434:D11,104|fb1e0b03003b2afa770c5029352a362b372b2b2b6a3c2a3337fa6d0cfa72220c690b0200fa722d220f372cfa730c5029352a362a2210372bfa6e0c2811221137fa6e0c0b0200221630220d220f322219362f221b37fa610c5029352a362a2a692716420000000000|@5340,1,@12665,@5198,@5247,@16435,@5271,@5225,@5230,@5222,@5330| 16435:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12666| 16436:D11,320|fb311a53012f692e0c29352a362e372f23092a352a35292829a09103032902012a293da0f8090133373423092935292829a09103082a3b3b2829e302bf2b35293ba003a7220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805fa9efaa4faaa0c29faae0c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50fa96103b503b502c3b3b2829e350220efa8e0c640b0200221422142b2214fa880c5029352a36220f2b69220f352210372211392d362e382d2b2e2c2f6805221b30452a462710020a2f3b69220c2a4530466427081f040000|@5342,1,@12667,@16437,@5049,@5050,@5052,@5056,@5059,@5062,@5341| 16437:D3,16|fb042b3da003033c02052b2a362c8042|@5207,1,@12668| 16438:D16,216|fb250b03003b2afae70c5029352a362b372b2b2b6a3b2a220cfadd0cfae22211690b0200fae22d22112cfae40c5029352a362a22122bfae00c3434342215fae00c0b0200221a031f221637221723092a352a35292829a09103032902012a292811a091270502013b03033c020222190308293b452f4650022e28112217faa90cfaae221dfab2221afab60c0b02002220221c332cfab20c5029352a362a6801312a452b4650260829352a363035313732392c362d382d2b2e2c2f6805fa9206220f2a332d22122227221a680722212a452c46271e1f060000|@5345,1,@12670,@5198,@5247,@16439,@5271,@5225,@5230,@5273,@5222,@5277,@5147,@5242,@5278,@5331| 16439:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12671| 16440:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@5207,1,@12672| 16441:D4,32|fb0b0b02002e3c3c2f362d3137fa290c5029352a362a2a692705420000000000|@5344,1,@12673,@5343| 16442:D15,368|fb391a83012e690b02001a83012d322c1a85010c5029352a362a2a692b342c1a7e010c3437220c23092a352a35292829a09103032902012a0b02002c2825a0f80f01221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805fac9facffad50c29fad90c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50fac1103b503b502c3b3b2829e3502217fab90c64fabd2219690b02002c221c221c2cfab70c5029352a362a68012215352216372217392d362e382d2b2e2c2f6805221130452a465026110206293b4534465029352a363c2a220d2d6b22182a452b4627131f050000000000|@5347,1,@12674,@16444,@5348,@5225,@5230,@5049,@5050,@5052,@5056,@5059,@5062,@16443,@5278| 16443:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@5207,1,@12677| 16444:D3,24|fb042b2825a003033c02052b2a362c804200000000000000|@5207,1,@12675| 16445:D3,32|fb022b2811a003033c020d2b2806a003033c02042b2818a04200000000000000|@5207,1,@12676| 16446:D3,32|fb022b2832a003033c020d2b2806a003033c02042b2818a04200000000000000|@5207,1,@12678| 16447:D3,200|fb042b2806a003033c02042b2818a003033c02b22b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c804200|@5207,1,@12679| 16448:D7,104|fb162c372d23092a352a35292829a09103032902012a292818a0033d0b0200fa5f34220d2cfa610c5029352a362a220e2bfa5d0c0b02002d2a22132213fa590c5029352a363b063c32322c6b292d6922172a452d46270e0205323b45344627051f04000000000000|@5351,1,@12680,@5224,@5225,@5230,@5350| 16449:D3,32|fb042b2811a003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12681| 16450:D3,32|fb042b2811a003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12682| 16451:D9,96|fb190b0200fa71fa77342cfa7b0c5029352a362a220c2bfa770c2809220dfa780cfa7d220d690b0200220d22122e2c221222140c5029352a363135323733392c362d382d2b2e2c2f6805303b316a2a221122112c6b221c2a452c4627151f0700|@5353,1,@12683,@5348,@5311,@5225,@5230,@5222,@16452| 16452:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@5207,1,@12684| 16453:D3,184|fb042b0a44008800880088008800880088008800880088008800880088008800880088008e009100880094008800880088008800880088008800880097008800880088008800880088008800880088008800880088008800880088008800880088008800880088009a0088008800880088009d008800880088008800a0008800a3008800880088008800880088002b280ca002163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042000000|@5207,1,@12685| 16454:D4,32|fb0b0b02002e3c3b2f362d3137fa290c5029352a362a2a692705420000000000|@5344,1,@12686,@5343| 16455:D10,96|fb1afa742e690b0200fa752d322cfa780c5029352a362a2a692b342cfa720c2809220cfa730cfa78220e690b02002c221122112cfa720c5029352a363235333734392c362d382d2b2e2c2f680528052a2210336b221b2a452b4627161f050000|@5355,1,@12687,@16457,@5224,@5225,@5230,@5222,@16456,@5278| 16456:D3,184|fb042b0a4400880088008e008800880088008800880088008800880088008800880088009100940088009700880088008800880088008800880088009a008800880088008800880088008800880088008800880088008800880088008800880088008800880088009d008800880088008800a0008800880088008800a3008800a6008800880088008800880088002b280ca002193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02052b2a362c8042|@5207,1,@12689| 16457:D3,24|fb042b2809a003033c02052b2a362c804200000000000000|@5207,1,@12688| 16458:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12690,@5323| 16459:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12691| 16460:D11,256|fb2e2b372c23092a352a35292829a09103032902012a2932a003d630373123092935292829a09103082a3b3b2829e302bd2b35293ba003a6343a220c2307220d2308220e230a220f230e2210230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022153a22162307221723082218230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221b3a221c2306221d230a221e230e221f230f2b352e352b352d35302c2e2c2e6805fa63fa69fa6f0c29fa730c3b3e3b3b2d68053c3b2b2f6b222938222a230c2a3b3b3ce3502b2a0c50fa5b103b502c3b3b2829e35034fa56220c7d0d66020b31fa540c2932fa57337e0a27054300|@5356,1,@12692,@5049,@5050,@5052,@5056,@5059,@5062,@5257,@5209| 16461:D3,8|fb022b2835a04200|@5358,1,@12693| 16462:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12694| 16463:D3,32|fb042b280fa003033c02042b281aa003033c02052b2a362c8042000000000000|@5207,1,@12695| 16464:D3,16|fb042b2a370c502b2a362c8000000000|@5359,1,@12696| 16465:D27,1520|fb481a03062f1a0706321a0b060c1a0f06306931230632230a33230f2a352a35220d37220e23092a352a35292829a09103032902012a0b02002c2822a0f85c01221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051a4a051a4f051a54050c291a57050c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501a3e05103b503b502c3b3b2829e35022191a35050c64221a36221b370b03003b2a1a2d050c5029362a371a2c05312b6a2b2a326a1a2a052223692a22252b222422242223360c281a22261a1c050c1a20052226690b020030222b2e2c222b222b222a0c502935222b3a222c230e2a352a35280f22301af1040c22272c22262d222768053c30220e2c6b221d2a452b4650261df737042c2835a0f83d01221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051ae7031aec031af1030c291af4030c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501adb03103b503b502c3b3b2829e35022191ad2030c64221a36221b370b03003b2a1aca030c5029362a371ae903312b6a2b2a326a1ae7032223692a22252b222422242223360c22253a2226230e2a352a3522202b221f2c22206805280f222b1aa4030c3b063e312d2c6b22182a452d46502618f7f3021aad032215690b02001aac032d221b2c1aad030c5029352a36221b2306221c230a221d230f2a352a35222037222123092a352a35292829a09103032902012a292821a0f89902222537222623092935292829a09103082a3b3b2829e302c52b35293ba003ac22293a222a2307222b2308222c230a222d230e222e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022333a22342307223523082236230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022393a223a2306223b230a223c230e223d230f2b352e352b352d35302c2e2c2e68051a64021a69021a6e020c291a71020c3b3e3b3b2d68053c3b2b2f6b2247382248230c2a3b3b3ce3502b2a0c501a5802103b503b502c3b3b2829e35022291a4f020c64220f222a22101a9c020c222a37222b23092a352a35292829a09103032902012a29282fa00321222f3a2230230e2a352a3522172b22162c221768053b063e3b2c2c6b2706f730011a6302222f69223037223123092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a60088008800880088008800880088008800880088008800880088008800a9008800880088008800ac008800880088008800880088008800880029283da0021f3c021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c034b2236362237370b03003b2a1a31010c5029362a371a8801312b6a2b2a326a2922402211223f223f223e360c22403a2241230e2a352a3522282b22272c222868053b063e302c2c6b271102140b020022392239332c2239223922380c50293566270622303a2231230e2a352a35282f2235fae50c221a35221b37221c392b2f2c302d68053b063b063b063b06220d22242d2d303222283068083b2a69222a2a45304650261a02123b063f220d2b220e6b22122a45220d465051261029352a362a2a2217221a2218221d2215fadb221a7b0919000000000000|@5362,1,@12698,@5363,@5364,@5242,@16467,@5049,@5050,@5052,@5056,@5059,@5062,@5198,@16468,@16469,@5222,@16470,@16471,@16472,@16473,@5224,@5225,@5230,@16474,@16475,@5361| 16466:D3,40|fb022b2822a003033c020d2b2806a003033c02042b2818a003033c02042b2835a042000000000000|@5207,1,@12699| 16467:D3,32|fb042b40a003033c020e2b2809a003033c02052b2a362c804200000000000000|@5207,1,@12700| 16468:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12701| 16469:D3,48|fb042b280fa003033c02042b281aa003033c02162b40a003033c020e2b2809a003033c02052b2a362c80420000000000|@5207,1,@12702| 16470:D3,40|fb042b280fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c8042000000000000|@5207,1,@12703| 16471:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12704| 16472:D3,40|fb042b280fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c8042000000000000|@5207,1,@12705| 16473:D3,40|fb042b2821a003033c02162b40a003033c020e2b2809a003033c02052b2a362c8042000000000000|@5207,1,@12706| 16474:D3,48|fb042b280ba003033c02042b282fa003033c02162b40a003033c020e2b2809a003033c02052b2a362c80420000000000|@5207,1,@12707| 16475:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12708| 16476:D11,632|fb2e2e372f23092a352a35292829a09103032902012a2940a0f8280133373423092935292829a09103082a3b3b2829e302c52b35293ba003ac220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e68051ad8011add011ae2010c291ae5010c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c501acc01103b503b502c3b3b2829e350220e1ac3010c640b0200220f221222102c22141aba010c5029352a363b063b0622182d3c2e2e2e68063d2a69221935221a37221b39303631382d2b2e2c2f68052f2a222022202220222022201a890122217b0921292809a0f8200133373423092935292829a09103082a3b3b2829e302bf2b35293ba003a7220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805faaafab0fab60c29faba0c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50faa2103b503b502c3b3b2829e350220efa9a0c640b0200220f221222102c2214fa920c5029352a363b063b0622182d3b2e2e2e68063d2a69221935221a37221b39303631382d2b2e2c2f68052f2a22202220222022202220fa6222217b092134220e45220d4627051f070000|@5365,1,@12709,@5049,@5050,@5052,@5056,@5059,@5062,@5236,@5361| 16477:D4,24|fb0a3b2e302c363030220cfa23327b090700000000000000|@5367,1,@12710,@5366| 16478:D12,608|fb2f1a7302316930373123092a352a35292829a09103032902012a292830a003f2220c37220d23092935292829a09103082a3b3b2829e302c52b35293ba003ac22103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e68051ac1011ac6011acb010c291ace010c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c501ab501103b503b502c3b3b2829e35022101aac010c643b2212221222122212221222121aa20122137b0913220c37220d23092a352a35292829a09103032902012a292823a003033c0204292836a00324220d2212220c2212221222150c3b2214221422142214221422141a5b010c2a2a696502fe221137221223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03350b02002212221a3c22182d221b221dfa850c5029352a363b063b2c2b2d6b3b221f221f221f221f221f221ffa610c2a2a69270802013b2705270527061f07|@5368,1,@12711,@16479,@5049,@5050,@5052,@5056,@5059,@5062,@5366,@5216| 16479:D3,208|fb042b2836a003033c02b72b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02042b2830a003033c02052b2a362c8042000000|@5207,1,@12712| 16480:D3,200|fb022b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c020d2b2823a003033c02042b2836a0420000000000|@5207,1,@12713| 16481:D18,456|fb302d23062e230a2f230f2a352a3532373323092935292829a09103082a3b3b2829e302c52b35293ba003ac220d3a220e2307220f23082210230a2211230e2212230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022173a2218230722192308221a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a35011a3a011a3f010c291a42010c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c501a2901103b503b502c3b3b2829e350220d1a20010c64220d2306220e230a220f230f2a352a350b02003b0b02001a0c011a1101221b2c1a13010c5029352a362a221c2b1a0e010c2811221d1a0e010c1a1201221d690b0200222222222e2c22231a09010c5029352a363135323733392c362d382d2b2e2c2f6805faf8062a22112b2212220c68053dfaba222dfaee0c030e2922166929251726161e7050023529221669293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965221f30221e31221f680522192b452a4650260326155029352a3629362a3822142b22132c221468053c2e2b6a27161f04000000|@5372,1,@12714,@5049,@5050,@5052,@5056,@5059,@5062,@5348,@5311,@5225,@5230,@5222,@16482,@5236,@5371,@5248| 16482:D3,32|fb042b3da003033c02042b280fa003033c02052b2a362c804200000000000000|@5207,1,@12715| 16483:D4,8|fb02fa1c10000000|@5378,1,@12716,@5377| 16484:D3,8|fb022b2833a04200|@5382,1,@12717| 16485:D12,384|fb2e2e23062f230a30230f2a352a3533373423092935292829a09103082a3b3b2829e302c02b35293ba003a8220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e6805faeefaf4fafa0c291afd000c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c50fae5103b503b502c3b3b2829e350220efadd0c64220e2306220f230a2210230f2a352a350b02003b0b02003b2a221b221d221c2220221dfabe0c5029352a363dfabd221efac10c030d2a2f6929250726061e295002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352a3629362a3822142b22132c221468053b2e2b6a27161f050000000000|@5385,1,@12718,@5049,@5050,@5052,@5056,@5059,@5062,@5384,@5357,@5248| 16486:D23,1152|fb3e1a930430690b02001a93042d342c1a95040c5029352a362a220c2b1a90040c2821220d1a90040c1a9404220f69220e37220f23092a352a35292829a09103032902012a29282fa0033322133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e68053b3b2b6a3b061a52042a2c6a270cf74601221337221423092a352a35292829a09103032902012a290a440088008800880088008800880088008800880088008800880088008800880088008e0088009100880088008800880088008800880088009400880088008800880088008800880088008800880088008800880088008800880088008800880088008800970088008800880088009a0088008800880088009d008800a00088008800880088008800880029280ca002133c02103c020d3c020a3c02073c02043c02013c033e221823062219230a221a230f2a352a35221b221e2211221f1a7a030c221e3a221f230e2a352a35322b312c3268053b2f2b6a3b061a56032a2c6a270d02491a5c03221a690b02001a1b032d221e2c1a1c030c5029352a362a221f2b1a17030c280922201a17030c1a3b032222690b0200222222252e2c22271a32030c5029353b06322a2c6a270e2705282f22151aed020c221537221623092a352a35292829a09103032902012a2940a0f80301221a37221b23092935292829a09103082a3b3b2829e302c52b35293ba003ac221e3a221f2307222023082221230a2222230e2223230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022283a22292307222a2308222b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e3a222f23062230230a2231230e2232230f2b352e352b352d35302c2e2c2e68051a6a021a6f021a74020c291a77020c3b3e3b3b2d68053c3b2b2f6b223c38223d230c2a3b3b3ce3502b2a0c501a5e02103b503b502c3b3b2829e350221e1a55020c641a58022220690b0200222022232e2c22251a0f020c5029352a362a3c2b6a296801270bf70a01292809a0f80201221a37221b23092935292829a09103082a3b3b2829e302c52b35293ba003ac221e3a221f2307222023082221230a2222230e2223230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022283a22292307222a2308222b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e3a222f23062230230a2231230e2232230f2b352e352b352d35302c2e2c2e68051a60011a65011a6a010c291a6d010c3b3e3b3b2d68053c3b2b2f6b223c38223d230c2a3b3b3ce3502b2a0c501a5401103b503b502c3b3b2829e350221e1a4b010c641a56012220690b0200222022232e2c22251a05010c5029352a362a3b2b6a296801270b02013b2811221cfabd0c0b0200221d222022222c222222211a23010c5029352a362216352217372218392c362d382d2b2e2c2f6805220c9291031d220c3529352a362b373b063b06220d2e2e2e2e2e68063d2a692707020130220d3ba0913b063b063b063b063b063b06221b313322283133220c222b33220c3434680c22322a453346272b1f0700000000000000|@5386,1,@12719,@16488,@5224,@5225,@5230,@5222,@16489,@294,@5237,@16490,@16491,@5236,@5049,@5050,@5052,@5056,@5059,@5062,@16492,@16487,@5360| 16487:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12725| 16488:D3,40|fb042b2811a003033c020c2b40a003033c02042b2809a003033c02052b2a362c8042000000000000|@5207,1,@12720| 16489:D3,32|fb042b280ba003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12721| 16490:D3,40|fb042b2809a003033c02172b280ba003033c02042b282fa003033c02052b2a362c80420000000000|@5207,1,@12722| 16491:D3,40|fb042b2831a003033c02172b280ba003033c02042b282fa003033c02052b2a362c80420000000000|@5207,1,@12723| 16492:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12724| 16493:D3,8|fb022b2815a04200|@5388,1,@12726| 16494:D46,3240|fb482e353003033c02c431373223092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c2705f84b0b31373223092a352a35292829a09103032902012a220d3a220e2306220f230a2210230e2211230f2b352e352b352d35302c2e2c2e6805330a4400880093008800880088008800880088008800880088008800040388008800880088008800160388002b0488008800880088008800880088009105a10588008800880088008800b1052a07880088003a07880088008800880088008800880088008800880088008800880088008800880088008800880097088800ac0988008800880088008800880022141a280b452a46f77a0a221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a8c0a1a910a1a960a0c291a990a0c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a800a103b503b502c3b3b2829e350221b1a770a0c641a7a0a221d691a7c0a2218690b02002d2d2b221e1a760a0c502935222137222223092a352a35292829a09103032902012a292842a0f80001222637222723092935292829a09103092a3b3b2829e35002c62b35293ba003ac222a3a222b2307222c2308222d230a222e230e222f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022343a22352307223623082237230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223a3a223b2306223c230a223d230e223e230f2b352e352b352d35302c2e2c2e68051a76091a7b091a80090c291a83090c3b3e3b3b2d68053c3b2b2f6b2248382249230c2a3b3b3ce3502b2a0c501a6a09103b503b502c3b3b2829e350222a1a61090c50501a7b09222b691a7d09222922276a0b02002d2d2b222c1a5d090c502935270802013b284122281a65090c1a6909222a69292228222b1a6609222922291a67090c222a3a222b230e2a352a35221f2b221d2c221d6805280f22301a32090c502e1a4c090c3b062a2c22123c220e2e68063b2a6922302a452e46271cf70908221822163b2c221822171a2c0922187b0819221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a09081a0e081a13080c291a16080c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501afd07103b503b502c3b3b2829e350221b1af4070c641a4f08221c221b6a0b020022202d2b221d1af6070c5029352a3629362a3822142b22122c2212680528092e2b6a22222a452b46270ef7e206221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051af4061af9061afe060c291a01070c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501ae806103b503b502c3b3b2829e350221b1adf060c640b03003b2a1a3d070c5029352a362b370b03003b2a1a2d070c5029352a362b372227352228361a240734342e6b2b2b2b6a2f2f2f6a3c2a222b1a19070c1a1d0722302d1ad706222f222f68060b020022342d2b22311a9d060c5029352a3629362a3822282b22262c2226680522112210692219221869280c302c2c2f680522382a452d462724f77c0522172216221622161ad10622167b061922172216221622161ac10622167b0619221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a6e051a73051a78050c291a7b050c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a6205103b503b502c3b3b2829e350221b1a59050c64221936221a370b03003b2a1ab1050c5029362a371ad005312b6a2b2a326a1ace05222769292b22281a6c05222622261a6d050c281a22281a4d050c1ab9052221316a292f220e6a1ab505222c69292b222d1a4305222b222b1a44050c222c3a222d230e2a352a3522212b221f2c221f6805280f22321a0f050c50331a89050c2f1a8c050c3b062a2c3c2f2d680528132a6922332a452f46271ff7e30322172216221622161a380522167b0619221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051ae5031aea031aef030c291af2030c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501ad903103b503b502c3b3b2829e350221b1ad0030c64221b37221c23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a0033c0b0200220c2a222522271a53040c5029352a3629362a3822182b22162c221668053b063b063b06302d2d2d2d680528142a69222a2a452f46270d0211281822211a25040c50221d1a26034533462709f77602221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a88021a8d021a92020c291a95020c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a7c02103b503b502c3b3b2829e350221b1a73020c641a3e03221a22186a0b020022202d2b221d1a75020c5029352a3629362a3822142b22122c22126805281a2e2b6a22222a452b46270ef76101221737221823092935292829a09103082a3b3b2829e302c52b35293ba003ac221b3a221c2307221d2308221e230a221f230e2220230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022253a22262307222723082228230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b3a222c2306222d230a222e230e222f230f2b352e352b352d35302c2e2c2e68051a73011a78011a7d010c291a80010c3b3e3b3b2d68053c3b2b2f6b223938223a230c2a3b3b3ce3502b2a0c501a6701103b503b502c3b3b2829e350221b1a5e010c640b03003b2a1abc010c5029352a362b370b03003b2a1aac010c5029352a362b372227352228361a0b0234342e6b2b2b2b6a2f2f2f6a3c2a222b1a98010c1afc012231690b02002c3b2b2236331a4d01223522351aee010c5029352a3629362a3822282b22262c2226680522112210692219221869281c302c2c2f680522382a452d462724270f02890b03003b2a1a34010c5029352a362b371ab1012b2b6a0b03003b2a1a1e010c5029352a372214352215362a2a336a0b02002c221e2b221ffadb221d221d1a8c010c5029352a361a8b01061a8f01061a9301061a97012b2d1a9a012d6805280e2a693b062a31312c3b6805293b692211221169221a221969281c2c2c2c220e680522262a45220c462721641f07|@5390,1,@12727,@1214,@5049,@5050,@5052,@5056,@5059,@5062,@16495,@16496,@5341,@16498,@16499,@5222,@16500,@5216,@5391,@5393,@5327,@16504,@5198,@16509,@5247,@16510,@5511,@16598,@16599,@16600,@16601,@5489,@5490,@5523,@5251,@16603,@16604,@16605,@5525,@16608,@5404,@1296,@5335,@5527,@5389,@5229| 16495:D3,32|fb042b2841a003033c02042b2842a003033c02052b2a362c8042000000000000|@5207,1,@12728| 16496:D11,104|fb1e0b03003b2afa770c5029352a362b372b2b2b6a3c2a3336fa6d0cfa72220c690b0200fa722d220f362cfa730c5029352a362a2210362bfa6e0c2811221136fa6e0c0b0200221630220d220f323b2f221b36fa630c5029352a362a2a6927164200000000000000|@5340,1,@12729,@5198,@5247,@16497,@5271,@5225,@5230,@5222,@5330| 16497:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12730| 16498:D3,24|fb042b2841a003033c02052b2a362c804200000000000000|@5207,1,@12731| 16499:D4,32|fb0b0b02002e3b3b2f362d3137fa290c5029352a362a2a692705420000000000|@5344,1,@12732,@5343| 16500:D3,24|fb042b280fa003033c02052b2a362c804200000000000000|@5207,1,@12733| 16501:D11,520|fb2e2e372f23092a352a35292829a09103032902012a292830a003f133373423092935292829a09103092a3b3b2829e35002c62b35293ba003ac220e3a220f2307221023082211230a2212230e2213230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022183a22192307221a2308221b230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e3a221f23062220230a2221230e2222230f2b352e352b352d35302c2e2c2e68051a67011a6c011a71010c291a74010c3b3e3b3b2d68053c3b2b2f6b222c38222d230c2a3b3b3ce3502b2a0c501a5b01103b503b502c3b3b2829e350220e1a52010c5050220f220f220f220f220f220f1a480122107b081033373423092a352a35292829a09103032902012a290a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a9008800880088008800880088008800880029283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c032ffa852212690b02002c22143c22172d2216221622190c502935221622162216221622162216fa580c2a2a69270602013b270527051f0600|@5392,1,@12734,@5049,@5050,@5052,@5056,@5059,@5062,@5391,@16502| 16502:D3,200|fb042b0a440088008e00880088008800880088008800880088008800880091008800880088008800880094008800970088008800880088008800880088009a009d0088008800880088008800a000a30088008800a6008800880088008800880088008800880088008800880088008800880088008800880088008800a900880088008800880088008800880088002b283da0021c3c02193c02163c02133c02103c020d3c020a3c02073c02043c02013c03033c02042b2830a003033c02052b2a362c804200000000|@5207,1,@12735| 16503:D4,32|fb082b929103142b352c363b062b2a692bfa250c2a2a69270502013b42000000|@880,1,@12736,@5393| 16504:D4,32|fb090b02002e2a2e362f37fa2b0c5029352a362a2a6927054200000000000000|@5395,1,@12737,@5394| 16505:D19,1192|fb442c372d23092a352a35292829a09103032902012a292826a003de31373223092935292829a09103082a3b3b2829e302c52b35293ba003ac220c3a220d2307220e2308220f230a2210230e2211230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022163a22172307221823082219230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e68051a08041a0d041a12040c291a15040c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c501afc03103b503b502c3b3b2829e350220c1af3030c646602013b1af203220c690b02001af1032d220f2c1af2030c5029352a362a22102b1aed030c221037221123092a352a35292829a09103032902012a292811a0f83302221537221623092935292829a09103082a3b3b2829e302c52b35293ba003ac22193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e68051ae9021aee021af3020c291af6020c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c501add02103b503b502c3b3b2829e35022191ad4020c64221937221a23092a352a35292829a09103032902012a292826a003e0221e37221f23092935292829a09103082a3b3b2829e302c52b35293ba003ac22223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e68051af0011af5011afa010c291afd010c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c501ae401103b503b502c3b3b2829e35022221adb010c646602013b0b02001adf01222522242c1adf010c5029352a362215352216372217392c362d382d2b2e2c2f68051ad201061ad601061ada0106332b2d220c2d6805280e2a691ac2010622222a3b3222252f680622322a453146271cf73801292825a0f81e01221537221623092935292829a09103082a3b3b2829e302bf2b35293ba003a722193a221a2307221b2308221c230a221d230e221e230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022233a22242307222523082226230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022293a222a2306222b230a222c230e222d230f2b352e352b352d35302c2e2c2e6805fab0fab6fabc0c29fac00c3b3e3b3b2d68053c3b2b2f6b2237382238230c2a3b3b3ce3502b2a0c50faa8103b503b502c3b3b2829e3502219faa00c64fadc221c692219370b02002d221f2e2cfad40c5029352a362211352212372213392c362d382d2b2e2c2f6805306801fa9d06221a2a2c2e221dfab36806222a2a452d4627140213fa8506312a3b3334fa9d680622182a4532466527121f04|@5396,1,@12738,@5049,@5050,@5052,@5056,@5059,@5062,@16507,@5348,@5225,@5230,@1296,@5335,@5397,@16506,@5278,@1214| 16506:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12741| 16507:D3,32|fb042b2811a003033c02042b2825a003033c02052b2a362c8042000000000000|@5207,1,@12739| 16508:D3,8|fb023b4200000000|@5398,1,@12740| 16509:D7,136|fb0d2b2a380c293ba003732c2b370c293ba003652d3b3bef293ca603372e3b3bef3c2aa80303fa78103b502f2809dcfa772a3bdb29fa79a003033c0214293b3bef3ca0030b292808fa6628083ced02013b6602013bfa61061b0f273eba2b03033f02013b2a2ab8293db82d2a69220c2a6934360c2a27090202293564020229356442000000000000|@5399,1,@12742,@255,@296,@364,@1296| 16510:D4,32|fb0c0b02002e2a2e362f3730383139323afa250c5029352a362a2a6927054200|@5401,1,@12743,@5400| 16511:D6,56|fb100b02003b2a220d220c220c220c220c220cfa3b0c5029352a363b06fa3906fa3e06fa3b062a2f2d30302e680622112a452f46270a1f07|@5403,1,@12744,@5402,@5335,@749| 16512:D26,1880|fb531a6b0731690b020032342e2c220e1a65070c5029352a360b03002e22112b1a5d070c5029352a362b3722163ba003043bf7870322163529352a362a2ea003033c02192a3b3bef2e3b3befa0030d2a28082f2808313b3befed02013b03053b50f7d30122163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e6805220e3b3bef293ba003051af506024e281f2ab1292810b1293cb2292808b4291ae806a503043b5002041ae606103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501abe0628082d2808281fec50221628082d282734ec502b95502b2707293b3bef293ba003051ab1060250292824b1292810b1293cb2292808b4291a8c06a503043b5002041a8a06103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a6d0628082e2c2824ec502c95502c2708293b3bef22103b3bef2a3ba0030422110257293ba003032b024f2a2ab1292810b1293cb2292808b4291a2306a503043b5002041a2106103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221928082e2c220cec502c95502c2708293b3bef293ba003051af2050252293db1292810b1293cb2292808b4291ac605a503043b5002041ac405103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2827e4502c2a3cb12827e4502c95502c2708291aa2051aa7050c291aaa050c3b3e3b3b2d68053c3b2b220f6b222d38222e230c2a3b3b3ce3502b2a0c502619292da003043bf77b0122163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e6805220d3c1a60050c293b3bef293ba003051a5b05024d28102ab1292810b1293cb2292808b4291a0605a503043b5002041a0405103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a240528082d28082810ec503128082d281834ec502b95502b2707293b3bef293ba003051a08050250292826b1292810b1293cb2292808b4291aab04a503043b5002041aa904103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11ac40428082e2c2826ec502c95502c2708220f3c1aa0040c2a3b3bef2a3b3bef2a3ba003032b0256293ba003032c024e2a2ab1292810b1293cb2292808b4291a3d04a503043b5002041a3b04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708291a1d041a22040c291a25040c3b3e3b3b2d68053c3b2b220f6b222d38222e230c2a3b3b3ce3502b2a0c271966221437221523092a352a35292829a09103032902012a292811a003e1221937221a23092935292829a09103082a3b3b2829e302c52b35293ba003ac221d3a221e2307221f23082220230a2221230e2222230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022273a2228230722292308222a230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222d3a222e2306222f230a2230230e2231230f2b352e352b352d35302c2e2c2e68051a6a031a37031a3c030c291a67030c3b3e3b3b2d68053c3b2b2f6b223b38223c230c2a3b3b3ce3502b2a0c501a4e03103b503b502c3b3b2829e350221d1a45030c6466f709011a4403221a1a47030c50221937221a23092a352a35292829a09103032902012a292838a003e0221e37221f23092935292829a09103082a3b3b2829e302c52b35293ba003ac22223a22232307222423082225230a2226230e2227230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222c3a222d2307222e2308222f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022323a223323062234230a2235230e2236230f2b352e352b352d35302c2e2c2e68051a63021a30021a35020c291a60020c3b3e3b3b2d68053c3b2b2f6b2240382241230c2a3b3b3ce3502b2a0c501a4702103b503b502c3b3b2829e35022221a3e020c646602013b27051a4b02221c690b0200221d2d2b22212220222022201a3e020c5029352a362214352215372216392c362d382d2b2e2c2f68053b062216322c2c6b222837222923092a352a35292829a09103032902012a0b02002c283ea0f80901223037223123092935292829a09103092a3b3b2829e35002c42b35293ba003aa22343a22352307223623082237230a2238230e2239230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350223e3a223f2307224023082241230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022443a224523062246230a2247230e2248230f2b352e352b352d35302c2e2c2e68051a2501faf3faf90c291a24010c3b3e3b3b2d68053c3b2b2f6b2252382253230c2a3b3b3ce3502b2a0c501a0b01103b503b502c3b3b2829e35022341a02010c505022212221692968010b02002c2a223b223b223b223b223b223b1a0b010c5029352a36332b452a4650260a0207293b452211465029352a36332b692227352228372229392d362e382d2b2e2c2f6805223b30452a4627331f0800000000000000|@5405,1,@12745,@16513,@5406,@5471,@5479,72057594037927935,@286,@5480,@5481,@5050,@5052,@5211,@801,@5482,@5483,@5049,@5056,@5059,@5062,@386,@5209,@16552,@5404,@5402| 16513:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12746| 16514:D14,104|fb18fa7c2c30fa80336805fa832ffa8832fa8d0cfa9230693235333634370b02002e2e2e34fa69fa87220c302213fa880c5029352a360b020022122e2e2c221422192219fa42fa780c502212fa7afa802216fa4c0c2a22132a35452a364664270f1f050000000000|@5408,1,@12747,@16515,@5406,@5448,@5415,@5242,@16539,@5224,@5449,@5431,@5311,@5407| 16515:D33,2816|fb4b2937372a3723092a352a35292829a09103032902012a2e373a2f3723063037230a3137230e3237230f2b352e352b352d35302c2e2c2e6805330a4400880088008800880088008800880088003f0288008800880088008800880088008800880088008800880088008800880088008800880088008800880053026702c10351068800880088008800880088008800880088003109880088008800880088008800880088009c098800880088008800880088008800b009880088008800880088008800ab0a220f373722103723092a352a35292829a09103032902012a292826a003033c020d292806a003033c0204292818a0f869012214373722153723092a352a35292829a09103032902012a292826a02903f4221a3737221b3723092935292829a09103082a3b3b2829e302d72b35293ba003bd221e373a221f3723072220372308222137230a222237230e222337230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502228373a2229372307222a372308222b37230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222e373a222f372306223037230a223137230e223237230f2b352e352b352d35302c2e2c2e68051a53091a58091a5d090c291a60090c3b3e3b3b2d68053c3b2b2f6b223c3738223d37230c2a3b3b3ce3502b2a0c501a4509103b503b502c3b3b2829e350221e371a3b090c646602013b221b3935221c3936221d39370b02002e2e2e22243722281a2309220d301a25090c5029352a361a2409061a2809061a2c09062d2b2d2f2d6805280e2a692e362f3822232b22212c22216805222d2d452a46271702181a0d0922181a10092217371a12090c5022161a1309452f462705f77c081a10092210361a12090c22122a452b4664f768081a0c092210361afe080c22122a452b4664f75408220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051ac4071ac9071ace070c291ad1070c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501ab607103b503b502c3b3b2829e3502213371aac070c642213373722143723092a352a35292829a09103032902012a29282da003033b02133b221c221a38221b36221c39221d371adf070c2219373a221a37230e2a352a3522162b22142c22146805282d221f371ac7070c1a6b070628112a322e6b22232a452d462712f7fa06220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051a6a061a6f061a74060c291a77060c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501a5c06103b503b502c3b3b2829e3502213371a52060c642213373a221437230e2a352a352217373722183723092a352a35292829a09103032902012a29282ea0f80a01221c3737221d3723092935292829a09103082a3b3b2829e302d72b35293ba003bd2220373a22213723072222372308222337230a222437230e222537230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222a373a222b372307222c372308222d37230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502230373a2231372306223237230a223337230e223437230f2b352e352b352d35302c2e2c2e68051a4d051a52051a57050c291a5a050c3b3e3b3b2d68053c3b2b2f6b223e3738223f37230c2a3b3b3ce3502b2a0c501a3f05103b503b502c3b3b2829e3502220371a35050c642219342217220c22176805281b2a6922242a452b46270602641a8f05221d37690b03002d2a1a8b050c5029360b02003b2a222737222b30222a38222b36222c391a78050c5029352a362227373a222837230e2a352a3522242b22222c22226805282e222d371a3b050c1adf0406280f322b332f680522312a452d462713270df76a04220f373722103723092935292829a09103082a3b3b2829e302d72b35293ba003bd2213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e68051ada031adf031ae4030c291ae7030c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c501acc03103b503b502c3b3b2829e3502213371ac2030c642213373722143723092a352a35292829a09103032902012a29282fa003202218373a221937230e2a352a3522152b22132c22136805281b2a692705f786011a0f04221c690b0200221c39221d372e2c2220362221380c502935221d3737221e3723092a352a35292829a09103032902012a29280ba0f82c012222373722233723092935292829a09103082a3b3b2829e302d72b35293ba003bd2226373a22273723072228372308222937230a222a37230e222b37230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502230373a22313723072232372308223337230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502236373a2237372306223837230a223937230e223a37230f2b352e352b352d35302c2e2c2e68051a71021a76021a7b020c291a7e020c3b3e3b3b2d68053c3b2b2f6b22443738224537230c2a3b3b3ce3502b2a0c501a6302103b503b502c3b3b2829e3502226371a59020c643b222a222838222936222a39222b371add020c332a692228373a222937230e2a352a3522252b22232c222368051a3f02062819302b2d6b270c021e2222373a222337230e2a352a35221f2b221d2c221d68052816342b6a2705270a2219373a221a37230e2a352a3522162b22142c22146805282f221f371a4d020c222130452b462710f78a01220f373a2210372306221137230a221237230e221337230f2b352e352b352d35302c2e2c2e68051a47021a84011a89010c291a44020c3b3e3b3b2d68053c3b2b2f6b221d3738221e37230c2a3b3b3ce3502b2a0c501a29022220361acb010c22222a452212462711f71f011a1b022210361ab5010c22122a452b4664f70b01220f373722103723092935292829a09103092a3b3b2829e35002d22b35293ba003b82213373a22143723072215372308221637230a221737230e221837230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d373a221e372307221f372308222037230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502223373a2224372306222537230a222637230e222737230f2b352e352b352d35302c2e2c2e6805fa7bfa81fa870c29fa8b0c3b3e3b3b2d68053c3b2b2f6b22313738223237230c2a3b3b3ce3502b2a0c50fa71103b503b502c3b3b2829e350221337fa680c5050281e2d6922152a452e46270402101a1401221036faa70c22122a452b4664270f4300000000|@5410,1,@12748,@5049,@5050,@5052,@5056,@5059,@5062,@5224,@5411,@1296,@5335,@5414,@5311,@5415,@5242,@1214,@5416,@5423,@5425,@5427,@5222,@16523,@5301,@5430,@16532,@5439,@5441,@5211,@5442,@5445,@5409| 16516:D11,280|fb180b02003032342c1a24010c5029352a362a220e0c29929103142935293629353ca003033c020429353ba06502013b290304339102013b03cb2c3b3bef293ba00304faf302433c2ab1292810b1293cb2292808b429fae8a503043b500203fae710292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082828e4503428082d280934ec502b95502b2707293b3bef293ba00304fabb024b29282eb1292810b1293cb2292808b429fa97a503043b500203fa9610292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa7c28082e2c282eec502c95502c270829fa73fa790c29fa7d0c3b3e3b3b2d68053b3b2b220c6b2215230c2a2a0c50260902023b502d332a35452a36466427071f0800000000|@5413,1,@12749,@5225,@365,72057594037927935,@286,@5412,@5050,@5052,@5338| 16517:D3,8|fb023b4200000000|@5398,1,@12750| 16518:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12751,@1296,@5417| 16519:D9,264|fb352b3629352d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e6805220e37220f23092935292829a09103092a3b3b2829e35002c02b35293ba003a722123a22132307221423082215230a2216230e2217230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221c3a221d2307221e2308221f230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022223a222323062224230a2225230e2226230f2b352e352b352d35302c2e2c2e6805fa5ffa65fa6b0c29fa6f0c3b3e3b3b2d68053c3b2b2f6b2230382231230c2a3b3b3ce3502b2a0c50fa57103b503b502c3b3b2829e3502212fa4f0c5050220d2d221422137e13000000|@5424,1,@12752,@5049,@5050,@5052,@5056,@5059,@5062| 16520:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12753,@1296,@5426| 16521:D11,296|fb331a3b0130690b020030302e2c220c220e0c50293530373123092a352a35292829a09103032902012a29280ba003ee220c37220d23092935292829a09103092a3b3b2829e35002c02b35293ba003a722103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e6805fa7afa80fa860c29fa8a0c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c50fa72103b503b502c3b3b2829e3502210fa6a0c50503b22142214221422142214fa620c322a69270402032e3b69270a1f06000000|@5428,1,@12754,@16522,@5049,@5050,@5052,@5056,@5059,@5062,@5427| 16522:D3,32|fb042b282da003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12755| 16523:D10,224|fb112d3b3bef293ba00304faeb024b28072ab1292810b1293cb2292808b429fadfa503043b500203fade103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab728082d28082807ec50220c28082d280f34ec502b95502b2707293b3bef293ba00304faab024d292819b1292810b1293cb2292808b429fa87a503043b500203fa86103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6a28082e2c2819ec502c95502c270829fa61fa670c29fa6b0c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f0000|@5429,1,@12756,@5300,72057594037927935,@286,@5298,@5050,@5052,@5211| 16524:D24,1208|fb4d30373123092a352a35292829a09103032902012a292839a003ef220c37220d23092935292829a09103092a3b3b2829e35002c62b35293ba003ac22103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e68051a15041a1a041a1f040c291a22040c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c501a0904103b503b502c3b3b2829e35022101a00040c50501a020422112a35452a36466466f7a3031afa03220c691afc03220d690b02002c22122b1af7030c5029352a362a2a6922120c221437221523092a352a35292829a09103032902012a0b02002c2811a003f1221c37221d23092935292829a09103092a3b3b2829e35002c62b35293ba003ac22203a22212307222223082223230a2224230e2225230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222a3a222b2307222c2308222d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022303a223123062232230a2233230e2234230f2b352e352b352d35302c2e2c2e68051ae5021aea021aef020c291af2020c3b3e3b3b2d68053c3b2b2f6b223e38223f230c2a3b3b3ce3502b2a0c501ad902103b503b502c3b3b2829e35022201ad0020c5050221a222022142f221f22210c502603f72701333b3bef3b2aa2038c343b3bef3b2aa803041ace02103b503b50220c2808dc1ac9022a3bdb293b3bef293ca303032902013c2b28081abb0228082dee293ba003052b3ca90203293ba8034522113b3bef3b2aa803041a8b02103b503b5022122808dc1a86022a3bdb293b3bef293ca303032902013c2b28081a800228082dee293ba003052b3ca50203293ba4270602013b270602013b0352221d3a221e2306221f230a2220230e2221230f2b352e352b352d35302c2e2c2e68051a46021adb011ae0010c291a43020c3b3e3b3b2d68053c3b2b2f6b222b38222c230c2a3b3b3ce3502b2a0c50261002023b501a2402061a2802061a2c0206220e2b2d22102d6805280e2a690b020022182d22142c22252225222b22291a12020c5029352a36342b452a4650260b29352a363435220c37220d392c362d382d2b2e2c2f68051ad2010622132a2214342e6805222637222723092a352a35292829a09103032902012a29280ba003fe222b37222c23092935292829a09103082a3b3b2829e302bf2b35293ba003a7222f3a22302307223123082232230a2233230e2234230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022393a223a2307223b2308223c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350223f3a224023062241230a2242230e2243230f2b352e352b352d35302c2e2c2e6805fa8ffa95fa9b0c29fa9f0c3b3e3b3b2d68053c3b2b2f6b224d38224e230c2a3b3b3ce3502b2a0c50fa87103b503b502c3b3b2829e350222ffa7f0c640b02003b2a223422342234223422342234fae20c5029352a36220e2a6922362c452a46270a020a2e3b69222d3c452a4664271f27051f08000000000000|@5432,1,@12757,@5049,@5050,@5052,@5056,@5059,@5062,@917,@16525,@16526,@5308,@255,@296,@374,@382,@5433,@5211,@1296,@5335,@5434,@5431,@5430| 16525:D3,32|fb042b282ea003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12758| 16526:D3,40|fb042b2811a003033c02172b282ea003033c02042b280ba003033c02052b2a362c80420000000000|@5207,1,@12759| 16527:D3,8|fb023b4200000000|@5398,1,@12760| 16528:D13,432|fb353135280ea01abe0134690b0200322d220f220f2d220f1ab5010c5029352a3633373423092a352a35292829a09103032902012a292805a0f86701220f37221023092935292829a09103082a3b3b2829e302c32b35293ba003ab22133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e68051afe001a03011a08010c291a0b010c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50faf3103b503b502c3b3b2829e3502213faeb0c64220f91034d22133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e6805fac8fa9efaa40c29fac80c3b3e3b3b2d68053c3b2b2f6b2221382222230c2a3b3b3ce3502b2a0c271002013b0b020022182218221f2c221d221b0c5029352a36221d35221e37221f392c362d382d2b2e2c2f680528102217322c6b22232a452b4627110206221230452f46270c1f08000000|@5436,1,@12761,@16529,@5437,@5049,@5050,@5052,@5056,@5059,@5062,@5435,@5211| 16529:D3,24|fb042b2805a003033c02052b2a362c804200000000000000|@5207,1,@12762| 16530:D12,320|fb2f30372c372d23092a352a35292829a09103032902012a292809a0f8170131373223092935292829a09103082a3b3b2829e302bf2b35293ba003a7220c3a220d2307220e2308220f230a2210230e2211230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022163a22172307221823082219230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221c3a221d2306221e230a221f230e2220230f2b352e352b352d35302c2e2c2e6805fa9efaa4faaa0c29faae0c3b3e3b3b2d68053c3b2b2f6b222a38222b230c2a3b3b3ce3502b2a0c50fa96103b503b502c3b3b2829e350220cfa8e0c64fa922211690b02002c2211220f2cfa8c0c5029352a362214352215372216392c362d382d2b2e2c2f6805280531221d2c6b221e221e2b2d221e221efa67221f7b081f32220c45344627061f06|@5438,1,@12763,@5049,@5050,@5052,@5056,@5059,@5062,@16531,@5278,@5437| 16531:D3,24|fb042b2809a003033c02052b2a362c804200000000000000|@5207,1,@12764| 16532:D3,32|fb042b280ba003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12765| 16533:D11,296|fb331a3b0130690b020030302e2c220c220e0c50293530373123092a352a35292829a09103032902012a29280ba003ee220c37220d23092935292829a09103092a3b3b2829e35002c02b35293ba003a722103a22112307221223082213230a2214230e2215230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221a3a221b2307221c2308221d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022203a222123062222230a2223230e2224230f2b352e352b352d35302c2e2c2e6805fa7afa80fa860c29fa8a0c3b3e3b3b2d68053c3b2b2f6b222e38222f230c2a3b3b3ce3502b2a0c50fa72103b503b502c3b3b2829e3502210fa6a0c50503b22142214221422142214fa620c322a69270402032e3b69270a1f06000000|@5440,1,@12766,@16534,@5049,@5050,@5052,@5056,@5059,@5062,@5439| 16534:D3,32|fb042b280ba003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12767| 16535:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12768,@1296,@5443| 16536:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12769,@1296,@5446| 16537:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12770,@1296,@5447| 16538:D3,232|fb022b2826a003033c02d82b2820a003033c02cf2b281fa003033c02c62b2821a003033c02bd2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02162b2806a003033c02042b2818a003033c02042b283ca04200000000|@5207,1,@12771| 16539:D3,32|fb042b2805a003033c02042b2809a003033c02052b2a362c8042000000000000|@5207,1,@12772| 16540:D7,88|fb180b04003b2a220c220c220f2211220d2215fa5b0c5029352a362b372c38293ba2030c2b220d2a35452a3646640224fa463bfa4b2f2f2f2f221522152218221a2216221efa410c2936220e2a35452a3646646427091f09|@5451,1,@12773,@5452,-1,@5226,@5450| 16541:D10,224|fb22faf430326afaf731316a0b02002c2a340c5029352a360b02002d2d342c22112214221722132216fadd0c5029352a362a2a69221037221123092a352a35292829a09103032902012a0b03002d221e0c03320b020022202220221e2cfab10c5029352a362a221e0c293ba00303faa8103b503b5029352936312e452d462a47502608020dfa992a2a35452a36462a37475129352a362b370b02002c353da0030cfa852a2a35452a364651021a2c353ca0030b2c362a2a453c46505002092c362a2a453b46505029352a3630306922272b452213462a472c48271f1f08000000|@5454,1,@12774,@16542,@16543,@5455,@5225,@1921,@5457,@5453| 16542:D3,24|fb042b2a370c03033c02052b2a362c804200000000000000|@5207,1,@12775| 16543:D3,32|fb042b2a370c03033c02042b2826a003033c02052b2a362c8042000000000000|@5207,1,@12776| 16544:D6,200|fb252f373023092a352a35292829a09103032902012a29340c039f3437220c23092a352a35292829a09103032902012a29220f0c0326221036293564220e0c29929103142935293629353ca003033c020429353ba06502013b6402013b030a2211221545221446024dfa75221322116a0b02002c2a22120c5029352a36221935221a37221b392c362d382d2b2e2c2f6805fa55062221322b3b2e68053d2a69292d2223222322232223222322232223fa3f22247b0b2427050208220c221045220f4627051f090000|@5456,1,@12777,@16545,@1296,@5455| 16545:D3,24|fb042b2a370c03033c02052b2a362c804200000000000000|@5207,1,@12778| 16546:D9,288|fb3e0b04003b2a220e220e220e220e220e220e1a22010c5029352a362b372c382c2c2c2c6b2215221422146a292b22101a0d010c2c2215a603033c020b221703062c2215a002013b031b22142218221732323232221a221a221a221a221a221afae60c02012b221635221736fae206fae706faec062d2b2d2f2d6805280e2a69221e36313629362b352c372d392c362d382d2b2e2c2f68052227352211362935293b692c2a69faa80628192b2b326bfa9f0622112b2b3c220c68053d2a69293469221b37221c38221d35292d2d2d6b22392239223c6a2922212232fa630c5022203829223da603033c020f22213829223ea00304223c02013b64031d223c223c223c2f333333223c223c223c223c223c223cfa34223d7b0f3d2b272e1f0d0000|@5459,1,@12779,@5452,@5460,@5450,@1296,@5335,@5458| 16547:D18,192|fb242d372d382a2aa0030b2f352f352a2aa0916502013b03a22d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68052210362935221137293522143629352216350304fa8c0202fa9022163729352218350304fa8c0202fa9029fa9569fa9a2a692c2a69fa9b2a69302a69fa9c2a69332a69fa9d2a69220e2a69fa9d2a6922122a69fa9d2a692715fa9f0c29faa3faa90c29faad0c3b3e3b3b2d68053c3b2b306b2213382214230c2a3b3b3ce3502b2a22167d183b65440000|@5462,1,@12780,@5463,@5464,@5463,@5464,@5465,@5467,@5468,@5467,@5469,@5470,@5461,@284,@5050,@5052,@5211| 16548:D3,8|fb023b4200000000|@5398,1,@12781| 16549:D13,744|fb272d353da0031d0b0400322a331aef020c5029352a362b372c382c2c2c2c6b2709f793022d352816a003a42d3629353da0031c0b0400332a341ac3020c5029352a362b372c382c2c2c2c6b2709027c2d3a2e23062f230a30230e31230f2b352e352b352d35302c2e2c2e68051a98021a9d021aa2020c291aa5020c3b3e3b3b2d68053c3b2b2f6b2212382213230c2a3b3b3ce3502b2a0c5022143a221523062216230a2217230e2218230f2b352e352b352d35302c2e2c2e68051a6a02061a6e022a2c6a3b2a3b3b6b271c64f7e8012d352805a0f853012d362e3729352816a003a5293629353da0031e0b04002f2a220d1a0b020c5029352a362b373368012c2c2c2c6b2709027c2f3a30230631230a32230e33230f2b352e352b352d35302c2e2c2e68051a0f021ae4011ae9010c291aec010c3b3e3b3b2d68053c3b2b2f6b2214382215230c2a3b3b3ce3502b2a0c5022163a221723062218230a2219230e221a230f2b352e352b352d35302c2e2c2e68051ab101061ab5012a2c6a3b2a3b3b6b271c6402a029353da0031e0b04002e2a220c1a68010c5029352a362b373268012c2c2c2c6b2709027c2e3a2f230630230a31230e32230f2b352e352b352d35302c2e2c2e68051a74011a41011a46010c291a49010c3b3e3b3b2d68053c3b2b2f6b2213382214230c2a3b3b3ce3502b2a0c5022153a221623062217230a2218230e2219230f2b352e352b352d35302c2e2c2e68051a0e01061a12012a2c6a3b2a3b3b6b271c65028d2c3a2d23062e230a2f230e30230f2b352e352b352d35302c2e2c2e68051afd00fac3fac90c29facd0c3b3e3b3b2d68053c3b2b2f6b2211382212230c2a3b3b3ce3502b2a0c5022133a221423062215230a2216230e2217230f2b352e352b352d35302c2e2c2e6805fa9306fa982a2c6a3b2a3b3b6b29352a362b372c386b29352a362b372c382c2c2c2c6b272229352a3629353b2c299291031229362b3caa292b25042504511e113b6502012a65302e452b462a472705440000000000|@5473,1,@12782,@5474,@5472,@5050,@5052,@5211,@1296,@294,@5472,@5472,@5472| 16550:D14,592|fb1f2d352816a0038d2d362e372a353da003172a3629352935280ea003082a38293ca06402013b6502013b03252a362935293629352a382d361a2c02062c2a2d6a2b3b69220e2a452b463c473b48270902401a1b021a20021a25020c291a28020c3b3e3b3b2d68053c3b2b2f6b313832230c2a3b3b3ce3502b2a0c501ae901061a0d022a326a220d3b452a463b473b48270865f7b4012d35280ea0031c2d3629352a381ac201062b2a2c6a313b452a463b473b482705f791012d353da0f80f012d3629352a362b38293ca003332a352819a003292a36299291031e29352a3629929103112936293ba003062b353da002013b6402013b6502013b6402013b02013b03302a381a90011a6d011a72010c291a75010c3b3e3b3b2d68053c3b2b2f6b3438220c230c2a3b3b3ce3502b2a0c2707026c293ca003332a352819a003292a36299291031e2936299291031329352a36293ba003062a353da002013b6502013b6402013b6402013b02013b03302a381a2d011a02011a07010c291a0a010c3b3e3b3b2d68053c3b2b2f6b3438220c230c2a3b3b3ce3502b2a0c270702013b0b0400312a220e1aff000c5029352a362b37333b69293ba003032c02052c2afaf00c22122a452d462c473b48270f027b2b3a2c23062d230a2e230e2f230f2b352e352b352d35302c2e2c2e6805facafa88fa8e0c29fa920c3b3e3b3b2d68053c3b2b2f6b2210382211230c2a3b3b3ce3502b2a0c5022123a221323062214230a2215230e2216230f2b352e352b352d35302c2e2c2e6805fa3006fa552a2c6a221f3b452a463b473b48271c440000000000|@5476,1,@12783,@1296,@5477,@5050,@5052,@5211,@294,@5478,@5478,@5474,@5475,@5472| 16551:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12784,@5475| 16552:D3,24|fb042b283ea003033c02052b2a362c804200000000000000|@5207,1,@12785| 16553:D18,752|fb3a1a03032f1a0703303030220e68071a0503321a0903321a0d030c502f373023092a352a35292829a09103032902012a292817a003033c02ea290a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d00292818a002103c020d3c020a3c02073c02043c02013c03033c0243292811a003033c020d292806a003033c0204292818a003033c0228292820a003033c021f292821a003033c021629281fa003033c020d292826a003033c0204292822a003033c0228292813a003033c021f292807a003033c0216292840a003033c020d292819a003033c020429282aa0f867011ad901220e690b02002c2a221122151aaa0122132213221322111ac7010c5029352a36221137221223092a352a35292829a09103032902012a292816a0f81d01221637221723092935292829a09103082a3b3b2829e302c42b35293ba003ac221a3a221b2307221c2308221d230a221e230e221f230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022243a22252307222623082227230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222a3a222b2306222c230a222d230e222e230f2b352e352b352d35302c2e2c2e68051a0e011a13011a18010c291a1b010c3b3e3b3b2d68053c3b2b2f6b2238382239230c2a3b3b3ce3502b2a0c501a0201103b503b502c3b3b2829e350221afafa0c640b0200221f2a221f2223fa94222122212221faec0c5029352a36220e35220f372210392c362d382d2b2e2c2f6805280d2216322c33680522272a452b4627100206221730452f46270b022a343a220c2306220d230a220e230e220f230f2b352e352b352d35302c2e2c2e68052216fa98452a46270a27061f0700000000000000|@5485,1,@12786,@16554,@5404,@5500,@5501,@5242,@16576,@5502,@5049,@5050,@5052,@5056,@5059,@5062,@5484,@1214| 16554:D45,4512|fb4d2936372a3623092a352a35292829a09103032902012a2e3623062f36230a3036230f2a352a352e2822a0f81502333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051adc101ae1101ae6100c291ae9100c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501ace10103b503b502c3b3b2829e350220e361ac4100c64220e230636220f2306370b03003b2a1ab8100c5029362a371ab710312b6a2b2a326a1ab510221c69292b221b36221c38221d39221e3a1aa9100c281a221b361aa8100c1aac10221f69221c362306221d36230a221e36230f2a352a350b02003b0b02002210220d2b222b36222c38222d39222e3a222f370c5029352a3628301a7810222c361a7a100c030d2a2f6929250726061e335002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352225363a222636230e2a352a3522232b22222c22236805280f222b361af70f0c222e1a01101a0e10222e361a10100c22121a12100c311a15100c3b062a2c3b312d680528132a6922332a4531462727f7520f2e2820a0f80403333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051ac00e1ac50e1aca0e0c291acd0e0c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501ab20e103b503b502c3b3b2829e350220e361aa80e0c64220e363a220f36230e2a352a352212363722133623092a352a35292829a09103032902012a29282ea0f80a012217363722183623092935292829a09103082a3b3b2829e302d72b35293ba003bd221b363a221c362307221d362308221e36230a221f36230e222036230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502225363a22263623072227362308222836230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b363a222c362306222d36230a222e36230e222f36230f2b352e352b352d35302c2e2c2e68051aa30d1aa80d1aad0d0c291ab00d0c3b3e3b3b2d68053c3b2b2f6b22393638223a36230c2a3b3b3ce3502b2a0c501a950d103b503b502c3b3b2829e350221b361a8b0d0c642215342214220c22156805281b2a69221f2a452b46270602da1ad50d221836690b03002d2a1ad10d0c502936221d362306221e36230a221f36230f2a352a350b02003b0b02003b2a222e222c362210222e37222f3822303922313a223223061a9f0d0c5029352a36280b1a540d222d361a560d0c030d2a2f6929250726061e3b5002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a4650260526055029352226363a222736230e2a352a3522242b22232c222468051a300d06280f3c2b322e6805282e222e361ac70c0c22302b452d462717270df7470c2e2821a0f81806333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051ab50b1aba0b1abf0b0c291ac20b0c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501aa70b103b503b502c3b3b2829e350220e361a9d0b0c64220e363a220f36230e2a352a352212363722133623092a352a35292829a09103032902012a29282fa0f80b012217363722183623092935292829a09103082a3b3b2829e302d72b35293ba003bd221b363a221c362307221d362308221e36230a221f36230e222036230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502225363a22263623072227362308222836230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222b363a222c362306222d36230a222e36230e222f36230f2b352e352b352d35302c2e2c2e68051a980a1a9d0a1aa20a0c291aa50a0c3b3e3b3b2d68053c3b2b2f6b22393638223a36230c2a3b3b3ce3502b2a0c501a8a0a103b503b502c3b3b2829e350221b361a800a0c642215342214220c22156805281b2a69221f2a452b462706f7ed031ae90a221b690b0200221b23062d2b221e36221f3822203922213a2222370c502935221c3637221d3623092a352a35292829a09103032902012a0b02002c2830a0f8b4012224363722253623092935292829a09103082a3b3b2829e302d72b35293ba003bd2228363a2229362307222a362308222b36230a222c36230e222d36230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502232363a22333623072234362308223536230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502238363a2239362306223a36230a223b36230e223c36230f2b352e352b352d35302c2e2c2e68051a49091a4e091a53090c291a56090c3b3e3b3b2d68053c3b2b2f6b22463638224736230c2a3b3b3ce3502b2a0c501a3b09103b503b502c3b3b2829e3502228361a31090c641abc09222c692229362306222a36230a222b36230f2a352a350b02003b0b020022352306220d2b223836223938223a39223b3a223c370c5029352a3628301a26092239361a28090c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a46502605260550293522162a692233363a223436230e2a352a3522312b22302c223168052e1a15090c402a2c6a22162a452c46502616f7e0012c280ba0f8b4012224363722253623092935292829a09103082a3b3b2829e302d72b35293ba003bd2228363a2229362307222a362308222b36230a222c36230e222d36230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502232363a22333623072234362308223536230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce3502238363a2239362306223a36230a223b36230e223c36230f2b352e352b352d35302c2e2c2e68051a8e071a93071a98070c291a9b070c3b3e3b3b2d68053c3b2b2f6b22463638224736230c2a3b3b3ce3502b2a0c501a8007103b503b502c3b3b2829e3502228361a76070c641a1108222c692229362306222a36230a222b36230f2a352a350b02003b0b020022352306220d2b223836223938223a39223b3a223c370c5029352a36280b1a6b072239361a6d070c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a46502605260550293522162a692233363a223436230e2a352a3522312b22302c223168051a4307062819302b2d6b22162a452c4650261602252224363a222536230e2a352a3522222b22212c222268052816220e2b6a2f2a452b4650260629352a36282f2227361aa8060c22292c452b462710270df728062e281fa0f8db01333637343623092935292829a09103082a3b3b2829e302d72b35293ba003bd220e363a220f3623072210362308221136230a221236230e221336230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502218363a2219362307221a362308221b36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221e363a221f362306222036230a222136230e222236230f2b352e352b352d35302c2e2c2e68051a96051a9b051aa0050c291aa3050c3b3e3b3b2d68053c3b2b2f6b222c3638222d36230c2a3b3b3ce3502b2a0c501a8805103b503b502c3b3b2829e350220e361a7e050c64220e3637220f3623092a352a35292829a09103032902012a29282da09103971a02062217692214362306221536230a221636230f2a352a350b02003b0b020022202306220d2b22233622243822253922263a2227370c5029352a36280b1a54052224361a56050c030d2a2f6929250726061e355002372a2f69293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652b362c3822112b22102c22116805342d452a465026052605502935270902013b2214363a221536230e2a352a3522122b22112c22126805282d221a361ace040c1a22050628112a322e6b221e2a452d462712f746042e2826a02903f3343637220c3623092935292829a09103082a3b3b2829e302d72b35293ba003bd220f363a22103623072211362308221236230a221336230e221436230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502219363a221a362307221b362308221c36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f363a2220362306222136230a222236230e222336230f2b352e352b352d35302c2e2c2e68051ab3031ab8031abd030c291ac0030c3b3e3b3b2d68053c3b2b2f6b222d3638222e36230c2a3b3b3ce3502b2a0c501aa503103b503b502c3b3b2829e350220f361a9b030c646602013b220c3637220d3623092a352a35292829a09103032902012a2211363a2212362306221336230a221436230e221536230f2b352e352b352d35302c2e2c2e6805330a4400880088008800880088008800880088000d01880088008800880088008800880088008800880088008800880088002b018800880088008800880088009402880088008800880088008800880088008800880088008800b10288008800880088008800880088008800ce0288008800880088008800880088008800880088008800880088008800eb02332811a003033c020d332806a003033c0204332818a00358221b230635221c230636221d2306370b02002e2e2e22243622281a4503221c301a47030c5029352a361a0603061a4203061a4603062d2b2d2f2d6805280e2a692e362f3822242b22232c22246805222d2d452a46271002122818221c361a22030c50221d1a2303452a46f7f9011a2203221c361a24030c22162e22152e22166805221f2b452a4665f7db01221b3637221c3623092935292829a09103082a3b3b2829e302d72b35293ba003bd221f363a22203623072221362308222236230a222336230e222436230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee3502229363a222a362307222b362308222c36230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222f363a2230362306223136230a223236230e223336230f2b352e352b352d35302c2e2c2e68051a50011a55011a5a010c291a5d010c3b3e3b3b2d68053c3b2b2f6b223d3638223e36230c2a3b3b3ce3502b2a0c501a4201103b503b502c3b3b2829e350221f361a38010c640b020022252223362b1a1a020c5029352a3629362a3822202b221f2c222068051a9301061b0f273eba28062b2b6a301afc010c292b69293b69291af9010c3b2a3b6a29063c2a693e2e2b6a1a6801061b0f273eba28062b2b6a2b3b3b2fe33d2b220e6a281822152b2e22146805223a2a45221246271d02721ac301221c361a9d010c22162e22152e22166805221f2b452a466502551aae01221c361a80010c22162e22152e22166805221f2b452a466502381a9901221c361a63010c22162e22152e22166805221f2b452a4665021b1a8401221c361a46010c22162e22152e22166805221f2b452a46652711270a4300000000000000|@5487,1,@12787,@5049,@5050,@5052,@5056,@5059,@5062,@5198,@16555,@16556,@5391,@5222,@16557,@5311,@5248,@5488,@5242,@5489,@5490,@16560,@5301,@5492,@1296,@16564,@16565,@5494,@16567,@16568,@5348,@5411,@5335,@5495,@5251,@1214,@5496,@5423,@5308,@4168,@4176,@5497,@5498,@5499,@5486| 16555:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12788| 16556:D3,24|fb042b281aa003033c02052b2a362c804200000000000000|@5207,1,@12789| 16557:D3,32|fb042b280fa003033c02042b2830a003033c02052b2a362c8042000000000000|@5207,1,@12790| 16558:D4,32|fb082b929103142b352c363b062b2a692bfa250c2a2a69270502013b42000000|@880,1,@12791,@5489| 16559:D4,32|fb082b929103142b352c363b062b2a692bfa250c2a2a69270502013b42000000|@880,1,@12792,@5490| 16560:D10,224|fb112d3b3bef293ba00304faeb024b28072ab1292810b1293cb2292808b429fadfa503043b500203fade103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab728082d28082807ec50220c28082d280f34ec502b95502b2707293b3bef293ba00304faab024d292819b1292810b1293cb2292808b429fa87a503043b500203fa86103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6a28082e2c2819ec502c95502c270829fa61fa670c29fa6b0c3b3e3b3b2d68053c3b2b220d6b3136383236230c2a3b3b3ce3502b2a220d7d0f0000|@5491,1,@12793,@5300,72057594037927935,@286,@5298,@5050,@5052,@5211| 16561:D8,104|fb1bfa7c33690b02002c220d2bfa790c5029352a362a2a69220e0c28112210fa6f0cfa742212690b0200220e2d2b221722152215221522190c5029352a363135323733392c362d382d2b2e2c2f6805fa4f0622102a2211342e680522202a452c4627161f0a000000|@5493,1,@12794,@16563,@5308,@5222,@16562,@1296| 16562:D3,32|fb042b282ea003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12796| 16563:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12795| 16564:D3,40|fb042b280ba003033c020d2b2830a003033c02042b282fa003033c02052b2a362c80420000000000|@5207,1,@12797| 16565:D3,32|fb042b2830a003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12798| 16566:D4,32|fb082b929103142b352c363b062b2a692bfa250c2a2a69270502013b42000000|@880,1,@12799,@5494| 16567:D3,32|fb042b280ba003033c02042b282fa003033c02052b2a362c8042000000000000|@5207,1,@12800| 16568:D3,32|fb042b282da003033c02042b280ba003033c02052b2a362c8042000000000000|@5207,1,@12801| 16569:D3,8|fb023b4200000000|@5398,1,@12802| 16570:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12803,@1296,@5417| 16571:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12804,@1296,@5426| 16572:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12805,@1296,@5443| 16573:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12806,@1296,@5446| 16574:D5,16|fb07fa240628122a2f2ffa2468056443|@5418,1,@12807,@1296,@5447| 16575:D3,296|fb022b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa0420000000000|@5207,1,@12808| 16576:D3,24|fb042b2816a003033c02052b2a362c804200000000000000|@5207,1,@12809| 16577:D12,360|fb341a7b0134690b02002c2a220e220e220e220e220e220e220e1a6b010c5029352a36220e37220f23092a352a35292829a09103032902012a292828a0f81801221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805fab3fab9fabf0c29fac30c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50faab103b503b502c3b3b2829e3502217faa30c640b0200221c2a221c221c221c221c221c221c221cfa930c5029352a36220e35220f372210392c362d382d2b2e2c2f680528152216322c6b22242a452b4627100206221430452f46270b1f09000000000000|@5504,1,@12810,@16578,@5503,@5049,@5050,@5052,@5056,@5059,@5062,@5502| 16578:D3,24|fb042b2828a003033c02052b2a362c804200000000000000|@5207,1,@12811| 16579:D12,352|fb341a730134690b02002c2a220e220e220e220e220e220e220e1a63010c5029352a36220e37220f23092a352a35292829a09103032902012a293ea0f81701221337221423092935292829a09103082a3b3b2829e302bf2b35293ba003a722173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e6805faacfab2fab80c29fabc0c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c50faa4103b503b502c3b3b2829e3502217fa9c0c640b0200221c2a221c221c221c221c221c221c221cfa8c0c5029352a36220e35220f372210392c362d382d2b2e2c2f68053c2216322c6b22242a452b4627100206221430452f46270b1f09|@5506,1,@12812,@16580,@5505,@5049,@5050,@5052,@5056,@5059,@5062,@5503| 16580:D3,16|fb042b3ea003033c02052b2a362c8042|@5207,1,@12813| 16581:D25,2072|fb4231373223092a352a35292829a09103032902012a220d2306220e230a220f230f2a352a352e0a44008800880088008800880088008800cd0088008800880088008800880088008800880088008800140288008800880088008800340388008800880088008800880088008800880088008800880088008800880088009904880088008800880088008800880088008800880088008800880088008800880088008800880088008800ac058800880088001a7b072215692212352213362214370b02002e2e2e22161a6c071a7107220c3022211a71070c5029352a361a7007221e69221b2a2d2d222122211a6907221c7b081ff71807221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051acb061ad0061ad5060c291ad8060c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501abf06103b503b502c3b3b2829e35022161ab6060c641ab9062219690b020022192d2b221d221b221b221b221f0c5029352825221c1aa2060c1aa606221f690b02002c2a2222222222222222222222221a97060c5029352a3629362a3822162b22152c221668051a880606342f2b2d3168053e2a6922292a452d462716f7d105221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a84051a89051a8e050c291a91050c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a7805103b503b502c3b3b2829e35022161a6f050c641a9a052219690b02002c2a221c221c221c221c221c221c1a73050c5029352a3629362a3822102b220f2c221068051a640506280b2a302d6b22222a452c46270ff7b104221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051a64041a69041a6e040c291a71040c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501a5804103b503b502c3b3b2829e35022161a4f040c641a82042219690b020022192d2b221d221b221b221b221f0c5029352837221c1a3b040c1a6704221f690b0200221f2d2b222322212221222122250c502935280e22221a18040c0b0200222422282b2228222622262226222a0c5029352a3629362a38221b2b221a2c221b68053b063b06221130220d2e2d2f68063f2a69222f2a452e46271cf74c03221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051aff021a04031a09030c291a0c030c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501af302103b503b502c3b3b2829e35022161aea020c640b02002218221c2b221c221a221a221a221e0c5029352a3629362a38220f2b220e2c220f680528172e2b6a22202a452b46270df73902221237221323092935292829a09103082a3b3b2829e302c52b35293ba003ac22163a22172307221823082219230a221a230e221b230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022203a22212307222223082223230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022263a222723062228230a2229230e222a230f2b352e352b352d35302c2e2c2e68051aec011af1011af6010c291af9010c3b3e3b3b2d68053c3b2b2f6b2234382235230c2a3b3b3ce3502b2a0c501ae001103b503b502c3b3b2829e35022161ad7010c641a1a022219690b020022192d2b221d221b221b221b221f0c5029352a36221c37221d23092a352a35292829a09103032902012a29280da0f81201222137222223092935292829a09103082a3b3b2829e302bf2b35293ba003a722253a22262307222723082228230a2229230e222a230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222f3a22302307223123082232230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022353a223623062237230a2238230e2239230f2b352e352b352d35302c2e2c2e6805fad6fadcfae20c29fae60c3b3e3b3b2d68053c3b2b2f6b2243382244230c2a3b3b3ce3502b2a0c50face103b503b502c3b3b2829e3502225fac60c640b02002227222b2b222b222922292229222d0c5029352a3629362a38221e2b221d2c221e68053b06281d2f22152d2d680522302a452c46270e020e280d2222fad30c50222230452f46270f270a1f090000000000|@5507,1,@12814,@16583,@5508,@5348,@5449,@16585,@5437,@5049,@5050,@5052,@5056,@5059,@5062,@16586,@5222,@16587,@5484,@1296,@16588,@16589,@16590,@16582,@5251| 16582:D3,24|fb042b280da003033c02052b2a362c804200000000000000|@5207,1,@12823| 16583:D3,32|fb042b2809a003033c02032b3ea003033c02052b2a362c804200000000000000|@5207,1,@12815| 16584:D3,248|fb022b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a0420000|@5207,1,@12816| 16585:D3,16|fb042b3ea003033c02052b2a362c8042|@5207,1,@12817| 16586:D3,248|fb042b2826a003033c02d82b2820a003033c02cf2b281fa003033c02c62b2821a003033c02bd2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02162b2806a003033c02042b2818a003033c02042b283ca003033c02042b2825a003033c02052b2a362c804200|@5207,1,@12818| 16587:D3,24|fb042b2830a003033c02052b2a362c804200000000000000|@5207,1,@12819| 16588:D3,24|fb042b2830a003033c02052b2a362c804200000000000000|@5207,1,@12820| 16589:D3,312|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02042b2837a003033c02052b2a362c80420000|@5207,1,@12821| 16590:D3,312|fb042b2817a003033c02ea2b0a44008800880088008800880088008e008800910088008800880088008800880088008800880088008800880088008800880088008800880088008800880094008800880088008800880088008800880088008800880088009700880088008800880088008800880088009a00880088008800880088008800880088008800880088008800880088009d002b2818a002103c020d3c020a3c02073c02043c02013c03033c02432b2811a003033c020d2b2806a003033c02042b2818a003033c02282b2820a003033c021f2b2821a003033c02162b281fa003033c020d2b2826a003033c02042b2822a003033c02282b2813a003033c021f2b2807a003033c02162b2840a003033c020d2b2819a003033c02042b282aa003033c02042b280ea003033c02052b2a362c80420000|@5207,1,@12822| 16591:D21,968|fb4e1adb03331adf03331ae3030c1ae70334690b020034220d2e2c22101ae0030c5029352a36220e37220f23092a352a35292829a09103032902012a292838a003e1221337221423092935292829a09103082a3b3b2829e302c52b35293ba003ac22173a2218230722192308221a230a221b230e221c230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022213a22222307222323082224230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022273a222823062229230a222a230e222b230f2b352e352b352d35302c2e2c2e68051a28031a2d031a32030c291a35030c3b3e3b3b2d68053c3b2b2f6b2235382236230c2a3b3b3ce3502b2a0c501a1c03103b503b502c3b3b2829e35022171a13030c6466f709011a120322141a15030c50221337221423092a352a35292829a09103032902012a292811a003e0221837221923092935292829a09103082a3b3b2829e302c52b35293ba003ac221c3a221d2307221e2308221f230a2220230e2221230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022263a22272307222823082229230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350222c3a222d2306222e230a222f230e2230230f2b352e352b352d35302c2e2c2e68051a21021a26021a2b020c291a2e020c3b3e3b3b2d68053c3b2b2f6b223a38223b230c2a3b3b3ce3502b2a0c501a1502103b503b502c3b3b2829e350221c1a0c020c646602013b27051a19022217690b020022172d2b221b221922192219221d0c5029352a36220c35220d37220e392c362d382d2b2e2c2f68051af001061aec01063b063322172d2d302e6806222437222523092a352a35292829a09103032902012a0b02002c283ea0f80e01222c37222d23092935292829a09103082a3b3b2829e302bf2b35293ba003a722303a22312307223223082233230a2234230e2235230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350223a3a223b2307223c2308223d230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022403a224123062242230a2243230e2244230f2b352e352b352d35302c2e2c2e6805fadbfae1fae70c29faeb0c3b3e3b3b2d68053c3b2b2f6b224e38224f230c2a3b3b3ce3502b2a0c50fad3103b503b502c3b3b2829e3502230facb0c640b020022352a223522352235223522352235fadd0c5029352a3622112b692a362b38221d2b221e2c221f6805220d2d452a4650260d020b313b692a2a45220e465050222efab3fab9222ffa3d0c5029222e2a35452a36466427251f080000000000|@5510,1,@12824,@5448,@3693,@5242,@16592,@5406,@5049,@5050,@5052,@5056,@5059,@5062,@2692,@5209,@16593,@749,@5484,@5311,@5509| 16592:D3,24|fb042b2838a003033c02052b2a362c804200000000000000|@5207,1,@12825| 16593:D3,24|fb042b283ea003033c02052b2a362c804200000000000000|@5207,1,@12826| 16594:D16,392|fb382e372f23092a352a35292829a09103032902012a333a342306220c230a220d230e220e230f2b352e352b352d35302c2e2c2e6805221437221523092935292829a09103082a3b3b2829e302bf2b35293ba003a722183a22192307221a2308221b230a221c230e221d230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022223a22232307222423082225230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022283a22292306222a230a222b230e222c230f2b352e352b352d35302c2e2c2e6805facdfad3fad90c29fadd0c3b3e3b3b2d68053c3b2b2f6b2236382237230c2a3b3b3ce3502b2a0c50fac5103b503b502c3b3b2829e3502218fabd0c64220e281da0030c3b2219fab70c3c2a69640225220e281ca0030c3b2219faa40c3b2a69640212220e2824a003043b500203fa98103b50fa9bfaa12217faa5221cfaa90c0b0200322a221f221d222032faa20c5029352a3629362a3822152b22132c221368052807332f2c6b22212a452b46271e1f04000000000000|@5513,1,@12827,@5049,@5050,@5052,@5056,@5059,@5062,@5514,@5518,@951,@5348,@5521,@5242,@5512| 16595:D18,632|fb362b372c23092a352a35292829a09103032902012a29281ea0f8560230362935293b3bef1a68022b2b6a3b2a3c1a67020c299291031e293529352a362a9203043b5002041a5802103b502a2a69296801270402013b299291030a293529352968016502013b293ba003041a3a02103b503b502935293ba203033c0204292809a6f80f01220f3a221023062211230a2212230e2213230f2b352e352b352d35302c2e2c2e68052219362935293b3bef293ba003051af901024d280b2ab1292810b1293cb2292808b4291aec01a503043b5002041aea01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ac20128082d2808280bec503128082d281334ec502b95502b2707293b3bef293ba003051ab6010250292825b1292810b1293cb2292808b4291a9101a503043b5002041a8f01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a720128082e2c2825ec502c95502c2708291a68011a6d010c291a70010c3b3e3b3b2d68053c3b2b220c6b2223382224230c2a3b3b3ce3502b2a0c50261602023b50220f37221023092935292829a09103092a3b3b2829e35002c02b35293ba003a722133a22142307221523082216230a2217230e2218230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350221d3a221e2307221f23082220230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805fab5fa9bfaa10c29fab50c3b3e3b3b2d68053c3b2b2f6b2231382232230c2a3b3b3ce3502b2a0c50fa9d103b503b502c3b3b2829e3502213fa950c50502c270b02013b27054300|@5516,1,@12828,@16596,@3915,@3921,@1921,@5517,72057594037927935,@286,@5515,@5050,@5052,@5211,@5049,@5056,@5059,@5062| 16596:D3,32|fb062b2a37a003033b02132b2808b12a362adc2d3cb12a2a6929680127044200|@3914,1,@12829| 16597:D7,128|fb172e372f23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a003470b0200fa65220d220f2cfa660c5029352a362a22102bfa620c2b220e692c2a6964220f350c0b02002e2a2216221622162216fa4e0c5029352a36312b6922182a452b46270d0206343b45220d4627051f0600|@5522,1,@12830,@5348,@5225,@5230,@5512| 16598:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12831| 16599:D3,32|fb042b280fa003033c02042b281aa003033c02052b2a362c8042000000000000|@5207,1,@12832| 16600:D3,16|fb042b2a370c502b2a362c8000000000|@5359,1,@12833| 16601:D3,24|fb042b280fa003033c02052b2a362c804200000000000000|@5207,1,@12834| 16602:D6,112|fb152c372d23092a352a35292829a09103032902012a292811a003033c020d292806a003033c0204292818a003350b0200fa5534220d2cfa570c5029352a360b02002c2a22122212fa4e0c5029352a363b06302a316a292d6922162a452d46270d0205323b45344627051f0400000000|@5524,1,@12835,@5348,@5225,@5523| 16603:D4,32|fb0b0b02002e3b3b2f362d3137fa290c5029352a362a2a692705420000000000|@5344,1,@12836,@5343| 16604:D7,136|fb0d2b2a380c293ba003732c2b370c293ba003652d3b3bef293ca603372e3b3bef3c2aa80303fa78103b502f2809dcfa772a3bdb29fa79a003033c0214293b3bef3ca0030b292808fa6628083ced02013b6602013bfa61061b0f273eba2b03033f02013b2a2ab8293db82d2a69220c2a6934360c2a27090202293564020229356442000000000000|@5399,1,@12837,@255,@296,@364,@1296| 16605:D3,16|fb042b3da003033c02052b2a362c8042|@5207,1,@12838| 16606:D14,680|fb422f373023092a352a35292829a09103032902012a29282ca003f53437220c23092935292829a09103092a3b3b2829e35002c62b35293ba003ac220f3a22102307221123082212230a2213230e2214230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee35022193a221a2307221b2308221c230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce350221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e68051a06021a0b021a10020c291a13020c3b3e3b3b2d68053c3b2b2f6b222d38222e230c2a3b3b3ce3502b2a0c501afa01103b503b502c3b3b2829e350220f1af1010c505022113c2211221122112211221122111ae40122127b0a121ae401220f690b0200220e22102e2c22131adb010c5029352a36281122121ad6010c0b0200221422192b22182217221722171aca010c5029352a36221737221823092a352a35292829a09103032902012a0b02002c3da003fd221f37222023092935292829a09103092a3b3b2829e35002c02b35293ba003a722233a22242307222523082226230a2227230e2228230f3b2e0c3b2e0c30352e3b3b2ce350313b3b2ee3502d352d3b3b2ce3502e3b3b2ee350222d3a222e2307222f23082230230e3b2c0c3b2c0c2e3b3b2de3502b3b3b2ce35022333a223423062235230a2236230e2237230f2b352e352b352d35302c2e2c2e6805fab8fabefac40c29fac80c3b3e3b3b2d68053c3b2b2f6b2241382242230c2a3b3b3ce3502b2a0c50fab0103b503b502c3b3b2829e3502223faa80c50500b0200222822282b22282228222822282228fa990c5029352a36312b452a465026080206293b4532465029352a36221035221137221239220d36220e382d2b2e2c2f68053b06221822132c2c222e6805293369222b2a453346271f27051f08000000000000|@5526,1,@12839,@5049,@5050,@5052,@5056,@5059,@5062,@5525,@16607,@5406,@5222,@5404| 16607:D3,24|fb042b2811a003033c02052b2a362c804200000000000000|@5207,1,@12840| 16608:D7,120|fb0c2b2a370c293ba003642c3b3bef293ca603372d3b3bef3c2aa80303fa71103b502e2809dcfa702a3bdb29fa72a003033c0214293b3bef3ca0030b292808fa5f28083ced02013b6602013bfa5a061b0f273eba2b03033f02013b2a2ab8293db82d2a69342a6933360c2a27090202293564420000000000|@5322,1,@12841,@255,@296,@364,@1296| 16609:D3,8|fb023b4200000000|@5398,1,@12842| 16610:D12,656|fb242b372c23092a352a35292829a09103032902012a292834a003b130362935293b3bef293ba003051a7c0202453c2ab1292810b1293cb2292808b4291a7002a503043b5002041a6e0210292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082822e4503128082d280934ec502b95502b2707293b3bef293ba003051a29020248293cb1292810b1293cb2292808b4291a1d02a503043b5002041a1b0210292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2822e4502c95502c27082705025b30373123092a352a35292829a09103032902012a29282ba003033c021629281ea003033c020d29283aa003033c0204292818a00308220c36293564021c220c37220d23092a352a35292829a09103032902012a27041a9b010c2705313a32230633230a34230e220c230f2b352e352b352d35302c2e2c2e680522133b3bef293ba003051a7501024f29280eb1292810b1293cb2292808b4291a4801a503043b5002041a460110292841bd2a3cb22a2a3b3bf02b3b3b32f050221b28082d280834ec50280831b11a320128082e2c280eec502c95502c2708293b3bef220d3b3bef2a3ba00304220e0253293ba003032b024b2a2ab1292810b1293cb2292808b429fae1a503043b500203fae010292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221628082e2c220cec502c95502c2708293b3bef293ba00304fabc02492940b1292810b1293cb2292808b429fa89a503043b500203fa8810292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa7e28082e2c40ec502c95502c270829fa76fa7c0c29fa800c3b3e3b3b2d68053c3b2b220d6b221d38221e230c2a3b3b3ce3502b2a22207d2100000000000000|@5529,1,@12843,@359,72057594037927935,@286,@5257,@5530,@5528,@5050,@5052,@5211| 16611:D4,16|fb052b352c36fa202d7e030000000000|@5533,1,@12844,@5532| 16612:D14,96|fb0a2b3ba40304fa6f02512c353ba0031e2c36fa6b2afa702ffa750cfa7a2a69fa7e2a693b3e3b3b2d68052704022d2c353ca0031e2c36fa6f2afa742ffa510cfa762a69fa7a2a693b3e3b3b2d6805270402092c36292dfa6f2e7e0543000000|@5535,1,@12845,@1313,@5536,@5177,@5765,@1323,@5770,@5771,@5177,@1323,@5773,@5534| 16613:D4,16|fb052b352c36fa202d7e030000000000|@5538,1,@12846,@5537| 16614:D21,448|fb262c3529352a372f3630383123060b02002c3ca003062e353da002013b031b2e3629352a362b372c382b2b2b6a296801302a452f465026070206293b452f465029352a362f3b3bef293ba003051a8701024b293cb1292810b1293cb2292808b4291a7b01a503043b5002041a7901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b12c2a2828e4502c95502c27083e2a69220c1a4a01a003033c0217220c3b3bef3ba0030d220c28081a340128083bed02013b03033b0268220c3b3bef293ba003051a23010251293db1292810b1293cb2292808b429faf8a503043b500203faf7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d280834ec50280831b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a6929fad2696622113cab220d2afacf0c293b69293ba003032c02052c2afac70c3b3c3b3b2d68053392910329333529352a36290304fab70202fabb3e2a69221b3cab2d2afa980c293b69fab22a692d2a69270902013b22173cab342afaa80c293b69faaa2a69faae2a69fab22a69293ba003032f02052f2afaac0cfab12a69322a69fab22a6922112a693b3e3b3b2d68052720430000|@5540,1,@12847,@365,72057594037927935,@286,@294,@5541,@5542,@5543,@5759,@5653,@5541,@1323,@5760,@1323,@1895,@1323,@5539,@1322,@1323| 16615:D25,184|fb1f2b3ba40304fac702a62c353da003722c3629362a372b382c392c31fab90c3bfabd0c2c332bfabf0c3e2f69343cab2efabd0c3bfaa90c2a2c2bfabb3bfac00c293b69fac22a69fac62a69faca2a69312a69293ba00303330205332afac10cfac62a69faca2a69face2a69fad22a69fad62a6922122a693b3e3b3b2d68052719022e2c353ba003222c36fac32afac82ffacd0c29fad10cfad62a69fada2a693b3b3c3b2d6805270502062c363e2a696443000000000000|@5545,1,@12848,@1313,@5543,@5546,@5569,@5637,@5573,@5570,@1323,@1895,@1323,@5644,@1323,@5645,@1323,@5646,@1323,@5647,@294,@5655,@5758,@1323,@5544| 16616:D6,24|fb073b06293b3bfa27e350fa2b063b06fa2e2a2c6a664200|@5547,1,@12849,@5548,-1,@16617| 16617:D8,216|fb1929363529299291032029352a362a36293531352a2aa003052d680102082c250626051e1e3b270502013b6429929103072935293564029b2b3735293caa2d373b3b2ce33036293fb7293ba0910304fa9e0202faa2313735faa50c2a3b3bef2a3b3bef2a3ba003032b0252293ba003032c024a2a2ab1292810b1293cb2292808b429fa83a503043b500203fa8210292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c270829220f69220d36352a2a69220f363b3b2ce3502c270d65420000|@5567,1,@12852,@5481,@364,@5566,72057594037927935,@286| 16618:D17,128|fb142b363ca20304fa8e026d2b352c363cab293ba20304fa87023f2a362a3cab2a2a69fa83352a2a0c642e352e3cab2a2a69fa7c352a2a0c6429fa7c69fa812a69fa852a69fa892a69fa8d2a69322a69fa8e2a69fa922a69270ffa942a693b3c3b3b2d6805293b69fa8e2a69fa922a693b3c3b3b2d6805270842000000000000|@5550,1,@12850,@2535,@4429,@109,@7,@5552,@1323,@5554,@1323,@5556,@1323,@5557,@5559,@1323,@5549| 16619:D4,8|fb02fa1c42000000|@838,1,@12851,@837| 16620:D9,208|fb152b281aa803282b281aad2c281aae293ba003033c0207293ba2293ba06403032a02032a3cab293cab66fabb0c0202fabe2c281aae293ba003033b0210293ba2293ba003032a02042a281aaa64292861aa293ba203033c02042928ffa60303fa96103b50fa992a3bdb2d3b3bef2a3b3bef2a3ba003032b0253293ba003032f024b2a2ab1292810b1293cb2292808b429fa75a503043b500203fa7410292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d2808220cec50280832b13328082e2c220cec502c95502c2708270742|@5568,1,@12853,@5566,@294,@308,@296,72057594037927935,@286| 16621:D11,96|fb0c2d929103502d352e36293ba0031a2a352b3628062b2b6a293232fa5a3b33360c29fa5b692704022a2e3ca40304fa5702212e302d3630fa560c29fa5a0cfa5f2a69fa632a693b3b3b3b2d680529fa5f6927056502013b4400000000000000|@5572,1,@12854,@5573,@1830,@5577,@5578,@5571,@1500,@1325,@1830| 16622:D3,8|fb023b4200000000|@5576,1,@12855| 16623:D3,8|fb023b4200000000|@5576,1,@12856| 16624:D13,144|fb0f2e3ba40304fa9f02812d92919103033b02782d929103043b500203fa91103b502d3529352a3628062b2b6a293331fa863b220c0c29fa876933929103043b500203fa83103b5033362992919103033b022734929103043b500203fa72103b503436220d3cab292b220e220efa690cfa6e2a69fa722a692704293ba003032b02082b2afa6a220c7e0e27081f040000|@5580,1,@12857,@5577,@2207,@5573,@5581,@2360,@2360,@5578,@1323,@1324,@5579| 16625:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12858,@5579| 16626:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12859,@5571,@1321| 16627:D4,48|fb122f2f2b362c372d382e392f3a30230631230732230833230934230a220e22102212fa2322117b1107000000000000|@5583,1,@12860,@5582| 16628:D41,1512|fb2c22101af9050c29350a0700500056005c002501ff01b8030e0029362a372a2a692b3529353ca003092a310c3e2a6964022529221522152215221522152215221522152215221522152215221522151ab50522167b11162704f783051ab005f77d051ab205f7770529362a3722123ba403051aaa0502b62a1a84050c29353da0034422133ca403051a9c05023722133cab2a2a22152215221522152215221522152215221522152215221522151a57050c291a7a05691a7e052a693b3b3b3b2d68052704022522133cab2a2a22152215221522152215221522152215221522152215221522151a1e050c6422143cab2c2a22162216221622162216221622162216221622162216221622161af9040c293b691a2a052a691a2d052a691a30052a692f2a693b3b3b3b2d6805270965f7ae0429362a3722123ba403051a190502c72b1a1b050c03362a1a1c050c1a200522142b1ab20422162216221622162216221622162216221622162216221622161a05050c3b3b3b3b2d680565028a2a1afe041a03050c22133cab292b1a790422162216221622162216221622162216221622162216221622161ae4040c0b02002f29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603051ac104020d303ba003051abf0402031ac2043e2a69293b69293ba003032f02062f2a1ab7040c1abb042a693b3d3b3b2d6805270b65f7d4032936293ba003061aaa04f7a8012210352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092211352968016402eb2a293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102b02a293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d680102752a293ba003033b022929352a362a38293629353ca0030b2a36293622132aa06502013b03033c02082b250526041e2c3b2704640305346801023b2a293ba003033b022929352a362a38293629353ca0030b2a36293622112aa06502013b03033c02082b250526041e2c3b270464030532680102013b293ba0030f2b1a44030c3b3b3b3b2d68056402312935293528053b2b2d3b680529221722172217221722172217221722172217221722172217221722171a4d0222187b11186564f71b0229362a372b382938293629353ca0030b2a36293629220ea06502013b03032c02022b353b06293b3b1ae002e3500b02002d3b2b22123422131ad8020c5029352a36293ba003032a02833238221292910309293629353ba06402013b030f2212352a362938292c0c3735660203293735291aa802a003033c0215293b3bef3ba0030c2928081a940228083bed02013b030f2b3ca003071a8b022d6902012c022c0b02002c3b2b22192212221a1a65020c5029352a36293ba003032a020d303ca003071a5f023269020131270565299291031c29352a36293ba003032a020d291a4a020c2b2a69641a4a020c6502031a2b023438293629353ca0030b2a362936292219a06502013b03033b0244220d3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b653e2d69293b693b3b3b2e2d68052213929103b62213352214362afad00c2a9291910313291a25010c03033c020429353da029916402013b032622273cab2a2a2229222922292229222922292229222922292229222922292229fa990c64025422273ca403051a8401024922273cab1a83012a2219fa7e222b222b222b222b222b222b222b222b222b222b222b222b222bfad20c291a65010c293ba003051a640102081a5f012a1a63010c3b3b3b3b2d680527042d3b691a5b012a692b2a693b3b3b3b2d680527070201292714641f0f0000000000|@5585,1,@12861,@4275,@5582,@5586,@5588,@1313,@1313,@1321,@1325,@1717,@1818,@1717,@1313,@5590,@5592,@367,@5593,@5595,@2568,@5598,@450,@4431,@5602,@5603,@4444,@5588,@5604,@5607,@5624,@294,@388,@5633,@284,@1313,@369,@5635,@5636,@5584,@1323| 16629:D4,160|fb132b353ea003132b36299291030829362992916402013b6402013b037f2b362c370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936034f3c2e299291034429352a362a352d3cfa5e0c2a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b03112e3caa292d2507250726051e3e3b6402013b270402013c6502013b270502013b4200|@5591,1,@12862,@801| 16630:D4,32|fb072b929103112b352c362a362afa280c2a2a69270402013b42000000000000|@880,1,@12863,@5592| 16631:D13,472|fb1f22109291f8cb01221035221136293ba003ab2a1ad8010c22151ada01a003033c021722153b3bef3ca0030d221528081ac40128083ced02013b031029353da003033c0205291ab6010c02013b034722143ca403051aaf01023622143cab2a2a221422142214221422142214221422142214221422142214221422220c291a8e01691a92012a693b3b3b3b2d68052704293b69640224292215221322132213221322132213221322132213221322132213221322210c293b696464f7120122133ba403061a5801f706012a1a21010c22151a2301a003033c021722153b3bef3ca0030d221528081a0d0128083ced02013b031029353da003033c0205291aff000c02013b034022143ca40304faf9023422143cab2a2a221422142214221422142214221422142214221422142214221422220c29fad969fade2a693b3b3b3b2d680527040220292215221322132213221322132213221322132213221322132213221322210c2216fabda003033c021622163b3bef3ca0030c22162808faa828083ced02013b913c2a3b6a3e221969293b692b2a692e2a693b3b3b3b2d6805221c3cab221e2a220c221e221e221e221e221e221e221e221e221e221e221e221e221e221efa690cfa6e2a692c2a69270c6502013b1f1100|@5594,1,@12864,@4275,@367,@5590,@1313,@1321,@1325,@5577,@369,@5593,@1323| 16632:D4,16|fb042b35fa222a696442000000000000|@5596,1,@12865,@16633| 16633:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d3628082e28082dee293ba003052c2ca50203293ba427054200|@5597,1,@12866| 16634:D13,288|fb2322109291f811012210352211362a352b3622153ba403051a1c0102f82a3b3bef293ba003051a1601024a293cb1292810b1293cb2292808b4291a0a01a503043b5002041a0801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a283ae4502c95502c27083e2a6922183cab2d2a221822182218221822182218221822182218221822182218221822260c293b69fab72a692d2a693392919103033b0202faaf293ba003032a02052a2afaab0c3b3b3b3b2d6805293b69220e92919103033b022b22213cab29221022222222222222222222222222222222222222222222222222222222fa790cfa7e2a6965293ba003032a02052a2afa770c3b3b3b3b2d6805293b69270f270402013b1f10000000|@5600,1,@12867,@5577,@383,72057594037927935,@286,@1323,@1712,@5601,@5598,@1323,@5599| 16635:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12868,@5601| 16636:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12869,@5599| 16637:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12870,@5603| 16638:D6,208|fb0f2b929103c62b352c36293ba003582a3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2d353e2a69293b693b3b3b2f2d6805293b69270702622a3729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2d353e2a69293b693b3b3b2f2d680530fa2c0cfa312a69fa352a692c2a69270a6502013b4200|@5606,1,@12871,@5604,@5605,@1500| 16639:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@5609,1,@12872,@2535,@5610,@2535,@5617,@2535,@5608| 16640:D7,152|fb1230faaba003033c0214303b3bef3ba0030b302808fa9828083bed02013b03072e30453d4602680b0200332afa890c5029352a3629220c69312a220c220cfa7f0c293da003112c2b220e220e220e220efa75220f7b080f293ca0032b0b02002f2e2b221122112211fa5d0c5029352a36293ba0030822112b452a46020622112b453c4627050206220c2b453b4627071f06000000000000|@5626,1,@12873,@294,@4342,@5625,@5624| 16641:D13,184|fb1d2d929103a82d352e36293ba0034d30352b2a0c293ba003033d023d293529352a362a35faa9220c690b040022102ffaa6faa43b2efaa80c502938faaa32690b0400220d2ffa90fa8e3b2efa920c502938302afa9a0c91271265024f30362b2a0c293ba003033d02412935293529372b362a352b392afa7f0c2923082a230c2e3ba003032c02082e35fa742e2b6a64fa762a2d6afa792b2d6a2a2a6929221022162216fa7222177b0617656502013d1f04000000000000|@5627,1,@12874,@16643,@5629,@4331,@16645,@4336,@1130,@16646,@16647,@16642,@5625| 16642:D3,32|fb062b2a370c299291030f29352b3668012a2a692968016602013b6442000000|@5632,1,@12880| 16643:D3,40|fb062936929103092b3629353ba06402013b03112936352c362938292c0c296801270402013b4200|@5628,1,@12875| 16644:D3,8|fb022b4200000000|@5630,1,@12876| 16645:D3,40|fb062936929103092b3629353ba06402013b03112936352c362938292c0c296801270402013b4200|@5628,1,@12877| 16646:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@12878,@4374| 16647:D3,32|fb062b2a370c299291030f29352b3668012a2a692968016602013b6442000000|@5631,1,@12879| 16648:D5,32|fb072b929103132b352c3629fa2a0c2b2a69fa2c2a69270402013b4200000000|@5634,1,@12881,@5633,@371| 16649:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12882,@5635,@1499| 16650:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12883,@5584| 16651:D13,184|fb0f2b350a06002e000c0032004600540096002b36293a29352b352c362d392bfaae0c3b2b69293b6928052c2f322d680527090281faa1027d2b362c382afaa00c2afa9c0c3d2b2b6a270402692b3629352a3628062b2b6a66025b2b362c372afa860cfa8b0c29fa8f0c3b2a2d6a2c030329020629063c2a69643e2d2b6a2e0303290215fa7a061b0f273eba28062b2b6a2b3b3b2fe32a2704270702192b3629fa660c293cfa690c29fa6d0c3b2a3c6a3e2c2b6a27054200|@5639,1,@12884,@5640,@749,@5637,@5641,@4172,@5642,@1296,@5643,@3506,@5638| 16652:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@12885,@5637,@5640| 16653:D6,56|fb102b9291032c2b352c362a352b362a352afa3c0c2afa400c292b6929352a366929352a362a2a6933fa350c2a2a69270d02013b42000000|@880,1,@12886,@5637,@4168,@5641| 16654:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12887,@5642| 16655:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@12888,@5637,@5643| 16656:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@12889,@5638| 16657:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12890,@5644| 16658:D4,16|fb052b352c36fa202d7e030000000000|@5649,1,@12891,@5648| 16659:D36,528|fb162b3ba403061a1e02f701022c350a060030003d00010127010c0063012c361a0d022a1a11022f1a15020c1a19022a691a1c022a693b3e3b3b2d68052704f7cc012c362c3cab2a2a1a0c022f7e062c372d382a352a9291039d2a352a3b3bef293ba003051af8010252293db1292810b1293cb2292808b4291aec01a503043b5002041aea01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a69323cab2d1ab2010c3b1ab5010c2a2c2b1ab6013b1aba010c293b691abb012a692f2a691abb012a691abe012a693b3b3b3b2d6805270d02193e2a69293b691ab0012a691ab3012a693b3b3b3b2d680527046602fb2c362c3cab1aa5012b1aa9012c1a1d010c1aa9012a691aac012a693b3e3c3b2d6805270502d52c372d382a9103033b02031a99011a9e012b1aa20131faef0c293ba003032a02062a2a1a99010c1a9d012a691aa0012a693b3e3b3b2d6805270702992c372d382a35293b3bef293ba003051a89010250293db1292810b1293cb2292808b429facea503043b500203facd103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2820e4502c2a3cb1283ae4502c95502c27083e2a69313cab2efa960c3bfa9a0c2a2c2bfa9c3bfaa10c293b691a22012a692f2a691a22012a691a25012a693b3b3b3b2d6805270f4300|@5651,1,@12892,@1313,@5652,@5177,@5655,@1323,@5657,@5658,@5541,72057594037927935,@286,@5637,@5546,@5573,@5570,@1323,@5749,@5701,@5749,@5701,@5750,@294,@1323,@5752,@5753,@5754,@386,@5756,@1323,@5757,@5541,@1323,@5749,@5650| 16660:D7,64|fb152b352c362a362b3829352a363e2d692a0304fa420202fa463e2a69303cab2e2afa440c293b69fa462a692d2a69302a693b3e3b3b2d6805270f4200000000|@5654,1,@12893,@5653,@5541,@5543,@1323| 16661:D9,168|fb112d9291039b2d352e36293ba003142d3ba40304faa902092a2e69310c293b6964027b2d3ba40304fa9d02722efaa0a003033c02142e3b3bef3ca0030b2e2808fa8d28083ced02013b03033c021d2efa86a003033c02142e3b3bef3ca0030b2e2808fa7328083ced02013b912b2f69320c3c2b3b6a3e3269293b692b2a692d2a693b3b3b3b2d6805220c3cab22103322102cfa4b0cfa502a692c2a69270b6502013b1f04000000|@5656,1,@12894,@5577,@5577,@369,@384,@5655,@1323| 16662:D150,2112|fb1b2b3ba403061a4e08f730082c350a1f00490054018b0134027c02dd0220036103dd03e3030a0436045d0484043e00c804110548057405e90556067f06b606d906fd065a078407c307c807e80728082c3629353e2a6965f7e2072c3629352a372b392c38293ca0039e303cab2c1aef072b1af3071af8070c2c92919103033b0220323cab2d1aef072b1af3071ae0070c291af3070c1af7072a691afa072a692704333cab301af7072b1afb071ac0070c3b3e3c3b2d6805293b691af2072a691af5072a69293ba003032f02062f2a1aee070c293ba003051aed0702081ae8072a1aec070c293ba00303320206322a1ae6070c1aea072a691aed072a693b3e3c3b2d6805270e0259303cab2c1ae1072b1a55071a5a070c2c92919103033b0220323cab2d1ad1072b1a55071a42070c1ace072a691ad1072a691ad4072a692704293ba003032a02062a2a1acb070c1acf072a691ad2072a693b3e3c3b2d680527062705f7d7062c362d372d3cab2b2a1abe070c2f3cab2c2a1ab5070c293b691ab6072a691ab9072a691abc072a692f2a693b3e3c3b2d6805270bf7a0062c3629362a3629352819a003292936299291031e293629929103132936293ba003082e38293ca06402013b6402013b6402013b6402013b03442b36293629352a3629353035343cab2d2a1a46070c2b220e1a3f070c220e3cab2e2a1a35070c293b691a4e072a692d2a691a4e072a69302a693b3b3b3b2d6805271002282b352f3cab2a2a1a0c070c313cab2e2a1a03070c293b691a2c072a692d2a693b3b3b3b2d6805270866f7f7052c3629352a362e3cab2b2a1adc060c291a0f07691a13072a691a16072a693b3b3b3b2d6805343cab301a0e072b1a12071af7050c1a13072a692c2a693b3e3c3b2d6805270df7af052c3629352a362b372f3cab2c2a1a92060c313cab2c2a1a89060c333cab2f2a1a80060c293b691ae1062a691ae4062a691ae7062a692f2a691ae7062a691aea062a691aed062a69220c2a691aec062a691aef062a693b3b3b3b2d68052715f74e052c362d372d3cab2a2a1a35060c2c1ad8060c3b1adb060c2a322b1adc063b1ae0060c293b691ae1062a691ae4062a691ae7062a69302a693b3e3b3b2d6805270cf70b052c3629372a383e2b693e2b69293b691acc062a691acf062a691ad2062a691ad5062a691ad8062a69302a691ad8062a691adb062a693b3e3c3b2d6805270ef7ca042c362d372a353ca003232a36293c1ac4060c3e2a69293b691ac2062a691ac5062a693b3b3b3b2d68052706022c2a353ba003232a36293c1a9b060c3e2a69293b691aa9062a691aac062a693b3b3b3b2d6805270602031aa4062e3cab2b1aa5062b1aa9061a96040c1aaa062a692c2a693b3e3c3b2d68052707f74e041a9e06f748042c362c3cab2a1a9a062b1a9e061a6b040c1a9f062a691aa2062a693b3e3c3b2d68052705f721042c362c3cab2a1a7b042b1a7f041a44040c291a87060c1a8b062a691a8e062a693b3e3c3b2d68052706f7f5032c372c3cab2a1a2f052b1a33051a18040c1a74062a691a77062a693b3e3c3b2d68052705f7ce032c362c3cab2a1a68062b1a6c061af1030c1a6d062a691a70062a693b3e3c3b2d68052705f7a7032c362d372d3cab2b2a1a8e040c2f3cab2c1ad6042b1ada041abf030c1a4b062a691a4e062a693b3e3c3b2d6805293b691a47062a69302a693b3b3b3b2d6805270cf763032c362d382d3cab2a2a1a32060c2c03051a330602152b92919103051a300602031a33063e2a69293b6965293ba003032a02062a2a1a27060c1a2b062a693b3d3b3b2d68052707f71a032c362d372d3cab2b2a1a01040c2f3cab2c2a1af8030c293b691a09062a691a0c062a691a0f062a692f2a693b3e3c3b2d6805270bf7e3022c372c3cab2a1afd052b1a01061a06030c291a01060c1a05062a691a08062a693b3e3c3b2d68052706f7b7022c372d392935291af805a003033c0215293b3bef40a0030c2928081ae405280840ed02013b03112b1adf05691ae3052a69641ae5050c0235291ae605a003033c0217293b3bef2808a0030d2928081ad10528082808ed02013b03112b1acb05691acf052a69641ab1050c02012b3e2a692704f742022c3629352a362b372903051ab70502031aba053e2a69313cab2d1a88022b1a8c021a51020c333cab301a79022b1a7d021a42020c291a9d050c293ba003051a9c0502081a97052a1a9b050c293ba003032d02062d2a1a95050c1a99052a69312a693b3e3b3b2d6805270ff7d5012c3629352d3cab2a1a05042b1a81051af6010c1a82052a691a85052a693b3e3c3b2d68052706f7ac012c362d372d3cab2b2a1a93020c2f3cab2c2a1a8a020c293b691a63052a691a66052a691a69052a692f2a693b3e3c3b2d6805270bf775012c36292d1a61020c291a5405691a58052a691a5b052a693b3b3b3b2d68052705f752012c362c3cab2a2a1a3b020c293b691a44052a691a47052a693b3b3b3b2d68052706f72e012c36293b3bef293ba003051a330502473c2ab1292810b1293cb2292808b4291a2705a503043b5002041a2505103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082823e4503128082d280934ec502b95502b27073e2a696602d12c362c3cab2a1aeb032b1aef03faf50c1ae9042a691aec042a69291aee040c3b3e3c3b2d6805270602a72c36299291030a2935293a293ca06502013b03051ad30402031ad6043e2a692e3cab2c1ad4042bfac1faaf0c1ad3042a692c2a693b3e3c3b2d6805270702681ac80402632c362c3cab2a2a1ac4040c1ac8042a691acb042a693b3e3c3b2d6805270502432c362d372d3cab2a2a1a2a010c2f3cab2d2a1a21010c293b691aaa042a691aad042a691ab0042a692f2a691ab0042a691ab3042a693b3b3b3b2d6805270d02031aab04430000|@5660,1,@12895,@1313,@5177,@5661,@5667,@5177,@5669,@5672,@1323,@5673,@384,@5674,@1323,@1901,@5676,@1830,@5677,@5678,@1323,@5679,@5177,@5177,@1323,@5673,@1323,@5680,@1323,@5681,@5658,@1323,@5682,@1323,@1323,@1323,@1323,@5683,@1323,@5685,@449,@5686,@1323,@1323,@1773,@1323,@1323,@1771,@1323,@1323,@1769,@5637,@5546,@5573,@5570,@1323,@5688,@1323,@1323,@5681,@1323,@1895,@1323,@1323,@5681,@801,@1323,@5689,@1323,@5690,@5691,@294,@5692,@1323,@5694,@5177,@5696,@1323,@5701,@5702,@1500,@1325,@1323,@5703,@5177,@5704,@1323,@5717,@1323,@5718,@1323,@5719,@4432,@4431,@5602,@5722,@4444,@1323,@5723,@1323,@369,@5712,@5724,@1500,@1767,@3949,@5725,@359,@284,@5420,@5725,@5726,@5162,@1873,@5727,@5728,@5730,@5731,@1323,@5732,@1323,@5734,@1323,@5735,@1323,@1499,@1500,@1325,@1323,@5736,@360,72057594037927935,@286,@1500,@1325,@5737,@5153,@5147,@5177,@1323,@5738,@5739,@1323,@5650,@1323,@5748,@1323,@1323,@5659,@1804| 16663:D12,80|fb152b352c362a352b372c3a3bfa590c2a2e2bfa5b0c3e2e692f3cab2efa592bfa5efa640cfa692a69fa6d2a69fa712a692e2a69293ba00303300205302afa680c3b3e3c3b2d6805270f420000000000|@5663,1,@12896,@5546,@5569,@449,@5664,@5667,@1323,@1895,@1323,@5662| 16664:D10,72|fb0f2b352c362a362b383e2a692b929103262b3529fa490c3bfa4d0c2a302bfa4f3bfa540c293b69fa562a69fa5a2a69fa5e2a69270702013b2a2a693b3d3b3b2d68052707420000|@5666,1,@12897,@5637,@5546,@5573,@5570,@1323,@5665,@1323| 16665:D9,192|fb112c3ba40304facf02b12e929103ab2e352f36293ba0030b2a2f692e0c293b696402942a2f692e0c30fab4a003033c0214303b3bef3ca0030b302808faa128083ced02013b03033c023f30fa9aa003033c0214303b3bef3ca0030b302808fa8728083ced02013b03033c021d30fa80a003033c0214303b3bef3ba0030b302808fa6d28083bed02013b913c2a3b6a3e3369293b692b2a692e2a693b3b3b3b2d6805220d3cab3222102b2210fa4a0cfa4f2a692c2a69270b6502013b1f040000|@5668,1,@12898,@5577,@369,@384,@294,@5667,@1323| 16666:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12899,@5662| 16667:D12,96|fb122b352c362a352b372c23063bfa680c2a2e2bfa6a0c3e2e692d929103262d3529fa640c3bfa500c2a332bfa623bfa670c293b69fa692a69fa6d2a69fa712a69270702013b2a2a69293ba003032c02052c2afa630c3b3e3c3b2d6805270b42|@5671,1,@12900,@5546,@5569,@5637,@5573,@5570,@1323,@1895,@1323,@5670| 16668:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12901,@5670| 16669:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12902,@5672,@1830| 16670:D4,16|fb082b352c362a35292bfa1c307e0600|@5675,1,@12903,@5658| 16671:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12904,@5676| 16672:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12905,@5677| 16673:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12906,@5678| 16674:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12907,@5680| 16675:D7,56|fb132b352c362a352b362b3cab2a2afa3f0c2d3cab2d2afa370c293b69fa392a69fa3d2a69fa412a692f2a693b3b3b3b2d6805270d420000|@5687,1,@12908,@5658,@1323,@2689,@1323| 16676:D3,16|fb042b353e2a69644200000000000000|@5693,1,@12909| 16677:D4,16|fb052b352c36fa202d7e030000000000|@5698,1,@12910,@5697| 16678:D15,120|fb0e2c352d372e3a3e2c692b929103262b3529fa7b0c3bfa7f0c2a332bfa813bfa860c293b69fa882a69fa8c2a69fa902a69270702013b2b352808a003033b0219303cab2c2afa800c293b69fa822a69fa862a69fa8a2a692705293ba003032a02052a2afa820c2c2a693b3b3b3b2d680527084300000000|@5700,1,@12911,@5637,@5546,@5573,@5570,@1323,@5665,@1323,@5658,@1323,@1895,@1323,@5699| 16679:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12912,@5699| 16680:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12913,@5702,@1499| 16681:D6,32|fb0b2b352c362a362a3cab2afa2a2bfa2ffa350c3b3e3c3b2d68052705420000|@5706,1,@12914,@449,@5705,@5667| 16682:D8,56|fb132b352c362a352b362b3cab2b2afa3f0c2d3cab2c2afa3f0c293b69fa412a69fa452a69fa492a692f2a693b3e3c3b2d6805270d420000|@5708,1,@12915,@5707,@5658,@1323,@1895,@1323| 16683:D27,592|fb262c352d35299291034029352a362a352819a003312a3629929103262936299291031b2936293ba003102c3ba003083337293ca06402013b02013b6402013b6402013b6402013b6502013b038e2e352935293629352a36293534362935220d38220d3cab2f2a1afe010c3e2d6922103cab302a1af1010c293b691af2012a692d2a691af2012a69302a6922173cab349291032d3435291ae6010c3b1ae9010c2a2d2b1aea013b1aee010c293b691aef012a691af2012a691af5012a69270702013b293ba003032b02062b2a1ae9010c3b3b3b3b2d68052716f76d012e352992910336293529352819a003292936299291031e293629929103132936293ba003083337293ca06402013b6402013b6402013b6402013b6402013b03bc2f3529352a362a3629352a362935220d362935220f38220f3cab2f2a1a2d010c3e2d6922123cab302a1a20010c291a7301691a77012a692d2a691a77012a69302a691a77012a691a7a012a69221b3cab22141a77012b1a7b011a80010c221d3dab220f9291032d220f3529faf70c3b1afa000c2a2d2b1afb003b1aff000c293b691a00012a691a03012a691a06012a69270702013b293ba003032b02062b2a1a42010c293ba003032e02062e2a1a3c010c3b3b3b3b2d6805271c02702f36293531383e2b69291a2b0169333cab311afb002b1aff001a04010c220c3dab2e929103262e3529fa7d0c3bfa810c2a2d2bfa833bfa880c293b69fa8a2a69fa8e2a69fa922a69270702013b293ba003032b02052b2afae70c293ba003032e02052e2afae20c3b3b3b3b2d6805270b6465430000000000|@5710,1,@12916,@5658,@1323,@1323,@5637,@5546,@5573,@5570,@1323,@5688,@1323,@5711,@1499,@1323,@1323,@1500,@1325,@294,@5712,@5667,@5714,@5715,@1830,@5716,@5709| 16684:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12917,@5711| 16685:D4,16|fb052b352c36fa202d7e030000000000|@5713,1,@12918,@5658| 16686:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12919,@5714| 16687:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12920,@5715| 16688:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12921,@5716| 16689:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12922,@5709| 16690:D14,328|fb152b3ba403061a5601f735012c9291f82e012c352d36293ba003872a352b382a3b3bef293ba003051a3c010252293db1292810b1293cb2292808b4291a3001a503043b5002041a2e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a69323cab2d2afaf60c293b69faf82a692d2a693b3b3b3b2d6805293b69270b029b2a352b382a3b3bef293ba00304fade0250293db1292810b1293cb2292808b429faaba503043b500203faaa103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a69323cab2d2afa720c293b69fa842a692d2a693b3b3b3b2d680529fa7d693b3b3b3b2d680522113cab220e2afa740cfa792a692c2a6927106502013b430000000000|@5721,1,@12923,@5577,@5720,72057594037927935,@286,@5658,@1323,@5720,@1323,@1712,@5719,@1323| 16691:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12924,@5722| 16692:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12925,@5724,@1763| 16693:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12926,@5727,@1866| 16694:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12927,@5730| 16695:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12928,@5731| 16696:D3,16|fb052b3529353e2a6965420000000000|@5733,1,@12929| 16697:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12930,@5737,@1499| 16698:D14,160|fb192c929103912c352d362a352b362c39303ba40304faa0027a290304faa102013b313cab2d2afa9f0c333cab2e2afa970c293b69fa992a69fa9d2a69faa12a692f2a693b3e3b3b2d6805220e3ba00316293b69293ba00303340208342afa8822157e1564022b29fa8669293ba00303340205342afa810c3b3b3b3b2d680522153cab22122afa780cfa7d2a692c2a692706270b270502013b43000000000000|@5741,1,@12931,@5577,@5742,@5658,@1323,@1895,@1323,@5744,@5745,@5740,@5739,@1323| 16699:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12932,@5744| 16700:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12933,@5740| 16701:D4,16|fb052b352c36fa202d7e030000000000|@5751,1,@12934,@5543| 16702:D3,16|fb052b3529353e2a6965420000000000|@5755,1,@12935| 16703:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12936,@5756| 16704:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12937,@5758,@1866| 16705:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12938,@5759| 16706:D28,360|fb142b3ba403061a7601f755012c353da003422c3629352a362b372f3cab2c2a1a65010c2b03051a660102031a69013e2a69333cab2f2a1a66010c293b691a67012a692d2a69302a693b3b3b3b2d6805270ef70d012c353ca003562c362d372d3cab1a4b012b1a4f012c1a53010c2f3cab2d2a1a12010c293b691a4b012a691a4e012a691a51012a69291a53010c293ba00303300206302a1a4d010c1a51012a691a54012a693b3e3b3b2d6805270e02b12c353ba0037d2c3629352a36293b3bef293ba003051a3701024a293cb1292810b1293cb2292808b4291a2b01a503043b5002041a2901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c95502c27083e2a692d32fa6c0c29faf8691afc002a692c2a693b3c3b3b2d6805270a022e2c353ea003222c36fa722afae72ffa7c0c29fae80cfaed2a69faf12a693b3c3c3b2d6805270502062c363e2a6964430000000000|@5762,1,@12939,@1313,@5760,@5653,@5541,@5543,@1323,@5763,@384,@5765,@1323,@1870,@1323,@5767,@5768,@1323,@1872,@365,72057594037927935,@286,@1499,@1500,@294,@5769,@1323,@5761| 16707:D4,16|fb052b352c36fa202d7e030000000000|@5764,1,@12940,@5534| 16708:D9,168|fb112d9291039b2d352e36293ba003142d3ba40304faa902092a2e69310c293b6964027b2d3ba40304fa9d02722efaa0a003033c02142e3b3bef3ca0030b2e2808fa8d28083ced02013b03033c021d2efa86a003033c02142e3b3bef3ca0030b2e2808fa7328083ced02013b912b2f69320c3c2b3b6a3e3269293b692b2a692d2a693b3b3b3b2d6805220c3cab22103322102cfa4b0cfa502a692c2a69270b6502013b1f04000000|@5766,1,@12941,@5577,@5577,@369,@384,@5765,@1323| 16709:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12942,@5767,@1866| 16710:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12943,@5768| 16711:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12944,@5769,@1866| 16712:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12945,@5539| 16713:D8,136|fb122b352c362a362b392a3b3bef293ba00304fa8b024e293db1292810b1293cb2292808b429fa80a503043b500203fa7f10292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c27083e2a692e3cab2d2afa490c293b69fa4b2a692d2a693b3e3b3b2d6805270c4200000000|@5772,1,@12946,@5720,72057594037927935,@286,@5543,@1323| 16714:D18,144|fb112b3ba40304fa9f02832c353ba0030c2c362c3cab2a2afa962f7e062c353ca0034f2c362d372d3cabfa8c2bfa912cfa960c2f3cabfa802efa852cfa8a0c29fa8e0c293ba00304fa8e0206fa8a2afa8f0c293ba003032d02052d2afa8a0cfa8f2a69fa932a693b3e3b3b2d6805270b021c2c37fa8a2afa8f2ffa4c0cfa912a69fa952a693b3e3b3b2d680527044300|@5775,1,@12947,@1313,@5658,@5763,@384,@5765,@5776,@5728,@5777,@5778,@1323,@5779,@5774,@5177,@1323,@5657| 16715:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@12948,@5776,@1866| 16716:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12949,@5777| 16717:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12950,@5778| 16718:D4,16|fb052b352c36fa202d7e030000000000|@5781,1,@12951,@5780| 16719:D11,160|fb172c362d372e390b02002c3ca003062d353da002013b031b2d3629352a362b372c382b2b2b6a296801302a452f465026070206293b452e465029352a363e31692b929103292b3529352a36290304fa670202fa6b3e2a6922103cab2d2afa680c293b69fa6a2a692d2a69270902013b220c3cab2c2afa600c293b69fa622a69fa662a69293ba003032e02052e2afa600c302a693b3e3b3b2d68052711430000|@5783,1,@12952,@5653,@5541,@5543,@1323,@5760,@1323,@5784,@5782| 16720:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12953,@5782| 16721:D15,240|fb4f2d350b03003b2a1afc000c5029352a362b372b2b2b6a0b03003b2afae90c5029362a370b03003b2afadc0c5029352a362b372b2b2b6a0b03003b2afac90c5029362a370b03003b2afabc0c5029362a3722252306fab82a221e6a22272308fab62a22196a2229230cfab42a22146a222b3afab32a220f6a222d230bfab12a346afab4223022296a223039fab22214222a22242d32221022142210332224220d2212680d3b06fa9f2a69faa32b6922323b22382e30221c22312216222c22162227221622392242223a22342214221922232231221a2248362217221722422235fa750c50fa79222c69222e22367d38|@5786,1,@12954,@5198,@16723,@16724,@16725,@16726,@16727,@16728,@5790,@16732,@16733,@5795,@16722| 16722:D6,96|fb122b352c362a2c360c299291030a2935293a2992916502013b03122935293a29352936293b3b3ce350260402023b502a2306299291032329352c380b02002cfa362bfa3b0c5029352a3629fa3a0c2b3b69313b3b2ce3270902013b27044200|@8990,1,@13976,@8989,@4254,@7157| 16723:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12955| 16724:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12956| 16725:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12957| 16726:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12958| 16727:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@12959| 16728:D5,40|fb093b06fa3a2a692b370c2a353b2d3623090c293ba003032a02072a2afa29317e07270442000000|@5788,1,@12960,@16729,@5787| 16729:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@5789,1,@12961| 16730:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@12962,@5787| 16731:D3,8|fb023b4200000000|@5791,1,@12963| 16732:D3,40|fb082936353b2a299291031229362b3caa292b25042504511e113b6502012a656442000000000000|@5792,1,@12964| 16733:D7,136|fb0d293635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba00304fa7602553b2a299291031229362b3caa292b25042504511e113b6502012a6529fa5ea80303fa61103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa352a69664200|@5793,1,@12965,@957,72057594037927935,@2035,@16734| 16734:D4,24|fb052936932c2aa90303fa24103b502a362d3bdb64420000|@5794,1,@12966,@831| 16735:D23,1104|fb3a221b9291f81104221b35221c362a353ca0f8ce012a362b37221e299291032829352a362a352b361a3c042223692b350c501a3a042223692a350c502b250526041e263b270402013b641a2a042e22202d6b0b03002d2a1a25040c5029352a362224353b2a299291031229362b3caa292b25042504511e113b6502012a65222635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051ae00302593b2a299291031229362b3caa292b25042504511e113b6502012a65291ac703a803041ac903103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029651a9a032a69220f299291039229352a362a352b362c372d382e3929220d3322342237321a7f030c29352a372b392c3a3b3069223923103b2a0c3d2a69293b692d2a6932353ca0032f323633382a352a352993293ba003051a2b0302132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020132292210342d220c220c6806220f3b3b2ce35022102a69221c0c502212251526141e91261402023b50502228310c5022103b222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d1ad102222e7b1c2e2a353ba0f89b012a362b37221e299291032829352a362a352b361ab7022223692b350c501ab5022223692a350c502b250526041e263b270402013b641aa5022e22202d6b0b03002d2a1a50020c5029352a362224353b2a299291031229362b3caa292b25042504511e113b6502012a65222635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051a0b0202593b2a299291031229362b3caa292b25042504511e113b6502012a65291af201a803041af401103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029651af5012a69220f299291035f29352a362a352b362c372d382e392f3a30230631230732230833230934230a220c230b22132210223a223d2214223b223b223b223b223b223b223b223b2244223c223c223c223c223c223c223c223c222b1aa0010c50292503511e5f5102023b5050221b310c5022103b222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d1a2f01222e7b1c2e2a362b371a53012a221e6a2b3b69221f3a222023062221230a2222230e2223230f2b352e352b352d35302c2e2c2e680533220c22172217222b222e2f1a2301221e1a26010c50222938293503033b020a221422146929222d696422102a222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222dfa9b222e7b1c2e221a299291032629352a362a352b36facd221f692b350c50facc221f692a350c502b250526041e243b270402013b641f1a0000000000|@5796,1,@12967,@16737,@16750,@16754,@5301,@957,72057594037927935,@2035,@16757,@5830,@5795,@17581,@17582,@17583,@17585,@8753,@17742,@294,@8774,@17743,@16736| 16736:D7,104|fb102b352c362a3b3bef293ba00304fa6f0246293cb1292810b1293cb2292808b429fa64a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a282ee4502c95502c27082b372a2a3036fa37337b0508000000|@5798,1,@13975,@371,72057594037927935,@286,@5820| 16737:D5,24|fb0a2b352c3629382b2a2e36fa22fa28327b060600000000|@5798,1,@12968,@5799,@5797| 16738:D10,56|fb0b3bfa4b0c3bfa4f0cfa54fa5a3b2d2d3c3b3c6808280c2a693bfa532f36fa576b29fa5b692b2a6928142a3b6a27074200000000000000|@5800,1,@12969,@3991,@4321,@915,@4322,@1100,@915,@4136| 16739:D5,32|fb073b06fa322a2f2f33680529fa310c302a0c643b2a0c513b651f0400000000|@5802,1,@12970,@16740,@5801| 16740:D4,16|fb07fa242c2b362c372d382e39680642|@5803,1,@12971,@16741| 16741:D4,24|fb092b2a362b372c382d392e3afa21317b08030000000000|@5805,1,@12972,@5804| 16742:D17,360|fb342f352806a0f857012f3630372a3529353ca003302a3ebb29920305293ba2020529942811a0030a1a54012a1a58010c020129299203043b5002041a510110293ca06502013bf8130131351a49010c293b3bef293ba003051a440102453c2ab1292810b1293cb2292808b4291a3801a503043b5002041a360110292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808285fe4503128082d280934ec502b95502b27073435293caa220d3b3b2ce3220d3a220e2306220f230a2210230e2211230f2b352e352b352d35302c2e2c2e6805220d2afae36a3b22180c3c2a6922143fb7293ba09129063c2a3b3b6b2d2a316a3b3269293b6922173b2b2e6b28053b221a2c3b680522233a222423062225230a2226230e2227230f2b352e352b352d35302c2e2c2e6805222bfa9569fa9a2a6964fa9d0c29faa1faa70c29faab0c3b3e3b3b2d68053b3b2b306b2232230c2a2a0c50222e3b3b2213e3272c02013b6602013b1f0600000000|@5807,1,@12973,@796,@797,@792,@5808,@420,72057594037927935,@286,@5810,@5811,@5806,@284,@5050,@5052,@5338| 16743:D9,208|fb152b281aa803282b281aad2c281aae293ba003033c0207293ba2293ba06403032a02032a3cab293cab66fabb0c0202fabe2c281aae293ba003033b0210293ba2293ba003032a02042a281aaa64292861aa293ba203033c02042928ffa60303fa96103b50fa992a3bdb2d3b3bef2a3b3bef2a3ba003032b0253293ba003032f024b2a2ab1292810b1293cb2292808b429fa75a503043b500203fa7410292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d2808220cec50280832b13328082e2c220cec502c95502c2708270742|@5809,1,@12974,@5808,@294,@308,@296,72057594037927935,@286| 16744:D4,8|fb03fa1c2c694200|@5813,1,@12975,@16745| 16745:D4,16|fb04fa242c2b366a4200000000000000|@5814,1,@12976,@16746| 16746:D4,16|fb062b2a362b37fa1f2e7b0503000000|@5816,1,@12977,@5815| 16747:D7,104|fb0b2cfa7b0c292d0c2f2a0c642a350a07001d00200023003600430046000e002a3629352b2a31fa5f327b050902362902332902302a362b372b2a31fa4a0c292c32fa44337b050a2a3629fa3b302dfa3f327b060829020d2a3629fa2b302dfa37327b0608654400|@5818,1,@12978,@4275,@5815,@5819,@5817| 16748:D4,32|fb0a2e929103152e352f3629303030fa270c2b362a2a3234327b050a2b1f0400|@2425,1,@12979,@5819| 16749:D4,32|fb092e929103132e352f3629303030fa270c292c3133317b05092b1f04000000|@2425,1,@12980,@5817| 16750:D7,104|fb102b352c362a3b3bef293ba00304fa6f0246293cb1292810b1293cb2292808b429fa64a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a282ee4502c95502c27082b372a2a3036fa37337b0508000000|@5798,1,@12981,@371,72057594037927935,@286,@5820| 16751:D6,24|fb082c35fa2a2ffa2f2f6b2a3b2bfa30307b050700000000|@5821,1,@12982,@16752,@5820,@874| 16752:D4,48|fb0c2c2c2a9291031e2a352b36312b2d303631373238fa300c2a2a2505250526031e1d3b660201296544000000000000|@877,1,@12983,@5822| 16753:D11,376|fb112f351a8901a003de2d3b3bef313b3bef2a3ba00303320258293ba003032f02502a2ab1292810b1293cb2292808b4291a6401a503043b5002041a6201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d2808220cec50280832b1221128082e2c220cec502c95502c2708293b3bef293ba003051a2a01024a293cb1292810b1293cb2292808b4291a0601a503043b5002041a0401103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27083435fac2a003043b500203fad9103b50343729372b2a34220d220c7b050f2f35facca003852d3b3bef313b3bef2a3ba00303320256293ba003032f024e2a2ab1292810b1293cb2292808b429fa80a503043b500203fa7f103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d2808220cec50280832b1221128082e2c220cec502c95502c27083235fa5fa003043b500203fa4e103b50323729382b2a32fa52fa58347b060d3b1f0600|@5823,1,@12984,@21,72057594037927935,@286,@371,@826,@18,@5799,@5797| 16754:D9,216|fb12faec2a36692e3b3bef293ba00304fae60249402ab1292810b1293cb2292808b429fadba503043b500203fada103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab328082d280840ec50220d28082d281234ec502b95502b2707293b3bef293ba00304faa8024d29282bb1292810b1293cb2292808b429fa84a503043b500203fa83103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6728082e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa4b220f7b070d000000000000|@5825,1,@12985,@16755,@5827,72057594037927935,@286,@5828,@5824| 16755:D4,16|fb0529362cfa212d7e03000000000000|@5826,1,@12986,@5532| 16756:D7,168|fb0d2f230d29299291031a29352a362a35faada003052a68010207292503511e193b6502013b64293ba00342fa9a299291031a29352a362a35fa85a003052a68010207292503511e193b6502013b64293ba00303fa7a103b5029352935fa61a003043b500203fa7010293765021329352935fa4ca003043b500203fa5b1029376429310c296801332a32346b220c38220d230c220d03082a3b3b3ce35002023b502b2a347d0f0000|@5829,1,@12987,@61,@1652,@1701,@826| 16757:D4,24|fb052936932c2aa90303fa24103b502a362d3bdb64420000|@5794,1,@12988,@831| 16758:D17,616|fb303b06293b3b1a7602e35030064028401a7402da3c2a692906291a6a02694028403bda3c2a692906293b690b04002216353ba003472216362217370b060031221d323b1a49022e22252222221e2227221c221922292220221d222b222836222b1a34020c5029352a362b382c39220d2d452c462b472a4850260d028f2216353da0034622163629352a362b372c382d392c2b2d2c31221e1af50122232220221c2225221a22172227221e221b222922263622291ae9010c302a35452a36462a38472a394851260602422216362217372218380b060032323222201ab2012e2223222722242222362221222a221f221c222c1ab3010c5029352a362b382c39220e2d452c462b472a4850260e29352a362b372c382c3b1a97011a9c010c221a062a060b02003b2a221922222218221833331a8c010c5029352a36293ba003051a860102593b2a299291031229362b3caa292b25042504511e113b6502012a65291a6d01a803041a6f01103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652b3ba003051a230102593b2c299291031229362b3caa292b25042504511e113b6502012a65291a0a01a803041a0c01103b503b502928403bda3b2e293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fade22232c22266b2b932b932a2aa0290304220e0206fad0220f2e6a2212353ca003302212362213382a352a352993293ba00304fa9202132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020222122922133422142e222e680627231f0600000000|@5831,1,@12989,@5832,@951,@294,@7022,@7023,@7059,@8732,@874,@8735,@957,72057594037927935,@2035,@17580,@16759| 16759:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13811,@4374| 16760:D33,496|fb172b363ca203061afd01f7da012b3529353ba0038d2c3529362e363cab2a2a691aec01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ace01a003033c020f291acc01a003033c0205291aca01a06402013b9102013b02013b03192a1ac001691ac4012a691ac7012a693b3e3c3b2d68056602012a64020129293b691ab8012a691abb012a693b3c3b3b2d68052709f744012c363ca203061aac01f738012c3529353ca0038c2d3529362f363cab2a2a691a9b01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2d01a003033c020f291a2b01a003033c0205291a2901a06402013b9102013b02013b03192a1a1f01691a23012a691a26012a693b3e3c3b2d68056602012a64020129293b691a37012a691a3a012a693b3c3b3b2d6805270902a32d363ca203051a2c0102982d3529353da003051a2701028a2e363ca203051a2401027f2e3529362a3731363cab293ba203051a18010249293cab2c2a69fa8e352a2a0c642c3cab2e2a691a0801351a0c012a0c642a2a0c64291a0901691a0d012a691a10012a691a13012a691a16012a69312a691a16012a691a19012a69270d1a1a012a693b3c3b3b2d6805293b691a13012a691a16012a693b3c3b3b2d6805270a6464644200000000000000|@5834,1,@12990,@2535,@111,@594,@595,@596,@2624,@1500,@2627,@1323,@6989,@2535,@75,@1323,@6996,@2535,@7003,@2535,@4429,@118,@7010,@5552,@1323,@7012,@1323,@5556,@1323,@7014,@5559,@1323,@5833| 16761:D60,568|fb2c2b363ca203061a4502f727022b352c363cab293ba203061a3c02f7f4012a352a3cab2a2a692e37352a2a0c642d3ca203061a2a02f7c1012e372e3cab293ba203061a2202f76d012a372a3cab2a2a691a1c02352a2a0c642d3ca203061a1702f739012e362e3cab293ba203051a0f0202e62a362a3cab2a2a691a0a02352a2a0c642d3ca203051a050202b32e382e3cab2a2a691af001352a2a0c64313da203051af30102803235323cab2a2a691abe01352a2a0c64220c3ea203051ae001024c220d37220d3cab2a2a691ab901352a2a0c6422113922113cab2a2a691aa701352a2a0c64291abe01691ac2012a691ac5012a691ac8012a691acb012a69322a691acb012a691ace012a69270f1acf012a691ad2012a692c2a691ad2012a691ad5012a6927091ad6012a691ad9012a692c2a691ad9012a691adc012a6927091add012a691ae0012a692c2a691ae0012a691ae3012a6927091ae4012a693b3c3b3b2d68053335333cab2a2a691a0001352a2a0c64291acf01691ad3012a691ad6012a691ad9012a691adc012a69322a691adc012a691adf012a6927101ae0012a691ae3012a692c2a691ae3012a691ae6012a6927091ae7012a693b3c3b3b2d68053336333cab2a2a69220e36352a2a0c64291ad201691ad6012a691ad9012a691adc012a691adf012a69322a691adf012a691ae2012a6927101ae3012a691ae6012a692c2a691ae6012a691ae9012a6927091aea012a693b3c3b3b2d6805293b691ae3012a691ae6012a693b3c3b3b2d68052708420000|@5837,1,@12991,@2535,@4429,@4429,@4429,@7,@4429,@4429,@75,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@5840,@5559,@5552,@1323,@5842,@1323,@5556,@1323,@5840,@1323,@5556,@1323,@5844,@5559,@1323,@5836| 16762:D57,592|fb1d2b363ca203061a5d02f73c022b3529353ba003ea2c3529362a372b382c3931363cab293ba203051a440202ad293cab2e2a691a4102352a2a0c642c3ca203051a3c02027c2c3cab302a69220c36351a35022a0c642a2a0c642f3da203051a2e0202452f3cab312a691a2b02352a2a0c64323cab220c2a691afc01352a2a0c64291a1b02691a1f022a691a22022a691a25022a691a28022a69312a691a28022a691a2b022a69270d1a2c022a691a2f022a692c2a691a2f022a691a32022a6927081a33022a691a36022a692c2a691a36022a691a39022a6927081a3a022a693b3c3b3b2d6805293b691a33022a691a36022a693b3c3b3b2d6805270cf749012c363ca203061a2702f73d012c3529353ca003b52d3529362a372b3831363cab293ba203051a1002027b293cab2b2a691a6501352a2a0c642c3ca203051a0002024a2c3cab2f2a691a2d01352a2a0c642f3cab332a691aef01351af3012a0c642a2a0c64291af001691af4012a691af7012a691afa012a691afd012a69312a691afd012a691a00022a69270d1a01022a691a04022a692c2a691a04022a691a07022a6927081a08022a693b3c3b3b2d6805293b691a01022a691a04022a693b3c3b3b2d6805270b027f2d363ca203051af60102742d3529362a3730363cab293ba203051aea01023e293cab2c2a691ae701351aeb013337693b2a3d3d6b642a0c642a2a0c642c3cab2e2a693437352a2a0c64291ad201691ad6012a691ad9012a692f2a6927091ad7012a693b3c3b3b2d6805293b691ad0012a691ad3012a693b3c3b3b2d6805270a6464420000000000|@5854,1,@12992,@2535,@4429,@75,@4429,@5855,@4429,@115,@5552,@1323,@5859,@1323,@5556,@1323,@5861,@1323,@5556,@1323,@5863,@1323,@5556,@1323,@5865,@5559,@1323,@5867,@2535,@4429,@4429,@116,@5885,@5552,@1323,@5887,@1323,@5556,@1323,@5865,@1323,@5556,@1323,@5889,@5559,@1323,@5891,@2535,@1318,@118,@16775,@2625,@1323,@5556,@2627,@1323,@5853| 16763:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@12993,@115| 16764:D5,24|fb052b35290304fa270202fa2b3e2a696542000000000000|@274,1,@12994,@2709,@2708| 16765:D4,16|fb04fa242a362d6a4200000000000000|@274,1,@12995,@16766| 16766:D5,24|fb0a2b362a37362d3529fa242c692d2f36fa25327b060600|@5876,1,@12996,@16767,@5875| 16767:D3,16|fb042c2c692a362c7d04000000000000|@5877,1,@12997| 16768:D11,408|fb1b2e352d3ba403061aa401f78501d9293729299291032f29352a362a35293533a00318293533a003043b5002041a8701103b5029372968016402082a250426031e2e3b6602013b642992910304293502013b29299291031729352a362a220ea003033c0207292503511e163b6502013b6403061a4901f718017881bd220c2c69d9293729299291032929352a362a3529352211a0031122101a2c01313b6b2c3b3b2ce3505002072a250426031e2826030217d9220e1a0f012f3b6b2906292e692c3b28102ce350260450220d3cab332a22110c64faf90c293b691afa002a691afd002a693b3e3b3b2d6805d9293729299291032829352a362a3529352218a003102217fac222123b6b2c3b3b2ce36402082a250426031e273b660216d92215faa622103b6b2906292e692c3b28102ce32704642c270bf102586dd9293729299291032829352a362a352935220fa00310220efa73323b6b2c3b3b2ce3505002072a250426031e2726030216d9220cfa57303b6b2906292e692c3b28102ce3502604502b352c362d372b2b2bfa5a6b6610642704641f0400|@5879,1,@12998,@277,@826,@277,@394,@5880,@615,@5882,@5878| 16769:D12,200|fb0c2b353ba003ba2b3929929103a029352a36293ba003032e02912a353ea0037b2a3629fabaa003033c0214293b3bef3ca0030b292808faa728083ced02013b03032f025429faa0a003033c0214293b3bef3ca0030b292808fa8d28083ced02013b03032f023229fa86a003033c0214293b3bef3ca0030b292808fa7328083ced02013b03032f02102ffa6c69fa712a693b3e3c3b2d6805656402102efa6969fa6e2a693b3e3c3b2d6805656502102cfa6669fa6b2a693b3e3c3b2d6805656402012b4200000000|@5881,1,@12999,@416,@448,@365,@622,@620,@622,@620,@622,@620| 16770:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13000,@115| 16771:D4,8|fb03fa1c2c694200|@274,1,@13001,@16772| 16772:D7,48|fb0c2b362a36362d352b3ba40304fa3802062b2a2cfa390c29fa3d0cfa422a693b3c3b3b2d6805270642000000000000|@5876,1,@13002,@5900,@5901,@5903,@5899| 16773:D8,80|fb0a2c929103442c352d36293ba003142f3ba00304fa5102092a30692e0c293b696402242f3ba00304fa45021b2a30692e0c303cab292c31fa3e0cfa432a69fa472a692d2a6927056502013b44000000|@5902,1,@13003,@5900,@5900,@5901,@615,@616| 16774:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@5905,1,@13004,@5903,@5904| 16775:D15,112|fb122b363ba20304fa7e02512b35362c363cab2a2a69fa78352a2a0c642f353530363cab2a2a69fa6f35fa743236693b2a3e3c6b642a0c642a2a0c6429fa6969fa6e2a69fa722a69fa762a69fa7a2a69322a69fa7b2a69fa7f2a69270ffa812a693b3c3b3b2d68056542000000000000|@268,1,@13005,@4429,@119,@116,@16777,@5552,@1323,@5912,@1323,@5556,@1323,@5908,@5559| 16776:D9,136|fb112b3529920305293ba2020529942811a00308fa8a2afa8f0c020129293dfa8f0c293b3bef293ba00304fa8b02503e2ab1292810b1293cb2292808b429fa80a503043b500203fa7f10292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082830e4502b28092877e4502b402878e4503128082d280b34ec502b95502b27073e2a69270542000000|@274,1,@13006,@796,@797,@801,@5910,72057594037927935,@286| 16777:D3,16|fb052936352c2a2d7d04000000000000|@5911,1,@13007| 16778:D4,8|fb03fa1c2c694200|@5922,1,@13008,@16779| 16779:D16,320|fb102b363ca203061a4d01f72f012b3529353ba003892c3529362e363cab2a2a69662b36360c29353ba0035a2939299291033329369291032a2935353ea0031f293536291a1901a003033c020f291a1701a003033c0205291a1501a06402013b9102013b02013b03192a1a0b01691a0f012a691a12012a693b3e3c3b2d68056602012a64020129293b691a03012a691a06012a693b3c3b3b2d68052705029d2c363ca20304faf902932c3529362e363cab2a2a69faf2352f36363036373136383b2c2c2c6b662a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa73a003033c020d29fa72a003033c020429fa71a06402013b9102013b02013b03162afa6869fa6d2a69fa712a693b3e3c3b2d68056602012a64020129293b69fa832a69fa872a693b3c3b3b2d6805270964420000|@5924,1,@13009,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@5925,@2535,@116,@1323,@5923| 16780:D81,904|fb222b363ca203061a9503f777032b3529353ba003061a8f03f768032c363ca203061a8b03f75c032c3529353ca003061a8503f74d032d363ca203061a8103f741032d3529353da0037c2e3529362a3731363cab293ba203051a6c030243293cab2c2a693236352a2a0c642c3cab2e2a69220c36352a2a0c64291a5303691a57032a691a5a032a691a5d032a691a60032a69312a691a60032a691a63032a69270d1a64032a693b3c3b3b2d6805293b691a5d032a691a60032a693b3c3b3b2d6805270af7bc022e363ca203061a5103f7b0022e3529353ea0038c2f3529362a3732363cab293ba203051a3c030253293cab2b2a693337352a2a0c642c3cab2f2a691a2c03351a3003220f36693b2a3d3d6b642a0c642a2a0c64291a2303691a27032a691a2a032a691a2d032a691a30032a69312a691a30032a691a33032a69270d1a34032a693b3c3b3b2d6805293b691a2d032a691a30032a693b3c3b3b2d6805270af71b022f363ca203061a2103f70f022f3529353fa003563035293632363cab2a2a691aa802351a0c033438693b2a3e3c6b642a0c642a2a0c64291a0003691a04032a691a07032a691a0a032a693b3c3b3b2d6805293b691a03032a691a06032a693b3c3b3b2d6805270df7b00130363ca203061af702f7a401303529352805a0f80401313529362a372b382c39220d363cab293ba203051adb0202c7293cab2e2a691a2802351ad402221036693b2a3e3c6b642a0c642a2a0c642c3ca203051ac30202862c3cab2f2a69221138352a2a0c642f3da203051ab30202552f3cab312a691ae801351aac02221639693b2a3e3c6b642a0c642a2a0c64323cab220d2a691a9902352a2a0c64291a9802691a9c022a691a9f022a691aa2022a691aa5022a69312a691aa5022a691aa8022a69270d1aa9022a691aac022a692c2a691aac022a691aaf022a6927081ab0022a691ab3022a692c2a691ab3022a691ab6022a6927081ab7022a693b3c3b3b2d6805293b691ab0022a691ab3022a693b3c3b3b2d6805270c029531363ca203051aa502028a313529362a3734363cab293ba203051a99020254293cab2b2a691a9602352a2a0c642c3cab2f2a691a9002351a9402221136693b2a3e3c6b642a0c642a2a0c64291a8702691a8b022a691a8e022a691a91022a691a94022a69312a691a94022a691a97022a69270d1a98022a693b3c3b3b2d6805293b691a91022a691a94022a693b3c3b3b2d6805270a646464646464420000|@5911,1,@13010,@2535,@5937,@2535,@5944,@2535,@4429,@5552,@1323,@5951,@1323,@5556,@1323,@5953,@5559,@1323,@5955,@2535,@4429,@118,@16781,@5552,@1323,@5964,@1323,@5556,@1323,@5966,@5559,@1323,@5968,@2535,@16782,@5552,@1323,@5976,@5559,@1323,@5978,@2535,@4429,@16783,@4429,@4429,@16784,@7,@5552,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@5988,@1323,@5556,@1323,@5990,@5559,@1323,@5992,@2535,@4429,@119,@116,@16785,@5552,@1323,@5912,@1323,@5556,@1323,@5908,@5559,@1323,@5936| 16781:D13,96|fb122b363ba20304fa6e02432b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a693036352a2a0c6429fa5769fa5c2a69fa602a69fa642a69fa682a69322a69fa692a69fa6d2a69270ffa6f2a693b3c3b3b2d6805654200000000|@268,1,@13011,@4429,@7,@5552,@1323,@5962,@1323,@5556,@1323,@5554,@5559| 16782:D3,16|fb052936352c2a2d7d04000000000000|@5975,1,@13012| 16783:D3,16|fb052936352c2a2d7d04000000000000|@5911,1,@13013| 16784:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@13014| 16785:D3,16|fb052936352c2a2d7d04000000000000|@5911,1,@13015| 16786:D25,296|fb112b363ca203061a3501f713012b3529353ba0036e2c3529362a372f363cab293ba203051a20010236293cab2c2a691a1d01351a21012a0c642a2a0c642c3cab2e2a691a1901352a2a0c64291a1801691a1c012a691a1f012a692f2a6927091a1d012a693b3c3b3b2d6805293b691a16012a691a19012a693b3c3b3b2d6805270a029c2c363ca203051a0b0102912c3529362e363cab2a2a691a0301351a07013036693b2a3e3c6b642a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fadfa003033c020d29fadea003033c020429fadda06402013b9102013b02013b03162afad469fad92a69fadd2a693b3e3c3b2d68056602012a64020129293b69facf2a69fad32a693b3c3b3b2d680527096442000000000000|@6007,1,@13016,@2535,@1318,@118,@6008,@115,@2625,@1323,@5556,@2627,@1323,@6010,@2535,@116,@16788,@594,@595,@596,@2624,@1500,@2627,@1323,@6006| 16787:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@13017,@7| 16788:D3,16|fb052936352c2a2d7d04000000000000|@6007,1,@13018| 16789:D29,248|fb1c2b363ca203051a050102e72b352c363cab293ba203051afd0002b82a382a3cab2a2a692e38352a2a0c642d3ca20304faed028b2e372e3cab2a2a69fae935faee3437693b2a3e3c6b642a0c642a2a0c64313da20304fadf02503235323cab2a2a69fadb352a2a0c64220d36220d3cab2a2a69fab235facf221336693b2a3d3d6b642a0c642a2a0c6429fac369fac82a69facc2a69fad02a69fad42a69322a69fad52a69fad92a69270ffadb2a69fadf2a692c2a69fae02a69fae42a692709fae62a69faea2a692c2a69faeb2a69faef2a692709faf12a693b3c3b3b2d6805293b69faeb2a69faef2a693b3c3b3b2d6805270842000000|@5975,1,@13019,@2535,@4429,@4429,@118,@16790,@4429,@7,@16791,@5552,@1323,@6025,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@6027,@5559,@1323,@6024| 16790:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@13020| 16791:D15,112|fb122b363ba20304fa7e02512b35362c363cab2a2a69fa78352a2a0c642f353530363cab2a2a69fa6f35fa743236693b2a3e3c6b642a0c642a2a0c6429fa6969fa6e2a69fa722a69fa762a69fa7a2a69322a69fa7b2a69fa7f2a69270ffa812a693b3c3b3b2d68056542000000000000|@268,1,@13021,@4429,@119,@116,@16792,@5552,@1323,@5912,@1323,@5556,@1323,@5908,@5559| 16792:D3,16|fb052936352c2a2d7d04000000000000|@5911,1,@13022| 16793:D95,1072|fb242b363ca203061a3d04f720042b3529353ba0f81d012c3529362e363cab293ba203051a290402e62a362a3cab2a2a691a2404352a2a0c642d3ca203051a1f0402b32e382e3cab2a2a691a0a04352a2a0c64313da203051a0d0402803235323cab2a2a691a0804352a2a0c64220c3ea203051a0204024c220d37220d3cab2a2a691ad303352a2a0c6422113922113cab2a2a691ac103352a2a0c64291ae003691ae4032a691ae7032a691aea032a691aed032a69322a691aed032a691af0032a69270f1af1032a691af4032a692c2a691af4032a691af7032a6927091af8032a691afb032a692c2a691afb032a691afe032a6927091aff032a691a02042a692c2a691a02042a691a05042a6927091a06042a693b3c3b3b2d6805293b691aff032a691a02042a693b3c3b3b2d68052709f7f9022c363ca203061af303f7ed022c3529353ca0f81d012d3529362f363cab293ba203051adf0302e62a362a3cab2a2a691af202352a2a0c642d3ca203051acd0302b32e382e3cab2a2a691ad802352a2a0c64313da203051abb0302803235323cab2a2a691ad602352a2a0c64220c3ea203051aa803024c220d37220d3cab2a2a691aa102352a2a0c6422113922113cab2a2a691a8f02352a2a0c64291a8603691a8a032a691a8d032a691a90032a691a93032a69322a691a93032a691a96032a69270f1a97032a691a9a032a692c2a691a9a032a691a9d032a6927091a9e032a691aa1032a692c2a691aa1032a691aa4032a6927091aa5032a691aa8032a692c2a691aa8032a691aab032a6927091aac032a693b3c3b3b2d6805293b691aa5032a691aa8032a693b3c3b3b2d68052709f7c6012d363ca203061a9903f7ba012d3529353da0038d2e35293630363cab2a2a691ad001352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a6203a003033c020f291a6003a003033c0205291a5e03a06402013b9102013b02013b03192a1a5403691a58032a691a5b032a693b3e3c3b2d68056602012a64020129293b691a4c032a691a4f032a693b3c3b3b2d68052709f724012e363ca203061a4003f718012e35293630363cab293ba203051a350302e42a362a3cab2a2a691a2801352a2a0c642d3ca203051a230302b12e382e3cab2a2a691a0e01352a2a0c64313da203051a1103027e3235323cab2a2a691a0c01352a2a0c64220c3ea203051afe02024a220d37220d3cab2a2a69fad8352a2a0c6422113922113cab2a2a69fac7352a2a0c64291ade02691ae2022a691ae5022a691ae8022a691aeb022a69322a691aeb022a691aee022a69270f1aef022a691af2022a692c2a691af2022a691af5022a6927091af6022a691af9022a692c2a691af9022a691afc022a6927091afd022a691a00032a692c2a691a00032a691a03032a6927091a04032a693b3c3b3b2d6805293b691afd022a691a00032a693b3c3b3b2d680527096464644200|@5985,1,@13023,@2535,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1323,@6036,@2535,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1323,@6043,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@6050,@2535,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1323,@6035| 16794:D47,784|fb182b363ca203061a1d03f7fa022b3529353ba0038d2c3529362e363cab2a2a691a0c03352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aee02a003033c020f291aec02a003033c0205291aea02a06402013b9102013b02013b03192a1ae002691ae4022a691ae7022a693b3e3c3b2d68056602012a64020129293b691ad8022a691adb022a693b3c3b3b2d68052709f764022c363ca203061acc02f758022c3529353ca0038d2d3529362f363cab2a2a691abb02352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a4d02a003033c020f291a4b02a003033c0205291a4902a06402013b9102013b02013b03192a1a3f02691a43022a691a46022a693b3e3c3b2d68056602012a64020129293b691a57022a691a5a022a693b3c3b3b2d68052709f7c2012d363ca203061a4b02f7b6012d3529353da003892e3529362a3731363cab293ba203051a36020250293cab2c2a691a3302351a37022a0c642a2a0c642c3cab2e2a691a1f02351a2b022a0c642a2a0c64291a2802691a2c022a691a2f022a691a32022a691a35022a69312a691a35022a691a38022a69270d1a39022a693b3c3b3b2d6805293b691a32022a691a35022a693b3c3b3b2d6805270af724012e363ca203061a2602f718012e3529353ea0038b2f35293631363cab2a2a693136352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a1001a003033c020f291a0e01a003033c0205291a0c01a06402013b9102013b02013b03192a1a0201691a06012a691a09012a693b3e3c3b2d68056602012a64020129293b691aaa012a691aad012a693b3c3b3b2d6805270902842f363ca203051a9f0102792f3529362a3732363cab293ba203051a93010243293cab2c2a69fa89352a2a0c642c3cab2e2a69220d37352a2a0c64291a7a01691a7e012a691a81012a691a84012a691a87012a69312a691a87012a691a8a012a69270d1a8b012a693b3c3b3b2d6805293b691a84012a691a87012a693b3c3b3b2d6805270a646464644200000000000000|@6065,1,@13024,@2535,@75,@594,@595,@596,@2624,@1500,@2627,@1323,@6066,@2535,@126,@1323,@6860,@2535,@4429,@116,@6867,@6870,@5552,@1323,@6904,@1323,@5556,@1323,@6106,@5559,@1323,@6906,@2535,@1323,@6912,@2535,@4429,@5552,@1323,@6367,@1323,@5556,@1323,@6106,@5559,@1323,@6064| 16795:D404,4928|fb3a2b363ca203061a4d13f72b132b3529353ba003ae2c3529362a372b3830363cab293ba203051a36130273293cab2d2a693136352a2a0c642c3ca203051a271302432c3cab2f2a693436352a2a0c642f3cab312a69220e36352a2a0c64291a0e13691a12132a691a15132a691a18132a691a1b132a69312a691a1b132a691a1e132a69270d1a1f132a691a22132a692c2a691a22132a691a25132a6927081a26132a693b3c3b3b2d6805293b691a1f132a691a22132a693b3c3b3b2d6805270bf774122c363ca203061a1313f768122c3529353ca0f81c012d3529362f363cab293ba203051aff1202e52a352a3cab2a2a693136352a2a0c642d3ca203051aee1202b32e362e3cab2a2a69220c36352a2a0c64313da203051adc1202803238323cab2a2a69221036352a2a0c64220c3ea203051ac912024c220d37220d3cab2a2a69221437352a2a0c6422113922113cab2a2a69221836352a2a0c64291aa712691aab122a691aae122a691ab1122a691ab4122a69322a691ab4122a691ab7122a69270f1ab8122a691abb122a692c2a691abb122a691abe122a6927091abf122a691ac2122a692c2a691ac2122a691ac5122a6927091ac6122a691ac9122a692c2a691ac9122a691acc122a6927091acd122a693b3c3b3b2d6805293b691ac6122a691ac9122a693b3c3b3b2d68052709f742112d363ca203061aba12f736112d3529353da0038f2e3529362a3731363cab293ba203051aa5120256293cab2b2a691aa212351aa6123436220c386a3b2a3d3d6b642a0c642a2a0c642c3cab2f2a69220c36352a2a0c64291a8912691a8d122a691a90122a691a93122a691a96122a69312a691a96122a691a99122a69270d1a9a122a693b3c3b3b2d6805293b691a93122a691a96122a693b3c3b3b2d6805270af79e102e363ca203061a8712f792102e3529353ea003af2f3529362a372b3833363cab293ba203051a70120274293cab2d2a693436352a2a0c642c3ca203051a611202442c3cab2f2a69220e36352a2a0c642f3cab312a691a5012352a2a0c64291a4f12691a53122a691a56122a691a59122a691a5c122a69312a691a5c122a691a5f122a69270d1a60122a691a63122a692c2a691a63122a691a66122a6927081a67122a693b3c3b3b2d6805293b691a60122a691a63122a693b3c3b3b2d6805270bf7da0f2f363ca203061a5412f7ce0f2f3529353fa0f81502303529362a372b382c39220c363cab293ba203061a3912f7d601293cab293ba203051a3312028b2c352a3cab2a2a69220f36352a2a0c642d3ca203051a2112025830362e3cab2a2a691a1c12351a2012221536693b2a3e3c6b642a0c642a2a0c643437323cab2a2a691a0c12352a2a0c64291a0b12691a0f122a691a12122a691a15122a691a18122a69322a691a18122a691a1b122a69270f1a1c122a691a1f122a692c2a691a1f122a691a22122a6927091a23122a693b3c3b3b2d68052d3ca203061a1a12f70e012d3cab322a691a1612352a2a0c64303da203051a111202dd303cab342a69221436352a2a0c64333cab293ba203051afe11028e220c352a3cab2a2a69221936352a2a0c642d3ca203051aeb11025a2210362e3cab2a2a691a4511351ae111221f36693b2a3e3c6b642a0c642a2a0c64221437323cab2a2a691a3411352a2a0c64291ac311691ac7112a691aca112a691acd112a691ad0112a69322a691ad0112a691ad3112a69270f1ad4112a691ad7112a692c2a691ad7112a691ada112a6927091adb112a693b3c3b3b2d6805291ad611691ada112a691add112a691ae0112a691ae3112a69322a691ae3112a691ae6112a69270e1ae7112a691aea112a692c2a691aea112a691aed112a6927081aee112a691af1112a692c2a691af1112a691af4112a6927091af5112a693b3c3b3b2d6805293b691aee112a691af1112a693b3c3b3b2d6805270cf7af0d30363ca203061ae211f7a30d303529352805a00393313529362a372b38220c363cab293ba203051ac9110257293cab2d2a69220d36352a2a0c642c3ca203051ab91102302c3cab2f2a69221036352a2a0c642f3cab312a69221336352a2a0c64291a9f11691aa3112a691aa6112a692f2a6927091aa4112a691aa7112a692c2a6927061aa5112a693b3c3b3b2d6805293b691a9e112a691aa1112a693b3c3b3b2d6805270bf7060d31363ca203061a9211f7fa0c313529352806a00370323529362a37220c363cab293ba203051a7b110236293cab2c2a691a7811352a2a0c642c3cab2e2a691a5a0e351a6e112a0c642a2a0c64291a6b11691a6f112a691a72112a692f2a6927091a70112a693b3c3b3b2d6805293b691a69112a691a6c112a693b3c3b3b2d6805270af7800c32363ca203061a5d11f7740c323529352807a003c1333529362a372b38220e363cab293ba203051a44110285293cab2d2a691ae10d351a3d11221136693b2a3d3d6b642a0c642a2a0c642c3ca203051a2c1102442c3cab2f2a69221236352a2a0c642f3cab312a691a1b11352a2a0c64291a1a11691a1e112a691a21112a691a24112a691a27112a69312a691a27112a691a2a112a69270d1a2b112a691a2e112a692c2a691a2e112a691a31112a6927081a32112a693b3c3b3b2d6805293b691a2b112a691a2e112a693b3c3b3b2d6805270bf7a90b33363ca203061a1f11f79d0b333529352808a0038e34352936220d363cab2a2a69220d39352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ae610a003033c020f291ae410a003033c0205291ae210a06402013b9102013b02013b03192a1ad810691adc102a691adf102a693b3e3c3b2d68056602012a64020129293b691ad0102a691ad3102a693b3c3b3b2d68052709f7050b34363ca203061ac410f7f90a343529352809a003061abd10f7e90a220c363ca203061ab810f7dc0a220c35293540a003b2220d3529362a372b382211363cab293ba203051a9e100275293cab2b2a691a9b10352a2a0c642c3ca203051a961002442c3cab302a69221536352a2a0c642f3cab322a69221836352a2a0c64291a7c10691a80102a691a83102a691a86102a691a89102a69312a691a89102a691a8c102a69270d1a8d102a691a90102a692c2a691a90102a691a93102a6927081a94102a693b3c3b3b2d6805293b691a8d102a691a90102a693b3c3b3b2d6805270bf7200a220d363ca203061a8010f7130a220d352935280ba003b2220e3529362a372b382212363cab293ba203051a65100275293cab2d2a69221336352a2a0c642c3ca203051a551002442c3cab2e2a691a5210352a2a0c642f3cab322a691aac0f352a2a0c64291a4310691a47102a691a4a102a691a4d102a691a50102a69312a691a50102a691a53102a69270d1a54102a691a57102a692c2a691a57102a691a5a102a6927081a5b102a693b3c3b3b2d6805293b691a54102a691a57102a693b3c3b3b2d6805270bf75609220e363ca203061a4710f74909220e352935280ca0f8f901220f3529362211363cab293ba203061a2f10f7bf012a392a3cab2a2a691ab90a351a2510221538693b2a3d3d6b642a0c642a2a0c642d3ca203061a1410f77b012e352e3cab2a2a69221736352a2a0c64313da203061a0110f747013238323cab2a2a691a730a351af70f221d39693b2a3e3c6b642a0c642a2a0c64220c3ea203061ae50ff70201220d3a220d3cab2a2a69221f3a352a2a0c6422103fa203051acf0f02cc2211230622113cab2a2a691a770e352a2a0c6422142805a203051ab80f029422153622153cab2a2a691ab10f352a2a0c6422182806a203051aaa0f025d22193722193cab2a2a691aeb09351a9f0f222d38693b2a3e3c6b642a0c642a2a0c64221d2307221d3cab2a2a691a380d352a2a0c64291a7f0f691a830f2a691a860f2a691a890f2a691a8c0f2a69322a691a8c0f2a691a8f0f2a69270f1a900f2a691a930f2a692c2a691a930f2a691a960f2a6927091a970f2a691a9a0f2a692c2a691a9a0f2a691a9d0f2a6927091a9e0f2a691aa10f2a692c2a691aa10f2a691aa40f2a6927091aa50f2a691aa80f2a692c2a691aa80f2a691aab0f2a6927091aac0f2a691aaf0f2a692c2a691aaf0f2a691ab20f2a6927091ab30f2a691ab60f2a692c2a691ab60f2a691ab90f2a6927091aba0f2a693b3c3b3b2d6805293b691ab30f2a691ab60f2a693b3c3b3b2d68052709f74407220f363ca203061aa60ff73707220f352935280da0f8150122103529362a372213363cab293ba203051a8c0f02da293cab293ba203051a870f028b2b352a3cab2a2a69221636352a2a0c642d3ca203051a750f02582f362e3cab2a2a691a9009351a6c0f221c36693b2a3e3c6b642a0c642a2a0c643337323cab2a2a691a8009352a2a0c64291a4f0f691a530f2a691a560f2a691a590f2a691a5c0f2a69322a691a5c0f2a691a5f0f2a69270f1a600f2a691a630f2a692c2a691a630f2a691a660f2a6927091a670f2a693b3c3b3b2d68052d3cab302a691a5d0f352a2a0c64291a5c0f691a600f2a691a630f2a691a660f2a691a690f2a69312a691a690f2a691a6c0f2a69270e1a6d0f2a693b3c3b3b2d6805293b691a660f2a691a690f2a693b3c3b3b2d6805270af716062210363ca203061a590ff709062210352935280ea0039f22113529362213363cab2a2a691a8c07351a400f221536693b2a3d3d6b642a0c642a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a460ba003033c020f291a440ba003033c0205291a420ba06402013b9102013b02013b03192a1a380b691a3c0b2a691a3f0b2a693b3e3c3b2d68056602012a64020129293b691ad00e2a691ad30e2a693b3c3b3b2d68052709f75f052211363ca203061ac30ef752052211352935280fa0037c22123529362a372215363cab293ba203051aaa0e0241293cab2c2a691ac706351aa30e22182306693b2a3e3c6b642a0c642a2a0c642c3cab2e2a69221936352a2a0c64291a870e691a8b0e2a691a8e0e2a692f2a6927091a8c0e2a693b3c3b3b2d6805293b691a850e2a691a880e2a693b3c3b3b2d6805270af7cb042212363ca203061a780ef7be0422123529352810a0038f22133529362215363cab2a2a69221536352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0d0aa003033c020f291a0b0aa003033c0205291a090aa06402013b9102013b02013b03192a1aff09691a030a2a691a060a2a693b3e3c3b2d68056602012a64020129293b691af70d2a691afa0d2a693b3c3b3b2d68052709f724042213363ca203061aea0df7170422133529352811a003b222143529362a372b382218363cab293ba203051acf0d0275293cab2b2a69221936352a2a0c642c3ca203051abf0d02442c3cab2f2a691abc0d352a2a0c642f3cab332a69221f36352a2a0c64291aad0d691ab10d2a691ab40d2a691ab70d2a691aba0d2a69312a691aba0d2a691abd0d2a69270d1abe0d2a691ac10d2a692c2a691ac10d2a691ac40d2a6927081ac50d2a693b3c3b3b2d6805293b691abe0d2a691ac10d2a693b3c3b3b2d6805270bf75a032214363ca203061ab10df74d0322143529352812a0f8490122153529362a372b382219363cab293ba203061a950df70b01293cab293ba203051a8f0d028b2b352a3cab2a2a69221c36352a2a0c642d3ca203051a7d0d02582f362e3cab2a2a691aa805351a740d222236693b2a3e3c6b642a0c642a2a0c643337323cab2a2a691a9805352a2a0c64291a570d691a5b0d2a691a5e0d2a691a610d2a691a640d2a69322a691a640d2a691a670d2a69270f1a680d2a691a6b0d2a692c2a691a6b0d2a691a6e0d2a6927091a6f0d2a693b3c3b3b2d68052d3ca203051a660d02442d3cab312a691a6b0b352a2a0c64303cab332a69222136352a2a0c64291a4c0d691a500d2a691a530d2a691a560d2a691a590d2a69312a691a590d2a691a5c0d2a69270d1a5d0d2a691a600d2a692c2a691a600d2a691a630d2a6927091a640d2a693b3c3b3b2d6805293b691a5d0d2a691a600d2a693b3c3b3b2d6805270bf7f8012215363ca203061a500df7eb0122153529352813a003b222163529362a372b38221a363cab293ba203051a350d0275293cab2b2a691a8204352a2a0c642c3ca203051a250d02442c3cab302a691a6a04352a2a0c642f3cab322a69222136352a2a0c64291a0b0d691a0f0d2a691a120d2a691a150d2a691a180d2a69312a691a180d2a691a1b0d2a69270d1a1c0d2a691a1f0d2a692c2a691a1f0d2a691a220d2a6927081a230d2a693b3c3b3b2d6805293b691a1c0d2a691a1f0d2a693b3c3b3b2d6805270bf72e012216363ca203061a0f0df7210122163529352814a0038e22173529362a37221a363cab293ba203051af60c0254293cab2c2a691a9b02351aef0c221d36693b2a3e3c6b642a0c642a2a0c642c3cab2e2a691a6507352a2a0c64291ad40c691ad80c2a691adb0c2a691ade0c2a691ae10c2a69312a691ae10c2a691ae40c2a69270d1ae50c2a693b3c3b3b2d6805293b691ade0c2a691ae10c2a693b3c3b3b2d6805270a02882217363ca203051ad20c027c22173529362a37221a363cab293ba203051ac40c0244293cab2c2a69221b36352a2a0c642c3cab2e2a691ab30c352a2a0c64291ab20c691ab60c2a691ab90c2a691abc0c2a691abf0c2a69312a691abf0c2a691ac20c2a69270d1ac30c2a693b3c3b3b2d6805293b691abc0c2a691abf0c2a693b3c3b3b2d6805270a64646464646464646464646464646464646464646442000000000000|@6075,1,@13025,@2535,@4429,@4429,@5552,@1323,@6076,@1323,@5556,@1323,@6078,@1323,@5556,@1323,@6080,@5559,@1323,@6082,@2535,@4429,@4429,@4429,@4429,@5552,@1323,@6087,@1323,@5556,@1323,@6089,@1323,@5556,@1323,@6091,@1323,@5556,@1323,@6093,@1323,@5556,@1323,@6095,@5559,@1323,@6097,@2535,@4429,@118,@16796,@5552,@1323,@6124,@1323,@5556,@1323,@6126,@5559,@1323,@6128,@2535,@4429,@4429,@129,@5552,@1323,@6089,@1323,@5556,@1323,@6093,@1323,@5556,@1323,@6095,@5559,@1323,@6358,@2535,@4429,@4429,@4429,@9,@16804,@119,@5552,@1323,@5859,@1323,@5556,@1323,@6365,@1323,@5556,@1323,@6367,@5559,@4429,@134,@4429,@4429,@4429,@16806,@5552,@1323,@5859,@1323,@5556,@1323,@6365,@1323,@5556,@1323,@6367,@5559,@5552,@1323,@6394,@1323,@5556,@1323,@6396,@1323,@5556,@1323,@6398,@1323,@5556,@1323,@6400,@5559,@1323,@6402,@2535,@1318,@1318,@2625,@1323,@5556,@1323,@5556,@2627,@1323,@6409,@2535,@1318,@135,@6417,@2625,@1323,@5556,@2627,@1323,@6421,@2535,@4429,@16810,@4429,@128,@5552,@1323,@6428,@1323,@5556,@1323,@6430,@1323,@5556,@1323,@6432,@5559,@1323,@6434,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@6441,@2535,@6448,@2535,@4429,@75,@4429,@5552,@1323,@6453,@1323,@5556,@1323,@6455,@1323,@5556,@1323,@6457,@5559,@1323,@6459,@2535,@4429,@4429,@115,@5552,@1323,@5859,@1323,@5556,@1323,@6466,@1323,@5556,@1323,@6367,@5559,@1323,@6468,@2535,@4429,@16811,@4429,@4429,@16813,@4429,@4429,@4429,@7,@4429,@16814,@5552,@1323,@6428,@1323,@5556,@1323,@6476,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@6478,@1323,@5556,@1323,@6480,@1323,@5556,@1323,@6482,@1323,@5556,@1323,@6484,@1323,@5556,@1323,@6486,@5559,@1323,@6488,@2535,@4429,@4429,@4429,@16815,@5552,@1323,@5859,@1323,@5556,@1323,@6365,@1323,@5556,@1323,@6367,@5559,@137,@5552,@1323,@6398,@1323,@5556,@1323,@6562,@5559,@1323,@6564,@2535,@16817,@1323,@6571,@2535,@1318,@16818,@2625,@1323,@5556,@2627,@1323,@6579,@2535,@1323,@6586,@2535,@4429,@4429,@138,@5552,@1323,@6604,@1323,@5556,@1323,@6606,@1323,@5556,@1323,@6608,@5559,@1323,@6610,@2535,@4429,@4429,@4429,@16821,@5552,@1323,@5859,@1323,@5556,@1323,@6365,@1323,@5556,@1323,@6367,@5559,@4429,@5552,@1323,@5912,@1323,@5556,@1323,@6398,@1323,@5556,@1323,@6562,@5559,@1323,@6617,@2535,@4429,@4429,@5552,@1323,@6200,@1323,@5556,@1323,@6624,@1323,@5556,@1323,@6626,@5559,@1323,@6628,@2535,@4429,@16822,@5552,@1323,@6466,@1323,@5556,@1323,@6635,@5559,@1323,@6637,@2535,@4429,@139,@5552,@1323,@6089,@1323,@5556,@1323,@6095,@5559,@1323,@6074| 16796:D26,216|fb182b363ba20304fae602b82b35352c363cab293ba20304fade027b2a362a3cab2a2a69fada352a2a0c642d3ca20304fad6024e2e352e3cab2a2a69fad235fad73437693b2a3e3c6b642a0c642a2a0c643237323cab2a2a69220d36352a2a0c6429fabc69fac12a69fac52a69fac92a69facd2a69322a69face2a69fad22a69270ffad42a69fad82a692c2a69fad92a69fadd2a692709fadf2a693b3c3b3b2d680530353631363cab2a2a69fad2352a2a0c6429fad269fad72a69fadb2a69302a69270cfada2a693b3c3b3b2d6805654200000000000000|@268,1,@13026,@1318,@4429,@75,@4429,@118,@16797,@5552,@1323,@5912,@1323,@5556,@1323,@6104,@1323,@5556,@1323,@6106,@5559,@128,@2625,@1323,@5556,@2627| 16797:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13027| 16798:D7,40|fb042b363ca20304fa3602182b35293ba00304fa33020c2c363ca20304fa310202fa356442000000|@6110,1,@13028,@2535,@6111,@2535,@6109| 16799:D54,1792|fb1e2b363ca203061a0d07f7eb062b3529353ba003061a0707f7dc062c363ca203061a0307f7d0062c3529353ca0038c2d3529362f363cab2a2a692f36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291acd06a003033c020f291acb06a003033c0205291ac906a06402013b9102013b02013b03192a1abf06691ac3062a691ac6062a693b3e3c3b2d68056602012a64020129293b691ab7062a691aba062a693b3c3b3b2d68052709f73b062d363ca203061aab06f72f062d3529353da0038c2e35293630363cab2a2a693036352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2d06a003033c020f291a2b06a003033c0205291a2906a06402013b9102013b02013b03192a1a1f06691a23062a691a26062a693b3e3c3b2d68056602012a64020129293b691a2f062a691a32062a693b3c3b3b2d68052709f79a052e363ca203061a2306f78e052e3529353ea0038c2f35293631363cab2a2a693137352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a8d05a003033c020f291a8b05a003033c0205291a8905a06402013b9102013b02013b03192a1a7f05691a83052a691a86052a693b3e3c3b2d68056602012a64020129293b691aa7052a691aaa052a693b3c3b3b2d68052709f7f9042f363ca203061a9b05f7ed042f3529353fa0038c3035293632363cab2a2a693238352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aed04a003033c020f291aeb04a003033c0205291ae904a06402013b9102013b02013b03192a1adf04691ae3042a691ae6042a693b3e3c3b2d68056602012a64020129293b691a1f052a691a22052a693b3c3b3b2d68052709f7580430363ca203061a1305f74c04303529352805a0038c3135293633363cab2a2a693339352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a4c04a003033c020f291a4a04a003033c0205291a4804a06402013b9102013b02013b03192a1a3e04691a42042a691a45042a693b3e3c3b2d68056602012a64020129293b691a96042a691a99042a693b3c3b3b2d68052709f7b60331363ca203061a8a04f7aa03313529352806a0038c3235293634363cab2a2a693436352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291aab03a003033c020f291aa903a003033c0205291aa703a06402013b9102013b02013b03192a1a9d03691aa1032a691aa4032a693b3e3c3b2d68056602012a64020129293b691a0d042a691a10042a693b3c3b3b2d68052709f7140332363ca203061a0104f70803323529352807a0038e33352936220c363cab2a2a69220c37352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0803a003033c020f291a0603a003033c0205291a0403a06402013b9102013b02013b03192a1afa02691afe022a691a01032a693b3e3c3b2d68056602012a64020129293b691a82032a691a85032a693b3c3b3b2d68052709f7700233363ca203061a7603f76402333529352808a0038e34352936220d363cab2a2a69220d36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a6502a003033c020f291a6302a003033c0205291a6102a06402013b9102013b02013b03192a1a5702691a5b022a691a5e022a693b3e3c3b2d68056602012a64020129293b691af7022a691afa022a693b3c3b3b2d68052709f7cc0134363ca203061aeb02f7c001343529352809a0037f220c3529362a37220f363cab293ba203051ad3020244293cab2b2a691ad002352a2a0c642c3cab2f2a69221337352a2a0c64291ac102691ac5022a691ac8022a691acb022a691ace022a69312a691ace022a691ad1022a69270d1ad2022a693b3c3b3b2d6805293b691acb022a691ace022a693b3c3b3b2d6805270af73701220c363ca203061abe02f72a01220c35293540a0038e220d352936220f363cab2a2a69220f38352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2c01a003033c020f291a2a01a003033c0205291a2801a06402013b9102013b02013b03192a1a1e01691a22012a691a25012a693b3e3c3b2d68056602012a64020129293b691a3e022a691a41022a693b3c3b3b2d680527090292220d363ca203051a32020286220d352936220f363cab2a2a69220f39352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa93a003033c020d29fa92a003033c020429fa91a06402013b9102013b02013b03162afa8869fa8d2a69fa912a693b3e3c3b2d68056602012a64020129293b691ac2012a691ac5012a693b3c3b3b2d68052709646464646464646464646442000000000000|@6137,1,@13029,@2535,@6138,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@6144,@2535,@1323,@6151,@2535,@1323,@6158,@2535,@1323,@6165,@2535,@1323,@6172,@2535,@1323,@6179,@2535,@1323,@6186,@2535,@1323,@6193,@2535,@4429,@115,@5552,@1323,@6200,@1323,@5556,@1323,@6202,@5559,@1323,@6204,@2535,@1323,@6211,@2535,@1323,@6136| 16800:D17,152|fb092b363ca20304faa602872b35293ba00304faa3027b2c363ca20304faa102712c35293ca00304fa9e02652d363ca20304fa9c025b2d35293da00304fa99024f2e363ca20304fa9702452e35293ea00304fa9402392f363ca20304fa92022f2f35293fa00304fa8f022330363ca20304fa8d02193035292805a00304fa89020c31363ca20304fa870202fa8b6464646464644200000000|@6226,1,@13030,@2535,@6227,@2535,@6234,@2535,@6241,@2535,@6248,@2535,@6255,@2535,@6262,@2535,@6225| 16801:D13,104|fb072b363ca20304fa76025a2b35293ba00304fa73024e2c363ca20304fa7102442c35293ca00304fa6e02382d363ca20304fa6c022e2d35293da00304fa6902222e363ca20304fa6702182e35293ea00304fa64020c2f363ca20304fa620202fa66646464644200|@6277,1,@13031,@2535,@6278,@2535,@6285,@2535,@6292,@2535,@6299,@2535,@6276| 16802:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@6314,1,@13032,@2535,@6315,@2535,@6322,@2535,@6313| 16803:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@6337,1,@13033,@2535,@6338,@2535,@6345,@2535,@6336| 16804:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13034| 16805:D15,120|fb152b363ca20304fa8602692b35293ba00304fa83025d2c363ca20304fa8102532c35293ca00304fa7e02472d363ca20304fa7c023d2d3529352f363cab2a2a69fa75352a2a0c6429fa7569fa7a2a69fa7e2a69fa822a693b3c3b3b2d6805293b69fa7c2a69fa802a693b3c3b3b2d6805270d6464420000|@6371,1,@13035,@2535,@6372,@2535,@6379,@2535,@115,@5552,@1323,@6386,@5559,@1323,@6370| 16806:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13036| 16807:D4,16|fb052b3529fa210c3e2a696542000000|@274,1,@13037,@1775| 16808:D4,16|fb05fa24352c2a2d7d04000000000000|@6419,1,@13038,@136| 16809:D4,8|fb02fa1c42000000|@838,1,@13039,@837| 16810:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa47352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@13040,@1318,@128,@2625,@1323,@5556,@2627| 16811:D11,96|fb0e2b363ba20304fa6e02412b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a69fa5f35fa643236693b2a3e3c6b642a0c642a2a0c6429fa5969fa5e2a69fa622a69302a69270bfa612a693b3c3b3b2d68056542000000000000|@268,1,@13041,@1318,@128,@118,@16812,@2625,@1323,@5556,@2627| 16812:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13042| 16813:D3,16|fb052936352c2a2d7d04000000000000|@6475,1,@13043| 16814:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13044| 16815:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13045| 16816:D32,360|fb1b2b363ca203061a7501f756012b3529353ba003061a6f01f747012c363ca203061a6b01f73b012c3529353ca003061a6501f72c012d363ca203061a6101f720012d3529353da003061a5b01f711012e363ca203061a5701f705012e3529353ea003051a510102f72f363ca203051a4e0102ec2f3529353fa003051a490102de30363ca203051a460102d3303529352805a003051a400102c431363ca203051a3d0102b9313529352806a003463235293634363cab2a2a691a2c01352a2a0c64291a2b01691a2f012a691a32012a691a35012a693b3c3b3b2d6805293b691a2e012a691a31012a693b3c3b3b2d6805270d026932363ca203051a2301025e323529352807a0034633352936220c363cab2a2a69fad2352a2a0c64291a0901691a0d012a691a10012a691a13012a693b3c3b3b2d6805293b691a0c012a691a0f012a693b3c3b3b2d6805270d020e33363ca203051a010102031a0401646464646464646442000000|@6497,1,@13046,@2535,@6498,@2535,@6505,@2535,@6512,@2535,@6519,@2535,@6526,@2535,@6533,@2535,@115,@5552,@1323,@6540,@5559,@1323,@6542,@2535,@5552,@1323,@6540,@5559,@1323,@6549,@2535,@6496| 16817:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa47352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@13047,@1318,@128,@2625,@1323,@5556,@2627| 16818:D3,16|fb052936352c2a2d7d04000000000000|@6578,1,@13048| 16819:D4,16|fb082b362c35293b2cfa1d307b050500|@274,1,@13049,@6594| 16820:D11,208|fb1e2d35293cab2d3ba40304fada02af2d2aabfadb2a6931352a2a293ba003042a350297293cb22a3cb22b3cb2220e362a3ebb2a2adc2c2807b729283fa903033b02033c2aba2b2ab7293ba0913435220c360b02002c3ba0030d2c3caa2afa98452a465050023f2c3ba2030c2c3caa2a3b452a465050022e2e0304fa830202fa873e2a69220f2217a091030bfa823069fa862a696402012f2a2a69303caa2e2b452a4650260529352a362a2a692922122514251426121e9b3b271265292704fa5f2a693b3e3b3b2d6805270444000000|@6596,1,@13050,@6597,@6600,@6597,@2709,@2708,@615,@6602,@6595| 16821:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13051| 16822:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13052| 16823:D31,352|fb102b363ca203061a6d01f74f012b35293ba003061a6801f741012c363ca203061a6401f735012c35293ca003061a5f01f727012d363ca203061a5b01f71b012d35293da003061a5601f70d012e363ca203061a5201f701012e35293ea003051a4d0102f42f363ca203051a4a0102e92f35293fa003051a460102dc30363ca203051a430102d13035292805a003051a3e0102c331363ca203051a3b0102b83135292806a003051a360102aa32363ca203051a3301029f3235292807a003051a2e01029133363ca203051a2b0102863335292808a003051a2601027834363ca203051a2301026d3435292809a003051a1e01025f220c363ca203051a1a010253220c352940a003051a15010245220d363ca203051a11010239220d3529280ba003051a0b01022a220e363ca203051a0701021e220e3529280ca003051a0101020f220f363ca203051afd0002031a000164646464646464646464646464420000|@6646,1,@13053,@2535,@6647,@2535,@6653,@2535,@6659,@2535,@6665,@2535,@6671,@2535,@6677,@2535,@6683,@2535,@6689,@2535,@6695,@2535,@6701,@2535,@6707,@2535,@6713,@2535,@6719,@2535,@6645| 16824:D17,304|fb102b363ca203061a3d01f71f012b3529353ba0038b2c3529362e363cab2a2a691a2c01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0e01a003033c020f291a0c01a003033c0205291a0a01a06402013b9102013b02013b03192a1a0001691a04012a691a07012a693b3e3c3b2d68056602012a64020129293b69faf92a691afc002a693b3c3b3b2d68052709028b2c363ca20304faef02812c3529362e363cab2a2a69fae8352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa7ba003033c020d29fa7aa003033c020429fa79a06402013b9102013b02013b03162afa7069fa752a69fa792a693b3e3c3b2d68056602012a64020129293b69fa8b2a69fa8f2a693b3c3b3b2d6805270964420000|@6738,1,@13054,@2535,@131,@594,@595,@596,@2624,@1500,@2627,@1323,@6739,@2535,@132,@1323,@6737| 16825:D28,328|fb132b363ca203061a5501f737012b3529353ba003872c3529362a372f363cab293ba203051a4001024f293cab2c2a691a3d01351a41013237693b2a3e3c6b642a0c642a2a0c642c3cab2e2a691a2001351a2c01220c36693b2a3e3c6b642a0c642a2a0c64291a1f01691a23012a691a26012a692f2a6927091a24012a693b3c3b3b2d6805293b691a1d012a691a20012a693b3c3b3b2d6805270a02a72c363ca203051a1201029c2c3529353ca003051a0d01028e2d363ca203051a0a0102832d3529353da0036e2e3529362a3731363cab293ba20304faf7023a293cab2c2a69faf5352a2a0c642c3cab2e2a69fa8035faed220e37693b2a3e3c6b642a0c642a2a0c6429fae169fae62a69faea2a692f2a692709fae92a693b3c3b3b2d6805293b69fae32a69fae72a693b3c3b3b2d6805270a020c2e363ca20304fada0202fade646464420000|@6103,1,@13055,@2535,@1318,@118,@16826,@16827,@2625,@1323,@5556,@2627,@1323,@6754,@2535,@6761,@2535,@1318,@75,@16828,@2625,@1323,@5556,@2627,@1323,@6768,@2535,@6753| 16826:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13056| 16827:D3,16|fb052936352c2a2d7d04000000000000|@6075,1,@13057| 16828:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13058| 16829:D21,496|fb122b363ca203061afd01f7da012b3529353ba0038d2c3529362e363cab2a2a691aec01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ace01a003033c020f291acc01a003033c0205291aca01a06402013b9102013b02013b03192a1ac001691ac4012a691ac7012a693b3e3c3b2d68056602012a64020129293b691ab8012a691abb012a693b3c3b3b2d68052709f744012c363ca203061aac01f738012c3529353ca0038c2d3529362f363cab2a2a691a4b01352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2d01a003033c020f291a2b01a003033c0205291a2901a06402013b9102013b02013b03192a1a1f01691a23012a691a26012a693b3e3c3b2d68056602012a64020129293b691a2f012a691a32012a693b3c3b3b2d6805270902a32d363ca203051a240102982d3529353da003832e35293630363cab2a2a69faad352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa90a003033c020d29fa8fa003033c020429fa8ea06402013b9102013b02013b03162afa8569fa8a2a69fa8e2a693b3e3c3b2d68056602012a64020129293b69fab02a69fab42a693b3c3b3b2d68052709020c2e363ca20304faa70202faab6464644200000000000000|@6475,1,@13059,@2535,@75,@594,@595,@596,@2624,@1500,@2627,@1323,@6782,@2535,@1323,@6789,@2535,@1323,@6796,@2535,@6781| 16830:D7,40|fb042b363ca20304fa3602182b35293ba00304fa33020c2c363ca20304fa310202fa356442000000|@6811,1,@13060,@2535,@6812,@2535,@6810| 16831:D59,816|fb1d2b363ca203061a3d03f71d032b3529353ba003f42c3529362a372b382c3931363cab293ba203051a240302b7293cab2d2a691a2103352a2a0c642c3ca203051a1c0302862c3cab2e2a69220c37352a2a0c642f3da203051a0c0302552f3cab322a691af102352a2a0c64323cab220e2a691afa02351afe02221436693b2a3e3c6b642a0c642a2a0c64291af102691af5022a691af8022a691afb022a691afe022a69312a691afe022a691a01032a69270d1a02032a691a05032a692c2a691a05032a691a08032a6927081a09032a691a0c032a692c2a691a0c032a691a0f032a6927081a10032a693b3c3b3b2d6805293b691a09032a691a0c032a693b3c3b3b2d6805270cf720022c363ca203061afd02f714022c3529353ca003c02d3529362a372b3831363cab293ba203051ae6020285293cab2c2a691a1b02352a2a0c642c3ca203051ad60202542c3cab302a691a1b02351acf02220e36693b2a3e3c6b642a0c642a2a0c642f3cab312a69220f37352a2a0c64291ab402691ab8022a691abb022a691abe022a691ac1022a69312a691ac1022a691ac4022a69270d1ac5022a691ac8022a692c2a691ac8022a691acb022a6927081acc022a693b3c3b3b2d6805293b691ac5022a691ac8022a693b3c3b3b2d6805270bf74b012d363ca203061ab902f73f012d3529353da0038b2e35293630363cab2a2a693037352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a8302a003033c020f291a8102a003033c0205291a7f02a06402013b9102013b02013b03192a1a7502691a79022a691a7c022a693b3e3c3b2d68056602012a64020129293b691a6d022a691a70022a693b3c3b3b2d6805270902ab2e363ca203051a620202a02e35293630363cab2a2a69fadb351a5702323633383439220c3768053b2a3d3e6b642a0c642a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291ad601a003033c020f291ad401a003033c0205291ad201a06402013b9102013b02013b03192a1ac801691acc012a691acf012a693b3e3c3b2d68056602012a64020129293b691ae0012a691ae3012a693b3c3b3b2d680527096464644200000000|@6578,1,@13061,@2535,@4429,@75,@4429,@4429,@118,@16832,@5552,@1323,@6104,@1323,@5556,@1323,@6827,@1323,@5556,@1323,@6829,@1323,@5556,@1323,@6106,@5559,@1323,@6831,@2535,@4429,@4429,@16833,@5552,@1323,@5912,@1323,@5556,@1323,@6104,@1323,@5556,@1323,@6106,@5559,@1323,@6838,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@6845,@2535,@16834,@1323,@6826| 16832:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13062| 16833:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13063| 16834:D64,640|fb302b363ba203061a8d02f75d022b35362c363cab2a2a691a8502352a2a0c642f363ca203061a7f02f726022f353730363cab293ba203061a7502f7be012a392a3cab2a2a691a6f02351a73023436693b2a3d3d6b642a0c642a2a0c642d3ca203061a6302f77b012e352e3cab2a2a69220d39352a2a0c64313da203061a5002f747013238323cab2a2a691a2a02351a4602221338693b2a3e3c6b642a0c642a2a0c64220c3ea203061a3402f70201220d3a220d3cab2a2a69221537352a2a0c6422103fa203051a1e0202cc2211230622113cab2a2a691ac601352a2a0c6422142805a203051a0702029422153622153cab2a2a691a0002352a2a0c6422182806a203051af901025d22193722193cab2a2a691aa201351aee01222336693b2a3e3c6b642a0c642a2a0c64221d2307221d3cab2a2a691ad701352a2a0c64291ad601691ada012a691add012a691ae0012a691ae3012a69322a691ae3012a691ae6012a69270f1ae7012a691aea012a692c2a691aea012a691aed012a6927091aee012a691af1012a692c2a691af1012a691af4012a6927091af5012a691af8012a692c2a691af8012a691afb012a6927091afc012a691aff012a692c2a691aff012a691a02022a6927091a03022a691a06022a692c2a691a06022a691a09022a6927091a0a022a691a0d022a692c2a691a0d022a691a10022a6927091a11022a693b3c3b3b2d6805343535220c363cab2a2a69faa3351aff01220e36693b2a3e3c6b642a0c642a2a0c64291af201691af6012a691af9012a691afc012a691aff012a69322a691aff012a691a02022a6927101a03022a691a06022a692c2a691a06022a691a09022a6927091a0a022a693b3c3b3b2d6805654200000000000000|@268,1,@13064,@4429,@75,@4429,@4429,@118,@16835,@4429,@4429,@16837,@4429,@4429,@4429,@7,@4429,@16838,@128,@5552,@1323,@6428,@1323,@5556,@1323,@6476,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@6478,@1323,@5556,@1323,@6480,@1323,@5556,@1323,@6482,@1323,@5556,@1323,@6484,@1323,@5556,@1323,@6486,@5559,@16839,@5552,@1323,@6104,@1323,@5556,@1323,@6852,@1323,@5556,@1323,@6106,@5559| 16835:D11,96|fb0e2b363ba20304fa6e02412b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a69fa5f35fa643236693b2a3e3c6b642a0c642a2a0c6429fa5969fa5e2a69fa622a69302a69270bfa612a693b3c3b3b2d68056542000000000000|@268,1,@13065,@1318,@128,@118,@16836,@2625,@1323,@5556,@2627| 16836:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13066| 16837:D3,16|fb052936352c2a2d7d04000000000000|@6475,1,@13067| 16838:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13068| 16839:D3,16|fb052936352c2a2d7d04000000000000|@6103,1,@13069| 16840:D4,16|fb05fa24352c2a2d7d04000000000000|@6869,1,@13070,@75| 16841:D4,16|fb05fa24352c2a2d7d04000000000000|@6872,1,@13071,@144| 16842:D17,136|fb102b363ca20304fa96027b2b352c363cab293ba20304fa8f024d2a372a3cab2a2a692e36352a2a0c642d3ca20304fa7f02202e352e3cab2a2a69fa7b352a2a0c64313cab2afa7869fa7d2a69fa812a692707fa832a69fa872a692c2a69fa882a69fa8c2a692709fa8e2a693b3c3b3b2d6805293b69fa882a69fa8c2a693b3c3b3b2d6805270842|@6872,1,@13072,@2535,@4429,@4429,@75,@6875,@1323,@6884,@1323,@5556,@1323,@6482,@5559,@1323,@6874| 16843:D14,152|fb0e2b363ca20304faa602842b352c363cab2a2a69faa135faa62a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa87a003033c020d29fa86a003033c020429fa85a06402013b9102013b02013b03162afa7c69fa812a69fa852a693b3e3c3b2d68056602012a64020129293b69fa772a69fa7b2a693b3c3b3b2d680527084200000000000000|@6894,1,@13073,@2535,@116,@6895,@594,@595,@596,@2624,@1500,@2627,@1323,@6893| 16844:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13074,@118,@6897| 16845:D10,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a69fa58352a2a0c642f353630363cab2a2a69fa4f352a2a0c6429fa4f69fa542a69fa582a69302a69270bfa572a693b3c3b3b2d6805654200000000|@268,1,@13075,@1318,@142,@75,@2625,@1323,@5556,@2627| 16846:D21,200|fb0b2b363ca20304fad602b52b35293ba00304fad302a92c363ca20304fad1029f2c35293ca00304face02932d363ca20304facc02892d35293da00304fac9027d2e363ca20304fac702732e35293ea00304fac402672f363ca20304fac2025d2f35293fa00304fabf025130363ca20304fabd02473035292805a00304fab9023a31363ca20304fab702303135292806a00304fab3022332363ca20304fab102193235292807a00304faad020c33363ca20304faab0202faaf646464646464646442000000000000|@6927,1,@13076,@2535,@6928,@2535,@6935,@2535,@6942,@2535,@6948,@2535,@6955,@2535,@6962,@2535,@6969,@2535,@6976,@2535,@6926| 16847:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@13077,@7| 16848:D15,336|fb3e401a62010c291a65010c2923062a23082b392c230c2d3a2e230b2f373023061a54012b2b221a221f221b680632383323081a4a012b2b221d2222221e6806220c230a220d230c1a3d012b2b2220222522216806220f23091a34011a390132302211221022151a36012216323422152218680d222622242a9291035e2a352b362a2c222a2227222c2228221422142231221c221b221d221c222122132215221f2233223322332233223b22342234222322232236221f222822262235223a223a223a223936222b222bfadc0c2a2a2505250526031e5d3b66020129653b222669222123103b2a0c3d2a69293b692d2a692225353b2227222722232226fab10c221b353ca00330221b36221c382a352a352993293ba00304fa9e02132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060202221b222b2a45fa81463b472d482b492c4a271d1f1200000000|@7025,1,@13078,@786,@1130,@16849,@16855,@16858,@7041,@7045,@7049,@7053,@7024,@957,@294| 16849:D7,32|fb0e2b352c362a2afa2e2e36692e37fa2ffa3531383239333afa35220d7b0b05|@7027,1,@13079,@16850,@7029,@7030,@7026| 16850:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13080| 16851:D3,8|fb022b3942000000|@7031,1,@13081| 16852:D9,376|fb1833310c293ba003063434342e7e0c1a7d012f6934310c29293ba0030330021629352a362a353ba003042a360207292503511e1a3b6564333b3bef293ba003051a54010253293db1292810b1293cb2292808b4291a4801a503043b5002041a4601103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221228082d280834ec50280831b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef22113b3bef2a3ba0030422120255293ba003032b024d2a2ab1292810b1293cb2292808b429fadca503043b500203fadb103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221a28082e2c220cec502c95502c2708293b3bef293ba00304faa5024d292827b1292810b1293cb2292808b429fa81a503043b500203fa80103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6428082e2c2827ec502c95502c27083e2a69293b693b3b3b3b2d680522103c220e220d2dfa4722157b07190000|@7033,1,@13082,@16853,@7035,72057594037927935,@286,@7036,@7032| 16853:D4,16|fb0529362cfa212d7e03000000000000|@7034,1,@13083,@5543| 16854:D7,168|fb0d2f230d29299291031a29352a362a35faada003052a68010207292503511e193b6502013b64293ba00342fa9a299291031a29352a362a35fa85a003052a68010207292503511e193b6502013b64293ba00303fa7a103b5029352935fa61a003043b500203fa7010293765021329352935fa4ca003043b500203fa5b1029376429310c296801332a32346b220c38220d230c220d03082a3b3b3ce35002023b502b2a347d0f0000|@7037,1,@13084,@61,@1652,@1701,@826| 16855:D7,32|fb0e2b352c362a2afa2e2e36692e37fa2ffa3531383239333afa35220d7b0b05|@7027,1,@13085,@16856,@4159,@7038,@7026| 16856:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13086| 16857:D3,8|fb032b3529376442|@4929,1,@13087| 16858:D7,32|fb0e2b352c362a2afa2e2e36692e37fa2ffa3531383239333afa35220d7b0b05|@7027,1,@13088,@16859,@7040,@7039,@7026| 16859:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13089| 16860:D3,8|fb022b3842000000|@7031,1,@13090| 16861:D4,8|fb02fa1c10000000|@7031,1,@13091,@7042| 16862:D4,8|fb02fa1c10000000|@7031,1,@13092,@7046| 16863:D4,8|fb02fa1c10000000|@7031,1,@13093,@7050| 16864:D50,1488|fb2a2226350a06005900f4002a0395030c00c30322263622262a222122212221221e2211221122242224222422232223221f2217223322322227222722272227222622262224222022202220222022412240222222221a8f0522237b2228f768052226362226061a8605222322232228222822282f68070b03003b2a1a79050c5029352a362b37222823081a72052a222a2d6b222a230c1a6e052a222b6a1a6f051a7405220d31222d222d222d1a700533222f222f222f220c680d1a6a052221222622262226222668061a63052221222122276b22102b2d22352d1a5a050c1a5e05222122212238223822382216680729220c0c2212352714f7cd042226362227372228382a352b361a3c05222c2228306b2c9291031e2c35291a3305222622262e222a6805222a1a2d050c3d2a1a2f056a6502031a28053b2c69222923103b2a0c3d2a69293b692d2a69321a1905a003033c0215323b3bef3fa0030c3228081a050528083fed02013b03033c02b1321afd04a003033c0217323b3bef2805a0030d3228081ae80428082805ed02013b03033c028b321adf04a003033c0215323b3bef3ea0030c3228081acb0428083eed02013b03033c0267321ac304a003033c0215323b3bef3da0030c3228081aaf0428083ded02013b03033c0243321aa704a003033c0215323b3bef3ea0030c3228081a930428083eed02013b03033c021f321a8b04a003033c0215323b3bef3da0030c3228081a770428083ded02013b03dd323b3bef293ba003051a6a04024e280c2ab1292810b1293cb2292808b4291a5d04a503043b5002041a5b04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a330428082d2808280cec50221128082d281434ec502b95502b2707293b3bef293ba003051a2604025029280db1292810b1293cb2292808b4291a0104a503043b5002041aff03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11ae20328082e2c280dec502c95502c27081ad9032238693e2b69293b693b3b3b3b2d680522363c2e22172d1ac7030c50260802023b503b223369333b2b332e3b3b6807342a1ab50322326922311ab5031aba032238223822381ab9030c5022343caa270ff797022226362922272a9291035a2a352b362a2c22252225222522142214222722272227222722272227221a22362235222a222a222a222a2229222922272223222322232230222422432230223022272227224622461a60030c2a2a2505250526031e593b660201296564f72c022226362227372228382b2b2b6a2922102229222a2229221e221e2217221c221c22211a2e030c5022292704f7fe012226362227372228382a352b362a1a1c03a003033c02152a3b3bef3fa0030c2a28081a080328083fed02013b03033c028d2a1a0003a003033c02172a3b3bef2805a0030d2a28081aeb0228082805ed02013b03033c02672a1ae202a003033c02152a3b3bef3ea0030c2a28081ace0228083eed02013b03033c02432a1ac602a003033c02152a3b3bef3da0030c2a28081ab20228083ded02013b03033c021f2a1aaa02a003033c02152a3b3bef3ea0030c2a28081a960228083eed02013b03db2a3b3bef293ba003051a8902024d280c2ab1292810b1293cb2292808b4291af401a503043b5002041af201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a520228082d2808280cec503228082d281434ec502b95502b2707293b3bef293ba003051a3602025029280db1292810b1293cb2292808b4291a9901a503043b5002041a9701103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11af20128082e2c280dec502c95502c27081ae9012230693e2b69293b693b3b3b3b2d6805222e3c2e220f2d1a5f010c270802013b2c1acd01222522252230222c222a68062229fadd0c3b2c69222923103b2a0c3d2a69293b692d2a692f1aad011ab2011ab7010c3b223469343d2b2d2f3b3b6807220c2a1aab0122336922321a1b011a20012239223922391a1f010c5022353caa27101f250000000000|@7054,1,@13094,@7055,@16884,@5198,@16886,@16887,@7041,@7045,@7049,@16888,@16889,@7111,@17500,@17503,@17505,@7187,@3699,@1123,@1076,@1305,@1240,@1582,@5389,@8631,72057594037927935,@286,@8632,@17508,@7032,@17509,@7029,@7030,@7026,@8633,@8642,@1123,@1076,@1305,@1240,@1582,@8631,@8632,@17548,@17549,@8701,@8703,@4261,@16865| 16865:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13785| 16866:D18,608|fb3422209291f84d022220352221362a362b382935222423081a5c022a22266a2226230c1a59022a22276a1a5a02222922276a1a5a021a5f02222722272227222722271a5a023432222a222a220d680d221f3b3bef323b3bef2a3ba00303330259293ba00304222102502a2ab1292810b1293cb2292808b4291a2c02a503043b5002041a2a02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050222828082d2808220cec50280832b1221228082e2c220cec502c95502c2708293b3bef293ba003051af201024a293cb1292810b1293cb2292808b4291ace01a503043b5002041acc01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c270834353ba003443436220c370b060031220f323b220d2e223122312231223122312231223122312231223122312231223e0c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270f027a34353da00334343629352a362b372c382d392c2b2d2c312210220c222f222f222f222f222f222f222f222f222f222f222f222f222f0c270602403436220c37220d380b06003232322212220e2e222922332233222b223422342234223422341a02010c5029352a362b372c382d392e3a2e2e2e2e2e2e6806271022323caa292211223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233223322332233faad0c3b221969222523103b2a0c3d2a69293b692d2a693b223b6922172a342d6b22182afa912221692220fa92fa98223322262234fa980c32271c020222211f20000000000000|@7056,1,@13095,@16868,@16869,@16870,@7041,@7045,@7049,72057594037927935,@286,@371,@7059,@7055,@16867,@7040,@7039,@7026| 16867:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13112| 16868:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13096| 16869:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13097| 16870:D4,32|fb073b2a370c3b2b3623090c293ba003032a02072a2afa202f7e056542000000|@7058,1,@13098,@7057| 16871:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13099,@7057| 16872:D11,272|fb210b0600221722172b22142214221422141a13010c5029352a362b372c382d392e3a221b3b3b2ee32214352e1a0001221722172217221722211afb000c293ba003051afa0002573b2a299291031229362b3caa292b25042504511e113b6502012a6529fae2a80303fae5103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652d2ca003033c02043092919103032e020dfaa622142b306bfaa7302b6a6422183534353ca0032f3436220c382a352a352993293ba00304fa6802132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020134221f2a45220c463b4733482c492b4a27141f0f00000000000000|@7060,1,@13100,@7061,@7066,@7068,@957,72057594037927935,@2035,@16883,@16873| 16873:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13111,@4374| 16874:D11,272|fb12312f3a0c293ba003e6323b3bef293ba003051a1101024d280b2ab1292810b1293cb2292808b4291a0401a503043b5002041a0201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fadb28082d2808280bec50221128082d281334ec502b95502b2707293b3bef293ba00304facf024d292817b1292810b1293cb2292808b429faaba503043b500203faaa103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa8e28082e2c2817ec502c95502c2708fa8633693e2b69293b693b3b3b3b2d6805220c3c2e22132dfa760c50220f220c45fa75463b473b48fa76493b4a270802162935312a35452a36462a37472a38482a39492a3a4a64641f07000000000000|@7062,1,@13101,@7063,72057594037927935,@286,@7064,@16875,@7032,@5339,@5373| 16875:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13102,@5543| 16876:D3,8|fb023b4200000000|@7067,1,@13103| 16877:D8,136|fb15319291037a313532362a3629353ba003043b500203fa87103b5029362a382b392e372f3629353da00303fa7a103b503b5029353ba00314293729353ca0030729362935640202293664020529362935642e2a2e3b2f22102215221522152215fa4d0cfa522a2213316b322a22132213221322132213fa470c2b2a69270c02013b1f0700000000|@7069,1,@13104,@7070,@4323,@7073,@16878,@7068| 16878:D3,40|fb062b3629353ba003172938292c38a003062b36680102062d2c372e7d056402013b644200000000|@7087,1,@13109| 16879:D9,208|fb17303531363237323b3bef2c3b3bef2a3ba003032d0256293ba0030334024e2a2ab1292810b1293cb2292808b429fab7a503043b500203fab6103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221228082d2808220cec50280832b1220c28082e2c220cec502c95502c2708292e2e6a220c35220d35293caa220f3b3b2ce3221303112216fa6f2e22182218326806fa6d0c020f2216fa5e2e22182218326806fa640c2f3b693e2b2b6a2f2213ab22122a2cfa5a0c312215ab2e680122142b2bfa4c0c3027131f0a000000000000|@7075,1,@13105,72057594037927935,@286,@917,@7076,@7078,@7074| 16880:D3,40|fb0e2b352c362d372e382f39303a2b063c2a693b312b31306805302a2e6a27094200000000000000|@7077,1,@13106| 16881:D3,32|fb0d2b352c362d372e382f39303a3b2c693b302b302f68052f2a2d6a27084200|@7079,1,@13107| 16882:D8,152|fb142d35293529353ca003043b500203fa9e10293630362a93312aa203142b93322aa90303fa91103b502c333b34e36402602b93293eac333caa2a2aa603032a020129293ba203033c020429fa72a80303fa75103b5029284030da30932a932a2aa60303fa6a103b50323b3b2e3b3b30eb503c2c69220c3b3b2ce3502c9322112aa90303fa32103b502d22123b2213e32709270544000000|@7081,1,@13108,@7082,@864,72057594037927935,@789,@7080| 16883:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@7088,1,@13110,@831| 16884:D7,80|fb182b352c3629352a362b382c392f23063530230635293caa3223063b3b2ce33b2d6931312b32323b3b6807342afa38220f3669220f37fa37fa3d22123822133922143afa3a22177b0b0f0000000000|@7089,1,@13113,@16885,@7029,@7030,@7026| 16885:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13114| 16886:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13115| 16887:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13116| 16888:D7,200|fb152c3629353ca003342d353b2a299291031229362b3caa292b25042504511e113b6502012a652932323c323136323733383439220c3afaa7220f7b0c092d352d352e362f372e363b3bef2c3b3bef2a3ba003032d0258293ba003043036024f2a2ab1292810b1293cb2292808b429fa77a503043b500203fa76103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3628082d2808220cec50280832b1220c28082e2c220cec502c95502c2708292e2e6a3d31336afa3f2a2c6a2709641f0400000000000000|@7090,1,@13117,@7073,72057594037927935,@286,@1033| 16889:D16,392|fb0a2b2a38a203542b2a360c293629353da003142937291a86011a8b011a90010c293ca0916502302a3629353da003041a8501103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646465f728012b2a38ab292b373529353ba00325293629932c2aa203162a932d2aa903041a4301103b503b502b2e3bdb6402031a3c01650223293629932c2aa203162a932d2aa903041a2e01103b503b502b2e3bdb6402031a17016529353ca0031a2936292da803041a1601103b503b5029250426031e6b3b64020129656429353ea0034e2936293629353da00312293729faf61afb00fac10c293ca09165022f2a3629353da00303fab7103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646465025a29353ba003043b500203fabb103b502936293629353da00311293729fab1fab7fa650c293ca09165022f2a3629353da00303fa5b103b503b5029353ba00314293729353ca00307293629356402022936640205293629356464656542000000|@7092,1,@13118,@7093,@7095,@7096,@4323,@831,@951,@829,@7102,@7105,@7106,@7107,@7110,@7091| 16890:D3,8|fb023c4200000000|@7094,1,@13119| 16891:D3,8|fb023d4200000000|@7094,1,@13120| 16892:D11,600|fb172d1a6a020c29353ca003043cf7450229353ba003043cf73b0229353fa003041a5402103b503b5029353ea003452936291a4b020c293d2a929103312a352b362a3434330c293da0030d2a2d2505250526031e1b3b0213293ba0030d2a3b2505250526031e2d3b02013c660201296565f7e20129352805a0f8970129362a382938293629353ca0030b2a36293629313aa06502013b03043cf773012b38293629353da0033c2d38293629353da003043b5002041ad101103b5029362a372a331acd010c1ad1012a690b02002e2d2b1ace010c5029352922152215221422167b05162d38293629353ca0030c2a36293629220c39a06502013b03033c024c2a3629353ca0030c2b36293629220d38a06502013b03033c02312b3629353ca0030c2c36293629220e37a06502013b03033c02162c3629353ca0030c2d36293629220f36a06502013b64646403033d02be2f38293629353da003041a4c01103b503b5029353ba00314293729353ca003072936293564020229366402052936293564033f323d2a929103342a352b362a2213221322120c293da0030d2a2d2505250526031e1e3b0213293ba0030d2a3b2505250526031e303b02013c6602012965024b3138220f0c293ca003033c023d332a2a929103342a352b362a2214221422130c293da0030d2a2d2505250526031e1e3b0213293ba0030d2a3b2505250526031e303b02013c6602012965646565652704024329353da003033c023a29362a372a2a692a3fb7293ba09103033d02252c3529353ea003172b320c293ca003033c02092a343433220c7b050c6402052b32327d0b6427046444|@7097,1,@13121,@4275,@7098,@7101,@4256,@2100,@16893,@4254,@4323| 16893:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13123| 16894:D4,32|fb072b929103112b352c362a362afa280c2a2a69270402013b42000000000000|@880,1,@13122,@7101| 16895:D3,8|fb023c4200000000|@7094,1,@13124| 16896:D3,8|fb023d4200000000|@7094,1,@13125| 16897:D3,8|fb023c4200000000|@7094,1,@13126| 16898:D3,8|fb023d4200000000|@7094,1,@13127| 16899:D5,88|fb1c2d23062e23082f3930230c313a32230b33373438220c35220d230a220e36220f2307221023092d2c3131220e220d221231221332220d2212fa342216680e3c3b2b22172218221622192217221636fa2622197b0b1500|@7114,1,@13128,@7115,@7113| 16900:D3,8|fb023b4200000000|@7116,1,@13129| 16901:D7,40|fb12fa3c3269fa4033692a2a693234220d342d220e2213fa37220f220f220f2217fa3522117b0e0e|@7118,1,@13130,@16902,@16903,@7113,@7117| 16902:D3,32|fb052b2a3623080c299291030b2935293b692968016502013b64420000000000|@7119,1,@13131| 16903:D3,32|fb052b2a36230d0c299291030b2935293b692968016502013b64420000000000|@7119,1,@13132| 16904:D134,6448|fb43220d352816a00322220d3629220e220e220e220e220e220e220e220e220e220e220e1a2119220f7b0e0f220d352808a003041a1919103b503b50220d352810a003041a1119103b503b50220d35281ea003041a0919103b503b50220d350a1f00f5001d017d0263059d07390ab30b830c3e00b20cf40c650db60de70d3e00240f3e00900f0110ec117213f0133e00501597169d16e0164017461772173e00220d3629352a362b372c382d39221123062212230d2a2a691aad1822142217306b1aac182b332c1aae180c293729353ea003092936292808a06402013b03082a3b1a9c180c021b2a380b02002c1a98182b1a9c180c5029352a36291a9a180c2b27072b3a2992910314293529352935220c2a692b3b3b2ce350260402023b502c23062992910311293529352d2a692b3b3b2ce350260302023b50343b3b2ee350220c3b3b30e350221a2309333b3b2ce3502c2710f7d417220d3629352a362b372c382d392e3a2211221034220f221622102213221122161a261822127b110f220d36220e37220f382a3b692c2a691a17180628192b2b2f6b29221522142214221422142214221422142214221422141a96170c1afa173c1afe170c291a01180c3b2a3c6a3e2c2b6a2d2a1afb170c299291f8020129351af7173131221b221b1af6170c22192219221a1af4171af9170c2b2a0c64293b691af6172a691af9172a693b3b3b3b2d6805293b691af2172a69302a691af2172a691af5172a693b3e3c3b2d68052224230d29299291031b29352a362a351ae117a003052a68010207292503511e1a3b6502013b64293ba0034b1acd17299291031b29352a362a351ab717a003052a68010207292503511e1a3b6502013b64293ba003041aab17103b503b50293529351a8f17a003043b5002041a9d17103b502937650217293529351a7617a003043b5002041a8417103b50293764222a2a1a80170c2968013c2a30221f6b222a38222b230c2a3b3b3ce3502b2a0c271502013b1a6617270ef74c16220d3629352a362b372c392c221222122212221222122212221222122212221222121a44160c2c221322132213221322132213221322132213221322131a29160c22141a23170c03033b02161a7a1606220f3eba28062b2b6a2d2a1a8b160c503b662b1a0b170c29353da0030e29362a372a2a6929680166f724011a4b16061b0f273eba28062b2b6a1a3d16061b0f273eba28062b2b6a3d2a2e6a29341a49160c29929103f01ad0162210220d221e221e1a45160c1ac9162210220d221f221f1a36160c291ac116691ac5162a692c2a691ac5162a691ac8162a693b3e3c3b2d68052223230d29299291031b29352a362a351a4416a003052a68010207292503511e1a3b6502013b64293ba0034b1a3016299291031b29352a362a351a1a16a003052a68010207292503511e1a3b6502013b64293ba003041a0e16103b503b50293529351af215a003043b5002041a0016103b502937650217293529351ad915a003043b5002041ae715103b5029376422282a1ae3150c2968013c2a30221c6b222938222a230c2a3b3b3ce3502b2a0c503b271002072b2f69296801642708299291f83901293529352a362a301a39150c299291f81a0129351aed15220e34221c221c1a33150c1ae715220e34221d221d1a25150c221b221b221c1a23151a28150c2c2a0c64293b691acd152a691ad0152a693b3b3b3b2d6805293b691ac9152a69302a691a89152a69332a691a89152a691abc152a693b3e3c3b2d68052228230d29299291031b29352a362a351a0815a003052a68010207292503511e1a3b6502013b64293ba0034b1af414299291031b29352a362a351ade14a003052a68010207292503511e1a3b6502013b64293ba003041ad214103b503b50293529351ab614a003043b5002041ac414103b502937650217293529351a9d14a003043b5002041aab14103b50293764222d2a1aa7140c2968013c2a3022216b222e38222f230c2a3b3b3ce3502b2a0c50261802023b50333b3b2de3502a270402031af814270af76613220d3629352a362b372c381aed1422132211221022102213221622122212221222122212680c291ad9141ade146a1ae2141ae7141aec142e221868052e2a2c221522151ae5140c30221722162216221622162216221622162216221622161a22130c2a1a25140c29353da003db29362a372a2d1a8d130c29929103c6293522192219221a1a94131a99130c2a2a0c64221a230d29299291031b29352a362a351ab113a003052a68010207292503511e1a3b6502013b64293ba0034b1a9d13299291031b29352a362a351a8713a003052a68010207292503511e1a3b6502013b64293ba003041a7b13103b503b50293529351a5f13a003043b5002041a6d13103b502937650217293529351a4613a003043b5002041a5413103b5029376422202a1a50130c2968013c2a3022136b2220382221230c2a3b3b3ce3502b2a0c50260a02023b502a6602e61a9812061b0f273eba28062b2b6a3d2e2b6a2d2a1aa4120c29929103c52935221b221b221c1aab121ab0120c2a2a0c64221c230d29299291031b29352a362a351ac812a003052a68010207292503511e1a3b6502013b64293ba0034b1ab412299291031b29352a362a351a9e12a003052a68010207292503511e1a3b6502013b64293ba003041a9212103b503b50293529351a7612a003043b5002041a8412103b502937650217293529351a5d12a003043b5002041a6b12103b5029376422222a1a67120c2968013c2a3022156b2222382223230c2a3b3b3ce3502b2a0c270a02013b2c2706313b3b2ce35029270cf72c11220d3629352a362b372c382c221322122212221222122212221222122212221222121a24110c2b221422132213221322132213221322132213221322131a09110c2d221522142214221422142214221422142214221422141aee100c2b1ae1111a66110c299291f8030129351a8a12322f221722171a61110c2215221522161a5f111a64110c2b2a0c64293b691a61112a691a64112a693b3b3b3b2d6805293b691a5d112a69302a691a5d112a691a50122a693b3e3c3b2d68052220230d29299291031b29352a362a351a4c11a003052a68010207292503511e1a3b6502013b64293ba0034b1a3811299291031b29352a362a351a2211a003052a68010207292503511e1a3b6502013b64293ba003041a1611103b503b50293529351afa10a003043b5002041a0811103b502937650217293529351ae110a003043b5002041aef10103b5029376422262a1aeb100c2968013c2a3022196b2226382227230c2a3b3b3ce3502b2a0c50261502023b502b2b1a55100c299291f81b0129351a8911312f221822181a50100c1a8411332f221922191a43100c2217221722181a41101a46100c2c2a0c64293b691aeb102a691aee102a693b3b3b3b2d6805293b691ae7102a69302a691aa7102a69332a691aa7102a691a42112a693b3e3c3b2d68052224230d29299291031b29352a362a351a2610a003052a68010207292503511e1a3b6502013b64293ba0034b1a1210299291031b29352a362a351afc0fa003052a68010207292503511e1a3b6502013b64293ba003041af00f103b503b50293529351ad40fa003043b5002041ae20f103b502937650217293529351abb0fa003043b5002041ac90f103b50293764222a2a1ac50f0c2968013c2a30221d6b222a38222b230c2a3b3b3ce3502b2a0c501a2710271802012c270af7900e220d36220e37220f382a221022102210221022102210221022102210221022101a8a0e0c2c1a5d102210221422136b22101a59100c2a2a1af30e0c299291f8310129351a4f102f2e221422141aee0e0c3b1a49100c2d1b10272b22153b1a45100c293b691a46102a691a49102a693b3b3b3b2d68052218221822191ac70e1acc0e0c312a0c64293b691a710f2a691a740f2a693b3b3b3b2d6805293b691a6d0f2a69302a691a2d0f2a69220f2a691a2c0f2a691a07102a693b3e3c3b2d68052225230d29299291031b29352a362a351aab0ea003052a68010207292503511e1a3b6502013b64293ba0034b1a970e299291031b29352a362a351a810ea003052a68010207292503511e1a3b6502013b64293ba003041a750e103b503b50293529351a590ea003043b5002041a670e103b502937650217293529351a400ea003043b5002041a4e0e103b50293764222b2a1a4a0e0c2968013c2a3022206b222b38222c230c2a3b3b3ce3502b2a0c50261d02023b502a2706f7160d220d3629352a362b372c38221023082211230d2a2a691a320f22132216316b2a2e2b1a2e0f0c0b0200312a1a2d0f0c502935291a2d0fa003033c0215293b3bef3ba0030c2928081a190f28083bed02013b03033b02192219230d1a0e0f221a221e220f6b1a0c0f2b2d2c1a0e0f0c652e352f363b221069221c23103b2a0c3d2a69293b692d2a693038313622152a2d2d6b322c2b220e301ae90e0c2a2a692a299291031829352a362a35292c6964222b370c50292503511e185102023b505022182a692228380c501ad80d271cf7460c220d36220e3729299291031929352a362a2e692b2a69642211350c50292503511e195102023b50501aa80d65f7170c220d361a860e220c22106a0b03002d2a1a810e0c5029362f299291031b29352a362a22162216221a301a700e0c50292503511e1a3b6502013b641a670d2708f7d50b220d36291a5b0d2a9291035f2a352b362a35220d32221322112d221522112211221122150c2b9291912991032e2a22131a2f0e0c299291031e29350b02001a290e312b22130c50293522183b332c311a200e0c270502013b6402013b2d2c2508250826061e5d3b27060201296564f7640b220d36220e37220f381afd0d2211220f220e220e2211221422102210221022102210680c291ad90c1ade0c6a1ae20d1ae70d1aec0c2e221668052d2a2c221322131ae50c0c2f3b3b2ce350292707f7130b220d36220e37220f382210392c2c2c2c220f2214221422132215221322132213221322131aa90d0c501a740c2704f7e20a220d36220e37220f382b221122102210221022102210221022102210221022101adc0a0c1a800d22122210220f220f2212221522112211221122112211680c291a3c0c1a410c6a1a650d1a6a0d1a4f0c2f221768052e2a2c221422141a480c0c3d1a5b0d2f6a2a2a1a140b0c29929103c529352215221522161a1b0b1a200b0c2a2a0c642216230d29299291031b29352a362a351a380ba003052a68010207292503511e1a3b6502013b64293ba0034b1a240b299291031b29352a362a351a0e0ba003052a68010207292503511e1a3b6502013b64293ba003041a020b103b503b50293529351ae60aa003043b5002041af40a103b502937650217293529351acd0aa003043b5002041adb0a103b50293764221c2a1ad70a0c2968013c2a3022116b221c38221d230c2a3b3b3ce3502b2a0c270a02013b30270bf7a509220d36220e37220f38291ab5092210221022102210221022102210221022102210221c1a640c0c1a680c0c291a6b0c0c3b2a2f6a2e030329020629063c2a69643e2d2b6a3003032902161ad509061b0f273eba28062b2b6a2b3b3b2fe32a2704303b3b2ce350292709f73909220d36220e37220f381a2a0c1a470922122211221122112211221122112211221122112211680d291a130c1a180c6a1a1c0c1a210c1a260c2e221668052d2a2c221322131ab70a0c29353ba003051a750a0212293b6928052a1a0a0c1a0f0c1a140c680564303b3b2ce350292708f7c808220d36220e38220f39293c1a0f090c291ada090c29353da003dd29362a372a1aeb0b1a40090c29929103c629352213221322141a47091a4c090c2a2a0c642214230d29299291031b29352a362a351a6409a003052a68010207292503511e1a3b6502013b64293ba0034b1a5009299291031b29352a362a351a3a09a003052a68010207292503511e1a3b6502013b64293ba003041a2e09103b503b50293529351a1209a003043b5002041a2009103b502937650217293529351af908a003043b5002041a0709103b5029376422192a1a03090c2968013c2a3022106b221a38221b230c2a3b3b3ce3502b2a0c50260a02023b502a6602e81a4b08061b0f273eba28062b2b6a3d1a040b2b6a2d2a1a55080c29929103c529352215221522161a5c081a61080c2a2a0c642216230d29299291031b29352a362a351a7908a003052a68010207292503511e1a3b6502013b64293ba0034b1a6508299291031b29352a362a351a4f08a003052a68010207292503511e1a3b6502013b64293ba003041a4308103b503b50293529351a2708a003043b5002041a3508103b502937650217293529351a0e08a003043b5002041a1c08103b50293764221b2a1a18080c2968013c2a3022126b221c38221d230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce350292706f7dd06220d3629352a362b372c390b03003b2a1a170a0c5029352a362b370b03003b2a1a070a0c5029362a370b03003b2a1af9090c5029362a3722140304221a0204221a3caa222423061ae8092a22106a222623081ae5092a220c6a2228392229230d1adf092a326a222b3a222c230b222d230c222e36222f23071acf092231221d6a1acf092c221d2218220c332211312211322219220f220f2213680e22241aca072a929103282a352b362a35223322143022372d223b223722372237223b0c2b2a2506250626041e263b2704020129651a88092234221f22266b1a86092235221a6a2235351a8309223722166a223736223823072c2b30302214221222193022192211220c22172217221b680e222b91222e1a56072a929103662a352b362a35223c221d3122402d224422402240224022440c2f03092b92919129916402013b032e2922411a23080c299291031e29350b02001a1d08302b22410c50293522463b322c311a14080c270502013b6402013b2c2b2507250726051e643b2705020129652730f75705220d3629352a372b382c39401add080c401ad8080c401ad3080c2f2214221422181ad0080c29299291031c29352a362a352b3630221a31341ac1080c50292503511e1b3b6502013b642d3b1ab6081abb080c313b3b2ce3502c3b1ab7081aac080c313b3b2ce3502e3b1ab0081a9d080c313b3b2ce3501a6b06270df7d904220d36220e37220f382a3b692c2a691a44050628192b2b2f6b29221522142214221422142214221422142214221422141ac3040c1a6f083c1a2b050c291a2e050c3b2a3c6a3e2c2b6a2d2a1a28050c299291f8020129351a54083131221b221b1a23050c22192219221a1a21051a26050c2b2a0c64293b691a23052a691a26052a693b3b3b3b2d6805293b691a1f052a69302a691a1f052a691a1a082a693b3e3c3b2d68052224230d29299291031b29352a362a351a0e05a003052a68010207292503511e1a3b6502013b64293ba0034b1afa04299291031b29352a362a351ae404a003052a68010207292503511e1a3b6502013b64293ba003041ad804103b503b50293529351abc04a003043b5002041aca04103b502937650217293529351aa304a003043b5002041ab104103b50293764222a2a1aad040c2968013c2a30221f6b222a38222b230c2a3b3b3ce3502b2a0c271502013b1a9304270ef77903220d36220e372a2210220f220f220f220f220f220f220f220f220f220f1a76030c291a31061aee030c299291f8030129351a2a072e2d221222121ae9030c2210221022111ae7031aec030c2b2a0c64293b691ae9032a691aec032a693b3b3b3b2d6805293b691ae5032a69302a691ae5032a691af0062a693b3e3c3b2d6805221b230d29299291031b29352a362a351ad403a003052a68010207292503511e1a3b6502013b64293ba0034b1ac003299291031b29352a362a351aaa03a003052a68010207292503511e1a3b6502013b64293ba003041a9e03103b503b50293529351a8203a003043b5002041a9003103b502937650217293529351a6903a003043b5002041a7703103b5029376422212a1a73030c2968013c2a3022176b2221382222230c2a3b3b3ce3502b2a0c50261502023b501abf02061b0f273eba28062b2b6a2706f73202220d37f72c02220d36220e372a1a3f02220f220f220f220f220f220f220f220f220f220f221a1afe050c293c1a90020c291a93020c3b2a3c6a3e2c2b6a2e3b3b2ce350292707f7e901220d361ae005220c22106a0b03002d2a1a53040c5029362f2213221322171acd050c302a2a9291030529929102013b03252a352b362b352c362c2b221a221634221e1ab1050c502b2a2506250626041e2b3b270402013b651a1b032709f789011a9b05f78301220d36220e37220f382b2b2b220d2212221222112213221122112211221122111a7d050c501ae80266f75701220d36220e37220f382a221122102210221022102210221022102210221022101a51010c291a44021ac9010c299291f8030129351a45052e2d221322131ac4010c2211221122121ac2011ac7010c2b2a0c64293b691ac4012a691ac7012a693b3b3b3b2d6805293b691ac0012a69302a691ac0012a691a0b052a693b3e3c3b2d6805221c230d29299291031b29352a362a351aaf01a003052a68010207292503511e1a3b6502013b64293ba0034b1a9b01299291031b29352a362a351a8501a003052a68010207292503511e1a3b6502013b64293ba003041a7901103b503b50293529351a5d01a003043b5002041a6b01103b502937650217293529351a4401a003043b5002041a5201103b5029376422222a1a4e010c2968013c2a3022176b2222382223230c2a3b3b3ce3502b2a0c50261502023b502d22132212221222122212221222122212221222122212fa240c501a170427051f0c000000|@7121,1,@13133,@7117,@7122,@7126,@7129,@16905,@7135,@7136,@7156,@7171,@4254,@7157,@7172,@1296,@7406,@3506,@3508,@7407,@7447,@7448,@7450,@7451,@7466,@7467,@1323,@1323,@7469,@61,@1652,@1701,@826,@5658,@1102,@7471,@4275,@7475,@7476,@7477,@1323,@1323,@7485,@7475,@7476,@7466,@7467,@1323,@7485,@749,@17063,@5686,@7527,@7532,@7533,@449,@7516,@7534,@7535,@7537,@7538,@7539,@17089,@7187,@7500,@5546,@5570,@1323,@7501,@7503,@17091,@7188,@4342,@294,@17092,@7040,@7139,@7541,@17097,@5301,@7548,@7554,@1460,@7132,@17105,@7560,@7533,@7561,@17137,@7614,@7533,@3699,@7615,@4172,@4176,@17139,@5712,@7511,@7514,@7515,@369,@1346,@1344,@885,@3587,@5198,@17140,@17141,@17142,@17143,@7619,@17147,@17148,@17149,@786,@7621,@7622,@7630,@874,@7632,@7633,@7406,@7447,@7634,@7636,@7637,@7639,@17164,@7640,@7641,@3546,@7643,@7659,@7120| 16905:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13134,@7132| 16906:D8,192|fb102f230d29299291031a29352a362a35fac5a003052a68010207292503511e193b6502013b64293ba00346fab2299291031a29352a362a35fa9da003052a68010207292503511e193b6502013b64293ba00303fa92103b503b5029352935fa77a003043b500203fa86103b50293765021529352935fa60a003043b500203fa6f103b502937643e2f69293b693b3b3b3b2d6805332dfa600c296801220d2a2d220e6b220f382210230c221003082a3b3b3ce35002023b502b2a220e7d120000|@7134,1,@13135,@61,@1652,@1701,@826,@5658| 16907:D16,656|fb202d352e360b0200312a1a9a020c5029352a362a1a9802a003033c02152a3b3bef3ba0030c2a28081a840228083bed02013b030529300c023c1a7b022f2c220c1a7c020c2992910328293529372935291a74020c2e2a23060c293ba003033b020c2935292f1a67020c29680165270502031a630264293ba0f80c02220d3b3bef293ba003051a57020251293db1292810b1293cb2292808b4291a4b02a503043b5002041a490210292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d280834ec50280831b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef2d3b3bef2a3ba003032e0255293ba003032b024d2a2ab1292810b1293cb2292808b4291ae201a503043b5002041ae00110292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220d28082e2c220cec502c95502c2708293b3bef293ba003051aab01024e292817b1292810b1293cb2292808b4291a8601a503043b5002041a840110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a690128082e2c2817ec502c95502c2708321a0f01a003033c0215323b3bef3ba0030c3228081afb0028083bed02013b0304faf0025b323b3bef293ba003051a3201024c280e2ab1292810b1293cb2292808b4291a0501a503043b5002041a030110292841bd2a3cb22a2a3b3bf02b3b3b32f0501afd0028082d2808280eec50221128082d281634ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b0252293ba003032c024a2a2ab1292810b1293cb2292808b429faa2a503043b500203faa110292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708270a340c50fa820202293527081f040000|@7138,1,@13136,@4342,@294,@7040,@7139,@1130,@7144,@7155,@7035,72057594037927935,@286,@7064,@7137,@5335| 16908:D14,656|fb1e0b02002f2a1a9e020c5029352a362a1a9c02a003033c02152a3b3bef3ba0030c2a28081a880228083bed02013b030529330c023a1a7f02332c331a81020c2992910329293529372935291a79020c29230c2f2a0c293ba003033b020c293529301a6b020c29680165270602013b64293ba0f80a02343b3bef293ba003051a56020251293db1292810b1293cb2292808b4291a4a02a503043b5002041a480210292841bd2a3cb22a2a3b3bf02b3b3b32f050221328082d280834ec50280831b12c2a2820e4502c2a3cb12828e4502c95502c2708293b3bef2d3b3bef2a3ba003032e0255293ba003032b024d2a2ab1292810b1293cb2292808b4291ae101a503043b5002041adf0110292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220d28082e2c220cec502c95502c2708293b3bef293ba003051aaa01024e292817b1292810b1293cb2292808b4291a8501a503043b5002041a830110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a680128082e2c2817ec502c95502c2708321a1601a003033c0215323b3bef3ba0030c3228081a020128083bed02013b0304faf7025b323b3bef293ba003051a3101024c280e2ab1292810b1293cb2292808b4291a0401a503043b5002041a020110292841bd2a3cb22a2a3b3bf02b3b3b32f0501afc0028082d2808280eec50221128082d281634ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b0252293ba003032c024a2a2ab1292810b1293cb2292808b429faa1a503043b500203faa010292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708270a320c503b020629352968016427061f04000000000000|@7141,1,@13137,@4342,@294,@7040,@7139,@1130,@7140,@7035,72057594037927935,@286,@7064,@7137| 16909:D7,240|fb1b2c352d362e372f382f3729392a3a32362e352f3630383139faec2a316a2d353ca0032e2d362e382a352a352993293ba00304fada02132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e220c6806220d353ba0032d220d3631353ca0031d313629352806a00308292b3bfa9d0c0206280b2a2c3b6b3c2a696502043f2a336a640202220d220c299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363e2a69293b696602013b220e3ba0030329020629220ffa3e0c22122d2f2c6b27134300000000|@7143,1,@13138,@16910,@957,@1039,@7142| 16910:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13139,@4374| 16911:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13140,@7142| 16912:D8,128|fb152c352d362e372f383039303729393235fa842b69fa882b2b6a2ffa8a2bfa8f0c2f299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363e2a69293b696602013b220c220c220c2e220c3b3b68072922112cfa4322137b0512000000000000|@7146,1,@13141,@16913,@16914,@7151,@4261,@7145| 16913:D3,32|fb052b3629353ba0030c2938292c360c2968016502013b644200000000000000|@7147,1,@13142| 16914:D6,40|fb0ffa3c2a36690b0400313037fa39313b2efa3c0c5029352a362b372c382c2c2c2c6b270a420000|@7149,1,@13143,@16915,@7148,@4331| 16915:D6,192|fb1229363b3bef293ba00304faca0247293cb1292810b1293cb2292808b429fabfa503043b500203fabe10292841bd2a3cb22a2a3b3bf02b3b3b32f050313628082d280834ec50280831b12c2a282ee4502c95502c2708293b3bef2e3b3bef2a3ba003032f0253293ba003032b024b2a2ab1292810b1293cb2292808b429fa60a503043b500203fa5f10292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220e28082e2c220cec502c95502c2708270442000000|@7150,1,@13144,@371,72057594037927935,@286| 16916:D3,8|fb022b4200000000|@7150,1,@13145| 16917:D3,8|fb022b4200000000|@7149,1,@13146| 16918:D6,136|fb112d3729353ca0032729362f353036313832393c2e692a3ba00303320205322bfa7d0c2e2e2c2f2d3b3b68072707025429353ba0034d29362f35303631383239323629353ca0031d293629352806a0030829303bfa510c0206280b2a313b6b3c2a696502043f2f2b6a2b3ba00303330205332cfa3a0c2f2f2c302d3b3b6807270802012e644400|@7153,1,@13147,@7154,@1039,@7152| 16919:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13148,@7154| 16920:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13149,@7152| 16921:D14,232|fb112c3729353ea003092936292808a06402013b03b32d352e38fae4352bfae80c29faec0c3003162b353da003043b500203fae4102b3729fae60c64022e2b353da003272b3629353ea0030829362992916402013b030d29362935293629fac00c66020429fab90c6402012b29352806a003043b500203faaf1029362b929103082b36293ba06402013b030f2b35293528053b2b2d3b6805650219fa93061b0f273eba28062b2b6a3f2f692c3b3b2ce3502a2704fa822a2c6a0b0200322d2bfa7f0c502935270b02182d380b02002cfa772bfa6c0c5029352a3629fa730c2b270764430000000000|@7158,1,@13150,@83,@7159,@7161,@7162,@4275,@7165,@1296,@16924,@4254,@7169,@7157| 16922:D4,80|fb0d2c929103462c352d362a352b362c37302ca003033c0219303b3bef2c3b3befa0030d3028082d28082f3b3befed02013b030e2a2a692d32fa2d0c2a2a696502072c31fa22327e09270502013b4300|@7160,1,@13151,@7159| 16923:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13152,@7161| 16924:D3,24|fb042b35292b37a003062a36680102013b64420000000000|@7168,1,@13153| 16925:D3,8|fb023b4200000000|@7170,1,@13154| 16926:D4,56|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa280c2a2a69270c02013b42000000000000|@880,1,@13155,@7157| 16927:D3,8|fb023b4200000000|@7170,1,@13156| 16928:D21,560|fb421a430234346a0b03002d2a1a40020c5029362a3722152210221022142e1a36020c2214220f2c221522151a31020c22152a2a9291030529929102013b03722a352b362b352c362c352d362e392f23062c2b1a12026a3b2c69221f23103b2a0c3d2a69293b692d2a6930220d693b3b2b3322260c220c332d2c6b293b69220d3b3b2ce350220e2229220e1ae2010c50220e2a6922190c50220e2a692225380c50221122102515251526131e783b271302013b651ac101221522156a0b03002d2a1a8c010c5029352a362b370b03003b2a1aac010c5029362a37222622112224222122152226220d222c321a9a010c29221f1a9b010c2227910308222037340cf721010b03003b2a1a75010c5029352a362b371a820122282c6a222823061a7f012a22132e6b1a7f01222b2216316b1a7e01222c22106a222c23081a7a012a22116a222e39222f230d22303a2231230b2232230c2233352234230a223536223623072c2b2211220e220c3422133022112215220c221022102214680e22421a3f012a929103272a352b362a35223922403022432d224622442243224222440c2b2a2506250626041e262604020051222a1a15010c223e3b3b2ce350222b299291035c29352a362a38293629353ca003082938293ca06402013b030d2a362936293b3b3be35051022b2a3629353ba00309293729353ca06402013b03043b500203face103b502b3629372936293b3b3be35026042b250526041e5b260402023b50503b2719fa9a271b1f0f000000000000|@7174,1,@13157,@16929,@5301,@7176,@7186,@294,@5230,@16978,@5198,@7247,@7259,@17015,@17016,@17017,@17022,@17023,@749,@7403,@7173| 16929:D8,144|fb122b35293729299291031829352a362a353ba003042a360207292503511e173b650202fa8264303b3bef293ba00304fa7e024c29282bb1292810b1293cb2292808b429fa72a503043b500203fa7110292841bd2a3cb22a2a3b3bf02b3b3b32f050220f28082d280834ec50280831b1fa3e28082e2c282bec502c95502c27082e363c30372e2dfa3f220c7b070a0000|@7175,1,@13158,@5229,@5828,72057594037927935,@286,@7132| 16930:D9,176|fb192f929103a32f3530362a352b362c392d3a2c2bfab16a3b2b299291031229362b3caa292b25042504511e113b6502012a65220d3ba0030e2bfa94693b3c2b2e22110c640217fa8f06fa94063d2b2b6a3b063c2a2f3c6b2b2a316a27053b2e69220d23103b2a0c3d2a69293b692d2a69220c332b326b293b69220d3b3b2ce3502a3b69220f2216220ffa5c0c50220f2a6922150c5022102218221822182218fa4e0c2c2a69271302013b1f05000000|@880,1,@13159,@294,@1296,-1,@7177,@5230,@7176| 16931:D5,48|fb062b352c362d372a3ba00305293ba002013b03043b500203fa2d102b3ba20303fa2d103b503d2c6966420000000000|@7180,1,@13160,@7181,@7179| 16932:D7,64|fb0b2f9291032f2f3530362a372992910313293529fa41333333220e680532fa3f0c640202fa412b33333333fa420c2a2a69270502013b1f0500000000000000|@880,1,@13161,@16933,@7187,@1296,@7186| 16933:D6,48|fb0a29392308fa402a2c366a2b39230d2a2a69fa3b2e372f38336b2a332bfa380c312a35456427054400000000000000|@7189,1,@13162,@16934,@16935,@7188| 16934:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13163| 16935:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13164,@7132| 16936:D17,696|fb202d352e360b0200312a1ac2020c5029352a362a1ac002a003033c02152a3b3bef3ba0030c2a28081aac0228083bed02013b030529300c029a1aa3022f2c220c1aa4020c2992910386293529372935291a9c020c2e2a23080c293ba003033b026a29352e3729393035293b3bef293ba003051a82020248293cb1292810b1293cb2292808b4291a7602a503043b5002041a740210292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082e2d2b1a4a020c2968012707270502031a450264293ba0f8d7013f2841bd293b28183bf02a3b3b2812f0501a320228082c28082810ec502a28182820e4502a28192828e4502a95502a3b3bef2d3b3bef2a3ba003032e0255293ba003032c024d2a2ab1292810b1293cb2292808b4291ace01a503043b5002041acc0110292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b1220d28082e2c220cec502c95502c2708293b3bef293ba003051aaf01024e292817b1292810b1293cb2292808b4291a7201a503043b5002041a700110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a6d0128082e2c2817ec502c95502c2708321a0b01a003033c0214323b3bef3ba0030b322808faf828083bed02013b0304faed0259323b3bef293ba003051a3701024a280e2ab1292810b1293cb2292808b429faf3a503043b500203faf210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a040128082d2808280eec50221128082d281634ec502b95502b2707642a3b3bef2a3b3bef2a3ba003032b0252293ba003032c024a2a2ab1292810b1293cb2292808b429fa91a503043b500203fa9010292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708270a340c50fa89020229352708440000|@7191,1,@13165,@4342,@294,@7040,@7139,@1130,@371,72057594037927935,@286,@7192,@7234,@7190,@7064,@7137,@5331| 16937:D11,64|fb1040fa530c29fa570c293830352935293369652a0c3b06fa4e2a69fa522afa576a2f2a220c3c220dfa553bfa5a0c2c35293ba00303fa58103b502935270944|@7194,1,@13166,@786,@1130,@16938,@7196,@7200,@7203,@7193,@1921| 16938:D3,16|fb072b362968012b363b3b2ce3654200|@7195,1,@13167| 16939:D9,104|fb0f2b35293b3bef293ba00304fa71024828092ab1292810b1293cb2292808b429fa65a503043b500203fa6410292841bd2a3cb22a2a3b3bf02b3b3b32f050fa3f28082d28082809ec503128082d281134ec502b95502b2707fa3dfa432bfa486b65100000000000|@7195,1,@13168,@7198,72057594037927935,@286,@16,@815,@7197| 16940:D9,104|fb0f2b35293b3bef293ba00304fa710248280c2ab1292810b1293cb2292808b429fa65a503043b500203fa6410292841bd2a3cb22a2a3b3bf02b3b3b32f050fa3f28082d2808280cec503128082d281434ec502b95502b2707fa3dfa432bfa486b65100000000000|@7195,1,@13169,@7202,72057594037927935,@286,@16,@815,@7201| 16941:D4,8|fb02fa1c10000000|@7205,1,@13170,@7204| 16942:D7,48|fb0c312e313c3b30fa3e0c322f323b2d2efa350cfa3a32312c6bfa3c323433332f2210306808220c3b2bfa34327b050d|@7207,1,@13171,@7208,@16955,@16943,@874| 16943:D4,56|fb102c2c2a9291032a2a352b36312b2d3036313732383339343a220c2306220d2307fa2c0c2a2a2505250526031e293b6602012965440000|@877,1,@13187,@7224| 16944:D6,40|fb09fa3c303030306805312d2bfa390cfa3e323232326805332b2bfa2b317b050b00000000000000|@7209,1,@13172,@16946,@874,@16945| 16945:D4,48|fb0d2c2c2a929103202a352b36312b2d3036313732383339fa2e0c2a2a2505250526031e1f3b66020129654400000000|@877,1,@13176,@7212| 16946:D4,48|fb0d2c2c2a929103202a352b36312b2d3036313732383339fa2e0c2a2a2505250526031e1f3b66020129654400000000|@877,1,@13173,@7210| 16947:D10,248|fb1530351a0901a003e730351a0101a003043b5002041aff00103037293729352a39323b3bef220d3b3bef2a3ba00304220e0254293ba0030334024c2a2ab1292810b1293cb2292808b429fad3a503043b500203fad210292841bd2a3cb22a2a3b3bf02b3b3b32f050221228082d2808220cec50280832b1221628082e2c220cec502c95502c2708293b3bef293ba00304fa9d0246293cb1292810b1293cb2292808b429fa7aa503043b500203fa7910292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c2708fa5b2f220f6a302b2b221022102215fa5422127b08132f1f0700000000|@7211,1,@13174,@21,@826,72057594037927935,@286,@371,@16948,@7208| 16948:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13175,@4374| 16949:D12,384|fb1f30351a9101a0f8720130351a8801a003043b5002041a860110303729351a860131691a890131692b38293629353da003a629362a372c352d37220d0304221002921a72013032220f6b2c1a71012b1a75010c3d2f2b6a2d2a2e6a220c3522143b3bef2a3b3bef2a3ba003032b0256293ba003042216024d2a2ab1292810b1293cb2292808b4291a4501a503043b5002041a430110292841bd2a3cb22a2a3b3bf02b3b3b32f050221d28082d2808220cec50280832b13328082e2c220cec502c95502c27082210372a220d2b316b29221b69270a270402a032910304220c02982a3629353ba0030c293829220d0c2968016502013b299291037b29353035220f3b3bef2a3b3bef2a3ba003032b0254293ba003042211024b2a2ab1292810b1293cb2292808b429faa6a503043b500203faa510292841bd2a3cb22a2a3b3bf02b3b3b32f050221828082d2808220cec50280832b13328082e2c220cec502c95502c27083436220c372b2b2b326b2922176927080202220e65270602012f1f07|@7214,1,@13177,@19,@826,@16950,@16951,@16952,@7213,@4261,72057594037927935,@286| 16950:D5,112|fb1029363b3bef2c3b3bef2a3ba003032d0255293ba003042b36024c2a2ab1292810b1293cb2292808b429fa5ba503043b500203fa5a10292841bd2a3cb22a2a3b3bf02b3b3b32f050323628082d2808220cec50280832b1220c28082e2c220cec502c95502c27086542000000000000|@7215,1,@13178,72057594037927935,@286| 16951:D3,32|fb052b3629353ba0030c2938292c360c2968016502013b644200000000000000|@7216,1,@13179| 16952:D5,40|fb0e0b0400302f36fa36313732382efa370c5029352a362b372c382c2c2c2c6b2709420000000000|@7218,1,@13180,@7217,@4331| 16953:D3,8|fb022b4200000000|@7219,1,@13181| 16954:D3,8|fb022b4200000000|@7218,1,@13182| 16955:D7,48|fb10fa442a3669fa472b37690b04003230fa453134382efa470c5029352a362b372c382c2c2c2c6b270b420000000000|@7221,1,@13183,@16956,@16957,@7220,@4331| 16956:D3,32|fb052b3629353ba0030c2938292c360c2968016502013b644200000000000000|@7222,1,@13184| 16957:D5,112|fb1029363b3bef2c3b3bef2a3ba003032d0255293ba003042b36024c2a2ab1292810b1293cb2292808b429fa5ba503043b500203fa5a10292841bd2a3cb22a2a3b3bf02b3b3b32f050323628082d2808220cec50280832b1220c28082e2c220cec502c95502c27086542000000000000|@7223,1,@13185,72057594037927935,@286| 16958:D3,8|fb022b4200000000|@7223,1,@13186| 16959:D21,576|fb2433351a5102a0f8b20133351a4802a003043b5002041a460210333729352a362b372c382a352b362c382d392e3a221203491a32022b22136a2e353ca0032f2e362f382a352a352993293ba003051a1e0202132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e292f3b302e30680665f73101401af8010c1afc012a691aff012b691a02022c69292c2c6a1a01023022186a22163b3bef221c3b3bef2a3ba00304221d0257293ba003042218024e2a2ab1292810b1293cb2292808b4291ad701a503043b5002041ad50110292841bd2a3cb22a2a3b3bf02b3b3b32f050221f28082d2808220cec50280832b1222528082e2c220cec502c95502c2708293b3bef293ba003051a9f010248293cb1292810b1293cb2292808b4291a7b01a503043b5002041a790110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c2708220f30303b2d221f221f1a50010c34353ca0032f3436220c382a352a352993293ba00304faef02132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060201342922113b2212222022126806270d32322b326b22172a69221037220f7d1833351afe00a003293335faf7a003043b500203fa8e10333729352a362a2f0c2a30fae80c2a2a6922112a69643236317d113335fadea003443335fad7a003043b500203fa5e10333729352a362b372c382d392e3a2f23062cfac1220cfac50c292ea02991030b3131312d3131316807020132322a69220f35220e7d173b1f0a00000000|@7226,1,@13188,@21,@826,@16960,@957,@786,@16961,@16963,@16965,@16967,72057594037927935,@286,@371,@7193,@19,@7231,@18,@7225,@4261| 16960:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13189,@4374| 16961:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@7228,1,@13190,@19,@394,@828,@7227,@854| 16962:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13191,@19,@7227| 16963:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@7228,1,@13192,@21,@394,@828,@7229,@854| 16964:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13193,@21,@7229| 16965:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@7228,1,@13194,@18,@394,@828,@7230,@854| 16966:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13195,@18,@7230| 16967:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13196,@4374| 16968:D6,72|fb132c9291033b2c352d362a352b362c372d382e392f3a3023062cfa43220dfa470c292ea02991030b3131312d313131680702013333220ffa360c2a2a69270d02013b4300000000|@880,1,@13197,@7232,@4261,@7231| 16969:D3,8|fb022b4200000000|@7233,1,@13198| 16970:D3,8|fb022b4200000000|@7233,1,@13199| 16971:D4,16|fb072d2d2b362efa1f2f7b0605000000|@7236,1,@13200,@7235| 16972:D21,440|fb1b2e350a060019010c001e01380146018d012e3629352a362b392c3a0b01002d2d2b220e0c5029352938293629353ca0030b2a362936292210a06502013b299103bb2c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643b220d299291031229362b3caa292b25042504511e113b6502012a652a2aa091035a30352b3c1a2e010c2b3c1a28010c293b691a29012a692c2a691a29012a692f2a691a29012a6927081a2a010c291a2d011a32010c291a35010c3b3e3b3b2d68053c3b2b22126b2216382217230c2a3b3b3ce3502b2a0c27070205333b3b33e3270402013b331a0d012212221222121a0c010c3b3369293b6928052c220e332d6805270f02921afd00028d2e362f382a303030fae10c2a313131fada0c3d2b2b6a270402732e3629352a3628062b2b6a6602652e362f372afabc313131facf0cfad40c29fad80c3b2a2d6a2c030329020629063c2a69643e2d2b6a2e0303290215fac3061b0f273eba28062b2b6a2b3b3b2fe32a27042707021e2e3629fa77303030faaa0c293cfaad0c29fab10c3b2a3c6a3e2c2b6a27051f0400000000|@7238,1,@13201,@801,@7239,@7240,@7241,@284,@5050,@5052,@5211,@7235,@7242,@749,@7243,@4172,@7244,@1296,@7245,@3506,@7237| 16973:D4,40|fb0a2f929103192f3530362a303030340c2a32323232fa280c2a2a69270402013b1f050000000000|@880,1,@13202,@7242| 16974:D5,56|fb0f2f9291032b2f3530362a352b362a352a333333220e0c2afa350c292b692f220e220e220e220efa2e0c2a2a69270902013b1f05000000|@880,1,@13203,@4168,@7243| 16975:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13204,@7244| 16976:D4,40|fb0a2f929103192f3530362a303030340c2a32323232fa280c2a2a69270402013b1f050000000000|@880,1,@13205,@7245| 16977:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13206,@7237| 16978:D8,144|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c292834b1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c2834ec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7175,1,@13207,@5229,@7246,72057594037927935,@286,@7132| 16979:D5,72|fb10339291030532929102013b0336333534363435220c362c2b220e220e220e220e220e220e220efa360c2c2b220f220f220f220f220f220f220ffa2b0c2a2a69270602013b1f09|@2132,1,@13208,@7248,@7247| 16980:D7,152|fb1933353436220c37220d39220e3a3b2c299291031229362b3caa292b25042504511e113b6502012a652afa830c3b2d69221023103b2a0c3d2a69293b692d2a69280530220e22192d680534fa6afa700c2922172217221a22182f220f221afa670c22192a692214031822102a6922140c50221a3b6922112a69642219380c50020922102a692219380c50220f3b3b2ce3502927111f0900|@7250,1,@13209,@7251,@7252,@2568,@7249| 16981:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@13210,@7251| 16982:D4,8|fb03fa1c2c694200|@7253,1,@13211,@16983| 16983:D3,48|fb0b2b382a3638293b3bef2b3b3bef2a2aa303032a0201292c28082f28082dee293ba003052c2ca30203293ba2270642|@7254,1,@13212| 16984:D10,184|fb2432929103aa323533362a352b362c372d380b02002e929103232e3529fab0221322132213221768052212faaa0c3d2a22116a2c2a453b46502603020729220e453c465029352a363b3269221223103b2a0c3d2a69293b692d2a69fa8206fa87063d2b2b6a32221869220f2a2c220e313b3b68072210221d2215fa730c2211221d221f22173cfa6f0c22122c69221b0c22143b3b2fe322182223222322232223222322232223fa570c2e2a69271b02013b1f0800000000|@880,1,@13213,@16985,@7187,-1,@7177,@5230,@7255,@7249| 16985:D6,48|fb0a29392308fa402a2c366a2b39230d2a2a69fa3b2e372f38336b2a332bfa380c312a35456427054400000000000000|@7189,1,@13214,@16987,@16986,@7188| 16986:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13216,@7132| 16987:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13215| 16988:D14,416|fb112f1ab201a003033c02152f3b3bef3fa0030c2f28081a9e0128083fed02013b03033c02b72f1a9601a003033c02172f3b3bef2805a0030d2f28081a810128082805ed02013b03033c02912f1a7801a003033c02152f3b3bef3ea0030c2f28081a640128083eed02013b03033c026d2f1a5c01a003033c02152f3b3bef3da0030c2f28081a480128083ded02013b03033c02492f1a4001a003033c02152f3b3bef3ea0030c2f28081a2c0128083eed02013b03033c02252b03212f1a2101a003033c02152f3b3bef3da0030c2f28081a0d0128083ded02013b02013b03be2f3b3bef293ba003051afd00024b28192ab1292810b1293cb2292808b429faf1a503043b500203faf0103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fac928082d28082819ec50220e28082d282134ec502b95502b2707293b3bef293ba00304fabd024d29280cb1292810b1293cb2292808b429fa99a503043b500203fa98103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa7c28082e2c280cec502c95502c2708313c34332dfa6f347b070b3b1f05|@7257,1,@13217,@1123,@1076,@1305,@1240,@1582,@5389,@7258,72057594037927935,@286,@7256,@7132| 16989:D10,200|fb183b06293b3bfad72e3769e3500b0200fad52afada0c5029352a36fada2b3136342d680533299291031429352a362a2e30facc0c50292503511e145102023b505033299291037529352a362a352938292f0c293ca003043b5002552afaa969320c502b38293629353ca003082938293ca06402013b030d2a362936293b3b3ce35051022b2a3629353ba00309293729353ca06402013b03043b500203fa71103b502b3629372936293b3b3ce3502604512c250626051e733b270502013b64270743000000000000|@7261,1,@13218,@16990,@7357,@7359,@17011,@7260,@846,@7173| 16990:D17,312|fb102b363ca203061a4501f726012b3529353ba003922c3529362e363cab2a2a691a3401351a38012a0c642a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a1801a003033c020f291a1601a003033c0205291a1401a06402013b9102013b02013b03192a1a0a01691a0e012a691a11012a693b3e3c3b2d68056602012a64020129293b691a02012a691a05012a693b3c3b3b2d68052709028b2c363ca20304faf802812c3529362e363cab2a2a692e36352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa84a003033c020d29fa83a003033c020429fa82a06402013b9102013b02013b03162afa7969fa7e2a69fa822a693b3e3c3b2d68056602012a64020129293b69fa8c2a69fa902a693b3c3b3b2d680527096442000000|@7263,1,@13219,@2535,@118,@7264,@594,@595,@596,@2624,@1500,@2627,@1323,@7344,@2535,@1323,@7262| 16991:D4,16|fb05fa24352c2a2d7d04000000000000|@7266,1,@13220,@148| 16992:D13,120|fb102b363ca20304fa86026b2b352c363cab293ba20304fa7f023d2a352a3cab2a2a692e37352a2a0c642e362e3cab2a2a69fa6c35fa713436693b2a3e3c6b642a0c642a2a0c6429fa6669fa6b2a69fa6f2a69302a69270bfa6e2a693b3c3b3b2d6805293b69fa682a69fa6c2a693b3c3b3b2d6805270842|@7266,1,@13221,@2535,@1318,@118,@16993,@2625,@1323,@5556,@2627,@1323,@7268| 16993:D3,16|fb052936352c2a2d7d04000000000000|@7269,1,@13222| 16994:D46,448|fb282b363ca203061acd01f7ad012b352c363cab293ba203061ac401f77a012a372a3cab2a2a692e39352a2a0c642d3ca203061ab201f747012e362e3cab2a2a693238352a2a0c64313da203061aa001f71401322306323cab2a2a691a9901351a9d01220f36693b2a3d3c6b642a0c642a2a0c64220c3ea203051a8b0102cf220d39220d3cab2a2a691a8401351a8801221337693b2a3e3c6b642a0c642a2a0c6422103fa203051a7601028922113522113cab2a2a691a6f01352a2a0c6422142805a203051a6801025222153a22153cab2a2a691a2101351a5d012a0c642a2a0c6422193822193cab2a2a69221d36352a2a0c64291a4801691a4c012a691a4f012a691a52012a691a55012a69322a691a55012a691a58012a69270f1a59012a691a5c012a692c2a691a5c012a691a5f012a6927091a60012a691a63012a692c2a691a63012a691a66012a6927091a67012a691a6a012a692c2a691a6a012a691a6d012a6927091a6e012a691a71012a692c2a691a71012a691a74012a6927091a75012a691a78012a692c2a691a78012a691a7b012a6927091a7c012a693b3c3b3b2d6805293b691a75012a691a78012a693b3c3b3b2d680527084200000000|@7269,1,@13223,@2535,@4429,@4429,@4429,@9,@16995,@4429,@118,@16998,@4429,@7,@4429,@7279,@5552,@1323,@7297,@1323,@5556,@1323,@7299,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@7301,@1323,@5556,@1323,@7303,@1323,@5556,@1323,@5844,@5559,@1323,@7277| 16995:D5,24|fb07fa2c35fa312b36693b2a3e3c6b642a0c642c2a2d7d04|@7278,1,@13224,@116,@16996| 16996:D5,24|fb07fa2c35fa312b36693b2a3e3c6b642a0c642c2a2d7d04|@1312,1,@13225,@118,@16997| 16997:D3,16|fb052936352c2a2d7d04000000000000|@5911,1,@13226| 16998:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@13227| 16999:D21,160|fb162b363ba20304faae02822b35362c363cab2a2a69faa835faad2a0c642a2a0c642f363ca20304faa6024d2f353530363cab2a2a69fa8835fa9d2a0c642a2a0c6433353734363cab2a2a69fa7235fa8f2a0c642a2a0c6429fa8d69fa922a69fa962a69fa9a2a69fa9e2a69322a69fa9f2a69faa32a69270ffaa52a69faa92a692c2a69faaa2a69faae2a692709fab02a693b3c3b3b2d680565420000000000|@268,1,@13228,@4429,@116,@7282,@4429,@7284,@7288,@5552,@1323,@7292,@1323,@5556,@1323,@7294,@1323,@5556,@1323,@7281,@5559| 17000:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13229,@115| 17001:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13230,@118,@7286| 17002:D29,248|fb1e2b363ba203051a050102d92b35362c363cab2a2a691afe00352a2a0c642f363ca20304faf902a82f353830363cab2a2a69fae3352a2a0c6433363da20304fae6027833353534363cab2a2a69fae0352a2a0c64220e363ea20304fada0247220e3537220f363cab2a2a69faaa352a2a0c64221235392213363cab2a2a69fa97352a2a0c6429fab769fabc2a69fac02a69fac42a69fac82a69322a69fac92a69facd2a69270ffacf2a69fad32a692c2a69fad42a69fad82a692709fada2a69fade2a692c2a69fadf2a69fae32a692709fae52a69fae92a692c2a69faea2a69faee2a692709faf02a693b3c3b3b2d680565420000000000|@268,1,@13231,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559| 17003:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13232,@118,@7290| 17004:D34,328|fb202b363ba203061a5501f726012b35352c363cab293ba203051a4b0102e42a362a3cab2a2a691a4601352a2a0c642d3ca203051a410102b12e382e3cab2a2a691a2c01352a2a0c64313da203051a2f01027e3235323cab2a2a691a2a01352a2a0c64220c3ea203051a2401024a220d37220d3cab2a2a69faf6352a2a0c6422113922113cab2a2a69fae5352a2a0c64291a0401691a08012a691a0b012a691a0e012a691a11012a69322a691a11012a691a14012a69270f1a15012a691a18012a692c2a691a18012a691a1b012a6927091a1c012a691a1f012a692c2a691a1f012a691a22012a6927091a23012a691a26012a692c2a691a26012a691a29012a6927091a2a012a693b3c3b3b2d680530353631363cab2a2a69fa6d352a2a0c64291a1401691a18012a691a1b012a69302a69270c1a19012a693b3c3b3b2d68056542000000000000|@268,1,@13233,@1318,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627| 17005:D23,192|fb152b363ca20304face02af2b35299291036f2c3529352a362f363cab293ba20304fabc023b293cab2c2a69faba352a2a0c642c3cab2e2a69fab5352a2a0c6429fab569faba2a69fabe2a69fac22a69fac62a69312a69fac72a69facb2a69270dfacd2a693b3c3b3b2d6805293b69fac72a69facb2a693b3c3b3b2d6805270a02382c363ca20304fabe022e2c35293ba00304fabb02222d363ca20304fab902182d35293ca00304fab6020c2e363ca20304fab40202fab86464644200000000|@7312,1,@13234,@2535,@4429,@115,@75,@5552,@1323,@7313,@1323,@5556,@1323,@7315,@5559,@1323,@7317,@2535,@7324,@2535,@7331,@2535,@7311| 17006:D3,80|fb092c3629353ca003092c3629353ca06402013b030f2d3629362e3629362b2aa0270402252d3629353ba003092d3629353ba06402013b030f2e3629382f3629382b2aa0270402013b64644300000000|@7358,1,@13235| 17007:D5,24|fb063b06fa2a2a2f6afa2d2f2c6a2e2b452a466643000000|@7360,1,@13236,@17009,@17008| 17008:D3,48|fb0a29373529299291032029352a362a352b362a3231360c030529680102082b250526041e1e3b270402013b64644200|@7364,1,@13239| 17009:D4,72|fb0a2b352a363529299291031b29352a362a35292f31370c03033c02082a250426031e1a3b6602013b640309292c372cfa2e0c0201292e2a692d363b3b2ce3270442000000000000|@7362,1,@13237,@7361| 17010:D4,40|fb082d9291031c2d352e362a35292f310c03032a020a2a3030fa250c2c2a69646602013b44000000|@7363,1,@13238,@7361| 17011:D9,256|fb162b2a390c293ba0031f2c3629353ba003122938292d380c03033d02013c3c2a69650202faf1640202293529353ca0031329353ca003043b500203fae2103b50293602b52dfae0692c360c2a353ba003043b500203fad8103b502a36293d2a9291037f2a352b362b3ca003033c02652a362c2a299291035929352a362a3829353da02991030d2e2c2506250626041e1b3b023a2c3829353da003043b500203fa96103b502936292212fa942214370c293ca003033c0215293ba003033b0201312930250a250a26081e553b6466270402012a65642a2a2505250526031e7e3b6602012965293ba003032c02033c2a69312a69642f360c502966654200000000|@7366,1,@13240,@3733,@7367,@920,@7369,@7371,@7365| 17012:D3,8|fb023d4200000000|@7373,1,@13241| 17013:D7,296|fb162d3529382e0c299291f80301293529353ba003043b5002041a2301103b502936312a692d38293629353da003041a1601103b503b5029353ba00314293729353ca00307293629356402022936640205293629356403033c02442c929103043b500203faea103b502c3529352938293629353da00303facf103b503b5029353ba00314293729353ca003072936293564020229366402052936293564270403692b299291035e29352a362a352938293629353ca003082938293ca06402013b030d2a362936293b3b3ce35051022b2a3629353ba00309293729353ca06402013b03043b500203fa6f103b502b3629372936293b3b3ce35026042c250626051e5d260502023b505002023b502b270502032f3b692b383b2b692a2a69652f2f7d0800000000000000|@7374,1,@13242,@7369,@4323,@2207,@7173| 17014:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@2534,1,@13243,@2535,@7377,@2535,@7384,@2535,@7376| 17015:D3,16|fb042b2a370c502b2a36372c80000000|@7397,1,@13244| 17016:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13245| 17017:D7,64|fb0d3b06fa522a692b380c2a353b06fa4f2a692e370c2a353b303623090c293ba003032a02052a2afa3e0c293ba003032e02082e2afa39220c7e0b2708420000|@7399,1,@13246,@17018,@17019,@7401,@7398| 17018:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13247| 17019:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13248| 17020:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13249,@7401| 17021:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13250,@7398| 17022:D3,16|fb042b2a370c502b2a36382c80000000|@7402,1,@13251| 17023:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13252| 17024:D5,72|fb092b9291033d2b352c362a38293629353da00303fa49103b5029353ba00314293729353ca0030729362935640202293664020529362935642cfa2c0c2a2a69270602013b420000|@880,1,@13253,@4323,@7403| 17025:D4,48|fb113b062d2d2b2d362e372f383039313a322306332307342308220c2309220d230a220e230bfa200c50293564430000|@7409,1,@13254,@7408| 17026:D34,4512|fb29220f1ab1110c220f1aab110c2a352805a0031b2a382938293629353ca0030b2a362936292213a06502013b6602013b03033c022329352805a0031b29382938293629353ca0030b2a362936292213a06502013b6602013b03043bf73b112a353ba003043bf7311129353ba003043bf727112a352806a0030729352806a002013bf84e022a362b372a2a692c362d372a2a692e352f2da003043bf730022e3db7293ba09103292b33221b221b221b1a0e11221c221c221c221c221c221c221c221c221c221c221c1afd10221d7b131a2d352b353ea0030629353ea002013b03932b362c372a2a692c362d372a2a69343b3b1adb10e350220e3b3b1ad210e3502c2a33321ab9102223222322232223222322232223222322232223222322231ab6100c332a2223222322231a9210222422242224222422242224222422242224222422241a81100c50220d22112223222322231a6a10222422242224222422242224222422242224222422241a591022257b13222b353fa0030629353fa002013b03cc2b362a36292b1a54100c293ba003213b221e221e1a4e106b221c3529929103033b020a2a6801221e3b3b2ce364650299313b3b1a1710e350343b3b1a0f10e35029929103082936293ba06402013b030f2935293528053b2b2d3b680565021a1aeb0f061b0f273eba28062b2b6a3f2d692c3b3b2ce3502a2704302a2220222022201ab90f222122212221222122212221222122212221222122211aa80f0c5033220e2220222022201a920f222122212221222122212221222122212221222122211a810f22227b131f66027d2b353ca003292f33221c221c221c1a600f221d221d221d221d221d221d221d221d221d221d221d1a4f0f221e7b131b29353ca003292c34221c221c221c1a310f221d221d221d221d221d221d221d221d221d221d221d1a200f221e7b131b3b221b221b1a3b0f6b22193529929103033b020a2a6801221b3b3b2ce3646564642707f7c70e2a352806a0f8da012a362b372a2a692a3db7293ba09103033c02072c3529353fa064f894012d352805a0f863012d362e382938293629353ca0030b2a362936292218a06502013b03033c020b2b38293629353da029916603df31352805a003af313632382938293629353ca0030b2a36293629221ca06502013b03033c020b2b38293629353da0299166032a32220d221f221f221f1a550e222022202220222022202220222022202220222022201a440e22217b131e2b38293629353da003043b5002041a5e0e103b5029362a372a311a5a0e0c1a5e0e2a690b02002e2d2b1a5b0e0c50293527091afa0d0c220e2a221e221e221e221e221e221e221e221e221e221e221e221e1ae30d221f7b101f2e32221b221b221b1ad30d221c221c221c221c221c221c221c221c221c221c221c1ac20d221d7b131a2b38293629353da003043b5002041adc0d103b5029362a372a311ad80d0c1aec0d2a690b02002e2d2b1ad90d0c50293527091a780d0c332a221a221a221a221a221a221a221a221a221a221a221a221a1a620d221b7b101b2a2e2217221722171a520d221822182218221822182218221822182218221822181a410d22197b13162a2e2217221722171a290d221822182218221822182218221822182218221822181a180d22197b131629352806a0f8b10129362a37293db7293ba09103033c02072b3529353fa064f83e012d352805a003de2d362e382938293629353ca0030b2a362936292217a06502013b03033c020b2b38293629353da0299166035a30352806a00331303631372a2a6929220c221d221d221d1a9c0c221e221e221e221e221e221e221e221e221e221e221e1a8b0c221f7b131c31312218221822182218221822182218221822182218221822181a610c22197b10192b38293629353da003043b5002041a830c103b5029362a372a311a7f0c0c1a9b0c2a690b02002e2d2b1a800c0c50293527091a1f0c0c29322219221922192219221922192219221922192219221922191a090c221a7b101a2c352806a003302c362d372a2a6929312219221922191aeb0b221a221a221a221a221a221a221a221a221a221a221a1ada0b221b7b13182d2d2214221422142214221422142214221422142214221422141ab00b22157b10152c352806a003302c362d372a2a6929312219221922191a920b221a221a221a221a221a221a221a221a221a221a221a1a810b221b7b13182d2d2214221422142214221422142214221422142214221422141a570b22157b10152a352805a0030729352805a002013bf861022a362b382b362c382b38293629353ca0030b2a362936292216a06502013b03033c02172b38293629353ca0030b2a362936292218a06502013b6503043bf71c022d38293629353da003542f38293629353da003043b5002041a1d0b103b5029362a372a220c1a180b0c1a3c0b2a690b02002e2d2b1a190b0c5029352922132223222322232223222322232223222322232223222322231aa70a22247b10242d38293629353da003542f38293629353da003043b5002041abf0a103b5029362a372a220c1aba0a0c1ae60a2a690b02002e2d2b1abb0a0c50293522152a2225222522252225222522252225222522252225222522251a490a22267b10262f38293629353da003543138293629353da003043b5002041a610a103b5029362a372a220e1a5c0a0c1a900a2a690b02002e2d2b1a5d0a0c50293522172a2227222722272227222722272227222722272227222722271aeb0922287b1028333832382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b64038f220c220f299291035c29352a362c929103312c352d362c2b2226222622262226222622262226222622262226222622261a65090c50292c2506250626041e393b65021f3b222522251acd096b22233529929103033b020a2a680122253b3b2ce364656502272a3ba003033b021f3b222322231aab096b22213529929103033b020a2a680122233b3b2ce364656502213c221122112210220f6805221f3529929103033b020a2a680122213b3b2ce36465666565652706f7b9082a353fa0030729352805a002013bf833032a362a362b382938293629353ca0030b2a362936292215a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041ac508103b5029362a372a321ac1080c1a0d092a690b02002e2d2b1ac2080c50293522112a2221222122212221222122212221222122212221222122211a500822227b10222c38293629353ca0030b2a362936292218a06502013b03043bf78e022e38293629353da003543038293629353da003043b5002041a4c08103b5029362a372a220d1a47080c1a9b082a690b02002e2d2b1a48080c50293522152a2225222522252225222522252225222522252225222522251ad60722267b102631929191036b32293ba003033b025f29352a3633382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056402013b03043bf7b70122163533293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092217352968016402ed33293ba003033b022929352a362a38293629353ca0030b2a362936221d2aa06502013b03033c02082b250526041e2c3b27046403062215680102b233293ba003033b022929352a362a38293629353ca0030b2a362936221b2aa06502013b03033c02082b250526041e2c3b270464030622136801027733293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b270464030622116801023c33293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102013b299291032e2935293528053b2b2d3b68053c2a22112e22106805221f3529929103033b020a2a680122213b3b2ce3642705021f3b220e220e1a5a066b221c3529929103033b020a2a6801221e3b3b2ce364656565652706f775052a352805a0030629353fa002013bf8b4022a362b382b362a38293629353ca0030b2a362936292215a06502013b03033c020b2c38293629353da0299166299103532d38293629353da003043b5002041a8105103b5029362a372a331a7d050c1ae1052a690b02002e2d2b1a7e050c5029352922112221222122212221222122212221222122212221222122211a0c0522227b10222e929191036b2c293ba003033b025f29352a3630382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056402013b03043bf7b4012212352d293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092213352968016402ec2d293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b27046403062211680102b12d293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f680102762d293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d6801023b2d293ba003033b022929352a362a38293629353ca0030b2a36293622132aa06502013b03033c02082b250526041e2c3b270464030534680102013b299291032e2935293528053b2b2d3b68053c220d2b220c2f6805221b3529929103033b020a2a6801221d3b3b2ce3642705021d3b33331aa3036b22183529929103033b020a2a6801221a3b3b2ce36465652706f7b0022a353fa0030629353fa002013b03041a7c03103b503b502a352805a003a32a362b382938293629353ca0030b2a362936292214a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041ab102103b5029362a372a321aad020c1a29032a690b02002e2d2b1aae020c5029352922102220222022202220222022202220222022202220222022201a3c0222217b10213b30301af9026b22153529929103033b020a2a680122173b3b2ce364652705f7ef0129352805a0f81e0129362a382938293629353ca0030b2a362936292214a06502013b03033c020b2b38293629353da0299166299103532c38293629353da003043b5002041a0602103b5029362a372a321a02020c1a8e022a690b02002e2d2b1a03020c50293522102a2220222022202220222022202220222022202220222022201a910122217b10212c38293629353ca0030b2a362936292217a06502013b03033b027d2e38293629353da003543038293629353da003043b5002041a8e01103b5029362a372a220d1a89010c1a1d022a690b02002e2d2b1a8a010c50293522142a2224222422242224222422242224222422242224222422241a180122257b10253b33220c1aec016b22193529929103033b020a2a6801221b3b3b2ce364656565270502c92a353da0030629353da002013b03472a362b372b362c372c2b221522152215221522152215221522152215221522152215fabc0c502b2a221522152215221522152215221522152215221522152215fa9e22167b10162a353ca0030629353ca002013b03033b02612a353ea0030629353ea002013b03352a362b372a2a692c362d372a2a692c2a3232fa64221a221a221a221a221a221a221a221a221a221a221a221afa620c503b2706021d3b2b2b1a25016b22103529929103033b020a2a680122123b3b2ce36465651f0e000000|@7411,1,@13255,@4275,@7408,@7412,@1296,@7431,@7439,@7441,@7410,@4256,@2100,@17042,@4254,@17043,@17044,@17045,@17046,@17047,@7442,@7442,@17048,@17049,@7443,@17050,@7443,@7444,@17051,@7410,@17052,@17053,@7410,@7410| 17027:D16,424|fb1622123529352213291ab3010c29352805a0034e29362a382938293629353da0033b2b38293629353da003043b5002041a9401103b5029362a372a311a90010c1a94012a690b02002e2d2b1a91010c5029352709250626051e503b02012d2704020129646429352806a0030b29362216352a2aa06502013b2b353fa003212b2216221422132213221322132213221322132213221322132213221f0c5002292b353ea003212b2216221422132213221322132213221322132213221322132213221f0c5002023b502903033b02d4221636293db7293ba09103213b221722171a05016b22153529929103033b020a2a680122173b3b2ce3646502a63b2d221a221922192219fae80c03203b22172217fae66b22153529929103033b020a2a680122173b3b2ce364650277221836293fb7293ba091030f2219fac5facb22170c293ca06402013b03223b22192219fac06b22173529929103043b50020b2a680122193b3b2ce350505102023b50221a36293cb7293ba0910310fa9dfaa30c221c2a0c643b2a0c5102023b5022183529929103033b020a221d35293b3b2220e36427056527041f1100|@7414,1,@13256,@4275,@4256,@2100,@17028,@4254,@7415,@7416,@7421,@7422,@7424,@7428,@7413,@5801| 17028:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13257| 17029:D16,488|fb1c303ba0f8d6012f1af4010c29353ea003112936291aef01323232321af001337b080a29353da0032429362a373b2b333333331ad1010c03033c020d3b2a333333331ac201347b080b65f78d0129352805a0036429362a382938293629353da003422b38293629353da003043b5002041aa401103b5029362a372a311aa0010c1aa4012a690b02002e2d2b1aa1010c5029353b2a22162216221622161a680122177b08172c1a5f01220c220c220c220c1a8401220d7b080d29352806a0f8190129362a373136293ebb29920305293ba2020529942811a0030a1a63012a1a67010c020129299203043b5002041a6001103b502c3ebb29920305293ba2020529942811a0030a1a37012a1a3b010c020129299203043b5002041a3401103b502b2aa203032b0201293035303ebb29920305293ba2020529942811a0030a1a00012a1a04010c020129299203043b5002041afd00103b50292da0910365323db7293ba09103223b22122212faec6b22103529929103043b50020b2a680122123b3b2ce35050510237333fb7293ba091220c3cb7293ba091fac806323eba2d03033f02013b2a2ab8292eb828062e2b6a2e3b3b2210e35022153b3b2ce350260a5002023b50221135342aa0292e2215221522152215fa3322167b08163b6402013c1f0600000000000000|@7418,1,@13258,@4275,@7416,@7419,@4256,@2100,@17031,@4254,@7420,@796,@797,@792,@7417,@1296| 17030:D4,40|fb0d309291031c30353136293232323232fa2d0c2b362a2a343434342210220c7b080c3b1f060000|@2425,1,@13259,@7419| 17031:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13260| 17032:D4,40|fb0c309291031930353136293232323232fa2d0c292c33333333220f347b080b3b1f060000000000|@2425,1,@13261,@7420| 17033:D3,8|fb023c4200000000|@7423,1,@13262| 17034:D8,192|fb1d2b36293fb7293ba09103033d02ab2d36293db7293ba09103033c029c2f36293ebb29920305293ba2020529942811a00308faa32afaa80c020129299203043b500203faa2103236293cb7293ba091fa9e062d3eba293fb8292db828062d2b6a2211352935221335293b3b2fe3502a353fa0033c2a3629fa7e0c299291032d29352a36293ba003152a3528053b2b2e3b6805220d3b3b2ce3503d65020c3f2c69220c3b3b2ce3503d646502013c650207303b3b2de3503d270e656542000000|@7426,1,@13263,@796,@797,@792,@1296,@7425| 17035:D5,88|fb082b929103482b352c362a38293629353da00303fa59103b5029353ba00314293729353ca003072936293564020229366402052936293564030a2bfa3a0c2d2a696402062bfa30307d07270402013b4200000000000000|@7427,1,@13264,@4323,@7425| 17036:D4,8|fb03fa1c2c694200|@7429,1,@13265,@17037| 17037:D7,152|fb172936352806a003872936362a3637293cb7293ba09103033b02722b3529353fa003033b02662b3ebb29920305293ba2020529942811a00308fa742afa790c020129299203043b500203fa73102d3fb7293ba0912f3db7293ba091fa6a062e3eba2d03033f02013b2a2ab82d03033d02013b2a2ab8293cb82806302b6a22113b3b2ce350303b3b2211e3270e646602013b420000000000|@7430,1,@13266,@796,@797,@792,@1296| 17038:D10,528|fb232212352213362213352214362216360b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b51502936221a360b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b515029362e034529033f3b220e299291031229362b3caa292b25042504511e113b6502012a653b220d299291031229362b3caa292b25042504511e113b6502012a652a2aa0916502013b02013b03243b221f221f1a77016b221c3529929103043b50020b2a6801221e3b3b2ce350503b65022a220d220c221e221e221e221e221e221e221e221e221e221e221e221e221e220f222e222e22171a3a010c2f03442a03043b5002393429353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba003041a0d01103b503b502935293b3b2212e35051221f02cb2a033d220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303fad5103b503b502935293b3b2210e350222065028b220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303faa0103b503b502935220d29353ba003033b02172936293529353ca00309292503511e173b02032a68016564293ba00303fa77103b503b5029352b2aa003043b5002192dfa6c0c3b2a3b6a2d3b3b2ce3503c2e692c3b3b2ce35026033e2e22136a2704270f1f11000000|@7433,1,@13267,@7434,@7435,@1921,@1921,@1921,@1921,@7432| 17039:D15,1264|fb2022149291f8f7032214352215362a352b3622179291f800032217352218362a352b362e3b3bef2b3b3bef2a2aa00358302da003033c0219303b3bef2d3b3befa0030d3028082e2808303b3befed02013b03033b0230303b3bef2d3b3bef2a2aa303032a0201293328083128082dee293ba003052c2ca30203293ba203051a860402013c27040214303b3bef2d3b3bef2a2aa203051a6f0402013c65293ba0034d302d221e221e221e221e221e221e221e221e221e221e221e221e222b0c50322f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1a29040c342a6964f72702293ba2f81201221003de313b3bef293ba003051a1304024e28072ab1292810b1293cb2292808b4291a0604a503043b5002041a0404103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501adc0328082d28082807ec50221028082d280f34ec502b95502b2707293b3bef293ba003051acf030250292809b1292810b1293cb2292808b4291aaa03a503043b5002041aa803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a8b0328082e2c2809ec502c95502c27083b221422142c6b22213529929103043b50020b2a680122233b3b2ce3505022252706022d32221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1a11030c342a6964f70f01220d03de2d3b3bef293ba003051a2103024e28072ab1292810b1293cb2292808b4291af402a503043b5002041af202103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501aea0228082d28082807ec50220c28082d280f34ec502b95502b2707293b3bef293ba003051acd020250292809b1292810b1293cb2292808b4291a9802a503043b5002041a9602103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a890228082e2c2809ec502c95502c27083b221422142c6b22213529929103043b50020b2a680122233b3b2ce3505022242706022d221f2f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f1aff010c302a6964270702e23203db2a3b3bef293ba003051a1f02024d28072ab1292810b1293cb2292808b4291ae201a503043b5002041ae001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ae80128082d28082807ec503228082d280f34ec502b95502b2707293b3bef293ba003051acc010250292809b1292810b1293cb2292808b4291a8701a503043b5002041a8501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a880128082e2c2809ec502c95502c27083b220d220d2c6b221a3529929103043b50020b2a6801221c3b3b2ce35050260602023b502218270402e92213929103e222133529352d03d3293b3bef293ba003051a3e01024b28072ab1292810b1293cb2292808b429faf2a503043b500203faf1103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a090128082d28082807ec503128082d280f34ec502b95502b2707293b3bef293ba00304faee024d292809b1292810b1293cb2292808b429fa9aa503043b500203fa99103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1faad28082e2c2809ec502c95502c27083b34342c6b22183529929103043b50020b2a6801221a3b3b2ce35050260602023b5022156502013b1f130000000000|@7437,1,@13268,-1,@7435,@7438,72057594037927935,@286,@7436,@7438,@7436,@7438,@7436,@7438,@7436| 17040:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13269,@7432| 17041:D4,144|fb102c929103842c352d362d293ba003033b025f29352a362d382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b270564030b292efa2e0c2b2a69640207292efa232f7e066502013b43000000|@7440,1,@13270,@7439| 17042:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13271| 17043:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13272| 17044:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13273| 17045:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13274| 17046:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13275| 17047:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13276| 17048:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13277| 17049:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13278| 17050:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13279| 17051:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13280| 17052:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13281| 17053:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13282| 17054:D14,200|fb142c230d29299291031a29352a362a35facda003052a68010207292503511e193b6502013b64293ba00346faba299291031a29352a362a35faa5a003052a68010207292503511e193b6502013b64293ba00303fa9a103b503b5029352935fa7fa003043b500203fa8e103b50293765021529352935fa68a003043b500203fa77103b502937643e3369322bfa720c3bfa760c331b10272b343bfa740c293b69fa762a69fa7a2a69fa7e2a692f2a69fa7f2a69322a693b3e3b3b2d6805270e1f0500000000000000|@7449,1,@13283,@61,@1652,@1701,@826,@5658,@5546,@5570,@1323,@5688,@1323,@1323| 17055:D4,16|fb06fa242d2b362e3168051f04000000|@7452,1,@13284,@17056| 17056:D21,408|fb1a2b353ca003d72b362c372d382e392d383b3bef293ba003051a9301024f28062ab1292810b1293cb2292808b4291a8601a503043b5002041a8401103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a5c0128082d28082806ec50220c3828082d280e34ec502b95502b27073e2a692f31392f33371a4e010c31381a5001a003033c021931383b3bef2805a0030e313828081a390128082805ed02013b03051a340102031a37013e2a6931343631220d371a12010c291a2d01691a31012a692c2a691a31012a69302a691a31012a69332a693b3e3b3b2d6805271202b12b362c372d382c383b3bef293ba003051a1601024b28062ab1292810b1293cb2292808b429fab2a503043b500203fab1103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fae228082d28082806ec50343828082d280e34ec502b95502b27073e2a693bfacb0c2f1be8032b33393b220c370c3bfabb0c301be8032b220c363b220e370c3e3169293b69faad2a692c2a69faae2a69fab22a69fab62a69322a69fab72a69220d2a693b3e3b3b2d680527144200000000000000|@7454,1,@13285,@7455,72057594037927935,@286,@7456,@7450,@1902,@7462,@7463,@1323,@1323,@1323,@7455,@5546,@1323,@1323,@7453,@1323,@1323| 17057:D4,24|fb0c2c38293729352a362b3730343434fa1e347b09080000|@7458,1,@13286,@7457| 17058:D16,424|fb1f3b1aba010c2e1be8032b303b340c293b690b0200220e2a1aac010c50293632350b02002c2a1a9e010c5029362e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b03033b02293b221469293b693e221769293b693b3b3b2e2d6805293b691a61012a691a64012a691a67012a69270822131a6601a003033c021722133b3bef3ba0030d221328081a500128083bed02013b03033b02d73b221569293b6922153b3bef293ba003051a3801024e3d2ab1292810b1293cb2292808b4291a2c01a503043b5002041a2a01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082828e4502b2809282ae450221d28082d4034ec502b95502b2707293b3bef293ba00304faf50250293db1292810b1293cb2292808b429fad2a503043b500203fad1103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ae4502c2a3cb12829e4502c95502c27083e2a69293b693b3b3b322d6805293b69fa992a69270a293ba003032a02052a2afa910c293ba00304220c0206220c2afa8a0c3b3e3b3b2d680527101f07000000000000|@7460,1,@13287,@5546,@4342,@1323,@1895,@1323,@294,@1845,72057594037927935,@286,@1843,@1323,@7461,@7459| 17059:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13288,@7461| 17060:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13289,@7459| 17061:D5,264|fb0a2b350a1f003e003e0045003e003e005b003e003e003e003e003e003e003e003e00630066003e009300c5003e003e003e00c8003e00d000d3003e00fd003e003e003e002b35280ba002b92b3629352a362afacb0c030629facd2f7d063b6602a32b3729fac12d7d043c02982b38293c2a9291031f2a352b362a382c030629faa60c02013b2b2a2506250626041e1d3b27040201296564026b2b37293ba003033c0225293c2a9291031c2a352b362b03062afa730c02013b2a2a2505250526031e1b3b66020129656402393c02362b3629fa542d7d043c022b2b36293c2a9291031c2a352b362b03062afa3b0c02013b2a2a2505250526031e1b3b66020129656402013c420000|@7473,1,@13290,@7472,@7471| 17062:D6,136|fb102b352816a003082b3629fa922d7d042b352805a003082b3729fa832d7d042b35280ea003582b36293629352936293ba003033c0203299291033e2a3829fa670c29353da0032c293729fa5b0c29352805a0031b29382938293629353ca0030b2a36293629fa48a06502013b6602013b6502013b29916602013b270402013b4200000000000000|@7474,1,@13291,@7472,@4275,@47| 17063:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa1f220e7b0e030000|@7488,1,@13292,@7487| 17064:D9,184|fb2c220d35220e36220f37221038fac0221022106a0b03002d2afabc0c5029352a362b3722153caa342c2b3bfab23b221e221c221c2220faaf0c22152306fab02a2e6a221723082218392219230d221a3a221b230b221c230c221d37221e38221f352220230a22213622222307fa89222422146a2d2c3131220f220e221331221432220d221322132217680e221122212b222b2221222e222922292229222d0c221b3b3b2ce350221c3b3b2214e3503d22122b6a271f1f0c|@7489,1,@13293,@17066,@5301,@7492,@7494,@17083,@17065| 17065:D5,40|fb093b06fa3a2a692b370c2a353b2d3623090c293ba003032a02072a2afa29317e07270442000000|@7526,1,@13312,@17084,@7525| 17066:D8,144|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c292825b1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c2825ec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7491,1,@13294,@5229,@7490,72057594037927935,@286,@7132| 17067:D5,56|fb152b352c362d37fa4606fa4b063d2b2b6a3b063b063b062a2c2b6a2968013b06296801220c3c32220e220e302f6807270d420000000000|@7493,1,@13295,-1,@7177| 17068:D70,2736|fb2834350a1f003e003e0044003e003e0080033e003e003e003e003e003e003e003e00f2047b06de06ea0756083e003e003e003f0a3e003e005b0a3e00930a3e003e00980a1a800af7620a343629352a362b372c392c35280ea0f82b012c3629352a362b372c382d39220e23092a3b3b2ce3221023062211230d2a2a691a500a2216221d326b1a4f0a2b220c2c1a500a0c2936293ba003033c020329929103492a3729353ea003092936292808a06402013b03082b3b1a2f0a0c021b2b380b02002c1a2b0a2b1a2f0a0c5029352a36291a2d0a0c2b2707220d3b3b2fe350220c3b3b2ce3502965029b2a35291a190aa003033c0217293b3bef280ba0030d2928081a040a2808280bed02013b03043b50026e220d3b3bef293ba003051af1090251292815b1292810b1293cb2292808b4291ae409a503043b5002041ae209103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d280834ec50280831b11aac0928082e2c2815ec502c95502c2708221b3c2223220f2d1aab090c50511a450964270e0210333c22122c1aa0091a95090c501a30092c2211221122112211221122112211221122111a8a090c2a1a8d090c29353da003db29362a372a2d1a85090c29929103c629352211221122121a7c091a81090c2a2a0c642212230d29299291031b29352a362a351a7109a003052a68010207292503511e1a3b6502013b64293ba0034b1a5d09299291031b29352a362a351a4709a003052a68010207292503511e1a3b6502013b64293ba003041a3b09103b503b50293529351a1f09a003043b5002041a2d09103b502937650217293529351a0609a003043b5002041a1409103b50293764221b2a1a10090c2968013c2a3022106b2218382219230c2a3b3b3ce3502b2a0c50260a02023b502a6602e61af008061b0f273eba28062b2b6a3d2e2b6a2d2a1a9c080c29929103c529352213221322141a93081a98080c2a2a0c642214230d29299291031b29352a362a351a8808a003052a68010207292503511e1a3b6502013b64293ba0034b1a7408299291031b29352a362a351a5e08a003052a68010207292503511e1a3b6502013b64293ba003041a5208103b503b50293529351a3608a003043b5002041a4408103b502937650217293529351a1d08a003043b5002041a2b08103b50293764221d2a1a27080c2968013c2a3022126b221a38221b230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce350292709f726073436220c37220d382a220e220e220e220e220e220e220e220e220e1a93070c2c1ae607342212346b341ae5070c2a2a1a8f070c299291f8310129351adb072f2e220f220f1ada070c3b1add070c2d1b10272b22103b1ad9070c293b691ada072a691add072a693b3b3b3b2d68052213221322141a53071a58070c312a0c64293b691ac5072a691ac8072a693b3b3b3b2d6805293b691ac1072a69302a691ac1072a69220f2a691ac0072a691ac3072a693b3e3c3b2d68052220230d29299291031b29352a362a351a0f07a003052a68010207292503511e1a3b6502013b64293ba0034b1afb06299291031b29352a362a351ae506a003052a68010207292503511e1a3b6502013b64293ba003041ad906103b503b50293529351abd06a003043b5002041acb06103b502937650217293529351aa406a003043b5002041ab206103b5029376422292a1aae060c2968013c2a3022206b2226382227230c2a3b3b3ce3502b2a0c50261d02023b502a2706f7b405343629352a362b372c382d390b0200302a1af3060c502935221003051af0060257291af206a003033c0215293b3bef3ba0030c2928081ade0628083bed02013b031531220e23060c293ba003051abf0602022935640221220d2306220e230d2a2a691aba062213221a346b1ab9062b220e2c1a72050c2704220e23092f3b3b2ce32b36293ba003033c020329929103982216031422133c221b220c1a91061a8e050c501a2905027e343b3b2fe32d3629929103042935021e2e38291a89050c29353da0030829362968016402013b293ba0912991270429033a2f3729353ea003092936292808a06402013b0308303b1afd040c021b30380b02002c1a39062b1afd040c5029352a36291afb040c2b270764021222163c221e220f1a22061a0f050c501aaa046602553b3369221423103b2a0c3d2a69293b692d2a691a510506221e3eba28062b2b6a22152a2e6a66221c0c2213221b22121aed050c5022132218221c22133b1ae7050c5022132a6922200c5022123b3b2ce35029382707343b3b2ce35029270ff72b043436220c37220d38291aaa0433333333221322132213221322131ab1050c1ab5050c291ab8050c3b2a2f6a2e030329020629063c2a69643e2d2b6a3003032902161ac204061b0f273eba28062b2b6a2b3b3b2fe32a2704303b3b2ce350292709f7c8033436220c37220d382b220e220e3c220e220e220e220e220e220e1a36040c2b220f220f220f220f220f220f220f220f220f1a1f040c2a2a1a29040c29929103c52935220c220c220d1a20041a25040c2a2a0c64220d230d29299291031b29352a362a351a1504a003052a68010207292503511e1a3b6502013b64293ba0034b1a0104299291031b29352a362a351aeb03a003052a68010207292503511e1a3b6502013b64293ba003041adf03103b503b50293529351ac303a003043b5002041ad103103b502937650217293529351aaa03a003043b5002041ab803103b5029376422162a1ab4030c2968013c2a30220d6b2213382214230c2a3b3b3ce3502b2a0c270a02013b2c2707f7bc023436220c37220d381a6c041a3903220f220f220f220f220f220f220f220f220f680b291a59041a5e046a1a62041a67041a6c042e221468052d2a2c220e220e1a65040c29353ba003051a8b020212293b6928052a1a58041a5d041a6204680564303b3b2ce350292708f750023436220c38220d39293c1a7e020c291ad1020c29353da003dd29362a372a1a3a041ac7020c29929103c62935220e220e220f1abe021ac3020c2a2a0c64220f230d29299291031b29352a362a351ab302a003052a68010207292503511e1a3b6502013b64293ba0034b1a9f02299291031b29352a362a351a8902a003052a68010207292503511e1a3b6502013b64293ba003041a7d02103b503b50293529351a6102a003043b5002041a6f02103b502937650217293529351a4802a003043b5002041a5602103b5029376422182a1a52020c2968013c2a3022106b2215382216230c2a3b3b3ce3502b2a0c50260a02023b502a6602e81a3202061b0f273eba28062b2b6a3d1a53032b6a2d2a1adc010c29929103c529352210221022111ad3011ad8010c2a2a0c642211230d29299291031b29352a362a351ac801a003052a68010207292503511e1a3b6502013b64293ba0034b1ab401299291031b29352a362a351a9e01a003052a68010207292503511e1a3b6502013b64293ba003041a9201103b503b50293529351a7601a003043b5002041a8401103b502937650217293529351a5d01a003043b5002041a6b01103b50293764221a2a1a67010c2968013c2a3022126b2217382218230c2a3b3b3ce3502b2a0c270a02013b2c27062e3b3b2ce3502927060267343629220c220c220c220c220c220c220c220c220cfadb220d7b0c0d3436220c372aface32323232221222122212221222121a45020c293c1a47020c291a4a020c3b2a3c6a3e2c2b6a2e3b3b2ce35029270702131a3b02020efae7061b0f273eba28062b2b6a651f0a00|@7496,1,@13296,@749,@17069,@7323,@7136,@7156,@7497,@4254,@7157,@5339,@7498,72057594037927935,@286,@7132,@7499,@7494,@4275,@7407,@7450,@7451,@61,@1652,@1701,@826,@5658,@1296,@17071,@7187,@7500,@7448,@5546,@5570,@1323,@7501,@7466,@7467,@1323,@1323,@1323,@7503,@4342,@5335,@294,@17073,@7323,@7505,@7506,@7507,@5230,@7255,@7508,@4172,@4176,@17076,@5712,@7511,@7514,@7515,@369,@7516,@1346,@1344,@885,@3587,@7495,@3506,@3508,@3546| 17069:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13297,@7132| 17070:D3,8|fb023b4200000000|@7170,1,@13298| 17071:D5,40|fb09293823082a38230d2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13299,@17072,@7188| 17072:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13300,@7132| 17073:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13301,@7132| 17074:D3,8|fb023b4200000000|@7170,1,@13302| 17075:D5,96|fb15220c9291034e220c35220d362a352b362c3829220c220c220c220c220c2215221522152215221a0c2b3b3b2ce3502cfa450c292b692f2214221422142214221422142214221422142214fa320c2a2a69270902013b1f0b00000000000000|@7509,1,@13303,@4168,@7508| 17076:D3,40|fb0d2b2a372b382c392d3a2e23062f230730230831230932230a3336220c7b0c0300000000000000|@7510,1,@13304| 17077:D4,8|fb03fa1c2c694200|@7512,1,@13305,@17078| 17078:D4,24|fb082b352c362d372c36352d3636fa20307b070300000000|@7513,1,@13306,@7448| 17079:D5,96|fb1c2f929103432f353036293ba003072f352b2a2f7d0a2f353036313733353436220c37220d38220e3932310c293c3434221232221733220f221622102210220d220ffa33221b7b1012fa34061b0f273eba28062b2b6a651f05000000000000|@7518,1,@13307,@7517,@1296| 17080:D35,1064|fb40220d9291f81804220d35220e362a220f0c22122a1a27040c299291f8db0329352210230d29299291031b29352a362a351a1304a003052a68010207292503511e1a3b6502013b64293ba0034b1aff03299291031b29352a362a351ae903a003052a68010207292503511e1a3b6502013b64293ba003041add03103b503b50293529351ac103a003043b5002041acf03103b502937650217293529351aa803a003043b5002041ab603103b5029376422163ca0036e22123b3bef293ba003051aa503025b293eb1292810b1293cb2292808b4291a9903a503043b5002041a9703103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a28082d280834ec50280831b12c2a2820e4502c2a3cb12831e4502c2a3db1283ae4502c95502c270864f7390122123b3bef293ba003051a4f030263293fb1292810b1293cb2292808b4291a2b03a503043b5002041a2903103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a28082d280834ec50280831b12c2a2873e4502c2a3cb12820e4502c2a3db12831e4502c2a3eb1282de4502c95502c270822183c1aec020c2a3b3bef2a3b3bef2a3ba003032b0256293ba003032c024e2a2ab1292810b1293cb2292808b4291aa902a503043b5002041aa702103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708293b3bef293ba003051a8102024a293cb1292810b1293cb2292808b4291a4d02a503043b5002041a4b02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a283ae4502c95502c270827073e2a69221322191a31020c2922142e22151a2f020c3b3b3b3b2d68053b1a2b020c221d1b10272b22173b1a26020c293b691a27022a691a2a022a691a2d022a692f2a691a2d022a69342a693b3e3b3b2d68052222221e69221d0c22263caa293c1ac8010c291a1302691a17022a6922262a6927041a14020c29221922186a642a0c642223221f22201a08021a0d020c22142a0c643e221e692a3b691a05022a691a08022a693b3b3b3b2d6805293b691a01022a69312a691a01022a69342a691a01022a69332a693b3e3c3b2d68052231230d29299291031b29352a362a351a0a01a003052a68010207292503511e1a3b6502013b64293ba00346faf7299291031a29352a362a35fae2a003052a68010207292503511e193b6502013b64293ba00303fad7103b503b5029352935fabca003043b500203facb103b50293765021529352935faa5a003043b500203fab4103b50293764222c2a1a70010c2968013c2a3022306b2237382238230c2a3b3b3ce3502b2a0c50223c3caa1a56012a222f223e223e223e223e223e223e223e223e223e223e223e1a4201223f7b103f22123caa22142a2e221422142214221422142214221422142214221422141a1c0122157b1015220f1f0e000000|@7520,1,@13308,@7407,@61,@1652,@1701,@826,@7521,72057594037927935,@286,@7522,@801,@383,@1975,@7523,@5546,@5570,@1323,@5688,@1323,@1323,@7519,@357,@284,@7450,@7451,@7466,@7467,@1323,@1323,@1323,@5658,@749,@7517| 17081:D9,192|fb112c3ba40304facf02b12e929103ab2e352f36293ba0030b2a2f692e0c293b696402942a2f692e0c30fab4a003033c0214303b3bef3ca0030b302808faa128083ced02013b03033c023f30fa9aa003033c0214303b3bef3ca0030b302808fa8728083ced02013b03033c021d30fa80a003033c0214303b3bef3ba0030b302808fa6d28083bed02013b913c2a3b6a3e3369293b692b2a692e2a693b3b3b3b2d6805220d3cab3222102b2210fa4a0cfa4f2a692c2a69270b6502013b1f040000|@7524,1,@13309,@5577,@369,@384,@294,@7523,@1323| 17082:D4,72|fb10220c92910336220c35220d362a3232323232221222122212221222170c2a220f220f220f220f220f220f220f220f220f220ffa2a0c2a2a69270402013b1f0b00000000000000|@880,1,@13310,@7495| 17083:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13311| 17084:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13313| 17085:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13314,@7525| 17086:D4,8|fb03fa1c2c694200|@7528,1,@13315,@17087| 17087:D4,24|fb082b352c362d372c36352d3636fa20307b070300000000|@7530,1,@13316,@7529| 17088:D17,240|fb1f2c230d29299291031a29352a362a35faf5a003052a68010207292503511e193b6502013b64293ba00346fae2299291031a29352a362a35facda003052a68010207292503511e193b6502013b64293ba00303fac2103b503b5029352935faa7a003043b500203fab6103b50293765021529352935fa90a003043b500203fa9f103b502937643e3369323533362c3cab2a2afa930c2e3cab2d2afa8b0c293b69fa8d2a69fa912a69fa952a692f2a693b3b3b3b2d68053bfa8e0c22151b10272b22163bfa8a0c293b69fa8c2a69fa902a69fa942a692f2a69fa952a6922142a693b3e3b3b2d680527191f0500000000|@7531,1,@13317,@61,@1652,@1701,@826,@5658,@1323,@2689,@1323,@5546,@5570,@1323,@5688,@1323,@1323| 17089:D5,40|fb09293823082a38230d2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13318,@17090,@7188| 17090:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13319,@7132| 17091:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13320,@7132| 17092:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13321,@7132| 17093:D5,40|fb0a2f9291031b2f3530362a31313131fa2e0c2a32323232fa2e0c2a2a69270402013b1f05000000|@880,1,@13322,@7542,@7541| 17094:D6,72|fb0f2f35303631373238fa5432346a2afa562bfa5b0c2c353ba003162c36333ba003032d0209333529363f2c2b6a656402012c2f2f2b2d220d3b3b680727071f0500000000000000|@7544,1,@13323,@17095,@7543,@4261| 17095:D3,96|fb0a2b38293629353ca0030a2b373629353ca06402013b03102a3629362d373629362b2aa0270402272a3629353ba0030a2c373629353ba06402013b03102b3629382e373629382b2aa0270402013b6403042b3602012d654200000000000000|@7545,1,@13324| 17096:D3,8|fb022b4200000000|@7546,1,@13325| 17097:D7,104|fb0f2d3b3bef293ba00304fa73024c29282bb1292810b1293cb2292808b429fa67a503043b500203fa6610292841bd2a3cb22a2a3b3bf02b3b3b32f050220c28082d280834ec50280831b1fa3328082e2c282bec502c95502c27082b363c2d37302dfa34327b0707|@7547,1,@13326,@5828,72057594037927935,@286,@7132| 17098:D18,456|fb2a2f35303631373239333a2b9291031c2b35291ac901220c220c220f6b220c1ac5010c3d2a1ac7016a6502031ac0013b2c693423103b2a0c3d2a69293b692d2a693035280ea0f82701303629352a362b372c382d39221723062218230d2a2a691a9401221a221a306b1a93012b332c1a95010c29382a36293ba003043b5002c2343b3bef293ba003051a830102483c2ab1292810b1293cb2292808b4291a7701a503043b5002041a7501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082828e450221328082d280934ec502b95502b2707293b3bef293ba003051a45010250292816b1292810b1293cb2292808b4291a2001a503043b5002041a1e01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a010128082e2c2816ec502c95502c270822213c2222220f2dfaf10c502604333b3b2ee350323b3b2de350221e2309313b3b2ce3503b06fadb063d2b2b6a221c3b2b3122153b3b68072711022530352808a003043b500203fac2103b503b06fab3063d2b2b6a220e3b2b220c303b3b680766343b3b2ce350220c336922100c50220c221234fa9d0c50220c22112213220c3cfa980c50220c2a6922133722107d14000000|@7550,1,@13327,@17099,@7187,@3699,@17101,@7330,@7136,@365,72057594037927935,@286,@7551,@7132,@7177,@7549,@5230,@7255| 17099:D5,40|fb09293823082a38230d2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13328,@17100,@7188| 17100:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13329,@7132| 17101:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13330,@7132| 17102:D15,376|fb172b230d29299291031b29352a362a351a7c01a003052a68010207292503511e1a3b6502013b64293ba003471a6801299291031b29352a362a351a5201a003052a68010207292503511e1a3b6502013b64293ba003041a4601103b50293529351a2c01a003043b5002041a3a01102937650215293529351a1501a003043b5002041a230110293764293da003792f1a1e010c2929352806a003033c025e29352805a0034829362a382938293629353da003352b38293629353da003043b500203faf51029362a372a31faf40cfaf92a690b02002e2d2bfaf70c5029352709250526041e4f3b02013b2704020f29353ea003082936293ba06402013b6403033b0202fad4640269293ca003632ffaa10c2929352805a0034829362a382938293629353da003352b38293629353da003043b500203fa821029362a372a31fa810cfa9e2a690b02002e2d2bfa840c5029352709250526041e453b02013b2704020429353da0640304fa7f02013b6402013b6643000000000000|@7556,1,@13331,@69,@1652,@1701,@826,@4275,@4256,@2100,@17103,@4254,@7557,@17104,@7555| 17103:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13332| 17104:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13333| 17105:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa1f220e7b0e030000|@7488,1,@13334,@7487| 17106:D13,280|fb21343caa1a28012a692210350c1a27012b220e6a2210350c1a2401220d220d6a0b03002d2a1a1f010c5029352a362b37221a299291031b29352a362a2218220f2219311a09010c50292503511e1a3b6502013b64221b299291033129352a362a221e221e221b2212221b221f221e220c220f221f221f221f221f221f222dfad70c50292503511e303b6502013b64221c299291037529352a362a37293529352a382b392c23062a299291031829352a362a353ba003042a360207292503511e173b650202fa9964fa9e222022226a2d22183c22242e2e2225fa950c502b3ba00303fa94103b503b502b35293b3b3be3502f31692224370c50313b3b33e35032250c260b1e733b270b02013b64270d1f0e00000000000000|@7563,1,@13335,@17107,@17108,@17110,@5301,@7568,@7574,@5229,@17129,@7562,@1921| 17107:D6,88|fb142b3629352a3628062b2b6a65fa600c29352806a003043b500203fa5a1029362a37293fb7293ba0912b3cb7293ba091fa4d0632363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270f420000|@7564,1,@13336,@4275,@4266,@1296| 17108:D7,112|fb162b352c362a2c37230c0c293ba003532a352b3628062b2b6a65fa6b0c29352806a003043b500203fa651029362a37293fb7293ba0912b3cb7293ba091fa580634363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270e02092935292cfa36317e07664200|@7564,1,@13337,@4275,@4266,@1296,@7565| 17109:D8,192|fb122c352d3628062b2b6a65faca0c29352806a003043b500203fac41029362a372e352f3628062b2b6a65faab0c29352806a003043b500203faa51029362a372c3ebb29920305293ba2020529942811a00308fa932afa980c020129299203043b500203fa92102b3ebb29920305293ba2020529942811a00308fa6c2afa710c020129299203043b500203fa6b102b2aa60313220c35220d3628062b2b6a343b3b2ce3660211220d35220e3628062b2b6a313b3b2ce366270a43000000000000|@7566,1,@13338,@4275,@4266,@796,@797,@792| 17110:D8,144|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c29282bb1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c282bec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7567,1,@13339,@5229,@5828,72057594037927935,@286,@7132| 17111:D11,208|fb282f3629929103043b500203fad9103b50293529352a37333734392c3629352a373b2a69220f23103b2a0c3d2a69293b692d2a69fab90622143eba28062b2b6afab506faba063d2b2b6a3b063b063b062a2c2b6a2968013b0629680122143d32220d2211302f6807221a353b2a299291031229362b3caa292b25042504511e113b6502012a6522193b3b2ce32a3ba0030e22253c2225221ffa6dfa730c02013b22192227221ffa6f0c5022192225222822203bfa6a0c50221c3b3b30e35022192e69222422247d2800000000000000|@7570,1,@13340,@7571,@1296,-1,@7177,@7569,@7132,@5230,@7255| 17112:D27,528|fb31221137293522133522143622153822163a1a1202061b0f273eba28062b2b6a2e299291033729352a362a221d221d220d221e221e221e221e221e2212221f221f221f221f221f221f221f221722151add010c50292503511e375102023b505034299291034f29352a362a372935293a293ba003041abf01103b503b502935293529352b372211352b2a1ab2010c2b35293ba003032a02062a2a1aaa010c2d3b3b2ce3502f3b3b3be35034250e260d1e4e260d02023b505030382a2a1a90010c299291f842012935221d3b69280c2a221f221f220c68051a7d012a30221f221e1a7c010c220d351a3d01061a7901061a7d01062c2b2d22112d6805280e2a692213381a72012b2b222722261a51010c2225222422251a67011a6c010c220c2a0c64293b691a68012a691a6b012a693b3b3b3b2d6805293b691a64012a69302a691a64012a6922112a691a63012a691a66012a693b3e3c3b2d68052232230d29299291031b29352a362a351a5201a003052a68010207292503511e1a3b6502013b64293ba0034b1a3e01299291031b29352a362a351a2801a003052a68010207292503511e1a3b6502013b64293ba003041a1c01103b503b50293529351a0001a003043b5002041a0e01103b50293765021529352935fae8a003043b500203faf7103b5029376422192afaf40c2968013c2a3022276b2238382239230c2a3b3b3ce3502b2a222f7d3e3b270b1f100000|@7576,1,@13341,@1296,@7577,@1921,@7594,@7595,@7407,@7475,@7448,@5335,@7596,@7598,@7450,@7451,@7466,@7467,@1323,@1323,@1323,@7575,@61,@1652,@1701,@826,@5658| 17113:D40,976|fb572214352215362216372b352c362d38221a3b693b061ace03061ad203061ace03062a2e2d34302e6806293b69280c2a22222222220e680532362220382a3b3b2ce31ab20322222e6a0b03002d2a1aae030c5029352a362b3722283caa2216222b222a222a222a302f1a9b030c299291032329352a36293ba003032a02142b3c1a8c030c291a8f030c3b2a3c6a3e2c2b6a666502031a570322273b3b2ce3222a23061a7a032a222a316b222c2308222d39222e230d222f3a2230230b2237362237362233230c1a5e032a2c2e6b2235372236382237352238230a223936223a23071a4b03223c2239221a6b2d2c313122122211221631221732220d22162213221a680e221622352b223122322245223d223d223d22410c222b9291f85801222b35291a12032244224122436b22441a0e030c2b2a1a10030c299291f8320129351a0c0322342f224822471a0a030c3b1a0d030c2d1b10272b22483b1a09030c293b691a0a032a691a0d032a693b3b3b3b2d6805224c224b224c1a03031a08030c312a0c64293b691a05032a691a08032a693b3b3b3b2d6805293b691a01032a69302a691a01032a69220f2a691a00032a691a03032a693b3e3c3b2d68052259230d29299291031b29352a362a351aef02a003052a68010207292503511e1a3b6502013b64293ba0034b1adb02299291031b29352a362a351ac502a003052a68010207292503511e1a3b6502013b64293ba003041ab902103b503b50293529351a9d02a003043b5002041aab02103b502937650217293529351a8402a003043b5002041a9202103b50293764223e2a1a8e020c2968013c2a30224e6b225f382260230c2a3b3b3ce3502b2a0c50261d02023b502a6602012922353b3b2ce322182b1a64020c2922371abd010c299291f8320129351a590222292d224922481ab7010c3b1aba010c223a1b10272b22493b1ab5010c293b691a3e022a691a41022a693b3b3b3b2d6805224d224c224d1aaf011ab4010c312a0c64293b691ab1012a691ab4012a693b3b3b3b2d6805293b691aad012a69302a691aad012a69220f2a691aac012a691aff012a693b3e3c3b2d6805225a230d29299291031b29352a362a351a9b01a003052a68010207292503511e1a3b6502013b64293ba0034b1a8701299291031b29352a362a351a7101a003052a68010207292503511e1a3b6502013b64293ba003041a6501103b503b50293529351a4901a003043b5002041a5701103b502937650217293529351a3001a003043b5002041a3e01103b50293764223f2a1a3a010c2968013c2a30224f6b2260382261230c2a3b3b3ce3502b2a0c271d02013b3b27361f13000000000000|@7579,1,@13342,@5335,@749,@17114,@5301,@7582,@3506,@3508,@17116,@17117,@17118,@17123,@7187,@7407,@7586,@7448,@5546,@5570,@1323,@7501,@7450,@7451,@7466,@7467,@1323,@1323,@1323,@7587,@61,@1652,@1701,@826,@5658,@7589,@7590,@1323,@7591,@7578| 17114:D8,144|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c292827b1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c2827ec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7581,1,@13343,@5229,@7580,72057594037927935,@286,@7132| 17115:D6,56|fb0e3192910327313532362a2f2f3bfa3f3b220f220f220f220ffa3c0c2a343434343434fa3a0c2a2a69270402013b1f0700000000000000|@880,1,@13344,@7492,@7494,@7582| 17116:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13345| 17117:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13346| 17118:D7,64|fb0d3b06fa522a692b380c2a353b06fa4f2a692e370c2a353b303623090c293ba003032a02052a2afa3e0c293ba003032e02082e2afa39220c7e0b2708420000|@7584,1,@13347,@17119,@17120,@7585,@7583| 17119:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13348| 17120:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13349| 17121:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13350,@7585| 17122:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13351,@7583| 17123:D5,40|fb09293823082a38230d2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13352,@17124,@7188| 17124:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13353,@7132| 17125:D4,32|fb072c929103102c352d36292efa290c3d2c2b6a6602012b4300000000000000|@2425,1,@13354,@7589| 17126:D4,32|fb072c929103132c352d362a2e692a2ffa260c2a2a69270402013b4300000000|@880,1,@13355,@7594| 17127:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13356,@7595| 17128:D3,8|fb023b4200000000|@7597,1,@13357| 17129:D8,144|fb082937230d29299291031a29352a362a35fa94a003052a68010207292503511e193b6502013b64293ba00342fa81299291031a29352a362a35fa6ca003052a68010207292503511e193b6502013b64293ba00303fa61103b5029352935fa48a003043b500203fa5710293765021329352935fa33a003043b500203fa42102937642c362afa41307e06000000000000|@7600,1,@13358,@61,@1652,@1701,@826,@5658| 17130:D8,208|fb1d2e230d29299291031a29352a362a35fad5a003052a68010207292503511e193b6502013b64293ba00346fac2299291031a29352a362a35faada003052a68010207292503511e193b6502013b64293ba00303faa2103b503b5029352935fa87a003043b500203fa96103b50293765021529352935fa70a003043b500203fa7f103b502937643c33690b02002c22102b22112210220c362215221022122214220e22123722133822143922153a22162306221723072218230822192309221a230afa440c503b27071f070000000000|@7602,1,@13359,@67,@1652,@1701,@826,@7601| 17131:D22,1216|fb2f22153522163622161acb040c29353ea0033b2936291ac60422182218221822182218221822182218221822182218221822182218221822182218222c1aa7040c22182a35452a36466464f76d0429353da0036729362a370b0200221d2d2b221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d1a5b040c5029352a362a2a6929312220222022202220222022202220222022202220222022202220222022202220222022201a290422217b162129352805a003e729362a382938293629353da0039f2b38293629353da003043b5002041a0e04103b5029362a372a311a0a040c1a0e042a690b02002e2d2b1a0b040c5029350b020022292d2b222922292229222922292229222922292229222922292229222922292229222922291ab3030c5029350b020022142a1aa603222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d222d22171aaf030c502935222c2a45221846271202352c1a6c03221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b222f1a7d030c221b2a35452a3646642704f7120329352806a0f8ff0229362a37293ebb29920305293ba2020529942811a0030a1a54032a1a58030c020129299203043b5002041a5103103b5029221aa803422b3ebb29920305293ba2020529942811a0030a1a22032a1a26030c020129299203043b5002041a1f03103b50291b0f27a091030a2e3529353fa0916402013b6502013b03962e91290306221a3cab02031b0f272d3db7293ba09103092b03033202013b02013b031a1ae5021aea02221d221d221d221d221d221d1ae3020c503b0201322f3fb7293ba0912e030a313db7293ba0916402013b323cb7293ba0911ac60206313eba2e03033f02013b2a2ab82f03033d02013b2a2ab82930b82806302b6a221435313b3b2ce35022153b3b2de350220e22186927120202221c2d3522143ca0f8b20129353fa0f8890129362214352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092215352968016402ed2a293ba003033b022929352a362a38293629353ca0030b2a362936221b2aa06502013b03033c02082b250526041e2c3b27046403062213680102b22a293ba003033b022929352a362a38293629353ca0030b2a36293622192aa06502013b03033c02082b250526041e2c3b27046403062211680102772a293ba003033b022929352a362a38293629353ca0030b2a36293622172aa06502013b03033c02082b250526041e2c3b2704640306220f6801023c2a293ba003033b022929352a362a38293629353ca0030b2a36293622152aa06502013b03033c02082b250526041e2c3b2704640306220d680102013b293ba003041a1501103b503b502935293528053b2b2d3b6805343b3b2ce3502606022029353ea003181af9001afe00221c221c221c221c221c221cfad00c5002023b5002023b502e352b2a221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221f221ffa3422207b1620221822172a35452a364664661f1400|@7604,1,@13360,@4275,@7601,@7605,@4256,@2100,@17133,@4254,@7606,@7607,@796,@797,@792,@4159,@7608,@7609,@1296,@7611,@4159,@7603| 17132:D4,120|fb1d221592910369221535221636292217221722172217221722172217221722172217221722172217221722172217221722172217fa590c2b360b02002d2d2b221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d221d222f0c5029352a362a2a69270902012b1f1400000000|@2425,1,@13361,@7605| 17133:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@13362| 17134:D4,128|fb1f2216929103692216352217360b02002c2a221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221b221bfa5d0c5029352a362a2a692931221f221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e221e2230221e7b161f22152c453c461f1500000000000000|@2425,1,@13363,@7606| 17135:D4,120|fb1c221592910367221535221636292217221722172217221722172217221722172217221722172217221722172217221722172217fa590c0b02002c2f2b221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c221c222e0c5029352a362a2a69270802012b1f14000000000000|@2425,1,@13364,@7607| 17136:D10,216|fb173bfaeb0c31230d29299291031a29352a362a35fae1a003052a68010207292503511e193b6502013b64293ba00346face299291031a29352a362a35fab9a003052a68010207292503511e193b6502013b64293ba00303faae103b503b5029352935fa93a003043b500203faa2103b50293765021529352935fa7ca003043b500203fa8b103b502937643e220e69332b2f220c3b22100c3e220f69293b69fa772a692c2a69fa782a692f2a693b3e3b3b2d68053b22110c2968013c2a2d22146b2217382218230c2a3b3b3ce3502b2a22157d1c00000000|@7610,1,@13365,@5546,@61,@1652,@1701,@826,@1323,@1323| 17137:D4,40|fb0f2b2a362b372c382d392e3a2f230630230731230832230933230a34230bfa1f220e7b0e030000|@7488,1,@13366,@7487| 17138:D4,96|fb16220e92910351220e35220f362a352b362c3829312213221322132213221322132213221322132213221e0c2b3b3b2ce3502c2a692e221522152215221522152215221522152215221522152215fa270c2a2a69270802013b1f0d00000000|@880,1,@13367,@7615| 17139:D3,40|fb0f2b2a372b382c392d3a2e23062f230730230831230932230a33230b34230c220c36220e7b0e03|@7616,1,@13368| 17140:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13369| 17141:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13370| 17142:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13371| 17143:D5,40|fb093b06fa3a2a692b370c2a353b2d3623090c293ba003032a02072a2afa29317e07270442000000|@7618,1,@13372,@17144,@7617| 17144:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13373| 17145:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13374,@7617| 17146:D3,8|fb023b4200000000|@7618,1,@13375| 17147:D3,32|fb082b362a38352a2a692c383b3b2ce3502e2d370c502e2d36372f7d06000000|@7620,1,@13376| 17148:D3,16|fb042b2a370c502b2a36382c80000000|@7620,1,@13377| 17149:D3,16|fb042b2a370c502b2a36230a2c800000|@7620,1,@13378| 17150:D7,104|fb112e929103582e352f362a352b362c3732230dfa6a33332d6bfa6c2b2f2cfa6f0c2d3b3b2ce32a3ba003033b02092a35292f6929680165293ba0030e31220f220f220ffa5222107b0610293532221022102210fa420c2a2a6965270a02013b1f04000000000000|@2464,1,@13379,@17151,@7040,@7139,@7621| 17151:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13380,@7132| 17152:D10,224|fb1730353137323829299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b0315293529363e2a693c220e69293b692b2a69270502073c3469293b6964faa033220c220f2d6805fa9e343422102e6805fa9d220c3422112f6805292c2c6a313b3bef293ba00304fa8e0249293cb1292810b1293cb2292808b429fa83a503043b500203fa82103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221028082d280834ec50280831b12c2a282ee4502c95502c2708323533392a2e2b3c2f2e3bfa4e0c3b270e1f06|@7623,1,@13381,@17154,@17156,@17153,@371,72057594037927935,@286,@7193| 17153:D5,32|fb082b352c36292c382d39fa2b0c2c372c2bfa2c0c502b2a692d36372f7d0600|@7625,1,@13388,@7145,@854| 17154:D5,40|fb0b2b352c3629352a36292e382f39fa2f0c2b2a692f372f2bfa2d0c502e2a69303638327d090000|@7625,1,@13382,@7624,@854| 17155:D5,32|fb082d929103172d352e362a2f2ffa280c2a3030fa2a0c2a2a69270402013b44|@880,1,@13383,@7145,@7624| 17156:D5,32|fb082b352c36292c382d39fa2b0c2c372c2bfa2c0c502b2a692d36230a2f7d06|@7625,1,@13384,@7626,@854| 17157:D5,88|fb0d2d352e362f3730382b353ca0031a2b363c2a692b3ba00303310205312cfa4f0c2f2b2f2c6b6602252b353ba0031e2b3631363f2b2b6a2c3ba00303320205322dfa340c302b302c6b2704020131270444000000000000|@7628,1,@13385,@7629,@7627| 17158:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13386,@7629| 17159:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13387,@7627| 17160:D3,8|fb032c2c69440000|@7631,1,@13389| 17161:D3,8|fb032c2c69440000|@7631,1,@13390| 17162:D3,8|fb032c2c69440000|@7631,1,@13391| 17163:D4,80|fb12220e92910342220e35220f362a2e2210221022102210221022102210221022102210221b0c2a221122112211221122112211221122112211221122112211fa260c2a2a69270402013b1f0d000000|@880,1,@13392,@7639| 17164:D8,144|fb112b3729299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c29282bb1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c282bec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7547,1,@13393,@5229,@5828,72057594037927935,@286,@7132| 17165:D7,56|fb0a2e9291032c2e352f362a372992910311293529fa393232220c6b32fa390c640202fa3b2b323232fa3d0c2a2a69270502013b1f040000|@880,1,@13394,@17166,@7187,@1296,@7640| 17166:D5,40|fb09293823082a38230d2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13395,@17167,@7188| 17167:D4,16|fb0829363c2b372c382ffa1c307b0703|@7133,1,@13396,@7132| 17168:D6,256|fb18303531363239333a3423063b2c693423103b2a0c3d2a69293b692d2a692211353ca003193332faee6a30faf269323b2b2d22150c220d332e2c6b6602932211352805a003622211362212382a322a3ba00305293ba002342a352b362b929103292b352c362c352806a0030a2c362b352a2aa06502013b030d2b2a2506250626041e333b02013b6502013b6565299103033b02112a38293629353da003033b02032a6801656602013b293ba003193433fa656a31221469333b2b2d22160c220e342f2c6b6602092935220c322d2c6b646434221234fa500c50342a6922100c50293b69343b3b2ce3502a3b69220d2a696422103822107d1500000000000000|@7642,1,@13397,@294,@1296,@5230| 17169:D16,256|fb2a343caa1a10012a69220f350c1a0f012b220e6a220f350c1a0c01220d220d6a0b03002d2a1a07010c5029352a360b03003b2a1a01010c5029352a362b37221f312c221d221c2220221f2217faf10c2922212a9291030529929102013b03382a352b362b352c362c2b22243322292229220f2225222922262226222622232227222d222ffac10c502b2a2506250626041e3e3b270402013b652a22222a3ba00312293ba003043b500203faa3103b503b50023f2a352b362b929103043b500203fa95103b502b352c362a362b372afa8f0cfa94222522276a30221d2c22292f2e222afa8b0c502f2e250a250a26081e52260851fa82221e6929220c22177d23|@7644,1,@13398,@17171,@17172,@17173,@5301,@5198,@7647,@7650,@2430,@2430,@7471,@17183,@7562,@17170| 17170:D4,40|fb092b352c36292306293ba00303fa30103b502935293b3b3be3502c2c692e3637307d0700000000|@7658,1,@13412,@1921| 17171:D6,88|fb142b3629352a3628062b2b6a65fa600c29352806a003043b500203fa5a1029362a37293fb7293ba0912b3cb7293ba091fa4d0632363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270f420000|@7645,1,@13399,@4275,@4266,@1296| 17172:D7,112|fb162b352c362a2c37230c0c293ba003532a352b3628062b2b6a65fa6b0c29352806a003043b500203fa651029362a37293fb7293ba0912b3cb7293ba091fa580634363eba2d03033f02013b2a2ab8293db8292fb828062f2b6a220c3b3b2ce3270e02092935292cfa36317e07664200|@7645,1,@13400,@4275,@4266,@1296,@7565| 17173:D8,144|fb112b3929299291031829352a362a353ba003042a360207292503511e173b650202fa84642f3b3bef293ba00304fa80024c29282bb1292810b1293cb2292808b429fa74a503043b500203fa7310292841bd2a3cb22a2a3b3bf02b3b3b32f050220e28082d280834ec50280831b1fa4028082e2c282bec502c95502c27082d363c2f372e2dfa41347b07090000000000|@7646,1,@13401,@5229,@5828,72057594037927935,@286,@7132| 17174:D7,80|fb12329291033f323533362a352b382c39fa552b220e2c221168052c2a333bfa4f2f2212221222122212fa4c0c2e2210221022102210221022102210fa420c2a2a69270802013b1f0800000000000000|@880,1,@13402,@17175,@7648,@7494,@7647| 17175:D3,40|fb082b362c2b390c502a3803072c2b370c5002023b502a36352a2a692c363b3b2ce3664200000000|@7649,1,@13403| 17176:D5,56|fb152b352c362d37fa4606fa4b063d2b2b6a3b063b063b062a2c2b6a2968013b06296801220c3d32220e220e302f6807270d420000000000|@7493,1,@13404,-1,@7177| 17177:D25,536|fb3522103522113622123722133929030e221323061a18022a22156a64020422132306221423082215392216230d22173a2218230b221736221736221b230c1af6012a2c2e6b221d37221e38221f352220230a222136222223072210030a1adf01222422216a0204222323092d2c313122122211221631221732220d22162213221a680e221b221b2b22172218222422242224222422290c22282a1aaa010c299291f81a0129351aa6012219222c222522201aa3010c1aa70122192e222622211a95010c2224221f22201a9b011aa0010c2c2a0c64293b691a9d012a691aa0012a693b3b3b3b2d6805293b691a99012a69302a691a99012a69332a691a99012a691a9c012a693b3e3c3b2d68052231230d29299291031b29352a362a351a8801a003052a68010207292503511e1a3b6502013b64293ba0034b1a7401299291031b29352a362a351a5e01a003052a68010207292503511e1a3b6502013b64293ba003041a5201103b503b50293529351a3601a003043b5002041a4401103b502937650217293529351a1d01a003043b5002041a2b01103b50293764222d2a1a27010c2968013c2a30222d6b2237382238230c2a3b3b3ce3502b2a0c271802013b22150339221729352816a0030c2936292502501e0d3b64021e2935280ba003033c021429352805a0030c2937292502501e2a3b6402013b6429916402013b031022223c221d2219fac7facd22207b072b3b27191f10000000|@7652,1,@13405,@17178,@17179,@17180,@7407,@7655,@7448,@7586,@7450,@7451,@7466,@7467,@1323,@1323,@1323,@7656,@61,@1652,@1701,@826,@5658,@7651,@7132| 17178:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13406| 17179:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13407| 17180:D5,40|fb093b06fa3a2a692b370c2a353b2d3623090c293ba003032a02072a2afa29317e07270442000000|@7654,1,@13408,@17181,@7653| 17181:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@7400,1,@13409| 17182:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13410,@7653| 17183:D8,144|fb082937230d29299291031a29352a362a35fa94a003052a68010207292503511e193b6502013b64293ba00342fa81299291031a29352a362a35fa6ca003052a68010207292503511e193b6502013b64293ba00303fa61103b5029352935fa48a003043b500203fa5710293765021329352935fa33a003043b500203fa42102937642c362afa41307e06000000000000|@7600,1,@13411,@61,@1652,@1701,@826,@5658| 17184:D68,2400|fb2a2d352e362f371a6d090c1a71092e6928092a69293b69293ba003032c02062c2a1a63090c1a67092f34346b3b06293b3b1a63093438220c37220d396be3501a5d0931691a600932691a6309333669220d350a1f00ec014c0284024a03b003fb033e044d045a0465049704c204fb045b053e00b505f4052c0667068106bf06ee062607350762077a07b507e607f807ba08f908220d36293729352b352c362d382e392b3529350b03002d1a0a09a003033c02172d3b3bef280ba0030d2d28081af5082808280bed02013b031e2f353b2a0c6429341ae8080c3c2a69293b692d3b453b462a4750260402df2e392f3a2a299291037f29352a362a353ba003632a362935220e352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b03352b362210362a2aa003272d372212372a2aa003192f382214382a2aa0030b31392216392a2aa06502013b6502013b6502013b6502013b6602013b03052a68010207292503511e7e3b6502013b64293ba003072b1a49080c023e2b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652d2a452c463b4750260429352a362b372a9291032c2a35293529352b3629352d372935291ae9070c2e3ba00303290206292f1ae3070c402e2b6a293b69270a02013b280d220f692b3ba003032a02062a2c1acc070c293ba003042218020722182a1ac4070c293ba003032f02062f2a1abe070c2c2a6922222211452a462716f71707220d3629352a362b372c392a1aa7070c2a1aaa070c2e1aad070c293ba003032a02062a2a1aa7070c293ba003032c02062c2a1aa1070c220e6801220c2a692b2a1a9b070c22123ba003032902072922131a93070c221a220c452a46270ef7b706220d36220e37220f38306801220e362a692c3b692e2a69292c1a62070c220d3ba0030329020729220e1a62070c221530452a462709f77f06220d3629362a3629352819a003292936299291031e293629929103132936293ba003082e38293ca06402013b6402013b6402013b6402013b034c2b36293629352a3629353035313932372935280d2a69221168012218362a69303b69302a69342a69292d1adf060c22183ba003032902072922191ae7060c302a692221220c452a462712023c2b352c392d372935280d2a69220c68012213362a69313b69302a69292c1aa0060c22123ba003032902072922131ab0060c2f2a69221b34452a46270c66f7b905220d3629352a362b382c392d372935280528403bda1a900645280628403bda1a8e0645292e462b47220e483049334a6c502a22144631472a48220e496c503f2b69280d2d69293b692b2a6922123ba003032902072922131a5e060c221a34452a46270ef75305220d3629352a362b372c382d392e3a346801332a693b06312a69302e69323069293b692b2a692d2a6929311aec050c22163ba003032902072922171a1c060c221e220e452a462712f70805220d36220e37220f383f28403bda1a060645280528403bda1a040645292210462d472b4833496c502a2e462a4733486c503f2a6929220c6922132e452a462707f7c504220d362939220e2a45314665f7b604220d38220d2a45304664f7a904220c1ac305452f46f79e04220d36220e371abc05220d693068012a2a692d2a1a4e050c343ba0030329020729220c1aa7050c22132f452a462707f76c04220d36220e372f68012e2a692c2a1a22050c333ba0030329020629341a84050c22122e452a462706f74104220d36220e37220f382b35280d2a693268012f2a692e2a1aee040c220d3ba0030329020729220e1a56050c2d2a69221631452a46270af70804220d36220e393b06293b3b1a41052d2212376ae3503d28403bda1a3a05453e28403bda1a390545292b462210476c502a2a466c501a30052b693368012a2a69302a1a8b040c220e3ba0030329020729220f1a1b050c221632452a46270af7a803220d36220e37220f38221039280528403bda1a020545280628403bda1a000545292c462b4734482e49304a6c502a2211462f472a4834496c503f2b69293b69220d3ba0030329020729220e1ad9040c221530452a462709f74e03220d37220e38220f392b351ac704220f693268012a2a692e2a1af9030c280d2e69220e3ba003032a02072a220f1aad040c2a2a69221732452a46270bf70f03220d36220e37220f38306801220e362a692c3b692e2a69292c1aba030c220d3ba0030329020729220e1a7a040c221530452a462709f7d702220d36220e37220f382b35280d2a693268012210362a692e2a1a82030c220d3ba0030329020729220e1a4a040c2d2a69221631452a46270af79c02220d36220e382a35280d2a6929336922112d452a462705f78202220d3629352a362b38316801302a692d3ba003032c02062c2e1a0d040c292b1a27030c220d3ba0030329020729220e1aff030c22152f452a462709f74402220d3629352a363068011aee032a692c2a1af7020c343ba0030329020729220c1ae0030c22132e452a462707f71502220d36220e37220f38306801220e362a692c3b692e2a69292c1ac0020c220d3ba0030329020729220e1ab0030c221530452a462709f7dd01220d36220f2a220f220e22107b0510220d36220e371a9403220d2c326b3f2a69293b69333ba0030329020629341a84030c22122e452a462706f7a101220d37220e39280d2b6929326922102c452a462704f78901220d36220e37220f382a35280d2a693268012210362a692f2a1a34020c220d3ba0030329020729220e1a3c030c2d2a69221631452a46270af74e01220d36220e372a1a2b030c3068012e2a692b2a1aff010c343ba0030329020729220c1a18030c22132f452a462707f71d01220d361a0e033069220e2b452a4665f70b01220d36220e391a0103220d36693068012a2a692d2a1aba010c2e9291033f2e352f362a352935280ea0032e29362935291adf02a003033c0215293b3bef3da0030c2928081acb0228083ded02013b03052c3ba002013b6502013b6602013b03482e352935293629382c362a392b382a2aa0030a2c372d362a2aa06502013b030c221b2c221b221a221c7b051c22123ba003033002073022131a7f020c221a220d452a466427070216343ba0030329020729220c1a6c020c22132f452a466427060249220d36220e37220f38221039316801302a693b062e2a69302e69293b692b2a69292ffaec0c22113ba003032902072922121a34020c221934452a46270d020a220d36220d2a45304664270a4400000000|@7662,1,@13413,@7663,@17188,@7668,@17190,@17191,@17195,@17196,@17254,@5339,@7759,@7709,@7760,@7761,@7762,@7763,@7764,@7765,@7766,@7767,@7768,@7769,@7719,@7770,@7771,@7772,@7773,@17276,@17277,@7777,@7778,@17281,@17282,@5229,@17283,@7796,@7797,@7798,@17309,@17317,@17318,@17325,@7917,@17342,@17343,@7919,@17346,@7928,@7929,@7930,@7931,@7932,@7933,@7936,@7937,@17363,@7939,@7940,@7941,@7942,@7943,@17368,@5389,@7949,@7950,@7661| 17185:D5,88|fb092c9291030c2c3528072a69293b696502013b2c9291030c2c3528082a69293b696502013b2f9291030c2f3528052a69293b696502013b293ba003032a02052a2afa2c0c293ba003032c02072c2afa27317e0927044400|@7665,1,@13414,@7666,@7664| 17186:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13415,@7666| 17187:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13416,@7664| 17188:D4,16|fb0529362cfa212d7e03000000000000|@7667,1,@13417,@5658| 17189:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13418,@7668| 17190:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@7669,1,@13419| 17191:D25,440|fb122b363ca203061ac501f7a3012b3529353ba0038c2c3529362e363cab2a2a692e36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a8f01a003033c020f291a8d01a003033c0205291a8b01a06402013b9102013b02013b03192a1a8101691a85012a691a88012a693b3e3c3b2d68056602012a64020129293b691a79012a691a7c012a693b3c3b3b2d68052709f70e012c363ca203061a6d01f702012c3529353ca0036d2d3529362a3730363cab293ba203051a58010235293cab2c2a693137352a2a0c642c3cab2e2a691a4801351a4c012a0c642a2a0c64291a4901691a4d012a691a50012a692f2a6927091a4e012a693b3c3b3b2d6805293b691a47012a691a4a012a693b3c3b3b2d6805270a028c2d363ca203051a3c0102812d3529362f363cab2a2a692f38352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa78a003033c020d29fa77a003033c020429fa76a06402013b9102013b02013b03162afa6d69fa722a69fa762a693b3e3c3b2d68056602012a64020129293b69fad02a69fad42a693b3c3b3b2d68052709646442000000000000|@7671,1,@13420,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@7672,@2535,@1318,@116,@7680,@2625,@1323,@5556,@2627,@1323,@7686,@2535,@1323,@7670| 17192:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13421,@9,@7682| 17193:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13422,@116,@7684| 17194:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13423,@115| 17195:D3,80|fb132b352c36293629350b02002c929103232c352f350b0200342d2b220f360c5029352a363b3069292b69322d452a46502609020a2e35302a2c34360c505029352a362a2a6927094200000000000000|@7693,1,@13424| 17196:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7695,1,@13425,@7694| 17197:D13,336|fb122d353ca003382d362e372935299291032129350b0200220c302b220c0c5029352a363b2f69292b69220e2d452a4627080208312c3131317b050966f70d012d353da003a72d362937293ba003402a352b382c392d36293529351a0a011a0f01220f220f220e68051a0c01302f2d2d68053f2a692210352211362212371aff000c2a2a69221033452a46270b025b29352b352c36293529352f383039fae9facf22102210220f68053f28403bdafae045280628403bdafadf452932462d472f482b492c4a6c502a33462a472c486c503f2a69221235221336221437faa20c2a2a69221231452a46270d6502602d362936293529352c352d372e382f39faa1fa6f220f220f220e6805280528403bdafa9745280628403bdafa96452930462d4731482b492c4a6c502a2e462a472c482f496c503f2a69221135221236221337fa3f0c2a2a69221131452a46270e1f0400|@7696,1,@13426,@17199,@7694,@17200,@7663,@17204,@17205,@17239,@17243,@17244,@17198| 17198:D7,128|fb0d293a68012a3968012b3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652b2d3bfa480cfa4d2f366928092a69293b69293ba003032c02052c2afa3f0c293ba003032e02052e2afa3a0c33372a69270a420000|@7699,1,@13479,@7663,@17251,@7750,@7749| 17199:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7697,1,@13427| 17200:D7,128|fb0c293968012a3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129653b2c3bfa4c0cfa512e366928092a69293b69293ba003032c02052c2afa430c293ba003032e02052e2afa3e0c32372a69270942000000000000|@7699,1,@13428,@7663,@17201,@7701,@7698| 17201:D3,8|fb033e2a36694200|@7700,1,@13429| 17202:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13430,@7701| 17203:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13431,@7698| 17204:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7697,1,@13432| 17205:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@7703,1,@13433,@7702| 17206:D20,472|fb1a2c1aea010c1aee012b362b6a28092a69280d2c693135323633371ae1010c2a2a692c2a691adf0131220d220d6b34350a060007010c00100142014c017701343629352a372b382c390b0200220f352805a00338220f372210382938293629353ca0030c2a36293629221738a06502013b03082d2d453b4650020d2b371a8f010c2e2e452a4650502604020b1a88012a2a35452a36465129352a36319291037f31353236293ba00338280628403bda1a6d0145280528403bda1a6b0145292217462d472b48220f496c502a2f4634472e482a49220f4a6c503f2a69293b6966023b280628403bda1a450145280628403bda1a43014529220c462b47220f48220d492217374a6c502a2f4634472e482a49220f4a6c503f2a69293b696665020129220c3ba0030329020729220d1a10010c221631452a46270c0296331a0901452b46028d3436220c37220d382c6801220c372a692b3b692e2a69292cfaf20c323ba003032902052933faed0c221331452a462709025b3437342a452c466402513436220c38fad934692c68012a2a692d2afabd0c303ba003032902052931fac80c22112f452a46270702263436220c372b680134372a692c2afa950c2f3ba003032902052930faa80c22102e452a46270627084400000000|@7706,1,@13434,@5637,@17207,@7663,@17208,@7709,@7710,@17210,@17214,@17215,@17219,@7727,@5229,@7719,@7728,@17228,@7737,@7705| 17207:D5,24|fb093bfa2b0c2a372d2bfa2c3b2f36317b07040000000000|@7707,1,@13435,@5546,@5573| 17208:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@7708,1,@13436| 17209:D4,80|fb072b929103422b352c362a353da003092a36280b2a696402242a353ea003092a36280c2a696402152a353ca003092a3628062a696402062a363d2a69642afa270c2a2a69270402013b420000000000|@880,1,@13437,@7709| 17210:D7,64|fb0b293a68012a3968013b2b2bfa490cfa4e2d366928092a69293b69293ba003032c02052c2afa400c293ba003043038020630382afa390c31372a6927084200|@7712,1,@13438,@7663,@17211,@7713,@7711| 17211:D3,8|fb033e2a36694200|@7700,1,@13439| 17212:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13440,@7713| 17213:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13441,@7711| 17214:D3,40|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7714,1,@13442| 17215:D7,64|fb0b293a68012a3968013b2b2bfa490cfa4e2d366928092a69293b69293ba003032c02052c2afa400c293ba003043038020630382afa390c31372a6927084200|@7712,1,@13443,@7663,@17216,@7716,@7715| 17216:D3,8|fb033e2a36694200|@7700,1,@13444| 17217:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13445,@7716| 17218:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13446,@7715| 17219:D6,56|fb0a2968012a3a2a692b392afa420c2c3868012d376801292b3bfa3c0c293ba003032c02052c2afa370c30362a6927074200000000000000|@7718,1,@13447,@7719,@7663,@7717| 17220:D4,32|fb072c3ba003033b02122b352c36fa282f2c2c6b3f2a69293b69270443000000|@7720,1,@13448,@17221| 17221:D4,16|fb082b2a363b2c372d38fa1c307b0703|@7722,1,@13449,@7721| 17222:D7,72|fb0b2e929103043b500203fa53102e352f36293ba003033b021bfa4cfa52323232326806296801fa4ffa452d2c3434680629680166292f326a292d69652f2e7d0900000000000000|@7723,1,@13450,@7724,@17224,@7721,@17223| 17223:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@7722,1,@13452| 17224:D3,24|fb082b2a372b382c392d3a2e36307b070300000000000000|@7722,1,@13451| 17225:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13453,@7717| 17226:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13454,@7727| 17227:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13455,@7728| 17228:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7730,1,@13456,@7729| 17229:D8,96|fb0e2d3529352a3630363137fa6afa70220c220c346805280528403bdafa6945280628403bdafa68452930462f472e482b492c4a6c502a34462e472a482c496c503f2a69220e35220f36221037fa490c2a2a69220e30452a46270b1f04000000|@7731,1,@13457,@17231,@7729,@17232,@17230,@7663| 17230:D8,80|fb0e293a68012a3968012b38fa5a0c280d2a69293b692c2e3bfa550cfa5a30366928092a69293b69293ba003032c02052c2afa4c0c293ba003032e02052e2afa470c34372a69270b4200000000000000|@7735,1,@13460,@5637,@7663,@17233,@7736,@7734| 17231:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7732,1,@13458| 17232:D3,40|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7733,1,@13459| 17233:D3,8|fb033e2a36694200|@7700,1,@13461| 17234:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13462,@7736| 17235:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13463,@7734| 17236:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13464,@7737| 17237:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13465,@7705| 17238:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@7738,1,@13466| 17239:D7,128|fb0d293a68012a3968012b3837293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652b2d3bfa480cfa4d2f366928092a69293b69293ba003032c02052c2afa3f0c293ba003032e02052e2afa3a0c33372a69270a420000|@7699,1,@13467,@7663,@17240,@7740,@7739| 17240:D3,8|fb033e2a36694200|@7700,1,@13468| 17241:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13469,@7740| 17242:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13470,@7739| 17243:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7697,1,@13471| 17244:D7,56|fb0a29386801fa482a692b392afa490c2c3868012d3768013b2b2bfa430c293ba003032c02052c2afa3e0c30362a69270742000000000000|@7742,1,@13472,@7743,@7719,@7663,@7741| 17245:D4,16|fb052b352c36fa202d7e030000000000|@7745,1,@13473,@7744| 17246:D7,128|fb0f2b37293529392e352f382b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b6602012965323533363437fa460cfa4b2c6928092a69293b69293ba003032c02052c2afa3e0c293ba003032e02052e2afa390c312a69270c430000|@7747,1,@13474,@7663,@17247,@7748,@7746| 17247:D3,8|fb033e2a36694200|@7700,1,@13475| 17248:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13476,@7748| 17249:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13477,@7746| 17250:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13478,@7741| 17251:D3,8|fb033e2a36694200|@7700,1,@13480| 17252:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13481,@7750| 17253:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13482,@7749| 17254:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7752,1,@13483,@7751| 17255:D11,160|fb1d2d3729352f382935313a293533353436220c39faa1faa722102210220f68052d9291030b2d353b2a69293b696502013bfa9422106928092a693d220c346a280d2a69293b692c2a6930680122142a69220c3b69220c2a69292cfa730c221b35221c36221d37fa6f0c220c3ba0030329020629220dfa680c293ba003032b02052b2afa630c293ba00303310205312afa5e0c221d2212452a46271a1f040000|@7754,1,@13484,@17256,@7751,@17257,@7719,@7663,@7757,@7758,@7753| 17256:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7755,1,@13485| 17257:D7,56|fb112936352a36362d3cab2a2afa410c2f3cab2d2afa390c293b69fa3b2a69fa3f2a69fa432a692f2a693b3b3b3b2d6805270b4200000000|@7756,1,@13486,@5658,@1323,@2689,@1323| 17258:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13487,@7757| 17259:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13488,@7758| 17260:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13489,@7753| 17261:D4,64|fb0a2c929103342c352d362d3b3bef2b3b3bef2a2aa4030a2f28082e28082eed02013b030b2b30fa2f0c2d2a696402072b30fa24317e08270402013b43000000|@693,1,@13490,@7759| 17262:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13491,@7760| 17263:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13492,@7761| 17264:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13493,@7762| 17265:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13494,@7763| 17266:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13495,@7764| 17267:D4,32|fb072b929103122b352c363b2b692afa270c2a2a69270402013b420000000000|@880,1,@13496,@7765| 17268:D4,32|fb072b929103122b352c363d2b692afa270c2a2a69270402013b420000000000|@880,1,@13497,@7766| 17269:D4,32|fb092b929103172b352c362a352b363c2b2b6a2cfa220c2a2a69270602013b42|@880,1,@13498,@7767| 17270:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13499,@7768| 17271:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13500,@7769| 17272:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13501,@7770| 17273:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13502,@7771| 17274:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13503,@7772| 17275:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13504,@7773| 17276:D3,40|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7774,1,@13505| 17277:D6,56|fb0a2968012a3a2a692b392afa420c2c3868012d3768013b2b2bfa3c0c293ba003032c02052c2afa370c30362a6927074200000000000000|@7776,1,@13506,@7719,@7663,@7775| 17278:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13507,@7775| 17279:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13508,@7777| 17280:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13509,@7778| 17281:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@7779,1,@13510,@7702| 17282:D3,40|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7774,1,@13511| 17283:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7781,1,@13512,@7780| 17284:D18,464|fb122d3729929103d129352f3a29352808a0036130353136293529393438220c391ac4011ac90122102210220f68053f28403bda1ac10145280628403bda1abf01452932462d472f482b492c4a6c502a34462a472c486c503f2a692212352213362214371aa1010c2a2a69221231452a46270c02623035313832393336293529391a8c011a690122102210220f6805280528403bda1a800145280628403bda1a7e014529324630472d482b492c4a6c502a220f4633472a482c496c503f2a692212352213362214371a3d010c2a2a69221234452a46270c6502ef2e3a29352808a003882f3629352939323533392b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129651afa002a69220e35220f36221037facd0cfaf22e6928092a69293b69293ba003032c02052c2afae50c293ba003032e02052e2afae00c221232452a46270d025d2f3530383139323629352939facffa75220f220f220e6805280528403bdafac545280628403bdafac44529324630472d482b492c4a6c502a220e4633472a482c496c503f2a69221135221236221337fa4c0c2a2a69221134452a46270c64641f0400000000|@7782,1,@13513,@17286,@7780,@17287,@17288,@7663,@17292,@17293,@17294,@7791,@17298,@7792,@7793,@17301,@17302,@17285| 17285:D7,128|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa4a0cfa4f2e366928092a69293b69293ba003032c02052c2afa410c293ba003032e02052e2afa3c0c32372a6927094200000000|@7786,1,@13531,@7663,@17303,@7795,@7794| 17286:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7783,1,@13514| 17287:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@7784,1,@13515,@7702| 17288:D7,128|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa4a0cfa4f2e366928092a69293b69293ba003032c02052c2afa410c293ba003032e02052e2afa3c0c32372a6927094200000000|@7786,1,@13516,@7663,@17289,@7787,@7785| 17289:D3,8|fb033e2a36694200|@7700,1,@13517| 17290:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13518,@7787| 17291:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13519,@7785| 17292:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7783,1,@13520| 17293:D3,40|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7788,1,@13521| 17294:D7,128|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa4a0cfa4f2e366928092a69293b69293ba003032c02052c2afa410c293ba003032e02052e2afa3c0c32372a6927094200000000|@7786,1,@13522,@7663,@17295,@7790,@7789| 17295:D3,8|fb033e2a36694200|@7700,1,@13523| 17296:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13524,@7790| 17297:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13525,@7789| 17298:D3,8|fb033e2a36694200|@7700,1,@13526| 17299:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13527,@7792| 17300:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13528,@7793| 17301:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7783,1,@13529| 17302:D3,40|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7788,1,@13530| 17303:D3,8|fb033e2a36694200|@7700,1,@13532| 17304:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13533,@7795| 17305:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13534,@7794| 17306:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13535,@7796| 17307:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13536,@7797| 17308:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13537,@7798| 17309:D101,1208|fb2b2b363ca203061ac504f7a4042b3529353ba0038d2c3529362e363cab2a2a691ab404352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a9604a003033c020f291a9404a003033c0205291a9204a06402013b9102013b02013b03192a1a8804691a8c042a691a8f042a693b3e3c3b2d68056602012a64020129293b691a80042a691a83042a693b3c3b3b2d68052709f70e042c363ca203061a7404f702042c3529353ca0f8ea012d3529362a3730363cab293ba203061a5e04f7b001293cab293ba203061a5804f774012c362a3cab2a2a691a5204351a56042a0c642a2a0c642d3ca203061a4f04f73a0130372e3cab293ba203051a470402e62a362a3cab2a2a691a4204352a2a0c642d3ca203051a3d0402b32e382e3cab2a2a691a2804352a2a0c64313da203051a2b0402803235323cab2a2a691a2604352a2a0c64220c3ea203051a2004024c220d37220d3cab2a2a691af103352a2a0c6422113922113cab2a2a691adf03352a2a0c64291afe03691a02042a691a05042a691a08042a691a0b042a69322a691a0b042a691a0e042a69270f1a0f042a691a12042a692c2a691a12042a691a15042a6927091a16042a691a19042a692c2a691a19042a691a1c042a6927091a1d042a691a20042a692c2a691a20042a691a23042a6927091a24042a693b3c3b3b2d6805220c35333cab2a2a691a6703352a2a0c64291a0e04691a12042a691a15042a691a18042a691a1b042a69322a691a1b042a691a1e042a6927101a1f042a691a22042a692c2a691a22042a691a25042a6927091a26042a693b3c3b3b2d68052d3cab2f2a691a1c04352a2a0c64291a1b04691a1f042a691a22042a692f2a69270a1a20042a693b3c3b3b2d6805293b691a19042a691a1c042a693b3c3b3b2d6805270af70e022d363ca203061a0d04f702022d3529353da0f86a012e3529362a3731363cab293ba203061af703f73101293cab2c2a691af303351af7033436693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051ae40302e72e362a3cab2a2a691a5702352a2a0c642d3ca203051ad20302b432382e3cab2a2a691a3d02352a2a0c64313da203051ac0030281220d35323cab2a2a691a3a02352a2a0c64220c3ea203051aac03024c221137220d3cab2a2a691a0502352a2a0c6422153922113cab2a2a691af301352a2a0c64291a8a03691a8e032a691a91032a691a94032a691a97032a69322a691a97032a691a9a032a69270f1a9b032a691a9e032a692c2a691a9e032a691aa1032a6927091aa2032a691aa5032a692c2a691aa5032a691aa8032a6927091aa9032a691aac032a692c2a691aac032a691aaf032a6927091ab0032a693b3c3b3b2d6805291aab03691aaf032a691ab2032a69302a69270a1ab0032a693b3c3b3b2d6805293b691aa9032a691aac032a693b3c3b3b2d6805270a028e2e363ca203051a9e0302832e35293630363cab2a2a693037352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa82a003033c020d29fa81a003033c020429fa80a06402013b9102013b02013b03162afa7769fa7c2a69fa802a693b3e3c3b2d68056602012a64020129293b691a31032a691a34032a693b3c3b3b2d68052709646464420000000000|@7800,1,@13538,@2535,@152,@594,@595,@596,@2624,@1500,@2627,@1323,@7859,@2535,@1318,@4429,@116,@7866,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7868,@5559,@156,@2625,@1323,@5556,@2627,@1323,@7870,@2535,@1318,@118,@17316,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@7877,@2535,@1323,@7799| 17310:D273,2824|fb3b2b363ca203061a150bf7f80a2b3529353ba003061a0f0bf7e90a2c363ca203061a0b0bf7dd0a2c3529353ca0f841042d3529362f363cab293ba203061af70af709042a372a3cab293ba203051aef0a02e62a362a3cab2a2a691aea0a352a2a0c642d3ca203051ae50a02b32e382e3cab2a2a691ad00a352a2a0c64313da203051ad30a02803235323cab2a2a691ace0a352a2a0c64220c3ea203051ac80a024c220d37220d3cab2a2a691a990a352a2a0c6422113922113cab2a2a691a870a352a2a0c64291aa60a691aaa0a2a691aad0a2a691ab00a2a691ab30a2a69322a691ab30a2a691ab60a2a69270f1ab70a2a691aba0a2a692c2a691aba0a2a691abd0a2a6927091abe0a2a691ac10a2a692c2a691ac10a2a691ac40a2a6927091ac50a2a691ac80a2a692c2a691ac80a2a691acb0a2a6927091acc0a2a693b3c3b3b2d68052e3ca203061ac30af7e4022f352f3cab2a2a691abd0a351ac10a220f36693b2a3e3c6b642a0c642a2a0c64323da203061ab00af7a002333a333cab2a2a691aaa0a351aae0a2a0c642a2a0c64220d3ea203061aa60af76502220e39220e3cab293ba203051a9c0a02e62a362a3cab2a2a691a8f09352a2a0c642d3ca203051a8a0a02b32e382e3cab2a2a691a7509352a2a0c64313da203051a780a02803235323cab2a2a691a7309352a2a0c64220c3ea203051a650a024c220d37220d3cab2a2a691a3e09352a2a0c6422113922113cab2a2a691a2c09352a2a0c64291a430a691a470a2a691a4a0a2a691a4d0a2a691a500a2a69322a691a500a2a691a530a2a69270f1a540a2a691a570a2a692c2a691a570a2a691a5a0a2a6927091a5b0a2a691a5e0a2a692c2a691a5e0a2a691a610a2a6927091a620a2a691a650a2a692c2a691a650a2a691a680a2a6927091a690a2a693b3c3b3b2d680522123fa203061a5f0af73d0122133622133cab2a2a691aa708352a2a0c6422173822173cab293ba203051a430a02e62a362a3cab2a2a691a6e08352a2a0c642d3ca203051a310a02b32e382e3cab2a2a691a5408352a2a0c64313da203051a1f0a02803235323cab2a2a691a5208352a2a0c64220c3ea203051a0c0a024c220d37220d3cab2a2a691a1d08352a2a0c6422113922113cab2a2a691a0b08352a2a0c64291aea09691aee092a691af1092a691af4092a691af7092a69322a691af7092a691afa092a69270f1afb092a691afe092a692c2a691afe092a691a010a2a6927091a020a2a691a050a2a692c2a691a050a2a691a080a2a6927091a090a2a691a0c0a2a692c2a691a0c0a2a691a0f0a2a6927091a100a2a693b3c3b3b2d6805291a0b0a691a0f0a2a691a120a2a691a150a2a691a180a2a69332a691a180a2a691a1b0a2a6927101a1c0a2a691a1f0a2a692c2a691a1f0a2a691a220a2a69270a1a230a2a691a260a2a692c2a691a260a2a691a290a2a6927091a2a0a2a691a2d0a2a692c2a691a2d0a2a691a300a2a6927091a310a2a691a340a2a692c2a691a340a2a691a370a2a69270a1a380a2a693b3c3b3b2d6805293b691a310a2a691a340a2a693b3c3b3b2d68052709f792062d363ca203061a250af786062d3529353da0f8a3012e3529362a372b3832363cab293ba203061a0d0af76701293cab2d2a693336352a2a0c642c3ca203061afd09f736012c3cab293ba203051af70902e72f362a3cab2a2a691a7a06352a2a0c642d3ca203051ae50902b433382e3cab2a2a691a6006352a2a0c64313da203051ad3090281220e35323cab2a2a691a5d06352a2a0c64220c3ea203051abf09024c221237220d3cab2a2a691a2806352a2a0c6422163922113cab2a2a691a1606352a2a0c64291a9d09691aa1092a691aa4092a691aa7092a691aaa092a69322a691aaa092a691aad092a69270f1aae092a691ab1092a692c2a691ab1092a691ab4092a6927091ab5092a691ab8092a692c2a691ab8092a691abb092a6927091abc092a691abf092a692c2a691abf092a691ac2092a6927091ac3092a693b3c3b3b2d6805303cab322a69221136352a2a0c64291ab009691ab4092a691ab7092a691aba092a691abd092a69312a691abd092a691ac0092a69270e1ac1092a691ac4092a692c2a691ac4092a691ac7092a6927081ac8092a693b3c3b3b2d6805293b691ac1092a691ac4092a693b3c3b3b2d6805270bf7d9042e363ca203061ab509f7cd042e3529353ea0f86f012f3529362a3732363cab293ba203061a9f09f73501293cab293ba203051a990902e62b362a3cab2a2a691adc04352a2a0c642d3ca203051a870902b32f382e3cab2a2a691ac204352a2a0c64313da203051a750902803335323cab2a2a691ac004352a2a0c64220c3ea203051a6209024c220e37220d3cab2a2a691a8b04352a2a0c6422123922113cab2a2a691a7904352a2a0c64291a4009691a44092a691a47092a691a4a092a691a4d092a69322a691a4d092a691a50092a69270f1a51092a691a54092a692c2a691a54092a691a57092a6927091a58092a691a5b092a692c2a691a5b092a691a5e092a6927091a5f092a691a62092a692c2a691a62092a691a65092a6927091a66092a693b3c3b3b2d68052d3cab302a691a5c09352a2a0c64291a5b09691a5f092a691a62092a691a65092a691a68092a69312a691a68092a691a6b092a69270e1a6c092a693b3c3b3b2d6805293b691a65092a691a68092a693b3c3b3b2d6805270af754032f363ca203061a5909f748032f3529353fa0f8b501303529362a372b3834363cab293ba203061a4109f77901293cab2d2a691a3504351a3909220e36693b2a3d3e6b642a0c642a2a0c642c3ca203061a2809f737012c3cab2f2a691a2409352a2a0c642f3cab293ba203051a1c0902e831362a3cab2a2a691a1f03352a2a0c642d3ca203051a0a0902b5220c382e3cab2a2a691a0403352a2a0c64313da203051af7080281221035323cab2a2a691a0103352a2a0c64220c3ea203051ae308024c221437220d3cab2a2a691acc02352a2a0c6422183922113cab2a2a691aba02352a2a0c64291ac108691ac5082a691ac8082a691acb082a691ace082a69322a691ace082a691ad1082a69270f1ad2082a691ad5082a692c2a691ad5082a691ad8082a6927091ad9082a691adc082a692c2a691adc082a691adf082a6927091ae0082a691ae3082a692c2a691ae3082a691ae6082a6927091ae7082a693b3c3b3b2d6805291ae208691ae6082a691ae9082a691aec082a691aef082a69322a691aef082a691af2082a69270e1af3082a691af6082a692c2a691af6082a691af9082a6927081afa082a693b3c3b3b2d6805293b691af3082a691af6082a693b3c3b3b2d6805270bf7890130363ca203061ae708f77d01303529362a3733363cab293ba203061ada08f74601293cab2c2a691a7602351ad208220d36693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051abe0802e72e362a3cab2a2a691a7901352a2a0c642d3ca203051aac0802b432382e3cab2a2a691a5f01352a2a0c64313da203051a9a080281220d35323cab2a2a691a5c01352a2a0c64220c3ea203051a8608024c221137220d3cab2a2a691a2701352a2a0c6422153922113cab2a2a691a1501352a2a0c64291a6408691a68082a691a6b082a691a6e082a691a71082a69322a691a71082a691a74082a69270f1a75082a691a78082a692c2a691a78082a691a7b082a6927091a7c082a691a7f082a692c2a691a7f082a691a82082a6927091a83082a691a86082a692c2a691a86082a691a89082a6927091a8a082a693b3c3b3b2d6805291a8508691a89082a691a8c082a691a8f082a691a92082a69322a691a92082a691a95082a69270e1a96082a693b3c3b3b2d6805293b691a8f082a691a92082a693b3c3b3b2d6805270a64646464644200|@7803,1,@13539,@2535,@7804,@2535,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@118,@17311,@4429,@116,@7811,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7815,@1323,@5556,@1323,@5990,@1323,@5556,@1323,@7817,@5559,@1323,@7819,@2535,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@6428,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7826,@5559,@1323,@7828,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@109,@5552,@1323,@7835,@1323,@5556,@1323,@5838,@5559,@1323,@7837,@2535,@4429,@17313,@4429,@115,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@7844,@1323,@5556,@1323,@6635,@5559,@1323,@7846,@2535,@4429,@17314,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@6635,@5559,@1323,@7802| 17311:D3,16|fb052936352c2a2d7d04000000000000|@7803,1,@13540| 17312:D4,16|fb05fa24352c2a2d7d04000000000000|@5975,1,@13541,@154| 17313:D66,680|fb292b363ba203061ab502f786022b35352c363cab293ba203061aab02f725012a352a3cab2a2a691aa502352a2a0c642e362e3cab293ba203051a9b0202e62a362a3cab2a2a691a9602352a2a0c642d3ca203051a910202b32e382e3cab2a2a691a7c02352a2a0c64313da203051a7f0202803235323cab2a2a691a5202352a2a0c64220c3ea203051a6c02024c220d37220d3cab2a2a691a4502352a2a0c6422113922113cab2a2a691a3302352a2a0c64291a4a02691a4e022a691a51022a691a54022a691a57022a69322a691a57022a691a5a022a69270f1a5b022a691a5e022a692c2a691a5e022a691a61022a6927091a62022a691a65022a692c2a691a65022a691a68022a6927091a69022a691a6c022a692c2a691a6c022a691a6f022a6927091a70022a693b3c3b3b2d6805291a6b02691a6f022a691a72022a69312a69270c1a70022a693b3c3b3b2d680530363ca203061a6602f7280130353631363cab2a2a693136352a2a0c64343537220c363cab293ba203051a4a0202e52a362a3cab2a2a691a5501352a2a0c642d3ca203051a380202b22e382e3cab2a2a691a3b01352a2a0c64313da203051a2602027f3235323cab2a2a691a1101352a2a0c64220c3ea203051a1302024b220d37220d3cab2a2a691a0401352a2a0c6422113922113cab2a2a69faf3352a2a0c64291af201691af6012a691af9012a691afc012a691aff012a69322a691aff012a691a02022a69270f1a03022a691a06022a692c2a691a06022a691a09022a6927091a0a022a691a0d022a692c2a691a0d022a691a10022a6927091a11022a691a14022a692c2a691a14022a691a17022a6927091a18022a693b3c3b3b2d6805291a1302691a17022a691a1a022a69312a69270c1a18022a691a1b022a692c2a6927081a19022a693b3c3b3b2d68056542000000000000|@268,1,@13542,@1318,@1318,@7,@4429,@75,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@1323,@5556,@2627| 17314:D3,16|fb052936352c2a2d7d04000000000000|@7803,1,@13543| 17315:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13544,@155| 17316:D3,16|fb052936352c2a2d7d04000000000000|@7800,1,@13545| 17317:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@7890,1,@13546| 17318:D12,280|fb142c353da0033a2c362d371a21012c31316b2968012d362a692d2a1a19010c33353436220c371a16010c293ba003032a02062a2a1a10010c3330452a46270802d42c353ba0030c2c362e2a2e1a00012f7b05062c353ea0030b2c362e2a2e2d372f7b05062c362d372a3629352c372c392d3a299291032a2935293529352b3629352d37293529facf0c2e3ba00303290205292ffaca0c402e2b6a293b69270a02013b2b3b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b6602012965280d2f69220e35220f36221037fa500c2a2a69293ba003032c02052c2afa680c293ba003032e02052e2afa630c221033452a46270e4400|@7892,1,@13547,@17319,@7719,@7663,@7894,@7702,@7895,@7896,@7897,@7891| 17319:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@7893,1,@13548| 17320:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13549,@7894| 17321:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13550,@7895| 17322:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13551,@7896| 17323:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13552,@7897| 17324:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13553,@7891| 17325:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7899,1,@13554,@7898| 17326:D12,160|fb0f2d362e3629929103082936293ba06402013b03412f362935313729353338220c35220d36220e37fa8d0cfa92fa98220f220f220e68052e2d2b220efa910c2b3ba00303290205292cfa8c0c220e2e452a46270902412f372935313833353436220c37fa520cfa77fa5d220d220d220c6805fa73332e6a2a68012a2a69322afa6e0c2e3ba00303290205292ffa690c220f31452a46270a651f040000000000|@7901,1,@13555,@7663,@17327,@7898,@7903,@7910,@17335,@17336,@7719,@7900| 17327:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7902,1,@13556| 17328:D9,248|fb1a2e382935303529352a362b372c38220c362b3ca003332d9291032b2d3529352819a0031e29362992910313293629929103082936293ba06402013b6402013b6402013b6402013b02013b03332d352e362a362b382a352b3629353e2c693c220c22166a3e2c69293b692b2a692d2a693d2a346a220cfa970c2a2a69270f020d3c2d220e6a2efa8f0c2a2a69652b9291030b2b353b2a69293b696502013b319291030b31353b2a69293b696502013b220e6801220e2a693e2f69293b69293ba003032e02052e2afa560c293ba00303300205302afa510c292efa540c303ba003032902082931fa4f22167e1827121f0400000000000000|@7905,1,@13557,@7906,@7907,@7908,@7909,@7719,@7904| 17329:D4,32|fb072b929103122b352c363e2b692afa270c2a2a69270402013b420000000000|@880,1,@13558,@7906| 17330:D4,32|fb072b929103122b352c363e2b692afa270c2a2a69270402013b420000000000|@880,1,@13559,@7907| 17331:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13560,@7908| 17332:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13561,@7909| 17333:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13562,@7904| 17334:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13563,@7910| 17335:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7911,1,@13564| 17336:D4,32|fb0a0b02002e352f362b2f363037fa280c5029352a362a2a6927054200000000|@7913,1,@13565,@7912| 17337:D8,56|fb092e37303531363237fa440cfa49fa4f333332326806312f2b32fa4b0c2b3ba00303290205292cfa460c322e452a4627051f0500000000|@7915,1,@13566,@7663,@17338,@7912,@7903,@7914| 17338:D3,32|fb0a0b02002c372d382b2f39303a31360c5029352a362a2a6927054200000000|@7916,1,@13567| 17339:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13568,@7914| 17340:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13569,@7900| 17341:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13570,@7917| 17342:D3,40|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7774,1,@13571| 17343:D6,56|fb0a2968012a3a2a692b392afa420c2c3868012d3768013b2b2bfa3c0c293ba003032c02052c2afa370c30362a6927074200000000000000|@7776,1,@13572,@7719,@7663,@7918| 17344:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13573,@7918| 17345:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13574,@7919| 17346:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7921,1,@13575,@7920| 17347:D8,224|fb182d3629352f353037313832390b0200220e2e2b220e0c5029352a362a352f352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b03332c3631362a2aa003262e3733372a2aa003193038220c382a2aa0030b3239220e392a2aa06502013b6502013b6502013b6502013b030822102d452c460256fa74fa7a2214221422136805280528403bdafa7245280628403bdafa714529220e46220d47220f482b492c4a6c502a221346220c472a482c496c503f2a69221635221736221837fa4d0c2a2a692216220e452a462706270d1f0400000000|@7922,1,@13576,@17349,@7920,@17350,@17348,@7663| 17348:D7,72|fb0d293a68012a396801280d2c3869293b692b2d3bfa490cfa4e2f366928092a69293b69293ba003032c02052c2afa400c293ba003032e02052e2afa3b0c33372a69270a42000000|@7926,1,@13579,@7663,@17351,@7927,@7925| 17349:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7923,1,@13577| 17350:D3,40|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@7924,1,@13578| 17351:D3,8|fb033e2a36694200|@7700,1,@13580| 17352:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13581,@7927| 17353:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13582,@7925| 17354:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13583,@7928| 17355:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13584,@7929| 17356:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13585,@7930| 17357:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13586,@7931| 17358:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13587,@7932| 17359:D6,64|fb0b2b352c3629362a372a35293ba003033b02092935293829fa3d0c652e352f363037fa3b0c2a3ba00303290205292bfa360c2d2a6927084200000000000000|@7935,1,@13588,@7709,@7663,@7934| 17360:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13589,@7934| 17361:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13590,@7936| 17362:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13591,@7937| 17363:D3,32|fb0a293868013b2a3b6a0b02002c2f372b31360c5029352a362a2a6927074200|@7938,1,@13592| 17364:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13593,@7939| 17365:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13594,@7940| 17366:D4,32|fb072b929103122b352c363d2b692afa270c2a2a69270402013b420000000000|@880,1,@13595,@7941| 17367:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13596,@7942| 17368:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@7945,1,@13597,@7944| 17369:D8,72|fb0e2d352e362f37313532363337fa500cfa55fa5b3434336805296801312a692e3b69302a69292cfa4e0c2f3ba003032902052930fa490c220e32452a46270b1f04000000000000|@7947,1,@13598,@7663,@17370,@7944,@7719,@7946| 17370:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@7948,1,@13599| 17371:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13600,@7946| 17372:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13601,@7949| 17373:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13602,@7950| 17374:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13603,@7661| 17375:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@7952,1,@13604| 17376:D1440,15536|fb4b2b363ca203061abd3cf79f3c2b3529353ba0f87d022c3529362e363cab293ba203061aa93cf745022a352a3cab2a2a691aa33c351aa73c3238693b2a3d3d6b642a0c642a2a0c642d3ca203061a973cf702022e3a2e3cab2a2a691a913c351a953c2a0c642a2a0c64313da203061a8e3cf7c8013238323cab2a2a691a883c352a2a0c64220c3ea203061a823cf79301220d36220d3cab293ba203051a783c02e62a362a3cab2a2a691a733c352a2a0c642d3ca203051a6e3c02b32e382e3cab2a2a691a593c352a2a0c64313da203051a5c3c02803235323cab2a2a691a573c352a2a0c64220c3ea203051a513c024c220d37220d3cab2a2a691a223c352a2a0c6422113922113cab2a2a691a103c352a2a0c64291a2f3c691a333c2a691a363c2a691a393c2a691a3c3c2a69322a691a3c3c2a691a3f3c2a69270f1a403c2a691a433c2a692c2a691a433c2a691a463c2a6927091a473c2a691a4a3c2a692c2a691a4a3c2a691a4d3c2a6927091a4e3c2a691a513c2a692c2a691a513c2a691a543c2a6927091a553c2a693b3c3b3b2d680522113fa203051a4b3c026c22123722123cab2a2a691a2c3b351a403c221a37693b2a3e3c6b642a0c642a2a0c6422163922163cab2a2a691a0a3b351a263c221e36693b2a3e3c6b642a0c642a2a0c64291a193c691a1d3c2a691a203c2a691a233c2a691a263c2a69322a691a263c2a691a293c2a69270f1a2a3c2a691a2d3c2a692c2a691a2d3c2a691a303c2a69270a1a313c2a691a343c2a692c2a691a343c2a691a373c2a6927091a383c2a691a3b3c2a692c2a691a3b3c2a691a3e3c2a6927091a3f3c2a691a423c2a692c2a691a423c2a691a453c2a6927091a463c2a693b3c3b3b2d6805293b691a3f3c2a691a423c2a693b3c3b3b2d68052709f7183a2c363ca203061a333cf70c3a2c3529353ca0f8a3012d3529362a372b3831363cab293ba203061a1b3cf76701293cab2d2a693238352a2a0c642c3ca203061a0b3cf736012c3cab293ba203051a053c02e72e362a3cab2a2a691a303a352a2a0c642d3ca203051af33b02b432382e3cab2a2a691a163a352a2a0c64313da203051ae13b0281220d35323cab2a2a691a133a352a2a0c64220c3ea203051acd3b024c221137220d3cab2a2a691ade39352a2a0c6422153922113cab2a2a691acc39352a2a0c64291aab3b691aaf3b2a691ab23b2a691ab53b2a691ab83b2a69322a691ab83b2a691abb3b2a69270f1abc3b2a691abf3b2a692c2a691abf3b2a691ac23b2a6927091ac33b2a691ac63b2a692c2a691ac63b2a691ac93b2a6927091aca3b2a691acd3b2a692c2a691acd3b2a691ad03b2a6927091ad13b2a693b3c3b3b2d6805303cab332a69221038352a2a0c64291abe3b691ac23b2a691ac53b2a691ac83b2a691acb3b2a69312a691acb3b2a691ace3b2a69270e1acf3b2a691ad23b2a692c2a691ad23b2a691ad53b2a6927081ad63b2a693b3c3b3b2d6805293b691acf3b2a691ad23b2a693b3c3b3b2d6805270bf75f382d363ca203061ac33bf753382d3529353da0f817022e35293630363cab293ba203061aaf3bf7df012a362a3cab2a2a693238352a2a0c642d3ca203061a9d3bf7ac012e372e3cab2a2a691a5738351a933b2a0c642a2a0c64313da203061a8c3bf772013235323cab2a2a69221138352a2a0c64220c3ea203061a783bf73d01220d38220d3cab2a2a691a3038352a2a0c6422113922113cab293ba203051a5c3b02e62a362a3cab2a2a691a2738352a2a0c642d3ca203051a4a3b02b32e382e3cab2a2a691a0d38352a2a0c64313da203051a383b02803235323cab2a2a691a0b38352a2a0c64220c3ea203051a253b024c220d37220d3cab2a2a691ad637352a2a0c6422113922113cab2a2a691ac437352a2a0c64291a033b691a073b2a691a0a3b2a691a0d3b2a691a103b2a69322a691a103b2a691a133b2a69270f1a143b2a691a173b2a692c2a691a173b2a691a1a3b2a6927091a1b3b2a691a1e3b2a692c2a691a1e3b2a691a213b2a6927091a223b2a691a253b2a692c2a691a253b2a691a283b2a6927091a293b2a693b3c3b3b2d6805291a243b691a283b2a691a2b3b2a691a2e3b2a691a313b2a69332a691a313b2a691a343b2a6927101a353b2a691a383b2a692c2a691a383b2a691a3b3b2a6927091a3c3b2a691a3f3b2a692c2a691a3f3b2a691a423b2a6927091a433b2a691a463b2a692c2a691a463b2a691a493b2a6927091a4a3b2a693b3c3b3b2d6805293b691a433b2a691a463b2a693b3c3b3b2d68052709f732362e363ca203061a373bf726362e3529353ea0f818032f35293631363cab293ba203061a233bf7e0022a372a3cab2a2a691a4536351a193b2a0c642a2a0c642d3ca203061a123bf7a6022e392e3cab293ba203051a0a3b02e62a362a3cab2a2a691a4536352a2a0c642d3ca203051af83a02b32e382e3cab2a2a691a2b36352a2a0c64313da203051ae63a02803235323cab2a2a691a2936352a2a0c64220c3ea203051ad33a024c220d37220d3cab2a2a691af435352a2a0c6422113922113cab2a2a691ae235352a2a0c64291ab13a691ab53a2a691ab83a2a691abb3a2a691abe3a2a69322a691abe3a2a691ac13a2a69270f1ac23a2a691ac53a2a692c2a691ac53a2a691ac83a2a6927091ac93a2a691acc3a2a692c2a691acc3a2a691acf3a2a6927091ad03a2a691ad33a2a692c2a691ad33a2a691ad63a2a6927091ad73a2a693b3c3b3b2d6805323da203061ace3af781013338333cab293ba203051ac63a02e62a362a3cab2a2a691a3935352a2a0c642d3ca203051ab43a02b32e382e3cab2a2a691a1f35352a2a0c64313da203051aa23a02803235323cab2a2a691a1d35352a2a0c64220c3ea203051a8f3a024c220d37220d3cab2a2a691ae834352a2a0c6422113922113cab2a2a691ad634352a2a0c64291a6d3a691a713a2a691a743a2a691a773a2a691a7a3a2a69322a691a7a3a2a691a7d3a2a69270f1a7e3a2a691a813a2a692c2a691a813a2a691a843a2a6927091a853a2a691a883a2a692c2a691a883a2a691a8b3a2a6927091a8c3a2a691a8f3a2a692c2a691a8f3a2a691a923a2a6927091a933a2a693b3c3b3b2d6805220e3ea203051a893a025c220f36220f3cab2a2a691af233351a7e3a221a39693b2a3e3c6b642a0c642a2a0c6422133522133cab2a2a69221c38352a2a0c64291a5f3a691a633a2a691a663a2a691a693a2a691a6c3a2a69322a691a6c3a2a691a6f3a2a69270f1a703a2a691a733a2a692c2a691a733a2a691a763a2a69270a1a773a2a691a7a3a2a692c2a691a7a3a2a691a7d3a2a69270a1a7e3a2a691a813a2a692c2a691a813a2a691a843a2a6927091a853a2a693b3c3b3b2d6805293b691a7e3a2a691a813a2a693b3c3b3b2d68052709f704332f363ca203061a723af7f8322f3529353fa0f853023035293632363cab293ba203061a5e3af71b022a392a3cab2a2a691a1833351a543a2a0c642a2a0c642d3ca203061a4d3af7e1012e362e3cab2a2a69220f38352a2a0c64313da203061a3a3af7ad013238323cab293ba203051a323a02e62a362a3cab2a2a691afd32352a2a0c642d3ca203051a203a02b32e382e3cab2a2a691ae332352a2a0c64313da203051a0e3a02803235323cab2a2a691ae132352a2a0c64220c3ea203051afb39024c220d37220d3cab2a2a691aac32352a2a0c6422113922113cab2a2a691a9a32352a2a0c64291ad939691add392a691ae0392a691ae3392a691ae6392a69322a691ae6392a691ae9392a69270f1aea392a691aed392a692c2a691aed392a691af0392a6927091af1392a691af4392a692c2a691af4392a691af7392a6927091af8392a691afb392a692c2a691afb392a691afe392a6927091aff392a693b3c3b3b2d6805220d3ea203051af5390288220e35220e3cab2a2a69221838352a2a0c6422113fa203051ae039025222123a22123cab2a2a691ab131351ad5392a0c642a2a0c6422163722163cab2a2a69222038352a2a0c64291ac039691ac4392a691ac7392a691aca392a691acd392a69322a691acd392a691ad0392a69270f1ad1392a691ad4392a692c2a691ad4392a691ad7392a6927091ad8392a691adb392a692c2a691adb392a691ade392a69270a1adf392a691ae2392a692c2a691ae2392a691ae5392a6927091ae6392a691ae9392a692c2a691ae9392a691aec392a6927091aed392a693b3c3b3b2d6805293b691ae6392a691ae9392a693b3c3b3b2d68052709f79b3030363ca203061ada39f78f30303529352805a0f8a501313529362a372b38220c363cab293ba203061ac039f76801293cab2d2a691abc39352a2a0c642c3ca203061ab739f736012c3cab293ba203051ab13902e72e362a3cab2a2a691ab430352a2a0c642d3ca203051a9f3902b432382e3cab2a2a691a9a30352a2a0c64313da203051a8d390281220d35323cab2a2a691a9730352a2a0c64220c3ea203051a7939024c221137220d3cab2a2a691a6230352a2a0c6422153922113cab2a2a691a5030352a2a0c64291a5739691a5b392a691a5e392a691a61392a691a64392a69322a691a64392a691a67392a69270f1a68392a691a6b392a692c2a691a6b392a691a6e392a6927091a6f392a691a72392a692c2a691a72392a691a75392a6927091a76392a691a79392a692c2a691a79392a691a7c392a6927091a7d392a693b3c3b3b2d6805303cab332a69221438352a2a0c64291a6a39691a6e392a691a71392a691a74392a691a77392a69312a691a77392a691a7a392a69270e1a7b392a691a7e392a692c2a691a7e392a691a81392a6927081a82392a693b3c3b3b2d6805293b691a7b392a691a7e392a693b3c3b3b2d6805270bf7df2e31363ca203061a6f39f7d32e313529352806a0f8f4033235293634363cab293ba203061a5a39f7bc032a392a3cab293ba203051a523902e62a362a3cab2a2a691a152f352a2a0c642d3ca203051a403902b32e382e3cab2a2a691afb2e352a2a0c64313da203051a2e3902803235323cab2a2a691af92e352a2a0c64220c3ea203051a1b39024c220d37220d3cab2a2a691ac42e352a2a0c6422113922113cab2a2a691ab22e352a2a0c64291af938691afd382a691a00392a691a03392a691a06392a69322a691a06392a691a09392a69270f1a0a392a691a0d392a692c2a691a0d392a691a10392a6927091a11392a691a14392a692c2a691a14392a691a17392a6927091a18392a691a1b392a692c2a691a1b392a691a1e392a6927091a1f392a693b3c3b3b2d68052e3ca203061a1639f797022f352f3cab293ba203051a0e3902e62a362a3cab2a2a691a092e352a2a0c642d3ca203051afc3802b32e382e3cab2a2a691aef2d352a2a0c64313da203051aea3802803235323cab2a2a691aed2d352a2a0c64220c3ea203051ad738024c220d37220d3cab2a2a691ab82d352a2a0c6422113922113cab2a2a691aa62d352a2a0c64291ab538691ab9382a691abc382a691abf382a691ac2382a69322a691ac2382a691ac5382a69270f1ac6382a691ac9382a692c2a691ac9382a691acc382a6927091acd382a691ad0382a692c2a691ad0382a691ad3382a6927091ad4382a691ad7382a692c2a691ad7382a691ada382a6927091adb382a693b3c3b3b2d6805333da203061ad238f772013437343cab2a2a691a242d352a2a0c64220e3ea203061abe38f73d01220f36220f3cab293ba203051ab43802e62a362a3cab2a2a691adf2c352a2a0c642d3ca203051aa23802b32e382e3cab2a2a691ac52c352a2a0c64313da203051a903802803235323cab2a2a691ac32c352a2a0c64220c3ea203051a7d38024c220d37220d3cab2a2a691a8e2c352a2a0c6422113922113cab2a2a691a7c2c352a2a0c64291a5b38691a5f382a691a62382a691a65382a691a68382a69322a691a68382a691a6b382a69270f1a6c382a691a6f382a692c2a691a6f382a691a72382a6927091a73382a691a76382a692c2a691a76382a691a79382a6927091a7a382a691a7d382a692c2a691a7d382a691a80382a6927091a81382a693b3c3b3b2d680522143822143cab2a2a691a032c352a2a0c64291a6a38691a6e382a691a71382a691a74382a691a77382a69322a691a77382a691a7a382a6927101a7b382a691a7e382a692c2a691a7e382a691a81382a6927091a82382a691a85382a692c2a691a85382a691a88382a69270a1a89382a691a8c382a692c2a691a8c382a691a8f382a69270a1a90382a693b3c3b3b2d6805293b691a89382a691a8c382a693b3c3b3b2d68052709f7d42a32363ca203061a7d38f7c82a323529352807a0f8ab01333529362a372b38220e363cab293ba203061a6338f76e01293cab2d2a691a5f38352a2a0c642c3ca203061a5a38f73c012c3cab293ba203051a543802e72e362a3cab2a2a691aef2a352a2a0c642d3ca203051a423802b432382e3cab2a2a691ad52a352a2a0c64313da203051a30380281220d35323cab2a2a691ad22a352a2a0c64220c3ea203051a1c38024c221137220d3cab2a2a691a9d2a352a2a0c6422153922113cab2a2a691a8b2a352a2a0c64291afa37691afe372a691a01382a691a04382a691a07382a69322a691a07382a691a0a382a69270f1a0b382a691a0e382a692c2a691a0e382a691a11382a6927091a12382a691a15382a692c2a691a15382a691a18382a6927091a19382a691a1c382a692c2a691a1c382a691a1f382a6927091a20382a693b3c3b3b2d6805303cab332a691ab629351a12382a0c642a2a0c64291a0f38691a13382a691a16382a691a19382a691a1c382a69312a691a1c382a691a1f382a69270e1a20382a691a23382a692c2a691a23382a691a26382a6927081a27382a693b3c3b3b2d6805293b691a20382a691a23382a693b3c3b3b2d6805270bf7122933363ca203061a1438f70629333529352808a003061a0d38f7f62834363ca203061a0938f7ea28343529352809a0f86e01220c3529362a37220f363cab293ba203061af037f73201293cab2c2a691af428351ae83722123a693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051ad43702e72e362a3cab2a2a691a0f29352a2a0c642d3ca203051ac23702b432382e3cab2a2a691af528352a2a0c64313da203051ab0370281220d35323cab2a2a691af228352a2a0c64220c3ea203051a9c37024c221137220d3cab2a2a691abd28352a2a0c6422153922113cab2a2a691aab28352a2a0c64291a7a37691a7e372a691a81372a691a84372a691a87372a69322a691a87372a691a8a372a69270f1a8b372a691a8e372a692c2a691a8e372a691a91372a6927091a92372a691a95372a692c2a691a95372a691a98372a6927091a99372a691a9c372a692c2a691a9c372a691a9f372a6927091aa0372a693b3c3b3b2d6805291a9b37691a9f372a691aa2372a69302a69270a1aa0372a693b3c3b3b2d6805293b691a99372a691a9c372a693b3c3b3b2d6805270af77127220c363ca203061a8c37f76427220c35293540a0f86e01220d3529362a372210363cab293ba203061a7337f73201293cab2c2a691a6f27351a6b37221338693b2a3d3d6b642a0c642a2a0c642c3cab293ba203051a573702e72e362a3cab2a2a691a8a27352a2a0c642d3ca203051a453702b432382e3cab2a2a691a7027352a2a0c64313da203051a33370281220d35323cab2a2a691a6d27352a2a0c64220c3ea203051a1f37024c221137220d3cab2a2a691a3827352a2a0c6422153922113cab2a2a691a2627352a2a0c64291afd36691a01372a691a04372a691a07372a691a0a372a69322a691a0a372a691a0d372a69270f1a0e372a691a11372a692c2a691a11372a691a14372a6927091a15372a691a18372a692c2a691a18372a691a1b372a6927091a1c372a691a1f372a692c2a691a1f372a691a22372a6927091a23372a693b3c3b3b2d6805291a1e37691a22372a691a25372a69302a69270a1a23372a693b3c3b3b2d6805293b691a1c372a691a1f372a693b3c3b3b2d6805270af7eb25220d363ca203061a0f37f7de25220d352935280ba0f8bc01220e3529362a372b382212363cab293ba203061af336f77e01293cab2d2a691aff25351aeb362a0c642a2a0c642c3ca203061ae436f746012c3cab293ba203051ade3602e72e362a3cab2a2a691a0126352a2a0c642d3ca203051acc3602b432382e3cab2a2a691ae725352a2a0c64313da203051aba360281220d35323cab2a2a691ae425352a2a0c64220c3ea203051aa636024c221137220d3cab2a2a691aaf25352a2a0c6422153922113cab2a2a691a9d25352a2a0c64291a8436691a88362a691a8b362a691a8e362a691a91362a69322a691a91362a691a94362a69270f1a95362a691a98362a692c2a691a98362a691a9b362a6927091a9c362a691a9f362a692c2a691a9f362a691aa2362a6927091aa3362a691aa6362a692c2a691aa6362a691aa9362a6927091aaa362a693b3c3b3b2d6805303cab332a691ac824351a9c36221c39693b2a3e3c6b642a0c642a2a0c64291a8f36691a93362a691a96362a691a99362a691a9c362a69312a691a9c362a691a9f362a69270e1aa0362a691aa3362a692c2a691aa3362a691aa6362a6927081aa7362a693b3c3b3b2d6805293b691aa0362a691aa3362a693b3c3b3b2d6805270bf71624220e363ca203061a9336f70924220e352935280ca0f81302220f3529362a392212363cab293ba203061a7936f7d701293cab2c2a691a1524351a713622152306693b2a3e3c6b642a0c642a2a0c642c3ca203061a5f36f794012c3cab293ba203051a5936020a293cab2a3cab1a5636651a5a362a693b3c3b3b2d6805303da203061a5136f74d01303cab293ba203051a4b36020a293cab2a3cab1a4836651a4c362a693b3c3b3b2d6805343cab293ba203051a403602e9220d362a3cab2a2a691ad223352a2a0c642d3ca203051a2d3602b52211382e3cab2a2a691ab723352a2a0c64313da203051a1a360281221535323cab2a2a691ab423352a2a0c64220c3ea203051a0636024c221937220d3cab2a2a691a7f23352a2a0c64221d3922113cab2a2a691a6d23352a2a0c64291ae435691ae8352a691aeb352a691aee352a691af1352a69322a691af1352a691af4352a69270f1af5352a691af8352a692c2a691af8352a691afb352a6927091afc352a691aff352a692c2a691aff352a691a02362a6927091a03362a691a06362a692c2a691a06362a691a09362a6927091a0a362a693b3c3b3b2d6805291a0536691a09362a691a0c362a691a0f362a691a12362a69322a691a12362a691a15362a69270f1a16362a691a19362a692c2a691a19362a691a1c362a6927091a1d362a691a20362a692c2a691a20362a691a23362a6927081a24362a693b3c3b3b2d6805293b691a1d362a691a20362a693b3c3b3b2d6805270af7ea21220f363ca203061a1036f7dd21220f352935280da0f8df0222103529362a372b382c392215363cab293ba203061af235f79f02293cab2e2a69221638352a2a0c642c3ca203061ae135f76d022c3cab302a691acd21351ad935221b39693b2a3e3c6b642a0c642a2a0c642f3da203061ac835f72b022f3cab293ba203051ac23502e831362a3cab2a2a691add21352a2a0c642d3ca203051ab03502b5220c382e3cab2a2a691ac221352a2a0c64313da203051a9d350281221035323cab2a2a691abf21352a2a0c64220c3ea203051a8935024c221437220d3cab2a2a691a8a21352a2a0c6422183922113cab2a2a691a7821352a2a0c64291a6735691a6b352a691a6e352a691a71352a691a74352a69322a691a74352a691a77352a69270f1a78352a691a7b352a692c2a691a7b352a691a7e352a6927091a7f352a691a82352a692c2a691a82352a691a85352a6927091a86352a691a89352a692c2a691a89352a691a8c352a6927091a8d352a693b3c3b3b2d6805333cab293ba203051a813502e9220d362a3cab2a2a691adb20352a2a0c642d3ca203051a6e3502b52211382e3cab2a2a691ac020352a2a0c64313da203051a5b350281221535323cab2a2a691abd20352a2a0c64220c3ea203051a4735024c221937220d3cab2a2a691a8820352a2a0c64221d3922113cab2a2a691a7620352a2a0c64291a2535691a29352a691a2c352a691a2f352a691a32352a69322a691a32352a691a35352a69270f1a36352a691a39352a692c2a691a39352a691a3c352a6927091a3d352a691a40352a692c2a691a40352a691a43352a6927091a44352a691a47352a692c2a691a47352a691a4a352a6927091a4b352a693b3c3b3b2d6805291a4635691a4a352a691a4d352a691a50352a691a53352a69322a691a53352a691a56352a69270f1a57352a691a5a352a692c2a691a5a352a691a5d352a6927081a5e352a691a61352a692c2a691a61352a691a64352a6927081a65352a693b3c3b3b2d6805293b691a5e352a691a61352a693b3c3b3b2d6805270cf7f21e2210363ca203061a5135f7e51e2210352935280ea0f8240222113529362213363cab293ba203061a3935f7ea012a372a3cab2a2a691a0b1f351a2f352a0c642a2a0c642d3ca203061a2835f7b0012e382e3cab293ba203051a203502e62a362a3cab2a2a691a0b1f352a2a0c642d3ca203051a0e3502b32e382e3cab2a2a691af11e352a2a0c64313da203051afc3402803235323cab2a2a691aef1e352a2a0c64220c3ea203051ae934024c220d37220d3cab2a2a691aba1e352a2a0c6422113922113cab2a2a691aa81e352a2a0c64291ac734691acb342a691ace342a691ad1342a691ad4342a69322a691ad4342a691ad7342a69270f1ad8342a691adb342a692c2a691adb342a691ade342a6927091adf342a691ae2342a692c2a691ae2342a691ae5342a6927091ae6342a691ae9342a692c2a691ae9342a691aec342a6927091aed342a693b3c3b3b2d6805323da203051ae434028c3335333cab2a2a691a271e352a2a0c64220d3ea203051ad1340258220e39220e3cab2a2a691ac21d351ac6342a0c642a2a0c6422123622123cab2a2a691aaa1d351ab6342a0c642a2a0c64291ab334691ab7342a691aba342a691abd342a691ac0342a69322a691ac0342a691ac3342a69270f1ac4342a691ac7342a692c2a691ac7342a691aca342a6927091acb342a691ace342a692c2a691ace342a691ad1342a69270a1ad2342a691ad5342a692c2a691ad5342a691ad8342a6927091ad9342a693b3c3b3b2d6805293b691ad2342a691ad5342a693b3c3b3b2d68052709f7b51c2211363ca203061ac534f7a81c2211352935280fa0f8f20122123529362a372b382c392217363cab293ba203061aa734f7b201293cab2d2a691acb1c351a9f342a0c642a2a0c642c3ca203061a9834f77a012c3cab312a691ac41c352a2a0c642f3da203061a8734f748012f3cab293ba203051a813402e831362a3cab2a2a691ab41c352a2a0c642d3ca203051a6f3402b5220c382e3cab2a2a691a991c352a2a0c64313da203051a5c340281221035323cab2a2a691a961c352a2a0c64220c3ea203051a4834024c221437220d3cab2a2a691a611c352a2a0c6422183922113cab2a2a691a4f1c352a2a0c64291a2634691a2a342a691a2d342a691a30342a691a33342a69322a691a33342a691a36342a69270f1a37342a691a3a342a692c2a691a3a342a691a3d342a6927091a3e342a691a41342a692c2a691a41342a691a44342a6927091a45342a691a48342a692c2a691a48342a691a4b342a6927091a4c342a693b3c3b3b2d6805333cab220d2a691a791b351a3d34222438693b2a3d3c6b642a0c642a2a0c64291a3034691a34342a691a37342a691a3a342a691a3d342a69312a691a3d342a691a40342a69270e1a41342a691a44342a692c2a691a44342a691a47342a6927081a48342a691a4b342a692c2a691a4b342a691a4e342a6927081a4f342a693b3c3b3b2d6805293b691a48342a691a4b342a693b3c3b3b2d6805270cf7aa1a2212363ca203061a3b34f79d1a22123529352810a0f8a40122133529362a372b382217363cab293ba203061a1f34f76601293cab293ba203051a193402e62b362a3cab2a2a691ae41a352a2a0c642d3ca203051a073402b32f382e3cab2a2a691aca1a352a2a0c64313da203051af53302803335323cab2a2a691ac81a352a2a0c64220c3ea203051ae233024c220e37220d3cab2a2a691a931a352a2a0c6422123922113cab2a2a691a811a352a2a0c64291ac033691ac4332a691ac7332a691aca332a691acd332a69322a691acd332a691ad0332a69270f1ad1332a691ad4332a692c2a691ad4332a691ad7332a6927091ad8332a691adb332a692c2a691adb332a691ade332a6927091adf332a691ae2332a692c2a691ae2332a691ae5332a6927091ae6332a693b3c3b3b2d68052d3ca203051add3302442d3cab302a69221c38352a2a0c64303cab342a69221f38352a2a0c64291ac333691ac7332a691aca332a691acd332a691ad0332a69312a691ad0332a691ad3332a69270d1ad4332a691ad7332a692c2a691ad7332a691ada332a6927091adb332a693b3c3b3b2d6805293b691ad4332a691ad7332a693b3c3b3b2d6805270bf7ed182213363ca203061ac733f7e01822133529352811a0f8bd0122143529362a372b382218363cab293ba203061aab33f77f01293cab2c2a691aef18351aa333221b38693b2a3e3c6b642a0c642a2a0c642c3ca203061a9233f73d012c3cab302a691ade18351a8a332a0c642a2a0c642f3cab293ba203051a803302e831362a3cab2a2a691aeb18352a2a0c642d3ca203051a6e3302b5220c382e3cab2a2a691ad018352a2a0c64313da203051a5b330281221035323cab2a2a691acd18352a2a0c64220c3ea203051a4733024c221437220d3cab2a2a691a9818352a2a0c6422183922113cab2a2a691a8618352a2a0c64291a2533691a29332a691a2c332a691a2f332a691a32332a69322a691a32332a691a35332a69270f1a36332a691a39332a692c2a691a39332a691a3c332a6927091a3d332a691a40332a692c2a691a40332a691a43332a6927091a44332a691a47332a692c2a691a47332a691a4a332a6927091a4b332a693b3c3b3b2d6805291a4633691a4a332a691a4d332a691a50332a691a53332a69322a691a53332a691a56332a69270e1a57332a691a5a332a692c2a691a5a332a691a5d332a6927081a5e332a693b3c3b3b2d6805293b691a57332a691a5a332a693b3c3b3b2d6805270bf717172214363ca203061a4a33f70a1722143529352812a0f8e20122153529362a372b382c39221a363cab293ba203061a2c33f7a201293cab2b2a691a2833352a2a0c642c3ca203061a2333f770012c3cab312a691a1717351a1b332a0c642a2a0c642f3da203061a1433f738012f3cab332a691a4017352a2a0c64323cab293ba203051a003302e9220c362a3cab2a2a691a0a17352a2a0c642d3ca203051aed3202b52210382e3cab2a2a691aef16352a2a0c64313da203051ada320281221435323cab2a2a691aec16352a2a0c64220c3ea203051ac632024c221837220d3cab2a2a691ab716352a2a0c64221c3922113cab2a2a691aa516352a2a0c64291aa432691aa8322a691aab322a691aae322a691ab1322a69322a691ab1322a691ab4322a69270f1ab5322a691ab8322a692c2a691ab8322a691abb322a6927091abc322a691abf322a692c2a691abf322a691ac2322a6927091ac3322a691ac6322a692c2a691ac6322a691ac9322a6927091aca322a693b3c3b3b2d6805291ac532691ac9322a691acc322a691acf322a691ad2322a69322a691ad2322a691ad5322a69270e1ad6322a691ad9322a692c2a691ad9322a691adc322a6927081add322a691ae0322a692c2a691ae0322a691ae3322a6927081ae4322a693b3c3b3b2d6805293b691add322a691ae0322a693b3c3b3b2d6805270cf71c152215363ca203061ad032f70f1522153529352813a0f83a0222163529362218363cab293ba203061ab832f700022a352a3cab2a2a691a2215351aae32221c38693b2a3d3d6b642a0c642a2a0c642d3ca203061a9d32f7bc012e362e3cab2a2a691af714351a9332222038693b2a3d3d6b642a0c642a2a0c64313da203061a8232f778013237323cab2a2a691afc14352a2a0c64220c3ea203061a6e32f74301220d38220d3cab293ba203051a643202e62a362a3cab2a2a691ae714352a2a0c642d3ca203051a523202b32e382e3cab2a2a691acd14352a2a0c64313da203051a403202803235323cab2a2a691acb14352a2a0c64220c3ea203051a2d32024c220d37220d3cab2a2a691a9614352a2a0c6422113922113cab2a2a691a8414352a2a0c64291a0b32691a0f322a691a12322a691a15322a691a18322a69322a691a18322a691a1b322a69270f1a1c322a691a1f322a692c2a691a1f322a691a22322a6927091a23322a691a26322a692c2a691a26322a691a29322a6927091a2a322a691a2d322a692c2a691a2d322a691a30322a6927091a31322a693b3c3b3b2d680522123922123cab2a2a691ac313351a1f322a0c642a2a0c64291a1c32691a20322a691a23322a691a26322a691a29322a69322a691a29322a691a2c322a6927101a2d322a691a30322a692c2a691a30322a691a33322a6927091a34322a691a37322a692c2a691a37322a691a3a322a6927091a3b322a691a3e322a692c2a691a3e322a691a41322a6927091a42322a693b3c3b3b2d6805293b691a3b322a691a3e322a693b3c3b3b2d68052709f7c9122216363ca203061a2e32f7bc1222163529352814a0f82a0222173529362219363cab293ba203061a1632f7f0012a352a3cab2a2a691ad012351a0c322a0c642a2a0c642d3ca203061a0532f7b6012e362e3cab293ba203051afd3102e62a362a3cab2a2a691ae812352a2a0c642d3ca203051aeb3102b32e382e3cab2a2a691ace12352a2a0c64313da203051ad93102803235323cab2a2a691acc12352a2a0c64220c3ea203051ac631024c220d37220d3cab2a2a691a9712352a2a0c6422113922113cab2a2a691a8512352a2a0c64291aa431691aa8312a691aab312a691aae312a691ab1312a69322a691ab1312a691ab4312a69270f1ab5312a691ab8312a692c2a691ab8312a691abb312a6927091abc312a691abf312a692c2a691abf312a691ac2312a6927091ac3312a691ac6312a692c2a691ac6312a691ac9312a6927091aca312a693b3c3b3b2d6805323da203051ac13102923338333cab2a2a691abc11351ab8312a0c642a2a0c64220d3ea203051ab0310258220e39220e3cab2a2a691a9911351aa5312a0c642a2a0c6422123722123cab2a2a691a8111351a95312a0c642a2a0c64291a9231691a96312a691a99312a691a9c312a691a9f312a69322a691a9f312a691aa2312a69270f1aa3312a691aa6312a692c2a691aa6312a691aa9312a6927091aaa312a691aad312a692c2a691aad312a691ab0312a69270a1ab1312a691ab4312a692c2a691ab4312a691ab7312a6927091ab8312a693b3c3b3b2d6805293b691ab1312a691ab4312a693b3c3b3b2d68052709f786102217363ca203061aa431f7791022173529352815a0f8a60122183529362a372b38221c363cab293ba203061a8831f76801293cab2d2a69221d38352a2a0c642c3ca203061a7731f736012c3cab293ba203051a713102e72e362a3cab2a2a691aac10352a2a0c642d3ca203051a5f3102b432382e3cab2a2a691a9210352a2a0c64313da203051a4d310281220d35323cab2a2a691a8f10352a2a0c64220c3ea203051a3931024c221137220d3cab2a2a691a5a10352a2a0c6422153922113cab2a2a691a4810352a2a0c64291a1731691a1b312a691a1e312a691a21312a691a24312a69322a691a24312a691a27312a69270f1a28312a691a2b312a692c2a691a2b312a691a2e312a6927091a2f312a691a32312a692c2a691a32312a691a35312a6927091a36312a691a39312a692c2a691a39312a691a3c312a6927091a3d312a693b3c3b3b2d6805303cab332a69222438352a2a0c64291a2a31691a2e312a691a31312a691a34312a691a37312a69312a691a37312a691a3a312a69270e1a3b312a691a3e312a692c2a691a3e312a691a41312a6927081a42312a693b3c3b3b2d6805293b691a3b312a691a3e312a693b3c3b3b2d6805270bf7c70e2218363ca203061a2e31f7ba0e22183529352816a0f85e0122193529362a37221c363cab293ba203061a1431f72201293cab2c2a69221d38352a2a0c642c3cab293ba203051a003102e72e362a3cab2a2a691afb0e352a2a0c642d3ca203051aee3002b432382e3cab2a2a691ae10e352a2a0c64313da203051adc300281220d35323cab2a2a691ade0e352a2a0c64220c3ea203051ac830024c221137220d3cab2a2a691aa90e352a2a0c6422153922113cab2a2a691a970e352a2a0c64291aa630691aaa302a691aad302a691ab0302a691ab3302a69322a691ab3302a691ab6302a69270f1ab7302a691aba302a692c2a691aba302a691abd302a6927091abe302a691ac1302a692c2a691ac1302a691ac4302a6927091ac5302a691ac8302a692c2a691ac8302a691acb302a6927091acc302a693b3c3b3b2d6805291ac730691acb302a691ace302a69302a69270a1acc302a693b3c3b3b2d6805293b691ac5302a691ac8302a693b3c3b3b2d6805270af7500d2219363ca203061ab830f7430d22193529352817a0f85e01221a3529362a37221d363cab293ba203061a9e30f72201293cab2c2a69221e38352a2a0c642c3cab293ba203051a8a3002e72e362a3cab2a2a691a850d352a2a0c642d3ca203051a783002b432382e3cab2a2a691a6b0d352a2a0c64313da203051a66300281220d35323cab2a2a691a680d352a2a0c64220c3ea203051a5230024c221137220d3cab2a2a691a330d352a2a0c6422153922113cab2a2a691a210d352a2a0c64291a3030691a34302a691a37302a691a3a302a691a3d302a69322a691a3d302a691a40302a69270f1a41302a691a44302a692c2a691a44302a691a47302a6927091a48302a691a4b302a692c2a691a4b302a691a4e302a6927091a4f302a691a52302a692c2a691a52302a691a55302a6927091a56302a693b3c3b3b2d6805291a5130691a55302a691a58302a69302a69270a1a56302a693b3c3b3b2d6805293b691a4f302a691a52302a693b3c3b3b2d6805270af7d90b221a363ca203061a4230f7cc0b221a3529352818a0f8db01221b3529362a372b382c392220363cab293ba203061a2430f79b01293cab2c2a691a2030352a2a0c642c3ca203061a1b30f769012c3cab293ba203051a153002e72e362a3cab2a2a691a000c352a2a0c642d3ca203051a033002b432382e3cab2a2a691ae60b352a2a0c64313da203051af12f0281220d35323cab2a2a691ae30b352a2a0c64220c3ea203051add2f024c221137220d3cab2a2a691aae0b352a2a0c6422153922113cab2a2a691a9c0b352a2a0c64291abb2f691abf2f2a691ac22f2a691ac52f2a691ac82f2a69322a691ac82f2a691acb2f2a69270f1acc2f2a691acf2f2a692c2a691acf2f2a691ad22f2a6927091ad32f2a691ad62f2a692c2a691ad62f2a691ad92f2a6927091ada2f2a691add2f2a692c2a691add2f2a691ae02f2a6927091ae12f2a693b3c3b3b2d6805303da203051ad82f0246303cab220c2a691a1c0b352a2a0c64333cab220e2a691aed2e352a2a0c64291abc2f691ac02f2a691ac32f2a691ac62f2a691ac92f2a69312a691ac92f2a691acc2f2a69270d1acd2f2a691ad02f2a692c2a691ad02f2a691ad32f2a6927091ad42f2a691ad72f2a692c2a691ad72f2a691ada2f2a6927081adb2f2a693b3c3b3b2d6805293b691ad42f2a691ad72f2a693b3c3b3b2d6805270cf7e509221b363ca203061ac72ff7d809221b3529352819a0f8bd01221c3529362a372b382220363cab293ba203061aab2ff77f01293cab2c2a691a070a351aa32f2a0c642a2a0c642c3ca203061a9c2ff747012c3cab302a691ad009351a942f222638693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051a802f02e831362a3cab2a2a691aeb09352a2a0c642d3ca203051a6e2f02b5220c382e3cab2a2a691ad009352a2a0c64313da203051a5b2f0281221035323cab2a2a691acd09352a2a0c64220c3ea203051a472f024c221437220d3cab2a2a691a9809352a2a0c6422183922113cab2a2a691a8609352a2a0c64291a252f691a292f2a691a2c2f2a691a2f2f2a691a322f2a69322a691a322f2a691a352f2a69270f1a362f2a691a392f2a692c2a691a392f2a691a3c2f2a6927091a3d2f2a691a402f2a692c2a691a402f2a691a432f2a6927091a442f2a691a472f2a692c2a691a472f2a691a4a2f2a6927091a4b2f2a693b3c3b3b2d6805291a462f691a4a2f2a691a4d2f2a691a502f2a691a532f2a69322a691a532f2a691a562f2a69270e1a572f2a691a5a2f2a692c2a691a5a2f2a691a5d2f2a6927081a5e2f2a693b3c3b3b2d6805293b691a572f2a691a5a2f2a693b3c3b3b2d6805270bf70f08221c363ca203061a4a2ff70208221c352935281aa0f86e01221d3529362a372220363cab293ba203061a302ff73201293cab2c2a691a1c08351a282f222336693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a142f02e72e362a3cab2a2a691a3708352a2a0c642d3ca203051a022f02b432382e3cab2a2a691a1d08352a2a0c64313da203051af02e0281220d35323cab2a2a691a1a08352a2a0c64220c3ea203051adc2e024c221137220d3cab2a2a691ae507352a2a0c6422153922113cab2a2a691ad307352a2a0c64291aba2e691abe2e2a691ac12e2a691ac42e2a691ac72e2a69322a691ac72e2a691aca2e2a69270f1acb2e2a691ace2e2a692c2a691ace2e2a691ad12e2a6927091ad22e2a691ad52e2a692c2a691ad52e2a691ad82e2a6927091ad92e2a691adc2e2a692c2a691adc2e2a691adf2e2a6927091ae02e2a693b3c3b3b2d6805291adb2e691adf2e2a691ae22e2a69302a69270a1ae02e2a693b3c3b3b2d6805293b691ad92e2a691adc2e2a693b3c3b3b2d6805270af78806221d363ca203061acc2ef77b06221d352935281ba0f81f01221e3529362220363cab293ba203051ab42e02e62a362a3cab2a2a691adf06352a2a0c642d3ca203051aa22e02b32e382e3cab2a2a691ac506352a2a0c64313da203051a902e02803235323cab2a2a691ac306352a2a0c64220c3ea203051a7d2e024c220d37220d3cab2a2a691a8e06352a2a0c6422113922113cab2a2a691a7c06352a2a0c64291a5b2e691a5f2e2a691a622e2a691a652e2a691a682e2a69322a691a682e2a691a6b2e2a69270f1a6c2e2a691a6f2e2a692c2a691a6f2e2a691a722e2a6927091a732e2a691a762e2a692c2a691a762e2a691a792e2a6927091a7a2e2a691a7d2e2a692c2a691a7d2e2a691a802e2a6927091a812e2a693b3c3b3b2d6805293b691a7a2e2a691a7d2e2a693b3c3b3b2d68052709f75005221e363ca203061a6d2ef74305221e352935281ca0f81302221f3529362a392222363cab293ba203061a532ef7d701293cab2c2a691a5f05351a4b2e22252307693b2a3e3c6b642a0c642a2a0c642c3ca203061a392ef794012c3cab293ba203051a332e020a293cab2a3cab1a302e651a342e2a693b3c3b3b2d6805303da203061a2b2ef74d01303cab293ba203051a252e020a293cab2a3cab1a222e651a262e2a693b3c3b3b2d6805343cab293ba203051a1a2e02e9220d362a3cab2a2a691a1c05352a2a0c642d3ca203051a072e02b52211382e3cab2a2a691a0105352a2a0c64313da203051af42d0281221535323cab2a2a691afe04352a2a0c64220c3ea203051ae02d024c221937220d3cab2a2a691ac904352a2a0c64221d3922113cab2a2a691ab704352a2a0c64291abe2d691ac22d2a691ac52d2a691ac82d2a691acb2d2a69322a691acb2d2a691ace2d2a69270f1acf2d2a691ad22d2a692c2a691ad22d2a691ad52d2a6927091ad62d2a691ad92d2a692c2a691ad92d2a691adc2d2a6927091add2d2a691ae02d2a692c2a691ae02d2a691ae32d2a6927091ae42d2a693b3c3b3b2d6805291adf2d691ae32d2a691ae62d2a691ae92d2a691aec2d2a69322a691aec2d2a691aef2d2a69270f1af02d2a691af32d2a692c2a691af32d2a691af62d2a6927091af72d2a691afa2d2a692c2a691afa2d2a691afd2d2a6927081afe2d2a693b3c3b3b2d6805293b691af72d2a691afa2d2a693b3c3b3b2d6805270af72403221f363ca203061aea2df71703221f352935281da0f8e20122203529362a372b382c392225363cab293ba203061acc2df7a201293cab2e2a69222638352a2a0c642c3ca203061abb2df770012c3cab2e2a691a2f03351ab32d2a0c642a2a0c642f3da203061aac2df738012f3cab293ba203051aa62d02e832362a3cab2a2a691a3103352a2a0c642d3ca203051a942d02b5220d382e3cab2a2a691a1603352a2a0c64313da203051a812d0281221135323cab2a2a691a1303352a2a0c64220c3ea203051a6d2d024c221537220d3cab2a2a691ade02352a2a0c6422193922113cab2a2a691acc02352a2a0c64291a4b2d691a4f2d2a691a522d2a691a552d2a691a582d2a69322a691a582d2a691a5b2d2a69270f1a5c2d2a691a5f2d2a692c2a691a5f2d2a691a622d2a6927091a632d2a691a662d2a692c2a691a662d2a691a692d2a6927091a6a2d2a691a6d2d2a692c2a691a6d2d2a691a702d2a6927091a712d2a693b3c3b3b2d6805333cab220e2a69223038352a2a0c64291a5d2d691a612d2a691a642d2a691a672d2a691a6a2d2a69312a691a6a2d2a691a6d2d2a69270e1a6e2d2a691a712d2a692c2a691a712d2a691a742d2a6927081a752d2a691a782d2a692c2a691a782d2a691a7b2d2a6927081a7c2d2a693b3c3b3b2d6805293b691a752d2a691a782d2a693b3c3b3b2d6805270cf729012220363ca203061a682df71c0122203529362222363cab293ba203051a5b2d02e62a362a3cab2a2a691a8e01352a2a0c642d3ca203051a492d02b32e382e3cab2a2a691a7401352a2a0c64313da203051a372d02803235323cab2a2a691a7201352a2a0c64220c3ea203051a242d024c220d37220d3cab2a2a691a3d01352a2a0c6422113922113cab2a2a691a2b01352a2a0c64291a022d691a062d2a691a092d2a691a0c2d2a691a0f2d2a69322a691a0f2d2a691a122d2a69270f1a132d2a691a162d2a692c2a691a162d2a691a192d2a6927091a1a2d2a691a1d2d2a692c2a691a1d2d2a691a202d2a6927091a212d2a691a242d2a692c2a691a242d2a691a272d2a6927091a282d2a693b3c3b3b2d6805293b691a212d2a691a242d2a693b3c3b3b2d68052709646464646464646464646464646464646464646464646464646464646464420000|@7955,1,@13605,@2535,@4429,@118,@17377,@4429,@116,@7962,@4429,@115,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@17383,@17384,@5552,@1323,@7968,@1323,@5556,@1323,@7970,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7972,@1323,@5556,@1323,@7974,@1323,@5556,@1323,@7976,@5559,@1323,@7978,@2535,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@7986,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7988,@5559,@1323,@7990,@2535,@4429,@4429,@7997,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@7999,@1323,@5556,@1323,@8001,@1323,@5556,@1323,@7868,@1323,@5556,@1323,@5953,@5559,@1323,@8003,@2535,@4429,@8010,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@17387,@5552,@1323,@6200,@1323,@5556,@1323,@8013,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8015,@1323,@5556,@1323,@7868,@5559,@1323,@8017,@2535,@4429,@8024,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@8030,@5552,@1323,@8036,@1323,@5556,@1323,@8038,@1323,@5556,@1323,@6200,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8040,@1323,@5556,@1323,@8042,@5559,@1323,@8044,@2535,@4429,@152,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5912,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8048,@5559,@1323,@8050,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8057,@1323,@5556,@1323,@8059,@1323,@5556,@1323,@8061,@1323,@5556,@1323,@8063,@1323,@5556,@1323,@5838,@5559,@1323,@8065,@2535,@4429,@159,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@8095,@5552,@1323,@8097,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8099,@5559,@1323,@8101,@2535,@8108,@2535,@1318,@17396,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@8116,@2535,@1318,@17397,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@8129,@2535,@4429,@8136,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@17402,@5552,@1323,@8138,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7868,@5559,@1323,@8140,@2535,@4429,@17403,@4429,@4429,@8148,@5559,@4429,@4429,@8148,@5559,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@8153,@1323,@5556,@1323,@8155,@1323,@5556,@1323,@8157,@5559,@1323,@8159,@2535,@4429,@4429,@17404,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@8015,@1323,@5556,@1323,@8166,@1323,@5556,@1323,@6455,@5559,@1323,@8168,@2535,@4429,@8175,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@8177,@8180,@5552,@1323,@5912,@1323,@5556,@1323,@8182,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7868,@5559,@1323,@8184,@2535,@4429,@8191,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@17409,@5552,@1323,@5964,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7844,@1323,@5556,@1323,@7868,@5559,@1323,@8199,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@5552,@1323,@8206,@1323,@5556,@1323,@8208,@1323,@5556,@1323,@5838,@5559,@1323,@8210,@2535,@4429,@17411,@4429,@8217,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@7868,@1323,@5556,@1323,@8219,@5559,@1323,@8221,@2535,@4429,@156,@4429,@8228,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@8230,@1323,@5556,@1323,@7868,@1323,@5556,@1323,@8232,@5559,@1323,@8234,@2535,@4429,@17414,@4429,@17418,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@8253,@5552,@1323,@8257,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8259,@1323,@5556,@1323,@8261,@1323,@5556,@1323,@6484,@5559,@1323,@8263,@2535,@4429,@8270,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@8373,@4429,@8377,@8381,@5552,@1323,@8385,@1323,@5556,@1323,@8387,@1323,@5556,@1323,@8389,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8261,@5559,@1323,@8391,@2535,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@7986,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7988,@5559,@1323,@8398,@2535,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@8405,@2535,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@8412,@2535,@4429,@155,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@5552,@1323,@5962,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8416,@5559,@1323,@8418,@2535,@4429,@8425,@4429,@17459,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@6635,@1323,@5556,@1323,@7868,@5559,@1323,@8427,@2535,@1318,@17460,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@8434,@2535,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1323,@8441,@2535,@4429,@17461,@4429,@4429,@8148,@5559,@4429,@4429,@8148,@5559,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@8153,@1323,@5556,@1323,@8155,@1323,@5556,@1323,@8157,@5559,@1323,@8449,@2535,@4429,@4429,@8456,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@6200,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8462,@1323,@5556,@1323,@6484,@5559,@1323,@8464,@2535,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1323,@7954| 17377:D10,88|fb0e2b363ba20304fa6602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa4f35fa542a0c642a2a0c6429fa5269fa572a69fa5b2a69302a69270bfa5a2a693b3c3b3b2d6805654200000000000000|@268,1,@13606,@1318,@116,@7956,@2625,@1323,@5556,@2627| 17378:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13607,@9,@7958| 17379:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13608,@116,@7960| 17380:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13609,@115| 17381:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13610,@118,@7964| 17382:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13611,@115| 17383:D3,16|fb052936352c2a2d7d04000000000000|@7966,1,@13612| 17384:D3,16|fb052936352c2a2d7d04000000000000|@7967,1,@13613| 17385:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13614,@155| 17386:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13615,@155| 17387:D3,16|fb052936352c2a2d7d04000000000000|@8012,1,@13616| 17388:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13617,@9,@8026| 17389:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13618,@116,@8028| 17390:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13619,@115| 17391:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13620,@9,@8032| 17392:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13621,@116,@8034| 17393:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13622,@115| 17394:D18,328|fb112b363ca203061a5501f738012b3529353ba0038c2c3529362e363cab2a2a691a4401352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a2601a003033c020f291a2401a003033c0205291a2201a06402013b9102013b02013b03192a1a1801691a1c012a691a1f012a693b3e3c3b2d68056602012a64020129293b691a10012a691a13012a693b3c3b3b2d6805270902a32c363ca203051a050102982c3529353ca003832d3529362f363cab2a2a69faa6352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa89a003033c020d29fa88a003033c020429fa87a06402013b9102013b02013b03162afa7e69fa832a69fa872a693b3e3c3b2d68056602012a64020129293b69fa912a69fa952a693b3c3b3b2d68052709020c2d363ca20304fa880202fa8c64644200|@8074,1,@13623,@2535,@75,@594,@595,@596,@2624,@1500,@2627,@1323,@8075,@2535,@1323,@8082,@2535,@8073| 17395:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@13624,@7| 17396:D3,16|fb052936352c2a2d7d04000000000000|@8115,1,@13625| 17397:D10,88|fb0e2b363ba20304fa6602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa4f35fa542a0c642a2a0c6429fa5269fa572a69fa5b2a69302a69270bfa5a2a693b3c3b3b2d6805654200000000000000|@268,1,@13626,@1318,@116,@8123,@2625,@1323,@5556,@2627| 17398:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13627,@9,@8125| 17399:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13628,@116,@8127| 17400:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13629,@115| 17401:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13630,@155| 17402:D3,16|fb052936352c2a2d7d04000000000000|@8012,1,@13631| 17403:D3,16|fb052936352c2a2d7d04000000000000|@8147,1,@13632| 17404:D3,16|fb052936352c2a2d7d04000000000000|@8012,1,@13633| 17405:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13634,@155| 17406:D4,8|fb02fa1c42000000|@8179,1,@13635,@6882| 17407:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13636,@156| 17408:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13637,@155| 17409:D79,768|fb2d2b363ba203061a0d03f7df022b35362c363cab2a2a691a0503351a09032a0c642a2a0c642f363ca203061a0103f7a2022f353930363cab293ba203051af70202e62a362a3cab2a2a691af202352a2a0c642d3ca203051aed0202b32e382e3cab2a2a691ad802352a2a0c64313da203051adb0202803235323cab2a2a691ad602352a2a0c64220c3ea203051ad002024c220d37220d3cab2a2a691aa102352a2a0c6422113922113cab2a2a691a8f02352a2a0c64291aae02691ab2022a691ab5022a691ab8022a691abb022a69322a691abb022a691abe022a69270f1abf022a691ac2022a692c2a691ac2022a691ac5022a6927091ac6022a691ac9022a692c2a691ac9022a691acc022a6927091acd022a691ad0022a692c2a691ad0022a691ad3022a6927091ad4022a693b3c3b3b2d680534363da203061aca02f77a01343535220c363cab2a2a691a0902352a2a0c64220f363ea203061ab202f74101220f35372210363cab293ba203051aa60202e62a362a3cab2a2a691ac101352a2a0c642d3ca203051a940202b32e382e3cab2a2a691aa701352a2a0c64313da203051a820202803235323cab2a2a691aa501352a2a0c64220c3ea203051a6f02024c220d37220d3cab2a2a691a7001352a2a0c6422113922113cab2a2a691a5e01352a2a0c64291a4d02691a51022a691a54022a691a57022a691a5a022a69322a691a5a022a691a5d022a69270f1a5e022a691a61022a692c2a691a61022a691a64022a6927091a65022a691a68022a692c2a691a68022a691a6b022a6927091a6c022a691a6f022a692c2a691a6f022a691a72022a6927091a73022a693b3c3b3b2d6805221435382215363cab2a2a69221536352a2a0c64291a5a02691a5e022a691a61022a691a64022a691a67022a69322a691a67022a691a6a022a6927101a6b022a691a6e022a692c2a691a6e022a691a71022a6927091a72022a691a75022a692c2a691a75022a691a78022a69270a1a79022a691a7c022a692c2a691a7c022a691a7f022a6927091a80022a693b3c3b3b2d680565420000000000|@268,1,@13638,@4429,@116,@8194,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8196,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8193,@1323,@5556,@1323,@7868,@5559| 17410:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13639,@155| 17411:D3,16|fb052936352c2a2d7d04000000000000|@7955,1,@13640| 17412:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13641,@155| 17413:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13642,@155| 17414:D10,88|fb0e2b363ba20304fa6602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa4f35fa542a0c642a2a0c6429fa5269fa572a69fa5b2a69302a69270bfa5a2a693b3c3b3b2d6805654200000000000000|@268,1,@13643,@1318,@116,@8241,@2625,@1323,@5556,@2627| 17415:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13644,@9,@8243| 17416:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13645,@116,@8245| 17417:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13646,@115| 17418:D10,88|fb0e2b363ba20304fa6602382b35352c363cab2a2a692c36352a2a0c642f353630363cab2a2a69fa4f35fa542a0c642a2a0c6429fa5269fa572a69fa5b2a69302a69270bfa5a2a693b3c3b3b2d6805654200000000000000|@268,1,@13647,@1318,@116,@8247,@2625,@1323,@5556,@2627| 17419:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13648,@9,@8249| 17420:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13649,@116,@8251| 17421:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13650,@115| 17422:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13651,@118,@8255| 17423:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13652,@156| 17424:D45,408|fb202b363ba203061aa501f779012b35372c363cab293ba203051a9b0102e62a362a3cab2a2a691a9601352a2a0c642d3ca203051a910102b32e382e3cab2a2a691a7c01352a2a0c64313da203051a7f0102803235323cab2a2a691a7a01352a2a0c64220c3ea203051a7401024c220d37220d3cab2a2a691a4501352a2a0c6422113922113cab2a2a691a3301352a2a0c64291a5201691a56012a691a59012a691a5c012a691a5f012a69322a691a5f012a691a62012a69270f1a63012a691a66012a692c2a691a66012a691a69012a6927091a6a012a691a6d012a692c2a691a6d012a691a70012a6927091a71012a691a74012a692c2a691a74012a691a77012a6927091a78012a693b3c3b3b2d680530363ca203051a6e01025230353531363cab2a2a69fab0352a2a0c64343536220c363cab2a2a691a5501351a59012a0c642a2a0c64291a5601691a5a012a691a5d012a691a60012a691a63012a69322a691a63012a691a66012a69270f1a67012a691a6a012a692c2a691a6a012a691a6d012a69270a1a6e012a693b3c3b3b2d68056542000000|@268,1,@13653,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@116,@8272,@5552,@1323,@5912,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5838,@5559| 17425:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13654,@9,@8274| 17426:D4,16|fb05fa24352c2a2d7d04000000000000|@8276,1,@13655,@160| 17427:D28,232|fb1c2b363ca20304faf602d82b352c363cab293ba20304faef02aa2a362a3cab2a2a692e38352a2a0c642d3ca20304fadf027d2e382e3cab2a2a69fadb35fae03437693b2a3e3c6b642a0c642a2a0c64313da20304fad102423235323cab2a2a69facd352a2a0c64220d37220d3cab2a2a69221136352a2a0c6429fabb69fac02a69fac42a69fac82a69facc2a69322a69facd2a69fad12a69270ffad32a69fad72a692c2a69fad82a69fadc2a692709fade2a69fae22a692c2a69fae32a69fae72a692709fae92a693b3c3b3b2d6805293b69fae32a69fae72a693b3c3b3b2d6805270842000000|@8276,1,@13656,@2535,@4429,@4429,@118,@17428,@4429,@7,@5552,@1323,@8279,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@5844,@5559,@1323,@8278| 17428:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@13657| 17429:D37,344|fb1c2b363ca203061a6501f749012b352c363cab293ba203061a5c01f716012a372a3cab2a2a691a5601351a5a013037693b2a3e3c6b642a0c642a2a0c642d3ca203051a4a0102d42e3a2e3cab2a2a691a4501352a2a0c64313da203051a400102a13238323cab2a2a691a1301351a3701220f36693b2a3e3c6b642a0c642a2a0c64220c3ea203051a2501025d220d36220d3cab2a2a691a1e01352a2a0c6422103fa203051a1801022722113522113cab2a2a691a1101352a2a0c6422143cab2a1a0c01691a10012a691a13012a6927071a14012a691a17012a692c2a691a17012a691a1a012a6927091a1b012a691a1e012a692c2a691a1e012a691a21012a6927091a22012a691a25012a692c2a691a25012a691a28012a6927091a29012a691a2c012a692c2a691a2c012a691a2f012a6927091a30012a693b3c3b3b2d6805293b691a29012a691a2c012a693b3c3b3b2d6805270842|@8288,1,@13658,@2535,@4429,@118,@17430,@4429,@75,@4429,@17431,@4429,@7,@4429,@162,@8357,@1323,@8362,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@8364,@1323,@5556,@1323,@8366,@5559,@1323,@8287| 17430:D3,16|fb052936352c2a2d7d04000000000000|@5837,1,@13659| 17431:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@13660| 17432:D14,152|fb0e2b363ca20304faa602842b352c363cab2a2a69faa135faa62a0c642a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa87a003033c020d29fa86a003033c020429fa85a06402013b9102013b02013b03162afa7c69fa812a69fa852a693b3e3c3b2d68056602012a64020129293b69fa772a69fa7b2a693b3c3b3b2d680527084200000000000000|@8291,1,@13661,@2535,@163,@8345,@594,@595,@596,@2624,@1500,@2627,@1323,@8290| 17433:D4,16|fb04fa242c2b366a4200000000000000|@8293,1,@13662,@17434| 17434:D34,344|fb192b363ca203061a6501f746012b3529353ba003692c3529372e363cab293ba203051a52010233293cab2b2a691a4f01351a5301313632376a3b2a3e3c6b642a0c642a2a0c642c3cab2a1a4201691a46012a691a49012a6927061a4a012a693b3c3b3b2d6805293b691a43012a691a46012a693b3c3b3b2d6805270902d42c363ca203051a380102c92c3529362a372b3830363cab293ba203051a2a010291293cab2b2a691a2701351a2b01333634376a3b2a3d3c6b642a0c642a2a0c642c3ca203051a1901024f2c3cab302a691afe00351a12012a0c642a2a0c642f3cab322a69faeb351a07012a0c642a2a0c64291a0401691a08012a691a0b012a691a0e012a691a11012a69312a691a11012a691a14012a69270d1a15012a691a18012a692c2a691a18012a691a1b012a6927081a1c012a693b3c3b3b2d6805293b691a15012a691a18012a693b3c3b3b2d6805270b6442000000|@8295,1,@13663,@2535,@4429,@165,@17439,@8301,@1323,@8306,@5559,@1323,@8308,@2535,@4429,@116,@17440,@4429,@8320,@8322,@5552,@1323,@8324,@1323,@5556,@1323,@8304,@1323,@5556,@1323,@8306,@5559,@1323,@8294| 17435:D4,8|fb03fa1c2c694200|@274,1,@13664,@17436| 17436:D5,24|fb092b362a36362d3529fa242c692dfa27317b0506000000|@5876,1,@13665,@17437,@8297| 17437:D3,16|fb042c2c692a362c7d04000000000000|@8298,1,@13666| 17438:D9,176|fb182d93293cab2d3ba40304faba028e2d2aabfabb2a6931932a2a293ba003042a350276293cb22a3cb22b3cb2220e2a3bdb2e352f360b02002c3ba0030d2c3caa2afa94452a465050023a2c3ba2030c2c3caa2a3b452a46505002292c3cab2f2a22160c322211a091030bfa733069fa772a696402012f2a2a69303caa2e2b452a4650260529352a362a2a6929220c250e250e260c1e7a3b270c65292704fa502a693b3e3b3b2d680527044400000000|@8299,1,@13667,@6597,@6600,@6597,@615,@6602,@6595| 17439:D3,32|fb092937352a36362b36372c36383b2c2c2c6b662a0c642c2a2d7d0400000000|@8300,1,@13668| 17440:D5,32|fb07fa3435fa392b362c376a3b2a3e3c6b642a0c642c2a2d7d04000000000000|@8315,1,@13669,@166,@17441| 17441:D3,32|fb092937352a36362b36372c36383b2c2c2c6b662a0c642c2a2d7d0400000000|@8300,1,@13674| 17442:D4,8|fb03fa1c2c694200|@274,1,@13670,@17443| 17443:D5,24|fb092b362a36362d3529fa242c692dfa27317b0506000000|@5876,1,@13671,@17444,@8317| 17444:D3,16|fb042c2c692a362c7d04000000000000|@8318,1,@13672| 17445:D9,176|fb182d93293cab2d3ba40304faba028e2d2aabfabb2a6931932a2a293ba003042a350276293cb22a3cb22b3cb2220e2a3bdb2e352f360b02002c3ba0030d2c3caa2afa94452a465050023a2c3ba2030c2c3caa2a3b452a46505002292c3cab2f2a22160c322211a091030bfa733069fa772a696402012f2a2a69303caa2e2b452a4650260529352a362a2a6929220c250e250e260c1e7a3b270c65292704fa502a693b3e3b3b2d680527044400000000|@8319,1,@13673,@6597,@6600,@6597,@615,@6602,@6595| 17446:D4,8|fb02fa1c42000000|@8179,1,@13675,@6882| 17447:D4,16|fb05fa24352c2a2d7d04000000000000|@6869,1,@13676,@75| 17448:D4,8|fb03fa1c2c694200|@8333,1,@13677,@17449| 17449:D14,128|fb112b363ca20304fa8e02712b35293ba00304fa8b02652c363ca20304fa89025b2c3529352a362f363cab293ba20304fa7e0229293cab2c2a69fa7c352a2a0c642c3cab2e2a69643236360c29fa7169fa762a69fa7a2a692d2a692707fa792a693b3c3b3b2d6805293b69fa732a69fa772a693b3c3b3b2d6805270a64420000|@8300,1,@13678,@2535,@8335,@2535,@1318,@7,@2625,@1323,@5556,@2627,@1323,@8334| 17450:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13679,@118,@8347| 17451:D4,16|fb05fa24352c2a2d7d04000000000000|@8349,1,@13680,@136| 17452:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13681,@118,@8375| 17453:D4,16|fb05fa24352c2a2d7d04000000000000|@8276,1,@13682,@160| 17454:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13683,@118,@8379| 17455:D4,16|fb05fa24352c2a2d7d04000000000000|@7266,1,@13684,@148| 17456:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13685,@118,@8383| 17457:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13686,@156| 17458:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13687,@155| 17459:D3,16|fb052936352c2a2d7d04000000000000|@7955,1,@13688| 17460:D3,16|fb052936352c2a2d7d04000000000000|@7967,1,@13689| 17461:D3,16|fb052936352c2a2d7d04000000000000|@8448,1,@13690| 17462:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13691,@9,@8458| 17463:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13692,@116,@8460| 17464:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13693,@115| 17465:D97,912|fb332b363ca203061a9d03f77f032b352c363cab293ba203061a9403f74c032a372a3cab2a2a691a8e03351a92032a0c642a2a0c642d3ca203061a8b03f712032e382e3cab293ba203051a830302e62a362a3cab2a2a691a7e03352a2a0c642d3ca203051a790302b32e382e3cab2a2a691a6403352a2a0c64313da203051a670302803235323cab2a2a691a6203352a2a0c64220c3ea203051a5c03024c220d37220d3cab2a2a691a2d03352a2a0c6422113922113cab2a2a691a1b03352a2a0c64291a3a03691a3e032a691a41032a691a44032a691a47032a69322a691a47032a691a4a032a69270f1a4b032a691a4e032a692c2a691a4e032a691a51032a6927091a52032a691a55032a692c2a691a55032a691a58032a6927091a59032a691a5c032a692c2a691a5c032a691a5f032a6927091a60032a693b3c3b3b2d6805323da203061a5703f7ed01333a333cab2a2a691a5103352a2a0c64220d3ea203061a4b03f7b801220e35220e3cab2a2a691a7b02352a2a0c6422113fa203061a3503f7810122123922123cab293ba203051a2b0302e62a362a3cab2a2a691a3602352a2a0c642d3ca203051a190302b32e382e3cab2a2a691a1c02352a2a0c64313da203051a070302803235323cab2a2a691a1a02352a2a0c64220c3ea203051af402024c220d37220d3cab2a2a691ae501352a2a0c6422113922113cab2a2a691ad301352a2a0c64291ad202691ad6022a691ad9022a691adc022a691adf022a69322a691adf022a691ae2022a69270f1ae3022a691ae6022a692c2a691ae6022a691ae9022a6927091aea022a691aed022a692c2a691aed022a691af0022a6927091af1022a691af4022a692c2a691af4022a691af7022a6927091af8022a693b3c3b3b2d680522162805a203051aed02025922173622173cab2a2a691ae602351aea022a0c642a2a0c64221b2306221b3cab2a2a691add02351ae1022a0c642a2a0c64291ade02691ae2022a691ae5022a691ae8022a691aeb022a69322a691aeb022a691aee022a69270f1aef022a691af2022a692c2a691af2022a691af5022a69270a1af6022a691af9022a692c2a691af9022a691afc022a6927091afd022a691a00032a692c2a691a00032a691a03032a6927091a04032a691a07032a692c2a691a07032a691a0a032a69270a1a0b032a691a0e032a692c2a691a0e032a691a11032a6927091a12032a693b3c3b3b2d6805293b691a0b032a691a0e032a693b3c3b3b2d68052708420000|@7967,1,@13694,@2535,@4429,@9,@8479,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@115,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@116,@8481,@118,@8483,@5552,@1323,@6025,@1323,@5556,@1323,@8486,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8488,@1323,@5556,@1323,@8490,@1323,@5556,@1323,@8492,@5559,@1323,@8478| 17466:D4,16|fb05fa24352c2a2d7d04000000000000|@7803,1,@13695,@152| 17467:D4,16|fb05fa24352c2a2d7d04000000000000|@7266,1,@13696,@148| 17468:D4,16|fb05fa24352c2a2d7d04000000000000|@8485,1,@13697,@109| 17469:D90,856|fb2f2b363ca203061a6503f745032b352c363cab293ba203061a5c03f712032a372a3cab2a2a691a5603351a5a032a0c642a2a0c642d3ca203061a5303f7d8022e382e3cab293ba203051a4b0302e62a362a3cab2a2a691a4603352a2a0c642d3ca203051a410302b32e382e3cab2a2a691a2c03352a2a0c64313da203051a2f0302803235323cab2a2a691a2a03352a2a0c64220c3ea203051a2403024c220d37220d3cab2a2a691af502352a2a0c6422113922113cab2a2a691ae302352a2a0c64291a0203691a06032a691a09032a691a0c032a691a0f032a69322a691a0f032a691a12032a69270f1a13032a691a16032a692c2a691a16032a691a19032a6927091a1a032a691a1d032a692c2a691a1d032a691a20032a6927091a21032a691a24032a692c2a691a24032a691a27032a6927091a28032a693b3c3b3b2d6805323da203061a1f03f7b3013335333cab2a2a691a6102352a2a0c64220d3ea203061a0b03f77e01220e39220e3cab293ba203051a010302e62a362a3cab2a2a691a1c02352a2a0c642d3ca203051aef0202b32e382e3cab2a2a691a0202352a2a0c64313da203051add0202803235323cab2a2a691a0002352a2a0c64220c3ea203051aca02024c220d37220d3cab2a2a691acb01352a2a0c6422113922113cab2a2a691ab901352a2a0c64291aa802691aac022a691aaf022a691ab2022a691ab5022a69322a691ab5022a691ab8022a69270f1ab9022a691abc022a692c2a691abc022a691abf022a6927091ac0022a691ac3022a692c2a691ac3022a691ac6022a6927091ac7022a691aca022a692c2a691aca022a691acd022a6927091ace022a693b3c3b3b2d680522123fa203051ac402025722133622133cab2a2a691abd02351ac1022a0c642a2a0c6422173a22173cab2a2a69fae6351ab2022a0c642a2a0c64291aaf02691ab3022a691ab6022a691ab9022a691abc022a69322a691abc022a691abf022a69270f1ac0022a691ac3022a692c2a691ac3022a691ac6022a69270a1ac7022a691aca022a692c2a691aca022a691acd022a6927091ace022a691ad1022a692c2a691ad1022a691ad4022a69270a1ad5022a691ad8022a692c2a691ad8022a691adb022a6927091adc022a693b3c3b3b2d6805293b691ad5022a691ad8022a693b3c3b3b2d680527084200000000|@7966,1,@13698,@2535,@4429,@118,@8502,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@116,@8516,@8518,@5552,@1323,@6025,@1323,@5556,@1323,@8486,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8490,@1323,@5556,@1323,@8520,@5559,@1323,@8501| 17470:D52,472|fb2c2b363ba203061ae501f7b9012b35362c363cab2a2a691add01351ae1012a0c642a2a0c642f363ca203061ad901f77c012f353830363cab2a2a691ad101352a2a0c6433363da203061acb01f7450133353734363cab2a2a691ac301351ac7012a0c642a2a0c64220e3535220f363cab293ba203051ab70102e62a362a3cab2a2a691ab201352a2a0c642d3ca203051aad0102b32e382e3cab2a2a691a9801352a2a0c64313da203051a9b0102803235323cab2a2a691a5601352a2a0c64220c3ea203051a8801024c220d37220d3cab2a2a691a6101352a2a0c6422113922113cab2a2a691a4f01352a2a0c64291a6601691a6a012a691a6d012a691a70012a691a73012a69322a691a73012a691a76012a69270f1a77012a691a7a012a692c2a691a7a012a691a7d012a6927091a7e012a691a81012a692c2a691a81012a691a84012a6927091a85012a691a88012a692c2a691a88012a691a8b012a6927091a8c012a693b3c3b3b2d6805291a8701691a8b012a691a8e012a691a91012a691a94012a69332a691a94012a691a97012a6927101a98012a691a9b012a692c2a691a9b012a691a9e012a6927091a9f012a691aa2012a692c2a691aa2012a691aa5012a6927091aa6012a693b3c3b3b2d68056542000000|@268,1,@13699,@4429,@9,@8505,@4429,@7,@4429,@116,@8507,@4429,@75,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8509,@1323,@5556,@1323,@8511,@1323,@5556,@1323,@8513,@1323,@5556,@1323,@8504,@5559| 17471:D4,16|fb05fa24352c2a2d7d04000000000000|@7803,1,@13700,@152| 17472:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13701,@156| 17473:D4,16|fb05fa24352c2a2d7d04000000000000|@7266,1,@13702,@148| 17474:D4,16|fb05fa24352c2a2d7d04000000000000|@8485,1,@13703,@109| 17475:D65,616|fb2e2b363ca203061a7502f754022b352c363cab293ba203061a6c02f721022a372a3cab2a2a691a6602351a6a022a0c642a2a0c642d3ca203061a6302f7e7012e3a2e3cab2a2a691a4502351a59022a0c642a2a0c64313da203061a5202f7ad013235323cab2a2a69220d36352a2a0c64220c3ea203061a3e02f77801220d39220d3cab293ba203051a340202e62a362a3cab2a2a691a2f02352a2a0c642d3ca203051a2a0202b32e382e3cab2a2a691a1502352a2a0c64313da203051a180202803235323cab2a2a691a1302352a2a0c64220c3ea203051a0d02024c220d37220d3cab2a2a691ade01352a2a0c6422113922113cab2a2a691acc01352a2a0c64291aeb01691aef012a691af2012a691af5012a691af8012a69322a691af8012a691afb012a69270f1afc012a691aff012a692c2a691aff012a691a02022a6927091a03022a691a06022a692c2a691a06022a691a09022a6927091a0a022a691a0d022a692c2a691a0d022a691a10022a6927091a11022a693b3c3b3b2d680522113fa203051a0702025122123822123cab2a2a69faf9351afd012a0c642a2a0c6422163622163cab2a2a69221a36352a2a0c64291ae801691aec012a691aef012a691af2012a691af5012a69322a691af5012a691af8012a69270f1af9012a691afc012a692c2a691afc012a691aff012a69270a1a00022a691a03022a692c2a691a03022a691a06022a6927091a07022a691a0a022a692c2a691a0a022a691a0d022a6927091a0e022a691a11022a692c2a691a11022a691a14022a6927091a15022a693b3c3b3b2d6805293b691a0e022a691a11022a693b3c3b3b2d68052708420000000000|@8012,1,@13704,@2535,@4429,@116,@8530,@4429,@8532,@4429,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@8538,@5552,@1323,@8540,@1323,@5556,@1323,@8542,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@6455,@1323,@5556,@1323,@8462,@1323,@5556,@1323,@7826,@5559,@1323,@8529| 17476:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13705,@155| 17477:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13706,@9,@8534| 17478:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13707,@116,@8536| 17479:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13708,@115| 17480:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13709,@155| 17481:D89,848|fb2b2b363ca203061a5d03f73f032b352c363cab293ba203061a5403f70c032a382a3cab293ba203051a4c0302e62a362a3cab2a2a691a4703352a2a0c642d3ca203051a420302b32e382e3cab2a2a691a2d03352a2a0c64313da203051a300302803235323cab2a2a691a2b03352a2a0c64220c3ea203051a2503024c220d37220d3cab2a2a691af602352a2a0c6422113922113cab2a2a691ae402352a2a0c64291a0303691a07032a691a0a032a691a0d032a691a10032a69322a691a10032a691a13032a69270f1a14032a691a17032a692c2a691a17032a691a1a032a6927091a1b032a691a1e032a692c2a691a1e032a691a21032a6927091a22032a691a25032a692c2a691a25032a691a28032a6927091a29032a693b3c3b3b2d68052e3ca203061a2003f7e7012f352f3cab2a2a691a6202352a2a0c64323da203061a0d03f7b3013339333cab293ba203051a050302e62a362a3cab2a2a691a2002352a2a0c642d3ca203051af30202b32e382e3cab2a2a691a0602352a2a0c64313da203051ae10202803235323cab2a2a691a0402352a2a0c64220c3ea203051ace02024c220d37220d3cab2a2a691acf01352a2a0c6422113922113cab2a2a691abd01352a2a0c64291aac02691ab0022a691ab3022a691ab6022a691ab9022a69322a691ab9022a691abc022a69270f1abd022a691ac0022a692c2a691ac0022a691ac3022a6927091ac4022a691ac7022a692c2a691ac7022a691aca022a6927091acb022a691ace022a692c2a691ace022a691ad1022a6927091ad2022a693b3c3b3b2d6805220e3ea203051ac802028e220f37220f3cab2a2a691ac102351ac5022a0c642a2a0c6422123fa203051abd02025222133a22133cab2a2a69221736352a2a0c6422173622173cab2a2a691aa402351aa8022a0c642a2a0c64291aa502691aa9022a691aac022a691aaf022a691ab2022a69322a691ab2022a691ab5022a69270f1ab6022a691ab9022a692c2a691ab9022a691abc022a6927091abd022a691ac0022a692c2a691ac0022a691ac3022a69270a1ac4022a691ac7022a692c2a691ac7022a691aca022a6927091acb022a691ace022a692c2a691ace022a691ad1022a69270a1ad2022a693b3c3b3b2d6805293b691acb022a691ace022a693b3c3b3b2d68052708420000|@8115,1,@13710,@2535,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@9,@8552,@4429,@116,@8554,@5552,@1323,@5912,@1323,@5556,@1323,@8556,@1323,@5556,@1323,@8558,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8490,@5559,@1323,@8551| 17482:D4,16|fb05fa24352c2a2d7d04000000000000|@7803,1,@13711,@152| 17483:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13712,@156| 17484:D68,632|fb2e2b363ca203061a8502f769022b352c363cab293ba203061a7c02f736022a352a3cab2a2a691a7602351a7a022a0c642a2a0c642d3ca203061a7302f7fc012e362e3cab2a2a691a6d02351a71023436693b2a3e3c6b642a0c642a2a0c64313da203061a6102f7b9013237323cab2a2a691a2b02351a57022a0c642a2a0c64220c3ea203061a4f02f77e01220d38220d3cab293ba203051a450202e62a362a3cab2a2a691a4002352a2a0c642d3ca203051a3b0202b32e382e3cab2a2a691a2602352a2a0c64313da203051a290202803235323cab2a2a691a2402352a2a0c64220c3ea203051a1e02024c220d37220d3cab2a2a691aef01352a2a0c6422113922113cab2a2a691add01352a2a0c64291afc01691a00022a691a03022a691a06022a691a09022a69322a691a09022a691a0c022a69270f1a0d022a691a10022a692c2a691a10022a691a13022a6927091a14022a691a17022a692c2a691a17022a691a1a022a6927091a1b022a691a1e022a692c2a691a1e022a691a21022a6927091a22022a693b3c3b3b2d680522113fa203051a1802025722123922123cab2a2a691af900351a0d022a0c642a2a0c6422163a22163cab2a2a69fae2351afe012a0c642a2a0c64291afb01691aff012a691a02022a691a05022a691a08022a69322a691a08022a691a0b022a69270f1a0c022a691a0f022a692c2a691a0f022a691a12022a69270a1a13022a691a16022a692c2a691a16022a691a19022a6927091a1a022a691a1d022a692c2a691a1d022a691a20022a6927091a21022a691a24022a692c2a691a24022a691a27022a6927091a28022a693b3c3b3b2d6805293b691a21022a691a24022a693b3c3b3b2d6805270842|@8147,1,@13713,@2535,@4429,@116,@8568,@4429,@118,@17486,@4429,@8571,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@8573,@8575,@5552,@1323,@6428,@1323,@5556,@1323,@8577,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8579,@1323,@5556,@1323,@8581,@1323,@5556,@1323,@7826,@5559,@1323,@8567| 17485:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13714,@155| 17486:D3,16|fb052936352c2a2d7d04000000000000|@8570,1,@13715| 17487:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13716,@156| 17488:D4,16|fb05fa24352c2a2d7d04000000000000|@6869,1,@13717,@75| 17489:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13718,@155| 17490:D116,1088|fb362b363ca203061a4d04f72f042b352c363cab293ba203061a4404f7fc032a382a3cab2a2a691a3e04351a42042a0c642a2a0c642d3ca203061a3b04f7c2032e352e3cab293ba203061a3304f747022a352a3cab2a2a691a2d04351a3104220d36693b2a3e3c6b642a0c642a2a0c642d3ca203061a2004f703022e382e3cab2a2a691a1a04351a1e042a0c642a2a0c64313da203061a1704f7c9013236323cab293ba203061a0f04f773012a362a3cab2a2a691ab103351a05042a0c642a2a0c642d3ca203061afe03f739012e372e3cab293ba203051af60302e62a362a3cab2a2a691af103352a2a0c642d3ca203051aec0302b32e382e3cab2a2a691ad703352a2a0c64313da203051ada0302803235323cab2a2a691ad503352a2a0c64220c3ea203051acf03024c220d37220d3cab2a2a691aa003352a2a0c6422113922113cab2a2a691a8e03352a2a0c64291aad03691ab1032a691ab4032a691ab7032a691aba032a69322a691aba032a691abd032a69270f1abe032a691ac1032a692c2a691ac1032a691ac4032a6927091ac5032a691ac8032a692c2a691ac8032a691acb032a6927091acc032a691acf032a692c2a691acf032a691ad2032a6927091ad3032a693b3c3b3b2d68053335333cab2a2a691a1703352a2a0c64291abe03691ac2032a691ac5032a691ac8032a691acb032a69322a691acb032a691ace032a6927101acf032a691ad2032a692c2a691ad2032a691ad5032a6927091ad6032a693b3c3b3b2d6805220e37220e3cab2a2a691ac803352a2a0c64291ac703691acb032a691ace032a691ad1032a691ad4032a69322a691ad4032a691ad7032a6927101ad8032a691adb032a692c2a691adb032a691ade032a6927091adf032a691ae2032a692c2a691ae2032a691ae5032a6927091ae6032a693b3c3b3b2d6805323da203061add03f73b013336333cab2a2a69220e36352a2a0c64220e37220e3cab293ba203051ac30302e62a362a3cab2a2a691afe01352a2a0c642d3ca203051ab10302b32e382e3cab2a2a691ae401352a2a0c64313da203051a9f0302803235323cab2a2a691ae201352a2a0c64220c3ea203051a8c03024c220d37220d3cab2a2a691aad01352a2a0c6422113922113cab2a2a691a9b01352a2a0c64291a6a03691a6e032a691a71032a691a74032a691a77032a69322a691a77032a691a7a032a69270f1a7b032a691a7e032a692c2a691a7e032a691a81032a6927091a82032a691a85032a692c2a691a85032a691a88032a6927091a89032a691a8c032a692c2a691a8c032a691a8f032a6927091a90032a693b3c3b3b2d6805291a8b03691a8f032a691a92032a691a95032a691a98032a69332a691a98032a691a9b032a6927101a9c032a691a9f032a692c2a691a9f032a691aa2032a69270a1aa3032a691aa6032a692c2a691aa6032a691aa9032a6927091aaa032a693b3c3b3b2d6805293b691aa3032a691aa6032a693b3c3b3b2d68052708420000|@8570,1,@13719,@2535,@4429,@116,@8591,@4429,@4429,@118,@17494,@4429,@9,@8597,@4429,@4429,@8599,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5554,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@7868,@5559,@115,@5552,@1323,@7999,@1323,@5556,@1323,@8601,@1323,@5556,@1323,@8603,@1323,@5556,@1323,@5990,@5559,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8605,@1323,@5556,@1323,@6455,@1323,@5556,@1323,@8157,@1323,@5556,@1323,@8462,@5559,@1323,@8590| 17491:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@13720,@9,@8593| 17492:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@7278,1,@13721,@116,@8595| 17493:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@13722,@115| 17494:D3,16|fb052936352c2a2d7d04000000000000|@7955,1,@13723| 17495:D4,16|fb05fa24352c2a2d7d04000000000000|@7803,1,@13724,@152| 17496:D4,16|fb05fa24352c2a2d7d04000000000000|@5911,1,@13725,@155| 17497:D59,544|fb2e2b363ca203061a2d02f711022b352c363cab293ba203061a2402f7de012a352a3cab2a2a692e36352a2a0c642d3ca203061a1202f7ab012e362e3cab2a2a693236352a2a0c64313da203061a0002f778013239323cab2a2a691afa01352a2a0c64220c3ea203061af401f74301220d37220d3cab293ba203051aea0102e62a362a3cab2a2a691ae501352a2a0c642d3ca203051ae00102b32e382e3cab2a2a691acb01352a2a0c64313da203051ace0102803235323cab2a2a691ac901352a2a0c64220c3ea203051ac301024c220d37220d3cab2a2a691a9401352a2a0c6422113922113cab2a2a691a8201352a2a0c64291aa101691aa5012a691aa8012a691aab012a691aae012a69322a691aae012a691ab1012a69270f1ab2012a691ab5012a692c2a691ab5012a691ab8012a6927091ab9012a691abc012a692c2a691abc012a691abf012a6927091ac0012a691ac3012a692c2a691ac3012a691ac6012a6927091ac7012a693b3c3b3b2d680522123822123cab2a2a691ab901351abd012a0c642a2a0c64291aba01691abe012a691ac1012a691ac4012a691ac7012a69322a691ac7012a691aca012a6927101acb012a691ace012a692c2a691ace012a691ad1012a6927091ad2012a691ad5012a692c2a691ad5012a691ad8012a6927091ad9012a691adc012a692c2a691adc012a691adf012a6927091ae0012a693b3c3b3b2d6805293b691ad9012a691adc012a693b3c3b3b2d6805270842|@8448,1,@13726,@2535,@4429,@4429,@4429,@115,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@116,@8615,@5552,@1323,@8385,@1323,@5556,@1323,@8605,@1323,@5556,@1323,@8619,@1323,@5556,@1323,@6455,@1323,@5556,@1323,@8157,@5559,@1323,@8614| 17498:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@13727,@118,@8617| 17499:D4,16|fb05fa24352c2a2d7d04000000000000|@7269,1,@13728,@156| 17500:D8,56|fb122b352c3629352a36292e2306fa400c2b2a692e2afa403236693237fa41fa47220c38220d39220e3afa4422117b0b0900000000000000|@8627,1,@13729,@8628,@17501,@4159,@7038,@7026| 17501:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13731| 17502:D4,64|fb132c929103312c352d362a352b362c382d3931353235293caa343b3b2ce33b2d6931312b32323b3b680733220ffa280c2a2a69270d02013b43000000000000|@880,1,@13730,@8628| 17503:D5,40|fb0cfa3c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa2b347b070700000000000000|@8629,1,@13732,@17504,@7032| 17504:D4,16|fb0529362cfa212d7e03000000000000|@8630,1,@13733,@5648| 17505:D6,40|fb0a29392308fa382a2c366a2b39230cfa362a2e376a2b2a6929333038fa310c312a354564270544|@7189,1,@13734,@17507,@17506,@7188| 17506:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13736| 17507:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13735| 17508:D4,16|fb0529362cfa212d7e03000000000000|@8630,1,@13737,@5648| 17509:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13738| 17510:D14,328|fb26222306222323081a54012a22256a2225230c1a51012a22266a1a52011a5701222622262226222622261a520133222822282228220c680d0b0200222d353ba0033b222d36222e370b060031220d323b22202e222e222e222e222e222e222e222e222e222e222e222e222e223b0c5029352a39342b452a4650260b027b222d353da0033d222d3629352a362b372c382d392c2b2d2c31220e221f222c222c222c222c222c222c222c222c222c222c222c222c222b0c302a35452a39465126060237222d36222e37222f380b0600323232221022212e222622302230222822312231223122312231fa9e0c5029352a39220c2b452a4650260c29352a36fa912213221322242217222522106807fa892212221222252218222622116807fa812211221122262219222722126807292c2c6a2e2a2f3cfa71323bfa750c220f3527101f230000000000|@8634,1,@13739,@17512,@17513,@7041,@7045,@7049,@7059,@17514,@17517,@17511,@294,@7193| 17511:D8,88|fb172b352c3629352a362b372c382d392b353ba003043b500203fa541030230635293caa3223063b3b2ce3503b2b6930302b30303b3b6807332afa3c220e3669220e37fa3bfa4122113822123922133afa3e22167b0b0e00|@8641,1,@13747,@8637,@17519,@7029,@7030,@7026| 17512:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13740| 17513:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13741| 17514:D8,72|fb112b352c3629352a36293ba003032b02192a352b362c382d372c2c2b2d6b2e332306fa3b0c2a2a6927062d2afa393136693137fa3afa403438220c39220d3afa3e22107b0b0800|@8635,1,@13742,@8636,@17515,@4159,@7038,@7026| 17515:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13744| 17516:D5,80|fb122c929103412c352d362a352b362c372d382e392b353ba003043b500203fa47103b503235293caa343b3b2ce3503b2b6930302b30303b3b680732220efa300c2a2a69270c02013b43000000000000|@880,1,@13743,@8637,@8636| 17517:D8,88|fb162b352c3629352a362b372c382b353ba003043b500203fa56102f230635293caa3123063b3b2ce3503b2b692f2a2f2f6b322afa42220d3669220d37fa41fa4722103822113922123afa4422157b0b0d00000000000000|@8640,1,@13745,@8637,@17518,@7040,@7039,@7026| 17518:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13746| 17519:D3,16|fb042c2c692a362c7d04000000000000|@7028,1,@13748| 17520:D13,240|fb29220c35220d36220e372a03b629929103043b500203faef103b5029352a362a352b36221223082213230c2a2a69fadf221422142f6b2a2f2bfadc0c29352938293629353ca0030b2a36293629fad0a06502013b03033b026633299291035e29352a362a352b36221f23082220230c2a2a69fab3222122212f6b2a2f2bfa980c3b2221222122212221faa40c3b2222222222222222fa980c2bfa9c2c2212fa972e2220222c222b222a22282228fa900c5032250c260b1e5c3b270b02013b64270c022329220f220e220efa7b0c292d2210220f220e220c220c221222112211fa6e22107b0c11661f0b000000000000|@8644,1,@13749,@8645,@17521,@7188,@107,@17523,@7024,@294,@8649,@8684,@8643| 17521:D8,128|fb0f2b3b3bef293ba00304fa8b024b29280eb1292810b1293cb2292808b429fa7fa503043b500203fa7e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d280834ec50280831b1fa4c28082e2c280eec502c95502c2708fa542c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa43220d7b0709000000000000|@8647,1,@13750,@8648,72057594037927935,@286,@17522,@7032| 17522:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13751,@5543| 17523:D8,128|fb0f2b3b3bef293ba00304fa8b024b29280eb1292810b1293cb2292808b429fa7fa503043b500203fa7e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d280834ec50280831b1fa4c28082e2c280eec502c95502c2708fa542c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa43220d7b0709000000000000|@8647,1,@13752,@8648,72057594037927935,@286,@17524,@7032| 17524:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13753,@5543| 17525:D30,1152|fb38220d3534352a38293629353ca0030c2a362936291a7f04a06502013b03033c02182b38293629353ca0030c2a362936291a6304a06502013b6503043bf735042c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642e38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa091034e1aea03221169221822181ae8030c221622161ae0030c291ae303691ae7032a691aea032a691aed032a692e2a691aed032a691af0032a693b3e3b3b2d6805221a3c220c221f2d1ae403221c7b07233238293629353ba0030929382922190c6402012a3438293629353ba0030929382922190c6402012a2c3629353ba003a12938292217a203033b0293292217ab2922173529353ba00325293629932c2aa203162a932d2aa903041a8b03103b503b502b2e3bdb6402031a8403650223293629932c2aa203162a932d2aa903041a7603103b503b502b2e3bdb6402031a5f036529353ca0031a2936292da803041a5e03103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041a3e03103b503c656402013b299103f5221135221f3b3bef2a3b3bef2a3ba003032b0258293ba003042221024f2a2ab1292810b1293cb2292808b4291a0a03a503043b5002041a0803103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050222828082d2808220cec50280832b13328082e2c220cec502c95502c27083e2a69333729352a362b371acf020c293b691ad0022a691ad3022a691ad6022a692f2a693b3e3b3b2d68051acf02222669222d222d1a2d020c222b222b1a25020c2c3b691abe022a691ac1022a691ac4022a692d2a691a1c022a691a1f022a691a22022a69322a691a22022a691a25022a693b3e3b3b2d680522333c221022382d1a190222357b073c2b3629353ba003a12938292219a203033b0293292219ab2922193529353ba00325293629932c2aa203162a932d2aa903041ae801103b503b502b2e3bdb6402031ae101650223293629932c2aa203162a932d2aa903041ad301103b503b502b2e3bdb6402031abc016529353ca0031a2936292da803041abb01103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041a9b01103b503c656402013b299103ed221235221e3b3bef2a3b3bef2a3ba003032b0258293ba003042220024f2a2ab1292810b1293cb2292808b4291a6701a503043b5002041a6501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050222728082d2808220cec50280832b13328082e2c220cec502c95502c27083e2a69323729352a362b371a2c010c293b691a2d012a691a30012a691a33012a692f2a693b3e3b3b2d68051a4c01222869222f222ffa8b0c222d222dfa840c2c3b691a1d012a691a20012a691a23012a692d2a69fa7c2a69fa802a69fa842a69322a69fa852a69fa892a693b3e3b3b2d680522353c2210223a2dfa7e22377b073e302e221a221a221afaf7221b7b072227041f0c000000000000|@8651,1,@13754,@107,@17526,@8653,@8655,@1323,@8662,@1323,@1717,@8664,@7032,@831,@951,@829,@7102,@8666,72057594037927935,@286,@8669,@1323,@8671,@1323,@17529,@1323,@8658,@1500,@17530,@8650| 17526:D4,16|fb0529362cfa212d7e03000000000000|@8652,1,@13755,@5543| 17527:D5,192|fb152c35293729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b2c35303b3bef2a3b3bef2a3ba003032b0253293ba0030332024b2a2ab1292810b1293cb2292808b429fa67a503043b500203fa6610292841bd2a3cb22a2a3b3bf02b3b3b32f050221028082d2808220cec50280832b13328082e2c220cec502c95502c27083e2a69293b693b3b3b322d6805270a430000000000|@8654,1,@13756,72057594037927935,@286| 17528:D9,272|fb132b1a2201a003033c02152b3b3bef3ba0030c2b28081a0e0128083bed02013b03173b2d69293b693e3069293b693b3b3b2e2d6805270402d23b2d69293b693e30692e3b3bef293ba00304fae2024a3d2ab1292810b1293cb2292808b429fad7a503043b500203fad610292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082828e4502b2809282ae450220d28082d4034ec502b95502b2707293b3bef293ba00304faa3024e293db1292810b1293cb2292808b429fa80a503043b500203fa7f10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ae4502c2a3cb12829e4502c95502c27083e2a69293b69fa532a69302a693b3b3b220c2d6805270b44000000|@8670,1,@13757,@294,@1845,72057594037927935,@286,@1843,@1323| 17529:D4,16|fb0529362cfa212d7e03000000000000|@8652,1,@13758,@5543| 17530:D4,16|fb0529362cfa212d7e03000000000000|@8652,1,@13759,@5543| 17531:D13,528|fb2b2f3629353ba003092f3629353ba06402013b03043b5002041a0b02103b5030362938313629382b33ab29333529353ba00325293629932c2aa203162a932d2aa903041ae901103b503b502b2e3bdb6402031ae201650223293629932c2aa203162a932d2aa903041ad401103b503b502b2e3bdb6402031abd016529353ca0031a2936292da803041abc01103b503b5029250426031e6a3b6402012965642b220cab29220c3529353ba00325293629932c2aa203162a932d2aa903041a7001103b503b502b2e3bdb6402031a6901650223293629932c2aa203162a932d2aa903041a5b01103b503b502b2e3bdb6402031a44016529353ca0031a2936292da803041a4301103b503b5029250426031e6b3b6402012965642b353ea003222b36293629353ba003142b353ea0030b2b36293629353ba06502013b02013b6502013b03043b5002041a0601103b502b362c372a3629362a372b382c392f37313632372a3629362a372b382c39322ba003033b0296322ba203033202012a332ca603033302012b3303033c02012b220e30a003043b500203fac0103b50220d353ca00308220d362935640203220d3603033c020f2e353ca003072e3629356402022e363b2a693b22112b302f6805fa922a220f6a220c3ba00304221402072214220dfa860c3e2b2b6a312226ab22242a2cfa7f0c50312227ab332228ab3c2a6922272c2bfa6c222a7b052c27181f05000000|@8674,1,@13760,@8675,@831,@951,@829,@7102,@8678,@8681,@917,@8673,@7074| 17532:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13761,@8673| 17533:D7,80|fb0e2e929103402e352f362a352b3631230cfa5432322d6bfa562b2e2cfa590c293ba0030e2e220c220c220cfa52220d7b060d29352f220d220d220dfa420c2a2a6965270702013b1f04000000000000|@2464,1,@13762,@17534,@7040,@7139,@8684| 17534:D8,128|fb0f2b3b3bef293ba00304fa8b024b29280eb1292810b1293cb2292808b429fa7fa503043b500203fa7e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d280834ec50280831b1fa4c28082e2c280eec502c95502c2708fa542c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa43220d7b0709000000000000|@8647,1,@13763,@8648,72057594037927935,@286,@17535,@7032| 17535:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13764,@5543| 17536:D5,24|fb0a342e322f2ffa270c32323232220f220ffa24327b090c|@8686,1,@13765,@8687,@8685| 17537:D8,136|fb112f9291037a2f3530362a35293b3bef293ba00304fa880248293cb1292810b1293cb2292808b429fa7da503043b500203fa7c103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27083b34343434fa4f0c2e2b2b6a2e220d220d220d220dfa470c2a2a69270802013b1f0500000000|@880,1,@13766,@371,72057594037927935,@286,@7024,@8687| 17538:D13,224|fb250b020034faf02a929103172a352b362a2cfaeb0c2a2a2505250526031e1626030209292c2a35452a3646515129352a362afad3fad90c29fadd3b3bfae10c2bfae5facb0c29facf3b3bfad30c2b299291035b29352a362a929103043b500203facd103b502a352b362a352b362c372c299291032b29352a362a352b362c373131312e2e2e222022202226222622262226faa40c502c250626051e2a260502023b50502e250826071e5a260702023b505029299291031f29352a362a221422142214221422142214fa750c50292503511e1e3b6502013b6427091f07000000|@8689,1,@13767,@917,@8690,@8694,@2568,@294,@8697,@8699,@8688,@8649,@8685| 17539:D6,40|fb0e2c35293729352a3930363137fa302c2b6afa332c2b6a2e342bfa33220d7b050c000000000000|@8691,1,@13768,@17541,@17540,@874| 17540:D4,56|fb0f2c2c2a9291032a2a352b360b0200342e302c3436220c37fa350c5029352a362a2a692f2a250a250a26081e283b270802012965440000|@877,1,@13770,@8692| 17541:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13769,@4374| 17542:D9,296|fb142e352f3631351a3501a003e231351a2d01a003043b5002041a2b011031372f3b3bef343b3bef2a3ba00304220c0256293ba0030331024e2a2ab1292810b1293cb2292808b4291a0501a503043b5002041a030110292841bd2a3cb22a2a3b3bf02b3b3b32f050220f28082d2808220cec50280832b1221428082e2c220cec502c95502c2708293b3bef293ba00304face0246293cb1292810b1293cb2292808b429faaba503043b500203faaa10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082e2a220c6a22102a69293269220f34452a462709022f3135fa74a003233135fa6da003043b500203fa441031372930306a342a69292e69332a452e46270402052f2b452a46651f06000000000000|@8693,1,@13771,@21,@826,72057594037927935,@286,@371,@19| 17543:D4,16|fb042b35fa222a696442000000000000|@8695,1,@13772,@17544| 17544:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d3628082e28082dee293ba003052c2ca50203293ba427054200|@8696,1,@13773| 17545:D4,144|fb0e2e929103702e352f362a352b36312ba003033c0219313b3bef2b3b3befa0030d3128082c28082e3b3befed02013b030d2931692c332b33fa6d347b060b30929103263036293ba0030e2a3b692d2d2b34fa54220c7b060c2a3b693232692e2e2c2cfa43220d7b060d293b692c2c2b33fa35347b060b2c929103102c36293ba003032c02032d2d696402012b1f0400|@8698,1,@13774,@8697| 17546:D4,16|fb042b35fa222a696442000000000000|@8695,1,@13775,@17547| 17547:D3,48|fb0a2b352a363b3bef2a3b3bef2a2aa303032a0201292d3628082e28082dee293ba003052c2ca50203293ba427054200|@8696,1,@13776| 17548:D4,16|fb0529362cfa212d7e03000000000000|@8630,1,@13777,@5648| 17549:D7,48|fb0b293a2308fa402a2c366a2b3a230cfa3e2a2e376a2b2a69fa3d2f383039346b2a342bfa3a0c322a35456427064400|@7189,1,@13778,@17551,@17552,@17550,@7188| 17550:D5,40|fb0cfa3c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa2b347b070700000000000000|@8629,1,@13781,@17553,@7032| 17551:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13779| 17552:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13780| 17553:D4,16|fb0529362cfa212d7e03000000000000|@8630,1,@13782,@5648| 17554:D3,8|fb022b4200000000|@8702,1,@13783| 17555:D3,8|fb022b4200000000|@8702,1,@13784| 17556:D10,176|fb0c2e35292fab293ba00304faba0295293ba6030629fab8a202013b03043b500203fab4103b502928403bda3b2b2aa403043b500269303529353ba00322293629932c2aa203152a932d2aa90303fa90103b503b502b2e3bdb6402013b650220293629932c2aa203152a932d2aa90303fa76103b503b502b2e3bdb6402013b65293ba00303fa69103b503b5029352d2d3b2ce3502c3caa250426031e6e2603502995502964fa512f2b336b661f050000|@8704,1,@13786,@957,72057594037927935,@8705,@831,@829,@1921,@17557| 17557:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@8707,1,@13787,@831| 17558:D41,1400|fb2c2214353ba003462214362215370b0600312219323b221b2e221c221c221c221c221c221c221c221c221c221c221c221c221b360c5029352a362b372c382d392e3a2e2e2e2e2e2e6806270f027d2214353da0033522143629352a362b372c382d392c2b2d2c31221a221a221a221a221a221a221a221a221a221a221a221a221a221a22190c270602412214362215372216380b0600323232221c221c2e2214221e221e2216221f221f221f221f221f1adc040c5029352a362b372c382d392e3a2e2e2e2e2e2e6806271029352a392a1ac4040c1ac8042212221222176b2a23082b230c2a2a6929221b2e1ab9040c221a1abb0422182218221c6b22171ab7040c2a352938293629353ca0030c2a362936291aaa04a06502013b03053b50f749042d35293829360b02002c353ba003112c382922120c2b2a36452a3746515002092d2a2a36452a37465129352a362a353ba003a12a38292221a203033b0293292221ab29221e3529353ba00325293629932c2aa203162a932d2aa903041a4704103b503b502b2e3bdb6402031a4004650223293629932c2aa203162a932d2aa903041a3204103b503b502b2e3bdb6402031a1b046529353ca0031a2936292da803041a1a04103b503b5029250426031e6b3b64020229356564293ba003033b0210293ea003043b5002041afa03103b503c656402013b2991f808011af103222b6922293b3bef293ba003051ae903024e3d2ab1292810b1293cb2292808b4291add03a503043b5002041adb03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082860e4502b28092860e450223128082d4034ec502b95502b2707293b3bef293ba003051aa5030252293db1292810b1293cb2292808b4291a8103a503043b5002041a7f03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2827e4502c2a3cb12827e4502c95502c27083e2a693035313632371a4d030c293b691a4e032a691a51032a691a54032a692e2a691a54032a691a57032a693b3e3b3b2d680522313c2210222a2d1a4b030c50260ff765022b353ba003043b5002041a3f03103b502b38292222ab29221f3529353ba00325293629932c2aa203162a932d2aa903041a9102103b503b502b2e3bdb6402031a8a02650223293629932c2aa203162a932d2aa903041a7c02103b503b502b2e3bdb6402031a65026529353ca0031a2936292da803041a6402103b503b5029250426031e6b3b64020129656429353ea0030b2936293629353ba06502013b03043b5002041aae02103b502936293629372a382b392b353ca003072b3629356402022b36031522141a93021a98021a9d020c293ca09129916502013b031a1a95021a9a02222f223522342219223022271a93020c50f76d012214352805a003632214362215382a22342a3ba00305293ba002342a352b362b929103292b352c362c352806a0030a2c362b352a2aa06502013b030d2b2a2506250626041e333b02013b6502013b6565299103033b02112a38293629353da003033b02032a6801656602013b293ba003442a03191a1f021a2402223022362235221a223122281a05020c500226223122301a12026a3d223422186a1a10022a2c6a2e222dab3b2b69222d2b2b1a07020c50260502b72935293629353ba00385293829222da203053b2c69027529222dab29222a3529353ba00323293629932c2aa203152a932d2aa90303fae2103b503b502b2e3bdb640202fadc650221293629932c2aa203152a932d2aa90303facf103b503b502b2e3bdb640202fab96529353ca003192936292da80303fab9103b503b5029250426031e663b640201296564646402033b2b6929353ea0030f2b32222e222b222f1a66010c50020e2e222dab222c2a2c1a4f010c505026035026082609220c270d1f1300000000000000|@8709,1,@13788,@7059,@1130,@17559,@7188,@17561,@7187,@107,@831,@951,@829,@7102,@8666,@17564,@8713,72057594037927935,@286,@5481,@8669,@1323,@8714,@1323,@1717,@8716,@7032,@8718,@8721,@8723,@8724,@7096,@8725,@8726,@8727,@8731,@8708,@294,@1033,@7074,@8650| 17559:D8,128|fb0f2b3b3bef293ba00304fa8b024b29280eb1292810b1293cb2292808b429fa7fa503043b500203fa7e10292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d280834ec50280831b1fa4c28082e2c280eec502c95502c2708fa542c36693e2b69293b693b3b3b3b2d68052f373c2e32382dfa43220d7b0709000000000000|@8710,1,@13789,@8648,72057594037927935,@286,@17560,@7032| 17560:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13790,@5543| 17561:D5,40|fb09293823082a38230c2a2a69fa312d362e37326b2a322bfa2e0c302a3545642704440000000000|@7189,1,@13791,@17562,@7188| 17562:D5,40|fb0cfa3c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa2b347b070700000000000000|@8711,1,@13792,@17563,@7032| 17563:D4,16|fb0529362cfa212d7e03000000000000|@7065,1,@13793,@5543| 17564:D4,16|fb0529362cfa212d7e03000000000000|@8712,1,@13794,@5543| 17565:D3,8|fb023c4200000000|@7094,1,@13795| 17566:D3,8|fb023d4200000000|@7094,1,@13796| 17567:D18,288|fb1f1a330131691a360132692a2a691a36013369323b3bef293ba003051a3001024e3d2ab1292810b1293cb2292808b4291a2401a503043b5002041a2201103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082860e4502b28092860e450221128082d4034ec502b95502b2707293b3bef293ba00304faed0250293db1292810b1293cb2292808b429facaa503043b500203fac9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2827e4502c2a3cb12827e4502c95502c27083e2a693e2213693bfa990c220f1be8032b343bfa960c3e221569293b69fa942a692c2a69fa952a69302a69fa962a69332a69fa972a69fa9b2a693b3e3b3b2d6805221a3c2215221c2dfa90221e7b0721000000|@8728,1,@13797,@17569,@17570,@17568,@8713,72057594037927935,@286,@5481,@5546,@5570,@1500,@1323,@1323,@1717,@8716,@7032| 17568:D4,16|fb0529362cfa212d7e03000000000000|@8730,1,@13800,@5543| 17569:D3,32|fb052b2a3623080c299291030b2935293b692968016502013b64420000000000|@8729,1,@13798| 17570:D3,32|fb052b2a36230c0c299291030b2935293b692968016502013b64420000000000|@8729,1,@13799| 17571:D4,40|fb092c2c2a929103182a352b36312b2dfa2e0c2a2a2505250526031e173b66020129654400000000|@877,1,@13801,@8733| 17572:D7,192|fb0c2c35fad2a0032d2c35facba003043b500203faca102c37293729353ba003112936293caa2930a603032902012f6502012d6502872c35faaea0032d2c35faa7a003043b500203fa96102c37293629353ba003112936293caa2930a603032902012f6502012d6502532c35fa82a0034b2c35fa7ba003043b500203fa62102c372936292e2a9291032d2a352b362a3729353ba003112936293caa292fa603032902012e6502012c2b2a2506250626041e2b3b2704020129656502012b440000|@8734,1,@13802,@18,@826,@21,@19| 17573:D23,624|fb2a30352931ab342aa0030e1a7902342a35452a364664f74e0234313529353ba00325293629932c2aa203162a932d2aa903041a5a02103b503b502b2e3bdb6402031a5302650223293629932c2aa203162a932d2aa903041a4502103b503b502b2e3bdb6402031a2e026529353ca0031a2936292da803041a2d02103b503b5029250426031e6a3b64020129656429353ba003942936293629353da0035d29362a372c371a0902220e22106a1a09022a692c1a0b022b1a0f020c3d2f2b6a1a0f022a2f6a3b2a69221222182b1a09020c22183caa0b02002c2a221c221c221c221c221c221c1af8010c5029352a36312a69221e2c452a4627110229220e3caa0b02002c2a2212221222122212221222121acd010c5029352a36302a6922142c452a46270765f73f0129353ea003043b5002041ab301103b5029362a372a3629353ba003043b5002041aa501103b5029362a372b392e3729352a362b37319291030831362992916402013b0382319291031c31353236293ba003032a020d291a77010c2b2a69641a77010c6502031a7801293b3bef293ba003051a7401024d28082ab1292810b1293cb2292808b4291a6701a503043b5002041a6501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a3d0128082d28082808ec503128082d281034ec502b95502b270765020129221135293caa22133b3b2ce3221335293caa22153b3b2ce33232316a3b2d69220e353ca00308220e362935640203220e363b2a693b22122b220c221368052c2a2f6a3b2a69221f22252bfa9d0c22253caa0b02002c2a222922292229222922292229fa8d0c5029352a36312b69322b69222c2b452a46272164651f080000000000|@8737,1,@13803,@917,@831,@951,@829,@7102,@17574,@17575,@8746,@4261,@1033,@7074,@8735,@8747,@8747,@8750,@284,@294,@8736,72057594037927935,@286| 17574:D8,168|fb0c2b3629353ba003972938292c37a203033b0289292c37ab292d363529353ba00323293629932c2aa203152a932d2aa90303fa8b103b503b502b2e3bdb640202fa85650221293629932c2aa203152a932d2aa90303fa78103b503b502b2e3bdb640202fa626529353ca003192936292da80303fa62103b503b5029250426031e663b64020129656429353ba003043b500203fa4b103b502936296801666402013b644200000000|@8739,1,@13804,@831,@951,@829,@7102,@8738| 17575:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@8743,1,@13805,@8744,@8742,@4331| 17576:D3,8|fb022b4200000000|@8745,1,@13806| 17577:D3,8|fb022b4200000000|@8745,1,@13807| 17578:D3,8|fb022b4200000000|@8743,1,@13808| 17579:D5,32|fb072b929103132b352c3629fa2a0c2b2a69fa2c2a69270402013b4200000000|@5634,1,@13809,@8750,@369| 17580:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@8751,1,@13810,@831| 17581:D5,24|fb0a2b352c3629382b2a2e36fa22fa28327b060600000000|@5798,1,@13812,@5799,@5797| 17582:D7,104|fb102b352c362a3b3bef293ba00304fa6f0246293cb1292810b1293cb2292808b429fa64a503043b500203fa6310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d280834ec50280831b12c2a282ee4502c95502c27082b372a2a3036fa37337b0508000000|@5798,1,@13813,@371,72057594037927935,@286,@5820| 17583:D9,216|fb12faec2a36692e3b3bef293ba00304fae6024b28082ab1292810b1293cb2292808b429fadaa503043b500203fad9103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab228082d28082808ec50220d28082d281034ec502b95502b2707293b3bef293ba00304faa6024d29282bb1292810b1293cb2292808b429fa82a503043b500203fa81103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6528082e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa49220f7b070d00000000|@5825,1,@13814,@17584,@8752,72057594037927935,@286,@5828,@5824| 17584:D4,16|fb0529362cfa212d7e03000000000000|@5826,1,@13815,@5532| 17585:D4,24|fb052936932c2aa90303fa24103b502a362d3bdb64420000|@5794,1,@13816,@831| 17586:D41,1304|fb64222435222536222637221b063b062b221e221e221e221e222c1a12050c3b222469221c23103b2a0c3d2a69293b692d2a691a0205061a0605063d2b2b6a220e2a342f6b33372922112d1afa040c293ba003051af90402593b2a299291031229362b3caa292b25042504511e113b6502012a65291ae004a803041ae204103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965220f35220e373b2a299291031229362b3caa292b25042504511e113b6502012a652b2aaa22133b3b2ce32214352213352214362215382216391a7a042232220c22386b1a78042b2b6a2e353ca0032f2e362f382a352a352993293ba003051a3d0402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e292f3b302e220c6806401a3a040c1a3e040c22211a4004a003033c021722213b3bef3ba0030d222128081a2a0428083bed02013b91031d222122142c22196b293b69223e3b3b2ce35022232b692c230a0c65022d1a08042a223d6a1a09042b223f22166b1a08042c224222176b292c2c6a2f2a323c1adf03220c3b1af9030c27042213680122223b3b2ce32c23061aee032239223b2c6b2e23081aea032239223b2c6b30230c1ae6032239223b2c6b1ae5032238223a220c6b1ae303223822382238223822383422393432223b223b220d680d1ad1032229222b6a1ad1032243221d222b2219224b222f68071ac803222c690b0600225a333234220e2251225f1a54033122431ab6030c5029352a362b372c382d392e3a2e2e2e2e2e2e6806225338293503033b027322603b3bef293ba003051a9103025b293eb1292810b1293cb2292808b4291add02a503043b5002041a7b03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050226828082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c2a3db1282ee4502c95502c2708292d22581a3d030c652b1a3f030c323b1a41031a46030c223d35293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003051a4c0202593b2a299291031229362b3caa292b25042504511e113b6502012a65291a3302a803041a3502103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029652993293ba003051ae70102832928403bda3b292ca803043b50026e2c2a3bdb293629353ba0035029362a382b392d372f220daa3b2a69303629353da003041a8802103b503b5029353ba00314293729353ca0030729362935640202293664020529362935643b2a693b322b333368052d2a316a270a02012a2d2d3b2ce3502c3caa250426031e73260350299550296429933b2a293ba003032a021a293cb22a3cb22e2a3bdb292e69292d2506250626041e1d3b2704652d933b2a293ba003032a0233293cb22a3cb22b3cb2332a3bdb32932c2aa903041af801103b503b50332d3bdb292c692932692931250a250a26081e363b270865226b3b3b2ce31ada012261223b2249322238226a68071ad20122122b6a2216353ca003302216362217382a352a352993293ba00304fac402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020222162922173122172e223b6806291a8e010c3b321a90010c293ba003032a02062a2a1a8a010c226e3b3b2ce33b227269226a23103b2a0c3d2a69293b692d2a69fa4d06fa52063d2b2b6a224d227f2b2210306805227f2a6922610c50296801227e3b3b2ce3275f1f23000000000000|@8755,1,@13817,@5830,-1,@7177,@8756,@957,72057594037927935,@2035,@17589,@17590,@786,@1130,@294,@17591,@17592,@17593,@7193,@17594,@17595,@17596,@17597,@8768,@17602,@17603,@17605,@8773,@8985,@286,@5820,@8980,@8986,@874,@4323,@831,@17739,@17740,@8931,@8937,@8754| 17587:D5,32|fb082d929103172d352e362a2f2ffa280c2a3030fa2a0c2a2a69270402013b44|@880,1,@13818,@8757,@8756| 17588:D8,312|fb1f2d3529353ba003092e3629353ba06402013b03043b5002041a3301103b502e352936303629362a372b382c39220c3729352a362b373b31313131680522101a1501a003033c021722103b3bef3ba0030d221028081aff0028083bed02013b03032c02be22103b3bef293ba00304faef0249293cb1292810b1293cb2292808b429fae4a503043b500203fae3103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221828082d280834ec50280831b12c2a282ee4502c95502c2708293b3bef2f3b3bef2a3ba00303300255293ba003032b024d2a2ab1292810b1293cb2292808b429fa83a503043b500203fa82103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220f28082e2c220cec502c95502c27082704292d2d6a3f220d22136a292d2c6a27104400000000|@8759,1,@13819,@8758,@294,@371,72057594037927935,@286| 17589:D4,56|fb062b2a38a203152936932c2aa90303fa3e103b502a362d3bdb6402172b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@8763,1,@13820,@831| 17590:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13821,@4374| 17591:D3,32|fb092b352c362b37352a2a692d373b3b2ce3502c2c692e3638307d0700000000|@8764,1,@13822| 17592:D4,40|fb0a2b352c36292c383bfa340c2c37352a2a692e373b3b2ce3502d2c692f36230a317d0800000000|@8764,1,@13823,@7626| 17593:D4,40|fb0a2b352c36292c383bfa340c2c37352a2a692e373b3b2ce3502d2c692f3637317d080000000000|@8764,1,@13824,@7145| 17594:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13825| 17595:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13826| 17596:D3,40|fb062b2a380c293ba003132c2b370c293ba003062d2c362e7d052964020129644200000000000000|@5205,1,@13827| 17597:D6,56|fb0b3b2a3823090c3b06fa442a692c370c2a353b2e3623090c293ba003032a02052a2afa330c293ba003032e02072e2afa2e337e09270642|@8766,1,@13828,@17598,@8767,@8765| 17598:D3,24|fb082b352a36352a2a692c363b3b2ce36642000000000000|@5789,1,@13829| 17599:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13830,@8767| 17600:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13831,@8765| 17601:D3,8|fb023b4200000000|@8766,1,@13832| 17602:D7,96|fb122b352c362d372e382f392e3735293caa30373b3b2ce32f0318fa5b06fa60063d2b2b6a332a30343434680666fa580c0216fa4306fa48063d2b2b6a332a30343434680666fa480c3236352a2a6934363b3b2ce3502b270b42000000000000|@8769,1,@13833,-1,@7177,@7076,@7078| 17603:D7,152|fb0d29230635293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba00304fa8502573b2a299291031229362b3caa292b25042504511e113b6502012a6529fa6da80303fa70103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa422d362e372f382d3139323a68076642000000|@8770,1,@13834,@957,72057594037927935,@2035,@17604| 17604:D4,88|fb072b2a2306a203152936932c2aa90303fa5d103b502a362d3bdb6402382b2a3aa2031b29383a2c2aab2b37932a2aa90303fa3c103b502c372b3bdb6602172b2a3aab2a39932a2aa90303fa23103b502b392b3bdb654200|@8771,1,@13835,@831| 17605:D3,8|fb02293635420000|@8772,1,@13836| 17606:D58,1864|fb541a5b0732326a1a5d0733336a2a2a69220e353da0f81d02220e3629352a362b372c382d392e3a3b063b22150c3b22150c1a3b072c22196a1a3c072b2e2e6b0b0600221132222133222122212221222131222122200c5029352a362b372c382d392e3a2e2e2e2e2e2e680622172212221222272227221a1a05070c293a2a372b3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa1ae506221f690b020033332e22222231221f222a3022311ad6060c5029352a36221f3b3b2ce3222303ff30220cab293ba203041ac206103b503b503b2a2e220f1abd060c220e3729222622391ab9060c2b2a1abb060c22263b3b2ce32b3ba003051ab40602593b2c299291031229362b3caa292b25042504511e113b6502012a65291a9b06a803041a9d06103b503b502928403bda3b2e293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e26035129955029653b223a0c1a6a062a2c22166b2215352216362217382218393b22410c1a5a062b306a2e353ca0032f2e362f382a352a352993293ba003051a1f0602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e223d2a452f463b472e482b492c4a271002683b22330c1a10062a2e22106b220e35220f362210382211393b223a0c1a00062b306a2e353ca0032f2e362f382a352a352993293ba003051ab50502132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e22362a452f463b472e482b492c4a27092727f70a05220e353ca003a2220e36220f37221038401aa6050c1aaa050c292306220f23061aa7052a2c6a2c2308221223081aa2052a2c6a2f3930230c2216230c1a9b052a2c6a22183a2219230b220c37220d38220e230a220f36221023071a8505222022136a1a85052c3030220f220c221531221432220d22112214680d22152225222522252d2225221a222522242223360c22172226222622262e2226221b222622262226222522277b0c27220e353ea0f81001220e36220f37221038401afc040c291aff040c29382a372b230a2c2306221323061a1d052a2c6a2f2308221623081a18052a2c6a32230c2219230c1a13052a2c6a221b3a221c230b221d391a0b05221f22116a1a0b051a1005221022122e3122101a0d05220f322217220d2210680d22152224222422242d22242224222422232222360c401a81040c291a84040c1ae8042a6922161ae9042b1aed040c293622193b3b2ce33b221c69222723103b2a0c3d2a69293b692d2a693b22300c3b22300c220d353ca00331220d36220e382a352a352993293ba003051af50302132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a27060202220d222c2a451a8f04463b472d482b492c4a2726f74903220e353ba0f8e102220e3629352a362b372c382d392e3a2f23063023072f2214230b0c299291f8c9012935293529372b382c6801323b3b2ce30b06002215222522252225222522252216222531222522240c5029352a362b372c382d392e3a2e2e2e2e2e2e68061a1f04222d693b222b0c0b02002e22172f221f22303122293022301a14030c5029352a362218373b2a1afe030c293ba003032b02062b2a1af8030c221f3b3b2ce3221c37221d3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa22203a2a2aab293ba203041ac702103b503b503b2a220d2d1aba030c2223372a2a1ab9030c222e3b3b2ce3222537292232222f22441aad030c22303b3b2ce32a1aaa030c293ba003051aa90202593b2a299291031229362b3caa292b25042504511e113b6502012a65291a9002a803041a9202103b503b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965222b3a222b3a2a2aa203032a0201293b22470c1a38032a2f2231221c2234306807222f352230362231383b224d0c2233391a22032a306a2e353ca0032f2e362f382a352a352993293ba003051aff0102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e224a2a452f463b472e482b492d4a273a02f3303b3bef293ba003051ad302024e28092ab1292810b1293cb2292808b4291ab601a503043b5002041abc02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a9c0228082d28082809ec50220f28082d281134ec502b95502b2707293b3bef293ba003051a87020250292817b1292810b1293cb2292808b4291a5a01a503043b5002041a6002103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a430228082e2c2817ec502c95502c27081a3a02221d693e2b69293b693b3b3b3b2d6805221b3c2e220d2d1a28020c501a2b0222192a35452a36462a37472a38482a39492a3a4a642708270a0260220e36220f37221038220d230c1a08022213220f2d6b1a07022b2f2c1a09020c2d3b3b2ce32a3ba0031a1a0302220e2a35452a36462a37472a38482a39492a3a4a64021a2a352937220f2a35452a36462a37472a38482a39492a3a4a64642707661f0a0000000000|@8775,1,@13837,@17608,@17609,@17610,@17611,@5830,@17613,@8783,@1080,@8907,@8908,@8913,@957,72057594037927935,@2035,@17672,@17673,@17674,@17675,@786,@1130,@17676,@17677,@17678,@17679,@8918,@17682,@17683,@17684,@17685,@8921,@8922,@8926,@17690,@917,@874,@294,@17695,@8937,@8942,@8943,@8944,@8945,@8951,@17703,@17704,@8953,@286,@7064,@17705,@5824,@5371,@17607,@7040,@7139,@5371| 17607:D5,40|fb0cfa3c2a36693e2d69293b693b3b3b3b2d68052d373c2e30382dfa2b347b070700000000000000|@8955,1,@13936,@17706,@5824| 17608:D3,40|fb072b2a3723080c299291031329353b2c360c2968012b2a69296801270402013b64420000000000|@8776,1,@13838| 17609:D3,40|fb072b2a37230c0c299291031329353b2c360c2968012b2a69296801270402013b64420000000000|@8776,1,@13839| 17610:D3,40|fb0d2b352c362d372e382f392d2d2d2d2d68052f370c2f36352a2a6931363b3b2ce3502b27084200|@8777,1,@13840| 17611:D4,16|fb05fa242a362b372c386b4200000000|@8778,1,@13841,@17612| 17612:D5,88|fb092b2a38a203052b2a362c8029373529299291032b29352a362a3629353ba003043b500203fa481029382932a003052c680102082b250526041e293b270402013b64293ba00303fa2e103b502935654200000000000000|@8780,1,@13842,@8779,@1921| 17613:D4,16|fb0529362cfa212d7e03000000000000|@8782,1,@13843,@5760| 17614:D15,224|fb1f33373439220c3a2b3ba003043b500203fae4103b50220d3629fae3a003033c0216293b3bef280ba0030c292808facf2808280bed02013b0304facb020a220e2c2c3b220dfac80c220e37220f3922103afac4220e2d2c6b22122c2c2f2dfaaf0c293a2a372b3a3b2b299291031229362b3caa292b25042504511e113b6502012a652a2aaa292eab293ba203033c020429fa8ca80303fa8f103b503b502928403bdafa8b2a316afa8e2b326a220e33fa8e221c221f221f220e32fa8b0c220f34fa7d2e221e22212221221f221efa800c22182c452a4627151f090000000000|@8785,1,@13844,@8786,@5339,@5371,@8789,@17622,72057594037927935,@789,@17623,@17624,@294,@8798,@8784| 17615:D10,112|fb172f353036313840fa7d0cfa822a69fa862b69fa8a2c69292c2c6a302a220f3bfa85220f3bfa880c2e353ca0032e2e362f382a352a352993293ba00304fa7802132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012e2932220f33221022136806270a1f05000000|@8790,1,@13845,@786,@17617,@17619,@17616,@294,@7193,@957| 17616:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@8792,1,@13850,@18,@394,@828,@8794,@854| 17617:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@8792,1,@13846,@19,@394,@828,@8791,@854| 17618:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13847,@19,@8791| 17619:D8,48|fb0b2b352c36fa40fa462b3b6b2c362cfa460c293ba003052a3b6902082935292cfa3d0c642e362e2bfa3d337b050800|@8792,1,@13848,@21,@394,@828,@8793,@854| 17620:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13849,@21,@8793| 17621:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@13851,@18,@8794| 17622:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa39102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@8795,1,@13852,@953| 17623:D4,40|fb062b2a37a203033b02172b2a37ab2a36932a2aa90303fa27103b502b362b3bdb65420000000000|@8796,1,@13853,@829| 17624:D5,40|fb062b2a37ab2a36932a2aa90303fa30103b502b362b3bdb293ba00304fa29020229356642000000|@8797,1,@13854,@829,@5289| 17625:D7,72|fb0c323629fa59a003033c0216293b3bef280ba0030c292808fa452808280bed02013b03033b021a3235fa3c32220d3333220e3434fa3968092a3b2bfa3a317b050d641f08000000|@8799,1,@13855,@5339,@17626,@8798,@874| 17626:D4,64|fb112c2c2a9291032e2a352b36312b2d3036313732383339343a220c2306220d2307220e2308fa300c2a2a2505250526031e2d3b660201296544000000000000|@877,1,@13856,@8800| 17627:D24,1000|fb2634351af903a0f8730234351af003a003043b5002041aee03103b50343729352a361aea03220d69220c352922121ae6030c299291033d293529299291033029352a362a351ab703a0031a2a351aaf03a003043b5002041aad03103b502a37296801640207292503511e2f3b6502013b646402013b293ba003122f2d22122211221122111a9803220f7b0814293529352a363138293629353ca0030c2a362936291a8303a06502013b2991f8c7013438293629353ba00331293830382a2216a203043b5002202a2216ab2a68012216932b2aa903041a5703103b503b5022172c3b2de35026035102023b50220d38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643238293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa0910319220d22151ad202221422222221222122211acd02221f7b0a22221292919129910307220c92919102013b0319220e22161ab602221522232222222222221aa10222207b0a23221438293629353da0299103a2221738293629353da003041a9102103b503b5029353ba00314293729353ca003072936293564020229366402052936293564036a221238293629353da00327221435221536291a5e020c28052a2d221a3b6805291a58021a5d021a62020c293ca09127050233221438293629353da003041a2b02103b503b5029353ba00314293729353ca0030729362935640202293664020529362935646529916602013b6502013b0319221122191a1b02221822262225222522251ad60122237b0a263b6664270802013b27062707f7610134351afd01a0f8570134351af401a003043b5002041a7201103b503437323529220f1a75010c299291033d293529299291033029352a362a351ac601a0031a2a351abe01a003043b5002041a3c01103b502a37296801640207292503511e2f3b6502013b646402013b293ba003142c1a9801220f220e220e220e1a2501220c7b0811293529372e37220c3b3bef22143b3bef2a3ba0030422150259293ba00304220e02502a2ab1292810b1293cb2292808b4291a5c01a503043b5002041a5a01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d2808220cec50280832b1221d28082e2c220cec502c95502c2708293b3bef293ba003051a2201024a293cb1292810b1293cb2292808b4291afe00a503043b5002041afc00103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082f2f2b22182217221722162216221622167b0a193b1f0b00000000000000|@8802,1,@13857,@19,@826,@17628,@828,@8828,@107,@864,@8844,@8846,@8848,@4323,@8850,@8851,@8852,@7096,@8853,@21,@8801,72057594037927935,@286,@371| 17628:D9,144|fb0a2936230d29299291031a29352a362a35fa94a003052a68010207292503511e193b6502013b64293ba00342fa81299291031a29352a362a35fa6ca003052a68010207292503511e193b6502013b64293ba00303fa61103b5029352935fa48a003043b500203fa5710293765021329352935fa33a003043b500203fa42102937642e2afa423bfa47327b0606000000|@8804,1,@13858,@61,@1652,@1701,@826,@8805,@8803| 17629:D3,8|fb023b4200000000|@8808,1,@13859| 17630:D3,8|fb023b4200000000|@8808,1,@13860| 17631:D28,488|fb252e36293ba0f80f012f352938293629353da0037529362a372d35343ba403051adc0102623b1ade010c2c220d2b34370c0b02002e2a1ad6010c5029363e2a6922123cab322a32221522152214360c293b691ac2012a691ac5012a691ac8012a692f2a69293ba00304220c0207220c2a1abc010c1ac0012a691ac3012a693b3e3b3b2d6805271166028b313ba403051ab50102812b38293629353da003041aae01103b503b5029353ba00314293729353ca00307293629356402022936640205293629356403051a8d0102031a90013e2a692f363b1a2f010c2a220f2b220d370c32350b02002c2a1a24010c5029363e2a69293b69293ba00303300206302a1a65010c1a69012a69220c2a693b3e3b3b2d680527116602c82f3529352a37313ba403051a510102b73bfadc0c2c36291a4d010c28052a2f313068052b220d2e34370c30350b02002c2afac40c5029363e2a69291a310169293ba00303300206302a1a2b010c1a2f012a691a32012a693b3b3b3b2d680522183cab22149291034e2214352215362a352b383c2b2b30221d382216221f36221b222422241a08010c2e3cab2d2a221d382216221f36221b22242224fafa0c293ba003032b02052b2afaf50c3b3d3c3b2d680527080202faef293b692c2a693b3b3b3b2d6805271466641f0400000000|@8810,1,@13861,@1313,@5546,@4342,@1323,@1895,@1323,@8811,@1323,@5645,@1313,@4323,@5153,@5147,@8812,@1323,@1313,@8813,@8814,@8816,@1717,@5681,@8817,@8825,@8809,@1890| 17632:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13862,@8811| 17633:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13863,@8812| 17634:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@13864,@8813| 17635:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13865,@8816| 17636:D14,192|fb170b0200220cfacf2bfad40c5029352a3629fad30c221103033d02013b3c3c2b6a2d353da003652d362e3729221122130c22160304fab80202fabc22143ba40304fabc02093e22176929fabb69642a2a693b3b3b3b2d680522173ba6031922173cab302a221622162216221a0c293b69fa9d2a696602013b2a2a693b3b3b3b2d6805293b69342a69270b022e22130304fa850202fa8922113ba40304fa89020222133e2a69293b692c2a693b3b3b3b2d6805293b69302a69270727081f0a00|@8819,1,@13866,@8820,@4254,@8821,@1797,@8818,@5577,@8822,@8823,@1797,@8818,@1314| 17637:D3,8|fb023b4200000000|@7170,1,@13867| 17638:D4,56|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa280c2a2a69270c02013b42000000000000|@880,1,@13868,@8821| 17639:D6,88|fb10329291034d32353336333ba203033b023e2a352b383b2b2b220f220f220f220f220f220f220ffa460c220d3cab2d2a220f220f220f220f220f220ffa390c293ba003032b02072b2afa34347e1127056502013b1f0800|@8827,1,@13869,@8817,@8825,@8826| 17640:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13870,@8826| 17641:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13871,@8809| 17642:D14,272|fb152b1a2201a003033c02152b3b3bef3ba0030c2b28081a0e0128083bed02013b03051a0a0102572b3b3bef293ba003051a0401024828122ab1292810b1293cb2292808b429faf8a503043b500203faf710292841bd2a3cb22a2a3b3bf02b3b3b32f050fad228082d28082812ec503328082d281a34ec502b95502b270764293b3bef293ba00304fac6024828222ab1292810b1293cb2292808b429faa2a503043b500203faa110292841bd2a3cb22a2a3b3bf02b3b3b32f050fa9428082d28082822ec503128082d282a34ec502b95502b27073e2a6934340c293b69fa792a69fa7d2a693b3e3b3b2d680529fa7969fa7e2a69302a693b3e3c3b2d680522123c221322132dfa7022147b0715000000|@8830,1,@13872,@294,@371,@8831,72057594037927935,@286,@8832,@1323,@8833,@8829,@1323,@5824| 17643:D19,336|fb222b1a6201a003033c02152b3b3bef3ba0030c2b28081a4e0128083bed02013b03051a4a01025a2b3b3bef293ba003051a4401024b28122ab1292810b1293cb2292808b4291a3701a503043b5002041a350110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a0f0128082d28082812ec503328082d281a34ec502b95502b270764293b3bef293ba003051a0201024828222ab1292810b1293cb2292808b429fadea503043b500203fadd10292841bd2a3cb22a2a3b3bf02b3b3b32f050fad028082d28082822ec503128082d282a34ec502b95502b27073e2a69220c340c293b69fab42a69fab82a693b3e3b3b2d6805221222100c293b69faad2a69fab12a693b3e3b3b2d680522153b69faaa2a69faae2a693b3e3b3b2d6805293b69faa82a692f2a69faa92a69220d2a69faa92a6922142a693b3e3c3b2d6805221f3c222022202dfa9a22217b07240000000000|@8847,1,@13873,@294,@371,@8831,72057594037927935,@286,@8832,@1323,@8833,@1323,@8839,@1323,@7467,@1323,@1323,@1323,@5824| 17644:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@13874,@8850| 17645:D3,8|fb023c4200000000|@7094,1,@13875| 17646:D3,8|fb023d4200000000|@7094,1,@13876| 17647:D5,32|fb0b2b353e2a69293b69fa2c2a69fa302a693b3b3b3b2d680527054200000000|@8855,1,@13877,@7466,@5657| 17648:D9,112|fb11333629fa81a003033c0216293b3bef280ba0030c292808fa6d2808280bed02013b03033b02403335fa64220d34343434342211fa61220d680a2a3b2bfa600cfa6531220c6a220e35fa6422113322102210220e30221222122217680a2a2d2bfa3d220c7b0512641f090000000000|@8856,1,@13878,@5339,@17650,@8784,@874,@17664,@17649| 17649:D4,64|fb122c2c2a929103322a352b36312b2d3036313732383339343a220c2306220d2307220e2308220f2309fa2c0c2a2a2505250526031e313b6602012965440000|@877,1,@13894,@8885| 17650:D4,64|fb122c2c2a929103322a352b36312b2d3036313732383339343a220c2306220d2307220e2308220f2309fa2c0c2a2a2505250526031e313b6602012965440000|@877,1,@13879,@8857| 17651:D11,592|fb18220c351a6002a003d2220c351a5702a003043b5002041a5502103b50220c3734352922101a4f020c299291033d293529299291033029352a362a351a2802a0031a2a351a2002a003043b5002041a1e02103b502a37296801640207292503511e2f3b6502013b646402013b293ba00304220f02622935292e2210221022102210221022101af7010c5029362e362a2a22142b929103052a929102013b03352b352c362c352d362c382b3729353ba0031029363d3d2d326b2a2a692933696602012f2e2d2b250a250a250a26071e3b3b270702012966662704f77001220c351aa501a0f86501220c351a9b01a003043b5002041a7901103b50220c3734352922101a73010c299291033d293529299291033029352a362a351a6c01a0031a2a351a6401a003043b5002041a4201103b502a37296801640207292503511e2f3b6502013b646402013b293ba00304220f02f6293529372e37343b3bef22153b3bef2a3ba0030422160259293ba00304220d02502a2ab1292810b1293cb2292808b4291a0b01a503043b5002041a0901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d2808220cec50280832b1221e28082e2c220cec502c95502c2708293b3bef293ba00304fad20248293cb1292810b1293cb2292808b429faafa503043b500203faae103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082f2f2b22182218221822182218221622180c220c3629353ba0031129363b2c220c6a2a2a6929221d696602022219270a27040201341f0c00|@8859,1,@13880,@19,@826,@828,@8858,@21,72057594037927935,@286,@371| 17652:D14,448|fb2432353336333534362c352b352c36291ac4010c1ac801220f693138293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65643238293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642c2aa09103043bf72801280531220c22113b6805280532220c22103b68052a2a221a221a1a3a010c29353ca003dc220e92919103033b02d03b2211299291031229362b3caa292b25042504511e113b6502012a653b2210299291031229362b3caa292b25042504511e113b6502012a652a2aa403033b028f2212299291038629352a362a352214299291033729352a362a35292ea003033c0219293b3bef2e3b3befa0030d2928082f2808313b3befed02013b03033c02082a250426031e363b6602013b6403043b50022f29fa9b69faa02a6922152a69faa02a6966faa30c3e2a69293b693b3b3b3b2d680522223c222322232dfa930c5026042a250426031e853b6602013b646502272936221922172218fa7dfa830c2a2a0c64221d221d2b220e221e221e221e221dfa75221e7b0a1e66270f1f08000000|@8861,1,@13881,@8862,@17654,@8868,@8878,@8880,@8881,@284,@5824,@8860,@7451,@8846| 17653:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@13882,@8862| 17654:D9,144|fb0a2936230d29299291031a29352a362a35fa94a003052a68010207292503511e193b6502013b64293ba00342fa81299291031a29352a362a35fa6ca003052a68010207292503511e193b6502013b64293ba00303fa61103b5029352935fa48a003043b500203fa5710293765021329352935fa33a003043b500203fa42102937642e2afa423bfa47327b0606000000|@8864,1,@13883,@61,@1652,@1701,@826,@8863,@8803| 17655:D3,8|fb023b4200000000|@8867,1,@13884| 17656:D3,8|fb023b4200000000|@8867,1,@13885| 17657:D11,64|fb0efa542d69fa582a692ffa5b2bfa600c0b020034fa612bfa660c5029352a3629fa650c2b30fa680c299291030829353b2a696402033c3169270a1f04000000|@8870,1,@13886,@17658,@17659,@8876,@4261,@8869,@4254,@7157,@7407| 17658:D3,24|fb062b3629353ba003082938292c362e7d053b6442000000|@8871,1,@13887| 17659:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@8873,1,@13888,@8874,@8872,@4331| 17660:D3,8|fb022b4200000000|@8875,1,@13889| 17661:D3,8|fb022b4200000000|@8875,1,@13890| 17662:D3,8|fb022b4200000000|@8877,1,@13891| 17663:D3,8|fb023b4200000000|@7170,1,@13892| 17664:D21,720|fb1b2b352c382d3929299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d68053336293ba003ea301a88020c29353da0030829362968016402013b29929103b72935220c37230d29299291031b29352a362a351a6502a003052a68010207292503511e1a3b6502013b64293ba0034b1a5102299291031b29352a362a351a3b02a003052a68010207292503511e1a3b6502013b64293ba003041a2f02103b503b50293529351a1302a003043b5002041a2102103b502937650217293529351afa01a003043b5002041a0802103b502937643b1a06020c2d2b2b2213363b1a03020c293b691a04022a691a07022a691a0a022a69270902013b2d2a691a05022a691a08022a693b3b3b3b2d68052706f7840129929103c83237230d29299291031b29352a362a351a9201a003052a68010207292503511e1a3b6502013b64293ba0034b1a7e01299291031b29352a362a351a6801a003052a68010207292503511e1a3b6502013b64293ba003041a5c01103b503b50293529351a4001a003043b5002041a4e01103b502937650217293529351a2701a003043b5002041a3501103b502937643b1a33010c342b2b2210363b1a30010c293b691a59012a691a5c012a691a5f012a69332a691a5f012a691a62012a693b3b3b3b2d6805270c02b73237230d29299291031a29352a362a35facba003052a68010207292503511e193b6502013b64293ba00346fab8299291031a29352a362a35faa3a003052a68010207292503511e193b6502013b64293ba00303fa98103b503b5029352935fa7da003043b500203fa8c103b50293765021529352935fa66a003043b500203fa75103b502937643bfa740c342b2b2210363bfa720c293b69fa9c2a69faa02a69faa42a69332a69faa52a69fab12a693b3b3b3b2d6805270c270942000000|@8883,1,@13893,@4275,@61,@1652,@1701,@826,@5546,@5570,@7466,@5665,@5749,@7466,@5701,@1323,@5688,@1500,@7466,@8882,@5650| 17665:D22,432|fb1f220c351ac001a0f89d01220c351ab601a003043b5002041ab401103b50220c3729362a372b38220e352922131aa7010c299291033d293529299291033029352a362a351a8001a0031a2a351a7801a003043b5002041a7601103b502a37296801640207292503511e2f3b6502013b646402013b299291f81901293529362a383b06293b3b1a5701221869e350323ba0030f2b3ba003051a4d0102031a5001022b329291030f2b929103051a490102031a4c0102172b3ba003051a4a01020d2b929103051a480102031a4b0129353ba003a629362c33221722171a42010c29353ba0032b29362216221622171a38011a3d010c2a2a0c643122102b2218221b2219221922191a2f010c50221b6502662936303a299291030d29352936293b3b3ce3505102023b50312306299291032729350b02002f1a07012b1a0b010c5029352a36291a09010c2f352c2a69313b3b2ce350260902023b50220e353ba00313220e363d2f2e220d6b2a2a6929222069660202221c6665021729362e220d2b22152218221622162216faad0c50221864270502112f220d2210220e220e220efab70c50221227070201341f0c00000000|@8887,1,@13895,@18,@826,@828,@17666,@1241,@8901,@1241,@8904,@919,@917,@1241,@8868,@8860,@7451,@8846,@8886,@4254,@7157,@8828| 17666:D16,304|fb102b363ca203061a3d01f71d012b3529353ba003892c3529362e363cab2a2a692e36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0701a003033c020f291a0501a003033c0205291a0301a06402013b9102013b02013b03192a1af900691afd002a691a00012a693b3e3c3b2d68056602012a64020129293b69faf22a69faf62a693b3c3b3b2d68052709028b2c363ca20304fae902812c3529362e363cab2a2a69fae2352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa75a003033c020d29fa74a003033c020429fa73a06402013b9102013b02013b03162afa6a69fa6f2a69fa732a693b3e3c3b2d68056602012a64020129293b69fa852a69fa892a693b3c3b3b2d68052709644200000000|@8889,1,@13896,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@8890,@2535,@175,@1323,@8888| 17667:D4,8|fb02fa1c42000000|@838,1,@13897,@837| 17668:D3,8|fb023b4200000000|@7170,1,@13898| 17669:D4,32|fb082e2ea003033b02132e2caa2d0c2f3caa29303030fa200c2b2a69661f0400|@1075,1,@13899,@8907| 17670:D7,120|fb102d929103692d352e362a3629353ba003043b500203fa77103b5029362a392d3729352934fa706a303629353da00303fa6d103b503b5029353ba00314293729353ca0030729362935640202293664020529362935642f3b2b312f680565340c30220d220dfa400c2a2a69270a02013b44000000000000|@880,1,@13900,@8910,@8909,@4323,@8908| 17671:D6,56|fb092c3ba0030f2b3ba003043b500203fa3e103b02212c352d362d929103043b500203fa33102d352e362a2d692c2bfa2f0c2a2a69270643|@2305,1,@13901,@2304,@2304,@8913| 17672:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@8914,1,@13902,@831| 17673:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13903,@4374| 17674:D3,24|fb0529383a2c2aa203062c2b362d7d042c2b372d7d040000|@8915,1,@13904| 17675:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13905,@4374| 17676:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13906| 17677:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13907| 17678:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13908| 17679:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa1e2f7e05654200|@8917,1,@13909,@8916| 17680:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13910,@8916| 17681:D3,8|fb023b4200000000|@8917,1,@13911| 17682:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13912| 17683:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13913| 17684:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13914| 17685:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa1e2f7e05654200|@8920,1,@13915,@8919| 17686:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13916,@8919| 17687:D3,8|fb023b4200000000|@8920,1,@13917| 17688:D4,8|fb02fa1c10000000|@8920,1,@13918,@8923| 17689:D4,8|fb02fa1c10000000|@8920,1,@13919,@8927| 17690:D4,56|fb0e2c2c2a929103272a352b360b0200342e302c3436fa380c5029352a362a2a692f2a250a250a26081e253b270802012965440000000000|@877,1,@13920,@8930| 17691:D8,432|fb242d352e3630351abd01a003de30351ab501a003043b5002041ab301103b50303729352a3629929191030e342c6931380c50312e452d4602af2d2d693b2a690b02002e2d2a9291034d2a352b362a352b362c382d392e3a2f23063135323629352a363b2b6933332b343434346807292f692d3caa3d3d220d22126b2f2a692930692c2a692e2a6922132a2517251726151e4c26150209292c2a35452a3646515129352a3631353236333834372c2c2b2d6b2f3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652a2a6922192a69652214380c502e22152a35452a364664270c6602bc3035fae8a003443035fae1a003043b500203fad0103b50303729382a3729fad40c3b2f69220d2a2d2f6b220e2a696532230a0c502e3caa3b2b2f6a302a69293169220d2d452a46270802713035faada003653035faa6a003043b500203fa85103b503037293729353ea0030e332b6930370c50302d452c46023a2a362b382c392d3a2e23063b326922102f2b30303030680722112a69220e370c50333caa3d3d31220c6b220c2a6929220d6922122d452a46270b6502052e2b452a46651f050000000000|@8932,1,@13921,@19,@826,@21,@8931,@18| 17692:D5,16|fb072b35293bfa20fa262f7b05040000|@8934,1,@13922,@8933,@874| 17693:D4,40|fb092c2c2a929103182a352b36312b2dfa2e0c2a2a2505250526031e173b66020129654400000000|@877,1,@13923,@8935| 17694:D8,200|fb0e2c35fadaa003312c35fad3a003043b500203fad2102c37293629353ba0031529362b37fac90c3b2a2e6a2b2a69293269270402012d65028b2c35fabaa0032f2c35fab3a003043b500203fa9a102c37293729353ba0031329362b383d3d2b2f6b2b2a69293269270402012d6502552c35fa8ca0034d2c35fa85a003043b500203fa64102c372936292e2a9291032f2a352b362a3729353ba0031329362c383d3d2b306b2b2a69293169270402012c2b2a2506250626041e2d3b2704020129656502012b440000|@8936,1,@13924,@21,@826,@8931,@18,@19| 17695:D4,16|fb0529362cfa212d7e03000000000000|@8782,1,@13925,@5760| 17696:D6,96|fb0d2b929103572b352c362a3529353ba003043b500203fa5f1029362c3629353da00303fa5a103b5029353ba00314293729353ca0030729362935640202293664020529362935643c2a346a2c2a69343caa2931fa320c2b2a69270a02013b43|@8939,1,@13926,@8938,@4323,@8937| 17697:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13927,@8942| 17698:D4,32|fb082e2ea003033b02132e2caa2d0c2f3caa29303030fa200c2b2a69661f0400|@1075,1,@13928,@8943| 17699:D6,56|fb092c3ba0030f2b3ba003043b500203fa3e103b02212c352d362d929103043b500203fa33102d352e362a2d692c2bfa2f0c2a2a69270643|@2305,1,@13929,@2304,@2304,@8944| 17700:D5,56|fb0e2e929103282e352f360b02002d2a343434fa3b0c5029352a362a2a692f220d220d220dfa310c2a2a69270902013b1f04000000000000|@880,1,@13930,@8946,@8945| 17701:D8,192|fb132f3629353ba003043b500203fac8103b5029362a3932372935323b3bef293ba00304faba024b281e2ab1292810b1293cb2292808b429faaea503043b500203faad103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fa8628082d2808281eec50221128082d282634ec502b95502b27072b342b6a220e3629353da00303fa76103b503b5029353ba00314293729353ca003072936293564020229366402052936293564313b2b332f680565340c220e2a4522104627091f050000000000|@8948,1,@13931,@8949,@8947,72057594037927935,@286,@4323| 17702:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@13932,@8951| 17703:D4,72|fb082b2a2306a203052b2a362c8029383a2c2aa8031b2a383a2d2aab2c37932a2aa90303fa3a103b502d372b3bdb6602152a3a3a2d2aa803062d2c392e7d052d2c3a392e7d056442|@8952,1,@13933,@831| 17704:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13934,@4374| 17705:D4,16|fb0529362cfa212d7e03000000000000|@8954,1,@13935,@5760| 17706:D4,16|fb0529362cfa212d7e03000000000000|@8954,1,@13937,@5760| 17707:D6,120|fb1333299291036b29352a362a353ba003152a362b372a2a220d2211220c220ffa6e0c505102422a353ca0031d2a362b37292b220d3134221322132213221222122212fa530c5051021f2a372b382c2b2b220d220d2213220e220c36220f221622162216fa3a0c5051292503511e6a3b6502013b641f0900|@8957,1,@13938,@8958,@8968,@8956| 17708:D10,104|fb1b2e23062f2308303931230c323a33230bfa6c220d220d6afa6d220e220e6afa6e220f220f6afa6f221022106a220f3622102307221123092d2c3131220e220d221231221332220d22122215680dfa4f221322136a22162a2c2214fa4afa500c3b27101f060000|@8960,1,@13939,@17709,@17711,@17713,@17715,@17717,@8959,@7111| 17709:D4,48|fb0a2b362c2b37370c502a36353e2b69293b69293ba003032b02052b2afa290c2e363b3b2ce327054200000000000000|@8962,1,@13940,@8961| 17710:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13941,@8961| 17711:D4,48|fb0a2b362c2b37380c502a36353d2b69293b69293ba003032b02052b2afa290c2e363b3b2ce327054200000000000000|@8962,1,@13942,@8963| 17712:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13943,@8963| 17713:D4,48|fb0b2b2a37350c502936352c352d363b2b2b6a293b69293ba003032d02052d2afa260c2f363b3b2ce327064200000000|@8962,1,@13944,@8964| 17714:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13945,@8964| 17715:D4,48|fb0a2b362c2b37230a0c502a36353c2b69293b69293ba003032b02052b2afa280c2e363b3b2ce3270542000000000000|@8962,1,@13946,@8965| 17716:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13947,@8965| 17717:D6,304|fb162c3629353ca003a02d352d352e362f373b2d299291031229362b3caa292b25042504511e113b6502012a652f373b3bef2d3b3bef2a3ba003032e0258293ba003043137024f2a2ab1292810b1293cb2292808b429faf0a503043b500203faef103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220f3728082d2808220cec50280832b1220d28082e2c220cec502c95502c2708292f2f6a2d3c221122112d680527052f36317d0b2d352d352e362f372e373b3bef2c3b3bef2a3ba003032d0258293ba003043037024f2a2ab1292810b1293cb2292808b429fa6ba503043b500203fa6a103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220e3728082d2808220cec50280832b1220c28082e2c220cec502c95502c2708292e2e6a3d31336afa332a2c6a2709641f04000000|@8966,1,@13948,72057594037927935,@286,@1033| 17718:D3,8|fb023b4200000000|@8967,1,@13949| 17719:D14,200|fb2740fadb0cfae00c292306220c2306fade2a2c6a2c2308220f2308fada2a2c6a2f3930230c2213230cfad42a2c6a22153a2216230b220c37220d38220e230a220f3622102307fabf221d22136afac02c3030220f220c221531221432220d22112214680d2220221c221c221c2d221d221d221d222422260cfa9d222022166afa9e222122176afa9f222222186afaa0222322196afa792a2e2e22152212221b220e221a220f342217221a680d22252222222222222d222322232223222a222c22257b0b27000000|@8969,1,@13950,@786,@1130,@17721,@17722,@17723,@17724,@8972,@17727,@17728,@17729,@17720| 17720:D3,16|fb042b2a37360c502b2a36362c800000|@8973,1,@13960| 17721:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13951| 17722:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13952| 17723:D3,24|fb052b2a370c293ba003062c2b362d7d0429644200000000|@5205,1,@13953| 17724:D4,32|fb073b2a3723090c3b2b3623090c293ba003032a02072a2afa1e2f7e05654200|@8971,1,@13954,@8970| 17725:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13955,@8970| 17726:D3,8|fb023b4200000000|@8971,1,@13956| 17727:D3,16|fb042b2a37370c502b2a36372c800000|@8973,1,@13957| 17728:D3,16|fb042b2a37380c502b2a36382c800000|@8973,1,@13958| 17729:D3,16|fb042b2a37230a0c502b2a36230a2c80|@8973,1,@13959| 17730:D7,96|fb1cfa74220e220c220c6b0b03002d2afa6e0c5029352a36fa6e221322116a2214299291032f29352a362a352b362c372d382e392f3a221822182218220c22192219221922222212fa460c50292503511e2f5102023b505033230a2c347d1600|@8975,1,@13961,@17731,@5301,@17733,@8974| 17731:D9,216|fb12faec2a36692e3b3bef293ba00304fae60249402ab1292810b1293cb2292808b429fadba503043b500203fada103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050fab328082d280840ec50220d28082d281234ec502b95502b2707293b3bef293ba00304faa8024d29282bb1292810b1293cb2292808b429fa84a503043b500203fa83103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6728082e2c282bec502c95502c27083e2a69293b693b3b3b3b2d680531373c3234382dfa4b220f7b070d000000000000|@8977,1,@13962,@17732,@8976,72057594037927935,@286,@5828,@5824| 17732:D4,16|fb0529362cfa212d7e03000000000000|@8978,1,@13963,@5534| 17733:D3,24|fb082b2a370c2a36352a2a692c363b3b2ce3502b66420000|@8979,1,@13964| 17734:D9,304|fb24333b3bef22103b3bef2a3ba0030422110259293ba00304220c02502a2ab1292810b1293cb2292808b4291a1901a503043b5002041a1701103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221328082d2808220cec50280832b1221928082e2c220cec502c95502c2708293b3bef293ba00304fae00248293cb1292810b1293cb2292808b429fabda503043b500203fabc103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27080b0600221a221422142214221422142222220e31221d221f0c5029352a362b372c382d392e3a2e2e2e2e2e2e680629fa6d0c3b222069221823103b2a0c3d2a69293b692d2a69fa5e06fa63063d2b2b6a222c2a220c2f6b222d2a6922210c50296801222c3b3b2ce3271f1f0f0000|@8981,1,@13965,72057594037927935,@286,@371,@8980,-1,@7177| 17735:D5,16|fb072b35293bfa20fa262f7b05040000|@8983,1,@13966,@8982,@874| 17736:D8,128|fb152c2c2a9291036f2a352b362a35fa87a003552a35fa80a003043b500203fa7f102a37293a299291030d29352936293b3b3ce3505102023b502a2306299291032329352c380b02002cfa5c2bfa610c5029352a3629fa600c2b3b69313b3b2ce3270902013b6602013b2a2a2505250526031e6e3b6602012965440000000000|@877,1,@13967,@18,@826,@8984,@4254,@7157| 17737:D3,8|fb023b4200000000|@7170,1,@13968| 17738:D4,40|fb092c2c2a929103182a352b36312b2dfa2e0c2a2a2505250526031e173b66020129654400000000|@877,1,@13969,@8733| 17739:D4,88|fb072b2a2306a203152936932c2aa90303fa5d103b502a362d3bdb6402382b2a3aa2031b29383a2c2aab2b37932a2aa90303fa3c103b502c372b3bdb6602172b2a3aab2a39932a2aa90303fa23103b502b392b3bdb654200|@8987,1,@13970,@831| 17740:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@13971,@4374| 17741:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@13972,@8754| 17742:D7,128|fb112b352c362d372e382f392e37353b2a299291031229362b3caa292b25042504511e113b6502012a652e0318fa6906fa6e063d2b2b6a322a2e333333680666fa660c0216fa5106fa56063d2b2b6a322a2e333333680666fa560c3137352a2a6933373b3b2ce3503336352c2a69220c363b3b2ce3502d270c42000000000000|@8988,1,@13973,-1,@7177,@7076,@7078| 17743:D5,24|fb0a2b352c3629382b2a2e36fa22fa28327b060600000000|@5798,1,@13974,@5799,@5797| 17744:D3,8|fb023b4200000000|@7170,1,@13977| 17745:D9,64|fb052b363ca20304fa4e022e2b35293ba00304fa4b02222c363ca20304fa4902182c35293ca00304fa46020c2d363ca20304fa440202fa486464420000000000|@8993,1,@13978,@2535,@8994,@2535,@9001,@2535,@8992| 17746:D5,40|fb0c2c352d362e37fa360c0b02002f3530362b2f31363237fa2e0c5029352a362a2a692706430000|@9017,1,@13979,@7663,@9016| 17747:D6,56|fb08303ba003072e30452e460226fa4031fa45303030220c68073f2a69293b69293ba00303300205302afa340c3234452a4627041f060000|@9019,1,@13980,@17748,@9016,@9018| 17748:D4,32|fb0c2b2a363b2c372d382e392f3a3036312306fa23347b0b0300000000000000|@9021,1,@13981,@9020| 17749:D9,128|fb1132929103043b500203fa8b103b5032353336fa8a333030220c220c220c68072968012b3ba003033b0231fa7afa80220f220f220f220f220f220f220f220f680a296801fa71fa672f2c221122112211221122112211680a29680166292b220f6a0b02002c322b22112211fa520c5029352a362a2a69270b1f090000000000|@9023,1,@13982,@9024,@17750,@17751,@9020,@17752,@9022| 17750:D3,32|fb0b0b02002c372d382b2f39303a31230632360c5029352a362a2a6927054200|@9026,1,@13983| 17751:D3,32|fb0c2b2a372b382c392d3a2e23062f23073023083123093236347b0b03000000|@9021,1,@13984| 17752:D3,32|fb0c2b2a372b382c392d3a2e23062f23073023083123093236347b0b03000000|@9021,1,@13985| 17753:D12,144|fb0ffaa42f6928092a69313532363337fa9e0c2a2a69faa0faa6220c220c3434680633353ba0032a33363437fa9a34692c68012a2a692d2afa960c303ba003032902052931fa910c22102f452a462707023933353ca00327333634372b6801fa7f2a692c2afa690c2f3ba003032902052930fa740c220f2e452a462706020c3336220c2a220c34347b050d27051f0500|@9028,1,@13986,@17754,@7663,@17755,@9022,@17756,@7719,@9074,@9075,@9027| 17754:D4,16|fb0529362cfa212d7e03000000000000|@9029,1,@13987,@5532| 17755:D3,32|fb0a0b02002c372d382b2f39303a31360c5029352a362a2a6927054200000000|@9030,1,@13988| 17756:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@9032,1,@13989,@9031| 17757:D10,232|fb1a2d3a29352f352937313632373338342306220c23073092910307303529396402013b0b02002e3ca0030631353da002013b031b313629352a362b372c382b2b2b6a296801302a452f465026070206293b4532465029352a36221435221536221637fa9b0cfaa0faa62217221722166805280528403bdafa9e45280728403bdafa9d45280728403bdafa9c45280628403bdafa9b4529220f46220d47220c482b492e4a6c502a2212462a472e482d492c4a314b6c502b22184630472e482d492b4a314b6c502c31462c472b482e496c503f2a69293069221a2212452a4627171f04000000000000|@9033,1,@13990,@7663,@17759,@9031,@17760,@17795,@17796,@17758| 17758:D7,128|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa4a0cfa4f2e366928092a69293b69293ba003032c02052c2afa410c293ba003032e02052e2afa3c0c32372a6927094200000000|@9072,1,@14029,@7663,@17797,@9073,@9071| 17759:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@9034,1,@13991| 17760:D5,56|fb0e293968012a3868012b376801292c2c6a2d363ba00303fa36103b502d363529350b02002e2d2bfa2e0c5029352a362a2a69270b420000|@9036,1,@13992,@1921,@9035| 17761:D12,120|fb0efa8c2d6928092a692f3530363137fa860c2a2a69fa8832326a31353da0030830fa84452b46024c31353ba00327313632372b6801fa782a692c2afa7a0c2f3ba003032902052930fa750c220d2e452a462706021f31373238293529fa690c2e3ba00303290205292ffa640c220c2e452a462705270544|@9038,1,@13993,@17762,@7663,@17763,@5229,@9041,@7719,@9068,@7709,@9037| 17762:D4,16|fb0529362cfa212d7e03000000000000|@9039,1,@13994,@5543| 17763:D4,24|fb080b02002c362d372bfa240c5029352a362a2a69270542|@9040,1,@13995,@9035| 17764:D4,24|fb080b02002e352f362bfa240c5029352a362a2a69270542|@9043,1,@13996,@9042| 17765:D18,312|fb121a4b012d6928092a692f35303631371a44010c2a2a691a450132326a31350a060036004200a100c8000c00d000313632372b68011a2f012a692c2a1a30010c2f3ba0030329020629301a2a010c220d2e452a46270602d73136332a331a1f01347b050b3136323733382a352b362b929103392b353f28403bda1a0a0145280528403bda1a080145292e462d472b4832496c502a2c462a4732486c503f2a69293469221133452a4627050213fae92b2b316b3f2a69293269220f31452a46662705026c313632372b6801fad32a692c2afa9d0c2f3ba003032902052930fac80c220d2e452a462706024530fac2452b46023d3136323733382a352b363f28403bdafab445280528403bdafab345292d462c472b4831496c502a2e462a4731486c503f2a69293369221032452a4627092705440000000000|@9044,1,@13997,@17767,@7663,@17768,@9047,@7719,@9056,@7112,@17778,@17779,@17783,@9063,@9065,@5229,@17789,@17766| 17766:D7,64|fb0b293968012a386801292b3bfa490cfa4e2d366928092a69293b69293ba003032c02052c2afa400c293ba003033b02053b2afa3b0c31372a69270842000000|@9059,1,@14021,@7663,@17790,@9067,@9066| 17767:D4,16|fb0529362cfa212d7e03000000000000|@9045,1,@13998,@5648| 17768:D4,24|fb080b02002c362d372bfa240c5029352a362a2a69270542|@9046,1,@13999,@9042| 17769:D4,24|fb080b02002e352f362bfa240c5029352a362a2a69270542|@9049,1,@14000,@9048| 17770:D7,88|fb0e2c352d362e372f382935fa6233336a3f28403bdafa6045280528403bdafa5f452930462f472b482c496c502a2d462a472c486c503f2a69220d35220e36220f37fa440c2a2a69220d34452a46270b4400000000000000|@9050,1,@14001,@17772,@17773,@17771,@7663| 17771:D7,64|fb0b293968012a386801292b3bfa490cfa4e2d366928092a69293b69293ba003032c02052c2afa400c293ba003033b02053b2afa3b0c31372a69270842000000|@9054,1,@14004,@7663,@17774,@9055,@9053| 17772:D4,24|fb080b02002c362d372bfa240c5029352a362a2a69270542|@9051,1,@14002,@9048| 17773:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@9052,1,@14003,@9035| 17774:D3,8|fb033e2a36694200|@7700,1,@14005| 17775:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14006,@9055| 17776:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14007,@9053| 17777:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14008,@9056| 17778:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@9057,1,@14009,@7702| 17779:D7,64|fb0b293968012a386801292b3bfa490cfa4e2d366928092a69293b69293ba003032c02052c2afa400c293ba003033b02053b2afa3b0c31372a69270842000000|@9059,1,@14010,@7663,@17780,@9060,@9058| 17780:D3,8|fb033e2a36694200|@7700,1,@14011| 17781:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14012,@9060| 17782:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14013,@9058| 17783:D7,64|fb0a293868013b2a3bfa4d0cfa522c366928092a69293b69293ba003032c02052c2afa440c293ba003033b02053b2afa3f0c30372a6927074200000000000000|@9059,1,@14014,@7663,@17784,@9062,@9061| 17784:D3,8|fb033e2a36694200|@7700,1,@14015| 17785:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14016,@9062| 17786:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14017,@9061| 17787:D4,24|fb080b02002e352f362bfa240c5029352a362a2a69270542|@9064,1,@14018,@9035| 17788:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14019,@9065| 17789:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@9057,1,@14020,@7702| 17790:D3,8|fb033e2a36694200|@7700,1,@14022| 17791:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14023,@9067| 17792:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14024,@9066| 17793:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14025,@9068| 17794:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14026,@9037| 17795:D3,48|fb0c2923063ba091030429390202293a2a3868012a68013b2b2b6a0b02002c31372b33360c5029352a362a2a69270942|@9069,1,@14027| 17796:D4,56|fb0d2923063ba091030429390202293a2a3868012b3768012b6801292c2c6a0b02002c32362bfa280c5029352a362a2a69270a4200000000|@9070,1,@14028,@9035| 17797:D3,8|fb033e2a36694200|@7700,1,@14030| 17798:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14031,@9073| 17799:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14032,@9071| 17800:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14033,@9074| 17801:D4,24|fb080b02002e352f362bfa240c5029352a362a2a69270542|@9077,1,@14034,@9076| 17802:D7,96|fb102c37293529382f35303631383239fa66220c220c6a3f28403bdafa6245280628403bdafa6145292f462e4731482b492c4a6c502a2d462a472c486c503f2a69220f35221036221137fa440c2a2a69220f33452a46270d4400000000000000|@9078,1,@14035,@17804,@17805,@17803,@7663| 17803:D7,128|fb0c293a68012a3968012b383b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129652a2c3bfa4a0cfa4f2e366928092a69293b69293ba003032c02052c2afa410c293ba003032e02052e2afa3c0c32372a6927094200000000|@9082,1,@14038,@7663,@17806,@9083,@9081| 17804:D4,24|fb080b02002c362d372bfa240c5029352a362a2a69270542|@9079,1,@14036,@9076| 17805:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@9080,1,@14037,@9035| 17806:D3,8|fb033e2a36694200|@7700,1,@14039| 17807:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14040,@9083| 17808:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14041,@9081| 17809:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14042,@9027| 17810:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14043,@9018| 17811:D19,392|fb151a9b012d6928092a692f35303631371a94010c2a2a691a95012e33336b31353da00341313629352a362b383f28403bda1a830145280528403bda1a81014529220c462e472b4830496c502a2d462a4730486c503f2a69293269220f2e452a462708f71c0131353ca0035d3136323733383b06293b3b1a4e01220d37220e386ae3501a4a013336346a2e68012a2a692e1a44010c3c3169293b69293ba003032b02062b2a1a38010c292e1a3a010c220d3ba0030329020729220e1a32010c221434452a46270d02b931353ba0035a313629352a362b392c3a2d23062b35293ba003033b02052935293964280528403bda1a040145280628403bda1a0201452931462e472c482b49344a6c502a22104632472a4834496c503f2a6929220d69221331452a46270c025931353ea00327313632372b680131392a692c2afaaa0c2f3ba003032902052930fabd0c220d2e452a462706022c313732382a35293ba003033b0205293529386429faa40c2f3ba003032902052930fa9f0c220d2e452a462706270544000000|@9087,1,@14044,@17812,@7663,@17813,@17814,@17815,@17816,@17817,@9102,@9103,@7719,@9104,@17821,@17822,@9109,@7709,@9086| 17812:D4,16|fb0529362cfa212d7e03000000000000|@9088,1,@14045,@5760| 17813:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@9089,1,@14046| 17814:D4,40|fb0b293868012a3768013b2b2b6a0b02002c30362bfa290c5029352a362a2a692708420000000000|@9090,1,@14047,@9035| 17815:D3,40|fb0b293968012a386801292b3b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@9091,1,@14048| 17816:D15,304|fb102b363ca203061a3d01f71d012b3529353ba003892c3529362e363cab2a2a692e36352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0701a003033c020f291a0501a003033c0205291a0301a06402013b9102013b02013b03192a1af900691afd002a691a00012a693b3e3c3b2d68056602012a64020129293b69faf22a69faf62a693b3c3b3b2d68052709028b2c363ca20304fae902812c3529362e363cab2a2a692e37352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fa75a003033c020d29fa74a003033c020429fa73a06402013b9102013b02013b03162afa6a69fa6f2a69fa732a693b3e3c3b2d68056602012a64020129293b69fa7d2a69fa812a693b3c3b3b2d68052709644200000000|@9093,1,@14049,@2535,@594,@595,@596,@2624,@1500,@2627,@1323,@9094,@2535,@1323,@9092| 17817:D3,64|fb0b2b352c3629353ba0031729360b02002e2d2b32360c5029352a362a2a692706021529360b02002e2d2b32370c5029352a362a2a6927066542000000000000|@9101,1,@14050| 17818:D4,32|fb072b929103122b352c363b2b692afa270c2a2a69270402013b420000000000|@880,1,@14051,@9102| 17819:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14052,@9103| 17820:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14053,@9104| 17821:D3,40|fb0b293968012a3868013b2b2b6a0b02002c30372b32360c5029352a362a2a692708420000000000|@9105,1,@14054| 17822:D8,72|fb0c293a68012a3968012b38fa520c2a2c3bfa540cfa592e366928092a69293b69293ba003032c02052c2afa4b0c293ba003032e02052e2afa460c32372a69270942000000000000|@9107,1,@14055,@7709,@7663,@17823,@9108,@9106| 17823:D3,8|fb033e2a36694200|@7700,1,@14056| 17824:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14057,@9108| 17825:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14058,@9106| 17826:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14059,@9109| 17827:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14060,@9086| 17828:D136,1392|fb2c2b363ca203061a7d05f75a052b3529353ba0f8b4012c3529362a372b3830363cab293ba203061a6505f77801293cab2d2a691a6105352a2a0c642c3ca203061a5c05f746012c3cab293ba203051a560502e72e362a3cab2a2a691a5105352a2a0c642d3ca203051a4c0502b432382e3cab2a2a691a3705352a2a0c64313da203051a3a050281220d35323cab2a2a691a3405352a2a0c64220c3ea203051a2e05024c221137220d3cab2a2a691aff04352a2a0c6422153922113cab2a2a691aed04352a2a0c64291a0c05691a10052a691a13052a691a16052a691a19052a69322a691a19052a691a1c052a69270f1a1d052a691a20052a692c2a691a20052a691a23052a6927091a24052a691a27052a692c2a691a27052a691a2a052a6927091a2b052a691a2e052a692c2a691a2e052a691a31052a6927091a32052a693b3c3b3b2d6805303cab332a691a2805351a2c05221136693b2a3e3c6b642a0c642a2a0c64291a1f05691a23052a691a26052a691a29052a691a2c052a69312a691a2c052a691a2f052a69270e1a30052a691a33052a692c2a691a33052a691a36052a6927081a37052a693b3c3b3b2d6805293b691a30052a691a33052a693b3c3b3b2d6805270bf79c032c363ca203061a2405f790032c3529353ca0f8c4012d3529362a372b3831363cab293ba203061a0c05f78801293cab2d2a691a0805351a0c053437693b2a3e3c6b642a0c642a2a0c642c3ca203061afc04f747012c3cab2f2a691ae004351af404220e37693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051ae00402e831362a3cab2a2a691a5b03352a2a0c642d3ca203051ace0402b5220c382e3cab2a2a691a4003352a2a0c64313da203051abb040281221035323cab2a2a691a3d03352a2a0c64220c3ea203051aa704024c221437220d3cab2a2a691a0803352a2a0c6422183922113cab2a2a691af602352a2a0c64291a8504691a89042a691a8c042a691a8f042a691a92042a69322a691a92042a691a95042a69270f1a96042a691a99042a692c2a691a99042a691a9c042a6927091a9d042a691aa0042a692c2a691aa0042a691aa3042a6927091aa4042a691aa7042a692c2a691aa7042a691aaa042a6927091aab042a693b3c3b3b2d6805291aa604691aaa042a691aad042a691ab0042a691ab3042a69322a691ab3042a691ab6042a69270e1ab7042a691aba042a692c2a691aba042a691abd042a6927081abe042a693b3c3b3b2d6805293b691ab7042a691aba042a693b3c3b3b2d6805270bf7c2012d363ca203061aab04f7b6012d3529362a372b3831363cab293ba203061a9c04f77d01293cab2c2a691a3803351a94043438693b2a3d3c6b642a0c642a2a0c642c3ca203061a8404f73c012c3cab293ba203051a7e0402e730362a3cab2a2a691aa901352a2a0c642d3ca203051a6c0402b434382e3cab2a2a691a8f01352a2a0c64313da203051a5a040281220f35323cab2a2a691a8c01352a2a0c64220c3ea203051a4604024c221337220d3cab2a2a691a5701352a2a0c6422173922113cab2a2a691a4501352a2a0c64291a2404691a28042a691a2b042a691a2e042a691a31042a69322a691a31042a691a34042a69270f1a35042a691a38042a692c2a691a38042a691a3b042a6927091a3c042a691a3f042a692c2a691a3f042a691a42042a6927091a43042a691a46042a692c2a691a46042a691a49042a6927091a4a042a693b3c3b3b2d6805303cab322a691a8001351a3c042a0c642a2a0c64291a3904691a3d042a691a40042a691a43042a691a46042a69312a691a46042a691a49042a69270e1a4a042a691a4d042a692c2a691a4d042a691a50042a6927081a51042a693b3c3b3b2d6805293b691a4a042a691a4d042a693b3c3b3b2d6805270b64644200000000000000|@9112,1,@14061,@2535,@4429,@157,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@116,@17829,@5552,@1323,@8540,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@8157,@5559,@1323,@9114,@2535,@4429,@118,@17831,@4429,@17832,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8605,@1323,@5556,@1323,@8261,@1323,@5556,@1323,@6484,@5559,@1323,@9121,@2535,@4429,@17833,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@9133,@5552,@1323,@9137,@1323,@5556,@1323,@8605,@1323,@5556,@1323,@9139,@5559,@1323,@9111| 17829:D5,24|fb07fa2c35fa312b36693b2a3e3c6b642a0c642c2a2d7d04|@1312,1,@14062,@118,@17830| 17830:D3,16|fb052936352c2a2d7d04000000000000|@9113,1,@14063| 17831:D3,16|fb052936352c2a2d7d04000000000000|@9112,1,@14064| 17832:D3,16|fb052936352c2a2d7d04000000000000|@9112,1,@14065| 17833:D85,824|fb2d2b363ba203061a4503f718032b35392c363cab2a2a691a3d03352a2a0c642f363ca203061a3703f7e1022f353530363cab293ba203051a2d0302e62a362a3cab2a2a691a2803352a2a0c642d3ca203051a230302b32e382e3cab2a2a691a0e03352a2a0c64313da203051a110302803235323cab2a2a691a0c03352a2a0c64220c3ea203051a0603024c220d37220d3cab2a2a691ad702352a2a0c6422113922113cab2a2a691ac502352a2a0c64291ae402691ae8022a691aeb022a691aee022a691af1022a69322a691af1022a691af4022a69270f1af5022a691af8022a692c2a691af8022a691afb022a6927091afc022a691aff022a692c2a691aff022a691a02032a6927091a03032a691a06032a692c2a691a06032a691a09032a6927091a0a032a693b3c3b3b2d680534363da203061a0003f7b901343536220c363cab2a2a691a3f02352a2a0c64220f363ea203061ae802f78001220f353a2210363cab293ba203051adc0202e62a362a3cab2a2a691af701352a2a0c642d3ca203051aca0202b32e382e3cab2a2a691add01352a2a0c64313da203051ab80202803235323cab2a2a691adb01352a2a0c64220c3ea203051aa502024c220d37220d3cab2a2a691aa601352a2a0c6422113922113cab2a2a691a9401352a2a0c64291a8302691a87022a691a8a022a691a8d022a691a90022a69322a691a90022a691a93022a69270f1a94022a691a97022a692c2a691a97022a691a9a022a6927091a9b022a691a9e022a692c2a691a9e022a691aa1022a6927091aa2022a691aa5022a692c2a691aa5022a691aa8022a6927091aa9022a693b3c3b3b2d68052214363fa203051a9e020256221435382215363cab2a2a691a9502351a99022a0c642a2a0c64221835372219363cab2a2a69221936352a2a0c64291a8202691a86022a691a89022a691a8c022a691a8f022a69322a691a8f022a691a92022a69270f1a93022a691a96022a692c2a691a96022a691a99022a69270a1a9a022a691a9d022a692c2a691a9d022a691aa0022a6927091aa1022a691aa4022a692c2a691aa4022a691aa7022a69270a1aa8022a691aab022a692c2a691aab022a691aae022a6927091aaf022a693b3c3b3b2d6805654200000000|@268,1,@14066,@4429,@115,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@116,@9126,@5552,@1323,@5912,@1323,@5556,@1323,@9130,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8605,@1323,@5556,@1323,@9125,@5559| 17834:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@14067,@9,@9128| 17835:D4,16|fb05fa24352c2a2d7d04000000000000|@8276,1,@14068,@160| 17836:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@14069,@118,@9135| 17837:D4,16|fb05fa24352c2a2d7d04000000000000|@5837,1,@14070,@111| 17838:D31,600|fb122b363ca203061a6502f744022b3529353ba003692c3529362a372f363cab293ba203051a50020230293cab2c2a691a4d02352a2a0c642c3cab2e2a691a4702352a2a0c64291a4602691a4a022a691a4d022a692f2a6927091a4b022a693b3c3b3b2d6805293b691a44022a691a47022a693b3c3b3b2d6805270af7d2012c363ca203061a3802f7c6012c3529353ca0038d2d3529362f363cab2a2a691a2702352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a0902a003033c020f291a0702a003033c0205291a0502a06402013b9102013b02013b03192a1afb01691aff012a691a02022a693b3e3c3b2d68056602012a64020129293b691af3012a691af6012a693b3c3b3b2d68052709f730012d363ca203061ae701f724012d3529353da0038c2e35293630363cab2a2a691ad601352a2a0c6429353ba0035a2939299291033329369291032a2935353ea0031f293536291a6801a003033c020f291a6601a003033c0205291a6401a06402013b9102013b02013b03192a1a5a01691a5e012a691a61012a693b3e3c3b2d68056602012a64020129293b691a72012a691a75012a693b3c3b3b2d68052709028f2e363ca203051a670102842e35293630363cab2a2a691a5f01352a2a0c6429353ba00354293929929103302936929103272935353ea0031c29353629fad2a003033c020d29fad1a003033c020429fad0a06402013b9102013b02013b03162afac769facc2a69fad02a693b3e3c3b2d68056602012a64020129293b691a01012a691a04012a693b3c3b3b2d68052709646464420000000000|@9113,1,@14071,@2535,@1318,@7,@179,@2625,@1323,@5556,@2627,@1323,@9158,@2535,@160,@594,@595,@596,@2624,@1500,@2627,@1323,@9165,@2535,@148,@1323,@9172,@2535,@156,@1323,@9148| 17839:D12,112|fb102b363ca20304fa7e025d2b352c363cab293ba20304fa77022f2a352a3cab2a2a69fa73352a2a0c642e362e3cab2a2a693236352a2a0c6429fa6469fa692a69fa6d2a69302a69270bfa6c2a693b3c3b3b2d6805293b69fa662a69fa6a2a693b3c3b3b2d6805270842000000000000|@9151,1,@14072,@2535,@1318,@7,@2625,@1323,@5556,@2627,@1323,@9150| 17840:D288,2992|fb392b363ca203061abd0bf79e0b2b3529353ba0f8cc032c3529362e363cab293ba203061aa90bf794032a352a3cab2a2a693037352a2a0c642d3ca203061a970bf761032e372e3cab2a2a691a910b351a950b2a0c642a2a0c64313da203061a8e0bf72703323a323cab293ba203051a860b02e62a362a3cab2a2a691a810b352a2a0c642d3ca203051a7c0b02b32e382e3cab2a2a691a670b352a2a0c64313da203051a6a0b02803235323cab2a2a691a650b352a2a0c64220c3ea203051a5f0b024c220d37220d3cab2a2a691a300b352a2a0c6422113922113cab2a2a691a1e0b352a2a0c64291a3d0b691a410b2a691a440b2a691a470b2a691a4a0b2a69322a691a4a0b2a691a4d0b2a69270f1a4e0b2a691a510b2a692c2a691a510b2a691a540b2a6927091a550b2a691a580b2a692c2a691a580b2a691a5b0b2a6927091a5c0b2a691a5f0b2a692c2a691a5f0b2a691a620b2a6927091a630b2a693b3c3b3b2d6805220d3ea203061a590bf70102220e2307220e3cab2a2a691a600a351a4c0b221636693b2a3e3c6b642a0c642a2a0c6422113fa203061a3a0bf7b90122123622123cab2a2a691a6a0a352a2a0c6422152805a203061a230bf781012216230622163cab293ba203051a180b02e62a362a3cab2a2a691a230a352a2a0c642d3ca203051a060b02b32e382e3cab2a2a691a090a352a2a0c64313da203051af40a02803235323cab2a2a691a070a352a2a0c64220c3ea203051ae10a024c220d37220d3cab2a2a691ad209352a2a0c6422113922113cab2a2a691ac009352a2a0c64291abf0a691ac30a2a691ac60a2a691ac90a2a691acc0a2a69322a691acc0a2a691acf0a2a69270f1ad00a2a691ad30a2a692c2a691ad30a2a691ad60a2a6927091ad70a2a691ada0a2a692c2a691ada0a2a691add0a2a6927091ade0a2a691ae10a2a692c2a691ae10a2a691ae40a2a6927091ae50a2a693b3c3b3b2d6805221a2806a203051ada0a0258221b38221b3cab2a2a691a0309351acf0a2a0c642a2a0c64221f39221f3cab2a2a691aeb08351abf0a2a0c642a2a0c64291abc0a691ac00a2a691ac30a2a691ac60a2a691ac90a2a69322a691ac90a2a691acc0a2a69270f1acd0a2a691ad00a2a692c2a691ad00a2a691ad30a2a69270a1ad40a2a691ad70a2a692c2a691ad70a2a691ada0a2a6927091adb0a2a691ade0a2a692c2a691ade0a2a691ae10a2a6927091ae20a2a691ae50a2a692c2a691ae50a2a691ae80a2a69270a1ae90a2a691aec0a2a692c2a691aec0a2a691aef0a2a6927091af00a2a691af30a2a692c2a691af30a2a691af60a2a6927091af70a2a693b3c3b3b2d6805293b691af00a2a691af30a2a693b3c3b3b2d68052709f7c8072c363ca203061ae40af7bc072c3529353ca0f8b4012d3529362a372b3831363cab293ba203061acc0af77801293cab2d2a693237352a2a0c642c3ca203061abc0af747012c3cab2f2a691ab80a351abc0a220e38693b2a3e3c6b642a0c642a2a0c642f3cab293ba203051aa80a02e831362a3cab2a2a691aa307352a2a0c642d3ca203051a960a02b5220c382e3cab2a2a691a8807352a2a0c64313da203051a830a0281221035323cab2a2a691a8507352a2a0c64220c3ea203051a6f0a024c221437220d3cab2a2a691a5007352a2a0c6422183922113cab2a2a691a3e07352a2a0c64291a4d0a691a510a2a691a540a2a691a570a2a691a5a0a2a69322a691a5a0a2a691a5d0a2a69270f1a5e0a2a691a610a2a692c2a691a610a2a691a640a2a6927091a650a2a691a680a2a692c2a691a680a2a691a6b0a2a6927091a6c0a2a691a6f0a2a692c2a691a6f0a2a691a720a2a6927091a730a2a693b3c3b3b2d6805291a6e0a691a720a2a691a750a2a691a780a2a691a7b0a2a69322a691a7b0a2a691a7e0a2a69270e1a7f0a2a691a820a2a692c2a691a820a2a691a850a2a6927081a860a2a693b3c3b3b2d6805293b691a7f0a2a691a820a2a693b3c3b3b2d6805270bf7fe052d363ca203061a730af7f2052d3529353da0f85f022e35293630363cab293ba203061a5f0af727022a362a3cab2a2a691a590a352a2a0c642d3ca203061a540af7f3012e3a2e3cab2a2a691ae605351a4a0a220f36693b2a3e3c6b642a0c642a2a0c64313da203061a390af7af013237323cab2a2a691a330a352a2a0c64220c3ea203061a2d0af77a01220d39220d3cab2a2a691a9d05351a210a2a0c642a2a0c6422103fa203061a190af73d0122113822113cab293ba203051a0f0a02e62a362a3cab2a2a691a8a05352a2a0c642d3ca203051afd0902b32e382e3cab2a2a691a7005352a2a0c64313da203051aeb0902803235323cab2a2a691a6e05352a2a0c64220c3ea203051ad809024c220d37220d3cab2a2a691a3905352a2a0c6422113922113cab2a2a691a2705352a2a0c64291ab609691aba092a691abd092a691ac0092a691ac3092a69322a691ac3092a691ac6092a69270f1ac7092a691aca092a692c2a691aca092a691acd092a6927091ace092a691ad1092a692c2a691ad1092a691ad4092a6927091ad5092a691ad8092a692c2a691ad8092a691adb092a6927091adc092a693b3c3b3b2d680522163522163cab2a2a69221e37352a2a0c64291ac509691ac9092a691acc092a691acf092a691ad2092a69322a691ad2092a691ad5092a6927101ad6092a691ad9092a692c2a691ad9092a691adc092a6927091add092a691ae0092a692c2a691ae0092a691ae3092a6927091ae4092a691ae7092a692c2a691ae7092a691aea092a6927091aeb092a691aee092a692c2a691aee092a691af1092a6927091af2092a693b3c3b3b2d6805293b691aeb092a691aee092a693b3c3b3b2d68052709f789032e363ca203061adf09f77d032e3529353ea0f8c4012f3529362a372b3833363cab293ba203061ac709f78801293cab2d2a691a9306351abf09220d38693b2a3e3c6b642a0c642a2a0c642c3ca203061aae09f746012c3cab293ba203051aa80902e72f362a3cab2a2a691a7303352a2a0c642d3ca203051a960902b433382e3cab2a2a691a5903352a2a0c64313da203051a84090281220e35323cab2a2a691a5603352a2a0c64220c3ea203051a7009024c221237220d3cab2a2a691a2103352a2a0c6422163922113cab2a2a691a0f03352a2a0c64291a4e09691a52092a691a55092a691a58092a691a5b092a69322a691a5b092a691a5e092a69270f1a5f092a691a62092a692c2a691a62092a691a65092a6927091a66092a691a69092a692c2a691a69092a691a6c092a6927091a6d092a691a70092a692c2a691a70092a691a73092a6927091a74092a693b3c3b3b2d6805303cab322a691a6202351a6609221436693b2a3e3c6b642a0c642a2a0c64291a5909691a5d092a691a60092a691a63092a691a66092a69312a691a66092a691a69092a69270e1a6a092a691a6d092a692c2a691a6d092a691a70092a6927081a71092a693b3c3b3b2d6805293b691a6a092a691a6d092a693b3c3b3b2d6805270bf7af012f363ca203061a5e09f7a3012f3529362a372b3833363cab293ba203061a4f09f76a01293cab293ba203051a490902e62b362a3cab2a2a691acc01352a2a0c642d3ca203051a370902b32f382e3cab2a2a691ab201352a2a0c64313da203051a250902803335323cab2a2a691ab001352a2a0c64220c3ea203051a1209024c220e37220d3cab2a2a691a7b01352a2a0c6422123922113cab2a2a691a6901352a2a0c64291af008691af4082a691af7082a691afa082a691afd082a69322a691afd082a691a00092a69270f1a01092a691a04092a692c2a691a04092a691a07092a6927091a08092a691a0b092a692c2a691a0b092a691a0e092a6927091a0f092a691a12092a692c2a691a12092a691a15092a6927091a16092a693b3c3b3b2d68052d3ca203051a0d0902482d3cab312a69faeb352a2a0c64303cab332a69faa6351afa082a0c642a2a0c64291af708691afb082a691afe082a691a01092a691a04092a69312a691a04092a691a07092a69270d1a08092a691a0b092a692c2a691a0b092a691a0e092a6927091a0f092a693b3c3b3b2d6805293b691a08092a691a0b092a693b3c3b3b2d6805270b6464646442000000|@9187,1,@14073,@2535,@4429,@4429,@116,@9188,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@17843,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@9196,@9200,@5552,@1323,@9130,@1323,@5556,@1323,@9213,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@9215,@1323,@5556,@1323,@8490,@1323,@5556,@1323,@9217,@1323,@5556,@1323,@5953,@5559,@1323,@9219,@2535,@4429,@4429,@118,@17851,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@8605,@1323,@5556,@1323,@8261,@1323,@5556,@1323,@6484,@5559,@1323,@9226,@2535,@4429,@184,@4429,@17862,@4429,@115,@4429,@9319,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@9323,@1323,@5556,@1323,@9325,@1323,@5556,@1323,@9327,@1323,@5556,@1323,@9329,@1323,@5556,@1323,@9331,@1323,@5556,@1323,@9333,@5559,@1323,@9335,@2535,@4429,@17866,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@17867,@5552,@1323,@9342,@1323,@5556,@1323,@5838,@1323,@5556,@1323,@9344,@5559,@1323,@9346,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@9353,@5552,@1323,@9130,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5838,@5559,@1323,@9186| 17841:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@14074,@118,@9190| 17842:D13,96|fb122b363ba20304fa6e02432b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a69fa57352a2a0c6429fa5769fa5c2a69fa602a69fa642a69fa682a69322a69fa692a69fa6d2a69270ffa6f2a693b3c3b3b2d6805654200000000|@268,1,@14075,@4429,@111,@5552,@1323,@9193,@1323,@5556,@1323,@9192,@5559| 17843:D5,24|fb07fa2c35fa312b36693b2a3d3d6b642a0c642c2a2d7d04|@1312,1,@14076,@118,@17844| 17844:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a69fa58352a2a0c642f353630363cab2a2a693036352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@14077,@1318,@75,@2625,@1323,@5556,@2627| 17845:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@14078,@118,@9198| 17846:D13,96|fb122b363ba20304fa6e02432b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a69fa57352a2a0c6429fa5769fa5c2a69fa602a69fa642a69fa682a69322a69fa692a69fa6d2a69270ffa6f2a693b3c3b3b2d6805654200000000|@268,1,@14079,@4429,@111,@5552,@1323,@9193,@1323,@5556,@1323,@9192,@5559| 17847:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@14080,@9,@9202| 17848:D4,16|fb05fa24352c2a2d7d04000000000000|@9204,1,@14081,@182| 17849:D33,312|fb202b363ca203061a4501f722012b352c363cab293ba203051a3c0102f02a372a3cab2a2a692e39352a2a0c642d3ca203051a2b0102be2e352e3cab2a2a693238352a2a0c64313da203051a1a01028c3239323cab2a2a691a1501351a1901220f37693b2a3e3c6b642a0c642a2a0c64220c3ea203051a07010248220d36220d3cab2a2a691a0001352a2a0c6422113822113cab2a2a69221536352a2a0c6429faee69faf32a69faf72a69fafb2a691afe002a69322a691afe002a691a01012a69270f1a02012a691a05012a692c2a691a05012a691a08012a6927091a09012a691a0c012a692c2a691a0c012a691a0f012a6927091a10012a691a13012a692c2a691a13012a691a16012a6927091a17012a693b3c3b3b2d6805293b691a10012a691a13012a693b3c3b3b2d680527084200000000000000|@9204,1,@14082,@2535,@4429,@4429,@4429,@118,@17850,@4429,@7,@5552,@1323,@5951,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@5986,@1323,@5556,@1323,@5953,@1323,@5556,@1323,@5844,@5559,@1323,@9206| 17850:D3,16|fb052936352c2a2d7d04000000000000|@5985,1,@14083| 17851:D3,16|fb052936352c2a2d7d04000000000000|@9112,1,@14084| 17852:D129,1352|fb292b363ca203061a5505f734052b3529353ba0f86b012c3529362a372f363cab293ba203061a3f05f73101293cab2c2a691a3b05351a3f053236693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a2c0502e72e362a3cab2a2a691a2705352a2a0c642d3ca203051a220502b432382e3cab2a2a691a0d05352a2a0c64313da203051a10050281220d35323cab2a2a691a0a05352a2a0c64220c3ea203051a0405024c221137220d3cab2a2a691ad504352a2a0c6422153922113cab2a2a691ac304352a2a0c64291ae204691ae6042a691ae9042a691aec042a691aef042a69322a691aef042a691af2042a69270f1af3042a691af6042a692c2a691af6042a691af9042a6927091afa042a691afd042a692c2a691afd042a691a00052a6927091a01052a691a04052a692c2a691a04052a691a07052a6927091a08052a693b3c3b3b2d6805291a0305691a07052a691a0a052a69302a69270a1a08052a693b3c3b3b2d6805293b691a01052a691a04052a693b3c3b3b2d6805270af7bf032c363ca203061af504f7b3032c3529353ca0f88c012d3529362a372b3831363cab293ba203061add04f75001293cab2d2a691ae903352a2a0c642c3ca203061acc04f728012c3cab293ba203051ac60402e72f362a3cab2a2a691aa903352a2a0c642d3ca203051ab40402b433382e3cab2a2a691a8f03352a2a0c64313da203051aa2040281220e35323cab2a2a691a8c03352a2a0c64220c3ea203051a8e04024c221237220d3cab2a2a691a5703352a2a0c6422163922113cab2a2a691a4503352a2a0c64291a6c04691a70042a691a73042a691a76042a691a79042a69322a691a79042a691a7c042a69270f1a7d042a691a80042a692c2a691a80042a691a83042a6927091a84042a691a87042a692c2a691a87042a691a8a042a6927091a8b042a691a8e042a692c2a691a8e042a691a91042a6927091a92042a693b3c3b3b2d6805303cab322a691a8804351a8c042a0c642a2a0c64291a8904691a8d042a691a90042a692f2a69270a1a8e042a691a91042a692c2a6927061a8f042a693b3c3b3b2d6805293b691a88042a691a8b042a693b3c3b3b2d6805270bf71d022d363ca203061a7c04f711022d3529362f363cab293ba203061a7104f7dc012a352a3cab293ba203051a690402e62a362a3cab2a2a691a2c02352a2a0c642d3ca203051a570402b32e382e3cab2a2a691a1202352a2a0c64313da203051a450402803235323cab2a2a691a1002352a2a0c64220c3ea203051a3204024c220d37220d3cab2a2a691adb01352a2a0c6422113922113cab2a2a691ac901352a2a0c64291a1004691a14042a691a17042a691a1a042a691a1d042a69322a691a1d042a691a20042a69270f1a21042a691a24042a692c2a691a24042a691a27042a6927091a28042a691a2b042a692c2a691a2b042a691a2e042a6927091a2f042a691a32042a692c2a691a32042a691a35042a6927091a36042a693b3c3b3b2d68052e3ca203051a2d0402b82f392f3cab2a2a691a2804352a2a0c64323da203051a230402853336333cab2a2a69221137352a2a0c64220d3ea203051a10040251220e37220e3cab2a2a691a1101352a2a0c6422123822123cab2a2a69fad0351af4032a0c642a2a0c64291af103691af5032a691af8032a691afb032a691afe032a69322a691afe032a691a01042a69270f1a02042a691a05042a692c2a691a05042a691a08042a6927091a09042a691a0c042a692c2a691a0c042a691a0f042a6927091a10042a691a13042a692c2a691a13042a691a16042a69270a1a17042a693b3c3b3b2d6805293b691a10042a691a13042a693b3c3b3b2d680527096464420000000000|@9235,1,@14085,@2535,@1318,@118,@17853,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@9237,@2535,@1318,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@116,@9244,@2625,@1323,@5556,@1323,@5556,@2627,@1323,@9248,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@152,@4429,@4429,@9255,@5552,@1323,@6025,@1323,@5556,@1323,@9257,@1323,@5556,@1323,@9259,@1323,@5556,@1323,@9261,@1323,@5556,@1323,@8605,@5559,@1323,@9234| 17853:D3,16|fb052936352c2a2d7d04000000000000|@9236,1,@14086| 17854:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@14087,@118,@9246| 17855:D4,16|fb05fa24352c2a2d7d04000000000000|@5985,1,@14088,@186| 17856:D4,16|fb05fa24352c2a2d7d04000000000000|@8485,1,@14089,@109| 17857:D295,3104|fb332b363ca203061a2d0cf70c0c2b3529353ba0f870012c3529362a372f363cab293ba203061a170cf73601293cab2c2a691a130c352a2a0c642c3cab293ba203051a0b0c02e72e362a3cab2a2a691a060c352a2a0c642d3ca203051a010c02b432382e3cab2a2a691aec0b352a2a0c64313da203051aef0b0281220d35323cab2a2a691ae90b352a2a0c64220c3ea203051ae30b024c221137220d3cab2a2a691ab40b352a2a0c6422153922113cab2a2a691aa20b352a2a0c64291ac10b691ac50b2a691ac80b2a691acb0b2a691ace0b2a69322a691ace0b2a691ad10b2a69270f1ad20b2a691ad50b2a692c2a691ad50b2a691ad80b2a6927091ad90b2a691adc0b2a692c2a691adc0b2a691adf0b2a6927091ae00b2a691ae30b2a692c2a691ae30b2a691ae60b2a6927091ae70b2a693b3c3b3b2d6805291ae20b691ae60b2a691ae90b2a691aec0b2a691aef0b2a69322a691aef0b2a691af20b2a69270e1af30b2a693b3c3b3b2d6805293b691aec0b2a691aef0b2a693b3c3b3b2d6805270af7920a2c363ca203061ae00bf7860a2c3529353ca0f8db022d3529362a372b3831363cab293ba203061ac80bf79f02293cab293ba203051ac20b02e72d362a3cab2a2a691a8d0a352a2a0c642d3ca203051ab00b02b431382e3cab2a2a691a730a352a2a0c64313da203051a9e0b0281220c35323cab2a2a691a700a352a2a0c64220c3ea203051a8a0b024c221037220d3cab2a2a691a3b0a352a2a0c6422143922113cab2a2a691a290a352a2a0c64291a680b691a6c0b2a691a6f0b2a691a720b2a691a750b2a69322a691a750b2a691a780b2a69270f1a790b2a691a7c0b2a692c2a691a7c0b2a691a7f0b2a6927091a800b2a691a830b2a692c2a691a830b2a691a860b2a6927091a870b2a691a8a0b2a692c2a691a8a0b2a691a8d0b2a6927091a8e0b2a693b3c3b3b2d68052d3ca203061a850bf77b012d3cab293ba203061a7f0bf7250130352a3cab2a2a691a9909352a2a0c6434362e3cab293ba203051a670b02e62a362a3cab2a2a691a6209352a2a0c642d3ca203051a550b02b32e382e3cab2a2a691a4809352a2a0c64313da203051a430b02803235323cab2a2a691a4609352a2a0c64220c3ea203051a300b024c220d37220d3cab2a2a691a1109352a2a0c6422113922113cab2a2a691aff08352a2a0c64291a0e0b691a120b2a691a150b2a691a180b2a691a1b0b2a69322a691a1b0b2a691a1e0b2a69270f1a1f0b2a691a220b2a692c2a691a220b2a691a250b2a6927091a260b2a691a290b2a692c2a691a290b2a691a2c0b2a6927091a2d0b2a691a300b2a692c2a691a300b2a691a330b2a6927091a340b2a693b3c3b3b2d6805291a2f0b691a330b2a691a360b2a69312a69270c1a340b2a693b3c3b3b2d6805313cab332a691a2a0b351a2e0b2a0c642a2a0c64291a2b0b691a2f0b2a691a320b2a691a350b2a691a380b2a69312a691a380b2a691a3b0b2a69270e1a3c0b2a691a3f0b2a692c2a691a3f0b2a691a420b2a6927091a430b2a693b3c3b3b2d6805293b691a3c0b2a691a3f0b2a693b3c3b3b2d6805270bf7a1072d363ca203061a300bf795072d3529353da0f86b012e3529362a3731363cab293ba203061a1a0bf73101293cab2c2a691a160b351a1a0b3436693b2a3e3c6b642a0c642a2a0c642c3cab293ba203051a070b02e72e362a3cab2a2a691a8207352a2a0c642d3ca203051af50a02b432382e3cab2a2a691a6807352a2a0c64313da203051ae30a0281220d35323cab2a2a691a6507352a2a0c64220c3ea203051acf0a024c221137220d3cab2a2a691a3007352a2a0c6422153922113cab2a2a691a1e07352a2a0c64291aad0a691ab10a2a691ab40a2a691ab70a2a691aba0a2a69322a691aba0a2a691abd0a2a69270f1abe0a2a691ac10a2a692c2a691ac10a2a691ac40a2a6927091ac50a2a691ac80a2a692c2a691ac80a2a691acb0a2a6927091acc0a2a691acf0a2a692c2a691acf0a2a691ad20a2a6927091ad30a2a693b3c3b3b2d6805291ace0a691ad20a2a691ad50a2a69302a69270a1ad30a2a693b3c3b3b2d6805293b691acc0a2a691acf0a2a693b3c3b3b2d6805270af720062e363ca203061ac00af714062e3529353ea0f8aa012f3529362a372b3833363cab293ba203061aa80af76e01293cab2c2a691aa40a352a2a0c642c3ca203061a9f0af73c012c3cab293ba203051a990a02e730362a3cab2a2a691a0406352a2a0c642d3ca203051a870a02b434382e3cab2a2a691aea05352a2a0c64313da203051a750a0281220f35323cab2a2a691ae705352a2a0c64220c3ea203051a610a024c221337220d3cab2a2a691ab205352a2a0c6422173922113cab2a2a691aa005352a2a0c64291a3f0a691a430a2a691a460a2a691a490a2a691a4c0a2a69322a691a4c0a2a691a4f0a2a69270f1a500a2a691a530a2a692c2a691a530a2a691a560a2a6927091a570a2a691a5a0a2a692c2a691a5a0a2a691a5d0a2a6927091a5e0a2a691a610a2a692c2a691a610a2a691a640a2a6927091a650a2a693b3c3b3b2d6805303cab322a691a7b08351a570a2a0c642a2a0c64291a540a691a580a2a691a5b0a2a691a5e0a2a691a610a2a69312a691a610a2a691a640a2a69270e1a650a2a691a680a2a692c2a691a680a2a691a6b0a2a6927081a6c0a2a693b3c3b3b2d6805293b691a650a2a691a680a2a693b3c3b3b2d6805270bf760042f363ca203061a590af754042f3529353fa0f86c01303529362a3733363cab293ba203061a430af73201293cab2c2a691ad707351a3b0a220d36693b2a3d3f6b642a0c642a2a0c642c3cab293ba203051a270a02e72e362a3cab2a2a691a4204352a2a0c642d3ca203051a150a02b432382e3cab2a2a691a2804352a2a0c64313da203051a030a0281220d35323cab2a2a691a2504352a2a0c64220c3ea203051aef09024c221137220d3cab2a2a691af003352a2a0c6422153922113cab2a2a691ade03352a2a0c64291acd09691ad1092a691ad4092a691ad7092a691ada092a69322a691ada092a691add092a69270f1ade092a691ae1092a692c2a691ae1092a691ae4092a6927091ae5092a691ae8092a692c2a691ae8092a691aeb092a6927091aec092a691aef092a692c2a691aef092a691af2092a6927091af3092a693b3c3b3b2d6805291aee09691af2092a691af5092a69302a69270a1af3092a693b3c3b3b2d6805293b691aec092a691aef092a693b3c3b3b2d6805270af7de0230363ca203061ae009f7d202303529362a372b3834363cab293ba203061ad109f79902293cab293ba203051acb0902e72d362a3cab2a2a691ae602352a2a0c642d3ca203051ab90902b431382e3cab2a2a691acc02352a2a0c64313da203051aa7090281220c35323cab2a2a691ac902352a2a0c64220c3ea203051a9309024c221037220d3cab2a2a691a9402352a2a0c6422143922113cab2a2a691a8202352a2a0c64291a7109691a75092a691a78092a691a7b092a691a7e092a69322a691a7e092a691a81092a69270f1a82092a691a85092a692c2a691a85092a691a88092a6927091a89092a691a8c092a692c2a691a8c092a691a8f092a6927091a90092a691a93092a692c2a691a93092a691a96092a6927091a97092a693b3c3b3b2d68052d3ca203061a8e09f775012d3cab293ba203061a8809f7250130352a3cab2a2a691af201352a2a0c6434362e3cab293ba203051a700902e62a362a3cab2a2a691abb01352a2a0c642d3ca203051a5e0902b32e382e3cab2a2a691aa101352a2a0c64313da203051a4c0902803235323cab2a2a691a9f01352a2a0c64220c3ea203051a3909024c220d37220d3cab2a2a691a6a01352a2a0c6422113922113cab2a2a691a5801352a2a0c64291a1709691a1b092a691a1e092a691a21092a691a24092a69322a691a24092a691a27092a69270f1a28092a691a2b092a692c2a691a2b092a691a2e092a6927091a2f092a691a32092a692c2a691a32092a691a35092a6927091a36092a691a39092a692c2a691a39092a691a3c092a6927091a3d092a693b3c3b3b2d6805291a3809691a3c092a691a3f092a69312a69270c1a3d092a693b3c3b3b2d6805313cab332a691a3309352a2a0c64291a3209691a36092a691a39092a691a3c092a691a3f092a69312a691a3f092a691a42092a69270e1a43092a691a46092a692c2a691a46092a691a49092a6927091a4a092a693b3c3b3b2d6805293b691a43092a691a46092a693b3c3b3b2d6805270b6464646464420000000000|@9236,1,@14090,@2535,@4429,@157,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@5552,@1323,@5838,@1323,@5556,@1323,@8157,@5559,@1323,@9271,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@9,@9275,@5552,@1323,@5962,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8605,@5559,@1323,@9277,@2535,@1318,@118,@17859,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@9284,@2535,@4429,@115,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@9291,@5552,@1323,@9293,@1323,@5556,@1323,@8605,@1323,@5556,@1323,@9295,@5559,@1323,@9297,@2535,@1318,@17861,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@1323,@9306,@2535,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@1318,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627,@152,@5552,@1323,@5962,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8605,@5559,@1323,@9270| 17858:D4,16|fb05fa24352c2a2d7d04000000000000|@7803,1,@14091,@152| 17859:D3,16|fb052936352c2a2d7d04000000000000|@9235,1,@14092| 17860:D34,320|fb242b363ba203061a4d01f722012b35352c363cab2a2a691a4501352a2a0c642f353630363cab293ba203051a390102df2a362a3cab2a2a691a3401352a2a0c642d3ca203051a2f0102ac2e382e3cab2a2a691a1a01352a2a0c64313da203051a1d0102793235323cab2a2a69faf1352a2a0c64220c3ea203051a0b010246220d37220d3cab2a2a69fae5352a2a0c6422113922113cab2a2a69fad4352a2a0c6429faec69faf12a69faf52a69faf92a691afc002a69322a691afc002a691aff002a69270f1a00012a691a03012a692c2a691a03012a691a06012a6927091a07012a691a0a012a692c2a691a0a012a691a0d012a6927091a0e012a691a11012a692c2a691a11012a691a14012a6927091a15012a693b3c3b3b2d6805291a1001691a14012a691a17012a69312a69270c1a15012a693b3c3b3b2d680565420000|@268,1,@14093,@1318,@7,@4429,@75,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@2627| 17861:D105,1048|fb382b363ba203061a2504f7fa032b35352c363cab293ba203051a1b0402e62a362a3cab2a2a691a1604352a2a0c642d3ca203051a110402b32e382e3cab2a2a691afc03352a2a0c64313da203051aff0302803235323cab2a2a691afa03352a2a0c64220c3ea203051af403024c220d37220d3cab2a2a691ac503352a2a0c6422113922113cab2a2a691ab303352a2a0c64291ad203691ad6032a691ad9032a691adc032a691adf032a69322a691adf032a691ae2032a69270f1ae3032a691ae6032a692c2a691ae6032a691ae9032a6927091aea032a691aed032a692c2a691aed032a691af0032a6927091af1032a691af4032a692c2a691af4032a691af7032a6927091af8032a693b3c3b3b2d680530363ca203061aee03f7d20230353631363cab2a2a691a2e03352a2a0c6434363da203061ad803f79b02343537220c363cab293ba203051acd0302e62a362a3cab2a2a691ae802352a2a0c642d3ca203051abb0302b32e382e3cab2a2a691ace02352a2a0c64313da203051aa90302803235323cab2a2a691acc02352a2a0c64220c3ea203051a9603024c220d37220d3cab2a2a691a9702352a2a0c6422113922113cab2a2a691a8502352a2a0c64291a7403691a78032a691a7b032a691a7e032a691a81032a69322a691a81032a691a84032a69270f1a85032a691a88032a692c2a691a88032a691a8b032a6927091a8c032a691a8f032a692c2a691a8f032a691a92032a6927091a93032a691a96032a692c2a691a96032a691a99032a6927091a9a032a693b3c3b3b2d6805221035382211363cab293ba203061a8803f74f012a352a3cab2a2a69221336352a2a0c642d3ca203061a7503f725012e362e3cab2a2a691a6f03352a2a0c643237323cab293ba203051a650302e62a362a3cab2a2a691aa801352a2a0c642d3ca203051a530302b32e382e3cab2a2a691a8e01352a2a0c64313da203051a410302803235323cab2a2a691a8c01352a2a0c64220c3ea203051a2e03024c220d37220d3cab2a2a691a5701352a2a0c6422113922113cab2a2a691a4501352a2a0c64291a0c03691a10032a691a13032a691a16032a691a19032a69322a691a19032a691a1c032a69270f1a1d032a691a20032a692c2a691a20032a691a23032a6927091a24032a691a27032a692c2a691a27032a691a2a032a6927091a2b032a691a2e032a692c2a691a2e032a691a31032a6927091a32032a693b3c3b3b2d6805291a2d03691a31032a691a34032a69312a69270c1a32032a691a35032a692c2a6927071a33032a693b3c3b3b2d6805291a2e03691a32032a691a35032a691a38032a691a3b032a69332a691a3b032a691a3e032a6927111a3f032a691a42032a692c2a691a42032a691a45032a6927091a46032a691a49032a692c2a691a49032a691a4c032a69270a1a4d032a693b3c3b3b2d680565420000|@268,1,@14094,@4429,@4429,@75,@4429,@4429,@7,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@4429,@4429,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@1318,@1318,@115,@4429,@4429,@4429,@4429,@5552,@1323,@4434,@1323,@5556,@1323,@4436,@1323,@5556,@1323,@4438,@1323,@5556,@1323,@4440,@1323,@5556,@1323,@4442,@5559,@2625,@1323,@5556,@1323,@5556,@2627,@5552,@1323,@9304,@1323,@5556,@1323,@7813,@1323,@5556,@1323,@5554,@1323,@5556,@1323,@8605,@5559| 17862:D5,24|fb07fa2c35fa312b36693b2a3d3d6b642a0c642c2a2d7d04|@1312,1,@14095,@118,@17863| 17863:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a69fa58352a2a0c642f353630363cab2a2a693036352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@14096,@1318,@75,@2625,@1323,@5556,@2627| 17864:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1312,1,@14097,@118,@9321| 17865:D13,96|fb122b363ba20304fa6e02432b35352c363cab2a2a69fa68352a2a0c642f353630363cab2a2a69fa57352a2a0c6429fa5769fa5c2a69fa602a69fa642a69fa682a69322a69fa692a69fa6d2a69270ffa6f2a693b3c3b3b2d6805654200000000|@268,1,@14098,@4429,@111,@5552,@1323,@9193,@1323,@5556,@1323,@9192,@5559| 17866:D3,16|fb052936352c2a2d7d04000000000000|@9112,1,@14099| 17867:D5,24|fb07fa2c35fa312b36693b2a3d3d6b642a0c642c2a2d7d04|@1312,1,@14100,@118,@17868| 17868:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a69fa58352a2a0c642f353630363cab2a2a693036352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@14101,@1318,@75,@2625,@1323,@5556,@2627| 17869:D5,16|fb05fa2435fa292a0c642c2a2d7d0400|@1495,1,@14102,@9,@9355| 17870:D4,16|fb05fa24352c2a2d7d04000000000000|@8276,1,@14103,@160| 17871:D51,496|fb1a2b363ca203061afd01f7dd012b3529353ba0038c2c3529362a372f363cab293ba203051ae8010253293cab2c2a691ae501351ae9013236693b2a3d3d6b642a0c642a2a0c642c3cab2e2a691ad801352a2a0c64291ad701691adb012a691ade012a691ae1012a691ae4012a69312a691ae4012a691ae7012a69270d1ae8012a693b3c3b3b2d6805293b691ae1012a691ae4012a693b3c3b3b2d6805270af748012c363ca203061ad501f73c012c3529353ca0037c2d3529362a3730363cab293ba203051ac0010244293cab2c2a691abd01352a2a0c642c3cab2e2a691ab701352a2a0c64291ab601691aba012a691abd012a691ac0012a691ac3012a69312a691ac3012a691ac6012a69270d1ac7012a693b3c3b3b2d6805293b691ac0012a691ac3012a693b3c3b3b2d6805270a02b72d363ca203051ab50102ac2d3529362a372b3831363cab293ba203051aa7010274293cab2d2a693237352a2a0c642c3ca203051a980102442c3cab2e2a691a9501352a2a0c642f3cab322a691a8f01352a2a0c64291a8e01691a92012a691a95012a691a98012a691a9b012a69312a691a9b012a691a9e012a69270d1a9f012a691aa2012a692c2a691aa2012a691aa5012a6927081aa6012a693b3c3b3b2d6805293b691a9f012a691aa2012a693b3c3b3b2d6805270b64644200000000|@9365,1,@14104,@2535,@4429,@118,@17872,@160,@5552,@1323,@9366,@1323,@5556,@1323,@9368,@5559,@1323,@9370,@2535,@4429,@115,@75,@5552,@1323,@9377,@1323,@5556,@1323,@9379,@5559,@1323,@9381,@2535,@4429,@4429,@156,@155,@5552,@1323,@9388,@1323,@5556,@1323,@9390,@1323,@5556,@1323,@9392,@5559,@1323,@9364| 17872:D9,80|fb0e2b363ba20304fa5e02332b35352c363cab2a2a69fa58352a2a0c642f353630363cab2a2a693036352a2a0c6429fa4769fa4c2a69fa502a69302a69270bfa4f2a693b3c3b3b2d6805654200000000|@268,1,@14105,@1318,@75,@2625,@1323,@5556,@2627| 17873:D3,24|fb080b02002e352f362b2f360c5029352a362a2a69270542|@9400,1,@14106| 17874:D12,152|fb10faac2d6928092a692f3530363137faa60c2a2a69faa82e33336b31353ca003363136323733382c680132362a692d3ba003032c02052c2efa8d0c292bfa900c313ba003032902052932fa8b0c220f2f452a462708023a31353ba0030b3136332a33fa7b347b050b31363237fa793137692c68012a2a692c2afa540c303ba003032902052931fa670c220e30452a462707270544000000|@9402,1,@14107,@17875,@7663,@17876,@9405,@7719,@9406,@7112,@17879,@9401| 17875:D4,16|fb0529362cfa212d7e03000000000000|@9403,1,@14108,@5534| 17876:D3,24|fb080b02002c372d382b2f360c5029352a362a2a69270542|@9404,1,@14109| 17877:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14110,@9405| 17878:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14111,@9406| 17879:D4,32|fb090b02002e352f362b2f36fa2a0c5029352a362a2a69270542000000000000|@9408,1,@14112,@9407| 17880:D9,264|fb182d3829352f35303631373239333a0b02002d3ca003062e353da002013b031b2e3629352a362b372c382b2b2b6a296801302a452f465026070206293b452f465029352a36fad8fade2213221322126805349291034534352938293b2a929103352a352b362a353da0030b2a363e2a69292e696502122a353ba0030b2a363d2a69292e696502012b2a2a2505250526031e343b66020129656502013b280728403bdafa8b45280828403bdafa8a45280528403bdafa8945292b462e4730482c496c502a220e4634472d482e492c4a2a4b304c6c502b2214462f472e482a492b4a304b6c503f2b69221735221836221937fa550c2a2a6922172212452a4627141f04000000000000|@9409,1,@14113,@17882,@9407,@17883,@17884,@17881,@7663| 17881:D5,56|fb0e293968012a383ba00303fa42103b502a383529352c3768012d3668012d2b2b6a0b02002c302bfa2e0c5029352a362a2a69270b420000|@9415,1,@14120,@1921,@9035| 17882:D3,32|fb090b02002c372d382b2f3930360c5029352a362a2a69270542000000000000|@9410,1,@14114| 17883:D3,48|fb0c2923069291030429390202293a2a3868012a68013b2b2b6a0b02002c31372b33360c5029352a362a2a6927094200|@9411,1,@14115| 17884:D7,80|fb0c2923073ba00304293a02032923062a3968012a6801292b3bfa4c0cfa512e366928092a69293b69293ba003032c02052c2afa430c293ba003043138020631382afa3c0c32372a6927094200000000|@9413,1,@14116,@7663,@17885,@9414,@9412| 17885:D3,8|fb033e2a36694200|@7700,1,@14117| 17886:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14118,@9414| 17887:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14119,@9412| 17888:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14121,@9401| 17889:D11,264|fb142d3529299291034a29352a362a353ca003043b5002322a353ba003242a3629299291031629352a362a3629faf10c502a250426031e15260302023b50505002082a3629fae10c5050292503511e493b6502013b643b06fad62a690b0200fad7302b220d30fad80c502935303b2a929103242a352b362aface0c2c3ba00303290205292dfac90c2b2a2506250626041e223b270402012965293b2a929103152a352b362a2c692a2a2505250526031e143b660201296528142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa770c0201292d3ba00303290205280f2e2b6a33353435220c3b3b2ce322122d452c46271044000000|@9418,1,@14122,@9419,@9423,@17932,@9480,@9483,@10894,@9417,@1083| 17890:D6,72|fb062b353da0030a2b36293529fa512e7d052b353ca0030f2b362c372afa410c5029fa442e7d052b353ba0030a2b36293529fa2c2e7d052b353ea003082b3629fa2e2d7d043b4200|@9421,1,@14123,@9419,@9422,@9420| 17891:D5,24|fb072b9291030e2b352c3629fa220c2bfa262f7d063b4200|@2425,1,@14124,@9422,@9423| 17892:D7,72|fb072b353ca0030f2b362c372afa510c5029fa542e7d052b353ba003082b3629fa4e2d7d042b3729299291031429352a362a37fa430c50292503511e133b6502013b646442000000|@9425,1,@14125,@9426,@9427,@9424,@9419| 17893:D5,24|fb072b9291030e2b352c3629fa220c2bfa262f7d063b4200|@2425,1,@14126,@9426,@9423| 17894:D5,24|fb072b9291030e2b352c3629fa220c2bfa262f7d063b4200|@2425,1,@14127,@9427,@9423| 17895:D13,856|fb112b350a1f0042004d005e007100a000bb003e003e003e003e00c400e7000c01b4013e00e1013e0004023e0026023e00500261023e003e006a023e003e008a023a033e003bf707032b362935291a1f032e7d052b362c372a1a1c030c50291a16032e7d052b3629352a362a1a09030c50291a03032f7d062b3629352a362a1af6020c5029299291031729352a362a35291ae4020c502a250426031e163b6602013b6466f7a9022b3629352a362b372b1ac5020c50291abf020c502a1ab902307d072b37291ab0022d7d042b3629299291031529352a362a351a9c020c50292503511e143b6502013b6464f762022b3729299291031729352a362a35291a78020c502a250426031e163b6602013b6464f73d022b36291a67020c293b2a929103182a352b362a2c1a5e020c2a2a2505250526031e173b660201296529299291033a29352a362a352b3629352b352c3628062b2b6a2c1a38020c1a3c020c2a2a1a3e020c293ba09103041a3c02103b5031250b260a1e383b270a02013b642c299291033129352a362a3629299291031729352a362a36291adf010c502a250426031e16260302023b50502a250426031e303b6602013b642704f795012b362c372a1ab5010c5029299291031729352a362a35291aa3010c502a250426031e163b6602013b6465f768012b3829299291031529352a362a381a7f010c50292503511e143b6502013b6464f745012b3729299291031429352a362a1a5d010c50292503511e133b6502013b6464f723012b3629352a362a299291031429352a362a351a36010c50292503511e145102023b5050291a5c012f7d062b362c372a1a19010c50291a13012e7d052b36291a0a012d7d042b3629299291031329352a362afaf80c50292503511e123b6502013b646402bf2b36293b2a929103252a352b362a3829352d3ba00303290206292e1a09010c2c2a2507250726051e233b270502012965293b2a929103172a352b362a2cfab80c2a2a2505250526031e163b660201296529299291033629352a362a352b3629352b352c3628062b2b6a2cfa930cfa980c2a2afa9b0c293ba0910303fa9a103b5031250b260a1e343b270a02013b642c299291031629352a362a3629fa4a0c502a250426031e153b6602013b642704020f2b362c3729fa300c502afa2b2e7d054200000000000000|@9429,1,@14128,@9430,@9424,@9431,@9432,@9447,@9448,@7407,@9475,@9478,@9428| 17896:D5,32|fb082b929103102b352c3629fa2a0c2b3529fa2c307d073b4200000000000000|@2425,1,@14129,@9430,@9424| 17897:D4,32|fb082b929103132b352c362a3729352bfa260c2a2a69270502013b4200000000|@880,1,@14130,@9431| 17898:D11,80|fb112c382d2306293ba00303fa5a103b5029352935292dfa570c29fa5b0c0b020031fa5c2bfa610c50293629fa620c292f220ffa630c220e3ba0030329020929220ffa5c22107e10270c430000000000|@9434,1,@14131,@1921,@9435,@9438,@9442,@4254,@9444,@9445,@9433| 17899:D9,80|fb112c929103462c352d360b020030fa572bfa5c0c5029352a3629fa5b0c2b31fa5e0c293ba09103160b0200220efa582bfa3d0c50293629fa3e0c270402012a31220dfa4b0c2a2a69270b02013b4300|@880,1,@14132,@9437,@4254,@7157,@7407,@9436,@9435| 17900:D3,8|fb023b4200000000|@7170,1,@14133| 17901:D3,8|fb023b4200000000|@7170,1,@14134| 17902:D6,40|fb062b3ba003033b021a2b35293ba003033b020f2cfa290c2dfa2d0cfa320c2a2a69656442000000|@9440,1,@14135,@9441,@9439,@9438| 17903:D5,40|fb072b9291031d2b352c362a929103043b500203fa2a102a352afa2c0c2a2a69270402013b420000|@880,1,@14136,@2207,@9441| 17904:D5,40|fb072b9291031d2b352c362a929103043b500203fa2a102a362afa2c0c2a2a69270402013b420000|@880,1,@14137,@2360,@9439| 17905:D3,8|fb023b4200000000|@9443,1,@14138| 17906:D4,32|fb072b929103112b352c362a362afa280c2a2a69270402013b42000000000000|@880,1,@14139,@9444| 17907:D5,144|fb112d929103052c929102013b037c2d352e362e352f362f299291032029352a362a35293531352a2aa003052d680102082c250626051e1e3b270502013b640b02002c929103262c3529362935293ba00303310205312afa4f0c2b3b3b2ce3502c2e2a35452a364651260402092e062a32452a46505029352a362a2a693231220ffa2d0c2a2a69270c02013b44000000|@2132,1,@14140,@9446,@9445| 17908:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14141,@9446| 17909:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14142,@9433| 17910:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14143,@9447| 17911:D15,688|fb152b9291f8a1022b352c362a29352805a0034e29362a382938293629353da0033b2b38293629353da003043b5002041a9502103b5029362a372a311a91020c1a95022a690b02002e2d2b1a92020c5029352709250526041e4b3b02012d2704023729352806a0032f2936293529353fa003122b3b30360c293528053b2b2d3b680565021029353ca003032b0207292503511e853b650201296429353ea003b029362a370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603712f32362f1a16020c3b2a299291031229362b3caa292b25042504511e113b6502012a653b32299291031229362b3caa292b25042504511e113b6502012a652a2aa0031c301ade010c292d6964220c1adc010c312a1ade010c3e2a336a65020f1adb01061b0f273eba28062b2b6a6566020f1ac901061b0f273eba28062b2b6a652705f7560129353da0037b29362a372c2f361ab0010c3b2a299291031229362b3caa292b25042504511e113b6502012a653b2f299291031229362b3caa292b25042504511e113b6502012a652a2aa003220b02002e2a1a74010c5029352a36322b69220e0c322b69220f0c3d2b2b6a2707020f1a4701061b0f273eba28062b2b6a65270502d529352805a003a929362a372b382c392a38293529353ca003853b2f299291031229362b3caa292b25042504511e113b6502012a65312c2b220d361a12010c3b2a299291031229362b3caa292b25042504511e113b6502012a653b34299291031229362b3caa292b25042504511e113b6502012a652a2aa00313322c69220efaa70c28052a343434680564020efaa9061b0f273eba28062b2b6a652704020efa97061b0f273eba28062b2b6a652706022529352806a00310fa7e061b0f273eba28062b2b6a65020efa6e061b0f273eba28062b2b6a65660202fa5d4200000000|@9451,1,@14144,@4256,@2100,@17912,@4254,@9452,@9454,@9455,@9461,@1296,@9462,@9463,@9450| 17912:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14145| 17913:D9,296|fb152d9291f81d012d352e362a29352805a0034e29362a382938293629353da0033b2b38293629353da003043b5002041a0d01103b5029362a372a311a09010c1a0d012a690b02002e2d2b1a0a010c5029352709250526041e4b3b02012d2704023629352806a0032e2936293529353fa003112b3b330c293528053b2b2d3b680565021029353ca003032b0207292503511e843b650201296429353ea0036729362f2a2a3ba00305293ba002482a352b362b9291033d2b352c362c352b352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b030d2d2c2508250826061e463b02013b270402013b6565030a29fa650c2968016402013b6402013b293ba003092b3131fa57327b050929352c3232fa4c0c2a2a6965270402013b4400|@2464,1,@14146,@4256,@2100,@17914,@4254,@9453,@9452| 17914:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14147| 17915:D4,32|fb072b929103112b352c362a362afa280c2a2a69270402013b42000000000000|@880,1,@14148,@9453| 17916:D4,32|fb072b929103112b352c362a362afa280c2a2a69270402013b42000000000000|@880,1,@14149,@9454| 17917:D7,48|fb062c929103043b500203fa3b103b502c35293ba003033b02122dfa330c2d0c2efa350c2efa390c2a2a696564430000|@9457,1,@14150,@9458,@9460,@9456,@9455| 17918:D5,40|fb072b9291031d2b352c362a929103043b500203fa2a102a352afa2c0c2a2a69270402013b420000|@880,1,@14151,@2207,@9460| 17919:D5,40|fb072b9291031d2b352c362a929103043b500203fa2a102a362afa2c0c2a2a69270402013b420000|@880,1,@14152,@2360,@9456| 17920:D4,48|fb0a2c929103052b929102013b03192c352d362d352e362c35292c692d2cfa280c2a2a69270702013b43000000000000|@2132,1,@14153,@9461| 17921:D8,200|fb152c929103bc2c352d362a29352805a0034a29362a382938293629353da003372b38293629353da003043b500203faaf103b5029362a372a31faac0cfab12a690b02002e2d2bfaaf0c5029352709250526041e473b02012d2704023629352806a0032e2936293529353fa003112b3b320c293528053b2b2d3b680565021029353ca003032b0207292503511e803b650201296429353da0030d29362a372a2a692968016602013b293ba003072b30fa4f317e0829352c31fa460c2a2a6965270402013b43000000|@2464,1,@14154,@4256,@2100,@17922,@4254,@9462| 17922:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14155| 17923:D5,56|fb0e2c3ba0030cfa472c2a35452a36466402232c352d362a352b360b02002e2afa360c5029352a362f2b692f2b69220d2b452a46270b4300|@9464,1,@14156,@2127,@9463| 17924:D9,192|fb152e929103b12e352f362a29352805a0034a29362a382938293629353da003372b38293629353da003043b500203faa7103b5029362a372a31faa40cfaa92a690b02002e2d2bfaa70c5029352709250526041e473b02012d2704023629352806a0032e2936293529353fa003112b3b320c293528053b2b2d3b680565021029353ca003032b0207292503511e803b65020129643030fa600c293ba0030a2a313131fa5c327b060929352b323232fa500c2a2a69656602013b1f040000000000|@2464,1,@14157,@4256,@2100,@17925,@4254,@9465,@9450| 17925:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14158| 17926:D3,144|fb0c2d352805a0037e2d362e3829382f3629353ca003092a3629353ca06402013b030f303629362c3629362b2aa027040225303629353ba003092b3629353ba06402013b030f313629382d3629382b2aa0270402013b6403213b2d299291031229362b3caa292b25042504511e113b6502012a652931a06402013b03052c680102013b270402013b4400000000000000|@9466,1,@14159| 17927:D11,584|fb162c1a5a020c29353da00329293629353ea0030829362992916402013b030e293629352936291a36020c660205291a2e020c640201292929352805a0035129362a382938293629353da0299103032c02392c38293629353da003043b5002041a0502103b5029362a372a321a01020c1a05022a690b02002e2d2b1a02020c5029352709250626051e503b2705f7b40129352806a003043b5002041aea01103b502936293529353fa003043b5002041ade01103b5029362f36352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403093036352968016402f52a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23092aa06502013b03033c02082b250526041e2e3b27046403063037680102b82a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23082aa06502013b03033c02082b250526041e2e3b270464030630386801027b2a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23072aa06502013b03033c02082b250526041e2e3b270464030630396801023e2a293ba003033b022b29352a362a38293629353ca0030d2a362936220e23062aa06502013b03033c02082b250526041e2e3b2704640306303a680102013b293ba00303fa6e103b503b502935293528053b2b2d3b6805303b3b2ce3502b270864654300|@9468,1,@14160,@4275,@4256,@2100,@17928,@4254,@9469,@9472,@9467| 17928:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14161| 17929:D5,32|fb082b929103102b352c3629fa2a0c2b3529fa2c307d073b4200000000000000|@2425,1,@14162,@9478,@9424| 17930:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14163,@9428| 17931:D5,24|fb072b9291030e2b352c3629fa220c2bfa262f7d063b4200|@2425,1,@14164,@9420,@9423| 17932:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@9479,1,@14165| 17933:D4,8|fb02fa1c42000000|@9482,1,@14166,@921| 17934:D6,80|fb112e9291033f2e352f360b02002d220c322c220cfa510c5029352a360b02002c322b22102210fa470c5029352a362a3ba003032f02052f2bfa3d0c22112a452b46270d02052d3b4530461f05000000|@9485,1,@14167,@9486,@9483,@9484| 17935:D11,144|fb142f353ca003072c3b452f4602782f353ba0030d2f362f2a2f2f32fa8a317b07082f363b0629fa8731fa8c6b293b692c3b690b0200fa882d220f220ffa71323bfa85312213fa880c5029352a36313529fa850c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303290205292efa620c22112a452e46270e1f0500000000000000|@9488,1,@14168,@9489,@7177,@917,@294,@10892,@10064,@10175,@9487| 17936:D6,80|fb112e9291033e2e352f360b02002d220c2b3434fa520c5029352a360b02002c322b22102210fa480c5029352a362a3ba003032f02052f2bfa3e0c22112a452b46270d02052d3b4530461f0500000000|@9485,1,@14169,@9491,@9489,@9490| 17937:D33,848|fb572f392935312309293533352936220c36220d38220e3a220f23082210230a2211230b2f35293ba003041a3a03103b5029353c061a38032a693b061a39032a693c2a2c6a2e3629353da003043b5002041a2c031029362a3730353135293caa333b3b2ce32e3b3b2fe32e3b3b34e3221335293ba003041a0e03103b50293522103729370b02002c22292212222922172e1afc020c5029352a36221a350b02002c2e2218222f221d2e1aec020c5029352a363b0629221a221e1ae4026b293b692224350b02002c31222122382226322f1ad5020c5029352a362228350b02002c2e2227223e222c2e1ac5020c5029352a362a3ba00303300206302b1aba020c293ba003042211020722112a1ab2020c293ba003042218020722182a1aaa020c22353b3bef293ba003051aa4020259293eb1292810b1293cb2292808b4291a9802a503043b5002041a960210292841bd2a3cb22a2a3b3bf02b3b3b32f050223d28082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c2a3db1282ee4502c95502c27080b0200223b2d33223522332e224b1a50020c5029352a362922411a4c022234223822476b22372235224c1a44020c2248230d29299291031b29352a362a351a3802a003052a68010207292503511e1a3b6502013b64293ba003471a2402299291031b29352a362a351a0e02a003052a68010207292503511e1a3b6502013b64293ba003041a0202103b50293529351ae801a003043b5002041af601102937650215293529351ad101a003043b5002041adf0110293764036b3c3b22321ada016b2e3ba00303340206342f1ad4010c2a2a69293ba003032e0205280f2a306a223a35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aa3010c223f3522403522413b3b2ce32f3c224b2f2f6805270a1a91010c02693c3b22321a6f016b2e3ba00303340206342f1a81010c2a2a69293ba003032e0205280f2a306a223a35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a38010c223f3522403522413b3b2ce32f3c224b2f2f6805270a1a36010c3c224b0c222b3729353da003043b500203fa5a1029362a372a3b3b2fe32a3b3b1a1a01e33c3b30326b293b6922542a4522564627501f05000000000000|@9493,1,@14170,@1921,@17938,@17939,@9501,@1921,@9503,@9524,@917,@9534,@10054,@10060,@10061,@10062,@8985,72057594037927935,@286,@10063,@18570,@10115,@53,@1652,@1701,@826,@916,@10877,@9561,@10878,@10890,@9492,@7177| 17938:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@9494,1,@14171| 17939:D8,104|fb0a2b352c362d372a3ba20303fa71103b502a3ba6032c2a3cab293ba003052a3ba002013b03043b500203fa5b102c3ba20303fa5b103b503d2d69292f36fa58327e0829030f2b3ba20303fa53103b503b2c69020d2b3ba20303fa44103b503d2c69664200000000|@9496,1,@14172,@9497,@7181,@7179,@2053,@9495| 17940:D9,184|fb102d230d29299291031a29352a362a35fabda003052a68010207292503511e193b6502013b64293ba00342faaa299291031a29352a362a35fa95a003052a68010207292503511e193b6502013b64293ba00303fa8a103b5029352935fa71a003043b500203fa8010293765021329352935fa5ca003043b500203fa6b10293764299103072e3b45334602230b0200220d220d2b220e220dfa560c5029352a362a2a220f220e220efa4e220f7b0710661f06000000000000|@9505,1,@14173,@64,@1652,@1701,@826,@9506,@9504| 17941:D12,304|fb1f2f3ba003082d3b452f46f71d012f3530363035313632372d3529353ba0030d2936280b1a20012b3b6b6402092e3529341a1b010c64332e0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faee0c0201290b02002c352806a0030dfae62d692a3b452a465050021a3c22120cfadd2a22156a3c3b2c316b293b692d2a452c4650260429352a3622103629353ba00348293622123722133629353da00303fab4103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a2f3b6bfa912a2f6a28052a221a6a270702072805221222136a29220f692c22112b6a0b020022162d2b221e221efa6f0c5029352a362a3ba00303330205332bfa650c221f2a452b46271b1f050000|@9508,1,@14174,@916,@9509,@1083,@17943,@17944,@4323,@1033,@9506,@9507| 17942:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14175,@9509,@1039,@9510| 17943:D3,8|fb02293642000000|@9515,1,@14176| 17944:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14177| 17945:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14178,@9507| 17946:D9,152|fb1e2e352f373c2f0c3c3b2bfaa26b293b6928062d3b6a33353436220c352b2aab302a3b6a642b0c28082a6929fa893b6a2812fa8b312c6b3d2a692212220e0c2213352214362215352b2aab22102a3b6a642b0c28082a6929fa6d3b6a2812fa5f312c6b3d2a69293b69332a69293ba003042214020622142afa550c293ba003042220020622202afa4e0c221d2a45222146271b1f050000|@9518,1,@14179,@1951,@9519,@1639,@9521,@9523,@9517| 17947:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14180,@9523| 17948:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14181,@9517| 17949:D9,224|fb142d230d29299291031a29352a362a35fae5a003052a68010207292503511e193b6502013b64293ba00342fad2299291031a29352a362a35fabda003052a68010207292503511e193b6502013b64293ba00303fab2103b5029352935fa99a003043b500203faa810293765021329352935fa84a003043b500203fa931029376403523b32690b0200220d2d2a929103272a352b360b02002d2f2b22152214fa770c5029352a362a2a692f2a250a250a26081e2626080209292c2a35452a3646515129352a362a2a220f220e220efa50220f7b07102d3b453246651f06000000|@9526,1,@14182,@64,@1652,@1701,@826,@9525,@9504| 17950:D8,184|fb1b2f35303731383135323629352a362b37220e3629220dfab60c220d2e0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa890c0201290b02002c352806a0030dfa812d692a3b452a465050021a3c22150cfa782a22186a3c3b2c316b293b692d2a452c4650260429352a363e2214221422146b2b3ba003042211020622112cfa520c2a220f692c22112b6a221c2c452a4627181f05000000000000|@9528,1,@14183,@9529,@1083,@17952,@17953,@9527| 17951:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14184,@9529,@1039,@9530| 17952:D3,8|fb02293642000000|@9515,1,@14185| 17953:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14186| 17954:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14187,@9527| 17955:D9,232|fb162e230d29299291031a29352a362a35faeda003052a68010207292503511e193b6502013b64293ba00342fada299291031a29352a362a35fac5a003052a68010207292503511e193b6502013b64293ba00303faba103b5029352935faa1a003043b500203fab010293765021329352935fa8ca003043b500203fa9b1029376403563b33690b0200220e2d2a9291032b2a352b360b02002d2f2b2216221422172217fa7b0c5029352a362a2a692f2a250a250a26081e2a26080209292c2a35452a3646515129352a362a2a2210220f220efa54220f7b07112d3b453346651f0700000000000000|@9536,1,@14188,@64,@1652,@1701,@826,@9535,@9504| 17956:D9,248|fb1c3035313629352a362b37220d34343b220c1afa001aff000c342d0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fad30c0201290b02002c352806a0030dfacb2d692a3b452a465050021a3c22110cfac22a22166a3c3b2c316b293b692d2a452c4650260429352a36221836299291031c29352a36221b35221c38221d392b2b2f2f2d680528062a6927060226293ba00311221935221a38221b393c2c2c2c6b660210221935221a38221b3928072c2c2c6b662c3ba003042211020622112dfa5a0c2a220f692d22112b6a221b2c452a4627151f07000000000000|@9538,1,@14189,@5229,@9539,@1083,@18088,@18089,@9537| 17957:D98,2128|fb30303729353ea0f8df062936290a090012007e0012002e033403bc0312008e041200313532363b061a3c082a2c6a2c3caa292b2d6a220f1a35082b22102210221022101a31080c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a11080c291a14080c3b1a17080c2e1a1a083b2d2d3c3b3c6808280c2a69270df757062f9291f88a022f35303629929103082936293ba06402013b03043b5002041af00710293529352c351aee07061b0f273eba28062b2b6a2c1ae7070c299291039e293529362a37293ba203041adb07103b503b2a1adb070c299291034829352a36293ba003212a1ad00769293c1ad2070c291ad5070c3b2a3c6a3e2c2b6a3d2a220e6a2705021b2b311ac6070c293c1ab0070c291ab3070c3b2a3c6a3e2c2b6a27046502031ab2073d33316a3d220c2b6a2e353b221669293b692805302d342d68053d2a220e6a3d312b6a2f2a1a9207221e221e1a93071a98070c270d02013b2a3ba003061a9207f7a2012a3529352a37293ba003491a89071a8e070c28072a1a8f073c6b1a92071a7f070c28072a2c3c6b1a8d071a72070c28072a2c3c6b1a88071ad5060c3b1a88070c2b1a8b073b2d2d3c3b3c6808280c2a69270902d1293ca003051a7b070244293ba203041ad906103b503b2a1a71070c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a4d070c020129293b69661a4a071af7060c28072a1a48073c6b2b1aea060c28072a2c3c6b1a40071add060c28072a2c3c6b303ba203041a6e06103b503b311a2e070c1a32072a69291a2c060c3b1a2f070c2d1a32073b2d2d3c3b3c6808280c2a691a2b071a10060c220e3ba203041a3606103b503b220f1a1d070c2b1a20073b2d2d3c3b3c6808280c2a6927102216352217363b062b3caa2f35292b2e2e1a06070c29352806a00309293c3b1a00070c0206280b2a3c3b6b291afb063b6a28121afc06332c6b2f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a82050c291a85050c3b1ad0060c2e1ad3063b2d2d3c3b3c6808280c2a692713270a021d3b1a65050c3b1ac0060c1ac4061ac9063b2d2d3c3b3c6808280c2a6966f7a7031abe06f7a1032f9291031f2f353036293ba003043b5002041aae06102a3529220c220c1aab06337b050d313532363b061aa6062a2c6a2c3caa292b2d6a1aa1062a220f1a8b060c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ad3040c291ad6040c3b1a71060c2e1a74063b2d2d3c3b3c6808280c2a69270df719032f929103922f353036293ba003043b5002041a5606102a353435220c363b061a51062a2c6a2c3caa292b2d6a2f2a22121a10060c1a44061a11050c28072a2c3c6b293b69291a03050c28072a1a34063c6b3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a3b040c291a3e040c3b1a09060c2e1a0c063b2d2d3c3b3c6808280c2a69271502383b1a20040c3b1afb050c1aff051a04063b2d2d3c3b3c6808280c2a693b1afc050c3b1aff050c2b1a02063b2d2d3b3b3c6808280c2a692707f747022f9291f89d012f353036293ba003043b5002041ae305102a3531230d29299291031b29352a362a351ad605a003052a68010207292503511e1a3b6502013b64293ba003471ac205299291031b29352a362a351aac05a003052a68010207292503511e1a3b6502013b64293ba003041aa005103b50293529351a8605a003043b5002041a9405102937650215293529351a6f05a003043b5002041a7d051029376434230d29299291031b29352a362a351a6f05a003052a68010207292503511e1a3b6502013b64293ba003051a5b050215293529351a4a05a003043b5002041a3805102937642211352212363b061a41052a2c6a2c3caa292b2d6a2806303b6a220d2b22191a6a040c2806220c3b6a1a28051a65030c28072a2c3c6b293b691ab0022a6928142a3b6a293b69291a4a030c28072a333c6b293b69291a3c030c28072a220e3c6b3d2a69293b69293ba003051a7e020207280f2a1a76026a221435293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a5d020c291a60020c3b1ab3040c2e1ab6043b2d2d3c3b3c6808280c2a69272602a42e230d29299291031b29352a362a351a6c04a003052a68010207292503511e1a3b6502013b64293ba003051a80040215293529351a4704a003043b5002041a35041029376428062a3b6a1a69041a86020c28072a2c3c6b3d2a69293b69293ba003051ac9010207280f2a1ac1016a3b1ad4010c3b1a47040c2b1a4a043b2d2d3c3b3c6808280c2a693b1aba010c3b1a3d040c2b1a40043b2d2d3c3b3c6808280c2a69271064f7600129353ba003041a2d04103b5029353fa0038729362a3733361a23042c2c6a2a3ba003212b220c1a1d040c29352806a0030a292e3b1a9f02347b050e280b2a2f3b6b6402512a3ca003212b220c1aff030c29352806a0030a292e3b1a7902347b050e280b2a2f3b6b64022b2a929103133b1ae3030c29220d220d2d1ae103220c7b060e321ad0030c29220d220d2d1ace03220c7b060e270402c729353da0037e29362a372a352a35220c361ab9032c2c6a2a3ba0031a220d35220e362d352b2aab302a3b6a642b0c28082a692704024a2a3ca0031a220d35220e362d352b2aab302a3b6a642b0c28082a692704022b2a929103133b1a5f030c29220f220f2d1a5d03220e7b0610341a4c030c29220f220f2d1a4a03220e7b061027060243293632361a4a032b692a3ba003032b02312a3ca003032b02292a929103123b1a17030c29220c220c2d1a1503347b060d311a05030c29220c220c2d1a0303347b060d66641f06000000|@9540,1,@14190,@17959,@916,@9541,@9561,@3991,@9965,@1098,@9966,@1296,@9969,@1080,@9971,@3746,@3506,@3508,@9972,@3546,@9973,@9974,@9978,@9985,@3725,@1099,@1407,@4005,@9991,@1576,@9992,@9993,@9994,@9996,@1083,@3725,@1407,@9991,@9997,@1407,@9998,@9999,@1576,@10000,@9993,@10001,@1039,@1638,@1639,@10002,@10003,@10004,@10005,@10009,@10010,@10016,@9547,@18071,@749,@10019,@10020,@10021,@18073,@10024,@10029,@10030,@10031,@10032,@10033,@10031,@1070,@10034,@10035,@10036,@62,@1652,@1701,@826,@103,@10039,@18078,@4005,@10040,@10041,@10042,@10043,@10044,@10041,@10045,@10046,@10047,@18083,@10051,@10052,@9545,@9546,@18087,@17958| 17958:D3,8|fb02293642000000|@9988,1,@14320| 17959:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14191,@9497,@2053,@9495| 17960:D20,592|fb13313629929103291a5c023331303068053b1a5a020c2933332d1a5a020c343b69291a5a020c28072a2d3c6b2705f71702293ba003503231313131311a48020c333528062a3b6a341a4402692a2a692d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a1a02347d11292707f7c201323729353ea0f8a101293634352a0a090030001200e6001d0112001200240112005f01220c34343434341ad4010c220c3b69291ac3010c28072a2d3c6b66f766010b02003492910313343629929103082936293ba06402013b6402013b03433435220c36293529352c352929352806a0030d293629352502501e0e3b64020129642b29352806a0030d293629352502501e0e3b6402012964302b452a46502607020b1a74012a2a35452a36465129352a361a6d012b2b6a2211352806a003092211362968016402013b293ba0031728062b3b6a22133b69291a1e010c28072a2d3c6b66020e1a410122132e2e6b28062a3b6a64270702b031929103083136293ba06402013b03043b5002041a2301103135293529220d220d1a1e010c220e3b6929fad60c28072a2d3c6b270502792806303b6a027231929103083136293ba06402013b03043b500203faf6103135293529220d220dfae20c220e3b6929fa9a0c28072a2d3c6b28152a28096a2706023731929103083136293ba06402013b03043b500203fac31031352935293bfac20c2c2afac5facb0c220f3b6929fa5b0c28072a2d3c6b2706650217333232323232fa4f0c333b6929fa400c28072a2d3c6b6664641f0700000000|@9543,1,@14192,@17961,@9545,@9546,@1099,@9539,@4005,@1083,@9927,@18039,@18044,@9941,@9944,@9951,@9954,@9449,@9957,@9542| 17961:D5,40|fb0829362c2b373b2d382e39fa320c29352806a00309293c3bfa2d2f7b0504280b2a3c3b6b644200|@9544,1,@14193,@9539,@1039| 17962:D4,40|fb072b9291031c2b352c362a3629030a2afa2d0c2c2a696402062afa232f7d066602013b42000000|@693,1,@14194,@9545| 17963:D5,48|fb0c2e3ba003052d2c2c7d062d2c0c2f2b362c372d3832323039313a322306fa270c29fa2b0c28072a2d3c6b661f0400|@9549,1,@14195,@9548,@1099| 17964:D5,72|fb0f3392910338333534362a352b362c37220e220e220e220e220e220e220e220efa3d0c2a220d220d220d220d220d220d220d220dfa310c2a2a69270402013b1f09000000000000|@880,1,@14196,@9550,@9548| 17965:D14,392|fb203403033c0201330386340313220c301a8c0131220d220d220d1a8a010c02012d220d311a880132220e220e220e1a86010c220c0308220e3232310c02012d220f331a6a01342210221022101a70010c293b692c2a692c2a692f2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640308291a4001220c7d1629270902ee2e220d3434341a36010c293ba003d5220d3c31220d220d220d1a2b010c3b31299291031229362b3caa292b25042504511e113b6502012a65292bab0b0300220d2e2a929103043b5002041a0201103b502a352b362b3ba0030e2a2e2a35452a36462a374751020e2b3cab2a2a2505250526031e3150515129352a362b3722172bfad52213221822182218fa9b0c22182cfacd2214221922192219fa930c293b692b2a6922112a6922142a6928142a3b6a3c310c3c3b2b2d6b22202b2b6a220c352a2a69220e3b3b2ce3221e35221f362210352b2aab322a3b6a642b0c28082a69271b020929352935322a2f7d10641f0b00000000000000|@9552,1,@14197,@9553,@9556,@9610,@9584,@9568,@1083,@9570,@9613,@953,@9617,@9551| 17966:D4,16|fb082b352c372a35292bfa1c307e0600|@9555,1,@14198,@9554| 17967:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14199,@9554,@1039,@9510| 17968:D20,392|fb1831353ea00393313629929103082936293ba06402013b031329352936293434343434341a7801220c7b090c313532363b061a72012a2c6a2c3caa292b2d6a2f3b1a5b01220e220e220e2f221422141a5d010c2d35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a3d010c291a40010c3b1a43010c2e1a46013b2d2d3c3b3c6808280c2a69270d6402ea31352805a00366313632382938293629353da003442b38293629353da003043b5002041a1701103b5029362a372a311a13010c1a17012a690b02002e2d2b1a14010c50293529221622162216221622162216fab122177b09172b2d333333220e2211faa12212faf5220f7b0b0d31352806a003043b500203faeb103b503136293529353ca003363034313131fadf0c293ba00303fadf103b503b5029352935220c2a0c29352806a00309293b3bface347b050f280b2a3b3b6b2704022c29353fa00319333bfabe0c293b323232220d2210fa322211fa86220e7b0b0c29333333333333fa20347b090b651f0700|@9558,1,@14200,@9556,@17969,@9559,@9561,@3991,@9562,@9563,@4256,@2100,@17973,@4254,@9564,@9605,@9570,@9557,@1039,@9449| 17969:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14201,@9497,@2053,@9495| 17970:D9,96|fb163392910355333534362a3629313131220e220e220e22120c280bfa5a220f3b6b280bfa5a22103b6b293b692b2a6929fa550c28072a303c6b22133caa322a2215221522152215221522152215fa400c28052c2bfa416b270c0202fa421f09|@9560,1,@14202,@916,@918,@1099,@9559,@921,@915| 17971:D4,32|fb072b929103132b352c3628082b692afa260c2a2a69270402013b4200000000|@880,1,@14203,@9561| 17972:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14204,@9562,@920| 17973:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14205| 17974:D11,184|fb0e3338293629353ca0030b2a36293629fabda06502013b03033c02492a3629353ca0030b2b36293629faaca06502013b03033c022f2b3629353ca0030b2c36293629fa9ba06502013b03033c02152c3629353ca0030b2d36293629fa8aa06502013b6464640304fa860249220c3829220d326a642e0c29352806a00308293b3bfa750c0206280b2a3b3b6b220d929191030329021e220d220d220d220d220d220d220d220dfa580c29fa5c0c28072a2d3c6b6565651f09|@9566,1,@14206,@47,@86,@89,@91,@3841,@1039,@9565,@1099| 17975:D5,56|fb0d3292910328323533362a34343434343434fa3b0c2a220c220c220c220c220c220c220cfa310c2a2a69270402013b1f08000000000000|@880,1,@14207,@9567,@9565| 17976:D9,160|fb0d32352806a0030b3236293529353ca06502013b031d2e33333333fa9a0c293ba00303fa9a103b503b5029352935302a2f7d0d322e2d31220c220c220c330c332f2e32220d220d220dfa7c0c34302f33220e220e220efa770c293b692b2a69fa762a692e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa4f347d122927081f0800000000000000|@9569,1,@14208,@9570,@9581,@9584,@9568,@921,@1083| 17977:D14,384|fb162e353da003111a8d012e69291a8f016929680165f760012e352805a003ed2e362f382938293629353da003412b38293629353da003043b5002041a6901103b5029362a372a311a65010c1a69012a690b02002e2d2b1a66010c50293522142a2214221422141a5e0122157b07152c929191038d30299291036529352a362a35293830382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403052e680102082d250726061e633b270602013b64293ba003073434fae5327e0c29352936fae42a6929faa76929680127046402073333faca317e0b2704026c2e352806a0035e2e362f372a2a692b3529353fa0031f323bfab90c293528053b2b2d3b6805220d2a220d220d220dfa8b220e7b070e29353ca0031b0b0200220d2e2b220cfa950c5029352a362a2a692968012706020b332a333333fa5e347b070b270402072f2ffa5a2d7e071f050000000000|@9572,1,@14209,@17978,-1,@4256,@2100,@17979,@4254,@9570,@9574,@17983,@9449,@9571| 17978:D3,8|fb02293642000000|@9573,1,@14210| 17979:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14211| 17980:D6,128|fb102c929103712c352d362a3529352c362a299291031e29352a362a3529220cfa760c03052b680102082a250426031e1d3b6602013b64299291033129352936fa5e2a2e6a3b31299291031229362b3caa292b25042504511e113b6502012a65293caa2b2a69296801270602072d32fa37337e0a270602013b43000000000000|@9575,1,@14212,@9576,@17981,@9574| 17981:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9578,1,@14214| 17982:D5,400|fb162c1aa2010c2c1a9d010c2a352806a0030729352806a002013b03222a362a362a352a352a353ca0030629353ca002013b03052c2ca002013b2704f749012a353da0030629353da002013b031e2a362b372b362c372c2b1a55010c03082b2a1a4d01337e0a3b2704f71c012a353ea0030629353ea002013b036a2a362a362a2a2a3ba00305293ba002562a352b362b9291034b2b352c362c352d362c352d362c2ba003033c02192c3b3bef2b3b3befa0030d2c28082c28082e3b3befed02013b03072b2afae90c02013b030d2f2e250a250a26081e543b02013b270602013b65656502a32a352805a0030729352805a002013b03912a362b382b362c382b382a382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403362f2e2a3ba00305293ba002272a352b362b9291031c2b352c362c2bfa470c030d2b2a2506250626041e263b02013b6502013b656502013b270702013b6543000000000000|@9577,1,@14213,@4275,@9576| 17983:D3,8|fb02293642000000|@9573,1,@14215| 17984:D5,152|fb0e2e929103802e352f362a3829353ca00367293629299291032129352a362a352935220d352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c333333fa67347b060b293529363b2f299291031229362b3caa292b25042504511e113b6502012a65293caa220c2c452a46270465020a2a313131fa30327b060966020afa2f2c692d2a453b46641f040000000000|@9579,1,@14216,@9571,@17985| 17985:D3,8|fb02293642000000|@9580,1,@14217| 17986:D15,296|fb192e322f2f2f1a36010c293ba003f632353ea00331323629929103082936293ba06402013b03192935293629220c220c220c220c220c220c1a0c01220d7b090d1a0c016402bd32352805a00365323633382938293629353da003402b38293629353da003043b500203faec103b5029362a372a31fae90cfaee2a690b02002e2d2bfaec0c50293529221722172217221722172217fab122187b09182b2d220d220ffaa4220e220e220e2212faca22107b0b0e32352806a003043b500203fac0103b503236293529353ca00303fab9103b503b5029353fa0031c343bfab20c293b220c220efa61220d220d220d2211fa87220f7b0b0d29343434343434fa49220c7b090c021e29352935332a0c29352806a00309293d3bfa7f327b050d280b2a3d3b6b66641f0700|@9586,1,@14218,@9570,@9584,@1621,@4256,@2100,@17987,@4254,@9587,@9590,@9585,@9449,@1039| 17987:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14219| 17988:D6,72|fb0c33382934336a64320c29352806a00308293d3bfa490c0206280b2a3d3b6b3492919103032902183432323232220e221034fa330c29fa370c28072a2d3c6b65651f0900000000|@9589,1,@14220,@1039,@9588,@1099| 17989:D7,112|fb123292910364323533362a303030220d220d220d22110c29fa6d69fa722a69fa6e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa4a0c0201292f2211221122112211221122112211fa3d0c2a2a69270902013b1f080000|@880,1,@14221,@4036,@921,@1083,@9588| 17990:D15,336|fb192e322f2f2f1a5e010c293ba0f81e0132353ea00359323629929103082936293ba06402013b03192935293629220c220c220c220c220c220c1a3301220d7b090d3b2a299291031229362b3caa292b25042504511e113b6502012a65293fa4030728062a3b6a02031a0c01646402bd32352805a00365323633382938293629353da003402b38293629353da003043b500203faeb103b5029362a372a31fae80cfaed2a690b02002e2d2bfaeb0c50293529221722172217221722172217fab022187b09182b2d220d220ffaa3220e220e220e2212fac922107b0b0e32352806a003043b500203fabf103b503236293529353ca00303fab8103b503b5029353fa0031c343bfab10c293b220c220efa60220d220d220d2211fa86220f7b0b0d29343434343434fa48220c7b090c021e29352935332a0c29352806a00309293e3bfa7e327b050d280b2a3e3b6b66641f07|@9596,1,@14222,@9570,@9568,@915,@4256,@2100,@17991,@4254,@9597,@9600,@9595,@9449,@1039| 17991:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14223| 17992:D6,72|fb0c33382934336a64320c29352806a00308293e3bfa490c0206280b2a3e3b6b3492919103032902183432323232220e221034fa330c29fa370c28072a2d3c6b65651f0900000000|@9599,1,@14224,@1039,@9598,@1099| 17993:D6,120|fb133292910367323533362a303030220d220d220d22110c293b69fa732a69fa6f2a69fa6b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa470c020129302212221222122212221222122212fa3a0c2a2a69270a02013b1f0800000000000000|@880,1,@14225,@921,@1083,@9598| 17994:D4,16|fb082b352c372a35292bfa1c307e0600|@9612,1,@14226,@9611| 17995:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14227,@9611,@1039,@9510| 17996:D10,280|fb182e312f2f2f1a26010c293ba003f631353ea00331313629322a929103232a352b362a36292d220e220e220e220e1a06010c2b2a2506250626041e213b2704020129656402bd31352805a00389313632382938293629353da0033e2b38293629353da003043b500203fad4103b5029362a372a31fad10cfad62a690b02002e2d2bfad40c5029352922162216221622162216faa322177b08172b34fac20c220c2aa60304220c0201292e2a2a9291031f2a352b362a2c2212221222122212fa770c2a2a2505250526031e1e3b6602012965652704022d31352806a003253136293529353ca0030332021529353fa0030332020c293333333333fa3c347b080b65020130020e293529362933a603032902013265641f0600|@9615,1,@14228,@9570,@9613,@4256,@2100,@17997,@4254,@9614| 17997:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14229| 17998:D5,184|fb122b929103ae2b352c362a3829353ba00398293629299291036129352a362a3834382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e5f3b270502013b6403213b2c299291031229362b3caa292b25042504511e113b6502012a65293caa640207302cfa2b317e086402072f2bfa21307e07660202fa2143|@9616,1,@14230,@9614,-1| 17999:D4,16|fb082b352c372a35292bfa1c307e0600|@9619,1,@14231,@9618| 18000:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14232,@9618,@1039,@9510| 18001:D4,16|fb082b352c372a35292bfa1c307e0600|@9621,1,@14233,@9620| 18002:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14234,@9620,@1039,@9510| 18003:D3,8|fb023b4300000000|@9627,1,@14235| 18004:D4,8|fb02fa1c42000000|@9628,1,@14236,@5703| 18005:D3,8|fb023b4300000000|@9627,1,@14237| 18006:D4,8|fb02fa1c42000000|@4329,1,@14238,@899| 18007:D4,16|fb05fa24352c2a2d7d04000000000000|@6869,1,@14239,@27| 18008:D4,16|fb05fa24352c2a2d7d04000000000000|@6869,1,@14240,@23| 18009:D4,16|fb05fa24352c2a2d7d04000000000000|@5857,1,@14241,@31| 18010:D4,16|fb05fa24352c2a2d7d04000000000000|@814,1,@14242,@35| 18011:D4,16|fb05fa24352c2a2d7d04000000000000|@9659,1,@14243,@33| 18012:D4,24|fb092d2d2b362c372d3830fa23317b080500000000000000|@9862,1,@14244,@9861| 18013:D77,2136|fb3730353da0034f1a6508299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a49081a4e080c02031a40083b1a4c080c3b1a4f080c2b1a52083b2d2d3c3b3c6808280c2a692704f7fe0730353ea0f8ad04303631372a9291f853042a352b36293ba0f835022a352b36220c35220d363b061a1f082a2c6a2c3caa292b2d6a2f2a22132213221322131a10080c1a14081a19080c28072a2c3c6b333b3bef293ba003051a0e080253293db1292810b1293cb2292808b4291a0208a503043b5002041a0008103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221228082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691ac6072a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a41070c0201291a9a07299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a7e071a13070c02031a75071a7a07299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a5e071ae3060c02031a5507293b69332a692c2a692e2a69291a4d070c1a5107299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a35071aa2060c02031a2c072a3b692a2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a6b060c020129293b691af9062a691afc062a691aff062a691a02072a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a25060c020129222035293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ab1060c291afc050c3b1aaf060c2e1ab2063b2d2d3c3b3c6808280c2a69272bf711020b02002e29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293603742f3c2a929103452a352b362a352c3c1a70060c2a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b03112d3caa2c2a2507250726051e3f3b6402013b270402013c6503213b30299291031229362b3caa292b25042504511e113b6502012a65293da86402013b02013b220e35220f363b061a0a062a2c6a2c3caa292b2d6a3b220e299291031229362b3caa292b25042504511e113b6502012a65293ba203041ae405103b503b503b2a1ae2050c220f2a1ae3050c320303290208291ae0051ae5050c3303051ae60502031ae90528062a3b6a293b691a26052a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aa1040c0201292f3b1ac0042220222022202220221122181aa1050c293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a57040c020129293b691a6d052a691a70052a691a73052a691aee042a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a11040c020129221935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a9d040c291ae8030c3b1a13050c2e1a16053b2d2d3c3b3c6808280c2a69272665024c1a0a05299291031829352a362a352806a00309292503511e143b02013b6502013c6403091aee041a9b030c02031ae5043b1a99030c3b1ae4040c2b1ae7043b2d2d3c3b3c6808280c2a69270465f74a0330352805a0f876023036313732382938293629353da003432b38293629353da003043b5002041ab404103b5029362a372a321ab0040c1ab4042a690b02002e2d2b1ab1040c50293529221622162216221622161a470322177b08173435220c363b061a98042a2c6a2c3caa292b2d6a31382935292d31311a8b040c29352806a00309293c3b1a85040c0206280b2a3c3b6b220e1a07032216221622162216331a73040c220f3ba003e32a1a70043b6a280d1a71042b6a1a74041af1020c28072a2c3c6b22123b3bef293ba003051a6504024e28062ab1292810b1293cb2292808b4291ad802a503043b5002041ad602103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a2e0428082d28082806ec50221a28082d280e34ec502b95502b2707220e35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ae5020c2c1af003a003033c02152c3b3bef3ba0030c2c28081adc0328083bed02013b03051ad80302012c2a1a09020c3b1ad4030c312c3b2d2d3c3b3c6808280c2a69270d02ec2a1ac5033b6a280d1ac6032b6a2b1a10020c28072a2c3c6b1abe031a03020c28072a2c3c6b22143b3bef293ba003051aaf03024e28062ab1292810b1293cb2292808b4291aea01a503043b5002041ae801103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a780328082d28082806ec50221c28082d280e34ec502b95502b2707221035293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291af7010c2c1a0203a003033c02152c3b3bef3ba0030c2c28081aee0228083bed02013b03051aea0202012c2a1a1b010c3b1a0e030c312c3b2d2d3c3b3c6808280c2a69270f270b270502cc30352806a0037b3036293529353fa00322323b1ae9020c293528053b2b2d3b680529220c220c220c220c220cfaf1220d7b080d29353ca003382d333232321ac6020c293ba003041ac502103b503b5029352935342a0c29352806a0030a293c3b1a2c02347b050e280b2a3c3b6b2704020e2a35293333333333faa4347b080b65024a1a9202299291031829352a362a352806a00309292503511e143b02013b6502013c6403081a7602fa4c0c02031a6e023bfa4b0c3b1a6e020c2b1a71023b2d2d3c3b3c6808280c2a6927041f0600|@9864,1,@14245,@9865,@9868,@1083,@3991,@9869,@9628,@18015,@9861,@1576,@1099,@5720,72057594037927935,@286,@1438,@9870,@9872,@9873,@9876,@9877,@9878,@9881,@921,@921,@915,@921,@9561,@9882,@9883,@801,@18018,@1080,@9884,@2562,@9885,@2568,@365,@448,@9888,@921,@921,@915,@9904,@9883,@9905,@9908,@9909,@9883,@4256,@2100,@18030,@4254,@18031,@9910,@1039,@9911,@1638,@1639,@1576,@9915,@294,@1098,@9916,@1638,@1639,@1576,@9915,@9917,@9449,@9570,@9918,@9921,@9925,@9926,@9863| 18014:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14246,@9869,@920| 18015:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14247,@9497,@2053,@9495| 18016:D6,80|fb0b2b929103402b352c3629fa5a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa31327d092927060202fa2f42000000000000|@2425,1,@14248,@9877,@1083,@921| 18017:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14249,@9882,@920| 18018:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14250,@9497,@2053,@9495| 18019:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c2e2a69654300|@1075,1,@14251,@9884| 18020:D4,16|fb052b352935fa202a69654200000000|@9886,1,@14252,@18021| 18021:D3,56|fb0b2b3529352b363b3bef2a3b3bef2a2aa303032a0201292e3628082e28082dee293ba003052c2ca50203293ba427064200000000000000|@9887,1,@14253| 18022:D34,1056|fb2b33929103043b5002041a2a04103b5033353436293ba0f883012a3529352a362d362a33220f220f220f220f22140c280b1a0b042c3b6b291a0c046928142a3b6a293b69291a07040c28072a303c6b0b02002212030d1afe032a2a35452a36465102de220c3b3bef293ba003051aef030253293db1292810b1293cb2292808b4291ae303a503043b5002041ae103103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691aa7032a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a82030c0201291a8303299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a67031a54030c02031a5e03293b692b2a69332a451a5a034650260a29352a3628062a3b6a293b691a27032a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a02030c020129293b69342a69293ba00303310206312a1a0b030c291a0e03221d7d252a3529352a362d360b020034030d1a01032a2a35452a36465102dd2e3b3bef293ba003051af3020253293db1292810b1293cb2292808b4291a8f02a503043b5002041a8d02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050220d28082d280834ec50280831b12c2a2820e4502c2a3cb1283de4502c95502c270828062a3b6a293b691a53022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a2e020c0201291a6702299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a4b021a00020c02031a4202293b692b2a69332a451a06024650260a29352a362f220f221422142214221422190c280b1a9301313b6b291a1c026928142a3b6a293b69291a8f010c28072a303c6b1a0d02299291031829352a362a352806a00309292503511e143b02013b6502013c6403091af1011a8e010c02031ae8011aed01299291031829352a362a352806a00309292503511e143b02013b6502013c6403091ad1011a5e010c02031ac801293b692b2a692d2a69293ba00304220d0207220d2a1ab8010c22213caa22172a22232223222322232223222322231aa7010c2b2a1aa9010c22103b3bef293ba003051aa30102533e2ab1292810b1293cb2292808b429fae8a503043b500203fae7103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b2808282ee4502b2809282ee4502b40282ee450221828082d280b34ec502b95502b270728062a3b6a293b69faac2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa880c020129293b69291a15010c2806222e3b6a3e1a12012b1a16016b28052a2d220e6b2724651f0900|@9890,1,@14254,@9891,@1271,@9893,@1099,@9895,@5720,72057594037927935,@286,@1438,@1083,@9870,@9872,@450,@9896,@9897,@9895,@5720,@9870,@9872,@9893,@9898,@9901,@9870,@9872,@9902,@9888,@9903,@1314,@9889,@1273,@3749| 18023:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14255,@9896| 18024:D6,80|fb0b2b929103402b352c3629fa5a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa31327d092927060202fa2f42000000000000|@2425,1,@14256,@9897,@1083,@921| 18025:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14257,@9902| 18026:D5,80|fb0b2c929103412c352d36292efa590c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa30327d0a29270602012b43000000000000|@2425,1,@14258,@9903,@1083| 18027:D6,80|fb0b2b929103402b352c3629fa5a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa31327d092927060202fa2f42000000000000|@2425,1,@14259,@9889,@1083,@921| 18028:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14260,@9904,@920| 18029:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14261,@9909,@920| 18030:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14262| 18031:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14263,@9497,@2053,@9495| 18032:D9,144|fb0b2e353fa003242e362f3729303030fa960c29352806a00309292c3bfa91317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa72103b503b50293ba60312293cab2d2a3b6a64330c2933fa620c64020f2c3ba20303fa5f103b503b503d2d6928082a69270702112e353ca003043b500203fa4b103b502e361f0400000000|@9511,1,@14264,@9910,@1039,@9497,@2053,@9495,@9510| 18033:D9,136|fb14319291037b313532362a2e33333333220f0c2b2ffa8832220d220d220dfa870c2c30fa7a33220e220e220efa810c293b692b2a692d2a69fa7d2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa590c02012932221322132213221322132213fa4e0c2a2a69270c02013b1f07000000|@880,1,@14265,@9912,@9584,@9568,@921,@1083,@9911| 18034:D4,16|fb082b352c372a35292bfa1c307e0600|@9914,1,@14266,@9913| 18035:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14267,@9913,@1039,@9510| 18036:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14268,@9916,@920| 18037:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14269,@9917,@920| 18038:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14270,@9926,@920| 18039:D4,24|fb0628062c3b6afa272a2c362d376b644200000000000000|@9928,1,@14271,@18040| 18040:D4,16|fb072b2a362b372c38fa1d2f7b060300|@9930,1,@14272,@9929| 18041:D7,224|fb0a2e3b3bef293fa603752f3b3bef3f2aa70303fae2103b50303b3bef293fa0030331023b3d2841bd293b28083bf02a3b3b3ff0502a2808220c2808dce4502a2809220c2809dce4502a40220c40dce4502a280b220c280bdce4502a95502a6529fa9da003033c0214293b3bef3fa0030b292808fa8a28083fed02013b6602013b03032d02482c353ea0031e2c362992910313293629929103082936293ba06402013b6402013b6402013b03202c36293529362929352806a0030d293629352502501e0e3b64020129646602012c29fa370c312a32fa39317b05090000000000|@9932,1,@14273,@2757,@9933,@9931,@3966| 18042:D10,96|fb122b352805a003043b500203fa69102b362c382938293629353ba00303fa60103b5029353da003312b38293629353da003043b500203fa4f1029362a372a31fa4e0cfa532a690b02002e2d2bfa510c5029352709fa51307d072b2704420000|@9934,1,@14274,@9935,@9938,@4256,@2100,@18043,@4254,@9931| 18043:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14275| 18044:D4,16|fb072b2a362b372c38fa1d2f7b060300|@9930,1,@14276,@9929| 18045:D12,112|fb172c352d363b06fa7e2a2c6a2c3caa292b2d6a332afa783433363437220c38fa760cfa7bfa810c28072a2c3c6b2f35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa5c0c29fa600c3bfa640c2efa683b2d2d3b3b3c6808280c2a69270f4400|@9946,1,@14277,@18046,@9947,@9556,@3724,@1099,@9561,@1070,@9950,@9945| 18046:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14278,@9497,@2053,@9495| 18047:D4,16|fb082b352c372a35292bfa1c307e0600|@9949,1,@14279,@9948| 18048:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14280,@9948,@1039,@9510| 18049:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14281,@9950,@920| 18050:D4,8|fb02fa1c10000000|@9959,1,@14282,@9958| 18051:D4,16|fb072936352e2e2efa1e2f7b06050000|@9963,1,@14283,@9962| 18052:D4,160|fb102e929103902e352f362a352b362c37322ca003033c0219323b3bef2c3b3befa0030d3228082d28082f3b3befed02013b034f31382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b646602013b030329020a2c333333fa29347b060b270502053b2c2c7d061f040000|@9964,1,@14284,@9962| 18053:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14285,@9965,@920| 18054:D8,152|fb132b352806a003162b36293529353ca003033b020629fa972e7d056502742b352805a0036c2b362c382938293629353da0299103272c383b2f299291031229362b3caa292b25042504511e113b6502012a652a2f2b6a2968016602312c38293629353da003043b500203fa4b1029362a372a32fa4a0cfa4f2a690b02002e2d2bfa4d0c5029352709fa25317d08270502013b4200000000|@9970,1,@14286,@9969,@4256,@2100,@18055,@4254| 18055:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14287| 18056:D5,40|fb092c2ca003033b021bfa34063b3eba293db828062c2b6a303caa2931fa290c2b2a692706430000|@1075,1,@14288,@1296,@9971| 18057:D7,56|fb0c2c929103292c352d362afa4269293cfa450c29fa490c3b2a3c6a3e2c2b6a3d2a346a2f34fa400c2a2a69270902013b43000000000000|@880,1,@14289,@3746,@3506,@3508,@9972| 18058:D4,8|fb02fa1c42000000|@9976,1,@14290,@9975| 18059:D23,392|fb2730301a99010c299291f8750129352f230d29299291031b29352a362a351a8601a003052a68010207292503511e1a3b6502013b64293ba003471a7201299291031b29352a362a351a5c01a003052a68010207292503511e1a3b6502013b64293ba003041a5001103b50293529351a3601a003043b5002041a4401102937650215293529351a1f01a003043b5002041a2d0110293764333b3bef293ba003051a2501024b280d2ab1292810b1293cb2292808b4291a1801a503043b5002041a160110292841bd2a3cb22a2a3b3bf02b3b3b32f050faf128082d2808280dec50221228082d281534ec502b95502b27073e2a693bfaea0c220f2e2bfaeb3bfaf00c293b69faf22a69faf62a693b3b3b3b2d68053bfaca0c2216342bfacb3bfad00c293b69fae22a69fae62a693b3b3b3b2d68052218fab1faaffaddfae30c22132a0c64293b69fae02a692c2a69fae12a69342a69fae22a6922132a693b3b3c3b2d68053b22200c2968013c2a2d22256b2224382225230c2a3b3b3ce3502b2a22257d2a3b641f0600|@9980,1,@14291,@7407,@61,@1652,@1701,@826,@9981,72057594037927935,@286,@5546,@5573,@5570,@1323,@9982,@1323,@9979,@7450,@7451,@7466,@7466,@7466| 18060:D4,8|fb02fa1c10000000|@9988,1,@14292,@9987| 18061:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14293,@9992,@920| 18062:D5,56|fb092c2ca003033b02272c3caa293ba20303fa3c103b503c2a6928082a69280b2a3c3b6b303caa2931fa2d0c2b2a69270643000000000000|@1075,1,@14294,@2118,@9996| 18063:D5,48|fb072c2ca003033b021e2c3ba20303fa37103b503b2d6928082a692e3caa292ffa2e0c2b2a6927044300000000000000|@1075,1,@14295,@2118,@9997| 18064:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14296,@9998,@920| 18065:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14297,@10000,@920| 18066:D9,136|fb0b2e353fa003242e362f3729303030fa8e0c29352806a00309292c3bfa89317b0509280b2a2d3b6b6602582e353da003432e362f372a352a352935322aab293ba20303fa6a103b50293ba60312293cab2d2a3b6a64330c2933fa5c0c64020d2c3ba20303fa59103b503d2d6928082a692707020f2e353ca003043b500203fa47102e361f040000|@9531,1,@14298,@10001,@1039,@9497,@2053,@9495,@9530| 18067:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14299,@10002,@920| 18068:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14300,@10004,@920| 18069:D4,8|fb02fa1c10000000|@9988,1,@14301,@10007| 18070:D4,8|fb02fa1c10000000|@10013,1,@14302,@10012| 18071:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14303,@9497,@2053,@9495| 18072:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14304,@10019,@920| 18073:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14305,@9497,@2053,@9495| 18074:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14306,@10030,@920| 18075:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14307,@10032,@920| 18076:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14308,@10034,@920| 18077:D3,8|fb023b4200000000|@1706,1,@14309| 18078:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14310,@9497,@2053,@9495| 18079:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14311,@10040,@920| 18080:D3,8|fb023b4200000000|@1706,1,@14312| 18081:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14313,@10044,@920| 18082:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14314,@10045,@920| 18083:D5,40|fb0729372cfa390c29352806a0030a292b363bfa332f7b0504280b2a2c363b6b6442000000000000|@9988,1,@14315,@10050,@1039| 18084:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14316,@10050,@1039,@9530| 18085:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14317,@10051,@1039,@9530| 18086:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14318,@10052,@1039,@9530| 18087:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@10053,1,@14319| 18088:D3,8|fb02293642000000|@9515,1,@14321| 18089:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14322| 18090:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14323,@9537| 18091:D9,184|fb102d230d29299291031a29352a362a35fabda003052a68010207292503511e193b6502013b64293ba00342faaa299291031a29352a362a35fa95a003052a68010207292503511e193b6502013b64293ba00303fa8a103b5029352935fa71a003043b500203fa8010293765021329352935fa5ca003043b500203fa6b10293764299103072e3b45334602230b0200220d220d2b220e220dfa560c5029352a362a2a220f220e220efa4e220f7b0710661f06000000000000|@10056,1,@14324,@64,@1652,@1701,@826,@10055,@9504| 18092:D12,360|fb2b2f3ba003082d3b452f46f757012f3530363035313632372d3529382a350b02002c2a1a59010c50293634352938293629353da003203f2d22106a29220c69220e220e2b6a22102a2218221822181a360122197b071931352922141a31010c2214220f0c293b692b2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a02010c0201290b02002c352806a0030e1af9002d692a3b452a465050021a3c221c0cfaf02a221f6a3c3b2c316b293b692d2a452c4650260429352a363f2210221c6a22153629353ba00348293622173722183629353da00303fac1103b5029353ba00314293729353ca00307293629356402022936640205293629356429063c2a2f3b6bfa9e2a2f6a28052a221f6a270702072805221722186a29221a692c2a692e221d2b6a0b020022222d2b222a222afa410c5029352a362a3ba00304220c0206220c2bfa650c222b2a452b462718270f1f05|@10058,1,@14325,@4342,@10055,@10059,@1083,@18094,@18095,@4323,@1033,@10057| 18093:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14326,@10059,@1039,@9510| 18094:D3,8|fb02293642000000|@9515,1,@14327| 18095:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14328| 18096:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14329,@10057| 18097:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14330,@10060| 18098:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14331,@10061| 18099:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14332,@10062| 18100:D32,816|fb2631353da0039f313629352a3929352c3a29350b02003022112211221122112e221122100c5029352a360b02002c352806a0030e1a10032d692a3b452a465050021b3c22140c1a06032a22156a3c3b2c316b293b692d2a452c4650260429352a36220c221622161aed020c293ba003032b02062b2a1ae7020c293ba00303310206312a1ae1020c22172d0c29220f1ade02221c221c221b1add020c22182c452a462715f7830231353ea003f93136323829353b062932341ac5026b293b690b0200221032221122112211313b1ab8023122142213360c502935323b2a929103282a352b362a22131aa5020c2c3ba00303290206292d1a9f020c2b2a2506250626041e263b270402012965293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653135291a71020c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652e3ba00303290206292f1a4d020c28142e3b6a2e299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a29020c0201292922101a2702221a221a22191ade010c22162d452a462713f7840131353ca00390313632373b062931331ac8016b293b690b0200220f30221022102210313b1af3013122132212360c5029352a360b0200220c22152e221522152e221522140c5029352a36220c35291aa9010c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303320206322e1aa5010c293ba003032a02062a2a1a9f010c22172a452f46271402ee31353fa0032231372935293ba003041a8a01103b502935293629321a86010c313b452a46270502c63136293729352b3829352d3929352f2307293531350b02002c22152215221522152e221522140c5029352a3629301a53012216221822116b221722172216fad40c3c22160c1a4401061a4801063d2b2b6a2b3b3b2fe32b3b3b221ce322112c1a3a010c29221d221dfa8a0c22113ba003041a3001103b50221135293729221f1a2a010c343b69291a2a010c28072a2d3c6b3c3b220f2c6b293169293ba003042212020722122a1a13010c22103ba203041a1101103b503d22116928082a6922262c452a4627231f0700000000|@10066,1,@14333,@18101,@18102,@10067,@10109,@10110,@10111,@10115,@917,@10178,@10180,@10196,@10175,@10197,@1083,@10198,@10201,@10202,@10203,@1921,@10204,@18189,-1,@7177,@10205,@10209,@10212,@1099,@10065,@2118| 18101:D3,8|fb02293642000000|@9515,1,@14334| 18102:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14335| 18103:D4,16|fb062d2d2dfa212e7b05050000000000|@10069,1,@14336,@10068| 18104:D7,144|fb152d929103832d352e362a352b362a362b3529353da003043b500203fa891029362a373c220c0c2b3b3b2ce32b3b3b220fe32f353ba003042f3902013b323629353da00303fa68103b5029353ba00314293729353ca0030729362935640202293664020529362935642922112213220d2ffa440c3c3b312c6b220e22142214fa3e0c2a2a69271102013b4400000000|@880,1,@14337,@9501,@4323,@10070,@10068| 18105:D40,840|fb1a2c3629353da0f8e30129362a372a3ba003cc3b062933331a44036b293b69220c9103051a400302122c220c1a40032c33373438220c391a3d030c2d220d1a3e032d3437220c38220d391a3a030c2e220e1a3b032e220c37220d38220e391a36030c2e35291a37030c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b1a1c03220e361a1e036b2d3b692f2a692b2a69322a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aee020c020129303ba00303290205280f312b6a2710f70a013b062933331a78026b293b693b2e299291031229362b3caa292b25042504511e113b6502012a651ab6023136691ab802220e2c322f1ab8020c220e9103051a470202191ab2022f33373438220c3968051aad02220f2d33301a95020c1aa902303437220c38220d3968051aa30222102e34311a7b020c1a9f0231220c37220d38220e3968051a980222112f220c321a5f020c3035291a90020c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129653b1a7502311a79026b2d3b692f2a692b2a69322a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ae1010c020129303ba00303290205280f312b6a271265f753012d3529311a2b020c0b02002c352806a0030e1a25022d692a3b452a465050021a3c340c1a1c022a220e6a3c3b2c316b293b692d2a452c4650260429352a36220d2a0c220c3629353da003041afc01103b503b5029353ca00304293702022936220d03262b352806a003092b3c3b1ae2010c0206280b2c3c3b6b291add013b6a280d1ade012b6a650234293ba003043436022b3b1ad4010c2a3ba203041ad301103b503b503b2b1ad1010c220d361ad2013b2d2d3c3b3c6808280c2a69663b1ac9012b1acd016b2d352806a003092d3b3b1a7f010c0206280b2e3b3b6b2e352806a003092e3d3b1a69010c0206280b2f3d3b6b2f352806a003092f3e3b1a53010c0206280b303e3b6b293b692b2a692e2a692e2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa8c0c020129220f3ba00303290206280f22102b6a2715641f0500000000|@10072,1,@14338,@917,@921,@10073,@9556,@10076,@9584,@10079,@9568,@10082,@1100,@915,@1083,@18113,@10071,@10084,@18121,@10094,@18124,@10098,@18127,@10102,@10103,@1100,@915,@10104,@18132,@18133,@10105,@1039,@1638,@1639,@3991,@1080,@10108,@10071,@1100,@915| 18106:D4,16|fb082b352c372a35292bfa1c307e0600|@10075,1,@14339,@10074| 18107:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14340,@10074,@1039,@9510| 18108:D4,16|fb082b352c372a35292bfa1c307e0600|@10078,1,@14341,@10077| 18109:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14342,@10077,@1039,@9510| 18110:D4,16|fb082b352c372a35292bfa1c307e0600|@10081,1,@14343,@10080| 18111:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14344,@10080,@1039,@9510| 18112:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14345,@10082| 18113:D3,8|fb02293643000000|@10083,1,@14346| 18114:D14,256|fb232e352f363b061a0d012a2c6a2c3caa292b2d6a3b061a06012a69220c3ba203041a0301103b503b503b220d2e1aff000c220c2a1a00010c3c2a693b0629302f2d6b29221069312a22170c2c3529faef0c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a221035293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529faa40c220f35221dfaa4a003033c0216221d3b3bef3ba0030c221d2808fa8f28083bed02013b0304fa8c0202221d2bfa8d0c221d3ba20303fa4c103b503b503b221efa820c302c3b2d2d3c323c6808280c2a69271b1f0600000000000000|@10086,1,@14347,@18115,@18116,@1080,@10088,@2562,@10090,@9561,@294,@1098,@3991,@10085| 18115:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14348,@9497,@2053,@9495| 18116:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10087,1,@14349| 18117:D5,32|fb072d2da003033b0212fa2c2e2d6a2e3caa292f2ffa290c2b2a696644000000|@1075,1,@14350,@18118,@10088| 18118:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@10089,1,@14351| 18119:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14352,@10090| 18120:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14353,@10085,@920| 18121:D5,24|fb0a29362dfa292e2d372e382f39fa28327b090400000000|@10083,1,@14354,@10091,@9556| 18122:D4,16|fb082b352c372a35292bfa1c307e0600|@10093,1,@14355,@10092| 18123:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14356,@10092,@1039,@9510| 18124:D5,24|fb0a29362dfa292e2d372e382f39fa28327b090400000000|@10083,1,@14357,@10095,@9584| 18125:D4,16|fb082b352c372a35292bfa1c307e0600|@10097,1,@14358,@10096| 18126:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14359,@10096,@1039,@9510| 18127:D5,24|fb0a29362dfa292e2d372e382f39fa28327b090400000000|@10083,1,@14360,@10099,@9568| 18128:D4,16|fb082b352c372a35292bfa1c307e0600|@10101,1,@14361,@10100| 18129:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9511,1,@14362,@10100,@1039,@9510| 18130:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14363,@10103| 18131:D6,104|fb0c2c353fa003222c362d37292efa700c29352806a00309292c3bfa6b317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa34103b502c3643000000000000|@9511,1,@14364,@10104,@1039,@9510| 18132:D3,8|fb02293642000000|@9515,1,@14365| 18133:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14366| 18134:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14367,@10108,@920| 18135:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14368,@10109| 18136:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14369,@10110| 18137:D4,8|fb02fa1c10000000|@10113,1,@14370,@10112| 18138:D4,24|fb0c0b020033332b3333220d34fa210c502935661f060000|@10117,1,@14371,@10116| 18139:D12,328|fb170b020034352806a0030f1a5101220c692a3b452a465050021a3c320c1a47012a336a3c3b2c22106b293b692d2a452c4650260429352a363b220d299291031229362b3caa292b25042504511e113b6502012a65293ba203033c0205291a0f01a803041a1101103b502928403bda220e299291032929352a362a352b362968012f932c2aa90303faf6103b50302d3b2de3502d250726061e273b270602013b642a933b2a293ba003032a022c293cb22a3cb22b3cb2302a3bdb293ba00303fac7103b5029352c2a6929316929302509250926071e2f3b2707650b02002c2a221222142216220d2215faa5faab0c5029352a3629030922152218453c46024428142b3b6a2b299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa770c020129220d3ba00303290206280f220e2b6a22182a453b4666270f1f0700|@10119,1,@14372,@18140,@18141,72057594037927935,@789,@864,@1921,@10116,@10118,@1083| 18140:D3,8|fb02293642000000|@9515,1,@14373| 18141:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14374| 18142:D6,80|fb143292910337323533360b02002c2a220e220e220e220e220e220efa4a0c5029352a362a2a69302a2212221222122212221222122212fa3722137b0b12fa38322a35452a3646641f08000000000000|@2425,1,@14375,@10118,@10120,@919| 18143:D42,1080|fb45333629353ca0032129362a37220c352a2c220d0c29220c1a34040c292c69220f2a453b462706f7090429353da0f87b0329362a372b3829352a382210352210352211363b0629221122111a09046b293b691a0a04221132221533220f220e30221768090b0200331afc032b1a00040c5029352a36291afe030c291a01040c2c22121a02040c2992910396293522113b3bef293ba003051af5030250293db1292810b1293cb2292808b4291ae903a503043b5002041ae70310292841bd2a3cb22a2a3b3bf02b3b3b32f050221928082d280834ec50280831b12c2a283ae4502c2a3cb140e4502c95502c27081ab80335292b1aba030c501aad033529392a1ab6032b1aba030c503b1abc030c2f2a691abd03352a2a0c64651abc030c501abf03103b500b020022151abc032b1a40030c502936291ab8030c291abb030c0b0200332d2a3ba00305293ba0023c2a352b362b929103312b352c362c35291aa0030c29352806a0030a29362d352a2aa06502013b030d2d2c2508250826061e3a3b02013b270402013b65650323222422120c221b3729353ba003092936221a2aa06402013b2c2c452a46502603f7a8012c929191031a331a4f030c292226221522151a4c030c2b2a453b465051f788013b2d299291031229362b3caa292b25042504511e113b6502012a652225352226363b061a23032a2c6a2c3caa292b2d6a2f3ba203041a1903103b503b302c1a18030c342a1a1a030c3b061a1c032a693c2c693b0629302d2d6b2922216922191ad7020c29332c22241ad6020c2d35291aff020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a222e3b3bef293ba003051ace020259293eb1292810b1293cb2292808b4291a0a02a503043b5002041a080210292841bd2a3cb22a2a3b3bf02b3b3b32f050223628082d280834ec50280831b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708221335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a53020c2210352d1a5302a003033c02152d3b3bef3ba0030c2d28081a3f0228083bed02013b03051a3b0202012d2b1a3c020c221c3ba203041aea01103b503b221d1a31020c322c3b2d2d3c323c6808280c2a6922202a453b4650262029352a36221635291ade010c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032d0205280f2a2f6a29221d69221c030c2e030622233da002013b02013b222e2b452a462725028729362a37220d35220d35220e362c360b02002c353ba0032a2c36221122100c29352806a00309292b3b1a9f010c0206280b2a2c3b6b2b33a02d2b452a46502604021030362922121a89010c2b2a453b46505129352a360b02002d220e2b22172219221b221822180c5029352a362a220d69220c03092f03032a02013b02013b221b2b452a462712641f0900|@10122,1,@14376,@10123,@917,@18145,@10133,@4254,@7157,@10134,@7407,@3110,72057594037927935,@286,@18930,@253,@638,@210,@10135,@193,@10153,@10166,@10169,@9444,@10171,@4275,@9545,@9546,@18166,@1080,@10172,@2562,@18169,@10175,@10176,@9561,@294,@1098,@3991,@10177,@1039,@10121| 18144:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14377,@10123,@1039,@9530| 18145:D20,576|fb1f2923063729353ba0f88c0129362b3a3ba003352d2c360c29352806a00309292b3b1a32020c0206280b2a2c3b6b29352806a0030a293c3b1a1c02327b0507280b2a3c3b6b65f74c012b3a3ca0f82a012b391a0a020c29353da0030829362968016402013b29929103b32d38352e38363b061af2012a2c6a2c3caa292b2d6a2934360c29352806a0030929333b1ac7010c0206280b2a343b6b2806220d373b6a291acb01692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291aa4010c0201293335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a81010c291a84010c3b1a87010c2e1a8a013b2d2d3c3b3c6808280c2a692713025a2f2e360c29352806a00309292d3b1a29010c0206280b2a2e3b6b280630373b6a291a5e01692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640308291a0701220d7d0d29270665021b2d2c360c29352806a00309292b3bfacd317b0506280b2a2c3b6b6464029e2a3a3ba003441a0601351a0a01351a0e01351a1201351a16012c2e2c2e68052f2306323123073b3323082e1a09010c29352806a0030a293c3bfa84220c7b050a280b2a3c3b6b270602542a3a3ca00327fabd35fac235fac735facc35fad12c2e2c2e68052f2306323123073b3323082efacd220e7b0809fa9635fa9b35faa035faa535faaa2c2e2c2e68052f2306323123073b3323082efa9e220e7b0809644200000000000000|@10125,1,@14378,@1039,@4275,@18146,@10126,@1083,@9561,@3991,@10127,@1098,@10128,@188,@189,@190,@191,@294,@9539,@10124| 18146:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14379,@9497,@2053,@9495| 18147:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14380,@10127,@920| 18148:D14,160|fb19303829fab10c29353da0030829362968016402013b2992910368323533363b06fa9c2a2c6a2c3caa292b2d6a220dfa960c2211fa992c22122d22122212fa970c2e35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa780c29fa7c0c3bfa800c2efa843b2d2d3c3b3c6808280c2a69270e021730fa790c34fa7d220c220c2d220c220cfa42220d7b090c661f060000|@10130,1,@14381,@4275,@18149,@10131,@916,@9541,@9561,@3991,@10132,@1098,@10129,@921| 18149:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14382,@9497,@2053,@9495| 18150:D4,32|fb072b929103132b352c362a3b3b6a2afa260c2a2a69270402013b4200000000|@880,1,@14383,@10131| 18151:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14384,@10132,@920| 18152:D4,32|fb072b929103132b352c362a3b3b6a2afa260c2a2a69270402013b4200000000|@880,1,@14385,@10129| 18153:D3,8|fb023b4200000000|@7170,1,@14386| 18154:D4,40|fb072b9291031c2b352c362a3629030a2afa2d0c2c2a696402062afa232f7d066602013b42000000|@693,1,@14387,@10134| 18155:D3,8|fb02293635420000|@10136,1,@14388| 18156:D31,368|fb192b363ca203061a7d01f75b012b3529353ba003912c3529362a372b3830363cab293ba203051a66010257293cab2d2a691a6301352a2a0c642c3ca203051a5e0102302c3cab2f2a691a4b01352a2a0c642f3cab312a691a4d01352a2a0c64291a4c01691a50012a691a53012a692f2a6927091a51012a691a54012a692c2a6927061a52012a693b3c3b3b2d6805293b691a4b012a691a4e012a693b3c3b3b2d6805270b02c12c363ca203051a400102b62c3529362a372b382c3931363cab293ba203051a3001027c293cab2e2a69fac6352a2a0c642c3ca203051a210102562c3cab302a69faaf352a2a0c642f3da203051a120102302f3cab322a691a0f01352a2a0c64323cab342a691a0101352a2a0c64291a0001691a04012a691a07012a692f2a6927091a05012a691a08012a692c2a6927061a06012a691a09012a692c2a6927061a07012a693b3c3b3b2d6805293b691a00012a691a03012a693b3c3b3b2d6805270c6442000000000000|@10139,1,@14389,@2535,@1318,@155,@1318,@7,@2625,@1323,@5556,@1323,@5556,@2627,@1323,@10140,@2535,@1318,@1318,@1318,@154,@2625,@1323,@5556,@1323,@5556,@1323,@5556,@2627,@1323,@10138| 18157:D6,24|fb082b2a362b37fa27fa2dfa33307b070300000000000000|@10155,1,@14390,@10156,@10158,@10154| 18158:D3,8|fb023b4200000000|@10157,1,@14391| 18159:D3,8|fb023b4200000000|@10157,1,@14392| 18160:D5,32|fb092f3b2f31313131fa2d0c292fa0910306fa2c302d7d083b641f0500000000|@10160,1,@14393,@10159,@335| 18161:D7,232|fb1431353da003032f02d631353fa00317313632372a310c50312aab293ba603032902013b6602b931353ea00319313629300c50293b3bef312aab293ba603032902013b66029a31353ca00328313629293ba6030efaa9310c50293cab25011e0f02023b5050302aab293ba603032902013b65026c3136323733383439342daa220d220cfa820c293ba0031e2c330c2c3b220f220f2f2210fa7622112211220efa760c2e340c2a66023529352d340c502c220e2a929103202a352b362a302d2213221322132213fa470c2a2a2505250526031e1f26030200512d330c50296427061f070000000000|@10162,1,@14394,@357,@10163,@10159,@10161| 18162:D4,144|fb0b2c353da003033b02832c353fa003142c37292da403092c2aab2968016402013b6402692c353ea003182c36293b3bef292ea403092d2aab2968016402013b65024b2c353ca003142c36292da403092c2aab2968016402013b6402312c392c68012a2a2a929103222a352b362b3ba003033b02082b352b2afa2d0c642a2a2505250526031e213b6602012965654300|@10164,1,@14395,@10163| 18163:D7,440|fb13349291f8a8013435220c362a353da0033b1aba01340c5032293ba603101ab601220c0c50293cab25011e1102023b50503133ab2a3b2b220e220e220e220e220e220e220e1a9701220f7b0c0f2a353ba0032c32220daa2b2a220e220e220d220c220c220f0c2b3b2b220f220f220f220f220f220f220f1a650122107b0c102a353fa003262a362b372a220d0c50220d2aab2c3b2b22102210221022102210221022101a390122117b0c112a353ea003282a3629220c0c50293b3bef220d2aab2c3b2b22102210221022102210221022101a0b0122117b0c112a362b372b3ba00304220d02c5342aaa3003033c024d220e2ca403033c0244220e2cab2d2a2a9291032e2a352b362a353ca003052b6801021c2a2cfad10c299291031029352b2a2506250626041e283b6402013b6465020329680165293ba0912991660339fa8f220e0c5029293ba6030ffa8b220f0c50293cab25011e1002023b5050342aab2d2c2b2211221122112211221122112211fa6d22127b0c122b293ba6030ffa58220f0c50293cab25011e1002023b5050220e2cab2d3b2b2211221122112211221122112211fa3922127b0c1265650201321f0a0000000000|@10165,1,@14396,@335,@357,@10161,@10163| 18164:D3,8|fb023b4200000000|@10170,1,@14397| 18165:D4,48|fb082b929103232b352c362a36293fb7293ba091030a2bfa2f0c2d2a696402062bfa25307d07270402013b4200000000|@693,1,@14398,@10171| 18166:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14399,@9497,@2053,@9495| 18167:D5,32|fb072d2da003033b0212fa2c2e2d6a2e3caa292f2ffa290c2b2a696644000000|@1075,1,@14400,@18168,@10172| 18168:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@10173,1,@14401| 18169:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10174,1,@14402| 18170:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14403,@10175| 18171:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14404,@10177,@920| 18172:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14405,@10121,@1039,@9530| 18173:D3,16|fb052b352c372a2a6965420000000000|@10179,1,@14406| 18174:D11,208|fb112c353ba003372c3729353b06292ffad6fadc6b293b692c3b2a9291031a2a352b362a2c220d30face0c2a2a2505250526031e193b66020129652705028f2c353ca003332c36293b2a929103252a352b362a31faaa0c2c3ba00303290205292dfaa50c2b2a2506250626041e233b2704020129656402562c37293b2a9291034a2a352b362a382935293ba00303fa80103b502935293629353da003043b500203fa751029362935293ba20303fa71103b503d2a6928082a69293469322a250d250d260b1e483b270b02012965644300|@10182,1,@14407,@10183,@917,@10188,@10180,@10181,@1921,@9501,@2118| 18175:D4,8|fb02fa1c10000000|@10185,1,@14408,@10184| 18176:D13,144|fb0e2e353da0033b2e362936292f2ffa970c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965313ba003032902072932fa74317e0a270402442e353ca0030f2e362936292ffa670c29316966022f2e353ea003282e36fa5e35fa6335fa6835fa6d35fa722c2e2c2e68052e33333bfa6e2efa730c29220c69270702012d1f0400000000000000|@10190,1,@14409,@10191,@10192,@10193,@188,@189,@190,@191,@294,@10189,@9539| 18177:D11,64|fb0f2d929103312d352e36fa4b35fa5035fa5535fa5a35fa5f2c2e2c2e68052f34343bfa5b2efa600c2f220c220cfa600c2a2a69270902013b44000000000000|@880,1,@14410,@188,@189,@190,@191,@294,@10189,@9539,@10191| 18178:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14411,@10192| 18179:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14412,@10193,@1039,@9530| 18180:D3,8|fb023b4200000000|@10195,1,@14413| 18181:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14414,@10181| 18182:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14415,@10196| 18183:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14416,@10197| 18184:D4,8|fb02fa1c10000000|@10113,1,@14417,@10199| 18185:D3,16|fb052b352c372a2a6965420000000000|@10179,1,@14418| 18186:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14419,@10202| 18187:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14420,@10203| 18188:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14421,@10204,@1039,@9530| 18189:D5,80|fb0929382d2a929103043b500203fa58102a352b362b3ba003042a36020f2b3cab2a2a2505250526031e243b646565293629353da003102d2c362d372d3bfa300c3c2a696402022a3565430000000000|@10113,1,@14422,@953,@10070| 18190:D5,64|fb0f2c929103362c352d362a352b36293529353ba003043b500203fa3b1029362b362c373f2c220c6a292c2c6a302a6932220efa2b0c2a2a69270c02013b4300|@880,1,@14423,@10206,@10205| 18191:D6,96|fb0c2c353fa003222c362d37292efa680c29352806a00309292c3bfa63317b0507280b2a2d3b6b6602352c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a692708020f2c353ca003043b500203fa2c102c3643|@9531,1,@14424,@10212,@1039,@9530| 18192:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14425,@10065| 18193:D16,384|fb21339291f85e01333534362a353ba003572a363b062a2a69293b693b0632220f22112215221422123c3068081a680132221532221422142212221168080b02002f3b2f2f2d1a57010c5029352a362a3ba003042213020722132b1a4a010c22122a452b46270d02fa2a353ca0032f2a362b371a3a012e2d343368051a39012f2d2c34680522112c221122112211221122113022112211221022127b0c122a372b3829350b020022112f2b2216220c36220f2216221622191a05010c5029352a360b0200312d2216221222192efaf90c5029352a363b06292218221afaf26b293b690b0200222022143122202220313b2220312220221f0c5029352a36303529fad60c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba00303290205292efab30c293ba00304220d0206220d2afaac0c293ba003042213020622132afaa50c293ba003042222020622222afa9e0c22212a453146271c6502132e220c3434343468062e0c2d2a35452a3646641f0a0000000000|@10214,1,@14426,@18194,@10216,@10865,@18559,@18560,@10868,@9503,@917,@10175,@10874,@10875,@10876,@10213| 18194:D3,56|fb132b352c3629392a3a0b0200303731382f3339343a31220c220e230631221023072211360c5029352a362a2a6927094200000000000000|@10215,1,@14427| 18195:D54,2008|fb582f9291f8bc072f3530362a3529350a1f004b003e003e003e003e003e003e003e003e00cd033e003e0056043e003e003e003e003e003e00a904dc043e003e003e003e003e00a1053e0003063e003e002a3232323231337b070af763072936293a29352b352c372d382e39220e35220f3622103722113922123a301a71070c300303330205291a6e070c322a1a70070c0b02002c2a1a6f070c5029352a363b33690b020022132e2e2b929103052a929102013b03322b352c362c352d360b02002f2e322c221c221e222f1a42070c5029352a362a2a6931302b250d250d250d260a1e39260a0209292d2a35452a364651260329352a362212230d29299291031b29352a362a351a0e07a003052a68010207292503511e1a3b6502013b64293ba0034b1afa06299291031b29352a362a351ae406a003052a68010207292503511e1a3b6502013b64293ba003041ad806103b503b50293529351abc06a003043b5002041aca06103b502937650217293529351aa306a003043b5002041ab106103b50293764332214221622142d1aa8060c0b0200221431221a221c221b2e1a9f060c5029352a36221c1a9c060c0b02002c2e2220222222212e1a84060c5029352a362a3ba00303300206302b1a81060c221d1a83060c3b2a693b0629222522252d6b29222369222903922222222d2a3ba00312293ba003043b5002041a6106103b503b02742a352b362b929103043b5002041a5306103b502b352c362c352938293629353ca003082938293ca06402013b030d2a362936293b3b32e35051022c2a3629353ba00309293729353ca06402013b03043b5002041a1506103b502b3629372936293b3b34e35026042e2d2509250926071e863b27076502013b223735223836223937223a38223b2306223c23072e2e2e2e2211220c303068080b020022363b2e1ad1052d22420c5029352a362236036b222f299291036029352a362a352938293629353ca003082938293ca06402013b030d2a362936293b3b3be35051022c2a3629353ba00309293729353ca06402013b03043b5002041a7205103b502b3629372936293b3b3be35026042c250626051e5e3b270502013b6402013b22443522453622463722473822482306224923072e2e2e2e342219303068080b020022483b2e22502d224f0c5029352a36221c35291a28050c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652d3ba003042211020722112e1a02050c293ba003032a02062a2a1afc040c293ba003042224020722242a1af4040c293ba003042231020722312a1aec040c293ba003042237020722372a1ae4040c293ba003042259020722592a1adc040c22572a4533462752f7e1032936313532363337343a2d2b2d2c301ac6040c2e1ac9040c220e35220f3622103722113922123a0b0200312e313332312f1ab4040c5029352a362a3ba00303340206342b1aa9040c293ba00304221a0207221a2a1aa1040c221a35221b36221c37221d38221e3a221f2306222023072f2f2f2f220d3030306808221c322b22242224222322257b072529360b02002c2e220d2c34360c5029352a362a3ba00304220e0207220e2b1a56040c220e35220f3622103722113822123a22132306221423072f2f2f2f220c30303068082210322b22182218221722197b07192936293929352b352c361a1f04220d2d3433221068062b3ba003032a02062a2c1a11040c29221022102d2210220f22117b07112936293729352b3829352d392935220e35220f3622103722113522123622133722143922153a0b0200220f2e313332312f1aa5030c5029352a360b020022102d2210221222112e1a07030c5029352a360b020022172d2215221722162e1aa9030c5029352a362a3ba003032f02062f2b1a9e030c293ba00304220c0207220c2a1a96030c293ba003042228020722282a1a8e030c222835222936222a37222b38222c3a222d2306222e23072f2f2f2f220e3030306808222a322b22322232223122337b0733293631353236333734392d1a56030c0b02002c2e3133322e1a71020c5029352a362a3ba003042213020722132b1a3c030c22133522143622153722163822173a22182306221923072f2f2f2f220c30303068082215322b221d221d221c221e7b071e29362a392d3633352c299291033f29352a362a3829352c372a299291032029352a362a381aeb02342210306b2a2a1ae9020c502b250526041e1f260402023b50502c250626051e3d3b270502013b64220c35220d36220e37220f390b02002c34312c1abd020c5029352a3634220d3234331ab6020c293ba003032b02062b2a1ab0020c221735221836221937221a38221b3a221c2306221d23072f2f2f2f220d30303068080b0200221a2a1a8c020c5029352a3629221e302223370c2b3ba003033b02332b3b2a929103182a352b362a2c1a6e020c2a2a2505250526031e173b66020129650b02002c2223220c2c2229360c5029352704221e3b2a929103252a352b362a3829352d3ba00303290206292e1a36020c2c2a2507250726051e233b2705020129650b02002c221622132215221422132f1a7a010c5029352a362a3ba003032f02062f2b1a07020c293ba00303310206312a1a01020c293ba003042217020722172a1af9010c293ba003042230020722302a1af1010c22303522313622323722333822343a22352306223623072f2f2f2f220f30303068082232322b223a223a2239223b7b073b66020d2e2e692d0c2c2a35452a3646641f050000000000|@10219,1,@14428,@10220,@10221,@10222,@9463,@10225,@68,@1652,@1701,@826,@10234,@10054,@10349,@10350,@10351,@2430,@2430,@7173,@10352,@10175,@10354,@10355,@10356,@10357,@10358,@10359,@10360,@10381,@9534,@10382,@10383,@10384,@18278,@10389,@9524,@10390,@10391,@10392,@10393,@10394,@18287,@10396,@10403,@10407,@10413,@10414,@10415,@10426,@10427,@10428,@10429,@10218| 18196:D4,32|fb082b929103132b352c362a3629352bfa260c2a2a69270502013b4200000000|@880,1,@14429,@10220| 18197:D5,72|fb0a2b9291033f2b352c362a352938293629353da00303fa47103b5029353ba00314293729353ca0030729362935640202293664020529362935642dfa2a0c2a2a69270702013b42|@880,1,@14430,@4323,@10221| 18198:D9,112|fb1b2c3ba0030f2b3ba003043b500203fa76103b02562c352d362d929103043b500203fa6b102d352e362c36293529362f3a2afa630c2afa670c0b03002e2e2bfa660c5029352a362b37220e2c2c220e6b292b6929352a366929352a362a2a6922152214fa4a0c2a2a69271843000000|@2305,1,@14431,@2304,@2304,@10224,@10223,@4249,@10222| 18199:D5,72|fb0d2b929103382b352c362a380b02002c353da0030d2c362f352b2a452b465051020a2e352a2a45fa3646505029352a362a2a6930fa310c2a2a69270a02013b4200000000000000|@880,1,@14432,@1296,@10224| 18200:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@14433,@10223| 18201:D7,88|fb16313629352936323533362b220d3434fa5d0c313532363337343a0b02003332303231312ffa500c5029352a362a3ba00303340205342bfa460c293ba00303330205332afa410c22162a452c4627111f07000000000000|@10227,1,@14434,@10228,@9534,@10233,@10226| 18202:D5,88|fb0f2e929103052d929102013b03422e352f362f3530362c3729353da003043b500203fa4b103b5029362a373c340c2b3b3b2ce3502a3b3b220de3503c3b2b316b302f220e220efa2f0c2a2a69270a02013b1f0400000000|@2132,1,@14435,@10229,@10228| 18203:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14436,@10233| 18204:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14437,@10226| 18205:D10,80|fb0d2f2ffa620c302a30302e382f39303afa5d0c293ba00303fa5d103b503b5029fa5d0c3e2a69332d3434fa5b0c34313036220c220c3337fa560c293ba003032a02052a2afa510c2c2a6927071f0500|@10236,1,@14438,@10237,@10238,@3994,@3997,@10276,@10278,@10235| 18206:D4,96|fb0e2c929103562c352d362a3829352938293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba003033c02013d66300c2c31fa230c2a2a69270602013b4300|@880,1,@14439,@10237| 18207:D5,56|fb0f3131fa4a0c293b2a929103222a352b362a2c220d220d31220e220e220efa370c2a2a2505250526031e213b6602012965641f07000000|@10240,1,@14440,@2562,@10239| 18208:D45,1912|fb5e3235293829352a362c35220e362af838072c38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a65642f38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba203041a0907103b503b503b2a1a07070c2214352215363b061a03072a2c6a2c3caa292b2d6a2f3ba0030422190249333ba203041ad806103b503b503b342c1ae5060c302a1ae7060c220c3ba203041abd06103b503b503b220d2e32321ad7060c3b061ad9062a693c2d693b0629312d2d6b2922226927081acc06221a221d6a22112d3131220c221e221e221e3332341abc060c28051abe061ac3062c6b33929191f84201221435293b3bef293ba003051ab30602543e2ab1292810b1293cb2292808b4291aa706a503043b5002041aa506103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082865e4502b28092871e4502b40282de4503128082d280b34ec502b95502b2707293b3bef293ba003051a6906025a293eb1292810b1293cb2292808b4291a4506a503043b5002041a4306103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12832e4502c2a3db12829e4502c95502c2708220c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aed050c2c1af005a003033c02152c3b3bef3ba0030c2c28081adc0528083bed02013b03051ad80502012c2a1ad9050c3b1adc050c342c3b2d2d3c3b3c6808280c2a69221e2a6929222e69270ef7df043b34299291031229362b3caa292b25042504511e113b6502012a65221f352220363b062b3caa3b062a3caa2f3ba203041af504103b503b503b302b2e3131301a86050c22193caa2227352c2aab293ba203041a7b05103b503b50293ba60341293cab293ba203041a6605103b503b50293ba60313293cab2d2a3b6a64330c29331a55050c6402102c3ba203041a5105103b503b503d2d6929311a3c050c6502102b3ba203041a3805103b503b503d2c6928082a692e3ba003051a2c0502081a27052f1a2b050c291a2e050c28072a2d3c6b222435293b3bef293ba003051a200502543e2ab1292810b1293cb2292808b4291a9404a503043b5002041a9204103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082865e4502b28092871e4502b40282de4503128082d280b34ec502b95502b2707293b3bef293ba003051ac604025a293eb1292810b1293cb2292808b4291a3204a503043b5002041a3004103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12832e4502c2a3db12829e4502c95502c2708220f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ada030c2c1add03a003033c02152c3b3bef3ba0030c2c28081ac90328083bed02013b03051ac50302012c2a1a1e040c3b1a21040c342c3b2d2d3b3b3c6808280c2a69223135293b3bef293ba003051a0b0402543e2ab1292810b1293cb2292808b4291a5f03a503043b5002041a5d03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082865e4502b28092871e4502b40282de4503128082d280b34ec502b95502b2707293b3bef293ba003051ab1030250292806b1292810b1293cb2292808b4291afc02a503043b5002041afa02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a6d0328082e2c2806ec502c95502c2708221e35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aaf020c2c1ab202a003033c02152c3b3bef3ba0030c2c28081a9e0228083bed02013b03051a9a0202012c2a1af3020c22263ba203041a0102103b503b503b22271afe020c342c3b2d2d3b3b3c6808280c2a69223b2a69223c3caa222f929103043b5002041ae202103b50222f3529352935291adc020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba0030422310206280f2a22336a3d2241aa224735293b3bef293ba003051aa30202543e2ab1292810b1293cb2292808b4291acf01a503043b5002041acd01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0502b28082865e4502b28092871e4502b40282de4503128082d280b34ec502b95502b2707293b3bef293ba003051a49020252293db1292810b1293cb2292808b4291a6d01a503043b5002041a6b01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c2708223f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a1d010c2c1a2001a003033c02152c3b3bef3ba0030c2c28081a0c0128083bed02013b03051a080102012c2a1a09010c333ba20303fa71103b503b503b341a97010c220c2c3b2d2d3c3b3c6808280c2a6922142a692922616922172a692742271102243bfad20c3b1a75010c1a79011a7e013b2d2d3c3b3c6808280c2a692d2a6929221469270527061f080000000000|@10242,1,@14441,@1080,@10243,@18210,@10244,@2562,@10246,@18214,@18215,@10252,@1017,@915,@10263,72057594037927935,@286,@10264,@9561,@294,@1098,@3991,@10265,@10266,@9497,@2053,@9495,@3989,@10267,@1099,@10263,@10264,@1070,@10268,@10263,@10269,@10270,@10271,@10274,@10263,@1158,@10275,@10241,@921,@4425| 18209:D5,40|fb082c2ca003033b0218fa34061b0f273eba2a2a692f3caa2930fa2c0c2b2a692705430000000000|@1075,1,@14442,@1296,@10243| 18210:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14443,@9497,@2053,@9495| 18211:D5,32|fb072d2da003033b0212fa2c2c2f6a2e3caa292f2ffa290c2b2a696644000000|@1075,1,@14444,@18212,@10244| 18212:D3,32|fb0829373daa2c352d362a2d36ab2c2a3c6a642a0c28082a6927044200000000|@10245,1,@14445| 18213:D7,88|fb0c2f2fa003033b024c2f3daa2e2fab293ba20303fa59103b503b50293ba60312293cab2b2a3c6a642f0c292ffa490c64020f2a3ba20303fa46103b503b503b2b6928082a69333caa2934343434fa380c2b2a6927061f05|@1075,1,@14446,@9497,@2053,@9495,@10246| 18214:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10247,1,@14447| 18215:D4,24|fb082b352c362d372c362d37fa22307b0703000000000000|@10249,1,@14448,@10248| 18216:D5,184|fb132c299291036b29352a362a35293829352938293629353ca0030a220e3629353ca06402013b03102a36293622103629362b2aa0270402272a3629353ba0030a220f3629353ba06402013b03102b36293822113629382b2aa0270402013b6403052f680102082e250826071e693b270702013b64293ba0030930352930fa502f7e092935293529362a372c363335343633352b2aab2d2a3b6a642b0c28082a69303b69302a69fa2f2a692c2a6928142a3b6a270e641f05|@10251,1,@14449,@10250,@921| 18217:D6,104|fb0c2c353fa003222c362d37292efa700c29352806a00309292c3bfa6b317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa34103b502c3643000000000000|@9511,1,@14450,@10250,@1039,@9510| 18218:D26,616|fb3a220c9291f85602220c35220d362a362b372c382a2211221122111a61020c2c929103082c35293ca06402013b038f29352806a00309293c3b1a4b020c0206280b2a3c3b6b28152a28056a2b352806a003092b3b3b1a2f020c0206280b2c3b3b6b1a2b021a30020c28072a2c3c6b28052d1a2b022c6b2f352806a003092f3b3b1a04020c0206280b303b3b6b1a18021a05020c28072a2c3c6b220d221b221b221b221b221b221b221b221b221b221b1afd010c28052e2c2c6b270af79c01220e1af4010c2b353da0030a2b3729352805a06402013b03043b5002041ae101103b502b362c372936291adc010c292e1ade010c1ae2012a690b0200312d2b1adf010c50293529221622162216221c221c221c1ad3010c220e221e221e221e1acf010c29352806a00309293d3b1a59010c0206280b2a3d3b6b221f2220ab293ba203041ab301103b503b50293ba60315293cab3b2a3c6a6422200c2922201aa0010c6402031aa10128082a69293b69291a26010c28072a303c6b22162226222622261a8c010c29352806a00308293d3bfaf70c0206280b2a3d3b6b22272228ab293ba203041a5101103b503b50293ba60315293cab3c2a3c6a6422280c2922281a3e010c6402031a4f0128082a69293b6929fac50c28072a303c6b293b69322a6929fab50c28072a22153c6b2220352806a0030922203b3bfa8f0c0207280b22213b3b6b1a1a01fa900c28072a2c3c6b2223352806a0030922233b3bfa6b0c0207280b22243b3b6b1afe00fa6c0c28072a2c3c6b28052a31faf76b222b2239223922392239223922392239223922392239fa5e0c28052f2c2c6b272827060202facf1f0b0000000000|@10254,1,@14451,@10255,@1039,@1576,@1099,@921,@3990,@10252,@10256,@10257,@10260,@2100,@18222,@4254,@9556,@10262,@9497,@2053,@917,@10253,@919,@1576,@3990,@921| 18219:D9,144|fb0b2e353fa003242e362f3729303030fa960c29352806a00309292c3bfa91317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa72103b503b50293ba60312293cab2d2a3b6a64330c2933fa620c64020f2c3ba20303fa5f103b503b503d2d6928082a69270702112e353ca003043b500203fa4b103b502e361f0400000000|@9511,1,@14452,@10255,@1039,@9497,@2053,@9495,@9510| 18220:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@14453,@10256| 18221:D5,48|fb092b929103242b352c362a352806a003043b500203fa30102a362b372a2a692cfa2d0c2a2a69270602013b42000000|@880,1,@14454,@4266,@10260| 18222:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@10261,1,@14455| 18223:D9,144|fb0b2e353fa003242e362f3729303030fa960c29352806a00309292c3bfa91317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa72103b503b50293ba60312293cab2d2a3b6a64330c2933fa620c64020f2c3ba20303fa5f103b503b503d2d6928082a69270702112e353ca003043b500203fa4b103b502e361f0400000000|@9511,1,@14456,@10262,@1039,@9497,@2053,@9495,@9510| 18224:D9,144|fb0b2e353fa003242e362f3729303030fa960c29352806a00309292c3bfa91317b0509280b2a2d3b6b66025e2e353da003472e362f372a352a352935322aab293ba20303fa72103b503b50293ba60312293cab2d2a3b6a64330c2933fa620c64020f2c3ba20303fa5f103b503b503d2d6928082a69270702112e353ca003043b500203fa4b103b502e361f0400000000|@9511,1,@14457,@10253,@1039,@9497,@2053,@9495,@9510| 18225:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14458,@10265,@920| 18226:D7,136|fb0d3131a003033b027c2f2fab293ba20303fa8c103b503b50293ba6033d293cab293ba20303fa78103b503b50293ba60312293cab342a3c6a64300c2930fa680c64020f333ba20303fa65103b503b503b3469292ffa510c65020f323ba20303fa4e103b503b503b336928082a69343caa29220c220c220c220c220c220cfa380c2b2a6927051f07|@1075,1,@14459,@9497,@2053,@9495,@10266| 18227:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14460,@10267| 18228:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14461,@10268,@920| 18229:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14462,@10270,@920| 18230:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14463,@10274| 18231:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14464,@10275,@920| 18232:D5,24|fb052b3da003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14465,@10241,@920| 18233:D7,136|fb1b2e929103052d929102013b03742e352f362f3530362c362d372e3829352938293529353da003043b500203fa71103b5029362a373c22100c333ba20303fa67103b503b503d346928082a69333b69332a69fa5b2a692c2a6928142a3b6a323b3b33e350313b3b2219e3503c3b322c6b22132212221a221afa3d0c2a2a69271602013b1f040000|@2132,1,@14466,@9501,@2118,@10277,@10276| 18234:D5,56|fb0d3092910329303531362a352b362c372d38220c220c220c220c220cfa310c2a3333333333fa300c2a2a69270402013b1f060000000000|@880,1,@14467,@10279,@10278| 18235:D12,168|fb10303529382a38293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a656434030b220c3333220dfa790c022d293ba003033002253bfa730c2a3ba20303fa73103b503b503b2bfa720c32fa763b2d2d3c3b3c6808280c2a69662d3529220cfa6a0c29352806a00308293c3bfa650c0206280b2a3c3b6b29fa613b6a2812fa632f2c6b3d2a69270b1f0900|@10281,1,@14468,@10282,@3991,@1080,@10347,@10348,@10280,@1039,@1638,@1639| 18236:D47,1544|fb5b2e3529353036303531363b061a0f062a2c6a2c3caa292b2d6a3138293629353ca003042937022829353ba003042936021e29363b2a299291031229362b3caa292b25042504511e113b6502012a6564293ba203041acf05103b503b503b2a1acd050c0b02002d3ba003092931452214465002403b061abe052a220d220f6b333caa292b2d6a0b0200332d22102c1aae050c5029353c061aad052a693c2c693b062922142d2d6b29222169220e34452a4650260e29352a361a9405299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a78051a7d050c02031a6f051a7c05299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a60051a4d050c02031a57051a5c05299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a40051a1d050c02031a37051a3c05299291031829352a362a352806a00309292503511e143b02013b6502013c6403091a20051aed040c02031a1705291a1b056928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ab7040c020129293b692e2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a82040c020129293b691ab8042a6928142a3c6a293b69220d2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a3f040c020129293b6922122a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a09040c020129293b691a47042a691a4a042a691a4d042a691a50042a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291ac3030c02012928051a22042b1a26046b280f1a28042b6a28051a29042b1a2d046b3b1a30040c3b1a33040c2b1a36043b2d2d3c3d3c6808280c2a69223322352227222c223c22292f1a22040c222b3ba003cc22353b3bef293ba003051a1604024e28062ab1292810b1293cb2292808b4291a0904a503043b5002041a0704103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501adf0328082d28082806ec50223d28082d280e34ec502b95502b27072228372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ab4030c2d1ab703a003033c02152d3b3bef3ba0030c2d28081aa30328083bed02013b03051a9f0302012d2a1a50030c3b1a9b030c322c3b2d2d3c3b3c6808280c2a69270af746022225929103043b5002041a8203103b5022253529352935291a7c030c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965223a3b3bef293ba003051a5803024e28062ab1292810b1293cb2292808b4291a0303a503043b5002041a0103103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a210328082d28082806ec50224228082d280e34ec502b95502b2707222d372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291aae020c2d1ab102a003033c02152d3b3bef3ba0030c2d28081a9d0228083bed02013b03051a990202012d2a1a4a020c3b1ab5020c220e2c3b2d2d3c3b3c6808280c2a69343ba00303290206280f220c2b6a22463b3bef293ba003051a9202024e28052ab1292810b1293cb2292808b4291a2d02a503043b5002041a2b02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501a5b0228082d28082805ec50224e28082d280d34ec502b95502b2707293b3bef293ba003051a3e020252293db1292810b1293cb2292808b4291ad201a503043b5002041ad001103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12829e4502c95502c2708224635293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a7a010c2c1a7d01a003033c02152c3b3bef3ba0030c2c28081a690128083bed02013b03051a650102012c2a1a16010c22453ba20303fa45103b503b503b22461a8a010c332c3b2d2d3c3b3c6808280c2a69271c27371f040000000000|@10284,1,@14469,@18237,@1080,@10285,@18239,@10286,@18245,@10293,@10296,@1083,@10297,@10298,@10297,@10298,@10299,@10302,@4005,@916,@921,@915,@1438,@921,@10303,@916,@10325,@4645,@916,@3991,@10327,@10328,@10329,@9915,72057594037927935,@286,@9561,@294,@1098,@10344,@10271,@10345,@9915,@10346,@4816,@1158,@10283| 18237:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14470,@9497,@2053,@9495| 18238:D5,40|fb082c2ca003033b0218fa34061b0f273eba2a2a692f3caa2930fa2c0c2b2a692705430000000000|@1075,1,@14471,@1296,@10285| 18239:D6,152|fb0a2b352c362d372a3ba20303faa1103b503b502a3ba603532a3cab293ba20303fa8d103b503b50293ba60314293cab2d2a2d6a642e380c292f37fa7b0c6402232a03112c3ba20303fa75103b503b503b2d69020f2c3ba20303fa64103b503b503d2d69292f36fa4f327e082903112b3ba20303fa4a103b503b503b2c69020f2b3ba20303fa39103b503b503d2c69664200000000000000|@9496,1,@14472,@9497,@2053,@9495| 18240:D8,72|fb093b2f299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa3c103b503b2afa3d0c292ffa400c312afa430c2b3232fa450c302b452a4627051f04000000|@10288,1,@14473,@1080,@10289,@10290,@2562,@10287| 18241:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c2e2a69654300|@1075,1,@14474,@10289| 18242:D5,32|fb072c929103152c352d36fa2b2b2f6a2a2ffa2c0c2a2a69270402013b430000|@880,1,@14475,@18243,@10290| 18243:D3,32|fb082b352c362b37352b2aab2d362a3c6a642b0c28082a692704420000000000|@10291,1,@14476| 18244:D4,48|fb0c2d929103252d352e362e352f362f352b2aab2e2a3c6a642b0c28082a692e3434fa240c2a2a69270802013b440000|@880,1,@14477,@10287| 18245:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10292,1,@14478| 18246:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14479,@10327,@920| 18247:D37,776|fb40319291030a313529362992916502013b03043b500269303b3bef293ba003051afc02024e28102ab1292810b1293cb2292808b4291aef02a503043b5002041aed02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0501ac50228082d28082810ec50220f28082d281834ec502b95502b27071ac1021ac6022b1aca026b65103b50313532362a3629352c352d372e382f392b220f1ab7020c2a3b2a929103242a352b362a353ba0030b2a363b2a69293b696502012b2a2a2505250526031e233b660201296528062f3b6a293b691a86022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a61020c020129293b69291a5e020c2806313b6a2a3b692a2a691a57022a691a5a022a691a5d022a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a10020c0201292215030429f72501221e1a27020c2213353da0030b22133729352805a06402013b03043b5002041a1202103b502213362214372936291a0b020c292e1a0d020c1a11022a690b0200312d2b1a0e020c502935221b352806a0030a221b3d3b1a03020c0207280b221c3d3b6b1afe011a03020c28072a2c3c6b1a0102299291031829352a362a352806a00309292503511e143b02013b6502013c6403091ae5011a6a010c02031adc012d222f222d222f0c2b1ad8016928142a3b6a293b69291ab3010c28072a2f3c6b293b69291aa5010c28072a22343c6b293b69332a69221a2a69291aaf010c293b691ab0012a691ab3012a691ab6012a691a31012a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fae50c0201292722221892919103032902402211352806a0030a22113b3b1a1e010c0207280b22123b3b6b1a61011a1e010c28072a2c3c6b221b2225222522252225222522251a4e010c28052b2f2c6b27041a4a01299291031829352a362a352806a00309292503511e143b02013b6502013c6403081a2e01fa6c0c02031a260128051a29012b2d6b271c1f070000|@10331,1,@14480,@10332,72057594037927935,@286,@16,@815,@10333,@10334,@1438,@1083,@10335,@921,@921,@921,@10336,@10257,@10260,@2100,@18251,@4254,@1039,@9991,@1099,@9870,@9872,@10337,@10339,@921,@921,@915,@9991,@10329,@10340,@10343,@10330| 18248:D6,104|fb0c2c353fa003222c362d37292efa700c29352806a00309292c3bfa6b317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa34103b502c3643000000000000|@9511,1,@14481,@10334,@1039,@9510| 18249:D6,80|fb0b2b929103402b352c3629fa5a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa31327d092927060202fa2f42000000000000|@2425,1,@14482,@10335,@1083,@921| 18250:D4,40|fb092b929103182b352c362a352b3628062b2b6a2cfa290c2a2a69270602013b4200000000000000|@880,1,@14483,@10336| 18251:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@10261,1,@14484| 18252:D6,80|fb0b2b929103402b352c3629fa5a0c293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa31327d092927060202fa2f42000000000000|@2425,1,@14485,@10339,@1083,@921| 18253:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14486,@10344,@920| 18254:D4,32|fb072b929103112b352c362a372afa280c2a2a69270402013b42000000000000|@880,1,@14487,@10345| 18255:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14488,@10346,@920| 18256:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14489,@10283,@920| 18257:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14490,@10347,@920| 18258:D6,104|fb0c2c353fa003222c362d37292efa700c29352806a00309292c3bfa6b317b0507280b2a2d3b6b6602372c353da003202c362d372a352a352f3530362b352b2aab2e2a3b6a642b0c28082a69270802112c353ca003043b500203fa34103b502c3643000000000000|@9511,1,@14491,@10280,@1039,@9510| 18259:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14492,@10235| 18260:D4,32|fb082b929103132b352c362a3629352bfa260c2a2a69270502013b4200000000|@880,1,@14493,@10349| 18261:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14494,@10350| 18262:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14495,@10351| 18263:D3,16|fb062b352c3629392b2a696642000000|@10353,1,@14496| 18264:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14497,@10354| 18265:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14498,@10355| 18266:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14499,@10356| 18267:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14500,@10357| 18268:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14501,@10358| 18269:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14502,@10359| 18270:D8,144|fb172f929103832f3530362a3629352c3a2a3729353da003043b500203fa89103b5029362a372d383c220f0c2c3b3b2ce3502b3b3b2211e3502c352f35280ea003182f36293629352b382a221422143b22152efa5b0c270402182f352808a003043b500203fa51103b502b22102210fa4f0c3c3b2c2c6b342213221322132213fa460c2a2a69270e02013b1f05000000|@880,1,@14503,@10362,@9539,@10365,@10361,@10360| 18271:D11,104|fb1329383b3b6a293b69fa742c36692afa760c2931312dfa770c2e383b3b6a293b69fa743137692afa5e0c29220d220d2dfa5d0c220e353da0031c220e3629220f220ffa5b0c293b6929fa5c0c28072a343c6b27040201293bfa552bfa5a6b270b44000000000000|@10369,1,@14504,@18273,@9545,@9546,@18272,@9547,@1099,@1100,@915| 18272:D5,48|fb0829363729353ca003043b500203fa3710293629352806a00309293c3bfa30307b0505280b2a3c3b6b654200000000|@10373,1,@14506,@10370,@1039| 18273:D5,48|fb0829363729353ca003043b500203fa3710293629352806a00309293c3bfa30307b0505280b2a3c3b6b654200000000|@10371,1,@14505,@10370,@1039| 18274:D4,32|fb082b929103132b352c362a3629352bfa260c2a2a69270502013b4200000000|@880,1,@14507,@10381| 18275:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14508,@10382| 18276:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14509,@10383| 18277:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14510,@10384| 18278:D4,24|fb0a2b352c362b362c372d382e392f3afa1e327b09030000|@10386,1,@14511,@10385| 18279:D5,112|fb1d2f35303631373239333a0b0200220d2e313332312ffa6f0c5029352a362a3ba003042212020622122bfa630c22123522133622143722153822163a22172306221823072f2f2f2f220c30303068080b02002219220c2e221b2d221f0c5029352a362a2a6927181f07000000000000|@10388,1,@14512,@9534,@10387| 18280:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14513,@10387| 18281:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14514,@10389| 18282:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14515,@10390| 18283:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14516,@10391| 18284:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14517,@10392| 18285:D4,32|fb082b929103132b352c362a3629352bfa260c2a2a69270502013b4200000000|@880,1,@14518,@10393| 18286:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14519,@10394| 18287:D4,16|fb0829363c2b372c382ffa1c307b0703|@10395,1,@14520,@7132| 18288:D6,48|fb063e28403bdafa3f453d28403bdafa3f45292b466c502a2a462e476c5029fa370c2f2a0c643c2a0c513b6543000000|@10397,1,@14521,@18290,@18289,@5801| 18289:D4,16|fb04fa242a362d6a4200000000000000|@10401,1,@14524,@18292| 18290:D12,312|fb1a2b352805a0f828012b362c382938293629353da0033e2d361a33010c2c38293629353da003043b5002041a29011029362a372a321a27010c1a2b012a690b02002e2d2b1a28010c50293527092a0c64312a317d093003d42b38293529353da003c629362935293ba203b92f35293b3bef293ba003051afe000248282c2ab1292810b1293cb2292808b429faf2a503043b500203faf110292841bd2a3cb22a2a3b3bf02b3b3b32f050facc28082d2808282cec503128082d283434ec502b95502b2707293b3bef293ba00304fac1024b292819b1292810b1293cb2292808b429fa9da503043b500203fa9c10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa8228082e2c2819ec502c95502c2708270432370c503b02013c6502013c6502013b270402012c4300000000|@10399,1,@14522,@5801,@4256,@2100,@18291,@4254,@10400,72057594037927935,@286,@10398| 18291:D3,64|fb092936299291032029352a362a352f352a352a2aa003052d680102082c250626051e1e3b270502013b64293ba003033b020829352936296801656442000000|@4260,1,@14523| 18292:D3,16|fb052b2a372b362d7e03000000000000|@10402,1,@14525| 18293:D9,288|fb132e352f3630372f230d29299291031b29352a362a351a1e01a003052a68010207292503511e1a3b6502013b64293ba003431a0a01299291031a29352a362a35faf5a003052a68010207292503511e193b6502013b64293ba00303faea103b5029352935fad1a003043b500203fae010293765021329352935fabca003043b500203facb10293764299103033c025f2d3534352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b03362f36220d362a2aa003283137220f372a2aa0031a33382211382a2aa0030c220c392213392a2aa06502013b6502013b6502013b6502013b650308313b45220c4602202806343b6a2812fa562bfa5b6b3d2a69293b6932220f326a220d2b452a46270527061f04000000|@10405,1,@14526,@64,@1652,@1701,@826,@1639,@10404| 18294:D11,360|fb252c230d29299291031b29352a362a351a6c01a003052a68010207292503511e1a3b6502013b64293ba0034b1a5801299291031b29352a362a351a4201a003052a68010207292503511e1a3b6502013b64293ba003041a3601103b503b50293529351a1a01a003043b5002041a2801103b502937650217293529351a0101a003043b5002041a0f01103b50293764299103033b02cf3235293ba003103b06296801220c3b3b2ce3502a65020229353c310c3c3b2b32366b293b69220c35220d36220e352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b28152a28096a2213352214362215352b2aab220d2a3b6a642b0c28082a692806221a3b6a280622113b6a293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa6e0c020129293b6929fa6c0c28072a333c6b2805220f2bfa666b3d2a69293b69293ba003042218020922182afa5922247e27271d661f05|@10410,1,@14527,@64,@1652,@1701,@826,@1083,@1099,@921,@10409| 18295:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14528,@10409| 18296:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14529,@10413| 18297:D5,64|fb0c2c9291032e2c352d362a390b02002d2afa440c5029352a362e030b302b69342a452b46640209302a69342c452a46642708020afa292c2a35452a36466443|@2128,1,@14530,@10414,@2127| 18298:D7,96|fb0c2c3829352e362f372a29352816a0030c2936292502501e0d3b64022329352805a0030c2937292502501e203b6402102935280ba003043b500203fa3a1029376429fa3b0c2d2a2dfa3d0c293ba00303320207322afa38347e0b2707430000|@10417,1,@14531,@10418,@10421,@10422,@10416| 18299:D6,56|fb0f2b9291032c2b352c362a352b362c392d3afa3b06fa402a2d6a2d3b69292b3b3b6b293130306b32fa350c2a2a69270c02013b42000000|@880,1,@14532,@1296,@294,@10421| 18300:D7,96|fb162d929103562d352e362a38fa69061b0f273eba28062b2b6afa5c061b0f273eba28062b2b6a3d2d2b6a302afa510c293ba0910303fa50103b503c06340630062e062a22132d2214302e6806220e22142214fa3b0c2a2a69271102013b4400|@880,1,@14533,@1296,@7407,@10423,@10422| 18301:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14534,@10416| 18302:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14535,@10426| 18303:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14536,@10427| 18304:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14537,@10428| 18305:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14538,@10429| 18306:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14539,@10218| 18307:D23,568|fb1f2c352d362e372f38303a331a40020c34299291032829352a362a3729352c382a381a3202220d22132d6b2a2a1a2f020c502e250826071e263b270702013b64220c2e1a21020c220d2a2a3ba00312293ba003043b5002041a1402103b503b024b2a352b362b929103043b5002041a0602103b502b352c362c372935293729353da003043b5002041af401103b5029362a372a3b3b32e350293b3b2214e350302f250b250b26091e5d3b270965220e2e1ad4010c220f2a2d32220d220d2f220c22152218220c220f221636221b1abf010c22102d2a3ba00312293ba003043b5002041ab201103b503b024b2a352b362b929103043b5002041aa401103b502b352c362c372935293729353da003043b5002041a6a01103b5029362a372a3b3b32e350293b3b2217e350302f250b250b26091e5d3b270965220f3522103622113722123922133a0b0200220e2e313332312f1a53010c5029352a362215230d29299291031b29352a362a351a4201a003052a68010207292503511e1a3b6502013b64293ba0034a1a2e01299291031b29352a362a351a1801a003052a68010207292503511e1a3b6502013b64293ba003041a0c01103b503b5029352935faf1a003043b5002041aff00103b50293765021529352935fad9a003043b500203fae8103b5029376403262212fae40c502212299291031529352a362a221bfada0c50292503511e143b6502013b6402013b220e3ba00303fac9103b503b50220efac80c3e2a69293069221e2a453046271c1f0400000000000000|@10433,1,@14540,@10434,@18309,@10396,@10436,@2430,@2430,@10437,@10440,@10445,@2430,@2430,@9534,@65,@1652,@1701,@826,@10551,@10432,@3994,@3997| 18308:D4,32|fb082b929103132b352c362a3729352bfa260c2a2a69270502013b4200000000|@880,1,@14541,@10434| 18309:D4,16|fb0829363c2b372c382ffa1c307b0703|@10435,1,@14542,@7132| 18310:D4,32|fb062c929103102c363d2d0c2a2efa280c2a2a696602013b4300000000000000|@880,1,@14543,@10436| 18311:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@14544,@10441,@10440| 18312:D7,40|fb0d2c3729352938fa362f690b02002d2d2bfa340c50293629fa350c29fa39220c7d0d0000000000|@10443,1,@14545,@18313,@4254,@9444,@10442| 18313:D3,120|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b6442000000000000|@10444,1,@14546| 18314:D4,48|fb082b929103232b352c362a36293fb7293ba091030a2bfa2f0c2d2a696402062bfa25307d07270402013b4200000000|@693,1,@14547,@10442| 18315:D55,2016|fb73220f9291030f220e92910306220d929102013b02013bf8bd07220f352210362a3529352c37293529352f392935313a293533363438221b35221c36221c35221d36221d3b3bef343b3bef2a3ba00304220c0259293ba00304221f02502a2ab1292810b1293cb2292808b4291a8807a503043b5002041a8607103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050222628082d2808220cec50280832b1221428082e2c220cec502c95502c27083b30299291031229362b3caa292b25042504511e113b6502012a6532929103043b5002041a3307103b50323529352935291a2e070c220d1a30072a9291032d2a352b362b929103082b36293ba06402013b030a2a36291a19070c6402012b2a2a2505250526031e2c3b66020129652225230d29299291031b29352a362a351af906a003052a68010207292503511e1a3b6502013b64293ba0034b1ae506299291031b29352a362a351acf06a003052a68010207292503511e1a3b6502013b64293ba003041ac306103b503b50293529351aa706a003043b5002041ab506103b502937650217293529351a8e06a003043b5002041a9c06103b5029376403051a990602012b3b2a299291031229362b3caa292b25042504511e113b6502012a650b02002d929103082d36293ba06402013b030b2d352a2a453b465050020b1a62062a2a35452a36465129352a3629220faa341a56060c292b2a929103152a352b362a2caa2a2a2505250526031e143b6602012965221d3ca00382293ca0037a220d1a2f062a2aa003033c02622a9291035c29929103542a352b362b352c362c2b2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b65030d2b2a2506250626041e5c3b02013b270402013b02013b6503052d3ca002013b02013b02013b221b221f1ab7050c3b22102215220d1ab4050c3b2a299291031229362b3caa292b25042504511e113b6502012a652234352235363b061a95052a2c6a2c3caa292b2d6a22273ca0037b2f34ab34220fab29221eab293ca003172b3ba203041a7505103b503b503b2c6928082a69640251293ba403041a6605103b503b50293ba203041a6105103b503b503b2a2d1a5e050c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a3a050c0201296566023d220d221caa22182a321a2e050c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291afa040c020129663c061a00052a69220d3c1a00050c291a0305691a07052a6922222a69661a05050c22163ca09122203ba203041ab604103b503b503b2221220d2c331aef040c22282a1af0040c22403b2a9291039a2a352b362a2c2a9291037f2a352b3631299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba09103033c022d2c299291032029352a362a35293530352a2aa003052d680102082c250626051e1e3b270502013b64293ba0916403032c02092b1a790469292e69642b2a2506250626041e7d3b2704020129652a2a2505250526031e993b6602012965293ba003032a02062a2a1a4e040c3c2a693b0629220c332d6b2922456922443522453922462307221903033b021922462246224b3b224e220c221622152219221d221d1a1d040c1a21042224221622182216221c224a224a22212219220d221c221a221a221222102255681129222f22132241223b223a322219220c22181af2030c3b221b299291031229362b3caa292b25042504511e113b6502012a6529221fa003043b5002041ad003103b503235291acf030c293b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f3ba0030329020629301aab030c293ba003032e0205280f2a306a221c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a7d030c221a35221b35221c3b3b2ce3221b1a7303a003033c0217221b3b3bef3ba0030d221b28081a5d0328083bed02013b03051a59030202221b2d1a59030c22281a5b030c322c3b2d2d3c3422376808280c2a6922469291910304225e0217225e35225f363b061a3d032a2c6a2c3caa292b2d6a27052254372935293729353da003043b5002041a2503103b5029362a372a3b3b224de350293b3b2267e32234032b224b3169225a224e224d226b226b226b226b226b226b226b226b226b226b226b1af2020c2a2a6965f75e010b020032224b1ae90222482d2253226e22502211224922461adf020c5029352251929191030429f700013b2252299291031229362b3caa292b25042504511e113b6502012a65224c3b3bef293ba003051aaf02025b293eb1292810b1293cb2292808b4291a1b01a503043b5002041a1901103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050225428082d280834ec50280831b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708220d372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291ad8010c2d1adb01a003033c02152d3b3bef3ba0030c2d28081ac70128083bed02013b03051a0b0202012d2a1a0c020c313ba203041a0b01103b503b503b321a01020c332c3b2d2d3b3b3c6808280c2a69270b22503caa29220e6922522c69226122552254227222722272227222722272227222722272227222721a95010c2a2a692c2a69270a275b02013b1f0e0000000000|@10447,1,@14548,72057594037927935,@286,@10448,@10451,@920,@10452,@64,@1652,@1701,@826,@920,@3733,@10467,@1437,@10468,@10469,@18329,@2118,@10476,@1080,@10479,@1083,@10480,@18333,@801,@2702,@365,@284,@10484,@2562,@10486,@10488,@10489,@18340,@10499,@10532,@10175,@10535,@9561,@294,@1098,@10536,@10537,@18369,@10437,@10445,@10538,@10540,@10176,@1098,@1070,@10446| 18316:D5,32|fb072b929103132b352c362afa2a0c2afa2e0c2a2a69270402013b4200000000|@880,1,@14549,@10452,@10451| 18317:D15,624|fb0d2b350a1f003e003e00440058009800c0003e003e003e003e00c9003e003e00f500fe0012013e003e00c101d0013e003e0006023e003e000e023e003e003e003e003e001a4002f723022b3629372935291a3b020c91293b692704f70f022b362936291a31022a9291032d2a352b362b929103082b36293ba06402013b030a2a35291a1a020c6402012b2a2a2505250526031e2c3b660201296565f7cf012b3629362a37291af7010c29929103082936293ba06402013b03072b1ae201307d07292704f7a7012b37291ad3012d7d042b362929929103043b5002041ac9011029352a36293ba003042a350207292503511e1e3b65641aa7012d7d042b36291a9e012d7d042b3629372935291a81010c91293b692704f755012b3729352929353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b6403051a440102572929352805a0032229382938293629353da003043b5002041a2f0110293729250526041e223b2704022c29352806a0030e29362935292503511e383b65021729353ea003043b5002041a0601102936291a0701307d07646502a62b36293529fac10c91293b696602972b362935293ba00303faee103b502929929103043b500203fae71029352a36293ba003042a350207292503511e1d3b6564fa962e7d052b3629fa8e2d7d042b3729352929352805a0032129382938293629353da003043b500203fa8510293729250526041e213b2704022a29352806a0030e29362935292503511e373b65021529353ea003043b500203fa5d10293629fa77307d0764654200|@10454,1,@14550,@920,@10455,@920,@10452,@1977,@920,@10457,@10460,@10463,@10464,@1977,@10453| 18318:D4,464|fb112b1ae2010c29353fa0f88e0129362b37352a293ba003033b025f29352a362c382b382a3629353ca003092a3629353ca06402013b030f2b3629362c3629362b2aa0270402252b3629353ba003092b3629353ba06402013b030f2c3629382d3629382b2aa0270402013b6403033c02082c250626051e623b27056403092c37352968016402f12a293ba003033b022929352a362a38293629353ca0030b2a36293633362aa06502013b03033c02082b250526041e2c3b27046403062c38680102b62a293ba003033b022a29352a362a38293629353ca0030c2a3629363323092aa06502013b03033c02082b250526041e2d3b27046403062c396801027a2a293ba003033b022a29352a362a38293629353ca0030c2a3629363323082aa06502013b03033c02082b250526041e2d3b27046403062c3a6801023e2a293ba003033b022a29352a362a38293629353ca0030c2a3629363323072aa06502013b03033c02082b250526041e2d3b27046403072c2306680102013b293ba003033b021929352938293629353ca0030b2a362936293336a06502013b6666022e29352805a0032629362a382a3ba003192938293629353ca0030b2a362936293136a06502013b6502013b6502013b644200000000|@10456,1,@14551,@4275| 18319:D5,32|fb082b929103162b352c362a3629fa280c912bfa2b0c2a2a69270502013b4200|@880,1,@14552,@10455,@10463| 18320:D5,32|fb082b929103162b352c362a3629fa280c912bfa2b0c2a2a69270502013b4200|@880,1,@14553,@10455,@10453| 18321:D4,56|fb092b9291032a2b352c363b2b299291031229362b3caa292b25042504511e113b6502012a652afa270c2a2a69270402013b420000000000|@880,1,@14554,@10467| 18322:D7,88|fb112c9291034a2c352d362a3529352c362d372e38323ca003122c929103043b500203fa4b103b502c35020afa4a0628192e2b2e6b64fa4806fa45062e2c2c2c3131680632220efa3f0c2a2a69270c02013b430000000000|@880,1,@14555,@2207,@1296,@749,@10468| 18323:D10,96|fb0a2d9291031b2d352e36303ba003032a02052a31fa610c292b3131fa62327b06092c3ba20303fa5f103b503b503b2dfa5e0c2c3ca00311293ba003032f02072f2afa542e7e07021429fa540c293ba00303300207302afa4f2f7e0864641f04|@10471,1,@14556,@10472,@10469,@1080,@10473,@10474,@10475,@10470| 18324:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14557,@10472| 18325:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c3c2a69654300|@1075,1,@14558,@10473| 18326:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14559,@10474| 18327:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@14560,@10475,@920| 18328:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14561,@10470| 18329:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14562,@9497,@2053,@9495| 18330:D5,48|fb092d2da003033b02242d2caa293ba20303fa34103b503b503b2a6928082a69303caa293131fa280c2b2a6927054400|@1075,1,@14563,@2118,@10479| 18331:D9,224|fb0e2d929103d42d352e362d2fab3b2c299291031229362b3caa292b25042504511e113b6502012a652a2aab3b2e299291031229362b3caa292b25042504511e113b6502012a65293ca003162a3ba20303faa5103b503b503b2b6928082a6964024d293ba40303fa97103b503b50293ba20303fa93103b503b503b2a2cfa910c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa6e0c020129653b30299291031229362b3caa292b25042504511e113b6502012a65342aaa302a220dfa4d0c2c2a69270a02013b44000000|@10482,1,@14564,@2118,@10476,@1080,@10481,@1083,@10480| 18332:D5,48|fb092d2da003033b02242d2caa293ba20303fa34103b503b503b2a6928082a69303caa293131fa280c2b2a6927054400|@1075,1,@14565,@2118,@10481| 18333:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10483,1,@14566| 18334:D5,40|fb092f2fa003033b0218fa342c2e3133326806303caa2931313131fa2b0c2b2a69661f0500000000|@1075,1,@14567,@18335,@10484| 18335:D3,40|fb0a29392a3aaa292b38ab292c37ab2e352f362a2f36ab2c2a3c6a642a0c28082a69270642000000|@10485,1,@14568| 18336:D4,8|fb02fa1c42000000|@10487,1,@14569,@9846| 18337:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14570,@10488| 18338:D10,336|fb27220c92910318349291031033929103083335293ba06402013b02013b02013b0351220c35220d36220d35220e36220e362d372935293729353da003043b5002041a2301103b5029362a372a3b3b33e350293b3b2215e350313030221622162216221622162216221622161a010122177b0d17220c9291030d349291030533929102013b02013b03c0220c35220d36220d35220e36220e35220f362a220e220efad50c220c35220d35293caa220f3b3b2ce322133522102aab293ba20303fabf103b503b50293ba60314293cab342a3b6a6422110c292211faad0c64020f333ba20303faaa103b503b503d346928082a69220e372935293729353da003043b500203fa63103b5029362a372a3b3b220fe350293b3b221de3220efa7b0c28072a323c6b3c3b22112c6b292222692217221622152c2225222522252225222522252225fa2b22267b0d26321f0b000000|@10491,1,@14571,@10437,@10489,@10490,@9497,@2053,@9495,@1099| 18339:D5,88|fb0b2d9291034c2d352e362e299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba00303fa36103b503b5029352936302a0c2d3333fa2d0c2a2a69270702013b44000000|@880,1,@14572,@10492,@10490| 18340:D8,176|fb120b02002c23102f2e230b2f230a30230c31230e2ffab00c5029352a362e230a2f230b30230c31230d2d33230e3b220c230f68082f23073023083123093b2d3423060c2c3ba00303290205280f2d2b6a31363ca0030329024e313a3cab32393339ab293ba20303fa66103b503b50293ba60315293cab2b2a3c6a6434380c29220c37fa530c64020f2a3ba20303fa50103b503b503b2b6928082a69292e220e36fa4522117b050f2708420000000000|@10496,1,@14573,@9534,@9497,@2053,@9495,@10495| 18341:D7,192|fb102b3ba803043b500203facb102b3ba203033c02042bfac7a60303faca103b502b283fb1292840b4292841bd2a2808b3293ba003043b50021c292808b229292ca003043b50020c2c2a3be450293cb125011e1350503b3c3b3b2934a203412b2db82c2880a0031e2f2c2be4502a3caa2c3cb13b3c2b2d250725072507250726031e275102172a3caa2d3cba2b2a2f2d250725072507250726031e405150020e2c3ba003043b5002052e2b2ee45026042a95502f2b69312a34fa35337b050a00|@10498,1,@14574,@2210,72057594037927935,@2212,@10497| 18342:D4,112|fb0a2d3540a0031b2d362e372f382b3030fa750c2b3131fa6f0c402b2b2e6b2705024c2d352810a003032d02422d35280fa003122d362e37292f2ffa4b0c280f2c2b6a6602292d352805a0031c2d362e372f382a3030fa300c2a3131fa2a0c28052e2c2c6b2705020628112e2e2e6b44|@2199,1,@14575,@10497| 18343:D51,1872|fc28012c230d29299291031b29352a362a351a5307a003052a68010207292503511e1a3b6502013b64293ba0034b1a3f07299291031b29352a362a351a2907a003052a68010207292503511e1a3b6502013b64293ba003041a1d07103b503b50293529351a0107a003043b5002041a0f07103b502937650217293529351ae806a003043b5002041af606103b502937642991030631220f2f7d0f220d336928062a3b6a293b693c320c3c3b2b1ad9066b293b69220d35220e36220f352b2aab2f2a3b6a642b0c28082a69291ac2063b6a280d1ac3062b6a3c22130c3c3b2b2d6b293b692217352218362219352b2aab22102a3b6a642b0c28082a69291aa1063b6a280d1a92062b6a3c221d0c3c3b2b2d6b293b692221352222362223352b2aab221a2a3b6a642b0c28082a69291a78063b6a280d1a61062b6a3c22270c3c3b2b2d6b293b69222b35222c36222d352b2aab22242a3b6a642b0c28082a69291a4f063b6a280d1a30062b6a3c22310c3c3b2b2d6b293b692235352236362237352b2aab222e2a3b6a642b0c28082a69223a35223b36223c352b2aab22292a3b6a642b0c28082a69223f352240362241352b2aab22242a3b6a642b0c28082a692244352245362246352b2aab221f2a3b6a642b0c28082a69224935224a36224b352b2aab221a2a3b6a642b0c28082a69293b692f2a69220c2a6922122a6928142a3c6a22191ab2053b6a28121ab3052c2c6b3d2a69293b69293ba003042222020722222a1aa3050c293ba00304222d0207222d2a1a9b050c293ba003042238020722382a1a93050c293ba003042243020722432a1a8b050c293ba00304224e0207224e2a1a83050c225d35225e36225f37225f2c0c293b6922662a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a4b050c0201290b02002c352806a0030e1a42052d692a3b452a465050021b3c22660c1a38052a226a6a3c3b2c316b293b692d2a452c4650260429352a363d2270226d22706b29220c692b220e2b6a226c35226d36226e352b2aab22652a3b6a642b0c28082a692806303b6a2a1af6043b6a28121af7042c2c6b2274352275362276352b2aab226d2a3b6a642b0c28082a69227922110c2a1adb043b6a28121adc042c2c6b227c35227d36227e352b2aab22752a3b6a642b0c28082a69280622843b6a2a1abf043b6a28121ac0042c2c6b3c22830c3c3b2b2284386b293b692287352288362289352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b228d35228e36228f352b2aab220c2a3b6a642b0c28082a6922881a7d040c28072a2c3c6b2805311a78042c6b3d2222693d221b693d221469293b692b2a692d2a693d3069293b69293ba003042216020722162a1a54040c293ba003032c02062c2a1a4e040c293ba003042237020722372a1a46040c22a03522a13622a2352b2aab228f2a3b6a642b0c28082a6922a53522a63622a7352b2aab229e2a3b6a642b0c28082a69291a19043b6a28121a1a04312c6b3d2a6922ad3522ae3622af352b2aab22922a3b6a642b0c28082a6922b23522b33622b4352b2aab22ab2a3b6a642b0c28082a69291ae8033b6a28121ad903312c6b3d2a6922ba3522bb3622bc352b2aab22952a3b6a642b0c28082a6922bf3522c03622c1352b2aab22b82a3b6a642b0c28082a69291aaf033b6a28121a9803312c6b3d2a6922c73522c83622c9352b2aab22982a3b6a642b0c28082a6922cc3522cd3622ce352b2aab22c52a3b6a642b0c28082a69291a76033b6a28121a5703312c6b3d2a69293b69220e2a69221c2a69222a2a693c22d70c3c22d80c3c3b2b22d9376b293b6922dc3522dd3622de352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b22e23522e33622e4352b2aab220c2a3b6a642b0c28082a6922dd1ac6020c28072a2c3c6b22103ba203041a0603103b503b503d22116928082a69293b69291aa2020c28072a2f3c6b2805220d1a9c022c6b3d2a69293b6922193ba0030329020729221a1ad5020c293ba003042216020722162a1acd020c221a3ba203041ab302103b503b503d221b6928082a6928102a692c3ba00303290205280f2d2b6a228b22ff0c402a2c22226b3c22f80c3c3b2b2d6b293b6922fc3522fd3622fe352b2aab2f2a3b6a642b0c28082a690b02001305012d1309011a72022d130901130801131101130e011a6a020c5029352a360b02002d2d130b01130a012d1a5d020c5029353c1309010c3c3b2b130a01366b293b69130d0135130e0136130f01352b2aab2f2a3b6a642b0c28082a6928133b2b3b6b1313013513140136131501352b2aab220c2a3b6a642b0c28082a69130e011a90010c28072a2c3c6b2805311a8b012c6b3d2a69293b69293ba003042210020722102a1aec010c293ba003042214020722142a1ae4010c22473ba003032902072922481adc010c293ba003042224020722242a1ad4010c293ba003042281020722812a1acc010c293ba0030422c6020722c62a1ac4010c1323013513240136132501352b2aab222d2a3b6a642b0c28082a692e3ba00303290205280f2f2b6a192101661f0a0000000000|@10502,1,@14576,@64,@1652,@1701,@826,@1951,@9519,@1639,@9521,@10406,@10503,@10503,@1639,@10505,@10506,@10507,@10508,@10509,@1083,@18349,@18350,@9519,@1639,@9521,@1639,@10406,@1639,@1099,@921,@10510,@10511,@10512,@9519,@1639,@9521,@10406,@10503,@2118,@10513,@10514,@10515,@10517,@9504,@10519,@10520,@10521,@10522,@10523,@10501| 18344:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14577,@10505| 18345:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14578,@10506| 18346:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14579,@10507| 18347:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14580,@10508| 18348:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14581,@10509| 18349:D3,8|fb02293642000000|@9515,1,@14582| 18350:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14583| 18351:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14584,@10510| 18352:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14585,@10511| 18353:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14586,@10512| 18354:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14587,@10513| 18355:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14588,@10514| 18356:D3,8|fb053b2e2e2e6b44|@10516,1,@14589| 18357:D6,152|fb1333353436220c37312c0c293b69220e2a6928142a3c6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa730c0201290b02002c352806a0030dfa6b2d692a3b452a465050021a3c22100cfa622a22136a3c3b2c316b293b692d2a452c4650260429352a3622102210221722170c29220c692b220e2b6a22162e452a4627101f09000000000000|@10518,1,@14590,@1083,@18359,@18358| 18358:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14592| 18359:D3,8|fb02293642000000|@9515,1,@14591| 18360:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14593,@10519| 18361:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14594,@10520| 18362:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14595,@10521| 18363:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14596,@10522| 18364:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14597,@10523| 18365:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14598,@10501| 18366:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14599,@10535| 18367:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@14600,@1071,@10536| 18368:D4,32|fb072b929103122b352c362a3b692afa270c2a2a69270402013b420000000000|@880,1,@14601,@10537| 18369:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14602,@9497,@2053,@9495| 18370:D3,8|fb023b4200000000|@10539,1,@14603| 18371:D20,464|fb1f329291f81b0132353336220e35220f363b061ad1012a2c6a2c3caa292b2d6a22133b3bef293ba003051ac201025b293eb1292810b1293cb2292808b4291ab601a503043b5002041ab401103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221b28082d280834ec50280831b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c27081a7a012215342f6b0b02002f2e2e220f2d221a221a221a221a221a221a1a65010c5029352a363435293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a40010c321a4301a003033c0215323b3bef3ba0030c3228081a2f0128083bed02013b03051a2b010201322a1a2c010c3b1a2f010c302c3b2d2d3b220c3c6808280c2a6922202a453b46271802a8303caa220d35220e3632352b2aab2d2a3b6a642b0c28082a69343ba203041afc00103b503b503b220c2214220dfaf60c221322120c343ca0031d2a3ba00303290205292bfae70c28072a2e220e6b22122a453b4665024f2afadb0c293ba003032a02052a2afad60c28072a2f3c6b3b3b3b22112d6805293b6922103ba20303fa9c103b503b503b2211faba0c28142a3b6a2b3ba00303290205280f2c2b6a22182a453c46270827081f0b000000|@10542,1,@14604,@18372,@3622,72057594037927935,@286,@18373,@10540,@9561,@294,@1098,@1070,@10546,@1080,@10547,@10548,@10549,@10550,@10541| 18372:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14605,@9497,@2053,@9495| 18373:D7,128|fb0b2b352c362a2c38ab3b2a3c6a642a0c28082a692d37929103092d3736293ba06402013b030c2d37352a2a69293b696502353b2e37299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa42103b503b503b2a2cfa400c293037fa420c65302f360c293ba003032a02072a2afa38337e092706420000|@10544,1,@14606,@1080,@10545,@2100,@10543| 18374:D4,32|fb072d2da003033b0213280b2c2f3b6b2e3caa292f2ffa200c2b2a6966440000|@1075,1,@14607,@10545| 18375:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14608,@10543| 18376:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14609,@10546,@920| 18377:D4,56|fb0d2e2ea003033b02292c352d362d352b2aab322a3c6a642b0c28082a69293c69343caa29220c220c220cfa230c2b2a6927081f04000000|@1075,1,@14610,@10547| 18378:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14611,@10548| 18379:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@14612,@10549,@2341| 18380:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14613,@10550| 18381:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@14614,@1276,@10541| 18382:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14615,@10446,@920| 18383:D6,64|fb0e0b02002e2afa4f0c5029352a362a3b2a929103182a352b362a2c2ffa410c2a2a2505250526031e173b660201296503062afa33317d083b27054200000000|@10553,1,@14616,@10554,@10552,@10551| 18384:D5,104|fb0d2c9291034f2c352d362a3a2992910319293529352935293ba0030a2b362935293ba06502013b6602013b0b02002e2afa4d0c5029352a362e030c312b69220c2a452b4664020a312a69220c2c452a46642709020afa302c2a35452a3646644300000000000000|@2128,1,@14617,@10554,@2127| 18385:D6,88|fb122d3a2992910346293529352a3729350b02002c2a220cfa560c5029352a362a9291910304220d02212afa4b0c3135293ba003032a02052a2afa440c333b3b2ce350323b3b2fe3503c66270902012d6444000000000000|@10556,1,@14618,@10557,@10558,@10555| 18386:D5,136|fb0f2d929103702d352e362a362e299291033729352a362a35292ea003033c0219293b3bef2e3b3befa0030d2928082f2808313b3befed02013b03033c02082a250426031e363b6602013b640b02002e2a34fa4c0c5029352a362e030c312b69220d2a452b4664020a312a69220d2c452a46642709020afa2f2d2a35452a36466444000000000000|@2128,1,@14619,@10557,@2127| 18387:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14620,@10558| 18388:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14621,@10555| 18389:D11,288|fb152c3a2992910319293529352935293ba0030a2b362935293ba06502013b6602013b03f32d352e3929293ba003051a0601021629352a362a353ba003042a360207292503511e1c3b65642b3b3bef293ba00304faea024828122ab1292810b1293cb2292808b429fadea503043b500203fadd10292841bd2a3cb22a2a3b3bf02b3b3b32f050fab828082d28082812ec503328082d281a34ec502b95502b2707293b3bef293ba00304faad024b29281ab1292810b1293cb2292808b429fa89a503043b500203fa8810292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa6e28082e2c281aec502c95502c270829fa65fa6b0c29fa6f0c3b3e3b3b2d68053b3b2b336b220e230c2a2a22107d113b64430000000000|@10560,1,@14622,@5229,@10561,72057594037927935,@286,@10559,@5050,@5052,@5338| 18390:D23,704|fb272b352c362d372e3a3b33299291031229362b3caa292b25042504511e113b6502012a652d230d29299291031b29352a362a351aa102a003052a68010207292503511e1a3b6502013b64293ba0034b1a8d02299291031b29352a362a351a7702a003052a68010207292503511e1a3b6502013b64293ba003041a6b02103b503b50293529351a4f02a003043b5002041a5d02103b502937650217293529351a3602a003043b5002041a4402103b502937640345220c3b2a9291031b2a352b362a36292d1a31020c2b2a2506250626041e193b27040201296529299291031529352a362a341a18020c50292503511e143b6502013b646402013b220d929103043b5002041a0102103b50220d3529390b02002211352806a0030f1af3012212692a3b452a465050021b3c340c1ae9012a220e6a3c3b2c22166b293b692d2a452c4650260429352a36220d2a0c34220e0c220c3ba203033c0206220c1ac201a803041ac401103b503b50220c28403bda1abe0122133622162215372e221c2f680722122212221222126b0b0200221c31221c221031312f1a9f010c5029352a362903a8221c038e2218230d29299291031b29352a362a351a8701a003052a68010207292503511e1a3b6502013b64293ba003491a0b01299291031b29352a362a351a5d01a003052a68010207292503511e1a3b6502013b64293ba00303faea103b503b50293529351a3601a003043b500203fadd103b502937650216293529351a1e01a003043b500203fac5103b502937646502013b031022183b222122121a07011a0c010c02013b0214221c03033b020d22183b222122121afd00faf30c31933b292ba903033b021a332a3bdb2a2a2224221f2227fae90c502a3cb12502501e1e3b64642221220c3c220d221f22272224222337222436facf0c293ba00304220f0206220f2afac80c293ba003032f0205280f2a316a271e1f05000000000000|@10564,1,@14623,@65,@1652,@1701,@826,@10565,@10432,@10567,@18392,@18393,72057594037927935,@789,@18394,@10576,@66,@10734,@7132,@10735,@10736,@10740,@10563| 18391:D4,264|fb0a2c350a1f003e003e0041003e003e004c003e003e003e003e003e003e003e003e00550074009c00ac003e003e003e003e00d1003e003e00da003e003e003e003e003e002b02bc2c362936292efad02f7e062c37292dfac72e7e052c36293629352936293ba003033c020329929103032f02032a3069270402892c38292d2a9291031a2a352b362a38292dfa920c2b2a2506250626041e183b2704020129656402612c362d372a2efa750c2a2afa70307e072c37292d2a929103172a352b362a2cfa5c0c2a2a2505250526031e163b660201296564022c2c36292dfa422e7e052c36292d2a929103172a352b362a2cfa2e0c2a2a2505250526031e163b66020129656443000000|@10566,1,@14624,@10565| 18392:D3,8|fb02293642000000|@9515,1,@14625| 18393:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14626| 18394:D16,376|fb36292306932c2aa903041a8201103b503b502a23062d3bdb293caa2c2306932f2aa903041a7001103b503b502d2306303b2de30b0300323a220c2a929103043b5002041a5901103b502a352b362b3ba0030e2a2e2a35452a36462a3a4751020e2b3cab2a2a2505250526031e3150515129352a362b37323ea403c72a3b1a27010c220d3735220e3736220f3737221037392211373a0b0200312e313332312f1a0d010c5029352a360b02001a090122112b221d380c502935221b3735221c3736221d37370b02003330302cfaf20c5029352a36221732313332faec0c293ba003032b02052b2afae70c293ba00304220f0206220f2afae00c22263735222737362228373722293738222a373a222b372306222c3723072f2f2f2f220e30303068080b020022272d2b2234360c502935220c3ba00303290206280f220d2b6a2726022e2a3bfa610c29fa950c220e392211aa293ba20303fa8f103b503b503d2a6928082a692cfa880c28072a2c3c6b2706270c4200000000|@10570,1,@14627,@829,@864,@953,@10565,@9534,@1460,@10403,@10407,@10571,@10572,@10569,@2118,@1099| 18395:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14628,@10571| 18396:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14629,@10572| 18397:D6,64|fb0b2b929103332b352c362a3729353da003043b500203fa3f1029362935293ba20303fa3b103b503d2a6928082a692efa360c2a2a69270802013b4200000000|@880,1,@14630,@10573,@2118,@10569| 18398:D18,448|fb222c353b33299291031229362b3caa292b25042504511e113b6502012a651ab6013c220c299291033929352a362a362b392e3caa0b03002f220c220c3122152e1a9c010c5029352a362b372b2b2b6a2932220d251025102510260d1e373b270d02012b66291a7f010c03033c028e2b230d29299291031b29352a362a351a6f01a003052a68010207292503511e1a3b6502013b64293ba0034b1a5b01299291031b29352a362a351a4501a003052a68010207292503511e1a3b6502013b64293ba003041a3901103b503b50293529351a1d01a003043b5002041a2b01103b502937650217293529351a0401a003043b5002041a1201103b50293764653c2c1a0e010c0b0400302f1a0d013b2d1a10010c5029352a362b372c382c2c2c2c6b0b0400221003092e2a1afd000c50020a2933453246314730485029352a362b372c382c2c2c2c6b2b293ba003033b024b29929103043b500203fad6103b502935293ba003033c02322a929103043b500203fabe103b502a353b2aa203033b02192b929103043b500203faae103b502b3629250426031e4d3b646464642991faa12223222222242d222468062c22242b2222fa960c221f2a452c46271d1f07000000|@10578,1,@14631,@10579,@10580,@10666,@64,@1652,@1701,@826,@10668,@10670,@10672,@10678,@2207,@2360,@18451,@10577| 18399:D38,1080|fb1730350a1f003e003e004d003e003e00e3003e003e003e003e003e003e003e003e00f4007d01a902fe024b033e003e003e00af033e003e00bf033e001a043e003e0023042f2c2a35452a36462a374764f7df03303629352935280ea0037b2936293629352b3729352f363039220c382e2d2b1ada030c291add030c1ae1032e22132f221368053136293ba00318322b221622161ad1030c22112a35452a36462a3747640230299291031d2936332a2d22182218311ab8030c22122a35452a36462a37476464020e221422112a35452a36462a374764270c020c312e2a35452a36462a37476465f74903303731382a32322c32321a8103337b080a3036293629352b37293531382c2b2b1a43030c291a6e030c1a7203220e220e220e6b2f36293ba00318302b221222121a3b030c220d2a35452a36462a3747640243299291031d2936312a2d22142214311a22030c220e2a35452a36462a3747646402210b0300221322152b1a27030c5029352a362b37220e2c6922142a452c462b472708270af7af023037313832392b3530352a29353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b64030e293c220e2e1ab6021abb020c02013b2b29352805a0032229382938293629353da003043b5002041aa402103b502937652502501e233b64024229352806a0030d293629352502501e373b64022e29353ea003043b5002041a7c02103b5029363b2a299291031229362b3caa292b25042504511e113b6502012a656464293ba203041a5a02103b503b503b2a1a58020c2f2a2a929103242a352b362a352b382a341a4b020c292f2c1a4c020c2d2a2508250826061e223b2706020129652e0628192b2b336b292212221234221222121acd0122137b08133036313732380b03002e220e220e30220e2e1ab3010c5029352a362b373229352805a0030c2937292502501e0d3b6402132935280ea003092936293629356502031ae40164292d69220e2a452d462c47270cf72e013036313732382b351ad001061b0f273eba28062b2b6a293b6928052a1ac4011ac9011ace016805292f1acf010c2c3b6922113322123422122e1ac7010c220e2a35452a36462a374764270b02e130363137323833392c35313532362b3c1aab010c293528053b2b2d3b68053b06291aa2011aa7011aac016b293b692c302b1aaa010c1aae01322217220e6b34220e220c2c1aa7010c2b2a22182218220e1aa3010c22132a35452a36462a3747642710027d303631372a32322c3232fab6337b080a30363138313629353ea003202936333534372e2c220d220d220d1a6d010c3e2a69332d452a462c472705022c29353fa003043b5002041a5901103b50323533372d220c220c2f220c1a4f010c3e2a69322d452a462c4727046602122e302dfa6a2e7b05082e302dfa612e7b05081f06000000|@10582,1,@14632,@10583,@10589,@18408,@10591,@10603,@10580,@10610,@18416,@10612,@10617,@7132,@10457,@10618,@1080,@10620,@10621,@10627,@5335,@1296,@1346,@1344,@885,@7407,@10632,@9449,@7177,@10639,@917,@9944,@18428,@10645,@10655,@10662,@10663,@10581| 18400:D15,240|fb152d352e372f380b02002d353ea003092d36292808a06402013b03a5fae9352ffaed0c29faf10c2e353da003272e3629353ea0030829362992916402013b030d29362935293629fad60c66020429facf0c6402012e29352806a003043b500203fac51029362b929103082b36293ba06402013b030f2b35293528053b2b2d3b6805650219faa9061b0f273eba28062b2b6a3f2f692c3b3b2ce3502a2704fa982a2c6a0b0200220c2d2bfa940c5029352e3b6929fa920c220c2c452a4650260c021efa8c32690b0200302d2bfa720c5029352a3629fa810c302c452a4650260729352a362a220cfa770c2a2709440000|@10585,1,@14633,@83,@10586,@10587,@4275,@7165,@1296,@18403,@4254,@10588,@18405,@10584,@7407| 18401:D4,80|fb0d2c929103462c352d362a352b362c37302ca003033c0219303b3bef2c3b3befa0030d3028082d28082f3b3befed02013b030e2a2a692d32fa2d0c2a2a696502072c31fa22327e09270502013b4300|@7160,1,@14634,@10586| 18402:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14635,@10587| 18403:D3,24|fb042b35292b37a003062a36680102013b64420000000000|@7168,1,@14636| 18404:D4,32|fb072b929103132b352c362a3b3b6a2afa260c2a2a69270402013b4200000000|@880,1,@14637,@10588| 18405:D3,120|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b6442000000000000|@10444,1,@14638| 18406:D4,56|fb0f2b929103292b352c362a352b362936293fb7293ba0912c36293cb7293ba091302d2b6a32fa280c2a2a69270c02013b42000000000000|@880,1,@14639,@10584| 18407:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14640,@10589| 18408:D4,32|fb0c0b03002d36302f37303831392efa270c5029352a362b372b2b2b6a270742|@10590,1,@14641,@10580| 18409:D7,104|fb0e2c3629353ca0032329362e352f37323729fa6b0c2d2a33220d220d2210fa670c3c2a692e2a2f6a2707023629353fa003043b500203fa57102d352e372e3b6930373bfa522b6a64320c333729fa300c2c2a2d220f6b293b693c2a69312a326a2709641f040000|@10593,1,@14642,@10594,@10596,@10592,@1627| 18410:D5,88|fb0a2b353fa003312b362c3729fa610c2992910320293528062a3b6a292e3bfa570c29352806a0030829362968016402013b6602013b66021c2b353ca003152b3629352806a0030829362968016402013b6402013b420000|@10595,1,@14643,@10594,@1039| 18411:D6,120|fb0e3092910356303531362a352b362c372d38220c929103052b929102013b030b220c352c352a2aa06502013b0318343b69292efa5a0c2c220d0c2a2f2b2f6b293269270402122d220d220d220d220d220dfa440c2f2a6964270602162e3b692d373bfa3b2b6a642f0c2a322b306b293b69661f06000000|@10598,1,@14644,@10597,@10596,@1627| 18412:D6,224|fb0a2c3ba003032b02ce2b3ba003032c02c62c929103043b500203fadb102c352c929103043b500203facd102c352a2aa003362e929103043b500203faba102e352f929103043b500203fab4102f362f929103043b500203faa6102f362a2afaa70c2c2a692704026e2e929103043b500203fa84102e352e929103043b500203fa76102e352a2aa2032730929103043b500203fa6310303531929103043b500203fa5d1031362932fa5e0c2b2a696602252f929103043b500203fa3c102f3530929103043b500203fa36103036322afa370c2b2a696665654300000000000000|@10599,1,@14645,@2207,@2360,@10597| 18413:D6,96|fb0d2d3629353ba0032029362a37303531372c220d33220d34220efa5b0c3b2a2e6a2c2a2d6a2706023229353fa003043b500203fa4a102e352f372f3b6931373bfa452b6a64330c2a312b220f6b293b693b2a220f6a2f2a306a2707641f0600|@10605,1,@14646,@10606,@10604,@1627| 18414:D6,136|fb0f3092910363303531362a352b372c382935220c352a2aa003033c02192a3b3bef2a3b3befa0030d2a28082b28082d3b3befed02013b031b220c3b69292ffa5f0c2e220e0c2a220e2b22136b293369270402122e220e220e220e220e220efa470c302a6964270702162e3b692c373bfa3e2b6a642f0c2a2f2b346b293b69661f06000000000000|@10607,1,@14647,@10597,@10606,@1627| 18415:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14648,@10610| 18416:D5,32|fb0c0b0300fa31302f36303731382efa2f0c5029352a362b372b2b2b6a270742|@10590,1,@14649,@10611,@10580| 18417:D7,88|fb0a2c352d362e372a353ca0030d2a362932fa5c0c3c2a6965022a2a353ba003102a362b372a33fa4f0c3b2a2c6a6602142a353ea0030d2a362932fa430c3e2a696502012a313b692b2afa3c0c312f452c462a4727064400|@10614,1,@14650,@10615,@10616,@10613,@10597| 18418:D5,64|fb132c929103342c352d362a352b362c372d380b0300220c2f2bfa3c0c5029352a362b372b2b2b6a34342b346b220d2212fa2d0c2a2a69271002013b43000000|@880,1,@14651,@10612,@10615| 18419:D5,64|fb132c929103342c352d362a352b362c372d380b0300220c2f2bfa3c0c5029352a362b372b2b2b6a34342b346b220d2212fa2d0c2a2a69271002013b43000000|@880,1,@14652,@10612,@10616| 18420:D5,48|fb0e2c929103252c352d360b0300312f2bfa350c5029352a362b372b2b2b6a31220dfa2c0c2a2a69270b02013b430000|@880,1,@14653,@10612,@10613| 18421:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14654,@10620,@10611| 18422:D7,152|fb0e2b352805a0031c2b382938293629353da003043b500203fa95102937302afa96317e082b352806a0030b2b3629352e2afa842f7e062b353ea003043b500203fa7d102b363b2a293ba00303fa79103b5029352a362a352933a003033c021a293b3bef333b3befa0030e292808342808220d3b3befed02013b03032d020f2d3caa292c2506250626041e423b6466656443000000000000|@10623,1,@14655,@10457,@10621,@10624,@10622| 18423:D5,48|fb082c3ba00303fa3f103b503b502c352d362f3ba003052d2a69020d2f3cab292b30fa2c0c2c2a696565440000000000|@10629,1,@14656,@10628,@10627| 18424:D9,64|fb0c2f9291031f2f353036fa4bfa512b33333333316808fa4f3d2b220d220c33fa4e347b080bfa502f2f2f6bfa523d2b343331fa3b327b080900000000000000|@10633,1,@14657,@18426,@10632,@1238,@10603,@18425,@1444| 18425:D5,32|fb0c0b0300fa31302f36303731382efa2f0c5029352a362b372b2b2b6a270742|@10638,1,@14659,@10611,@10580| 18426:D7,240|fb182b3629353fa003592c352d372e373bfaf52b6a30373bfaee2b6a0b030034230730220d38220e39220f3a2efae10c5029352a362b372b2b2b6a3122103722113822123922133a221423062215360c293b692b2a693e2a6922112a22126a2712028729353ea003043b500203faa9103b5029362992910313293629929103082936293ba06402013b6402013b03043b500203fa8b103b502a3629352a362935313532370b0300220c230732220e38220f3922103a2efa580c5029352a362b372b2b2b6a3322113722123822133922143a221523062216360c293b692b2a693e2a69220d2a220e6a2713644200000000|@10635,1,@14658,@1627,@10580,@10634,@10634| 18427:D4,8|fb02fa1c10000000|@10641,1,@14660,@10640| 18428:D4,16|fb0829363c2b372c382ffa1c307b0703|@10644,1,@14661,@7132| 18429:D17,1240|fb1f2e352d3c1ae7040c2a2a1ae9041aee040c2a357881292c352806a003082c362968016402013b293ba003041ad804103b502935220c2a0c29680166f1f78d046d29352865a003043bf7800429352808a0f8fd012937293b3bef293ba003051aad04024b28162ab1292810b1293cb2292808b4291aa004a503043b5002041a9e0410292841bd2a3cb22a2a3b3bf02b3b3b32f0501a780428082d28082816ec503128082d281e34ec502b95502b2707293b3bef293ba003051a6c04024e29281ab1292810b1293cb2292808b4291a4704a503043b5002041a450410292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b11a2a0428082e2c281aec502c95502c2708293b3bef220f3b3bef2a3ba0030422100255293ba003032b024d2a2ab1292810b1293cb2292808b4291ae003a503043b5002041ade0310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221828082e2c220cec502c95502c2708293b3bef293ba003051ab1030260293fb1292810b1293cb2292808b4291a8503a503043b5002041a830310292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef220c3b3bef2a3ba00304220d0255293ba003032b024d2a2ab1292810b1293cb2292808b4291a0b03a503043b5002041a090310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221528082e2c220cec502c95502c2708270b320c503b64f77b0229352805a0f83601323b3bef293ba003051ad202024c282b2ab1292810b1293cb2292808b4291a9d02a503043b5002041a9b0210292841bd2a3cb22a2a3b3bf02b3b3b32f0501a9d0228082d2808282bec50221128082d283334ec502b95502b2707293b3bef293ba003051a80020260293fb1292810b1293cb2292808b4291a4402a503043b5002041a420210292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef2f3b3bef2a3ba00303300255293ba003032b024d2a2ab1292810b1293cb2292808b4291acc01a503043b5002041aca0110292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220f28082e2c220cec502c95502c27082706310c503bf73d0129353ca003041aaf01103b50323b3bef293ba003051aa801024c28222ab1292810b1293cb2292808b4291a5b01a503043b5002041a590110292841bd2a3cb22a2a3b3bf02b3b3b32f0501a730128082d28082822ec50221128082d282a34ec502b95502b2707293b3bef293ba003051a56010260293fb1292810b1293cb2292808b4291a0201a503043b5002041a000110292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2820e4502c2a3cb12874e4502c2a3db1286fe4502c2a3eb12820e4502c95502c2708293b3bef2f3b3bef2a3ba00303300253293ba003032b024b2a2ab1292810b1293cb2292808b429fa8ba503043b500203fa8a10292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220f28082e2c220cec502c95502c27082706310c503b6427041f04000000000000|@10647,1,@14662,@9449,@10648,@9542,@1921,@10649,72057594037927935,@286,@10650,@10646,@10651,@10646,@10652,@10654,@10646| 18430:D4,8|fb02fa1c10000000|@9959,1,@14663,@9958| 18431:D5,80|fb0b2d3629353da0031a29362f3530372b33220c3234fa500c3d2a692c2a2d6a2705022429353fa003043b500203fa40102e352f372f3b69332a346a293b693d2a692e2a2f6a2706641f050000000000|@10657,1,@14664,@10658,@10656| 18432:D9,208|fb152f929103b92f3530362a362b37329291030529929102013b037e32352a3528062b3b6a28062b3b6a293b692b2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa8e0c020129293b6929fa8c0c28072a22143c6b2212230d2a2a3bfa830c3b2a0c6429352806a0030829362968016402013b293ba00303fa6f103b502935270e02013b03132f3b69292cfa640c332a220d6a292f6966020c2b33333333fa590c2d2a69642704020b2b3b692e2a316a293b69651f05000000|@10659,1,@14665,@1083,@1099,@1649,@1921,@10597,@10658| 18433:D7,96|fb132f3ba003112e3ba003043b500203fa66103b503b02402f35303630929103043b500203fa59103b50303531360b0300302f220e220e220e2efa4c0c5029352a362b372b2b2b6a3332221222122212fa3e0c2a2a69270d1f05000000000000|@2305,1,@14666,@2304,@2304,@10580,@10662| 18434:D6,72|fb132f929103382f35303630373bfa502b6a0b0300302e220e220e220e2efa480c5029352a362b372b2b2b6a332212221222122212fa390c2a2a69270d02013b1f05000000000000|@880,1,@14667,@1627,@10580,@10581| 18435:D4,176|fb0c2b3629353ca0033b2936293b2a9291032d2a352b362a362b372d03033c02102a3ba091299103033c02042afa990c642c2a2507250726051e2b3b27050201296564026429353ba0032d2936293b2a9291031f2a352b362a372c03033c020429fa650c2b2a2506250626041e1d3b27040201296564023129353ea0032a2936293b2a9291031c2a352b362b03033c02042afa340c2a2a2505250526031e1b3b66020129656402013b64420000000000|@10667,1,@14668,@10666| 18436:D4,24|fb052c2ca603033b020c2c3caa292dfa1f0c2e2a69654300|@10669,1,@14669,@10668| 18437:D5,40|fb082b35293ba003033b020e29929103043b500203fa29102935293b69fa293b2b3c6b6642000000|@10671,1,@14670,@2207,@951| 18438:D10,696|fb242f353036313729321ac3020c0b0400220e3ba003033c0239220e2f2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b650319220e220d69220e0c2a2a35452a36462a37472a384851f71f0230353fa003182e220d69220e0c2a2a35452a36462a37472a384851f7010230353da003623036293b2a929103422a352b362a352b362c372a22171a25020c293ba003032f021a3d2d2c6a2a22101a1a020c292218696422180c2a2a69293369662e2a2509250926071e403b27070201296530220f6922100c2a2a3b2f1af3010c502603f7990130353ca003783036293b2a929103582a352b362a352b372c382b22171abd010c293ba003032f023029220f1ab6010c0b0400312f221e221e2d1ab8010c5029352a362b372c382c2c2c2c6b3c220d69292b6929221469270d2e2a2509250926071e563b27070201296530220f6922100c2a2a3b2f1a75010c502603f71b0130353ba0037c303631372a3b2a9291035c2a352b362a352b362c372d382c22191a3b010c293ba003033002322922111a34010c0b0400312f222022202d1a36010c5029352a362b372c382c2c2c2c6b3b220d22106a292b6929221569270d2f2a250a250a26081e5a3b2708020129653122106922110c2a2a2d30faf20c50260402993036313629929103082936293ba06402013b032a323629350b04002e2218221822182dfacf0c5029352a362b372c38220d2d452c462b472a4850260b025a220e3caa3b2c299291031229362b3caa292b25042504511e113b6502012a65293cab3b2afa980c0b0400221932302c221c220c2210221efa8d0c5029352a362b372c382c2c2c2c6b3b2a221e6a22112a453b462d472c4850260f5129352a362b372c382b3ba00304220c0206220c2cfa5d0c22102e452a462c472b48270e1f05000000000000|@10674,1,@14671,@10675,@10597,@10677,@10672,@10688,@10689,@10673| 18439:D6,184|fb0a2c3ba003033c02032b3ba003033b02a32c929103043b500203fab3102c352c929103043b500203faa5102c352a2aa003362e929103043b500203fa92102e352f929103043b500203fa8c102f362f929103043b500203fa7e102f362a2afa7f0c2c2a692704024b2e929103043b500203fa5c102e352e929103043b500203fa4e102e352a2aa2031530929103043b500203fa431030362931fa44327e092f929103043b500203fa2e102f36312afa2f327e0965430000|@10676,1,@14672,@2207,@2360,@10675| 18440:D6,344|fb153b2f299291031229362b3caa292b25042504511e113b6502012a650b02002c31a0030d1a48012a2a35452a364651020b313732382b2b452a46505129352a363337220c299291035129352a362a362937292f2a2aa003033c022d2a92910327299291031f2a352b362b352c362c2ba0030d2b2a2506250626041e273b02013b270402013b02013b65030a2b250526041e4c3b02013b270402013c64290312220c342a35452a36462a37472a384864029b220d2d2a9291031c2a352b362a3629372d2afab20c2c2a2507250726051e1a3b270502012965220e2d2a9291031a2a352b362a3629382d2aaa2c2a2507250726051e183b2705020129653c220f220f22126b293b2d2d6b2b3ca603273b2d299291031229362b3caa292b25042504511e113b6502012a65293dac293cab2e2aa86602013b030929220ffa4322107e12220e2b453b462d472c48270427081f0400000000000000|@10679,1,@14673,@917,@10597,@10678| 18441:D4,56|fb0b2c362d37292ffa460c3e2a693b2c299291031229362b3caa292b25042504511e113b6502012a65302b452e462d472a48270543000000|@10681,1,@14674,@10680| 18442:D8,80|fb0a2c3ba003033b02422c929103043b500203fa53102c35292dfa540c292b692b3b69302afa510c642ffa540c2c3ba003152a3b69293ba003032a02072a2afa47327e096402032a2a69270443000000|@10683,1,@14675,@2207,@10684,@10686,@10680,@10682| 18443:D9,424|fb102b3529353ea0034329362d362a299291031b29352a362a36332aa003052b680102082a250426031e1a3b6602013b64293ba003041a8701103b50293529351a85012d69292b692706f7560129353ca0f8060129362a382e362b3729293ba003033b024829929103043b5002041a5f01102935332aa003033c02302a929103043b5002041a4801102a35342aa203033b02182b929103043b5002041a3901102b3629250426031e4a3b6464646403111a15012b69322e1a26010c2a2a696502952b299291036c29352a362a36293729293ba003033b024729929103043b500203faed102935220f2aa003033c022f2a929103043b500203fad6102a3522102aa203033b02172b929103043b500203fac7102b3629250426031e493b6464646403052c680102082b250526041e6a3b270402013b64293ba00303faac103b50293529352a363c2b69293069220e2cfa900c2a2a6927072704024929353fa0031b29362a372b382f363d2c2c6a292b69332ffa6d0c2a2a692707022829353ba0031829362a372e363b2b69292b69322efa4f0c2a2a692706020a2c36fa2b2a69293b69656443000000|@10685,1,@14676,@1921,@937,@2207,@2360,@10684,@1921| 18444:D6,184|fb0a2c3ba003033b02ab2b3ba003032c02a32c929103043b500203fab3102c352c929103043b500203faa5102c352a2aa003232e929103043b500203fa9a102e362e929103043b500203fa8c102e362a2afa8d317e082e929103043b500203fa6f102e352e929103043b500203fa61102e352a2aa2032730929103043b500203fa4e10303531929103043b500203fa481031362932fa490c2b2a696602152f929103043b500203fa2f102f36312afa30327e096565430000|@10687,1,@14677,@2207,@2360,@10686| 18445:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14678,@10682| 18446:D4,24|fb052c2ca603033b020c2c3caa292dfa1f0c2e2a69654300|@10669,1,@14679,@10688| 18447:D11,360|fb14303ba003033c0203323ba003163232692f0c302a35452a36462a37472a384864f741013b3b3b2b31a003032a02c533293ba003033b024829929103043b5002041a3b011029352d2aa003033c02302a929103043b5002041a2401102a352e2aa203033b02182b929103043b5002041a1501102b3629250426031e4a3b6464646403602f2c2a929103043b5002041afe00102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b64656529220efae30c292ca603142d3caa292f2c25062506250626031ea13b6402122d3caa292e2e25062506250626031eb53b646502112b3caa292c2c250425042504501ec93b64662d2a2a929103043b500203fa8d102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b6465652a3b69332afa780cfa7dfa832b220c220c220c220c68070b04003122143022152dfa740c5029352a362b372c382c2c2c2c6b3f2a221322116b22162a453b462d472c4827101f08|@10690,1,@14680,@2207,@2360,@953,@10691,@10686,@18448,@10689,@10672| 18448:D3,48|fb0f0b04003035313630372c32383339343a220c2306220d360c5029352a362b372c382c2c2c2c6b2709420000000000|@10693,1,@14682| 18449:D6,216|fb0c2c3629353ea0032f2936293b2a929103212a352b362a32fad50c292da603032902012c2b2a2506250626041e1f3b27040201296564029b2d37292efab90c293ba0299103102a929103043b500203faae102a35027c2c353da003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa6502532c353ca003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa65022a2c353ba003232c363b2a299291031229362b3caa292b25042504511e113b6502012a65293caa6502013b6664430000|@10692,1,@14681,@10691,@10675,@2207| 18450:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14683,@10673| 18451:D10,192|fb102b3ba003aa29390303facb103b503b502938030728102a366902922937352a37362b37372c37382d37392dfab1a003033c02142d3b3bef3ba0030b2d2808fa9e28083bed02013b030d2b3ba00305293ba002013b02013b0304fa8b020d2d2c2b2f2e680528062a3b6a64293b69fa7f2a69fa832a69fa872a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa630c02012928102a69270c02072b3cab2a3a2c804200000000000000|@10695,1,@14684,@10696,@294,@921,@921,@10699,@10694,@1083| 18452:D4,24|fb0c2b362c3830303b30322f2ffa21347b09080000000000|@10701,1,@14685,@10700| 18453:D11,336|fb1a313532363337313632373c2a0c3c3b2b22106b2a3ba203041a4b01103b503d2b6928082a6930299291033229352a362a3729353da003043b5002041a30011029362a372a3b3b220ce350293b3b220ee3502c250626051e303b270502013b6432353ea0031232362922132213221322131a03010c6402c032353ca0031f323633373438292bfaf7221522152215221532221c221c220efaee0c66029b32353fa003603236333734382213299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303fabb103b502935293629352806a00308292d3bfab00c0206280b2a2e3b6b2f2a22192219221922192219fa810c2707023532353ba0031e32363337292d69292214692c22162b2216221622162216fa5d0c2704021130929103043b500203fa6d103035220f0c2d3b69293ba003032a0205280f2a2c6a270c1f07000000|@10703,1,@14686,@2118,@10704,@10707,@10700,@10702,@1921,@1039,@2207| 18454:D7,88|fb0f2f929103043b500203fa63102f3530362a352b362a2a343434fa5b0c2a310c2a3ba00303290205280f2b2b6a2e929191030329021d2d220d220d220dfa400c2f220e220e220e220efa3c0c28052b2d2c6b6527071f05|@10709,1,@14687,@10710,@10713,@10708,@10707| 18455:D9,296|fb182f9291f817012f3530362a352b362f3630373c2a0c3c3b2b220e6b2a3ba203041a1b01103b503d2b6928082a692f299291033229352a362a3729353da003043b5002041a00011029362a372a3b3b220ce350293b3b220ee3502c250626051e303b270502013b6431353ca0032031360b02002c2f22132cfad50c502936220e22162b22162216face0c2705028931353da0035b313632372210299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303fa9c103b502935293629352806a00308292d3bfa910c0206280b2a2e3b6b220f22172b22172217fa6d0c2706022831353ba003173136292c6929221169220c22142f2c2214fa4f0c66020b3222112c22112211fa410c2d2a69270c02013b1f05000000000000|@10715,1,@14688,@2118,@10704,@10714,@10713,@1921,@1039| 18456:D8,176|fb0e2e353da003612e362f37293ba00304fab50208293528062a3b6a64293b69312a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa830c020129293b6929fa810c28072a333c6b220c2a45fa6446270a02442e353ca0031f2e362d362e382b3b322d2dfa640c2c3b332e2efa640c302b452a462705021f2e362f372e362f382c2c332d2dfa430c2d2d342e2efa430c312b452a4627061f0400|@10717,1,@14689,@921,@1083,@1099,@10718,@10716| 18457:D17,120|fb0f2f36293ba0033e2e352806a003082e3b3bfa7b0c0206280b2f3b3b6bfa7835fa7d35fa8235fa8735fa8c2c2e2c2e6805220d34343bfa872efa8c0c3e302bfa8e6b2707022b29929103043b500203fa8610fa8b312e6a3bfa8d0c2930302dfa8e0c313b6929fa8f0c28072a2d3c6b2705641f05000000|@10719,1,@14690,@1039,@188,@189,@190,@191,@294,@10189,@9539,@1018,@10720,@18458,@9545,@9546,@1099| 18458:D11,64|fb0dfa5435fa5935fa5e35fa6335fa682c2e2c2e68052e363130373bfa622efa670c29352806a00309293b3bfa62347b0509280b2a3b3b6b2706420000000000|@10723,1,@14691,@188,@189,@190,@191,@294,@10189,@9539,@1039| 18459:D10,96|fb0c2f36293ba003182e352806a003092e3d3cfa632f7b0508280b2f3d3c6b023729929103043b500203fa54102935293ca00304fa52021ffa56322f6a3bfa580c2931312dfa590c323b6929fa5a0c28072a2d3c6b270564641f050000000000|@10724,1,@14692,@1039,@10725,@921,@18460,@9545,@9546,@1099| 18460:D11,64|fb0dfa5435fa5935fa5e35fa6335fa682c2e2c2e68052e363130373bfa622efa670c29352806a00309293d3bfa62347b0509280b2a3d3b6b2706420000000000|@10728,1,@14693,@188,@189,@190,@191,@294,@10189,@9539,@1039| 18461:D10,296|fb152e9291f815012e352f362a3529353ca0035729362f373c2a0c3c3b2b220d6b2a3ba203041a1701103b503d2b6928082a690b0200312d22102c1a0a010c5029352a36303b69220d2b221422141aff000c28052d2b1aff006b2b3ba00303290205280f2c2b6a270e02af29353da0035729362a3731299291031b29352a362a352e2aa003052b680102082a250426031e1a3b6602013b64293ba00303fac1103b502935293629352806a00308292d3bfab60c0206280b2a2e3b6b302a220e220efa8d220f7b060f29353ba0034229362f373c2a0c3c3b2b220d6b2a3ba20303fa5e103b503d2b6928082a692b3b692f2b6929220f693322112b2211fa520c2c3ba00303290205280f2d2b6a270a020a2a313131fa3a327b0609660202fa511f0400000000000000|@10729,1,@14694,@2118,@10714,@10708,@921,@1921,@1039,@915| 18462:D7,176|fb19220c3ba003112e2e2e220c220c220c220c2211327b090d220c35220d362a352b3529353ba00306220f3ca002013b03332c3529362a372f362f92919103043b500203fa82102b2b220c22122212fa7f0c2a2a220e2215221522152215221a22127b09162c360b02002e3422132cfa670c5029352a362e2a220f2216221622162216221b0c22163cab332a221822182218221822182218221822182218fa400c28052e2d2c6b270927041f0b000000|@10731,1,@14695,@10730,@10716,@10714,@10702| 18463:D10,256|fb142e3ba003f42d302a929103043b5002041a0301103b502a352b362b3ba003042a39020f2b3cab2a2a2505250526031e273b646565303caa293cfae30c293b3bef293ba00304fadf024a28082ab1292810b1293cb2292808b429fad3a503043b500203fad2103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050faab28082d28082808ec503128082d281034ec502b95502b2707293b3bef293ba00304faa0024d29280eb1292810b1293cb2292808b429fa7ca503043b500203fa7b103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b1fa5f28082e2c280eec502c95502c2708333b34322dfa52220e7b070e3b1f050000|@10738,1,@14696,@953,@801,@10739,72057594037927935,@286,@10737,@7132| 18464:D31,824|fb54339291f82803333534362a352b362c3a32363338220f3cab220f932a2aa903041a2b03103b503b5022102b3bdb293ea4031c22123caa3222152b2215221522152215221522151a0d0322167b0b162d352e363b061a07032a2c6a2c3caa292b2d6a3c061a00032a6922163522173922183a2219230722123b1af3020c3b2a299291031229362b3caa292b25042504511e113b6502012a65293ba203041ad702103b503b503b2a1ad5020c2b321ad7020c292b1ad9020c2d2b2a3ba00312293ba003043b5002041acd02103b503b02472a352b362b929103043b5002041abf02103b502b352c362c3729353da003043b5002041ab102103b5029362a372a3b3b30e350293b3b2217e3502e2d2509250926071e593b2707650b020031220c2211220f2211220f2f1a85020c5029352a360b02001a810222222b222a0c5029350b0200302d22172c1a75020c5029352a3622252f221c221a221c1a6b020c293ba003032b02062b2a1a65020c293ba00304220c0207220c2a1a5d020c293ba003042212020722122a1a55020c221b221f221e222a31221e3b221f68080b0200222f2d2b22370c5029352e3ba00303290205280f2f2b6a223c3cab223e2aaa222f3b3bef293ba003051a1d02024b293cb1292810b1293cb2292808b4291a1102a503043b5002041a0f02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050223728082d280834ec50280831b12c2a282fe4502c95502c270822403c1ae2010c2a3b3bef2a3b3bef2a3ba003032b0256293ba003032c024e2a2ab1292810b1293cb2292808b4291aa701a503043b5002041aa501103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708222f35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a5b010c222e35222f3522303b3b2ce32f1a5201a003033c02152f3b3bef3ba0030c2f28081a3e0128083bed02013b03051a3a0102012f2d1a3b010c222c3ba20303fa8a103b503b503b222d1a2f010c22112c3b2d2d3c343c6808280c2a693c3b22132c6b22503caa224722532b225322532253225322532253fa320c2b2a692740270a02013b1f090000000000|@10742,1,@14697,@829,@10740,@18465,@18466,@10565,@1080,@10744,@10745,@10746,@2430,@2430,@10747,@9534,@1460,@10403,@10407,@10749,@10750,@10751,@372,72057594037927935,@286,@801,@9561,@294,@1098,@3991,@10741| 18465:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14698,@9497,@2053,@9495| 18466:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10743,1,@14699| 18467:D5,48|fb072c2ca003033b02202c3ba20303fa37103b503b503b2d6928082a692e3caa292ffa2c0c2b2a692704430000000000|@1075,1,@14700,@2118,@10744| 18468:D4,40|fb092c9291031a2c362c352d35293caa2f3b3b2ce32d31fa270c2d2a69270602013b430000000000|@880,1,@14701,@10745| 18469:D6,64|fb092c3ba0030f2b3ba003043b500203fa46103b02232c352d362d929103043b500203fa3b102d352e363c3b2e2d6b2c2bfa350c2a2a69270643000000000000|@2305,1,@14702,@2304,@2304,@10746| 18470:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14703,@10749| 18471:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14704,@10750| 18472:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14705,@10751| 18473:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14706,@10741,@920| 18474:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14707,@10563| 18475:D64,3408|fb462d350a1f003e004b009d0046016e019c023e003e003e003e00a602d8023e0013035903ee033e006504df041e053e00c00512061c065807180c3e00730c3e007e0c3e002c392c1a1d0d452a4664f7fa0c2d362e370b02002d322b310c5029352a3633353436220c37220d38220e3a220f2306221023072f2f2f2f3430303068080b020022102d2b22150c5029352805220e2b1ad10c6b22162a45220e462714f7a80c2d3629352935280ea003452936293629352b3729352f363039220c35220d36220e3a302f2b1aa40c0c0b02003122142b22130c5029352a36220d2b323232220d220f1a8f0c0c22152a452b46271102552a360b02002d332b320c5029352a363435220c36220d37220e38220f3a22102306221123072f2f2f2f3430303068080b020022102d2b22160c5029352a362a3b69291a470c0c28072a22123c6b221a2a452d46271665f7ff0b2d3629352a362f390b02002e342b330c502935220c2f2b3b220f220d360c342a452f462709f7d70b2d3629352a362b372c392d3a0b020030220d2b220c0c5029352a360b02001af20b342b2211370c5029352212352213362214370b02003330302c1ade0b0c5029352a362211323133321ad70b0c293ba003032b02062b2a1ad10b0c221c35221d36221e37221f3822203a22212306222223072f2f2f2f220d30303068080b020022202d2b22270c5029350b02001a830b22262b222b370c502935222c35222d36222e370b0200222430302c1a6d0b0c5029352a36222c323133321a660b0c293ba003032b02062b2a1a680b0c223635223736223837223938223a3a223b2306223c23072f2f2f2f220d30303068080b0200223b2d2b22410c50293522263ba00304221a0207280f2227221c6a220d3ba003032a0206280f220e2c6a280522382c2c6b22442a452238462742f7a90a2d37292e2e2d2f7b05062d362d390b03002e2e2b3237220d341af10a0c5029352a362b372b3ba003032a0205280f2c2c6a220c2a452b46270af76d0a2d362e382a352f39303a1acc0a2a690b02002f2d2b1ac90a0c502936291ac90a0c291acc0a0c2210342b22122210390c220f2a453346270df7320a2d362e372e372f393c2b0c0b020030220c2b340c5029352d3ba203041a9f0a103b503b503d2e6928082a69220f332b3c22122210360c402d2b336b220f2a453346270df7ec092d3629362935293629929103372c3729352e3833353436220c39220d3a1a600a322b2f31680532302c1ae4090c3b1a570a0c292f2e2e1a570a0c22112a452f46270b024c293ba0031e2c38313532363339343a2f2c2b3b30321a3c0a0c220c2a452c46270602292c3729352e3833353436220c39220d3a312f2b1a93090c322d2c2c31331a190a0c220f2a452d4627092704f757092d372e3829929103082936293ba06402013b030c2935293829313130327b05092a352f36303731393b2e299291031229362b3caa292b25042504511e113b6502012a650b02001aca09322b220d221133220c220e341ac3090c5029352a362a3ba00303290205280f2b2b6a220f2a453146270b65f7e0082d362e372f382b35303531363239333a2d352805a003132d3629929103082936293ba06402013b6402013b03043b5002041a7809103b502d3629352f3b692a2a69293c1a6e090c291a71090c3b2a3c6a3e2c2b6a3d2a220e6a220f221222162c220d22102212221522151a57090c22142a45220c462712f766082d362e372f3830392c35313532391a41092b220d306b2d302e2c1a3d090c293ba00309341a5b08452c46020e293528062a3b6a220d2a452e46652709f727082d3629352a361a1a092d372e2d6b0b02002d3b220c2f2d220c380c5029352a360b02002d3b2a929103043b5002041afa08103b502a352b36293ba003392a353da003043b5002041ae908103b502a362c3b2a929103152a352b362a2c692a2a2505250526031e143b66020129652f2a452b465051020e2a2c692a2a2505250526031e5c50515129352a362a3ba00303290205280f2b2b6a22112a453046270ff785072d362e370b02002d322b310c5029352a3633353436220c37220d38220e3a220f2306221023072f2f2f2f3430303068080b020022102d2b22150c5029352805220e1a55082c6b22162a45220e462714f733072d36292e2e2d2f7b05062d362e372e362f370b02002f342b330c5029352a360b02002d352806a0030e1a23082e692a3b452a465050021a3c320c1a1a082a220c6a3c3b2c326b293b692d2a452c4650260429352a36342a0c29352806a00309293b3b1afa070c0206280b2a3b3b6b2a352806a003092a3c3b1ae4070c0206280b2b3c3b6b2b352806a003092b3d3b1ace070c0206280b2c3d3b6b2210352211362212372213382214392d1aba07a003033c02152d3b3bef3ba0030c2d28081aa60728083bed02013b030d2b3ba00305293ba002013b02013b03051a9207020d2d2c2b2f2e680528062a3b6a64293b69302a69322a69342a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a54070c02012922113ba00303290206280f22122b6a28102a6922222a452218462720f7ed052d362e372f383039303531383239333a2e29353ea0032d29370b02002c29353ba0030d29362a372c2b452a465051020b29362935292503511e1b5150293629912705021529352806a0030d293629352502501e413b6402013b64030e2c3c220e301ad5061ada060c02013b2f29352805a0032229382938293629353da003043b5002041ac306103b502937652502501e233b64024229352806a0030d293629352502501e373b64022e29353ea003043b5002041a9b06103b5029363b2a299291031229362b3caa292b25042504511e113b6502012a656464293ca003051a7906020f32311a7a060c280b1a6c062b3b6b641a75062d690b0200220d2d2b1a61050c502936291a61050c291a64060c293ba0f80801220c3b3bef293ba003051a5806024b293cb1292810b1293cb2292808b4291a4c06a503043b5002041a4a06103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d280834ec50280831b12c2a2823e4502c95502c2708293b3bef22143b3bef2a3ba0030422150257293ba003032b024f2a2ab1292810b1293cb2292808b4291ae705a503043b5002041ae505103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221d28082e2c220cec502c95502c2708291a4605a003033c0215293b3bef3ba0030c2928081a320528083bed02013b03051a96050201293b1a97050c3b1a9a050c220f2c3b2d2d3b3b3c6808280c2a692709f79802220c3b3bef293ba003051a5005024b293cb1292810b1293cb2292808b4291a4405a503043b5002041a4205103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221428082d280834ec50280831b12c2a2823e4502c95502c2708293b3bef22143b3bef2a3ba0030422150257293ba003032b024f2a2ab1292810b1293cb2292808b4291adf04a503043b5002041add04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1221d28082e2c220cec502c95502c2708291a3e04a003033c0215293b3bef3ba0030c2928081a2a0428083bed02013b03051a8e040201293b1a8f040c3b1a9a040c220f2c3b2d2d3b3b3c6808280c2a693b34299291031229362b3caa292b25042504511e113b6502012a6522173b3bef293ba003051a3204024b293cb1292810b1293cb2292808b4291a2604a503043b5002041a2404103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221f28082d280834ec50280831b12c2a2823e4502c95502c2708293b3bef221f3b3bef2a3ba0030422200257293ba003032b024f2a2ab1292810b1293cb2292808b4291ac103a503043b5002041abf03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1222828082e2c220cec502c95502c2708293b3bef293ba003051aa803025a293eb1292810b1293cb2292808b4291a6403a503043b5002041a6203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708291ab802a003033c0215293b3bef3ba0030c2928081aa40228083bed02013b03051a08030201293b1a09030c323ba203041a2003103b503b503b331a1e030c342c3b2d2d3b3b3c6808280c2a69271622152a45220d462713f72d012d3629929103082936293ba06402013b03041af402103b503b502d392a2c301aef020c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a23020c020129302a452d46270502d22c392cfae9452a466402c72d362e372f392f390b02002e342b330c5029352a360b0200fae9220c2b220f370c5029352210352211362212370b02003330302cfad50c5029352a36221232313332facf0c293ba003032b02062b2a1a61020c221a35221b36221c37221d38221e3a221f2306222023072f2f2f2f220d30303068080b020022212d2b22250c502935220c3ba00303290206280f220d2b6a3d2a69293b693b1a20020c280e2a692b3ba00303290205280f2c2b6a280522222bfa2f6b3b1a0a020c3d2b2b6a222e2a45222946272c44000000|@10754,1,@14708,@921,@10583,@9541,@1099,@1460,@10403,@10407,@10755,@10756,@10757,@18481,@4254,@9444,@10764,@2118,@18483,@9545,@9546,@10124,@9539,@10766,@10771,@10776,@3506,@3508,@10779,@18493,@10645,@18494,@10791,@10793,@915,@18501,@18502,@1039,@294,@921,@1083,@10617,@7132,@10457,@10618,@916,@10621,@18503,@10795,@360,72057594037927935,@286,@1098,@1070,@10796,@10797,@10176,@1080,@10798,@10799,@10802,@10803,@10804,@10753| 18476:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14709,@10755| 18477:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14710,@10756| 18478:D10,208|fb2c30929103043b500203fadb103b50303531362a352b360b0200fad32e2b220e0c5029353435220c36220d370b0200221430302cfac10c5029352a36220c32313332fabb0c293ba003032b02052b2afab60c22153522163622173722183822193a221a2306221b23072f2f2f2f220d30303068080b0200221a2d2b22220c5029352a36221d3ba0030b2224220e452b462a4702360b030022212e2b222a222a222afa6c0c5029352a362b373d3269292d69293ba003042216020622162afa580c222e2a452e462d47270a271f1f0600|@10759,1,@14711,@10760,@1460,@10403,@10407,@10763,@10757,@10758| 18479:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14712,@10763| 18480:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14713,@10758| 18481:D3,120|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b6442000000000000|@10444,1,@14714| 18482:D4,48|fb082b929103232b352c362a36293fb7293ba091030a2bfa2f0c2d2a696402062bfa25307d07270402013b4200000000|@693,1,@14715,@10764| 18483:D5,40|fb0829362c2b373b2d382e39fa320c29352806a00309293c3bfa2d2f7b0504280b2a3c3b6b644200|@10765,1,@14716,@9539,@1039| 18484:D4,8|fb02fa1c10000000|@10768,1,@14717,@10767| 18485:D12,224|fb1d329291038c323533362a352b380b02002c220e2b22110c5029350b02002c352806a0030dfad02d692a3b452a465050021a3c22110cfac72a22126a3c3b2c316b293b692d2a452c4650260429352a36332211fab20cfab72b2214221b2d68050b02002c22112b221c221c221c221c221c221cfaa20c5029352a362a3ba00303310205312bfa980c221d2a452b46271502472b3ba20303fa8e103b503b503b2c220cfa8b0c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa680c020129343b452a46661f0900000000|@10773,1,@14718,@18486,@18487,@10621,@18488,@10771,@10775,@1080,@10772,@1083| 18486:D3,8|fb02293642000000|@9515,1,@14719| 18487:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14720| 18488:D3,24|fb042b2a39a0030629372a362c802b2a382c800000000000|@10774,1,@14721| 18489:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14722,@10775| 18490:D4,32|fb072d2da003033b02102d2c0c2e3caa292f2ffa230c2b2a6966440000000000|@1075,1,@14723,@10772| 18491:D12,152|fb163392910375333534360b02002d220e2b22110c5029352d22102210221022102210221022102210fa850cfa8a220f220ffa8c0c2a3b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa630c020129fa4d2a221322153122152215fa5922157b0917fa5a2c31fa3e0cfa5b3130306b2afa5c0c2932342dfa5d327b060e00|@10780,1,@14724,@10779,@1238,@10583,@1083,@9541,@1444,@18492,@9545,@9546| 18492:D6,40|fb08fa3c2c2b363b2d372e38fa3a0c29352806a00309293c3bfa352f7b0504280b2a3c3b6b644200|@10781,1,@14725,@1444,@9539,@1039| 18493:D4,16|fb0829363c2b372c382ffa1c307b0703|@10768,1,@14726,@7132| 18494:D4,32|fb0b0b02002e352f362b2f3630373138fa260c5029352a362a2a692705420000|@10783,1,@14727,@10782| 18495:D5,48|fb0c2f390b02002f2d2b34220e220cfa370c5029352a362a3ba00304220d0206220d2bfa2b0c220c2a452b4627071f06|@10785,1,@14728,@10786,@10784| 18496:D10,200|fb2a30929103b4303531362a352b360b0200facc2e2b220e0c5029353435220c36220d370b0200221430302cfaba0c5029352a36220c32313332fab40c293ba003032b02052b2afaaf0c22153522163622173722183822193a221a2306221b23072f2f2f2f220d30303068080b0200221a2d2b22220c5029353d2a690b0200222022132b222922292229fa740c5029352a362e3b692b3ba00303290205292cfa670c293ba003042214020622142afa600c222c2a452d46272702052e3b4530461f06000000000000|@10788,1,@14729,@1460,@10403,@10407,@10789,@10786,@10790,@10787| 18497:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14730,@10789| 18498:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14731,@10790| 18499:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14732,@10787| 18500:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14733,@10784| 18501:D3,8|fb02293642000000|@9515,1,@14734| 18502:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14735| 18503:D3,120|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b6442000000000000|@10444,1,@14736| 18504:D4,48|fb082b929103232b352c362a36293fb7293ba091030a2bfa2f0c2d2a696402062bfa25307d07270402013b4200000000|@693,1,@14737,@10795| 18505:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14738,@10796,@920| 18506:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14739,@10797,@920| 18507:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14740,@10798,@920| 18508:D4,40|fb0b2d9291031c2d352e360b02002d312b340c5029352d3333fa250c2a2a69270702013b44000000|@880,1,@14741,@10802| 18509:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14742,@10803| 18510:D4,32|fb072b929103122b352c362a3c692afa270c2a2a69270402013b420000000000|@880,1,@14743,@10804| 18511:D4,40|fb0a2b9291031a2b352c362a352b363b2b2b6a293c692dfa270c2a2a69270702013b420000000000|@880,1,@14744,@10753| 18512:D45,1792|fb542b362c372d383129352816a0030c2936292502501e0d3b6402262935280ba003042937021b29352805a003043b5002041ae306103b502937292502501e353b64640b030034929191030e302a2a35452a36462a3747510219303531363b061abd062a2c6a2c3caa2e2a452b462c4750260529352a362b373c061aaa062a6932929103043b5002041aa406103b503235293729352b3829352d36291a99060c3b2a299291031229362b3caa292b25042504511e113b6502012a65293ca0910307221892919102013bf8fd0322123b3bef293ba003051a6706024b293cb1292810b1293cb2292808b4291a5b06a503043b5002041a5906103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a28082d280834ec50280831b12c2a2828e4502c95502c27082b3c1a2d060c2a3b3bef2a3b3bef2a3ba003032b0256293ba003032c024e2a2ab1292810b1293cb2292808b4291af205a503043b5002041af005103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503328082d2808220cec50280832b13328082e2c220cec502c95502c2708293b3bef293ba003051ac205024a293cb1292810b1293cb2292808b4291a9605a503043b5002041a9405103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a2829e4502c95502c27083b061a79052a22166a22163caa292b2d6a220c3ca003051a6c050253220c3ba403041a6905103b503b50220c3ba203041a6305103b503b503b220d1a60050c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a3c050c0201296522243522253922263a222723071a2f05222736222d2225313134222022113333680b293430221a2219223032220d220c22231a12050c3335293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291af2040c221f3522203522213b3b2ce322111ae804a003033c021722113b3bef3ba0030d221128081ad20428083bed02013b03051ace04020222112d1ace040c221b3ba203041a8404103b503b503b221c1ac1040c322c3b2d2d3c343c6808280c2a693c22320c3c3b2b2d6b293b692235352236363b062b3caa2239352a2aab293ba203041a9504103b503b50293ba60313293cab322a3b6a642e0c292e1a84040c640210313ba203041a8004103b503b503d326928082a6922293ba203041a0b04103b503b503b222a1a68040c29929103082936293ba06402013b030d29351a5a042a69293b696502353b2a299291031229362b3caa292b25042504511e113b6502012a65293ba203041abf03103b503b503b2a1a2d040c292c1a2f040c65291a31040c291a34040c28072a2f3c6b22403b3bef293ba003051a2804025b293eb1292810b1293cb2292808b4291a4403a503043b5002041a4203103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050224828082d280834ec50280831b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c2708220c35293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a33030c2c1a3603a003033c02152c3b3bef3ba0030c2c28081a220328083bed02013b03051a1e0302012c2a1a7f030c3b1a82030c312c3b2d2d3b3b3c6808280c2a6922173ba00303290206280f22182b6a2738f72f0222123b3bef293ba003051a5a03025b293eb1292810b1293cb2292808b4291a5e02a503043b5002041a5c02103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221a28082d280834ec50280831b12c2a2828e4502c2a3cb12831e4502c2a3db12829e4502c95502c27083b061a00032a22106a22103caa292b2d6a221d35221e39221f3a222023071aec022220362226221e30322218220f3232680a29331ade0222132212222932220c220c221c1a26020c3235293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291a06020c221835221935221a3b3b2ce322101afc01a003033c021722103b3bef3ba0030d221028081ae60128083bed02013b03051ae201020222102d1ae2010c3b1a6d020c322c3b2d2d3c343c6808280c2a69222f92919103032902fa3b2230299291031229362b3caa292b25042504511e113b6502012a6522163b3bef293ba003051a3302025b293eb1292810b1293cb2292808b4291a0f01a503043b5002041a0d01103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050221e28082d280834ec50280831b12c2a2828e4502c2a3cb12850e4502c2a3db12829e4502c95502c2708222435293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291afe000c2c1a0101a003033c02142c3b3bef3ba0030b2c2808faee28083bed02013b0304faeb02012c2afaed0c303ba20303faa5103b503b503b311a7b010c322c3b2d2d3c3b3c6808280c2a69270a271727151f0400000000|@10806,1,@14745,@10807,@18513,@18514,@10811,@10452,@365,72057594037927935,@286,@801,@366,@18515,@916,@10476,@1080,@10814,@1083,@18517,@10499,@9561,@294,@1098,@3991,@10816,@9497,@2053,@9495,@10817,@916,@10818,@2100,@10819,@1099,@3622,@1070,@10820,@3622,@18523,@18524,@916,@10821,@10176,@10805| 18513:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14746,@9497,@2053,@9495| 18514:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10810,1,@14747| 18515:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14748,@9497,@2053,@9495| 18516:D5,48|fb072c2ca003033b02202c3ba20303fa37103b503b503b2d6928082a692e3caa292ffa2c0c2b2a692704430000000000|@1075,1,@14749,@2118,@10814| 18517:D3,40|fb09293a2a23062b23072c23082f2e23093b30230a68082a372b382c393b2d2f36317b0704000000|@10815,1,@14750| 18518:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14751,@10816,@920| 18519:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c3c2a69654300|@1075,1,@14752,@10817| 18520:D5,32|fb062c2ca003033b0213280bfa2a2e3b6b2d3caa292efa280c2b2a6966430000|@1075,1,@14753,@916,@10818| 18521:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14754,@10819| 18522:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14755,@10820,@920| 18523:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14756,@9497,@2053,@9495| 18524:D4,40|fb0929392a3a2b23062c23072f2e23083b30230968082a372b38fa243b2d2f36317b070400000000|@10815,1,@14757,@916| 18525:D5,24|fb052b3ca003033b020c2b3caa29fa200cfa252a69654200|@1075,1,@14758,@10821,@920| 18526:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14759,@10805,@920| 18527:D4,64|fb132b352c382d3a2e2306313b2a929103232a352b362a2c30220d33220d36220d342213fa320c2a2a2505250526031e223b6602012965270444000000000000|@10823,1,@14760,@10822| 18528:D51,1344|fb6e33382935220c35220d36220e372c3ba003051a4105022a2c1a43050c299291031c29352a36293ba003032a020d291a35050c2b2a69641a35050c6502031a3605642d220f1a37050c293b2a929103202a352b362b3ba003032a02062a2c1a26050c2a2a2505250526031e1f3b66020129653b2a299291031229362b3caa292b25042504511e113b6502012a650b0700313ba0031d22182a2a35452a36462a37472a39482a3a492a23064a2a23074b5102693c061ad8042a69221a3629352a363b061ad2042a2c6a2c3caa292b2d6a22113ba203041ac704103b503b503b22122c1ac3040c22132a1ac4040c22233a3c2b693b06292f220e2d6b292d69222835222939222a230722132c4534462212472b482d493b4a2a4b50261329352a362b372c382d392e3a2f2306221e3b3bef22133b3bef2a3ba0030422140259293ba00304222002502a2ab1292810b1293cb2292808b4291a5f04a503043b5002041a5d04103b50292841bd2a3cb22a2a3b3bf02b3b3b32f050222728082d2808220cec50280832b1221c28082e2c220cec502c95502c2708293b3bef293ba003051a2504024a293cb1292810b1293cb2292808b4291a0104a503043b5002041aff03103b50292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282de4502c95502c27083434342c220c220c220c220c68080b0200221d2d2b22290c5029350b02002c352806a0030e1ab9032d692a3b452a465050021b3c22120c1aaf032a22156a3c3b2c316b293b692d2a452c4650260429352a36222b2215221522146b22152b0c0b0300222a1a8a033c222b322e1a8a030c5029352a362b372b2b2b6a3c1a82030c0b04002f2f1a81033b2d1a84030c5029352a362b372c382c2c2c2c6b0b04002e2a1a75030c5029352a362b372c382c2c2c2c6b2b293ba003033b024e29929103043b5002041a5903103b502935293ba003033c02342a929103043b5002041a4003103b502a353b2aa203033b021a2b929103043b5002041a2f03103b502b3629250426031e503b6464646429912b2220224522231a1a030c2a910305224c9102013b0310224d3b224d22471a0b031a10030c02013b224e230d29299291031b29352a362a351a0103a003052a68010207292503511e1a3b6502013b64293ba0034b1aed02299291031b29352a362a351ad702a003052a68010207292503511e1a3b6502013b64293ba003041acb02103b503b50293529351aaf02a003043b5002041abd02103b502937650217293529351a9602a003043b5002041aa402103b50293764032822493b1a9e020c29299291031629352a362a22551a95020c50292503511e153b6502013b646402013b22443ba003132d3ba003042227020722272e1a76020cf72c012254372255363c2b0c223a929103043b5002041a6402103b50223a3529352935291a5e020c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965220c3ba00304222f0208222f220d1a36020c293ba003032a02062a2a1a30020c22551a32020c28142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c640307291a0e020c0201292c3ba00303290205280f2d2b6a2248372935293b2a929103182a352b362a35292d692b2a2506250626041e163b270402012965291adb010c3b224c0c2a1ada010c22583ba20303fac9103b503b503b22591ace010c301ad1013b2d2d3b313c6808280c2a693c3b22162c6b2263225f3b221a221a221a22631ab7010c3b22182219221922621ab2010c3d2a69292c692d2a69271c293ba003042257020a22572a1a9f0122527e59274e1f0900000000000000|@10825,1,@14761,@420,@10826,@10827,@284,@294,@10828,@10832,@18536,@18537,@1080,@10834,@2562,72057594037927935,@286,@370,@18540,@18541,@10579,@10580,@10836,@10837,@10672,@10678,@2207,@2360,@10838,@10846,@7132,@65,@1652,@1701,@826,@10565,@10432,@10847,@10271,@10175,@10848,@10849,@10850,@1083,@9561,@1070,@10854,@10176,@10855,@10861,@10824| 18529:D4,32|fb072b929103112b352c362a352afa280c2a2a69270402013b42000000000000|@880,1,@14762,@10826| 18530:D5,32|fb072b929103132b352c3629fa2a0c2b2a69fa2c2a69270402013b4200000000|@5634,1,@14763,@10827,@449| 18531:D5,32|fb072c929103152c352d362a2efa290c2a2ffa2c0c2a2a69270402013b430000|@880,1,@14764,@10829,@10828| 18532:D7,32|fb0b2c38fa322d690b02002d2d2bfa300c50293629fa310c29fa35337d0b0000|@10831,1,@14765,@18533,@4254,@9444,@10830| 18533:D3,120|fb0e2936299291036629352a362a3829353ca0034f293629299291032129352a362a352935220c352a2aa003052d680102082c250626051e1f3b270502013b64293ba0030a2c250626051e463b02122935293529352a3628062b2b6a29680127056502082a250426031e653b6602013b6442000000000000|@10444,1,@14766| 18534:D4,48|fb082b929103232b352c362a36293fb7293ba091030a2bfa2f0c2d2a696402062bfa25307d07270402013b4200000000|@693,1,@14767,@10830| 18535:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14768,@10832| 18536:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@10833,1,@14769| 18537:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14770,@9497,@2053,@9495| 18538:D5,32|fb072d2da003033b0212fa2c2e2d6a2e3caa292f2ffa290c2b2a696644000000|@1075,1,@14771,@18539,@10834| 18539:D3,24|fb072b352c362a2c37ab2c362a3c6a642a0c28082a696642|@10835,1,@14772| 18540:D3,8|fb02293642000000|@9515,1,@14773| 18541:D3,32|fb082b352c362b37352b2aab2d362a3b6a642b0c28082a692704420000000000|@9516,1,@14774| 18542:D4,24|fb052b3ca603033b020b2b3caa29fa200c2d2a6965420000|@10669,1,@14775,@10836| 18543:D5,40|fb082b35293ba003033b020e29929103043b500203fa29102935293b69fa293b2b3c6b6642000000|@10671,1,@14776,@2207,@951| 18544:D17,424|fb222e3529353ea0030829362992916402013b03043b5002041aa401102f3529362935293533363437323633373c2a0c3c3b2b22116b2a3ba203041a8a01103b503d2b6928082a6930299291033229352a362a3729353da003043b5002041a6f011029362a372a3b3b220ce350293b3b220ee3502c250626051e303b270502013b6430293ba003033b024829929103043b5002041a4101102935293ba003033c02302a929103043b5002041a2a01102a353b2aa203033b02182b929103043b5002041a1b01102b3629250426031e4a3b64646464299103033b02aa332c3b22141a05010c2213352214362215372216382217392d1af900a003033c02142d3b3bef3ba0030b2d2808fae628083bed02013b030d2b3ba00305293ba002013b02013b0304fad3020d2d2c2b2f2e680528062a3b6a64293b69fac72a69facb2a69facf2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629faab0c02012928102a692805220efa852c6b3d2a69293b692710343c2e3b2216fa930c293ba003032a02052a2afa8e0c302a6927121f04000000000000|@10840,1,@14777,@10841,@2118,@10704,@2207,@2360,@10708,@294,@921,@921,@10844,@10845,@1083,@10713,@10839| 18545:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14778,@10839| 18546:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14779,@10847| 18547:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14780,@10848| 18548:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14781,@10849| 18549:D6,64|fb0b2b929103332b352c362a3729353da003043b500203fa3f1029362935293ba20303fa3b103b503d2a6928082a692efa360c2a2a69270802013b4200000000|@880,1,@14782,@10851,@2118,@10850| 18550:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14783,@10854,@920| 18551:D13,304|fb20319291030530929102013bf8190131353236323533363c330c2d3729353da003043b5002041a1e01103b5029362a372a3b3b2fe350293b3b220fe32f3ba003283b220e220f220f220f1a02010c29352806a0030a2922113b1afb000c0207280b2a22123b6b6402a13b30299291031229362b3caa292b25042504511e113b6502012a65220e35220f363b06fad12a2c6a2c3caa292b2d6a220d2a221622162216faac0c29352806a003092922183bfaa60c0207280b2a22193b6b2e35293b2a929103182a352b362a35292d692b2a2506250626041e163b27040201296529fa860c29fa8a0c220c3ba20303fa89103b503b503b220dfa870c2efa8b3b2d2d3b3b3c6808280c2a69270f3c3b302c6b22113caa33322b2214221422142214fa6f0c2b2a69270d02013b1f0700000000|@10857,1,@14784,@10858,@10861,@1039,@18555,@9561,@1070,@1080,@10856,@10176,@10855| 18552:D8,96|fb0f3b30299291031229362b3caa292b25042504511e113b6502012a65293ba20303fa54103b503b503b2afa530c312afa560c3135323632352b2aab332a3b6a642b0c28082a69332f220ffa430c29fa470c28072a2d3c6b270a1f0500000000|@10863,1,@14785,@1080,@10864,@2562,@10862,@1099| 18553:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c2e2a69654300|@1075,1,@14786,@10864| 18554:D5,104|fb0d2d9291035c2d352e362e299291032029352a362a3529352f352a2aa003052d680102082c250626051e1e3b270502013b64293ba00304fa46021a293529363035313632352b2aab2d2a3c6a642b0c28082a6927062b3131fa2d0c2a2a69270502013b44000000|@880,1,@14787,@9846,@10862| 18555:D6,80|fb092b352c362d372a3ba20303fa59103b502a3ba603132a3cab2c2a2c6a642d370c292e36fa49317e0729030f2b3ba20303fa44103b503b2c69020d2b3ba20303fa35103b503d2c6966420000000000|@9496,1,@14788,@9497,@2053,@9495| 18556:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14789,@10856,@920| 18557:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14790,@10824| 18558:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14791,@10865| 18559:D3,48|fb152b352c362d372e382f39303a0b020030333731313131220e221038312212392213360c5029352a362a2a69270b42|@10866,1,@14792| 18560:D3,48|fb152b352c362d372e382f39303a0b020030333731313131220e221038312212392213360c5029352a362a2a69270b42|@10867,1,@14793| 18561:D6,96|fb153292910350323533360b02002d22102b220f220f220f220f220f220ffa580c5029352a360b02002c322b221422142214221422142214fa460c5029352a362a3ba003032f02052f2bfa3c0c22152a452b46270d0205313b4534461f090000|@9485,1,@14794,@10870,@10868,@10869| 18562:D11,344|fb2233363437220c382935293ba003041a5d01103b502935220c3b3bef2e3b3bef2a3ba003032f0257293ba00304220e024e2a2ab1292810b1293cb2292808b4291a3401a503043b5002041a320110292841bd2a3cb22a2a3b3bf02b3b3b32f050221528082d2808220cec50280832b1220e28082e2c220cec502c95502c2708293b3bef293ba003051afc000246293cb1292810b1293cb2292808b429fad9a503043b500203fad810292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27080b0200342d2218221422142e2218221a0c5029352a363c22140c343629353da003043b500203fa941029362a372a3b3b2fe32a3b3b221ae322103b690b02002c221c221e222122212efa790c5029352a363c3b220d220f6b293b692c3ba00303290205292dfa650c293ba003042210020622102afa5e0c22272a452e46271f1f09000000|@10872,1,@14795,@1921,72057594037927935,@286,@371,@9501,@9524,@10873,@10871| 18563:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14796,@10873| 18564:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14797,@10871| 18565:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14798,@10869| 18566:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14799,@10874| 18567:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14800,@10875| 18568:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14801,@10876| 18569:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14802,@10213| 18570:D5,80|fb0929382d2a929103043b500203fa58102a352b362b3ba003042a36020f2b3cab2a2a2505250526031e243b646565293629353da003102d2c362d372d3bfa300c3c2a696402022a3565430000000000|@10113,1,@14803,@953,@10070| 18571:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14804,@10877| 18572:D12,192|fb122b38293ba0035e2c352d362e372f3830392bfac2a003033c02142b3b3bef3ba0030b2b2808faaf28083bed02013b0304faac02012b2bfaae0c2e3ba20303faae103b503b2ffaaf0c302c3b2d2d3b323c68083c2afaa86a3b2afaab0c28063b2b6a270b02512c352d362e372f3830392bfa64a003033c02142b3b3bef3ba0030b2b2808fa5128083bed02013b0304fa4e02012b2bfa780c2e3ba20303fa50103b503b2ffa710c302c3b2d2d3b323c6808280c2a6927096442000000000000|@10880,1,@14805,@294,@1098,@10881,@1080,@10882,@10883,@10888,@10889,@10879| 18573:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@14806,@1071,@10881| 18574:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14807,@10882,@920| 18575:D4,8|fb02fa1c10000000|@10885,1,@14808,@10884| 18576:D6,56|fb072c3ba0030dfa47fa4d2d3b6b293b6964021c2c352d362a35fa34a00307292efa3d2f7e06292efa360c2b2a6964654300000000000000|@1058,1,@14809,@25,@394,@10888| 18577:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@14810,@1071,@10889| 18578:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14811,@10879,@920| 18579:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14812,@10890| 18580:D8,88|fb112b352c362d372e382f392bfa61a003033c02142b3b3bef3ba0030b2b2808fa4e28083bed02013b0304fa4b02012b2bfa4d0c2e3ba20303fa4d103b503b2ffa4e0c302c3b2d2d3c323c6808280c2a6927094200000000|@4929,1,@14813,@294,@1098,@3991,@1080,@10891| 18581:D5,24|fb052c2ca003033b020d2c3caa292dfa1f0cfa242a696543|@1075,1,@14814,@10891,@920| 18582:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14815,@9490| 18583:D3,16|fb052b352c372a2a6965420000000000|@10893,1,@14816| 18584:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14817,@9487| 18585:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14818,@9484| 18586:D8,120|fb0d2b353ca003033b026c2b353ba003272b3629fa7a0c293b2a929103152a352b362a2c692a2a2505250526031e143b660201296565023f2b362c3729352bfa57fa5d0c2afa610c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032b02072b2afa3e337e09270642|@10896,1,@14819,@10897,@7177,@10180,@10898,@10895| 18587:D7,80|fb0e2b929103432b352c362a3a2935293ba00303fa52103b502935293729353da003043b500203fa471029362935293ba20303fa43103b503d2a6928082a6931fa3e0c2a2a69270b02013b4200000000|@880,1,@14820,@1921,@9501,@2118,@10897| 18588:D5,32|fb082b929103152b352c362a3529fa280c2bfa2c0c2a2a69270502013b420000|@880,1,@14821,@10899,@10898| 18589:D8,112|fb0a2b353fa003212b362c3729fa790c29352806a00309292c3bfa74317b0506280b2a2d3b6b6602432b353da0032e2b362c372a352a3529353b2aab293ba003043b500203fa51102c3ba20303fa51103b503d2d6928082a692707020f2b353ca003043b500203fa3f102b3642000000|@9511,1,@14822,@10899,@1039,@7181,@7179,@9510| 18590:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14823,@10895| 18591:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14824,@9417| 18592:D11,344|fb1d2c350b0600301a65012a9291032c2a352b360b04002f312b22181a59010c5029352a362b372c382c2c2c2c6b332a250e250e260c1e2b260c021629362c2a35452a36462a37472a38482a39492a3a4a515129352a362b372c382d392e3a2e3b2a9291031e2a352b362a352a2a1a0f010c2c2e692a2a2507250726051e1c3b2705020129652d3b2a9291031d2a352b362a352a2afaf10c2c2e692a2a2507250726051e1b3b2705020129652b3b2a9291031d2a352b362a352a2afad30c2c2e692a2a2507250726051e1b3b2705020129652e3b2a9291031d2a352b362a352a2afab50c2c2e692a2a2507250726051e1b3b270502012965313b2a9291031d2a352b362a352a2afa970c2c2e692a2a2507250726051e1b3b2705020129652f3b2a9291031d2a352b362a352a2afa790c2c2e692a2a2507250726051e1b3b27050201296522162f452b462e472c482a492d4a271444000000|@10903,1,@14826,@10904,@10909,@10936,@10937,@10938,@10939,@10940,@10902| 18593:D4,8|fb02fa1c10000000|@10907,1,@14827,@10906| 18594:D13,472|fb272d352e3629352a362b372c382d392e3a220c37220d38220f353ca0032f220f36292b1ac9010c2e3ba00303290206292f1ac3010c333333332d3368062211220e452a462f472e482704f78601220f353ba00362220f36332f690b02002d2d2a929103282a352b360b02002d2f2b221b22101a8a010c5029352a362a2a692f2a250a250a26081e2726080209292c2a35452a3646515129352a36220e220e220e2c220e220e680622152c452a46334732482708f71d01220f362210372935220c3b690b02002d2d2a9291036c2a352b362a3629353ba003043b5002041a28011029362a372d372f353036221d352806a0030a221d2b3b1a16010c0207280b221e2c3b6b3c2a692e353ca003072e3629356402022e3629063c2a333b6b2c2a326a303caa2a31692a2a69220f2a2513251326111e6b26110209292c2a35452a3646515129352a36293ba00304faca02553b2a299291031229362b3caa292b25042504511e113b6502012a6529fab2a80303fab5103b502928403bda3b2c293ba003043b50021929352a362d2d3b2de3502c3caa292b2505250526031e1e2603512995502965fa89342b220e6b2c2214690b0200220e2e2e2c221ffa7c0c5029352a36309322132aaa22202d452c462a4732482713270a1f04|@10911,1,@14828,@10912,@10916,@10917,@10920,@1039,@957,72057594037927935,@2035,@18605,@10910| 18595:D5,40|fb0b2c9291031e2c352d362a362b3729352931fa2b0c2c2a692e33fa2b0c2a2a69270802013b4300|@880,1,@14829,@10913,@10912| 18596:D6,96|fb162c352d362e372f383039313afa68322e2c6bfa6a2c2b6a30353ca0032e303631382a352a352993293ba00304fa5802132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e31680627094300000000000000|@10914,1,@14830,@18598,@18597,@957| 18597:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@14832,@4374| 18598:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa39102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@10915,1,@14831,@953| 18599:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14833,@10916| 18600:D10,296|fb302f38303a3035313630352806a00309302b3b1a29010c0206280b312c3b6b2c35293ba003041a1e01103b502935293529352a372c362d382e392c352d362e372f383039313a1a060122162e2c6b1a06012c2b6a30353ca0032e303631382a352a352993293ba00304faf402132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e316806220f3622103822102b2d2c6b220e35220f3622103722113822123922133afab62d2b221a2214221222286807fab02c2b6a30353ca0032e303631382a352a352993293ba00304fa8602132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a2706020130293131312e3168063c22206934221b2b2d221c680522233caa22262b6929222569222d2c452a4627291f050000000000|@10918,1,@14834,@1039,@1921,@18602,@18603,@957,@18604,@18601| 18601:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@14838,@4374| 18602:D4,64|fb092b2a38a203052b2a362c802b2a38ab2a372a2a929103043b500203fa39102a352b362b3ba003032a020f2b3cab2a2a2505250526031e233b646565644200|@10919,1,@14835,@953| 18603:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@14836,@4374| 18604:D8,392|fb1d2b2a37a803352b2a37ab2a362a2a929103043b5002041a8501102a352b362b3ba003032a020f2b3cab2a2a2505250526031e243b64656564f745012b2a3aa8f838012b2a3aab0b03002e392e2a929103043b5002041a4601102a352b362b3ba0030e2a2e2a35452a36462a374751020e2b3cab2a2a2505250526031e2f50515129352a362b3729352a362b3734381a1501a003033c021734383b3bef3ba0030d343828081aff0028083bed02013b03032b02bb34383b3bef293ba00304faef0248293cb1292810b1293cb2292808b429fae4a503043b500203fae310292841bd2a3cb22a2a3b3bf02b3b3b32f05022133828082d280834ec50280831b12c2a282ee4502c95502c2708293b3bef2e3b3bef2a3ba003032f0253293ba003032b024b2a2ab1292810b1293cb2292808b429fa84a503043b500203fa8310292841bd2a3cb22a2a3b3bf02b3b3b32f0503228082d2808220cec50280832b1220e28082e2c220cec502c95502c27082704292c2c6a30302b6a270d02062b2a23062c80420000000000|@10919,1,@14837,@953,@294,@371,72057594037927935,@286| 18605:D4,40|fb062b2a38a203052b2a362c802b2a38ab2a37932a2aa90303fa25103b502b372b3bdb6542000000|@10922,1,@14839,@831| 18606:D6,264|fb1b2d352e3629352a362b372c382d392e3a220e353ba00343220e37293529220f2a929103282a352b360b02002d2f2b2216221afaea0c5029352a362a2a692f2a250a250a26081e263b2708020a2922102a35452a364664656502a2220e353ca00341220e3629220e2a929103282a352b360b02002d2216302c2216faaa0c5029352a362a2a692f2a250a250a26081e263b2708020a29220f2a35452a3646646564025a220e37312b690b02002d2d2a929103272a352b360b02002d2f2b2219221dfa6c0c5029352a362a2a692f2a250a250a26081e2626080209292c2a35452a3646515129352a36220c220c220c220c220c2e680622132c452a46270827081f05000000000000|@10924,1,@14840,@10925,@10910,@10923| 18607:D14,568|fb232f353da003ca2f3629352a363135323629352a362b372c382d392e3a303b690b0200220c2d2a9291035b2a352b362a352b362c382d392f353036221c352806a0030a221c2b3b1a05020c0207280b221d2c3b6b3c2a6930302b31313b3b68072d3caa2a3b69293ba003032e02062e2a1ae4010c2b2a69220d2a25112511260f1e5a260f0209292c2a35452a3646515129352a36220f2a692922151ac1011ac6010c2211350b02002c2a1ac2010c502936292f692922136922142a22142214221422146806221f220c452a46271bf763012f353ba0032d2f3630372a2a693135323629352a362b372c382d392e3a312f69292f2f2f2f2f6806221133452a46270df730012f353ca003ab2f362f35303629352a362b372c382d392e3a313729352a362b382c391a4e012a22126a2d353ca0032f2d362e382a352a352993293ba003051a3a0102132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e3b68062210352215352806a0030a221522113bfad20c0208280b221622123b6b3c2a692213382c2b2f2c6b22143caa2e2b6929221069221522152215221522152e6806221e2d452a46271a027f2f3629352a362b372c382d393435220c3629352a362b372c382d392e3a33353ea0030333021c2211352806a003092211313bfa660c0207280b2212323b6b3c2a6964fa8e221269fa912a69220cfa932bfa980c221022102e2c22103b3b6807220c3caa22122b69293469220d220d2b220d220d220d6806221b2d452a4627171f0500|@10927,1,@14841,@1039,@10928,@294,@7192,@4342,@18609,@957,@18610,@18611,@10926,@4261| 18608:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@14842,@10928| 18609:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@14843,@4374| 18610:D3,32|fb052b3629353ba0030c2938292c360c2968016502013b644200000000000000|@10929,1,@14844| 18611:D6,40|fb0e0b0400302f36fa36fa3c3b2efa400c5029352a362b372c382c2c2c2c6b270942000000000000|@10931,1,@14845,@10932,@10930,@4331| 18612:D3,8|fb022b4200000000|@10933,1,@14846| 18613:D3,8|fb022b4200000000|@10933,1,@14847| 18614:D3,8|fb022b4200000000|@10934,1,@14848| 18615:D7,168|fb1c2f35303631383135323631352806a00308312b3bfaa80c0206280b322c3b6b2c35293ba00303fa9e103b502935293729352a362b382c39fa952a22116a2d353ca0032e2d362e382a352a352993293ba00304fa8202132928403bda2b3b3b2c3b3b30eb5029955029643b2d2b6a270602012d292e3b2f2e3b6806220c3caa3b221169293b693c220e6922122a2f2d6b22132a6929221269221b30452a4627171f050000000000|@10935,1,@14849,@1039,@1921,@18616,@957| 18616:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@14850,@4374| 18617:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14851,@10936| 18618:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14852,@10937| 18619:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14853,@10938| 18620:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14854,@10939| 18621:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14855,@10940| 18622:D4,72|fb0b2c9291033f2c352d362a352e2aa003033c02192e3b3bef2a3b3befa0030d2e28082b28082d3b3befed02013b91030b2a2ffa2b0c2c2a696402072a2ffa20307e076602013b43|@693,1,@14856,@10902| 18623:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14857,@17,@394,@828,@10954,@854| 18624:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14858,@17,@10954| 18625:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14859,@18,@394,@828,@10955,@854| 18626:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14860,@18,@10955| 18627:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14861,@21,@394,@828,@10956,@854| 18628:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14862,@21,@10956| 18629:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14863,@20,@394,@828,@10957,@854| 18630:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14864,@20,@10957| 18631:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14865,@22,@394,@828,@10958,@854| 18632:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14866,@22,@10958| 18633:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14867,@19,@394,@828,@10959,@854| 18634:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14868,@19,@10959| 18635:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa222bfa27327b0507646442|@10962,1,@14869,@10961,@210| 18636:D4,56|fb092b293529353ca00310293629382c3b3bfa3ce3503b2a307d0729353da003033b020a2937292503511e273b6464644200000000000000|@10963,1,@14870,@774| 18637:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa222bfa27327b0507646442|@10962,1,@14871,@10961,@210| 18638:D5,40|fb0a2b352929353ba0030c2937292502501e0c3b64020e29362a372afa222bfa27327b0507646442|@10962,1,@14872,@10961,@210| 18639:D4,16|fb04fa242c2b366a4200000000000000|@10968,1,@14873,@18640| 18640:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4901,1,@14874,@4900| 18641:D4,16|fb062b352c362d37fa1e2e7b05030000|@10974,1,@14875,@5032| 18642:D21,144|fb15faa42d69faa82e69faac2f69fab03069fab43169fab83269fabc3369fac03469fac4220c69fac7220d69faca220e69facd220f69fad0221069fad3221169fad6221269fad9221369fadc221469fadf22156922142f452c462e472d482a49220c4a324b344c2b24083324092212240a220f240b2211240c30240d2210240e31240f220d2410220e24112712430000|@10976,1,@14876,@18644,@18646,@18648,@18650,@18652,@18654,@18656,@18659,@18662,@18665,@18668,@18671,@18674,@18677,@18680,@18683,@18686,@18643| 18643:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14922,@18689,@824| 18644:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14877,@18645,@824| 18645:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14878,@828,@17,@826| 18646:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14879,@18647,@824| 18647:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14880,@828,@18,@826| 18648:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14881,@18649,@824| 18649:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14882,@828,@19,@826| 18650:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14883,@18651,@824| 18651:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14884,@828,@20,@826| 18652:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14885,@18653,@824| 18653:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14886,@828,@21,@826| 18654:D5,24|fb082936352a3636fa262a2f6a292cfa27307e0600000000|@825,1,@14887,@18655,@824| 18655:D6,80|fb0829362a37fa600c2992910338293529299291032b29352a362a35fa52a003162a35fa4ba003043b500203fa4a102a37296801640207292503511e2a3b6502013b646402013b644200000000000000|@827,1,@14888,@828,@22,@826| 18656:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14889,@18657,@824| 18657:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14890,@17,@394,@828,@10977,@854| 18658:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14891,@17,@10977| 18659:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14892,@18660,@824| 18660:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14893,@18,@394,@828,@10978,@854| 18661:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14894,@18,@10978| 18662:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14895,@18663,@824| 18663:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14896,@19,@394,@828,@10979,@854| 18664:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14897,@19,@10979| 18665:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14898,@18666,@824| 18666:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14899,@20,@394,@828,@10980,@854| 18667:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14900,@20,@10980| 18668:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14901,@18669,@824| 18669:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14902,@21,@394,@828,@10981,@854| 18670:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14903,@21,@10981| 18671:D5,32|fb0a2b352c362b36352c3636fa2a2a2e2e6b292cfa2a327e0800000000000000|@853,1,@14904,@18672,@824| 18672:D8,48|fb09fa44fa4a2b383b6b2a362b37fa480c293ba003052a3b6902082935292cfa3f0c642c362d372bfa3e317b05060000|@855,1,@14905,@22,@394,@828,@10982,@854| 18673:D5,40|fb062c9291031c2c352d362a35fa31a003052d2a690209292efa2d0c2b2a69646502032b3b694300|@857,1,@14906,@22,@10982| 18674:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14907,@18675,@824| 18675:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14908,@10983,@874| 18676:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14909,@17,@826| 18677:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14910,@18678,@824| 18678:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14911,@10984,@874| 18679:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14912,@18,@826| 18680:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14913,@18681,@824| 18681:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14914,@10985,@874| 18682:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14915,@19,@826| 18683:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14916,@18684,@824| 18684:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14917,@10986,@874| 18685:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14918,@20,@826| 18686:D5,24|fb082936352a3636fa262a69292cfa28307e060000000000|@4958,1,@14919,@18687,@824| 18687:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14920,@10987,@874| 18688:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14921,@21,@826| 18689:D5,16|fb0629363bfa21fa272e7b0503000000|@875,1,@14923,@10988,@874| 18690:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@14924,@22,@826| 18691:D3,8|fb032b352a36a042|@11003,1,@14925| 18692:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14926,@394| 18693:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14927,@826| 18694:D3,8|fb032b352a36a042|@11003,1,@14928| 18695:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14929,@394| 18696:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14930,@826| 18697:D3,8|fb032b352a36a042|@11003,1,@14931| 18698:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14932,@394| 18699:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14933,@826| 18700:D3,8|fb032b352a36a042|@11003,1,@14934| 18701:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14935,@394| 18702:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14936,@826| 18703:D3,8|fb032b352a36a042|@11003,1,@14937| 18704:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14938,@394| 18705:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14939,@826| 18706:D3,8|fb032b352a36a042|@11003,1,@14940| 18707:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14941,@394| 18708:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14942,@826| 18709:D3,8|fb032b352a36a042|@11003,1,@14943| 18710:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14944,@394| 18711:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14945,@826| 18712:D3,8|fb032b352a36a042|@11003,1,@14946| 18713:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14947,@394| 18714:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14948,@826| 18715:D3,8|fb032b352a36a042|@11003,1,@14949| 18716:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14950,@394| 18717:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14951,@826| 18718:D3,8|fb032b352a36a042|@11003,1,@14952| 18719:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14953,@394| 18720:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14954,@826| 18721:D3,8|fb032b352a36a042|@11003,1,@14955| 18722:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14956,@394| 18723:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14957,@826| 18724:D3,8|fb032b352a36a042|@11003,1,@14958| 18725:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14959,@394| 18726:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14960,@826| 18727:D3,8|fb032b352a36a042|@11003,1,@14961| 18728:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14962,@394| 18729:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14963,@826| 18730:D3,8|fb032b352a36a042|@11003,1,@14964| 18731:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14965,@394| 18732:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14966,@826| 18733:D3,8|fb032b352a36a042|@11003,1,@14967| 18734:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14968,@394| 18735:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14969,@826| 18736:D3,8|fb032b352a36a042|@11003,1,@14970| 18737:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14971,@394| 18738:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14972,@826| 18739:D3,8|fb032b352a36a042|@11003,1,@14973| 18740:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14974,@394| 18741:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14975,@826| 18742:D3,8|fb032b352a36a042|@11003,1,@14976| 18743:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14977,@394| 18744:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14978,@826| 18745:D3,8|fb032b352a36a042|@11003,1,@14979| 18746:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14980,@394| 18747:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14981,@826| 18748:D3,8|fb032b352a36a042|@11003,1,@14982| 18749:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14983,@394| 18750:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14984,@826| 18751:D3,8|fb032b352a36a042|@11003,1,@14985| 18752:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14986,@394| 18753:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14987,@826| 18754:D3,8|fb032b352a36a042|@11003,1,@14988| 18755:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14989,@394| 18756:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14990,@826| 18757:D3,8|fb032b352a36a042|@11003,1,@14991| 18758:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14992,@394| 18759:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14993,@826| 18760:D3,8|fb032b352a36a042|@11003,1,@14994| 18761:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14995,@394| 18762:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14996,@826| 18763:D3,8|fb032b352a36a042|@11003,1,@14997| 18764:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@14998,@394| 18765:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@14999,@826| 18766:D3,8|fb032b352a36a042|@11003,1,@15000| 18767:D4,16|fb052936fa222d3b6b42000000000000|@11003,1,@15001,@394| 18768:D4,24|fb032b352a36a003043b500203fa21102b37420000000000|@11003,1,@15002,@826| 18769:D4,8|fb02fa1c10000000|@1126,1,@15003,@1125| 18770:D3,8|fb0428062c3b6a42|@11142,1,@15004| 18771:D3,16|fb062b352c362d372c362e7b05030000|@11145,1,@15005| 18772:D3,24|fb032b352806a003082b362968016402013b420000000000|@11148,1,@15006| 18773:D9,88|fb122b352c362d372e382f392c3ba20303fa5d103b503b2dfa5e0c2cfa62a003033c02142c3b3bef3ba0030b2c2808fa4f28083bed02013b0304fa4c02012c2cfa4e0c2bfa520c312c3b2d2d3c333c6808280c2a69270a42|@11152,1,@15007,@1080,@11151,@294,@1098,@10536,@10537| 18774:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c3c2a69654300|@1075,1,@15008,@11151| 18775:D9,88|fb122b352c362d372e382f392c3ba20303fa5d103b503b2dfa5e0c2cfa62a003033c02142c3b3bef3ba0030b2c2808fa4f28083bed02013b0304fa4c02012c2cfa4e0c2bfa520c312c3b2d2d3b333c6808280c2a69270a42|@11156,1,@15009,@1080,@11157,@294,@1098,@11158,@11155| 18776:D4,24|fb052c2ca003033b020c2c3caa292dfa1f0c3c2a69654300|@1075,1,@15010,@11157| 18777:D5,40|fb072b9291031f2b352c362a352808a003043b500203fa28102a362afa2a0c2a2a69270402013b42|@880,1,@15011,@1071,@11158| 18778:D4,32|fb072b929103122b352c362a3b692afa270c2a2a69270402013b420000000000|@880,1,@15012,@11155| 18779:D4,24|fb082b352c3629fa270c28072a2d3c6b6642000000000000|@11162,1,@15013,@11161| 18780:D4,32|fb072b929103122b352c362a3c692afa270c2a2a69270402013b420000000000|@880,1,@15014,@11161| 18781:D4,24|fb042b3ba20303fa27103b503d2c6928082a696442000000|@4929,1,@15015,@2118| 18782:D4,24|fb042b3ba20303fa27103b503b2c6928082a696442000000|@4929,1,@15016,@2118| 18783:D4,24|fb042b3ba20303fa27103b503c2c6928082a696442000000|@4929,1,@15017,@2118| 18784:D3,16|fb072b352c363c3b2c2c6b6542000000|@11171,1,@15018| 18785:D4,32|fb082b352c3629352806a00309292b3bfa26307b0505280b2a2c3b6b65420000|@11174,1,@15019,@1039| 18786:D3,16|fb082b352c362d3728052c2c2c6b6642|@6415,1,@15020| 18787:D6,56|fb0d2b352c363d2a69293b693bfa410c280e2a692b3ba00303290205280f2c2b6a2805302bfa316b3bfa350c3d2b2b6a2709420000000000|@11179,1,@15021,@10804,@921,@10753| 18788:D4,16|fb042bfa230c280e2a69644200000000|@11183,1,@15022,@11182| 18789:D4,32|fb072b929103122b352c362a3c692afa270c2a2a69270402013b420000000000|@880,1,@15023,@11182| 18790:D4,16|fb072b352c3629fa1f0c3d2c2b6a6642|@11187,1,@15024,@11186| 18791:D4,40|fb0a2b9291031a2b352c362a352b363b2b2b6a293c692dfa270c2a2a69270702013b420000000000|@880,1,@15025,@11186| 18792:D3,24|fb062b352c362a3ba00303290205280f2b2b6a6542000000|@11190,1,@15026| 18793:D5,24|fb042b3ba00303fa27103b502bfa290c3e2a696442000000|@11193,1,@15027,@3994,@3997| 18794:D4,56|fb0628142c3b6a2c299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fa242d7d04296442000000000000|@11196,1,@15028,@1083| 18795:D3,8|fb0328102c694200|@6592,1,@15029| 18796:D3,16|fb082b352c362d37402c2c2c6b664200|@11201,1,@15030| 18797:D3,8|fb033d2c69420000|@6851,1,@15031| 18798:D3,8|fb022b3542000000|@11206,1,@15032| 18799:D6,72|fb0e2b352c362a362b372c382b3da003062a353ca002013b03282a3629352806a0030829362968016402013b293ba00303fa2d103b502935292d31fa2b220d7b050bfa2c27054200|@11209,1,@15033,@1921,@11208,@1890| 18800:D19,248|fb213b061a09012a693b06291a09012c1a0d016b293b690b0200341a0a012b1a0e010c502936291a0e010c291a11010c1a15012210692a1a16010c29fada332d1a15010c2211fad0341a14010c280622123b6a293b692c2a6928142a3b6a2a299291031829352a362a352806a00309292503511e143b02013b6502013c64030629fae50c020129293b6929fae30c28072a323c6b22143529fade0c293b2a929103152a352b362a2c692a2a2505250526031e143b6602012965293ba003032c0205280f2a2e6a221a352a3b2bfab20c3b2a0c6429352806a0030829362968016402013b293ba00303fa9e103b502935271e44000000000000|@11210,1,@15034,@18802,@7177,@917,@11212,@4254,@9444,@11214,@18801,@9545,@9546,@9547,@1083,@1099,@10175,@1649,@1921| 18801:D3,16|fb0428062a363b6a4200000000000000|@11215,1,@15038| 18802:D3,24|fb082936352a3635292eaa2c363b3b2ce32c270442000000|@11211,1,@15035| 18803:D3,8|fb023b4200000000|@11213,1,@15036| 18804:D5,40|fb0a2b9291031d2b352c362a36293fb7293ba091fa2a2a3b6a2dfa2c0c2a2a69270702013b420000|@880,1,@15037,@3546,@11214| 18805:D7,64|fb102b352c362d370b02002c929103142c35fa442a69fa482b692c2b452a46502603020afa422a2a35452a36465129352a362a2a6931312b3bfa35220f7b060c|@11219,1,@15039,@18806,@18807,@11221,@11218| 18806:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15040| 18807:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15041| 18808:D3,8|fb023b4200000000|@11220,1,@15042| 18809:D3,8|fb023b4200000000|@11220,1,@15043| 18810:D29,1040|fb222e352f36303731383239313532362a2a69220c3ba403061a0c04f7eb032f3ca003d1303b3bef3b2aa803041a0004103b50312808dc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299130299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220e69293b693b3b3b2e2d68053c2f3b6a291a8103692b2a691a82032a691a85032a693b3b3b3b2d68053b1a80030c2214221d2b2213221e1a7b030c293b691a7c032a692d2a693b3e3b3b2d68052714f715032f929103d1303b3bef3b2aa803041a2a03103b50312808dc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299130299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220e69293b693b3b3b2e2d68053c2f3b6a291adb02692b2a691aac022a691ad7022a693b3b3b3b2d68053b1aaa020c2214221d2b2213221e1aa5020c293b691abe022a692d2a693b3e3b3b2d68052714f73f022f3ba003b42c299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e3369293b693b3b3b2e2d6805293b691a5d022a691a60022a693b3b3b3b2d6805220d1a5a020c29353da0030829362968016402013b299291032929353b1aff010c2a221a2b2210221b1afb010c293b691a34022a691a37022a691a3a022a69270602013b2c2a693b3b3b3b2d6805270df786012e353ca003152e3629352806a0030829362968016402013b6402013b299291038f2935323b3bef3b2aa803041a7d01103b502f299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220d69293b693b3b3b2e2d6805291aa801691a34012a691aa7012a693b3b3b3b2d6805332211221a1a9e010c291aa101691aa5012a692c2a69270e02ab313b3bef3b2aa80303faf1103b50322808dc28412aa5030629285aa502013b03033c020d28612aa5030629287aa502013b03033c0204292827a0299131299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220f69293b693b3b3b2e2d68053c2f3b6a291a1201692b2a69fa742a691a0f012a693b3b3b3b2d6805293b69270f3bfa6e0c3022102b2f2211fa6c0c293b69faf62a69293ba003032d02052d2afaf00c3b3e3b3b2d6805270727081f040000|@11225,1,@15044,@1313,@255,@11226,@1323,@5650,@5546,@5570,@1323,@11226,@8882,@1323,@1323,@5701,@4275,@7466,@5665,@5749,@8814,@5650,@11208,@11226,@1323,@11226,@5650,@1323,@11224| 18811:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@15045,@11224| 18812:D8,72|fb122b352c362d370b02002c929103142c35fa4c2a69fa502b692c2b452a46502603020afa4a2a2a35452a36465129352a362a2a693bfa400c32322b2d3bfa4022117b070d000000|@11230,1,@15046,@18813,@18814,@11229,@5546,@5570| 18813:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15047| 18814:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15048| 18815:D3,8|fb023b4200000000|@11220,1,@15049| 18816:D3,8|fb023b4200000000|@11220,1,@15050| 18817:D3,8|fb022b3842000000|@11235,1,@15051| 18818:D4,40|fb042b36293da003092c3729353ca06402013b03043b500203fa25102c3729366542000000000000|@11239,1,@15052,@11238| 18819:D4,24|fb072b382c39280d2b692afa230c2a2a6927044200000000|@11244,1,@15053,@7709| 18820:D3,24|fb042b3629929103033c02033b2aa0644200000000000000|@11247,1,@15054| 18821:D3,16|fb042b363b2aa0644200000000000000|@11250,1,@15055| 18822:D3,8|fb032b3529356442|@11252,1,@15056| 18823:D7,64|fb102b352c362d370b02002c929103142c35fa442a69fa482b692c2b452a46502603020afa422a2a35452a36465129352a362a2a6931312b3bfa35220f7b060c|@11255,1,@15057,@18824,@18825,@11254,@8803| 18824:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15058| 18825:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15059| 18826:D3,8|fb023b4200000000|@11220,1,@15060| 18827:D3,8|fb023b4200000000|@11220,1,@15061| 18828:D4,16|fb062b35293729fa1f2e7d0500000000|@11259,1,@15062,@7709| 18829:D3,8|fb022b3542000000|@11261,1,@15063| 18830:D4,16|fb062b352c362d37fa1e2e7b05030000|@11264,1,@15064,@11263| 18831:D13,240|fb1e0b02002e929103162e351af9002a691afc002b692c2b452a46502603020afaf62a2a35452a36465129352a362a2a6933353437220c38220c3ba40304fae002a729299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d680529fa9669fa9b2a69fa9f2a693b3b3b3b2d680522153cab343629fa95a003033c0214293b3bef3ba0030b292808fa8228083bed02013b030c220c2b3c22113bfa780c02033e2a69293b69fa752a692e2a693b3b3b3b2d6805270f27094400000000|@11266,1,@15065,@18832,@18833,@11267,@1313,@11270,@1323,@5657,@294,@11265,@1717| 18832:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15066| 18833:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15067| 18834:D3,8|fb023b4200000000|@11220,1,@15068| 18835:D3,8|fb023b4200000000|@11220,1,@15069| 18836:D16,168|fb1c2f3530392e352f362cfab30c2923082a230c329291030d3235faab302b6a2968016502032e6801faa52a302e6bfaa72b302e6b2a2a692b2b6922113ca40304fa9d02503b06fa9f2a69220d3b2bfa9f0c502a3529faa0faa60c293b2a9291032f2a352b362a352b36221b220c2210220dfa940c2c3ba00303290205292dfa8f0c2b2a2506250626041e2d3b270402012965270429fa800cfa852a693b3b3c3b2d6805270f1f05|@11272,1,@15070,@1130,@18837,@18838,@18839,@11274,@18840,@874,@11275,@2568,@11278,@11280,@11271,@5544| 18837:D4,16|fb062b2a362b37fa1f2e7b0503000000|@4375,1,@15071,@4374| 18838:D3,32|fb052b2a380c299291030c2935292c36692968016502062c2b372d7d04644200|@11273,1,@15072| 18839:D3,32|fb052b2a380c299291030c2935292c36692968016502062c2b372d7d04644200|@11273,1,@15073| 18840:D3,48|fb0c2c2c2a929103222a352b36312b692e36352a2a6930363b3b2ce32d2a2508250826061e203b270602012965440000|@877,1,@15074| 18841:D4,8|fb03fa1c2c694200|@11276,1,@15075,@18842| 18842:D3,48|fb0b2b352a3635293b3bef2b3b3bef2a2aa303032a0201292c28082f28082dee293ba003052c2ca70203293ba6270642|@11277,1,@15076| 18843:D35,672|fb1a2f351ab102a003b32f351aa902a003043b5002041aa702102f372f3cab2a362b382b3ba403051a9d02028329299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2d69293b693b3b3b2e2d6805291a5202691a56022a691a59022a693b3b3b3b2d6805220c220c3c22143b1a4d020c293b691a4e022a692c2a693b3b3b3b2d6805270d293b691a42022a692706f7e0012f351a3e02a003e02f351a3602a003043b5002041aec01102f372f3cab2a352b372c382c3ba403051a200202af29299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2e69293b693b3b3b2e2d6805291ad501691ad9012a691adc012a693b3b3b3b2d6805220c3cab3436291ad101a003033c0215293b3bef3ba0030c2928081abd0128083bed02013b030e220c2b3c221722171a69010c02033e2a69293b691aa5012a692e2a693b3b3b3b2d6805270f293b691a99012a69270702f82f351a9601a003252f351a8e01a003043b5002041a0401102f3729302e301a82010c293b691a83012a696602cb2f351a8101a0032f2f351a7901a003043b500203fad8102f37293629929103033b02112a3131311a64010c293b691a65012a69656502942f351a6201a0038b2f351a5a01a003043b500203faa1102f3729352a3629353ca003232936293c1a45010c3e2a69293b691a43012a691a46012a693b3b3b3b2d68052706022c29353ba003232936293c1a1c010c3e2a69293b691a2a012a691a2d012a693b3b3b3b2d6805270602031a25013e2c69293b691a24012a692c2a693b3b3b3b2d6805293b691a1a012a69270a02013b1f0600|@11279,1,@15077,@20,@826,@1313,@8814,@1323,@5773,@11265,@1717,@1717,@21,@1313,@11270,@1323,@5657,@294,@1717,@1717,@19,@8803,@1717,@18,@11218,@1717,@17,@801,@1323,@5689,@1323,@5690,@5691,@1323,@1717| 18844:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@15078,@11280| 18845:D5,24|fb062b9291030e2b352c3629fa220c2b2a69660202fa2142|@1716,1,@15079,@11271,@1866| 18846:D4,24|fb032b3629353ca003043b500203fa201029366442000000|@11283,1,@15080,@11282| 18847:D4,16|fb052b3829fa212d7d04000000000000|@11287,1,@15081,@7709| 18848:D4,112|fb380b120022152afa7e0c5029352a362b372c382d392e3a2f230630230731230832230933230a34230b220c230c220d230d220e230e220f230f221023102211231122112211221122112211221122112211221122112211221122112211221122112211221168122725420000000000|@11291,1,@15082,@11290| 18849:D16,104|fb0b2c372935fa782f2b6afa7b302c6afa7e312d6afa81322e6afa84332f6afa8734306a33fa8945fa8e462c472b48fa8f49fa944afa914bfa8e4c2a2408fa882409fa8c240afa90240b2f240cfa79240d2e240efa72240ffa8624102d2411270843000000000000|@11293,1,@15083,@18850,@18851,@18852,@18853,@18856,@18859,@11306,@11308,@11309,@11310,@11315,@11316,@11292| 18850:D7,96|fb0829372cfa710c2992910338293529299291032b29352a362a35fa63a003162a35fa5ca003043b500203fa5b102a37296801640207292503511e2a3b6502013b646402013b299291030e2935292d36fa3e0c2968016502013b654200000000|@11294,1,@15084,@828,@18,@826,@7144| 18851:D10,184|fb1429372cfac90c2992910338293529299291032b29352a362a35fabba003162a35fab4a003043b500203fab3102a37296801640207292503511e2a3b6502013b646402013b299291036a29352c363729392e3635293b3bef293ba00304fa880246293cb1292810b1293cb2292808b429fa7da503043b500203fa7c10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082e2d2bfa530c296801270702013b6542|@11295,1,@15085,@828,@19,@826,@371,72057594037927935,@286,@7192| 18852:D7,96|fb0829372cfa710c2992910338293529299291032b29352a362a35fa63a003162a35fa5ca003043b500203fa5b102a37296801640207292503511e2a3b6502013b646402013b299291030e2935292d36fa3e0c2968016502013b654200000000|@11296,1,@15086,@828,@21,@826,@7140| 18853:D6,24|fb0629373bfa29fa2f0c292b36fa312e7e04000000000000|@11298,1,@15087,@11299,@874,@11297| 18854:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@15088,@18,@826| 18855:D5,40|fb0a2c9291031c2c352d362a352b362930fa2d0c2b2a692d32fa2d0c2a2a69270702013b43000000|@880,1,@15089,@7144,@11297| 18856:D6,24|fb0629373bfa29fa2f0c292b36fa312e7e04000000000000|@11301,1,@15090,@11302,@874,@11300| 18857:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@15091,@19,@826| 18858:D8,128|fb152c929103772c352d362a352b362f3729393135293b3bef293ba00304fa780246293cb1292810b1293cb2292808b429fa6da503043b500203fa6c10292841bd2a3cb22a2a3b3bf02b3b3b32f0503128082d280834ec50280831b12c2a282ee4502c95502c27082e2d2bfa430c302a6932220efa420c2a2a69270c02013b43|@880,1,@15092,@371,72057594037927935,@286,@7192,@11300| 18859:D6,24|fb0629373bfa29fa2f0c292b36fa312e7e04000000000000|@11304,1,@15093,@11305,@874,@11303| 18860:D5,64|fb092c2c2a929103332a352b362a35fa47a003192a35fa40a003043b500203fa3f102a37322a69292e696502012b2a2a2505250526031e323b66020129654400|@877,1,@15094,@21,@826| 18861:D5,40|fb0a2c9291031c2c352d362a352b362930fa2d0c2b2a692d32fa2d0c2a2a69270702013b43000000|@880,1,@15095,@7140,@11303| 18862:D3,8|fb023b4200000000|@11307,1,@15096| 18863:D3,8|fb023b4200000000|@11307,1,@15097| 18864:D3,8|fb023b4200000000|@11307,1,@15098| 18865:D4,8|fb02fa1c10000000|@11312,1,@15099,@11311| 18866:D3,8|fb023b4200000000|@11307,1,@15100| 18867:D3,8|fb023b4200000000|@11307,1,@15101| 18868:D3,8|fb023b4200000000|@11307,1,@15102| 18869:D3,8|fb022b3642000000|@11318,1,@15103| 18870:D12,200|fb1e2b352c362d370b02002c929103142c35facc2a69fad02b692c2b452a46502603020afaca2a2a35452a36465129352a362a2a6931363238323ba40304fab8027e29299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e2d69293b693b3b3b2e2d680529fa6e69fa732a69fa772a693b3b3b3b2d6805221322133c220e3bfa6c0c293b69fa6e2a692c2a693b3b3b3b2d6805270d270b420000000000|@11321,1,@15104,@18871,@18872,@11320,@1313,@8814,@1323,@5773,@11265,@1717| 18871:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15105| 18872:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15106| 18873:D3,8|fb023b4200000000|@11220,1,@15107| 18874:D3,8|fb023b4200000000|@11220,1,@15108| 18875:D4,16|fb052b3829fa212d7d04000000000000|@11325,1,@15109,@7709| 18876:D3,8|fb022b3642000000|@11327,1,@15110| 18877:D7,64|fb0f2b352c362d370b02002c929103142c35fa442a69fa482b692c2b452a46502603020afa422a2a35452a36465129352a362a2a6931312bfa36220e7b050c00|@11330,1,@15111,@18878,@18879,@11331,@11329| 18878:D3,32|fb052b2a36230e0c299291030b2935293b692968016502013b64420000000000|@11220,1,@15112| 18879:D3,32|fb052b2a3623110c299291030b2935293b692968016502013b64420000000000|@11220,1,@15113| 18880:D3,8|fb023b4200000000|@11220,1,@15114| 18881:D3,8|fb023b4200000000|@11220,1,@15115| 18882:D19,440|fb282d352e362f383039303ba403061abe01f79b012c3729352e35291ab901a003033c0215293b3bef3ba0030c2928081aa50128083bed02013b9103173e2a69291a9c01693b3b3b3b2d6805291a9801696602013b343cab2d36291a7a01a003033c0215293b3bef3ba0030c2928081a660128083bed02013b030c2e2b3b220f3b1a6c010c02033e2a69291a6a0169293ba003032d02062d2a1a64010c2f1a3701a003033c02152f3b3bef3ba0030c2f28081a230128083bed02013b0320301a46010c2923082a230c1a440122132c6a1a450122142c6a2a2a6927050210220f351a3c01220e2212336b2a2a696533299291031929352a362a353ba003052a68010207292503511e183b6502013b642992910309293529353ba06402013b030d293529363b2a69293b696602013b3e220f69293b693b3b3b2e2d680529fae969faee2a69faf22a693b3b3b3b2d68053b3b3b3b220e6805293b69fae42a692c2a693b3b3b3b2d6805221f3cab221a3629fa66a003033c0214293b3bef3ba0030b292808fa5328083bed02013b030c221b2b3c22133bfa590c02033e2a69293b69faa62a692e2a693b3b3b3b2d6805271e2704440000000000|@11335,1,@15116,@1313,@294,@11270,@5542,@11265,@11336,@11340,@1130,@18884,@18885,@18886,@11334,@1323,@5770,@1797,@1797| 18883:D4,24|fb062c9291030f2c352d36292efa210c2b2a696602012b43|@1716,1,@15117,@11340| 18884:D3,32|fb052b2a370c299291030b2935293b692968016502072c2b36352d7d04644200|@11341,1,@15118| 18885:D3,32|fb052b2a370c299291030b2935293b692968016502072c2b36362d7d04644200|@11341,1,@15119| 18886:D3,64|fb082b2a38a003033c021c2b3b3bef2a383b3befa0030f2b28082b3828082d383b3befed02013b030a29363b692968016402062b2a37362c8042000000000000|@11341,1,@15120| 18887:D4,24|fb032b3729353ca003043b500203fa201029366442000000|@11345,1,@15121,@11344| 18888:D4,16|fb052b3929fa212d7d04000000000000|@11349,1,@15122,@7709| 18889:D3,8|fb022b3542000000|@11351,1,@15123| 18890:D10,112|fb0e2b352c3629353ca003202936293cfa760c3e2a69293b69fa752a69fa792a693b3b3b3b2d68052706022829353ba003202936293cfa500c3e2a69293b69fa5f2a69fa632a693b3b3b3b2d680527060202fa5c3e2c69293b69fa5c2a692c2a693b3b3b3b2d68052707420000000000|@11352,1,@15124,@801,@1323,@5689,@1323,@5690,@5691,@1323| 18891:D4,8|fb032c2cfa1a8b43|@685,1,@15125,@18927| 18892:D4,8|fb022bfa1b8a4200|@11358,1,@15126,@18928| 18893:D3,8|fb023b4200000000|@11360,1,@15127| 18894:D3,8|fb023b4200000000|@11360,1,@15128| 18895:D3,8|fb023b4200000000|@11360,1,@15129| 11362:MB8|0000000000000000 11363:MB8|0000000000000000 11364:MB8|0000000000000000 11365:MB8|0000000000000000 11366:MB8|0000000000000000 11367:MB4096|4372656174656420737472756374757265204d4c436f6d70696c65720a73696f6e0a0a69670a670a540a46554e4354494f4e530a35290a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 11368:MB8|0000000000000000 11369:MB8|0000000000000000 11370:MB8|0000000000000000 11371:MB8|0000000000000000 11372:MB8|0000000000000000 11373:MB8|0000000000000000 11374:MB8|0000000000000000 11375:MB8|0000000000000000 11376:MB8|0000000000000000 11377:MB8|0000000000000000 11378:MB8|0000000000000000 11379:MB8|0000000000000000 11380:MB8|0000000000000000 11381:MB8|0000000000000000 11382:MB8|0000000000000000 11383:MB8|0000000000000000 11384:MB8|0000000000000000 11385:MB8|0000000000000000 11386:MB8|0000000000000000 11387:MB8|0000000000000000 11388:MB8|0000000000000000 11389:MB8|0000000000000000 11390:MB8|0000000000000000 11391:MB8|0000000000000000 11392:MB8|0000000000000000 11393:MB8|0000000000000000 11394:MB8|0000000000000000 11395:MB8|0000000000000000 11396:MB8|0000000000000000 11397:MB8|0000000000000000 11398:MB8|0000000000000000 11399:MB8|0000000000000000 11400:MB8|0000000000000000 11401:MB8|0000000000000000 11402:MB8|0000000000000000 11403:MB8|0000000000000000 11404:MB8|0000000000000000 11405:MB8|0000000000000000 11406:MB8|0000000000000000 11407:MB8|0000000000000000 11408:MB8|0000000000000000 11409:MB8|0000000000000000 11410:MB8|0000000000000000 11411:MB8|0000000000000000 11412:MB8|0000000000000000 11413:MB8|0000000000000000 11414:MB8|0000000000000000 11415:MB8|0000000000000000 11416:MB8|0000000000000000 11417:MB8|0000000000000000 11418:MB8|0000000000000000 11419:MB8|0000000000000000 11420:MB8|0000000000000000 11421:MB8|0000000000000000 11422:MB8|0000000000000000 11423:MB8|0000000000000000 11424:MB8|0000000000000000 11425:MB8|0000000000000000 11426:MB8|0000000000000000 11427:MB8|0000000000000000 11428:MB8|0000000000000000 11429:MB8|0000000000000000 11430:MB8|0000000000000000 11431:MB8|0000000000000000 11432:MB8|0000000000000000 11433:MB8|0000000000000000 11434:MB8|0000000000000000 11435:MB8|0000000000000000 11436:MB8|0000000000000000 11437:MB8|0000000000000000 11438:MB8|0000000000000000 11439:MB8|0000000000000000 11440:MB8|0000000000000000 11441:MB8|0000000000000000 11442:MB8|0000000000000000 11443:MB8|0000000000000000 11444:MB8|0000000000000000 11445:MB8|0000000000000000 11446:MB8|0000000000000000 11447:MB8|0000000000000000 11448:MB8|0000000000000000 11449:MB8|0000000000000000 11450:MB8|0000000000000000 11451:MB4096|20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 11452:MB8|0000000000000000 11453:MB8|0000000000000000 11454:MB8|0000000000000000 11455:MB8|0000000000000000 11456:MB8|0000000000000000 11457:MB8|0000000000000000 11458:MB8|0000000000000000 11459:MB8|0000000000000000 11460:MB8|0000000000000000 11461:MB8|0000000000000000 11462:MB8|0000000000000000 11463:MB8|0000000000000000 11464:MB8|0000000000000000 11465:MB8|0000000000000000 11466:MB8|0000000000000000 11467:MB8|0000000000000000 11468:MB8|0000000000000000 11469:MB8|0000000000000000 11470:MB8|0000000000000000 11471:MB8|0000000000000000 11472:MB8|0000000000000000 11473:MB8|0000000000000000 11474:MB8|0000000000000000 11475:MB8|0000000000000000 11476:MB8|0000000000000000 11477:MB8|0000000000000000 11478:MB8|0000000000000000 11479:MB8|0000000000000000 11480:MB8|0000000000000000 11481:MB8|0000000000000000 11482:MB8|0000000000000000 11483:MB8|0000000000000000 11484:MB8|0000000000000000 11485:MB8|0000000000000000 11486:MB8|0000000000000000 11487:MB8|0000000000000000 11488:MB8|0000000000000000 11489:MB8|0000000000000000 11490:MB8|0000000000000000 11491:MB8|0000000000000000 11492:MB8|0000000000000000 11493:MB8|0000000000000000 11494:MB8|0000000000000000 11495:MB8|0000000000000000 11496:MB8|0000000000000000 11497:MB8|0000000000000000 11498:MB8|0000000000000000 11499:MB8|0000000000000000 11500:MB8|0000000000000000 11501:MB8|0000000000000000 11502:MB8|0000000000000000 11503:MB8|0000000000000000 11504:MB8|0000000000000000 11505:MB8|0000000000000000 11506:MB8|0000000000000000 11507:MB8|0000000000000000 11508:MB8|0000000000000000 11509:MB8|0000000000000000 11510:MB8|0000000000000000 11511:MB8|0000000000000000 11512:MB8|0000000000000000 11513:MB8|0000000000000000 11514:MB8|0000000000000000 11515:MB8|0000000000000000 11516:MB8|0000000000000000 11517:MB8|0000000000000000 11518:MB8|0000000000000000 11519:MB8|0000000000000000 11520:MB8|0000000000000000 11521:MB8|0000000000000000 11522:MB8|0000000000000000 11523:MB8|0000000000000000 11524:MB8|0000000000000000 11525:MB8|0000000000000000 11526:MB8|0000000000000000 11527:MB8|0000000000000000 11528:MB8|0000000000000000 11529:MB8|0000000000000000 11530:MB8|0000000000000000 11531:MB8|0000000000000000 11532:MB8|0000000000000000 11533:MB8|0000000000000000 11534:MB8|0000000000000000 11535:MB8|0000000000000000 11536:MB8|0000000000000000 11537:MB8|0000000000000000 11538:MB8|0000000000000000 11539:MB8|0000000000000000 11540:MB8|0000000000000000 11541:MB8|0000000000000000 11542:MB8|0000000000000000 11543:MB8|0000000000000000 11544:MB8|0000000000000000 11545:MB8|0000000000000000 11546:MB8|0000000000000000 11547:MB8|0000000000000000 11548:MB8|0000000000000000 11549:MB8|0000000000000000 11550:MB8|0000000000000000 11551:MB8|0000000000000000 11552:MB8|0000000000000000 11553:MB8|0000000000000000 11554:MB8|0000000000000000 11555:MB8|0000000000000000 11556:MB8|0000000000000000 11557:MB8|0000000000000000 11558:MB8|0000000000000000 11559:MB8|0000000000000000 11560:MB8|0000000000000000 11561:MB8|0000000000000000 11562:MB8|0000000000000000 11563:MB8|0000000000000000 11564:MB8|0000000000000000 11565:MB8|0000000000000000 11566:MB8|0000000000000000 11567:MB8|0000000000000000 11568:MB8|0000000000000000 11569:MB8|0000000000000000 11570:MB8|0000000000000000 11571:MB8|0000000000000000 11572:MB8|0000000000000000 11573:MB8|0000000000000000 11574:MB8|0000000000000000 11575:MB8|0000000000000000 11576:MB8|0000000000000000 11577:MB8|0000000000000000 11578:MB8|0000000000000000 11579:MB8|0000000000000000 11580:MB8|0000000000000000 11581:MB8|0000000000000000 11582:MB8|0000000000000000 11583:MB8|0000000000000000 11584:MB8|0000000000000000 11585:MB8|0000000000000000 11586:MB8|0000000000000000 11587:MB8|0000000000000000 11588:MB8|0000000000000000 11589:MB8|0000000000000000 11590:MB8|0000000000000000 11591:MB8|0000000000000000 11592:MB8|0000000000000000 11593:MB8|0000000000000000 11594:MB8|0000000000000000 11595:MB8|0000000000000000 11596:MB8|0000000000000000 11597:MB8|0000000000000000 11598:MB8|0000000000000000 11599:MB8|0000000000000000 11600:MB8|0000000000000000 11601:MB8|0000000000000000 11602:MB8|0000000000000000 11603:MB8|0000000000000000 11604:MB8|0000000000000000 11605:MB8|0000000000000000 11606:MB8|0000000000000000 11607:MB8|0000000000000000 11608:MB8|0000000000000000 11609:MB8|0000000000000000 11610:MB8|0000000000000000 11611:MB8|0000000000000000 11612:MB8|0000000000000000 11613:MB8|0000000000000000 11614:MB8|0000000000000000 11615:MB8|0000000000000000 11616:MB8|0000000000000000 11617:MB8|0000000000000000 11618:MB8|0000000000000000 11619:MB8|0000000000000000 11620:MB8|0000000000000000 11621:MB8|0000000000000000 11622:MB8|0000000000000000 11623:MB8|0000000000000000 11624:MB8|0000000000000000 11625:MB8|0000000000000000 11626:MB8|0000000000000000 11627:MB8|0000000000000000 11628:MB8|0000000000000000 11629:MB8|0000000000000000 11630:MB8|0000000000000000 11631:MB8|0000000000000000 11632:MB8|0000000000000000 11633:MB8|0000000000000000 11634:MB8|0000000000000000 11635:MB8|0000000000000000 11636:MB8|0000000000000000 11637:MB8|0000000000000000 11638:MB8|0000000000000000 11639:MB8|0000000000000000 11640:MB8|0000000000000000 11641:MB8|0000000000000000 11642:MB8|0000000000000000 11643:MB8|0000000000000000 11644:MB8|0000000000000000 11645:MB8|0000000000000000 11646:MB8|0000000000000000 11647:MB8|0000000000000000 11648:MB8|0000000000000000 11649:MB8|0000000000000000 11650:MB8|0000000000000000 11651:MB8|0000000000000000 11652:MB8|0000000000000000 11653:MB8|0000000000000000 11654:MB8|0000000000000000 11655:MB8|0000000000000000 11656:MB8|0000000000000000 11657:MB8|0000000000000000 11658:MB8|0000000000000000 11659:MB8|0000000000000000 11660:MB8|0000000000000000 11661:MB8|0000000000000000 11662:MB8|0000000000000000 11663:MB8|0000000000000000 11664:MB8|0000000000000000 11665:MB8|0000000000000000 11666:MB8|0000000000000000 11667:MB8|0000000000000000 11668:MB8|0000000000000000 11669:MB8|0000000000000000 11670:MB8|0000000000000000 11671:MB8|0000000000000000 11672:MB8|0000000000000000 11673:MB8|0000000000000000 11674:MB8|0000000000000000 11675:MB8|0000000000000000 11676:MB8|0000000000000000 11677:MB8|0000000000000000 11678:MB8|0000000000000000 11679:MB8|0000000000000000 11680:MB8|0000000000000000 11681:MB8|0000000000000000 11682:MB8|0000000000000000 11683:MB8|0000000000000000 11684:MB8|0000000000000000 11685:MB8|0000000000000000 11686:MB8|0000000000000000 11687:MB8|0000000000000000 11688:MB8|0000000000000000 11689:MB8|0000000000000000 11690:MB8|0000000000000000 11691:MB8|0000000000000000 11692:MB8|0000000000000000 11693:MB8|0000000000000000 11694:MB8|0000000000000000 11695:MB8|0000000000000000 11696:MB8|0000000000000000 11697:MB8|0000000000000000 11698:MB8|0000000000000000 11699:MB8|0000000000000000 11700:MB8|0000000000000000 11701:MB8|0000000000000000 11702:MB8|0000000000000000 11703:MB8|0000000000000000 11704:MB8|0000000000000000 11705:MB8|0000000000000000 11706:MB8|0000000000000000 11707:MB8|0000000000000000 11708:MB8|0000000000000000 11709:MB8|0000000000000000 11710:MB8|0000000000000000 11711:MB8|0000000000000000 11712:MB8|0000000000000000 11713:MB8|0000000000000000 11714:MB8|0000000000000000 11715:MB8|0000000000000000 11716:MB8|0000000000000000 11717:MB8|0000000000000000 11718:MB8|0000000000000000 11719:MB8|0000000000000000 11720:MB8|0000000000000000 11721:MB8|0000000000000000 11722:MB8|0000000000000000 11723:MB8|0000000000000000 11724:MB8|0000000000000000 11725:MB8|0000000000000000 11726:MB8|0000000000000000 11727:MB8|0000000000000000 11728:MB8|0000000000000000 11729:MB8|0000000000000000 11730:MB8|0000000000000000 11731:MB8|0000000000000000 11732:MB8|0000000000000000 11733:MB8|0000000000000000 11734:MB8|0000000000000000 11735:MB8|0000000000000000 11736:MB8|0000000000000000 11737:MB8|0000000000000000 11738:MB8|0000000000000000 11739:MB8|0000000000000000 11740:MB8|0000000000000000 11741:MB8|0000000000000000 11742:MB8|0000000000000000 11743:MB8|0000000000000000 11744:MB8|0000000000000000 11745:MB8|0000000000000000 11746:MB8|0000000000000000 11747:MB8|0000000000000000 11748:MB8|0000000000000000 11749:MB8|0000000000000000 11750:MB8|0000000000000000 11751:MB8|0000000000000000 11752:MB8|0000000000000000 11753:MB8|0000000000000000 11754:MB8|0000000000000000 11755:MB8|0000000000000000 11756:MB8|0000000000000000 11757:MB8|0000000000000000 11758:MB8|0000000000000000 11759:MB8|0000000000000000 11760:MB8|0000000000000000 11761:MB8|0000000000000000 11762:MB8|0000000000000000 11763:MB8|0000000000000000 11764:MB8|0000000000000000 11765:MB8|0000000000000000 11766:MB8|0000000000000000 11767:MB8|0000000000000000 11768:MB8|0000000000000000 11769:MB8|0000000000000000 11770:MB8|0000000000000000 11771:MB8|0000000000000000 11772:MB8|0000000000000000 11773:MB8|0000000000000000 11774:MB8|0000000000000000 11775:MB8|0000000000000000 11776:MB8|0000000000000000 11777:MB8|0000000000000000 11778:MB8|0000000000000000 11779:MB8|0000000000000000 11780:MB8|0000000000000000 11781:MB8|0000000000000000 11782:MB8|0000000000000000 11783:MB8|0000000000000000 11784:MB8|0000000000000000 11785:MB8|0000000000000000 11786:MB8|0000000000000000 11787:MB8|0000000000000000 11788:MB8|0000000000000000 11789:MB8|0000000000000000 11790:MB8|0000000000000000 11791:MB8|0000000000000000 11792:MB8|0000000000000000 11793:MB8|0000000000000000 11794:MB8|0000000000000000 11795:MB8|0000000000000000 11796:MB8|0000000000000000 11797:MB8|0000000000000000 11798:MB8|0000000000000000 11799:MB8|0000000000000000 11800:MB8|0000000000000000 11801:MB8|0000000000000000 11802:MB8|0000000000000000 11803:MB8|0000000000000000 11804:MB8|0000000000000000 11805:MB8|0000000000000000 11806:MB8|0000000000000000 11807:MB8|0000000000000000 11808:MB8|0000000000000000 11809:MB8|0000000000000000 11810:MB8|0000000000000000 11811:MB8|0000000000000000 11812:MB8|0000000000000000 11813:MB8|0000000000000000 11814:MB8|0000000000000000 11815:MB8|0000000000000000 11816:MB8|0000000000000000 11817:MB8|0000000000000000 11818:MB8|0000000000000000 11819:MB8|0000000000000000 11820:MB8|0000000000000000 11821:MB8|0000000000000000 11822:MB8|0000000000000000 11823:MB8|0000000000000000 11824:MB8|0000000000000000 11825:MB8|0000000000000000 11826:MB8|0000000000000000 11827:MB8|0000000000000000 11828:MB8|0000000000000000 11829:MB8|0000000000000000 11830:MB8|0000000000000000 11831:MB8|0000000000000000 11832:MB8|0000000000000000 11833:MB8|0000000000000000 11834:MB8|0000000000000000 11835:MB8|0000000000000000 11836:MB8|0000000000000000 11837:MB8|0000000000000000 11838:MB8|0000000000000000 11839:MB8|0000000000000000 11840:MB8|0000000000000000 11841:MB8|0000000000000000 11842:MB8|0000000000000000 11843:MB8|0000000000000000 11844:MB8|0000000000000000 11845:MB8|0000000000000000 11846:MB8|0000000000000000 11847:MB8|0000000000000000 11848:MB8|0000000000000000 11849:MB8|0000000000000000 11850:MB8|0000000000000000 11851:MB8|0000000000000000 11852:MB8|0000000000000000 11853:MB8|0000000000000000 11854:MB8|0000000000000000 11855:MB8|0000000000000000 11856:MB8|0000000000000000 11857:MB8|0000000000000000 11858:MB8|0000000000000000 11859:MB8|0000000000000000 11860:MB8|0000000000000000 11861:MB8|0000000000000000 11862:MB8|0000000000000000 11863:MB8|0000000000000000 11864:MB8|0000000000000000 11865:MB8|0000000000000000 11866:MB8|0000000000000000 11867:MB8|0000000000000000 11868:MB8|0000000000000000 11869:MB8|0000000000000000 11870:MB8|0000000000000000 11871:MB8|0000000000000000 11872:MB8|0000000000000000 11873:MB8|0000000000000000 11874:MB8|0000000000000000 11875:MB8|0000000000000000 11876:MB8|0000000000000000 11877:MB8|0000000000000000 11878:MB8|0000000000000000 11879:MB8|0000000000000000 11880:MB8|0000000000000000 11881:MB8|0000000000000000 11882:MB8|0000000000000000 11883:MB8|0000000000000000 11884:MB8|0000000000000000 11885:MB8|0000000000000000 11886:MB8|0000000000000000 11887:MB8|0000000000000000 11888:MB8|0000000000000000 11889:MB8|0000000000000000 11890:MB8|0000000000000000 11891:MB8|0000000000000000 11892:MB8|0000000000000000 11893:MB8|0000000000000000 11894:MB8|0000000000000000 11895:MB8|0000000000000000 11896:MB8|0000000000000000 11897:MB8|0000000000000000 11898:MB8|0000000000000000 11899:MB8|0000000000000000 11900:MB8|0000000000000000 11901:MB8|0000000000000000 11902:MB8|0000000000000000 11903:MB8|0000000000000000 11904:MB8|0000000000000000 11905:MB8|0000000000000000 11906:MB8|0000000000000000 11907:MB8|0000000000000000 11908:MB8|0000000000000000 11909:MB8|0000000000000000 11910:MB8|0000000000000000 11911:MB8|0000000000000000 11912:MB8|0000000000000000 11913:MB8|0000000000000000 11914:MB8|0000000000000000 11915:MB8|0000000000000000 11916:MB8|0000000000000000 11917:MB8|0000000000000000 11918:MB8|0000000000000000 11919:MB8|0000000000000000 11920:MB8|0000000000000000 11921:MB8|0000000000000000 11922:MB8|0000000000000000 11923:MB8|0000000000000000 11924:MB8|0000000000000000 11925:MB8|0000000000000000 11926:MB8|0000000000000000 11927:MB8|0000000000000000 11928:MB8|0000000000000000 11929:MB8|0000000000000000 11930:MB8|0000000000000000 11931:MB8|0000000000000000 11932:MB8|0000000000000000 11933:MB8|0000000000000000 11934:MB8|0000000000000000 11935:MB8|0000000000000000 11936:MB8|0000000000000000 11937:MB8|0000000000000000 11938:MB8|0000000000000000 11939:MB8|0000000000000000 11940:MB8|0000000000000000 11941:MB8|0000000000000000 11942:MB8|0000000000000000 11943:MB8|0000000000000000 11944:MB8|0000000000000000 11945:MB8|0000000000000000 11946:MB8|0000000000000000 11947:MB8|0000000000000000 11948:MB8|0000000000000000 11949:MB8|0000000000000000 11950:MB8|0000000000000000 11951:MB8|0000000000000000 11952:MB8|0000000000000000 11953:MB8|0000000000000000 11954:MB8|0000000000000000 11955:MB8|0000000000000000 11956:MB8|0000000000000000 11957:MB8|0000000000000000 11958:MB8|0000000000000000 11959:MB8|0000000000000000 11960:MB8|0000000000000000 11961:MB8|0000000000000000 11962:MB8|0000000000000000 11963:MB8|0000000000000000 11964:MB8|0000000000000000 11965:MB8|0000000000000000 11966:MB8|0000000000000000 11967:MB8|0000000000000000 11968:MB8|0000000000000000 11969:MB8|0000000000000000 11970:MB8|0000000000000000 11971:MB8|0000000000000000 11972:MB8|0000000000000000 11973:MB8|0000000000000000 11974:MB8|0000000000000000 11975:MB8|0000000000000000 11976:MB8|0000000000000000 11977:MB8|0000000000000000 11978:MB8|0000000000000000 11979:MB8|0000000000000000 11980:MB8|0000000000000000 11981:MB8|0000000000000000 11982:MB8|0000000000000000 11983:MB8|0000000000000000 11984:MB8|0000000000000000 11985:MB8|0000000000000000 11986:MB8|0000000000000000 11987:MB8|0000000000000000 11988:MB8|0000000000000000 11989:MB8|0000000000000000 11990:MB8|0000000000000000 11991:MB8|0000000000000000 11992:MB8|0000000000000000 11993:MB8|0000000000000000 11994:MB8|0000000000000000 11995:MB8|0000000000000000 11996:MB8|0000000000000000 11997:MB8|0000000000000000 11998:MB8|0000000000000000 11999:MB8|0000000000000000 12000:MB8|0000000000000000 12001:MB8|0000000000000000 12002:MB8|0000000000000000 12003:MB8|0000000000000000 12004:MB8|0000000000000000 12005:MB8|0000000000000000 12006:MB8|0000000000000000 12007:MB8|0000000000000000 12008:MB8|0000000000000000 12009:MB8|0000000000000000 12010:MB8|0000000000000000 12011:MB8|0000000000000000 12012:MB8|0000000000000000 12013:MB8|0000000000000000 12014:MB8|0000000000000000 12015:MB8|0000000000000000 12016:MB8|0000000000000000 12017:MB8|0000000000000000 12018:MB8|0000000000000000 12019:MB8|0000000000000000 12020:MB8|0000000000000000 12021:MB8|0000000000000000 12022:MB8|0000000000000000 12023:MB8|0000000000000000 12024:MB8|0000000000000000 12025:MB8|0000000000000000 12026:MB8|0000000000000000 12027:MB8|0000000000000000 12028:MB8|0000000000000000 12029:MB8|0000000000000000 12030:MB8|0000000000000000 12031:MB8|0000000000000000 12032:MB8|0000000000000000 12033:MB8|0000000000000000 12034:MB8|0000000000000000 12035:MB8|0000000000000000 12036:MB8|0000000000000000 12037:MB8|0000000000000000 12038:MB8|0000000000000000 12039:MB8|0000000000000000 12040:MB8|0000000000000000 12041:MB8|0000000000000000 12042:MB8|0000000000000000 12043:MB8|0000000000000000 12044:MB8|0000000000000000 12045:MB8|0000000000000000 12046:MB8|0000000000000000 12047:MB8|0000000000000000 12048:MB8|0000000000000000 12049:MB8|0000000000000000 12050:MB8|0000000000000000 12051:MB8|0000000000000000 12052:MB8|0000000000000000 12053:MB8|0000000000000000 12054:MB8|0000000000000000 12055:MB8|0000000000000000 12056:MB8|0000000000000000 12057:MB8|0000000000000000 12058:MB8|0000000000000000 12059:MB8|0000000000000000 12060:MB8|0000000000000000 12061:MB8|0000000000000000 12062:MB8|0000000000000000 12063:MB8|0000000000000000 12064:MB8|0000000000000000 12065:MB8|0000000000000000 12066:MB8|0000000000000000 12067:MB8|0000000000000000 12068:MB8|0000000000000000 12069:MB8|0000000000000000 12070:MB8|0000000000000000 12071:MB8|0000000000000000 12072:MB8|0000000000000000 12073:MB8|0000000000000000 12074:MB8|0000000000000000 12075:MB8|0000000000000000 12076:MB8|0000000000000000 12077:MB8|0000000000000000 12078:MB8|0000000000000000 12079:MB8|0000000000000000 12080:MB8|0000000000000000 12081:MB8|0000000000000000 12082:MB8|0000000000000000 12083:MB8|0000000000000000 12084:MB8|0000000000000000 12085:MB8|0000000000000000 12086:MB8|0000000000000000 12087:MB8|0000000000000000 12088:MB8|0000000000000000 12089:MB8|0000000000000000 12090:MB8|0000000000000000 12091:MB8|0000000000000000 12092:MB8|0000000000000000 12093:MB8|0000000000000000 12094:MB8|0000000000000000 12095:MB8|0000000000000000 12096:MB8|0000000000000000 12097:MB8|0000000000000000 12098:MB8|0000000000000000 12099:MB8|0000000000000000 12100:MB8|0000000000000000 12101:MB8|0000000000000000 12102:MB8|0000000000000000 12103:MB8|0000000000000000 12104:MB8|0000000000000000 12105:MB8|0000000000000000 12106:MB8|0000000000000000 12107:MB8|0000000000000000 12108:MB8|0000000000000000 12109:MB8|0000000000000000 12110:MB8|0000000000000000 12111:MB8|0000000000000000 12112:MB8|0000000000000000 12113:MB8|0000000000000000 12114:MB8|0000000000000000 12115:MB8|0000000000000000 12116:MB8|0000000000000000 12117:MB8|0000000000000000 12118:MB8|0000000000000000 12119:MB8|0000000000000000 12120:MB8|0000000000000000 12121:MB8|0000000000000000 12122:MB8|0000000000000000 12123:MB8|0000000000000000 12124:MB8|0000000000000000 12125:MB8|0000000000000000 12126:MB8|0000000000000000 12127:MB8|0000000000000000 12128:MB8|0000000000000000 12129:MB8|0000000000000000 12130:MB8|0000000000000000 12131:MB8|0000000000000000 12132:MB8|0000000000000000 12133:MB8|0000000000000000 12134:MB8|0000000000000000 12135:MB8|0000000000000000 12136:MB8|0000000000000000 12137:MB8|0000000000000000 12138:MB8|0000000000000000 12139:MB8|0000000000000000 12140:MB8|0000000000000000 12141:MB8|0000000000000000 12142:MB8|0000000000000000 12143:MB8|0000000000000000 12144:MB8|0000000000000000 12145:MB8|0000000000000000 12146:MB8|0000000000000000 12147:MB8|0000000000000000 12148:MB8|0000000000000000 12149:MB8|0000000000000000 12150:MB8|0000000000000000 12151:MB8|0000000000000000 12152:MB8|0000000000000000 12153:MB8|0000000000000000 12154:MB8|0000000000000000 12155:MB8|0000000000000000 12156:MB8|0000000000000000 12157:MB8|0000000000000000 12158:MB8|0000000000000000 12159:MB8|0000000000000000 12160:MB8|0000000000000000 12161:MB8|0000000000000000 12162:MB8|0000000000000000 12163:MB8|0000000000000000 12164:MB8|0000000000000000 12165:MB8|0000000000000000 12166:MB8|0000000000000000 12167:MB8|0000000000000000 12168:MB8|0000000000000000 12169:MB8|0000000000000000 12170:MB8|0000000000000000 12171:MB8|0000000000000000 12172:MB8|0000000000000000 12173:MB8|0000000000000000 12174:MB8|0000000000000000 12175:MB8|0000000000000000 12176:MB8|0000000000000000 12177:MB8|0000000000000000 12178:MB8|0000000000000000 12179:MB8|0000000000000000 12180:MB8|0000000000000000 12181:MB8|0000000000000000 12182:MB8|0000000000000000 12183:MB8|0000000000000000 12184:MB8|0000000000000000 12185:MB8|0000000000000000 12186:MB8|0000000000000000 12187:MB8|0000000000000000 12188:MB8|0000000000000000 12189:MB8|0000000000000000 12190:MB8|0000000000000000 12191:MB8|0000000000000000 12192:MB8|0000000000000000 12193:MB8|0000000000000000 12194:MB8|0000000000000000 12195:MB8|0000000000000000 12196:MB8|0000000000000000 12197:MB8|0000000000000000 12198:MB8|0000000000000000 12199:MB8|0000000000000000 12200:MB8|0000000000000000 12201:MB8|0000000000000000 12202:MB8|0000000000000000 12203:MB8|0000000000000000 12204:MB8|0000000000000000 12205:MB8|0000000000000000 12206:MB8|0000000000000000 12207:MB8|0000000000000000 12208:MB8|0000000000000000 12209:MB8|0000000000000000 12210:MB8|0000000000000000 12211:MB8|0000000000000000 12212:MB8|0000000000000000 12213:MB8|0000000000000000 12214:MB8|0000000000000000 12215:MB8|0000000000000000 12216:MB8|0000000000000000 12217:MB8|0000000000000000 12218:MB8|0000000000000000 12219:MB8|0000000000000000 12220:MB8|0000000000000000 12221:MB8|0000000000000000 12222:MB8|0000000000000000 12223:MB8|0000000000000000 12224:MB8|0000000000000000 12225:MB8|0000000000000000 12226:MB8|0000000000000000 12227:MB8|0000000000000000 12228:MB8|0000000000000000 12229:MB8|0000000000000000 12230:MB8|0000000000000000 12231:MB8|0000000000000000 12232:MB8|0000000000000000 12233:MB8|0000000000000000 12234:MB8|0000000000000000 12235:MB8|0000000000000000 12236:MB8|0000000000000000 12237:MB8|0000000000000000 12238:MB8|0000000000000000 12239:MB8|0000000000000000 12240:MB8|0000000000000000 12241:MB8|0000000000000000 12242:MB8|0000000000000000 12243:MB8|0000000000000000 12244:MB8|0000000000000000 12245:MB8|0000000000000000 12246:MB8|0000000000000000 12247:MB8|0000000000000000 12248:MB8|0000000000000000 12249:MB8|0000000000000000 12250:MB8|0000000000000000 12251:MB8|0000000000000000 12252:MB8|0000000000000000 12253:MB8|0000000000000000 12254:MB8|0000000000000000 12255:MB8|0000000000000000 12256:MB8|0000000000000000 12257:MB8|0000000000000000 12258:MB8|0000000000000000 12259:MB8|0000000000000000 12260:MB8|0000000000000000 12261:MB8|0000000000000000 12262:MB8|0000000000000000 12263:MB8|0000000000000000 12264:MB8|0000000000000000 12265:MB8|0000000000000000 12266:MB8|0000000000000000 12267:MB8|0000000000000000 12268:MB8|0000000000000000 12269:MB8|0000000000000000 12270:MB8|0000000000000000 12271:MB8|0000000000000000 12272:MB8|0000000000000000 12273:MB8|0000000000000000 12274:MB8|0000000000000000 12275:MB8|0000000000000000 12276:MB8|0000000000000000 12277:MB8|0000000000000000 12278:MB8|0000000000000000 12279:MB8|0000000000000000 12280:MB8|0000000000000000 12281:MB8|0000000000000000 12282:MB8|0000000000000000 12283:MB8|0000000000000000 12284:MB8|0000000000000000 12285:MB8|0000000000000000 12286:MB8|0000000000000000 12287:MB8|0000000000000000 12288:MB8|0000000000000000 12289:MB8|0000000000000000 12290:MB8|0000000000000000 12291:MB8|0000000000000000 12292:MB8|0000000000000000 12293:MB8|0000000000000000 12294:MB8|0000000000000000 12295:MB8|0000000000000000 12296:MB8|0000000000000000 12297:MB8|0000000000000000 12298:MB8|0000000000000000 12299:MB8|0000000000000000 12300:MB8|0000000000000000 12301:MB8|0000000000000000 12302:MB8|0000000000000000 12303:MB8|0000000000000000 12304:MB8|0000000000000000 12305:MB8|0000000000000000 12306:MB8|0000000000000000 12307:MB8|0000000000000000 12308:MB8|0000000000000000 12309:MB8|0000000000000000 12310:MB8|0000000000000000 12311:MB8|0000000000000000 12312:MB8|0000000000000000 12313:MB8|0000000000000000 12314:MB8|0000000000000000 12315:MB8|0000000000000000 12316:MB8|0000000000000000 12317:MB8|0000000000000000 12318:MB8|0000000000000000 12319:MB8|0000000000000000 12320:MB8|0000000000000000 12321:MB8|0000000000000000 12322:MB8|0000000000000000 12323:MB8|0000000000000000 12324:MB8|0000000000000000 12325:MB8|0000000000000000 12326:MB8|0000000000000000 12327:MB8|0000000000000000 12328:MB8|0000000000000000 12329:MB8|0000000000000000 12330:MB8|0000000000000000 12331:MB8|0000000000000000 12332:MB8|0000000000000000 12333:MB8|0000000000000000 12334:MB8|0000000000000000 12335:MB8|0000000000000000 12336:MB8|0000000000000000 12337:MB8|0000000000000000 12338:MB8|0000000000000000 12339:MB8|0000000000000000 12340:MB8|0000000000000000 12341:MB8|0000000000000000 12342:MB8|0000000000000000 12343:MB8|0000000000000000 12344:MB8|0000000000000000 12345:MB8|0000000000000000 12346:MB8|0000000000000000 12347:MB8|0000000000000000 12348:MB8|0000000000000000 12349:MB8|0000000000000000 12350:MB8|0000000000000000 12351:MB8|0000000000000000 12352:MB8|0000000000000000 12353:MB8|0000000000000000 12354:MB8|0000000000000000 12355:MB8|0000000000000000 12356:MB8|0000000000000000 12357:MB8|0000000000000000 12358:MB8|0000000000000000 12359:MB8|0000000000000000 12360:MB8|0000000000000000 12361:MB8|0000000000000000 12362:MB8|0000000000000000 12363:MB8|0000000000000000 12364:MB8|0000000000000000 12365:MB8|0000000000000000 12366:MB8|0000000000000000 12367:MB8|0000000000000000 12368:MB8|0000000000000000 12369:MB8|0000000000000000 12370:MB8|0000000000000000 12371:MB8|0000000000000000 12372:MB8|0000000000000000 12373:MB8|0000000000000000 12374:MB8|0000000000000000 12375:MB8|0000000000000000 12376:MB8|0000000000000000 12377:MB8|0000000000000000 12378:MB8|0000000000000000 12379:MB8|0000000000000000 12380:MB8|0000000000000000 12381:MB8|0000000000000000 12382:MB8|0000000000000000 12383:MB8|0000000000000000 12384:MB8|0000000000000000 12385:MB8|0000000000000000 12386:MB8|0000000000000000 12387:MB8|0000000000000000 12388:MB8|0000000000000000 12389:MB8|0000000000000000 12390:MB8|0000000000000000 12391:MB8|0000000000000000 12392:MB8|0000000000000000 12393:MB8|0000000000000000 12394:MB8|0000000000000000 12395:MB8|0000000000000000 12396:MB8|0000000000000000 12397:MB8|0000000000000000 12398:MB8|0000000000000000 12399:MB8|0000000000000000 12400:MB8|0000000000000000 12401:MB8|0000000000000000 12402:MB8|0000000000000000 12403:MB8|0000000000000000 12404:MB8|0000000000000000 12405:MB8|0000000000000000 12406:MB8|0000000000000000 12407:MB8|0000000000000000 12408:MB8|0000000000000000 12409:MB8|0000000000000000 12410:MB8|0000000000000000 12411:MB8|0000000000000000 12412:MB8|0000000000000000 12413:MB8|0000000000000000 12414:MB8|0000000000000000 12415:MB8|0000000000000000 12416:MB8|0000000000000000 12417:MB8|0000000000000000 12418:MB8|0000000000000000 12419:MB8|0000000000000000 12420:MB8|0000000000000000 12421:MB8|0000000000000000 12422:MB8|0000000000000000 12423:MB8|0000000000000000 12424:MB8|0000000000000000 12425:MB8|0000000000000000 12426:MB8|0000000000000000 12427:MB8|0000000000000000 12428:MB8|0000000000000000 12429:MB8|0000000000000000 12430:MB8|0000000000000000 12431:MB8|0000000000000000 12432:MB8|0000000000000000 12433:MB8|0000000000000000 12434:MB8|0000000000000000 12435:MB8|0000000000000000 12436:MB8|0000000000000000 12437:MB8|0000000000000000 12438:MB8|0000000000000000 12439:MB8|0000000000000000 12440:MB8|0000000000000000 12441:MB8|0000000000000000 12442:MB8|0000000000000000 12443:MB8|0000000000000000 12444:MB8|0000000000000000 12445:MB8|0000000000000000 12446:MB8|0000000000000000 12447:MB8|0000000000000000 12448:MB8|0000000000000000 12449:MB8|0000000000000000 12450:MB8|0000000000000000 12451:MB8|0000000000000000 12452:MB8|0000000000000000 12453:MB8|0000000000000000 12454:MB8|0000000000000000 12455:MB8|0000000000000000 12456:MB8|0000000000000000 12457:MB8|0000000000000000 12458:MB8|0000000000000000 12459:MB8|0000000000000000 12460:MB8|0000000000000000 12461:MB8|0000000000000000 12462:MB8|0000000000000000 12463:MB8|0000000000000000 12464:MB8|0000000000000000 12465:MB8|0000000000000000 12466:MB8|0000000000000000 12467:MB8|0000000000000000 12468:MB8|0000000000000000 12469:MB8|0000000000000000 12470:MB8|0000000000000000 12471:MB8|0000000000000000 12472:MB8|0000000000000000 12473:MB8|0000000000000000 12474:MB8|0000000000000000 12475:MB8|0000000000000000 12476:MB8|0000000000000000 12477:MB8|0000000000000000 12478:MB8|0000000000000000 12479:MB8|0000000000000000 12480:MB8|0000000000000000 12481:MB8|0000000000000000 12482:MB8|0000000000000000 12483:MB8|0000000000000000 12484:MB8|0000000000000000 12485:MB8|0000000000000000 12486:MB8|0000000000000000 12487:MB8|0000000000000000 12488:MB8|0000000000000000 12489:MB8|0000000000000000 12490:MB8|0000000000000000 12491:MB8|0000000000000000 12492:MB8|0000000000000000 12493:MB8|0000000000000000 12494:MB8|0000000000000000 12495:MB8|0000000000000000 12496:MB8|0000000000000000 12497:MB8|0000000000000000 12498:MB8|0000000000000000 12499:MB8|0000000000000000 12500:MB8|0000000000000000 12501:MB8|0000000000000000 12502:MB8|0000000000000000 12503:MB8|0000000000000000 12504:MB8|0000000000000000 12505:MB8|0000000000000000 12506:MB8|0000000000000000 12507:MB8|0000000000000000 12508:MB8|0000000000000000 12509:MB8|0000000000000000 12510:MB8|0000000000000000 12511:MB8|0000000000000000 12512:MB8|0000000000000000 12513:MB8|0000000000000000 12514:MB8|0000000000000000 12515:MB8|0000000000000000 12516:MB8|0000000000000000 12517:MB8|0000000000000000 12518:MB8|0000000000000000 12519:MB8|0000000000000000 12520:MB8|0000000000000000 12521:MB8|0000000000000000 12522:MB8|0000000000000000 12523:MB8|0000000000000000 12524:MB8|0000000000000000 12525:MB8|0000000000000000 12526:MB8|0000000000000000 12527:MB8|0000000000000000 12528:MB8|0000000000000000 12529:MB8|0000000000000000 12530:MB8|0000000000000000 12531:MB8|0000000000000000 12532:MB8|0000000000000000 12533:MB8|0000000000000000 12534:MB8|0000000000000000 12535:MB8|0000000000000000 12536:MB8|0000000000000000 12537:MB8|0000000000000000 12538:MB8|0000000000000000 12539:MB8|0000000000000000 12540:MB8|0000000000000000 12541:MB8|0000000000000000 12542:MB8|0000000000000000 12543:MB8|0000000000000000 12544:MB8|0000000000000000 12545:MB8|0000000000000000 12546:MB8|0000000000000000 12547:MB8|0000000000000000 12548:MB8|0000000000000000 12549:MB8|0000000000000000 12550:MB8|0000000000000000 12551:MB8|0000000000000000 12552:MB8|0000000000000000 12553:MB8|0000000000000000 12554:MB8|0000000000000000 12555:MB8|0000000000000000 12556:MB8|0000000000000000 12557:MB8|0000000000000000 12558:MB8|0000000000000000 12559:MB8|0000000000000000 12560:MB8|0000000000000000 12561:MB8|0000000000000000 12562:MB8|0000000000000000 12563:MB8|0000000000000000 12564:MB8|0000000000000000 12565:MB8|0000000000000000 12566:MB8|0000000000000000 12567:MB8|0000000000000000 12568:MB8|0000000000000000 12569:MB8|0000000000000000 12570:MB8|0000000000000000 12571:MB8|0000000000000000 12572:MB8|0000000000000000 12573:MB8|0000000000000000 12574:MB8|0000000000000000 12575:MB8|0000000000000000 12576:MB8|0000000000000000 12577:MB8|0000000000000000 12578:MB8|0000000000000000 12579:MB8|0000000000000000 12580:MB8|0000000000000000 12581:MB8|0000000000000000 12582:MB8|0000000000000000 12583:MB8|0000000000000000 12584:MB8|0000000000000000 12585:MB8|0000000000000000 12586:MB8|0000000000000000 12587:MB8|0000000000000000 12588:MB8|0000000000000000 12589:MB8|0000000000000000 12590:MB8|0000000000000000 12591:MB8|0000000000000000 12592:MB8|0000000000000000 12593:MB8|0000000000000000 12594:MB8|0000000000000000 12595:MB8|0000000000000000 12596:MB8|0000000000000000 12597:MB8|0000000000000000 12598:MB8|0000000000000000 12599:MB8|0000000000000000 12600:MB8|0000000000000000 12601:MB8|0000000000000000 12602:MB8|0000000000000000 12603:MB8|0000000000000000 12604:MB8|0000000000000000 12605:MB8|0000000000000000 12606:MB8|0000000000000000 12607:MB8|0000000000000000 12608:MB8|0000000000000000 12609:MB8|0000000000000000 12610:MB8|0000000000000000 12611:MB8|0000000000000000 12612:MB8|0000000000000000 12613:MB8|0000000000000000 12614:MB8|0000000000000000 12615:MB8|0000000000000000 12616:MB8|0000000000000000 12617:MB8|0000000000000000 12618:MB8|0000000000000000 12619:MB8|0000000000000000 12620:MB8|0000000000000000 12621:MB8|0000000000000000 12622:MB8|0000000000000000 12623:MB8|0000000000000000 12624:MB8|0000000000000000 12625:MB8|0000000000000000 12626:MB8|0000000000000000 12627:MB8|0000000000000000 12628:MB8|0000000000000000 12629:MB8|0000000000000000 12630:MB8|0000000000000000 12631:MB8|0000000000000000 12632:MB8|0000000000000000 12633:MB8|0000000000000000 12634:MB8|0000000000000000 12635:MB8|0000000000000000 12636:MB8|0000000000000000 12637:MB8|0000000000000000 12638:MB8|0000000000000000 12639:MB8|0000000000000000 12640:MB8|0000000000000000 12641:MB8|0000000000000000 12642:MB8|0000000000000000 12643:MB8|0000000000000000 12644:MB8|0000000000000000 12645:MB8|0000000000000000 12646:MB8|0000000000000000 12647:MB8|0000000000000000 12648:MB8|0000000000000000 12649:MB8|0000000000000000 12650:MB8|0000000000000000 12651:MB8|0000000000000000 12652:MB8|0000000000000000 12653:MB8|0000000000000000 12654:MB8|0000000000000000 12655:MB8|0000000000000000 12656:MB8|0000000000000000 12657:MB8|0000000000000000 12658:MB8|0000000000000000 12659:MB8|0000000000000000 12660:MB8|0000000000000000 12661:MB8|0000000000000000 12662:MB8|0000000000000000 12663:MB8|0000000000000000 12664:MB8|0000000000000000 12665:MB8|0000000000000000 12666:MB8|0000000000000000 12667:MB8|0000000000000000 12668:MB8|0000000000000000 12669:MB8|0000000000000000 12670:MB8|0000000000000000 12671:MB8|0000000000000000 12672:MB8|0000000000000000 12673:MB8|0000000000000000 12674:MB8|0000000000000000 12675:MB8|0000000000000000 12676:MB8|0000000000000000 12677:MB8|0000000000000000 12678:MB8|0000000000000000 12679:MB8|0000000000000000 12680:MB8|0000000000000000 12681:MB8|0000000000000000 12682:MB8|0000000000000000 12683:MB8|0000000000000000 12684:MB8|0000000000000000 12685:MB8|0000000000000000 12686:MB8|0000000000000000 12687:MB8|0000000000000000 12688:MB8|0000000000000000 12689:MB8|0000000000000000 12690:MB8|0000000000000000 12691:MB8|0000000000000000 12692:MB8|0000000000000000 12693:MB8|0000000000000000 12694:MB8|0000000000000000 12695:MB8|0000000000000000 12696:MB8|0000000000000000 12697:MB8|0000000000000000 12698:MB8|0000000000000000 12699:MB8|0000000000000000 12700:MB8|0000000000000000 12701:MB8|0000000000000000 12702:MB8|0000000000000000 12703:MB8|0000000000000000 12704:MB8|0000000000000000 12705:MB8|0000000000000000 12706:MB8|0000000000000000 12707:MB8|0000000000000000 12708:MB8|0000000000000000 12709:MB8|0000000000000000 12710:MB8|0000000000000000 12711:MB8|0000000000000000 12712:MB8|0000000000000000 12713:MB8|0000000000000000 12714:MB8|0000000000000000 12715:MB8|0000000000000000 12716:MB8|0000000000000000 12717:MB8|0000000000000000 12718:MB8|0000000000000000 12719:MB8|0000000000000000 12720:MB8|0000000000000000 12721:MB8|0000000000000000 12722:MB8|0000000000000000 12723:MB8|0000000000000000 12724:MB8|0000000000000000 12725:MB8|0000000000000000 12726:MB8|0000000000000000 12727:MB8|0000000000000000 12728:MB8|0000000000000000 12729:MB8|0000000000000000 12730:MB8|0000000000000000 12731:MB8|0000000000000000 12732:MB8|0000000000000000 12733:MB8|0000000000000000 12734:MB8|0000000000000000 12735:MB8|0000000000000000 12736:MB8|0000000000000000 12737:MB8|0000000000000000 12738:MB8|0000000000000000 12739:MB8|0000000000000000 12740:MB8|0000000000000000 12741:MB8|0000000000000000 12742:MB8|0000000000000000 12743:MB8|0000000000000000 12744:MB8|0000000000000000 12745:MB8|0000000000000000 12746:MB8|0000000000000000 12747:MB8|0000000000000000 12748:MB8|0000000000000000 12749:MB8|0000000000000000 12750:MB8|0000000000000000 12751:MB8|0000000000000000 12752:MB8|0000000000000000 12753:MB8|0000000000000000 12754:MB8|0000000000000000 12755:MB8|0000000000000000 12756:MB8|0000000000000000 12757:MB8|0000000000000000 12758:MB8|0000000000000000 12759:MB8|0000000000000000 12760:MB8|0000000000000000 12761:MB8|0000000000000000 12762:MB8|0000000000000000 12763:MB8|0000000000000000 12764:MB8|0000000000000000 12765:MB8|0000000000000000 12766:MB8|0000000000000000 12767:MB8|0000000000000000 12768:MB8|0000000000000000 12769:MB8|0000000000000000 12770:MB8|0000000000000000 12771:MB8|0000000000000000 12772:MB8|0000000000000000 12773:MB8|0000000000000000 12774:MB8|0000000000000000 12775:MB8|0000000000000000 12776:MB8|0000000000000000 12777:MB8|0000000000000000 12778:MB8|0000000000000000 12779:MB8|0000000000000000 12780:MB8|0000000000000000 12781:MB8|0000000000000000 12782:MB8|0000000000000000 12783:MB8|0000000000000000 12784:MB8|0000000000000000 12785:MB8|0000000000000000 12786:MB8|0000000000000000 12787:MB8|0000000000000000 12788:MB8|0000000000000000 12789:MB8|0000000000000000 12790:MB8|0000000000000000 12791:MB8|0000000000000000 12792:MB8|0000000000000000 12793:MB8|0000000000000000 12794:MB8|0000000000000000 12795:MB8|0000000000000000 12796:MB8|0000000000000000 12797:MB8|0000000000000000 12798:MB8|0000000000000000 12799:MB8|0000000000000000 12800:MB8|0000000000000000 12801:MB8|0000000000000000 12802:MB8|0000000000000000 12803:MB8|0000000000000000 12804:MB8|0000000000000000 12805:MB8|0000000000000000 12806:MB8|0000000000000000 12807:MB8|0000000000000000 12808:MB8|0000000000000000 12809:MB8|0000000000000000 12810:MB8|0000000000000000 12811:MB8|0000000000000000 12812:MB8|0000000000000000 12813:MB8|0000000000000000 12814:MB8|0000000000000000 12815:MB8|0000000000000000 12816:MB8|0000000000000000 12817:MB8|0000000000000000 12818:MB8|0000000000000000 12819:MB8|0000000000000000 12820:MB8|0000000000000000 12821:MB8|0000000000000000 12822:MB8|0000000000000000 12823:MB8|0000000000000000 12824:MB8|0000000000000000 12825:MB8|0000000000000000 12826:MB8|0000000000000000 12827:MB8|0000000000000000 12828:MB8|0000000000000000 12829:MB8|0000000000000000 12830:MB8|0000000000000000 12831:MB8|0000000000000000 12832:MB8|0000000000000000 12833:MB8|0000000000000000 12834:MB8|0000000000000000 12835:MB8|0000000000000000 12836:MB8|0000000000000000 12837:MB8|0000000000000000 12838:MB8|0000000000000000 12839:MB8|0000000000000000 12840:MB8|0000000000000000 12841:MB8|0000000000000000 12842:MB8|0000000000000000 12843:MB8|0000000000000000 12844:MB8|0000000000000000 12845:MB8|0000000000000000 12846:MB8|0000000000000000 12847:MB8|0000000000000000 12848:MB8|0000000000000000 12849:MB8|0000000000000000 12850:MB8|0000000000000000 12851:MB8|0000000000000000 12852:MB8|0000000000000000 12853:MB8|0000000000000000 12854:MB8|0000000000000000 12855:MB8|0000000000000000 12856:MB8|0000000000000000 12857:MB8|0000000000000000 12858:MB8|0000000000000000 12859:MB8|0000000000000000 12860:MB8|0000000000000000 12861:MB8|0000000000000000 12862:MB8|0000000000000000 12863:MB8|0000000000000000 12864:MB8|0000000000000000 12865:MB8|0000000000000000 12866:MB8|0000000000000000 12867:MB8|0000000000000000 12868:MB8|0000000000000000 12869:MB8|0000000000000000 12870:MB8|0000000000000000 12871:MB8|0000000000000000 12872:MB8|0000000000000000 12873:MB8|0000000000000000 12874:MB8|0000000000000000 12875:MB8|0000000000000000 12876:MB8|0000000000000000 12877:MB8|0000000000000000 12878:MB8|0000000000000000 12879:MB8|0000000000000000 12880:MB8|0000000000000000 12881:MB8|0000000000000000 12882:MB8|0000000000000000 12883:MB8|0000000000000000 12884:MB8|0000000000000000 12885:MB8|0000000000000000 12886:MB8|0000000000000000 12887:MB8|0000000000000000 12888:MB8|0000000000000000 12889:MB8|0000000000000000 12890:MB8|0000000000000000 12891:MB8|0000000000000000 12892:MB8|0000000000000000 12893:MB8|0000000000000000 12894:MB8|0000000000000000 12895:MB8|0000000000000000 12896:MB8|0000000000000000 12897:MB8|0000000000000000 12898:MB8|0000000000000000 12899:MB8|0000000000000000 12900:MB8|0000000000000000 12901:MB8|0000000000000000 12902:MB8|0000000000000000 12903:MB8|0000000000000000 12904:MB8|0000000000000000 12905:MB8|0000000000000000 12906:MB8|0000000000000000 12907:MB8|0000000000000000 12908:MB8|0000000000000000 12909:MB8|0000000000000000 12910:MB8|0000000000000000 12911:MB8|0000000000000000 12912:MB8|0000000000000000 12913:MB8|0000000000000000 12914:MB8|0000000000000000 12915:MB8|0000000000000000 12916:MB8|0000000000000000 12917:MB8|0000000000000000 12918:MB8|0000000000000000 12919:MB8|0000000000000000 12920:MB8|0000000000000000 12921:MB8|0000000000000000 12922:MB8|0000000000000000 12923:MB8|0000000000000000 12924:MB8|0000000000000000 12925:MB8|0000000000000000 12926:MB8|0000000000000000 12927:MB8|0000000000000000 12928:MB8|0000000000000000 12929:MB8|0000000000000000 12930:MB8|0000000000000000 12931:MB8|0000000000000000 12932:MB8|0000000000000000 12933:MB8|0000000000000000 12934:MB8|0000000000000000 12935:MB8|0000000000000000 12936:MB8|0000000000000000 12937:MB8|0000000000000000 12938:MB8|0000000000000000 12939:MB8|0000000000000000 12940:MB8|0000000000000000 12941:MB8|0000000000000000 12942:MB8|0000000000000000 12943:MB8|0000000000000000 12944:MB8|0000000000000000 12945:MB8|0000000000000000 12946:MB8|0000000000000000 12947:MB8|0000000000000000 12948:MB8|0000000000000000 12949:MB8|0000000000000000 12950:MB8|0000000000000000 12951:MB8|0000000000000000 12952:MB8|0000000000000000 12953:MB8|0000000000000000 12954:MB8|0000000000000000 12955:MB8|0000000000000000 12956:MB8|0000000000000000 12957:MB8|0000000000000000 12958:MB8|0000000000000000 12959:MB8|0000000000000000 12960:MB8|0000000000000000 12961:MB8|0000000000000000 12962:MB8|0000000000000000 12963:MB8|0000000000000000 12964:MB8|0000000000000000 12965:MB8|0000000000000000 12966:MB8|0000000000000000 12967:MB8|0000000000000000 12968:MB8|0000000000000000 12969:MB8|0000000000000000 12970:MB8|0000000000000000 12971:MB8|0000000000000000 12972:MB8|0000000000000000 12973:MB8|0000000000000000 12974:MB8|0000000000000000 12975:MB8|0000000000000000 12976:MB8|0000000000000000 12977:MB8|0000000000000000 12978:MB8|0000000000000000 12979:MB8|0000000000000000 12980:MB8|0000000000000000 12981:MB8|0000000000000000 12982:MB8|0000000000000000 12983:MB8|0000000000000000 12984:MB8|0000000000000000 12985:MB8|0000000000000000 12986:MB8|0000000000000000 12987:MB8|0000000000000000 12988:MB8|0000000000000000 12989:MB8|0000000000000000 12990:MB8|0000000000000000 12991:MB8|0000000000000000 12992:MB8|0000000000000000 12993:MB8|0000000000000000 12994:MB8|0000000000000000 12995:MB8|0000000000000000 12996:MB8|0000000000000000 12997:MB8|0000000000000000 12998:MB8|0000000000000000 12999:MB8|0000000000000000 13000:MB8|0000000000000000 13001:MB8|0000000000000000 13002:MB8|0000000000000000 13003:MB8|0000000000000000 13004:MB8|0000000000000000 13005:MB8|0000000000000000 13006:MB8|0000000000000000 13007:MB8|0000000000000000 13008:MB8|0000000000000000 13009:MB8|0000000000000000 13010:MB8|0000000000000000 13011:MB8|0000000000000000 13012:MB8|0000000000000000 13013:MB8|0000000000000000 13014:MB8|0000000000000000 13015:MB8|0000000000000000 13016:MB8|0000000000000000 13017:MB8|0000000000000000 13018:MB8|0000000000000000 13019:MB8|0000000000000000 13020:MB8|0000000000000000 13021:MB8|0000000000000000 13022:MB8|0000000000000000 13023:MB8|0000000000000000 13024:MB8|0000000000000000 13025:MB8|0000000000000000 13026:MB8|0000000000000000 13027:MB8|0000000000000000 13028:MB8|0000000000000000 13029:MB8|0000000000000000 13030:MB8|0000000000000000 13031:MB8|0000000000000000 13032:MB8|0000000000000000 13033:MB8|0000000000000000 13034:MB8|0000000000000000 13035:MB8|0000000000000000 13036:MB8|0000000000000000 13037:MB8|0000000000000000 13038:MB8|0000000000000000 13039:MB8|0000000000000000 13040:MB8|0000000000000000 13041:MB8|0000000000000000 13042:MB8|0000000000000000 13043:MB8|0000000000000000 13044:MB8|0000000000000000 13045:MB8|0000000000000000 13046:MB8|0000000000000000 13047:MB8|0000000000000000 13048:MB8|0000000000000000 13049:MB8|0000000000000000 13050:MB8|0000000000000000 13051:MB8|0000000000000000 13052:MB8|0000000000000000 13053:MB8|0000000000000000 13054:MB8|0000000000000000 13055:MB8|0000000000000000 13056:MB8|0000000000000000 13057:MB8|0000000000000000 13058:MB8|0000000000000000 13059:MB8|0000000000000000 13060:MB8|0000000000000000 13061:MB8|0000000000000000 13062:MB8|0000000000000000 13063:MB8|0000000000000000 13064:MB8|0000000000000000 13065:MB8|0000000000000000 13066:MB8|0000000000000000 13067:MB8|0000000000000000 13068:MB8|0000000000000000 13069:MB8|0000000000000000 13070:MB8|0000000000000000 13071:MB8|0000000000000000 13072:MB8|0000000000000000 13073:MB8|0000000000000000 13074:MB8|0000000000000000 13075:MB8|0000000000000000 13076:MB8|0000000000000000 13077:MB8|0000000000000000 13078:MB8|0000000000000000 13079:MB8|0000000000000000 13080:MB8|0000000000000000 13081:MB8|0000000000000000 13082:MB8|0000000000000000 13083:MB8|0000000000000000 13084:MB8|0000000000000000 13085:MB8|0000000000000000 13086:MB8|0000000000000000 13087:MB8|0000000000000000 13088:MB8|0000000000000000 13089:MB8|0000000000000000 13090:MB8|0000000000000000 13091:MB8|0000000000000000 13092:MB8|0000000000000000 13093:MB8|0000000000000000 13094:MB8|0000000000000000 13095:MB8|0000000000000000 13096:MB8|0000000000000000 13097:MB8|0000000000000000 13098:MB8|0000000000000000 13099:MB8|0000000000000000 13100:MB8|0000000000000000 13101:MB8|0000000000000000 13102:MB8|0000000000000000 13103:MB8|0000000000000000 13104:MB8|0000000000000000 13105:MB8|0000000000000000 13106:MB8|0000000000000000 13107:MB8|0000000000000000 13108:MB8|0000000000000000 13109:MB8|0000000000000000 13110:MB8|0000000000000000 13111:MB8|0000000000000000 13112:MB8|0000000000000000 13113:MB8|0000000000000000 13114:MB8|0000000000000000 13115:MB8|0000000000000000 13116:MB8|0000000000000000 13117:MB8|0000000000000000 13118:MB8|0000000000000000 13119:MB8|0000000000000000 13120:MB8|0000000000000000 13121:MB8|0000000000000000 13122:MB8|0000000000000000 13123:MB8|0000000000000000 13124:MB8|0000000000000000 13125:MB8|0000000000000000 13126:MB8|0000000000000000 13127:MB8|0000000000000000 13128:MB8|0000000000000000 13129:MB8|0000000000000000 13130:MB8|0000000000000000 13131:MB8|0000000000000000 13132:MB8|0000000000000000 13133:MB8|0000000000000000 13134:MB8|0000000000000000 13135:MB8|0000000000000000 13136:MB8|0000000000000000 13137:MB8|0000000000000000 13138:MB8|0000000000000000 13139:MB8|0000000000000000 13140:MB8|0000000000000000 13141:MB8|0000000000000000 13142:MB8|0000000000000000 13143:MB8|0000000000000000 13144:MB8|0000000000000000 13145:MB8|0000000000000000 13146:MB8|0000000000000000 13147:MB8|0000000000000000 13148:MB8|0000000000000000 13149:MB8|0000000000000000 13150:MB8|0000000000000000 13151:MB8|0000000000000000 13152:MB8|0000000000000000 13153:MB8|0000000000000000 13154:MB8|0000000000000000 13155:MB8|0000000000000000 13156:MB8|0000000000000000 13157:MB8|0000000000000000 13158:MB8|0000000000000000 13159:MB8|0000000000000000 13160:MB8|0000000000000000 13161:MB8|0000000000000000 13162:MB8|0000000000000000 13163:MB8|0000000000000000 13164:MB8|0000000000000000 13165:MB8|0000000000000000 13166:MB8|0000000000000000 13167:MB8|0000000000000000 13168:MB8|0000000000000000 13169:MB8|0000000000000000 13170:MB8|0000000000000000 13171:MB8|0000000000000000 13172:MB8|0000000000000000 13173:MB8|0000000000000000 13174:MB8|0000000000000000 13175:MB8|0000000000000000 13176:MB8|0000000000000000 13177:MB8|0000000000000000 13178:MB8|0000000000000000 13179:MB8|0000000000000000 13180:MB8|0000000000000000 13181:MB8|0000000000000000 13182:MB8|0000000000000000 13183:MB8|0000000000000000 13184:MB8|0000000000000000 13185:MB8|0000000000000000 13186:MB8|0000000000000000 13187:MB8|0000000000000000 13188:MB8|0000000000000000 13189:MB8|0000000000000000 13190:MB8|0000000000000000 13191:MB8|0000000000000000 13192:MB8|0000000000000000 13193:MB8|0000000000000000 13194:MB8|0000000000000000 13195:MB8|0000000000000000 13196:MB8|0000000000000000 13197:MB8|0000000000000000 13198:MB8|0000000000000000 13199:MB8|0000000000000000 13200:MB8|0000000000000000 13201:MB8|0000000000000000 13202:MB8|0000000000000000 13203:MB8|0000000000000000 13204:MB8|0000000000000000 13205:MB8|0000000000000000 13206:MB8|0000000000000000 13207:MB8|0000000000000000 13208:MB8|0000000000000000 13209:MB8|0000000000000000 13210:MB8|0000000000000000 13211:MB8|0000000000000000 13212:MB8|0000000000000000 13213:MB8|0000000000000000 13214:MB8|0000000000000000 13215:MB8|0000000000000000 13216:MB8|0000000000000000 13217:MB8|0000000000000000 13218:MB8|0000000000000000 13219:MB8|0000000000000000 13220:MB8|0000000000000000 13221:MB8|0000000000000000 13222:MB8|0000000000000000 13223:MB8|0000000000000000 13224:MB8|0000000000000000 13225:MB8|0000000000000000 13226:MB8|0000000000000000 13227:MB8|0000000000000000 13228:MB8|0000000000000000 13229:MB8|0000000000000000 13230:MB8|0000000000000000 13231:MB8|0000000000000000 13232:MB8|0000000000000000 13233:MB8|0000000000000000 13234:MB8|0000000000000000 13235:MB8|0000000000000000 13236:MB8|0000000000000000 13237:MB8|0000000000000000 13238:MB8|0000000000000000 13239:MB8|0000000000000000 13240:MB8|0000000000000000 13241:MB8|0000000000000000 13242:MB8|0000000000000000 13243:MB8|0000000000000000 13244:MB8|0000000000000000 13245:MB8|0000000000000000 13246:MB8|0000000000000000 13247:MB8|0000000000000000 13248:MB8|0000000000000000 13249:MB8|0000000000000000 13250:MB8|0000000000000000 13251:MB8|0000000000000000 13252:MB8|0000000000000000 13253:MB8|0000000000000000 13254:MB8|0000000000000000 13255:MB8|0000000000000000 13256:MB8|0000000000000000 13257:MB8|0000000000000000 13258:MB8|0000000000000000 13259:MB8|0000000000000000 13260:MB8|0000000000000000 13261:MB8|0000000000000000 13262:MB8|0000000000000000 13263:MB8|0000000000000000 13264:MB8|0000000000000000 13265:MB8|0000000000000000 13266:MB8|0000000000000000 13267:MB8|0000000000000000 13268:MB8|0000000000000000 13269:MB8|0000000000000000 13270:MB8|0000000000000000 13271:MB8|0000000000000000 13272:MB8|0000000000000000 13273:MB8|0000000000000000 13274:MB8|0000000000000000 13275:MB8|0000000000000000 13276:MB8|0000000000000000 13277:MB8|0000000000000000 13278:MB8|0000000000000000 13279:MB8|0000000000000000 13280:MB8|0000000000000000 13281:MB8|0000000000000000 13282:MB8|0000000000000000 13283:MB8|0000000000000000 13284:MB8|0000000000000000 13285:MB8|0000000000000000 13286:MB8|0000000000000000 13287:MB8|0000000000000000 13288:MB8|0000000000000000 13289:MB8|0000000000000000 13290:MB8|0000000000000000 13291:MB8|0000000000000000 13292:MB8|0000000000000000 13293:MB8|0000000000000000 13294:MB8|0000000000000000 13295:MB8|0000000000000000 13296:MB8|0000000000000000 13297:MB8|0000000000000000 13298:MB8|0000000000000000 13299:MB8|0000000000000000 13300:MB8|0000000000000000 13301:MB8|0000000000000000 13302:MB8|0000000000000000 13303:MB8|0000000000000000 13304:MB8|0000000000000000 13305:MB8|0000000000000000 13306:MB8|0000000000000000 13307:MB8|0000000000000000 13308:MB8|0000000000000000 13309:MB8|0000000000000000 13310:MB8|0000000000000000 13311:MB8|0000000000000000 13312:MB8|0000000000000000 13313:MB8|0000000000000000 13314:MB8|0000000000000000 13315:MB8|0000000000000000 13316:MB8|0000000000000000 13317:MB8|0000000000000000 13318:MB8|0000000000000000 13319:MB8|0000000000000000 13320:MB8|0000000000000000 13321:MB8|0000000000000000 13322:MB8|0000000000000000 13323:MB8|0000000000000000 13324:MB8|0000000000000000 13325:MB8|0000000000000000 13326:MB8|0000000000000000 13327:MB8|0000000000000000 13328:MB8|0000000000000000 13329:MB8|0000000000000000 13330:MB8|0000000000000000 13331:MB8|0000000000000000 13332:MB8|0000000000000000 13333:MB8|0000000000000000 13334:MB8|0000000000000000 13335:MB8|0000000000000000 13336:MB8|0000000000000000 13337:MB8|0000000000000000 13338:MB8|0000000000000000 13339:MB8|0000000000000000 13340:MB8|0000000000000000 13341:MB8|0000000000000000 13342:MB8|0000000000000000 13343:MB8|0000000000000000 13344:MB8|0000000000000000 13345:MB8|0000000000000000 13346:MB8|0000000000000000 13347:MB8|0000000000000000 13348:MB8|0000000000000000 13349:MB8|0000000000000000 13350:MB8|0000000000000000 13351:MB8|0000000000000000 13352:MB8|0000000000000000 13353:MB8|0000000000000000 13354:MB8|0000000000000000 13355:MB8|0000000000000000 13356:MB8|0000000000000000 13357:MB8|0000000000000000 13358:MB8|0000000000000000 13359:MB8|0000000000000000 13360:MB8|0000000000000000 13361:MB8|0000000000000000 13362:MB8|0000000000000000 13363:MB8|0000000000000000 13364:MB8|0000000000000000 13365:MB8|0000000000000000 13366:MB8|0000000000000000 13367:MB8|0000000000000000 13368:MB8|0000000000000000 13369:MB8|0000000000000000 13370:MB8|0000000000000000 13371:MB8|0000000000000000 13372:MB8|0000000000000000 13373:MB8|0000000000000000 13374:MB8|0000000000000000 13375:MB8|0000000000000000 13376:MB8|0000000000000000 13377:MB8|0000000000000000 13378:MB8|0000000000000000 13379:MB8|0000000000000000 13380:MB8|0000000000000000 13381:MB8|0000000000000000 13382:MB8|0000000000000000 13383:MB8|0000000000000000 13384:MB8|0000000000000000 13385:MB8|0000000000000000 13386:MB8|0000000000000000 13387:MB8|0000000000000000 13388:MB8|0000000000000000 13389:MB8|0000000000000000 13390:MB8|0000000000000000 13391:MB8|0000000000000000 13392:MB8|0000000000000000 13393:MB8|0000000000000000 13394:MB8|0000000000000000 13395:MB8|0000000000000000 13396:MB8|0000000000000000 13397:MB8|0000000000000000 13398:MB8|0000000000000000 13399:MB8|0000000000000000 13400:MB8|0000000000000000 13401:MB8|0000000000000000 13402:MB8|0000000000000000 13403:MB8|0000000000000000 13404:MB8|0000000000000000 13405:MB8|0000000000000000 13406:MB8|0000000000000000 13407:MB8|0000000000000000 13408:MB8|0000000000000000 13409:MB8|0000000000000000 13410:MB8|0000000000000000 13411:MB8|0000000000000000 13412:MB8|0000000000000000 13413:MB8|0000000000000000 13414:MB8|0000000000000000 13415:MB8|0000000000000000 13416:MB8|0000000000000000 13417:MB8|0000000000000000 13418:MB8|0000000000000000 13419:MB8|0000000000000000 13420:MB8|0000000000000000 13421:MB8|0000000000000000 13422:MB8|0000000000000000 13423:MB8|0000000000000000 13424:MB8|0000000000000000 13425:MB8|0000000000000000 13426:MB8|0000000000000000 13427:MB8|0000000000000000 13428:MB8|0000000000000000 13429:MB8|0000000000000000 13430:MB8|0000000000000000 13431:MB8|0000000000000000 13432:MB8|0000000000000000 13433:MB8|0000000000000000 13434:MB8|0000000000000000 13435:MB8|0000000000000000 13436:MB8|0000000000000000 13437:MB8|0000000000000000 13438:MB8|0000000000000000 13439:MB8|0000000000000000 13440:MB8|0000000000000000 13441:MB8|0000000000000000 13442:MB8|0000000000000000 13443:MB8|0000000000000000 13444:MB8|0000000000000000 13445:MB8|0000000000000000 13446:MB8|0000000000000000 13447:MB8|0000000000000000 13448:MB8|0000000000000000 13449:MB8|0000000000000000 13450:MB8|0000000000000000 13451:MB8|0000000000000000 13452:MB8|0000000000000000 13453:MB8|0000000000000000 13454:MB8|0000000000000000 13455:MB8|0000000000000000 13456:MB8|0000000000000000 13457:MB8|0000000000000000 13458:MB8|0000000000000000 13459:MB8|0000000000000000 13460:MB8|0000000000000000 13461:MB8|0000000000000000 13462:MB8|0000000000000000 13463:MB8|0000000000000000 13464:MB8|0000000000000000 13465:MB8|0000000000000000 13466:MB8|0000000000000000 13467:MB8|0000000000000000 13468:MB8|0000000000000000 13469:MB8|0000000000000000 13470:MB8|0000000000000000 13471:MB8|0000000000000000 13472:MB8|0000000000000000 13473:MB8|0000000000000000 13474:MB8|0000000000000000 13475:MB8|0000000000000000 13476:MB8|0000000000000000 13477:MB8|0000000000000000 13478:MB8|0000000000000000 13479:MB8|0000000000000000 13480:MB8|0000000000000000 13481:MB8|0000000000000000 13482:MB8|0000000000000000 13483:MB8|0000000000000000 13484:MB8|0000000000000000 13485:MB8|0000000000000000 13486:MB8|0000000000000000 13487:MB8|0000000000000000 13488:MB8|0000000000000000 13489:MB8|0000000000000000 13490:MB8|0000000000000000 13491:MB8|0000000000000000 13492:MB8|0000000000000000 13493:MB8|0000000000000000 13494:MB8|0000000000000000 13495:MB8|0000000000000000 13496:MB8|0000000000000000 13497:MB8|0000000000000000 13498:MB8|0000000000000000 13499:MB8|0000000000000000 13500:MB8|0000000000000000 13501:MB8|0000000000000000 13502:MB8|0000000000000000 13503:MB8|0000000000000000 13504:MB8|0000000000000000 13505:MB8|0000000000000000 13506:MB8|0000000000000000 13507:MB8|0000000000000000 13508:MB8|0000000000000000 13509:MB8|0000000000000000 13510:MB8|0000000000000000 13511:MB8|0000000000000000 13512:MB8|0000000000000000 13513:MB8|0000000000000000 13514:MB8|0000000000000000 13515:MB8|0000000000000000 13516:MB8|0000000000000000 13517:MB8|0000000000000000 13518:MB8|0000000000000000 13519:MB8|0000000000000000 13520:MB8|0000000000000000 13521:MB8|0000000000000000 13522:MB8|0000000000000000 13523:MB8|0000000000000000 13524:MB8|0000000000000000 13525:MB8|0000000000000000 13526:MB8|0000000000000000 13527:MB8|0000000000000000 13528:MB8|0000000000000000 13529:MB8|0000000000000000 13530:MB8|0000000000000000 13531:MB8|0000000000000000 13532:MB8|0000000000000000 13533:MB8|0000000000000000 13534:MB8|0000000000000000 13535:MB8|0000000000000000 13536:MB8|0000000000000000 13537:MB8|0000000000000000 13538:MB8|0000000000000000 13539:MB8|0000000000000000 13540:MB8|0000000000000000 13541:MB8|0000000000000000 13542:MB8|0000000000000000 13543:MB8|0000000000000000 13544:MB8|0000000000000000 13545:MB8|0000000000000000 13546:MB8|0000000000000000 13547:MB8|0000000000000000 13548:MB8|0000000000000000 13549:MB8|0000000000000000 13550:MB8|0000000000000000 13551:MB8|0000000000000000 13552:MB8|0000000000000000 13553:MB8|0000000000000000 13554:MB8|0000000000000000 13555:MB8|0000000000000000 13556:MB8|0000000000000000 13557:MB8|0000000000000000 13558:MB8|0000000000000000 13559:MB8|0000000000000000 13560:MB8|0000000000000000 13561:MB8|0000000000000000 13562:MB8|0000000000000000 13563:MB8|0000000000000000 13564:MB8|0000000000000000 13565:MB8|0000000000000000 13566:MB8|0000000000000000 13567:MB8|0000000000000000 13568:MB8|0000000000000000 13569:MB8|0000000000000000 13570:MB8|0000000000000000 13571:MB8|0000000000000000 13572:MB8|0000000000000000 13573:MB8|0000000000000000 13574:MB8|0000000000000000 13575:MB8|0000000000000000 13576:MB8|0000000000000000 13577:MB8|0000000000000000 13578:MB8|0000000000000000 13579:MB8|0000000000000000 13580:MB8|0000000000000000 13581:MB8|0000000000000000 13582:MB8|0000000000000000 13583:MB8|0000000000000000 13584:MB8|0000000000000000 13585:MB8|0000000000000000 13586:MB8|0000000000000000 13587:MB8|0000000000000000 13588:MB8|0000000000000000 13589:MB8|0000000000000000 13590:MB8|0000000000000000 13591:MB8|0000000000000000 13592:MB8|0000000000000000 13593:MB8|0000000000000000 13594:MB8|0000000000000000 13595:MB8|0000000000000000 13596:MB8|0000000000000000 13597:MB8|0000000000000000 13598:MB8|0000000000000000 13599:MB8|0000000000000000 13600:MB8|0000000000000000 13601:MB8|0000000000000000 13602:MB8|0000000000000000 13603:MB8|0000000000000000 13604:MB8|0000000000000000 13605:MB8|0000000000000000 13606:MB8|0000000000000000 13607:MB8|0000000000000000 13608:MB8|0000000000000000 13609:MB8|0000000000000000 13610:MB8|0000000000000000 13611:MB8|0000000000000000 13612:MB8|0000000000000000 13613:MB8|0000000000000000 13614:MB8|0000000000000000 13615:MB8|0000000000000000 13616:MB8|0000000000000000 13617:MB8|0000000000000000 13618:MB8|0000000000000000 13619:MB8|0000000000000000 13620:MB8|0000000000000000 13621:MB8|0000000000000000 13622:MB8|0000000000000000 13623:MB8|0000000000000000 13624:MB8|0000000000000000 13625:MB8|0000000000000000 13626:MB8|0000000000000000 13627:MB8|0000000000000000 13628:MB8|0000000000000000 13629:MB8|0000000000000000 13630:MB8|0000000000000000 13631:MB8|0000000000000000 13632:MB8|0000000000000000 13633:MB8|0000000000000000 13634:MB8|0000000000000000 13635:MB8|0000000000000000 13636:MB8|0000000000000000 13637:MB8|0000000000000000 13638:MB8|0000000000000000 13639:MB8|0000000000000000 13640:MB8|0000000000000000 13641:MB8|0000000000000000 13642:MB8|0000000000000000 13643:MB8|0000000000000000 13644:MB8|0000000000000000 13645:MB8|0000000000000000 13646:MB8|0000000000000000 13647:MB8|0000000000000000 13648:MB8|0000000000000000 13649:MB8|0000000000000000 13650:MB8|0000000000000000 13651:MB8|0000000000000000 13652:MB8|0000000000000000 13653:MB8|0000000000000000 13654:MB8|0000000000000000 13655:MB8|0000000000000000 13656:MB8|0000000000000000 13657:MB8|0000000000000000 13658:MB8|0000000000000000 13659:MB8|0000000000000000 13660:MB8|0000000000000000 13661:MB8|0000000000000000 13662:MB8|0000000000000000 13663:MB8|0000000000000000 13664:MB8|0000000000000000 13665:MB8|0000000000000000 13666:MB8|0000000000000000 13667:MB8|0000000000000000 13668:MB8|0000000000000000 13669:MB8|0000000000000000 13670:MB8|0000000000000000 13671:MB8|0000000000000000 13672:MB8|0000000000000000 13673:MB8|0000000000000000 13674:MB8|0000000000000000 13675:MB8|0000000000000000 13676:MB8|0000000000000000 13677:MB8|0000000000000000 13678:MB8|0000000000000000 13679:MB8|0000000000000000 13680:MB8|0000000000000000 13681:MB8|0000000000000000 13682:MB8|0000000000000000 13683:MB8|0000000000000000 13684:MB8|0000000000000000 13685:MB8|0000000000000000 13686:MB8|0000000000000000 13687:MB8|0000000000000000 13688:MB8|0000000000000000 13689:MB8|0000000000000000 13690:MB8|0000000000000000 13691:MB8|0000000000000000 13692:MB8|0000000000000000 13693:MB8|0000000000000000 13694:MB8|0000000000000000 13695:MB8|0000000000000000 13696:MB8|0000000000000000 13697:MB8|0000000000000000 13698:MB8|0000000000000000 13699:MB8|0000000000000000 13700:MB8|0000000000000000 13701:MB8|0000000000000000 13702:MB8|0000000000000000 13703:MB8|0000000000000000 13704:MB8|0000000000000000 13705:MB8|0000000000000000 13706:MB8|0000000000000000 13707:MB8|0000000000000000 13708:MB8|0000000000000000 13709:MB8|0000000000000000 13710:MB8|0000000000000000 13711:MB8|0000000000000000 13712:MB8|0000000000000000 13713:MB8|0000000000000000 13714:MB8|0000000000000000 13715:MB8|0000000000000000 13716:MB8|0000000000000000 13717:MB8|0000000000000000 13718:MB8|0000000000000000 13719:MB8|0000000000000000 13720:MB8|0000000000000000 13721:MB8|0000000000000000 13722:MB8|0000000000000000 13723:MB8|0000000000000000 13724:MB8|0000000000000000 13725:MB8|0000000000000000 13726:MB8|0000000000000000 13727:MB8|0000000000000000 13728:MB8|0000000000000000 13729:MB8|0000000000000000 13730:MB8|0000000000000000 13731:MB8|0000000000000000 13732:MB8|0000000000000000 13733:MB8|0000000000000000 13734:MB8|0000000000000000 13735:MB8|0000000000000000 13736:MB8|0000000000000000 13737:MB8|0000000000000000 13738:MB8|0000000000000000 13739:MB8|0000000000000000 13740:MB8|0000000000000000 13741:MB8|0000000000000000 13742:MB8|0000000000000000 13743:MB8|0000000000000000 13744:MB8|0000000000000000 13745:MB8|0000000000000000 13746:MB8|0000000000000000 13747:MB8|0000000000000000 13748:MB8|0000000000000000 13749:MB8|0000000000000000 13750:MB8|0000000000000000 13751:MB8|0000000000000000 13752:MB8|0000000000000000 13753:MB8|0000000000000000 13754:MB8|0000000000000000 13755:MB8|0000000000000000 13756:MB8|0000000000000000 13757:MB8|0000000000000000 13758:MB8|0000000000000000 13759:MB8|0000000000000000 13760:MB8|0000000000000000 13761:MB8|0000000000000000 13762:MB8|0000000000000000 13763:MB8|0000000000000000 13764:MB8|0000000000000000 13765:MB8|0000000000000000 13766:MB8|0000000000000000 13767:MB8|0000000000000000 13768:MB8|0000000000000000 13769:MB8|0000000000000000 13770:MB8|0000000000000000 13771:MB8|0000000000000000 13772:MB8|0000000000000000 13773:MB8|0000000000000000 13774:MB8|0000000000000000 13775:MB8|0000000000000000 13776:MB8|0000000000000000 13777:MB8|0000000000000000 13778:MB8|0000000000000000 13779:MB8|0000000000000000 13780:MB8|0000000000000000 13781:MB8|0000000000000000 13782:MB8|0000000000000000 13783:MB8|0000000000000000 13784:MB8|0000000000000000 13785:MB8|0000000000000000 13786:MB8|0000000000000000 13787:MB8|0000000000000000 13788:MB8|0000000000000000 13789:MB8|0000000000000000 13790:MB8|0000000000000000 13791:MB8|0000000000000000 13792:MB8|0000000000000000 13793:MB8|0000000000000000 13794:MB8|0000000000000000 13795:MB8|0000000000000000 13796:MB8|0000000000000000 13797:MB8|0000000000000000 13798:MB8|0000000000000000 13799:MB8|0000000000000000 13800:MB8|0000000000000000 13801:MB8|0000000000000000 13802:MB8|0000000000000000 13803:MB8|0000000000000000 13804:MB8|0000000000000000 13805:MB8|0000000000000000 13806:MB8|0000000000000000 13807:MB8|0000000000000000 13808:MB8|0000000000000000 13809:MB8|0000000000000000 13810:MB8|0000000000000000 13811:MB8|0000000000000000 13812:MB8|0000000000000000 13813:MB8|0000000000000000 13814:MB8|0000000000000000 13815:MB8|0000000000000000 13816:MB8|0000000000000000 13817:MB8|0000000000000000 13818:MB8|0000000000000000 13819:MB8|0000000000000000 13820:MB8|0000000000000000 13821:MB8|0000000000000000 13822:MB8|0000000000000000 13823:MB8|0000000000000000 13824:MB8|0000000000000000 13825:MB8|0000000000000000 13826:MB8|0000000000000000 13827:MB8|0000000000000000 13828:MB8|0000000000000000 13829:MB8|0000000000000000 13830:MB8|0000000000000000 13831:MB8|0000000000000000 13832:MB8|0000000000000000 13833:MB8|0000000000000000 13834:MB8|0000000000000000 13835:MB8|0000000000000000 13836:MB8|0000000000000000 13837:MB8|0000000000000000 13838:MB8|0000000000000000 13839:MB8|0000000000000000 13840:MB8|0000000000000000 13841:MB8|0000000000000000 13842:MB8|0000000000000000 13843:MB8|0000000000000000 13844:MB8|0000000000000000 13845:MB8|0000000000000000 13846:MB8|0000000000000000 13847:MB8|0000000000000000 13848:MB8|0000000000000000 13849:MB8|0000000000000000 13850:MB8|0000000000000000 13851:MB8|0000000000000000 13852:MB8|0000000000000000 13853:MB8|0000000000000000 13854:MB8|0000000000000000 13855:MB8|0000000000000000 13856:MB8|0000000000000000 13857:MB8|0000000000000000 13858:MB8|0000000000000000 13859:MB8|0000000000000000 13860:MB8|0000000000000000 13861:MB8|0000000000000000 13862:MB8|0000000000000000 13863:MB8|0000000000000000 13864:MB8|0000000000000000 13865:MB8|0000000000000000 13866:MB8|0000000000000000 13867:MB8|0000000000000000 13868:MB8|0000000000000000 13869:MB8|0000000000000000 13870:MB8|0000000000000000 13871:MB8|0000000000000000 13872:MB8|0000000000000000 13873:MB8|0000000000000000 13874:MB8|0000000000000000 13875:MB8|0000000000000000 13876:MB8|0000000000000000 13877:MB8|0000000000000000 13878:MB8|0000000000000000 13879:MB8|0000000000000000 13880:MB8|0000000000000000 13881:MB8|0000000000000000 13882:MB8|0000000000000000 13883:MB8|0000000000000000 13884:MB8|0000000000000000 13885:MB8|0000000000000000 13886:MB8|0000000000000000 13887:MB8|0000000000000000 13888:MB8|0000000000000000 13889:MB8|0000000000000000 13890:MB8|0000000000000000 13891:MB8|0000000000000000 13892:MB8|0000000000000000 13893:MB8|0000000000000000 13894:MB8|0000000000000000 13895:MB8|0000000000000000 13896:MB8|0000000000000000 13897:MB8|0000000000000000 13898:MB8|0000000000000000 13899:MB8|0000000000000000 13900:MB8|0000000000000000 13901:MB8|0000000000000000 13902:MB8|0000000000000000 13903:MB8|0000000000000000 13904:MB8|0000000000000000 13905:MB8|0000000000000000 13906:MB8|0000000000000000 13907:MB8|0000000000000000 13908:MB8|0000000000000000 13909:MB8|0000000000000000 13910:MB8|0000000000000000 13911:MB8|0000000000000000 13912:MB8|0000000000000000 13913:MB8|0000000000000000 13914:MB8|0000000000000000 13915:MB8|0000000000000000 13916:MB8|0000000000000000 13917:MB8|0000000000000000 13918:MB8|0000000000000000 13919:MB8|0000000000000000 13920:MB8|0000000000000000 13921:MB8|0000000000000000 13922:MB8|0000000000000000 13923:MB8|0000000000000000 13924:MB8|0000000000000000 13925:MB8|0000000000000000 13926:MB8|0000000000000000 13927:MB8|0000000000000000 13928:MB8|0000000000000000 13929:MB8|0000000000000000 13930:MB8|0000000000000000 13931:MB8|0000000000000000 13932:MB8|0000000000000000 13933:MB8|0000000000000000 13934:MB8|0000000000000000 13935:MB8|0000000000000000 13936:MB8|0000000000000000 13937:MB8|0000000000000000 13938:MB8|0000000000000000 13939:MB8|0000000000000000 13940:MB8|0000000000000000 13941:MB8|0000000000000000 13942:MB8|0000000000000000 13943:MB8|0000000000000000 13944:MB8|0000000000000000 13945:MB8|0000000000000000 13946:MB8|0000000000000000 13947:MB8|0000000000000000 13948:MB8|0000000000000000 13949:MB8|0000000000000000 13950:MB8|0000000000000000 13951:MB8|0000000000000000 13952:MB8|0000000000000000 13953:MB8|0000000000000000 13954:MB8|0000000000000000 13955:MB8|0000000000000000 13956:MB8|0000000000000000 13957:MB8|0000000000000000 13958:MB8|0000000000000000 13959:MB8|0000000000000000 13960:MB8|0000000000000000 13961:MB8|0000000000000000 13962:MB8|0000000000000000 13963:MB8|0000000000000000 13964:MB8|0000000000000000 13965:MB8|0000000000000000 13966:MB8|0000000000000000 13967:MB8|0000000000000000 13968:MB8|0000000000000000 13969:MB8|0000000000000000 13970:MB8|0000000000000000 13971:MB8|0000000000000000 13972:MB8|0000000000000000 13973:MB8|0000000000000000 13974:MB8|0000000000000000 13975:MB8|0000000000000000 13976:MB8|0000000000000000 13977:MB8|0000000000000000 13978:MB8|0000000000000000 13979:MB8|0000000000000000 13980:MB8|0000000000000000 13981:MB8|0000000000000000 13982:MB8|0000000000000000 13983:MB8|0000000000000000 13984:MB8|0000000000000000 13985:MB8|0000000000000000 13986:MB8|0000000000000000 13987:MB8|0000000000000000 13988:MB8|0000000000000000 13989:MB8|0000000000000000 13990:MB8|0000000000000000 13991:MB8|0000000000000000 13992:MB8|0000000000000000 13993:MB8|0000000000000000 13994:MB8|0000000000000000 13995:MB8|0000000000000000 13996:MB8|0000000000000000 13997:MB8|0000000000000000 13998:MB8|0000000000000000 13999:MB8|0000000000000000 14000:MB8|0000000000000000 14001:MB8|0000000000000000 14002:MB8|0000000000000000 14003:MB8|0000000000000000 14004:MB8|0000000000000000 14005:MB8|0000000000000000 14006:MB8|0000000000000000 14007:MB8|0000000000000000 14008:MB8|0000000000000000 14009:MB8|0000000000000000 14010:MB8|0000000000000000 14011:MB8|0000000000000000 14012:MB8|0000000000000000 14013:MB8|0000000000000000 14014:MB8|0000000000000000 14015:MB8|0000000000000000 14016:MB8|0000000000000000 14017:MB8|0000000000000000 14018:MB8|0000000000000000 14019:MB8|0000000000000000 14020:MB8|0000000000000000 14021:MB8|0000000000000000 14022:MB8|0000000000000000 14023:MB8|0000000000000000 14024:MB8|0000000000000000 14025:MB8|0000000000000000 14026:MB8|0000000000000000 14027:MB8|0000000000000000 14028:MB8|0000000000000000 14029:MB8|0000000000000000 14030:MB8|0000000000000000 14031:MB8|0000000000000000 14032:MB8|0000000000000000 14033:MB8|0000000000000000 14034:MB8|0000000000000000 14035:MB8|0000000000000000 14036:MB8|0000000000000000 14037:MB8|0000000000000000 14038:MB8|0000000000000000 14039:MB8|0000000000000000 14040:MB8|0000000000000000 14041:MB8|0000000000000000 14042:MB8|0000000000000000 14043:MB8|0000000000000000 14044:MB8|0000000000000000 14045:MB8|0000000000000000 14046:MB8|0000000000000000 14047:MB8|0000000000000000 14048:MB8|0000000000000000 14049:MB8|0000000000000000 14050:MB8|0000000000000000 14051:MB8|0000000000000000 14052:MB8|0000000000000000 14053:MB8|0000000000000000 14054:MB8|0000000000000000 14055:MB8|0000000000000000 14056:MB8|0000000000000000 14057:MB8|0000000000000000 14058:MB8|0000000000000000 14059:MB8|0000000000000000 14060:MB8|0000000000000000 14061:MB8|0000000000000000 14062:MB8|0000000000000000 14063:MB8|0000000000000000 14064:MB8|0000000000000000 14065:MB8|0000000000000000 14066:MB8|0000000000000000 14067:MB8|0000000000000000 14068:MB8|0000000000000000 14069:MB8|0000000000000000 14070:MB8|0000000000000000 14071:MB8|0000000000000000 14072:MB8|0000000000000000 14073:MB8|0000000000000000 14074:MB8|0000000000000000 14075:MB8|0000000000000000 14076:MB8|0000000000000000 14077:MB8|0000000000000000 14078:MB8|0000000000000000 14079:MB8|0000000000000000 14080:MB8|0000000000000000 14081:MB8|0000000000000000 14082:MB8|0000000000000000 14083:MB8|0000000000000000 14084:MB8|0000000000000000 14085:MB8|0000000000000000 14086:MB8|0000000000000000 14087:MB8|0000000000000000 14088:MB8|0000000000000000 14089:MB8|0000000000000000 14090:MB8|0000000000000000 14091:MB8|0000000000000000 14092:MB8|0000000000000000 14093:MB8|0000000000000000 14094:MB8|0000000000000000 14095:MB8|0000000000000000 14096:MB8|0000000000000000 14097:MB8|0000000000000000 14098:MB8|0000000000000000 14099:MB8|0000000000000000 14100:MB8|0000000000000000 14101:MB8|0000000000000000 14102:MB8|0000000000000000 14103:MB8|0000000000000000 14104:MB8|0000000000000000 14105:MB8|0000000000000000 14106:MB8|0000000000000000 14107:MB8|0000000000000000 14108:MB8|0000000000000000 14109:MB8|0000000000000000 14110:MB8|0000000000000000 14111:MB8|0000000000000000 14112:MB8|0000000000000000 14113:MB8|0000000000000000 14114:MB8|0000000000000000 14115:MB8|0000000000000000 14116:MB8|0000000000000000 14117:MB8|0000000000000000 14118:MB8|0000000000000000 14119:MB8|0000000000000000 14120:MB8|0000000000000000 14121:MB8|0000000000000000 14122:MB8|0000000000000000 14123:MB8|0000000000000000 14124:MB8|0000000000000000 14125:MB8|0000000000000000 14126:MB8|0000000000000000 14127:MB8|0000000000000000 14128:MB8|0000000000000000 14129:MB8|0000000000000000 14130:MB8|0000000000000000 14131:MB8|0000000000000000 14132:MB8|0000000000000000 14133:MB8|0000000000000000 14134:MB8|0000000000000000 14135:MB8|0000000000000000 14136:MB8|0000000000000000 14137:MB8|0000000000000000 14138:MB8|0000000000000000 14139:MB8|0000000000000000 14140:MB8|0000000000000000 14141:MB8|0000000000000000 14142:MB8|0000000000000000 14143:MB8|0000000000000000 14144:MB8|0000000000000000 14145:MB8|0000000000000000 14146:MB8|0000000000000000 14147:MB8|0000000000000000 14148:MB8|0000000000000000 14149:MB8|0000000000000000 14150:MB8|0000000000000000 14151:MB8|0000000000000000 14152:MB8|0000000000000000 14153:MB8|0000000000000000 14154:MB8|0000000000000000 14155:MB8|0000000000000000 14156:MB8|0000000000000000 14157:MB8|0000000000000000 14158:MB8|0000000000000000 14159:MB8|0000000000000000 14160:MB8|0000000000000000 14161:MB8|0000000000000000 14162:MB8|0000000000000000 14163:MB8|0000000000000000 14164:MB8|0000000000000000 14165:MB8|0000000000000000 14166:MB8|0000000000000000 14167:MB8|0000000000000000 14168:MB8|0000000000000000 14169:MB8|0000000000000000 14170:MB8|0000000000000000 14171:MB8|0000000000000000 14172:MB8|0000000000000000 14173:MB8|0000000000000000 14174:MB8|0000000000000000 14175:MB8|0000000000000000 14176:MB8|0000000000000000 14177:MB8|0000000000000000 14178:MB8|0000000000000000 14179:MB8|0000000000000000 14180:MB8|0000000000000000 14181:MB8|0000000000000000 14182:MB8|0000000000000000 14183:MB8|0000000000000000 14184:MB8|0000000000000000 14185:MB8|0000000000000000 14186:MB8|0000000000000000 14187:MB8|0000000000000000 14188:MB8|0000000000000000 14189:MB8|0000000000000000 14190:MB8|0000000000000000 14191:MB8|0000000000000000 14192:MB8|0000000000000000 14193:MB8|0000000000000000 14194:MB8|0000000000000000 14195:MB8|0000000000000000 14196:MB8|0000000000000000 14197:MB8|0000000000000000 14198:MB8|0000000000000000 14199:MB8|0000000000000000 14200:MB8|0000000000000000 14201:MB8|0000000000000000 14202:MB8|0000000000000000 14203:MB8|0000000000000000 14204:MB8|0000000000000000 14205:MB8|0000000000000000 14206:MB8|0000000000000000 14207:MB8|0000000000000000 14208:MB8|0000000000000000 14209:MB8|0000000000000000 14210:MB8|0000000000000000 14211:MB8|0000000000000000 14212:MB8|0000000000000000 14213:MB8|0000000000000000 14214:MB8|0000000000000000 14215:MB8|0000000000000000 14216:MB8|0000000000000000 14217:MB8|0000000000000000 14218:MB8|0000000000000000 14219:MB8|0000000000000000 14220:MB8|0000000000000000 14221:MB8|0000000000000000 14222:MB8|0000000000000000 14223:MB8|0000000000000000 14224:MB8|0000000000000000 14225:MB8|0000000000000000 14226:MB8|0000000000000000 14227:MB8|0000000000000000 14228:MB8|0000000000000000 14229:MB8|0000000000000000 14230:MB8|0000000000000000 14231:MB8|0000000000000000 14232:MB8|0000000000000000 14233:MB8|0000000000000000 14234:MB8|0000000000000000 14235:MB8|0000000000000000 14236:MB8|0000000000000000 14237:MB8|0000000000000000 14238:MB8|0000000000000000 14239:MB8|0000000000000000 14240:MB8|0000000000000000 14241:MB8|0000000000000000 14242:MB8|0000000000000000 14243:MB8|0000000000000000 14244:MB8|0000000000000000 14245:MB8|0000000000000000 14246:MB8|0000000000000000 14247:MB8|0000000000000000 14248:MB8|0000000000000000 14249:MB8|0000000000000000 14250:MB8|0000000000000000 14251:MB8|0000000000000000 14252:MB8|0000000000000000 14253:MB8|0000000000000000 14254:MB8|0000000000000000 14255:MB8|0000000000000000 14256:MB8|0000000000000000 14257:MB8|0000000000000000 14258:MB8|0000000000000000 14259:MB8|0000000000000000 14260:MB8|0000000000000000 14261:MB8|0000000000000000 14262:MB8|0000000000000000 14263:MB8|0000000000000000 14264:MB8|0000000000000000 14265:MB8|0000000000000000 14266:MB8|0000000000000000 14267:MB8|0000000000000000 14268:MB8|0000000000000000 14269:MB8|0000000000000000 14270:MB8|0000000000000000 14271:MB8|0000000000000000 14272:MB8|0000000000000000 14273:MB8|0000000000000000 14274:MB8|0000000000000000 14275:MB8|0000000000000000 14276:MB8|0000000000000000 14277:MB8|0000000000000000 14278:MB8|0000000000000000 14279:MB8|0000000000000000 14280:MB8|0000000000000000 14281:MB8|0000000000000000 14282:MB8|0000000000000000 14283:MB8|0000000000000000 14284:MB8|0000000000000000 14285:MB8|0000000000000000 14286:MB8|0000000000000000 14287:MB8|0000000000000000 14288:MB8|0000000000000000 14289:MB8|0000000000000000 14290:MB8|0000000000000000 14291:MB8|0000000000000000 14292:MB8|0000000000000000 14293:MB8|0000000000000000 14294:MB8|0000000000000000 14295:MB8|0000000000000000 14296:MB8|0000000000000000 14297:MB8|0000000000000000 14298:MB8|0000000000000000 14299:MB8|0000000000000000 14300:MB8|0000000000000000 14301:MB8|0000000000000000 14302:MB8|0000000000000000 14303:MB8|0000000000000000 14304:MB8|0000000000000000 14305:MB8|0000000000000000 14306:MB8|0000000000000000 14307:MB8|0000000000000000 14308:MB8|0000000000000000 14309:MB8|0000000000000000 14310:MB8|0000000000000000 14311:MB8|0000000000000000 14312:MB8|0000000000000000 14313:MB8|0000000000000000 14314:MB8|0000000000000000 14315:MB8|0000000000000000 14316:MB8|0000000000000000 14317:MB8|0000000000000000 14318:MB8|0000000000000000 14319:MB8|0000000000000000 14320:MB8|0000000000000000 14321:MB8|0000000000000000 14322:MB8|0000000000000000 14323:MB8|0000000000000000 14324:MB8|0000000000000000 14325:MB8|0000000000000000 14326:MB8|0000000000000000 14327:MB8|0000000000000000 14328:MB8|0000000000000000 14329:MB8|0000000000000000 14330:MB8|0000000000000000 14331:MB8|0000000000000000 14332:MB8|0000000000000000 14333:MB8|0000000000000000 14334:MB8|0000000000000000 14335:MB8|0000000000000000 14336:MB8|0000000000000000 14337:MB8|0000000000000000 14338:MB8|0000000000000000 14339:MB8|0000000000000000 14340:MB8|0000000000000000 14341:MB8|0000000000000000 14342:MB8|0000000000000000 14343:MB8|0000000000000000 14344:MB8|0000000000000000 14345:MB8|0000000000000000 14346:MB8|0000000000000000 14347:MB8|0000000000000000 14348:MB8|0000000000000000 14349:MB8|0000000000000000 14350:MB8|0000000000000000 14351:MB8|0000000000000000 14352:MB8|0000000000000000 14353:MB8|0000000000000000 14354:MB8|0000000000000000 14355:MB8|0000000000000000 14356:MB8|0000000000000000 14357:MB8|0000000000000000 14358:MB8|0000000000000000 14359:MB8|0000000000000000 14360:MB8|0000000000000000 14361:MB8|0000000000000000 14362:MB8|0000000000000000 14363:MB8|0000000000000000 14364:MB8|0000000000000000 14365:MB8|0000000000000000 14366:MB8|0000000000000000 14367:MB8|0000000000000000 14368:MB8|0000000000000000 14369:MB8|0000000000000000 14370:MB8|0000000000000000 14371:MB8|0000000000000000 14372:MB8|0000000000000000 14373:MB8|0000000000000000 14374:MB8|0000000000000000 14375:MB8|0000000000000000 14376:MB8|0000000000000000 14377:MB8|0000000000000000 14378:MB8|0000000000000000 14379:MB8|0000000000000000 14380:MB8|0000000000000000 14381:MB8|0000000000000000 14382:MB8|0000000000000000 14383:MB8|0000000000000000 14384:MB8|0000000000000000 14385:MB8|0000000000000000 14386:MB8|0000000000000000 14387:MB8|0000000000000000 14388:MB8|0000000000000000 14389:MB8|0000000000000000 14390:MB8|0000000000000000 14391:MB8|0000000000000000 14392:MB8|0000000000000000 14393:MB8|0000000000000000 14394:MB8|0000000000000000 14395:MB8|0000000000000000 14396:MB8|0000000000000000 14397:MB8|0000000000000000 14398:MB8|0000000000000000 14399:MB8|0000000000000000 14400:MB8|0000000000000000 14401:MB8|0000000000000000 14402:MB8|0000000000000000 14403:MB8|0000000000000000 14404:MB8|0000000000000000 14405:MB8|0000000000000000 14406:MB8|0000000000000000 14407:MB8|0000000000000000 14408:MB8|0000000000000000 14409:MB8|0000000000000000 14410:MB8|0000000000000000 14411:MB8|0000000000000000 14412:MB8|0000000000000000 14413:MB8|0000000000000000 14414:MB8|0000000000000000 14415:MB8|0000000000000000 14416:MB8|0000000000000000 14417:MB8|0000000000000000 14418:MB8|0000000000000000 14419:MB8|0000000000000000 14420:MB8|0000000000000000 14421:MB8|0000000000000000 14422:MB8|0000000000000000 14423:MB8|0000000000000000 14424:MB8|0000000000000000 14425:MB8|0000000000000000 14426:MB8|0000000000000000 14427:MB8|0000000000000000 14428:MB8|0000000000000000 14429:MB8|0000000000000000 14430:MB8|0000000000000000 14431:MB8|0000000000000000 14432:MB8|0000000000000000 14433:MB8|0000000000000000 14434:MB8|0000000000000000 14435:MB8|0000000000000000 14436:MB8|0000000000000000 14437:MB8|0000000000000000 14438:MB8|0000000000000000 14439:MB8|0000000000000000 14440:MB8|0000000000000000 14441:MB8|0000000000000000 14442:MB8|0000000000000000 14443:MB8|0000000000000000 14444:MB8|0000000000000000 14445:MB8|0000000000000000 14446:MB8|0000000000000000 14447:MB8|0000000000000000 14448:MB8|0000000000000000 14449:MB8|0000000000000000 14450:MB8|0000000000000000 14451:MB8|0000000000000000 14452:MB8|0000000000000000 14453:MB8|0000000000000000 14454:MB8|0000000000000000 14455:MB8|0000000000000000 14456:MB8|0000000000000000 14457:MB8|0000000000000000 14458:MB8|0000000000000000 14459:MB8|0000000000000000 14460:MB8|0000000000000000 14461:MB8|0000000000000000 14462:MB8|0000000000000000 14463:MB8|0000000000000000 14464:MB8|0000000000000000 14465:MB8|0000000000000000 14466:MB8|0000000000000000 14467:MB8|0000000000000000 14468:MB8|0000000000000000 14469:MB8|0000000000000000 14470:MB8|0000000000000000 14471:MB8|0000000000000000 14472:MB8|0000000000000000 14473:MB8|0000000000000000 14474:MB8|0000000000000000 14475:MB8|0000000000000000 14476:MB8|0000000000000000 14477:MB8|0000000000000000 14478:MB8|0000000000000000 14479:MB8|0000000000000000 14480:MB8|0000000000000000 14481:MB8|0000000000000000 14482:MB8|0000000000000000 14483:MB8|0000000000000000 14484:MB8|0000000000000000 14485:MB8|0000000000000000 14486:MB8|0000000000000000 14487:MB8|0000000000000000 14488:MB8|0000000000000000 14489:MB8|0000000000000000 14490:MB8|0000000000000000 14491:MB8|0000000000000000 14492:MB8|0000000000000000 14493:MB8|0000000000000000 14494:MB8|0000000000000000 14495:MB8|0000000000000000 14496:MB8|0000000000000000 14497:MB8|0000000000000000 14498:MB8|0000000000000000 14499:MB8|0000000000000000 14500:MB8|0000000000000000 14501:MB8|0000000000000000 14502:MB8|0000000000000000 14503:MB8|0000000000000000 14504:MB8|0000000000000000 14505:MB8|0000000000000000 14506:MB8|0000000000000000 14507:MB8|0000000000000000 14508:MB8|0000000000000000 14509:MB8|0000000000000000 14510:MB8|0000000000000000 14511:MB8|0000000000000000 14512:MB8|0000000000000000 14513:MB8|0000000000000000 14514:MB8|0000000000000000 14515:MB8|0000000000000000 14516:MB8|0000000000000000 14517:MB8|0000000000000000 14518:MB8|0000000000000000 14519:MB8|0000000000000000 14520:MB8|0000000000000000 14521:MB8|0000000000000000 14522:MB8|0000000000000000 14523:MB8|0000000000000000 14524:MB8|0000000000000000 14525:MB8|0000000000000000 14526:MB8|0000000000000000 14527:MB8|0000000000000000 14528:MB8|0000000000000000 14529:MB8|0000000000000000 14530:MB8|0000000000000000 14531:MB8|0000000000000000 14532:MB8|0000000000000000 14533:MB8|0000000000000000 14534:MB8|0000000000000000 14535:MB8|0000000000000000 14536:MB8|0000000000000000 14537:MB8|0000000000000000 14538:MB8|0000000000000000 14539:MB8|0000000000000000 14540:MB8|0000000000000000 14541:MB8|0000000000000000 14542:MB8|0000000000000000 14543:MB8|0000000000000000 14544:MB8|0000000000000000 14545:MB8|0000000000000000 14546:MB8|0000000000000000 14547:MB8|0000000000000000 14548:MB8|0000000000000000 14549:MB8|0000000000000000 14550:MB8|0000000000000000 14551:MB8|0000000000000000 14552:MB8|0000000000000000 14553:MB8|0000000000000000 14554:MB8|0000000000000000 14555:MB8|0000000000000000 14556:MB8|0000000000000000 14557:MB8|0000000000000000 14558:MB8|0000000000000000 14559:MB8|0000000000000000 14560:MB8|0000000000000000 14561:MB8|0000000000000000 14562:MB8|0000000000000000 14563:MB8|0000000000000000 14564:MB8|0000000000000000 14565:MB8|0000000000000000 14566:MB8|0000000000000000 14567:MB8|0000000000000000 14568:MB8|0000000000000000 14569:MB8|0000000000000000 14570:MB8|0000000000000000 14571:MB8|0000000000000000 14572:MB8|0000000000000000 14573:MB8|0000000000000000 14574:MB8|0000000000000000 14575:MB8|0000000000000000 14576:MB8|0000000000000000 14577:MB8|0000000000000000 14578:MB8|0000000000000000 14579:MB8|0000000000000000 14580:MB8|0000000000000000 14581:MB8|0000000000000000 14582:MB8|0000000000000000 14583:MB8|0000000000000000 14584:MB8|0000000000000000 14585:MB8|0000000000000000 14586:MB8|0000000000000000 14587:MB8|0000000000000000 14588:MB8|0000000000000000 14589:MB8|0000000000000000 14590:MB8|0000000000000000 14591:MB8|0000000000000000 14592:MB8|0000000000000000 14593:MB8|0000000000000000 14594:MB8|0000000000000000 14595:MB8|0000000000000000 14596:MB8|0000000000000000 14597:MB8|0000000000000000 14598:MB8|0000000000000000 14599:MB8|0000000000000000 14600:MB8|0000000000000000 14601:MB8|0000000000000000 14602:MB8|0000000000000000 14603:MB8|0000000000000000 14604:MB8|0000000000000000 14605:MB8|0000000000000000 14606:MB8|0000000000000000 14607:MB8|0000000000000000 14608:MB8|0000000000000000 14609:MB8|0000000000000000 14610:MB8|0000000000000000 14611:MB8|0000000000000000 14612:MB8|0000000000000000 14613:MB8|0000000000000000 14614:MB8|0000000000000000 14615:MB8|0000000000000000 14616:MB8|0000000000000000 14617:MB8|0000000000000000 14618:MB8|0000000000000000 14619:MB8|0000000000000000 14620:MB8|0000000000000000 14621:MB8|0000000000000000 14622:MB8|0000000000000000 14623:MB8|0000000000000000 14624:MB8|0000000000000000 14625:MB8|0000000000000000 14626:MB8|0000000000000000 14627:MB8|0000000000000000 14628:MB8|0000000000000000 14629:MB8|0000000000000000 14630:MB8|0000000000000000 14631:MB8|0000000000000000 14632:MB8|0000000000000000 14633:MB8|0000000000000000 14634:MB8|0000000000000000 14635:MB8|0000000000000000 14636:MB8|0000000000000000 14637:MB8|0000000000000000 14638:MB8|0000000000000000 14639:MB8|0000000000000000 14640:MB8|0000000000000000 14641:MB8|0000000000000000 14642:MB8|0000000000000000 14643:MB8|0000000000000000 14644:MB8|0000000000000000 14645:MB8|0000000000000000 14646:MB8|0000000000000000 14647:MB8|0000000000000000 14648:MB8|0000000000000000 14649:MB8|0000000000000000 14650:MB8|0000000000000000 14651:MB8|0000000000000000 14652:MB8|0000000000000000 14653:MB8|0000000000000000 14654:MB8|0000000000000000 14655:MB8|0000000000000000 14656:MB8|0000000000000000 14657:MB8|0000000000000000 14658:MB8|0000000000000000 14659:MB8|0000000000000000 14660:MB8|0000000000000000 14661:MB8|0000000000000000 14662:MB8|0000000000000000 14663:MB8|0000000000000000 14664:MB8|0000000000000000 14665:MB8|0000000000000000 14666:MB8|0000000000000000 14667:MB8|0000000000000000 14668:MB8|0000000000000000 14669:MB8|0000000000000000 14670:MB8|0000000000000000 14671:MB8|0000000000000000 14672:MB8|0000000000000000 14673:MB8|0000000000000000 14674:MB8|0000000000000000 14675:MB8|0000000000000000 14676:MB8|0000000000000000 14677:MB8|0000000000000000 14678:MB8|0000000000000000 14679:MB8|0000000000000000 14680:MB8|0000000000000000 14681:MB8|0000000000000000 14682:MB8|0000000000000000 14683:MB8|0000000000000000 14684:MB8|0000000000000000 14685:MB8|0000000000000000 14686:MB8|0000000000000000 14687:MB8|0000000000000000 14688:MB8|0000000000000000 14689:MB8|0000000000000000 14690:MB8|0000000000000000 14691:MB8|0000000000000000 14692:MB8|0000000000000000 14693:MB8|0000000000000000 14694:MB8|0000000000000000 14695:MB8|0000000000000000 14696:MB8|0000000000000000 14697:MB8|0000000000000000 14698:MB8|0000000000000000 14699:MB8|0000000000000000 14700:MB8|0000000000000000 14701:MB8|0000000000000000 14702:MB8|0000000000000000 14703:MB8|0000000000000000 14704:MB8|0000000000000000 14705:MB8|0000000000000000 14706:MB8|0000000000000000 14707:MB8|0000000000000000 14708:MB8|0000000000000000 14709:MB8|0000000000000000 14710:MB8|0000000000000000 14711:MB8|0000000000000000 14712:MB8|0000000000000000 14713:MB8|0000000000000000 14714:MB8|0000000000000000 14715:MB8|0000000000000000 14716:MB8|0000000000000000 14717:MB8|0000000000000000 14718:MB8|0000000000000000 14719:MB8|0000000000000000 14720:MB8|0000000000000000 14721:MB8|0000000000000000 14722:MB8|0000000000000000 14723:MB8|0000000000000000 14724:MB8|0000000000000000 14725:MB8|0000000000000000 14726:MB8|0000000000000000 14727:MB8|0000000000000000 14728:MB8|0000000000000000 14729:MB8|0000000000000000 14730:MB8|0000000000000000 14731:MB8|0000000000000000 14732:MB8|0000000000000000 14733:MB8|0000000000000000 14734:MB8|0000000000000000 14735:MB8|0000000000000000 14736:MB8|0000000000000000 14737:MB8|0000000000000000 14738:MB8|0000000000000000 14739:MB8|0000000000000000 14740:MB8|0000000000000000 14741:MB8|0000000000000000 14742:MB8|0000000000000000 14743:MB8|0000000000000000 14744:MB8|0000000000000000 14745:MB8|0000000000000000 14746:MB8|0000000000000000 14747:MB8|0000000000000000 14748:MB8|0000000000000000 14749:MB8|0000000000000000 14750:MB8|0000000000000000 14751:MB8|0000000000000000 14752:MB8|0000000000000000 14753:MB8|0000000000000000 14754:MB8|0000000000000000 14755:MB8|0000000000000000 14756:MB8|0000000000000000 14757:MB8|0000000000000000 14758:MB8|0000000000000000 14759:MB8|0000000000000000 14760:MB8|0000000000000000 14761:MB8|0000000000000000 14762:MB8|0000000000000000 14763:MB8|0000000000000000 14764:MB8|0000000000000000 14765:MB8|0000000000000000 14766:MB8|0000000000000000 14767:MB8|0000000000000000 14768:MB8|0000000000000000 14769:MB8|0000000000000000 14770:MB8|0000000000000000 14771:MB8|0000000000000000 14772:MB8|0000000000000000 14773:MB8|0000000000000000 14774:MB8|0000000000000000 14775:MB8|0000000000000000 14776:MB8|0000000000000000 14777:MB8|0000000000000000 14778:MB8|0000000000000000 14779:MB8|0000000000000000 14780:MB8|0000000000000000 14781:MB8|0000000000000000 14782:MB8|0000000000000000 14783:MB8|0000000000000000 14784:MB8|0000000000000000 14785:MB8|0000000000000000 14786:MB8|0000000000000000 14787:MB8|0000000000000000 14788:MB8|0000000000000000 14789:MB8|0000000000000000 14790:MB8|0000000000000000 14791:MB8|0000000000000000 14792:MB8|0000000000000000 14793:MB8|0000000000000000 14794:MB8|0000000000000000 14795:MB8|0000000000000000 14796:MB8|0000000000000000 14797:MB8|0000000000000000 14798:MB8|0000000000000000 14799:MB8|0000000000000000 14800:MB8|0000000000000000 14801:MB8|0000000000000000 14802:MB8|0000000000000000 14803:MB8|0000000000000000 14804:MB8|0000000000000000 14805:MB8|0000000000000000 14806:MB8|0000000000000000 14807:MB8|0000000000000000 14808:MB8|0000000000000000 14809:MB8|0000000000000000 14810:MB8|0000000000000000 14811:MB8|0000000000000000 14812:MB8|0000000000000000 14813:MB8|0000000000000000 14814:MB8|0000000000000000 14815:MB8|0000000000000000 14816:MB8|0000000000000000 14817:MB8|0000000000000000 14818:MB8|0000000000000000 14819:MB8|0000000000000000 14820:MB8|0000000000000000 14821:MB8|0000000000000000 14822:MB8|0000000000000000 14823:MB8|0000000000000000 14824:MB8|0000000000000000 14825:MB8|0000000000000000 14826:MB8|0000000000000000 14827:MB8|0000000000000000 14828:MB8|0000000000000000 14829:MB8|0000000000000000 14830:MB8|0000000000000000 14831:MB8|0000000000000000 14832:MB8|0000000000000000 14833:MB8|0000000000000000 14834:MB8|0000000000000000 14835:MB8|0000000000000000 14836:MB8|0000000000000000 14837:MB8|0000000000000000 14838:MB8|0000000000000000 14839:MB8|0000000000000000 14840:MB8|0000000000000000 14841:MB8|0000000000000000 14842:MB8|0000000000000000 14843:MB8|0000000000000000 14844:MB8|0000000000000000 14845:MB8|0000000000000000 14846:MB8|0000000000000000 14847:MB8|0000000000000000 14848:MB8|0000000000000000 14849:MB8|0000000000000000 14850:MB8|0000000000000000 14851:MB8|0000000000000000 14852:MB8|0000000000000000 14853:MB8|0000000000000000 14854:MB8|0000000000000000 14855:MB8|0000000000000000 14856:MB8|0000000000000000 14857:MB8|0000000000000000 14858:MB8|0000000000000000 14859:MB8|0000000000000000 14860:MB8|0000000000000000 14861:MB8|0000000000000000 14862:MB8|0000000000000000 14863:MB8|0000000000000000 14864:MB8|0000000000000000 14865:MB8|0000000000000000 14866:MB8|0000000000000000 14867:MB8|0000000000000000 14868:MB8|0000000000000000 14869:MB8|0000000000000000 14870:MB8|0000000000000000 14871:MB8|0000000000000000 14872:MB8|0000000000000000 14873:MB8|0000000000000000 14874:MB8|0000000000000000 14875:MB8|0000000000000000 14876:MB8|0000000000000000 14877:MB8|0000000000000000 14878:MB8|0000000000000000 14879:MB8|0000000000000000 14880:MB8|0000000000000000 14881:MB8|0000000000000000 14882:MB8|0000000000000000 14883:MB8|0000000000000000 14884:MB8|0000000000000000 14885:MB8|0000000000000000 14886:MB8|0000000000000000 14887:MB8|0000000000000000 14888:MB8|0000000000000000 14889:MB8|0000000000000000 14890:MB8|0000000000000000 14891:MB8|0000000000000000 14892:MB8|0000000000000000 14893:MB8|0000000000000000 14894:MB8|0000000000000000 14895:MB8|0000000000000000 14896:MB8|0000000000000000 14897:MB8|0000000000000000 14898:MB8|0000000000000000 14899:MB8|0000000000000000 14900:MB8|0000000000000000 14901:MB8|0000000000000000 14902:MB8|0000000000000000 14903:MB8|0000000000000000 14904:MB8|0000000000000000 14905:MB8|0000000000000000 14906:MB8|0000000000000000 14907:MB8|0000000000000000 14908:MB8|0000000000000000 14909:MB8|0000000000000000 14910:MB8|0000000000000000 14911:MB8|0000000000000000 14912:MB8|0000000000000000 14913:MB8|0000000000000000 14914:MB8|0000000000000000 14915:MB8|0000000000000000 14916:MB8|0000000000000000 14917:MB8|0000000000000000 14918:MB8|0000000000000000 14919:MB8|0000000000000000 14920:MB8|0000000000000000 14921:MB8|0000000000000000 14922:MB8|0000000000000000 14923:MB8|0000000000000000 14924:MB8|0000000000000000 14925:MB8|0000000000000000 14926:MB8|0000000000000000 14927:MB8|0000000000000000 14928:MB8|0000000000000000 14929:MB8|0000000000000000 14930:MB8|0000000000000000 14931:MB8|0000000000000000 14932:MB8|0000000000000000 14933:MB8|0000000000000000 14934:MB8|0000000000000000 14935:MB8|0000000000000000 14936:MB8|0000000000000000 14937:MB8|0000000000000000 14938:MB8|0000000000000000 14939:MB8|0000000000000000 14940:MB8|0000000000000000 14941:MB8|0000000000000000 14942:MB8|0000000000000000 14943:MB8|0000000000000000 14944:MB8|0000000000000000 14945:MB8|0000000000000000 14946:MB8|0000000000000000 14947:MB8|0000000000000000 14948:MB8|0000000000000000 14949:MB8|0000000000000000 14950:MB8|0000000000000000 14951:MB8|0000000000000000 14952:MB8|0000000000000000 14953:MB8|0000000000000000 14954:MB8|0000000000000000 14955:MB8|0000000000000000 14956:MB8|0000000000000000 14957:MB8|0000000000000000 14958:MB8|0000000000000000 14959:MB8|0000000000000000 14960:MB8|0000000000000000 14961:MB8|0000000000000000 14962:MB8|0000000000000000 14963:MB8|0000000000000000 14964:MB8|0000000000000000 14965:MB8|0000000000000000 14966:MB8|0000000000000000 14967:MB8|0000000000000000 14968:MB8|0000000000000000 14969:MB8|0000000000000000 14970:MB8|0000000000000000 14971:MB8|0000000000000000 14972:MB8|0000000000000000 14973:MB8|0000000000000000 14974:MB8|0000000000000000 14975:MB8|0000000000000000 14976:MB8|0000000000000000 14977:MB8|0000000000000000 14978:MB8|0000000000000000 14979:MB8|0000000000000000 14980:MB8|0000000000000000 14981:MB8|0000000000000000 14982:MB8|0000000000000000 14983:MB8|0000000000000000 14984:MB8|0000000000000000 14985:MB8|0000000000000000 14986:MB8|0000000000000000 14987:MB8|0000000000000000 14988:MB8|0000000000000000 14989:MB8|0000000000000000 14990:MB8|0000000000000000 14991:MB8|0000000000000000 14992:MB8|0000000000000000 14993:MB8|0000000000000000 14994:MB8|0000000000000000 14995:MB8|0000000000000000 14996:MB8|0000000000000000 14997:MB8|0000000000000000 14998:MB8|0000000000000000 14999:MB8|0000000000000000 15000:MB8|0000000000000000 15001:MB8|0000000000000000 15002:MB8|0000000000000000 15003:MB8|0000000000000000 15004:MB8|0000000000000000 15005:MB8|0000000000000000 15006:MB8|0000000000000000 15007:MB8|0000000000000000 15008:MB8|0000000000000000 15009:MB8|0000000000000000 15010:MB8|0000000000000000 15011:MB8|0000000000000000 15012:MB8|0000000000000000 15013:MB8|0000000000000000 15014:MB8|0000000000000000 15015:MB8|0000000000000000 15016:MB8|0000000000000000 15017:MB8|0000000000000000 15018:MB8|0000000000000000 15019:MB8|0000000000000000 15020:MB8|0000000000000000 15021:MB8|0000000000000000 15022:MB8|0000000000000000 15023:MB8|0000000000000000 15024:MB8|0000000000000000 15025:MB8|0000000000000000 15026:MB8|0000000000000000 15027:MB8|0000000000000000 15028:MB8|0000000000000000 15029:MB8|0000000000000000 15030:MB8|0000000000000000 15031:MB8|0000000000000000 15032:MB8|0000000000000000 15033:MB8|0000000000000000 15034:MB8|0000000000000000 15035:MB8|0000000000000000 15036:MB8|0000000000000000 15037:MB8|0000000000000000 15038:MB8|0000000000000000 15039:MB8|0000000000000000 15040:MB8|0000000000000000 15041:MB8|0000000000000000 15042:MB8|0000000000000000 15043:MB8|0000000000000000 15044:MB8|0000000000000000 15045:MB8|0000000000000000 15046:MB8|0000000000000000 15047:MB8|0000000000000000 15048:MB8|0000000000000000 15049:MB8|0000000000000000 15050:MB8|0000000000000000 15051:MB8|0000000000000000 15052:MB8|0000000000000000 15053:MB8|0000000000000000 15054:MB8|0000000000000000 15055:MB8|0000000000000000 15056:MB8|0000000000000000 15057:MB8|0000000000000000 15058:MB8|0000000000000000 15059:MB8|0000000000000000 15060:MB8|0000000000000000 15061:MB8|0000000000000000 15062:MB8|0000000000000000 15063:MB8|0000000000000000 15064:MB8|0000000000000000 15065:MB8|0000000000000000 15066:MB8|0000000000000000 15067:MB8|0000000000000000 15068:MB8|0000000000000000 15069:MB8|0000000000000000 15070:MB8|0000000000000000 15071:MB8|0000000000000000 15072:MB8|0000000000000000 15073:MB8|0000000000000000 15074:MB8|0000000000000000 15075:MB8|0000000000000000 15076:MB8|0000000000000000 15077:MB8|0000000000000000 15078:MB8|0000000000000000 15079:MB8|0000000000000000 15080:MB8|0000000000000000 15081:MB8|0000000000000000 15082:MB8|0000000000000000 15083:MB8|0000000000000000 15084:MB8|0000000000000000 15085:MB8|0000000000000000 15086:MB8|0000000000000000 15087:MB8|0000000000000000 15088:MB8|0000000000000000 15089:MB8|0000000000000000 15090:MB8|0000000000000000 15091:MB8|0000000000000000 15092:MB8|0000000000000000 15093:MB8|0000000000000000 15094:MB8|0000000000000000 15095:MB8|0000000000000000 15096:MB8|0000000000000000 15097:MB8|0000000000000000 15098:MB8|0000000000000000 15099:MB8|0000000000000000 15100:MB8|0000000000000000 15101:MB8|0000000000000000 15102:MB8|0000000000000000 15103:MB8|0000000000000000 15104:MB8|0000000000000000 15105:MB8|0000000000000000 15106:MB8|0000000000000000 15107:MB8|0000000000000000 15108:MB8|0000000000000000 15109:MB8|0000000000000000 15110:MB8|0000000000000000 15111:MB8|0000000000000000 15112:MB8|0000000000000000 15113:MB8|0000000000000000 15114:MB8|0000000000000000 15115:MB8|0000000000000000 15116:MB8|0000000000000000 15117:MB8|0000000000000000 15118:MB8|0000000000000000 15119:MB8|0000000000000000 15120:MB8|0000000000000000 15121:MB8|0000000000000000 15122:MB8|0000000000000000 15123:MB8|0000000000000000 15124:MB8|0000000000000000 15125:MB8|0000000000000000 15126:MB8|0000000000000000 15127:MB8|0000000000000000 15128:MB8|0000000000000000 15129:MB8|0000000000000000 0:MO1|@203 1:MO1|1 2:MO1|0 3:MO1|0 4:MO1|0 5:MO1|@265 6:MO1|@272 7:MO1|@282 8:MO1|0 9:MO1|@580 10:MO1|@610 11:MO1|0 12:MO1|@742 13:MO1|2 14:MO1|0 15:MO1|0 16:MO1|@812 17:MO1|@835 18:MO1|@835 19:MO1|@835 20:MO1|@835 21:MO1|@835 22:MO1|@835 23:MO1|@898 24:MO1|@835 25:MO1|@835 26:MO1|1 27:MO1|@898 28:MO1|1 29:MO1|@1026 30:MO1|@1043 31:MO1|@898 32:MO1|1 33:MO1|@898 34:MO1|1 35:MO1|@898 36:MO1|1 37:MO1|@1233 38:MO1|0 39:MO1|@1309 40:MO1|@1296 41:MO1|1 42:MO1|@1492 43:MO1|@1296 44:MO1|1 45:MO1|@1296 46:MO1|@1596 47:MO1|1 48:MO1|@835 49:MO1|@835 50:MO1|@835 51:MO1|@835 52:MO1|@835 53:MO1|@835 54:MO1|@835 55:MO1|@835 56:MO1|@835 57:MO1|@835 58:MO1|@835 59:MO1|@835 60:MO1|@835 61:MO1|@835 62:MO1|@835 63:MO1|@835 64:MO1|@835 65:MO1|@835 66:MO1|@835 67:MO1|@835 68:MO1|@835 69:MO1|@835 70:MO1|@835 71:MO1|0 72:MO1|0 73:MO1|0 74:MO1|@2620 75:MO1|@2623 76:MO256|@3134,@3135,@3136,@3137,@3138,@3139,@3140,@3141,@3142,@3143,@3144,@3145,@3146,@3147,@3148,@3149,@3150,@3151,@3152,@3153,@3154,@3155,@3156,@3157,@3158,@3159,@3160,@3161,@3162,@3163,@3164,@3165,@3166,@3167,@3168,@3169,@3170,@3171,@3172,@3173,@3174,@3175,@3176,@3177,@3178,@3179,@3180,@3181,@3182,@3183,@3184,@3185,@3186,@3187,@3188,@3189,@3190,@3191,@3192,@3193,@3194,@3195,@3196,@3197,@3198,@3199,@3200,@3201,@3202,@3203,@3204,@3205,@3206,@3207,@3208,@3209,@3210,@3211,@3212,@3213,@3214,@3215,@3216,@3217,@3218,@3219,@3220,@3221,@3222,@3223,@3224,@3225,@3226,@3227,@3228,@3229,@3230,@3231,@3232,@3233,@3234,@3235,@3236,@3237,@3238,@3239,@3240,@3241,@3242,@3243,@3244,@3245,@3246,@3247,@3248,@3249,@3250,@3251,@3252,@3253,@3254,@3255,@3256,@3257,@3258,@3259,@3260,@3261,@3262,@3263,@3264,@3265,@3266,@3267,@3268,@3269,@3270,@3271,@3272,@3273,@3274,@3275,@3276,@3277,@3278,@3279,@3280,@3281,@3282,@3283,@3284,@3285,@3286,@3287,@3288,@3289,@3290,@3291,@3292,@3293,@3294,@3295,@3296,@3297,@3298,@3299,@3300,@3301,@3302,@3303,@3304,@3305,@3306,@3307,@3308,@3309,@3310,@3311,@3312,@3313,@3314,@3315,@3316,@3317,@3318,@3319,@3320,@3321,@3322,@3323,@3324,@3325,@3326,@3327,@3328,@3329,@3330,@3331,@3332,@3333,@3334,@3335,@3336,@3337,@3338,@3339,@3340,@3341,@3342,@3343,@3344,@3345,@3346,@3347,@3348,@3349,@3350,@3351,@3352,@3353,@3354,@3355,@3356,@3357,@3358,@3359,@3360,@3361,@3362,@3363,@3364,@3365,@3366,@3367,@3368,@3369,@3370,@3371,@3372,@3373,@3374,@3375,@3376,@3377,@3378,@3379,@3380,@3381,@3382,@3383,@3384,@3385,@3386,@3387,@3388,@3133 77:MO256|2,1,2,2,1,2,1,1,1,1,3,1,1,3,1,1,1,3,7,3,3,3,1,3,3,3,3,3,1,1,2,2,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,5,2,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,3,1,1,1,2,2,3,1,1,1 78:MO1|@835 79:MO1|@3471 80:MO1|0 81:MO1|@898 82:MO1|1 83:MO1|0 84:MO1|@1296 85:MO1|@1596 86:MO1|1 87:MO1|@1296 88:MO1|@1596 89:MO1|1 90:MO1|@898 91:MO1|1 92:MO1|0 93:MO1|0 94:MO1|0 95:MO1|0 96:MO1|@4426 97:MO1|0 98:MO1|@4570 99:MO1|0 100:MO1|0 101:MO1|0 102:MO1|@835 103:MO1|@835 104:MO1|0 105:MO1|@835 106:MO1|@5295 107:MO1|0 108:MO1|@3661 109:MO1|@5551 110:MO1|@8991 111:MO1|@5835 112:MO1|@6063 113:MO1|@5852 114:MO1|@5935 115:MO1|@5858 116:MO1|@5874 117:MO1|@835 118:MO1|@5898 119:MO1|@5909 120:MO1|@5921 121:MO1|@6034 122:MO1|@6005 123:MO1|@6023 124:MO1|@5835 125:MO1|@6925 126:MO1|@6073 127:MO1|@6825 128:MO1|@6108 129:MO1|@6135 130:MO1|@6335 131:MO1|@6224 132:MO1|@6275 133:MO1|@6312 134:MO1|@6369 135:MO1|@6416 136:MO1|@6420 137:MO1|@6495 138:MO1|@6593 139:MO1|@6644 140:MO1|@6736 141:MO1|@6752 142:MO1|@6780 143:MO1|@6809 144:MO1|@6873 145:MO1|@6892 146:MO1|0 147:MO1|@7375 148:MO1|@7267 149:MO1|@7276 150:MO1|@7310 151:MO1|@8477 152:MO1|@7801 153:MO1|@7801 154:MO1|@6023 155:MO1|@5935 156:MO1|@7276 157:MO1|@7953 158:MO1|@8613 159:MO1|@8072 160:MO1|@8277 161:MO1|@8286 162:MO1|@8289 163:MO1|@8292 164:MO1|@8332 165:MO1|@8296 166:MO1|@8316 167:MO1|@8477 168:MO1|@8500 169:MO1|@7953 170:MO1|@8528 171:MO1|@8550 172:MO1|@8566 173:MO1|@8589 174:MO1|@8500 175:MO1|@8897 176:MO1|@9110 177:MO1|@9185 178:MO1|@9147 179:MO1|@9149 180:MO1|@8072 181:MO1|@9363 182:MO1|@9205 183:MO1|@8277 184:MO1|@9233 185:MO1|@9233 186:MO1|@6034 187:MO1|@9269 188:MO1|0 189:MO1|0 190:MO1|0 191:MO1|0 192:MO1|0 193:MO1|@10137 194:MO1|0 195:MO1|32 196:MO1|@294 197:MO1|48 198:MO1|0 199:MO1|41 18929:MVO1|0 18930:MVO1|@221 18931:MVO1|1 18932:MVO1|1 18933:MVO1|1 18934:MVO1|0 18935:MVO1|0 18936:MVO1|1 18937:MVO1|1 18938:MVO1|@739 18939:MVO1|1 18940:MVO1|@764 18941:MVO1|1 18942:MVO1|1 18896:MWVB32|0000000000000000506f6c79546872656164466f726b54687265616400000000 18897:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18898:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18899:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18900:MWVB32|0000000000000000506f6c7950726f63657373456e764572726f724e616d6500 18901:MWVB32|0000000000000000506f6c795468726561644d75746578426c6f636b00000000 18902:MWVB32|0000000000000000506f6c795468726561644d75746578556e6c6f636b000000 18903:MWVB32|0000000000000000506f6c7954687265616454657374496e7465727275707400 18904:MWVB32|0000000000000000506f6c79546872656164436f6e6456617257616b65000000 18905:MWVB32|0000000000000000506f6c7957616974466f725369676e616c00000000000000 18906:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 18907:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18908:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18909:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18910:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18911:MWVB32|0000000000000000506f6c794164644172626974726172790000000000000000 18912:MWVB32|0000000000000000506f6c795375627472616374417262697472617279000000 18913:MWVB32|0000000000000000506f6c7951756f7452656d41726269747261727900000000 18914:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 18915:MWVB32|0000000000000000506f6c795468726561644d6178537461636b53697a650000 18916:MWVB32|0000000000000000506f6c7947657446756e6374696f6e4e616d650000000000 18917:MWVB32|0000000000000000506f6c79436f707942797465566563546f436f6465000000 18918:MWVB32|0000000000000000506f6c794c6f636b4d757461626c65436f64650000000000 18919:MWVB24|0000000000000000506f6c794973426967456e6469616e00 18920:MWVB24|0000000000000000506f6c7953697a65446f75626c650000 18921:MWVB24|0000000000000000506f6c7953697a65466c6f6174000000 18922:MWVB40|0000000000000000506f6c79437265617465456e747279506f696e744f626a656374000000000000 18923:MWVB32|0000000000000000506f6c794d756c7469706c79417262697472617279000000 18924:MWVB32|0000000000000000506f6c79436f6d7061726541726269747261727900000000 18925:MWVB40|0000000000000000506f6c794765744c6f774f7264657241734c61726765576f7264000000000000 18926:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 18927:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 18928:MWVB24|0000000000000000506f6c7946696e697368000000000000 polyml-5.7.1/imports/polymli386.txt0000644000175000017500002575363213204034553016212 0ustar daviddavidObjects 19876 Root 9397 9397:O1|@4804 9398:O2|@9400,@9399 9399:O2|@9403,@9402 9400:O2|@4805,@19862 9401:S19|466f726569676e4d656d6f72792e5f2d283129 9402:O2|@9859,@9858 9403:O2|@4806,@9404 9404:O2|@4847,@9851 9405:O4|12,@9407,@9408,@9406 9406:O5|@9409,218,0,218,0 9407:S6|546872656164 9408:S53|5468652073616d65206174747269627574652061707065617273206d6f7265207468616e206f6e636520696e20746865206c697374 9409:S18|2e2f62617369732f5468726561642e736d6c 9410:S38|5468726561642e5468726561642e6174747273546f576f7264283129636f6e76657274283429 9411:S20|506f6c79546872656164466f726b546872656164 9412:O6|@9413,@4597,@9414,@4598,@19864,@4596 9413:O2|4096,@3 9414:O14|@9416,@9417,@9422,0,0,@9423,0,@9424,@9432,@9435,4096,0,@9438,@9415 9415:O1|@9441 9416:S6|7374644f7574 9417:O1|@9418 9418:O3|@4809,@9419,1 9419:O1|@4810 9420:S50|4c696272617279494f537570706f72742e777261704f757446696c654465736372283529746578745072696d57722d283129 9421:S18|506f6c794261736963494f47656e6572616c 9422:O3|@4811,@9419,1 9423:O1|1 9424:O1|@9425 9425:O3|@4812,@9426,1 9426:O1|@4813 9427:O4|11,@9429,0,@9428 9428:O5|@9430,143,0,143,0 9429:S9|537562736372697074 9430:S26|2e2f62617369732f4c696272617279537570706f72742e736d6c 9431:S49|4c696272617279494f537570706f72742e777261704f757446696c65446573637228352977726974654172726179283129 9432:O1|@9433 9433:O3|@4814,@9426,1 9434:S50|4c696272617279494f537570706f72742e777261704f757446696c6544657363722835297772697465566563746f72283129 9435:O1|@9436 9436:O3|@4815,@9437,1 9437:O1|@4816 9438:O1|@9439 9439:O3|@4817,@9425,@9436 9440:S40|5072696d494f28292e6175676d656e7457726974657228312977726974654172724e42272d283129 9441:O3|@4818,@9433,@9436 9442:S40|5072696d494f28292e6175676d656e7457726974657228312977726974655665634e42272d283129 9443:S31|556e61626c6520746f20637265617465207369676e616c207468726561640a 9444:S6|6f7574707574 9445:O4|@4599,@9446,0,0 9446:S12|436c6f73656453747265616d 9447:O5|@9448,610,0,610,0 9448:S25|2e2f62617369732f426173696353747265616d494f2e736d6c 9449:S2|496f 9450:O1|@9451 9451:O1|@4822 9452:O2|@9453,0 9453:O2|3,@9454 9454:S4|2e2e2e7d 9455:O4|5,@9456,0,0 9456:S8|4f766572666c6f77 9457:O1|@4823 9458:O2|3,@9459 9459:S3|2e2e2e 9460:O2|@9461,0 9461:O2|3,@9462 9462:S4|2e2e2e29 9463:O2|@4825,@9464 9464:O2|@4828,@9476 9465:O4|4,@9467,0,@9466 9466:O5|@9430,169,0,169,0 9467:S4|53697a65 9468:O4|4,@9467,0,@9469 9469:O5|@9430,138,0,138,0 9470:S19|537472696e672e746f537472696e6773283229 9471:O2|@9472,0 9472:S1|22 9473:B4|00000000 9474:S16|537472696e672e636f6e636174283129 9475:S7|61646450502d31 9476:O256|@9505,@9506,@9507,@9508,@9509,@9510,@9511,@9512,@9513,@9514,@9515,@9516,@9517,@9518,@9519,@9520,@9521,@9522,@9523,@9524,@9525,@9526,@9527,@9528,@9529,@9530,@9531,@9532,@9533,@9534,@9535,@9536,@9537,@9538,@9539,@9540,@9541,@9542,@9543,@9544,@9545,@9546,@9547,@9548,@9549,@9550,@9551,@9552,@9553,@9554,@9555,@9556,@9557,@9558,@9559,@9560,@9561,@9562,@9563,@9564,@9565,@9566,@9567,@9568,@9569,@9570,@9571,@9572,@9573,@9574,@9575,@9576,@9577,@9578,@9579,@9580,@9581,@9582,@9583,@9584,@9585,@9586,@9587,@9588,@9589,@9590,@9591,@9592,@9593,@9594,@9595,@9596,@9597,@9598,@9599,@9600,@9601,@9602,@9603,@9604,@9605,@9606,@9607,@9608,@9609,@9610,@9611,@9612,@9613,@9614,@9615,@9616,@9617,@9618,@9619,@9620,@9621,@9622,@9623,@9624,@9625,@9626,@9627,@9628,@9629,@9630,@9631,@9632,@9633,@9634,@9635,@9636,@9637,@9638,@9639,@9640,@9641,@9642,@9643,@9644,@9645,@9646,@9647,@9648,@9649,@9650,@9651,@9652,@9653,@9654,@9655,@9656,@9657,@9658,@9659,@9660,@9661,@9662,@9663,@9664,@9665,@9666,@9667,@9668,@9669,@9670,@9671,@9672,@9673,@9674,@9675,@9676,@9677,@9678,@9679,@9680,@9681,@9682,@9683,@9684,@9685,@9686,@9687,@9688,@9689,@9690,@9691,@9692,@9693,@9694,@9695,@9696,@9697,@9698,@9699,@9700,@9701,@9702,@9703,@9704,@9705,@9706,@9707,@9708,@9709,@9710,@9711,@9712,@9713,@9714,@9715,@9716,@9717,@9718,@9719,@9720,@9721,@9722,@9723,@9724,@9725,@9726,@9727,@9728,@9729,@9730,@9731,@9732,@9733,@9734,@9735,@9736,@9737,@9738,@9739,@9740,@9741,@9742,@9743,@9744,@9745,@9746,@9747,@9748,@9749,@9750,@9751,@9752,@9753,@9754,@9755,@9756,@9757,@9758,@9759,@9504 9477:S2|5c5c 9478:S2|5c22 9479:S2|5c61 9480:S2|5c62 9481:S2|5c74 9482:S2|5c6e 9483:S2|5c76 9484:S2|5c66 9485:S2|5c72 9486:S2|5c5e 9487:O4|@4603,@9489,0,@9488 9488:O5|@9490,126,0,126,0 9489:S3|436872 9490:S18|2e2f62617369732f537472696e672e736d6c 9491:O4|7,@9493,0,@9492 9492:O5|@9494,125,0,125,0 9493:S3|446976 9494:S23|2e2f62617369732f496e697469616c42617369732e4d4c 9495:O4|5,@9497,0,@9496 9496:O5|@9494,128,0,128,0 9497:S8|4f766572666c6f77 9498:O4|7,@9500,0,@9499 9499:O5|@9494,134,0,134,0 9500:S3|446976 9501:S18|436861722e6f6374496e7452657072283329 9502:S1|5c 9503:S16|436861722e746f537472696e67283129 9504:S1|ff 9505:S1|00 9506:S1|01 9507:S1|02 9508:S1|03 9509:S1|04 9510:S1|05 9511:S1|06 9512:S1|07 9513:S1|08 9514:S1|09 9515:S1|0a 9516:S1|0b 9517:S1|0c 9518:S1|0d 9519:S1|0e 9520:S1|0f 9521:S1|10 9522:S1|11 9523:S1|12 9524:S1|13 9525:S1|14 9526:S1|15 9527:S1|16 9528:S1|17 9529:S1|18 9530:S1|19 9531:S1|1a 9532:S1|1b 9533:S1|1c 9534:S1|1d 9535:S1|1e 9536:S1|1f 9537:S1|20 9538:S1|21 9539:S1|22 9540:S1|23 9541:S1|24 9542:S1|25 9543:S1|26 9544:S1|27 9545:S1|28 9546:S1|29 9547:S1|2a 9548:S1|2b 9549:S1|2c 9550:S1|2d 9551:S1|2e 9552:S1|2f 9553:S1|30 9554:S1|31 9555:S1|32 9556:S1|33 9557:S1|34 9558:S1|35 9559:S1|36 9560:S1|37 9561:S1|38 9562:S1|39 9563:S1|3a 9564:S1|3b 9565:S1|3c 9566:S1|3d 9567:S1|3e 9568:S1|3f 9569:S1|40 9570:S1|41 9571:S1|42 9572:S1|43 9573:S1|44 9574:S1|45 9575:S1|46 9576:S1|47 9577:S1|48 9578:S1|49 9579:S1|4a 9580:S1|4b 9581:S1|4c 9582:S1|4d 9583:S1|4e 9584:S1|4f 9585:S1|50 9586:S1|51 9587:S1|52 9588:S1|53 9589:S1|54 9590:S1|55 9591:S1|56 9592:S1|57 9593:S1|58 9594:S1|59 9595:S1|5a 9596:S1|5b 9597:S1|5c 9598:S1|5d 9599:S1|5e 9600:S1|5f 9601:S1|60 9602:S1|61 9603:S1|62 9604:S1|63 9605:S1|64 9606:S1|65 9607:S1|66 9608:S1|67 9609:S1|68 9610:S1|69 9611:S1|6a 9612:S1|6b 9613:S1|6c 9614:S1|6d 9615:S1|6e 9616:S1|6f 9617:S1|70 9618:S1|71 9619:S1|72 9620:S1|73 9621:S1|74 9622:S1|75 9623:S1|76 9624:S1|77 9625:S1|78 9626:S1|79 9627:S1|7a 9628:S1|7b 9629:S1|7c 9630:S1|7d 9631:S1|7e 9632:S1|7f 9633:S1|80 9634:S1|81 9635:S1|82 9636:S1|83 9637:S1|84 9638:S1|85 9639:S1|86 9640:S1|87 9641:S1|88 9642:S1|89 9643:S1|8a 9644:S1|8b 9645:S1|8c 9646:S1|8d 9647:S1|8e 9648:S1|8f 9649:S1|90 9650:S1|91 9651:S1|92 9652:S1|93 9653:S1|94 9654:S1|95 9655:S1|96 9656:S1|97 9657:S1|98 9658:S1|99 9659:S1|9a 9660:S1|9b 9661:S1|9c 9662:S1|9d 9663:S1|9e 9664:S1|9f 9665:S1|a0 9666:S1|a1 9667:S1|a2 9668:S1|a3 9669:S1|a4 9670:S1|a5 9671:S1|a6 9672:S1|a7 9673:S1|a8 9674:S1|a9 9675:S1|aa 9676:S1|ab 9677:S1|ac 9678:S1|ad 9679:S1|ae 9680:S1|af 9681:S1|b0 9682:S1|b1 9683:S1|b2 9684:S1|b3 9685:S1|b4 9686:S1|b5 9687:S1|b6 9688:S1|b7 9689:S1|b8 9690:S1|b9 9691:S1|ba 9692:S1|bb 9693:S1|bc 9694:S1|bd 9695:S1|be 9696:S1|bf 9697:S1|c0 9698:S1|c1 9699:S1|c2 9700:S1|c3 9701:S1|c4 9702:S1|c5 9703:S1|c6 9704:S1|c7 9705:S1|c8 9706:S1|c9 9707:S1|ca 9708:S1|cb 9709:S1|cc 9710:S1|cd 9711:S1|ce 9712:S1|cf 9713:S1|d0 9714:S1|d1 9715:S1|d2 9716:S1|d3 9717:S1|d4 9718:S1|d5 9719:S1|d6 9720:S1|d7 9721:S1|d8 9722:S1|d9 9723:S1|da 9724:S1|db 9725:S1|dc 9726:S1|dd 9727:S1|de 9728:S1|df 9729:S1|e0 9730:S1|e1 9731:S1|e2 9732:S1|e3 9733:S1|e4 9734:S1|e5 9735:S1|e6 9736:S1|e7 9737:S1|e8 9738:S1|e9 9739:S1|ea 9740:S1|eb 9741:S1|ec 9742:S1|ed 9743:S1|ee 9744:S1|ef 9745:S1|f0 9746:S1|f1 9747:S1|f2 9748:S1|f3 9749:S1|f4 9750:S1|f5 9751:S1|f6 9752:S1|f7 9753:S1|f8 9754:S1|f9 9755:S1|fa 9756:S1|fb 9757:S1|fc 9758:S1|fd 9759:S1|fe 9760:O1|@4830 9761:O2|3,@9762 9762:S3|2e2e2e 9763:O5|0,0,0,@9765,@9764 9764:O2|@9769,0 9765:O2|@9766,0 9766:O2|0,@9767 9767:O5|@9768,0,0,0,0 9768:S14|5374616e64617264204261736973 9769:O2|3,@9770 9770:S4|4e4f4e45 9771:S1|28 9772:S1|7b 9773:S1|5b 9774:O2|@9776,@9775 9775:O2|@9777,0 9776:O3|1,0,0 9777:O2|3,@9778 9778:S1|29 9779:O2|3,@9771 9780:O3|1,1,0 9781:O5|0,0,0,@9765,@9782 9782:O2|@9783,0 9783:O2|3,@9784 9784:S4|534f4d45 9785:S12|7072696e742d6f7074696f6e 9786:S13|7072696e746f7074696f6e2829 9787:O4|0,@9788,1,1 9788:O1|@4832 9789:O1|@4833 9790:S23|506f6c7950726f63657373456e764572726f724e616d65 9791:S17|7072696e742d4f532e7379736572726f72 9792:O2|@9793,0 9793:O2|3,@9778 9794:O3|1,1,0 9795:O2|3,@9796 9796:S1|2c 9797:O2|3,@9771 9798:O2|@9799,0 9799:O2|3,@9546 9800:O2|3,@9545 9801:S26|65786e5072696e74283329706172656e74686573697365283129 9802:O3|1,1,1 9803:O2|3,@9804 9804:S6|537973457272 9805:S11|65786e5072696e74283329 9806:O2|@9807,0 9807:O2|3,@9808 9808:S1|7d 9809:O2|3,@9810 9810:S6|6e616d65203d 9811:O2|3,@9812 9812:S10|66756e6374696f6e203d 9813:O2|3,@9814 9814:S7|6361757365203d 9815:O2|3,@9772 9816:S14|7072696e742d6c6162656c6c6564 9817:S8|666c7573684f7574 9818:O4|@4606,@9819,0,0 9819:S20|426c6f636b696e674e6f74537570706f72746564 9820:O5|@9448,514,0,515,0 9821:O4|11,@9429,0,@9822 9822:O5|@9823,111,0,111,0 9823:S33|2e2f62617369732f566563746f72536c6963654f7065726174696f6e732e736d6c 9824:O3|1,@9825,0 9825:S9|496e74657272757074 9826:O5|@9448,501,0,501,0 9827:S28|426173696353747265616d494f28292e666c7573684f757427283129 9828:O5|@9448,604,0,605,0 9829:O4|11,@9429,0,@9830 9830:O5|@9490,1646,0,1646,0 9831:O5|@9448,595,0,595,0 9832:S38|426173696353747265616d494f28292e7772697465566563283429666f7263654f7574283129 9833:O5|@9448,577,0,577,0 9834:S27|426173696353747265616d494f28292e7772697465566563283429 9835:S31|426173696353747265616d494f28292e6f7574707574566563746f72283229 9836:S34|426173696353747265616d494f28292e6f7574707574566563746f72283129283129 9837:S21|506f6c795468726561644d75746578556e6c6f636b 9838:S23|506f6c7954687265616454657374496e74657272757074 9839:S7|7261697365466e 9840:O5|@9841,77,0,77,0 9841:S27|2e2f62617369732f506f6c794d4c457863657074696f6e2e736d6c 9842:S20|506f6c795468726561644d75746578426c6f636b 9843:S20|5468726561644c69622e70726f74656374283329 9844:O1|@4836 9845:O4|11,@9429,0,@9846 9846:O5|@9823,101,0,101,0 9847:O4|11,@9429,0,@9848 9848:O5|@9490,267,0,267,0 9849:S29|54657874494f2e5465787453747265616d494f2e6f7574707574283229 9850:S20|5369676e616c2e666f726b546872656164283129 9851:O1|@4851 9852:S21|506f6c79546872656164436f6e6456617257616b65 9853:S35|5369676e616c2e73696754687265616428312962726f6164436173745765616b283229 9854:O1|@4850 9855:S38|5369676e616c2e73696754687265616428312962726f6164436173745765616b283129283129 9856:S19|5369676e616c2e736967546872656164283129 9857:S17|506f6c7957616974466f725369676e616c 9858:O2|@9869,@9868 9859:O2|@4852,@9860 9860:O3|@4854,@9864,@19868 9861:S21|506f6c7950726f63657373456e7647656e6572616c 9862:S28|426173696353747265616d494f28292e646f4f6e456e747279283129 9863:S27|426173696353747265616d494f28292e636c6f7365416c6c283129 9864:O3|@4855,@19869,@19868 9865:S16|4c6973742e66696c7465722832292829 9866:S35|426173696353747265616d494f28292e7465726d696e61746553747265616d27283129 9867:S28|426173696353747265616d494f28292e636c6f73654f757427283129 9868:O2|@9932,0 9869:O3|@4859,@19871,@19870 9870:O9|@4860,@9426,@9898,@9437,@9419,@9899,@9900,@9901,@9871 9871:O6|@4885,0,0,@9906,@9902,@9902 9872:S47|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329726561644172726179283129 9873:S48|4c696272617279494f537570706f72742e77726170496e46696c65446573637228332972656164566563746f72283129 9874:S34|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283129283129 9875:O3|0,0,0 9876:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229676574506f732d283129 9877:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229736574506f732d283129 9878:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229656e64506f732d283129 9879:S43|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329617661696c283129 9880:S49|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329746578745072696d52642d283129 9881:O4|4,@9467,0,@9882 9882:O5|@9430,149,0,149,0 9883:S37|5072696d494f28292e6175676d656e7452656164657228312972656164566563272d283129 9884:O4|11,@9429,0,@9885 9885:O5|@9490,1211,0,1211,0 9886:S37|5072696d494f28292e6175676d656e7452656164657228312972656164417272272d283129 9887:S39|5072696d494f28292e6175676d656e74526561646572283129726561645665634e42272d283129 9888:S39|5072696d494f28292e6175676d656e74526561646572283129726561644172724e42272d283129 9889:S7|72656164566563 9890:O5|@9891,239,0,242,0 9891:S18|2e2f62617369732f5072696d494f2e736d6c 9892:S38|5072696d494f28292e6175676d656e745265616465722831297265616456656327272d283129 9893:S7|72656164417272 9894:O5|@9891,262,0,265,0 9895:S38|5072696d494f28292e6175676d656e745265616465722831297265616441727227272d283129 9896:S25|5072696d494f28292e6175676d656e74526561646572283129 9897:S35|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329 9898:O1|@4881 9899:O1|@4882 9900:O1|@4883 9901:O1|@4884 9902:O1|@9908 9903:O5|@9904,135,0,135,0 9904:S28|2e2f62617369732f4c696272617279494f537570706f72742e736d6c 9905:S31|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283229 9906:O1|@9907 9907:B4|73000000 9908:B4|0b000000 9909:S5|737464496e 9910:S37|4261736963496d7065726174697665494f28292e736574496e73747265616d283229283129 9911:S19|54657874494f2e6f6e53746172745570283129 9912:O5|0,@9914,@9913,1693,0 9913:O3|1,@4607,@19872 9914:S1694|282a0a20202020436f707972696768742028632920323030362d31302c20323031352d31362020446176696420432e204a2e204d617474686577730a0a2020202054686973206c696272617279206973206672656520736f6674776172653b20796f752063616e2072656469737472696275746520697420616e642f6f720a202020206d6f6469667920697420756e64657220746865207465726d73206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e73652076657273696f6e20322e31206173207075626c697368656420627920746865204672656520536f66747761726520466f756e646174696f6e2e0a202020200a2020202054686973206c69627261727920697320646973747269627574656420696e2074686520686f706520746861742069742077696c6c2062652075736566756c2c0a2020202062757420574954484f555420414e592057415252414e54593b20776974686f7574206576656e2074686520696d706c6965642077617272616e7479206f660a202020204d45524348414e544142494c495459206f72204649544e45535320464f52204120504152544943554c415220505552504f53452e20205365652074686520474e550a202020204c65737365722047656e6572616c205075626c6963204c6963656e736520666f72206d6f72652064657461696c732e0a202020200a20202020596f752073686f756c642068617665207265636569766564206120636f7079206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e736520616c6f6e6720776974682074686973206c6962726172793b206966206e6f742c20777269746520746f20746865204672656520536f6674776172650a20202020466f756e646174696f6e2c20496e632e2c203531204672616e6b6c696e2053742c20466966746820466c6f6f722c20426f73746f6e2c204d41202030323131302d3133303120205553410a2a290a0a282a20436f6d70696c65722074686520636f6d70696c657220616e64206578706f7274206974206173206120706f727461626c652066696c652e20205468652072657374206f66207468650a202020626f6f7473747261702070726f63657373206973207468656e20646f6e65207768656e2074686520706f727461626c652066696c6520697320696d706f727465642e202a290a0a506f6c794d4c2e7072696e745f646570746820303b0a0a506f6c794d4c2e6d616b6520226d6c736f757263652f4d4c436f6d70696c6572223b0a0a66756e20636f6d70696c654261736973416e644578706f72742829203d0a6c65740a20202020282a20546869732066756e6374696f6e2069732074686520726f6f74206f662074686520227072652d6275696c742220636f6d70696c6572732e2020497420636f6d70696c657320696e0a20202020202020746865206261736973206c69627261727920616e64206578706f7274732074686520636f6d70696c657220616c6f6e67207769746820746865206261736973206c6962726172790a20202020202020617320616e206f7065726174696e672d73797374656d207370656369666963206f626a6563742066696c652e202a290a2020202076616c20676c6f62616c5461626c65203a204d616b652e67456e76203d204d616b652e6d616b6547456e762028290a2020202076616c2074657374203d204c6973742e6578697374732028666e20222d2d696e744973496e74496e6622203d3e2074727565207c205f203d3e2066616c7365292028436f6d6d616e644c696e652e617267756d656e74732829290a2020202076616c202829203d20496e697469616c6973652e696e6974476c6f62616c456e767b676c6f62616c5461626c653d676c6f62616c5461626c652c20696e744973417262697472617279507265636973696f6e3d746573747d0a696e0a202020204d616b652e7368656c6c50726f6320676c6f62616c5461626c6528290a656e643b0a0a506f6c794d4c2e7368617265436f6d6d6f6e4461746120636f6d70696c654261736973416e644578706f72743b0a0a506f6c794d4c2e6578706f7274506f727461626c652822706f6c7974656d70222c0a20202020666e202829203d3e2028636f6d70696c654261736973416e644578706f72742028293b204f532e50726f636573732e65786974204f532e50726f636573732e73756363657373292068616e646c65205f203d3e204f532e50726f636573732e65786974204f532e50726f636573732e6661696c757265293b0a 9915:O2|1,@9916 9916:O15|@9909,@9918,@9919,@9921,0,0,@9922,0,@9923,@9925,@9927,4096,@9929,@9917,0 9917:O1|@9931 9918:O3|@4868,@9437,0 9919:O1|@9920 9920:O3|@4869,@9419,0 9921:O3|@4871,@9419,0 9922:O1|0 9923:O1|@9924 9924:O3|@4861,@9426,0 9925:O1|@9926 9926:O3|@4862,@9898,0 9927:O1|@9928 9928:O3|@4870,@9437,0 9929:O1|@9930 9930:O3|@4877,@9924,@9928 9931:O3|@4875,@9926,@9928 9932:O2|@4887,@9933 9933:O3|@4888,@9934,@19873 9934:O3|@4889,@19874,@19873 9935:O2|@9937,@9936 9936:O2|@9412,0 9937:O6|@9938,@4609,@9939,@4610,@19875,@4608 9938:O2|4096,@88 9939:O14|@9941,@9942,@9944,0,0,@9945,0,@9946,@9948,@9950,4096,0,@9952,@9940 9940:O1|@9954 9941:S6|737464457272 9942:O1|@9943 9943:O3|@4809,@9419,2 9944:O3|@4811,@9419,2 9945:O1|2 9946:O1|@9947 9947:O3|@4812,@9426,2 9948:O1|@9949 9949:O3|@4814,@9426,2 9950:O1|@9951 9951:O3|@4815,@9437,2 9952:O1|@9953 9953:O3|@4817,@9947,@9951 9954:O3|@4818,@9949,@9951 9955:S20|506f6c794d4c2e72756e4f6e456e747279283129 9956:O4|7,@9493,0,@9957 9957:O5|@9494,253,0,253,0 9958:B4|00000080 9959:S16|506f6c79416464417262697472617279 9960:O4|5,@9497,0,@9961 9961:O5|@9962,74,0,74,0 9962:S15|2e2f62617369732f496e742e736d6c 9963:S25|486173685461626c652e6861736856616c7565283129283129 9964:O4|4,@9467,0,@9965 9965:O5|@9966,70,0,70,0 9966:S17|2e2f62617369732f41727261792e736d6c 9967:O9|@4896,268435456,7,1000000000,9,134217728,9,536870912,29 9968:S21|506f6c795375627472616374417262697472617279 9969:O2|@4898,@9970 9970:O2|@4900,@9969 9971:S20|506f6c7951756f7452656d417262697472617279 9972:S29|4c61726765496e742e666d74283229746f4368617247726f7570283229 9973:S25|4c61726765496e742e666d74283229746f4368617273283529 9974:S15|4c61726765496e742e666d74283229 9975:S16|486173685461626c652e686173683a20 9976:O5|@9977,88,0,88,0 9977:S32|6d6c736f757263652f4d4c436f6d70696c65722f486173685461626c652e4d4c 9978:S13|496e7465726e616c4572726f72 9979:O1|@9980 9980:O1|@4901 9981:S12|7072696e742d737472696e67 9982:S21|486173685461626c652e686173684d616b65283129 9983:S10|506f6c7946696e697368 9984:O1|@4905 9985:S29|4f532e50726f636573732e657869742831296578697446756e2d283129 9986:O1|@4906 9987:S13|2d2d696e744973496e74496e66 9988:O4|11,@9429,0,@9989 9989:O5|@9966,81,0,81,0 9990:O4|11,@9429,0,@9991 9991:O5|@9992,68,0,68,0 9992:S18|2e2f62617369732f566563746f722e736d6c 9993:S20|486173685461626c652e68617368537562283229 9994:O1|@9995 9995:O1|@4912 9996:O2|3,@9997 9997:S1|3f 9998:S13|7072696e742d64656661756c74 9999:O4|101,@10001,0,@10000 10000:O5|@10002,56,0,56,0 10001:S5|4d61746368 10002:S20|2e2f62617369732f556e6976657273616c2e4d4c 10003:S25|4d414b455f28292e6462456e764c6f6f6b7570283329283129 10004:O2|@10005,0 10005:O2|1,2 10006:O4|12,@9407,@10008,@10007 10007:O5|@9409,336,0,336,0 10008:S40|54686520737461636b2073697a65206d7573742062652067726561746572207468616e207a65726f 10009:S22|506f6c795468726561644d6178537461636b53697a65 10010:O5|@10011,94,0,94,0 10011:S28|6d6c736f757263652f4d4c436f6d70696c65722f4d414b455f2e4d4c 10012:S18|4d414b455f28292e70726f74656374283229 10013:S28|4d414b455f28292e6462456e764c6f6f6b7570283129283129283129 10014:S36|556e6976657273616c5461626c652e756e6976456e746572283429736561726368283129 10015:O4|11,@9429,0,@10016 10016:O5|@9966,86,0,86,0 10017:S31|486173685461626c652e68617368536574283329656e746572546162283329 10018:S34|417474656d707420746f2073657420612076616c75652077697468206e616d652028 10019:S24|2920696e20612066726f7a656e2068617368207461626c65 10020:O5|@9977,128,0,128,0 10021:S4|4661696c 10022:S20|486173685461626c652e68617368536574283329 10023:S24|4d414b455f28292e6462456e76456e746572283429283129 10024:S27|4d414b455f28292e6462456e76456e746572283129283129283129 10025:O1|@4948 10026:S38|556e6976657273616c5461626c652e666f6c64283329666f6c6448617368456e747279283329 10027:S35|486173685461626c652e666f6c642833296765744974656d7c6c656e6774682d283129 10028:S17|486173685461626c652e666f6c64283329 10029:S22|4d414b455f28292e6462456e76416c6c283329283129 10030:S13|4c6973742e6d61702832292829 10031:S23|4d414b455f28292e67456e764173456e76283129283129 10032:S20|4d414b455f28292e67456e764173456e76283129 10033:O5|5,0,@10035,@10034,0 10034:O4|@10035,0,@10037,@10036 10035:S3|696e74 10036:O3|@10042,@10143,@10041 10037:O2|@10038,0 10038:O2|0,@10039 10039:O5|@10040,0,0,0,0 10040:S14|5374616e64617264204261736973 10041:O3|@10145,@10039,@10144 10042:O2|1,@10043 10043:O3|6,@10045,@10044 10044:O2|@10053,@10052 10045:O4|@10046,@4618,3,1 10046:O1|@4953 10047:S26|617262697472617279507265636973696f6e457175616c697479 10048:S14|696e74496e66457175616c697479 10049:O1|@4955 10050:O2|3,@9568 10051:S37|545950455f5452454528292e64656661756c744d6f6e6f547970655072696e746572283129 10052:O2|@10113,0 10053:O4|@4619,@9574,@10054,0 10054:O2|@10056,@10055 10055:O2|0,@10112 10056:O2|@10057,0 10057:O4|@4620,@9574,@10058,0 10058:O3|1,@10060,@10059 10059:O5|@4956,@10104,@10109,@10110,@10091 10060:O8|@10062,@10048,0,0,@10061,0,0,1 10061:O2|@10086,@10085 10062:O4|5,@10064,@10066,@10063 10063:O4|5,@10074,@10073,@10072 10064:O2|1,@10065 10065:O5|@10067,@10069,@10071,@10072,@10066 10066:O3|6,1,0 10067:O2|8,@10068 10068:O2|0,0 10069:O2|8,@10070 10070:O2|0,1 10071:O2|1,0 10072:O3|6,0,0 10073:O4|7,@10080,@10079,1 10074:O4|5,@10076,@10075,@10072 10075:O3|21,@10078,9 10076:O3|21,@10077,9 10077:O3|21,@10067,5 10078:O3|21,@10069,5 10079:O3|6,@10084,0 10080:O2|@10082,@10081 10081:O2|@10083,0 10082:O2|@10067,1 10083:O2|@10069,1 10084:O1|@4954 10085:O2|@10086,0 10086:O2|1,@10087 10087:O2|@10089,@10088 10088:O2|@10089,@10090 10089:O1|3 10090:O2|@10089,0 10091:O1|@4964 10092:S39|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e2833292d45 10093:O1|2 10094:O1|@4958 10095:S40|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283129283129 10096:O4|@4611,@9978,@10098,@10097 10097:O5|@10099,302,0,302,0 10098:S33|5265666572656e636520746f206e6f6e2d6578697374656e742062696e64696e67 10099:S40|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245452e4d4c 10100:O4|@4611,@9978,@10102,@10101 10101:O5|@10099,306,0,306,0 10102:S43|636f646574726565206e6577456e7669726f6e3a204e6f742045787472616374206f7220436f6e73746e74 10103:S37|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283329 10104:O2|@4963,0 10105:O4|11,@9429,0,@10106 10106:O5|@10107,60,0,60,0 10107:S16|2e2f62617369732f4c6973742e736d6c 10108:S49|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529696e6c696e65436f64652d283129 10109:O0| 10110:O1|@10046 10111:S38|434f44455452454528292e67656e436f64652833292831296669656c6450726f70732d283129 10112:O2|0,@10068 10113:O4|@4620,@9574,@10114,0 10114:O3|3,4,@10115 10115:O5|@4965,@10117,@10109,@10131,@10116 10116:O2|@4968,@10132 10117:O2|@4967,@10118 10118:O2|@10121,@10120 10119:S39|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129283129 10120:O2|@10124,@10123 10121:O2|@10122,@10058 10122:O3|0,@10046,@10056 10123:O2|@10127,@10126 10124:O2|@10125,@10093 10125:O3|0,@4618,0 10126:O2|@10129,0 10127:O2|@10128,@10093 10128:O3|0,3,0 10129:O2|@10130,@10093 10130:O3|0,1,0 10131:O1|@10045 10132:O2|@10133,0 10133:O2|@10053,@10134 10134:O2|@10135,0 10135:O4|@4620,@9574,@10136,0 10136:O3|3,4,@10137 10137:O4|@4969,@10138,@10054,@10045 10138:O2|@10058,@10140 10139:S81|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c2831297475706c6550726f70732d696e6c696e6550726f702d7475706c65456e747279283129 10140:O2|@10093,@10141 10141:O2|@10093,@10142 10142:O2|@10093,0 10143:O4|1,@4621,0,0 10144:S8|496e204261736973 10145:S10|496e74496e662e696e74 10146:O5|5,0,@10035,@10147,0 10147:O4|@10035,0,@10037,@10148 10148:O3|@10150,@10176,@10149 10149:O3|@10177,@10039,@10144 10150:O2|1,@10151 10151:O3|6,@10153,@10152 10152:O2|@10156,0 10153:O4|@10154,@4622,1,1 10154:O1|@4970 10155:S11|457175616c576f72642829 10156:O4|@4620,@9574,@10157,0 10157:O3|3,4,@10158 10158:O5|@4965,@10160,@10093,@10159,@10091 10159:O2|@10153,@10154 10160:O2|@4967,@10161 10161:O2|@10163,@10162 10162:O2|@10174,@10173 10163:O2|@10165,@10164 10164:O3|1,@10167,@10104 10165:O2|1,@10166 10166:O2|2,0 10167:O8|@10169,@10155,0,0,@10168,0,0,1 10168:O2|@10172,@10171 10169:O4|3,@10067,@10069,@10170 10170:O3|9,0,0 10171:O2|@10172,0 10172:O2|1,@10090 10173:O2|@10129,@10126 10174:O2|@10175,@10093 10175:O3|0,@4622,0 10176:O4|1,@4623,0,0 10177:S12|4669786564496e742e696e74 10178:O2|@10180,@10179 10179:O2|@10181,0 10180:S4|756e6974 10181:O4|@10180,0,@10037,@10182 10182:O3|@10184,@10185,@10183 10183:O3|@10180,@10039,@10180 10184:O2|1,@10072 10185:O3|2,0,@10186 10186:O3|3,0,@10187 10187:O3|0,0,1 10188:O3|2,0,1 10189:O4|@4625,@10193,@10194,@10190 10190:O5|@10195,102,0,102,0 10191:O1|@10192 10192:O1|@4972 10193:S4|43617374 10194:S9|746f41646472657373 10195:S30|6d6c736f757263652f4d4c436f6d70696c65722f416464726573732e4d4c 10196:O4|@4611,@9978,@10198,@10197 10197:O5|@10199,345,0,345,0 10198:S41|66696e64456e747279496e426c6f636b3a207475706c652f6461746174797065206d69736d61746368 10199:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f46554e4354494f4e532e736d6c 10200:O2|16,@10201 10201:O3|6,@10202,0 10202:O4|@4611,@9978,@10203,0 10203:S36|496e76616c6964206c6f616420656e636f756e746572656420696e20636f6d70696c6572 10204:O4|@4611,@9978,@10206,@10205 10205:O5|@10199,352,0,352,0 10206:S33|66696e64456e747279496e426c6f636b3a20696e76616c69642061646472657373 10207:S35|434f4445545245455f46554e4354494f4e5328292e736574496e6c696e652832292829 10208:O4|@4611,@9978,@10210,@10209 10209:O5|@10199,373,0,373,0 10210:S30|66696e64456e747279496e426c6f636b3a206e6f7420636f6e7374616e74 10211:O4|@4611,@9978,@10206,@10212 10212:O5|@10199,387,0,387,0 10213:S40|434f4445545245455f46554e4354494f4e5328292e66696e64456e747279496e426c6f636b283329 10214:O4|@4625,@10193,@10216,@10215 10215:O5|@10195,105,0,105,0 10216:S7|746f53686f7274 10217:S29|44415441545950455f52455028292e636f6e7374724d61746368283229 10218:O4|@4611,@9978,@10220,@10219 10219:O5|@10099,68,0,68,0 10220:S9|646545787472616374 10221:S14|4c6973742e746162462833292829 10222:S5|66616c7365 10223:O3|6,64,0 10224:O4|4,@9467,0,@10225 10225:O5|@10107,136,0,136,0 10226:O4|@4611,@9978,@10228,@10227 10227:O5|@10199,273,0,273,0 10228:S31|6d616b6556616c202d206e6f7420636f6e7374616e74206f72207475706c65 10229:O4|4,@9467,0,@10230 10230:O5|@10195,149,0,149,0 10231:O1|@4980 10232:O4|@4611,@9978,@10234,@10233 10233:O5|@10199,242,0,242,0 10234:S12|6e6f7420636f6e7374616e74 10235:S58|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129636f7079546f566563283229 10236:S46|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129 10237:S6|3c616e6f6e3e 10238:S29|44415441545950455f52455028292e636f6e7374724170706c79283229 10239:O5|5,0,@10241,@10240,0 10240:O4|@10241,0,@10037,@10242 10241:S4|626f6f6c 10242:O3|@10244,@10258,@10243 10243:O3|@10241,@10039,@10144 10244:O2|1,@10245 10245:O3|6,@10247,@10246 10246:O2|@10249,0 10247:O4|@10248,@4626,1,1 10248:O1|@4987 10249:O4|@4620,@9574,@10250,0 10250:O3|3,4,@10251 10251:O5|@4965,@10253,@10093,@10252,@10091 10252:O2|@10247,@10248 10253:O2|@4967,@10254 10254:O2|@10163,@10255 10255:O2|@10256,@10173 10256:O2|@10257,@10093 10257:O3|0,@4626,0 10258:O4|1,@4627,0,0 10259:O3|2,1,1 10260:S4|74727565 10261:O1|@4988 10262:O4|11,@9429,0,@10263 10263:O5|@10264,530,0,530,0 10264:S34|6d6c736f757263652f4d4c436f6d70696c65722f5354525543545f56414c532e4d4c 10265:S35|5354525543545f56414c5328292e6d616b65456d707479476c6f62616c283129283129 10266:S4|426f6f6c 10267:O7|@4989,@4613,@4614,@4612,@4616,@4615,@4617 10268:S31|5354525543545f56414c5328292e6d616b654c6f6f6b283129283129283129 10269:S32|5354525543545f56414c5328292e6d616b65456e746572283129283129283129 10270:S35|5354525543545f56414c5328292e6d616b65416c6c4e616d6573283129283129283129 10271:S24|5354525543545f56414c5328292e6d616b65456e76283129 10272:S15|41746f6d696344656372656d656e74 10273:S15|41746f6d6963496e6372656d656e74 10274:S11|41746f6d69635265736574 10275:S16|436c6561724d757461626c65466c6167 10276:S13|466c6f61744669786564496e74 10277:S13|497354616767656456616c7565 10278:S16|4c6f6e67576f7264546f546167676564 10279:S15|4d656d6f727943656c6c466c616773 10280:S16|4d656d6f727943656c6c4c656e677468 10281:S10|4e6f74426f6f6c65616e 10282:S7|5265616c416273 10283:S7|5265616c4e6567 10284:S16|5369676e6564546f4c6f6e67576f7264 10285:S18|556e7369676e6564546f4c6f6e67576f7264 10286:S2|2829 10287:S23|434f44455452454528292e6d6b556e617279466e283129 10288:O3|2,@10239,@10239 10289:S3|6e6f74 10290:O2|@10292,@10291 10291:O2|@10293,0 10292:S4|63686172 10293:O4|@10292,0,@10037,@10294 10294:O3|@10296,@10310,@10295 10295:O3|@10292,@10039,@10144 10296:O2|1,@10297 10297:O3|6,@10299,@10298 10298:O2|@10301,0 10299:O4|@10300,@4628,1,1 10300:O1|@5013 10301:O4|@4620,@9574,@10302,0 10302:O3|3,4,@10303 10303:O5|@4965,@10305,@10093,@10304,@10091 10304:O2|@10299,@10300 10305:O2|@4967,@10306 10306:O2|@10163,@10307 10307:O2|@10308,@10173 10308:O2|@10309,@10093 10309:O3|0,@4628,0 10310:O4|1,@4629,0,0 10311:O2|@10313,@10312 10312:O2|@10314,0 10313:S6|737472696e67 10314:O4|@10313,0,@10037,@10315 10315:O3|@10317,@10350,@10316 10316:O3|@10313,@10039,@10144 10317:O2|1,@10318 10318:O3|6,@10320,@10319 10319:O2|@10323,0 10320:O4|@10321,@4630,3,1 10321:O1|@5014 10322:S14|737472696e67457175616c697479 10323:O4|@4620,@9574,@10324,0 10324:O3|3,4,@10325 10325:O5|@4965,@10327,@10093,@10326,@10091 10326:O2|@10320,@10321 10327:O2|@4967,@10328 10328:O2|@10330,@10329 10329:O2|@10348,@10123 10330:O2|@10165,@10331 10331:O3|1,@10332,@10104 10332:O8|@10334,@10322,0,0,@10333,0,0,1 10333:O2|@10086,@10345 10334:O4|5,@10169,@10066,@10335 10335:O4|5,@10337,@10336,@10072 10336:O5|4,1,@10338,@10344,@10343 10337:O4|3,@10339,@10338,@10170 10338:O3|13,@10341,@10342 10339:O3|13,@10341,@10340 10340:O3|@10067,0,0 10341:O1|8 10342:O3|@10069,0,0 10343:O3|@10067,0,4 10344:O3|@10069,0,4 10345:O2|@10346,0 10346:O2|1,@10347 10347:O2|@10089,@10087 10348:O2|@10349,@10093 10349:O3|0,@4630,0 10350:O4|1,@4631,0,0 10351:O2|@10353,@10352 10352:O2|@10354,0 10353:S4|7265616c 10354:O4|@10353,0,@10037,@10355 10355:O3|@10357,@10362,@10356 10356:O3|@10353,@10039,@10144 10357:O2|1,@10358 10358:O3|6,@10359,0 10359:O4|0,@4632,2,1 10360:O1|@5015 10361:S40|545950455f5452454528292e6d616b655479706528332964656661756c745072696e746572283129 10362:O4|1,@4633,0,0 10363:O2|@10365,@10364 10364:O2|@10572,0 10365:O7|@10367,@10368,@10369,@10366,@10037,0,0 10366:O3|2,@10461,@10460 10367:S2|3a3a 10368:O2|0,2 10369:O2|1,@10370 10370:O3|6,@10372,@10371 10371:O2|@10376,0 10372:O3|@10374,@10375,@10373 10373:O1|@5018 10374:O1|@5016 10375:O1|@5017 10376:O4|@4620,@9574,@10377,0 10377:O3|3,3,@10378 10378:O6|@4961,@10094,@10380,@10427,@10379,@10091 10379:O12|@10429,@10374,@10375,@10373,@10372,@10431,@10430,@10433,@4634,@10456,@10458,@10428 10380:O2|@4967,@10381 10381:O2|@10383,@10382 10382:O2|@10387,@10386 10383:O2|@10165,@10384 10384:O3|1,@10385,@10104 10385:O8|@10076,@10367,0,0,@10171,0,0,1 10386:O2|@10410,0 10387:O2|@10389,@10388 10388:O3|1,@10391,@10104 10389:O2|1,@10390 10390:O2|2,1 10391:O8|@10393,@10367,0,0,@10392,0,2,1 10392:O2|@10405,0 10393:O3|15,@10395,@10394 10394:O3|20,@10401,1 10395:O2|@10397,@10396 10396:O2|@10399,0 10397:O4|1,@10090,0,@10398 10398:O4|11,@10067,0,0 10399:O4|1,@10090,1,@10400 10400:O4|11,@10067,1,0 10401:O2|@10403,@10402 10402:O2|@10404,0 10403:O2|8,@10166 10404:O2|8,@10390 10405:O2|1,@10406 10406:O2|@10408,@10407 10407:O2|@10409,0 10408:O3|2,0,@10090 10409:O3|2,1,@10090 10410:O2|@10412,@10411 10411:O3|1,@10414,@10104 10412:O2|1,@10413 10413:O2|2,2 10414:O8|@10416,@10367,0,0,@10415,0,2,1 10415:O2|@10426,0 10416:O3|15,@10418,@10417 10417:O3|20,@10401,0 10418:O2|@10420,@10419 10419:O2|@10424,0 10420:O4|1,@10422,0,@10421 10421:O4|11,@10067,0,1 10422:O2|@10423,0 10423:O1|1 10424:O4|1,@10422,1,@10425 10425:O4|11,@10067,1,1 10426:O2|1,@10088 10427:O11|2,2,2,2,2,2,2,1,2,2,2 10428:O4|@10433,@4634,@10456,@10458 10429:O3|@10428,@10372,@10430 10430:O2|@10431,0 10431:O1|@5019 10432:S3|6e696c 10433:O1|@5020 10434:S10|65712d6c697374283229 10435:S13|65712d6c697374283229285029 10436:O2|@5022,@4634 10437:O2|3,@10438 10438:S3|2e2e2e 10439:O5|0,0,0,@10037,@10440 10440:O2|@10441,0 10441:O2|3,@10432 10442:O4|5,@9497,0,0 10443:O2|@10444,0 10444:O2|3,@10445 10445:S4|2e2e2e29 10446:O2|@10447,0 10447:O2|3,@9546 10448:O3|1,1,0 10449:O2|3,@9549 10450:O2|3,@9545 10451:O5|0,0,0,@10037,@10452 10452:O2|@10453,0 10453:O2|3,@10367 10454:S10|7072696e742d6c697374 10455:S11|7072696e746c6973742829 10456:O1|@5024 10457:S10|626f7865642d6c697374 10458:O1|@5025 10459:S9|73697a652d6c697374 10460:O5|5,@10473,@10474,@10472,@10037 10461:O3|3,@10463,@10462 10462:O3|0,@10470,1 10463:O2|@10465,@10464 10464:O2|@10468,0 10465:O2|@10467,@10466 10466:O3|6,@4635,79992 10467:S1|31 10468:O2|@10469,@10460 10469:S1|32 10470:O2|@10467,@10471 10471:O2|@10469,0 10472:O4|@10474,@10476,@10037,@10475 10473:O2|@10466,0 10474:S4|6c697374 10475:O3|@10479,@10571,@10478 10476:O2|@10477,0 10477:O2|@4635,79992 10478:O3|@10474,@10039,@10144 10479:O2|1,@10480 10480:O3|6,@10428,@10481 10481:O2|@10482,0 10482:O4|@4620,@9574,@10483,0 10483:O3|3,4,@10484 10484:O6|@4961,@10094,@10485,@10427,@10379,@10091 10485:O2|@4967,@10486 10486:O2|@10488,@10487 10487:O2|@10558,@10557 10488:O2|@10490,@10489 10489:O3|1,@10492,@10104 10490:O2|1,@10491 10491:O2|2,6 10492:O8|@10494,@10435,0,0,@10493,0,0,1 10493:O2|@10550,0 10494:O2|12,@10495 10495:O8|@10497,@10434,0,@10549,@10496,0,10,1 10496:O2|@10346,@10345 10497:O3|2,@10499,@10498 10498:O2|@10545,@10544 10499:O4|5,@10501,@10066,@10500 10500:O4|5,@10507,@10506,@10072 10501:O4|3,@10503,@10502,@10170 10502:O2|8,@10505 10503:O2|8,@10504 10504:O2|2,4 10505:O2|2,5 10506:O4|5,@10510,@10509,@10072 10507:O3|21,@10508,9 10508:O3|21,@10503,5 10509:O3|15,@10513,@10512 10510:O3|21,@10511,9 10511:O3|21,@10502,5 10512:O4|5,@10526,@10525,@10072 10513:O2|@10515,@10514 10514:O2|@10518,@10517 10515:O4|1,@10090,6,@10516 10516:O4|11,@10503,0,1 10517:O2|@10521,@10520 10518:O4|1,@10090,7,@10519 10519:O4|11,@10503,1,1 10520:O2|@10523,0 10521:O4|1,@10090,8,@10522 10522:O4|11,@10502,0,1 10523:O4|1,@10090,9,@10524 10524:O4|11,@10502,1,1 10525:O2|14,@10536 10526:O4|7,@10528,@10527,1 10527:O4|11,@10535,0,0 10528:O2|@10530,@10529 10529:O2|@10532,0 10530:O2|@10531,1 10531:O2|8,@10491 10532:O2|@10533,1 10533:O2|8,@10534 10534:O2|2,8 10535:O2|8,@10071 10536:O2|@10538,@10537 10537:O2|@10541,0 10538:O2|@10539,1 10539:O2|8,@10540 10540:O2|2,7 10541:O2|@10542,1 10542:O2|8,@10543 10543:O2|2,9 10544:O2|@10547,0 10545:O2|@10546,1 10546:O3|@10347,4,@10067 10547:O2|@10548,1 10548:O3|@10347,5,@10069 10549:O2|@10068,0 10550:O2|1,@10551 10551:O2|@10552,0 10552:O3|2,0,@10553 10553:O2|@10554,0 10554:O3|0,@10090,@10555 10555:O2|@10531,@10556 10556:O2|@10533,0 10557:O2|@10561,@10560 10558:O2|@10559,@10093 10559:O2|1,@10540 10560:O2|@10567,0 10561:O2|@10563,@10562 10562:O3|1,@10564,@10104 10563:O2|1,@10534 10564:O8|@10566,@10457,0,0,@10565,0,0,1 10565:O2|@10071,0 10566:O3|6,3,0 10567:O2|@10569,@10568 10568:O3|1,@10570,@10104 10569:O2|1,@10543 10570:O8|@10066,@10459,0,0,@10565,0,0,1 10571:O4|1,@4636,1,0 10572:O7|@10432,@10005,@10573,@10460,@10037,0,0 10573:O2|1,@10574 10574:O3|6,@10430,@10575 10575:O2|@10576,0 10576:O4|@4620,@9574,@10577,0 10577:O3|3,2,@10578 10578:O6|@4961,@10094,@10579,@10427,@10379,@10091 10579:O2|@4967,@10580 10580:O2|@10582,@10581 10581:O2|@10587,0 10582:O2|@10584,@10583 10583:O3|1,@10585,@10104 10584:O2|1,@10504 10585:O8|@10586,@10432,0,0,@10171,0,0,1 10586:O4|19,0,@10067,0 10587:O2|@10588,@10093 10588:O3|0,0,0 10589:O2|@10474,@10590 10590:O2|@10472,@10363 10591:O2|@10593,@10592 10592:O2|@10683,0 10593:O7|@10595,@10005,@10596,@10594,@10037,0,0 10594:O5|5,@10636,@10638,@10635,@10037 10595:S4|4e4f4e45 10596:O2|1,@10597 10597:O3|6,@10599,@10598 10598:O2|@10601,0 10599:O2|@10600,0 10600:O1|@5026 10601:O4|@4620,@9574,@10602,0 10602:O3|3,2,@10603 10603:O6|@4961,@10094,@10605,@10427,@10604,@10091 10604:O12|@10611,@10600,@10599,@10614,@10616,@10613,@10612,@10617,@4637,@10631,@10633,@10610 10605:O2|@4967,@10606 10606:O2|@10607,@10581 10607:O2|@10165,@10608 10608:O3|1,@10609,@10104 10609:O8|@10586,@10595,0,0,@10171,0,0,1 10610:O4|@10617,@4637,@10631,@10633 10611:O3|@10610,@10599,@10612 10612:O3|@10614,@10616,@10613 10613:O1|@5029 10614:O1|@5027 10615:S4|534f4d45 10616:O1|@5028 10617:O1|@5030 10618:S12|65712d6f7074696f6e283229 10619:S15|65712d6f7074696f6e283229285029 10620:O1|@5032 10621:O5|0,0,0,@10037,@10622 10622:O2|@10623,0 10623:O2|3,@10595 10624:O2|@10625,@10446 10625:O3|1,0,0 10626:O5|0,0,0,@10037,@10627 10627:O2|@10628,0 10628:O2|3,@10615 10629:S12|7072696e742d6f7074696f6e 10630:S13|7072696e746f7074696f6e2829 10631:O1|@5034 10632:S12|626f7865642d6f7074696f6e 10633:O1|@5035 10634:S11|73697a652d6f7074696f6e 10635:O4|@10638,@10640,@10037,@10639 10636:O2|@10637,0 10637:O3|6,@4638,79992 10638:S6|6f7074696f6e 10639:O3|@10643,@10682,@10642 10640:O2|@10641,0 10641:O2|@4638,79992 10642:O3|@10638,@10039,@10144 10643:O2|1,@10644 10644:O3|6,@10610,@10645 10645:O2|@10646,0 10646:O4|@4620,@9574,@10647,0 10647:O3|3,4,@10648 10648:O6|@4961,@10094,@10649,@10427,@10604,@10091 10649:O2|@4967,@10650 10650:O2|@10652,@10651 10651:O2|@10558,@10674 10652:O2|@10490,@10653 10653:O3|1,@10654,@10104 10654:O8|@10656,@10619,0,0,@10655,0,0,1 10655:O2|@10667,0 10656:O2|12,@10657 10657:O8|@10658,@10618,0,@10549,@10061,0,0,1 10658:O4|5,@10169,@10066,@10659 10659:O4|5,@10076,@10660,@10072 10660:O4|5,@10075,@10661,@10072 10661:O4|7,@10662,@10527,1 10662:O2|@10664,@10663 10663:O2|@10665,0 10664:O2|@10421,1 10665:O2|@10666,1 10666:O4|11,@10069,0,1 10667:O2|1,@10668 10668:O2|@10669,0 10669:O3|2,0,@10670 10670:O2|@10671,0 10671:O3|0,@10422,@10672 10672:O2|@10421,@10673 10673:O2|@10666,0 10674:O2|@10676,@10675 10675:O2|@10679,0 10676:O2|@10563,@10677 10677:O3|1,@10678,@10104 10678:O8|@10566,@10632,0,0,@10565,0,0,1 10679:O2|@10569,@10680 10680:O3|1,@10681,@10104 10681:O8|@10066,@10634,0,0,@10565,0,0,1 10682:O4|1,@4639,1,0 10683:O7|@10615,@10368,@10685,@10684,@10037,0,0 10684:O3|2,@10637,@10594 10685:O2|1,@10686 10686:O3|6,@10612,@10687 10687:O2|@10688,0 10688:O4|@4620,@9574,@10689,0 10689:O3|3,3,@10690 10690:O6|@4961,@10094,@10691,@10427,@10604,@10091 10691:O2|@4967,@10692 10692:O2|@10694,@10693 10693:O2|@10698,@10697 10694:O2|@10412,@10695 10695:O3|1,@10696,@10104 10696:O8|@10076,@10615,0,0,@10171,0,0,1 10697:O2|@10705,0 10698:O2|@10700,@10699 10699:O3|1,@10702,@10104 10700:O2|1,@10701 10701:O2|2,3 10702:O8|@10703,@10615,0,0,@10171,0,0,1 10703:O3|20,@10704,1 10704:O2|@10067,0 10705:O2|@10584,@10706 10706:O3|1,@10707,@10104 10707:O8|@10421,@10615,0,0,@10171,0,0,1 10708:O2|@10638,@10709 10709:O2|@10635,@10591 10710:O4|@10712,@10713,@10037,@10711 10711:O3|@10716,@10754,@10715 10712:S3|726566 10713:O2|@10714,0 10714:O2|@4640,79992 10715:O3|@10712,@10039,@10144 10716:O2|1,@10717 10717:O3|6,@10719,@10718 10718:O2|@10731,0 10719:O4|@10721,@4641,@10728,@10720 10720:O1|@5041 10721:O1|@5036 10722:O1|@5037 10723:S11|65712d68656c7065722829 10724:O1|@5038 10725:O1|@5039 10726:S40|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129283129 10727:S37|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129 10728:O1|@5040 10729:S14|626f7865642d68656c7065722829 10730:S13|73697a652d68656c7065722829 10731:O4|@4620,@9574,@10732,0 10732:O3|3,4,@10733 10733:O5|@4965,@10735,@10753,@10734,@10091 10734:O4|@10719,@10721,@10728,@10720 10735:O2|@4967,@10736 10736:O2|@10738,@10737 10737:O2|@10743,@10742 10738:O2|@10165,@10739 10739:O3|1,@10740,@10104 10740:O8|@10741,@10723,0,0,@10565,0,0,1 10741:O2|12,@10167 10742:O2|@10746,@10745 10743:O2|@10744,@10093 10744:O3|0,@4641,0 10745:O2|@10750,0 10746:O2|@10389,@10747 10747:O3|1,@10748,@10104 10748:O8|@10749,@10729,0,0,@10565,0,0,1 10749:O3|6,2,0 10750:O2|@10412,@10751 10751:O3|1,@10752,@10104 10752:O8|@10066,@10730,0,0,@10565,0,0,1 10753:O3|2,2,2 10754:O4|1,@4642,1,0 10755:O1|4 10756:O1|@10072 10757:O2|7,0 10758:S32|44415441545950455f52455028292e636f6e7374724465737472756374283229 10759:S40|44415441545950455f52455028292e637265617465556e617279436f6e7374727563746f72283329 10760:S16|457175616c4c61726765576f72642829 10761:O4|3,@10067,@10069,@10762 10762:O2|3,0 10763:O1|@5051 10764:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f547970655072696e746572283129 10765:O2|@10066,@10766 10766:O2|@10066,0 10767:O4|@5052,@4685,@13029,@10768 10768:O1|@6463 10769:O2|@10771,@10770 10770:O2|@10775,@10774 10771:O4|@4644,@9574,@10772,0 10772:O1|@5053 10773:S18|44656275672e64656661756c74732d283129 10774:O2|@10778,@10777 10775:O4|@4645,@9574,@10776,0 10776:O1|@5054 10777:O2|@10780,@10779 10778:O4|@4646,@9574,@9473,0 10779:O2|@10783,@10782 10780:O4|@4647,@9574,@10781,0 10781:O1|@5055 10782:O2|@10785,@10784 10783:O4|@4648,@9574,1,0 10784:O2|@10787,@10786 10785:O4|@4649,@9574,80,0 10786:O2|@10789,@10788 10787:O4|@4650,@9574,0,0 10788:O2|@10791,@10790 10789:O4|@4651,@9574,0,0 10790:O2|@10793,@10792 10791:O4|@4643,@9574,0,0 10792:O2|@10795,@10794 10793:O4|@4652,@9574,0,0 10794:O2|@10797,@10796 10795:O4|@4653,@9574,1,0 10796:O2|@10799,@10798 10797:O4|@4654,@9574,0,0 10798:O2|@10801,@10800 10799:O4|@4655,@9574,0,0 10800:O2|@10803,@10802 10801:O4|@4656,@9574,6,0 10802:O2|@10806,@10805 10803:O4|@4657,@9574,@10804,0 10804:O1|@5056 10805:O2|@10808,@10807 10806:O4|@4658,@9574,77,0 10807:O2|@10810,@10809 10808:O4|@4659,@9574,0,0 10809:O2|@10812,@10811 10810:O4|@4660,@9574,0,0 10811:O2|@10814,@10813 10812:O4|@4661,@9574,0,0 10813:O2|@10816,@10815 10814:O4|@4662,@9574,0,0 10815:O2|@10817,0 10816:O4|@4663,@9574,1,0 10817:O4|@4664,@9574,1,0 10818:O1|@5057 10819:S19|5072657474792e676574546167283229283129 10820:O4|@5058,@10967,@10821,@4620 10821:O3|@5101,@10820,@10967 10822:O2|@10625,@10823 10823:O2|@10449,0 10824:S23|42617365436f6465547265652e704c6973742833292829 10825:S15|4c6973742e40283229617070283129 10826:O3|1,1,2 10827:O2|3,@10828 10828:S18|416c6c6f63617465576f72644d656d6f7279 10829:S3|416464 10830:S3|446976 10831:S3|4d6f64 10832:S4|4d756c74 10833:S4|51756f74 10834:S3|52656d 10835:S3|537562 10836:S12|47726561746572457175616c 10837:S7|47726561746572 10838:S9|4c657373457175616c 10839:S4|4c657373 10840:S5|457175616c 10841:O2|3,@10842 10842:S10|424547494e4c4f4f5028 10843:S18|416c6c6f63617465427974654d656d6f7279 10844:S5|4669786564 10845:S9|4c61726765576f7264 10846:S4|54657374 10847:S3|586f72 10848:S2|4f72 10849:S3|416e64 10850:S15|526967687441726974686d65746963 10851:S12|52696768744c6f676963616c 10852:S4|4c656674 10853:S4|5265616c 10854:S4|576f7264 10855:S6|5369676e6564 10856:S8|556e7369676e6564 10857:S46|4261636b656e64496e7465726d656469617465436f64652e4275696c74496e732e62696e61727952657072283129 10858:S11|436f6d7061726542797465 10859:S9|457175616c42797465 10860:S8|4d6f766542797465 10861:S8|4d6f7665576f7264 10862:O2|3,@9550 10863:O2|@10625,@10864 10864:O2|@10865,0 10865:O2|3,@9598 10866:O3|1,0,3 10867:O2|3,@9596 10868:O2|@10448,@10446 10869:O2|3,@10870 10870:S2|6966 10871:O2|3,@10872 10872:S4|7468656e 10873:O2|3,@10874 10874:S4|656c7365 10875:O3|@5068,@10876,@4625 10876:O1|@5069 10877:S3|4c4954 10878:S6|434f44452022 10879:S5|46554e2022 10880:S20|4c4954203c6c6f6e6720776f726420646174613e 10881:S9|425954452064617461 10882:S23|416464726573732e737472696e674f66576f7264283129 10883:S19|506f6c7947657446756e6374696f6e4e616d65 10884:O2|3,@10885 10885:S9|526563757273697665 10886:S7|436c6f73757265 10887:S5|4c6f63616c 10888:S3|417267 10889:O2|3,@10890 10890:S11|4765745468726561644964 10891:S10|5749544820657869643d 10892:O2|3,@10893 10893:S7|48414e444c4528 10894:S5|282a562a29 10895:O3|1,0,2 10896:S7|696e6c696e652c 10897:S8|5573654669656c64 10898:O1|@5076 10899:O2|@10862,0 10900:O5|0,0,0,0,@10901 10901:O2|@10862,@10902 10902:O2|@10625,@10903 10903:O2|@10904,0 10904:O2|3,@9629 10905:O2|3,@10906 10906:S2|2d3e 10907:O2|3,@10908 10908:S6|4578706f7274 10909:O2|3,@9600 10910:S27|42617365436f6465547265652e7072657474795573616765283129 10911:O2|@10448,@10912 10912:O2|@10913,0 10913:O2|3,@10914 10914:S5|3a7265616c 10915:O2|@10625,@10916 10916:O2|@10449,@10917 10917:O2|@10918,0 10918:O3|1,1,0 10919:S34|42617365436f6465547265652e7072657474792831297072696e7441726773283229 10920:S8|206c6f63616c732c 10921:S8|636c6f737572653d 10922:S14|726563757273697665207573653d 10923:O2|@10448,@10924 10924:O2|@10925,0 10925:O2|3,@10926 10926:S2|2a29 10927:O2|3,@10928 10928:S2|282a 10929:O2|3,@10930 10930:S3|666e28 10931:S6|433136426974 10932:S6|433332426974 10933:S6|433634426974 10934:S5|4338426974 10935:S7|43446f75626c65 10936:S6|43466c6f6174 10937:S6|4d4c42797465 10938:S15|4d4c42797465496d6d757461626c65 10939:S6|4d4c576f7264 10940:S15|4d4c576f7264496d6d757461626c65 10941:S14|4d4c576f7264556e746167676564 10942:S4|4c6f6164 10943:O2|@10625,@10944 10944:O2|@10945,0 10945:O2|3,@9564 10946:O2|@10448,@10947 10947:O2|@10948,0 10948:O2|3,@10949 10949:S3|656e64 10950:O2|3,@10951 10951:S2|696e 10952:O2|3,@10953 10953:S3|6c6574 10954:O2|3,@10955 10955:S6|524149534528 10956:S5|53746f7265 10957:O2|3,@10958 10958:S2|3c3d 10959:O2|@9549,0 10960:S2|2c20 10961:S8|5441475445535428 10962:S8|4441544154595045 10963:S5|5455504c45 10964:O2|@10960,0 10965:S13|534554434f4e5441494e455228 10966:S22|42617365436f6465547265652e707265747479283129 10967:O2|@5098,@10820 10968:S9|76616c204c6f63616c 10969:O2|3,@9566 10970:O2|3,@9473 10971:S35|42617365436f6465547265652e70726574747953696d706c6542696e64696e67283329 10972:S12|3d20436f6e7461696e657220 10973:O2|3,@10974 10974:S4|77697468 10975:O2|@10625,@10976 10976:O2|@10977,0 10977:O2|3,@10978 10978:S5|20616e6420 10979:O2|3,@10980 10980:S8|76616c2072656320 10981:S29|42617365436f6465547265652e70726574747942696e64696e67283129 10982:O4|@4611,@9978,@10984,@10983 10983:O5|@10985,1602,0,1602,0 10984:S31|746f70206c6576656c207265616368656420696e2073696d706c6966696572 10985:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f53494d504c49464945522e736d6c 10986:O4|@4666,@10988,0,@10987 10987:O5|@10989,52,0,52,0 10988:S6|4f7074696f6e 10989:S18|2e2f62617369732f4f7074696f6e2e736d6c 10990:S48|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296c6f6f6b757041646472283129 10991:S47|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329656e74657241646472283129 10992:S44|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296d6b41646472283129 10993:O11|@5115,@11009,@11016,@11027,@11029,@11031,@11046,@11048,@11066,@11111,@10994 10994:O12|@5231,@10993,@11142,@11009,@11016,@11027,@11029,@11031,@11046,@11048,@11066,@11111 10995:S39|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283129283129 10996:O1|@5117 10997:O1|9 10998:O4|@4611,@9978,@10220,@10999 10999:O5|@11000,616,0,616,0 11000:S45|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42617365436f6465547265652e736d6c 11001:O4|@4611,@9978,@11003,@11002 11002:O5|@11000,617,0,617,0 11003:S8|64654c616d626461 11004:S47|42617365436f6465547265652e6d6170436f6465747265652832296d6170742831296d617062696e64696e67283129 11005:S34|42617365436f6465547265652e6d6170436f6465747265652832296d617074283129 11006:S27|42617365436f6465547265652e6d6170436f646574726565283229 11007:S44|434f4445545245455f53494d504c494649455228292e73696d705370656369616c28342973706c6974283329 11008:S36|434f4445545245455f53494d504c494649455228292e73696d705370656369616c283429 11009:O2|@5129,@10993 11010:S50|434f4445545245455f53494d504c494649455228292e73696d705475706c6528352970726f636573734669656c6473283329 11011:O4|@4611,@9978,@11013,@11012 11012:O5|@10985,1441,0,1441,0 11013:S24|6765744669656c64202d20696e76616c696420696e646578 11014:S45|434f4445545245455f53494d504c494649455228292e73696d705475706c652835296765744669656c64283129 11015:S34|434f4445545245455f53494d504c494649455228292e73696d705475706c65283529 11016:O2|@5134,@10993 11017:O4|@4667,@11019,0,@11018 11018:O5|@10107,51,0,51,0 11019:S5|456d707479 11020:O4|11,@9429,0,@11021 11021:O5|@10107,71,0,71,0 11022:S12|4c6973742e74616b65283229 11023:S30|434f4445545245455f53494d504c494649455228292e6d6b456e76283229 11024:S43|434f4445545245455f53494d504c494649455228292e7370656369616c546f47656e6572616c2833292829 11025:S33|434f4445545245455f46554e4354494f4e5328292e636f646550726f7073283129 11026:S39|434f4445545245455f53494d504c494649455228292e73696d7049665468656e456c7365283629 11027:O3|@5155,@10994,@10993 11028:S43|434f4445545245455f53494d504c494649455228292e73696d704172626974726172794172697468283829 11029:O3|@5159,@10994,@10993 11030:S45|434f4445545245455f53494d504c494649455228292e73696d70417262697472617279436f6d70617265283829 11031:O2|@5163,@10993 11032:O4|7,@9493,0,@11033 11033:O5|@9494,252,0,252,0 11034:O4|@4611,@9978,@11036,@11035 11035:O5|@10985,1022,0,1022,0 11036:S19|576f726441726974683a20417269746852656d 11037:O4|@4611,@9978,@11039,@11038 11038:O5|@10985,1021,0,1021,0 11039:S20|576f726441726974683a20417269746851756f74 11040:O2|16,@11041 11041:O3|6,@10442,0 11042:O2|16,@11043 11043:O3|6,@11044,0 11044:O4|7,@9500,0,0 11045:S35|434f4445545245455f53494d504c494649455228292e73696d7042696e617279283629 11046:O2|@5164,@10993 11047:S34|434f4445545245455f53494d504c494649455228292e73696d70556e617279283529 11048:O3|@5165,@10993,@10994 11049:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283129 11050:O1|@5168 11051:S32|42617365436f6465547265652e666f6c64747265652833296674726565283229 11052:S24|42617365436f6465547265652e666f6c6474726565283329 11053:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283329 11054:S55|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362970726f6365737341726773283329 11055:O4|@4611,@9978,@11057,@11056 11056:O5|@10985,783,0,783,0 11057:S35|73696d7046756e6374696f6e43616c6c3a20617267756d656e74206d69736d61746368 11058:O4|4,@9467,0,@11059 11059:O5|@9992,78,0,78,0 11060:O4|@4611,@9978,@11062,@11061 11061:O5|@10985,818,0,818,0 11062:S27|6c6f63616c4f6c64416464723a204c6f6164526563757273697665 11063:S56|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c2836296c6f63616c4f6c6441646472283129 11064:S59|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629736574546162466f72496e6c696e65283129 11065:S41|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629 11066:O2|@5177,@10994 11067:O2|@11068,@10093 11068:O2|1,@10089 11069:S36|434f4445545245455f46554e4354494f4e5328292e616464546f436c6f73757265283229 11070:O1|@5180 11071:S82|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329636f6e76657274456e76283129283129 11072:S66|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329 11073:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229 11074:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283129 11075:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529736574546162283129 11076:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296d6b41646472283129 11077:O1|@5187 11078:S42|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632836292d45 11079:O1|@5188 11080:S44|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632d283429283129 11081:O1|@5189 11082:O1|@5191 11083:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c746572556e75736564283229 11084:O4|@4611,@9978,@11086,@11085 11085:O5|@11087,337,0,337,0 11086:S9|73706c697441726773 11087:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f52454d4f56455f524544554e44414e542e736d6c 11088:S74|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322973706c697441726773283329 11089:S79|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c7465724c6f6f7041726773283129 11090:O4|@4611,@9978,@11092,@11091 11091:O5|@11087,126,0,126,0 11092:S25|636c65616e457874726163743a20656d707479207573616765 11093:S63|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329616464526566283129 11094:O1|@5190 11095:S15|4c697374506169722e7a6970283229 11096:O1|@10090 11097:O4|@4611,@9978,@11099,@11098 11098:O5|@11087,101,0,101,0 11099:S12|6e6f74205573654669656c64 11100:O4|@4611,@9978,@11099,@11101 11101:O5|@11087,98,0,98,0 11102:S54|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329 11103:S93|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734465637328312970726f636573734d757475616c73283329 11104:S76|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f6365737344656373283129 11105:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734669656c64283229 11106:S62|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283229 11107:S65|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283129283129 11108:S52|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229 11109:S40|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629 11110:S35|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529 11111:O3|@5217,@10993,@11066 11112:O4|@4611,@9978,@11114,@11113 11113:O5|@10199,310,0,310,0 11114:S27|6d6b4c6f616478783a20617267756d656e74206e65676174697665 11115:O4|@4611,@9978,@11117,@11116 11116:O5|@10985,590,0,590,0 11117:S32|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e6572 11118:O2|0,0 11119:S19|4c6973742e706172746974696f6e2833292829 11120:S17|4c697374506169722e6d61702833292829 11121:O2|@11123,@11122 11122:O1|@5225 11123:O1|@5224 11124:S28|434f4445545245455f46554e4354494f4e5328292e61726373283129 11125:S35|434f4445545245455f46554e4354494f4e5328292e6e6f646541646472657373283129 11126:O1|@5227 11127:S80|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e7428332970726f636573734c696e6b283229 11128:O4|103,@10021,@11130,@11129 11129:O5|@11131,91,0,91,0 11130:S11|737461636b20656d707479 11131:S41|6d6c736f757263652f4d4c436f6d70696c65722f5374726f6e676c79436f6e6e65637465642e736d6c 11132:S66|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e74283329 11133:S48|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e7473283229 11134:O4|@4611,@9978,@11136,@11135 11135:O5|@10199,449,0,449,0 11136:S24|706172746974696f6e4d757461626c6542696e64696e6773 11137:O4|@4611,@9978,@11139,@11138 11138:O5|@10985,599,0,599,0 11139:S37|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e65722073697a65 11140:S46|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329636f707944656373283229 11141:S35|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329 11142:O2|@5281,@10993 11143:S49|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529666f6c644c6f6f702833292829 11144:S59|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529636865636b4c6f6f70417267732832296d617033283329 11145:O4|11,@9429,0,@11146 11146:O5|@11147,199,0,199,0 11147:S21|2e2f62617369732f426f6f6c41727261792e736d6c 11148:S54|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e657228342973656c656374283229 11149:O4|@4667,@11019,0,@11150 11150:O5|@10107,47,0,47,0 11151:S59|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429636865636b4669656c6473283229 11152:O4|4,@9467,0,@11153 11153:O5|@11147,47,0,47,0 11154:O4|11,@9429,0,@11155 11155:O5|@11147,402,0,402,0 11156:O4|4,@9467,0,@11157 11157:O5|@11147,104,0,104,0 11158:S62|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e65722834296669656c6473546f46696c746572283129 11159:S40|434f4445545245455f46554e4354494f4e5328292e6d6b536574436f6e7461696e65722833292829 11160:S45|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429 11161:O1|@10066 11162:O2|6,0 11163:S58|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296f7065726174696f6e2d6d616b654d6f766573283129 11164:O4|@4668,@11166,0,@11165 11165:O5|@11167,89,0,89,0 11166:S14|556e657175616c4c656e67746873 11167:S20|2e2f62617369732f4c697374506169722e736d6c 11168:S21|4c697374506169722e666f6c647245712834292829 11169:S50|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296368616e67654c6f6f7073283129 11170:S36|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529 11171:S36|434f4445545245455f53494d504c494649455228292e73696d7041646472657373283429 11172:S35|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329 11173:O1|@5283 11174:O2|3,@11175 11175:S20|4f7574707574206f662073696d706c6966696572 11176:O1|@5286 11177:O4|@4611,@9978,@11179,@11178 11178:O5|@11180,1476,0,1476,0 11179:S30|746f70206c6576656c207265616368656420696e206f7074696d69736572 11180:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4f5054494d495345522e736d6c 11181:O1|@5287 11182:O1|@5288 11183:O2|3,@11184 11184:S17|4f7574707574206f6620636c65616e6572 11185:S66|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f63657373547265652834296d616b6541646472283129 11186:O1|@5291 11187:S35|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283129283129 11188:O1|@5297 11189:S47|434f4445545245455f4f5054494d4953455228292e6f70744c616d6264612835296f7074436f6e746578742d283129 11190:S51|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329636865636b557365283429 11191:S40|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329 11192:S62|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f702834296d617041726773283529 11193:O1|@5305 11194:S53|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e672834292d45 11195:O4|@4611,@9978,@10220,@11196 11196:O5|@11180,248,0,248,0 11197:S39|434f4445545245455f4f5054494d4953455228292e6f6e6c7946756e6374696f6e283129283129 11198:S71|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e7472792831296d6170417267283229 11199:S62|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e747279283129 11200:S51|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429 11201:S52|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f70283429 11202:S33|434f4445545245455f4f5054494d4953455228292e66696e645475706c65283229 11203:S30|434f4445545245455f4f5054494d4953455228292e6d6170417267283129 11204:O4|@4668,@11166,0,@11205 11205:O5|@11167,68,0,68,0 11206:O1|@5317 11207:S19|4c697374506169722e6d617045712833292829 11208:S51|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e2832296d657267655061747465726e283229 11209:S36|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e283229 11210:O2|0,@10423 11211:O4|@4611,@9978,@11213,@11212 11212:O5|@11180,936,0,936,0 11213:S15|6465637572727946756e6374696f6e 11214:S47|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329646f4d6170283129 11215:S50|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e2833296d61704172672833292829 11216:S39|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329 11217:S45|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429646f4d6170283129 11218:S48|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c742834296d61704172672833292829 11219:O2|@11220,0 11220:O2|@10403,1 11221:S47|434f4445545245455f4f5054494d4953455228292e6275696c6446756c6c5475706c65283229657874417267283229 11222:S37|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429 11223:O4|@4611,@9978,@11225,@11224 11224:O5|@11180,731,0,731,0 11225:S17|6d6170417267733a206d69736d61746368 11226:O1|@5345 11227:S104|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d6170417267732832296d6170417267283229 11228:S95|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d617041726773283229 11229:O4|@4667,@11019,0,@11230 11230:O5|@10107,48,0,48,0 11231:S2|2d50 11232:S85|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b283229 11233:S97|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c792833296d616b6541726773283229 11234:S86|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c79283329 11235:S2|2d45 11236:S73|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e74283529 11237:S58|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834296d61705061747465726e283429 11238:S53|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429646f4d6170283129 11239:S45|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429 11240:S40|434f4445545245455f4f5054494d4953455228292e626f647952657475726e735475706c65283129 11241:O4|@4667,@11019,0,@11242 11242:O5|@11180,522,0,522,0 11243:S55|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e28372967657441726773283829 11244:O1|@5377 11245:O2|8,@10089 11246:S45|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e283729 11247:O4|@4611,@9978,@11249,@11248 11248:O5|@11250,123,0,123,0 11249:S11|746167206d697373696e67 11250:S28|6d6c736f757263652f4d4c436f6d70696c65722f44656275672e4d4c 11251:S33|434f4445545245455f4f5054494d4953455228292e6f70744c616d626461283529 11252:O4|@4611,@9978,@11254,@11253 11253:O5|@11180,963,0,963,0 11254:S22|6d617062696e64696e673a206e6f74206c616d626461 11255:S57|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e672831296d6170526563446563283229 11256:S45|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e67283129 11257:S42|434f4445545245455f4f5054494d4953455228292e6f70744669656c64732833296669656c642d283129 11258:S49|434f4445545245455f4f5054494d4953455228292e6f70744669656c647328332970757368436f6e7461696e6572283229 11259:S38|434f4445545245455f4f5054494d4953455228292e6669656c6473546f46696c746572283129 11260:S48|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329736574436f6e7461696e6572283129 11261:S53|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329636f6e7461696e65722d6d6b4669656c64283329 11262:S33|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329 11263:S32|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283329 11264:O4|@4611,@9978,@11266,@11265 11265:O5|@11267,261,0,261,0 11266:S33|6c6f6f6b7570436f6e7374616e743a20746f702d6c6576656c2072656163686564 11267:S68|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e532e736d6c 11268:S66|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296c6f6f6b757041646472283129 11269:S64|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429636f6e746578742d283129 11270:O2|@5418,@11271 11271:O2|@6430,@11270 11272:S50|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283129283129 11273:S15|4c6973742e666f6c64722833292829 11274:O4|@4668,@11166,0,@11275 11275:O5|@11167,75,0,75,0 11276:O1|@5432 11277:O4|@4611,@9978,@11279,@11278 11278:O5|@11280,476,0,476,0 11279:S17|546f70206c6576656c2072656163686564 11280:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4c414d4244415f4c4946542e736d6c 11281:S49|434f4445545245455f4c414d4244415f4c49465428292e636f646547656e6572617465283329746f706c6576656c283129 11282:S66|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f526563757273697665283129 11283:S64|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f436c6f73757265283129 11284:O1|@5433 11285:O4|11,@9429,0,@11286 11286:O5|@11147,396,0,396,0 11287:S61|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f646528312970726f6365737344656373283129 11288:S47|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f6465283129 11289:S35|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429 11290:O1|@5443 11291:S20|4c6973742e6d61705061727469616c2832292829 11292:O4|@4611,@9978,@11294,@11293 11293:O5|@11280,400,0,400,0 11294:S8|6d6170546f417267 11295:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283229 11296:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283129 11297:S84|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329726563757273697665526566283129 11298:S69|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329 11299:S11|3c746f70206c6576656c3e 11300:O1|@5462 11301:O4|@4611,@9978,@11303,@11302 11302:O5|@11304,847,0,847,0 11303:S31|6f75746572206c6576656c207265616368656420696e20636f7079436f6465 11304:S63|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f5354415449435f4c494e4b5f414e445f43415345532e736d6c 11305:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329746f704c6576656c283129 11306:O1|@5463 11307:S67|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837292d45 11308:O1|@5464 11309:O2|@5466,@11310 11310:O2|@5510,@11309 11311:O3|7,0,0 11312:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831297265636f6e76657274283129 11313:O2|@5472,@4668 11314:O5|@11167,51,0,51,0 11315:S17|4c697374506169722e7a69704571283229 11316:O1|@5473 11317:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129283129 11318:S87|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129 11319:S22|4d6973632e717569636b536f72742832297173283229 11320:S17|4d6973632e717569636b536f7274283229 11321:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e766572744361736528312966696c746572283129 11322:S94|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129657874656e6443617365283229 11323:O4|@4611,@9978,@11325,@11324 11324:O5|@11304,659,0,659,0 11325:S5|4361736573 11326:S81|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129 11327:S104|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929707265762833296d616b65436c6f73757265456e747279283229 11328:S85|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392970726576283329 11329:S88|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392972656343616c6c283129 11330:O1|@5486 11331:O2|3,@9762 11332:O5|0,0,0,@11334,@11333 11333:O2|@11337,0 11334:O2|@11335,0 11335:O2|0,@11336 11336:O5|@11304,745,745,0,0 11337:O2|3,@11338 11338:S7|54726943616c6c 11339:O5|0,0,0,@11334,@11340 11340:O2|@11341,0 11341:O2|3,@11342 11342:S10|547269436c6f73757265 11343:O5|0,0,0,@11334,@11344 11344:O2|@11345,0 11345:O2|3,@11346 11346:S8|547269556e726566 11347:S9|7072696e742d747269 11348:S78|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929 11349:S83|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f707950726f63436c6f73757265283329 11350:S84|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e736572742831296d617041726773283229 11351:O1|11 11352:S111|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e7328312970726f63657373436c6f7375726573283329 11353:O4|@4611,@9978,@11355,@11354 11354:O5|@11304,381,0,381,0 11355:S8|61734d757475616c 11356:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e73283129 11357:O4|@4611,@9978,@11359,@11358 11358:O5|@11304,421,0,421,0 11359:S46|64656353657175656e63655769746846696e616c4578703a206c617374206973206e6f742061204e756c6c446563 11360:O4|@4611,@9978,@11362,@11361 11361:O5|@11304,419,0,419,0 11362:S30|64656353657175656e63655769746846696e616c4578703a20656d707479 11363:S74|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129 11364:O1|@5511 11365:O5|0,0,0,@11367,@11366 11366:O2|@11370,0 11367:O2|@11368,0 11368:O2|0,@11369 11369:O5|@11304,495,495,0,0 11370:O2|3,@11371 11371:S9|446966666572656e74 11372:O1|@5512 11373:O1|@5513 11374:O2|@10625,@11375 11375:O2|@11376,0 11376:O2|3,@9778 11377:O2|3,@9771 11378:O5|0,0,0,@11380,@11379 11379:O2|@11384,0 11380:O2|@11381,0 11381:O2|0,@11382 11382:O5|@11383,219,219,0,0 11383:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f4261636b656e64496e7465726d656469617465436f64652e736d6c 11384:O2|3,@11385 11385:S15|4249434c6f6164417267756d656e74 11386:O5|0,0,0,@11388,@11387 11387:O2|@11391,0 11388:O2|@11389,0 11389:O2|0,@11390 11390:O5|@11383,220,220,0,0 11391:O2|3,@11392 11392:S14|4249434c6f6164436c6f73757265 11393:O5|0,0,0,@11395,@11394 11394:O2|@11398,0 11395:O2|@11396,0 11396:O2|0,@11397 11397:O5|@11383,218,218,0,0 11398:O2|3,@11399 11399:S12|4249434c6f61644c6f63616c 11400:O5|0,0,0,@11402,@11401 11401:O2|@11405,0 11402:O2|@11403,0 11403:O2|0,@11404 11404:O5|@11383,221,221,0,0 11405:O2|3,@11406 11406:S16|4249434c6f6164526563757273697665 11407:S17|7072696e742d6269634c6f6164466f726d 11408:O5|0,0,0,@11367,@11409 11409:O2|@11410,0 11410:O2|3,@11411 11411:S7|53696d696c6172 11412:S16|7072696e742d73696d696c6172697479 11413:S86|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e6428332973696d696c6172283229 11414:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e64283329 11415:O1|@5465 11416:O1|@5516 11417:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f646528372967657450726f7073283129 11418:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729 11419:S54|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329 11420:O12|@5518,@4675,6,@10549,@12780,@4677,@4683,@12861,@12877,2,@4684,@4671 11421:O2|@11422,0 11422:O2|3,@11423 11423:S4|2e2e2e7d 11424:O2|@11425,0 11425:O2|3,@9808 11426:O2|3,@11427 11427:S13|737461636b4f6666736574203d 11428:O2|3,@9796 11429:O2|3,@11430 11430:S11|636f6e7461696e6572203d 11431:O2|3,@9772 11432:O5|0,0,0,@11434,@11433 11433:O2|@11438,0 11434:O2|@11435,0 11435:O2|0,@11436 11436:O5|@11437,123,123,0,0 11437:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836436f646574726565546f49436f64652e4d4c 11438:O2|3,@11439 11439:S17|436f6e7461696e65724c6f636174696f6e 11440:O5|0,0,0,@11442,@11441 11441:O2|@11445,0 11442:O2|@11443,0 11443:O2|0,@11444 11444:O5|@11437,121,121,0,0 11445:O2|3,@11446 11446:S10|4e6f4c6f636174696f6e 11447:O5|0,0,0,@11449,@11448 11448:O2|@11452,0 11449:O2|@11450,0 11450:O2|0,@11451 11451:O5|@11437,122,122,0,0 11452:O2|3,@11453 11453:S12|507265674c6f636174696f6e 11454:S19|7072696e742d6c6f636174696f6e56616c7565 11455:O4|4,@9467,0,@11456 11456:O5|@9992,101,0,101,0 11457:O1|@5523 11458:S4|74727565 11459:S5|66616c7365 11460:O2|3,@11461 11461:S9|6d656d41646472203d 11462:O2|3,@11463 11463:S14|6578697374696e6750726567203d 11464:O2|3,@11465 11465:S10|636f6e7374333273203d 11466:O2|3,@11467 11467:S13|616e79436f6e7374616e74203d 11468:O5|0,0,0,@11470,@11469 11469:O2|@11473,0 11470:O2|@11471,0 11471:O2|0,@11472 11472:O5|@11437,237,237,0,0 11473:O2|3,@11474 11474:S7|416c6c6f776564 11475:O5|0,0,0,@11477,@11476 11476:O2|@11480,0 11477:O2|@11478,0 11478:O2|0,@11479 11479:O5|@11437,236,236,0,0 11480:O2|3,@11481 11481:S8|4e6f526573756c74 11482:O5|0,0,0,@11484,@11483 11483:O2|@11487,0 11484:O2|@11485,0 11485:O2|0,@11486 11486:O5|@11437,235,235,0,0 11487:O2|3,@11488 11488:S12|537065636966696350526567 11489:S17|7072696e742d64657374696e6174696f6e 11490:O9|@5524,@11556,@11566,@11582,@11587,@11593,@11597,@11602,@11491 11491:O2|@5742,@11490 11492:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296a756d704f6e4f766572666c6f77283129 11493:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f646541726773283329 11494:O3|7,1,0 11495:S21|506f6c794d756c7469706c79417262697472617279 11496:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564526576283429 11497:O4|@4611,@9978,@11499,@11498 11498:O5|@11437,577,0,577,0 11499:S24|4249434576616c2061646472657373206e6f7420636f6465 11500:O4|@4611,@9978,@11502,@11501 11501:O5|@11437,575,0,575,0 11502:S15|4249434576616c2061646472657373 11503:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f616441726773283429 11504:O4|@4611,@9978,@11506,@11505 11505:O5|@11437,485,0,485,0 11506:S28|636f6465546f49436f6465526576202d206c6f63616c20756e736574 11507:O5|0,0,0,0,1 11508:O4|@4611,@9978,@11510,@11509 11509:O5|@11437,535,0,535,0 11510:S6|6f6666736574 11511:O4|@4611,@9978,@11513,@11512 11512:O5|@11437,542,0,542,0 11513:S23|636f6465546f49436f64655265762d4249434669656c64 11514:O4|@4611,@9978,@11516,@11515 11515:O5|@11437,1009,0,1009,0 11516:S28|4249434c6f6f7020776974686f757420424943426567696e4c6f6f70 11517:O4|@4611,@9978,@11519,@11518 11518:O5|@11437,333,0,333,0 11519:S13|636f6465546f50526567526576 11520:O4|@4668,@11166,0,@11521 11521:O5|@11167,85,0,85,0 11522:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329636c656172283129 11523:O2|@11524,0 11524:O2|6,@11525 11525:O1|13 11526:S85|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329 11527:O5|0,0,1,0,1 11528:S97|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f737572652833296c6f61644669656c6473283229 11529:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f73757265283329 11530:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429 11531:O4|@4611,@9978,@11533,@11532 11532:O5|@11437,463,0,463,0 11533:S23|636f6465546f49436f6465202d20737461636b20707472 11534:S98|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362973746f7265496e7374727c636f6465436f6e7461696e65722d73746f7265546f537461636b283129 11535:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963726561746553746f7265283129283129 11536:O4|@4611,@9978,@11506,@11537 11537:O5|@11437,1135,0,1135,0 11538:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d67657441646472283129 11539:S86|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d283129 11540:O4|@4611,@9978,@11506,@11541 11541:O5|@11437,1197,0,1197,0 11542:S95|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d6c6f61644669656c64283129 11543:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d636f7079436f6e7461696e6572283329 11544:O5|0,1,1,1,1 11545:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f61644669656c6473283329 11546:O4|@4611,@9978,@11548,@11547 11547:O5|@11437,509,0,509,0 11548:S19|424943457874726163743a20636c6f73757265 11549:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6d616b65537461636b41726773283229 11550:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6c6f616441726773283229 11551:O4|@4611,@9978,@11553,@11552 11552:O5|@11437,940,0,940,0 11553:S19|636f646543617365733a206d69736d61746368 11554:S70|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64654361736573283329 11555:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629 11556:O4|@5571,@11490,@11563,@11557 11557:O2|@5591,@11490 11558:O4|@4611,@9978,@11560,@11559 11559:O5|@11437,2386,0,2386,0 11560:S35|636f6465546f49436f6465426c6f636b202d20426c6f636b4f70457175616c42797465 11561:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564283429 11562:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465426c6f636b283529 11563:O2|@5590,@11490 11564:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f646541646472657373526576283529 11565:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654173556e746167676564546f526567526576283529 11566:O5|@5592,@11490,@11563,@11567,@11557 11567:O2|@5623,@11490 11568:O4|@4611,@9978,@11570,@11569 11569:O5|@11437,2240,0,2240,0 11570:S59|636f6465546f49436f64654e6f6e5265763a2042494353746f72654f7065726174696f6e204c6f616453746f726543363420696e2033322d626974 11571:O4|@4611,@9978,@11573,@11572 11572:O5|@11437,324,0,324,0 11573:S10|636f6465546f50526567 11574:O4|7,@9493,0,@11575 11575:O5|@9494,196,0,196,0 11576:S22|506f6c7952656d61696e646572417262697472617279 11577:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646553746f7265283429 11578:O4|@4611,@9978,@11580,@11579 11579:O5|@11437,2979,0,2979,0 11580:S26|636f646543416464726573733a20756e6b6e6f776e2073697a65 11581:S56|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654341646472657373283429 11582:O3|@5626,@11563,@11567 11583:O4|@4611,@9978,@11585,@11584 11584:O5|@11437,2116,0,2116,0 11585:S58|636f6465546f49436f64654e6f6e5265763a204249434c6f61644f7065726174696f6e204c6f616453746f726543363420696e2033322d626974 11586:S59|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64654c6f6164283529 11587:O3|@5643,@11490,@11563 11588:O2|2,1280 11589:O2|2,17664 11590:O2|2,16384 11591:O2|2,17408 11592:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465436f6e646974696f6e526576283529 11593:O3|@5647,@11490,@11594 11594:O2|@5652,@11490 11595:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465416c6c6f63617465283529 11596:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329616c6c6f636174654d656d6f72795661726961626c65283629 11597:O2|@5658,@11490 11598:O4|@4611,@9978,@11600,@11599 11599:O5|@11437,2906,0,2906,0 11600:S58|636f6465546f49436f64653a204669786564507265636973696f6e4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 11601:S67|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654669786564507265636973696f6e4172697468283629 11602:O4|@5686,@11490,@11603,@11597 11603:O2|@5740,@11490 11604:O2|0,@10442 11605:S77|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529636865636b4f766572666c6f77283129 11606:O4|@4611,@9978,@11608,@11607 11607:O5|@11437,1867,0,1867,0 11608:S59|636f6465546f49436f64654e6f6e5265763a204c61726765576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 11609:O4|@4611,@9978,@11611,@11610 11610:O5|@11437,1612,0,1612,0 11611:S54|636f6465546f49436f64654e6f6e5265763a20576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 11612:O4|@4611,@9978,@11614,@11613 11613:O5|@11437,1949,0,1949,0 11614:S54|636f6465546f49436f64654e6f6e5265763a205265616c4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 11615:O4|@4611,@9978,@11617,@11616 11616:O5|@11437,79,0,79,0 11617:S26|6c61726765576f7264436f6e7374616e743a20696e76616c6964 11618:B4|00000000 11619:O4|@4611,@9978,@11617,@11620 11620:O5|@11437,85,0,85,0 11621:S61|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529 11622:S68|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654d756c7469706c79436f6e7374616e74576f7264283529 11623:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465556e617279283529 11624:O4|@4611,@9978,@11626,@11625 11625:O5|@11437,3095,0,3095,0 11626:S20|73706c6974436f6465202d206e6f20626567696e 11627:S53|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f58383628332973706c6974436f6465283329 11628:O2|@5762,@4665 11629:O1|@5763 11630:O4|11,@9429,0,@11631 11631:O5|@9490,305,0,305,0 11632:S25|537472696e672e6669656c64732832296669656c6427283229 11633:S60|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c6428322966696e64546162283329 11634:S50|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c64283229 11635:O4|11,@9429,0,@11636 11636:O5|@9823,121,0,121,0 11637:S40|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d283129 11638:S26|5072657474792e67657453696d706c655072696e746572283229 11639:O2|8,@11640 11640:O2|20,@11641 11641:O2|60,0 11642:O4|@4611,@9978,@11644,@11643 11643:O5|@11645,192,0,192,0 11644:S15|546f6f206d616e7920706173736573 11645:S57|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64655472616e73666f726d2e4d4c 11646:O1|@5774 11647:S39|58383649436f64654964656e746966795265666572656e63657328292e61726752656773283129 11648:S64|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229676574536f7572636573283129 11649:O1|@5778 11650:S41|58383649436f64654964656e746966795265666572656e63657328292e617267537461636b73283129 11651:O6|0,0,0,0,0,0 11652:S51|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229 11653:O4|@4611,@9978,@11655,@11654 11654:O5|@11656,336,0,336,0 11655:S14|4343436865636b206661696c6564 11656:S66|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64654964656e746966795265666572656e6365732e4d4c 11657:O4|@4611,@9978,@11655,@11658 11658:O5|@11656,335,0,335,0 11659:S19|496e745365742e6164644974656d2832292829 11660:S20|496e745365742e6d657267654c69737473283329 11661:S72|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e2831297363616e436f6465283329 11662:S20|496e745365742e6d696e75734c69737473283229 11663:S61|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e283129 11664:O1|@5799 11665:O1|@5800 11666:O2|@9458,0 11667:S21|7072696e745f6c697374283329706c697374283229 11668:O2|@11669,0 11669:O2|3,@11670 11670:S1|5d 11671:S6|402832292829 11672:O2|3,@9773 11673:S7|61646450502d32 11674:O4|0,@11675,1,1 11675:O1|@5804 11676:S9|7072696e742d696e74 11677:O5|0,0,0,@11679,@11678 11678:O2|@11683,0 11679:O2|@11680,0 11680:O2|0,@11681 11681:O5|@11682,22,22,0,0 11682:S47|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f496e745365742e736d6c 11683:O2|3,@11684 11684:S6|496e74536574 11685:S12|7072696e742d696e74536574 11686:O2|3,@11687 11687:S10|737461636b536574203d 11688:O2|3,@11689 11689:S8|726567536574203d 11690:O2|3,@11691 11691:S9|63635374617465203d 11692:O5|0,0,0,@11694,@11693 11693:O2|@11697,0 11694:O2|@11695,0 11695:O2|0,@11696 11696:O5|@11656,396,396,0,0 11697:O2|3,@11698 11698:S6|4c6f6f706564 11699:O5|0,0,0,@11694,@11700 11700:O2|@11701,0 11701:O2|3,@11702 11702:S9|50726f636573736564 11703:O5|0,0,0,@11694,@11704 11704:O2|@11705,0 11705:O2|3,@11706 11706:S10|50726f63657373696e67 11707:O5|0,0,0,@11694,@11708 11708:O2|@11709,0 11709:O2|3,@11710 11710:S11|556e70726f636573736564 11711:S14|7072696e742d6c6f6f7044617461 11712:O1|@5806 11713:S26|496e745365742e706172746974696f6e28312970617274283229 11714:O4|@4611,@9978,@11716,@11715 11715:O5|@11656,447,0,447,0 11716:S17|4d69736d61746368656420737461746573 11717:S96|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229616464537563636573736f72283129 11718:O4|@4611,@9978,@11720,@11719 11719:O5|@11656,479,0,479,0 11720:S20|4d69736d61746368656420636320737461746573 11721:O4|@4611,@9978,@11720,@11722 11722:O5|@11656,470,0,470,0 11723:O4|@4611,@9978,@11720,@11724 11724:O5|@11656,469,0,469,0 11725:O4|@4611,@9978,@11727,@11726 11726:O5|@11656,487,0,487,0 11727:S21|4c6f6f706564207374617465206e65656473206363 11728:S81|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229 11729:S65|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f70283129 11730:O4|@4611,@9978,@11732,@11731 11731:O5|@11656,644,0,644,0 11732:S24|707573685265676973746572733a20636163686520726567 11733:O4|@4611,@9978,@11732,@11734 11734:O5|@11656,643,0,643,0 11735:S10|41726269747261727922 11736:S70|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74496e73747273283529 11737:S64|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74283129 11738:S49|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329 11739:O1|@5829 11740:S66|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129283129 11741:S63|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129 11742:O4|@4611,@9978,@11744,@11743 11743:O5|@11645,129,0,129,0 11744:S10|6d61726b417350757368 11745:S53|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129 11746:S37|58383649436f64655472616e73666f726d28292e7370696c6c526567697374657273283229 11747:O1|@5832 11748:O2|3,@11749 11749:S5|726e6f203d 11750:O2|3,@11751 11751:S8|6f6666736574203d 11752:O5|0,0,0,@11754,@11753 11753:O2|@11758,0 11754:O2|@11755,0 11755:O2|0,@11756 11756:O5|@11757,59,59,0,0 11757:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836507573685265676973746572732e4d4c 11758:O2|3,@11759 11759:S11|43616368654d656d6f7279 11760:O5|0,0,0,@11762,@11761 11761:O2|@11765,0 11762:O2|@11763,0 11763:O2|0,@11764 11764:O5|@11757,58,58,0,0 11765:O2|3,@11766 11766:S10|4361636865537461636b 11767:O2|3,@11768 11768:S10|69735369676e6564203d 11769:O5|0,0,0,@11771,@11770 11770:O2|@11774,0 11771:O2|@11772,0 11772:O2|0,@11773 11773:O5|@11757,62,62,0,0 11774:O2|3,@11775 11775:S11|4361636865546167676564 11776:S15|7072696e742d636163686554797065 11777:S55|5838365075736852656769737465727328292e61646452656769737465725075736865732835297365745265666572656e636573283129 11778:O2|@10112,0 11779:O4|@4611,@9978,@11781,@11780 11780:O5|@11757,226,0,226,0 11781:S24|72656d6f76654974656d73202d20737461636b2073697a65 11782:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312972656d6f76654974656d73283129 11783:S61|5838365075736852656769737465727328292e6164645265676973746572507573686573283529736574436f6d6d6f6e43616368655374617465283129 11784:O4|@4611,@9978,@11786,@11785 11785:O5|@11757,323,0,323,0 11786:S24|6d617044657374526567202d20616c726561647920736574 11787:O4|@4611,@9978,@11789,@11788 11788:O5|@11757,346,0,346,0 11789:S29|6d617044657374526567202d20616c7265616479206f6e20737461636b 11790:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d617044657374526567283229 11791:O4|@4611,@9978,@11793,@11792 11792:O5|@11757,288,0,288,0 11793:S17|6d6170537263526567202d20756e736574 11794:O4|@4611,@9978,@11796,@11795 11795:O5|@11757,356,0,356,0 11796:S21|6d6170576f726b526567202d204d75737450757368 11797:O4|@4611,@9978,@11799,@11798 11798:O5|@11757,368,0,368,0 11799:S21|6d6170576f726b526567202d206f6e20737461636b 11800:O4|@4611,@9978,@11802,@11801 11801:O5|@11757,895,0,895,0 11802:S27|707573685265676973746572733a20426567696e48616e646c6572 11803:O4|@4611,@9978,@11805,@11804 11804:O5|@11757,395,0,395,0 11805:S21|6d6170436f6e7461696e6572202d20546f50526567 11806:O4|@4611,@9978,@11808,@11807 11807:O5|@11757,394,0,394,0 11808:S20|6d6170436f6e7461696e6572202d20756e736574 11809:O4|@4611,@9978,@11811,@11810 11810:O5|@11757,420,0,420,0 11811:S17|6d6170536f75726365202d20756e736574 11812:O3|@10755,0,0 11813:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170496e6465784578283229 11814:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170536f757263654578283229 11815:S83|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831297075736852656769737465727328322967657456616c756573283229 11816:O4|@4611,@9978,@11818,@11817 11817:O5|@11757,561,0,561,0 11818:S26|4c6f6164417267756d656e74202d20616c726561647920736574 11819:O4|@4611,@9978,@11821,@11820 11820:O5|@11757,582,0,582,0 11821:S31|4c6f6164417267756d656e74202d20616c7265616479206f6e20737461636b 11822:O4|@4611,@9978,@11824,@11823 11823:O5|@11757,605,0,605,0 11824:S9|63616368654b696e64 11825:O4|@4611,@9978,@11827,@11826 11826:O5|@11757,414,0,414,0 11827:S29|6d617044657374436f6e7461696e65723a20616c726561647920736574 11828:O4|@4611,@9978,@11830,@11829 11829:O5|@11757,550,0,550,0 11830:S30|6d6170416e644c6f6164202d20616c72656164792061206d656d206c6f63 11831:O4|@4611,@9978,@11833,@11832 11832:O5|@11757,549,0,549,0 11833:S32|6d6170416e644c6f6164202d20616c7265616479206120737461636b206c6f63 11834:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170416e644c6f6164283229 11835:S86|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296c6f6164537461636b417267283329 11836:O4|@4611,@9978,@11838,@11837 11837:O5|@11757,869,0,869,0 11838:S27|70757368526567697374657273202d20706f702068616e646c6572 11839:S87|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296e6577436f6e7461696e657273283229 11840:O4|@4611,@9978,@11842,@11841 11841:O5|@11757,1024,0,1024,0 11842:S36|70757368526567697374657273202d2041746f6d696345786368616e6765416e64416464 11843:S71|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312970757368526567697374657273283229 11844:S64|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129646f50757368283229 11845:S55|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129 11846:O2|@10093,0 11847:O4|@4611,@9978,@11849,@11848 11848:O5|@11757,1243,0,1243,0 11849:S11|61646a757374537461636b 11850:S53|5838365075736852656769737465727328292e6164645265676973746572507573686573283529637265617465426c6f636b283129 11851:O4|4,@9467,0,@11852 11852:O5|@9992,124,0,124,0 11853:S39|5838365075736852656769737465727328292e6164645265676973746572507573686573283529 11854:O2|1,@10068 11855:O2|1,@10071 11856:O2|1,@10757 11857:O2|1,@11162 11858:S66|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229636f6e666c69637473466f72496e737472283529 11859:S46|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229 11860:S73|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329616464536f75726365416e6444657374696e6174696f6e48696e74283229 11861:O1|@11854 11862:O1|@11857 11863:O1|@11856 11864:O1|@11855 11865:O1|@10165 11866:S54|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332961646448696e7473283429 11867:S72|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e64526567697374657228332966696e6441467269656e64283329 11868:S58|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e645265676973746572283329 11869:O4|@4611,@9978,@11871,@11870 11870:O5|@11872,600,0,600,0 11871:S33|7265676973746572416c6c6f63617465202d2053686966744f7065726174696f6e 11872:S60|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836416c6c6f636174655265676973746572732e4d4c 11873:S62|583836416c6c6f6361746552656769737465727328292e616c6c6f636174655265676973746572732833297265676973746572416c6c6f63617465283429 11874:S59|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332970726f63657373426c6f636b73283129 11875:S43|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329 11876:S120|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c28312963686f6f7365526567283329 11877:O4|@4611,@9978,@11879,@11878 11878:O5|@11645,256,0,256,0 11879:S9|63686f6f7365526567 11880:S108|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c283129 11881:S83|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c69637453657473283129 11882:S4|093d3e20 11883:S3|786d6d 11884:S2|6670 11885:S2|6178 11886:S3|726178 11887:S3|656178 11888:S2|616c 11889:S2|6378 11890:S3|726378 11891:S3|656378 11892:S2|636c 11893:S2|6478 11894:S3|726478 11895:S3|656478 11896:S2|646c 11897:S2|6278 11898:S3|726278 11899:S3|656278 11900:S2|626c 11901:S2|7370 11902:S3|727370 11903:S3|657370 11904:S2|6168 11905:S2|6270 11906:S3|726270 11907:S3|656270 11908:S2|6368 11909:S2|7369 11910:S3|727369 11911:S3|657369 11912:S2|6468 11913:S2|6469 11914:S3|726469 11915:S3|656469 11916:S2|6268 11917:S7|756e6b6e6f776e 11918:S29|5838364f5554505554434f444528292e67656e52656752657072283229 11919:S78|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e745265676973746572732831297072696e74526567416c6c6f63283229 11920:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74526567697374657273283129 11921:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729676574416c6c6f6361746564526567283129 11922:O4|@4611,@9978,@11924,@11923 11923:O5|@11925,63,0,63,0 11924:S8|617347656e526567 11925:S57|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f6465546f583836436f64652e4d4c 11926:S7|6f283229283129 11927:O4|@4611,@9978,@11929,@11928 11928:O5|@11925,66,0,66,0 11929:S7|61734650526567 11930:O4|@4611,@9978,@11932,@11931 11931:O5|@11925,69,0,69,0 11932:S8|6173584d4d526567 11933:S9|7072696e742d726567 11934:O5|0,0,0,@11936,@11935 11935:O2|@11939,0 11936:O2|@11937,0 11937:O2|0,@11938 11938:O5|@11925,231,231,0,0 11939:O2|3,@11940 11940:S11|4f74686572536f75726365 11941:O5|0,0,0,@11943,@11942 11942:O2|@11946,0 11943:O2|@11944,0 11944:O2|0,@11945 11945:O5|@11925,230,230,0,0 11946:O2|3,@11947 11947:S11|537461636b536f75726365 11948:S14|7072696e742d6c6c736f75726365 11949:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729696e737472756374696f6e55736573283129 11950:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372970726f63657373426c6f636b73283129 11951:O2|@10165,0 11952:O2|@11953,0 11953:O4|4,2,@10757,@11954 11954:O4|1,@11955,@10755,12 11955:O2|5,0 11956:O1|@11957 11957:O2|4,0 11958:O2|@11959,0 11959:O4|4,2,@11957,@11954 11960:S29|5838364f5554505554434f444528292e636f6465437265617465283329 11961:S15|506f6c794f72417262697472617279 11962:S65|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c416c6c6f636174654d656d6f72794f7065726174696f6e283229 11963:O4|@4611,@9978,@11965,@11964 11964:O5|@11925,841,0,841,0 11965:S35|636f646547656e49436f64652d416c6c6f636174654d656d6f72795661726961626c65 11966:O4|@4611,@9978,@11968,@11967 11967:O5|@11925,216,0,216,0 11968:S31|636f6465457874417267756d656e74202d20436f6e7461696e657241646472 11969:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874417267756d656e74283229 11970:O4|@4611,@9978,@11972,@11971 11971:O5|@11925,97,0,97,0 11972:S19|736f75726365417347656e5265674f724d656d 11973:O4|@4611,@9978,@11975,@11974 11974:O5|@11925,137,0,137,0 11975:S26|636f646547656e49436f64653a204c6f6164417267756d656e74 11976:O4|@4611,@9978,@11972,@11977 11977:O5|@11925,90,0,90,0 11978:S54|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c4c6f6164417267756d656e74283229 11979:O4|@4611,@9978,@11981,@11980 11980:O5|@11925,265,0,265,0 11981:S11|6e6f20776f726b20726567 11982:O2|@11984,@11983 11983:O1|@6136 11984:O1|@6135 11985:S44|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372961726373283129 11986:S51|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296e6f646541646472657373283129 11987:O1|@6134 11988:O4|@4611,@9978,@11990,@11989 11989:O5|@11925,412,0,412,0 11990:S25|6d6f76654561636856616c7565202d20656d70747920736574 11991:O4|@4611,@9978,@11993,@11992 11992:O5|@11925,190,0,190,0 11993:S30|6c6c53746f7265417267756d656e743a2053746f7265417267756d656e74 11994:O4|@4611,@9978,@11996,@11995 11995:O5|@11925,171,0,171,0 11996:S35|6c6c53746f7265417267756d656e743a2053746f7265204650526567203c3e20667030 11997:O4|@4611,@9978,@11996,@11998 11998:O5|@11925,182,0,182,0 11999:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c53746f7265417267756d656e74283529 12000:O4|@4611,@9978,@12002,@12001 12001:O5|@11925,292,0,292,0 12002:S30|6d6f76654561636856616c7565202d204d656d6f7279417267756d656e74 12003:O4|@4611,@9978,@12005,@12004 12004:O5|@11925,405,0,405,0 12005:S20|6d6f76654561636856616c75653a206379636c65 12006:O4|@4611,@9978,@12005,@12007 12007:O5|@11925,347,0,347,0 12008:S89|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c75652832292f37 12009:S87|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c7565283229 12010:S71|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c756573283229 12011:S58|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c756573283329 12012:O3|@11955,@10755,4 12013:O3|31,@11957,@12014 12014:O4|1,@11955,@10755,4 12015:O3|38,1,0 12016:O2|3,@12017 12017:O2|1,@10068 12018:O2|1,@12019 12019:O2|7,0 12020:O1|44 12021:O2|1,@12022 12022:O2|6,0 12023:O4|4,2,@10071,@12024 12024:O2|3,@10071 12025:O2|37,0 12026:O4|@4611,@9978,@12028,@12027 12027:O5|@11925,1188,0,1188,0 12028:S22|636f646547656e49436f64653a204469766973696f6e 12029:O1|42 12030:O4|4,5,@10166,@12031 12031:O2|3,@10166 12032:O4|@4611,@9978,@12034,@12033 12033:O5|@11925,83,0,83,0 12034:S11|617267417347656e526567 12035:O2|35,@12036 12036:O2|3,@11957 12037:S68|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e64656428332970757368537461636b41726773283329 12038:O4|@4611,@9978,@12040,@12039 12039:O5|@11925,907,0,907,0 12040:S37|496e6465786564436173654f7065726174696f6e202d2073616d6520726567697374657273 12041:O4|@4611,@9978,@12040,@12042 12042:O5|@11925,909,0,909,0 12043:O4|@4611,@9978,@12045,@12044 12044:O5|@11925,912,0,912,0 12045:S34|636f646547656e49436f64653a20496e6465786564436173654f7065726174696f6e 12046:O2|37,4 12047:O2|35,@12014 12048:O3|48,@12012,@11957 12049:O4|@4611,@9978,@12051,@12050 12050:O5|@11925,944,0,944,0 12051:S34|636f646547656e49436f64653a2050757368457863657074696f6e48616e646c6572 12052:O4|@4611,@9978,@12054,@12053 12053:O5|@11925,894,0,894,0 12054:S34|636f6465457874656e6465643a205261697365457863657074696f6e5061636b6574 12055:O1|36 12056:O4|@4611,@9978,@12058,@12057 12057:O5|@11925,1074,0,1074,0 12058:S45|636f646547656e49436f64653a205265736574537461636b507472202d206e65676174697665206f6666736574 12059:O4|@4611,@9978,@12061,@12060 12060:O5|@11925,1330,0,1330,0 12061:S38|636f646547656e49436f6465202d2053534532416e64206e6f7420696e207265676973746572 12062:O4|@4611,@9978,@12064,@12063 12063:O5|@11925,1328,0,1328,0 12064:S38|636f646547656e49436f6465202d2053534532586f72206e6f7420696e207265676973746572 12065:O4|@4611,@9978,@12067,@12066 12066:O5|@11925,1314,0,1314,0 12067:S22|466c6f61744669786564496e743a206e6f7420726567 12068:S26|506f6c794765744c6f774f7264657241734c61726765576f7264 12069:O4|@4611,@9978,@12071,@12070 12070:O5|@11925,1143,0,1143,0 12071:S29|636f6465457874656e646564202d2053686966744f7065726174696f6e 12072:S82|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c28332972656e756d62657241726773283129 12073:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c283329 12074:O4|@4611,@9978,@12076,@12075 12075:O5|@11925,1054,0,1054,0 12076:S24|636f646547656e49436f64653a2054657374546167426974 12077:O4|@4611,@9978,@12079,@12078 12078:O5|@11925,1254,0,1254,0 12079:S39|636f646547656e49436f64653a20436f6d70617265466c6f6174696e675074206e6f7420667030 12080:O4|@4611,@9978,@12082,@12081 12081:O5|@11925,1260,0,1260,0 12082:S37|636f646547656e49436f64653a20436f6d70617265466c6f6174696e6750743a20544f444f 12083:O4|@4611,@9978,@12085,@12084 12084:O5|@11925,1279,0,1279,0 12085:S40|636f646547656e49436f64653a20466c6f6174696e67506f696e744172697468206e6f7420667030 12086:O4|@4611,@9978,@12085,@12087 12087:O5|@11925,1280,0,1280,0 12088:O4|@4611,@9978,@12090,@12089 12089:O5|@11925,1286,0,1286,0 12090:S30|636f646547656e49436f64653a20583837465041726974683a20544f444f 12091:O1|19 12092:O2|3,@12093 12093:O2|1,@10068 12094:O4|@4611,@9978,@12096,@12095 12095:O5|@11925,1293,0,1293,0 12096:S35|636f646547656e49436f64653a205838374650556e6172794f7073206e6f7420667030 12097:O4|@4611,@9978,@12096,@12098 12098:O5|@11925,1294,0,1294,0 12099:O4|@4611,@9978,@12101,@12100 12100:O5|@11925,1303,0,1303,0 12101:S35|636f646547656e49436f64653a20466c6f61744669786564496e74206e6f7420667030 12102:O3|18,@11957,0 12103:O4|@4611,@9978,@12105,@12104 12104:O5|@11925,789,0,789,0 12105:S29|46756e6374696f6e43616c6c202d204d656d6f72794c6f636174696f6e 12106:O2|3,@12107 12107:O2|1,@11957 12108:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329676574436f6e737441726773283229 12109:O4|@4611,@9978,@12111,@12110 12110:O5|@11925,818,0,818,0 12111:S30|636f6465457874656e6465643a2065617820696e20736176652072656773 12112:O4|@4611,@9978,@12114,@12113 12113:O5|@11925,819,0,819,0 12114:S34|636f6465457874656e6465643a206172672072656720696e20736176652072656773 12115:S64|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e6465642833296d616b655361766573283229 12116:O2|3,@12117 12117:O2|1,@10068 12118:S52|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329 12119:S47|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372967656e436f6465283329 12120:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837297365745265666572656e636573283229 12121:S2|3a0a 12122:O4|@4611,@9978,@12124,@12123 12123:O5|@12125,2227,0,2227,0 12124:S48|646f457870616e73696f6e3a20416c6c6f636174696f6e207374617274656420627574206e6f7420636f6d706c657465 12125:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f5838364f5554505554434f44452e4d4c 12126:O4|@4611,@9978,@12124,@12127 12127:O5|@12125,2209,0,2209,0 12128:O4|@4611,@9978,@12130,@12129 12129:O5|@12125,2210,0,2210,0 12130:S18|416c6c6f6353746f72653a20696e20736574 12131:O4|1,@11955,@10755,0 12132:O4|1,@11955,@10755,8 12133:O3|@11955,@10755,0 12134:O4|@4611,@9978,@12130,@12135 12135:O5|@12125,2228,0,2228,0 12136:S56|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329646f457870616e73696f6e283329 12137:S42|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329 12138:O4|@4611,@9978,@12140,@12139 12139:O5|@12125,1554,0,1554,0 12140:S22|63674f703a2053746f7265496e697469616c69736564 12141:O4|@4611,@9978,@12143,@12142 12142:O5|@12125,1552,0,1552,0 12143:S24|63674f703a20416c6c6f6353746f72655661726961626c65 12144:O4|@4611,@9978,@12146,@12145 12145:O5|@12125,1550,0,1550,0 12146:S16|63674f703a20416c6c6f6353746f7265 12147:S20|506f6c79436f6d70617265417262697472617279 12148:O3|0,5,0 12149:O2|@11957,0 12150:O4|@4611,@9978,@12152,@12151 12151:O5|@12125,664,0,664,0 12152:S13|6d6f64726d3a20626164207267 12153:O4|@4611,@9978,@12155,@12154 12154:O5|@12125,665,0,665,0 12155:S13|6d6f64726d3a2062616420726d 12156:S35|5838364f5554505554434f444528292e6c61726765576f7264546f4279746573283229 12157:O2|242,0 12158:O2|240,0 12159:O2|102,0 12160:O2|243,0 12161:O4|@4611,@9978,@12163,@12162 12162:O5|@12125,762,0,762,0 12163:S53|726578427974653a204d4f56425f525f4120616363657373696e67206c6f77206f726465722062797465206f66204553492f454449 12164:O2|15,0 12165:S26|5838364f5554505554434f444528292e6f70546f496e74283129 12166:S31|5838364f5554505554434f444528292e6f70496e646578656447656e283529 12167:O2|191,0 12168:O1|7 12169:O4|@4611,@9978,@12171,@12170 12170:O5|@12125,722,0,722,0 12171:S38|6f70436f646542797465733a207265782070726566697820696e20333220626974206d6f6465 12172:S30|5838364f5554505554434f444528292e6f70436f64654279746573283229 12173:S16|506f6c79416e64417262697472617279 12174:O4|@4611,@9978,@12176,@12175 12175:O5|@12125,1331,0,1331,0 12176:S44|434d50207769746820636f6e7374616e742074686174206c6f6f6b73206c696b6520616e2061646472657373 12177:S29|5838364f5554505554434f444528292e6f70526567506c757332283329 12178:S35|5838364f5554505554434f444528292e696d6d6564696174654f706572616e64283329 12179:S24|5838364f5554505554434f444528292e6f70526567283329 12180:O1|23 12181:O1|@11955 12182:O1|15 12183:S26|5838364f5554505554434f444528292e72747343616c6c283229 12184:B4|00000000 12185:O1|22 12186:O1|29 12187:O1|34 12188:O1|33 12189:O1|28 12190:O3|0,5,3 12191:O1|30 12192:O1|@12193 12193:O4|1,0,0,0 12194:O1|38 12195:O1|39 12196:O1|41 12197:O1|10 12198:O1|12 12199:O1|27 12200:O4|@4611,@9978,@12202,@12201 12201:O5|@12125,1511,0,1511,0 12202:S35|63674f703a2053746f7265436f6e7374546f4d656d6f7279206e6f7420746167676564 12203:O1|32 12204:O1|31 12205:O4|@4611,@9978,@12207,@12206 12206:O5|@12125,1528,0,1528,0 12207:S18|486967682062797465207265676973746572 12208:O4|@4611,@9978,@12210,@12209 12209:O5|@12125,1547,0,1547,0 12210:S24|53746f72654e6f6e576f7264436f6e73743a203332426974 12211:O4|@4611,@9978,@12213,@12212 12212:O5|@12125,1544,0,1544,0 12213:S24|53746f72654e6f6e576f7264436f6e73743a203136426974 12214:O1|24 12215:O1|14 12216:B4|01000000 12217:O1|47 12218:B4|fbffffff 12219:O1|@12220 12220:O2|2,0 12221:O2|6,4 12222:O2|6,5 12223:B8|0000000000000000 12224:O2|6,1 12225:S15|506f6c795265616c47656e6572616c 12226:B8|000000000000f03f 12227:B8|000000000000f0bf 12228:O2|6,3 12229:O2|6,7 12230:O2|224,0 12231:O2|0,5 12232:O2|1,4 12233:O2|0,4 12234:O4|@4611,@9978,@12236,@12235 12235:O5|@12125,1858,0,1858,0 12236:S21|63674f703a20496e64657865644a756d7043616c63 12237:O4|@4611,@9978,@12239,@12238 12238:O5|@12125,1849,0,1849,0 12239:S15|63674f703a204a756d705461626c65 12240:O1|20 12241:O4|@4611,@9978,@12243,@12242 12242:O5|@12125,1782,0,1782,0 12243:S27|4d756c7469706c79202d206164647265737320636f6e7374616e74 12244:O1|18 12245:O1|17 12246:O1|43 12247:O1|48 12248:O4|@4611,@9978,@12250,@12249 12249:O5|@12125,1842,0,1842,0 12250:S11|63674f703a205843686e67 12251:O4|@4611,@9978,@12253,@12252 12252:O5|@12125,1811,0,1811,0 12253:S14|63674f703a20584d4d4172697468 12254:O1|46 12255:O1|45 12256:O1|35 12257:S49|5838364f5554505554434f444528292e636f646547656e657261746528312963674f702831296d616b654a756d70283229 12258:S38|5838364f5554505554434f444528292e636f646547656e657261746528312963674f70283129 12259:S34|5838364f5554505554434f444528292e636f646547656e6572617465283129283229 12260:O4|@4611,@9978,@12262,@12261 12261:O5|@12125,186,0,186,0 12262:S24|627974655369676e65643a20696e76616c69642062797465 12263:O4|@4611,@9978,@12265,@12264 12264:O5|@12125,1941,0,1941,0 12265:S12|666978757041646472657373 12266:O1|21 12267:S59|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875704164647265737328342970726f6365737343617365283329 12268:O4|@4611,@9978,@12265,@12269 12269:O5|@12125,1921,0,1921,0 12270:S40|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875703332283329 12271:S45|5838364f5554505554434f444528292e66697875704c6162656c73283329666978757041646472657373283429 12272:O4|@4611,@9978,@12274,@12273 12273:O5|@12125,2051,0,2051,0 12274:S26|726570726f63657373202d2073697a6520696e63726561736564 12275:S30|5838364f5554505554434f444528292e66697875704c6162656c73283329 12276:O1|5 12277:S30|5838364f5554505554434f444528292e676574436f6e7374616e74283429 12278:O1|16 12279:O4|11,@9429,0,@12280 12280:O5|@12281,99,0,99,0 12281:S42|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f44455f41525241592e4d4c 12282:O4|7,@9493,0,@12283 12283:O5|@9494,185,0,185,0 12284:S19|506f6c79446976696465417262697472617279 12285:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e73742832297365744d656d283229 12286:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229646f436f7079283129 12287:O4|@4611,@9978,@12289,@12288 12288:O5|@12125,3109,0,3109,0 12289:S34|7075744e6f6e41646472436f6e73743a204e6f742061207265616c206e756d626572 12290:S49|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229 12291:S42|5838364f5554505554434f444528292e67656e6572617465436f64652833297365744279746573283329 12292:S21|506f6c79436f707942797465566563546f436f6465 12293:O4|11,@9429,0,@12294 12294:O5|@12281,112,0,112,0 12295:O4|@4611,@9978,@12297,@12296 12296:O5|@12125,3139,0,3139,0 12297:S8|6d69736d61746368 12298:O4|11,@9429,0,@12299 12299:O5|@12281,131,0,131,0 12300:S19|506f6c79536574436f6465436f6e7374616e74 12301:S42|5838364f5554505554434f444528292e67656e6572617465436f6465283329707574436f6e7374283229 12302:S5|6c6f636b20 12303:S4|786f7220 12304:S4|73756220 12305:S4|616e6420 12306:S4|73626220 12307:S4|61646320 12308:S4|6f722020 12309:S4|61646420 12310:S4|636d7020 12311:S47|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c2833292d45 12312:S10|71776f72642070747220 12313:S10|64776f72642070747220 12314:S9|776f72642070747220 12315:S9|627974652070747220 12316:O4|11,@9429,0,@12317 12317:O5|@12281,89,0,89,0 12318:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574333273283229 12319:S2|2a31 12320:S2|2a32 12321:S2|2a34 12322:S2|2a38 12323:S45|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c283329 12324:S6|786f72706409 12325:S6|616e64706409 12326:S8|75636f6d69736409 12327:S3|36360a 12328:S3|30460a 12329:S6|6d6f76737309 12330:S9|637674737332736409 12331:S3|46330a 12332:S6|646976736409 12333:S6|737562736409 12334:S9|637674736432737309 12335:S6|6d756c736409 12336:S6|616464736409 12337:S9|637674736932736409 12338:S6|6d6f76736409 12339:S3|46320a 12340:S4|6a672020 12341:S4|6a6c6520 12342:S4|6a676520 12343:S4|6a6c2020 12344:S4|6a6e7020 12345:S4|6a702020 12346:S4|6a6e7320 12347:S4|6a732020 12348:S4|6a612020 12349:S4|6a6e6120 12350:S4|6a6e6520 12351:S4|6a652020 12352:S4|6a6e6220 12353:S4|6a622020 12354:S4|6a6e6f20 12355:S4|6a6f2020 12356:S5|696d756c09 12357:S6|6d6f767a7809 12358:S5|7861646409 12359:S4|65736309 12360:S5|7075736809 12361:S5|706f702009 12362:S5|6a6f202009 12363:S5|6a6e6f2009 12364:S5|6a62202009 12365:S5|6a6e622009 12366:S5|6a65202009 12367:S5|6a6e652009 12368:S5|6a6e612009 12369:S5|6a61202009 12370:S5|6a73202009 12371:S5|6a6e732009 12372:S5|6a70202009 12373:S5|6a6e702009 12374:S5|6a6c202009 12375:S5|6a67652009 12376:S5|6a6c652009 12377:S5|6a67202009 12378:S7|7863686e672009 12379:S5|6d6f762009 12380:S3|73696c 12381:S3|64696c 12382:S3|62706c 12383:S3|73706c 12384:S5|6c65612009 12385:S3|6e6f70 12386:S3|63716f 12387:S3|636471 12388:S5|736168660a 12389:S4|72657020 12390:S5|6d6f767362 12391:S5|6d6f76736c 12392:S5|7265706520 12393:S5|636d707362 12394:S8|7465737409616c2c 12395:S5|73746f7362 12396:S5|73746f7371 12397:S5|73746f736c 12398:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574363473283229 12399:S3|3f3f3f 12400:S4|73617220 12401:S4|73687220 12402:S4|73686c20 12403:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e745368696674283329 12404:S5|7265742009 12405:S3|726574 12406:S5|5341564509 12407:S11|666d756c0973742c737428 12408:S11|666164640973742c737428 12409:S9|66636f6d7009737428 12410:S12|66646976720973742c737428 12411:S11|666469760973742c737428 12412:S12|66737562720973742c737428 12413:S11|667375620973742c737428 12414:S9|666672656509737428 12415:S8|6673747009737428 12416:S8|6673742009737428 12417:S9|666e73747377096178 12418:S8|6678636809737428 12419:S8|666c642009737428 12420:S4|66636f73 12421:S5|6673717274 12422:S4|6673696e 12423:S7|66696e63737470 12424:S6|66706174616e 12425:S7|66646563737470 12426:S4|666c647a 12427:S4|666c6631 12428:S4|666c6431 12429:S4|66616273 12430:S4|66636873 12431:S5|6673747009 12432:S4|66737409 12433:S5|666c642009 12434:S6|666469767209 12435:S5|6664697609 12436:S5|6673756209 12437:S5|666d756c09 12438:S6|667375627209 12439:S6|66636f6d7009 12440:S5|6661646409 12441:S6|66696c647109 12442:S6|66696c646c09 12443:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74466c6f6174283229 12444:S5|63616c6c09 12445:S5|6a6d702009 12446:S3|686c74 12447:S3|6e6567 12448:S4|74657374 12449:S4|69646976 12450:S4|64697620 12451:S4|696d756c 12452:S4|6d756c20 12453:S4|6e656720 12454:S4|70757368 12455:S4|6a6d7020 12456:S4|63616c6c 12457:O4|@4611,@9978,@12459,@12458 12458:O5|@12125,280,0,280,0 12459:S19|426164207265676973746572206e756d626572 12460:S28|5838364f5554505554434f444528292e7072696e74436f6465283229 12461:S2|0a0a 12462:S19|506f6c794c6f636b4d757461626c65436f6465 12463:S11|416c6c6f6353746f726520 12464:S4|203d3e20 12465:S19|416c6c6f6353746f72655661726961626c6520 12466:S3|436d70 12467:S3|4d4320 12468:S3|2a385d 12469:S3|2a345d 12470:S3|2a325d 12471:S51|5838364f5554505554434f444528292e7072696e744f7065726174696f6e2832297072696e74426173654f6666736574283329 12472:S4|203c3d20 12473:S3|525220 12474:S12|4c6f636b6564584164642028 12475:S6|29203c3d3e20 12476:S13|43616c6c46756e6374696f6e20 12477:S14|76696120436c6f73757265526567 12478:S5|636f64653d 12479:S8|43616c6c52545320 12480:S19|537461636b4f766572666c6f7743616c6c4578 12481:S12|486561704f766572666c6f77 12482:S17|537461636b4f766572666c6f7743616c6c 12483:S9|4a756d704166746572 12484:S10|4a756d704265666f7265 12485:S9|4a756d70457175616c 12486:S11|4a756d7047726561746572 12487:S18|4a756d70477265617465724f72457175616c 12488:S8|4a756d704c657373 12489:S15|4a756d704c6573734f72457175616c 12490:S12|4a756d704e6f744166746572 12491:S13|4a756d704e6f744265666f7265 12492:S12|4a756d704e6f74457175616c 12493:S15|4a756d704e6f744f766572666c6f77 12494:S12|4a756d704e6f506172697479 12495:S12|4a756d704f766572666c6f77 12496:S10|4a756d70506172697479 12497:S2|204c 12498:S16|20507265646963744e6f7454616b656e 12499:S13|205072656469637454616b656e 12500:S12|4469766964655369676e6564 12501:S14|446976696465556e7369676e6564 12502:S5|4650416464 12503:S9|4650436f6d70617265 12504:S15|4650436f6d70617265416e64506f70 12505:S8|4650446976696465 12506:S15|465052657665727365446976696465 12507:S10|46504d756c7469706c79 12508:S10|46505375627472616374 12509:S17|4650526576657273655375627472616374 12510:S7|46504672656520 12511:S7|46504c6f616420 12512:O3|@6359,@12522,@12513 12513:O1|@6362 12514:S3|6e616e 12515:S4|7e696e66 12516:S3|696e66 12517:S16|5265616c2e6164645a65726f73283129 12518:S2|302e 12519:S2|2e30 12520:S14|5265616c2e67656e466d74283229 12521:S17|5265616c2e67656e466d74283129283129 12522:B8|0000000000000000 12523:S21|506f6c795265616c426f786564546f537472696e67 12524:S7|20284c41535429 12525:S13|46504c6f616453696e676c6520 12526:S13|46504c6f6164446f75626c6520 12527:S10|46504c6f6164496e7420 12528:S9|465053746174757320 12529:S17|465053746f7265416e64506f70203d3e20 12530:S11|465053746f7265203d3e20 12531:S23|465053746f726553696e676c65416e64506f70203d3e20 12532:S17|465053746f726553696e676c65203d3e20 12533:S23|465053746f7265446f75626c65416e64506f70203d3e20 12534:S17|465053746f7265446f75626c65203d3e20 12535:S10|46504c6f61645a65726f 12536:S9|46504c6f61644f6e65 12537:S5|4650416273 12538:S12|46504368616e67655369676e 12539:S16|496e64657865644a756d7043616c6320 12540:S4|202b3d20 12541:S5|202a203820 12542:S4|202a2032 12543:S15|4a756d70546f46756e6374696f6e20 12544:S12|4c6f61644164647265737320 12545:S3|202b20 12546:S3|2a3820 12547:S3|2a3420 12548:S3|2a3220 12549:S18|4c6f61644c6162656c41646472657373204c 12550:S2|3d3e 12551:S19|4c6f636b4d757461626c655365676d656e7420 12552:S7|4d6f7665525220 12553:S9|4d756c7469706c7952 12554:S4|202a3d3e 12555:S9|4e6567617469766520 12556:S5|506f705220 12557:S5|5075736820 12558:S14|5261697365457863657074696f6e 12559:S7|52657065617420 12560:S10|53746f7265576f726473 12561:S10|53746f72654279746573 12562:S9|4d6f7665576f726473 12563:S9|4d6f76654279746573 12564:S12|436f6d706172654279746573 12565:S11|5265736574537461636b20 12566:S12|207072657365727665204343 12567:S19|52657475726e46726f6d46756e6374696f6e20 12568:S23|5368696674205269676874204172697468656d65746963 12569:S19|5368696674205269676874204c6f676963616c 12570:S18|5368696674204c656674204c6f676963616c 12571:S4|20627920 12572:S7|20627920454358 12573:S19|5369676e457874656e64466f72446976696465 12574:S19|53746f7265436f6e7374546f4d656d6f727920 12575:S16|53746f7265496e697469616c69736564 12576:S23|53746f72654c6f6e67436f6e7374546f4d656d6f727920 12577:S10|53746f7265436f6e7374 12578:S17|53746f7265526567546f4d656d6f727920 12579:S12|54657374427974654d656d20 12580:S3|203078 12581:S9|546573745461675220 12582:S14|556e636f6e644272616e6368204c 12583:S6|5843686e6720 12584:S5|203c3d3e20 12585:S7|53534532416464 12586:S7|53534532416e64 12587:S8|53534532436f6d70 12588:S7|53534532446976 12589:S17|53534532446f75626c65546f466c6f6174 12590:S8|535345324d6f7665 12591:S14|535345324d6f766553696e676c65 12592:S7|535345324d756c 12593:S7|53534532537562 12594:S7|53534532586f72 12595:S3|524d20 12596:S15|436f6e7665727446726f6d496e7420 12597:S11|4d6f766553696e676c6520 12598:S11|4d6f7665446f75626c6520 12599:S33|5838364f5554505554434f444528292e7072696e744f7065726174696f6e283229 12600:S31|5838364f5554505554434f444528292e67656e6572617465436f6465283329 12601:O4|@4611,@9978,@12603,@12602 12602:O5|@12604,70,0,70,0 12603:S20|666f72776172643a20417269746852436f6e7374 12604:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f5838364f5054494d4953452e4d4c 12605:O4|@4611,@9978,@12607,@12606 12606:O5|@12604,90,0,90,0 12607:S24|666f72776172643a206f6666736574206e6f6e2d7a65726f 12608:S39|5838364f5054494d49534528292e67656e6572617465436f646528332972657665727365283429 12609:S39|5838364f5054494d49534528292e67656e6572617465436f6465283329666f7277617264283329 12610:S29|5838364f5054494d49534528292e67656e6572617465436f6465283329 12611:S37|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729 12612:S10|436f6e666c696374733d 12613:S74|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c696374732831297072696e7452656773283229 12614:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c69637473283129 12615:O1|@6368 12616:S26|58383649436f646528292e7072696e74426c6f636b2834292d45 12617:S16|09416c6c6f636174654d656d6f727909 12618:O2|@12464,0 12619:S3|2c663d 12620:S2|733d 12621:S6|20736176653d 12622:S5|0941646409 12623:S9|09416e644269747309 12624:S9|09436f6d7061726509 12625:S8|094f724269747309 12626:S10|09537562747261637409 12627:S17|094578636c75736976654f724269747309 12628:S2|2028 12629:S3|2a315d 12630:S24|58383649436f646528292e7072696e74496e646578283329 12631:S7|20636163686520 12632:S22|58383649436f646528292e7072696e74417267283329 12633:S22|0941746f6d696345786368616e6765416e6441646409 12634:S7|616464723d3028 12635:S7|292c776974683d 12636:S15|09426567696e46756e6374696f6e09 12637:S14|09426567696e48616e646c657209 12638:S6|207769746820 12639:S15|09426c6f636b427974654d6f766509 12640:S15|09426c6f636b576f72644d6f766509 12641:S4|7372633d 12642:S6|2c646573743d 12643:S5|2c6c656e3d 12644:S9|09426f785353453209 12645:S8|09426f7858383709 12646:S10|09426f784c6172676509 12647:S20|09436f6d7061726542797465566563746f727309 12648:S12|09436f7079546f4361636865 12649:S5|3136426974 12650:S5|3332426974 12651:S4|42797465 12652:S6|446f75626c65 12653:S5|466c6f6174 12654:S9|094469766973696f6e 12655:S7|5369676e656409 12656:S9|556e7369676e656409 12657:S5|2072656d20 12658:S14|0946756e6374696f6e43616c6c09 12659:S10|72656375727369766520 12660:S13|09496e64657865644361736509 12661:S5|746573743d 12662:S5|776f726b3d 12663:S13|09496e6974436f6d706c657465 12664:S15|09496e697469616c6973654d656d09 12665:S3|2c693d 12666:S3|2c613d 12667:S10|094a756d704c6f6f7009 12668:S5|094c6f6164 12669:S19|094c6f61644566666563746976654164647209 12670:S12|094c6f61644d656d52656709 12671:S13|094c6f636b4d757461626c6509 12672:S16|094d756c7469706c69636174696f6e09 12673:S21|09506f70457863657074696f6e48616e646c657209 12674:S5|7769746820 12675:S21|095075736845786348616e646c6572097769746820 12676:S11|095075736856616c756509 12677:S7|09526169736509 12678:S18|0952657365727665436f6e7461696e657209 12679:S15|095265736574537461636b50747209 12680:S20|0952657475726e46726f6d46756e6374696f6e09 12681:S13|0953534532436f6d7061726509 12682:S11|0953534532465041646409 12683:S11|09535345324650416e6409 12684:S12|09535345324650436f6d7009 12685:S11|0953534532465044697609 12686:S21|09535345324650446f75626c65546f466c6f617409 12687:S12|095353453246504d6f766509 12688:S18|095353453246504d6f766553696e676c6509 12689:S11|095353453246504d756c09 12690:S11|0953534532465053756209 12691:S11|09535345324650586f7209 12692:S11|0953534532466c6f617409 12693:S13|09536869667452417269746809 12694:S15|095368696674524c6f676963616c09 12695:S11|0953686966744c65667409 12696:S12|0953746f7265313642697409 12697:S12|0953746f7265333242697409 12698:S11|0953746f72654279746509 12699:S13|0953746f7265446f75626c6509 12700:S12|0953746f7265466c6f617409 12701:S11|0953746f7265576f726409 12702:S14|0953746f7265546f537461636b09 12703:S10|0954616756616c756509 12704:S10|095461696c43616c6c09 12705:S12|095465737454616742697409 12706:S6|09556e746167 12707:S16|09576f7264436f6d70617269736f6e09 12708:S12|09583837436f6d7061726509 12709:S10|09583837465041646409 12710:S14|095838374650436f6d7061726509 12711:S17|095838374650436f6d70617265506f7009 12712:S10|09583837465044697609 12713:S13|09583837465052657644697609 12714:S10|0958383746504d756c09 12715:S10|09583837465053756209 12716:S13|09583837465052657653756209 12717:S22|095838374650476574436f6e646974696f6e093d3e20 12718:S12|0958383746504c6f61643009 12719:S12|0958383746504c6f61643109 12720:S13|0958383746504e656761746509 12721:S10|09583837465041627309 12722:S10|09583837466c6f617409 12723:S7|61646a7573743d 12724:S10|737461636b53697a653d 12725:S10|20776f726b207265673d 12726:S3|287370 12727:S2|293d 12728:S12|20436865636b3a736176653d 12729:S2|703d 12730:S3|3d3e20 12731:S24|58383649436f646528292e7072696e7449436f6465283329 12732:S17|094a756d70477274556e7369676e656409 12733:S18|094a756d704c657373556e7369676e656409 12734:S11|094a756d70457175616c09 12735:S15|094a756d704772745369676e656409 12736:S15|094a756d704765715369676e656409 12737:S16|094a756d704c6573735369676e656409 12738:S15|094a756d704c65715369676e656409 12739:S17|094a756d704c6571556e7369676e656409 12740:S17|094a756d70476571556e7369676e656409 12741:S14|094a756d704e6f74457175616c09 12742:S16|094a756d704e6f4f766572666c6f7709 12743:S17|094a756d70506172697479436c65617209 12744:S14|094a756d704f766572666c6f7709 12745:S14|094a756d70506172697479536574 12746:O2|@9515,0 12747:S7|20656c7365204c 12748:S5|206f722048 12749:S7|094a756d70094c 12750:S13|0953657448616e646c65720948 12751:S7|094a756d700948 12752:S24|58383649436f646528292e7072696e74426c6f636b283429 12753:O1|@6373 12754:S59|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f6465283429 12755:S45|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f583836283729 12756:S41|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329 12757:O2|@6374,@4676 12758:O5|0,0,0,@12760,@12759 12759:O2|@12763,0 12760:O2|@12761,0 12761:O2|0,@12762 12762:O5|@11656,44,44,0,0 12763:O2|3,@12764 12764:S8|43434e6565646564 12765:O5|0,0,0,@12760,@12766 12766:O2|@12767,0 12767:O2|3,@12768 12768:S8|4343556e75736564 12769:S15|7072696e742d696e43435374617465 12770:O1|@6375 12771:O5|0,0,0,@12773,@12772 12772:O2|@12777,0 12773:O2|@12774,0 12774:O2|0,@12775 12775:O5|@12776,72,72,0,0 12776:S48|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64652e4d4c 12777:O2|3,@12778 12778:S5|4363526566 12779:S11|7072696e742d6363526566 12780:O2|@11856,@12781 12781:O2|@11857,@12782 12782:O2|@10165,@12783 12783:O2|@11855,@12784 12784:O2|@12786,@12785 12785:O2|@11854,0 12786:O2|1,@10762 12787:O3|@6376,@4681,@4678 12788:O1|@6378 12789:O5|0,0,0,@12791,@12790 12790:O2|@12794,0 12791:O2|@12792,0 12792:O2|0,@12793 12793:O5|@12125,935,935,0,0 12794:O2|3,@12795 12795:S15|41646472657373436f6e7374417267 12796:O2|3,@12797 12797:S7|696e646578203d 12798:O2|3,@12799 12799:S6|62617365203d 12800:O5|0,0,0,@12802,@12801 12801:O2|@12805,0 12802:O2|@12803,0 12803:O2|0,@12804 12804:O5|@12125,933,933,0,0 12805:O2|3,@12806 12806:S9|4d656d6f7279417267 12807:O1|@6379 12808:O5|0,0,0,@12810,@12809 12809:O2|@12813,0 12810:O2|@12811,0 12811:O2|0,@12812 12812:O5|@12125,934,934,0,0 12813:O2|3,@12814 12814:S18|4e6f6e41646472657373436f6e7374417267 12815:O5|0,0,0,@12817,@12816 12816:O2|@12820,0 12817:O2|@12818,0 12818:O2|0,@12819 12819:O5|@12125,932,932,0,0 12820:O2|3,@12821 12821:S11|5265676973746572417267 12822:S20|7072696e742d7265674f724d656d6f7279417267 12823:S21|7072696e747265674f724d656d6f72794172672829 12824:O2|@6380,@4678 12825:O5|0,0,0,@12827,@12826 12826:O2|@12830,0 12827:O2|@12828,0 12828:O2|0,@12829 12829:O5|@12125,683,683,0,0 12830:O2|3,@12831 12831:S6|496e64657831 12832:O5|0,0,0,@12827,@12833 12833:O2|@12834,0 12834:O2|3,@12835 12835:S6|496e64657832 12836:O5|0,0,0,@12827,@12837 12837:O2|@12838,0 12838:O2|3,@12839 12839:S6|496e64657834 12840:O5|0,0,0,@12827,@12841 12841:O2|@12842,0 12842:O2|3,@12843 12843:S6|496e64657838 12844:O5|0,0,0,@12827,@12845 12845:O2|@12846,0 12846:O2|3,@12847 12847:S7|4e6f496e646578 12848:S15|7072696e742d696e64657854797065 12849:O1|@6381 12850:O1|@6382 12851:S3|307778 12852:O5|0,0,0,@12854,@12853 12853:O2|@12857,0 12854:O2|@12855,0 12855:O2|0,@12856 12856:O5|@12125,204,204,0,0 12857:O2|3,@12858 12858:S10|47656e6572616c526567 12859:S12|7072696e742d67656e526567 12860:O1|@6383 12861:O30|@11854,@11855,@10165,@12786,@12107,@12863,@11857,@11856,@12864,@12865,@10389,@12867,@12869,@12871,@12873,@12874,@10068,@10070,@10368,@12876,@12233,@12231,@12862,@10166,@10390,@10413,@10701,@10504,@10505,@10491 12862:O2|0,6 12863:O2|1,@11955 12864:O2|1,@10070 12865:O2|1,@12866 12866:O2|1,1 12867:O2|1,@12868 12868:O2|3,1 12869:O2|1,@12870 12870:O2|4,1 12871:O2|1,@12872 12872:O2|5,1 12873:O2|1,@12224 12874:O2|1,@12875 12875:O2|7,1 12876:O2|0,3 12877:O2|@11854,@12878 12878:O2|@12786,0 12879:O1|@6384 12880:O5|0,0,0,@12882,@12881 12881:O2|@12885,0 12882:O2|@12883,0 12883:O2|0,@12884 12884:O5|@12776,34,34,0,0 12885:O2|3,@12886 12886:S4|50526567 12887:S10|7072696e742d70726567 12888:O1|@6385 12889:O2|3,@12890 12890:S6|73697a65203d 12891:O5|0,0,0,@12893,@12892 12892:O2|@12896,0 12893:O2|@12894,0 12894:O2|0,@12895 12895:O5|@12776,37,37,0,0 12896:O2|3,@12897 12897:S8|537461636b4c6f63 12898:S15|7072696e742d737461636b4c6f636e 12899:O4|@4611,@9978,@12901,@12900 12900:O5|@11304,861,0,861,0 12901:S13|4e6f74204249434c616d626461 12902:O1|@6386 12903:S34|4261636b656e64496e7465726d656469617465436f64652e704c6973742833292829 12904:O2|@9566,0 12905:S6|4445434c2023 12906:O2|3,@9575 12907:O2|3,@9576 12908:S7|282066726f6d20 12909:S11|2065786861757374697665 12910:O2|3,@12911 12911:S10|3d3e2064656661756c74 12912:O2|3,@12550 12913:O2|3,@12914 12914:S5|454c53453a 12915:O2|3,@12916 12916:S6|434153452028 12917:O2|3,@10960 12918:O2|3,@12919 12919:S3|494628 12920:O2|3,@12921 12921:S2|2428 12922:O2|@12924,@12923 12923:O2|@9546,0 12924:S10|52454355525349564528 12925:S5|434c4f5328 12926:S6|504152414d28 12927:S6|4c4f43414c28 12928:S9|494e44495245435428 12929:S3|434c3d 12930:S8|204c4f43414c533d 12931:S50|4261636b656e64496e7465726d656469617465436f64652e7072657474792831297072657474794172675479706573283129 12932:O2|3,@12933 12933:S5|415247533d 12934:O2|3,@12935 12935:S4|5245533d 12936:S6|20434c4f533d 12937:O2|@12938,0 12938:O2|3,@12939 12939:S9|297b4c414d4244417d 12940:O2|3,@12941 12941:S7|4c414d42444128 12942:S5|424c4f434b 12943:S11|434f4e5441494e45522023 12944:S6|4d555455414c 12945:O2|@10625,@12946 12946:O2|@12947,0 12947:O2|3,@12948 12948:S5|20414e4420 12949:S40|4261636b656e64496e7465726d656469617465436f64652e70726574747942696e64696e67283129 12950:S9|524543434f4e535452 12951:S33|4261636b656e64496e7465726d656469617465436f64652e707265747479283129 12952:S48|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e636f646547656e6572617465283329 12953:S61|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831296765744974656d283229 12954:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d62646173283129 12955:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283229 12956:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283129 12957:O1|@6422 12958:S81|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f7375726528392970726f636573736564426f64792d283129 12959:S64|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929 12960:S65|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f646528312970726f6365737344656373283129 12961:O4|@4611,@9978,@12963,@12962 12962:O5|@11280,207,0,207,0 12963:S30|4c69667465642066756e6374696f6e206f7574206f6620636f6e74657874 12964:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f6465283129 12965:S37|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f6479283529 12966:O4|@4611,@9978,@12968,@12967 12967:O5|@11280,481,0,481,0 12968:S33|434f4445545245455f4c414d4244415f4c4946543a636f646547656e6572617465 12969:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465546f436f6e7374616e74283329 12970:S65|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e7328342970726f6365737342696e64696e6773283129 12971:S47|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283429 12972:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d6264612834296c6f6f6b75704c6f63616c283129 12973:S60|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429636f6e746578742d283129 12974:S49|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429 12975:O1|@6434 12976:O1|@6435 12977:S68|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296578747261637450726f7073283129 12978:O2|@6437,@4619 12979:S48|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e73706c697450726f70732833292829 12980:S51|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e6d657267655475706c6550726f7073283229 12981:S53|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429 12982:S83|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229676574526573756c7473283229 12983:S70|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229 12984:O4|@4611,@9978,@12986,@12985 12985:O5|@11180,1441,0,1441,0 12986:S13|636865636b42696e64696e6773 12987:S81|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129636865636b42696e64696e6773283229 12988:O4|@4611,@9978,@12990,@12989 12989:O5|@11180,1428,0,1428,0 12990:S14|70726f636573734c616d62646173 12991:S65|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129 12992:S53|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e283429 12993:O2|3,@12994 12994:S19|4f7574707574206f66206f7074696d69736572 12995:S55|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f6365737354726565283429 12996:S41|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d69736572283429 12997:O1|@6450 12998:S36|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129 12999:S24|434f44455452454528292e67656e436f6465283329283129 13000:O1|@6453 13001:O5|0,0,0,@13003,@13002 13002:O2|@13006,0 13003:O2|@13004,0 13004:O2|0,@13005 13005:O5|@10099,186,186,0,0 13006:O2|3,@13007 13007:S9|556e56697369746564 13008:O5|0,0,0,@13003,@13009 13009:O2|@13010,0 13010:O2|3,@13011 13011:S14|5669736974656447656e6572616c 13012:O5|0,0,0,@13003,@13013 13013:O2|@13014,0 13014:O2|3,@13015 13015:S14|566973697465645370656369616c 13016:S11|7072696e742d7669736974 13017:O2|@6454,@13018 13018:O2|@6457,@13017 13019:S32|434f44455452454528292e67656e436f646528332966696e6444656373283129 13020:O4|@4611,@9978,@13022,@13021 13021:O5|@10099,234,0,234,0 13022:S36|646f47656e6572616c3a206e6f74204c6f61644c6f63616c206f7220436f6e7374616e74 13023:S41|434f44455452454528292e67656e436f646528332970726f6365737347656e416e6453706563283229 13024:S31|434f44455452454528292e67656e436f646528332961646444656373283129 13025:O4|@4611,@9978,@13027,@13026 13026:O5|@10099,274,0,274,0 13027:S31|526573756c7420766563746f72206973206e6f7420616e2061646472657373 13028:S21|434f44455452454528292e67656e436f6465283329 13029:O1|@6462 13030:S14|506f6c7953697a65446f75626c65 13031:S13|506f6c7953697a65466c6f6174 13032:O3|@13033,@10039,@10144 13033:S4|776f7264 13034:S14|4c61726765576f72642e776f7264 13035:O2|@13037,@13036 13036:O2|@13038,0 13037:S3|65786e 13038:O4|@13037,0,@10037,@13039 13039:O3|@13041,@13045,@13040 13040:O3|@13037,@10039,@10144 13041:O2|1,@13042 13042:O3|6,@13043,0 13043:O4|0,@4686,2,1 13044:O1|@6464 13045:O4|1,@4687,0,0 13046:O2|@13033,@13047 13047:O2|@13048,0 13048:O4|@13033,0,@10037,@13049 13049:O3|@13051,@13050,@13032 13050:O4|1,@4689,0,0 13051:O2|1,@13052 13052:O3|6,@13054,@13053 13053:O2|@13056,0 13054:O4|@13055,@4688,1,1 13055:O1|@6465 13056:O4|@4620,@9574,@13057,0 13057:O3|3,4,@13058 13058:O5|@4965,@13060,@10093,@13059,@10091 13059:O2|@13054,@13055 13060:O2|@4967,@13061 13061:O2|@10163,@13062 13062:O2|@13063,@10173 13063:O2|@13064,@10093 13064:O3|0,@4688,0 13065:O1|@6466 13066:S7|52756e43616c6c 13067:S13|756e7361666543617374283129 13068:S10|756e7361666543617374 13069:S7|697353686f7274 13070:S24|434f44455452454528292e6d6b42696e617279466e283129 13071:S26|545950455f5452454528292e6d6170746f5265636f7264283229 13072:S9|706f696e7465724571 13073:S15|6c6f61644f7065726174696f6e2829 13074:O3|13,@10757,@13075 13075:O3|@10398,@13076,0 13076:O1|@10400 13077:O2|@13078,0 13078:O5|5,0,@13033,@13048,0 13079:S8|6c6f6164576f7264 13080:O3|13,@12875,@13075 13081:S21|6c6f6164576f726446726f6d496d6d757461626c65 13082:O3|13,@11162,@13075 13083:S8|6c6f616442797465 13084:O3|13,@12224,@13075 13085:S21|6c6f61644279746546726f6d496d6d757461626c65 13086:S16|6d656d6f727943656c6c4c656e677468 13087:S15|6d656d6f727943656c6c466c616773 13088:O2|@13090,@13089 13089:O7|@13090,2,@13092,@13078,@13091,0,0 13090:S12|6279746573506572576f7264 13091:O2|@10038,0 13092:O2|1,@13093 13093:O3|6,4,0 13094:S16|73746f72654f7065726174696f6e2829 13095:O4|18,@10757,@13096,@13075 13096:O4|11,@10067,2,0 13097:O5|5,0,@10180,@10181,0 13098:S9|73746f7265576f7264 13099:O4|18,@11162,@13096,@13075 13100:S9|73746f726542797465 13101:S15|636c6561724d757461626c65426974 13102:O2|@13078,@13103 13103:O2|@13078,0 13104:S18|616c6c6f63617465427974654d656d6f7279 13105:O2|12,@13106 13106:O8|@13108,@13107,0,0,@10565,0,0,1 13107:S20|416c6c6f63617465576f72644d656d6f72792829 13108:O4|0,@10400,@13096,@10398 13109:S18|616c6c6f63617465576f72644d656d6f7279 13110:S16|626c6f636b4f7065726174696f6e2829 13111:O5|4,1,@13113,@13114,@13112 13112:O3|@10398,@13117,0 13113:O4|11,@10067,4,0 13114:O3|@10400,@13115,0 13115:O1|@13116 13116:O4|11,@10067,3,0 13117:O1|@13096 13118:O2|@13078,@13102 13119:S15|62797465566563746f72457175616c 13120:O5|4,0,@13113,@13114,@13112 13121:S17|62797465566563746f72436f6d70617265 13122:O5|4,@10423,@13113,@13114,@13112 13123:S9|6d6f76654279746573 13124:O5|4,@9922,@13113,@13114,@13112 13125:S9|6d6f7665576f726473 13126:O3|13,@10341,@13075 13127:O2|@13128,@13103 13128:O5|5,0,@10313,@10314,0 13129:S12|6c6f6164556e746167676564 13130:O4|18,@10341,@13096,@13075 13131:O2|@13128,@13102 13132:S13|73746f7265556e746167676564 13133:O3|6,@13134,0 13134:O1|@6498 13135:O4|@6499,@12861,@13205,@13136 13136:O1|@6507 13137:O2|@13138,0 13138:O3|31,@10071,@13139 13139:O4|1,@10071,@10755,0 13140:O3|31,@11957,@13141 13141:O4|1,@11955,@10755,24 13142:O3|48,@13143,@11957 13143:O3|@11955,@10755,32 13144:O3|31,@10757,@12036 13145:O2|@13147,@13146 13146:O2|@13150,@13149 13147:O2|35,@13148 13148:O4|1,@10757,@10755,4 13149:O2|@13153,@13152 13150:O2|35,@13151 13151:O2|3,@10762 13152:O2|@13155,0 13153:O2|35,@13154 13154:O2|3,@10068 13155:O2|35,@13156 13156:O4|1,@11955,@10755,28 13157:O4|@4611,@9978,@13159,@13158 13158:O5|@13160,182,0,182,0 13159:S43|72747343616c6c3a204162692f617267756d656e7420636f756e74206e6f7420696d706c656d656e746564 13160:S55|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836464f524549474e43414c4c2e736d6c 13161:O2|@13163,@13162 13162:O2|@13165,@13164 13163:O3|31,@10071,@13156 13164:O2|@13167,@13166 13165:O3|31,@10166,@13154 13166:O2|@13169,0 13167:O3|31,@12866,@13168 13168:O2|3,@10070 13169:O3|31,@10070,@13151 13170:O2|@13163,@13171 13171:O2|@13165,@13166 13172:O2|@13163,@13173 13173:O2|@13165,0 13174:O2|@13163,0 13175:O2|@13177,@13176 13176:O2|@13179,@13178 13177:O3|31,@10757,@13156 13178:O2|@13181,@13180 13179:O3|31,@11162,@13154 13180:O2|@13182,0 13181:O3|31,@10166,@13151 13182:O3|31,@10071,@13168 13183:O2|@13177,@13184 13184:O2|@13179,@13185 13185:O2|@13181,0 13186:O2|@13177,@13187 13187:O2|@13179,0 13188:O2|@13177,0 13189:O2|@13191,@13190 13190:O2|@13193,@13192 13191:O2|24,0 13192:O2|@12055,0 13193:O3|31,@10068,@13194 13194:O4|1,@11955,@10755,16 13195:O4|8,9,0,1 13196:O5|2,2,@11955,16,1 13197:O2|@13199,@13198 13198:O2|@13200,0 13199:O2|6,@11855 13200:O3|31,@11957,@13201 13201:O2|3,@10757 13202:S17|556e6b6e6f776e20414249207479706520 13203:O5|@13160,84,0,84,0 13204:S31|583836464f524549474e43414c4c28292e72747343616c6c46756c6c283329 13205:O1|@6506 13206:S10|506f6c79476574414249 13207:S26|506f6c79437265617465456e747279506f696e744f626a656374 13208:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6543616c6c283129283129283129 13209:S12|72747343616c6c46756c6c31 13210:O3|6,@13211,0 13211:O1|@6510 13212:O4|@6511,@12861,@13205,@13136 13213:O2|@13215,@13214 13214:O2|@13217,@13216 13215:O3|31,@10166,@13148 13216:O2|@13219,@13218 13217:O2|35,@12031 13218:O2|@13217,@13221 13219:O3|31,@10166,@13220 13220:O4|1,@10757,@10755,8 13221:O2|@13150,@13222 13222:O2|@13153,0 13223:O2|@13224,@13185 13224:O3|31,@10071,@13154 13225:O2|@13227,@13226 13226:O2|@13229,@13228 13227:O3|31,@10757,@13154 13228:O2|@13231,@13230 13229:O3|31,@11162,@13151 13230:O2|@13232,0 13231:O3|31,@10166,@13168 13232:O3|31,@10071,@13233 13233:O2|3,@12866 13234:O2|@13215,@13218 13235:O2|@13227,@13236 13236:O2|@13229,@13237 13237:O2|@13231,0 13238:O2|@13227,@13239 13239:O2|@13229,0 13240:O2|@13224,0 13241:O2|@13227,0 13242:O4|@4611,@9978,@13159,@13243 13243:O5|@13160,281,0,281,0 13244:S31|583836464f524549474e43414c4c28292e72747343616c6c46617374283329 13245:S12|72747343616c6c4661737431 13246:O1|@6516 13247:S7|72747343616c6c 13248:S3|283129 13249:O2|@10403,0 13250:S50|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c6564283229 13251:O1|@6522 13252:O1|@6524 13253:O1|@6526 13254:O1|@6528 13255:O1|@6530 13256:O1|@6532 13257:S12|72747343616c6c46756c6c30 13258:S12|72747343616c6c4661737430 13259:S12|72747343616c6c46756c6c32 13260:S12|72747343616c6c4661737432 13261:S12|72747343616c6c46756c6c33 13262:S12|72747343616c6c4661737433 13263:S12|72747343616c6c4661737434 13264:O1|@6534 13265:S8|72756e5f63616c6c 13266:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c656457697468436f6e7461696e6572283329 13267:O2|@13269,@13268 13268:O2|@13272,@13271 13269:O2|@13270,1 13270:S9|496e74657272757074 13271:O2|@13275,@13274 13272:O2|@13273,4 13273:S4|53697a65 13274:O2|@13278,@13277 13275:O2|@13276,100 13276:S4|42696e64 13277:O2|@13280,@13279 13278:O2|@10830,7 13279:O2|@13283,@13282 13280:O2|@13281,101 13281:S5|4d61746368 13282:O2|@13285,0 13283:O2|@13284,5 13284:S8|4f766572666c6f77 13285:O2|@13286,11 13286:S9|537562736372697074 13287:O5|5,0,@13037,@13038,0 13288:S6|537973457272 13289:O3|@13290,12,@13128 13290:S6|546872656164 13291:O3|@13292,23,@13128 13292:S7|466f726569676e 13293:O3|@13294,10,@13128 13294:S8|5857696e646f7773 13295:O3|@13296,8,@13128 13296:S10|436f6e76657273696f6e 13297:O3|@13298,103,@13128 13298:S4|4661696c 13299:O1|@6541 13300:S8|4c61726765496e74 13301:O2|@10033,@13302 13302:O2|@10033,0 13303:S11|63616c6c51756f7452656d 13304:O2|@10035,@13305 13305:O2|@10034,0 13306:O2|1,3 13307:O2|@13308,0 13308:O3|20,@13309,0 13309:O2|@10398,@13310 13310:O2|@10400,0 13311:O4|5,@13313,@13312,@10072 13312:O3|21,@10400,5 13313:O3|21,@10398,5 13314:S9|417262697472617279 13315:S27|434f44455452454528292e6d6b417262697472617279466e283129 13316:S4|6c657373 13317:S7|67726561746572 13318:S6|6c6573734571 13319:S9|677265617465724571 13320:S3|616464 13321:S8|7375627472616374 13322:S8|6d756c7469706c79 13323:O1|@6546 13324:S8|4669786564496e74 13325:O2|@10146,@13326 13326:O2|@10146,0 13327:O2|@10035,@13328 13328:O2|@10147,0 13329:O3|9,3,1 13330:O3|9,4,1 13331:O3|9,1,1 13332:O3|9,2,1 13333:S2|3e3d 13334:O2|1,6 13335:S4|71756f74 13336:O2|1,5 13337:S3|72656d 13338:O1|@6547 13339:O2|3,3 13340:O2|3,4 13341:O2|3,2 13342:S3|646976 13343:S3|6d6f64 13344:S3|6f7262 13345:S4|616e6462 13346:O2|4,2 13347:S4|786f7262 13348:S2|3c3c 13349:O2|5,2 13350:S2|3e3e 13351:S3|7e3e3e 13352:O1|@6548 13353:S11|746f4c61726765576f7264 13354:S12|746f4c61726765576f726458 13355:S13|66726f6d4c61726765576f7264 13356:O3|9,3,0 13357:O3|9,4,0 13358:O3|9,1,0 13359:O3|9,2,0 13360:O2|8,0 13361:O2|8,6 13362:O2|8,3 13363:O2|8,1 13364:O2|8,2 13365:O2|10,1 13366:O2|10,0 13367:O2|10,2 13368:O2|11,0 13369:O2|11,2 13370:O2|11,1 13371:O1|@6549 13372:S4|43686172 13373:O2|@13375,@13374 13374:O2|@13375,0 13375:O5|5,0,@10292,@10293,0 13376:O1|@6550 13377:S6|537472696e67 13378:O1|@6551 13379:O3|6,@13380,0 13380:O1|@6552 13381:O4|@6553,@12861,@13205,@13136 13382:O2|@13384,@13383 13383:O2|@13387,@13386 13384:O3|17,@13385,0 13385:O3|@10068,@10755,0 13386:O2|@13388,0 13387:O4|4,4,@11957,@10534 13388:O4|21,1,@13389,0 13389:O3|@11957,@10755,0 13390:O2|@13391,0 13391:O4|53,5,0,@13392 13392:O4|1,@10068,@10755,0 13393:O3|@10068,@10755,-4 13394:O2|@13396,@13395 13395:O2|@12020,0 13396:O4|21,1,@13385,0 13397:O4|0,2,@10068,0 13398:O2|@13397,@13399 13399:O2|@13401,@13400 13400:O2|@13403,@13402 13401:O3|43,@13393,2 13402:O2|@13405,@13395 13403:O4|47,2,@13404,1 13404:O3|@10068,@10755,-1 13405:O4|55,@13385,0,0 13406:O2|@13407,0 13407:O2|39,0 13408:S43|583836464f524549474e43414c4c28292e72747343616c6c46617374466c6f6174746f466c6f6174283229 13409:S53|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b65466173745265616c5265616c43616c6c283129 13410:S19|72747343616c6c466173745265616c5265616c 13411:O3|6,@13412,0 13412:O1|@6559 13413:O4|@6560,@12861,@13205,@13136 13414:S45|583836464f524549474e43414c4c28292e72747343616c6c4661737447656e6572616c746f466c6f6174283229 13415:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6546617374496e74496e665265616c43616c6c283129 13416:S21|72747343616c6c46617374496e74496e665265616c 13417:O3|2,@13128,@13418 13418:O3|2,@13419,@13419 13419:O5|5,0,@10353,@10354,0 13420:S14|72747343616c6c46617374465f46 13421:O3|2,@13128,@13422 13422:O3|2,@10033,@13419 13423:S14|72747343616c6c46617374495f46 13424:O2|@13419,@13425 13425:O2|@13419,0 13426:O2|7,3 13427:O2|7,4 13428:O2|7,2 13429:S2|3d3d 13430:O2|6,6 13431:O3|2,@13419,@13419 13432:S3|616273 13433:O3|2,@10146,@13419 13434:S12|66726f6d4669786564496e74 13435:O1|@6566 13436:S9|426f6f747374726170 13437:O1|@6567 13438:O1|@6568 13439:O2|@10749,@10766 13440:O2|12,@13441 13441:O8|@10169,@10155,0,0,@13442,0,0,1 13442:O2|@10071,@10565 13443:O3|@13444,@10039,@10144 13444:S6|746872656164 13445:O2|1,@13446 13446:O2|12,@13447 13447:O8|@10997,@13448,0,0,@10565,0,0,1 13448:S13|47657454687265616449642829 13449:S4|73656c66 13450:O3|2,@13451,@13078 13451:O5|5,@13103,@10712,@10710,@13091 13452:S10|61746f6d6963496e6372 13453:S10|61746f6d696344656372 13454:O3|2,@13451,@13097 13455:S11|61746f6d69635265736574 13456:O1|@6569 13457:S13|466f726569676e4d656d6f7279 13458:O3|13,@10089,@13075 13459:S4|67657438 13460:O3|13,@9922,@13075 13461:S5|6765743136 13462:O3|13,@10423,@13075 13463:S5|6765743332 13464:O3|13,@10093,@13075 13465:S5|6765743634 13466:O3|13,@12276,@13075 13467:S8|676574466c6f6174 13468:O3|13,@10755,@13075 13469:S9|676574446f75626c65 13470:O4|18,@10089,@13096,@13075 13471:S4|73657438 13472:O4|18,@9922,@13096,@13075 13473:S5|7365743136 13474:O4|18,@10423,@13096,@13075 13475:S5|7365743332 13476:O4|18,@10093,@13096,@13075 13477:S5|7365743634 13478:O2|@13078,@13479 13479:O2|@13419,0 13480:O4|18,@12276,@13096,@13075 13481:S8|736574466c6f6174 13482:O4|18,@10755,@13096,@13075 13483:S9|736574446f75626c65 13484:O3|6,@13485,0 13485:O1|@6574 13486:S28|4d6973632e756e657363617065537472696e67283129726472283129 13487:O2|@6577,@9476 13488:S11|7265616448657827283429 13489:S1|0d 13490:S1|0c 13491:S1|0b 13492:S1|0a 13493:S1|09 13494:S1|08 13495:S1|07 13496:S11|7363616e42617365283229 13497:O4|8,@13296,@13499,@13498 13498:O5|@13500,91,0,91,0 13499:S23|496e76616c696420737472696e6720636f6e7374616e74 13500:S27|6d6c736f757263652f4d4c436f6d70696c65722f4d6973632e4d4c 13501:S34|4d6973632e756e657363617065537472696e67283129636f6e764368617273283129 13502:S22|4d6973632e756e657363617065537472696e67283129 13503:O3|6,@13504,0 13504:O1|@6579 13505:S2|3078 13506:S3|7e3078 13507:S29|537472696e674376742e7363616e537472696e67283229726472283129 13508:O9|@6581,268435456,7,1000000000,9,134217728,9,536870912,29 13509:S34|4c61726765496e742e7363616e283329726561645f6865785f646967697473283329 13510:S16|4c61726765496e742e7363616e283329 13511:O4|5,@9497,0,@13512 13512:O5|@9962,352,0,352,0 13513:O4|8,@13296,@13515,@13514 13514:O5|@13516,910,0,910,0 13515:S24|496e76616c696420696e746567657220636f6e7374616e74 13516:S34|6d6c736f757263652f4d4c436f6d70696c65722f494e495449414c4953455f2e4d4c 13517:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229696e744f66537472696e67283129 13518:O3|6,@13519,0 13519:O1|@6583 13520:S29|7363616e576f7264283329726561645f6865785f646967697473283329 13521:S11|7363616e576f7264283329 13522:B4|ffffff7f 13523:O4|5,@9497,0,@13524 13524:O5|@13525,201,0,201,0 13525:S21|2e2f62617369732f4c61726765576f72642e736d6c 13526:O4|8,@13296,@13528,@13527 13527:O5|@13516,921,0,921,0 13528:S21|496e76616c696420776f726420636f6e7374616e74 13529:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229776f72644f66537472696e67283129 13530:O2|@13532,@13531 13531:O7|@13532,2,@13533,@13128,@10037,0,0 13532:S14|636f6e76537472696e674e616d65 13533:O2|1,@13534 13534:O3|6,@13535,0 13535:S10|636f6e76537472696e67 13536:O2|@13538,@13537 13537:O7|@13538,2,@13540,@13539,@10037,0,0 13538:S7|636f6e76496e74 13539:O3|2,@13128,@10033 13540:O2|1,@13503 13541:O2|@13543,@13542 13542:O7|@13543,2,@13545,@13544,@10037,0,0 13543:S8|636f6e76576f7264 13544:O3|2,@13128,@13078 13545:O2|1,@13518 13546:O2|@13535,@13547 13547:O7|@13535,2,@13549,@13548,@10037,0,0 13548:O3|2,@13128,@13128 13549:O2|1,@13484 13550:S23|696e744973417262697472617279507265636973696f6e 13551:O2|@6587,@4690 13552:S37|5052494e545f5441424c4528292e6164644f7665726c6f616428332966696c746572283129 13553:S28|5052494e545f5441424c4528292e6164644f7665726c6f6164283329 13554:O2|@13556,@13555 13555:O2|@13560,0 13556:O3|13,@12875,@13557 13557:O3|@13559,@13558,0 13558:O1|@10067 13559:O2|8,@13306 13560:O3|13,@12875,@13561 13561:O3|@13562,@13558,0 13562:O2|8,@12232 13563:O4|11,@13564,0,0 13564:O2|8,@10005 13565:O2|@13566,0 13566:O4|3,@10067,@10066,@13360 13567:O2|8,@12866 13568:O4|3,@10535,@10067,@10170 13569:O2|@10403,@13570 13570:O2|@13572,@13571 13571:O2|@10535,@13573 13572:O2|8,@10413 13573:O2|@10067,@13574 13574:O2|@10069,0 13575:S11|766563746f722d6c6f6f70 13576:O4|@4611,@9978,@13578,@13577 13577:O5|@10099,520,0,520,0 13578:S36|6d6b4d757475616c446563733a20656d707479206465636c61726174696f6e206c697374 13579:O4|@4611,@9978,@13581,@13580 13580:O5|@10099,524,0,524,0 13581:S53|6d6b4d757475616c446563733a20526563757273697665206465636c61726174696f6e206973206e6f7420612066756e6374696f6e 13582:O4|1,0,1,@13583 13583:O3|21,@10069,8 13584:O4|1,0,0,@13585 13585:O3|21,@10067,8 13586:O2|@10072,0 13587:O4|3,@10403,@10404,@10170 13588:S9|766563746f722d6571 13589:S11|766563746f722d65712829 13590:O1|@6594 13591:O1|@6595 13592:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129283129 13593:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129 13594:S12|626f7865642d766563746f72 13595:S11|73697a652d766563746f72 13596:O3|@13597,@10039,@10144 13597:S6|766563746f72 13598:S13|62797465566563746f722d6571 13599:O3|15,@13601,@13600 13600:O4|5,@13587,@13603,@10072 13601:O2|@13584,@13602 13602:O2|@13582,0 13603:O3|15,@13605,@13604 13604:O5|4,1,@13572,@13609,@13608 13605:O2|@13606,0 13606:O4|1,0,2,@13607 13607:O4|3,@13093,@10403,@13362 13608:O3|@10067,@10756,0 13609:O3|@10069,@10756,0 13610:O1|@6599 13611:O3|@13612,@10039,@10144 13612:S10|62797465566563746f72 13613:O2|@13615,@13614 13614:O2|@13616,0 13615:S5|6172726179 13616:O4|@13615,@13618,@10037,@13617 13617:O3|@13621,@13638,@13620 13618:O2|@13619,0 13619:O2|@4691,79992 13620:O3|@13639,@10039,@10144 13621:O2|1,@13622 13622:O3|6,@13624,@13623 13623:O2|@13629,0 13624:O4|@13626,@4692,@13628,@13625 13625:O1|@6603 13626:O1|@6600 13627:O1|@6601 13628:O1|@6602 13629:O4|@4620,@9574,@13630,0 13630:O3|3,4,@13631 13631:O5|@4965,@13633,@10753,@13632,@10091 13632:O4|@13624,@13626,@13628,@13625 13633:O2|@4967,@13634 13634:O2|@10738,@13635 13635:O2|@13636,@10742 13636:O2|@13637,@10093 13637:O3|0,@4692,0 13638:O4|1,@4693,1,0 13639:S11|41727261792e6172726179 13640:O2|@13615,@13641 13641:O2|@13642,0 13642:O4|@13615,@13644,@10037,@13643 13643:O3|@13647,@13664,@13646 13644:O2|@13645,0 13645:O2|@4694,79992 13646:O3|@13665,@10039,@10144 13647:O2|1,@13648 13648:O3|6,@13650,@13649 13649:O2|@13655,0 13650:O4|@13652,@4695,@13654,@13651 13651:O1|@6607 13652:O1|@6604 13653:O1|@6605 13654:O1|@6606 13655:O4|@4620,@9574,@13656,0 13656:O3|3,4,@13657 13657:O5|@4965,@13659,@10753,@13658,@10091 13658:O4|@13650,@13652,@13654,@13651 13659:O2|@4967,@13660 13660:O2|@10738,@13661 13661:O2|@13662,@10742 13662:O2|@13663,@10093 13663:O3|0,@4695,0 13664:O4|1,@4696,1,0 13665:S12|4172726179322e6172726179 13666:O2|@13668,@13667 13667:O2|@13669,0 13668:S9|627974654172726179 13669:O4|@13668,0,@10037,@13670 13670:O3|@13672,@13689,@13671 13671:O3|@13668,@10039,@10144 13672:O2|1,@13673 13673:O3|6,@13675,@13674 13674:O2|@13677,0 13675:O4|@13676,@4697,2,1 13676:O1|@6608 13677:O4|@4620,@9574,@13678,0 13678:O3|3,4,@13679 13679:O5|@4965,@13681,@10093,@13680,@10091 13680:O2|@13675,@13676 13681:O2|@4967,@13682 13682:O2|@10163,@13683 13683:O2|@13685,@13684 13684:O2|@13687,@10126 13685:O2|@13686,@10093 13686:O3|0,@4697,0 13687:O2|@13688,@10093 13688:O3|0,2,0 13689:O4|1,@4698,0,0 13690:O2|3,6 13691:S2|3c3e 13692:O1|@6609 13693:S6|506f6c794d4c 13694:O1|@6610 13695:S9|4e616d655370616365 13696:O1|@6611 13697:S6|56616c756573 13698:O1|@6612 13699:S11|54797065436f6e73747273 13700:O1|@6613 13701:S7|496e6669786573 13702:O1|@6614 13703:S10|53747275637475726573 13704:O1|@6615 13705:S10|5369676e617475726573 13706:O1|@6616 13707:S8|46756e63746f7273 13708:O1|@6617 13709:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f747970655072696e746572283129 13710:O2|@10566,@10766 13711:O3|@13712,@10039,@10144 13712:S29|506f6c794d4c2e4e616d6553706163652e56616c7565732e76616c7565 13713:S5|76616c7565 13714:O3|@13715,@10039,@10144 13715:S38|506f6c794d4c2e4e616d6553706163652e56616c7565732e7479706545787072657373696f6e 13716:S14|7479706545787072657373696f6e 13717:O3|@13718,@10039,@10144 13718:S39|506f6c794d4c2e4e616d6553706163652e54797065436f6e737472732e74797065436f6e737472 13719:S10|74797065436f6e737472 13720:O3|@13721,@10039,@10144 13721:S31|506f6c794d4c2e4e616d6553706163652e496e66697865732e666978697479 13722:S6|666978697479 13723:O3|@13724,@10039,@10144 13724:S40|506f6c794d4c2e4e616d6553706163652e5369676e6174757265732e7369676e617475726556616c 13725:S12|7369676e617475726556616c 13726:O3|@13727,@10039,@10144 13727:S40|506f6c794d4c2e4e616d6553706163652e537472756374757265732e73747275637475726556616c 13728:S12|73747275637475726556616c 13729:O3|@13730,@10039,@10144 13730:S36|506f6c794d4c2e4e616d6553706163652e46756e63746f72732e66756e63746f7256616c 13731:S10|66756e63746f7256616c 13732:S3|56616c 13733:S4|54797065 13734:S3|466978 13735:S6|537472756374 13736:S3|536967 13737:S5|46756e6374 13738:S5|656e746572 13739:S40|545950455f5452454528292e6d6b4c6162656c456e74727928332973747269705a65726f73283129 13740:S6|6c6f6f6b7570 13741:S3|616c6c 13742:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296372656174654669656c6473283229 13743:S35|545950455f5452454528292e736f72744c6162656c73283129656e7465722833292829 13744:S25|545950455f5452454528292e736f72744c6162656c73283129 13745:O3|@13746,@10039,@10144 13746:S26|506f6c794d4c2e4e616d6553706163652e6e616d655370616365 13747:S9|6e616d655370616365 13748:S6|76616c756573 13749:S5|6669786573 13750:S5|7479706573 13751:S10|73747275637475726573 13752:S10|7369676e617475726573 13753:S8|66756e63746f7273 13754:O2|@13756,@13755 13755:O2|@13757,0 13756:S8|6c6f636174696f6e 13757:O4|@13756,0,@10037,@13758 13758:O3|@10184,@13760,@13759 13759:O3|@13783,@10039,@10144 13760:O3|2,0,@13761 13761:O3|3,@13763,@13762 13762:O3|0,@13778,1 13763:O2|@13765,@13764 13764:O2|@13768,@13767 13765:O2|@13766,@13128 13766:S4|66696c65 13767:O2|@13771,@13770 13768:O2|@13769,@10146 13769:S7|656e644c696e65 13770:O2|@13774,@13773 13771:O2|@13772,@10146 13772:S9|73746172744c696e65 13773:O2|@13776,0 13774:O2|@13775,@10146 13775:S11|656e64506f736974696f6e 13776:O2|@13777,@10146 13777:S13|7374617274506f736974696f6e 13778:O2|@13766,@13779 13779:O2|@13769,@13780 13780:O2|@13772,@13781 13781:O2|@13775,@13782 13782:O2|@13777,0 13783:S15|506f6c794d4c2e6c6f636174696f6e 13784:O1|@6625 13785:S17|4465627567676572496e74657266616365 13786:O3|@13787,@10039,@10144 13787:S41|506f6c794d4c2e4465627567676572496e746572666163652e6c6f636174696f6e50726f704c697374 13788:S16|6c6f636174696f6e50726f704c697374 13789:O3|@13790,@10039,@10144 13790:S31|506f6c794d4c2e4465627567676572496e746572666163652e747970654964 13791:S6|747970654964 13792:O3|@13793,@10039,@10144 13793:S36|506f6c794d4c2e4465627567676572496e746572666163652e6d616368696e65576f7264 13794:S11|6d616368696e65576f7264 13795:O3|@13796,@10039,@10144 13796:S34|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065 13797:S9|6c6f63616c54797065 13798:O3|@13799,@10039,@10144 13799:S40|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065436f6e737472 13800:S15|6c6f63616c54797065436f6e737472 13801:O3|@13802,@10039,@10144 13802:S33|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c536967 13803:S8|6c6f63616c536967 13804:O3|@13805,@10039,@10144 13805:S37|506f6c794d4c2e4465627567676572496e746572666163652e656e7669726f6e456e747279 13806:S12|656e7669726f6e456e747279 13807:O5|5,0,@13756,@13757,@10037 13808:S14|456e76456e6446756e6374696f6e 13809:S12|456e76457863657074696f6e 13810:S16|456e76537461727446756e6374696f6e 13811:S12|456e76537472756374757265 13812:S10|456e7654436f6e737472 13813:S9|456e76547970656964 13814:S10|456e7656436f6e737472 13815:S8|456e7656616c7565 13816:S38|545950455f5452454528292e6d616b654571756976616c656e74283229676574417267283129 13817:O4|101,@13819,0,@13818 13818:O5|@13820,90,0,90,0 13819:S5|4d61746368 13820:S32|6d6c736f757263652f4d4c436f6d70696c65722f545950455f545245452e4d4c 13821:S36|545950455f5452454528292e67656e6572616c6973655479706573283329747673283129 13822:O1|@6633 13823:S47|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129283129 13824:S39|545950455f5452454528292e6576656e7475616c283129616464546f496e7374616e6365283229 13825:S23|545950455f5452454528292e6576656e7475616c283129 13826:O4|@4611,@9978,@13828,@13827 13827:O5|@13820,776,0,776,0 13828:S27|636f7079547970653a204f7665726c6f616453657420666f756e64 13829:O1|@6634 13830:S40|545950455f5452454528292e636f707954797065283329636f70795265636f72644c697374283129 13831:S34|545950455f5452454528292e636f707954797065283329636f70794c697374283129 13832:S23|545950455f5452454528292e636f707954797065283329 13833:S44|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129 13834:O1|@6639 13835:S40|545950455f5452454528292e67656e6572616c6973655479706573283329636f706965642d283129 13836:S30|545950455f5452454528292e67656e6572616c6973655479706573283329 13837:O4|@4611,@9978,@13839,@13838 13838:O5|@13820,1594,0,1594,0 13839:S35|6d616b654571756976616c656e743a204e6f74206120747970652066756e6374696f6e 13840:S30|44415441545950455f52455028292e6765745475706c654b696e64283129 13841:O2|@10566,@10066 13842:S10|626f7865642f73697a65 13843:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707231283329 13844:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707232283329 13845:S60|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963726561746552657072283229 13846:S47|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f736552657072283129 13847:S34|44415441545950455f52455028292e63686f6f7365436f6e73747252657072283329 13848:O2|@13807,0 13849:O3|@13850,@10039,@10144 13850:S35|506f6c794d4c2e4465627567676572496e746572666163652e64656275675374617465 13851:S10|64656275675374617465 13852:O1|@6651 13853:O4|@4611,@9978,@13855,@13854 13854:O5|@13856,160,0,160,0 13855:S24|736561726368547970653a205479706546756e6374696f6e 13856:S33|6d6c736f757263652f4d4c436f6d70696c65722f44454255474745525f2e736d6c 13857:S33|44454255474745525f28292e736561726368547970652834296d61746368283129 13858:S25|44454255474745525f28292e736561726368456e7673283329 13859:S21|636f6465466f72556e6971756549642d657175616c 13860:O2|@13861,@13710 13861:O4|0,@10223,@13862,@10066 13862:O2|12,@13863 13863:O8|@13865,@13864,0,0,@10565,1,0,1 13864:S13|7072696e742d64656661756c74 13865:O3|6,@10050,0 13866:O4|@4611,@9978,@13868,@13867 13867:O5|@10264,347,0,347,0 13868:S18|6973457175616c6974793a2054797065466e 13869:S25|44454255474745525f28292e73656172636854797065283429 13870:S35|44454255474745525f28292e72756e54696d6554797065283229636f70794964283129 13871:O1|@6659 13872:S32|44454255474745525f28292e72756e54696d6554797065283229283129283129 13873:O1|@6660 13874:O1|@6661 13875:O1|@6663 13876:S56|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129283129 13877:S53|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129 13878:O1|@6664 13879:S27|5554494c49544945535f28292e73706c6974537472696e67283229 13880:O1|@6666 13881:S40|545950455f5452454528292e657175616c54797065496473283229657175616c5479706573283229 13882:S27|545950455f5452454528292e657175616c54797065496473283229 13883:S38|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529 13884:S29|44454255474745525f28292e72756e54696d6554797065283229283129 13885:O1|@6668 13886:S27|44454255474745525f28292e6d616b6556616c7565283129283129 13887:S24|44454255474745525f28292e6d616b6556616c7565283129 13888:S9|6d616b6556616c7565 13889:O1|@6669 13890:O1|@6673 13891:O1|@6674 13892:O1|@6675 13893:S31|44454255474745525f28292e6d616b65457863657074696f6e283129283129 13894:S28|44454255474745525f28292e6d616b65457863657074696f6e283129 13895:S13|6d616b65457863657074696f6e 13896:O1|@6676 13897:O1|@6680 13898:O1|@6681 13899:O1|@6682 13900:S33|44454255474745525f28292e6d616b65436f6e7374727563746f72283129283129 13901:S30|44454255474745525f28292e6d616b65436f6e7374727563746f72283129 13902:S15|6d616b65436f6e7374727563746f72 13903:O1|@6683 13904:O1|@6687 13905:O1|@6688 13906:O1|@6689 13907:S36|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129283129 13908:S33|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129 13909:S18|6d616b65416e6f6e796d6f757356616c7565 13910:O1|@6690 13911:O3|@9473,@10039,@10144 13912:S40|44454255474745525f28292e6d616b65537472756374757265283529676574467265654964283129 13913:O1|@6695 13914:S42|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f70794964283129 13915:O1|@6698 13916:S51|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129283129 13917:O1|@6699 13918:S48|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129 13919:O1|@6700 13920:S33|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129 13921:S26|545950455f5452454528292e636f6d706f73654d617073283329 13922:S29|545950455f5452454528292e636f6d706f73654d617073283129283129 13923:S31|44454255474745525f28292e6d616b65537472756374757265283129283129 13924:S28|44454255474745525f28292e6d616b65537472756374757265283129 13925:S13|6d616b65537472756374757265 13926:O1|@6701 13927:S32|44454255474745525f28292e6d616b6554797065436f6e737472283129283129 13928:S29|44454255474745525f28292e6d616b6554797065436f6e737472283129 13929:S14|6d616b6554797065436f6e737472 13930:O7|@9473,2,@10184,@13097,0,0,0 13931:S9|756e697456616c7565 13932:O2|@13128,@13848 13933:O2|@6703,@4699 13934:S19|44454255474745525f28292e77726170283229 13935:S22|44454255474745525f28292e77726170283129283129 13936:S25|44454255474745525f28292e7365744f6e456e747279283129 13937:S10|7365744f6e456e747279 13938:O2|@6706,@4700 13939:S24|44454255474745525f28292e7365744f6e45786974283129 13940:S9|7365744f6e45786974 13941:O3|2,@13287,@13097 13942:O2|@6708,@4701 13943:S36|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129283129 13944:S33|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129 13945:S18|7365744f6e45786974457863657074696f6e 13946:O2|@13807,@13947 13947:O2|@13948,0 13948:O5|5,@13949,@10712,@10710,@10037 13949:O2|@10239,0 13950:O2|@6711,@4702 13951:S30|44454255474745525f28292e7365744f6e427265616b506f696e74283129 13952:S15|7365744f6e427265616b506f696e74 13953:O2|@13955,@13954 13954:O2|@13957,@13956 13955:S7|636f6e74657874 13956:O2|@14013,@14012 13957:O4|@13955,0,@10037,@13958 13958:O3|@13960,@14010,@13959 13959:O3|@14011,@10039,@10144 13960:O2|1,@13961 13961:O3|6,@13963,@13962 13962:O2|@13989,0 13963:O4|@13964,@4703,3,1 13964:O1|@6713 13965:S5|6e6f2d6571 13966:O1|@6714 13967:O2|@13968,0 13968:O2|3,@9630 13969:O2|3,@13970 13970:S15|7374617274506f736974696f6e203d 13971:O2|3,@13972 13972:S11|73746172744c696e65203d 13973:O2|3,@13974 13974:S6|66696c65203d 13975:O2|3,@13976 13976:S13|656e64506f736974696f6e203d 13977:O2|3,@13978 13978:S9|656e644c696e65203d 13979:O2|3,@9628 13980:O5|0,0,0,@10037,@13981 13981:O2|@13982,0 13982:O2|3,@13983 13983:S15|436f6e746578744c6f636174696f6e 13984:O5|0,0,0,@10037,@13985 13985:O2|@13986,0 13986:O2|3,@13987 13987:S15|436f6e7465787450726f7065727479 13988:S13|7072696e742d636f6e74657874 13989:O4|@4620,@9574,@13990,0 13990:O3|3,4,@13991 13991:O6|@4961,@10094,@13993,@14000,@13992,@10091 13992:O12|@14002,@14005,@14006,@14004,@14003,@14007,@14008,@14009,@14001,@13964,@4703,@13963 13993:O2|@4967,@13994 13994:O2|@13996,@13995 13995:O2|@13999,@10123 13996:O2|@10563,@13997 13997:O3|1,@13998,@10104 13998:O8|@10072,@13965,0,0,@13442,0,0,1 13999:O2|@10569,@10093 14000:O11|2,2,2,2,2,2,2,2,2,1,2 14001:O3|@14007,@14008,@14009 14002:O3|@13963,@14003,@14001 14003:O3|@14005,@14006,@14004 14004:O1|@6717 14005:O1|@6715 14006:O1|@6716 14007:O1|@6718 14008:O1|@6719 14009:O1|@6720 14010:O4|1,@4704,0,0 14011:S14|506f6c794d4c2e636f6e74657874 14012:O2|@14041,0 14013:O7|@13983,@10368,@14015,@14014,@10037,0,0 14014:O3|2,@13807,@14040 14015:O2|1,@14016 14016:O3|6,@14003,@14017 14017:O2|@14018,0 14018:O4|@4620,@9574,@14019,0 14019:O3|3,3,@14020 14020:O6|@4961,@10094,@14021,@14000,@13992,@10091 14021:O2|@4967,@14022 14022:O2|@14024,@14023 14023:O2|@14032,@14031 14024:O2|@10165,@14025 14025:O3|1,@14026,@10104 14026:O8|@14028,@13983,0,0,@14027,0,0,1 14027:O2|@14029,0 14028:O4|19,0,@10398,1 14029:O2|1,@14030 14030:O2|@10408,0 14031:O2|@14037,0 14032:O2|@10389,@14033 14033:O3|1,@14034,@10104 14034:O8|@14035,@13983,0,0,@10171,0,0,1 14035:O3|20,@14036,1 14036:O2|@10072,@10704 14037:O2|@10412,@14038 14038:O3|1,@14039,@10104 14039:O8|@10425,@13983,0,0,@10171,0,0,1 14040:O5|5,0,@13955,@13957,@10037 14041:O7|@13987,@10368,@14043,@14042,@10037,0,0 14042:O3|2,@14073,@14040 14043:O2|1,@14044 14044:O3|6,@14001,@14045 14045:O2|@14046,0 14046:O4|@4620,@9574,@14047,0 14047:O3|3,3,@14048 14048:O6|@4961,@10094,@14049,@14000,@13992,@10091 14049:O2|@4967,@14050 14050:O2|@14052,@14051 14051:O2|@14057,@14056 14052:O2|@10584,@14053 14053:O3|1,@14054,@10104 14054:O8|@14055,@13987,0,0,@14027,0,0,1 14055:O4|19,1,@10398,1 14056:O2|@14064,0 14057:O2|@14059,@14058 14058:O3|1,@14060,@10104 14059:O2|1,@10505 14060:O8|@14061,@13987,0,0,@10392,0,2,1 14061:O3|15,@10395,@14062 14062:O3|20,@14063,1 14063:O2|@10066,@10401 14064:O2|@10490,@14065 14065:O3|1,@14066,@10104 14066:O8|@14067,@13987,0,0,@10415,0,2,1 14067:O3|15,@14068,@10417 14068:O2|@14070,@14069 14069:O2|@14071,0 14070:O4|1,@10422,0,@10425 14071:O4|1,@10422,1,@14072 14072:O4|11,@10067,2,1 14073:O3|3,@14074,@10462 14074:O2|@14076,@14075 14075:O2|@14077,0 14076:O2|@10467,@13128 14077:O2|@10469,@13128 14078:O2|@14080,@14079 14079:O2|@14082,@14081 14080:S6|707265747479 14081:O2|@14150,@14149 14082:O4|@14080,0,@10037,@14083 14083:O3|@14085,@14147,@14084 14084:O3|@14148,@10039,@10144 14085:O2|1,@14086 14086:O3|6,@14088,@14087 14087:O2|@14114,0 14088:O4|@14089,@4705,3,1 14089:O1|@6721 14090:O2|@6722,@4705 14091:O4|0,@14092,3,1 14092:O1|@6723 14093:S12|7072696e742d707265747479 14094:O5|0,0,0,@10037,@14095 14095:O2|@14096,0 14096:O2|3,@14097 14097:S11|507265747479426c6f636b 14098:O5|0,0,0,@10037,@14099 14099:O2|@14100,0 14100:O2|3,@14101 14101:S11|507265747479427265616b 14102:O5|0,0,0,@10037,@14103 14103:O2|@14104,0 14104:O2|3,@14105 14105:S15|5072657474794c696e65427265616b 14106:O5|0,0,0,@10037,@14107 14107:O2|@14108,0 14108:O2|3,@14109 14109:S12|507265747479537472696e67 14110:O5|0,0,0,@10037,@14111 14111:O2|@14112,0 14112:O2|3,@14113 14113:S21|507265747479537472696e67576974685769647468 14114:O4|@4620,@9574,@14115,0 14115:O3|3,4,@14116 14116:O6|@4961,@10094,@14118,@14127,@14117,@10091 14117:O22|@14129,@14133,@14134,@14132,@14131,@14137,@14138,@14136,@14135,@14140,@14139,@14142,@14143,@14141,@14130,@14144,@14145,@14146,@14128,@14089,@4705,@14088 14118:O2|@4967,@14119 14119:O2|@14121,@14120 14120:O2|@14124,@10123 14121:O2|@14122,@13997 14122:O2|1,@14123 14123:O2|2,18 14124:O2|@14125,@10093 14125:O2|1,@14126 14126:O2|2,19 14127:O21|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2 14128:O3|@14144,@14145,@14146 14129:O6|@14088,@14131,@14135,@14139,@14130,@14128 14130:O3|@14142,@14143,@14141 14131:O3|@14133,@14134,@14132 14132:O1|@6727 14133:O1|@6725 14134:O1|@6726 14135:O3|@14137,@14138,@14136 14136:O1|@6730 14137:O1|@6728 14138:O1|@6729 14139:O2|@14140,@10093 14140:O1|@6731 14141:O1|@6734 14142:O1|@6732 14143:O1|@6733 14144:O1|@6735 14145:O1|@6736 14146:O1|@6737 14147:O4|1,@4706,0,0 14148:S13|506f6c794d4c2e707265747479 14149:O2|@14226,@14225 14150:O7|@14097,@12231,@14152,@14151,@10037,0,0 14151:O3|2,@14205,@14204 14152:O2|1,@14153 14153:O3|6,@14131,@14154 14154:O2|@14155,0 14155:O4|@4620,@9574,@14156,0 14156:O3|3,3,@14157 14157:O6|@4961,@10094,@14158,@14127,@14117,@10091 14158:O2|@4967,@14159 14159:O2|@14161,@14160 14160:O2|@14166,@14165 14161:O2|@10165,@14162 14162:O3|1,@14163,@10104 14163:O8|@14164,@14097,0,0,@14027,0,0,1 14164:O4|19,0,@10398,4 14165:O2|@14191,0 14166:O2|@10389,@14167 14167:O3|1,@14168,@10104 14168:O8|@14170,@14097,0,0,@14169,0,4,1 14169:O2|@14184,0 14170:O3|15,@14172,@14171 14171:O3|20,@14178,1 14172:O2|@10397,@14173 14173:O2|@10399,@14174 14174:O2|@14176,@14175 14175:O2|@14177,0 14176:O4|1,@10090,2,@13096 14177:O4|1,@10090,3,@13116 14178:O2|@10072,@14179 14179:O2|@10403,@14180 14180:O2|@10404,@14181 14181:O2|@13572,@14182 14182:O2|@14183,0 14183:O2|8,@10701 14184:O2|1,@14185 14185:O2|@10408,@14186 14186:O2|@10409,@14187 14187:O2|@14189,@14188 14188:O2|@14190,0 14189:O3|2,2,@10090 14190:O3|2,3,@10090 14191:O2|@10412,@14192 14192:O3|1,@14193,@10104 14193:O8|@14194,@14097,0,0,@10345,0,4,1 14194:O3|15,@14196,@14195 14195:O3|20,@14179,0 14196:O2|@14070,@14197 14197:O2|@14071,@14198 14198:O2|@14200,@14199 14199:O2|@14202,0 14200:O4|1,@10422,2,@14201 14201:O4|11,@10067,3,1 14202:O4|1,@10422,3,@14203 14203:O4|11,@10067,4,1 14204:O5|5,0,@14080,@14082,@10037 14205:O3|3,@14207,@14206 14206:O3|0,@14221,1 14207:O2|@14209,@14208 14208:O2|@14211,@14210 14209:O2|@10467,@10146 14210:O2|@14213,@14212 14211:O2|@10469,@10239 14212:O2|@14217,0 14213:O2|@14215,@14214 14214:O5|5,@14216,@10474,@10472,@10037 14215:S1|33 14216:O2|@14040,0 14217:O2|@14219,@14218 14218:O5|5,@14220,@10474,@10472,@10037 14219:S1|34 14220:O2|@14204,0 14221:O2|@10467,@14222 14222:O2|@10469,@14223 14223:O2|@14215,@14224 14224:O2|@14219,0 14225:O2|@14253,@14252 14226:O7|@14101,@12231,@14228,@14227,@10037,0,0 14227:O3|2,@14248,@14204 14228:O2|1,@14229 14229:O3|6,@14135,@14230 14230:O2|@14231,0 14231:O4|@4620,@9574,@14232,0 14232:O3|3,3,@14233 14233:O6|@4961,@10094,@14234,@14127,@14117,@10091 14234:O2|@4967,@14235 14235:O2|@14237,@14236 14236:O2|@14242,@14241 14237:O2|@10584,@14238 14238:O3|1,@14239,@10104 14239:O8|@14240,@14101,0,0,@14027,0,0,1 14240:O4|19,1,@10398,4 14241:O2|@14245,0 14242:O2|@14059,@14243 14243:O3|1,@14244,@10104 14244:O8|@14061,@14101,0,0,@10392,0,2,1 14245:O2|@10490,@14246 14246:O3|1,@14247,@10104 14247:O8|@14067,@14101,0,0,@10415,0,2,1 14248:O3|3,@14249,@10462 14249:O2|@14209,@14250 14250:O2|@14251,0 14251:O2|@10469,@10146 14252:O2|@14270,@14269 14253:O7|@14105,@13336,@14254,@14204,@10037,0,0 14254:O2|1,@14255 14255:O3|6,@14139,@14256 14256:O2|@14257,0 14257:O4|@4620,@9574,@14258,0 14258:O3|3,2,@14259 14259:O6|@4961,@10094,@14260,@14127,@14117,@10091 14260:O2|@4967,@14261 14261:O2|@14263,@14262 14262:O2|@14267,0 14263:O2|@10563,@14264 14264:O3|1,@14265,@10104 14265:O8|@14266,@14105,0,0,@14027,0,0,1 14266:O4|19,2,@10398,4 14267:O2|@14268,@10093 14268:O3|0,@10093,0 14269:O2|@14300,0 14270:O7|@14109,@12231,@14272,@14271,@10037,0,0 14271:O3|2,@13128,@14204 14272:O2|1,@14273 14273:O3|6,@14130,@14274 14274:O2|@14275,0 14275:O4|@4620,@9574,@14276,0 14276:O3|3,3,@14277 14277:O6|@4961,@10094,@14278,@14127,@14117,@10091 14278:O2|@4967,@14279 14279:O2|@14281,@14280 14280:O2|@14288,@14287 14281:O2|@14283,@14282 14282:O3|1,@14285,@10104 14283:O2|1,@14284 14284:O2|2,10 14285:O8|@14286,@14109,0,0,@14027,0,0,1 14286:O4|19,3,@10398,4 14287:O2|@14295,0 14288:O2|@14290,@14289 14289:O3|1,@14292,@10104 14290:O2|1,@14291 14291:O2|2,11 14292:O8|@14293,@14109,0,0,@10171,0,0,1 14293:O3|20,@14294,1 14294:O2|@10566,@10704 14295:O2|@14297,@14296 14296:O3|1,@14299,@10104 14297:O2|1,@14298 14298:O2|2,12 14299:O8|@10425,@14109,0,0,@10171,0,0,1 14300:O7|@14113,@12231,@14302,@14301,@10037,0,0 14301:O3|2,@14331,@14204 14302:O2|1,@14303 14303:O3|6,@14128,@14304 14304:O2|@14305,0 14305:O4|@4620,@9574,@14306,0 14306:O3|3,3,@14307 14307:O6|@4961,@10094,@14308,@14127,@14117,@10091 14308:O2|@4967,@14309 14309:O2|@14311,@14310 14310:O2|@14318,@14317 14311:O2|@14313,@14312 14312:O3|1,@14315,@10104 14313:O2|1,@14314 14314:O2|2,14 14315:O8|@14316,@14113,0,0,@14027,0,0,1 14316:O4|19,4,@10398,4 14317:O2|@14326,0 14318:O2|@14320,@14319 14319:O3|1,@14322,@10104 14320:O2|1,@14321 14321:O2|2,15 14322:O8|@14323,@14113,0,0,@10392,0,2,1 14323:O3|15,@10395,@14324 14324:O3|20,@14325,1 14325:O2|@13093,@10401 14326:O2|@14328,@14327 14327:O3|1,@14330,@10104 14328:O2|1,@14329 14329:O2|2,16 14330:O8|@14067,@14113,0,0,@10415,0,2,1 14331:O3|3,@14332,@10462 14332:O2|@14076,@14250 14333:O2|3,7 14334:S5|7072696e74 14335:O2|3,5 14336:S10|6d616b65737472696e67 14337:S20|707265747479526570726573656e746174696f6e 14338:S16|6164645072657474795072696e746572 14339:O3|2,@13128,@13097 14340:S11|6164644f7665726c6f6164 14341:O2|@14343,@14342 14342:O7|@14343,2,@14345,@14344,@10037,0,0 14343:S26|73657444656661756c74496e7454797065417262697472617279 14344:O3|2,@10239,@13097 14345:O2|1,@14346 14346:O3|6,@14347,0 14347:O1|@6738 14348:S40|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973657454797065283129 14349:O2|@14351,@14350 14350:O7|@14351,2,@13339,@14352,@10037,0,0 14351:S14|736f757263654c6f636174696f6e 14352:O3|2,@13097,@13807 14353:O1|@6739 14354:S9|556e6976657273616c 14355:O1|@6740 14356:O1|@6741 14357:S9|626f7865642d746167 14358:S8|73697a652d746167 14359:O3|@14360,@10039,@10144 14360:S3|746167 14361:O3|@14362,@10039,@10144 14362:S9|756e6976657273616c 14363:O3|6,@14364,0 14364:O1|@6744 14365:S27|556e6976657273616c2e746167496e6a6563742d23696e6a656374 14366:S9|746167496e6a656374 14367:O3|6,@14368,0 14368:O1|@6746 14369:S29|556e6976657273616c2e74616750726f6a6563742d2370726f6a656374 14370:S10|74616750726f6a656374 14371:O3|6,@14372,0 14372:O1|@6748 14373:S19|556e6976657273616c2e74616749732d236973 14374:S5|7461674973 14375:O3|@14376,@10039,@10144 14376:S19|506f6c794d4c2e707450726f70657274696573 14377:S12|707450726f70657274696573 14378:O3|@14379,@10039,@10144 14379:S16|506f6c794d4c2e706172736554726565 14380:S9|706172736554726565 14381:S12|505466697273744368696c64 14382:S13|50546e6578745369626c696e67 14383:S8|5054706172656e74 14384:S17|505470726576696f75735369626c696e67 14385:O2|@10239,@14386 14386:O2|@14387,0 14387:O5|5,@13848,@10474,@10472,@10037 14388:S12|50547265666572656e636573 14389:S6|505474797065 14390:O2|@14391,@13807 14391:S13|50547374727563747572654174 14392:O2|@14393,@10146 14393:S7|50547265664964 14394:O2|@14396,@14395 14395:O3|2,@10146,@14204 14396:S7|50547072696e74 14397:O2|@14398,@13807 14398:S10|50546f70656e65644174 14399:O2|@14400,@10146 14400:S7|50546465664964 14401:O2|@14402,@13807 14402:S12|50546465636c617265644174 14403:O2|@14405,@14404 14404:O5|5,@14406,@10474,@10472,@10037 14405:S13|5054636f6d706c6574696f6e73 14406:O2|@13128,0 14407:O2|@14408,@13948 14408:S12|5054627265616b506f696e74 14409:O3|2,@13097,@14410 14410:O5|5,@13374,@10638,@10635,@10037 14411:S5|5573653a20 14412:S2|2d49 14413:O6|@6753,@14421,@14429,@4707,@14435,@14414 14414:O3|@6761,@14437,@14429 14415:O5|@14416,580,0,580,0 14416:S14|2e2f62617369732f4f532e736d6c 14417:S4|50617468 14418:O5|@14416,582,0,582,0 14419:S32|4f532e506174682e636f6e636174283229636f6e636174417263732832292829 14420:S17|4f532e506174682e636f6e636174283229 14421:O7|@6755,@4707,@14429,@9552,@4708,@14433,@14422 14422:O1|@6759 14423:O5|@14416,382,0,382,0 14424:O5|@14416,385,0,385,0 14425:S10|496e76616c6964417263 14426:S33|4f532e506174682e746f537472696e6728332961726373546f4c696e6b73283129 14427:O5|@14416,400,0,400,0 14428:S19|4f532e506174682e746f537472696e67283329 14429:O1|@6757 14430:O4|1,@9473,1,1 14431:O4|0,@9473,0,0 14432:S33|4f532e506174682e6d61746368566f6c756d65507265666978506f736978283129 14433:O1|@6758 14434:S23|4f532e506174682e76616c6964566f6c756d652d283129 14435:O1|@6760 14436:S27|4f532e506174682e746f43616e6f6e6963616c436173652d283129 14437:O1|@6763 14438:O3|@9473,0,0 14439:S21|4f532e506174682e66726f6d537472696e67283229 14440:S23|4f532e506174682e6973536570617261746f722d283129 14441:O2|@6764,@14437 14442:S32|4f532e506174682e73706c697442617365457874283229676574457874283129 14443:S23|4f532e506174682e73706c697442617365457874283229 14444:O1|@14445 14445:S3|353731 14446:S22|4f532e506174682e6a6f696e42617365457874283229 14447:O3|1,@9825,0 14448:S13|54657874494f2e6f70656e496e 14449:O5|@14450,290,0,290,0 14450:S18|2e2f62617369732f54657874494f2e736d6c 14451:O1|@6801 14452:S25|4d414b455f28292e6462456e76416c6c283129283129283129 14453:O1|@6804 14454:O1|@6807 14455:O1|@6810 14456:O1|@6813 14457:O1|@6816 14458:O1|@6820 14459:O1|@6822 14460:O2|@9473,0 14461:S5|696e707574 14462:O5|@9448,140,0,140,0 14463:S30|426173696353747265616d494f28292e696e7075744e4c69737427283429 14464:S30|426173696353747265616d494f28292e696e7075744e4c69737427283129 14465:S29|426173696353747265616d494f28292e696e7075744e4c697374283329 14466:S32|4261736963496d7065726174697665494f28292e696e70757431283129283129 14467:S41|4d414b455f28292e636f6d70696c65496e746f456e7628312975736528332967657443686172283129 14468:O1|@6824 14469:O1|@6825 14470:S26|426173696353747265616d494f28292e646f436c6f7365283129 14471:S33|4261736963496d7065726174697665494f28292e636c6f7365496e283129283129 14472:O5|@10011,258,0,258,0 14473:S11|457863657074696f6e2d20 14474:S8|207261697365640a 14475:O1|@6826 14476:O5|@10011,264,0,264,0 14477:S39|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329636f64652d283129 14478:O2|@14480,@14479 14479:O2|@10785,@14497 14480:O4|@4709,@9574,@14481,0 14481:O1|@6828 14482:S6|4572726f722d 14483:S8|5761726e696e672d 14484:O1|@6829 14485:O4|101,@13819,0,@14486 14486:O5|@14487,98,0,98,0 14487:S30|6d6c736f757263652f4d4c436f6d70696c65722f5072657474792e736d6c 14488:O4|101,@13819,0,@14489 14489:O5|@14487,108,0,108,0 14490:O4|101,@13819,0,@14491 14491:O5|@14487,118,0,118,0 14492:S19|5072657474792e75676c795072696e74283129 14493:S2|2e0a 14494:S8|272c206c696e6520 14495:S5|20696e2027 14496:S43|4d414b455f28292e636f6d70696c65496e746f456e762831297573652833296572726f7250726f63283129 14497:O2|@14499,@14498 14498:O2|@10812,@14500 14499:O4|@4660,@9574,1,0 14500:O2|@14502,@14501 14501:O2|@14513,@14512 14502:O4|@4710,@9574,@14503,0 14503:O1|@6832 14504:O2|@6833,@19863 14505:S15|54657874494f2e7072696e74283129 14506:S31|5072657474792e7072657474795072696e7428332967657453697a65283229 14507:O1|@6835 14508:S40|5072657474792e7072657474795072696e742833296c61794f7574283329646f5072696e74283229 14509:S30|5072657474792e7072657474795072696e742833296c61794f7574283329 14510:S21|5072657474792e7072657474795072696e74283329 14511:S24|5072657474792e7072657474795072696e74283129283129 14512:O2|@10789,@14515 14513:O4|@4657,@9574,@14514,0 14514:O1|@6838 14515:O2|@10791,@14516 14516:O2|@10799,@14517 14517:O2|@10793,@14518 14518:O2|@10797,0 14519:O4|@4665,@9574,@14520,0 14520:O1|@6839 14521:O2|@6842,@4709 14522:O1|@6843 14523:O4|103,@10021,@14525,@14524 14524:O5|@14526,99,0,99,0 14525:S20|4572726f7220696e20736f7572636520636f6465 14526:S27|6d6c736f757263652f4d4c436f6d70696c65722f4c45585f2e4d4c 14527:S37|4c45585f28292e696e697469616c2833296572726f724d65737361676550726f632d283129 14528:S17|4c45585f28292e696e697469616c283329 14529:O1|@6844 14530:O1|@6846 14531:S42|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429676c6f62616c732d283129 14532:S34|756e657870656374656420656e64206f662066696c6520656e636f756e7465726564 14533:O1|@6849 14534:S15|436861722e69735370616365283129 14535:S23|537472696e672e746f6b656e73283229746f6b27283229 14536:S16|537472696e672e746f6b656e73283229 14537:O2|@10970,0 14538:S32|4c45585f28292e627265616b576f726473283129616464427265616b73283129 14539:O4|@4611,@9978,@14541,@14540 14540:O5|@14526,600,0,600,0 14541:S11|656e64206f662066696c65 14542:O2|@6853,@4711 14543:S16|756e6b6e6f776e2073796d626f6c202e 14544:S17|756e6b6e6f776e2073796d626f6c202e2e 14545:S28|656e64206f662066696c6520666f756e6420696e20636f6d6d656e74 14546:S36|4c45585f28292e7061727365436f6d6d656e74283129736b6970436f6d6d656e74283129 14547:S22|4c45585f28292e7061727365436f6d6d656e74283129 14548:O5|@14526,350,0,350,0 14549:S9|456e644f664c696e65 14550:O5|@14526,389,0,389,0 14551:S22|756e7072696e7461626c652063686172616374657220 14552:S16|20666f756e6420696e20737472696e67 14553:S21|756e65787065637465642063686172616374657220 14554:S11|20696e205c202e2e2e205c 14555:S33|4c45585f28292e7061727365537472696e67283129676574537472696e67283129 14556:S36|6e6f206d61746368696e672071756f746520666f756e64206f6e2074686973206c696e65 14557:S21|4c45585f28292e7061727365537472696e67283129 14558:O1|@6858 14559:S20|3a3d3c3e2b2a215e2f7c26257e2d3f60405c2423 14560:S27|436861722e636f6e7461696e732831296d61746368283129283129 14561:S26|4c45585f28292e7265616443686172732833296c6f6f70283129 14562:S19|4c45585f28292e726561644368617273283329 14563:O1|@6862 14564:S24|4c45585f28292e6973416c7068614e756d65726963283129 14565:O3|0,@14567,@14566 14566:O200|0,0,0,0,0,0,@14569,@14571,@14573,0,@14575,0,0,0,0,0,0,0,0,@14576,@14577,0,0,0,0,@14579,0,0,@14581,0,0,0,0,0,0,@14583,0,0,0,0,0,0,@14584,0,0,0,0,0,0,0,0,0,0,0,0,0,@14585,0,@14587,0,@14588,@14590,0,0,0,0,0,0,0,0,@14591,@14593,@14595,0,0,@14597,0,@14598,0,@14600,0,0,0,0,@14601,0,0,@14603,@14605,@14607,@14609,@14610,@14612,@14614,@14615,@14617,0,@14619,@14621,@14623,0,0,@14624,0,@14626,0,0,0,0,0,0,@14628,0,0,0,@14630,0,0,0,0,0,0,@14632,@14633,@14634,0,0,0,0,0,0,0,0,0,0,@14636,@14637,@14639,0,0,0,0,0,0,0,0,0,@14641,0,0,0,0,0,0,0,@14643,0,0,0,0,0,0,0,0,0,0,0,@14645,0,0,0,@14647,0,0,@14648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@14650,0,0,0,0,0,0,0,0,@14568 14567:O2|@4894,200 14568:O2|@14652,63 14569:O2|@14570,29 14570:S6|696e66697872 14571:O2|@14572,36 14572:S6|6e6f6e666978 14573:O2|@14574,28 14574:S5|696e666978 14575:O2|@10974,65 14576:O2|@10870,25 14577:O2|@14578,49 14578:S7|73686172696e67 14579:O2|@14580,37 14580:S2|6f66 14581:O2|@14582,12 14582:S8|6461746174797065 14583:O2|@9540,23 14584:O2|@9547,6 14585:O2|@14586,7 14586:S4|63617365 14587:O2|@9563,9 14588:O2|@14589,1 14589:S7|61627374797065 14590:O2|@9566,17 14591:O2|@14592,51 14592:S9|7369676e6174757265 14593:O2|@14594,44 14594:S3|726563 14595:O2|@14596,19 14596:S2|666e 14597:O2|@10951,26 14598:O2|@14599,13 14599:S2|646f 14600:O2|@10906,4 14601:O2|@14602,42 14602:S5|7261697365 14603:O2|@14604,18 14604:S9|657863657074696f6e 14605:O2|@14606,22 14606:S6|68616e646c65 14607:O2|@14608,61 14608:S3|76616c 14609:O2|@9600,60 14610:O2|@14611,54 14611:S9|737472756374757265 14612:O2|@14613,10 14613:S2|3a3e 14614:O2|@12550,56 14615:O2|@14616,59 14616:S4|74797065 14617:O2|@14618,38 14618:S2|6f70 14619:O2|@14620,50 14620:S3|736967 14621:O2|@14622,16 14622:S6|657174797065 14623:O2|@10953,34 14624:O2|@14625,5 14625:S2|6173 14626:O2|@14627,66 14627:S8|7769746874797065 14628:O2|@14629,20 14629:S3|66756e 14630:O2|@14631,35 14631:S5|6c6f63616c 14632:O2|@9629,62 14633:O2|@10872,55 14634:O2|@14635,40 14635:S6|6f72656c7365 14636:O2|@10874,14 14637:O2|@14638,27 14638:S7|696e636c756465 14639:O2|@14640,64 14640:S5|7768696c65 14641:O2|@14642,21 14642:S7|66756e63746f72 14643:O2|@14644,53 14644:S6|737472756374 14645:O2|@14646,2 14646:S3|616e64 14647:O2|@10949,15 14648:O2|@14649,39 14649:S4|6f70656e 14650:O2|@14651,3 14651:S7|616e64616c736f 14652:S5|7768657265 14653:S21|696e76616c6964206964656e746966696572202d20 14654:S20|4c45585f28292e70617273654964656e74283329 14655:O1|@6864 14656:S15|436861722e69734469676974283129 14657:S3|307778 14658:O1|@6865 14659:S18|436861722e69734865784469676974283129 14660:S2|3077 14661:S23|6d616c666f726d6564207265616c206e756d6265723a20 14662:S2|457e 14663:S21|4c45585f28292e70617273654e756d626572283229 14664:S19|756e6b6e6f776e206368617261637465722022 14665:S20|4c45585f28292e7061727365546f6b656e283129 14666:S41|5554494c49544945535f28292e7365617263684c6973742832296170706c792831296170706c283129 14667:S34|5554494c49544945535f28292e7365617263684c6973742832296170706c79283129 14668:S34|5554494c49544945535f28292e7365617263684c697374283229656e746572283129 14669:S35|5554494c49544945535f28292e7365617263684c6973742832296c6f6f6b7570283129 14670:S26|5554494c49544945535f28292e7365617263684c697374283229 14671:S24|4d6973632e6c6f6f6b757044656661756c74283229283129 14672:O1|@6872 14673:S15|53796d5365742e2b2b283229283129 14674:S31|467265652074797065207661726961626c6573206e6f7420616c6c6f776564 14675:S36|50415253455f44454328292e7061727365446563283329676c6f62616c456e762d283129 14676:O1|@6877 14677:O3|@6879,@14787,@14678 14678:O2|@6990,@14677 14679:S15|3c6368617220636f6e7374616e743e 14680:S12|3c6964656e7469666965723e 14681:S18|3c696e746567657220636f6e7374616e743e 14682:S14|756e6b6e6f776e2073796d626f6c 14683:S15|3c7265616c20636f6e7374616e743e 14684:S17|3c737472696e6720636f6e7374616e743e 14685:S17|3c74797065206964656e7469666965723e 14686:S15|3c776f726420636f6e7374616e743e 14687:S15|53796d626f6c732e72657072283129 14688:S14|2065787065637465642062757420 14689:S10|2077617320666f756e64 14690:S20|534b4950535f28292e6e6f74666f756e64283229 14691:S18|534b4950535f28292e67657473796d283229 14692:S35|50415253455f44454328292e6d6b4c6f63616c426f6479466978456e76283529283129 14693:O1|@6889 14694:S10|4964656e746966696572 14695:O2|@9473,@14696 14696:O5|@9473,0,0,0,0 14697:S17|534b4950535f28292e6765746964283429 14698:S15|7175616c6966696564206e616d6520 14699:S13|20696c6c6567616c2068657265 14700:S36|5554494c49544945535f28292e636865636b466f72446f7473283329636865636b283129 14701:S28|5554494c49544945535f28292e636865636b466f72446f7473283329 14702:O2|@6894,@14703 14703:O2|@6934,@14702 14704:S18|5374617274206f66207369676e6174757265 14705:O1|@6895 14706:S18|534b4950535f28292e736b69706f6e283429 14707:S5|6572726f72 14708:O4|@4611,@9978,@14710,@14709 14709:O5|@14526,612,0,612,0 14710:S31|417474656d707420746f20707573682074776f20706172656e746865736573 14711:S23|2068617320616c7265616479206265656e20757365642e 14712:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283229 14713:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283129 14714:S19|534b4950535f28292e62616473796d73283229 14715:S50|50415253455f44454328292e7061727365446563283329676574547970655661727328322967657454797065566172283229 14716:O1|@6905 14717:S20|53796d5365742e747970654964656e742d283129 14718:S19|534b4950535f28292e74657374666f72283329 14719:S37|50415253455f44454328292e70617273654465632833296765745479706556617273283229 14720:O1|@6908 14721:S16|53796d5365742e6964656e742d283129 14722:S42|20686173206e6f74206265656e206465636c6172656420696e2074797065206465636c61726174696f6e 14723:S42|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329283129 14724:S39|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329 14725:O1|@6911 14726:O4|@14728,0,@10037,@14727 14727:O3|@14730,@14734,@14729 14728:S9|756e646566696e6564 14729:O3|@14728,@10039,@14735 14730:O2|1,@14731 14731:O3|6,@14732,0 14732:O4|0,@4713,3,1 14733:O1|@6919 14734:O4|1,@4714,0,0 14735:S9|556e646566696e6564 14736:S7|4c6162656c2028 14737:S25|292061707065617273206d6f7265207468616e206f6e63652e 14738:S75|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d7265706f7274447570283329 14739:S43|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c792831296170706c283129 14740:S36|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c79283129 14741:S36|5554494c49544945535f28292e6e6f4475706c696361746573283229656e746572283129 14742:S37|5554494c49544945535f28292e6e6f4475706c6963617465732832296c6f6f6b7570283129 14743:S28|5554494c49544945535f28292e6e6f4475706c696361746573283229 14744:O1|@6913 14745:S87|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c69737428312974657374666f72283329 14746:S77|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c697374283129 14747:S64|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229636f6e7374727563746f7273283329 14748:S25|4c6162656c73206d75737420626520312c322c332c2e2e2e2e 14749:S20|534b4950535f28292e6765744c6162656c283329 14750:O1|@6933 14751:S16|53796d5365742e656d7074792d283129 14752:S49|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229 14753:S50|50415253455f5459504528292e7061727365547970652834297475706c655479706528322967657450726f64756374283229 14754:S37|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229 14755:S11|456e64206f662074797065 14756:S25|50415253455f5459504528292e706172736554797065283429 14757:S56|50415253455f44454328292e706172736544656328332970617273655369676e617475726528332967657457686572655479706573283229 14758:S40|50415253455f44454328292e706172736544656328332970617273655369676e6174757265283329 14759:S43|50415253455f44454328292e70617273654465632833296d616b6554797065566172456e76283229283129 14760:S9|5369676e6174757265 14761:S75|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d6e6577656e762d283129 14762:S52|4461746174797065207265706c69636174696f6e206d757374206e6f7420636f6e7461696e2074797065207661726961626c6573 14763:O1|@6944 14764:S62|60606f702727206d6179206e6f7420617070656172206265666f7265206120636f6e7374727563746f7220696e20612073706563696669636174696f6e2e 14765:O7|@14766,2,@10184,@9922,@10037,0,0 14766:S11|3c756e646566696e65643e 14767:S48|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729636f6e73747273283229 14768:O2|@14726,0 14769:S38|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729 14770:S44|50415253455f44454328292e7061727365446563283329646174617479706542696e64696e67283129283129 14771:S37|50415253455f44454328292e7061727365446563283329616e6442696e64696e6773283329 14772:S37|50415253455f44454328292e70617273654465632833297479706542696e64696e67283529 14773:S40|50415253455f44454328292e70617273654465632833297479706542696e64696e67283129283129 14774:S43|50415253455f44454328292e706172736544656328332964617461747970654465634f725265706c283529 14775:O1|@6959 14776:S74|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d736967696473283229 14777:S73|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f56616c283229 14778:O1|@6970 14779:S79|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f537472756374757265283229 14780:S72|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f4578283229 14781:S57|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129 14782:S39|50415253455f44454328292e70617273654465632833297369676e617475726553706563283329 14783:S49|50415253455f44454328292e7061727365446563283329737472756374757265446563283329646f537472446563283229 14784:O1|@6977 14785:S19|53796d5365742e73747275637453792d283129 14786:S38|50415253455f44454328292e7061727365446563283329737472756374757265446563283329 14787:O2|@6978,@14678 14788:S29|737472756374206f722066756e63746f72206170706c69636174696f6e 14789:O1|@6979 14790:S51|50415253455f44454328292e706172736544656328332973747275637456616c283329646f436f6e73747261696e7473283329 14791:S35|50415253455f44454328292e706172736544656328332973747275637456616c283329 14792:O1|@6993 14793:O1|@6995 14794:S43|50415253455f44454328292e706172736544656328332964656328352964656353657175656e6365283229 14795:S73|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e2832297265706f7274447570283329 14796:S46|292068617320696e666978207374617475732062757420776173206e6f74207072656365646564206279206f702e 14797:S41|50415253455f44454328292e70617273654465632833296765744c6f6e674e6f6e496e666978283729 14798:O1|@7008 14799:S26|50415253455f5452454528292e6d6b4964656e74283229283129 14800:O1|@7009 14801:O7|@14803,2,@14804,@14802,@10037,0,0 14802:O3|2,@13128,@14805 14803:S8|636f6e7643686172 14804:O2|3,8 14805:O3|6,@4715,79992 14806:S45|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e742831292d45 14807:S43|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e74283129 14808:O1|@7011 14809:O7|@13538,2,@14804,@14802,@10037,0,0 14810:O1|@7012 14811:O7|@14812,2,@14804,@14802,@10037,0,0 14812:S8|636f6e765265616c 14813:O1|@7013 14814:O7|@13535,2,@14804,@14802,@10037,0,0 14815:O1|@7014 14816:O7|@13543,2,@14804,@14802,@10037,0,0 14817:S72|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229676574456e747279283229 14818:S21|456e64206f66206c65742065787072657373696f6e 14819:S61|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229 14820:S10|45787072657373696f6e 14821:O1|@7021 14822:O1|@7031 14823:O1|@7033 14824:O1|@7035 14825:S7|5061747465726e 14826:O1|@7036 14827:O1|@7037 14828:S68|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d766172734c697374283129 14829:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832297265706f7274447570283329 14830:S35|203d20706174206578706563746564206166746572206e756d65726963206c6162656c 14831:O1|@7044 14832:S42|50415253455f44454328292e7061727365446563283329646563283529636f6e73747261696e74283529 14833:S32|4578706563746564206964206f722069643a7479206265666f72652060617327 14834:S61|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329636f6e73747261696e744f724c617965726564283429 14835:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832296765744c6162656c73283229 14836:S66|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d7475706c6573283129 14837:S38|5265616c20636f6e7374616e7473206e6f7420616c6c6f77656420696e207061747465726e73 14838:O1|@7052 14839:O1|@7053 14840:O1|@7054 14841:S55|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229 14842:S61|50415253455f44454328292e70617273654465632833296465632835297061727365496e66697828372970617273654170706c69636174696f6e283429 14843:O3|@9473,@14696,@10093 14844:O2|-1,0 14845:S56|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729726561644e6578744f7073283229 14846:S5|7269676874 14847:S4|6c656674 14848:O2|@14849,0 14849:S13|2d6173736f636961746976652e 14850:S5|2220697320 14851:S20|2d6173736f63696174697665207768696c652022 14852:S32|222068617665207468652073616d6520707265636564656e6365206275742022 14853:S7|2220616e642022 14854:S11|4f70657261746f72732022 14855:S75|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729636865636b4173736f636961746976697479283229 14856:O1|@7064 14857:S54|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729 14858:S42|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729 14859:S14|456e64206f66207061747465726e 14860:S39|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329 14861:S12|456e64206f66206d61746368 14862:S50|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296d61746368283129 14863:O1|@7071 14864:S55|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296b6579576f7264457870283229 14865:S57|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833297061727365416e64616c736f283229 14866:S56|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332970617273654f72656c7365283229 14867:S42|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e283329 14868:O1|@7073 14869:S2|6974 14870:O1|@7084 14871:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283229 14872:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283129 14873:S39|50415253455f44454328292e70617273654465632833296465632835296e6577456e762d283129 14874:S70|506172656e74686573657320617265206f6e6c7920616c6c6f77656420666f7220696e6669786564206170706c69636174696f6e7320696e2066756e2062696e64696e67732e 14875:S63|436f6e7374727563746f72206170706c69636174696f6e7320696e2066756e2062696e64696e6773206d75737420626520706172656e74686573697365642e 14876:S79|53796e746178206572726f723a2066756e2062696e64696e67206973206e6f7420616e206964656e746966696572206170706c69656420746f206f6e65206f72206d6f7265207061747465726e732e 14877:S37|50415253455f5452454528292e6d6b46756e5061747465726e283329756e7069636b283229 14878:S28|50415253455f5452454528292e6d6b46756e5061747465726e283329 14879:S31|5468697320636c6175736520646566696e65732066756e6374696f6e206060 14880:S36|2727206275742070726576696f757320636c6175736528732920646566696e6564206060 14881:S2|2727 14882:S16|5468697320636c617573652068617320 14883:S38|20617267756d656e7473206275742070726576696f757320636c617573652873292068616420 14884:S47|50415253455f44454328292e706172736544656328332964656328352966756e4228322962696e64696e6773283229 14885:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283229 14886:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283129 14887:S11|507265636564656e636520 14888:S37|206e6f7420616c6c6f7765642c206d757374206265206265747765656e203020616e642039 14889:S48|50415253455f44454328292e7061727365446563283329666978697479283329676574507265636564656e6365283129 14890:S8|5661726961626c65 14891:S39|50415253455f44454328292e706172736544656328332966697869747928332976617273283229 14892:O4|@4611,@9978,@13722,@14893 14893:O5|@14894,558,0,558,0 14894:S32|6d6c736f757263652f4d4c436f6d70696c65722f50415253455f4445432e4d4c 14895:S32|50415253455f44454328292e7061727365446563283329666978697479283329 14896:S36|50415253455f44454328292e706172736544656328332964656328352976617273283229 14897:S36|50415253455f44454328292e706172736544656328332964656328352976616c42283329 14898:S29|50415253455f44454328292e7061727365446563283329646563283529 14899:S42|50415253455f44454328292e706172736544656328332973747244656328332967657444656373283129 14900:S32|50415253455f44454328292e7061727365446563283329737472446563283329 14901:O1|@7109 14902:O6|@14904,@14766,0,0,@14903,0 14903:O1|@7112 14904:O3|0,@14906,@14905 14905:O10|0,0,0,0,0,0,0,0,0,0 14906:O2|@4894,10 14907:O4|11,@9429,0,@14908 14908:O5|@14909,177,0,177,0 14909:S34|6d6c736f757263652f4d4c436f6d70696c65722f5349474e4154555245532e736d6c 14910:S35|5349474e41545552455328292e756e646566696e65645369676e61747572652d283129 14911:S38|50415253455f44454328292e70617273654465632833297369676e6174757265446563283329 14912:O1|@7113 14913:S22|53796d5365742e7369676e617475726553792d283129 14914:S49|50415253455f44454328292e706172736544656328332966756e63746f72446563283329646f46756e6374446563283229 14915:S36|50415253455f44454328292e706172736544656328332966756e63746f72446563283329 14916:O1|@7122 14917:S20|53796d5365742e66756e63746f7253792d283129 14918:S38|50415253455f44454328292e70617273654465632833297061727365546f7044656373283229 14919:S23|50415253455f44454328292e7061727365446563283329 14920:O1|@7123 14921:O1|@7125 14922:S2|203a 14923:O2|@10826,0 14924:O1|@7129 14925:O1|@7130 14926:O2|3,@14927 14927:S6|6e616d65203d 14928:O2|3,@14929 14929:S7|656e747279203d 14930:O5|0,0,0,@14932,@14931 14931:O2|@14935,0 14932:O2|@14933,0 14933:O2|0,@14934 14934:O5|@13820,1192,1192,0,0 14935:O2|3,@14936 14936:S5|4e616d6573 14937:S11|7072696e742d6e616d6573 14938:S40|545950455f5452454528292e7661724e616d6553657175656e63652831292831296e616d65283129 14939:S33|545950455f5452454528292e7661724e616d6553657175656e6365283129283129 14940:S30|545950455f5452454528292e7661724e616d6553657175656e6365283129 14941:O2|@7133,@14942 14942:O11|@7139,@4624,@4633,@10354,@4689,@13048,@4629,@10293,@4631,@10314,@4714 14943:O2|@14945,@14944 14944:O1|@7135 14945:O1|@7134 14946:S28|545950455f5452454528292e656d70747954797065456e762d283129 14947:O2|@10448,0 14948:O2|@10437,0 14949:O2|@10625,0 14950:S36|545950455f5452454528292e7072696e7454797065566172732833297056617273283229 14951:S28|545950455f5452454528292e7072696e745479706556617273283329 14952:O2|3,@14953 14953:S3|626164 14954:O2|3,@14955 14955:S7|6e6f2074797065 14956:S28|545950455f5452454528292e697350726f6475637454797065283129 14957:O1|@7140 14958:S41|545950455f5452454528292e744469737028352964697370502832297072657474794c697374283329 14959:O1|@7144 14960:S48|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283229283129 14961:S45|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283129 14962:S35|545950455f5452454528292e7444697370283529646973705028322970526563283229 14963:O1|@7149 14964:O5|0,0,0,@14966,@14965 14965:O2|@14969,0 14966:O2|@14967,0 14967:O2|0,@14968 14968:O5|@13820,961,961,0,0 14969:O2|3,@14970 14970:S10|466f756e644d61746368 14971:O5|0,0,0,@14966,@14972 14972:O2|@14973,0 14973:O2|3,@14974 14974:S13|466f756e644e6f744d61746368 14975:O5|0,0,0,@14966,@14976 14976:O2|@14977,0 14977:O2|3,@14978 14978:S8|4e6f74466f756e64 14979:S13|7072696e742d6973466f756e64 14980:S40|545950455f5452454528292e657154797065436f6e73747273283429636f70794964283129283129 14981:O1|@7153 14982:S33|545950455f5452454528292e657154797065436f6e737472732834296964283129 14983:S55|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b757054797065283129 14984:S57|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b7570537472756374283129 14985:S39|545950455f5452454528292e7444697370283529646973705028322966696e6454797065283229 14986:S41|545950455f5452454528292e744469737028352964697370502832296e616d65546f4c697374283329 14987:S25|537472696e672e636f6e636174576974682832296d6b283129 14988:O2|@10450,@14949 14989:O2|3,@9552 14990:S42|545950455f5452454528292e744469737028352964697370502832297072696e745443636f6e73283129 14991:S6|2c202e2e2e7d 14992:S28|545950455f5452454528292e74446973702835296469737050283229 14993:S20|545950455f5452454528292e7444697370283529 14994:O1|@7163 14995:S32|545950455f5452454528292e7479706546726f6d547970655061727365283129 14996:O2|3,@14616 14997:O2|3,@14652 14998:O1|@7170 14999:O1|@7171 15000:O1|@7173 15001:O1|@7174 15002:O2|3,@14580 15003:S56|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436f6e7374727563746f72283129 15004:S30|5052494e545f50415253455452454528292e7072696e744c697374283429 15005:S57|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446174617479706542696e64283129 15006:O1|@7177 15007:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745479706542696e64283129 15008:O2|3,@14627 15009:O1|@7180 15010:O1|@7172 15011:S60|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61794c69737457697468427074732d283129 15012:O2|3,@14589 15013:O2|3,@14582 15014:O2|3,@14651 15015:O2|@10448,@15016 15016:O2|@15002,0 15017:O2|3,@14586 15018:O1|@7185 15019:S33|5052494e545f50415253455452454528292e646973706c61794d61746368283129 15020:O2|3,@9563 15021:O2|3,@14570 15022:O2|3,@14574 15023:O2|3,@14572 15024:O1|@7186 15025:S40|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229283129 15026:O2|3,@15027 15027:S7|3c456d7074793e 15028:O1|@7187 15029:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283229 15030:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283129 15031:O2|3,@14604 15032:O2|3,@14596 15033:O1|@7191 15034:O1|@7192 15035:O1|@7195 15036:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283129 15037:S48|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446563283229 15038:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436c61757365283129 15039:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e746676616c62696e64283129 15040:O2|3,@14629 15041:O2|3,@14606 15042:S2|203d 15043:S54|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61795265634c697374283229 15044:O2|3,@14625 15045:O2|@9539,0 15046:S2|2322 15047:O2|@10448,@15048 15048:O2|@10950,@14947 15049:O1|@7206 15050:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745374724e616d65283129 15051:O2|3,@14649 15052:O2|3,@14635 15053:O2|3,@14602 15054:O2|3,@10286 15055:O2|@15056,@14947 15056:O2|3,@14594 15057:O2|@10448,@15058 15058:O2|@15059,0 15059:O2|3,@14646 15060:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e7456616c42696e64283229 15061:O2|3,@14608 15062:O2|3,@14599 15063:O2|3,@14640 15064:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229 15065:O3|1,1,1 15066:O1|@7211 15067:S27|5349474e41545552455328292e646973706c617953696773283129 15068:S27|5349474e41545552455328292e646973706c61794c697374283429 15069:O2|3,@14638 15070:O2|@14996,@14947 15071:O1|@7213 15072:S31|5349474e41545552455328292e646973706c61795370656373283229283129 15073:O2|3,@14578 15074:O1|@7215 15075:S3|203a3e 15076:O1|@7127 15077:S46|5349474e41545552455328292e646973706c61795370656373283229646973706c61795369677342696e64283129 15078:O2|3,@14611 15079:S28|5349474e41545552455328292e646973706c61795370656373283229 15080:S28|5349474e41545552455328292e646973706c61795370656373283129 15081:O2|3,@14620 15082:S27|5349474e41545552455328292e646973706c617953696773283229 15083:O1|@7219 15084:O1|@7220 15085:S28|535452554354555245535f28292e646973706c61794c697374283429 15086:O2|3,@14631 15087:O1|@7225 15088:O1|@7218 15089:O2|3,@15042 15090:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283229 15091:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283129 15092:S30|535452554354555245535f28292e646973706c6179537472756374283229 15093:S30|535452554354555245535f28292e646973706c6179537472756374283129 15094:O2|3,@14644 15095:S35|535452554354555245535f28292e646973706c617953747275637456616c7565283229 15096:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283229 15097:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283129 15098:O2|3,@14642 15099:O1|@7232 15100:S47|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617953696742696e64283129 15101:O2|3,@14592 15102:S30|535452554354555245535f28292e646973706c6179546f70446563283229 15103:S30|535452554354555245535f28292e646973706c6179546f70446563283129 15104:O2|@7233,@4717 15105:S48|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d65732831295f2d283129 15106:S43|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d6573283129 15107:O1|@7242 15108:S36|535452554354555245535f28292e706173733253747275637473283329656e762d283129 15109:S48|535452554354555245535f28292e706173733253747275637473283329746f704c6576656c49644e756d626572283129 15110:S52|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129283129 15111:S49|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129 15112:O3|0,@15113,@4718 15113:O1|@7248 15114:O4|@4611,@9978,@15116,@15115 15115:O5|@10099,76,0,76,0 15116:S14|6c6f61643a206e65676174697665 15117:O4|@4611,@9978,@15119,@15118 15118:O5|@10099,79,0,79,0 15119:S12|626f74746f6d206c6576656c 15120:S25|434f44455452454528292e626f74746f6d4c6576656c283129 15121:S40|5354525543545f56414c5328292e6d616b65426f756e644964576974684571557064617465283129 15122:S28|5354525543545f56414c5328292e6d616b65426f756e644964283129 15123:S52|535452554354555245535f28292e7061737332537472756374732833297061737332546f704465632832296d616b654964283129 15124:O2|@7251,@15125 15125:O2|@7972,@15124 15126:S55|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296e6577456e762d283129 15127:S54|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296d616b654964283429 15128:O2|@7262,@15129 15129:O5|@7635,@16905,@4760,@4777,@4754 15130:O1|@7263 15131:S37|54595045434845434b5f50415253455452454528292e7061737332283529656e762d283129 15132:S56|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352974797065456e762d283129 15133:O1|@7264 15134:O4|@4611,@9978,@15136,@15135 15135:O5|@15137,1414,0,1414,0 15136:S28|61737369676e54797065733a20656d7074797472656520666f756e64 15137:S53|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f54595045434845434b5f5041525345545245452e736d6c 15138:O4|@4611,@9978,@15140,@15139 15139:O5|@15137,1411,0,1411,0 15140:S34|61737369676e54797065733a206c617965726564207061747465726e20666f756e64 15141:O4|@4611,@9978,@15143,@15142 15142:O5|@15137,1408,0,1408,0 15143:S27|61737369676e54797065733a2077696c646361726420666f756e64 15144:S43|2068617320616c7265616479206265656e20626f756e6420696e2074686973206465636c61726174696f6e 15145:S30|5052494e545f50415253455452454528292e6572726f724e656172283529 15146:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836296d657373466e283329 15147:O2|@7273,@4714 15148:O1|@7274 15149:S13|2074797065287329206e6f7420 15150:S11|2920726571756972657320 15151:S18|5479706520636f6e7374727563746f722028 15152:S46|545950455f5452454528292e61737369676e54797065732833297479706546726f6d547970655061727365283129 15153:S26|545950455f5452454528292e61737369676e5479706573283329 15154:S45|54595045434845434b5f50415253455452454528292e7061737332283529676976654572726f72283329283129 15155:S9|537472756374757265 15156:S36|56414c55455f4f505328292e6d616b6553656c6563746564537472756374757265283229 15157:S23|2920686173206e6f74206265656e206465636c61726564 15158:S14|20696e2073747275637475726520 15159:S30|56414c55455f4f505328292e6c6f6f6b7570537472756374757265283429 15160:S38|434f5049455228292e66756c6c436f70794461746174797065283329726573456e762d283129 15161:O1|@7290 15162:S12|656e74657253747275637420 15163:O5|@15164,258,0,258,0 15164:S30|6d6c736f757263652f4d4c436f6d70696c65722f434f504945522e736d6c 15165:O1|@7291 15166:S9|656e74657256616c20 15167:O5|@15164,259,0,259,0 15168:O1|@7292 15169:O4|11,@9429,0,@15170 15170:O5|@15164,261,0,261,0 15171:S33|434f5049455228292e66756c6c436f707944617461747970652833295f2d283129 15172:O1|@7294 15173:S58|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6453756253747275637473283329 15174:S64|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6454797065732833296d616b654e616d65283129 15175:S62|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f70794964283129 15176:O1|@7303 15177:S71|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129283129 15178:S68|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129 15179:O1|@7304 15180:S53|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329 15181:S41|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629 15182:S48|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129636f70794964283129 15183:S42|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129283129 15184:O1|@7308 15185:S39|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129 15186:S39|434f5049455228292e6c6f63616c436f70795369672837292833296e65775369672d5f2d283129 15187:O1|@7293 15188:O1|@7320 15189:S37|434f5049455228292e6c6f63616c436f7079536967283729636f7079547970283129283129 15190:O1|@7321 15191:S27|434f5049455228292e6c6f63616c436f7079536967283729283329 15192:S24|434f5049455228292e6c6f63616c436f7079536967283729 15193:S28|434f5049455228292e66756c6c436f70794461746174797065283329 15194:O1|@14768 15195:S16|5479706520636f6e7374727563746f72 15196:S24|56414c55455f4f505328292e6c6f6f6b7570547970283329 15197:S28|545950455f5452454528292e61737369676e54797065732833292d45 15198:S52|2068617320616c7265616479206265656e2075736564206173206120636f6e7374727563746f7220696e20746869732074797065 15199:O1|@7326 15200:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129283129 15201:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129 15202:S25|526562696e64696e67206f722073706563696679696e672022 15203:S12|2220697320696c6c6567616c 15204:S48|54595045434845434b5f50415253455452454528292e7061737332283529636865636b466f724275696c74496e283529 15205:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e73747273283229 15206:O3|@7333,@16444,@4719 15207:O4|0,@15208,3,1 15208:O1|@7335 15209:O3|@7336,@4722,@4721 15210:S12|7072696e742d76616c756573 15211:O5|0,0,0,@15213,@15212 15212:O2|@15216,0 15213:O2|@15214,0 15214:O2|0,@15215 15215:O5|@10264,159,159,0,0 15216:O2|3,@15217 15217:S13|54797065436f6e737472536574 15218:S19|7072696e742d74797065436f6e737472536574 15219:O5|@7338,@4726,@4727,@4730,@4723 15220:O2|@7340,@4725 15221:S14|7072696e745f7265662833292d45 15222:O5|@15223,115,0,115,0 15223:S22|2e2f62617369732f45786e5072696e7465722e736d6c 15224:S15|706172656e74686573697365283129 15225:O2|3,@15226 15226:S3|726566 15227:S12|7072696e745f726566283329 15228:S11|7072696e742d7479706573 15229:S9|7072696e742d726566 15230:S18|7072696e742d6c6f636174696f6e50726f70 15231:O4|0,@15232,2,3 15232:O1|@7348 15233:O4|0,@15234,1,1 15234:O1|@7349 15235:S10|7072696e742d626f6f6c 15236:O4|0,@15237,3,1 15237:O1|@7350 15238:O4|0,@15239,2,1 15239:O1|@7351 15240:O4|0,@15241,3,1 15241:O1|@7352 15242:O4|0,@15243,2,2 15243:O1|@7353 15244:O2|3,@15245 15245:S14|726563757273697665526566203d 15246:O2|3,@15247 15247:S10|6c6f63616c526566203d 15248:O2|3,@15249 15249:S13|6578706f72746564526566203d 15250:O2|3,@15251 15251:S8|747970654f66203d 15252:O2|3,@15253 15253:S12|7265666572656e636573203d 15254:O2|3,@15255 15255:S11|6c6f636174696f6e73203d 15256:O2|3,@15257 15257:S15|696e7374616e63655479706573203d 15258:O2|3,@15259 15259:S7|636c617373203d 15260:O2|3,@15261 15261:S8|616363657373203d 15262:O5|0,0,0,@15264,@15263 15263:O2|@15267,0 15264:O2|@15265,0 15265:O2|0,@15266 15266:O5|@10264,244,244,0,0 15267:O2|3,@15268 15268:S5|56616c7565 15269:O5|@7354,@4726,@4729,@4721,@4727 15270:O5|0,0,0,@15272,@15271 15271:O2|@15275,0 15272:O2|@15273,0 15273:O2|0,@15274 15274:O5|@10264,145,145,0,0 15275:O2|3,@15276 15276:S7|42616454797065 15277:O5|0,0,0,@15279,@15278 15278:O2|@15282,0 15279:O2|@15280,0 15280:O2|0,@15281 15281:O5|@10264,147,147,0,0 15282:O2|3,@15283 15283:S9|456d70747954797065 15284:O2|3,@15285 15285:S8|726573756c74203d 15286:O2|3,@15287 15287:S5|617267203d 15288:O5|0,0,0,@15290,@15289 15289:O2|@15293,0 15290:O2|@15291,0 15291:O2|0,@15292 15292:O5|@10264,132,132,0,0 15293:O2|3,@15294 15294:S12|46756e6374696f6e54797065 15295:O2|3,@15296 15296:S8|747970656f66203d 15297:O2|3,@15298 15298:S9|7265634c697374203d 15299:O2|3,@15300 15300:S10|66756c6c4c697374203d 15301:O5|0,0,0,@15303,@15302 15302:O2|@15306,0 15303:O2|@15304,0 15304:O2|0,@15305 15305:O5|@10264,138,138,0,0 15306:O2|3,@15307 15307:S12|4c6162656c6c656454797065 15308:S17|7072696e742d74797065436f6e73747273 15309:O2|3,@15310 15310:S9|74797065736574203d 15311:O5|0,0,0,@15313,@15312 15312:O2|@15316,0 15313:O2|@15314,0 15314:O2|0,@15315 15315:O5|@10264,140,140,0,0 15316:O2|3,@15317 15317:S11|4f7665726c6f6164536574 15318:O2|3,@15319 15319:S8|636f6e737472203d 15320:O2|3,@15321 15321:S6|61726773203d 15322:O5|0,0,0,@15324,@15323 15323:O2|@15327,0 15324:O2|@15325,0 15325:O2|0,@15326 15326:O5|@10264,124,124,0,0 15327:O2|3,@15328 15328:S16|54797065436f6e737472756374696f6e 15329:O1|@7359 15330:O2|3,@15331 15331:S7|76616c7565203d 15332:O2|3,@15333 15333:S10|656e636f64696e67203d 15334:O5|0,0,0,@15336,@15335 15335:O2|@15339,0 15336:O2|@15337,0 15337:O2|0,@15338 15338:O5|@10264,122,122,0,0 15339:O2|3,@15340 15340:S7|54797065566172 15341:O2|@7361,@4729 15342:O4|0,@15343,3,1 15343:O1|@7362 15344:O5|0,0,0,@15346,@15345 15345:O2|@15349,0 15346:O2|@15347,0 15347:O2|0,@15348 15348:O5|@10264,162,162,0,0 15349:O2|3,@15350 15350:S9|4669656c644c697374 15351:S20|7072696e742d6c6162656c4669656c644c697374 15352:O5|0,0,0,@15354,@15353 15353:O2|@15357,0 15354:O2|@15355,0 15355:O2|0,@15356 15356:O5|@10264,163,163,0,0 15357:O2|3,@15358 15358:S12|466c657869626c654c697374 15359:O1|@7364 15360:O5|0,0,0,@15362,@15361 15361:O2|@15365,0 15362:O2|@15363,0 15363:O2|0,@15364 15364:O5|@10264,267,267,0,0 15365:O2|3,@15366 15366:S10|4465636c617265644174 15367:O5|0,0,0,@15369,@15368 15368:O2|@15372,0 15369:O2|@15370,0 15370:O2|0,@15371 15371:O5|@10264,268,268,0,0 15372:O2|3,@15373 15373:S8|4f70656e65644174 15374:O5|0,0,0,@15376,@15375 15375:O2|@15379,0 15376:O2|@15377,0 15377:O2|0,@15378 15378:O5|@10264,270,270,0,0 15379:O2|3,@15380 15380:S10|53657175656e63654e6f 15381:O5|0,0,0,@15383,@15382 15382:O2|@15386,0 15383:O2|@15384,0 15384:O2|0,@15385 15385:O5|@10264,269,269,0,0 15386:O2|3,@15387 15387:S11|5374727563747572654174 15388:O1|@7365 15389:O2|3,@15390 15390:S11|6f66436f6e73747273203d 15391:O2|3,@15392 15392:S9|6e756c6c617279203d 15393:O5|0,0,0,@15395,@15394 15394:O2|@15398,0 15395:O2|@15396,0 15396:O2|0,@15397 15397:O5|@10264,260,260,0,0 15398:O2|3,@15399 15399:S11|436f6e7374727563746f72 15400:O5|0,0,0,@15402,@15401 15401:O2|@15405,0 15402:O2|@15403,0 15403:O2|0,@15404 15404:O5|@10264,259,259,0,0 15405:O2|3,@15406 15406:S9|457863657074696f6e 15407:O5|0,0,0,@15409,@15408 15408:O2|@15412,0 15409:O2|@15410,0 15410:O2|0,@15411 15411:O5|@10264,258,258,0,0 15412:O2|3,@15413 15413:S9|50617474426f756e64 15414:O5|0,0,0,@15416,@15415 15415:O2|@15419,0 15416:O2|@15417,0 15417:O2|0,@15418 15418:O5|@10264,257,257,0,0 15419:O2|3,@15420 15420:S8|56616c426f756e64 15421:S16|7072696e742d76616c7565436c617373 15422:O3|@7366,@4731,@4723 15423:O5|0,0,0,@15425,@15424 15424:O2|@15428,0 15425:O2|@15426,0 15426:O2|0,@15427 15427:O5|@10264,170,170,0,0 15428:O2|3,@15429 15429:S6|466f726d616c 15430:O7|@7367,@4732,@4745,@4746,@4747,@4748,@4733 15431:O2|3,@15432 15432:S10|6e756d576f726473203d 15433:O2|3,@15434 15434:S9|696e697469616c203d 15435:O2|3,@15436 15436:S7|666c616773203d 15437:O5|0,0,0,@15439,@15438 15438:O2|@10827,0 15439:O2|@15440,0 15440:O2|0,@15441 15441:O5|@11000,112,112,0,0 15442:O2|3,@15443 15443:S11|73686f7274436f6e64203d 15444:O2|3,@15445 15445:S6|6f706572203d 15446:O2|3,@15447 15447:S10|6c6f6e6743616c6c203d 15448:O2|3,@15449 15449:S6|61726732203d 15450:O2|3,@15451 15451:S6|61726731203d 15452:O5|0,0,0,@15454,@15453 15453:O2|@15457,0 15454:O2|@15455,0 15455:O2|0,@15456 15456:O5|@11000,76,76,0,0 15457:O2|3,@13314 15458:S13|7072696e742d636f6465557365 15459:O2|3,@15460 15460:S5|757365203d 15461:O2|3,@15462 15462:S6|61646472203d 15463:O1|@7370 15464:O5|0,0,0,@15466,@15465 15465:O2|@15469,0 15466:O2|@15467,0 15467:O2|0,@15468 15468:O5|@11383,137,137,0,0 15469:O2|3,@15470 15470:S14|466c6f6174696e67507454797065 15471:O5|0,0,0,@15473,@15472 15472:O2|@15476,0 15473:O2|@15474,0 15474:O2|0,@15475 15475:O5|@11383,136,136,0,0 15476:O2|3,@15477 15477:S11|47656e6572616c54797065 15478:S18|7072696e742d617267756d656e7454797065 15479:O2|3,@15480 15480:S6|6c6f6f70203d 15481:O2|3,@15482 15482:S11|617267756d656e7473203d 15483:O5|0,0,0,@15485,@15484 15484:O2|@15488,0 15485:O2|@15486,0 15486:O2|0,@15487 15487:O5|@11000,83,83,0,0 15488:O2|3,@15489 15489:S9|426567696e4c6f6f70 15490:O5|@7371,@4737,@4738,@4739,@4736 15491:O5|0,0,0,@15493,@15492 15492:O2|@15496,0 15493:O2|@15494,0 15494:O2|0,@15495 15495:O5|@11383,74,74,0,0 15496:O2|3,@10843 15497:O5|0,0,0,@15499,@15498 15498:O2|@15502,0 15499:O2|@15500,0 15500:O2|0,@15501 15501:O5|@11383,70,70,0,0 15502:O2|3,@15503 15503:S19|4669786564507265636973696f6e4172697468 15504:O5|0,0,0,@15506,@15505 15505:O2|@15509,0 15506:O2|@15507,0 15507:O2|0,@15508 15508:O5|@11383,76,76,0,0 15509:O2|3,@15510 15510:S14|4c61726765576f72644172697468 15511:O5|0,0,0,@15513,@15512 15512:O2|@15516,0 15513:O2|@15514,0 15514:O2|0,@15515 15515:O5|@11383,75,75,0,0 15516:O2|3,@15517 15517:S19|4c61726765576f7264436f6d70617269736f6e 15518:O5|0,0,0,@15520,@15519 15519:O2|@15523,0 15520:O2|@15521,0 15521:O2|0,@15522 15522:O5|@11383,77,77,0,0 15523:O2|3,@15524 15524:S16|4c61726765576f72644c6f676963616c 15525:O5|0,0,0,@15527,@15526 15526:O2|@15530,0 15527:O2|@15528,0 15528:O2|0,@15529 15529:O5|@11383,78,78,0,0 15530:O2|3,@15531 15531:S14|4c61726765576f72645368696674 15532:O5|0,0,0,@15534,@15533 15533:O2|@15537,0 15534:O2|@15535,0 15535:O2|0,@15536 15536:O5|@11383,80,80,0,0 15537:O2|3,@15538 15538:S9|5265616c4172697468 15539:O5|0,0,0,@15541,@15540 15540:O2|@15544,0 15541:O2|@15542,0 15542:O2|0,@15543 15543:O5|@11383,79,79,0,0 15544:O2|3,@15545 15545:S14|5265616c436f6d70617269736f6e 15546:O5|0,0,0,@15548,@15547 15547:O2|@15551,0 15548:O2|@15549,0 15549:O2|0,@15550 15550:O5|@11383,71,71,0,0 15551:O2|3,@15552 15552:S9|576f72644172697468 15553:O2|3,@15554 15554:S6|74657374203d 15555:O5|0,0,0,@15557,@15556 15556:O2|@15560,0 15557:O2|@15558,0 15558:O2|0,@15559 15559:O5|@11383,69,69,0,0 15560:O2|3,@15561 15561:S14|576f7264436f6d70617269736f6e 15562:O5|0,0,0,@15564,@15563 15563:O2|@15567,0 15564:O2|@15565,0 15565:O2|0,@15566 15566:O5|@11383,72,72,0,0 15567:O2|3,@15568 15568:S11|576f72644c6f676963616c 15569:O5|0,0,0,@15571,@15570 15570:O2|@15574,0 15571:O2|@15572,0 15572:O2|0,@15573 15573:O5|@11383,73,73,0,0 15574:O2|3,@15575 15575:S9|576f72645368696674 15576:S15|7072696e742d62696e6172794f7073 15577:O1|@7372 15578:O5|0,0,0,@15580,@15579 15579:O2|@15583,0 15580:O2|@15581,0 15581:O2|0,@15582 15582:O5|@11383,34,34,0,0 15583:O2|3,@15584 15584:S8|4172697468416464 15585:O5|0,0,0,@15587,@15586 15586:O2|@15590,0 15587:O2|@15588,0 15588:O2|0,@15589 15589:O5|@11383,39,39,0,0 15590:O2|3,@15591 15591:S8|4172697468446976 15592:O5|0,0,0,@15594,@15593 15593:O2|@15597,0 15594:O2|@15595,0 15595:O2|0,@15596 15596:O5|@11383,40,40,0,0 15597:O2|3,@15598 15598:S8|41726974684d6f64 15599:O5|0,0,0,@15601,@15600 15600:O2|@15604,0 15601:O2|@15602,0 15602:O2|0,@15603 15603:O5|@11383,36,36,0,0 15604:O2|3,@15605 15605:S9|41726974684d756c74 15606:O5|0,0,0,@15608,@15607 15607:O2|@15611,0 15608:O2|@15609,0 15609:O2|0,@15610 15610:O5|@11383,37,37,0,0 15611:O2|3,@15612 15612:S9|417269746851756f74 15613:O5|0,0,0,@15615,@15614 15614:O2|@15618,0 15615:O2|@15616,0 15616:O2|0,@15617 15617:O5|@11383,38,38,0,0 15618:O2|3,@15619 15619:S8|417269746852656d 15620:O5|0,0,0,@15622,@15621 15621:O2|@15625,0 15622:O2|@15623,0 15623:O2|0,@15624 15624:O5|@11383,35,35,0,0 15625:O2|3,@15626 15626:S8|4172697468537562 15627:S26|7072696e742d61726974686d657469634f7065726174696f6e73 15628:O1|@7373 15629:O5|0,0,0,@15631,@15630 15630:O2|@15634,0 15631:O2|@15632,0 15632:O2|0,@15633 15633:O5|@11383,27,27,0,0 15634:O2|3,@15635 15635:S9|54657374457175616c 15636:O5|0,0,0,@15638,@15637 15637:O2|@15641,0 15638:O2|@15639,0 15639:O2|0,@15640 15640:O5|@11383,30,30,0,0 15641:O2|3,@15642 15642:S11|5465737447726561746572 15643:O5|0,0,0,@15645,@15644 15644:O2|@15648,0 15645:O2|@15646,0 15646:O2|0,@15647 15647:O5|@11383,31,31,0,0 15648:O2|3,@15649 15649:S16|5465737447726561746572457175616c 15650:O5|0,0,0,@15652,@15651 15651:O2|@15655,0 15652:O2|@15653,0 15653:O2|0,@15654 15654:O5|@11383,28,28,0,0 15655:O2|3,@15656 15656:S8|546573744c657373 15657:O5|0,0,0,@15659,@15658 15658:O2|@15662,0 15659:O2|@15660,0 15660:O2|0,@15661 15661:O5|@11383,29,29,0,0 15662:O2|3,@15663 15663:S13|546573744c657373457175616c 15664:S20|7072696e742d74657374436f6e646974696f6e73 15665:O1|@7374 15666:O5|0,0,0,@15668,@15667 15667:O2|@15671,0 15668:O2|@15669,0 15669:O2|0,@15670 15670:O5|@11383,43,43,0,0 15671:O2|3,@15672 15672:S10|4c6f676963616c416e64 15673:O5|0,0,0,@15675,@15674 15674:O2|@15678,0 15675:O2|@15676,0 15676:O2|0,@15677 15677:O5|@11383,44,44,0,0 15678:O2|3,@15679 15679:S9|4c6f676963616c4f72 15680:O5|0,0,0,@15682,@15681 15681:O2|@15685,0 15682:O2|@15683,0 15683:O2|0,@15684 15684:O5|@11383,45,45,0,0 15685:O2|3,@15686 15686:S10|4c6f676963616c586f72 15687:S23|7072696e742d6c6f676963616c4f7065726174696f6e73 15688:O1|@7375 15689:O5|0,0,0,@15691,@15690 15690:O2|@15694,0 15691:O2|@15692,0 15692:O2|0,@15693 15693:O5|@11383,48,48,0,0 15694:O2|3,@15695 15695:S9|53686966744c656674 15696:O5|0,0,0,@15698,@15697 15697:O2|@15701,0 15698:O2|@15699,0 15699:O2|0,@15700 15700:O5|@11383,50,50,0,0 15701:O2|3,@15702 15702:S20|5368696674526967687441726974686d65746963 15703:O5|0,0,0,@15705,@15704 15704:O2|@15708,0 15705:O2|@15706,0 15706:O2|0,@15707 15707:O5|@11383,49,49,0,0 15708:O2|3,@15709 15709:S17|536869667452696768744c6f676963616c 15710:S21|7072696e742d73686966744f7065726174696f6e73 15711:O5|0,0,0,@15713,@15712 15712:O2|@15716,0 15713:O2|@15714,0 15714:O2|0,@15715 15715:O5|@11000,70,70,0,0 15716:O2|3,@15717 15717:S6|42696e617279 15718:S14|7072696e742d636f646574726565 15719:O1|@7377 15720:O5|0,0,0,@15722,@15721 15721:O2|@15725,0 15722:O2|@15723,0 15723:O2|0,@15724 15724:O5|@11383,237,237,0,0 15725:O2|3,@15726 15726:S18|426c6f636b4f70436f6d7061726542797465 15727:O5|0,0,0,@15729,@15728 15728:O2|@15732,0 15729:O2|@15730,0 15730:O2|0,@15731 15731:O5|@11383,236,236,0,0 15732:O2|3,@15733 15733:S16|426c6f636b4f70457175616c42797465 15734:O2|3,@15735 15735:S12|6973427974654d6f7665203d 15736:O5|0,0,0,@15738,@15737 15737:O2|@15741,0 15738:O2|@15739,0 15739:O2|0,@15740 15740:O5|@11383,235,235,0,0 15741:O2|3,@15742 15742:S11|426c6f636b4f704d6f7665 15743:S17|7072696e742d626c6f636b4f704b696e64 15744:O2|3,@15745 15745:S12|736f757263654c656674203d 15746:O2|3,@15747 15747:S8|6c656e677468203d 15748:O2|3,@15749 15749:S6|6b696e64203d 15750:O2|3,@15751 15751:S11|646573745269676874203d 15752:O5|0,0,0,@15754,@15753 15753:O2|@15757,0 15754:O2|@15755,0 15755:O2|0,@15756 15756:O5|@11000,107,107,0,0 15757:O2|3,@15758 15758:S14|426c6f636b4f7065726174696f6e 15759:O5|0,0,0,@15761,@15760 15760:O2|@15764,0 15761:O2|@15762,0 15762:O2|0,@15763 15763:O5|@11000,81,81,0,0 15764:O2|3,@15765 15765:S4|436f6e64 15766:O4|0,@15767,2,1 15767:O1|@7379 15768:O1|@7380 15769:S25|7072696e742d556e6976657273616c2e756e6976657273616c 15770:O5|0,0,0,@15772,@15771 15771:O2|@15775,0 15772:O2|@15773,0 15773:O2|0,@15774 15774:O5|@11000,54,54,0,0 15775:O2|3,@15776 15776:S7|436f6e73746e74 15777:O2|3,@15778 15778:S12|726573756c7454797065203d 15779:O2|3,@15780 15780:S10|66756e6374696f6e203d 15781:O2|3,@15782 15782:S9|6172674c697374203d 15783:O5|0,0,0,@15785,@15784 15784:O2|@15788,0 15785:O2|@15786,0 15786:O2|0,@15787 15787:O5|@11000,61,61,0,0 15788:O2|3,@15789 15789:S4|4576616c 15790:O5|0,0,0,@15792,@15791 15791:O2|@15795,0 15792:O2|@15793,0 15793:O2|0,@15794 15794:O5|@11000,56,56,0,0 15795:O2|3,@15796 15796:S7|45787472616374 15797:O5|0,0,0,@15799,@15798 15798:O2|@10889,0 15799:O2|@15800,0 15800:O2|0,@15801 15801:O5|@11000,110,110,0,0 15802:O2|3,@15803 15803:S9|68616e646c6572203d 15804:O2|3,@15805 15805:S5|657870203d 15806:O2|3,@15807 15807:S14|65785061636b657441646472203d 15808:O5|0,0,0,@15810,@15809 15809:O2|@15813,0 15810:O2|@15811,0 15811:O2|0,@15812 15812:O5|@11000,90,90,0,0 15813:O2|3,@15814 15814:S6|48616e646c65 15815:O2|3,@15816 15816:S11|697356617269616e74203d 15817:O5|0,0,0,@15819,@15818 15818:O2|@15822,0 15819:O2|@15820,0 15820:O2|0,@15821 15821:O5|@11000,58,58,0,0 15822:O2|3,@15823 15823:S8|496e646972656374 15824:S14|7072696e742d6c6f6164466f726d 15825:O2|3,@15826 15826:S8|726563557365203d 15827:O2|3,@15828 15828:S12|6c6f63616c436f756e74203d 15829:O2|3,@15830 15830:S10|6973496e6c696e65203d 15831:O2|3,@15832 15832:S9|636c6f73757265203d 15833:O2|3,@15834 15834:S6|626f6479203d 15835:O2|3,@15836 15836:S10|6172675479706573203d 15837:O5|0,0,0,@15839,@15838 15838:O2|@15842,0 15839:O2|@15840,0 15840:O2|0,@15841 15841:O5|@11000,79,79,0,0 15842:O2|3,@15843 15843:S6|4c616d626461 15844:O1|@7387 15845:O5|0,0,0,@15847,@15846 15846:O2|@15850,0 15847:O2|@15848,0 15848:O2|0,@15849 15849:O5|@11383,227,227,0,0 15850:O2|3,@15851 15851:S12|4c6f616453746f7265433136 15852:O5|0,0,0,@15854,@15853 15853:O2|@15857,0 15854:O2|@15855,0 15855:O2|0,@15856 15856:O5|@11383,228,228,0,0 15857:O2|3,@15858 15858:S12|4c6f616453746f7265433332 15859:O5|0,0,0,@15861,@15860 15860:O2|@15864,0 15861:O2|@15862,0 15862:O2|0,@15863 15863:O5|@11383,229,229,0,0 15864:O2|3,@15865 15865:S12|4c6f616453746f7265433634 15866:O5|0,0,0,@15868,@15867 15867:O2|@15871,0 15868:O2|@15869,0 15869:O2|0,@15870 15870:O5|@11383,226,226,0,0 15871:O2|3,@15872 15872:S11|4c6f616453746f72654338 15873:O5|0,0,0,@15875,@15874 15874:O2|@15878,0 15875:O2|@15876,0 15876:O2|0,@15877 15877:O5|@11383,231,231,0,0 15878:O2|3,@15879 15879:S16|4c6f616453746f726543446f75626c65 15880:O5|0,0,0,@15882,@15881 15881:O2|@15885,0 15882:O2|@15883,0 15883:O2|0,@15884 15884:O5|@11383,230,230,0,0 15885:O2|3,@15886 15886:S15|4c6f616453746f726543466c6f6174 15887:O2|3,@15888 15888:S13|6973496d6d757461626c65203d 15889:O5|0,0,0,@15891,@15890 15890:O2|@15894,0 15891:O2|@15892,0 15892:O2|0,@15893 15893:O5|@11383,225,225,0,0 15894:O2|3,@15895 15895:S15|4c6f616453746f72654d4c42797465 15896:O5|0,0,0,@15898,@15897 15897:O2|@15901,0 15898:O2|@15899,0 15899:O2|0,@15900 15900:O5|@11383,224,224,0,0 15901:O2|3,@15902 15902:S15|4c6f616453746f72654d4c576f7264 15903:O5|0,0,0,@15905,@15904 15904:O2|@15908,0 15905:O2|@15906,0 15906:O2|0,@15907 15907:O5|@11383,232,232,0,0 15908:O2|3,@15909 15909:S25|4c6f616453746f7265556e746167676564556e7369676e6564 15910:S19|7072696e742d6c6f616453746f72654b696e64 15911:O2|3,@15912 15912:S9|61646472657373203d 15913:O5|0,0,0,@15915,@15914 15914:O2|@15918,0 15915:O2|@15916,0 15916:O2|0,@15917 15917:O5|@11000,103,103,0,0 15918:O2|3,@15919 15919:S13|4c6f61644f7065726174696f6e 15920:O5|0,0,0,@15922,@15921 15921:O2|@15925,0 15922:O2|@15923,0 15923:O2|0,@15924 15924:O5|@11000,86,86,0,0 15925:O2|3,@15926 15926:S4|4c6f6f70 15927:S17|7072696e742d636f646542696e64696e67 15928:O5|0,0,0,@15930,@15929 15929:O2|@15933,0 15930:O2|@15931,0 15931:O2|0,@15932 15932:O5|@11000,52,52,0,0 15933:O2|3,@15934 15934:S6|4e6577656e76 15935:O5|0,0,0,@15937,@15936 15936:O2|@15940,0 15937:O2|@15938,0 15938:O2|0,@15939 15939:O5|@11000,88,88,0,0 15940:O2|3,@15941 15941:S5|5261697365 15942:O1|@7390 15943:O2|@15944,0 15944:O2|3,@15945 15945:S4|2e2e2e5d 15946:O2|@15947,0 15947:O2|3,@9598 15948:O2|3,@15949 15949:S9|66726f6d4c6973745b 15950:O2|3,@9549 15951:S20|426f6f6c566563746f722e707265747479283329 15952:O2|3,@15953 15953:S7|7475706c65203d 15954:O2|3,@15955 15955:S8|66696c746572203d 15956:O5|0,0,0,@15958,@15957 15957:O2|@15961,0 15958:O2|@15959,0 15959:O2|0,@15960 15960:O5|@11000,94,94,0,0 15961:O2|3,@15962 15962:S12|536574436f6e7461696e6572 15963:O5|0,0,0,@15965,@15964 15964:O2|@15968,0 15965:O2|@15966,0 15966:O2|0,@15967 15967:O5|@11000,105,105,0,0 15968:O2|3,@15969 15969:S14|53746f72654f7065726174696f6e 15970:O2|3,@15971 15971:S5|746167203d 15972:O2|3,@15973 15973:S8|6d6178546167203d 15974:O5|0,0,0,@15976,@15975 15975:O2|@15979,0 15976:O2|@15977,0 15977:O2|0,@15978 15978:O5|@11000,101,101,0,0 15979:O2|3,@15980 15980:S7|54616754657374 15981:O2|3,@15982 15982:S8|6669656c6473203d 15983:O5|0,0,0,@15985,@15984 15984:O2|@15988,0 15985:O2|@15986,0 15986:O2|0,@15987 15987:O5|@11000,92,92,0,0 15988:O2|3,@15989 15989:S5|5475706c65 15990:O1|@7394 15991:O5|0,0,0,@15993,@15992 15992:O2|@15996,0 15993:O2|@15994,0 15994:O2|0,@15995 15995:O5|@11383,59,59,0,0 15996:O2|3,@10272 15997:O5|0,0,0,@15999,@15998 15998:O2|@16002,0 15999:O2|@16000,0 16000:O2|0,@16001 16001:O5|@11383,58,58,0,0 16002:O2|3,@10273 16003:O5|0,0,0,@16005,@16004 16004:O2|@16008,0 16005:O2|@16006,0 16006:O2|0,@16007 16007:O5|@11383,60,60,0,0 16008:O2|3,@10274 16009:O5|0,0,0,@16011,@16010 16010:O2|@16014,0 16011:O2|@16012,0 16012:O2|0,@16013 16013:O5|@11383,57,57,0,0 16014:O2|3,@10275 16015:O5|0,0,0,@16017,@16016 16016:O2|@16020,0 16017:O2|@16018,0 16018:O2|0,@16019 16019:O5|@11383,66,66,0,0 16020:O2|3,@10276 16021:O5|0,0,0,@16023,@16022 16022:O2|@16026,0 16023:O2|@16024,0 16024:O2|0,@16025 16025:O5|@11383,54,54,0,0 16026:O2|3,@10277 16027:O5|0,0,0,@16029,@16028 16028:O2|@16032,0 16029:O2|@16030,0 16030:O2|0,@16031 16031:O5|@11383,61,61,0,0 16032:O2|3,@10278 16033:O5|0,0,0,@16035,@16034 16034:O2|@16038,0 16035:O2|@16036,0 16036:O2|0,@16037 16037:O5|@11383,56,56,0,0 16038:O2|3,@10279 16039:O5|0,0,0,@16041,@16040 16040:O2|@16044,0 16041:O2|@16042,0 16042:O2|0,@16043 16043:O5|@11383,55,55,0,0 16044:O2|3,@10280 16045:O5|0,0,0,@16047,@16046 16046:O2|@16050,0 16047:O2|@16048,0 16048:O2|0,@16049 16049:O5|@11383,53,53,0,0 16050:O2|3,@10281 16051:O5|0,0,0,@16053,@16052 16052:O2|@16056,0 16053:O2|@16054,0 16054:O2|0,@16055 16055:O5|@11383,64,64,0,0 16056:O2|3,@10282 16057:O5|0,0,0,@16059,@16058 16058:O2|@16062,0 16059:O2|@16060,0 16060:O2|0,@16061 16061:O5|@11383,65,65,0,0 16062:O2|3,@10283 16063:O5|0,0,0,@16065,@16064 16064:O2|@16068,0 16065:O2|@16066,0 16066:O2|0,@16067 16067:O5|@11383,62,62,0,0 16068:O2|3,@10284 16069:O5|0,0,0,@16071,@16070 16070:O2|@16074,0 16071:O2|@16072,0 16072:O2|0,@16073 16073:O5|@11383,63,63,0,0 16074:O2|3,@10285 16075:S14|7072696e742d756e6172794f7073 16076:O5|0,0,0,@16078,@16077 16077:O2|@16081,0 16078:O2|@16079,0 16079:O2|0,@16080 16080:O5|@11000,69,69,0,0 16081:O2|3,@16082 16082:S5|556e617279 16083:O1|@7395 16084:O5|0,0,0,@16086,@16085 16085:O2|@16089,0 16086:O2|@16087,0 16087:O2|0,@16088 16088:O5|@11000,36,36,0,0 16089:O2|3,@16090 16090:S8|4172624172697468 16091:O5|0,0,0,@16093,@16092 16092:O2|@16096,0 16093:O2|@16094,0 16094:O2|0,@16095 16095:O5|@11000,35,35,0,0 16096:O2|3,@16097 16097:S10|417262436f6d70617265 16098:S21|7072696e742d617262507265636973696f6e4f7073 16099:O3|@7396,@4732,@4746 16100:O5|0,0,0,@16102,@16101 16101:O2|@16105,0 16102:O2|@16103,0 16103:O2|0,@16104 16104:O5|@11000,46,46,0,0 16105:O2|3,@16106 16106:S8|5573654170706c79 16107:O5|0,0,0,@16109,@16108 16108:O2|@16112,0 16109:O2|@16110,0 16110:O2|0,@16111 16111:O5|@11000,45,45,0,0 16112:O2|3,@16113 16113:S9|5573654578706f7274 16114:O5|0,0,0,@16116,@16115 16115:O2|@16119,0 16116:O2|@16117,0 16117:O2|0,@16118 16118:O5|@11000,49,49,0,0 16119:O2|3,@10897 16120:O5|0,0,0,@16122,@16121 16121:O2|@16125,0 16122:O2|@16123,0 16123:O2|0,@16124 16124:O5|@11000,44,44,0,0 16125:O2|3,@16126 16126:S10|55736547656e6572616c 16127:O1|@7400 16128:O5|0,0,0,@16130,@16129 16129:O2|@16133,0 16130:O2|@16131,0 16131:O2|0,@16132 16132:O5|@11000,123,123,0,0 16133:O2|3,@16134 16134:S12|4c6f6164417267756d656e74 16135:O5|0,0,0,@16137,@16136 16136:O2|@16140,0 16137:O2|@16138,0 16138:O2|0,@16139 16139:O5|@11000,125,125,0,0 16140:O2|3,@16141 16141:S11|4c6f6164436c6f73757265 16142:O5|0,0,0,@16144,@16143 16143:O2|@16147,0 16144:O2|@16145,0 16145:O2|0,@16146 16146:O5|@11000,124,124,0,0 16147:O2|3,@16148 16148:S9|4c6f61644c6f63616c 16149:O5|0,0,0,@16151,@16150 16150:O2|@16154,0 16151:O2|@16152,0 16152:O2|0,@16153 16153:O5|@11000,126,126,0,0 16154:O2|3,@16155 16155:S13|4c6f6164526563757273697665 16156:O1|@7401 16157:O5|0,0,0,@16159,@16158 16158:O2|@16162,0 16159:O2|@16160,0 16160:O2|0,@16161 16161:O5|@11000,40,40,0,0 16162:O2|3,@16163 16163:S6|496e6c696e65 16164:O5|0,0,0,@16166,@16165 16165:O2|@16169,0 16166:O2|@16167,0 16167:O2|0,@16168 16168:O5|@11000,39,39,0,0 16169:O2|3,@16170 16170:S9|4e6f6e496e6c696e65 16171:S18|7072696e742d696e6c696e65537461747573 16172:O5|@7402,@4746,@4732,@4748,@4747 16173:O2|3,@16174 16174:S8|736574746572203d 16175:O5|0,0,0,@16177,@16176 16176:O2|@16180,0 16177:O2|@16178,0 16178:O2|0,@16179 16179:O5|@11000,118,118,0,0 16180:O2|3,@16181 16181:S9|436f6e7461696e6572 16182:O5|0,0,0,@16184,@16183 16183:O2|@16187,0 16184:O2|@16185,0 16185:O2|0,@16186 16186:O5|@11000,115,115,0,0 16187:O2|3,@16188 16188:S6|4465636c6172 16189:O5|0,0,0,@16191,@16190 16190:O2|@16194,0 16191:O2|@16192,0 16192:O2|0,@16193 16193:O5|@11000,117,117,0,0 16194:O2|3,@16195 16195:S11|4e756c6c42696e64696e67 16196:O2|3,@16197 16197:S8|6c616d626461203d 16198:O5|0,0,0,@16200,@16199 16199:O2|@16203,0 16200:O2|@16201,0 16201:O2|0,@16202 16202:O5|@11000,116,116,0,0 16203:O2|3,@16204 16204:S7|52656344656373 16205:O5|0,0,0,@16207,@16206 16206:O2|@16210,0 16207:O2|@16208,0 16208:O2|0,@16209 16209:O5|@10264,167,167,0,0 16210:O2|3,@16211 16211:S6|476c6f62616c 16212:O4|0,@16213,1,1 16213:O1|@7411 16214:O4|0,@16215,3,1 16215:O1|@7412 16216:O2|@7413,@4750 16217:O2|@11428,@16218 16218:O2|@10448,@16219 16219:O2|@16221,@16220 16220:O2|@10448,@16223 16221:O2|3,@16222 16222:S8|6c6f6f6b7570203d 16223:O2|@16224,@11424 16224:O2|3,@16225 16225:S2|666e 16226:O2|3,@16227 16227:S5|6c6576203d 16228:O5|0,0,0,@16230,@16229 16229:O2|@16233,0 16230:O2|@16231,0 16231:O2|0,@16232 16232:O5|@10099,71,71,0,0 16233:O2|3,@16234 16234:S5|4c6576656c 16235:S11|7072696e742d6c6576656c 16236:O1|@7414 16237:O4|0,@16238,3,1 16238:O1|@7415 16239:O4|0,@16240,2,2 16240:O1|@7416 16241:O5|0,0,0,@16243,@16242 16242:O2|@16246,0 16243:O2|@16244,0 16244:O2|0,@16245 16245:O5|@10199,460,460,0,0 16246:O2|3,@10886 16247:S19|7072696e742d637265617465436c6f73757265 16248:O2|3,@16249 16249:S7|6c6576656c203d 16250:O5|0,0,0,@16252,@16251 16251:O2|@16255,0 16252:O2|@16253,0 16253:O2|0,@16254 16254:O5|@10264,168,168,0,0 16255:O2|3,@10887 16256:O5|0,0,0,@16258,@16257 16257:O2|@16261,0 16258:O2|@16259,0 16259:O2|0,@16260 16260:O5|@10264,171,171,0,0 16261:O2|3,@16262 16262:S10|4f7665726c6f61646564 16263:O5|0,0,0,@16265,@16264 16264:O2|@16268,0 16265:O2|@16266,0 16266:O2|0,@16267 16267:O5|@10264,169,169,0,0 16268:O2|3,@16269 16269:S8|53656c6563746564 16270:S15|7072696e742d76616c416363657373 16271:O1|@7417 16272:O5|0,0,0,@16274,@16273 16273:O2|@16277,0 16274:O2|@16275,0 16275:O2|0,@16276 16276:O5|@10264,239,239,0,0 16277:O2|3,@16278 16278:S11|4164644f7665726c6f6164 16279:O5|0,0,0,@16281,@16280 16280:O2|@16284,0 16281:O2|@16282,0 16282:O2|0,@16283 16283:O5|@10264,236,236,0,0 16284:O2|3,@16285 16285:S9|416464507265747479 16286:O5|0,0,0,@16288,@16287 16287:O2|@16291,0 16288:O2|@16289,0 16289:O2|0,@16290 16290:O5|@10264,237,237,0,0 16291:O2|3,@10840 16292:O5|0,0,0,@16294,@16293 16293:O2|@16297,0 16294:O2|@16295,0 16295:O2|0,@16296 16296:O5|@10264,241,241,0,0 16297:O2|3,@16298 16298:S11|4765744c6f636174696f6e 16299:O5|0,0,0,@16301,@16300 16300:O2|@16304,0 16301:O2|@16302,0 16302:O2|0,@16303 16303:O5|@10264,234,234,0,0 16304:O2|3,@16305 16305:S9|476574507265747479 16306:O5|0,0,0,@16308,@16307 16307:O2|@16311,0 16308:O2|@16309,0 16309:O2|0,@16310 16310:O5|@10264,235,235,0,0 16311:O2|3,@16312 16312:S10|4d616b65537472696e67 16313:O5|0,0,0,@16315,@16314 16314:O2|@16318,0 16315:O2|@16316,0 16316:O2|0,@16317 16317:O5|@10264,238,238,0,0 16318:O2|3,@16319 16319:S8|4e6f74457175616c 16320:O5|0,0,0,@16322,@16321 16321:O2|@16325,0 16322:O2|@16323,0 16323:O2|0,@16324 16324:O5|@10264,233,233,0,0 16325:O2|3,@16326 16326:S5|5072696e74 16327:O5|0,0,0,@16329,@16328 16328:O2|@16332,0 16329:O2|@16330,0 16330:O2|0,@16331 16331:O5|@10264,240,240,0,0 16332:O2|3,@16333 16333:S7|54797065446570 16334:S19|7072696e742d74797065446570656e64656e74 16335:O4|@7418,@4726,@4727,@4751 16336:O2|3,@16337 16337:S10|7479706556617273203d 16338:O2|3,@16339 16339:S12|6964656e746966696572203d 16340:O5|0,0,0,@16342,@16341 16341:O2|@16345,0 16342:O2|@16343,0 16343:O2|0,@16344 16344:O5|@10264,150,150,0,0 16345:O2|3,@13699 16346:O3|@7422,@4752,@4723 16347:O2|3,@16348 16348:S10|6c6f636174696f6e203d 16349:O2|3,@16350 16350:S13|6465736372697074696f6e203d 16351:O2|3,@16352 16352:S8|69644b696e64203d 16353:O5|0,0,0,@16355,@16354 16354:O2|@16358,0 16355:O2|@16356,0 16356:O2|0,@16357 16357:O5|@10264,113,113,0,0 16358:O2|3,@16359 16359:S6|547970654964 16360:S12|7072696e742d747970654964 16361:O3|@7423,@4753,@4726 16362:O4|0,@16363,1,1 16363:O1|@7424 16364:O2|3,@16365 16365:S12|69734461746174797065203d 16366:O2|3,@16367 16367:S8|657154797065203d 16368:O2|3,@16369 16369:S7|6172697479203d 16370:O5|0,0,0,@16372,@16371 16371:O2|@16375,0 16372:O2|@16373,0 16373:O2|0,@16374 16374:O5|@10264,117,117,0,0 16375:O2|3,@16376 16376:S5|426f756e64 16377:O4|0,@16378,1,1 16378:O1|@7425 16379:O2|3,@16380 16380:S5|756964203d 16381:O2|3,@16382 16382:S13|616c6c6f77557064617465203d 16383:O5|0,0,0,@16385,@16384 16384:O2|@16388,0 16385:O2|@16386,0 16386:O2|0,@16387 16387:O5|@10264,116,116,0,0 16388:O2|3,@16389 16389:S4|46726565 16390:O5|0,0,0,@16392,@16391 16391:O2|@16395,0 16392:O2|@16393,0 16393:O2|0,@16394 16394:O5|@10264,118,118,0,0 16395:O2|3,@16396 16396:S6|54797065466e 16397:S16|7072696e742d7479706549644b696e64 16398:O1|@7428 16399:O5|0,0,0,@16401,@16400 16400:O2|@16404,0 16401:O2|@16402,0 16402:O2|0,@16403 16403:O5|@10264,77,77,0,0 16404:O2|3,@16405 16405:S9|46726f7a656e526566 16406:O5|0,0,0,@16401,@16407 16407:O2|@16408,0 16408:O2|3,@16409 16409:S11|5661726961626c65526566 16410:S13|7072696e742d706f7373526566 16411:S14|7072696e74706f73735265662829 16412:O5|0,0,0,@16414,@16413 16413:O2|@16417,0 16414:O2|@16415,0 16415:O2|0,@16416 16416:O5|@13820,1740,1740,0,0 16417:O2|3,@16418 16418:S7|4e6f745365656e 16419:O5|0,0,0,@16420,@11700 16420:O2|@16421,0 16421:O2|0,@16422 16422:O5|@13820,1739,1739,0,0 16423:S11|7072696e742d7374617465 16424:O1|@7430 16425:S26|5554494c49544945535f28292e6d61705461626c652832292d45 16426:S35|5554494c49544945535f28292e6d61705461626c6528322964656c6574652832292829 16427:S32|5554494c49544945535f28292e6d61705461626c65283229656e746572283129 16428:S33|5554494c49544945535f28292e6d61705461626c652832296c6f6f6b7570283129 16429:S24|5554494c49544945535f28292e6d61705461626c65283229 16430:O4|101,@13819,0,@16431 16431:O5|@13820,1748,0,1748,0 16432:O4|101,@13819,0,@16433 16433:O5|@13820,1749,0,1749,0 16434:O1|@7436 16435:S57|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229636f6e737472457128332965712d283129 16436:O4|101,@13819,0,@16437 16437:O5|@13820,93,0,93,0 16438:S54|545950455f5452454528292e636f6d707574654461746174797065457175616c697469657328322967656e457175616c697479283129 16439:O4|@4611,@9978,@16441,@16440 16440:O5|@10264,354,0,354,0 16441:S41|736574457175616c6974793a2063616e27742073657420657175616c69747920617474726962757465 16442:S43|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229283129 16443:S40|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229 16444:O6|@7438,@4698,@4696,@4693,@4642,@4714 16445:O4|@4611,@9978,@16447,@16446 16446:O5|@13820,1725,0,1725,0 16447:S28|657175616c697479202d204f7665726c6f616473657420666f756e64 16448:S23|545950455f5452454528292e657175616c697479283329 16449:O1|@7441 16450:O5|0,0,0,@16452,@16451 16451:O2|@16455,0 16452:O2|@16453,0 16453:O2|0,@16454 16454:O5|@13820,1638,1638,0,0 16455:O2|3,@16456 16456:S5|4d61796265 16457:O5|0,0,0,@16459,@16458 16458:O2|@16462,0 16459:O2|@16460,0 16460:O2|0,@16461 16461:O5|@13820,1637,1637,0,0 16462:O2|3,@16463 16463:S2|4e6f 16464:O5|0,0,0,@16466,@16465 16465:O2|@16469,0 16466:O2|@16467,0 16467:O2|0,@16468 16468:O5|@13820,1636,1636,0,0 16469:O2|3,@16470 16470:S3|596573 16471:S80|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657256616c466e283129 16472:S57|54595045434845434b5f50415253455452454528292e7061737332283529737472696e67734f665365617263684c6973742834295f2d283129 16473:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d616c6c56616c4e616d6573283129 16474:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657254797065466e283129 16475:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737341627344617461283629 16476:O2|@10239,@13949 16477:O12|@7452,@16444,@4714,@4624,@4633,@10354,@4689,@13048,@4629,@10293,@4631,@10314 16478:O1|@7453 16479:S42|2843616e6e6f7420756e6966792077697468206578706c696369742074797065207661726961626c6529 16480:O1|@7456 16481:S44|2854797065207661726961626c65206973206672656520696e20737572726f756e64696e672073636f706529 16482:S61|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296f6363757273436865636b4661696c73283229 16483:S44|2854797065207661726961626c6520746f20626520756e6966696564206f636375727320696e207479706529 16484:O1|@7460 16485:S63|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b4571547628312966696c746572283129 16486:S54|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b45715476283129 16487:O1|@7462 16488:S45|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229283129 16489:S24|28526571756972657320657175616c697479207479706529 16490:O1|@7463 16491:S60|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129283129 16492:S57|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129 16493:O1|@7468 16494:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283229 16495:S34|545950455f5452454528292e666f6c6454797065283129666f6c6454283129283129 16496:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283129 16497:S23|545950455f5452454528292e666f6c6454797065283129 16498:S42|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229 16499:S7|284669656c6420 16500:S9|206d697373696e6729 16501:S64|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f7264732834296d617463684c6162656c6c6564283229 16502:S28|28446966666572656e74206e756d626572206f66206669656c647329 16503:S48|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f726473283429 16504:S47|545950455f5452454528292e756e69667954797065732832296d61746368283229696e746572736563742832292829 16505:S27|28496e636f6d70617469626c65206f7665726c6f6164696e677329 16506:S20|28496e636f6d70617469626c6520747970657329 16507:O4|@4611,@9978,@16509,@16508 16508:O5|@13820,2443,0,2443,0 16509:S36|556e696669636174696f6e3a204f7665726c6f61645365742f4f7665726c6f6164536574 16510:S29|28446966666572656e74207479706520636f6e7374727563746f727329 16511:S32|28446966666572656e74206e756d62657273206f6620617267756d656e747329 16512:S33|545950455f5452454528292e756e69667954797065732832296d61746368283229 16513:S25|545950455f5452454528292e756e6966795479706573283229 16514:S10|417267756d656e74733a 16515:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283529 16516:O2|@7488,@14942 16517:S6|43616e277420 16518:S87|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e7374722833297072696e745769746844657363283329 16519:S71|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e737472283329 16520:S5|756e696679 16521:S2|746f 16522:O2|@10448,@16523 16523:O2|@16524,0 16524:O2|3,@16510 16525:O2|3,@16521 16526:S50|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129 16527:S36|545950455f5452454528292e756e69667954797065734572726f725265706f7274283429 16528:O3|1,1,3 16529:O2|3,@16530 16530:S7|526561736f6e3a 16531:O2|3,@16532 16532:S46|417267756d656e7473206f6620616e64616c736f206d7573742068617665207479706520626f6f6c2a626f6f6c2e 16533:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352969734e6f6e526566436f6e7374727563746f72283129 16534:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296e6f6e457870616e73697665283129 16535:S9|46756e6374696f6e3a 16536:S9|417267756d656e743a 16537:O2|@10448,@16538 16538:O2|@16539,0 16539:O5|0,0,0,0,@16540 16540:O2|@16529,@16541 16541:O2|@16528,@16542 16542:O2|@16543,0 16543:O2|3,@16544 16544:S49|56616c7565206265696e67206170706c69656420646f6573206e6f74206861766520612066756e6374696f6e2074797065 16545:O2|3,@16546 16546:S35|54797065206572726f7220696e2066756e6374696f6e206170706c69636174696f6e2e 16547:S37|2068617320616c7265616479206265656e20626f756e6420696e2074686973206d61746368 16548:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d61746368547265652832296d657373466e283329 16549:O1|@7499 16550:S28|56414c55455f4f505328292e6d616b654c6f63616c56283129283129 16551:S41|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70794964283129 16552:S49|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129283129 16553:O1|@7507 16554:S46|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129 16555:O1|@7508 16556:S28|56414c55455f4f505328292e6d6b53656c6563746564566172283329 16557:S32|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229 16558:O1|@14765 16559:S26|56414c55455f4f505328292e6c6f6f6b757056616c7565283429 16560:S21|206973206e6f74206120636f6e7374727563746f72 16561:S42|5052494e545f5441424c4528292e6765744f7665726c6f6164732831297365617263684c697374283129 16562:O4|@4611,@9978,@16564,@16563 16563:O5|@13820,2584,0,2584,0 16564:S26|676574526573756c74202d206e6f7420612066756e6374696f6e 16565:S38|545950455f5452454528292e67656e6572616c6973654f7665726c6f6164283429742d283129 16566:O4|@4611,@9978,@16568,@16567 16567:O5|@13820,2599,0,2599,0 16568:S42|67656e6572616c6973654f7665726c6f6164202d20617267206973206e6f742061207479706520766172 16569:O1|@7516 16570:S39|545950455f5452454528292e67656e6572616c6973652832296e65774d617463687c742d283129 16571:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296f7665726c6f616454797065283229 16572:O1|@7518 16573:S46|436f6e7374727563746f7220696e2061207061747465726e20776173206e6f7420616e206964656e746966696572 16574:S6|56616c75653a 16575:O2|3,@16576 16576:S11|436f6e73747261696e743a 16577:O2|3,@16578 16578:S33|54797065206d69736d6174636820696e207479706520636f6e73747261696e742e 16579:S49|4964656e746966696572206265666f72652060617327206d757374206e6f74206265206120636f6e7374727563746f722e 16580:O1|@7522 16581:S51|436f6e7374727563746f72206d757374206265206170706c69656420746f20616e20617267756d656e74207061747465726e2e 16582:O1|@7500 16583:S74|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e2836296d61704c6162656c73283129 16584:S79|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e28362970726f63657373456c656d656e74283129 16585:O1|@7525 16586:S50|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129283129 16587:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129 16588:S4|4974656d 16589:S40|456c656d656e747320696e2061206c697374206861766520646966666572656e742074797065732e 16590:S3|20313a 16591:S4|7320312d 16592:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833297072696e744c697374283429 16593:O2|@9563,0 16594:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833296170706c794c697374283329 16595:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c697374283329 16596:S62|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e283629 16597:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229626f6479456e762d283129 16598:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229 16599:S63|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283129283129 16600:O1|@7535 16601:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283529 16602:S52|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129283129 16603:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129 16604:S6|436c61757365 16605:S37|436c617573657320696e2063617365206861766520646966666572656e742074797065732e 16606:S3|49663a 16607:O2|3,@16608 16608:S46|436f6e646974696f6e20696e2069662d73746174656d656e74206d7573742068617665207479706520626f6f6c2e 16609:S91|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f707954797065436f6e73283129 16610:O1|@7545 16611:S89|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f7079547970283129283129 16612:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129 16613:S20|56616c7565206f7220636f6e7374727563746f72 16614:O1|@7547 16615:S66|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296d657373466e283329 16616:S46|436c617573657320696e20666e2065787072657373696f6e206861766520646966666572656e742074797065732e 16617:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834295f2d283129 16618:S27|545950455f5452454528292e6c696e6b5479706556617273283229 16619:S73|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834296d7367466e283329 16620:O4|@4611,@9978,@16622,@16621 16621:O5|@15137,1676,0,1676,0 16622:S41|66696e644e616d65416e6450617474733a206261646c792d666f726d65642070617273652d74726565 16623:S46|436c617573616c2066756e6374696f6e20646f6573206e6f74206861766520616e7920706172616d65746572732e 16624:S84|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342966696e644e616d65416e645061747473283129 16625:S39|2068617320616c7265616479206265656e20626f756e6420696e207468697320636c617573652e 16626:S107|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c617573652831296d657373466e283329 16627:S109|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129626f6479456e762d283129 16628:S11|45787072657373696f6e3a 16629:O2|3,@16630 16630:S51|426f6479206f662066756e2062696e64696e6720646f6573206e6f74206d61746368207479706520636f6e73747261696e742e 16631:S7|436c617573653a 16632:O2|3,@16633 16633:S14|4f7468657220636c61757365733a 16634:O2|3,@16635 16635:S59|54797065206f6620636c6175736520646f6573206e6f74206d61746368207468652074797065206f662070726576696f757320636c61757365732e 16636:S98|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129 16637:O1|@7572 16638:S95|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e672831296d6b4964656e74283229283129 16639:S9|5661726961626c653a 16640:O2|3,@16641 16641:S62|54797065206f662066756e6374696f6e20646f6573206e6f74206d617463682074797065206f6620726563757273697665206170706c69636174696f6e2e 16642:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e67283129 16643:S45|54595045434845434b5f50415253455452454528292e7061737332283529666f756e644e656172283129283129 16644:O11|@7574,@14942,@4624,@4633,@10354,@4689,@13048,@4629,@10293,@4631,@10314 16645:O1|@7575 16646:S29|696e636c75646573206120667265652074797065207661726961626c65 16647:S46|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729676976654572726f72283229 16648:S32|697320616e20756e7265736f6c76656420666c657869626c65207265636f7264 16649:O4|@4611,@9978,@16651,@16650 16650:O5|@13820,2889,0,2889,0 16651:S25|67656e6572616c3a204e6f206d61746368696e672074797065 16652:S44|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e28372967656e6572616c283329 16653:S34|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729 16654:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e283429 16655:S40|436c617573657320696e2068616e646c6572206861766520646966666572656e742074797065732e 16656:O1|@7267 16657:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283129283129 16658:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296c6f63616c456e762d283129 16659:O1|@7590 16660:O2|@16662,@16661 16661:O2|@16662,0 16662:O5|5,0,@10241,@10240,0 16663:O2|3,@16664 16664:S45|417267756d656e7473206f66206f72656c7365206d7573742068617665207479706520626f6f6c2a626f6f6c2e 16665:S6|52616973653a 16666:O2|3,@16667 16667:S42|457863657074696f6e20746f20626520726169736564206d757374206861766520747970652065786e2e 16668:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833295f2d283129 16669:S75|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833296e6577456e762d283329 16670:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329646f56616c283129656e74657256616c73283129 16671:O1|@7604 16672:S88|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b54797065732832296e6577456e762d283129 16673:S8|5061747465726e3a 16674:O2|3,@16675 16675:S47|5061747465726e20616e642065787072657373696f6e206861766520696e636f6d70617469626c652074797065732e 16676:S51|526563757273697665206465636c61726174696f6e206973206e6f74206f662074686520666f726d2060666e206d6174636827 16677:S78|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b5479706573283229 16678:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329656e746572446563283129 16679:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329 16680:S6|5768696c653a 16681:O2|3,@16682 16682:S55|4c6f6f7020636f6e646974696f6e206f66207768696c652d65787072657373696f6e206d7573742068617665207479706520626f6f6c2e 16683:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f6365737354797065283229 16684:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e74726965732832295f2d283129 16685:S35|5354525543545f56414c5328292e6d616b6553656c6563746564537472756374283329 16686:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e7472696573283229 16687:O1|@7622 16688:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229283329 16689:O1|@7623 16690:O1|@7624 16691:S68|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229626f6479456e762d283129 16692:O1|@16693 16693:S36|412066756e6374696f6e2076616c7565206973206265696e67206469736361726465642e 16694:O1|@16695 16695:S36|41206e6f6e20756e69742076616c7565206973206265696e67206469736361726465642e 16696:S27|545950455f5452454528292e636865636b44697363617264283229 16697:S22|29206973206e6f7420616e20657863657074696f6e2e 16698:O4|@4611,@9978,@16700,@16699 16699:O5|@15137,1279,0,1279,0 16700:S41|70726f63657373457863657074696f6e3a206261646c792d666f726d65642070617273652d74726565 16701:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f63657373457863657074696f6e283129 16702:S5|5468656e3a 16703:S5|456c73653a 16704:O2|3,@16705 16705:S46|54797065206d69736d61746368206265747765656e207468656e2d7061727420616e6420656c73652d706172742e 16706:S57|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229 16707:S45|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529 16708:S30|54595045434845434b5f50415253455452454528292e7061737332283529 16709:S37|4578706f72745472656528292e6578706f72744e617669676174696f6e50726f7073283329 16710:S50|4558504f52545f50415253455452454528292e6765744578706f727454726565283329636f6d6d6f6e50726f70732d283129 16711:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296173506172656e74283129 16712:O5|0,0,0,@16714,@16713 16713:O2|@16718,0 16714:O2|@16715,0 16715:O2|0,@16716 16716:O5|@16717,66,66,0,0 16717:S50|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4558504f52545f5041525345545245452e736d6c 16718:O2|3,@16719 16719:S5|4461746154 16720:O4|0,@16721,3,1 16721:O1|@7643 16722:O4|0,@16723,2,1 16723:O1|@7644 16724:O4|0,@16725,1,1 16725:O1|@7645 16726:O5|0,0,0,@16714,@16727 16727:O2|@16728,0 16728:O2|3,@16729 16729:S4|4465636c 16730:O5|0,0,0,@16714,@16731 16731:O2|@16732,0 16732:O2|3,@16733 16733:S5|5479706542 16734:S11|7072696e742d6c54797065 16735:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745472656557697468427074283129 16736:O1|@7648 16737:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296173506172656e74283129 16738:S34|4578706f72745472656528292e676574537472696e67417354726565283529283129 16739:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296765744e616d65283129 16740:O4|@7656,@14942,@16741,@4714 16741:O2|@7688,@16740 16742:S44|545950455f5452454528292e747970654578706f727454726565283329636f6d6d6f6e50726f70732d283129 16743:S40|545950455f5452454528292e747970654578706f7274547265652833296173506172656e74283129 16744:O2|@9473,0 16745:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d6765744e616d65283129 16746:S53|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d676574417267283129 16747:O1|@7672 16748:S40|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283129283129 16749:O4|@4667,@11019,0,@16750 16750:O5|@16751,88,0,88,0 16751:S34|6d6c736f757263652f4d4c436f6d70696c65722f4578706f7274547265652e736d6c 16752:S37|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283329 16753:S26|4578706f72745472656528292e6578706f72744c697374283229 16754:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d67657441726773283129 16755:O1|@7679 16756:S54|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 16757:S53|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c6428332967657454797065283129 16758:S52|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296765744c6162283129 16759:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283329 16760:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283129 16761:S29|545950455f5452454528292e747970654578706f727454726565283329 16762:S29|545950455f5452454528292e747970654578706f727454726565283129 16763:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e6728332967657454797065283129 16764:O1|@7695 16765:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283229 16766:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283129 16767:S68|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e73747273283129 16768:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329 16769:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283129 16770:O1|@7706 16771:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d617463682833296173506172656e74283129 16772:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329283129 16773:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329 16774:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283129 16775:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657445787072283129 16776:S48|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296765744d617463686573283129 16777:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657454797065283129 16778:O1|@7729 16779:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296173506172656e74283129 16780:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744f6654797065283129 16781:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744e616d65283129 16782:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274457864656328332967657450726576696f7573457863283129 16783:O2|13,@13287 16784:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283329 16785:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283129 16786:O2|@7755,@4756 16787:O5|0,0,0,@16789,@16788 16788:O2|@16792,0 16789:O2|@16790,0 16790:O2|0,@16791 16791:O5|@13820,1279,1279,0,0 16792:O2|3,@16793 16793:S12|506172736554797065426164 16794:S19|7072696e742d74797065506172736574726565 16795:O4|0,@16796,3,1 16796:O1|@7757 16797:O2|3,@16798 16798:S9|6e616d654c6f63203d 16799:O2|3,@16800 16800:S18|666f756e64436f6e7374727563746f72203d 16801:O2|3,@16802 16802:S8|6172674c6f63203d 16803:O5|0,0,0,@16805,@16804 16804:O2|@16808,0 16805:O2|@16806,0 16806:O2|0,@16807 16807:O5|@13820,1264,1264,0,0 16808:O2|3,@16809 16809:S21|506172736554797065436f6e737472756374696f6e 16810:O2|3,@16811 16811:S9|61726754797065203d 16812:O5|0,0,0,@16814,@16813 16813:O2|@16817,0 16814:O2|@16815,0 16815:O2|0,@16816 16816:O5|@13820,1273,1273,0,0 16817:O2|3,@16818 16818:S17|50617273655479706546756e6374696f6e 16819:O2|3,@16820 16820:S7|7479706573203d 16821:O5|0,0,0,@16823,@16822 16822:O2|@16826,0 16823:O2|@16824,0 16824:O2|0,@16825 16825:O5|@13820,1278,1278,0,0 16826:O2|3,@16827 16827:S11|5061727365547970654964 16828:O2|3,@16829 16829:S8|66726f7a656e203d 16830:O5|0,0,0,@16832,@16831 16831:O2|@16835,0 16832:O2|@16833,0 16833:O2|0,@16834 16834:O5|@13820,1275,1275,0,0 16835:O2|3,@16836 16836:S17|5061727365547970654c6162656c6c6564 16837:O5|0,0,0,@16839,@16838 16838:O2|@16842,0 16839:O2|@16840,0 16840:O2|0,@16841 16841:O5|@13820,1271,1271,0,0 16842:O2|3,@16843 16843:S16|50617273655479706550726f64756374 16844:O5|0,0,0,@16846,@16845 16845:O2|@16849,0 16846:O2|@16847,0 16847:O2|0,@16848 16848:O5|@16717,235,235,0,0 16849:O2|3,@16850 16850:S13|46756e436f6e73747261696e74 16851:O4|0,@16852,3,1 16852:O1|@7760 16853:O2|3,@16854 16854:S9|65787054797065203d 16855:O5|0,0,0,@16857,@16856 16856:O2|@16860,0 16857:O2|@16858,0 16858:O2|0,@16859 16859:O5|@16717,233,233,0,0 16860:O2|3,@16861 16861:S8|46756e4964656e74 16862:S14|7072696e742d66756e456e747279 16863:O5|0,0,0,@16865,@16864 16864:O2|@16868,0 16865:O2|@16866,0 16866:O2|0,@16867 16867:O5|@16717,236,236,0,0 16868:O2|3,@16869 16869:S10|46756e496e6669786564 16870:O5|0,0,0,@16872,@16871 16871:O2|@16875,0 16872:O2|@16873,0 16873:O2|0,@16874 16874:O5|@16717,234,234,0,0 16875:O2|3,@16876 16876:S8|46756e5074726565 16877:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283129 16878:S63|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e7472792833296173506172656e74283129 16879:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283329 16880:O1|@7771 16881:S57|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274464228332961734368696c642d283129 16882:S51|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727441436c61757365283329 16883:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f727454686973283129 16884:O1|@7782 16885:S72|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c6175736528332961734368696c642d283129 16886:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283329 16887:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283129 16888:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283329 16889:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283129 16890:O1|@7793 16891:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 16892:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329676574457870283129 16893:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296765744c6162283129 16894:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329 16895:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283129 16896:O1|@7805 16897:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745374727563744964656e74283129 16898:S44|4558504f52545f50415253455452454528292e6765744578706f727454726565283329676574457870283129 16899:O2|13,@13097 16900:O1|@7815 16901:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727456422833296578706f727454686973283129 16902:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283329 16903:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283129 16904:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283329 16905:O2|@7826,@15129 16906:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283129 16907:O8|@7827,@4770,@4771,@4772,@4773,@4774,@4775,@4761 16908:O4|0,@16909,3,1 16909:O1|@7829 16910:O4|0,@16911,2,1 16911:O1|@7830 16912:O4|0,@16913,1,1 16913:O1|@7831 16914:O4|0,@16915,3,1 16915:O1|@7832 16916:O4|0,@16917,1,1 16917:O1|@7833 16918:S18|7072696e742d646174617479706562696e64 16919:S14|7072696e742d7479706562696e64 16920:O2|3,@16921 16921:S11|776974687479706573203d 16922:O2|3,@16923 16923:S10|747970656c697374203d 16924:O2|3,@16925 16925:S11|697341627354797065203d 16926:O2|3,@16927 16927:S16|657175616c697479537461747573203d 16928:O2|3,@16929 16929:S9|6465636c697374203d 16930:O5|0,0,0,@16932,@16931 16931:O2|@16936,0 16932:O2|@16933,0 16933:O2|0,@16934 16934:O5|@16935,144,144,0,0 16935:S49|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f424153455f50415253455f545245452e736d6c 16936:O2|3,@16937 16937:S22|41627344617461747970654465636c61726174696f6e 16938:O2|3,@16939 16939:S8|7365636f6e64203d 16940:O2|3,@16941 16941:S7|6669727374203d 16942:O5|0,0,0,@16944,@16943 16943:O2|@16947,0 16944:O2|@16945,0 16945:O2|0,@16946 16946:O5|@16935,186,186,0,0 16947:O2|3,@16948 16948:S7|416e64616c736f 16949:O4|0,@16950,3,1 16950:O1|@7836 16951:O2|3,@16952 16952:S9|6973496e666978203d 16953:O2|3,@16954 16954:S3|66203d 16955:O5|0,0,0,@16957,@16956 16956:O2|@16960,0 16957:O2|@16958,0 16958:O2|0,@16959 16959:O5|@16935,70,70,0,0 16960:O2|3,@16961 16961:S6|4170706c6963 16962:O4|0,@16963,3,1 16963:O1|@7837 16964:S15|7072696e742d6d6174636874726565 16965:O2|3,@16966 16966:S7|6d61746368203d 16967:O2|3,@16968 16968:S14|6c6973744c6f636174696f6e203d 16969:O5|0,0,0,@16971,@16970 16970:O2|@16974,0 16971:O2|@16972,0 16972:O2|0,@16973 16973:O5|@16935,182,182,0,0 16974:O2|3,@16975 16975:S4|43617365 16976:O4|0,@16977,3,1 16977:O1|@7839 16978:O4|0,@16979,2,1 16979:O1|@7840 16980:O4|0,@16981,1,1 16981:O1|@7841 16982:O4|0,@16983,3,1 16983:O1|@7842 16984:O4|0,@16985,2,1 16985:O1|@7843 16986:O4|0,@16987,1,1 16987:O1|@7844 16988:O2|3,@16989 16989:S8|7468656e7074203d 16990:O2|3,@16991 16991:S11|7468656e427265616b203d 16992:O2|3,@16993 16993:S8|656c73657074203d 16994:O2|3,@16995 16995:S11|656c7365427265616b203d 16996:O5|0,0,0,@16997,@15760 16997:O2|@16998,0 16998:O2|0,@16999 16999:O5|@16935,74,74,0,0 17000:O2|3,@17001 17001:S7|676976656e203d 17002:O5|0,0,0,@17004,@17003 17003:O2|@17007,0 17004:O2|@17005,0 17005:O2|0,@17006 17006:O5|@16935,118,118,0,0 17007:O2|3,@17008 17008:S10|436f6e73747261696e74 17009:O2|3,@17010 17010:S9|6f6c6454797065203d 17011:O2|3,@17012 17012:S8|6f6c644c6f63203d 17013:O2|3,@17014 17014:S9|6e657754797065203d 17015:O2|3,@17016 17016:S8|6e65774c6f63203d 17017:O5|0,0,0,@17019,@17018 17018:O2|@17022,0 17019:O2|@17020,0 17020:O2|0,@17021 17021:O5|@16935,154,154,0,0 17022:O2|3,@17023 17023:S19|44617461747970655265706c69636174696f6e 17024:O1|@7845 17025:O5|0,0,0,@17027,@17026 17026:O2|@17030,0 17027:O2|@17028,0 17028:O2|0,@17029 17029:O5|@10264,502,502,0,0 17030:O2|3,@17031 17031:S5|496e666978 17032:O5|0,0,0,@17034,@17033 17033:O2|@17037,0 17034:O2|@17035,0 17035:O2|0,@17036 17036:O5|@10264,503,503,0,0 17037:O2|3,@17038 17038:S6|496e66697852 17039:O5|0,0,0,@17041,@17040 17040:O2|@17044,0 17041:O2|@17042,0 17042:O2|0,@17043 17043:O5|@10264,504,504,0,0 17044:O2|3,@17045 17045:S6|4e6f6e666978 17046:S14|7072696e742d696e666978697479 17047:O4|0,@17048,3,1 17048:O1|@7846 17049:O2|3,@17050 17050:S7|746c697374203d 17051:O2|3,@17052 17052:S5|666978203d 17053:O5|0,0,0,@17055,@17054 17054:O2|@17058,0 17055:O2|@17056,0 17056:O2|0,@17057 17057:O5|@16935,165,165,0,0 17058:O2|3,@17059 17059:S9|446972656374697665 17060:O5|0,0,0,@17062,@17061 17061:O2|@17065,0 17062:O2|@17063,0 17063:O2|0,@17064 17064:O5|@16935,200,200,0,0 17065:O2|3,@17066 17066:S9|456d70747954726565 17067:S12|7072696e742d657862696e64 17068:O5|0,0,0,@17070,@17069 17069:O2|@17073,0 17070:O2|@17071,0 17071:O2|0,@17072 17072:O5|@16935,170,170,0,0 17073:O2|3,@17074 17074:S13|45784465636c61726174696f6e 17075:O4|0,@17076,3,1 17076:O1|@7849 17077:O4|0,@17078,2,1 17078:O1|@7850 17079:O4|0,@17080,1,1 17080:O1|@7851 17081:O5|0,0,0,@17083,@17082 17082:O2|@17086,0 17083:O2|@17084,0 17084:O2|0,@17085 17085:O5|@16935,163,163,0,0 17086:O2|3,@17087 17087:S6|457870536571 17088:O4|0,@17089,3,1 17089:O1|@7852 17090:O2|3,@17091 17091:S9|6d617463686573203d 17092:O5|0,0,0,@17094,@17093 17093:O2|@17097,0 17094:O2|@17095,0 17095:O2|0,@17096 17096:O5|@16935,129,129,0,0 17097:O2|3,@17098 17098:S2|466e 17099:S14|7072696e742d6676616c62696e64 17100:O2|@17102,@17101 17101:O2|@10448,@17104 17102:O2|3,@17103 17103:S7|6170706c79203d 17104:O2|@16224,@16217 17105:O2|3,@17106 17106:S10|696d706c69636974203d 17107:O2|3,@17108 17108:S10|6578706c69636974203d 17109:O2|3,@17110 17110:S5|646563203d 17111:O5|0,0,0,@17113,@17112 17112:O2|@17116,0 17113:O2|@17114,0 17114:O2|0,@17115 17115:O5|@16935,97,97,0,0 17116:O2|3,@17117 17117:S14|46756e4465636c61726174696f6e 17118:O2|3,@17119 17119:S8|6872756c6573203d 17120:O5|0,0,0,@17122,@17121 17121:O2|@17125,0 17122:O2|@17123,0 17123:O2|0,@17124 17124:O5|@16935,174,174,0,0 17125:O2|3,@17126 17126:S10|48616e646c6554726565 17127:O4|0,@17128,3,1 17128:O1|@7856 17129:O4|0,@17130,2,1 17130:O1|@7857 17131:S14|7072696e742d66756e6374696f6e 17132:O4|0,@17133,3,1 17133:O1|@7858 17134:O2|3,@17135 17135:S10|706f737369626c65203d 17136:O5|0,0,0,@17138,@17137 17137:O2|@17141,0 17138:O2|@17139,0 17139:O2|0,@17140 17140:O5|@16935,48,48,0,0 17141:O2|3,@17142 17142:S5|4964656e74 17143:O4|0,@17144,3,1 17144:O1|@7859 17145:O4|0,@17146,3,1 17146:O1|@7861 17147:O2|3,@17148 17148:S10|76616c4f72506174203d 17149:O2|3,@17150 17150:S14|66756c6c4c6f636174696f6e203d 17151:O5|0,0,0,@17153,@17152 17152:O2|@17156,0 17153:O2|@17154,0 17154:O2|0,@17155 17155:O5|@16935,190,190,0,0 17156:O2|3,@17157 17157:S8|4c6162656c6c6564 17158:O2|3,@17159 17159:S5|766172203d 17160:O2|3,@17161 17161:S9|7061747465726e203d 17162:O5|0,0,0,@17164,@17163 17163:O2|@17167,0 17164:O2|@17165,0 17165:O2|0,@17166 17166:O5|@16935,124,124,0,0 17167:O2|3,@17168 17168:S7|4c617965726564 17169:S15|7072696e742d706172736574726565 17170:O4|0,@17171,3,1 17171:O1|@7863 17172:O2|3,@17173 17173:S10|656c656d656e7473203d 17174:O5|0,0,0,@17176,@17175 17175:O2|@17179,0 17176:O2|@17177,0 17177:O2|0,@17178 17178:O5|@16935,198,198,0,0 17179:O2|3,@17180 17180:S4|4c697374 17181:O4|0,@17182,3,1 17182:O1|@7864 17183:O2|3,@17184 17184:S9|6c69746572616c203d 17185:O2|3,@17186 17186:S11|636f6e766572746572203d 17187:O5|0,0,0,@17189,@17188 17188:O2|@17192,0 17189:O2|@17190,0 17190:O2|0,@17191 17191:O5|@16935,64,64,0,0 17192:O2|3,@17193 17193:S7|4c69746572616c 17194:O4|0,@17195,3,1 17195:O1|@7866 17196:O4|0,@17197,2,1 17197:O1|@7867 17198:O4|0,@17199,1,1 17199:O1|@7868 17200:O4|0,@17201,3,1 17201:O1|@7870 17202:O4|0,@17203,2,1 17203:O1|@7871 17204:O4|0,@17205,1,1 17205:O1|@7872 17206:O4|0,@17207,3,1 17207:O1|@7873 17208:O4|0,@17209,3,1 17209:O1|@7874 17210:O2|3,@17211 17211:S12|76617273496e426f6479203d 17212:O2|3,@17213 17213:S9|69734c6f63616c203d 17214:O2|3,@17215 17215:S6|64656373203d 17216:O5|0,0,0,@17218,@17217 17217:O2|@17221,0 17218:O2|@17219,0 17219:O2|0,@17220 17220:O5|@16935,132,132,0,0 17221:O2|3,@17222 17222:S8|4c6f63616c646563 17223:O4|0,@17224,2,3 17224:O1|@7875 17225:O4|0,@17226,3,1 17226:O1|@7876 17227:O4|0,@17228,3,1 17228:O1|@7877 17229:O4|@7878,@4764,@4727,@4723 17230:O2|3,@17231 17231:S8|7369676e6174203d 17232:O5|0,0,0,@17234,@17233 17233:O2|@17237,0 17234:O2|@17235,0 17235:O2|0,@17236 17236:O5|@10264,175,175,0,0 17237:O2|3,@13735 17238:S16|7072696e742d73747275637456616c73 17239:O3|@7880,@4727,@4751 17240:O1|@7883 17241:O2|@7884,@4767 17242:O1|@7886 17243:S18|566563746f722e7072657474792833292d45 17244:S16|566563746f722e707265747479283329 17245:S17|7072696e742d6e616d65644f7074696f6e 17246:O2|@11428,@17247 17247:O2|@10448,@17248 17248:O2|@17249,@16220 17249:O2|3,@17250 17250:S6|68617368203d 17251:O2|3,@17252 17252:S9|656e7472696573203d 17253:O5|0,0,0,@17255,@17254 17254:O2|@17258,0 17255:O2|@17256,0 17256:O2|0,@17257 17257:O5|@9977,74,74,0,0 17258:O2|3,@17259 17259:S6|46726f7a656e 17260:O1|@7892 17261:S17|41727261792e7072657474792833292d45 17262:S15|41727261792e707265747479283329 17263:S11|7072696e742d6172726179 17264:O4|0,@17265,2,1 17265:O1|@7897 17266:O4|0,@17267,1,1 17267:O1|@7898 17268:O2|3,@17269 17269:S6|75736564203d 17270:O5|0,0,0,@17272,@17271 17271:O2|@17275,0 17272:O2|@17273,0 17273:O2|0,@17274 17274:O5|@9977,68,68,0,0 17275:O2|3,@17276 17276:S4|48617368 17277:S10|7072696e742d68617368 17278:S11|7072696e74686173682829 17279:O1|@7899 17280:O5|0,0,0,@17282,@17281 17281:O2|@17285,0 17282:O2|@17283,0 17283:O2|0,@17284 17284:O5|@9977,52,52,0,0 17285:O2|3,@17286 17286:S4|4e6f6e65 17287:O5|0,0,0,@17282,@17288 17288:O2|@17289,0 17289:O2|3,@17290 17290:S4|536f6d65 17291:S18|7072696e746e616d65644f7074696f6e2829 17292:O4|0,@17293,3,1 17293:O1|@7901 17294:O4|0,@17295,2,1 17295:O1|@7902 17296:S15|7072696e742d756e6976657273616c 17297:O5|0,0,0,@17299,@17298 17298:O2|@17303,0 17299:O2|@17300,0 17300:O2|0,@17301 17301:O5|@17302,49,49,0,0 17302:S37|6d6c736f757263652f4d4c436f6d70696c65722f556e6976657273616c5461626c652e4d4c 17303:O2|3,@17304 17304:S5|5461626c65 17305:S15|7072696e742d756e69765461626c65 17306:O2|@11428,@17307 17307:O2|@10448,@17308 17308:O2|@17309,@16220 17309:O2|3,@17310 17310:S11|7479706549644d6170203d 17311:O2|3,@17312 17312:S5|746162203d 17313:O2|3,@17314 17314:S17|6669727374426f756e64496e646578203d 17315:O2|3,@17316 17316:S10|626f756e64496473203d 17317:O5|0,0,0,@17319,@17318 17318:O2|@17322,0 17319:O2|@17320,0 17320:O2|0,@17321 17321:O5|@10264,208,208,0,0 17322:O2|3,@13705 17323:S16|7072696e742d7369676e617475726573 17324:O4|0,@17325,3,1 17325:O1|@7903 17326:O4|0,@17327,3,1 17327:O1|@7904 17328:O4|0,@17329,3,1 17329:O1|@7905 17330:O4|0,@17331,3,1 17331:O1|@7906 17332:O4|0,@17333,3,1 17333:O1|@7907 17334:O4|0,@17335,3,1 17335:O1|@7908 17336:O2|3,@17337 17337:S11|7661726961626c6573203d 17338:O2|3,@17339 17339:S13|74797065636f6e73747273203d 17340:O2|3,@17341 17341:S12|73747275637475726573203d 17342:O5|0,0,0,@17344,@17343 17343:O2|@17347,0 17344:O2|@17345,0 17345:O2|0,@17346 17346:O5|@16935,107,107,0,0 17347:O2|3,@17348 17348:S7|4f70656e446563 17349:O5|0,0,0,@17351,@17350 17350:O2|@17354,0 17351:O2|@17352,0 17352:O2|0,@17353 17353:O5|@16935,188,188,0,0 17354:O2|3,@17355 17355:S6|4f72656c7365 17356:O5|0,0,0,@17358,@17357 17357:O2|@17361,0 17358:O2|@17359,0 17359:O2|0,@17360 17360:O5|@16935,203,203,0,0 17361:O2|3,@17362 17362:S13|506172656e7468657369736564 17363:O5|0,0,0,@17364,@15936 17364:O2|@17365,0 17365:O2|0,@17366 17366:O5|@16935,172,172,0,0 17367:O2|3,@17368 17368:S9|6c616254797065203d 17369:O5|0,0,0,@17371,@17370 17370:O2|@17374,0 17371:O2|@17372,0 17372:O2|0,@17373 17373:O5|@16935,195,195,0,0 17374:O2|3,@17375 17375:S8|53656c6563746f72 17376:O4|0,@17377,3,1 17377:O1|@7909 17378:O5|0,0,0,@17380,@17379 17379:O2|@17383,0 17380:O2|@17381,0 17381:O2|0,@17382 17382:O5|@16935,85,85,0,0 17383:O2|3,@17384 17384:S9|5475706c6554726565 17385:O5|0,0,0,@17387,@17386 17386:O2|@17390,0 17387:O2|@17388,0 17388:O2|0,@17389 17389:O5|@16935,142,142,0,0 17390:O2|3,@17391 17391:S15|547970654465636c61726174696f6e 17392:O5|0,0,0,@17394,@17393 17393:O2|@17397,0 17394:O2|@17395,0 17395:O2|0,@17396 17396:O5|@16935,202,202,0,0 17397:O2|3,@17398 17398:S4|556e6974 17399:S13|7072696e742d76616c62696e64 17400:O5|0,0,0,@17402,@17401 17401:O2|@17405,0 17402:O2|@17403,0 17403:O2|0,@17404 17404:O5|@16935,87,87,0,0 17405:O2|3,@17406 17406:S14|56616c4465636c61726174696f6e 17407:O4|0,@17408,3,1 17408:O1|@7913 17409:O4|0,@17410,2,1 17410:O1|@7914 17411:O4|0,@17412,1,1 17412:O1|@7915 17413:O2|3,@17414 17414:S12|627265616b506f696e74203d 17415:O5|0,0,0,@17417,@17416 17416:O2|@17420,0 17417:O2|@17418,0 17418:O2|0,@17419 17419:O5|@16935,178,178,0,0 17420:O2|3,@17421 17421:S5|5768696c65 17422:O5|0,0,0,@17424,@17423 17423:O2|@17427,0 17424:O2|@17425,0 17425:O2|0,@17426 17426:O5|@16935,201,201,0,0 17427:O2|3,@17428 17428:S8|57696c6443617264 17429:O1|@7916 17430:O4|0,@17431,3,1 17431:O1|@7917 17432:O4|0,@17433,3,1 17433:O1|@7918 17434:O4|0,@17435,2,2 17435:O1|@7919 17436:S17|7072696e742d74797065566172466f726d 17437:O2|3,@17438 17438:S6|74636f6e203d 17439:O2|3,@17440 17440:S10|6973457174797065203d 17441:O2|3,@17442 17442:S9|66756c6c4c6f63203d 17443:O2|3,@17444 17444:S9|64656354797065203d 17445:O5|0,0,0,@17447,@17446 17446:O2|@17450,0 17447:O2|@17448,0 17448:O2|0,@17449 17449:O5|@16935,242,242,0,0 17450:O2|3,@17451 17451:S8|5479706542696e64 17452:O1|@7920 17453:O4|0,@17454,2,4 17454:O1|@7921 17455:O4|0,@17456,3,1 17456:O1|@7922 17457:O4|0,@17458,3,1 17458:O1|@7923 17459:O2|3,@17460 17460:S8|69644c6f636e203d 17461:O2|3,@17462 17462:S11|636f6e73747256616c203d 17463:O2|3,@17464 17464:S12|636f6e7374724e616d65203d 17465:O2|3,@17466 17466:S11|636f6e737472417267203d 17467:O4|0,@17468,3,1 17468:O1|@7924 17469:O4|0,@17470,2,2 17470:O1|@7925 17471:O2|3,@17472 17472:S9|636f6e73747273203d 17473:O5|0,0,0,@17475,@17474 17474:O2|@17478,0 17475:O2|@17476,0 17476:O2|0,@17477 17477:O5|@16935,254,254,0,0 17478:O2|3,@17479 17479:S12|446174617479706542696e64 17480:O2|@7926,@4772 17481:O4|0,@17482,3,1 17482:O1|@7927 17483:O4|0,@17484,3,1 17484:O1|@7928 17485:O4|0,@17486,2,1 17486:O1|@7929 17487:O4|0,@17488,1,1 17488:O1|@7930 17489:O4|0,@17490,3,1 17490:O1|@7931 17491:O2|3,@17492 17492:S6|76617273203d 17493:O2|3,@17494 17494:S9|72657354797065203d 17495:O5|0,0,0,@17497,@17496 17496:O2|@17500,0 17497:O2|@17498,0 17498:O2|0,@17499 17499:O5|@16935,279,279,0,0 17500:O2|3,@17501 17501:S9|4d6174636854726565 17502:O2|@7932,@4772 17503:O4|0,@17504,3,1 17504:O1|@7933 17505:O4|0,@17506,3,1 17506:O1|@7934 17507:O2|3,@17508 17508:S10|70726576696f7573203d 17509:O2|3,@17510 17510:S8|6f6654797065203d 17511:O5|0,0,0,@17513,@17512 17512:O2|@17516,0 17513:O2|@17514,0 17514:O2|0,@17515 17515:O5|@16935,266,266,0,0 17516:O2|3,@17517 17517:S6|457842696e64 17518:O2|@7935,@4776 17519:O4|0,@17520,3,1 17520:O1|@7936 17521:S16|7072696e742d6676616c636c61757365 17522:O4|0,@17523,3,1 17523:O1|@7938 17524:O4|0,@17525,1,1 17525:O1|@7939 17526:O4|0,@17527,3,1 17527:O1|@7940 17528:O2|3,@17529 17529:S12|6e756d4f665061747473203d 17530:O2|3,@17531 17531:S10|66756e6374566172203d 17532:O2|3,@17533 17533:S9|636c6175736573203d 17534:O5|0,0,0,@17536,@17535 17535:O2|@17539,0 17536:O2|@17537,0 17537:O2|0,@17538 17538:O5|@16935,222,222,0,0 17539:O2|3,@17540 17540:S8|4656616c42696e64 17541:O2|@7941,@4772 17542:O4|0,@17543,3,1 17543:O1|@7942 17544:O4|0,@17545,2,1 17545:O1|@7943 17546:O4|0,@17547,1,1 17547:O1|@7944 17548:O4|0,@17549,3,1 17549:O1|@7946 17550:O4|0,@17551,3,1 17551:O1|@7947 17552:O2|3,@17553 17553:S7|6964656e74203d 17554:O2|3,@17555 17555:S12|636f6e73747261696e74203d 17556:O2|3,@17557 17557:S6|6c696e65203d 17558:O5|0,0,0,@17560,@17559 17559:O2|@17563,0 17560:O2|@17561,0 17561:O2|0,@17562 17562:O5|@16935,233,233,0,0 17563:O2|3,@17564 17564:S10|4656616c436c61757365 17565:O2|@7948,@4772 17566:O4|0,@17567,3,1 17567:O1|@7949 17568:O4|0,@17569,3,1 17569:O1|@7950 17570:O2|3,@17571 17571:S13|6973526563757273697665203d 17572:O5|0,0,0,@17574,@17573 17573:O2|@17577,0 17574:O2|@17575,0 17575:O2|0,@17576 17576:O5|@16935,206,206,0,0 17577:O2|3,@17578 17578:S7|56616c42696e64 17579:O1|@7951 17580:S50|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832295f2d283129 17581:S45|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e283229 17582:S56|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c6465632832296c6f63616c456e762d283129 17583:O1|@7958 17584:S55|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229626f6479456e762d283129 17585:S44|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229 17586:S59|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329283129 17587:S10|53747275637475726520 17588:S29|535452554354555245535f28292e6572726f724d73674e656172283529 17589:S56|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329 17590:S61|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332963617074757265496473283129 17591:O1|@7970 17592:O1|@7971 17593:S35|535452554354555245535f28292e6d61726b56616c7341734578706f72746564283129 17594:S69|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329706173733253747275637475726542696e64283629 17595:S48|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329 17596:S28|535452554354555245535f28292e7061737332537472756374283829 17597:S39|535452554354555245535f28292e73747275637456616c756528382974797065456e762d283129 17598:S52|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e744d616b65547970654964283129 17599:O4|11,@9429,0,@17600 17600:O5|@17601,1743,0,1743,0 17601:S34|6d6c736f757263652f4d4c436f6d70696c65722f535452554354555245535f2e4d4c 17602:S54|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129283129 17603:S51|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129 17604:O2|@7978,@14904 17605:O1|@7979 17606:O5|0,0,0,@17608,@17607 17607:O2|@17611,0 17608:O2|@17609,0 17609:O2|0,@17610 17610:O5|@14909,463,463,0,0 17611:O2|3,@17612 17612:S8|46726565536c6f74 17613:O5|0,0,0,@17615,@17614 17614:O2|@17618,0 17615:O2|@17616,0 17616:O2|0,@17617 17617:O5|@14909,461,461,0,0 17618:O2|3,@17619 17619:S10|53686172656457697468 17620:O5|0,0,0,@17622,@17621 17621:O2|@17625,0 17622:O2|@17623,0 17623:O2|0,@17624 17624:O5|@14909,464,464,0,0 17625:O2|3,@17626 17626:S5|556e736574 17627:O4|0,@17628,3,1 17628:O1|@7980 17629:O2|3,@17630 17630:S14|6465736372697074696f6e73203d 17631:O2|3,@17632 17632:S9|626f756e644964203d 17633:O5|0,0,0,@17635,@17634 17634:O2|@17638,0 17635:O2|@17636,0 17636:O2|0,@17637 17637:O5|@14909,462,462,0,0 17638:O2|3,@17639 17639:S12|5661726961626c65536c6f74 17640:S11|7072696e742d7661724964 17641:O2|@7981,@17642 17642:O2|@8085,@17641 17643:S54|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e7465722836292d45 17644:O1|@7984 17645:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529737472756374456e762d283129 17646:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629283129 17647:S39|2920697320616c72656164792070726573656e7420696e2074686973207369676e61747572652e 17648:S28|5349474e41545552455328292e6572726f724d73674e656172283529 17649:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629 17650:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283129283129 17651:O1|@7990 17652:O1|@7993 17653:O1|@7994 17654:O4|@4611,@9978,@17656,@17655 17655:O5|@14909,991,0,991,0 17656:S29|456e746572696e672066756e63746f7220696e207369676e6174757265 17657:O1|@7995 17658:O4|@4611,@9978,@17660,@17659 17659:O5|@14909,990,0,990,0 17660:S31|456e746572696e67207369676e617475726520696e207369676e6174757265 17661:O1|@7996 17662:O4|@4611,@9978,@17664,@17663 17663:O5|@14909,989,0,989,0 17664:S28|456e746572696e672066697869747920696e207369676e6174757265 17665:S60|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657256616c283129 17666:O4|11,@9429,0,@17667 17667:O5|@9966,138,0,138,0 17668:O4|103,@10021,@17670,@17669 17669:O5|@17671,93,0,93,0 17670:S39|417474656d707420746f207570646174652061206c6f636b656420737472657463684172726179 17671:S35|6d6c736f757263652f4d4c436f6d70696c65722f5374726574636841727261792e4d4c 17672:S22|5374726574636841727261792e757064617465283329 17673:S39|5349474e41545552455328292e73696756616c2836296d616b655661726961626c654964283629 17674:S58|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f636573735369672833296d616b654964283429 17675:O1|@8006 17676:S37|545950455f5452454528292e747970655065726d697473457175616c697479283129283129 17677:O1|@8007 17678:O4|@4611,@9978,@17680,@17679 17679:O5|@14909,493,0,493,0 17680:S20|7265616c49643a2053686172696e67206c6f6f70 17681:O1|@8008 17682:O1|@8009 17683:O1|@8010 17684:O1|@8011 17685:O4|@4611,@9978,@17687,@17686 17686:O5|@14909,1261,0,1261,0 17687:S30|696e7465726e616c4d61703a204e6f7420626f756e64206f722046726565 17688:S64|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332966696e64457175616c697479283129 17689:S66|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657246696e616c54797065283129 17690:S35|5349474e41545552455328292e67697665537065634572726f72283329283129283129 17691:S32|5349474e41545552455328292e67697665537065634572726f72283329283129 17692:S12|53706563696679696e672022 17693:S13|2220697320696c6c6567616c2e 17694:S14|20696e207369676e61747572652e 17695:S31|5349474e41545552455328292e676976654572726f72283329283129283129 17696:S66|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e742833296c6f6f6b75704661696c757265283129283129 17697:O4|@4667,@11019,0,@17698 17698:O5|@14909,709,0,709,0 17699:S37|5349474e41545552455328292e73696756616c283629747970654964456e76283129283129 17700:S34|5349474e41545552455328292e73696756616c283629747970654964456e76283129 17701:S46|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229676574283429 17702:S40|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229 17703:O1|@8037 17704:S62|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283229283129 17705:S59|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283129 17706:S54|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129676574457175616c73283429 17707:O1|@8040 17708:O4|@4667,@11019,0,@17709 17709:O5|@14909,676,0,676,0 17710:S50|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e745368617265283129283129 17711:S62|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e74536861726528312973686f7754797065436f6e73283229 17712:O2|@10625,@17713 17713:O2|@17715,@17714 17714:O2|@10448,@17716 17715:O2|3,@9551 17716:O2|@17717,0 17717:O2|3,@17718 17718:S58|546865207479706520636f6e7374727563746f72732074616b6520646966666572656e74206e756d62657273206f6620617267756d656e74732e 17719:O2|3,@17720 17720:S9|776974682074797065 17721:O2|3,@17722 17722:S17|43616e6e6f742073686172652074797065 17723:S25|5349474e41545552455328292e7072696e7444657363283329 17724:O2|3,@17725 17725:S21|697320616c726561647920646566696e6564206173 17726:O4|@4611,@9978,@17728,@17727 17727:O5|@14909,552,0,552,0 17728:S30|6c696e6b466c657869626c65547970654964733a206e6f7420626f756e64 17729:O4|@4611,@9978,@17731,@17730 17730:O5|@14909,540,0,540,0 17731:S38|6c696e6b466c657869626c65547970654964733a20646966666572656e742061726974696573 17732:O4|@4611,@9978,@17734,@17733 17733:O5|@14909,550,0,550,0 17734:S33|6c696e6b466c657869626c65547970654964733a206e6f74207661726961626c65 17735:S44|5349474e41545552455328292e73696756616c2836296c696e6b466c657869626c6554797065496473283229 17736:O4|@4611,@9978,@17738,@17737 17737:O5|@14909,504,0,504,0 17738:S5|6973566172 17739:S35|5349474e41545552455328292e73696756616c28362973686172655479706573283829 17740:S56|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329736861726553747275637473283129 17741:S41|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329 17742:S47|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e74283329 17743:S69|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329705374727563742832296e6577456e762d283129 17744:S11|5369676e61747572652028 17745:S32|5349474e41545552455328292e73696756616c2836296c6f6f6b536967283229 17746:O1|@8060 17747:S49|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529762d283129 17748:S66|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e65774964732832296e65774d6170283129 17749:O4|@4611,@9978,@17751,@17750 17750:O5|@14909,778,0,778,0 17751:S28|4d617020646f6573206e6f742072657475726e20426f756e64204964 17752:S57|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e6577496473283229 17753:S59|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d61704964732d6d61704964283129 17754:S44|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529 17755:S59|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332970537472756374283229 17756:O1|@8072 17757:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329283129 17758:O1|@8073 17759:O4|@4611,@9978,@17761,@17760 17760:O5|@14909,1141,0,1141,0 17761:S21|6e65774163636573733a204e6f7420466f726d616c 17762:S77|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657254797065283129 17763:S79|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e746572537472756374283129 17764:S76|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657256616c283129 17765:S65|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229 17766:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329 17767:S36|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529 17768:S59|5349474e41545552455328292e73696756616c2836297369676e61747572655768657265547970652837296c6f6f6b75704661696c757265283129 17769:S28|5349474e41545552455328292e676976654572726f72283329283129 17770:S46|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729283129 17771:S2|6060 17772:O2|3,@17773 17773:S24|2068617320616c7265616479206265656e2073657420746f 17774:O2|3,@17775 17775:S30|43616e6e6f74206170706c792074797065207265616c69736174696f6e2e 17776:O4|@4611,@9978,@17778,@17777 17777:O5|@14909,937,0,937,0 17778:S12|736574576865726554797065 17779:O1|@8092 17780:O1|@8093 17781:S16|697320616e2065717479706520627574 17782:S25|646f6573206e6f74207065726d697420657175616c6974792e 17783:S64|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e7453657428322974797065456e762d283129 17784:S56|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229283129 17785:S53|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229 17786:O4|@4611,@9978,@17778,@17787 17787:O5|@14909,935,0,935,0 17788:S17|6973206120646174617479706520627574 17789:S21|6973206e6f7420612073696d706c6520747970652e 17790:S43|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729 17791:O1|@8098 17792:S44|434f5049455228292e6765744e65787452756e74696d654f66667365742831296765744f6666736574283329 17793:O4|@4611,@9978,@17795,@17794 17794:O5|@14909,1350,0,1350,0 17795:S21|6d61704964733a636f707954797065436f6e737472 17796:S40|5349474e41545552455328292e73696756616c2836296d6170496473283229636f70794964283129 17797:O1|@8103 17798:S49|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129283129 17799:O1|@8104 17800:S46|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129 17801:O1|@8105 17802:S8|73686172696e6720 17803:O4|@4611,@9978,@17805,@17804 17804:O5|@14909,1376,0,1376,0 17805:S6|6d6170496473 17806:S31|5349474e41545552455328292e73696756616c2836296d6170496473283229 17807:S36|5349474e41545552455328292e73696756616c2836296d617046756e6374696f6e283129 17808:S22|5349474e41545552455328292e73696756616c283629 17809:S40|535452554354555245535f28292e73747275637456616c75652838296c6f63616c456e762d283129 17810:O1|@8114 17811:S38|535452554354555245535f28292e73747275637456616c75652838296e6577456e762d283129 17812:O1|@8120 17813:O4|@4611,@9978,@17815,@17814 17814:O5|@17601,1574,0,1574,0 17815:S21|46756e63746f7220696e2053747275637420456e64 17816:O1|@8121 17817:O4|@4611,@9978,@17819,@17818 17818:O5|@17601,1573,0,1573,0 17819:S23|5369676e617475726520696e2053747275637420456e64 17820:O1|@8122 17821:O1|@8126 17822:O1|@8125 17823:S45|535452554354555245535f28292e6d616b65436f7079416374696f6e732831296d61746368456e747279283329 17824:S32|535452554354555245535f28292e6d616b65436f7079416374696f6e73283129 17825:S40|535452554354555245535f28292e73747275637456616c7565283829656e7465724974656d283429 17826:S57|535452554354555245535f28292e73747275637456616c75652838296d61746368416374696f6e737c6d61746368526573756c74732d283129 17827:S32|434f5049455228292e7265706c6163654d6170283529747376456e762d283129 17828:S22|434f5049455228292e7265706c6163654d6170283529 17829:S42|535452554354555245535f28292e6d61746368536967732838297461726765742d6e65774d6170283129 17830:O4|@4611,@9978,@17832,@17831 17831:O5|@17601,1035,0,1035,0 17832:S48|43616e646964617465207374727563747572652077697468206e6f6e2d656d70747920626f756e64204944206c697374 17833:S39|535452554354555245535f28292e6d61746368536967732838296c6f6f6b757054797065283129 17834:S39|535452554354555245535f28292e6d6174636853696773283829726573756c7454797065283129 17835:O1|@8140 17836:O4|@8144,@14942,@14941,@16477 17837:O2|@10448,@17838 17838:O2|@10969,0 17839:O1|@8150 17840:O5|0,0,0,0,@17841 17841:O2|@10904,@14923 17842:O2|@17843,@15016 17843:O3|1,1,4 17844:S53|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e737472283429 17845:S57|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e73747252657374283229 17846:S40|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d6170283429 17847:O2|@17849,@17848 17848:O1|@8156 17849:O1|@8155 17850:S58|535452554354555245535f28292e6d61746368536967732838296d617463684e616d65732833292833297072696e7454797065456e762d283129 17851:S56|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c617954797065283129 17852:O1|@8157 17853:S61|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c6179537472756374757265283129 17854:S18|20696e207375622d73747275637475726520 17855:S34|53747275637475726520646f6573206e6f74206d61746368207369676e6174757265 17856:O2|3,@17857 17857:S10|5369676e61747572653a 17858:O2|@10448,@17859 17859:O2|@17860,0 17860:O5|0,3,0,0,@17861 17861:O2|@17863,@17862 17862:O2|@10448,@17865 17863:O2|3,@17864 17864:S10|5374727563747572653a 17865:O2|@17866,0 17866:O2|3,@17867 17867:S11|4e6f742070726573656e74 17868:S36|535452554354555245535f28292e7369675374727563744d697373696e674d7367283629 17869:O2|3,@17870 17870:S47|54797065732074616b6520646966666572656e74206e756d62657273206f66207479706520617267756d656e74732e 17871:S34|535452554354555245535f28292e7369675374727563744d617463684d7367283829 17872:O2|3,@17873 17873:S35|5479706520696e20737472756374757265206973206e6f742061206461746174797065 17874:O1|@8161 17875:O1|@8162 17876:O2|3,@17877 17877:S41|5479706520696e20737472756374757265206973206e6f7420616e20657175616c6974792074797065 17878:S42|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329 17879:S39|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329 17880:O1|@8163 17881:O2|@17883,@17882 17882:O1|@8170 17883:O1|@8169 17884:S49|535452554354555245535f28292e636865636b54797065436f6e737472732838297072696e7454797065456e762d283129 17885:S52|535452554354555245535f28292e636865636b54797065436f6e737472732838296572726f72496e44617461747970652d283129 17886:S36|535452554354555245535f28292e6d617463685479706573283429636f70794964283129 17887:O1|@8174 17888:S48|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129283129 17889:O1|@8175 17890:S45|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129 17891:O1|@8176 17892:S43|535452554354555245535f28292e6d617463685479706573283429636f7079546172676574283129283129 17893:O1|@8177 17894:S27|535452554354555245535f28292e6d617463685479706573283429 17895:S5|6d61746368 17896:O2|@17897,0 17897:S55|207761732070726573656e7420696e207468652073747275637475726520627574206e6f7420696e20746865207369676e61747572652e 17898:S14|3a20636f6e7374727563746f7220 17899:S30|4572726f72207768696c65206d61746368696e6720646174617479706520 17900:S33|535452554354555245535f28292e636865636b54797065436f6e73747273283829 17901:S56|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d6174636853747275637475726573283329 17902:O2|3,@17903 17903:S11|636f6e7374727563746f72 17904:S53|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329646973706c617956616c7565283129 17905:O5|0,0,0,@17907,@17906 17906:O2|@17910,0 17907:O2|@17908,0 17908:O2|0,@17909 17909:O5|@17601,1266,1266,0,0 17910:O2|3,@17911 17911:S4|49734f4b 17912:O1|@8182 17913:O5|0,0,0,@17907,@17914 17914:O2|@17915,0 17915:O2|3,@17916 17916:S7|497357726f6e67 17917:S15|7072696e742d6d6174636854797065 17918:O2|1,@17919 17919:O2|3,@17920 17920:S25|56616c7565206973206e6f7420616e20657863657074696f6e 17921:O2|1,@17922 17922:O2|3,@17923 17923:S26|56616c7565206973206e6f74206120636f6e7374727563746f72 17924:O1|@8183 17925:S57|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d617463684c6f63616c56616c756573283329 17926:S38|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329 17927:S26|535452554354555245535f28292e6d6174636853696773283829 17928:O4|@4611,@9978,@17930,@17929 17929:O5|@17601,1408,0,1408,0 17930:S24|6d61746368547970654964733a204e6f7420466f726d616c 17931:S29|535452554354555245535f28292e6d6174636854797065496473283229 17932:S9|46756e63746f722028 17933:S32|535452554354555245535f28292e676976654572726f72283329283129283129 17934:S29|535452554354555245535f28292e676976654572726f72283329283129 17935:S30|437265617465642066726f6d206170706c79696e672066756e63746f7220 17936:O4|@4611,@9978,@17938,@17937 17937:O5|@17601,1513,0,1513,0 17938:S9|4e6f7420426f756e64 17939:S44|535452554354555245535f28292e73747275637456616c75652838296d616b654e6577547970654964283229 17940:S48|535452554354555245535f28292e73747275637456616c7565283829676574436f6d62696e6564547970654964283129 17941:S29|437265617465642066726f6d206f7061717565207369676e6174757265 17942:O4|@4611,@9978,@17938,@17943 17943:O5|@17601,1770,0,1770,0 17944:S46|535452554354555245535f28292e73747275637456616c7565283829725369672d6d617463686564496473283129 17945:S42|535452554354555245535f28292e73747275637456616c7565283829725369672d6f6c644d6170283129 17946:S28|535452554354555245535f28292e73747275637456616c7565283829 17947:O2|@8205,@13862 17948:S31|545950454944434f444528292e636f6465466f72556e697175654964283129 17949:S50|545950455f5452454528292e636865636b466f7246726565547970655661726961626c657328342967656e4e616d65283129 17950:S38|436f6e73747275637465642066726f6d206120667265652074797065207661726961626c652e 17951:O2|@17952,0 17952:S65|2920636f6e7461696e73206120667265652074797065207661726961626c652e2053657474696e6720697420746f206120756e69717565206d6f6e6f747970652e 17953:S13|5468652074797065206f662028 17954:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283229 17955:S56|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129283129 17956:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129 17957:S40|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429 17958:S49|535452554354555245535f28292e706173733253747275637473283329636865636b5661726961626c6573283229283129 17959:O1|@8212 17960:S79|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229636865636b456e747279283329 17961:S66|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229 17962:S54|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329283129 17963:S8|46756e63746f7220 17964:S51|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329 17965:O4|@4611,@9978,@17967,@17966 17966:O5|@17601,2191,0,2191,0 17967:S29|6d6b49643a204e6f7420426f756e64206f72206e6f7420466f726d616c 17968:S70|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296d6b4964283129 17969:S98|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296172675369675769746853656c65637465642d6d6170546f53656c6563746564283129 17970:S68|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132295f2d283129 17971:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229656e7657697468417267732d283129 17972:O1|@8235 17973:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296e6577547970654964283129 17974:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129283129 17975:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129 17976:S73|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132297265735369672d283129 17977:S3|28292e 17978:O1|@8240 17979:S76|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229726573547970654d6170283129 17980:S63|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229 17981:S10|5369676e617475726520 17982:S43|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229 17983:O1|@8250 17984:S32|535452554354555245535f28292e706173733253747275637473283329283129 17985:S29|535452554354555245535f28292e706173733253747275637473283329 17986:O1|@8251 17987:O5|0,0,0,@17989,@17988 17988:O2|@17992,0 17989:O2|@17990,0 17990:O2|0,@17991 17991:O5|@17601,129,129,0,0 17992:O2|3,@17993 17993:S18|436f6e7374727563746f72546f56616c7565 17994:O5|0,0,0,@17996,@17995 17995:O2|@17999,0 17996:O2|@17997,0 17997:O2|0,@17998 17998:O5|@17601,128,128,0,0 17999:O2|3,@18000 18000:S16|457863657074696f6e546f56616c7565 18001:O5|0,0,0,@18003,@18002 18002:O2|@18006,0 18003:O2|@18004,0 18004:O2|0,@18005 18005:O5|@17601,127,127,0,0 18006:O2|3,@18007 18007:S10|4e6f436f657263696f6e 18008:S20|7072696e742d76616c7565436f657263696f6e73 18009:O3|@8252,@18060,@18010 18010:O3|@8380,@18061,@18060 18011:O1|@8253 18012:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329283129 18013:O1|@8255 18014:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283129283129 18015:S48|535452554354555245535f28292e746f704465634578706f727454726565283329636f6d6d6f6e50726f70732d283129 18016:O1|@8259 18017:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296173506172656e74283129 18018:O1|@8263 18019:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296578706f727454686973283129 18020:S44|5349474e41545552455328292e7369674578706f727454726565283329636f6d6d6f6e50726f70732d283129 18021:O1|@8266 18022:S40|5349474e41545552455328292e7369674578706f7274547265652833296173506172656e74283129 18023:O1|@8269 18024:O1|@8270 18025:S45|5349474e41545552455328292e737065634578706f727454726565283329636f6d6d6f6e50726f70732d283129 18026:S41|5349474e41545552455328292e737065634578706f7274547265652833296173506172656e74283129 18027:S40|5349474e41545552455328292e737065634578706f72745472656528332967657454797065283129 18028:S40|5349474e41545552455328292e737065634578706f7274547265652833296765744e616d65283129 18029:O1|@8282 18030:S29|5349474e41545552455328292e7369674578706f727454726565283129 18031:O1|@8284 18032:O1|@8285 18033:S54|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296578706f727454686973283129 18034:S56|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329676574536967537472756374283129 18035:S51|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296765744e616d65283129 18036:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329 18037:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283129 18038:S30|5349474e41545552455328292e737065634578706f727454726565283329 18039:S30|5349474e41545552455328292e737065634578706f727454726565283129 18040:S29|5349474e41545552455328292e7369674578706f727454726565283329 18041:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574536967283129 18042:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574426f6479283129 18043:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574417267283129 18044:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296765744e616d65283129 18045:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329 18046:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283129 18047:O1|@8307 18048:O1|@8308 18049:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296578706f727454686973283129 18050:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329676574536967283129 18051:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296765744e616d65283129 18052:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329 18053:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283129 18054:S33|535452554354555245535f28292e746f704465634578706f727454726565283329 18055:O4|@4667,@11019,0,@18056 18056:O5|@17601,835,0,835,0 18057:S58|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329 18058:S47|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329 18059:S34|535452554354555245535f28292e737472756374734578706f727454726565283229 18060:O5|@8317,@18010,@4780,@4781,@18061 18061:O2|@8379,@18010 18062:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329636f6d6d6f6e50726f70732d283129 18063:S49|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296173506172656e74283129 18064:S53|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296765745369676e6174757265283129 18065:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329676574537472756374757265283129 18066:O5|0,0,0,@18068,@18067 18067:O2|@18071,0 18068:O2|@18069,0 18069:O2|0,@18070 18070:O5|@17601,714,714,0,0 18071:O2|3,@18072 18072:S3|446563 18073:O5|0,0,0,@18068,@15263 18074:S16|7072696e742d616c6c456e7472696573 18075:S54|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296578706f7274456e7472696573283129 18076:S54|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f72417267283129 18077:S55|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f724e616d65283129 18078:S38|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329 18079:O4|@8334,@4782,@4780,@4781 18080:S21|7072696e742d636f72654465636c61726174696f6e 18081:O5|0,0,0,@18083,@18082 18082:O2|@18086,0 18083:O2|@18084,0 18084:O2|0,@18085 18085:O5|@17601,187,187,0,0 18086:O2|3,@18087 18087:S8|436f72654c616e67 18088:S15|7072696e742d737472756374446563 18089:O5|0,0,0,@18090,@17217 18090:O2|@18091,0 18091:O2|0,@18092 18092:O5|@17601,194,194,0,0 18093:O4|0,@18094,3,1 18094:O1|@8340 18095:O4|0,@18096,3,1 18096:O1|@8341 18097:O2|3,@18098 18098:S8|76616c526566203d 18099:O2|3,@18100 18100:S9|68617665536967203d 18101:O4|0,@18102,3,1 18102:O1|@8342 18103:O4|0,@18104,3,1 18104:O1|@8343 18105:O2|3,@18106 18106:S17|74797065496473466f724465627567203d 18107:O2|3,@18108 18108:S10|62696e64696e6773203d 18109:O5|0,0,0,@18111,@18110 18110:O2|@18114,0 18111:O2|@18112,0 18112:O2|0,@18113 18113:O5|@17601,180,180,0,0 18114:O2|3,@18115 18115:S12|537472756374757265446563 18116:O1|@8344 18117:O2|@8345,@4784 18118:O5|0,0,0,@18120,@18119 18119:O2|@18123,0 18120:O2|@18121,0 18121:O2|0,@18122 18122:O5|@10264,506,506,0,0 18123:O2|3,@18124 18124:S9|466978537461747573 18125:S15|7072696e742d666978537461747573 18126:O5|0,0,0,@18128,@18127 18127:O2|@18131,0 18128:O2|@18129,0 18129:O2|0,@18130 18130:O5|@17601,114,114,0,0 18131:O2|3,@18132 18132:S7|436f7265466978 18133:O5|0,0,0,@18135,@18134 18134:O2|@18138,0 18135:O2|@18136,0 18136:O2|0,@18137 18137:O5|@17601,115,115,0,0 18138:O2|3,@18139 18139:S10|436f7265537472756374 18140:O5|0,0,0,@18142,@18141 18141:O2|@18145,0 18142:O2|@18143,0 18143:O2|0,@18144 18144:O5|@17601,113,113,0,0 18145:O2|3,@18146 18146:S8|436f726554797065 18147:O5|0,0,0,@18149,@18148 18148:O2|@18152,0 18149:O2|@18150,0 18150:O2|0,@18151 18151:O5|@17601,112,112,0,0 18152:O2|3,@18153 18153:S9|436f726556616c7565 18154:O4|@8346,@4785,@4781,@4780 18155:O4|0,@18156,3,1 18156:O1|@8347 18157:O4|0,@18158,2,2 18158:O1|@8348 18159:O2|3,@18160 18160:S8|736f75726365203d 18161:O2|3,@18162 18162:S6|64657374203d 18163:O4|0,@18164,3,1 18164:O1|@8351 18165:O4|0,@18166,2,2 18166:O1|@8352 18167:O4|0,@18168,3,1 18168:O1|@8353 18169:O4|0,@18170,3,1 18170:O1|@8354 18171:O5|@8355,@4764,@4727,@4787,@4723 18172:O5|0,0,0,@18174,@18173 18173:O2|@18177,0 18174:O2|@18175,0 18175:O2|0,@18176 18176:O5|@10264,219,219,0,0 18177:O2|3,@18178 18178:S7|46756e63746f72 18179:S14|7072696e742d66756e63746f7273 18180:O2|3,@18181 18181:S8|726573496473203d 18182:O2|3,@18183 18183:S17|6d61746368546f417267756d656e74203d 18184:O2|3,@18185 18185:S8|617267496473203d 18186:O5|0,0,0,@18188,@18187 18187:O2|@18191,0 18188:O2|@18189,0 18189:O2|0,@18190 18190:O5|@17601,150,150,0,0 18191:O2|3,@18192 18192:S11|46756e63746f724170706c 18193:O5|0,0,0,@18195,@18194 18194:O2|@18198,0 18195:O2|@18196,0 18196:O2|0,@18197 18197:O5|@17601,162,162,0,0 18198:O2|3,@18199 18199:S6|4c6574446563 18200:O3|@8358,@4791,@4789 18201:S11|7072696e742d7370656373 18202:O5|0,0,0,@18204,@18203 18203:O2|@18207,0 18204:O2|@18205,0 18205:O2|0,@18206 18206:O5|@14909,78,78,0,0 18207:O2|3,@18208 18208:S6|536967446563 18209:O4|0,@18210,3,1 18210:O1|@8360 18211:O4|0,@18212,3,1 18212:O1|@8361 18213:O5|0,0,0,@18215,@18214 18214:O2|@18218,0 18215:O2|@18216,0 18216:O2|0,@18217 18217:O5|@14909,76,76,0,0 18218:O2|3,@18219 18219:S14|5369676e61747572654964656e74 18220:O4|0,@18221,2,2 18221:O1|@8362 18222:O2|3,@18223 18223:S10|747970654e616d65203d 18224:O2|3,@18225 18225:S8|736967457870203d 18226:O2|3,@18227 18227:S13|7265616c69736174696f6e203d 18228:O5|0,0,0,@18230,@18229 18229:O2|@18233,0 18230:O2|@18231,0 18231:O2|0,@18232 18232:O5|@14909,80,80,0,0 18233:O2|3,@18234 18234:S9|576865726554797065 18235:S10|7072696e742d73696773 18236:O2|@8363,@4789 18237:O5|0,0,0,@18238,@18141 18238:O2|@18239,0 18239:O2|0,@18240 18240:O5|@14909,91,91,0,0 18241:O4|0,@18242,3,1 18242:O1|@8364 18243:O5|0,0,0,@18245,@18244 18244:O2|@18248,0 18245:O2|@18246,0 18246:O2|0,@18247 18247:O5|@14909,88,88,0,0 18248:O2|3,@18249 18249:S5|4578536967 18250:O5|0,0,0,@18252,@18251 18251:O2|@18255,0 18252:O2|@18253,0 18253:O2|0,@18254 18254:O5|@14909,99,99,0,0 18255:O2|3,@18256 18256:S10|496e636c756465536967 18257:O4|0,@18258,2,2 18258:O1|@8366 18259:O2|3,@18260 18260:S8|736861726573203d 18261:O2|3,@18262 18262:S8|697354797065203d 18263:O5|0,0,0,@18265,@18264 18264:O2|@18268,0 18265:O2|@18266,0 18266:O2|0,@18267 18267:O5|@14909,97,97,0,0 18268:O2|3,@18269 18269:S7|53686172696e67 18270:O2|3,@18271 18271:S11|736967537472756374203d 18272:O5|0,0,0,@18274,@18273 18273:O2|@18277,0 18274:O2|@18275,0 18275:O2|0,@18276 18276:O5|@14909,83,83,0,0 18277:O2|3,@18278 18278:S12|537472756374757265536967 18279:O5|0,0,0,@18281,@18280 18280:O2|@18284,0 18281:O2|@18282,0 18282:O2|0,@18283 18283:O5|@14909,85,85,0,0 18284:O2|3,@18285 18285:S6|56616c536967 18286:O4|0,@18287,3,1 18287:O1|@8370 18288:O4|0,@18289,2,2 18289:O1|@8371 18290:O2|3,@18291 18291:S5|737472203d 18292:O2|3,@18293 18293:S8|7369674c6f63203d 18294:O2|3,@18295 18295:S11|6f7061717565496473203d 18296:O2|3,@18297 18297:S8|6f7061717565203d 18298:O2|3,@18299 18299:S19|6d61746368546f436f6e73747261696e74203d 18300:O2|3,@18301 18301:S6|63736967203d 18302:O5|0,0,0,@18304,@18303 18303:O2|@18307,0 18304:O2|@18305,0 18305:O2|0,@18306 18306:O5|@17601,169,169,0,0 18307:O2|3,@18308 18308:S13|536967436f6e73747261696e74 18309:O2|3,@18310 18310:S15|6d61746368546f526573756c74203d 18311:O2|3,@18312 18312:S7|616c697374203d 18313:O5|0,0,0,@18315,@18314 18314:O2|@18318,0 18315:O2|@18316,0 18316:O2|0,@18317 18317:O5|@17601,143,143,0,0 18318:O2|3,@18319 18319:S9|537472756374446563 18320:O4|0,@18321,3,1 18321:O1|@8375 18322:O4|0,@18323,3,1 18323:O1|@8376 18324:O5|0,0,0,@18326,@18325 18325:O2|@18329,0 18326:O2|@18327,0 18327:O2|0,@18328 18328:O5|@17601,136,136,0,0 18329:O2|3,@18330 18330:S14|5374727563747572654964656e74 18331:S17|7072696e742d73747275637456616c7565 18332:O3|@8377,@4785,@4717 18333:O2|3,@18334 18334:S17|736f75726365537472756374757265203d 18335:O2|3,@18336 18336:S15|636f6e74656e74734d61746368203d 18337:O5|0,0,0,@18339,@18338 18338:O2|@18342,0 18339:O2|@18340,0 18340:O2|0,@18341 18341:O5|@17601,121,121,0,0 18342:O2|3,@18343 18343:S14|5374727563747572654d61746368 18344:O2|3,@18345 18345:S12|736f7572636549644e6f203d 18346:O2|3,@18347 18347:S12|6973457175616c697479203d 18348:O5|0,0,0,@18350,@18349 18349:O2|@18353,0 18350:O2|@18351,0 18351:O2|0,@18352 18352:O5|@17601,123,123,0,0 18353:O2|3,@18354 18354:S11|5479706549644d61746368 18355:O2|3,@18356 18356:S12|74617267657454797065203d 18357:O2|3,@18358 18358:S13|736f7572636556616c7565203d 18359:O2|3,@18360 18360:S10|636f657263696f6e203d 18361:O5|0,0,0,@18363,@18362 18362:O2|@18366,0 18363:O2|@18364,0 18364:O2|0,@18365 18365:O5|@17601,119,119,0,0 18366:O2|3,@18367 18367:S10|56616c75654d61746368 18368:S19|7072696e742d76616c75654d61746368696e67 18369:S33|535452554354555245535f28292e7374727563744578706f727454726565283129 18370:S48|535452554354555245535f28292e7374727563744578706f727454726565283329636f6d6d6f6e50726f70732d283129 18371:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296173506172656e74283129 18372:O1|@8386 18373:S57|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296578706f727454686973283129 18374:S55|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f7274534228332967657456616c7565283129 18375:S54|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296765744e616d65283129 18376:S59|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329676574536967537472756374283129 18377:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329 18378:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283129 18379:S33|535452554354555245535f28292e7374727563744578706f727454726565283329 18380:O1|@8396 18381:O1|@8399 18382:O1|@8405 18383:O1|@8406 18384:S103|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832297472616e73706f7365283129 18385:O1|@8410 18386:S107|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832296f726967696e616c566172732d283129 18387:S91|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e6365283229 18388:O2|@8415,@18389 18389:O10|@8431,@4624,@10354,@13048,@10293,@10314,@4631,@4629,@4689,@4633 18390:S44|545950455f5452454528292e6c6561737447656e6572616c28312967657454797065436f6e73747273283129 18391:O4|@4667,@11019,0,@18392 18392:O5|@13820,3105,0,3105,0 18393:S39|545950455f5452454528292e6c6561737447656e6572616c2831296c6561737441726773283129 18394:S17|4c697374506169722e756e7a6970283229 18395:S27|545950455f5452454528292e6c6561737447656e6572616c283129 18396:O4|@4611,@9978,@18398,@18397 18397:O5|@13820,2764,0,2764,0 18398:S40|74797065436f6e73747246726f6d4f7665726c6f61643a204e6f206d61746368696e672074797065 18399:O4|@4611,@9978,@18398,@18400 18400:O5|@13820,2772,0,2772,0 18401:O4|@4611,@9978,@18398,@18402 18402:O5|@13820,2762,0,2762,0 18403:S37|545950455f5452454528292e74797065436f6e73747246726f6d4f7665726c6f6164283229 18404:O4|@4611,@9978,@18406,@18405 18405:O5|@15137,2217,0,2217,0 18406:S36|72656475636554797065733a20556e61626c6520746f2073657420747970652076617273 18407:S59|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c54797065732832296c6561737447656e457870283129 18408:S53|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e53747275637456616c7565283129 18409:S51|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e537472756374446563283129 18410:S40|535452554354555245535f28292e67656e636f6465537472756374732833296d6b41646472283129 18411:O3|@18412,@14696,0 18412:O1|@8439 18413:S37|44454255474745525f28292e696e697469616c44656275676765725374617475732d283129 18414:S72|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e642833296d6b41646472283129 18415:O4|@4611,@9978,@18417,@18416 18416:O5|@10099,93,0,93,0 18417:S34|6d6b4c6f61643a206c6576656c206d757374206265206e6f6e2d6e65676174697665 18418:O4|@4611,@9978,@15116,@18419 18419:O5|@10099,90,0,90,0 18420:S34|434f44455452454528292e6e65774c6576656c283129746869734c6576656c283129 18421:O4|@4611,@9978,@18423,@18422 18422:O5|@18424,80,0,80,0 18423:S9|4e6f20616363657373 18424:S34|6d6c736f757263652f4d4c436f6d70696c65722f545950454944434f44452e736d6c 18425:S28|545950454944434f444528292e636f64654163636573732832292829 18426:S29|434f44455452454528292e6d756c7469706c6555736573283429283129 18427:S35|434f44455452454528292e6d756c7469706c65557365732834296c6f6164466e283129 18428:S47|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629666f6c64496473283329 18429:O1|@18430 18430:O3|6,6,0 18431:O1|@18432 18432:O3|6,7,0 18433:S26|44454255474745525f28292e7570646174655374617465283529 18434:S37|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629 18435:O4|@4611,@9978,@18423,@18436 18436:O5|@18437,668,0,668,0 18437:S32|6d6c736f757263652f4d4c436f6d70696c65722f56414c55455f4f50532e4d4c 18438:S27|56414c55455f4f505328292e636f64654163636573732832292829 18439:S50|44454255474745525f28292e6d616b655374727563744465627567456e74726965732836296c6f6164537472756374283329 18440:S37|44454255474745525f28292e6d616b655374727563744465627567456e7472696573283629 18441:O1|@8465 18442:S40|56414c55455f4f505328292e6170706c7946756e6374696f6e283729676574436f6e737472283129 18443:O7|@8468,@18497,@18620,@18721,@18733,@18444,@13862 18444:O4|@8517,@18497,@18620,@18721 18445:S48|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229283129 18446:S56|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322973616d6554797065283229 18447:S68|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229283129 18448:S65|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229 18449:S70|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329283129 18450:S67|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329 18451:S45|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229 18452:S47|545950454944434f444528292e547970655661724d61702e636865636b54797065436f6e7374727563746f72283229 18453:S27|545950454944434f444528292e6765744d61784465707468283329 18454:O1|@8483 18455:S62|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296571436f64652d283129 18456:O1|@8485 18457:S39|545950454944434f444528292e6d616b654571283429636f6d62696e65456e7472696573283229 18458:O4|@4611,@9978,@18460,@18459 18459:O5|@18424,631,0,631,0 18460:S6|676574417267 18461:O1|@8492 18462:S59|545950454944434f444528292e626f7865646e657373466f7254797065283429626f7865646e657373466f72436f6e737472756374696f6e283229 18463:O4|@4611,@9978,@18465,@18464 18464:O5|@18424,377,0,377,0 18465:S43|626f7865646e6573733a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 18466:O4|@4611,@9978,@18468,@18467 18467:O5|@18424,393,0,393,0 18468:S30|626f7865646e657373466f72547970653a20556e6b6e6f776e2074797065 18469:S32|545950454944434f444528292e626f7865646e657373466f7254797065283429 18470:O1|@8496 18471:S49|545950454944434f444528292e73697a65466f725479706528342973697a65466f72436f6e737472756374696f6e283229 18472:O4|@4611,@9978,@18474,@18473 18473:O5|@18424,429,0,429,0 18474:S38|73697a653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 18475:O4|@4611,@9978,@18477,@18476 18476:O5|@18424,455,0,455,0 18477:S25|73697a65466f72547970653a20556e6b6e6f776e2074797065 18478:S27|545950454944434f444528292e73697a65466f7254797065283429 18479:S57|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229676574417267283129 18480:S48|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229 18481:O4|@4611,@9978,@18483,@18482 18482:O5|@18424,683,0,683,0 18483:S40|6d616b6545713a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 18484:O4|@4611,@9978,@18486,@18485 18485:O5|@18424,719,0,719,0 18486:S21|457175616c69747920666f722066756e6374696f6e 18487:S10|65717b2e2e2e7d283229 18488:S22|545950454944434f444528292e6d616b654571283429 18489:O1|@8502 18490:S72|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296765745479706556616c7565466f724944283129 18491:O1|@8504 18492:S65|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329626f786564436f64652d283129 18493:O1|@8506 18494:S64|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d6574657228332973697a65436f64652d283129 18495:S52|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329 18496:S32|545950454944434f444528292e6170706c79546f496e7374616e636527283429 18497:O3|6,@18499,@18498 18498:O2|@18504,0 18499:O4|@18501,@18500,2,1 18500:O1|@8509 18501:O1|@8508 18502:S10|6572726f72436f646532 18503:S14|7072696e742d66756e6374696f6e 18504:O4|@4620,@9574,@18505,0 18505:O3|3,4,@18506 18506:O6|@4961,@10094,@18508,@18518,@18519,@18507 18507:O2|@4968,@18535 18508:O2|@4967,@18509 18509:O2|@18511,@18510 18510:O2|@18514,@13684 18511:O2|@10700,@18512 18512:O3|1,@18513,@10104 18513:O8|@10072,@18502,0,0,@13442,0,0,1 18514:O2|@10584,@18515 18515:O3|1,@18516,@10104 18516:O8|@18517,@18503,0,0,@10565,0,0,1 18517:O3|6,@15032,0 18518:O16|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 18519:O17|@18521,@18525,@18524,@18523,@18501,@18500,@18499,@18527,@18526,@18529,@18528,@18531,@18530,@18532,@18522,@18533,@18520 18520:O4|@10300,@18533,1,1 18521:O7|@18523,@18499,@18526,@18528,@18530,@18522,@18520 18522:O4|@10321,@18532,3,1 18523:O4|@18525,@18524,3,1 18524:O1|@8511 18525:O1|@8510 18526:O4|@10154,@18527,1,1 18527:O1|@8512 18528:O4|@10046,@18529,3,1 18529:O1|@8513 18530:O4|@10248,@18531,1,1 18531:O1|@8514 18532:O1|@8515 18533:O1|@8516 18534:S10|7072696e742d63686172 18535:O2|@18537,@18536 18536:O2|0,@18606 18537:O2|@18538,0 18538:O4|@4619,@9574,@18539,0 18539:O2|0,@18540 18540:O2|0,@18541 18541:O2|@18543,@18542 18542:O2|@18556,@18555 18543:O2|@18545,@18544 18544:O2|@18551,0 18545:O4|@4619,@9574,@18546,0 18546:O2|@18547,@10055 18547:O2|@18548,0 18548:O4|@4620,@9574,@18549,0 18549:O3|1,@10167,@18550 18550:O6|@4959,@10094,@10104,@10093,@10159,@10091 18551:O4|@4620,@9574,@18552,0 18552:O3|3,4,@18553 18553:O4|@4969,@18554,@18546,@18526 18554:O2|@18549,@10140 18555:O2|@18569,@18568 18556:O2|@18558,@18557 18557:O2|@18564,0 18558:O4|@4619,@9574,@18559,0 18559:O2|@18560,@10055 18560:O2|@18561,0 18561:O4|@4620,@9574,@18562,0 18562:O3|1,@10060,@18563 18563:O6|@4959,@10094,@10059,@10109,@10131,@10116 18564:O4|@4620,@9574,@18565,0 18565:O3|3,4,@18566 18566:O4|@4969,@18567,@18559,@18528 18567:O2|@18562,@10140 18568:O2|@18582,@18581 18569:O2|@18571,@18570 18570:O2|@18577,0 18571:O4|@4619,@9574,@18572,0 18572:O2|@18573,@10055 18573:O2|@18574,0 18574:O4|@4620,@9574,@18575,0 18575:O3|1,@10167,@18576 18576:O6|@4959,@10094,@10104,@10093,@10252,@10091 18577:O4|@4620,@9574,@18578,0 18578:O3|3,4,@18579 18579:O4|@4969,@18580,@18572,@18530 18580:O2|@18575,@10140 18581:O2|@18594,0 18582:O2|@18584,@18583 18583:O2|@18590,0 18584:O4|@4619,@9574,@18585,0 18585:O2|@18586,@10055 18586:O2|@18587,0 18587:O4|@4620,@9574,@18588,0 18588:O3|1,@10332,@18589 18589:O6|@4959,@10094,@10104,@10093,@10326,@10091 18590:O4|@4620,@9574,@18591,0 18591:O3|3,4,@18592 18592:O4|@4969,@18593,@18585,@18522 18593:O2|@18588,@10140 18594:O2|@18596,@18595 18595:O2|@18602,0 18596:O4|@4619,@9574,@18597,0 18597:O2|@18598,@10055 18598:O2|@18599,0 18599:O4|@4620,@9574,@18600,0 18600:O3|1,@10167,@18601 18601:O6|@4959,@10094,@10104,@10093,@10304,@10091 18602:O4|@4620,@9574,@18603,0 18603:O3|3,4,@18604 18604:O4|@4969,@18605,@18597,@18520 18605:O2|@18600,@10140 18606:O2|0,@18607 18607:O2|0,@18608 18608:O2|0,@18609 18609:O2|0,@18610 18610:O2|0,@18611 18611:O2|0,@18612 18612:O2|@18543,@18613 18613:O2|0,@18614 18614:O2|@18556,@18615 18615:O2|0,@18616 18616:O2|@18569,@18617 18617:O2|0,@18618 18618:O2|@18582,@18619 18619:O2|0,@18581 18620:O2|@18622,@18621 18621:O2|@18643,@18642 18622:O2|@10147,@18623 18623:O3|6,@18526,@18624 18624:O2|@18545,@18625 18625:O2|@18626,0 18626:O4|@4620,@9574,@18627,0 18627:O3|3,4,@18628 18628:O6|@4961,@10094,@18629,@18518,@18519,@18507 18629:O2|@4967,@18630 18630:O2|@18632,@18631 18631:O2|@18634,@10173 18632:O2|@18633,@18549 18633:O3|0,@10154,@18547 18634:O2|@10490,@18635 18635:O3|1,@18636,@10104 18636:O8|@18637,@11676,0,0,@10171,0,0,1 18637:O4|7,@18639,@18638,1 18638:O3|13,@10757,@18640 18639:O2|@10082,0 18640:O3|@18641,0,0 18641:O3|6,@4622,0 18642:O2|@18663,@18662 18643:O2|@10034,@18644 18644:O3|6,@18528,@18645 18645:O2|@18558,@18646 18646:O2|@18647,0 18647:O4|@4620,@9574,@18648,0 18648:O3|3,4,@18649 18649:O6|@4961,@10094,@18650,@18518,@18519,@18507 18650:O2|@4967,@18651 18651:O2|@18653,@18652 18652:O2|@18655,@10123 18653:O2|@18654,@18562 18654:O3|0,@10046,@18560 18655:O2|@10563,@18656 18656:O3|1,@18657,@10104 18657:O8|@18658,@11676,0,0,@10171,0,0,1 18658:O4|7,@18639,@18659,1 18659:O3|13,@10757,@18660 18660:O3|@18661,0,0 18661:O3|6,@4618,0 18662:O2|@18683,@18682 18663:O2|@10240,@18664 18664:O3|6,@18530,@18665 18665:O2|@18571,@18666 18666:O2|@18667,0 18667:O4|@4620,@9574,@18668,0 18668:O3|3,4,@18669 18669:O6|@4961,@10094,@18670,@18518,@18519,@18507 18670:O2|@4967,@18671 18671:O2|@18673,@18672 18672:O2|@18675,@10173 18673:O2|@18674,@18575 18674:O3|0,@10248,@18573 18675:O2|@14283,@18676 18676:O3|1,@18677,@10104 18677:O8|@18678,@15235,0,0,@10171,0,0,1 18678:O4|7,@18639,@18679,1 18679:O3|13,@10757,@18680 18680:O3|@18681,0,0 18681:O3|6,@4626,0 18682:O2|@18702,0 18683:O2|@10314,@18684 18684:O3|6,@18522,@18685 18685:O2|@18584,@18686 18686:O2|@18687,0 18687:O4|@4620,@9574,@18688,0 18688:O3|3,4,@18689 18689:O6|@4961,@10094,@18690,@18518,@18519,@18507 18690:O2|@4967,@18691 18691:O2|@18693,@18692 18692:O2|@18695,@10123 18693:O2|@18694,@18588 18694:O3|0,@10321,@18586 18695:O2|@14297,@18696 18696:O3|1,@18697,@10104 18697:O8|@18698,@9981,0,0,@10171,0,0,1 18698:O4|7,@18639,@18699,1 18699:O3|13,@10757,@18700 18700:O3|@18701,0,0 18701:O3|6,@4630,0 18702:O2|@10293,@18703 18703:O3|6,@18520,@18704 18704:O2|@18596,@18705 18705:O2|@18706,0 18706:O4|@4620,@9574,@18707,0 18707:O3|3,4,@18708 18708:O6|@4961,@10094,@18709,@18518,@18519,@18507 18709:O2|@4967,@18710 18710:O2|@18712,@18711 18711:O2|@18714,@10173 18712:O2|@18713,@18600 18713:O3|0,@10300,@18598 18714:O2|@14313,@18715 18715:O3|1,@18716,@10104 18716:O8|@18717,@18534,0,0,@10171,0,0,1 18717:O4|7,@18639,@18718,1 18718:O3|13,@10757,@18719 18719:O3|@18720,0,0 18720:O3|6,@4628,0 18721:O3|6,@18523,@18722 18722:O2|@18723,0 18723:O4|@4620,@9574,@18724,0 18724:O3|3,4,@18725 18725:O6|@4961,@10094,@18726,@18518,@18519,@18507 18726:O2|@4967,@18727 18727:O2|@18729,@18728 18728:O2|@18730,@10123 18729:O2|@10165,@18512 18730:O2|@10389,@18731 18731:O3|1,@18732,@10104 18732:O8|@13865,@13864,0,0,@10565,0,0,1 18733:O2|12,@18734 18734:O8|@10072,@18735,0,0,@13442,1,0,1 18735:S10|6e6f457175616c697479 18736:O2|@10566,@18737 18737:O2|@18738,0 18738:O3|6,@14596,0 18739:O2|@10566,@18740 18740:O2|@18741,0 18741:O3|6,@10286,0 18742:O1|@8518 18743:O1|@8524 18744:S70|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832296d616b655072696e7465724964283129636f6465466f724964283129 18745:S6|7072696e742d 18746:O4|@4611,@9978,@18748,@18747 18747:O5|@18424,470,0,470,0 18748:S48|7072696e746572466f72547970653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 18749:O2|@10566,@18750 18750:O2|@18751,0 18751:O3|6,@18752,0 18752:S7|3c656d7074793e 18753:O3|20,@18749,1 18754:S11|7072696e742d656d707479 18755:O3|20,@18739,1 18756:S14|7072696e742d6c6162656c6c6564 18757:O1|@8532 18758:S59|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283229283129 18759:S56|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283129 18760:O2|@18761,0 18761:O4|3,@10400,@10066,@13334 18762:O2|0,@9546 18763:O4|@4667,@11019,0,@18764 18764:O5|@18424,565,0,565,0 18765:O2|@10066,@18766 18766:O2|@10066,@13586 18767:O3|20,@18768,1 18768:O2|@10066,@18766 18769:O2|@10566,@18770 18770:O2|@18771,0 18771:O3|6,@9549,0 18772:O3|20,@18769,1 18773:O3|20,@18774,1 18774:O2|@10066,@18766 18775:O3|20,@18776,1 18776:O2|@10066,@18766 18777:S53|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f646528322961735265636f7264283229 18778:O3|20,@18765,1 18779:O2|@10566,@18780 18780:O2|@18781,0 18781:O3|6,@9630,0 18782:O3|20,@18779,1 18783:O2|@10566,@18784 18784:O2|@18785,0 18785:O3|6,@9628,0 18786:O3|20,@18783,1 18787:O3|20,@18736,1 18788:S42|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f6465283229 18789:S30|545950454944434f444528292e7072696e746572466f7254797065283329 18790:O2|@9922,@9922 18791:O4|@8544,@18497,@18620,@18721 18792:O1|@8546 18793:S45|545950454944434f444528292e657175616c697479466f7254797065283329726573756c74436f64652d283129 18794:S8|657175616c697479 18795:S31|545950454944434f444528292e657175616c697479466f7254797065283329 18796:O4|@4611,@9978,@18798,@18797 18797:O5|@18437,1060,0,1060,0 18798:S14|4f7665726c6f616420457175616c 18799:O4|@4611,@9978,@18801,@18800 18800:O5|@18437,1073,0,1073,0 18801:S17|4f7665726c6f6164204e6f74457175616c 18802:O2|@8549,@4690 18803:S41|5052494e545f5441424c4528292e6765744f7665726c6f61642833297365617263684c697374283129 18804:S28|5052494e545f5441424c4528292e6765744f7665726c6f6164283329 18805:O1|@8551 18806:O4|@4611,@9978,@18808,@18807 18807:O5|@18437,683,0,683,0 18808:S28|6765744f7665726c6f6164496e7374616e63653a204d697373696e67 18809:S37|56414c55455f4f505328292e6765744f7665726c6f6164496e7374616e6365283429283129 18810:O4|@4611,@9978,@18812,@18811 18811:O5|@18437,1086,0,1086,0 18812:S16|4f7665726c6f61642054797065446570 18813:S4|636f6e76 18814:O4|103,@10021,@18816,@18815 18815:O5|@18437,1113,0,1113,0 18816:S56|43616e6e6f7420696e7374616c6c20616e206f7665726c6f61642077697468696e206120737472756374757265206f722066756e63746f72 18817:O4|103,@10021,@18819,@18818 18818:O5|@18437,1115,0,1115,0 18819:S52|496e76616c6964207479706520286e6f742061207479706520636f6e737472756374696f6e2920286164644f7665726c6f616429 18820:S42|56414c55455f4f505328292e6170706c7946756e6374696f6e283729666f6c6c6f775479706573283129 18821:S45|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283229 18822:S48|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283129283129 18823:S49|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f616447656e6572616c283129 18824:S28|56414c55455f4f505328292e6170706c7946756e6374696f6e283729 18825:S36|56414c55455f4f505328292e636f646556616c283629666f6c6c6f775479706573283129 18826:S14|6164645072657474795072696e74 18827:O1|@8562 18828:O2|3,@18829 18829:S133|6164645072657474795072696e7420656c656d656e742066756e6374696f6e73206d75737420686176652074797065202761202a20696e74202d3e207072657474792c202762202a20696e74202d3e207072657474792c202e2e2e2077697468206f6e652066756e6374696f6e20666f722065616368207479706520706172616d65746572 18830:S27|56414c55455f4f505328292e636f646556616c2836295f2d283129 18831:S13|417267756d656e7420666f7220 18832:O2|3,@18833 18833:S14|526571756972656420747970653a 18834:O2|3,@18835 18835:S14|417267756d656e7420747970653a 18836:S26|56414c55455f4f505328292e636865636b505054797065283629 18837:O3|6,@18838,0 18838:O1|@8564 18839:O4|103,@10021,@18841,@18840 18840:O5|@18437,999,0,999,0 18841:S68|6164645072657474795072696e743a2054686520617267756d656e74207479706520776173206e6f7420612073696d706c65207479706520636f6e737472756374696f6e 18842:S25|56414c55455f4f505328292e636f646556616c283629283129 18843:O2|@18844,0 18844:O4|11,@18845,1,0 18845:O2|8,@10068 18846:O2|@18847,0 18847:O4|11,@18845,0,0 18848:O2|@18845,0 18849:S7|61646450502d31 18850:O2|@18851,0 18851:O4|11,@13567,1,0 18852:O4|@4611,@9978,@18854,@18853 18853:O5|@18437,1003,0,1003,0 18854:S42|4f7665726c6f6164656420416464507265747479202d2077726f6e6720696e7374616e63652074797065 18855:S12|416464507265747479285029 18856:O3|6,@18857,0 18857:O1|@8568 18858:O4|103,@10021,@18841,@18859 18859:O5|@18437,870,0,870,0 18860:O3|6,@18861,0 18861:O1|@8569 18862:O4|103,@10021,@18864,@18863 18863:O5|@18437,1009,0,1009,0 18864:S68|546865207370656369616c2066756e6374696f6e20506f6c794d4c2e736f757263654c6f636174696f6e2063616e6e6f74206265207573656420617320612076616c7565 18865:S31|56414c55455f4f505328292e636f646556616c2836296765744c6f63283129 18866:O4|@4611,@9978,@18868,@18867 18867:O5|@18437,864,0,864,0 18868:S42|4f7665726c6f6164656420476574507265747479202d2077726f6e6720696e7374616e63652074797065 18869:O2|@18870,0 18870:O3|20,@18871,0 18871:O2|@10067,@18872 18872:O2|@18873,0 18873:O3|6,10000,0 18874:O3|6,@14484,0 18875:O4|@4611,@9978,@18877,@18876 18876:O5|@18437,849,0,849,0 18877:S43|4f7665726c6f61646564204d616b65537472696e67202d2077726f6e6720696e7374616e63652074797065 18878:S12|6d616b65737472696e672829 18879:O3|6,@9568,0 18880:S13|6d616b65737472696e67285029 18881:O4|@4611,@9978,@18883,@18882 18882:O5|@18437,822,0,822,0 18883:S38|4f7665726c6f61646564205072696e74202d2077726f6e6720696e7374616e63652074797065 18884:O4|@4611,@9978,@18886,@18885 18885:O5|@18437,758,0,758,0 18886:S16|636f646556616c202d20466f726d616c 18887:S32|56414c55455f4f505328292e636f646556616c2836296c6f6164566172283129 18888:O1|@8580 18889:O2|@13865,0 18890:S7|7072696e742829 18891:S8|7072696e74285029 18892:O1|@8583 18893:S9|676574507265747479 18894:S7|61646450502d32 18895:S5|6164645050 18896:S22|56414c55455f4f505328292e636f646556616c283629 18897:S44|44454255474745525f28292e6d616b6556616c4465627567456e74726965732837296c6f6164566172283329 18898:S34|44454255474745525f28292e6d616b6556616c4465627567456e7472696573283729 18899:S51|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629666f6c64496473283329 18900:S41|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629 18901:O2|@8606,@18902 18902:O2|@8699,@18901 18903:O5|@8611,@13862,@18497,@18620,@18721 18904:O1|@8612 18905:S42|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283129 18906:O1|@8614 18907:S45|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283129 18908:O1|@8616 18909:S44|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283129 18910:O4|@4611,@9978,@18912,@18911 18911:O5|@18424,1164,0,1164,0 18912:S15|416c726561647920636865636b6564 18913:S14|7072696e742d68656c7065722829 18914:S47|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832292d45 18915:S54|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832296d6b41646472283129 18916:S56|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229617267732d283129283129 18917:S45|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229 18918:O1|@8632 18919:S45|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283229283129 18920:S10|657175616c6974792829 18921:O1|@8635 18922:S48|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283229283129 18923:S11|626f7865646e6573732829 18924:O1|@8638 18925:S47|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283229283129 18926:S6|73697a652829 18927:S32|545950454944434f444528292e636f646547656e657261746976654964283529 18928:O4|101,@13819,0,@18929 18929:O5|@10264,509,0,509,0 18930:S47|535452554354555245535f28292e67656e636f6465537472756374732833296c6f61644f7061717565496473283329 18931:O1|@8643 18932:O4|11,@9429,0,@18933 18933:O5|@17601,2792,0,2792,0 18934:S53|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835292d45 18935:O1|@8645 18936:O2|@10067,@13586 18937:O2|@10072,@13586 18938:S29|56414c55455f4f505328292e636f6465457846756e6374696f6e283629 18939:S96|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296c6f6164436f6465283129 18940:O1|@8659 18941:O3|@8661,@14504,77 18942:O1|@8662 18943:S22|506f6c794d4c2e7072657474795072696e742d283129 18944:O1|@8663 18945:S32|506f6c794d4c2e7072657474794d61726b757028352967657453697a65283229 18946:O1|@8665 18947:S41|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329646f5072696e74283329 18948:S31|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329 18949:S22|506f6c794d4c2e7072657474794d61726b7570283529 18950:S28|506f6c794d4c2e7072657474794d61726b7570283129283129283129 18951:O2|@8668,@4796 18952:S29|706f6c79436f6d70696c65722832297072696e7444657074682d283129 18953:O1|@8669 18954:O5|0,0,0,@18956,@18955 18955:O2|@18959,0 18956:O2|@18957,0 18957:O2|0,@18958 18958:O5|@13820,1869,1869,0,0 18959:O2|3,@18960 18960:S11|53696d706c654572726f72 18961:O5|0,0,0,@18963,@18962 18962:O2|@18966,0 18963:O2|@18964,0 18964:O2|0,@18965 18965:O5|@13820,1870,1870,0,0 18966:O2|3,@18967 18967:S20|54797065436f6e7374727563746f724572726f72 18968:S17|7072696e742d6d61746368526573756c74 18969:O4|@4611,@9978,@18971,@18970 18970:O5|@17601,2608,0,2608,0 18971:S27|756e6966795479706573206661696c656420696e20706173732033 18972:O1|@8670 18973:S97|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e28332964657374566172732d283129 18974:S118|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d61726741646472732d283129283129 18975:S113|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d6d6b4164647273283129 18976:S3|285029 18977:S85|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e283329 18978:S71|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d61746368537562537472756374757265283329 18979:S51|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e73283529 18980:O1|@8679 18981:S61|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f646528362970726f63657373426f6479283129 18982:O1|@8680 18983:O4|@4611,@9978,@18985,@18984 18984:O5|@17601,2726,0,2726,0 18985:S37|6d616b6553656c65637465643a204e6f7420426f756e64206f72206e6f7420466f726d616c 18986:O4|@4611,@9978,@18988,@18987 18987:O5|@17601,2735,0,2735,0 18988:S22|46756e63746f724170706c3a20756e646566696e6564 18989:O1|@8689 18990:O4|@4611,@9978,@18992,@18991 18991:O5|@17601,2898,0,2898,0 18992:S10|747970655661724d6170 18993:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229747970655661724d61702d283129 18994:O17|@4799,@4800,@4801,@4802,@18995,@4793,@9473,@10772,@10776,@4803,@4792,@4798,@14522,0,@4795,@4794,@10781 18995:O1|@8693 18996:S18|4c45585f28292e6e756c6c4c65782d283129 18997:S60|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f6164537472646563732832296c6f616456616c73283229 18998:S49|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229 18999:O1|@8698 19000:O4|11,@9429,0,@19001 19001:O5|@17601,2780,0,2780,0 19002:S47|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f6465283629 19003:S33|434f444547454e5f50415253455452454528292e67656e636f6465283829283129 19004:O3|@8701,@19131,@19005 19005:O2|@9033,@19199 19006:O4|@8708,@10683,@10593,@19007 19007:O5|5,@19013,@10638,@10635,@10037 19008:O4|101,@13819,0,@19009 19009:O5|@10264,508,0,508,0 19010:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b65536f6d652d283129 19011:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b654e6f6e652d283129 19012:S26|44415441545950455f52455028292e6d6b45784964656e283329 19013:O2|@19014,0 19014:O3|2,@19015,@14204 19015:O3|3,@19016,@10462 19016:O2|@19017,@14250 19017:O2|@10467,@13287 19018:O4|@4611,@9978,@19020,@19019 19019:O5|@19021,982,0,982,0 19020:S6|636f64654578 19021:S51|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f434f444547454e5f5041525345545245452e736d6c 19022:O4|@4611,@9978,@19024,@19023 19023:O5|@19021,962,0,962,0 19024:S6|6c7641646472 19025:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283229 19026:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283129 19027:O3|@10997,@19028,0 19028:O1|@19029 19029:O3|6,8,0 19030:S34|44454255474745525f28292e75706461746544656275674c6f636174696f6e283429 19031:O2|@8725,@19032 19032:O3|13,@10757,@19034 19033:S29|44454255474745525f28292e627265616b506f696e74436f6465283529 19034:O3|@19035,@10756,0 19035:O3|6,@4702,0 19036:O4|@4611,@9978,@19038,@19037 19037:O5|@19021,1554,0,1554,0 19038:S10|6d6b4656616c42696e64 19039:O4|@4611,@9978,@19041,@19040 19040:O5|@19021,1535,0,1535,0 19041:S10|6765744d617463686573 19042:S61|434f444547454e5f50415253455452454528292e636f646552656356616c42696e64696e677328332976616c42696e64546f4676616c42696e64283229 19043:S53|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529636865636b56617273283129283129283129 19044:S44|54797065206f662065787072657373696f6e20636f6e7461696e73206c6f63616c2064617461747970652028 19045:S25|29206f7574736964652069747320646566696e6974696f6e2e 19046:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283229 19047:S56|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129283129 19048:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129 19049:S40|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229 19050:O4|@4611,@9978,@19052,@19051 19051:O5|@19021,1034,0,1034,0 19052:S18|646563436f6e733a204e6f74206c6f63616c 19053:S48|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529646563436f6e73747273283429 19054:O6|@8748,@18444,@13862,@18497,@18620,@18721 19055:S93|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d617267732d283129283129 19056:S91|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d6d6b41646472283129 19057:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283329 19058:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283129 19059:S41|545950455f5452454528292e636f6e7374727563746f72526573756c74283229676574417267283129 19060:O4|@4611,@9978,@19062,@19061 19061:O5|@13820,1576,0,1576,0 19062:S19|4e6f7420612066756e6374696f6e2074797065 19063:S75|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f72446174617479706528322970726f63657373436f6e73747273283129 19064:S3|65712d 19065:S3|283229 19066:S6|283229285029 19067:O4|@4611,@9978,@19069,@19068 19068:O5|@18424,138,0,138,0 19069:S19|6765744361636865645479706556616c756573 19070:S58|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229 19071:S36|545950454944434f444528292e657175616c697479466f72446174617479706573283429 19072:O4|0,@10223,@10072,@10066 19073:S96|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429617267732d283129283129 19074:S85|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429 19075:S81|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b41646472283129 19076:O2|@10566,@19077 19077:O2|@19078,0 19078:O3|6,@9545,0 19079:O3|20,@19076,1 19080:O2|@10066,@18937 19081:O3|20,@19082,1 19082:O2|@10066,@18937 19083:O3|20,@19080,1 19084:O2|@10566,@19085 19085:O2|@19086,0 19086:O3|6,@9546,0 19087:O3|20,@19084,1 19088:O4|5,@19090,@19089,@10072 19089:O4|5,@19093,@19092,@10072 19090:O3|21,@19091,9 19091:O3|21,@10403,5 19092:O3|21,@19096,9 19093:O3|21,@19094,9 19094:O3|21,@19095,5 19095:O4|11,@10403,1,1 19096:O4|5,@19098,@19097,@10072 19097:O3|15,@19102,@19101 19098:O4|19,3,@19099,4 19099:O4|11,@19100,0,0 19100:O4|11,@10403,0,1 19101:O4|5,@19106,@10066,@19105 19102:O2|@19103,0 19103:O4|1,0,1,@19104 19104:O4|11,@19100,1,1 19105:O4|5,@19108,@10066,@19107 19106:O4|3,@10404,@19078,@10170 19107:O4|3,@10404,@19109,@10170 19108:O4|3,@10404,@18785,@10170 19109:O3|6,@9596,0 19110:O2|@19111,0 19111:O4|1,0,0,@14203 19112:S12|706172656e74686573697365 19113:S16|4e6f20636f6e7374727563746f72733a 19114:O5|@18424,1053,0,1053,0 19115:O2|@10398,0 19116:O3|20,@19117,1 19117:O2|@10066,@18766 19118:O2|@10566,@19119 19119:O2|@19120,0 19120:O3|6,@10438,0 19121:O3|20,@19118,1 19122:O4|3,@10400,@10066,@13329 19123:S59|545950454944434f444528292e7072696e746572466f7244617461747970652833297072696e746572466f72436f6e7374727563746f7273283129 19124:S34|545950454944434f444528292e7072696e746572466f724461746174797065283329 19125:S18|7072696e742d7072696e7464656661756c74 19126:S52|545950454944434f444528292e637265617465446174617479706546756e6374696f6e732835297365745072696e746572283429 19127:S39|545950454944434f444528292e637265617465446174617479706546756e6374696f6e73283529 19128:O1|@8806 19129:S57|434f444547454e5f50415253455452454528292e636f646553657175656e63652835296e657744656275677c6c6f63616c446563732d283129 19130:S35|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529 19131:O2|@8813,@19132 19132:O3|@8896,@19199,@15129 19133:S53|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429636865636b56617273283129283129 19134:S41|545950454944434f444528292e547970655661724d61702e6d61705479706556617273283129283129 19135:S48|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429676574506f6c79283129 19136:O10|@8824,@4633,@4624,@10354,@13048,@10293,@10314,@4631,@4629,@4689 19137:S27|545950455f5452454528292e6973466c6f6174696e675074283129 19138:O4|@4611,@9978,@19140,@19139 19139:O5|@19021,176,0,176,0 19140:S26|7475706c6557696474683a20656d707479206c6f63616c646563 19141:O4|@4611,@9978,@19143,@19142 19142:O5|@13820,97,0,97,0 19143:S33|74634571756976616c656e743a204e6f74206120747970652066756e6374696f6e 19144:O4|@4611,@9978,@19146,@19145 19145:O5|@13820,3042,0,3042,0 19146:S26|656e7472794e756d626572202d206e6f742061207265636f7264 19147:S33|434f444547454e5f50415253455452454528292e7475706c655769647468283129 19148:O4|@4611,@9978,@19150,@19149 19149:O5|@19021,1204,0,1204,0 19150:S23|6261646c7920666f726d65642070617273652074726565 19151:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6541726773283229 19152:O4|@4611,@9978,@19154,@19153 19153:O5|@19021,125,0,125,0 19154:S10|6d6b4172675475706c65 19155:S71|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296172674c6973742d6d616b6541726773283229 19156:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329666e4d6b41646472283129 19157:S67|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e4465637328332961726741646472732d283129283129 19158:O4|@4611,@9978,@19160,@19159 19159:O5|@19021,1149,0,1149,0 19160:S15|73657456616c756541646472657373 19161:O4|@4611,@9978,@19163,@19162 19162:O5|@19021,1368,0,1368,0 19163:S31|6372656174654d6174636865733a204d697373696e67207479706520766172 19164:S73|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296372656174654170706c69636174696f6e73283429 19165:S29|434f44455452454528292e6d6b536574436f6e7461696e65722d283329 19166:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329636f6465426f6479283129 19167:O4|@8848,@19175,@19178,@19168 19168:O3|13,@10757,@19181 19169:O1|@19170 19170:O3|6,5,0 19171:O1|@8861 19172:S57|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e7472792835292d45 19173:S55|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e747279283529 19174:S35|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029 19175:O3|13,@10757,@19176 19176:O3|@19177,@10756,0 19177:O3|6,@4700,0 19178:O3|13,@10757,@19179 19179:O3|@19180,@10756,0 19180:O3|6,@4701,0 19181:O3|@19182,@10756,0 19182:O3|6,@4699,0 19183:O4|@4611,@9978,@19185,@19184 19184:O5|@19021,1425,0,1425,0 19185:S23|417267756d656e74206c656e6774682070726f626c656d 19186:O1|@8875 19187:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296261736546756e2d283129 19188:S75|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e732835296e6578745061726d73283129 19189:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e73283529 19190:O1|@8888 19191:S87|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329616464457874726173283229636865636b506f6c796d6f72706869736d283229283129 19192:S52|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329 19193:S68|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129757064617465283229 19194:S59|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129 19195:S18|56616c7565206964656e7469666965722028 19196:S26|2920686173206e6f74206265656e207265666572656e6365642e 19197:S46|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c7565283229 19198:S38|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429 19199:O5|@8981,@19132,@15129,@19004,@19330 19200:S41|434f444547454e5f50415253455452454528292e6765745661726961626c6573496e50617474283229 19201:O4|@4611,@9978,@19203,@19202 19202:O5|@19021,374,0,374,0 19203:S7|6d616b65417267 19204:S56|434f444547454e5f50415253455452454528292e636f64654d61746368283529636f64655061747465726e45787072657373696f6e283129 19205:O3|0,@10755,0 19206:S30|56414c55455f4f505328292e676574506f6c796d6f72706869736d283329 19207:O1|@8905 19208:S36|4d415443485f434f4d50494c455228292e6275696c64416f74283529646f417267283129 19209:S30|4d415443485f434f4d50494c455228292e74657374416363657373283129 19210:S24|4d415443485f434f4d50494c455228292e706c7573283229 19211:S42|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429616464436c697374283129 19212:O4|@4611,@9978,@19214,@19213 19213:O5|@19215,401,0,401,0 19214:S37|6164644578636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 19215:S48|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4d415443485f434f4d50494c45522e736d6c 19216:S31|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429 19217:S40|4d415443485f434f4d50494c455228292e616464436f6e737472283629616464436c697374283129 19218:O4|@4611,@9978,@19220,@19219 19219:O5|@19215,316,0,316,0 19220:S35|616464436f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 19221:S29|4d415443485f434f4d50494c455228292e616464436f6e737472283629 19222:O2|30,@14696 19223:O1|@8923 19224:S30|4d415443485f434f4d50494c455228292e61646444656661756c74283229 19225:O1|@8927 19226:O4|@4611,@9978,@19228,@19227 19227:O5|@19215,539,0,539,0 19228:S34|6d6b436f6e735061743a206261646c792d666f726d65642070617273652d74726565 19229:S54|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c6973742832296d6b436f6e73506174283129 19230:S45|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229283129 19231:S42|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229 19232:O1|@8930 19233:O4|@4611,@9978,@19235,@19234 19234:O5|@19215,559,0,559,0 19235:S15|657175616c697479466f7254797065 19236:S40|4d415443485f434f4d50494c455228292e6275696c64416f74283529657175616c6974792d283129 19237:S40|4d415443485f434f4d50494c455228292e6275696c64416f742835296c697456616c75652d283129 19238:O1|@8933 19239:S22|436f6e76657273696f6e20657863657074696f6e2028 19240:S26|2920726169736564207768696c6520636f6e76657274696e6720 19241:S4|20746f20 19242:S43|4f766572666c6f7720657863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 19243:O4|1,@9825,0,@19244 19244:O5|@18437,1286,0,1286,0 19245:S34|457863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 19246:S30|56414c55455f4f505328292e6765744c69746572616c56616c7565283429 19247:S41|4d415443485f434f4d50494c455228292e61646453636f6e737472283529616464436c697374283129 19248:O4|@4611,@9978,@19250,@19249 19249:O5|@19215,349,0,349,0 19250:S36|61646453636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 19251:S30|4d415443485f434f4d50494c455228292e61646453636f6e737472283529 19252:O4|@4611,@9978,@19254,@19253 19253:O5|@19215,446,0,446,0 19254:S31|7061747465726e206973206e6f742061207475706c6520696e20612d6f2d74 19255:S31|43616e27742066696e642061206669786564207265636f726420747970652e 19256:O4|@4611,@9978,@19146,@19257 19257:O5|@13820,3037,0,3037,0 19258:O4|@4611,@9978,@19146,@19259 19259:O5|@13820,3023,0,3023,0 19260:O4|101,@13819,0,@19261 19261:O5|@13820,3011,0,3011,0 19262:S26|545950455f5452454528292e656e7472794e756d626572283229 19263:O4|@4611,@9978,@19265,@19264 19264:O5|@19215,472,0,472,0 19265:S6|6d657267656e 19266:S39|4d415443485f434f4d50494c455228292e6275696c64416f742835296d657267656e2833292829 19267:S28|4d415443485f434f4d50494c455228292e6275696c64416f74283529 19268:S45|4d415443485f434f4d50494c455228292e636f6e7461696e734e6f6e436f6e7374457863657074696f6e283129 19269:S26|4d415443485f434f4d50494c455228292e66726f6d2832292829 19270:O1|@8943 19271:S47|4d415443485f434f4d50494c455228292e6275696c645061747465726e436f64652833296669726550617474283129 19272:S29|4d415443485f434f4d50494c455228292e696e74657273656374283229 19273:S29|4d415443485f434f4d50494c455228292e706174744465707468283229 19274:S24|4d415443485f434f4d50494c455228292e64696666283229 19275:O1|@8948 19276:S51|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283129283129 19277:O1|@8944 19278:S48|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283429 19279:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655465737473283229 19280:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655061747473283129 19281:S29|4d415443485f434f4d50494c455228292e6d616b654e61697665283229 19282:S43|4d415443485f434f4d50494c455228292e70617474436f64652835296d616b655061747454657374283329 19283:S28|4d415443485f434f4d50494c455228292e70617474436f6465283529 19284:O4|@4611,@9978,@19286,@19285 19285:O5|@19215,1179,0,1179,0 19286:S33|636f646544656661756c742063616c6c6564206275742065786861757374697665 19287:O3|6,@13281,0 19288:O3|6,101,0 19289:S48|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e732837296669726550617474283129 19290:O4|@4611,@9978,@19292,@19291 19291:O5|@19215,609,0,609,0 19292:S7|73657441646472 19293:S33|56414c55455f4f505328292e6d616b654775617264283529746573746572283129 19294:O4|@4611,@9978,@19296,@19295 19295:O5|@18437,1207,0,1207,0 19296:S9|6d616b654775617264 19297:S24|56414c55455f4f505328292e6d616b654775617264283529 19298:S39|56414c55455f4f505328292e6d616b65496e7665727365283529676574496e7665727365283129 19299:O4|@4611,@9978,@19301,@19300 19300:O5|@18437,1234,0,1234,0 19301:S11|6d616b65496e7665727365 19302:S26|56414c55455f4f505328292e6d616b65496e7665727365283529 19303:S35|4d415443485f434f4d50494c455228292e636f6e7374727563746f72436f6465283429 19304:S29|4d415443485f434f4d50494c455228292e6d616b654c6f616473283529 19305:S34|4d415443485f434f4d50494c455228292e6d616b654e616976655465737473283429 19306:O4|@4611,@9978,@19308,@19307 19307:O5|@19215,1083,0,1083,0 19308:S16|6d616b6554657374733a20656d707479 19309:S73|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d6d616b655061747465726e73283129 19310:O1|@8959 19311:O4|@4611,@9978,@19313,@19312 19312:O5|@19215,1060,0,1060,0 19313:S21|646f5061747465726e3a206e6f7420617420656e64 19314:S70|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d646f5061747465726e283229 19315:S49|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d61746368283329 19316:S37|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429 19317:S37|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e73283729 19318:S27|4d61746368657320617265206e6f7420657868617573746976652e 19319:O4|101,@13819,0,@19320 19320:O5|@19021,322,0,322,0 19321:S53|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729666e4d6b4164647273283129 19322:O4|@4611,@9978,@19292,@19323 19323:O5|@19021,449,0,449,0 19324:S41|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729 19325:S8|5061747465726e20 19326:S14|20697320726564756e64616e742e 19327:S50|434f444547454e5f50415253455452454528292e636f64654d617463682835297265706f7274526564756e64616e74283229 19328:S31|48616e646c6572206361746368657320616c6c20657863657074696f6e732e 19329:S32|434f444547454e5f50415253455452454528292e636f64654d61746368283529 19330:O2|@9018,@19132 19331:O4|@4611,@9978,@19333,@19332 19332:O5|@19021,695,0,695,0 19333:S22|4578705365713a20656d7074792073657175656e6365 19334:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f64654c697374283329 19335:S47|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329676574436f6e737472283129 19336:S58|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129676574436f6e737472283129 19337:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129 19338:O4|@4611,@9978,@19340,@19339 19339:O5|@19021,630,0,630,0 19340:S22|4c6973743a2062616420656c656d656e742074797065 19341:S38|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329283129 19342:S60|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329636f64654c697374283329 19343:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329 19344:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283129 19345:O4|@4611,@9978,@19347,@19346 19346:O5|@19021,555,0,555,0 19347:S20|636f646567656e3a20556e617279207475706c65 19348:O4|@4611,@9978,@11359,@19349 19349:O5|@10199,423,0,423,0 19350:O4|@4611,@9978,@11362,@19351 19351:O5|@10199,421,0,421,0 19352:O1|@9011 19353:O4|@4611,@9978,@19355,@19354 19354:O5|@19021,591,0,591,0 19355:S17|6d697373696e6720696e207265636f7264 19356:S54|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c6973742833296c6f6f6b466e283129 19357:S45|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c697374283329 19358:S35|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329 19359:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429666e4d6b41646472283129 19360:O4|@4611,@9978,@19362,@19361 19361:O5|@19021,813,0,813,0 19362:S43|636f64654c616d6264613a20626f6479206f6620666e206973206e6f74206120636c61757365206c697374 19363:O4|@4611,@9978,@19365,@19364 19364:O5|@19021,797,0,797,0 19365:S42|676574466e426f64793a206e6f74206120636f6e73747261696e656420666e2d65787072657373696f6e 19366:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429636f6465416c7473283129 19367:S33|434f444547454e5f50415253455452454528292e636f64654c616d626461283429 19368:S77|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229706f6c7956617273466f7256616c732d283129 19369:S106|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d666e4d6b41646472283129 19370:S110|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d61726741646472732d283129283129 19371:O1|@9049 19372:O4|@4611,@9978,@19374,@19373 19373:O5|@19215,1124,0,1124,0 19374:S42|636f646542696e64696e673a2073686f756c64206265206e61697665207061747465726e206d61746368 19375:O3|6,@13276,0 19376:O3|6,100,0 19377:S31|4d415443485f434f4d50494c455228292e636f646542696e64696e67283429 19378:S26|5061747465726e206973206e6f7420657868617573746976652e 19379:O4|@4611,@9978,@19381,@19380 19380:O5|@19021,1642,0,1642,0 19381:S7|6c6f616456616c 19382:S83|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6170706c69636174696f6e283229 19383:O4|@4611,@9978,@19385,@19384 19384:O5|@19021,1681,0,1681,0 19385:S13|6c6f616446756e6374696f6e73 19386:S85|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6c6f616446756e6374696f6e73283329 19387:S58|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229 19388:S44|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329 19389:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f636573735461696c283129 19390:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f63657373426f6479283129 19391:S65|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929636f646553747275637475726542696e64283329 19392:S43|535452554354555245535f28292e67656e636f6465537472756374732833296d6170506169722834292829 19393:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929 19394:O1|@9084 19395:O4|@4611,@9978,@19397,@19396 19396:O5|@10099,356,0,356,0 19397:S20|6d6b4d6163726f50726f633a20636c6f73757265 19398:S28|434f44455452454528292e6d6b4d6163726f50726f63283129283129 19399:S25|434f44455452454528292e6d6b4d6163726f50726f63283129 19400:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e64283329 19401:O1|@9089 19402:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f706465637328342964656275677c636f64652d283129 19403:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429 19404:S45|535452554354555245535f28292e67656e636f6465537472756374732833296c6f6164546f7064656373283129 19405:S31|535452554354555245535f28292e67656e636f646553747275637473283329 19406:O4|0,@11651,0,@19407 19407:O1|@9100 19408:O4|11,@9429,0,@19409 19409:O5|@17601,3264,0,3264,0 19410:S39|535452554354555245535f28292e706173733453747275637473283329726573756c742d283129 19411:S70|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e61747572652831296d6170494473283129 19412:S61|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e6174757265283129 19413:O4|@4611,@9978,@17938,@19414 19414:O5|@17601,3171,0,3171,0 19415:S58|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296d617054797065496473283129 19416:S68|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296578747261637453747275637475726542696e64283329 19417:S69|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129636f70794964283129 19418:O1|@9115 19419:S84|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129283129 19420:O1|@9116 19421:S81|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129 19422:O1|@9117 19423:S63|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129283129 19424:S56|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296d616b6544656373283329 19425:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374537472756374283429 19426:S75|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e642833296e65774d6170283129 19427:S66|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e64283329 19428:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329 19429:S29|535452554354555245535f28292e706173733453747275637473283329 19430:S45|434f4d50494c45525f424f445928292e62617365436f6d70696c657228342965786563757465436f6465283129 19431:O1|@19432 19432:O1|@9130 19433:S34|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429283129 19434:S31|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429 19435:O2|3,@19436 19436:S24|436f6d70696c6174696f6e20696e7465727275707465640a 19437:O4|1,@9825,0,@19438 19438:O5|@19439,237,0,237,0 19439:S36|6d6c736f757263652f4d4c436f6d70696c65722f434f4d50494c45525f424f44592e4d4c 19440:S26|457863657074696f6e2d20496e7465726e616c4572726f723a20 19441:S23|20726169736564207768696c6520636f6d70696c696e67 19442:O5|@19439,246,0,246,0 19443:S36|20756e65787065637465646c7920726169736564207768696c6520636f6d70696c696e67 19444:O5|@19439,255,0,255,0 19445:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283329 19446:O4|103,@10021,@19448,@19447 19447:O5|@10011,241,0,241,0 19448:S13|537461746963204572726f7273 19449:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329 19450:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283129 19451:S25|4d414b455f28292e636f6d70696c65496e746f456e76283129 19452:O1|@9143 19453:S21|4d414b455f28292e757365496e746f456e76283329 19454:S27|4d414b455f28292e757365496e746f456e76283129283129283129 19455:S3|757365 19456:S24|4d414b455f28292e757365496e746f456e76283129283129 19457:S12|757365576974685061726d73 19458:O2|1,@19459 19459:O3|6,@19460,0 19460:O1|@9146 19461:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283129 19462:S8|636f6d70696c6572 19463:O1|@9180 19464:O1|@9183 19465:O1|@9186 19466:O1|@9189 19467:O1|@9192 19468:O1|@9195 19469:S26|4d414b455f28292e67456e7641734e616d655370616365283229 19470:S11|676c6f62616c5370616365 19471:S4|68617264 19472:S7|6d657373616765 19473:O5|5,@19474,@10638,@10635,@10037 19474:O2|@19475,0 19475:O5|5,0,@14080,@14082,@10037 19476:S6|706172656e74 19477:S4|6e657874 19478:S8|70726576696f7573 19479:S21|636f6d70696c657256657273696f6e4e756d626572 19480:O2|@19481,0 19481:O3|2,@13097,@10146 19482:O3|@19484,@19486,@19483 19483:O2|@9198,@4644 19484:O2|@9196,@4644 19485:S19|556e6976657273616c2e746167283229283129 19486:O2|@9197,@4644 19487:S13|6c696e654e756d626572546167 19488:O3|@19490,@19491,@19489 19489:O2|@9201,@4645 19490:O2|@9199,@4645 19491:O2|@9200,@4645 19492:S9|6f6666736574546167 19493:O3|@19495,@19496,@19494 19494:O2|@9204,@4646 19495:O2|@9202,@4646 19496:O2|@9203,@4646 19497:S11|66696c654e616d65546167 19498:O3|@19500,@19501,@19499 19499:O2|@9207,@4647 19500:O2|@9205,@4647 19501:O2|@9206,@4647 19502:S17|62696e64696e67436f756e746572546167 19503:O3|@19505,@19506,@19504 19504:O2|@9210,@4649 19505:O2|@9208,@4649 19506:O2|@9209,@4649 19507:S16|6d6178496e6c696e6553697a65546167 19508:O3|@19510,@19511,@19509 19509:O2|@9213,@4654 19510:O2|@9211,@4654 19511:O2|@9212,@4654 19512:S15|617373656d626c79436f6465546167 19513:O3|@19515,@19516,@19514 19514:O2|@9216,@4651 19515:O2|@9214,@4651 19516:O2|@9215,@4651 19517:S12|706172736574726565546167 19518:O3|@19520,@19521,@19519 19519:O2|@9219,@4643 19520:O2|@9217,@4643 19521:O2|@9218,@4643 19522:S11|636f646574726565546167 19523:O3|@19525,@19526,@19524 19524:O2|@9222,@4652 19525:O2|@9220,@4652 19526:O2|@9221,@4652 19527:S8|69636f6465546167 19528:O3|@19530,@19531,@19529 19529:O2|@9225,@4653 19530:O2|@9223,@4653 19531:O2|@9224,@4653 19532:S19|6c6f776c6576656c4f7074696d697365546167 19533:O3|@19535,@19536,@19534 19534:O2|@9228,@4655 19535:O2|@9226,@4655 19536:O2|@9227,@4655 19537:S19|636f64657472656541667465724f7074546167 19538:O3|@19540,@19541,@19539 19539:O2|@9231,@4648 19540:O2|@9229,@4648 19541:O2|@9230,@4648 19542:S17|696e6c696e6546756e63746f7273546167 19543:O3|@19545,@19546,@19544 19544:O2|@9234,@4659 19545:O2|@9232,@4659 19546:O2|@9233,@4659 19547:S8|6465627567546167 19548:O3|@19550,@19551,@19549 19549:O2|@9237,@4657 19550:O2|@9235,@4657 19551:O2|@9236,@4657 19552:S16|7072696e74446570746846756e546167 19553:O3|@19555,@19556,@19554 19554:O2|@9240,@4656 19555:O2|@9238,@4656 19556:O2|@9239,@4656 19557:S13|6572726f724465707468546167 19558:O3|@19560,@19561,@19559 19559:O2|@9243,@4658 19560:O2|@9241,@4658 19561:O2|@9242,@4658 19562:S13|6c696e654c656e677468546167 19563:O3|@19565,@19566,@19564 19564:O2|@9246,@4650 19565:O2|@9244,@4650 19566:O2|@9245,@4650 19567:S20|70726f66696c65416c6c6f636174696f6e546167 19568:O2|@19569,0 19569:O3|2,@19475,@13097 19570:O3|@19572,@19573,@19571 19571:O2|@9249,@4710 19572:O2|@9247,@4710 19573:O2|@9248,@4710 19574:S14|7072696e744f7574707574546167 19575:O3|@19577,@19578,@19576 19576:O2|@9252,@4665 19577:O2|@9250,@4665 19578:O2|@9251,@4665 19579:S17|636f6d70696c65724f7574707574546167 19580:O3|@19582,@19583,@19581 19581:O2|@9255,@4709 19582:O2|@9253,@4709 19583:O2|@9254,@4709 19584:S19|6572726f724d65737361676550726f63546167 19585:O3|@19587,@19588,@19586 19586:O2|@9258,@4712 19587:O2|@9256,@4712 19588:O2|@9257,@4712 19589:S11|726f6f7454726565546167 19590:O3|@19592,@19593,@19591 19591:O2|@9261,@4660 19592:O2|@9259,@4660 19593:O2|@9260,@4660 19594:S24|7265706f7274556e7265666572656e636564496473546167 19595:O3|@19597,@19598,@19596 19596:O2|@9264,@4661 19597:O2|@9262,@4661 19598:O2|@9263,@4661 19599:S27|7265706f72744578686175737469766548616e646c657273546167 19600:O3|@19602,@19603,@19601 19601:O2|@9267,@4662 19602:O2|@9265,@4662 19603:O2|@9266,@4662 19604:S27|6e6172726f774f7665726c6f6164466c65785265636f7264546167 19605:O3|@19607,@19608,@19606 19606:O2|@9270,@4663 19607:O2|@9268,@4663 19608:O2|@9269,@4663 19609:S23|6372656174655072696e7446756e6374696f6e73546167 19610:O3|@19612,@19613,@19611 19611:O2|@9273,@4664 19612:O2|@9271,@4664 19613:O2|@9272,@4664 19614:S24|7265706f727444697363617264656456616c756573546167 19615:O3|@19617,@19616,@13128 19616:S13|352e372e312052656c65617365 19617:S15|636f6d70696c657256657273696f6e 19618:O1|@9274 19619:S8|436f646554726565 19620:S16|506f6c794d4c2e436f6465547265652e 19621:S8|636f646574726565 19622:S11|636f646542696e64696e67 19623:O1|@9275 19624:S21|434f44455452454528292e6d6b436f6e7374283129 19625:S10|6d6b436f6e7374616e74 19626:O2|@9276,@10767 19627:S21|434f44455452454528292e67656e436f6465283129 19628:S7|67656e436f6465 19629:O1|@9277 19630:S30|434f4445545245455f46554e4354494f4e5328292e6576616c7565283129 19631:S6|6576616c7565 19632:O1|@9278 19633:S41|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65466e283129 19634:S10|6d6b46756e6374696f6e 19635:O1|@9280 19636:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65496e6c696e65466e283129 19637:S16|6d6b496e6c696e6546756e6374696f6e 19638:O1|@9284 19639:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c6543616c6c283129 19640:S6|6d6b43616c6c 19641:O1|@9286 19642:S11|6d6b4c6f61644c6f63616c 19643:O1|@9287 19644:S14|6d6b4c6f6164417267756d656e74 19645:O1|@9288 19646:S13|6d6b4c6f6164436c6f73757265 19647:O1|@9289 19648:S19|434f44455452454528292e6d6b446563283129 19649:S5|6d6b446563 19650:O1|@9290 19651:S37|434f4445545245455f46554e4354494f4e5328292e6d6b496e646972656374283129283129 19652:S5|6d6b496e64 19653:O1|@9291 19654:S4|6d6b4966 19655:O1|@9292 19656:S21|434f44455452454528292e6d6b5768696c65283129 19657:S7|6d6b5768696c65 19658:O1|@9293 19659:S20|434f44455452454528292e6d6b4c6f6f70283129 19660:S6|6d6b4c6f6f70 19661:O1|@9295 19662:S25|434f44455452454528292e6d6b426567696e4c6f6f70283129 19663:S11|6d6b426567696e4c6f6f70 19664:O1|@9297 19665:S29|434f4445545245455f46554e4354494f4e5328292e6d6b456e76283129 19666:S5|6d6b456e76 19667:O1|@9298 19668:S26|434f44455452454528292e6d6b4d757475616c44656373283129 19669:S12|6d6b4d757475616c44656373 19670:O1|@9299 19671:S35|434f4445545245455f46554e4354494f4e5328292e6d6b5265636f7264283129283129 19672:S7|6d6b5475706c65 19673:O1|@9300 19674:S7|6d6b5261697365 19675:O1|@9301 19676:S22|434f44455452454528292e6d6b48616e646c65283129 19677:S8|6d6b48616e646c65 19678:O1|@9302 19679:S9|6d6b4e756c6c446563 19680:O1|@9303 19681:S24|5354525543545f56414c5328292e76616c4e616d65283129 19682:S4|6e616d65 19683:O1|@9304 19684:S41|56414c55455f4f505328292e7072696e7456616c7565466f72547970652833296d6b41646472283129 19685:O1|@9307 19686:S46|56414c55455f4f505328292e7072696e7456616c7565466f725479706528332964756d6d7954797065732d283129 19687:S44|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329706f6c79436f64652d283129 19688:S32|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329 19689:S26|56414c55455f4f505328292e7072696e7456616c756573283129 19690:O1|@9310 19691:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6554797065456e76283229283129 19692:O2|@19694,@19693 19693:O1|@9314 19694:O1|@9313 19695:O2|@15020,0 19696:S28|56414c55455f4f505328292e646973706c617956616c756573283429 19697:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617956616c756573283129 19698:S13|7072696e745769746854797065 19699:O1|@9317 19700:O2|@19702,@19701 19701:O1|@9321 19702:O1|@9320 19703:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065457870283129 19704:S9|7072696e7454797065 19705:O1|@9322 19706:S26|5354525543545f56414c5328292e76616c547970654f66283129 19707:S6|747970656f66 19708:O1|@9323 19709:O4|103,@10021,@19711,@19710 19710:O5|@13516,1651,0,1651,0 19711:S18|4e6f74206120676c6f62616c2076616c7565 19712:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7256616c7565283129 19713:S4|636f6465 19714:O1|@9324 19715:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7256616c7565283129 19716:S10|70726f70657274696573 19717:O1|@9325 19718:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973436f6e7374727563746f72283129 19719:S13|6973436f6e7374727563746f72 19720:O1|@9326 19721:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973457863657074696f6e283129 19722:S11|6973457863657074696f6e 19723:O1|@9327 19724:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7254797065283129 19725:O1|@9328 19726:O2|@19728,@19727 19727:O1|@9332 19728:O1|@9331 19729:S58|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065436f6e737472283129 19730:O1|@9333 19731:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7254797065436f6e737472283129 19732:O1|@9334 19733:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72537472756374283129 19734:O1|@9335 19735:O2|@19737,@19736 19736:O1|@9340 19737:O1|@9339 19738:O2|@10625,@19695 19739:S41|56414c55455f4f505328292e646973706c6179536967283529636f6d706f73697465456e762d283129 19740:O2|@10448,@14948 19741:O1|@9346 19742:S36|56414c55455f4f505328292e646973706c61795369672835296f72646572283129283129 19743:S33|56414c55455f4f505328292e646973706c61795369672835296f72646572283129 19744:O1|@9341 19745:S39|56414c55455f4f505328292e646973706c6179536967283529646973706c617953706563283229 19746:S25|56414c55455f4f505328292e646973706c6179536967283529 19747:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283329 19748:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283129 19749:O1|@9351 19750:O4|103,@10021,@19752,@19751 19751:O5|@13516,1709,0,1709,0 19752:S22|4e6f74206120676c6f62616c20737472756374757265 19753:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f72537472756374283129 19754:O1|@9352 19755:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72537472756374283129 19756:O1|@9353 19757:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757056616c283129 19758:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757054797065283129 19759:S66|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b7570537472756374283129 19760:O1|@9359 19761:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c56616c756573283129 19762:O1|@9362 19763:S62|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c5479706573283129 19764:O1|@9365 19765:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c53747275637473283129 19766:O1|@9367 19767:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229283129 19768:O1|@9368 19769:O1|@9369 19770:O1|@9370 19771:O4|103,@10021,@19773,@19772 19772:O5|@13516,1750,0,1750,0 19773:S37|7570646174696e67206120737472756374757265206973206e6f7420706f737369626c652e 19774:S67|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229656e74657246756e6374696f6e283129 19775:O1|@9371 19776:O1|@9372 19777:O1|@9373 19778:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229 19779:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283129 19780:S8|636f6e74656e7473 19781:O1|@9374 19782:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72536967283129 19783:O1|@9375 19784:O2|@19786,@19785 19785:O1|@9379 19786:O1|@9378 19787:S52|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953696773283129 19788:O1|@9380 19789:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72536967283129 19790:O1|@9381 19791:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7246756e63746f72283129 19792:O1|@9382 19793:O2|@19795,@19794 19794:O1|@9386 19795:O1|@9385 19796:O2|@10625,@19797 19797:O2|@19798,@14947 19798:O2|3,@19799 19799:S2|293a 19800:S40|56414c55455f4f505328292e646973706c617946756e63746f7273283329617267456e762d283129 19801:O2|@10448,@19802 19802:O2|@10450,0 19803:S30|56414c55455f4f505328292e646973706c617946756e63746f7273283329 19804:S56|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617946756e63746f7273283129 19805:O1|@9392 19806:O4|103,@10021,@19808,@19807 19807:O5|@13516,1817,0,1817,0 19808:S20|4e6f74206120676c6f62616c2066756e63746f72 19809:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7246756e6374283129 19810:O1|@9393 19811:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7246756e63746f72283129 19812:O1|@9394 19813:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72466978283129 19814:O1|@9395 19815:S31|56414c55455f4f505328292e646973706c6179466978537461747573283129 19816:S30|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229 19817:O3|@19819,@19818,0 19818:O2|@19870,@19871 19819:S7|3c737464696e3e 19820:O1|@9396 19821:S24|506f6c794d4c2e72756e46756e6374696f6e283129283129 4804:D3,680|3b650c7305ff552ccd01bf0400c0b08b07e83e5c0000ff7504bf040026b181c7b400000057896504ff7504bf040026b181c7a500000057896504be030000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000048893757b815000000e85e5c000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240457b803000000bb01000000e86e67000089c2e9130100008b650483c4045f897d04e9890000008b650483c4045f897d04bf0300000057ff7504bf040026b181c7f000000057896504b827000000bb01000000e86767000089c283c4045f897d04eb178b650483c4045f897d048b0424e88a670000ba283266b1ff7504bf040026b181c72901000057896504b801000000ff1283c4045f897d04eb0a8b650483c4045f897d043b650c7303ff552ceb87ff7504bf040026b181c76901000057896504b827000000bb01000000e8ee66000089c283c4045f897d04eb198b650483c4045f897d04b803000000e80f670000ba583266b1ff7504bf040026b181c7a401000057896504b801000000ff1283c4045f897d04eb0a8b650483c4045f897d043b650c7303ff552ceb85f6c201754c8b328b5a0481fe603266b17502eb268b3e8d3c7d0100000083ff1b751fbf603266b18d76048d7f04b90d0000003bc9f3a67402eb07bb03000000eb1589df89fa3b650c7305ff552ccd04ebafbb010000008b0424e8066700008b0424e81634110089c28d642404b87cb869b1ff12ff7504bf040026b181c75702000057896504b827000000bb01000000e80066000089c283c4045f897d04eb198b650483c4045f897d04b801000000e821660000baa8b869b1ff7504bf040026b181c79202000057896504b801000000ff1283c4045f897d04eb0a8b650483c4045f897d043b650c7303ff552ceb85f400|@19821,1,@4594|11,0,@4595 18,1,@4892 26,0,@4804 44,0,@4804 59,0,1 93,0,10 98,1,@4893 144,0,1 149,0,0 154,1,@4902 191,0,1 200,0,@4804 215,0,19 220,0,0 225,1,@4903 254,1,@4904 259,0,@9984 267,0,@4804 282,0,0 321,0,@4804 336,0,19 341,0,0 346,1,@4903 372,0,1 377,1,@4904 382,0,@9986 390,0,@4804 405,0,0 452,0,@9987 475,0,@9987 486,0,6 499,0,1 522,0,0 530,1,@4907 538,1,@6768 549,0,@19817 559,0,@4804 574,0,19 579,0,0 584,1,@4903 610,0,0 615,1,@4904 620,0,@19820 628,0,@4804 643,0,0 4805:D3,28|3b650c7305ff552ccd058b7a04c70701000000b801000000c3f40000|@9401,1,@0|15,0,0 20,0,0 4806:D3,172|3b650c7305ff552ccd0552ff7504bff00226b181c75f000000578965046a016a016a015483042404b801000000bb01000000e8890000005b5f83f7fe83e7050bdf8b7c24088b47046a01e8a5010000b80100000083c4045f897d0483c404c38b650483c4045f897d048b3883ff1975308d642404bf0c8046b48b07bb1c0466b1e81b050000bf0c8046b48b078b7010ff3424bb6c1e66b189742404e9983000008d6424048b5d04ff23f40000|@9850,1,@42|15,0,@4806 41,0,0 46,0,0 51,1,@4807 75,1,@4808 80,0,0 117,0,@19863 124,0,@9443 129,1,@4819 134,0,@19863 147,0,@9844 156,1,@4839 4807:D3,288|3b650c7305ff552ccd0989c2ff742404f6c2010f85e70000008b3a8b42048b0f89ce83f905750e89c23b650c7305ff552ccd0cebdb83fe03755d8b7f0483ff037507bf0d000000eb1d83ff017507bf09000000eb1183ff077507bf05000000eb05bf010000000bdf8b7c240c83e70d83ff01740e8d642404b8700066b18b5d04ff238b74240c83ce0d5a8954240489742408e969ffffff8b7f0483ff01752f8b7c240c83e70383ff01740e8d642404b8700066b18b5d04ff238b74240c83ce035a8954240489742408e932ffffff83cb038b7c240c83e70383ff01740e8d642404b8700066b18b5d04ff238b74240c83ce035a8954240489742408e900ffffff8b7c240c8b142489d6891a89f6897e048d642404b801000000c20800f4000000|@9410,1,@1|67,0,6 79,0,4 91,0,2 98,0,0 121,0,@9405 176,0,@9405 226,0,@9405 277,0,0 4808:D3,48|b9047046b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9411,1,@2|1,0,@19822 4809:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b83b000000c744240401000000ff22f4000000|@9420,1,@4|22,0,29 30,0,0 4810:D3,48|b9247046b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@5|1,0,@19823 4811:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b80f000000c744240401000000ff22f4000000|@9420,1,@6|22,0,7 30,0,0 4812:D3,108|3b650c7305ff552ccd0589d78b088b58048b70088b560483f9017c4583fb017c368b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e0489168b57048b5f08ff3424b81700000089742404ff22b8800266b18b5d04ff23b8800266b18b5d04ff23f4|@9431,1,@7|77,0,11 88,0,@9427 98,0,@9427 4813:D3,48|b9407046b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@8|1,0,@19824 4814:D3,108|3b650c7305ff552ccd0589d78b088b58048b500883f9017c4883fb017c3983c1088b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e0489168b57048b5f08ff3424b81700000089742404ff22b8800266b18b5d04ff23b8800266b18b5d04ff23f4|@9434,1,@9|77,0,11 88,0,@9427 98,0,@9427 4815:D3,48|3b650c7305ff552ccd0589d78b57048b5f086a01b839000000ff1289c783ff017e06b803000000c3b801000000c3f400|@9420,1,@10|21,0,28 35,0,1 41,0,0 4816:D3,48|b95c7046b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@11|1,0,@19825 4817:D3,92|3b650c7305ff552ccd0552508b7c24048b5708b801000000ff1289c783ff03752f8b7c24048b57048b0424ff1289c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b801000000c3f400|@9440,1,@12|20,0,0 85,0,0 4818:D3,92|3b650c7305ff552ccd0552508b7c24048b5708b801000000ff1289c783ff03752f8b7c24048b57048b0424ff1289c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b801000000c3f400|@9442,1,@13|20,0,0 85,0,0 4819:D3,800|3b650c7305ff552ccd0950538b4424048b78148b3f83ff03750e8b3c248b3f8d3c7d01000000eb728b34248b3e8d147d010000008b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708c747040100000089f689378d6424048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703c40b26b189c08b701089c08d642404ff342489742404e9fe2a000083ff017507bf01000000eb6389fa83ea02710e8d642408b8f80466b18b5d04ff2383fa017d098d642408e9490200008b34248b0e8d0c4d010000003bd17c07b903000000eb05b90100000083f9030f842002000083c208d1ea89f60fb634168d34750100000083fe150f85df010000578b3c2489fa83ff0175778d6424048b34248b3e8d147d010000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c747040100000089f689378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703dc3726b18b04248b701089c08d642404ff342489742404e90d2a00008b7424048b3e8d0c7d0100000089d289d783fa010f8c3501000089ff89fa3bf90f871b0100008b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089d2895708c747040100000089f689378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703043826b18b4424088b781057e88d2900008b4424088b781057bb6c1e66b1e87b2900008b3c2489fa83ff010f8c930000008b7424048b3e8d0c7d0100000089d289d73bd1777089fa2bcf83c1018b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889d28957048d64240489f689378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7032c3826b18b04248b701089c08d642404ff342489742404e9e82800008d64240cb8741e66b18b5d04ff238d64240cb8800266b18b5d04ff238d64240cb8d41b66b18b5d04ff238d64240cb8800266b18b5d04ff2389fe83ee02710e8d642408b8f80466b18b5d04ff2389f73b650c7305ff552ccd80e98cfdffff8d642408b8a01e66b18b5d04ff23f4000000|@9849,1,@41|84,0,0 127,0,@4820 150,1,@4839 160,0,0 178,0,@9455 218,0,1 225,0,0 324,0,0 367,0,@4844 391,1,@4839 467,0,0 506,0,@4845 519,1,@4839 532,0,@9844 537,1,@4839 660,0,@4846 684,1,@4839 693,0,@9845 707,0,@9427 721,0,@9821 735,0,@9427 756,0,@9455 787,0,@9847 4820:D3,20|3b650c7305ff552ccd058b5a04e916000000f400|@9836,1,@32|14,1,@4821 4821:D3,1076|3b650c7305ff552ccd09508b3c248b7f088b378b3c248b7f0c8b3f83ff0375648d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708440466b1c74704540466b189378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c7c0466b1897808c74004b80466b1c7002c00c0b08b5d04ff238b3c24ff378b7c2404ff77048b7c24088b7714ff33ff7304ff73088b7c24108b3f8b14243bd77e328b442414e81b1f00008b4424148b5c24088b542404598d6424088b74240c894c24088954240c8974240483c404e96a2100008b3683fe0575298b4424148b5c24088b542404598d6424088b74240c894c24088954240c8974240483c404e93a2100008b74240c8b3689fa2bd6710e8d642418b8f80466b18b5d04ff2383c2018b34243bf20f8dfd0000008b7c240cff378b7c240c8b3f8d347d010000008b7c240883ff010f8ccf0000008b7c240483ff010f8cb40000008b7c24088b5424048d7c17ff3bfe0f87920000008b7c24148b0f8b7c24148b7f048b142489d683fa017c6d8b5c240489f689f28d741eff3bf1760e8d64241cb8a41c66b18b5d04ff238b5c240883c3088b4c2404d1eb8b74240c8d341e89d2d1ea8d6424048d3c17d1e9f3a48b7c240c8b3f5e8d64240883ee0103fe710e8d64240cb8f80466b18b5d04ff235e893eb80100000083c408c38d64241cb8800266b18b5d04ff238d64241cb8d41b66b18b5d04ff238d64241cb8800266b18b5d04ff238d64241cb8800266b18b5d04ff238b74240c8b362bfe710e8d642418b8f80466b18b5d04ff2383c701578b7c2410ff378b7c24108b3f8d347d010000008b7c240c83ff010f8cb40100008b7c240483ff010f8c990100008b7c240c8b5424048d7c17ff3bfe0f87770100008b7c24188b0f8b7c24188b7f048b142489d683fa010f8c4e0100008b5c240489f689f28d741eff3bf1760e8d642420b8a41c66b18b5d04ff238b5c240c83c3088b4c2404d1eb8b7424108d341e89d2d1ea8d6424048d3c17d1e9f3a48b7c24108b3f8b342483ee0103fe710e8d64241cb8f80466b18b5d04ff238b742410893e8b442418e8b71c00008b3c2483ef018b54240803d7710e8d64241cb8f80466b18b5d04ff238b4c24042b0c24710e8d64241cb8f80466b18b5d04ff2383c1018b7c240c8b3f8d347d0100000083fa010f8c8600000083f9017c738d7c0aff3bfe775d8b7c24148b378b7c24148b7f043bce760e8d64241cb8a41c66b18b5d04ff2383c208d1ea8b74240c8d3416d1e9f3a48b7c24042b3c248d642408710e8d642414b8f80466b18b5d04ff238d64240883c7015e893eb80100000083c408c38d64241cb8d41b66b18b5d04ff238d64241cb8800266b18b5d04ff238d64241cb8800266b18b5d04ff238d642420b8800266b18b5d04ff238d642420b8d41b66b18b5d04ff238d642420b8800266b18b5d04ff238d642420b8800266b18b5d04ff23f40000|@9835,1,@31|65,0,@9444 72,0,@9445 107,0,@9447 117,0,@9449 123,0,@4600 177,1,@4836 218,1,@4837 266,1,@4837 287,0,@9455 419,0,@9829 486,0,@9455 499,0,0 512,0,@9427 526,0,@9821 540,0,@9427 554,0,@9427 578,0,@9455 704,0,@9829 769,0,@9455 789,1,@4836 812,0,@9455 835,0,@9455 904,0,@9829 947,0,@9455 967,0,0 980,0,@9821 994,0,@9427 1008,0,@9427 1022,0,@9427 1036,0,@9821 1050,0,@9427 1064,0,@9427 4822:D3,836|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404bed40466b1e9c002000089f68b3e8b7f0489d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3400c0b08b17ff1289c7578b7424048b7e0489fa83ff037d0abfd40466b1e9ac01000089f68b3e8b7f0889d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7424088b3e8b3f89f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604dc1a66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706001b66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071c1b66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c1b66b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707581b66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@9816,1,@27|29,0,@9452 57,0,@9455 98,0,@4601 124,0,@9452 152,0,@9455 193,0,@4602 227,0,@9455 268,0,@4602 307,0,@9806 344,0,@9794 379,0,@9809 414,0,@9794 449,0,@9795 522,0,@9794 557,0,@9811 592,0,@9794 627,0,@9795 700,0,@9794 735,0,@9813 773,0,@9815 809,0,0 816,0,0 823,0,1 829,0,0 4823:D3,36|3b650c7305ff552ccd018b70048b00ff3424bb0100000089742404e918000000f4000000|@9475,1,@26|19,0,0 28,1,@4824 4824:D3,2524|3b650c7305ff552ccd098b3089f1ff70048b780889faf7c6010000000f846d08000089ce89f783fe050f85830200008d642404528b7c240883ff037f0e8d642404b8240566b1e9bc0100008b7c240883ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be3c0566b1e9310100008b7c24048b3f89f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24088b77048b54240483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b8a81966b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704081a66b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707481a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000e88413000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ac1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c2040089fe83ff150f85180100008b7c240883ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910bf3c00c0b08b17ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e86412000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c2040089f783fe190f85180100008b7c240883ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910bf3c00c0b08b17ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e84111000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c2040089fe83ff2f0f85180100008b7c240883ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910bf3c00c0b08b17ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e81e10000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c2040089f781fecf0000000f85180100008b7c240883ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910bf3c00c0b08b17ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e8f80e000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c2040083ff110f851a01000089d78b74240883ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e8d50d000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c204008b45008d40f43b45087303ff5528894500c740fc020000008b3c248978048d642404c70007000000c204008b36f7c6010000000f85130100008b168b74240883ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff128b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c7070700000057e8890c000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c204008b45008d40f43b45087303ff5528894500c740fc020000008b3c248978048d642404c70007000000c20400f4|@9805,1,@25|66,0,@9458 90,0,@9455 114,0,@9460 141,0,@9455 182,0,@4602 214,0,@9455 256,0,@4604 263,0,@9787 311,0,@9792 348,0,@9794 383,0,@9795 459,0,@9797 495,0,0 502,0,0 509,0,1 515,0,0 520,1,@4835 555,0,0 592,0,@9802 627,0,@9803 663,0,0 670,0,0 677,0,1 683,0,0 715,0,@9455 756,0,@4602 802,0,3 808,1,@4835 843,0,0 880,0,@9802 954,0,0 961,0,0 968,0,1 974,0,0 1006,0,@9455 1047,0,@4602 1093,0,3 1099,1,@4835 1134,0,0 1171,0,@9802 1245,0,0 1252,0,0 1259,0,1 1265,0,0 1297,0,@9455 1338,0,@4602 1384,0,3 1390,1,@4835 1425,0,0 1462,0,@9802 1536,0,0 1543,0,0 1550,0,1 1556,0,0 1567,0,103 1591,0,@9455 1632,0,@4602 1678,0,3 1684,1,@4835 1719,0,0 1756,0,@9802 1830,0,0 1837,0,0 1844,0,1 1850,0,0 1882,0,@9455 1923,0,@4602 1969,0,3 1975,1,@4835 2010,0,0 2047,0,@9802 2121,0,0 2128,0,0 2135,0,1 2141,0,0 2184,0,3 2221,0,@9455 2301,0,3 2307,1,@4835 2342,0,0 2379,0,@9802 2453,0,0 2460,0,0 2467,0,1 2473,0,0 2516,0,3 4825:D3,136|3b650c7305ff552ccd058b008b5a04e88800000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704f80566b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700040666b1e8f301000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4|@9475,1,@16|16,1,@4826 51,0,@9471 88,0,@9472 93,1,@4827 130,0,3 4826:D3,420|3b650c7305ff552ccd0950538b7c24048b3f8d3c7d01000000576a016a018b342489f73b7424080f859c0000008d6424045f83ff010f8c800000003b3c2475068d64240858c389f883c00ebe09000000d1e8d1ee33d2f7f68d0c450100000081f9ffffff01774689ca8d345502000000f7de0375003b750872053b75007205ff5528cd82897500d1ea8956fcc646ff415683e9028b142489d6c7444afe00000000d1ef89f6893e6a096a01eb798d64240cb8780566b18b5d04ff238d64240cb8b00566b18b5d04ff2389ff89fe83c702578b54241089f683c608d1ee8b7c24140fb63c378d047d01000000ff1289c78b3f8d3c7d0100000083ef018b74240803f7710e8d642418b8f80466b18b5d04ff235a891424897424043b650c7303ff552ce9f8feffff8b3c2489fe3b7c240c75148d6424088b3c2489f88067ffbf89c08d642410c38b54241089f683c608d1ee8b7c24140fb63c378d047d01000000ff1289c78b378d1c750100000089d98d77048b54240489d0d1ea8b7c24088d3c17d1e9f3a48b142483c20289c78d741fff891424897424043b650c7303ff552ceb85f40000|@9470,1,@14|76,0,4 97,0,16777215 157,0,0 178,0,@9465 192,0,@9468 264,0,@9455 4827:D3,312|3b650c7305ff552ccd0189c7f7c70100000075148b078b770483fe017501c389fabe01000000eb06b8100666b1c3f6c201752f8b1a8b4a048b1b8d1c5d0100000083eb0103de710ab8f80466b18b5d04ff2389de89ca3b650c7305ff552ccdc4ebcc83fe017506b8100666b1c383fe017c6889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01773d89d18d044d02000000f7d80345003b450872053b45007205ff5528cdc4894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee89306a0957eb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f604240175418b34248b3e89f6ff76048b378d14750100000089d18d77048b7c2408d1ef8d3c38d1e9f3a48b7c24088d7417ff5a891424897424043b650c7305ff552ccd01ebb98d6424088060ffbfc3f4000000|@9474,1,@15|34,0,0 41,0,@9473 73,0,@9455 104,0,@9473 120,0,4 141,0,16777215 195,0,0 209,0,@9465 219,0,@9468 4828:D3,524|3b650c7305ff552ccd0581f8b90000007506b8440a66b1c383f8457506b8500a66b1c383f843720d81f8fd0000007705e9ce01000083f8410f84c501000083f80f7506b85c0a66b1c383f8117506b8680a66b1c383f8137506b8740a66b1c383f8157506b8800a66b1c383f8177506b88c0a66b1c383f8197506b8980a66b1c383f81b7506b8a40a66b1c383f8410f83ce00000089c681c680000000710ab8f80466b18b5d04ff2383fe017d05e9a600000081feff0100000f8f9a0000008b7a048b7c77fe8b378d0c750100000083f9017506b8b00a66b1c389ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01774f89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c640045cc640055e8d77048d7806d1e9f3a48060ffbfc3b8780566b18b5d04ff23b8bc0a66b18b5d04ff238b7a046a1557bb07000000e8ae00000089c78b378d0c750100000083f9017506b8f80b66b1c389ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01774b89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c640045c8d77048d7805d1e9f3a48060ffbfc3b8780566b18b5d04ff238b7a048b4447fec3f4|@9503,1,@18|12,0,92 19,0,@9477 30,0,@9478 42,0,126 68,0,@9479 79,0,@9480 90,0,@9481 101,0,@9482 112,0,@9483 123,0,@9484 134,0,@9485 159,0,@9455 180,0,255 212,0,@9486 228,0,4 249,0,16777215 303,0,0 335,0,@9465 345,0,@9487 361,0,3 366,1,@4829 387,0,@9502 403,0,4 424,0,16777215 478,0,0 506,0,@9465 4829:D3,652|3b650c7305ff552ccd095083fb01750c8d642404b8100666b1c2080083eb02710e8d642404b8f80466b18b5d04ff238b7c240c83ff01750e8d642404b8100b66b18b5d04ff238b7c240c83ffff75198b3c2481ff01000080750e8d642404b8680b66b18b5d04ff238b04248b7c240cd1f8d1ff99f7ff8d3c45010000008b74240c83fe01750e8d642404b8a40b66b18b5d04ff238b04248b74240cd1f8d1fe99f7fe8d34550100000083fe017502eb5283fe017d07be03000000eb05be010000008b54240c83fa017d07ba03000000eb05ba010000003bf27507be03000000eb05be0100000083fe03741789f883e802710e8d642404b8f80466b18b5d04ff23eb0289f88b7c240c8b7424085756e8edfeffff89c78b74240c83fe01750e8d642404b8a40b66b18b5d04ff23588b742408d1f8d1fe99f7fe8d14550100000083fa017507ba01000000eb4183fa017d07be03000000eb05be010000008b4c240883f9017d07b903000000eb05b9010000003bf17502eb158b74240883ee0103d6710ab8f80466b18b5d04ff2383c260710ab8f80466b18b5d04ff2383fa017d05e9dc00000081faff0100000f8fd00000008b742404ff7456fe8b378d1c75010000008b34248b368d3475010000005683fb0175088d64240458c208008b342483fe0175098d64240889f8c208008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775e89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc208008d642408b8780566b18b5d04ff23b8bc0a66b18b5d04ff23f4|@9501,1,@17|21,0,@9473 38,0,@9455 61,0,@9491 84,0,-1073741824 95,0,@9495 139,0,@9498 182,0,1 189,0,0 203,0,1 210,0,0 219,0,1 226,0,0 247,0,@9455 291,0,@9498 325,0,0 337,0,1 344,0,0 358,0,1 365,0,0 387,0,@9455 402,0,@9455 423,0,255 506,0,4 527,0,16777215 581,0,0 632,0,@9465 642,0,@9487 4830:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7005c2626b1c3f4000000|@9786,1,@20|43,0,@4831 4831:D3,560|3b650c7305ff552ccd058b780489f983ff037d06b8241866b1c38b3089f783fe017506b83c1866b1c389ce83f9037d06b8241866b1c38b52048b52048b3f83ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e41866b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1866b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707241966b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707401966b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9785,1,@19|21,0,@9761 36,0,@9763 49,0,@9761 68,0,@9455 168,0,@9771 175,0,1 183,0,@9772 190,0,1 198,0,@9773 205,0,1 212,0,0 257,0,@9774 294,0,@9776 329,0,@9779 365,0,0 372,0,1 379,0,3 385,0,0 424,0,0 461,0,@9780 496,0,@9781 532,0,0 539,0,0 546,0,1 552,0,0 4832:D3,20|3b650c7305ff552ccd01bf5400c0b08b17ff22f4|@9791,1,@23|11,0,@4605 4833:D3,56|3b650c7305ff552ccd018b00e83b00000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4|@9475,1,@22|13,1,@4834 50,0,3 4834:D3,44|b9787046b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@9790,1,@21|1,0,@19826 4835:D3,596|3b650c7305ff552ccd018b3883ff010f853c0200008b7010f7c6010000000f85ae0100008b3e8b760483fe017501c38b3783fe070f85190100008b570481fa6c1066b17502eb288b3a89fb8d3c7d0100000083ff037519bf6c1066b18d72048d7f04b9010000003bc9f3a67402eb01c381faec1166b17502eb2889df89fb8d3c7d0100000083ff037519bfec1166b18d72048d7f04b9010000003bc9f3a67402eb01c381fa080e66b17502eb2689df8d3c7d0100000083ff037519bf080e66b18d72048d7f04b9010000003bc9f3a67402eb01c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3c3f400|@9801,1,@24|63,0,@9596 88,0,@9596 99,0,0 114,0,@9628 139,0,@9628 150,0,0 165,0,@9545 188,0,@9545 199,0,0 241,0,@9798 278,0,@9800 314,0,0 321,0,1 328,0,3 334,0,0 368,0,@9798 405,0,@9800 441,0,0 448,0,1 455,0,3 461,0,0 495,0,@9798 532,0,@9800 568,0,0 575,0,1 582,0,3 588,0,0 4836:D3,612|3b650c7305ff552ccd018b7804ff378b7008ff36ff308b54240883fa01750a8d64240cb801000000c38b761cf7c601000000750cff36c707010000006a01eb698d6424048b7d008d7ff03b7d087303ff5528897d00c747fc03000000c747087c1b66b1c747048c1b66b18b342489378d6424048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cbc1b66b1897808c74004b80466b1c7002c00c0b08b5d04ff23ff7504bfbc2b26b181c7a4010000578965048b54240c8b7424182b742408710ab8f80466b18b5d04ff2383c6018b4c24108b018b7c240889fb83ff010f8caf00000083fe010f8c9c00000089db89df8d5c33ff3bd80f87820000008b45008d40f03b45087305ff5528cdc6894500c740fc0300000089c989480889700489ff8938ff1289c683c4045f897d048b142489d783ea0103d6710e8d642414b8f80466b18b5d04ff233b542410750a8d642414b801000000c389ff83ef0103f7710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552ce923ffffffb8d41b66b18b5d04ff23b8800266b18b5d04ff23b8800266b18b5d04ff238b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abf2c1c66b18b378934248b7704897424048b7f08897c2408eb3d8b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000c747087c1b66b18947048b7424188937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c501c66b189500889700489388b5d04ff23f4000000|@9827,1,@28|36,0,0 56,0,0 95,0,@9817 102,0,@9818 144,0,@9820 154,0,@9449 160,0,@4600 173,0,@4836 202,0,@9455 326,0,@9455 346,0,0 365,0,@9455 391,0,@9821 401,0,@9427 411,0,@9427 442,0,@4600 473,0,@9824 527,0,@9817 543,0,@4600 551,0,@9449 591,0,@9826 4837:D3,832|3b650c7305ff552ccd09538b78088b7720f7c601000000750bff36ff376a01e94b0100008b771cf7c601000000753e8b368b3fb9070000008d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff41c7420800000000b901000000eb668d6424048b378b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708440466b1c747048c1b66b189378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c8c1c66b1897808c74004b80466b1c7002c00c0b08b5d04ff2383f91572798b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000895304c70315000000ff742408ff742410ff742408525689f88b54240c8b4c24088b7424188944240cb8010000008b7c241087df897c24108b3c24897c24148b7c2404897c2418894c241c895424208974240883c408e9070200008d64241889cbd1ebc6041a2089cb83c30289d93b650c7305ff552ccdc6e964ffffffff7504bf342e26b181c783020000578965048b5424108b74242083ee018b7c240803fe710ab8f80466b18b5d04ff238b74241c2b742408710ab8f80466b18b5d04ff2383c6018b4c24148b098d1c4d0100000083ff010f8cae00000083fe010f8c9b0000008d4c37ff3bcb0f87850000008b45008d40f03b45087305ff5528cdc4894500c740fc030000008b4c24148948088970048938ff1289c683c4045f897d048b3c2483ef0103fe710e8d642410b8f80466b18b5d04ff238b5424143bfa750c8d642410b801000000c208008b3c2483ef0103f7710e8d642410b8f80466b18b5d04ff238934243b650c7303ff552ce90affffffb8d41b66b18b5d04ff23b8800266b18b5d04ff23b8800266b18b5d04ff238b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abf2c1c66b18b378934248b7704897424048b7f08897c2408eb3d8b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000c74708440466b18947048b7424108937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c181d66b189500889700489388b5d04ff23f4|@9834,1,@30|52,0,3 98,0,0 103,0,0 144,0,@9444 151,0,@9818 186,0,@9828 196,0,@9449 202,0,@4600 247,0,10 284,0,0 329,1,@4838 371,0,@4837 405,0,@9455 425,0,@9455 544,0,@9455 566,0,0 588,0,@9455 614,0,@9821 624,0,@9427 634,0,@9427 665,0,@4600 696,0,@9824 750,0,@9444 766,0,@4600 774,0,@9449 814,0,@9833 4838:D3,652|3b650c7305ff552ccd0950538b1c242b5c2404710e8d642408b8f80466b18b5d04ff2383c30183fb157d02eb05bb150000008b7c242083ef018b54240403d7710e8d642408b8f80466b18b5d04ff238b7c241c8b3f8d347d0100000083fa010f8c1602000083fb010f8cff0100008d7c1aff3bfe0f87e501000083fb15760e8d642408b8a41c66b18b5d04ff2383c2088b74241c8b7c241889d9d1ea8d3416d1e9f3a4ff7504bf883126b181c7a3010000578965048b54241c83fb010f8cd700000083fb150f87c40000008b7c24188b45008d40f03b45087305ff5528cd8c894500c740fc03000000897808895804c70001000000ff1289c783c4045e8975048b54240489d683ea0103d7710e8d642408b8f80466b18b5d04ff233b1424750c8d642408b801000000c2180089f683ee0103fe57710e8d64240cb8f80466b18b5d04ff23ff742404ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b442408895c241c8b5c2404894c242089542424897424288b3c24897c242c83c414e975feffff8d642410b8d41b66b18b5d04ff23b8800266b18b5d04ff238b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abf2c1c66b18b378934248b7704897424048b7f08897c2408eb3d8b7424188b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000c74708440466b18947048937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400cd01c66b189500889700489388b5d04ff238d642408b8d41b66b18b5d04ff238d642408b8800266b18b5d04ff238d642408b8800266b18b5d04ff23f40000|@9832,1,@29|26,0,@9455 46,0,10 70,0,@9455 132,0,@9829 167,0,@4838 241,0,0 274,0,@9455 293,0,0 315,0,@9455 400,0,@9821 410,0,@9427 441,0,@4600 472,0,@9824 530,0,@9444 542,0,@4600 550,0,@9449 590,0,@9831 612,0,@9821 626,0,@9427 640,0,@9427 4839:D3,700|3b650c7305ff552ccd0950538b7d1cff77048b3c2483e70d83ff017502eb0f8b751c8b3c2483e7f383cf09897e04bf010000008b7424108b3683fe037502eb0c81ff419c00000f85460200008b74241033ff83c7fef00fc13e83ef0283ff010f8517020000ff7504bf283426b181c78f000000578965048b54240c8b442410ff1289c783c4045e897504e9540100008b650483c4045f897d04508b74241433ff83c702f00fc13e83c70283ff037502eb138b7c2414c707030000008b442414e80c0200008b751c8b7c2404897e048b7c240483e70983ff0975148b7d1c8b7f0c83ff017407e826020000eb00eb008b3c248b770cf7c60100000075548b3e8b4e048b46088b560c8b5e108b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85de0000008b3fff378b5f048b57088b470c8b4f108b7c2404ff378b7c2408ff77048b7c240c8b7f088b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e088956048b54240889168b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8978085f8978045f8d6424088938e86f01000089c7578b74241433ff83c702f00fc13e83c70283ff037502eb138b7c2414c707030000008b442414e8c20000008b751c8b7c2404897e048b7c240483e70983ff0975148b7d1c8b7f0c83ff017407e8dc000000eb00eb005883c40cc204008b3c248b3f8b34248b76045a8b52088b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400cf81d66b189500889700489388b5d04ff238b442410e8ef0000003b650c7303ff552ce99cfdffff89fe83c602710e8d64240cb8f80466b18b5d04ff2389f73b650c7305ff552ccd80e97bfdfffff4000000|@9843,1,@37|47,0,0 66,0,20000 105,0,@4839 183,0,1 192,1,@4840 230,1,@4841 337,0,0 477,1,@4842 513,0,1 522,1,@4840 560,1,@4841 619,0,@9840 641,1,@4843 670,0,@9455 4840:D3,44|b9987046b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@9837,1,@33|1,0,@19827 4841:D3,44|b9b87046b48b0989e78965208b651883ec44ff751cffd189fc837d10017501c38b45108b5d04ff23f4000000|@9838,1,@34|1,0,@19828 4842:D3,16|3b650c7305ff552ccd018b5d04ff23f4|@9839,1,@35| 4843:D3,44|b9d87046b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@9842,1,@36|1,0,@19829 4844:D3,20|3b650c7305ff552ccd058b5a04e9fed3fffff400|@9836,1,@38|14,1,@4821 4845:D3,20|3b650c7305ff552ccd058b5a04e9d6d3fffff400|@9836,1,@39|14,1,@4821 4846:D3,20|3b650c7305ff552ccd058b5a04e9aed3fffff400|@9836,1,@40|14,1,@4821 4847:D3,204|3b650c7305ff552ccd05528b3c248b5704ff1289c783ff017576bf1c8046b48b3f83ff037538be1c8046b433ff83c7fef00fc13e83ef0283ff017507bf03000000eb05bf0100000083ff037511b801000000bb03000000e884000000eb306a016a016a015483042404b801000000bb01000000e8e4caffff5b5f83f7fe83e7050bdf6a01b8641f66b1e802ccffffeb2c8b178b4704ff7504bf543826b181c7b200000057896504ff1283c4045f897d04eb0a8b650483c4045f897d043b650c7303ff552ce942fffffff40000|@9856,1,@46|27,0,@19865 39,0,@19865 61,0,1 68,0,0 78,0,0 83,0,1 88,1,@4848 106,0,0 111,0,0 116,1,@4807 133,0,@9854 138,1,@4808 153,0,@4847 4848:D3,588|3b650c7305ff552ccd0983fb037502eb35bf01000000be1c8046b48b3683fe037502eb0c81ff419c00000f8581000000be1c8046b433ff83c7fef00fc13e83ef0283ff0175548b7d1c8b7f0483e70d83ff017507bf05000000eb2083ff057507bf07000000eb1483ff097507bf03000000eb05bf0100000083f702578b3c2483ff057502eb128b751c8b7d1c8b7f0483e7f383cf05897e04eb39b81c8046b4e8c4fdffff3b650c7303ff552ce960ffffff89fe83c602710ab8f80466b18b5d04ff2389f73b650c7305ff552ccd80e943ffffffbf01000000be248046b48b3683fe037502eb0881ff419c00007534be248046b433ff83c7fef00fc13e83ef0283ff01750abf2c8046b48b3f57eb37b8248046b4e850fdffff3b650c7303ff552cebb189fe83c602710e8d642404b8f80466b18b5d04ff2389f73b650c7305ff552ccd80eb93f6042401751d8b3c248b0789ffff7704e8060100005e8934243b650c7303ff552cebdd8d642404bf01000000be2c8046b4893ebe248046b433ff83c702f00fc13e83c70283ff037502eb15bf248046b4c70703000000b8248046b4e81ffcffff8b751c8b3c2489fa83ff037507bf0d000000eb2389d289d783fa017507bf09000000eb1389ff83ff077507bf05000000eb05bf010000008b551c8b520483e2f30bfa897e048b342489f783fe0175068d642404eb0d89ff83ff038d6424047402eb128b7d1c8b7f0c83ff017407e8edfbffffeb00be1c8046b433ff83c702f00fc13e83c70283ff037506b801000000c3bf1c8046b4c70703000000b81c8046b4e97afbfffff400|@9853,1,@44|18,0,0 23,0,@19865 38,0,20000 49,0,@19865 85,0,2 97,0,3 109,0,1 116,0,0 155,0,@19865 160,1,@4843 185,0,@9455 212,0,0 217,0,@19866 232,0,20000 239,0,@19866 261,0,@19867 271,0,@19866 276,1,@4843 302,0,@9455 342,1,@4849 365,0,0 370,0,@19867 377,0,@19866 401,0,@19866 407,0,1 412,0,@19866 417,1,@4840 435,0,6 451,0,4 465,0,2 472,0,0 531,1,@4841 538,0,@19865 560,0,0 566,0,@19865 572,0,1 577,0,@19865 582,1,@4840 4849:D3,24|b9f87046b48b0989e78b651883ec4450ffd189fcc3f40000|@9852,1,@43|1,0,@19830 4850:D3,24|3b650c7305ff552ccd01bb01000000e960fdfffff4000000|@9855,1,@45|11,0,0 16,1,@4848 4851:D3,44|b9187146b48b0989e78965208b651883ec44ff751cffd189fc837d10017501c38b45108b5d04ff23f4000000|@9857,1,@47|1,0,@19831 4852:D3,24|3b650c7305ff552ccd058b5a04b825000000e915000000f4|@9862,1,@49|14,0,18 19,1,@4853 4853:D3,44|b9347146b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@9861,1,@48|1,0,@19832 4854:D3,124|3b650c7305ff552ccd05528b3c248b7f088b3f576a01f64424040175598b7c24048b0789ffff7704ff7504bf983c26b181c755000000578965048b78108b7424148b5e0457e846f7ffff89c283c4045f897d04eb0f8b650483c4045f897d04ba010000005e891424897424043b650c7303ff552ceba05883c408c3f4|@9863,1,@50|44,0,@4854 70,1,@4839 96,0,0 4855:D3,40|3b650c7305ff552ccd058b7808ff77088b5a048b7a0857e8200000005ab801000000ff22f4000000|@9867,1,@54|24,1,@4856 30,0,0 4856:D3,248|3b650c7305ff552ccd0950538b7c2404ff770c8b3c248b3783fe03750c8d64240cb801000000c2040089ffc70703000000bf010000008b7424048b1683fa037502eb0c81ff419c00000f858000000033ff83c7fe89f689f0f00fc13e83ef0283ff0175598b7c24108b078b1c24e89a00000089c78d6424048b74240c893e33f683c6028b142489d7f00fc13283c60283fe0375068d642404eb1389ff89f8c70703000000e8ebf8ffff8d642404588b3c24897c240483c404e9bf000000e876f9ffff3b650c7303ff552ce962ffffff89fe83c602710e8d64240cb8f80466b18b5d04ff2389f73b650c7305ff552ccd80e941fffffff40000|@9866,1,@53|34,0,0 45,0,1 50,0,0 69,0,20000 110,1,@4857 160,0,1 165,1,@4840 185,1,@4858 190,1,@4843 219,0,@9455 4857:D3,92|3b650c7305ff552ccd09a8017546ff308b40048b3c248b7f0c3bfb742ee8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9acffffffb801000000c3f400|@9865,1,@51|85,0,0 4858:D3,612|3b650c7305ff552ccd018b7804ff378b7008ff36ff308b54240883fa01750a8d64240cb801000000c38b761cf7c601000000750cff36c707010000006a01eb698d6424048b7d008d7ff03b7d087303ff5528897d00c747fc03000000c747087c1b66b1c747048c1b66b18b342489378d6424048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cbc1b66b1897808c74004b80466b1c7002c00c0b08b5d04ff23ff7504bfe03e26b181c7a4010000578965048b54240c8b7424182b742408710ab8f80466b18b5d04ff2383c6018b4c24108b018b7c240889fb83ff010f8caf00000083fe010f8c9c00000089db89df8d5c33ff3bd80f87820000008b45008d40f03b45087305ff5528cdc6894500c740fc0300000089c989480889700489ff8938ff1289c683c4045f897d048b142489d783ea0103d6710e8d642414b8f80466b18b5d04ff233b542410750a8d642414b801000000c389ff83ef0103f7710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552ce923ffffffb8d41b66b18b5d04ff23b8800266b18b5d04ff23b8800266b18b5d04ff238b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abf2c1c66b18b378934248b7704897424048b7f08897c2408eb3d8b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000c747087c1b66b18947048b7424188937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c501c66b189500889700489388b5d04ff23f4000000|@9827,1,@52|36,0,0 56,0,0 95,0,@9817 102,0,@9818 144,0,@9820 154,0,@9449 160,0,@4600 173,0,@4858 202,0,@9455 326,0,@9455 346,0,0 365,0,@9455 391,0,@9821 401,0,@9427 411,0,@9427 442,0,@4600 473,0,@9824 527,0,@9817 543,0,@4600 551,0,@9449 591,0,@9826 4859:D3,232|3b650c7305ff552ccd0552baf82066b16a03b801000000bbd82566b1e8db00000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf030000008b55008d52f83b55087305ff5528cdc0895500c742fc01000048893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707030000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703b85926b18b3c248b470489ff8b77088d642404ff342489742404e9e9f1fffff4|@9911,1,@82|12,0,@9870 19,0,0 24,0,@9909 29,1,@4860 66,0,1 99,0,1 165,0,1 200,0,@4886 227,1,@4839 4860:D3,1352|8d7c24b03b7d0c7305ff5530cd0d5250538b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424048977088b7424088b7604897704c707b04726b18b75008d76f03b75087305ff5528cd80897500c746fc030000008b5424048956088b5424088b5208895604c706304826b16a016a016a016a018b54242083fa0375588b55008d52f83b55087305ff5528cdc0895500c742fc01000000893289d68b55008d52f83b55087305ff5528cdc0895500c742fc01000000893a89d7893424897c2404c744240801000000c744240c01000000e9a90000008b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b7424188b7620897204c702684826b18b75008d76f83b75087305ff5528cd84897500c746fc0100000089168b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b7c24188b7f20897a04c702944826b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917c7042401000000c74424040100000089742408897c240cff3424ff742408ff742410ff7424188b7c24288b570c6a01b83d0000008b5c2428ff1289c76a016a016a0183ff057f1dbfd82166b18b378934248b7704897424048b7f08897c2408e9a8010000ff7504bf544226b181c704020000578965048b7c243c8b571c6a01b8250000008b5c243cff12bf0300000083c4045e897504eb1a8b650483c4045f897d048b3883ff050f8523030000bf0100000083ff03754f8b75008d76f03b75087305ff5528cd80897500c746fc030000008b5424308956088b5424348b521c895604c706c04826b18b55008d52f83b55087305ff5528cdc0895500c742fc010000008932eb05ba0100000083ff03754f8b4d008d49f03b4d087305ff5528cd84894d00c741fc030000008b7424308971088b7424348b7618897104c701fc4826b18b75008d76f83b75087305ff5528cd86897500c746fc01000000890eeb05be0100000083ff03754f8b4d008d49f03b4d087305ff5528cd44894d00c741fc030000008b7c24308979088b7c24348b7f14897904c701344926b18b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890feb05bf010000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc0300000089790889710489118b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000897908897104891189142489742404897c2408ff3424ff742408ff7424108b7d008d7ff03b7d087303ff5528897d00c747fc030000008b74243c8977088b7424408b760c897704c707704926b1578b7c24448b570c6a01b81f0000008b5c2444ff1289c7578b75008d76f03b75087303ff5528897500c746fc030000008b7c2444897e088b7c24488b7f10897e04c706004a26b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424488977088b74244c8b760c897704c7073c4a26b18b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b7424488977088b74244c8b7610897704c707804a26b18b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2448890e8b45008d40c03b45087305ff5528cdc4894500c740fc0f0000008b4c24148948388b4c24288948348b4c24248948308b4c240489482c8950288b5424308950248b54242c8950208b54241089501c8970188b7424148970148b74240c89701089780c8b3c248978088d6424085f8d6424288978048b7c241089388b7c241c897c242083c420e92c0300008d6424388b5d04ff23f40000|@9897,1,@75|60,0,@4861 109,0,@4862 201,0,0 209,0,0 259,0,@4863 332,0,@4864 367,0,0 375,0,0 412,0,30 436,0,@9875 468,0,@4860 492,0,18 503,0,1 538,0,0 592,0,@4865 627,0,0 681,0,@4866 716,0,0 770,0,@4867 805,0,0 942,0,@4868 957,0,15 1013,0,@4869 1089,0,@4870 1166,0,@4871 1336,1,@4872 4861:D3,108|3b650c7305ff552ccd0589d78b088b58048b70088b560483f9017c4583fb017c368b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e0489168b57048b5f08ff3424b81100000089742404ff22b8800266b18b5d04ff23b8800266b18b5d04ff23f4|@9872,1,@55|77,0,8 88,0,@9427 98,0,@9427 4862:D3,36|3b650c7305ff552ccd0589d78b57048b5f08ff342489442404b815000000ff22f4000000|@9873,1,@56|26,0,10 4863:D3,24|3b650c7305ff552ccd0589d78b57048b5f08ff22f4000000|@9874,1,@57| 4864:D3,24|3b650c7305ff552ccd0589d78b57048b5f08ff22f4000000|@9874,1,@58| 4865:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b825000000c744240401000000ff22f4000000|@9876,1,@59|22,0,18 30,0,0 4866:D3,36|3b650c7305ff552ccd0589d78b57048b5f0850b827000000ff12b801000000c3f4000000|@9877,1,@60|20,0,19 27,0,0 4867:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b829000000c744240401000000ff22f4000000|@9878,1,@61|22,0,20 30,0,0 4868:D3,124|3b650c7305ff552ccd0589d7ff7504be704926b181c638000000568965048b57048b5f086a01b823000000ff1289c783c4045e897504eb168b650483c4045f897d048b3883ff05752dbfffffffff83ff017c1d8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c38b5d04ff23f4|@9879,1,@62|16,0,@4868 39,0,17 74,0,-1 113,0,0 4869:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b837000000c744240401000000ff22f4000000|@9880,1,@63|22,0,27 30,0,0 4870:D3,48|3b650c7305ff552ccd0589d78b57048b5f086a01b821000000ff1289c783ff017e06b803000000c3b801000000c3f400|@9880,1,@64|21,0,16 35,0,1 41,0,0 4871:D3,40|3b650c7305ff552ccd0589d78b57048b5f08ff3424b80f000000c744240401000000ff22f4000000|@9880,1,@65|22,0,7 30,0,0 4872:D3,952|3b650c7305ff552ccd01ff30ff7004ff7008ff700cff7010ff7014ff7018ff701c8b78208b4824ff7028ff702c8b5030ff7034ff703883f901755683ff017507be01000000eb488b378b5d008d5bf03b5d087305ff5528cdc6895d00c743fc030000008b442408894308897304c703884e26b18b75008d76f83b75087305ff5528cd8e897500c746fc01000000891eeb0289ce83ff01754f83f9017507bf01000000eb418b398b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701a85026b18b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890feb00578b7c240889f983ff010f85b100000083fa017562f6442410017554f7c601000000754c8b7c24108b1f8b0e8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707305126b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000008939eb05b901000000eb488b0a8b7d008d7ff03b7d087305ff5528cd46897d00c747fc030000008b5c240c895f08894f04c707a05126b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000008939eb0289c983fa010f85b30000008b54240889d783fa017563f6442410017555f6042401754f8b7c24108b1f8b3c248b178b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08895704c707fc5326b18b55008d52f83b55087305ff5528cdc2895500c742fc01000000893aeb05ba01000000eb4389ff8b178b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c7076c5426b18b55008d52f83b55087305ff5528cdc2895500c742fc01000000893aeb0083fe017566f6442428017558f6c10175538b7c24288b1f8b318b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c8977088b742430897704c707385526b18b75008d76f83b75087305ff5528cd86897500c746fc01000000893eeb05be01000000eb008b3c2483ff01756a8d642404f6442424017558f6c20175538b7c24248b078b3a8b5d008d5bec3b5d087305ff5528cdc7895d00c743fc0400000089430c897b088b7c242c897b04c703f05526b18b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000000891feb05bf01000000eb015f8b45008d40c03b45087305ff5528cdc6894500c740fc0f0000005b8958388948348950308b54240489502c8b5424088950288970248978208b7c240c89781c8b7c24108978188b7c24148978148b7c24188978108b7c241c89780c8b7c24208978088b7c24248978048b7c2428893883c42cc3f4|@9896,1,@74|65,0,0 111,0,@4873 158,0,0 197,0,@4874 309,0,@4875 344,0,0 390,0,@4876 504,0,@4877 539,0,0 580,0,@4878 680,0,@4879 715,0,0 794,0,@4880 829,0,0 4873:D3,524|3b650c7305ff552ccd0589d78b570889d63bc27d0489c6eb00568b142489d683fa017c7989f689f081fef1ffff07760e8d642404b8002366b18b5d04ff2389c083c006be09000000d1e8d1ee33d2f7f68d14450100000089d18d344d02000000f7de0375003b750872053b75007205ff5528cd84897500d1e9894efcc646ff415683fa017502eb0e83ea028b3424c74456fe00000000be01000000eb0e8d642404b8b00566b18b5d04ff238b4c240489ca3bce0f872f0100008b4d008d49f43b4d087305ff5528cd84894d00c741fc020000008b342489710489d289d689118b57048b45008d40f03b45087305ff5528cd46894500c740fc0300000089480889f7897804c70001000000ff1289c183f9010f8cc30000003b4c24040f87ab00000083f901750a8d642408b8100666b1c383f903751e8b3c240fb63f8d6424048d347d01000000bf400666b18b4477fe83c404c389c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01774a89fe8d047502000000f7d80345003b450872053b45007205ff5528cd82894500d1ee8970fcc640ff4183ef02c74478fe0000000089cfd1ef89385e8d7804d1e9f3a48060ffbf83c404c38d642408b8780566b18b5d04ff238d642408b8d41b66b18b5d04ff238d642408b8800266b18b5d04ff2389f1d1e98b1424c6040a2089f283c20289d63b650c7305ff552ccdc0e9a2fefffff40000|@9883,1,@66|42,0,67108856 53,0,@9881 68,0,4 146,0,0 151,0,0 162,0,@9468 262,0,0 299,0,@9473 327,0,@9476 345,0,4 366,0,16777215 420,0,0 451,0,@9465 465,0,@9821 479,0,@9427 4874:D3,116|3b650c7305ff552ccd0589c7ff378b4704ff77088b5204ff1289c28b3c248b1f5f8b7f048b328d0c75010000008b342483fe017c308b34248d740eff3bf3760e8d642404b85c2366b18b5d04ff238d72045bd1eb8d3c1fd1e9f3a48b3a8d047d01000000c38d642404b8800266b18b5d04ff23f4|@9886,1,@67|69,0,@9884 106,0,@9427 4875:D3,92|3b650c7305ff552ccd0552508b7c24048b5708b801000000ff1289c783ff03752f8b7c24048b57048b0424ff1289c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b801000000c3f400|@9887,1,@68|20,0,0 85,0,0 4876:D3,584|3b650c7305ff552ccd0589d78b570889d63bc27d0489c6eb00568b142489d683fa017c7989f689f081fef1ffff07760e8d642404b8002366b18b5d04ff2389c083c006be09000000d1e8d1ee33d2f7f68d14450100000089d18d344d02000000f7de0375003b750872053b75007205ff5528cd84897500d1e9894efcc646ff415683fa017502eb0e83ea028b3424c74456fe00000000be01000000eb0e8d642404b8b00566b18b5d04ff238b4c240489ca3bce0f876a0100008b4d008d49f43b4d087305ff5528cd84894d00c741fc020000008b342489710489d289d689118b57048b45008d40f03b45087305ff5528cd46894500c740fc0300000089480889f7897804c70001000000ff1289c7f7c7010000000f85ff0000008b0f83f9010f8ce60000003b4c24040f87ce00000083f901750e8d642408bf100666b1e99000000083f903751f8b3c240fb63f8d6424048d347d01000000bf400666b18b7c77fe83c404eb6c89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01776889fe8d147502000000f7da0355003b550872053b55007205ff5528cd82895500d1ee8972fcc642ff4183ef02c7447afe0000000089cfd1ef893a5e8d7a04d1e9f3a48062ffbf89d783c4048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b8780566b18b5d04ff238d642408b8d41b66b18b5d04ff238d642408b8800266b18b5d04ff238d642408b801000000c389f1d1e98b1424c6040a2089f283c20289d63b650c7305ff552ccdc0e967fefffff4000000|@9887,1,@69|42,0,67108856 53,0,@9881 68,0,4 146,0,0 151,0,0 162,0,@9468 262,0,0 313,0,@9473 345,0,@9476 364,0,4 385,0,16777215 439,0,0 500,0,@9465 514,0,@9821 528,0,@9427 542,0,0 4877:D3,92|3b650c7305ff552ccd0552508b7c24048b5708b801000000ff1289c783ff03752f8b7c24048b57048b0424ff1289c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b801000000c3f400|@9888,1,@70|20,0,0 85,0,0 4878:D3,184|3b650c7305ff552ccd0589c7ff378b4704ff77088b5204ff1289c7f7c7010000000f85830000008b178b3c248b0789ff8b7f048d6424048b328d0c75010000008b1c2489de83fb017c5289f689f38d740eff3bf0760e8d642404b85c2366b18b5d04ff238d720489dbd1eb8d6424048d3c1fd1e9f3a48b3a8d3c7d010000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b8800266b18b5d04ff238d642408b801000000c3f4000000|@9888,1,@71|91,0,@9884 161,0,@9427 175,0,0 4879:D3,164|3b650c7305ff552ccd0552508b7c24048b570cb801000000ff128b7c24048b57088b0424ff1289c78d642404f7c70100000075078d6424048b07c38b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708182466b1c747048c1b66b18b34248b76048d64240489378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c282466b1897808c74004b80466b1c7002c00c0b08b5d04ff23f4|@9892,1,@72|20,0,0 86,0,@9889 93,0,@9818 138,0,@9890 148,0,@9449 154,0,@4600 4880:D3,164|3b650c7305ff552ccd0552508b7c24048b570cb801000000ff128b7c24048b57088b0424ff1289c78d642404f7c70100000075078d6424048b07c38b7d008d7ff03b7d087303ff5528897d00c747fc03000000c747088c2466b1c747048c1b66b18b34248b76048d64240489378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c9c2466b1897808c74004b80466b1c7002c00c0b08b5d04ff23f4|@9895,1,@73|20,0,0 86,0,@9893 93,0,@9818 138,0,@9894 148,0,@9449 154,0,@4600 4881:D3,48|b9547146b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@76|1,0,@19833 4882:D3,48|b9707146b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@77|1,0,@19834 4883:D3,48|b98c7146b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@78|1,0,@19835 4884:D3,48|b9a87146b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@79|1,0,@19836 4885:D3,492|3b650c7305ff552ccd0d89d789da57ff7504bfb85726b181c74c00000057896504ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c4045f897d0483c404c38b650483c4045f897d048b3883ff050f85800100008b700889f78b7604f7c6010000007407be03000000eb05be0100000083f60283fe030f855201000089fa8b7f048b3f8b34248b761483fe017502eb238b34248b76148b0e8b373b317507be03000000eb05be0100000083fe030f84110100008b34248b761083fe017502eb238b34248b76108b0e8b373b317507be03000000eb05be0100000083fe030f84d70000008b34248b760c83fe017502eb238b34248b760c8b0e8b373b317507be03000000eb05be0100000083fe030f849d0000008b34248b760883fe017502eb1f8b34248b76088b0e8b373b317507be03000000eb05be0100000083fe0374678b34248b760483fe0175068d642404eb1d5e8b76048b368b3f3b3e7507bf03000000eb05bf0100000083ff0374338b388b70048b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c5c2566b189500889700489388b5d04ff23b801000000c38d642404b801000000c38d642404b801000000c38d642404b801000000c38d642404b801000000c38d642404eb048d6424048b5d04ff23f400|@9905,1,@80|19,0,@4885 114,0,1 121,0,0 172,0,1 179,0,0 220,0,1 227,0,0 268,0,1 275,0,0 316,0,1 323,0,0 362,0,1 369,0,0 412,0,@9903 430,0,0 440,0,0 450,0,0 460,0,0 470,0,0 4886:D3,24|3b650c7305ff552ccd058b7a048938b801000000c3f40000|@9910,1,@81|16,0,0 4887:D3,24|3b650c7305ff552ccd058b5a04b825000000e95de2fffff4|@9862,1,@83|14,0,18 19,1,@4853 4888:D3,124|3b650c7305ff552ccd05528b3c248b7f088b3f576a01f64424040175598b7c24048b0789ffff7704ff7504bf105a26b181c755000000578965048b78108b7424148b5e0457e8ced9ffff89c283c4045f897d04eb0f8b650483c4045f897d04ba010000005e891424897424043b650c7303ff552ceba05883c408c3f4|@9863,1,@84|44,0,@4888 70,1,@4839 96,0,0 4889:D3,40|3b650c7305ff552ccd058b7808ff77088b5a048b7a0857e8200000005ab801000000ff22f4000000|@9867,1,@87|24,1,@4890 30,0,0 4890:D3,248|3b650c7305ff552ccd0950538b7c2404ff770c8b3c248b3783fe03750c8d64240cb801000000c2040089ffc70703000000bf010000008b7424048b1683fa037502eb0c81ff419c00000f858000000033ff83c7fe89f689f0f00fc13e83ef0283ff0175598b7c24108b078b1c24e89a00000089c78d6424048b74240c893e33f683c6028b142489d7f00fc13283c60283fe0375068d642404eb1389ff89f8c70703000000e873dbffff8d642404588b3c24897c240483c404e923d0ffffe8fedbffff3b650c7303ff552ce962ffffff89fe83c602710e8d64240cb8f80466b18b5d04ff2389f73b650c7305ff552ccd80e941fffffff40000|@9866,1,@86|34,0,0 45,0,1 50,0,0 69,0,20000 110,1,@4891 160,0,1 165,1,@4840 185,1,@4836 190,1,@4843 219,0,@9455 4891:D3,92|3b650c7305ff552ccd09a8017546ff308b40048b3c248b7f0c3bfb742ee8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9acffffffb801000000c3f400|@9865,1,@85|85,0,0 4892:D3,92|3b650c7305ff552ccd01a8017545ff308b4004e8e8ffffffff7504bf585c26b181c740000000578965048b542408b801000000ff1283c4045f897d0483c404c38b650483c4045f897d04b80100000083c404c3b801000000c3f40000|@9955,1,@89|28,0,@4892 47,0,0 75,0,0 84,0,0 4893:D3,600|3b650c7305ff552ccd0150ff7504bfc85c26b181c73301000057896504bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7c240883ff017d05e9dd0000008b7c240881ffffffff010f8dcd0000008b7c240889f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d78b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b4d008d49f43b4d087305ff5528cd44894d00c741fc020000008b7c2408897904c701345f26b18b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000040890f8b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c7000300000083c4045f897d0483c404c3b8383066b18b5d04ff238b650483c4045f897d048b3883ff090f8505010000ba803066b18b0424bb03000000e82602000089c78d642404578b3c248b3f8d1c7d0100000083fb01750e8d642404bf603166b1e98900000089df83c72089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf603166b1b9210000008d77048d7a04d1e9f3a489d95f8d77048d7a14d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c783166b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff238d6424048b5d04ff23f400|@9982,1,@98|15,0,@4893 30,0,0 82,0,16777215 142,0,0 213,0,@4894 282,0,1 298,0,@9964 329,0,@9967 337,0,1 342,1,@4896 375,0,@9975 395,0,4 416,0,16777215 474,0,0 483,0,@9975 488,0,16 550,0,@9976 560,0,@9978 566,0,@4611 580,0,@9465 4894:D3,192|3b650c7305ff552ccd05528b388d347d01000000bf0100000083fe01756b89f88b3c248b570489d683fa01750e8d642404b8842f66b18b5d04ff2389f78d642404d1e8d1ef33d2f7f78d1c5501000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e85a000000a8017401c3b8d02f66b18b5d04ff2389f183e90289f283c206d1ea0fb614108d14550100000089fb6bdb0783eb068d541aff89ce89d73b650c7305ff552ccdc1e95afffffff4|@9963,1,@91|21,0,0 50,0,@9956 113,0,@9958 118,1,@4895 128,0,@9960 4895:D3,44|b9c47146b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@9959,1,@90|1,0,@19837 4896:D3,292|3b650c7305ff552ccd0d6a016a016a0183fb0575178b72048b7a08c704242100000089742404897c2408eb4d83fb0375178b720c8b7a10c704241500000089742404897c2408eb3183fb0775178b72148b7a18c704241100000089742404897c2408eb158b721c8b7a20c704240500000089742404897c24085e5a59a801741383f8017d07bf03000000eb05bf01000000eb1c0fb678ff8d3c7d0100000083ff237507bf03000000eb05bf0100000083f8017506b8680e66b1c3a801740783f8017c12eb3a0fb658ff8d1c5d0100000083fb03742aa8017410bb010000002bd8700789d883c001eb1489c3b80100000056525157e83f0000005f595a5eeb006a016a01bbc83066b1545756525189dabb01000000e85f000000588d6424048060ffbfc3f4|@9974,1,@96|30,0,16 58,0,10 86,0,8 109,0,2 134,0,1 141,0,0 164,0,1 171,0,0 181,0,@9553 218,0,0 236,0,0 245,1,@4897 260,0,@9969 272,0,0 277,1,@4898 4897:D3,44|b9e07146b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@9968,1,@92|1,0,@19838 4898:D3,492|3b650c7305ff552ccd0d89c75253f7c701000000747af7c70100000074648b742404ff760457ff742408ff7424288b5424288b4c24248b5c24208b44241c8b742418894424148b442408895c24188b5c2404894c241c895424208b54240c8b3c24897c2424c744242801000000c744242c010000008974241083c410ff228d6424188d642408b8d02f66b18b5d04ff236a016a01f7c7010000000f84bc0000008b742418f7c6010000000f84aa0000008b74241883feff751681ff010000807507be03000000eb05be01000000eb05be0100000083f60283fe03757e8b74241883fe01750e8d642410b8100b66b18b5d04ff238b74241883feff751681ff01000080750e8d642410b8680b66b18b5d04ff2389f88b742418d1f8d1fe99f7fe8d3445010000008b54241883fa01750e8d642410b8a40b66b18b5d04ff2389f88b7c2418d1f8d1ff99f7ff8d3c5501000000893424897c2404eb0eeb008b5c24185489f8e8980000005f5ef7c60100000074698b542404ff720456ff74240857ff74241cff7424308b5424308b4c242c8b5c24288b4424248b7424208944241c8b442410895c24208b5c240c894c2424895424288b5424148b3c24897c242c8b7c2404897c24308b7c2408897c24348974241883c418ff228d6424208d642408b8d02f66b18b5d04ff23f40000|@9972,1,@94|105,0,0 113,0,0 135,0,@9960 187,0,-1073741824 194,0,1 201,0,0 208,0,0 234,0,@9491 254,0,-1073741824 265,0,@9495 308,0,@9498 356,1,@4899 480,0,@9960 4899:D3,48|b9007246b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9971,1,@93|1,0,@19839 4900:D3,976|3b650c7305ff552ccd0d89d789de89c383fb010f85540100008b54241c83fa010f85060100008b7c241083ff030f858100000089f783c70289f883c00ebe09000000d1e8d1ee33d2f7f68d14450100000081faffffff01775189d18d344d02000000f7de0375003b750872053b75007205ff5528cd84897500d1e9894efcc646ff4183ea02c74456fe00000000d1ef893ec646047e8b7c24148937c747040b000000b801000000c21c00b8780566b18b5d04ff2389f083c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01774d89f98d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff4183ef02c7447afe00000000d1ee89328b7c24148917c7470409000000b801000000c21c00b8780566b18b5d04ff238b5424188d7416ff566a016a018b5f048b4424288b7c241c8b7424188b5424148b4c2410545756525189da8b5c241cff125f5e8d642404ba01000000e9230200008b54240c83fa01750ab8a40b66b18b5d04ff2389d88b4c240cd1f8d1f999f7f98d14550100000083fa017507ba01000000eb4183fa017d07b903000000eb05b9010000008b44240c83f8017d07b803000000eb05b8010000003bc87502eb158b4c240c83e90103d1710ab8f80466b18b5d04ff2383fa157d2a83c260710ab8f80466b18b5d04ff2383fa017d02eb0a81faff0100007f02eb41b8bc0a66b18b5d04ff2381c282000000710ab8f80466b18b5d04ff2383ea14710ab8f80466b18b5d04ff2383fa017d05e94b01000081faff0100000f8f3f010000528b54241083fa01750e8d642404b8100b66b18b5d04ff238b54241083faff751681fb01000080750e8d642404b8680b66b18b5d04ff2389d88b4c2410d1f8d1f999f7f98d0c45010000008b54241083fa01750e8d642404b8a40b66b18b5d04ff2389d88b5c2410d1f8d1fb99f7fb8d14550100000083fa017502eb5283fa017d07ba03000000eb05ba010000008b5c241083fb017d07bb03000000eb05bb010000003bd37507ba03000000eb05ba0100000083fa03741789ca83ea02710e8d642404b8f80466b18b5d04ff23eb0289ca5283c602568b74242483ee02566a016a0189f88b7c24348b7424288b5424248b4c24208b5c241c57ff74240c54830424085652515389c28b44242c8b5c2428e8a4fcffff5a5f8d64240c8b0c24d1e98d64240489fed1ee880c3283c7028b7424148916897e04b801000000c21c00b8bc0a66b18b5d04ff238b4c24183bd175198b5424188d7416ff8b542414893a897204b801000000c21c008d4c16ffd1e9c6040f3089d183c10289ca3b650c7305ff552ccdc4ebc2f400|@9973,1,@95|62,0,4 83,0,16777215 137,0,0 158,0,5 163,0,0 171,0,@9465 186,0,4 207,0,16777215 261,0,0 278,0,4 283,0,0 291,0,@9465 356,0,0 375,0,@9498 410,0,0 422,0,1 429,0,0 443,0,1 450,0,0 472,0,@9455 492,0,@9455 510,0,255 519,0,@9487 537,0,@9455 552,0,@9455 573,0,255 598,0,@9491 618,0,-1073741824 629,0,@9495 672,0,@9498 714,0,1 721,0,0 735,0,1 742,0,0 751,0,1 758,0,0 779,0,@9455 895,0,0 903,0,@9487 938,0,0 4901:D3,20|3b650c7305ff552ccd01bf3c00c0b08b17ff22f4|@9981,1,@97|11,0,@4602 4902:D3,44|b9207246b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@9861,1,@99|1,0,@19840 4903:D3,44|b9407246b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@9861,1,@100|1,0,@19841 4904:D3,44|b9607246b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@9983,1,@101|1,0,@19842 4905:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@9985,1,@102|11,0,0 4906:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@9985,1,@103|11,0,0 4907:D3,106344|8dbc24e8feffff3b7d0c7305ff5530cd0950538b442404e8609f010089c7578b3c24ff77088b7c2404ff770c8b7c240c83ff037507bf183766b1eb05bf783f66b1578b7c241083ff037507bf303766b1eb05bf903f66b1beec00c0b0893e8b542404b8784166b1ff12b80c4266b1bb883966b1e890cc010089c757b801000000e8a3d4010089c757b801000000e806d5010089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604884566b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b80c4266b1bbc43966b1e8eed4010089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c504766b1897708c74704d03366b1c707884566b157b8884866b1bb883966b1e812cb010089c757b801000000e825d3010089c757b801000000e888d3010089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604984866b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8884866b1bbc43966b1e870d3010089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c504766b1897708c74704d03366b1c707984866b157b815000000e839f0ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610a44866b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707304966b18b7424188b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700304966b1ff12ba3c4966b18b0424e828df010089c78d64240457b813000000e843f0010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c604b66b1897708c7470405000000c707704b66b1578b7c24048b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b74240c89378b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707684766b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7007c4766b1ff128b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c700984866b1ff128b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c240c897804c700884566b1ff128b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d64240c897804c700704b66b1ff128b5424048b7c241083ff037507be303766b1eb05be903f66b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700443766b1ff128b542404b87c4b66b1ff128b542404b8b44c66b1ff128b542404b8344f66b1ff1268085066b1f604240175408b3c248b378b3c24ff77048b3e8b5424108b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebba8d6424048b542404b8d45d66b1ff1268ec5d66b1f604240175408b3c248b378b3c24ff77048b3e8b5424108b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebba8d6424048b542404b89c6566b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52e83b55087305ff5528cdc0895500c742fc05000000c74210603766b1c7420cb46566b1c74208d86566b1897204c7020b0000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c70605000000568b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b68d86566b1b8c46866b1e8e0fa010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c74704ac3966b1c707d86566b1578b5424088b75008d76f43b75087305ff5528cd04897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707b46566b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d86566b1ff128b54240c8b45008d40f43b45087305ff5528cd04894500c740fc020000005f897804c700d86566b1ff12b801000000e819cc010089c757b801000000e8e004020089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977105e89770cc7470801000000c74704386966b1c707506966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70619000000bf706966b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c7470801000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204b06966b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000bac86966b16a01bb01000000e83504020089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba030000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608785267b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707885267b1578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b18b342489770cc74708945267b1c7470401000000c7070b000000578b54240cb8ac5267b1ff128b54240cb8505367b1ff12b815000000e823e8ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c746106c5467b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707745467b18b7424188b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700745467b1ff12ba3c4966b18b0424e812d7010089c78d64240457bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057b801000000e83dc8010089c757b801000000e8b8a90f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604845467b1c706883966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938e85fa90f0089c6f7c60100000074065fe9d8000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e823c7010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e87fa90f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b55008d52f03b55087305ff5528cd80895500c742fc030000005e8972085e897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c7079c5467b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7009c5467b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b80b000000e843e4010089c7578b442404e8dba60f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e89cc4010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e85ca70f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208504766b18b742404897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707b05467b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b05467b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b8004166b1e85ea60f0089c7578b442404e8f2a40f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8b3c2010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e87ba80f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bb03000000e819a80f0089c7578b0424e8caa80f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208504766b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707045567b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700045567b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e8c9a70f0089c757b801000000e82ca80f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706305567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8bfa10f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e880bf010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e89ca70f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b45008d40f43b45087303ff5528894500c740fc02000000c74004585567b18b7c24088938bb03000000e809a50f0089c7578b0424e8baa50f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742404897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c7077c5567b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7007c5567b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e8b9a40f0089c757b801000000e81ca50f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c7068c5567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8af9e0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e870bc010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8f0a40f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b45008d40f43b45087303ff5528894500c740fc02000000c74004585567b18b7c24088938bb03000000e8f9a10f0089c7578b0424e8aaa20f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742404897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c7079c5567b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7009c5567b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e8a9a10f0089c757b801000000e80ca20f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706bc5567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e89f9b0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e860b9010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e844a20f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b45008d40f43b45087303ff5528894500c740fc02000000c74004585567b18b7c24088938bb03000000e8e99e0f0089c7578b0424e89a9f0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742404897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707cc5567b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700cc5567b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e8999e0f0089c757b801000000e8fc9e0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706dc5567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e88f980f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e850b6010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8989f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b45008d40f43b45087303ff5528894500c740fc02000000c74004585567b18b7c24088938bb03000000e8d99b0f0089c7578b0424e88a9c0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742404897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707ec5567b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700ec5567b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b811000000e883d3010089c7578b442404e81b960f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8dcb3010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8889d0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208645567b18b742404897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c7070c5667b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7000c5667b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b80f000000e89ad1010089c7578b442404e832940f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8f3b1010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8039c0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208645567b18b742404897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707245667b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700245667b1ff128b7c24088b5708b83c5667b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e8d59a0f0089c757b801000000e8389b0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706bc5667b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e89f910f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e860af010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8a89a0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bb03000000e8a3940f0089c7578b0424e854950f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707fc5667b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700fc5667b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742404893757b801000000e87f970f0089c757b801000000e8e2970f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706105767b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8498e0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e80aac010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8b6970f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bb03000000e84d910f0089c7578b0424e8fe910f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707245767b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700245767b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b807000000e8f7c8010089c7578b442404e88f8b0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e850a9010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e860950f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b18b742404897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707385767b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700385767b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b8902d66b1e8128b0f0089c7578b442404e8a6890f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e867a7010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e8db930f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c40457b8505767b1bb03000000e8108d0f0089c7578b0424e8c18d0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742408897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707685767b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700685767b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938e842870f0089c6f7c601000000740abf845767b1e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d64242cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e802a5010089c7578b7c240483ff017d0e8d642434b8a84566b18b5d04ff23b8010000008b5c2404e8da910f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b1c706845767b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700645567b1bb03000000e8458a0f0089c7578b0424e8f68a0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742404897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f8d642404897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707e45767b18b7424048b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700e45767b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b3424893757b801000000e808900f0089c757b801000000e86b900f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604005867b1c706185867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e80a840f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8cba1010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e8db8f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704885867b18b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938bb03000000e831870f0089c7578b0424e8e2870f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208504766b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707945867b18b7424048b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700945867b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b3424893757b801000000e8f88c0f0089c757b801000000e85b8d0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604005867b1c706ac5867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8fa800f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8bb9e010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e82f8d0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704885867b18b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938bb03000000e821840f0089c7578b0424e8d2840f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742414897208897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707c45867b18b7424048b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700c45867b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b3424893757b801000000e8e8890f0089c757b801000000e84b8a0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604005867b1c706e05867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8ea7d0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8ab9b010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e8838a0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704885867b18b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938bb03000000e811810f0089c7578b0424e8c2810f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707f85867b18b7424048b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f85867b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b3424893757b801000000e8d8860f0089c757b801000000e83b870f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604005867b1c7060c5967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8da7a0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e89b98010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e8d7870f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704885867b18b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938bb03000000e8017e0f0089c7578b0424e8b27e0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f8d642404897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707245967b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700245967b1ff12b801000000e8f67d0f0089c757b801000000e8597e0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706385967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8485967b1bb03000000e84e7c0f0089c7578b0424e8ff7c0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208645567b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c7076c5967b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7006c5967b1ff12b801000000e8737f0f0089c757b801000000e8d67f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706805967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8945967b1bb03000000e89f7a0f0089c7578b0424e8507b0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208e45667b1897a04c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707a05967b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a05967b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057b8506566b1e85c9f010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708b85967b1897704c7070f00000057b801000000e84292010089c757b801000000e8718b0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604b45e67b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938e867730f0089c6f7c60100000074065fe9d8000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e82b91010089c7578b7c240483ff017d0e8d642438b8a84566b18b5d04ff23b8010000008b5c2404e8a38a0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8506566b1e8649d010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708c85e67b1897704c7070f00000057b801000000e84a90010089c757b801000000e805910f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604c86067b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938e86f710f0089c6f7c60100000074065fe9d8000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8338f010089c7578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e837900f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742410893757b801000000bbdc6067b1e88d8e0f0089c7578b442404e8a16e0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642450b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8628c010089c7578b7c240483ff017d0e8d642458b8a84566b18b5d04ff23b8010000008b5c2404e8ea930f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742414893757b801000000bb486167b1e85d8d0f0089c7578b442404e8716d0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642454b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8328b010089c7578b7c240483ff017d0e8d64245cb8a84566b18b5d04ff23b8010000008b5c2404e85a930f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b75008d76f03b75087303ff5528897500c746fc030000008b7c2418897e08c74604e45667b1c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b75008d76f03b75087303ff5528897500c746fc030000008b7c2418897e088b7c241c897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c241c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742420893757b805000000bb506167b1e8398b0f0089c7578b442404e84d6b0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642460b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e80e89010089c7578b7c240483ff017d0e8d642468b8a84566b18b5d04ff23b8010000008b5c2404e8d6910f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742424893757b805000000bb586167b1e8c3890f0089c7578b442404e8d7690f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642464b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e89887010089c7578b7c240483ff017d0e8d64246cb8a84566b18b5d04ff23b8010000008b5c2404e800910f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24288938bb03000000e8fe6c0f0089c7578b0424e8af6d0f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542420895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74242489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2428893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74242c893757b807000000bb606167b1e825870f0089c7578b442404e839670f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d64246cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8fa84010089c7578b7c240483ff017d0e8d642474b8a84566b18b5d04ff23b8010000008b5c2404e8028f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2424893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74242889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c242c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742430893757b807000000bb686167b1e88c850f0089c7578b442404e8a0650f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642470b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e86183010089c7578b7c240483ff017d0e8d642478b8a84566b18b5d04ff23b8010000008b5c2404e8098e0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c242c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74243089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24348938bb03000000e8a4680f0089c7578b0424e855690f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542428895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c242c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74243089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2434893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742438893757b809000000bb706167b1e8a8820f0089c7578b442404e8bc620f0089c6f7c60100000074095f83c404e9de000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642478b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e87d80010089c7578b7c240483ff017d118da42480000000b8a84566b18b5d04ff23b8010000008b5c2404e8c28b0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74243089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2434893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74243889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c243c8938bb03000000e89a650f0089c7578b0424e84b660f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b54242c895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b75008d76f43b75087303ff5528897500c746fc020000008b7c242c897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54242489570c897708c7470405000000c707786167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700786167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2428897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54242489570c897708c7470405000000c7078c6167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7008c6167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2448897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54242089570c897708c7470405000000c707b45e67b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b45e67b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2444897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54242089570c897708c7470405000000c707c86067b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700c86067b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c241c897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241489570c897708c7470405000000c707a06167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a06167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2418897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241489570c897708c7470405000000c707b46167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b46167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2410897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707c86167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700c86167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707dc6167b18b7424548b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700dc6167b1ff128b75008d76f43b75087303ff5528897500c746fc020000008b7c2404897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a8d64244889570c897708c7470405000000c707f06167b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f06167b1ff1268046267b1b805000000bb05000000e83f850f0089c75768646267b1f60424010f85d80000008b3c248b378b3c24ff77048b3e8b56048b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702030000008b75008d76e03b75087305ff5528cd84897500c746fc07000000c7461801000000c7461401000000c74610603766b1c7460c6c6367b1895608c7460401000000893e8b5424148b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91effffff8d6424048b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cc46066b1c74608f46066b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8e85d0f0089c7578b0424e8995e0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470405000000c707846367b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707946367b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b46367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d46367b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f46367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707186467b157f60424010f85010100008b3c248b378b3c24ff77048b3e8b56048b76088b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000c741086c6367b1897104c701050000008b75008d76f03b75087305ff5528cd86897500c746fc03000000c7460801000000895604c7060d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702030000008b75008d76e03b75087305ff5528cd86897500c746fc07000000c7461801000000c7461401000000c74610603766b1894e0c895608c7460401000000893e8b5424148b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce9f5feffff8d642404b815000000e8a093ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610346467b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c7073c6467b18b7424288b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7003c6467b1ff12ba3c4966b18b0424e88f82010089c78d64240457b84c6467b1bb03000000e8b15a0f0089c7578b0424e8625b0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708783f66b1897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707183766b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700183766b1bb03000000e8b6590f0089c7578b0424e8675a0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b84c6467b1bb03000000e81e590f0089c7578b0424e8cf590f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708183766b1897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707183766b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700183766b1bb03000000e823580f0089c7578b0424e8d4580f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708183766b1897704c7070500000057b84c6467b1bb03000000e88b570f0089c7578b0424e83c580f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7070700000057b84c6467b1bb03000000e81d570f0089c7578b0424e8ce570f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707050000008b55008d52f03b55087305ff5528cd80895500c742fc03000000897a08c74204545967b1c702050000008b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c240c897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707646467b1578b7c240c8b570cb8786467b1ff12b8906467b1e8b8830f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c7073c6567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7003c6567b1ff12b8144167b1e817830f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707486567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700486567b1ff12b8e00e67b1e876820f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707586567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700586567b1ff12b8d03366b1e8d5810f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707686567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700686567b1ff12b8943966b1e834810f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c7077c6567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7007c6567b1ff12b8e44067b1e893800f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707886567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700886567b1ff12b88c4167b1e8f27f0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707986567b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700986567b1ff128b7c240c8b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d642410897804c700646467b1ff12b815000000e88089ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610a86567b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707b06567b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b06567b1ff12ba3c4966b18b0424e86f78010089c78d64240457b8c06567b1bb03000000e891500f0089c7578b0424e842510f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8c06567b1bb03000000e8f94f0f0089c7578b0424e8aa500f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708783f66b1897704c70705000000578b7c24088b570cb8d86567b1ff12b8f06567b1e8504c0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707f80e66b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff12b8006667b1e8af4b0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707807566b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff12b8106667b1e80e4b0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707100f66b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff12b8206667b1e86d4a0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707306667b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff12b8b83966b1e8cc490f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c7072c0e66b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c0e66b1ff12b83c6667b1e82c490f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707440e66b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700440e66b1ff12b8906467b1e88c480f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707200e66b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700200e66b1ff12b8e00e67b1e8ec470f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707486667b18b7424088b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700486667b1ff12b8546667b1e84c470f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a8d64240489570c897708c7470405000000c707606667b15e8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700606667b1ff12b815000000e8e181ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c746106c6667b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707a46e66b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a46e66b1ff12ba3c4966b18b0424e8d070010089c78d642404578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bb03000000e8af480f0089c7578b0424e860490f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bb03000000e8d4470f0089c7578b0424e885480f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542414895708897704c70705000000578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c24188938bb03000000e81c470f0089c7578b0424e8cd470f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542418895708897704c70705000000578b7c240c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b74242089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700885267b1ff12b8746667b1e82e430f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707f80e66b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff12b8806667b1e88d420f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707807566b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff12b82c4167b1e8ec410f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707100f66b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff12b88c6667b1e84b410f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240889570c897708c7470405000000c707306667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff12b8b04066b1e8aa400f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c7072c0e66b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c0e66b1ff12b8cc5766b1e809400f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707440e66b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700440e66b1ff12b8106566b1e8683f0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707200e66b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700200e66b1ff12b8c45166b1e8c73e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707986667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700986667b1ff12b8245366b1e8263e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707a46667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a46667b1ff12b8444167b1e8853d0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707b06667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b06667b1ff12b838f366b1e8e43c0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707bc6667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700bc6667b1ff12b8c86667b1e8433c0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707d46667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d46667b1ff12b824f366b1e8a23b0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707e06667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700e06667b1ff12b8ec6667b1e8023b0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707f86667b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f86667b1ff12b85c4167b1e8623a0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a8d64240889570c897708c7470405000000c707046767b15e8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700046767b1ff12b815000000e8f774ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610106767b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c7072c6f66b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c6f66b1ff12ba3c4966b18b0424e8e663010089c78d64240457b8505767b1bb03000000e8083c0f0089c7578b0424e8b93c0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8505767b1bb03000000e8703b0f0089c7578b0424e8213c0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708645567b1897704c70705000000578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b742418897708c74704645567b1c7070500000057b81b000000e8a473010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707186767b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b74241c897708c74704645567b1c7070500000057b819000000e80473010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c7072c6767b1578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708645567b18b742420897704c7070500000057b80d000000e86472010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707406767b1578b7c24148b570cb8505367b1ff12b8586767b1e8e7350f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241089570c897708c7470405000000c707f80e66b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff12b8686767b1e846350f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241089570c897708c7470405000000c707807566b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff12b8786767b1e8a5340f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241089570c897708c7470405000000c707100f66b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff12b8886767b1e804340f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241089570c897708c7470405000000c707306667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff12b8986767b1e863330f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c7072c0e66b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c0e66b1ff12b8a46767b1e8c2320f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707440e66b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700440e66b1ff12b8b06767b1e821320f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707200e66b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700200e66b1ff12b8bc6767b1e880310f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707986667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700986667b1ff12b8c86767b1e8df300f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707a46667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a46667b1ff12b8d46767b1e83e300f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707b06667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b06667b1ff12b8e06767b1e89d2f0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707bc6667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700bc6667b1ff12b8ec6767b1e8fc2e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707d46667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d46667b1ff12b8f86767b1e85b2e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707e06667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700e06667b1ff12b8046867b1e8ba2d0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707f86667b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f86667b1ff12b8106867b1e8192d0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240c89570c897708c7470405000000c707046767b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700046767b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c700186767b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c7002c6767b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d642414897804c700406767b1ff12b815000000e81b67ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c746101c6867b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707246867b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700246867b1ff12ba3c4966b18b0424e80a56010089c78d642404578b3c248b570cb87c4b66b1ff12b8306867b1bb03000000e81f2e0f0089c7578b0424e8d02e0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8586767b1e8842a0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707f80e66b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff12b8306867b1bb03000000e8ea2c0f0089c7578b0424e89b2d0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8686767b1e84f290f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707807566b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff12b8306867b1bb03000000e8b52b0f0089c7578b0424e8662c0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8786767b1e81a280f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707100f66b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff12b8306867b1bb03000000e8802a0f0089c7578b0424e8312b0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8886767b1e8e5260f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707306667b15e8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff12b815000000e87e61ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610606867b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707686867b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700686867b1ff12ba3c4966b18b0424e86d50010089c78d6424048b570cb8b44c66b1ff12b815000000e8b760ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610786867b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707206f66b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700206f66b1ff12ba3c4966b18b0424e8a64f010089c78d64240457b8506566b1e8554e010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708806867b1897704c7070f00000057b801000000e83b41010089c757b801000000e8ba610f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604b06a67b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8506566b1e8934d010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708cc6a67b1897704c7070f00000057b801000000e87940010089c757b801000000e8f8670f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604706b67b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b55008d52f43b55087305ff5528cd80895500c742fc020000005e897204c702030000008b75008d76e03b75087305ff5528cd84897500c746fc07000000c7461801000000c7461401000000c74610603766b1c7460c906b67b1895608c7460405000000c706c86b67b1568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470ce06b67b1897708c7470405000000c707006c67b157b8186c67b1bb03000000e870250f0089c7578b0424e821260f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c7070500000057b8186c67b1bb03000000e8d8240f0089c7578b0424e889250f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708b06b67b1897704c70705000000578b7c24108b570cb8344f66b1ff128b7c24108b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c240c897804c700c86b67b1ff128b7c24108b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c700006c67b1ff12b8306c67b1e8cf200f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707f80e66b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff12b83c6c67b1e82e200f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707807566b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff12b8804167b1e88d1f0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707100f66b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff12b8486c67b1e8ec1e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707306667b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff12b8d46866b1e84b1e0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54240489570c897708c7470405000000c707546c67b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700546c67b1ff12b8109066b1e8aa1d0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c7072c0e66b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c0e66b1ff12b8606c67b1e80a1d0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707440e66b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700440e66b1ff12b8b00e67b1e86a1c0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b142489570c897708c7470405000000c707200e66b18b7424108b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700200e66b1ff12b8740e67b1e8ca1b0f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a8d64240c89570c897708c7470405000000c7075c0e66b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7005c0e66b1ff12b817000000e82557010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c6c6c67b1897708c7470405000000c707101266b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700101266b1ff12b815000000e88556010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c6c6c67b1897708c7470405000000c7077c6c67b18b34248b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7007c6c67b1ff12b809000000e8e555010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c886c67b1897708c7470405000000c707986c67b15e8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700986c67b1ff12b815000000e87f54ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610ac6c67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707b46c67b18b7424248b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b46c67b1ff12ba3c4966b18b0424e86e43010089c78d64240457b815000000e8c153ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610c86c67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707a46367b18b7424288b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a46367b1ff12ba3c4966b18b0424e8b042010089c78d64240457bfd06c67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604d86c67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e46c67b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000bac86966b16a01bb01000000e8216d010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba030000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608206d67b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707306d67b1578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710010000008b342489770cc74708306d67b1c7470401000000c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c74604e45667b1c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708406d67b1c7470405000000c707946d67b157b803000000e87d51010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470ca06d67b1897708c7470405000000c707c86d67b157b801000000e80751010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470ca06d67b1897708c7470405000000c707dc6d67b157b805000000e89150010089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470cf06d67b1897708c7470405000000c707006e67b1578b7c24148b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b74241089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306d67b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c240c897804c700946d67b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c700c86d67b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c700dc6d67b1ff128b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d642414897804c700006e67b1ff12b815000000e83f4effff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610146e67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c7071c6e67b18b7424288b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7001c6e67b1ff12ba3c4966b18b0424e82e3d010089c78d64240457bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c24188938bb03000000e8dc140f0089c7578b0424e88d150f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b1424895708897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757b801000000e840150f0089c757b801000000e8a3150f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706346e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8360f0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642444b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8f72c010089c7578b7c240483ff017d0e8d64244cb8a84566b18b5d04ff23b8010000008b5c2404e86b550f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707446e67b1578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c241c8938bb03000000e81a120f0089c7578b0424e8cb120f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708645567b1897704c7070500000057b801000000e8a3120f0089c757b801000000e806130f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706506e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707606e67b1578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c24208938bb03000000e875100f0089c7578b0424e826110f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542408895708897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240c893757b801000000e8d8100f0089c757b801000000e83b110f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706706e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8ce0a0f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d64244cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e88f28010089c7578b7c240483ff017d0e8d642454b8a84566b18b5d04ff23b8010000008b5c2404e867510f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707806e67b1578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c24248938bb03000000e8b20d0f0089c7578b0424e8630e0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542424895708897704c7070500000057b801000000e83b0e0f0089c757b801000000e89e0e0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706906e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707a06e67b1578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c24288938bb03000000e80d0c0f0089c7578b0424e8be0c0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708b06b67b1897704c7070500000057b801000000e8960c0f0089c757b801000000e8f90c0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706b06e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707c06e67b1578b45008d40f43b45087303ff5528894500c740fc02000000c740045c5767b18b7c242c8938bb03000000e8680a0f0089c7578b0424e8190b0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708b06b67b1897704c7070500000057b801000000e8f10a0f0089c757b801000000e8540b0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604185567b1c706d06e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707e06e67b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2418893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24308938bb03000000e87d080f0089c7578b0424e82e090f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c893757b801000000e80c0c0f0089c757b801000000e86f0c0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706f46e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8d6020f0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d64245cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e89720010089c7578b7c240483ff017d0e8d642464b8a84566b18b5d04ff23b8010000008b5c2404e8d3490f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707086f67b1578b45008d40f43b45087303ff5528894500c740fc02000000c74004505767b18b7c24348938bb03000000e8ba050f0089c7578b0424e86b060f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c7070500000057b801000000e86f090f0089c757b801000000e8d2090f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706146f67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707286f67b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24388938bb03000000e8cf030f0089c7578b0424e880040f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742424893757b801000000e85e070f0089c757b801000000e8c1070f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706386f67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e828fe0e0089c6f7c60100000074095f83c404e9db000000bf01000000f7c60100000075288b4e0489fa83c202710e8d642464b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8e91b010089c7578b7c240483ff017d0e8d64246cb8a84566b18b5d04ff23b8010000008b5c2404e889450f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c7074c6f67b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c243c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645567b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c243c8938bb03000000e8c6000f0089c7578b0424e877010f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c7070500000057b801000000e87b040f0089c757b801000000e8de040f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c7065c6f67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707706f67b1578b45008d40f43b45087303ff5528894500c740fc02000000c74004806f67b18b7c24408938bb03000000e821ff0e0089c7578b0424e8d2ff0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c7070500000057b801000000e8d6020f0089c757b801000000e839030f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706986f67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707ac6f67b1578b45008d40f43b45087303ff5528894500c740fc02000000c74004806f67b18b7c24448938bb03000000e87cfd0e0089c7578b0424e82dfe0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c7070500000057b801000000e831010f0089c757b801000000e894010f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604a45667b1c706bc6f67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707d06f67b1578b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c242c897804c700446e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2428897804c700606e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2424897804c700806e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2420897804c700a06e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c241c897804c700c06e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2418897804c700e06e67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2414897804c700086f67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2410897804c700286f67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c240c897804c7004c6f67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c700706f67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c700ac6f67b1ff128b7c24348b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d64242c897804c700d06f67b1ff12bac86966b16a01b8e46f67b1bb01000000e8bb4c010089c2b801000000ff1289c757bac86966b16a01b8647167b1bb01000000e8994c010089c2b801000000ff1289c757bac86966b16a01b8007367b1bb01000000e8774c010089c2b801000000ff1289c7578b7c24148b5708b82c7467b1ff128b7c24148b5708b8a07467b1ff128b7c24148b5708b8f87467b1ff128b7c24148b5708b8507567b1ff128b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b74243c897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c504766b1897708c7470405000000c707987567b18b7424148b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700987567b1ff12bab87567b1ff742408b88c7467b1bbdc4c66b1e8f26f0f00bab87567b1ff742404b8cc7467b1bb903f66b1e8da6f0f00bab87567b1ff742404b8cc7467b1bb303766b1e8c26f0f00bab87567b1ff3424b8247567b1bb685367b1e8ab6f0f008d64240cb8187667b1e8811e010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708907667b1897704c7070f00000057b8b07667b1e8431e010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708d07667b1897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460cc43966b1897e085f897e04c7060b0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708783966b1c74704dc7667b1c7070b00000057b8f07667b1e8b2700f0089c757b801000000e815710f0089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704387767b15e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883f801750e8d642438b84c7767b18b5d04ff238d642408e8ab700f0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706107867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707347867b157b8587867b1e8321c010089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708147767b1897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460cc43966b1897e08c74604647867b1c7060b0000008b3c2483ff0175088d64240489f7eb278b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7071f00000057b8506566b1e8986e0f0089c757b801000000e8fb6f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461807000000c7461403000000897e105f897e0cc7460801000000c74604787867b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b801000000e82c0e010089c757b801000000e8db6f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c746048c7867b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057bfa07867b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d00000057b801000000e85c0d010089c757b801000000e8bf6f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604247967b1c706506866b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b801000000e8d50c010089c757b801000000e89c6f0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604387967b1c706783966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000bac86966b16a01bb01000000e8fb44010089c2b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70603000000bacc5366b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917ba1f4e00008d0cd5f9ffffff8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917b9030000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a8b4d008d49ec3b4d087305ff5528cdc4894d00c741fc04000000c7410c01000000c7410803000000895104c701030000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000c742084c7967b1894a0489328b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608603766b1897e04c7065c7967b18b54241c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7005c7967b1ff12b801000000e8eb690f0089c757b801000000e82e6d0f0089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471807000000c74714030000008977105e89770cc7470801000000c747046c7967b1c707847967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70619000000bf3c7a67b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c7470801000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204d86c67b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000bac86966b16a01bb01000000e81f42010089c2b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70603000000ba030000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897a04c702030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c74708447a67b189570489378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608603766b1c7460401000000c706547a67b18b3c248b570c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700547a67b1ff128b54241cb8687a67b1ff128b3c248b570cb8f07b67b1ff128b3c248b570cb8687d67b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca098b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e827ed0e0089c7578b0424e8d8ed0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608504766b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc747088c6667b1c7470405000000c707040f66b18b5424208b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700040f66b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca098b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e88eeb0e0089c7578b0424e83fec0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608504766b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708d07e67b1c7470405000000c707dc7e67b18b5424208b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700dc7e67b1ff12b815000000e8b922ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610e87e67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707f07e67b18b7424288b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f07e67b1ff12ba3c4966b18b0424e8a811010089c78d642404578b3c24ff7708b815000000e8f521ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610007f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707087f67b18b7424088b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700087f67b1ff12ba3c4966b18b0424e8e410010089c78d64240457b815000000e83721ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c746101c7f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707247f67b18b7424048b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700247f67b1ff12ba3c4966b18b0424e82610010089c78d64240457b815000000e87920ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610347f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c7073c7f67b18b7424088b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7003c7f67b1ff12ba3c4966b18b0424e8680f010089c78d64240457b815000000e8bb1fffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610507f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707587f67b18b74240c8b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700587f67b1ff12ba3c4966b18b0424e8aa0e010089c78d64240457b815000000e8fd1effff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610687f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707707f67b18b7424108b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700707f67b1ff12ba3c4966b18b0424e8ec0d010089c78d64240457b815000000e83f1effff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610847f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c7078c7f67b18b7424148b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7008c7f67b1ff12ba3c4966b18b0424e82e0d010089c78d64240457b815000000e8811dffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610a07f67b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707a87f67b18b7424188b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a87f67b1ff12ba3c4966b18b0424e8700c010089c78d64240457bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e88a050100eb00bac86966b16a01bb01000000e8a736010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608048067b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c7073c8067b1578b7c24188b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7003c8067b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc747083c8067b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e822030100eb00bac86966b16a01bb01000000e83f34010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c746084c8067b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c7078c8067b1578b7c241c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7008c8067b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc747088c8067b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8ba000100eb00bac86966b16a01bb01000000e8d731010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608a48067b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707e48067b1578b7c241c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700e48067b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708e48067b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e852fe0000eb00bac86966b16a01bb01000000e86f2f010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608f88067b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707308167b1578b7c241c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700308167b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708308167b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8eafb0000eb00bac86966b16a01bb01000000e8072d010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608408167b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707808167b1578b7c24188b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700808167b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708808167b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e882f90000eb00bac86966b16a01bb01000000e89f2a010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608948167b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707d48167b1578b7c24208b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d48167b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708d48167b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e81af70000eb00bac86966b16a01bb01000000e83728010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608e88167b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707248267b1578b7c241c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700248267b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708248267b1c7470401000000c7070b000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c707388267b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707448267b18b75008d76f43b75087305ff5528cd80897500c746fc020000008b542410895604c706508267b18b55008d52f43b55087305ff5528cdc0895500c742fc020000008b4c2408894a04c7025c8267b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008b5c240c895904c7016c8267b18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442404894304c703788267b18b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937576a01f64424040175418b7c24048b3f8b742404ff76048b078b5f04e87a520f008b7c240483ff01750489c2eb0b8b5c2404e8a0590f0089c25e891424897424043b650c7303ff552cebb858e8ea590f0089c7578b0424e8e35b0f0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470401000000c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086c8367b1897e04c706d04166b18b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707a08367b1578b7c243c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a08367b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e84ad00e0089c7578b0424e8fbd00e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b48367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e81bcf0e0089c7578b0424e8cccf0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c48367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8eccd0e0089c7578b0424e89dce0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d48367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8bdcc0e0089c7578b0424e86ecd0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e48367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e88ecb0e0089c7578b0424e83fcc0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f88367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e85fca0e0089c7578b0424e810cb0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060c8467b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938e837530f008b7d008d7fe83b7d087305ff5528cd01897d00c747fc05000000c74710603766b15e89770cc74708a08367b1c7470401000000c7070b00000057e894500f0089c7578b0424e88d520f0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70707000000578b7c24488b570cb81c8467b1ff12b815000000e83100ffff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610d08567b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707d88567b18b74244c8b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d88567b1ff12ba3c4966b18b0424e820ef000089c78d64240457bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e83ae80000eb00bac86966b16a01bb01000000e85719010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608f48567b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707388667b1578b7c24048b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700388667b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708388667b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8d2e50000eb00bac86966b16a01bb01000000e8ef16010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608508667b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707888667b1578b7c24088b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700888667b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708888667b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e86ae30000eb00bac86966b16a01bb01000000e88714010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608988667b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707d48667b1578b7c240c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d48667b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708d48667b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e802e10000eb00bac86966b16a01bb01000000e81f12010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608e88667b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707248767b1578b7c24108b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700248767b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708248767b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e89ade0000eb00bac86966b16a01bb01000000e8b70f010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608388767b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707788767b1578b7c24148b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700788767b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708788767b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e832dc0000eb00bac86966b16a01bb01000000e84f0d010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608908767b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707cc8767b1578b7c24188b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700cc8767b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708cc8767b1c7470401000000c7070b00000057bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8cad90000eb00bac86966b16a01bb01000000e8e70a010089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608dc8767b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c7071c8867b1578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b18b342489770cc747081c8867b1c7470401000000c7070b000000578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2410893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707308867b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e854b60e0089c7578b0424e805b70e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707488867b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e85db50e0089c7578b0424e80eb60e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707608867b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2418893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707308867b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e866b40e0089c7578b0424e817b50e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707748867b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2428893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e86fb30e0089c7578b0424e820b40e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078c8867b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e89bb20e0089c7578b0424e84cb30e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a08867b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242c89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c242c8938bb03000000e8c7b10e0089c7578b0424e878b20e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b48867b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2434893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048bb424a000000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706504766b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74242889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e887b00e0089c7578b0424e838b10e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c88867b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2438893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74242c89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e890af0e0089c7578b0424e841b00e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc8867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757bf010000008b3424f7c601000000752b8b4e0489fa83c20271118da424a4000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd576a016a016a01548b442414bb01000000e8f6380f008d6424085bff742408ff7424048b44240ce8845b0f0089c78d64240857ff3424f604240175438b3c248b378b3c24ff77048b7c242c8b57088b3e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebb78d6424048b7c24248b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000005e8977048b74240489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7001c8867b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000005f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b54240c89168b55008d52e83b55087305ff5528cdc0895500c742fc05000000c74210603766b1c7420cb45666b1c74208d45666b1897204c7020b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746048c8d67b189168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e8f4ab0e0089c7578b0424e8a5ac0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470401000000c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608988d67b1897e04c706d04166b18b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707d48d67b1578b7c241c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d48d67b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708d48d67b1c7470401000000c7070b000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2418893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8eea90e0089c7578b0424e89faa0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542444895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704e88d67b1c707dc9167b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c241c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e87aa80e0089c7578b0424e82ba90e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542448895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2404897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704f09167b1c7075c9267b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048bb4248c00000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706504766b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8bca60e0089c7578b0424e86da70e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54244c895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2408897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704749267b1c707e89267b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24188938bb03000000e88da50e0089c7578b0424e83ea60e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542450895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c240c897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704009367b1c707789367b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2428893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e818a40e0089c7578b0424e8c9a40e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542440895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2410897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704949367b1c707689567b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424508977088b74241c897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2414897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704809567b1c707d89567b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b74245c897708c74704f09567b1c707109667b157b8249667b1bb03000000e87ea20e0089c7578b0424e82fa30e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608e45667b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704309667b1c7079c9667b157b8249667b1bb03000000e837a10e0089c7578b0424e8e8a10e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608e45667b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704b09667b1c707dc9667b157b8249667b1bb03000000e8f09f0e0089c7578b0424e8a1a00e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708f09667b1897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608e45667b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704009767b1c707649767b157b8809767b1bb03000000e8a99e0e0089c7578b0424e85a9f0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608e45667b1897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cc46066b1c74608f46066b1897e04c7060b0000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c74604bc9767b1c706f09767b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642414893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424108b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424108b7c24488b570cb8089867b1ff1268309867b1f604240175438b3c248b378b3c24ff77048b3e8b5424508b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebb78d6424048b7c24488b570cb854a067b1ff12687ca067b1f604240175438b3c248b378b3c24ff77048b3e8b5424508b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebb78d642404bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca038b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708d0b067b1c7470405000000c707dcb067b18b5424448b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700dcb067b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca038b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608545967b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708ecb067b1c7470405000000c707f8b067b18b5424448b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f8b067b1ff12bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca038b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004cc6567b18938bb03000000e808980e0089c7578b0424e8b9980e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708806667b1c7470405000000c7070cb167b18b5424448b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7000cb167b1ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d14f5f9ffffff8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060d000000bfcc5366b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893abf1f4e00008d0cfdf9ffffff8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d0000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c742086ca867b1897204c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704783f66b1c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608e45667b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc747082c4167b1c7470405000000c70728b167b18b5424448b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70028b167b1ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d14f5f9ffffff8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060d000000bacc5366b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917ba1f4e00008d0cd5f9ffffff8b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897a04c7020d0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460840b167b1897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b189770cc74708646966b1c7470405000000c70750b167b18b7424588b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70050b167b1ff128b7c24588b5708b864b167b1ff128b542444b818b267b1ff12b815000000e8f9cbfeff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c746106cb267b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c70774b267b18b7424508b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70074b267b1ff12ba3c4966b18b0424e8e8ba000089c78d64240457bf88b267b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d00000057b801000000e86fac000089c757b801000000e8da830f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c7460498b267b1c7063c5c66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b801000000e8e8ab000089c757b801000000e8b7830f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc7460801000000c74604acb267b1c706783966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8b4b20000eb00bac86966b16a01bb01000000e8d1e3000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d0cd5f9ffffff8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a8b4d008d49ec3b4d087305ff5528cdc4894d00c741fc04000000c7410c01000000c7410803000000895104c701030000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000c74208bcb267b1894a04893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570cc74708603766b1897704c707ccb267b1578b7c24048b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700ccb267b1ff12bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e819b00000eb00bac86966b16a01bb01000000e836e1000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608d8b267b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707e8b267b1578b7c24088b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700e8b267b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708e8b267b1c7470401000000c7070b00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b18b54240889560cc74608ccb267b1897e04c7060b0000008b55008d52f03b55087305ff5528cd40895500c742fc030000008b7c2404897a088b3c24897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e832870e0089c6f7c601000000740abffcb267b1e9e1000000bf01000000f7c601000000752b8b4e0489fa83c20271118da42490000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd57b801000000e8efa4000089c7578b7c240483ff017d118da42498000000b8a84566b18b5d04ff23b8010000008b5c2404e8287d0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b1c706fcb267b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c70738b367b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70038b367b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b18b54240889560cc74608ccb267b1897e04c7060b0000008b55008d52f03b55087305ff5528cd40895500c742fc030000008b3c24897a088b7c2404897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e8d1840e0089c6f7c601000000740abf4cb367b1e9e1000000bf01000000f7c601000000752b8b4e0489fa83c20271118da42490000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd57b801000000e88ea2000089c7578b7c240483ff017d118da42498000000b8a84566b18b5d04ff23b8010000008b5c2404e84f7b0f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b1c7064cb367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c7078cb367b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7008cb367b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b18b54240889560cc74608ccb267b1897e04c7060b0000008b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208504766b18b7c2404897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e86f820e0089c6f7c601000000740abfa0b367b1e9e1000000bf01000000f7c601000000752b8b4e0489fa83c20271118da42490000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd57b801000000e82ca0000089c7578b7c240483ff017d118da42498000000b8a84566b18b5d04ff23b8010000008b5c2404e875790f0089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f8d642404897e0cc7460801000000c74604184766b1c706a0b367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b15a89570c897708c7470405000000c707d4b367b18b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d4b367b1ff12bfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7002900000083c404f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e836a60000eb00bac86966b16a01bb01000000e853d7000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c74608e4b367b1895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c70710b467b1578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b18b342489770cc7470810b467b1c7470401000000c7070b000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700308867b1bb03000000e889820e0089c7578b0424e83a830e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c7460401000000c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470824b467b1897704c707d04166b18b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608603766b1c7460401000000c7064cb467b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b189770cc747084cb467b1c7470401000000c7070b000000578b7c24608b570c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7004cb467b1ff128b75008d76f03b75087303ff5528897500c746fc030000008b3c24897e08c74604e45667b1c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70760b467b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c2404897e08c74604e45667b1c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774b467b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c2408897e08c74604e45667b1c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb467b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c240c897e08c74604e45667b1c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7079cb467b157b8b8b467b1bb03000000e8d07f0e0089c7578b0424e881800e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e8b467b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542448895704c707fcb467b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070cb567b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70230b567b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064cb567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70778b567b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70698b567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b4b567b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d4b567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071cb667b157bf010000008b3424f7c601000000752b8b4e0489fa83c20271118da42498000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd576a016a016a01548b442414bb01000000e838080f008d6424085bff74240cff7424048b44240ce86a700f0089c78d64240857ff3424f604240175438b3c248b378b3c24ff77048b7c246c8b57088b3e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebb78d6424048b7c24648b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000005e8977048b74240889378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70010b467b1ff128b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c240c893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073cb667b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241c8938bb03000000e86f7b0e0089c7578b0424e8207c0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70707000000578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b74241c897208c74204e45667b1c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52e83b55087305ff5528cdc0895500c742fc05000000c74210603766b1c7420cc46066b1c74208f46066b1897204c7020b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e8de790e0089c7578b0424e88f7a0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70705000000578b75008d76f43b75087303ff5528897500c746fc020000008bbc2494000000897e04c706541937b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b1c7470c40b167b1897708c7470405000000c707b09a69b18b7424688b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700b09a69b1ff128b75008d76f43b75087303ff5528897500c746fc020000008bbc2494000000897e04c706485448b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b55008d52f43b55087305ff5528cd80895500c742fc02000000c74204010000008b74241089328b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1895604c7060b0000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420840b167b1897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c7471401000000c74710603766b189570c897708c7470405000000c707dc9a69b18b7424688b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700dc9a69b1ff128b5424608b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b15e89770cc74708f09a69b1c7470405000000c707389b69b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700389b69b1ff126a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a018b8424d800000089e3e8c7a62000ff3424ff742408ff742410ff742418ff742420ff742428ff742430ff742438ff742440ff742448ff742450ff742458ff742460ff7424688b7c24708b7424748b5424788b4c247c8b5d008d5bb43b5d087305ff5528cdc6895d00c743fc12000000538b1c24894b448b0c248951408b142489723c8b3424897e388b34248b7c2404897e348b34248b7c2408897e308b7c240c8b3424897e2c8b7c24108b3424897e288b7c24148b3424897e248b7c24188b3424897e208b7c241c8b3424897e1c8b7c24208b3424897e188b7c24248b3424897e148b7c24288b3424897e108b7c242c8b3424897e0c8b7c24308b3424897e088b7c24348b3424897e048b7c24388b3424893e5e8da424800000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b54241c89570c897708c7470405000000c7079c9b69b18b7424648b56088b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7009c9b69b1ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d14f5f9ffffff8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060d00000056c70738f366b18b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248938bb03000000e8ed730e0089c7578b0424e89e740e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b1424895708897704c70705000000578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424048977088b742404897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bb03000000e8e6720e0089c7578b0424e897730e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708504766b1897704c70705000000578b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b74240889770cc74708b4df67b1c7470405000000c7072c0e66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7002c0e66b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b74240889770cc74708b4df67b1c7470405000000c707440e66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700440e66b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b74240889770cc74708b4df67b1c7470405000000c707200e66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700200e66b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b74240489770cc74708b4df67b1c7470405000000c707101266b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700101266b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b74240489770cc74708b4df67b1c7470405000000c7077c6c67b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7007c6c67b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b342489770cc74708b4df67b1c7470405000000c707306667b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700306667b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b342489770cc74708b4df67b1c7470405000000c707807566b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700807566b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b342489770cc74708b4df67b1c7470405000000c707100f66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700100f66b1ff128b9424940000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b15e8d64240489770cc74708b4df67b1c7470405000000c707f80e66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f80e66b1ff128b94248c0000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b342489770cc74708b4df67b1c7470405000000c707986667b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700986667b1ff128b94248c0000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b18b342489770cc74708b4df67b1c7470405000000c707a46667b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700a46667b1ff128b94248c0000008b7d008d7fe03b7d087305ff5528cd04897d00c747fc07000000c7471801000000c7471401000000c74710603766b15e8d64240489770cc74708b4df67b1c7470405000000c7075c0e66b18b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c7005c0e66b1ff12b8348467b1e8fef20e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704308867b1893757b8b09b69b1e8cef20e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704504766b1893757b8bc9b69b1e89ef20e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747046ca867b1893757b8209867b1e86ef20e0089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604cc9b69b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938e8a9f30e0089c7578b0424e8a2f50e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c70705000000578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b742404897708c74704e45667b1c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b00000057b8089c69b1e8a6f00e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b1424895704893757b8189c69b1e877f00e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542404895704893757b8249c69b1e847f00e0089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938e89ef10e0089c7578b0424e897f30e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b942480000000895708c7470477040000c707349c69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2418897a0cc74208ccb267b1c74204549c69b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704709c69b1c707c09c69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c241c897a0cc74208ccb267b1c74204549c69b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704d89c69b1c7070c9d69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2420897a0cc74208ccb267b1c7420410b667b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704209d69b1c707549d69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2424897a0cc74208ccb267b1c74204549c69b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704689d69b1c7079c9d69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2428897a0cc74208ccb267b1c74204cc6567b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704b89d69b1c707ec9d69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c242c897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704049e69b1c707389e69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2430897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704509e69b1c707849e69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2434897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704989e69b1c707cc9e69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2438897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704e09e69b1c707149f69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c243c897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704249f69b1c707589f69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2440897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704749f69b1c707a89f69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2444897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704c49f69b1c707f89f69b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2448897a0cc74208ccb267b1c74204b09767b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470414a069b1c70748a069b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c244c897a0cc74208ccb267b1c74204549c69b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470458a069b1c7078ca069b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2450897a0cc74208ccb267b1c74204cc6567b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704a4a069b1c707d8a069b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2454897a0cc74208ccb267b1c74204cc6567b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704f0a069b1c70724a169b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2458897a0cc74208ccb267b1c74204cc6567b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c747043ca169b1c70770a169b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c245c897a0cc74208ccb267b1c742048ca169b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704a8a169b1c707dca169b1578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210603766b18b7c2460897a0cc74208ccb267b1c742048ca169b1c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704f4a169b1c70728a269b1578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008b54245089178b55008d52e83b55087305ff5528cdc0895500c742fc05000000c74210603766b18b4c2464894a0cc74208ccb267b1897a04c7020b0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470444a269b1c70778a269b1578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b18b54246889560cc74608ccb267b1897e04c7060b0000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470494a269b1c707c8a269b1578b75008d76e83b75087303ff5528897500c746fc05000000c74610603766b18b7c246c897e0cc74608ccb267b1c74604b09767b1c7060b0000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704dca269b1c70710a369b18b55008d52e83b55087305ff5528cd80895500c742fc05000000c74210603766b18b74246c89720cc74208ccb267b1c74204b09767b1c7020b0000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460430a369b1c70664a369b18b4d008d49e83b4d087305ff5528cdc0894d00c741fc05000000c74110603766b18b54246c89510cc74108ccb267b1c74104b09767b1c7010b0000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08c7420488a369b1c702bca369b18b5d008d5be83b5d087305ff5528cdc4895d00c743fc05000000c74310603766b18b4c246c894b0cc74308ccb267b1c74304b09767b1c7030b0000008b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895908c74104e0a369b1c70114a469b18b45008d40e83b45087305ff5528cdc6894500c740fc05000000c74010603766b18b5c246c89580cc74008ccb267b1c74004cc6567b1c7000b0000008b5d008d5bf03b5d087305ff5528cdc7895d00c743fc03000000894308c7430434a469b1c70368a469b18b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70788a469b157f60424010f85d70000008b3c248b378b3c24ff77048b3e8b56048b4e088b75008d76f03b75087305ff5528cd86897500c746fc03000000c7460801000000895604c7060d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702030000008b75008d76e03b75087305ff5528cd86897500c746fc07000000c7461801000000c7461401000000c74610603766b1894e0c895608c7460405000000893e8b5424688b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d642404b815000000e8fb91feff89c7578b75008d76e43b75087303ff5528897500c746fc06000000c7461401000000c74610c8a469b1c7460c603766b1c7460801000000c74604100666b18b3c24893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c603766b1897708c74704d04166b1c707d0a469b18b7424608b56288b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d0a469b1ff12ba3c4966b18b0424e8ea80000089c78d64240457be0f0000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41578b3c24c7471800000000bf31000000d1ef8b3424893ebfe0a469b1b9210000008d77048b3c248d7f04d1e9f3a4bff8a469b1b9110000008d77048b3c248d7f14d1e9f3a48b3c248067ffbfbfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e88e790000eb00bac86966b16a01bb01000000e8abaa000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b4d008d49f03b4d087305ff5528cd80894d00c741fc03000000c74108543f66b1c74104783766b15e8931ba010000008b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707f8a469b1578b7c24048b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700f8a469b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708f8a469b1c7470401000000c7070b00000057be110000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41578b3c24c7471c000000008b3c24c7071b000000bfe0a469b1b9210000008d77048b3c248d7f04d1e9f3a4bfd48667b1b9170000008d77048b3c248d7f14d1e9f3a48b3c248067ffbfbfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e88c760000eb00bac86966b16a01bb01000000e8a9a7000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b4d008d49f03b4d087305ff5528cd80894d00c741fc03000000c74108543f66b1c74104783766b15e8931ba010000008b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c707d48667b1578b7c24088b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700d48667b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc74708d48667b1c7470401000000c7070b00000057be110000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41578b3c24c7471c000000008b3c24c7071b000000bfe0a469b1b9210000008d77048b3c248d7f04d1e9f3a4bf08a569b1b9170000008d77048b3c248d7f14d1e9f3a48b3c248067ffbfbfb87f67b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604f87f67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e88a730000eb00bac86966b16a01bb01000000e8a7a4000089c2b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b4d008d49f03b4d087305ff5528cd80894d00c741fc03000000c74108543f66b1c74104783766b15e8931ba010000008b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708603766b1c7470401000000c70708a569b1578b7c240c8b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70008a569b1ff128b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710603766b15e89770cc7470808a569b1c7470401000000c7070b000000578b75008d76f03b75087303ff5528897500c746fc03000000c746086ca867b18b7c2408897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704046d66b1c7076ca067b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c240c897e088b7c2408897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c747041ca569b1c70744a569b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b55008d52f43b55087305ff5528cd40895500c742fc02000000c74204010000008bbc2490000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bb03000000e8914e0e0089c7578b0424e8424f0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b742410897208c74204e45667b1c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470458a569b1c70784a569b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2410893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2414897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470494a569b1c707c4a569b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241889378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b55008d52f43b55087305ff5528cd40895500c742fc02000000c74204010000008bbc2498000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048bb4249800000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24188938bb03000000e8e64b0e0089c7578b0424e8974c0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542418895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d4a569b1c70710a669b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74241c89378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b55008d52f43b55087305ff5528cd40895500c742fc02000000c74204010000008bbc249c000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048bb4249c00000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241c8938bb03000000e8174a0e0089c7578b0424e8c84a0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b54241c895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470424a669b1c70764a669b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74242089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24208938bb03000000e8b7480e0089c7578b0424e868490e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542420895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c747047ca669b1c707b8a669b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c2424897e088bbc24a4000000897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704c8a669b1c707d0a669b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c2428897e088bbc24a8000000897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704e4a669b1c707eca669b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c242c897e088bbc24ac000000897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470404a769b1c7070ca769b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74243089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048bbc24b00000008938bb03000000e8a1460e0089c7578b0424e852470e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542428895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470424a769b1c70748a769b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74243489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048bbc24b40000008938bb03000000e899450e0089c7578b0424e84a460e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542434895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470458a769b1c70790a769b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2438893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74243889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24388938bb03000000e871440e0089c7578b0424e822450e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542438895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704a0a769b1c707a8a769b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74243c89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c243c8938bb03000000e86c430e0089c7578b0424e81d440e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b54243c895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704b4a769b1c707dca769b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2440893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542440895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704eca769b1c70710a869b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74244489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048bbc24c40000008938bb03000000e8b2410e0089c7578b0424e863420e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24448938bb03000000e8a9400e0089c7578b0424e85a410e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542444895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470420a869b1c7074ca869b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2440893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b54244889168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e8493f0e0089c7578b0424e8fa3f0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542448895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470460a869b1c70790a869b1578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74244c89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048bbc24cc0000008938bb03000000e8413e0e0089c7578b0424e8f23e0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542444895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704a0a869b1c707cca869b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2450893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cb45666b1c74708d45666b1897704c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542450895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704e0a869b1c70714a969b1578b75008d76f03b75087303ff5528897500c746fc030000008b7c2454897e088b7c2454897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470424a969b1c7072ca969b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008bbc24d8000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74245889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24588938bb03000000e8b23b0e0089c7578b0424e8633c0e0089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542458895708897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c746043ca969b1c70664a969b18b55008d52f03b55087305ff5528cd40895500c742fc030000008b7c2450897a088b7c2458897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470474a969b1c7077ca969b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642408893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b74240c8b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424048b75008d76f03b75087303ff5528897500c746fc03000000c74608545967b18b7c2440897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470490a969b1c707b8a969b1578b45008d40f43b45087303ff5528894500c740fc02000000c74004cc6567b18b7c24448938bb03000000e876360e0089c7578b0424e827370e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704c4a969b1c707dcb067b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2428893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24488938bb03000000e8f3340e0089c7578b0424e8a4350e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704c0aa69b1c7078cab69b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c242c893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24488938bb03000000e870330e0089c7578b0424e821340e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704a4ab69b1c70708ac69b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b74244c8977088b742450897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c746041cac69b1c70648ac69b18b55008d52f03b55087305ff5528cd40895500c742fc030000008b7c2410897a088b7c2450897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470458ac69b1c707e0ac69b18b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b54241889118b55008d52e83b55087305ff5528cdc2895500c742fc05000000c74210603766b1c7420cb45666b1c74208d45666b1894a04c7020b0000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc030000008951088b542450895104c701050000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08c74204ecac69b1c7022cad69b18b5d008d5bf03b5d087305ff5528cdc4895d00c743fc03000000c74308504766b18b4c2450894b04c703050000008b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895908c7410440ad69b1c70180ad69b18b45008d40f03b45087305ff5528cdc6894500c740fc03000000c74008504766b18b5c2450895804c700050000008b5d008d5bf03b5d087305ff5528cdc7895d00c743fc03000000894308c7430498ad69b1c703d4ad69b18b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424608b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424048b75008d76f03b75087303ff5528897500c746fc03000000c74608545967b18b7c2438897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704e8ad69b1c707b8a969b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2424893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c243c8938bb03000000e8802d0e0089c7578b0424e8312e0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470424ae69b1c707dcb067b18b55008d52f43b55087305ff5528cd80895500c742fc02000000c74204010000008b74240c89328b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1895604c7060b0000008b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b74243c897204c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c746048cae69b1c7062cad69b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b74245c8b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424048b75008d76f03b75087303ff5528897500c746fc03000000c74608545967b18b7c242c897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d0ae69b1c707b8a969b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2424893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24308938bb03000000e8ac290e0089c7578b0424e85d2a0e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470410af69b1c707dcb067b18b55008d52f03b55087305ff5528cd80895500c742fc030000008b7424048972088b742430897204c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c74604bcb069b1c706e0ac69b18b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b54240c89118b55008d52e83b55087305ff5528cdc2895500c742fc05000000c74210603766b1c7420cb45666b1c74208d45666b1894a04c7020b0000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc030000008951088b542430895104c701050000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08c7420448b169b1c7022cad69b18b5d008d5bf03b5d087305ff5528cdc4895d00c743fc030000008b4c2424894b088b4c2430894b04c703050000008b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895908c7410488b169b1c701f4b469b18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424548b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424048b75008d76f03b75087303ff5528897500c746fc03000000c74608545967b18b7c2430897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470404b569b1c707b8a969b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2424893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24348938bb03000000e8ea240e0089c7578b0424e89b250e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470440b569b1c707dcb067b18b55008d52f43b55087305ff5528cd80895500c742fc02000000c74204010000008b74240c89328b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1895604c7060b0000008b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b742434897204c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c74604a0b569b1c7062cad69b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424508b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424048b75008d76f03b75087303ff5528897500c746fc03000000c74608545967b18b7c2428897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704dcb569b1c707b8a969b1578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2424893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c74710603766b1c7470cc46066b1c74708f46066b1897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783f66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c242c8938bb03000000e816210e0089c7578b0424e8c7210e0089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c746086ca867b1897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c747041cb669b1c707dcb067b18b55008d52f03b55087305ff5528cd80895500c742fc030000008b7424048972088b74242c897204c702050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460420b769b1c706e0ac69b18b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b54240c89118b55008d52e83b55087305ff5528cdc2895500c742fc05000000c74210603766b1c7420cb45666b1c74208d45666b1894a04c7020b0000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc030000008951088b54242c895104c701050000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08c74204a8b769b1c7022cad69b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424488b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d6424348b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708545967b18b3424897704c707050000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c74604e8b769b1c706b8a969b18b55008d52f03b55087305ff5528cd40895500c742fc03000000c742086ca867b15f897a04c702050000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470424b869b1c707dcb067b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757f60424010f85d70000008b3c248b378b3c24ff77048b3e8b4e048b5e088b7424208b56088b75008d76f03b75087305ff5528cd8e897500c746fc03000000c7460801000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104c701030000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000c7461801000000c7461401000000c74610603766b1895e0c894e08c7460405000000893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ce91fffffff8d642464b801000000c3f400|@19816,1,@4592|24,1,@4908 54,0,@10033 61,0,@10146 76,0,@10034 83,0,@10147 88,0,@4624 99,0,@10178 106,0,@10188 111,0,@10067 116,1,@4971 124,0,0 129,1,@4975 137,0,0 142,1,@4976 177,0,1 184,0,0 191,0,0 205,0,0 212,0,@10222 250,0,12 256,0,@10188 261,0,@10072 266,1,@4977 301,0,0 368,0,0 377,0,20 412,0,1 445,0,0 452,0,0 459,0,@10037 466,0,@10239 476,0,@10005 482,0,@10222 488,0,@10259 493,0,@10067 498,1,@4971 506,0,0 511,1,@4975 519,0,0 524,1,@4976 559,0,1 566,0,0 573,0,0 587,0,0 594,0,@10260 632,0,12 638,0,@10259 643,0,@10072 648,1,@4977 683,0,0 750,0,0 759,0,20 794,0,1 827,0,0 834,0,0 841,0,@10037 848,0,@10239 858,0,@10005 864,0,@10260 870,0,10 875,1,@4893 909,0,0 916,0,@10261 923,0,@10037 930,0,0 937,0,@9473 975,0,@10037 985,0,@10184 991,0,@10266 1033,0,@10266 1040,0,@10267 1048,1,@4989 1060,0,9 1065,1,@5010 1102,0,1 1135,0,0 1142,0,0 1149,0,@10037 1156,0,@10288 1166,0,2 1172,0,@10289 1213,0,0 1289,0,@10240 1324,0,@10241 1372,0,@10260 1420,0,@10222 1469,0,@10289 1489,0,@10034 1496,0,@10147 1529,0,0 1566,0,@10035 1577,0,@10290 1588,0,@10311 1599,0,@10351 1606,0,@10363 1689,0,@10589 1696,0,@10591 1779,0,@10708 1786,0,@10423 1819,0,9999 1864,0,6 1897,0,0 1932,0,@10037 1939,0,@10710 1946,0,@10712 1955,0,5 1993,0,2 2027,0,0 2034,0,@10712 2039,0,@10755 2044,1,@5042 2081,0,1 2114,0,0 2121,0,0 2128,0,@10037 2142,0,@10070 2148,0,@10712 2186,0,0 2226,0,@10710 2261,0,@10712 2303,0,@10712 2310,0,0 2315,1,@4975 2323,0,0 2328,1,@5050 2363,0,1 2370,0,0 2377,0,0 2391,0,0 2398,0,@10760 2404,0,@10761 2439,0,12 2444,0,@10763 2505,0,0 2514,0,6 2547,0,@10765 2613,0,0 2622,0,20 2627,0,@10767 2634,0,0 2639,1,@5052 2646,0,0 2685,0,1 2690,0,1 2751,0,0 2758,0,0 2767,0,1 2800,0,@13032 2841,0,@10037 2848,0,0 2854,0,@13033 2886,0,@10037 2899,0,@13034 2906,0,0 2912,0,5 2922,0,@13035 2933,0,@13046 2940,0,10 2945,1,@4893 2979,0,0 2986,0,@13065 2993,0,@10037 3000,0,0 3007,0,@9473 3045,0,@10037 3055,0,@10184 3061,0,@13066 3103,0,@13066 3110,0,@10267 3118,1,@4989 3130,0,@10423 3163,0,9999 3208,0,6 3214,0,@10423 3247,0,9999 3292,0,6 3298,0,0 3303,1,@4975 3311,0,0 3316,1,@6467 3351,0,1 3358,0,0 3365,0,0 3379,0,0 3386,0,@13067 3392,0,@10067 3427,0,12 3459,0,0 3505,1,@6468 3526,0,0 3553,0,@9455 3580,0,0 3585,1,@4975 3606,0,@10224 3616,0,0 3625,1,@6469 3660,0,1 3667,0,0 3674,0,0 3692,0,0 3699,0,@10237 3737,0,12 3777,0,2 3812,0,1 3845,0,0 3852,0,0 3859,0,@10037 3872,0,2 3878,0,@13068 3919,0,@13068 3926,0,@10423 3959,0,9999 4004,0,6 4010,0,@10423 4043,0,9999 4088,0,6 4120,0,0 4132,0,5 4137,1,@5010 4149,1,@6468 4173,0,0 4200,0,@9455 4227,0,0 4232,1,@4975 4253,0,@10224 4263,0,0 4272,1,@6470 4307,0,1 4314,0,0 4321,0,0 4339,0,0 4346,0,@10237 4384,0,12 4420,0,@10239 4433,0,2 4468,0,1 4501,0,0 4508,0,0 4515,0,@10037 4528,0,2 4534,0,@13069 4576,0,@13069 4609,0,0 4621,0,@10170 4626,1,@6471 4638,1,@6468 4662,0,0 4689,0,@9455 4716,0,0 4721,1,@4975 4742,0,@10224 4752,0,0 4761,1,@6474 4796,0,1 4803,0,0 4810,0,0 4828,0,0 4835,0,@10237 4873,0,12 4908,0,0 4954,0,1 4959,1,@6475 4970,1,@6476 5005,0,1 5014,0,0 5053,0,3 5086,0,@10239 5095,0,2 5131,0,1 5164,0,0 5171,0,0 5178,0,@10037 5191,0,2 5197,0,@13072 5239,0,@13072 5272,0,0 5318,0,0 5323,1,@6477 5331,0,0 5336,1,@6478 5371,0,1 5378,0,0 5385,0,0 5399,0,0 5406,0,@13073 5412,0,@13074 5447,0,12 5457,1,@6468 5481,0,0 5508,0,@9455 5535,0,0 5540,1,@4975 5561,0,@10224 5571,0,0 5580,1,@6479 5615,0,1 5622,0,0 5629,0,0 5647,0,0 5654,0,@10237 5692,0,12 5727,0,@13077 5738,0,1 5743,1,@6475 5754,1,@6476 5789,0,1 5798,0,0 5837,0,3 5879,0,2 5915,0,1 5948,0,0 5955,0,0 5962,0,@10037 5975,0,2 5981,0,@13079 6023,0,@13079 6056,0,0 6102,0,0 6107,1,@6477 6115,0,0 6120,1,@6478 6155,0,1 6162,0,0 6169,0,0 6183,0,0 6190,0,@13073 6196,0,@13080 6231,0,12 6241,1,@6468 6265,0,0 6292,0,@9455 6319,0,0 6324,1,@4975 6345,0,@10224 6355,0,0 6364,1,@6480 6399,0,1 6406,0,0 6413,0,0 6431,0,0 6438,0,@10237 6476,0,12 6511,0,@13077 6522,0,1 6527,1,@6475 6538,1,@6476 6573,0,1 6582,0,0 6621,0,3 6663,0,2 6699,0,1 6732,0,0 6739,0,0 6746,0,@10037 6759,0,2 6765,0,@13081 6807,0,@13081 6840,0,0 6886,0,0 6891,1,@6477 6899,0,0 6904,1,@6478 6939,0,1 6946,0,0 6953,0,0 6967,0,0 6974,0,@13073 6980,0,@13082 7015,0,12 7025,1,@6468 7049,0,0 7076,0,@9455 7103,0,0 7108,1,@4975 7129,0,@10224 7139,0,0 7148,1,@6481 7183,0,1 7190,0,0 7197,0,0 7215,0,0 7222,0,@10237 7260,0,12 7295,0,@13077 7306,0,1 7311,1,@6475 7322,1,@6476 7357,0,1 7366,0,0 7405,0,3 7447,0,2 7483,0,1 7516,0,0 7523,0,0 7530,0,@10037 7543,0,2 7549,0,@13083 7591,0,@13083 7624,0,0 7670,0,0 7675,1,@6477 7683,0,0 7688,1,@6478 7723,0,1 7730,0,0 7737,0,0 7751,0,0 7758,0,@13073 7764,0,@13084 7799,0,12 7809,1,@6468 7833,0,0 7860,0,@9455 7887,0,0 7892,1,@4975 7913,0,@10224 7923,0,0 7932,1,@6482 7967,0,1 7974,0,0 7981,0,0 7999,0,0 8006,0,@10237 8044,0,12 8079,0,@13077 8090,0,1 8095,1,@6475 8106,1,@6476 8141,0,1 8150,0,0 8189,0,3 8231,0,2 8267,0,1 8300,0,0 8307,0,0 8314,0,@10037 8327,0,2 8333,0,@13085 8375,0,@13085 8408,0,0 8420,0,8 8425,1,@5010 8437,1,@6468 8461,0,0 8488,0,@9455 8515,0,0 8520,1,@4975 8541,0,@10224 8551,0,0 8560,1,@6483 8595,0,1 8602,0,0 8609,0,0 8627,0,0 8634,0,@10237 8672,0,12 8708,0,@13078 8721,0,2 8756,0,1 8789,0,0 8796,0,0 8803,0,@10037 8816,0,2 8822,0,@13086 8864,0,@13086 8897,0,0 8909,0,7 8914,1,@5010 8926,1,@6468 8950,0,0 8977,0,@9455 9004,0,0 9009,1,@4975 9030,0,@10224 9040,0,0 9049,1,@6484 9084,0,1 9091,0,0 9098,0,0 9116,0,0 9123,0,@10237 9161,0,12 9197,0,@13078 9210,0,2 9245,0,1 9278,0,0 9285,0,0 9292,0,@10037 9305,0,2 9311,0,@13087 9353,0,@13087 9367,0,@13088 9400,0,0 9446,0,0 9451,1,@6485 9459,0,0 9464,1,@6486 9499,0,1 9506,0,0 9513,0,0 9527,0,0 9534,0,@13094 9540,0,@13095 9575,0,12 9585,1,@6468 9609,0,0 9636,0,@9455 9663,0,0 9668,1,@4975 9689,0,@10224 9699,0,0 9708,1,@6487 9743,0,1 9750,0,0 9757,0,0 9775,0,0 9782,0,@10237 9820,0,12 9855,0,0 9896,0,@13078 9936,0,1 9941,1,@6475 9952,1,@6476 9987,0,1 9996,0,0 10035,0,3 10068,0,@13097 10077,0,2 10113,0,1 10146,0,0 10153,0,0 10160,0,@10037 10173,0,2 10179,0,@13098 10221,0,@13098 10254,0,0 10300,0,0 10305,1,@6485 10313,0,0 10318,1,@6486 10353,0,1 10360,0,0 10367,0,0 10381,0,0 10388,0,@13094 10394,0,@13099 10429,0,12 10439,1,@6468 10463,0,0 10490,0,@9455 10517,0,0 10522,1,@4975 10543,0,@10224 10553,0,0 10562,1,@6488 10597,0,1 10604,0,0 10611,0,0 10629,0,0 10636,0,@10237 10674,0,12 10709,0,0 10750,0,@13078 10790,0,1 10795,1,@6475 10806,1,@6476 10841,0,1 10850,0,0 10889,0,3 10922,0,@13097 10931,0,2 10967,0,1 11000,0,0 11007,0,0 11014,0,@10037 11027,0,2 11033,0,@13100 11075,0,@13100 11108,0,0 11120,0,3 11125,1,@5010 11137,1,@6468 11161,0,0 11188,0,@9455 11215,0,0 11220,1,@4975 11241,0,@10224 11251,0,0 11260,1,@6489 11295,0,1 11302,0,0 11309,0,0 11327,0,0 11334,0,@10237 11372,0,12 11408,0,@13097 11421,0,2 11456,0,1 11489,0,0 11496,0,0 11503,0,@10037 11516,0,2 11522,0,@13101 11564,0,@13101 11597,0,0 11609,0,@9922 11614,1,@6471 11626,1,@6468 11650,0,0 11677,0,@9455 11704,0,0 11709,1,@4975 11730,0,@10224 11740,0,0 11749,1,@6490 11784,0,1 11791,0,0 11798,0,0 11816,0,0 11823,0,@10237 11861,0,12 11870,0,@13102 11875,0,1 11880,1,@6475 11891,1,@6476 11926,0,1 11935,0,0 11974,0,3 12016,0,2 12052,0,1 12085,0,0 12092,0,0 12099,0,@10037 12112,0,2 12118,0,@13104 12160,0,@13104 12193,0,0 12238,1,@6468 12253,0,@13105 12263,0,0 12290,0,@9455 12317,0,0 12322,1,@4975 12343,0,@10224 12353,0,0 12362,1,@6491 12397,0,1 12404,0,0 12411,0,0 12429,0,0 12436,0,@10237 12442,0,@13105 12477,0,12 12509,0,0 12550,0,@13078 12585,0,@13078 12590,0,1 12595,1,@6475 12606,1,@6476 12641,0,1 12650,0,0 12689,0,3 12731,0,2 12771,0,1 12804,0,0 12811,0,0 12818,0,@10037 12831,0,2 12837,0,@13109 12879,0,@13109 12912,0,0 12923,0,0 12928,1,@6492 12936,0,0 12941,1,@6493 12976,0,1 12983,0,0 12990,0,0 13004,0,0 13011,0,@13110 13017,0,@13111 13052,0,12 13062,1,@6468 13086,0,0 13113,0,@9455 13140,0,0 13145,1,@4975 13166,0,@10224 13176,0,0 13185,1,@6494 13220,0,1 13227,0,0 13234,0,0 13252,0,0 13259,0,@10237 13297,0,12 13332,0,@13118 13378,0,1 13383,1,@6475 13394,1,@6476 13429,0,1 13438,0,0 13477,0,3 13510,0,@10239 13519,0,2 13555,0,1 13588,0,0 13595,0,0 13602,0,@10037 13615,0,2 13621,0,@13119 13663,0,@13119 13696,0,0 13707,0,0 13712,1,@6492 13720,0,0 13725,1,@6493 13760,0,1 13767,0,0 13774,0,0 13788,0,0 13795,0,@13110 13801,0,@13120 13836,0,12 13846,1,@6468 13870,0,0 13897,0,@9455 13924,0,0 13929,1,@4975 13950,0,@10224 13960,0,0 13969,1,@6495 14004,0,1 14011,0,0 14018,0,0 14036,0,0 14043,0,@10237 14081,0,12 14116,0,@13118 14162,0,1 14167,1,@6475 14178,1,@6476 14213,0,1 14222,0,0 14261,0,3 14303,0,2 14339,0,1 14372,0,0 14379,0,0 14386,0,@10037 14399,0,2 14405,0,@13121 14447,0,@13121 14480,0,0 14491,0,0 14496,1,@6492 14504,0,0 14509,1,@6493 14544,0,1 14551,0,0 14558,0,0 14572,0,0 14579,0,@13110 14585,0,@13122 14620,0,12 14630,1,@6468 14654,0,0 14681,0,@9455 14708,0,0 14713,1,@4975 14734,0,@10224 14744,0,0 14753,1,@6496 14788,0,1 14795,0,0 14802,0,0 14820,0,0 14827,0,@10237 14865,0,12 14900,0,@13118 14946,0,1 14951,1,@6475 14962,1,@6476 14997,0,1 15006,0,0 15045,0,3 15078,0,@13097 15087,0,2 15123,0,1 15156,0,0 15163,0,0 15170,0,@10037 15183,0,2 15189,0,@13123 15231,0,@13123 15264,0,0 15275,0,0 15280,1,@6492 15288,0,0 15293,1,@6493 15328,0,1 15335,0,0 15342,0,0 15356,0,0 15363,0,@13110 15369,0,@13124 15404,0,12 15414,1,@6468 15438,0,0 15465,0,@9455 15492,0,0 15497,1,@4975 15518,0,@10224 15528,0,0 15537,1,@6497 15572,0,1 15579,0,0 15586,0,0 15604,0,0 15611,0,@10237 15649,0,12 15684,0,@13118 15730,0,1 15735,1,@6475 15746,1,@6476 15781,0,1 15790,0,0 15829,0,3 15862,0,@13097 15871,0,2 15911,0,1 15944,0,0 15951,0,0 15958,0,@10037 15971,0,2 15977,0,@13125 16018,0,@13125 16025,0,0 16030,1,@6477 16038,0,0 16043,1,@6478 16078,0,1 16085,0,0 16092,0,0 16106,0,0 16113,0,@13073 16119,0,@13126 16154,0,12 16160,0,@13127 16165,0,1 16170,1,@6475 16181,1,@6476 16216,0,1 16225,0,0 16264,0,3 16297,0,@13078 16306,0,2 16342,0,1 16375,0,0 16382,0,0 16389,0,@10037 16402,0,2 16408,0,@13129 16449,0,@13129 16456,0,0 16461,1,@6485 16469,0,0 16474,1,@6486 16509,0,1 16516,0,0 16523,0,0 16537,0,0 16544,0,@13094 16550,0,@13130 16585,0,12 16591,0,@13131 16596,0,1 16601,1,@6475 16612,1,@6476 16647,0,1 16656,0,0 16695,0,3 16728,0,@13097 16737,0,2 16773,0,1 16806,0,0 16813,0,0 16820,0,@10037 16833,0,2 16839,0,@13132 16880,0,@13132 16887,0,@10423 16920,0,9999 16965,0,6 16971,0,@10423 17004,0,9999 17049,0,6 17055,0,@10704 17060,1,@4985 17095,0,1 17102,0,@13133 17111,0,7 17117,0,0 17122,1,@4975 17130,0,0 17135,1,@6508 17170,0,1 17177,0,0 17184,0,0 17198,0,0 17205,0,@13209 17243,0,12 17275,0,0 17321,1,@6468 17342,0,0 17369,0,@9455 17396,0,0 17401,1,@4975 17422,0,@10224 17432,0,0 17441,1,@6509 17476,0,1 17483,0,0 17490,0,0 17508,0,0 17515,0,@10237 17553,0,12 17559,0,@10704 17564,1,@4985 17599,0,1 17606,0,@13210 17615,0,7 17621,0,0 17626,1,@4975 17634,0,0 17639,1,@6514 17674,0,1 17681,0,0 17688,0,0 17702,0,0 17709,0,@13245 17747,0,12 17779,0,0 17825,1,@6468 17846,0,0 17873,0,@9455 17900,0,0 17905,1,@4975 17926,0,@10224 17936,0,0 17945,1,@6515 17980,0,1 17987,0,0 17994,0,0 18012,0,0 18019,0,@10237 18057,0,12 18063,0,@10423 18096,0,9999 18141,0,6 18147,0,@10423 18180,0,9999 18225,0,6 18231,0,@10423 18264,0,9999 18309,0,6 18315,0,@10423 18348,0,9999 18393,0,6 18399,0,@10423 18432,0,9999 18477,0,6 18509,0,0 18521,0,0 18526,0,@13246 18531,1,@6517 18543,1,@6468 18567,0,0 18594,0,@9455 18621,0,0 18626,1,@4975 18647,0,@10224 18657,0,0 18666,1,@6521 18701,0,1 18708,0,0 18715,0,0 18733,0,0 18740,0,@10237 18778,0,12 18813,0,0 18825,0,0 18830,0,@13251 18835,1,@6517 18847,1,@6468 18871,0,0 18898,0,@9455 18925,0,0 18930,1,@4975 18951,0,@10224 18961,0,0 18970,1,@6523 19005,0,1 19012,0,0 19019,0,0 19037,0,0 19044,0,@10237 19082,0,12 19124,0,@13097 19130,0,2 19166,0,@13128 19172,0,2 19217,0,2 19253,0,@13128 19259,0,2 19291,0,0 19373,0,2 19378,0,@13252 19383,1,@6517 19395,1,@6468 19419,0,0 19446,0,@9455 19473,0,0 19478,1,@4975 19499,0,@10224 19509,0,0 19518,1,@6525 19553,0,1 19560,0,0 19567,0,0 19585,0,0 19592,0,@10237 19630,0,12 19665,0,0 19747,0,2 19752,0,@13253 19757,1,@6517 19769,1,@6468 19793,0,0 19820,0,@9455 19847,0,0 19852,1,@4975 19873,0,@10224 19883,0,0 19892,1,@6527 19927,0,1 19934,0,0 19941,0,0 19959,0,0 19966,0,@10237 20004,0,12 20039,0,0 20085,0,1 20090,1,@6475 20101,1,@6476 20136,0,1 20145,0,0 20184,0,3 20226,0,2 20262,0,@13128 20268,0,2 20300,0,0 20417,0,3 20422,0,@13254 20427,1,@6517 20439,1,@6468 20463,0,0 20490,0,@9455 20517,0,0 20522,1,@4975 20543,0,@10224 20553,0,0 20562,1,@6529 20597,0,1 20604,0,0 20611,0,0 20629,0,0 20636,0,@10237 20674,0,12 20709,0,0 20826,0,3 20831,0,@13255 20836,1,@6517 20848,1,@6468 20872,0,0 20899,0,@9455 20926,0,0 20931,1,@4975 20952,0,@10224 20962,0,0 20971,1,@6531 21006,0,1 21013,0,0 21020,0,0 21038,0,0 21045,0,@10237 21083,0,12 21118,0,0 21199,0,1 21204,1,@6475 21215,1,@6476 21250,0,1 21259,0,0 21298,0,3 21340,0,2 21376,0,@13128 21382,0,2 21414,0,0 21566,0,4 21571,0,@13256 21576,1,@6517 21588,1,@6468 21612,0,0 21639,0,@9455 21666,0,0 21671,1,@4975 21695,0,@10224 21705,0,0 21714,1,@6533 21749,0,1 21756,0,0 21763,0,0 21781,0,0 21788,0,@10237 21826,0,12 21861,0,0 21977,0,1 21982,1,@6475 21993,1,@6476 22028,0,1 22037,0,0 22076,0,3 22118,0,2 22154,0,@13128 22160,0,2 22198,0,1 22231,0,0 22238,0,0 22245,0,@10037 22262,0,2 22268,0,@13257 22310,0,@13257 22349,0,1 22382,0,0 22389,0,0 22396,0,@10037 22413,0,2 22419,0,@13258 22461,0,@13258 22500,0,1 22533,0,0 22540,0,0 22547,0,@10037 22564,0,2 22570,0,@13209 22612,0,@13209 22651,0,1 22684,0,0 22691,0,0 22698,0,@10037 22715,0,2 22721,0,@13245 22763,0,@13245 22802,0,1 22835,0,0 22842,0,0 22849,0,@10037 22866,0,2 22872,0,@13259 22914,0,@13259 22953,0,1 22986,0,0 22993,0,0 23000,0,@10037 23017,0,2 23023,0,@13260 23065,0,@13260 23104,0,1 23137,0,0 23144,0,0 23151,0,@10037 23168,0,2 23174,0,@13261 23216,0,@13261 23255,0,1 23288,0,0 23295,0,0 23302,0,@10037 23319,0,2 23325,0,@13262 23367,0,@13262 23406,0,1 23439,0,0 23446,0,0 23453,0,@10037 23471,0,2 23477,0,@13263 23519,0,@13263 23526,0,@13264 23531,0,2 23536,0,2 23541,1,@6535 23549,0,@13267 23608,0,0 23617,0,6 23652,0,1 23685,0,0 23692,0,0 23699,0,@10037 23706,0,@13287 23716,0,0 23810,0,0 23849,0,@10037 23856,0,@10635 23863,0,@10638 23872,0,5 23905,0,0 23942,0,@13128 23947,0,1 23952,1,@6475 23963,1,@6476 23998,0,1 24007,0,0 24046,0,3 24082,0,2 24088,0,@13288 24121,0,0 24158,0,@13289 24193,0,@13291 24228,0,@13293 24263,0,@13295 24298,0,@13297 24361,0,@13287 24370,0,2 24403,0,0 24412,0,6 24447,0,1 24480,0,0 24487,0,0 24494,0,@10037 24507,0,0 24575,0,10 24580,1,@4893 24614,0,0 24621,0,@13299 24628,0,@10037 24635,0,0 24642,0,@9473 24680,0,@10037 24690,0,@10184 24696,0,@13300 24738,0,@13300 24745,0,@10267 24753,1,@4989 24765,0,@13301 24770,0,1 24775,1,@6475 24786,1,@6476 24821,0,1 24830,0,0 24869,0,3 24902,0,@10146 24911,0,2 24944,0,0 24981,0,@10033 25016,0,@10033 25021,0,1 25026,1,@6475 25037,1,@6476 25072,0,1 25081,0,0 25120,0,3 25153,0,@10239 25162,0,2 25168,0,@13301 25173,0,1 25178,1,@6475 25189,1,@6476 25224,0,1 25233,0,0 25272,0,3 25305,0,@10033 25314,0,2 25347,0,0 25384,0,@10033 25419,0,@10033 25424,0,1 25429,1,@6475 25440,1,@6476 25475,0,1 25484,0,0 25523,0,3 25556,0,@10033 25565,0,2 25571,0,@13301 25576,0,1 25581,1,@6475 25592,1,@6476 25627,0,1 25636,0,0 25675,0,3 25681,0,@13301 25686,0,1 25691,1,@6475 25702,1,@6476 25737,0,1 25746,0,0 25785,0,3 25824,0,2 25860,0,@13128 25866,0,2 25905,0,1 25938,0,0 25945,0,0 25952,0,@10037 25965,0,2 25971,0,@13303 25984,0,@13304 25991,0,@13306 25996,1,@6542 26033,0,1 26066,0,0 26073,0,0 26080,0,@10037 26097,0,2 26103,0,@13316 26145,0,@13316 26152,0,@12866 26157,1,@6542 26194,0,1 26227,0,0 26234,0,0 26241,0,@10037 26258,0,2 26264,0,@13317 26306,0,@13317 26313,0,@12232 26318,1,@6542 26355,0,1 26388,0,0 26395,0,0 26402,0,@10037 26419,0,2 26425,0,@13318 26467,0,@13318 26474,0,@10005 26479,1,@6542 26516,0,1 26549,0,0 26556,0,0 26563,0,@10037 26580,0,2 26586,0,@13319 26628,0,@13319 26635,0,@10068 26640,1,@6542 26677,0,1 26710,0,0 26717,0,0 26724,0,@10037 26741,0,2 26747,0,@13320 26789,0,@13320 26796,0,@12862 26801,1,@6542 26838,0,1 26871,0,0 26878,0,0 26885,0,@10037 26902,0,2 26908,0,@13321 26950,0,@13321 26957,0,@12876 26962,1,@6542 26999,0,1 27032,0,0 27039,0,0 27046,0,@10037 27063,0,2 27069,0,@13322 27111,0,@13322 27160,0,@13303 27167,0,10 27172,1,@4893 27206,0,0 27213,0,@13323 27220,0,@10037 27227,0,0 27234,0,@9473 27272,0,@10037 27282,0,@10184 27288,0,@13324 27330,0,@13324 27337,0,@10267 27345,1,@4989 27357,0,@13325 27362,0,1 27367,1,@6475 27378,1,@6476 27413,0,1 27422,0,0 27461,0,3 27494,0,@10239 27503,0,2 27509,0,@13325 27514,0,1 27519,1,@6475 27530,1,@6476 27565,0,1 27574,0,0 27613,0,3 27646,0,@10146 27655,0,2 27668,0,@13327 27675,0,@13329 27680,1,@6471 27717,0,1 27750,0,0 27757,0,0 27764,0,@10037 27781,0,2 27787,0,@9565 27829,0,@9565 27836,0,@13330 27841,1,@6471 27878,0,1 27911,0,0 27918,0,0 27925,0,@10037 27942,0,2 27948,0,@10958 27990,0,@10958 27997,0,@13331 28002,1,@6471 28039,0,1 28072,0,0 28079,0,0 28086,0,@10037 28103,0,2 28109,0,@9567 28151,0,@9567 28158,0,@13332 28163,1,@6471 28200,0,1 28233,0,0 28240,0,0 28247,0,@10037 28264,0,2 28270,0,@13333 28312,0,@13333 28319,0,@10071 28324,1,@6471 28361,0,1 28394,0,0 28401,0,0 28408,0,@10037 28424,0,2 28430,0,@9548 28472,0,@9548 28479,0,@13334 28484,1,@6471 28521,0,1 28554,0,0 28561,0,0 28568,0,@10037 28584,0,2 28590,0,@9550 28632,0,@9550 28639,0,@13306 28644,1,@6471 28681,0,1 28714,0,0 28721,0,0 28728,0,@10037 28744,0,2 28750,0,@9547 28792,0,@9547 28799,0,@12232 28804,1,@6471 28841,0,1 28874,0,0 28881,0,0 28888,0,@10037 28904,0,2 28910,0,@13335 28952,0,@13335 28959,0,@13336 28964,1,@6471 29001,0,1 29034,0,0 29041,0,0 29048,0,@10037 29066,0,2 29072,0,@13337 29111,0,@13337 29118,0,10 29123,1,@4893 29157,0,0 29164,0,@13338 29171,0,@10037 29178,0,0 29185,0,@9473 29223,0,@10037 29233,0,@10184 29239,0,@10845 29281,0,@10845 29288,0,@10267 29296,1,@4989 29334,0,0 29380,0,1 29385,1,@6475 29396,1,@6476 29431,0,1 29440,0,0 29479,0,3 29512,0,@10239 29521,0,2 29553,0,0 29599,0,1 29604,1,@6475 29615,1,@6476 29650,0,1 29659,0,0 29698,0,3 29740,0,2 29772,0,@13103 29783,0,1 29788,1,@6475 29799,1,@6476 29834,0,1 29843,0,0 29882,0,3 29924,0,2 29965,0,0 30006,0,@13033 30013,0,@13339 30018,1,@6471 30055,0,1 30088,0,0 30095,0,0 30102,0,@10037 30119,0,2 30125,0,@9565 30167,0,@9565 30174,0,@13340 30179,1,@6471 30216,0,1 30249,0,0 30256,0,0 30263,0,@10037 30280,0,2 30286,0,@10958 30328,0,@10958 30335,0,@12868 30340,1,@6471 30377,0,1 30410,0,0 30417,0,0 30424,0,@10037 30441,0,2 30447,0,@9567 30489,0,@9567 30496,0,@13341 30501,1,@6471 30538,0,1 30571,0,0 30578,0,0 30585,0,@10037 30602,0,2 30608,0,@13333 30650,0,@13333 30657,0,@10166 30662,1,@6471 30699,0,1 30732,0,0 30739,0,0 30746,0,@10037 30763,0,2 30769,0,@9548 30811,0,@9548 30818,0,@10491 30823,1,@6471 30860,0,1 30893,0,0 30900,0,0 30907,0,@10037 30924,0,2 30930,0,@9550 30972,0,@9550 30979,0,@10701 30984,1,@6471 31021,0,1 31054,0,0 31061,0,0 31068,0,@10037 31085,0,2 31091,0,@9547 31133,0,@9547 31140,0,@10390 31145,1,@6471 31182,0,1 31215,0,0 31222,0,0 31229,0,@10037 31246,0,2 31252,0,@13342 31294,0,@13342 31301,0,@10413 31306,1,@6471 31343,0,1 31376,0,0 31383,0,0 31390,0,@10037 31407,0,2 31413,0,@13343 31455,0,@13343 31462,0,@12870 31467,1,@6471 31504,0,1 31537,0,0 31544,0,0 31551,0,@10037 31568,0,2 31574,0,@13344 31616,0,@13344 31623,0,@11957 31628,1,@6471 31665,0,1 31698,0,0 31705,0,0 31712,0,@10037 31729,0,2 31735,0,@13345 31777,0,@13345 31784,0,@13346 31789,1,@6471 31826,0,1 31859,0,0 31866,0,0 31873,0,@10037 31890,0,2 31896,0,@13347 31938,0,@13347 31945,0,@11955 31950,1,@6471 31987,0,1 32020,0,0 32027,0,0 32034,0,@10037 32050,0,2 32056,0,@13348 32098,0,@13348 32105,0,@13349 32110,1,@6471 32147,0,1 32180,0,0 32187,0,0 32194,0,@10037 32210,0,2 32216,0,@13350 32258,0,@13350 32265,0,@12872 32270,1,@6471 32307,0,1 32340,0,0 32347,0,0 32354,0,@10037 32372,0,2 32378,0,@13351 32417,0,@13351 32424,0,10 32429,1,@4893 32463,0,0 32470,0,@13352 32477,0,@10037 32484,0,0 32491,0,@9473 32529,0,@10037 32539,0,@10184 32545,0,@10854 32587,0,@10854 32594,0,@10267 32602,1,@4989 32614,0,@13102 32619,0,1 32624,1,@6475 32635,1,@6476 32670,0,1 32679,0,0 32718,0,3 32751,0,@10239 32760,0,2 32766,0,@13102 32771,0,1 32776,1,@6475 32787,1,@6476 32822,0,1 32831,0,0 32870,0,3 32903,0,@13078 32912,0,2 32951,0,@13078 32957,0,2 32963,0,13 32968,1,@5010 33005,0,1 33038,0,0 33045,0,0 33052,0,@10037 33066,0,2 33072,0,@13353 33111,0,@13078 33117,0,2 33123,0,12 33128,1,@5010 33165,0,1 33198,0,0 33205,0,0 33212,0,@10037 33226,0,2 33232,0,@13354 33264,0,@13078 33277,0,2 33283,0,6 33288,1,@5010 33325,0,1 33358,0,0 33365,0,0 33372,0,@10037 33386,0,2 33392,0,@13355 33405,0,@13046 33412,0,@13356 33417,1,@6471 33454,0,1 33487,0,0 33494,0,0 33501,0,@10037 33518,0,2 33524,0,@9565 33566,0,@9565 33573,0,@13357 33578,1,@6471 33615,0,1 33648,0,0 33655,0,0 33662,0,@10037 33679,0,2 33685,0,@10958 33727,0,@10958 33734,0,@13358 33739,1,@6471 33776,0,1 33809,0,0 33816,0,0 33823,0,@10037 33840,0,2 33846,0,@9567 33888,0,@9567 33895,0,@13359 33900,1,@6471 33937,0,1 33970,0,0 33977,0,0 33984,0,@10037 34001,0,2 34007,0,@13333 34049,0,@13333 34056,0,@13360 34061,1,@6471 34098,0,1 34131,0,0 34138,0,0 34145,0,@10037 34162,0,2 34168,0,@9548 34210,0,@9548 34217,0,@13361 34222,1,@6471 34259,0,1 34292,0,0 34299,0,0 34306,0,@10037 34323,0,2 34329,0,@9550 34371,0,@9550 34378,0,@13362 34383,1,@6471 34420,0,1 34453,0,0 34460,0,0 34467,0,@10037 34484,0,2 34490,0,@9547 34532,0,@9547 34539,0,@13363 34544,1,@6471 34581,0,1 34614,0,0 34621,0,0 34628,0,@10037 34645,0,2 34651,0,@13342 34693,0,@13342 34700,0,@13364 34705,1,@6471 34742,0,1 34775,0,0 34782,0,0 34789,0,@10037 34806,0,2 34812,0,@13343 34854,0,@13343 34861,0,@13365 34866,1,@6471 34903,0,1 34936,0,0 34943,0,0 34950,0,@10037 34967,0,2 34973,0,@13344 35015,0,@13344 35022,0,@13366 35027,1,@6471 35064,0,1 35097,0,0 35104,0,0 35111,0,@10037 35128,0,2 35134,0,@13345 35176,0,@13345 35183,0,@13367 35188,1,@6471 35225,0,1 35258,0,0 35265,0,0 35272,0,@10037 35289,0,2 35295,0,@13347 35337,0,@13347 35344,0,@13368 35349,1,@6471 35386,0,1 35419,0,0 35426,0,0 35433,0,@10037 35450,0,2 35456,0,@13348 35498,0,@13348 35505,0,@13369 35510,1,@6471 35547,0,1 35580,0,0 35587,0,0 35594,0,@10037 35611,0,2 35617,0,@13350 35659,0,@13350 35666,0,@13370 35671,1,@6471 35708,0,1 35741,0,0 35748,0,0 35755,0,@10037 35772,0,2 35778,0,@13351 35820,0,@13351 35868,0,@13353 35916,0,@13354 35965,0,@13355 35972,0,10 35977,1,@4893 36011,0,0 36018,0,@13371 36025,0,@10037 36032,0,0 36039,0,@9473 36077,0,@10037 36087,0,@10184 36093,0,@13372 36135,0,@13372 36142,0,@10267 36150,1,@4989 36168,0,@10290 36175,0,@13373 36180,0,1 36185,1,@6475 36196,1,@6476 36231,0,1 36240,0,0 36279,0,3 36312,0,@10239 36321,0,2 36327,0,@13356 36332,1,@6471 36369,0,1 36402,0,0 36409,0,0 36416,0,@10037 36430,0,2 36436,0,@9565 36477,0,@9565 36484,0,@13373 36489,0,1 36494,1,@6475 36505,1,@6476 36540,0,1 36549,0,0 36588,0,3 36621,0,@10239 36630,0,2 36636,0,@13357 36641,1,@6471 36678,0,1 36711,0,0 36718,0,0 36725,0,@10037 36739,0,2 36745,0,@10958 36786,0,@10958 36793,0,@13373 36798,0,1 36803,1,@6475 36814,1,@6476 36849,0,1 36858,0,0 36897,0,3 36930,0,@10239 36939,0,2 36945,0,@13358 36950,1,@6471 36987,0,1 37020,0,0 37027,0,0 37034,0,@10037 37048,0,2 37054,0,@9567 37095,0,@9567 37102,0,@13373 37107,0,1 37112,1,@6475 37123,1,@6476 37158,0,1 37167,0,0 37206,0,3 37239,0,@10239 37248,0,2 37254,0,@13359 37259,1,@6471 37296,0,1 37329,0,0 37336,0,0 37343,0,@10037 37357,0,2 37363,0,@13333 37402,0,@13333 37409,0,10 37414,1,@4893 37448,0,0 37455,0,@13376 37462,0,@10037 37469,0,0 37476,0,@9473 37514,0,@10037 37524,0,@10184 37530,0,@13377 37572,0,@13377 37579,0,@10267 37587,1,@4989 37601,0,@10311 37608,0,10 37613,1,@4893 37647,0,0 37654,0,@13378 37661,0,@10037 37668,0,0 37675,0,@9473 37713,0,@10037 37723,0,@10184 37729,0,@10853 37771,0,@10853 37778,0,@10267 37786,1,@4989 37798,0,@10704 37803,1,@4985 37838,0,1 37845,0,@13379 37854,0,7 37860,0,0 37865,1,@4975 37873,0,0 37878,1,@6558 37913,0,1 37920,0,0 37927,0,0 37941,0,0 37948,0,@13410 37986,0,12 37992,0,@10704 37997,1,@4985 38032,0,1 38039,0,@13411 38048,0,7 38054,0,0 38059,1,@4975 38067,0,0 38072,1,@6565 38107,0,1 38114,0,0 38121,0,0 38135,0,0 38142,0,@13416 38180,0,12 38216,0,1 38249,0,0 38256,0,0 38263,0,@10037 38270,0,@13417 38280,0,2 38286,0,@13420 38322,0,1 38355,0,0 38362,0,0 38369,0,@10037 38376,0,@13421 38386,0,2 38392,0,@13423 38398,0,@13424 38403,0,1 38408,1,@6475 38419,1,@6476 38454,0,1 38463,0,0 38502,0,3 38535,0,@10239 38544,0,2 38550,0,@13424 38555,0,1 38560,1,@6475 38571,1,@6476 38606,0,1 38615,0,0 38654,0,3 38687,0,@13419 38696,0,2 38709,0,@10351 38757,0,@13420 38805,0,@13423 38812,0,@13426 38817,1,@6471 38854,0,1 38887,0,0 38894,0,0 38901,0,@10037 38918,0,2 38924,0,@9565 38966,0,@9565 38973,0,@13427 38978,1,@6471 39015,0,1 39048,0,0 39055,0,0 39062,0,@10037 39079,0,2 39085,0,@10958 39127,0,@10958 39134,0,@12875 39139,1,@6471 39176,0,1 39209,0,0 39216,0,0 39223,0,@10037 39240,0,2 39246,0,@9567 39288,0,@9567 39295,0,@13428 39300,1,@6471 39337,0,1 39370,0,0 39377,0,0 39384,0,@10037 39401,0,2 39407,0,@13333 39449,0,@13333 39456,0,@10757 39461,1,@6471 39498,0,1 39531,0,0 39538,0,0 39545,0,@10037 39562,0,2 39568,0,@13429 39610,0,@13429 39617,0,@11162 39622,1,@6471 39659,0,1 39692,0,0 39699,0,0 39706,0,@10037 39722,0,2 39728,0,@9548 39770,0,@9548 39777,0,@13430 39782,1,@6471 39819,0,1 39852,0,0 39859,0,0 39866,0,@10037 39882,0,2 39888,0,@9550 39930,0,@9550 39937,0,@12228 39942,1,@6471 39979,0,1 40012,0,0 40019,0,0 40026,0,@10037 40042,0,2 40048,0,@9547 40090,0,@9547 40097,0,@12224 40102,1,@6471 40139,0,1 40172,0,0 40179,0,0 40186,0,@10037 40204,0,2 40210,0,@9552 40251,0,@9552 40258,0,11 40263,1,@5010 40300,0,1 40333,0,0 40340,0,0 40347,0,@10037 40354,0,@13431 40364,0,2 40370,0,@9631 40411,0,@9631 40418,0,10 40423,1,@5010 40460,0,1 40493,0,0 40500,0,0 40507,0,@10037 40514,0,@13431 40524,0,2 40530,0,@13432 40571,0,@13432 40578,0,4 40583,1,@5010 40620,0,1 40653,0,0 40660,0,0 40667,0,@10037 40674,0,@13433 40684,0,2 40690,0,@13434 40729,0,@13434 40736,0,10 40741,1,@4893 40775,0,0 40782,0,@13435 40789,0,@10037 40796,0,0 40803,0,@9473 40841,0,@10037 40851,0,@10184 40857,0,@13436 40899,0,@13436 40906,0,@10267 40914,1,@4989 40926,0,10 40931,1,@4893 40965,0,0 40972,0,@13437 40979,0,@10037 40986,0,0 40993,0,@9473 41031,0,@10037 41041,0,@10184 41047,0,@13290 41089,0,@13290 41096,0,@10267 41104,1,@4989 41116,0,@13438 41177,0,0 41186,0,6 41219,0,@13439 41256,0,@13440 41289,0,0 41298,0,20 41303,0,@10767 41310,0,0 41315,1,@5052 41322,0,0 41361,0,1 41366,0,1 41427,0,0 41434,0,0 41443,0,1 41476,0,@13443 41517,0,@10037 41524,0,0 41530,0,@13444 41562,0,0 41575,0,@13444 41582,0,0 41588,0,5 41624,0,@13097 41630,0,2 41663,0,0 41670,0,0 41677,0,@10037 41687,0,@13445 41694,0,2 41700,0,@13449 41706,0,1 41711,1,@5010 41748,0,1 41781,0,0 41788,0,0 41795,0,@10037 41802,0,@13450 41812,0,2 41818,0,@13452 41824,0,0 41829,1,@5010 41866,0,1 41899,0,0 41906,0,0 41913,0,@10037 41920,0,@13450 41930,0,2 41936,0,@13453 41942,0,2 41947,1,@5010 41984,0,1 42017,0,0 42024,0,0 42031,0,@10037 42038,0,@13454 42048,0,2 42054,0,@13455 42095,0,0 42136,0,@13444 42184,0,@13449 42232,0,@13452 42280,0,@13453 42329,0,@13455 42336,0,10 42341,1,@4893 42375,0,0 42382,0,@13456 42389,0,@10037 42396,0,0 42403,0,@9473 42441,0,@10037 42451,0,@10184 42457,0,@13457 42499,0,@13457 42506,0,@10267 42514,1,@4989 42526,0,@10423 42559,0,9999 42604,0,6 42636,0,@13103 42647,0,1 42652,1,@6475 42663,1,@6476 42698,0,1 42707,0,0 42746,0,3 42787,0,2 42819,0,0 42831,0,0 42836,1,@6477 42844,0,0 42849,1,@6478 42884,0,1 42891,0,0 42898,0,0 42912,0,0 42919,0,@13073 42925,0,@13458 42960,0,12 42970,1,@6468 42994,0,0 43021,0,@9455 43048,0,0 43053,1,@4975 43074,0,@10224 43084,0,0 43093,1,@6570 43128,0,1 43135,0,0 43142,0,0 43160,0,0 43167,0,@10237 43205,0,12 43243,0,1 43276,0,0 43283,0,0 43290,0,@10037 43304,0,2 43310,0,@13459 43342,0,@13103 43353,0,1 43358,1,@6475 43369,1,@6476 43404,0,1 43413,0,0 43452,0,3 43485,0,@13078 43494,0,2 43500,0,0 43505,1,@6477 43513,0,0 43518,1,@6478 43553,0,1 43560,0,0 43567,0,0 43581,0,0 43588,0,@13073 43594,0,@13460 43629,0,12 43664,0,1 43697,0,0 43704,0,0 43711,0,@10037 43725,0,2 43731,0,@13461 43763,0,@13103 43774,0,1 43779,1,@6475 43790,1,@6476 43825,0,1 43834,0,0 43873,0,3 43915,0,2 43947,0,0 43959,0,0 43964,1,@6477 43972,0,0 43977,1,@6478 44012,0,1 44019,0,0 44026,0,0 44040,0,0 44047,0,@13073 44053,0,@13462 44088,0,12 44098,1,@6468 44122,0,0 44149,0,@9455 44176,0,0 44181,1,@4975 44202,0,@10224 44212,0,0 44221,1,@6571 44256,0,1 44263,0,0 44270,0,0 44288,0,0 44295,0,@10237 44333,0,12 44371,0,1 44404,0,0 44411,0,0 44418,0,@10037 44432,0,2 44438,0,@13463 44470,0,@13103 44481,0,1 44486,1,@6475 44497,1,@6476 44532,0,1 44541,0,0 44580,0,3 44622,0,2 44628,0,0 44633,1,@6477 44641,0,0 44646,1,@6478 44681,0,1 44688,0,0 44695,0,0 44709,0,0 44716,0,@13073 44722,0,@13464 44757,0,12 44792,0,1 44825,0,0 44832,0,0 44839,0,@10037 44853,0,2 44859,0,@13465 44891,0,@13103 44902,0,1 44907,1,@6475 44918,1,@6476 44953,0,1 44962,0,0 45001,0,3 45034,0,@13419 45043,0,2 45049,0,0 45054,1,@6477 45062,0,0 45067,1,@6478 45102,0,1 45109,0,0 45116,0,0 45130,0,0 45137,0,@13073 45143,0,@13466 45178,0,12 45213,0,1 45246,0,0 45253,0,0 45260,0,@10037 45274,0,2 45280,0,@13467 45312,0,@13103 45323,0,1 45328,1,@6475 45339,1,@6476 45374,0,1 45383,0,0 45422,0,3 45455,0,@13419 45464,0,2 45470,0,0 45475,1,@6477 45483,0,0 45488,1,@6478 45523,0,1 45530,0,0 45537,0,0 45551,0,0 45558,0,@13073 45564,0,@13468 45599,0,12 45634,0,1 45667,0,0 45674,0,0 45681,0,@10037 45695,0,2 45701,0,@13469 45733,0,0 45774,0,@13078 45814,0,1 45819,1,@6475 45830,1,@6476 45865,0,1 45874,0,0 45913,0,3 45946,0,@13097 45955,0,2 45987,0,0 45999,0,0 46004,1,@6485 46012,0,0 46017,1,@6486 46052,0,1 46059,0,0 46066,0,0 46080,0,0 46087,0,@13094 46093,0,@13470 46128,0,12 46138,1,@6468 46162,0,0 46189,0,@9455 46216,0,0 46221,1,@4975 46242,0,@10224 46252,0,0 46261,1,@6572 46296,0,1 46303,0,0 46310,0,0 46328,0,0 46335,0,@10237 46373,0,12 46411,0,1 46444,0,0 46451,0,0 46458,0,@10037 46472,0,2 46478,0,@13471 46510,0,@13102 46521,0,1 46526,1,@6475 46537,1,@6476 46572,0,1 46581,0,0 46620,0,3 46653,0,@13097 46662,0,2 46668,0,0 46673,1,@6485 46681,0,0 46686,1,@6486 46721,0,1 46728,0,0 46735,0,0 46749,0,0 46756,0,@13094 46762,0,@13472 46797,0,12 46832,0,1 46865,0,0 46872,0,0 46879,0,@10037 46893,0,2 46899,0,@13473 46931,0,0 46972,0,@13078 47012,0,1 47017,1,@6475 47028,1,@6476 47063,0,1 47072,0,0 47111,0,3 47144,0,@13097 47153,0,2 47185,0,0 47197,0,0 47202,1,@6485 47210,0,0 47215,1,@6486 47250,0,1 47257,0,0 47264,0,0 47278,0,0 47285,0,@13094 47291,0,@13474 47326,0,12 47336,1,@6468 47360,0,0 47387,0,@9455 47414,0,0 47419,1,@4975 47440,0,@10224 47450,0,0 47459,1,@6573 47494,0,1 47501,0,0 47508,0,0 47526,0,0 47533,0,@10237 47571,0,12 47609,0,1 47642,0,0 47649,0,0 47656,0,@10037 47670,0,2 47676,0,@13475 47708,0,0 47749,0,@13078 47789,0,1 47794,1,@6475 47805,1,@6476 47840,0,1 47849,0,0 47888,0,3 47921,0,@13097 47930,0,2 47936,0,0 47941,1,@6485 47949,0,0 47954,1,@6486 47989,0,1 47996,0,0 48003,0,0 48017,0,0 48024,0,@13094 48030,0,@13476 48065,0,12 48100,0,1 48133,0,0 48140,0,0 48147,0,@10037 48161,0,2 48167,0,@13477 48199,0,@13478 48210,0,1 48215,1,@6475 48226,1,@6476 48261,0,1 48270,0,0 48309,0,3 48342,0,@13097 48351,0,2 48357,0,0 48362,1,@6485 48370,0,0 48375,1,@6486 48410,0,1 48417,0,0 48424,0,0 48438,0,0 48445,0,@13094 48451,0,@13480 48486,0,12 48521,0,1 48554,0,0 48561,0,0 48568,0,@10037 48582,0,2 48588,0,@13481 48620,0,@13478 48631,0,1 48636,1,@6475 48647,1,@6476 48682,0,1 48691,0,0 48730,0,3 48763,0,@13097 48772,0,2 48778,0,0 48783,1,@6485 48791,0,0 48796,1,@6486 48831,0,1 48838,0,0 48845,0,0 48859,0,0 48866,0,@13094 48872,0,@13482 48907,0,12 48942,0,1 48975,0,0 48982,0,0 48989,0,@10037 49003,0,2 49009,0,@13483 49056,0,@13459 49104,0,@13461 49152,0,@13463 49200,0,@13465 49248,0,@13467 49296,0,@13469 49344,0,@13471 49392,0,@13473 49440,0,@13475 49488,0,@13477 49536,0,@13481 49585,0,@13483 49592,0,@10767 49599,0,@13484 49604,0,0 49609,1,@5052 49616,0,0 49626,0,@10767 49633,0,@13503 49638,0,0 49643,1,@5052 49650,0,0 49660,0,@10767 49667,0,@13518 49672,0,0 49677,1,@5052 49684,0,0 49701,0,@13530 49715,0,@13536 49729,0,@13541 49743,0,@13546 49776,0,0 49789,0,6 49824,0,1 49857,0,0 49864,0,0 49871,0,@10037 49878,0,@10239 49888,0,2 49894,0,@13550 49936,0,@13550 49943,0,@13551 49952,0,@13535 49957,0,@10314 49962,1,@6587 49967,0,@13551 49976,0,@13538 49981,0,@10147 49986,1,@6587 49991,0,@13551 50000,0,@13538 50005,0,@10034 50010,1,@6587 50015,0,@13551 50023,0,@13543 50028,0,@13048 50033,1,@6587 50042,0,@13554 50047,1,@4985 50082,0,1 50089,0,@13563 50098,0,7 50104,0,@13565 50109,1,@4985 50144,0,1 50151,0,@13567 50160,0,7 50193,0,@10072 50206,0,5 50242,0,@10066 50249,0,@13568 50255,0,5 50261,0,@13569 50266,1,@6589 50274,0,0 50279,1,@6590 50314,0,1 50321,0,0 50328,0,1 50342,0,0 50349,0,@13575 50387,0,12 50422,0,2 50455,0,0 50471,0,@13576 50485,1,@6591 50522,0,3 50555,0,0 50592,0,@13582 50627,0,@13584 50633,0,@13586 50638,1,@4985 50673,0,1 50680,0,@13572 50689,0,7 50722,0,@10072 50732,0,@13587 50738,0,5 50793,0,15 50799,0,@10704 50804,1,@6589 50812,0,0 50817,1,@6592 50852,0,1 50859,0,3 50866,0,1 50880,0,0 50887,0,@13588 50925,0,12 50931,0,0 50936,1,@4975 50944,0,0 50949,1,@6593 50984,0,1 50991,0,0 50998,0,0 51012,0,0 51019,0,@13589 51057,0,12 51063,0,@13590 51124,0,0 51133,0,6 51139,0,0 51144,1,@4975 51152,0,0 51157,1,@6596 51192,0,1 51199,0,0 51206,0,0 51220,0,0 51227,0,@13594 51233,0,@10749 51268,0,12 51274,0,0 51279,1,@4975 51287,0,0 51292,1,@6597 51327,0,1 51334,0,0 51341,0,0 51355,0,0 51362,0,@13595 51368,0,@10066 51403,0,12 51436,0,0 51567,0,0 51576,0,20 51581,0,@10767 51588,0,0 51593,1,@5052 51600,0,0 51639,0,1 51644,0,@10423 51677,0,9999 51748,0,0 51755,0,1 51816,0,0 51823,0,1 51832,0,1 51865,0,@13596 51906,0,@10037 51915,0,@13597 51952,0,0 51989,0,@13597 51996,0,0 52001,1,@6589 52009,0,0 52014,1,@6598 52049,0,1 52056,0,3 52063,0,1 52077,0,0 52084,0,@13598 52090,0,@13599 52125,0,12 52130,0,@13610 52191,0,0 52200,0,6 52233,0,@13439 52299,0,0 52308,0,20 52313,0,@10767 52320,0,0 52325,1,@5052 52332,0,0 52371,0,1 52376,0,1 52437,0,0 52444,0,0 52453,0,1 52486,0,@13611 52527,0,@10037 52534,0,0 52540,0,@13612 52579,0,0 52616,0,@13612 52627,0,@13613 52640,0,@13640 52653,0,@13666 52660,0,@10423 52693,0,9999 52741,0,6 52774,0,0 52812,0,1 52817,1,@6475 52828,1,@6476 52863,0,1 52872,0,0 52911,0,3 52944,0,@10239 52953,0,2 52986,0,0 52993,0,0 53000,0,@10037 53010,0,@13341 53017,0,2 53023,0,@9566 53062,0,@9566 53069,0,@10423 53102,0,9999 53150,0,6 53183,0,0 53221,0,1 53226,1,@6475 53237,1,@6476 53272,0,1 53281,0,0 53320,0,3 53353,0,@10239 53362,0,2 53395,0,0 53402,0,0 53409,0,@10037 53419,0,@13690 53426,0,2 53432,0,@13691 53471,0,@13691 53478,0,10 53483,1,@4893 53517,0,0 53524,0,@13692 53531,0,@10037 53538,0,0 53545,0,@9473 53583,0,@10037 53593,0,@10184 53599,0,@13693 53641,0,@13693 53648,0,@10267 53656,1,@4989 53674,0,10 53679,1,@4893 53713,0,0 53720,0,@13694 53727,0,@10037 53734,0,0 53741,0,@9473 53779,0,@10037 53789,0,@10184 53795,0,@13695 53837,0,@13695 53844,0,@10267 53852,1,@4989 53864,0,10 53869,1,@4893 53903,0,0 53910,0,@13696 53917,0,@10037 53924,0,0 53931,0,@9473 53969,0,@10037 53979,0,@10184 53985,0,@13697 54027,0,@13697 54034,0,@10267 54042,1,@4989 54054,0,10 54059,1,@4893 54093,0,0 54100,0,@13698 54107,0,@10037 54114,0,0 54121,0,@9473 54159,0,@10037 54169,0,@10184 54175,0,@13699 54217,0,@13699 54224,0,@10267 54232,1,@4989 54244,0,10 54249,1,@4893 54283,0,0 54290,0,@13700 54297,0,@10037 54304,0,0 54311,0,@9473 54349,0,@10037 54359,0,@10184 54365,0,@13701 54407,0,@13701 54414,0,@10267 54422,1,@4989 54434,0,10 54439,1,@4893 54473,0,0 54480,0,@13702 54487,0,@10037 54494,0,0 54501,0,@9473 54539,0,@10037 54549,0,@10184 54555,0,@13703 54597,0,@13703 54604,0,@10267 54612,1,@4989 54624,0,10 54629,1,@4893 54663,0,0 54670,0,@13704 54677,0,@10037 54684,0,0 54691,0,@9473 54729,0,@10037 54739,0,@10184 54745,0,@13705 54787,0,@13705 54794,0,@10267 54802,1,@4989 54814,0,10 54819,1,@4893 54853,0,0 54860,0,@13706 54867,0,@10037 54874,0,0 54881,0,@9473 54919,0,@10037 54929,0,@10184 54935,0,@13707 54977,0,@13707 54984,0,@10267 54992,1,@4989 55004,0,@13708 55065,0,0 55074,0,6 55107,0,@13710 55144,0,@10072 55177,0,0 55186,0,20 55225,0,0 55232,0,1 55242,1,@4980 55249,0,@10767 55256,0,0 55261,1,@5052 55268,0,0 55307,0,1 55312,0,0 55373,0,0 55380,0,0 55389,0,1 55422,0,@13711 55463,0,@10037 55470,0,0 55476,0,@13713 55517,0,0 55557,0,@13713 55590,0,@10037 55601,0,@13713 55608,0,0 55614,0,5 55620,0,@13708 55681,0,0 55690,0,6 55723,0,@13710 55760,0,@10072 55793,0,0 55802,0,20 55841,0,0 55848,0,1 55858,1,@4980 55865,0,@10767 55872,0,0 55877,1,@5052 55884,0,0 55923,0,1 55928,0,0 55989,0,0 55996,0,0 56005,0,1 56038,0,@13714 56079,0,@10037 56086,0,0 56092,0,@13716 56133,0,0 56173,0,@13716 56206,0,@10037 56217,0,@13716 56224,0,0 56230,0,5 56236,0,@13708 56297,0,0 56306,0,6 56339,0,@13710 56376,0,@10072 56409,0,0 56418,0,20 56457,0,0 56464,0,1 56474,1,@4980 56481,0,@10767 56488,0,0 56493,1,@5052 56500,0,0 56539,0,1 56544,0,0 56605,0,0 56612,0,0 56621,0,1 56654,0,@13717 56695,0,@10037 56702,0,0 56708,0,@13719 56749,0,0 56789,0,@13719 56822,0,@10037 56833,0,@13719 56840,0,0 56846,0,5 56852,0,@13708 56913,0,0 56922,0,6 56955,0,@13710 56992,0,@10072 57025,0,0 57034,0,20 57073,0,0 57080,0,1 57090,1,@4980 57097,0,@10767 57104,0,0 57109,1,@5052 57116,0,0 57155,0,1 57160,0,0 57221,0,0 57228,0,0 57237,0,1 57270,0,@13720 57311,0,@10037 57318,0,0 57324,0,@13722 57365,0,0 57405,0,@13722 57438,0,@10037 57449,0,@13722 57456,0,0 57462,0,5 57468,0,@13708 57529,0,0 57538,0,6 57571,0,@13710 57608,0,@10072 57641,0,0 57650,0,20 57689,0,0 57696,0,1 57706,1,@4980 57713,0,@10767 57720,0,0 57725,1,@5052 57732,0,0 57771,0,1 57776,0,0 57837,0,0 57844,0,0 57853,0,1 57886,0,@13723 57927,0,@10037 57934,0,0 57940,0,@13725 57981,0,0 58021,0,@13725 58054,0,@10037 58065,0,@13725 58072,0,0 58078,0,5 58084,0,@13708 58145,0,0 58154,0,6 58187,0,@13710 58224,0,@10072 58257,0,0 58266,0,20 58305,0,0 58312,0,1 58322,1,@4980 58329,0,@10767 58336,0,0 58341,1,@5052 58348,0,0 58387,0,1 58392,0,0 58453,0,0 58460,0,0 58469,0,1 58502,0,@13726 58543,0,@10037 58550,0,0 58556,0,@13728 58597,0,0 58637,0,@13728 58670,0,@10037 58681,0,@13728 58688,0,0 58694,0,5 58700,0,@13708 58761,0,0 58770,0,6 58803,0,@13710 58840,0,@10072 58873,0,0 58882,0,20 58921,0,0 58928,0,1 58938,1,@4980 58945,0,@10767 58952,0,0 58957,1,@5052 58964,0,0 59003,0,1 59008,0,0 59069,0,0 59076,0,0 59085,0,1 59118,0,@13729 59159,0,@10037 59166,0,0 59172,0,@13731 59213,0,0 59253,0,@13731 59286,0,@10037 59297,0,@13731 59304,0,0 59310,0,5 59348,0,@13732 59386,0,@13733 59425,0,@13734 59464,0,@13735 59503,0,@13736 59542,0,@13737 59575,0,0 59766,1,@6618 59788,1,@6620 59814,1,@6621 59825,1,@6623 59860,0,1 59869,0,0 59908,0,3 59944,0,0 59950,0,2 59983,0,@13745 59992,0,@10184 60028,0,@10037 60035,0,0 60041,0,@13747 60082,0,0 60122,0,@13747 60155,0,0 60196,0,@13128 60201,0,1 60206,1,@6475 60217,1,@6476 60252,0,1 60261,0,0 60300,0,3 60333,0,0 60368,0,@10037 60375,0,@10472 60382,0,@10474 60391,0,5 60426,0,@13748 60458,0,0 60499,0,@13128 60504,0,1 60509,1,@6475 60520,1,@6476 60555,0,1 60564,0,0 60603,0,3 60636,0,0 60671,0,@10037 60678,0,@10472 60685,0,@10474 60694,0,5 60729,0,@13749 60761,0,0 60802,0,@13128 60807,0,1 60812,1,@6475 60823,1,@6476 60858,0,1 60867,0,0 60906,0,3 60939,0,0 60974,0,@10037 60981,0,@10472 60988,0,@10474 60997,0,5 61032,0,@13750 61064,0,0 61105,0,@13128 61110,0,1 61115,1,@6475 61126,1,@6476 61161,0,1 61170,0,0 61209,0,3 61242,0,0 61277,0,@10037 61284,0,@10472 61291,0,@10474 61300,0,5 61335,0,@13751 61367,0,0 61408,0,@13128 61413,0,1 61418,1,@6475 61429,1,@6476 61464,0,1 61473,0,0 61512,0,3 61545,0,0 61580,0,@10037 61587,0,@10472 61594,0,@10474 61603,0,5 61638,0,@13752 61670,0,0 61711,0,@13128 61716,0,1 61721,1,@6475 61732,1,@6476 61767,0,1 61776,0,0 61815,0,3 61848,0,0 61883,0,@10037 61890,0,@10472 61897,0,@10474 61906,0,5 61941,0,@13753 61974,0,0 62141,1,@6624 62174,0,@10037 62185,0,@13747 62192,0,0 62198,0,5 62204,1,@6621 62215,1,@6623 62250,0,1 62259,0,0 62298,0,3 62311,0,@13754 62318,0,10 62323,1,@4893 62357,0,0 62364,0,@13784 62371,0,@10037 62378,0,0 62385,0,@9473 62423,0,@10037 62433,0,@10184 62439,0,@13785 62481,0,@13785 62488,0,@10267 62496,1,@4989 62508,0,@13708 62569,0,0 62578,0,6 62611,0,@13710 62648,0,@10072 62681,0,0 62690,0,20 62729,0,0 62736,0,1 62746,1,@4980 62753,0,@10767 62760,0,0 62765,1,@5052 62772,0,0 62811,0,1 62816,0,0 62877,0,0 62884,0,0 62893,0,1 62926,0,@13786 62967,0,@10037 62974,0,0 62980,0,@13788 63021,0,0 63061,0,@13788 63094,0,@10037 63105,0,@13788 63112,0,0 63118,0,5 63124,0,@13708 63185,0,0 63194,0,6 63227,0,@13710 63264,0,@10072 63297,0,0 63306,0,20 63345,0,0 63352,0,1 63362,1,@4980 63369,0,@10767 63376,0,0 63381,1,@5052 63388,0,0 63427,0,1 63432,0,0 63493,0,0 63500,0,0 63509,0,1 63542,0,@13789 63583,0,@10037 63590,0,0 63596,0,@13791 63637,0,0 63677,0,@13791 63710,0,@10037 63721,0,@13791 63728,0,0 63734,0,5 63740,0,@13708 63801,0,0 63810,0,6 63843,0,@13710 63880,0,@10072 63913,0,0 63922,0,20 63961,0,0 63968,0,1 63978,1,@4980 63985,0,@10767 63992,0,0 63997,1,@5052 64004,0,0 64043,0,1 64048,0,0 64109,0,0 64116,0,0 64125,0,1 64158,0,@13792 64199,0,@10037 64206,0,0 64212,0,@13794 64253,0,0 64293,0,@13794 64326,0,@10037 64337,0,@13794 64344,0,0 64350,0,5 64356,0,@13708 64417,0,0 64426,0,6 64459,0,@13710 64496,0,@10072 64529,0,0 64538,0,20 64577,0,0 64584,0,1 64594,1,@4980 64601,0,@10767 64608,0,0 64613,1,@5052 64620,0,0 64659,0,1 64664,0,0 64725,0,0 64732,0,0 64741,0,1 64774,0,@13795 64815,0,@10037 64822,0,0 64828,0,@13797 64869,0,0 64909,0,@13797 64942,0,@10037 64953,0,@13797 64960,0,0 64966,0,5 64972,0,@13708 65033,0,0 65042,0,6 65075,0,@13710 65112,0,@10072 65145,0,0 65154,0,20 65193,0,0 65200,0,1 65210,1,@4980 65217,0,@10767 65224,0,0 65229,1,@5052 65236,0,0 65275,0,1 65280,0,0 65341,0,0 65348,0,0 65357,0,1 65390,0,@13798 65431,0,@10037 65438,0,0 65444,0,@13800 65485,0,0 65525,0,@13800 65558,0,@10037 65569,0,@13800 65576,0,0 65582,0,5 65588,0,@13708 65649,0,0 65658,0,6 65691,0,@13710 65728,0,@10072 65761,0,0 65770,0,20 65809,0,0 65816,0,1 65826,1,@4980 65833,0,@10767 65840,0,0 65845,1,@5052 65852,0,0 65891,0,1 65896,0,0 65957,0,0 65964,0,0 65973,0,1 66006,0,@13801 66047,0,@10037 66054,0,0 66060,0,@13803 66101,0,0 66141,0,@13803 66174,0,@10037 66185,0,@13803 66192,0,0 66198,0,5 66204,0,@13708 66265,0,0 66274,0,6 66307,0,@13710 66344,0,@10072 66377,0,0 66386,0,20 66425,0,0 66432,0,1 66442,1,@4980 66449,0,@10767 66456,0,0 66461,1,@5052 66468,0,0 66507,0,1 66512,0,0 66573,0,0 66580,0,0 66589,0,1 66622,0,@13804 66663,0,@10037 66670,0,0 66676,0,@13806 66708,0,@10037 66721,0,@13806 66728,0,0 66734,0,5 66766,0,0 66807,0,@13807 66842,0,@13128 66847,0,1 66852,1,@6475 66863,1,@6476 66898,0,1 66907,0,0 66946,0,3 66981,0,@13808 67013,0,0 67089,0,@13128 67094,0,1 67099,1,@6475 67110,1,@6476 67145,0,1 67154,0,0 67193,0,3 67228,0,@13809 67260,0,0 67301,0,@13807 67336,0,@13128 67341,0,1 67346,1,@6475 67357,1,@6476 67392,0,1 67401,0,0 67440,0,3 67475,0,@13810 67507,0,0 67583,0,@13128 67588,0,1 67593,1,@6475 67604,1,@6476 67639,0,1 67648,0,0 67687,0,3 67722,0,@13811 67754,0,0 67795,0,@13128 67800,0,1 67805,1,@6475 67816,1,@6476 67851,0,1 67860,0,0 67899,0,3 67934,0,@13812 67966,0,0 68012,0,1 68017,1,@6475 68028,1,@6476 68063,0,1 68072,0,0 68111,0,3 68146,0,@13813 68178,0,0 68257,0,@10239 68327,0,@13128 68332,0,1 68337,1,@6475 68348,1,@6476 68383,0,1 68392,0,0 68431,0,3 68466,0,@13814 68498,0,0 68574,0,@13128 68579,0,1 68584,1,@6475 68595,1,@6476 68630,0,1 68639,0,0 68678,0,3 68713,0,@13815 68746,0,0 68978,0,0 69011,0,@9455 69049,0,0 69054,1,@6626 69076,1,@6650 69241,0,@13806 69274,0,0 69314,0,@10037 69321,0,@10472 69328,0,@10474 69337,0,5 69370,0,0 69409,0,@10037 69416,0,@10472 69423,0,@10474 69432,0,5 69465,0,@13848 69503,0,1 69508,1,@6475 69519,1,@6476 69554,0,1 69563,0,0 69602,0,3 69638,0,0 69644,0,2 69677,0,@13849 69686,0,@10184 69722,0,@10037 69729,0,0 69735,0,@13851 69776,0,0 69816,0,@13851 69849,0,@10037 69860,0,@13851 69867,0,0 69873,0,5 69905,0,0 70016,0,@13128 70021,0,1 70026,1,@6475 70037,1,@6476 70072,0,1 70081,0,0 70120,0,3 70162,0,2 70203,0,2 70239,0,@13852 70245,0,@13888 70277,0,0 70388,0,@13128 70393,0,1 70398,1,@6475 70409,1,@6476 70444,0,1 70453,0,0 70492,0,3 70534,0,2 70576,0,2 70612,0,@13889 70618,0,@13895 70650,0,0 70764,0,@10239 70834,0,@13128 70839,0,1 70844,1,@6475 70855,1,@6476 70890,0,1 70899,0,0 70938,0,3 70980,0,2 71022,0,2 71058,0,@13896 71064,0,@13902 71096,0,0 71142,0,1 71147,1,@6475 71158,1,@6476 71193,0,1 71202,0,0 71241,0,3 71283,0,2 71325,0,2 71361,0,@13903 71367,0,@13909 71399,0,0 71510,0,@13128 71515,0,1 71520,1,@6475 71531,1,@6476 71566,0,1 71575,0,0 71614,0,3 71656,0,2 71698,0,2 71734,0,@13910 71740,0,@13925 71785,0,2 71827,0,2 71863,0,@13926 71869,0,@13929 71908,0,@13930 71914,0,@13931 71920,0,@13932 71925,0,1 71930,1,@6475 71941,1,@6476 71976,0,1 71985,0,0 72024,0,3 72057,0,@13097 72066,0,2 72099,0,0 72134,0,@10037 72141,0,@10635 72148,0,@10638 72157,0,5 72190,0,@13097 72199,0,2 72235,0,@13933 72241,0,@13937 72247,0,@13932 72252,0,1 72257,1,@6475 72268,1,@6476 72303,0,1 72312,0,0 72351,0,3 72384,0,@13097 72393,0,2 72426,0,0 72461,0,@10037 72468,0,@10635 72475,0,@10638 72484,0,5 72517,0,@13097 72526,0,2 72562,0,@13938 72568,0,@13940 72574,0,@13932 72579,0,1 72584,1,@6475 72595,1,@6476 72630,0,1 72639,0,0 72678,0,3 72711,0,@13941 72720,0,2 72753,0,0 72788,0,@10037 72795,0,@10635 72802,0,@10638 72811,0,5 72844,0,@13097 72853,0,2 72889,0,@13942 72895,0,@13945 72901,0,@13946 72906,0,1 72911,1,@6475 72922,1,@6476 72957,0,1 72966,0,0 73005,0,3 73038,0,@13097 73047,0,2 73080,0,0 73115,0,@10037 73122,0,@10635 73129,0,@10638 73138,0,5 73171,0,@13097 73180,0,2 73216,0,@13950 73222,0,@13952 73255,0,0 73651,0,0 73660,0,6 73695,0,1 73728,0,0 73735,0,0 73742,0,@10037 73755,0,2 73823,0,@13953 73830,0,@13956 73919,0,@14078 73926,0,@14081 74008,0,@10423 74041,0,9999 74089,0,6 74127,0,2 74160,0,0 74167,0,0 74174,0,@10037 74184,0,@14333 74191,0,2 74197,0,@14334 74236,0,@14334 74243,0,@10423 74276,0,9999 74324,0,6 74357,0,@13128 74366,0,2 74399,0,0 74406,0,0 74413,0,@10037 74423,0,@14335 74430,0,2 74436,0,@14336 74475,0,@14336 74482,0,@10423 74515,0,9999 74563,0,6 74596,0,@13326 74603,0,1 74608,1,@6475 74619,1,@6476 74654,0,1 74663,0,0 74702,0,3 74735,0,@14204 74744,0,2 74777,0,0 74784,0,0 74791,0,@10037 74801,0,@13340 74808,0,2 74814,0,@14337 74853,0,@14337 74860,0,@10423 74893,0,9999 74938,0,6 74943,0,@10423 74976,0,9999 75021,0,6 75054,0,@14204 75063,0,2 75101,0,2 75137,0,@10146 75143,0,2 75176,0,@13097 75185,0,2 75218,0,0 75225,0,0 75232,0,@10037 75242,0,@12868 75249,0,2 75255,0,@14338 75294,0,@14338 75301,0,@10423 75334,0,9999 75379,0,6 75384,0,@10423 75417,0,9999 75462,0,6 75500,0,2 75533,0,@14339 75542,0,2 75575,0,0 75582,0,0 75589,0,@10037 75599,0,@10762 75606,0,2 75612,0,@14340 75654,0,@14340 75668,0,@14341 75679,0,@14349 75686,0,10 75691,1,@4893 75725,0,0 75732,0,@14353 75739,0,@10037 75746,0,0 75753,0,@9473 75791,0,@10037 75801,0,@10184 75807,0,@14354 75849,0,@14354 75856,0,@10267 75864,1,@4989 75876,0,@14355 75937,0,0 75946,0,6 75952,0,0 75957,1,@4975 75965,0,0 75970,1,@6742 76005,0,1 76012,0,0 76019,0,0 76033,0,0 76040,0,@14357 76046,0,@10566 76081,0,12 76087,0,0 76092,1,@4975 76100,0,0 76105,1,@6743 76140,0,1 76147,0,0 76154,0,0 76168,0,0 76175,0,@14358 76181,0,@10066 76216,0,12 76249,0,0 76350,0,@10072 76383,0,0 76392,0,20 76431,0,0 76438,0,1 76448,1,@4980 76455,0,@10767 76462,0,0 76467,1,@5052 76474,0,0 76513,0,1 76518,0,@10423 76551,0,9999 76622,0,0 76629,0,0 76690,0,0 76697,0,1 76706,0,1 76739,0,@14359 76780,0,@10037 76789,0,@14360 76830,0,0 76870,0,@14360 76877,0,@13708 76938,0,0 76947,0,6 76980,0,@13710 77017,0,@10072 77050,0,0 77059,0,20 77098,0,0 77105,0,1 77115,1,@4980 77122,0,@10767 77129,0,0 77134,1,@5052 77141,0,0 77180,0,1 77185,0,0 77246,0,0 77253,0,0 77262,0,1 77295,0,@14361 77336,0,@10037 77343,0,0 77349,0,@14362 77390,0,0 77430,0,@14362 77463,0,@10037 77474,0,@14362 77481,0,0 77487,0,5 77493,0,@10423 77526,0,9999 77571,0,6 77603,0,0 77641,0,@10037 77655,0,@14360 77664,0,5 77709,0,2 77747,0,2 77779,0,0 77790,1,@6468 77805,0,@14363 77815,0,0 77845,0,@9455 77872,0,0 77877,1,@4975 77901,0,@10224 77911,0,0 77920,1,@6745 77955,0,1 77962,0,0 77969,0,0 77987,0,0 77994,0,@10237 78000,0,@14363 78035,0,12 78070,0,1 78103,0,0 78110,0,0 78117,0,@10037 78131,0,2 78137,0,@14366 78179,0,@14366 78212,0,0 78250,0,@10037 78264,0,@14360 78273,0,5 78318,0,2 78356,0,2 78388,0,0 78399,1,@6468 78414,0,@14367 78424,0,0 78454,0,@9455 78481,0,0 78486,1,@4975 78510,0,@10224 78520,0,0 78529,1,@6747 78564,0,1 78571,0,0 78578,0,0 78596,0,0 78603,0,@10237 78609,0,@14367 78644,0,12 78679,0,1 78712,0,0 78719,0,0 78726,0,@10037 78740,0,2 78746,0,@14370 78788,0,@14370 78821,0,0 78859,0,@10037 78873,0,@14360 78882,0,5 78915,0,@10239 78928,0,2 78966,0,2 78998,0,0 79009,1,@6468 79024,0,@14371 79034,0,0 79064,0,@9455 79091,0,0 79096,1,@4975 79120,0,@10224 79130,0,0 79139,1,@6749 79174,0,1 79181,0,0 79188,0,0 79206,0,0 79213,0,@10237 79219,0,@14371 79254,0,12 79289,0,1 79322,0,0 79329,0,0 79336,0,@10037 79350,0,2 79356,0,@14374 79398,0,@14374 79405,0,@13708 79466,0,0 79475,0,6 79508,0,@13710 79545,0,@10072 79578,0,0 79587,0,20 79629,0,0 79636,0,1 79646,1,@4980 79653,0,@10767 79660,0,0 79665,1,@5052 79672,0,0 79711,0,1 79716,0,0 79777,0,0 79784,0,0 79793,0,1 79826,0,@14375 79867,0,@10037 79874,0,0 79880,0,@14377 79912,0,@10037 79925,0,@14377 79932,0,0 79938,0,5 79970,0,0 80008,0,@10037 80015,0,@10472 80022,0,@10474 80031,0,5 80064,0,0 80101,0,@13807 80106,0,1 80111,1,@6475 80122,1,@6476 80157,0,1 80166,0,0 80205,0,3 80241,0,0 80247,0,2 80280,0,@14378 80289,0,@10184 80325,0,@10037 80332,0,0 80338,0,@14380 80371,0,@10037 80381,0,@14380 80388,0,0 80394,0,5 80435,0,0 80472,0,@14380 80511,0,@13097 80517,0,2 80552,0,@14381 80591,0,@13097 80597,0,2 80632,0,@14382 80671,0,@13097 80677,0,2 80712,0,@14383 80751,0,@13097 80757,0,2 80792,0,@14384 80798,0,@14385 80803,0,1 80808,1,@6475 80819,1,@6476 80854,0,1 80863,0,0 80902,0,3 80937,0,@14388 80976,0,@14389 81009,0,0 81046,0,@14390 81081,0,@14392 81147,0,@14394 81246,0,@14397 81345,0,@14399 81380,0,@14401 81415,0,@14403 81450,0,@14407 81456,0,0 81489,0,@9455 81527,0,0 81532,1,@6626 81554,1,@6750 81719,0,@14377 81752,0,0 81791,0,@10037 81798,0,@10472 81805,0,@10474 81814,0,5 81847,0,0 81884,0,@14409 81924,0,1 81929,1,@6475 81940,1,@6476 81975,0,1 81984,0,0 82023,0,3 82055,0,0 82094,0,@10037 82101,0,@10635 82108,0,@10638 82117,0,5 82157,0,@13097 82163,0,2 82196,0,0 82231,0,@10037 82238,0,@10635 82245,0,@10638 82254,0,5 82287,0,0 82325,0,1 82330,1,@6475 82341,1,@6476 82376,0,1 82385,0,0 82424,0,3 82463,0,2 82504,0,@6751 82537,0,0 82546,0,6 82581,0,1 82614,0,0 82621,0,0 82628,0,@10037 82635,0,@14339 82645,0,2 82651,0,@19455 82693,0,@19455 82735,0,@9144 82768,0,0 82777,0,6 82810,0,0 82849,0,@10037 82856,0,@10472 82863,0,@10474 82872,0,5 82905,0,@14339 82914,0,2 82949,0,1 82982,0,0 82989,0,0 82996,0,@10037 83009,0,2 83015,0,@19457 83057,0,@19457 83096,0,0 83103,0,0 83110,0,@10037 83121,0,@19458 83128,0,2 83134,0,@19462 83169,0,@19462 83221,1,@9147 83523,0,0 83532,0,6 83567,0,1 83600,0,0 83607,0,0 83614,0,@10037 83631,0,2 83637,0,@19470 83679,0,@19470 83686,0,@10423 83719,0,9999 83764,0,6 83771,0,@11957 83802,0,0 83846,0,1 83851,1,@6475 83862,1,@6476 83897,0,1 83906,0,0 83945,0,3 83986,0,2 84031,0,2 84063,0,0 84109,0,1 84114,1,@6475 84125,1,@6476 84160,0,1 84169,0,0 84208,0,3 84241,0,@10239 84250,0,2 84291,0,0 84298,0,0 84305,0,@10037 84319,0,@14804 84326,0,2 84332,0,@9548 84367,0,@9548 84409,0,0 84416,0,0 84423,0,@10037 84437,0,@14804 84444,0,2 84450,0,@9550 84485,0,@9550 84527,0,0 84534,0,0 84541,0,@10037 84555,0,@14804 84562,0,2 84568,0,@9547 84603,0,@9547 84645,0,0 84652,0,0 84659,0,@10037 84673,0,@14804 84680,0,2 84686,0,@9631 84721,0,@9631 84763,0,0 84770,0,0 84777,0,@10037 84791,0,@14804 84798,0,2 84804,0,@13432 84839,0,@13432 84881,0,0 84888,0,0 84895,0,@10037 84908,0,@14804 84915,0,2 84921,0,@13333 84956,0,@13333 84998,0,0 85005,0,0 85012,0,@10037 85025,0,@14804 85032,0,2 85038,0,@10958 85073,0,@10958 85115,0,0 85122,0,0 85129,0,@10037 85142,0,@14804 85149,0,2 85155,0,@9567 85190,0,@9567 85232,0,0 85239,0,0 85246,0,@10037 85261,0,@14804 85268,0,2 85274,0,@9565 85309,0,@9565 85351,0,0 85358,0,0 85365,0,@10037 85378,0,@14804 85385,0,2 85391,0,@13342 85426,0,@13342 85468,0,0 85475,0,0 85482,0,@10037 85495,0,@14804 85502,0,2 85508,0,@13343 85543,0,@13343 85585,0,0 85592,0,0 85599,0,@10037 85614,0,@14804 85621,0,2 85627,0,@9552 85662,0,@9552 85669,0,@13756 85674,1,@6619 85709,0,@13807 85717,0,@19471 85722,1,@6619 85757,0,@10239 85765,0,@19472 85770,1,@6619 85805,0,@14204 85813,0,@13955 85818,1,@6619 85853,0,@19473 85888,0,0 85991,1,@6621 86002,1,@6623 86037,0,1 86046,0,0 86085,0,3 86118,0,@13097 86127,0,2 86166,0,@13097 86172,0,2 86205,0,0 86240,0,@10037 86247,0,@10635 86254,0,@10638 86263,0,5 86269,0,@19476 86274,1,@6619 86316,0,@19477 86321,1,@6619 86364,0,@19478 86369,1,@6619 86439,0,0 86514,1,@6621 86525,1,@6623 86560,0,1 86569,0,0 86608,0,3 86651,0,571 86657,0,@19479 86691,0,@10037 86705,0,@14360 86712,0,@19480 86718,0,5 86754,0,@19482 86760,0,@19487 86794,0,@10037 86808,0,@14360 86815,0,@19480 86821,0,5 86857,0,@19488 86863,0,@19492 86897,0,@10037 86911,0,@14360 86918,0,@14406 86924,0,5 86960,0,@19493 86966,0,@19497 87000,0,@10037 87014,0,@14360 87021,0,@19480 87027,0,5 87063,0,@19498 87069,0,@19502 87103,0,@10037 87117,0,@14360 87124,0,@13326 87130,0,5 87166,0,@19503 87172,0,@19507 87206,0,@10037 87220,0,@14360 87227,0,@13949 87233,0,5 87269,0,@19508 87275,0,@19512 87309,0,@10037 87323,0,@14360 87330,0,@13949 87336,0,5 87372,0,@19513 87378,0,@19517 87412,0,@10037 87426,0,@14360 87433,0,@13949 87439,0,5 87475,0,@19518 87481,0,@19522 87515,0,@10037 87529,0,@14360 87536,0,@13949 87542,0,5 87578,0,@19523 87584,0,@19527 87618,0,@10037 87632,0,@14360 87639,0,@13949 87645,0,5 87681,0,@19528 87687,0,@19532 87721,0,@10037 87735,0,@14360 87742,0,@13949 87748,0,5 87784,0,@19533 87790,0,@19537 87824,0,@10037 87838,0,@14360 87845,0,@13949 87851,0,5 87887,0,@19538 87893,0,@19542 87927,0,@10037 87941,0,@14360 87948,0,@13949 87954,0,5 87990,0,@19543 87996,0,@19547 88030,0,@10037 88044,0,@14360 88051,0,@19480 88057,0,5 88093,0,@19548 88099,0,@19552 88133,0,@10037 88147,0,@14360 88154,0,@13326 88160,0,5 88196,0,@19553 88202,0,@19557 88236,0,@10037 88250,0,@14360 88257,0,@13326 88263,0,5 88299,0,@19558 88305,0,@19562 88339,0,@10037 88353,0,@14360 88360,0,@13326 88366,0,5 88402,0,@19563 88408,0,@19567 88442,0,@10037 88456,0,@14360 88463,0,@19568 88469,0,5 88505,0,@19570 88511,0,@19574 88545,0,@10037 88559,0,@14360 88566,0,@19568 88572,0,5 88608,0,@19575 88614,0,@19579 88648,0,0 88687,0,@10037 88701,0,@14360 88710,0,5 88746,0,@19580 88752,0,@19584 88786,0,0 88821,0,@10037 88835,0,@14360 88844,0,5 88880,0,@19585 88886,0,@19589 88918,0,@10037 88932,0,@14360 88939,0,@13949 88945,0,5 88981,0,@19590 88987,0,@19594 89020,0,@10037 89034,0,@14360 89041,0,@13949 89047,0,5 89083,0,@19595 89089,0,@19599 89122,0,@10037 89136,0,@14360 89143,0,@13949 89149,0,5 89185,0,@19600 89191,0,@19604 89224,0,@10037 89238,0,@14360 89245,0,@13949 89251,0,5 89287,0,@19605 89293,0,@19609 89326,0,@10037 89340,0,@14360 89347,0,@13326 89353,0,5 89389,0,@19610 89395,0,@19614 89428,0,0 90297,0,@19615 90360,0,0 90369,0,6 90404,0,1 90437,0,0 90444,0,0 90451,0,@10037 90464,0,2 90532,0,10 90537,1,@4893 90571,0,0 90578,0,@19618 90585,0,@10037 90592,0,0 90599,0,@9473 90637,0,@10037 90647,0,@10184 90653,0,@19619 90695,0,@19619 90702,0,@10267 90710,1,@4989 90722,0,7 90770,0,0 90775,0,24 90787,0,@19620 90792,0,16 90810,0,@19621 90815,0,8 90840,0,@13708 90901,0,0 90910,0,6 90943,0,@13710 90980,0,@10072 91013,0,0 91022,0,20 91061,0,0 91068,0,1 91078,1,@4980 91085,0,@10767 91092,0,0 91097,1,@5052 91104,0,0 91143,0,1 91176,0,@10144 91183,0,@10039 91191,0,0 91252,0,0 91259,0,0 91268,0,1 91338,0,@10037 91345,0,0 91351,0,@19621 91392,0,0 91432,0,@19621 91465,0,@10037 91476,0,@19621 91483,0,0 91489,0,5 91495,0,8 91543,0,0 91552,0,13 91557,0,@19620 91562,0,16 91580,0,@13794 91585,0,11 91610,0,@13708 91671,0,0 91680,0,6 91713,0,@13710 91750,0,@10072 91783,0,0 91792,0,20 91831,0,0 91838,0,1 91848,1,@4980 91855,0,@10767 91862,0,0 91867,1,@5052 91874,0,0 91913,0,1 91946,0,@10144 91953,0,@10039 91961,0,0 92022,0,0 92029,0,0 92038,0,1 92108,0,@10037 92115,0,0 92121,0,@13794 92162,0,0 92202,0,@13794 92235,0,@10037 92246,0,@13794 92253,0,0 92259,0,5 92265,0,8 92313,0,0 92322,0,13 92327,0,@19620 92332,0,16 92350,0,@19622 92355,0,11 92380,0,@13708 92441,0,0 92450,0,6 92483,0,@13710 92520,0,@10072 92553,0,0 92562,0,20 92601,0,0 92608,0,1 92618,1,@4980 92625,0,@10767 92632,0,0 92637,1,@5052 92644,0,0 92683,0,1 92716,0,@10144 92723,0,@10039 92731,0,0 92792,0,0 92799,0,0 92808,0,1 92878,0,@10037 92885,0,0 92891,0,@19622 92932,0,0 92972,0,@19622 93005,0,@10037 93016,0,@19622 93023,0,0 93029,0,5 93061,0,@14204 93074,0,2 93110,0,@10820 93116,0,@14080 93161,0,2 93197,0,@19623 93203,0,@19625 93235,0,0 93274,0,@10037 93281,0,@10472 93288,0,@10474 93297,0,5 93330,0,0 93410,0,1 93415,1,@6475 93426,1,@6476 93461,0,1 93470,0,0 93509,0,3 93549,0,@13097 93555,0,2 93593,0,2 93629,0,@19626 93635,0,@19628 93667,0,0 93706,0,@10037 93713,0,@10635 93720,0,@10638 93729,0,5 93771,0,2 93807,0,@19629 93813,0,@19631 93845,0,0 93884,0,@10037 93891,0,@10472 93898,0,@10474 93907,0,5 93940,0,0 94015,0,@13128 94093,0,1 94098,1,@6475 94109,1,@6476 94144,0,1 94153,0,0 94192,0,3 94234,0,2 94270,0,@19632 94276,0,@19634 94308,0,0 94347,0,@10037 94354,0,@10472 94361,0,@10474 94370,0,5 94403,0,0 94478,0,@13128 94556,0,1 94561,1,@6475 94572,1,@6476 94607,0,1 94616,0,0 94655,0,3 94697,0,2 94733,0,@19635 94739,0,@19637 94771,0,0 94810,0,@10037 94817,0,@10472 94824,0,@10474 94833,0,5 94866,0,0 94908,0,1 94913,1,@6475 94924,1,@6476 94959,0,1 94968,0,0 95007,0,3 95049,0,2 95085,0,@19638 95091,0,@19640 95139,0,2 95175,0,@19641 95181,0,@19642 95229,0,2 95265,0,@19643 95271,0,@19644 95319,0,2 95355,0,@19645 95361,0,@19646 95393,0,0 95442,0,1 95447,1,@6475 95458,1,@6476 95493,0,1 95502,0,0 95541,0,3 95583,0,2 95619,0,@19647 95625,0,@19649 95657,0,0 95706,0,1 95711,1,@6475 95722,1,@6476 95757,0,1 95766,0,0 95805,0,3 95847,0,2 95883,0,@19650 95889,0,@19652 95921,0,0 96002,0,1 96007,1,@6475 96018,1,@6476 96053,0,1 96062,0,0 96101,0,3 96143,0,2 96179,0,@19653 96185,0,@19654 96217,0,0 96263,0,1 96268,1,@6475 96279,1,@6476 96314,0,1 96323,0,0 96362,0,3 96404,0,2 96440,0,@19655 96446,0,@19657 96478,0,0 96517,0,@10037 96524,0,@10472 96531,0,@10474 96540,0,5 96582,0,2 96618,0,@19658 96624,0,@19660 96656,0,0 96705,0,1 96710,1,@6475 96721,1,@6476 96756,0,1 96765,0,0 96804,0,3 96837,0,0 96872,0,@10037 96879,0,@10472 96886,0,@10474 96895,0,5 96928,0,0 96970,0,1 96975,1,@6475 96986,1,@6476 97021,0,1 97030,0,0 97069,0,3 97111,0,2 97147,0,@19661 97153,0,@19663 97185,0,0 97224,0,@10037 97231,0,@10472 97238,0,@10474 97247,0,5 97280,0,0 97322,0,1 97327,1,@6475 97338,1,@6476 97373,0,1 97382,0,0 97421,0,3 97463,0,2 97499,0,@19664 97505,0,@19666 97537,0,0 97586,0,1 97591,1,@6475 97602,1,@6476 97637,0,1 97646,0,0 97685,0,3 97718,0,0 97753,0,@10037 97760,0,@10472 97767,0,@10474 97776,0,5 97818,0,2 97854,0,@19667 97860,0,@19669 97892,0,0 97931,0,@10037 97938,0,@10472 97945,0,@10474 97954,0,5 97996,0,2 98032,0,@19670 98038,0,@19672 98083,0,2 98119,0,@19673 98125,0,@19674 98157,0,0 98241,0,1 98246,1,@6475 98257,1,@6476 98292,0,1 98301,0,0 98340,0,3 98382,0,2 98418,0,@19675 98424,0,@19677 98470,0,2 98506,0,@19678 98512,0,@19679 98545,0,0 99292,0,0 99301,0,6 99336,0,1 99369,0,0 99376,0,0 99383,0,@10037 99396,0,2 99483,0,@13128 99496,0,2 99532,0,@19680 99538,0,@19682 99570,0,@13326 99581,0,1 99586,1,@6475 99597,1,@6476 99632,0,1 99641,0,0 99680,0,3 99713,0,@14204 99722,0,2 99758,0,@19683 99764,0,@14334 99796,0,0 99835,0,@10037 99842,0,@10635 99849,0,@10638 99858,0,5 99891,0,0 99928,0,@10146 99968,0,1 99973,1,@6475 99984,1,@6476 100019,0,1 100028,0,0 100067,0,3 100100,0,@14204 100109,0,2 100145,0,@19690 100151,0,@19698 100183,0,0 100222,0,@10037 100229,0,@10635 100236,0,@10638 100245,0,5 100278,0,0 100315,0,@10146 100355,0,1 100360,1,@6475 100371,1,@6476 100406,0,1 100415,0,0 100454,0,3 100487,0,@14204 100496,0,2 100532,0,@19699 100538,0,@19704 100583,0,2 100619,0,@19705 100625,0,@19707 100671,0,2 100707,0,@19708 100713,0,@19713 100746,0,0 100785,0,@10037 100792,0,@10472 100799,0,@10474 100808,0,5 100850,0,2 100886,0,@19714 100892,0,@19716 100925,0,@10239 100938,0,2 100974,0,@19717 100980,0,@19719 101013,0,@10239 101026,0,2 101062,0,@19720 101068,0,@19722 101101,0,0 101425,0,0 101434,0,6 101469,0,1 101502,0,0 101509,0,0 101516,0,@10037 101529,0,2 101616,0,@13128 101629,0,2 101665,0,@19723 101671,0,@19682 101703,0,0 101742,0,@10037 101749,0,@10635 101756,0,@10638 101765,0,5 101798,0,0 101835,0,@10146 101875,0,1 101880,1,@6475 101891,1,@6476 101926,0,1 101935,0,0 101974,0,3 102007,0,@14204 102016,0,2 102052,0,@19725 102058,0,@14334 102091,0,0 102130,0,@10037 102137,0,@10472 102144,0,@10474 102153,0,5 102195,0,2 102231,0,@19730 102237,0,@19716 102270,0,0 102405,0,0 102414,0,6 102449,0,1 102482,0,0 102489,0,0 102496,0,@10037 102509,0,2 102596,0,@13128 102609,0,2 102645,0,@19732 102651,0,@19682 102683,0,0 102722,0,@10037 102729,0,@10635 102736,0,@10638 102745,0,5 102778,0,0 102815,0,@10146 102855,0,1 102860,1,@6475 102871,1,@6476 102906,0,1 102915,0,0 102954,0,3 102987,0,@14204 102996,0,2 103032,0,@19734 103038,0,@14334 103084,0,2 103120,0,@19749 103126,0,@19713 103159,0,0 103198,0,@10037 103205,0,@10472 103212,0,@10474 103221,0,5 103263,0,2 103299,0,@19754 103305,0,@19716 103351,0,2 103387,0,@19756 103393,0,@19780 103426,0,0 103623,0,0 103632,0,6 103667,0,1 103700,0,0 103707,0,0 103714,0,@10037 103727,0,2 103814,0,@13128 103827,0,2 103863,0,@19781 103869,0,@19682 103901,0,0 103940,0,@10037 103947,0,@10635 103954,0,@10638 103963,0,5 103996,0,0 104033,0,@10146 104073,0,1 104078,1,@6475 104089,1,@6476 104124,0,1 104133,0,0 104172,0,3 104205,0,@14204 104214,0,2 104250,0,@19783 104256,0,@14334 104289,0,0 104328,0,@10037 104335,0,@10472 104342,0,@10474 104351,0,5 104393,0,2 104429,0,@19788 104435,0,@19716 104468,0,0 104603,0,0 104612,0,6 104647,0,1 104680,0,0 104687,0,0 104694,0,@10037 104707,0,2 104794,0,@13128 104807,0,2 104843,0,@19790 104849,0,@19682 104881,0,0 104920,0,@10037 104927,0,@10635 104934,0,@10638 104943,0,5 104976,0,0 105013,0,@10146 105053,0,1 105058,1,@6475 105069,1,@6476 105104,0,1 105113,0,0 105152,0,3 105185,0,@14204 105194,0,2 105230,0,@19792 105236,0,@14334 105282,0,2 105318,0,@19805 105324,0,@19713 105357,0,0 105396,0,@10037 105403,0,@10472 105410,0,@10474 105419,0,5 105461,0,2 105497,0,@19810 105503,0,@19716 105536,0,0 105706,0,0 105715,0,6 105750,0,1 105783,0,0 105790,0,0 105797,0,@10037 105810,0,2 105897,0,@13128 105909,0,2 105945,0,@19812 105951,0,@19682 105984,0,@14204 105994,0,2 106030,0,@19814 106036,0,@14334 106069,0,0 106172,0,0 106181,0,6 106216,0,1 106249,0,0 106256,0,0 106263,0,@10037 106276,0,2 106337,0,0 4908:D3,580|3b650c7305ff552ccd018b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707f40a28b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707181328b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707101428b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707081528b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707001628b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707f81628b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707f01728b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707ac2028b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707802228b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707542428b18b4d008d49f43b4d087305ff5528cd81894d00c741fc02000000894104c701282628b18b75008d76f43b75087305ff5528cd83897500c746fc02000000894604c706fc2728b18b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204c702d02928b18b45008d40c83b45087305ff5528cdc6894500c740fc0d0000008b5c24108958308b5c240c89582c8948288950248b54241889502089701c8b74241c8970188b7424148970148b7424208970108b342489700c8d6424045e8970088978045f8d6424188938c3f4000000|@10032,1,@148|41,0,@4909 77,0,@4915 113,0,@4917 149,0,@4919 185,0,@4921 221,0,@4923 257,0,@4925 293,0,@4931 329,0,@4934 365,0,@4937 400,0,@4940 435,0,@4943 470,0,@4946 4909:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c7004c0b28b1e9f3020000f40000|@10013,1,@109|56,0,@4910 61,1,@4913 4910:D3,140|3b650c7305ff552ccd058b42048b5a08e88b00000089c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb8c00c0b0753489cf81ff8c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@106|17,1,@4911 36,0,0 60,0,@4612 70,0,@4612 109,0,@9999 133,0,0 4911:D3,512|3b650c7305ff552ccd09538b3883ff0175138b5004ff70088b442404ff1289c2e9f60000008b70048b780c8b16ff378b442404ff1289c28b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642408b8783266b18b5d04ff238b3c248b7457fef7c6010000000f85a60000008b3eff76048b7424083bf77502eb328b7424088b368d3475010000008b1f89d98d1c5d010000003bf3753b8b7424088d76048d7f043bc9f3a674068d642404eb298b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c408c38d64240483fa0175118b3c248b7ffcc1e708c1ef0783cf01eb0289d783ef02710e8d642408b8f80466b18b5d04ff2389fa3b650c7305ff552ccd04e926ffffff8d642408b801000000c38b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b3c248b7457fef7c6010000000f85a60000008b3eff76048b7424083bf77502eb328b7424088b368d3475010000008b1f89d98d1c5d010000003bf3753b8b7424088d76048d7f043bc9f3a674068d642404eb298b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c408c38d64240483fa0175118b3c248b7ffcc1e708c1ef0783cf01eb0289d783ef02710e8d642408b8f80466b18b5d04ff2389fa3b650c7305ff552ccd04e926ffffff8d642408b801000000c3f4|@9993,1,@104|79,0,@9988 247,0,@9455 278,0,0 307,0,@9990 475,0,@9455 506,0,0 4912:D3,20|3b650c7305ff552ccd01b8183366b1c3f4000000|@9998,1,@105|11,0,@9996 4913:D3,1180|3b650c7305ff552ccd0950538b7d1c8b571083fa017507be01000000eb1c8b75008d76f83b75087305ff5528cd84897500c746fc010000008916568b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c706050000008b570489d783e70383ff037507b903000000eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070100000083e20d83fa017507b905000000eb2083fa057507b907000000eb1483fa097507b903000000eb05b90100000083f1028b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702030000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7d1c578b3c24ff77046a016a016a015483042404b8c43366b1bb01000000e813f4fdffff34248b5424088b7c24108b4710bfc43366b1f7c70100000075438b0f8b77048b1983fb0575298b7904f7c70100000075178b0783f8017f0e8d642424b8dc3366b18b5d04ff23eb05b801000000eb0e89f73b650c7305ff552ccd85ebb58b751c83f2fe2354240c8b3c240bfa897e048b7c24108b7f103bc77502eb05e8b90200008b3c2483e7098d64240483ff0975188d6424108b7d1c8b7f0c83ff017407e8f626feffeb00eb048d642410bf010000008b7424088b1683fa037502eb0c81ff419c00000f853302000033ff83c7fe89f689f0f00fc13e83ef0283ff010f8508020000ff7504bf280e28b181c74d030000578965048b542414b801000000ff1289c783c4045e8975045733f683c6028b54240c89d7f00fc13283c60283fe037502eb0f89ff89f8c70703000000e82826feff8b7d1c578b3c24ff77046a016a016a0154830424048b44241cbb01000000e8bdf2fdffff34248b542408f644241c01751b8b7c241c8b0783f8017f0e8d642428b8dc3366b18b5d04ff23eb05b8010000008b751c83f2fe2354240c8b3c240bfa897e048b7c24108b7f103bc77502eb05e8930100008b3c2483e7098d64240483ff0975188d6424108b7d1c8b7f0c83ff017407e8d025feffeb00eb048d6424105883c410c38b650483c4045f897d045033f683c6028b54240c89d7f00fc13283c60283fe037502eb0f89ff89f8c70703000000e85025feff8b7d1c578b3c24ff77046a016a016a0154830424048b44241cbb01000000e8e5f1fdffff34248b542408f644241c01751b8b7c241c8b0783f8017f0e8d642428b8dc3366b18b5d04ff23eb05b8010000008b751c83f2fe2354240c8b3c240bfa897e048b7c24108b7f103bc77502eb05e8bb0000008b3c2483e7098d64240483ff0975188d6424108b7d1c8b7f0c83ff017407e8f824feffeb00eb048d6424108b14248b3a89d28b720489d28b52088d6424048b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c583466b189500889700489388b5d04ff23e80e25feff3b650c7303ff552ce9affdffff89fe83c602710e8d642410b8f80466b18b5d04ff2389f73b650c7305ff552ccd80e98efdfffff40000|@10012,1,@108|24,0,0 93,0,2 111,0,1 118,0,0 153,0,0 166,0,2 178,0,3 190,0,1 197,0,0 235,0,1 268,0,0 359,0,@10004 364,0,0 369,1,@4807 388,0,@10004 435,0,@10006 447,0,0 499,1,@4914 534,1,@4841 547,0,0 566,0,20000 605,0,@4913 624,0,0 671,0,1 676,1,@4840 706,0,0 711,1,@4807 745,0,@10006 757,0,0 793,1,@4914 828,1,@4841 887,0,1 892,1,@4840 922,0,0 927,1,@4807 961,0,@10006 973,0,0 1009,1,@4914 1044,1,@4841 1104,0,@10010 1122,1,@4843 1151,0,@9455 4914:D3,44|b9747246b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@10009,1,@107|1,0,@19843 4915:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700701328b1e9cffafffff40000|@10013,1,@111|56,0,@4916 61,1,@4913 4916:D3,140|3b650c7305ff552ccd058b42048b5a08e867f8ffff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9400c0b0753489cf81ff9400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@110|17,1,@4911 36,0,0 60,0,@4613 70,0,@4613 109,0,@9999 133,0,0 4917:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700681428b1e9d7f9fffff40000|@10013,1,@113|56,0,@4918 61,1,@4913 4918:D3,140|3b650c7305ff552ccd058b42048b5a08e86ff7ffff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9c00c0b0753489cf81ff9c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@112|17,1,@4911 36,0,0 60,0,@4614 70,0,@4614 109,0,@9999 133,0,0 4919:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700601528b1e9dff8fffff40000|@10013,1,@115|56,0,@4920 61,1,@4913 4920:D3,140|3b650c7305ff552ccd058b42048b5a08e877f6ffff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fba400c0b0753489cf81ffa400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@114|17,1,@4911 36,0,0 60,0,@4615 70,0,@4615 109,0,@9999 133,0,0 4921:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700581628b1e9e7f7fffff40000|@10013,1,@117|56,0,@4922 61,1,@4913 4922:D3,140|3b650c7305ff552ccd058b42048b5a08e87ff5ffff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbac00c0b0753489cf81ffac00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@116|17,1,@4911 36,0,0 60,0,@4616 70,0,@4616 109,0,@9999 133,0,0 4923:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700501728b1e9eff6fffff40000|@10013,1,@119|56,0,@4924 61,1,@4913 4924:D3,140|3b650c7305ff552ccd058b42048b5a08e887f4ffff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbb400c0b0753489cf81ffb400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@118|17,1,@4911 36,0,0 60,0,@4617 70,0,@4617 109,0,@9999 133,0,0 4925:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700501828b1e9edf5fffff4|@10024,1,@125|66,0,@4926 71,1,@4913 4926:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7068c00c0b05689ff8b470489ff8b5f08e84cf3ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9c8000000f4000000|@10023,1,@124|38,0,0 54,0,@9574 60,0,@4612 76,1,@4911 114,0,0 135,1,@4927 168,1,@4928 4927:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff8c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@120|26,0,@4612 145,0,0 4928:D3,1184|3b650c7305ff552ccd09538b3883ff030f85a9010000ff7004ff7008ff700c8b3c24ff378b3c248b7ffcc1e708c1ef0783cf01578b7c24108b178b442414ff1289c38b74241c8b7d008d7ff43b7d087305ff5528cd48897d00c747fc020000008977048b7424148937578b442408e8410400008b7c240c8b3f83c702710e8d642418b8f80466b18b5d04ff238b74240c893e8b7c240c8b3f83ef016bff05710e8d642418b8f80466b18b5d04ff2383c7018b342483ee016bf604710e8d642418b8f80466b18b5d04ff2383c6013bfe0f8ede0000005f83ef016bff02710e8d642414b8f80466b18b5d04ff2383c701578b3c2483ff017d098d642418e9a80000008b3c2481ffffffff010f8d950000008b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707d81f28b18b34248b54240c89328b742414893e8b7c24088b7ffcc1e708c1ef0783cf0183ef02710e8d64241cb8f80466b18b5d04ff2357e9b70100008d642418b8383066b18b5d04ff238d642418b801000000c204008b3c248b3f8d1c7d0100000083fb01750e8d642404bf543566b1e98900000089df83c74489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874601000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf543566b1b9450000008d77048d7a04d1e9f3a489d95f8d77048d7a26d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf803566b1e98f00000089de83c63089f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f879b00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be803566b1b9310000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400ca03566b1897808c74004b83566b1c700cf0000008b5d04ff23b8780566b18b5d04ff238d642404b8780566b18b5d04ff238b3c2483ff017d0c8d642420b801000000c204008b7c240c8b77fcc1e608c1ee0783ce018b3c243bfe720e8d642420b8783266b18b5d04ff238b34248b7c240cff7477fef604240175158b3c248b3f8b378d147501000000be01000000eb2a8d6424048b342483ee02710e8d642420b8f80466b18b5d04ff238934243b650c7303ff552ce977ffffff83fa01757e89f08b7c240c83ff01750e8d642424b8842f66b18b5d04ff23d1e88b7c240cd1ef33d2f7f78d1c5501000000f6c301740783fb017d12eb120fb67bff8d3c7d0100000083ff237402eb0cb8b02f66b1e80642feff89c3f6c3017415ff34248b44240ce8630000008d642404e965ffffff8d642424b8d02f66b18b5d04ff2389d383eb0289d183c106d1e90fb60c0f8d0c4d0100000089f06bc00783e8068d4c01ff89da89ce3b650c7305ff552ccdc4e947fffffff400|@10022,1,@123|111,1,@4929 131,0,@9455 165,0,@9455 193,0,@9455 227,0,@9455 262,0,16777215 321,0,0 361,0,@4930 406,0,@9455 426,0,@9964 440,0,0 469,0,@10018 489,0,4 510,0,16777215 568,0,0 577,0,@10018 582,0,34 630,0,@10019 650,0,4 671,0,16777215 729,0,0 755,0,@10019 760,0,24 811,0,@10020 821,0,@10021 827,0,103 837,0,@9465 851,0,@9465 873,0,0 908,0,@9988 949,0,0 972,0,@9455 1018,0,@9956 1077,0,@9958 1082,1,@4895 1101,1,@4929 1119,0,@9960 4929:D3,332|3b650c7305ff552ccd09508b7c2408f7c70100000075088b7c2408ff37eb0c8d642404b801000000c204008b5424048b7afcc1e708c1ef0783cf013bdf720e8d642408b8783266b18b5d04ff2389d28b7c5afef7c7010000000f85b10000008b3f3b3c2475068d642404eb338b378d3475010000008b0c248b098d0c4d010000003bf175508b34248b0e8d77048b3c248d7f043bc9f3a67402eb3a8d64240489d28b7afcc1e708c1ef0783cf013bdf720e8d642404b8003566b18b5d04ff238b7c240889d2897c5afe8d642404b801000000c2040083fb01751089d28b7afcc1e708c1ef0783cf01eb0289df83ef02710e8d642408b8f80466b18b5d04ff2389fb3b650c7305ff552ccd08e91bffffff8d64240489d68b7efcc1e708c1ef0783cf013bdf720e8d642404b8003566b18b5d04ff238b7c240889f6897c5efe8d642404b801000000c20400f400|@10017,1,@121|36,0,0 68,0,@9988 182,0,@10015 206,0,0 246,0,@9455 299,0,@10015 323,0,0 4930:D3,192|3b650c7305ff552ccd05528b388d347d01000000bf0100000083fe01756b89f88b3c248b570489d683fa01750e8d642404b8842f66b18b5d04ff2389f78d642404d1e8d1ef33d2f7f78d1c5501000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8b63ffeffa8017401c3b8d02f66b18b5d04ff2389f183e90289f283c206d1ea0fb614108d14550100000089fb6bdb0783eb068d541aff89ce89d73b650c7305ff552ccdc1e95afffffff4|@9963,1,@122|21,0,0 50,0,@9956 113,0,@9958 118,1,@4895 128,0,@9960 4931:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7000c2128b1e931edfffff4|@10024,1,@128|66,0,@4932 71,1,@4913 4932:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069400c0b05689ff8b470489ff8b5f08e890eaffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e90cf8fffff4000000|@10023,1,@127|38,0,0 54,0,@9574 60,0,@4613 76,1,@4911 114,0,0 135,1,@4933 168,1,@4928 4933:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@126|26,0,@4613 145,0,0 4934:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700e02228b1e95debfffff4|@10024,1,@131|66,0,@4935 71,1,@4913 4935:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069c00c0b05689ff8b470489ff8b5f08e8bce8ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e938f6fffff4000000|@10023,1,@130|38,0,0 54,0,@9574 60,0,@4614 76,1,@4911 114,0,0 135,1,@4936 168,1,@4928 4936:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@129|26,0,@4614 145,0,0 4937:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700b42428b1e989e9fffff4|@10024,1,@134|66,0,@4938 71,1,@4913 4938:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706a400c0b05689ff8b470489ff8b5f08e8e8e6ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e964f4fffff4000000|@10023,1,@133|38,0,0 54,0,@9574 60,0,@4615 76,1,@4911 114,0,0 135,1,@4939 168,1,@4928 4939:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffa400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@132|26,0,@4615 145,0,0 4940:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700882628b1e9b5e7fffff4|@10024,1,@137|66,0,@4941 71,1,@4913 4941:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706ac00c0b05689ff8b470489ff8b5f08e814e5ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e990f2fffff4000000|@10023,1,@136|38,0,0 54,0,@9574 60,0,@4616 76,1,@4911 114,0,0 135,1,@4942 168,1,@4928 4942:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@135|26,0,@4616 145,0,0 4943:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7005c2828b1e9e1e5fffff4|@10024,1,@140|66,0,@4944 71,1,@4913 4944:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706b400c0b05689ff8b470489ff8b5f08e840e3ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9bcf0fffff4000000|@10023,1,@139|38,0,0 54,0,@9574 60,0,@4617 76,1,@4911 114,0,0 135,1,@4945 168,1,@4928 4945:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffb400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@138|26,0,@4617 145,0,0 4946:D3,68|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700282a28b1e81ce4ffffe99f020000f40000|@10031,1,@147|51,0,@4947 56,1,@4913 61,1,@4952 4947:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404243666b1e9ce000000f400|@10029,1,@145|17,0,0 25,0,@10025 30,1,@4949 4948:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99400c0b0755c81fa9400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@141|35,0,@4613 43,0,@4613 124,0,@9999 4949:D3,252|3b650c7305ff552ccd096a016a018b3883ff01753b8b50088b72fcc1e608c1ee0783ce018b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707282c28b1893424897c2404eb3b8b780c8b178b72fcc1e608c1ee0783ce018b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c7076c2c28b1893424897c2404ff3424ff742408536a018b3c2489f83b7c240c7c0b8d6424045883c410c204008b542408ff1289c7f7c70100000075138b078b5f048b54241cff742404ff1289c6eb048b7424048b142483c202710e8d642418b8f80466b18b5d04ff23891424897424043b650c7303ff552ceb9cf40000|@10028,1,@144|67,0,@4950 128,0,@4951 223,0,@9455 4950:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b4447fec3f400|@10027,1,@142|32,0,@9990 4951:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8783266b18b5d04ff238b4447fec3f400|@10027,1,@143|32,0,@9988 4952:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@146|68,0,0 4953:D3,44|3b650c7305ff552ccd093bc37506b803000000c3a801750af6c3017505e91e000000b801000000c3f4000000|@10048,1,@150|15,0,1 30,1,@4954 35,0,0 4954:D3,108|3b650c7305ff552ccd0989c689df0fb656ff8d1455010000000fb64fff8d0c4d010000003bd1753d8b57fcc1e208c1ea0783ca018b4efcc1e108c1e90783c9013bca751b8d0c95fdffffffd1e93bc9f3a67506b803000000c3b801000000c3b801000000c3b801000000c3f4|@10047,1,@149|84,0,1 90,0,0 96,0,0 102,0,0 4955:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10051,1,@151|11,0,@10050 4956:D3,108|3b650c7305ff552ccd056a016a018b5d008d5bf43b5d087305ff5528cd05895d00c743fc020000008b7a04897b04c703782e28b18b7a088b720c8b521054575652e87e0000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@10095,1,@158|48,0,@4957 66,1,@4958 4957:D3,48|3b650c7305ff552ccd0d538b5204ff1289c78b178b0c2489ce89118b7f0489f6897e048d642404b801000000c3f40000|@10092,1,@152|40,0,0 4958:D3,576|3b650c7305ff552ccd0989da6a016a0189e3ff128b3c24ff7424046a016a018b3783fe01750f8b77048b7f08893424897c2404eb7b8b7f048b3783fe050f85eb0100008b47048b7c24208b7ffcc1e708c1ef0783cf013bc7720e8d642414b8a43266b18b5d04ff238b7c24208b7c47fe83ff010f84a701000089c683c6028b7c241cff7477fe8b54241c83c002710e8d642418b8f80466b18b5d04ff23ff1289c78b3424897424048d642404897c2404ff3424ff7424088b7c24108b1789d683fa01750abf003b66b1e90a01000089ff89f283fe09750abf003b66b1e9f700000089ff89d683fa03757189ff8b770489ff8b7f088b4c24288b5c24248b4424208b55008d52e43b55087305ff5528cdcb895500c742fc06000000894214895a10894a0c897a08c74204083b66b1c702103128b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70703000000eb7d89ff83fe07757189ff8b770489ff8b7f088b4c24288b5c24248b4424208b55008d52e43b55087305ff5528cdcb895500c742fc06000000894214895a10894a0c897a08c74204083b66b1c702d43128b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70707000000eb05bf003b66b18b55008d52f03b55087305ff5528cd80895500c742fc030000008b34248972088d6424048b34248972048d642404c702010000008b7424248916897e04b80100000083c414c210008d642414b8403b66b18b5d04ff238d642414b8c83b66b18b5d04ff23f4000000|@10103,1,@157|95,0,@9990 148,0,@9455 197,0,@10093 216,0,@10093 297,0,@10094 303,0,@4959 341,0,1 417,0,@10094 423,0,@4961 461,0,3 468,0,@10093 520,0,0 534,0,0 549,0,@10096 563,0,@10100 4959:D3,108|3b650c7305ff552ccd056a016a018b4a048b5d008d5bf43b5d087305ff5528cd07895d00c743fc020000008b7a08897b04c703903128b18b7a0c8b72108b52145457565289caff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@10095,1,@154|51,0,@4960 4960:D3,48|3b650c7305ff552ccd0d538b5204ff1289c78b178b0c2489ce89118b7f0489f6897e048d642404b801000000c3f40000|@10092,1,@153|40,0,0 4961:D3,108|3b650c7305ff552ccd056a016a018b4a048b5d008d5bf43b5d087305ff5528cd07895d00c743fc020000008b7a08897b04c703543228b18b7a0c8b72108b52145457565289caff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@10095,1,@156|51,0,@4962 4962:D3,48|3b650c7305ff552ccd0d538b5204ff1289c78b178b0c2489ce89118b7f0489f6897e048d642404b801000000c3f40000|@10092,1,@155|40,0,0 4963:D3,148|3b650c7305ff552ccd058b7a04f7c70100000075748b178b770483f801754989d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004003b66b18938c389c283ea02710ab8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81eb84b8643c66b18b5d04ff23f4|@10108,1,@159|64,0,1 97,0,@10093 112,0,@9455 138,0,@10105 4964:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10111,1,@160|11,0,0 4965:D3,108|3b650c7305ff552ccd056a016a018b5d008d5bf43b5d087305ff5528cd05895d00c743fc020000008b7a04897b04c703e83328b18b7a088b720c8b521054575652e80efbffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@10095,1,@162|48,0,@4966 66,1,@4958 4966:D3,48|3b650c7305ff552ccd0d538b5204ff1289c78b178b0c2489ce89118b7f0489f6897e048d642404b801000000c3f40000|@10092,1,@161|40,0,0 4967:D3,80|3b650c7305ff552ccd058b7a04f7c701000000752e8b178b770483f801750389d0c389c283ea02710ab8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81ebcab8643c66b18b5d04ff23f40000|@10119,1,@163|42,0,@9455 68,0,@10105 4968:D3,80|3b650c7305ff552ccd058b7a04f7c701000000752e8b178b770483f801750389d0c389c283ea02710ab8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81ebcab8643c66b18b5d04ff23f40000|@10111,1,@164|42,0,@9455 68,0,@10105 4969:D3,240|3b650c7305ff552ccd058b7a0cff7447fe8b7a0889c6f7c70100000075638b1f8b4f0483fe01753489de8b7d008d7ff03b7d087305ff5528cd45897d00c747fc030000008977088b34248977048d642404c707010000008b7204eb3389f383eb02710e8d642404b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc5eb958d642404b8643c66b18b5d04ff23f7c601000000754d8b0e8b560483f801752289ce8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c389c183e902710ab8f80466b18b5d04ff2389c889d63b650c7305ff552ccdc1ebabb8643c66b18b5d04ff23f400|@10139,1,@165|83,0,0 104,0,@9455 134,0,@10105 203,0,@9455 229,0,@10105 4970:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@166|15,0,1 21,0,0 4971:D3,888|3b650c7305ff552ccd098b38be283628b181c61d0000008d74befcffe6e94b000000909090e998000000909090e941010000909090e969010000909090e967010000909090e965010000909090e9b8010000909090e938020000909090e9b8020000909090e9050300009090908b7d008d7ff03b7d087305ff5528cd08897d00c747fc03000000c747080b000000895f04c7072b0000008b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400813000000897804c7002b000000c38b7804ff7008f7c701000000740e8d642404b81c4266b18b5d04ff23ff37f6042401747f8b3b83ff0d75126a0189d8bb01000000e8b902000089c7eb318b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000c7470801000000895f04c707170000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642408c70027000000c38d642408b8cc4466b18b5d04ff238b78048b70088b45008d40ec3b45087305ff5528cdc8894500c740fc0400000089700c895808897804c70027000000c3b8783966b1c3b8783966b1c38b70048b7d008d7ff03b7d087305ff5528cd48897d00c747fc03000000c7470801000000897704c7070d0000008b45008d40ec3b45087305ff5528cd88894500c740fc04000000c7400c004166b1895808897804c70007000000c3ff7004ff70088b3b83ff0d75126a0189d8bb01000000e88f01000089c7eb318b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000c7470801000000895f04c707170000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b3c248978048d642404c70027000000c3ff7004ff700c8b3b83ff0d75126a0189d8bb01000000e80701000089c7eb318b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000c7470801000000895f04c707170000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b3c248978048d642404c70027000000c38b7d008d7ff03b7d087305ff5528cd08897d00c747fc03000000c747080b000000895f04c7072b0000008b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400813000000897804c7002b000000c3b8783966b1c3f40000|@10217,1,@170|13,0,@4971 138,0,5 147,0,21 180,0,9 189,0,21 213,0,@10189 242,0,0 247,1,@4973 284,0,0 291,0,0 300,0,11 352,0,19 362,0,@10214 414,0,19 420,0,@10066 426,0,@10066 463,0,0 472,0,6 505,0,@10170 517,0,3 540,0,0 545,1,@4973 582,0,0 589,0,0 598,0,11 653,0,19 676,0,0 681,1,@4973 718,0,0 725,0,0 734,0,11 789,0,19 823,0,5 832,0,21 865,0,9 874,0,21 880,0,@10066 4972:D3,20|3b650c7305ff552ccd01bf3c00c0b08b17ff22f4|@9981,1,@167|11,0,@4602 4973:D3,904|3b650c7305ff552ccd0989c7538b1789d683fa0d750d8b77048b7f0889fae9f600000083fe2975258b77048b7f088b5424083bfa7509ba0100000089f7eb3f8d642404b8a04266b18b5d04ff238b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c5e897008897804c70017000000c20400f7c70100000075288b5f0489d183c102710e8d642404b8f80466b18b5d04ff2389df89ca3b650c7305ff552ccdc4ebd08b3c243bfa7d0589f75eeb1f8d6424048b7c240483ff037508b83c4366b1c20400b8984366b18b5d04ff23f7c701000000752e8b078b570483fe017503c2040089f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcab8643c66b18b5d04ff23f6c201753b8b1a8b4a048b0381f8c400c0b0751e8b55008d52f83b55087305ff5528cdc8895500c742fc01000000891aeb1389ca3b650c7305ff552ccdc4ebc0ba01000000f6c20175258b128b0a81f9c400c0b0750b8b52088b0c24e9c10100008d642404b8483366b18b5d04ff23ba0100000052f7c701000000753c8b0f8b57048b0189c381f8cc00c0b0751d89df81ffcc00c0b075058b7908eb218d642408b8483366b18b5d04ff2389d73b650c7305ff552ccdc0ebbcbf003b66b18b1783fa07755f8d6424048b57088b0424ff1289c78d6424048b378b1683fa01753aff76048b46088b5f04e89501000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f897804c7000d000000c20400b81c4466b18b5d04ff23f7c60100000074098d642408e9d2000000f7c601000000740e8d642408b81c4266b18b5d04ff230fb67eff8d3c7d0100000081e7ff01000083e70783ff017507bf03000000eb05bf0100000083ff037407bf03000000eb34f7c601000000740e8d642408b81c4266b18b5d04ff238b7efcc1e708c1ef0783cf013b7c24047707bf03000000eb05bf0100000083ff03744ef7c601000000740e8d642408b81c4266b18b5d04ff238b7c24048b7c7efe8b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642408897804c7000d000000c204008d6424088b7c240483ff037508b83c4366b1c20400b8704466b18b5d04ff23f6c20175368b028b5a0483f901750789c2e93cfeffff89c883e802710e8d642404b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebc58d642404b8643c66b18b5d04ff23f4000000|@10213,1,@169|55,0,0 68,0,@10196 119,0,11 149,0,@9455 200,0,@10200 208,0,@10204 246,0,@9455 272,0,@10105 295,0,@4619 346,0,0 361,0,@4619 383,0,@9999 393,0,0 417,0,@4620 427,0,@4620 443,0,@9999 467,0,@10093 515,1,@4974 556,0,6 564,0,@10208 603,0,@10189 638,0,1 645,0,0 655,0,1 674,0,@10189 702,0,1 709,0,0 731,0,@10189 789,0,6 810,0,@10200 818,0,@10211 861,0,@9455 891,0,@10105 4974:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@168|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 4975:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@171|76,0,@10218 86,0,0 4976:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@172|16,0,0 27,0,@9455 74,0,@10071 4977:D3,1552|3b650c7305ff552ccd09538b38be1c3f28b181c61e0000008d74befcffe6e94b000000909090e99a000000909090e9c4000000909090e9ee000000909090e9e8000000909090e917010000909090e941010000909090e9de010000909090e97b020000909090e9c80200009090908b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400803000000897804c70029000000e9110500008d6424048b78048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c38d6424048b78048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c358c38b45008d40ec3b45087303ff5528894500c740fc04000000c7400c783966b18b3c248978088d642404c74004984566b1c70001000000c38d6424048b78048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c38b78048b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b55008d52f43b55087305ff5528cd40895500c742fc02000000c74204010000008b3c24893a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400803000000897804c70029000000e9640300008b70048b58088b7d008d7ff03b7d087305ff5528cd48897d00c747fc03000000c7470801000000897704c7070d0000005783fb017d0e8d642408b8a84566b18b5d04ff23b801000000e89d03000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000e98f0100008b580483fb01750258c383fb017d0e8d642404b8a84566b18b5d04ff23b801000000e8bb03000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000eb0a8d642404b8c43966b1c3f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8e503000089c7eb0057b801000000e8a6fbffff89c757b801000000e81108000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c7460801000000c74604184766b18b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e8d207000089c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c3f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8b502000089c7eb0057b801000000e876faffff89c757b801000000e8c507000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c7460801000000c74604184766b18b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e8a206000089c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e987010000c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e94e010000c3f4|@10238,1,@182|14,0,@4977 137,0,0 179,0,1 188,0,20 233,0,0 242,0,6 283,0,0 292,0,6 326,0,@10066 343,0,@10223 349,0,0 390,0,0 399,0,6 436,0,0 445,0,6 478,0,0 551,0,1 560,0,20 604,0,0 613,0,6 628,0,@10224 638,0,0 643,1,@4978 716,0,1 725,0,20 754,0,@10224 764,0,0 769,1,@4979 804,0,1 813,0,20 824,0,@10072 864,0,0 871,0,1 883,1,@4980 893,0,0 898,1,@4975 906,0,0 911,1,@4984 946,0,1 953,0,0 960,0,0 980,0,0 987,0,@10237 1031,0,12 1063,0,0 1074,1,@4985 1109,0,1 1128,0,7 1168,0,0 1175,0,1 1187,1,@4980 1197,0,0 1202,1,@4975 1210,0,0 1215,1,@4986 1250,0,1 1257,0,0 1264,0,0 1284,0,0 1291,0,@10237 1335,0,12 1367,0,0 1378,1,@4985 1413,0,1 1432,0,7 1472,0,0 1479,0,1 1489,1,@4980 1529,0,0 1536,0,1 1546,1,@4980 4978:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@173|15,0,0 49,0,0 59,0,@10067 65,0,11 80,0,@9455 4979:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@174|15,0,0 49,0,0 59,0,@10067 65,0,11 80,0,@9455 4980:D3,664|3b650c7305ff552ccd018b3089f783fe2975178b700483fe017506b8c43966b1c3bf0100000089f2eb1083ff0d7501c3b8d44566b18b5d04ff23f6c20175248b5a0489f983c102710ab8f80466b18b5d04ff2389da89cf3b650c7305ff552ccdc4ebd7578b142489d781faffffff01720e8d642404b8284666b18b5d04ff2389ff89f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab5289f0e8ef010000ff3424bb01000000e85202000089c7578b3c24f7c701000000751f8b178b7704f6c201740e89f73b650c7305ff552ccd80ebe0bf01000000eb05bf0300000083ff03750e8d642404be01000000e94e0100008b0424e88d02000089c689f7f7c70100000075218b0f8b57048b0983f905750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750aba01000000e9ae0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c8b1424895708897704c707f43428b18b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2408897e04c706070000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c707cc00c0b08b55008d52f43b55087305ff5528cd80895500c742fc02000000c7420401000000893a8b7d008d7fec3b7d087305ff5528cd04897d00c747fc04000000c7470c010000008b34248977088d642404c74704640f66b1c707c400c0b08b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b142489d78062ffbf8b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7000d00000083c404c3f400|@10236,1,@178|28,0,@10072 34,0,0 49,0,@10226 74,0,@9455 107,0,16777215 118,0,@10229 175,0,0 185,1,@4981 193,0,0 198,1,@4982 241,0,0 248,0,1 262,0,0 275,1,@4983 318,0,0 325,0,1 335,0,0 388,0,@4969 430,0,3 463,0,0 473,0,@9574 479,0,@4620 512,0,0 547,0,0 564,0,@9574 570,0,@4619 654,0,6 4981:D3,92|3b650c7305ff552ccd0189c7f7c70100000075418b07ff7704ba544666b1ff1289c7578b442404e8d4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@175|26,0,@10231 86,0,0 4982:D3,116|3b650c7305ff552ccd09a801755c8b308b40048b3e83ff0d75468b7e04ff76088b742408897c5efe83c3028b7c240857e8cbffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b85c4666b18b5d04ff23b801000000c20400f400|@10235,1,@176|97,0,@10232 107,0,0 4983:D3,144|3b650c7305ff552ccd01a80175078b388b4004eb06b801000000c3f7c70100000075388b178b77048b1a89d981fbcc00c0b0751989cf81ffcc00c0b075058b7a08eb1db8483366b18b5d04ff2389f73b650c7305ff552ccd81ebc0bf003b66b157e89affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10030,1,@177|22,0,0 46,0,@4620 56,0,@4620 68,0,@9999 92,0,@10093 4984:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@179|16,0,0 27,0,@9455 74,0,@10071 4985:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@180|48,0,1 102,0,0 4986:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@181|16,0,0 27,0,@9455 74,0,@10071 4987:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@183|15,0,1 21,0,0 4988:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@184|11,0,@10262 4989:D3,760|3b650c7305ff552ccd0550528b7d008d7ff03b7d087303ff5528897d00c747fc030000008b54240489d68957088b14248b5204895704c707704f28b1578b7d008d7ff03b7d087305ff5528cd40897d00c747fc0300000089f689f28977088b7424048b7608897704c707245028b1578b7d008d7ff03b7d087305ff5528cd04897d00c747fc0300000089d289d68957088b5424088b520c895704c707d85028b1578b7d008d7ff03b7d087305ff5528cd40897d00c747fc0300000089f689f28977088b74240c8b7610897704c7078c5128b1578b7d008d7ff03b7d087305ff5528cd04897d00c747fc0300000089d289d68957088b5424108b5214895704c707405228b1578b7d008d7ff03b7d087305ff5528cd40897d00c747fc0300000089f689f28977088b7424148b7618897704c707f45228b1578b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b7424188b760489770889d289d6895704c707a85328b1578b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54241c8b520889570889f689f2897704c7072c5528b1578b75008d76f03b75087305ff5528cd04897500c746fc030000008b7c24208b7f0c897e0889d289d7895604c706b05628b1568b4d008d49f03b4d087305ff5528cd80894d00c741fc030000008b7424248b761089710889ff89fe897904c701345828b18b7d008d7ff03b7d087305ff5528cd42897d00c747fc030000008b5424248b521489570889f689f2897704c707b85928b18b75008d76f03b75087305ff5528cd86897500c746fc030000008b5c24248b5b18895e0889d289d3895604c7063c5b28b18b55008d52f03b55087305ff5528cdca895500c742fc0300000089db895a088b5c24248b5b04895a04c702c05c28b18b45008d40c83b45087305ff5528cdc6894500c740fc0d0000008b5c24148958308b5c240c89582c8948288950248b54241c89502089701c8b7424208970188b7424108970148b7424188970108b74240489700c8b7424088970088978048b3c2489388d64242cc3f4|@10271,1,@205|56,0,@4990 106,0,@4991 156,0,@4992 206,0,@4993 256,0,@4994 306,0,@4995 356,0,@4996 406,0,@4998 456,0,@5000 506,0,@5002 555,0,@5004 604,0,@5006 651,0,@5008 4990:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe862bcffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@185|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4991:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe8aebbffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@186|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4992:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe8fabaffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@187|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4993:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe846baffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@188|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4994:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe892b9ffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@189|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4995:D3,160|3b650c7305ff552ccd0589c7528b34248b460889fbe8deb8ffff89c7f7c70100000075048b3feb0a8d642404b801000000c3f7c70100000075598b37ff77048b168b4c24048b49043bd175388d6424048b3e5a8b52043bfa75208b7e088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff235e89f73b650c7305ff552ccd80eb9f8d642404b801000000c3f40000|@10268,1,@190|22,1,@4911 45,0,0 123,0,@9999 152,0,0 4996:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e8f1b7ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e969c5fffff4|@10269,1,@192|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@4997 175,1,@4928 4997:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@191|158,0,0 4998:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e86db6ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9e5c3fffff4|@10269,1,@194|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@4999 175,1,@4928 4999:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@193|158,0,0 5000:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e8e9b4ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e961c2fffff4|@10269,1,@196|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@5001 175,1,@4928 5001:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@195|158,0,0 5002:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e865b3ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9ddc0fffff4|@10269,1,@198|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@5003 175,1,@4928 5003:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@197|158,0,0 5004:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e8e1b1ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e959bffffff4|@10269,1,@200|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@5005 175,1,@4928 5005:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@199|158,0,0 5006:D3,180|3b650c7305ff552ccd0552ff308b78048b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b18b7c24048b570889165689ff8b47048b5c2404e85db0ffff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb178b078b7c24088b5f08ff3424e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9d5bdfffff4|@10269,1,@202|45,0,0 55,0,@9574 79,1,@4911 117,0,0 145,1,@5007 175,1,@4928 5007:D3,168|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bfb752c8d6424048b7424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c204008b7c240857e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@10014,1,@201|158,0,0 5008:D3,72|3b650c7305ff552ccd058b75008d76f43b75087305ff5528cd04897500c746fc020000008b7a04897e04c7061c5d28b18b4208ff3424bb0100000089742404e914cefffff4000000|@10270,1,@204|44,0,@5009 55,0,0 64,1,@4949 5009:D3,96|3b650c7305ff552ccd0d508b442408f6c30175448b338b7b048b368b4a043bf175248b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048b0c24890eeb0289c689f089fb3b650c7305ff552ccd0debb78d642404c20400f4|@10026,1,@203| 5010:D3,572|3b650c7305ff552ccd018b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000894708c74704883966b1c7072b00000057bf905d28b181c7460000008d7c07ffffe7eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb51eb56eb5bbff84966b1eb59bf104a66b1eb52bf284a66b1eb4bbf3c4a66b1eb44bf544a66b1eb3dbf6c4a66b1eb36bf844a66b1eb2fbf9c4a66b1eb28bfb44a66b1eb21bfcc4a66b1eb1abfe04a66b1eb13bff04a66b1eb0cbf004b66b1eb05bf184b66b18b378d1c750100000083fb01750aba344b66b1e98600000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e8af00000089c757b801000000e81201000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977108b342489770c8d642404c74708010000008b34248977048d6424048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c38d642404b8780566b18b5d04ff23f4000000|@10287,1,@208|42,0,@10067 48,0,21 54,0,@5010 99,0,@10272 106,0,@10273 113,0,@10274 120,0,@10275 127,0,@10276 134,0,@10277 141,0,@10278 148,0,@10279 155,0,@10280 162,0,@10281 169,0,@10282 176,0,@10283 183,0,@10284 190,0,@10285 209,0,@10286 229,0,4 250,0,16777215 308,0,0 354,0,@9473 377,0,@9473 398,0,@10237 408,0,0 413,1,@5011 421,0,0 426,1,@5012 461,0,1 468,0,0 475,0,0 495,0,0 549,0,12 559,0,@9465 5011:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@206|76,0,@10218 86,0,0 5012:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@207|16,0,0 27,0,@9455 74,0,@10071 5013:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@209|15,0,1 21,0,0 5014:D3,76|3b650c7305ff552ccd093bc37506b803000000c38b388d3c7d010000008b3389f18d3475010000003bfe75188d70048d7b043bc9f3a67506b803000000c3b801000000c3b801000000c3f400|@10322,1,@210|15,0,1 57,0,1 63,0,0 69,0,0 5015:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10361,1,@211|11,0,@10050 5016:D3,32|3b650c7305ff552ccd01a8017407b803000000eb05b80100000083f002c3f400|@10367,1,@212|15,0,1 22,0,0 5017:D3,48|3b650c7305ff552ccd018b388b70048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@10367,1,@213| 5018:D3,48|3b650c7305ff552ccd018b388b70048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@10367,1,@214| 5019:D3,28|3b650c7305ff552ccd0183f8017506b803000000c3b801000000c3f4|@10432,1,@215|16,0,1 22,0,0 5020:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a06228b1c3f4000000|@10435,1,@217|43,0,@5021 5021:D3,148|3b650c7305ff552ccd0d5250538b7c240489fe3b3c24750a8d64240cb803000000c389f7f7c601000000755af6042401754a89ff8b0789ffff77048b7c24048b1f89ffff77048b7c24108b7f048b17ff1289c783ff03751a8b7424045a8d642404891424897424043b650c7303ff552ceb9b8d642414b801000000c38d64240cb801000000c38d64240cb801000000c3f4000000|@10434,1,@216|29,0,1 119,0,0 129,0,0 139,0,0 5022:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008b7204897008897804c700946328b1c3f400|@10455,1,@219|49,0,@5023 5023:D3,728|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8bc5466b1c38b3089f283fe01750a8d642404b8d45466b1c389fe83ff037d0a8d642404b8bc5466b1c38b3aff720483ee0256710e8d64240cb8045566b18b5d04ff238b142489d683fa017d0e8d64240cbe185566b1e9650100008b5424088b52048b520489f683ee02710e8d64240cb8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c7578b74240483ee02710e8d642410b8045566b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424088937578b4c24108b79088b1789c98b790489fe8b7f0489f38b760889d98b490c8b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c897008897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c5566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@10454,1,@218|26,0,@10437 45,0,@10439 62,0,@10437 83,0,@10442 107,0,@10443 138,0,@10442 197,0,@10442 308,0,0 356,0,@10446 393,0,@10448 428,0,@10449 504,0,@10450 540,0,0 547,0,0 554,0,1 560,0,0 593,0,0 630,0,@10448 665,0,@10451 701,0,0 708,0,0 715,0,1 721,0,0 5024:D3,20|3b650c7305ff552ccd01b807000000c3f4000000|@10457,1,@220|11,0,3 5025:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@10459,1,@221|11,0,1 5026:D3,28|3b650c7305ff552ccd0183f8017506b803000000c3b801000000c3f4|@10595,1,@222|16,0,1 22,0,0 5027:D3,32|3b650c7305ff552ccd01a8017407b803000000eb05b80100000083f002c3f400|@10615,1,@223|15,0,1 22,0,0 5028:D3,44|3b650c7305ff552ccd0189c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f40000|@10615,1,@224| 5029:D3,16|3b650c7305ff552ccd018b00c3f40000|@10615,1,@225| 5030:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e06728b1c3f4000000|@10619,1,@227|43,0,@5031 5031:D3,56|3b650c7305ff552ccd0d3bc37506b803000000c3a8017516f6c301750b8b7a048b178b008b1bff22b801000000c3b801000000c3f4000000|@10618,1,@226|15,0,1 41,0,0 47,0,0 5032:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700746828b1c3f4000000|@10630,1,@229|43,0,@5033 5033:D3,560|3b650c7305ff552ccd058b780489f983ff037d06b8bc5466b1c38b3089f783fe017506b8e45f66b1c389ce83f9037d06b8bc5466b1c38b52048b52048b3f83ee02710ab8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ff080e66b17507bf03000000eb2381ffec1166b17507bf03000000eb1481ff6c1066b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707306066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@10629,1,@228|21,0,@10437 36,0,@10621 49,0,@10437 68,0,@10442 168,0,@9545 175,0,1 183,0,@9628 190,0,1 198,0,@9596 205,0,1 212,0,0 257,0,@10624 294,0,@10625 329,0,@10450 365,0,0 372,0,1 379,0,3 385,0,0 424,0,0 461,0,@10448 496,0,@10626 532,0,0 539,0,0 546,0,1 552,0,0 5034:D3,20|3b650c7305ff552ccd01b807000000c3f4000000|@10632,1,@230|11,0,3 5035:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@10634,1,@231|11,0,1 5036:D3,20|3b650c7305ff552ccd01b8586666b1c3f4000000|@10723,1,@233|11,0,@10722 5037:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@232|15,0,1 21,0,0 5038:D3,20|3b650c7305ff552ccd01b87c6666b1c3f4000000|@10727,1,@235|11,0,@10725 5039:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10726,1,@234|11,0,@10050 5040:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@10729,1,@236|11,0,2 5041:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@10730,1,@237|11,0,1 5042:D3,868|3b650c7305ff552ccd09508b0424bb883966b1e810caffff89c7578b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff0175208b74240cbf100666b18d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240c57b801000000e8ded1ffff89c757b801000000e80103000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404bb883966b1e81bd2ffff89c7578b7c241081ff100666b17502eb2b8b7c24108b3f8d3c7d0100000083ff0175208b742410bf100666b18d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c241057b801000000e8f5d0ffff89c757b801000000e87c02000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442408bb883966b1e85602000089c7578b7c241481ff100666b17502eb2b8b7c24148b3f8d3c7d0100000083ff0175208b742414bf100666b18d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c241457b801000000e80cd0ffff89c757b801000000e86f08000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977108b342489770c8d642404c74708010000008b34248977048d6424048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7002900000083c404c20400f4|@10759,1,@245|15,0,@10067 20,1,@4971 33,0,@9473 64,0,@9473 85,0,@10237 97,0,0 102,1,@4975 110,0,0 115,1,@5043 150,0,1 157,0,0 164,0,0 184,0,0 238,0,12 248,0,@10067 253,1,@4977 266,0,@9473 297,0,@9473 318,0,@10237 330,0,0 335,1,@4975 343,0,0 348,1,@5044 383,0,1 390,0,0 397,0,0 417,0,0 471,0,12 481,0,@10067 486,1,@5045 499,0,@9473 530,0,@9473 551,0,@10237 563,0,0 568,1,@4975 576,0,0 581,1,@5049 616,0,1 623,0,0 630,0,0 650,0,0 704,0,12 737,0,0 848,0,0 857,0,20 5043:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@238|16,0,0 27,0,@9455 74,0,@10071 5044:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@239|16,0,0 27,0,@9455 74,0,@10071 5045:D3,1204|3b650c7305ff552ccd09538b38be407028b181c61e0000008d74befcffe6e94b000000909090e9a0000000909090e9a2000000909090e9a4000000909090e99e000000909090e9f0000000909090e9f2000000909090e947010000909090e990010000909090e9dd0100009090908b3c248b3783fe0d751b89f88d642404ff3424bb01000000c744240403000000e909c9ffff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000c740080100000089ff8978048d642404c70017000000c38d642404b8c43966b1c38d642404b8c43966b1c358c38b7d008d7ff03b7d087303ff5528897d00c747fc03000000c7470801000000c74704cc6866b18b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c74004d46866b1c7001b000000c38d642404b8c43966b1c38b3c248b3783fe0d751b89f88d642404ff3424bb03000000c744240403000000e932c8ffff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000c740080300000089ff8978048d642404c70017000000c38b580883fb017d0e8d642404b8a84566b18b5d04ff23b801000000e80603000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e98f0100008b580483fb01750258c383fb017d0e8d642404b8a84566b18b5d04ff23b801000000e85e03000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb0a8d642404b8c43966b1c3f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8acd3ffff89c7eb0057b801000000e86dcbffff89c757b801000000e86c03000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c7460801000000c74604184766b18b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e899d7ffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c3f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e87cd2ffff89c7eb0057b801000000e83dcaffff89c757b801000000e83c02000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c7460801000000c74604184766b18b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e869d6ffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c3f400|@10758,1,@243|14,0,@5045 130,0,0 138,0,1 143,1,@4973 176,0,1 183,0,0 198,0,11 208,0,@10072 218,0,@10072 252,0,0 259,0,@10756 304,0,@10757 310,0,13 320,0,@10072 345,0,1 353,0,1 358,1,@4973 391,0,1 398,0,1 413,0,11 431,0,@10224 441,0,0 446,1,@5046 481,0,0 490,0,20 519,0,@10224 529,0,0 534,1,@5047 569,0,0 578,0,20 589,0,@10072 629,0,0 636,0,1 648,1,@4980 658,0,0 663,1,@4975 671,0,0 676,1,@5048 711,0,1 718,0,0 725,0,0 745,0,0 752,0,@10237 796,0,12 828,0,0 839,1,@4985 874,0,1 893,0,7 933,0,0 940,0,1 952,1,@4980 962,0,0 967,1,@4975 975,0,0 980,1,@5048 1015,0,1 1022,0,0 1029,0,0 1049,0,0 1056,0,@10237 1100,0,12 1132,0,0 1143,1,@4985 1178,0,1 1197,0,7 5046:D3,156|3b650c7305ff552ccd093bc37506b801000000c389c683c602710ab8f80466b18b5d04ff238b7d008d7fec3b7d087305ff5528cd49897d00c747fc04000000c7470c03000000897708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e891ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4000000|@10221,1,@240|15,0,0 28,0,@9455 66,0,1 76,0,@10067 82,0,11 97,0,@9455 5047:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c03000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@241|15,0,0 49,0,1 59,0,@10067 65,0,11 80,0,@9455 5048:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@242|16,0,0 27,0,@9455 74,0,@10071 5049:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@244|16,0,0 27,0,@9455 74,0,@10071 5050:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@246|16,0,0 27,0,@9455 74,0,@10071 5051:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10764,1,@247|11,0,@10050 5052:D3,1548|3b650c7305ff552ccd0d5250538b3c24f7c701000000753b8b178b77048b0a81f98401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9250500008b3f8b3781fe8401c0b075058b7f08eb0e8d64240cb8483366b18b5d04ff23578b7c2404f7c701000000753b8b178b77048b0a81f93402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507bfe06c66b1eb138b3f8b3781fe3402c0b00f85ae0200008b7f08578b7c240483ff03751cff3424ba046d66b18b442410e8db0500008b1424ff128d642404eb006a016a016a016a018b7c24288b4c24208b710889c98b510c89c98b49045754830424045652518b4424308b5c242ce8618c0000ff34248b442408ff74240cff742414e86d980d0089c7578b34248b3e83ff050f85bc0000008d6424048b7c240489fe83ff0175068b7c2408eb2c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54240889570889f6897704c7071f000000578b7c242483ff03751dff742420ba046d66b18b442404e81b0500008b1424ff128d642404eb006a016a018b7c24388b7f04ff7424305483042404578b4424148b5c2418e8ae7802005e5f8d6424088b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700241336b183c42cc20400ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917c707b84f67b18b7c240489fa83ff017d098d642434e92c01000089d289d781faffffff010f8d1801000089ff89f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab52bad85067b189f08b1c24e887990d008b34248b5efcc1e308c1eb0783cb0183fb01750b8d642404bfe43c66b1eb4a89df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989f68d64240489d7d1e9f3a58062ffbf89d7578b7c240889fe83ff017d068d642438eb4d89f689f781feffffff017d3d89ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b8c43966b1f3ab56ff742410eb2a8d642438b8383066b18b5d04ff238d642434b8383066b18b5d04ff238d642410b8483366b18b5d04ff23f604240175258b3c248b0789ffff7704ff7424088b5c2410e8489c0d005e8934243b650c7303ff552cebd58d6424048b3c248b77fcc1e608c1ee0783ce01bf0100000083fe0175558d64240489fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241089378b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420801000000897a04c70229000000eb4389f183e90289f383eb028b14248b5c5afe8b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04891a89ce89d73b650c7305ff552ccdc0e963fffffff7c70100000075218b0f8b77048b0983f90d750e89f73b650c7305ff552ccd84ebdebf01000000eb05bf0300000083ff03750b89d0e80bcaffff89c2eb008b7c240c89fe83ff01750489d7eb288b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f6897704c7071f000000578b7c242c83ff03751dff742428ba046d66b18b442404e8cc0100008b1424ff128d642404eb006a016a018b7c24408b7f04ff7424385483042404578b4424148b5c2420e85f7502005e5f8d6424048b45008d40e83b45087305ff5528cdc0894500c740fc0500000089701089780c8b7c24048978088b3c248978048d64240cc7007c1b36b183c42cc20400f7c701000000753b8b178b77048b0a81f98401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781fe8401c0b075088b7f08e98bfaffff8d64240cb8483366b18b5d04ff23f40000|@13028,1,@1657|33,0,@4643 84,0,0 94,0,@10769 109,0,@4643 125,0,@9999 156,0,@4665 207,0,0 217,0,@10818 229,0,@4665 256,0,@10820 265,1,@5058 327,1,@5109 347,1,@6450 429,0,15 448,0,@10820 457,1,@5058 502,1,@5414 546,0,@6452 557,0,0 591,0,@13000 621,0,16777215 679,0,0 687,0,@13017 697,1,@6454 726,0,@10109 780,0,0 830,0,16777215 884,0,@10072 902,0,@9964 916,0,@9964 930,0,@9999 964,1,@6458 1002,0,0 1081,0,0 1090,0,20 1198,0,0 1205,0,1 1217,1,@4980 1276,0,15 1295,0,@10820 1304,1,@5058 1349,1,@5414 1410,0,@6460 1437,0,@4643 1488,0,0 1502,0,@11247 1517,0,@4643 1536,0,@9999 5053:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10773,1,@248|11,0,0 5054:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10773,1,@249|11,0,0 5055:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10773,1,@250|11,0,0 5056:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10773,1,@251|11,0,0 5057:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@252|11,0,0 5058:D3,15160|3b650c7305ff552ccd05528b38be907e28b181c61e0000008d74befcffe6e9ab000000909090e978020000909090e920050000909090e985060000909090e95e080000909090e99a0f0000909090e991120000909090e904130000909090e912150000909090e9e3170000909090e94b190000909090e93e1b0000909090e9cb1c0000909090e9ad240000909090e9fd280000909090e9da290000909090e9ba2b0000909090e93c2c0000909090e9502c0000909090e94b310000909090e938330000909090e97e3400009090908b50048b70088b780c8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b1c24e80c3a00008d642404e8333b000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707886d66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c38b78048b0f8b57048b77088b5f0c8b7f108b0683f80175538b7604b8907e28b181c0cf0200008d4430ffffe0eb0ceb11eb16eb1beb20eb25eb2abeb06d66b1eb28bebc6d66b1eb21bec86d66b1eb1abed46d66b1eb13bee06d66b1eb0cbeec6d66b1eb05bef86d66b1eb388b760483fe057507be046e66b1eb2983fe037507be186e66b1eb1d83fe097507be286e66b1eb1183fe077507be3c6e66b1eb05be486e66b18b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc0200000089430489138b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489388b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c2404e8e5380000e8103a000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c3ff70048b40088b7c24048b5f04e8ff380000e83a3a000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706586e66b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b5424088b442404e82bfaffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c3ff7004ff70088b400ce83239000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000005a89178b45008d40f43b45087305ff5528cdc0894500c740fc020000008978045f89388b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c2404e853450000e87e46000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c38b7804ff7008ff700cff701083ff017507bf906f66b1eb1f83ff037507bfa46f66b1eb138b3f83ff037507bfb86f66b1eb05bfc86f66b18b378d1c750100000083fb017507be080e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c006000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff77088b542418e853f6ffff89c757f64424080175138b7c24088b078b54241ce83af6ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e86ed7fdffba803066b1bb05000000e89fd7fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b7c24148b078b7c2414ff77048b7c2418ff77088b542424e8f1f3ffff89c757f64424080175138b7c24088b078b542428e8d8f3ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e80cd5fdffba803066b1bb05000000e83dd5fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b5424288b442424e89ff1ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704247066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c428c38d642410b8780566b18b5d04ff238b7804ff7008ff700c8b54240889f8e807f0ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706307066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470405000000c70701000000578b54240c8b442408e856efffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706487066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470405000000c70701000000578b5424108b442408e8a5eeffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707607066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240c89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c70001000000c38b78048b7008f7c7010000007437f7c701000000742183ff017507ba03000000eb05ba0100000083fa037505e9122700008d642404eb128d642404b8cc4466b18b5d04ff238d642404ba787066b189f8e8e73a000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3ff70048b40088b3089f783fe0d75108b542404e889ecffff89c7e9c100000083ff1175108b542404e874ecffff89c7e9ac0000008b542404e864ecffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706705566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470405000000c70701000000578b4424048b5c2408e827420000e85243000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c38d6424048b78048b3789f283fe077506b8287166b1c389d683fa030f85ef0000008b4704ba803066b1bb03000000e810ccfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf487166b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878300000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf487166b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38d642404b8780566b18b5d04ff2383fe050f85ef0000008b4704ba803066b1bb03000000e818cbfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf587166b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878300000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf587166b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38d642404b8780566b18b5d04ff238b4704ba803066b1bb03000000e829cafdff89c78b378d0c750100000083f9017507bf687166b1eb7a89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01777889d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420441c6420572c64206678d77048d7a07d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3b8780566b18b5d04ff23b8010000008b1c24e8a53f00008d642404e8cc40000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707747166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c38b7804ff7008ff700c8b54240889f8e82ee6ffff89c757ba803066b18b442404bb03000000e8d0c7fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be947166b1e98900000089df83c71489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877701000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf947166b1b9150000008d77048d7a04d1e9f3a489d95f8d77048d7a0ed1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5424108b44240ce83ce5ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a87166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c40cc38d642414b8780566b18b5d04ff238b7804ff7008ff700c8b54240889f8e833e4ffff89c757ba803066b18b442408bb03000000e8d5c5fdff89c68b7c240483ff037507bac47166b1eb05ba100666b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702841066b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7006c1066b1e8f184fdff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d47166b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c7000100000083c40cc38b7004ff36ff7604ff7608ff760c8b5e108b7e14ff761883ff017507bfe47166b1eb05bf100666b157b801000000e80b3c000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c24148b3f8d0c7d0100000083f9017507bfc00d66b1eb7a89cf83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f872b07000089f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe00000000d1ef893ac64204228b7c24148d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507bec00d66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878e06000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a228062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c7070700000057ba803066b18b442410bb03000000e878c2fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be587366b1e99000000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878205000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d95f8d77048d7a04d1e9f3a489df83c708be587366b1b9110000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442418e809460000bf090000008d147d02000000f7da0355003b550872053b55007205ff5528cd01895500d1ef897afcc642ff41c7420c00000000c70209000000bf687366b1b9110000008d77048d7a04d1e9f3a4c6420c288062ffbf8b7d008d7ff43b7d087305ff5528cd05897d00c747fc02000000895704c70707000000578b5c242ce807460000e83247000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c7070100000057bf0b0000008d147d02000000f7da0355003b550872053b55007203ff5528895500d1ef897afcc642ff41c7421000000000c7020f000000bf787366b1b91d0000008d77048d7a04d1e9f3a4c642125b8062ffbf8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000895704c70707000000578b442424e8b3460000e8d647000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604907366b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c07366b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706485566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d87366b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470409000000c70701000000578b54241c8b442418e896dbffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400405000000c7000100000083c41cc38d64242cb8780566b18b5d04ff238d642420b8780566b18b5d04ff238d642420b8780566b18b5d04ff238b7804ff70088b37ba907e28b181c2512500008d5432ffffe2eb10eb15eb1aeb1feb24eb29eb2eeb42eb56bff07366b1eb54bf007466b1eb4dbf107466b1eb46bf207466b1eb3fbf307466b1eb38bf407466b1eb318b7f0483ff017507bf507466b1eb05bf607466b1eb1b8b7f0483ff017507bf787466b1eb05bf887466b1eb05bfa07466b18b378d0c750100000083f901750abeb87466b1e98200000089ce83c60889f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f878203000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642044cc642056fc6420661c64207648d77048d7a08d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff77088b542410e867d9ffff89c757f64424080175138b7c24088b078b542414e84ed9ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e882bafdffba803066b1bb05000000e8b3bafdff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e46f66b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706087066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c414c38d642408b8780566b18b5d04ff238b4004bf070000008d347d02000000f7de0375003b750872053b75007205ff5528cd01897500d1ef897efcc646ff41c7460800000000c70605000000c646044cc646054fc646064fc6460750c64608288066ffbf8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c2404e8a73f0000e8d240000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38b7804ff70088b7424048b5e0889f8e8bb40000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470405000000c70701000000578b5424088b442404e82fd5ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e87466b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707307566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c70001000000c38b40045ae89ad3ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707487566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c3ff70048b7808ff700cff37ff37be01000000ba01000000e9890a00008b7804ff7008ff700c8b37ba907e28b181c21f2d00008d5432ffffe2eb10eb15eb1aeb1feb24eb29eb2eeb42eb56bff07366b1eb54bf007466b1eb4dbf107466b1eb46bf207466b1eb3fbf307466b1eb38bf407466b1eb318b7f0483ff017507bf507466b1eb05bf607466b1eb1b8b7f0483ff017507bf787466b1eb05bf887466b1eb05bfa07466b1578b3c248b3f8d1c7d0100000083fb01750e8d642404be647566b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f872204000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf647566b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff77088b542414e88ad1ffff89c757f64424080175138b7c24088b078b542418e871d1ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e8a5b2fdffba803066b1bb05000000e8d6b2fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b5424188b442414e838cfffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707747566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c418c38d642410b8780566b18b5d04ff238b5804ff7008ff700cf6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e83faffdffba803066b1bb05000000e870affdff89c757f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8f3aefdffba803066b1bb05000000e824affdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747048c7566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706987566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a47566b1e8546efdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b54240c8b442408e8a9ccffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c40cc3ff70048b780883ff037507bfb47566b1eb05bfc47566b18b378d1c750100000083fb017507be080e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ea00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b4424048b5c2408e89d370000e8c838000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38d642408b8780566b18b5d04ff238b78048b7008ba907e28b181c2603500008d5432ffffe2eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb51eb56eb5bbef84966b1eb59be104a66b1eb52be284a66b1eb4bbe3c4a66b1eb44be544a66b1eb3dbe6c4a66b1eb36be844a66b1eb2fbe9c4a66b1eb28beb44a66b1eb21becc4a66b1eb1abee04a66b1eb13bef04a66b1eb0cbe004b66b1eb05be184b66b18b45008d40f43b45087305ff5528cdc0894500c740fc02000000c740040100000089388b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c2404e8d4370000e8ff38000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c33b14240f820d0200008d64240489f0ba803066b1bb03000000e80eaafdff89c757ba803066b18b442404bb03000000e8f8a9fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704d47566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7065c0e66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e07566b1e82469fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b54240c8b442404e879c7ffff89c7578b5424108b44240ce869c7ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240c89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c389d183c102518b4f0489d3c1eb0383cb01d1eb0fb60c198d1c4d0100000089d183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f901750489f1eb1589f183c102710e8d642418b8f80466b18b5d04ff235b89da89ce3b650c7305ff552ccdc4e965fdfffff7c601000000753d8b0e8b56048b198b04248b400c3bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbbbe0100000083fe0175368d642404ba787066b189f8e89a13000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38b368b168b0c248b490c3bd1756c8b76088b1683fa03752c8b7e045a8b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70019000000e910c5ffff8d642404ba787066b189f8e82013000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38d642404b8483366b18b5d04ff23f4000000|@10966,1,@292|14,0,@5058 244,0,0 316,1,@5059 325,1,@5060 362,0,@10450 398,0,0 405,0,1 412,0,1 418,0,0 451,0,@10624 489,0,0 496,0,1 503,0,2 509,0,0 542,0,0 579,0,@10826 614,0,@10827 650,0,0 657,0,0 664,0,2 670,0,0 703,0,@5058 734,0,@10829 741,0,@10830 748,0,@10831 755,0,@10832 762,0,@10833 769,0,@10834 776,0,@10835 791,0,@10836 803,0,@10837 815,0,@10838 827,0,@10839 834,0,@10840 867,0,0 997,0,3 1007,1,@5061 1012,1,@5062 1049,0,@10450 1085,0,0 1092,0,1 1099,0,1 1105,0,0 1138,0,@10624 1176,0,0 1183,0,1 1190,0,2 1196,0,0 1229,0,0 1266,0,@10826 1338,0,0 1345,0,0 1352,0,2 1358,0,0 1377,1,@5063 1382,1,@5064 1419,0,@10841 1455,0,0 1462,0,1 1469,0,1 1475,0,0 1524,0,@10624 1561,0,@10625 1596,0,@10450 1631,0,@10625 1703,0,0 1710,0,0 1717,0,3 1723,0,0 1738,1,@5065 1773,0,0 1843,0,3 1853,1,@5066 1858,1,@5067 1895,0,@10450 1931,0,0 1938,0,1 1945,0,1 1951,0,0 1984,0,@10624 2022,0,0 2029,0,1 2036,0,2 2042,0,0 2075,0,0 2112,0,@10826 2184,0,0 2191,0,0 2198,0,2 2204,0,0 2227,0,@10858 2239,0,@10859 2253,0,@10860 2260,0,@10861 2279,0,@9545 2296,0,4 2317,0,16777215 2375,0,0 2443,0,3 2507,0,@10862 2557,0,@9958 2566,1,@4895 2571,0,@9967 2576,0,2 2581,1,@4896 2618,0,3 2651,0,@10863 2688,0,@10448 2723,0,@10449 2758,0,@10625 2825,0,@10448 2860,0,@10449 2895,0,@10625 2962,0,@10866 2997,0,@10867 3033,0,0 3040,0,1 3047,0,1 3053,0,0 3117,0,@10862 3167,0,@9958 3176,1,@4895 3181,0,@9967 3186,0,2 3191,1,@4896 3228,0,3 3261,0,@10863 3298,0,@10448 3333,0,@10449 3368,0,@10625 3435,0,@10448 3470,0,@10449 3505,0,@10625 3572,0,@10866 3607,0,@10867 3643,0,0 3650,0,1 3657,0,1 3663,0,0 3712,0,@10868 3749,0,@10449 3784,0,@10448 3851,0,@10449 3886,0,@10448 3956,0,@10448 4027,0,0 4034,0,0 4041,0,3 4047,0,0 4060,0,@9465 4120,0,0 4157,0,@10448 4192,0,@10869 4228,0,0 4235,0,0 4242,0,2 4248,0,0 4297,0,0 4334,0,@10448 4369,0,@10871 4405,0,0 4412,0,0 4419,0,2 4425,0,0 4474,0,0 4511,0,@10448 4546,0,@10873 4582,0,0 4589,0,0 4596,0,2 4602,0,0 4635,0,0 4672,0,@10448 4739,0,@10448 4811,0,0 4818,0,1 4825,0,0 4831,0,0 4864,0,1 4871,0,0 4896,0,@10214 4910,0,@10875 4917,1,@5068 4954,0,3 5051,0,@10624 5088,0,@10625 5123,0,@10450 5159,0,0 5166,0,1 5173,0,2 5179,0,0 5193,1,@5070 5198,1,@5071 5235,0,@10625 5270,0,@10450 5306,0,0 5313,0,1 5320,0,2 5326,0,0 5359,0,0 5396,0,@10826 5468,0,0 5475,0,0 5482,0,2 5488,0,0 5510,0,@10884 5530,0,@9967 5535,0,1 5540,1,@4896 5569,0,@10886 5589,0,4 5610,0,16777215 5668,0,0 5677,0,@10886 5682,0,7 5746,0,3 5756,0,@9465 5778,0,@9967 5783,0,1 5788,1,@4896 5817,0,@10887 5837,0,4 5858,0,16777215 5916,0,0 5925,0,@10887 5930,0,5 5994,0,3 6004,0,@9465 6017,0,@9967 6022,0,1 6027,1,@4896 6048,0,@10888 6065,0,4 6086,0,16777215 6140,0,0 6207,0,3 6213,0,@9465 6223,0,0 6231,1,@5072 6240,1,@5073 6277,0,@10450 6313,0,0 6320,0,1 6327,0,1 6333,0,0 6366,0,@10624 6404,0,0 6411,0,1 6418,0,2 6424,0,0 6457,0,0 6494,0,@10826 6529,0,@10889 6565,0,0 6572,0,0 6579,0,2 6585,0,0 6614,0,@9967 6623,0,1 6628,1,@4896 6657,0,@10891 6677,0,4 6698,0,16777215 6756,0,0 6765,0,@10891 6770,0,10 6834,0,3 6883,0,@10446 6920,0,@10448 7019,0,@10892 7055,0,0 7062,0,0 7069,0,3 7075,0,0 7088,0,@9465 7121,0,@9967 7130,0,1 7135,1,@4896 7151,0,@10894 7158,0,@9473 7191,0,0 7228,0,@9598 7294,0,@9596 7299,1,@4827 7336,0,3 7369,0,0 7406,0,@10895 7474,0,0 7481,0,0 7488,0,2 7494,0,0 7531,0,@10896 7538,0,@9473 7544,0,0 7549,1,@5074 7587,0,0 7594,0,0 7601,0,0 7607,0,0 7631,0,@9539 7648,0,4 7669,0,16777215 7727,0,0 7774,0,@9539 7791,0,4 7812,0,16777215 7870,0,0 7938,0,3 7976,0,3 7982,0,@9967 7991,0,1 7996,1,@4896 8025,0,@10920 8045,0,4 8066,0,16777215 8124,0,0 8151,0,@10920 8156,0,8 8209,0,3 8219,1,@5086 8224,0,4 8270,0,0 8276,0,4 8281,0,@10921 8286,0,8 8339,0,3 8349,1,@5087 8354,1,@5088 8424,0,0 8431,0,1 8438,0,1 8444,0,0 8450,0,5 8494,0,0 8500,0,7 8505,0,@10922 8510,0,14 8563,0,3 8573,1,@5089 8578,1,@5090 8648,0,0 8655,0,1 8662,0,1 8668,0,0 8701,0,@10923 8738,0,@10448 8805,0,@10448 8872,0,@10448 8939,0,@10448 9006,0,@10448 9041,0,@10927 9076,0,@10448 9111,0,@10447 9146,0,@10448 9213,0,@10448 9248,0,@10929 9284,0,0 9291,0,0 9298,0,4 9304,0,0 9353,0,0 9390,0,@10826 9458,0,0 9465,0,1 9472,0,2 9478,0,0 9491,0,@9465 9505,0,@9465 9519,0,@9465 9537,0,@5058 9572,0,@10931 9579,0,@10932 9586,0,@10933 9593,0,@10934 9600,0,@10935 9607,0,@10936 9622,0,@10937 9629,0,@10938 9644,0,@10939 9651,0,@10940 9658,0,@10941 9677,0,@10942 9697,0,4 9718,0,16777215 9776,0,0 9847,0,3 9911,0,@10862 9961,0,@9958 9970,1,@4895 9975,0,@9967 9980,0,2 9985,1,@4896 10022,0,3 10055,0,@10863 10092,0,@10448 10127,0,@10449 10162,0,@10625 10229,0,@10448 10264,0,@10449 10299,0,@10625 10366,0,@10866 10401,0,@10867 10437,0,0 10444,0,1 10451,0,1 10457,0,0 10490,0,0 10527,0,@10448 10598,0,0 10605,0,0 10612,0,3 10618,0,0 10631,0,@9465 10644,0,3 10690,0,0 10696,0,2 10755,0,3 10765,1,@5091 10770,1,@5092 10844,0,0 10851,0,1 10858,0,1 10864,0,0 10885,1,@5093 10923,0,0 10930,0,1 10937,0,2 10943,0,0 10992,0,0 11030,0,0 11037,0,1 11044,0,2 11050,0,0 11083,0,@10946 11120,0,@10826 11155,0,@10950 11190,0,@10448 11261,0,@10826 11296,0,@10952 11332,0,0 11339,0,1 11346,0,0 11352,0,0 11397,0,@10624 11434,0,@10954 11470,0,0 11477,0,1 11484,0,1 11490,0,0 11509,0,0 11514,0,0 11535,0,@5058 11570,0,@10931 11577,0,@10932 11584,0,@10933 11591,0,@10934 11598,0,@10935 11605,0,@10936 11620,0,@10937 11627,0,@10938 11642,0,@10939 11649,0,@10940 11656,0,@10941 11683,0,@10956 11703,0,4 11724,0,16777215 11782,0,0 11791,0,@10956 11796,0,5 11860,0,3 11924,0,@10862 11974,0,@9958 11983,1,@4895 11988,0,@9967 11993,0,2 11998,1,@4896 12035,0,3 12068,0,@10863 12105,0,@10448 12140,0,@10449 12175,0,@10625 12242,0,@10448 12277,0,@10449 12312,0,@10625 12379,0,@10866 12414,0,@10867 12450,0,0 12457,0,1 12464,0,1 12470,0,0 12519,0,0 12556,0,@10448 12591,0,@10957 12626,0,@10448 12693,0,@10448 12764,0,0 12771,0,0 12778,0,3 12784,0,0 12797,0,@9465 12848,0,@9958 12853,1,@4895 12858,0,@9967 12863,0,2 12868,1,@4896 12920,0,@9958 12929,1,@4895 12934,0,@9967 12939,0,2 12944,1,@4896 12979,0,@10959 13016,0,@10960 13083,0,@10961 13088,1,@4827 13125,0,3 13174,0,@10624 13211,0,@10448 13279,0,0 13286,0,0 13293,0,3 13299,0,0 13319,0,@10962 13326,0,@10963 13345,0,@9545 13362,0,4 13383,0,16777215 13441,0,0 13509,0,3 13523,1,@5094 13528,1,@5095 13602,0,0 13609,0,1 13616,0,1 13622,0,0 13632,0,@9465 13648,0,@5058 13693,0,@10272 13700,0,@10273 13707,0,@10274 13714,0,@10275 13721,0,@10276 13728,0,@10277 13735,0,@10278 13742,0,@10279 13749,0,@10280 13756,0,@10281 13763,0,@10282 13770,0,@10283 13777,0,@10284 13784,0,@10285 13817,0,0 13854,0,3 13864,1,@5096 13869,1,@5097 13906,0,@10450 13942,0,0 13949,0,1 13956,0,1 13962,0,0 13995,0,@10624 14033,0,0 14040,0,1 14047,0,2 14053,0,0 14086,0,0 14123,0,@10826 14195,0,0 14202,0,0 14209,0,2 14215,0,0 14236,0,@9967 14241,0,1 14246,1,@4896 14254,0,@9967 14263,0,1 14268,1,@4896 14303,0,@10964 14340,0,@9552 14411,0,@10965 14416,1,@4827 14453,0,3 14518,0,@10624 14555,0,@10448 14590,0,@10449 14625,0,@10625 14729,0,0 14736,0,0 14743,0,3 14749,0,0 14795,0,0 14823,0,1 14830,0,0 14858,0,@9455 14957,0,0 14971,0,@10875 14978,1,@5068 15015,0,3 15079,0,12 15093,0,@10875 15100,1,@5068 15137,0,3 15147,0,@9999 5059:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@253|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5060:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@254|66,0,@10624 5061:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@255|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5062:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@256|66,0,@10624 5063:D3,300|3b650c7305ff552ccd0953a8010f850d0100008b38ff70048b342483fe0175388d6424048b3f5a8b078b5f048b7f0857ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b3f8b5424048b078b5f048b7f0857ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e82cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@257|81,0,0 136,0,@10822 174,0,0 181,0,0 188,0,0 194,0,0 245,0,@10448 293,0,0 5064:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@258|66,0,@10624 5065:D3,3200|3b650c7305ff552ccd018b38be90be28b181c61d0000008d74befcffe6e95b000000909090e959000000909090e94a010000909090e93b020000909090e9b7030000909090e977040000909090e937050000909090e933060000909090e9ba070000909090e9b6080000909090e9660a0000909090e9310b0000909090b8786e66b1c38b7804be90be28b181c6970000008d743effffe6eb0ceb11eb16eb1beb20eb25eb2abfb06d66b1eb28bfbc6d66b1eb21bfc86d66b1eb1abfd46d66b1eb13bfe06d66b1eb0cbfec6d66b1eb05bff86d66b18b378d1c750100000083fb017506b8946e66b1c389de83c60a89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be946e66b1b90b0000008d7604d1ef8d3c38d1e9f3a48060ffbfc3b8780566b18b5d04ff238b7804be90be28b181c6900100008d743effffe6eb0ceb11eb16eb1beb20eb25eb2abfb06d66b1eb28bfbc6d66b1eb21bfc86d66b1eb1abfd46d66b1eb13bfe06d66b1eb0cbfec6d66b1eb05bff86d66b18b378d1c750100000083fb017506b8a46e66b1c389de83c61289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708bea46e66b1b9130000008d7604d1ef8d3c38d1e9f3a48060ffbfc3b8780566b18b5d04ff238b780483ff057507bf046e66b1eb2983ff037507bf186e66b1eb1d83ff097507bf286e66b1eb1183ff077507bf3c6e66b1eb05bf486e66b18b378d0c750100000083f901750abfb86e66b1e98200000089ce83c60889f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f870001000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420454c6420565c6420673c64207748d77048d7a08d1e9f3a48062ffbf89d78b378d1c750100000083fb017506b8a46e66b1c389de83c61289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708bea46e66b1b9130000008d7604d1ef8d3c38d1e9f3a48060ffbfc3b8780566b18b5d04ff23b8780566b18b5d04ff238b780483ff057507bfc46e66b1eb1183ff037507bfd06e66b1eb05bfdc6e66b18b378d1c750100000083fb017506b8a46e66b1c389de83c61289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708bea46e66b1b9130000008d7604d1ef8d3c38d1e9f3a48060ffbfc3b8780566b18b5d04ff238b780483ff037507bfe86e66b1eb1183ff057507bf006f66b1eb05bf146f66b18b378d1c750100000083fb017506b8a46e66b1c389de83c61289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708bea46e66b1b9130000008d7604d1ef8d3c38d1e9f3a48060ffbfc3b8780566b18b5d04ff238b7804be90be28b181c69d0500008d743effffe6eb0ceb11eb16eb1beb20eb25eb2abfb06d66b1eb28bfbc6d66b1eb21bfc86d66b1eb1abfd46d66b1eb13bfe06d66b1eb0cbfec6d66b1eb05bff86d66b18b378d1c750100000083fb017506b8206f66b1c389de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305289fed1eec64430016589fed1eec644300261d1efc64438036c8060ffbfc3b8780566b18b5d04ff238b780483ff057507bf046e66b1eb2983ff037507bf186e66b1eb1d83ff097507bf286e66b1eb1183ff077507bf3c6e66b1eb05bf486e66b18b378d0c750100000083f901750abfb86e66b1e98200000089ce83c60889f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f870b01000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420454c6420565c6420673c64207748d77048d7a08d1e9f3a48062ffbf89d78b378d1c750100000083fb017506b8206f66b1c389de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305289fed1eec64430016589fed1eec644300261d1efc64438036c8060ffbfc3b8780566b18b5d04ff23b8780566b18b5d04ff238b7804be90be28b181c6300800008d743effffe6eb0ceb11eb16eb1beb20eb25eb2abfb06d66b1eb28bfbc6d66b1eb21bfc86d66b1eb1abfd46d66b1eb13bfe06d66b1eb0cbfec6d66b1eb05bff86d66b18b378d1c750100000083fb017506b82c6f66b1c389de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305789fed1eec64430016f89fed1eec644300272d1efc6443803648060ffbfc3b8780566b18b5d04ff238b7804ff700883ff057507bf046e66b1eb2983ff037507bf186e66b1eb1d83ff097507bf286e66b1eb1183ff077507bf3c6e66b1eb05bf486e66b18b378d0c750100000083f901750abfb86e66b1e98200000089ce83c60889f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f872d01000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400454c6400565c6400673c64007748d77048d7808d1e9f3a48060ffbf89c75e83fe037507be386f66b1eb05be486f66b1568b378d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175078d64240889f8c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775c89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff238d642404b8780566b18b5d04ff238b780483ff057507bfc46e66b1eb1183ff037507bfd06e66b1eb05bfdc6e66b18b378d1c750100000083fb017506b82c6f66b1c389de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305789fed1eec64430016f89fed1eec644300272d1efc6443803648060ffbfc3b8780566b18b5d04ff238b780483ff037507bfe86e66b1eb1183ff057507bf006f66b1eb05bf146f66b18b378d1c750100000083fb017506b82c6f66b1c389de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305789fed1eec64430016f89fed1eec644300272d1efc6443803648060ffbfc3b8780566b18b5d04ff23f400|@10857,1,@259|13,0,@5065 126,0,@10843 135,0,@5065 166,0,@10829 173,0,@10830 180,0,@10831 187,0,@10832 194,0,@10833 201,0,@10834 208,0,@10835 227,0,@10844 243,0,4 264,0,16777215 318,0,0 344,0,@10844 349,0,5 371,0,@9465 384,0,@5065 415,0,@10829 422,0,@10830 429,0,@10831 436,0,@10832 443,0,@10833 450,0,@10834 457,0,@10835 476,0,@10845 492,0,4 513,0,16777215 567,0,0 593,0,@10845 598,0,9 620,0,@9465 638,0,@10836 650,0,@10837 662,0,@10838 674,0,@10839 681,0,@10840 700,0,@10846 720,0,4 741,0,16777215 799,0,0 854,0,@10845 870,0,4 891,0,16777215 945,0,0 971,0,@10845 976,0,9 998,0,@9465 1008,0,@9465 1026,0,@10847 1038,0,@10848 1045,0,@10849 1064,0,@10845 1080,0,4 1101,0,16777215 1155,0,0 1181,0,@10845 1186,0,9 1208,0,@9465 1226,0,@10850 1238,0,@10851 1245,0,@10852 1264,0,@10845 1280,0,4 1301,0,16777215 1355,0,0 1381,0,@10845 1386,0,9 1408,0,@9465 1421,0,@5065 1452,0,@10829 1459,0,@10830 1466,0,@10831 1473,0,@10832 1480,0,@10833 1487,0,@10834 1494,0,@10835 1513,0,@10853 1529,0,4 1550,0,16777215 1604,0,0 1668,0,@9465 1686,0,@10836 1698,0,@10837 1710,0,@10838 1722,0,@10839 1729,0,@10840 1748,0,@10846 1768,0,4 1789,0,16777215 1847,0,0 1902,0,@10853 1918,0,4 1939,0,16777215 1993,0,0 2057,0,@9465 2067,0,@9465 2080,0,@5065 2111,0,@10829 2118,0,@10830 2125,0,@10831 2132,0,@10832 2139,0,@10833 2146,0,@10834 2153,0,@10835 2172,0,@10854 2188,0,4 2209,0,16777215 2263,0,0 2327,0,@9465 2348,0,@10836 2360,0,@10837 2372,0,@10838 2384,0,@10839 2391,0,@10840 2410,0,@10846 2430,0,4 2451,0,16777215 2509,0,0 2556,0,@10855 2563,0,@10856 2629,0,4 2650,0,16777215 2704,0,0 2753,0,@9465 2767,0,@9465 2785,0,@10847 2797,0,@10848 2804,0,@10849 2823,0,@10854 2839,0,4 2860,0,16777215 2914,0,0 2978,0,@9465 2996,0,@10850 3008,0,@10851 3015,0,@10852 3034,0,@10854 3050,0,4 3071,0,16777215 3125,0,0 3189,0,@9465 5066:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@260|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5067:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@261|66,0,@10624 5068:D3,2048|3b650c7305ff552ccd0589c7f7c7010000000f84d7000000f7c701000000740783ff017d12eb140fb677ff8d34750100000083fe23740489f8eb0c89fbb8b02f66b1e81193fdffba803066b1bb05000000e84293fdff89c78b378d0c750100000083f9017506b8907066b1c389ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775389d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c640044cc6400549c64006548d77048d7807d1e9f3a48060ffbfc3b8780566b18b5d04ff23f7c70100000074398b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400c304266b1c74008644266b1c74004584266b18b7a0889388b5d04ff230fb677ff89f18d34750100000081e6ff01000083e60783fe050f85580100008b520489f8ff1289c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf9c7066b1e98900000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f700000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf9c7066b1b90d0000008d77048d7a04d1e9f3a489d95f8d77048d7a0ad1e9f3a48062ffbf89d78b378d1c750100000083fb017506b8c00d66b1c389de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438228060ffbfc3b8780566b18b5d04ff238d642404b8780566b18b5d04ff2389ce8d0c4d0100000081e1ff01000083e10783f9030f851b0100008b5ffcc1e308c1eb0783cb01f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e85f90fdff5f89c6f7c6010000000f84cb00000083ee016bf604710ab8f80466b18b5d04ff2383c60183fe217d02eb05be2100000083fe0375180fb63f8d347d01000000bf400666b18b4477fee9d503000083fe01750ab8100666b1e9c603000083fe017c6f89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01774489cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe0000000089f1d1e9890abb01000000e94e030000b8780566b18b5d04ff23b8b00566b18b5d04ff23b8d02f66b18b5d04ff23f7c70100000074398b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400c304266b1c74008644266b1c74004584266b18b7a0889388b5d04ff238d34750100000081e6ff01000083e60783fe010f85d0020000f7c70100000074398b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400c304266b1c74008644266b1c74004584266b18b7a0889388b5d04ff238b5ffcc1e308c1eb0783cb01f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb10b8b02f66b15752e8a88efdff5a5f89c6f7c6010000000f843d02000083fe037c07be03000000eb05be0100000083fe030f852d020000f7c70100000074398b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400c304266b1c74008644266b1c74004584266b18b7a0889388b5d04ff238b07a8017407bf03000000eb05bf0100000083ff030f84c1010000a80174398b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400c304266b1c74008644266b1c74004584266b18b7a0889388b5d04ff230fb678ff8d3c7d0100000081e7ff01000083e70783ff057507bf03000000eb05bf0100000083ff030f85560100008b5204ff1289c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfac7066b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f700000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfac7066b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d78b378d1c750100000083fb017506b8c00d66b1c389de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775489d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438228060ffbfc3b8780566b18b5d04ff238d642404b8780566b18b5d04ff23b8bc7066b1c3b8d02f66b18b5d04ff23b8bc7066b1c33bf30f87c00000008062ffbf89d0bb6c0566b1e87b4afdff89c7578b3c248b3f8d1c7d0100000083fb01750a8d642404b8d87066b1c389df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01775e89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bfd87066b1b9130000008d77048d7804d1e9f3a489d95f8d77048d780dd1e9f3a48060ffbfc38d642404b8780566b18b5d04ff2389d983c1085189d9d1e90fb60c0f58d1e8880c0289d983c10289cb3b650c7305ff552ccdcce90efffffff4|@10882,1,@262|62,0,@9958 67,1,@4895 72,0,@9967 77,0,2 82,1,@4896 103,0,@10877 119,0,4 140,0,16777215 194,0,0 230,0,@9465 276,0,@10190 283,0,@10194 290,0,@10193 367,0,@10878 387,0,4 408,0,16777215 466,0,0 475,0,@10878 480,0,6 528,0,@9539 544,0,4 565,0,16777215 619,0,0 656,0,@9465 670,0,@9465 751,0,@9958 757,1,@4895 785,0,@9455 805,0,16 825,0,@9476 844,0,@9473 864,0,4 885,0,16777215 939,0,0 950,0,0 960,0,@9465 970,0,@9468 980,0,@9960 1026,0,@10190 1033,0,@10194 1040,0,@10193 1116,0,@10190 1123,0,@10194 1130,0,@10193 1189,0,@9958 1196,1,@4895 1222,0,1 1229,0,0 1279,0,@10190 1286,0,@10194 1293,0,@10193 1314,0,1 1321,0,0 1367,0,@10190 1374,0,@10194 1381,0,@10193 1421,0,1 1428,0,0 1471,0,@10879 1491,0,4 1512,0,16777215 1570,0,0 1579,0,@10879 1584,0,5 1632,0,@9539 1648,0,4 1669,0,16777215 1723,0,0 1760,0,@9465 1774,0,@9465 1784,0,@10880 1790,0,@9960 1800,0,@10880 1820,0,@9464 1825,1,@4826 1854,0,@10881 1870,0,4 1891,0,16777215 1945,0,0 1954,0,@10881 1959,0,9 1996,0,@9465 5069:D3,44|b9947246b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@10883,1,@263|1,0,@19844 5070:D3,284|3b650c7305ff552ccd0953a8010f85fb0000008b38ff70048b342483fe01752f8d6424048b075aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b078b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83effffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10824,1,@264|72,0,0 118,0,@10822 156,0,0 163,0,0 170,0,0 176,0,0 227,0,@10448 275,0,0 5071:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@265|66,0,@10624 5072:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@266|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5073:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@267|66,0,@10624 5074:D3,688|3b650c7305ff552ccd095083fb01750a8d642404b801000000c38b3bff7304ff37ff7704ba803066b18b44240cbb03000000e8f587fdff89c78b378d0c750100000083f9017507be687166b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f872602000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420441c6420572c64206678d77048d7a07d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e8cb010000e87a0a000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642408578b7c240483ff017507b8c47266b1eb05b801000000f6442408017407bb01000000eb05bbf87266b183fb01750489c3eb07e8d609000089c383fb0175065e83c404eb0e8b0424e8250a000089c68d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470409000000c70701000000578b44240883c002710e8d64240cb8f80466b18b5d04ff238b5c2404e88efdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c38d642410b8780566b18b5d04ff23f4000000|@10919,1,@279|21,0,0 37,0,@9967 46,0,1 51,1,@4896 72,0,@10888 89,0,4 110,0,16777215 168,0,0 235,0,3 245,1,@5075 250,1,@5083 287,0,@10867 323,0,0 330,0,1 337,0,1 343,0,0 376,0,0 413,0,@10448 466,0,@10911 473,0,0 485,0,0 492,0,@10915 506,1,@5084 527,1,@5085 569,0,0 576,0,0 583,0,4 589,0,0 608,0,@9455 675,0,@9465 5075:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e8fa00000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e8cf00000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@275|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5076:D3,892|3b650c7305ff552ccd018b3889fe83ff050f85030200008b7804ff7008ba803066b189f8bb03000000e81284fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bff47166b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879201000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abff47166b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb017507be6c1066b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87e600000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a5b8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e8f6010000e81d03000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2389f783fe010f8542010000ff70048b4008e8e802000089c7578b442404e864030000e88b04000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706705566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706607266b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703485566b183fb0175065e83c404eb0e8b0424e82304000089c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c383ff037506b8787266b1c3b8947266b1c3f4000000|@10910,1,@274|30,0,@9967 37,0,1 42,1,@4896 71,0,@10897 91,0,4 112,0,16777215 170,0,0 179,0,@10897 184,0,8 232,0,@9596 249,0,4 270,0,16777215 328,0,0 396,0,3 406,1,@5077 411,1,@5078 485,0,0 492,0,1 499,0,1 505,0,0 515,0,@9465 529,0,@9465 556,1,@5079 568,1,@5080 573,1,@5081 610,0,@10450 645,0,@10448 680,0,@10905 715,0,@10448 750,0,@10447 769,1,@5082 810,0,@10450 846,0,0 853,0,1 860,0,1 866,0,0 877,0,@10907 883,0,@10909 5077:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba047266b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba047266b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@268|42,0,@10898 79,0,0 87,0,@10898 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 5078:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@269|66,0,@10863 5079:D3,116|3b650c7305ff552ccd01a801755c8b400483f8017506b80c7266b1c3e8dfffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700187266b1c3b801000000c3f4000000|@10824,1,@270|23,0,@10899 66,0,@10448 101,0,@10900 107,0,0 5080:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba047266b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba047266b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c746043c7266b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@271|42,0,@10898 79,0,0 87,0,@10898 124,0,@10902 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 5081:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@272|66,0,@10624 5082:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@273| 5083:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@276|66,0,@10863 5084:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@277| 5085:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@278| 5086:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@280|50,0,8 102,0,0 5087:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@281|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5088:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@282|66,0,@10624 5089:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e816f5ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e8ebf4ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@283|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5090:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@284|66,0,@10863 5091:D3,284|3b650c7305ff552ccd0953a8010f85fb0000008b38ff70048b342483fe01752f8d6424048b075aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b078b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83effffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10824,1,@285|72,0,0 118,0,@10822 156,0,0 163,0,0 170,0,0 176,0,0 227,0,@10448 275,0,0 5092:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@286|66,0,@10624 5093:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604c47466b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@287|76,0,0 120,0,@10943 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5094:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@288|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5095:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@289|66,0,@10624 5096:D3,284|3b650c7305ff552ccd0989c753f7c7010000000f85f70000008b07ff77048b3c2483ff01752d8d6424045aff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b542404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10824,1,@290|76,0,0 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 229,0,@10448 277,0,0 5097:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@291|66,0,@10624 5098:D3,944|3b650c7305ff552ccd0d5250ba803066b189d8bb03000000e80f72fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be247666b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873603000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf247666b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e8cf020000e8f203000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b7c240c8b57048b442414ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470405000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707786d66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a87366b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706447666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c07366b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c204008d64240cb8780566b18b5d04ff23f40000|@10971,1,@295|13,0,@9967 20,0,1 25,1,@4896 54,0,@10968 74,0,4 95,0,16777215 153,0,0 162,0,@10968 167,0,9 231,0,3 241,1,@5099 246,1,@5100 283,0,@10867 319,0,0 326,0,1 333,0,1 339,0,0 388,0,0 426,0,0 433,0,0 440,0,2 446,0,0 479,0,0 516,0,@10826 551,0,@10969 586,0,@10448 621,0,@10925 656,0,@10448 723,0,@10448 758,0,@10970 793,0,@10927 828,0,@10448 900,0,0 907,0,0 914,0,1 920,0,0 932,0,@9465 5099:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e8fae9ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e8cfe9ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@293|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5100:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@294|66,0,@10863 5101:D3,1332|3b650c7305ff552ccd0589c7528b3789f283fe010f8584040000ff77048b4708ff770cff7710ba803066b1bb03000000e8af6cfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be247666b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870f04000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf247666b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b44240ce83b040000e85e05000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c7070100000057ba803066b18b44240cbb03000000e8616bfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be7c7666b1e98900000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87b302000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf7c7666b1b9190000008d77048d7a04d1e9f3a489d95f8d77048d7a10d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24188b57048b44240cff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706907666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a87366b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706447666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c07366b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c7000100000083c40cc38d64241cb8780566b18b5d04ff238d642414b8780566b18b5d04ff2389d683fa0575098b47045f8b5704ff2283fe07756a8b47045f8b5f04e80d02000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc7666b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c70001000000c38b47048b5f088b770c5f8b5708ff342489742404ff22f4|@10981,1,@303|39,0,@9967 44,0,1 49,1,@4896 78,0,@10968 98,0,4 119,0,16777215 177,0,0 186,0,@10968 191,0,9 255,0,3 265,1,@5102 270,1,@5103 307,0,@10867 343,0,0 350,0,1 357,0,1 363,0,0 369,0,@9967 378,0,1 383,1,@4896 412,0,@10972 432,0,4 453,0,16777215 511,0,0 520,0,@10972 525,0,12 589,0,3 638,0,0 675,0,@10448 710,0,@10973 745,0,@10448 812,0,@10448 847,0,@10925 882,0,@10448 949,0,@10448 984,0,@10970 1019,0,@10927 1054,0,@10448 1126,0,0 1133,0,0 1140,0,1 1146,0,0 1159,0,@9465 1173,0,@9465 1211,1,@5104 1248,0,@10979 1284,0,0 1291,0,1 1298,0,0 1304,0,0 5102:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e82ee3ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e803e3ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@296|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5103:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@297|66,0,@10863 5104:D3,2056|3b650c7305ff552ccd0953a8010f85e80700008b38ff70048b342483fe010f85a60300008d642404ff378b4704ff7708ba803066b1bb03000000e8d965fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be587166b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873103000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf587166b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442408e805070000e82808000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b5424108b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c70019000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707387666b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a87366b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c07366b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d64240c893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38d642410b8780566b18b5d04ff23ff378b4704ff7708ba803066b1bb03000000e83762fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be587166b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87c003000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf587166b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442408e8e7040000e80a06000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b5424148b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c70019000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460405000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707387666b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a87366b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c07366b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a87666b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b4424048b5c2408e85df8ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424088938c38d642414b8780566b18b5d04ff238d642404b801000000c3f40000|@10824,1,@302|49,0,@9967 54,0,1 59,1,@4896 88,0,@10887 108,0,4 129,0,16777215 187,0,0 196,0,@10887 201,0,5 265,0,3 275,1,@5105 280,1,@5106 317,0,@10867 353,0,0 360,0,1 367,0,1 373,0,0 417,0,12 454,0,0 492,0,0 499,0,0 506,0,2 512,0,0 545,0,0 582,0,@10826 617,0,@10969 652,0,@10448 687,0,@10925 722,0,@10448 789,0,@10927 824,0,@10448 896,0,0 903,0,0 910,0,0 916,0,0 949,0,0 961,0,@9465 979,0,@9967 984,0,1 989,1,@4896 1018,0,@10887 1038,0,4 1059,0,16777215 1117,0,0 1126,0,@10887 1131,0,5 1195,0,3 1205,1,@5107 1210,1,@5108 1247,0,@10867 1283,0,0 1290,0,1 1297,0,1 1303,0,0 1347,0,12 1384,0,0 1422,0,0 1429,0,0 1436,0,2 1442,0,0 1475,0,0 1512,0,@10826 1547,0,@10969 1582,0,@10448 1617,0,@10925 1652,0,@10448 1719,0,@10927 1754,0,@10448 1826,0,0 1833,0,0 1840,0,0 1846,0,0 1879,0,@10975 1917,0,0 1924,0,0 1931,0,0 1937,0,0 1988,0,@10448 2034,0,@9465 2048,0,0 5105:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e88ed9ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e863d9ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@298|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5106:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@299|66,0,@10863 5107:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e80ad8ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e8dfd7ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10824,1,@300|42,1,@5076 77,0,0 85,1,@5076 120,0,@10822 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 5108:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@301|66,0,@10863 5109:D3,84|3b650c7305ff552ccd096a016a018b4c241c8b7c24148b7424108b54240c6a0354830424045756535289cbe8380000005e5f8b1e8b56048b4e088b742410891e894e04895608897e0cb801000000c21400f40000|@12996,1,@1644|44,1,@5110 74,0,0 5110:D3,1056|3b650c7305ff552ccd096a016a016a018b7c241c8b742418545756e8140400008b3c24ff7424048b74240c8b54242883fa037502eb2083fe03741b8b742424893e8b3c24897e048d642404b80100000083c40cc218008b742418f7c601000000753b8b0e8b56048b1981fb8401c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750abee46966b1e9f00200008b368b1681fa8401c0b075058b7608eb0e8d642410b8483366b18b5d04ff23568b74241cf7c601000000753b8b0e8b56048b1981fb3402c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe017507bea09166b1eb138b368b1681fa3402c0b00f855a0200008b7608568b1f8b47048b7f0857e82127010089c7578b7c240883ff03750d8b542404b8a89166b1ff12eb008b7c240883ff03751dff742404ba046d66b18b442404e85577ffff8b1424ff128d642404eb0068d09166b168689266b1ff74241468709266b18b442410bbc05366b1e8bd8f000089c7578b7c240c83ff03750d8b542408b8789266b1ff12eb008b7c240c83ff03751dff742408ba046d66b18b442404e8f576ffff8b1424ff128d642404eb00be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7424148b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c70610302ab18b5424308b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c2404894f0889570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7034c302ab18b442408e8a10d00006a016a016a018b7c24108b3789f283fe0375158b74240c8b3689d789042489742404897c2408eb2e8b7c240c8b3f6a016a016a018b5c24488b74244457548304240456e88de301005a5e5f89142489742404897c2408ff3424ff742408ff7424108b7c242c83ff03750d8b542428b8c84e67b1ff12eb008b7c242c83ff03751dff742428ba046d66b18b44240ce89b75ffff8b1424ff128d642404eb00ff742408ff742408ff7424088b7424608b54245c8b4c24588b5c24548b442450894424508b442408895c24548b5c2404894c24588954245c897424608b3c24897c246483c44ce971fcffff8d6424188d642414b8483366b18b5d04ff23f7c601000000753b8b0e8b56048b1981fb8401c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750e8d642410b8489d66b18b5d04ff238b368b1681fa8401c0b075088b7608e9c0fcffff8d642410b8483366b18b5d04ff23f400|@12995,1,@1643|28,1,@5111 76,0,0 107,0,@4643 158,0,0 168,0,@10769 183,0,@4643 199,0,@9999 230,0,@4665 281,0,0 291,0,@11173 303,0,@4665 327,1,@5284 348,0,@11174 370,0,@10820 379,1,@5058 395,0,@11176 400,0,@11181 409,0,@11182 418,0,@10422 423,1,@5190 444,0,@11183 466,0,@10820 475,1,@5058 491,0,0 589,0,@5289 666,0,@5290 675,1,@5117 747,1,@5410 790,0,@12993 812,0,@10820 821,1,@5058 920,0,@9999 946,0,@4643 997,0,0 1011,0,@11247 1026,0,@4643 1045,0,@9999 5111:D3,512|3b650c7305ff552ccd0989df89c3ba010000008b75008d76f83b75087305ff5528cd8c897500c746fc0100004089165683ff017d098d642404e93101000081ffffffff010f8d2101000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd0a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab8b75008d76f43b75087305ff5528cd0c897500c746fc02000000895604c706040c29b18b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707180d29b18b55008d52f43b55087305ff5528cdc8895500c742fc020000008b0c24894a04c702880d29b1b8010000008b4d008d49f83b4d087305ff5528cdcd894d00c741fc010000408901518b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089510c8971088b342489710489396a016a016a01baac7866b18b7c241c8b7424186a015483042404575689d889cbe87b020000ff34248b5424088b74240cbf01000000eb0e8d642404b8383066b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b4d008d49f03b4d087305ff5528cdc0894d00c741fc030000008971088979048b3c2489398d6424048b7c24108b178b7c240c8b3f8b742420890e895604897e08b80100000083c414c20c00f400|@11172,1,@475|15,0,0 64,0,16777215 120,0,0 157,0,@5112 192,0,@5113 230,0,@5114 235,0,0 315,0,@10993 341,1,@5115 357,0,0 368,0,@9964 500,0,0 5112:D3,256|3b650c7305ff552ccd058b3889fe83ff03750ab8207766b18b5d04ff236a016a0189f783fe0775338b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c70703000000893c24c7442404003b66b1e98000000083ff0175308b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c70703000000893c24c7442404003b66b1eb4b8b70048b4a0489cf8b49fcc1e108c1e90783c9013bf1720e8d642408b8783266b18b5d04ff238b7c77fe83ff01750e8d642408b8b07766b18b5d04ff238b3f8b378934248b7f04897c24045f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@10990,1,@304|20,0,@10982 71,0,1 82,0,@10093 127,0,1 138,0,@10093 173,0,@9988 196,0,@10986 5113:D3,92|3b650c7305ff552ccd0589d68b108b48048b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f8b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8003566b18b5d04ff2389ce897c56feb801000000c3f4000000|@10991,1,@305|67,0,@10015 83,0,0 5114:D3,40|3b650c7305ff552ccd058b720489f78b0689fe8b3f83c702710ab8f80466b18b5d04ff23893ec3f4|@10992,1,@306|27,0,@9455 5115:D3,1984|3b650c7305ff552ccd0d52538b38bec40d29b181c61f0000008d74befcffe6e9ab000000909090e985010000909090e97e020000909090e9cf020000909090e96e020000909090e922030000909090e95e020000909090e975030000909090e9d0030000909090e946020000909090e93e020000909090e943040000909090e9c1050000909090e926020000909090e91e020000909090e911060000909090e90e020000909090e906020000909090e9fe010000909090e9f6010000909090e94c060000909090e99b060000909090ff7004ff70088b400c6a016a016a018b4c24188b7c242c8b7424248b542420575483042404565289ca8b5c2424e8fffeffffff34248b7c24086a016a016a018b4c24288b7424348b542430575483042404565289ca8b4424308b5c2434e8cffeffffff34248b7c24086a016a016a018b4c24388b7424448b542440575483042404565289ca8b44243c8b5c2444e89ffeffff5f5e8d6424048b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2410894a0c897a085f8d64242c897a04c702010000008b7c240c8917897704c74708003b66b1b801000000c210008b48048b79088b3783fe01757a8b5f048b118b71048b790c8b49108b442404ff700c5351525657ff7424188b5424348b4c24308b5c242c8b4424288b742424895c241c8b5c2410894c2420895424248b542418894424188b4424148b3c24897c24288b7c2404897c242c8b7c2408897c24308b7c240c897c24348974241483c414ff228d6424248b5f048b118b71048b790c8b49108b442404ff70105351525657ff7424188b5424348b4c24308b5c242c8b4424288b742424895c241c8b5c2410894c2420895424248b542418894424188b4424148b3c24897c24288b7c2404897c242c8b7c2408897c24308b7c240c897c24348974241483c414ff228d6424248b7c24108b74240c8b5d008d5be83b5d087305ff5528cdc1895d00c743fc05000000897310897b0c5f897b085f8b7f28897b04c703981529b1e8500500008b5c24108b74240c897424108b3c24897c240c83c40ce9a91600008b70048b78088b500c8b4c2404ff7114525657ff7424108b54242c8b4c24288b5c24248b4424208b74241c894424188b44240c895c241c8b5c2408894c2420895424248b5424108b3c24897c24288b7c2404897c242c8974241483c414ff228d64241c8b50048b70088b780c8b4c2404ff7108525657ff7424108b54242c8b4c24288b5c24248b4424208b74241c894424188b44240c895c241c8b5c2408894c2420895424248b5424108b3c24897c24288b7c2404897c242c8974241483c414ff228d64241c8b70048b50088b780c8b4c2404ff711c525657ff7424108b54242c8b4c24288b5c24248b4424208b74241c894424188b44240c895c241c8b5c2408894c2420895424248b5424108b3c24897c24288b7c2404897c242c8974241483c414ff228d64241c8b40045f8b5708ff1289c78b378b7f048b1683fa0175328d6424048b56048b76088b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000897108895104c7010d000000eb2a8d6424048b76048b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000897104c701110000008b74240c8b542410890e895604897e08b801000000c210008b5804ff7008ff700c6a016a016a018b4c24188b7c242c8b7424248b542420575483042404565289d889ca8b5c2424e80dfbffff8b3c24ff7424048b74240c8b1683fa070f85830000008b56088b442414ff1289c78b378b7f048b1683fa01752e8b4e048b76088b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208894a04c7020d000000eb268b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702110000008b74242c89165a895604897e08b80100000083c41cc210008b74241083fe03754b8b3783fe0d75116a0389f88b5c2418e86f26ffff89c6eb318b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b542414895608897e04c70617000000eb498b3783fe0d75116a0189f88b5c2418e82426ffff89c6eb318b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000008b542414895608897e04c706170000008b7c242c89375e897704c74708003b66b1b80100000083c41cc210008b40046a016a018b7c240c8b57208b7c24188b7424146a016a01548304240857568b5c241cff125e5f8d6424088b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000897104c701190000008b74240c8b542410890e895604897e08b801000000c210008b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742404ff7624578b4424088b7424208b54241c8b4c24188b5c2414895c241489c38b0424894c24188954241c8b5424048974242083c410ff228d6424108b70048b78088b542404ff72045657ff74240c8b5424288b4c24248b5c24208b44241c8b742418894424188b442408895c241c8b5c2404894c2420895424248b54240c8b3c24897c24288974241483c414ff228d6424188b78048b70088b542404ff72185657ff74240c8b5424288b4c24248b5c24208b44241c8b742418894424188b442408895c241c8b5c2404894c2420895424248b54240c8b3c24897c24288974241483c414ff228d642418f400|@11008,1,@320|15,0,@5115 405,0,0 421,0,@10093 426,0,0 743,0,@5116 748,1,@5117 775,1,@5127 1143,0,6 1187,0,8 1208,0,0 1352,0,6 1392,0,8 1410,0,0 1445,1,@4973 1482,0,1 1498,0,11 1520,1,@4973 1557,0,0 1573,0,11 1590,0,@10093 1595,0,0 1681,0,12 1702,0,0 5116:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@307| 5117:D3,52|3b650c7305ff552ccd0950538b14248b442404ff1289c783ff01750e8b4424045b8d642404e91e0000008d6424088b07c3f40000|@11006,1,@317|38,1,@5118 5118:D3,2840|3b650c7305ff552ccd09538b38be4c1629b181c61e0000008d74befcffe6e9ab000000909090e912010000909090e9c0010000909090e90b020000909090e962020000909090e96a040000909090e9d6040000909090e9d3040000909090e928050000909090e925050000909090e927050000909090e97e050000909090e9c6050000909090e969060000909090e969070000909090e996070000909090e9e1070000909090e910080000909090e968080000909090e987090000909090e9cf090000909090e9080a0000909090ff7004ff70088b400cba407966b18b5c2408ff1289c757ba407966b18b4424088b5c240cff1289c757ba407966b18b4424088b5c2410ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642414c70001000000c38b7804ff37ff7704ff7708ff770c8b4710ba407966b18b5c2410ff1289c757ba407966b18b4424108b5c2414ff1289c757ba407966b18b4424108b5c2418ff1289c757ba407966b18b44240c8b5c241cff1289c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54240889571089770c8b7424108977088b34248977048d6424048b342489378d64241c8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c38b7804ff7008ba407966b189f88b5c2404ff1289c7578b4424048b5c2408e81609000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d64240cc70005000000c38b7804ff7008ff700cba407966b189f88b5c2408ff1289c757ba407966b18b4424088b5c240cff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70007000000c3ff7004ff7008ff700c8b78108b07ff7704ff7708ba407966b18b5c2414ff1289c757f64424080175318b7c24088b07ba407966b18b5c2418ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf010000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b56088957088b56048957048b3689378b378b57048b4f088b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7424088b0689f689f7ff760489ffff7708ba407966b18b5c241cff1289c757f64424080175318b7c24088b07ba407966b18b5c2420ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf010000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b56088957088b56048957048b3689378b378b57048b4f088b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704893757ba407966b18b4424148b5c241cff1289c78b45008d40e83b45087305ff5528cd80894500c740fc050000008b7424088970108b342489700c8d6424048978088b7c2414897804c7000900000083c41cc38b7804ff7008ff700cba407966b189f88b5c2408ff1289c757ba407966b18b4424088b5c240cff1289c757ba407966b18b4424088b5c2410ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b3c248978048d642410c7000b000000c38d642404c3ff70048b7808ff700cba407966b189f88b5c2408ff1289c7578b4424088b5c240ce8b806000089c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8b34248970088d642410897804c7000f000000c38d642404c38d642404b8487966b1c38b7804ff7008ff700cba407966b189f88b5c2408ff1289c757ba407966b18b4424088b5c240cff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70015000000c38b7804ff7008ff700cba407966b189f88b5c2408ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048b34248970088d642408897804c70017000000c38b78048b07ff7704ff7708ff770cff7710ff7714ff7718ff771cba407966b18b5c241cff1289c7578b4424148b5c2420e83206000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc080000008b54240489571c8b5424088957188b54240c8957148b54241089571089770c8b7424188977088b74241c8977048b342489378d6424248b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c3ff70048b78088b07ff7704ff7708ba407966b18b5c240cff1289c757f64424080175318b7c24088b07ba407966b18b5c2410ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf010000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b56088957088b56048957048b3689378b378b57048b4f088b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889570489378b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c2404897804c7001b00000083c40cc38b40048b1c24e86105000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001d000000c38b7804ff700889f88b5c2404e8ca05000089c757ba407966b18b4424048b5c2408ff1289c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d64240cc7001f000000c38b4004ba407966b18b1c24ff1289c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70021000000c3ff7004ff70088b400cba407966b18b5c2408ff1289c757ba407966b18b4424088b5c240cff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048b34248970088d64240c897804c70023000000c3ff7004ff70088b780c8b07ff7704ff7708ba407966b18b5c2410ff1289c757f64424080175318b7c24088b07ba407966b18b5c2414ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf010000008b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b56088957088b56048957048b3689378b378b57048b4f088b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704893757ba407966b18b4424088b5c2410ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b7c2408897804c7002500000083c410c3ff70048b7808ff700cba407966b189f88b5c2408ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b3c248978048d642408c70027000000c38b7804ff700889f88b5c2404e80906000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642408897804c70029000000c38b7804ff7008ba407966b189f88b5c2404ff1289c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642408897804c7002b000000c3f400|@11005,1,@316|14,0,@5118 216,0,@10996 230,0,@10996 248,0,@10996 312,0,0 335,0,@10996 349,0,@10996 367,0,@10996 385,0,@10996 494,0,1 506,0,@10996 530,1,@5119 577,0,2 592,0,@10996 608,0,@10996 672,0,3 698,0,@10996 725,0,@10996 768,0,0 921,0,@10996 948,0,@10996 991,0,0 1126,0,@10996 1197,0,4 1215,0,@10996 1231,0,@10996 1249,0,@10996 1316,0,5 1336,0,@10996 1360,1,@5120 1414,0,7 1429,0,@10997 1444,0,@10996 1460,0,@10996 1524,0,10 1539,0,@10996 1604,0,11 1636,0,@10996 1658,1,@5121 1775,0,12 1795,0,@10996 1822,0,@10996 1865,0,0 2036,0,13 2051,1,@5122 2092,0,14 2110,1,@5123 2118,0,@10996 2175,0,15 2184,0,@10996 2230,0,16 2245,0,@10996 2259,0,@10996 2326,0,17 2349,0,@10996 2376,0,@10996 2419,0,0 2554,0,@10996 2618,0,18 2636,0,@10996 2701,0,19 2719,1,@5126 2766,0,20 2778,0,@10996 2833,0,21 5119:D3,204|3b650c7305ff552ccd0953a8010f85ac0000008b30ff70048b3eff7604ff37ff77048b4708ba407966b18b5c2410ff1289c78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e86affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@308|38,0,@10996 196,0,0 5120:D3,144|3b650c7305ff552ccd0953a80175748b38ff70048b07ff7704ba407966b18b5c2408ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e8a6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@309|26,0,@10996 136,0,0 5121:D3,164|3b650c7305ff552ccd0953a8010f85830000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000ba407966b18b5c2404ff1289c78b3783fe117539ff77048b4424048b5c2408e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b8507966b18b5d04ff238d642404b801000000c3f4000000|@10030,1,@310|55,0,8 60,0,@10996 141,0,@10998 155,0,0 5122:D3,144|3b650c7305ff552ccd0953a80175748b38ff70048b07ff7704ba407966b18b5c2408ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e8a6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@311|26,0,@10996 136,0,0 5123:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e85900000089c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@314|31,1,@5124 97,0,0 5124:D3,288|3b650c7305ff552ccd098b3889fe83ff017557ff7004ff7008ff700c8b4010ba407966b1ff1289c78b45008d40e83b45087305ff5528cd80894500c740fc050000008978108b3c2489780c8d6424048b3c248978088d6424048b3c248978048d642404c70001000000c389f783fe0575308b4004ba407966b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c383ff07752e8b4004e88600000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3ff7004ff70088b400cba407966b1ff1289c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b3c248978048d642404c70003000000c3f400|@11004,1,@313|32,0,@10996 101,0,0 117,0,@10996 156,0,2 170,1,@5125 207,0,3 222,0,@10996 281,0,1 5125:D3,220|3b650c7305ff552ccd0953a8010f85bc0000008b38ff7004ff37ff77048b7f088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000ba407966b18b5c240cff1289c78b3783fe19756a8b77048b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d6424048b342489378d642404578b4424048b5c2408e868ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642410b8b47966b18b5d04ff238d642404b801000000c3f40000|@10030,1,@312|63,0,12 68,0,@10996 198,0,@11001 212,0,0 5126:D3,108|3b650c7305ff552ccd0989c753f7c70100000075498b07ff7704ba407966b18b5c2404ff1289c7578b4424048b5c2408e8cbffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10030,1,@315|27,0,@10996 99,0,0 5127:D3,304|3b650c7305ff552ccd098b3089f783fe0d75328b50048b78088b75008d76f03b75087305ff5528cd8c897500c746fc03000000897e08895604c7060d00000056e98400000083ff1f750d8b7804ff7008b801000000eb188b7c24048907895f04c74708003b66b1b801000000c20400f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdcb895500c742fc02000000894204890a89d089f73b650c7305ff552ccd89ebc483fb01750489c3eb07e88b00000089c3588b74240489742404e937fffffff7c701000000753c8b178b77048b0289c181f8cc00c0b0751d89cf81ffcc00c0b075058b7a08eb218d642404b8483366b18b5d04ff2389f73b650c7305ff552ccd88ebbcbf003b66b18b7424088b142489168d642404895e04897e08b801000000c20400f40000|@11007,1,@319|59,0,6 81,0,0 99,0,@10093 104,0,0 181,1,@5128 220,0,@4620 230,0,@4620 246,0,@9999 270,0,@10093 294,0,0 5128:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@318| 5129:D3,392|3b650c7305ff552ccd0d53bf0100000089c6f7c60100000075288b5e0489f983c102710e8d642404b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc5ebd0576a016a018b5c24208b7a048b7424188b5424148b4c24245457565251e838010000ff3424ff7424088b442404e8ac03000089c789fef7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe0375338b45008d40f03b45087305ff5528cd80894500c740fc030000008b742414897008897804c70029000000e87e1cffff89c2eb2a8b55008d52f03b55087305ff5528cd80895500c742fc030000008b742414897208897a04c702290000008b4d008d49ec3b4d087305ff5528cd04894d00c741fc040000008b7c241089fe89790c8b7c24148979088b7c2404897904c701e42e29b18b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889f6897704c707070000008b74242489168b14248956048d642408897e08b80100000083c410c21400f40000|@11015,1,@325|12,0,0 41,0,@9455 96,1,@5130 112,1,@5131 155,0,0 162,0,1 209,0,20 214,1,@4980 260,0,20 315,0,@5133 355,0,3 379,0,0 5130:D3,624|3b650c7305ff552ccd0989c7f7c7010000000f85410200008b07ff77046a016a016a018b5424208b4c24148b7c241c8b742418535483042404575689cbff12ff3424ff742408ff7424106a016a018b7424108b1689d783fa11755b89f68b7e048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e93e01000089f683ff0d756389f68b7e0489f68b56088b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e9d40000008b7c24288b570cb801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702030000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e0489168b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2410894a0c897a08c7420401000000c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240c894f048917893424897c2404ff34248b5c24086a016a018b7c24408b74243c8b5424388b4c243454575652518b442440e8e3fdffff5e5f8b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d64240c8b7424308916897e04b80100000083c41cc214008b7c2414c70701000000895f04b801000000c21400f400|@11010,1,@321|127,0,1 233,0,0 296,0,0 335,0,2 370,0,1 448,0,0 454,0,1 591,0,0 607,0,0 615,0,0 5131:D3,192|3b650c7305ff552ccd01a8010f85a60000008b30ff70048b3e8b5e048b3783fe01753cff77048b4708e8a600000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c7070d000000eb268b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b442404e871ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10030,1,@323|42,1,@5132 89,0,6 129,0,8 185,0,0 5132:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@322|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5133:D3,188|3b650c7305ff552ccd056a016a018b7a0c3bc77d058b7a04eb4b8b7a0883ff037513bfb85d66b18b378934248b7f04897c2404eb0e8d642408b8207b66b18b5d04ff235f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f7c701000000753d8b178b770483f801750e8b3a893c248b7a04897c2404ebbe89c283ea02710e8d642408b8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81ebbb8d642408b8643c66b18b5d04ff23f4000000|@11014,1,@324|35,0,@10587 58,0,@11011 145,0,@9455 175,0,@10105 5134:D3,1592|8d7c24b03b7d0c7305ff5530cd0d52536a016a016a018b7c24108b4f048b5c24288b7c24248b74241c8b542418575483042404565289caff12ff3424ff7424088b7c24048b3783fe0d755a89ff8b7f0483ff0175068b7c2434eb048b7c24148b742418ff7604578b4424388b7424088b5424308b4c242c8b5c2428895c243089c38b0424894c2434895424388b5424048974243c8b7c2424897c242c83c42cff228d64240c6a016a016a018b7c24248b57048b5c243c8b7c24308b74242c6a01548304240457568b442430ff12ff3424ff742408ff7424106a016a016a018b7c243c8b57048b4424588b5c24548b7c24488b7424446a0154830424045756ff12ff3424ff742408ff7424108b5c24208b3389f783fe210f85be000000ff7424188b442420e82305000089c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460cc43966b1897e088b7c2434897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742430897304893b83fb0175068b7c2404eb0b8b442404e81e08000089c78b7424588b5424088916897e048b3c24897e088d642404b80100000083c448c2180089db83ff0d0f850003000089db8b53048b7c241c89f883ff010f85a00100008b7c24088b3783fe0d0f858f0100008b74240483fe010f85820100008d64240889ff8b77043bd60f858d0000008d6424188b442414e80508000089c781e7010000c081ff010000c075068b742410eb488b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc020000008b542410895604893e8b7c24388b142489178d642404897704c74708003b66b1b80100000083c428c2180083fa03752f83fe01752a8d6424288b7c24288b74240489378b34248977048d642408c74708003b66b1b80100000083c414c2180083fa01755783fe0375528d6424288b75008d76f03b75087303ff5528897500c746fc03000000c74608130000008b7c2404897e04c7062b0000008b7c242889378b34248977048d642408c74708003b66b1b80100000083c414c218008b75008d76ec3b75087305ff5528cd88897500c746fc0400000089ff897e0c8d64240489db895e088b7c2428897e04c7060b0000008b7c244c89378b742424897704c74708003b66b1b80100000083c440c21800eb008b7c24088b3783fe210f85cb000000ff342489fb8b442408e83a0c000089c78d64240c8b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608c43966b18b7c2428897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742424897304893b83fb01750a8d64240c8b7c2404eb0f8d64240c8b442404e8410d000089c78b7424408b5424088916897e048b3c24897e088d642404b80100000083c430c21800ff742418e8780d000089c757ff7424048b44240c8b5c2410e8040f000089c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d6424108b7c2428897e04c7060b0000008b7c244c89378b742424897704c74708003b66b1b80100000083c440c218008b7c24088b3783fe210f85cb000000ff342489fb8b442408e83210000089c78d64240c8b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608c43966b18b7c2428897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742424897304893b83fb01750a8d64240c8b7c2404eb0f8d64240c8b442404e83911000089c78b7424408b5424088916897e048b3c24897e088d642404b80100000083c430c21800ff7424188b442420e86c11000089c757ff7424048b44240c8b5c2410e8f812000089c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d6424108b7c2428897e04c7060b0000008b7c244c89378b742424897704c74708003b66b1b80100000083c440c21800f40000|@11026,1,@346|293,1,@5135 328,0,@10072 344,0,5 379,0,2 434,1,@5139 464,0,0 559,1,@5140 573,0,-536870912 618,0,2 676,0,@10093 681,0,0 728,0,@10093 733,0,0 784,0,9 797,0,21 820,0,@10093 825,0,0 884,0,5 904,0,@10093 909,0,0 946,1,@5141 988,0,@10072 1001,0,5 1036,0,2 1099,1,@5143 1129,0,0 1144,1,@5144 1164,1,@5146 1218,0,5 1238,0,@10093 1243,0,0 1278,1,@5148 1320,0,@10072 1333,0,5 1368,0,2 1431,1,@5150 1461,0,0 1480,1,@5151 1500,1,@5153 1554,0,5 1574,0,@10093 1579,0,0 5135:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9e5000000f4|@11024,1,@329|33,1,@5136 80,0,6 93,0,0 160,0,0 183,1,@5137 5136:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@326|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5137:D3,340|3b650c7305ff552ccd0989c783ff01750389d8c38b3383fe1175248b530489d68b1283fa057507ba03000000eb05ba0100000083fa0375078b760489faeb278b45008d40f03b45087305ff5528cd88894500c740fc03000000895808897804c7001f000000c3f6c2010f85890000008b028b4a0483f901756e89c18b1183fa03753e8b5108ff710c3bf27509bb0100000089feeb6d8d6424048b45008d40f03b45087305ff5528cd88894500c740fc03000000895808897804c7001f000000c38b45008d40f03b45087305ff5528cd88894500c740fc03000000895808897804c7001f000000c389ca3b650c7305ff552ccdcce96effffffb8dc7b66b18b5d04ff23f7c60100000075288b4e0489da83c202710e8d642404b8f80466b18b5d04ff2389ce89d33b650c7305ff552ccdc8ebd083eb02710e8d642404b8f80466b18b5d04ff2389f8e81c0000005be9aefefffff400|@11023,1,@328|40,0,1 47,0,0 97,0,15 141,0,0 187,0,15 226,0,15 249,0,@11017 281,0,@9455 316,0,@9455 328,1,@5138 5138:D3,108|3b650c7305ff552ccd0983fb017506b801000000c3a8017546ff308b400483eb02710e8d642404b8f80466b18b5d04ff23e8caffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8187c66b18b5d04ff23f40000|@11022,1,@327|16,0,0 40,0,@9455 96,0,@11020 5139:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@330| 5140:D3,1444|3b650c7305ff552ccd018b38beec3929b181c61d0000008d74befcffe6e9ab000000909090e9e0000000909090e925010000909090e923010000909090e9c6010000909090e977020000909090e9a8020000909090e9a6020000909090e998020000909090e99c020000909090e99a020000909090e9bd020000909090e978020000909090e9b5020000909090e943030000909090e941030000909090e94f030000909090e956030000909090e954030000909090e9a2030000909090e9a2030000909090e9a8030000909090ff7004ff70088b400ce825ffffff89c781e7010000c0578b442408e813ffffff89c68b3c2423fe578b442408e802ffffff89c78b042423c78d642410c38b7804ff37ff7704ff770c8b4710e8e3feffff89c7578b44240ce8d7feffff89c68b3c2423fe578b44240ce8c6feffff89c68b3c2423fe578b44240ce8b5feffff89c78b042423c78d642418c3b801000000c38b7804ff70088b700c8b36baec3929b181c2790100008d5432ffffe2eb16eb1beb20eb25eb2aeb2feb34eb39eb3eeb43eb48eb4dbe010000c0eb4bbe01000060eb44be010000e0eb3dbe010000e0eb36be010000e0eb2fbe010000e0eb28be010000c0eb21be010000e0eb1abe010000e0eb13be010000e0eb0cbe010000e0eb05be010000e05689f8e815feffff89c68b3c2423fe578b442408e804feffff89c78b042423c78d64240cc38b7004ff7008ff700c8b781083fe017507be010000e0eb1183fe037507be010000e0eb05be01000080568b078b7f04f7c7010000007520ff37e8bafdffff89c7578b442404e8aefdffff89c78b342423f78d642408eb07e89cfdffff89c68b3c2423fe578b7c24088b0789ff8b7f04f7c7010000007520ff37e87afdffff89c7578b442404e86efdffff89c78b342423f78d642408eb07e85cfdffff89c68b3c2423fe578b442410e84bfdffff89c78b042423c78d642414c38b7804ff7008ff700c89f8e82ffdffff89c7578b442408e823fdffff89c68b3c2423fe578b442408e812fdffff89c78b042423c78d642410c3b8010000e0c3b801000000c3b8010000c0c38b7804ff700889f8e8e7fcffff89c781cf01000080578b442404e8d5fcffff89c78b042423c78d642408c38b4004e9c1fcffff8b70048b78088b0e89ca83f90f75208b4e0483f9037507b903000000eb05b90100000083f9037507be010000e0eb2a83fa0d75208b760483fe037507be03000000eb05be0100000083fe037507be010000e0eb05be010000c0568b078b7f04f7c701000000751eff37e853fcffff89c7578b442404e847fcffff8b3c2423f88d642408eb07e837fcffff89c78b042423c78d642404c3b801000000c3ff70048b4008e81afcffff89c7ff342457e9470100008b4004e807fcffff81e0ffffff7fc3b801000000c3ff70088b780c8b078b7f04f7c7010000007520ff37e8e0fbffff89c7578b442404e8d4fbffff89c68b3c2423fe8d642408eb07e8c2fbffff89c781e7010000a0578b442404e8b0fbffff89c78b042423c78d642408c38b4008e99cfbffff8b78045768010000e0e9920000008b78048b7008baec3929b181c2890400008d5432ffffe2eb1aeb1feb24eb29eb2eeb33eb38eb2feb2deb2beb37eb3ceb41eb46be01000080eb44be01000080eb3dbe010000a0eb36be010000a0eb2fbe010000c0eb28be010000e0eb21be010000e0eb1abe010000e0eb13be010000e0eb0cbe010000e0eb05be010000e05689f8e808fbffff89c78b042423c78d642404c3f64424040175288b7c24048b0789ffff7704e8e5faffff89c2235424045e891424897424043b650c7303ff552cebd15883c404c3f644240401755f8b7424048b3e89f6ff76048b3789f283fe01750c8b4710e8a5faffff89c2eb2989d683fa05750c8b4704e892faffff89c2eb1683fe077507ba010000e0eb0a8b470ce87afaffff89c2235424045e891424897424043b650c7303ff552ceb9a5883c408c3f4|@11025,1,@331|13,0,@5140 344,0,0 361,0,@5140 402,0,-536870912 409,0,805306368 416,0,-268435456 423,0,-268435456 430,0,-268435456 437,0,-268435456 444,0,-536870912 451,0,-268435456 458,0,-268435456 465,0,-268435456 472,0,-268435456 479,0,-268435456 538,0,-268435456 550,0,-268435456 557,0,-1073741824 763,0,-268435456 769,0,0 775,0,-536870912 855,0,1 862,0,0 872,0,-268435456 892,0,1 899,0,0 909,0,-268435456 916,0,-536870912 982,0,0 1025,0,0 1129,0,-268435456 1145,0,@5140 1190,0,-1073741824 1197,0,-1073741824 1204,0,-805306368 1211,0,-805306368 1218,0,-536870912 1225,0,-268435456 1232,0,-268435456 1239,0,-268435456 1246,0,-268435456 1253,0,-268435456 1260,0,-268435456 1400,0,-268435456 5141:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e941f7fffff4|@11024,1,@333|33,1,@5142 80,0,6 93,0,0 160,0,0 183,1,@5137 5142:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@332|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5143:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@334| 5144:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e93df5fffff4|@11024,1,@336|33,1,@5145 80,0,6 93,0,0 160,0,0 183,1,@5137 5145:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@335|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5146:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e99df3fffff4|@11024,1,@338|33,1,@5147 80,0,6 93,0,0 160,0,0 183,1,@5137 5147:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@337|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5148:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9fdf1fffff4|@11024,1,@340|33,1,@5149 80,0,6 93,0,0 160,0,0 183,1,@5137 5149:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@339|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5150:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@341| 5151:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9f9effffff4|@11024,1,@343|33,1,@5152 80,0,6 93,0,0 160,0,0 183,1,@5137 5152:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@342|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5153:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e959eefffff4|@11024,1,@345|33,1,@5154 80,0,6 93,0,0 160,0,0 183,1,@5137 5154:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@344|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5155:D3,828|3b650c7305ff552ccd0d52506a016a016a018b7c24108b4f088b4424288b7c24248b74241c8b542418575483042404565287c389caff12ff34248b7c24086a016a016a018b7424208b4e088b4424448b5c24388b74242c8b542428575483042404565289caff12ff34248b7c24086a016a016a018b7424308b4e088b4424508b5c24488b74243c8b542438575483042404565289caff12ff3424ff7424088b7c24248b3783fe0d0f859d01000089ff8b7f04f7c7010000000f849c000000f7c7010000000f848200000083ff017507bf03000000eb05bf0100000083ff03757a8b7c24508b7424448b5424408b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c24388b7f04897b04c7037c4d29b18b442454e8b0caffff89c68b7c244889378b34248977048d642404c74708003b66b1b80100000083c438c220008d64243cb8cc4466b18b5d04ff238b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c70701000000578b7c24548b7424488b5424448b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c243c8b7f04897b04c703e84d29b18b442458e810caffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54242889571089770c8b34248977088d6424048b7424048977048b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7c244889378b34248977048d642408c74708003b66b1b80100000083c434c220008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c70701000000578b7c24548b7424488b5424448b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c243c8b7f04897b04c703544e29b18b442458e820c9ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54242889571089770c8b34248977088d6424048b7424048977048b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7c244889378b34248977048d642408c74708003b66b1b80100000083c434c22000f400|@11028,1,@350|208,0,1 215,0,0 283,0,@5156 292,1,@5117 317,0,@10093 322,0,0 337,0,@10214 379,0,0 443,0,@5157 452,1,@5117 548,0,1 571,0,@10093 576,0,0 619,0,0 683,0,@5158 692,1,@5117 788,0,1 811,0,@10093 816,0,0 5156:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@347| 5157:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@348| 5158:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@349| 5159:D3,2024|3b650c7305ff552ccd0d52508b3c2483ff010f855a0100008d6424046a016a016a018b7c240c8b4f088b4424248b7c24208b7424188b542414575483042404565287c389caff12ff34248b7c24086a016a016a018b74241c8b4e088b4424408b5c24348b7424288b542424575483042404565289caff12ff34248b7c24086a016a016a018b74242c8b4e088b44244c8b5c24448b7424388b542434575483042404565289caff12ff3424ff7424088b7c244c8b7424408b54243c8b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c24348b7f04897b04c703bc5629b18b442450e84ec6ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54242489571089770cc74708b83966b18b7424048977048b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7c244489378b34248977048d642438c74708003b66b1b801000000c220008b7c241cff77046a016a016a018b7c24148b4f088b44242c8b7c24288b7424208b54241c575483042404565287c389caff12ff34248b7c24086a016a016a018b7424248b4e088b4424488b5c243c8b7424308b54242c575483042404565289caff12ff34248b7c24086a016a016a018b7424348b4e088b4424548b5c244c8b7424408b54243c575483042404565289caff12ff3424ff7424088b7c24248b3783fe0d0f859b01000089ff8b7f04f7c7010000000f8401010000f7c7010000000f84e700000083ff017507bf03000000eb05bf0100000083ff030f85db0000008b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708030000008b742438897704c70713000000578b7c24588b74244c8b5424488b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c24408b7f04897b04c703285729b18b44245ce87ec4ffff89c78b75008d76ec3b75087305ff5528cd80897500c746fc040000008b142489560c8d642404c74608c43966b1897e04c706070000008b7c244c89378b34248977048d642404c74708003b66b1b80100000083c43cc220008d642440b8cc4466b18b5d04ff238b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708030000008b742438897704c707130000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b7c2404897e088b7c2414897e04c706070000008b7c2434c707030000008b7c244c89378b34248977048d642408c74708003b66b1b80100000083c438c220008b5424048b3a83ff0d0f85930100008b74243889f783fe097507b903000000eb1389ff83ff077507b903000000eb05b9010000008b7d008d7ff03b7d087305ff5528cd06897d00c747fc03000000c747080b0000008b74241489f3897704c7072b0000008b45008d40f03b45087305ff5528cd8e894500c740fc03000000c74008030000008b742438897004c700130000008b75008d76ec3b75087305ff5528cd8f897500c746fc0400000089460c89d289560889da89d3895604c7060700000089f28b75008d76f03b75087305ff5528cd8e897500c746fc03000000c746080f00000089db895e04c7062b00000083f9037507b923000000eb05b9030000008b5d008d5bf03b5d087305ff5528cdc6895d00c743fc03000000c7430801000000894b04c7030d0000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc04000000c7410c004166b1895908897104c701070000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c7060b0000008b7c244c89378b34248977048d642404c74708003b66b1b80100000083c43cc220008b7424148b3e83ff0d0f858f0100008b4c243889cf83f9097507b903000000eb1389ff83ff077507b903000000eb05b9010000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000c747080b00000089d289d0895704c7072b0000008b5d008d5bf03b5d087305ff5528cdc3895d00c743fc03000000c74308030000008b542438895304c703130000008b55008d52ec3b55087305ff5528cdcb895500c742fc04000000895a0c89c089c389420889f6897204c702070000008b75008d76f03b75087305ff5528cd8e897500c746fc03000000c746080f00000089db895e04c7062b00000083f9037507b903000000eb05b9230000008b5d008d5bf03b5d087305ff5528cdc6895d00c743fc03000000c7430801000000894b04c7030d0000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc04000000c7410c004166b1895908897104c701070000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c7060b0000008b7c244c89378b34248977048d642404c74708003b66b1b80100000083c43cc220008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742438897704c70703000000578b7c24588b74244c8b5424488b5d008d5be83b5d087305ff5528cdc4895d00c743fc0500000089531089730c897b088b7c24408b7f04897b04c703945729b18b44245ce8e1bfffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54242889571089770c8b34248977088d6424048b7424048977048b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7c244c89378b34248977048d642408c74708003b66b1b80100000083c438c22000f40000|@11030,1,@354|233,0,@5160 242,1,@5117 287,0,@10071 335,0,1 358,0,@10093 363,0,0 573,0,1 580,0,0 620,0,1 633,0,9 697,0,@5161 706,1,@5117 751,0,@10072 760,0,3 783,0,@10093 788,0,0 803,0,@10214 839,0,1 852,0,9 901,0,3 911,0,1 934,0,@10093 939,0,0 976,0,1 990,0,1 997,0,0 1030,0,5 1045,0,21 1078,0,1 1091,0,9 1138,0,3 1173,0,7 1184,0,21 1194,0,17 1201,0,1 1234,0,0 1243,0,6 1276,0,@10170 1288,0,3 1329,0,5 1352,0,@10093 1357,0,0 1394,0,1 1408,0,1 1415,0,0 1448,0,5 1461,0,21 1494,0,1 1507,0,9 1554,0,3 1587,0,7 1598,0,21 1608,0,1 1615,0,17 1648,0,0 1657,0,6 1690,0,@10170 1702,0,3 1743,0,5 1766,0,@10093 1771,0,0 1814,0,1 1878,0,@5162 1887,1,@5117 1983,0,1 2006,0,@10093 2011,0,0 5160:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@351| 5161:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@352| 5162:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@353| 5163:D3,5624|3b650c7305ff552ccd0d52508b7c241cff77046a016a016a018b7c24148b4f048b44242c8b7c24288b7424208b54241c575483042404565287c389caff12ff34248b7c24086a016a016a018b7424248b4e048b4424408b5c243c8b7424308b54242c575483042404565289caff12ff3424ff7424088b7c24288b3f83ff150f85620300008b7c24288b77048b7c24048b1783fa0d0f853b02000089ff8b57048b4c24148b0983f90d0f857d0100008b4c24148b4904f6c1017407bb03000000eb05bb0100000083fb037405e908010000f6c2017407bb03000000eb05bb0100000083f30283fb030f84eb0000008b7c2424c70703000000f6c1010f84ca000000f6c2010f84b300000083fe05753389cf33fa83cf018b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d000000eb5f83fe03752e0bd18b75008d76f03b75087305ff5528cd04897500c746fc03000000c7460801000000895604c7060d000000eb2c23d18b75008d76f03b75087305ff5528cd04897500c746fc03000000c7460801000000895604c7060d0000008b7c243c89375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c21800f6c2017452f6c201743f83fa017507ba03000000eb05ba0100000083fa03753783fe01750489feeb048b7424148b7c243c89375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b5424148b1283fa0d0f85af0000008b5424148b5204f6c2017450f6c201743d83fa017507ba03000000eb05ba0100000083fa03753583fe01750489feeb0289fe8b7c243c89375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b3f83ff110f854e0500008b7c24288b4f048b7c24148b3f83ff0d0f857e0200008b7c24048b3783fe0d0f856f0200008b7424148b760489ff8b5704f7c6010000007407bb03000000eb05bb0100000083fb037405e9f2010000f6c2017407bb03000000eb05bb0100000083f30283fb030f84d50100008b7c2424c70703000000f7c6010000000f84b1010000f6c2010f849a01000083f905755583fa01750e8d642430b8842f66b18b5d04ff2389f0d1e889d7d1ef33d2f7f78d3c55010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d000000e92401000083f903755583fa01750e8d642430b8a87d66b18b5d04ff2389f0d1e889d7d1ef33d2f7f78d3c45010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d000000e9ca00000083f90b750e8d642430b8d47d66b18b5d04ff2383f909750e8d642430b81c7e66b18b5d04ff2383f907753989f7d1ef83ea010faffa83c7018b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d000000eb6683f90d753389f72bfa83c7018b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d000000eb2e8d7c16ff8b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7c243c89375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff010f85bb0000008b7c24048b3783fe0d0f85ac00000089ff8b7704f7c601000000744cf7c601000000743683fe017507be03000000eb05be0100000083fe03752e8b7c243c8b74241489375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff010f85c10000008b7c24148b3f83ff0d0f85b20000008b7c24148b7f04f7c7010000007450f7c701000000743a83ff017507bf03000000eb05bf0100000083ff0375328b7c243c8b74240489375e8d642404897704c74708003b66b1b80100000083c428c218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff0d0f85bb0000008b7c24048b3783fe0d0f85ac00000089ff8b7704f7c601000000744cf7c601000000743683fe017507be03000000eb05be0100000083fe03752e8b7c243c8b74241489375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b3f83ff030f85ce0800008b7c24288b57048b7c24148b3f83ff0d0f85fe0500008b7c24048b3783fe0d0f85ef0500008b7424148b760489ff8b4f04f7c6010000007407bb03000000eb05bb0100000083fb037405e972050000f6c1017407bb03000000eb05bb0100000083f30283fb030f84550500008b7c2424c70703000000f7c6010000000f8431050000f6c1010f841a05000089d7ba005829b181c2f00900008d54bafcffe2e933000000909090e9a7000000909090e9be010000909090e995020000909090e90f030000909090e9b4030000909090e93f040000909090ff7504bf005829b181c7800a00005789650489cf83ef0103fe710ab8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb168b650483c4045f897d048b3883ff0b750abe647e66b1e9370400008d6424308b5d04ff23ff7504bf005829b181c7910b00005789650483f901750ab8100b66b18b5d04ff2383f9ff751281fe01000080750ab8680b66b18b5d04ff2389f089cfd1f8d1ff99f7ff8d3c450100000083f901750ab8a40b66b18b5d04ff2389f089ced1f8d1fe99f7fe8d34550100000083fe017502eb4883fe017d07be03000000eb05be0100000083f9017d07ba03000000eb05ba010000003bf27507be03000000eb05be0100000083fe03741183ef02710ab8f80466b18b5d04ff23eb008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb248b650483c4045f897d048b3089f783fe0f7507be807e66b1eb0a83ff0b750abe647e66b1e9180300008d6424308b5d04ff23ff7504bf005829b181c7700c00005789650483f901750ab8a40b66b18b5d04ff2389f089cfd1f8d1ff99f7ff8d3c550100000083ff017507b901000000eb3b83ff017d07be03000000eb05be0100000083f9017d07ba03000000eb05ba010000003bf2750489f9eb1183e90103cf710ab8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd02897500c746fc03000000c7460801000000894e04c7060d00000083c4045f897d04eb248b650483c4045f897d048b3089f783fe0f7507be807e66b1eb0a83ff0b750abe647e66b1e9390200008d6424308b5d04ff23ff7504bf005829b181c7000d00005789650489f7d1ff83e9010faff9710ab8f80466b18b5d04ff2383c7018b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb168b650483c4045f897d048b3883ff0b750abe647e66b1e9b70100008d6424308b5d04ff23ff7504bf005829b181c79f0d00005789650483f901750ab8100b66b18b5d04ff2383f9ff751281fe01000080750ab8680b66b18b5d04ff2389f0d1f8d1f999f7f98d3c45010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb248b650483c4045f897d048b3089f783fe0f7507be807e66b1eb0a83ff0b750abe647e66b1e90a0100008d6424308b5d04ff23ff7504bf005829b181c7350e00005789650483f901750ab8a40b66b18b5d04ff2389f0d1f8d1f999f7f98d3c55010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb248b650483c4045f897d048b3089f783fe0f7507be807e66b1eb0a83ff0b7507be647e66b1eb778d6424308b5d04ff23ff7504bf005829b181c7bc0e00005789650489f72bf9710ab8f80466b18b5d04ff2383c7018b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d00000083c4045f897d04eb168b650483c4045f897d048b3883ff0b7521be647e66b18b7c243c89375e897704c74708003b66b1b80100000083c42cc218008d6424308b5d04ff238d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff010f85bb0000008b7c24048b3783fe0d0f85ac00000089ff8b7704f7c601000000744cf7c601000000743683fe017507be03000000eb05be0100000083fe03752e8b7c243c8b74241489375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff010f85c10000008b7c24148b3f83ff0d0f85b20000008b7c24148b7f04f7c7010000007450f7c701000000743a83ff017507bf03000000eb05bf0100000083ff0375328b7c243c8b74240489375e8d642404897704c74708003b66b1b80100000083c428c218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b7f0483ff0d0f85bb0000008b7c24048b3783fe0d0f85ac00000089ff8b7704f7c601000000744cf7c601000000743683fe017507be03000000eb05be0100000083fe03752e8b7c243c8b74241489375e897704c74708003b66b1b80100000083c42cc218008d642430b8cc4466b18b5d04ff238b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b7c24288b3f83ff130f85720300008b7c24288b5f048b7c24288b4f088b7c24148b3f83ff0d0f85020300008b7c24048b3783fe0d0f85f30200008b7424148b760489ff8b570483fb017502eb3df7c6010000007407b803000000eb05b80100000083f8037407b803000000eb14f6c2017407b803000000eb05b80100000083f00283f8030f84500200008b7c2424c7070300000083fb05757e83f903753bf7c6010000007425f6c20174123bf27c07bf03000000eb05bf01000000eb398d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff23f7c6010000007428f6c20174153bf27207bf03000000eb05bf01000000e9b20100008d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff2383fb03757e83f903753bf7c6010000007425f6c20174123bf27e07bf03000000eb05bf01000000eb398d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff23f7c6010000007428f6c20174153bf27607bf03000000eb05bf01000000e92f0100008d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff2383fb09757e83f903753bf7c6010000007425f6c20174123bf27f07bf03000000eb05bf01000000eb398d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff23f7c6010000007428f6c20174153bf27707bf03000000eb05bf01000000e9ac0000008d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff2383fb07757b83f903753bf7c6010000007425f6c20174123bf27d07bf03000000eb05bf01000000eb398d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff23f7c6010000007425f6c20174123bf27307bf03000000eb05bf01000000eb2c8d642430b8cc4466b18b5d04ff238d642430b8cc4466b18b5d04ff233bf27507bf03000000eb05bf0100000083ff037507be783966b1eb05bec43966b18b7c243c89375e897704c74708003b66b1b80100000083c42cc218008b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54242889560c89ff897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c218008b75008d76ec3b75087303ff5528897500c746fc040000008b7c2428897e0c8b7c2404897e088b7c2414897e04c706070000008b7c243c89375e8d642404897704c74708003b66b1b80100000083c428c21800f4000000|@11045,1,@355|187,0,1 194,0,0 214,0,1 221,0,0 243,0,1 306,0,0 315,0,6 357,0,0 366,0,6 403,0,0 412,0,6 429,0,@10093 434,0,0 449,0,@10214 463,0,@10214 519,0,3 540,0,@10093 545,0,0 571,0,1 578,0,0 613,0,@10093 618,0,0 633,0,@10214 689,0,3 710,0,@10093 715,0,0 763,0,1 770,0,0 803,0,@10093 808,0,0 823,0,@10214 879,0,3 900,0,@10093 905,0,0 962,0,3 983,0,@10093 988,0,0 1071,0,1 1078,0,0 1098,0,1 1105,0,0 1127,0,1 1167,0,@9956 1224,0,0 1233,0,6 1257,0,@11032 1314,0,0 1323,0,6 1342,0,@11034 1361,0,@11037 1417,0,0 1426,0,6 1473,0,0 1482,0,6 1521,0,0 1530,0,6 1547,0,@10093 1552,0,0 1567,0,@10214 1581,0,@10214 1637,0,3 1658,0,@10093 1663,0,0 1731,0,1 1738,0,0 1764,0,@10093 1769,0,0 1784,0,@10214 1840,0,3 1861,0,@10093 1866,0,0 1936,0,1 1943,0,0 1973,0,@10093 1978,0,0 1993,0,@10214 2049,0,3 2070,0,@10093 2075,0,0 2143,0,1 2150,0,0 2176,0,@10093 2181,0,0 2196,0,@10214 2252,0,3 2273,0,@10093 2278,0,0 2335,0,3 2356,0,@10093 2361,0,0 2444,0,1 2451,0,0 2471,0,1 2478,0,0 2500,0,1 2528,0,@5163 2604,0,@5163 2628,0,@9455 2666,0,0 2675,0,6 2706,0,@11040 2728,0,@5163 2748,0,@9491 2764,0,-1073741824 2771,0,@9495 2804,0,@9498 2844,0,1 2851,0,0 2861,0,1 2868,0,0 2877,0,1 2884,0,0 2899,0,@9455 2939,0,0 2948,0,6 2981,0,@11042 2993,0,@11040 3015,0,@5163 3035,0,@9498 3068,0,0 3080,0,1 3087,0,0 3097,0,1 3104,0,0 3124,0,@9455 3162,0,0 3171,0,6 3204,0,@11042 3216,0,@11040 3238,0,@5163 3265,0,@9455 3306,0,0 3315,0,6 3346,0,@11040 3368,0,@5163 3388,0,@9491 3404,0,-1073741824 3411,0,@9495 3465,0,0 3474,0,6 3507,0,@11042 3519,0,@11040 3541,0,@5163 3561,0,@9498 3615,0,0 3624,0,6 3657,0,@11042 3669,0,@11040 3688,0,@5163 3709,0,@9455 3750,0,0 3759,0,6 3790,0,@11040 3807,0,@10093 3812,0,0 3836,0,@10214 3850,0,@10214 3906,0,3 3927,0,@10093 3932,0,0 4000,0,1 4007,0,0 4033,0,@10093 4038,0,0 4053,0,@10214 4109,0,3 4130,0,@10093 4135,0,0 4205,0,1 4212,0,0 4242,0,@10093 4247,0,0 4262,0,@10214 4318,0,3 4339,0,@10093 4344,0,0 4412,0,1 4419,0,0 4445,0,@10093 4450,0,0 4465,0,@10214 4521,0,3 4542,0,@10093 4547,0,0 4604,0,3 4625,0,@10093 4630,0,0 4727,0,1 4734,0,0 4744,0,1 4756,0,1 4763,0,0 4785,0,1 4817,0,1 4824,0,0 4835,0,@10214 4849,0,@10214 4876,0,1 4883,0,0 4897,0,@10214 4911,0,@10214 4948,0,1 4955,0,0 4966,0,@10214 4980,0,@10214 5007,0,1 5014,0,0 5028,0,@10214 5042,0,@10214 5079,0,1 5086,0,0 5097,0,@10214 5111,0,@10214 5138,0,1 5145,0,0 5159,0,@10214 5173,0,@10214 5210,0,1 5217,0,0 5228,0,@10214 5242,0,@10214 5269,0,1 5276,0,0 5287,0,@10214 5301,0,@10214 5315,0,1 5322,0,0 5332,0,@10066 5339,0,@10072 5356,0,@10093 5361,0,0 5418,0,3 5439,0,@10093 5444,0,0 5501,0,3 5522,0,@10093 5527,0,0 5584,0,3 5605,0,@10093 5610,0,0 5164:D3,1872|3b650c7305ff552ccd0d508b7c2418ff77046a016a016a018b4a048b4424288b7c24248b74241c8b542418575483042404565287c389caff125f5e5a8b4c2404bb0c6e29b181c3510000008d5c8bfcffe3e96b000000909090e969000000909090e967000000909090e965000000909090e963000000909090e964000000909090e958010000909090e94c020000909090e924030000909090e9f7030000909090e9ab040000909090e9a9040000909090e9ea040000909090e9a50500009090908d642404eb048d642404eb048d642404eb048d642404eb048d642404e9730400008b0f83f90d75448b7f048b1424c702030000008d642404f7c701000000740b8d642404ba783966b1eb098d642404bac43966b18b7c240c8917897704c74708003b66b1b801000000c214008b1a89d983fb03752c8b3c24c707030000008d6424048b7c2410c707c43966b1897704c74708003b66b1b80100000083c404c2140089ca83fa07752c8b3c24c707030000008d6424048b7c2410c707c43966b1897704c74708003b66b1b80100000083c404c214008d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b0f83f90d755e8b7f048b1424c702030000008d6424048b3f8d3c7d010000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c7020d0000008b7c24108917897704c74708003b66b1b80100000083c404c214008b0a83f909754a8b4a0483f91b7507b903000000eb05b90100000083f903752b8b52088b3c24c707030000008d6424048b7c24108917897704c74708003b66b1b80100000083c404c214008d642408eb048d6424088b55008d52f03b55087305ff5528cdc0895500c742fc03000000c742080d000000897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b1783fa0d0f858c0000008b7f048b1424c702030000008d642404f7c701000000740b8d642404bac43966b1eb518d642404f7c701000000740ab81c4266b18b5d04ff230fb67fff8d3c7d0100000081e7ff0100008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c7020d0000008b7c240c8917897704c74708003b66b1b801000000c214008d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b1783fa0d0f85870000008b7f048b1424c702030000008d642404f7c701000000740b8d642404bac43966b1eb4c8d642404f7c701000000740ab81c4266b18b5d04ff238b7ffcc1e708c1ef0783cf018b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c7020d0000008b7c240c8917897704c74708003b66b1b801000000c214008d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b1783fa0d756c8b7f048b1424c702030000008d642404f7c70100000074338d642404f7c701000000741d83ff017507bf03000000eb05bf0100000083ff037515ba783966b1eb13b8cc4466b18b5d04ff238d642404bac43966b18b7c240c8917897704c74708003b66b1b801000000c214008d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008d642404eb048d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b1783fa0d75738b57048b3c24c707030000008d642404d1fa8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000189178b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c7020d0000008b7c24108917897704c74708003b66b1b80100000083c404c214008d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642404897a04c7022b0000008b7c240c8917897704c74708003b66b1b801000000c214008b1783fa0d75738b57048b3c24c707030000008d642404d1ea8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000189178b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c7020d0000008b7c24108917897704c74708003b66b1b80100000083c404c214008d6424048b4d008d49f03b4d087305ff5528cdc0894d00c741fc030000008b14248951088d642404897904c7012b0000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a08c742041b000000c7020900000089d78b54240c890a897204897a08b801000000c21400f400|@11047,1,@356|65,0,@5164 241,0,1 262,0,@10066 273,0,@10072 289,0,@10093 294,0,0 315,0,1 329,0,@10072 339,0,@10093 344,0,0 366,0,1 380,0,@10072 390,0,@10093 395,0,0 450,0,21 466,0,@10093 471,0,0 493,0,1 539,0,0 548,0,6 564,0,@10093 569,0,0 595,0,1 602,0,0 619,0,1 639,0,@10093 644,0,0 693,0,6 702,0,21 718,0,@10093 723,0,0 749,0,1 770,0,@10072 789,0,@10189 844,0,0 853,0,6 869,0,@10093 874,0,0 926,0,21 942,0,@10093 947,0,0 973,0,1 994,0,@10072 1013,0,@10189 1063,0,0 1072,0,6 1088,0,@10093 1093,0,0 1145,0,21 1161,0,@10093 1166,0,0 1188,0,1 1222,0,1 1229,0,0 1239,0,@10066 1246,0,@10214 1260,0,@10072 1276,0,@10093 1281,0,0 1333,0,21 1349,0,@10093 1354,0,0 1412,0,21 1428,0,@10093 1433,0,0 1455,0,1 1522,0,0 1531,0,6 1547,0,@10093 1552,0,0 1607,0,21 1623,0,@10093 1628,0,0 1650,0,1 1717,0,0 1726,0,6 1742,0,@10093 1747,0,0 1802,0,21 1838,0,13 1844,0,4 1863,0,0 5165:D3,1320|3b650c7305ff552ccd0d5250538b7c2420ff77046a016a016a018b7c24188b4f048b5c24308b7c242c8b7424248b542420575483042404565289ca8b442424ff12ff3424ff742408ff7424108b7c24208b3783fe110f859400000089ff8b4f048b7d008d7ff43b7d087305ff5528cd02897d00c747fc02000040578b342489f7c746040100000089ff89fec707010000008b7d008d7ff03b7d087305ff5528cd42897d00c747fc03000040c7470801000000c7470401000000c7070100000089f2897a04c702ac7a29b189f689f28066ffbf89fe894e0889d2895604c706007b29b18067ffbfff742420e9e9030000bf010000008b34248b1683fa03752783ff01751c89f68b7e0489f6ff7608ff378b57108b7f18be01000000e9fd0000008d642404eb048d6424048b7c24048b3f83ff0d75748b7c24208b5f088b7c242c8b7424288b5424385756528b442424e8510d000089c78b54243c8b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c8b542404895608897e04c7060f0000008b7c243089378b34248977048d642408c74708003b66b1b80100000083c41cc218008b7c24208b5f088b7c242c8b7424288b5424385756528b442424e8390e000089c78b54243c8b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c8b542404895608897e04c7060f0000008b7c243089378b34248977048d642408c74708003b66b1b80100000083c41cc21800f6c20175288b5a0489f183c102710e8d642430b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd3ba010000008b4c2424f6c10175288b410489d383c302710e8d642430b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebd33bf20f85b40000008b742420c706030000008b742444ff76048b742448ff760c83ff017d098d642438e98400000081ffffffff017d7889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a016a018b7c24408b7f048b74244c8b5424488b4c245854575652518b44244c8b5c2434e8490e00005b5e83fb01750abfe43c66b1e9b2000000bf0100000089daeb1c8d642438b8383066b18b5d04ff238d642430b85c8066b18b5d04ff23f6c20175288b420489f983c102710e8d64243cb8f80466b18b5d04ff2389c289cf3b650c7305ff552ccdccebd381ffffffff017c0e8d64243cb8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba0100000089d983f9010f85d50000008067ffbf8b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b1c2489d9895a0c897a088b7c2410897a04c7024c8929b18b7d008d7ff43b7d087305ff5528cd46897d00c747fc0200000089c9894f048d642404c707f48929b18b5d008d5bec3b5d087305ff5528cdc4895d00c743fc040000008b0c24894b0c8d6424048953088b14248953048d642404893b6a016a016a018b7c24388b4f048b7c24448b542440565483042404575289ca8b44241cff12595a5f8d6424088b742434890e895604897e08b80100000083c428c218008b198b4104895c57fe89d383c302710e8d64243cb8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6e9f1fefffff6042401753a8b34248b3e89f6ff76048b07ff742408bb01000000e8ac02000089c783ff03750b8d64240cbf03000000eb175e8934243b650c7303ff552cebc08d642408bf01000000e9cefbfffff400|@11065,1,@368|131,0,0 141,0,0 174,0,0 181,0,0 187,0,0 198,0,@5166 222,0,@5167 240,0,0 278,0,0 335,1,@5170 386,0,7 409,0,@10093 414,0,0 451,1,@5172 502,0,7 525,0,@10093 530,0,0 560,0,@9455 586,0,0 614,0,@9455 653,0,1 687,0,16777215 739,0,0 783,1,@5174 795,0,@10109 805,0,0 818,0,@9964 832,0,@11055 861,0,@9455 888,0,16777215 899,0,@11058 954,0,0 963,0,0 1028,0,@5175 1069,0,@5176 1181,0,0 1212,0,@9455 1263,0,0 1268,1,@5168 1284,0,1 1309,0,0 5166:D3,64|3b650c7305ff552ccd0589c76a016a018b52048b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@11049,1,@357| 5167:D3,512|3b650c7305ff552ccd0d528b3889fe83ff0f75198d6424048b7c2404891fc7470403000000b801000000c2040089f783fe19750d8b78048b7f0c5753e94801000083ff110f85260100008b500483fb03750e8d642404be03000000e9fb0000008b3c248b4f0889ce3bd1750e8d642404be03000000e9e10000008b1a89d983fb01753789f789f98b3f83ff01751e8b7a0489ce8d6424048b76043bfe7507be03000000eb05be01000000eb098d642404be01000000e9a100000089cb83f903753489f789f98b3f83ff03751e8b7a0489ce8d6424048b76043bfe7507be03000000eb05be01000000eb098d642404be01000000eb6689d983fb05753489f789f98b3f83ff05751e8b7a0489ce8d6424048b76043bfe7507be03000000eb05be01000000eb098d642404be01000000eb2b89ca83fa07751b89f78d6424048b3f83ff077507be03000000eb05be01000000eb098d642404be010000008b7c24048937c7470401000000b801000000c204008d6424048b7c2404891fc7470401000000b801000000c20400f64424040175538b7424048b3e89f6ff76048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b7c240c8b7f04578b5c2408e84500000089c25e891424897424043b650c7303ff552ceba65e8b7c240c8937c7470403000000b80100000083c408c20400f4000000|@11053,1,@360|33,0,1 38,0,0 87,0,1 113,0,1 159,0,1 166,0,0 177,0,0 221,0,1 228,0,0 239,0,0 280,0,1 287,0,0 298,0,0 325,0,1 332,0,0 343,0,0 356,0,0 361,0,0 381,0,0 386,0,0 442,0,8 459,1,@5168 493,0,1 498,0,0 5168:D3,88|3b650c7305ff552ccd09508b5424088b45008d40f43b45087305ff5528cd0c894500c740fc020000008958048b3c248938ff1289c78b770483fe0175108b1f588b74240489742404e91f0000008d6424048b07c20400f400|@11052,1,@359|73,1,@5169 5169:D3,1664|3b650c7305ff552ccd098b38be807d29b181c61d0000008d74befcffe6e9ab000000909090e9e0000000909090e92c010000909090e931010000909090e94f010000909090e9ef010000909090e926020000909090e923020000909090e938020000909090e935020000909090e932020000909090e950020000909090e95a020000909090e961020000909090e998020000909090e99a020000909090e99f020000909090e9a9020000909090e9c5020000909090e916030000909090e920030000909090e91f030000909090ff7004ff70088b400cba787f66b18b7c240c57ff1289c3ba787f66b18b7c240c578b442408ff1289c3ba787f66b1588d6424048b74240489742404ff228b7804ff37ff7704ff770c8b4710ba787f66b18b7c241057ff1289c3ba787f66b18b7c2410578b44240cff1289c3ba787f66b18b7c2410578b442408ff1289c3ba787f66b1588d6424088b74240489742404ff22ff70048b78085753e9bf0400008b7004ff7008ba787f66b18b7c24085789f0ff1289c3ba787f66b1588b74240489742404ff22ff70088b780cff70108b078b7f04f7c7010000007528ff37ba787f66b18b7c241057ff1289c3ba787f66b18b7c2410578b442404ff1289c38d642404eb0eba787f66b18b7c240c57ff1289c38b3c248b0789ff8b7f048d642404f7c7010000007528ff37ba787f66b18b7c240c57ff1289c3ba787f66b18b7c240c578b442404ff1289c38d642404eb0eba787f66b18b7c240857ff1289c3ba787f66b1588b74240489742404ff228b7004ff7008ff700cba787f66b18b7c240c5789f0ff1289c3ba787f66b18b7c240c578b442408ff1289c3ba787f66b1588d6424048b74240489742404ff2289d8c20400ff70048b4008ba787f66b18b7c240857ff1289c7ff342457e95103000089d8c2040089d8c204008b7004ff7008ba787f66b18b7c24085789f0ff1289c3ba787f66b1588b74240489742404ff228b4004ba787f66b18b74240489742404ff228b7804ff378b7f0c5753e9900200008b78088b078b7f04f7c7010000007520ff37ba787f66b18b7c240857ff1289c3ba787f66b1588b74240489742404ff22ba787f66b18b74240489742404ff228b78045753e9080200008b7804ff70085753e9f70000008b4004ba787f66b18b74240489742404ff22ff70048b400cba787f66b18b7c240857ff1289c3ba787f66b1588b74240489742404ff22ff70088b780c8b078b7f04f7c7010000007528ff37ba787f66b18b7c240c57ff1289c3ba787f66b18b7c240c578b442404ff1289c38d642404eb0eba787f66b18b7c240857ff1289c3ba787f66b1588b74240489742404ff228b4008ba787f66b18b74240489742404ff228b78045753eb128b4004ba787f66b18b74240489742404ff22f644240401752f8b7c24048b0789ffff7704ba787f66b18b7c2410578b5c2408ff1289c25e891424897424043b650c7303ff552cebca5883c404c20400f644240401756f8b7424048b3e89f6ff76048b3789f283fe0175178b4710ba787f66b18b7c2414578b5c2408ff1289c2eb5b89d683fa0575178b4704ba787f66b18b7c2414578b5c2408ff1289c2eb3d83fe07750a8b7f0457ff742408eb438b470cba787f66b18b7c2414578b5c2408ff1289c2eb175bba787f66b18b4424048b74240c8974240c83c408ff225e891424897424043b650c7303ff552ce95efffffff64424040175558b7424048b3e89f6ff76048b7f088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000ba787f66b18b7c2420578b5c2408ff1289c25e891424897424043b650c7303ff552ceba45a83c404eb89f64424040175318b7424048b3e89f6ff76048b07ba787f66b18b7c2410578b5c2408ff1289c25e891424897424043b650c7303ff552cebc85883c404c20400f64424040175528b7424048b3e89f6ff76048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000ba787f66b18b7c2414578b5c2408ff1289c25e891424897424043b650c7303ff552ceba75bba787f66b18b4424048b74240c8974240c83c408ff22f64424040175318b7424048b3e89f6ff76048b07ba787f66b18b7c2414578b5c2408ff1289c25e891424897424043b650c7303ff552cebc85883c408c20400f64424040175348b7424048b3e89f6ff76048b3f8b4708ba787f66b18b7c2414578b5c2408ff1289c25e891424897424043b650c7303ff552cebc55bba787f66b18b4424048b74240c8974240c83c408ff22f4000000|@11051,1,@358|13,0,@5169 215,0,@11050 229,0,@11050 247,0,@11050 281,0,@11050 295,0,@11050 313,0,@11050 331,0,@11050 370,0,@11050 386,0,@11050 426,0,@11050 440,0,@11050 464,0,@11050 502,0,@11050 516,0,@11050 540,0,@11050 554,0,@11050 579,0,@11050 595,0,@11050 613,0,@11050 644,0,@11050 683,0,@11050 699,0,@11050 718,0,@11050 766,0,@11050 780,0,@11050 796,0,@11050 837,0,@11050 858,0,@11050 872,0,@11050 909,0,@11050 923,0,@11050 947,0,@11050 961,0,@11050 980,0,@11050 1005,0,@11050 1038,0,@11050 1111,0,@11050 1141,0,@11050 1179,0,@11050 1200,0,@11050 1294,0,12 1299,0,@11050 1361,0,@11050 1452,0,8 1457,0,@11050 1494,0,@11050 1536,0,@11050 1602,0,@11050 1639,0,@11050 5170:D3,220|3b650c7305ff552ccd0953a8010f85bb0000008b38ff70048b07ff77048b7c24108b7424188b5424148b5d008d5be83b5d087305ff5528cdc5895d00c743fc0500000089531089730c897b088b7c2408897b04c703048529b1e89291ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24188b7424148b5424105756528b4424108b5c2414e85dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f400|@10030,1,@362|85,0,@5171 90,1,@5117 211,0,0 5171:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@361| 5172:D3,220|3b650c7305ff552ccd0953a8010f85bb0000008b38ff70048b07ff77048b7c24108b7424188b5424148b5d008d5be83b5d087305ff5528cdc5895d00c743fc0500000089531089730c897b088b7c2408897b04c703608629b1e83690ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24188b7424148b5424105756528b4424108b5c2414e85dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f400|@10030,1,@364|85,0,@5173 90,1,@5117 211,0,0 5173:D3,88|3b650c7305ff552ccd0589d7ff7704508b570889d6ff3289f28b760489d18b52088b490c8b5f0c8b471050ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@363| 5174:D3,620|3b650c7305ff552ccd09a8010f85430200008b38ff70048b076a016a016a018b5424208b4c24148b7c241c8b742418535483042404575689cbff12ff3424ff742408ff7424106a016a018b7424108b1689d783fa11755b89f68b7e048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e93e01000089f683ff0d756389f68b7e0489f68b56088b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e9d40000008b7c24288b570cb801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702030000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e0489168b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2410894a0c897a08c7420401000000c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240c894f048917893424897c2404ff34248b5c24086a016a018b7c24408b74243c8b5424388b4c243454575652518b442440e8e7fdffff5e5f8b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d64240c8b7424308916897e04b80100000083c41cc214008b7c2414c70701000000895f04b801000000c21400f400|@11054,1,@365|123,0,1 229,0,0 292,0,0 331,0,2 366,0,1 444,0,0 450,0,1 587,0,0 603,0,0 611,0,0 5175:D3,148|3b650c7305ff552ccd058b3889fe83ff07750ab8e08066b18b5d04ff2389f783fe0375088b40048b5204ff2283ff0175278b70048b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec38b70048b4a0c89cf8b49fcc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b7c77fe83ff01750ab8b07766b18b5d04ff238b07c3f4000000|@11063,1,@366|20,0,@11060 74,0,@9990 113,0,@9988 132,0,@10986 5176:D3,92|3b650c7305ff552ccd0589d68b108b48048b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f8b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8003566b18b5d04ff2389ce897c56feb801000000c3f4000000|@11064,1,@367|67,0,@10015 83,0,0 5177:D3,800|3b650c7305ff552ccd0d52ff30ff7004ff700cff7010ff70148b7818ff701cff73048b5b0883ff017d098d642420e99901000081ffffffff010f8d8901000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd0a895500d1ef897afcc642ff4089d7d1e9b801000000f3abbe010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc010000408937578b7c243c8b4c24388b75008d76dc3b75087305ff5528cd8e897500c746fc0800000089561c8b442404894618894e14895e108b0c24894e0c897e088b7c2418897e04c706988d29b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7077c9529b1b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f43b55087305ff5528cdc0895500c742fc020000008b0c24894a04c702ec9529b18b4c24348b4424308b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148973108b74240c89730c897b088b7c24288b7f04897b04c703289629b18b442424e8e589ffff8b7c24088b37bf01000000eb0e8d642420b8383066b18b5d04ff23f7c60100000075368b0e8b56048b198b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc1ebc2578b7c2404ff378b7c241c83ff037507bf03000000eb068b7c240c8b3f578b3c2483ff03750489c7eb1f68c88366b168048466b1ff74240c68408466b1bbc05366b1e8650a000089c78b55008d52dc3b55087305ff5528cd80895500c742fc080000008b74241c89721c8b7424048972188b34248972148b7424248972108b74240889720cc74208010000008b74242c897204893a5f8d64240483ff03750b8d642430bf003b66b1eb4d8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706983228b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000897708895704c7070300000083c42c8b74240c8916897e04b801000000c21400f4000000|@11110,1,@408|53,0,16777215 109,0,0 116,0,0 150,0,0 251,0,@5178 286,0,@5184 291,0,0 358,0,@5185 430,0,@5186 439,1,@5117 450,0,0 461,0,@9964 549,0,1 575,0,@11077 580,0,@11079 589,0,@11081 594,0,@10422 599,1,@5190 668,0,0 696,0,@10093 734,0,@4963 772,0,1 789,0,0 5178:D3,108|3b650c7305ff552ccd0589c789d0576a016a01ff70048b78088b700c8b50108b48148b58188b401cff34245756525153508b4424288d5c2420e8420000008d6424045f5e8d6424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@11074,1,@374|58,1,@5179 5179:D3,472|3b650c7305ff552ccd09538b3889fe83ff03750c8b70048b7c2420e9cb00000089f783fe0775358b75008d76f43b75087305ff5528cd01897500c746fc02000000894604c706030000005f8937c74704003b66b1b801000000c21c0083ff0175358b75008d76f43b75087305ff5528cd01897500c746fc02000000894604c706030000005f8937c74704003b66b1b801000000c21c008b70048b7c24088b7ffcc1e708c1ef0783cf013bf7720e8d642404b8783266b18b5d04ff238b7c24088b7c77fe83ff01750e8d642404b8b07766b18b5d04ff235e8b3f8b1789168b7f04897e04b801000000c21c00f7c7010000000f85cf0000008b078b570483fe010f85990000008b3883ff05754c8b7c241cf7c70100000075408b78048b74241c8b363bfe75118b7c2418c70703000000bf03000000eb05bf0100000083ff0375185ebff48166b18b1789168b7f04897e04b801000000c21c008b542414ff1289c7ff378b47048b7424048b5424148b4c241c8b5c2410895c241889c38b0424894c241c89542420897424248b7c2408897c241483c414e9520000008d64240889f183e902710e8d642404b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e925ffffff8d642404b8643c66b18b5d04ff23f4000000|@11073,1,@373|70,0,1 80,0,@10093 85,0,0 128,0,1 138,0,@10093 143,0,0 178,0,@9988 205,0,@10986 228,0,0 299,0,1 304,0,1 311,0,0 322,0,@11067 337,0,0 406,1,@5180 426,0,@9455 459,0,@10105 5180:D3,564|3b650c7305ff552ccd09538b3883ff03757a8b700489f78b3683fe05751d8b742410f7c6010000007407be03000000eb05be0100000083f602eb05be0100000083fe0375478b7f048b7424108b363bfe75118b7c240cc70703000000bf03000000eb05bf0100000083ff03751f8d6424048b742410bff48166b18b1789168b7f04897e04b801000000c210008b3883ff01752e8b70048b50088b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70701000000eb318b40048b5c2408e87b01000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b7c24048b1789d683fa05750abf003b66b1e90d01000089ff89f283fe01750abf003b66b1e9fa00000089ff89d683fa09750abf003b66b1e9e700000089ff83fe03757189ff8b770489ff8b47088b7c24148b4c24108b5c240c8b55008d52e43b55087305ff5528cdcb895500c742fc06000000894214895a10894a0c897a08c74204388266b1c7028c9429b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70703000000eb6f89ff8b770489ff8b47088b7c24148b4c24108b5c240c8b55008d52e43b55087305ff5528cdcb895500c742fc06000000894214895a10894a0c897a08c74204388266b1c702049529b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707070000008b7424188b142489168d642404897e04b80100000083c404c21000f400|@11072,1,@372|43,0,1 50,0,0 60,0,0 88,0,1 93,0,1 100,0,0 118,0,@11067 133,0,0 187,0,0 201,1,@5181 238,0,1 257,0,@10093 276,0,@10093 295,0,@10093 374,0,@11070 380,0,@5182 418,0,1 487,0,@11070 493,0,@5183 531,0,3 552,0,0 5181:D3,556|3b650c7305ff552ccd098b3bf7c7010000000f85fa000000ff37ff77048b7424048b363bf075098d642404e9ae0000008b0e89ca83f901752f8b1083fa0175238b76048b50043bf27507be03000000eb05be0100000083fe037402eb068d642404eb7be99500000089d183fa03752a8b1083fa0375218b76048b50043bf27507be03000000eb05be0100000083fe0375068d642404eb47eb6489ca83f905752c8b1083fa0575238b76048b50043bf27507be03000000eb05be0100000083fe037402eb068d642404eb14eb3189d683fe07752a8b3083fe0775238d6424048b7d008d7ff83b7d087305ff5528cd09897d00c747fc010000005e8937eb1a5e89f73b650c7305ff552ccd8983c404e9fafeffffbf010000008b0b83ff010f85e0000000f6c1010f85890000008b398b7f0489fe83c602710ab8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdcb895500c742fc0200000089720489028b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e048916893383c702710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c38b75008d76f43b75087305ff5528cd09897500c746fc02000000c746040100000089068b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c74704010000008937893bb8b83966b1c38b3f8b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f4|@11069,1,@369|75,0,1 82,0,0 129,0,1 136,0,0 178,0,1 185,0,0 275,0,0 312,0,@9455 391,0,@9455 431,0,1 465,0,0 500,0,0 509,0,@10071 550,0,1 5182:D3,100|3b650c7305ff552ccd05528b3c248b5714ff1289c78b078b5f046a016a018b5424088b4a0489d28b7a0889d28b720c89d28b52105457565289caff125f5e8d6424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@11071,1,@370| 5183:D3,100|3b650c7305ff552ccd05528b3c248b5714ff1289c78b078b5f046a016a018b5424088b4a0489d28b7a0889d28b720c89d28b52105457565289caff125f5e8d6424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@11071,1,@371| 5184:D3,92|3b650c7305ff552ccd0589d68b108b48048b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f8b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8003566b18b5d04ff2389ce897c56feb801000000c3f4000000|@11075,1,@375|67,0,@10015 83,0,0 5185:D3,40|3b650c7305ff552ccd058b720489f78b0689fe8b3f83c702710ab8f80466b18b5d04ff23893ec3f4|@11076,1,@376|27,0,@9455 5186:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@377| 5187:D3,52|3b650c7305ff552ccd0989c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f4000000|@11078,1,@378|43,0,1 5188:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@11080,1,@379|11,0,0 5189:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@11078,1,@380|11,0,0 5190:D3,152|3b650c7305ff552ccd0989c289de8b7c240883ff017d02eb748b7c240881ffffffff017d688b7c240889f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd46895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab5289f08b7424108b5424148b4c2408895c240889c38b0424894c240c895424108974241483c404e9230000008d642404b8383066b18b5d04ff23f4|@11109,1,@407|31,0,16777215 87,0,0 133,1,@5191 142,0,@9964 5191:D3,148|3b650c7305ff552ccd09508b7c24148b7424108b54240c8b4c240868488466b1575652518b442414e87b00000089c783ff0175538b7c24148b7424108b54240c8b4c24088b5d008d5be43b5d087305ff5528cdc6895d00c743fc06000000894b1489531089730c897b08c74304488466b1c7035cbc29b1588b3c24897c241083c410e9ad7dffff8d6424048b07c21000f4000000|@11108,1,@406|28,0,@11082 41,1,@5192 109,0,@11082 115,0,@5216 131,1,@5117 5192:D3,2232|3b650c7305ff552ccd0989c7538b37ba789829b181c2200000008d54b2fcffe2e9ab000000909090e9a9000000909090e9aa000000909090e91b020000909090e919020000909090e91a020000909090e9e2020000909090e9e3020000909090e9d2030000909090e916050000909090e914050000909090e915050000909090e9f0050000909090e9c0060000909090e9be060000909090e9bf060000909090e95d070000909090e95b070000909090e959070000909090e957070000909090e958070000909090e9dc0700009090908d642404eb048d642404e97d0100008b4704ff77088b5c241c8b7c24188b7424148b5424108b4c240c5756525189da8b5c2414ff1289c7576a016a018b7c24288b7424248b5424208b4c241c8b5c241857565251538b4424208d5c2414e89a070000ff3424ff742408f60424017407bf03000000eb05bf0100000083f70283f70283ff030f84a90000008b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2414897b04c7033ca329b18b442410e8047cffff89c78b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642408c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c414c214008d6424048b7d008d7ff03b7d087303ff5528897d00c747fc030000008b34248977088d6424048b742408897704c707050000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c414c214008d642404eb048d642404e9d40000008b4704ff7708ff770c8b5c24208b7c241c8b7424188b5424148b4c24105756525189dabbbc3a66b1ff1289c7578b5c24248b7c24208b74241c8b5424188b4c24145756525189da8b4424188b5c241cff1289c7578b5c24288b7c24248b7424208b54241c8b4c24185756525189da8b4424188b5c2420ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d642410c7070b0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642404e9470200008b4704ff7708ff770c8b5c24208b7c241c8b7424188b5424148b4c241057565251e87e09000089c7578b0424e8470a000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b74240c897704c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b5c24248b7c24208b74241c8b5424188b4c24145756525189da89c38b442418ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c8977088b34248977048d642410c7070f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c21400ff77048b3c248b3789f283fe07751b8d6424048b5424148b0424ff128d642404beb43a66b1e9e000000089ff89d683fa03751d89ff8b47048d6424048b5424108b1c24ff1289c68d642404e9ba00000089ff83fe01751989ff8b47048b5424108b5c2404ff125e8d642404e99a00000089ffff7704f644240801740e8d64240cb8d88566b18b5d04ff238b7c24108b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d64240cb8783266b18b5d04ff238b7c241089f68b5c77fe83fb0175068b7c2408eb0b8b442408e81209000089c78b7424108b4efcc1e108c1e90783c9018b342489f23bf1720e8d64240cb8003566b18b5d04ff238b74241089d2897c56fe8d6424045e83c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642404eb048d642404e9bf010000ff7704ff77088b7f0c83ff010f85c50000008b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424088977088b3424897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b5c24208b7c241c8b7424188b5424148b4c24105756525189da89c38b442414ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b14248957088d64240c897704c707170000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d64240cb801000000c214008b47046a016a016a016a016a016a016a016a018b7c24348b7424308b54242c8b4c242854575652518b5c2434e8d6070000ff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424288b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642404eb048d642404e9aa000000ff77048b47088b5c241c8b7c24188b7424148b5424108b4c240c5756525189da8b5c2414ff1289c7578b5c24108b7c24208b74241c8b5424188b4c2414575652518b442414e8ce12000089c683fe0175065f83c408eb308b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c7071f00000083c4088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642404eb048d642404eb048d642404eb048d642404e9900000008b47048b7f0883ff0175758b7c24188b7424148b5424108b4c240c8b5c2408ff34245756525153bb01000000e8ca19000089c68d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642404b801000000c214008d642404b801000000c21400f40000|@11106,1,@404|16,0,@5192 302,1,@5193 320,0,1 327,0,0 379,0,@5194 388,1,@5117 432,0,2 477,0,15 562,0,2 651,0,@10090 788,0,5 866,1,@5196 877,1,@5197 921,0,0 954,0,0 1044,0,7 1112,0,@10089 1208,0,@11090 1247,0,@9988 1282,1,@5198 1318,0,@10015 1376,0,8 1483,0,2 1516,0,0 1587,0,0 1606,0,11 1646,0,0 1698,1,@5199 1834,0,12 1954,1,@5211 2012,0,15 2117,0,0 2122,1,@5214 2161,0,0 2170,0,20 2210,0,0 2222,0,0 5193:D3,484|3b650c7305ff552ccd0953a8010f85b50100008b388b40048b37ff368b142483fa010f85bc0000008d642404ff76086a016a018b7c24248b7424208b54241c8b4c24188b5c241457565251538d5c2414e8abffffffff3424ff7424088b5c242c8b7c24288b7424248b5424208b4c241c5756525189da8b442420bbbc3a66b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d64240489378b7424108b142489168d642414897e04b801000000c21400ff7604ff7608ff77046a016a018b7c24308b74242c8b5424288b4c24248b5c242057565251538d5c2414e8edfeffffff3424ff7424088b5c24388b7c24348b7424308b54242c8b4c24285756525189da8b4424248b5c242cff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b7424188977048b74241c89378b75008d76f43b75087305ff5528cd80897500c746fc020000008b542410895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240489570489378b742420893e8b3c24897e048d642424b801000000c214005ebf943966b18b1789168b7f04897e04b801000000c21400f4000000|@11083,1,@381|123,0,@10090 162,0,2 221,0,0 449,0,0 458,0,@10068 473,0,0 5194:D3,220|3b650c7305ff552ccd058b3889fe83ff05751f8b7d008d7ff83b7d087305ff5528cd01897d00c747fc01000000890789f8c389f783fe19751f8b7d008d7ff83b7d087305ff5528cd01897d00c747fc01000000890789f8c383ff1d75788b40046a016a018b5a0454e8830000005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7021d0000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4|@11089,1,@383|105,1,@5195 142,0,14 180,0,15 214,0,0 5195:D3,284|3b650c7305ff552ccd09a8010f85df000000ff308b40048b3c24ff37f6c3010f85be0000008b3b8b5b048b3f8b3f83ff0175696a016a0154e8c3ffffff5a598b75008d76f43b75087305ff5528cd06897500c746fc020000008b3c24897e048d642404c706050000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489378b7424088916897e04b80100000083c404c204008d6424046a016a0154e856ffffff5e5f8b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d6424048b7424048916897e04b801000000c204008d642408b8a88466b18b5d04ff2383fb01751b8b742404bf943966b18b1789168b7f04897e04b801000000c20400b8a88466b18b5d04ff23f4|@11088,1,@382|101,0,2 146,0,0 220,0,0 232,0,@11084 251,0,@10068 266,0,0 274,0,@11084 5196:D3,192|3b650c7305ff552ccd0953a8010f85a00000008b38ff70048b07ff77048b5c24088b7c241c8b7424188b5424148b4c24105756525189dabbbc3a66b1ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c241c8b7424188b5424148b4c2410575652518b4424148b5c2418e878ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc210008d642404b801000000c21000f4|@10030,1,@384|56,0,@10090 184,0,0 5197:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@385|68,0,0 5198:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@386| 5199:D3,1584|8d7c24ac3b7d0c7305ff5530cd0950538b7c2404ff378b7c2408ff77048b7c240cff770c8b7c2410ff77108b7c2414ff77148b7c2418ff77188b7c241cff771cbe010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757bf010000008b742410f7c60100000075288b4e0489fa83c202710e8d642428b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ff017d098d642428e99400000081ffffffff010f8d8400000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab56be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70738ad29b157ff74242c6a01eb0e8d642428b8383066b18b5d04ff23f6442404010f85990000008b7c24048b3f8b742404ff76048b1789d683fa0375278b55008d52f43b55087303ff5528895500c742fc020000008b7c2404897a04c702cc5366b1eb4783fe01751d8b47048b7c240483ff01750489c2eb0b8b5c2404e84705000089c2eb258b55008d52f43b55087303ff5528895500c742fc020000008b7c2404897a04c702b43a66b15e891424897424043b650c7303ff552ce95cffffffff342468708666b18b7424548b5424508b4c244c8b5c24488b7d008d7fe03b7d087305ff5528cd4e897d00c747fc070000008b442430894718895f14894f1089570c8977088b74241c897704c7074cae29b18b75008d76f43b75087305ff5528cd80897500c746fc020000008b542418895604c70630b029b157ff742414ff74242c568b5424108b4424488b5c2414ff1289c78d642404578b7c2414ff37ff34246a01f6442404010f85990000008b7c24048b3f8b742404ff76048b1789d683fa0375278b55008d52f43b55087303ff5528895500c742fc020000008b7c2404897a04c702cc5366b1eb4783fe01751d8b47048b7c240483ff01750489c2eb0b8b5c2404e85407000089c2eb258b55008d52f43b55087303ff5528895500c742fc020000008b7c2404897a04c702b43a66b15e891424897424043b650c7303ff552ce95cffffff5ff64424040174068d642404eb4f8d6424048b742408f7c601000000752c8b0e8b56048b0189c383f8037502eb1589d983f907740e89d63b650c7305ff552ccdc0ebd3be03000000eb05be0100000083fe0374098b742408e968010000bf0100000083ff01750d8b7c24208b37bf01000000eb5b8d6424408b1f83fb0175035feb0e8b0424e8f006000089c78d642404ff3424578b7424208b54241c8b4c24188b5c24148b442410894424108b442404895c24148b1c24894c24188954241c8974242083c40ce903fcffff8d64240cf7c60100000075368b0e8b56048b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc2578b442434e8c706000089c78b7424208b56fcc1e208c1ea0783ca01be0100000083fa01754e89f389f8e80207000089c78b7424608b54240889168b54243c8956048b5424048956085a8d64240889560c897e108b7c2424897e148b7c2420897e188b7c241c897e1cb80100000083c440c2140089d383eb0289d083e8028b4c24208b4441fe8b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897104890189da89ce3b650c7305ff552ccdc4e969fffffff7c60100000075218b0e8b56048b0983f905750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750489feeb0abf908666b1e95cfefffff7c60100000075218b0e8b56048b0983f905750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe0375c36a01f7c70100000075368b37ff77048b54240483fa03750aba03000000e98d0000008b1683fa0575098b76048b542410eb3d8d642450b8988666b18b5d04ff235f83ff03751f8b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248937eb05bf01000000e959fffffff6c20175368b1a8b4a048b0383f805751c8b5b043bde740e89ca3b650c7305ff552ccdc4ebdaba01000000eb138d642450b8d88666b18b5d04ff23ba030000005989cf8914243b650c7305ff552ccd80e93efffffff4|@11102,1,@398|65,0,0 99,0,0 130,0,@9455 171,0,16777215 227,0,0 235,0,0 300,0,@5200 318,0,@9964 393,0,@10423 425,1,@5202 466,0,@10089 495,0,@11094 569,0,@5203 608,0,@5205 720,0,@10423 752,1,@5207 793,0,@10089 886,0,1 893,0,0 912,0,0 928,0,0 952,1,@5208 1093,1,@5209 1116,0,0 1130,1,@5210 1193,0,0 1306,0,0 1313,0,1 1327,0,@11096 1371,0,0 1378,0,1 1412,0,1 1442,0,@11097 1489,0,0 1537,0,0 1548,0,@11100 1558,0,1 5200:D3,56|3b650c7305ff552ccd05528b3c248b7f048b1f83fb01750489c7eb07e82b00000089c78b34248b76048d642404893eb801000000c3f40000|@11093,1,@388|29,1,@5201 48,0,0 5201:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@387| 5202:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@389| 5203:D3,364|3b650c7305ff552ccd0d528b3c248b7f18f7c7010000000f853f0100008b178b770483f8010f850901000089d7578b3c248b3789f283fe0775188d6424048b3c248b570889d8ff12b8b43a66b1e9d300000089ff89d683fa03751689ff8b47048d6424048b3c248b570cff12e9b400000089ff83fe01751489ff8b47048b7c24048b5710ff1258e99900000089ffff7704f6c301740e8d64240cb8d88566b18b5d04ff238b7c24088b771489f28b46fcc1e008c1e80783c8018b0c2489ce3bc8720e8d64240cb8783266b18b5d04ff2389d789f68b7c77fe83ff01750489dfeb0b89d889fbe89600000089c78b7424088b561489d18b42fcc1e008c1e80783c8018b1c2489da3bd8720e8d64240cb8003566b18b5d04ff2389ce89d2897c56fe8d642404588b3c248b5f048d642404e9cce2ffff89c283ea02710e8d642404b8f80466b18b5d04ff2389d089f73b650c7305ff552ccd89e9b5feffff8d642404b8643c66b18b5d04ff23f400|@11078,1,@391|73,0,@10089 155,0,@11090 199,0,@9988 230,1,@5204 271,0,@10015 304,1,@5181 320,0,@9455 353,0,@10105 5204:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@390| 5205:D3,148|3b650c7305ff552ccd0d52508b7c24048b770489f28b46fcc1e008c1e80783c8018b0c2489ce3bc8720e8d642408b8783266b18b5d04ff2389d789f68b7c77fe83ff01750489dfeb0b89d889fbe85600000089c78b7424048b560489d18b42fcc1e008c1e80783c8018b1c2489da3bd8720e8d642408b8003566b18b5d04ff2389ce89d2897c56fe8d642408b801000000c3f400|@11078,1,@393|47,0,@9988 78,1,@5206 119,0,@10015 141,0,0 5206:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@392| 5207:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@394| 5208:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@395| 5209:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@396|68,0,0 5210:D3,116|3b650c7305ff552ccd09a801755df6c30175588b308b40048b138b5b048b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8beffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@11095,1,@397|108,0,0 5211:D3,1196|3b650c7305ff552ccd0953a8010f858b0400008b388b40048b3789f283fe010f8521010000ff7708ff770cff77108b7c24208b74241c8b5424188b4c2414575652518b5c241ce8b5ffffff89c7578b7c24108b4ffcc1e108c1e90783c9018b54240c89d63bd1720e8d642414b8783266b18b5d04ff2389f689ff8b7c77fe83ff0175278b442404e87486ffff89c781e7010000c081ff010000c07507bf01000000eb05bfbc3a66b1eb0057f6042401740b8d6424045883c410c210008b4c24288b7c24248b7424208b54241c575652ff74242089ca8b442418bbbc3a66b1ff1289c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74240c89770c8b7424108977088b34248977048d642404c707010000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424148938c2100089d683fa050f85b5000000ff77048b7c24188b7424148b5424108b4c240c575652518b5c2414e88ffeffff89c7578b442404e88385ffff89c781e7010000c081ff010000c075075883c408c210008b4c241c8b7c24188b7424148b542410575652ff74241489ca8b442414bbbc3a66b1ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d64240c8938c2100083fe070f85af000000ff77048b7c24188b7424148b5424108b4c240c575652518b5c2414e8d1fdffff89c7578b7c24188b7424148b5424106a01ff74240c5756528b442418bb01000000e86b0200008b5c2408e8a204000089c6f7c60100000074075883c408c210008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d642404893883c408c21000ff7708ff770c8b7c241c8b7424188b5424148b4c2410575652518b5c2418e81ffdffff89c7578b7c240c8b4ffcc1e108c1e90783c9018b54240889d63bd1720e8d642410b8783266b18b5d04ff2389f689ff8b7c77fe83ff0175278b442404e8de83ffff89c781e7010000c081ff010000c07507bf01000000eb05bfbc3a66b1eb0057f6042401740b8d6424045883c40cc210008b4424088b3883ff190f85bc00000089c08b40046a016a016a016a016a016a016a016a018b7c24408b74243c8b54243854575652ff7424408b5c2434e875f0ffffff3424ff742408ff7424108b7424188b54241c8b4c24208b5c24248b4424288b7d008d7fdc3b7d087305ff5528cd4f897d00c747fc0800000089471c895f18894f1489571089770c8b34248977088d6424048b34248977048d6424048b342489378d6424248b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70619000000eb218b4c24248b7c24208b74241c8b542418575652ff74241c89ca8b5c2410ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b74240c8977088b34248977048d642404c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d642404893883c40cc210008d642404b801000000c21000f400|@11104,1,@401|109,0,@9988 136,1,@5140 150,0,-536870912 157,0,0 164,0,@10090 218,0,@10090 281,0,0 377,1,@5140 391,0,-536870912 434,0,@10090 473,0,2 588,0,0 593,1,@5212 602,1,@5213 654,0,3 771,0,@9988 798,1,@5140 812,0,-536870912 819,0,0 826,0,@10090 911,1,@5199 1047,0,12 1134,0,1 1187,0,0 5212:D3,556|3b650c7305ff552ccd0953a8010f85ce0100008b30ff7004ff76048b46088b7c241c8b4ffcc1e108c1e90783c9018b3c2489fa3bf9720e8d64240cb8783266b18b5d04ff238b7c241c89d28b7c57fe83ff0175668d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424048957048937ff3424578b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e94affffff8d6424108b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703b43a66b16a016a016a016a016a016a016a016a018b7c24388b7424348b5424308b4c243c5457565251e841eeffffff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c241c8b7424188b5424148b4c24106a03575652518b4424188b5c241ce84afeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc214008b7c241883ff01750c8d642404b801000000c21400588b7424108b54240c8b4c24088b5c2404895c2404bb01000000894c24088954240c89742410c744241401000000e9d7fdfffff40000|@11103,1,@399|60,0,@9988 217,0,@10089 259,1,@5199 495,0,0 524,0,0 544,0,0 5213:D3,144|3b650c7305ff552ccd09a80175798b388b40048b178b4f048b7bfcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7453fe8b7d008d7ff03b7d087305ff5528cd4f897d00c747fc03000000894f08895704893757e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@400|41,0,@9988 136,0,0 5214:D3,340|3b650c7305ff552ccd0953a801750dff30ff7004ff7424246a01eb0c8d642404b801000000c21800f64424040175738b7424048b3e89f6ff76048b3783fe05752c8b77048b47088b7c24143bfe75188b7c240489fb83ff01750489c2eb07e80501000089c2eb048b542404eb238b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893a5e891424897424043b650c7303ff552ceb865883f801750b8d642404b8bc3a66b1eb048d6424048b5c24208b7c241c8b7424188b5424148b4c24105756525189da89c38b442414ff1289c7578b7c240c83c70257710e8d642414b8f80466b18b5d04ff238b7c242c8b7424288b5424248b4c24208b5c241c8b4424185756525153508b4424208b5c2418e8e1feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c21800f40000|@11105,1,@403|33,0,0 95,1,@5215 173,0,@10090 235,0,@9455 5215:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@402| 5216:D3,64|3b650c7305ff552ccd0589d7508b77048b57088b4f0c8b5f108b4714515350ff742410bbbc3a66b18b4424108954241089742414e9e3dbffff8d642404f40000|@11107,1,@405|36,0,@10090 53,1,@5192 5217:D3,160|3b650c7305ff552ccd0d89c78b07ff77048b338b7b048b4b0c50ff742418ff7424185156ff7204ff742424ff7424245357ff72088b44242c8b5c24188b4c241c8b5424208b7424308944241c8b4424288b3c24897c24208b7c2408897c24288b7c240c897c242c8b7c2410897c24308b7c2414897c2434895c24388b5c24248b7c2404897c2424894c243c895424408974241883c418e9190000008d642430f4|@11141,1,@422|151,1,@5218 5218:D3,3264|8d7c24b03b7d0c7305ff5530cd0953a8010f85e70700008b38ff70048b3789f283fe010f8595030000ff7708ff770cff77108b542438b801000000ff1289c7578b5424388b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704003b66b189378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c240c8938ff126a016a016a018b5424408b5c24348b7c243c8b7424386a01548304240457568b442420ff128b3424ff7424048b3e83ff230f85bb010000ff7604ff76088b7e0c8b3783fe110f85990100008b570489d68b1283fa057507ba03000000eb05ba0100000083fa030f857201000089f78b7f043b7c24187507bf03000000eb05bf0100000083ff030f854c0100008b542454b801000000ff1289c7578b5424548b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704003b66b189378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24288938ff128b542458b801000000ff1289c78b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240889560c897e08c7460401000000c706030000005683ff017d0e8d642438b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c240c8b37bf01000000e9660700008d642430eb0a8d642430eb048d642430b8e48966b18b5d04ff238b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241889770c8b742410897708c7470401000000c70701000000578b7c242889fb83ff0175068b742404eb0b8b442404e8ba09000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404ff74242057ff742458ff742458ff742458ff742458ff7424588b7424588b5424548b4c24508b5c244c8b442448894424488b442418895c244c8b5c2414894c245089542454897424588b3c24897c245c8b7c2404897c24608b7c2408897c24648b7c240c897c24688b7c2410897c246c83c444e946fcffff8d64241c89d683fa0775718b47046a016a0189e3e865090000585b83fb01750489c7eb07e8350a000089c7578b5c24308b7c242c578b442404e8840a00008b7c24148b7424248b5424208b4c241c8b5c242c575652515389c38b442414e87c0b00008d642404bb7c8a66b1e8d20d000089c6bf01000000e90e04000083fe050f85050100008b47046a016a016a018b5424308b5c24248b7c242c8b742428ff74241054830424045756ff125f5a5e8b0f83f92175188d6424088b4c24288939895104897108b801000000c228008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff342457ff742438ff742438ff742438ff742438ff7424388b7424388b5424348b4c24308b5c242c8b442428894424288b442418895c242c8b5c2414894c243089542434897424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c83c424e9c0faffff8d642420ff77088b470c6a016a016a018b5424348b5c24288b7c24308b74242cff74241454830424045756ff12ff3424ff742408ff7424108b7424088b3e89fa83ff2175248b54244c89f689328b7c2404897a048b3c24897a088d64240cb80100000083c418c228006a016a0189f689d783fa11755b89f68b7e048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e93e01000089f683ff0d756389f68b7e0489f68b56088b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937893c248b7c240c897c2404e9d40000008b7c243c8b570cb801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702030000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e0489168b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2410894a0c897a08c7420401000000c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240c894f048917893424897c24048b3c24ff7424048b5424508b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24248938ff12ff742428ff742404ff742460ff742460ff742460ff742460ff7424608b7424608b54245c8b4c24588b5c24548b442450894424508b442418895c24548b5c2414894c24588954245c897424608b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c247483c44ce906f8ffff8d642428ff742420ff74240c8b44241c8b7424088b5424348b4c24248b5c2420895c242889c38b0424894c242c895424308b542404897424348b7c240c897c242483c424ff228d64240cf7c6010000000f85f10000008b0eff7604f6c1010f85d50000008b118b590483fb0175758b0a8b5a048b52088b45008d40f43b45087305ff5528cdce894500c740fc02000000895004c700190000008b55008d52ec3b55087305ff5528cdcb895500c742fc0400000089420c895a08894a04c702030000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008979048911eb428b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089790489115a89cf89d63b650c7305ff552ccdc0e911ffffff8d64240cb8408c66b18b5d04ff23b801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240489fb83ff01750489c7eb07e82e12000089c7ff342457ff742438ff742438ff742438ff742438ff7424388b7424388b5424348b4c24308b5c242c8b442428894424288b442418895c242c8b5c2414894c243089542434897424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c83c424e9f1f5ffff8d64242083fe0175108d642404be0100000089fae9cc00000089f283ea025289f283ea0289f183e9028b5c24108b5b0489c8c1e80383c801d1e80fb61c038d1c5d0100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f901750489faeb508b4d008d49ec3b4d087305ff5528cdc4894d00c741fc04000000c7410c010000008951088b542404895104c701170000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a04890a5989ce89d73b650c7305ff552ccdc0e91ffffffff6c20175288b5a0489f183c102710e8d642438b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd33b742428752c8b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000eb0e8d642438b88c8c66b18b5d04ff23f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8797dfeff89c6eb008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b742404897708c7470401000000c70703000000578b7c2448c707030000008b7c243889fb83ff0175068b7c2414eb0b8b442414e83310000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642408ff74242c57ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b442418895c24588b5c2414894c245c89542460897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c247883c450e948f3ffff8d64241cf4000000|@11140,1,@421|55,0,0 102,0,2 137,0,1 170,0,@10093 301,0,1 308,0,0 333,0,1 340,0,0 358,0,0 405,0,2 440,0,1 473,0,@10093 521,0,0 568,0,0 574,0,1 589,0,@11112 629,0,2 664,0,8 676,0,0 702,0,@11115 757,0,0 763,0,0 790,1,@5219 975,1,@5220 991,1,@5221 1012,1,@5222 1048,1,@5223 1057,0,@11121 1062,1,@5226 1069,0,0 1152,0,0 1190,0,2 1439,0,0 1498,0,1 1604,0,0 1667,0,0 1706,0,2 1741,0,1 1819,0,0 1825,0,1 2191,0,12 2232,0,1 2300,0,3 2360,0,@11134 2370,0,0 2450,1,@5229 2589,0,0 2653,0,0 2681,0,1 2688,0,0 2733,0,0 2749,0,11 2824,0,@9455 2884,0,0 2893,0,20 2904,0,@11137 2948,0,0 2955,0,1 2967,1,@4980 3014,0,0 3020,0,1 3031,0,1 3057,1,@5230 5219:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@409| 5220:D3,204|3b650c7305ff552ccd0953a8010f859f000000ff308b40048b3c248b7f088b7f1483ff017507bf03000000eb05bf01000000576a016a0189e3e8c2ffffff5a5e8b3c2483ff038d64240475348b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b801000000c38b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c35ebf388a66b18b1789168b7f04897e04b801000000c3f4000000|@11119,1,@410|39,0,1 46,0,0 123,0,0 173,0,0 180,0,@11118 195,0,0 5221:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@411| 5222:D3,264|3b650c7305ff552ccd0953a8010f85e80000008b38ff7004ff77048b542408b801000000ff1289c7578b5424148b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704003b66b189378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24048938ff128b7c2414578b44240c8b5c2410e830ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c204008d642404b801000000c20400f4|@10030,1,@412|32,0,0 79,0,2 114,0,1 147,0,@10093 256,0,0 5223:D3,436|3b650c7305ff552ccd09a8010f8598010000f6c3010f858f0100008b38ff7004ff33ff7304ff7704ff77088b7d008d7ff83b7d087303ff5528897d00c747fc010000008b74240489378b75008d76f83b75087305ff5528cd80897500c746fc010000008b54240c89166a016a018b5c24308b4424248b54242c8b4c242857565483042408525189da89c38b44241cff12ff34248b4c24088b5424248b7d008d7ff43b7d087305ff5528cd06897d00c747fc020000008b742418897704c707050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24108938ff128b7d008d7ff03b7d087303ff5528897d00c747fc030000008b34248977088d6424148b742404897704c70701000000578b7c24248b7424208b54241c8b4c24188b5c241457565251538b4424208b5c2418e881feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c21400b801000000c21400f400|@11120,1,@413|190,0,2 225,0,1 340,0,0 427,0,0 5224:D3,100|3b650c7305ff552ccd018b78088b7f0cb801000000f7c70100000075428b178b77048b0a83f90575248b4a048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890aeb0289c289d089f73b650c7305ff552ccd81ebb6c3f4000000|@11124,1,@414|17,0,0 5225:D3,16|3b650c7305ff552ccd018b4004c3f400|@11125,1,@415| 5226:D3,600|3b650c7305ff552ccd0950f6042401753b8b3c248b07ff33ff73048b1424ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089770489376a016a01ff74241057eb0a8d642404b801000000c3f6442404010f85840000008b7c24048b0789ffff77048b74240489f7ff3689ffff77048b54241cff1289c63b7424047d0489f7eb048b7c240483c602710e8d642428b8f80466b18b5d04ff233b34247e068d642408eb045e83c4048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ce971ffffff8b3c248b378974240889ff8b7f048d642404897c2408ff7424048b7c240c2b3c24710e8d64241cb8f80466b18b5d04ff2383c70183ff017d068d64241ceb4c81ffffffff017d4089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab56ff74241c68c45d66b1eb0e8d64241cb8383066b18b5d04ff23f6442404010f85c60000008b74240489f7ff3689ffff77048b5424248b442404ff1289c62b742414710e8d642430b8f80466b18b5d04ff2383c6018b7c24108b57fcc1e208c1ea0783ca013bf2720e8d642430b8783266b18b5d04ff2389ff8b7477fe83fe01754c6a016a016a0154ff742434ff74243cff74242c57ff74244c8b4424288b5c242ce8650000005f5e598b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204893aeb048b5424085e89542404897424083b650c7303ff552c83c404e92fffffff8b3c248b47088d642428c3f400|@11133,1,@418|81,0,0 153,0,@9455 269,0,@9455 294,0,16777215 346,0,0 358,0,@10588 369,0,@9964 425,0,@9455 462,0,@9988 515,1,@5227 5227:D3,772|3b650c7305ff552ccd0950ff33ff7304ff73088b5424248b44240cff1289c7578b5424248b442410ff1289c7578b55008d52f43b55087303ff5528895500c742fc020000008b7c240c897a048b7c2414893a8b7424248b7c24042bfe710e8d642418b8f80466b18b5d04ff2383c701578b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2414897e048b7c2414893e8b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100000089378b7424248b4efcc1e108c1e90783c9018b34243bf1720e8d64241cb8003566b18b5d04ff238b7424248b0c24897c4efe8b74241483c602710e8d64241cb8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c240c894f0889570489376a016a016a01ff74241057f644240401754c8b7c24048b078b7c2404ff77048b7c24488b7424388b5424408b4c243c8b5c244457565251ff74243068e88a66b1538b5c2420e8ae01000089c25e891424897424043b650c7303ff552cebad8b3c248b3f897c24088b3c248b7f04897c240c5f8b7f08897c240cff7424048b7c240cff7424108b74243c8b56fcc1e208c1ea0783ca018b7424183bf2720e8d642434b8783266b18b5d04ff238b74243c8b5424188b7456fe83fe01750e8d642434b8b07766b18b5d04ff238b368b76043b74242c75096a016a01576a01eb208b74244c8b5424048916897e045f8d642404897e08b80100000083c42cc21800f6442404010f85cc0000008b7c2404ff378b7c2408ff77048b5424608b442404ff1289c73b7c2438756f8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424088977048b74240489375e8d64240889742404897c240883c4045a5e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f0489378b74244859890e895604897e08b80100000083c42cc218008b55008d52f43b55087303ff5528895500c742fc020000008b7c2408897a048b7c2404893a5e8d642404891424897424043b650c7303ff552ce929ffffff8d642444b8488b66b18b5d04ff23f4|@11132,1,@417|99,0,@9455 207,0,@10015 241,0,@9455 348,0,@11126 358,1,@5228 450,0,@9988 481,0,@10986 532,0,0 685,0,0 762,0,@11128 5228:D3,1072|3b650c7305ff552ccd0950538b3c24ff7704ff742424f604240175338b3c248b0789ffff77048b542430ff1289c68b7c24103bfe750b8d642408bf03000000eb175e8934243b650c7303ff552cebc78d642404bf0100000083ff0375668b7424208b7c24082bfe710e8d64240cb8f80466b18b5d04ff2383c701578b7c24208b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642410b8783266b18b5d04ff238b7c242089f68b7c77fef7c7010000007509ff742404e9fa010000ff742428eb0b8d6424045883c404c21c00f6042401755a8b342489f7ff3689ffff77048b5424388b442404ff1289c73b7c2418752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c404eb1b5e897424043b650c7303ff552c83c404eba08d642404bf0100000083ff01750e8d642410b8b07766b18b5d04ff23ff376a016a016a018b4424288b7c243c8b7424248b5424348b4c24308b5c243854575652515389c28b4424248b5c2430ff125f5e5a8d6424048b45008d40f03b45087305ff5528cdc4894500c740fc0300000089500889700489388b7c24208b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642410b8783266b18b5d04ff238b7c242089f68b7c77fe8d64240483ff01750e8d64240cb8b07766b18b5d04ff238d64240c8b3f8b4f048b54240c8b7c24142bd7710ab8f80466b18b5d04ff2383c2018b7c24108b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c24108b7c57fe83ff01750ab8b07766b18b5d04ff238b378b3e8b76043bf17d0489f1eb008b75008d76f43b75087305ff5528cd87897500c746fc02000000894e04893e8b7d008d7ff83b7d087305ff5528cd45897d00c747fc0100000089378b7424108b76fcc1e608c1ee0783ce013bd6720ab8003566b18b5d04ff238b742410897c56fec21c00f604240175338b3c248b0789ffff77048b542434ff1289c68b7c24143bfe750b8d642408bf03000000eb175e8934243b650c7303ff552cebc78d642404bf0100000083ff030f85200100008b7c24208b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642410b8783266b18b5d04ff238b7c242089f68b7c77fe8d64240483ff01750e8d64240cb8b07766b18b5d04ff238d6424048b3f8b0f8b5424148b7c241c2bd7710e8d642408b8f80466b18b5d04ff2383c2018b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d642408b8783266b18b5d04ff238b7c24188b7c57fe83ff01750e8d642408b8b07766b18b5d04ff238b378b3e8b76043bf17d0489f1eb008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04893e8b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100000089378b7424188b76fcc1e608c1ee0783ce013bd6720e8d642408b8003566b18b5d04ff238b742418897c56feeb048d6424085883c404c21c00f40000|@11127,1,@416|59,0,1 84,0,0 110,0,@9455 153,0,@9988 307,0,0 321,0,@10986 451,0,@9988 484,0,@10986 515,0,@9455 548,0,@9988 571,0,@10986 675,0,@10015 732,0,1 757,0,0 800,0,@9988 833,0,@10986 867,0,@9455 904,0,@9988 931,0,@10986 1039,0,@10015 5229:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@419| 5230:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@420| 5231:D3,6624|8d7c24a03b7d0c7305ff5530cd0d5052538b7424208b54241c8b4c24188b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8957088977048b34248937578b7c240c8b37baf0d929b181c25d0000008d54b2fcffe2e9ab000000909090e99b010000909090e984020000909090e9f3030000909090e952040000909090e992050000909090e9f1050000909090e9f2050000909090e951060000909090e9ea060000909090e9eb060000909090e9a4080000909090e9450a0000909090e9b00a0000909090e9d80f0000909090e9d90f0000909090e94f100000909090e953100000909090e9bc110000909090e9a1120000909090e9be130000909090e91514000090909089ff89feff770489f689f7ff760889ff8b470c6a016a016a018b7c241c8b57048b7c242c8b7424286a01548304240457568b5c2424ff12ff34248b7c24086a016a016a018b74242c8b4e048b74243c8b542438575483042404565289ca8b4424308b5c2434ff12ff34248b7c24086a016a016a018b74243c8b4e048b74244c8b542448575483042404565289ca8b44243c8b5c2444ff125f588d6424048b5d008d5bec3b5d087305ff5528cd81895d00c743fc040000008b74241089730c897b085f8d642428897b04c70301000000e81318000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc2140089ff8b57048b7a088b3783fe017571ff7704ff328b7a048b720c8b42106a016a016a018b54241c8b5a148b54242c8b4c2428ff74240c5756ff7424206a015483042414525189da89c38b442430ff125b585f8d64240c57e80b18000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc21400ff7704ff328b7a048b720c8b42106a016a016a018b54241c8b5a188b54242c8b4c2428ff74240c5756ff7424206a015483042414525189da89c38b442430ff125b585f8d64240c57e83a19000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc214008d64240489fe89f7ff760489ffff77088b7c2428ff378b442404e8971a00008b5c2408e8925affff89c7578b7c24308b74242c8b5424288b4c24248b4424208b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c2410897b088b7c2414897b04c7032cf829b18b0424e89a38ffff89c78d642404578b0424bb01000000e8121b000089c783ff0374218b45008d40f83b45087303ff5528894500c740fc010000005f893883c418c214008d6424048b74242c5f893e8b5c24208b7c241c8b7424188b5424288b4c2424ff742408ff742410575652518b442418e8de1b000089c7578b7c242c8b7424288b5424248b4c24208b44241c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c240c897b088b7c2410897b04c70318fc29b18b442408e8cd37ffff89c7578b442408e8391e000089c3ff7424048b442404e8821e000089c7578b3c24e90014000089fe8b5e0489f68b7e0889f68b460c6a016a016a018b7424148b4e1c8b7424248b54242057ff7424106a01548304240c565289caff125b585f8d64240457e87c20000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc2140089fe89f7ff760489ff89feff770889f689f7ff760c89ff8b47108b7c240883ff017507bf03000000eb278b7c240883ff037507bf03000000eb178b7c24088b3f83ff037507bf03000000eb05bf09000000576a016a018b7c24208b57088b7c24308b74242cff742418548304240457568b5c2418ff12ff3424ff7424086a016a018b7c24308b57088b7c24408b74243cff742428548304240457568b44242c8b5c2428ff12ff3424ff7424086a016a016a018b7c24448b57048b7c24548b7424506a01548304240457568b4424448b5c244cff12ff34248b7c24088b34248b3683fe0d754f8b34248b5604f6c201743df6c201742a83fa09771e8b75008d76f83b75087305ff5528cd84897500c746fc010000008916eb05be01000000eb138d642450b8cc4466b18b5d04ff23be01000000eb05be01000000568b542424be01000000e95710000089ff8b470489ff8b5f0889ff8b7f0c6a016a016a018b7424148b4e108b7424248b54242057ff7424106a01548304240c565289caff125b585f8d64240457e86d20000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc214008d642410e90c01000089ff8b5f0489ff8b470889ff8b7f0c6a016a016a018b7424148b4e248b7424248b54242057ff7424106a01548304240c565289caff125b585f8d64240457e89d21000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc214008d64240c89ff8b47048d6424048b542410ff1289c78b378b7f048b1683fa01752e8b56048b76088b5d008d5bf03b5d087305ff5528cdc4895d00c743fc03000000897308895304c7030d000000eb268b76048b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304c7031100000057b801000000e89922000089c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c214008d642410e9110900008d64240489ff89feff770489f689f7ff760889ffff770c8b7c242c8b7424288b5424248b4c24208b44241c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c240c897b088b7c2410897b04c7039c052ab18b442408e80634ffff89c7578b542428b801000000ff1289c7578b5424148b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704003b66b189378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff128b7c24348b7424308b54242c8b4c24288b4424248b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c2414897b088b7c2418897b04c70300062ab18b44240ce80633ffff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000005a89570c8977085e8d642418897704c707150000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c2140089fe8b460489f689f7ff760889ffff770c6a016a016a018b7c241c8b57048b7c242c8b7424286a01548304240457568b5c2424ff128b3424ff7424048b7c240c6a016a016a018b1783fa07757f8b57088b442420ff1289c78b378b7f048b1683fa01752e8b56048b4e088b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c7060d000000eb268b56048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706110000008934248b74240c89742404897c2408e9b00000008b7c241c83ff03754b8b3e83ff0d75116a0389f08b5c2424e8a555feff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b542420895708897704c70717000000eb498b3e83ff0d75116a0189f08b5c2424e85a55feff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542420895708897704c70717000000893c248b7c240c897c2404c7442408003b66b15b585f57e89121000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c428c2140089ff8b47046a016a018b7c24108b57288b7c24208b74241c6a016a01548304240857568b5c241cff125e8d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc2140089fe89f7ff760489ffff77088b7c24048b3fbef0d929b181c69d0b00008d743effffe6eb10eb15eb1aeb1feb24eb31eb3eeb43eb48bb05000000eb46bb09000000eb3fbb11000000eb38bb03000000eb318b542420b801000000ff1289c3eb228b54241cb801000000ff1289c3eb13bb03000000eb0cbb09000000eb05bb090000006a016a018b7c24188b57088b7c24288b742424ff742410548304240457568b442418ff12ff3424ff7424088b7c24048b3f8b3783fe0d0f85380400008b7f048b7424048b760483fe010f85f70300008b7424048b4e088b7424148b3683fe110f851e010000f7c70100000074318b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000e9e0000000f7c701000000740e8d642428b81c4266b18b5d04ff230fb657ff89d68d14550100000081e2ff01000081e28100000081fa810000007502eb7b8d34750100000081e6ff01000083e60783fe037507be03000000eb05be0100000083fe037407be03000000eb1483f9017507be03000000eb05be0100000083f60283fe0374358b3f8d3c7d010000008b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c7430801000000897b04c7030d000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000e9c10200008b7424148b3683fe0d0f8543010000f7c70100000074318b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000e905010000f7c701000000740e8d642428b81c4266b18b5d04ff23be0900000089c8d1e8d1ee33d2f7f68d3445010000000fb65fff89da8d1c5d0100000081e3ff01000081e38100000081fb810000007505e9870000008d14550100000081e2ff01000083e20783fa037507ba03000000eb05ba0100000083fa037407be03000000eb1c8b57fcc1e208c1ea0783ca013bf27207be03000000eb05be0100000083fe037439d1e90fb63c0f8d3c7d010000008b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c7430801000000897b04c7030d000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000e96f0100008b7424148b3683fe0f0f8534010000f7c70100000074318b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000e9f9000000f7c701000000740e8d642428b81c4266b18b5d04ff23be0900000089c8d1e8d1ee33d2f7f68d3445010000000fb64fff89ca8d0c4d0100000081e1ff01000081e18100000081f9810000007502eb7e8d14550100000081e2ff01000083e20783fa017507ba03000000eb05ba0100000083fa037407ba03000000eb1c8b57fcc1e208c1ea0783ca013bf27207ba03000000eb05ba0100000083fa0374308b7c77fe8b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c7430801000000897b04c7030d000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b000000eb2c8b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2404897b088b7c2414897b04c7031b0000005fb80100000083c424e9670500008d642410e98200000089fe8b7e0489f68b76088b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489386a016a016a018b7c24148b572c8b7c24248b7424206a01548304240457568b5c241cff125b585f8d64240457e8071d000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc214008d642410b801000000c2140089ff89feff770489f689f7ff760889ffff770c8b7c24308b74242c8b5424288b4c24248b4424208b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c2410897b088b7c2414897b04c703a4092ab18b0424e86b2affff89c78d642404576a016a016a018b7c24208b57048b7c24308b74242c6a01548304240457568b4424248b5c2428ff128b1c24ff7424048b7c240c8b3783fe070f85880000008b5f048b7f0883fb017d0e8d64242cb8a84566b18b5d04ff2357b801000000e8061e000089c78b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c7430801000000897b04c70329000000ff3424ff7424188b442418e8be1e000089c78d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c428c21400ff3424ff7424188b442418e8861e000089c78d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c428c2140089ff89feff770489f689f7ff760889ffff770c8b7c24088b3fbef0d929b181c6d81200008d743effffe6eb10eb15eb1aeb1feb24eb31eb3eeb43eb48bb05000000eb46bb09000000eb3fbb11000000eb38bb03000000eb318b542424b801000000ff1289c3eb228b542420b801000000ff1289c3eb13bb03000000eb0cbb09000000eb05bb090000006a016a018b7c241c8b57088b7c242c8b742428ff742414548304240457568b442418ff12ff34248b7c24086a016a016a018b74242c8b4e048b74243c8b542438575483042404565289ca8b44242c8b5c2434ff125f5e8d642404b801000000e9e30100008d64240489ff89feff770489f689f7ff760889ffff770c8b7c242c8b7424288b5424248b4c24208b44241c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c240c897b088b7c2410897b04c70344202ab18b442404e80828ffff89c68b3e83ff0d755b8d6424088b7e04f7c7010000007440f7c701000000742a3b3c248d642404750b8d64240cbf03000000eb098d64240cbf0100000083ff03751ab8089066b1c214008d642410b8cc4466b18b5d04ff238d642410b8cc6866b1c214008b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000005a89570c8977088b742404897704c707270000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c414c2140089ff8b470489ff8b5f086a016a016a018b7c24148b570c8b7c24248b742420ff74240c6a0154830424085756ff125b585f8d64240457e8bd31000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc2140089ff8b5f0489ff8b47086a016a016a018b7c24148b57208b7c24248b742420ff74240c6a0154830424085756ff125b585f8d64240457e8fe32000089c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc21400f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b5d008d5bec3b5d087305ff5528cd81895d00c743fc040000005e89730c897b088b7c2410897b04c70325000000e8c347ffff89c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c424c21400f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdcb895500c742fc02000000894204890a89d089f73b650c7305ff552ccd89ebc4e85e47ffff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c21400f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b742418b801000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc4bb01000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdcb895500c742fc02000000895a04890a89d389f73b650c7305ff552ccd89ebc483fb01750489c3eb07e8b732000089c383fb0175035feb0e8b0424e80933000089c78d64240457f6442404010f85a1000000f6442444010f85960000008b7c2404ff378b7c24488b078b7c2470c707030000008b7c2430ff378b7c24348b5f048b7c24348b4f088b7c24248b378b7c24248b57048b7c24248b7f0883f8037507b8109066b1eb05b8d46866b1ff74244057565251ff7424145350b8010000008b5c2424e8e532000089c38d64240883fb0175065883c454eb0c8b0424e8703400008d642458bbc43966b1e8ae45ffff89c7eb488b5d008d5be83b5d087303ff5528895d00c743fc050000008b7c242c897b108b7c241c897b0c8b7c2408897b088b7c2444897b04c703090000008b0424e86845ffff89c78d6424588b45008d40f83b45087305ff5528cd80894500c740fc010000008938c21400f7c701000000751f8b178b770483fa037507bf03000000eb1389f73b650c7305ff552ccd80ebd9bf0100000083ff030f85e90000006a016a01548b44240c8b5c2414e814340000ff3424ff7424088b4424208b5c2410e83035000089c7578b7c24488b7424448b5424408b4c243c8b4424388b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b18895314897310897b0c8b7c2428897b088b7c242c897b04c703382b2ab18b0424e8f022ffff89c78d6424048b742444c706030000008b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000005e897308897b04c703050000008b0424e84d44ffff89c78d6424108b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c41cc214008d6424048b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424048977085e8d642404897704c707050000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c414c21400f400|@11170,1,@472|77,0,@5231 472,0,0 477,1,@5232 605,1,@5233 718,1,@5235 785,1,@5237 794,1,@5137 878,0,@5238 886,1,@5117 901,0,0 906,1,@5239 998,1,@5240 1082,0,@5242 1091,1,@5117 1103,1,@5243 1118,1,@5244 1196,1,@5246 1272,0,1 1288,0,1 1306,0,1 1313,0,4 1517,0,0 1528,0,@10214 1538,0,0 1545,0,0 1555,0,0 1627,1,@5248 1739,1,@5250 1852,0,6 1892,0,8 1898,0,0 1903,1,@5252 2049,0,@5254 2058,1,@5117 2070,0,0 2117,0,2 2152,0,1 2185,0,@10093 2305,0,@5255 2314,1,@5117 2363,0,10 2538,0,6 2578,0,8 2627,1,@4973 2664,0,1 2680,0,11 2702,1,@4973 2739,0,0 2755,0,11 2774,0,@10093 2783,1,@5256 2900,0,12 2957,0,@5231 2992,0,2 2999,0,4 3006,0,8 3013,0,1 3024,0,0 3039,0,0 3050,0,1 3057,0,4 3064,0,4 3217,0,13 3239,0,@10189 3275,0,64 3305,0,1 3312,0,0 3322,0,1 3334,0,1 3341,0,0 3391,0,0 3400,0,6 3446,0,13 3518,0,13 3540,0,@10189 3550,0,4 3598,0,64 3631,0,1 3638,0,0 3648,0,1 3671,0,1 3678,0,0 3729,0,0 3738,0,6 3784,0,13 3856,0,13 3878,0,@10189 3888,0,4 3936,0,64 3966,0,1 3973,0,0 3983,0,1 4006,0,1 4013,0,0 4055,0,0 4064,0,6 4110,0,13 4156,0,13 4202,0,13 4248,0,13 4254,0,0 4361,1,@5258 4406,0,0 4509,0,@5260 4517,1,@5117 4606,0,@10224 4617,0,0 4622,1,@5261 4657,0,0 4666,0,20 4682,1,@5262 4738,1,@5262 4808,0,@5231 4843,0,2 4850,0,4 4857,0,8 4864,0,1 4875,0,0 4890,0,0 4901,0,1 4908,0,4 4915,0,4 5010,0,0 5119,0,@5268 5128,1,@5117 5178,0,1 5189,0,0 5199,0,@11161 5211,0,@10214 5225,0,@10756 5274,0,19 5367,1,@5269 5462,1,@5271 5604,0,18 5609,1,@5137 5710,1,@5137 5810,0,0 5875,0,0 5949,1,@5273 5967,1,@5274 6018,0,1 6068,0,@11162 6075,0,@10757 6094,0,0 6103,1,@5275 6128,1,@5276 6137,0,@10072 6142,1,@5137 6204,0,4 6212,1,@5137 6272,0,1 6293,0,0 6320,1,@5277 6340,1,@5278 6424,0,@5280 6432,1,@5117 6448,0,1 6487,0,2 6495,1,@5137 6584,0,2 5232:D3,100|3b650c7305ff552ccd0983f801750389d8c3bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc857b801000000e8a6ffffff89c358e95a43fffff400|@11024,1,@423|19,0,0 81,0,0 94,1,@5137 5233:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e98942fffff4|@11024,1,@425|33,1,@5234 80,0,6 93,0,0 160,0,0 183,1,@5137 5234:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@424|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5235:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9e940fffff4|@11024,1,@427|33,1,@5236 80,0,6 93,0,0 160,0,0 183,1,@5137 5236:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@426|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5237:D3,124|3b650c7305ff552ccd01a80175678b388b40048b3f8b378b57048b4f088b7d008d7fec3b7d087305ff5528cd47897d00c747fc04000000894f0c895708897704c7070300000057e8b4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@428|66,0,1 118,0,0 5238:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@429| 5239:D3,276|3b650c7305ff552ccd0989c689d88b3eba90f829b181c2210000008d54bafcffe2e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e984000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e973000000909090e953000000909090e94b000000909090e943000000909090e95f000000909090e95d000000909090e92b000000909090e959000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c38b7e08ff760c89c389f8e81fffffff89c358e917ffffff8b760889c389f0e90bffffffb803000000c38b760889c389f0e9f9feffff8b760489c389f0e9edfefffff4|@11143,1,@430|17,0,@5239 246,0,1 5240:D3,488|3b650c7305ff552ccd0953a8010f85c50100008b30ff70048b3eff7604ff37ff7704ff77088b542414b801000000ff1289c7578b5424348b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704003b66b189378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff12ff7424308b7c24388b7424288b5424248b4c24308b44242c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188b4c241c894b1489531089730c897b088b3c24897b048d642404c703b4fb29b18b442404e8231bffff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e048d64240c8b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e853feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f4000000|@10030,1,@432|42,0,0 89,0,2 124,0,1 157,0,@10093 284,0,@5241 293,1,@5117 477,0,0 5241:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@431| 5242:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@433| 5243:D3,68|3b650c7305ff552ccd01a801752e8b4004e8eaffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3b801000000c3f400|@10030,1,@434|55,0,1 61,0,0 5244:D3,328|3b650c7305ff552ccd0989c789d88b37bad4fc29b181c2210000008d54b2fcffe2e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e986000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e982000000909090e953000000909090e94b000000909090e943000000909090e976000000909090e980000000909090e92b000000909090e984000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c204008b7708ff770c8b7c24085789c389f0e818ffffff89c3588b74240489742404e908ffffff8b570889c38b74240489d089742404e9f4feffff8b77048b5c24048944240489f0e93e0000008b570889c38b74240489d089742404e9cefeffff8b570489c38b74240489d089742404e9bafefffff400|@11143,1,@436|17,0,@5244 282,1,@5245 5245:D3,216|3b650c7305ff552ccd09a8010f85bc000000f6c3010f85b10000008b7c2404f7c7010000000f85a10000008b30ff70048b13ff73048b7c240c8b3f8b4c240cff71048b1e89d98b0383f811753f8b5b048b1b83fb057507bb03000000eb05bb0100000083fb03752489ce8b76048b76048b128b52043bf27507be03000000eb05be0100000083fe037502eb05bf0100000057ff7424048b4424108b5c240ce85dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d64240c8938c20400eb00b801000000c20400f400|@11144,1,@435|88,0,1 95,0,0 122,0,1 129,0,0 141,0,0 207,0,0 5246:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9c937fffff4|@11024,1,@438|33,1,@5247 80,0,6 93,0,0 160,0,0 183,1,@5137 5247:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@437|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5248:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e92936fffff4|@11024,1,@440|33,1,@5249 80,0,6 93,0,0 160,0,0 183,1,@5137 5249:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@439|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5250:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e98934fffff4|@11024,1,@442|33,1,@5251 80,0,6 93,0,0 160,0,0 183,1,@5137 5251:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@441|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5252:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9e932fffff4|@11024,1,@444|33,1,@5253 80,0,6 93,0,0 160,0,0 183,1,@5137 5253:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@443|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5254:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@445| 5255:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@446| 5256:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e98130fffff4|@11024,1,@448|33,1,@5257 80,0,6 93,0,0 160,0,0 183,1,@5137 5257:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@447|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5258:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e9e12efffff4|@11024,1,@450|33,1,@5259 80,0,6 93,0,0 160,0,0 183,1,@5137 5259:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@449|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5260:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@451| 5261:D3,224|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c204008b54240cff1289c78b3f8b3783fe01752e8b77048b57088b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000eb268b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e852ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20400f4000000|@10221,1,@452|28,0,0 92,0,6 132,0,8 151,0,@9455 5262:D3,2852|3b650c7305ff552ccd09508b3bbefc0a2ab181c61e0000008d74befcffe6e9ab000000909090e9a3000000909090e9a9000000909090e993000000909090e98b000000909090e9a5000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e994000000909090e953000000909090e94b000000909090e943000000909090e98b000000909090e995000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e97d000000909090e9030000009090908b74240cbf01000000e9e00900008b7304ff73088b542410bf01000000e940090000ff73048b7308ff730c8b542414bf01000000e9820800008b7304ff7308ff730c8b542414bf01000000e9c40700008d6424048b7c2408b801000000e9670700008b7b04ff7308b801000000e9e90600008b5b048b7c240857b801000000e8e609000089c7578b7c241057b8010000008b5c2404e8ec0a000089c783ff01750e8b742410bf01000000e9cd0300008d6424048b3fff378b47046a016a0189e3e8050e0000ff34248b7c24088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b14248916568b7424108b3683fe0575168b742410ff7604be03000000ba01000000e9aa0000008b7c2420b801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742410897704c707110000008b5d008d5bec3b5d087305ff5528cd81895d00c743fc040000008b74241489730c5e897308897b04c703230000008b7c2414897c241c83c41ce91c2affff3b542408720756ff742428eb6f89d183c1025189d1c1e90383c901d1e90fb60c0f8d1c4d0100000089d183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f903750489f1eb05b9010000005b89da89ce3b650c7305ff552ccdc4eb84f60424010f85d00000008b3c248b3f8b3424ff76048b1789d683fa0175788b4f088b770c8b7f108b54240c3bd1755c3b74241475508b74240883fe0375418b75008d76f43b75087305ff5528cd80897500c746fc020000005a895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c408eb158d64240ceb048d64240ceb048d64240cbf01000000eb4283fe0375348b470ce8492bffff89c781e7010000c081ff010000c075115e8934243b650c7303ff552ce93cffffff8d64240cbf01000000eb098d64240cbf01000000eb098d642408bf0100000083ff0175128d6424048b7c2420b801000000e9ab0000008b3f8b1f8b57048b75008d76ec3b75087305ff5528cd0c897500c746fc040000008b7c2418897e0c5f897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937b80100000083c418f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdcb895500c742fc02000000894204890a89d089f73b650c7305ff552ccd89ebc48b3c24897c240883c408e9fb27fffff7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742410897704c707110000008b5d008d5bec3b5d087305ff5528cd81895d00c743fc040000008b74241489730c5e897308897b04c703230000008b7c2414897c241c83c41ce95a27fffff7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b742404897704c707290000008b742404f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e88b35feff89c7eb0057bf010000008b742408f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b3c2483ff010f8c800000008b3c2483ff017d068d642414eb688b3c2481ffffffff017f598b042483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d642414b8d48e66b18b5d04ff238d642414b82c8f66b18b5d04ff233bf7750d6a016a03be010000006a01eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd18b3c243b7c24100f8da10000008b54240489d10b54240889c989cf81f901010000754d89d1d1e989f2d1ea8b7c240c880c178b0c2483c102710e8d642424b8f80466b18b5d04ff2389f083c002ba01000000bb0300000089c6895c2404890c24895424083b650c7305ff552ccd40eb908b0c2483c102710e8d642424b8f80466b18b5d04ff2389ff89fb89db8d5c1fff89f089c6895c2404890c24895424083b650c7305ff552ccd40e952ffffff8d6424088b3c2483ff0175068d642404eb0b59d1e9d1ee8b3c24880c378b3c248067ffbf8b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977045e89378b5d008d5bec3b5d087305ff5528cd80895d00c743fc040000008b74240c89730c897b085f897b04c70323000000588b7c2408897c241083c410e97b24fffff7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c241083ff01750489c6eb0b8b5c2410e8d50a000089c68b4424045b8d6424048b5424048954240489742408e969f7fffff7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdcb895500c742fc02000000894204890a89d089f73b650c7305ff552ccd89ebc48b3c24897c240883c408e9c223fffff6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc7578b7c24146a015789f38b442414e8d2f6ffff89c7578b7c24186a01578b4424188b5c2414e8bbf6ffff89c78b5d008d5bec3b5d087305ff5528cd80895d00c743fc040000008b74240889730c897b085f897b04c70315000000588d64240c8b3c24897c240883c408e91b23fffff6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc7578b7c24146a015789f38b442414e82bf6ffff89c7578b7c24186a01578b4424188b5c2410e814f6ffff89c78b5d008d5bec3b5d087305ff5528cd80895d00c743fc04000000897b0c5f897b088b7c2408897b04c7030b000000588d64240c8b3c24897c240883c408e97422fffff6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc7578b7c24106a015789f38b442410e884f5ffff89c78b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000008b742404897308897b04c70305000000588d6424088b3c24897c240883c408e9e821fffff7c60100000075348b068b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897904890189cf89d63b650c7305ff552ccdc8ebc4578b7c240cff74240489d889fbe8aa08000089c3588d6424048b3c24897c240883c408e98421fffff4000000|@11160,1,@458|14,0,@5262 211,0,0 231,0,0 254,0,0 277,0,0 295,0,0 311,0,0 329,0,0 334,1,@5263 347,0,0 356,1,@5264 372,0,0 399,1,@5265 464,0,1 469,0,0 483,0,0 582,0,8 628,0,17 644,1,@5137 699,0,0 727,0,1 734,0,0 751,0,0 916,0,0 931,1,@5140 945,0,-536870912 973,0,0 984,0,0 995,0,0 1013,0,0 1069,0,0 1075,0,1 1111,0,0 1189,1,@5137 1288,0,8 1334,0,17 1350,1,@5137 1442,0,0 1455,0,20 1498,0,0 1505,0,1 1517,1,@4980 1527,0,0 1558,0,@9455 1615,0,16777215 1628,0,32 1715,0,@11152 1729,0,@11156 1747,0,0 1814,0,128 1848,0,@9455 1863,0,0 1868,0,1 1910,0,@9455 2068,0,17 2085,1,@5137 2167,1,@5266 2270,1,@5137 2417,0,10 2437,1,@5137 2584,0,5 2604,1,@5137 2724,0,2 2744,1,@5137 2822,1,@5267 2844,1,@5137 5263:D3,264|3b650c7305ff552ccd0983fb017508b801000000c20400ff338b5b048b7c24088b3f3bc77c0c8d642404b801000000c204008b7c24088b378b7c24088b7f0483f8017d098d642404e9ad0000003bc60f8da100000089c6c1ee0383ce01d1ee0fb63c378d3c7d0100000089c183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff01744883c002710e8d642404b8f80466b18b5d04ff238b7c240857e855ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d64240483c002710ab8f80466b18b5d04ff238b74240489742404e90affffff8d642404b8d88d66b18b5d04ff23f4000000|@11148,1,@453|16,0,0 43,0,0 117,0,0 152,0,@9455 224,0,@9455 251,0,@11145 5264:D3,816|3b650c7305ff552ccd0983fb017503c204008b3bff73048b3783fe11752e8b570489d68b1283fa057507ba03000000eb05ba0100000083fa03750b89f78b7f048b742408eb128d642404eb048d642404b801000000c20400f7c60100000075508b0e8b56048b1983fb0375368b59083bdf7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd03897d00c747fc01000000890feb1389d63b650c7305ff552ccdc1eba8bf01000000f7c7010000000f85600200008b1789d68b0a83f90375388b520c8b0a83f91775278b4a048b520c8b0983f911751383fa017507ba03000000eb05ba01000000eb05ba01000000eb05ba01000000eb05ba0100000083fa030f850902000089f78b7f0c8b77048b7f088b7604a8010f85870100008b088b118b49043bd67505e9c90000008b0289c383f80175368b1e83fb0175268b52048b5e043bd37507ba03000000eb05ba0100000083fa0374068d642404eb09e9930000008d642404e93001000089d883fb0375338b1e83fb0375238b52048b5e043bd37507ba03000000eb05ba0100000083fa037502eb5f8d642404eb048d642404e9f600000089c383f80575338b1e83fb0575238b52048b5e043bd37507ba03000000eb05ba0100000083fa0374068d642404eb06eb1f8d642404e9bc00000089da83fa070f85ad0000008b1683fa070f859c000000f6c1010f85850000008b113bfa7e07ba03000000eb05ba0100000083fa0375688b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc0100000089385b8b74240489742404e977fdffff8d642404eb188d642404b8648e66b18b5d04ff238d642404eb048d642404b801000000c204008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc0100000089385b8b74240489742404e9e5fcffff8d642404eb048d642404b801000000c20400f40000|@11151,1,@454|43,0,1 50,0,0 81,0,0 116,0,1 123,0,0 177,0,0 233,0,1 240,0,0 247,0,0 254,0,0 261,0,0 339,0,1 346,0,0 400,0,1 407,0,0 458,0,1 465,0,0 529,0,1 536,0,0 660,0,@11149 680,0,0 716,0,0 806,0,0 5265:D3,932|3b650c7305ff552ccd0989c75389fabefffffffff6c201751d8b1a8b4a043bde7e02eb0289f389de89ca3b650c7305ff552ccdc4ebde83c60256710e8d642408b8f80466b18b5d04ff238b342483fe017d068d642408eb688b342481feffffff017f598b042483c03ebe41000000d1e8d1ee33d2f7f68d34450100000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff41528d34b5fdffffff83fe017502eb1989f283ea08eb0e8d642408b8d48e66b18b5d04ff233bd675148b74240483c60ec1ee0383ce01ba01000000eb1e89d3d1eb8b0c24c604190089d183c10289ca3b650c7305ff552ccdc4ebca3bd67202eb1e89d3d1eb8b0c24c604190089d183c10289ca3b650c7305ff552ccdc4ebdcf7c70100000075788b0fff770483f9017d068d642410eb5e3b4c24087d5489cac1ea0383ca0189d3d1eb8b7424040fb6341e8d34750100000083e10f83f93f7207b901000000eb0e33db83c302d1e9d3e389d983c9010bced1e9d1ea8b742404880c165e89f73b650c7305ff552ccd80eb8e8d642410b8008f66b18b5d04ff238b7c240483ff010f8c830000008b7c240483ff017d068d64240ceb6a8b7c240481ffffffff017f5a8b44240483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d64240cb8d48e66b18b5d04ff238d64240cb82c8f66b18b5d04ff233bf7750d6a016a036a01bf01000000eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd13b7c24140f8de800000089fac1ea0383ca01d1ea8b7424100fb634168d34750100000089f983e10f83f93f7207ba01000000eb0c33d283c202d1e9d3e283ca0123f283fe01740a8b5c24040b5c2408eb048b5c24088b74240481fe01010000755189d9d1e98b1424d1ea8b74240c880c1689f883c002710e8d64241cb8f80466b18b5d04ff238b0c2483c102bb01000000ba0300000089c7895c2408890c24895424043b650c7305ff552ccd80e94effffff89f883c002710e8d64241cb8f80466b18b5d04ff238b7424048b5424048d5416ff8b0c2489c7895c2408890c24895424043b650c7305ff552ccd80e90effffff8b7c240889f983ff0175068d64240ceb1189c9d1e95ed1ee8b7c2408880c3783c4088b3c248067ffbf8b74240c8b7c2408893e5f897e04b80100000083c40cc3f4|@11158,1,@455|16,0,-1 65,0,@9455 93,0,16777215 106,0,32 193,0,@11152 220,0,0 358,0,0 411,0,@11154 454,0,16777215 468,0,32 555,0,@11152 569,0,@11156 589,0,0 671,0,0 716,0,128 750,0,@9455 766,0,0 771,0,1 815,0,@9455 923,0,0 5266:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@456| 5267:D3,384|3b650c7305ff552ccd0989c7538b1789d683fa1575658b4704ff7708ff770c8b7c2410578b5c240ce8d3ffffff89c7578b7c2414578b44240c8b5c2410e8beffffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70015000000c2040089f283fe2175098d64240489f8c2040089d683fa1f7546ff77048b47088b7c240c578b5c2408e85affffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c7001f000000c2040083fe0b7568ff77048b4708ff770c8b7c2410578b5c240ce80cffffff89c7578b7c2414578b4424088b5c2410e8f7feffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424088b3c248978048d642408c7000b000000c204008b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642404897804c70023000000c20400f4000000|@11159,1,@457|116,0,10 209,0,15 318,0,5 373,0,17 5268:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@459| 5269:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e93d16fffff4|@11024,1,@461|33,1,@5270 80,0,6 93,0,0 160,0,0 183,1,@5137 5270:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@460|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5271:D3,188|3b650c7305ff552ccd0983f801754d8b3b83ff0d7541ff73048b43088b5c2408e8ab00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c20400bf01000000a80175348b088b70048b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04890a89d789f03b650c7305ff552ccd89ebc8578b7c240857b801000000e857ffffff89c3588b3c24897c240483c404e99d14fffff4|@11024,1,@463|33,1,@5272 80,0,6 93,0,0 160,0,0 183,1,@5137 5272:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@462|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5273:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@464| 5274:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@465| 5275:D3,400|3b650c7305ff552ccd0989c7533b3c24750c8d642404b801000000c220008b74242489fad1ea83ee010fafd683c2018b7424208d4c16ff8b74241c8b5424188b5d008d5bf03b5d087305ff5528cdc6895d00c743fc03000000894b0889530489338b74242489fad1ea83ee010fafd683c2018b7424148d4416ff8b7424108b4c240c8b55008d52f03b55087305ff5528cdcb895500c742fc03000000894208894a0489328b7424088b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895108897104c7011b0000008b7424088b55008d52ec3b55087305ff5528cdca895500c742fc04000000895a0c894a08897204c702250000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000005683c70257ff74242cff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff742404ff7424045756525153508b4424288b5c2430e8a2feffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c22000f40000|@11163,1,@466|23,0,0 202,0,13 247,0,18 282,0,2 5276:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@467| 5277:D3,284|3b650c7305ff552ccd0983f801752a83fb01751b8b742404bf943966b18b1789168b7f04897e04b801000000c20400b8609066b18b5d04ff23ff308b4004f6c3010f85c3000000ff338b5b046a016a0154e8aaffffff595f8b74240483fe01753c8b75008d76f43b75087305ff5528cd82897500c746fc02000000897e048b3c24893e8d64240489f78b742408890e897e04b80100000083c404c204008b34248b368d6424048b168b5e048b46088b75008d76ec3b75087305ff5528cd8f897500c746fc0400000089460c895e08895604c706030000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b7424088916897e04b80100000083c404c204008d642404b8609066b18b5d04ff23f4000000|@11168,1,@468|25,0,@10068 40,0,0 48,0,@11164 147,0,0 211,0,1 256,0,0 271,0,@11164 5278:D3,676|3b650c7305ff552ccd09538b38bee8272ab181c61e0000008d74befcffe6e9ab000000909090e9a9000000909090e9a7000000909090e9a5000000909090e9a3000000909090e9a1000000909090e9f7000000909090e9f5000000909090e9f3000000909090e9f1000000909090e9ef000000909090e935010000909090e933010000909090e931010000909090e92f010000909090e95c010000909090e993010000909090e991010000909090e9d7010000909090e9d5010000909090e9d3010000909090e9d10100009090908d642404eb048d642404eb048d642404eb048d642404eb048d642404eb62ff70048b7808ff700c89f88b5c2408e800ffffff89c7578b4424048b5c240ce8f0feffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424088b3c248978048d642408c7000b000000c38d642404eb048d642404eb048d642404eb048d642404eb52ff70048b7808ff700c89f88b5c2408e88afeffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b3c248978048d642408c70015000000c38d642404eb048d642404eb048d642404eb788b58048b0424e8eb00000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001d000000c3ff70048b40088b5c2404e8fafdffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c7001f000000c38d642404eb528b7804ff7008ff700c89f88b5c2408e8b0fdffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048b34248970088d642408897804c70023000000c38d642404eb048d642404eb048d642404eb048d642404c3f40000|@11169,1,@470|14,0,@5278 325,0,5 427,0,10 457,1,@5279 498,0,14 561,0,15 645,0,17 5279:D3,132|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b8609066b18b5d04ff23ff308b4004f6c3017546ff338b5b04e8c8ffffff89c78b74240483fe0375078d64240889f8c38b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c404c38d642404b8609066b18b5d04ff23f400|@11168,1,@469|21,0,0 27,0,@11164 121,0,@11164 5280:D3,80|3b650c7305ff552ccd0589d7ff770450ff77088b770c8b57108b4f148b5f188b471c50ff7424108b44240c8b7c240887df897c2408894c240c8b7c241087d7897c241089742414ff228d64240cf40000|@10995,1,@471| 5281:D3,492|3b650c7305ff552ccd0d89c752538b7704f7c6010000000f855c010000ff368b07ff77086a016a016a018b7c24188b57048b5c242c8b7c24248b7424206a0154830424045756ff12ff3424ff7424086a016a016a018b7c242c8b57048b5c24408b7c24388b7424346a01548304240457568b442434ff125e588d6424046a016a018b3e83ff0d75708b7e04f7c701000000743cf7c701000000742689fed1ee8b7c242483ef010faff783c6018b7c241c8d7c37ffc7042401000000897c2404eb358d64242cb8cc4466b18b5d04ff238b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937893c248b7c241c897c2404eb278b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937893c248b7c241c897c24045e5a8b7d008d7ff03b7d087305ff5528cd45897d00c747fc030000008957088977048b7424048937578b7c240489fb83ff01750489c7eb07e8a400000089c78b7424348b142489168d642404897e04b80100000083c424c210008d6424048b07ff77086a016a016a018b7c24108b57048b5c24248b7c241c8b7424186a0154830424045756ff125e5f8d6424048b55008d52f03b55087305ff5528cdc0895500c742fc030000008b0c24894a088d642408c742040100000089328b74240c8916897e04b801000000c21000f400|@11171,1,@474|183,0,0 198,0,@10214 344,1,@5282 367,0,0 467,0,0 483,0,0 5282:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@473| 5283:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@476|11,0,0 5284:D3,136|3b650c7305ff552ccd09508b3c2483ff0175518d6424048b3b83ff0d7541ff73048b43088b5c2408e86f00000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d000000c2040089d8c204008b7c240857b801000000e88dffffff89c3588b3c24897c240483c404e9f308fffff40000|@11024,1,@478|41,1,@5285 88,0,6 106,0,0 129,1,@5137 5285:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@477|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 5286:D3,24|3b650c7305ff552ccd09b8d89166b18b5d04ff23f4000000|@11078,1,@479|11,0,@11177 5287:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@11080,1,@480|11,0,0 5288:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@11078,1,@481|11,0,0 5289:D3,40|3b650c7305ff552ccd058b720489f78b0689fe8b3f83c702710ab8f80466b18b5d04ff23893ec3f4|@11185,1,@482|27,0,@9455 5290:D3,32|3b650c7305ff552ccd058b5a04ff3424c7442404c05366b1e917000000f40000|@11187,1,@602|20,0,@10422 25,1,@5291 5291:D3,2140|3b650c7305ff552ccd09538b38be80302ab181c61e0000008d74befcffe6e9ab000000909090e9a9000000909090e9a7000000909090e9a8000000909090e9a6000000909090e9a4000000909090e9a5000000909090e9a6000000909090e95e040000909090e95c040000909090e95a040000909090e95b040000909090e947050000909090e919060000909090e917060000909090e918060000909090e9a9060000909090e9a7060000909090e9a5060000909090e9a3060000909090e9a1060000909090e99f0600009090908d642404eb048d642404eb0d8b7c2408e9050700008d642404eb048d642404eb0d8b7c2408e97e0600008d642404e9c4030000ff7004ff7008ff700c8b7c24048b1789d683fa0b0f854301000089ff89feff770489f68b7e0889f6ff760c8b7424148b5608c702030000008b54241c8b5d008d5bf03b5d087305ff5528cdc4895d00c743fc0300000089530889f6897304c703f0382ab18b45008d40ec3b45087305ff5528cd88894500c740fc040000008b74240889700c8978088b7c2410897804c7000f000000e8e9e3feff89c7578b7c24208b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2418897b04c70328392ab18b45008d40ec3b45087305ff5528cd08894500c740fc040000008b7c240c89780c8b7c24048978088b7c2414897804c7000f000000e87ee3feff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424088b34248977048d642414c7070b0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c2040089ff83fe190f856901000089ffff77048b44240c8b5c2410e86506000089c7578b0424e85a07000089c28b74241c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707010000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b6a016a01ba209366b1ff74240c6a0154830424088b442428ff12585e8b7d008d7fec3b7d087305ff5528cd41897d00c747fc040000008b54240889570c8977088b34248977048d642418c7070f0000005783f80175065fe982000000e8b6a0000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e83fe0175035feb2d8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008b4424088b5c240ce895a0000089c7578b0424e88aa1000089c28b7c24188b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2410897b04c70354d62ab18b442408e818e1feff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c8977088b34248977048d642414c7070f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404eb048d642404eb048d642404e9d20100008b7804ff70088b700c83fe010f85d60000008b74240c8b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b3424897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf03b5d087305ff5528cdc0895d00c743fc030000008973088b742404897304c7038cd62ab189f8e81be0feff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b14248957088d642408897704c707170000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642408b801000000c204008b78046a016a01ba209366b18b5c2410576a0354830424088b442414ff128b0424ff74240483f80175095f83c40ce988000000e842a0000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e83fe0175065f83c40ceb308b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c7071f00000083c40c8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404eb048d642404e99d0000008b7804ff700889f88b5c2404e808a0000089c7578b7c24108b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2408897b04c70314dc2ab18b442404e886defeff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d64240cc7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404eb048d642404eb048d642404eb048d642404eb048d642404eb048d642404b801000000c20400f7c70100000075218b178b77048b1283fa05750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff0375338b7c2408578b5c2404e815a4000089c78d6424048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404b801000000c20400f7c70100000075218b178b77048b1283fa05750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff0375338b7c2408578b5c2404e8a3a3000089c78d6424048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404b801000000c20400f400|@11263,1,@601|14,0,@5291 309,0,1 353,0,@5292 402,0,7 407,1,@5117 456,0,@5293 509,0,7 514,1,@5117 571,0,5 631,1,@5294 642,1,@5296 686,0,0 719,0,0 730,0,@11188 801,0,7 818,1,@5384 855,0,3 888,0,0 943,0,15 987,1,@5385 998,1,@5387 1042,0,0 1075,0,0 1119,0,@5388 1128,1,@5117 1182,0,7 1297,0,2 1330,0,0 1374,0,@5389 1381,1,@5117 1416,0,0 1435,0,11 1475,0,0 1490,0,@11188 1534,1,@5390 1571,0,3 1604,0,0 1662,0,15 1728,1,@5391 1777,0,@5399 1786,1,@5117 1833,0,15 1903,0,0 1945,0,0 1952,0,1 1971,1,@5400 2017,0,0 2059,0,0 2066,0,1 2085,1,@5400 2131,0,0 5292:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@483|13,0,@11186 5293:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@484|13,0,@11186 5294:D3,180|3b650c7305ff552ccd0953a8010f85950000008b38ff70048b07ff77048b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2408897b04c703283a2ab1e85bdcfeff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e881ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@486|64,0,@5295 69,1,@5117 173,0,0 5295:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@485|13,0,@11186 27,0,@10090 5296:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@487|68,0,0 5297:D3,3620|8d7c24883b7d0c7305ff5530cd09ff30ff7004ff70088b7c2418ff378b7c241cff77048b7c2420ff77088b7c2424ff770c8b7c2428ff77108b7c242cff77148b7c2430ff77188b7c2434ff771c8b7c241483ff01750489dfeb0d89d88b5c2414e8d30d000089c7578b7c243883ff057507bf03000000eb05bf010000008b7424208b3683fe0f752883ff0175238b7c2420ff77048b7c2424ff77088b7c2428ff770c8b7c2408be01000000e95f0b0000bf0100000083ff0175138b7c240c83ff0175088b3c24e9ef090000eb1b8d6424308b3f8b742404c70601000000897e04b801000000c20c008b7424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c7065c492ab18b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424288957088b54242c89570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70398492ab18b442424e8c1d9feff89c7578b7c2430f7c701000000753b8b178b77048b0a81f9b401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e95c0800008b3f8b3781feb401c0b075058b7f08eb0e8d642438b8483366b18b5d04ff23bb010000008b742418f7c60100000075288b4e0489da83c202710e8d642438b8f80466b18b5d04ff2389ce89d33b650c7305ff552ccdc8ebd083ff0174108b74244083fe017507bfd1070000eb00578b442404e8b40c000089c76a016a016a018b3789f283fe07751b8b7c24108b3fc70424030000008b74240c89742404897c2408eb6c89d683fa0375198b7f048b77fcc1e608c1ee0783ce01ba01000000e9c406000083fe05752e8b7f0457ff7424148b4424148b5c242ce8e620000089c68b7c24108b3fc704240100000089742404897c2408eb198b7c24108b3fc70424010000008b74240c89742404897c24088b3424ff7424048b54240c8b7d008d7fdc3b7d087305ff5528cd44897d00c747fc080000008b4c241c894f1c8957188977148b7424288977108b74242c89770c8b7424308977088b7424348977048b34248937576a016a018b7c243083ff030f859a0100008b442424bb03000000e8812b000089c78b3783fe010f850e0100008b570489d6f6c20175198b5204f6c2017407ba03000000eb05ba0100000083f202eb05ba0100000083fa030f85dd0000008b57088b3e8b4e048b318b49048b5c240c8b1b83fb1975768b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c743040100000089338b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04893ef6c1017402eb05bacc5366b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70701000000eb4d8b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708cc5366b1897704c70701000000eb00578b442438e8f43a000089c7576a016a018b7c240c8b3f83ff01753f8b7c240c8b7f04f7c7010000007407bf03000000eb05bf0100000083f70283ff03751c8b7c240c8b7f048b74240cff7608ff7704ff74243c6a01e9e3020000bfd49666b18b378934248b7f04897c2404e9b70000008b7c2408893c24c7442404010000005e5a8b7e1483ff0175668d64241c8b7c240c83ff037553f6042401753d8b3c248b0f5f8b7f048b0983f90375178d64242083ff017507bf03000000eb05bf01000000eb098d642420bf0100000083ff037402eb0a8d64240ceb148d6424245fc7070300000083c408eb0a8d642430eb048d64244c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707190000008b7424048916897e04b801000000c20c005e5ff7c60100000075778d6424088b1e8b7604f7c601000000752a8b7c2448c707030000006a016a01548b4424148b5c245ce80f3a00005e5f893424897c2404e95f0100008b3783fe0575318b5f048b7c2448c707030000006a016a01ff74245854830424048b442418e85b4600005e5f893424897c2404e92701000089dfeb4d8d6424088b3783fe05752e8b5f048b7c2448c707030000006a016a01ff74245854830424048b442418e81b4600005e5f893424897c2404eb0f8b7c2408893c24c744240401000000e98afefffff7c7010000000f85860000008b37ff77048b0e89ca83f90175508b4e048b5608f6c101753b8b318b490483f901752c8b0a83f90575238b520883fa017507ba03000000eb05ba0100000083fa03750abe03000000e9ed000000eb00e99f000000be01000000e98a00000083fa0575218b760883fe017507be03000000eb05be0100000083fe037402eb068d642404eb5deb49bf0100000083ff03752b8b7c2448c707030000006a016a01ff74245854830424048b442418e8f85000005e5f893424897c2404eb0f8b7c2408893c24c744240401000000e920ffffff5e89f73b650c7305ff552ccd88e913ffffffbf03000000eba383fe0375e28d642404ebeef7c601000000753a8b0e8b56048b0183f80575208b490883f9017507b903000000eb05b90100000083f9037507be03000000eb1389d63b650c7305ff552ccdc8ebbebe01000000ebacf64424040175598b7c24048b3f8b742404ff76048b3783fe01752f8b4708e86584000089c78b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893aeb048b5424045e891424897424043b650c7303ff552ceba05f57f60424010f85a50000008b3c248b078b3c248b7f04f7c70100000075398b1fff7704e86f84000089c78b75008d76f43b75087305ff5528cd80897500c746fc020000005a895604893e8934243b650c7303ff552cebaa8d6424088b5c2410e8bf84000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8957048937578b442424e82b85000089c78b3783fe0575118b7424048b3683fe0375068b74243ceb258b7c2404eb0e8d642474b8909c66b18b5d04ff235e89742404897c240883c404e9bafcffff83fe017507be01000000eb548b0e8b56048b1983fb0175058b4904eb0e89d63b650c7305ff552ccdc0ebd5f6c10175218b018b59048b0083f8057507b903000000eb1389d93b650c7305ff552ccdc6ebdab90100000083f9037513be0300000083fe037502eb05bfcc5366b1eb8189d63b650c7305ff552ccdc0eb843bd67207be01000000eb258b4c57fe83f90375478b75008d76f83b75087305ff5528cd82897500c746fc01000000890e83fe01740bbe010000008b542428eb338b7c24108b3fc70424030000008b74240c89742404897c2408eb1389d183c10289ca3b650c7305ff552ccdc4eb92e915f9fffff6c20175288b5a0489f183c102710e8d642444b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd38b5424108b125756ff742438ff742424528b4424208b5c2438e84686000089c7c7042401000000897c2404c744240801000000eb99f7c701000000753b8b178b77048b0a81f9b401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642438b8489d66b18b5d04ff238b3f8b3781feb401c0b075088b7f08e954f7ffff8d642438b8483366b18b5d04ff23f7c70100000075218b178b77048b1283fa037507bf03000000eb1389f73b650c7305ff552ccd80ebd7bf0100000083ff030f85f7f5ffff8d6424048b7424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706fcd32ab18b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424248957088b54242889570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70338d42ab18b442420e8b4cffeff89c75e8b168b75008d76dc3b75087305ff5528cd84897500c746fc08000000598d642404894e1c8956185a8956145a8956105a89560c5a8956085a8d64240c895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b742408c70601000000897e04b80100000083c404c20c0083ff017507bf03000000eb778b17ff77048b1a89d98b0383f811755e8b5b048b1b83fb017507bb03000000eb05bb0100000083fb03753d89ca8b52048b52043bd6752689f183c102710e8d642440b8f80466b18b5d04ff235a89ce89d73b650c7305ff552ccdc0eb978d642404bf01000000eb0f8d642404eb048d642404bf0100000083ff03750d8b7c24088b74241ce9080100008d642404bf0100000083ff03740b8d642408bf01000000eb608b3c248b3f83ff1175235f8b7f048b3783fe03750d8d6424048b77048b7c2414eb458d642404bf01000000eb388b3c248b3f83ff0d75208b7d008d7ff83b7d087303ff5528897d00c747fc010000005e893783c404eb098d642408bf01000000e993f3ffffebf9f7c70100000075728b0f8b570483fe01754389cf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eba989f183e902710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0eb868d642430b8643c66b18b5d04ff2383ff01751383fe017507bf03000000eb05bf01000000eb378b1f8b5704f7c60100000075258b068b4e048b5b048b003bd8751089ce89d73b650c7305ff552ccdc0ebbdbf01000000eb05bf0100000083ff0375155f3b7c240c7507bf03000000eb05bf01000000eb098d642404bf01000000e98afefffff4|@11251,1,@574|97,1,@5298 114,0,1 121,0,0 167,0,0 177,0,0 217,0,0 225,0,0 297,0,@5299 374,0,@5300 383,1,@5117 411,0,@4649 462,0,0 472,0,@10769 487,0,@4649 503,0,@9999 513,0,0 544,0,@9455 584,0,1000 596,1,@5301 626,0,1 667,0,0 698,1,@5303 713,0,0 736,0,0 858,0,1 863,1,@5313 899,0,1 906,0,0 916,0,0 982,0,0 1027,0,@10423 1065,0,0 1100,0,0 1135,0,@10423 1144,0,0 1156,1,@5320 1194,0,1 1201,0,0 1242,0,@11210 1274,0,0 1333,0,1 1340,0,0 1351,0,0 1375,0,1 1425,0,12 1439,0,0 1479,0,1 1497,1,@5321 1531,0,1 1553,1,@5332 1595,0,1 1617,1,@5332 1643,0,0 1715,0,1 1722,0,0 1732,0,1 1749,0,0 1772,0,1 1779,0,0 1799,0,0 1814,0,1 1836,1,@5341 1862,0,0 1890,0,1 1936,0,1 1943,0,0 1953,0,1 1974,0,0 2011,1,@5371 2113,1,@5372 2173,1,@5373 2217,1,@5374 2258,0,@11241 2290,0,0 2345,0,1 2366,0,0 2376,0,1 2388,0,@10423 2413,0,0 2462,0,0 2481,0,1 2543,0,@9455 2594,1,@5375 2603,0,0 2615,0,0 2638,0,@4649 2689,0,0 2703,0,@11247 2718,0,@4649 2737,0,@9999 2767,0,1 2788,0,0 2870,0,@5382 2947,0,@5383 2956,1,@5117 3059,0,12 3069,0,0 3077,0,0 3093,0,1 3126,0,1 3133,0,0 3166,0,@9455 3197,0,0 3214,0,0 3241,0,0 3255,0,0 3300,0,0 3353,0,0 3415,0,8 3461,0,@9455 3491,0,@10105 3511,0,1 3518,0,0 3568,0,0 3575,0,0 3592,0,1 3599,0,0 3610,0,0 5298:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@488| 5299:D3,40|3b650c7305ff552ccd058b720489f78b0689fe8b3f83c702710ab8f80466b18b5d04ff23893ec3f4|@11189,1,@489|27,0,@9455 5300:D3,32|3b650c7305ff552ccd058b5a04ff3424c7442404bc3a66b1e9cbe6fffff40000|@11187,1,@490|20,0,@10090 25,1,@5291 5301:D3,552|3b650c7305ff552ccd0989c6ba010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc01000040891757ba030000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089175783fb017d098d642408e9bd01000081fbffffff010f8dad01000089d98d145d02000000f7da0355003b550872053b55007205ff5528cd42895500d1eb895afcc642ff4089d7d1e9b803000000f3ab528b5c24106a036a03ff742408ff742414ff74241489f0e88201000089c783ff01750c8d64240cb8b43a66b1c204008b7c24088b3f83ff03740c8d64240cb8902d66b1c204008b7c24048b3f83ff030f85920000008b34248b5efcc1e308c1eb0783cb0183fb01750b8d64240cbfe43c66b1eb4d89df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989f68d64240489d7d1e9f3a58062ffbf89d783c4088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c204008b34248b5efcc1e308c1eb0783cb0183fb01750b8d64240cbfe43c66b1eb4d89df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989f68d64240489d7d1e9f3a58062ffbf89d783c4088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c204008d642408b8383066b18b5d04ff23f40000|@11191,1,@492|13,0,0 47,0,1 96,0,16777215 152,0,1 182,1,@5302 198,0,@10089 221,0,@9922 268,0,@10109 322,0,0 382,0,2 414,0,@10109 468,0,0 528,0,1 540,0,@9964 5302:D3,4680|3b650c7305ff552ccd09538b3c2483ff01750c8d642404b801000000c214008b38be084c2ab181c6320000008d74befcffe6e9ab000000909090e937010000909090e9a3010000909090e9ab010000909090e915020000909090e9b9020000909090e96d030000909090e99b030000909090e90f040000909090e94d040000909090e96c040000909090e9d0040000909090e928050000909090e932050000909090e9e4050000909090e9e9050000909090e9f1050000909090e949060000909090e9e1060000909090e980070000909090e9d8070000909090e9da0700009090908b70048b50088b780c8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b3c2483ff037c125f83ef02710ab8f80466b18b5d04ff23eb098d642404bf010000005657e9821000008b70048b3e8b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b3c2483ff097c125f83ef08710ab8f80466b18b5d04ff23eb098d642404bf010000005657e9c00f0000ff70048b780857ff742408e9260f00008b78048b70088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b3c2483ff037c125f83ef02710ab8f80466b18b5d04ff23eb098d642404bf010000005657e9660e0000ff7008ff700c8b78108b74240883fe037c198b5c240883eb02710e8d64240cb8f80466b18b5d04ff23eb05bb010000008b7704f7c601000000754d8b0e8b378b55008d52f43b55087305ff5528cd4a895500c742fc02000000c7420401000000890a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc0200000089570489375753e98e0d00008b078b7c241c8b7424188b5424148b4c24106a0157565251e8effcffff89c3e9670c0000ff7004ff7008ff700c8b7c240c83ff057c198b44240c83e804710e8d642410b8f80466b18b5d04ff23eb05b8010000008b7c24248b7424208b54241c8b4c24188b5c2414575652515389c38b442414e894fcffff8d6424048b7c24208b74241c8b5424188b4c24148b5c2410575652515389c38b442414e86cfcffff8d642404ff34248b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241cc74424200100000083c40ce930fcffff8d6424088b7804f7c701000000740458c214008b3c2483ff037c135883e802710ab8f80466b18b5d04ff23c214008d642404b801000000c214008b7004ff70088b3c248b3f83ff11753e8b3c248b7f048b3f83ff0775178b7c241883ff037507bf03000000eb05bf01000000eb05bf0100000083ff0375108d64240489f7ba01000000e9ec0900008b7c240483ff057c198b7c240483ef04710e8d642408b8f80466b18b5d04ff23eb05bf010000005657e9370900008b78048b3f83ff0775158b7c241483ff03750c8d642404b801000000c214008b3c2483ff037c135883e802710ab8f80466b18b5d04ff23c214008d642404b801000000c214008b3c2483ff037c135883e802710ab8f80466b18b5d04ff23c214008d642404b801000000c21400ff7004ff70088b7c24208b74241c8b5424188b4c24148b5c241057565251538b4424148b5c241ce8e1faffff8d642404ff34248b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241cc74424200100000083c40ce9a5faffff8d64240c8b78048b342483fe037c125883e802710ab8f80466b18b5d04ff23eb098d642404b801000000578b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c8954241089742414c74424180100000083c404e945faffff8d6424048b78048b078b570c8b771089d7e9e00600008b78088b342483fe037c125883e802710ab8f80466b18b5d04ff23eb098d642404b8010000008b7704f7c601000000754d8b0e8b378b55008d52f43b55087305ff5528cd43895500c742fc02000000c7420401000000890a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489375750e9140600008b3f578b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c8954241089742414c74424180100000083c404e979f9ffff8d6424048b780457ff742404e97b0500008b7804ff700857ff742408e9d00300008b78048b342483fe037c125883e802710ab8f80466b18b5d04ff23eb098d642404b801000000578b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c8954241089742414c74424180100000083c404e9fcf8ffff8d6424048b58048b7808ff700c8b3383fe29750d8b7b0457ff742408e9ce0200008b3f8b7424043bf77c1b8b4424042bc7710e8d642408b8f80466b18b5d04ff2383c001eb05b8010000008b7c24188b7424148b5424108b4c240c6a015756525187c3e894f8ffffff34248b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241cc74424200100000083c40ce95cf8ffff8d642408ff70088b780c8b74240483fe037c198b5c240483eb02710e8d642408b8f80466b18b5d04ff23eb05bb010000008b7704f7c601000000754d8b0e8b378b55008d52f43b55087305ff5528cd4a895500c742fc02000000c7420401000000890a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc0200000089570489375753e9760100008b078b7c24188b7424148b5424108b4c240c6a0157565251e8b6f7ffffe9180100008b78088b342483fe037c125883e802710ab8f80466b18b5d04ff23eb098d642404b801000000578b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c8954241089742414c74424180100000083c404e955f7ffff8d6424048b780457ff742404eb608b78048b342483fe037c125883e802710ab8f80466b18b5d04ff23eb098d642404b801000000578b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c8954241089742414c74424180100000083c404e9ebf6ffff8d642404f64424040175408b7c24048b078b7c2404ff77048b7c24208b74241c8b5424188b4c24146a01575652518b5c2418e8b4f6ffff89c25e891424897424043b650c7303ff552cebb95883c408c21400ff34248b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241cc74424200100000083c40ce961f6ffff8d642408f64424040175408b7c24048b078b7c2404ff77048b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e82af6ffff89c25e891424897424043b650c7303ff552cebb95883c404e974fffffff64424040175408b7c24048b078b7c2404ff77048b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e8daf5ffff89c25e891424897424043b650c7303ff552cebb958ff7424048b7424208b54241c8b4c24188b5c2414895c241489c38b0424894c24188954241c89742420c74424240100000083c410e98cf5ffff8d642404f6442404010f85c40000008b7c24048b3f8b742404ff76048b3789f283fe01754c8b47108b7c240483ff037c198b5c240483eb02710e8d642414b8f80466b18b5d04ff23eb05bb010000008b7c24248b7424208b54241c8b4c24186a0157565251e822f5ffff89c2e9a300000089d683fa0575268b47048b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e8f2f4ffff89c2eb7683fe07750a8b7f0457ff742408eb7c8b470c8b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e8bdf4ffff89c2eb415fff742404578b7424288b5424248b4c24208b5c241c8b442418894424188b442404895c241c8b1c24894c2420895424248974242883c414e97cf4ffff8d6424085e891424897424043b650c7303ff552ce9dbfefffff64424040175668b7c24048b3f8b742404ff76048b7f088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700190000008b7c24308b74242c8b5424288b4c24246a01575652518b5c2418e80af4ffff89c25e891424897424043b650c7303ff552ceb935a83c404e975fffffff64424040175428b7c24048b3f8b742404ff76048b078b7c24208b74241c8b5424188b4c24146a01575652518b5c2418e8b8f3ffff89c25e891424897424043b650c7303ff552cebb75883c408c21400f64424040175408b7c24048b078b7c2404ff77048b7c241c8b7424188b5424148b4c24106a01575652518b5c2418e86af3ffff89c25e891424897424043b650c7303ff552cebb95883c404c21400f7c70100000075218b1f8b4f048b1b83fb077507bf03000000eb1389cf3b650c7305ff552ccdc5ebd7bf0100000083ff03750c8d642404b801000000c21400bf01000000f7c60100000075288b5e0489f983c102710e8d642404b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc5ebd0be01000000f6c20175288b5a0489f183c102710e8d642404b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc5ebd383ee0103fe710e8d642404b8f80466b18b5d04ff238b34243bf77c145b2bdf710ab8f80466b18b5d04ff2383c301eb098d642404bb010000008b74240c8b5424088b4c2404894c2404895424088974240cc744241001000000c744241401000000e943f2fffff64424040175428b7c24048b3f8b742404ff76048b078b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e80ef2ffff89c25e891424897424043b650c7303ff552cebb758ff7424048b7424208b54241c8b4c24188b5c2414895c241489c38b0424894c24188954241c89742420c74424240100000083c410e9c0f1ffff8d642404f7c7010000000f859e0000008b0fff77048b098b1983fb1175398b410489c38b0083f8017507b803000000eb05b80100000083f803751c89d98b49043bd17507b903000000eb05b90100000083f9037502eb2e8b4c24148b49fcc1e108c1e90783c9013bd1720e8d642408b8003566b18b5d04ff238b4c2414c74451fe0100000089d383c302710e8d642408b8f80466b18b5d04ff235989da89cf3b650c7305ff552ccdc4e956ffffff8b7c240cc707030000008b7c241883ff037502eb0a8b7c2408c707010000008b3c2483ff077c125f83ef06710ab8f80466b18b5d04ff23eb098d642404bf010000005657f644240401753f8b7c24048b3f8b742404ff76048b078b7c24188b7424148b5424106a016a035756528b5c2418e89cf0ffff89c25e891424897424043b650c7303ff552cebba5883c404c214008b3c248b7f04f7c701000000754b8b3f5e8b368b55008d52f43b55087305ff5528cdc8895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc0200000089570489375753eb5a5f8b078b7c24188b7424148b5424108b4c240c6a0157565251e80af0ffffff34248b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241cc74424200100000083c40ce9d2efffff8d642408f64424040175408b7c24048b078b7c2404ff77048b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e89befffff89c25e891424897424043b650c7303ff552cebb95883c404e974fffffff64424040175408b7c24048b078b7c2404ff77048b7c24288b7424248b5424208b4c241c6a01575652518b5c2418e84befffff89c25e891424897424043b650c7303ff552cebb95b83c404e9adfefffff64424040175408b7c24048b078b7c2404ff77048b7c241c8b7424188b5424148b4c24106a01575652518b5c2418e8fbeeffff89c25e891424897424043b650c7303ff552cebb95883c404c21400f64424040175458b7c24048b3f8b742404ff76048b3f8b47088b7c24248b7424208b54241c8b4c24186a01575652518b5c2418e8a8eeffff89c25e891424897424043b650c7303ff552cebb458ff7424048b7424208b54241c8b4c24188b5c2414895c241489c38b0424894c24188954241c89742420c74424240100000083c410e95aeeffff8d642404f64424040175408b7c24048b078b7c2404ff77048b7c241c8b7424188b5424148b4c24106a01575652518b5c2418e823eeffff89c25e891424897424043b650c7303ff552cebb95883c404c21400f64424040175408b7c24048b078b7c2404ff77048b7c241c8b7424188b5424148b4c24106a01575652518b5c2418e8d5edffff89c25e891424897424043b650c7303ff552cebb95883c404c21400f400|@11190,1,@491|24,0,0 34,0,@5302 264,0,0 347,0,@9455 363,0,0 411,0,0 463,0,@9455 479,0,0 541,0,0 593,0,@9455 609,0,0 652,0,@9455 664,0,0 712,0,0 824,0,@9455 836,0,0 964,0,0 1010,0,@9455 1027,0,0 1073,0,1 1080,0,0 1087,0,0 1103,0,0 1135,0,@9455 1147,0,0 1182,0,0 1204,0,@9455 1221,0,0 1243,0,@9455 1260,0,0 1359,0,0 1393,0,@9455 1409,0,0 1455,0,0 1507,0,@9455 1523,0,0 1571,0,0 1659,0,0 1722,0,@9455 1738,0,0 1784,0,0 1852,0,@9455 1867,0,0 1944,0,0 1989,0,@9455 2001,0,0 2049,0,0 2145,0,@9455 2161,0,0 2207,0,0 2251,0,@9455 2267,0,0 2313,0,0 2451,0,0 2664,0,0 2739,0,@9455 2751,0,0 3027,0,12 3270,0,1 3291,0,0 3305,0,0 3313,0,0 3340,0,@9455 3366,0,0 3390,0,@9455 3427,0,@9455 3449,0,@9455 3468,0,0 3500,0,0 3508,0,0 3636,0,0 3691,0,1 3698,0,0 3717,0,1 3724,0,0 3760,0,@10015 3777,0,0 3793,0,@9455 3828,0,1 3849,0,0 3868,0,@9455 3884,0,0 4015,0,0 4130,0,0 4506,0,0 5303:D3,340|3b650c7305ff552ccd09506a016a018b7c24148b7424106a016a015483042408575689d8bb01000000e83a010000ff34248b54240883fa01750abbe43c66b1e993000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642410b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642410b8b48066b18b5d04ff2389f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd06895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab89dfbe0100000083fa01754e8067ffbf89fb8b7c24185768149466b18b442414e8da03000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642404897804c7000500000083c40cc208008b0a8b5a04894c77fe89f183c102710e8d642410b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e97cfffffff4000000|@11201,1,@502|37,0,0 42,1,@5304 59,0,@10109 69,0,0 98,0,@9455 125,0,16777215 136,0,@11058 191,0,0 200,0,0 221,0,@11193 230,1,@5306 277,0,2 308,0,@9455 5304:D3,768|3b650c7305ff552ccd0989c689d883fe01750e8b7c2414ba01000000e94a0200008b3e8b4e04ff378b5f048b7c240c8b7ffcc1e708c1ef0783cf013bc7720e8d642404b8a43266b18b5d04ff238b7c240c8b7c47fe83ff030f85940000008d64240489c783c702710ab8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd83897500c746fc02000000894604c706010000008b5c24108b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04893251578b74241c8b4c24148b5c24108b44240c8944240c8b442404895c24108b1c24894c2414895424188974241c83c408e912ffffff8d6424088b7c24088b178b7c24088b3f83c702710e8d642404b8f80466b18b5d04ff238b742408893e89c783c702710e8d642404b8f80466b18b5d04ff2383f8017d0e8d642404b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c706010000008b45008d40f43b45087305ff5528cdce894500c740fc02000000897004c700110000008b75008d76f03b75087305ff5528cd8f897500c746fc03000000894608895604891e8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b04248943048d64240489338b4424148b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604891e8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000895304c703050000008b4424108b55008d52f43b55087305ff5528cdcb895500c742fc02000000894204891a51578b4c24148b5c24108b44240c8944240c8b442404895c24108b1c24894c2414895424188974241c83c408e999fdffff8d642408f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc48b742410bf01000000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ce3b650c7305ff552ccdc4ebc48b74240c8916897e04b801000000c21400f40000|@11192,1,@493|24,0,0 68,0,@9990 106,0,@9455 146,0,0 264,0,@9455 291,0,@9455 310,0,@11112 350,0,0 385,0,8 527,0,2 684,0,0 758,0,0 5305:D3,52|3b650c7305ff552ccd0989c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001d000000c3f4000000|@11194,1,@494|43,0,14 5306:D3,112|3b650c7305ff552ccd098b7424048b5424088b7d008d7fec3b7d087305ff5528cd4d897d00c747fc0400000089570c897708895f04c707ac632ab18b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703f8672ab18b3c24897c240883c408e96fb2fefff40000|@11200,1,@501|55,0,@5307 90,0,@5311 105,1,@5117 5307:D3,312|3b650c7305ff552ccd0589c7528b1789d683fa110f85920000008b4f0489ca8b0983f9017507b903000000eb05b90100000083f903757589d78b77048b3c248b4f0489ca8b49fcc1e108c1e90783c9013bf1720e8d642404b8a43266b18b5d04ff2389d78d6424048b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383fe0f757a8b77088b1683fa1175188b76048b3683fe077507be03000000eb05be01000000eb05be0100000083fe0375488b4704ff770c8b7424048b7e0c5756bb01000000e8560000008b7c24048b57088b1c24ff1289c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404eb048d642404b801000000c3f40000|@11199,1,@498|39,0,1 46,0,0 89,0,@9990 139,0,8 198,0,1 205,0,0 212,0,0 237,0,0 242,1,@5308 304,0,0 5308:D3,320|3b650c7305ff552ccd095383f801750c8d642404b801000000c208008b38ff70048b07ff77048b7c24148b77fcc1e608c1ee0783ce018b7c240889fb3bfe720e8d64240cb8a43266b18b5d04ff238b7c241489db8b7c5ffe83ff0375328d64240489db83c302710e8d642408b8f80466b18b5d04ff23588b74240c8b542408895424088974240c83c404e971ffffff8b7c24108b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c7034c662ab1e851b0feff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b5c240883c302710e8d64240cb8f80466b18b5d04ff238b7c24148b74241057568b44240ce8f2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20800f4000000|@11198,1,@497|21,0,0 69,0,@9990 109,0,@9455 178,0,@5309 183,1,@5117 242,0,@9455 5309:D3,228|3b650c7305ff552ccd058b3883ff190f85c60000008b7804ff37ff7704ff77088b470cff7710ff7714ff7718ff771c8b5a04e8c100000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d642404897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b5204ff22f4000000|@11197,1,@496|51,1,@5310 186,0,12 5310:D3,160|3b650c7305ff552ccd0953a8010f85810000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b5c2404e87caefeff89c78b3783fe117539ff77048b4424048b5c2408e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b85c9466b18b5d04ff238d642404b801000000c3f400|@10030,1,@495|55,0,8 64,1,@5117 139,0,@11195 153,0,0 5311:D3,228|3b650c7305ff552ccd058b3883ff190f85c60000008b7804ff37ff7704ff77088b470cff7710ff7714ff7718ff771c8b5a04e8c100000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d642404897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b5204ff22f4000000|@11197,1,@500|51,1,@5312 186,0,12 5312:D3,160|3b650c7305ff552ccd0953a8010f85810000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b5c2404e8d0acfeff89c78b3783fe117539ff77048b4424048b5c2408e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b85c9466b18b5d04ff238d642404b801000000c3f400|@10030,1,@499|55,0,8 64,1,@5117 139,0,@11195 153,0,0 5313:D3,940|3b650c7305ff552ccd0953a8010f85450100008b38ff70048b1789d683fa050f85ba000000ff77048b3c2483c70257710e8d642410b8f80466b18b5d04ff238b3c2483ff010f8c860000008b3c2483ff017d068d642410eb6e8b3c2481ffffffff017f5f8b042483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017505e98e01000089fe83ee08e9800100008d642410b8d48e66b18b5d04ff238d642410b82c8f66b18b5d04ff2383fe01756d8b4704ff77088b7c240883ff017507bb05000000eb048b5c2408e8fdfeffff89c76a016a018b3783fe01750f8b77048b7f08893424897c2404eb0bc7042401000000897c2404ff3424ff7424088b442410e88602000089c7578b7c241c83ff057509ff742414e98d000000eb39bfcc5366b1eb0a8d642404b8cc5366b1c3578b7c240483ff0175055883c408c38b4424048b5c2408e882feffff89c3588d642408e9ba0700008b75008d76f43b75087303ff5528897500c746fc020000008b7c2408897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a8d642404895708897704c7070100000083c40ceb86f604240175448b3c248b078b3c24ff7704e856cefeff89c781ff010000e07507bf03000000eb05bf0100000083ff03740b8d642408bf03000000eb175e8934243b650c7303ff552cebb68d642404bf0100000083ff030f8552ffffff8d642418bfcc5366b1eb973bf7750d6a016a03be010000006a01eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd18b3c243b7c24100f8db00000008b3c243b7c2414750a8b5424040b542408eb048b5424088b4c240489cf81f901010000754d89d1d1e989f2d1ea8b7c240c880c178b0c2483c102710e8d642420b8f80466b18b5d04ff2389f083c002ba01000000bb0300000089c6895c2404890c24895424083b650c7305ff552ccd40eb818b0c2483c102710e8d642420b8f80466b18b5d04ff2389ff89fb89db8d5c1fff89f089c6895c2404890c24895424083b650c7305ff552ccd40e943ffffff8d6424088b3c2483ff0175068d642404eb0b59d1e9d1ee8b3c24880c378b3c248067ffbf8b75008d76f43b75087303ff5528897500c746fc020000005f897e045f893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c7470801000000897704c7070500000083c404e9b7fdfffff4|@11209,1,@509|54,0,@9455 94,0,16777215 107,0,32 200,0,@11152 214,0,@11156 244,0,2 290,0,0 310,1,@5314 338,0,@10423 349,0,@10423 390,1,@5317 467,0,0 494,1,@5140 502,0,-268435456 509,0,1 516,0,0 530,0,1 555,0,0 573,0,@10423 588,0,0 670,0,128 704,0,@9455 719,0,0 724,0,1 766,0,@9455 911,0,1 918,0,0 927,0,2 5314:D3,92|3b650c7305ff552ccd0189c7f7c701000000753f8b07ff7704e85200000089c7578b442404e8d6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f40000|@10030,1,@505|26,1,@5315 84,0,0 5315:D3,552|3b650c7305ff552ccd016a016a0189e3e827020000ff3424ff7424088b7c240483ff037f0a8d642410b8cc5366b1c38b7c240483ff010f8c830000008b7c240483ff017d068d642410eb6a8b7c240481ffffffff017f5a8b44240483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d642410b8d48e66b18b5d04ff238d642410b82c8f66b18b5d04ff233bf7750d6a016a03be010000006a01eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd18b3c243b7c24140f8da10000008b54240489d10b54240889c989cf81f901010000754d89d1d1e989f2d1ea8b7c240c880c178b0c2483c102710e8d642420b8f80466b18b5d04ff2389f083c002ba01000000bb0300000089c6895c2404890c24895424083b650c7305ff552ccd40eb908b0c2483c102710e8d642420b8f80466b18b5d04ff2389ff89fb89db8d5c1fff89f089c6895c2404890c24895424083b650c7305ff552ccd40e952ffffff8d6424088b3c2483ff0175068d642404eb0b59d1e9d1ee8b3c24880c378b3c248067ffbf8b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977048b74240489378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000005e8d642404897008897804c7000500000083c408c3f400|@11203,1,@504|17,1,@5316 42,0,@10423 81,0,16777215 95,0,32 182,0,@11152 196,0,@11156 214,0,0 281,0,128 315,0,@9455 330,0,0 335,0,1 377,0,@9455 525,0,0 542,0,2 5316:D3,708|3b650c7305ff552ccd0989c7538b37ba10702ab181c2200000008d54b2fcffe2e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e999000000909090e909010000909090e973000000909090e9d3010000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e9b1010000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e992010000909090e9030000009090905ebfb83966b18b1789168b7f04897e04b801000000c38b4708ff770c6a016a0189e3e809ffffffff3424ff7424086a016a018b44241889e3e8f3feffff595f8b74240489f23bf1752b8b342483fe038d6424047502eb05bf010000008b74241089d289168d642404897e04b80100000083c410c38d6424145ebfb83966b18b1789168b7f04897e04b801000000c38b7f04f7c7010000007405e9b4000000f7c701000000740e8d642404b81c4266b18b5d04ff230fb677ff8d34750100000081e6ff01000083fe017507be03000000eb05be0100000083f60283fe037474f7c701000000740e8d642404b81c4266b18b5d04ff238b5ffcc1e308c1eb0783cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e8feedfbff89c6f7c60100000074105f8937c7470403000000b801000000c38d642404b8d02f66b18b5d04ff235ebfb83966b18b1789168b7f04897e04b801000000c35ebfb83966b18b1789168b7f04897e04b801000000c38b47085be9a9fdffff8b57048b7f0883ff017509be0100000089d7eb165ebfb83966b18b1789168b7f04897e04b801000000c3f7c70100000075288b4f0489f283c202710e8d642404b8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc0ebd05f8937c7470401000000b801000000c3f40000|@11202,1,@503|16,0,@5316 210,0,@10071 225,0,0 296,0,0 316,0,0 330,0,@10071 345,0,0 379,0,@10189 411,0,1 418,0,0 443,0,@10189 497,0,@9958 502,1,@4895 522,0,1 527,0,0 537,0,@9960 548,0,@10071 563,0,0 570,0,@10071 585,0,0 611,0,0 621,0,@10071 636,0,0 664,0,@9455 695,0,0 700,0,0 5317:D3,1564|3b650c7305ff552ccd098b3089f783fe01756a8b3383fe0175638b7804ff70088b7304ff730889f389f8e80106000089c757f6042401740a8d64240cb8cc5366b1c38b4424088b5c2404e8b1ffffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f8d642408897804c70001000000c383ff0575238b3b83ff05751cff7004ff7008ff700cff7304ff7308ff730c8b7c24148b3f6a01eb06b8cc5366b1c383ff01750f5f578b7c240c8b3f6a01e9a000000089fe83ee0289fb83eb0289f983e9028b5424188b520489c8c1e80383c801d1e80fb614028d14550100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa0375248b55008d52f43b55087305ff5528cdc8895500c742fc020000008b0c24894a04891aeb038b142489f189cf8914243b650c7305ff552ccd80e94cffffff83ff0175075e5fe9a000000089fe83ee0289fb83eb0289f983e9028b5424108b520489c8c1e80383c801d1e80fb614028d14550100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa0375248b55008d52f43b55087305ff5528cdc8895500c742fc020000008b0c24894a04891aeb038b142489f189cf8914243b650c7305ff552ccd80e954ffffff3bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff0375578b7c241083ff0375068b7c2404eb05bf010000008b74240c83fe0375065e83c410eb098d642414be010000008b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8978085f897804c70005000000c38b7c240c83ff030f85c10000008b3c2483ff030f85af0000008b7c24148b378b7c24088b3f3bf77e0489f7eb00578b3c2483ff010f8c800000008b3c2483ff017d068d64241ceb688b3c2481ffffffff017f598b042483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb3789fe83ee08eb2c8d64241cb8d48e66b18b5d04ff238d64241cb82c8f66b18b5d04ff238d642418eb048d642418b8cc5366b1c33bf7750d6a016a036a01bf01000000eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd13b7c24100f8db90100008b7424288b363bfe7d7c8b7424288b168b7424288b760483ff017d068d64242ceb5a3bfa7d5289fac1ea0383ca01d1ea0fb634168d34750100000089f983e10f83f93f7207ba01000000eb0c33d283c202d1e9d3e283ca0123f283fe017507be03000000eb05be0100000083f60283fe037513e99c0000008d64242cb8d88d66b18b5d04ff238b74241c8b363bfe7d748b74241c8b168b74241c8b760483ff017d068d64242ceb523bfa7d4a89fac1ea0383ca01d1ea0fb634168d34750100000089f983e10f83f93f7207ba01000000eb0c33d283c202d1e9d3e283ca0123f283fe017507be03000000eb05be0100000083f602eb138d64242cb8d88d66b18b5d04ff23be0100000083fe0374068b542408eb088b5424040b5424088b4c240489ce81f901010000755189d1d1e98b1424d1ea8b74240c880c1689f883c002710e8d64242cb8f80466b18b5d04ff238b0c2483c102ba01000000bb0300000089c7895c2404890c24895424083b650c7305ff552ccd80e97bfeffff89f883c002710e8d64242cb8f80466b18b5d04ff2389f689f189c98d5c0eff8b0c2489c7895c2404890c24895424083b650c7305ff552ccd80e93dfeffff8b7c240883ff0175068d64240ceb138b4c2408d1e95ed1ee8b7c2408880c3783c4088b3c248067ffbf8b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977045e89378b74241083fe0375068b742404eb05be010000008b54240c83fa0375065a83c414eb098d642418ba010000008b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c70005000000c3f4|@11208,1,@508|43,1,@5318 61,0,@10423 120,0,0 166,0,@10423 243,0,0 271,0,1 278,0,0 415,0,0 443,0,1 450,0,0 528,0,1 581,0,0 588,0,0 595,0,0 620,0,0 644,0,0 686,0,2 768,0,16777215 781,0,32 868,0,@11152 882,0,@11156 902,0,@10423 918,0,0 1034,0,0 1060,0,1 1067,0,0 1089,0,@11145 1168,0,0 1194,0,1 1201,0,0 1215,0,@11145 1225,0,0 1256,0,128 1290,0,@9455 1306,0,0 1311,0,1 1355,0,@9455 1493,0,0 1517,0,0 1558,0,2 5318:D3,112|3b650c7305ff552ccd0989c689dff7c6010000007550f7c70100000075488b06ff76048b1fff7704e85700000089c7578b4424088b5c2404e8c3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc3b801000000c3f4000000|@11120,1,@507|41,1,@5319 103,0,0 5319:D3,140|3b650c7305ff552ccd0989c689df83fe01751583ff017506b801000000c3b81c9666b18b5d04ff238b06ff7604f7c70100000075458b1fff7704ba489666b1ff1289c7578b4424088b5c2404e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b81c9666b18b5d04ff23f4000000|@11207,1,@506|25,0,0 31,0,@11204 59,0,@11206 127,0,@11204 5320:D3,92|3b650c7305ff552ccd01a80175478b38ff70048b4704bb01000000e848efffff89c7578b442404e8d4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@510|23,0,0 28,1,@5313 86,0,0 5321:D3,1372|3b650c7305ff552ccd0953ff308b3c248b3f83ff1975458b3c248b7f04ff7710ff771cff7004ff700cff7010ff7014ff7018ff701c8b542424b801000000ff1289c7578b542428b801000000ff1289c757bf010000008b742418eb0e8d642408b8e09666b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd08b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071c802ab18b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c703a8802ab18b442428e8499afeff89c757bf010000008b742418f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057ff34248b442430bb01000000e8af06000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54242889570c8b542404895708897704c7070f000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b7c2424eb0b8b442424e81707000089c7578b7c243483ff0175068b7c2424eb0f8b4424248b5c2434e85c07000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b54243089561c8b54241c8956188b542420895614897e105f897e0cc74608bc3a66b18b7c2428897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c8937578b7c240483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2404e82e07000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b83966b1578b442424bb01000000e88a07000089c7578b442438bb01000000e86508000089c383fb0175035eeb0e8b0424e82b09000089c68d6424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54241889570cc747089c5a66b1897704c7070f000000578b7c24308b3f8d1c7d0100000083fb01750abf440e66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24308d77048d7a04d1e9f3a489df83c708d1efc6043a2d8062ffbf89d78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b54243489561cc7461801000000c74614010000008b5424388956108b54240489560cc74608bc3a66b1897e048b3c24893e8d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b55008d52f43b55087305ff5528cd80895500c742fc020000008b742410897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52dc3b55087305ff5528cdc0895500c742fc080000008b4c2414894a1cc7421801000000c74214010000008b4c2420894a1089720cc74208bc3a66b18b742428897204893a8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008957048b74240c89378b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89378b74243c8916897e04b80100000083c438c204008d642444b8780566b18b5d04ff23f400|@11216,1,@521|58,0,0 72,0,0 82,0,0 97,0,@11211 129,0,@9455 185,0,1 220,0,@5322 258,0,@5323 267,1,@5117 275,0,0 306,0,@9455 340,0,0 345,1,@5325 396,0,7 434,0,2 467,0,0 489,1,@5326 520,1,@5327 583,0,@10090 647,0,@10224 657,0,0 666,1,@5328 703,0,@10071 713,0,0 718,1,@5329 730,0,0 735,1,@5330 753,1,@5331 799,0,@10535 808,0,7 832,0,@9550 852,0,4 873,0,16777215 931,0,0 1008,0,0 1015,0,0 1036,0,@10090 1083,0,12 1122,0,2 1155,0,0 1197,0,0 1204,0,0 1221,0,@10090 1298,0,0 1346,0,0 1361,0,@9465 5322:D3,120|3b650c7305ff552ccd058b3883ff11755e8b78048b3f83ff077507bf03000000eb05bf0100000083ff0375438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7204897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@11214,1,@511|28,0,1 35,0,0 78,0,8 112,0,0 5323:D3,328|3b650c7305ff552ccd058b3089f783fe190f85c60000008b7804ff37ff7704ff77088b470cff7710ff7714ff7718ff771c8b5a04e82301000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d642404897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383ff11755e8b78048b3f83ff077507bf03000000eb05bf0100000083ff0375438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7208897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f400|@11197,1,@513|53,1,@5324 188,0,12 237,0,1 244,0,0 287,0,8 321,0,0 5324:D3,160|3b650c7305ff552ccd0953a8010f85810000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b5c2404e8bc93feff89c78b3783fe117539ff77048b4424048b5c2408e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b85c9466b18b5d04ff238d642404b801000000c3f400|@10030,1,@512|55,0,8 64,1,@5117 139,0,@11195 153,0,0 5325:D3,228|3b650c7305ff552ccd0983f8017508b801000000c204008b388b40048b178b74240483ee0103f3710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c302710e8d642404b8f80466b18b5d04ff238b7c240857e84affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@11215,1,@514|16,0,0 42,0,@9455 82,0,0 117,0,8 163,0,@9455 5326:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@515| 5327:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@516| 5328:D3,124|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704c707010000005783c002710e8d642404b8f80466b18b5d04ff23e8b0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@517|15,0,0 51,0,0 66,0,@9455 5329:D3,216|3b650c7305ff552ccd0983f8017506b801000000c38b388b40048b1789de83c602710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000897704c707030000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c302710e8d642404b8f80466b18b5d04ff23e855ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4000000|@11215,1,@518|16,0,0 36,0,@9455 76,0,1 111,0,8 157,0,@9455 5330:D3,196|3b650c7305ff552ccd0983f8017506b801000000c38b388b40048b178b7d008d7ff43b7d087305ff5528cd0d897d00c747fc02000000895f04c707010000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c302710e8d642404b8f80466b18b5d04ff23e866ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@11215,1,@519|16,0,0 59,0,0 94,0,8 140,0,@9455 5331:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@520| 5332:D3,1452|3b650c7305ff552ccd0953ff30ff7004ff700cff7010ff7014ff7018ff701c8b542428b801000000ff1289c7578b54242cb801000000ff1289c757bf010000008b742418f7c60100000075288b4e0489fa83c202710e8d642428b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd08b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f08c2ab18b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c7037c8d2ab18b442420e8eb8dfeff89c6ba010000008b7c2414f7c70100000075288b5f0489d183c102710e8d642428b8f80466b18b5d04ff2389df89ca3b650c7305ff552ccdc4ebd08b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702110000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8b542424895708897704c70723000000578b442418e8bb06000089c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b7c2420eb0b8b442420e8b806000089c78b54241483c202710e8d642430b8f80466b18b5d04ff238b75008d76dc3b75087305ff5528cd84897500c746fc08000000c7461c030000008956188b5424188956148b14248956108d642404897e0cc74608bc3a66b18b7c2420897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424048937578b7c2428ff37bf01000000be010000003b34240f82ee0000008d642404578b44241cbb01000000e864060000e83707000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c747089c5a66b1897704c7070f0000008b75008d76e83b75087305ff5528cd80897500c746fc05000000897e108b3c24897e0c8d642404c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff74242cb801000000bb01000000e8ee06000089c78b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420801000000897a04c70229000000e98900000089f383c3028b54242c8b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642430b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e980fefffff7c70100000075218b0f8b77048b0983f90d750e89f73b650c7305ff552ccd84ebdebf01000000eb05bf0300000083ff03750b89d0e8f2bafdff89c2eb008b3c2489fe83ff0175088d64240489d7eb2c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c7071f0000008b55008d52f43b55087305ff5528cd80895500c742fc020000008b742408897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52dc3b55087305ff5528cdc0895500c742fc080000008b4c240c894a1cc7421803000000c74214010000008b4c2418894a1089720cc74208bc3a66b18b742420897204893a8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008957048b74240489378b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424108b7424208916897e04b80100000083c41cc20800f4|@11222,1,@530|36,0,0 50,0,0 60,0,0 91,0,@9455 147,0,1 182,0,@5333 220,0,@5334 229,1,@5117 236,0,0 267,0,@9455 323,0,0 358,0,8 403,0,17 413,1,@5336 453,0,2 486,0,0 508,1,@5337 528,0,@9455 566,0,1 596,0,@10090 659,0,0 664,0,0 687,0,0 692,1,@5338 697,1,@5339 732,0,1 739,0,@10535 748,0,7 794,0,0 801,0,0 807,0,0 840,0,0 852,0,0 857,0,0 862,1,@5340 897,0,0 906,0,20 959,0,0 987,0,1 994,0,0 1022,0,@9455 1087,0,0 1094,0,1 1106,1,@4980 1172,0,15 1211,0,2 1244,0,0 1286,0,1 1293,0,0 1310,0,@10090 1387,0,0 1441,0,0 5333:D3,120|3b650c7305ff552ccd058b3883ff11755e8b78048b3f83ff077507bf03000000eb05bf0100000083ff0375438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7204897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@11217,1,@522|28,0,1 35,0,0 78,0,8 112,0,0 5334:D3,328|3b650c7305ff552ccd058b3089f783fe190f85c60000008b7804ff37ff7704ff77088b470cff7710ff7714ff7718ff771c8b5a04e82301000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d642404897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383ff11755e8b78048b3f83ff077507bf03000000eb05bf0100000083ff0375438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7208897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f400|@11197,1,@524|53,1,@5335 188,0,12 237,0,1 244,0,0 287,0,8 321,0,0 5335:D3,160|3b650c7305ff552ccd0953a8010f85810000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b5c2404e8e886feff89c78b3783fe117539ff77048b4424048b5c2408e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b85c9466b18b5d04ff238d642404b801000000c3f400|@10030,1,@523|55,0,8 64,1,@5117 139,0,@11195 153,0,0 5336:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8305c66b1c3f4|@10825,1,@525|66,0,@10565 5337:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@526| 5338:D3,196|3b650c7305ff552ccd0983f8017506b801000000c38b388b40048b178b7d008d7ff43b7d087305ff5528cd0d897d00c747fc02000000895f04c707010000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c302710e8d642404b8f80466b18b5d04ff23e866ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@11218,1,@527|16,0,0 59,0,0 94,0,8 140,0,@9455 5339:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8389866b1c3f4|@10825,1,@528|66,0,@11219 5340:D3,340|3b650c7305ff552ccd098b7c24048b3f3bc77508b801000000c204008b7c24048b378b7c24048b7f0483f8017d05e9130100003bc60f8d0b01000089c6c1ee0383ce01d1ee0fb63c378d3c7d0100000089c183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff010f848d0000008b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000895f08c74704a05266b1c707170000005783c002710e8d642404b8f80466b18b5d04ff2383c302710e8d642404b8f80466b18b5d04ff238b7c240857e826ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2040083c002710ab8f80466b18b5d04ff238b7c240457e8e2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c43966b1c20400b8d88d66b18b5d04ff23f4000000|@11221,1,@529|21,0,0 91,0,0 149,0,0 159,0,@10403 165,0,11 180,0,@9455 199,0,@9455 267,0,@9455 319,0,@10072 327,0,@11145 5341:D3,1156|3b650c7305ff552ccd0953ff30ff7004ff700cff7010ff70148b7018ff701c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937576a016a016a016a015483042404ff742414ff74242c8b442438bb01000000e839040000ff3424ff7424088b54241083fa01750abae43c66b1e993000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642434b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642434b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175118067ffbf89fabf010000008b742424eb2e8b0a8b5a04894c77fe89f183c102710e8d642434b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebbcf7c60100000075288b5e0489f983c102710e8d642434b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd08b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7073cc02ab18b5d008d5bec3b5d087305ff5528cdc4895d00c743fc0400000089530c897308897b04c7032cc12ab18b44242ce82c81feff89c7578b4424348b5c2424e8bc2e000089c7578b4424088b1c24e80531000089c7578b542448b801000000ff1289c7578b54244cb801000000ff1289c7578b7c241889fe83ff0175068b7c2410eb2c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54241089570889f6897704c7071f000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b74243ceb0b8b44243ce8f030000089c68b7c242c8b0f8b7d008d7fdc3b7d087305ff5528cd42897d00c747fc080000008b5c243089da895f1c894f188b4c2434894f148b4c2410894f1089770cc74708bc3a66b18b74244089f18977048b342489378d6424048b75008d76f43b75087305ff5528cd86897500c746fc02000000897e048b7c240489fb893e8b7d008d7fec3b7d087305ff5528cd4e897d00c747fc0400000089d289d089570cc747089c5a66b18b542408895704c7070f0000008b55008d52f43b55087305ff5528cdcb895500c742fc0200000089db895a04c702050000008b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000c743040100000089138b55008d52dc3b55087305ff5528cdcb895500c742fc0800000089c089421cc7421801000000c74214010000008b442434894210895a0cc74208bc3a66b189c9894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b0c24890f8d6424108b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489378b74243c8916897e04b80100000083c438c20800f4|@11239,1,@560|86,0,0 91,1,@5342 112,0,@10109 122,0,0 151,0,@9455 178,0,16777215 189,0,@11058 244,0,0 253,0,0 269,0,0 300,0,@9455 348,0,@9455 404,0,1 442,0,@5363 483,0,@5364 492,1,@5117 508,1,@5366 523,1,@5369 535,0,0 549,0,0 615,0,15 653,0,2 686,0,0 708,1,@5370 778,0,@10090 873,0,@10535 886,0,7 923,0,2 956,0,0 996,0,0 1003,0,0 1020,0,@10090 1098,0,0 1145,0,0 5342:D3,3056|3b650c7305ff552ccd095383f80175258d6424048b74240cbfc45d66b18b1789168b57048956048b7f08897e08b801000000c210008b38ff70048b1789d683fa010f85120300008b47048b7708a8010f85ea0100008b388b500483fa010f85d70100008b1683fa050f85ca0100008b560883fa017507ba03000000eb05ba0100000083fa030f85ad0100008b56048b7424188b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c707010000008b5d008d5bf43b5d087305ff5528cd85895d00c743fc02000000c7430401000000893b8b75008d76f43b75087305ff5528cd0d897500c746fc020000008b7c2404897e04c706010000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000c747040100000089378b75008d76f83b75087305ff5528cd8d897500c746fc0100000089166a016a016a018b54241c8b4c2418575654830424085251e8aa0a0000ff3424ff742408ff7424108b5c241c83c302710e8d642420b8f80466b18b5d04ff238b7c243083c702710e8d642420b8f80466b18b5d04ff236a016a016a018b7424348b54243057548304240456528b442434e84efeffff5a5f5e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008951048b54240889118b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a048b7c2404893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc020000008977048b342489378d64240c8b742420890e895604897e08b80100000083c414c21000eb00e9b70600008b5c240483c302710e8d642408b8f80466b18b5d04ff238b7c241883c702710e8d642408b8f80466b18b5d04ff236a016a016a018b74241c8b54241857548304240456528b44241ce874fdffff595e5b8d6424048b55008d52f43b55087305ff5528cd4a895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707110000008b55008d52f43b55087305ff5528cdca895500c742fc02000000897204893a8b7c24108b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f0489378b74240c890e895604897e08b801000000c2100083fe050f8538010000ff77048b7f0883ff01750f8b3c248b37bf01000000e9380200008d6424048b5c240483c302710e8d642408b8f80466b18b5d04ff238b7c241883c702710e8d642408b8f80466b18b5d04ff236a016a016a018b74241c8b54241857548304240456528b44241ce833fcffff595e5b8d6424048b55008d52f43b55087305ff5528cd4a895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707110000008b55008d52f43b55087305ff5528cdca895500c742fc02000000897204893a8b7c24108b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f0489378b74240c890e895604897e08b801000000c210008b5c240483c302710e8d642408b8f80466b18b5d04ff238b7c241883c702710e8d642408b8f80466b18b5d04ff236a016a016a018b74241c8b54241857548304240456528b44241ce819fbffff595e5b8d6424048b55008d52f43b55087305ff5528cd4a895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707110000008b55008d52f43b55087305ff5528cdca895500c742fc02000000897204893a8b7c24108b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f0489378b74240c890e895604897e08b801000000c2100083fe01752e578b7c240c83c70257710e8d642414b8f80466b18b5d04ff238b7c2408ff37bf01000000be01000000e99b00000089f283ea025289f383eb0289f183e9028b5424048b520489c8c1e80383c801d1e80fb614028d14550100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa0375218b55008d52f43b55087305ff5528cdc8895500c742fc02000000897a04891aeb0289fa5989ce89d73b650c7305ff552ccdc0e932ffffff3b34240f82bb0000008d64240489fe8b7c242483ee0103fe710e8d642414b8f80466b18b5d04ff236a016a016a018b7424288b54242457548304240456528b4424288b5c241ce833f9ffffff3424ff742408ff7424108b7c2434ff378b7c24388b3f83c702710e8d642430b8f80466b18b5d04ff238b742438893e8b7c2440ff74242457b801000000bb01000000e8b31e000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000e98900000089f383c3028b54240c8b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642418b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e9b3fefffff7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8efa6fdff89c6eb008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b3424897708c7470401000000c70703000000578b4424248b5c2430e8291f00008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b7424108977048b342489378d642404578b74240c89f783fe01750489c2eb0989fbe8cc1f000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2404897e04c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2408894f0489378b7424408b0c24890e8d64240c895604897e08b80100000083c428c21000f7c701000000753a8b178b77048b0a83f90575208b520883fa017507ba03000000eb05ba0100000083fa037507bf03000000eb1389f73b650c7305ff552ccd81ebbebf0100000083ff030f858f0100008b7424188b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707010000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b8b75008d76f43b75087305ff5528cd09897500c746fc020000008b7c2404897e04c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000c747040100000089376a016a016a018b74241c8b542418576a0154830424085652e80d020000ff3424ff742408ff7424108b5c241c83c302710e8d642420b8f80466b18b5d04ff238b7c243083c702710e8d642420b8f80466b18b5d04ff236a016a016a018b7424348b54243057548304240456528b442434e8b1f5ffff5a5f5e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008951048b54240889118b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a048b7c2404893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc020000008977048b342489378d64240c8b742420890e895604897e08b80100000083c414c210008b5c240483c302710e8d642408b8f80466b18b5d04ff238b7c241883c702710e8d642408b8f80466b18b5d04ff236a016a016a018b74241c8b54241857548304240456528b44241ce8def4ffff595e5b8d6424048b55008d52f43b55087305ff5528cd4a895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707110000008b55008d52f43b55087305ff5528cdca895500c742fc02000000897204893a8b7c24108b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f0489378b74240c890e895604897e08b801000000c21000f4|@11237,1,@551|25,0,@10588 46,0,0 119,0,1 126,0,0 177,0,0 210,0,0 251,0,0 284,0,0 342,1,@5343 371,0,@9455 394,0,@9455 558,0,0 589,0,@9455 612,0,@9455 697,0,0 732,0,8 802,0,0 850,0,0 883,0,0 910,0,@9455 933,0,@9455 1018,0,0 1053,0,8 1123,0,0 1171,0,0 1192,0,@9455 1215,0,@9455 1300,0,0 1335,0,8 1405,0,0 1453,0,0 1481,0,@9455 1497,0,0 1502,0,0 1564,0,0 1592,0,1 1599,0,0 1697,0,@9455 1774,0,@9455 1799,0,0 1804,0,0 1809,1,@5360 1844,0,0 1853,0,20 1906,0,0 1934,0,1 1941,0,0 1969,0,@9455 2034,0,0 2041,0,1 2053,1,@4980 2099,0,0 2105,0,1 2119,1,@5361 2184,1,@5362 2225,0,2 2284,0,0 2323,0,1 2330,0,0 2340,0,1 2361,0,0 2409,0,0 2442,0,0 2483,0,0 2516,0,0 2547,1,@5343 2576,0,@9455 2599,0,@9455 2763,0,0 2787,0,@9455 2810,0,@9455 2895,0,0 2930,0,8 3000,0,0 3048,0,0 5343:D3,1192|3b650c7305ff552ccd09a8010f85b30000008b308b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c74704010000008937578b7c240cff378b7c24108b3f83c702710e8d642408b8f80466b18b5d04ff238b742410893e8b7c24188b74240c5756ff74240c8b442410e84804000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b3424897708c7470401000000c7070300000057689c5a66b18b44240cbb01000000e8ce10000089c757ff74240c6a01eb0ab8648e66b18b5d04ff23f64424040175138b7424048b3e89f6ff7604576a01e9660200005f8b742424f7c601000000740b8d642404be03000000eb098d642404be0100000083f60283ee0103fe57710e8d642414b8f80466b18b5d04ff238b7c2424f7c7010000000f85830000008b7c24248b1f8b3c2483ef02710e8d642414b8f80466b18b5d04ff2383ff017d0e8d642414b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c70711000000578b442408e81a16000089c7eb048b7c2404578b7c241c8b3f8d1c7d0100000083fb01750abf449b66b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874001000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c241c89d98d77048d7a04d1e9f3a489df83c70889fed1eec604322dd1efc6443a01458062ffbf89d7578b7c240889fb83ff017d0e8d64241cb8a84566b18b5d04ff23b801000000e8d916000089c28b7424308b7d008d7fdc3b7d087305ff5528cd44897d00c747fc08000000c7471c03000000c7471801000000c747140100000089571089770cc74708bc3a66b18b34248977048d6424048b342489378d6424088b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702190000008b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b742408897704c707050000008b74241c8b4c2404890e895604897e08b80100000083c410c214008d642418b8780566b18b5d04ff23f64424040175588b7424048b3e89f6ff76048b3783fe05752d8b770883fe017507be03000000eb05be0100000083fe037514ff77048b3c24ff37bf01000000be01000000eb618b54240483c202710e8d642428b8f80466b18b5d04ff23eb335f83ef018b54240803d7710e8d642420b8f80466b18b5d04ff238d6424045e891424897424043b650c7303ff552ce9eefcffff5e891424897424043b650c7303ff552ce959ffffff3b342472218d64240889fa8b7c240483ef0103d7710e8d642428b8f80466b18b5d04ff23ebc589f383c3028b5424048b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642430b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e951fffffff40000|@11236,1,@547|49,0,0 78,0,@9455 112,1,@5344 156,0,0 162,0,1 168,0,@10535 177,0,0 182,1,@5355 198,0,@11149 251,0,1 262,0,0 282,0,@9455 326,0,@9455 345,0,@11112 385,0,0 420,0,8 430,1,@5358 462,0,@11235 482,0,4 503,0,16777215 561,0,0 628,0,@10224 638,0,0 643,1,@5359 682,0,1 689,0,0 696,0,0 709,0,@10090 763,0,12 802,0,2 823,0,0 838,0,@9465 881,0,1 888,0,0 906,0,0 911,0,0 931,0,@9455 959,0,@9455 1041,0,@9455 1096,0,0 1124,0,1 1131,0,0 1159,0,@9455 5344:D3,1420|3b650c7305ff552ccd0953a801750f8b30ff7004bf01000000e904030000f60424010f85ad0000008b3c248b5f048b442408e86905000089c7578b7c2414f7c701000000751a8b7c2414ff378b3c24ff37bf01000000be01000000e983000000f64424040175608b7c24048b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008978088b3c248978048d642408c7000f000000c20c008d642408b8648e66b18b5d04ff238d642404b8e09966b18b5d04ff233b34240f822a0100008d64240457f644240c010f850c0100008b7c240c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b44240ce8f107000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f0000008b75008d76e83b75087305ff5528cd80897500c746fc05000000897e108b3c24897e0c8d642404c7460801000000c74604bc3a66b1c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff742404b801000000bb01000000e8a507000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000e9970000008d642410b8648e66b18b5d04ff2389f383c3028b5424048b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642410b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e944fefffff7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e85f9bfdff89c6eb008b142489d783fa0175098d64241089f0c20c008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c40cc20c00f7c60100000075288b4e0489fa83c202710e8d642408b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c240483ff01751d8b7c2418f7c7010000007407bf03000000eb05bf0100000083f702eb05bf01000000578b7c24188b3f8d1c7d0100000083fb01750abf0c9a66b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879400000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c241889d98d77048d7a04d1e9f3a489df83c70889fed1eec604322dd1efc6443a01508062ffbf89d7578b7c240889fb83ff017d0e8d642414b8a84566b18b5d04ff23b801000000e89906000089c757bb010000008b7c2414eb0e8d642410b8780566b18b5d04ff23f7c70100000075288b570489de83c602710e8d642418b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642418b8a84566b18b5d04ff23b801000000e89406000089c7578b7c241089fb83ff017d0e8d64241cb8a84566b18b5d04ff23b801000000e8fe06000089c383fb0175035beb0e8b0424e87c07000089c38d6424048b7c24248b7424208b54241c5756528b44241ce8f6faffff89c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714010000008b14248957108d6424048b54241089570cc74708010000008b14248957048d64240889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c40cc20c00f4000000|@11232,1,@541|21,0,0 51,1,@5345 82,0,0 87,0,0 140,0,8 173,0,1 192,0,7 204,0,@11149 218,0,@11229 289,0,8 299,1,@5349 334,0,1 353,0,7 399,0,0 406,0,@10090 412,0,0 445,0,0 457,0,0 462,0,0 467,1,@5350 502,0,0 511,0,20 525,0,@11149 578,0,0 606,0,1 613,0,0 641,0,@9455 706,0,0 713,0,1 725,1,@4980 792,0,15 825,0,@9455 873,0,1 880,0,0 890,0,0 914,0,@11231 934,0,4 955,0,16777215 1013,0,0 1080,0,@10224 1090,0,0 1095,1,@5351 1103,0,0 1118,0,@9465 1150,0,@9455 1185,0,@10224 1195,0,0 1200,1,@5352 1223,0,@10224 1233,0,0 1238,1,@5353 1256,1,@5354 1321,0,1 1335,0,0 1359,0,0 1406,0,12 5345:D3,44|3b650c7305ff552ccd0989c7f7c70100000075118b078b7704ff342489742404e91b000000b801000000c3f4|@11228,1,@534|33,1,@5346 38,0,0 5346:D3,500|3b650c7305ff552ccd09a8010f85e40000008b38ff70048b3783fe05753c8b770883fe017516f6c3017407be03000000eb05be0100000083f602eb05be0100000083fe0375148b7f04ff33ff73048b17be01000000e9b1000000f6c3010f85850000008b3b8b5b048b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c74704030000008937578b7c240c578b442408e843ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c204008d642404b8b89866b18b5d04ff23ba009966b18b4424048b3c24897c240483c404ff2283fa01753f89f08b5c2404e8ed00000089c7578b7c2414578b4424108b5c2408e8d0feffff89c383fb0175075883c40cc20400588b7c240c897c241083c410e98d01000089d183e9025189d183e9025189d183e9028b5f0489c8c1e80383c801d1e80fb61c038d1c5d0100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f90375288b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008971048b1c2489198d642404eb068d64240489f15b89da89ce3b650c7305ff552ccdc4e919fffffff400|@11227,1,@533|44,0,1 51,0,0 61,0,0 81,0,0 135,0,8 168,0,1 237,0,@11223 247,0,@11226 279,1,@5347 331,1,@5348 385,0,0 413,0,1 420,0,0 5347:D3,192|3b650c7305ff552ccd09a8010f85a70000008b108b40048b7d008d7ff43b7d087305ff5528cd0d897d00c747fc02000000895f04c707110000008b75008d76ec3b75087305ff5528cd8d897500c746fc04000000c7460c01000000895608897e04c706170000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000c7470403000000893757e870ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@531|54,0,8 87,0,0 99,0,11 132,0,1 186,0,0 5348:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@532| 5349:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8389866b1c3f4|@10825,1,@535|66,0,@11219 5350:D3,340|3b650c7305ff552ccd098b7c24048b3f3bc77508b801000000c204008b7c24048b378b7c24048b7f0483f8017d05e9130100003bc60f8d0b01000089c6c1ee0383ce01d1ee0fb63c378d3c7d0100000089c183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff010f848d0000008b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000895f08c74704a05266b1c707170000005783c002710e8d642404b8f80466b18b5d04ff2383c302710e8d642404b8f80466b18b5d04ff238b7c240857e826ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2040083c002710ab8f80466b18b5d04ff238b7c240457e8e2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c43966b1c20400b8d88d66b18b5d04ff23f4000000|@11221,1,@536|21,0,0 91,0,0 149,0,0 159,0,@10403 165,0,11 180,0,@9455 199,0,@9455 267,0,@9455 319,0,@10072 327,0,@11145 5351:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001c4166b1c3f400|@10221,1,@537|15,0,0 26,0,@9455 73,0,@10172 5352:D3,124|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704c707030000005783c002710e8d642404b8f80466b18b5d04ff23e8b0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@538|15,0,0 51,0,1 66,0,@9455 5353:D3,124|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704c707010000005783c002710e8d642404b8f80466b18b5d04ff23e8b0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@539|15,0,0 51,0,0 66,0,@9455 5354:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@540| 5355:D3,448|3b650c7305ff552ccd095383f801750b8d6424048b442404c20400ff30ff70048b4424088b5c2404e8a701000089c757ff7424086a01f644240401755b8b7424048b3e89f6ff76048b3783fe0575308b770883fe017507be03000000eb05be0100000083fe037517ff77048b3c24ff37bf01000000be01000000e9910000008b54240483c202710e8d64241cb8f80466b18b5d04ff23eb635f83ef018b5c241003df710e8d642414b8f80466b18b5d04ff238d6424048b7c24148b75008d76ec3b75087305ff5528cd88897500c746fc04000000c7460c03000000897e088b3c24897e048d642404c7060f000000588974240c83c408e905ffffff5e891424897424043b650c7303ff552ce926ffffff3b342472218d64240889fa8b7c240483ef0103d7710e8d64241cb8f80466b18b5d04ff23ebc589f383c3028b5424048b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642424b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e951fffffff4|@11234,1,@544|41,1,@5356 88,0,1 95,0,0 113,0,0 118,0,0 141,0,@9455 169,0,@9455 215,0,1 234,0,7 299,0,@9455 354,0,0 382,0,1 389,0,0 417,0,@9455 5356:D3,692|3b650c7305ff552ccd0950f6c3010f85400100008b3bff73048b3783fe0575638b770883fe017507be03000000eb05be0100000083fe03754aff7704ff3424ff74240cb801000000bb01000000e87602000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000e9db0000008b7c240489fe83ff017d0e8d642408b8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f689f0897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c747040300000089375789c083c002710e8d64240cb8f80466b18b5d04ff238b5c2404e8d8feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c38d642404b801000000c3f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8008efdff89c6eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704030000008937578b7c2404ff37bf01000000be010000003b342472528d64240483ef018b44240c03c7710e8d642410b8f80466b18b5d04ff238b5c2408e805feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c40cc389f383c3028b5424088b520489f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa01750489faeb1589fa83c202710e8d642414b8f80466b18b5d04ff2389d989ce89d73b650c7305ff552ccdc0e920fffffff4000000|@11233,1,@543|41,0,1 48,0,0 68,0,0 73,0,0 78,1,@5357 113,0,0 122,0,20 147,0,@11112 191,0,0 226,0,8 259,0,1 278,0,@9455 345,0,0 385,0,0 392,0,1 404,1,@4980 441,0,1 455,0,0 460,0,0 489,0,@9455 595,0,0 623,0,1 630,0,0 658,0,@9455 5357:D3,404|3b650c7305ff552ccd098b7c24088b3f3bc77508b801000000c208008b7c24088b378b7c24088b7f0483f8017d05e9560100003bc60f8d4e01000089c6c1ee0383ce01d1ee0fb63c378d3c7d0100000089c183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff010f84cb0000008b7c240483ef0103fb710ab8f80466b18b5d04ff2383ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff2383c302710e8d642404b8f80466b18b5d04ff238b7c240c8b7424085756e8e8feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2080083c002710ab8f80466b18b5d04ff238b7c24088b7424045756e89ffeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c43966b1c20800b8d88d66b18b5d04ff23f4|@11221,1,@542|21,0,0 91,0,0 132,0,@9455 147,0,@11112 187,0,0 222,0,8 237,0,@9455 256,0,@9455 329,0,@9455 386,0,@10072 394,0,@11145 5358:D3,384|3b650c7305ff552ccd0989c7538b1789d683fa1575658b4704ff7708ff770c8b7c2410578b5c240ce8d3ffffff89c7578b7c2414578b44240c8b5c2410e8beffffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70015000000c2040089f283fe2175098d64240489f8c2040089d683fa1f7546ff77048b47088b7c240c578b5c2408e85affffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c7001f000000c2040083fe0b7568ff77048b4708ff770c8b7c2410578b5c240ce80cffffff89c7578b7c2414578b4424088b5c2410e8f7feffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424088b3c248978048d642408c7000b000000c204008b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642404897804c70023000000c20400f4000000|@11159,1,@545|116,0,10 209,0,15 318,0,5 373,0,17 5359:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001c4166b1c3f400|@10221,1,@546|15,0,0 26,0,@9455 73,0,@10172 5360:D3,408|3b650c7305ff552ccd098b7c24088b3f3bc77508b801000000c208008b7c24088b378b7c24088b7f0483f8017d05e9580100003bc60f8d5001000089c6c1ee0383ce01d1ee0fb63c378d3c7d0100000089c183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff010f84cd0000008b7c240489de83ee0103fe710ab8f80466b18b5d04ff2383ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff2383c302710e8d642404b8f80466b18b5d04ff238b7c240c8b7424085756e8e6feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2080083c002710ab8f80466b18b5d04ff238b7c24088b7424045756e89dfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c43966b1c20800b8d88d66b18b5d04ff23f40000|@11221,1,@548|21,0,0 91,0,0 134,0,@9455 149,0,@11112 189,0,0 224,0,8 239,0,@9455 258,0,@9455 331,0,@9455 388,0,@10072 396,0,@11145 5361:D3,208|3b650c7305ff552ccd09a8010f85b60000008b108b400483fb017d0ab8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd0d897d00c747fc02000000895f04c707010000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000c7470c01000000895708897704c7071700000057e861ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@549|29,0,@11112 69,0,0 104,0,8 137,0,0 149,0,11 201,0,0 5362:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@550| 5363:D3,220|3b650c7305ff552ccd058b3883ff110f85c00000008b78048b0f89ce83f90775438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7204897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383fe0175668b77048b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3b801000000c3f4|@11238,1,@552|67,0,8 130,0,@9990 174,0,8 208,0,0 214,0,0 5364:D3,432|3b650c7305ff552ccd058b3089f783fe190f85c60000008b7804ff37ff7704ff77088b470cff7710ff7714ff7718ff771c8b5a04e88b01000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d642404897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383ff110f85c00000008b78048b0f89ce83f90775438b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7208897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383fe0175668b77048b4a0c89cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3b801000000c3f4000000|@11197,1,@554|53,1,@5365 188,0,12 276,0,8 339,0,@9990 383,0,8 417,0,0 423,0,0 5365:D3,160|3b650c7305ff552ccd0953a8010f85810000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000008b5c2404e8d052feff89c78b3783fe117539ff77048b4424048b5c2408e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642408b85c9466b18b5d04ff238d642404b801000000c3f400|@10030,1,@553|55,0,8 64,1,@5117 139,0,@11195 153,0,0 5366:D3,380|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b8609066b18b5d04ff23ff308b4004f6c3017575ff338b5b04e8c8ffffff89c7578b7c24088b3783fe05752e89ff8b770883fe017507be03000000eb05be0100000083fe03751389ff8b7f04ff37be01000000ba01000000eb3d8b45008d40f43b45087303ff5528894500c740fc020000008b3c248978048d6424048b3c2489388d64240483c404c38d642404b8609066b18b5d04ff233b1424723d8d64240489f383fb017d0e8d64240cb8a84566b18b5d04ff23b801000000e8b70000008b342489f783fe0175058d64240cc389fb8d64240ce90101000089d183c102518b4f0489d3c1eb0383cb01d1eb0fb60c198d1c4d0100000089d183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f901750489f1eb1589f183c102710e8d642414b8f80466b18b5d04ff235b89da89ce3b650c7305ff552ccdc4e939fffffff4000000|@11168,1,@557|21,0,0 27,0,@11164 81,0,1 88,0,0 105,0,0 110,0,0 168,0,@11164 198,0,@10224 208,0,0 213,1,@5367 239,1,@5368 284,0,0 312,0,1 319,0,0 347,0,@9455 5367:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@555|15,0,0 26,0,@9455 73,0,@10071 5368:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@556| 5369:D3,144|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b308b4004f6c30175558b3b8b5b048b178b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8a6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f40000|@11207,1,@558|21,0,0 27,0,@11204 132,0,@11204 5370:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@559| 5371:D3,92|3b650c7305ff552ccd0189c7f7c701000000753f8b07ff7704e8b2a6ffff89c7578b442404e8d6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f40000|@10030,1,@561|26,1,@5315 84,0,0 5372:D3,120|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b308b4004f6c301753f8b3b8b5b048b1683fa05750489f7eb0057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f4|@11207,1,@562|21,0,0 27,0,@11204 110,0,@11204 5373:D3,132|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b308b4004f6c301754b8b3b8b5b048b1783fa0575108b3683fe057502eb05bfcc5366b1eb0057e8b0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f4|@11207,1,@563|21,0,0 27,0,@11204 68,0,@10423 122,0,@11204 5374:D3,640|3b650c7305ff552ccd018b3889fe83ff1f75088b4008e9e5ffffff89f783fe0b751f8b7808ff700c89f8e8d1ffffff8b3883ff0575058d642404c358e9bfffffff83ff2975188b70048b780883ff017507bf01000000eb0cb8cc5366b1c3b8cc5366b1c3f7c60100000075248b4e0489fa83c202710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd4578b3c2483ff010f8c800000008b3c2483ff017d068d642404eb688b3c2481ffffffff017f598b042483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d642404b8d48e66b18b5d04ff238d642404b82c8f66b18b5d04ff233bf7750d6a016a03be010000006a01eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd18b3c243b7c24100f8da10000008b54240489d10b54240889c989cf81f901010000754d89d1d1e989f2d1ea8b7c240c880c178b0c2483c102710e8d642414b8f80466b18b5d04ff2389f083c002ba01000000bb0300000089c6895c2404890c24895424083b650c7305ff552ccd40eb908b0c2483c102710e8d642414b8f80466b18b5d04ff2389ff89fb89db8d5c1fff89f089c6895c2404890c24895424083b650c7305ff552ccd40e952ffffff8d6424088b3c2483ff0175068d642404eb0b59d1e9d1ee8b3c24880c378b3c248067ffbf8b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977045e89378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400801000000897804c70005000000c3f40000|@11240,1,@564|82,0,0 89,0,@10423 95,0,@10423 119,0,@9455 176,0,16777215 189,0,32 276,0,@11152 290,0,@11156 308,0,0 375,0,128 409,0,@9455 424,0,0 429,0,1 471,0,@9455 616,0,0 623,0,0 632,0,2 5375:D3,748|3b650c7305ff552ccd09506a016a016a018b7c24208b742424576a016a016a016a0154830424145689d8bb01000000e8cc020000ff3424ff7424088b54241083fa01750abbe43c66b1e997000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642418b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642418b8b48066b18b5d04ff2389f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd06895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab89dfbe0100000083fa010f85db0100008067ffbf89fb8b7c242c5768fc9c66b18b44241ce80497ffff89c7578b7c24288b3f8d1c7d0100000083fb01750abf344b66b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f876b01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c242889d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf89d7578b7c243083ff017d0e8d642420b8a84566b18b5d04ff238b5c2430b801000000e80b0500008b74240c89f783fe01750489c7eb0989fbe88505000089c7578b44240ce8dd05000089c78b5424288b4c242c8b75008d76dc3b75087305ff5528cd86897500c746fc08000000894e1c895618c7461403000000897e108b3c24897e0c8d642404c74608bc3a66b18b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404e8dc05000089c78b7424248b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642408897804c7000f00000083c414c214008d64241cb8780566b18b5d04ff238b0a8b5a04894c77fe89f183c102710e8d642418b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e9ebfdfffff4|@11246,1,@571|43,0,0 48,1,@5376 69,0,@10109 79,0,0 108,0,@9455 135,0,16777215 146,0,@11058 201,0,0 210,0,0 235,0,@11244 244,1,@5306 270,0,@10286 290,0,4 311,0,16777215 369,0,0 434,0,@10224 448,0,0 453,1,@5378 475,1,@5379 487,1,@5380 536,0,1 556,0,@10090 610,0,12 620,1,@5381 674,0,7 689,0,@9465 719,0,@9455 5376:D3,880|3b650c7305ff552ccd0989de83f801750e8b742414bf01000000e96d0200008b38ff70048b1f8b47048b4d008d49f43b4d087305ff5528cd49894d00c741fc02000000897104c701010000008b7c24088b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c24088b7c77fe83ff030f85e500000089f283c202710e8d642404b8f80466b18b5d04ff238b7c242083c702710e8d642404b8f80466b18b5d04ff238b5c24188b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04890e8b4c24208b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703030000008b4424108b4d008d49f43b4d087305ff5528cdcd894d00c741fc020000008941048919ff34245257ff7424288b5424248b5c241c8b442418894424188b44240c895c241c8b5c2408894c242089542424897424288b3c24897c242c8b7c2404897c243083c414e9a0feffff8d64241483c602710e8d642404b8f80466b18b5d04ff238b7c241c83c702710e8d642404b8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdcb895500c742fc02000000894a04c702110000008b4d008d49f03b4d087305ff5528cdcd894d00c741fc0300000089410889590489118b5c24148b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b4c241c8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703010000008b4424108b4d008d49f43b4d087305ff5528cdcd894d00c741fc020000008941048919ff342456ff742428578b7424288b5c241c8b442418894424188b44240c895c241c8b5c2408894c242089542424897424288b3c24897c242c8b7c2404897c243083c414e978fdffff8d642414f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c2414ba01000000f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc48b742410bf01000000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ce3b650c7305ff552ccdc4ebc48b74240c8b0c24890e8d642404895604897e08b801000000c21c00f400|@11243,1,@565|22,0,0 72,0,0 101,0,@9990 139,0,@9455 162,0,@9455 241,0,1 366,0,@9455 389,0,@9455 429,0,8 537,0,0 718,0,0 787,0,0 871,0,0 5377:D3,60|3b650c7305ff552ccd0989c78b45008d40ec3b45087305ff5528cd88894500c740fc0400000089580cc74008049d66b1897804c7000f000000c3f400|@11194,1,@566|44,0,@11245 53,0,7 5378:D3,124|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704c707030000005783c002710e8d642404b8f80466b18b5d04ff23e8b0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@567|15,0,0 51,0,1 66,0,@9455 5379:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@568| 5380:D3,112|3b650c7305ff552ccd01a80175598b388b40048b77048b57088b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8c2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@569|104,0,0 5381:D3,112|3b650c7305ff552ccd01a80175588b388b40048b378b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8c3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@570|103,0,0 5382:D3,40|3b650c7305ff552ccd058b720489f78b0689fe8b3f83c702710ab8f80466b18b5d04ff23893ec3f4|@11189,1,@572|27,0,@9455 5383:D3,32|3b650c7305ff552ccd058b5a04ff3424c7442404bc3a66b1e92b5cfffff40000|@11187,1,@573|20,0,@10090 25,1,@5291 5384:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070100000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@575|58,0,0 110,0,0 5385:D3,180|3b650c7305ff552ccd0953a8010f85950000008b38ff70048b07ff77048b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2408897b04c703bcd52ab1e8c740feff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e881ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@577|64,0,@5386 69,1,@5117 173,0,0 5386:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@576|13,0,@11186 27,0,@10090 5387:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@578|68,0,0 5388:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@579|13,0,@11186 5389:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@580|13,0,@11186 5390:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070100000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@581|58,0,0 110,0,0 5391:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e85900000089c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@589|31,1,@5392 97,0,0 5392:D3,464|3b650c7305ff552ccd09538b3889fe83ff01757cff7004ff7008ff700c8b40108b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c240c897b04c703acd92ab1e8f03dfeff89c78b45008d40e83b45087305ff5528cd80894500c740fc050000008978108b3c2489780c8d6424048b3c248978088d6424048b3c248978048d642408c70001000000c389f783fe0575588b40048b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b3c24897b048d642404c703e4d92ab1e8733dfeff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c383ff0775088b7804576a01eb76ff7004ff70088b400c8b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b7c2404897b088b7c2408897b04c7031cda2ab1e8043dfeff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b3c248978048d642408c70003000000c3f644240401752c8b7c24048b0789ffff7704ff74240c8b5c2408e8fb00000089c25e891424897424043b650c7303ff552cebcd5f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000700000083c408c3f40000|@11256,1,@588|67,0,@5393 72,1,@5117 139,0,0 192,0,@5394 197,1,@5117 234,0,2 303,0,@5395 308,1,@5117 365,0,1 397,1,@5396 453,0,3 5393:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@582|13,0,@11186 27,0,@10090 5394:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@583|13,0,@11186 27,0,@10090 5395:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@584|13,0,@11186 5396:D3,196|3b650c7305ff552ccd0953ff30ff70048b78086a016a01ba209366b18b442418576a0554830424088b5c2418ff12585f8b3783fe19757b8b77048b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008977088b34248977048d6424048b342489f3893757e86a0000008b74240889f783fe01750489c7eb0989fbe8d800000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c408c204008d64240cb8d89d66b18b5d04ff23f4000000|@11255,1,@587|24,0,@11188 106,1,@5397 128,1,@5398 183,0,@11252 5397:D3,112|3b650c7305ff552ccd09a801755b8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd4d897d00c747fc03000000895708897704891f57e8c0ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@585|106,0,0 5398:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@586| 5399:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f048b7708ff342489742404ff22f4000000|@11187,1,@590|13,0,@11186 5400:D3,1500|3b650c7305ff552ccd0950538b3c24ff378b7c2404ff77088b742414bf01000000f7c601000000752b8b0e8b56048b1983fb05750d8b49043bcf7e02eb0289f9eb0289f989cf89d63b650c7305ff552ccdc0ebcd578b3c2483c70257710e8d642418b8f80466b18b5d04ff238b3c2483ff017d068d642418eb688b3c2481ffffffff017f598b042483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb1989fe83ee08eb0e8d642418b8d48e66b18b5d04ff233bf775148b7c240483c70ec1ef0383cf01be01000000eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebca3bf772068b7c2420eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd8f7c7010000000f85870000008b37ff77048b1683fa0575698b4e0483f9017d068d642420eb513b4c24087d4789cac1ea0383ca0189d3d1eb8b7424040fb6341e8d34750100000083e10f83f93f7207b901000000eb0e33db83c302d1e9d3e389d983c9010bced1e9d1ea8b742404880c16eb0e8d642420b8008f66b18b5d04ff235e89f73b650c7305ff552ccd80e96dffffff6a018b7c240883ff010f85220100005f83c408578b7c2408c70703000000f60424010f85ed0000008b3c248b7f0483ff017507bf03000000eb05bf0100000083ff030f85cd0000005fff378b5d008d5bf43b5d087303ff5528895d00c743fc020000008b3c24897b04c7033ce22ab18b442414e80b0400008b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2410897b04c703d0e42ab1e83737feff89c78b342483c602710e8d642418b8f80466b18b5d04ff2383fe017d0e8d642418b8a84566b18b5d04ff23ff34245789f3b801000000e80006000089c78d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7002900000083c414c204008b54240cb801000000ff1289c757bf010000008b742404e99d00000089fe83ee0289fb83eb0289f983e90289c8c1e80383c801d1e88b5424040fb614028d14550100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa0375248b55008d52f43b55087305ff5528cdc8895500c742fc020000008b0c24894a04891aeb038b142489f189cf8914243b650c7305ff552ccd80e938fefffff7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b75008d76f43b75087303ff5528897500c746fc020000008b7c2404897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c240c897b088b3c24897b04c70394e52ab18b442420e8070200008b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c241c897b04c703c4e92ab1e83335feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74240489770c8b742408897708c7470401000000c70701000000578b74241483c602710e8d642428b8f80466b18b5d04ff238b7c24083bfe75578b7c240883ff017d0e8d642428b8a84566b18b5d04ff23ff74240cb8010000008b5c240ce8a808000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000eb43ff742410ff742408b801000000bb01000000e86309000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c706290000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000005a891783ff0175098d64242489f0c204008d6424248b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7001f000000c20400f4000000|@11262,1,@600|29,0,0 99,0,@9455 127,0,16777215 140,0,32 227,0,@11152 254,0,0 410,0,0 450,0,@11154 503,0,1 529,0,1 536,0,0 584,0,@5401 593,1,@5402 632,0,@5403 637,1,@5117 656,0,@9455 675,0,@10224 691,0,0 696,1,@5404 735,0,0 744,0,20 759,0,0 769,0,0 831,0,0 859,0,1 866,0,0 962,0,@9455 1021,0,2 1056,0,8 1100,0,@5405 1109,1,@5402 1148,0,@5407 1153,1,@5117 1205,0,0 1211,0,0 1230,0,@9455 1261,0,@10224 1275,0,0 1284,1,@5408 1319,0,0 1328,0,20 1343,0,0 1348,0,0 1353,1,@5409 1388,0,0 1397,0,20 1430,0,0 1489,0,15 5401:D3,92|3b650c7305ff552ccd0589c78b3783fe0d751589f88b5a04ff3424c744240401000000e97857fdff8b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c010000008b7204897008897804c70017000000c3f40000|@11257,1,@591|31,0,0 36,1,@4973 69,0,0 84,0,11 5402:D3,528|3b650c7305ff552ccd09538b38beace22ab181c61e0000008d74befcffe6e9ab000000909090e9a3000000909090e99e000000909090e993000000909090e98b000000909090e9c7000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e9fd000000909090e953000000909090e94b000000909090e943000000909090e938010000909090e935010000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090905aff228b7804ff700889f88b5c2404e81effffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642408897804c70005000000c3ff70048b7808ff700c89f88b5c2408e8dafeffff89c7578b4424048b5c240ce8cafeffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424088b3c248978048d642408c7000b000000c38b7804ff7008ff700c89f88b5c2408e87cfeffff89c7578b4424088b5c240ce86cfeffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70015000000c38d642404c3ff70048b40088b5c2404e821feffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c7001f000000c3f4|@11258,1,@592|14,0,@5402 269,0,2 363,0,5 454,0,10 522,0,15 5403:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@593|13,0,@11186 27,0,@10090 5404:D3,120|3b650c7305ff552ccd093bc37508b801000000c208008b7c24083bc775068b7c2404eb05bfc43966b15783c002710e8d642404b8f80466b18b5d04ff238b7c240c8b7424085756e8b4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20800f4|@10221,1,@594|15,0,0 37,0,@10072 52,0,@9455 5405:D3,84|3b650c7305ff552ccd0552508b7c24048b4708e85000000089c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b7424048b760489700c8978088b3c248978048d642408c70023000000c3f400|@11260,1,@596|20,1,@5406 77,0,17 5406:D3,948|3b650c7305ff552ccd0189c789fabefffffffff6c201751d8b1a8b4a043bde7e02eb0289f389de89ca3b650c7305ff552ccdc4ebde83c60256710e8d642404b8f80466b18b5d04ff238b342483fe017d068d642404eb688b342481feffffff017f598b042483c03ebe41000000d1e8d1ee33d2f7f68d34450100000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff41528d34b5fdffffff83fe017502eb1989f283ea08eb0e8d642404b8d48e66b18b5d04ff233bd675148b74240483c60ec1ee0383ce01ba01000000eb1e89d3d1eb8b0c24c604190089d183c10289ca3b650c7305ff552ccdc4ebca3bd67202eb1e89d3d1eb8b0c24c604190089d183c10289ca3b650c7305ff552ccdc4ebdcf7c70100000075788b0fff770483f9017d068d64240ceb5e3b4c24087d5489cac1ea0383ca0189d3d1eb8b7424040fb6341e8d34750100000083e10f83f93f7207b901000000eb0e33db83c302d1e9d3e389d983c9010bced1e9d1ea8b742404880c165e89f73b650c7305ff552ccd80eb8e8d64240cb8008f66b18b5d04ff238b7c240483ff010f8c830000008b7c240483ff017d068d642408eb6a8b7c240481ffffffff017f5a8b44240483c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d642408b8d48e66b18b5d04ff238d642408b82c8f66b18b5d04ff233bf7750d6a016a036a01bf01000000eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd13b7c24140f8de800000089fac1ea0383ca01d1ea8b7424100fb634168d34750100000089f983e10f83f93f7207ba01000000eb0c33d283c202d1e9d3e283ca0123f283fe01740a8b5c24040b5c2408eb048b5c24088b74240481fe01010000755189d9d1e98b1424d1ea8b74240c880c1689f883c002710e8d642418b8f80466b18b5d04ff238b0c2483c102bb01000000ba0300000089c7895c2408890c24895424043b650c7305ff552ccd80e94effffff89f883c002710e8d642418b8f80466b18b5d04ff238b7424048b5424048d5416ff8b0c2489c7895c2408890c24895424043b650c7305ff552ccd80e90effffff8b7c240889f983ff0175068d64240ceb1189c9d1e95ed1ee8b7c2408880c3783c4088b3c248067ffbf8b45008d40f43b45087303ff5528894500c740fc020000005f8978048b7c2404893883c408c3f40000|@11259,1,@595|15,0,-1 64,0,@9455 92,0,16777215 105,0,32 192,0,@11152 219,0,0 357,0,0 410,0,@11154 453,0,16777215 467,0,32 554,0,@11152 568,0,@11156 588,0,0 670,0,0 715,0,128 749,0,@9455 765,0,0 770,0,1 814,0,@9455 5407:D3,36|3b650c7305ff552ccd0589d7baec9266b18b5f04ff3424c7442404bc3a66b1ff22f40000|@11187,1,@597|13,0,@11186 27,0,@10090 5408:D3,236|3b650c7305ff552ccd093bc37508b801000000c204008b7c240483ff017d0ab8948966b18b5d04ff238b7424048b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd49897d00c747fc04000000c7470c01000000894708897704c707170000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e842ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@598|15,0,0 32,0,@11112 76,0,2 111,0,8 144,0,0 156,0,11 171,0,@9455 5409:D3,296|3b650c7305ff552ccd098b7c2408f7c7010000000f85040100008b7c24088b378b7c24088b57043bc60f858e0000008b7424048b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000c7470c01000000895f08897704c707170000005783c002710e8d642404b8f80466b18b5d04ff2383c302710e8d642404b8f80466b18b5d04ff238b7c24085257e86effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2080083c002710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489378b7424045756e80affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c43966b1c20800b801000000c20800f400|@11261,1,@599|80,0,0 92,0,11 107,0,@9455 126,0,@9455 195,0,@9455 279,0,@10072 287,0,0 5410:D3,232|3b650c7305ff552ccd0989dabe010000008b7d008d7ff83b7d087305ff5528cd45897d00c747fc010000408937578b75008d76e83b75087305ff5528cd05897500c746fc05000040c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b5d008d5bf43b5d087305ff5528cd45895d00c743fc02000040c7430401000000c703010000008b4c240889f7895f10894f0c8957088b1424895704c70734ed2ab18066ffbf89df897704c707740a36b18063ffbfe80829feff89c18b3c248b3f8d6424048b7424088b54240c890e895604897e08b801000000c20c00f4|@12992,1,@1642|13,0,0 75,0,0 82,0,0 89,0,0 96,0,0 102,0,0 135,0,0 141,0,0 168,0,@5411 183,0,@6444 192,1,@5117 224,0,0 5411:D3,820|3b650c7305ff552ccd0d5250538b7c24088b570489d6ff3289ffc7060100000089ff8b5f108b442408e81a03000089c7578b7424108b7e0489fa8b3f8b4c240483f903750a89d6c70603000000eb0083ff037502eb638b7c240cf7c70100000075258b178b77048b52088b521483fa017507bf03000000eb1389f73b650c7305ff552ccd80ebd3bf0100000083ff037502eb268b7c240cf7c70100000075108b37ff77048b76088b760ce9e4010000bf0100000083ff03751d8b7c24088b342489378d642404c7470401000000b80100000083c410c38b0424e89603000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b3c24897a04c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917578b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8b657fdff89c7eb008b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7001f0000008b3c24bb01000000f7c70100000075208b178b77048b52043bd37e02eb0289da89d389f73b650c7305ff552ccd89ebd883c302710e8d642414b8f80466b18b5d04ff236a016a018b7424188b7e0889f68b760c57548304240456e8fe0200008b1424ff742404b801000000ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d64240c897704c7070d0000008b7424108b7604c70603000000578b442404bb01000000e8ed190b0089c78d6424048b742404c70601000000897e04b80100000083c410c3f7c601000000751b8b16ff76048b0a83f90575098b52048b4c2414eb378d642404eb2abe0100000083fe03750e8d642404bf03000000e9e6fdffff5e89f73b650c7305ff552ccd80e9b7fdffffbe03000000ebd4f6c10175218b018b59048b40043bc27507ba03000000eb1389d93b650c7305ff552ccdc6ebdaba0100000083f20283fa0375068d642404ebc05a89d63b650c7305ff552ccdc0e961fffffff400|@12983,1,@1635|28,0,0 42,1,@5412 73,0,1 115,0,1 136,0,0 176,0,0 201,0,0 206,0,0 218,1,@5413 258,0,3 291,0,0 327,0,0 336,0,20 375,0,0 382,0,1 394,1,@4980 443,0,15 451,0,0 505,0,@9455 538,1,@5414 550,0,0 599,0,6 612,0,1 622,0,0 627,1,@6443 643,0,0 651,0,0 695,0,0 709,0,1 737,0,1 761,0,1 782,0,0 5412:D3,280|3b650c7305ff552ccd0953a8010f85f80000008b38ff7004ff37ff77048b7f088b07ff7704ff7708ff770cff7710ff7714ff7718ff771c8b5c2428e84825feff89c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b142489561c8d6424048b14248956188d6424048b14248956148d6424048b14248956108d6424048b142489560c8d6424048b14248956088d6424048b14248956048d642404893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d6424048b342489378d642404578b4424048b5c2408e81effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@603|60,1,@5117 272,0,0 5413:D3,148|3b650c7305ff552ccd01a801757d8b388b40048b7f048b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e89effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@604|53,0,2 88,0,8 140,0,0 5414:D3,552|3b650c7305ff552ccd0950538b3c2489fe83ff017d098d642408e9fc01000089f689f781feffffff010f8de801000089ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b75008d76f43b75087303ff5528897500c746fc020000008b142489d7895604c7068cf42ab18b55008d52f43b55087305ff5528cdc0895500c742fc0200000089ff897a04c70248f52ab18b7c24188b4c24108b5d008d5be83b5d087305ff5528cdc6895d00c743fc05000000894b1089530c897308897b04c703b8f52ab18b442408e8c622feff89c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542404895718c7471403000000c74710305c66b1c7470c01000000c7470801000000c74704e0a566b18937ba030000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000068904b67b16a01bb904b67b1e8651900008b7c241c8b74241468904b67b16a015756bb904b67b1e8e226000089c78b3783fe1975528b47048b5c241c8b7c2414ff342457e8ed44000089c7578b4424108b5c2408e8b10e0b00baec4b67b18b1c24e8c4100b0089c78d6424048b7424188b142489168d642408897e04b80100000083c408c20c008d642410b8a44967b18b5d04ff238d642408b8383066b18b5d04ff23f40000|@12981,1,@1633|37,0,16777215 95,0,0 136,0,@5415 173,0,@5416 225,0,@5417 234,1,@5117 269,0,1 283,0,1 290,0,@10565 297,0,0 304,0,0 311,0,@11299 318,0,1 382,0,12 387,0,@12975 394,0,@12975 399,1,@5433 412,0,@12975 421,0,@12975 426,1,@5443 455,1,@5460 471,1,@6435 476,0,@12978 484,1,@6437 511,0,0 526,0,@12966 540,0,@9964 5415:D3,168|3b650c7305ff552ccd0589d689c78b1783fa050f85820000008b57048b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8783266b18b5d04ff2389ce8b7456fef7c601000000752e8b368b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70001000000c38b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3b80ca066b18b5d04ff23f40000|@11268,1,@605|50,0,@9988 114,0,0 150,0,1 156,0,@11264 5416:D3,92|3b650c7305ff552ccd0589d68b108b48048b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f8b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8003566b18b5d04ff2389ce897c56feb801000000c3f4000000|@11269,1,@606|67,0,@10015 83,0,0 5417:D3,60|3b650c7305ff552ccd0589d76844a166b18b5f048b77088b570c8b4f1051ff7424088b7c240887d7897c24088974240ce91b0000008d642404f40000|@11272,1,@1623|13,0,@11270 49,1,@5418 5418:D3,1512|3b650c7305ff552ccd0d52538b7424148b5424108b7d008d7ff03b7d087305ff5528cd45897d00c747fc030000008957088977048b142489d68917578b1089d783fa290f85130100008d6424048b78048b500883fa030f85800000008b5424148b4c24108b44240c8b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894314894b1089530c89f68973088d6424048b34248973048d642404c70304fc2ab189f8e89d05000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000e9cb0400008b5424148b4c24108b44240c8b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894314894b1089530c89f68973088d6424048b34248973048d642404c703ccfc2ab189f8e8e505000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9ee03000089fe83ff1f0f85fd0000008b7804ff700889f8e8180600008b7c24148b74241c8b5424188b5c240c8b4b0457ff74240c565251ff742418e8f407000089c7578b7c24208b74241c8b5424188b5d008d5be43b5d087305ff5528cdc4895d00c743fc06000000895314897310897b0c8b7c240c897b088b7c2410897b04c7030cfe35b18b442404e8151efeff89c28b3c2489fe83ff0175238d6424148b45008d40f83b45087305ff5528cd04894500c740fc010000008910c20c008b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c410c20c0089f783fe190f8524020000ff70046a016a016a016a016a016a016a016a018b7c242c8b57048b7c243468008266b15483042404578b4424308b5c242cff12ff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b14248956088d6424048b14248956048d6424048b142489168d64242483ff010f853d010000be030000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b3424897704c707010000006a016a016a016a016a016a016a016a018b7424308b56048b742438575483042404568b4424348b5c2430ff12ff3424ff742408ff7424108b7c24188b74241c8b5424208b4c24248b5c24288b45008d40dc3b45087305ff5528cdce894500c740fc0800000089581c89481889501489701089780c8b3c248978088d6424048b3c248978048d6424048b3c2489388d6424248b7c2418ff3424578b5c2414e87d10000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642414c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c008d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c008d64240c83ff110f85a20000008b40048b54240cff1289c78b3783fe01754b8b77048b57088b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c008b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c00b801000000c20c00f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8ec4afdff89c7eb008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c00f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e88f4afdff89c7eb00eba1f4|@12971,1,@1618|160,0,@5419 167,1,@5420 202,0,1 211,0,20 288,0,@5421 295,1,@5422 330,0,0 339,0,20 368,1,@5423 404,1,@5425 474,0,@6429 483,1,@5117 574,0,15 654,0,@11068 785,0,1 845,0,0 857,0,0 1019,1,@5431 1066,0,6 1136,0,12 1242,0,6 1311,0,8 1347,0,0 1389,0,0 1396,0,1 1408,1,@4980 1482,0,0 1489,0,1 1501,1,@4980 5419:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@607| 5420:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e89119feff89c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@608|31,1,@5117 97,0,0 5421:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@609| 5422:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e8c918feff89c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@610|31,1,@5117 97,0,0 5423:D3,392|3b650c7305ff552ccd01a8017557ff308b4004e8e8ffffff89c7578b7c24048b3783fe07751889ff8b4704bb7c8a66b1e897d1feff89c7b801000000eb478b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089ff8938eb06b801000000c38b3c2489fb83ff0175058d642408c389db8d642408e917010000f7c7010000000f85f10000008b17ff7704f6c2010f85d50000008b328b4a0483f90175758b168b4e048b76088b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304c703190000008b75008d76ec3b75087305ff5528cd8f897500c746fc04000000895e0c894e08895604c706030000008b55008d52f43b55087305ff5528cdc1895500c742fc020000008942048932eb428b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc1895500c742fc0200000089420489325e89d089f73b650c7305ff552ccd81e911ffffff8d64240cb8408c66b18b5d04ff23e9e4fefffff4|@11273,1,@612|44,0,@11121 49,1,@5226 56,0,0 91,0,0 102,0,0 129,1,@5424 208,0,12 249,0,1 317,0,3 377,0,@11134 5424:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@611| 5425:D3,2004|8d7c24b03b7d0c7305ff5530cd095383f801750c8d642404b801000000c218008b38ff70048b3789f283fe010f85ee000000ff7704ff7708ff770c8b47108b7c24288b7424248b5424208b4c242c8b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894b1489531089730c897b088b7c2410897b04c7037c072bb1e8ea15feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b342489770c8d6424048b34248977088d6424048b34248977048d642404c70701000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e80bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc2180089d683fa070f85150100008b470489c289d6f6c2010f85e70000008b520483fa017507ba03000000eb05ba0100000083fa030f85ca00000089f78b378b3e8b56048b76088b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701190000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642404893757ff742404ff7424248b7424248b5424208b4c241c8b5c24188b442414894424148b442408895c24188b5c2404894c241c89542420897424248b3c24897c242883c410e9e2fdffff8d6424108b5c24108b7c24208b74240c5756e8ff05000089c7578b3c24e95c02000083fe050f85c70000008b47048b7c241c8b7424188b5424148b4c24208b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894b1489531089730c897b088b7c2404897b04c7030c092bb1e8dc13feff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e81bfdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc21800ff7704ff77088b470c8b7c24248b7424208b54241c8b4c24288b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894b1489531089730c897b088b7c240c897b04c70358092bb1e80f13feff89c68b3e83ff0d0f85a00000008b56048b76088b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089770489178b54241c8b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b3c2489388d642404ff12ff742404ff74240cff74242c8b74242c8b5424288b4c24248b5c24208b44241c8944241c8b442408895c24208b5c2404894c2424895424288974242c8b3c24897c243083c418e9f6fbffff8d64240c8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d642404c70703000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e88ffbffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc21800f7c70100000075108b37ff77048b76088b760ce981020000bf0300000083ff0375148b5c24188b0424e84605000089c7ff342457eb7f8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c70707000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8dafaffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008b7c240489fe83ff01756c8b3c2483ff018d64240475528d642408ff3424ff742408ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b442408895c241c8b5c2404894c242089542424897424288b3c24897c242c83c414e94afaffff8d6424148d642410b8b0a166b18b5d04ff2389f68b3e89f6ff7604f6442404010f854b0100008b54240489d6ff3289f6ff7604ff77048b5f088b7d008d7ff03b7d087305ff5528cd08897d00c747fc03000000c74708010000008b742408897704c707010000006a016a016a016a016a016a016a016a018b54244c8b4424488b74245c57548304240456ff12ff3424ff742408ff7424108b7c24188b74241c8b5424208b4c24248b5c24288b45008d40dc3b45087305ff5528cdce894500c740fc0800000089581c89481889501489701089780c8b3c248978088d6424048b3c248978048d6424048b3c2489388d6424248b5c24388b7c243cff74240857e83704000089c68b5424308b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b74240889378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b3c2489388d642404ff128b7424085a8d642408891424897424043b650c7303ff552ce92afeffff8d642418b8b0a166b18b5d04ff23f7c601000000751b8b16ff76048b0a83f90575098b52048b4c2408eb378d642404eb2abe0300000083fe0375125e89f73b650c7305ff552ccd80e928fdffff8d642404bf01000000e937fdffffbe01000000ebd4f6c10175218b018b59048b40043bd07507ba03000000eb1389d93b650c7305ff552ccdc6ebdaba0100000083fa0375125a89d63b650c7305ff552ccdc0e96affffff8d642404ebb1f40000|@12970,1,@1616|25,0,0 125,0,@5426 130,1,@5117 197,0,0 324,0,1 331,0,0 387,0,12 428,0,1 561,1,@5427 651,0,@5428 656,1,@5117 693,0,2 856,0,@5429 861,1,@5117 1089,0,1 1205,0,1 1222,1,@5430 1270,0,3 1471,0,@11274 1548,0,0 1561,0,0 1717,1,@5431 1836,0,@11274 1881,0,1 1913,0,0 1923,0,0 1947,0,1 1968,0,0 5426:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@613| 5427:D3,304|3b650c7305ff552ccd0953a8010f850e0100008b38ff7004ff37ff77048b5f086a016a016a016a016a016a016a016a018b54242c8b4424348b7c243868008266b1548304240457ff12ff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424248b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d6424048b342489378d642404578b7c24148b74241057568b44240c8b5c2410e80affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f40000|@10030,1,@614|61,0,@11068 294,0,0 5428:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@615| 5429:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@616| 5430:D3,204|3b650c7305ff552ccd0953a8010f85ab0000008b38ff70048b7f04ba030000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b5424088b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008b0c24890e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff128b4424048b5c2408e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10030,1,@617|28,0,1 94,0,0 195,0,0 5431:D3,644|3b650c7305ff552ccd0950538b3c24f7c701000000753b8b178b77048b0a81f9e401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9960100008b3f8b3781fee401c0b0750e8b7f0883ff030f849f000000eb0e8d642408b8483366b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000008b7c2404897804c7001900000068dca166b16a01bbdca166b1e8000200008b7c240c68dca166b16a01ff74240857bbdca166b1e87e0f000089c78b3783fe1975288b47048b7c24108b74240c57568b5c2408e8872d00008d6424048b7c240c8067ffbf83c404c208008d642408b8a44967b18b5d04ff238b3c24f7c701000000753b8b178b77048b0a81f93402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017533ba046d66b18b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c70019000000e86e72fdffeb498b3f8b3781fe3402c0b07542ff7708ba046d66b18b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2408897804c70019000000e82c72fdff8b1424ff128d642404e9a0feffff8d642408b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9e401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781fee401c0b075118b7f0883ff030f851ffeffffe9a9feffff8d642408b8483366b18b5d04ff23f400|@12969,1,@1615|32,0,@4655 83,0,0 93,0,@10769 108,0,@4655 133,0,@9999 175,0,12 180,0,@11276 187,0,@11276 192,1,@5433 201,0,@11276 213,0,@11276 218,1,@5443 249,1,@5460 276,0,@12966 305,0,@4665 356,0,0 366,0,@10820 405,0,12 410,1,@5058 422,0,@4665 432,0,@10820 471,0,12 476,1,@5058 499,0,@9999 525,0,@4655 576,0,0 590,0,@11247 605,0,@4655 633,0,@9999 5432:D3,24|3b650c7305ff552ccd01b8e4a166b18b5d04ff23f4000000|@11281,1,@618|11,0,@11277 5433:D3,288|3b650c7305ff552ccd0989c78b74240483fe017d02eb658b74240481feffffff017f598b44240483c03ebe41000000d1e8d1ee33d2f7f68d14450100000089d18d344d02000000f7de0375003b750872053b75007205ff5528cd8c897500d1e9894efcc646ff418d1495fdffffff83fa017502eb1589d183e908eb0ab8d48e66b18b5d04ff233bca75148b54240483c20ec1ea0383ca01b901000000eb1b89c8d1e8c604060089c883c00289c13b650c7305ff552ccdceebcd3bca72478b4c24088b4424048b55008d52e83b55087305ff5528cdcb895500c742fc0500000089721089420c894a08895a04c7027c0e2bb189d389f88b3c24897c240883c408e9b807feff89c8d1e8c604060089c883c00289c13b650c7305ff552ccdceeb9af4|@11289,1,@628|29,0,16777215 43,0,32 125,0,@11152 152,0,0 237,0,@5434 256,1,@5117 5434:D3,920|3b650c7305ff552ccd0552508b3c248b1789d683fa1f0f858700000089fe89f7ff760489ff8b47088b5c2408e85707feff89c7578b5c240c8b7b0489db8b730889db8b530c89db8b4b10575652518b442414e85503000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642410897704c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c389ff89f283fe190f856e01000089ff8b7f048d6424048b07ff7704ff770cff7710ff7718ff771cbe010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000408937578b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b3424897704c70714192bb18b5d008d5be43b5d087305ff5528cd81895d00c743fc060000008b7424108973148b7424188b560c89531089f68b561089530c89f68b560889530889f68b7604897304c70344192bb1ba3ca366b157ff74240cff1289c78b34248b368d64240483fe037507babc3a66b1eb05ba010000008b75008d76dc3b75087305ff5528cd84897500c746fc080000008b0c24894e1c8d6424048b0c24894e188d642404c74614030000008b0c24894e108d6424048b0c24894e0c8d6424048956088b14248956048d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c389ff89d683fa0f0f858800000089fe8b460489f689f7ff760889ffff770c8b7c24048b3f83ff1175628b5c240ce87409000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8d6424048b14248957088d642404897704c7070f0000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408c38d642410b801000000c389ff83fe110f85cf00000089ff8b7f048b3789f283fe017505e98900000089d683fa03750e8b47048b7c24048b5704ff12eb7483fe0775108b7c24048b5708b801000000ff12eb5f8b4f0483f9017d068d642408eb7a8b7c24048b770c3bce7d6b89cec1ee0383ce0189ff8b5f1089da89f0d1e80fb61c038d1c5d0100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c9010bcb89d7d1e9d1ee880c378b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c404c38d642408b8008f66b18b5d04ff238d642408b801000000c3f4|@11288,1,@627|45,1,@5117 83,1,@5435 130,0,15 203,0,0 270,0,@5440 343,0,@5441 348,0,@11284 376,0,@10090 383,0,0 436,0,1 506,0,12 588,1,@5442 645,0,7 686,0,0 755,0,0 827,0,0 900,0,@11154 914,0,0 5435:D3,768|3b650c7305ff552ccd0953a8010f85dd0200008b388b40048b3789f283fe010f8599000000ff7708ff770cff77108b7c24208b74241c8b5424188b4c2414575652518b5c241ce8b5ffffff89c7578b4424048b5c2410e88103feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74240889770c8b74240c897708c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424148938c2100089d683fa05757eff77048b7c24188b7424148b5424108b4c240c575652518b5c2414e81bffffff89c7578b4424048b5c2408e8e702feff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d64240c8938c2100083fe070f859b000000ff77048b7c24188b7424148b5424108b4c240c575652518b5c2414e894feffff89c7578b5c241c8b7c24188b7424148b5424105756528b442410e8890100008b5c24148b7c241057e84f04000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d64240c8938c21000ff7708ff770c8b7c241c8b7424188b5424148b4c2410575652518b5c2418e8f6fdffff89c7578b4424048b5c240ce8c201feff89c38b74240889f783fe017d098d642410e9b60000008b74241889ff89f93bfe0f8da200000089cec1ee0383ce018b7c2414d1ee0fb63c378d3c7d0100000089c989ca83e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff017407bebc3a66b1eb05be010000008b7d008d7fec3b7d087305ff5528cd4c897d00c747fc04000000895f0c89d2895708897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d642404893883c40cc210008d642410b844a366b18b5d04ff238d642404b801000000c21000f4000000|@11287,1,@623|87,1,@5117 139,0,0 145,0,0 241,1,@5117 278,0,2 391,1,@5436 405,1,@5439 442,0,3 534,1,@5117 614,0,0 640,0,@10090 647,0,0 690,0,1 743,0,@11285 757,0,0 5436:D3,404|3b650c7305ff552ccd0953a8010f85740100008b38ff7004ff77048b7f08ff37ff7704ff770cff7710ff7718ff771cbe010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707e4162bb18b7424348b54242c8b4c24308b5d008d5be43b5d087305ff5528cdc6895d00c743fc060000008b442410894314894b1089530c8973088b742424897304c70314172bb1ba3ca366b157ff74240c8b442420ff1289c75e8b3683fe037507babc3a66b1eb05ba010000008b75008d76dc3b75087305ff5528cd84897500c746fc0800000059894e1c59894e18c746140300000059894e1059894e0c8956085a895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742404897704c70701000000578b7c24208b74241c8b5424185756528b4424188b5c241ce8a1feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c410c20c008d642404b801000000c20c00f4|@10030,1,@621|48,0,0 113,0,@5437 180,0,@5438 185,0,@11284 211,0,@10090 218,0,0 259,0,1 318,0,0 396,0,0 5437:D3,28|3b650c7305ff552ccd058b7a04c70703000000b801000000c3f40000|@11282,1,@619|15,0,1 20,0,0 5438:D3,232|3b650c7305ff552ccd058b7a14f7c7010000000f85c40000008b0f8b770483f8010f859200000089cf8b3789f183fe017506b801000000c389ce83f90375088b47048b5204ff2283fe07750a8b5208b801000000ff228b4f0483f9017d02eb4f8b7a103bcf7d4889cec1ee0383ce018b5a0c89df89f0d1e80fb61c038d1c5d0100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c9010bcbd1e9d1ee880c37b801000000c3b8008f66b18b5d04ff2389c183e902710ab8f80466b18b5d04ff2389c889f73b650c7305ff552ccd85e930ffffffb8643c66b18b5d04ff23f4|@11283,1,@620|51,0,0 80,0,0 140,0,0 170,0,0 176,0,@11154 193,0,@9455 222,0,@10105 5439:D3,240|3b650c7305ff552ccd09a8010f85d40000008b38ff70048b57048b470883fa017d098d642404e9b10000003bd30f8da500000089d6c1ee0383ce018b7c2408d1ee0fb63c378d3c7d0100000089d183e10f83f93f7207be01000000eb0c33f683c602d1e9d3e683ce0123fe83ff017407bebc3a66b1eb05be010000008b7d008d7ff03b7d087305ff5528cd4d897d00c747fc030000008947088957048937578b7c240c578b442408e853ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c204008d642404b844a366b18b5d04ff23b801000000c20400f400|@10030,1,@622|87,0,0 113,0,@10090 120,0,0 221,0,@11285 231,0,0 5440:D3,28|3b650c7305ff552ccd058b7a04c70703000000b801000000c3f40000|@11282,1,@624|15,0,1 20,0,0 5441:D3,232|3b650c7305ff552ccd058b7a14f7c7010000000f85c40000008b0f8b770483f8010f859200000089cf8b3789f183fe017506b801000000c389ce83f90375088b47048b5204ff2283fe07750a8b5208b801000000ff228b4f0483f9017d02eb4f8b7a103bcf7d4889cec1ee0383ce018b5a0c89df89f0d1e80fb61c038d1c5d0100000083e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c9010bcbd1e9d1ee880c37b801000000c3b8008f66b18b5d04ff2389c183e902710ab8f80466b18b5d04ff2389c889f73b650c7305ff552ccd85e930ffffffb8643c66b18b5d04ff23f4|@11283,1,@625|51,0,0 80,0,0 140,0,0 170,0,0 176,0,@11154 193,0,@9455 222,0,@10105 5442:D3,140|3b650c7305ff552ccd0953a80175728b38ff70048b07ff77048b5c2408e8a2fbfdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4|@10030,1,@626|30,1,@5117 134,0,0 5443:D3,200|3b650c7305ff552ccd0989de508b7c241083ff017d098d642404e99e0000008b7c241081ffffffff010f8d8a0000008b7c241089f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab8b7c24148b4c24088b44240c8b5d008d5be03b5d087305ff5528cdc7895d00c743fc07000000894318894b14c743101ca466b189530c897b08897304c703bc1b2bb1588b3c24897c241083c410e96bfafdff8d642404b8383066b18b5d04ff23f4|@12965,1,@1614|37,0,16777215 97,0,0 150,0,@11290 165,0,@5444 181,1,@5117 190,0,@9964 5444:D3,1780|3b650c7305ff552ccd05528b3089f783fe1f0f85a3000000ff7004ff70088b7c2408ff77048b7c240c8b7f088b74240c8b760c8b54240c8b52108b4c240c8b49148b5c240c8b5b18ff342457565251538b4424208b5c2424e8ab06000089c78d642404578b4424048b5c240ce8d7f9fdff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e8d64240c897704c7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c389fe83ff190f851f0100008b78046a016a016a016a016a016a016a016a01ff37ff7704ff7708ff770cff7710ff7714ff7718ff771c8b7c24408b7f048b7424408b76088b5424408b520c8b4c24408b49108b5c24408b5b148b4424408b4018ff742414ff742414ff742414ff742414ff742414ff74241454830424385756525153508b4424508b5c244ce88ad90a008d642420ff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c5f897e085f897e045f8d642424893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c389f783fe110f858a0100008b70046a016a018b3e89fa83ff0175338b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000e9e400000089d783fa03751f8b46048b7c24088b5704ff1289c78b378934248b7f04897c2404e9be00000083ff0775208b7c24088b5708b801000000ff1289c7c70424008266b1897c2404e9990000008b56048b7c24088b7f0c8b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8783266b18b5d04ff238b7c24088b7f0c8b7c57fe83ff0175308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000eb318b3f8b178b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70601000000893424897c24045f5e8b1783fa03754c8d64240483fe0175478b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b8e44867b18b5d04ff2383ff0f0f8566030000ff70048b7808ff700c8b1789d683fa190f85470100008b7f048b770883fe010f852e0100008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c240c8b47048b7c240c8b7f088b74240c8b760c8b54240c8b52108b4c240c8b49148b5c240c8b5b18575652515389c38b442414e8b308000089c78d642404f7c7010000000f858d0000008b3fff37ff77048b44240c8b5c2410e8b1da0a0089c7578b442404e845db0a0089c383fb0175065e83c404eb0e8b0424e8d4db0a0089c68d6424088b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c5a8d642404895708897704c7070f0000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408c38d64240cb8648e66b18b5d04ff238d64240cb801000000c383fe110f85f60100008b77046a016a018b3e89fa83ff0175338b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000e9e400000089d783fa03751f8b46048b7c24108b5704ff1289c78b378934248b7f04897c2404e9be00000083ff0775208b7c24108b5708b801000000ff1289c7c70424008266b1897c2404e9990000008b56048b7c24108b7f0c8b7ffcc1e708c1ef0783cf013bd7720e8d642414b8783266b18b5d04ff238b7c24108b7f0c8b7c57fe83ff0175308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000eb318b3f8b178b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70601000000893424897c24045e5f6a016a018b1683fa03752f8b56048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70611000000893424897c2404eb0a8b7604893424897c2404ff3424ff7424088b4424148b5c2418e83eda0a0089c7578b442404e8d2da0a0089c383fb0175065e83c404eb0e8b0424e861db0a0089c68d6424088b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240c89570c5a895708897704c7070f0000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c414c38d64240cb801000000c38d642404b801000000c3f4|@12964,1,@1613|89,1,@5445 109,1,@5117 154,0,15 326,1,@6418 452,0,12 543,0,1 554,0,0 614,0,0 625,0,@11068 669,0,@9988 725,0,1 736,0,0 780,0,0 843,0,8 881,0,@12961 965,0,0 1000,0,0 1061,1,@5446 1099,1,@6423 1111,1,@6424 1132,1,@6425 1188,0,7 1229,0,@11149 1243,0,0 1304,0,1 1315,0,0 1375,0,0 1386,0,@11068 1430,0,@9988 1486,0,1 1497,0,0 1541,0,0 1599,0,8 1638,1,@6426 1650,1,@6427 1671,1,@6428 1723,0,7 1764,0,0 1774,0,0 5445:D3,1472|3b650c7305ff552ccd0953a8010f85850300008b30ff70048b3e89fa83ff010f85a9000000ff7608ff760c8b46108b5c240ce809f3fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b342489770c8d6424048b34248977088d642404c7470401000000c70701000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e85dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc2180089d783fa050f85880000008b46048b5c2404e85bf2fdff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8cafeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc2180083ff077510ff76048b3424bf03000000e92e0200008b7e04ff76088b460c83ff010f857a0100008b3883ff190f856d0100008b700489f78b760883fe017507be03000000eb05be0100000083fe030f854b0100008b55008d52f83b55087305ff5528cd80895500c742fc010000008b342489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b4424288b7c24248b7424208b54241c8b4c24188b5c2414575652515389c38b442414e89503000089c78d642404f7c7010000000f85a10000008b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74241c8b4efcc1e108c1e90783c9018b342489f23bf1720e8d64240cb8003566b18b5d04ff238b74241c89d2897c56fe8d642404ff3424ff742408ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b442408895c241c8b5c2404894c242089542424897424288b3c24897c242c83c414e912fdffff8d6424148d64240cb8648e66b18b5d04ff23eb008b5c2408e835f0fdff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c7470401000000c70703000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e893fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f7c60100000075468b0e8b56048b1983fb0175258b49088b490883f901751383ff037507b903000000eb05b901000000eb05b901000000eb05b90100000089cf89d63b650c7305ff552ccdc0ebb283ff03753a8b0424e899cd0a00ff7424248b7c24248b7424208b54241c8b4c24188b5c241457565251538b5c2414e8af01000089c78d6424045ee9a80000008b4424248b7c24208b74241c8b5424188b4c24148b5c2410575652515389c38b442414e8dfcd0a0089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e852fbffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc2180083ff01756183fe01754eff3424ff742408ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b442408895c241c8b5c2404894c242089542424897424288b3c24897c242c83c414e9d3faffff8d6424148d642408b8b0a166b18b5d04ff238b1fff7704f7c60100000075628b168b4e048b42048b55008d52f83b55087305ff5528cdcb895500c742fc01000000891a8b5c241c8b5bfcc1e308c1eb0783cb013bc3720e8d64240cb8003566b18b5d04ff238b5c241c895443fe5a89ce89d73b650c7305ff552ccdc0e92bffffff8d64240cb8b0a166b18b5d04ff23f4000000|@12960,1,@1606|51,1,@5117 109,0,0 115,0,0 225,1,@5117 262,0,2 365,0,1 417,0,1 424,0,0 528,0,0 571,1,@5446 653,0,@10015 759,0,@11149 775,1,@5117 823,0,0 829,0,1 925,0,0 969,0,1 976,0,0 983,0,0 990,0,0 1019,1,@6416 1057,1,@5446 1109,1,@6417 1150,0,3 1334,0,@11274 1417,0,@10015 1459,0,@11274 5446:D3,1308|3b650c7305ff552ccd095053be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b442408e8f904000089c757ff74240cf604240175158b34248b3e89f6ff76048b3f8b7f0c57e9db0200008d6424048b7c24048b37bf01000000f7c60100000075368b0e8b56048b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc2578b0424e8ed04000089c757b8010000008b7c2404f7c70100000075288b570489c683c602710e8d642418b8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd08b7c242c8b7424288b5424248b4c24208b5c241cff742408ff7424145756ff74241c525153ff74242089c38b442438e8d504000089c7578b442418e8310e000089c6bf01000000f7c601000000751d8b0e8b56043bcf7e02eb0289f989cf89d63b650c7305ff552ccdc1ebdb57e86f0e000089c78b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8d21bfdff89c6eb008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c7071f000000ba030000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b74240483c602710e8d642424b8f80466b18b5d04ff238b45008d40dc3b45087305ff5528cdc0894500c740fc08000000c7401c03000000897018c7401403000000c74010305c66b1c7400c01000000c7400801000000c74004e0a566b189388b5c24288b7c242cff342457e89e0d000089c7578b542404b801000000ff1289c78b75008d76f03b75087305ff5528cd80897500c746fc030000008b14248956088d642408897e04c7060d0000008b44241c8b54240cbb0100000089542430897424348b7c2420897c242c83c42ce950c70a00f6042401751f8b3c248b3789ffff77048b3e83ff05750c8b7e048b542410e991010000eb158d6424045e8934243b650c7303ff552ce9d0fcffff6a016a018b3e89fa83ff0175338b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000e9d800000089d783fa03751c8b46048b542420ff1289c78b378934248b7f04897c2404e9b500000083ff07751d8b54243cb801000000ff1289c7c70424008266b1897c2404e9930000008b56048b7c24388b7ffcc1e708c1ef0783cf013bd7720e8d642428b8783266b18b5d04ff238b7c24388b7c57fe83ff0175308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000eb318b3f8b178b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70601000000893424897c24048b3c24ff7424048b3783fe017502eb318b47048b5c2420e81265feff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b04248b5c2420e875c60a008d64240c5e8934243b650c7303ff552ce94cfefffff6c201751e8b1a8b4a043bdf7507bf03000000eb1389ca3b650c7305ff552ccdc4ebddbf0100000083ff030f8555feffffebbcf4|@12954,1,@1598|13,0,0 51,1,@5447 100,0,0 171,1,@5448 179,0,0 210,0,@9455 283,1,@5449 295,1,@5458 302,0,0 345,1,@5459 386,0,3 419,0,0 455,0,0 464,0,20 503,0,0 510,0,1 522,1,@4980 571,0,15 576,0,1 623,0,@9455 661,0,1 671,0,1 678,0,@10565 685,0,0 692,0,0 699,0,@11299 718,1,@5460 730,0,0 779,0,6 792,0,0 816,1,@6414 922,0,1 933,0,0 987,0,0 998,0,@11068 1039,0,@9988 1092,0,1 1103,0,0 1147,0,0 1182,1,@5181 1219,0,1 1231,1,@6415 1271,0,1 1292,0,0 5447:D3,88|3b650c7305ff552ccd01a80175428b388b40048b7f0483ff017505e9e0ffffffff37e8d9ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@11291,1,@629|81,0,0 5448:D3,68|3b650c7305ff552ccd01a801752e8b4004e8eaffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3b801000000c3f400|@10030,1,@630|55,0,@10071 61,0,0 5449:D3,280|3b650c7305ff552ccd0953a8010f85f80000008b38ff70046a016a016a01ff37ff7704ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242c5483042414ff742428ff742410ff742410ff7424105756525153508b44243c8b5c2438e8bd0000008d6424145e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704893757ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e824ffffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc224008d642404b801000000c22400f4|@10030,1,@639|107,1,@5450 272,0,0 5450:D3,556|3b650c7305ff552ccd0953ff30ff7004ff700cff7010ff7018ff701cbf010000008b742408f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c244883ff017d0e8d642420b8a84566b18b5d04ff238b5c2448ff3424b801000000e8c201000089c757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757ff74244c8b7c244c8b7424488b5424448b4c24408b5d008d5bd43b5d087305ff5528cdc6895d00c743fc0a0000008b44240c894324894b2089531c897318897b148b7c240889fe897b108b7c2404897b0c5f897b088b7c2418897b04c703a4322bb18b7d008d7ff43b7d087305ff5528cd48897d00c747fc0200000089f6897704c7076c372bb18b4c24388b7424308b54243457ff742414565289ca8b442430ff1289c7578b7c24048b37bf01000000f7c60100000075368b0e8b56048b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc2578b7c243483ff0175068b74241ceb0f8b5c24348b44241ce82a06000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc080000008b54241489571c8b542418895718c74714030000008977105e89770cc74708010000008b7424208977045e89378b74242483fe01750b8d642428ba01000000eb078d6424245e8b168b74242cc70601000000895604897e08b801000000c22c00f400|@11298,1,@638|29,0,0 60,0,@9455 100,0,@10224 117,0,0 122,1,@5451 130,0,0 257,0,@5452 294,0,@5456 335,0,0 426,1,@5457 475,0,1 489,0,0 517,0,0 536,0,0 547,0,0 5451:D3,152|3b650c7305ff552ccd093bc37508b801000000c204008b74240483ee0103f0710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707010000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e894ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f4|@10221,1,@631|15,0,0 34,0,@9455 74,0,0 89,0,@9455 5452:D3,120|3b650c7305ff552ccd0589c789d0576a016a01ff7004ff7008ff700c8b78108b70148b50188b481c8b58208b4024ff742408ff742408ff7424085756525153508b4424388d5c2430e83f0000008d64240c5f5e8d6424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@11296,1,@635|73,1,@5453 5453:D3,772|3b650c7305ff552ccd09538b7c2428f7c70100000075468b178b770483f801751789d68b3e83ff05750c8b7e048b542424e95a020000eb3389c283ea02710e8d642404b8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81ebb28d642404b8643c66b18b5d04ff236a016a018b3e89fa83ff0175338b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000e9d800000089d783fa03751c8b46048b542420ff1289c78b378934248b7f04897c2404e9b500000083ff07751d8b54241cb801000000ff1289c7c70424008266b1897c2404e9930000008b56048b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8783266b18b5d04ff238b7c24188b7c57fe83ff0175308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000eb318b3f8b178b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70601000000893424897c24048b3c24ff7424048b3783fe017502eb318b47048b5c2418e87d5dfeff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b5c241c8b442404e8460100008b3c248b3783fe01750889ff8d642410eb7a89ff8b7f048d6424048b3783fe030f858a0000008d64240c8b7f048b74240883ee0103fe710e8d642404b8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70703000000578b5c240ce82c01000089c78b7424048b142489168d642408897e04b801000000c224008d642410b840a466b18b5d04ff23f6c201751e8b1a8b4a043bdf7507bf03000000eb1389ca3b650c7305ff552ccdc4ebddbf0100000083ff030f85aafdffff8b5c242089f0e8505cfeff89c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702030000005e8b7c24188916897e04b801000000c22400f4|@11295,1,@634|68,0,@9455 98,0,@10105 151,0,1 162,0,0 216,0,0 227,0,@11068 268,0,@9988 321,0,1 332,0,0 376,0,0 411,1,@5181 448,0,1 462,1,@5454 527,0,@9455 567,0,0 602,0,1 612,1,@5455 635,0,0 647,0,@11292 671,0,1 692,0,0 712,1,@5181 749,0,1 764,0,0 5454:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e8e15bfeff89c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@632|31,1,@5181 97,0,0 5455:D3,148|3b650c7305ff552ccd09a801757e8b388b40048b3783fe0375688b770489df83ef0103f7710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c7070100000057e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b840a466b18b5d04ff23b801000000c3f400|@10030,1,@633|39,0,@9455 79,0,0 131,0,@11292 141,0,0 5456:D3,16|3b650c7305ff552ccd058b4204c3f400|@11297,1,@636| 5457:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@637| 5458:D3,92|3b650c7305ff552ccd01a80175458b388b40048b7f0483ff017507bf01000000eb028b3f57e8d6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@640|28,0,0 84,0,0 5459:D3,144|3b650c7305ff552ccd01a801757a8b388b40048b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@641|50,0,2 85,0,8 137,0,0 5460:D3,584|3b650c7305ff552ccd0989c7538b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700190000006a016a018b7c24105457bb01000000e818020000ff3424ff7424088b7c2410f7c701000000753b8b178b77048b0a81f9e401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9190100008b3f8b3781fee401c0b0750a8b7f0883ff037475eb0e8d642414b8483366b18b5d04ff238b7c24048b3783fe1b754c89ff8b47048b74241c8b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937baf8b466b1578b5c2414e8bb73000089c78b74241c893e8b7c241c8067ffbf588d642410c208008d642414b8e44267b18b5d04ff238b7c2410f7c701000000753b8b178b77048b0a81f93402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750b8b442404e85f600a00eb218b3f8b3781fe3402c0b0751aff77088b442408e845600a008b1424ff128d642404e919ffffff8d642414b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9e401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781fee401c0b075118b7f0883ff030f8598feffffe9f8feffff8d642414b8483366b18b5d04ff23f40000|@12952,1,@1595|44,0,12 59,0,0 64,1,@5461 96,0,@4655 147,0,0 157,0,@10769 172,0,@4655 193,0,@9999 251,0,@11420 261,1,@5518 294,0,@12899 324,0,@4665 375,0,0 389,1,@6386 401,0,@4665 415,1,@6386 438,0,@9999 464,0,@4655 515,0,0 529,0,@11247 544,0,@4655 572,0,@9999 5461:D3,100|3b650c7305ff552ccd09be010000008b7d008d7ff83b7d087305ff5528cd49897d00c747fc0100004089376a016a018b74240c68f4a566b1535768e4a666b1548304241056bb38a766b1e8a90000005a5f8b7424088916897e04b801000000c20800f400|@11419,1,@698|11,0,0 52,0,@11300 59,0,@11306 70,0,@11308 75,1,@5465 91,0,0 5462:D3,24|3b650c7305ff552ccd01b8fca566b18b5d04ff23f4000000|@11305,1,@642|11,0,@11301 5463:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@11307,1,@643|11,0,0 5464:D3,24|3b650c7305ff552ccd09b8fca566b18b5d04ff23f4000000|@11307,1,@644|11,0,@11301 5465:D3,900|3b650c7305ff552ccd0989df89c3578b7c241883ff017d098d642404e9550300008b7c241881ffffffff010f8d410300008b7c241889f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241c83ff017d098d642408e9ec0200008b7c241c81ffffffff010f8dd80200008b7c241c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c242083ff017d098d64240ce9830200008b7c242081ffffffff010f8d6f0200008b7c242089f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b3b89fe83ff0d7553ff7308b940a766b18b4424248b7c242c8b7424208b542418ff74240cff74240cff74240cff74241c57566808b466b15287c389cae83602000089c78b74241c893e8b3c24897e048d642414b801000000c2180089f783fe1f7568ff7308b940a766b18b4424248b7c242c8b7424208b542418ff74240cff74240cff74240cff74241c57566808b466b15287c389cae8dc01000089c7578b7c241c578b4424088b5c240ce88f6d000089c78b7424208b142489168d642418897e04b801000000c2180083ff190f85110100008b53046a016a016a016a01ff32ff7204ff7208ff720cff72108b7a148b72188b521c8b4c244c8b5c24408b442438ff742408ff742408ff742408575652548304242cff74244c5153ff742454ff7424506808b466b1508b4424488b5c2444e88d2c00008d6424148b04248b5c2404ff74240c8b7c243c8b7424306a03ff7424245756ff74242cff74242ce87534000089c2f6042401740b8d642424bf01000000eb5e8b7c24288b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008b0c24894e088d642404c74604640f66b1893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c7470401000000893783c4208b7424088916897e04b801000000c21800b940a766b18b4424208b7c24288b74241c8b542414ff742408ff742408ff742408ff74241857566808b466b15287c389cae85d00000089c68d6424108b7c24088937c7470401000000b801000000c218008d64240cb8383066b18b5d04ff238d642408b8383066b18b5d04ff238d642404b8383066b18b5d04ff23f4000000|@11418,1,@697|39,0,16777215 99,0,0 130,0,16777215 190,0,0 221,0,16777215 281,0,0 301,0,@11309 340,0,@11415 350,1,@5466 373,0,0 391,0,@11309 430,0,@11415 440,1,@5466 461,1,@5516 484,0,0 581,0,@11415 595,1,@5482 639,1,@5489 656,0,0 695,0,0 712,0,@9574 747,0,0 766,0,0 774,0,@11309 813,0,@11415 823,1,@5466 842,0,0 847,0,0 859,0,@9964 873,0,@9964 887,0,@9964 5466:D3,7192|8d7c24b03b7d0c7305ff5530cd0d52538b38bef43f2bb181c6230000008d74befcffe6e9ab000000909090e9be010000909090e96a050000909090e948060000909090e911070000909090e997090000909090e9f6090000909090e9210a0000909090e93f0f0000909090e953100000909090e957100000909090e9ce110000909090e943120000909090e908130000909090e92e140000909090e994140000909090e93c150000909090e9a6150000909090e96c160000909090e9e3170000909090e963180000909090e9c9180000909090ff7004ff7008ff700cff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b44242c8b5c2438e8e1feffff89c78d64241057ff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424348b5c2438e897feffff89c78d64240c57ff742414ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c243ce84dfeffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978085f8d642414897804c70001000000c220008b7804ff37ff7704ff770cff77108b7f088b3783fe010f8583010000ff7704ff742418ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff742404ff7424045756525153508b5424288b44243c8b5c2440e8b0fdffff89c78d64240c57ff74241cff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742404ff7424045756525153508b5424288b44243c8b5c2444e866fdffff89c78d64240c57ff742420ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742404ff7424045756525153508b5424288b44243c8b5c2448e81cfdffff89c78d64240c57ff742424ff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742404ff7424045756525153508b5424288b44243c8b5c244ce8d2fcffff89c68d64240c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977105e89770c8b7424088977085e8977045e8d64241c89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c22000ff7704ff742418ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff742404ff7424045756525153508b5424288b44243c8b5c2440e82dfcffff89c78d64240c57ff74241cff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742404ff7424045756525153508b5424288b44243c8b5c2444e8e3fbffff89c78d64240c57ff742420ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742404ff7424045756525153508b5424288b44243c8b5c2448e899fbffff89c78d64240c57ff742424ff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742404ff7424045756525153508b5424288b44243c8b5c244ce84ffbffff89c78d64240c8b55008d52f03b55087305ff5528cd80895500c742fc03000000c74208030000008b74240c897204c702130000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c8b5424048956088b542408895604c706070000008b4d008d49f03b4d087305ff5528cdc0894d00c741fc03000000c74108030000008b54240c895104c701130000008b55008d52ec3b55087305ff5528cdc2895500c742fc04000000894a0cc7420858a766b1598d642424894a04c702070000008b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c7000d000000c22000ff7004ff70088b7c24308b74242c8b5424285756528b44240c8b5c2414e86816000089c757ff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424348b5c2438e8f6f9ffff89c78d64240c57ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74241cff74241cff74240cff74240c5756525153508b4424388b5c2434e8f416000089c78d6424088b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f8d642414897804c70005000000c22000ff7004ff7008ff700cff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424348b5c2438e82cf9ffff89c78d64240c57ff742414ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c243ce8e2f8ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978085f8d642414897804c70007000000c22000ff7004ff7008ff700c8b7810ff37ff7704ff7708ff74241cff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742404ff7424045756525153508b5424288b4424348b5c2444e850f8ffff89c78d64240c578b7c240883ff017507be01000000eb6b8b7c2408ff37ff742424ff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742404ff7424045756525153508b5424288b44242c8b5c244ce8f0f7ffff89c78d6424108b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088977045e8d6424048937578b7c240cff378b7c2410ff77048b7c2414ff7708ff742428ff742450ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b44243cff742404ff7424045756525153508b5424288b4424348b5c2450e84bf7ffff89c78d64240c578b7c240883ff017507be01000000eb6b8b7c2408ff37ff742430ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444ff742404ff7424045756525153508b5424288b44242c8b5c2458e8ebf6ffff89c78d6424108b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088977045e8d642404893757ff742428ff742450ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b44243cff742404ff7424045756525153508b5424288b4424488b5c2450e85af6ffff89c78d64240c8b45008d40e83b45087305ff5528cd80894500c740fc050000008b74240c8970105e89700c8978088b7c241c897804c7000900000083c428c22000ff7004ff7008ff700c8b7c2410ff7704ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74241cff74240cff74240c5756525153508b5424308b44243c8b5c2438ff128d6424208b3c24897c242083c420e9521400008d6424088b78048b70088b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000f000000c22000ff7004ff7008ff700c8b7c24048b3f83ff190f854d0100008b7c2404ff7704ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742418ff742408ff7424085756525153508b4424388b5c2440e8491f000089c78d642408576a016a016a016a018b7c2414ff378b7c2418ff77048b7c241cff77088b7c2420ff770c8b7c2424ff77108b7c2428ff77148b7c242cff77188b7c2430ff771cff7424608b7c24608b74245c8b5424708b4c24688b5c24588b442454ff742418ff742418ff742418ff742418ff742418ff742418548304243cff74241c5756525153508b4424588b5c2454e8d71f00008d642424ff3424ff7424088b7c24108b7424488b5424448b4c24408b5c24548b4424505756525153508b44241c8b5c2418e8b527000089c78d6424188b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c8978085f8d642418897804c70011000000c220008b7c24048b3f83ff0d75168b7c2404ff77048b7c2408ff77088b3c24e9f40e00008b7c24048b3f83ff110f85cd0200008b7c2404ff77048b3c248b3f83ff070f85b70000008d642404ff742428ff7424288b7c24288b74243c8b5424388b4c24348b5c24248b442420ff742404ff742404575652ff74242cff74242c515350b8010000008b5c2438e8d129000089c78d642408578b542428b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707130000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978085f8d642404897804c7001100000083c410c220008b3c248b3f83ff03751d8b3c248b47046a016a018b54243454bb01000000ff128d6424045feb528b3c248b3f83ff077507bf01000000eb418b3c248b3f83ff017507bf01000000eb308b3c248b77048b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642418b8783266b18b5d04ff238b7c24308b7c77fe57ff742430ff7424308b7c24308b7424448b54243c8b4c242c8b5c24288b442440ff742408ff742408ff742408575652515350ff742444ff742444b8010000008b5c2444e8102c000089c78d64240c578b7c24048b3f83ff0375218b7c24048b47046a016a018b54243854bb01000000ff125e8d642404e9b50000008b7c24048b3f83ff0775128b54242cb801000000ff1289c6e9980000008b7c24048b3f83ff0175398b7c2404ff77048b54242c8b0424bb01000000ff128b75008d76f43b75087303ff5528897500c746fc020000005f897e04c70601000000eb548b7c24048b77048b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d64241cb8783266b18b5d04ff238b7c24388b7c77fe8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707130000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c8978085f897804c7001100000083c418c22000ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742414ff742408ff7424085756525153508b4424348b5c243ce8ba2f000089c78d64240857ff742414ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c243ce894f0ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978085f8d642414897804c70011000000c220008d6424088b78048b3789f283fe03751d8b47046a016a018b54241c54bb03000000ff125f8d642404e9c900000089d683fa0775128b542410b803000000ff1289c7e9b000000083fe017535ff77048b5424108b0424bb03000000ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000005e897704c70701000000eb768b77048b7c24208b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2420c74477fe030000008b7c241c8b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c241c8b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70013000000c220008d642408b8d8ad66b1c22000ff7004ff70088b700c8b7c2408ff378b7c240c8b3f83c702710e8d642414b8f80466b18b5d04ff238b54240c893a8b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b7c2434c74477fe010000008b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b5424308b3c24897c72fe8b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b7c242cc74477fe01000000ff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424308b5c2438e837eeffff89c78d64240c57ff742414ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424388b5c243ce8ededffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c5e8d642414897008897804c70019000000c22000ff7004ff7008ff74240cff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b5424288b4424308b5c2434e869edffff89c78d64240c8b45008d40f03b45087305ff5528cd80894500c740fc030000005e8d64240c897008897804c70015000000c220008d6424088b78046a016a016a016a01ff37ff7704ff7708ff770cff7710ff7714ff7718ff771cff7424448b7c24448b7424408b5424548b4c244c8b5c243c8b442438ff742418ff742418ff742418ff742418ff742418ff742418548304243cff74241c5756525153508b4424588b5c2454e80b1800008d6424245e5f8d64240856578b74241c8b5424188b4c24148b5c24288b442424894424148b442404895c24188b1c24894c241c8954242089742424c7442428030000008b7c2408897c241083c410e9cc1f00008d642408ff70048b7808ff37ff7704ff7708ff742414ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c243ce817ecffff89c78d64240c578b7c240883ff017507be01000000eb6b8b7c2408ff37ff74241cff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742404ff7424045756525153508b5424288b44242c8b5c2444e8b7ebffff89c78d6424108b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088977045e8d64240489378b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c2408897804c7001d00000083c414c22000ff7004ff74242cff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff74240cff742408ff7424085756525153508b44242c8b5c2434e8f82a000089c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001f000000c220008b78048b50088b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb017502eb0989f8e8962b000089c757ff74242cff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff742404ff74240457ff74241c56525153508b44242c8b5c2430e8b82b000089c78d6424146a016a01be01000000e932040000ff7004ff742408ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742404ff7424045756525153508b5424288b44242c8b5c2430e8d6e9ffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70023000000c22000ff7004ff7008ff700cff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b44242c8b5c2438e85ee9ffff89c78d64241057ff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424348b5c2438e814e9ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c5e8d64240c897008897804c70025000000c22000ff7004ff70088b780cff37ff7704ff7708ff742418ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff742404ff7424045756525153508b5424288b4424348b5c2440e888e8ffff89c78d64240c578b7c240883ff017507be01000000eb6b8b7c2408ff37ff742420ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742404ff7424045756525153508b5424288b44242c8b5c2448e828e8ffff89c78d6424108b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088977045e8d642404893757ff742418ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff742404ff7424045756525153508b5424288b4424388b5c2440e897e7ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c8978088b7c240c897804c7002700000083c418c22000ff7004ff7008ff700cff742410ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b5424288b4424308b5c2438e811e7ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c8978085f8d642408897804c70029000000c22000ff7004ff74242cff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff74240cff742408ff7424085756525153508b44242c8b5c2434e80b3b000089c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7002b000000c22000ff7004ff7008ff74240cff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b5424288b4424308b5c2434e81ee6ffff89c78d64240c8b45008d40f03b45087305ff5528cd80894500c740fc030000005e8d64240c897008897804c7002d000000c22000f7c701000000755a8b1f8b570483fa0175218b3b83ff05750c8b7b0489f2be01000000eb4b8d642408b8fcae66b18b5d04ff238b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0eb9e8d642408b860af66b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7893424897c24045f5e83ff01750589f0c220008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70021000000c22000f7c701000000753b8b178b77048b0a8b5c24203bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf01000000f7c701000000751f8b3f8b378b5424203bf275058b7f08eb138d64241cb8483366b18b5d04ff23bf0100000057ff742434ff7424348b7c24348b7424488b5424408b4c24308b5c242c8b442444ff742408ff742408ff742408575652515350ff742448ff742448b8010000008b5c2448e8b439000089c78d64240c8b75008d76f03b75087305ff5528cd80897500c746fc030000005a8956085a895604c7060f0000008b45008d40ec3b45087305ff5528cdc0894500c740fc040000005a89500c897008897804c7001100000083c410c22000f400|@11363,1,@688|19,0,@5466 487,0,0 902,0,1 1236,0,1 1249,0,9 1298,0,3 1331,0,1 1344,0,9 1380,0,@11311 1394,0,3 1435,0,6 1472,1,@5467 1616,1,@5468 1665,0,2 1874,0,3 1985,0,0 2246,0,0 2525,0,4 2634,1,@5469 2682,0,7 2779,1,@5481 2929,1,@5482 2983,1,@5489 3039,0,8 3174,0,0 3183,1,@5491 3199,0,0 3238,0,9 3288,0,8 3324,0,0 3348,0,0 3365,0,0 3402,0,@9988 3479,0,0 3488,1,@5492 3527,0,0 3559,0,0 3598,0,0 3634,0,0 3672,0,@9988 3720,0,2 3755,0,9 3801,0,8 3870,1,@5493 4000,0,8 4036,0,1 4064,0,1 4093,0,1 4129,0,0 4159,0,@10015 4176,0,1 4201,0,@9988 4249,0,2 4284,0,9 4296,0,@11351 4334,0,@9455 4374,0,@10015 4391,0,0 4420,0,@10015 4465,0,@10015 4482,0,0 4679,0,12 4804,0,10 4925,1,@5482 4992,0,1 5008,1,@5489 5114,0,0 5308,0,14 5380,1,@5494 5421,0,15 5465,0,2 5498,0,0 5514,1,@5495 5580,1,@5496 5595,0,0 5711,0,17 5917,0,18 6025,0,0 6297,0,19 6436,0,20 6505,1,@5508 6546,0,21 6671,0,22 6709,0,0 6720,0,@11357 6781,0,@11360 6900,0,16 6975,0,0 7009,0,@9999 7019,0,0 7083,0,0 7092,1,@5509 7138,0,7 7180,0,8 5467:D3,264|3b650c7305ff552ccd09a8010f85eb0000008b388b40048b3f8b7704ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893b8b7c24108b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b7c2410c74477fe010000008b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b54240c8b3c24897c72fe8b7c24088b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b7c2408c74477fe010000008b7c24108b74240c8b542408575652e82effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20c00b801000000c20c00f40000|@10030,1,@645|42,0,@9455 78,0,@10015 95,0,0 124,0,@10015 169,0,@10015 186,0,0 254,0,0 5468:D3,324|3b650c7305ff552ccd09a8010f8529010000f6c3010f85200100008b38ff7004ff33ff73048b37ff7608ff7704ff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c78d6424108b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c240c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642408893757ff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c5756525153508b4424448b5c243ce8f4feffff89c78d6424108b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c22800b801000000c22800f4|@11120,1,@646|316,0,0 5469:D3,992|3b650c7305ff552ccd018b3883ff0375048b4004c3ff7004ff7008ff700cff7010f6042401750ebf010000008b742408e961030000f64424080175308b7424088b3e8b57048b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489176a016a0189f6eb0e8d642410b8648e66b18b5d04ff23f7c601000000754c8b0e8b56048b49048b1f8b47043bcb730489cbeb003bc8760489c8eb008b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989cf89d63b650c7305ff552ccdc0ebac8b378934248b7f04897c24045e58bf010000008b542408f6c20175288b5a0489f983c102710e8d642410b8f80466b18b5d04ff2389da89cf3b650c7305ff552ccdc5ebd383ff0f7e2b2bc683c001be07000000d1e8d1ee33d2f7f68d3445010000003bfe7207bf03000000eb05bf01000000eb05bf0100000083ff03750bbb010000008b7c2408eb1c8b4424085b8b7424085a8d64240852ff74240489742408e981020000f7c70100000075288b570489de83c602710e8d642410b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642410b8a84566b18b5d04ff23b801000000e84803000089c3bad0a766b18b442408e8b0030000bb10a866b1e84a050000e829070000e88407000089c36a016a016a01f644240c01751e8b7c240c8b3fc7042403000000c744240401000000897c2408e9b1000000f6c301752c8b3b8b77048b7d008d7ff43b7d087305ff5528cd48897d00c747fc0200000089770489376a016a0189deeb0e8d64241cb8648e66b18b5d04ff23f7c601000000754d8b16ff76048b4a048b178b47043bca730489caeb003bc8760489c8eb008b4d008d49f43b4d087305ff5528cdcd894d00c741fc0200000089410489115a89cf89d63b650c7305ff552ccdc8ebab8b378934248b7f04897c24045e5fc704240100000089742404897c2408ff3424ff742408ff742410ff3424ff742408b801000000e88207000089c6bf0100000089f2f6c20175288b5a0489f983c102710e8d642428b8f80466b18b5d04ff2389da89cf3b650c7305ff552ccdc4ebd38b14242b5424048d64240483c2033bfa75628b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b5424048957108b142489570c8d6424088b5424108957088977048b74241889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000b00000083c41cc38d642424b8e4a966b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ff097e07bf03000000eb05bf01000000e96bfdfffff4000000|@11326,1,@658|40,0,0 113,0,@11149 221,0,0 249,0,@9455 285,0,3 309,0,1 316,0,0 323,0,0 333,0,0 367,1,@5470 394,0,@9455 429,0,@10224 439,0,0 444,1,@5471 451,0,@11313 460,1,@5472 465,0,@11316 470,1,@5475 475,1,@5478 480,1,@5479 508,0,1 516,0,0 583,0,@11149 694,0,0 725,0,0 730,1,@5480 737,0,0 763,0,@9455 896,0,5 909,0,@11323 941,0,@9455 972,0,1 979,0,0 5470:D3,256|3b650c7305ff552ccd09a8010f85e60000008b388b4004ff378b7f04f6c30175338b0b8b54240c8b75008d76ec3b75087305ff5528cd8f897500c746fc04000000894e0c895608897e04c7062900000089f7eb5b8b55008d52f03b55087305ff5528cd89895500c742fc03000000c7420801000000897a04c7020f0000008b74240c8b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000c7470c004166b1895708897704c70707000000578b7c24108b74240c5756e841ffffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978088b3c248978048d642408c7000d000000c208008b442404c20800f4|@11312,1,@647|76,0,20 113,0,0 122,0,7 159,0,@10170 171,0,3 241,0,6 5471:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb750a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@648|25,0,0 42,0,@9455 5472:D3,236|3b650c7305ff552ccd0d83f801754483fb017506b801000000c38b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400cdca766b1c7400801000000c740048c9066b18b7a0489388b5d04ff238b308b4004f6c30175538b0b8b5b048b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894f04893757e879ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40ec3b45087305ff5528cd04894500c740fc04000000c7400cdca766b1c7400801000000c740048c9066b18b7a0489388b5d04ff23f40000|@11315,1,@649|21,0,0 55,0,@11314 62,0,0 69,0,@11166 205,0,@11314 212,0,0 219,0,@11166 5473:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7005c652bb1c3f4000000|@11318,1,@651|43,0,@5474 5474:D3,72|3b650c7305ff552ccd058b308b48048b7a0489fb8b3f89da8b52048b7f048b76043bfe75103bd17f06b803000000c3b801000000c33bfe7306b803000000c3b801000000c3f40000|@11317,1,@650|42,0,1 48,0,0 58,0,1 64,0,0 5475:D3,28|3b650c7305ff552ccd09ff3424895c2404bb01000000e915000000f4|@11320,1,@654|18,0,0 23,1,@5476 5476:D3,192|3b650c7305ff552ccd0953a8010f85a6000000ff30ff70048b3c2483ff01752f8d6424048b45008d40f43b45087303ff5528894500c740fc020000008b7c24048978048b3c2489388d642408c204008b5424108b442404ff1289c76a016a01578b44240c8d5c2404e8670000008b0424ff7424048b7c241c578b5c2418e87effffff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b7c2410893b588d6424148b74240489742404e947ffffff58c20400f40000|@11319,1,@653|105,1,@5477 5477:D3,204|3b650c7305ff552ccd0953a8010f85a0000000ff30ff70048b5424108b442404ff1289c7576a016a018b7c241c578b4424108d5c2404e8c5ffffff5a5e8b3c2483ff038d64240875368b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c204005ebf388a66b18b1789168b7f04897e04b801000000c20400f4|@11119,1,@652|120,0,0 172,0,0 181,0,@11118 196,0,0 5478:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@655|68,0,0 5479:D3,228|3b650c7305ff552ccd01a8010f85c9000000ff308b7004f7c6010000000f858f0000008b3e8b76048b4f048b14248b52043bd1753089f0e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e877ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b3c2489388d642404c3b801000000c3f40000|@11321,1,@656|205,0,0 220,0,0 5480:D3,276|3b650c7305ff552ccd0983fb0175588b7c24088b7424042bfe83c7013bc77608b801000000c2080083c0028b7c24088b7424045756bb01000000e8c1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c208008b3b8b53048b378b4f048b7c24048d7c38ff3bf9755c8b7d008d7ff83b7d087305ff5528cd45897d00c747fc0100000089375783c0028b7c240c8b742408575689d3e852ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c2080083c0028b7c24088b7424045756e815ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c20800f4|@11322,1,@657|33,0,0 54,0,0 96,0,0 268,0,0 5481:D3,272|3b650c7305ff552ccd0953a8010f85ed0000008b38ff7004ff37ff7704ff74240cff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c68d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642408893757ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e82fffffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc224008d642404b801000000c22400f4000000|@10030,1,@659|261,0,0 5482:D3,828|3b650c7305ff552ccd095053be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757ff7424308b7424308b54242c8b4c24248b5c24288b44244c8b7d008d7fd83b7d087305ff5528cd4f897d00c747fc09000000894720895f1c894f188957148977105e89770c8b7424048977088b742408897704c707906e2bb1578b75008d76f43b75087303ff5528897500c746fc020000008b7c2404897e04c706cc712bb1ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917c707acab66b1bf010000008b542448f6c20175288b5a0489f983c102710e8d642418b8f80466b18b5d04ff2389da89cf3b650c7305ff552ccdc4ebd383ff017d098d642418e9d700000081ffffffff010f8dc700000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b805000000f3ab52ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917576a016a018b5c24308b7c24508b55008d52f43b55087305ff5528cdc8895500c742fc020000008b4c240c894a04c7026c722bb18b4c242c5657ff7424105254830424105189da8b44243c8b5c2428ff12ff34248b7c2420ff378b7c24148b77fcc1e608c1ee0783ce01bf01000000eb0e8d642418b8383066b18b5d04ff2383fe010f85a0000000578b442464e86405000089c68b7c24148b178b4c24588b7d008d7fe03b7d087305ff5528cd46897d00c747fc07000000c7471801000000894f1489571089770cc74708010000008b74242c8977048b74240889378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c7021b0000008b7c24208b3f8b74245489168b542404895604897e085f8d642408897e0cb80100000083c428c2380089f183e90289f383eb0289f083e8028b5424148b5442fe83fa0175218b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04891aeb0289fa89ce89d73b650c7305ff552ccdc0e905fffffff4000000|@11348,1,@666|13,0,0 47,0,0 81,0,0 199,0,@5483 237,0,@5485 242,0,0 276,0,@11330 281,0,0 309,0,@9455 350,0,16777215 406,0,2 414,0,0 494,0,@5487 553,0,0 564,0,@9964 588,1,@5488 633,0,0 649,0,0 697,0,13 732,0,0 5483:D3,404|3b650c7305ff552ccd0d528b3c248b7f20f7c7010000000f85650100008b178b770483f8010f852f01000089d7578b3c248b3789f283fe03751d89ff8b47046a016a018b7c240c8b570c54ff128d6424045fe9a400000089ff89d683fa0775158b7c24048b571089d8ff12bf01000000e98600000089ff83fe01751589ff8b47048b7c24048b5714ff12bf01000000eb6a89ff8b770483fb0375338b7c24048b4f1c89ca8b49fcc1e108c1e90783c9013bf1720e8d642408b8003566b18b5d04ff2389d7c74477fe03000000eb008b7c24048b4f1889ca8b49fcc1e108c1e90783c9013bf1720e8d642408b8783266b18b5d04ff2389d78b7c77fe578b7424088b560489d78b0289f68b4e0889ca8b1989d6ff7424045756e88b00000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b742410893e8b3c24897e048d64240cb801000000c2040089c283ea02710e8d642404b8f80466b18b5d04ff2389d089f73b650c7305ff552ccd89e98ffeffff8d642404b8643c66b18b5d04ff23f4000000|@11328,1,@661|108,0,0 139,0,0 185,0,@10015 200,0,1 236,0,@9988 281,1,@5484 318,0,1 339,0,0 358,0,@9455 391,0,@10105 5484:D3,384|3b650c7305ff552ccd09a8010f850f0100008b388b40048b74240c3bfe7505e9bd0000008b1789d683fa0175368b74240c8b3683fe0175268b7f048b74240c8b76043bfe7507bf03000000eb05bf0100000083ff037402eb05e983000000e99200000089f283fe03752e8b74240c8b3683fe0375218b7f048b74240c8b76043bfe7507bf03000000eb05bf0100000083ff037502eb4beb5d89d683fa0575308b74240c8b3683fe0575238b7f048b74240c8b76043bfe7507bf03000000eb05bf0100000083ff037402eb02eb14eb2689f783ff07751f8b7c240c8b3f83ff07751489d883e802710ab8f80466b18b5d04ff23c20c0083eb02710ab8f80466b18b5d04ff238b74240c8b5424088b4c2404894c2404895424088974240ce9dffeffff8b7c24088b178b74240c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742408893e8b7c24048b0783c002710ab8f80466b18b5d04ff238b7c2404890783e802710ab8f80466b18b5d04ff23c20c00f40000|@11327,1,@660|71,0,1 78,0,0 132,0,1 139,0,0 185,0,1 192,0,0 233,0,@9455 251,0,@9455 348,0,@9455 369,0,@9455 5485:D3,36|3b650c7305ff552ccd0583f803750b8b7a04c70703000000eb00b8b43a66b1c3f4000000|@11329,1,@662|20,0,1 27,0,@10089 5486:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8c0ab66b1c389d783fa037d06b8b4ab66b1c383fe037506b830ac66b1c383ff037d06b8b4ab66b1c3b874ac66b1c3f400|@11347,1,@663|21,0,@11331 36,0,@11332 49,0,@11331 60,0,@11339 71,0,@11331 77,0,@11343 5487:D3,116|3b650c7305ff552ccd0d83fb037507bf03000000eb348b720489f78b76fcc1e608c1ee0783ce013bc6720ab8783266b18b5d04ff238b7c47fe83ff037507bf03000000eb05bf010000008b4a0489ce8b49fcc1e108c1e90783c9013bc1720ab8003566b18b5d04ff23897c46feb801000000c3f4|@11307,1,@664|16,0,1 44,0,@9988 63,0,1 70,0,0 96,0,@10015 110,0,0 5488:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@665|68,0,0 5489:D3,316|3b650c7305ff552ccd09538b3883ff1b75428b7804ff37ff7704ff770cff7710ff77148b44242c8b7c24308b7424288b5424248b4c24208b5c241c575652515389c38b442428e80501000089c7be01000000eb078d642404c21800f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b7c243083ff037507ba03000000eb1af7c6010000007407ba03000000eb05ba0100000083f20283f2028b7d008d7fe03b7d087305ff5528cd44897d00c747fc070000008957188b14248957148d6424048b14248957108d6424048b142489570c8d6424048977088b34248977048d6424048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001b00000083c404c21800f4|@11349,1,@668|71,1,@5490 78,0,0 161,0,1 176,0,1 183,0,0 305,0,13 5490:D3,384|3b650c7305ff552ccd0953a8010f855f0100008b38ff70048b3789f283fe03751c8b47046a016a018b54240c8b5c242454ff125f8d642404e9e300000089d683fa0775118b5424188b44241cff1289c7e9cb00000083fe01753dff77048b5424188b5c24208b0424ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c70701000000e9890000008b77048b7c241c83ff0375308b7c24108b7ffcc1e708c1ef0783cf013bf7720e8d642408b8003566b18b5d04ff238b7c2410c74477fe03000000eb008b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c240c8b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b7c24208b74241c8b5424188b4c24148b5c241057565251538b4424188b5c241ce8b9feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc214008d642404b801000000c21400f400|@10030,1,@667|142,0,0 188,0,@10015 205,0,1 236,0,@9988 284,0,2 375,0,0 5491:D3,860|3b650c7305ff552ccd095083fb01750c8d642404b801000000c228008b3bff7304ff378b1789d68b0a83f9110f851e0200008b52048b1283fa017507ba03000000eb05ba0100000083fa030f85ff0100008d6424048b76048b4e0489caff77048b7c24083bf97507bf03000000eb05bf0100000083f7028b0e89cb83f903751989d06a016a018b54243c5489fbff125f8d642404e9d800000089d983fb07750f8b54243089f8ff1289c7e9c200000083f9017539528b54243089fb8b0424ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c70701000000e98400000089d683ff0375308b7c24288b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8003566b18b5d04ff238b7c2428c74477fe03000000eb008b7c24248b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24248b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2440e8e2fdffff89c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22800ff7704ff742424ff742424ff742434ff7424348b7c242c8b7424488b5424448b4c24408b5c24288b442424ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c68d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424088937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2440e8d9fcffff89c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22800f40000|@11350,1,@669|21,0,0 61,0,1 68,0,0 105,0,1 112,0,0 228,0,0 269,0,@10015 286,0,1 317,0,@9988 365,0,2 400,0,9 458,0,@9455 723,0,@9455 5492:D3,1300|3b650c7305ff552ccd095083fb01750c8d642404b801000000c22c008b3bff73048b078b1089d683fa19750f8b7004ff77048b7c2438e93903000083fe11750f8b7004ff77048b7c2438e910010000ff7704ff742414ff742414ff742430ff742424ff7424348b7c24488b7424448b5424408b4c24348b5c2430ff742408ff742408ff74240857565251538b5424308b5c242cff1289c68d6424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e8d3feffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f7c70100000075208b0f8b57043b4c24087507bf03000000eb1389d73b650c7305ff552ccdc0ebd8bf0100000083f7028b1689d183fa03751a8b46046a016a018b54243c5489fbff125f8d642404e9db00000089ca83f907750f8b54243089f8ff1289c7e9c500000083fa01753bff76048b54243089fb8b0424ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c70701000000e9850000008b760483ff0375308b7c24288b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8003566b18b5d04ff238b7c2428c74477fe03000000eb008b7c24188b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24188b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e8befcffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f7c70100000075208b0f8b57043b4c24087507bf03000000eb1389d73b650c7305ff552ccdc0ebd8bf0100000083f702576a016a016a016a01ff36ff7604ff7608ff760cff7610ff7614ff7618ff761cff7424688b7c24688b7424648b5424608b4c245c8b5c24588b442454ff742418ff742418ff742418ff742418ff742418ff742418548304243cff74241c5756525153508b4424588b5c2454e884edffff8d642424ff34248b4424088b7c244c8b7424488b5424448b4c24408b5c2430ff742414575652515389c38b442418e865f5ffff89c68d6424188b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e821fbffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f40000|@11350,1,@670|21,0,0 209,0,@9455 371,0,1 392,0,0 511,0,0 553,0,@10015 570,0,1 601,0,@9988 649,0,2 684,0,9 742,0,@9455 904,0,1 925,0,0 1040,1,@5482 1091,1,@5489 1155,0,@9455 5493:D3,272|3b650c7305ff552ccd0953a8010f85ed0000008b38ff7004ff37ff7704ff74240cff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c68d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642408893757ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e82fffffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc224008d642404b801000000c22400f4000000|@10030,1,@671|261,0,0 5494:D3,272|3b650c7305ff552ccd0953a8010f85ed0000008b38ff7004ff37ff7704ff74240cff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c68d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642408893757ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e82fffffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc224008d642404b801000000c22400f4000000|@10030,1,@672|261,0,0 5495:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@673| 5496:D3,2344|3b650c7305ff552ccd0953a8010f85070900008b38ff70048b3789f283fe010f85de0100008b7708ff770cff77108b7c240cff378b7c24108b3f83c702710e8d642414b8f80466b18b5d04ff238b542410893a8b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b7c2438c74477fe010000008b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b5424348b3c24897c72fe8b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642414b8003566b18b5d04ff238b7c2430c74477fe01000000ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742408ff742408ff7424085756525153508b44243c8b5c2440e8e1feffff89c78d64240c57ff742430ff742440ff7424408b7c24408b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c2440ff1289c68d64240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54240c8957088b542404895704c707010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000598d642414894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c2240089d683fa050f854b010000ff7704ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e8acfdffff89c78d64240c57ff742428ff742438ff7424388b7c24388b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b5424288b4424308b5c2438ff1289c68d64240c8b3e83ff2175688b46048b76088b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000005e897304893b83fb0175078d64240cc224008d64240c8b3c24897c242483c424e92c0600008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c40cc2240083fe070f857a010000ff77048b7c24308b74242c8b5424285756528b44240c8b5c2414e81f060000ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e83cfcffff89c78d64240c57ff7424248b7c24248b7424208b5424388b4c24308b5c241c8b4424185756525153508b4424208b5c2418e8be0600008d6424048b7c24348b7424248b5424208b4c241c8b5c24306a015756525153bb01000000e8350800006a016a0189e3e8760b00008b0424ff742404a80174318b0424e83f0c00008d6424048b7c240883ff0175078d642418c224008d6424085b8b7c240c897c243083c430e99e0c0000e8fd0c000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e8660d00008b7c241083ff01750489c7eb0b8b5c2410e8d80d000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c41cc22400ff7708ff770c8b3c248b3f83ff190f85830200005f8b7f048b742408ff368b74240c8b3683c602710e8d642410b8f80466b18b5d04ff238b54240c89328b7424348b56fcc1e208c1ea0783ca018b7424043bf2720e8d642410b8003566b18b5d04ff238b7424348b542404c74456fe010000008b7424308b56fcc1e208c1ea0783ca018b7424043bf2720e8d642410b8003566b18b5d04ff238b5424308b34248b4c240489744afe8b74242c8b56fcc1e208c1ea0783ca018b7424043bf2720e8d642410b8003566b18b5d04ff238b74242c8b542404c74456fe010000006a016a016a016a01ff37ff7704ff7708ff770cff7710ff7714ff7718ff771cff7424548b7c24548b7424508b5424688b4c24608b5c244c8b442448ff742418ff742418ff742418ff742418ff742418ff742418548304243cff74241c5756525153508b4424588b5c2454e89be3ffff8d642424ff3424ff742408ff7424108b7c24188b7424488b56fcc1e208c1ea0783ca018b7424203bf2720e8d64242cb8003566b18b5d04ff238b7424488b542420897c56feff742450ff742450ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b44243cff742408ff742408ff7424085756525153508b4424548b5c2458e84ff9ffff89c78d64240c578b7c240483ff037507bf03000000eb328b7c24548b77fcc1e608c1ee0783ce018b7c24243bfe720e8d642430b8783266b18b5d04ff238b7c24548b7424248b7c77fe8b7424448b5424408b4c243c8b5c24548b4424505756525153508b4424248b5c2420e8b7eaffff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742420897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c42cc224008b7c240cff378b7c24108b3f83c702710e8d642414b8f80466b18b5d04ff238b742410893e8b7c24388b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8003566b18b5d04ff238b7c24388b742408c74477fe010000008b7c24348b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8003566b18b5d04ff238b7424348b3c248b542408897c56fe8b7c24308b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8003566b18b5d04ff238b7c24308b742408c74477fe01000000ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742408ff742408ff7424085756525153508b44243c8b5c2440e884f7ffff89c78d64240c57ff742430ff742440ff7424408b7c24408b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b5424288b4424348b5c2440ff1289c68d64240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742404897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8d6424148970048938c224008d642404b801000000c22400f400|@11356,1,@685|68,0,@9455 108,0,@10015 125,0,0 154,0,@10015 199,0,@10015 216,0,0 406,0,0 441,0,2 717,0,2 780,1,@5497 815,0,2 893,1,@5498 1014,1,@5499 1050,0,0 1055,1,@5500 1066,1,@5502 1085,1,@5503 1126,1,@5504 1131,1,@5505 1168,0,3 1178,1,@5506 1200,1,@5507 1290,0,@9455 1334,0,@10015 1355,0,0 1388,0,@10015 1441,0,@10015 1462,0,0 1573,1,@5482 1625,0,@10015 1730,0,1 1765,0,@9988 1821,1,@5489 1865,0,1 1929,0,@9455 1973,0,@10015 1994,0,0 2027,0,@10015 2080,0,@10015 2101,0,0 2287,0,1 2335,0,0 5497:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@674| 5498:D3,260|3b650c7305ff552ccd09a8010f85e90000008b388b40048b7704ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893b8b7c24108b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b7c2410c74477fe010000008b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b54240c8b3c24897c72fe8b7c24088b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b7c2408c74477fe010000008b7c24108b74240c8b542408575652e830ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20c00b801000000c20c00f4|@10030,1,@675|40,0,@9455 76,0,@10015 93,0,0 122,0,@10015 167,0,@10015 184,0,0 252,0,0 5499:D3,396|3b650c7305ff552ccd0953a8010f856c0100008b38ff7004ff77048b7f086a016a016a016a01ff37ff7704ff7708ff770cff7710ff7714ff7718ff771c8b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742414ff742414ff742414ff742414ff742414ff7424145483042438ff7424545756525153508b4424548b5c2450e883deffff8d6424205a595e5f83fe0375378b74241c8b46fcc1e008c1e80783c8018b342489f33bf0720e8d64240cb8003566b18b5d04ff238b74241c89dbc7445efe03000000eb008b7424188b5efcc1e308c1eb0783cb018b342489f03bf3720e8d64240cb8003566b18b5d04ff238b5c241889c089c6897c43fe8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889570489f689378d642404578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8acfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f4|@10030,1,@676|133,1,@5482 180,0,@10015 199,0,1 235,0,@10015 388,0,0 5500:D3,564|3b650c7305ff552ccd0953a8010f858e0100008b30ff7004ff36ff76048b46088b7c24248b4ffcc1e108c1e90783c9018b7c240489fa3bf9720e8d642410b8783266b18b5d04ff238b7c242489d28b7c57fe83ff030f85d40000008b7c24208b74241c8b5424188b4c24248b5c24146a03575652515389c38b442418e8ffe4ffff89c28d6424048b7c24108b4ffcc1e108c1e90783c9018b3c2489fe3bf9720e8d64240cb8783266b18b5d04ff238b7c241089f68b7477fe8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24208b74241c8b5424188b4c24148b5c24106a0357565251538b44241c8b5c2420e8fcfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424048957048937ff342457ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b442408895c241c8b5c2404894c242089542424897424288b3c24897c242c83c414e963feffff8d6424148b7c241c83ff017540ff34248b4424188b7424148b5424108b4c241c8b5c240c895c241489c38b0424894c24188954241c897424208b7c2408897c241083c410e9620000008d642408ff34248b74241c8b5424188b4c24148b5c24108b44240c8944240c8b0424895c2410bb01000000894c2414895424188974241cc74424200100000083c408e9d3fdffff8d642408f40000|@11352,1,@678|63,0,@9988 125,1,@5489 165,0,@9988 482,1,@5501 525,0,0 545,0,0 5501:D3,240|3b650c7305ff552ccd0953a8010f85cf0000008b38ff7004ff378b47048b5f088b7c241c8b7424188b5424148b4c24106a01ff74240c57565251e8f9e2ffff89c28b7c24108b4ffcc1e108c1e90783c9018b3c2489fe3bf9720e8d64240cb8783266b18b5d04ff238b7c241089f68b7477fe8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c241c8b7424188b5424148b4c2410575652518b4424148b5c2418e849ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc210008d642404b801000000c21000f400|@10030,1,@677|59,1,@5489 95,0,@9988 231,0,0 5502:D3,200|3b650c7305ff552ccd0953a8010f859e000000ff308b40048b3c248b7f048b3f83ff1b7507bf03000000eb05bf01000000576a016a0189e3e8c3ffffff5a5e8b3c2483ff038d64240475348b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b801000000c38b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c35ebf388a66b18b1789168b7f04897e04b801000000c3f4|@11119,1,@679|38,0,1 45,0,0 122,0,0 172,0,0 179,0,@11118 194,0,0 5503:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070300000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@680|58,0,1 110,0,0 5504:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@681| 5505:D3,132|3b650c7305ff552ccd01a801756c8b388b40048b378b7f048b1783fa1b75518b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8b9ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b858ae66b18b5d04ff23b801000000c3f4000000|@10030,1,@682|113,0,@11353 123,0,0 5506:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070300000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@683|58,0,1 110,0,0 5507:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@684| 5508:D3,224|3b650c7305ff552ccd0953a8010f85be000000ff30ff7004ff742408ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c757ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742408ff742408ff7424085756525153508b4424448b5c244ce85effffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642420c224008d642404b801000000c22400f40000|@10030,1,@686|214,0,0 5509:D3,1300|3b650c7305ff552ccd095083fb01750c8d642404b801000000c22c008b3bff73048b078b1089d683fa19750f8b7004ff77048b7c2438e93903000083fe11750f8b7004ff77048b7c2438e910010000ff7704ff742414ff742414ff742430ff742424ff7424348b7c24488b7424448b5424408b4c24348b5c2430ff742408ff742408ff74240857565251538b5424308b5c242cff1289c68d6424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e8d3feffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f7c70100000075208b0f8b57043b4c24087507bf03000000eb1389d73b650c7305ff552ccdc0ebd8bf0100000083f7028b1689d183fa03751a8b46046a016a018b54243c5489fbff125f8d642404e9db00000089ca83f907750f8b54243089f8ff1289c7e9c500000083fa01753bff76048b54243089fb8b0424ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c70701000000e9850000008b760483ff0375308b7c24288b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8003566b18b5d04ff238b7c2428c74477fe03000000eb008b7c24188b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24188b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e8befcffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f7c70100000075208b0f8b57043b4c24087507bf03000000eb1389d73b650c7305ff552ccdc0ebd8bf0100000083f702576a016a016a016a01ff36ff7604ff7608ff760cff7610ff7614ff7618ff761cff7424688b7c24688b7424648b5424608b4c245c8b5c24588b442454ff742418ff742418ff742418ff742418ff742418ff742418548304243cff74241c5756525153508b4424588b5c2454e8ccd1ffff8d642424ff34248b4424088b7c244c8b7424488b5424448b4c24408b5c2430ff742414575652515389c38b442418e8add9ffff89c68d6424188b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742410ff742410ff742410ff742410ff7424105756525153508b4424408b5c2448e821fbffff89c78d6424188b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c22c00f40000|@11350,1,@687|21,0,0 209,0,@9455 371,0,1 392,0,0 511,0,0 553,0,@10015 570,0,1 601,0,@9988 649,0,2 684,0,9 742,0,@9455 904,0,1 925,0,0 1040,1,@5482 1091,1,@5489 1155,0,@9455 5510:D3,1624|3b650c7305ff552ccd0d5250538b7c2408ff7704ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b54242c8b4424308b5c2428ff1289c7578b7c24488b3f83ff0b756c8b7c2448ff77048b7c244cff77088b7c2450ff770cff742428ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742410ff74240cff74240cff74240c5756525153508b5424348b4424408b5c243ce83affffff89c78d64241ceb748b7c241cff7704ff74244cff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742404ff7424045756525153508b5424308b44242c8b5c2428ff1289c68d6424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b7c2420ff7704ff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742404ff7424045756525153508b54242c8b44244c8b5c2428ff1289c757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937c70708b066b18b34248b1689d783fa29756e89f68b7e0489f68b560889f68b760c8b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100000089318b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e93501000089f683ff070f852501000089f68b560489f68b7e0889f68b760c8b0e83f9130f85040100008b760483fe017507be03000000eb05be0100000083fe030f85e70000008b3283fe0f75668b5204f6c2017457f6c20174448b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000897e0489168b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb138d642438b8cc4466b18b5d04ff23bf01000000eb788b3783fe0f756c8b7f04f7c701000000745af7c70100000074448b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb138d642438b8cc4466b18b5d04ff23bf01000000eb05bf01000000eb05bf01000000eb05bf01000000f7c7010000000f857d0200008d6424148b3fff37ff7704ff77088b74240c8b3e83ff030f858f00000089f68b76048b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2408897a048b7c2410893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b45008d40e83b45087305ff5528cdc0894500c740fc050000008b14248950108d64240489700c8978088b3c248978048d642410c7000100000083c41cc2280089f689f7ff760489ff89feff770889f689f7ff760c89ffff77108b44240c8b5c2414e8360b000089c68b7c241089fa3b3c24750b8d642404bf03000000eb4089d7f6c2017530f6042401751f89ff8b3f8b14248b128d6424043bfa7507bf03000000eb05bf01000000eb098d642404bf01000000eb098d642404bf01000000f7c6010000000f85aa00000083ff030f859b0000008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424148977048b74241c8937578b442408e8d20b000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc050000008b74240c8970108b342489700c8d6424088978088b3c248978048d642408c7000100000083c42cc228008d64240ceb048d64240c8b75008d76f43b75087303ff5528897500c746fc020000008b7c2408897e048b7c2410893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b442410e866beffff89c78b45008d40e83b45087305ff5528cd80894500c740fc050000008b74240489701089780c8b3c248978088d6424088b3c248978048d642410c7000100000083c41cc228008b442414e817beffff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b7424188977088b34248977048d642404c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000300000083c434c22800f4000000|@11414,1,@694|318,0,1 398,0,0 432,0,@11364 604,0,1 611,0,0 673,0,0 717,0,@10214 727,0,0 788,0,0 832,0,@10214 842,0,0 849,0,0 856,0,0 863,0,0 981,0,0 1041,0,0 1086,1,@5514 1108,0,1 1145,0,1 1152,0,0 1163,0,0 1174,0,0 1242,1,@5515 1344,0,0 1430,0,0 1442,1,@5469 1506,0,0 1521,1,@5469 1575,0,6 1610,0,1 5511:D3,560|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3089f783fe017506b810b066b1c389d683fa037d06b8b4ab66b1c38b3f83ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5402c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcb266b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@11412,1,@691|21,0,@11331 36,0,@11365 49,0,@11331 62,0,@9455 103,0,@4669 169,0,@9771 176,0,1 184,0,@9772 191,0,1 199,0,@9773 206,0,1 213,0,0 258,0,@11374 295,0,@10625 330,0,@11377 366,0,0 373,0,1 380,0,3 386,0,0 425,0,0 462,0,@10448 497,0,@11408 533,0,0 540,0,0 547,0,1 553,0,0 5512:D3,1628|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3089f78b3683fe010f85f90100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c4b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c389fa8b3f83ff030f85f90100008b7a0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077cb166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389d68b1283fa050f85f90100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4b166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b868b266b1c3f40000|@11407,1,@690|21,0,@11331 50,0,@9455 91,0,@4670 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@11378 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 581,0,@9455 622,0,@4670 688,0,@9771 695,0,1 703,0,@9772 710,0,1 718,0,@9773 725,0,1 732,0,0 777,0,@11374 814,0,@10625 849,0,@11377 885,0,0 892,0,1 899,0,3 905,0,0 944,0,0 981,0,@10448 1016,0,@11386 1052,0,0 1059,0,0 1066,0,1 1072,0,0 1085,0,@11331 1112,0,@9455 1153,0,@4670 1219,0,@9771 1226,0,1 1234,0,@9772 1241,0,1 1249,0,@9773 1256,0,1 1263,0,0 1308,0,@11374 1345,0,@10625 1380,0,@11377 1416,0,0 1423,0,1 1430,0,3 1436,0,0 1475,0,0 1512,0,@10448 1547,0,@11393 1583,0,0 1590,0,0 1597,0,1 1603,0,0 1614,0,@11331 1620,0,@11400 5513:D3,68|3b650c7305ff552ccd018b00ba803066b1bb03000000e885b6faff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f40000|@9475,1,@689|13,0,@9967 18,0,1 23,1,@4896 60,0,3 5514:D3,292|3b650c7305ff552ccd0989c789de8b0f89ca83f9130f85d90000008b0e83f9130f85ce0000008b7f048b76043bfe7505e99c0000008b0f89ca83f901752b8b1683fa01751f8b57048b76043bd67507be03000000eb05be0100000083fe037402eb02eb6de98500000089d183fa0375268b1683fa03751d8b57048b76043bd67507be03000000eb05be0100000083fe037502eb3deb5889ca83f90575288b1683fa05751f8b57048b76043bd67507be03000000eb05be0100000083fe037402eb02eb0eeb2983fa0775248b3683fe07751d8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c383fa1575228b1683fa15751b8b47048b7f088b5e048b76083bfe7406b801000000c3e9e5feffffb801000000c3f40000|@11413,1,@692|80,0,1 87,0,0 130,0,1 137,0,0 175,0,1 182,0,0 239,0,0 273,0,0 284,0,0 5515:D3,112|3b650c7305ff552ccd01a80175588b388b40048b378b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8c3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@693|103,0,0 5516:D3,364|3b650c7305ff552ccd098b3089f783fe29751c8b40048b7c24045357bb10b466b1e85a01000089c689f7e9ac00000083ff110f859b0000008b78048b3783fe050f85850000008b7f048b73fcc1e608c1ee0783ce013bfe720ab8783266b18b5d04ff238b547bfef6c2017408b801000000c204008b7424048b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c01000000895708c74704640f66b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400b801000000c20400b801000000c20400f7c701000000751f8b0f8b5704f6c101740e89d73b650c7305ff552ccdc0ebe0bf01000000eb05bf0300000083ff037508b801000000c204008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c707c400c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f4|@11417,1,@696|29,0,@11416 34,1,@5517 90,0,@9988 109,0,0 149,0,0 159,0,@9574 194,0,0 204,0,0 212,0,0 252,0,0 259,0,1 269,0,0 305,0,0 315,0,@9574 321,0,@4619 354,0,0 5517:D3,124|3b650c7305ff552ccd0989c753f7c70100000075598b07ff77048b5424048b5c24108b7c240c57ff1289c7578b7c24148b74241057568b44240c8b5c2410e8bdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f400|@10030,1,@695|115,0,0 5518:D3,2708|8d7c24943b7d0c7305ff5530cd0d5253ff30ff7004ff70088b700c8b7810b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a52b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a52ba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089118b55008d52f03b55087305ff5528cdc2895500c742fc030000008b5c24188b5b28895a088b5c24188b5b2c895a04c70274b82bb1891183ff017d098d64241ce90801000081ffffffff010f8df800000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b8cc5366b1f3ab52ba030000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7c24108b178b7c24108b3f83c702710e8d642428b8f80466b18b5d04ff238b4c241089398b7c240c8b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707cc5366b18b4c240c89398b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c7470403000000891757bf01000000eb0e8d64241cb8383066b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d64242cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057bf010000008b74242c8b7620f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0576a016a018b7c240c3b7c24087c11be010000008b7c24388b7f20e9ce0700008b7c24388b47208b5c240ce8c688fdff89c7893c24c744240401000000ff3424ff7424088b3c2483ff017507bfe43c66b1eb728b3c2483ff017e518b3c2481ffffffff017d408b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be01000000eb148d642444eb048d642444b888b766b18b5d04ff238b14243bd67f1e8067ffbf578b3c248b77fcc1e608c1ee0783ce01bf01000000e9fa0000008b4c241083e90103ce710e8d642444b8f80466b18b5d04ff238b5424142bd1710e8d642444b8f80466b18b5d04ff2383c201528b5424308b128b4c24308b0983c102710e8d642448b8f80466b18b5d04ff238b5c2430890b8b4c242c8b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701cc5366b18b5c242c890b8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040300000089118b55008d52f43b55087305ff5528cdc2895500c742fc020000008b1c24895a048d642404890a895477fe89f283c202710e8d642444b8f80466b18b5d04ff2389d63b650c7305ff552ccdc0e9e1feffff83fe010f85ea030000578b7c2434ff378b7c24388b3f83c702710e8d642450b8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742434893e8b7c2438ff378b7c243c8b3f83c702710e8d642454b8f80466b18b5d04ff238b74243c893e8b7c24388b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742438893eff7424388b4424188b5c2440e8f60a000089c7578b7c244483ff017507bf01000000eb488b75008d76f43b75087303ff5528897500c746fc02000000c74604a44066b18b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b4424048b5c241ce84dfffdff89c383fb0175035feb0e8b0424e82b0b000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70601000000bf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c24548b4928894f04c707b8be2bb1893a8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542408895704c70705000000578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089376a016a016a01bbd0b966b18b74246c8b5424648b52208b4c24648b49246a03ff74241057548304240cff742460ff742460ff742458ff742460ff742468ff742448ffb4248c000000ffb4248c000000ffb42484000000ff7424485652ff74247c51ff742458ff74246c89da8b8424ac000000bbc45d66b1e8fa1100005a8d6424045f8d64240c83ff0375088d64240489d6eb6d8b75008d76f03b75087305ff5528cd04897500c746fc030000008b7c240c897e085f897e04c706370000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7c24288b3f83ff017d098d64244ce9d600000081ffffffff010f8dc600000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b8343f66b1f3ab5268003b66b1ff742404ff74242cff74241089f0bb01000000e8400d03008b3c248b77fcc1e608c1ee0783ce0183fe01750b8d64240cbee43c66b1eb4889f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89f15e89d7d1e9f3a58062ffbf89d683c4088b7c24288b3fbb01000000eb538d64244cb8383066b18b5d04ff2389f183e90289f383eb028b14248b545afe8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04891a89ce89d73b650c7305ff552ccdc0e9c8fbfffff7c70100000075348b078b57048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000895904890189cb89d73b650c7305ff552ccdc8ebc483fb01750abae43c66b1e996000000bf0100000089daf6c20175288b420489f983c102710e8d642444b8f80466b18b5d04ff2389c289cf3b650c7305ff552ccdccebd381ffffffff017c0e8d642444b8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba0100000089d983f9010f85d10000008067ffbf89faf6442430017407bf03000000eb05bf0100000083f70283f70283f7025652ff74240cff742440ff74244c57ff7424188b7c245cff77048b7c2460ff77088b7c2464ff770c8b7c24688b57108b7c24688b4f148b7c24688b5f188b7c24688b471c8b74246c894424448b442424895c24488b5c2420894c244c895424508b3c24897c24548b7c2404897c24588b7c2408897c245c8b7c240c897c24608b7c2410897c24648b7c2414897c24688b7c2418897c246c8b7c241c897c24708974244083c440e9550f03008d6424308b198b4104895c57fe89d383c302710e8d642444b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6e9f5fefffff7c70100000075288b4f0489f283c202710e8d64243cb8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc0ebd08b7c240c2bfe710e8d64243cb8f80466b18b5d04ff2383c7018b7424388b7620893424897c2404e9f3f7fffff4000000|@12756,1,@1554|31,0,0 65,0,0 99,0,0 179,0,@5519 201,0,16777215 257,0,@10423 265,0,1 299,0,0 354,0,@9455 406,0,@10423 445,0,1 453,0,0 464,0,@9964 496,0,@9455 523,0,0 557,0,@9455 598,0,0 626,1,@5138 639,0,0 659,0,@10109 678,0,16777215 733,0,0 742,0,0 759,0,@11455 796,0,0 821,0,@9455 843,0,@9455 878,0,@9455 930,0,@10423 969,0,1 1029,0,@9455 1087,0,@9455 1139,0,2 1171,0,@9455 1223,0,2 1246,1,@5520 1263,0,0 1296,0,@10165 1335,0,0 1351,1,@5210 1369,1,@5521 1410,0,0 1415,0,0 1485,0,@5522 1526,0,2 1560,0,0 1573,0,@11490 1681,0,@10588 1686,1,@5524 1752,0,27 1787,0,1 1844,0,16777215 1900,0,@10142 1908,0,@10093 1927,0,0 1932,1,@5758 1961,0,@10109 2015,0,0 2046,0,0 2057,0,@9964 2201,0,@10109 2211,0,0 2237,0,@9455 2264,0,16777215 2275,0,@11058 2330,0,0 2339,0,0 2368,0,1 2375,0,0 2555,1,@5760 2584,0,@9455 2635,0,@9455 2673,0,@9455 5519:D3,1308|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c38b0889ce8b0983f9010f85d202000089f18b7104ff710883ef0257710e8d642408b8f80466b18b5d04ff238b0c2489cf83f9017d0e8d642408be2cb566b1e9a101000089ff83ef02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089780489308b7a048b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70768b566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70698b566b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c4b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f983ff037d06b8b4ab66b1c389f78b3683fe037506b884b666b1c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a088b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f8b666b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@11454,1,@699|21,0,@11331 60,0,@9455 84,0,@11421 105,0,@9455 169,0,@9455 214,0,@4670 253,0,@11424 290,0,@10448 325,0,@11426 360,0,@10448 395,0,@11428 468,0,@10448 503,0,@11429 541,0,@11431 577,0,0 584,0,0 591,0,1 597,0,0 630,0,0 667,0,@10448 702,0,@11432 738,0,0 745,0,0 752,0,1 758,0,0 771,0,@11331 786,0,@11440 799,0,@11331 813,0,@9455 918,0,@9771 925,0,1 933,0,@9772 940,0,1 948,0,@9773 955,0,1 962,0,0 1007,0,@11374 1044,0,@10625 1079,0,@11377 1115,0,0 1122,0,1 1129,0,3 1135,0,0 1174,0,0 1211,0,@10448 1246,0,@11447 1282,0,0 1289,0,0 1296,0,1 1302,0,0 5520:D3,156|3b650c7305ff552ccd09a8010f85800000008b4004ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893b8b7c24088b378b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707050000008b742408893e8b7c240857e899ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f400|@10030,1,@700|35,0,@9455 83,0,2 147,0,0 5521:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@701| 5522:D3,1852|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c38b0889ce8b0983f9010f85f004000089f2ff7204ff72088b720cff721083ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9b903000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf6c02c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9af02000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf6c02c0b08b17ff1289c7578b74240889f783fe057d0abe2cb566b1e9a401000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf6c02c0b08b17ff1289c7578b7c240c83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24188938bf6c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d8b766b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f8b766b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071cb866b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063cb866b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70760b866b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f983ff037d06b8b4ab66b1c389f78b3683fe037506b8d0b866b1c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70740b966b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@11489,1,@703|21,0,@11331 66,0,@9455 90,0,@11421 111,0,@9455 152,0,@4672 175,0,@11421 196,0,@9455 241,0,@4672 264,0,@11421 285,0,@9455 330,0,@4672 355,0,@9455 400,0,@4672 439,0,@11424 476,0,@10448 511,0,@11460 546,0,@10448 581,0,@11428 654,0,@10448 689,0,@11462 724,0,@10448 759,0,@11428 832,0,@10448 867,0,@11464 902,0,@10448 937,0,@11428 1010,0,@10448 1045,0,@11466 1083,0,@11431 1119,0,0 1126,0,0 1133,0,1 1139,0,0 1172,0,0 1209,0,@10448 1244,0,@11468 1280,0,0 1287,0,0 1294,0,1 1300,0,0 1313,0,@11331 1328,0,@11475 1341,0,@11331 1355,0,@9455 1460,0,@9771 1467,0,1 1475,0,@9772 1482,0,1 1490,0,@9773 1497,0,1 1504,0,0 1549,0,@11374 1586,0,@10625 1621,0,@11377 1657,0,0 1664,0,1 1671,0,3 1677,0,0 1716,0,0 1753,0,@10448 1788,0,@11482 1824,0,0 1831,0,0 1838,0,1 1844,0,0 5523:D3,68|3b650c7305ff552ccd018b3883ff037507bfbcb766b1eb05bfc8b766b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f40000|@9475,1,@702|18,0,@11458 25,0,@11459 60,0,3 5524:D3,28960|8dbc246cffffff3b7d0c7305ff5530cd0d52538b38be60c62bb181c6260000008d74befcffe6e9b3000000909090e993010000909090e92c040000909090e98f070000909090e96f080000909090e9d60a0000909090e9530f0000909090e9541c0000909090e92e1d0000909090e91c290000909090e9172d0000909090e975300000909090e9dd310000909090e9743f0000909090e9dd410000909090e9b7420000909090e9d3430000909090e95f490000909090e91f4c0000909090e96b510000909090e94b520000909090e98b530000909090e9405600009090908b70048b50088b480c8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937576a016a016a018b7c2414ff7714ff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464e9046f00008b7804ff37ff7704ff7708ff770cff77108b7c2450ff378b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b742454893e8b7c2454ff378b7c24588b3f83c702710e8d642424b8f80466b18b5d04ff238b742458893e8b7c24708b3f83ff0175568b7c24648b3f8b7424648b3683c602710e8d642424b8f80466b18b5d04ff238b54246489328b7424608b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424608932eb688b7c24708b3f83ff0375568b7c24648b3f8b7424648b3683c602710e8d642424b8f80466b18b5d04ff238b54246489328b7424608b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424608932eb078b7c24708b7f04578b7c2468ff378b7c246c8b3f83c702710e8d64242cb8f80466b18b5d04ff238b74246c893e8b7c24688b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742468893e8b7424608b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b74240c897704c70794372cb1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70705000000576a016a016a01ff74243cffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b4424706a01ff74243c6a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a40000008b9c24b4000000e8acfbffff8d64242c5e8d64240cbf01000000e93f680000ff7004ff70088b7c2408ff77048b7c240cff77088b7c24648b3f83ff0175568b7c24588b3f8b7424588b3683c602710e8d642418b8f80466b18b5d04ff238b54245889328b7424548b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424548932eb688b7c24648b3f83ff0375568b7c24588b3f8b7424588b3683c602710e8d642418b8f80466b18b5d04ff238b54245889328b7424548b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424548932eb078b7c24648b7f04576a016a01ff74246cff742468ff742468ff742460ff74246cff74246cff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b442454548304242cff742428ff742428ff742428ff74245cff74242cff74242cff74242cff74242cff74242cff74242cff74242c575652515350ffb424900000008b84248c0000008b5c2474e8556c00008d64242c595a8b7c24508b3f8b7424508b3683c602710e8d64241cb8f80466b18b5d04ff238b5c245089338b75008d76f03b75087305ff5528cd86897500c746fc030000008b5c2408895e08897e04890e8b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100000089318b75008d76f03b75087305ff5528cd86897500c746fc030000008b5c2404895e088b5c2408895e04890e568b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2404894e04c70605000000568b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a01ff742430ffb42488000000ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b442468ff742428ff742444ff742444548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c2494000000e87bf8ffff8d642430598d6424045f8d64240c8b55008d52f43b55087305ff5528cd82895500c742fc020000005e8d642408897204c702090000008b742454890e895604897e08b80100000083c410c250008b70048b50088b480c8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937576a016a016a018b7c2414ff771cff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464e9986300008b78048b50088b480c8b58108b75008d76ec3b75087305ff5528cd8e897500c746fc04000000895e0c894e08895604893e5683ff030f85780100008d6424048b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e10894e0c895608897e04c706090000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c58a766b1c74708a8ba66b1897704c7070d000000ff74240457ff742408ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b442440895c24588b5c243c894c245c895424608b542444897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc24980000008b7c243489bc249c0000008b7c243889bc24a000000083c450e997f5ffff8d6424506a016a016a018b7c2414ff7704ff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464e9d56000008b7804ff37ff7704ff7708ff770cff77108b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742460893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70705000000576a016a016a01ff742430ffb42480000000ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c24ac000000e854f3ffff8d642430598d64240c6a016a018b7c241483ff017510890c248b7c2408897c2404e99c0100008b7c246c8b3f8b74246c8b3683c602710e8d64242cb8f80466b18b5d04ff238b54246c89328b7424688b168b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c706050000008b5424688932f644241401740b8b74241483fe017d16eb1a8b7424140fb676ff8d34750100000083fe2374068b5c2414eb14b8b02f66b18b5c24145157e8468cfaff5f5989c3f6c301740f89de83ee016bf602700583c601eb10b8050000005157e84a6700005f5989c68b5d008d5bf43b5d087305ff5528cdc2895d00c743fc02000000897304c703050000008b7424648b368b5424648b1283c202710e8d64242cb8f80466b18b5d04ff238b44246489108b55008d52e83b55087305ff5528cdca895500c742fc05000000897a10895a0c8b5c2408895a08897204c702090000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916893424897c2404ff3424ff7424088b7c2474ff378b7c24788b3f83c702710e8d642438b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742474893e6a016a018b7c242483ff0375148b7c2410893c24c744240401000000e9c65800008b7c2474ff378b7c24788b3f83c702710e8d642444b8f80466b18b5d04ff238b742478893e8bbc2484000000ff378bbc24880000008b3f83c702710e8d642448b8f80466b18b5d04ff238bb42488000000893e8bbc24840000008b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008bb42484000000893e8bbc24800000008b0f8bbc24800000008b3f83c702710e8d642448b8f80466b18b5d04ff238bb42480000000893ebb010000008b7c2438e954550000ff7004ff7008ff700c8b7c24608b3f83ff030f85b90300008b7c2448ff378b7c244c8b3f83c702710e8d642418b8f80466b18b5d04ff238b74244c893e8b7c244cff378b7c24508b3f83c702710e8d64241cb8f80466b18b5d04ff238b742450893e8b7c2418ff7710ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a01ff742438ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424788b84248c0000008b9c2490000000ff1289c78d642430576a016a016a01ff742428ffb42480000000ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff74242868cc5366b1ff742444548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b84249c0000008b9c24a4000000e8aaeeffff8d642430598d64240c8b75008d76f43b75087305ff5528cd02897500c746fc020000008b7c2404897e04c706070000008b55008d52f43b55087305ff5528cd42895500c742fc020000008b3c24897a04c7020b0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c707050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a01ff742428ffb42480000000ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff74242868cc5366b1ff742444548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424980000008b9c24a4000000e84aedffff8d6424305e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8d642418895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893ab80500000083e8016bc000700583c001eb11b805000000bb0100000052e8a86100005aa801740989c783c7027002eb0ebb0300000052e86786faff5a89c78b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706050000008b7c24448917897704c7470801000000b801000000c250008b7c24608b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c24608b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c24608b7f04578b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742458893e8b7c246c83ff0375568b7c245c8b3f8b74245c8b3683c602710e8d64241cb8f80466b18b5d04ff238b54245c89328b7424588b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424588932eb038b3c24578b7c2454ff378b7c24588b3f83c702710e8d642424b8f80466b18b5d04ff238b742458893e8b7c2420ff7710ff742470ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a01ff742434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424788b8424940000008b9c2498000000ff1289c78d642430578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70705000000576a016a016a01ff742434ffb4248c000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246cff742428ff742440ff742448548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c24b0000000e84fe9ffff8d6424308b1424ff7424086a016a016a018b7c240c83ff037518891424c7442404010000008b7c2430897c2408e9ec0200008bbc249800000083ff030f85630100008b7c24408b4f048b7c24748b75008d76f03b75087305ff5528cd86897500c746fc03000000897e088b7c2428897e04c706370000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c7070300000083f90174708b75008d76f03b75087305ff5528cd86897500c746fc03000000c7460801000000894e04c706350000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7010d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604890e89f2eb008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8bbc24880000008b3f8b9424880000008b1283c202710e8d642448b8f80466b18b5d04ff238b8c248800000089118b9424840000008b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b8c24840000008911893424c744240401000000897c2408e9790100008b7c247c8b0f8b7c247c8b3f83c702710e8d642448b8f80466b18b5d04ff238b74247c893e8b75008d76f43b75087305ff5528cd06897500c746fc02000000894e04c7060b0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604893e8b55008d52f43b55087305ff5528cd42895500c742fc020000008b7c242c897a04c702090000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc0400000089570cc747080b0000008b542430895704c707210000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a04c7020d0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917893424897c24048b7c242c897c24088b1424ff742404ff74240c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c70705000000578b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2430897e04c706070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a01ff742460ffb424b8000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac000000ffb424ac0000008bbc24ac0000008bb424a80000008b9424a40000008b8c24a00000008b9c249c0000008b842498000000ff742428ff742444ff742444548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424d00000008b9c24dc000000e8e1e4ffff8d6424308b1c24ff7424088bbc24b800000083ff030f85fd0000008b3c2483ff030f84f10000008b7c24608b57048bbc24940000008b75008d76f03b75087305ff5528cd8c897500c746fc03000000897e088b7c2418897e04c706370000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000897704c7070300000083fa01746e8b75008d76f03b75087305ff5528cd8c897500c746fc03000000c7460801000000895604c706350000008b55008d52f43b55087305ff5528cdc8895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000895e048916eb0289de8b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893beb0083fb0175068b4c241ceb0b8b44241ce8c558000089c18b55008d52f43b55087305ff5528cd02895500c742fc020000008b7c2450897a04c702090000008bbc24b800000083ff03750b8d642468bf03000000eb188b7c242c83ff0375065f83c464eb098d642468bf010000008b742444890e895604897e08b801000000c250008d6424088b7804f7c7010000007473f7c7010000007461f7c701000000740f89f883e8016bc002700583c001eb0c89fbb805000000e8df570000a801740989c783c7027002eb0cbb03000000e8a07cfaff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70605000000eb2db8cc4466b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70601000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e9df5700008d642404ff7004ff70088b7c2408ff77088b7c24608b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c24608b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c24608b7f04578b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742458893e6a016a016a018b7c24188b3f83ff130f85cc0200008b7c24188b7f048b3f83ff070f85440100008b7c244883ff01751c8b7c2470893c24c744240401000000c7442408b43a66b1e91a0100008b7424448b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c240c897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5424708b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c895704c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204a44066b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917893424897c2404c7442408b43a66b1e9710100008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70705000000576a016a016a01ff742434ffb42484000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c24b0000000e8e5deffff8d6424305e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c895704c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204a44066b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917893424897c2404c7442408003b66b1e9f60400008b7c24188b3f83ff0f0f85760300008b7c24188b7704f7c601000000740e8d642428b81c4266b18b5d04ff238b7c244083ff017507bf01000000eb168b7c24408b3f3bfe7507bf03000000eb05bf0100000083ff03751c8b7c2470893c24c744240401000000c7442408b43a66b1e9f10200000fb67eff8d3c7d0100000081e7ff01000083ff010f841b0100008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c240c897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5424708b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c895704c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204a44066b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917893424897c2404c7442408003b66b1e9bc0100008b7efcc1e708c1ef0783cf0183ff030f82ba0100008b0ef6c101740e8d642428b81c4266b18b5d04ff230fb651ff8d14550100000081e2ff01000083e20783fa050f857a01000083ff03753b8b7d008d7ff43b7d087305ff5528cd02897d00c747fc02000000894f04c707010000008b742470893424c744240401000000897c2408e9350100008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707010000008b75008d76ec3b75087305ff5528cd82897500c746fc04000000897e0cc746080b0000008b7c240c897e04c706210000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b7424708b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204893a8b75008d76f43b75087305ff5528cd06897500c746fc020000008b7c240c897e04c706090000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c74704a44066b189378b75008d76f43b75087305ff5528cd86897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070100000089142489742404897c2408e98d0100008d642428b820bb66b18b5d04ff238d642428b86cbb66b18b5d04ff238b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70705000000576a016a016a01ff742434ffb42484000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c24b0000000e8ead9ffff8d6424305e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c895704c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204a44066b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917893424897c2404c7442408003b66b1ff3424ff742408ff7424108bb4248400000083f6028b94248400000083f2028b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470803000000c7470401000000c70701000000578bb4248800000083f6028b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c03000000c7470803000000c7470401000000c70701000000576a016a016a01ff74245cffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b442478ff7424485483042430ff742478ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430575652515350ffb424b8000000ffb4248c000000ffb4248c0000008b8424c00000008b9c2480000000e8f75100008d64242cff3424ff742408ff7424108bbc24a400000083ff0375158b7c244cff7704bf010000008b742404e9943a00008b7c240483ff0175068b742424eb0f8b4424248b5c2404e8ab55000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000005a895710c7470c010000008b54241c8957088977048b74243889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70617000000f644243c010f85860000008d6424048b7c24388b0f8bbc24800000008b178bbc24800000008b3f83c702710e8d64244cb8f80466b18b5d04ff238b9c2480000000893b8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb4a8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e9e13800008b78048b3789f283fe070f85af0000008d6424088b7c242083ff01753e8b7c241883ff01750ab8b07766b18b5d04ff238b7c24188b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70601000000eb278b7c241c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e92a4b00008d64240489d683fa0375158d6424088b5704bf010000008b742420e93337000083fe010f85140200008b4f045f8b77048b7c24103bcf7d0d8d6424048b7c2408e9683600008d6424048b7c244c8b3f83ff0175528b7c24408b3f8b5424408b1283c202710ab8f80466b18b5d04ff238b5c244089138b54243c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702050000008b5c243c8913eb648b7c244c8b3f83ff0375528b7c24408b3f8b5424408b1283c202710ab8f80466b18b5d04ff238b5c244089138b54243c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702050000008b5c243c8913eb078b7c244c8b7f048b54240c2bca710ab8f80466b18b5d04ff2383c1018b5424048b52fcc1e208c1ea0783ca013bca720ab8a43266b18b5d04ff238b5424048b4c4afe8b118b490483ee0103ce710ab8f80466b18b5d04ff238b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560cc7460801000000c7460401000000c7060b0000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b4c24488b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c24448917897704c7470801000000b801000000c250008b77045f8b4f048b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d642404b8783266b18b5d04ff238d6424048b7c24308b7c77fe8b1789d683fa01755b8b57048b770889cf2bfe710ab8f80466b18b5d04ff2383c7018b75008d76f03b75087305ff5528cd84897500c746fc03000000897e08895604c706030000008b7c24448b5424488917897704c7470801000000b801000000c2500083fe0575638b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e9f04700008d642404b800bc66b18b5d04ff23ff7004ff70088b7c2408ff77046a016a016a01ff74241cff74246cff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b9c2498000000e8bed1ffff8d642430585f8d6424048b1789d683fa030f85f60100008b57048b77088b7c24608b3f83ff0175568b7c24548b3f8b4c24548b0983c102710e8d642414b8f80466b18b5d04ff238b5c2454890b8b4c24508b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5c2450890beb688b7c24608b3f83ff0375568b7c24548b3f8b4c24548b0983c102710e8d642414b8f80466b18b5d04ff238b5c2454890b8b4c24508b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5c2450890beb078b7c24608b7f04592bce710e8d642410b8f80466b18b5d04ff2383c1018b342483ee0103ce710e8d642410b8f80466b18b5d04ff2383f9010f8ce20000008b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560c5a895608c7460401000000c7060b0000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b4c24548b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c24508917897704c7470801000000b80100000083c40cc250008d642410b868bc66b18b5d04ff238d64240483fe090f858e0000008b7f045a83ea016bd204710e8d64240cb8f80466b18b5d04ff238d64240c83c2018b75008d76e83b75087305ff5528cd85897500c746fc05000000895610c7460cc46866b1c7460801000000897e04c70607000000ff74244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e98e4400008d6424048d642410b8a4bc66b18b5d04ff238d6424088b7c244c8b3f83ff0175528b7c24408b3f8b7424408b3683c602710ab8f80466b18b5d04ff238b54244089328b74243c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54243c8932eb648b7c244c8b3f83ff0375528b7c24408b3f8b7424408b3683c602710ab8f80466b18b5d04ff238b54244089328b74243c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54243c8932eb078b7c244c8b7f048b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420839000000897a04c702250000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b4c24488b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c24448917897704c7470801000000b801000000c25000ff7004ff7008ff700c8b7c240cff378b7c2410ff77048b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b74245c893e8b7c2454ff378b7c24588b3f83c702710e8d642424b8f80466b18b5d04ff238b742458893e8b7c24588b3f8b7424588b3683c602710e8d642424b8f80466b18b5d04ff238b54245889326a016a018b74247c83fe030f85b10000008b74246c8b168b74246c8b3683c602710e8d64242cb8f80466b18b5d04ff238b4c246c89318b7424688b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c246889318b74246c8b368b4c246c8b0983c102710e8d64242cb8f80466b18b5d04ff238b5c246c890b8b4c24688b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5c2468890b89142489742404eb0f8b74240c8934248b74240c89742404ff3424ff7424088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b7c2410897a04c702090000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707050000008b5424748b128b4c24748b0983c102710e8d642434b8f80466b18b5d04ff238b5c2474890b8b4c24708b198b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5c2470890b8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c7012d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b5c247c8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b74241c83c604710e8d642438b8f80466b18b5d04ff238b55008d52f83b55087305ff5528cd40895500c742fc010000008b7c2414893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088977048b7424208937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70705000000576a016a016a01ff742448ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247c6a01ff74243cff7424485483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424bc0000008b9c248c000000e851c9ffff8d64242c5f8d6424045e8d64240c6a016a018b94248c00000083fa010f858301000083fe010f856a0100008b7424708b168b7424708b3683c602710e8d64243cb8f80466b18b5d04ff238b4c247089318b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060b0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b74247c8b1e8b74247c8b3683c602710e8d64243cb8f80466b18b5d04ff238b44247c89308b7424788b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c706050000008b44247889308b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04c7062b0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304c7030d0000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04891e89f78b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04890e8b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917893424897c2404eb0b893c24c744240401000000e9c601000083fe010f85b20100008b74247c8b368b54247c8b1283c202710e8d64243cb8f80466b18b5d04ff238b4c247c89118b5424788b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c247889118b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7022b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a0489328b7c24348b4f048b7424688b7d008d7ff03b7d087305ff5528cd46897d00c747fc030000008977088b74240c897704c707370000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c7060300000083f90174708b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000c7470801000000894f04c707350000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c7010d0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704890f89faeb008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937893c24c744240401000000eb0b893c24c7442404010000008b0c24ff7424048bbc24800000008b178bbc24800000008b3f83c702710e8d642440b8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707050000008b74247c893e8b7d008d7ff43b7d087305ff5528cd06897d00c747fc02000000895704c707050000008b7424708b5efcc1e308c1eb0783cb018b74242c3bf3720e8d642440b8003566b18b5d04ff238b7424708b5c242c897c5efe8b7d008d7ff43b7d087305ff5528cd06897d00c747fc020000008b74240c897704c70705000000578bbc24840000008b378bbc24840000008b3f83c702710e8d642444b8f80466b18b5d04ff238b9c2484000000893b8bbc24800000008b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c707050000008b9c2480000000893b8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708897704c7070b0000008b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc020000008b542420895704c707070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a01ff742450ffb424a8000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c0000008bbc249c0000008bb424980000008b9424940000008b8c24900000008b9c248c0000008b842488000000ff742428ff742444ff742444548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424c40000008b9c24cc000000e81cc3ffff8d642430598d6424045e8d6424088bbc248c0000008b3f83ff01755f8bbc24800000008b3f8b9424800000008b1283c202710e8d642440b8f80466b18b5d04ff238b9c248000000089138b54247c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702050000008b5c247c8913eb778bbc248c0000008b3f83ff03755f8bbc24800000008b3f8b9424800000008b1283c202710e8d642440b8f80466b18b5d04ff238b9c248000000089138b54247c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702050000008b5c247c8913eb0a8bbc248c0000008b7f048b94249000000083fa017505e9f700000083fe010f85ee0000008b7424388b5e048b74246c8b55008d52f03b55087305ff5528cdca895500c742fc030000008972088b74240c897204c702370000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895604c7060300000083fb01746e8b55008d52f03b55087305ff5528cdca895500c742fc03000000c7420801000000895a04c702350000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000895304c7030d0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04891aeb0289ca8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008951048931eb008b342483fe0175088d64242089caeb485e8b168b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893283c41c8b75008d76f43b75087305ff5528cd84897500c746fc0200000059894e04c706090000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000897904c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089510489318b55008d52f43b55087305ff5528cd82895500c742fc02000000897a04c702090000008b7424608b7c246c890e895604897e08b80100000083c41cc250008b4004ff70088b3c2483ff010f85bd0000008d64240cbe010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000408937578b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b342489378b54242c8b5c242857ff1289c78b3424893e8b3c248067ffbf8b75008d76f43b75087303ff5528897500c746fc020000005f897e04c70601000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e9a23400008d6424048b5424348b5c24306a01ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070f000000578b442404e84c3d000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072b000000ff74240457ff742408ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b442440895c24588b5c243c894c245c895424608b542444897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc24980000008b7c243489bc249c0000008b7c243889bc24a000000083c450e98cbdffff8d6424508b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a018b7c2414ff770cff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464e9491d0000ff70048b7c2404ff77048b7c2408ff77088b7c240c8b3f83ff01750e8d642414b8f0bc66b18b5d04ff238b3fff37ff7704ff77088b7c246c8b3f83ff0175568b7c24608b3f8b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b54246089328b74245c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54245c8932eb688b7c246c8b3f83ff0375568b7c24608b3f8b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b54246089328b74245c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54245c8932eb078b7c246c8b7f04578b5c24648b7c2460578b44241ce87a3a000089c757ff74241cff742404ff742478e97a180000ff7004ff70088b7c2408ff77046a016a01ff742464ff742460ff742460ff742458ff742464ff742464ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424285483042430ff74242cff74242cff74242cff742458ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b8424880000008b9c248c000000e8733a00008d64242cff3424ff7424088b3c24ff77048b7c24143b3c240f84730300008b3c243b7c24140f8c580300008b7c24688b378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b542468893a8b7c24648b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707050000008b542464893a8b7c24748b3f83ff0175568b7c24688b3f8b5424688b1283c202710e8d642428b8f80466b18b5d04ff238b4c246889118b5424648b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c24648911eb688b7c24748b3f83ff0375568b7c24688b3f8b5424688b1283c202710e8d642428b8f80466b18b5d04ff238b4c246889118b5424648b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c24648911eb078b7c24748b7f04578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000576a016a016a01ff742438ffb42490000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b442470ff742428ff742440ff742454548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424ac0000008b9c2498000000e8a7b8ffff8d6424305b5e5f8d64240483ff03750789d9e9f90000008b55008d52ec3b55087305ff5528cdc8895500c742fc0400000089720cc742080b0000008b3424897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c7060d0000008b4c24042b4c2418710e8d64242cb8f80466b18b5d04ff2383c1018b55008d52f03b55087305ff5528cdca895500c742fc03000000c7420801000000894a04c702350000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104c7010d0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089510489318b55008d52f43b55087305ff5528cd82895500c742fc020000005e897204c702090000008b74246c890e895604897e08b80100000083c428c250008d642428b8c8bf66b18b5d04ff238d642404ff742420ff742418ff742408ffb42480000000ffb42480000000ff742418ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bb424800000008b54247c8b4c24788b5c24748b442470894424708b442440895c24748b5c243c894c24788954247c8b54244489b424800000008b3c2489bc24840000008b7c240489bc24880000008b7c240889bc248c0000008b7c240c89bc24900000008b7c241089bc24940000008b7c241489bc24980000008b7c241889bc249c0000008b7c241c89bc24a00000008b7c242089bc24a40000008b7c242489bc24a80000008b7c242889bc24ac0000008b7c242c89bc24b00000008b7c243089bc24b40000008b7c243489bc24b80000008b7c243889bc24bc00000083c46ce9f2b5ffff8d642450ff70048b7c2404ff77088b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70705000000576a016a016a01ff742420ff742470ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424980000008b9c249c000000e8c9b4ffff8d6424305e8d64240c8b55008d52f43b55087305ff5528cd40895500c742fc020000005f897a04c70231000000f6042401752e5f8b0f8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070b00000083c40ceb278d6424108b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707030000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a8b7c244c8b3f83ff0175528b7c24408b3f8b7424408b3683c602710ab8f80466b18b5d04ff238b4c244089318b74243c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c243c8931eb648b7c244c8b3f83ff0375528b7c24408b3f8b7424408b3683c602710ab8f80466b18b5d04ff238b4c244089318b74243c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c243c8931eb078b7c244c8b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c24448917897704c7470803000000b801000000c25000ff7004ff7008ff700c8b7c240cff77046a016a018b7c240c8b3f83ff130f85e90000008b7c240c8b7f048b3f83ff057507bf03000000eb05bf0100000083ff030f85c60000008b7c240c8b7f048b77048b7c24508b7ffcc1e708c1ef0783cf013bf7720e8d642420b8783266b18b5d04ff238b7c24508b7c77fe8b1789d683fa0175408b77048b57088b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8b542408895708897704c707b8612cb18b742468893424897c2404eb3683fe0575368b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70738622cb18b742468893424897c2404e9600100008d642420b8d4c066b18b5d04ff238b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742460893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70705000000576a016a016a01ff742430ffb42480000000ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a00000008b9c24ac000000e8fcb0ffff8d6424305e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a895704c707d0622cb1893424897c2404ff3424ff7424088b7c2418ff378b7c24208b3f83ff2b75398b7c24208b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542408895704c707010000006a016a015657e9b30900006a016a018b7c24288b3f83ff130f85e90000008b7c24288b7f048b3f83ff057507bf03000000eb05bf0100000083ff030f85c60000008b7c24288b7f048b77048b7c24648b7ffcc1e708c1ef0783cf013bf7720e8d642434b8783266b18b5d04ff238b7c24648b7c77fe8b1789d683fa0175408b77048b57088b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8b54241c895708897704c70768632cb18b742410893424897c2404eb3683fe0575368b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e8632cb18b742410893424897c2404e9830100008d642434b8c8c166b18b5d04ff238b7c2474ff378b7c24788b3f83c702710e8d642438b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742474893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70705000000576a016a016a01ff742444ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b4424786a01ff74243cff7424585483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b80000008b9c24bc000000e83aaeffff8d64242c5e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a895704c70758642cb1893424897c24045f598b74246c8b54246857ff742404ff7424245652ff74241851b801000000bb01000000e8454c000089c78d64242ce9720600008b70048b50088b480c8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937576a016a016a018b7c2414ff7708ff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464e9360500008b7d008d7fec3b7d087305ff5528cd01897d00c747fc04000000c7470c58a766b1c74708a8ba66b1894704c7070d000000ff74240457ff742408ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b442440895c24588b5c243c894c245c895424608b542444897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc24980000008b7c243489bc249c0000008b7c243889bc24a000000083c450e9a6abffff8d642450ff70048b7c24588b3f83ff0175568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424488932eb688b7c24588b3f83ff0375568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424488932eb078b7c24588b7f04578b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707090000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c2404897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d00000057ff742460ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff742428ff742444ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c575652515350ffb42484000000ff74247c8b842488000000bb01000000e8f24a000089c68d64242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70224be66b18b75008d76f43b75087305ff5528cd04897500c746fc020000005f8d64240c897e04c706090000008b7c24448917897704c7470801000000b801000000c250008b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a018b7c2414ff7720ff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c548304243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b54247c8b84248c0000008b9c2490000000ff128d6424348b34248b7c2404ff7424088b542464f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000b80500000083e8016bc000700583c001eb11b805000000bb0100000057e80e1c00005fa801740989c283c2027002eb0ebb0300000057e8cd40faff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244c89f88b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e93c1c00008d642404f6442404010f854b0100008b7c2404ff378b7c2408ff77048b7c2408ff378b7c240cff77046a016a016a01ff742454ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c0000008bbc249c0000008bb424980000008b9424940000008b8c24900000008b9c248c0000008b8424880000006a016898be66b1ff7424405483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c24cc000000e8d0a5ffff8d64242c5e5a8d6424088b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f0489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e8d642404891424897424043b650c7303ff552ce9aafeffff8b3c248b3f897c24085f8b7f04897c24088b7c24048b542408be0100000083c40cf7c70100000075348b078b4f048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89cf3b650c7305ff552ccdc4ebc48b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470401000000c707010000005657f6442404010f85c60100008b7c24048b1f8b7c2404ff77048b7c24048b378b7c24048b7f048b542404ff72086a016a016a013b74241c0f8d320100008b5424388b0a8b5424388b520483fe017d098d642448e90d0100003bf10f8d0101000089f1c1e90383c901d1e90fb6140a8d14550100000089f183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123d183fa017507ba03000000eb05ba0100000083f20283fa030f85bc00000083c60256710e8d64244cb8f80466b18b5d04ff2389fe83c60256710e8d642450b8f80466b18b5d04ff238b5424288b45008d40f43b45087305ff5528cd8c894500c740fc020000008978048918ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54241489570489378b742404897424085e8d64240489742404897c2408eb308d642448b8d88d66b18b5d04ff2383c602710e8d642448b8f80466b18b5d04ff23893424897c24048b7c240c897c24085f5e598b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204893a8b742404895424088974240c3b650c7303ff552c83c408e92ffeffff5f8b7f0883c430e9a8fbffff8b7c240883ff010f854d0200008b7c240483ff010f85320200005f83c408578b4424048b5c2414e86c47000089c78b74240c3b74241c75095983c404e98b0000008b74241c2b74240c710e8d64242cb8f80466b18b5d04ff2383c6018b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897204c702350000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000005a895104893183c4048b75008d76e83b75087305ff5528cd82897500c746fc05000000c74610902d66b1c7460c01000000c7460801000000897e04c7061f000000f64424100175578b7c24108b178b7d008d7fec3b7d087305ff5528cd46897d00c747fc0400000089570c8b542408895708897704c707090000008b55008d52f43b55087305ff5528cd82895500c742fc02000000894a04893ae9ab0000008b55008d52f43b55087305ff5528cd42895500c742fc020000008b7c2408897a04c7020b0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c707050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24648917897704c7470803000000b80100000083c420c250008d642434b884bd66b18b5d04ff238b7c24088b3f8b742408ff7604f6442408010f852b0100008b7424088b368b542408ff7204ff378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000576a016a016a01ff74244cffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb424940000008bbc24940000008bb424900000008b94248c0000008b8c24880000008b9c24840000008b8424800000006a01ff74243cff7424505483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c24c4000000e8959fffff8d64242c598d6424108b7424045a8d642404890c2489542404897424083b650c7303ff552ce963fcffff8d642438b884bd66b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000f7c7010000000f85900000008b178b770483f901756289d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e9091400008d64240489ca83ea02710ab8f80466b18b5d04ff2389d189f73b650c7305ff552ccd82e964ffffffb8643c66b18b5d04ff23f7c60100000075248b5e0489f983c102710ab8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd43bd77c0ab81cc366b18b5d04ff2383c202710ab8f80466b18b5d04ff2383ea016bd204710ab8f80466b18b5d04ff2383c2018b7c241c8b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460cc46866b1c7460801000000897e04c70607000000ff74244c8b44244c8b5424488b4c24448b5c2440895c244889c38b0424894c244c89542450897424548b7c2404897c244483c444e9081300008d6424048b3c2483ff0175088d64243489c1eb0e8b1c24e8cc42000089c18d6424348b55008d52f43b55087305ff5528cd02895500c742fc020000005f897a04c702090000008b7424588b7c2464890e895604897e08b80100000083c414c25000f7c60100000075288b4e0489fa83c202710e8d642458b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b9c24880000008b442408e8aa42000089c68bbc24880000002b3c248d642404710e8d642458b8f80466b18b5d04ff2383c701578b7c246c8b55008d52e83b55087305ff5528cdc0895500c742fc050000008b4c2404894a10897a0cc7420801000000c7420401000000c7020b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b0c24894f0489178b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489386a016a018bbc24a40000008bb424a0000000ff74240cff74240c57568d5c2410e874420000ff3424ff7424088b7c241c83ff0175068b74243ceb0f8b44243c8b5c241ce81d45000089c68bbc24ac0000008b178bbc24ac0000008b3f83c702710e8d64246cb8f80466b18b5d04ff238b8c24ac00000089398bbc24a80000008b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707050000008b8c24a800000089398b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008b4c2414894f148b4c2410894f1059894f0c8b4c2434894f0889570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706470000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c418e96efdfffff7c70100000075288b570489de83c602710e8d642448b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd8aebd08b7c247c8b378b7c247c8b3f83c702710e8d642448b8f80466b18b5d04ff238b54247c893a8b7d008d7ff43b7d087305ff5528cd4a897d00c747fc02000000897704c707070000008b55008d52e83b55087305ff5528cdca895500c742fc05000000897210c7420c110000008b742404897208894a04c702010000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895604c70605000000f6c301740f89d883e8016bc002700583c001eb10b805000000515756e8de0e00005e5f59a801740989c383c3027002eb12bb03000000515756e89933faff5e5f5989c38b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702050000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0c8953088b142489d1895304c7034d0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c7020d0000008b45008d40f43b45087305ff5528cdc6894500c740fc020000008b5c2414895804c700090000008b5d008d5bec3b5d087305ff5528cdc7895d00c743fc0400000089430cc743080b00000089c9894b048d642404c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442414894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000005a8917893424897c2404ff3424ff7424088b5c247c8b442438e8b441000089c7578bbc249c00000083ff037507bfffffffffeb2e8bbc24800000008b3f8bb424800000008b3683c602710e8d64244cb8f80466b18b5d04ff238b9424800000008932578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b55008d52f03b55087305ff5528cd40895500c742fc030000008b7c2418897a088b7c241c897a04c702190000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008b4c240c894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ffb424a4000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb424980000008bbc24980000008bb424940000008b9424900000008b8c248c0000008b9c2488000000ff742430ff742440ff742440ffb42480000000ff74243cff74243cff74243cffb42480000000ffb424a0000000ff742444ff742444ff742444ff742444ff742444ff742444ff742444ff742444ff7424445756525153ffb424cc000000ffb424dc000000ffb424980000008b8424dc0000008b9c24a0000000e81240000089c38d6424348bbc249c0000008b3f83ff0175658bbc24900000008b3f8bb424900000008b3683c602710e8d642450b8f80466b18b5d04ff238b94249000000089328bb4248c0000008b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b94248c0000008932eb7d8bbc249c0000008b3f83ff0375658bbc24900000008b3f8bb424900000008b3683c602710e8d642450b8f80466b18b5d04ff238b94249000000089328bb4248c0000008b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b94248c0000008932eb0a8bbc249c0000008b7f048bb424a000000083fe03750b8d64245089d9e9dc0000008b75008d76f43b75087305ff5528cd88897500c746fc020000008b542430895604c706090000008b55008d52ec3b55087305ff5528cdc8895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c7060d0000008b4d008d49f43b4d087305ff5528cdc8894d00c741fc020000005a895104c701070000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104893183c44c8b55008d52f43b55087305ff5528cd82895500c742fc02000000897a04c702090000008b7424448b7c2450890e895604897e08b801000000c25000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c2430ff7710ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a01ff7424446a01ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424900000008b9c24a4000000ff1289c68d64242cbf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c2434ff7718ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b442468ff742454ff742460ff742440ff742440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a00000008b9c24a8000000ff1289c78d64242c578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54241c895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c897704c707070000008b55008d52f43b55087305ff5528cd80895500c742fc020000008b742414897204c702090000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b0000008b542418895604c706210000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b5c240ceb0b8b44240ce86c44000089c383fb0175035beb0e8b0424e8be44000089c38d64240483fb0175035beb0e8b0424e80c45000089c38d64240483fb0175065f83c40ceb0e8b0424e85745000089c78d6424108b75008d76f43b75087305ff5528cd80897500c746fc020000005a895604c706090000008b54246c83c424f7c70100000075348b078b4f048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89cf3b650c7305ff552ccdc4ebc48b7c24448917897704c7470801000000b801000000c25000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c25000f400|@11555,1,@750|22,0,@5524 493,0,@9455 530,0,@9455 578,0,@9455 630,0,2 675,0,@9455 727,0,2 769,0,@9455 821,0,2 873,0,@5525 911,0,2 1118,0,0 1180,0,@9455 1232,0,2 1277,0,@9455 1329,0,2 1495,1,@5526 1527,0,@9455 1686,0,2 1722,0,3 1975,0,4 1992,0,0 2337,0,4 2370,0,@11311 2377,0,@11494 2386,0,6 2896,0,@9455 2948,0,2 2980,0,@9455 3032,0,2 3074,0,2 3304,0,@9455 3356,0,2 3411,0,@9958 3422,1,@4895 3451,0,2 3458,1,@5527 3497,0,2 3523,0,@9455 3582,0,4 3617,0,2 3652,0,6 3723,0,@9455 3775,0,2 3809,0,0 3840,0,@9455 3883,0,@9455 3941,0,2 3982,0,@9455 4001,0,0 4060,0,@9455 4097,0,@9455 4356,0,@10423 4482,0,3 4520,0,5 4555,0,2 4708,0,@10423 4835,0,3 4871,0,2 4889,0,2 4894,0,0 4900,1,@5527 4919,0,1 4925,1,@4895 4963,0,2 4979,0,0 4984,0,0 5024,0,@9455 5076,0,2 5121,0,@9455 5173,0,2 5215,0,@9455 5267,0,2 5308,0,@9455 5360,0,2 5398,0,@9455 5604,0,2 5842,0,0 5924,0,27 5959,0,1 5997,0,0 6006,0,26 6041,0,6 6139,0,@9455 6197,0,2 6217,0,0 6252,0,@9455 6298,0,5 6333,0,2 6403,0,4 6439,0,5 6452,0,16 6487,0,6 6522,0,3 6555,0,0 6652,0,2 6692,0,3 7034,0,27 7069,0,1 7107,0,0 7116,0,26 7151,0,6 7239,1,@5528 7280,0,4 7301,0,1 7327,0,0 7344,0,0 7400,0,2 7405,1,@5527 7423,0,1 7428,1,@4895 7465,0,2 7472,0,@10214 7512,0,0 7569,1,@5529 7623,0,@9455 7675,0,2 7720,0,@9455 7772,0,2 7814,0,@9455 7866,0,2 7935,0,0 7943,0,@10089 7987,0,4 8023,0,5 8036,0,16 8071,0,6 8145,0,4 8178,0,@10165 8213,0,0 8230,0,@10089 8272,0,2 8519,0,4 8552,0,@10165 8587,0,0 8604,0,@10093 8648,0,@10189 8667,0,0 8684,0,1 8691,0,0 8711,0,0 8719,0,@10089 8785,0,0 8821,0,5 8834,0,16 8869,0,6 8943,0,4 8976,0,@10165 9011,0,0 9028,0,@10093 9070,0,@10189 9144,0,0 9159,0,0 9203,0,0 9239,0,5 9252,0,16 9287,0,6 9361,0,4 9394,0,@10165 9429,0,0 9466,0,0 9491,0,@11497 9505,0,@11500 9547,0,2 9794,0,4 9827,0,@10165 9862,0,0 9879,0,@10093 9949,0,1 9956,0,0 9962,0,0 10009,0,1 10016,0,1 10023,0,0 10029,0,0 10245,1,@5530 10284,0,0 10321,1,@5531 10360,0,0 10411,0,11 10464,0,@9455 10519,0,4 10552,0,0 10595,0,6 10628,0,0 10678,0,@10986 10724,0,0 10765,0,4 10822,1,@5529 10845,0,0 10928,0,@9455 10980,0,2 11021,0,@9455 11073,0,2 11101,0,@9455 11134,0,@9990 11164,0,@9455 11208,0,0 11215,0,0 11221,0,5 11257,0,5 11266,0,16 11301,0,6 11371,0,4 11387,0,0 11392,0,0 11431,0,@9988 11474,0,@9455 11520,0,1 11540,0,0 11545,0,0 11591,0,4 11648,1,@5529 11657,0,@11504 11760,0,@11507 11904,0,@9455 11956,0,2 12001,0,@9455 12053,0,2 12082,0,@9455 12109,0,@9455 12166,0,0 12172,0,5 12208,0,5 12217,0,16 12252,0,6 12322,0,4 12338,0,0 12343,0,0 12358,0,@11508 12397,0,@9455 12445,0,@10755 12452,0,0 12461,0,3 12514,1,@5529 12527,0,@11511 12569,0,@9455 12621,0,2 12662,0,@9455 12714,0,2 12762,0,28 12771,0,18 12806,0,6 12876,0,4 12892,0,0 12897,0,0 12948,0,@9455 13000,0,2 13032,0,@9455 13069,0,@9455 13123,0,@9455 13175,0,2 13207,0,@9455 13259,0,2 13331,0,3 13373,0,4 13408,0,2 13434,0,@9455 13486,0,2 13527,0,22 13562,0,6 13678,0,@9455 13791,0,2 14064,0,@9455 14110,0,5 14145,0,2 14171,0,@9455 14223,0,2 14264,0,21 14299,0,6 14411,0,0 14451,0,@9455 14503,0,2 14544,0,21 14579,0,6 14663,0,27 14698,0,1 14736,0,0 14745,0,26 14780,0,6 14857,0,0 14870,0,0 14909,0,@9455 14964,0,2 15005,0,2 15038,0,@10015 15094,0,2 15127,0,@9455 15185,0,2 15232,0,5 15267,0,6 15306,0,3 15644,0,@9455 15699,0,2 15753,0,@9455 15808,0,2 15905,0,27 15940,0,1 15978,0,0 15987,0,26 16022,0,6 16144,0,3 16214,0,4 16250,0,5 16259,0,16 16294,0,6 16360,0,4 16381,0,0 16414,0,0 16533,0,0 16590,1,@5529 16641,0,0 16650,0,7 16660,1,@5532 16733,0,21 17275,0,@11514 17327,0,@9455 17379,0,2 17424,0,@9455 17476,0,2 17510,1,@5533 17693,1,@5534 17762,0,@9455 17814,0,2 17857,0,@9455 17909,0,2 17954,0,@9455 18006,0,2 18057,0,2 18320,0,5 18332,0,16 18367,0,6 18386,0,@9455 18427,0,0 18436,0,26 18471,0,6 18569,0,4 18586,0,0 18601,0,@11531 18994,0,@9455 19046,0,2 19088,0,2 19296,0,24 19343,0,5 19387,0,1 19451,0,@9455 19503,0,2 19544,0,@9455 19596,0,2 19646,0,4 19662,0,1 19667,0,0 19724,0,1 19731,0,0 19779,0,@9988 19852,0,@5550 19908,0,@5551 19933,0,@11536 19964,0,@9455 20016,0,2 20058,0,2 20269,0,@5552 20346,0,0 20395,0,1 20402,0,0 20450,0,@9988 20523,0,@5553 20579,0,@5554 20604,0,@11540 20635,0,@9455 20687,0,2 20729,0,2 20975,0,@5555 21013,0,0 21018,0,0 21023,1,@5556 21299,0,@11311 21306,0,@11494 21315,0,6 21634,0,@9455 21686,0,2 21731,0,@9455 21783,0,2 21825,0,@9455 21877,0,2 21919,0,4 21955,0,5 21968,0,16 22003,0,6 22149,0,0 22154,1,@5557 22231,0,@11524 22271,0,4 22287,0,0 22292,0,0 22594,0,0 22678,0,0 22689,0,2 22707,0,2 22712,0,0 22718,1,@5527 22737,0,1 22743,1,@4895 22781,0,2 22836,1,@5529 23006,0,@11527 23212,0,0 23311,0,0 23317,0,0 23450,0,0 23478,0,1 23485,0,0 23512,0,@9455 23534,0,@9455 23613,0,6 23680,0,@11145 23699,0,@9455 23840,1,@5558 23880,0,@9455 23921,0,0 23930,0,26 23965,0,6 24033,0,@9922 24040,0,0 24047,0,0 24056,0,15 24114,0,4 24189,0,5 24224,0,2 24259,0,6 24357,0,4 24373,0,1 24378,0,0 24393,0,@11520 24472,0,2 24730,0,@11520 24813,0,0 24878,0,4 24935,1,@5529 24951,0,@9455 24980,0,@10105 25008,0,@9455 25038,0,@11546 25053,0,@9455 25071,0,@9455 25119,0,@10755 25126,0,0 25135,0,3 25192,1,@5529 25220,1,@5559 25262,0,4 25283,0,0 25316,0,@9455 25354,1,@5560 25381,0,@9455 25437,0,0 25444,0,0 25450,0,5 25552,1,@5561 25587,1,@5562 25621,0,@9455 25679,0,2 25779,0,35 25814,0,1 25881,0,@9455 25928,0,@9455 25974,0,3 26010,0,8 26026,0,0 26061,0,2 26086,0,2 26094,1,@5527 26115,0,1 26123,1,@4895 26163,0,2 26209,0,38 26244,0,6 26283,0,4 26319,0,5 26334,0,16 26369,0,6 26530,0,0 26560,1,@5563 26580,0,-1 26614,0,@9455 26666,0,3 26701,0,2 26747,0,12 26782,0,6 27094,1,@5564 27146,0,@9455 27204,0,2 27261,0,@9455 27319,0,2 27402,0,4 27438,0,5 27447,0,16 27482,0,6 27518,0,3 27618,0,4 27639,0,0 27720,0,0 27804,0,0 28027,0,0 28285,0,5 28320,0,2 28359,0,3 28392,0,0 28463,0,3 28502,0,4 28538,0,5 28551,0,16 28586,0,6 28619,0,0 28672,1,@5567 28690,1,@5568 28712,1,@5569 28737,1,@5570 28779,0,4 28862,0,0 28867,0,0 28948,0,0 5525:D3,232|3b650c7305ff552ccd0589d78b770889f28b3689d18b1283c202710ab8f80466b18b5d04ff2389118b55008d52e83b55087305ff5528cdc1895500c742fc05000000897210c7420c190000008b7f04897a08894204c702010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@11492,1,@704|29,0,@9455 72,0,12 87,0,0 122,0,2 157,0,3 190,0,0 5526:D3,652|8d7c24a43b7d0c7305ff5530cd0953a8010f85560200008b38ff70048b3f8b0fff77048b7c2454ff378b7c24588b3f83c702710e8d642410b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707050000008b742454893e8b7d008d7ff43b7d087305ff5528cd02897d00c747fc020000008b142489d6895704c707050000008b5424508b52fcc1e208c1ea0783ca013bca720e8d642410b8003566b18b5d04ff238b542450897c4afe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c70705000000576a016a016a01ff74245cff742428ff742470ff742470ff742468ff742468ff742478ff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a01ff742440ff742454548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d642430ff34246a016a01ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424605483042430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b8424a00000008b9c2484000000e8d4fdffff8d6424305e5f8d6424148b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d6424108b74244c8916897e04b801000000c24c008b742450c706010000008b3c24897e048d642404b801000000c24c00f40000|@11493,1,@705|57,0,@9455 109,0,2 155,0,2 184,0,@10015 234,0,2 614,0,0 627,0,0 642,0,0 5527:D3,44|b9b07246b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@11495,1,@706|1,0,@19845 5528:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@707| 5529:D3,1144|3b650c7305ff552ccd09538b3089f783fe010f85c5020000ff70048b50088b480c8b701083f90375328b5c24188b1b83fb0175278d6424048b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100083f90375328b4c24188b0983f90575278d6424048b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100083fa0375328b4c24188b0983f90575278d6424048b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100083fa0375328b5424188b1283fa0175278d6424048b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100083fe0375328b7424188b3683fe0975278d6424048b7c24108b7424148b142489178d642404897704c7470801000000b801000000c210005e83fe03752e8b7424148b3683fe0775238b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100089fe89f783fe0175568b7c240c8b3f8b74240c8b3683c602710e8d642404b8f80466b18b5d04ff238b54240c89328b7424088b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424088932eb5e83ff0375568b7c240c8b3f8b74240c8b3683c602710e8d642404b8f80466b18b5d04ff238b54240c89328b7424088b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424088932eb038b78048b7424148b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008b0c24894a048d64240489328b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c240c8917897704c7470801000000b801000000c2100089fe83ff0375238b7c24108b7424148b142489178d642404897704c7470801000000b801000000c2100089f783fe0175568b7c240c8b3f8b74240c8b3683c602710e8d642404b8f80466b18b5d04ff238b54240c89328b7424088b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424088932eb5e83ff0375568b7c240c8b3f8b74240c8b3683c602710e8d642404b8f80466b18b5d04ff238b54240c89328b7424088b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424088932eb038b78048b7424148b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008b0c24894a048d64240489328b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706090000008b7c240c8917897704c7470801000000b801000000c21000f4|@11496,1,@708|79,0,0 84,0,0 134,0,0 139,0,0 189,0,0 194,0,0 244,0,0 249,0,0 299,0,0 304,0,0 351,0,0 356,0,0 394,0,@9455 446,0,2 485,0,@9455 537,0,2 588,0,5 597,0,16 632,0,6 705,0,4 721,0,0 726,0,0 763,0,0 768,0,0 804,0,@9455 856,0,2 895,0,@9455 947,0,2 998,0,5 1007,0,16 1042,0,6 1115,0,4 1131,0,0 1136,0,0 5530:D3,1004|8d7c24983b7d0c7305ff5530cd09a8010f85b20300008b38ff7004ff3783fb010f85a40100006a016a016a01ff742464ff742424ff742424ff742478ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a01ff742430ff7424305483042444ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424840000008b8424940000008b9c2480000000ff128d642438ff3424ff7424086a016a016a01ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b442464ff742448548304243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243c5756525153508b8424b4000000bb01000000e877feffff8d642438595a5e8b7d008d7ff43b7d087305ff5528cd46897d00c747fc020000008977048b342489378d64241c8b742454890e895604897e08b801000000c25800ff33ff73046a016a016a01ff74246cff74242cff742428ffb42480000000ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a01ff742430ff7424305483042444ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424840000008b84249c0000008b9c2480000000ff128d642438ff3424ff7424086a016a016a01ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246cff742448548304243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243cff74243c5756525153508b8424bc0000008b9c24b0000000e89cfcffff8d642438595b5f8b75008d76f43b75087305ff5528cd8a897500c746fc020000008b5424188956048b142489168d6424248b55008d52f43b55087305ff5528cdca895500c742fc02000000895a0489328b742454890e895604897e08b801000000c258008b7c24548b7424588937c7470401000000c7470801000000b801000000c25800f4000000|@11503,1,@709|384,0,0 451,0,0 961,0,0 981,0,0 988,0,0 993,0,0 5531:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@710| 5532:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071300000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@711|50,0,9 102,0,0 5533:D3,156|3b650c7305ff552ccd09a8010f85800000008b4004ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893b8b7c24088b378b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707050000008b742408893e8b7c240857e899ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f400|@10030,1,@712|35,0,@9455 83,0,2 147,0,0 5534:D3,3708|8d7c24a43b7d0c7305ff5530cd0953a8010f853b0b00008b38ff70048b3789f283fe010f85c10200008b47048b57088b7c240489feff3789f689f7ff760489ffff77088b7c24588b3f8b7424588b3683c602710e8d642414b8f80466b18b5d04ff238b4c245889318b4d008d49f83b4d087305ff5528cd85894d00c741fc0100000089118b7424548b1e8b75008d76f43b75087305ff5528cd8f897500c746fc02000000895e04890e8b4c245489318b4d008d49f43b4d087305ff5528cd85894d00c741fc02000000895104893989d683ee018b5c240489df03de710e8d642414b8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd8f897500c746fc03000000895e08894e04c706010000008b5c24508b5bfcc1e308c1eb0783cb013bc3720e8d642414b8003566b18b5d04ff238b5c2450897443fe89d683ee0189ff03fe710e8d642414b8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd86897500c746fc030000008b1c24895e088d642404897e048b7c2404893e8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707330000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7020d0000008b4c245c8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917ff7424085657ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b44243c895c24588b5c2438894c245c89542460897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc24980000008b7c243489bc249c00000083c450e91afdffff8d64244089d683fa050f85a5010000ff77046a016a016a01ff742450ff742468ff742464ff742464ff74245cff74245cff74246cff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a0168cc5366b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b84248c0000008b9c2494000000ff128d6424305f8d64240cff3424ff74240857ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b74245c8b5424588b4c24548b5c24508b44244c8944244c8b44243c895c24508b5c2438894c2454895424588974245c8b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc249400000083c448e96afbffff8d64244883fe070f85fd020000ff77048b570489d6f6c2010f85c80200008b520483fa017507ba03000000eb05ba0100000083fa030f85ab0200008d64240489f78b3fff378b77048b7c2450ff378b7c24548b3f83c702710e8d642410b8f80466b18b5d04ff238b542454893a8b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707050000008b542450893a8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071b000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70705000000576a016a016a01ff74245cff742474ff742470ff742470ff742468ff742468ff742478ff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a01ff742440ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424900000008b9c24a0000000ff128d6424305f8d6424108b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d642404c706050000008b5424488b5afcc1e308c1eb0783cb018b142489d13bd3720e8d64240cb8003566b18b5d04ff238b54244889c989744afe8d642404ff3424ff74240857ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b74245c8b5424588b4c24548b5c24508b44244c8944244c8b44243c895c24508b5c2438894c2454895424588974245c8b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc249400000083c448e988f8ffff8d6424488b5c24508b7c244c578b442404e80207000089c757ff742404ff7424046a01e9ce030000ff7704ff77088b3c248b3783fe130f858701000089ff8b570489d68b1283fa057507ba03000000eb05ba0100000083fa030f856401000089f78d6424048b77048b7c24488b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24488b7c77fe8b7424488b4efcc1e108c1e90783c9018b342489f23bf1720e8d64240cb8003566b18b5d04ff238b74244889d2897c56fe8d642404ff3424ff742408ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b74245c8b5424588b4c24548b5c24508b44244c8944244c8b44243c895c24508b5c2438894c2454895424588974245c8b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc249400000083c448e9c9f6ffff8d6424486a016a016a01ff742454ff74246cff742468ff742468ff742460ff742460ff742470ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b84248c0000008b9c2498000000ff128d6424305f5e8d6424088b1683fa090f85540100008b56048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424488b5afcc1e308c1eb0783cb018b142489d13bd3720e8d64240cb8003566b18b5d04ff238b54244889c989744afe8d642404ff3424ff74240857ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b74245c8b5424588b4c24548b5c24508b44244c8944244c8b44243c895c24508b5c2438894c2454895424588974245c8b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc249400000083c448e9c0f4ffff8d6424488d64240cb840bd66b18b5d04ff238b74244c8b7c2450893e8b3c24897e048d642404b801000000c24c008b74240889f783fe0175288b7c240483ff0175115f83c40857ff742408ff7424086a01eb658d64241cb884bd66b18b5d04ff2389ff8b0789ffff7704f64424080175398b7c24088b1f89ffff77048b7c2460ff74240857e87603000089c18b7424045a8d642404890c2489542404897424083b650c7303ff552ceb848d642420b884bd66b18b5d04ff238b7c240889fe83ff01753e8b7c240483ff0175275b83c40883fb0175065f83c408eb0e8b0424e83107000089c78d64240cb801000000e9fa0000008d642420b884bd66b18b5d04ff2389f689f7ff3689ffff7704f644240c010f85c80000008b74240c89f7ff3689ffff7704ff742458ff742458ff74247cff74247cff742478ff742478ff742478ffb42488000000ff74247cff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff74243cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c575652515350ffb424a00000008b8424840000008b5c247ce8c006000089c18d64242c8b7424085a8d64240c890c2489542404897424083b650c7303ff552ce9d9feffff8d642428b884bd66b18b5d04ff23f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c245483ff01750489c7eb0b8b5c2454e8e10d000089c7ff3424ff74240857ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b74245c8b5424588b4c24548b5c24508b44244c8944244c8b44243c895c24508b5c2438894c2454895424588974245c8b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc249400000083c448e98af1ffff8d642448f400|@11530,1,@728|89,0,@9455 226,0,@9455 269,0,0 298,0,@10015 331,0,@9455 419,0,25 454,0,6 841,0,@10423 1213,0,1 1220,0,0 1268,0,@9455 1320,0,2 1361,0,13 1399,0,2 1610,0,2 1644,0,@10015 1930,1,@5535 1987,0,1 1994,0,0 2041,0,@9988 2088,0,@10015 2444,0,@11507 2578,0,2 2612,0,@10015 2889,0,@11517 2919,0,0 2968,0,@11520 3014,1,@5536 3055,0,@11520 3103,1,@5541 3114,0,0 3128,0,@11520 3316,1,@5542 3364,0,@11520 3451,1,@5549 5535:D3,156|3b650c7305ff552ccd09a8010f85800000008b4004ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893b8b7c24088b378b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707050000008b742408893e8b7c240857e899ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f400|@10030,1,@713|35,0,@9455 83,0,2 147,0,0 5536:D3,208|3b650c7305ff552ccd098b088b78048b77088b7d008d7ff43b7d087305ff5528cd4a897d00c747fc02000000895f04c707050000008b5424048b52fcc1e208c1ea0783ca013bca720ab8003566b18b5d04ff238b542404897c4afebf01000000f7c60100000075248b4e0489fa83c202710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc8ebd483c702710ab8f80466b18b5d04ff235389fbb801000000e83c000000e8a702000089c383fb0175078b442408c208008b4424088b3c24897c240883c408e9e2020000f400|@11526,1,@718|49,0,2 74,0,@10015 92,0,0 115,0,@9455 146,0,@9455 159,0,0 164,1,@5537 169,1,@5539 202,1,@5540 5537:D3,504|3b650c7305ff552ccd09508b3c2489f83bfb0f85850000008d6424048b7c24048b75008d76e83b75087305ff5528cd88897500c746fc05000000c7461001000000c7460c81000000895e08897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c2040089c083c002710e8d642404b8f80466b18b5d04ff238b7c240857e844ffffff89c7be0500000083ee016bf600700789f083c001eb11b805000000bb0100000057e836e4ffff5fa801740989c683c6027002eb0ebb0300000057e8f508faff5f89c68b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304c703050000005983e9016bc904710ab8f80466b18b5d04ff2383c1018b5424048b75008d76e43b75087305ff5528cd8e897500c746fc06000000c7461401000000895e10894e0cc74608c46866b1c746040b00000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702410000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb01750589f8c2040089f88b3c24897c240483c404e916000000f400|@11522,1,@715|61,0,0 68,0,64 80,0,0 115,0,6 148,0,0 169,0,@9455 191,0,2 211,0,2 216,0,0 222,1,@5527 241,0,1 247,1,@4895 285,0,2 299,0,@9455 344,0,0 357,0,@10755 364,0,5 401,0,32 436,0,6 469,0,0 498,1,@5538 5538:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@714| 5539:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b818be66b1c3f4|@10825,1,@716|66,0,@11523 5540:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@717| 5541:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@719| 5542:D3,528|3b650c7305ff552ccd09538b4004ff70088b5424508b5c244c6a01ff1289c68b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b54244c893a8b7c24488b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707050000008b542448893a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070f000000578b442408e87d01000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240457ff742448ff742454ff742454ff742450ff742450ff742450ff742450ff742474ff742474ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c575652515350ff74247cffb424880000008b842480000000bb01000000e83a0100008d64243c8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c707270000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8f204000089c383fb0175078b44244cc24c008b44244c8b3c24897c244c83c44ce935050000f4|@11529,1,@726|53,0,@9455 105,0,2 144,0,0 153,0,7 163,1,@5543 353,0,0 358,1,@5544 404,0,19 439,0,6 472,0,0 490,1,@5547 523,1,@5548 5543:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071300000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@720|50,0,9 102,0,0 5544:D3,864|8d7c24a43b7d0c7305ff5530cd0953a8010f85b5000000ff30ff70046a016a016a01ff742468ff742428ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016898be66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424900000008b5c2478ff128d6424308b3424ff742404bf01000000e9a50000008d6424048b7c24048b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702090000008b7c24088b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b000000897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c25000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c241c83c70257710e8d642424b8f80466b18b5d04ff23ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b8424a00000008b9c2488000000e899fdffff8d64243c8b54241c83ea016bd204710e8d642420b8f80466b18b5d04ff2383c2018b7424288b7d008d7fe43b7d087305ff5528cd45897d00c747fc06000000c74714010000008b4c2404894f1089570cc74708c46866b1c747040b00000089378b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e83600000089c383fb0175075883c41cc25000588b7c241c897c246c83c46ce97b000000f40000|@11528,1,@723|109,0,@11527 195,0,0 243,0,4 283,0,5 292,0,16 327,0,6 360,0,0 445,0,@9455 636,0,@9455 681,0,0 698,0,@10755 705,0,5 742,0,32 777,0,6 810,0,0 826,1,@5545 857,1,@5546 5545:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@721| 5546:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@722| 5547:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@724| 5548:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@725| 5549:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@727| 5550:D3,108|3b650c7305ff552ccd058b308b78048b4a088b5a0c2bcb710ab8f80466b18b5d04ff2383c10189fb83eb0103cb710ab8f80466b18b5d04ff238b45008d40e83b45087305ff5528cdc6894500c740fc050000008948108b520489500c897008897804c70043000000c3f40000|@11534,1,@729|26,0,@9455 48,0,@9455 100,0,33 5551:D3,132|3b650c7305ff552ccd058b088b700483ee016bf604710ab8f80466b18b5d04ff2383c6018b7d008d7fe43b7d087305ff5528cd46897d00c747fc06000000c7471401000000894f1089770cc74708c46866b1c747040b0000008b720489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70041000000c3f400|@11535,1,@730|24,0,@9455 65,0,0 78,0,@10755 85,0,5 125,0,32 5552:D3,132|3b650c7305ff552ccd058b088b700483ee016bf604710ab8f80466b18b5d04ff2383c6018b7d008d7fe43b7d087305ff5528cd46897d00c747fc06000000c7471401000000894f1089770cc74708c46866b1c747040b0000008b720489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70041000000c3f400|@11535,1,@731|24,0,@9455 65,0,0 78,0,@10755 85,0,5 125,0,32 5553:D3,108|3b650c7305ff552ccd0589c78b72088b4a0c2bf1710ab8f80466b18b5d04ff2383c60189f983e90103f1710ab8f80466b18b5d04ff238b45008d40e83b45087305ff5528cdc4894500c740fc050000008970108b720489700c897808c7400401000000c7000b000000c3f400|@11538,1,@732|23,0,@9455 45,0,@9455 95,0,0 101,0,5 5554:D3,92|3b650c7305ff552ccd0589c783ef016bff04710ab8f80466b18b5d04ff2383c7018b45008d40e83b45087305ff5528cd84894500c740fc05000000897810c7400cc46866b1c74008010000008b7a04897804c70007000000c3f40000|@11539,1,@733|21,0,@9455 65,0,@10755 72,0,0 84,0,3 5555:D3,92|3b650c7305ff552ccd0589c783ef016bff04710ab8f80466b18b5d04ff2383c7018b45008d40e83b45087305ff5528cd84894500c740fc05000000897810c7400cc46866b1c74008010000008b7a04897804c70007000000c3f40000|@11542,1,@734|21,0,@9455 65,0,@10755 72,0,0 84,0,3 5556:D3,772|3b650c7305ff552ccd0950538b7424208b7c240489f93bfe750b8d6424088b44241cc21c008b7c241c8b178b7c241c8b7f0489c989ce83f9017d098d642408e9b502000089f689f13bf20f8da502000089cec1ee0383ce01d1ee0fb63c378d347d0100000089c989cf83e10f83f93f7207ba01000000eb0c33d283c202d1e9d3e283ca0123f283fe010f84f90100008b7c2418ff378b7c241c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74241c893e8b7c24188b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742418893e8b5424148b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b3424897704c707090000008b45008d40f43b45087305ff5528cd84894500c740fc020000008b7424048970048938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b5424148b44240cff1289c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c2404897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b54242c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b54240483c202710e8d642408b8f80466b18b5d04ff238b342483c6028d642404710e8d642404b8f80466b18b5d04ff238d642404525657ff7424248b7424248b5424208b4c241c8b5c24188b442414894424148b44240c895c24188b5c2408894c241c89542420897424248b3c24897c24288b7c2404897c242c83c410e97cfdffff8d64241089ff83c702710e8d642408b8f80466b18b5d04ff2357ff742404ff74242cff74242c8b74242c8b5424288b4c24248b5c24208b44241c8944241c8b44240c895c24208b5c2408894c2424895424288974242c8b3c24897c24308b7c2404897c243483c418e90ffdffff8d6424148d642408b8d88d66b18b5d04ff23f4|@11543,1,@735|114,0,0 165,0,@9455 217,0,2 265,0,4 339,0,6 388,0,5 401,0,16 436,0,6 527,0,@9455 553,0,@9455 660,0,@9455 762,0,@11145 5557:D3,764|8d7c24a83b7d0c7305ff5530cd0953a8010f855c020000ff30ff70046a016a016a01ff742464ff742424ff742470ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a0168b4c266b1ff7424305483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424940000008b5c247cff128d642434ff3424ff7424088b7c241c83c70257710e8d642424b8f80466b18b5d04ff23ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245cff74243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b84249c0000008b9c2484000000e880feffff89c38d6424386a016a016a018b7c24748b742470ff74240c54830424045756b898be66b1e84bd2ffff5e5b8d64240c8b4c241483e9016bc904710e8d642418b8f80466b18b5d04ff238d64241883c1018b5424048b7d008d7fe43b7d087305ff5528cd4e897d00c747fc06000000c7471401000000895f10894f0cc74708c46866b1c747040b00000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702410000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c250008b7c24088b75008d76e83b75087305ff5528cd80897500c746fc05000000c7461001000000c7460c010000008b14248956088d642404897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b7424508b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c25000f4|@11545,1,@736|113,0,@11544 218,0,@9455 416,0,@11527 421,1,@5529 448,0,@9455 497,0,0 510,0,@10755 517,0,5 554,0,32 589,0,6 660,0,0 667,0,0 686,0,0 721,0,6 5558:D3,176|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b388b4004f6c30175768b138b5b048b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e885ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f400|@11207,1,@737|21,0,0 27,0,@11204 82,0,4 165,0,@11204 5559:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@738| 5560:D3,124|3b650c7305ff552ccd09a80175668b308b40048b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000895f0489375783eb02710e8d642404b8f80466b18b5d04ff23e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@11549,1,@739|61,0,@9455 117,0,0 5561:D3,696|3b650c7305ff552ccd0953a8010f858a020000ff308b40046a016a018b7c24208b74241c8b5424188b4c2414575652518d5c2410e8c7ffffff8b1424ff7424048b7c240c8b1f8b3b83ff0b0f85140200008b73108b7c240c8b4f048b7c242483ef0103f9710e8d642414b8f80466b18b5d04ff233bf77505e9b00100008b7c242483ef0103f9710e8d642414b8f80466b18b5d04ff2383ff017d07bf03000000eb478b7c242483ee0103fe710e8d642414b8f80466b18b5d04ff23be010000008b4424202bf0710e8d642414b8f80466b18b5d04ff2383c6013bfe7e07bf03000000eb05bf0100000083ff030f843b0100008b7c241c8b378b7c241c8b3f83c702710e8d642414b8f80466b18b5d04ff238b44241c89388b7c24188b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704c707050000008b44241889388b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0cc747080b000000897704c707210000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897b04c7030d0000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704891f89fa8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707090000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f0489378b74240c8916897e04b80100000083c410c210008b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000005e8977048b74240889378b74240c8916897e04b80100000083c410c210008b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000005e8977048b74240889378b74240c8916897e04b80100000083c410c210005ebf943966b18b1789168b7f04897e04b801000000c21000f40000|@11550,1,@740|107,0,@9455 141,0,@9455 156,0,1 178,0,@9455 188,0,0 205,0,@9455 222,0,1 229,0,0 264,0,@9455 316,0,2 358,0,5 367,0,16 402,0,6 470,0,4 547,0,0 603,0,0 659,0,0 671,0,@10068 686,0,0 5562:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@741| 5563:D3,96|3b650c7305ff552ccd09a801754a8b4004ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893be8d1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@742|31,0,@9455 89,0,0 5564:D3,2444|8d7c24983b7d0c7305ff5530cd0983f801753d83fb01752e8b442464e87f0900008b7c246883ff01750489c2eb0b8b5c2468e8e909000089c28b7c24608b74245ce948060000b818c466b18b5d04ff238b38ff700483ff010f858e010000f6c3010f85770100008b7b04ff342457ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7424748b5424708b4c246c8b5c24688b442464894424648b442458895c24688b5c2454894c246c89542470897424748b3c24897c24788b7c2404897c247c8b7c240889bc24800000008b7c240c89bc24840000008b7c241089bc24880000008b7c241489bc248c0000008b7c241889bc24900000008b7c241c89bc24940000008b7c242089bc24980000008b7c242489bc249c0000008b7c242889bc24a00000008b7c242c89bc24a40000008b7c243089bc24a80000008b7c243489bc24ac0000008b7c243889bc24b00000008b7c243c89bc24b40000008b7c244089bc24b80000008b7c244489bc24bc0000008b7c244889bc24c00000008b7c244c89bc24c40000008b7c245089bc24c800000083c460e926feffff8d6424608d642404b818c466b18b5d04ff23ff37f6c3010f85890400008b3bff73048b74246483fe0375568b7424608b368b5424608b1283c202710e8d64240cb8f80466b18b5d04ff238b4c246089118b54245c8b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c245c8911eb048b742458568b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c70605000000568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b54247c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937576a016a016a01ff74246cff742430ffb42484000000ffb42484000000ffb42484000000ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b442468ff742428ff742448ff7424485483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424a00000008b5c247cff128d6424345a8d6424045f8d64240883ff03750b8d64240489d7e96b0100008b7c246883ff030f85f10000008b7c24188b4f048b7424488b7d008d7ff03b7d087305ff5528cd46897d00c747fc030000008977088b34248977048d642404c707370000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c7060300000083f90174708b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000c7470801000000894f04c707350000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c7010d0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704890f89faeb008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb6d8d6424048b7424108b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff742408ff74240457ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b74247c8b5424788b4c24748b5c24708b44246c8944246c8b442458895c24708b5c2454894c2474895424788974247c8b3c2489bc24800000008b7c240489bc24840000008b7c240889bc24880000008b7c240c89bc248c0000008b7c241089bc24900000008b7c241489bc24940000008b7c241889bc24980000008b7c241c89bc249c0000008b7c242089bc24a00000008b7c242489bc24a40000008b7c242889bc24a80000008b7c242c89bc24ac0000008b7c243089bc24b00000008b7c243489bc24b40000008b7c243889bc24b80000008b7c243c89bc24bc0000008b7c244089bc24c00000008b7c244489bc24c40000008b7c244889bc24c80000008b7c244c89bc24cc0000008b7c245089bc24d000000083c468e984f9ffff8d6424608d642408b818c466b18b5d04ff2383ff010f857102000083fe010f855e020000528b7c245c83ff0375568b7c24588b3f8b7424588b3683c602710e8d642404b8f80466b18b5d04ff238b54245889328b7424548b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424548932eb048b7c2450578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70705000000576a016a016a01ff742460ff742428ff742428ff74247cff74247cff74247cff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff742428ff742448ff7424545483042444ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424840000008b8424800000008b5c247cff128d642438588d6424045f8d6424048b74246083fe030f850901000083ff030f84fa0000008b7c24108b57048b7c24408b75008d76f03b75087305ff5528cd85897500c746fc03000000897e088b3c24897e048d642404c706370000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c7070300000083fa0174728d6424048b75008d76f03b75087305ff5528cd85897500c746fc03000000c7460801000000895604c706350000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc020000008946048916eb068d64240489c68b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c268008d642408eb048d642408c26800b884bd66b18b5d04ff238b07ff7704f7c60100000075668b0e8b5e04f6c101750489d0eb428b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104c701070000008b45008d40f43b45087305ff5528cdce894500c740fc0200000089500489085989c289de89cf3b650c7305ff552ccdc4e913fdffff8d642404b884bd66b18b5d04ff23f40000|@11554,1,@745|29,1,@5565 51,1,@5566 71,0,@11551 483,0,@11551 539,0,@9455 591,0,2 642,0,2 678,0,3 987,0,27 1022,0,1 1060,0,0 1069,0,26 1104,0,6 1215,0,5 1250,0,2 1669,0,@11551 1728,0,@9455 1780,0,2 1829,0,2 2091,0,27 2126,0,1 2168,0,0 2177,0,26 2212,0,6 2303,0,@11520 2370,0,3 2432,0,@11520 5565:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@743|50,0,3 102,0,0 5566:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@744| 5567:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@746| 5568:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@747| 5569:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@748| 5570:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@749| 5571:D3,6240|8dbc244cffffff3b7d0c7305ff5530cd0d52538b3883ff03750e8d642408b814c566b18b5d04ff23f7c7010000000f850e020000ff37ff7004ff7008ff700c8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e6a016a016a018b7c2430ff7708ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b442464ff7424586a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424940000008b9c24a0000000ff128d64242c8b1424ff7424048b7c240cbe01000000e9330f0000ff7004ff7008ff700c8b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04578b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e6a016a016a018b7c2428ff7708ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245cff7424506a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842490000000bb03000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c6a016a016a018b7c2448ff7708ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247cff7424706a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424b4000000bb03000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c8bbc2498000000ff378bbc249c0000008b3f83c702710e8d642464b8f80466b18b5d04ff238bb4249c000000893e8bbc2498000000ff378bbc249c0000008b3f83c702710e8d642468b8f80466b18b5d04ff238bb4249c000000893e8bbc249c000000ff378bbc24a00000008b3f83c702710e8d64246cb8f80466b18b5d04ff238bb424a0000000893e8bbc24a0000000ff378bbc24a40000008b3f83c702710e8d642470b8f80466b18b5d04ff238bb424a4000000893e8bbc24a4000000ff378bbc24a80000008b3f83c702710e8d642474b8f80466b18b5d04ff238bb424a8000000893e8bbc24a8000000ff378bbc24ac0000008b3f83c702710e8d642478b8f80466b18b5d04ff238bb424ac000000893e6a016a016a018bbc2480000000ff770cffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c8000000ffb424c80000008bbc24c80000008bb424c40000008b9424c00000008b8c24bc0000008b9c24b80000008b8424b4000000ffb424a80000006a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424f0000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b4c24508b3183fe0975638b74244c83fe01755a8b55008d52f43b55087305ff5528cd80895500c742fc020000008b742454897204c702090000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b0000008b542470895604c70621000000eb568b55008d52f83b55087305ff5528cd82895500c742fc010000008b74245489328b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c244c895e1089c9894e0c8b4c2470894e08895604c706230000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b4c24348b3183fe0975638b74243083fe01755a8b55008d52f43b55087305ff5528cd80895500c742fc020000008b742438897204c702090000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b0000008b542470895604c70621000000eb568b55008d52f83b55087305ff5528cd82895500c742fc010000008b74243889328b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2430895e1089c9894e0c8b4c2470894e08895604c706230000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b55008d52e83b55087305ff5528cd80895500c742fc050000008b7424748972108b74247889720c897a088b7c243089fe897a04c702110000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d000000578b4d008d49e83b4d087305ff5528cd40894d00c741fc050000008b7c242489fa897910c7410c030000008b7c243089790889f689f7897104c701010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70605000000568b75008d76f43b75087305ff5528cd84897500c746fc0200000089d2895604c70607000000568b55008d52e83b55087305ff5528cd80895500c742fc050000008b4c242889ce894a10c7420c010000008b4c2434894a0889ff897a04c702010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70705000000578b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c7070700000057b80500000083e8016bc000700583c001eb0fb805000000bb01000000e837b3ffffa801740989c683c6027002eb0cbb03000000e8f8d7f9ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008bbc2490000000897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b75008d76f43b75087303ff5528897500c746fc020000008b7c243c897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742448897704c7070700000057b80500000083e8016bc0ff700583c001eb0fb805000000bbffffffffe813b2ffffa801740989c683c6027002eb0cbb03000000e8d4d6f9ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008bbc249c000000897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b55008d52f43b55087305ff5528cd80895500c742fc020000008b742444897204c7020b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008b4c2448894a04c70207000000b80500000083e8016bc001700583c001eb15b805000000bb03000000575652e8ebb0ffff5a5e5fa801740989c383c3027002eb12bb03000000575652e8a6d5f9ff5a5e5f89c38b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc743080b0000008b8c249c000000894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442444894304c703070000008b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175068b5c240ceb0b8b44240ce8e907000089c383fb0175035beb0e8b0424e83b08000089c38d64240483fb0175068b5c2440eb0b8b442440e88508000089c383fb0175035beb0e8b0424e8d708000089c38d64240483fb0175068b5c245ceb0b8b44245ce82109000089c383fb0175065b83c434eb0e8b0424e87009000089c38d64243883fb0175065b83c41ceb0e8b0424e8bb09000089c38d64242083fb0175065a83c418eb0e8b0424e8060a000089c28d64241c8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c24588917897704c7470801000000b80100000083c414c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c6a016a016a018b7c2450ff7708ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb424980000008bbc24980000008bb424940000008b9424900000008b8c248c0000008b9c24880000008b842484000000ff7424786a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424b80000008b9c24c0000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74244c897704c70705000000576a016a016a018b7c2474ff7704ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc000000ffb424bc0000008bbc24bc0000008bb424b80000008b9424b40000008b8c24b00000008b9c24ac0000008b8424a80000006a01ff74243c6a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424e40000008b9c24ec000000ff128d64242c5e8d64240cbf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b5424288b3a83ff0975618b7c242483ff0175588b75008d76f43b75087303ff5528897500c746fc020000008b7c242c897e04c706090000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc747080b0000008b74244c897704c70721000000eb568b75008d76f83b75087305ff5528cd04897500c746fc010000008b7c242c893e8b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2424894f1089d289570c8b54244c895708897704c707230000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b54240c8b3a83ff0975618b7c240883ff0175588b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707090000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c244c897e04c70621000000eb568b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008b74241089378b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c2408894e1089d289560c8b54244c895608897e04c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610010000008b7c2454897e0cc74608010000008b7c244889fa897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd85897500c746fc050000008b4c2464894e108b4c244c894e0c8b4c2450894e0889d2895604c7060d0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c3eb07e86104000089c383fb0175068b5c2418eb0b8b442418e8af04000089c383fb0175035beb0e8b0424e80105000089c38d64240483fb0175068b5c2434eb0b8b442434e84b05000089c383fb0175065b83c40ceb0e8b0424e89a05000089c38d64241083fb0175065b83c41ceb0e8b0424e8e505000089c38d64242083fb0175065f83c438eb0e8b0424e83006000089c78d64243cb80500000083e8016bc000700583c001eb11b805000000bb0100000057e8eca6ffff5fa801740989c283c2027002eb0ebb0300000057e8abcbf9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9f60500008d642404f400|@11562,1,@769|31,0,@11558 85,0,@9455 137,0,2 169,0,@9455 221,0,3 253,0,@9455 305,0,3 337,0,@9455 389,0,3 569,0,0 620,0,@9455 672,0,2 717,0,@9455 769,0,2 811,0,@9455 863,0,3 895,0,@9455 947,0,3 1103,0,1 1125,0,0 1386,0,1 1408,0,0 1506,0,@9455 1552,0,@9455 1598,0,@9455 1644,0,@9455 1690,0,@9455 1736,0,@9455 1954,0,0 1976,0,0 2093,0,4 2129,0,5 2142,0,16 2230,0,17 2265,0,6 2298,0,0 2360,0,4 2396,0,5 2409,0,16 2497,0,17 2532,0,6 2565,0,0 2626,0,8 2661,0,6 2704,0,1 2724,0,0 2759,0,2 2797,0,3 2840,0,0 2858,0,0 2893,0,2 2931,0,3 2937,0,2 2955,0,2 2960,0,0 2965,1,@5527 2983,0,1 2988,1,@4895 3025,0,2 3061,0,5 3077,0,16 3112,0,6 3150,0,5 3185,0,2 3223,0,3 3229,0,2 3247,0,2 3252,0,-1 3257,1,@5527 3275,0,1 3280,1,@4895 3317,0,2 3353,0,5 3369,0,16 3404,0,6 3443,0,5 3478,0,2 3517,0,3 3522,0,2 3540,0,2 3545,0,1 3553,1,@5527 3574,0,1 3582,1,@4895 3622,0,2 3658,0,5 3674,0,16 3709,0,6 3748,0,3 3781,0,0 4231,1,@5572 4249,1,@5573 4275,1,@5574 4293,1,@5575 4319,1,@5576 4340,1,@5577 4365,1,@5578 4390,1,@5579 4438,0,4 4454,0,0 4459,0,0 4753,0,0 4856,0,2 5075,0,0 5193,0,4 5229,0,5 5242,0,16 5330,0,17 5365,0,6 5398,0,0 5458,0,4 5494,0,5 5507,0,16 5595,0,17 5630,0,6 5663,0,0 5698,0,0 5712,0,0 5727,0,37 5762,0,6 5820,0,6 5855,0,6 5888,0,0 5935,1,@5580 5957,1,@5581 5975,1,@5582 6001,1,@5583 6022,1,@5584 6047,1,@5585 6072,1,@5586 6083,0,2 6101,0,2 6106,0,0 6112,1,@5527 6131,0,1 6137,1,@4895 6175,0,2 6230,1,@5587 5572:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@751| 5573:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@752| 5574:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@753| 5575:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@754| 5576:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@755| 5577:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@756| 5578:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@757| 5579:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@758| 5580:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@759| 5581:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@760| 5582:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@761| 5583:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@762| 5584:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@763| 5585:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@764| 5586:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@765| 5587:D3,1132|3b650c7305ff552ccd098b3089f783fe010f85b0020000ff70048b70088b500cff701083fa03752b8b4c24188b0983f90175208d6424088b7c240c8b742410891f897704c7470801000000b801000000c2100083fa03752b8b5424188b1283fa0575208d6424088b7c240c8b742410891f897704c7470801000000b801000000c2100083fe03752b8b5424188b1283fa0575208d6424088b7c240c8b742410891f897704c7470801000000b801000000c2100083fe03752b8b7424188b3683fe0175208d6424088b7c240c8b742410891f897704c7470801000000b801000000c210008b342483fe038d642404752b8b7424148b3683fe0975208d6424048b7c240c8b742410891f897704c7470801000000b801000000c210005e83fe0375278b7424108b3683fe07751c8b7c240c8b742410891f897704c7470801000000b801000000c2100089fe89f783fe0175528b7c24088b3f8b7424088b3683c602710ab8f80466b18b5d04ff238b54240889328b7424048b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424048932eb5a83ff0375528b7c24088b3f8b7424088b3683c602710ab8f80466b18b5d04ff238b54240889328b7424048b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424048932eb038b7804578b7424148b7d008d7fec3b7d087305ff5528cd48897d00c747fc0400000089770cc747080b0000008b3424897704c707210000008b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c7470401000000893783ff01750489daeb0b89d889fbe8f701000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c240c8917897704c7470801000000b801000000c2100089fe83ff03751c8b7c240c8b742410891f897704c7470801000000b801000000c2100089f783fe0175528b7c24088b3f8b7424088b3683c602710ab8f80466b18b5d04ff238b54240889328b7424048b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424048932eb5a83ff0375528b7c24088b3f8b7424088b3683c602710ab8f80466b18b5d04ff238b54240889328b7424048b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424048932eb038b7804578b7424148b7d008d7fec3b7d087305ff5528cd48897d00c747fc0400000089770cc747080b0000008b3424897704c707210000008b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c7470401000000893783ff01750489daeb0b89d889fbe8ba00000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c240c8917897704c7470801000000b801000000c21000f4000000|@11561,1,@768|71,0,0 76,0,0 119,0,0 124,0,0 167,0,0 172,0,0 215,0,0 220,0,0 270,0,0 275,0,0 315,0,0 320,0,0 354,0,@9455 406,0,2 441,0,@9455 493,0,2 545,0,5 557,0,16 592,0,6 625,0,0 645,1,@5588 683,0,4 699,0,0 704,0,0 734,0,0 739,0,0 771,0,@9455 823,0,2 858,0,@9455 910,0,2 962,0,5 974,0,16 1009,0,6 1042,0,0 1062,1,@5589 1100,0,4 1116,0,0 1121,0,0 5588:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@766| 5589:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@767| 5590:D3,1836|8d7c249c3b7d0c7305ff5530cd0d528b780483ff010f8566010000ff30ff70086a016a016a018b7c2414ff7704ff742468ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff7424305483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424940000008b5c247cff128d6424345a5f8d6424048b3783fe090f85970000008b7704f6042401740a8b3c2483ff017d15eb198b3c240fb67fff8d3c7d0100000083ff2374065983c408eb17b8b02f66b18b1c245256e8f9bef9ff5e5a89c18d64240cf6c10174458b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0cc74708c46866b1c747040100000089378b7424448916c7460401000000897e08b801000000c24c00b8d02f66b18b5d04ff238d64240cb840bd66b18b5d04ff23ff37ff30ff700883fb010f856f0200006a016a016a018b7c2418ff7704ff74246cff74246cff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b1ff7424305483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424940000008b5c247cff128d642434ff34248b7c24088b3783fe090f85a4010000ff77046a016a016a018b7c242cff7704ffb42480000000ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a016850bc66b1ff742448548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b5c2478ff128d6424305a5f8d6424048b3783fe090f85db0000008b7f04f644241401740b8b74241483fe017d16eb1a8b7424140fb676ff8d34750100000083fe2374068b4c2414eb14b8b02f66b18b5c24145257e8c8bcf9ff5f5a89c1f6c1010f848100000083e904710e8d642424b8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706030000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c897708c74704010000008b342489378d6424048b7424648916c7460401000000897e08b80100000083c420c24c008d642424b8d02f66b18b5d04ff238d642424b840bd66b18b5d04ff238d642420b840bd66b18b5d04ff238b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e6a016a016a018b7c241cff7704ff742470ff742470ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b1ff7424305483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424980000008b5c247cff128d642434ff34248b7c24088b3783fe090f850b020000ff77046a016a016a018b7c2430ff7704ffb42484000000ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a016850bc66b1ff742448548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424ac0000008b5c2478ff128d642430595f8d6424048b3783fe090f85420100008b7f048b75008d76e83b75087305ff5528cd82897500c746fc05000000c7461001000000897e0cc74608010000008b7c2414897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b55008d52f43b55087305ff5528cd82895500c742fc02000000c7420401000000893af644241801740b8b7c241883ff017d16eb1a8b7c24180fb67fff8d3c7d0100000083ff2374068b5c2418eb14b8b02f66b18b5c24185152e887b9f9ff5a5989c3f6c301746e8b75008d76f43b75087305ff5528cd0e897500c746fc020000008b7c2414897e04c706010000008b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c897708c74704010000008b342489378d6424048b742468890e895604897e08b80100000083c424c24c008d642428b8d02f66b18b5d04ff238d642428b840bd66b18b5d04ff238d642424b840bd66b18b5d04ff23f400|@11564,1,@770|120,0,@11507 265,0,@9958 275,1,@4895 324,0,@10755 331,0,0 346,0,0 354,0,0 362,0,@9960 376,0,@11517 489,0,@11507 680,0,@11507 825,0,@9958 836,1,@4895 863,0,@9455 903,0,1 942,0,0 964,0,0 972,0,0 987,0,@9960 1001,0,@11517 1015,0,@11517 1046,0,@9455 1098,0,3 1196,0,@11507 1387,0,@11507 1516,0,0 1526,0,0 1539,0,37 1574,0,6 1607,0,0 1658,0,@9958 1669,1,@4895 1717,0,0 1756,0,0 1782,0,0 1797,0,@9960 1811,0,@11517 1825,0,@11517 5591:D3,828|3b650c7305ff552ccd0d50538b7c24048b3f83ff0f0f85680100008b7c24048b5f048b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b54244889328b7424448b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706070000008b5424448932f6c3017415f6c3017402eb138d642408b8cc4466b18b5d04ff23bb010000005e83fe0375088d64240489daeb328d642404f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e8feb7f9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b7424448b4c2448890e895604897e08b801000000c24c008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e6a016a016a01ff7204ff742468ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff7424305483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424980000008b5c247cff128d6424345a5f8d6424048b3783fe090f859c0000008b77048b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2404894f1089770cc74708010000008b3424897704c7074b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b7424508916897e045f8d642404897e08b80100000083c404c24c008d64240cb840bd66b18b5d04ff23f40000|@11565,1,@771|56,0,@9455 108,0,3 135,0,@10214 145,0,0 200,0,@9958 206,1,@4895 244,0,2 280,0,5 289,0,16 324,0,6 357,0,0 380,0,0 409,0,@9455 461,0,3 555,0,@11507 697,0,0 709,0,37 744,0,6 777,0,0 801,0,0 816,0,@11517 5592:D3,9988|8d7c24803b7d0c7305ff5530cd0d52538b388b1789d683fa110f85b7000000ff7004ff70086a016a016a018b7c2418ff7708ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424406a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842484000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000e90420000089f283fe090f85dc010000ff7004ff70088b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e6a016a016a018b7c241cff770cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff7424445483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb11000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c243cff7704ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b4424706a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b4000000ff128d64242c5a5f8d642404be01000000e9691b000089d683fa0b0f852a020000ff7004ff70088b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e8b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e6a016a016a018b7c241cff770cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff7424445483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb09000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c243cff7704ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b4424706a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b4000000ff128d64242c5a5f8d642404be01000000e96816000089f283fe05750e8d642408b8b4c666b18b5d04ff2389d683fa030f8585010000ff7004ff70086a016a016a018b7c2418ff770cff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842480000000bb09000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c2438ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424ac0000008b9c24b0000000ff128d64242c5a5f8d642404be01000000e9c111000089f283fe010f8585010000ff7004ff70086a016a016a018b7c2418ff770cff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842480000000bb05000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c2438ff7710ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246cff7424606a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424a8000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000e9320e000089d683fa070f858d020000ff7004ff70086a016a016a018b7c2418ff770cff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842480000000bb03000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c24308b3f83ff0f0f858d0000008b7c24308b5f04f6c3017415f6c3017402eb138d64243cb8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e836acf9ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9170b00008b7c247cff378bbc24800000008b3f83c702710e8d642440b8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74247c893e6a016a016a018b7c2448ff7704ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424bc0000008b9c24c0000000ff128d64242c5e5f8d642404ba01000000e9e908000089f783ff0d0f85b7000000ff7004ff70086a016a016a018b7c2418ff7708ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff7424406a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842484000000bb03000000ff128d64242c8b1424ff7424048b7c240cbe01000000e95f030000ff7004ff70086a016a016a018b7c2418ff7704ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016898be66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2490000000ff128d64242c8b3424ff742404bf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4576a016a016a018b7c242cff7708ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff7424546a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842498000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b378b57088b4f0c8b7d008d7fe43b7d087305ff5528cd46897d00c747fc06000000c74714030000008b5c2418895f10894f0c895708c747040b00000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2404eb0b8b442404e80519000089c383fb0175068b5c2414eb0b8b442414e85319000089c383fb0175065f83c434eb0e8b0424e8a219000089c78d642438b80500000083e8016bc000700583c001eb11b805000000bb0100000057e84282ffff5fa801740989c283c2027002eb0ebb0300000057e801a7f9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e94ce1ffff8d642404f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c6a016a016a018b7c24308b3f83ff0f0f858d0000008b7c24308b5f04f6c3017415f6c3017402eb138d64243cb8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e8f9a5f9ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9290200008b7c247cff378bbc24800000008b3f83c702710e8d642440b8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74247c893e6a016a016a018b7c2448ff7704ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424bc0000008b9c24c0000000ff128d64242c5e5f8d642404ba01000000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f855c0200008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff3424ff7424088b7424108b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74241489770c8b742418897708c74704050000008b74241c89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2424eb0b8b442424e89015000089c383fb0175035beb0e8b0424e8e215000089c38d64240483fb0175065b83c418eb0e8b0424e82d16000089c38d64241c83fb0175065f83c420eb0e8b0424e87816000089c78d642424b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8887dffff5fa801740989c283c2027002eb0ebb0300000057e847a2f9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e992dcffff8d6424048d642440b824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f855c0200008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff3424ff7424088b7424108b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74241489770c8b742418897708c74704050000008b74241c89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2420eb0b8b442420e86f14000089c383fb0175035beb0e8b0424e8c114000089c38d64240483fb0175065b83c41ceb0e8b0424e80c15000089c38d64242083fb0175065f83c41ceb0e8b0424e85715000089c78d642420b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8d77affff5fa801740989c283c2027002eb0ebb0300000057e8969ff9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9e1d9ffff8d6424048d642440b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74241489770c8b742418897708c74704010000008b74241c89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2420eb0b8b442420e8f213000089c383fb0175068b5c2404eb0b8b442404e84014000089c383fb0175065b83c420eb0e8b0424e88f14000089c38d64242483fb0175065f83c41ceb0e8b0424e8da14000089c78d642420b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8ca78ffff5fa801740989c283c2027002eb0ebb0300000057e8899df9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9d4d7ffff8d642404f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85af0200008b57048b7c24748b3f8b7424748b3683c602710e8d642434b8f80466b18b5d04ff238b4c247489318b7424708b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c247089318b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000895604c706070000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d000000568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74240889770c8b74240c897708c74704030000008b74241089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b7c2414eb0b8b442414e89812000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065b83c410eb0e8b0424e8c712000089c38d64241483fb0175065f83c41ceb0e8b0424e81213000089c78d642420b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8d675ffff5fa801740989c283c2027002eb0ebb0300000057e8959af9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9e0d4ffff8d6424048d642434b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85790200008b77048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608070000008b7c2424897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b75008d76f43b75087303ff5528897500c746fc020000008b7c2428897e04c706090000008b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74240889770c8b74240c897708c74704090000008b74241089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb017507bf01000000eb0cb801000000e80e11000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b5c2410eb0b8b442410e83c11000089c383fb0175065b83c410eb0e8b0424e88b11000089c38d64241483fb0175065f83c420eb0e8b0424e8d611000089c78d642424b80500000083e8016bc000700583c001eb11b805000000bb0100000057e80a73ffff5fa801740989c283c2027002eb0ebb0300000057e8c997f9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e914d2ffff8d6424048d642438b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85610200008b77048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608070000008b7c2424897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc020000008b542424895604c706090000008b55008d52e43b55087305ff5528cdc0895500c742fc06000000c74214030000008972108b74240489720c8b742408897208c74204070000008b74240c89328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706410000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b5c2410eb0b8b442410e8b40f000089c383fb0175065b83c410eb0e8b0424e80310000089c38d64241483fb0175065f83c420eb0e8b0424e84e10000089c78d642424b80500000083e8016bc000700583c001eb11b805000000bb0100000057e85670ffff5fa801740989c283c2027002eb0ebb0300000057e81595f9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e960cfffff8d6424048d642438b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc756ff37ff7708ff770c8b7c24248b3f83ff0f0f85490100008b7c24248b7704f7c6010000007407bf03000000eb05bf0100000083ff03740abf01000000e90f010000f7c6010000000f840501000083fe017505e9dd000000bf0500000083ff01750e8d642430b864c766b18b5d04ff23f7c601000000741789f0bf05000000d1f8d1ff99f7ff8d3c5501000000eb1089f0bb0500000056e82d0f00005e89c783ff017502eb72f7c701000000741383ff017c07ba03000000eb05ba01000000eb1c0fb657ff8d14550100000083fa037507ba03000000eb05ba0100000083fa037507ba03000000eb05ba0100000083fa037425f7c701000000740989fa83c2047002eb1089f8bb0500000056e85c93f9ff5e89c289d7eb0083ff037507bf03000000eb05bf0100000083ff037407bf01000000eb1c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb138d642430b8cc4466b18b5d04ff23bf010000006a016a0183ff010f85d80100008b7c2478ff378b7c247c8b3f83c702710e8d64243cb8f80466b18b5d04ff238b74247c893e8b7c24788b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742478893e8b7c247cff378bbc24800000008b3f83c702710e8d642440b8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74247c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70709000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70705000000576a016a016a018b7c2450ff7704ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb424980000008bbc24980000008bb424940000008b9424900000008b8c248c0000008b9c24880000008b8424840000006a01ff74243c6a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424c40000008b9c24c8000000ff128d64242c5f8d64240cb801000000e9c30100008b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000893c24c7442404010000008b3424ff7424048b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714030000008977108b74240c89770c8b742410897708c747040b0000008b74241489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c241ceb0b8b44241ce8cb0b000089c383fb0175065b83c414eb0e8b0424e81a0c000089c38d64241883fb0175065f83c420eb0e8b0424e8650c000089c78d642424b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8016bffff5fa801740989c283c2027002eb0ebb0300000057e8c08ff9ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e90bcaffff8d642404f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610010000008b7c2408897e0cc74608010000008b7c2404897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e85b0b000089c75e89742408897c240c83c408e98efdfffff4000000|@11577,1,@802|183,0,0 205,0,0 253,0,@9455 305,0,3 459,0,8 604,0,@11507 692,0,0 740,0,@9455 792,0,3 818,0,@9455 870,0,3 1024,0,4 1169,0,@11507 1257,0,0 1278,0,@11568 1448,0,4 1590,0,@11507 1678,0,0 1848,0,2 2056,0,0 2078,0,0 2248,0,1 2322,0,@10214 2332,0,0 2369,0,@9958 2374,1,@4895 2411,0,2 2418,0,0 2426,0,0 2464,0,@9455 2519,0,3 2654,0,@11507 2742,0,0 2914,0,1 2936,0,0 3031,0,@11527 3120,0,0 3331,0,0 3353,0,0 3452,0,1 3472,0,5 3509,0,32 3544,0,6 3577,0,0 3599,1,@5593 3621,1,@5594 3642,1,@5595 3653,0,2 3671,0,2 3676,0,0 3682,1,@5527 3701,0,1 3707,1,@4895 3745,0,2 3800,1,@5587 3919,0,@10214 3929,0,0 3966,0,@9958 3971,1,@4895 4008,0,2 4015,0,0 4023,0,0 4061,0,@9455 4116,0,3 4251,0,@11507 4339,0,0 4446,0,0 4456,0,0 4468,0,37 4503,0,6 4536,0,0 4574,0,4 4629,0,1 4653,0,2 4694,0,32 4729,0,6 4762,0,0 4784,1,@5596 4802,1,@5597 4827,1,@5598 4852,1,@5599 4863,0,2 4881,0,2 4886,0,0 4892,1,@5527 4911,0,1 4917,1,@4895 4955,0,2 5010,1,@5587 5023,0,@11571 5135,0,0 5145,0,0 5157,0,37 5192,0,6 5225,0,0 5263,0,4 5318,0,1 5342,0,2 5383,0,32 5418,0,6 5451,0,0 5473,1,@5600 5491,1,@5601 5516,1,@5602 5541,1,@5603 5552,0,2 5570,0,2 5575,0,0 5581,1,@5527 5600,0,1 5606,1,@4895 5644,0,2 5699,1,@5587 5712,0,@11571 5810,0,4 5843,0,1 5867,0,0 5908,0,32 5943,0,6 5976,0,0 5998,1,@5604 6020,1,@5605 6041,1,@5606 6066,1,@5607 6077,0,2 6095,0,2 6100,0,0 6106,1,@5527 6125,0,1 6131,1,@4895 6169,0,2 6224,1,@5587 6326,0,@9455 6378,0,3 6417,0,0 6424,0,@10755 6431,0,0 6440,0,3 6476,0,5 6485,0,16 6520,0,6 6556,0,4 6589,0,1 6613,0,1 6654,0,32 6689,0,6 6722,0,0 6744,1,@5608 6797,1,@5609 6822,1,@5610 6833,0,2 6851,0,2 6856,0,0 6862,1,@5527 6881,0,1 6887,1,@4895 6925,0,2 6980,1,@5587 6993,0,@11571 7103,0,0 7110,0,@10755 7117,0,0 7126,0,3 7162,0,3 7175,0,16 7210,0,6 7248,0,4 7281,0,1 7305,0,4 7346,0,32 7381,0,6 7414,0,0 7426,0,0 7433,0,0 7438,1,@5611 7492,1,@5612 7513,1,@5613 7538,1,@5614 7549,0,2 7567,0,2 7572,0,0 7578,1,@5527 7597,0,1 7603,1,@4895 7641,0,2 7696,1,@5587 7709,0,@11571 7819,0,0 7826,0,@10755 7833,0,0 7842,0,3 7878,0,3 7891,0,16 7926,0,6 7965,0,4 7998,0,1 8022,0,3 8063,0,32 8098,0,6 8131,0,0 8184,1,@5615 8205,1,@5616 8230,1,@5617 8241,0,2 8259,0,2 8264,0,0 8270,1,@5527 8289,0,1 8295,1,@4895 8333,0,2 8388,1,@5587 8401,0,@11571 8507,0,1 8514,0,0 8524,0,0 8556,0,2 8570,0,@11574 8590,0,2 8613,0,2 8619,1,@5618 8647,0,1 8654,0,0 8677,0,1 8684,0,0 8694,0,1 8701,0,0 8730,0,2 8736,1,@4895 8753,0,1 8760,0,0 8770,0,0 8811,0,@10214 8821,0,0 8860,0,@9455 8912,0,2 8947,0,@9455 9002,0,3 9044,0,4 9082,0,2 9301,0,0 9343,0,2 9354,0,0 9394,0,1 9418,0,5 9459,0,32 9494,0,6 9527,0,0 9549,1,@5619 9570,1,@5620 9595,1,@5621 9606,0,2 9624,0,2 9629,0,0 9635,1,@5527 9654,0,1 9660,1,@4895 9698,0,2 9753,1,@5587 9850,0,0 9864,0,0 9877,0,37 9912,0,6 9945,0,0 9961,1,@5622 5593:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@772| 5594:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@773| 5595:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@774| 5596:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@775| 5597:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@776| 5598:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@777| 5599:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@778| 5600:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@779| 5601:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@780| 5602:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@781| 5603:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@782| 5604:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@783| 5605:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@784| 5606:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@785| 5607:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@786| 5608:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@787| 5609:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@788| 5610:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@789| 5611:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@790| 5612:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@791| 5613:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@792| 5614:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@793| 5615:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@794| 5616:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@795| 5617:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@796| 5618:D3,44|b9d07246b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@11576,1,@797|1,0,@19846 5619:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@798| 5620:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@799| 5621:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@800| 5622:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@801| 5623:D3,3428|8d7c24a03b7d0c7305ff5530cd0d52538b780483ff010f850f0100008d642404ff30ff70088b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74244c893e6a016a016a018b7c2418ff7704ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305e5f8d642404b901000000e98f0a0000ff37ff30ff70088b7c240c83ff030f855a0100008b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e6a016a016a018b7c2424ff7704ff742474ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424980000008b5c2478ff128d6424305a5f8d642404be01000000e9b20500008b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e6a016a016a018b7c2420ff7704ff742470ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305a5f8d642404be01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b2000000ff77046a016a016a018b7c2428ff7704ff742478ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424606a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a00000008b5c2478ff128d6424305a5e8d642404bf01000000eb0e8d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f855a0300008b76048b4d008d49e83b4d087305ff5528cdc0894d00c741fc05000000c7411001000000c7410cc46866b1c74108010000008b14248951048d642404c701070000008b55008d52ec3b55087305ff5528cdc2895500c742fc04000000894a0cc742080b0000008b4c2404894a04c702210000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c7010d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a528b54241889d183fa110f85bb000000f644240c01740b8b54240c83fa017d16eb1a8b54240c0fb652ff8d14550100000083fa2374068b4c240ceb14b8b02f66b18b5c240c5756e8ec7cf9ff5e5f89c1f6c101746883e908710e8d642420b8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702050000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608c74604010000008b5424088916e98d0100008d642420b8d02f66b18b5d04ff2389c989ca83f9090f85bb000000f644240c01740b8b54240c83fa017d16eb1a8b54240c0fb652ff8d14550100000083fa2374068b4c240ceb14b8b02f66b18b5c240c5756e8247cf9ff5e5f89c1f6c101746883e904710e8d642420b8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702030000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608c74604010000008b5424088916e9c50000008d642420b8d02f66b18b5d04ff2389d283fa050f85f5000000f644240c01740b8b54240c83fa017d16eb1a8b54240c0fb652ff8d14550100000083fa2374068b4c240ceb14b8b02f66b18b5c240c5756e85e7bf9ff5e5f89c1f6c1010f849e00000083e902710e8d642420b8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702010000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608c74604010000008b54240889165683ff0175068b7c2408eb0d89fb8b442408e87b05000089c78b742468893e8b7c2404897e048b3c24897e088d642408b80100000083c41cc248008d642420b8d02f66b18b5d04ff238d642420b8f4c766b18b5d04ff238d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b2000000ff77046a016a016a018b7c242cff7704ff74247cff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b5c2478ff128d6424305a5e8d642404bf01000000eb0e8d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f85180200008b76048b55008d52e83b55087305ff5528cdc0895500c742fc05000000c7421001000000c7420cc46866b1c74208010000008b0c24894a048d642404c702070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089510cc741080b0000008b542408895104c701210000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000c741100100000089710cc74108010000008b742404897104c7014b0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04891656f644241001740b8b74241083fe017d16eb1a8b7424100fb676ff8d34750100000083fe2374068b4c2410eb12b8b02f66b18b5c241057e8d177f9ff5f89c1f6c1010f848f0000008b55008d52f43b55087305ff5528cd82895500c742fc020000008b742408897204c702010000008b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608c74604010000008b54240c89165683ff0175068b7c2408eb0d89fb8b442408e86202000089c78b74246c893e8b7c2404897e048b3c24897e088d642408b80100000083c420c248008d642424b8d02f66b18b5d04ff238d642424b824c766b18b5d04ff23f7c60100000075348b068b56048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894b04890389d989d63b650c7305ff552ccdc2ebc48b3783fe090f85520100008b77048b7d008d7fe83b7d087305ff5528cd42897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd82897500c746fc04000000897e0cc746080b0000008b3c24897e04c706210000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b55008d52f43b55087305ff5528cd82895500c742fc02000000c7420401000000893af644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b742404eb14b8b02f66b18b5c24045152e8e675f9ff5a5989c6f7c601000000744b8b7d008d7fec3b7d087305ff5528cd46897d00c747fc0400000089770cc74708c46866b1c74704010000008b342489378d6424048b742450890e895604897e08b80100000083c40cc248008d642410b8d02f66b18b5d04ff238d642410b824c766b18b5d04ff23f40000|@11581,1,@805|59,0,@9455 111,0,3 205,0,@11507 290,0,0 341,0,@9455 393,0,3 425,0,@9455 477,0,3 571,0,@11507 656,0,0 687,0,@9455 739,0,3 833,0,@11507 918,0,0 1078,0,@11507 1163,0,0 1174,0,@11571 1283,0,0 1290,0,@10755 1297,0,0 1313,0,3 1349,0,5 1362,0,16 1397,0,6 1430,0,0 1497,0,@9958 1508,1,@4895 1531,0,@9455 1571,0,2 1610,0,0 1630,0,@9960 1697,0,@9958 1708,1,@4895 1731,0,@9455 1771,0,1 1810,0,0 1830,0,@9960 1895,0,@9958 1906,1,@4895 1933,0,@9455 1973,0,0 2012,0,0 2041,1,@5624 2071,0,0 2086,0,@9960 2100,0,@11578 2114,0,@11571 2279,0,@11507 2364,0,0 2375,0,@11571 2484,0,0 2491,0,@10755 2498,0,0 2514,0,3 2550,0,5 2563,0,16 2598,0,6 2631,0,0 2641,0,0 2654,0,37 2689,0,6 2722,0,0 2805,0,@9958 2815,1,@4895 2866,0,0 2905,0,0 2934,1,@5625 2964,0,0 2979,0,@9960 2993,0,@11571 3105,0,0 3112,0,@10755 3119,0,0 3128,0,3 3164,0,5 3176,0,16 3211,0,6 3244,0,0 3295,0,@9958 3306,1,@4895 3354,0,@10755 3361,0,0 3387,0,0 3402,0,@9960 3416,0,@11571 5624:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@803| 5625:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@804| 5626:D3,6964|3b650c7305ff552ccd0d538b388b0f89ce83f9110f857a010000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7204ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424406a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842488000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000e97d17000089f183fe090f855a030000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7208ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb11000000ff128d64242cff3424ff7424088b7c24108b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc7460807000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460c050000008956088b542414895604c7060f0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e8b316000089c38d64240483fb0175065a83c40ceb0e8b0424e8fe16000089c28d6424108b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089ce83f90b0f855a030000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7208ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb09000000ff128d64242cff3424ff7424088b7c24108b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc7460809000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460c050000008956088b542414895604c7060f0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e81614000089c38d64240483fb0175065a83c40ceb0e8b0424e86114000089c28d6424108b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089f183fe05750e8d642404b894c866b18b5d04ff2389ce83f9030f8562030000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7208ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb09000000ff128d64242cff3424ff7424088b5424108b7c24608b3f8b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b4d008d49e83b4d087305ff5528cd84894d00c741fc05000000c7411001000000c7410c010000008979088b742414897104c7010f0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b328b4a048b5a088b420c8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204c702070000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b000000897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b142489168d6424048b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e85c11000089c38d64240483fb0175065a83c40ceb0e8b0424e8a711000089c28d6424108b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089f183fe010f8553030000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7208ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb05000000ff128d64242cff3424ff7424088b7c24108b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc7460801000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008956088b542414895604c706450000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e8c60e000089c38d64240483fb0175065a83c40ceb0e8b0424e8110f000089c28d6424108b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089ce83f9070f8553030000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7208ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424405483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424708b842484000000bb03000000ff128d64242cff3424ff7424088b7c24108b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc7460805000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008956088b542414895604c706450000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e8300c000089c38d64240483fb0175065a83c40ceb0e8b0424e87b0c000089c28d6424108b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089f783ff0d0f857a010000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7204ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424406a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842488000000bb03000000ff128d64242c8b1424ff7424048b7c240cbe01000000e9d1020000ff70048b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04576a016a016a01ff7204ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff7424406a015483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b842488000000bb01000000ff128d64242c8b1424ff7424048b7c240cbe01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b378b57048b4f088b5f0c8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c895708897704c707070000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c2414897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2404eb0b8b442404e89e08000089c383fb0175065a83c410eb0e8b0424e8ed08000089c28d6424148b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc7460805000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008956088b542414895604c706450000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b5c2404eb0b8b442404e84707000089c383fb0175065a83c410eb0e8b0424e89607000089c28d6424148b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b7424608b168b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c245c89318b378b4f048b5f088b470c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08897704c707070000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc746080b000000895604c706210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008956088b542414895604c706450000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b5c2404eb0b8b442404e8f005000089c383fb0175065a83c410eb0e8b0424e83f06000089c28d6424148b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c00f4000000|@11586,1,@822|62,0,@9455 114,0,2 159,0,@9455 211,0,2 373,0,0 395,0,0 451,0,@9455 503,0,2 548,0,@9455 600,0,2 760,0,8 803,0,@9455 855,0,3 916,0,3 952,0,3 961,0,16 996,0,6 1029,0,0 1036,0,2 1052,0,7 1087,0,6 1120,0,0 1169,1,@5627 1194,1,@5628 1242,0,4 1258,0,0 1263,0,0 1320,0,@9455 1372,0,2 1417,0,@9455 1469,0,2 1629,0,4 1672,0,@9455 1724,0,3 1785,0,3 1821,0,4 1830,0,16 1865,0,6 1898,0,0 1905,0,2 1921,0,7 1956,0,6 1989,0,0 2038,1,@5629 2063,1,@5630 2111,0,4 2127,0,0 2132,0,0 2154,0,@11583 2210,0,@9455 2262,0,2 2307,0,@9455 2359,0,2 2519,0,4 2562,0,@9455 2614,0,3 2653,0,0 2660,0,0 2676,0,7 2711,0,6 2767,0,3 2803,0,5 2812,0,16 2847,0,6 2880,0,0 2936,1,@5631 2961,1,@5632 3009,0,4 3025,0,0 3030,0,0 3087,0,@9455 3139,0,2 3184,0,@9455 3236,0,2 3396,0,2 3439,0,@9455 3491,0,3 3552,0,3 3588,0,0 3597,0,16 3632,0,6 3665,0,0 3681,0,34 3716,0,6 3749,0,0 3798,1,@5633 3823,1,@5634 3871,0,4 3887,0,0 3892,0,0 3949,0,@9455 4001,0,2 4046,0,@9455 4098,0,2 4258,0,1 4301,0,@9455 4353,0,3 4414,0,3 4450,0,2 4459,0,16 4494,0,6 4527,0,0 4543,0,34 4578,0,6 4611,0,0 4660,1,@5635 4685,1,@5636 4733,0,4 4749,0,0 4754,0,0 4811,0,@9455 4863,0,2 4908,0,@9455 4960,0,2 5122,0,1 5144,0,0 5189,0,@9455 5241,0,2 5286,0,@9455 5338,0,2 5500,0,0 5522,0,0 5635,0,3 5671,0,5 5684,0,16 5719,0,6 5752,0,0 5774,1,@5637 5795,1,@5638 5843,0,4 5859,0,0 5864,0,0 5954,0,@9455 6006,0,3 6067,0,3 6103,0,2 6112,0,16 6147,0,6 6180,0,0 6196,0,34 6231,0,6 6264,0,0 6317,1,@5639 6338,1,@5640 6386,0,4 6402,0,0 6407,0,0 6497,0,@9455 6549,0,3 6610,0,3 6646,0,5 6655,0,16 6690,0,6 6723,0,0 6739,0,34 6774,0,6 6807,0,0 6860,1,@5641 6881,1,@5642 6929,0,4 6945,0,0 6950,0,0 5627:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@806| 5628:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@807| 5629:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@808| 5630:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@809| 5631:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@810| 5632:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@811| 5633:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@812| 5634:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@813| 5635:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@814| 5636:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@815| 5637:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@816| 5638:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@817| 5639:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@818| 5640:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@819| 5641:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@820| 5642:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@821| 5643:D3,21928|8dbc2454ffffff3b7d0c7305ff5530cd0d5250538b7c24048b3fbefc0c2db181c62b0000008d74befcffe6e9b3000000909090e9ab000000909090e9a3000000909090e961030000909090e98c3a0000909090e98b000000909090e906470000909090e90b4b0000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e95c4b0000909090e90b000000909090e9594e00009090908b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24546a016850bc66b1ff7424345483042440ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff74243857565251538b9424800000008b8424980000008b9c2494000000ff128d642434ff34248b7c24088b3783fe090f85d40100008b77048b7c24548b078b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b542454893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54246c83fa037507bb05000000eb05bb130000008b5424688b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542410895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c70205000000b80500000083e8016bc001700583c001eb15b805000000bb03000000565752e8922bffff5a5f5ea801740989c183c1027002eb12bb03000000565752e84d50f9ff5a5f5e89c18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44241089410c895908897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c41cc24c008d642420b840bd66b18b5d04ff238b7c2404ff77048b7c2408ff77088b7c240c8b7f0c8b3789f283fe0f0f85e52100008b7f0483ff050f857e0600008b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e6a016a016a018b7c2430ff7704ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b9c24a8000000ff128d642430ff34248b7c24088b3783fe090f8571040000ff77046a016a016a018b7c2444ff7704ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b4424786a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b8000000ff128d64242cff34248b7c24088b3783fe090f85810300008b4f048bbc24800000008b1f8bbc24800000008b3f83c702710e8d64244cb8f80466b18b5d04ff238bb42480000000893e8b7d008d7ff43b7d087305ff5528cd0a897d00c747fc02000000895f04c70707000000578bbc249c00000083ff037507ba05000000eb05ba130000008bbc24980000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e1089560c897e088b7c2434897e04c706010000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c70705000000578b7d008d7fe83b7d087305ff5528cd02897d00c747fc050000008b74242c897710c7470c58c966b18b7424308977088b742438897704c707030000008b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b55008d52f03b55087305ff5528cd82895500c742fc030000008b74243c8972088b742430897204c702530000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc2895500c742fc05000000c7421001000000c7420cc46866b1c7420801000000894a04c702070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c243c89590c8951088b542434895104c7014f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000c7411001000000c7410cc46866b1c74108010000008b5c2418895904c701070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc74308070000008b4c2434894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442408894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c448c24c008d64244cb840bd66b18b5d04ff238d642438b840bd66b18b5d04ff2383ff090f857e0600008b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e6a016a016a018b7c2430ff7704ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b9c24a8000000ff128d642430ff34248b7c24088b3783fe090f8571040000ff77046a016a016a018b7c2444ff7704ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b4424786a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b8000000ff128d64242cff34248b7c24088b3783fe090f85810300008b5f048bbc24800000008b0f8bbc24800000008b3f83c702710e8d64244cb8f80466b18b5d04ff238bb42480000000893e8b7d008d7ff43b7d087305ff5528cd0a897d00c747fc02000000894f04c70707000000578bbc249c00000083ff037507ba05000000eb05ba130000008bbc24980000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000894e1089560c897e088b7c2434897e04c706010000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c70705000000578b7d008d7fe83b7d087305ff5528cd08897d00c747fc050000008b74242c897710c7470c58c966b18b7424308977088b742438897704c707030000008b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c7070d0000008b55008d52f03b55087305ff5528cd88895500c742fc030000008b74243c8972088b742430897204c702530000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc8895500c742fc05000000c7421001000000c7420cc46866b1c74208010000008b4c2418894a04c702070000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44243c89410c8951088b542434895104c7014f0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdcc894d00c741fc05000000c7411001000000c7410cc46866b1c7410801000000895904c701070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc74308070000008b4c2434894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442408894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c448c24c008d64244cb840bd66b18b5d04ff238d642438b840bd66b18b5d04ff2383ff030f857e0600008b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e6a016a016a018b7c2430ff7704ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b9c24a8000000ff128d642430ff34248b7c24088b3783fe090f8571040000ff77046a016a016a018b7c2444ff7704ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b4424786a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b8000000ff128d64242cff34248b7c24088b3783fe090f85810300008b4f048bbc24800000008b1f8bbc24800000008b3f83c702710e8d64244cb8f80466b18b5d04ff238bb42480000000893e8b7d008d7ff43b7d087305ff5528cd0a897d00c747fc02000000895f04c70707000000578bbc249c00000083ff037507ba05000000eb05ba130000008bbc24980000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e1089560c897e088b7c2434897e04c706010000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c70705000000578b7d008d7fe83b7d087305ff5528cd02897d00c747fc050000008b74242c897710c7470c64c966b18b7424308977088b742438897704c707030000008b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b55008d52f03b55087305ff5528cd82895500c742fc030000008b74243c8972088b742430897204c702530000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc2895500c742fc05000000c7421001000000c7420cc46866b1c7420801000000894a04c702070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c243c89590c8951088b542434895104c7014f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000c7411001000000c7410cc46866b1c74108010000008b5c2418895904c701070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc74308070000008b4c2434894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442408894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c448c24c008d64244cb840bd66b18b5d04ff238d642438b840bd66b18b5d04ff2383ff070f857e0600008b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e6a016a016a018b7c2430ff7704ff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247cff74247c8b7c247c8b7424788b5424748b4c24708b5c246c8b4424686a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b9c24a8000000ff128d642430ff34248b7c24088b3783fe090f8571040000ff77046a016a016a018b7c2444ff7704ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b4424786a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b00000008b9c24b8000000ff128d64242cff34248b7c24088b3783fe090f85810300008b5f048bbc24800000008b0f8bbc24800000008b3f83c702710e8d64244cb8f80466b18b5d04ff238bb42480000000893e8b7d008d7ff43b7d087305ff5528cd0a897d00c747fc02000000894f04c70707000000578bbc249c00000083ff037507ba05000000eb05ba130000008bbc24980000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000894e1089560c897e088b7c2434897e04c706010000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c70705000000578b7d008d7fe83b7d087305ff5528cd08897d00c747fc050000008b74242c897710c7470c64c966b18b7424308977088b742438897704c707030000008b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c7070d0000008b55008d52f03b55087305ff5528cd88895500c742fc030000008b74243c8972088b742430897204c702530000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc8895500c742fc05000000c7421001000000c7420cc46866b1c74208010000008b4c2418894a04c702070000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44243c89410c8951088b542434895104c7014f0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdcc894d00c741fc05000000c7411001000000c7410cc46866b1c7410801000000895904c701070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc74308070000008b4c2434894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b442408894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c448c24c008d64244cb840bd66b18b5d04ff238d642438b840bd66b18b5d04ff238b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742464893e8b7c2468ff378b7c246c8b3f83c702710e8d64242cb8f80466b18b5d04ff238b74246c893e8b7c24688b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742468893e6a016a016a018b7c2434ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b9c24ac000000ff128d642430ff34248b7c24088b3783fe090f8541050000ff77046a016a016a018b7c2448ff7704ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247c6a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424b40000008b9c24bc000000ff128d64242cff34248b7c24088b3783fe090f854e0400008b4f048bbc24840000008b1f8bbc24840000008b3f83c702710e8d642450b8f80466b18b5d04ff238bb42484000000893e8b7d008d7ff43b7d087305ff5528cd0a897d00c747fc02000000895f04c70707000000578bbc24a000000083ff037507ba05000000eb05ba130000008bbc249c0000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e1089560c897e088b7c2438897e04c706010000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c70705000000578b7d008d7fe83b7d087305ff5528cd02897d00c747fc050000008b74242c897710c7470c70c966b18b7424308977088b74243c897704c7070b0000008b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d000000578bbc24940000008b3f8bb424940000008b3683c602710e8d64245cb8f80466b18b5d04ff238b94249400000089328b75008d76e83b75087305ff5528cd82897500c746fc050000008b542434895610c7460c7cc966b18b542438895608897e04c706030000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c7060d0000008b55008d52f03b55087305ff5528cd42895500c742fc030000008b7c2444897a088b7c2438897a04c702530000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c7070d0000008b55008d52e83b55087305ff5528cdc2895500c742fc05000000c7421001000000c7420cc46866b1c7420801000000894a04c702070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c244489590c8951088b54243c895104c7014f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000c7411001000000c7410cc46866b1c74108010000008b5c241c895904c701070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000894b0cc74308070000008b4c243c894b04c703210000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc020000008b44240c894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c44cc24c008d642450b840bd66b18b5d04ff238d64243cb840bd66b18b5d04ff2389d683fa070f851f050000ff77048b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e6a016a016a018b7c2424ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424980000008b9c249c000000ff128d642430ff34248b7c24088b3783fe090f8530040000ff77046a016a016a018b7c2438ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a40000008b9c24ac000000ff128d64242cff34248b7c24088b3783fe090f85490300008b77048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008bb424800000008b168bb424800000008b3683c602710e8d642440b8f80466b18b5d04ff238b8c248000000089318b74247c8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c247c89318b7424748b068b7424748b3683c602710e8d642440b8f80466b18b5d04ff238b4c247489318b75008d76f43b75087305ff5528cd85897500c746fc02000000894604c70607000000568b74242c83fe05751d8bb4249000000083fe017507bb03000000eb05bb11000000e9810000008b74242c83fe03751a8bb4249000000083fe017507bb0f000000eb05bb01000000eb5e8b74242c83fe09751a8bb4249000000083fe017507bb01000000eb05bb0f000000eb3b8b74242c83fe07751a8bb4249000000083fe017507bb11000000eb05bb03000000eb188bb4249000000083fe017507bb13000000eb05bb050000008bb4248c0000008b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8971088b742428897104c701010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c242889590c897908895104c7014d0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070d0000008b5d008d5be83b5d087305ff5528cdc4895d00c743fc05000000c7431001000000c7430cc46866b1c74308010000008b4c2414894b04c703070000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590cc741080b000000895104c701210000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008b5c240489590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c43cc24c008d642440b840bd66b18b5d04ff238d64242cb840bd66b18b5d04ff2383fe130f85350d0000ff7704ff77088b7c24088b3f83ff0f0f85280400008b7c2408ff77048b7c2458ff378b7c245c8b3f83c702710e8d642424b8f80466b18b5d04ff238b74245c893e6a016a016a018b7c242cff7704ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a00000008b9c24a4000000ff128d642430ff34248b7c24088b3783fe090f8535030000ff7704f6442418017479f6442418017464f64424180174118b44241883e8016bc002700583c001eb0eb8050000008b5c2418e82002ffffa801740989c783c7027002eb0cbb03000000e8e126f9ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70605000000eb338d642438b8cc4466b18b5d04ff238b75008d76f43b75087303ff5528897500c746fc020000008b7c2418897e04c706010000008b7c246c8b078b7c246c8b3f83c702710e8d642438b8f80466b18b5d04ff238b54246c893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54242083fa0575408b54241c83fa01751a8b94248400000083fa017507bb03000000eb05bb11000000eb188b94248400000083fa017507bb0b000000eb05bb09000000e9ed0000008b54242083fa0375408b54241c83fa01751a8b94248400000083fa017507bb0f000000eb05bb01000000eb188b94248400000083fa017507bb0d000000eb05bb07000000e9a40000008b54242083fa09753d8b54241c83fa01751a8b94248400000083fa017507bb01000000eb05bb0f000000eb188b94248400000083fa017507bb07000000eb05bb0d000000eb5e8b54242083fa07753d8b54241c83fa01751a8b94248400000083fa017507bb11000000eb05bb03000000eb188b94248400000083fa017507bb09000000eb05bb0b000000eb188b94248400000083fa017507bb13000000eb05bb050000008b9424800000008b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542414895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c241489590c8971085e897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c430c24c008d642434b840bd66b18b5d04ff238b7c240c8b3f83ff0f0f855d0400008b7c240cff77048b7c2458ff378b7c245c8b3f83c702710e8d642424b8f80466b18b5d04ff238b74245c893e6a016a016a018b7c242cff7704ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b84249c0000008b9c24a4000000ff128d642430ff34248b7c24088b3783fe090f856a030000ff7704f6442418017479f6442418017464f64424180174118b44241883e8016bc002700583c001eb0eb8050000008b5c2418e8e9fdfeffa801740989c783c7027002eb0cbb03000000e8aa22f9ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70605000000eb338d642438b8cc4466b18b5d04ff238b75008d76f43b75087303ff5528897500c746fc020000008b7c2418897e04c706010000008b7c246c8b078b7c246c8b3f83c702710e8d642438b8f80466b18b5d04ff238b54246c893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54242083fa057507ba09000000eb358b54242083fa037507ba07000000eb258b54242083fa097507ba05000000eb158b54242083fa077507ba03000000eb05ba0100000083fa0575408b54241c83fa01751a8b94248400000083fa017507bb03000000eb05bb11000000eb188b94248400000083fa017507bb0b000000eb05bb09000000e9e100000083fa0375408b54241c83fa01751a8b94248400000083fa017507bb0f000000eb05bb01000000eb188b94248400000083fa017507bb0d000000eb05bb07000000e99c00000083fa09753d8b54241c83fa01751a8b94248400000083fa017507bb01000000eb05bb0f000000eb188b94248400000083fa017507bb07000000eb05bb0d000000eb5a83fa07753d8b54241c83fa01751a8b94248400000083fa017507bb11000000eb05bb03000000eb188b94248400000083fa017507bb09000000eb05bb0b000000eb188b94248400000083fa017507bb13000000eb05bb050000008b9424800000008b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542414895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c241489590c8971085e897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c430c24c008d642434b840bd66b18b5d04ff238b7c2454ff378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b742458893e6a016a016a018b7c2428ff7704ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424606a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b84249c0000008b9c24a0000000ff128d642430ff34248b7c24088b3783fe090f85a0030000ff77046a016a016a018b7c243cff7704ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b4424706a016850bc66b1ff7424445483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a80000008b9c24b0000000ff128d64242cff34248b7c24088b3783fe090f85b60200008b4f048b7c24788b078b7c24788b3f83c702710e8d642444b8f80466b18b5d04ff238b742478893e8b7d008d7ff43b7d087305ff5528cd03897d00c747fc02000000894704c707070000008b74242c83fe0575408b74242883fe01751a8bb4249000000083fe017507bb03000000eb05bb11000000eb188bb4249000000083fe017507bb0b000000eb05bb09000000e9ed0000008b74242c83fe0375408b74242883fe01751a8bb4249000000083fe017507bb0f000000eb05bb01000000eb188bb4249000000083fe017507bb0d000000eb05bb07000000e9a40000008b74242c83fe09753d8b74242883fe01751a8bb4249000000083fe017507bb01000000eb05bb0f000000eb188bb4249000000083fe017507bb07000000eb05bb0d000000eb5e8b74242c83fe07753d8b74242883fe01751a8bb4249000000083fe017507bb11000000eb05bb03000000eb188bb4249000000083fe017507bb09000000eb05bb0b000000eb188bb4249000000083fe017507bb13000000eb05bb050000008b94248c0000008b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c8956088b542424895604c706010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706090000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b5c242489590c8971088b742410897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c440c24c008d642444b840bd66b18b5d04ff238d642430b840bd66b18b5d04ff238d6424088b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b9c2490000000ff128d642430ff34248b7c24088b3783fe090f85d40100008b77048b7c24548b078b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b542454893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54246c83fa037507bb05000000eb05bb130000008b5424688b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542410895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c70205000000b80500000083e8016bc001700583c001eb15b805000000bb03000000565752e85ff4feff5a5f5ea801740989c183c1027002eb12bb03000000565752e81a19f9ff5a5f5e89c18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44241089410c895908897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c41cc24c008d642420b840bd66b18b5d04ff238b7c24048b7f048b742404ff76088b742408ff760c8b74240cff761083ff030f85a10900008b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2458ff378b7c245c8b3f83c702710e8d642424b8f80466b18b5d04ff238b74245c893e6a016a016a018b7c242cff7708ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b442464ff742454ff74242c5483042438ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424788b842494000000bb03000000ff128d642430ff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c244cff7708ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb424940000008bbc24940000008bb424900000008b94248c0000008b8c24880000008b9c24840000008b842480000000ff742470ff74244c5483042434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b8424b4000000bb03000000ff128d64242cff3424ff7424088b7c2410ff37ff7708ff770c6a016a016a018b7c24608b3f83ff0f0f85610100008b7c24608b5f048bbc24b00000008b3f8bb424b00000008b3683c602710e8d642470b8f80466b18b5d04ff238b9424b000000089328bb424ac0000008b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706070000008b9424ac0000008932f6c3017415f6c3017402eb138d642470b8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e8df14f9ff5f89c68b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc746080b000000897e04c706210000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b54241c89142489742404897c2408e9d40100008bbc24b0000000ff378bbc24b40000008b3f83c702710e8d642474b8f80466b18b5d04ff238bb424b4000000893e8bbc24b00000008b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008bb424b0000000893e6a016a016a018b7c247cff7704ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c4000000ffb424c40000008bbc24c40000008bb424c00000008b9424bc0000008b8c24b80000008b9c24b40000008b8424b00000006a016850bc66b1ff7424605483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424ec0000008b9c24f0000000ff128d64242c5e5f8d6424048b1783fa090f85730400008b57048b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570cc74708010000008b1424895704c7074b0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7020d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c7470401000000891789742404897c24085f897c2408ff3424ff7424088b7c24108bb424ac0000008b1e8bb424ac0000008b3683c602710e8d642478b8f80466b18b5d04ff238b9424ac00000089328b75008d76f43b75087305ff5528cd88897500c746fc02000000895e04c70607000000568bb424c800000083fe037507b905000000eb05b9130000008bb424c40000008b55008d52e83b55087305ff5528cdca895500c742fc05000000895a10894a0c8972088b742458897204c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000568b75008d76e83b75087305ff5528cd80897500c746fc050000008b5424608956108b54246489560c897e088b7c245c897e04c706110000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b7c24248b3f83ff0975618b7c242083ff0175588b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707090000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c2464897e04c70621000000eb568b7d008d7ff83b7d087303ff5528897d00c747fc010000008b74242889378b75008d76e83b75087305ff5528cd80897500c746fc050000008b5424208956108b54242489560c8b542464895608897e04c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b7c24488b3f83ff0975618b7c244483ff0175588b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74244c897704c707090000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c246c897e04c70621000000eb568b7d008d7ff83b7d087303ff5528897d00c747fc010000008b74244c89378b75008d76e83b75087305ff5528cd80897500c746fc050000008b5424448956108b54244889560c8b54246c895608897e04c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b7c241889fb83ff0175068b7c2454eb0b8b442454e8fc11000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b7c2430eb0b8b442430e82a12000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b7c240ceb0b8b44240ce85812000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c478c24c008d642474b840bd66b18b5d04ff238d64240c8b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b9c2490000000ff128d642430ff34248b7c24088b3783fe090f85d40100008b77048b7c24548b078b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b542454893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54246c83fa037507bb05000000eb05bb130000008b5424688b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542410895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c70205000000b80500000083e8016bc001700583c001eb15b805000000bb03000000565752e8d5e7feff5a5f5ea801740989c183c1027002eb12bb03000000565752e8900cf9ff5a5f5e89c18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44241089410c895908897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c41cc24c008d642420b840bd66b18b5d04ff238b7c2404ff77048b7c2408ff77088b7c240cff770c8b7c244cff378b7c24508b3f83c702710e8d64241cb8f80466b18b5d04ff238b742450893e8b7c2450ff378b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b742454893e8b7c2454ff378b7c24588b3f83c702710e8d642424b8f80466b18b5d04ff238b742458893eff742420ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a01ff74243cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424788b8424900000008b9c2494000000e87fb7ffff89c78d64243057ff742424ff742478ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245cff742428ff74243cff742438ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424788b8424900000008b9c2498000000e8dfb6ffff89c18d6424348b7c247083f702578b75008d76f43b75087305ff5528cd02897500c746fc020000008b7c240c897e04c706070000008b55008d52f43b55087305ff5528cd42895500c742fc020000008b7c2404897a04c7020b0000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c707050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742428ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245cff742430ff742438ff742434ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b5424748b84248c0000008b9c2498000000e88cb5ffff89c38d6424348b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b5424688b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c7060b0000008b55008d52f43b55087305ff5528cdc8895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000598d642414894e04c706070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c408c24c008d6424045f8b7f04f7c7010000000f84970000008d64240483ff017507be03000000eb05be0100000083f6028b7c244c3bfe75708b7c24488b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b7424448b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c24c008b442444c24c008d642404b8cc4466b18b5d04ff238b7c2404ff77048b7c2408ff77088b7c244cff378b7c24508b3f83c702710e8d642418b8f80466b18b5d04ff238b742450893e6a016a016a018b7c2420ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424900000008b9c2498000000ff128d642430ff34248b7c24088b3783fe090f85130200008b77048b7c245c8b078b7c245c8b3f83c702710e8d642428b8f80466b18b5d04ff238b54245c893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54247483fa037507bb05000000eb05bb130000008b5424708b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542410895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c70205000000f644241801740b8b4c241883f9017d16eb1a8b4c24180fb649ff8d0c4d0100000083f92374068b5c2418eb16b8b02f66b18b5c2418565752e80005f9ff5a5f5e89c3f6c301740f89d883e8016bc002700583c001eb10b805000000565752e802e0feff5a5f5ea801740989c183c1027002eb12bb03000000565752e8bd04f9ff5a5f5e89c18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44241089410c895908897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c424c24c008d642428b840bd66b18b5d04ff238b7c2404ff77048b7c24088b7f0883ff0b0f85770200008b7c2448ff378b7c244c8b3f83c702710e8d642414b8f80466b18b5d04ff238b74244c893e6a016a016a018b7c241cff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424900000008b9c2494000000ff128d642430ff34248b7c24088b3783fe090f858b0100008b4f048b7c24588b078b7c24588b3f83c702710e8d642424b8f80466b18b5d04ff238b742458893e8b7d008d7ff43b7d087305ff5528cd03897d00c747fc02000000894704c707070000008b74247083fe037507bb13000000eb05bb050000008b54246c8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c8956088b542410895604c706010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706090000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc030000008b5c2410895908897104c701490000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c420c24c008d642424b840bd66b18b5d04ff2383ff130f85120100008b7c245c83f702ff74240cff742404ff74240c57ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7424688b5424648b4c24608b5c245c8b442458894424588b44243c895c245c8b5c2438894c2460895424648b542440897424688b3c24897c246c8b7c2404897c24708b7c2408897c24748b7c240c897c24788b7c2410897c247c8b7c241489bc24800000008b7c241889bc24840000008b7c241c89bc24880000008b7c242089bc248c0000008b7c242489bc24900000008b7c242889bc24940000008b7c242c89bc24980000008b7c243089bc249c0000008b7c243489bc24a000000083c454e922adffff8d64244c8d6424048b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b1ff742430548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b9c2490000000ff128d642430ff34248b7c24088b3783fe090f85d40100008b77048b7c24548b078b7c24548b3f83c702710e8d642420b8f80466b18b5d04ff238b542454893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704c707070000008b54246c83fa037507bb05000000eb05bb130000008b5424688b4d008d49e83b4d087305ff5528cdcd894d00c741fc0500000089411089590c8951088b542410895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c70205000000b80500000083e8016bc001700583c001eb15b805000000bb03000000565752e895d9feff5a5f5ea801740989c183c1027002eb12bb03000000565752e850fef8ff5a5f5e89c18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b44241089410c895908897104c7014d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b89590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c41cc24c008d642420b840bd66b18b5d04ff23f400|@11592,1,@826|27,0,@5643 249,0,@9455 348,0,@11507 480,0,@9455 526,0,3 540,0,2 547,0,9 599,0,0 634,0,2 639,0,2 657,0,2 662,0,1 670,1,@5527 691,0,1 699,1,@4895 739,0,2 784,0,38 819,0,6 928,0,@11517 1005,0,@9455 1042,0,@9455 1079,0,@9455 1131,0,3 1163,0,@9455 1215,0,3 1247,0,@9455 1299,0,3 1393,0,@11507 1619,0,@11507 1751,0,@9455 1800,0,3 1818,0,2 1825,0,9 1880,0,0 1915,0,2 1956,0,@11588 1976,0,1 2011,0,2 2046,0,6 2092,0,41 2127,0,6 2160,0,0 2167,0,@10755 2174,0,0 2183,0,3 2232,0,39 2267,0,6 2300,0,0 2307,0,@10755 2314,0,0 2327,0,3 2363,0,3 2376,0,16 2411,0,6 2622,0,@11517 2636,0,@11517 2676,0,@9455 2713,0,@9455 2750,0,@9455 2802,0,3 2834,0,@9455 2886,0,3 2918,0,@9455 2970,0,3 3064,0,@11507 3290,0,@11507 3422,0,@9455 3471,0,3 3489,0,2 3496,0,9 3551,0,0 3586,0,2 3627,0,@11588 3647,0,1 3682,0,2 3717,0,6 3763,0,41 3798,0,6 3831,0,0 3838,0,@10755 3845,0,0 3858,0,3 3907,0,39 3942,0,6 3975,0,0 3982,0,@10755 3989,0,0 3998,0,3 4034,0,3 4047,0,16 4082,0,6 4293,0,@11517 4307,0,@11517 4347,0,@9455 4384,0,@9455 4421,0,@9455 4473,0,3 4505,0,@9455 4557,0,3 4589,0,@9455 4641,0,3 4735,0,@11507 4961,0,@11507 5093,0,@9455 5142,0,3 5160,0,2 5167,0,9 5222,0,0 5257,0,2 5298,0,@11589 5318,0,1 5353,0,2 5388,0,6 5434,0,41 5469,0,6 5502,0,0 5509,0,@10755 5516,0,0 5525,0,3 5574,0,39 5609,0,6 5642,0,0 5649,0,@10755 5656,0,0 5669,0,3 5705,0,3 5718,0,16 5753,0,6 5964,0,@11517 5978,0,@11517 6018,0,@9455 6055,0,@9455 6092,0,@9455 6144,0,3 6176,0,@9455 6228,0,3 6260,0,@9455 6312,0,3 6406,0,@11507 6632,0,@11507 6764,0,@9455 6813,0,3 6831,0,2 6838,0,9 6893,0,0 6928,0,2 6969,0,@11589 6989,0,1 7024,0,2 7059,0,6 7105,0,41 7140,0,6 7173,0,0 7180,0,@10755 7187,0,0 7200,0,3 7249,0,39 7284,0,6 7317,0,0 7324,0,@10755 7331,0,0 7340,0,3 7376,0,3 7389,0,16 7424,0,6 7635,0,@11517 7649,0,@11517 7680,0,@9455 7717,0,@9455 7754,0,@9455 7806,0,3 7838,0,@9455 7890,0,3 7922,0,@9455 7974,0,3 8006,0,@9455 8058,0,3 8188,0,@11507 8417,0,@11507 8549,0,@9455 8598,0,3 8616,0,2 8623,0,9 8678,0,0 8713,0,2 8754,0,@11590 8774,0,5 8809,0,2 8844,0,6 8877,0,@9455 8931,0,@11591 8947,0,1 8982,0,2 9017,0,6 9063,0,41 9098,0,6 9131,0,0 9138,0,@10755 9145,0,0 9154,0,3 9203,0,39 9238,0,6 9271,0,0 9278,0,@10755 9285,0,0 9298,0,3 9334,0,3 9347,0,16 9382,0,6 9625,0,@11517 9639,0,@11517 9684,0,@9455 9783,0,@11507 10000,0,@11507 10133,0,0 10140,0,@10755 10147,0,0 10156,0,3 10188,0,@9455 10243,0,3 10275,0,@9455 10321,0,3 10348,0,1 10355,0,8 10386,0,7 10393,0,0 10421,0,0 10428,0,7 10456,0,8 10463,0,1 10482,0,9 10489,0,2 10544,0,0 10579,0,2 10624,0,38 10659,0,6 10692,0,0 10699,0,@10755 10706,0,0 10719,0,3 10755,0,5 10764,0,16 10799,0,6 10947,0,@11517 10961,0,@11517 11029,0,@9455 11128,0,@11507 11271,0,2 11280,1,@5527 11298,0,1 11303,1,@4895 11340,0,2 11351,0,@10214 11393,0,0 11419,0,@9455 11465,0,3 11500,0,1 11507,0,8 11526,0,5 11533,0,4 11573,0,7 11580,0,0 11599,0,6 11606,0,3 11646,0,0 11653,0,7 11672,0,3 11679,0,6 11716,0,8 11723,0,1 11742,0,4 11749,0,5 11768,0,9 11775,0,2 11830,0,0 11865,0,2 11911,0,38 11946,0,6 12055,0,@11517 12108,0,@9455 12207,0,@11507 12350,0,2 12359,1,@5527 12377,0,1 12382,1,@4895 12419,0,2 12430,0,@10214 12472,0,0 12498,0,@9455 12544,0,3 12558,0,4 12574,0,3 12590,0,2 12606,0,1 12613,0,0 12644,0,1 12651,0,8 12670,0,5 12677,0,4 12713,0,7 12720,0,0 12739,0,6 12746,0,3 12782,0,0 12789,0,7 12808,0,3 12815,0,6 12848,0,8 12855,0,1 12874,0,4 12881,0,5 12900,0,9 12907,0,2 12962,0,0 12997,0,2 13043,0,38 13078,0,6 13187,0,@11517 13218,0,@9455 13317,0,@11507 13537,0,@11507 13663,0,@9455 13709,0,3 13744,0,1 13751,0,8 13770,0,5 13777,0,4 13817,0,7 13824,0,0 13843,0,6 13850,0,3 13890,0,0 13897,0,7 13916,0,3 13923,0,6 13960,0,8 13967,0,1 13986,0,4 13993,0,5 14012,0,9 14019,0,2 14074,0,0 14109,0,2 14144,0,4 14193,0,38 14228,0,6 14337,0,@11517 14351,0,@11517 14386,0,@9455 14485,0,@11507 14611,0,@9455 14657,0,3 14671,0,2 14678,0,9 14730,0,0 14765,0,2 14770,0,2 14788,0,2 14793,0,1 14801,1,@5527 14822,0,1 14830,1,@4895 14870,0,2 14915,0,38 14950,0,6 15059,0,@11517 15127,0,@9455 15179,0,3 15211,0,@9455 15263,0,3 15295,0,@9455 15462,0,1 15687,0,1 15772,0,@9455 15830,0,3 15860,0,@10214 15870,0,0 15907,0,@9958 15913,1,@4895 15951,0,2 15987,0,5 15996,0,16 16031,0,6 16064,0,0 16118,0,@9455 16176,0,3 16317,0,@11507 16449,0,0 16459,0,0 16471,0,37 16506,0,6 16539,0,0 16597,0,@9455 16646,0,3 16664,0,2 16671,0,9 16726,0,0 16761,0,2 16818,0,8 16853,0,6 16911,0,4 16947,0,5 16960,0,16 17048,0,17 17083,0,6 17141,0,4 17177,0,5 17190,0,16 17278,0,17 17313,0,6 17340,1,@5644 17394,1,@5645 17448,1,@5646 17561,0,@11517 17596,0,@9455 17695,0,@11507 17821,0,@9455 17867,0,3 17881,0,2 17888,0,9 17940,0,0 17975,0,2 17980,0,2 17998,0,2 18003,0,1 18011,1,@5527 18032,0,1 18040,1,@4895 18080,0,2 18125,0,38 18160,0,6 18269,0,@11517 18321,0,@9455 18358,0,@9455 18395,0,@9455 18770,0,3 18809,0,5 18844,0,2 19098,0,3 19137,0,5 19172,0,2 19212,0,3 19345,0,1 19352,0,0 19402,0,5 19437,0,2 19491,0,@10214 19536,0,@9455 19635,0,@11507 19761,0,@9455 19807,0,3 19821,0,2 19828,0,9 19880,0,0 19915,0,2 19964,0,@9958 19976,1,@4895 20006,0,2 20014,1,@5527 20035,0,1 20043,1,@4895 20083,0,2 20128,0,38 20163,0,6 20272,0,@11517 20326,0,@9455 20425,0,@11507 20551,0,@9455 20597,0,3 20611,0,9 20618,0,2 20670,0,0 20705,0,2 20740,0,4 20782,0,36 20817,0,6 20926,0,@11517 21244,0,@9455 21343,0,@11507 21469,0,@9455 21515,0,3 21529,0,2 21536,0,9 21588,0,0 21623,0,2 21628,0,2 21646,0,2 21651,0,1 21659,1,@5527 21680,0,1 21688,1,@4895 21728,0,2 21773,0,38 21808,0,6 21917,0,@11517 5644:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@823| 5645:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@824| 5646:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@825| 5647:D3,1980|8d7c24a83b7d0c7305ff5530cd0d89d1538b3089f789fa8b3f83ff0f0f854f0400008b580889df8b1b83fb0f7507bb03000000eb05bb0100000083fb030f852e0400008b52048b5f04ff7004f6c3010f8400030000f6c2010f84f5020000f6c3010f84de02000083fb037507b803000000eb05b80100000083f8030f85d20200008b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b44244889308b7424448b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c706050000008b4424448930eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b44244889308b7424448b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c706050000008b4424448930eb078b7c24508b7f0457f6c3010f84e3010000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb10b8b02f66b15152e8a4faf8ff5a5989c757f60424010f849a010000f6c2010f848301000089d781e7ff010000578b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707050000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707050000008b742458893e8b7d008d7ff43b7d087305ff5528cd02897d00c747fc020000008b3424897704c70705000000576a016a016a01ff7104ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a01ff74243c6a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a00000008b9c24a4000000ff128d64242c5e8d64240cbf01000000e9720200008d642410b8cc4466b18b5d04ff238d642410b8d02f66b18b5d04ff238d64240cb8cc4466b18b5d04ff238d642408b8cc4466b18b5d04ff23eb00ff71085756ff74240cff742414ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b5424648b4c24608b5c245c8b4424588b742454894424548b442444895c24588b5c2440894c245c895424608b5424488b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c24748b7c2414897c24788b7c2418897c247c8b7c241c89bc24800000008b7c242089bc24840000008b7c242489bc24880000008b7c242889bc248c0000008b7c242c89bc24900000008b7c243089bc24940000008b7c243489bc24980000008b7c243889bc249c0000008b7c243c89bc24a00000008974245083c450ff228d6424548b78048b5008ff7108525657ff742410ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b5424608b4c245c8b5c24588b4424548b742450894424508b442444895c24548b5c2440894c24588954245c8b5424488b3c24897c24608b7c2404897c24648b7c2408897c24688b7c240c897c246c8b7c2410897c24708b7c2414897c24748b7c2418897c24788b7c241c897c247c8b7c242089bc24800000008b7c242489bc24840000008b7c242889bc24880000008b7c242c89bc248c0000008b7c243089bc24900000008b7c243489bc24940000008b7c243889bc24980000008b7c243c89bc249c0000008974244c83c44cff228d642450f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710010000008b74240c89770c8b7424108977088b742408897704c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c241483ff017d0e8d642424b8a84566b18b5d04ff23ff742408ff742410b8010000008b5c241ce8580100008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c897704c707090000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000897e0cc746080b0000008b7c2418897e04c706210000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70724be66b183ff01750489c3eb0989fbe8bf01000089c383fb0175035beb0e8b0424e81102000089c38d64240483fb0175065a83c410eb0e8b0424e85c02000089c28d6424148b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c00f40000|@11595,1,@831|47,0,1 54,0,0 109,0,1 116,0,0 162,0,@9455 214,0,2 259,0,@9455 311,0,2 373,0,@9958 380,1,@4895 439,0,@9455 491,0,2 523,0,@9455 575,0,2 619,0,2 786,0,0 800,0,@10214 814,0,@9960 828,0,@10214 842,0,@10214 1509,0,0 1536,0,0 1571,0,6 1604,0,0 1625,0,@10224 1643,0,0 1652,1,@5648 1691,0,4 1727,0,5 1740,0,16 1775,0,6 1808,0,0 1845,0,@11524 1861,1,@5649 1879,1,@5650 1904,1,@5651 1946,0,4 1962,0,0 1967,0,0 5648:D3,292|3b650c7305ff552ccd093bc37508b801000000c208008b7c24088b4d008d49f43b4d087305ff5528cd89894d00c741fc02000000897904c7010900000089c283ea016bd204710ab8f80466b18b5d04ff2383c2018b7424048b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000c7471401000000894f1089570cc74708c46866b1c747040b00000089378b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c7070d0000005783c002710e8d642404b8f80466b18b5d04ff238b7c240c8b7424085756e808ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20800f4|@10221,1,@827|15,0,0 57,0,4 72,0,@9455 117,0,0 130,0,@10755 137,0,5 174,0,32 209,0,6 224,0,@9455 5649:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@828| 5650:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@829| 5651:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@830| 5652:D3,3408|8dbc247cffffff3b7d0c7305ff5530cd0d5250538b7c24548b3f83ff0175568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424488932eb688b7c24548b3f83ff0375568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424488932eb078b7c24548b7f04578b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742450893e8b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742464893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c2434ff7704ffb42488000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff7424406a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424b00000008b5c2478ff128d6424305e8d64240cbf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4576a016a016a018b7c242c8b3f83ff0f0f858d0000008b7c242c8b5f04f6c3017415f6c3017402eb138d642438b8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e883edf8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9270200008b7c2478ff378b7c247c8b3f83c702710e8d64243cb8f80466b18b5d04ff238b74247c893e8b7c24788b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742478893e6a016a016a018b7c2444ff7704ffb42498000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247c6a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424bc0000008b5c2478ff128d6424305e5f8d642404ba01000000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f85a30100008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff3424ff742408ff7424106a016a016a018b7c244cff7704ffb424a4000000ffb424a4000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c0000008bbc249c0000008bb424980000008b9424940000008b8c24900000008b9c248c0000008b8424880000006a0168b4c266b16a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345a5e8d642404bf01000000eb0e8d64243cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc7578b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2434897a04c702090000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570cc747080b0000008b54242c895704c707210000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7020d0000008b4d008d49ec3b4d087305ff5528cd44894d00c741fc04000000c7410c010000008b7c24348979088b7c2420897904c701030000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917578b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714010000008b542408895710c7470cffffffffc74708c46866b1c74704050000008b54242489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702410000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d000000578b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542428895704c707090000008b55008d52ec3b55087305ff5528cdc0895500c742fc04000000897a0cc742080b0000008b7c242c897a04c702210000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d000000578b55008d52e83b55087305ff5528cd40895500c742fc05000000c74210010000008b7c2438897a0cc74208010000008b7c2434897a04c7024b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b0000008b74243c897204c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b4d008d49ec3b4d087305ff5528cdc0894d00c741fc040000008b54243489510c8b54243c8951088b542430895104c7011d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008b4c242c894b04c703090000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590cc741080b0000008b5c2444895904c701210000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c7030d0000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000c741040100000089198b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c70324be66b18b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b5c240ceb0b8b44240ce8b800000089c383fb0175035beb0e8b0424e80a01000089c38d64240483fb0175065b83c408eb0e8b0424e85501000089c38d64240c83fb0175065b83c40ceb0e8b0424e8a001000089c38d64241083fb0175065a83c418eb0e8b0424e8eb01000089c28d64241c8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24508917897704c7470801000000b80100000083c40cc25000f400|@11596,1,@837|53,0,@9455 105,0,2 150,0,@9455 202,0,2 244,0,@9455 296,0,2 328,0,@9455 380,0,2 412,0,@9455 464,0,2 496,0,@9455 548,0,3 580,0,@9455 632,0,2 664,0,@9455 716,0,2 759,0,2 967,0,0 1077,0,@10214 1087,0,0 1124,0,@9958 1129,1,@4895 1166,0,2 1173,0,0 1181,0,0 1216,0,@9455 1268,0,3 1410,0,@11507 1495,0,0 1602,0,0 1612,0,0 1624,0,37 1659,0,6 1692,0,0 1730,0,4 1898,0,@11544 1983,0,0 1994,0,@11571 2096,0,4 2132,0,5 2145,0,16 2180,0,6 2213,0,0 2233,0,1 2268,0,6 2301,0,0 2368,0,0 2382,0,-1 2389,0,@10755 2396,0,2 2437,0,32 2472,0,6 2512,0,4 2548,0,5 2561,0,16 2596,0,6 2630,0,0 2644,0,0 2657,0,37 2692,0,6 2728,0,5 2741,0,16 2776,0,6 2829,0,14 2864,0,6 2903,0,4 2939,0,5 2952,0,16 2987,0,6 3020,0,0 3057,0,@11524 3240,1,@5653 3258,1,@5654 3283,1,@5655 3308,1,@5656 3333,1,@5657 3375,0,4 3391,0,0 3396,0,0 5653:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@832| 5654:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@833| 5655:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@834| 5656:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@835| 5657:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@836| 5658:D3,12092|8d7c24983b7d0c7305ff5530cd0d525383f80b0f85d10200008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742448893e8b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e8b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c242cff7704ffb42480000000ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a01ff7424406a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b5c2478ff128d6424305e8d64240cbf01000000e96128000083f8090f85d10200008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742448893e8b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e8b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74245c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c242cff7704ffb42480000000ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a01ff7424406a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b5c2478ff128d6424305e8d64240cbf01000000e99a21000083f8070f85080700008b7c24588b3f83ff0f0f85240200008b7c24588b7f048b742448ff368b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244889328b74244cff368b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54244c89328b742450ff368b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54245089328b74244cff368b7424508b3683c602710e8d642418b8f80466b18b5d04ff238b5424508932f7c7010000007418f7c7010000007402eb138d642418b8cc4466b18b5d04ff23bf01000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70705000000576a016a016a018b7c2428ff7704ff74247cff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424606a01ff7424406a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a40000008b5c2478ff128d6424305e8d64240cbf01000000e9a61c00008b3c248b3f83ff0f0f85250200005f8b7f048b742444ff368b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b54244889328b7424448b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244489328b742448ff368b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54244889328b74244cff368b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54244c89328b742448ff368b74244c8b3683c602710e8d642414b8f80466b18b5d04ff238b54244c8932f7c7010000007418f7c7010000007402eb138d642414b8cc4466b18b5d04ff23bf01000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70705000000576a016a016a018b7c2424ff7704ff74247cff74247cff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424606a01ff7424446a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345e8d64240cbf01000000e9bb1700008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742448893e8b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742450893e8b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c2454ff378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b742458893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c242cff7704ffb42480000000ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b4424646a01ff7424406a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424a80000008b5c2478ff128d6424305e8d64240cbf01000000e99610000083f80d0f85580200008b7c24588b3f83ff0f0f851e0100008b7c24588b5f048b7c2440ff378b7c24448b3f83c702710e8d64240cb8f80466b18b5d04ff238b742444893ef6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e87fb0feff89c7eb138d64240cb8cc4466b18b5d04ff23bf01000000576a016a016a018b7c2418ff7704ff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305a5f8d642404be01000000e9060e00008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742448893e8b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305a5f8d642404be01000000e98b09000083f8010f85820300008b7c24588b3f83ff0f0f851e0100008b7c24588b5f048b7c2440ff378b7c24448b3f83c702710e8d64240cb8f80466b18b5d04ff238b742444893ef6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e81eaefeff89c7eb138d64240cb8cc4466b18b5d04ff23bf01000000576a016a016a018b7c2418ff7704ff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305a5f8d642404be01000000e9fb0600008b3c248b3f83ff0f0f851f0100005f8b5f048b7c243cff378b7c24408b3f83c702710e8d642408b8f80466b18b5d04ff238b742440893ef6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e8f5acfeff89c7eb138d642408b8cc4466b18b5d04ff23bf01000000576a016a016a018b7c2414ff7704ff74246cff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345a5f8d642404be01000000e9740400008b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742448893e8b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a018b7c2418ff7704ff74246cff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a01548304243cff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b54247c8b8424940000008b5c2478ff128d6424305a5f8d642404be01000000eb0e8d642408b888ca66b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b6000000ff77046a016a016a018b7c2420ff7704ff742478ff742478ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345a5f8d642404be01000000eb0e8d642414b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85e20100008b57048b7c24548b3f8b7424548b3683c602710e8d64241cb8f80466b18b5d04ff238b4c245489318b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c2410894e10c7460cc45166b1895608897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2410897a04c702090000008b4c24648b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570c8b5424048957088b54240c895704c707010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5424648b442410ff1289c383fb0175035beb0e8b0424e88d19000089c38d64240483fb0175065b83c404eb0e8b0424e8d819000089c38d64240883fb0175075883c410c25000588b7c2410897c246083c460e9191a00008d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85070100008b7f048b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204c702050000008b4c24588b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560c897e088b7c2408897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b5424588b44240cff1289c383fb0175035beb0e8b0424e84619000089c38d64240483fb0175075883c40cc25000588b7c240c897c245c83c45ce9871900008d642410b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85070100008b7f048b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204c702050000008b4c245c8b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560c897e088b7c2408897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b54245c8b44240cff1289c383fb0175035beb0e8b0424e8b418000089c38d64240483fb0175075883c410c25000588b7c2410897c246083c460e9f51800008d642414b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b6000000ff77046a016a016a018b7c2420ff7704ff742478ff742478ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345a5f8d642404be01000000eb0e8d642414b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85f40100008b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b75008d76e83b75087305ff5528cd80897500c746fc050000008b542410895610897e0c8b7c2404897e088b7c240c897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b5424648b442410ff128b7c24588b378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b542458893a8b5424688b7d008d7fe83b7d087305ff5528cd45897d00c747fc05000000895710c7470cc45166b18b542414895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e85716000089c383fb0175035beb0e8b0424e8a916000089c38d64240483fb0175065b83c404eb0e8b0424e8f416000089c38d64240883fb0175075883c410c25000588b7c2410897c246083c460e9351700008d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85070100008b7f048b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204c702050000008b4c245c8b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560c897e088b7c2408897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b54245c8b44240cff1289c383fb0175035beb0e8b0424e86216000089c38d64240483fb0175075883c410c25000588b7c2410897c246083c460e9a31600008d642414b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c2430ff7704ffb42488000000ffb42488000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff7424446a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345e8d64240cbf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710030000008b74241c89770cc74708010000008b742414897704c7074b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7c24608b178b7c24608b3f83c702710e8d642428b8f80466b18b5d04ff238b4c246089398b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2410894f10c7470cc45166b18b4c2418894f08895704c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008b4c2410894a04c702090000008b4d008d49e83b4d087305ff5528cdc4894d00c741fc050000008b5c240c89591089510c8b5424148951088b542408895104c701290000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5424708b44240cff128b7c24648b378b7c24648b3f83c702710e8d64242cb8f80466b18b5d04ff238b542464893a8b5424748b7d008d7fe83b7d087305ff5528cd45897d00c747fc05000000895710c7470cc45166b18b542410895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e8c112000089c383fb0175035beb0e8b0424e81313000089c38d64240483fb0175035beb0e8b0424e86113000089c38d64240483fb0175075883c420c25000588b7c2420897c247083c470e9a2130000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c24548b3f8b7424548b3683c602710e8d64241cb8f80466b18b5d04ff238b54245489328b75008d76e83b75087305ff5528cd80897500c746fc050000008b542410895610c7460cc45166b18b542414895608897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542404895704c707050000008b55008d52e83b55087305ff5528cdc0895500c742fc050000008b4c240c894a10897a0c8b7c2410897a088b7c2408897a04c702290000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5424648b44240cff128b7c24588b378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b542458893a8b5424688b7d008d7fe83b7d087305ff5528cd45897d00c747fc05000000895710c7470cc45166b18b542410895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e88311000089c383fb0175035beb0e8b0424e8d511000089c38d64240483fb0175075883c418c25000588b7c2418897c246883c468e916120000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c24588b3f8b7424588b3683c602710e8d642420b8f80466b18b5d04ff238b54245889328b75008d76e83b75087305ff5528cd80897500c746fc050000008b542410895610c7460cc45166b18b542414895608897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542404895704c707050000008b55008d52e83b55087305ff5528cdc0895500c742fc050000008b4c240c894a10897a0c8b7c2410897a088b7c2408897a04c702290000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5424688b44240cff128b7c245c8b378b7c245c8b3f83c702710e8d642424b8f80466b18b5d04ff238b54245c893a8b54246c8b7d008d7fe83b7d087305ff5528cd45897d00c747fc05000000895710c7470cc45166b18b542410895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e8f70f000089c383fb0175035beb0e8b0424e84910000089c38d64240483fb0175075883c41cc25000588b7c241c897c246c83c46ce98a100000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c2430ff7704ffb42488000000ffb42488000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff7424446a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345f8d64240cb801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610030000008b7c2418897e0cc74608010000008b7c2410897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000578b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610030000008b7c2418897e0cc74608010000008b7c2410897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000578b75008d76f43b75087305ff5528cd01897500c746fc020000008b7c2414897e04c706090000008b7d008d7fe83b7d087305ff5528cd41897d00c747fc050000008b54240c8957108b54241089570cc74708030000008b54241889570489378b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706150000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b7424748b55008d52ec3b55087305ff5528cdc1895500c742fc04000000c7420c030000008b4c2410894a08897204c702450000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd85897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b3c24893b8d64240483fb01750489c3eb07e8200d000089c383fb0175075883c420c25000588b7c2420897c247083c470e9650d0000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70705000000576a016a016a018b7c2430ff7704ffb42488000000ffb42488000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a01ff7424446a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b44247c8b5c2478ff128d6424345f8d64240cb801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610030000008b7c2418897e0cc74608010000008b7c2410897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000578b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610030000008b7c2418897e0cc74608010000008b7c2410897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000578b75008d76f43b75087305ff5528cd01897500c746fc020000008b7c2414897e04c706090000008b7d008d7fe83b7d087305ff5528cd41897d00c747fc050000008b54240c8957108b54241089570cc74708030000008b54241889570489378b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706150000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b7424748b55008d52ec3b55087305ff5528cdc1895500c742fc04000000c7420c030000008b4c240c894a08897204c702450000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd85897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b3c24893b8d64240483fb01750489c3eb07e8fb09000089c383fb0175075883c420c25000588b7c2420897c247083c470e9400a0000f4000000|@11601,1,@865|47,0,@9455 99,0,2 131,0,@9455 183,0,2 215,0,@9455 267,0,3 299,0,@9455 351,0,3 383,0,@9455 435,0,3 467,0,@9455 519,0,3 562,0,2 737,0,0 777,0,@9455 829,0,2 861,0,@9455 913,0,2 945,0,@9455 997,0,3 1029,0,@9455 1081,0,3 1113,0,@9455 1165,0,3 1197,0,@9455 1249,0,3 1292,0,2 1467,0,0 1529,0,@9455 1581,0,2 1613,0,@9455 1665,0,3 1697,0,@9455 1749,0,3 1781,0,@9455 1819,0,@10214 1829,0,0 1867,0,2 2039,0,0 2088,0,@9455 2140,0,2 2172,0,@9455 2224,0,3 2256,0,@9455 2308,0,3 2340,0,@9455 2378,0,@10214 2388,0,0 2426,0,2 2602,0,0 2633,0,@9455 2685,0,2 2717,0,@9455 2769,0,2 2801,0,@9455 2853,0,3 2885,0,@9455 2937,0,3 2969,0,@9455 3021,0,3 3053,0,@9455 3101,0,2 3276,0,0 3338,0,@9455 3384,0,2 3389,1,@5527 3402,0,@10214 3412,0,0 3501,0,@11507 3586,0,0 3617,0,@9455 3669,0,2 3701,0,@9455 3800,0,@11507 3885,0,0 3947,0,@9455 3993,0,2 3998,1,@5527 4011,0,@10214 4021,0,0 4110,0,@11507 4195,0,0 4244,0,@9455 4290,0,2 4295,1,@5527 4308,0,@10214 4318,0,0 4411,0,@11507 4496,0,0 4527,0,@9455 4579,0,2 4611,0,@9455 4710,0,@11507 4795,0,0 4806,0,@11598 4975,0,@11507 5060,0,0 5071,0,@11571 5174,0,@9455 5225,0,@10390 5237,0,4 5272,0,2 5307,0,6 5346,0,4 5402,0,0 5437,0,2 5472,0,6 5505,0,0 5567,1,@5659 5592,1,@5660 5627,1,@5661 5636,0,@11571 5752,0,2 5804,0,0 5839,0,2 5874,0,6 5907,0,0 5938,1,@5662 5973,1,@5663 5982,0,@11571 6098,0,2 6150,0,0 6185,0,2 6220,0,6 6253,0,0 6284,1,@5664 6319,1,@5665 6328,0,@11571 6497,0,@11507 6582,0,0 6593,0,@11571 6705,0,4 6761,0,4 6796,0,2 6831,0,6 6864,0,0 6903,0,@9455 6954,0,@10390 6970,0,0 7005,0,2 7040,0,6 7073,0,0 7089,1,@5666 7107,1,@5667 7132,1,@5668 7167,1,@5669 7176,0,@11571 7292,0,2 7344,0,4 7379,0,2 7414,0,6 7447,0,0 7478,1,@5670 7513,1,@5671 7522,0,@11571 7625,0,2 7840,0,0 7932,0,1 7946,0,0 7959,0,37 7994,0,6 8020,0,@9455 8071,0,@10390 8087,0,4 8122,0,2 8157,0,6 8196,0,4 8252,0,20 8287,0,6 8320,0,0 8421,0,@9455 8472,0,@10390 8488,0,0 8523,0,2 8558,0,6 8591,0,0 8607,1,@5672 8625,1,@5673 8647,1,@5674 8682,1,@5675 8769,0,@9455 8820,0,@10390 8836,0,4 8871,0,2 8906,0,6 8945,0,2 9001,0,20 9036,0,6 9069,0,0 9139,0,@9455 9190,0,@10390 9206,0,0 9241,0,2 9276,0,6 9309,0,0 9325,1,@5676 9343,1,@5677 9378,1,@5678 9465,0,@9455 9516,0,@10390 9532,0,4 9567,0,2 9602,0,6 9641,0,2 9697,0,20 9732,0,6 9765,0,0 9835,0,@9455 9886,0,@10390 9902,0,0 9937,0,2 9972,0,6 10005,0,0 10021,1,@5679 10039,1,@5680 10074,1,@5681 10172,0,2 10387,0,0 10480,0,1 10494,0,0 10507,0,37 10542,0,6 10576,0,1 10590,0,0 10603,0,37 10638,0,6 10678,0,4 10725,0,1 10769,0,10 10804,0,6 10841,0,1 10857,0,34 10892,0,6 10925,0,0 11048,1,@5682 11079,1,@5683 11177,0,2 11392,0,0 11485,0,1 11499,0,0 11512,0,37 11547,0,6 11581,0,1 11595,0,0 11608,0,37 11643,0,6 11683,0,4 11730,0,1 11774,0,10 11809,0,6 11846,0,1 11862,0,34 11897,0,6 11930,0,0 12053,1,@5684 12084,1,@5685 5659:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@838| 5660:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@839| 5661:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@840| 5662:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@841| 5663:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@842| 5664:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@843| 5665:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@844| 5666:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@845| 5667:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@846| 5668:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@847| 5669:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@848| 5670:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@849| 5671:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@850| 5672:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@851| 5673:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@852| 5674:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@853| 5675:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@854| 5676:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@855| 5677:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@856| 5678:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@857| 5679:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@858| 5680:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@859| 5681:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@860| 5682:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@861| 5683:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@862| 5684:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@863| 5685:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@864| 5686:D3,44216|8d7c24983b7d0c7305ff5530cd0d52538b780889f98b37ba4cb72db181c2280000008d54b2fcffe2e95b000000909090e99f020000909090e988040000909090e93d110000909090e957120000909090e9ee160000909090e969180000909090e9e4190000909090e9fe1a0000909090e9ed2a0000909090e9072c0000909090e9b4330000909090ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04578b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742454893e8b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742458893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70705000000576a016a016a018b7c2428ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a01ff74243c6a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84249c0000008b9c24a0000000ff128d64242c5e8d64240cbf01000000e95ca40000ff7704ff30ff70048b7c240c8b77088b7c245c8b3f83ff0175568b7c24548b3f8b5424548b1283c202710e8d642414b8f80466b18b5d04ff238b4c245489118b5424508b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c24508911eb688b7c245c8b3f83ff0375568b7c24548b3f8b5424548b1283c202710e8d642414b8f80466b18b5d04ff238b4c245489118b5424508b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702050000008b4c24508911eb078b7c245c8b7f04578b5424548b4c24588b5c244c8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c895708897704c70718642eb1578b7c2418ff770cff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff742434ff742444ff742438ff742438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2488000000ff1289c28d6424308b75008d76f43b75087305ff5528cd04897500c746fc020000005f8d642414897e04c706090000008b7c24448917897704c7470801000000b801000000c24c008b7f0483ff050f8580010000ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5f8d642404be01000000e92f9b000083ff030f8580010000ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9fa93000083ff070f85d4010000ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04578b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742454893e6a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9008e000083ff0d0f850f030000ff70048b3c248b3f83ff0f0f85810100005fff7704ff308b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9ff870000ff308b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9f981000083ff010f859c040000ff70048b3c248b3f83ff0f0f85810100005fff7704ff308b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9f87b0000ff308b3c248b3f83ff0f0f857f0100005fff77048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9037600008b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9ff6f00008d642408b8c8cb66b18b5d04ff238b388b50048b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706070000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c58a766b1c74708a8ba66b1897704c7070d000000576a016a016a018b7c2414ff7704ff742468ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c6a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424900000008b9c2494000000ff128d6424348b34248b7c2404ff742408ba01000000e97b6e0000ff7704ff70048b3c248b3f83ff0f0f85810100005fff7704ff308b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2498000000ff128d64242c5a5f8d642404be01000000e956680000ff308b3c248b3f83ff0f0f857f0100005fff77048b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9376200008b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9ff5b0000ff7704ff30ff70048b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2498000000ff128d64242c5a5f8d642404be01000000e904540000ff7704ff30ff70048b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9fa4d00008b388b50048b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706070000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c58a766b1c74708a8ba66b1897704c7070d000000576a016a016a018b7c2414ff7704ff742468ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c6a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424900000008b9c2494000000ff128d6424348b34248b7c2404ff742408ba01000000e9844c00008b7f0483ff050f8580010000ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9b945000083ff030f8580010000ff30ff70048b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9f13e000083ff070f85fa030000ff70048b3c248b3f83ff0f0f852d0100005f8b7f048b30f7c7010000007418f7c7010000007402eb138d642408b8cc4466b18b5d04ff23bf010000008b542404ff720856ff742408ff74245c57ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7424608b54245c8b4c24588b5c24548b442450894424508b44243c895c24548b5c2438894c24588954245c8b542440897424608b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c24748b7c2414897c24788b7c2418897c247c8b7c241c89bc24800000008b7c242089bc24840000008b7c242489bc24880000008b7c242889bc248c0000008b7c242c89bc24900000008b7c243089bc24940000008b7c243489bc249800000083c44cff228d64244cff308b3c248b3f83ff0f0f85310100005f8b7f04f7c7010000007418f7c7010000007402eb138d64240cb8cc4466b18b5d04ff23bf010000008b742408ff7608ff742404ff74240cff74246057ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b44243c895c24588b5c2438894c245c895424608b542440897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc24980000008b7c243489bc249c00000083c450ff228d6424508b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e96835000083ff0d0f85a3030000ff70048b3c248b3f83ff0f0f85c10100005f8b5f04ff308b7c24548b3f83ff0175568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb688b7c24548b3f83ff0375568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb078b7c24548b7f0457f6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e84f60feff89c7eb138d642410b8cc4466b18b5d04ff23bf01000000576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e905320000ff308b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04578b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b742454893e6a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9cc2c000083ff010f851c050000ff70048b3c248b3f83ff0f0f85c10100005f8b5f04ff308b7c24548b3f83ff0175568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb688b7c24548b3f83ff0375568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb078b7c24548b7f0457f6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e8a35cfeff89c7eb138d642410b8cc4466b18b5d04ff23bf01000000576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e969290000ff308b3c248b3f83ff0f0f85bf0100005f8b5f048b7c24548b3f83ff0175568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb688b7c24548b3f83ff0375568b7c244c8b3f8b74244c8b3683c602710e8d64240cb8f80466b18b5d04ff238b54244c89328b7424488b168b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b5424488932eb078b7c24548b7f0457f6c3017435f6c3017422f6c301740f89df83ef016bff02700583c701eb0cb805000000e8d45afeff89c7eb138d642410b8cc4466b18b5d04ff23bf01000000576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e9122600008b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e91c2200008d642408b838cc66b18b5d04ff238b388b50048b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706070000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c58a766b1c74708a8ba66b1897704c7070d000000576a016a016a018b7c2414ff7704ff742468ff742468ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74242cff74242c6a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424900000008b9c2494000000ff128d6424348b34248b7c2404ff742408ba01000000e998200000ff77048b700489f28b3683fe0f0f8580010000ff7204ff308b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2498000000ff128d64242c5a5e8d642404bf01000000e9a81c00008b0889ce8b0983f90f0f857f01000052ff76048b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04576a016a016a018b7c2420ff7704ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b4424546a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2498000000ff128d64242c5a5e8d642404bf01000000e9bd1800008d6424048b5f0489d983fb030f857d01000052568b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e98b14000089cf83ff010f857d01000052568b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e96010000052568b7c24588b3f83ff0175568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb688b7c24588b3f83ff0375568b7c24508b3f8b7424508b3683c602710e8d642410b8f80466b18b5d04ff238b54245089328b74244c8b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b54244c8932eb078b7c24588b7f04576a016a016a018b7c241cff7704ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84248c0000008b9c2494000000ff128d64242c5a5f8d642404be01000000e9320b0000ff77048b7f0483ff010f85630100008b700489f78b3683fe0f7507be03000000eb05be0100000083fe030f85420100008d6424048b4f048b30f6c101742df6c101741a83f93f7207bf01000000eb0c33ff83c702d1e9d3e783cf01eb138d642408b8cc4466b18b5d04ff23bf030000008b542404ff720856ff742408ff74245c57ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7424608b54245c8b4c24588b5c24548b442450894424508b44243c895c24548b5c2438894c24588954245c8b542440897424608b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c24748b7c2414897c24788b7c2418897c247c8b7c241c89bc24800000008b7c242089bc24840000008b7c242489bc24880000008b7c242889bc248c0000008b7c242c89bc24900000008b7c243089bc24940000008b7c243489bc249800000083c44cff228d64244cff30ff70048b7c245c8b3f83ff0175568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb688b7c245c8b3f83ff0375568b7c24548b3f8b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b5424508932eb078b7c245c8b7f04578b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742458893e8b7c240c8b3f83ff0f0f850e0100008b7c240c8b5f04f6c301745ff6c301744cf6c301740783fb017d12eb120fb67bff8d3c7d0100000083ff237402eb0cb8b02f66b1e8a671f8ff89c3f6c301740f89df83ef016bff02700583c701eb0cb805000000e8ae4cfeff89c7eb138d64241cb8cc4466b18b5d04ff23bf030000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc747080b0000008b3424897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937e9250200006a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c249c000000ff128d64242c5e5f8d642404b801000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85f80200008b77048b7c241083ff01757d8b7c24548b178b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b4c245489398b7d008d7fe83b7d087305ff5528cd45897d00c747fc050000008b0c24894f10c7470cc45166b1897708895704c707090000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c70605000000eb538b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707090000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000897e0cc746080b0000008b3c24897e04c706210000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e8ba75000089c7576a016a016a018b7c24188b3f83ff0f0f858d0000008b7c24188b5f04f6c3017415f6c3017402eb138d64242cb8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e8466ef8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9270200008b7c246cff378b7c24708b3f83c702710e8d642430b8f80466b18b5d04ff238b742470893e8b7c246c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74246c893e6a016a016a018b7c2438ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a40000008b9c24b0000000ff128d64242c5e5f8d642404ba01000000eb0e8d64241cb824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f85320300008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff3424ff7424088b5c24108b7c24748b0f8b7c24748b3f83c702710e8d642434b8f80466b18b5d04ff238b742474893e8b7c24708b378b7d008d7ff43b7d087305ff5528cd4a897d00c747fc02000000897704c707070000008b742470893e8b7c242883ff037507ba01000000eb158b7c242883ff057507ba05000000eb05ba030000008b7c246c8b378b7c246c8b3f83c702710e8d642434b8f80466b18b5d04ff238b44246c89388b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8b5c2418895f0889570489378b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c7063f0000008b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c7070d0000008b74246c8b368b54246c8b1283c202710e8d642434b8f80466b18b5d04ff238b5c246c89138b55008d52e83b55087305ff5528cdc2895500c742fc050000008b5c241c895a10c7420cc45166b1894a08897204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e84671000089c38d64240483fb0175065b83c40ceb0e8b0424e89171000089c38d64241083fb0175065a83c404eb0e8b0424e8dc71000089c28d6424088b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642430b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5e5f8d642404b801000000eb0e8d642418b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85580200008b7f048b74245c8b0e8b74245c8b3683c602710e8d64241cb8f80466b18b5d04ff238b54245c89328b7424588b168b75008d76f43b75087305ff5528cd87897500c746fc02000000895604c706050000008b54245889328b55008d52f43b55087305ff5528cd83895500c742fc02000000897a04c702090000008b7c24548b378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b5c2454893b8b7d008d7fe83b7d087305ff5528cd47897d00c747fc05000000894f1089570c5a895708897704c7070b0000008b75008d76f43b75087305ff5528cd83897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd43897d00c747fc02000000897704c7070d0000008b7424508b368b5424508b1283c202710e8d642418b8f80466b18b5d04ff238b5c245089138b55008d52e83b55087305ff5528cdc3895500c742fc050000008b5c2404895a10c7420cc45166b1894a08897204c702070000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c3eb07e8a16e000089c383fb0175035aeb0e8b0424e8f36e000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5e5f8d642404b801000000eb0e8d642418b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f854a0100008b7f048b55008d52f43b55087305ff5528cd81895500c742fc02000000897a04c702090000008b7c24548b378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b4c245489398b7d008d7fe83b7d087305ff5528cd45897d00c747fc050000008b4c2408894f1089570c5a895708897704c707030000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e8c66c000089c383fb0175035aeb0e8b0424e8186d000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5e5f8d642404b801000000eb0e8d642418b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f854a0100008b7f048b55008d52f43b55087305ff5528cd81895500c742fc02000000897a04c702090000008b7c24548b378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b4c245489398b7d008d7fe83b7d087305ff5528cd45897d00c747fc050000008b4c2408894f1089570c5a895708897704c707070000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e8eb6a000089c383fb0175035aeb0e8b0424e83d6b000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f850b020000ff7604f6442408010f84a40000008b74241083fe057541f644240801742cf64424080174118b74240883ee016bf602700583c601eb12b8050000008b5c240857e8f93afeff5f89c6eb588d64241cb8cc4466b18b5d04ff23f6442408017445f64424080174118b44240883e8016bc002700583c001eb10b8050000008b5c240857e8b83afeff5fa801740989c683c6027002eb0ebb0300000057e8775ff8ff5f89c6eb138d64241cb8cc4466b18b5d04ff23be010000008b54241083fa057507ba0b000000eb158b54241083fa017507ba03000000eb05ba070000008b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000897304c703050000008b7424548b0e8b7424548b3683c602710e8d64241cb8f80466b18b5d04ff238b44245489308b75008d76e83b75087305ff5528cd8e897500c746fc050000008b442404894610895e0c5b895e08894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb01750489faeb0989f8e84069000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f850b020000ff7604f644240c010f84a40000008b74241083fe057541f644240c01742cf644240c0174118b74240c83ee016bf602700583c601eb12b8050000008b5c240c57e89c38feff5f89c6eb588d64241cb8cc4466b18b5d04ff23f644240c017445f644240c0174118b44240c83e8016bc002700583c001eb10b8050000008b5c240c57e85b38feff5fa801740989c683c6027002eb0ebb0300000057e81a5df8ff5f89c6eb138d64241cb8cc4466b18b5d04ff23be010000008b54241083fa057507ba0b000000eb158b54241083fa017507ba03000000eb05ba070000008b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000897304c703050000008b7424548b0e8b7424548b3683c602710e8d64241cb8f80466b18b5d04ff238b44245489308b75008d76e83b75087305ff5528cd8e897500c746fc050000008b442404894610895e0c5b895e08894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb01750489faeb0989f8e84767000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642418b824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5e5f8d642404b801000000eb0e8d642418b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85220100008b77048b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000005a89178b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702010000008b75008d76e83b75087305ff5528cd85897500c746fc05000000c74610ffffffff89560c8b542404895608897e04c706230000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e8f264000089c383fb0175035aeb0e8b0424e84465000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85330100008b57048b4d008d49f43b4d087305ff5528cd05894d00c741fc020000005f897904c701050000008b7c24488b378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b5c2448893b8b7d008d7fe83b7d087305ff5528cd47897d00c747fc050000008b1c24895f10894f0c895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c2eb07e81c64000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24508917897704c7470801000000b80100000083c40cc24c008d642414b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85330100008b57048b4d008d49f43b4d087305ff5528cd05894d00c741fc020000005f897904c701050000008b7c24488b378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b5c2448893b8b7d008d7fe83b7d087305ff5528cd47897d00c747fc050000008b1c24895f10894f0c895708897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c2eb07e8f862000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24508917897704c7470801000000b80100000083c40cc24c008d642414b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2428ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b84249c0000008b9c24a0000000ff128d64242c5e5f8d642404b801000000eb0e8d64241cb824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f850f0200008b7f048b55008d52f43b55087305ff5528cd81895500c742fc02000000897a04c702090000008b7c24588b378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b4c245889398b7d008d7fe83b7d087305ff5528cd45897d00c747fc050000008b4c2408894f1089570c5a895708897704c707090000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b7424548b368b5424548b1283c202710e8d64241cb8f80466b18b5d04ff238b4c245489118b55008d52e83b55087305ff5528cdc1895500c742fc050000008b4c2408894a10c7420cc45166b18b4c2404894a08897204c702010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c3eb07e80d60000089c383fb0175065a83c404eb0e8b0424e85c60000089c28d6424088b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85330100008b57048b4d008d49f43b4d087305ff5528cd05894d00c741fc020000005f897904c701050000008b7c24488b378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b5c2448893b8b7d008d7fe83b7d087305ff5528cd47897d00c747fc050000008b1c24895f10894f0c895708897704c707090000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c2eb07e8345f000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24508917897704c7470801000000b80100000083c40cc24c008d642414b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f852f0400008b5f048b7c24608b178b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000897704c707070000008b74245c893e8b7c24608b3f8b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b4c246089318b74245c8b0e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e04c706070000008b4c245c89318b742460ff368b7424648b3683c602710e8d642424b8f80466b18b5d04ff238b4c246489318b7424608b0e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e04c706070000008b4c246089318b4d008d49e83b4d087305ff5528cd8c894d00c741fc05000000c74110010000008b74240889710cc7410801000000895104c7014b0000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e04c7060d000000568b7424608b0e8b7424608b3683c602710e8d642428b8f80466b18b5d04ff238b44246089308b75008d76e83b75087305ff5528cd8e897500c746fc05000000897e10c7460cc45166b1895e08894e04c706090000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c701090000008b7c24648b3f8b7424648b3683c602710e8d64242cb8f80466b18b5d04ff238b5c246489338b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2408895e10894e0c895608897e04c706290000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b7424648b168b7424648b3683c602710e8d64242cb8f80466b18b5d04ff238b4c246489318b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c2418894e10c7460cc45166b18b4c2408894e08895604c706010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f8d642404893b83fb0175065b83c404eb0e8b0424e82c5a000089c38d64240883fb0175035aeb0e8b0424e87a5a000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85e80300008b57048b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c24648b378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b4c246489398b7c24608b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707070000008b4c246089398b7c24648b0f8b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b5c2464893b8b7c24608b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c707070000008b5c2460893b8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b5c2468893b8b7c24648b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c707070000008b5c2464893b8b5d008d5be83b5d087305ff5528cd46895d00c743fc05000000c74310010000008b7c240c897b0cc74308010000008b7c2404897b04c7034b0000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c7070d0000008b5d008d5be83b5d087305ff5528cdc6895d00c743fc05000000c743100100000089530cc7430801000000897304c7034b0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c7020d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304c703090000008b75008d76e83b75087305ff5528cd8e897500c746fc050000008b04248946108d642404894e0cc746080100000058894604891e8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304c703150000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04c7060d0000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000c7430c01000000894b088b4c240c894b04c703450000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175065b83c404eb0e8b0424e8b555000089c38d64240883fb0175035aeb0e8b0424e80356000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85e80300008b57048b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c24648b378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b4c246489398b7c24608b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707070000008b4c246089398b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b4c246889398b7c24648b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c707070000008b4c246489398b7c24688b0f8b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b5c2468893b8b7c24648b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c707070000008b5c2464893b8b5d008d5be83b5d087305ff5528cd46895d00c743fc05000000c74310010000008b7c240c897b0cc74308010000008b7c2404897b04c7034b0000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c7070d0000008b5d008d5be83b5d087305ff5528cdc6895d00c743fc05000000c743100100000089530cc7430801000000897304c7034b0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c7020d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304c703090000008b75008d76e83b75087305ff5528cd8e897500c746fc05000000894e108b042489460c8d642404c746080100000058894604891e8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304c703150000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04c7060d0000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc04000000c7430c01000000894b088b4c240c894b04c703450000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c7010d0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175065b83c404eb0e8b0424e83e51000089c38d64240883fb0175035aeb0e8b0424e88c51000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2428ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c24a0000000ff128d64242c5e5f8d642404b801000000eb0e8d64241cb824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f852e0300008b57048b7c24608b0f8b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd47897d00c747fc02000000897704c707070000008b74245c893e8b7c24608b3f8b7424608b3683c602710e8d642420b8f80466b18b5d04ff238b5c246089338b74245c8b1e8b75008d76f43b75087305ff5528cd8f897500c746fc02000000895e04c706070000008b5c245c89338b75008d76e83b75087305ff5528cd87897500c746fc05000000c7461001000000c7460cc46866b1c74608010000005b895e04c706070000008b5d008d5bec3b5d087305ff5528cdc7895d00c743fc0400000089730cc7430807000000894b04c703210000008b75008d76f43b75087305ff5528cd8f897500c746fc02000000895e04c7060d000000568b74241483fe037507be07000000eb328b74241483fe077507be0b000000eb228b74241483fe0d7507be0d000000eb128b74241483fe010f85ae010000be010000008b5d008d5be83b5d087305ff5528cdc7895d00c743fc05000000c7431001000000c7430cc46866b1c7430801000000895304c703070000008b55008d52e83b55087305ff5528cdcb895500c742fc05000000897a10895a0c894a08897204c702510000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc1895500c742fc05000000c7421001000000c7420c05000000897a088b7c2408897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b045f893b83fb01750489c3eb07e8354d000089c383fb0175035aeb0e8b0424e8874d000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642420b8a4cc66b18b5d04ff238d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85c8010000ff77046a016a016a018b7c24188b3f83ff0f0f858d0000008b7c24188b5f04f6c3017415f6c3017402eb138d64242cb8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e8453bf8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9270200008b7c246cff378b7c24708b3f83c702710e8d642430b8f80466b18b5d04ff238b742470893e8b7c246c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74246c893e6a016a016a018b7c2438ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a40000008b9c24b0000000ff128d64242c5e5f8d642404ba01000000eb0e8d64241cb824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f85080400008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff3424ff742408ff7424108b7c24788b178b7c24788b3f83c702710e8d642438b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742474893e8b7c242c83ff037507b901000000eb158b7c242c83ff057507b905000000eb05b9030000008b7c24788b1f8b7c24788b3f83c702710e8d642438b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000897704c707070000008b742474893e8b75008d76e83b75087305ff5528cd0e897500c746fc05000000c7461001000000c7460cc46866b1c74608010000008b7c2418897e04c706070000008b7d008d7fec3b7d087305ff5528cd4e897d00c747fc0400000089770cc747080b000000895f04c707210000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000c74704010000008937578b7c24748b378b7c24748b3f83c702710e8d64243cb8f80466b18b5d04ff238b44247489388b7d008d7fe83b7d087305ff5528cd4e897d00c747fc050000008b44240489471089570c895f08894f0489378b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7063f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460c010000008956088b542424895604c7060f0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b5c2408eb0b8b442408e8a947000089c383fb0175065b83c408eb0e8b0424e8f847000089c38d64240c83fb0175065b83c410eb0e8b0424e84348000089c38d64241483fb0175035aeb0e8b0424e89148000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642430b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2428ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c24a0000000ff128d64242c5a5f8d642404be01000000eb0e8d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85660300008b7f048b742464ff368b7424688b3683c602710e8d642428b8f80466b18b5d04ff238b54246889328b7424648b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54246489328b7424688b168b7424688b3683c602710e8d642428b8f80466b18b5d04ff238b4c246889318b7424648b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c246489318b74241c83fe057507be0b000000eb158b74241c83fe017507be03000000eb05be07000000568b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460cc46866b1c74608010000008b4c240c894e04c706070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000895104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49e83b4d087305ff5528cd84894d00c741fc05000000c7411001000000c7410cc46866b1c7410801000000897904c701070000008b7c24688b3f8b7424688b3683c602710e8d642430b8f80466b18b5d04ff238b5c246889338b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2408895e10894e0c895608897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c2408897a088b7c2418897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240c83fb0175065b83c404eb0e8b0424e84e44000089c38d64240883fb0175035aeb0e8b0424e89c44000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642424b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f853d0400008b57048b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893ef644241001740e8d642424b810cd66b18b5d04ff23f644241001740e8d642424b81c4266b18b5d04ff238b7c24108b7ffcc1e708c1ef0783cf0183ff0374098d642424e9400300008b7c24100fb67fff8d3c7d0100000081e7ff01000083ff037507bf03000000eb05bf0100000083f70283ff030f840a0300008b7c24108b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0cb8b02f66b152e81b2ff8ff5a8b7c24108b0f81e100000080be60cd66b189cf3b3e7507bb01000000eb05bbb02f66b1a8017410f6c301740b89df83ef0103f87002eb0952e8dd2ef8ff5a89c78b74241883fe057507be0b000000eb158b74241883fe017507be03000000eb05be07000000568b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000895604c706070000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b0000008b742404897204c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d000000568b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702050000008b7c24648b3f8b7424648b3683c602710e8d64242cb8f80466b18b5d04ff238b4c246489318b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c240c894e1089560c8b542408895608897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c240c897a088b7c2414897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64241083fb0175035aeb0e8b0424e87e40000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642424b868cd66b18b5d04ff238d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f853d0400008b57048b7c245cff378b7c24608b3f83c702710e8d642420b8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74245c893e8b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893ef644241401740e8d642424b810cd66b18b5d04ff23f644241401740e8d642424b81c4266b18b5d04ff238b7c24148b7ffcc1e708c1ef0783cf0183ff0374098d642424e9400300008b7c24140fb67fff8d3c7d0100000081e7ff01000083ff037507bf03000000eb05bf0100000083f70283ff030f840a0300008b7c24148b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0cb8b02f66b152e88b2af8ff5a8b7c24148b0f81e100000080be60cd66b189cf3b3e7507bb01000000eb05bbb02f66b1a8017410f6c301740b89df83ef0103f87002eb0952e84d2af8ff5a89c78b74241883fe057507be0b000000eb158b74241883fe017507be03000000eb05be07000000568b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000895604c706070000008b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720cc742080b0000008b742404897204c702210000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d000000568b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702050000008b7c24648b3f8b7424648b3683c602710e8d64242cb8f80466b18b5d04ff238b4c246489318b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c240c894e1089560c8b542408895608897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c240c897a088b7c2414897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64241083fb0175035aeb0e8b0424e8523c000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24588917897704c7470801000000b80100000083c414c24c008d642424b868cd66b18b5d04ff238d64241cb824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b7424608916897e045f897e08b80100000083c418c24c00f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85320300008b77048b7c24608b3f8b5424608b1283c202710e8d642420b8f80466b18b5d04ff238b4c246089118b54245c8b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4c245c89118b5424608b0a8b5424608b1283c202710e8d642420b8f80466b18b5d04ff238b5c246089138b54245c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702070000008b5c245c89138b55008d52e83b55087305ff5528cdc2895500c742fc05000000c7421001000000c7420cc46866b1c74208010000008b5c2404895a04c702070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc0400000089530cc743080b000000894b04c703210000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c7020d000000528b5d008d5be83b5d087305ff5528cdc2895d00c743fc05000000c7431001000000c7430cc46866b1c7430801000000897304c703070000008b74245c8b168b74245c8b3683c602710e8d642424b8f80466b18b5d04ff238b44245c89308b75008d76e83b75087305ff5528cd8e897500c746fc05000000897e10895e0c894e08895604c706010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc0895500c742fc05000000c7421001000000c7420c01000000897a088b7c2410897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065b83c404eb0e8b0424e8e137000089c38d64240883fb0175035aeb0e8b0424e82f38000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85130400008b4f048b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707070000008b742458893e8b7c245c8b178b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707070000008b742458893ef644240c01740e8d64241cb810cd66b18b5d04ff23f644240c01740e8d64241cb81c4266b18b5d04ff238b7c240c8b7ffcc1e708c1ef0783cf0183ff0374098d64241ce9160300008b7c240c0fb67fff8d3c7d0100000081e7ff01000083ff037507bf03000000eb05bf0100000083f70283ff030f84e00200008b7c240c8b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0eb8b02f66b15152e81d21f8ff5a598b7c240c8b1f81e300000080be60cd66b189df3b3e7507bb01000000eb05bbb02f66b1a8017410f6c301740b89df83ef0103f87002eb0b5152e8dd20f8ff5a5989c78b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000894e04c706070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000895104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c701050000008b7c24588b3f8b7424588b3683c602710e8d642420b8f80466b18b5d04ff238b5c245889338b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2404895e10894e0c895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c2404897a088b7c240c897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240883fb0175035aeb0e8b0424e83b34000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb868cd66b18b5d04ff238d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85130400008b4f048b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707070000008b742458893e8b7c245c8b178b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707070000008b742458893ef644241001740e8d64241cb810cd66b18b5d04ff23f644241001740e8d64241cb81c4266b18b5d04ff238b7c24108b7ffcc1e708c1ef0783cf0183ff0374098d64241ce9160300008b7c24100fb67fff8d3c7d0100000081e7ff01000083ff037507bf03000000eb05bf0100000083f70283ff030f84e00200008b7c24108b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0eb8b02f66b15152e8b71cf8ff5a598b7c24108b1f81e300000080be60cd66b189df3b3e7507bb01000000eb05bbb02f66b1a8017410f6c301740b89df83ef0103f87002eb0b5152e8771cf8ff5a5989c78b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000894e04c706070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000895104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c701050000008b7c24588b3f8b7424588b3683c602710e8d642420b8f80466b18b5d04ff238b5c245889338b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2404895e10894e0c895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c2404897a088b7c240c897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240883fb0175035aeb0e8b0424e83930000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb868cd66b18b5d04ff238d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85320300008b77048b7c24608b3f8b5424608b1283c202710e8d642420b8f80466b18b5d04ff238b4c246089118b54245c8b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4c245c89118b5424608b0a8b5424608b1283c202710e8d642420b8f80466b18b5d04ff238b5c246089138b54245c8b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702070000008b5c245c89138b55008d52e83b55087305ff5528cdc2895500c742fc05000000c7421001000000c7420cc46866b1c74208010000008b5c2404895a04c702070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc0400000089530cc743080b000000894b04c703210000008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c7020d000000528b5d008d5be83b5d087305ff5528cdc2895d00c743fc05000000c7431001000000c7430cc46866b1c7430801000000897304c703070000008b74245c8b168b74245c8b3683c602710e8d642424b8f80466b18b5d04ff238b44245c89308b75008d76e83b75087305ff5528cd8e897500c746fc05000000897e10895e0c894e08895604c706090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b55008d52e83b55087305ff5528cdc0895500c742fc05000000c7421001000000c7420c01000000897a088b7c2410897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065b83c404eb0e8b0424e81c2c000089c38d64240883fb0175035aeb0e8b0424e86a2c000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85130400008b4f048b7c2458ff378b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707070000008b742458893e8b7c245c8b178b7c245c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707070000008b742458893ef644241001740e8d64241cb810cd66b18b5d04ff23f644241001740e8d64241cb81c4266b18b5d04ff238b7c24108b7ffcc1e708c1ef0783cf0183ff0374098d64241ce9160300008b7c24100fb67fff8d3c7d0100000081e7ff01000083ff037507bf03000000eb05bf0100000083f70283ff030f84e00200008b7c24108b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0eb8b02f66b15152e8c813f8ff5a598b7c24108b1f81e300000080be60cd66b189df3b3e7507bb01000000eb05bbb02f66b1a8017410f6c301740b89df83ef0103f87002eb0b5152e88813f8ff5a5989c78b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000894e04c706070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000895104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c701050000008b7c24588b3f8b7424588b3683c602710e8d642420b8f80466b18b5d04ff238b5c245889338b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2404895e10894e0c895608897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c2404897a088b7c240c897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240883fb0175035aeb0e8b0424e87628000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d64241cb868cd66b18b5d04ff238d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2428ff7704ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff7424708b7c24708b74246c8b5424688b4c24648b5c24608b44245c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424980000008b9c24a0000000ff128d64242c5a5f8d642404be01000000eb0e8d64241cb824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85c60200008b7f048b7424648b168b7424648b3683c602710e8d642424b8f80466b18b5d04ff238b4c246489318b7424608b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706070000008b4c246089318b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000c7460cc46866b1c74608010000008b4c2404894e04c706070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b000000895104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b4d008d49e83b4d087305ff5528cd84894d00c741fc05000000c7411001000000c7410cc46866b1c7410801000000897904c701070000008b7c24608b378b7c24608b3f83c702710e8d642428b8f80466b18b5d04ff238b5c2460893b8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2410895f10894f0c895708897704c707290000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060d0000008b55008d52e83b55087305ff5528cd40895500c742fc05000000c7421001000000c7420c010000008b7c2410897a088b7c2414897a04c7020f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065b83c404eb0e8b0424e8c824000089c38d64240883fb0175065a83c404eb0e8b0424e81325000089c28d6424088b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642424b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85550400008b57048b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c24648b1f8b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000897704c707070000008b742460893e8b7c24648b0f8b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000897704c707070000008b742460893e8b7c24648b3f8b7424648b3683c602710e8d642424b8f80466b18b5d04ff238b44246489308b7424608b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c706070000008b44246089308b75008d76e83b75087305ff5528cd8e897500c746fc05000000c7461001000000c7460cc46866b1c74608010000008b442408894604c706070000008b45008d40ec3b45087305ff5528cdce894500c740fc0400000089700cc740080b000000894804c700210000008b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c7060d000000568b75008d76e83b75087305ff5528cd8e897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000895604c706070000008b55008d52ec3b55087305ff5528cdca895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04c702090000008b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f108b5c2404895f0cc7470801000000894f0489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702150000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b4d008d49e83b4d087305ff5528cdc0894d00c741fc05000000c7411001000000c7410c010000008b5424048951088b542414895104c7010f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240883fb0175065b83c404eb0e8b0424e8e11f000089c38d64240883fb0175035aeb0e8b0424e82f20000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85b1000000ff77046a016a016a018b7c2424ff7704ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b4424586a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c249c000000ff128d64242c5a5f8d642404be01000000eb0e8d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85590400008b57048b7c2460ff378b7c24648b3f83c702710e8d642424b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c2464ff378b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742464893e8b7c24688b0f8b7c24688b3f83c702710e8d642428b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707070000008b742464893e8b7c24688b3f8b7424688b3683c602710e8d642428b8f80466b18b5d04ff238b5c246889338b7424648b1e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04c706070000008b5c246489338b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000c7460cc46866b1c74608010000008b5c240c895e04c706070000008b5d008d5bec3b5d087305ff5528cdc6895d00c743fc0400000089730cc743080b000000894b04c703210000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e04c7060d000000568b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000c7460cc46866b1c7460801000000895604c706070000008b55008d52ec3b55087305ff5528cdc2895500c742fc0400000089720cc742080b000000897a04c702210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a04c702090000008b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2404895f108b5c2408895f0cc7470801000000894f0489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702150000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b4d008d49e83b4d087305ff5528cdc0894d00c741fc05000000c7411001000000c7410c010000008b5424048951088b542418895104c7010f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c7020d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240c83fb0175065b83c404eb0e8b0424e8f91a000089c38d64240883fb0175035aeb0e8b0424e8471b000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642420b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4576a016a016a018b7c241c8b3f83ff0f0f858d0000008b7c241c8b5f04f6c3017415f6c3017402eb138d64242cb8cc4466b18b5d04ff23bb01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489deeb0cb8b02f66b1e8ea00f8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000c7042401000000c744240401000000897c2408e9170200008b7c246cff378b7c24708b3f83c702710e8d642430b8f80466b18b5d04ff238b742470893e8b7c246c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b74246c893e6a016a016a018b7c2438ff7704ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a80000008b9c24b0000000ff128d64242c5e5f8d642404ba01000000f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b3783fe090f85320300008b7f048b75008d76e83b75087305ff5528cd84897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f04c7070900000089142489742404897c2408ff34248b4424088b74240c8b7d008d7fec3b7d087305ff5528cd41897d00c747fc04000000c7470c010000008b5424188957088b542414895704c707030000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897a04c7020d0000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000c74704010000008917578b7d008d7fe43b7d087305ff5528cd41897d00c747fc06000000c7471401000000897710c7470cffffffffc74708c46866b1c74704050000008b74241889378b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706410000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76f43b75087305ff5528cd81897500c746fc020000008b542418895604c706090000008b55008d52ec3b55087305ff5528cdc1895500c742fc0400000089720cc742080b0000008b742420897204c702210000008b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c7060d0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c70624be66b18b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c3eb07e86816000089c383fb0175035beb0e8b0424e8ba16000089c38d64240483fb0175065b83c40ceb0e8b0424e80517000089c38d64241083fb0175065a83c408eb0e8b0424e85017000089c28d64240c8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c24548917897704c7470801000000b80100000083c410c24c008d642430b824c766b18b5d04ff23f4|@11621,1,@919|24,0,@5686 174,0,@9455 226,0,2 271,0,@9455 323,0,2 365,0,@9455 417,0,2 449,0,@9455 501,0,2 544,0,2 715,0,0 772,0,@9455 824,0,2 869,0,@9455 921,0,2 993,0,@5687 1193,0,4 1209,0,0 1214,0,0 1271,0,@9455 1323,0,2 1368,0,@9455 1420,0,2 1520,0,@11507 1608,0,0 1664,0,@9455 1716,0,2 1761,0,@9455 1813,0,2 1913,0,@11507 2001,0,0 2057,0,@9455 2109,0,2 2154,0,@9455 2206,0,2 2248,0,@9455 2300,0,3 2390,0,@11507 2478,0,0 2552,0,@9455 2604,0,2 2649,0,@9455 2701,0,2 2801,0,@11507 2889,0,0 2933,0,@9455 2985,0,2 3030,0,@9455 3082,0,2 3182,0,@11507 3270,0,0 3344,0,@9455 3396,0,2 3441,0,@9455 3493,0,2 3593,0,@11507 3681,0,0 3743,0,@9455 3795,0,2 3840,0,@9455 3892,0,2 3992,0,@11507 4080,0,0 4122,0,@9455 4174,0,2 4219,0,@9455 4271,0,2 4371,0,@11507 4459,0,0 4473,0,@11606 4524,0,3 4557,0,@11311 4564,0,@11494 4573,0,6 4763,0,0 4831,0,@9455 4883,0,2 4928,0,@9455 4980,0,2 5080,0,@11507 5168,0,0 5230,0,@9455 5282,0,2 5327,0,@9455 5379,0,2 5479,0,@11507 5567,0,0 5609,0,@9455 5661,0,2 5706,0,@9455 5758,0,2 5858,0,@11507 5946,0,0 5996,0,@9455 6048,0,2 6093,0,@9455 6145,0,2 6245,0,@11507 6333,0,0 6383,0,@9455 6435,0,2 6480,0,@9455 6532,0,2 6632,0,@11507 6720,0,0 6771,0,3 6804,0,@11311 6811,0,@11494 6820,0,6 7010,0,0 7069,0,@9455 7121,0,2 7166,0,@9455 7218,0,2 7318,0,@11507 7406,0,0 7462,0,@9455 7514,0,2 7559,0,@9455 7611,0,2 7711,0,@11507 7799,0,0 7863,0,@10214 7873,0,0 8178,0,@10214 8188,0,0 8489,0,@9455 8541,0,2 8586,0,@9455 8638,0,2 8738,0,@11507 8826,0,0 8900,0,@9455 8952,0,2 8997,0,@9455 9049,0,2 9100,0,2 9105,1,@5527 9118,0,@10214 9128,0,0 9213,0,@11507 9301,0,0 9345,0,@9455 9397,0,2 9442,0,@9455 9494,0,2 9536,0,@9455 9588,0,2 9678,0,@11507 9766,0,0 9840,0,@9455 9892,0,2 9937,0,@9455 9989,0,2 10040,0,2 10045,1,@5527 10058,0,@10214 10068,0,0 10153,0,@11507 10241,0,0 10303,0,@9455 10355,0,2 10400,0,@9455 10452,0,2 10503,0,2 10508,1,@5527 10521,0,@10214 10531,0,0 10616,0,@11507 10704,0,0 10746,0,@9455 10798,0,2 10843,0,@9455 10895,0,2 10995,0,@11507 11083,0,0 11097,0,@11609 11148,0,3 11181,0,@11311 11188,0,@11494 11197,0,6 11387,0,0 11453,0,@9455 11505,0,2 11550,0,@9455 11602,0,2 11702,0,@11507 11790,0,0 11851,0,@9455 11903,0,2 11948,0,@9455 12000,0,2 12100,0,@11507 12188,0,0 12250,0,@9455 12302,0,2 12347,0,@9455 12399,0,2 12499,0,@11507 12587,0,0 12642,0,@9455 12694,0,2 12739,0,@9455 12791,0,2 12891,0,@11507 12979,0,0 13023,0,@9455 13075,0,2 13120,0,@9455 13172,0,2 13272,0,@11507 13360,0,0 13397,0,1 13404,0,0 13442,0,0 13467,0,@10214 13477,0,1 13777,0,@9455 13829,0,2 13874,0,@9455 13926,0,2 13968,0,@9455 14020,0,3 14093,0,@9958 14098,1,@4895 14125,0,2 14130,1,@5527 14143,0,@10214 14153,0,1 14188,0,2 14224,0,5 14236,0,16 14271,0,6 14304,0,0 14395,0,@11507 14483,0,0 14592,0,@9455 14642,0,@10390 14654,0,4 14689,0,2 14726,0,4 14762,0,5 14774,0,16 14809,0,6 14842,0,0 14858,1,@5688 14910,0,@10214 14920,0,0 14957,0,@9958 14962,1,@4895 14999,0,2 15006,0,0 15014,0,0 15049,0,@9455 15101,0,3 15224,0,@11507 15312,0,0 15323,0,@11571 15435,0,0 15445,0,0 15457,0,37 15492,0,6 15525,0,0 15563,0,4 15611,0,@9455 15663,0,3 15683,0,0 15699,0,2 15706,0,1 15732,0,@9455 15822,0,31 15857,0,6 15883,0,@9455 15934,0,@10390 15946,0,3 15981,0,2 16016,0,6 16049,0,0 16098,1,@5689 16123,1,@5690 16148,1,@5691 16190,0,4 16206,0,0 16211,0,0 16226,0,@11571 16387,0,@11507 16475,0,0 16486,0,@11571 16591,0,@9455 16643,0,2 16684,0,4 16710,0,@9455 16766,0,5 16801,0,2 16836,0,6 16862,0,@9455 16913,0,@10390 16925,0,3 16960,0,2 16995,0,6 17028,0,0 17075,1,@5692 17093,1,@5693 17135,0,4 17151,0,0 17156,0,0 17171,0,@11571 17332,0,@11507 17420,0,0 17431,0,@11571 17545,0,4 17571,0,@9455 17631,0,1 17666,0,2 17701,0,6 17734,0,0 17750,1,@5694 17768,1,@5695 17810,0,4 17826,0,0 17831,0,0 17846,0,@11571 18007,0,@11507 18095,0,0 18106,0,@11571 18220,0,4 18246,0,@9455 18306,0,3 18341,0,2 18376,0,6 18409,0,0 18425,1,@5696 18443,1,@5697 18485,0,4 18501,0,0 18506,0,0 18521,0,@11571 18653,0,2 18663,1,@5527 18677,0,@10214 18718,0,2 18728,1,@5527 18747,0,1 18753,1,@4895 18767,0,@10214 18777,0,0 18791,0,5 18807,0,1 18814,0,3 18849,0,2 18875,0,@9455 18966,0,2 19001,0,6 19034,0,0 19052,1,@5698 19090,0,4 19106,0,0 19111,0,0 19126,0,@11571 19258,0,2 19268,1,@5527 19282,0,@10214 19323,0,2 19333,1,@5527 19352,0,1 19358,1,@4895 19372,0,@10214 19382,0,0 19396,0,5 19412,0,1 19419,0,3 19454,0,2 19480,0,@9455 19571,0,2 19606,0,6 19639,0,0 19657,1,@5699 19695,0,4 19711,0,0 19716,0,0 19731,0,@11571 19814,0,0 19976,0,@11507 20064,0,0 20075,0,@11571 20218,0,0 20251,0,-1 20270,0,17 20305,0,6 20338,0,0 20354,1,@5700 20372,1,@5701 20414,0,4 20430,0,0 20435,0,0 20450,0,@11571 20565,0,2 20591,0,@9455 20649,0,0 20684,0,2 20719,0,6 20752,0,0 20768,1,@5702 20806,0,4 20822,0,0 20827,0,0 20842,0,@11571 20957,0,2 20983,0,@9455 21041,0,0 21076,0,2 21111,0,6 21144,0,0 21160,1,@5703 21198,0,4 21214,0,0 21219,0,0 21234,0,@11571 21395,0,@11507 21483,0,0 21494,0,@11571 21608,0,4 21634,0,@9455 21694,0,4 21729,0,2 21764,0,6 21790,0,@9455 21841,0,@10390 21857,0,0 21892,0,2 21927,0,6 21960,0,0 22007,1,@5704 22028,1,@5705 22070,0,4 22086,0,0 22091,0,0 22106,0,@11571 22221,0,2 22247,0,@9455 22305,0,4 22340,0,2 22375,0,6 22408,0,0 22424,1,@5706 22462,0,4 22478,0,0 22483,0,0 22498,0,@11571 22659,0,@11507 22747,0,0 22758,0,@11571 22861,0,@9455 22913,0,3 22945,0,@9455 22997,0,3 23029,0,@9455 23081,0,3 23120,0,0 23134,0,0 23143,0,37 23178,0,6 23205,0,@9455 23252,0,@10390 23264,0,4 23299,0,2 23334,0,6 23370,0,4 23396,0,@9455 23455,0,20 23490,0,6 23516,0,@9455 23567,0,@10390 23583,0,0 23618,0,2 23653,0,6 23686,0,0 23812,1,@5707 23834,1,@5708 23876,0,4 23892,0,0 23897,0,0 23912,0,@11571 24073,0,@11507 24161,0,0 24172,0,@11571 24275,0,@9455 24327,0,3 24359,0,@9455 24411,0,3 24443,0,@9455 24495,0,3 24527,0,@9455 24579,0,3 24618,0,0 24632,0,0 24645,0,37 24680,0,6 24713,0,0 24723,0,0 24732,0,37 24767,0,6 24802,0,4 24848,0,0 24889,0,10 24924,0,6 24957,0,0 24973,0,34 25008,0,6 25041,0,0 25155,1,@5709 25177,1,@5710 25219,0,4 25235,0,0 25240,0,0 25255,0,@11571 25416,0,@11507 25504,0,0 25515,0,@11571 25618,0,@9455 25670,0,3 25702,0,@9455 25754,0,3 25786,0,@9455 25838,0,3 25870,0,@9455 25922,0,3 25961,0,0 25975,0,0 25988,0,37 26023,0,6 26056,0,0 26066,0,0 26075,0,37 26110,0,6 26145,0,4 26191,0,0 26232,0,10 26267,0,6 26300,0,0 26316,0,34 26351,0,6 26384,0,0 26498,1,@5711 26520,1,@5712 26562,0,4 26578,0,0 26583,0,0 26598,0,@11571 26681,0,0 26843,0,@11507 26931,0,0 26942,0,@11571 27047,0,@9455 27099,0,3 27131,0,@9455 27183,0,3 27222,0,0 27229,0,@10755 27236,0,0 27246,0,3 27282,0,3 27291,0,16 27326,0,6 27341,0,3 27357,0,5 27373,0,6 27393,0,0 27426,0,0 27433,0,@10755 27440,0,0 27449,0,3 27493,0,40 27528,0,6 27561,0,0 27568,0,2 27584,0,7 27619,0,6 27652,0,0 27731,1,@5713 27749,1,@5714 27791,0,4 27807,0,0 27812,0,0 27827,0,@11612 27841,0,@11571 27967,0,@10214 27977,0,0 28014,0,@9958 28019,1,@4895 28056,0,2 28063,0,0 28071,0,0 28106,0,@9455 28158,0,3 28281,0,@11507 28369,0,0 28380,0,@11571 28492,0,0 28502,0,0 28514,0,37 28549,0,6 28582,0,0 28620,0,4 28668,0,@9455 28720,0,3 28740,0,0 28756,0,2 28763,0,1 28789,0,@9455 28841,0,3 28880,0,0 28887,0,@10755 28894,0,0 28907,0,3 28943,0,5 28952,0,16 28987,0,6 29020,0,0 29049,0,@9455 29139,0,31 29174,0,6 29207,0,0 29214,0,0 29230,0,7 29265,0,6 29298,0,0 29351,1,@5715 29372,1,@5716 29397,1,@5717 29419,1,@5718 29461,0,4 29477,0,0 29482,0,0 29497,0,@11571 29658,0,@11507 29746,0,0 29757,0,@11571 29860,0,@9455 29912,0,3 29944,0,@9455 29996,0,3 30016,0,5 30032,0,1 30039,0,3 30073,0,0 30080,0,@10755 30087,0,0 30100,0,3 30136,0,5 30145,0,16 30180,0,6 30214,0,0 30221,0,@10755 30228,0,0 30237,0,3 30263,0,@9455 30357,0,2 30392,0,6 30425,0,0 30432,0,0 30452,0,7 30487,0,6 30520,0,0 30610,1,@5719 30632,1,@5720 30674,0,4 30690,0,0 30695,0,0 30710,0,@11571 30813,0,@9455 30865,0,3 30897,0,@9455 30949,0,3 30971,0,@11615 30992,0,@10189 31058,0,1 31065,0,0 31127,0,@9958 31133,1,@4895 31151,0,@11618 31162,0,0 31169,0,@9958 31195,1,@4895 31212,0,5 31228,0,1 31235,0,3 31269,0,0 31276,0,@10755 31283,0,0 31292,0,3 31328,0,5 31341,0,16 31376,0,6 31412,0,2 31438,0,@9455 31536,0,2 31571,0,6 31604,0,0 31611,0,0 31631,0,7 31666,0,6 31699,0,0 31786,1,@5721 31828,0,4 31844,0,0 31849,0,0 31864,0,@11619 31878,0,@11571 31981,0,@9455 32033,0,3 32065,0,@9455 32117,0,3 32139,0,@11615 32160,0,@10189 32226,0,1 32233,0,0 32295,0,@9958 32301,1,@4895 32319,0,@11618 32330,0,0 32337,0,@9958 32363,1,@4895 32380,0,5 32396,0,1 32403,0,3 32437,0,0 32444,0,@10755 32451,0,0 32460,0,3 32496,0,5 32509,0,16 32544,0,6 32580,0,2 32606,0,@9455 32704,0,2 32739,0,6 32772,0,0 32779,0,0 32799,0,7 32834,0,6 32867,0,0 32954,1,@5722 32996,0,4 33012,0,0 33017,0,0 33032,0,@11619 33046,0,@11571 33129,0,0 33291,0,@11507 33379,0,0 33390,0,@11571 33493,0,@9455 33545,0,3 33577,0,@9455 33629,0,3 33668,0,0 33675,0,@10755 33682,0,0 33695,0,3 33731,0,5 33740,0,16 33775,0,6 33809,0,0 33816,0,@10755 33823,0,0 33832,0,3 33858,0,@9455 33913,0,0 33948,0,2 33983,0,6 34016,0,0 34023,0,0 34039,0,7 34074,0,6 34107,0,0 34191,1,@5723 34213,1,@5724 34255,0,4 34271,0,0 34276,0,0 34291,0,@11571 34394,0,@9455 34446,0,3 34478,0,@9455 34530,0,3 34552,0,@11615 34573,0,@10189 34639,0,1 34646,0,0 34708,0,@9958 34715,1,@4895 34734,0,@11618 34745,0,0 34752,0,@9958 34779,1,@4895 34816,0,0 34823,0,@10755 34830,0,0 34839,0,3 34875,0,5 34884,0,16 34919,0,6 34955,0,2 34981,0,@9455 35040,0,0 35075,0,2 35110,0,6 35143,0,0 35150,0,0 35170,0,7 35205,0,6 35238,0,0 35325,1,@5725 35367,0,4 35383,0,0 35388,0,0 35403,0,@11619 35417,0,@11571 35520,0,@9455 35572,0,3 35604,0,@9455 35656,0,3 35678,0,@11615 35699,0,@10189 35765,0,1 35772,0,0 35834,0,@9958 35841,1,@4895 35860,0,@11618 35871,0,0 35878,0,@9958 35905,1,@4895 35942,0,0 35949,0,@10755 35956,0,0 35965,0,3 36001,0,5 36010,0,16 36045,0,6 36081,0,2 36107,0,@9455 36166,0,0 36201,0,2 36236,0,6 36269,0,0 36276,0,0 36296,0,7 36331,0,6 36364,0,0 36451,1,@5726 36493,0,4 36509,0,0 36514,0,0 36529,0,@11619 36543,0,@11571 36704,0,@11507 36792,0,0 36803,0,@11571 36906,0,@9455 36958,0,3 36990,0,@9455 37042,0,3 37081,0,0 37088,0,@10755 37095,0,0 37108,0,3 37144,0,5 37153,0,16 37188,0,6 37222,0,0 37229,0,@10755 37236,0,0 37245,0,3 37271,0,@9455 37326,0,4 37361,0,2 37396,0,6 37429,0,0 37436,0,0 37452,0,7 37487,0,6 37520,0,0 37604,1,@5727 37626,1,@5728 37668,0,4 37684,0,0 37689,0,0 37704,0,@11571 37807,0,@9455 37859,0,3 37891,0,@9455 37943,0,3 37965,0,@11615 37986,0,@10189 38052,0,1 38059,0,0 38121,0,@9958 38128,1,@4895 38147,0,@11618 38158,0,0 38165,0,@9958 38192,1,@4895 38229,0,0 38236,0,@10755 38243,0,0 38252,0,3 38288,0,5 38297,0,16 38332,0,6 38368,0,2 38394,0,@9455 38453,0,4 38488,0,2 38523,0,6 38556,0,0 38563,0,0 38583,0,7 38618,0,6 38651,0,0 38738,1,@5729 38780,0,4 38796,0,0 38801,0,0 38816,0,@11619 38830,0,@11571 38991,0,@11507 39079,0,0 39090,0,@11571 39193,0,@9455 39245,0,3 39284,0,0 39291,0,@10755 39298,0,0 39311,0,3 39347,0,5 39356,0,16 39391,0,6 39425,0,0 39432,0,@10755 39439,0,0 39448,0,3 39474,0,@9455 39533,0,20 39568,0,6 39601,0,0 39608,0,0 39628,0,7 39663,0,6 39696,0,0 39780,1,@5730 39805,1,@5731 39847,0,4 39863,0,0 39868,0,0 39883,0,@11571 40044,0,@11507 40132,0,0 40143,0,@11571 40246,0,@9455 40298,0,3 40330,0,@9455 40382,0,3 40414,0,@9455 40466,0,3 40498,0,@9455 40550,0,3 40589,0,0 40596,0,@10755 40603,0,0 40616,0,3 40652,0,5 40661,0,16 40696,0,6 40730,0,0 40737,0,@10755 40744,0,0 40753,0,3 40789,0,5 40798,0,16 40833,0,6 40868,0,4 40911,0,0 40951,0,10 40986,0,6 41019,0,0 41026,0,0 41046,0,7 41081,0,6 41114,0,0 41235,1,@5732 41257,1,@5733 41299,0,4 41315,0,0 41320,0,0 41335,0,@11571 41496,0,@11507 41584,0,0 41595,0,@11571 41698,0,@9455 41750,0,3 41782,0,@9455 41834,0,3 41866,0,@9455 41918,0,3 41950,0,@9455 42002,0,3 42041,0,0 42048,0,@10755 42055,0,0 42068,0,3 42104,0,5 42113,0,16 42148,0,6 42182,0,0 42189,0,@10755 42196,0,0 42205,0,3 42241,0,5 42250,0,16 42285,0,6 42320,0,4 42367,0,0 42407,0,10 42442,0,6 42475,0,0 42482,0,0 42502,0,7 42537,0,6 42570,0,0 42691,1,@5734 42713,1,@5735 42755,0,4 42771,0,0 42776,0,0 42791,0,@11571 42906,0,@10214 42916,0,0 42953,0,@9958 42958,1,@4895 42995,0,2 43002,0,0 43010,0,0 43045,0,@9455 43097,0,3 43220,0,@11507 43308,0,0 43415,0,0 43425,0,0 43437,0,37 43472,0,6 43505,0,0 43543,0,4 43598,0,0 43618,0,1 43653,0,6 43686,0,0 43722,0,0 43732,0,-1 43739,0,@10755 43746,0,2 43787,0,32 43822,0,6 43861,0,4 43897,0,5 43910,0,16 43945,0,6 43978,0,0 44015,0,@11524 44060,1,@5736 44078,1,@5737 44103,1,@5738 44128,1,@5739 44170,0,4 44186,0,0 44191,0,0 44206,0,@11571 5687:D3,744|3b650c7305ff552ccd0550528b3c248b7f108b0f8b3c248b7f108b3f83c702710e8d642408b8f80466b18b5d04ff238b34248b7610893e8b3c248b7f10ff378b7c24048b7f108b3f83c702710e8d64240cb8f80466b18b5d04ff238b7424048b7610893e8b7c24048b7f0c8b378b7c24048b7f0c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b5424048b520c893a8b7c24048b7f088b178b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c707050000008b5424048b5208893a8b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c70731000000578b55008d52e83b55087305ff5528cd42895500c742fc05000000894a10c7420c150000008b7c2404897a088b7c240c897a04c702010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704c707050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc04000000c7410c64cb66b1c741080b000000897104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4c24088b4904f6c10175328b4c24088b49048b198b4d008d49f03b4d087305ff5528cdcc894d00c741fc030000008959085b895904c7010b000000eb248b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b895904c701030000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc0200000058894304c703070000008b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c408c3f400|@11605,1,@866|38,0,@9455 82,0,@9455 128,0,@9455 186,0,2 230,0,24 267,0,10 287,0,0 322,0,2 357,0,3 390,0,@11604 397,0,5 406,0,16 441,0,6 501,0,5 539,0,1 575,0,3 608,0,0 5688:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@867| 5689:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@868| 5690:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@869| 5691:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@870| 5692:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@871| 5693:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@872| 5694:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@873| 5695:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@874| 5696:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@875| 5697:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@876| 5698:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@877| 5699:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@878| 5700:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@879| 5701:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@880| 5702:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@881| 5703:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@882| 5704:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@883| 5705:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@884| 5706:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@885| 5707:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@886| 5708:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@887| 5709:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@888| 5710:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@889| 5711:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@890| 5712:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@891| 5713:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@892| 5714:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@893| 5715:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@894| 5716:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@895| 5717:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@896| 5718:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@897| 5719:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@898| 5720:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@899| 5721:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@900| 5722:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@901| 5723:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@902| 5724:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@903| 5725:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@904| 5726:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@905| 5727:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@906| 5728:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@907| 5729:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@908| 5730:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@909| 5731:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@910| 5732:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@911| 5733:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@912| 5734:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@913| 5735:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@914| 5736:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@915| 5737:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@916| 5738:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@917| 5739:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@918| 5740:D3,3092|3b650c7305ff552ccd0d50538b7c24548b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24548b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24548b7f04576a016a016a01ff7204ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b4424486a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c248c000000ff128d64242c5a5f8d642404be01000000f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85ad0600008b7f048b74245889f283fa150f83d0050000ba647b2eb181c2e60100008d54b2fcffe2e94b000000909090e9c1000000909090e95a010000909090e912020000909090e9ca020000909090e96a030000909090e98a050000909090e982050000909090e912040000909090e9b20400009090908b75008d76ec3b75087303ff5528897500c746fc04000000c7460cc45166b1c746080b0000008b7c2404897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9e20800008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060900000089f78b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc746080b0000008b7c2404897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9410800008b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7060100000089f78b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610ffffffff897e0c8b7c2404897e08895604c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9810700008b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7060300000089f78b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610fdffffff897e0c8b7c2404897e08895604c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9c10600008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060500000089f78b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610fbffffff897e0c8b7c2404897e08c7460401000000c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9190600008b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7060500000089f78b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610f9ffffff897e0c8b7c2404897e08895604c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9590500008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060700000089f78b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610f3ffffff897e0c8b7c2404897e08c7460401000000c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9b10400008b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7060700000089f78b75008d76e83b75087305ff5528cd84897500c746fc05000000c74610f1ffffff897e0c8b7c2404897e08895604c706230000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893be9f10300008b742450ff368b7424548b3683c602710e8d642414b8f80466b18b5d04ff238b54245489328b7424508b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b54245089328b74245cf7c601000000740b8b74245c83fe017d16eb1a8b74245c0fb676ff8d34750100000083fe2374068b44245ceb108b5c245cb8b02f66b157e86bdcf7ff5fa801740989c683ee027002eb0ebb0300000057e8caddf7ff5f89c68b54245c83fa017507ba01000000eb4f8b54245cb901000000eb0e8d642410b824c766b18b5d04ff2383fa03751e8b55008d52f83b55087305ff5528cdc2895500c742fc01000000890aeb1389d383e30383fb030f8542030000ba0100000083fa010f85e10000008b54245cf6c201740b8b54245c83fa017d16eb1a8b54245c0fb652ff8d14550100000083fa2374068b54245ceb148b5c245cb8b02f66b15756e8a9dbf7ff5e5f89c28b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000895304c703050000008b54244c8b0a8b54244c8b1283c202710e8d642414b8f80466b18b5d04ff238b44244c89108b55008d52e83b55087305ff5528cdca895500c742fc050000008b0424894210895a0c897a08894a04c702290000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d000000e9f10000008b1af6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489daeb10b8b02f66b15756e8d8daf7ff5e5f89c28b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000895304c703050000008b54244c8b0a8b54244c8b1283c202710e8d642414b8f80466b18b5d04ff238b44244c89108b55008d52e83b55087305ff5528cdca895500c742fc05000000895a108b1c24895a0c897a08c7420403000000890a89d78b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7023f0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7070d0000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000897104c701050000008b74244c8b368b54244c8b1283c202710e8d642414b8f80466b18b5d04ff238b5c244c89138b55008d52e83b55087305ff5528cdc2895500c742fc050000008b5c2408895a10894a0c8b0c24894a088d642404897204c702090000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035aeb0e8b0424e88200000089c28d6424048b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c0089d3d1eb83cb0189c883c00289c189da3b650c7305ff552ccdc6e96efcfffff4000000|@11622,1,@921|45,0,@9455 97,0,2 142,0,@9455 194,0,2 290,0,@11507 378,0,0 470,0,@5740 593,0,@10390 600,0,5 613,0,16 648,0,6 681,0,0 723,0,4 761,0,5 774,0,16 809,0,6 842,0,0 912,0,0 947,0,-1 966,0,17 1001,0,6 1034,0,0 1104,0,1 1139,0,-2 1158,0,17 1193,0,6 1226,0,0 1268,0,2 1303,0,-3 1320,0,0 1326,0,17 1361,0,6 1394,0,0 1464,0,2 1499,0,-4 1518,0,17 1553,0,6 1586,0,0 1628,0,3 1663,0,-7 1680,0,0 1686,0,17 1721,0,6 1754,0,0 1824,0,3 1859,0,-8 1878,0,17 1913,0,6 1946,0,0 1979,0,@9455 2031,0,3 2095,0,@9958 2101,1,@4895 2120,0,1 2126,1,@4897 2143,0,0 2154,0,0 2165,0,@11571 2224,0,0 2288,0,@9958 2295,1,@4895 2334,0,2 2360,0,@9455 2418,0,20 2453,0,6 2497,0,@9958 2504,1,@4895 2543,0,2 2569,0,@9455 2625,0,1 2664,0,31 2699,0,6 2734,0,2 2760,0,@9455 2826,0,4 2861,0,2 2896,0,6 2929,0,0 2978,1,@5741 3026,0,4 3042,0,0 3047,0,0 5741:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@920| 5742:D3,13500|8d7c24a43b7d0c7305ff5530cd0d538b780489f9bef0872eb181c6250000008d74befcffe6e96b000000909090e930020000909090e9f5030000909090e99c040000909090e943050000909090e95c070000909090e96c080000909090e9310a0000909090e9f60b0000909090e9d20e0000909090e968100000909090e9cf120000909090e936150000909090e985160000909090ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5e8d642404bf01000000e9762f0000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5e8d642404bf01000000e9c92a0000ff306a016a016a01ff7204ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b4424446a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424880000008b9c248c000000ff128d64242c5a5e8d64240cbf01000000e914280000ff306a016a016a01ff7204ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b4424446a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424880000008b9c248c000000ff128d64242c5e5f8d64240cb801000000e9fc250000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e6a016a016a01ff7204ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c2498000000ff128d64242c5e5f8d642404b801000000e9a62100008b388b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04c7062d0000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c58a766b1c74708a8ba66b1897704c7070d000000576a016a016a01ff7204ff742464ff742464ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff74242cff74242c6a015483042440ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b9424800000008b8424900000008b9c2494000000ff128d6424348b34248b7c2404ff742408ba01000000e93a200000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e9a51c0000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e910190000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707050000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707050000008b742450893e8b7c2454ff378b7c24588b3f83c702710e8d642418b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707050000008b742454893e8b7c2450ff378b7c24548b3f83c702710e8d64241cb8f80466b18b5d04ff238b742454893e8b7c2454ff378b7c24588b3f83c702710e8d642420b8f80466b18b5d04ff238b742458893e8b7c2458ff378b7c245c8b3f83c702710e8d642424b8f80466b18b5d04ff238b74245c893e6a016a016a01ff7204ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b4424606a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424a40000008b9c24a8000000ff128d64242c5e5f8d642404b801000000e9eb120000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c2444ff378b7c24488b3f83c702710e8d642410b8f80466b18b5d04ff238b742448893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5a5e8d642404bf01000000e9c30f0000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e8b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e6a016a016a01ff7204ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c2498000000ff128d64242c5a5f8d642404be01000000e9ee0a0000ff308b7c24508b3f83ff0175568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb688b7c24508b3f83ff0375568b7c24488b3f8b7424488b3683c602710e8d642408b8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4c24448931eb078b7c24508b7f04578b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c2450ff378b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e8b7c24548b3f83c702710e8d642414b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e6a016a016a01ff7204ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b4424506a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424940000008b9c2498000000ff128d64242c5a5f8d642404be01000000e919060000ff308b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707050000008b742448893e8b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000e90a030000ff308b7c2448ff378b7c244c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707050000008b742448893e8b7c244cff378b7c24508b3f83c702710e8d642410b8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e6a016a016a01ff7204ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244c6a016850bc66b16a015483042438ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff742434ff7424345756525153508b5424788b8424900000008b9c2494000000ff128d64242c5e5f8d642404b801000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85630100008b7f048b75008d76e83b75087305ff5528cd81897500c746fc05000000c7461001000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd81897500c746fc05000000c7461001000000c7460c010000005a8956088b1424895604c7060f0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb017502eb05e81a1b00008b75008d76f43b75087305ff5528cd01897500c746fc020000005f897e04c70609000000ff7424508b5424508b4c244c8b5c2448895c244c89c38b0424894c245089542454897424588b7c240c897c244883c448e9b1f8fdff8d6424048d642410b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85630100008b7f048b75008d76e83b75087305ff5528cd81897500c746fc05000000c7461003000000897e0cc74608010000008b3c24897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76e83b75087305ff5528cd81897500c746fc05000000c7461001000000c7460c010000005a8956088b1424895604c7060f0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb017502eb05e8c61900008b75008d76f43b75087305ff5528cd01897500c746fc020000005f897e04c70609000000ff7424508b5424508b4c244c8b5c2448895c244c89c38b0424894c245089542454897424588b7c240c897c244883c448e9f9f6fdff8d6424048d642410b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85130200008b77048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608070000008b7c2408897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b75008d76ec3b75087303ff5528897500c746fc040000008b7c240c897e0cc74608030000008b7c2408897e04c706550000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b75008d76e83b75087305ff5528cd01897500c746fc05000000c7461001000000c7460c050000008b7c2408897e088b7c2410897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e8e117000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065a83c408eb0e8b0424e81018000089c28d64240c8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7568b3783fe090f85130200008b77048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608070000008b7c2408897e04c706210000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000578b75008d76ec3b75087303ff5528897500c746fc040000008b7c240c897e0cc74608010000008b7c2408897e04c706550000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b75008d76e83b75087305ff5528cd01897500c746fc05000000c7461001000000c7460c050000008b7c2408897e088b7c2410897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e84316000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065a83c408eb0e8b0424e87216000089c28d64240c8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642418b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f85380100008b5604be0500000083ee016bf601700583c601eb15b805000000bb030000005752e83192fdff5a5f89c68b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2404895e10894e0c8956085a895604c7060b0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb01750489faeb0989f8e84815000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642410b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85ec0200008b77048b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c74710f9ffffffc7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000897e0cc746080b0000008b7c2414897e04c706210000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000578b75008d76e83b75087305ff5528cd01897500c746fc05000000c74610905a66b18b7c2414897e0c8b7c2418897e08c74604030000008b7c240c893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7073f0000008b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c7060d0000008b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c74710d85a66b18b54241089570c8b542414895708c74704050000008b54240889178b55008d52f43b55087305ff5528cdc1895500c742fc02000000897a04c7023f0000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c7070d0000008b55008d52e83b55087305ff5528cdc1895500c742fc050000008b4c241c894a10c7420cc45166b18b4c2410894a088b4c2404894a04c702070000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000895104c701050000008b55008d52f43b55087305ff5528cdc3895500c742fc02000000894a04c7020d0000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc3895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b3c24893b8d64241c83fb01750489c2eb07e86b12000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642424b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85730100008b77048b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c74710ffffffffc7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000897e0cc74608050000008b3c24897e04c706210000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000c7460c010000005a8956088b1424895604c706450000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c2eb07e80711000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642410b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85730100008b77048b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c7471001000000c7470cc46866b1c7470801000000897704c707070000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000897e0cc746080b0000008b3c24897e04c706210000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b75008d76ec3b75087305ff5528cd81897500c746fc04000000c7460c010000005a8956088b1424895604c706450000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c2eb07e8a30f000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642410b824c766b18b5d04ff23f7c60100000075348b068b4e048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89ce3b650c7305ff552ccdc4ebc48b74245c8916897e045f897e08b80100000083c414c24c00f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85e00100008b7f048b75008d76e83b75087305ff5528cd81897500c746fc05000000c7461003000000897e0cc74608010000008b7c2404897e04c7064b0000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b55008d52f43b55087305ff5528cd81895500c742fc020000008b742404897204c702090000008b75008d76f03b75087305ff5528cd85897500c746fc030000008956088b1424895604c706570000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c7020d0000008b4d008d49e83b4d087305ff5528cd85894d00c741fc05000000c7411001000000c7410c050000005e8d6424048971088b3424897104c7010f0000008b75008d76f43b75087305ff5528cd87897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd87897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c2eb07e87e0d000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642414b824c766b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104891989c889d63b650c7305ff552ccdc1ebc48b3783fe090f85180100008b7f048b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706270000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e8d20c000089c7b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8d286fdff5fa801740989c283c2027002eb0ebb0300000057e891abf7ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9dce5fdff8d642404b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f85b80100008b5604b80500000083e8016bc001700583c001eb13b805000000bb030000005752e8e485fdff5a5fa801740989c683c6027002eb10bb030000005752e8a1aaf7ff5a5f89c68b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b75008d76e43b75087305ff5528cd86897500c746fc06000000c7461403000000894e10c7460c01000000c74608c46866b1c746040b00000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702410000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060d0000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb017502eb0989f8e8300b000089c7b80500000083e8016bc000700583c001eb11b805000000bb0100000057e8cc84fdff5fa801740989c283c2027002eb0ebb0300000057e88ba9f7ff5f89c28b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000ff74244889f88b5424488b4c24448b5c2440895c244489c38b0424894c24488954244c897424508b7c2404897c244083c440e9d6e3fdff8d642404b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f858e0200008b5604b90500000083e9016bc901700583c101eb15b805000000bb030000005752e8de83fdff5a5f89c18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b0000008b3424897104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b75008d76f03b75087305ff5528cd84897500c746fc030000008b4c2404894e08895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d000000be0500000083ee016bf601700583c601eb15b805000000bb030000005752e8f382fdff5a5f89c68b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000897304c703050000008b74244c8b0e8b74244c8b3683c602710e8d642414b8f80466b18b5d04ff238b44244c89308b75008d76e83b75087305ff5528cd8e897500c746fc050000008b442408894610895e0c8b5c2404895e08894e04c706010000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc020000008973045e8d642404893383fb01750489faeb0989f8e85b08000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642410b824c766b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ca3b650c7305ff552ccdc4ebc78b1683fa090f858e0200008b5604b90500000083e9016bc9ff700583c101eb15b805000000bbffffffff5752e8fe80fdff5a5f89c18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc741080b0000008b3424897104c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d000000568b75008d76f03b75087305ff5528cd84897500c746fc030000008b4c2404894e08895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d000000be0500000083ee016bf601700583c601eb15b805000000bb030000005752e81380fdff5a5f89c68b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000897304c703050000008b74244c8b0e8b74244c8b3683c602710e8d642414b8f80466b18b5d04ff238b44244c89308b75008d76e83b75087305ff5528cd8e897500c746fc050000008b442408894610895e0c8b5c2404895e08894e04c706090000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7060d0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc020000008973045e8d642404893383fb01750489faeb0989f8e8df05000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706090000008b7c244c8917897704c7470801000000b80100000083c408c24c008d642410b824c766b18b5d04ff23f4000000|@11623,1,@937|21,0,@5742 184,0,@9455 236,0,2 281,0,@9455 333,0,2 375,0,@9455 427,0,3 513,0,@11507 601,0,0 645,0,@9455 697,0,2 742,0,@9455 794,0,2 836,0,@9455 888,0,3 974,0,@11507 1062,0,0 1149,0,@11507 1237,0,0 1324,0,@11507 1412,0,0 1456,0,@9455 1508,0,2 1553,0,@9455 1605,0,2 1647,0,@9455 1699,0,3 1731,0,@9455 1783,0,3 1869,0,@11507 1957,0,0 2002,0,22 2035,0,@11311 2042,0,@11494 2051,0,6 2237,0,0 2281,0,@9455 2333,0,2 2378,0,@9455 2430,0,2 2472,0,@9455 2524,0,3 2610,0,@11507 2698,0,0 2742,0,@9455 2794,0,2 2839,0,@9455 2891,0,2 2933,0,@9455 2985,0,3 3071,0,@11507 3159,0,0 3203,0,@9455 3255,0,2 3300,0,@9455 3352,0,2 3394,0,@9455 3446,0,2 3478,0,@9455 3530,0,2 3562,0,@9455 3614,0,2 3646,0,@9455 3683,0,@9455 3720,0,@9455 3811,0,@11507 3899,0,0 3943,0,@9455 3995,0,2 4040,0,@9455 4092,0,2 4134,0,@9455 4225,0,@11507 4313,0,0 4357,0,@9455 4409,0,2 4454,0,@9455 4506,0,2 4548,0,@9455 4600,0,3 4632,0,@9455 4684,0,3 4710,0,@9455 4762,0,3 4848,0,@11507 4936,0,0 4980,0,@9455 5032,0,2 5077,0,@9455 5129,0,2 5171,0,@9455 5223,0,3 5255,0,@9455 5307,0,3 5333,0,@9455 5385,0,3 5471,0,@11507 5559,0,0 5592,0,@9455 5644,0,2 5676,0,@9455 5728,0,3 5814,0,@11507 5902,0,0 5935,0,@9455 5987,0,2 6019,0,@9455 6071,0,3 6157,0,@11507 6245,0,0 6352,0,0 6362,0,0 6374,0,37 6409,0,6 6442,0,0 6449,0,0 6465,0,7 6500,0,6 6533,0,0 6578,1,@5743 6614,0,4 6667,1,@5587 6680,0,@11571 6792,0,1 6802,0,0 6814,0,37 6849,0,6 6882,0,0 6889,0,0 6905,0,7 6940,0,6 6973,0,0 7018,1,@5744 7054,0,4 7107,1,@5587 7120,0,@11571 7230,0,0 7237,0,@10755 7244,0,0 7253,0,3 7289,0,3 7302,0,16 7337,0,6 7376,0,1 7389,0,42 7424,0,6 7457,0,0 7492,0,0 7499,0,2 7519,0,7 7554,0,6 7587,0,0 7603,1,@5745 7656,1,@5746 7698,0,4 7714,0,0 7719,0,0 7734,0,@11571 7844,0,0 7851,0,@10755 7858,0,0 7867,0,3 7903,0,3 7916,0,16 7951,0,6 7990,0,0 8003,0,42 8038,0,6 8071,0,0 8106,0,0 8113,0,2 8133,0,7 8168,0,6 8201,0,0 8217,1,@5747 8270,1,@5748 8312,0,4 8328,0,0 8333,0,0 8348,0,@11571 8429,0,2 8447,0,2 8452,0,1 8459,1,@5527 8498,0,2 8547,0,5 8582,0,2 8617,0,6 8650,0,0 8668,1,@5749 8706,0,4 8722,0,0 8727,0,0 8742,0,@11571 8854,0,-4 8861,0,@10755 8868,0,0 8877,0,3 8913,0,5 8926,0,16 8961,0,6 8995,0,@10534 9016,0,1 9057,0,31 9092,0,6 9125,0,@10540 9146,0,2 9187,0,31 9222,0,6 9262,0,@10390 9282,0,3 9317,0,2 9352,0,6 9385,0,0 9501,1,@5750 9539,0,4 9555,0,0 9560,0,0 9575,0,@11571 9687,0,-1 9694,0,@10755 9701,0,0 9710,0,3 9746,0,2 9758,0,16 9793,0,6 9826,0,0 9842,0,34 9877,0,6 9910,0,0 9957,1,@5751 9995,0,4 10011,0,0 10016,0,0 10031,0,@11571 10143,0,0 10150,0,@10755 10157,0,0 10166,0,3 10202,0,5 10214,0,16 10249,0,6 10282,0,0 10298,0,34 10333,0,6 10366,0,0 10413,1,@5752 10451,0,4 10467,0,0 10472,0,0 10487,0,@11571 10570,0,0 10683,0,1 10693,0,0 10706,0,37 10741,0,6 10780,0,4 10821,0,43 10856,0,6 10889,0,0 10896,0,2 10916,0,7 10951,0,6 10984,0,0 11062,1,@5753 11100,0,4 11116,0,0 11121,0,0 11136,0,@11571 11250,0,19 11285,0,6 11318,0,0 11334,1,@5754 11341,0,2 11359,0,2 11364,0,0 11370,1,@5527 11389,0,1 11395,1,@4895 11433,0,2 11488,1,@5587 11497,0,@11571 11578,0,2 11596,0,2 11601,0,1 11608,1,@5527 11628,0,1 11635,1,@4895 11674,0,2 11707,0,1 11717,0,0 11724,0,@10755 11731,0,5 11768,0,32 11803,0,6 11836,0,0 11852,1,@5755 11859,0,2 11877,0,2 11882,0,0 11888,1,@5527 11907,0,1 11913,1,@4895 11951,0,2 12006,1,@5587 12015,0,@11571 12096,0,2 12114,0,2 12119,0,1 12126,1,@5527 12165,0,2 12201,0,5 12213,0,16 12248,0,6 12291,0,3 12326,0,6 12331,0,2 12349,0,2 12354,0,1 12361,1,@5527 12400,0,2 12426,0,@9455 12489,0,0 12524,0,2 12559,0,6 12592,0,0 12677,1,@5756 12715,0,4 12731,0,0 12736,0,0 12751,0,@11571 12832,0,2 12850,0,2 12855,0,-1 12862,1,@5527 12901,0,2 12937,0,5 12949,0,16 12984,0,6 13027,0,3 13062,0,6 13067,0,2 13085,0,2 13090,0,1 13097,1,@5527 13136,0,2 13162,0,@9455 13225,0,4 13260,0,2 13295,0,6 13328,0,0 13413,1,@5757 13451,0,4 13467,0,0 13472,0,0 13487,0,@11571 5743:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@922| 5744:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@923| 5745:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@924| 5746:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@925| 5747:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@926| 5748:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@927| 5749:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@928| 5750:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@929| 5751:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@930| 5752:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@931| 5753:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@932| 5754:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@933| 5755:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@934| 5756:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@935| 5757:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@936| 5758:D3,1036|3b650c7305ff552ccd0953a8010f85ea0300008b388b40048b37ba9cc22eb181c22b0000008d54b2fcffe2e933000000909090e902010000909090e949010000909090e96e010000909090e9fc010000909090e9ce020000909090e946030000909090ff77048b7c24108b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b74240ceb0b8b44240ce87f03000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707090000008b55008d52f43b55087305ff5528cd80895500c742fc020000005e897204893a8b7424108b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74240c8b76fcc1e608c1ee0783ce0183fe01770ab8003566b18b5d04ff238b74240c893eb801000000c210008d6424048b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b8b74240c8b5424088b4c2404894c2404895424088974240cc7442410003b66b1e977feffff8d6424048b77048b54240c8b4c24088b5c2404895c2404bb01000000894c24088954240c89742410e94afeffff8b7f048b5424148b75008d76f43b75087305ff5528cd85897500c746fc0200000059894e0489168b54240c8b52fcc1e208c1ea0783ca013bfa720ab8003566b18b5d04ff238b54240c89747afe8b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c7060b0000008b54240c8b4c24088b5c2404895c2404bb01000000894c24088954240c89742410e9b4fdffff8b77048b5708ff770c8b4c24188b7d008d7ff43b7d087305ff5528cd47897d00c747fc020000008b5c2404895f04890f8b4c24148b49fcc1e108c1e90783c9013bd1720e8d642408b8003566b18b5d04ff238b4c2414897c51fe8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000c747040100000089378b75008d76f03b75087305ff5528cd85897500c746fc030000008956088b14248956048d642404c706030000005089f88b5424148b4c24108b5c240c895c240c89c38b0424894c2410895424148974241883c408e9defcffff8d6424048d6424048b77048b57088b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c7060d0000005089f88b5424108b4c240c8b5c2408895c240889c38b0424894c240c895424108974241483c404e95efcffff8d6424048b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000005a89570489375089f88b7424148b5424108b4c240c8b5c2408895c240889c38b0424894c240c895424108974241483c404e907fcffff8d6424048d642404b86cce66b18b5d04ff23f4|@11627,1,@939|27,0,@5758 135,0,0 157,1,@5759 198,0,4 291,0,@10015 307,0,0 350,0,0 384,0,@10093 417,0,0 498,0,@10015 546,0,5 567,0,0 661,0,@10015 707,0,0 754,0,1 845,0,0 882,0,6 1026,0,@11624 5759:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@938| 5760:D3,420|3b650c7305ff552ccd098b7c2428f7c701000000753b8b178b77048b0a81f9cc01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750abfe46966b1e9c70000008b3f8b3781fecc01c0b075058b7f08eb0ab8483366b18b5d04ff23505357ff742434ff74243cff742430ff742430ff742430ff742430ff7424308b5424308b4c242c8b5c24588b44244c8b7424288b7c242487c7897c2424895c24288b5c2420894c242c895424308b3c24897c24348b7c2404897c24388b7c2408897c243c8b7c240c897c24408b7c2410897c24448b7c2414897c24488b7c2418897c244c8b7c241c897c2450c744245401000000c7442458010000008974242083c420e9900000008d642428f7c701000000753b8b178b77048b0a81f9cc01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fecc01c0b075088b7f08e9e9feffffb8483366b18b5d04ff23f40000|@12755,1,@1553|31,0,@4652 82,0,0 92,0,@10769 107,0,@4652 119,0,@9999 272,0,0 280,0,0 292,1,@5761 317,0,@4652 368,0,0 378,0,@11247 393,0,@4652 408,0,@9999 5761:D3,2008|3b650c7305ff552ccd0950538b7c243c83ff510f8ded0000008b7c243883ff030f85de000000baf4ce66b18b442434bb58d066b1e8b307000089c757ff34248b7c24388b3f8d1c7d0100000083fb017507b8a00c66b1eb7d89df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777889f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef89388b7c243889d98d77048d7804d1e9f3a489df83c708d1efc604380a8060ffbf8b1424ff128d6424048b7c24088b7ffcc1e708c1ef0783cf01576a01e9960600008d642410b8780566b18b5d04ff23eb0e8d642408b87cd066b18b5d04ff236a016a018b7c243454578b4424148b5c2410e805120000ff3424ff7424088b7c2438578b4424088b5c2404e8ccb6000089c78b77fcc1e608c1ee0783ce01ba010000003bd67207be01000000eb298b4c57fe83f9030f85d60000008b75008d76f83b75087305ff5528cd82897500c746fc01000000890e83fe017507be03000000eb05be0100000083f6026a016a0183fe037505e98f0000008b54245483fa010f85820000008b7c24188b77fcc1e608c1ee0783ce0183fe01750abfe43c66b1e97805000083fe017e5081feffffff017d4289f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba01000000e9210500008d642420eb048d642420b888b766b18b5d04ff23893424897c2404eb1689d183c10289ca3b650c7305ff552ccdc4e9fcfeffff5f5b83ff030f85f70000008d6424048b7c244883ff017507bf03000000eb05bf010000006a016a016a0157ff74241c54830424088b442418e828be0000595e5a8d6424048b7c244483c702710e8d642410b8f80466b18b5d04ff238d64241051525657ff742440ff742440ff742440ff742440ff742440ff742440ff7424408b7424408b54243c8b4c24388b5c24348b442430894424308b442428895c24348b5c2424894c24388954243c897424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245c8b7c241c897c24608b7c2420897c246483c42ce9a7fcffff8d64242c8b3c248b5ffcc1e308c1eb0783cb018b442404e8a32d020089c7578b7c244c83ff0375668b7c24088b7ffcc1e708c1ef0783cf01578b3c2483ff01750e8d642404bfe43c66b1e9030200008b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a01e9a80100008b7c24388b742434ff342457568b4424148b5c2420e8b373020089c78d6424048b3783fe010f85f00000008b47048b1c24e84720030089c38d6424046a016a016a016a01ff74241c54830424088b442418e883bc0000595e5a8d6424048b7c244483c702710e8d642410b8f80466b18b5d04ff238d64241051525657ff742440ff742440ff742440ff742440ff742440ff742440ff7424408b7424408b54243c8b4c24388b5c24348b442430894424308b442428895c24348b5c2424894c24388954243c897424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245c8b7c241c897c24608b7c2420897c246483c42ce902fbffff8d64242c8d642404ff77048b7c244883ff03750e8b5c24448b0424e87a220300eb00ff742404ff742424ff742448ff742450ff7424608b7424308b5424148b4c24408b5c243c8b442438894424488b442410895c244c8b5c240c894c245089542454897424588b3c24897c245c8b7c2404897c24608b7c2408897c24648b7c242c897c244483c444e94d2e03008d64241c8b3c243b7c24080f8ceb0000008d6424048b3c248067ffbf5f83c40457baf4ce66b18b44244cbb58d066b1e82d02000089c757ff34248b7c24508b3f8d1c7d0100000083fb017507b8a00c66b1eb7d89df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777589f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef89388b7c245089d98d77048d7804d1e9f3a489df83c708d1efc604380a8060ffbf8b1424ff128d6424048b7c24048b7ffcc1e708c1ef0783cf01576a01eb768d642428b8780566b18b5d04ff238b34248b7c24148b7c77feff378b4704e84871060089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424048b1424897c56fe8b342483c602710e8d642428b8f80466b18b5d04ff238934243b650c7303ff552ce9a0feffff8b3c243b7c240472218d6424085ab8a00c66b1ff128b5c244c8b442404e83371060083c404e9cefcffff8b34248b7c240c8b5c77fe68dc2d67b1ff74240c8b442408e8fe7406008b342483c6028934243b650c7303ff552ceba63bf27f148067ffbfc7042403000000897c2404e9fafaffffc74457fe0100000089d183c102710e8d642420b8f80466b18b5d04ff2389ca3b650c7305ff552ccdc4ebbd8b3c243b7c240472118d6424085ab8a00c66b1ff12e96ef9ffff8b34248b7c24108b5c77fe68143967b1ff74240c8b442408e8717406008b342483c6028934243b650c7303ff552cebb6f400|@12754,1,@1552|39,0,@11628 48,0,@11639 53,1,@5762 82,0,@9515 99,0,4 120,0,16777215 174,0,0 251,0,@9465 267,0,@11642 295,1,@5768 320,1,@5826 339,0,0 348,0,0 401,0,1 408,0,0 464,0,@10109 480,0,16777215 534,0,0 543,0,0 563,0,@11455 628,0,1 635,0,0 660,1,@5831 685,0,@9455 881,1,@6058 927,0,@10109 985,0,0 1021,1,@6077 1049,1,@6096 1081,1,@5831 1106,0,@9455 1306,1,@6099 1415,1,@6102 1453,0,@11628 1462,0,@11639 1467,1,@5762 1496,0,@9515 1513,0,4 1534,0,16777215 1588,0,0 1662,0,@9465 1688,1,@6365 1750,0,@9455 1790,0,@9515 1805,1,@6366 1829,0,@12615 1842,1,@6369 1876,0,1 1893,0,0 1909,0,@9455 1947,0,@9515 1970,0,@12753 1983,1,@6369 5762:D3,204|3b650c7305ff552ccd0d53a801753a8b308b78048b0e8b5a043bcb751e8b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008937eb1389f83b650c7305ff552ccd05ebc2bf0100000083ff017507be00cf66b1eb0e8b3f8b378b52043bf275558b7708ba100666b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b45008d40ec3b45087305ff5528cdc0894500c740fc040000008b142489500c8d642404897008897804c700ccd12eb1c38d642404b8483366b18b5d04ff23f4000000|@11638,1,@945|74,0,0 84,0,@11629 105,0,@9473 181,0,@5764 191,0,@9999 5763:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@940|11,0,0 5764:D3,1204|3b650c7305ff552ccd0552508b7c24048b7f04ff378b3c248b3f8d3c7d01000000578b7c24088b3f8d3c7d01000000578b7c240489fe83ff01750a8d64240c5be9a60000008b3c2483ff01750d8d6424085b83c404e9910000008b142489f689f78d7416ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777989d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c24088d77048d7b04d1e9f3a489d783c708598d6424085e8d7604d1ef8d3c3bd1e9f3a48063ffbf8b3b8d0c7d010000006a016a01ba01000000eb0e8d642414b8780566b18b5d04ff233bd175588b75008d76f03b75087305ff5528cd0e897500c746fc03000000895e08894e04c706010000008b7d008d7ff03b7d087305ff5528cd4c897d00c747fc03000000895f08c74704010000008917893424897c2404e98100000089d783c708d1ef0fb63c3b8d3c7d0100000083ff15741689d783c70289fa3b650c7305ff552ccd0ee977ffffff8b75008d76f03b75087305ff5528cd0e897500c746fc03000000895e08895604c706010000002bca83c1018b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f048917893424897c24048b3c24ff7424048b34248b760483fe010f85b60000008d64240c8b378b4f048b7f088b178d14550100000083fe0175063bca7502eb7c83f9017507bf100666b1eb7089c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775b89d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee8d34378d7a04d1e9f3a48062ffbf89d75e8b7604893eb801000000c38d642404b8780566b18b5d04ff238b378b4f048b7f088b178d14550100000083fe01750b3bca750789fee98000000083f9017507be100666b1eb7489c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f879c01000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee8d34378d7a04d1e9f3a48062ffbf89d68b3e8d3c7d010000005756b801000000bb01000000e8570100008b7c240cff77088b7c24108b5f0ce850040000e8b34af7ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700070000008b1424ff128d6424048b7c240c8b7f04c707100666b1ff74240c8b7c24048b378b7c24048b4f048b7c24048b7f0883f9030f82b100000083c60283e9028b178d14550100000083fe0175083bca750489f8eb7a83f9017507b8100666b1eb6e89c883c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775a89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe0000000089cad1ea891083c608d1ee8d34378d7804d1e9f3a48060ffbf5a83c410e97cfbffff8d6424048d642414b8780566b18b5d04ff238d642414b8d8cf66b18b5d04ff238d642410b8780566b18b5d04ff23f400|@11637,1,@944|107,0,4 128,0,16777215 182,0,0 249,0,0 260,0,@9465 307,0,0 343,0,0 440,0,0 550,0,@9473 562,0,4 583,0,16777215 637,0,0 675,0,0 685,0,@9465 733,0,@9473 745,0,4 766,0,16777215 824,0,0 867,0,0 872,0,0 877,1,@5765 896,1,@5766 901,1,@4827 938,0,3 960,0,@9473 1031,0,@9473 1043,0,4 1064,0,16777215 1118,0,0 1165,0,@9465 1179,0,@11635 1193,0,@9465 5765:D3,760|3b650c7305ff552ccd0989c78b7424083bde0f852901000089d92bcf710ab8f80466b18b5d04ff2383c1018b7424048b368d14750100000083ff010f8cf600000083f9010f8ce30000008d740fff3bf2760ab808cf66b18b5d04ff238b7424048b368d34750100000083ff01750d3bce75098b7c2404e98200000083f9017507bf100666b1eb7689c883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777b89f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe0000000089ced1ee893289fe83c6088b7c2404d1ee8d34378d7a04d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20800b8780566b18b5d04ff23b8800266b18b5d04ff23b8800266b18b5d04ff2389da83c2088b742404d1ea0fb634168d34750100000083fe130f856e01000089d92bcf710ab8f80466b18b5d04ff2383c1018b7424048b368d14750100000083ff010f8c3b01000083f9010f8c280100008d740fff3bf2760ab808cf66b18b5d04ff238b7424048b368d34750100000083ff01750d3bce75098b7c2404e98600000083f9017507bf100666b1eb7a89c883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87bc00000089f08d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183ee02c74472fe0000000089ced1ee893289fe83c6088b7c2404d1ee8d34378d7a04d1e9f3a48062ffbf89d75789da83c202710e8d642404b8f80466b18b5d04ff2389d883c002710e8d642404b8f80466b18b5d04ff238b7c240c8b742408575689d3e87bfdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20800b8780566b18b5d04ff23b8800266b18b5d04ff23b8800266b18b5d04ff2383c302710ab8f80466b18b5d04ff2389f88b7424088b5424048954240489742408e90cfdfffff4000000|@11632,1,@941|31,0,@9455 83,0,@11630 129,0,@9473 141,0,4 162,0,16777215 216,0,0 282,0,0 292,0,@9465 302,0,@9427 312,0,@9427 359,0,@9455 411,0,@11630 457,0,@9473 469,0,4 490,0,16777215 548,0,0 598,0,@9455 619,0,@9455 689,0,@9465 699,0,@9427 709,0,@9427 724,0,@9455 5766:D3,360|3b650c7305ff552ccd0983f8017506b801000000c3ff30ff70048b7c24048b3f8d047d010000006a016a0154e84b0100005f5e83ff017f0aba100666b1e9a900000083ff03750abaa80d66b1e99a00000083ff01750aba100666b1e98b00000083ff017c7089f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01774189cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe0000000089f9d1e9890ab901000000eb1c8d642408b8780566b18b5d04ff238d642408b8b00566b18b5d04ff233bf9775f8062ffbf5289f38b442404e809ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c389cb83c308d1ebc6041a2089cb83c30289d93b650c7305ff552ccdc6e97cfffffff4|@11634,1,@943|16,0,0 45,1,@5767 57,0,@9473 72,0,@9537 87,0,@9473 107,0,4 128,0,16777215 182,0,0 193,0,0 204,0,@9465 218,0,@9468 5767:D3,216|3b650c7305ff552ccd0950f6c3010f85820000008b138b7b048b0c2489ce3bca7c4e89f02bc2710e8d642404b8f80466b18b5d04ff2383c0016a016a015489fbe8bbffffff5a5f8b342483ee018d64240403d6710ab8f80466b18b5d04ff238b7424048916897e04b801000000c204002bd68d642404710ab8f80466b18b5d04ff2383c2018b7424048916897e04b801000000c2040058bf11000000d1f8d1ff99f7ff8d3c5501000000be110000002bf7710ab8f80466b18b5d04ff2383c6018b7c24048937c7470401000000b801000000c20400f40000|@11633,1,@942|45,0,@9455 86,0,@9455 105,0,0 121,0,@9455 143,0,0 152,0,8 171,0,8 180,0,@9455 201,0,0 206,0,0 5768:D3,2484|8d7c24ac3b7d0c7305ff5530cd0950538b3c248b7ffcc1e708c1ef0783cf01578b7c24088b7ffcc1e708c1ef0783cf01578b3c2483ff017d098d642410e93b0700008b3c2481ffffffff010f8d280700008b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240483ff017d098d642414e9d40600008b7c240481ffffffff010f8dc00600008b7c240489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240883ff017d098d642418e96b0600008b7c240881ffffffff010f8d570600008b7c240889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240c83ff017d098d64241ce9020600008b7c240c81ffffffff010f8dee0500008b7c240c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241483ff017d098d642420e9990500008b7c241481ffffffff010f8d850500008b7c241489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241883ff017d098d642424e9300500008b7c241881ffffffff010f8d1c0500008b7c241889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241883ff017d098d642428e9c70400008b7c241881ffffffff010f8db30400008b7c241889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241c83ff017d098d64242ce95e0400008b7c241c81ffffffff010f8d4a0400008b7c241c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c242083ff017d098d642430e9f50300008b7c242081ffffffff010f8de10300008b7c242089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab56ff742430ff742414ff742428ff742428ff742428ff742428ff74241cff74241cb8010000008b5c2428e8390600008b7c242483ff017d098d642434e95e0300008b7c242481ffffffff010f8d4a0300008b7c242489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c242883ff017d098d642438e9f50200008b7c242881ffffffff010f8de10200008b7c242889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c242c83ff017d098d64243ce98c0200008b7c242c81ffffffff010f8d780200008b7c242c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c243083ff017d098d642440e9230200008b7c243081ffffffff010f8d0f0200008b7c243089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c243483ff017d098d642444e9ba0100008b7c243481ffffffff010f8da60100008b7c243489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab56bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b54244c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707b8472fb1893eff742444ff742438ff742434ff74240cff742418ff742424ff74241cff742428ff742450ff74244cff74243cff742444b8010000008b5c2468e8666f00008b7c243c83ff017d098d642448e9c90000008b7c243c81ffffffff010f8db50000008b7c243c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c243c83ff01750abfe43c66b1e9540100008b7c243c83ff017e528b7c243c81ffffffff017d408b7c243c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a01e9e60000008d64244ceb048d64244cb888b766b18b5d04ff238d642448b8383066b18b5d04ff238d642444b8383066b18b5d04ff238d642440b8383066b18b5d04ff238d64243cb8383066b18b5d04ff238d642438b8383066b18b5d04ff238d642434b8383066b18b5d04ff238d642430b8383066b18b5d04ff238d64242cb8383066b18b5d04ff238d642428b8383066b18b5d04ff238d642424b8383066b18b5d04ff238d642420b8383066b18b5d04ff238d64241cb8383066b18b5d04ff238d642418b8383066b18b5d04ff238d642414b8383066b18b5d04ff238d642410b8383066b18b5d04ff238b7c24443b3c240f8f8d0000008d6424048b3c248067ffbf5f578b7c244483ff01750abfe43c66b1e9f00000008b7c244483ff017e568b7c244481ffffffff017d448b7c244489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be01000000e98b0000008d642450eb048d642450b888b766b18b5d04ff23ff742440ff742440ff742424ff742420ff742428ff742448ff742428ff742444ff742428ff742470ff742454ff742450ff74243c8b4424348b9c2484000000e8db7e000089c78b7424048b1424897c56fe8b342483c602710e8d642454b8f80466b18b5d04ff238934243b650c7303ff552ce9effeffff8b5424443bd67f198067ffbf8b7424585a8916897e04b80100000083c44cc208008b5424048b52fcc1e208c1ea0783ca013bf2720e8d642450b8783266b18b5d04ff238b542404ff7472fe8b5424308b52fcc1e208c1ea0783ca013bf2720e8d642454b8783266b18b5d04ff238b5424308b5c72fe8b54242c8b52fcc1e208c1ea0783ca013bf2720e8d642454b8783266b18b5d04ff238b54242c8b4472fe8b54244c8b52fcc1e208c1ea0783ca013bf2720e8d642454b8a43266b18b5d04ff238b54244c8b4c72fe8b55008d52ec3b55087305ff5528cdcb895500c742fc0400000089420c58894208895a04890a895477fe89f283c202710e8d642450b8f80466b18b5d04ff2389d63b650c7305ff552ccdc0e9e7fefffff40000|@11738,1,@1003|71,0,16777215 130,0,0 161,0,16777215 221,0,0 252,0,16777215 312,0,0 343,0,16777215 403,0,0 434,0,16777215 494,0,0 525,0,16777215 585,0,0 616,0,16777215 676,0,0 707,0,16777215 767,0,0 798,0,16777215 858,0,0 898,0,0 907,1,@5769 935,0,16777215 995,0,0 1026,0,16777215 1086,0,0 1117,0,16777215 1177,0,0 1208,0,16777215 1268,0,0 1299,0,16777215 1359,0,0 1367,0,0 1434,0,@5798 1489,0,0 1498,1,@5805 1526,0,16777215 1586,0,0 1603,0,@10109 1627,0,16777215 1683,0,0 1708,0,@11455 1722,0,@9964 1736,0,@9964 1750,0,@9964 1764,0,@9964 1778,0,@9964 1792,0,@9964 1806,0,@9964 1820,0,@9964 1834,0,@9964 1848,0,@9964 1862,0,@9964 1876,0,@9964 1890,0,@9964 1904,0,@9964 1918,0,@9964 1963,0,@10109 1987,0,16777215 2043,0,0 2052,0,0 2072,0,@11455 2145,1,@5810 2175,0,@9455 2223,0,0 2258,0,@9988 2300,0,@9988 2342,0,@9988 2384,0,@9990 2455,0,@9455 5769:D3,1224|3b650c7305ff552ccd0950538b34248b5efc89d9c1e308c1eb0783cb018b54240489d73bd3720e8d642408b8783266b18b5d04ff2389ff89f68b547efe83fa01740c8d642408b801000000c2200089f6c1e108c1e90783c90189ff89fa3bf9720e8d642408b8003566b18b5d04ff2389f689d289d7c74456fe902d66b18b7424288b56fcc1e208c1ea0783ca0189ff89fe3bfa720e8d642408b8a43266b18b5d04ff238b7c242889f68b7c77feff37ff77048b3f8b37bad0e52eb181c2c70000008d54b2fcffe2e933000000909090e978000000909090e9bd000000909090e9bf000000909090e9bf000000909090e901010000909090e9210100009090908b77088b7f108b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9f70000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9aa000000bf01000000e9a00000008b7f04e9980000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb4e8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb268b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757f6042401755d8b342489f7ff3689ffff7704ff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff742404ff7424045756525153508b44242c8b5c243ce86ffdffff8d6424085e8d6424048934243b650c7303ff552ceb9d8d6424048b7c24048b3783fe01752389ff8b7f048b75008d76f83b75087305ff5528cd80897500c746fc01000000893eeb05be010000006a016a016a016a016a016a016a018b7c244857568b4424248d5c2408e8dd010000ff34248b5c24088b44240cff742410ff742418ff742420ff7424288b7c24588b57fcc1e208c1ea0783ca018b7c243c89fe3bfa720e8d642440b8003566b18b5d04ff238b7c245889f6895c77fee8075e000089c68b7c24548b57fcc1e208c1ea0783ca018b7c243c89f93bfa720e8d642440b8003566b18b5d04ff238b54245489c989cf89744afe8b7424508b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642440b8003566b18b5d04ff238b7424508b7c240889fb89d2897c56fe8b442404e8925d000089c68b7c244c8b57fcc1e208c1ea0783ca018b7c243c89f93bfa720e8d642440b8003566b18b5d04ff238b54244c89c989cf89744afe8b75008d76f83b75087305ff5528cd80897500c746fc010000008b54241089168b5424388b5afcc1e308c1eb0783cb0189ff89f93bfb720e8d642440b8003566b18b5d04ff2389d289c989cf89744afe8b7424488b76fcc1e608c1ee0783ce0189ff89f93bfe720e8d642440b8003566b18b5d04ff238b5424488b74240c89c989cf89744afe8b7424448b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642440b8003566b18b5d04ff238b7424448b3c2489d2897c56fe8d642404b80100000083c43cc22000f4000000|@11663,1,@974|44,0,@9988 71,0,0 102,0,@10015 121,0,@9922 154,0,@9990 183,0,@5769 290,0,0 367,0,0 410,0,0 462,0,0 533,0,0 573,0,0 730,0,0 763,1,@5770 825,0,@10015 845,1,@5797 882,0,@10015 932,0,@10015 962,1,@5797 999,0,@10015 1081,0,@10015 1129,0,@10015 1183,0,@10015 1210,0,0 5770:D3,224|3b650c7305ff552ccd0953a8010f8590000000ff308b40046a016a016a016a016a016a016a018b7c242c8b74242857568d5c2408e8c7ffffffff3424ff7424088b7c24108b7424148b5424188b4c241c8b4424208b5d008d5be03b5d087305ff5528cdc7895d00c743fc07000000894318894b1489531089730c897b088b3c24897b048d6424048b3c24893b8d642420585e8b5424088954240489742408e9510000005f8b742404c70701000000c7470401000000c747080100000089770cc7471001000000c7471401000000c7471803000000b801000000c20800f4000000|@11273,1,@972|159,1,@5771 170,0,0 177,0,0 184,0,0 194,0,0 201,0,0 208,0,1 213,0,0 5771:D3,1428|8dbc2454ffffff3b7d0c7305ff5530cd0950538b3c2489feff3789f689f7ff760489ff89feff770889f689f7ff760c89ff89feff771089f689f7ff761489ffff77186a016a016a016a016a016a018b44243889e3e84f050000ff3424ff7424088b442410ff742414ff74241cff7424248b7c244c8b1789d6b9a0eb2eb181c1890000008d4c91fcffe1e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e938010000909090e91b010000909090e92f010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9f6000000909090e9f5000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e97c000000909090e943000000909090e93b000000909090e96b000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909089f783ff217507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000057e88051000089c7578b442408e8d051000089c7578b442414e82052000089c7578b442414e87452000089c7578b7c242089fe83ff0375068b7c244ceb5789f689f783fe01751bf644244c01750e8d642464b818d266b18b5d04ff238b7c2424eb3389ff8b37f644244c0175248b7c244c8b3f3bfe7502eb123bfe740e8d642464b8a8d266b18b5d04ff238b7c2424eb048b7c2424578b74244489f783fe0375068b7c2424eb0289ff578b7c241883ff0375098b7c2414e9140200008b7c2410f7c701000000757d8b1f8b77048b5424708b52fcc1e208c1ea0783ca013bda720e8d64246cb8783266b18b5d04ff238b5424708b545afe83c202710e8d64246cb8f80466b18b5d04ff238b4c24708b49fcc1e108c1e90783c9013bd9720e8d64246cb8003566b18b5d04ff238b4c2470895459fe89f73b650c7305ff552ccd80e97bffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424608977048b742468893757ff7424186a01f64424040175288b7c24048b1f89ffff77048b442404e87251000089c25e891424897424043b650c7303ff552cebd1586a016a01548b5c2470e847520000ff3424ff7424246a01f64424040175288b7c24048b1f89ffff77048b442404e8a754000089c25e891424897424043b650c7303ff552cebd1586a016a01548b5c247ce800520000ff3424ff7424306a01f64424040175288b7c24048b1f89ffff77048b442404e85855000089c25e891424897424043b650c7303ff552cebd1586a016a01548b9c2484000000e8b6510000ff3424ff74243c6a01f64424040175288b7c24048b1f89ffff77048b442404e80656000089c25e891424897424043b650c7303ff552cebd1586a016a01548b9c2490000000e86c5100005f8d6424048bb424ac0000008b54243489168b5424248956048b5424148956088b54243c89560c8b542404895610897e148b7c2438897e18b80100000081c4a4000000c20800f7c70100000075498b0f8b77048b5424708b52fcc1e208c1ea0783ca013bca720e8d64246cb8783266b18b5d04ff238b5424708b544afe83fa01750e89f73b650c7305ff552ccd80ebb6bf01000000eb05bf0300000083ff030f858dfdffff8d6424648b7424105f8b1789168b57048956048b57088956088b570c89560c8b57108956108b57148956148b7f18897e18b80100000083c404c20800f40000|@11661,1,@971|85,1,@5772 121,0,@5771 497,0,1 504,0,0 511,0,1 518,0,1 525,0,1 532,0,1 539,0,1 546,0,1 552,1,@5788 564,1,@5789 576,1,@5790 588,1,@5791 633,0,@11653 680,0,@11657 780,0,@9988 807,0,@9455 841,0,@10015 942,1,@5792 977,1,@5793 1013,1,@5794 1048,1,@5793 1084,1,@5795 1122,1,@5793 1158,1,@5796 1196,1,@5793 1257,0,0 1308,0,@9988 1345,0,0 1352,0,1 1415,0,0 5772:D3,17620|3b650c7305ff552ccd09538b38be48f12eb181c61e0000008d74befcffe6e95b010000909090e9a5010000909090e911020000909090e987050000909090e9f3050000909090e92a060000909090e996060000909090e924070000909090e990070000909090e939080000909090e9a5080000909090e9210c0000909090e9a00c0000909090e90c0d0000909090e9320d0000909090e9c00d0000909090e94c0e0000909090e97f110000909090e9d4120000909090e91e130000909090e968130000909090e9db160000909090e925170000909090e96f170000909090e9a21a0000909090e9ec1a0000909090e9361b0000909090e95d1b0000909090e9a71b0000909090e9f91e0000909090e950220000909090e983250000909090e9f8280000909090e9462d0000909090e979300000909090e9e5300000909090e964310000909090e990340000909090e94f350000909090e9a1380000909090e9f33b0000909090e94a3f0000909090e9af3f0000909090e91b4000009090908b78048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e5fc70701000000c7470401000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c38b7804ff7704ff77088b770cff77108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000005a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000008b5d008d5bf83b5d087305ff5528cd86895d00c743fc010000005e89335ec70601000000895e04894e08c7460c01000000895610897e14b801000000c38b70048b78088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489375ec70601000000c7460401000000c7460801000000c7460c01000000c7461001000000897e14b801000000c38b7804ff700889f8e8a53e000089c68b7c2404c70701000000c74704010000008977085e8d64240489770cc7471001000000c7471401000000b801000000c38b70048b78088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e5fc70701000000c7470401000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b50048b70088b780c8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489375ec70601000000c7460401000000c7460801000000c7460c01000000c7461001000000897e14b801000000c38b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c38b70048b48088b500c8b78108b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b55008d52f83b55087305ff5528cdc0895500c742fc0100000089325ec70601000000895604c7460801000000c7460c01000000c7461001000000897e14b801000000c38b70048b500c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460403000000895608c7460c01000000c7461001000000897e14b801000000c38b78048b37ff7704ff770cff77108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240889178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000059890a8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008951045a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460401000000894e08c7460c01000000895610897e14b801000000c38b7804ff37ff7704ff7710ff742404b804d166b18b5c2404e8273b000089c7578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240c893757ff74240cb884d166b18b5c240ce8ec3a000089c78b742414c70601000000c74604010000005a895608c7460c01000000897e105f8d642410897e14b801000000c38b50048b70088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c35ebfc0d166b18b1789168b57048956048b57088956088b570c89560c8b57108956108b7f14897e14b801000000c38b78048b50088b700c8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489375ec70601000000c7460403000000c7460801000000c7460c01000000c7461001000000897e14b801000000c3ff70048b7808ff700c83ff017507bf01000000eb258b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff742404b804d166b18b5c240ce8383b000089c757ff742408b884d166b18b5c2410e8233b000089c78b742410c70601000000c74604010000008b542404895608c7460c01000000897e105f8d642410897e14b801000000c3ff70048b700c8b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b142489118d6424048b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460403000000894e08c7460c01000000895610897e14b801000000c38b7004ff70088b780cf7c60100000075278b368b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008930eb05b8010000008b1789d683fa07752b8b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893be99000000089f283fe0575288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb6189d683fa0375288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb3283fe0175288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb05bb0100000083fb01750489c7eb07e82338000089c78b55008d52f43b55087305ff5528cd80895500c742fc02000000c74204010000005e89325ec70601000000c7460403000000895608c7460c01000000c7461001000000897e14b801000000c38b78048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e5fc70701000000c7470403000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b70048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089375ec70601000000c7460401000000c7460801000000c7460c01000000c7461001000000897e14b801000000c3ff7004ff70088b700cff70108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000005a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000008b5d008d5bf83b5d087305ff5528cd86895d00c743fc010000005e89335ec70601000000895e04894e08c7460c01000000895610897e14b801000000c38b78048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e5fc70701000000c7470401000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b78048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e5fc70701000000c7470401000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b7004ff70088b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b0e89ca83f90375288b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb05ba010000008b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000c74104010000008b342489318d6424045ec70601000000c7460403000000c7460801000000894e0c895610897e14b801000000c38b70048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089375ec70601000000c7460401000000c7460801000000c7460c01000000c7461001000000897e14b801000000c38b78088b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e5fc70701000000c7470403000000c747080100000089770cc7471001000000c7471401000000b801000000c38b70085fc70701000000897704c7470801000000c7470c01000000c7471001000000c7471401000000b801000000c38b70048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089375ec70601000000c7460401000000c7460801000000c7460c01000000c7461001000000897e14b801000000c3ff70048b7008ff700c8b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b0e89ca83f90375288b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb05ba010000008b4d008d49f83b4d087305ff5528cd84894d00c741fc010000005e89318b742404c70601000000894e04c7460801000000c7460c01000000895610897e14b80100000083c408c3ff70088b700cff70108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000005a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460401000000894e08c7460c01000000895610897e14b801000000c3ff70048b70088b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b142489118d6424048b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460401000000894e08c7460c01000000895610897e14b801000000c38b7804ff37ff7708ff770c8b77108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000005a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000008b5d008d5bf83b5d087305ff5528cd86895d00c743fc010000005e89335ec70601000000895e04894e08c7460c01000000895610897e14b801000000c38b7004ff368b7e08ff76108b34248b3683fe0b753f8b34248b7604f7c60100000075278b168b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be01000000e9530200008b34248b3683fe070f850b0200008b34248b76048b14248b52088b0c248b490c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893289d6e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916eb3a8b34248b3683fe09752b8b34248b56048b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be01000000568b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008b74240889308b1789d683fa07752b8b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893be99000000089f283fe0575288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb6189d683fa0375288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb3283fe0175288b7f048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb05bb0100000083fb01750489c3eb07e8041e000089c383fb0175035feb0e8b0424e8561e000089c78d6424048b34248b3683fe03752c5e8b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893283c404eb3f8b34248b3683fe0b752c5e8b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893283c404eb098d642408ba010000005ec70601000000c7460403000000c7460801000000c7460c01000000895610897e14b801000000c38b7008ff700c8b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b0e89ca83f90375288b56048b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb3283fa0b75288b560c8b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be010000008b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d6424045ec70601000000c7460403000000c7460801000000c7460c01000000895610897e14b801000000c38b70048b50088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c38b7804ff37ff7704ff770cff742408b804d166b18b5c2404e84b1a000089c7578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742408893757ff742410b884d166b18b5c240ce8101a000089c78b742414c70601000000c74604010000005a895608c7460c01000000897e105f8d642410897e14b801000000c38b7004ff70088b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b0e89ca83f90375288b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb05ba010000008b4d008d49f83b4d087305ff5528cd84894d00c741fc010000008b342489318d6424045ec70601000000894e04c7460801000000c7460c01000000895610897e14b801000000c38b70048b78088b500cf7c70100000075488b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000891789fa8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704890feb238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c3ff70048b7008ff700c8b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b0e89ca83f90375288b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb05ba010000008b4d008d49f83b4d087305ff5528cd84894d00c741fc010000005e89318b742404c70601000000894e04c7460801000000c7460c01000000895610897e14b80100000083c408c3ff70048b7008ff700c8b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b0e89ca83f90375288b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204010000008932eb05ba010000008b4d008d49f83b4d087305ff5528cd84894d00c741fc010000005e89318b742404c70601000000894e04c7460801000000c7460c01000000895610897e14b80100000083c408c3ff70088b700cff70108b3e89fa83ff0b753c8b7e04f7c70100000075278b3f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba01000000e93f02000089d783fa070f85020200008b56048b7e088b4e0c83ff010f85ea0000008b1989df83fb07752b8b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939e99000000089fb83ff0575288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb6189df83fb0375288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb3283ff0175288b79048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008939eb05b9010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891789fae9040100008b3f8b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893aeb3283ff0975288b7e048b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893aeb05ba010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b54240489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000005a8d64240489118b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460401000000894e08c7460c01000000895610897e14b801000000c38b50048b78088b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f83b55087305ff5528cdc0895500c742fc01000000893a5f8917c7470401000000897708c7470c01000000c7471001000000c7471401000000b801000000c38b70048b500c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089325ec70601000000c7460401000000895608c7460c01000000c7461001000000897e14b801000000c3ff70048b70088b3e89fa83ff0b753c8b7e04f7c70100000075278b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000e93f02000089d783fa070f85020200008b7e048b56088b4e0c83fa010f85ea0000008b1989da83fb07752b8b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911e99000000089d383fa0575288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb6189da83fb0375288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb3283fa0175288b51048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008911eb05b9010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a89d7e9040100008b128b0189c383f807752b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890be99000000089d883fb0575288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb6189c383f80375288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb3283fb0175288b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890beb05bb010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917eb3283ff0975288b56048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf010000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104010000008b142489118d6424048b1e89da83fb0375288b76048b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb3283fa0b75288b760c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204010000008932eb05ba010000005ec70601000000c7460401000000894e08c7460c01000000895610897e14b801000000c3f40000|@11652,1,@961|14,0,@5772 414,0,0 423,0,0 430,0,0 440,0,0 447,0,0 454,0,0 459,0,0 499,0,0 534,0,0 543,0,0 550,0,0 560,0,0 567,0,0 575,0,0 646,0,0 655,0,0 734,0,0 784,0,0 831,0,0 876,0,0 885,0,0 970,0,0 1020,0,0 1067,0,0 1112,0,0 1121,0,0 1226,0,0 1235,0,0 1303,0,0 1355,0,0 1400,0,0 1409,0,0 1445,0,0 1458,0,0 1469,0,0 1509,0,0 1549,0,0 1556,0,0 1563,0,0 1570,0,0 1577,0,0 1585,0,0 1599,1,@5773 1611,0,0 1618,0,0 1636,0,0 1643,0,0 1648,0,0 1688,0,0 1728,0,0 1735,0,0 1745,0,0 1752,0,0 1759,0,0 1764,0,0 1807,0,0 1878,0,0 1885,0,0 1892,0,0 1899,0,0 1906,0,0 1914,0,0 1954,0,0 1989,0,0 1998,0,0 2005,0,0 2015,0,0 2022,0,0 2030,0,0 2076,0,0 2175,0,0 2185,0,0 2192,0,0 2199,0,0 2207,0,0 2247,0,0 2282,0,0 2291,0,0 2298,0,1 2308,0,0 2315,0,0 2323,0,0 2393,0,0 2402,0,0 2481,0,0 2531,0,0 2578,0,0 2623,0,0 2632,0,0 2717,0,0 2767,0,0 2814,0,0 2859,0,0 2868,0,0 2973,0,0 2982,0,0 3050,0,0 3134,0,0 3179,0,0 3188,0,0 3195,0,0 3202,0,0 3212,0,0 3223,0,0 3244,0,@11646 3253,1,@5775 3287,0,0 3303,0,@11649 3312,1,@5775 3324,0,0 3331,0,0 3342,0,0 3358,0,0 3398,0,0 3433,0,0 3442,0,0 3449,0,0 3459,0,0 3466,0,0 3474,0,0 3481,0,@11651 3520,0,0 3563,0,0 3634,0,0 3641,0,1 3648,0,0 3655,0,0 3662,0,0 3670,0,0 3690,0,0 3727,0,0 3739,0,@11646 3748,1,@5779 3760,0,@11649 3769,1,@5779 3781,0,0 3788,0,0 3802,0,0 3818,0,0 3880,0,0 3889,0,0 3968,0,0 4018,0,0 4065,0,0 4110,0,0 4119,0,0 4204,0,0 4254,0,0 4301,0,0 4346,0,0 4355,0,0 4460,0,0 4469,0,0 4502,0,0 4556,0,0 4601,0,0 4610,0,0 4617,0,0 4624,0,1 4634,0,0 4645,0,0 4698,0,0 4707,0,0 4752,0,0 4802,0,0 4849,0,0 4894,0,0 4903,0,0 4917,1,@5782 4952,0,0 4962,0,0 4969,0,1 4979,0,0 4986,0,0 4994,0,0 5031,0,0 5040,0,0 5047,0,1 5057,0,0 5064,0,0 5071,0,0 5076,0,0 5113,0,0 5122,0,0 5129,0,0 5136,0,0 5143,0,0 5150,0,0 5158,0,0 5226,0,0 5235,0,0 5314,0,0 5364,0,0 5411,0,0 5456,0,0 5465,0,0 5550,0,0 5600,0,0 5647,0,0 5692,0,0 5701,0,0 5806,0,0 5815,0,0 5883,0,0 5935,0,0 5980,0,0 5989,0,0 6025,0,0 6038,0,0 6049,0,0 6086,0,0 6095,0,0 6102,0,0 6112,0,0 6119,0,0 6126,0,0 6131,0,0 6168,0,0 6177,0,0 6184,0,0 6194,0,0 6201,0,0 6208,0,0 6213,0,0 6275,0,0 6284,0,0 6363,0,0 6413,0,0 6460,0,0 6505,0,0 6514,0,0 6599,0,0 6649,0,0 6696,0,0 6741,0,0 6750,0,0 6855,0,0 6864,0,0 6909,0,0 6954,0,0 6963,0,0 6996,0,0 7012,0,0 7019,0,1 7026,0,0 7040,0,0 7077,0,0 7086,0,0 7093,0,0 7100,0,0 7107,0,0 7114,0,0 7122,0,0 7159,0,0 7168,0,0 7175,0,1 7182,0,0 7192,0,0 7199,0,0 7204,0,0 7215,0,0 7225,0,0 7232,0,0 7239,0,0 7246,0,0 7251,0,0 7288,0,0 7297,0,0 7304,0,0 7311,0,0 7318,0,0 7325,0,0 7333,0,0 7398,0,0 7407,0,0 7486,0,0 7536,0,0 7583,0,0 7628,0,0 7637,0,0 7722,0,0 7772,0,0 7819,0,0 7864,0,0 7873,0,0 7978,0,0 7987,0,0 8067,0,0 8112,0,0 8121,0,0 8160,0,0 8170,0,0 8177,0,0 8188,0,0 8256,0,0 8265,0,0 8344,0,0 8394,0,0 8441,0,0 8486,0,0 8495,0,0 8580,0,0 8630,0,0 8677,0,0 8722,0,0 8731,0,0 8836,0,0 8845,0,0 8913,0,0 8965,0,0 9010,0,0 9019,0,0 9026,0,0 9033,0,0 9043,0,0 9054,0,0 9116,0,0 9125,0,0 9204,0,0 9254,0,0 9301,0,0 9346,0,0 9355,0,0 9440,0,0 9490,0,0 9537,0,0 9582,0,0 9591,0,0 9696,0,0 9705,0,0 9738,0,0 9792,0,0 9837,0,0 9846,0,0 9853,0,0 9860,0,0 9870,0,0 9881,0,0 9951,0,0 9960,0,0 10039,0,0 10089,0,0 10136,0,0 10181,0,0 10190,0,0 10275,0,0 10325,0,0 10372,0,0 10417,0,0 10426,0,0 10531,0,0 10540,0,0 10608,0,0 10660,0,0 10705,0,0 10714,0,0 10750,0,0 10763,0,0 10774,0,0 10845,0,0 10854,0,0 10945,0,0 10995,0,0 11042,0,0 11087,0,0 11096,0,0 11181,0,0 11231,0,0 11278,0,0 11323,0,0 11332,0,0 11445,0,0 11454,0,0 11488,0,0 11539,0,0 11589,0,0 11636,0,0 11681,0,0 11690,0,0 11704,1,@5783 11722,1,@5784 11775,0,0 11829,0,0 11845,0,0 11852,0,0 11859,0,1 11866,0,0 11873,0,0 11884,0,0 11946,0,0 11955,0,0 12034,0,0 12084,0,0 12131,0,0 12176,0,0 12185,0,0 12270,0,0 12320,0,0 12367,0,0 12412,0,0 12421,0,0 12526,0,0 12535,0,0 12580,0,0 12625,0,0 12634,0,0 12679,0,0 12686,0,1 12693,0,0 12700,0,0 12711,0,0 12751,0,0 12786,0,0 12795,0,0 12802,0,0 12812,0,0 12819,0,0 12827,0,0 12848,0,@11646 12857,1,@5785 12891,0,0 12907,0,@11649 12916,1,@5785 12928,0,0 12935,0,0 12946,0,0 12962,0,0 13024,0,0 13033,0,0 13112,0,0 13162,0,0 13209,0,0 13254,0,0 13263,0,0 13348,0,0 13398,0,0 13445,0,0 13490,0,0 13499,0,0 13604,0,0 13613,0,0 13658,0,0 13703,0,0 13712,0,0 13754,0,0 13764,0,0 13771,0,0 13782,0,0 13835,0,0 13905,0,0 13940,0,0 13949,0,0 13956,0,0 13966,0,0 13973,0,0 13981,0,0 14046,0,0 14055,0,0 14134,0,0 14184,0,0 14231,0,0 14276,0,0 14285,0,0 14370,0,0 14420,0,0 14467,0,0 14512,0,0 14521,0,0 14626,0,0 14635,0,0 14715,0,0 14760,0,0 14769,0,0 14808,0,0 14818,0,0 14825,0,0 14836,0,0 14904,0,0 14913,0,0 14992,0,0 15042,0,0 15089,0,0 15134,0,0 15143,0,0 15228,0,0 15278,0,0 15325,0,0 15370,0,0 15379,0,0 15484,0,0 15493,0,0 15573,0,0 15618,0,0 15627,0,0 15666,0,0 15676,0,0 15683,0,0 15694,0,0 15762,0,0 15771,0,0 15850,0,0 15900,0,0 15947,0,0 15992,0,0 16001,0,0 16086,0,0 16136,0,0 16183,0,0 16228,0,0 16237,0,0 16342,0,0 16351,0,0 16419,0,0 16471,0,0 16516,0,0 16525,0,0 16532,0,0 16539,0,0 16549,0,0 16560,0,0 16600,0,0 16640,0,0 16650,0,0 16657,0,0 16664,0,0 16669,0,0 16709,0,0 16744,0,0 16753,0,0 16760,0,0 16770,0,0 16777,0,0 16785,0,0 16847,0,0 16856,0,0 16935,0,0 16985,0,0 17032,0,0 17077,0,0 17086,0,0 17171,0,0 17221,0,0 17268,0,0 17313,0,0 17322,0,0 17427,0,0 17436,0,0 17469,0,0 17523,0,0 17568,0,0 17577,0,0 17584,0,0 17591,0,0 17601,0,0 17612,0,0 5773:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@946|68,0,0 5774:D3,644|3b650c7305ff552ccd018b3889fe83ff0b75378b7804f7c70100000075268b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3b801000000c389f783fe070f85fb0100008b50048b78088b700c83ff010f85e40000008b0e89cf83f907752b8b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937e99000000089f983ff0575288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb6189cf83f90375288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb3283ff0175288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb05bf010000008b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910c38b3f8b1e89d983fb07752b8b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931e99000000089cb83f90575288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb6189d983fb0375288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb3283f90175288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb05b9010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c383ff0975278b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3b801000000c3f400|@11647,1,@947|61,0,0 69,0,0 144,0,0 194,0,0 241,0,0 286,0,0 295,0,0 374,0,0 424,0,0 471,0,0 516,0,0 525,0,0 629,0,0 637,0,0 5775:D3,160|3b650c7305ff552ccd0950536a01f64424040175398b7c24048b0789ffff77048b54240cff128b7c240489fb83ff01750489c2eb07e87a00000089c25e891424897424043b650c7303ff552cebc05fff74240c57f644240401753b8b7424048b3e89f6ff76048b078b542410ff128b7c240489fb83ff01750489c2eb07e89600000089c25e891424897424043b650c7303ff552cebbe5883c40cc20400f40000|@11648,1,@950|54,1,@5776 126,1,@5777 5776:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@948| 5777:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@949| 5778:D3,112|3b650c7305ff552ccd018b3089f783fe0375278b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c383ff0b75278b780c8b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3b801000000c3f4000000|@11650,1,@951|51,0,0 95,0,0 103,0,0 5779:D3,160|3b650c7305ff552ccd0950536a01f644240401753b8b7424048b3e89f6ff76048b078b54240cff128b7c240489fb83ff01750489c2eb07e87800000089c25e891424897424043b650c7303ff552cebbe5fff74240c57f644240401753b8b7424048b3e89f6ff76048b078b542410ff128b7c240489fb83ff01750489c2eb07e89400000089c25e891424897424043b650c7303ff552cebbe5883c40cc20400f4|@11648,1,@954|56,1,@5780 128,1,@5781 5780:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@952| 5781:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@953| 5782:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@955| 5783:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@956| 5784:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@957| 5785:D3,160|3b650c7305ff552ccd0950536a01f644240401753b8b7424048b3e89f6ff76048b078b54240cff128b7c240489fb83ff01750489c2eb07e87800000089c25e891424897424043b650c7303ff552cebbe5fff74240c57f644240401753b8b7424048b3e89f6ff76048b078b542410ff128b7c240489fb83ff01750489c2eb07e89400000089c25e891424897424043b650c7303ff552cebbe5883c40cc20400f4|@11648,1,@960|56,1,@5786 128,1,@5787 5786:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@958| 5787:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@959| 5788:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@962|66,0,0 5789:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@963|66,0,0 5790:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@964|68,0,0 5791:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@965|68,0,0 5792:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@966|219,0,0 5793:D3,624|3b650c7305ff552ccd0950538b7c240489fe83ff0175478b3c2489fe83ff01751f8d6424088b742404bfac3966b18b1789168b7f04897e04b801000000c204008b7c240c89f689378d642404c7470401000000b80100000083c404c2040089f689f7ff3689ff89f8ff77048b7c240889fe83ff01751f8d64240c8b7c240889c089078d642404c7470401000000b801000000c2040089f689f7ff3689ff89fbff77048b74240c89f73b7424040f85a40000006a016a01548b4424148b5c240ce83cffffff5f5e8b5424083bd7751c8d6424148b7c24088b142489178d642404897704b801000000c204008b14243bd78d642404751f8d64240c8b7c240c8b142489178d642404897704b80100000083c404c204008d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7c240c8937c7470401000000b80100000083c408c2040089ff3b7c24040f8d860000008d6424086a016a01548b44240ce88cfeffff5f5e3b3c248d64240475068d642408eb4783fe03743e8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7c240c8937c7470401000000b80100000083c408c204008d6424088b7c24088b342489378d642404c7470401000000b801000000c204006a016a01548b5c240ce80afeffff5f5e3b3c248d64240475068d64240ceb4783fe03743e8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7c24148937c7470401000000b80100000083c410c204008d64240c8b7c240c8b342489378d642404c7470401000000b80100000083c404c20400f40000|@11660,1,@967|42,0,@10070 57,0,0 79,0,0 84,0,0 137,0,0 142,0,0 227,0,0 266,0,0 327,0,0 332,0,0 441,0,0 446,0,0 476,0,0 481,0,0 571,0,0 576,0,0 606,0,0 611,0,0 5794:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@968|219,0,0 5795:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@969|219,0,0 5796:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@970|219,0,0 5797:D3,124|3b650c7305ff552ccd09f6c30175698b13ff7304a8017556ff308b78048b34243bf2750c8d64240489f85be9d0ffffff8b34243bf27d2d89f8e8c2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c404c38d6424045be992ffffff8d642404b801000000c3c3f40000|@11662,1,@973|115,0,0 5798:D3,1100|3b650c7305ff552ccd058b780489fe83ff037d06b8b4ab66b1c38b0889cff6c1010f85df03000089f9ff318b7904ff710883ee0256710e8d64240cb8f80466b18b5d04ff238b0c2489ce83f9017d0e8d64240cbe2cb566b1e9ac02000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a401000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf7402c0b08b17ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf7402c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70638d566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70758d566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70674d566b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70794d566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe83ff017506b804d666b1c389d783fa037d06b8b4ab66b1c383fe037506b848d666b1c383ff037d06b8b4ab66b1c3b88cd666b1c3f40000|@11711,1,@981|21,0,@11331 60,0,@9455 84,0,@11421 105,0,@9455 167,0,@11421 188,0,@9455 233,0,@4673 258,0,@9455 303,0,@4673 342,0,@11424 379,0,@10448 414,0,@11686 449,0,@10448 484,0,@11428 557,0,@10448 592,0,@11688 627,0,@10448 662,0,@11428 735,0,@10448 770,0,@11690 808,0,@11431 844,0,0 851,0,0 858,0,1 864,0,0 897,0,0 934,0,@10448 969,0,@11692 1005,0,0 1012,0,0 1019,0,1 1025,0,0 1038,0,@11331 1051,0,@11699 1064,0,@11331 1075,0,@11703 1086,0,@11331 1092,0,@11707 5799:D3,548|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3083ea02710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b84cd466b1ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077cd466b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@11685,1,@980|21,0,@11331 34,0,@9455 76,0,@4674 83,0,@11674 158,0,@9771 165,0,1 173,0,@9772 180,0,1 188,0,@9773 195,0,1 202,0,0 247,0,@11374 284,0,@10625 319,0,@11377 355,0,0 362,0,1 369,0,3 375,0,0 414,0,0 451,0,@10448 486,0,@11677 522,0,0 529,0,0 536,0,1 542,0,0 5800:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700984e2fb1c3f4000000|@9475,1,@978|43,0,@5801 5801:D3,144|3b650c7305ff552ccd0589c68b46048b7a048b7f048b1e83f8017f07b8d0d366b1eb0657e87b000000e80202000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70730d466b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@11673,1,@977|29,0,@11666 37,1,@5802 42,1,@5803 79,0,@11672 115,0,0 122,0,0 129,0,1 135,0,0 5802:D3,376|3b650c7305ff552ccd0950f6c3010f85540100008b3bff73048b342483fe01756d8d6424048b142489d683fa01750c8d642404b8d0d366b1c204008b5424088b45008d40f43b45087305ff5528cdc4894500c740fc0200000089f68970048d6424048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c204008b54240489d683fa01750c8d642408b8d0d366b1c204008b54240c8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089f68970048938ff1289c7578b44240883e802710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e80cffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201a66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301a66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c204008d642404b801000000c20400f4000000|@11667,1,@975|52,0,@11666 133,0,0 158,0,@11666 221,0,@9455 277,0,@9794 312,0,@9795 365,0,0 5803:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8fcd366b1c3f4|@11671,1,@976|66,0,@11668 5804:D3,20|3b650c7305ff552ccd01bf5c02c0b08b17ff22f4|@11676,1,@979|11,0,@4670 5805:D3,444|3b650c7305ff552ccd0953be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c240483ff017d098d642408e9700100008b7c240481ffffffff010f8d5c0100008b7c240489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b805000000f3ab568b7c2404c707010000006a016a016a01ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742424ff742418ff742418ff742418ff742418ff742418ff742418575652515350ff74245cb8010000008d5c2450e8d40000008d6424285f8b3f83ff030f8593000000ff3424ff742438ff742438ff742438ff742438ff742438ff742438ff7424388b7424388b5424348b4c24308b5c242c8b44242889442428b801000000895c242c8b5c241c894c243089542434897424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c8b7c2414897c24508b7c2418897c245483c424e965feffff8d6424248d642404b801000000c230008d642408b8383066b18b5d04ff23f40000|@11729,1,@986|12,0,0 69,0,16777215 129,0,2 142,0,0 239,0,0 248,1,@5806 324,0,0 420,0,0 432,0,@9964 5806:D3,2600|3b650c7305ff552ccd0950538b7c24408b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c24408b7424048b7c77fe83ff050f85630200008b7c24408b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8003566b18b5d04ff238b7c24408b742404c74477fe030000008b7c243c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8a43266b18b5d04ff238b7c243c8b7424048b7c77fe8b7424388b56fcc1e208c1ea0783ca018b7424043bf2720e8d642408b8783266b18b5d04ff238b7424388b542404ff7456fe8b7424388b56fcc1e208c1ea0783ca018b7424083bf2720e8d64240cb8783266b18b5d04ff238b7424388b542408ff7456fe8b3f8b37ba1c532fb181c2280100008d54b2fcffe2e933000000909090e978000000909090e9bd000000909090e9bf000000909090e9bf000000909090e901010000909090e9210100009090908b77088b7f108b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9f70000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9aa000000bf01000000e9a00000008b7f04e9980000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb4e8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb268b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757e9ed02000083ff030f85920100008b7c24288b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c24288b7424048b4477fe8b7c241c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c241c8b7424048b5c77fe6a016a0154e87febffffff34248b7c242c8b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c242c8b7424108b4477fe8b7c24248b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c24248b7424108b5c77fe6a016a0154e80eebffffff34248b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8783266b18b5d04ff238b7c24288b74241c8b5477fe8b75008d76f03b75087305ff5528cd04897500c746fc030000008b0c2489cf894e088956048b4c240c890e8b4c24588b59fcc1e308c1eb0783cb018b4c241c3bcb720e8d642420b8003566b18b5d04ff238b4c24588b5c241c897459fe8b7424188b4c240c890e89560489ff897e088d642404b80100000083c41cc23800f7c701000000751c8b0f8b57048b7f085e890e895604897e08b80100000083c404c238008b7c24288b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c24288b7424048b4477fe8b7c241c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c241c8b7424048b5c77fe6a016a0154e8c9e9ffffff34248b7c242c8b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c242c8b7424108b4477fe8b7c24248b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c24248b7424108b5c77fe6a016a0154e858e9ffff5f8d6424048b74241c8b56fcc1e208c1ea0783ca018b7424103bf2720e8d642414b8783266b18b5d04ff238b74241c8b5424108b5456fe8b74240c59890e895604897e08b80100000083c410c23800f60424010f859d0000008b3c24ff378b7c2404ff7704ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff74241cff74241cff74241cff74241cff74241cff74241cff74241cff74241c575652515350ff742468ff742468ff7424788b442468bbe8d666b1e8170400008d6424205e8d6424048934243b650c7303ff552ce959ffffff8d64240c8b7c24288b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c24288b7424048b4477fe8b7c241c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c241c8b7424048b5c77fe6a016a0154e8f0e7ffffff34248b7c242c8b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c242c8b7424108b4477fe8b7c24248b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c24248b7424108b5c77fe6a016a0154e87fe7ffffff34248b7c24488b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8783266b18b5d04ff238b7c24488b74241c8b5477fe8b7c242c8b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8783266b18b5d04ff238b7c242c8b74241c8b7477fef6c2010f85c40000008b3a83fe030f858a0000008b7424288b4efcc1e108c1e90783c9018b74241c3bf1720e8d642420b8783266b18b5d04ff238b7424288b4c241c8b744efef7c601000000751c8b363bfe7502eb123bfe740e8d642420b8c4d766b18b5d04ff23eb328b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8003566b18b5d04ff238b7c24288b74241c895477feeb2d83fe01750e8d642420b80cd866b18b5d04ff238b363bfe7502eb123bfe740e8d642420b838d866b18b5d04ff23eb008b7c24588b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8783266b18b5d04ff238b7c24588b74241c8b7477fef7c60100000075568b3eff76088b74242c8b56fcc1e208c1ea0783ca018b7424203bf2720e8d642424b8783266b18b5d04ff238b74242c8b5424208b7456fef7c601000000750e8d642424b864d866b18b5d04ff238b742410e9840000008b7c24588b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8003566b18b5d04ff238b7c24588b74241cc74477fe010000008b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642420b8783266b18b5d04ff238b7c24288b74241c8b7c77fe8b7424188b54240c8916897e045f897e08b80100000083c41cc238003bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff0375065f8b3424eb138d6424048b7c2424c70703000000e912ffffff3bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff0375a0eba8f400|@11728,1,@985|41,0,@9988 100,0,@10015 121,0,1 154,0,@9990 204,0,@9988 254,0,@9988 280,0,@5806 387,0,0 464,0,0 507,0,0 559,0,0 630,0,0 670,0,0 720,0,@9988 770,0,@9988 797,1,@5793 833,0,@9988 883,0,@9988 910,1,@5793 946,0,@9988 1039,0,@10015 1083,0,0 1119,0,0 1158,0,@9988 1208,0,@9988 1235,1,@5793 1271,0,@9988 1321,0,@9988 1348,1,@5793 1386,0,@9988 1421,0,0 1564,0,@11712 1569,1,@5807 1631,0,@9988 1681,0,@9988 1708,1,@5793 1744,0,@9988 1794,0,@9988 1821,1,@5793 1857,0,@9988 1907,0,@9988 1977,0,@9988 2023,0,@11718 2063,0,@10015 2096,0,@11721 2122,0,@11723 2162,0,@9988 2225,0,@9988 2259,0,@11725 2306,0,@10015 2327,0,0 2360,0,@9988 2399,0,0 2414,0,1 2467,0,0 2474,0,0 2481,0,0 2506,0,1 2520,0,1 2573,0,0 2580,0,0 2587,0,0 5807:D3,836|3b650c7305ff552ccd09506a016a016a0153ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444ff74241cff74241cff74241cff74241cff74241cff74241cff74241cff74241c5756525153508b5424588b4424688d5c245cff128d6424248b0424ff742404ff74240c6a016a018b7c242c578d5c2404e8b9020000ff3424ff7424086a016a018b7c2438578b44241c8d5c2404e8e8030000ff3424ff7424088b7c246c8b77fcc1e608c1ee0783ce018b7c243c3bfe720e8d642438b8783266b18b5d04ff238b7c246c8b74243c8b5477fef644242401755d8b7c24248b37f6c201751c8b3a3bf77502eb123bf7740e8d642438b814d766b18b5d04ff23eb348b74246c8b56fcc1e208c1ea0783ca018b74243c3bf2720e8d642438b8003566b18b5d04ff238b74246c8b54243c89ff897c56feeb008b7c24688b77fcc1e608c1ee0783ce018b7c243c3bfe720e8d642438b8783266b18b5d04ff238b7c24688b74243c8b4477fe6a016a01548b5c2420e8cbe2ffff5f8d6424048b7424688b56fcc1e208c1ea0783ca018b74243c3bf2720e8d642438b8003566b18b5d04ff238b7424688b54243c897c56fe8b7c24648b77fcc1e608c1ee0783ce018b7c243c3bfe720e8d642438b8783266b18b5d04ff238b7c24648b74243c8b4477fe6a016a01548b5c241ce854e2ffff5f8d6424048b7424648b56fcc1e208c1ea0783ca018b74243c3bf2720e8d642438b8003566b18b5d04ff238b7424648b54243c897c56fe8b7c24608b77fcc1e608c1ee0783ce018b7c243c3bfe720e8d642438b8783266b18b5d04ff238b7c24608b74243c8b4477fe6a016a01548b5c2410e8dde1ffff5f8d6424048b7424608b56fcc1e208c1ea0783ca018b74243c3bf2720e8d642438b8003566b18b5d04ff238b7424608b54243c897c56fe8b7c245c8b77fcc1e608c1ee0783ce018b7c243c3bfe720e8d642438b8783266b18b5d04ff238b7c245c8b74243c8b4477fe6a016a01548b5c240ce866e1ffff5f8d6424088b7424588b56fcc1e208c1ea0783ca018b7424383bf2720e8d642434b8003566b18b5d04ff238d6424348b7424248b542404897c56feb801000000c24400f40000|@11717,1,@984|155,1,@5808 184,1,@5809 224,0,@9988 280,0,@11714 320,0,@10015 374,0,@9988 405,1,@5793 443,0,@10015 493,0,@9988 524,1,@5793 562,0,@10015 612,0,@9988 643,1,@5793 681,0,@10015 731,0,@9988 762,1,@5793 800,0,@10015 826,0,0 5808:D3,312|3b650c7305ff552ccd095053f64424040175278b74240489f7ff3689ff8b47046a016a018b7c2418578d5c2404e8ceffffff5a5e8b7c2410eb1b5ebf943966b18b1789168b7f04897e04b80100000083c404c20400f7c701000000751f8b1f8b4f043b1c247507bf03000000eb1389cf3b650c7305ff552ccdc4ebd9bf0100000083ff03755b83fe01751d8d6424045f8b342489378d642404c7470401000000b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b80100000083c404c2040083fa0175198d6424045e89168b3c24897e048d642404b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b80100000083c404c20400f400|@11713,1,@982|60,0,@10068 75,0,0 104,0,1 125,0,0 156,0,0 161,0,0 215,0,0 248,0,0 300,0,0 5809:D3,312|3b650c7305ff552ccd095053f64424040175278b74240489f7ff3689ff8b47046a016a018b7c2418578d5c2404e8ceffffff5a5e8b7c2410eb1b5ebf943966b18b1789168b7f04897e04b80100000083c404c20400f7c701000000751f8b1f8b4f043b1c247507bf03000000eb1389cf3b650c7305ff552ccdc4ebd9bf0100000083ff03755b83fe01751d8d6424045f8b342489378d642404c7470401000000b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b80100000083c404c2040083fa0175198d6424045e89168b3c24897e048d642404b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b80100000083c404c20400f400|@11713,1,@983|60,0,@10068 75,0,0 104,0,1 125,0,0 156,0,0 161,0,0 215,0,0 248,0,0 300,0,0 5810:D3,1040|3b650c7305ff552ccd09508b53fcc1e208c1ea0783ca018b342489f73bf2720e8d642404b8a43266b18b5d04ff2389ff8b747bfeff368b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642408b8783266b18b5d04ff238b74243c89d289d7ff7456fe8b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d64240cb8783266b18b5d04ff238b74243c89d289d7ff7456fe8b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642410b8783266b18b5d04ff238b74243c89d289d7ff7456fe8b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642414b8783266b18b5d04ff238b74243c89d289d7ff7456fe8b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d642418b8783266b18b5d04ff238b74243c89d289d7ff7456fe8b74243c8b76fcc1e608c1ee0783ce0189ff89fa3bfe720e8d64241cb8783266b18b5d04ff238b7c243c89d289d6ff7457fe8b7c243c8b57fcc1e208c1ea0783ca0189f689f73bf2720e8d642420b8783266b18b5d04ff238b74243c89ff8b4c7efe8b7424388b56fcc1e208c1ea0783ca0189ff89fe3bfa720e8d642420b8783266b18b5d04ff238b7c243889f68b7c77fe83ff017507bf01000000eb028b3f576a016a016a018b7c24448b7424408b54243c575652ff742428ff742424ff74242c518b4424288d5c241ce824020000ff3424bf010000008b742410f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd08b742420f7c6010000000f85810000008b068b56048b4c24488b49fcc1e108c1e90783c9013bc1720e8d642434b8783266b18b5d04ff238b4c24488b4c41fe89fb83eb0103cb710e8d642434b8f80466b18b5d04ff238b5c24488b5bfcc1e308c1eb0783cb013bc3720e8d642434b8003566b18b5d04ff238b5c2448894c43fe89d63b650c7305ff552ccdc0e973ffffff8b7c243c8b57fcc1e208c1ea0783ca018b74243089f73bf2720e8d642434b8783266b18b5d04ff238b74243c89ff8b747efe83fe017507be01000000eb1e8b168b75008d76f83b75087305ff5528cd84897500c746fc010000008916568b74243c8b56fcc1e208c1ea0783ca0189ff89fe3bfa720e8d642438b8783266b18b5d04ff238b7c243c89f68b7c77fe83ff017507bf01000000eb1e8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937578b4424308b5c2424e84ee0ffff89c7576a016a01548b4424308b5c242ce8cddaffff5f8d6424048b45008d40d83b45087305ff5528cd80894500c740fc090000008978208b7c242c89781c8b7c24048978188b7c24088978148b7c24308978108b7c242889780c8b3c248978088d64240c8b3c248978048d6424048b7c2428893883c430c23400f4000000|@11737,1,@1002|37,0,@9990 83,0,@9988 133,0,@9988 183,0,@9988 233,0,@9988 283,0,@9988 333,0,@9988 383,0,@9988 431,0,@9988 456,0,0 508,1,@5811 516,0,0 547,0,@9455 618,0,@9988 649,0,@9455 683,0,@10015 748,0,@9988 773,0,0 839,0,@9988 864,0,0 910,1,@5797 931,1,@5793 5811:D3,240|3b650c7305ff552ccd0953a8010f85bd000000ff30ff70046a016a016a01ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b44242c8d5c2420e8b0ffffff8d6424045e5a598d6424048b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937ff342457ff7424208b7424208b5424108b4c24308b5c242c8b4424288944241c8b442408895c24208b5c2404894c2424895424288974242c8b3c24897c24308b7c2414897c241883c418e9380000008d6424145e8b5424088b7c2404c70601000000895604897e08b801000000c21c00f40000|@11273,1,@1001|200,1,@5812 219,0,0 230,0,0 5812:D3,3652|8dbc2458ffffff3b7d0c7305ff5530cd0950ff33ff7304ff73086a016a016a016a016a016a018b44242489e3e8a788ffff8b442408ff74240cff742414ff74241ce8120e000089c7578b442404e8620e000089c757ff7424046a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e8980e000089c25e891424897424043b650c7303ff552cebcfff3424ff74240c6a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e8560f000089c25e891424897424043b650c7303ff552cebcf588b5c2464e8e8ddffff89c7578b442424e82410000089c7578b442424e87810000089c757ff7424046a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e8b210000089c25e891424897424043b650c7303ff552cebcfff3424ff74240c6a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e87011000089c25e891424897424043b650c7303ff552cebcf588b5c247ce852ddffff89c7578b4424608b5c2424e842ddffff89c7578b4424608b5c240ce832ddffff89c7576a016a01548b4424308b5c2410e8b1d7ffffff34246a016a01548b4424208b5c2418e89cd7ffffff34248bbc24880000008b3f83ff0f75326a016a01548b4424488b5c2450e879d7ffff5b8d6424046a016a01548b84248c000000e863d7ffff5f8d642404e9920000008bbc24880000008b3f83ff03752f6a016a01548b4424488b5c2450e839d7ffff5b8d6424046a016a01548b84248c000000e823d7ffff5f8d642404eb558bbc24880000008b3f83ff4775196a016a01548b4424488b5c2450e8fcd6ffff5f8d642404eb2e8bbc24880000008b3f83ff1775068b7c243ceb1a6a016a01548b84248c0000008b5c2450e8ccd6ffff5f8d642404578b3c24f7c7010000000f85920000008b1f8b77048b94249c0000008b52fcc1e208c1ea0783ca013bda72118da42490000000b8783266b18b5d04ff238b94249c0000008b545afe83c20271118da42490000000b8f80466b18b5d04ff238b8c249c0000008b49fcc1e108c1e90783c9013bd972118da42490000000b8003566b18b5d04ff238b8c249c000000895459fe89f73b650c7305ff552ccd80e962ffffff8bbc248c0000008b3fbe70682fb181c6410300008d74befcffe6e95b010000909090e9d5010000909090e941020000909090e939020000909090e931020000909090e929020000909090e921020000909090e925020000909090e911020000909090e909020000909090e901020000909090e987020000909090e9f1010000909090e9e9010000909090e9e1010000909090e9da020000909090e9d1010000909090e9c9010000909090e9c1010000909090e9b9010000909090e9b1010000909090e9a9010000909090e9a1010000909090e999010000909090e991010000909090e989010000909090e981010000909090e979010000909090e971010000909090e969010000909090e961010000909090e959010000909090e951010000909090e949010000909090e941010000909090e939010000909090e931010000909090e929010000909090e921010000909090e919010000909090e911010000909090e909010000909090e901010000909090e9f90000009090908bbc248c000000ff77048bbc2490000000ff77088bbc2494000000ff770c6a016a018b9c24bc000000548b84249c000000e875d4ffff588d6424048bbc24a4000000578b5c240ce8c30e000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977105e89770c5e8977085e897704c70701000000e9240200008bbc248c000000ff77048bbc2490000000ff77086a016a018b9c24b8000000548b842498000000e8fdd3ffff588d6424048bbc24a0000000578b5c2408e8470f000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c5e8977085e897704c70703000000e9b00100008bbc248c000000e9a40100008bbc248c000000ff77048bbc2490000000ff77088bbc2494000000ff770c6a016a018b9c24bc000000548b84249c000000e873d3ffff588d6424048bbc24a4000000578b5c240ce8b90f000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977105e89770c5e8977085e897704c7070f000000e9220100008bbc248c0000008b7f04ff77088b570889d68b1283fa01754a8b571083fa017507ba03000000eb05ba0100000083fa03752b8b4604ff37ff7704ba787066b1e8d75df9ff89c7578b3c248b3f8d147d01000000bb01000000e9b00600008d642404eb048d6424048bbc248c000000e9950600008bbc248c000000ff77048bbc2490000000ff77088bbc2494000000ff770c8bbc2498000000ff77106a016a018b9c24c0000000548b8424a0000000e874d2ffff588d642404f60424018d642404752c8b9c24a4000000e8b10f000089c78b75008d76f83b75087305ff5528cd80897500c746fc01000000893eeb05be010000008b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977105e89770c5e8977085e897704c7071f000000578bbc24900000008b3f83ff130f85050100008bbc24900000008b77048bbc24900000008b4f0c8bbc249c0000008b7ffcc1e708c1ef0783cf013bcf72118da42494000000b8a43266b18b5d04ff238bbc249c0000008b544ffe8bbc24980000008b7ffcc1e708c1ef0783cf013bcf72118da42494000000b8783266b18b5d04ff238bbc24980000008b7c4ffe83fa01753e83ff0375398bbc24980000008b7ffcc1e708c1ef0783cf013bf772118da42494000000b8003566b18b5d04ff238bbc2498000000c74477fe03000000eb4383fa03753e83ff0375398bbc24980000008b7ffcc1e708c1ef0783cf013bf772118da42494000000b8003566b18b5d04ff238bbc2498000000c74477fe03000000eb00e9b70000008bbc24900000008b3f83ff0b75226a016a018b9c24b4000000548b842494000000e8c7d0ffff5f8d642404e9ad0300008bbc24900000008b3f83ff1775798bbc24900000008b7f048b570889d68b1283fa0175418b571083fa017507ba03000000eb05ba0100000083fa03752889f78b4704ba787066b1e8655bf9ff89c7578b3c248b3f8d147d01000000bb01000000e9c80100006a016a018b9c24b4000000548b842494000000e840d0ffff5f8d642404e9b50000008b4424288b9c2484000000e892d5ffff89c7578b4424488b9c248c000000e87fd5ffff89c36a016a01548b44240ce803d0ffff5f8d6424088b75008d76ec3b75087305ff5528cd80897500c746fc040000008b94248800000089560c8b5424048956085a8d642404895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b94248400000089570489378bb4249c000000893e8b7c240c897e045f897e08b80100000081c488000000c21800f7c701000000750b8b0f8b77048b54245ceb05e933fffffff6c201751e8b028b5a043bc87507ba03000000eb1389da3b650c7305ff552ccdc6ebddba0100000083fa037505e9960000008b94249c0000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8a43266b18b5d04ff238b94249c0000008b544afe83fa0375118da42494000000b858d966b18b5d04ff2383fa0175118da42494000000b8a4d966b18b5d04ff238b9424980000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8003566b18b5d04ff238b942498000000c7444afe0300000089f73b650c7305ff552ccd80e90fffffff83fa157d0b8d642404bf01000000eb2989d983c108bfd0d966b18d7704d1e98b3c248d3c0f33c983c10a3bc9f3a6752f8d642404bf0300000083ff037502eb626a016a018b9c24b4000000548b842494000000e838ceffff5f8d642404eb3089de83c60289d783ef0271118da42498000000b8f80466b18b5d04ff2389f389fa3b650c7305ff552ccd0ce971fffffff7c701000000750b8b0f8b77048b54245ceb05e97bfefffff6c201751e8b028b5a043bc87507ba03000000eb1389da3b650c7305ff552ccdc6ebddba0100000083fa037505e9960000008b94249c0000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8a43266b18b5d04ff238b94249c0000008b544afe83fa0375118da42494000000b858d966b18b5d04ff2383fa0175118da42494000000b8a4d966b18b5d04ff238b9424980000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8003566b18b5d04ff238b942498000000c7444afe0300000089f73b650c7305ff552ccd80e90ffffffff7c701000000750b8b0f8b77048b54245ceb05e9c2fcfffff6c201751e8b028b5a043bc87507ba03000000eb1389da3b650c7305ff552ccdc6ebddba0100000083fa037505e9960000008b94249c0000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8a43266b18b5d04ff238b94249c0000008b544afe83fa0375118da42494000000b858d966b18b5d04ff2383fa0175118da42494000000b8a4d966b18b5d04ff238b9424980000008b52fcc1e208c1ea0783ca013bca72118da42494000000b8003566b18b5d04ff238b942498000000c7444afe0300000089f73b650c7305ff552ccd80e90fffffffe915faffff83fa157d0b8d642404bf01000000eb2d89d983c108bfd0d966b18d7704d1e98b3c248d3c0f33c983c10a3bc9f3a60f85ad0000008d642404bf0300000083ff030f858b0000006a016a018b9c24bc000000548b84249c000000e8bccbffff588d6424048bbc24a4000000578b5c2408e8d609000089c78b75008d76e83b75087305ff5528cd80897500c746fc05000000c7461001000000897e0c8b7c2408897e085f897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70717000000eb0b8d64240c8bbc248c000000e91affffff89de83c60289d783ef0271118da424a0000000b8f80466b18b5d04ff2389f389fa3b650c7305ff552ccd0ce9effefffff4|@11736,1,@1000|45,1,@5772 66,1,@5813 78,1,@5814 116,1,@5815 174,1,@5816 204,1,@5797 216,1,@5817 228,1,@5818 266,1,@5819 324,1,@5820 354,1,@5797 370,1,@5797 386,1,@5797 407,1,@5793 428,1,@5793 463,1,@5793 485,1,@5793 527,1,@5793 549,1,@5793 588,1,@5793 636,1,@5793 697,0,@9988 730,0,@9455 770,0,@10015 817,0,@5812 1235,1,@5793 1257,1,@5821 1306,0,0 1355,1,@5793 1377,1,@5822 1422,0,1 1493,1,@5793 1515,1,@5823 1564,0,7 1607,0,1 1614,0,0 1632,0,@10875 1637,1,@5068 1657,0,0 1748,1,@5793 1775,1,@5824 1812,0,0 1859,0,15 1933,0,@9990 1984,0,@9988 2045,0,@10015 2065,0,1 2112,0,@10015 2132,0,1 2177,1,@5793 2236,0,1 2243,0,0 2258,0,@10875 2263,1,@5068 2283,0,0 2312,1,@5793 2338,1,@5797 2357,1,@5797 2373,1,@5793 2494,0,0 2546,0,1 2567,0,0 2612,0,@9990 2645,0,@11730 2667,0,@11733 2707,0,@10015 2727,0,1 2758,0,0 2770,0,@11735 2801,0,1 2832,1,@5793 2863,0,@9455 2930,0,1 2951,0,0 2996,0,@9990 3029,0,@11730 3051,0,@11733 3091,0,@10015 3111,0,1 3171,0,1 3192,0,0 3237,0,@9990 3270,0,@11730 3292,0,@11733 3332,0,@10015 3352,0,1 3388,0,0 3400,0,@11735 3435,0,1 3468,1,@5793 3490,1,@5825 3525,0,0 3581,0,11 3623,0,@9455 5813:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@987|66,0,0 5814:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@988|66,0,0 5815:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@989|219,0,0 5816:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@990|219,0,0 5817:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@991|68,0,0 5818:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@992|68,0,0 5819:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@993|219,0,0 5820:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@994|219,0,0 5821:D3,232|3b650c7305ff552ccd09a8010f85ca0000008b308b40043bf37507bf01000000eb718b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe83ff01751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb2883ff05751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff01750d8b74240489742404e95bffffffff378b7c240857e84fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@995|28,0,0 55,0,@9990 143,0,0 221,0,0 5822:D3,232|3b650c7305ff552ccd09a8010f85ca0000008b308b40043bf37507bf01000000eb718b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe83ff01751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb2883ff05751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff01750d8b74240489742404e95bffffffff378b7c240857e84fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@996|28,0,0 55,0,@9990 143,0,0 221,0,0 5823:D3,232|3b650c7305ff552ccd09a8010f85ca0000008b308b40043bf37507bf01000000eb718b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe83ff01751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb2883ff05751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff01750d8b74240489742404e95bffffffff378b7c240857e84fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@997|28,0,0 55,0,@9990 143,0,0 221,0,0 5824:D3,196|3b650c7305ff552ccd09a8010f85a80000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c73fe83ff01751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb2883ff05751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff017505e976ffffffff37e86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@11291,1,@998|40,0,@9990 124,0,0 187,0,0 5825:D3,232|3b650c7305ff552ccd09a8010f85ca0000008b308b40043bf37507bf01000000eb718b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe83ff01751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb2883ff05751e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff01750d8b74240489742404e95bffffffff378b7c240857e84fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@999|28,0,0 55,0,@9990 143,0,0 221,0,0 5826:D3,1140|3b650c7305ff552ccd0950538b3c248b7ffcc1e708c1ef0783cf01578b3c2483ff017d068d64240ceb5e8b3c2481ffffffff017d4f8b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c24088b7ffcc1e708c1ef0783cf01be01000000eb0e8d64240cb8383066b18b5d04ff233bf772178b7c240c8b7ffcc1e708c1ef0783cf01576a016a01eb518b5424088b5472fe8b520c83fa03752e8b14248b52fcc1e208c1ea0783ca013bf2720e8d642410b8003566b18b5d04ff238b1424c74472fe03000000eb0089f283c20289d63b650c7305ff552ccdc0eb948b3c243b7c24080f82830000008d6424045f83c40457f604240174098d642404e94b0200008b7c240883ff017d068d642414eb528b7c240881ffffffff017d428b7c240889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c2404e99f0100008d642414b8383066b18b5d04ff238b3c2483c702578b7424048b7c241c8b7477fe8b7e04ff761c57ff742410f644240401752a8b7c24048b3f8b742404ff76048b47086a016a01548b5c2418e803bfffff5e8d642404bf01000000eb1d5e8b5424088954240c897424103b650c7303ff552c83c40ce904fffffff7c6010000000f859f0000008b1e8b56048b4c24288b49fcc1e108c1e90783c9013bd9720e8d642430b8a43266b18b5d04ff238b4c24288b4c59fe8b09f6c101750489f9eb528b4c24208b49fcc1e108c1e90783c9013bd9720e8d642430b8783266b18b5d04ff238b4c24208b4c59fe83f903750489f9eb1f8b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0e955ffffffbe0100000089faf6c20175288b5a0489f183c102710e8d642430b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd38b5424343bf27e258b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893aeb048b5424045e891424897424043b650c7303ff552ce98dfefffff7c701000000750a8b37ff7704e9a8000000ff742404f6042401752f8b3c248b078b3c24ff77048b7c2424ff742410ff74240c578b5c2424e82c0100005e8934243b650c7303ff552cebcb8d64240c8b3c248b77fcc1e608c1ee0783ce0183fe01750c8d642410b8e43c66b1c2040089f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d089f15e89c7d1e9f3a58060ffbf83c40cc20400f7c601000000757e8b1eff76048b5424088b52fcc1e208c1ea0783ca013bda720e8d642420b8783266b18b5d04ff238b5424088b545afe83c202710e8d642420b8f80466b18b5d04ff238b4c24088b49fcc1e108c1e90783c9013bd9720e8d642420b8003566b18b5d04ff238b4c2408895459fe5a89d63b650c7305ff552ccdc0e97affffff5e89f73b650c7305ff552ccd80e9aefefffff40000|@11746,1,@1008|47,0,16777215 102,0,0 126,0,0 137,0,@9964 213,0,@10015 229,0,1 312,0,16777215 368,0,0 389,0,@9964 461,1,@5793 471,0,0 548,0,@9990 601,0,@9988 678,0,0 704,0,@9455 856,1,@5827 903,0,@10109 958,0,0 1023,0,@9988 1050,0,@9455 1084,0,@10015 5827:D3,496|3b650c7305ff552ccd0989c753b801000000f7c7010000000f859c0000008b0f8b77048b14248b5afcc1e308c1eb0783cb013bcb720e8d642404b8a43266b18b5d04ff2389d28b544afe8b12f6c201750489c2eb528b5424108b52fcc1e208c1ea0783ca013bca720e8d642404b8783266b18b5d04ff238b5424108b544afe83fa03750489c2eb1f8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81e958ffffffbf0100000089c6f7c60100000075288b4e0489fa83c202710e8d642404b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd0578b7c2410578b5c2408e804010000bbb8da66b1e83edffbff89c78b54240c8b34242bf28d642404710e8d642404b8f80466b18b5d04ff2383c601f7c7010000000f85aa0000008b0f8b57048b1983fe017f0c8d642404b801000000c20c008b0c248b41fcc1e008c1e80783c8013bd8720e8d642404b8a43266b18b5d04ff2389c98b4c59fe8b09f6c101750e8d642404b854db66b18b5d04ff238b4c24108b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b4c2410c74459fe0300000089f183e902710e8d642404b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e94affffff8d642404b801000000c20c00f400|@11745,1,@1007|14,0,0 59,0,@9990 110,0,@9988 187,0,0 216,0,@9455 252,1,@5828 257,0,@11739 262,1,@5475 288,0,@9455 329,0,0 360,0,@9990 387,0,@11742 421,0,@10015 438,0,1 454,0,@9455 487,0,0 5828:D3,368|3b650c7305ff552ccd0953a8010f854e0100008b188b70048b3c248b7ffcc1e708c1ef0783cf013bdf720e8d642404b8a43266b18b5d04ff238b3c248b4c5ffe8b118b79048b41086a016a016a01f6c2017518891c24c7442404ffffffffc7442408ffffffffe99700000083fa077515891c24c7442404ffffffffc7442408ffffffffeb7d8b5424148b52fcc1e208c1ea0783ca013bda720e8d642410b8783266b18b5d04ff238b5424148b4c5afe83ff017507bf01000000eb3c83ff01750e8d642410b8100b66b18b5d04ff2383ffff751681f801000080750e8d642410b8680b66b18b5d04ff23d1f8d1ff99f7ff8d3c4501000000891c24894c2404897c24085a595b8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f048917578b7c240c5789f08b5c2408e8c8feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938c204008d642404b801000000c20400f40000|@10030,1,@1004|48,0,@9990 90,0,-1 98,0,-1 119,0,-1 127,0,-1 158,0,@9988 181,0,0 197,0,@9491 213,0,-1073741824 224,0,@9495 358,0,0 5829:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70040892fb1c3f4000000|@11741,1,@1006|43,0,@5830 5830:D3,68|3b650c7305ff552ccd0589d78b48048b70088b570489d38b520489df8b7f083bd17e06b803000000c33bd17d06b801000000c33bfe7e06b803000000c3b801000000c3f4|@11740,1,@1005|36,0,1 46,0,0 56,0,1 62,0,0 5831:D3,1948|3b650c7305ff552ccd0950538b7c24108b7ffcc1e708c1ef0783cf018b7424048b76fcc1e608c1ee0783ce0156ba010000008b75008d76f83b75087305ff5528cd84897500c746fc01000040891656ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089165683ff017d098d642414e9f702000081ffffffff010f8de702000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b8003b66b1f3ab56be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937c70704dc66b1be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c241483ff017d098d642420e92b0200008b7c241481ffffffff010f8d170200008b7c241489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c241883ff017d098d642424e9c20100008b7c241881ffffffff010f8dae0100008b7c241889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b8c45d66b1f3ab56be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7424208b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c242483ff017d098d642430e9160100008b7c242481ffffffff010f8d020100008b7c242489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab56ff3424b8010000008b5c2434e8cc0c00008b7c243c8b742440ff3424ff742434ff74242457ff74243cff742438ff742438ff742430ff74243856ff742434b858de66b18b5c243ce8350f00008b7c242883ff01750e8d642408bee43c66b1e9b60000008b7c242883ff017e4f8b7c242881ffffffff017d3d8b7c242889f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a01eb4c8d642434eb048d642434b888b766b18b5d04ff238d642430b8383066b18b5d04ff238d642424b8383066b18b5d04ff238d642420b8383066b18b5d04ff238d642414b8383066b18b5d04ff238b7c24303b3c247f2b8d6424048b3c248067ffbf5e83c4085f8b3f83ff0175098d642408e9c40200008d642408bb01000000eb54ff742438ff742418ff742420ff742418ff7424208b4424148b5c241ce85f61010089c78b7424048b1424897c56fe8b342483c602710e8d64243cb8f80466b18b5d04ff238934243b650c7303ff552ce978fffffff7c70100000075348b078b57048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000895904890189cb89d73b650c7305ff552ccdc8ebc483fb01750abae43c66b1e992000000bf0100000089daf6c20175288b420489f983c102710e8d642420b8f80466b18b5d04ff2389c289cf3b650c7305ff552ccdccebd381ffffffff017c0e8d642420b8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba0100000089d983f901755b8067ffbf89fa8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04893283ff017505e93c010000bf0100000089d6eb318b198b4104895c57fe89d383c302710e8d642420b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6e96ffffffff7c60100000075368b0e8b5e048b49fcc1e108c1e90783c90183e90103cf710e8d642420b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebc283ff01750abee43c66b1e9b500000081ffffffff017c0e8d642420b840e866b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a01f6c20175508b32ff72048b5efcc1e308c1eb0783cb0189d98b4424048b7c24088d7c47fed1e9f3a589df83ef018b74240403f7710e8d64242cb8f80466b18b5d04ff235989ca8934243b650c7305ff552ccd04ebab8d6424048b3c2489fe8067ffbf89f68d6424048b7c240c8b3fbb01000000f7c70100000075348b078b57048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000895904890189cb89d73b650c7305ff552ccdc8ebc483fb01750abfe43c66b1e990000000bf0100000089daf6c20175288b420489f983c102710e8d642420b8f80466b18b5d04ff2389c289cf3b650c7305ff552ccdccebd381ffffffff017c0e8d642420b8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba0100000089d983f901751e8067ffbf5a8b0a8b5424208932894a04897a08b80100000083c41cc20c008b198b4104895c57fe89d383c302710e8d642420b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebaff4|@11853,1,@1235|46,0,0 80,0,0 129,0,16777215 185,0,@10093 193,0,0 227,0,@11747 232,0,0 266,0,0 323,0,16777215 383,0,0 414,0,16777215 474,0,@10588 482,0,0 572,0,16777215 632,0,0 643,0,0 652,1,@5833 702,0,@11778 711,1,@5834 729,0,@10109 753,0,16777215 809,0,0 831,0,@11455 845,0,@9964 859,0,@9964 873,0,@9964 887,0,@9964 942,0,0 977,1,@6056 1007,0,@9455 1098,0,@10109 1108,0,0 1134,0,@9455 1161,0,16777215 1172,0,@11058 1227,0,0 1236,0,0 1282,0,0 1330,0,0 1359,0,@9455 1424,0,@9455 1455,0,@10109 1466,0,16777215 1477,0,@11851 1532,0,0 1599,0,@9455 1652,0,0 1722,0,@10109 1732,0,0 1758,0,@9455 1785,0,16777215 1796,0,@11058 1851,0,0 1860,0,0 1891,0,0 1922,0,@9455 5832:D3,1944|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b1089d68b1283fa010f85d2020000ff76048b760883ef0257710e8d642408b8f80466b18b5d04ff238b142489d783fa017d0e8d642408be2cb566b1e9a301000089ff83ef02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070cdc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70628dc66b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70744dc66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d06b8b4ab66b1c389f78b3683fe030f85a20100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060cdc66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f8dc66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c3ff77048b7f0883ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be2cb566b1e9a301000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070cdc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7066cdd66b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cdd66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@11776,1,@1009|21,0,@11331 58,0,@9455 82,0,@11421 103,0,@9455 144,0,@4670 169,0,@9455 214,0,@4670 253,0,@11424 290,0,@10448 325,0,@11748 360,0,@10448 395,0,@11428 468,0,@10448 503,0,@11750 541,0,@11431 577,0,0 584,0,0 591,0,1 597,0,0 630,0,0 667,0,@10448 702,0,@11752 738,0,0 745,0,0 752,0,1 758,0,0 771,0,@11331 798,0,@9455 839,0,@4670 878,0,@11424 915,0,@10448 950,0,@11748 985,0,@11431 1021,0,0 1028,0,0 1035,0,1 1041,0,0 1074,0,0 1111,0,@10448 1146,0,@11760 1182,0,0 1189,0,0 1196,0,1 1202,0,0 1215,0,@11331 1237,0,@9455 1261,0,@11421 1282,0,@9455 1323,0,@4672 1348,0,@9455 1393,0,@4670 1432,0,@11424 1469,0,@10448 1504,0,@11748 1539,0,@10448 1574,0,@11428 1647,0,@10448 1682,0,@11767 1720,0,@11431 1756,0,0 1763,0,0 1770,0,1 1776,0,0 1809,0,0 1846,0,@10448 1881,0,@11769 1917,0,0 1924,0,0 1931,0,1 1937,0,0 5833:D3,656|3b650c7305ff552ccd0950538b3c248b4ffcc1e108c1e90783c9018b54240489d63bd1720e8d642408b8a43266b18b5d04ff2389f689ff8b7c77fe8b3f8b37baf4982fb181c2500000008d54b2fcffe2e933000000909090e978000000909090e9bd000000909090e9bf000000909090e9bf000000909090e901010000909090e9210100009090908b77088b7f108b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9f70000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937e9aa000000bf01000000e9a00000008b7f04e9980000008b77048b7f088b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb4e8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb268b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757f60424010f85aa0000008b3c248b0789ffff77048b7c24148b7ffcc1e708c1ef0783cf013bc7720e8d642410b8783266b18b5d04ff238b7c24148b7c47fe8b75008d76f43b75087305ff5528cd81897500c746fc02000000897e048b54240c89168b5424148b52fcc1e208c1ea0783ca013bc2720e8d642410b8003566b18b5d04ff238b542414897442fef7c70100000074108b7c2414578b5c240ce892fdffffeb005e8934243b650c7303ff552ce94cffffff8d64240cb801000000c20400f40000|@11777,1,@1010|42,0,@9990 64,0,@5833 171,0,0 248,0,0 291,0,0 343,0,0 414,0,0 454,0,0 506,0,@9988 583,0,@10015 646,0,0 5834:D3,1512|3b650c7305ff552ccd09538b1c24e8e905000089c757f6042401750b8b3c24ff378b7c2404eb0c8d642408b801000000c22c00f7c701000000753aff37ff77048b7424048b168b7424408b76fcc1e608c1ee0783ce013bd6720e8d642414b8783266b18b5d04ff238b7424408b7456fee9d7040000bf010000006a016a0183ff0175168b7c24088b3f893c248b7c24088b7f04897c2404eb0e8b3f8b378934248b7f04897c2404ff34248b4424088b7c24408b77fcc1e608c1ee0783ce018b3c243bfe720e8d642418b8a43266b18b5d04ff238b7c24408b34248b7c77feff37ff77048b77108b4f148b571c8b7f2083f9017507b903000000eb05b90100000083f102516a016a015756528d5c240ce8900500005a5f89f98b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76f83b75087305ff5528cd84897500c746fc01000040891656ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c240c893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74242c8b56fcc1e208c1ea0783ca018b7424183bf2720e8d642430b8003566b18b5d04ff238b74242c8b542418897c56fe8b7c245c8b77fcc1e608c1ee0783ce018b7c24183bfe720e8d642430b8783266b18b5d04ff238b7c245c8b7424188b4477fe8b5c2434e8b00600008b5c243ce827070000ff7424106a01f64424040175708b7c2404ff378b7c2408ff7704ff742464ff74245c8b7c245c8b7424548b5424648b4c24508b5c24688b442458ff742404ff7424045756ff742430525153ff74243c50ff7424408b4424388b5c243ce8e209000089c28d6424085e8d642404891424897424043b650c7303ff552ceb895e8b7c240c8b178b7c24408b0f8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708894f0489378b7424088b368b5d008d5bf43b5d087305ff5528cdc4895d00c743fc0200000089530489338b7424388b56fcc1e208c1ea0783ca018b74241c3bf2720e8d642434b8003566b18b5d04ff238d6424188b7424208b542404897c56fe8b3c248b3fbe989b2fb181c6460300008d74befcffe6e933000000909090e97f000000909090e9a6000000909090e9ac000000909090e9b0000000909090e9f9000000909090e91d0100009090908b3c248b57085f8b7f108b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc02000000897004893883c410e9cf0000005f8b7f088b45008d40f43b45087305ff5528cd88894500c740fc02000000c7400401000000893883c410e9a00000008d642414b801000000e9920000005f8b470483c410e9860000008b3c248b7f045e8b56088b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc02000000897004893883c410eb355f8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000c7400401000000893883c410eb098d642414b801000000e8ae4d01008b3c2483ff0175088d64240489c7eb0e8b1c24e8124e010089c78d64240457ff742404ff742438ff742438ff742438ff742438ff742438ff7424388b7424388b5424348b4c24308b5c242c8b442428894424288b44241c895c242c8b5c2418894c243089542434897424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c8b7c2414897c245083c424e9b8faffff8d642424f7c60100000075498b1e8b56048b4c24108b49fcc1e108c1e90783c9013bd9720e8d642414b8783266b18b5d04ff238b4c24108b4c59fe83f901740e89d63b650c7305ff552ccdc0ebb6be01000000eb05be0300000083fe03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d642404e9a9faffff5e89f73b650c7305ff552ccd8083c404e94dfafffff400|@11845,1,@1232|15,1,@5835 44,0,0 95,0,@9988 118,0,0 202,0,@9990 245,0,1 252,0,0 272,1,@5836 339,0,0 464,0,@10015 514,0,@9988 540,1,@5837 549,1,@5838 646,1,@5839 791,0,@10015 822,0,@5834 933,0,0 1011,0,0 1030,0,0 1090,0,0 1165,0,0 1181,0,0 1186,1,@6054 1210,1,@6055 1394,0,@9988 1431,0,0 1438,0,1 5835:D3,148|3b650c7305ff552ccd09a801757cff308b40048b3c248b3f8b73fcc1e608c1ee0783ce013bfe720e8d642404b8783266b18b5d04ff238b7c7bfe83ff017507bf03000000eb05bf0100000083f70283ff03742ee8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e976ffffffb801000000c3f4000000|@9865,1,@1011|45,0,@9988 64,0,1 71,0,0 139,0,0 5836:D3,536|3b650c7305ff552ccd0950538b7c24048b17f6c20175548b32ff72048b0e89ca83f90575168b76048b168b760489ff8b7f048b4c2418e93a01000083fa03750e8b760489ff8b7f048b542414eb4e8d6424045e89ff8d6424048b1789168b7f04897e04b801000000c20c0089ff8b770483fe0175195e89ff8d6424048b1789168b7f04897e04b801000000c20c008d642408b864de66b18b5d04ff23f6c201751e8b1a8b4a043bde7507ba03000000eb1389ca3b650c7305ff552ccdc4ebddba0100000083fa0375098d642404e98f0000008b542410f6c201751e8b1a8b4a043bde7507be03000000eb1389ca3b650c7305ff552ccdc4ebddbe0100000083fe03745a83ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d6424045b8b7424108b54240c8b4c2408894c24088954240c8974241083c404e9a3feffff8d6424045e5f8b1789168b7f04897e04b801000000c20c00f6c101751e8b018b59043bc27507ba03000000eb1389d93b650c7305ff552ccdc6ebddba0100000083fa0375188d6424045e5f8b1789168b7f04897e04b801000000c20c002bfe710e8d64240cb8f80466b18b5d04ff2383c7018b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d6424045b8b7424108b54240c8b4c2408894c24088954240c8974241083c404e9eafdfffff400|@11782,1,@1012|100,0,0 135,0,0 147,0,@11779 171,0,1 192,0,0 229,0,1 250,0,0 269,0,@9455 366,0,0 388,0,1 409,0,0 435,0,0 451,0,@9455 5837:D3,108|3b650c7305ff552ccd09a80175548b388b40048b73fcc1e608c1ee0783ce013bfe720ab8783266b18b5d04ff238b7c7bfeff7704e8c7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@1013|36,0,@9988 99,0,0 5838:D3,776|3b650c7305ff552ccd095053f64424040175278b7c24048b378b7c24048b7f0483ff01750c5f8937b80100000083c404c3ba0100000089f1eb105fc70701000000b80100000083c404c3f6c10175288b410489d383c302710e8d642408b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebd35256578b7c240483ff01750b8d64240cbf01000000eb25f604240175178b3c248b178b3c248b4f04be0100000089d7e9ed0100008d6424045f83c404576a01f64424040175138b7c2404ff378b7c2408ff7704ff742414eb105f8b742404893eb80100000083c40cc3f6042401750e8b3c248b3f8b3424ff760457eb528d642404bf0300000083ff0375278b55008d52f43b55087303ff5528895500c742fc020000008b7c2408897a048b7c2404893aeb048b5424085e89542404897424083b650c7303ff552c83c404e970ffffff8b3c2483ff01750e8d642404bf01000000e9060100008b3c248b3f8b34248b76048b57048b4c24108b49043bd175098d642404e9bf0000008b1a89d883fb0175408b1983fb0175348b5a048b52088b41048b49083bd875123bd17507ba03000000eb05ba01000000eb05ba0100000083fa037402eb068d642404eb7be9c100000089c383f803752d8b1983fb0375218b52048b49043bd17507ba03000000eb05ba0100000083fa0375068d642404eb47e98d00000083fb050f85840000008b1983fb05757b8b5a048b52088b41048b49083bd875123bd17507ba03000000eb05ba01000000eb05ba0100000083fa037402eb4d8d6424048b7f088b74240c8b76083bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff0375115e8934243b650c7303ff552ce968feffff8d642408bf01000000e977feffffeb008934243b650c7303ff552ce9aefefffff7c70100000075288b470489f383c302710e8d642414b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd03b7424087d18890c2489542404897424083b650c7303ff552ce994fdffff8b7424088b542404890c2489542404897424083b650c7303ff552ce974fdfffff400|@11783,1,@1014|41,0,0 50,0,0 61,0,0 66,0,0 94,0,@9455 136,0,0 160,0,0 216,0,0 249,0,1 339,0,0 419,0,1 426,0,0 433,0,0 480,0,1 487,0,0 544,0,1 551,0,0 558,0,0 588,0,1 599,0,1 606,0,0 637,0,0 687,0,@9455 5839:D3,976|3b650c7305ff552ccd0953ff30ff742434ff742434ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c2424ff742410ff742410ff742410ff742410ff74241057565251538b5c2440e88d03000089c7578b74241889f783fe01750ab801000000e9290300008b74243cff3689ffb801000000f7c7010000000f850b0100008b37ff77048b5424548b52fcc1e208c1ea0783ca013bf2720e8d642428b8783266b18b5d04ff238b5424548b4c72fe8b1183fa030f859e0000008b51048b49088b590483fa017d218b55008d52f43b55087305ff5528cdc1895500c742fc020000008942048932eb6d8b4c24448b0983eb0103da710e8d642428b8f80466b18b5d04ff233bcb752f8b7424348b36f7c60100000075138b76048b4c243489318b742444891689c2eb2d8d642428b8e09966b18b5d04ff238b55008d52f43b55087305ff5528cdc1895500c742fc020000008942048932eb1f8b55008d52f43b55087305ff5528cdc1895500c742fc0200000089420489325e89d089f73b650c7305ff552ccd81e9e9feffff8b7c24408b3f3b3c2475218b7c24288b1f83fb01750489c7eb07e80a43010089c78b742428893ee9540100008b7c24288b1f83fb01750489c7eb07e84d43010089c7578b7c2444ff378b7c2404be01000000f7c7010000000f85080100008b17ff77048b4c245c8b49fcc1e108c1e90783c9013bd1720e8d642430b8783266b18b5d04ff238b4c245c8b5c51fe8b0b83f9030f859b0000008b4b048b5b088b430483f9017d218b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008971048911eb6a8b5c244c8b1b83e80103c1710e8d642430b8f80466b18b5d04ff233bd8752c8b54243c8b12f6c20175138b52048b5c243c89138b54244c890a89f1eb2d8d642430b8e09966b18b5d04ff238b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008971048911eb1f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089710489115a89ce89d73b650c7305ff552ccdc0e9ecfeffff8b7c24488b3f3b3c248d6424040f85b30000005f8b742428893e8b7c24408b3f3b3c24750b8d642404b801000000eb6f8b7c24408b3f8b34242bf78d642404710e8d642420b8f80466b18b5d04ff2383c6018b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707350000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b3c2489fb83ff0175078d642420c22c0089db8d6424048b7c241c897c244883c448e9c54101008934243b650c7303ff552ce907fefffff4|@11844,1,@1229|83,1,@5840 102,0,0 120,0,0 166,0,@9988 259,0,@9455 310,0,@11229 430,1,@6051 463,1,@6052 481,0,0 527,0,@9988 620,0,@9455 668,0,@11229 803,0,0 831,0,@9455 872,0,1 881,0,26 914,0,0 955,1,@6053 5840:D3,45268|8d7c24a03b7d0c7305ff5530cd09538b78048b37bae8ab2fb181c2250000008d54b2fcffe2e95b010000909090e90e020000909090e9e1020000909090e9c1030000909090e996040000909090e9a0040000909090e90e070000909090e9e9070000909090e9c1080000909090e99c090000909090e998090000909090e9780a0000909090e9210c0000909090e9f60c0000909090e9130d0000909090e9e90d0000909090e93c110000909090e9fb170000909090e9fc180000909090e9a1190000909090e9711a0000909090e94c1b0000909090e9af1c0000909090e9aa1e0000909090e935210000909090e905220000909090e904240000909090e900240000909090e9d5240000909090e9ad250000909090e988260000909090e9ae270000909090e98e280000909090e9b2290000909090e91c2b0000909090e9f42b0000909090e99d2e0000909090e9582f0000909090e930300000909090e908310000909090e9e0310000909090e9bb320000909090e960330000909090e936340000909090ff7704ff7708ff770c6a016a01ff742440ff7424288b7c24348b7424448b5424408b4c24388b5c24288b442424ff742404ff7424045756525153508b4424388d5c2428e81baf00008d6424085e588b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c74710010000005a89570c5a8d642404895708897704c707010000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000005e897304893b83fb017503c228008b3c24897c242883c428e92cb20000ff7704ff77088b7c24348b77fcc1e608c1ee0783ce018b3c243bfe720e8d64240cb8783266b18b5d04ff238b7c24348b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2444ff378b7c24488b3f83c702710e8d642424b8f80466b18b5d04ff238b742448893e8b7c24448b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742444893e8b7c24408b3fe941ab000083fe01751b8b7f04893c24c744240401000000c744240801000000e92eaa00008d642418b834e066b18b5d04ff238b7f04ff37ff7704ff7708ff770cff77108b7c24408b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642418b8783266b18b5d04ff238b7c24408b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e8b7c244c8b3fe9c3a6000083fe01751b8b7f04893c24c744240401000000c744240801000000e918a500008d642424b834e066b18b5d04ff23ff7704ff77088b7c24348b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64240cb8783266b18b5d04ff238b7c24348b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2444ff378b7c24488b3f83c702710e8d642424b8f80466b18b5d04ff238b742448893e8b7c24448b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742444893e8b7c24408b3fe9b8a1000083fe01751b8b7f04893c24c744240401000000c744240801000000e9699d00008d642418b834e066b18b5d04ff23ff77048b4708bf0100000089c6e94c9b00008b4f04ff77088b7c2424c707010000008b7c24108b3ff7c7010000000f85460200008b378b3683fe017507be03000000eb05be0100000083fe030f85220200008b7f048b742410893e8b7c24208b3f83ef04710e8d642408b8f80466b18b5d04ff238b742420893e8b7c24308b7ffcc1e708c1ef0783cf013bcf720e8d642408b8783266b18b5d04ff238b7c24308b7c4ffe8b74241c8b76fcc1e608c1ee0783ce013bce720e8d642408b8a43266b18b5d04ff238b74241c8b744efe83fe03750e8d642408b87ce066b18b5d04ff238b1789d683fa03750e8d642408b8c8e066b18b5d04ff2383fe0175088b7f04e9c70000008b7c24148b7ffcc1e708c1ef0783cf013bcf720e8d642408b8a43266b18b5d04ff238b7c24148b544ffe8b7c242c8b3f8b74242c8b3683c602710e8d642408b8f80466b18b5d04ff238b5c242c89338b7424288b1e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e0489168b54242889328b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706010000008b5424308b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b54243089744afe576a016a01ff74243cff7424248b7c24308b7424408b54243c8b4c24348b5c24248b442420ff742404ff7424045756525153508b4424348d5c2428e8fca900008d6424085e588b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008977085e8d642404897704c7070b0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000005e897304893b83fb017503c228008b3c24897c242883c428e97cad00008d642408eb048d642408b814e166b18b5d04ff23ff7704ff7708ff770cff77108b7c243c8b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8783266b18b5d04ff238b7c243c8b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c24488b3fe97e95000083fe01751b8b7f04893c24c744240401000000c744240801000000e9588d00008d642420b834e066b18b5d04ff23ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe9f589000083fe01751b8b7f04893c24c744240401000000c744240801000000e90a8700008d64241cb834e066b18b5d04ff23ff7704ff7708ff770cff77108b7c243c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642414b8783266b18b5d04ff238b7c243c8b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c24488b3fe9a483000083fe01751b8b7f04893c24c744240401000000c744240801000000e9917b00008d642420b834e066b18b5d04ff2358c228008b7f04ff37ff7704ff7708ff770cff77108b7c24408b77fcc1e608c1ee0783ce018b7c240c3bfe720e8d642418b8783266b18b5d04ff238b7c24408b74240c8b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e8b7c244c8b3fe92278000083fe01751b8b7f04893c24c744240401000000c744240801000000e9087600008d642424b834e066b18b5d04ff238b7f04ff37ff7704ff7708ff77106a016a01ff7424448b7c24388b7424348b54243c8b4c24448b5c24408b442430ff34245756525153508b4424288d5c2420e8f6a900008d642404ff3424ff7424086a016a01ff7424548b7c24488b7424448b54244c8b4c24548b5c24508b442440ff34245756525153508b4424408d5c2420e80dd700008d642404ff3424ff7424086a016a01ff742464ff74244c8b7c24588b7424688b5424648b4c245c8b5c244c8b442448ff742404ff7424045756525153508b44245c8d5c2428e81fa500008d6424088b3c24ff7424048b74245cc706010000008b75008d76e83b75087305ff5528cd80897500c746fc050000008b54241c895610c7460c010000008b5424308956088b54240c895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70717000000578b7c244083ff0175068b5c2424eb0f8b4424248b5c2440e85ed8000089c383fb0175068b7c2414eb0b8b442414e8acd8000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c43cc22800588b7c243c897c246483c464e9d1d80000ff7704ff77088b7c24348b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64240cb8783266b18b5d04ff238b7c24348b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2444ff378b7c24488b3f83c702710e8d642424b8f80466b18b5d04ff238b742448893e8b7c24448b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742444893e8b7c24408b3fe9f770000083fe01751b8b7f04893c24c744240401000000c744240801000000e9e86e00008d642418b834e066b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000005f897804c70030be66b1c22800ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b3c243bfe720e8d642410b8783266b18b5d04ff238b7c24388b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe9626b000083fe01751b8b7f04893c24c744240401000000c744240801000000e95c6300008d64241cb834e066b18b5d04ff23ff7704ff7708ff770cff77106a016a016a01ff7424488b7c243c8b7424388b5424408b4c24488b5c24448b442434ff34245756525153508b4424388d5c2420e811d700008d642404ff3424ff742408ff7424106a016a01ff74245c8b7c24508b74244c8b5424548b4c245c8b5c24588b442448ff34245756525153508b4424448d5c2420e858db00008d642404ff34248b442408f6442424017507bf902d66b1eb05bf01000000578b7c243083ff010f85850000008b7c241483ff017507bf01000000eb708b7c24608b378b7c24608b3f83c702710e8d64243cb8f80466b18b5d04ff238b542460893a8b7c245c8b178b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707050000008b54245c893a8b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937e9740100008b7c24308b0f8b7c24648b7ffcc1e708c1ef0783cf013bcf720e8d64243cb8783266b18b5d04ff238b7c24648b7c4ffe8b7424508b76fcc1e608c1ee0783ce013bce720e8d64243cb8a43266b18b5d04ff238b7424508b744efe83fe03750e8d64243cb87ce066b18b5d04ff238b1789d683fa03750e8d64243cb8c8e066b18b5d04ff2383fe0175088b7704e9c70000008b7c24488b7ffcc1e708c1ef0783cf013bcf720e8d64243cb8a43266b18b5d04ff238b7c24488b544ffe8b7c24608b378b7c24608b3f83c702710e8d64243cb8f80466b18b5d04ff238b5c2460893b8b7c245c8b1f8b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000895f0489178b54245c893a8b7d008d7ff43b7d087305ff5528cd43897d00c747fc02000000897704c707010000008b5424648b52fcc1e208c1ea0783ca013bca720e8d64243cb8003566b18b5d04ff238b542464897c4afe8b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937578b7c241883ff01750489c6eb0b8b5c2418e8e4db000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b54240489571089770c5e8d6424048977088b742414897704c7071f000000578b7c243883ff0175068b5c2404eb0f8b4424048b5c2438e8f0db000089c383fb0175068b7c2410eb0b8b442410e83edc000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c438c22800ff7704ff7708ff770c8b7c24248b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642410b8a43266b18b5d04ff238b7c24248b7424088b7c77fe83ff030f85640200006a016a016a01ff7424448b7c24388b7424348b54243c8b4c24448b5c24408b442430ff34245756525153508b44242c8d5c2420e802a400008d642404ff34248b5c24088b44240c83fb017502eb05e8e3db00008b7c24488b77fcc1e608c1ee0783ce018b7c24183bfe720e8d642420b8783266b18b5d04ff238b7c24488b7424188b7c77fe8b3f83ff050f85c60100008b7c24448b3f8b7424448b3683c602710e8d642420b8f80466b18b5d04ff238b54244489328b7424408b168b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706cc5366b18b54244089328b75008d76f43b75087305ff5528cd81897500c746fc02000000c7460403000000893e8b7c24388b178b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000897708895704c707030000008b5424488b4afcc1e108c1e90783c9018b5424183bd1720e8d642420b8003566b18b5d04ff238b5424488b4c2418897c4afe8b55008d52f43b55087305ff5528cd41895500c742fc020000008b7c2418897a04c702030000008b7c24388b3f83c702710e8d642420b8f80466b18b5d04ff238b4c243889398b7c24288b0f8b7d008d7ff43b7d087305ff5528cd47897d00c747fc02000000894f0489178b542428893a8b7c24248b178b7c24388b3f3bd77e0489d7eb008b542424893a8b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008977085e897704c7072f000000578b7c241c83ff01750489c7eb0b8b5c241ce86cda000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c41cc228008d642420b848e366b18b5d04ff236a016a016a01ff7424448b7c24388b7424348b54243c8b4c24448b5c24408b442430ff34245756525153508b44242c8d5c2420e89ea100008d642404ff3424ff742408ff7424108b7c24348b77fcc1e608c1ee0783ce018b7c24203bfe720e8d642428b8a43266b18b5d04ff238b7c24348b7424208b7c77fe8b7424508b56fcc1e208c1ea0783ca018b7424203bf2720e8d642428b8783266b18b5d04ff238b7424508b5424208b7456fe8b0e89ca83f903750e8d642428b898e366b18b5d04ff2383fa0175088b7604e9a50000008b74244c8b368b54244c8b1283c202710e8d642428b8f80466b18b5d04ff238b4c244c89118b5424488b0a8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b4c244889118b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702010000008b4c24508b59fcc1e308c1eb0783cb018b4c24203bcb720e8d642428b8003566b18b5d04ff238b4c24508b5c2420895459fe568b74241c8b3683fe070f85f00100008b74241c8b760c8b3683fe097507be03000000eb05be0100000083fe030f85cd0100008b74241cff76048b742420ff76108b74242883fe077507be07000000eb158b74242883fe097507be07000000eb05be0b000000566a016a0183ff077513bfb83966b18b378934248b7f04897c2404eb1a83ff050f8566010000bfac3966b18b378934248b7f04897c24048b3424ff7424048b7c2468ff378b7c246c8b3f83c702710e8d642448b8f80466b18b5d04ff238b54246c893a8b7c24688b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742468893e8b7c24648b07ff7424148b5c241ce81fd8000089c78b742464893e8b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424148977088b742418897704c707010000008b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240489560c8b1424895608897e048b7c2410893e8b7c24648b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742464893e8b75008d76ec3b75087303ff5528897500c746fc040000008b7c241c897e0c8b7c2410897e085f8d642404897e04c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893783c414eb138d642440b8ece366b18b5d04ff23bf01000000578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74241089770c8b7424248977088b742404897704c70721000000578b7c243083ff0175068b7c2410eb0f8b4424108b5c2430e888d7000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b5c2408eb0b8b442408e8b6d7000089c383fb0175075883c42cc22800588b7c242c897c245483c454e9fbd700008b7704ff7708ff770cff77106a016a01f7c6010000000f85d7000000ff368b7c24448b77fcc1e608c1ee0783ce018b3c243bfe720e8d64241cb8783266b18b5d04ff238b7c24448b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742454893e8b7c24508b3fe9c455000083fe01751b8b7f04893c24c744240401000000c744240801000000e95c5500008d642428b834e066b18b5d04ff23bf943966b18b378934248b7f04897c2404e9f5530000ff7704ff77086a016a01ff74243cff7424248b7c24308b7424408b54243c8b4c24348b5c24248b442420ff742404ff7424045756525153508b4424348d5c2428e8ed9600008d6424085e588b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000005a8d642404895708897704c707250000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000005e897304893b83fb017503c228008b3c24897c242883c428e9a9d60000ff77048b7c24308b77fcc1e608c1ee0783ce018b3c243bfe720e8d642408b8783266b18b5d04ff238b7c24308b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2440ff378b7c24448b3f83c702710e8d642420b8f80466b18b5d04ff238b742444893e8b7c24408b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742440893e8b7c243c8b3fe9fb4f000083fe01751b8b7f04893c24c744240401000000c744240801000000e9614f00008d642414b834e066b18b5d04ff23ff7704ff7708ff770cff77108b7c243c8b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8783266b18b5d04ff238b7c243c8b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c24488b3fe9fb4b000083fe01751b8b7f04893c24c744240401000000c744240801000000e9734a00008d642420b834e066b18b5d04ff238b4f048b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8783266b18b5d04ff238b7c242c8b7c4ffe8b7424188b76fcc1e608c1ee0783ce013bce720e8d642404b8a43266b18b5d04ff238b7424188b744efe83fe03750e8d642404b87ce066b18b5d04ff238b1789d683fa03750e8d642404b8c8e066b18b5d04ff2383fe0175088b7f04e9c70000008b7c24108b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c24108b544ffe8b7c24288b3f8b7424288b3683c602710e8d642404b8f80466b18b5d04ff238b5c242889338b7424248b1e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e0489168b54242489328b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706010000008b54242c8b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b54242c89744afe578b7c24108b178b7c24208b3f6a016a01e95b4700008b4f048b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8783266b18b5d04ff238b7c242c8b7c4ffe8b7424188b76fcc1e608c1ee0783ce013bce720e8d642404b8a43266b18b5d04ff238b7424188b744efe83fe03750e8d642404b87ce066b18b5d04ff238b1789d683fa03750e8d642404b8c8e066b18b5d04ff2383fe0175088b7704e9c70000008b7c24108b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c24108b544ffe8b7c24288b378b7c24288b3f83c702710e8d642404b8f80466b18b5d04ff238b5c2428893b8b7c24248b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f0489178b542424893a8b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000897704c707010000008b54242c8b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b54242c897c4afe8b7c241c8b3f83c704710e8d642404b8f80466b18b5d04ff238b54241c893a8b7c240c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707902d66b18b54240c893a8b7c24088b178b7c241c8b3f3bd77e0489d7eb008b542408893a8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22800ff7704ff77086a016a016a01ff7424408b7c24348b7424308b5424388b4c24408b5c243c8b44242cff34245756525153508b4424308d5c2420e89a9600008d642404ff34248b5c24088b44240c83fb01750489c7eb07e889d1000089c7578b7c2438ff378b7c24188b0f8b7c24188b57048b7c244c8b7ffcc1e708c1ef0783cf013bcf720e8d642424b8783266b18b5d04ff238b7c244c8b7c4ffe8b3f83ff050f85df0100008b7c24488b3f8b7424488b3683c602710e8d642424b8f80466b18b5d04ff238b5c244889338b5d008d5bf83b5d087305ff5528cd86895d00c743fc0100000089138b7424448b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604891e8b5c244489338b75008d76f43b75087305ff5528cd86897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd42897d00c747fc030000008977085a895704c707030000008b5424488b52fcc1e208c1ea0783ca013bca720e8d642420b8003566b18b5d04ff238b542448897c4afe8b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2414897a04c702050000008b7c24148b4f048b7c24388b3f83e90103f9710e8d642420b8f80466b18b5d04ff238b4c243889398b7c24288b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b542428893a8b7c24248b178b7c24388b3f3bd77e0489d7eb008b542424893a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742404897704c7072f000000578b7c242083ff0175068b7c2404eb0f8b4424048b5c2420e8ebcf000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c420c228008d642424b82ce466b18b5d04ff23ff77048b7c24308b77fcc1e608c1ee0783ce018b3c243bfe720e8d642408b8783266b18b5d04ff238b7c24308b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2440ff378b7c24448b3f83c702710e8d642420b8f80466b18b5d04ff238b742444893e8b7c24408b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742440893e8b7c243c8b3fe9783f000083fe01751b8b7f04893c24c744240401000000c744240801000000e9de3e00008d642414b834e066b18b5d04ff23ff77048b7f088b742420ff368b1f8b57048b7424348b76fcc1e608c1ee0783ce013bde720e8d64240cb8783266b18b5d04ff238b7424348b745efe8b3683fe050f85b30100008b742430ff368b7424348b3683c602710e8d642410b8f80466b18b5d04ff238b4c243489318b4d008d49f83b4d087305ff5528cd8c894d00c741fc0100000089118b7424308b068b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604890e8b4c243089318b75008d76f43b75087305ff5528cd8c897500c746fc020000008956045a89168b55008d52f03b55087305ff5528cdc8895500c742fc0300000089720859894a04c702030000008b4c24308b49fcc1e108c1e90783c9013bd9720e8d642408b8003566b18b5d04ff238b4c2430895459fe8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b4f048b7c24208b3f83e90103f9710e8d642408b8f80466b18b5d04ff238b4c242089398b7c24108b0f8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b542410893a8b7c240c8b178b7c24208b3f3bd77e0489d7eb008b54240c893a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707330000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c228008d64240cb82ce466b18b5d04ff2358c22800ff7704ff77088b7c24348b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64240cb8783266b18b5d04ff238b7c24348b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2444ff378b7c24488b3f83c702710e8d642424b8f80466b18b5d04ff238b742448893e8b7c24448b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742444893e8b7c24408b3fe97339000083fe01751b8b7f04893c24c744240401000000c744240801000000e9533800008d642418b834e066b18b5d04ff23ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe9f034000083fe01751b8b7f04893c24c744240401000000c744240801000000e9ce3300008d64241cb834e066b18b5d04ff23ff7704ff7708ff770cff77108b7c243c8b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8783266b18b5d04ff238b7c243c8b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c24488b3fe96830000083fe01751b8b7f04893c24c744240401000000c744240801000000e9e02e00008d642420b834e066b18b5d04ff23ff7704ff77086a016a016a01ff7424408b7c24348b7424308b5424388b4c24408b5c243c8b44242cff34245756525153508b44242c8d5c2420e8848e00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e83bca000089c7576a016a01ff742450ff7424388b7c24448b7424548b5424508b4c24488b5c24388b442434ff742404ff7424045756525153508b4424488d5c2428e8a98800008d6424088b3424ff7424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c7073d000000578b7c242c83ff0175068b7c2410eb0f8b4424108b5c242ce80bca000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c428c22800588b7c2428897c245083c450e930ca00008b7f04ff37ff7704ff7708ff770cff77108b7c24408b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642418b8783266b18b5d04ff238b7c24408b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742450893e8b7c244c8b3fe9472a000083fe01751b8b7f04893c24c744240401000000c744240801000000e99c2800008d642424b834e066b18b5d04ff238b7f04ff37ff7704ff7708ff770cff7710ff77146a016a01ff74244c8b7c24408b74243c8b5424448b4c244c8b5c24488b442438ff34245756525153508b44242c8d5c2420e862c900008d642404ff3424ff7424088b7c24548b77fcc1e608c1ee0783ce018b7c24243bfe720e8d64242cb8783266b18b5d04ff238b7c24548b7424248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2464ff378b7c24688b3f83c702710e8d642444b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742464893e8b7c24608b3fe9ed24000083fe01751b8b7f04893c24c744240401000000c744240801000000e9762300008d642438b834e066b18b5d04ff23ff7704ff7708ff770c6a016a01ff7424408b7c24348b7424308b5424388b4c24408b5c243c8b44242cff34245756525153508b44242c8d5c2420e841c800008d642404ff34248b4424088b7c240c8b378b7c240c8b5f048b7c24448b7ffcc1e708c1ef0783cf013bf7720e8d64241cb8783266b18b5d04ff238b7c24448b7c77fe8b3783fe030f85c70000008b4f048b77088b7c24348b1789df83ef0103f9710e8d64241cb8f80466b18b5d04ff232bd7710e8d64241cb8f80466b18b5d04ff2383c2018b7c241483ef0103d7710e8d64241cb8f80466b18b5d04ff238b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770c8b34248977088d6424048b742410897704c70743000000578b7c241883ff01750489c7eb0b8b5c2418e8b5cc000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c418c228008d64241c8b3f83ff01750ab864e166b18b5d04ff23b8b0e166b18b5d04ff23ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe9a11e000083fe01751b8b7f04893c24c744240401000000c744240801000000e9e91c00008d64241cb834e066b18b5d04ff238b7f04ff378b4f04ff7708ff770cff77108b7c243c8b7ffcc1e708c1ef0783cf013bcf720e8d642414b8783266b18b5d04ff238b7c243c8b7c4ffe8b7424288b76fcc1e608c1ee0783ce013bce720e8d642414b8a43266b18b5d04ff238b7424288b744efe83fe03750e8d642414b87ce066b18b5d04ff238b1789d683fa03750e8d642414b8c8e066b18b5d04ff2383fe0175088b7f04e9c70000008b7c24208b7ffcc1e708c1ef0783cf013bcf720e8d642414b8a43266b18b5d04ff238b7c24208b544ffe8b7c24388b3f8b7424388b3683c602710e8d642414b8f80466b18b5d04ff238b5c243889338b7424348b1e8b75008d76f43b75087305ff5528cd8e897500c746fc02000000895e0489168b54243489328b75008d76f43b75087305ff5528cd82897500c746fc02000000897e04c706010000008b54243c8b52fcc1e208c1ea0783ca013bca720e8d642414b8003566b18b5d04ff238b54243c89744afe578b7c2430ff376a016a01ff74244c8b7c24408b74243c8b5424448b4c244c8b5c24488b442438ff3424575652515350ff742428ff7424348b44243c8d5c2428e84aca00008d642404ff3424ff7424086a016a01ff74245c8b7c24508b74244c8b5424548b4c245c8b5c24588b442448ff34245756525153508b44244c8d5c2420e8a9ce00008d642404ff34248b7c24088b75008d76e43b75087305ff5528cd80897500c746fc060000008b54241c8956148b5424248956108b54240c89560c8b54242c8956088b542420895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70747000000578b7c243883ff0175068b5c2414eb0f8b4424148b5c2438e847d0000089c383fb0175068b7c2404eb0b8b442404e895d0000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c438c22800ff7704ff77086a016a016a01ff7424408b7c24348b7424308b5424388b4c24408b5c243c8b44242cff34245756525153508b4424308d5c2420e83f8600008d642404ff34248b5c24088b44240c83fb017502eb05e878d000008b7d008d7ff03b7d087305ff5528cd01897d00c747fc030000008b7424108977085e897704c70749000000578b7c241883ff01750489c7eb0b8b5c2418e89ad0000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c418c22800ff7704ff770cff77108b7c24388b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424048b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe91216000083fe01751b8b7f04893c24c744240401000000c744240801000000e9551400008d64241cb834e066b18b5d04ff23ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe9f210000083fe01751b8b7f04893c24c744240401000000c744240801000000e9d00f00008d64241cb834e066b18b5d04ff23ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642410b8783266b18b5d04ff238b7c24388b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe96d0c000083fe01751b8b7f04893c24c744240401000000c744240801000000e94b0b00008d64241cb834e066b18b5d04ff23ff7704ff7708ff770cff77108b7c243c8b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642414b8783266b18b5d04ff238b7c243c8b7424088b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74244c893e8b7c24488b3fe9e507000083fe01751b8b7f04893c24c744240401000000c744240801000000e95d0600008d642420b834e066b18b5d04ff23ff7704ff77086a016a01ff74243cff7424248b7c24308b7424408b54243c8b4c24348b5c24248b442420ff742404ff7424045756525153508b4424348d5c2428e8767c00008d6424085e588b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000005a8d642404895708897704c707530000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000005e897304893b83fb017503c228008b3c24897c242883c428e9a6cc0000ff7704ff7708ff770c8b7c24388b77fcc1e608c1ee0783ce018b3c243bfe720e8d642410b8783266b18b5d04ff238b7c24388b34248b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742448893e8b7c24448b3fe94f02000083fe01751b8b7f04893c24c744240401000000c744240801000000e93c0100008d64241cb834e066b18b5d04ff23ff7704ff77086a016a016a01ff7424408b7c24348b7424308b5424388b4c24408b5c243c8b44242cff34245756525153508b44242c8d5c2420e86e8000008d642404ff34248b5c24088b44240c83fb01750489c7eb07e8d1cb000089c7576a016a01ff742450ff7424388b7c24448b7424548b5424508b4c24488b5c24388b442434ff742404ff7424045756525153508b4424488d5c2428e8937a00008d6424088b3424ff7424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c70757000000578b7c242c83ff0175068b7c2410eb0f8b4424108b5c242ce8a1cb000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c428c22800588b7c2428897c245083c450e9c6cb0000ff34248b5c24088b44240c83fb01750489c7eb07e811cc000089c7576a016a01ff742454ff74243c8b7c24488b7424588b5424548b4c244c8b5c243c8b442438ff742404ff7424045756525153508b44244c8d5c2428e8a77900008d6424088b3424ff7424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54241089570c8b542424895708897704c70755000000578b7c243083ff0175068b7c2410eb0f8b4424108b5c2430e8dacb000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c42cc22800588b7c242c897c245483c454e9ffcb0000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2420e80ccb000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e96afcffffff34248b5c24088b44240c83fb01750489c7eb07e83bca000089c7576a016a016a01ff74245c8b7c24508b74244c8b5424548b4c245c8b5c24588b442448ff34245756525153508b4424448d5c2420e8947b00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e847ca000089c7576a016a01ff74246cff7424548b7c24608b7424708b54246c8b4c24648b5c24548b442450ff742404ff7424045756525153508b4424588d5c2428e8b97500008d6424088b3424ff7424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241089770c8b7424248977088b742440897704c70751000000578b7c244883ff0175068b5c2424eb0f8b4424248b5c2448e809ca000089c383fb0175068b7c2410eb0b8b442410e857ca000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c444c22800588b7c2444897c246c83c46ce97cca0000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742454893e8b7c24508b078b5c2428e889c9000089c78b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9f5fbffffff34248b5c24088b44240c83fb01750489c7eb07e8b8c8000089c7576a016a016a01ff7424588b7c244c8b7424488b5424508b4c24588b5c24548b442444ff34245756525153508b4424448d5c2420e8897700008d642404ff34248b5c24088b44240c83fb01750489c7eb07e8c4c8000089c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242889770c8b7424048977088b742418897704c7074f000000578b7c243883ff0175068b5c2418eb0f8b4424188b5c2438e8d5c8000089c383fb0175068b7c2404eb0b8b442404e823c9000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c438c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2428e808c8000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e95bfcffffff34248b5c24088b44240c83fb01750489c7eb07e837c7000089c7576a016a016a01ff7424588b7c244c8b7424488b5424508b4c24588b5c24548b442444ff34245756525153508b4424448d5c2420e8e47300008d642404ff34248b5c24088b44240c83fb01750489c7eb07e843c7000089c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242889770c8b7424048977088b742418897704c7074d000000578b7c243883ff0175068b5c2418eb0f8b4424188b5c2438e854c7000089c383fb0175068b7c2404eb0b8b442404e8a2c7000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c438c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2428e887c6000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e95bfcffffff34248b5c24088b44240c83fb01750489c7eb07e8b6c5000089c7576a016a01ff742454ff74243c8b7c24488b7424588b5424548b4c244c8b5c243c8b442438ff742404ff7424045756525153508b44244c8d5c2428e8bc6a00008d6424088b3424ff7424048b7c244c8b3ff7c70100000075678b0f8b57048b41048b1883fb05754a8b58048b40083b5c242475168b5c24203bd87507bb03000000eb05bb01000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0eb91bf0100000083ff017507ba01000000eb218b3f8b7f088b55008d52f83b55087305ff5528cdc0895500c742fc01000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2420894f108b4c2410894f0c895708897704c7074b000000578b7c243083ff0175068b7c2410eb0f8b4424108b5c2430e8d5c4000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c42cc22800588b7c242c897c245483c454e9fac40000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2424e807c4000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9c0fbffffff34248b5c24088b44240c83fb01750489c7eb07e836c3000089c7576a016a01ff742454ff74243c8b7c24488b7424588b5424548b4c244c8b5c243c8b442438ff742404ff7424045756525153508b44244c8d5c2428e87c6600008d642408ff3424ff7424088b7c24508b07ff7424248b5c2430e83ac3000089c78b742450893e8b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424248977088b74242c897704c707050000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b542414895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242489770c8b7424148977088b742404897704c70745000000578b7c243483ff0175068b7c2414eb0f8b4424148b5c2434e812c3000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c430c22800588b7c2430897c245883c458e937c30000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2424e844c2000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9c5fbffffff34248b5c24088b44240c83fb01750489c7eb07e873c1000089c7576a016a016a018b7c24748b7424708b54246c8b4c24688b5c246457565251538b4424508d5c2414e8a07d0000ff34248b5c24088b44240c83fb01750489c7eb07e88fc1000089c7578b7c243883ff0375158b7c24708b07e8dcc1000089c78b742470893eeb008b75008d76e43b75087303ff5528897500c746fc060000008b7c2438897e148b7c242c897e108b7c2440897e0c8b7c2404897e088b7c2448897e048b7c2418893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70741000000578b7c245483ff0175068b5c242ceb0f8b44242c8b5c2454e8c5c1000089c383fb0175068b5c2418eb0b8b442418e813c2000089c383fb0175068b7c2404eb0b8b442404e861c2000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c454c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c243c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c245c8b0f2b4c2408710e8d642444b8f80466b18b5d04ff2383c1012b4c2404710e8d642444b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c246cff378b7c24708b3f83c702710e8d64244cb8f80466b18b5d04ff238b742470893e8b7c246c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74246c893e8b7c24688b078b5c2444e846c1000089c78b742468893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742444897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24688b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742468893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e906fcffffff34248b5c24088b44240c83fb01750489c7eb07e875c0000089c7576a016a016a01ff7424608b7c24548b7424508b5424588b4c24608b5c245c8b44244cff34245756525153508b4424408d5c2420e8ca6300008d642404ff34248b5c24088b44240c83fb01750489c7eb07e881c0000089c7576a016a01ff742470ff7424588b7c24648b7424748b5424708b4c24688b5c24588b442454ff742404ff7424045756525153508b44245c8d5c2428e8ef5d00008d6424088b3c24ff7424048b75008d76e83b75087305ff5528cd80897500c746fc050000008b542410895610897e0c8b7c2424897e088b7c2440897e048b7c2444893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073f000000578b7c244c83ff0175068b5c2424eb0f8b4424248b5c244ce820c0000089c383fb0175068b7c2410eb0b8b442410e86ec0000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c448c22800588b7c2448897c247083c470e993c00000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24488b0f2b4c2408710e8d642430b8f80466b18b5d04ff2383c1012b4c2404710e8d642430b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2458ff378b7c245c8b3f83c702710e8d642438b8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742458893e8b7c24548b078b5c2428e8a0bf000089c78b742454893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24548b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742454893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9d2fbffffff34248b5c24088b44240c83fb01750489c7eb07e8cfbe000089c7576a016a016a01ff74245c8b7c24508b74244c8b5424548b4c245c8b5c24588b442448ff34245756525153508b4424448d5c2420e89c5f00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e8dbbe000089c7576a016a01ff74246cff7424548b7c24608b7424708b54246c8b4c24648b5c24548b442450ff742404ff7424045756525153508b4424588d5c2428e8c15900008d6424088b3424ff7424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241089770c8b7424248977088b742440897704c7073b000000578b7c244883ff0175068b5c2424eb0f8b4424248b5c2448e89dbe000089c383fb0175068b7c2410eb0b8b442410e8ebbe000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c444c22800588b7c2444897c246c83c46ce910bf0000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742454893e8b7c24508b078b5c2428e81dbe000089c78b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9f5fbffffff34248b5c24088b44240c83fb01750489c7eb07e84cbd000089c7576a016a016a01ff7424588b7c244c8b7424488b5424508b4c24588b5c24548b442444ff34245756525153508b4424448d5c2420e8915b00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e858bd000089c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242889770c8b7424048977088b742418897704c70739000000578b7c243883ff0175068b5c2418eb0f8b4424188b5c2438e869bd000089c383fb0175068b7c2404eb0b8b442404e8b7bd000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c438c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2428e89cbc000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e95bfcffffff34248b5c24088b44240c83fb017502eb05e8cdbb00008b7c24348b3f83ff017507bf01000000eb538b7c24348b3f8b75008d76f03b75087305ff5528cd81897500c746fc03000000c7460801000000897e04c706350000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937578b7d008d7ff03b7d087305ff5528cd01897d00c747fc030000008b7424148977088b742404897704c70737000000578b7c242083ff01750489c3eb0b8b5c2420e886bb000089c383fb0175068b7c2404eb0b8b442404e8d4bb000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c420c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c243c8b0f2b4c2408710e8d642424b8f80466b18b5d04ff2383c1012b4c2404710e8d642424b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74244c893e8b7c24488b078b5c2424e8b9ba000089c78b742448893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24488b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742448893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e95dfcffffff34248b5c24088b44240c83fb017502eb05e8eab900008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000005e897704c70731000000578b7c241483ff01750489c7eb0b8b5c2414e813ba000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c414c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24388b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742448893e8b7c24448b078b5c2420e8f8b8000089c78b742444893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24448b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742444893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9e3fcfffff6c2010f85880100008b0a8b72048b0189c383f803752589f983e902710e8d642410b8f80466b18b5d04ff2389cf89f23b650c7305ff552ccd84ebc483fb05752d8b49048b590489f92bcb710e8d642410b8f80466b18b5d04ff2383c10189cf89f23b650c7305ff552ccd84eb9283ef04710e8d642410b8f80466b18b5d04ff23893424897c24045e5f8b54241089328b7424208b368b542420893a89fa83c204710e8d642408b8f80466b18b5d04ff233bf274742bf7710e8d642408b8f80466b18b5d04ff2383ee03710e8d642408b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707350000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b8010000008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000005e897704c7072b000000578b7c240483ff01750489c7eb0b8b5c2404e8d7b6000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c404c228008d642410b8d4e566b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e8ecb6000089c7576a016a016a01ff74245c8b7c24508b74244c8b5424548b4c245c8b5c24588b442448ff34245756525153508b4424448d5c2420e88d4f00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e8f8b6000089c7576a016a01ff74246cff7424548b7c24608b7424708b54246c8b4c24648b5c24548b442450ff742404ff7424045756525153508b4424588d5c2428e8b24900008d6424088b3424ff7424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241089770c8b7424248977088b742440897704c70729000000578b7c244883ff0175068b5c2424eb0f8b4424248b5c2448e8bab6000089c383fb0175068b7c2410eb0b8b442410e808b7000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c444c22800588b7c2444897c246c83c46ce92db70000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742454893e8b7c24508b078b5c2428e83ab6000089c78b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9f5fbffffff34248b5c24088b44240c83fb017502eb05e86bb500008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000005e897704c70727000000578b7c241483ff01750489c7eb0b8b5c2414e894b5000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c414c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24388b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2448ff378b7c244c8b3f83c702710e8d642428b8f80466b18b5d04ff238b74244c893e8b7c24488b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742448893e8b7c24448b078b5c2420e879b4000089c78b742444893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24448b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742444893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9e3fcffffff3424ff7424086a016a016a018b7c24548b7424508b54244c8b4c24488b5c244457565251538b4424348d5c2414e8565e0000ff34248b5c24088b44240c83fb01750489c7eb07e875b3000089c7576a016a01ff742464ff74244c8b7c24588b7424688b5424648b4c245c8b5c244c8b442448ff742404ff7424045756525153508b44245c8d5c2428e8af4200008d6424088b3424ff7424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b5424308957108b54241089570c8977088b742424897704c70723000000578b7c244083ff0175068b5c2424eb0f8b4424248b5c2440e837b3000089c383fb0175068b7c2410eb0b8b442410e885b3000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c43cc22800588b7c243c897c246483c464e9aab30000ff34248b5c24088b44240c83fb01750489c7eb07e8f5b3000089c78b75008d76f83b75087305ff5528cd80897500c746fc010000005a891689742410897c241483c410e975fefffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c244c8b0f2b4c2408710e8d642434b8f80466b18b5d04ff2383c1012b4c2404710e8d642434b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c245cff378b7c24608b3f83c702710e8d64243cb8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74245c893e8b7c24588b078b5c2420e8d3b2000089c78b742458893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24588b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742458893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e915fdffffff34248b5c24088b44240c83fb01750489c7eb07e802b2000089c7578b7c244c8b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d642424b8783266b18b5d04ff238b7c244c8b74241c8b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c245cff378b7c24608b3f83c702710e8d64243cb8f80466b18b5d04ff238b742460893e8b7c245c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74245c893e8b7c24588b3fe97e04000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642430b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e876b1000089c7578b7c24608b77fcc1e608c1ee0783ce018b7c242c3bfe720e8d642438b8783266b18b5d04ff238b7c24608b74242c8b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2470ff378b7c24748b3f83c702710e8d642450b8f80466b18b5d04ff238b742474893e8b7c24708b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742470893e8b7c246c8b3fe9eb00000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642444b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e8eab0000089c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242c89770c8b7424048977088b742418897704c7071d000000578b7c244c83ff0175068b5c242ceb0f8b44242c8b5c244ce8fbb0000089c383fb0175068b5c2418eb0b8b442418e849b1000089c383fb0175068b7c2404eb0b8b442404e897b1000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c44cc22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24447507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24688b0f2b4c2408710e8d642450b8f80466b18b5d04ff2383c1012b4c2404710e8d642450b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2478ff378b7c247c8b3f83c702710e8d642458b8f80466b18b5d04ff238b74247c893e8b7c24788b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742478893e8b7c24748b078b5c244ce87cb0000089c78b742474893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74244c897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24748b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742474893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e99dfcfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24347507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24548b0f2b4c2408710e8d64243cb8f80466b18b5d04ff2383c1012b4c2404710e8d64243cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2464ff378b7c24688b3f83c702710e8d642444b8f80466b18b5d04ff238b742468893e8b7c24648b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742464893e8b7c24608b078b5c243ce86dae000089c78b742460893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74243c897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24608b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742460893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e90af9fffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2420e85eac000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e977f5ffffff34248b5c24088b44240c83fb017502eb05e88fab00008b7c24448b77fcc1e608c1ee0783ce018b7c24103bfe720e8d64241cb8783266b18b5d04ff238b7c24448b7424108b7c77fe8b7424308b56fcc1e208c1ea0783ca018b7424103bf2720e8d64241cb8a43266b18b5d04ff238b7424308b5424108b7456fe83fe03750e8d64241cb87ce066b18b5d04ff238b1789d683fa03750e8d64241cb8c8e066b18b5d04ff2383fe0175088b7704e9d70000008b7c24288b77fcc1e608c1ee0783ce018b7c24103bfe720e8d64241cb8a43266b18b5d04ff238b7c24288b7424108b5477fe8b7c24408b378b7c24408b3f83c702710e8d64241cb8f80466b18b5d04ff238b4c244089398b7c243c8b0f8b7d008d7ff43b7d087305ff5528cd47897d00c747fc02000000894f0489178b54243c893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707010000008b5424448b4afcc1e108c1e90783c9018b5424103bd1720e8d64241cb8003566b18b5d04ff238b5424448b4c2410897c4afe8b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008977085e897704c70719000000578b7c241883ff01750489c7eb0b8b5c2418e843aa000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c418c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c243c8b0f2b4c2408710e8d642424b8f80466b18b5d04ff2383c1012b4c2404710e8d642424b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74244c893e8b7c24488b078b5c2424e828a9000089c78b742448893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24488b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742448893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e96efbffffff34248b5c24088b44240c83fb01750489c7eb07e857a8000089c7576a016a016a01ff7424608b7c24548b7424508b5424588b4c24608b5c245c8b44244cff34245756525153508b4424508d5c2420e81c3500008d642404ff34248b5c24088b44240c83fb01750489c7eb07e863a8000089c7576a016a01ff742470ff7424588b7c24648b7424748b5424708b4c24688b5c24588b442454ff742404ff7424045756525153508b44245c8d5c2428e8412f00008d642408ff3424ff7424086a016a01ffb42480000000ff7424688b7c24748bb424840000008b9424800000008b4c24788b5c24688b442464ff742404ff7424045756525153508b4424688d5c2428e8ee2e00008d6424088b3c24ff7424048b75008d76e83b75087305ff5528cd80897500c746fc05000000897e108b7c2410897e0c8b7c244c897e088b7c2434897e048b7c2420893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70715000000578b7c245c83ff0175068b5c2434eb0f8b4424348b5c245ce8afa7000089c383fb0175068b7c2420eb0b8b442420e8fda7000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b5c240ceb0b8b44240ce82ba8000089c383fb0175075883c458c22800588b7c245889bc248000000081c480000000e96aa80000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24247507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24488b0f2b4c2408710e8d642430b8f80466b18b5d04ff2383c1012b4c2404710e8d642430b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2458ff378b7c245c8b3f83c702710e8d642438b8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742458893e8b7c24548b078b5c242ce877a7000089c78b742454893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74242c897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24548b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742454893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e963fbffffff34248b5c24088b44240c83fb01750489c7eb07e8a6a6000089c7578b7c24508b77fcc1e608c1ee0783ce018b7c24143bfe720e8d642428b8783266b18b5d04ff238b7c24508b7424148b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2460ff378b7c24648b3f83c702710e8d642440b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c245c8b3fe98b04000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642434b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e81aa6000089c7578b7c24648b77fcc1e608c1ee0783ce018b7c24303bfe720e8d64243cb8783266b18b5d04ff238b7c24648b7424308b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2474ff378b7c24788b3f83c702710e8d642454b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742474893e8b7c24708b3fe9f200000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642448b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e88ea5000089c7578b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424188977108b74242c89770c8b7424048977088b742448897704c70711000000578b7c245083ff0175068b5c242ceb0f8b44242c8b5c2450e898a5000089c383fb0175068b5c2418eb0b8b442418e8e6a5000089c383fb0175068b7c2404eb0b8b442404e834a6000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c450c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24487507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c246c8b0f2b4c2408710e8d642454b8f80466b18b5d04ff2383c1012b4c2404710e8d642454b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c247cff378bbc24800000008b3f83c702710e8d64245cb8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74247c893e8b7c24788b078b5c2450e813a5000089c78b742478893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742450897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24788b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742478893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e990fcfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c242c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24588b0f2b4c2408710e8d642440b8f80466b18b5d04ff2383c1012b4c2404710e8d642440b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2468ff378b7c246c8b3f83c702710e8d642448b8f80466b18b5d04ff238b74246c893e8b7c24688b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742468893e8b7c24648b078b5c2434e804a3000089c78b742464893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24648b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742464893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9fdf8fffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742454893e8b7c24508b078b5c2424e8f5a0000089c78b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e96af5ffffff34248b5c24088b44240c83fb01750489c7eb07e824a0000089c7576a016a01ff742454ff74243c8b7c24488b7424588b5424548b4c244c8b5c243c8b442438ff742404ff7424045756525153508b44244c8d5c2428e8662000008d642408ff3424ff7424088b7c24488b77fcc1e608c1ee0783ce018b7c242c3bfe720e8d642434b8a43266b18b5d04ff238b7c24488b74242c8b7c77fe83ff037505e9770100008b7c242483ff050f846a0100008b7c2458ff378b7c245c8b3f83c702710e8d642438b8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b742458893e8b7c242883ff037507bf07000000eb158b7c242883ff057507bf07000000eb05bf0b000000578b7c24588b078b5c2434e8699f000089c78b742458893e8b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b742434897704c707010000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b542404895608897e048b3c24893e8b7c24588b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742458893e8b75008d76ec3b75087303ff5528897500c746fc040000008b7c241c897e0c5f897e085f897e04c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb05bf01000000578b7d008d7fe83b7d087303ff5528897d00c747fc05000000c74710010000008b74242889770c8b7424188977088b742408897704c7070f000000578b7c243883ff0175068b7c2418eb0f8b4424188b5c2438e8cb9e000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175068b5c2404eb0b8b442404e8f99e000089c383fb0175075883c434c22800588b7c2434897c245c83c45ce93e9f0000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24408b0f2b4c2408710e8d642428b8f80466b18b5d04ff2383c1012b4c2404710e8d642428b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2450ff378b7c24548b3f83c702710e8d642430b8f80466b18b5d04ff238b742454893e8b7c24508b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742450893e8b7c244c8b078b5c2424e84b9e000089c78b74244c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c244c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74244c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e992faffffff34248b5c24088b44240c83fb01750489c7eb07e87a9d000089c7578b7c24508b77fcc1e608c1ee0783ce018b7c24183bfe720e8d642428b8783266b18b5d04ff238b7c24508b7424188b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2460ff378b7c24648b3f83c702710e8d642440b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742460893e8b7c245c8b3fe99e04000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642434b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e8ee9c000089c7578b7c24648b77fcc1e608c1ee0783ce018b7c24343bfe720e8d64243cb8783266b18b5d04ff238b7c24648b7424348b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2474ff378b7c24788b3f83c702710e8d642454b8f80466b18b5d04ff238b742478893e8b7c24748b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742474893e8b7c24708b3fe90501000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d642448b834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e8629c000089c7578b7c246c8b07e8b89c000089c78b74246c893e8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b74243c8977108b74241889770c8b74242c8977088b742404897704c7070d000000578b7c245083ff0175068b5c242ceb0f8b44242c8b5c2450e8cd9c000089c383fb0175068b5c2418eb0b8b442418e81b9d000089c383fb0175068b7c2404eb0b8b442404e8699d000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c450c22800f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c244c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c246c8b0f2b4c2408710e8d642454b8f80466b18b5d04ff2383c1012b4c2404710e8d642454b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c247cff378bbc24800000008b3f83c702710e8d64245cb8f80466b18b5d04ff238bb42480000000893e8b7c247c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74247c893e8b7c24788b078b5c2454e8489c000089c78b742478893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742454897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24788b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742478893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e97dfcfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24307507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24588b0f2b4c2408710e8d642440b8f80466b18b5d04ff2383c1012b4c2404710e8d642440b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2468ff378b7c246c8b3f83c702710e8d642448b8f80466b18b5d04ff238b74246c893e8b7c24688b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742468893e8b7c24648b078b5c2438e8399a000089c78b742464893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742438897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24648b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742464893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9eaf8fffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2454ff378b7c24588b3f83c702710e8d642434b8f80466b18b5d04ff238b742458893e8b7c24548b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742454893e8b7c24508b078b5c2428e82a98000089c78b742450893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24508b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742450893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e957f5fffff7c60100000075288b4e0489fa83c202710e8d642408b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd0bb010000002bdf710e8d642408b8f80466b18b5d04ff2383c3018b7c24308b74242c8b542428575652e81497000089c7576a016a01ff74240c68943966b1f6442404010f85ff0000008b7c24048b3f8b742404ff7604ff37ff77048b7c240cff378b7c2410ff77046a016a01ff742460ff7424488b7c24548b7424648b5424608b4c24588b5c24488b442444ff742404ff7424045756525153508b44243c8d5c2428e8d30f00008d6424085f588b75008d76f43b75087305ff5528cd81897500c746fc020000008b542408895604893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008b5424048957048937578b7c240483ff01750489c7eb0b8b5c2404e8fc97000089c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a045f893a8b74241089542414897424183b650c7303ff552c83c414e9f6feffff8b3c248b3f897c24085f8b7f04897c24088b7424048b4424088b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008b54240c895708897704c707090000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000008b742414897304893b83fb0175078d642418c228008d6424188b3c24897c242883c428e99d970000ff34248b5c24088b44240c83fb01750489c7eb07e8e897000089c7578b7c24488b77fcc1e608c1ee0783ce018b7c24143bfe720e8d642420b8783266b18b5d04ff238b7c24488b7424148b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2458ff378b7c245c8b3f83c702710e8d642438b8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742458893e8b7c24548b3fe9c700000083fe0175188b7f04893c24c744240401000000c744240801000000eb0e8d64242cb834e066b18b5d04ff23ff34248b5c24088b44240c83fb01750489c7eb07e85c97000089c783ff01756e8b7d008d7ff03b7d087303ff5528897d00c747fc030000005e8977088b742410897704c70707000000578b7c242c83ff0175068b7c2410eb0f8b4424108b5c242ce87397000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c42cc228008d642430b884e666b18b5d04ff23f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c242c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24508b0f2b4c2408710e8d642438b8f80466b18b5d04ff2383c1012b4c2404710e8d642438b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2460ff378b7c24648b3f83c702710e8d642440b8f80466b18b5d04ff238b742464893e8b7c24608b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742460893e8b7c245c8b078b5c2434e84a96000089c78b74245c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c245c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74245c893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9c1fcfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c241c7507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c243c8b0f2b4c2408710e8d642424b8f80466b18b5d04ff2383c1012b4c2404710e8d642424b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74244c893e8b7c24488b078b5c2424e83b94000089c78b742448893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24488b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742448893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e92ef9ffffff34248b5c24088b44240c83fb01750489c7eb07e86a93000089c7576a016a016a01ff7424608b7c24548b7424508b5424588b4c24608b5c245c8b44244cff34245756525153508b4424448d5c2420e8030d00008d642404ff34248b5c24088b44240c83fb01750489c7eb07e87693000089c7576a016a01ff742470ff7424588b7c24648b7424748b5424708b4c24688b5c24588b442454ff742404ff7424045756525153508b4424588d5c2428e8280700008d6424088b3c24ff7424048b75008d76e83b75087305ff5528cd80897500c746fc05000000897e108b7c2410897e0c8b7c2424897e088b7c2440897e048b7c2444893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b7c244c83ff0175068b5c2424eb0f8b4424248b5c244ce81593000089c383fb0175068b7c2410eb0b8b442410e86393000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c448c22800588b7c2448897c247083c470e988930000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24207507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24488b0f2b4c2408710e8d642430b8f80466b18b5d04ff2383c1012b4c2404710e8d642430b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2458ff378b7c245c8b3f83c702710e8d642438b8f80466b18b5d04ff238b74245c893e8b7c24588b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742458893e8b7c24548b078b5c2428e89592000089c78b742454893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24548b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742454893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e9d2fbffffff34248b5c24088b44240c83fb01750489c7eb07e8c491000089c7576a016a01ff742450ff7424388b7c24448b7424548b5424508b4c24488b5c24388b442434ff742404ff7424045756525153508b4424488d5c2428e8520300008d6424088b3424ff7424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542410895708897704c70703000000578b7c242c83ff0175068b7c2410eb0f8b4424108b5c242ce88d91000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175075883c428c22800588b7c2428897c245083c450e9b2910000f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c243c8b0f2b4c2408710e8d642424b8f80466b18b5d04ff2383c1012b4c2404710e8d642424b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c244cff378b7c24508b3f83c702710e8d64242cb8f80466b18b5d04ff238b742450893e8b7c244c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74244c893e8b7c24488b078b5c2420e8bf90000089c78b742448893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c24488b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b742448893e8b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770cc747080b0000008b742408897704c707210000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0cc742080b0000005f8d642404897a04c702130000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089175a895424088974240c897c241083c408e96afcfffff40000|@11843,1,@1225|21,0,@5840 457,1,@5841 496,0,0 517,0,0 572,1,@5842 610,0,@9988 676,0,@9455 728,0,3 764,0,0 772,0,0 786,0,@11791 841,0,@9988 908,0,@9455 960,0,3 996,0,0 1004,0,0 1018,0,@11791 1062,0,@9988 1129,0,@9455 1181,0,3 1217,0,0 1225,0,0 1239,0,@11791 1255,0,0 1278,0,0 1310,0,1 1317,0,0 1355,0,@9455 1395,0,@9988 1437,0,@9990 1464,0,@11794 1487,0,@11797 1534,0,@9990 1573,0,@9455 1662,0,0 1691,0,@10015 1768,1,@5841 1817,0,5 1872,1,@5843 1887,0,@11800 1937,0,@9988 2004,0,@9455 2056,0,3 2092,0,0 2100,0,0 2114,0,@11791 2161,0,@9988 2228,0,@9455 2280,0,3 2316,0,0 2324,0,0 2338,0,@11791 2388,0,@9988 2455,0,@9455 2507,0,3 2543,0,0 2551,0,0 2565,0,@11791 2624,0,@9988 2691,0,@9455 2743,0,3 2779,0,0 2787,0,0 2801,0,@11791 2874,1,@5844 2939,1,@5863 3013,1,@5841 3034,0,0 3074,0,0 3125,0,11 3154,1,@5866 3176,1,@5867 3239,1,@5868 3278,0,@9988 3345,0,@9455 3397,0,3 3433,0,0 3441,0,0 3455,0,@11791 3494,0,@11525 3538,0,@9988 3604,0,@9455 3656,0,3 3692,0,0 3700,0,0 3714,0,@11791 3787,1,@5869 3856,1,@5874 3879,0,@9922 3886,0,0 3914,0,0 3942,0,@9455 3994,0,2 4068,0,@9988 4110,0,@9990 4137,0,@11794 4160,0,@11797 4207,0,@9990 4246,0,@9455 4335,0,0 4364,0,@10015 4428,1,@5877 4487,0,15 4516,1,@5878 4538,1,@5879 4620,0,@9990 4702,1,@5845 4729,1,@5880 4762,0,@9988 4816,0,@9455 4868,0,@10423 4907,0,1 4953,0,1 4986,0,@10015 5042,0,1 5062,0,@9455 5181,0,23 5204,1,@5881 5253,0,@11816 5314,1,@5845 5362,0,@9990 5412,0,@9988 5447,0,@11819 5491,0,@9455 5580,0,0 5613,0,@10015 5665,0,1 5672,0,0 5709,0,3 5725,0,3 5732,0,5 5747,0,@10071 5775,0,@10070 5820,0,@9455 5893,1,@5882 5945,0,0 6088,0,9 6121,0,0 6137,0,@11822 6147,0,0 6199,0,16 6228,1,@5883 6282,1,@5884 6313,1,@5885 6375,0,@9988 6441,0,@9455 6493,0,3 6529,0,0 6537,0,0 6551,0,@11791 6561,0,@10068 6647,1,@5841 6696,0,18 6751,1,@5886 6786,0,@9988 6852,0,@9455 6904,0,3 6940,0,0 6948,0,0 6962,0,@11791 7012,0,@9988 7079,0,@9455 7131,0,3 7167,0,0 7175,0,0 7189,0,@11791 7226,0,@9988 7268,0,@9990 7295,0,@11794 7318,0,@11797 7365,0,@9990 7404,0,@9455 7493,0,0 7522,0,@10015 7589,0,@9988 7631,0,@9990 7658,0,@11794 7681,0,@11797 7728,0,@9990 7767,0,@9455 7856,0,0 7885,0,@10015 7918,0,@9455 7970,0,@9922 8037,0,22 8134,1,@5845 8163,1,@5887 8214,0,@9988 8264,0,@9455 8416,0,1 8445,0,@10015 8497,0,2 8526,0,@9455 8648,0,23 8677,1,@5888 8726,0,@11825 8766,0,@9988 8832,0,@9455 8884,0,3 8920,0,0 8928,0,0 8942,0,@11791 8993,0,@9988 9043,0,@9455 9196,0,1 9225,0,@10015 9273,0,2 9298,0,@9455 9417,0,25 9461,0,@11825 9509,0,@9988 9576,0,@9455 9628,0,3 9664,0,0 9672,0,0 9686,0,@11791 9733,0,@9988 9800,0,@9455 9852,0,3 9888,0,0 9896,0,0 9910,0,@11791 9960,0,@9988 10027,0,@9455 10079,0,3 10115,0,0 10123,0,0 10137,0,@11791 10204,1,@5845 10233,1,@5889 10299,1,@5841 10352,0,30 10381,1,@5890 10444,1,@5891 10494,0,@9988 10561,0,@9455 10613,0,3 10649,0,0 10657,0,0 10671,0,@11791 10750,1,@5892 10794,0,@9988 10861,0,@9455 10913,0,3 10949,0,0 10957,0,0 10971,0,@11791 11039,1,@5892 11092,0,@9988 11146,0,@9455 11164,0,@9455 11192,0,@9455 11252,0,33 11275,1,@5897 11331,0,@11803 11341,0,@11806 11388,0,@9988 11455,0,@9455 11507,0,3 11543,0,0 11551,0,0 11565,0,@11791 11616,0,@9988 11658,0,@9990 11685,0,@11794 11708,0,@11797 11755,0,@9990 11794,0,@9455 11883,0,0 11912,0,@10015 11994,1,@5898 12059,1,@5902 12168,0,35 12197,1,@5905 12219,1,@5906 12321,1,@5845 12348,1,@5907 12391,0,36 12414,1,@5908 12496,0,@9988 12563,0,@9455 12615,0,3 12651,0,0 12659,0,0 12673,0,@11791 12720,0,@9988 12787,0,@9455 12839,0,3 12875,0,0 12883,0,0 12897,0,@11791 12944,0,@9988 13011,0,@9455 13063,0,3 13099,0,0 13107,0,0 13121,0,@11791 13171,0,@9988 13238,0,@9455 13290,0,3 13326,0,0 13334,0,0 13348,0,@11791 13422,1,@5841 13471,0,41 13526,1,@5909 13567,0,@9988 13633,0,@9455 13685,0,3 13721,0,0 13729,0,0 13743,0,@11791 13810,1,@5845 13839,1,@5910 13905,1,@5841 13958,0,43 13987,1,@5911 14050,1,@5912 14075,1,@5913 14141,1,@5841 14201,0,42 14230,1,@5914 14293,1,@5915 14330,0,1 14337,0,0 14391,0,0 14401,0,0 14457,0,@9455 14480,0,@9455 14527,0,0 14536,0,5 14563,0,@9455 14615,0,0 14636,1,@5916 14681,0,1 14714,0,1 14729,0,5 14810,0,5 14823,0,16 14856,0,0 14898,0,5 14912,0,9 14945,0,0 14993,1,@5917 15052,1,@5845 15081,1,@5918 15147,1,@5841 15214,0,40 15243,1,@5919 15265,1,@5920 15328,1,@5921 15365,0,1 15372,0,0 15426,0,0 15436,0,0 15492,0,@9455 15515,0,@9455 15562,0,0 15571,0,5 15598,0,@9455 15650,0,0 15671,1,@5922 15716,0,1 15749,0,1 15764,0,5 15845,0,5 15858,0,16 15891,0,0 15933,0,5 15947,0,9 15980,0,0 16028,1,@5923 16087,1,@5845 16116,1,@5924 16170,0,39 16199,1,@5925 16221,1,@5926 16298,0,1 16305,0,0 16359,0,0 16369,0,0 16425,0,@9455 16448,0,@9455 16495,0,0 16504,0,5 16531,0,@9455 16583,0,0 16604,1,@5927 16649,0,1 16682,0,1 16697,0,5 16778,0,5 16791,0,16 16824,0,0 16866,0,5 16880,0,9 16913,0,0 16961,1,@5928 17020,1,@5845 17049,1,@5929 17103,0,38 17132,1,@5930 17154,1,@5931 17231,0,1 17238,0,0 17292,0,0 17302,0,0 17358,0,@9455 17381,0,@9455 17428,0,0 17437,0,5 17464,0,@9455 17516,0,0 17537,1,@5932 17582,0,1 17615,0,1 17630,0,5 17711,0,5 17724,0,16 17757,0,0 17799,0,5 17813,0,9 17846,0,0 17894,1,@5933 17960,1,@5841 18025,0,1 18032,0,0 18039,0,0 18093,0,0 18103,0,0 18190,0,37 18219,1,@5934 18282,1,@5935 18319,0,1 18326,0,0 18380,0,0 18390,0,0 18446,0,@9455 18469,0,@9455 18516,0,0 18525,0,5 18552,0,@9455 18604,0,0 18625,1,@5936 18670,0,1 18703,0,1 18718,0,5 18799,0,5 18812,0,16 18845,0,0 18887,0,5 18901,0,9 18934,0,0 18982,1,@5937 19048,1,@5841 19078,1,@5938 19130,0,2 19163,0,1 19179,0,5 19273,0,34 19302,1,@5939 19365,1,@5940 19402,0,1 19409,0,0 19463,0,0 19473,0,0 19529,0,@9455 19552,0,@9455 19599,0,0 19608,0,5 19635,0,@9455 19687,0,0 19708,1,@5941 19753,0,1 19786,0,1 19801,0,5 19882,0,5 19895,0,16 19928,0,0 19970,0,5 19984,0,9 20017,0,0 20065,1,@5942 20112,1,@5849 20137,1,@5943 20160,1,@5944 20270,0,32 20299,1,@5945 20321,1,@5946 20343,1,@5947 20420,0,1 20427,0,0 20481,0,0 20491,0,0 20547,0,@9455 20570,0,@9455 20617,0,0 20626,0,5 20653,0,@9455 20705,0,0 20726,1,@5948 20771,0,1 20804,0,1 20819,0,5 20900,0,5 20913,0,16 20946,0,0 20988,0,5 21002,0,9 21035,0,0 21083,1,@5949 21142,1,@5845 21171,1,@5950 21237,1,@5841 21339,0,31 21368,1,@5951 21390,1,@5952 21453,1,@5953 21490,0,1 21497,0,0 21551,0,0 21561,0,0 21617,0,@9455 21640,0,@9455 21687,0,0 21696,0,5 21723,0,@9455 21775,0,0 21796,1,@5954 21841,0,1 21874,0,1 21889,0,5 21970,0,5 21983,0,16 22016,0,0 22058,0,5 22072,0,9 22105,0,0 22153,1,@5955 22212,1,@5845 22241,1,@5956 22307,1,@5841 22374,0,29 22403,1,@5957 22425,1,@5958 22488,1,@5959 22525,0,1 22532,0,0 22586,0,0 22596,0,0 22652,0,@9455 22675,0,@9455 22722,0,0 22731,0,5 22758,0,@9455 22810,0,0 22831,1,@5960 22876,0,1 22909,0,1 22924,0,5 23005,0,5 23018,0,16 23051,0,0 23093,0,5 23107,0,9 23140,0,0 23188,1,@5961 23247,1,@5845 23276,1,@5962 23330,0,28 23359,1,@5963 23381,1,@5964 23458,0,1 23465,0,0 23519,0,0 23529,0,0 23585,0,@9455 23608,0,@9455 23655,0,0 23664,0,5 23691,0,@9455 23743,0,0 23764,1,@5965 23809,0,1 23842,0,1 23857,0,5 23938,0,5 23951,0,16 23984,0,0 24026,0,5 24040,0,9 24073,0,0 24119,1,@5966 24135,0,0 24176,0,0 24185,0,26 24218,0,0 24267,0,27 24290,1,@5967 24312,1,@5968 24389,0,1 24396,0,0 24450,0,0 24460,0,0 24516,0,@9455 24539,0,@9455 24586,0,0 24595,0,5 24622,0,@9455 24674,0,0 24695,1,@5969 24740,0,1 24773,0,1 24788,0,5 24869,0,5 24882,0,16 24915,0,0 24957,0,5 24971,0,9 25004,0,0 25050,1,@5970 25086,0,24 25109,1,@5971 25186,0,1 25193,0,0 25247,0,0 25257,0,0 25313,0,@9455 25336,0,@9455 25383,0,0 25392,0,5 25419,0,@9455 25471,0,0 25492,1,@5972 25537,0,1 25570,0,1 25585,0,5 25666,0,5 25679,0,16 25712,0,0 25754,0,5 25768,0,9 25801,0,0 25863,0,@9455 25910,0,@9455 25948,0,@9455 25996,0,@9455 26018,0,@9455 26037,0,@9455 26075,0,0 26084,0,26 26117,0,0 26126,0,0 26162,0,21 26185,1,@5973 26234,0,@11836 26264,1,@5974 26323,1,@5845 26352,1,@5975 26418,1,@5841 26485,0,20 26514,1,@5976 26536,1,@5977 26599,1,@5978 26636,0,1 26643,0,0 26697,0,0 26707,0,0 26763,0,@9455 26786,0,@9455 26833,0,0 26842,0,5 26869,0,@9455 26921,0,0 26942,1,@5979 26987,0,1 27020,0,1 27035,0,5 27116,0,5 27129,0,16 27162,0,0 27204,0,5 27218,0,9 27251,0,0 27297,1,@5980 27333,0,19 27356,1,@5981 27433,0,1 27440,0,0 27494,0,0 27504,0,0 27560,0,@9455 27583,0,@9455 27630,0,0 27639,0,5 27666,0,@9455 27718,0,0 27739,1,@5982 27784,0,1 27817,0,1 27832,0,5 27913,0,5 27926,0,16 27959,0,0 28001,0,5 28015,0,9 28048,0,0 28122,1,@5849 28147,1,@5983 28213,1,@5841 28280,0,17 28309,1,@5984 28331,1,@5985 28394,1,@5986 28419,1,@5987 28503,0,1 28510,0,0 28564,0,0 28574,0,0 28630,0,@9455 28653,0,@9455 28700,0,0 28709,0,5 28736,0,@9455 28788,0,0 28809,1,@5988 28854,0,1 28887,0,1 28902,0,5 28983,0,5 28996,0,16 29029,0,0 29071,0,5 29085,0,9 29118,0,0 29166,1,@5989 29202,0,@9988 29269,0,@9455 29321,0,3 29357,0,0 29365,0,0 29376,0,@11791 29406,1,@5990 29442,0,@9988 29509,0,@9455 29561,0,3 29597,0,0 29605,0,0 29616,0,@11791 29646,1,@5991 29700,0,14 29729,1,@5992 29751,1,@5993 29773,1,@5994 29850,0,1 29857,0,0 29911,0,0 29921,0,0 29977,0,@9455 30000,0,@9455 30047,0,0 30056,0,5 30083,0,@9455 30135,0,0 30156,1,@5995 30201,0,1 30234,0,1 30249,0,5 30330,0,5 30343,0,16 30376,0,0 30418,0,5 30432,0,9 30465,0,0 30525,0,1 30532,0,0 30586,0,0 30596,0,0 30652,0,@9455 30675,0,@9455 30722,0,0 30731,0,5 30758,0,@9455 30810,0,0 30831,1,@5996 30876,0,1 30909,0,1 30924,0,5 31005,0,5 31018,0,16 31051,0,0 31093,0,5 31107,0,9 31140,0,0 31200,0,1 31207,0,0 31261,0,0 31271,0,0 31327,0,@9455 31350,0,@9455 31397,0,0 31406,0,5 31433,0,@9455 31485,0,0 31506,1,@5997 31551,0,1 31584,0,1 31599,0,5 31680,0,5 31693,0,16 31726,0,0 31768,0,5 31782,0,9 31815,0,0 31861,1,@5998 31894,0,@9988 31944,0,@9990 31975,0,@11794 31998,0,@11797 32049,0,@9990 32092,0,@9455 32181,0,0 32214,0,@10015 32270,0,12 32293,1,@5999 32370,0,1 32377,0,0 32431,0,0 32441,0,0 32497,0,@9455 32520,0,@9455 32567,0,0 32576,0,5 32603,0,@9455 32655,0,0 32676,1,@6000 32721,0,1 32754,0,1 32769,0,5 32850,0,5 32863,0,16 32896,0,0 32938,0,5 32952,0,9 32985,0,0 33033,1,@6001 33092,1,@5845 33121,1,@6002 33187,1,@5841 33270,1,@5841 33372,0,10 33401,1,@6003 33423,1,@6004 33477,1,@6005 33514,1,@6006 33551,0,1 33558,0,0 33612,0,0 33622,0,0 33678,0,@9455 33701,0,@9455 33748,0,0 33757,0,5 33784,0,@9455 33836,0,0 33857,1,@6007 33902,0,1 33935,0,1 33950,0,5 34031,0,5 34044,0,16 34077,0,0 34119,0,5 34133,0,9 34166,0,0 34214,1,@6008 34250,0,@9988 34317,0,@9455 34369,0,3 34405,0,0 34413,0,0 34424,0,@11791 34454,1,@6009 34490,0,@9988 34557,0,@9455 34609,0,3 34645,0,0 34653,0,0 34664,0,@11791 34694,1,@6010 34755,0,8 34784,1,@6011 34806,1,@6012 34828,1,@6013 34905,0,1 34912,0,0 34966,0,0 34976,0,0 35032,0,@9455 35055,0,@9455 35102,0,0 35111,0,5 35141,0,@9455 35196,0,0 35217,1,@6014 35262,0,1 35295,0,1 35310,0,5 35391,0,5 35404,0,16 35437,0,0 35479,0,5 35493,0,9 35526,0,0 35586,0,1 35593,0,0 35647,0,0 35657,0,0 35713,0,@9455 35736,0,@9455 35783,0,0 35792,0,5 35819,0,@9455 35871,0,0 35892,1,@6015 35937,0,1 35970,0,1 35985,0,5 36066,0,5 36079,0,16 36112,0,0 36154,0,5 36168,0,9 36201,0,0 36261,0,1 36268,0,0 36322,0,0 36332,0,0 36388,0,@9455 36411,0,@9455 36458,0,0 36467,0,5 36494,0,@9455 36546,0,0 36567,1,@6016 36612,0,1 36645,0,1 36660,0,5 36741,0,5 36754,0,16 36787,0,0 36829,0,5 36843,0,9 36876,0,0 36924,1,@6017 36990,1,@5841 37034,0,@9990 37100,0,@9455 37152,0,1 37172,0,3 37188,0,3 37195,0,5 37211,1,@6018 37250,0,0 37263,0,0 37296,0,1 37399,0,9 37432,0,0 37441,0,0 37473,0,0 37500,0,7 37529,1,@6019 37583,1,@6020 37614,1,@6021 37651,0,1 37658,0,0 37712,0,0 37722,0,0 37778,0,@9455 37801,0,@9455 37848,0,0 37857,0,5 37884,0,@9455 37936,0,0 37957,1,@6022 38002,0,1 38035,0,1 38050,0,5 38131,0,5 38144,0,16 38177,0,0 38219,0,5 38233,0,9 38266,0,0 38314,1,@6023 38350,0,@9988 38417,0,@9455 38469,0,3 38505,0,0 38513,0,0 38524,0,@11791 38554,1,@6024 38590,0,@9988 38657,0,@9455 38709,0,3 38745,0,0 38753,0,0 38764,0,@11791 38794,1,@6025 38808,1,@6026 38874,0,6 38903,1,@6027 38925,1,@6028 38947,1,@6029 39024,0,1 39031,0,0 39085,0,0 39095,0,0 39151,0,@9455 39174,0,@9455 39221,0,0 39230,0,5 39260,0,@9455 39315,0,0 39336,1,@6030 39381,0,1 39414,0,1 39429,0,5 39510,0,5 39523,0,16 39556,0,0 39598,0,5 39612,0,9 39645,0,0 39705,0,1 39712,0,0 39766,0,0 39776,0,0 39832,0,@9455 39855,0,@9455 39902,0,0 39911,0,5 39938,0,@9455 39990,0,0 40011,1,@6031 40056,0,1 40089,0,1 40104,0,5 40185,0,5 40198,0,16 40231,0,0 40273,0,5 40287,0,9 40320,0,0 40380,0,1 40387,0,0 40441,0,0 40451,0,0 40507,0,@9455 40530,0,@9455 40577,0,0 40586,0,5 40613,0,@9455 40665,0,0 40686,1,@6032 40731,0,1 40764,0,1 40779,0,5 40860,0,5 40873,0,16 40906,0,0 40948,0,5 40962,0,9 40995,0,0 41045,0,@9455 41071,0,0 41084,0,@9455 41112,1,@6033 41128,0,@10068 41233,1,@5841 41332,1,@6034 41461,0,4 41527,1,@6035 41552,1,@6036 41588,0,@9988 41655,0,@9455 41707,0,3 41743,0,0 41751,0,0 41762,0,@11791 41792,1,@6037 41840,0,3 41869,1,@6038 41918,0,@11840 41960,0,1 41967,0,0 42021,0,0 42031,0,0 42087,0,@9455 42110,0,@9455 42157,0,0 42166,0,5 42193,0,@9455 42245,0,0 42266,1,@6039 42311,0,1 42344,0,1 42359,0,5 42440,0,5 42453,0,16 42486,0,0 42528,0,5 42542,0,9 42575,0,0 42635,0,1 42642,0,0 42696,0,0 42706,0,0 42762,0,@9455 42785,0,@9455 42832,0,0 42841,0,5 42868,0,@9455 42920,0,0 42941,1,@6040 42986,0,1 43019,0,1 43034,0,5 43115,0,5 43128,0,16 43161,0,0 43203,0,5 43217,0,9 43250,0,0 43298,1,@6041 43357,1,@5845 43386,1,@6042 43452,1,@5841 43554,0,2 43583,1,@6043 43605,1,@6044 43668,1,@6045 43705,0,1 43712,0,0 43766,0,0 43776,0,0 43832,0,@9455 43855,0,@9455 43902,0,0 43911,0,5 43938,0,@9455 43990,0,0 44011,1,@6046 44056,0,1 44089,0,1 44104,0,5 44185,0,5 44198,0,16 44231,0,0 44273,0,5 44287,0,9 44320,0,0 44368,1,@6047 44434,1,@5841 44478,0,0 44494,0,1 44523,1,@6048 44586,1,@6049 44623,0,1 44630,0,0 44684,0,0 44694,0,0 44750,0,@9455 44773,0,@9455 44820,0,0 44829,0,5 44856,0,@9455 44908,0,0 44929,1,@6050 44974,0,1 45007,0,1 45022,0,5 45103,0,5 45116,0,16 45149,0,0 45191,0,5 45205,0,9 45238,0,0 5841:D3,880|3b650c7305ff552ccd098b7c24208b7ffcc1e708c1ef0783cf013bc7720ab8783266b18b5d04ff238b7c24208b7c47fe8b74241c8b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b74241c8b5446fe8b7424188b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b7424188b7446fe83fe030f85220200008b3f83ff050f850d0200008b7c24148b378b7c24148b3f83c702710ab8f80466b18b5d04ff238b4c241489398b7c24108b0f8b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894f0489178b542410893a8b7c24148b3f8b5424148b1283c202710ab8f80466b18b5d04ff238b4c241489118b5424108b0a8b55008d52f43b55087305ff5528cdcb895500c742fc02000000894a04c702cc5366b18b4c241089118b4d008d49f43b4d087305ff5528cdc9894d00c741fc02000000c741040300000089398b7c240c8b178b7d008d7ff03b7d087305ff5528cd4f897d00c747fc03000000894f08895704c707030000008b5424208b52fcc1e208c1ea0783ca013bc2720ab8003566b18b5d04ff238b542420897c42fe8b55008d52f43b55087305ff5528cd4b895500c742fc02000000894204c702030000008b7c240c8b3f83c702710ab8f80466b18b5d04ff238b44240c89388b7c24088b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc0200000089470489178b542408893a8b7c24048b178b7c240c8b3f3bd77e0489d7eb008b542404893a8b7d008d7ff43b7d087305ff5528cd4a897d00c747fc02000000897704c707090000008b55008d52f03b55087305ff5528cdca895500c742fc03000000894a08897a04c7022f0000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000c747040100000089178933897b04b801000000c22000b848df66b18b5d04ff238b0f89ce83f903750ab894df66b18b5d04ff2383fe0175088b7f04e9950000008b7c24148b3f8b7424148b3683c602710ab8f80466b18b5d04ff238b4c241489318b7424108b0e8b75008d76f43b75087305ff5528cd8f897500c746fc02000000894e0489168b54241089328b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706010000008b5424208b52fcc1e208c1ea0783ca013bc2720ab8003566b18b5d04ff238b542420897442fe893bc7430401000000b801000000c22000f40000|@11790,1,@1015|31,0,@9988 69,0,@9990 107,0,@9990 162,0,@9455 238,0,@9455 290,0,@10423 329,0,1 375,0,1 400,0,@10015 448,0,1 464,0,@9455 579,0,4 617,0,23 650,0,0 662,0,0 670,0,@11784 689,0,@11787 729,0,@9455 818,0,0 843,0,@10015 865,0,0 870,0,0 5842:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1016| 5843:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1017| 5844:D3,284|3b650c7305ff552ccd0953a8010f85ed000000ff30ff70046a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8b2ffffff8d642404ff3424ff7424086a016a016a01ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b4424408d5c2420e89f0000008d642404ff34248b5c24088b44240c83fb017502eb05e8e42b00008b7c241489fb83ff01750489c2eb07e8342c000089c28b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108977048b342489378d6424048b7424248916897e04b80100000083c428c21c005ebf943966b18b1789168b7f04897e04b801000000c21c00f4000000|@11273,1,@1036|141,1,@5845 168,1,@5861 188,1,@5862 246,0,0 258,0,@10068 273,0,0 5845:D3,5120|3b650c7305ff552ccd09538b38be4c6230b181c61e0000008d74befcffe6e92b000000909090e93c000000909090e903010000909090e914010000909090e9d5020000909090e9740300009090905f8907c7470401000000c7470801000000b801000000c21c008b78048b378b4f048b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642404b8783266b18b5d04ff238b7c24208b7c77fe8b1789d683fa0375758b77048b7f088b54241c8b1283e90103f1710e8d642404b8f80466b18b5d04ff232bd6710e8d642404b8f80466b18b5d04ff2383c2018b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706030000005f8937c7470401000000c7470801000000b801000000c21c008d64240489f783ff01750ab864e166b18b5d04ff23b8b0e166b18b5d04ff235f8907c7470401000000c7470801000000b801000000c21c00ff7004ff7008ff700cff70108b7c24048b3f83ff090f85d70000008b7c24308b57fcc1e208c1ea0783ca018b7c240c89fe3bfa720e8d642414b8783266b18b5d04ff238b7c243089f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2434ff378b7c24388b3f83c702710e8d64242cb8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742434893e8b7c243c8b3fe93b0f000083fe01751b8b7f04893c24c744240401000000c744240801000000e9ee0a00008d642420b834e066b18b5d04ff238b7c24308b57fcc1e208c1ea0783ca018b7c240c89fe3bfa720e8d642414b8783266b18b5d04ff238b7c243089f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c2434ff378b7c24388b3f83c702710e8d64242cb8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b742434893e8b7c243c8b3fe98807000083fe01751b8b7f04893c24c744240401000000c744240801000000e9980600008d642420b834e066b18b5d04ff23ff70048b7c24248b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642408b8783266b18b5d04ff238b7c242489f68b7c77fe8b1789d683fa037514ff77048b5708ff72048b7c24208b3fe9c00300008d64240483fe01753f8b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000005f8937c7470401000000c7470801000000b801000000c21c008d642404b8f8e166b18b5d04ff238b48048b50088b780cff378b378b5f048b7c24248b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24248b7c77fe8b0789c683f8030f85a00000008b7704ff77088b7c24248b3f83eb0103f3710e8d64240cb8f80466b18b5d04ff232bfe710e8d64240cb8f80466b18b5d04ff2383c70189d683ee0103fe57710e8d642410b8f80466b18b5d04ff23f6c10175468b318b7c24248b7ffcc1e708c1ef0783cf013bf7720e8d642410b8a43266b18b5d04ff238b7c24248b7c77fe83ff03750abf01000000e9900200008b7c24208b3fe9f6010000bf01000000eb1f8d64240889f783ff01750ab864e166b18b5d04ff23b8b0e166b18b5d04ff238b75008d76e83b75087305ff5528cd84897500c746fc050000008b0c24894e108d6424048b0c24894e0c8d642404895608897e04c7060b00000056f7c7010000000f854b010000ff378b7c241cff378b7c24208b3f83c702710e8d642414b8f80466b18b5d04ff238b742420893e8b7c241c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74241c893e8b7c24248b078b5c240ce8a30e000089c78b742424893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424248b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54242489328b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240489560cc746080b00000089ff897e048d642408c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb1c8b7c241c8b078b5c2404e8420e000089c78b74241c893ebf010000008b7424088b142489168d642404c7460401000000897e08b80100000083c408c21c00f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24087507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507bf01000000eb218b3f8b77088b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008937e99cfdfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24087507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507bf01000000eb218b3f8b77088b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100000089378b7424288b0e2b4c2404710e8d642410b8f80466b18b5d04ff2383c1012b0c248d642404710e8d64240cb8f80466b18b5d04ff238d64240483c1018b75008d76e83b75087305ff5528cd86897500c746fc05000000894e1089560cc7460801000000897e04c7060b00000056f7c7010000000f854b010000ff378b7c241cff378b7c24208b3f83c702710e8d642414b8f80466b18b5d04ff238b742420893e8b7c241c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74241c893e8b7c24248b078b5c240ce8a70c000089c78b742424893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424248b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54242489328b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240489560cc746080b00000089ff897e048d642408c706130000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb05bf010000008b7424088b142489168d642404c7460401000000897e08b80100000083c408c21c00ff3424ff742408ff7424106a016a016a018b7c24548b7424448b5424408b4c24488b5c245057565251538b44243c8d5c2414e8f70b00008b34248b5c2404ff7424088b7d008d7fe83b7d087305ff5528cd48897d00c747fc050000008b54242889571089770cc74708010000008b742418897704c707070000005783fb0175068b7c2418eb0b8b442418e86b1d000089c7578b7c240889fb83ff0175068b7c2418eb0b8b442418e8b21d000089c78b7424408b54240489168b14248956048d642408897e08b80100000083c43cc21c00f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24247507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c243cff378b7c24408b3f83c702710e8d642434b8f80466b18b5d04ff238b742440893e8b7c243c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74243c893e8b7c24448b078b5c242ce89b1c000089c78b742444893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c242c897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54244489328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e981fcffff8b0c24ff742404ff74240cf644241c01754a8b7c241c8b378b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d642428b8a43266b18b5d04ff238b7c243c8b7c77fe83ff03750abe01000000e9d70300008b7c24388b3fe9060300008b7c242c83ff03750b8b7c24388b3fe927020000be0100000083fe017507bb01000000eb208b3e8b3f8b5d008d5bf83b5d087305ff5528cdc2895d00c743fc01000000893b8b55008d52e83b55087305ff5528cd4a895500c742fc050000008b44241489c7894210c7420cc46866b1895a08894a04c7020700000052f7c6010000000f855e0100008b36ff36ff7604ff76088b54240483f2028b742444ff368b7424488b3683c602710e8d64243cb8f80466b18b5d04ff238b4c244889318b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54244489328b74244c8b06578b5c2438e8821a000089c78b74244c893e8b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424288977088b742434897704c707010000008b4d008d49ec3b4d087305ff5528cd80894d00c741fc040000008b74240889710c8b142489d68951088979048b7c240489fa89398b7c244c8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f8b4c244c89398b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c240c894f0c89d289570889f68977048d642410c707130000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893beb1d8b74243c8b06578b5c2428e83d1a000089c78b74243c893ebb0100000083fb0175068b7c2404eb0b8b442404e8d41a000089c78b7424288b142489168d6424048b542404895604897e08b80100000083c428c21c00f7c70100000075658b178b77048b5a048b0383f80175488b43048b5b083b44242075143b5c24147507bb03000000eb05bb01000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc010000008917eb1389f73b650c7305ff552ccd82eb93bf0100000083ff017507be01000000eb488b3f8b1f8b77088b570c8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f0889570489378b75008d76f83b75087305ff5528cd82897500c746fc01000000893ee913fdfffff7c70100000075658b178b77048b5a048b0383f80175488b43048b5b083b44242075143b5c24147507bb03000000eb05bb01000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc010000008917eb1389f73b650c7305ff552ccd82eb93bf0100000083ff017507be01000000eb488b3f8b1f8b77088b570c8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f0889570489378b75008d76f83b75087305ff5528cd82897500c746fc01000000893ee948fcfffff7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24247507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24448b0f2b4c2408710e8d64242cb8f80466b18b5d04ff2383c1012b4c2404710e8d64242cb8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c243cff378b7c24408b3f83c702710e8d642434b8f80466b18b5d04ff238b742440893e8b7c243c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74243c893e8b7c24448b078b5c242ce82718000089c78b742444893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c242c897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424448b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54244489328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e924f9fffff40000|@11814,1,@1033|14,0,@5845 84,0,0 91,0,0 96,0,0 136,0,@9988 186,0,@9455 204,0,@9455 250,0,1 260,0,0 267,0,0 272,0,0 291,0,@11803 301,0,@11806 316,0,0 323,0,0 328,0,0 393,0,@9988 458,0,@9455 510,0,3 546,0,0 554,0,0 568,0,@11791 608,0,@9988 673,0,@9455 725,0,3 761,0,0 769,0,0 783,0,@11791 825,0,@9988 916,0,4 926,0,0 933,0,0 938,0,0 950,0,@11809 1000,0,@9988 1054,0,@9455 1072,0,@9455 1099,0,@9455 1140,0,@9990 1163,0,0 1184,0,0 1202,0,@11803 1212,0,@11806 1275,0,5 1316,0,@9455 1368,0,0 1389,1,@5846 1434,0,1 1467,0,1 1484,0,5 1567,0,5 1582,0,9 1615,0,0 1634,1,@5847 1647,0,0 1667,0,0 1675,0,0 1718,0,1 1725,0,0 1779,0,0 1789,0,0 1866,0,1 1873,0,0 1927,0,0 1937,0,0 1993,0,@9455 2019,0,@9455 2070,0,0 2079,0,5 2120,0,@9455 2172,0,0 2193,1,@5848 2238,0,1 2271,0,1 2288,0,5 2371,0,5 2386,0,9 2419,0,0 2428,0,0 2448,0,0 2456,0,0 2517,1,@5849 2571,0,0 2584,0,3 2605,1,@5854 2634,1,@5855 2664,0,0 2707,0,1 2714,0,0 2768,0,0 2778,0,0 2834,0,@9455 2857,0,@9455 2904,0,0 2913,0,5 2940,0,@9455 2992,0,0 3013,1,@5856 3058,0,1 3091,0,1 3108,0,5 3191,0,5 3206,0,16 3239,0,0 3281,0,5 3296,0,9 3329,0,0 3410,0,@9990 3433,0,0 3474,0,0 3484,0,0 3560,0,@10755 3572,0,3 3628,0,@9455 3698,1,@5857 3750,0,0 3898,0,9 3931,0,0 3951,1,@5858 3964,0,0 3984,1,@5859 4014,0,0 4066,0,1 4073,0,0 4080,0,0 4134,0,0 4144,0,0 4269,0,1 4276,0,0 4283,0,0 4337,0,0 4347,0,0 4463,0,1 4470,0,0 4524,0,0 4534,0,0 4590,0,@9455 4613,0,@9455 4660,0,0 4669,0,5 4696,0,@9455 4748,0,0 4769,1,@5860 4814,0,1 4847,0,1 4864,0,5 4947,0,5 4962,0,16 4995,0,0 5037,0,5 5052,0,9 5085,0,0 5846:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1018|40,0,1 47,0,0 54,0,0 119,0,0 5847:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1019|40,0,1 47,0,0 54,0,0 119,0,0 5848:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1020|40,0,1 47,0,0 54,0,0 119,0,0 5849:D3,3944|3b650c7305ff552ccd09538b3089f783fe070f85d9000000ff70048b7c241c8b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642408b8783266b18b5d04ff238b7c241c89f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c242cff378b7c24308b3f83c702710e8d642420b8f80466b18b5d04ff238b742430893e8b7c242c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74242c893e8b7c24288b3fe9f40b000083fe01751b8b7f04893c24c744240401000000c744240801000000e9970b00008d642414b834e066b18b5d04ff2389fe83ff050f85d9000000ff70048b7c241c8b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642408b8783266b18b5d04ff238b7c241c89f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c242cff378b7c24308b3f83c702710e8d642420b8f80466b18b5d04ff238b742430893e8b7c242c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74242c893e8b7c24288b3fe92408000083fe01751b8b7f04893c24c744240401000000c744240801000000e9c70700008d642414b834e066b18b5d04ff2389f783fe030f85d9000000ff70048b7c241c8b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642408b8783266b18b5d04ff238b7c241c89f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c242cff378b7c24308b3f83c702710e8d642420b8f80466b18b5d04ff238b742430893e8b7c242c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74242c893e8b7c24288b3fe95404000083fe01751b8b7f04893c24c744240401000000c744240801000000e9f70300008d642414b834e066b18b5d04ff2383ff010f85d6000000ff70048b7c241c8b57fcc1e208c1ea0783ca018b3c2489fe3bfa720e8d642408b8783266b18b5d04ff238b7c241c89f68b7c77fe6a016a016a018b1789d683fa037568ff77048b5708ff72048b7c242cff378b7c24308b3f83c702710e8d642420b8f80466b18b5d04ff238b742430893e8b7c242c8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b74242c893e8b7c24288b3fe98600000083fe0175188b7f04893c24c744240401000000c744240801000000eb2c8d642414b834e066b18b5d04ff235ebf40e266b18b1789168b57048956048b7f08897e08b801000000c214005e5a5f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701010000008b742404890e895604897e08b80100000083c408c21400f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24248b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2434ff378b7c24388b3f83c702710e8d642428b8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742434893e8b7c24308b078b5c2420e8320a000089c78b742430893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c2420897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424308b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54243089328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e914fdffff5e5a5f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701030000008b742404890e895604897e08b80100000083c408c21400f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24248b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2434ff378b7c24388b3f83c702710e8d642428b8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742434893e8b7c24308b078b5c2420e8da07000089c78b742430893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c2420897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424308b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54243089328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e914fdffff5e5a5f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701050000008b742404890e895604897e08b80100000083c408c21400f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24248b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2434ff378b7c24388b3f83c702710e8d642428b8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742434893e8b7c24308b078b5c2420e88205000089c78b742430893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c2420897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424308b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54243089328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e914fdffff5e5a5f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701070000008b742404890e895604897e08b80100000083c408c21400f7c70100000075558b0f8b77048b59048b0383f80375388b5b043b5c24187507bb03000000eb05bb0100000083fb03751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84eba3bf0100000083ff017507be01000000eb218b3f8b7f088b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b7c24248b0f2b4c2408710e8d642420b8f80466b18b5d04ff2383c1012b4c2404710e8d642420b8f80466b18b5d04ff2383c1018b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570cc7470801000000897704c7070b000000578b7c2434ff378b7c24388b3f83c702710e8d642428b8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742434893e8b7c24308b078b5c2420e82a03000089c78b742430893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c2420897e04c706030000008b55008d52ec3b55087305ff5528cd40895500c742fc04000000c7420c030000008b0c2489cf894a08897204c7020b0000008b7424308b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54243089328b55008d52ec3b55087305ff5528cd80895500c742fc040000008b74240489720cc742080b0000008b74240889f3897204c702210000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b4d008d49ec3b4d087305ff5528cdc8894d00c741fc0400000089db89da89590cc741080b00000089ff8979048d642408c701130000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f89d28954240c8d6424048974240c897c241083c408e914fdfffff400|@11813,1,@1025|57,0,@9988 122,0,@9455 174,0,3 210,0,0 218,0,0 232,0,@11791 285,0,@9988 350,0,@9455 402,0,3 438,0,0 446,0,0 460,0,@11791 513,0,@9988 578,0,@9455 630,0,3 666,0,0 674,0,0 688,0,@11791 739,0,@9988 804,0,@9455 856,0,3 892,0,0 900,0,0 911,0,@11791 922,0,@11812 943,0,0 984,0,0 1001,0,0 1044,0,1 1051,0,0 1105,0,0 1115,0,0 1171,0,@9455 1194,0,@9455 1241,0,0 1250,0,5 1277,0,@9455 1329,0,0 1350,1,@5850 1395,0,1 1428,0,1 1445,0,5 1528,0,5 1543,0,16 1576,0,0 1618,0,5 1633,0,9 1666,0,0 1732,0,1 1749,0,0 1792,0,1 1799,0,0 1853,0,0 1863,0,0 1919,0,@9455 1942,0,@9455 1989,0,0 1998,0,5 2025,0,@9455 2077,0,0 2098,1,@5851 2143,0,1 2176,0,1 2193,0,5 2276,0,5 2291,0,16 2324,0,0 2366,0,5 2381,0,9 2414,0,0 2480,0,2 2497,0,0 2540,0,1 2547,0,0 2601,0,0 2611,0,0 2667,0,@9455 2690,0,@9455 2737,0,0 2746,0,5 2773,0,@9455 2825,0,0 2846,1,@5852 2891,0,1 2924,0,1 2941,0,5 3024,0,5 3039,0,16 3072,0,0 3114,0,5 3129,0,9 3162,0,0 3228,0,3 3245,0,0 3288,0,1 3295,0,0 3349,0,0 3359,0,0 3415,0,@9455 3438,0,@9455 3485,0,0 3494,0,5 3521,0,@9455 3573,0,0 3594,1,@5853 3639,0,1 3672,0,1 3689,0,5 3772,0,5 3787,0,16 3820,0,0 3862,0,5 3877,0,9 3910,0,0 5850:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1021|40,0,1 47,0,0 54,0,0 119,0,0 5851:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1022|40,0,1 47,0,0 54,0,0 119,0,0 5852:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1023|40,0,1 47,0,0 54,0,0 119,0,0 5853:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1024|40,0,1 47,0,0 54,0,0 119,0,0 5854:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1026| 5855:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1027| 5856:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1028|40,0,1 47,0,0 54,0,0 119,0,0 5857:D3,164|3b650c7305ff552ccd09a8010f8589000000ff308b40048b3c248b7f048b3783fe0175278b77048b7f083bf375168b7424083bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff0374358b7c240857e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d6424048b74240489742404e965ffffffb801000000c20400f4|@9865,1,@1029|55,0,1 62,0,0 69,0,0 76,0,0 156,0,0 5858:D3,164|3b650c7305ff552ccd09a8010f8589000000ff308b40048b3c248b7f048b3783fe0175278b77048b7f083bf375168b7424083bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff0374358b7c240857e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d6424048b74240489742404e965ffffffb801000000c20400f4|@9865,1,@1030|55,0,1 62,0,0 69,0,0 76,0,0 156,0,0 5859:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1031| 5860:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1032|40,0,1 47,0,0 54,0,0 119,0,0 5861:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1034| 5862:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1035| 5863:D3,332|3b650c7305ff552ccd0953a8010f851d010000ff30ff70046a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8b2ffffff8d642404ff3424ff7424088b74241489f7ff3689ffff77046a016a016a01ff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b4424308d5c2420e83ad3ffff8d642404ff34248b5c24088b44240c83fb017502eb05e8a70000008b7c241c89fb83ff01750489c2eb07e8f700000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2410897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2414894f0489378b74242c8916897e04b80100000083c430c21c005ebf943966b18b1789168b7f04897e04b801000000c21c00f4000000|@11273,1,@1039|154,1,@5845 181,1,@5864 201,1,@5865 294,0,0 306,0,@10068 321,0,0 5864:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1037| 5865:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1038| 5866:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1040| 5867:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1041| 5868:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1042| 5869:D3,744|3b650c7305ff552ccd0953a8010f85b30200008b38ff7004ff37ff77046a016a016a01ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b4424348d5c2420e8abffffff8d642404ff3424ff742408ff7424108b7c24448b57fcc1e208c1ea0783ca018b7c241889fe3bfa720e8d642428b8783266b18b5d04ff238b7c244489f68b7c77fe8b1789d683fa0575268b7424248b7c2408893e8b7c2404897e048b3c24897e088d64240cb80100000083c41cc21c0083fe030f851c010000ff7704ff77088b3c24ff77046a016a016a01ff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff34245756525153508b4424548d5c2420e872cfffff8d642404ff34248b5c24088b44240c83fb017502eb05e8cf0100008b7c245c8b3f2b7c2418710e8d642444b8f80466b18b5d04ff2383c7012b7c2410710e8d642444b8f80466b18b5d04ff2383c7018b75008d76f03b75087305ff5528cd81897500c746fc030000008b542414895608897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008b54241c8957048937578b7c241c89fb83ff01750489c7eb07e89a01000089c78b7424408b54242489168b14248956048d642404897e08b80100000083c440c21c00ff77046a016a016a01ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b44244c8d5c2420e85fceffff8d642404ff34248b5c24088b44240c83fb017502eb05e8840100008b75008d76f43b75087305ff5528cd01897500c746fc020000008b7c2410897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008b5424188957048937578b7c241489fb83ff01750489c7eb07e88601000089c78b7424388b142489168d6424048b542414895604897e08b80100000083c438c21c005ebfc45d66b18b1789168b57048956048b7f08897e08b801000000c21c00f4000000|@11815,1,@1047|131,0,@9988 187,0,0 270,1,@5845 297,1,@5870 318,0,@9455 341,0,@9455 450,1,@5871 480,0,0 545,1,@5845 572,1,@5872 670,1,@5873 700,0,0 712,0,@10588 733,0,0 5870:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1043| 5871:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1044| 5872:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1045| 5873:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1046| 5874:D3,492|3b650c7305ff552ccd0953a8010f85bf010000ff30ff70046a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8b2ffffff8d642404ff3424ff7424088b74241489f7ff3689ffff77086a016a016a01ff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b4424308d5c2420e85acbffff8d642404ff34248b5c24088b44240c83fb017502eb05e8470100008b7c24108b3789ff8b57048b7c24508b7ffcc1e708c1ef0783cf013bf7720e8d642434b8783266b18b5d04ff238b7c24508b7c77fe8b0f89ce83f9030f85b80000008b7704ff77088b7c24508b3f83ea0103f2710e8d642438b8f80466b18b5d04ff232bfe710e8d642438b8f80466b18b5d04ff2383c701578b7c242489fb83ff01750489c2eb07e81e01000089c28b75008d76f03b75087305ff5528cd04897500c746fc030000008b7c2404897e088b3c24897e048d6424088b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2414894f0489378b74242c8916897e04b80100000083c430c21c008d64243489f783ff01750ab864e166b18b5d04ff23b8b0e166b18b5d04ff235ebf943966b18b1789168b7f04897e04b801000000c21c00f400|@11273,1,@1050|154,1,@5845 181,1,@5875 221,0,@9988 275,0,@9455 293,0,@9455 322,1,@5876 425,0,0 447,0,@11803 457,0,@11806 468,0,@10068 483,0,0 5875:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1048| 5876:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1049| 5877:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1051| 5878:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1052| 5879:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1053| 5880:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1054| 5881:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1055| 5882:D3,164|3b650c7305ff552ccd09a8010f8589000000ff308b40048b3c248b7f048b3783fe0175278b77048b7f083bf375168b7424083bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff0374358b7c240857e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d6424048b74240489742404e965ffffffb801000000c20400f4|@9865,1,@1056|55,0,1 62,0,0 69,0,0 76,0,0 156,0,0 5883:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1057| 5884:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1058| 5885:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1059| 5886:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1060| 5887:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1061| 5888:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1062| 5889:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1063| 5890:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1064| 5891:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1065| 5892:D3,908|3b650c7305ff552ccd0950538b7c24048b3f83ff07750e8d642408b880e466b18b5d04ff238b7c24048b3f83ff0b750e8d642408b8d4e466b18b5d04ff238b7c24048b3f83ff090f85cd0200008b7c2404ff77046a016a016a01ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b4424348d5c2420e874c2ffff8d642404ff3424ff742408ff7424108b7c24088b3f83ff0b0f853a0200008b7c2430ff378b7c24348b3f83c702710e8d642428b8f80466b18b5d04ff238b742434893e8b7c24308b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742430893e8b7c2434ff378b7c24388b3f83c702710e8d64242cb8f80466b18b5d04ff238b742438893e8b7c24348b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b742434893e8b7c243c8b078b5c2420e83f02000089c78b74243c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707030000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b1424895608897e04c7060b0000008b7c243c8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b74243c893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70709000000578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240889770cc747080b0000008b742404897704c70713000000578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74241889770cc747080b0000008b74240c897704c707210000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742414897304893b83fb0175068b742410eb0b8b442410e88701000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424285a8916897e04b80100000083c42cc21c008b7c240483ff0175065f83c404eb128b04248b5c2404e89901000089c78d6424088b7424145a8916897e04b80100000083c418c21c006a016a016a01ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c2420ff742404ff74240457565251538b4424348d5c2424e8aabfffff8d642408ff34248b5c24088b44240c83fb01750489c7eb07e88901000089c78b7424105a8916897e04b80100000083c414c21c00f400|@11834,1,@1070|28,0,@11828 53,0,@11831 136,1,@5845 192,0,@9455 244,0,3 276,0,@9455 328,0,0 349,1,@5893 394,0,1 427,0,1 442,0,5 522,0,4 561,0,5 574,0,9 613,0,5 626,0,16 681,1,@5894 730,0,0 763,1,@5895 784,0,0 850,1,@5845 879,1,@5896 896,0,0 5893:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1066|40,0,1 47,0,0 54,0,0 119,0,0 5894:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1067| 5895:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1068| 5896:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1069| 5897:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1071| 5898:D3,296|3b650c7305ff552ccd0953a8010f85fc000000ff30ff70046a016a01ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742408ff742408ff7424085756525153508b4424388d5c2430e8a1ffffff8d64240c5e5a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff342457ff74240cff742438ff742438ff742438ff742438ff7424388b5424388b4c24348b5c24308b44242c8b742428894424288b44241c895c242c8b5c2418894c2430895424348b3c24897c24388b7c2404897c243c8b7c2408897c24408b7c240c897c24448b7c2410897c24488b7c2414897c244c8974242483c424e9310000008d6424285ebf943966b18b1789168b7f04897e04b801000000c22400f4|@11273,1,@1075|263,1,@5899 273,0,@10068 288,0,0 5899:D3,648|3b650c7305ff552ccd09ff30ff7004ff33ff73046a016a016a01ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424388d5c2420e8b4bbffff8d642404ff34248b5c24088b44240c83fb01750489c7eb07e83302000089c76a016a018b7424088b1683fa0b0f857f01000089f68b4e108b44243083e8018b5c242089da03d8710e8d642428b8f80466b18b5d04ff233bcb7505e9470100008b5c243083eb0189d203d3710e8d642428b8f80466b18b5d04ff2383fa017d07ba03000000eb478b5424302bd1710e8d642428b8f80466b18b5d04ff2383c201b9010000008b5c242c2bcb710e8d642428b8f80466b18b5d04ff2383c1013bd17e07ba03000000eb05ba0100000083fa030f84d00000008b54243c8b1a8b54243c8b1283c202710e8d642428b8f80466b18b5d04ff238b4c243c89118b5424388b0a8b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04c702050000008b4c243889118b55008d52f43b55087305ff5528cdc8895500c742fc02000000895a04c702090000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089f689710cc741080b000000895904c701210000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04890e89f7891424897c2404eb0989f6893424897c2404eb0989f6893424897c2404ff34248b4424088b7c242089fb83ff01750489c2eb07e8df00000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2424897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2418894f0489378b7424508916897e04b80100000083c428c22800f4000000|@11835,1,@1074|72,1,@5845 101,1,@5900 153,0,@9455 189,0,@9455 204,0,1 223,0,@9455 236,0,0 253,0,@9455 270,0,1 277,0,0 312,0,@9455 364,0,2 405,0,4 443,0,5 452,0,16 541,1,@5901 634,0,0 5900:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1072| 5901:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1073| 5902:D3,332|3b650c7305ff552ccd0953a8010f851d010000ff30ff70046a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8b2ffffff8d642404ff3424ff7424088b74241489f7ff3689ffff77046a016a016a01ff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b4424308d5c2420e8feb7ffff8d642404ff34248b5c24088b44240c83fb017502eb05e8a70000008b7c241c89fb83ff01750489c2eb07e8f700000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2410897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2414894f0489378b74242c8916897e04b80100000083c430c21c005ebf943966b18b1789168b7f04897e04b801000000c21c00f4000000|@11273,1,@1078|154,1,@5845 181,1,@5903 201,1,@5904 294,0,0 306,0,@10068 321,0,0 5903:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1076| 5904:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1077| 5905:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1079| 5906:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1080| 5907:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1081| 5908:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1082| 5909:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1083| 5910:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1084| 5911:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1085| 5912:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1086| 5913:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1087| 5914:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1088| 5915:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1089| 5916:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1090|40,0,1 47,0,0 54,0,0 119,0,0 5917:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1091| 5918:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1092| 5919:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1093| 5920:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1094| 5921:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1095| 5922:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1096|40,0,1 47,0,0 54,0,0 119,0,0 5923:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1097| 5924:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1098| 5925:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1099| 5926:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1100| 5927:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1101|40,0,1 47,0,0 54,0,0 119,0,0 5928:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1102| 5929:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1103| 5930:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1104| 5931:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1105| 5932:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1106|40,0,1 47,0,0 54,0,0 119,0,0 5933:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1107| 5934:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1108| 5935:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1109| 5936:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1110|40,0,1 47,0,0 54,0,0 119,0,0 5937:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1111| 5938:D3,164|3b650c7305ff552ccd09a8010f8589000000ff308b40048b3c248b77048b3e83ff0575278b7e048b76083bfb75168b7c24083bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff0374358b7c240857e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d6424048b74240489742404e965ffffffb801000000c20400f4|@9865,1,@1112|55,0,1 62,0,0 69,0,0 76,0,0 156,0,0 5939:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1113| 5940:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1114| 5941:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1115|40,0,1 47,0,0 54,0,0 119,0,0 5942:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1116| 5943:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1117| 5944:D3,96|3b650c7305ff552ccd01a8017549ff308b40048b3c248b7f048b3f83ff01742ee8dbffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a9ffffffb801000000c3f40000|@9865,1,@1118|88,0,0 5945:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1119| 5946:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1120| 5947:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1121| 5948:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1122|40,0,1 47,0,0 54,0,0 119,0,0 5949:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1123| 5950:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1124| 5951:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1125| 5952:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1126| 5953:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1127| 5954:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1128|40,0,1 47,0,0 54,0,0 119,0,0 5955:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1129| 5956:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1130| 5957:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1131| 5958:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1132| 5959:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1133| 5960:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1134|40,0,1 47,0,0 54,0,0 119,0,0 5961:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1135| 5962:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1136| 5963:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1137| 5964:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1138| 5965:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1139|40,0,1 47,0,0 54,0,0 119,0,0 5966:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1140| 5967:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1141| 5968:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1142| 5969:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1143|40,0,1 47,0,0 54,0,0 119,0,0 5970:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1144| 5971:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1145| 5972:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1146|40,0,1 47,0,0 54,0,0 119,0,0 5973:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1147| 5974:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1148| 5975:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1149| 5976:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1150| 5977:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1151| 5978:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1152| 5979:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1153|40,0,1 47,0,0 54,0,0 119,0,0 5980:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1154| 5981:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1155| 5982:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1156|40,0,1 47,0,0 54,0,0 119,0,0 5983:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1157| 5984:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1158| 5985:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1159| 5986:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1160| 5987:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1161| 5988:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1162|40,0,1 47,0,0 54,0,0 119,0,0 5989:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1163| 5990:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1164| 5991:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1165| 5992:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1166| 5993:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1167| 5994:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1168| 5995:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1169|40,0,1 47,0,0 54,0,0 119,0,0 5996:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1170|40,0,1 47,0,0 54,0,0 119,0,0 5997:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1171|40,0,1 47,0,0 54,0,0 119,0,0 5998:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1172| 5999:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1173| 6000:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1174|40,0,1 47,0,0 54,0,0 119,0,0 6001:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1175| 6002:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1176| 6003:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1177| 6004:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1178| 6005:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1179| 6006:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1180| 6007:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1181|40,0,1 47,0,0 54,0,0 119,0,0 6008:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1182| 6009:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1183| 6010:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1184| 6011:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1185| 6012:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1186| 6013:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1187| 6014:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1188|40,0,1 47,0,0 54,0,0 119,0,0 6015:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1189|40,0,1 47,0,0 54,0,0 119,0,0 6016:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1190|40,0,1 47,0,0 54,0,0 119,0,0 6017:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1191| 6018:D3,140|3b650c7305ff552ccd09a8017577ff308b40048b3c248b7f048b3783fe0175248b77048b7f083bf3751383ff017507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff03742ee8adffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e97bffffffb801000000c3f4|@9865,1,@1192|48,0,1 55,0,0 62,0,0 69,0,0 134,0,0 6019:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1193| 6020:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1194| 6021:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1195| 6022:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1196|40,0,1 47,0,0 54,0,0 119,0,0 6023:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1197| 6024:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1198| 6025:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1199| 6026:D3,96|3b650c7305ff552ccd01a8017549ff308b40048b3c248b7f048b3f83ff01742ee8dbffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a9ffffffb801000000c3f40000|@9865,1,@1200|88,0,0 6027:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1201| 6028:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1202| 6029:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1203| 6030:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1204|40,0,1 47,0,0 54,0,0 119,0,0 6031:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1205|40,0,1 47,0,0 54,0,0 119,0,0 6032:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1206|40,0,1 47,0,0 54,0,0 119,0,0 6033:D3,432|3b650c7305ff552ccd0953a8010f858d0100008b38ff70048b178b4f048b7c24148b7ffcc1e708c1ef0783cf013bd7720e8d642408b8783266b18b5d04ff238b7c24148b7c57fe8b3f83ff050f85400100008b7c24108b378b7c24108b3f83c702710e8d642408b8f80466b18b5d04ff238b5c2410893b8b5d008d5bf83b5d087305ff5528cd46895d00c743fc01000000890b8b7c240c8b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704891f8b5c240c893b8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048937578b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b34248977088b74240889f3897704c707030000008b7424188b76fcc1e608c1ee0783ce013bd6720e8d64240cb8003566b18b5d04ff238b742418897c56fe89db83c302710e8d64240cb8f80466b18b5d04ff238b7c24188b7424148b5424105756528b442410e89cfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20c008d642408b82ce466b18b5d04ff238d642404b801000000c20c00f4000000|@11839,1,@1207|54,0,@9988 104,0,@9455 265,0,1 294,0,@10015 323,0,@9455 407,0,@11825 421,0,0 6034:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1208| 6035:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1209| 6036:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1210| 6037:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1211| 6038:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1212| 6039:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1213|40,0,1 47,0,0 54,0,0 119,0,0 6040:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1214|40,0,1 47,0,0 54,0,0 119,0,0 6041:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1215| 6042:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1216| 6043:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1217| 6044:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1218| 6045:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1219| 6046:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1220|40,0,1 47,0,0 54,0,0 119,0,0 6047:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1221| 6048:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1222| 6049:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1223| 6050:D3,128|3b650c7305ff552ccd09a8017568ff308b40048b3c248b7f048b3783fe0375158b7f043bfb7507bf03000000eb05bf01000000eb05bf0100000083ff03742ee8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e98affffffb801000000c3f4000000|@9865,1,@1224|40,0,1 47,0,0 54,0,0 119,0,0 6051:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1226| 6052:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1227| 6053:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1228| 6054:D3,104|3b650c7305ff552ccd09a80175538b308b40048b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000895f04893757e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1230|98,0,0 6055:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1231| 6056:D3,2388|3b650c7305ff552ccd0983f80174458b7bfcc1e708c1ef0783cf013bc7720ab8783266b18b5d04ff238b7c43fef7c7010000007407bf03000000eb05bf0100000083f70283f70283ff037508b8b4e766b1c214008b7c24148b7ffcc1e708c1ef0783cf013bc7720ab8a43266b18b5d04ff238b7c24148b7c47fe8b3f8b7424108b76fcc1e608c1ee0783ce013bc6720ab8783266b18b5d04ff238b7424108b7446feff368b56086a016a018b37b9ccee30b181c1be0000008d4cb1fcffe1e933000000909090e931030000909090e9e6030000909090e9f2030000909090e936040000909090e91a070000909090e9ef070000909090ff77048b5f08ff770c8b4f108b7c24208b7ffcc1e708c1ef0783cf013bdf720e8d642414b8783266b18b5d04ff238b7c24208b7c5ffe83ff01750e8d642414b8b07766b18b5d04ff238b3f8b7f043bfa750789dee9fe0000003bd70f8e9702000089d62bf7710e8d642414b8f80466b18b5d04ff2383c6018b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000c7470803000000897704c707350000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c7070b0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304893b8b7c241c8b378b7c241c8b3f83c702710e8d642414b8f80466b18b5d04ff238b44241c89388b7c24188b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704891f8b5c2418893b8b7c24208b7ffcc1e708c1ef0783cf013bcf720e8d642414b8783266b18b5d04ff238b7c24208b7c4ffe83ff01750e8d642414b8b07766b18b5d04ff238b3f8b7f043bfa750789cae9fc0000003bd70f8e3e0100002bd7710e8d642414b8f80466b18b5d04ff2383c2018b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000c7470803000000895704c707350000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070b0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089510489398b7c241c8b178b7c241c8b3f83c702710e8d642414b8f80466b18b5d04ff238b5c241c893b8b7c24188b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f8b4c241889398b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008957108b142489570c8d6424048977088b34248977048d642404c707010000008b742408893424897c2404e90d0500008d642414b8c0e766b18b5d04ff238d642414b8c0e766b18b5d04ff238b4f088b7424188b76fcc1e608c1ee0783ce013bce720e8d64240cb8783266b18b5d04ff238b7424188b744efe83fe01750e8d64240cb8b07766b18b5d04ff238b368b0e8b5e043bda75068b742408eb6089d62bf3710e8d64240cb8f80466b18b5d04ff2383c6018b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c702350000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e048916893424897c2404e9340400008b7c2408893c24c7442404003b66b1e9200400008b47048b5c24188b7c24148b742410525756e88404000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b742408893424897c2404e9d40300008b5f048b4f088b7c24188b7ffcc1e708c1ef0783cf013bdf720e8d64240cb8783266b18b5d04ff238b7c24188b7c5ffe83ff01750e8d64240cb8b07766b18b5d04ff238b3f8b7f043bfa750789dee9fe0000003bd70f8e8302000089d62bf7710e8d64240cb8f80466b18b5d04ff2383c6018b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000c7470803000000897704c707350000008b75008d76f43b75087305ff5528cd8e897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c7070b0000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304893b8b7c24148b378b7c24148b3f83c702710e8d64240cb8f80466b18b5d04ff238b44241489388b7c24108b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704891f8b5c2410893b8b7c24188b7ffcc1e708c1ef0783cf013bcf720e8d64240cb8783266b18b5d04ff238b7c24188b7c4ffe83ff01750e8d64240cb8b07766b18b5d04ff238b3f8b7f043bfa750789cae9fc0000003bd70f8e2a0100002bd7710e8d64240cb8f80466b18b5d04ff2383c2018b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000c7470803000000895704c707350000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04c7070b0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089510489398b7c24148b178b7c24148b3f83c702710e8d64240cb8f80466b18b5d04ff238b5c2414893b8b7c24108b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f8b4c241089398b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707090000008b742408893424897c2404e9040100008d64240cb8c0e766b18b5d04ff238d64240cb8c0e766b18b5d04ff238b4f048b7c24188b7ffcc1e708c1ef0783cf013bcf720e8d64240cb8783266b18b5d04ff238b7c24188b7c4ffe83ff01750e8d64240cb8b07766b18b5d04ff238b3f8b1f8b7f043bfa75068b742408eb6089d62bf7710e8d64240cb8f80466b18b5d04ff2383c6018b7d008d7ff03b7d087305ff5528cd4a897d00c747fc03000000895f08897704c707350000008b75008d76f43b75087305ff5528cd82897500c746fc020000008b542408895604893e8b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000894f04c7070b000000893424897c2404eb0b8b742408893424897c24045a5fbe0100000083c404f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc78b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c21400f400|@11850,1,@1234|32,0,@9988 54,0,1 61,0,0 77,0,@11846 105,0,@9990 145,0,@9988 174,0,@6056 283,0,@9988 310,0,@10986 354,0,@9455 395,0,1 404,0,26 437,0,0 474,0,5 531,0,@9455 614,0,@9988 641,0,@10986 683,0,@9455 724,0,1 733,0,26 766,0,0 803,0,5 860,0,@9455 972,0,0 997,0,@11847 1011,0,@11847 1048,0,@9988 1075,0,@10986 1112,0,@9455 1158,0,26 1220,0,@10093 1248,1,@6057 1285,0,3 1336,0,@9988 1363,0,@10986 1407,0,@9455 1448,0,1 1457,0,26 1490,0,0 1527,0,5 1584,0,@9455 1667,0,@9988 1694,0,@10986 1736,0,@9455 1777,0,1 1786,0,26 1819,0,0 1856,0,5 1913,0,@9455 2005,0,4 2030,0,@11847 2044,0,@11847 2081,0,@9988 2108,0,@10986 2145,0,@9455 2191,0,26 2261,0,5 2288,0,0 6057:D3,424|3b650c7305ff552ccd09a8010f858c0100008b108b40048b7bfcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c53fe83ff01750ab8b07766b18b5d04ff238b3f8b7f048b74240c3bfe750789d7e9fc0000008b74240c3bf70f8e300100008b74240c2bf7710ab8f80466b18b5d04ff2383c6018b7d008d7ff03b7d087305ff5528cd4d897d00c747fc03000000c7470803000000897704c707350000008b75008d76f43b75087305ff5528cd8d897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704c7070b0000008b55008d52f43b55087305ff5528cdc9895500c742fc02000000897204893a8b7c24088b3f8b7424088b3683c602710ab8f80466b18b5d04ff238b4c240889318b7424048b0e8b75008d76f43b75087305ff5528cd8f897500c746fc02000000894e0489168b5424048932578b7c24108b74240c8b542408575652e897feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20c00b8c0e766b18b5d04ff23b801000000c20c00f400|@10030,1,@1233|40,0,@9988 59,0,@10986 109,0,@9455 150,0,1 159,0,26 192,0,0 229,0,5 282,0,@9455 405,0,@11847 415,0,0 6058:D3,844|3b650c7305ff552ccd0950538b342489f783fe017d098d642408e9c000000089ff89fe81ffffffff010f8dac00000089f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab5289f789fe83ff017d068d64240ceb5c89f689f781feffffff017d4c89ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240c8b7ffcc1e708c1ef0783cf01576a01eb1c8d64240cb8383066b18b5d04ff238d642408b8383066b18b5d04ff238b3c2489fe3b7c24040f82840000008d6424088b74240889f783fe01750a8d642410b8e43c66b1c389ff89fe83ff017e5489f689f781feffffff017d4289ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be01000000e9370100008d642410eb048d642410b888b766b18b5d04ff2389f68b7c24148b7c77feff77048b470cff771c6a016a01548b5c240ce82f46feffff3424ff3424f60424010f85940000008b342489f7ff3689ffff77048b7c242c8b4ffcc1e108c1e90783c9018b54240489d63bd1720e8d642438b8783266b18b5d04ff2389f689ff8b4477fe6a016a01548b5c2418e8d545feff5f8d6424048b74242c8b5efcc1e308c1eb0783cb018b4c240489ca3bcb720e8d642438b8003566b18b5d04ff2389f689d2897c56fe5e8d6424048934243b650c7303ff552ce962ffffff8d642410ff742404f604240175368b3c248b3789ffff77048b068b5e048b7e088b760c5756ff742410ff742428ff742428e8e90000005e8934243b650c7303ff552cebc48d64240c8b342483c6028934243b650c7303ff552ce94afeffff8b5424083bd67f0b8d6424108067ffbf89f8c38b5424048b4afcc1e108c1e90783c9013bf1720e8d642410b8783266b18b5d04ff2389d28b4c72fe8b14248b5afcc1e308c1eb0783cb013bf3720e8d642410b8783266b18b5d04ff2389d28b5c72fe8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a895477fe89f283c202710e8d642410b8f80466b18b5d04ff2389d63b650c7305ff552ccdc0e955fffffff400|@11859,1,@1254|37,0,16777215 95,0,0 123,0,16777215 177,0,0 210,0,@9964 224,0,@9964 268,0,@10109 288,0,16777215 342,0,0 351,0,0 371,0,@11455 409,1,@5793 472,0,@9988 499,1,@5793 539,0,@10015 627,1,@6059 715,0,@9988 754,0,@9988 816,0,@9455 6059:D3,14940|8d7c24ac3b7d0c7305ff5530cd09536a016a016a016a016a016a018b44241889e3e8d2f3fdff8b442408ff742414e83d3a000089c7578b442404e88d3a000089c757ff7424046a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e8c33a000089c25e891424897424043b650c7303ff552cebcf5b8b44243ce85549feff89c7578b7c242c8b3fbe50fd30b181c69d0000008d74befcffe6e95b010000909090e95c010000909090e977010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e9c0060000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9bb060000909090e9f3000000909090e9eb000000909090e9c6060000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9c1060000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e902090000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090908b7c240ce9d40800008b7c240883ff0175068b7c240ceb0f8b44240c8b5c2408e8fe39000089c7e9b10800008b7c242c8b7f048b3783fe090f85a70200008b7f0c8b3789f283fe0b753c8b7f04f7c70100000075278b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e93d02000089d683fa070f85000200008b57048b4f088b770c83f9010f85e80000008b0e89cf83f907752b8b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937e99000000089f983ff0575288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb6189cf83f90375288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb3283ff0175288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb05bf010000008b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910e9040100008b398b1e89d983fb07752b8b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931e99000000089cb83f90575288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb6189d983fb0375288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb3283f90175288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb05b9010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938eb3283fe0975288b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e8bf37000089c383fb0175068b7c240ceb0b8b44240ce80538000089c7e9b30200008b7f0c8b1789d683fa070f859f02000089f283fe0b753c8b7f04f7c70100000075278b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e93d02000089d683fa070f85000200008b57048b4f088b770c83f9010f85e80000008b0e89cf83f907752b8b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937e99000000089f983ff0575288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb6189cf83f90375288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb3283ff0175288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb05bf010000008b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910e9040100008b398b1e89d983fb07752b8b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931e99000000089cb83f90575288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb6189d983fb0375288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb3283f90175288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb05b9010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938eb3283fe0975288b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e8cd35000089c383fb0175068b7c240ceb0b8b44240ce81336000089c7eb048b7c240ce9400300008b7c240883ff0175068b7c240ceb0f8b44240c8b5c2408e84e36000089c7e91d0300008b7c240883ff0175068b7c240ceb0f8b44240c8b5c2408e88f36000089c7e9fa0200008b7c240883ff0175068b7c240ceb0f8b44240c8b5c2408e8d036000089c7e9d70200008b7c242c8b7f0c8b1789d683fa070f859f02000089f283fe0b753c8b7f04f7c70100000075278b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e93d02000089d683fa070f85000200008b57048b4f088b770c83f9010f85e80000008b0e89cf83f907752b8b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937e99000000089f983ff0575288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb6189cf83f90375288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb3283ff0175288b76048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb05bf010000008b45008d40f43b45087305ff5528cd84894500c740fc020000008978048910e9040100008b398b1e89d983fb07752b8b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931e99000000089cb83f90575288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb6189d983fb0375288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb3283f90175288b76048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c74104010000008931eb05b9010000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938eb3283fe0975288b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000e89434000089c383fb0175068b7c240ceb0b8b44240ce8da34000089c7eb048b7c240ceb1e8b7c240883ff0175068b7c240ceb0f8b44240c8b5c2408e81835000089c757ff34246a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e85735000089c25e891424897424043b650c7303ff552cebcfff3424ff74240cf60424010f85980000008b3c24ff378b7c2404ff77048b7c24548b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64244cb8783266b18b5d04ff238b7c24548b7424048b4477fe6a016a01548b5c2418e8fe38feff5f8d6424048b7424548b56fcc1e208c1ea0783ca018b7424043bf2720e8d64244cb8003566b18b5d04ff238b7424548b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642410ff3424f60424010f85980000008b3c24ff378b7c2404ff77048b7c24488b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642440b8783266b18b5d04ff238b7c24488b7424048b4477fe6a016a018b5c245854e85538feff5f8d6424048b7424488b56fcc1e208c1ea0783ca018b7424043bf2720e8d642440b8003566b18b5d04ff238b7424488b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642404ff3424f60424010f85980000008b3c24ff378b7c2404ff77048b7c24488b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642440b8783266b18b5d04ff238b7c24488b7424048b4477fe6a016a018b5c245454e8ac37feff5f8d6424048b7424488b56fcc1e208c1ea0783ca018b7424043bf2720e8d642440b8003566b18b5d04ff238b7424488b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642408ff7424086a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e81934000089c25e891424897424043b650c7303ff552cebcfff3424ff742414f60424010f85980000008b3c24ff378b7c2404ff77048b7c24508b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642448b8783266b18b5d04ff238b7c24508b7424048b4477fe6a016a01548b5c2418e8c836feff5f8d6424048b7424508b56fcc1e208c1ea0783ca018b7424043bf2720e8d642448b8003566b18b5d04ff238b7424508b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642410ff742408f60424010f85980000008b3c24ff378b7c2404ff77048b7c24448b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64243cb8783266b18b5d04ff238b7c24448b7424048b4477fe6a016a01548b5c2418e81e36feff5f8d6424048b7424448b56fcc1e208c1ea0783ca018b7424043bf2720e8d64243cb8003566b18b5d04ff238b7424448b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d64240cff3424f60424010f85980000008b3c24ff378b7c2404ff77048b7c243c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642434b8783266b18b5d04ff238b7c243c8b7424048b4477fe6a016a018b5c244854e87535feff5f8d6424048b74243c8b56fcc1e208c1ea0783ca018b7424043bf2720e8d642434b8003566b18b5d04ff238b74243c8b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d6424048b7c24248b3f83ff1f75118b7c24248b7704bf01000000e97e2800008b7c24248b3fbe50fd30b181c67a0f00008d74befcffe6e95b010000909090e959010000909090e957010000909090e955010000909090e953010000909090e951010000909090e97d010000909090e9b9010000909090e9b7010000909090e9f3010000909090e9f4010000909090e947020000909090e97a020000909090e978020000909090e976020000909090e9b1020000909090e9af020000909090e9ad020000909090e9ab020000909090e9a9020000909090e9a7020000909090e9a5020000909090e9a3020000909090e9a1020000909090e99f020000909090e9cb020000909090e9c9020000909090e9c7020000909090e9c5020000909090e9c3020000909090e9c1020000909090e9c2020000909090e907030000909090e962030000909090e960030000909090e95e030000909090e95c030000909090e95a030000909090e958030000909090e956030000909090e954030000909090e952030000909090e97b030000909090e9790300009090908d642428eb048d642428eb048d642428eb048d642428eb048d642428eb7c8d6424245f8b77088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e9fc2400008d6424248b3c24ff77048b7c24048b77088b7c2404ff770c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e93f1f00008d642428eb488d6424248b3c24ff77088b7c24048b770c8b7c2404ff77108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e97c1900008d642428e99a0000008b7c24248b57048b7a048b720cff72108b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff3424e94d1400008d6424245f8b7f04ff37ff77048b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757ff3424e99a0f00008d642428eb048d642428eb478d6424248b3c248b77048b3c24ff77088b7c2404ff770c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e9cf0900008d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb388d6424245f8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e9ac0700008d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428e9b40000008d6424048b7c24208b7f048b7f108b3783fe09752f8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e9550400008d642424e9470400008d6424245f8b7f048b770483fe05754e8b571089d68b1283fa097507ba03000000eb05ba0100000083fa03753189f78b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424e933020000e9290200008d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb048d642428eb358d6424245f8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757ff3424eb128d642428eb048d642428b801000000c21400f604240175388b3c248b378b3c24ff77048b7c24148b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24148b7c77fe57eb068d642408ebb4f604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb93f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d642414b8783266b18b5d04ff238b7c24188b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424188b76fcc1e608c1ee0783ce013bd6720e8d642414b8003566b18b5d04ff238b742418897c56fe5e8934243b650c7303ff552ce98efeffffe93dfefffff604240175388b3c248b378b3c24ff77048b7c24148b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24148b7c77fe57eb068d642408ebb7f604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb93f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d642414b8783266b18b5d04ff238b7c24188b7457fe89f7f7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b7424188b76fcc1e608c1ee0783ce013bd6720e8d642414b8003566b18b5d04ff238b742418897c56fe5e8934243b650c7303ff552ce98efeffffe982fcfffff6042401753b8b3c248b378b3c24ff77048b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642430b8783266b18b5d04ff238b7c24388b7c77fe57e9360100008d642408ff3424f604240175388b3c248b1789ffff77048b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d64242cb8783266b18b5d04ff238b7c24308b7457fe89f7eb098d642428e96cfffffff7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b7424308b76fcc1e608c1ee0783ce013bd6720e8d64242cb8003566b18b5d04ff238b742430897c56fe5e8934243b650c7303ff552ce9d1fefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce95dfefffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d642438b8783266b18b5d04ff238b7c243c8b7457fe89f7f7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b74243c8b76fcc1e608c1ee0783ce013bd6720e8d642438b8003566b18b5d04ff238b74243c897c56fe5e8934243b650c7303ff552ce98bfefffff604240175388b3c248b378b3c24ff77048b7c24148b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24148b7c77fe57eb098d642408e94ff9fffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d642414b8783266b18b5d04ff238b7c24188b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424188b76fcc1e608c1ee0783ce013bd6720e8d642414b8003566b18b5d04ff238b742418897c56fe5e8934243b650c7303ff552ce98efefffff6042401753b8b3c248b378b3c24ff77048b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642418b8783266b18b5d04ff238b7c24208b7c77fe57e9c60300008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742404893757ff3424f6042401753b8b3c248b378b3c24ff77048b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642418b8783266b18b5d04ff238b7c24208b7c77fe57e9e30100008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f604240175388b3c248b378b3c24ff77048b7c241c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8783266b18b5d04ff238b7c241c8b7c77fe57eb098d642410e9bdf6fffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24208b7ffcc1e708c1ef0783cf013bd7720e8d64241cb8783266b18b5d04ff238b7c24208b7457fe89f7f7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b7424208b76fcc1e608c1ee0783ce013bd6720e8d64241cb8003566b18b5d04ff238b742420897c56fe5e8934243b650c7303ff552ce98efefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9b0fdfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24248b7ffcc1e708c1ef0783cf013bd7720e8d642420b8783266b18b5d04ff238b7c24248b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424248b76fcc1e608c1ee0783ce013bd6720e8d642420b8003566b18b5d04ff238b742424897c56fe5e8934243b650c7303ff552ce98bfefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9cdfbfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24248b7ffcc1e708c1ef0783cf013bd7720e8d642420b8783266b18b5d04ff238b7c24248b7457fe89f7f7c70100000075768b0fff770481f9b4e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9d46866b17507b903000000eb228b1983fb0f75168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707b4e866b18b7424248b76fcc1e608c1ee0783ce013bd6720e8d642420b8003566b18b5d04ff238b742424897c56fe5e8934243b650c7303ff552ce98bfefffff6042401753b8b3c248b378b3c24ff77048b7c241c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8783266b18b5d04ff238b7c241c8b7c77fe57e9c20200008d642408ff3424f604240175398b3c248b3f8b3424ff7604ff77048b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b742410893757ff3424eb098d64240ce9d1f1fffff604240175388b3c248b378b3c24ff77048b7c24288b7ffcc1e708c1ef0783cf013bf7720e8d642420b8783266b18b5d04ff238b7c24288b7c77fe57eb158d64240c5e8934243b650c7303ff552ce965fffffff604240175128b3c24ff378b7c2404ff77048b7c2414eb128d6424045e8934243b650c7303ff552ceb83f7c70100000075208b178b77043b5424047507bf03000000eb1389f73b650c7305ff552ccd80ebd8bf0100000083ff037505e9aa0100008b7c24308b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64242cb8783266b18b5d04ff238b7c24308b742404ff7477fe8b3c24f7c7010000000f85050100008b178b77043b54241c7505e9db0000008b0a89cb83f90175418b4c241c8b0983f90175318b52048b4c241c8b49043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb05e996000000e99a00000089d983fb03754e8b4c241c8b0983f90375418b52048b4c241c8b49043bd17507ba03000000eb258b1a8b013bd875188b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa037502eb3eeb4583f90575408b4c241c8b0983f90575338b52048b4c241c8b49043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb07bf03000000eb18eb0089f73b650c7305ff552ccd80e9effeffffbf0100000083ff0375068d642404eb548b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977048b74241889378b7424308b56fcc1e208c1ea0783ca018b7424043bf2720e8d64242cb8003566b18b5d04ff238b7424308b542404897c56fe5e897424043b650c7303ff552c83c404e9e0fdfffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9d1fcfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24208b7ffcc1e708c1ef0783cf013bd7720e8d64241cb8783266b18b5d04ff238b7c24208b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424208b76fcc1e608c1ee0783ce013bd6720e8d64241cb8003566b18b5d04ff238b742420897c56fe5e8934243b650c7303ff552ce98bfefffff6042401753b8b3c248b378b3c24ff77048b7c24408b7ffcc1e708c1ef0783cf013bf7720e8d642438b8783266b18b5d04ff238b7c24408b7c77fe57e9150300008d642408ff742404f6042401753c8b3c248b178b3c24ff77048b7c24388b7ffcc1e708c1ef0783cf013bd7720e8d642434b8783266b18b5d04ff238b7c24388b7457fe89f7e9e30100008d6424048b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f604240175388b3c248b378b3c24ff77048b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d642434b8783266b18b5d04ff238b7c243c8b7c77fe57eb098d642430e9edecfffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24408b7ffcc1e708c1ef0783cf013bd7720e8d64243cb8783266b18b5d04ff238b7c24408b7457fe89f7f7c70100000075768b0fff770481f9a44066b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b04066b17507b903000000eb228b1983fb0575168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a44066b18b7424408b76fcc1e608c1ee0783ce013bd6720e8d64243cb8003566b18b5d04ff238b742440897c56fe5e8934243b650c7303ff552ce98efefffff7c70100000075768b0fff770481f9a44066b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b04066b17507b903000000eb228b1983fb0575168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a44066b18b7424388b76fcc1e608c1ee0783ce013bd6720e8d642434b8003566b18b5d04ff238b742438897c56fe5e8934243b650c7303ff552ce9f3fcfffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce97efcfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24448b7ffcc1e708c1ef0783cf013bd7720e8d642440b8783266b18b5d04ff238b7c24448b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424448b76fcc1e608c1ee0783ce013bd6720e8d642440b8003566b18b5d04ff238b742444897c56fe5e8934243b650c7303ff552ce98bfefffff6042401753b8b3c248b378b3c24ff77048b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642418b8783266b18b5d04ff238b7c24208b7c77fe57e9c30300008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f6042401753b8b3c248b378b3c24ff77048b7c241c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8783266b18b5d04ff238b7c241c8b7c77fe57e9e30100008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f604240175388b3c248b378b3c24ff77048b7c24188b7ffcc1e708c1ef0783cf013bf7720e8d642410b8783266b18b5d04ff238b7c24188b7c77fe57eb098d64240ce901e8fffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c241c8b7ffcc1e708c1ef0783cf013bd7720e8d642418b8783266b18b5d04ff238b7c241c8b7457fe89f7f7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b74241c8b76fcc1e608c1ee0783ce013bd6720e8d642418b8003566b18b5d04ff238b74241c897c56fe5e8934243b650c7303ff552ce98efefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9b0fdfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24208b7ffcc1e708c1ef0783cf013bd7720e8d64241cb8783266b18b5d04ff238b7c24208b7457fe89f7f7c70100000075768b0fff770481f9b4e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9d46866b17507b903000000eb228b1983fb0f75168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707b4e866b18b7424208b76fcc1e608c1ee0783ce013bd6720e8d64241cb8003566b18b5d04ff238b742420897c56fe5e8934243b650c7303ff552ce98bfefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9d0fbfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24248b7ffcc1e708c1ef0783cf013bd7720e8d642420b8783266b18b5d04ff238b7c24248b7457fe89f7f7c70100000075768b0fff770481f9c0e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9109066b17507b903000000eb228b1983fb0d75168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707c0e866b18b7424248b76fcc1e608c1ee0783ce013bd6720e8d642420b8003566b18b5d04ff238b742424897c56fe5e8934243b650c7303ff552ce98bfefffff6042401753b8b3c248b378b3c24ff77048b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642418b8783266b18b5d04ff238b7c24208b7c77fe57e9c30300008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f6042401753b8b3c248b378b3c24ff77048b7c241c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8783266b18b5d04ff238b7c241c8b7c77fe57e9e30100008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e893757ff3424f604240175388b3c248b378b3c24ff77048b7c24188b7ffcc1e708c1ef0783cf013bf7720e8d642410b8783266b18b5d04ff238b7c24188b7c77fe57eb098d64240ce988e2fffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c241c8b7ffcc1e708c1ef0783cf013bd7720e8d642418b8783266b18b5d04ff238b7c241c8b7457fe89f7f7c70100000075768b0fff770481f9a8e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9b83966b17507b903000000eb228b1983fb0375168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707a8e866b18b74241c8b76fcc1e608c1ee0783ce013bd6720e8d642418b8003566b18b5d04ff238b74241c897c56fe5e8934243b650c7303ff552ce98efefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9b0fdfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24208b7ffcc1e708c1ef0783cf013bd7720e8d64241cb8783266b18b5d04ff238b7c24208b7457fe89f7f7c70100000075768b0fff770481f9b4e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9d46866b17507b903000000eb228b1983fb0f75168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707b4e866b18b7424208b76fcc1e608c1ee0783ce013bd6720e8d64241cb8003566b18b5d04ff238b742420897c56fe5e8934243b650c7303ff552ce98bfefffff604240175118b3c248b178b3c24ff77048b7c2410eb158d6424045e8934243b650c7303ff552ce9d0fbfffff7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24248b7ffcc1e708c1ef0783cf013bd7720e8d642420b8783266b18b5d04ff238b7c24248b7457fe89f7f7c70100000075768b0fff770481f9c0e866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9109066b17507b903000000eb228b1983fb0d75168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707c0e866b18b7424248b76fcc1e608c1ee0783ce013bd6720e8d642420b8003566b18b5d04ff238b742424897c56fe5e8934243b650c7303ff552ce98bfefffff604240175388b3c248b378b3c24ff77048b7c24148b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24148b7c77fe57eb098d642408e9e5ddfffff604240175118b3c248b178b3c24ff77048b7c2410eb128d6424045e8934243b650c7303ff552ceb90f7c701000000751e8b0f8b77043bca7507bf03000000eb1389f73b650c7305ff552ccd84ebdabf0100000083ff037505e9030100008b7c24188b7ffcc1e708c1ef0783cf013bd7720e8d642414b8783266b18b5d04ff238b7c24188b7457fe89f7f7c70100000075768b0fff770481f99ce866b175068d642404eb4d8b0189c383f8017502eb4983fb0375448b490481f9943966b17507b903000000eb228b1983fb0175168b490483f9017507b903000000eb05b901000000eb05b90100000083f903750b8d642404bf03000000eb145989cf3b650c7305ff552ccdc4eb82bf0100000083ff037502eb4d8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7079ce866b18b7424188b76fcc1e608c1ee0783ce013bd6720e8d642414b8003566b18b5d04ff238b742418897c56fe5e8934243b650c7303ff552ce98efefffff7c60100000075378b0e8b56048b59048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc157ff34246a01f644240401752a8b7c24048b1f8b7c2404ff77048b442404e8010a000089c25e891424897424043b650c7303ff552cebcfff3424ff74240cf60424010f85980000008b3c24ff378b7c2404ff77048b7c244c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642444b8783266b18b5d04ff238b7c244c8b7424048b4477fe6a016a01548b5c2418e8b80bfeff5f8d6424048b74244c8b56fcc1e208c1ea0783ca018b7424043bf2720e8d642444b8003566b18b5d04ff238b74244c8b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642410ff3424f60424010f85980000008b3c24ff378b7c2404ff77048b7c24408b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642438b8783266b18b5d04ff238b7c24408b7424048b4477fe6a016a018b5c245054e80f0bfeff5f8d6424048b7424408b56fcc1e208c1ea0783ca018b7424043bf2720e8d642438b8003566b18b5d04ff238b7424408b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642404ff3424f60424010f85980000008b3c24ff378b7c2404ff77048b7c24408b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642438b8783266b18b5d04ff238b7c24408b7424048b4477fe6a016a018b5c244c54e8660afeff5f8d6424048b7424408b56fcc1e208c1ea0783ca018b7424043bf2720e8d642438b8003566b18b5d04ff238b7424408b542404897c56fe5e8d6424048934243b650c7303ff552ce95effffff8d642408e908d5fffff4|@11858,1,@1253|34,1,@5772 47,1,@6060 59,1,@6061 97,1,@6062 127,1,@5797 141,0,@6059 542,1,@6063 625,0,0 634,0,0 713,0,0 763,0,0 810,0,0 855,0,0 864,0,0 947,0,0 997,0,0 1044,0,0 1089,0,0 1098,0,0 1203,0,0 1212,0,0 1217,1,@6064 1239,1,@6065 1315,0,0 1324,0,0 1403,0,0 1453,0,0 1500,0,0 1545,0,0 1554,0,0 1637,0,0 1687,0,0 1734,0,0 1779,0,0 1788,0,0 1893,0,0 1902,0,0 1907,1,@6066 1929,1,@6067 1970,1,@6068 2005,1,@6069 2040,1,@6070 2120,0,0 2129,0,0 2208,0,0 2258,0,0 2305,0,0 2350,0,0 2359,0,0 2442,0,0 2492,0,0 2539,0,0 2584,0,0 2593,0,0 2698,0,0 2707,0,0 2712,1,@6071 2734,1,@6072 2772,1,@6073 2809,1,@6074 2891,0,@9988 2922,1,@5793 2960,0,@10015 3060,0,@9988 3091,1,@5793 3129,0,@10015 3229,0,@9988 3260,1,@5793 3298,0,@10015 3375,1,@6075 3457,0,@9988 3488,1,@5793 3526,0,@10015 3627,0,@9988 3658,1,@5793 3696,0,@10015 3796,0,@9988 3827,1,@5793 3865,0,@10015 3930,0,0 3946,0,@6059 4381,0,0 4449,0,0 4523,0,0 4592,0,0 4678,0,0 4761,0,0 4867,0,0 4974,0,0 5027,0,1 5034,0,0 5077,0,0 5182,0,0 5205,0,0 5254,0,@9988 5339,0,1 5360,0,0 5399,0,@9988 5433,0,@11854 5466,0,@10068 5473,0,1 5495,0,1 5502,0,0 5509,0,0 5523,0,1 5545,0,0 5587,0,@11854 5616,0,@10015 5697,0,@9988 5782,0,1 5803,0,0 5842,0,@9988 5876,0,@11855 5909,0,@10071 5916,0,1 5938,0,1 5945,0,0 5952,0,0 5966,0,1 5988,0,0 6030,0,@11855 6059,0,@10015 6140,0,@9988 6211,0,@9988 6256,0,@11855 6289,0,@10071 6296,0,1 6318,0,1 6325,0,0 6332,0,0 6346,0,1 6368,0,0 6410,0,@11855 6439,0,@10015 6535,0,1 6556,0,0 6595,0,@9988 6629,0,@11855 6662,0,@10071 6669,0,1 6691,0,1 6698,0,0 6705,0,0 6719,0,1 6741,0,0 6783,0,@11855 6812,0,@10015 6888,0,@9988 6976,0,1 6997,0,0 7036,0,@9988 7070,0,@11854 7103,0,@10068 7110,0,1 7132,0,1 7139,0,0 7146,0,0 7160,0,1 7182,0,0 7224,0,@11854 7253,0,@10015 7329,0,@9988 7383,0,0 7439,0,@9988 7493,0,0 7546,0,@9988 7634,0,1 7655,0,0 7694,0,@9988 7728,0,@11855 7761,0,@10071 7768,0,1 7790,0,1 7797,0,0 7804,0,0 7818,0,1 7840,0,0 7882,0,@11855 7911,0,@10015 8007,0,1 8028,0,0 8067,0,@9988 8101,0,@11854 8134,0,@10068 8141,0,1 8163,0,1 8170,0,0 8177,0,0 8191,0,1 8213,0,0 8255,0,@11854 8284,0,@10015 8380,0,1 8401,0,0 8440,0,@9988 8474,0,@11856 8507,0,@10757 8514,0,1 8536,0,1 8543,0,0 8550,0,0 8564,0,1 8586,0,0 8628,0,@11856 8657,0,@10015 8733,0,@9988 8810,0,0 8877,0,@9988 8980,0,1 9001,0,0 9044,0,@9988 9131,0,1 9142,0,1 9149,0,0 9203,0,1 9228,0,1 9235,0,0 9242,0,0 9286,0,1 9297,0,1 9304,0,0 9316,0,1 9342,0,0 9420,0,@10015 9524,0,1 9545,0,0 9584,0,@9988 9618,0,@11854 9651,0,@10068 9658,0,1 9680,0,1 9687,0,0 9694,0,0 9708,0,1 9730,0,0 9772,0,@11854 9801,0,@10015 9877,0,@9988 9950,0,@9988 10005,0,0 10058,0,@9988 10146,0,1 10167,0,0 10206,0,@9988 10240,0,@10165 10273,0,@10166 10280,0,1 10302,0,1 10309,0,0 10316,0,0 10330,0,1 10352,0,0 10394,0,@10165 10423,0,@10015 10472,0,@10165 10505,0,@10166 10512,0,1 10534,0,1 10541,0,0 10548,0,0 10562,0,1 10584,0,0 10626,0,@10165 10655,0,@10015 10751,0,1 10772,0,0 10811,0,@9988 10845,0,@11854 10878,0,@10068 10885,0,1 10907,0,1 10914,0,0 10921,0,0 10935,0,1 10957,0,0 10999,0,@11854 11028,0,@10015 11104,0,@9988 11158,0,0 11211,0,@9988 11265,0,0 11318,0,@9988 11406,0,1 11427,0,0 11466,0,@9988 11500,0,@11855 11533,0,@10071 11540,0,1 11562,0,1 11569,0,0 11576,0,0 11590,0,1 11612,0,0 11654,0,@11855 11683,0,@10015 11779,0,1 11800,0,0 11839,0,@9988 11873,0,@11856 11906,0,@10757 11913,0,1 11935,0,1 11942,0,0 11949,0,0 11963,0,1 11985,0,0 12027,0,@11856 12056,0,@10015 12152,0,1 12173,0,0 12212,0,@9988 12246,0,@11857 12279,0,@11162 12286,0,1 12308,0,1 12315,0,0 12322,0,0 12336,0,1 12358,0,0 12400,0,@11857 12429,0,@10015 12505,0,@9988 12559,0,0 12612,0,@9988 12666,0,0 12719,0,@9988 12807,0,1 12828,0,0 12867,0,@9988 12901,0,@11855 12934,0,@10071 12941,0,1 12963,0,1 12970,0,0 12977,0,0 12991,0,1 13013,0,0 13055,0,@11855 13084,0,@10015 13180,0,1 13201,0,0 13240,0,@9988 13274,0,@11856 13307,0,@10757 13314,0,1 13336,0,1 13343,0,0 13350,0,0 13364,0,1 13386,0,0 13428,0,@11856 13457,0,@10015 13553,0,1 13574,0,0 13613,0,@9988 13647,0,@11857 13680,0,@11162 13687,0,1 13709,0,1 13716,0,0 13723,0,0 13737,0,1 13759,0,0 13801,0,@11857 13830,0,@10015 13906,0,@9988 13994,0,1 14015,0,0 14054,0,@9988 14088,0,@11854 14121,0,@10068 14128,0,1 14150,0,1 14157,0,0 14164,0,0 14178,0,1 14200,0,0 14242,0,@11854 14271,0,@10015 14399,1,@6076 14481,0,@9988 14512,1,@5793 14550,0,@10015 14650,0,@9988 14681,1,@5793 14719,0,@10015 14819,0,@9988 14850,1,@5793 14888,0,@10015 6060:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1236|66,0,0 6061:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1237|66,0,0 6062:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@1238|219,0,0 6063:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1239| 6064:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1240|66,0,0 6065:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1241| 6066:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1242|66,0,0 6067:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1243| 6068:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1244| 6069:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1245| 6070:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1246| 6071:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1247|66,0,0 6072:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1248| 6073:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1249| 6074:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@1250|219,0,0 6075:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@1251|219,0,0 6076:D3,228|3b650c7305ff552ccd09a8010f85ac000000ff308b40043b1c2475298b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c33b1c247d468b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008947048b342489378d6424048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c3e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f400|@11659,1,@1252|219,0,0 6077:D3,976|3b650c7305ff552ccd0950538b7c24148b7ffcc1e708c1ef0783cf01578b7c24088b57fcc1e208c1ea0783ca018b3c2483ff017d098d64240ce9f10200008b3c2481ffffffff010f8dde0200008b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240483ff017d098d642410e98a0200008b7c240481ffffffff010f8d760200008b7c240489f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c240883ff017d098d642414e9210200008b7c240881ffffffff010f8d0d0200008b7c240889f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab8b7c240883ff017d098d642414e9b90100008b7c240881ffffffff010f8da50100008b7c240889f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd46895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab53b9010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000040890f5783fa017d098d64241ce93201000081faffffff010f8d2201000089d789f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd42895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab8b7c24288b5424208b4c2424ff7424185756ff742414ff74241cff742428ff74241cff74241c5251b801000000e8ab0100005f8b3f83ff010f85840000008b7c240c83ff01750e8d642418bfe43c66b1e9ed0000008b7c240c83ff017e568b7c240c81ffffffff017d448b7c240c89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be01000000e9840000008d642418eb048d642418b888b766b18b5d04ff238d6424188b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c20c008d64241cb8383066b18b5d04ff238d642414b8383066b18b5d04ff238d642414b8383066b18b5d04ff238d642410b8383066b18b5d04ff238d64240cb8383066b18b5d04ff238b54240c3bd67f2e8d6424188067ffbf8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c20c008b14248b52fcc1e208c1ea0783ca013bf2720e8d642418b8783266b18b5d04ff238b14248b5472fe83fa017507ba9ce866b1eb028b12895477fe89f283c202710e8d642418b8f80466b18b5d04ff2389d63b650c7305ff552ccdc0e96afffffff4|@11875,1,@1273|67,0,16777215 126,0,0 157,0,16777215 217,0,0 248,0,16777215 308,0,0 338,0,16777215 398,0,0 406,0,0 455,0,16777215 513,0,0 560,0,0 565,1,@6078 595,0,@10109 619,0,16777215 675,0,0 684,0,0 704,0,@11455 748,0,0 760,0,@9964 774,0,@9964 788,0,@9964 802,0,@9964 816,0,@9964 872,0,1 903,0,@9988 925,0,@11854 949,0,@9455 6078:D3,1272|3b650c7305ff552ccd09538b3c248b57fc89d6c1e208c1ea0783ca013bc2720e8d642404b8783266b18b5d04ff2389ff8b5447fe83fa03750c8d642404b801000000c2280089ffc1e608c1ee0783ce013bc6720e8d642404b8003566b18b5d04ff2389ffc74447fe030000008b7c242c8b7ffcc1e708c1ef0783cf013bc7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c47feff37ff7704ff770cff771cff742408f6042401754a8b3c248b3789ffff7704ff36ff76048b7e088b760c8b5424488b4c24448b5c24408b44243c5756525153508b44241c8b5c2418e8290400008d6424085e8934243b650c7303ff552cebb08d6424048b74240c8b3eba704431b181c2100100008d54bafcffe2e933000000909090e9da000000909090e92b010000909090e928010000909090e92b010000909090e9cf010000909090e91d02000090909089f689f7ff760889ffff7710ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2450e861feffff8d642410ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2450e812feffff8d642418e96b01000089f6ff7608ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b4424388b5c244ce8b9fdffff8d642414e912010000e90d01000089f68b7e0457e91802000089f689f7ff760489ffff7708ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2450e849fdffff8d642410ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2450e8fafcffff8d642418eb5689f6ff7604ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b4424388b5c244ce8a4fcffff8d642414eb008b7c240489fb83ff0175065f83c404eb0e8b0424e87113000089c78d64240857f60424010f85860000008b3c248b0789ffff77048b7c24288b7ffcc1e708c1ef0783cf013bc7720e8d642414b8a43266b18b5d04ff238b7c24288b7c47fef7c7010000007502eb37ff74241cff7424288b7c24408b7424348b54243c8b4c24388b5c2428ff742404ff7424045756525153bb01000000e8531300008d6424085e8934243b650c7303ff552ce970ffffff8d642404ff3424ff742420ff742438ff7424308b74243c8b5424388b4c24288b5c24208b4424248944242c8b44240c895c24308b5c2408894c2434895424388974243c8b3c24897c24408b7c2404897c24448b7c241c897c242883c428e9bc2500008d642414f6042401756d8b342489f7ff3689ffff7704ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2454e82bfbffff8d6424105e8d6424048934243b650c7303ff552ceb8d8d642404e96efefffff4000000|@11874,1,@1272|37,0,@9988 62,0,0 89,0,@10015 104,0,1 133,0,@9990 223,1,@6079 256,0,@6078 887,1,@6081 943,0,@9990 1012,0,0 1017,1,@6082 1136,1,@6090 6079:D3,4080|3b650c7305ff552ccd098b3bbe7c4931b181c61d0000008d74befcffe6e95b010000909090e953010000909090e953010000909090e943010000909090e9dc010000909090e9dc010000909090e93f020000909090e923010000909090e954030000909090e971040000909090e996040000909090e9b6050000909090e9fb000000909090e9f3000000909090e9a9050000909090e9e3000000909090e9be060000909090e9d3000000909090e9cb000000909090e9c3000000909090e979070000909090e9b3000000909090e9ab000000909090e9a3000000909090e9c2070000909090e993000000909090e98b000000909090e915080000909090e97b000000909090e970080000909090e96b000000909090e98f080000909090e96b090000909090e953000000909090e94b000000909090e9770a0000909090e93b000000909090e9710a0000909090e92b000000909090e923000000909090e9860a0000909090e9ad0a0000909090e9100b0000909090e903000000909090b801000000c218008b7b048b5f08ff77108b3783fe097528588b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce9470e00008b7f0c8b3783fe09754bff77048b7c24188b7424148b5424105756528b442410e8220e00008b4424045b8d6424048b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce9f20d00008d642404b801000000c218008b7b04e92b0d00008b73088b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fea4e966b1b801000000c218008b73048b4b088b530c8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8783266b18b5d04ff238b7c24048b7c4ffef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8003566b18b5d04ff238b7c2404c7444ffeace966b18b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c24048b7c57fef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c2404c74457feb4e966b18b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477febce966b1b801000000c218008b73088b4b0c8b53108b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8783266b18b5d04ff238b7c24048b7c4ffef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8003566b18b5d04ff238b7c2404c7444ffeace966b18b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c24048b7c57fef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c2404c74457feb4e966b18b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477febce966b1b801000000c218008b43048b5b0c8b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce9fc0a00008b7b048b4f048b570c8b77108b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8783266b18b5d04ff238b7c24048b7c4ffef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8003566b18b5d04ff238b7c2404c7444ffea4e966b18b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c24048b7c57fef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c2404c74457fea4e966b18b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fec4e966b1b801000000c218008b7b048b7f04e9c50700008b4b048b53088b730c8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8783266b18b5d04ff238b7c24048b7c4ffef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bcf720ab8003566b18b5d04ff238b7c2404c7444ffeb4e966b18b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c24048b7c57fef7c7010000007502eb2a8b7c24048b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c2404c74457fea4e966b18b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477febce966b1b801000000c218008b43048b7b0c8b1789d683fa0b75478b4f0489caf6c1017407b903000000eb05b90100000083f10283f903752989d78b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb4c83fe0775478b570889d6f6c2017407ba03000000eb05ba0100000083f20283fa03752989f78b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb008b3783fe09752a8b5f048b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce9d1070000b801000000c218008b4b088b7b0cff73108b3783fe09754dff77048b7c24188b7424148b54241057565289cb8b442410e89c0700008b4424045b8d6424048b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce96c0700008d642404b801000000c218008b73048b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fea4e966b1b801000000c218008b73048b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fea4e966b1b801000000c218008b7b088b431089fb8b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce95b0600008b7b048b5f088b470c8b7f108b1789d683fa090f8595000000ff77048b7c24148b7424108b54240c575652e82b0600008b7c24088b77fcc1e608c1ee0783ce018b3c243bfe720e8d642404b8783266b18b5d04ff238b7c24088b34248b7c77fef7c701000000750c8d642404b801000000c218008b7c24088b77fcc1e608c1ee0783ce018b3c243bfe720e8d642404b8003566b18b5d04ff238b7c24085ec74477febce966b1b801000000c2180089f783ff0575278b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce97f050000b801000000c218008b7b048b77048b7f108b0f89ca83f90b75478b5f0489d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989cf8b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70709000000eb4c83fa0775478b4f0889caf6c1017407b903000000eb05b90100000083f10283f903752989d78b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70709000000eb008b1783fa09757083fe05756b8b77048b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477febce966b1b801000000c21800b801000000c218008b7b048b3fe9f40000008b43048b5b0c8b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce91c0400008b7b088b431089fb8b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce9ed0300008b73048b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fef7c7010000007508b801000000c218008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fea4e966b1b801000000c218008b43048b5b0c8b7424108b54240c8b4c2408894c241089542414897424188b3c24897c240c83c40ce955030000f7c7010000000f853d0100008b17ff77048b328b52048b1e89d983fb0b75468b460489c3a8017407b803000000eb05b80100000083f00283f803752989de8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70609000000eb4c83f90775478b5e0889d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989ce8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70609000000eb008b0e83f909757f8b4e048b7424088b76fcc1e608c1ee0783ce013bce720e8d642404b8783266b18b5d04ff238b7424088b744efef7c6010000007502eb468b75008d76f83b75087305ff5528cd86897500c746fc0100000089168b5424088b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b54240889744afeeb005e89f73b650c7305ff552ccd80e9b7feffffb801000000c21800f7c7010000000f853d0100008b17ff77048b328b52048b1e89d983fb0b75468b460489c3a8017407b803000000eb05b80100000083f00283f803752989de8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70609000000eb4c83f90775478b5e0889d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989ce8b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70609000000eb008b0e83f909757f8b4e048b7424088b76fcc1e608c1ee0783ce013bce720e8d642404b8783266b18b5d04ff238b7424088b744efef7c6010000007502eb468b75008d76f83b75087305ff5528cd86897500c746fc0100000089168b5424088b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b54240889744afeeb005e89f73b650c7305ff552ccd80e9b7feffffb801000000c21800f7c7010000000f858a0000008b178b77048b1a8b4a048b5424048b52fcc1e208c1ea0783ca013bda720ab8783266b18b5d04ff238b5424048b545afef6c2017502eb428b55008d52f83b55087305ff5528cdca895500c742fc01000000890a8b4c24048b49fcc1e108c1e90783c9013bd9720ab8003566b18b5d04ff238b4c2404895459fe89f73b650c7305ff552ccd80e96affffffb801000000c21800f4|@11866,1,@1256|13,0,@6079 382,0,0 441,1,@6080 478,1,@6080 526,1,@6080 535,0,0 574,0,@9988 600,0,0 628,0,@10015 645,0,@11861 650,0,0 687,0,@9988 735,0,@10015 752,0,@11862 777,0,@9988 825,0,@10015 842,0,@11863 867,0,@9988 893,0,0 921,0,@10015 938,0,@11864 943,0,0 980,0,@9988 1028,0,@10015 1045,0,@11862 1070,0,@9988 1118,0,@10015 1135,0,@11863 1160,0,@9988 1186,0,0 1214,0,@10015 1231,0,@11864 1236,0,0 1284,1,@6080 1321,0,@9988 1369,0,@10015 1386,0,@11861 1411,0,@9988 1459,0,@10015 1476,0,@11861 1501,0,@9988 1527,0,0 1555,0,@10015 1572,0,@11865 1577,0,0 1625,0,@9988 1673,0,@10015 1690,0,@11863 1715,0,@9988 1763,0,@10015 1780,0,@11861 1805,0,@9988 1831,0,0 1859,0,@10015 1876,0,@11864 1881,0,0 1914,0,1 1921,0,0 1968,0,4 1990,0,1 1997,0,0 2044,0,4 2095,1,@6080 2100,0,0 2148,1,@6080 2196,1,@6080 2205,0,0 2236,0,@9988 2262,0,0 2290,0,@10015 2307,0,@11861 2312,0,0 2343,0,@9988 2369,0,0 2397,0,@10015 2414,0,@11861 2419,0,0 2469,1,@6080 2517,1,@6080 2549,0,@9988 2582,0,0 2617,0,@10015 2635,0,@11864 2640,0,0 2689,1,@6080 2694,0,0 2730,0,1 2737,0,0 2784,0,4 2806,0,1 2813,0,0 2860,0,4 2902,0,@9988 2928,0,0 2956,0,@10015 2973,0,@11864 2978,0,0 2986,0,0 3044,1,@6080 3091,1,@6080 3119,0,@9988 3145,0,0 3173,0,@10015 3190,0,@11861 3195,0,0 3243,1,@6080 3288,0,1 3295,0,0 3342,0,4 3364,0,1 3371,0,0 3418,0,4 3459,0,@9988 3539,0,@10015 3577,0,0 3625,0,1 3632,0,0 3679,0,4 3701,0,1 3708,0,0 3755,0,4 3796,0,@9988 3876,0,@10015 3914,0,0 3964,0,@9988 4037,0,@10015 4072,0,0 6080:D3,456|3b650c7305ff552ccd098b7c240c8b7ffcc1e708c1ef0783cf013bdf720ab8a43266b18b5d04ff238b7c240c8b7c5ffe8b3ff7c701000000751e8b178b77043bd07507bf03000000eb1389f73b650c7305ff552ccd89ebdabf0100000083ff037508b801000000c20c008b7c24088b7ffcc1e708c1ef0783cf013bdf720ab8783266b18b5d04ff238b7c24088b745ffe8b7c24048b7ffcc1e708c1ef0783cf013bc7720ab8783266b18b5d04ff238b7c2404ff7447fe89f7f7c701000000751e8b0f8b57043bc87507bf03000000eb1389d73b650c7305ff552ccdc9ebdabf0100000083ff037502eb498b7d008d7ff43b7d087305ff5528cd49897d00c747fc0200000089770489078b74240c8b76fcc1e608c1ee0783ce013bde720e8d642404b8003566b18b5d04ff238b74240c897c5efe8b3c24f7c701000000751e8b178b77043bd37507bf03000000eb1389f73b650c7305ff552ccd89ebdabf0100000083ff03750c8d642404b801000000c20c008b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008b34248977048d642404891f8b7424048b76fcc1e608c1ee0783ce013bc6720ab8003566b18b5d04ff238b742404897c46feb801000000c20c00f400|@11860,1,@1255|31,0,@9990 68,0,1 89,0,0 99,0,0 127,0,@9988 165,0,@9988 202,0,1 223,0,0 290,0,@10015 328,0,1 349,0,0 363,0,0 429,0,@10015 447,0,0 6081:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1257| 6082:D3,1652|3b650c7305ff552ccd0950538b7c24208b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8783266b18b5d04ff238b7c24208b7424048b7c77fe83ff01757f8b7c241c8b77fcc1e608c1ee0783ce018b7c24043bfe720e8d642408b8a43266b18b5d04ff238b7c241c8b7424048b7c77feff37ff77048b5c24288b442404e8010600008b3c2483ff0175088d64240489c7eb0e8b1c24e87106000089c78d64240457f644240801750e8b7c24088b3f8b3424e95f040000bf01000000eb098d6424088b07c21c0083ff01754b8b7c24208b77fcc1e608c1ee0783ce018b7c240c3bfe720e8d642410b8783266b18b5d04ff238b7c24208b74240c8b7c77fef7c701000000750a8b37ff3424e9ad020000bf01000000eb098d6424108b07c21c0083ff010f85a90000008b7c241c8b77fcc1e608c1ee0783ce018b7c240c3bfe720e8d642410b8783266b18b5d04ff238b7c241c8b74240cff7477fe8b7c241c8b77fcc1e608c1ee0783ce018b7c24103bfe720e8d642414b8783266b18b5d04ff238b7c241c8b7424108b5c77fe8b7c242c8b7424248b5424208b4c241c6a015756ff742410ff74242052ff742420518b442420e8b805000089c78d64240483ff017506ff74242ceb128d6424108b07c21c008d6424108b07c21c00f604240175118b3c248b078b3c24ff77048b7c2408eb578d6424088b7c24108b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74240c893e8b7c2424f7c701000000750d8d6424088b7c241c8b07c21c008d642408b8648e66b18b5d04ff23f7c7010000000f85fc0000008b37ff77043bf075098d642404e9cf0000008b1689d183fa01753d8b1083fa0175318b76048b50043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb098d642404e98e000000e99200000089ca83f903754a8b1083fa0375418b76048b50043bf27507be03000000eb258b0e8b1a3bcb75188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe0375068d642404eb3aeb4183fa05753c8b1083fa0575338b76048b50043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0b8d642404bf03000000eb19eb005e89f73b650c7305ff552ccd81e9f8feffffbf0100000083ff0374518d6424148b7d008d7ff83b7d087305ff5528cd01897d00c747fc0100000089078b74241c8b56fcc1e208c1ea0783ca018b34243bf2720e8d642404b8003566b18b5d04ff238b74241c5a897c56fec21c005e8934243b650c7303ff552ce91efefffff60424010f85030100008b14248b128b0c24ff71043bd675098d642408e9cf0000008b0a89cb83f901753d8b0e83f90175318b52048b4e043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb098d642408e98e000000e99200000089d983fb03754a8b0e83f90375418b52048b4e043bd17507ba03000000eb258b1a8b013bd875188b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa0375068d642408eb3aeb4183f905753c8b0e83f90575338b52048b4e043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb0b8d642408be03000000eb1eeb0059890c243b650c7305ff552ccdc0e9f3feffff8d642404be0100000083fe0374348b7424288b56fcc1e208c1ea0783ca018b74240c3bf2720e8d642410b8003566b18b5d04ff238b7424288b54240c897c56feeb05bf01000000e90afcfffff7c6010000000f85fc0000008b16ff76043bd775098d642404e9cf0000008b0a89cb83f901753d8b0f83f90175318b52048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb098d642404e98e000000e99200000089d983fb03754a8b0f83f90375418b52048b4f043bd17507ba03000000eb258b1a8b013bd875188b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa0375068d642404eb3aeb4183f905753c8b0f83f90575338b52048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb0b8d642404bf03000000eb19eb005a89d63b650c7305ff552ccdc0e9f8feffffbf0100000083ff03743c8b7c24288b77fcc1e608c1ee0783ce018b7c240c3bfe720e8d642410b8003566b18b5d04ff238b7424288b7c24088b54240c897c56fe8b7c2408eb05bf01000000e959fafffff400|@11868,1,@1265|41,0,@9988 96,0,@9990 131,1,@6083 155,1,@6084 188,0,0 237,0,@9988 277,0,0 330,0,@9988 380,0,@9988 440,1,@6085 580,0,@11149 646,0,1 657,0,1 664,0,0 714,0,1 739,0,1 746,0,0 753,0,0 793,0,1 804,0,1 811,0,0 827,0,1 854,0,0 923,0,@10015 1022,0,1 1033,0,1 1040,0,0 1090,0,1 1115,0,1 1122,0,0 1129,0,0 1169,0,1 1180,0,1 1187,0,0 1203,0,1 1235,0,0 1273,0,@10015 1297,0,0 1363,0,1 1374,0,1 1381,0,0 1431,0,1 1456,0,1 1463,0,0 1470,0,0 1510,0,1 1521,0,1 1528,0,0 1544,0,1 1571,0,0 1609,0,@10015 1641,0,0 6083:D3,116|3b650c7305ff552ccd09a801755d8b388b40048b73fcc1e608c1ee0783ce013bfe720ab8783266b18b5d04ff238b7c7bfe83ff017505e9c5ffffffff37e8beffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@11291,1,@1258|36,0,@9988 108,0,0 6084:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1259| 6085:D3,2232|3b650c7305ff552ccd0953a8010f859e000000ff30ff70048b7c24288b57fcc1e208c1ea0783ca018b74240489f73bf2720e8d64240cb8783266b18b5d04ff238b74242889ff8b447efe83f80175498b7424248b56fcc1e208c1ea0783ca0189ff89fe3bfa720e8d64240cb8783266b18b5d04ff238b7c242489f68b4477fea801750b8b38ff742420e9d0060000b801000000e9c1060000a801750b8b38ff742420e95a050000b801000000e95d040000f60424010f85a20000008b342489f7ff3689ffff77048b7c24288b57fcc1e208c1ea0783ca018b74240489f73bf2720e8d64240cb8783266b18b5d04ff238b74242889ff8b447efe83f80175498b7424248b56fcc1e208c1ea0783ca0189ff89fe3bfa720e8d64240cb8783266b18b5d04ff238b7c242489f68b4477fea801750b8b38ff742420e979020000b801000000e96a020000a801750b8b38ff742420e903010000b801000000eb0c8d642404b801000000c2200083f8010f85e00000008b7c24108b57fcc1e208c1ea0783ca018b7c240489fe3bfa720e8d64240cb8783266b18b5d04ff238b7c241089f68b4477fe8b5c242c8b7c241457e81a07000089c383fb0175035eeb0e8b0424e8f407000089c68d6424048b5424288b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d6424045657ff742428ff7424288b7424288b5424248b4c24208b5c241c8b44241889442418b801000000895c241c8b5c240c894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e9b2fdffff8d6424108d64240cc22000f60424010f85020100008b14248b3289d2ff72043bf775098d642408e9cf0000008b1689d183fa01753d8b1783fa0175318b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb098d642408e98e000000e99200000089ca83f903754a8b1783fa0375418b76048b57043bf27507be03000000eb258b0e8b1a3bcb75188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe0375068d642408eb3aeb4183fa05753c8b1783fa0575338b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0b8d642408bf03000000eb1eeb005a8914243b650c7305ff552ccd81e9f4feffff8d642404bf0100000083ff0374348b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d64240cb8003566b18b5d04ff238b7c24288b74241c894477feeb05b801000000e9b8fdffffe9b3fdfffff60424010f85020100008b14248b3289d2ff72043bf775098d642408e9cf0000008b1689d183fa01753d8b1783fa0175318b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb098d642408e98e000000e99200000089ca83f903754a8b1783fa0375418b76048b57043bf27507be03000000eb258b0e8b1a3bcb75188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe0375068d642408eb3aeb4183fa05753c8b1783fa0575338b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0b8d642408bf03000000eb1eeb005a8914243b650c7305ff552ccd81e9f4feffff8d642404bf0100000083ff0374348b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d64240cb8003566b18b5d04ff238b7c24288b74241c894477feeb05b801000000e9a3feffff83f8010f85e30000008b7c24188b57fcc1e208c1ea0783ca018b7c240489fe3bfa720e8d64240cb8783266b18b5d04ff238b7c241889f68b4477fe8b5c242c8b7c241457e8c504000089c383fb0175035eeb0e8b0424e89f05000089c68d6424048b5424288b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240456ff74240457ff74242cff74242c8b74242c8b5424288b4c24248b5c24208b44241c8944241c8b442410895c24208b5c240c894c2424895424288974242c8b3c24897c24308b7c2404897c24348b7c2408897c243883c418e90afaffff8d6424188d64240cc22000f60424010f85020100008b14248b3289d2ff72043bf775098d642408e9cf0000008b1689d183fa01753d8b1783fa0175318b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb098d642408e98e000000e99200000089ca83f903754a8b1783fa0375418b76048b57043bf27507be03000000eb258b0e8b1a3bcb75188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe0375068d642408eb3aeb4183fa05753c8b1783fa0575338b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0b8d642408bf03000000eb1eeb005a8914243b650c7305ff552ccd81e9f4feffff8d642404bf0100000083ff0374348b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d64240cb8003566b18b5d04ff238b7c24288b74241c894477feeb05b801000000e9b5fdffffe9b0fdfffff60424010f85020100008b14248b3289d2ff72043bf775098d642408e9cf0000008b1689d183fa01753d8b1783fa0175318b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb098d642408e98e000000e99200000089ca83f903754a8b1783fa0375418b76048b57043bf27507be03000000eb258b0e8b1a3bcb75188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe0375068d642408eb3aeb4183fa05753c8b1783fa0575338b76048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0b8d642408bf03000000eb1eeb005a8914243b650c7305ff552ccd81e9f4feffff8d642404bf0100000083ff0374348b7c24288b77fcc1e608c1ee0783ce018b7c241c3bfe720e8d64240cb8003566b18b5d04ff238b7c24288b74241c894477feeb05b801000000e9a3fefffff400|@11867,1,@1264|55,0,@9988 108,0,@9988 143,0,0 168,0,0 230,0,@9988 283,0,@9988 318,0,0 343,0,0 354,0,0 401,0,@9988 430,1,@6086 448,1,@6087 535,0,0 661,0,1 672,0,1 679,0,0 729,0,1 754,0,1 761,0,0 768,0,0 808,0,1 819,0,1 826,0,0 842,0,1 874,0,0 912,0,@10015 936,0,0 1010,0,1 1021,0,1 1028,0,0 1078,0,1 1103,0,1 1110,0,0 1117,0,0 1157,0,1 1168,0,1 1175,0,0 1191,0,1 1223,0,0 1261,0,@10015 1285,0,0 1334,0,@9988 1363,1,@6088 1381,1,@6089 1597,0,1 1608,0,1 1615,0,0 1665,0,1 1690,0,1 1697,0,0 1704,0,0 1744,0,1 1755,0,1 1762,0,0 1778,0,1 1810,0,0 1848,0,@10015 1872,0,0 1946,0,1 1957,0,1 1964,0,0 2014,0,1 2039,0,1 2046,0,0 2053,0,0 2093,0,1 2104,0,1 2111,0,0 2127,0,1 2159,0,0 2197,0,@10015 2221,0,0 6086:D3,216|3b650c7305ff552ccd09a8017509ff308b400489dfeb08b801000000c20400f7c701000000751f8b178b77043b14247507bf03000000eb1389f73b650c7305ff552ccd89ebd9bf0100000083ff0374068b7c2408eb118d6424048b74240489742404e999fffffff7c701000000751f8b178b77043b14247507bf03000000eb1389f73b650c7305ff552ccd89ebd9bf0100000083f70283ff0375358b7c240857e85bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d642404eb84f400|@9865,1,@1260|24,0,0 50,0,1 71,0,0 122,0,1 143,0,0 6087:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1261| 6088:D3,216|3b650c7305ff552ccd09a8017509ff308b400489dfeb08b801000000c20400f7c701000000751f8b178b77043b14247507bf03000000eb1389f73b650c7305ff552ccd89ebd9bf0100000083ff0374068b7c2408eb118d6424048b74240489742404e999fffffff7c701000000751f8b178b77043b14247507bf03000000eb1389f73b650c7305ff552ccd89ebd9bf0100000083f70283ff0375358b7c240857e85bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c204008d642404eb84f400|@9865,1,@1262|24,0,0 50,0,1 71,0,0 122,0,1 143,0,0 6089:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1263| 6090:D3,240|3b650c7305ff552ccd0953a8010f85d0000000ff30ff7004ff7424288b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b4424208b5c2428e8b6ffffff8d6424088b3c24ff378b7c2404ff77048b7c2408ff77088b7c240cff770cff742414ff742438ff742438ff7424388b5424388b4c24348b5c24308b44242c8b742428894424208b44241c895c24248b5c2418894c24288954242c8b3c24897c24308b7c2404897c24348b7c2408897c24388b7c240c897c243c8b7c2410897c24408b7c2414897c24448974241c83c41ce9250000008d6424288d642404b801000000c21c00f4|@11273,1,@1271|219,1,@6091 232,0,0 6091:D3,30572|3b650c7305ff552ccd098b3bbea46f31b181c61d0000008d74befcffe6e95b010000909090e95f010000909090e966010000909090e9ad0b0000909090e9210c0000909090e9220c0000909090e9960c0000909090e9440d0000909090e94e0d0000909090e9fc0d0000909090e9a10e0000909090e956130000909090e9c9130000909090e93d140000909090e93d140000909090e9eb140000909090e938150000909090e9dc1a0000909090e9a91c0000909090e9e31c0000909090e91d1d0000909090e9bd220000909090e9f7220000909090e931230000909090e91b270000909090e955270000909090e955270000909090e955270000909090e98f270000909090e9d92b0000909090e97b300000909090e966340000909090e9f4350000909090e9303e0000909090e91a420000909090e98e420000909090e934430000909090e91e470000909090e91e480000909090e9684c0000909090e9b2500000909090e954550000909090e98e550000909090e920560000909090ff73048b7b1057e942750000ff7304ff73088b7b0c57e95e7400008b7b048b3783fe090f859f040000ff770cff7708ff7710ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e83aeaffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424248b5c2420e8e5e9ffff8d64240c8b3c248b3789f283fe0b755a89ff8b7f048d642404f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e88fe9ffff8d642408b801000000c22800b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bb01000000e81ce9ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8d3e8ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e889e8ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e83fe8ffff8d642408eb4589ff83fe01753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8fae7ffff8d642408eb00ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8c1e7ffff8d642408b80100000083c40cc22800ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e87fe7ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e837e7ffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8e7e6ffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e897e6ffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e849e6ffff8d64240cb80100000083c408c228008d64240cb801000000c2280089ff83fe09754489ffff7704ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e8efe5ffff8d64240cb801000000c228008d642404b801000000c22800ff770c8b34248b1683fa090f85f500000089f6ff7604ff7708ff7710ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e888e5ffff89c7578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b3424893757ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424308b5c2420e835e5ffff8d6424088b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64241057ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424248b5c2420e8dde4ffff8d642410b801000000c22800ff7708ff7710ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e898e4ffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424248b5c2420e843e4ffff8d64240c8b3c248b3789f283fe0b755a89ff8b7f048d642404f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8ede3ffff8d642408b801000000c22800b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bb01000000e87ae3ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e831e3ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8e7e2ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e89de2ffff8d642408eb4589ff83fe01753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e858e2ffff8d642408eb00ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e81fe2ffff8d642408b80100000083c40cc22800ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e8dde1ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e895e1ffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e845e1ffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8f5e0ffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8a7e0ffff8d64240cb80100000083c408c228008d64240cb801000000c2280089ff83fe09754489ffff7704ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e84de0ffff8d64240cb801000000c228008d642404b801000000c22800ff7304ff7308ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e8fcdfffff8d642408ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8c5dfffff8d642408b801000000c228008b7b0457e908690000ff7304ff7308ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bba4e966b1e877dfffff8d642408ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e840dfffff8d642408b801000000c22800ff7304ff7308ff730cff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bbace966b1e8f8deffff8d642404ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bbb4e966b1e8c1deffff8d64240cff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bbbce966b1e88adeffff8d642408b801000000c22800ff7304ff7308ff730c8b7b1057e964660000ff7308ff730cff7310ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bbace966b1e830deffff8d642404ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bbb4e966b1e8f9ddffff8d64240cff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bbbce966b1e8c2ddffff8d642408b801000000c22800ff73048b7b08ff730c83ff0775068b7c2410eb0f83ff0975068b7c2410eb048b7c240c578b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e863ddffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937578b7c24308b74242c8b5424288b4c24248b5c24208b44241cff7424045756525153508b4424248b5c241ce815ddffff8d642410b801000000c228008b7b04ff37ff7704ff770cff7710ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bba4e966b1e8c8dcffff8d642404ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bba4e966b1e891dcffff8d642404ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bbc4e966b1e85adcffff8d6424108b3c248b3789f283fe0b755a89ff8b7f048d642404f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e804dcffff8d642408b801000000c22800b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bb01000000e891dbffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e848dbffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8fedaffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8b4daffff8d642408eb4589ff83fe01753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e86fdaffff8d642408eb00ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e836daffff8d642408b80100000083c40cc22800ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e8f4d9ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8acd9ffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e85cd9ffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e80cd9ffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8bed8ffff8d64240cb80100000083c408c228008d64240cb801000000c2280089ff83fe09754489ffff7704ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e864d8ffff8d64240cb801000000c228008d642404b801000000c228008b7b04ff7704ff770cff7710ff37ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b4424185756525153508b4424288b5c2418e87363000089c757ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b4424205756525153508b4424288b5c2418e8d164000089c757ff742418e975570000ff7304ff7308ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e898d7ffff8d642404ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e861d7ffff8d64240cb801000000c22800b801000000c22800ff7304ff7308ff730cff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bbb4e966b1e811d7ffff8d642404ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bba4e966b1e8dad6ffff8d642404ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bbbce966b1e8a3d6ffff8d642410b801000000c22800ff73048b7b08ff730cff731083ff017502eb39ff37ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e84fd6ffff8d642408ff742404e9704d0000ff73048b7b08ff730c83ff0775068b7c2410eb0f83ff0975068b7c2410eb048b7c240c578b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e8efd5ffff89c7578b5424088b3289f783fe0b754c89d28b4a0489cef6c1017407b903000000eb05b90100000083f10283f903752c89f78b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000e99e0000008b54240883ff070f858d00000089d28b7a0889fef7c7010000007407bf03000000eb05bf0100000083f70283ff03756a89d2ff720489f7ff37ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442424bb01000000e827d5ffff8d6424048b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642408c70709000000eb048b7c24088b1789d683fa097560ff77048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048937578b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240c5756525153508b4424208b5c241ce89bd4ffff8d642410b80100000083c408c228008d64240489f283fe0b75588b7f04f7c7010000007541ff378b7c24308b74242c8b5424288b4c24248b5c24208b44241cff7424045756525153508b44241cbb01000000e844d4ffff8d642408b80100000083c408c228008d64240cb801000000c2280089d683fa070f8535030000ff77048b7708ff770cf7c6010000000f859c010000ff36ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442428bb01000000e8d4d3ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e88bd3ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e841d3ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e8f7d2ffff8d642408eb4589ff83fe01753e89ffff7704ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e8b2d2ffff8d642408eb008b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240c5756525153508b44241cbb01000000e87cd2ffff8d642404b80100000083c414c22800ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442424bb01000000e83ad2ffff8d6424048b3c248b1789d683fa07754789ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8f2d1ffff8d64240cb80100000083c410c2280089ff89f283fe05754789ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8a2d1ffff8d64240cb80100000083c410c2280089ff89d683fa03754789ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e852d1ffff8d64240cb80100000083c410c2280089ff83fe01754789ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e804d1ffff8d64240cb80100000083c410c228008d642414b801000000c2280083fe097542ff77048b7c24308b74242c8b5424288b4c24248b5c24208b44241cff7424045756525153508b44241cbb01000000e8b1d0ffff8d642408b80100000083c408c228008d64240cb801000000c22800ff7304ff7308ff730cff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e85ad0ffff8d6424048b74240889f783fe017502eb3b89ffff37ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e812d0ffff8d6424088b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8cacfffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e87acfffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e82acfffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8dcceffff8d64240cb80100000083c408c228008d64240cb801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e88bceffff8d642408b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e849ceffff8d642408b801000000c22800ff7308ff730cff73108b7c24048b3783fe090f85ef00000089ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e8edcdffff89c7578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b3424893757ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424388b5c2420e89acdffff8d6424088b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240857ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b4424248b5c2420e842cdffff8d642418b801000000c22800ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e803cdffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288b5c2420e8aeccffff8d6424088b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e854ccffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e8ddcbffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e894cbffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e84acbffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e800cbffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8bbcaffff8d642408eb00ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e882caffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e840caffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8f8c9ffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8a8c9ffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e858c9ffff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e80ac9ffff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8b0c8ffff8d64240cb80100000083c404c228008d642408b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e85fc8ffff8d642408b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e81dc8ffff8d642408b801000000c228008b7b048b3789f283fe0b75548b7f04f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8c5c7ffff8d642408b801000000c22800b801000000c2280089d683fa070f8538030000ff77048b7708ff770cf7c6010000000f859f010000ff36ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e85cc7ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e813c7ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8c9c6ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e87fc6ffff8d642408eb4589ff83fe01753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e83ac6ffff8d642408eb00ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e801c6ffff8d642408b80100000083c408c22800ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e8bfc5ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e877c5ffff8d64240cb80100000083c404c2280089ff89f283fe05754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e827c5ffff8d64240cb80100000083c404c2280089ff89d683fa03754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8d7c4ffff8d64240cb80100000083c404c2280089ff83fe01754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e889c4ffff8d64240cb80100000083c404c228008d642408b801000000c2280083fe097542ff7704ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e833c4ffff8d642408b801000000c22800b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bba4e966b1e8e9c3ffff8d642408b801000000c22800b801000000c22800b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bba4e966b1e897c3ffff8d642408b801000000c22800ff7304ff7308ff7424108b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e852c3ffff8d6424048b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8f8c2ffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e881c2ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e838c2ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8eec1ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8a4c1ffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e85fc1ffff8d642408eb00ff74241c8b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e826c1ffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e8e4c0ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e89cc0ffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e84cc0ffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8fcbfffff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8aebfffff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e854bfffff8d64240cb80100000083c404c228008d642408b801000000c22800ff7308ff730cff7310ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8fdbeffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288b5c2420e8a8beffff8d6424088b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e84ebeffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e8d7bdffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e88ebdffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e844bdffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8fabcffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8b5bcffff8d642408eb00ff74241c8b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e87cbcffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e83abcffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8f2bbffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8a2bbffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e852bbffff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e804bbffff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8aabaffff8d64240cb80100000083c404c228008d642408b801000000c22800ff73048b7b088b3789f283fe0b754b8b7f04f7c701000000753bff37ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e840baffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bb01000000e8e0b9ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e897b9ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e84db9ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e803b9ffff8d642408eb4589ff83fe01753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8beb8ffff8d642408eb00ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e885b8ffff8d642410e95e010000ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e849b8ffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e801b8ffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8b7b7ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e86db7ffff8d642410eb4989ff83fe01753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e828b7ffff8d642410eb048d642408eb4183fe09753cff7704ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e8e1b6ffff8d642408eb00ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8a8b6ffff8d642408b801000000c228008b7b04ff7708ff770c8b7f108b1789d683fa090f85d0000000ff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e84db6ffff89c757ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bbbce966b1e817b6ffff8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64241057ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b4424248b5c2420e8bfb5ffff8d64240cb801000000c2280089f783ff050f8594000000ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e875b5ffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b4424248b5c2420e820b5ffff8d64240cb801000000c228008d642408b8a0ea66b18b5d04ff238b7b04ff37ff7704ff7708ff77108b14248b3289f783fe0b754c89d28b4a0489cef6c1017407b903000000eb05b90100000083f10283f903752c89f78b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000e99c0000008b142483ff070f858d00000089d28b7a0889fef7c7010000007407bf03000000eb05bf0100000083f70283ff03756a89d2ff720489f7ff37ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442424bb01000000e835b4ffff8d6424048b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642408c70709000000eb038b3c248b3783fe090f85cf0100008b74240883fe050f85c20100008d642404ff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bbbce966b1e8b2b3ffff8d642408ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e87bb3ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e833b3ffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8e3b2ffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e893b2ffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e845b2ffff8d64240cb80100000083c408c228008d64240cb801000000c228008b74240889f783fe0775068b7c2418eb1189ff83ff0975068b7c2418eb048b7c2414578b7c24048b3789f283fe0b754e89ff8b7f04f7c7010000007538ff378b7c24388b7424348b5424308b4c242c8b5c24288b442424ff7424045756525153508b44241cbb01000000e8bbb1ffff8d64240ceb048d642408e96603000089ff89d683fa070f851303000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f8596010000ff37ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442428bb01000000e84db1ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e804b1ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e8bab0ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e870b0ffff8d642408eb4589ff83fe01753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e82bb0ffff8d642408eb008b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240c5756525153508b44241cbb01000000e8f5afffff8d642414e95e010000ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442424bb01000000e8b9afffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e871afffff8d642418e9da00000089ff89f283fe05754189ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e827afffff8d642418e99000000089ff89d683fa03753e89ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8ddaeffff8d642418eb4989ff83fe01753e89ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e898aeffff8d642418eb048d642410eb4689ff83fe09753b89ffff77048b7c24388b7424348b5424308b4c242c8b5c24288b442424ff7424045756525153508b44241cbb01000000e850aeffff8d64240ceb048d642408ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e813aeffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8cbadffff8d64240cb80100000083c408c2280089ff89f283fe05754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e87badffff8d64240cb80100000083c408c2280089ff89d683fa03754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e82badffff8d64240cb80100000083c408c2280089ff83fe01754789ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8ddacffff8d64240cb80100000083c408c228008d64240cb801000000c228008b7b088b3789f283fe0b75548b7f04f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e876acffff8d642408b801000000c22800b801000000c2280089d683fa070f8538030000ff77048b7708ff770cf7c6010000000f859f010000ff36ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e80dacffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8c4abffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e87aabffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e830abffff8d642408eb4589ff83fe01753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8ebaaffff8d642408eb00ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8b2aaffff8d642408b80100000083c408c22800ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e870aaffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e828aaffff8d64240cb80100000083c404c2280089ff89f283fe05754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8d8a9ffff8d64240cb80100000083c404c2280089ff89d683fa03754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e888a9ffff8d64240cb80100000083c404c2280089ff83fe01754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e83aa9ffff8d64240cb80100000083c404c228008d642408b801000000c2280083fe097542ff7704ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8e4a8ffff8d642408b801000000c22800b801000000c22800ff7304ff7308ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e897a8ffff8d642404ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e860a8ffff8d64240cb801000000c228008b7b04ff37ff770cff7704ff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b4424145756525153508b4424248b5c2418e87636000089c757ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b44241c5756525153508b4424288b5c2418e8d437000089c757ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442430bb01000000e8b2a7ffff8d642404ff3424e9171700008b7b048b3789f283fe0b75548b7f04f7c7010000007541ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e85aa7ffff8d642408b801000000c22800b801000000c2280089d683fa070f8538030000ff77048b7708ff770cf7c6010000000f859f010000ff36ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e8f1a6ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8a8a6ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e85ea6ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e814a6ffff8d642408eb4589ff83fe01753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8cfa5ffff8d642408eb00ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e896a5ffff8d642408b80100000083c408c22800ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e854a5ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e80ca5ffff8d64240cb80100000083c404c2280089ff89f283fe05754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8bca4ffff8d64240cb80100000083c404c2280089ff89d683fa03754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e86ca4ffff8d64240cb80100000083c404c2280089ff83fe01754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e81ea4ffff8d64240cb80100000083c404c228008d642408b801000000c2280083fe097542ff7704ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8c8a3ffff8d642408b801000000c22800b801000000c22800ff7304ff7308ff730cff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442428bb01000000e878a3ffff89c7578b74240c89f783fe017502eb5989ffff378b7d008d7ff83b7d087303ff5528897d00c747fc010000008b742404893757ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424248b5c2420e813a3ffff8d64240c8b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240457ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b4424288b5c2420e8bba2ffff8d642408b80100000083c410c22800ff7304ff7308ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e873a2ffff8d6424048b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e819a2ffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e8a2a1ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e859a1ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e80fa1ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8c5a0ffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e880a0ffff8d642408eb00ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e847a0ffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e805a0ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8bd9fffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e86d9fffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e81d9fffff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8cf9effff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8759effff8d64240cb80100000083c404c228008d642408b801000000c22800ff7304ff7308ff7424108b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e8219effff8d6424048b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8c79dffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e8509dffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8079dffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8bd9cffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8739cffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e82e9cffff8d642408eb00ff74241c8b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8f59bffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e8b39bffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e86b9bffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e81b9bffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8cb9affff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e87d9affff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8239affff8d64240cb80100000083c404c228008d642408b801000000c22800ff7308ff730cff7310ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e8cc99ffff89c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288b5c2420e87799ffff8d6424088b3c248b3789f283fe0b756289ff8b7f048d642404f7c70100000075458d642404ff37ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e81d99ffff8d642408b801000000c228008d642404b801000000c2280089ff89d683fa070f854003000089ff89feff770489f68b7e0889f6ff760cf7c7010000000f859f010000ff37ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442428bb01000000e8a698ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e85d98ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e81398ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8c997ffff8d642408eb4589ff83fe01753e89ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e88497ffff8d642408eb00ff74241c8b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e84b97ffff8d642408b80100000083c410c22800ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e80997ffff8d6424048b3c248b1789d683fa07754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8c196ffff8d64240cb80100000083c40cc2280089ff89f283fe05754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e87196ffff8d64240cb80100000083c40cc2280089ff89d683fa03754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e82196ffff8d64240cb80100000083c40cc2280089ff83fe01754789ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8d395ffff8d64240cb80100000083c40cc228008d642410b801000000c2280089ff83fe09754789ffff7704ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442420bb01000000e87995ffff8d64240cb80100000083c404c228008d642408b801000000c22800ff7304ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bba4e966b1e82895ffff8d642408b801000000c22800ff7304ff730cff7424108b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e8e394ffff89c68d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424148b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424248b5c2420e88e94ffff8d642410b801000000c22800ff73048b7b088b3789f283fe0b754b8b7f04f7c701000000753bff37ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e83394ffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442428bb01000000e8d393ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e88a93ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e84093ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8f692ffff8d642408eb4589ff83fe01753e89ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442420bb01000000e8b192ffff8d642408eb00ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e87892ffff8d642410e95e010000ff7424108b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b442424bb01000000e83c92ffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8f491ffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e8aa91ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e86091ffff8d642410eb4989ff83fe01753e89ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442420bb01000000e81b91ffff8d642410eb048d642408eb4183fe09753cff7704ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e8d490ffff8d642408eb00ff74240c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e89b90ffff8d642408b801000000c22800f60424010f85cb0300008b34248b3e89f6ff76048b3f8b3789f283fe0b754b8b7f04f7c701000000753bff37ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e83090ffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442428bb01000000e8d08fffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8878fffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e83d8fffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8f38effff8d642408eb4589ff83fe01753e89ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8ae8effff8d642408eb00ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8758effff8d642410e95e010000ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442424bb01000000e8398effff8d6424048b3c248b1789d683fa07754189ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8f18dffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8a78dffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e85d8dffff8d642410eb4989ff83fe01753e89ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8188dffff8d642410eb048d642408eb4183fe09753cff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8d18cffff8d642408eb005e8934243b650c7303ff552ce92bfcffff8d64240cff3424f60424010f85cb0300008b34248b3e89f6ff76048b3f8b3789f283fe0b754b8b7f04f7c701000000753bff37ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8548cffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442428bb01000000e8f48bffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8ab8bffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8618bffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8178bffff8d642408eb4589ff83fe01753e89ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8d28affff8d642408eb00ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8998affff8d642410e95e010000ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442424bb01000000e85d8affff8d6424048b3c248b1789d683fa07754189ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8158affff8d642410e9da00000089ff89f283fe05754189ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8cb89ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e88189ffff8d642410eb4989ff83fe01753e89ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e83c89ffff8d642410eb048d642408eb4183fe09753cff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8f588ffff8d642408eb005e8934243b650c7303ff552ce92bfcffff8d642418b801000000c22800f60424010f85cb0300008b34248b3e89f6ff76048b3f8b3789f283fe0b754b8b7f04f7c701000000753bff37ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e87388ffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442428bb01000000e81388ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e8ca87ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e88087ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e83687ffff8d642408eb4589ff83fe01753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e8f186ffff8d642408eb00ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8b886ffff8d642410e95e010000ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442424bb01000000e87c86ffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e83486ffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8ea85ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e8a085ffff8d642410eb4989ff83fe01753e89ffff7704ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442420bb01000000e85b85ffff8d642410eb048d642408eb4183fe09753cff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e81485ffff8d642408eb005e8934243b650c7303ff552ce92bfcffff8d642404ff742408f60424010f85050400008b3c248b3789ffff77048b3eff76048b3789f283fe0b754b8b7f04f7c701000000753bff37ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e89384ffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442428bb01000000e83384ffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8ea83ffff8d642408e9d600000089ff89f283fe05754189ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e8a083ffff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e85683ffff8d642408eb4589ff83fe01753e89ffff7704ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442420bb01000000e81183ffff8d642408eb00ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e8d882ffff8d642410e95e010000ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442424bb01000000e89c82ffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e85482ffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e80a82ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e8c081ffff8d642410eb4989ff83fe01753e89ffff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e87b81ffff8d642410eb048d642408eb4183fe09753cff7704ff7424208b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b442420bb01000000e83481ffff8d642408eb00ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442420bb01000000e8fb80ffff8d6424085e8934243b650c7303ff552ce9f1fbffff8d6424048b342489f783fe01750c8d64240cb801000000c2280089ff8b3f8d64240457f604240175558b342489f7ff3689ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442424bb01000000e87e80ffff8d6424045e8d6424048934243b650c7303ff552ceba58d64240cb801000000c22800f604240175558b342489f7ff3689ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442424bb01000000e81780ffff8d6424045e8d6424048934243b650c7303ff552ceba58d642404ff7424248b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b442430bba4e966b1e8ca7fffff8d642404ff3424f60424010f85c90300008b34248b3e89f6ff76048b3789f283fe0b754b8b7f04f7c701000000753bff37ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8667fffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442428bb01000000e8067fffff8d6424048b7c24048b1789d683fa07754189ffff7704ff74243c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff34245756525153508b442420bb01000000e8bd7effff8d642408e9d600000089ff89f283fe05754189ffff7704ff74243c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff34245756525153508b442420bb01000000e8737effff8d642408e98c00000089ff89d683fa03753e89ffff7704ff74243c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff34245756525153508b442420bb01000000e8297effff8d642408eb4589ff83fe01753e89ffff7704ff74243c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff34245756525153508b442420bb01000000e8e47dffff8d642408eb00ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8ab7dffff8d642410e95e010000ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442424bb01000000e86f7dffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8277dffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8dd7cffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e8937cffff8d642410eb4989ff83fe01753e89ffff7704ff7424388b7c24588b7424548b5424508b4c244c8b5c24488b442444ff34245756525153508b442420bb01000000e84e7cffff8d642410eb048d642408eb4183fe09753cff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8077cffff8d642408eb005e8934243b650c7303ff552ce92dfcffff8d64240cff3424f60424010f85cb0300008b34248b3e89f6ff76048b3f8b3789f283fe0b754b8b7f04f7c701000000753bff37ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e88a7bffff8d642408eb00e95a03000089d683fa070f850e030000ff77048b7708ff770cf7c6010000000f8599010000ff36ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442428bb01000000e82a7bffff8d6424048b7c24048b1789d683fa07754189ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8e17affff8d642408e9d600000089ff89f283fe05754189ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8977affff8d642408e98c00000089ff89d683fa03753e89ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e84d7affff8d642408eb4589ff83fe01753e89ffff7704ff7424348b7c24548b7424508b54244c8b4c24488b5c24448b442440ff34245756525153508b442420bb01000000e8087affff8d642408eb00ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8cf79ffff8d642410e95e010000ff74242c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff34245756525153508b442424bb01000000e89379ffff8d6424048b3c248b1789d683fa07754189ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e84b79ffff8d642410e9da00000089ff89f283fe05754189ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e80179ffff8d642410e99000000089ff89d683fa03753e89ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e8b778ffff8d642410eb4989ff83fe01753e89ffff7704ff7424308b7c24508b74244c8b5424488b4c24448b5c24408b44243cff34245756525153508b442420bb01000000e87278ffff8d642410eb048d642408eb4183fe09753cff7704ff7424288b7c24488b7424448b5424408b4c243c8b5c24388b442434ff34245756525153508b442420bb01000000e82b78ffff8d642408eb005e8934243b650c7303ff552ce92bfcffff8d64241cb801000000c22800f604240175558b342489f7ff3689ffff7704ff74241c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff34245756525153508b442424bb01000000e8c377ffff8d6424045e8d6424048934243b650c7303ff552ceba58d6424048b342489f783fe03753d8d642404ff7424108b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e86877ffff8d642408eb7b89ff83ff058d6424047539ff7424108b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e82477ffff8d642408eb37ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e8eb76ffff8d642408ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8b476ffff8d642408b801000000c22800f604240175708b34248b3e89f6ff7604ff378b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b4424248b5c2420e84476ffff8d64240c5e8934243b650c7303ff552ceb8a8d642404b801000000c22800f604240175558b342489f7ff3689ffff7704ff7424188b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b442424bb01000000e8e175ffff8d6424045e8d6424048934243b650c7303ff552ceba58d642404ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442424bb01000000e89475ffff8d642404ff74240c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b442420bb01000000e85d75ffff8d64240cb801000000c22800f604240175558b342489f7ff3689ffff7704ff7424148b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b442424bb01000000e80c75ffff8d6424045e8d6424048934243b650c7303ff552ceba58d642404ff7424088b7c24288b7424248b5424208b4c241c8b5c24188b442414ff34245756525153508b442420bb01000000e8bf74ffff8d642408b801000000c22800f40000|@11873,1,@1270|13,0,@6091 473,0,0 478,1,@6082 563,1,@6082 644,0,0 649,1,@6082 658,0,0 666,0,0 759,0,0 764,1,@6082 832,0,0 837,1,@6082 906,0,0 911,1,@6082 980,0,0 985,1,@6082 1049,0,0 1054,1,@6082 1106,0,0 1111,1,@6082 1120,0,0 1172,0,0 1177,1,@6082 1244,0,0 1249,1,@6082 1258,0,0 1324,0,0 1329,1,@6082 1338,0,0 1404,0,0 1409,1,@6082 1418,0,0 1482,0,0 1487,1,@6082 1496,0,0 1511,0,0 1572,0,0 1577,1,@6082 1586,0,0 1598,0,0 1675,0,0 1680,1,@6082 1763,1,@6082 1851,1,@6082 1860,0,0 1915,0,0 1920,1,@6082 2005,1,@6082 2086,0,0 2091,1,@6082 2100,0,0 2108,0,0 2201,0,0 2206,1,@6082 2274,0,0 2279,1,@6082 2348,0,0 2353,1,@6082 2422,0,0 2427,1,@6082 2491,0,0 2496,1,@6082 2548,0,0 2553,1,@6082 2562,0,0 2614,0,0 2619,1,@6082 2686,0,0 2691,1,@6082 2700,0,0 2766,0,0 2771,1,@6082 2780,0,0 2846,0,0 2851,1,@6082 2860,0,0 2924,0,0 2929,1,@6082 2938,0,0 2953,0,0 3014,0,0 3019,1,@6082 3028,0,0 3040,0,0 3095,0,0 3100,1,@6082 3150,0,0 3155,1,@6082 3164,0,0 3228,0,@11861 3233,1,@6082 3283,0,0 3288,1,@6082 3297,0,0 3355,0,@11862 3360,1,@6082 3410,0,@11863 3415,1,@6082 3465,0,@11864 3470,1,@6082 3479,0,0 3555,0,@11862 3560,1,@6082 3610,0,@11863 3615,1,@6082 3665,0,@11864 3670,1,@6082 3679,0,0 3760,0,0 3765,1,@6082 3843,1,@6082 3852,0,0 3915,0,@11861 3920,1,@6082 3970,0,@11861 3975,1,@6082 4025,0,@11865 4030,1,@6082 4111,0,0 4116,1,@6082 4125,0,0 4133,0,0 4226,0,0 4231,1,@6082 4299,0,0 4304,1,@6082 4373,0,0 4378,1,@6082 4447,0,0 4452,1,@6082 4516,0,0 4521,1,@6082 4573,0,0 4578,1,@6082 4587,0,0 4639,0,0 4644,1,@6082 4711,0,0 4716,1,@6082 4725,0,0 4791,0,0 4796,1,@6082 4805,0,0 4871,0,0 4876,1,@6082 4885,0,0 4949,0,0 4954,1,@6082 4963,0,0 4978,0,0 5039,0,0 5044,1,@6082 5053,0,0 5065,0,0 5129,1,@6092 5179,1,@6093 5243,0,0 5248,1,@6082 5298,0,0 5303,1,@6082 5312,0,0 5320,0,0 5378,0,@11863 5383,1,@6082 5433,0,@11861 5438,1,@6082 5488,0,@11864 5493,1,@6082 5502,0,0 5572,0,0 5577,1,@6082 5668,0,0 5673,1,@6082 5706,0,1 5713,0,0 5760,0,4 5798,0,1 5805,0,0 5868,0,0 5873,1,@6082 5917,0,4 6013,1,@6082 6022,0,0 6095,0,0 6100,1,@6082 6109,0,0 6124,0,0 6207,0,0 6212,1,@6082 6280,0,0 6285,1,@6082 6354,0,0 6359,1,@6082 6428,0,0 6433,1,@6082 6497,0,0 6502,1,@6082 6551,0,0 6556,1,@6082 6565,0,0 6617,0,0 6622,1,@6082 6689,0,0 6694,1,@6082 6703,0,0 6769,0,0 6774,1,@6082 6783,0,0 6849,0,0 6854,1,@6082 6863,0,0 6927,0,0 6932,1,@6082 6941,0,0 6956,0,0 7010,0,0 7015,1,@6082 7024,0,0 7039,0,0 7097,0,0 7102,1,@6082 7169,0,0 7174,1,@6082 7241,0,0 7246,1,@6082 7255,0,0 7321,0,0 7326,1,@6082 7335,0,0 7401,0,0 7406,1,@6082 7415,0,0 7479,0,0 7484,1,@6082 7493,0,0 7508,0,0 7560,0,0 7565,1,@6082 7574,0,0 7626,0,0 7631,1,@6082 7640,0,0 7718,0,0 7723,1,@6082 7806,1,@6082 7894,1,@6082 7903,0,0 7952,0,0 7957,1,@6082 8042,1,@6082 8127,0,0 8132,1,@6082 8141,0,0 8153,0,0 8246,0,0 8251,1,@6082 8319,0,0 8324,1,@6082 8393,0,0 8398,1,@6082 8467,0,0 8472,1,@6082 8536,0,0 8541,1,@6082 8593,0,0 8598,1,@6082 8607,0,0 8659,0,0 8664,1,@6082 8731,0,0 8736,1,@6082 8745,0,0 8811,0,0 8816,1,@6082 8825,0,0 8891,0,0 8896,1,@6082 8905,0,0 8969,0,0 8974,1,@6082 8983,0,0 8998,0,0 9059,0,0 9064,1,@6082 9073,0,0 9088,0,0 9140,0,0 9145,1,@6082 9154,0,0 9206,0,0 9211,1,@6082 9220,0,0 9294,0,0 9299,1,@6082 9308,0,0 9316,0,0 9399,0,0 9404,1,@6082 9472,0,0 9477,1,@6082 9546,0,0 9551,1,@6082 9620,0,0 9625,1,@6082 9689,0,0 9694,1,@6082 9746,0,0 9751,1,@6082 9760,0,0 9812,0,0 9817,1,@6082 9884,0,0 9889,1,@6082 9898,0,0 9964,0,0 9969,1,@6082 9978,0,0 10044,0,0 10049,1,@6082 10058,0,0 10122,0,0 10127,1,@6082 10136,0,0 10151,0,0 10208,0,0 10213,1,@6082 10222,0,0 10230,0,0 10282,0,@11861 10287,1,@6082 10296,0,0 10304,0,0 10312,0,0 10364,0,@11861 10369,1,@6082 10378,0,0 10433,0,0 10438,1,@6082 10523,0,0 10528,1,@6082 10537,0,0 10549,0,0 10642,0,0 10647,1,@6082 10715,0,0 10720,1,@6082 10789,0,0 10794,1,@6082 10863,0,0 10868,1,@6082 10932,0,0 10937,1,@6082 10989,0,0 10994,1,@6082 11003,0,0 11055,0,0 11060,1,@6082 11127,0,0 11132,1,@6082 11141,0,0 11207,0,0 11212,1,@6082 11221,0,0 11287,0,0 11292,1,@6082 11301,0,0 11365,0,0 11370,1,@6082 11379,0,0 11394,0,0 11455,0,0 11460,1,@6082 11469,0,0 11484,0,0 11542,0,0 11547,1,@6082 11632,1,@6082 11717,0,0 11722,1,@6082 11731,0,0 11743,0,0 11836,0,0 11841,1,@6082 11909,0,0 11914,1,@6082 11983,0,0 11988,1,@6082 12057,0,0 12062,1,@6082 12126,0,0 12131,1,@6082 12183,0,0 12188,1,@6082 12197,0,0 12249,0,0 12254,1,@6082 12321,0,0 12326,1,@6082 12335,0,0 12401,0,0 12406,1,@6082 12415,0,0 12481,0,0 12486,1,@6082 12495,0,0 12559,0,0 12564,1,@6082 12573,0,0 12588,0,0 12649,0,0 12654,1,@6082 12663,0,0 12678,0,0 12755,0,0 12760,1,@6082 12851,0,0 12856,1,@6082 12924,0,0 12929,1,@6082 12998,0,0 13003,1,@6082 13072,0,0 13077,1,@6082 13141,0,0 13146,1,@6082 13198,0,0 13203,1,@6082 13258,0,0 13263,1,@6082 13330,0,0 13335,1,@6082 13404,0,0 13409,1,@6082 13478,0,0 13483,1,@6082 13547,0,0 13552,1,@6082 13618,0,0 13623,1,@6082 13675,0,0 13680,1,@6082 13689,0,0 13766,0,0 13771,1,@6082 13820,0,@11864 13825,1,@6082 13913,1,@6082 13922,0,0 13982,0,0 13987,1,@6082 14072,1,@6082 14081,0,0 14093,0,@11869 14141,0,1 14148,0,0 14195,0,4 14232,0,1 14239,0,0 14302,0,0 14307,1,@6082 14351,0,4 14433,0,@11864 14438,1,@6082 14488,0,0 14493,1,@6082 14560,0,0 14565,1,@6082 14574,0,0 14640,0,0 14645,1,@6082 14654,0,0 14720,0,0 14725,1,@6082 14734,0,0 14798,0,0 14803,1,@6082 14812,0,0 14827,0,0 14936,0,0 14941,1,@6082 15046,0,0 15051,1,@6082 15119,0,0 15124,1,@6082 15193,0,0 15198,1,@6082 15267,0,0 15272,1,@6082 15336,0,0 15341,1,@6082 15390,0,0 15395,1,@6082 15450,0,0 15455,1,@6082 15522,0,0 15527,1,@6082 15596,0,0 15601,1,@6082 15670,0,0 15675,1,@6082 15739,0,0 15744,1,@6082 15811,0,0 15816,1,@6082 15872,0,0 15877,1,@6082 15944,0,0 15949,1,@6082 15958,0,0 16024,0,0 16029,1,@6082 16038,0,0 16104,0,0 16109,1,@6082 16118,0,0 16182,0,0 16187,1,@6082 16196,0,0 16211,0,0 16285,0,0 16290,1,@6082 16299,0,0 16307,0,0 16390,0,0 16395,1,@6082 16463,0,0 16468,1,@6082 16537,0,0 16542,1,@6082 16611,0,0 16616,1,@6082 16680,0,0 16685,1,@6082 16737,0,0 16742,1,@6082 16751,0,0 16803,0,0 16808,1,@6082 16875,0,0 16880,1,@6082 16889,0,0 16955,0,0 16960,1,@6082 16969,0,0 17035,0,0 17040,1,@6082 17049,0,0 17113,0,0 17118,1,@6082 17127,0,0 17142,0,0 17199,0,0 17204,1,@6082 17213,0,0 17221,0,0 17276,0,0 17281,1,@6082 17331,0,0 17336,1,@6082 17345,0,0 17406,1,@6094 17456,1,@6095 17505,0,0 17510,1,@6082 17593,0,0 17598,1,@6082 17607,0,0 17615,0,0 17698,0,0 17703,1,@6082 17771,0,0 17776,1,@6082 17845,0,0 17850,1,@6082 17919,0,0 17924,1,@6082 17988,0,0 17993,1,@6082 18045,0,0 18050,1,@6082 18059,0,0 18111,0,0 18116,1,@6082 18183,0,0 18188,1,@6082 18197,0,0 18263,0,0 18268,1,@6082 18277,0,0 18343,0,0 18348,1,@6082 18357,0,0 18421,0,0 18426,1,@6082 18435,0,0 18450,0,0 18507,0,0 18512,1,@6082 18521,0,0 18529,0,0 18587,0,0 18592,1,@6082 18693,1,@6082 18781,1,@6082 18790,0,0 18848,0,0 18853,1,@6082 18938,0,0 18943,1,@6082 18952,0,0 18964,0,0 19057,0,0 19062,1,@6082 19130,0,0 19135,1,@6082 19204,0,0 19209,1,@6082 19278,0,0 19283,1,@6082 19347,0,0 19352,1,@6082 19404,0,0 19409,1,@6082 19418,0,0 19470,0,0 19475,1,@6082 19542,0,0 19547,1,@6082 19556,0,0 19622,0,0 19627,1,@6082 19636,0,0 19702,0,0 19707,1,@6082 19716,0,0 19780,0,0 19785,1,@6082 19794,0,0 19809,0,0 19870,0,0 19875,1,@6082 19884,0,0 19899,0,0 19954,0,0 19959,1,@6082 20044,0,0 20049,1,@6082 20058,0,0 20070,0,0 20163,0,0 20168,1,@6082 20236,0,0 20241,1,@6082 20310,0,0 20315,1,@6082 20384,0,0 20389,1,@6082 20453,0,0 20458,1,@6082 20510,0,0 20515,1,@6082 20524,0,0 20576,0,0 20581,1,@6082 20648,0,0 20653,1,@6082 20662,0,0 20728,0,0 20733,1,@6082 20742,0,0 20808,0,0 20813,1,@6082 20822,0,0 20886,0,0 20891,1,@6082 20900,0,0 20915,0,0 20976,0,0 20981,1,@6082 20990,0,0 21005,0,0 21063,0,0 21068,1,@6082 21153,1,@6082 21238,0,0 21243,1,@6082 21252,0,0 21264,0,0 21357,0,0 21362,1,@6082 21430,0,0 21435,1,@6082 21504,0,0 21509,1,@6082 21578,0,0 21583,1,@6082 21647,0,0 21652,1,@6082 21704,0,0 21709,1,@6082 21718,0,0 21770,0,0 21775,1,@6082 21842,0,0 21847,1,@6082 21856,0,0 21922,0,0 21927,1,@6082 21936,0,0 22002,0,0 22007,1,@6082 22016,0,0 22080,0,0 22085,1,@6082 22094,0,0 22109,0,0 22170,0,0 22175,1,@6082 22184,0,0 22199,0,0 22251,0,@11861 22256,1,@6082 22265,0,0 22320,0,0 22325,1,@6082 22410,1,@6082 22419,0,0 22496,0,0 22501,1,@6082 22592,0,0 22597,1,@6082 22665,0,0 22670,1,@6082 22739,0,0 22744,1,@6082 22813,0,0 22818,1,@6082 22882,0,0 22887,1,@6082 22939,0,0 22944,1,@6082 22999,0,0 23004,1,@6082 23071,0,0 23076,1,@6082 23145,0,0 23150,1,@6082 23219,0,0 23224,1,@6082 23288,0,0 23293,1,@6082 23359,0,0 23364,1,@6082 23416,0,0 23421,1,@6082 23430,0,0 23523,0,0 23528,1,@6082 23619,0,0 23624,1,@6082 23692,0,0 23697,1,@6082 23766,0,0 23771,1,@6082 23840,0,0 23845,1,@6082 23909,0,0 23914,1,@6082 23966,0,0 23971,1,@6082 24026,0,0 24031,1,@6082 24098,0,0 24103,1,@6082 24172,0,0 24177,1,@6082 24246,0,0 24251,1,@6082 24315,0,0 24320,1,@6082 24386,0,0 24391,1,@6082 24511,0,0 24516,1,@6082 24607,0,0 24612,1,@6082 24680,0,0 24685,1,@6082 24754,0,0 24759,1,@6082 24828,0,0 24833,1,@6082 24897,0,0 24902,1,@6082 24954,0,0 24959,1,@6082 25014,0,0 25019,1,@6082 25086,0,0 25091,1,@6082 25160,0,0 25165,1,@6082 25234,0,0 25239,1,@6082 25303,0,0 25308,1,@6082 25374,0,0 25379,1,@6082 25411,0,0 25504,0,0 25509,1,@6082 25600,0,0 25605,1,@6082 25673,0,0 25678,1,@6082 25747,0,0 25752,1,@6082 25821,0,0 25826,1,@6082 25890,0,0 25895,1,@6082 25947,0,0 25952,1,@6082 26007,0,0 26012,1,@6082 26079,0,0 26084,1,@6082 26153,0,0 26158,1,@6082 26227,0,0 26232,1,@6082 26296,0,0 26301,1,@6082 26367,0,0 26372,1,@6082 26496,0,0 26501,1,@6082 26592,0,0 26597,1,@6082 26665,0,0 26670,1,@6082 26739,0,0 26744,1,@6082 26813,0,0 26818,1,@6082 26882,0,0 26887,1,@6082 26939,0,0 26944,1,@6082 26999,0,0 27004,1,@6082 27071,0,0 27076,1,@6082 27145,0,0 27150,1,@6082 27219,0,0 27224,1,@6082 27288,0,0 27293,1,@6082 27359,0,0 27364,1,@6082 27416,0,0 27421,1,@6082 27465,0,0 27541,0,0 27546,1,@6082 27577,0,0 27644,0,0 27649,1,@6082 27721,0,@11861 27726,1,@6082 27821,0,0 27826,1,@6082 27917,0,0 27922,1,@6082 27990,0,0 27995,1,@6082 28064,0,0 28069,1,@6082 28138,0,0 28143,1,@6082 28207,0,0 28212,1,@6082 28264,0,0 28269,1,@6082 28324,0,0 28329,1,@6082 28396,0,0 28401,1,@6082 28470,0,0 28475,1,@6082 28544,0,0 28549,1,@6082 28613,0,0 28618,1,@6082 28684,0,0 28689,1,@6082 28809,0,0 28814,1,@6082 28905,0,0 28910,1,@6082 28978,0,0 28983,1,@6082 29052,0,0 29057,1,@6082 29126,0,0 29131,1,@6082 29195,0,0 29200,1,@6082 29252,0,0 29257,1,@6082 29312,0,0 29317,1,@6082 29384,0,0 29389,1,@6082 29458,0,0 29463,1,@6082 29532,0,0 29537,1,@6082 29601,0,0 29606,1,@6082 29672,0,0 29677,1,@6082 29709,0,0 29776,0,0 29781,1,@6082 29867,0,0 29872,1,@6082 29935,0,0 29940,1,@6082 29992,0,0 29997,1,@6082 30047,0,0 30052,1,@6082 30061,0,0 30164,1,@6082 30191,0,0 30258,0,0 30263,1,@6082 30335,0,0 30340,1,@6082 30390,0,0 30395,1,@6082 30404,0,0 30471,0,0 30476,1,@6082 30548,0,0 30553,1,@6082 30562,0,0 6092:D3,380|3b650c7305ff552ccd0953a8010f855c0100008b38ff70048b37ff77048b1689d783fa0b754a8b4e0489caf6c1017407b903000000eb05b90100000083f10283f903752c89d78b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000e98200000083ff07757d8b560889d7f6c2017407ba03000000eb05ba0100000083f20283fa03755fff7604ff378b7c24188b74242c8b5424288b4c24248b5c24208b44241c57ff74241456525153508b442420bb01000000e8d473ffff8b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d642408c70609000000eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8bcfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f4|@10030,1,@1266|49,0,1 56,0,0 103,0,4 128,0,1 135,0,0 191,0,0 196,1,@6082 236,0,4 372,0,0 6093:D3,340|3b650c7305ff552ccd0953a8010f85330100008b38ff70048b1789d683fa0b754a8b4f0489caf6c1017407b903000000eb05b90100000083f10283f903752c89d78b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000e98400000083fe07757f8b570889d6f6c2017407ba03000000eb05ba0100000083f20283fa037561ff770489f7ff378b7c24148b7424288b5424248b4c24208b5c241c8b44241857ff74241056525153508b442420bb01000000e84772ffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642408c70709000000eb00578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8e5feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f400|@10030,1,@1267|44,0,1 51,0,0 98,0,4 123,0,1 130,0,0 188,0,0 193,1,@6082 233,0,4 331,0,0 6094:D3,380|3b650c7305ff552ccd0953a8010f855c0100008b38ff70048b37ff77048b1689d783fa0b754a8b4e0489caf6c1017407b903000000eb05b90100000083f10283f903752c89d78b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000e98200000083ff07757d8b560889d7f6c2017407ba03000000eb05ba0100000083f20283fa03755fff7604ff378b7c24188b74242c8b5424288b4c24248b5c24208b44241c57ff74241456525153508b442420bb01000000e8dc70ffff8b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d642408c70609000000eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8bcfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f4|@10030,1,@1268|49,0,1 56,0,0 103,0,4 128,0,1 135,0,0 191,0,0 196,1,@6082 236,0,4 372,0,0 6095:D3,380|3b650c7305ff552ccd0953a8010f855c0100008b38ff70048b37ff77048b1689d783fa0b754a8b4e0489caf6c1017407b903000000eb05b90100000083f10283f903752c89d78b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70609000000e98200000083ff07757d8b560889d7f6c2017407ba03000000eb05ba0100000083f20283fa03755fff7604ff378b7c24188b74242c8b5424288b4c24248b5c24208b44241c57ff74241456525153508b442420bb01000000e84c6fffff8b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d642408c70609000000eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e8bcfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc218008d642404b801000000c21800f4|@10030,1,@1269|49,0,1 56,0,0 103,0,4 128,0,1 135,0,0 191,0,0 196,1,@6082 236,0,4 372,0,0 6096:D3,276|3b650c7305ff552ccd0989c6538b3c248b7ffcc1e708c1ef0783cf0183ff017d068d642404eb4481ffffffff017d3889f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab5256eb0e8d642404b8383066b18b5d04ff23f604240175258b3c248b0789ffff7704ff74240c8b5c240ce8960000005e8934243b650c7303ff552cebd58d6424048b34248b56fcc1e208c1ea0783ca0183fa01750a8d642408b8e43c66b1c389d789f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd46895d00d1ef897bfcc643ff4089dfd1e9b801000000f3ab89d889d189f68d64240489c7d1e9f3a58060ffbf83c404c3f4000000|@11881,1,@1276|41,0,16777215 93,0,0 108,0,@9964 142,1,@6097 189,0,@10109 242,0,0 6097:D3,208|3b650c7305ff552ccd095389c7f7c70100000075468b0f8b77048b14248b5afcc1e308c1eb0783cb013bcb720e8d642404b8783266b18b5d04ff2389d28b544afe83fa037507bf03000000eb1389f73b650c7305ff552ccd81ebb2bf0100000083ff03750c8d642404b801000000c204008b7c24086a0157bbffffffffe86200000089c683fe017c378b3c248b57fcc1e208c1ea0783ca013bf2720e8d642404b8003566b18b5d04ff2389ffc74477fe030000008d642404b801000000c204008d642404b87cec66b18b5d04ff23f400|@11880,1,@1275|50,0,@9988 71,0,1 92,0,0 106,0,0 121,0,-1 126,1,@6098 161,0,@10015 176,0,1 185,0,0 197,0,@11877 6098:D3,276|3b650c7305ff552ccd0953a8010f85fb000000ff308b78048b74240c8b56fcc1e208c1ea0783ca018b34243bf2720e8d642408b8a43266b18b5d04ff238b74240c8b14248b7456fe8b0e8b5e048b760883fb017507ba01000000eb3e83fb01750e8d642408b8100b66b18b5d04ff2383fbff751681fe01000080750e8d642408b8680b66b18b5d04ff2389f0d1f8d1fb99f7fb8d14450100000083f90175075883c404c2080083f90375075883c404c20800f6c101751c8d64240489f85b8b7424088b5424048954240489742408e92dffffff8b4c24103bd17c1789f85b8b542408895424088974240c83c404e90effffff8d64240489f85b8b7424088b5424048954240489742408e9f2feffff58c20800f400|@11876,1,@1274|52,0,@9990 86,0,0 102,0,@9491 118,0,-1073741824 129,0,@9495 6099:D3,112|3b650c7305ff552ccd0950baf4ce66b189d8bb58d066b1e838e0fcff89c7578b7c24048b7ffcc1e708c1ef0783cf01576a018b3c2489f83b7c2404720a8d642410b801000000c389c08b7c240c8b5c47feff742408e82a0000008b342483c6028934243b650c7303ff552cebc5f40000|@11920,1,@1279|12,0,@11628 19,0,@11639 24,1,@5762 66,0,0 86,1,@6100 6100:D3,1140|3b650c7305ff552ccd0953ff742408ba803066b1bb03000000e8366ff4ff89c7578b3c248b378d1c750100000083fb01750e8d642404bf8ced66b1e9a000000089de83c60889f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87f903000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d6424048d7a04d1e9f3a489df83c70889fed1eec604320989fed1eec64432013d89fed1eec64432023ed1efc6443a03208062ffbf89d7578b7c24088b3f83ff050f85e40000008b7c24088b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f36df4ffba803066b1bb05000000e8246ef4ff89c78b378d0c750100000083f9017507bf98ed66b1eb7a89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775989d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420478c642056dc642066d8d77048d7a07d1e9f3a48062ffbf89d7e90f0100008d64240cb8780566b18b5d04ff238b7c24088b3f83ff010f85dd0000008b7c24088b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8006df4ffba803066b1bb05000000e8316df4ff89c78b378d0c750100000083f9017507bfa4ed66b1eb7689ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775289d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420466c64205708d77048d7a06d1e9f3a48062ffbf89d7eb238d64240cb8780566b18b5d04ff238b7c24088b7f048b078b5f046a03e8b501000089c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c404e9a30000008b3c2483ff01750a8d6424085fe9910000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871501000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8a00c66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776789d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604380a8060ffbf8b14248b7c2408897c240c83c40cff228d6424048d642408b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f40000|@11919,1,@1278|16,0,@9967 21,0,1 26,1,@4896 55,0,@11882 75,0,4 96,0,16777215 154,0,0 280,0,@9958 285,1,@4895 290,0,@9967 295,0,2 300,1,@4896 321,0,@11883 338,0,4 359,0,16777215 413,0,0 459,0,@9465 523,0,@9958 528,1,@4895 533,0,@9967 538,0,2 543,1,@4896 564,0,@11884 581,0,4 602,0,16777215 656,0,0 695,0,@9465 719,1,@6101 801,0,4 822,0,16777215 880,0,0 948,0,@9515 965,0,4 986,0,16777215 1040,0,0 1100,0,@9465 1114,0,@9465 1128,0,@9465 6101:D3,1824|3b650c7305ff552ccd0983fb030f85cd0400008b7c240483ff070f855101000083c010710ab8f80466b18b5d04ff23ba803066b1bb03000000e88e6af4ff89c78b378d0c750100000083f9017507bf801166b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87e800000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204728d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017508b8bc1166b1c2040089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775689d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438778060ffbfc20400b8780566b18b5d04ff23b8780566b18b5d04ff238b7c240483ff050f85b300000083c010710ab8f80466b18b5d04ff23ba803066b1bb03000000e83069f4ff89c78b378d0c750100000083f9017508b8801166b1c2040089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01774d89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c64004728d77048d7805d1e9f3a48060ffbfc20400b8780566b18b5d04ff238b7c240483ff030f855101000083c010710ab8f80466b18b5d04ff23ba803066b1bb03000000e87068f4ff89c78b378d0c750100000083f9017507bf801166b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87e800000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204728d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017508b8d81066b1c2040089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775689d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438648060ffbfc20400b8780566b18b5d04ff23b8780566b18b5d04ff2383c010710ab8f80466b18b5d04ff23ba803066b1bb03000000e81f67f4ff89c78b378d0c750100000083f9017507bf801166b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87e800000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204728d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017508b8c01066b1c2040089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775689d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438628060ffbfc20400b8780566b18b5d04ff23b8780566b18b5d04ff2389c783ff110f8329020000bf7cf531b181c7fc0400008d7c87fcffe7e93b000000909090e96e000000909090e9a1000000909090e9d4000000909090e907010000909090e93a010000909090e96d010000909090e9a00100009090908b7c240483ff077508b8b0ed66b1c204008b7c240483ff057508b8bced66b1c204008b7c240483ff037508b8c8ed66b1c20400b8d4ed66b1c204008b7c240483ff077508b8e0ed66b1c204008b7c240483ff057508b8eced66b1c204008b7c240483ff037508b8f8ed66b1c20400b804ee66b1c204008b7c240483ff077508b810ee66b1c204008b7c240483ff057508b81cee66b1c204008b7c240483ff037508b828ee66b1c20400b834ee66b1c204008b7c240483ff077508b840ee66b1c204008b7c240483ff057508b84cee66b1c204008b7c240483ff037508b858ee66b1c20400b864ee66b1c204008b7c240483ff077508b870ee66b1c204008b7c240483ff057508b87cee66b1c204008b7c240483ff037508b888ee66b1c20400b894ee66b1c204008b7c240483ff077508b8a0ee66b1c204008b7c240483ff057508b8acee66b1c204008b7c240483ff037508b8b8ee66b1c20400b8c4ee66b1c204008b7c240483ff077508b8d0ee66b1c204008b7c240483ff057508b8dcee66b1c204008b7c240483ff037508b8e8ee66b1c20400b8f4ee66b1c204008b7c240483ff077508b800ef66b1c204008b7c240483ff057508b80cef66b1c204008b7c240483ff037508b818ef66b1c20400b824ef66b1c20400b830ef66b1c20400f4000000|@11918,1,@1277|38,0,@9455 48,0,@9967 53,0,1 58,1,@4896 79,0,@9619 96,0,4 117,0,16777215 175,0,0 218,0,@9624 236,0,4 257,0,16777215 311,0,0 350,0,@9465 360,0,@9465 388,0,@9455 398,0,@9967 403,0,1 408,1,@4896 429,0,@9619 447,0,4 468,0,16777215 522,0,0 552,0,@9465 580,0,@9455 590,0,@9967 595,0,1 600,1,@4896 621,0,@9619 638,0,4 659,0,16777215 717,0,0 760,0,@9605 778,0,4 799,0,16777215 853,0,0 892,0,@9465 902,0,@9465 917,0,@9455 927,0,@9967 932,0,1 937,1,@4896 958,0,@9619 975,0,4 996,0,16777215 1054,0,0 1097,0,@9603 1115,0,4 1136,0,16777215 1190,0,0 1229,0,@9465 1239,0,@9465 1260,0,@6101 1350,0,@11885 1367,0,@11886 1384,0,@11887 1392,0,@11888 1409,0,@11889 1426,0,@11890 1443,0,@11891 1451,0,@11892 1468,0,@11893 1485,0,@11894 1502,0,@11895 1510,0,@11896 1527,0,@11897 1544,0,@11898 1561,0,@11899 1569,0,@11900 1586,0,@11901 1603,0,@11902 1620,0,@11903 1628,0,@11904 1645,0,@11905 1662,0,@11906 1679,0,@11907 1687,0,@11908 1704,0,@11909 1721,0,@11910 1738,0,@11911 1746,0,@11912 1763,0,@11913 1780,0,@11914 1797,0,@11915 1805,0,@11916 1813,0,@11917 6102:D3,2184|3b650c7305ff552ccd0950538b7c24048b7ffcc1e708c1ef0783cf01578b74241c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074c0532b1578b7424208b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707900532b1578b7424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e80532b1578b7424288b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707400632b157bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b5424248b4c24288b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707980632b1893ebe010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c241489fe83ff017d068d642420eb7989f689f781feffffff017d6989ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b8fffffffff3ab56be030000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff4157bf09000000eb0e8d642420b8383066b18b5d04ff2383ff0175068b7c2444eb2189fa83ea02d1ea8b3424c604160089fe83ee0289f73b650c7305ff552ccd80ebd4f7c701000000753b8b178b77048b0a81f9bc01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9c20500008b3f8b3781febc01c0b075058b7f08eb0e8d642428b8483366b18b5d04ff2383ff037507bf03000000eb05bf01000000578b7c243c8b7ffcc1e708c1ef0783cf0183ff017d098d64242ce97d04000081ffffffff010f8d6d04000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c242489fe83ff017d098d642430e91a04000089f689f781feffffff010f8d0604000089ff89f98d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd02895d00d1ef897bfcc643ff4089dfd1e9b801000000f3abff74242cff742404b801000000e86d0b00008b7c244483ff037507bbe4f266b1eb05bb0100000083fb0175068b442428eb098b442428e87c450000e8db45000089c28b7c244883ff290f8c8d0100008b74244883ee016bf6fc710e8d642430b8f80466b18b5d04ff2383c6018b4c24108b1989df89c983c702710e8d642430b8f80466b18b5d04ff2389c989398b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895f04c707310000008b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895108c7410405000000c7010f0000008b55008d52ec3b55087305ff5528cdca895500c742fc04000000c7420c05000000895a08c7420411000000c702110000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c74304f0f266b189138b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489388b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c74710d46866b189770cc74708c46866b1c7470430f366b1c707370000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e8de44000089c7e9000100008b7424108b0e89cf89f683c702710e8d642430b8f80466b18b5d04ff2389f6893e8b75008d76f43b75087305ff5528cd06897500c746fc02000000894e04c706310000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708c7470403000000c7070f0000008b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c05000000894a08c7420411000000c702110000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c7410444f366b189118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b4424548b7c2450578b5c2410e82844000089c7578b74242c89f783fe017d098d642438e9c000000089ff89fe81ffffffff010f8dac00000089f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab5289f789fe83ff017d068d64243ceb5c89f689f781feffffff017d4c89ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c243c8b7ffcc1e708c1ef0783cf01576a01eb388d64243cb8383066b18b5d04ff238d642438b8383066b18b5d04ff238d642430b8383066b18b5d04ff238d64242cb8383066b18b5d04ff238b3c2489f83b7c240472598d6424088b7c2450ff74240cff742408ff742408ff742428ff742430ff74245057ff742440ff74244cff74244cff742438ff742440ff742448ff742464b8943966b1bb003b66b1e83045000089c78d642408b801000000eb2989c08b7c24448b5c47feff742408e8f82e01008b342483c6028934243b650c7303ff552ce973fffffff7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c24188b375b8b54243889542450897424548b7c2434897c244c83c44ce97f300100f7c701000000753b8b178b77048b0a81f9bc01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642428b8489d66b18b5d04ff238b3f8b3781febc01c0b075088b7f08e9eef9ffff8d642428b8483366b18b5d04ff23f400|@12611,1,@1542|64,0,@6103 104,0,@6104 144,0,@6105 184,0,@6106 190,0,0 264,0,@6107 271,0,0 327,0,16777215 381,0,-1 389,0,1 432,0,4 443,0,@9964 513,0,@4650 564,0,0 574,0,@10769 589,0,@4650 605,0,@9999 620,0,1 627,0,0 664,0,16777215 720,0,0 753,0,16777215 811,0,0 826,0,0 831,1,@6109 845,0,@11951 852,0,0 872,1,@6112 877,1,@6113 913,0,@9455 945,0,@9455 989,0,24 1025,0,2 1031,0,7 1064,0,2 1074,0,8 1080,0,8 1113,0,@11952 1210,0,@10757 1220,0,@10755 1227,0,@11956 1233,0,27 1266,0,0 1282,1,@6114 1313,0,@9455 1357,0,24 1393,0,1 1399,0,7 1432,0,2 1442,0,8 1448,0,8 1481,0,@11958 1564,1,@6115 1597,0,16777215 1655,0,0 1683,0,16777215 1737,0,0 1770,0,@9964 1784,0,@9964 1798,0,@9964 1812,0,@9964 1894,0,@10068 1899,0,@10093 1904,1,@6116 1915,0,0 1936,1,@6175 2053,1,@6176 2074,0,@4650 2125,0,0 2139,0,@11247 2154,0,@4650 2173,0,@9999 6103:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b4447fec3f400|@11921,1,@1280|32,0,@9990 6104:D3,68|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b7c47fe8b3783fe0375048b4704c3b848f066b18b5d04ff23f400|@11926,1,@1281|32,0,@9990 57,0,@11922 6105:D3,68|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b7c47fe8b3783fe0175048b4704c3b8d8f066b18b5d04ff23f400|@11926,1,@1282|32,0,@9990 57,0,@11927 6106:D3,68|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b7c47fe8b3783fe0575048b4704c3b814f166b18b5d04ff23f400|@11926,1,@1283|32,0,@9990 57,0,@11930 6107:D3,1164|3b650c7305ff552ccd0589d68b780489fa83ff037d06b8b4ab66b1c38b0889cf8b0983f9010f855a0200008b4f0483ea02710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704890f578b7e088b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c707380b32b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764f166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d8f166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@11948,1,@1285|23,0,@11331 52,0,@9455 132,0,@6108 165,0,1 172,0,3 181,0,0 256,0,@9771 263,0,1 271,0,@9772 278,0,1 286,0,@9773 293,0,1 300,0,0 345,0,@11374 382,0,@10625 417,0,@11377 453,0,0 460,0,1 467,0,3 473,0,0 512,0,0 549,0,@10448 584,0,@11934 620,0,0 627,0,0 634,0,1 640,0,0 653,0,@11331 667,0,@9455 708,0,@4670 774,0,@9771 781,0,1 789,0,@9772 796,0,1 804,0,@9773 811,0,1 818,0,0 863,0,@11374 900,0,@10625 935,0,@11377 971,0,0 978,0,1 985,0,3 991,0,0 1030,0,0 1067,0,@10448 1102,0,@11941 1138,0,0 1145,0,0 1152,0,1 1158,0,0 6108:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@11933,1,@1284| 6109:D3,460|3b650c7305ff552ccd09538b3c248b57fc89d6c1e208c1ea0783ca013bc2720e8d642404b8783266b18b5d04ff2389ff8b5447fe83fa03750c8d642404b801000000c2080089ffc1e608c1ee0783ce013bc6720e8d642404b8003566b18b5d04ff2389ff89fbc74447fe030000008b7c240c8b7ffcc1e708c1ef0783cf013bc7720e8d642404b8a43266b18b5d04ff238b7c240c8b7447fe8b3eff76048b37ba600b32b181c2b00000008d54b2fcffe2e933000000909090e95d000000909090e969000000909090e963000000909090e961000000909090e98b000000909090e9970000009090908b4708ff77108b7c24148b7424105756e803ffffff8b7c24148b74241057568b4424088b5c2410e8ecfeffff8d642404eb628b47088b7c24108b74240c5756e8d4feffffeb4eeb4c8b7f0457eb5b8b4704ff77088b7c24148b7424105756e8b5feffff8b7c24148b74241057568b4424088b5c2410e89efeffff8d642404eb148b47048b7c24108b74240c5756e886feffffeb00588b5c24088b7c2404897c240c83c40ce94f000000f6042401752b8b3c248b0789ffff77048b7c24188b74241457568b5c2414e84cfeffff5e8934243b650c7303ff552cebcf8d642404ebb4f4000000|@11950,1,@1288|37,0,@9988 62,0,0 89,0,@10015 106,0,1 135,0,@9990 160,0,@6109 397,1,@6110 6110:D3,56|3b650c7305ff552ccd0953a801751eff308b40048b5c2404e8e3ffffff8b3c248b47048d6424045be91f0000008d642404b801000000c3f4|@11273,1,@1287|41,1,@6111 50,0,0 6111:D3,14328|3b650c7305ff552ccd09538b38be8c0d32b181c61e0000008d74befcffe6e95b010000909090e95d010000909090e988010000909090e9b4030000909090e90e040000909090e910040000909090e912040000909090e99b040000909090e900050000909090e989050000909090e9ee050000909090e919080000909090e91f080000909090e94a080000909090e94c080000909090e9d5080000909090e9d8080000909090e9100b0000909090e9350c0000909090e9370c0000909090e9620c0000909090e98b0e0000909090e98d0e0000909090e98f0e0000909090e989100000909090e9b4100000909090e9b6100000909090e9b8100000909090e9e3100000909090e90c130000909090e935150000909090e92f170000909090e95b190000909090e9591c0000909090e9531e0000909090e9b81e0000909090e9bd1e0000909090e9b7200000909090e98d210000909090e9b6230000909090e9df250000909090e908280000909090e90a280000909090e9352800009090908d642404b801000000c38b70088b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b78048b57088b7f0c8b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b70088b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8003566b18b5d04ff238b3c24c74457fe030000008b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38b70048b48088b500c8b3c248b7ffcc1e708c1ef0783cf013bcf720e8d642404b8003566b18b5d04ff238b3c24c7444ffe030000008b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8003566b18b5d04ff238b3c24c74457fe030000008b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b50048b70088b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b3c248b7c57fe83ff0375308b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70088b480c8b50108b3c248b7ffcc1e708c1ef0783cf013bcf720e8d642404b8003566b18b5d04ff238b3c24c7444ffe030000008b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8003566b18b5d04ff238b3c24c74457fe030000008b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b50048b700c8b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b3c248b7c57fe83ff0375308b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70048b3e8b56048b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70048b7e04ff7610e93e2b00008b70048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b70088b480c8b3c248b7ffcc1e708c1ef0783cf013bcf720e8d642404b8003566b18b5d04ff238b3c24c7444ffe030000008b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8003566b18b5d04ff238b3c24c74457fe030000008b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b7804ff700ce94e2600008b50048b780c8b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8783266b18b5d04ff238b34248b7456fe83fe030f85ff0100008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38b70048b780c83fe017502eb2e8b168b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38b70048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b50088b780c8b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38d642404b801000000c38b78048b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38b70048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b50048b78088b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50088b780c8b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b78088b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b78048b57088b7f108b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70048b168b7e088b76108b0e89cb83f90b75408b7604f7c60100000075308b0e8b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb00e99401000089d983fb070f85530100008b5e048b4e088b760c83f9010f85110100008b0c248b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b0c24c74459fe030000008b1e89d983fb0775348b4e048b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000e9a600000089cb83f90575318b4e048b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb6e89d983fb0375318b4e048b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb3683f90175318b4e048b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb00eb2e8b098b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb3683f90975318b4e048b34248b76fcc1e608c1ee0783ce013bce720e8d642404b8003566b18b5d04ff238b3424c7444efe03000000eb008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b78088b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b70088b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b3c248b7c57fe83ff0375308b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b70048b3eff760ce9b20b00008b78048b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b78088b700c83ff0175678b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b3c248b7c57fe83ff0375308b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b378b3c248b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b3c248b7c57fe83ff0375308b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b78088b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50048b78088b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b50088b780c8b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38d642404b801000000c38b700c8b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38b78088b3789f283fe0b75478b7f04f7c70100000075328b378b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c389d683fa070f85620100008b57048b77088b7f0c83fe010f851e0100008b34248b76fcc1e608c1ee0783ce013bd6720e8d642404b8003566b18b5d04ff238b3424c74456fe030000008b1789d683fa0775338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389f283fe0575338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c389d683fa0375338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0175338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c38b368b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c383fe0975338b77048b3c248b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff235fc74477fe03000000b801000000c38d642404b801000000c3f7c7010000000f85020200008b178b77048b128b0a89cb83f90b753f8b5204f6c20175328b0a8b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00e9a201000089d983fb070f855f0100008b5a048b4a088b520c83f9010f851b0100008b4c24048b49fcc1e108c1e90783c9013bd9720e8d642408b8003566b18b5d04ff238b4c2404c74459fe030000008b1a89d983fb0775368b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000e9ac00000089cb83f90575338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb7289d983fb0375338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90175338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00eb308b098b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90975338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb0089f73b650c7305ff552ccd80e9f2fdffff5ff7c7010000000f85f20100008b178b77048b128b0a89cb83f90b753d8b5204f6c20175308b0a8b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00e99401000089d983fb070f85530100008b5a048b4a088b520c83f9010f85110100008b0c248b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b0c24c74459fe030000008b1a89d983fb0775348b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000e9a600000089cb83f90575318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb6e89d983fb0375318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90175318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00eb2e8b098b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90975318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb0089f73b650c7305ff552ccd80e902feffff8d642404b801000000c3f7c7010000000f85020200008b178b77048b128b0a89cb83f90b753f8b5204f6c20175328b0a8b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00e9a201000089d983fb070f855f0100008b5a048b4a088b520c83f9010f851b0100008b4c24048b49fcc1e108c1e90783c9013bd9720e8d642408b8003566b18b5d04ff238b4c2404c74459fe030000008b1a89d983fb0775368b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000e9ac00000089cb83f90575338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb7289d983fb0375338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90175338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00eb308b098b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90975338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb0089f73b650c7305ff552ccd80e9f2fdffff5ff7c7010000000f85f20100008b178b77048b128b0a89cb83f90b753d8b5204f6c20175308b0a8b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00e99401000089d983fb070f85530100008b5a048b4a088b520c83f9010f85110100008b0c248b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b0c24c74459fe030000008b1a89d983fb0775348b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000e9a600000089cb83f90575318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb6e89d983fb0375318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90175318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00eb2e8b098b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90975318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb0089f73b650c7305ff552ccd80e902feffff8d642404b801000000c3f7c7010000000f85020200008b178b77048b128b0a89cb83f90b753f8b5204f6c20175328b0a8b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00e9a201000089d983fb070f855f0100008b5a048b4a088b520c83f9010f851b0100008b4c24048b49fcc1e108c1e90783c9013bd9720e8d642408b8003566b18b5d04ff238b4c2404c74459fe030000008b1a89d983fb0775368b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000e9ac00000089cb83f90575338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb7289d983fb0375338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90175338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb00eb308b098b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb3883f90975338b4a048b5424048b52fcc1e208c1ea0783ca013bca720e8d642408b8003566b18b5d04ff238b542404c7444afe03000000eb0089f73b650c7305ff552ccd80e9f2fdffff5ff7c7010000000f85f00100008b178b77048b0a89cb83f90b753d8b5204f6c20175308b0a8b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00e99401000089d983fb070f85530100008b5a048b4a088b520c83f9010f85110100008b0c248b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b0c24c74459fe030000008b1a89d983fb0775348b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000e9a600000089cb83f90575318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb6e89d983fb0375318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90175318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb00eb2e8b098b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb3683f90975318b4a048b14248b52fcc1e208c1ea0783ca013bca720e8d642404b8003566b18b5d04ff238b1424c7444afe03000000eb0089f73b650c7305ff552ccd80e904feffff8d642404b801000000c3f40000|@11949,1,@1286|14,0,@6111 387,0,0 419,0,@10015 433,0,1 438,0,0 476,0,@10015 492,0,1 542,0,@10015 556,0,1 561,0,0 571,0,0 629,0,@10015 645,0,1 685,0,@10015 699,0,1 704,0,0 743,0,@10015 757,0,1 762,0,0 801,0,@10015 815,0,1 820,0,0 857,0,@10015 871,0,1 876,0,0 886,0,0 917,0,@10015 931,0,1 936,0,0 973,0,@10015 987,0,1 992,0,0 1002,0,0 1037,0,@10015 1053,0,1 1081,0,@10015 1095,0,1 1100,0,0 1110,0,0 1120,0,0 1158,0,@10015 1174,0,1 1202,0,@10015 1218,0,1 1246,0,@10015 1260,0,1 1265,0,0 1300,0,@9988 1345,0,@10015 1359,0,1 1364,0,0 1374,0,0 1412,0,@10015 1428,0,1 1456,0,@10015 1472,0,1 1500,0,@10015 1514,0,1 1519,0,0 1554,0,@9988 1599,0,@10015 1613,0,1 1618,0,0 1628,0,0 1665,0,@10015 1681,0,1 1731,0,@10015 1745,0,1 1750,0,0 1760,0,0 1818,0,@10015 1834,0,1 1874,0,@10015 1888,0,1 1893,0,0 1932,0,@10015 1946,0,1 1951,0,0 1990,0,@10015 2004,0,1 2009,0,0 2046,0,@10015 2060,0,1 2065,0,0 2075,0,0 2106,0,@10015 2120,0,1 2125,0,0 2162,0,@10015 2176,0,1 2181,0,0 2191,0,0 2237,0,@10015 2251,0,1 2256,0,0 2266,0,0 2304,0,@10015 2320,0,1 2348,0,@10015 2364,0,1 2392,0,@10015 2406,0,1 2411,0,0 2457,0,@9988 2528,0,@10015 2542,0,1 2547,0,0 2557,0,0 2615,0,@10015 2631,0,1 2671,0,@10015 2685,0,1 2690,0,0 2729,0,@10015 2743,0,1 2748,0,0 2787,0,@10015 2801,0,1 2806,0,0 2843,0,@10015 2857,0,1 2862,0,0 2872,0,0 2903,0,@10015 2917,0,1 2922,0,0 2959,0,@10015 2973,0,1 2978,0,0 2988,0,0 2998,0,0 3042,0,@10015 3058,0,1 3098,0,@10015 3112,0,1 3117,0,0 3156,0,@10015 3170,0,1 3175,0,0 3214,0,@10015 3228,0,1 3233,0,0 3270,0,@10015 3284,0,1 3289,0,0 3299,0,0 3309,0,0 3341,0,@10015 3355,0,1 3360,0,0 3395,0,@10015 3411,0,1 3461,0,@10015 3475,0,1 3480,0,0 3490,0,0 3548,0,@10015 3564,0,1 3604,0,@10015 3618,0,1 3623,0,0 3662,0,@10015 3676,0,1 3681,0,0 3720,0,@10015 3734,0,1 3739,0,0 3776,0,@10015 3790,0,1 3795,0,0 3805,0,0 3836,0,@10015 3850,0,1 3855,0,0 3892,0,@10015 3906,0,1 3911,0,0 3921,0,0 3931,0,0 3941,0,0 3995,0,@10015 4009,0,1 4014,0,0 4024,0,0 4082,0,@10015 4098,0,1 4138,0,@10015 4152,0,1 4157,0,0 4196,0,@10015 4210,0,1 4215,0,0 4254,0,@10015 4268,0,1 4273,0,0 4310,0,@10015 4324,0,1 4329,0,0 4339,0,0 4370,0,@10015 4384,0,1 4389,0,0 4426,0,@10015 4440,0,1 4445,0,0 4455,0,0 4487,0,@10015 4501,0,1 4506,0,0 4516,0,0 4526,0,0 4558,0,@10015 4572,0,1 4577,0,0 4612,0,@10015 4628,0,1 4678,0,@10015 4692,0,1 4697,0,0 4707,0,0 4765,0,@10015 4781,0,1 4821,0,@10015 4835,0,1 4840,0,0 4879,0,@10015 4893,0,1 4898,0,0 4937,0,@10015 4951,0,1 4956,0,0 4993,0,@10015 5007,0,1 5012,0,0 5022,0,0 5053,0,@10015 5067,0,1 5072,0,0 5109,0,@10015 5123,0,1 5128,0,0 5138,0,0 5173,0,@10015 5189,0,1 5239,0,@10015 5253,0,1 5258,0,0 5268,0,0 5326,0,@10015 5342,0,1 5382,0,@10015 5396,0,1 5401,0,0 5440,0,@10015 5454,0,1 5459,0,0 5498,0,@10015 5512,0,1 5517,0,0 5554,0,@10015 5568,0,1 5573,0,0 5583,0,0 5614,0,@10015 5628,0,1 5633,0,0 5670,0,@10015 5684,0,1 5689,0,0 5699,0,0 5753,0,@10015 5767,0,1 5772,0,0 5782,0,0 5840,0,@10015 5856,0,1 5896,0,@10015 5910,0,1 5915,0,0 5954,0,@10015 5968,0,1 5973,0,0 6012,0,@10015 6026,0,1 6031,0,0 6068,0,@10015 6082,0,1 6087,0,0 6097,0,0 6128,0,@10015 6142,0,1 6147,0,0 6184,0,@10015 6198,0,1 6203,0,0 6213,0,0 6251,0,@10015 6267,0,1 6317,0,@10015 6331,0,1 6336,0,0 6346,0,0 6404,0,@10015 6420,0,1 6460,0,@10015 6474,0,1 6479,0,0 6518,0,@10015 6532,0,1 6537,0,0 6576,0,@10015 6590,0,1 6595,0,0 6632,0,@10015 6646,0,1 6651,0,0 6661,0,0 6692,0,@10015 6706,0,1 6711,0,0 6748,0,@10015 6762,0,1 6767,0,0 6777,0,0 6839,0,@10015 6855,0,1 6919,0,@10015 6935,0,1 6975,0,@10015 6991,0,1 7034,0,@10015 7050,0,1 7090,0,@10015 7106,0,1 7144,0,@10015 7160,0,1 7194,0,@10015 7210,0,1 7248,0,@10015 7264,0,1 7294,0,@10015 7310,0,1 7350,0,@10015 7364,0,1 7369,0,0 7408,0,@10015 7422,0,1 7427,0,0 7466,0,@10015 7480,0,1 7485,0,0 7522,0,@10015 7536,0,1 7541,0,0 7551,0,0 7605,0,@10015 7619,0,1 7624,0,0 7634,0,0 7692,0,@10015 7708,0,1 7748,0,@10015 7762,0,1 7767,0,0 7806,0,@10015 7820,0,1 7825,0,0 7864,0,@10015 7878,0,1 7883,0,0 7920,0,@10015 7934,0,1 7939,0,0 7949,0,0 7980,0,@10015 7994,0,1 7999,0,0 8036,0,@10015 8050,0,1 8055,0,0 8065,0,0 8100,0,@9988 8145,0,@10015 8159,0,1 8164,0,0 8174,0,0 8241,0,@10015 8255,0,1 8260,0,0 8270,0,0 8328,0,@10015 8344,0,1 8384,0,@10015 8398,0,1 8403,0,0 8442,0,@10015 8456,0,1 8461,0,0 8500,0,@10015 8514,0,1 8519,0,0 8556,0,@10015 8570,0,1 8575,0,0 8585,0,0 8616,0,@10015 8630,0,1 8635,0,0 8672,0,@10015 8686,0,1 8691,0,0 8701,0,0 8744,0,@9988 8789,0,@10015 8803,0,1 8808,0,0 8818,0,0 8849,0,@9988 8894,0,@10015 8908,0,1 8913,0,0 8923,0,0 8958,0,@10015 8974,0,1 9024,0,@10015 9038,0,1 9043,0,0 9053,0,0 9111,0,@10015 9127,0,1 9167,0,@10015 9181,0,1 9186,0,0 9225,0,@10015 9239,0,1 9244,0,0 9283,0,@10015 9297,0,1 9302,0,0 9339,0,@10015 9353,0,1 9358,0,0 9368,0,0 9399,0,@10015 9413,0,1 9418,0,0 9455,0,@10015 9469,0,1 9474,0,0 9484,0,0 9519,0,@10015 9535,0,1 9585,0,@10015 9599,0,1 9604,0,0 9614,0,0 9672,0,@10015 9688,0,1 9728,0,@10015 9742,0,1 9747,0,0 9786,0,@10015 9800,0,1 9805,0,0 9844,0,@10015 9858,0,1 9863,0,0 9900,0,@10015 9914,0,1 9919,0,0 9929,0,0 9960,0,@10015 9974,0,1 9979,0,0 10016,0,@10015 10030,0,1 10035,0,0 10045,0,0 10080,0,@10015 10096,0,1 10146,0,@10015 10160,0,1 10165,0,0 10175,0,0 10233,0,@10015 10249,0,1 10289,0,@10015 10303,0,1 10308,0,0 10347,0,@10015 10361,0,1 10366,0,0 10405,0,@10015 10419,0,1 10424,0,0 10461,0,@10015 10475,0,1 10480,0,0 10490,0,0 10521,0,@10015 10535,0,1 10540,0,0 10577,0,@10015 10591,0,1 10596,0,0 10606,0,0 10616,0,0 10648,0,@10015 10662,0,1 10667,0,0 10721,0,@10015 10735,0,1 10740,0,0 10750,0,0 10808,0,@10015 10824,0,1 10864,0,@10015 10878,0,1 10883,0,0 10922,0,@10015 10936,0,1 10941,0,0 10980,0,@10015 10994,0,1 10999,0,0 11036,0,@10015 11050,0,1 11055,0,0 11065,0,0 11096,0,@10015 11110,0,1 11115,0,0 11152,0,@10015 11166,0,1 11171,0,0 11181,0,0 11249,0,@10015 11266,0,1 11331,0,@10015 11348,0,1 11389,0,@10015 11406,0,1 11450,0,@10015 11467,0,1 11508,0,@10015 11525,0,1 11564,0,@10015 11581,0,1 11616,0,@10015 11633,0,1 11672,0,@10015 11689,0,1 11775,0,@10015 11791,0,1 11855,0,@10015 11871,0,1 11911,0,@10015 11927,0,1 11970,0,@10015 11986,0,1 12026,0,@10015 12042,0,1 12080,0,@10015 12096,0,1 12130,0,@10015 12146,0,1 12184,0,@10015 12200,0,1 12228,0,0 12296,0,@10015 12313,0,1 12378,0,@10015 12395,0,1 12436,0,@10015 12453,0,1 12497,0,@10015 12514,0,1 12555,0,@10015 12572,0,1 12611,0,@10015 12628,0,1 12663,0,@10015 12680,0,1 12719,0,@10015 12736,0,1 12822,0,@10015 12838,0,1 12902,0,@10015 12918,0,1 12958,0,@10015 12974,0,1 13017,0,@10015 13033,0,1 13073,0,@10015 13089,0,1 13127,0,@10015 13143,0,1 13177,0,@10015 13193,0,1 13231,0,@10015 13247,0,1 13275,0,0 13343,0,@10015 13360,0,1 13425,0,@10015 13442,0,1 13483,0,@10015 13500,0,1 13544,0,@10015 13561,0,1 13602,0,@10015 13619,0,1 13658,0,@10015 13675,0,1 13710,0,@10015 13727,0,1 13766,0,@10015 13783,0,1 13867,0,@10015 13883,0,1 13947,0,@10015 13963,0,1 14003,0,@10015 14019,0,1 14062,0,@10015 14078,0,1 14118,0,@10015 14134,0,1 14172,0,@10015 14188,0,1 14222,0,@10015 14238,0,1 14276,0,@10015 14292,0,1 14320,0,0 6112:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1289| 6113:D3,132|3b650c7305ff552ccd01a801756c8b388b40048b3783fe0375218b77048b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937eb05bf0100000083ff017505e9b6ffffffff37e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@11291,1,@1290|60,0,0 123,0,0 6114:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1291| 6115:D3,584|3b650c7305ff552ccd095053baf4ce66b18b44240cbb01000000e8ad89fcff89c78b74240cf7c601000000753b8b0e8b56048b1981fbdc01c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750abee46966b1e94c0100008b368b1681fadc01c0b075058b5608eb0e8d642408b8483366b18b5d04ff238b74240cf7c601000000753b8b1e8b4e048b0381f8d401c0b0751e8b75008d76f83b75087305ff5528cd8c897500c746fc01000000891eeb1389ce3b650c7305ff552ccdc4ebbdbe0100000083fe017507bee46966b1eb588b368b0e81f9d401c0b075058b7608eb0e8d642408b8483366b18b5d04ff238b45008d40e83b45087305ff5528cdc4894500c740fc0500000089501089700c8b34248970088d6424048978048b3c2489388d642404c20400f7c601000000753b8b1e8b4e048b0381f8d401c0b0751e8b75008d76f83b75087305ff5528cd8c897500c746fc01000000891eeb1389ce3b650c7305ff552ccdc4ebbdbe0100000083fe01750e8d642408b8489d66b18b5d04ff238b368b0e81f9d401c0b075088b7608e958ffffff8d642408b8483366b18b5d04ff23f7c601000000753b8b0e8b56048b1981fbdc01c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750e8d642408b8489d66b18b5d04ff238b368b1681fadc01c0b075088b5608e964feffff8d642408b8483366b18b5d04ff23f40000|@11960,1,@1292|13,0,@11628 22,0,0 27,1,@5762 54,0,@4654 105,0,0 115,0,@10769 130,0,@4654 146,0,@9999 176,0,@4653 227,0,0 237,0,@10769 249,0,@4653 265,0,@9999 348,0,@4653 399,0,0 413,0,@11247 428,0,@4653 447,0,@9999 473,0,@4654 524,0,0 538,0,@11247 553,0,@4654 572,0,@9999 6116:D3,5852|3b650c7305ff552ccd09538b5c2438e8dc16000089c757f60424010f85af0100008b3c24ff378b7c24088b37ba544932b181c23d0000008d54b2fcffe2e933000000909090e998000000909090e99a000000909090e992000000909090e994000000909090e9f4000000909090e95401000090909089ff8b770889ff8b57108b7c24408b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8783266b18b5d04ff238b7c24408b7c57fe83ff03742f8b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8783266b18b5d04ff238b7c243c8b7c57fee97c150000e999140000bf01000000e959050000bf01000000e94f05000089ff8b77088b7c24408b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24408b7c77fe83ff03742f8b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c243c8b7c77fee9a9130000e99a13000089ff8b77048b7c24408b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24408b7c77fe83ff03742f8b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c243c8b7c77fee9be120000e9af120000bf01000000e9750400008d6424048b3c248b37ba544932b181c2ea0100008d54b2fcffe2e933000000909090e9bd010000909090e97d020000909090e97b020000909090e981020000909090e941030000909090e9fe03000090909089ff8b5f0889ff8b770c89ff8b4f108d6424048b7c242c8b7ffcc1e708c1ef0783cf013bcf720ab8783266b18b5d04ff238b7c242c8b544ffe83faff75498b7c24288b178b7c24288b3f83c702710ab8f80466b18b5d04ff238b44242889388b7c242c8b7ffcc1e708c1ef0783cf013bcf720ab8003566b18b5d04ff238b7c242c89544ffeeb008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707670000008b54242c8b52fcc1e208c1ea0783ca013bda720ab8783266b18b5d04ff238b54242c8b4c5afe83f9ff75498b5424288b0a8b5424288b1283c202710ab8f80466b18b5d04ff238b44242889108b54242c8b52fcc1e208c1ea0783ca013bda720ab8003566b18b5d04ff238b54242c894c5afeeb008b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c01000000894a08897204c702110000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e97202000089ff8b57088d6424048b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c242c8b7457fe83feff75498b7c24288b378b7c24288b3f83c702710ab8f80466b18b5d04ff238b4c242889398b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c242c897457feeb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707670000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e9aa0100008d642404eb048d642404b801000000e99601000089ff8b57088d6424048b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c242c8b7457fe83feff75498b7c24288b378b7c24288b3f83c702710ab8f80466b18b5d04ff238b4c242889398b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c242c897457feeb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707670000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e9ce00000089ff8b57048d6424048b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8783266b18b5d04ff238b7c242c8b7457fe83feff75498b7c24288b378b7c24288b3f83c702710ab8f80466b18b5d04ff238b4c242889398b7c242c8b7ffcc1e708c1ef0783cf013bd7720ab8003566b18b5d04ff238b7c242c897457feeb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707670000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb098d642404b8010000008b7c243883ff017503c238008b5c24388b3c24897c243883c438e93f11000083ff0175098b7c2404e9420d00008d6424048b378b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d642408b8003566b18b5d04ff238b7c243cc74477fe030000008b7c24048b0f89ca83f9010f850204000089fa8b5a0889d289d7ff720c89ff8b4f103bf10f85dc0000008b7c24388b7ffcc1e708c1ef0783cf013bdf720e8d64240cb8783266b18b5d04ff238b7c24388b545ffe83faff75518b7c24348b178b7c24348b3f83c702710e8d64240cb8f80466b18b5d04ff238b4c243489398b7c24388b7ffcc1e708c1ef0783cf013bdf720e8d64240cb8003566b18b5d04ff238b7c243889545ffeeb008b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c010000008957088b14248957048d642404c707110000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008938e9080300003bf30f85670100005fba544932b181c2a70700008d543affffe2eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb51eb56eb5bba0f000000eb59ba11000000eb52ba13000000eb4bba0d000000eb44ba0b000000eb3dba09000000eb36ba07000000eb2fba01000000eb28ba03000000eb21ba05000000eb1aba19000000eb13ba1b000000eb0cba15000000eb05ba170000008b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8783266b18b5d04ff238b7c24348b7c4ffe83ffff75538b7c24308b3f8b5c24308b1b83c302710e8d642408b8f80466b18b5d04ff238b44243089188b5c24348b5bfcc1e308c1eb0783cb013bcb720e8d642408b8003566b18b5d04ff238b5c2434897c4bfe89f9eb0289f98b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c01000000894f08895704c707110000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008938e9990100008b7c24388b7ffcc1e708c1ef0783cf013bcf720e8d64240cb8783266b18b5d04ff238b7c24388b544ffe83faff75518b7c24348b178b7c24348b3f83c702710e8d64240cb8f80466b18b5d04ff238b44243489388b7c24388b7ffcc1e708c1ef0783cf013bcf720e8d64240cb8003566b18b5d04ff238b7c243889544ffeeb008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707670000008b5424388b52fcc1e208c1ea0783ca013bda720e8d64240cb8783266b18b5d04ff238b5424388b545afe83faff75518b5424348b128b4c24348b0983c102710e8d64240cb8f80466b18b5d04ff238b44243489088b4c24388b49fcc1e108c1e90783c9013bd9720e8d64240cb8003566b18b5d04ff238b4c2438895459feeb008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc04000000c7410c010000008951088b14248951048d642404c701110000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b45008d40f43b45087305ff5528cdc4894500c740fc020000008950048938e9c102000089ff89d183fa090f85de00000089ff8b4f083bce750ab801000000e9c60000008b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8783266b18b5d04ff238b7c24348b544ffe83faff75518b7c24308b178b7c24308b3f83c702710e8d642408b8f80466b18b5d04ff238b5c2430893b8b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8003566b18b5d04ff238b7c243489544ffeeb008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707670000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008938e9d601000089ff89ca83f9030f85de00000089ff8b4f083bce750ab801000000e9c60000008b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8783266b18b5d04ff238b7c24348b544ffe83faff75518b7c24308b178b7c24308b3f83c702710e8d642408b8f80466b18b5d04ff238b5c2430893b8b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8003566b18b5d04ff238b7c243489544ffeeb008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707670000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008938e9eb00000089ff83fa0b0f85db00000089ff8b4f043bce750ab801000000e9c60000008b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8783266b18b5d04ff238b7c24348b544ffe83faff75518b7c24308b178b7c24308b3f83c702710e8d642408b8f80466b18b5d04ff238b5c2430893b8b7c24348b7ffcc1e708c1ef0783cf013bcf720e8d642408b8003566b18b5d04ff238b7c243489544ffeeb008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707670000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008938eb05b8010000008b7c24048b17b9544932b181c1720d00008d4c91fcffe1e933000000909090e91f010000909090e990010000909090e99e010000909090e9a0010000909090e99f010000909090e90d02000090909089ff8b4f0889ff8b57103bce7402eb698b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24388b7c77fef7c701000000752d8b5f0483fb017507bb03000000eb05bb0100000083fb0375148b3f3bf97507bf03000000eb05bf01000000eb05bf0100000083ff0374713bd67407bf01000000eb648b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24388b7c77fef7c701000000752d8b4f0483f9017507b903000000eb05b90100000083f90375148b3f3bfa7507bf03000000eb05bf01000000eb05bf01000000eb05bf03000000e91b01000089ff8b57083bd67407bf01000000eb648b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24388b7c77fef7c701000000752d8b4f0483f9017507b903000000eb05b90100000083f90375148b3f3bfa7507bf03000000eb05bf01000000eb05bf01000000e9a200000083fe017507bf03000000eb05bf01000000e98c000000bf01000000e982000000bf01000000eb7b89ff8b57043bd67407bf01000000eb648b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24388b7c77fef7c701000000752d8b4f0483f9017507b903000000eb05b90100000083f90375148b3f3bfa7507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff03750abf01000000e9c60000008b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24348b7c77fe83ffff75518b7c24308b3f8b5424308b1283c202710e8d642408b8f80466b18b5d04ff238b4c243089118b5424348b52fcc1e208c1ea0783ca013bf2720e8d642408b8003566b18b5d04ff238b542434897c72feeb008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897a04c702310000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000c74704010000008917578b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24308b7c77feff37ff77048b7c244c83ff01750489c3eb0b8b5c244ce81407000089c383fb0175068b7c2408eb0b8b442408e86207000089c7ff342457f64424040175788b74240489f7ff3689ffff7704ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24608b44245cff742424ff742410ff742410ff742410ff7424105756525153508b4424408b5c2444e85d07000089c28d6424105e8d642404891424897424043b650c7303ff552ceb81ff34248b7c24108b37ba544932b181c2891100008d54b2fcffe2e933000000909090e97c000000909090e9a1000000909090e9a3000000909090e9a2000000909090e9e8000000909090e90a01000090909089ff8b570889ff8b7f108b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e9bb00000089ff8b7f088b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e98e000000b801000000e98400000089ff8b4704eb7d89fe8b7e0489f68b56088b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938eb2f89ff8b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b8010000008b7c241889fb83ff01750489c7eb07e8a3d6000089c757ff742414ff742408ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7424608b54245c8b4c24588b5c24548b442450894424508b442428895c24548b5c2424894c24588954245c897424608b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c24748b7c2414897c24788b7c2418897c247c8b7c241c89bc24800000008b7c242089bc248400000083c44ce96fecffff8d642430f7c70100000075318b37ff77048b5424408b52fcc1e208c1ea0783ca013bf2720e8d642410b8783266b18b5d04ff238b5424408b5472feeb18bf0100000083ff0175035eeb068d6424048b37e973f2fffff6c20175498b028b4a048b5c24448b5bfcc1e308c1eb0783cb013bc3720e8d642410b8783266b18b5d04ff238b5c24448b5c43fe83fb03750e89ca3b650c7305ff552ccdc4ebb9ba01000000eb05ba0300000083fa0375258d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e970ffffff5e89f73b650c7305ff552ccd80e920ffffffbf01000000e9c6f1fffff7c70100000075498b1f8b57048b4c24408b49fcc1e108c1e90783c9013bd9720e8d64240cb8783266b18b5d04ff238b4c24408b4c59fe83f903750e89d73b650c7305ff552ccdc0ebb6bf01000000eb05bf0300000083ff03759b8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb82bf01000000e943f1fffff7c70100000075498b1f8b57048b4c24408b49fcc1e108c1e90783c9013bd9720e8d64240cb8783266b18b5d04ff238b4c24408b4c59fe83f903750e89d73b650c7305ff552ccdc0ebb6bf01000000eb05bf0300000083ff03759b8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb828b7c24408b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c24408b7c77fe83ff03742c8b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8783266b18b5d04ff238b7c243c8b7c77feeb0abf01000000e965f0fffff7c70100000075498b1f8b57048b4c24408b49fcc1e108c1e90783c9013bd9720e8d64240cb8783266b18b5d04ff238b4c24408b4c59fe83f903750e89d73b650c7305ff552ccdc0ebb6bf01000000eb05bf0300000083ff03759b8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb82f7c70100000075498b078b4f048b5c24408b5bfcc1e308c1eb0783cb013bc3720e8d64240cb8783266b18b5d04ff238b5c24408b5c43fe83fb03750e89cf3b650c7305ff552ccdc4ebb6bf01000000eb05bf0300000083ff030f85c3feffff8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917e902fffffff40000|@12119,1,@1351|16,1,@6117 45,0,@6116 152,0,@9988 199,0,@9988 227,0,0 237,0,0 276,0,@9988 323,0,@9988 380,0,@9988 427,0,@9988 455,0,0 474,0,@6116 586,0,@9988 626,0,@9455 662,0,@10015 712,0,51 737,0,@9988 777,0,@9455 813,0,@10015 861,0,0 873,0,8 906,0,0 978,0,@9988 1018,0,@9455 1054,0,@10015 1104,0,51 1137,0,0 1159,0,0 1198,0,@9988 1238,0,@9455 1274,0,@10015 1324,0,51 1357,0,0 1398,0,@9988 1438,0,@9455 1474,0,@10015 1524,0,51 1557,0,0 1570,0,0 1601,1,@6118 1650,0,@10015 1667,0,1 1738,0,@9988 1782,0,@9455 1822,0,@10015 1870,0,0 1889,0,8 1922,0,0 1943,0,@6116 1988,0,7 1995,0,8 2002,0,9 2009,0,6 2016,0,5 2023,0,4 2030,0,3 2037,0,0 2044,0,1 2051,0,2 2058,0,12 2065,0,13 2072,0,10 2079,0,11 2108,0,@9988 2152,0,@9455 2192,0,@10015 2244,0,0 2256,0,8 2289,0,0 2325,0,@9988 2369,0,@9455 2409,0,@10015 2459,0,51 2488,0,@9988 2532,0,@9455 2572,0,@10015 2620,0,0 2639,0,8 2672,0,0 2737,0,0 2771,0,@9988 2815,0,@9455 2855,0,@10015 2905,0,51 2938,0,0 2972,0,0 3006,0,@9988 3050,0,@9455 3090,0,@10015 3140,0,51 3173,0,0 3205,0,0 3239,0,@9988 3283,0,@9455 3323,0,@10015 3373,0,51 3406,0,0 3415,0,0 3426,0,@6116 3539,0,@9988 3573,0,1 3580,0,0 3596,0,1 3603,0,0 3610,0,0 3624,0,0 3655,0,@9988 3689,0,1 3696,0,0 3712,0,1 3719,0,0 3726,0,0 3733,0,1 3752,0,0 3783,0,@9988 3817,0,1 3824,0,0 3840,0,1 3847,0,0 3854,0,0 3869,0,1 3876,0,0 3886,0,0 3896,0,0 3912,0,0 3943,0,@9988 3977,0,1 3984,0,0 4000,0,1 4007,0,0 4014,0,0 4021,0,0 4031,0,0 4065,0,@9988 4109,0,@9455 4149,0,@10015 4199,0,24 4232,0,0 4264,0,@9990 4304,1,@6119 4326,1,@6120 4431,1,@6121 4473,0,@6116 4584,0,0 4660,0,0 4672,0,0 4727,0,0 4800,0,0 4809,0,0 4829,1,@6174 5051,0,@9988 5071,0,0 5129,0,@9988 5166,0,0 5173,0,1 5238,0,0 5285,0,@9988 5322,0,0 5329,0,1 5369,0,0 5416,0,@9988 5453,0,0 5460,0,1 5524,0,@9988 5571,0,@9988 5591,0,0 5638,0,@9988 5675,0,0 5682,0,1 5759,0,@9988 5796,0,0 5803,0,1 6117:D3,128|3b650c7305ff552ccd09a801756aff308b40048b53fcc1e208c1ea0783ca018b342489f73bf2720e8d642404b8783266b18b5d04ff2389ff8b7c7bfe83ff03742ee8baffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e988ffffffb801000000c3f400|@9865,1,@1293|45,0,@9988 121,0,0 6118:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1294| 6119:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1295| 6120:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1296| 6121:D3,22464|3b650c7305ff552ccd09538b78048b37ba046232b181c2210000008d54b2fcffe2e95b010000909090e9ec010000909090e970040000909090e9670b0000909090e9360c0000909090e9580c0000909090e9220e0000909090e92e110000909090e997130000909090e991160000909090e955180000909090e9af1b0000909090e92b1c0000909090e908200000909090e925200000909090e9fc220000909090e9f0240000909090e92d290000909090e9082c0000909090e9972c0000909090e91a2d0000909090e9a1310000909090e994320000909090e96d340000909090e9be340000909090e95f350000909090e996350000909090e9f0350000909090e913370000909090e9b4370000909090e980390000909090e9323a0000909090e9b53f0000909090e955470000909090e9b8470000909090e9eb480000909090e9f2490000909090e9e84a0000909090e9d54e0000909090e9764f0000909090e9be500000909090e91b520000909090e9ee520000909090e9f1530000909090ff7704ff7708ff770c8b47108b5c24288b7c243857e83956000089c68b7c24388b57fcc1e208c1ea0783ca018b7c24083bfa720e8d642410b8a43266b18b5d04ff238b7c24388b5424088b7c57fe8b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c5e8970085e8d64240489700489385b8b7424148b542410895424288974242c8b3c24897c242483c424e9ba560000ff7704ff77088b470c8b5c24248b7c243457e85b5b000089c38b7c24348b77fcc1e608c1ee0783ce018b3c243bfe720e8d64240cb8a43266b18b5d04ff238b7c24345e8b7c77fe8b3783fe030f852c0200008b4f048b7c24308b77fcc1e608c1ee0783ce018b3c243bfe720e8d642408b8a43266b18b5d04ff238b7c24305e8b7c77fe8b3783fe030f85e20100008b47043bc875068d642404eb2e8b398b303bfe75188b79048b70043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff03750e8d642404b8f0f366b18b5d04ff238b75008d76f03b75087305ff5528cd0b897500c746fc03000000c74608f9ffffffc74604c46866b189068b7d008d7ff03b7d087305ff5528cd4b897d00c747fc03000000894f08897704c707610000008b55008d52ec3b55087305ff5528cd8b895500c742fc04000000c7420c05000000894a08c7420403000000c702510000008b75008d76f03b75087305ff5528cd8f897500c746fc03000000895e08894604c706030000008b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894b04c703030000008b4d008d49e83b4d087305ff5528cdcd894d00c741fc05000000894110c7410c05000000895908c7410401000000c701370000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c2483ff0175078d642404c22c005b8b3c24897c242c83c42ce9025a00008d642404b848f066b18b5d04ff238d642408b848f066b18b5d04ff238b7f04ff378b342483fe090f854e0200008d6424048b470c8b77088b57108b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242cff7457fe8b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c2430ff7477fe8b7c24048b3f83ff030f85d00100008b7c2404ff77048b5c24308b7c243857e8b459000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c5e897708c7470409000000c70709000000578b7c24043b7c24087505e9f30000008b7c24048b3f83ff0175458b7c24088b3f83ff0175358b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb05e9a8000000e9ab0000008b7c24048b3f83ff0375528b7c24088b3f83ff0375458b7c24048b7f048b7424088b76043bfe7507bf03000000eb258b178b0e3bd175188b7f048b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037502eb48eb4e8b7c24048b3f83ff0575438b7c24088b3f83ff0575368b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb068b7c240ceb5ceb008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c240ce8d55b000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c40cc22c008d64240cb848f066b18b5d04ff238b470c8b3083fe090f854c0200008b48048b77088b57108b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c24308b7c57fe8b1783fa030f85000200008b57048b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c24308b7c77fe8b3783fe030f85ba0100008b77048b7c24308b7ffcc1e708c1ef0783cf013bcf720e8d642408b8a43266b18b5d04ff238b7c24308b7c4ffe8b0f83f9030f85740100008b7f046a016a013bf27505e9e50000008b0e8b0289c33bc875188b4e048b42043bc87507b903000000eb05b901000000eb05b90100000083f9030f84b50000003bfa7505e99f0000008b0f3bcb75188b4f048b5a043bcb7507b903000000eb05b901000000eb05b90100000083f90374778b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7010700000089ce8b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000897108895104c7013f0000008b75008d76f43b75087305ff5528cd86897500c746fc020000008b5c240c895e04890e893c2489742404eb0b8934248b7c240c897c2404eb0b893c248b7c240c897c24045f5e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701070000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8957085a895704c707090000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c404c22c008d642408b848f066b18b5d04ff238d642408b848f066b18b5d04ff238d642408b848f066b18b5d04ff238b77088b57108b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c2430ff7457fe8b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c2434ff7477fe8b5c24308b7c243857e82955000089c28b7c24048b3f83ff030f85bf0100008b7c24048b77048b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977088b742408897704c70709000000578b7c24043b7c24087505e9f30000008b7c24048b3f83ff0175458b7c24088b3f83ff0175358b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb05e9a8000000e9ab0000008b7c24048b3f83ff0375528b7c24088b3f83ff0375458b7c24048b7f048b7424088b76043bfe7507bf03000000eb258b178b0e3bd175188b7f048b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037502eb48eb4e8b7c24048b3f83ff0575438b7c24088b3f83ff0575368b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb068b7c2410eb5ceb008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2410e83557000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c410c22c008d642410b848f066b18b5d04ff238b77048b57088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe030f858e0000008b77048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa03754c8b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238d642404b848f066b18b5d04ff238b47048b5c242ce80c5f0000e8a75f00005ebb010000008974242c8b3c24897c242883c428e97e6000008b57048b77088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b74242c8b76fcc1e608c1ee0783ce013bd6720e8d642404b8a43266b18b5d04ff238b74242c8b7456fe8b1683fa030f855f0100008b56048b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c746043cfa66b1c706610000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701450000008b55008d52f43b55087305ff5528cdc2895500c742fc020000005b895a04c7024cfa66b18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000895304c70370fa66b18b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000895304893381ff9ce866b17502eb428b3783fe0375408b770481fe943966b17507be03000000eb228b1683fa0175168b760483fe017507be03000000eb05be01000000eb05be0100000083fe037402eb0589d8c22c008b45008d40f03b45087305ff5528cd88894500c740fc03000000c7400880fa66b1c740040b00000089388b3c24897c242c83c42ce93a5400008d642404b848f066b18b5d04ff238b77048b4f088b570c8b7f1083ff037507bb03000000eb05bb050000008b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04c7074b000000578b7c24308b7ffcc1e708c1ef0783cf013bcf720e8d642408b8a43266b18b5d04ff238b7c2430ff744ffe8b7c24348b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8a43266b18b5d04ff238b7c2434ff7457fe8b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642410b8a43266b18b5d04ff238b7c24388b7477fe81fea8e866b17502eb498b1689d783fa017502eb4483ff03753f8b7e0481ffb83966b17507bf03000000eb228b1783fa0375168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b5c240ceb588b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c700a8e866b18b5c240ce8be52000089c38b3c2481ff98fa66b175068d642404eb568b3c248b3f83ff017502eb4c8b3c248b3f83ff0375428b3c248b7f0481ffd46866b17507bf03000000eb228b3783fe0f75168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068d642404eb558b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c70098fa66b1e80052000089c38b3c2481ffc0e866b175068d642404eb568b3c248b3f83ff017502eb4e8b3c248b3f83ff0375448b3c248b7f0481ff109066b17507bf03000000eb228b3783fe0d75168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375088d64240489dfeb558b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c700c0e866b1e84051000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c404c22c00ff7704ff7708ff770c8b47108b7c24288b77fcc1e608c1ee0783ce018b7c24083bfe720e8d642410b8783266b18b5d04ff238b7c24288b7424088b7c77fe83ff0374088d64240c58c22c008b5c24288b7c243857e8ef9f000089c7576a016a016a018b7c241083ff03754a8b7c24488b77fcc1e608c1ee0783ce018b7c24143bfe720e8d642420b8a43266b18b5d04ff238b7c24488b7424148b7c77fe893c24c744240405000000c744240807000000e9950000008b7c241083ff0575478b7c24488b77fcc1e608c1ee0783ce018b7c24143bfe720e8d642420b8a43266b18b5d04ff238b7c24488b7424148b7c77fe893c24c744240405000000c744240807000000eb458b7c24488b77fcc1e608c1ee0783ce018b7c24143bfe720e8d642420b8a43266b18b5d04ff238b7c24488b7424148b7c77fe893c24c744240403000000c74424080b0000008b3424ff7424048b5c240c8b7c244c8b57fcc1e208c1ea0783ca018b7c241c3bfa720e8d642424b8a43266b18b5d04ff238b7c244c8b54241cff7457fe8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707070000008b34248b3683fe030f85ab0000008b34248b460468c46866b16a0157e8e57e000089c7578b45008d40ec3b45087303ff5528894500c740fc040000008b7c241889780cc74008030000008b7c24088978048b7c240489388b7c24408b74243c57568b5c2430e83445000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b0fa66b183c420c22c008d642428b848f066b18b5d04ff238b77088b4f0c8b57108b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c242cff744ffe8b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c2430ff7457fe8b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24348b7477fe81fea8e866b17502eb498b1689d783fa017502eb4483ff03753f8b7e0481ffb83966b17507bf03000000eb228b1783fa0375168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b5c2408eb588b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c700a8e866b18b5c2408e8714d000089c38b3c2481ff98fa66b175068d642404eb568b3c248b3f83ff017502eb4c8b3c248b3f83ff0375428b3c248b7f0481ffd46866b17507bf03000000eb228b3783fe0f75168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068d642404eb558b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c70098fa66b1e8b34c000089c38b3c2481ffb8fa66b175068d642408eb568b3c248b3f83ff017502eb4e8b3c248b3f83ff0375448b3c248b7f0481ff109066b17507bf03000000eb228b3783fe0d75168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375088d64240889deeb588b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c700b8fa66b1e8f34b000089c683c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0fa66b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f0fa66b1c22c008b7704ff77088b570c8b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24208b7c77fe83ff0374088d64240458c22c008b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c24308b7c77fe8b7424308b76fcc1e608c1ee0783ce013bd6720e8d642408b8a43266b18b5d04ff238b7424308b5456fe3bd775098d642404e9cf0000008b3289f183fe01753d8b3783fe0175318b72048b4f043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb098d642404e98e000000e98f00000089ce83f903754a8b3783fe0375418b72048b4f043bf17507be03000000eb258b1e8b013bd875188b76048b49043bf17507be03000000eb05be01000000eb05be0100000083fe0375068d642404eb3aeb3e83fe0575398b3783fe0575308b72048b4f043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb088d64240458c22c00eb008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008970085e89700489385b8b3c24897c242c83c42ce9d94900008b7f048b07ff77088b4f048b570c8b77108b7c24308b7ffcc1e708c1ef0783cf013bcf720e8d642408b8a43266b18b5d04ff238b7c2430ff744ffe8b7c24348b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8a43266b18b5d04ff238b7c2434ff7457fe8b7c24388b7ffcc1e708c1ef0783cf013bf7720e8d642410b8a43266b18b5d04ff238b7c2438ff7477fe8b5c24208b7c243c57e88845000089c78b3783fe070f85aa0200008b570489d68b1283fa037507ba03000000eb05ba0100000083fa030f858302000089f78b770481fe943966b175068d642414eb2d8b1689d783fa0175168b560483fa017507ba03000000eb05ba01000000eb05ba0100000083fa0375068d642414eb3781feb04066b175068d642414eb2983ff0575168b7e0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff03750e8d642414b8fcfa66b18b5d04ff238b7c240c83ff037507bf48fb66b1eb05bf50fb66b1578b55008d52f43b55087305ff5528cd40895500c742fc02000000c742049ce866b18b7c2408893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704a44066b18b4c2404890f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917578b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542414895708897704c70715000000578b7c241481ff9ce866b17502eb558b7c24148b3f83ff017502eb4e8b7c24148b3f83ff0375438b7c24148b7f0481ff943966b17507bf03000000eb228b3783fe0175168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b7c241ceb5a8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c7009ce866b18b5c241ce8f846000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b442404e8d99600005e8d642408bb01000000897424408b7c2414897c243c83c43ce90b5100008d642414eb048d642414b870fb66b18b5d04ff238b7f048b4704ff7708ff770cff7710ff37e88197000089c7578b442408e89598000089c7578b7c24448b77fcc1e608c1ee0783ce018b7c24083bfe720e8d64241cb8a43266b18b5d04ff238b7c24448b742408ff7477fe8b7c24488b742440ff74241c57568b442410bb01000000e84499000089c757bf010000008b742408e9c43900008b77048b57088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7477fe8b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe3bf775098d642404e9cd0000008b1689d183fa01753b8b1783fa01752f8b56048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa0375098d642404e98e000000e99500000089ca83f903754c8b1783fa0375438b56048b4f043bd17507ba03000000eb258b1a8b013bd875188b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa037402eb068d642404eb38eb4283fa05753d8b1783fa0575348b56048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa03750e8d642404b814fc66b18b5d04ff23eb008b1683fa030f858c020000ff76048b3783fe030f8570020000ff77048b7c24043b3c2475068d64240ceb3c8b7c24048b3f8b34248b363bfe751f8b7c24048b7f048b34248b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff03750e8d64240cb870fc66b18b5d04ff238b7c24388b3f83ff070f85fb0100008b7c24388b47048b5c24148b7c241057e89a9a000089c68b7c24108b0f8b7c24108b3f83c702710e8d64240cb8f80466b18b5d04ff238b542410893abf030000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708897704c70733000000578b7d008d7ff43b7d087305ff5528cd06897d00c747fc02000000894f04c70731000000578b75008d76f43b75087305ff5528cd06897500c746fc020000008b7c2408897e04c706030000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000897704c707350000008b75008d76ec3b75087305ff5528cd86897500c746fc0400000089560c8b54240c8956088b542408895604c7062f0000008b55008d52f03b55087305ff5528cdc2895500c742fc030000008b5c2408895a08894a04c702390000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008b5c241089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d64240c8938c22c008d64240cb89cfc66b18b5d04ff238d642408b848f066b18b5d04ff238d642404b848f066b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000005f897804c700b0fa66b1c22c008b57048b4f088b770c8b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c242cff744ffe8b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c2430ff7457fe8b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24348b7477fe81fea8e866b17502eb498b1689d783fa017502eb4483ff03753f8b7e0481ffb83966b17507bf03000000eb228b1783fa0375168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b5c2408eb588b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c700a8e866b18b5c2408e8b340000089c38b3c2481ff98fa66b175068d642404eb568b3c248b3f83ff017502eb4c8b3c248b3f83ff0375428b3c248b7f0481ffd46866b17507bf03000000eb228b3783fe0f75168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068d642404eb558b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c70098fa66b1e8f53f000089c38b3c2481ff9ce866b175068d642408eb568b3c248b3f83ff017502eb4e8b3c248b3f83ff0375448b3c248b7f0481ff943966b17507bf03000000eb228b3783fe0175168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375088d64240889dfeb588b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000005e897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b000000c7009ce866b1e8353f000089c783c4048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f4fc66b1c22c00ff77048b77088b470cff771083fe017507bf01000000eb488b368b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24348b7477fe8b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937578b5c24388b7c241c57e8e795000089c7578b5c243c8b7c2420578b442410e8fa96000089c757f644240c010f851c0100008b7c240c8b078b5c24308b7c244057e82898000089c28b7c241c8b0f8b7c241c8b3f83c702710e8d642418b8f80466b18b5d04ff238b74241c893e8b75008d76f43b75087305ff5528cd06897500c746fc02000000894e04c706310000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708c7470403000000c7070f0000008b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c05000000894a08c7420411000000c702110000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c7410444f366b189118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb05bf01000000578b7c240483ff0175068b442408eb0d8b4424088b5c2404e8fe970000ff7424188b5c2410e8ad47000089c383fb0175075883c418c22c00588b7c2418897c244483c444e9369800008b7704ff77088b470c8b7c24208b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24208b7c77fe83ff0374088d64240458c22c008b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c2430ff7477fe8b3089f783fe070f85fa0100008b7808f7c7010000000f85a00100008b178b7c240483ff077507bf07000000eb158b7c240483ff097507bf07000000eb05bf0b0000008b7424348b76fcc1e608c1ee0783ce013bd6720e8d64240cb8a43266b18b5d04ff238b7424348b5456fe3b142475098d642408e9e10000008b3289f183fe0175438b34248b3683fe0175348b72048b0c248b49043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb098d642408e99a000000e99b00000089ce83f90375508b34248b3683fe0375448b72048b0c248b49043bf17507be03000000eb258b1e8b013bd875188b76048b49043bf17507be03000000eb05be01000000eb05be0100000083fe0375068d642408eb40eb4483fe05753f8b34248b3683fe0575338b72048b0c248b49043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb088d64240858c22c00eb008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088978045f89388b5c24048b7c2408897c243483c434e9e83a00008b5c24188b7c243457e82637000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c24048978045f8d64240489385b8b3c24897c242c83c42ce99d3a000083ff090f85800100008b70048b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24348b7477fe3b342475098d642408e9e10000008b3e89fa83ff0175438b3c248b3f83ff0175348b7e048b14248b52043bfa7507bf03000000eb103bfa7507bf03000000eb05bf0100000083ff037402eb098d642408e99a000000e99b00000089d783fa0375508b3c248b3f83ff0375448b7e048b14248b52043bfa7507bf03000000eb258b0f8b1a3bcb75188b7f048b52043bfa7507bf03000000eb05bf01000000eb05bf0100000083ff0375068d642408eb40eb4483ff05753f8b3c248b3f83ff0575338b7e048b14248b52043bfa7507bf03000000eb103bfa7507bf03000000eb05bf0100000083ff037402eb088d64240858c22c00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c24048978045f8d64240489385b8b3c24897c242c83c42ce9143900008b5c24188b7c243457e85235000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c24048978045f8d64240489385b8b3c24897c242c83c42ce9c93800008b77048b5f088b570c8b4f108b7c242c8b7ffcc1e708c1ef0783cf013bdf720e8d642404b8a43266b18b5d04ff238b7c242c8b7c5ffe8b1f83fb030f85940200008b5f0483fe017507be01000000eb568b368b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe030f85400200008b7f048b75008d76f83b75087305ff5528cd8e897500c746fc01000000893e8b0289c783f807756d8b52048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa03752b8b7f048b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04c70207000000e96a0100008d642404b848f066b18b5d04ff2389f883ff05756d8b52048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa03752b8b7f048b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04c70205000000e9f60000008d642404b848f066b18b5d04ff2389c783f803756d8b52048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa03752b8b7f048b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04c70203000000e9820000008d642404b848f066b18b5d04ff2383ff01756a8b52048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa0375288b7f048b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04c70201000000eb138d642404b848f066b18b5d04ff23bac46866b18b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c895708897704c707370000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238d642404b848f066b18b5d04ff238b57048b7f088b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc74608c46866b1c7460424f366b1c706030000008b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089385b8b3c24897c242c83c42ce94f3500008b77048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe0375498b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238b77088b470c8b57108b3883ff090f85420200008b48048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa030f85fc0100008b57048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe030f85b60100008b77048b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c242c8b7c4ffe8b0f83f9030f85700100008b7f046a016a013bf27505e9e50000008b0e8b0289c33bc875188b4e048b42043bc87507b903000000eb05b901000000eb05b90100000083f9030f84b50000003bfa7505e99f0000008b0f3bcb75188b4f048b5a043bcb7507b903000000eb05b901000000eb05b90100000083f90374778b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7010700000089ce8b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000897108895104c7013f0000008b75008d76f43b75087305ff5528cd86897500c746fc020000008b5c2408895e04890e893c2489742404eb0b8934248b7c2408897c2404eb0b893c248b7c2408897c24045f5e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701070000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707410000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c404c22c008d642404b848f066b18b5d04ff238d642404b848f066b18b5d04ff238d642404b848f066b18b5d04ff238b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242cff7457fe8b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c2430ff7477fe8b5c242c8b7c243457e8582e000089c28b7c24048b3f83ff030f85b80100008b7c24048b77048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70741000000578b7c24043b7c24087505e9f30000008b7c24048b3f83ff0175458b7c24088b3f83ff0175358b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb05e9a8000000e9ab0000008b7c24048b3f83ff0375528b7c24088b3f83ff0375458b7c24048b7f048b7424088b76043bfe7507bf03000000eb258b178b0e3bd175188b7f048b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037502eb48eb4e8b7c24048b3f83ff0575438b7c24088b3f83ff0575368b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb068b7c240ceb5ceb008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c240ce86b30000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c40cc22c008d64240cb848f066b18b5d04ff238b77048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe030f85b50000008b77048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c747043cfa66b1c707610000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702450000008b4d008d49f43b4d087305ff5528cd84894d00c741fc020000005e897104c70170fa66b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c22c008d642404b848f066b18b5d04ff238b77048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe030f859b0100008b4f048b7c24308b3f83ff090f857b0100008b7c24308b77048b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8783266b18b5d04ff238b7c240c8b5477fe83faff75518b7c24088b178b7c24088b3f83c702710e8d642404b8f80466b18b5d04ff238b5c2408893b8b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8003566b18b5d04ff238b7c240c895477feeb008b7d008d7ff43b7d087305ff5528cd06897d00c747fc02000000894f04c707070000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706470000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707390000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000005a895104c70100fd66b18b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000cfd66b1c22c008d642404b81cfd66b18b5d04ff238d642404b848f066b18b5d04ff238b47048b5c24248b7c242c57e89429000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707470000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008b77048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe0375678b7f0481ff943966b17502eb358b3783fe0175168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff03740e8d642404b874fd66b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000005f897804c700ccfd66b1c22c008d642404b848f066b18b5d04ff238b5f0483fb017d0e8d642404b8a84566b18b5d04ff23b801000000e8c38700008b3c2483ff0175078d642404c22c005b8b3c24897c242c83c42ce9a08800008b77048b570883fe017c498b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7074d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b8d4fd66b18b5d04ff238b77048b57088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7477fe8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c7074f0000005781fe9ce866b17502eb498b1689d783fa017502eb4483ff03753f8b7e0481ff943966b17507bf03000000eb228b1783fa0175168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b7c2404eb588b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c7009ce866b18b5c2404e8b32a000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c404c22c008b77048b47088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe057564ff77048b5c242c8b7c243057e88f26000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c5e897708c7470405000000c7076b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b814f166b18b5d04ff23ff77048b77088b470c8b57108b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c24308b7c57fe8b1783fa050f8585010000ff77048b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c24348b7c77fe8b3783fe050f853f010000ff77048b5c24348b7c243857e8a425000089c28b7c240883ff0375178b3a83ff077502eb2e8d642410b838fe66b18b5d04ff238b7c240883ff1375178b3a83ff077502eb0e8d642410b894fe66b18b5d04ff238b7c24043b3c2475098d642404e9860000008b7c24043b3c2474798b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e04c706070000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089770c8b3424897708c747040b000000c7076b0000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e04893eeb088d6424048b7424088b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c5a8957085a895704c7076b0000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c404c22c008d64240cb814f166b18b5d04ff238d642408b814f166b18b5d04ff238b77048b47088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe057575ff77048b5c24288b7c243057e81224000089c78b3783fe07754d8b77048b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7076d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642408b8f0fe66b18b5d04ff238d642404b814f166b18b5d04ff238b7f048b77088b570c8b4f108b0189c383f8090f85060300008b59048b4f048b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242cff7457fe8b7c24308b7ffcc1e708c1ef0783cf013bdf720e8d642408b8a43266b18b5d04ff238b7c24308b545ffe8b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c2430ff7477fe8b7c24048b3f83ff030f85650200008b7c24048b77048b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08897704c707530000005781faa8e866b17502eb498b3289f783fe017502eb4483ff03753f8b7a0481ffb83966b17507bf03000000eb228b3783fe0375168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375068b5c240ceb588b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000895704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c700a8e866b18b5c240ce8cb25000089c38b7c24043b7c24087505e9f30000008b7c24048b3f83ff0175458b7c24088b3f83ff0175358b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb05e9a8000000e9a90000008b7c24048b3f83ff0375528b7c24088b3f83ff0375458b7c24048b7f048b7424088b76043bfe7507bf03000000eb258b178b0e3bd175188b7f048b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037502eb48eb4c8b7c24048b3f83ff0575418b7c24088b3f83ff0575348b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb0489dfeb5aeb008b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000008b742404897704c707070000008b45008d40f03b45087305ff5528cd88894500c740fc03000000897808c740040b0000008b7c24088938e86b24000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c40cc22c008d64240cb848f066b18b5d04ff2383fb050f85550200008b4104ff77048b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c2430ff7457fe8b7c24348b7ffcc1e708c1ef0783cf013bf7720e8d64240cb8a43266b18b5d04ff238b7c2434ff7477fe8b7c24048b3f83ff030f85de0100008b7c2404ff7704a801740489c6eb10e89b80000089c78b3f8d347d0100000081e6ff0100008b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240c89570c5a895708897704c70751000000578b7c24043b7c24087505e9f30000008b7c24048b3f83ff0175458b7c24088b3f83ff0175358b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb05e9a8000000e9ab0000008b7c24048b3f83ff0375528b7c24088b3f83ff0375458b7c24048b7f048b7424088b76043bfe7507bf03000000eb258b178b0e3bd175188b7f048b76043bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037502eb48eb4e8b7c24048b3f83ff0575438b7c24088b3f83ff0575368b7c24048b7f048b7424088b76043bfe7507bf03000000eb103bfe7507bf03000000eb05bf0100000083ff037402eb068b7c2410eb5ceb008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2410e80d22000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c410c22c008d642410b848f066b18b5d04ff238d642404b860ff66b18b5d04ff238b7f04ff37ff7704ff7708ff770c8b47108b3089f783fe0b75478b500489d6f6c2017407ba03000000eb05ba0100000083f20283fa03752989f78b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb4f83ff0775488b700889f7f7c6010000007407be03000000eb05be0100000083f60283fe0375278b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb0289c78b3783fe090f855f0400008b74240883fe050f85520400008b77048b7c243c8b7ffcc1e708c1ef0783cf013bf7720e8d642414b8a43266b18b5d04ff238b7c243c8b7c77fe6a016a0181ff98fa66b17502eb498b1789d683fa017502eb4083fe03753b8b770481fed46866b17507be03000000eb228b1683fa0f75168b760483fe017507be03000000eb05be01000000eb05be0100000083fe037502eb5f81ffb8fa66b17502eb558b1789d683fa017505e90701000083fe030f85fe0000008b770481fe109066b17507be03000000eb228b1683fa0d75168b760483fe017507be03000000eb05be01000000eb05be0100000083fe037405e9c000000081ffa8e866b17502eb498b1789d683fa017502eb4483fe03753f8b770481feb83966b17507be03000000eb228b1683fa0375168b760483fe017507be03000000eb05be01000000eb05be0100000083fe0375068b7c2418eb5a8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060700000089f78b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b000000c700a8e866b18b5c2418e86b1f000089c7893c24c7442404a8e866b1eb0b8b742418893424897c2404ff34248b7c24088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7c24488b57fcc1e208c1ea0783ca018b7c24183bfa720e8d642420b8a43266b18b5d04ff238b7c24488b5424188b7c57fe8b1783fa030f852d0200008b47048b7c24108b3f83ff0775718b7c24108b57048b7c24488b7ffcc1e708c1ef0783cf013bd7720e8d642420b8a43266b18b5d04ff238b7c24488b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70707000000e9840100008d642420b848f066b18b5d04ff238b7c24108b3f83ff0575718b7c24108b57048b7c24488b7ffcc1e708c1ef0783cf013bd7720e8d642420b8a43266b18b5d04ff238b7c24488b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70705000000e9080100008d642420b848f066b18b5d04ff238b7c24108b3f83ff0375718b7c24108b57048b7c24488b7ffcc1e708c1ef0783cf013bd7720e8d642420b8a43266b18b5d04ff238b7c24488b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70703000000e98c0000008d642420b848f066b18b5d04ff238b7c24108b3f83ff01756e8b7c24108b57048b7c24488b7ffcc1e708c1ef0783cf013bd7720e8d642420b8a43266b18b5d04ff238b7c24488b7c57fe8b1783fa0375288b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70701000000eb138d642420b848f066b18b5d04ff23bfc46866b157ff74241056bb05000000e87d4c000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c41cc22c008d642420b848f066b18b5d04ff238b5c24208b7c243c57e8ed18000089c68b7c243c8b57fcc1e208c1ea0783ca018b7c240c3bfa720e8d642414b8a43266b18b5d04ff238b7c243c8b54240c8b7c57fe8b1783fa030f85330200008b47048b7c24048b3f83ff0775718b7c24048b57048b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d642414b8a43266b18b5d04ff238b7c243c8b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70707000000e9840100008d642414b848f066b18b5d04ff238b7c24048b3f83ff0575718b7c24048b57048b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d642414b8a43266b18b5d04ff238b7c243c8b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70705000000e9080100008d642414b848f066b18b5d04ff238b7c24048b3f83ff0375718b7c24048b57048b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d642414b8a43266b18b5d04ff238b7c243c8b7c57fe8b1783fa03752b8b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70703000000e98c0000008d642414b848f066b18b5d04ff238b7c24048b3f83ff01756e8b7c24048b57048b7c243c8b7ffcc1e708c1ef0783cf013bd7720e8d642414b8a43266b18b5d04ff238b7c243c8b7c57fe8b1783fa0375288b57048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c70701000000eb138d642414b848f066b18b5d04ff23bfc46866b157ff742404568b5c2414e8f649000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008b74240c897004893883c410c22c008d642414b848f066b18b5d04ff238b4708ff77108b5c24148b7c243057e85916000089c65f83ef016bff04710e8d642404b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e87349000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008b57048b77088b7c241c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b7c241c8b7c57fe83ff03740458c22c008b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa030f85bf0000008b57048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe03757d8b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000895710c7470c03000000897708c7470401000000c707370000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238d642404b848f066b18b5d04ff238b7f048b07ff7708ff770cff7710ff7714ff7704e88e75000089c7578b442410e8a27600008b7c24448b77fcc1e608c1ee0783ce018b7c24043bfe720e8d64241cb8a43266b18b5d04ff238b7c24448b742404ff7477fe8b7c24488b74242c57568b5c2414e87d77000089c7578b5c244c8b7c2430578b44240ce8c878000089c38b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000008b74241c897704c707350000005783fb0175068b442404eb098b442404e8ca7900008b7c241483ef018b5c241803df710e8d642428b8f80466b18b5d04ff23ff742424ff74240ce8047a000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c424c22c008b47048b5c24108b7c242c57e8a713000089c78b1789d683fa03756e8b77048b4f088b570c8b3983ff0975508b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570cc7470803000000897704c707630000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b85c0067b18b5d04ff2383fe0775618b7f048b3783fe0375498b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707650000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238d642404b85c0067b18b5d04ff238b57048b5f088b4f0c8b7710f6c3010f85b40100008b338b7c241c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b7c241c8b7c57fe83ff03740458c22c008b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b4c77fe8b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe3bcf7505e9c30000008b3189f283fe0175398b3783fe01752d8b71048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb05e986000000e98700000089d683fa0375468b3783fe03753d8b71048b57043bf27507be03000000eb258b1e8b023bd875188b76048b52043bf27507be03000000eb05be01000000eb05be0100000083fe037502eb36eb3a83fe0575358b3783fe05752c8b71048b57043bf27507be03000000eb103bf27507be03000000eb05be0100000083fe037402eb0458c22c00eb008b75008d76f43b75087305ff5528cd82897500c746fc02000000894e04c706070000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089385b8b3c24897c242c83c42ce9a51400008b7c241c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8783266b18b5d04ff238b7c241c8b7c57fe83ff03740458c22c008b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b54242c8b52fcc1e208c1ea0783ca013bca720e8d642404b8a43266b18b5d04ff238b54242c8b544afe83fe037507b801000000eb05b8050000008b0f89ce83f9030f85790100008b5f048b4d008d49ec3b4d087305ff5528cdcd894d00c741fc0400000089410c895908c7410403000000c70151000000513bd77505e9bd0000008b0a89cb83f901753783fe01752d8b72048b4f043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb05e982000000e98500000089d983fb03754483fe03753d8b72048b4f043bf17507be03000000eb258b1e8b013bd875188b76048b49043bf17507be03000000eb05be01000000eb05be0100000083fe037502eb34eb3a83f905753583fe05752e8b72048b4f043bf17507be03000000eb103bf17507be03000000eb05be0100000083fe037402eb068b7c2404eb56eb008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089388b5c2404e8af12000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c404c22c008d642404b848f066b18b5d04ff238b77048b47088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe037564ff77048b5c24288b7c243057e87d0e000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c5e897708c7470405000000c707090000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b848f066b18b5d04ff238b77048b47088b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b3783fe010f85070100008b7f0483ff017502eb1383ff01740e8d642404b8a80067b18b5d04ff238b5c24208b7c242c57e8b60d000089c78b1789d683fa03756e8b77048b4f088b570c8b3983ff0975508b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470405000000c707190000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b8040167b18b5d04ff2383fe0775508b77048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470405000000c7071b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b8040167b18b5d04ff238d642404b8d8f066b18b5d04ff23ff77048b57088b470c8b77108b7c24308b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c24308b7c77fe8b3783fe010f85160100008b77048b7c24308b7ffcc1e708c1ef0783cf013bd7720e8d642408b8a43266b18b5d04ff238b7c24308b7c57fe8b1783fa010f85d00000008b7f0483fe017502eb1383fe01740e8d642408b8600167b18b5d04ff2383ff017502eb1383ff01740e8d642408b8bc0167b18b5d04ff238b5c24248b7c243057e80e0c000089c78b3783fe0375748b77088b3683fe097507be03000000eb05be0100000083fe0375538b77048b570c8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977085e897704c707190000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642408eb048d642408b8e80167b18b5d04ff238d642408b8d8f066b18b5d04ff238d642408b8d8f066b18b5d04ff238b77048b7c242c8b7ffcc1e708c1ef0783cf013bf7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c77fe8b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000005e897304c7033c0267b181ff9ce866b17502eb428b3783fe0375408b770481fe943966b17507be03000000eb228b1683fa0175168b760483fe017507be03000000eb05be01000000eb05be0100000083fe037402eb0589d8c22c008b45008d40f03b45087305ff5528cd88894500c740fc03000000c74008440267b1c740040b00000089388b3c24897c242c83c42ce9400e00008b57048b77088b4f0c8b7c242c8b7ffcc1e708c1ef0783cf013bd7720e8d642404b8a43266b18b5d04ff238b7c242c8b7c57fe8b1783fa010f85bf0000008b57048b7c242c8b7ffcc1e708c1ef0783cf013bcf720e8d642404b8a43266b18b5d04ff238b7c242c8b7c4ffe8b0f83f901757d8b7f0483fa017502eb1383fa01740e8d642404b85c0267b18b5d04ff2383ff017502eb1383ff01740e8d642404b8b40267b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e8970048938c22c008d642404b8d8f066b18b5d04ff238d642404b8d8f066b18b5d04ff23ff77048b47088b5c24288b7c243057e86d09000089c68b7c24308b57fcc1e208c1ea0783ca018b3c243bfa720e8d642408b8a43266b18b5d04ff238b7c24305a8b7c57fe8b1783fa010f85a90000008b7f0483ff017502eb1383ff01740e8d642404b8e00267b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707470000008b75008d76f43b75087305ff5528cd80897500c746fc020000005a895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707380367b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70070fa66b1c22c008d642404b8d8f066b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642424b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b5c24508b442410e879720000e8d8730000ff742404bb01000000e85e16000089c7ff74241057f644240401752e8b7c24048b078b7c2404ff7704ff74240c8b5c2408e89274000089c25e891424897424043b650c7303ff552cebcb5b8b7c245457ff742418ff74242c8b44242ce82b77000089c38b7c240c81ff9ce866b175068d64242ceb508d64240c8b3c248b3f83ff0375478b3c248b7f0481ff943966b17507bf03000000eb228b3783fe0175168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff037402eb098d64242089d8c22c008b45008d40f03b45087305ff5528cd08894500c740fc03000000c74008f40467b1c740040b0000005f89388b7c241c897c244883c448e9e70a0000f40000|@12118,1,@1349|17,0,@6121 407,1,@6122 442,0,@9990 534,1,@6123 557,1,@6127 591,0,@9990 651,0,@9990 712,0,1 719,0,0 726,0,0 740,0,@11963 778,0,-4 785,0,@10755 825,0,48 858,0,2 868,0,1 874,0,40 912,0,1 947,0,1 983,0,2 993,0,0 999,0,27 1032,0,0 1158,1,@6128 1167,0,@11922 1181,0,@11922 1245,0,@9990 1287,0,@9990 1336,1,@6129 1378,0,4 1384,0,4 1445,0,1 1456,0,1 1463,0,0 1525,0,1 1550,0,1 1557,0,0 1564,0,0 1618,0,1 1629,0,1 1636,0,0 1688,0,3 1724,0,5 1739,1,@6130 1788,0,@11922 1845,0,@9990 1901,0,@9990 1957,0,@9990 2022,0,1 2029,0,0 2036,0,0 2075,0,1 2082,0,0 2089,0,0 2129,0,3 2169,0,31 2274,0,3 2316,0,4 2362,0,@11922 2376,0,@11922 2390,0,@11922 2430,0,@9990 2472,0,@9990 2499,1,@6129 2568,0,4 2629,0,1 2640,0,1 2647,0,0 2709,0,1 2734,0,1 2741,0,0 2748,0,0 2802,0,1 2813,0,1 2820,0,0 2872,0,3 2908,0,5 2923,1,@6130 2972,0,@11922 3012,0,@9990 3068,0,@9990 3129,0,5 3173,0,@11922 3187,0,@11922 3204,1,@6131 3209,1,@6132 3215,0,0 3234,1,@6133 3269,0,@9990 3311,0,@9990 3374,0,@12012 3380,0,48 3415,0,34 3451,0,@12013 3486,0,@12015 3554,0,@11854 3574,0,@10068 3581,0,1 3603,0,1 3610,0,0 3617,0,0 3662,0,@12016 3669,0,5 3686,1,@6130 3695,0,@11922 3722,0,1 3729,0,2 3764,0,37 3794,0,@9990 3836,0,@9990 3878,0,@9990 3897,0,@11855 3926,0,@10071 3933,0,1 3955,0,1 3962,0,0 3969,0,0 4015,0,3 4051,0,5 4057,0,@11855 4066,1,@6130 4077,0,@12018 4119,0,@10757 4126,0,1 4148,0,1 4155,0,0 4162,0,0 4209,0,3 4245,0,5 4251,0,@12018 4256,1,@6130 4267,0,@11857 4309,0,@11162 4316,0,1 4338,0,1 4345,0,0 4352,0,0 4401,0,3 4437,0,5 4443,0,@11857 4448,1,@6130 4533,0,@9988 4577,1,@6148 4628,0,@9990 4656,0,2 4664,0,3 4711,0,@9990 4739,0,2 4747,0,3 4782,0,@9990 4810,0,1 4818,0,5 4862,0,@9990 4914,0,3 4939,0,@10755 4947,1,@6138 4988,0,1 5020,1,@6123 5093,0,@12020 5108,0,@11922 5151,0,@9990 5193,0,@9990 5235,0,@9990 5254,0,@11855 5283,0,@10071 5290,0,1 5312,0,1 5319,0,0 5326,0,0 5372,0,3 5408,0,5 5414,0,@11855 5423,1,@6130 5434,0,@12018 5476,0,@10757 5483,0,1 5505,0,1 5512,0,0 5519,0,0 5566,0,3 5602,0,5 5608,0,@12018 5613,1,@6130 5624,0,@12021 5666,0,@11162 5673,0,1 5695,0,1 5702,0,0 5709,0,0 5758,0,3 5794,0,5 5800,0,@12021 5805,1,@6130 5845,0,@12023 5880,0,@12025 5921,0,@9988 5976,0,@9990 6018,0,@9990 6075,0,1 6086,0,1 6093,0,0 6143,0,1 6168,0,1 6175,0,0 6182,0,0 6222,0,1 6233,0,1 6240,0,0 6292,0,3 6343,1,@6130 6389,0,@9990 6431,0,@9990 6473,0,@9990 6500,1,@6129 6530,0,1 6537,0,0 6557,0,@10068 6587,0,1 6594,0,0 6601,0,0 6618,0,@10166 6644,0,1 6651,0,0 6658,0,0 6672,0,@12026 6691,0,@12029 6698,0,@12030 6732,0,@11854 6771,0,@10165 6810,0,0 6886,0,10 6897,0,@11854 6938,0,@10068 6945,0,1 6967,0,1 6974,0,0 6981,0,0 7029,0,3 7065,0,5 7071,0,@11854 7080,1,@6130 7159,1,@6149 7169,0,0 7189,1,@6133 7204,0,@12032 7231,1,@6150 7243,1,@6151 7279,0,@9990 7319,0,0 7324,1,@6152 7332,0,0 7376,0,@9990 7418,0,@9990 7475,0,1 7486,0,1 7493,0,0 7541,0,1 7566,0,1 7573,0,0 7580,0,0 7622,0,1 7633,0,1 7640,0,0 7654,0,@12038 7741,0,1 7748,0,0 7755,0,0 7769,0,@12041 7810,1,@6154 7838,0,@9455 7854,0,1 7920,0,25 7956,0,24 7996,0,1 8031,0,26 8080,0,23 8122,0,28 8305,0,@12043 8319,0,@11922 8333,0,@11922 8372,0,@12020 8413,0,@9990 8455,0,@9990 8497,0,@9990 8516,0,@11855 8545,0,@10071 8552,0,1 8574,0,1 8581,0,0 8588,0,0 8634,0,3 8670,0,5 8676,0,@11855 8685,1,@6130 8696,0,@12018 8738,0,@10757 8745,0,1 8767,0,1 8774,0,0 8781,0,0 8828,0,3 8864,0,5 8870,0,@12018 8875,1,@6130 8886,0,@11854 8928,0,@10068 8935,0,1 8957,0,1 8964,0,0 8971,0,0 9020,0,3 9056,0,5 9062,0,@11854 9067,1,@6130 9107,0,@12046 9132,0,0 9165,0,@9990 9221,1,@6155 9242,1,@6156 9276,1,@6157 9304,0,@9455 9350,0,24 9386,0,1 9392,0,7 9425,0,2 9435,0,8 9441,0,8 9474,0,@11958 9545,0,0 9574,1,@6158 9587,1,@6133 9618,1,@6159 9656,0,@9988 9711,0,@9990 9768,0,3 9784,0,3 9791,0,5 9820,0,@9990 9884,0,1 9895,0,1 9902,0,0 9958,0,1 9983,0,1 9990,0,0 9997,0,0 10043,0,1 10054,0,1 10061,0,0 10113,0,3 10168,1,@6130 10182,1,@6129 10243,1,@6130 10284,0,@9990 10348,0,1 10359,0,1 10366,0,0 10422,0,1 10447,0,1 10454,0,0 10461,0,0 10507,0,1 10518,0,1 10525,0,0 10577,0,3 10636,1,@6130 10650,1,@6129 10711,1,@6130 10752,0,@9990 10789,0,0 10822,0,@9990 10918,0,@9990 10976,0,3 10990,0,@11922 11034,0,@9990 11092,0,2 11106,0,@11922 11150,0,@9990 11208,0,1 11222,0,@11922 11264,0,@9990 11322,0,0 11333,0,@11922 11343,0,@10755 11387,0,27 11431,0,@11922 11445,0,@11922 11492,0,@10755 11499,0,@11955 11505,0,1 11534,0,@9990 11583,0,5 11601,1,@6130 11633,0,@9990 11691,0,30 11735,0,@11922 11792,0,@9990 11848,0,@9990 11904,0,@9990 11969,0,1 11976,0,0 11983,0,0 12022,0,1 12029,0,0 12036,0,0 12076,0,3 12116,0,31 12221,0,3 12259,0,32 12305,0,@11922 12319,0,@11922 12333,0,@11922 12367,0,@9990 12409,0,@9990 12436,1,@6129 12498,0,32 12559,0,1 12570,0,1 12577,0,0 12639,0,1 12664,0,1 12671,0,0 12678,0,0 12732,0,1 12743,0,1 12750,0,0 12802,0,3 12838,0,5 12853,1,@6130 12902,0,@11922 12939,0,@9990 13002,0,@12012 13008,0,48 13043,0,34 13079,0,@12015 13153,0,@11922 13190,0,@9990 13268,0,@9988 13312,0,@9455 13352,0,@10015 13402,0,3 13437,0,35 13475,0,28 13511,0,@12047 13608,0,@12048 13620,0,@12049 13634,0,@11922 13656,1,@6129 13693,0,35 13760,0,@9990 13789,0,@10068 13813,0,1 13820,0,0 13827,0,0 13841,0,@12052 13880,0,@12055 13892,0,@11922 13914,0,@10224 13924,0,0 13929,1,@6160 13960,1,@6161 14009,0,38 14053,0,@12056 14093,0,@9990 14141,0,39 14148,0,@11854 14177,0,@10068 14184,0,1 14206,0,1 14213,0,0 14220,0,0 14266,0,3 14302,0,5 14308,0,@11854 14317,1,@6130 14392,0,@9990 14429,1,@6129 14471,0,2 14477,0,53 14521,0,@11930 14567,0,@9990 14623,0,@9990 14664,1,@6129 14693,0,@12059 14725,0,@12062 14793,0,3 14835,0,5 14841,0,53 14929,0,53 14975,0,@11930 14989,0,@11930 15029,0,@9990 15066,1,@6129 15117,0,54 15161,0,@12065 15175,0,@11930 15240,0,@9990 15282,0,@9990 15324,0,@9990 15397,0,41 15404,0,@11855 15433,0,@10071 15440,0,1 15462,0,1 15469,0,0 15476,0,0 15522,0,3 15558,0,5 15564,0,@11855 15573,1,@6130 15635,0,1 15646,0,1 15653,0,0 15715,0,1 15740,0,1 15747,0,0 15754,0,0 15808,0,1 15819,0,1 15826,0,0 15878,0,3 15914,0,5 15925,1,@6130 15974,0,@11922 16023,0,@9990 16065,0,@9990 16113,1,@6162 16176,0,40 16237,0,1 16248,0,1 16255,0,0 16317,0,1 16342,0,1 16349,0,0 16356,0,0 16410,0,1 16421,0,1 16428,0,0 16480,0,3 16516,0,5 16531,1,@6130 16580,0,@11922 16594,0,@12069 16640,0,1 16647,0,0 16694,0,4 16719,0,1 16726,0,0 16771,0,4 16831,0,@9990 16854,0,@12018 16883,0,@10757 16890,0,1 16912,0,1 16919,0,0 16926,0,0 16939,0,@12021 16975,0,@11162 16982,0,1 17004,0,1 17011,0,0 17018,0,0 17034,0,@11855 17063,0,@10071 17070,0,1 17092,0,1 17099,0,0 17106,0,0 17152,0,3 17190,0,5 17196,0,@11855 17205,1,@6130 17218,0,@11855 17273,0,3 17306,0,@9990 17384,0,@9990 17442,0,3 17456,0,@11922 17508,0,@9990 17566,0,2 17580,0,@11922 17632,0,@9990 17690,0,1 17704,0,@11922 17756,0,@9990 17814,0,0 17825,0,@11922 17835,0,@10755 17846,0,2 17851,1,@6138 17900,0,@11922 17919,1,@6129 17954,0,@9990 18032,0,@9990 18090,0,3 18104,0,@11922 18156,0,@9990 18214,0,2 18228,0,@11922 18280,0,@9990 18338,0,1 18352,0,@11922 18404,0,@9990 18462,0,0 18473,0,@11922 18483,0,@10755 18498,1,@6138 18554,0,@11922 18579,1,@6129 18599,0,@9455 18612,0,@10755 18619,0,@11957 18624,0,5 18629,1,@6138 18701,0,@9988 18752,0,@9990 18808,0,@9990 18866,0,1 18902,0,1 18912,0,0 18918,0,27 18962,0,@11922 18976,0,@11922 19006,1,@6163 19018,1,@6164 19051,0,@9990 19087,1,@6165 19108,1,@6166 19149,0,26 19170,1,@6167 19194,0,@9455 19212,1,@6168 19269,1,@6129 19332,0,1 19341,0,49 19385,0,@12074 19443,0,50 19487,0,@11922 19501,0,@12074 19558,0,@9988 19609,0,@9990 19651,0,@9990 19704,0,1 19715,0,1 19722,0,0 19768,0,1 19793,0,1 19800,0,0 19807,0,0 19843,0,1 19854,0,1 19861,0,0 19909,0,3 19945,0,5 19963,1,@6130 19992,0,@9988 20043,0,@9990 20085,0,@9990 20108,0,0 20115,0,2 20170,0,1 20176,0,40 20215,0,1 20226,0,1 20233,0,0 20277,0,1 20302,0,1 20309,0,0 20316,0,0 20350,0,1 20361,0,1 20368,0,0 20418,0,3 20454,0,5 20465,1,@6130 20514,0,@11922 20554,0,@9990 20591,1,@6129 20633,0,2 20639,0,4 20683,0,@11922 20723,0,@9990 20771,0,@12077 20790,1,@6129 20856,0,2 20862,0,12 20906,0,@12080 20955,0,2 20961,0,13 21005,0,@12080 21019,0,@11927 21065,0,@9990 21121,0,@9990 21169,0,@12083 21195,0,@12086 21214,1,@6129 21238,0,1 21245,0,0 21298,0,12 21348,0,@12088 21362,0,@11927 21376,0,@11927 21413,0,@9990 21462,0,@12091 21468,0,@11854 21488,0,@10068 21495,0,1 21517,0,1 21524,0,0 21531,0,0 21576,0,@12092 21583,0,5 21600,1,@6130 21638,0,@9990 21694,0,@9990 21738,0,@12094 21764,0,@12097 21804,0,22 21848,0,@11927 21862,0,@11927 21887,1,@6129 21921,0,@9990 21970,0,@12099 22010,0,35 22077,0,@12102 22112,0,@12015 22124,0,@11927 22156,0,@9455 22191,1,@6170 22196,1,@6171 22205,0,0 22210,1,@6133 22250,1,@6172 22293,1,@6173 22305,0,@11854 22339,0,@10068 22346,0,1 22368,0,1 22375,0,0 22382,0,0 22431,0,@12116 22438,0,5 22457,1,@6130 6122:D3,236|3b650c7305ff552ccd09a8010f85ce0000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c73fe83ff0375588b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe8b3783fe0375218b77048b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb0fb848f066b18b5d04ff23bf0100000083ff01750d8b74240489742404e957ffffffff378b7c240857e84bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@1297|40,0,@9988 79,0,@9990 137,0,@11922 147,0,0 225,0,0 6123:D3,924|3b650c7305ff552ccd09538b30ff70048b7808ff700c8b1683fa030f856b0300008b76048b54241483fa030f85f60100008b54240483c202710e8d64240cb8f80466b18b5d04ff2383cf21bb03000000c1e31881ebffffff00f6c301740783fb017d12eb120fb64bff8d0c4d0100000083f9237402eb12b8b02f66b1565257e8aca4f3ff5f5a5e89c3f7c701000000741af6c301741589f989d8d1f983e8010fafc8700789cb83c301eb0d89f85652e8a47ff9ff5a5e89c389d05652e8ef0200005a5e89c38b4d008d49f03b4d087305ff5528cd4c894d00c741fc03000000c74108f9ffffffc74104c46866b189318b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707570000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b1c2489590c8d642404897108895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489385a83ea016bd204710e8d642404b8f80466b18b5d04ff2383c2018b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708c74704c46866b1893789fe8b5424088b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7075b0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb017502eb05e8ce010000e93f010000bb03000000c1e31881ebffffff00f6c301740783fb017d12eb120fb653ff8d14550100000083fa237402eb10b8b02f66b15756e8d1a2f3ff5e5f89c3f7c701000000741af6c301741589fa89d9d1fa83e9010fafd1700789d383c301eb0b89f856e8cb7df9ff5e89c38b44240456e8160100005e89c18b55008d52f03b55087305ff5528cd42895500c742fc03000000c74208f9ffffffc74204c46866b189328b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707570000008b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b0c24894a0c8d6424048972088b34248972048d642404c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c2489fb83ff0175078d642404c2080089db8d6424048b3c24897c240883c408e9c80000008d64240cb848f066b18b5d04ff23f400|@11962,1,@1301|63,0,@9455 76,0,1 120,0,@9958 128,1,@4895 176,1,@5527 189,1,@6124 226,0,-4 233,0,@10755 273,0,43 321,0,0 354,0,0 405,0,@9455 449,0,@10755 495,0,45 528,0,0 542,1,@6125 552,0,1 596,0,@9958 603,1,@4895 649,1,@5527 662,1,@6124 698,0,-4 705,0,@10755 745,0,43 800,0,0 833,0,0 904,1,@6126 913,0,@11922 6124:D3,44|b9f07246b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@11961,1,@1298|1,0,@19847 6125:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1299| 6126:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1300| 6127:D3,236|3b650c7305ff552ccd09a8010f85ce0000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c73fe83ff0375588b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe8b3783fe0375218b77048b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb0fb848f066b18b5d04ff23bf0100000083ff01750d8b74240489742404e957ffffffff378b7c240857e84bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@1302|40,0,@9988 79,0,@9990 137,0,@11922 147,0,0 225,0,0 6128:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1303| 6129:D3,928|3b650c7305ff552ccd0989da8b3889fe83ff03750ab848f466b18b5d04ff2389f783fe0b0f85830000008b70048b7810f7c601000000752c8b06ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c2040083ef016bff04710ab8f80466b18b5d04ff2383c7018b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780cc74008c46866b1c7400438f366b1c70003000000c2040089fe83ff070f85590200008b58048b78088b700c8b4810f7c701000000752c8b07ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c204008b7c24048b7ffcc1e708c1ef0783cf013bdf720ab8a43266b18b5d04ff238b7c24048b7c5ffe8b1783fa030f85de0100008b7f048b1e89da83fb0775658b56048b7424048b76fcc1e608c1ee0783ce013bd6720ab8a43266b18b5d04ff238b7424048b7456fe8b1683fa03752b8b56048b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c70607000000e94b010000b848f066b18b5d04ff2389d383fa0575658b56048b7424048b76fcc1e608c1ee0783ce013bd6720ab8a43266b18b5d04ff238b7424048b7456fe8b1683fa03752b8b56048b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c70605000000e9df000000b848f066b18b5d04ff2389da83fb0375628b56048b7424048b76fcc1e608c1ee0783ce013bd6720ab8a43266b18b5d04ff238b7424048b7456fe8b1683fa0375288b56048b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c70603000000eb76b848f066b18b5d04ff2383fa0175628b56048b7424048b76fcc1e608c1ee0783ce013bd6720ab8a43266b18b5d04ff238b7424048b7456fe8b1683fa0375288b56048b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c70601000000eb0fb848f066b18b5d04ff23bec46866b18b45008d40ec3b45087305ff5528cdc2894500c740fc0400000089480c897008897804c70003000000c20400b848f066b18b5d04ff2389f783fe0575298b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c2040083ff0175298b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c204008b4004ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c20400f4000000|@11969,1,@1304|22,0,@11966 93,0,3 109,0,@9455 153,0,@10755 160,0,@11957 166,0,1 241,0,3 269,0,@9990 333,0,@9990 391,0,3 401,0,@11922 441,0,@9990 499,0,2 509,0,@11922 549,0,@9990 607,0,1 614,0,@11922 652,0,@9990 710,0,0 717,0,@11922 727,0,@10755 768,0,1 776,0,@11922 826,0,2 872,0,0 917,0,3 6130:D3,2268|3b650c7305ff552ccd09538b388b1789d683fa050f85880200008b77048b780483ff090f85310100008b78088b1789d183fa01752b8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70201000000e99800000089ca83f90575288b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70205000000eb6983fa0375348b4f048b5f088b7f0c8b55008d52ec3b55087305ff5528cdca895500c742fc04000000897a0c895a08894a04c70203000000eb308b7f048b1783fa05757a8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702070000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c747040d000000c7076b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b8dcf466b18b5d04ff2383ff070f85310100008b78088b1789d183fa01752b8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70201000000e99800000089ca83f90575288b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70205000000eb6983fa0375348b4f048b5f088b7f0c8b55008d52ec3b55087305ff5528cdca895500c742fc04000000897a0c895a08894a04c70203000000eb308b7f048b1783fa05757a8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702070000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c747040b000000c7076b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b8dcf466b18b5d04ff238d642404b824f566b18b5d04ff2383fe010f85080300008b7f048b700489f283fe070f85f70000008b480889ce8b0983f9037507b903000000eb05b90100000083f9030f85d600000089f28b72048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a0489328b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c706230000008b45008d40f43b45087305ff5528cdc0894500c740fc020000008b14248950048d642404893083ff017502eb5183ff01744c8b75008d76f03b75087305ff5528cd81897500c746fc03000000897e08c7460403000000c706290000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c3c389d683fa070f85e30000008b480889ca8b1983fb0775188b49048b0983f9017507b903000000eb05b901000000eb05b90100000083f9030f85b100000089d68b76048b56048b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c706210000008b45008d40f43b45087305ff5528cdc0894500c740fc020000008b14248950048d642404893083ff017502eb5183ff01744c8b75008d76f03b75087305ff5528cd81897500c746fc03000000897e08c7460403000000c706290000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c3c383fe090f85fb0000008b700889f28b3683fe037507be03000000eb05be0100000083fe030f85d40000008b72048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a0489328b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460803000000895604c706230000008b45008d40f43b45087305ff5528cdc0894500c740fc020000008b14248950048d642404893083ff017502eb5183ff01744c8b75008d76f03b75087305ff5528cd81897500c746fc03000000897e08c7460403000000c706290000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c3c38d642404eb048d642404b824f566b18b5d04ff238b77048b780483ff030f85970000008b50088b3a83ff03757f8b7a048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a04893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470403000000c7073b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b824f566b18b5d04ff2383ff010f85970000008b50088b3a83ff03757f8b7a048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a04893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470401000000c7073b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b824f566b18b5d04ff2383ff050f85970000008b50088b3a83ff03757f8b7a048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a04893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470405000000c7073b0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b824f566b18b5d04ff2383ff0b0f852a0100008b78088b1789d183fa01752b8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70201000000e99800000089ca83f90575288b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70205000000eb6983fa0375348b4f048b5f088b7f0c8b55008d52ec3b55087305ff5528cdca895500c742fc04000000897a0c895a08894a04c70203000000eb308b7f048b1783fa0375738b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7073f0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c38d642404b874f566b18b5d04ff238d642404b824f566b18b5d04ff23f400|@11978,1,@1305|87,0,0 137,0,2 194,0,1 244,0,3 283,0,6 289,0,53 337,0,@11970 401,0,0 451,0,2 508,0,1 558,0,3 597,0,5 603,0,53 651,0,@11970 665,0,@11973 713,0,1 720,0,0 807,0,0 816,0,17 902,0,1 908,0,20 981,0,1 988,0,0 995,0,0 1045,0,0 1054,0,16 1140,0,1 1146,0,20 1207,0,1 1214,0,0 1299,0,1 1308,0,17 1394,0,1 1400,0,20 1450,0,@11973 1562,0,1 1568,0,29 1616,0,@11973 1722,0,0 1728,0,29 1776,0,@11973 1882,0,2 1888,0,29 1936,0,@11973 2000,0,0 2050,0,2 2107,0,1 2157,0,3 2195,0,31 2243,0,@11976 2257,0,@11973 6131:D3,140|3b650c7305ff552ccd09a80175768b308b40048b3e8b56048b73fcc1e608c1ee0783ce013bfe720ab8a43266b18b5d04ff238b747bfe8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8a5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1306|41,0,@9990 133,0,0 6132:D3,220|3b650c7305ff552ccd01a8010f85c10000008b308b40048b3e8b56048b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e856ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1307|59,0,3 94,0,0 129,0,0 212,0,0 6133:D3,120|3b650c7305ff552ccd0989c7f7c70100000075238b178b77048b128b1283fa037507bf03000000eb1389f73b650c7305ff552ccd89ebd5bf0100000083ff03752683fb017507bf03000000eb05bf0100000083f70283f70283ff03750ab8e0f566b18b5d04ff238b742404895c240489f3e916000000f400|@12011,1,@1322|35,0,1 56,0,0 71,0,1 78,0,0 94,0,@11979 114,1,@6134 6134:D3,56|3b650c7305ff552ccd095383f801750458c20400bb20f666b1e88efff6ff5b8b742404ff3424c7442404acf666b189742408e971030000f4|@12010,1,@1321|21,0,@11982 26,1,@5226 42,0,@11987 51,1,@6137 6135:D3,684|3b650c7305ff552ccd018b78048b3783fe010f856b0200008b7f048b1789d683fa030f85b90100008b77048b7f088b0f89ca83f90775218b57048b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917eb7b89d183fa0575218b57048b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917eb5389ca83f90375218b57048b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917eb2b83fa0175218b57048b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000008917eb05bf01000000f7c7010000000f85ab0000008b178b7e0483ff0375138b3683c610710ab8f80466b18b5d04ff23eb028b36bfffffffff2bfe710ab8f80466b18b5d04ff2383c7018b720483fe0375138b3283c610710ab8f80466b18b5d04ff23eb028b32baffffffff2bd6710ab8f80466b18b5d04ff2383c2018b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c38b7e0483ff0375138b3683c610710ab8f80466b18b5d04ff23eb028b36bfffffffff2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c383fe070f85930000008b7f048b1789d683fa0575148b770483c62e710ab8f80466b18b5d04ff23eb3983fe0175148b770483c620710ab8f80466b18b5d04ff23eb208b7f048b770483fe0375138b3783c610710ab8f80466b18b5d04ff23eb028b37bfffffffff2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3b801000000c38b7f048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3f400|@11985,1,@1308|207,0,0 241,0,@9455 255,0,-1 264,0,@9455 292,0,@9455 306,0,-1 315,0,@9455 356,0,0 410,0,@9455 424,0,-1 433,0,@9455 474,0,0 511,0,@9455 536,0,@9455 566,0,@9455 580,0,-1 589,0,@9455 630,0,0 638,0,0 675,0,0 6136:D3,136|3b650c7305ff552ccd018b388b3783fe0375048b4704c38b7f048b1789d683fa0575148b7f0483c72e710ab8f80466b18b5d04ff23eb3983fe0175148b7f0483c720710ab8f80466b18b5d04ff23eb208b7f048b770483fe0375138b3f83c710710ab8f80466b18b5d04ff23eb028b3fb8ffffffff2bc7710ab8f80466b18b5d04ff2383c001c3f4|@11986,1,@1309|44,0,@9455 69,0,@9455 99,0,@9455 113,0,-1 122,0,@9455 6137:D3,8400|3b650c7305ff552ccd0953a8010f85bd050000ff30ff70048b7c240483ff01750e8d64240cb8b4f666b18b5d04ff238b7c2404ff378b7c24088b57048b3c248b3f8b3783fe030f85b40200008b7f048b3424ff76048b34248b3683fe030f858c0100008b34248b7604f6c201750d8d6424048b7c2408e9551700003bfe75218d642408588b5c24048b7424108b54240c8954240c8974241083c408e960ffffff8b74241c83fe01750e8d642414b8b07766b18b5d04ff238b74241cff368b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c7060700000083ef016bff04710e8d642418b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e8d21f000089c7578b7c24088b3f83ff0375538b7c24088b770483ee016bf604710e8d64241cb8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c70703000000eb078b7c24088b7f048b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240489388b5c2418e89fefffff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f8d642404893b8b4424088b74241c8b542418895424188974241c83c414e911feffff8b34248b76048b3683fe0375208d642404f6c20175098b7c2408e9c40c00008d642410b81cf866b18b5d04ff23f6c201750d8d6424048b7c2408e9a60300008b34248b3683fe0375545e8b560483ea016bd204710e8d642410b8f80466b18b5d04ff238d64240483c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c70603000000eb075e8b760483c40483ef016bff04710e8d64240cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e8221e000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742408897304893b588b7424108b54240c8954240c8974241083c408e900fdffff8b7f048b34248b76048b0c248b49048b1983fb010f85c30100008b49048b0983f907751383fa017507b903000000eb05b901000000eb05b90100000083f9030f85980100005a8b52048b52048b52043bd77505e9c30000008b0a89cb83f90175398b0f83f901752d8b52048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb05e986000000e9a000000089d983fb0375468b0f83f903753d8b52048b4f043bd17507ba03000000eb258b1a8b013bd875188b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa037502eb36eb5383f905754e8b0f83f90575458b52048b4f043bd17507ba03000000eb103bd17507ba03000000eb05ba0100000083fa037402eb1d588b5c24048b7424108b54240c8954240c8974241083c408e9c8fbffffeb008b1683fa03754f8b560483ea016bd204710e8d64240cb8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c70603000000eb038b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089388b5c2408e88aecffff89c3588b7424108b54240c8954240c8974241083c408e923fbffff83fa010f85a70000008d6424048b1683fa03754f8b560483ea016bd204710e8d64240cb8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c70603000000eb038b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089388b5c2408e8daebffff89c3588b7424108b54240c8954240c8974241083c408e973faffffff74240cff7424088b5424088b4c24108b5c24208b44241c8b742418894424148b442404895c24188b1c24894c241c895424208974241083c410e90c2100008d64241858c20800f7c70100000075618b178b77048b1a8b4a048b1b83fb0175428b1983fb0175398b49048b0983f9077507b903000000eb05b90100000083f903751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb15eb0089f73b650c7305ff552ccd80eb97bf010000006a016a01f7c70100000075108b3f8b378934248b7f04897c2404eb748b7c2410f7c701000000753a8b178b77048b0a8b0983f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbebf0100000083ff0175168b7c24088b3f893c248b7c24088b7f04897c2404eb0e8b3f8b378934248b7f04897c2404ff3424ff7424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424148977048b7424188937576a01f64424040175378b7c24048b078b7c2404ff77048b7c240483ff01750489c2eb0b8b5c2404e8e52c000089c25e891424897424043b650c7303ff552cebc2ff34248b7c24108b3f83ff03752c8b7c24108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb4d8b7c24108b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24148b3f83ff030f85f70300008b7c2414ff77048b7c24148b3f83ff030f85e60100008b7c2414ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e87d18000089c7578b7c240883ef016bff04710e8d642440b8f80466b18b5d04ff2383c7018b7424048b3683fe030f852e0100008b7424048b56048b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc74608c46866b1c7460438f366b1c706030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8d6e7ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9da0100008d642440b848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db010000ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88916000089c7578b7c24088b3f83ff030f85440100008b7c24088b57048b7c24048b3f83ff030f85200100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8f7e5ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9d50200008d642440b874f566b18b5d04ff238d642440b848f066b18b5d04ff238d642434b870f866b18b5d04ff238b7c2414ff77048b7c24148b3f83ff030f85f40100008b7c24148b7f048b74243c83fe01750e8d642434b8b07766b18b5d04ff238b74243cff368b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c7060700000083ef016bff04710e8d642438b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88814000089c7578b7c24088b3f83ff030f855b0100008b7c24088b57048b7c24048b3f83ff030f85370100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b7c24208b3f83ff0375538b7c24208b770483ee016bf604710e8d642440b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c70703000000eb078b7c24208b7f048b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c243ce8dfe3ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c404e9bd0000008d64243cb874f566b18b5d04ff238d64243cb848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db0000008b7f048b34248b3683fe030f85bc0000005e8b56048b3783fe030f859f0000008b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706690000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54242c895704893757ff7424048b44240c8b5c2418e8ea2500008b5424385b8d6424088b742430897424308b7c2428897c242c83c42cff228d642430b874f566b18b5d04ff238d642434b848f066b18b5d04ff238d642434b870f866b18b5d04ff23f7c70100000075618b178b77048b1a8b4a048b1b83fb0175428b1983fb0175398b49048b0983f9077507b903000000eb05b90100000083f903751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb15eb0089f73b650c7305ff552ccd80eb97bf010000006a016a01f7c70100000075108b3f8b378934248b7f04897c2404eb748b7c2410f7c701000000753a8b178b77048b0a8b0983f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbebf0100000083ff0175168b7c24088b3f893c248b7c24088b7f04897c2404eb0e8b3f8b378934248b7f04897c2404ff3424ff7424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424148977048b7424188937576a01f64424040175378b7c24048b078b7c2404ff77048b7c240483ff01750489c2eb0b8b5c2404e80b28000089c25e891424897424043b650c7303ff552cebc2ff34248b7c24108b3f83ff03752c8b7c24108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb4d8b7c24108b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24148b3f83ff030f85f70300008b7c2414ff77048b7c24148b3f83ff030f85e60100008b7c2414ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e87f0f000089c7578b7c240883ef016bff04710e8d642440b8f80466b18b5d04ff2383c7018b7424048b3683fe030f852e0100008b7424048b56048b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc74608c46866b1c7460438f366b1c706030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8d8deffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9da0100008d642440b848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db010000ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88b0d000089c7578b7c24088b3f83ff030f85440100008b7c24088b57048b7c24048b3f83ff030f85200100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8f9dcffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9d50200008d642440b874f566b18b5d04ff238d642440b848f066b18b5d04ff238d642434b870f866b18b5d04ff238b7c2414ff77048b7c24148b3f83ff030f85f40100008b7c24148b7f048b74243c83fe01750e8d642434b8b07766b18b5d04ff238b74243cff368b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c7060700000083ef016bff04710e8d642438b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88a0b000089c7578b7c24088b3f83ff030f855b0100008b7c24088b57048b7c24048b3f83ff030f85370100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b7c24208b3f83ff0375538b7c24208b770483ee016bf604710e8d642440b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c70703000000eb078b7c24208b7f048b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c243ce8e1daffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c404e9bd0000008d64243cb874f566b18b5d04ff238d64243cb848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db0000008b7f048b34248b3683fe030f85bc0000005e8b56048b3783fe030f859f0000008b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706690000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54242c895704893757ff7424048b44240c8b5c2418e8102100008b5424385b8d6424088b742430897424308b7c2428897c242c83c42cff228d642430b874f566b18b5d04ff238d642434b848f066b18b5d04ff238d642434b870f866b18b5d04ff23f7c70100000075618b178b77048b1a8b4a048b1b83fb0175428b1983fb0175398b49048b0983f9077507b903000000eb05b90100000083f903751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb15eb0089f73b650c7305ff552ccd80eb97bf010000006a016a01f7c70100000075108b3f8b378934248b7f04897c2404eb748b7c2410f7c701000000753a8b178b77048b0a8b0983f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbebf0100000083ff0175168b7c24088b3f893c248b7c24088b7f04897c2404eb0e8b3f8b378934248b7f04897c2404ff3424ff7424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424148977048b7424188937576a01f64424040175378b7c24048b078b7c2404ff77048b7c240483ff01750489c2eb0b8b5c2404e83123000089c25e891424897424043b650c7303ff552cebc2ff34248b7c24108b3f83ff03752c8b7c24108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb4d8b7c24108b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24148b3f83ff030f85f70300008b7c2414ff77048b7c24148b3f83ff030f85e60100008b7c2414ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88106000089c7578b7c240883ef016bff04710e8d642440b8f80466b18b5d04ff2383c7018b7424048b3683fe030f852e0100008b7424048b56048b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0cc74608c46866b1c7460438f366b1c706030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8dad5ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9da0100008d642440b848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db010000ff77048b7c244083ff01750e8d642438b8b07766b18b5d04ff238b7c2440ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d64243cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88d04000089c7578b7c24088b3f83ff030f85440100008b7c24088b57048b7c24048b3f83ff030f85200100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b74241083ee016bf604710e8d642444b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c707030000008b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c2440e8fbd3ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c408e9d50200008d642440b874f566b18b5d04ff238d642440b848f066b18b5d04ff238d642434b870f866b18b5d04ff238b7c2414ff77048b7c24148b3f83ff030f85f40100008b7c24148b7f048b74243c83fe01750e8d642434b8b07766b18b5d04ff238b74243cff368b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c7060700000083ef016bff04710e8d642438b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e88c02000089c7578b7c24088b3f83ff030f855b0100008b7c24088b57048b7c24048b3f83ff030f85370100008b7c24048b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706070000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70769000000578b7c24208b3f83ff0375538b7c24208b770483ee016bf604710e8d642440b8f80466b18b5d04ff2383c6018b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c70703000000eb078b7c24208b7f048b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c740040b0000008b7c240889388b5c243ce8e3d1ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d642404893783c404e9bd0000008d64243cb874f566b18b5d04ff238d64243cb848f066b18b5d04ff238b7c24148b7f048b3783fe070f85db0000008b7f048b34248b3683fe030f85bc0000005e8b56048b3783fe030f859f0000008b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706690000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54242c895704893757ff7424048b44240c8b5c2418e8361c00008b5424385b8d6424088b742430897424308b7c2428897c242c83c42cff228d642430b874f566b18b5d04ff238d642434b848f066b18b5d04ff238d642434b870f866b18b5d04ff23f400|@12009,1,@1320|38,0,@11988 174,0,@10986 223,0,3 240,0,@9455 253,0,@10755 260,0,@11957 265,0,5 270,1,@6138 308,0,@9455 352,0,@10755 359,0,@11957 365,0,1 410,0,5 425,1,@6130 531,0,@12000 585,0,@9455 633,0,@10755 640,0,@11957 646,0,1 672,0,@9455 685,0,@10755 692,0,@11957 697,0,5 702,1,@6138 810,0,1 817,0,0 824,0,0 883,0,1 894,0,1 901,0,0 947,0,1 972,0,1 979,0,0 986,0,0 1022,0,1 1033,0,1 1040,0,0 1105,0,@9455 1149,0,@10755 1156,0,@11957 1162,0,1 1203,0,5 1214,1,@6130 1281,0,@9455 1325,0,@10755 1332,0,@11957 1338,0,1 1379,0,5 1390,1,@6130 1480,1,@6139 1535,0,1 1542,0,0 1598,0,0 1701,0,0 1831,1,@6142 1907,0,1 1951,0,3 1986,0,0 2049,0,@10986 2096,0,3 2117,0,@9455 2130,0,@10755 2137,0,@11957 2142,0,5 2147,1,@6138 2171,0,@9455 2237,0,@10755 2244,0,@11957 2250,0,1 2288,0,52 2310,0,@9455 2354,0,@10755 2361,0,@11957 2367,0,1 2403,0,5 2418,1,@6130 2505,0,@11922 2549,0,@10986 2596,0,3 2617,0,@9455 2630,0,@10755 2637,0,@11957 2642,0,5 2647,1,@6138 2729,0,3 2767,0,52 2789,0,@9455 2833,0,@10755 2840,0,@11957 2846,0,1 2882,0,5 2897,1,@6130 2984,0,@11976 2998,0,@11922 3012,0,@12003 3064,0,@10986 3113,0,3 3130,0,@9455 3143,0,@10755 3150,0,@11957 3155,0,5 3160,1,@6138 3242,0,3 3280,0,52 3316,0,@9455 3360,0,@10755 3367,0,@11957 3373,0,1 3418,0,5 3433,1,@6130 3520,0,@11976 3534,0,@11922 3627,0,3 3665,0,52 3718,1,@6143 3757,0,@11976 3771,0,@11922 3785,0,@12003 3837,0,1 3844,0,0 3900,0,0 4003,0,0 4133,1,@6144 4209,0,1 4253,0,3 4288,0,0 4351,0,@10986 4398,0,3 4419,0,@9455 4432,0,@10755 4439,0,@11957 4444,0,5 4449,1,@6138 4473,0,@9455 4539,0,@10755 4546,0,@11957 4552,0,1 4590,0,52 4612,0,@9455 4656,0,@10755 4663,0,@11957 4669,0,1 4705,0,5 4720,1,@6130 4807,0,@11922 4851,0,@10986 4898,0,3 4919,0,@9455 4932,0,@10755 4939,0,@11957 4944,0,5 4949,1,@6138 5031,0,3 5069,0,52 5091,0,@9455 5135,0,@10755 5142,0,@11957 5148,0,1 5184,0,5 5199,1,@6130 5286,0,@11976 5300,0,@11922 5314,0,@12003 5366,0,@10986 5415,0,3 5432,0,@9455 5445,0,@10755 5452,0,@11957 5457,0,5 5462,1,@6138 5544,0,3 5582,0,52 5618,0,@9455 5662,0,@10755 5669,0,@11957 5675,0,1 5720,0,5 5735,1,@6130 5822,0,@11976 5836,0,@11922 5929,0,3 5967,0,52 6020,1,@6145 6059,0,@11976 6073,0,@11922 6087,0,@12003 6139,0,1 6146,0,0 6202,0,0 6305,0,0 6435,1,@6146 6511,0,1 6555,0,3 6590,0,0 6653,0,@10986 6700,0,3 6721,0,@9455 6734,0,@10755 6741,0,@11957 6746,0,5 6751,1,@6138 6775,0,@9455 6841,0,@10755 6848,0,@11957 6854,0,1 6892,0,52 6914,0,@9455 6958,0,@10755 6965,0,@11957 6971,0,1 7007,0,5 7022,1,@6130 7109,0,@11922 7153,0,@10986 7200,0,3 7221,0,@9455 7234,0,@10755 7241,0,@11957 7246,0,5 7251,1,@6138 7333,0,3 7371,0,52 7393,0,@9455 7437,0,@10755 7444,0,@11957 7450,0,1 7486,0,5 7501,1,@6130 7588,0,@11976 7602,0,@11922 7616,0,@12003 7668,0,@10986 7717,0,3 7734,0,@9455 7747,0,@10755 7754,0,@11957 7759,0,5 7764,1,@6138 7846,0,3 7884,0,52 7920,0,@9455 7964,0,@10755 7971,0,@11957 7977,0,1 8022,0,5 8037,1,@6130 8124,0,@11976 8138,0,@11922 8231,0,3 8269,0,52 8322,1,@6147 8361,0,@11976 8375,0,@11922 8389,0,@12003 6138:D3,1504|3b650c7305ff552ccd09bf40f432b181c71b0000008d7c9ffcffe7e92b000000909090e9bf000000909090e953010000909090e941020000909090e945030000909090e9490400009090908b7c24048b3f83ff070f85830000008b7c24048b7f048b3f83ff037507bf03000000eb05bf0100000083ff0375648b7c24048b7f048b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400401000000c7005d000000c20c00b804f766b18b5d04ff238b7c24048b3f83ff070f85830000008b7c24048b7f048b3f83ff037507bf03000000eb05bf0100000083ff0375648b7c24048b7f048b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400403000000c7005d000000c20c00b804f766b18b5d04ff238b7c24048b3f83ff0575618b7c24048b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400405000000c7005f000000c20c008b7c24048b3f83ff0775758b7c24048b7f048b3783fe03755d8b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400405000000c7005d000000c20c00b804f766b18b5d04ff23b804f766b18b5d04ff238b7c24048b3f83ff070f85f30000008b7c24048b7f048b1789d683fa05755d8b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c01000000897008897804c7006f000000c20c0083fe0175778b7f0483ff017502eb0f83ff01740ab858f766b18b5d04ff238b74240c8b5424088b7d008d7ff03b7d087305ff5528cd45897d00c747fc0300000089570889770489078b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000897808c7400403000000c7002b000000c20c00b804f766b18b5d04ff23b804f766b18b5d04ff238b7c24048b3f83ff070f85f30000008b7c24048b7f048b1789d683fa05755d8b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c03000000897008897804c7006f000000c20c0083fe0175778b7f0483ff017502eb0f83ff01740ab8b0f766b18b5d04ff238b74240c8b5424088b7d008d7ff03b7d087305ff5528cd45897d00c747fc0300000089570889770489078b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000897808c7400403000000c7002b000000c20c00b804f766b18b5d04ff23b804f766b18b5d04ff238b7c24048b3f83ff01755a8b7c24048b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7005b000000c20c008b7c24048b3f83ff05755a8b7c24048b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70057000000c20c008b7c24048b3f83ff07756e8b7c24048b7f048b3783fe0375568b77048b54240c8b4c24088b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489078b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70061000000c20c00b804f766b18b5d04ff23b804f766b18b5d04ff23f400|@11999,1,@1310|11,0,@6138 105,0,1 112,0,0 208,0,0 214,0,46 222,0,@11991 261,0,1 268,0,0 364,0,1 370,0,46 378,0,@11991 482,0,2 488,0,47 600,0,2 606,0,46 614,0,@11991 624,0,@11991 738,0,0 750,0,55 778,0,@11994 858,0,0 868,0,1 874,0,21 882,0,@11991 892,0,@11991 1006,0,1 1018,0,55 1046,0,@11997 1126,0,1 1136,0,1 1142,0,21 1150,0,@11991 1160,0,@11991 1263,0,45 1364,0,43 1475,0,48 1483,0,@11991 1493,0,@11991 6139:D3,2304|3b650c7305ff552ccd09508b7c2410f7c70100000075618b178b77048b028b4a048b0083f80175428b0183f80175398b49048b0983f9077507b903000000eb05b90100000083f903751e8b7d008d7ff83b7d087305ff5528cd0c897d00c747fc010000008917eb15eb0089f73b650c7305ff552ccd88eb97bf010000006a016a01f7c70100000075108b3f8b378934248b7f04897c2404eb708b7c2418f7c701000000753a8b178b77048b0a8b0983f901751e8b7d008d7ff83b7d087305ff5528cd0c897d00c747fc010000008917eb1389f73b650c7305ff552ccd88ebbebf0100000083ff0175128b7c241c8b378934248b7f04897c2404eb0e8b3f8b378934248b7f04897c2404ff3424ff7424088b7424208b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000895f048937576a01f64424040175338b7c24048b0789ffff77048b7c240489fb83ff01750489c2eb07e8b807000089c25e891424897424043b650c7303ff552cebc6ff34248b7c24108b1789d683fa03752a89ff8b57048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70703000000eb4b89ff8b7f048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70701000000578b7c241483fe030f85f703000089ffff77048b7c24148b3783fe030f85e801000089ffff77048b7c243483ff01750e8d64242cb8b07766b18b5d04ff238b7c2434ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d642430b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e87cf7ffff89c7578b74240883ee016bf604710e8d642434b8f80466b18b5d04ff2383c6018b7c24048b1783fa030f853201000089ff8b4f048b55008d52ec3b55087305ff5528cdc2895500c742fc0400000089720cc74208c46866b1c7420438f366b1c702030000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c70669000000568b54241083ea016bd204710e8d642438b8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c706030000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089ff89388b5c2434e8d9c6ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240883c408e9da0100008d642434b848f066b18b5d04ff2389ff8b7f048b3783fe070f85dd010000ff77048b7c243483ff01750e8d64242cb8b07766b18b5d04ff238b7c2434ff378b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706070000008b7c240883ef016bff04710e8d642430b8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e886f5ffff89c7578b7c24088b3783fe030f854601000089ff8b4f048b7c24048b3783fe030f852401000089ff8b77048b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702070000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c70669000000568b54241083ea016bd204710e8d642438b8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c706030000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089ff89388b5c2434e8fac4ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240883c408e9d20200008d642434b874f566b18b5d04ff238d642434b848f066b18b5d04ff238d642428b870f866b18b5d04ff2389ffff77048b7c24148b3783fe030f85f001000089ff8b7f048b74243083fe01750e8d642428b8b07766b18b5d04ff238b742430ff368b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c7060700000083ef016bff04710e8d64242cb8f80466b18b5d04ff2383c70168c46866b15756b838f366b1bb0b000000e887f3ffff89c7578b7c24088b3783fe030f855901000089ff8b4f048b7c24048b3783fe030f853701000089ff8b77048b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702070000008b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c70669000000568b7424208b1683fa03755189f68b560483ea016bd204710e8d642434b8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc74608c46866b1c7460438f366b1c70603000000eb0589f68b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008c740040b00000089ff89388b5c2430e8e8c2ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240883c404e9c00000008d642430b874f566b18b5d04ff238d642430b848f066b18b5d04ff2389ff8b7f048b3783fe070f85e00000008b7f048b34248b1683fa030f85c100000089f68b56048d6424048b3783fe030f859f0000008b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706690000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542420895704893757ff7424048b44240c8b5c2418e8c40000008b54242c5b8d6424088b7424248974242c8b7c241c897c242883c428ff228d642424b874f566b18b5d04ff238d642428b848f066b18b5d04ff238d642428b870f866b18b5d04ff23f4000000|@12008,1,@1313|58,0,1 65,0,0 121,0,0 224,0,0 344,1,@6140 420,0,1 462,0,3 497,0,0 554,0,@10986 601,0,3 622,0,@9455 635,0,@10755 642,0,@11957 647,0,5 652,1,@6138 676,0,@9455 740,0,@10755 747,0,@11957 753,0,1 791,0,52 813,0,@9455 857,0,@10755 864,0,@11957 870,0,1 906,0,5 919,1,@6130 1014,0,@11922 1056,0,@10986 1103,0,3 1124,0,@9455 1137,0,@10755 1144,0,@11957 1149,0,5 1154,1,@6138 1232,0,3 1270,0,52 1292,0,@9455 1336,0,@10755 1343,0,@11957 1349,0,1 1385,0,5 1398,1,@6130 1493,0,@11976 1507,0,@11922 1521,0,@12003 1569,0,@10986 1618,0,3 1635,0,@9455 1648,0,@10755 1655,0,@11957 1660,0,5 1665,1,@6138 1743,0,3 1781,0,52 1815,0,@9455 1859,0,@10755 1866,0,@11957 1872,0,1 1915,0,5 1928,1,@6130 2023,0,@11976 2037,0,@11922 2133,0,3 2171,0,52 2224,1,@6141 2263,0,@11976 2277,0,@11922 2291,0,@12003 6140:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1311| 6141:D3,940|3b650c7305ff552ccd09a8010f85900300008b38ff7004ff378b7f046a016a018b3783fe0375328b77048b1383fa0375158b53043bf27507be03000000eb05be01000000eb05be0100000083fe030f8544010000e9e20200008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f850e0100008b76048b1383fa010f85f90000008b4b0489ca8b0983f9077507b903000000eb05b90100000083f9030f85d80000008b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe030f84a30100008b3783fe03753a8b77048b5424148b1283fa0375198b5424148b52043bf27507be03000000eb05be01000000eb05be0100000083fe030f854d010000e9550100008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f851b0100008b76048b5424148b1283fa010f85020100008b5424148b52048b1283fa077507ba03000000eb05ba0100000083fa030f85df0000008b5424148b52048b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe03740d8b742408893424897c2404eb0b8b7c2408893c24895c2404eb0f8b7c24148b742408893424897c24045e5a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b7c2410578b44240ce886fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c408c20400b801000000c20400f400|@10030,1,@1312|57,0,1 64,0,0 71,0,0 106,0,@12006 151,0,1 158,0,0 179,0,1 215,0,1 226,0,1 233,0,0 240,0,0 274,0,1 299,0,1 306,0,0 313,0,0 320,0,0 349,0,1 360,0,1 367,0,0 374,0,0 381,0,0 388,0,0 395,0,0 441,0,1 448,0,0 455,0,0 490,0,@12006 541,0,1 548,0,0 576,0,1 612,0,1 623,0,1 630,0,0 637,0,0 671,0,1 696,0,1 703,0,0 710,0,0 717,0,0 746,0,1 757,0,1 764,0,0 771,0,0 778,0,0 785,0,0 792,0,0 931,0,0 6142:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1314| 6143:D3,940|3b650c7305ff552ccd09a8010f85900300008b38ff7004ff378b7f046a016a018b3783fe0375328b77048b1383fa0375158b53043bf27507be03000000eb05be01000000eb05be0100000083fe030f8544010000e9e20200008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f850e0100008b76048b1383fa010f85f90000008b4b0489ca8b0983f9077507b903000000eb05b90100000083f9030f85d80000008b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe030f84a30100008b3783fe03753a8b77048b5424148b1283fa0375198b5424148b52043bf27507be03000000eb05be01000000eb05be0100000083fe030f854d010000e9550100008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f851b0100008b76048b5424148b1283fa010f85020100008b5424148b52048b1283fa077507ba03000000eb05ba0100000083fa030f85df0000008b5424148b52048b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe03740d8b742408893424897c2404eb0b8b7c2408893c24895c2404eb0f8b7c24148b742408893424897c24045e5a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b7c2410578b44240ce886fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c408c20400b801000000c20400f400|@10030,1,@1315|57,0,1 64,0,0 71,0,0 106,0,@12006 151,0,1 158,0,0 179,0,1 215,0,1 226,0,1 233,0,0 240,0,0 274,0,1 299,0,1 306,0,0 313,0,0 320,0,0 349,0,1 360,0,1 367,0,0 374,0,0 381,0,0 388,0,0 395,0,0 441,0,1 448,0,0 455,0,0 490,0,@12006 541,0,1 548,0,0 576,0,1 612,0,1 623,0,1 630,0,0 637,0,0 671,0,1 696,0,1 703,0,0 710,0,0 717,0,0 746,0,1 757,0,1 764,0,0 771,0,0 778,0,0 785,0,0 792,0,0 931,0,0 6144:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1316| 6145:D3,940|3b650c7305ff552ccd09a8010f85900300008b38ff7004ff378b7f046a016a018b3783fe0375328b77048b1383fa0375158b53043bf27507be03000000eb05be01000000eb05be0100000083fe030f8544010000e9e20200008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f850e0100008b76048b1383fa010f85f90000008b4b0489ca8b0983f9077507b903000000eb05b90100000083f9030f85d80000008b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe030f84a30100008b3783fe03753a8b77048b5424148b1283fa0375198b5424148b52043bf27507be03000000eb05be01000000eb05be0100000083fe030f854d010000e9550100008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f851b0100008b76048b5424148b1283fa010f85020100008b5424148b52048b1283fa077507ba03000000eb05ba0100000083fa030f85df0000008b5424148b52048b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe03740d8b742408893424897c2404eb0b8b7c2408893c24895c2404eb0f8b7c24148b742408893424897c24045e5a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b7c2410578b44240ce886fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c408c20400b801000000c20400f400|@10030,1,@1317|57,0,1 64,0,0 71,0,0 106,0,@12006 151,0,1 158,0,0 179,0,1 215,0,1 226,0,1 233,0,0 240,0,0 274,0,1 299,0,1 306,0,0 313,0,0 320,0,0 349,0,1 360,0,1 367,0,0 374,0,0 381,0,0 388,0,0 395,0,0 441,0,1 448,0,0 455,0,0 490,0,@12006 541,0,1 548,0,0 576,0,1 612,0,1 623,0,1 630,0,0 637,0,0 671,0,1 696,0,1 703,0,0 710,0,0 717,0,0 746,0,1 757,0,1 764,0,0 771,0,0 778,0,0 785,0,0 792,0,0 931,0,0 6146:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1318| 6147:D3,940|3b650c7305ff552ccd09a8010f85900300008b38ff7004ff378b7f046a016a018b3783fe0375328b77048b1383fa0375158b53043bf27507be03000000eb05be01000000eb05be0100000083fe030f8544010000e9e20200008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f850e0100008b76048b1383fa010f85f90000008b4b0489ca8b0983f9077507b903000000eb05b90100000083f9030f85d80000008b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe030f84a30100008b3783fe03753a8b77048b5424148b1283fa0375198b5424148b52043bf27507be03000000eb05be01000000eb05be0100000083fe030f854d010000e9550100008b77048b0e89ca83f903750e8d642410b8b8f866b18b5d04ff2383fa070f851b0100008b76048b5424148b1283fa010f85020100008b5424148b52048b1283fa077507ba03000000eb05ba0100000083fa030f85df0000008b5424148b52048b52043bf2750abe03000000e9c50000008b0e89c883f90175348b0a83f90175238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000e98800000089c183f80375468b0a83f90375388b76048b52043bf27507be03000000eb258b0e8b023bc875188b76048b52043bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb3b83f90575318b0a83f90575238b76048b52043bf27507be03000000eb103bf27507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe03740d8b742408893424897c2404eb0b8b7c2408893c24895c2404eb0f8b7c24148b742408893424897c24045e5a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b7c2410578b44240ce886fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c408c20400b801000000c20400f400|@10030,1,@1319|57,0,1 64,0,0 71,0,0 106,0,@12006 151,0,1 158,0,0 179,0,1 215,0,1 226,0,1 233,0,0 240,0,0 274,0,1 299,0,1 306,0,0 313,0,0 320,0,0 349,0,1 360,0,1 367,0,0 374,0,0 381,0,0 388,0,0 395,0,0 441,0,1 448,0,0 455,0,0 490,0,@12006 541,0,1 548,0,0 576,0,1 612,0,1 623,0,1 630,0,0 637,0,0 671,0,1 696,0,1 703,0,0 710,0,0 717,0,0 746,0,1 757,0,1 764,0,0 771,0,0 778,0,0 785,0,0 792,0,0 931,0,0 6148:D3,236|3b650c7305ff552ccd09a8010f85ce0000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c73fe83ff0375588b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe8b3783fe0375218b77048b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb0fb848f066b18b5d04ff23bf0100000083ff01750d8b74240489742404e957ffffffff378b7c240857e84bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@1323|40,0,@9988 79,0,@9990 137,0,@11922 147,0,0 225,0,0 6149:D3,220|3b650c7305ff552ccd01a8010f85c10000008b308b40048b3e8b56048b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e856ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1324|59,0,3 94,0,0 129,0,0 212,0,0 6150:D3,268|3b650c7305ff552ccd01a8010f85f20000008b388b40048b378b57048b0e89cf83f90b75478b5e0489d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989cf8b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb4a83ff0775458b4e0889cff6c1017407b903000000eb05b90100000083f10283f90375278b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e825ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1325|48,0,1 55,0,0 102,0,4 124,0,1 131,0,0 176,0,4 261,0,0 6151:D3,236|3b650c7305ff552ccd01a8010f85d00000008b388b40048b1789d683fa0b75478b4f0489caf6c1017407b903000000eb05b90100000083f10283f903752989d78b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb4c83fe0775478b570889d6f6c2017407ba03000000eb05ba0100000083f20283fa03752989f78b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70709000000eb0057e847ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@1326|43,0,1 50,0,0 97,0,4 119,0,1 126,0,0 173,0,4 227,0,0 6152:D3,708|3b650c7305ff552ccd0989c689dff7c6010000000f85a10200008b06ff76048b1089d683fa0b0f85f30000008b70088b500c8b481089fb83eb0103cb710e8d642404b8f80466b18b5d04ff2389fb83eb0103f3710e8d642404b8f80466b18b5d04ff238b45008d40e83b45087305ff5528cdc6894500c740fc0500000089481089500c897008c7400401000000c7000b00000083c70257710e8d642408b8f80466b18b5d04ff238b5c240c8b7c241057e857a8ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707470000008b5424148b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b4424045b8d6424048b5424088b4c2404894c2404895424088974240ce9e1feffff83fe030f85070100008b500889fe83ee0103d6710e8d642404b8f80466b18b5d04ff2383fa017507b801000000eb7483ea016bd204710e8d642404b8f80466b18b5d04ff2383c2018b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460838f366b1c7460401000000c706050000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c7400401000000893083c70257710e8d642408b8f80466b18b5d04ff238b7c24148b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703b0fb66b183fb01750489c6eb07e8cd00000089c68b4424045b8d6424048b5424088b4c2404894c2404895424088974240ce9d1fdffff83c70257710e8d642408b8f80466b18b5d04ff238b5c240c8b7c241057e8bba6ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707470000008b5424148b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b4424045b8d6424048b5424088b4c2404894c2404895424088974240ce945fdffff8b44240cc20c00f400|@12037,1,@1328|67,0,@9455 90,0,@9455 137,0,0 143,0,5 158,0,@9455 177,1,@6129 214,0,35 313,0,@9455 328,0,0 347,0,@9455 391,0,0 398,0,@11957 405,0,0 411,0,2 444,0,0 461,0,@9455 505,0,@12035 519,1,@6153 570,0,@9455 589,1,@6129 626,0,35 6153:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1327| 6154:D3,188|3b650c7305ff552ccd09a8010f859f0000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c73fe83ffff75418b7c24048b3f8b5424048b1283c202710ab8f80466b18b5d04ff238b4c240489118b53fcc1e208c1ea0783ca013bf2720ab8003566b18b5d04ff23897c73feeb00578b7c240857e87affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f40000|@10030,1,@1329|40,0,@9988 76,0,@9455 108,0,@10015 178,0,0 6155:D3,276|3b650c7305ff552ccd0953a8010f85f30000008b38ff70048b078b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70703000000578b3883ff0b75288b78108b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70603000000eb328b5c2410ff742408e883a4ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c2410578b4424088b5c240ce825ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f400|@10030,1,@1330|60,0,1 106,0,1 121,1,@6129 158,0,0 267,0,0 6156:D3,316|3b650c7305ff552ccd0953a8010f851a0100008b38ff70048b07ff77048b3883ff0b75288b78108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70203000000eb328b5c2410ff742408e87fa3ffff89c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702010000008b5c24088b4bfcc1e108c1e90783c9018b342489f73bf1720e8d64240cb8a43266b18b5d04ff2389ff89db8b7c7bfe8d6424048b75008d76f43b75087305ff5528cd8c897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b7c2410578b442408e8fefeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f40000|@10030,1,@1331|70,0,1 85,1,@6129 122,0,0 156,0,@9990 208,0,0 306,0,0 6157:D3,236|3b650c7305ff552ccd09a8010f85ce0000008b308b40048b7bfcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c73fe83ff0375588b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8a43266b18b5d04ff238b7c24048b7c77fe8b3783fe0375218b77048b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb0fb848f066b18b5d04ff23bf0100000083ff01750d8b74240489742404e957ffffffff378b7c240857e84bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400b801000000c20400f4000000|@11291,1,@1332|40,0,@9988 79,0,@9990 137,0,@11922 147,0,0 225,0,0 6158:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1333| 6159:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1334| 6160:D3,232|3b650c7305ff552ccd0989c689df3bf77506b801000000c3b80500000083e8016bc000700583c001eb13b805000000bb010000005657e8c11af9ff5f5ea801740989c283c2027002eb10bb030000005657e87e3ff3ff5f5e89c28b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701050000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702470000005289f083c002710e8d642404b8f80466b18b5d04ff2389fbe843ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10221,1,@1335|19,0,0 25,0,2 43,0,2 48,0,0 55,1,@5527 75,0,1 82,1,@4895 121,0,2 156,0,35 173,0,@9455 6161:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1336| 6162:D3,44|b9087346b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@12068,1,@1337|1,0,@19848 6163:D3,268|3b650c7305ff552ccd01a8010f85f20000008b388b40048b378b57048b0e89cf83f90b75478b5e0489d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989cf8b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb4a83ff0775458b4e0889cff6c1017407b903000000eb05b90100000083f10283f90375278b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e825ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1338|48,0,1 55,0,0 102,0,4 124,0,1 131,0,0 176,0,4 261,0,0 6164:D3,268|3b650c7305ff552ccd01a8010f85f20000008b388b40048b378b57048b0e89cf83f90b75478b5e0489d9f6c3017407bb03000000eb05bb0100000083f30283fb03752989cf8b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb4a83ff0775458b4e0889cff6c1017407b903000000eb05b90100000083f10283f90375278b3f8b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70609000000eb008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e825ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1339|48,0,1 55,0,0 102,0,4 124,0,1 131,0,0 176,0,4 261,0,0 6165:D3,332|3b650c7305ff552ccd0953a8010f852b0100008b38ff70048b078b77048b7c240483ef0103f7710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70703000000578b3883ff0b75418b780483ff017507bf03000000eb05bf0100000083ff0375288b78108b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70603000000eb338b5c24108b7c241457e8309cffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c24148b74241057568b44240c8b5c2410e8edfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f400|@10030,1,@1340|45,0,@9455 85,0,1 106,0,1 113,0,0 156,0,1 172,1,@6129 209,0,0 323,0,0 6166:D3,300|3b650c7305ff552ccd0953a8010f850b0100008b38ff70048b07ff77048b3883ff0b75418b780483ff017507bf03000000eb05bf0100000083ff0375288b78108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70203000000eb328b5c2410ff742408e80e9bffff89c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702010000008b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642404c706010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c2410578b4424088b5c240ce80dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f400|@10030,1,@1341|45,0,1 52,0,0 95,0,1 110,1,@6129 147,0,0 189,0,0 291,0,0 6167:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1342| 6168:D3,732|3b650c7305ff552ccd09538b3c2483ff017d0789c7e9910000008b7c24088b5d008d5bf83b5d087305ff5528cd81895d00c743fc01000000893b8b7c240c57e8cca7ffff89c68b3c2489fa83ff0175098d64240489f0c208008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c747080100000089d28957048d642404c7074d0000008b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800f7c70100000075538b178b77048b0a8b1983fb0375378b490483f9ff7507b903000000eb05b90100000083f903751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81eba5bf0100000083ff01750e8d642404b8b07766b18b5d04ff238b3fff7704e8c80100008b5c240483c302710e8d642408b8f80466b18b5d04ff238b3c248b3783fe03755989ff8b77048d64240483ee016bf604710e8d642404b8f80466b18b5d04ff238d64240483c6018b7d008d7fec3b7d087305ff5528cd49897d00c747fc0400000089770cc74708c46866b1c7470438f366b1c70703000000eb0989ff8b7f048d6424088b3789f283fe01752b8b7f048b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c70601000000e99800000089d683fa0575288b7f048b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c70605000000eb6983fe0375348b57048b4f088b7f0c8b75008d76ec3b75087305ff5528cd8f897500c746fc04000000897e0c894e08895604c70603000000eb308b7f048b3783fe03757d8b7f048b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707470000008b5424088b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893e8b5424048954240489742408e932fdffffb874f566b18b5d04ff23f4000000|@12073,1,@1344|64,1,@6133 118,0,0 133,0,38 202,0,1 209,0,0 263,0,0 277,0,@10986 292,1,@6169 310,0,@9455 351,0,@9455 399,0,@10755 406,0,@11957 412,0,1 470,0,0 520,0,2 577,0,1 627,0,3 662,0,35 719,0,@11976 6169:D3,276|3b650c7305ff552ccd01a8010f85fb0000008b388b40048b3789f28b0a83f903751e8b520483faff7507ba03000000eb05ba0100000083fa037505e9c0ffffff8b57048b3e83ff0375378b7e0483c702710ab8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c70603000000eb008b3a83ff0375378b7a0483c702710ab8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdc1895500c742fc02000000897a04c70203000000eb008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e81cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@12072,1,@1343|43,0,1 50,0,0 83,0,@9455 123,0,1 145,0,@9455 185,0,1 270,0,0 6170:D3,336|3b650c7305ff552ccd09a8010f85350100008b388b40048b378b7f048b1689d183fa07750ab8480367b18b5d04ff2389ca83f90b756f8b7604f7c601000000755d8b368b53fcc1e208c1ea0783ca013bf2720ab8a43266b18b5d04ff238b5473fe8b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf01000000eb6883fa09755e8b76048b53fcc1e208c1ea0783ca013bf2720ab8a43266b18b5d04ff238b5473fe8b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd49897d00c747fc010000008937eb05bf0100000083ff017505e9e9feffffff37e8e2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@11291,1,@1345|38,0,@12103 84,0,@9990 159,0,0 190,0,@9990 265,0,0 328,0,0 6171:D3,220|3b650c7305ff552ccd01a8010f85c10000008b308b40048b3e8b56048b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e856ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1346|59,0,3 94,0,0 129,0,0 212,0,0 6172:D3,688|3b650c7305ff552ccd098b388b37ba842d33b181c21f0000008d54b2fcffe2e92b000000909090e981000000909090e96a010000909090e9c0010000909090e9bd010000909090e9ba0100009090908b57048b78048b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706010000008b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008c740040b00000089388b3c24897c240483c404e97796ffff8b77088b78048b54240483ea0103d6710ab8f80466b18b5d04ff2383fa0175398b45008d40f03b45087305ff5528cd88894500c740fc03000000c740089c0367b1c740040b00000089388b3c24897c240483c404e91e96ffff8b1783fa030f85830000008b57048b7c240483ef0103f7710ab8f80466b18b5d04ff2383ee016bf604710ab8f80466b18b5d04ff2383c6018b7d008d7fe83b7d087305ff5528cd4c897d00c747fc0500000089571089770cc74708c46866b1c7470430f366b1c707370000008b45008d40f43b45087305ff5528cd88894500c740fc020000008958048938c20400b848f066b18b5d04ff238b57048b78048b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604c706050000008b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008c740040b00000089388b3c24897c240483c404e92895ffff89d8c2040089d8c204008b77048b5710f7c601000000750589d8c204008b78048b74240483ee0103d6710ab8f80466b18b5d04ff2383ea016bd204710ab8f80466b18b5d04ff2383c2018b75008d76ec3b75087305ff5528cd8c897500c746fc0400000089560cc74608c46866b1c7460438f366b1c706030000008b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008c740040b00000089388b3c24897c240483c404e97894fffff4000000|@12108,1,@1347|15,0,@6172 116,0,0 152,0,5 169,1,@6130 191,0,@9455 234,0,@12106 241,0,5 258,1,@6130 288,0,@9455 306,0,@9455 353,0,@10755 360,0,@11956 366,0,27 405,0,@11922 451,0,2 487,0,5 504,1,@6130 552,0,@9455 570,0,@9455 614,0,@10755 621,0,@11957 627,0,1 663,0,5 680,1,@6130 6173:D3,636|3b650c7305ff552ccd0953a8010f85900000008b30ff70048b7c24148b7ffcc1e708c1ef0783cf013bf7720e8d642408b8a43266b18b5d04ff238b7c24148b7c77fe8b3783fe03754c8b7f0481ff943966b175068d642408eb318b3783fe0175168b770483fe017507be03000000eb05be01000000eb05be0100000083fe0374068b742410eb6c8d642408b8000467b18b5d04ff238d642408b848f066b18b5d04ff238b7424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c20c00f7c6010000000f85910000008b0e8b56048b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897b04c703030000003bcb7502eb488b0189c383f8017502eb4483fb03753f8b49043bcf7507b903000000eb258b198b073bd875188b49048b5f043bcb7507b903000000eb05b901000000eb05b90100000083f9037507be03000000eb1689d63b650c7305ff552ccdc0e963ffffffbe0100000083fe03750e8d642408b8540467b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70645000000568b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707470000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742408897304893b8b7c24188b7424148b5424105756528b442410e8b3fdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c00f4000000|@12115,1,@1348|49,0,@9990 78,0,@10068 106,0,1 113,0,0 120,0,0 140,0,@12109 154,0,@11922 198,0,6 294,0,1 328,0,1 353,0,1 360,0,0 367,0,0 377,0,1 401,0,0 415,0,@12112 455,0,34 491,0,3 526,0,35 6174:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1350| 6175:D3,488|3b650c7305ff552ccd098b3b8b37ba3c3333b181c21f0000008d54b2fcffe2e933000000909090e978000000909090e99b000000909090e99a000000909090e997000000909090e9d9000000909090e9f90000009090908b77088b7f108b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048937e9ae0000008b77088b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937e983000000bf01000000eb7c8b7f04eb778b77048b7f088b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048937eb2d8b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937eb05bf01000000f7c7010000000f85810000008b1f8b77048b5424048b52fcc1e208c1ea0783ca013bda720ab8783266b18b5d04ff238b5424048b4c5afe8b55008d52f43b55087305ff5528cdcb895500c742fc02000000894a0489028b4c24048b49fcc1e108c1e90783c9013bd9720ab8003566b18b5d04ff238b4c2404895459fe89f73b650c7305ff552ccd81e973ffffffb801000000c20400f4|@12120,1,@1352|15,0,@6175 122,0,0 196,0,0 208,0,0 254,0,0 325,0,0 334,0,0 376,0,@9988 445,0,@10015 480,0,0 6176:D3,312|3b650c7305ff552ccd0950538b34248b0689f689f7ff760489ff8b7f1083ff03755181f8100666b17502eb238b388d3c7d0100000083ff017521bf100666b18d70048d7f0433c93bc9f3a67402eb0c8b1424b81c0f66b1ff12eb058b1424ff128b1424b8c00567b1ff12ff742408e98b0000008d6424046a016a018b7c24088b7f0c83ff03750a6a016a01ff742414eb268b7c24188b74240c893424897c2404585e5b8b542408895424088974240c83c404e9950000006a016a016a0154830424048b442410bb01000000e840ff01005e5f83ff03750d8934243b650c7303ff552cebd38d6424048b7c2420893424897c24045e5f893424897c2404eba2f604240175218b3c248b0789ffff77048b5c2408e871c801005e8934243b650c7303ff552cebd98d6424045ab8a00c66b1ff12e941fffffff400|@12610,1,@1541|36,0,@9473 59,0,@9473 83,0,@9568 100,0,@12121 179,1,@6177 199,0,0 204,1,@6363 275,1,@6357 299,0,@9515 6177:D3,1996|8d7c24943b7d0c7305ff5530cd09538b3c24ff378b7c2404ff77048b7c2408ff77088b7c240cff77106a016a018b5c242454e8a9070000ff3424ff7424088b7c24208b078b7c2420ff77048b7c24248b7f1083ff03755181f8100666b17502eb238b388d3c7d0100000083ff017521bf100666b18d70048d7f0433c93bc9f3a67402eb0c8b1424b81c0f66b1ff12eb058b1424ff128b1424b8c00567b1ff12ff742408e9e70600008d642404ff7424046a01f644240401752a8b7c24048b078b7c2404ff77048b5c2404e80d13000089c25e891424897424043b650c7303ff552cebcf5fbb0100000083c404f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a89d389f73b650c7305ff552ccd88ebc46a016a01ff74240854830424048b442414e8fe830000ff3424ff742408ff742414ff7424086a016a01f644240c010f85b6000000f6442408010f85ab0000008b7c240c8b3f8b74240cff76048b74240c8b368b54240cff72048b168d1c5501000000f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489d9eb10b8b02f66b15756e8ce27f3ff5e5f89c1f6c10174458b54240c8d540aff52ff742410ff74241089f389f8e8c7ae000089c38b7424088b542404598d642408891c24894c2404895424088974240c3b650c7303ff552ce94dffffff8d64244cb8d02f66b18b5d04ff23ff34248b3424bf01000000f7c60100000075388b0e8b56048b49048b0983f901751789f983c102710e8d642448b8f80466b18b5d04ff23eb0289f989cf89d63b650c7305ff552ccdc0ebc0578b44241883c008bf09000000d1e8d1ef33d2f7f78d3c4501000000578b7c2408be01000000f7c70100000075388b0f8b57048b49048b0189c383f807750789f183c102eb1089d983f909750789f183c104eb0289f189ce89d73b650c7305ff552ccdc0ebc08b3c248d7c37ff8d642404578b3c248b7424048d7c37ff83c70889fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffffbe010000003bf7731e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebdebe010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757ff742428f604240175218b342489f7ff3689ffff77048b7c24048b3f8d3c7d01000000576a01e97f0300008d642404b8481367b1bb01000000e81354000089c1f6c101750e8b11be0100000089cfe95c020000bf100666b1578b3c248b3f8d3c7d01000000576a018b3c2489fa3b7c2404721a8d64240c8b3c248b3f83c70683e7f98b3424893eff742410eb6d89d289d683c208d1ea8b7c24080fb60c178b54240c8b128b5c24108b5bfcc1e308c1eb0783cb018d1c9dfdffffff3bd3732dd1ea8b7c2410880c178b7c240c8b3f83c7028b54240c893a89f683c6028934243b650c7303ff552ce97cffffff8d642464b8501367b18b5d04ff23f6042401752b8b3c248b3f8b3424ff76048b078b5f04ff742408ff742410e8f0b600005e8934243b650c7303ff552cebcf8d6424045f8b3fc1ef0283cf013b7c24040f85ed0000008b7c240483c7068b7424088d7c37ff8d1cbdfdffffff8b44240883c006710e8d642454b8f80466b18b5d04ff236a09ff742404e8f7c000008b0424e85fc3000089c78d642404578b3c248b7ffcc1e708c1ef0783cf013b7c2404770e8d642454b8681567b18b5d04ff238b7c244c8b34248b542404897c56fe8b74240483c6028b3c248b7ffcc1e708c1ef0783cf013bfe770e8d642454b8681567b18b5d04ff238b3c24c74477fe030000008b54240483c2048b3c248b7ffcc1e708c1ef0783cf013bfa770e8d642454b8681567b18b5d04ff238b7c24448b3424897c56fe8b7c240483c706ff74240c57eb0e8d642454b8941567b18b5d04ff23f644240401752e8b7c24048b078b7c2404ff7704ff74240c8b5c2408e8c3c2000089c25e891424897424043b650c7303ff552cebcb8d6424088b7c244083ff03751f8b7c2458578b4424548b5c2404e88cc400008b542448b8882067b1ff12eb00588b7c2450897c245883c458e9f6c10100f7c70100000075288b470489f383c302710e8d642458b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642458b8780566b18b5d04ff238d642458b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbfe9aefcffff8b3c2489fa3b7c240472198d6424085e897424043b650c7303ff552c83c404e936fcffff89d289d683c208d1ea8b7c240c0fb60c178b5424148b128b5c24188b5bfcc1e308c1eb0783cb018d1c9dfdffffff3bd3732ad1ea8b7c2418880c178b7c24148b3f83c7028b542414893a89f683c6028934243b650c7303ff552ceb808d64246cb8501367b18b5d04ff23f604240175228b3c248b078b3c24ff77048b5c2408e893c001005e8934243b650c7303ff552cebd88d6424045ab8a00c66b1ff12e9e4f8fffff4000000|@12600,1,@1538|51,1,@6178 89,0,@9473 112,0,@9473 136,0,@9568 153,0,@12121 203,1,@6186 229,0,0 314,1,@6276 427,0,@9958 434,1,@4895 469,1,@6284 521,0,@9960 537,0,0 576,0,@9455 614,0,4 639,0,0 783,0,0 822,0,0 903,0,@12278 908,0,0 913,1,@6200 927,0,0 939,0,@9473 1096,0,@12279 1136,1,@6285 1213,0,@9455 1229,1,@6289 1237,1,@6290 1274,0,@12293 1329,0,@12293 1345,0,1 1380,0,@12293 1419,0,@12295 1457,1,@6291 1508,1,@6293 1517,0,@12461 1538,1,@6356 1565,0,@9455 1605,0,@9476 1624,0,4 1645,0,16777215 1699,0,0 1708,0,4 1721,0,@9465 1735,0,@9468 1926,0,@12279 1957,1,@6357 1981,0,@9515 6178:D3,152|3b650c7305ff552ccd098b7d008d7ff83b7d087305ff5528cd09897d00c747fc01000040891f576a01ff742404bb01000000e87500000089c7ba01000000f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc48b3c248b3f8d6424048b7424048916897e04b801000000c20400f4000000|@12137,1,@1360|46,0,0 51,1,@6179 58,0,0 141,0,0 6179:D3,2276|3b650c7305ff552ccd0953a8010f85b80000008b38ff70048b3789f283fe597517585b8b74240489742404c744240801000000e9c8ffffff89d683fa037525ff7704ff77088b7c241883ff03750e8d642410b8cc0567b18b5d04ff238b3c24e91a04000083fe017525ff77048b4f08ff770c8b7c241883ff03750e8d642410b8700667b18b5d04ff238b3c24eb418b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b742404897304893b588d6424048b7424088b5424048954240489742408e935ffffff58c20800f7c701000000754a8b178b77043bd17502eb388b1a8b013bd875188b52048b59043bd37507ba03000000eb05ba01000000eb05ba0100000083fa03740e89f73b650c7305ff552ccd82ebb5bf03000000eb05bf0100000083ff03750e8d642410b89c0667b18b5d04ff238b7c240483c702710e8d642410b8f80466b18b5d04ff2383ef016bff04710e8d642410b8f80466b18b5d04ff2383c7018b75008d76f03b75087305ff5528cd82897500c746fc03000000c74608e40667b1894e04c7063f000000bb010000002bdf710e8d642410b8f80466b18b5d04ff2383c3018b55008d52f83b55087305ff5528cd4a895500c742fc01000000890a8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000894f10895f0cc74708c46866b1895704c707370000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc020000008957048937578b7d008d7fec3b7d087305ff5528cd02897d00c747fc04000000c7470cf80667b1894f08c7470405000000c70709000000578b7c241c8b378b7c241c8b3f83c702710e8d642418b8f80466b18b5d04ff238b54241c893a8b7d008d7fec3b7d087305ff5528cd42897d00c747fc04000000c7470c05000000897708c7470411000000c707110000008b45008d40f43b45087305ff5528cdc2894500c740fc02000000c740040100000089388b7d008d7ff03b7d087305ff5528cd43897d00c747fc030000008b542408895708c7470401000000c7070f0000008b55008d52f43b55087305ff5528cdc3895500c742fc02000000897204c702310000008b75008d76f03b75087305ff5528cd87897500c746fc03000000894e08c746040c0767b1c706610000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd87897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c7eb07e82705000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065f83c408eb0e8b0424e85605000089c78d64240cb801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240483ff01750489c3eb0b8b5c2404e85d05000089c3588b74240889742408c744240c0300000083c404e982fbfffff7c70100000075548b178b77043b5424047502eb408b0a8b5c24048b1b3bcb751c8b52048b4c24048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa03740e89f73b650c7305ff552ccd80ebabbf03000000eb05bf0100000083ff03750e8d642410b81c0767b18b5d04ff238b75008d76f43b75087303ff5528897500c746fc020000008b7c2404897e04c706430000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470ce40667b18b542404895708c7470401000000c707090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470cf80667b18b742408897708c7470405000000c70709000000578b7c241c8b378b7c241c8b3f83c702710e8d642418b8f80466b18b5d04ff238b54241c893a8b7c241c8b078b7c241c8b3f83c702710e8d642418b8f80466b18b5d04ff238b54241c893a8b7d008d7fec3b7d087305ff5528cd41897d00c747fc04000000c7470c03000000894708c7470403000000c707110000008b4d008d49ec3b4d087305ff5528cdc1894d00c741fc04000000c7410ce40667b18b54240c895108c7410405000000c701090000008b55008d52ec3b55087305ff5528cdc3895500c742fc04000000c7420c05000000897208c7420403000000c702110000008b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304c703310000008b45008d40f43b45087305ff5528cdce894500c740fc02000000c740040100000089188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc0200000089430489138b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489388b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008b542408895708c7470401000000c7070f0000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702310000008b75008d76f03b75087305ff5528cd85897500c746fc030000008b4c240c894e08c746040c0767b1c706610000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd87897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b83fb01750489c7eb07e8ef01000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175065f83c408eb0e8b0424e81e02000089c78d64240cb801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240483ff01750489c3eb0b8b5c2404e82502000089c3588b74240889742408c744240c0300000083c404e91ef7fffff400|@12136,1,@1359|47,0,0 83,0,@12122 128,0,@12126 245,0,1 252,0,0 259,0,0 283,0,1 290,0,0 304,0,@12128 327,0,@9455 349,0,@9455 390,0,@12131 399,0,31 404,0,0 417,0,@9455 492,0,@10755 501,0,27 534,0,0 601,0,@12132 611,0,2 617,0,4 644,0,@9455 688,0,2 698,0,8 704,0,8 737,0,0 779,0,0 785,0,7 820,0,24 856,0,@12133 862,0,48 895,0,0 973,1,@6180 1026,1,@6181 1037,0,0 1119,1,@6182 1138,0,1 1198,0,1 1205,0,0 1212,0,0 1236,0,1 1243,0,0 1257,0,@12134 1299,0,33 1332,0,@12131 1346,0,0 1352,0,4 1385,0,0 1450,0,@12132 1464,0,2 1470,0,4 1497,0,@9455 1534,0,@9455 1578,0,1 1588,0,1 1594,0,8 1627,0,@12131 1641,0,2 1647,0,4 1680,0,2 1690,0,1 1696,0,8 1731,0,24 1764,0,0 1899,0,0 1905,0,7 1940,0,24 1980,0,@12133 1986,0,48 2019,0,0 2097,1,@6183 2150,1,@6184 2161,0,0 2243,1,@6185 2262,0,1 6180:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1353| 6181:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1354| 6182:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1355| 6183:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1356| 6184:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1357| 6185:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1358| 6186:D3,332|3b650c7305ff552ccd0953e85001000089c1f6c101750b8b11be0100000089cfeb2cbf100666b18b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c3f7c70100000075288b470489f383c302710e8d642404b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbfe9defefffff40000|@12259,1,@1450|12,1,@6187 26,0,0 35,0,@9473 101,0,@9455 141,0,@9476 160,0,4 181,0,16777215 235,0,0 244,0,4 257,0,@9465 271,0,@9468 6187:D3,12324|3b650c7305ff552ccd018b3889febac04b33b181c21f0000008d54bafcffe2e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9dd190000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e96b1a0000909090e9d41b0000909090e9691c0000909090e93a1d0000909090e9a01d0000909090e93e210000909090e9ab210000909090e9f0210000909090e925220000909090e931220000909090e9b5220000909090e90d230000909090e9d3230000909090e943240000909090e941240000909090e958240000909090e9e3000000909090e9fe240000909090e9d3000000909090e9cb000000909090e9c3000000909090e9ef250000909090e9a2270000909090e9ab000000909090e9a3000000909090e9a2270000909090e993000000909090e92b280000909090e99a280000909090e97b000000909090e973000000909090e923290000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e9ea280000909090e921290000909090e98c290000909090e99c2c0000909090e9bf2d000090909089f783fe59750ab8bc0767b18b5d04ff2389fe83ff03750ab8080867b18b5d04ff2389f783fe01750ab8540867b18b5d04ff23bec04b33b181c6230200008d74befcffe6e9bb010000909090e9b3010000909090e9e8010000909090e9fd030000909090e9f3040000909090e9f5070000909090e98b010000909090e92a080000909090e92f080000909090e978080000909090e9c0080000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e960080000909090e9db000000909090e97a080000909090e9cb000000909090e92d090000909090e9bb000000909090e9b3000000909090e9de0b0000909090e9170c0000909090e99b000000909090e9730e0000909090e98b000000909090e983000000909090e9030f0000909090e9970f0000909090e96b000000909090e9bb0f0000909090e95b000000909090e935110000909090e9e9110000909090e9fd120000909090e9b8130000909090e9f6130000909090e95e140000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090908b70048b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089375768c46866b16a096a01b8487966b1bbffffffffe81d2c0000e9c43c00008b78048b48088b500cff7010b80100000081e8000100007002eb15b801000000bb01010000575152e87311f3ff5a595fa801740df604240174073b04247f17eb178b1c24575152e8283500005a595f89c683fe017e02eb2df604240174108b342481fe010100007d1ce9dd0000008b34240fb676ff8d34750100000083fe230f84c600000083ff057507be0f000000eb3583ff0b7507be0d000000eb2983ff097507be0b000000eb1d83ff037507be09000000eb1183ff077507be03000000eb05be010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f5768c46866b1566a0189d3b8840a67b1e8212b000089c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e888d0ffffbb09000000e86a34000089c383fb0175055883c404c35883c404e9d53b000083ff057507be0f000000eb3583ff0b7507be0d000000eb2983ff097507be0b000000eb1d83ff037507be09000000eb1183ff077507be03000000eb05be010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f5768c46866b1566a0189d3b8a84e66b1e85b2a000089c757f64424040174068b7c2404eb148b442404e8decfffff89c78b3f8d3c7d0100000081e7ff0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175055883c404c35883c404e9673b00008b78048b50088b580c83ff057507be0f000000eb3583ff0b7507be0d000000eb2983ff097507be0b000000eb1d83ff037507be09000000eb1183ff077507be03000000eb05be010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100000089175768c46866b1566a01b8840a67b1e88229000089c757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e896e8f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e84f0df3ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8b2ceffffbb09000000e89432000089c383fb01750258c358e9cd3a0000ff70048b78088b700c8b1689d183fa0375738b5e048b56088b460c8b4d008d49f03b4d087305ff5528cd8d894d00c741fc03000000c74108070000005e897104c701010000008b75008d76f83b75087305ff5528cd8f897500c746fc01000000891e518b0f8b5f045153ff74240c89c38b44240c8954240c89742410e97c2800008d64240489ca83f9010f8579010000ff37b8840a67b1bb01000000e8903a000089c7578b7c240883ff057507bf0f000000eb458b7c240883ff0b7507bf0d000000eb358b7c240883ff097507bf0b000000eb258b7c240883ff037507bf09000000eb158b7c240883ff077507bf03000000eb05bf0100000083ff0f760e8d64240cb8d00867b18b5d04ff238b74240483fe0f760e8d64240cb8140967b18b5d04ff23be07000000c1e60683ee3f81e6ff0100008d3cfdf9ffffff81e7ff0100000bf70b7424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e8a9e6f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e8620bf3ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8c5ccffffbb09000000e8a730000089c383fb0175035beb0e8b0424e8113f000089c38d64240483fb0175055883c408c35883c408e95c3f000083fa050f85bc0000008b5604b80100000081e8000100007002eb13b801000000bb010100005752e8500cf3ff5a5fa801740bf6c20174063bc27f14eb1489d35752e80a3000005a5f89c683fe017e02eb1ff6c201740a81fa010100007d12eb520fb672ff8d34750100000083fe2374428b342483fe057402eb2889d0bb030000005752e8383f00005a5f89c683fe037507be03000000eb05be0100000083fe037502eb0e8d642404b8280b67b18b5d04ff235889fe89d3ff3424895c240489f3e93b3f00008b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000c74008070000005a895004c7000100000089fbff342489742404e9f34500008b50048b78088b75008d76f83b75087305ff5528cd84897500c746fc0100000089168b178b4f0468c46866b15251ff74240cbb01000000b8fc0b67b189742410e9ae2500008b78048b580889f8e9754c00008b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000b000000bb01000000e8a537000089c757b8380c67b1bb09000000e8e72e000089c383fb01750258c358e9404e00008b78048b58088b700c83fe037507ba0f000000eb05ba0d0000008b75008d76f83b75087305ff5528cd8c897500c746fc01000000893e68c46866b1526a01ff74240cb830be66b189742410e9002500008b58048b780883ff037507be0f000000eb05be0d000000ff3424b830be66b189742404e9f03f00008b70048b50088b480c8b781089c88b0f8b5f04525153ff74240c89c3b8400c67b189742410e9ae2400008b70048b78088b580c8b0b8b53048b430883fe0375388b75008d76f83b75087305ff5528cd87897500c746fc01000000890e8b0f8b5f04525153ff74240c89c3b8480c67b189742410e96024000083fe0175388b75008d76f83b75087305ff5528cd87897500c746fc01000000890e8b0f8b5f04525153ff74240c89c3b8500c67b189742410e9232400008b75008d76f83b75087305ff5528cd87897500c746fc01000000890e8b0f8b5f04525153ff74240c89c3b8580c67b189742410e9eb230000ff70048b78088b3789f283fe0375458b4f048b57088b470c8b75008d76f83b75087305ff5528cd07897500c746fc01000000890e8b3c248b0f5f8b5f04525153ff74240c89c3b8600c67b189742410e99723000089d683fa010f85b50000005f8b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70035000000bb01000000e89035000089c757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e870e2f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e82907f3ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e88cc8ffffbb09000000e86e2c000089c383fb01750258c358e92b4c000083fe050f8597010000ff7704bf0500000083ff01750e8d642408b864c766b18b5d04ff23f604240174188b0424bf05000000d1f8d1ff99f7ff8d3c5501000000eb0f8b0424bb05000000e8f481f9ff89c783ff017502eb70f7c701000000741383ff017c07be03000000eb05be01000000eb1c0fb677ff8d34750100000083fe037507be03000000eb05be0100000083fe037507be03000000eb05be0100000083fe037423f7c701000000740989fe83c6047002eb0e89f8bb05000000e82506f3ff89c689f7eb0083ff01754cff742404b8680c67b18b5c2408e8f841000089c7578b7c240483ff017507bb01000000eb14ff742404b8010000008b5c240ce8df3a000089c383fb0175055883c408c35883c408e9764b00008b7c24048b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70035000000bb01000000e8bf33000089c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e8f2c6ffffbb09000000e8d42a000089c383fb0175055883c408c35883c408e9534b00008b5f045eff3424b8780c67b189742404e9224100008b78048b378b7f048b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004c7004b00000083ff037507bb800c67b1eb05bb01000000e9153300008b78048b3789f283fe010f8594000000b89c0c67b1bb01000000e8f632000089c757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e8d6dff8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e88f04f3ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8f2c5ffffbb09000000e8d429000089c383fb01750258c358e9bd4a000089d683fa050f853b010000ff7704b80100000081e8000100007002eb0fb801000000bb01010000e89905f3ffa801740df604240174073b04247f11eb118b1c24e85429000089c783ff017e02eb26f6042401740d8b3c2481ff010100007d15eb768b3c240fb67fff8d3c7d0100000083ff237463b89c0c67b1bb01000000e8ee31000089c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e821c5ffffbb09000000e80329000089c383fb0175055883c404c35883c404e94a4a0000b8a40c67b1bb01000000e88b31000089c757f64424040174068b7c2404eb148b442404e8dac4ffff89c78b3f8d3c7d0100000081e7ff0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175055883c404c35883c404e93f4a000083fe03753c8b4f048b57088b5f0c8b75008d76f83b75087305ff5528cd0e897500c746fc01000000890e526a0d6a01ff74240cb80c0c67b189742410e9b61e00008b7f048b378b7f048b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004c7005100000083ff037507bb800c67b1eb05bb01000000e9a9300000ff7004b8ac0c67b1bb01000000e89730000089c7578b7c240483ff097507bf57010000eb358b7c240483ff077507bf55010000eb258b7c240483ff057507bf4b010000eb158b7c240483ff037507bf49010000eb05bf4d0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb017507bb01000000eb0cb801000000e88e49000089c383fb0175055883c404c35883c404e9dd490000ff70048b58088b780c8b342483fe0375328d64240483ff017507be0f000000eb1183ff057507be0b000000eb05be09000000ff3424b8b40c67b189742404e9a238000083ff017507bf0f000000eb1183ff057507bf0b000000eb05bf0900000057b8d8ad66b1e87a3800008b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000c74704010000005e893783ff017501c389fbe9a54900008b58048b780883ff017507be0f000000eb1183ff057507be0b000000eb05be09000000ff3424b8bc0c67b189742404e9153800008b7804ff70088b0fff77048b77088b7c240483ff017505e9d7000000bf0500000083ff01750e8d642408b864c766b18b5d04ff23f64424040174198b442404bf05000000d1f8d1ff99f7ff8d3c5501000000eb148b442404bb050000005156e8057cf9ff5e5989c783ff017502eb74f7c701000000741383ff017c07ba03000000eb05ba01000000eb1c0fb657ff8d14550100000083fa037507ba03000000eb05ba0100000083fa037507ba03000000eb05ba0100000083fa037427f7c701000000740989fa83c2047002eb1289f8bb050000005156e83200f3ff5e5989c289d7eb0083ff037502eb0983fef90f85890000008b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890f57ff7424046a016a0189f3b8c40c67b1e8d91b000089c78d64240457f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e83cc1ffffbb09000000e81e25000089c383fb0175055883c404c35883c404e9594800008d642408b8cc0c67b18b5d04ff238b78048b178b77048b5f088b7d008d7ff83b7d087305ff5528cd4c897d00c747fc01000000891757566a016a01b8c40c67b1e83c1b000089c757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e850daf8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e809fff2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e86cc0ffffbb09000000e84e24000089c383fb01750258c358e9f34700008b70048b50088b780c8b0aff72048b420883fe0375398b75008d76f83b75087305ff5528cd83897500c746fc01000000890e5a8b0f8b5f04525153ff74240c89c3b8240d67b189742410e9681a000083fe0175398b75008d76f83b75087305ff5528cd83897500c746fc01000000890e5a8b0f8b5f04525153ff74240c89c3b82c0d67b189742410e92a1a00008b3783fe097207bb03000000eb05bb010000008b55008d52f43b55087305ff5528cdcb895500c742fc02000000895a04c7023300000083fe0973468b75008d76f83b75087305ff5528cd87897500c746fc01000000890e528b5424048b0f8b5f0453ff74240c89c38b442408894c24088954240c89742410e9ad1900008d6424088d642404b8340d67b18b5d04ff238b78048b4808ff700c8b118b71048b590883ff03750e8d642404b87c0d67b18b5d04ff2383ff01750e8d642404b8c80d67b18b5d04ff238b7d008d7ff83b7d087305ff5528cd4c897d00c747fc01000000891757566a016a01b8140e67b1e83819000089c757f64424040174068b7c2404eb148b442404e8bbbeffff89c78b3f8d3c7d0100000081e7ff0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175055883c404c35883c404e9784600008b70048b78088b0e8b56048b46088b75008d76f83b75087305ff5528cd87897500c746fc01000000890e8b0f8b5f04525153ff74240c89c3b8780c67b189742410e9921800008b7004ff70088b580c8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089375768c46866b16a016a01b81c0e67b1e8591800005e81e6ff0100008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe9264600008b7804ff3781ff943966b175098d642404e9f10100008b1789d683fa0175168b570483fa017507ba03000000eb05ba01000000eb05ba0100000083fa030f84c001000081ff646966b17505e93401000089f283fe0775168b770483fe017507be03000000eb05be01000000eb05be0100000083fe030f840901000081ffb83966b17505e9fa00000089d683fa0375168b570483fa017507ba03000000eb05ba01000000eb05ba0100000083fa030f84cf00000081ffb04066b17505e9c000000083fe0575168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff030f8497000000b830be66b1bb01000000e85e29000089c7578b7c240483ff0f760e8d642408b8140967b18b5d04ff23bf07000000c1e70683ef3f81e7ff010000be010000008d34f5f9ffffff81e6ff0100000bfe0b7c240457b8240e67b1bb09000000e85f20000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b83fb0175055883c404c35883c404e90a450000eb00eb00b81c0e67b1bb01000000e8c32800008b3c2483ff0f760e8d642404b8140967b18b5d04ff23bf07000000c1e70683ef3f81e7ff010000be010000008d34f5f9ffffff81e6ff0100000bfe0b3c248d6424048b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c74304b83966b1893b83fb017501c3e9eb4400008d642404b82c0e67b1bb01000000e840280000e9374500008b78048b3789f283fe0375188b5f04ff3424b80c0c67b1c744240405000000e9fb30000089d683fa017530b8cc5366b1bb01000000e80128000089c757b8340e67b1bb09000000e8431f000089c383fb01750258c358e93845000089f783ff05752468c46866b16a056a01ff74240cbb01000000b80c0c67b1c74424103c0e67b1e981150000b8cc5366b1bb01000000e8a627000089c757b8380c67b1bb09000000e8e81e000089c383fb01750258c358e941450000ff7004b8500e67b1bb01000000e87327000089c7578b7c2404bec04b33b181c6111b00008d743effffe6eb0eeb23eb28eb2deb32eb04eb35eb3a8b7c240483ff0b7507bf03000000eb05bf01000000eb28bf05000000eb21bf07000000eb1abf0d000000eb13bf0f000000eb0cbf09000000eb05bf0b00000083ff0f760e8d642408b8d00867b18b5d04ff23be01000000c1e60683ee3f81e6ff0100008d3cfdf9ffffff81e7ff0100000bf783ce0b8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e895d3f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e84ef8f2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8b1b9ffffbb09000000e8931d000089c383fb0175035beb0e8b0424e84d44000089c38d64240483fb0175055883c404c35883c404e9984400008b70048b78088b580c89f2b9c04b33b181c1741c00008d4c11ffffe1eb0eeb1feb24eb29eb2eeb04eb31eb3683fe0b7507ba03000000eb05ba01000000eb28ba05000000eb21ba07000000eb1aba0d000000eb13ba0f000000eb0cba09000000eb05ba0b0000008b75008d76f83b75087305ff5528cd8c897500c746fc01000000893e68c46866b1526a01ff74240cb8500e67b189742410e9431300008b70048b780889f2b9c04b33b181c10e1d00008d4c11ffffe1eb0eeb1feb24eb29eb2eeb04eb31eb3683fe0b7507be03000000eb05be01000000eb28be05000000eb21be07000000eb1abe0d000000eb13be0f000000eb0cbe09000000eb05be0b0000005683c70281e7ff01000057b8109066b1bb01000000e8f9240000be07000000c1e60683ee3f81e6ff0100008b7c24048d3cfdf9ffffff81e7ff0100000bf70b34248d6424088b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe986430000ff7004b85c0e67b1bb01000000e88c240000be07000000c1e60683ee3f81e6ff010000bf010000008d3cfdf9ffffff81e7ff0100000bf70b34248d6424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe97c430000ff7004bf680e67b18b3424dd06dc1fdfe089c781e70044000081f7004000000f8505010000b8740e67b1bb01000000e8fc230000be07000000c1e60683ee3f81e6ff010000bf0b0000008d3cfdf9ffffff81e7ff0100000bf783ce0d8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c7eb0989fbe85143000089c757b8230000008b5c2404e8a443000089c783ff03756bb8740e67b1bb01000000e87a230000be07000000c1e60683ee3f81e6ff010000bf090000008d3cfdf9ffffff81e7ff0100000bf78b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe87643000089c3eb05bb0100000083fb0175055883c404c35883c404e9be430000bf980e67b18b3424dd06dc1fdfe089c781e70044000081f70040000075688d642404b8740e67b1bb01000000e8d5220000be07000000c1e60683ee3f81e6ff010000bf0b0000008d3cfdf9ffffff81e7ff0100000bf78b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe99c430000bfa40e67b15edd06dc1fdfe089c781e70044000081f7004000000f85e0000000b8740e67b1bb01000000e851220000be07000000c1e60683ee3f81e6ff010000bf0b0000008d3cfdf9ffffff81e7ff0100000bf78b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c7eb0989fbe87943000089c757b8740e67b1bb01000000e8e7210000be07000000c1e60683ee3f81e6ff010000bf090000008d3cfdf9ffffff81e7ff0100000bf78b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe87343000089c383fb01750258c358e9c8430000b85c0e67b1bb01000000e87121000089c757be01000000c1e60683ee3f81e6ff010000bf010000008d3cfdf9ffffff81e7ff0100000bf783ce0b8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e805cef8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e8bef2f2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e821b4ffffbb09000000e80318000089c383fb0175035beb0e8b0424e84943000089c38d64240483fb01750258c358e99a4300008b780481e7ff01000057b8740e67b1bb01000000e871200000be07000000c1e60683ee3f81e6ff010000bf010000008d3cfdf9ffffff81e7ff0100000bf70b34248d6424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe9894300008b48048b70088b398b51048b590883fe037507b8740e67b1eb05b85c0e67b18b75008d76f83b75087305ff5528cd8d897500c746fc01000000893e526a016a01ff74240c89742410e9940d00008b78048b58088b75008d76f83b75087305ff5528cd88897500c746fc01000000893e68c46866b16a016a01ff74240cb8b00e67b189742410e9570d0000b8bc0e67b1bb01000000e87c1f0000e94f4300008b70048b780883fe037507be07000000eb05be050000005683c70281e7ff01000057b85c0e67b1bb01000000e8461f0000be07000000c1e60683ee3f81e6ff0100008b7c24048d3cfdf9ffffff81e7ff0100000bf70b34248d6424088b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe91f4300008b70048b58088b480c8b3b8b53048b5b0883f9037507b8740e67b1eb05b85c0e67b183fe037507b907000000eb05b9050000008b75008d76f83b75087305ff5528cd8f897500c746fc01000000893e52516a01ff74240c89742410e9570c00008b78046a016a0183ff077513bf5c0e67b18b378934248b7f04897c2404eb4183ff057513bfd40e67b18b378934248b7f04897c2404eb2983ff017513bfe00e67b18b378934248b7f04897c2404eb11bfec0e67b18b378934248b7f04897c2404ff3424ff742408b8740e67b1bb01000000e8151e0000be07000000c1e60683ee3f81e6ff0100005f8d3cfdf9ffffff81e7ff0100000bf70b34248d64240c8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff017501c389fbe9554200008b78048b70088b500c8b1283fa03755e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76f83b75087305ff5528cd84897500c746fc01000000893e8b0f8b5f04525153ff74240cbbf9ffffffb8400c67b189742410e91b0b0000b8f80e67b18b5d04ff23b801000000c38b78048b70088b3683fe037508576a01e9a80a0000b8440f67b18b5d04ff238b78048b3789f283fe0375188b5f04ff3424b80c0c67b1c744240409000000e9e025000089d683fa017530b8880f67b1bb01000000e8e61c000089c757b8340e67b1bb09000000e82814000089c383fb01750258c358e9c141000089f783ff05752468c46866b16a096a01ff74240cbb01000000b80c0c67b1c74424103c0e67b1e9660a0000b8880f67b1bb01000000e88b1c000089c757b8380c67b1bb09000000e8cd13000089c383fb01750258c358e9ca410000ff70088b3c248b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70035000000bb01000000e8351c000089c757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e815c9f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e8ceedf2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e831afffffbb09000000e81313000089c7576a01b8840a67b18b5c240ce89024000089c757b8380c67b1bb09000000e8ee12000089c383fb0175035beb0e8b0424e84c41000089c38d64240483fb0175035beb0e8b0424e89a41000089c38d64240483fb0175055883c404c35883c404e9e54100008b78048b70088b1689d183fa01750ab8900f67b18b5d04ff2389ca83f9050f853b010000ff7604b80100000081e8000100007002eb11b801000000bb0101000057e867eef2ff5fa801740df604240174073b04247f13eb138b1c2457e8201200005f89c683fe017e02eb26f6042401740d8b342481fe010100007d15eb748b34240fb676ff8d34750100000083fe2374615789fbb8e00f67b1e88728000089c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e8eeadffffbb09000000e8d011000089c383fb0175055883c404c35883c404e9574100005789fbb83c0267b1e82628000089c757f64424040174068b7c2404eb148b442404e8a9adffff89c78b3f8d3c7d0100000081e7ff0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175055883c404c35883c404e94e41000083fa0375418b4e048b56088b460c8b75008d76f83b75087305ff5528cd87897500c746fc01000000890e8b0f8b5f04525153ff74240c89c3b8e80f67b189742410e9800700008b760489fbff3424b8e80f67b189742404e96a2700008b5804ff3424b830be66b1c744240407000000e96a22000068040c67b168c46866b16a076a01b8600c67b1bb09000000e83507000089c757b80c0c67b1bb01000000e857190000be01000000c1e60683ee3f81e6ff010000bf090000008d3cfdf9ffffff81e7ff0100000bf783ce078b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8b440000089c383fb01750258c358e9094100008b70048b78088d1cb5fdfffffff6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e891eaf2ff5f89c683ff03752189f368c46866b16a096a01ff74240cb8400c67b1c744241030f366b1e958060000ff3424bb38f366b1b80100000089742404e94e1f00008b780483ff01750fbb01000000b848fb66b1e95f18000083ef016bff04710ab8f80466b18b5d04ff2383c70157b8f00f67b1bb01000000e83a1800008b342481e6ff0100005fc1ef0883cf0181e7ff0100008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893783ff017501c389fbe955400000bb01000000b8003b66b1e9c6170000b8880f67b1e8ac0f000089c757b8380c67b1bb09000000e8fe0e000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c38b78048b58088b1789d683fa0375418b4f048b57088b470c8b75008d76f83b75087305ff5528cd0f897500c746fc01000000890e8b0b8b5b04525153ff74240c89c3b8f80f67b189742410e90305000083fe0775148b7704ff3424b8f80f67b189742404e9ea240000b8001067b18b5d04ff238b7004ff70088b480c8b3989fa83ff070f855a010000ff71048b45008d40f43b45087305ff5528cd40894500c740fc02000000897004c7005900000083fe0d7507bfa80967b1eb2983fe137507bf9c0967b1eb1d83fe037507bf9c0967b1eb1183fe057507bf9c0967b1eb05bf840967b15783fe0d7507bf200a67b1eb2983fe137507bf200a67b1eb1d83fe037507bf200a67b1eb1183fe057507bf200a67b1eb05bf200a67b157e8570e000089c78b74240c83fe0f760e8d642410b8d00867b18b5d04ff238b74240883fe0f760e8d642410b8140967b18b5d04ff23ba07000000c1e20683ea3f81e2ff0100008b74240c8d34f5f9ffffff81e6ff0100000bd60b5424088b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e8a13e000089c38d64240483fb0175055883c408c35883c408e9ec3e000089d783fa010f85300100008b45008d40f43b45087305ff5528cd40894500c740fc02000000897004c70059000000bb01000000e86c15000089c7578b7c240483ff0f760e8d642408b8d00867b18b5d04ff23be01000000c1e60683ee3f81e6ff0100008b7c24048d3cfdf9ffffff81e7ff0100000bf783ce0b8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757bf0500000083ef016bff00700583c701eb11b805000000bb01000000e8eac1f8ff89c7f7c701000000740989f883c0027002eb0c89f8bb03000000e8a3e6f2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e806a8ffffbb09000000e8e80b000089c383fb0175035beb0e8b0424e82e3e000089c38d64240483fb0175055883c404c35883c404e9793e000083ff03755a8b79048b51088b590c8b45008d40f43b45087305ff5528cdcc894500c740fc02000000897004c700590000008b75008d76f83b75087305ff5528cd8d897500c746fc01000000893e5952516a01ff74240c89742410e9d60100008d642404b8401067b18b5d04ff23ff70048b7808ff378b770483fe03752b81ce810000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb05bf0100000057b8b43a66b1e8a10b000089c78b74240883fe0f760e8d64240cb8d00867b18b5d04ff238b74240483fe0f760e8d64240cb8140967b18b5d04ff23ba07000000c1e20683ea3f81e2ff0100008b7424088d34f5f9ffffff81e6ff0100000bd60b5424048b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb017507bb200a67b1eb0cb8200a67b1e8753d000089c383fb0175065b83c408eb0e8b0424e8c43d000089c38d64240c83fb017506b8840967b1c3b8840967b1e90d3e00008b58048b48088b700c8b3b8b53048b5b0883fe037507b8841067b1eb05b88c1067b18b75008d76f83b75087305ff5528cd8f897500c746fc01000000893e52516a01ff74240c89742410e94e000000f644240401752a8b7c24048b078b7c2404ff77048b5c2404e8053e000089c25e891424897424043b650c7303ff552cebcf5883c404c3f4000000|@12258,1,@1449|15,0,@6187 487,0,@12138 504,0,@12141 521,0,@12144 531,0,@6187 1028,0,@10755 1037,0,@10997 1042,0,-1 1047,1,@6188 1052,1,@6196 1069,0,0 1084,0,0 1089,0,128 1097,1,@4897 1128,1,@6189 1155,0,128 1195,0,7 1207,0,6 1219,0,5 1231,0,4 1243,0,1 1250,0,0 1284,0,@10755 1294,0,@12168 1299,1,@6188 1352,1,@6162 1357,0,4 1362,1,@6190 1383,1,@6197 1393,0,7 1405,0,6 1417,0,5 1429,0,4 1441,0,1 1448,0,0 1482,0,@10755 1492,0,@10341 1497,1,@6188 1522,1,@6162 1572,0,0 1593,1,@6198 1612,0,7 1624,0,6 1636,0,5 1648,0,4 1660,0,1 1667,0,0 1701,0,@10755 1709,0,@12168 1714,1,@6188 1722,0,2 1740,0,2 1745,0,0 1750,1,@5527 1776,0,1 1781,1,@4895 1822,1,@6162 1827,0,4 1832,1,@6190 1847,1,@6199 1907,0,3 1917,0,0 1976,1,@6188 1998,0,@12168 2003,0,0 2008,1,@6200 2025,0,7 2041,0,6 2057,0,5 2073,0,4 2089,0,1 2096,0,0 2110,0,@12150 2133,0,@12153 2143,0,3 2207,0,0 2215,0,2 2233,0,2 2238,0,0 2243,1,@5527 2269,0,1 2274,1,@4895 2315,1,@6162 2320,0,4 2325,1,@6190 2343,1,@6204 2368,1,@6205 2385,0,0 2400,0,0 2405,0,128 2412,1,@4897 2438,1,@6189 2460,0,128 2497,0,1 2504,1,@6206 2518,0,1 2525,0,0 2541,0,@12174 2565,1,@6207 2601,0,3 2611,0,0 2625,1,@6213 2669,0,@10755 2680,0,0 2685,0,@12180 2694,1,@6188 2707,1,@6217 2745,0,5 2750,0,0 2755,1,@6200 2763,0,@12184 2768,0,4 2773,1,@6190 2788,1,@6219 2807,0,7 2814,0,6 2847,0,@10755 2859,0,@11525 2868,1,@6188 2884,0,7 2891,0,6 2899,0,@11525 2908,1,@6208 2941,0,@12185 2950,1,@6188 3019,0,@12186 3028,1,@6188 3080,0,@12187 3089,1,@6188 3136,0,@12188 3145,1,@6188 3220,0,@12189 3229,1,@6188 3278,0,26 3283,0,0 3288,1,@6200 3296,0,2 3314,0,2 3319,0,0 3324,1,@5527 3350,0,1 3355,1,@4895 3396,1,@6162 3401,0,4 3406,1,@6190 3421,1,@6220 3438,0,2 3452,0,@11574 3471,0,2 3495,0,2 3500,1,@5618 3527,0,1 3534,0,0 3557,0,1 3564,0,0 3574,0,1 3581,0,0 3610,0,2 3615,1,@4895 3635,0,@12190 3644,1,@6213 3661,0,0 3672,0,0 3681,1,@6207 3702,1,@6221 3743,0,26 3748,0,0 3753,1,@6200 3806,1,@6162 3811,0,4 3816,1,@6190 3837,1,@6222 3849,0,@12191 3858,1,@6213 3901,0,37 3911,0,@12192 3918,0,0 3923,1,@6200 3944,0,@12194 3949,0,0 3954,1,@6200 3962,0,2 3980,0,2 3985,0,0 3990,1,@5527 4016,0,1 4021,1,@4895 4062,1,@6162 4067,0,4 4072,1,@6190 4087,1,@6223 4106,0,0 4121,0,0 4126,0,128 4131,1,@4897 4156,1,@6189 4180,0,128 4208,0,@12194 4213,0,0 4218,1,@6200 4271,1,@6162 4276,0,4 4281,1,@6190 4302,1,@6224 4307,0,@12195 4312,0,0 4317,1,@6200 4342,1,@6162 4392,0,0 4413,1,@6225 4469,0,@12182 4478,1,@6188 4521,0,40 4531,0,@12192 4538,0,0 4543,1,@6200 4551,0,@12196 4556,0,0 4561,1,@6200 4578,0,171 4594,0,170 4610,0,165 4626,0,164 4633,0,166 4666,0,0 4678,0,0 4685,0,0 4690,1,@6226 4711,1,@6227 4742,0,7 4754,0,5 4761,0,4 4769,0,@12197 4778,1,@6208 4788,0,7 4800,0,5 4807,0,4 4813,0,@11351 4818,1,@6208 4851,0,0 4867,1,@6228 4883,0,7 4895,0,5 4902,0,4 4910,0,@12198 4919,1,@6208 4952,0,2 4966,0,@11574 4987,0,2 5012,0,2 5019,1,@5618 5048,0,1 5055,0,0 5078,0,1 5085,0,0 5095,0,1 5102,0,0 5131,0,2 5138,1,@4895 5206,0,@12199 5211,1,@6188 5268,1,@6162 5273,0,4 5278,1,@6190 5299,1,@6229 5308,0,@12200 5363,0,@12199 5368,1,@6188 5376,0,2 5394,0,2 5399,0,0 5404,1,@5527 5430,0,1 5435,1,@4895 5476,1,@6162 5481,0,4 5486,1,@6190 5501,1,@6230 5571,0,@12203 5580,1,@6188 5633,0,@12204 5642,1,@6188 5654,0,1 5661,0,0 5696,0,25 5767,1,@6188 5780,0,@12205 5816,0,@12208 5835,0,@12211 5879,0,@12214 5884,1,@6188 5909,1,@6162 5959,0,0 5980,1,@6231 6041,0,@12191 6050,1,@6188 6093,0,@10755 6102,0,@12215 6107,1,@6188 6147,0,0 6162,1,@6232 6173,0,@10068 6206,0,1 6213,0,0 6220,0,0 6235,0,@10762 6262,0,1 6269,0,0 6276,0,0 6291,0,@10071 6318,0,1 6325,0,0 6332,0,0 6347,0,@10166 6372,0,1 6379,0,0 6386,0,0 6400,0,@11525 6405,0,0 6410,1,@6200 6431,0,@12153 6441,0,3 6458,0,0 6483,0,@12216 6488,0,4 6493,1,@6190 6546,1,@6233 6555,0,@12215 6560,0,0 6565,1,@6200 6582,0,@12153 6592,0,3 6609,0,0 6664,0,@10071 6677,1,@6234 6686,0,@12217 6691,0,0 6696,1,@6200 6701,1,@6235 6724,0,@12182 6732,0,2 6737,1,@6208 6749,0,@10423 6754,0,0 6759,1,@6200 6767,0,@12218 6772,0,4 6777,1,@6190 6792,1,@6236 6804,0,@10755 6817,0,0 6822,0,@12182 6830,0,@12219 6835,1,@6188 6840,0,@10423 6845,0,0 6850,1,@6200 6858,0,@12184 6863,0,4 6868,1,@6190 6883,1,@6237 6891,0,@12221 6896,0,0 6901,1,@6200 6913,0,@6187 6955,0,1 6962,0,0 6969,0,2 6976,0,3 6983,0,6 6990,0,7 6997,0,4 7004,0,5 7018,0,@12150 7028,0,0 7091,0,0 7099,0,2 7117,0,2 7122,0,0 7127,1,@5527 7153,0,1 7158,1,@4895 7199,1,@6162 7204,0,4 7209,1,@6190 7227,1,@6238 7252,1,@6239 7268,0,@6187 7306,0,1 7313,0,0 7320,0,2 7327,0,3 7334,0,6 7341,0,7 7348,0,4 7355,0,5 7388,0,@10755 7400,0,@12221 7409,1,@6188 7422,0,@6187 7460,0,1 7467,0,0 7474,0,2 7481,0,3 7488,0,6 7495,0,7 7502,0,4 7509,0,5 7525,0,@11162 7530,0,0 7535,1,@6200 7540,0,3 7611,0,0 7626,1,@6240 7634,0,@12222 7639,0,0 7644,1,@6200 7649,0,3 7666,0,0 7721,0,0 7736,1,@6241 7744,0,@12223 7778,0,@12224 7783,0,0 7788,1,@6200 7793,0,3 7810,0,5 7861,0,0 7879,1,@6242 7887,0,17 7896,1,@6243 7908,0,@12224 7913,0,0 7918,1,@6200 7923,0,3 7940,0,4 7988,0,0 8006,1,@6244 8015,0,0 8034,1,@6245 8039,0,@12226 8073,0,@12224 8078,0,0 8083,1,@6200 8088,0,3 8105,0,5 8153,0,0 8168,1,@6246 8173,0,@12227 8205,0,@12224 8210,0,0 8215,1,@6200 8220,0,3 8237,0,5 8285,0,0 8303,1,@6247 8311,0,@12224 8316,0,0 8321,1,@6200 8326,0,3 8343,0,4 8391,0,0 8409,1,@6248 8424,1,@6249 8429,0,@12222 8434,0,0 8439,1,@6200 8447,0,0 8464,0,0 8515,0,0 8523,0,2 8541,0,2 8546,0,0 8551,1,@5527 8577,0,1 8582,1,@4895 8623,1,@6162 8628,0,4 8633,1,@6190 8651,1,@6250 8670,1,@6251 8685,0,@12224 8690,0,0 8695,1,@6200 8700,0,3 8717,0,0 8772,0,0 8787,1,@6252 8811,0,@12224 8818,0,@12222 8864,1,@6188 8903,0,@10755 8916,0,@12228 8925,1,@6188 8930,0,@12229 8935,0,0 8940,1,@6200 8945,1,@6253 8961,0,3 8968,0,2 8984,0,@12222 8989,0,0 8994,1,@6200 8999,0,3 9070,0,0 9085,1,@6254 9112,0,@12224 9119,0,@12222 9129,0,3 9136,0,2 9181,1,@6188 9198,0,@12222 9222,0,@12231 9246,0,@12232 9265,0,@12233 9289,0,@12224 9294,0,0 9299,1,@6200 9304,0,3 9372,0,0 9387,1,@6255 9438,0,2 9483,0,-4 9488,0,@12185 9497,1,@6188 9502,0,@12234 9512,0,0 9539,0,@12237 9567,0,@12182 9575,0,4 9580,1,@6208 9592,0,@12240 9597,0,0 9602,1,@6200 9610,0,@12218 9615,0,4 9620,1,@6190 9635,1,@6256 9647,0,@10755 9660,0,0 9665,0,@12182 9673,0,@12219 9678,1,@6188 9683,0,@12240 9688,0,0 9693,1,@6200 9701,0,@12184 9706,0,4 9711,1,@6190 9726,1,@6257 9769,0,26 9774,0,0 9779,1,@6200 9787,0,2 9805,0,2 9810,0,0 9815,1,@5527 9841,0,1 9846,1,@4895 9887,1,@6162 9892,0,4 9897,1,@6190 9907,0,@12168 9916,1,@6208 9924,0,@12184 9929,0,4 9934,1,@6190 9952,1,@6258 9974,1,@6259 9999,1,@6260 10019,0,@12241 10043,0,0 10058,0,0 10063,0,128 10069,1,@4897 10096,1,@6189 10121,0,128 10152,0,@12244 10157,1,@6213 10210,1,@6162 10215,0,4 10220,1,@6190 10241,1,@6261 10249,0,@12091 10254,1,@6213 10279,1,@6162 10329,0,0 10350,1,@6262 10411,0,@12245 10420,1,@6188 10433,0,@12245 10442,1,@6213 10453,0,@11525 10461,0,3 10466,1,@6208 10471,0,@12181 10476,0,@10755 10485,0,@12189 10490,0,4 10495,1,@6188 10503,0,@12182 10508,0,0 10513,1,@6200 10518,0,0 10535,0,4 10586,0,0 10604,1,@6263 10619,1,@6264 10669,0,@9958 10675,1,@4895 10690,0,@10755 10703,0,@12185 10711,0,@11956 10716,1,@6188 10724,0,@11957 10729,0,0 10738,1,@6207 10751,0,0 10756,0,@12029 10761,1,@6200 10774,0,@9455 10788,0,@12246 10793,0,0 10798,1,@6200 10853,0,0 10899,1,@6265 10904,0,0 10909,0,@10093 10914,1,@6200 10919,0,@12240 10924,1,@6191 10932,0,@12184 10937,0,4 10942,1,@6190 11048,0,@12247 11057,1,@6188 11073,0,@12247 11082,1,@6213 11087,0,@12248 11152,0,44 11162,0,@12160 11174,0,@12159 11186,0,@12159 11198,0,@12159 11205,0,@12157 11216,0,@12164 11228,0,@12164 11240,0,@12164 11252,0,@12164 11259,0,@12164 11265,1,@6191 11285,0,@12150 11308,0,@12153 11318,0,3 11386,0,0 11435,1,@6266 11460,1,@6267 11506,0,44 11511,0,0 11516,1,@6200 11537,0,@12150 11547,0,0 11614,0,0 11622,0,2 11640,0,2 11645,0,0 11650,1,@5527 11676,0,1 11681,1,@4895 11722,1,@6162 11727,0,4 11732,1,@6190 11750,1,@6268 11775,1,@6269 11824,0,44 11870,1,@6188 11879,0,@12251 11939,0,0 11948,0,0 11954,0,@10089 11959,1,@6191 11979,0,@12150 12002,0,@12153 12012,0,3 12080,0,0 12123,0,@12164 12130,0,@12164 12135,1,@6270 12156,1,@6271 12172,0,@12157 12178,0,@12157 12183,1,@6272 12210,0,@12254 12217,0,@12255 12262,1,@6188 12291,1,@6273 6188:D3,2376|3b650c7305ff552ccd0989df506a016a016a018b742420f7c6010000000f85a30000008b7424208b368b168b760483ff01750c83fa0b7407b901000000eb7ab80100000081e8000100007002eb15b801000000bb01010000575256e828e5f2ff5e5a5fa801740ef7c70100000074063bc77f16eb1689fb575256e8dd0800005e5a5f89c183f9017e02eb22f7c701000000740a81ff010100007d12eb170fb64fff8d0c4d0100000083f9237407b903000000eb05b905000000890c248954240489742408eb18beb40867b18b168914248b5604895424048b7608897424088b34248b542404ff7424086a016a018b4c24288b0983f90775148b4c24288b4904890c24c744240407000000eb6e8b4c24288b0983f90575148b4c24288b4904890c24c744240405000000eb4f8b4c24288b0983f90375148b4c24288b4904890c24c744240403000000eb308b4c24288b0983f90175148b4c24288b4904890c24c744240401000000eb11b9c40867b18b19891c248b4904894c24048b0c24ff7424048b01ff710483fa097502eb1383f8097402eb0c8b0c2483f9030f85ca0000008b4c242c83f90f760e8d642424b8d00867b18b5d04ff2383fe077507b907000000eb1d83fe037507b905000000eb1183fe057507b903000000eb05b901000000c1e10683e93f81e1ff0100008b5c242c8d1cddf9ffffff81e3ff0100000bcb83c9098b5c2404c1e30683eb3f81e3ff0100008d04c5f9ffffff81e0ff0100000bd80bd38b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c743040100000089138b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890ae9970000008b4c242c83f90f760e8d642424b8d00867b18b5d04ff2383fa0f760e8d642424b8140967b18b5d04ff2383fe077507b907000000eb1d83fe037507b905000000eb1183fe057507b903000000eb05b901000000c1e10683e93f81e1ff0100008b5c242c8d1cddf9ffffff81e3ff0100000bcb0bca8b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a5283fe03753ef7c701000000741ed1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb0789f8e868a2ffffbb09000000e84a06000089c7e99700000083fe057549f7c701000000740489feeb1289f8e83fa2ffff89c78b3f8d347d0100000081e6ff0100008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb498b74243883fe01753bf7c701000000741ed1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb0789f8e8d3a1ffffbb09000000e8b505000089c7eb05bf01000000578b7c24288b3789f2b9f87b33b181c1f60300008d4cb1fcffe1e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9d9000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9a0000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e93f000000909090e973000000909090e972000000909090e90b000000909090e903000000909090bf01000000eb5dbf840967b1eb56bf900967b1eb4fbf9c0967b1eb4889ff8b7f0483ff0d7507bfa80967b1eb2983ff137507bf9c0967b1eb1d83ff037507bf9c0967b1eb1183ff057507bf9c0967b1eb05bf840967b1eb0cbf840967b1eb05bfa80967b1578b7c242c89d683fa33752989ff8b7f0483ff037507bf03000000eb05bf0100000083ff03750e8d642430b8b40967b18b5d04ff238b7c243483ff037502eb148b7c241c83ff037502eb098b7c240c83ff03755b8b7c243483ff037507ba09000000eb05ba0100000081ca810000008b7c240c83ff037507bf05000000eb05bf010000000bd70b54241c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008917eb05bf01000000578b7c2430baf87b33b181c2ac0600008d54b2fcffe2e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e969010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e910010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e7000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e99e000000909090e99d000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e954000000909090e988000000909090e987000000909090e90b000000909090e903000000909090bf01000000eb72bf200a67b1eb6bbf200a67b1eb64bf200a67b1eb5dbf200a67b1eb56bf200a67b1eb4fbf200a67b1eb4889ff8b7f0483ff0d7507bf200a67b1eb2983ff137507bf200a67b1eb1d83ff037507bf200a67b1eb1183ff057507bf200a67b1eb05bf200a67b1eb0cbf200a67b1eb05bf200a67b1578b442434e86d01000089c7578b7c241089fb83ff0175068b7c2414eb0b8b442414e84806000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175035beb0e8b0424e87406000089c38d64240483fb0175035beb0e8b0424e8c206000089c38d64240483fb0175075883c42cc21000588b7c242c897c243c83c43ce903070000f40000|@12166,1,@1368|57,0,0 64,0,0 79,0,0 84,0,128 92,1,@4897 123,1,@6189 149,0,128 174,0,1 181,0,2 199,0,@12148 262,0,3 293,0,2 324,0,1 355,0,0 362,0,@12149 430,0,@12150 445,0,3 457,0,2 469,0,1 476,0,0 576,0,0 632,0,@12150 651,0,@12153 666,0,3 678,0,2 690,0,1 697,0,0 763,0,0 816,1,@6162 821,0,4 826,1,@6190 857,1,@6162 907,0,0 965,1,@6162 970,0,4 975,1,@6190 984,0,0 998,0,@6188 1407,0,0 1414,0,@12157 1421,0,@12158 1428,0,@12159 1445,0,@12160 1457,0,@12159 1469,0,@12159 1481,0,@12159 1488,0,@12157 1495,0,@12157 1502,0,@12160 1529,0,1 1536,0,0 1550,0,@12161 1600,0,4 1607,0,0 1627,0,2 1634,0,0 1673,0,0 1682,0,0 1692,0,@6188 2101,0,0 2108,0,@12164 2115,0,@12164 2122,0,@12164 2129,0,@12164 2136,0,@12164 2143,0,@12164 2160,0,@12164 2172,0,@12164 2184,0,@12164 2196,0,@12164 2203,0,@12164 2210,0,@12164 2217,0,@12164 2227,1,@6191 2256,1,@6192 2312,1,@6193 2334,1,@6194 2369,1,@6195 6189:D3,24|b92c7346b48b0989e78b651883ec405350ffd189fcc3f400|@12147,1,@1361|1,0,@19849 6190:D3,136|3b650c7305ff552ccd0983fb017506b801000000c38b3089f78d34750100000081e6ff01000056c1ef088b45008d40f83b45087305ff5528cd08894500c740fc01000001893883eb02710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@12156,1,@1362|16,0,0 80,0,@9455 6191:D3,1252|3b650c7305ff552ccd018b38be1c8633b181c61d0000008d74befcffe6e983010000909090e9da010000909090e9d8010000909090e9d6010000909090e9d4010000909090e970020000909090e90c030000909090e90e030000909090e90c030000909090e90a030000909090e908030000909090e906030000909090e904030000909090e902030000909090e900030000909090e9fe020000909090e9fc020000909090e9fa020000909090e9f8020000909090e9f6020000909090e9f4020000909090e9f2020000909090e9f0020000909090e9ee020000909090e9ec020000909090e9ea020000909090e9e8020000909090e9f0020000909090e9ee020000909090e9ec020000909090e9ea020000909090e9e8020000909090e9e6020000909090e9e4020000909090e9e2020000909090e9e0020000909090e9de020000909090e9dc020000909090e9e4020000909090e9e2020000909090e9e0020000909090e9e8020000909090e9e6020000909090e9e4020000909090e9e2020000909090e93e030000909090e93c030000909090e93a030000909090e9380300009090908b78048b700883ff057507bf0f000000eb3583ff0b7507bf0d000000eb2983ff097507bf0b000000eb1d83ff037507bf09000000eb1183ff077507bf03000000eb05bf010000008d3cfdf9ffffff81e7ff0100008d4437ff81e0ff010000c3b8d1010000c3b833010000c3b855000000c38b780489feba1c8633b181c22c0200008d5432ffffe2eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb5deb48eb60b80f000000eb5eb805000000eb57b809000000eb50b81f000000eb49b81b000000eb42b819000000eb3bb81d000000eb34b80d000000eb2db807000000eb26b80b000000eb1f83ff157507b803000000eb05b801000000eb0cb817000000eb05b81500000081c0e000000081e0ff010000c38b780489feba1c8633b181c2d00200008d5432ffffe2eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb5deb48eb60b80f000000eb5eb805000000eb57b809000000eb50b81f000000eb49b81b000000eb42b819000000eb3bb81d000000eb34b80d000000eb2db807000000eb26b80b000000eb1f83ff157507b803000000eb05b801000000eb0cb817000000eb05b81500000081c00001000081e0ff010000c38b400481c8b1010000c3b803010000c3b807010000c3b801010000c3b8a3010000c3b883010000c3b8a7010000c3b8ef010000c3b8ed010000c3b8ff010000c3b8e9010000c3b85f010000c3b8d3000000c3b8d7000000c3b8d3010000c3b8d7010000c3b81b010000c3b883010000c3b88d010000c3b811010000c38b400481c07001000081e0ff010000c3b88f010000c3b817010000c3b817010000c3b813010000c3b813010000c3b813010000c3b86d010000c3b86f010000c3b821010000c3b81f010000c38b400481c0b000000081e0ff010000c3b8d1000000c3b8d5000000c38b400481c0a000000081e0ff010000c3b8e7010000c3b887010000c3b885010000c38b7804be1c8633b181c6780400008d743effffe6eb12eb16eb1aeb1eeb22eb26eb2aeb2eeb32eb36b8b1000000c3b8a9000000c3b85d000000c3b8bd000000c3b8b5000000c3b821000000c3b8b5000000c3b8b3000000c3b8b9000000c3b8af000000c3b823000000c3b823000000c3b851010000c3b80f010000c3f4000000|@12165,1,@1363|13,0,@6191 433,0,7 445,0,6 457,0,5 469,0,4 481,0,1 488,0,0 517,0,232 523,0,153 529,0,42 540,0,@6191 585,0,7 592,0,2 599,0,4 606,0,15 613,0,13 620,0,12 627,0,14 634,0,6 641,0,3 648,0,5 660,0,1 667,0,0 674,0,11 681,0,10 704,0,@6191 749,0,7 756,0,2 763,0,4 770,0,15 777,0,13 784,0,12 791,0,14 798,0,6 805,0,3 812,0,5 824,0,1 831,0,0 838,0,11 845,0,10 873,0,129 879,0,131 885,0,128 891,0,209 897,0,193 903,0,211 909,0,247 915,0,246 921,0,255 927,0,244 933,0,175 939,0,105 945,0,107 951,0,233 957,0,235 963,0,141 969,0,193 975,0,198 981,0,136 1003,0,199 1009,0,139 1015,0,139 1021,0,137 1027,0,137 1033,0,137 1039,0,182 1045,0,183 1051,0,144 1057,0,143 1079,0,104 1085,0,106 1107,0,243 1113,0,195 1119,0,194 1128,0,@6191 1165,0,88 1171,0,84 1177,0,46 1183,0,94 1189,0,90 1195,0,16 1201,0,90 1207,0,89 1213,0,92 1219,0,87 1225,0,17 1231,0,17 1237,0,168 1243,0,135 6192:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1364| 6193:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1365| 6194:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1366| 6195:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1367| 6196:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8780a67b1c3f4|@10825,1,@1369|66,0,@12167 6197:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1370| 6198:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1371| 6199:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1372| 6200:D3,1168|3b650c7305ff552ccd09f6c301750ab88c0a67b18b5d04ff238b3089f7ba2c8e33b181c22e0000008d54b2fcffe2e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9d9000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9a0000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e93f000000909090e971000000909090e970000000909090e90b000000909090e903000000909090be01000000eb5bbe840967b1eb54be900967b1eb4dbe9c0967b1eb468b700483fe0d7507bea80967b1eb2983fe137507be9c0967b1eb1d83fe037507be9c0967b1eb1183fe057507be9c0967b1eb05be840967b1eb0cbe840967b1eb05bea80967b156be2c8e33b181c62a0200008d74befcffe6e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e969010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e910010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e7000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e99e000000909090e99d000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e954000000909090e986000000909090e985000000909090e90b000000909090e903000000909090bf01000000eb70bf200a67b1eb69bf200a67b1eb62bf200a67b1eb5bbf200a67b1eb54bf200a67b1eb4dbf200a67b1eb468b780483ff0d7507bf200a67b1eb2983ff137507bf200a67b1eb1d83ff037507bf200a67b1eb1183ff057507bf200a67b1eb05bf200a67b1eb0cbf200a67b1eb05bf200a67b157e8c1f3ffff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175035beb0e8b0424e84000000089c38d64240483fb017507bb01000000eb0cb801000000e88800000089c383fb01750258c358e9dd000000f4|@12172,1,@1376|16,0,@12169 30,0,@6200 439,0,0 446,0,@12157 453,0,@12158 460,0,@12159 475,0,@12160 487,0,@12159 499,0,@12159 511,0,@12159 518,0,@12157 525,0,@12157 532,0,@12160 538,0,@6200 947,0,0 954,0,@12164 961,0,@12164 968,0,@12164 975,0,@12164 982,0,@12164 989,0,@12164 1004,0,@12164 1016,0,@12164 1028,0,@12164 1040,0,@12164 1047,0,@12164 1054,0,@12164 1061,0,@12164 1067,1,@6191 1102,0,0 1120,1,@6201 1136,0,0 1143,0,0 1148,1,@6202 1163,1,@6203 6201:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1373| 6202:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1374| 6203:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1375| 6204:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1377| 6205:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1378| 6206:D3,44|b94c7346b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@12173,1,@1379|1,0,@19850 6207:D3,504|3b650c7305ff552ccd0989c789deb80100000081e8000100007002eb13b801000000bb010100005756e84eccf2ff5e5fa80174138b542404f6c201740a8b5424043bc27f16eb168b5c24045756e8feefffff5e5f89c283fa017e02eb328b542404f6c20174118b54240481fa010100007d1de9c50000008b5424040fb652ff8d14550100000083fa230f84ad00000083ff057507bf0f000000eb3583ff0b7507bf0d000000eb2983ff097507bf0b000000eb1d83ff037507bf09000000eb1183ff077507bf03000000eb05bf010000005789f3b8840a67b1e82f01000089c7578b7c2408f7c70100000074228b7c2408d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442408e8798bffffbb09000000e85befffff89c383fb01750458c20400588b3c24897c240483c404e9f004000083ff057507bf0f000000eb3583ff0b7507bf0d000000eb2983ff097507bf0b000000eb1d83ff037507bf09000000eb1183ff077507bf03000000eb05bf010000005789f3b8a84e66b1e88200000089c7578b7c2408f7c70100000074068b7c2408eb148b442408e8e88affff89c78b3f8d3c7d0100000081e7ff0100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb01750458c20400588b3c24897c240483c404e99b040000f40000|@12178,1,@1385|15,0,0 30,0,0 35,0,128 42,1,@4897 78,1,@6189 108,0,128 149,0,7 161,0,6 173,0,5 185,0,4 197,0,1 204,0,0 212,0,@12168 217,1,@6208 275,1,@6162 280,0,4 285,1,@6190 312,1,@6211 322,0,7 334,0,6 346,0,5 358,0,4 370,0,1 377,0,0 385,0,@10341 390,1,@6208 420,1,@6162 470,0,0 497,1,@6212 6208:D3,836|3b650c7305ff552ccd09ff338b73048b1089d7b9109733b181c1240000008d4c91fcffe1e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9d9000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9a0000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e93f000000909090e971000000909090e970000000909090e90b000000909090e903000000909090ba01000000eb5bba840967b1eb54ba900967b1eb4dba9c0967b1eb468b500483fa0d7507baa80967b1eb2983fa137507ba9c0967b1eb1d83fa037507ba9c0967b1eb1183fa057507ba9c0967b1eb05ba840967b1eb0cba840967b1eb05baa80967b15283ff3375278b780483ff037507bf03000000eb05bf0100000083ff03750e8d642408b8b40967b18b5d04ff2383fe03752b81ce810000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937eb05bf0100000057e896ecffff89c78b74241083fe0f760e8d64240cb8d00867b18b5d04ff238b54240889d683fa0f760e8d64240cb8140967b18b5d04ff23ba07000000c1e20683ea3f81e2ff0100008b4c24108d0ccdf9ffffff81e1ff0100000bd10bd68b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e83800000089c38d64240483fb0175075883c404c20400588b7c2404897c240883c408e979000000f4|@12177,1,@1382|20,0,@6208 429,0,0 436,0,@12157 443,0,@12158 450,0,@12159 465,0,@12160 477,0,@12159 489,0,@12159 501,0,@12159 508,0,@12157 515,0,@12157 522,0,@12160 541,0,1 548,0,0 562,0,@12161 611,0,0 620,0,0 626,1,@6191 646,0,@12150 671,0,@12153 681,0,3 747,0,0 796,1,@6209 831,1,@6210 6209:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1380| 6210:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1381| 6211:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1383| 6212:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1384| 6213:D3,1428|3b650c7305ff552ccd09ff338b53048b7c2408ff378b7c240c8b77048b3889f9bbf89b33b181c3310000008d5cbbfcffe3e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9d9000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9a0000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e93f000000909090e971000000909090e970000000909090e90b000000909090e903000000909090bf01000000eb5bbf840967b1eb54bf900967b1eb4dbf9c0967b1eb468b780483ff0d7507bfa80967b1eb2983ff137507bf9c0967b1eb1d83ff037507bf9c0967b1eb1183ff057507bf9c0967b1eb05bf840967b1eb0cbf840967b1eb05bfa80967b15789cf83f93375278b480483f9037507b903000000eb05b90100000083f903750e8d64240cb8b40967b18b5d04ff2383fa037502eb0c83fe037407be01000000eb3c83fa037507ba09000000eb05ba0100000081ca810000000bd68b75008d76f43b75087305ff5528cd85897500c746fc02000000c7460401000000891656bef89b33b181c6ab0200008d74befcffe6e983010000909090e97b010000909090e973010000909090e972010000909090e963010000909090e969010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e910010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e7000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e99e000000909090e99d000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e954000000909090e986000000909090e985000000909090e90b000000909090e903000000909090bf01000000eb70bf200a67b1eb69bf200a67b1eb62bf200a67b1eb5bbf200a67b1eb54bf200a67b1eb4dbf200a67b1eb468b780483ff0d7507bf200a67b1eb2983ff137507bf200a67b1eb1d83ff037507bf200a67b1eb1183ff057507bf200a67b1eb05bf200a67b1eb0cbf200a67b1eb05bf200a67b157e874e5ffff89c78b74241089f183fe0f760e8d642414b8d00867b18b5d04ff238b54240c89d683fa0f760e8d642414b8140967b18b5d04ff23ba07000000c1e20683ea3f81e2ff01000089c98d0ccdf9ffffff81e1ff0100000bd10bd68b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175035beb0e8b0424e84e00000089c38d64240483fb0175035beb0e8b0424e89c00000089c38d64240483fb0175075883c408c20400588b7c2408897c240c83c40ce9dd000000f4|@12179,1,@1389|33,0,@6213 442,0,0 449,0,@12157 456,0,@12158 463,0,@12159 478,0,@12160 490,0,@12159 502,0,@12159 514,0,@12159 521,0,@12157 528,0,@12157 535,0,@12160 556,0,1 563,0,0 577,0,@12161 599,0,0 611,0,4 618,0,0 659,0,0 667,0,@6213 1076,0,0 1083,0,@12164 1090,0,@12164 1097,0,@12164 1104,0,@12164 1111,0,@12164 1118,0,@12164 1133,0,@12164 1145,0,@12164 1157,0,@12164 1169,0,@12164 1176,0,@12164 1183,0,@12164 1190,0,@12164 1196,1,@6191 1218,0,@12150 1243,0,@12153 1253,0,3 1317,0,0 1366,1,@6214 1388,1,@6215 1423,1,@6216 6214:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1386| 6215:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1387| 6216:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1388| 6217:D3,420|3b650c7305ff552ccd0989de83f8017507bb51000000eb1183f8057507bb61000000eb05bb59000000bf01000000f7c601000000754e8b0e8b56048b410483f80375138b0983c110710ab8f80466b18b5d04ff23eb028b0983f93f7207b901000000eb0e33c083c002d1e9d3e089c183c9010bcf89cf89d63b650c7305ff552ccdc8ebaa5768040c67b168c46866b16a056a01b80c0c67b1e88fd8ffff8b342489f781fe010200000f828300000089fe89f781e6ff01000089ff8d642404c1ef0883cf0181e7ff0100008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c70395010000eb6689ff89fe83ff01745489f681e6ff0100008d6424048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c747040100000089378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c7039b010000eb098d642404bb0100000083fb017501c3e916000000f400|@12183,1,@1391|18,0,40 30,0,48 37,0,44 42,0,0 75,0,@9455 94,0,0 134,0,@12181 139,0,@10755 148,0,@12182 153,1,@6188 164,0,256 231,0,0 299,0,202 355,0,0 392,0,205 403,0,0 414,1,@6218 6218:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1390| 6219:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1392| 6220:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1393| 6221:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1394| 6222:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1395| 6223:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1396| 6224:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1397| 6225:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1398| 6226:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1399| 6227:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1400| 6228:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1401| 6229:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1402| 6230:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1403| 6231:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1404| 6232:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1405| 6233:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1406| 6234:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1407| 6235:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8b83966b1c3f4|@10825,1,@1408|66,0,@10071 6236:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1409| 6237:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1410| 6238:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1411| 6239:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1412| 6240:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1413| 6241:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1414| 6242:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1415| 6243:D3,44|b9687346b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@12225,1,@1416|1,0,@19851 6244:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1417| 6245:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1418| 6246:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1419| 6247:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1420| 6248:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1421| 6249:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1422| 6250:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1423| 6251:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1424| 6252:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1425| 6253:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8c80e67b1c3f4|@10825,1,@1426|66,0,@12230 6254:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1427| 6255:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1428| 6256:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1429| 6257:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1430| 6258:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1431| 6259:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1432| 6260:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1433| 6261:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1434| 6262:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1435| 6263:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1436| 6264:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1437| 6265:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1438| 6266:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1439| 6267:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1440| 6268:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1441| 6269:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1442| 6270:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1443| 6271:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1444| 6272:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1445| 6273:D3,280|3b650c7305ff552ccd0953b8880f67b1e83bccffff89c757b8380c67b1bb09000000e88dcbffff89c757b8941067b1e81cccffff89c757b8941067b1e80fccffff89c757b8941067b1e802ccffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d6424048b7c240889fb83ff01750489c3eb07e85900000089c383fb0175035feb0e8b0424e8ab00000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c404c3f40000|@12257,1,@1448|12,0,@12240 17,1,@6191 25,0,@12184 30,0,4 35,1,@6190 43,0,@12256 48,1,@6191 56,0,@12256 61,1,@6191 69,0,@12256 74,1,@6191 109,0,0 207,1,@6274 225,1,@6275 6274:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1446| 6275:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1447| 6276:D3,932|3b650c7305ff552ccd0950538b7c241083ff017d068d642408eb588b7c241081ffffffff017d488b7c241089f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b8fffffffff3ab56ff742408ff742408bf01000000eb0e8d642408b8383066b18b5d04ff23f6442404010f85cc000000f60424010f85bc0000008b7424048b168b742404ff76048b7424048b368b4c24048b49048b1a83fb31752f8b5a048b54240c8b52fcc1e208c1ea0783ca013bda720e8d642418b8003566b18b5d04ff238b54240c897c5afeeb008b368d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb10b8b02f66b15751e831a3f2ff595f89c6f7c601000000741d8d5c37ff5a89df890c24895424043b650c7305ff552ccd80e93dffffff8d642418b8d02f66b18b5d04ff238d642408eb048d642408ff74240457ff742410ff7424086a016a01f644240c010f85ba000000f6442408010f85af0000008b7c240c8b3f8b74240cff76048b74240c8b368b54240cff72048b168d1c5501000000f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489d9eb10b8b02f66b15756e87aa2f2ff5e5f89c1f6c10174498b54240c8d540aff52ff742410ff742410ff74242c89f389f8e8c301000089c38b7424088b542404598d642408891c24894c2404895424088974240c3b650c7303ff552ce949ffffff8d64242cb8d02f66b18b5d04ff235ebf0100000083c40cf7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc457ff742414ff742404ba01000000f6442404010f85cc000000f60424010f85bc0000008b7c24048b378b7c2404ff77048b7c24048b3f8b4c24048b49048b1e83fb31752f8b5e048b7424188b76fcc1e608c1ee0783ce013bde720e8d642424b8003566b18b5d04ff238b74241889545efeeb008b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb10b8b02f66b15251e82da1f2ff595a89c7f7c701000000741d8d5c3aff5e89da890c24897424043b650c7305ff552ccd04e93dffffff8d642424b8d02f66b18b5d04ff238d642408eb048d6424083b54240475168b74241c5f893e5f897e04b80100000083c410c208003b542404760e8d642418b8a01267b18b5d04ff235e891424897424043b650c7303ff552ce9bcfdfffff40000|@12275,1,@1458|33,0,16777215 89,0,-1 105,0,0 116,0,@9964 207,0,@10015 268,0,@9958 275,1,@4895 325,0,@9960 451,0,@9958 458,1,@4895 497,1,@6277 549,0,@9960 560,0,0 637,0,0 723,0,@10015 784,0,@9958 791,1,@4895 841,0,@9960 878,0,0 899,0,@12272 6277:D3,7032|3b650c7305ff552ccd0989df8b30ba78bf33b181c21f0000008d54b2fcffe2e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b1010000909090e983010000909090e969030000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e90e060000909090e9fb000000909090e9aa060000909090e90d070000909090e9e3000000909090e9c5080000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e96a090000909090e91b000000909090e913000000909090e90b000000909090e9030000009090908b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b70048b3683fe070f85940100008b378d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e8499ef2ff5f89c6f7c6010000000f844701000089f183e908710ab8f80466b18b5d04ff238b178d14550100000083f9010f8c1a0100003bca0f87080100008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a08894a04c70201000000528b7c2410f7c701000000740b8b7c241083ff017d16eb1a8b7c24100fb67fff8d3c7d0100000083ff2374068b7c2410eb128b5c2410b8b02f66b156e8a89df2ff5e89c7f7c7010000000f848400000083ee0103fe710e8d642404b8f80466b18b5d04ff23b8010000002bc7710e8d642404b8f80466b18b5d04ff2383c001a801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8cd5effffbb09000000e8afc2ffff89c6f7c601000000750e8b16bf0100000089f1e90c170000ba100666b1e9581600008d642404b8d02f66b18b5d04ff23b8d41b66b18b5d04ff23b8800266b18b5d04ff23b8d02f66b18b5d04ff238b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b70048b48088b5424048b52fcc1e208c1ea0783ca013bca720ab8783266b18b5d04ff238b5424048b544afe8b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb10b8b02f66b15652e8629cf2ff5a5e89c7f7c7010000000f84a2020000f6c201740783fa017d12eb120fb64aff8d0c4d0100000083f9237402eb1289d3b8b02f66b15657e8269cf2ff5f5e89c2f6c2010f845f0200008b4c240cf6c101740b8b4c240c83f9017d16eb1a8b4c240c0fb649ff8d0c4d0100000083f92374068b4c240ceb168b5c240cb8b02f66b1565752e8da9bf2ff5a5f5e89c1f6c1010f84080200002bd1710ab8f80466b18b5d04ff2383c2012bd7710ab8f80466b18b5d04ff2383c2015283ff050f85b10000008b45008d40f43b45087305ff5528cd40894500c740fc02000000897004c70009000000e88cc1ffff89c28b342489f781fe01ffffff7c6c89ff89fe81ff010100007d5a89f681e6ff0100008d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b4d008d49f43b4d087305ff5528cd84894d00c741fc020000008979048911be0100000089cfe93a1300008d642404eb048d642404b8341167b18b5d04ff2383ff0d740e8d642404b8801167b18b5d04ff238b142489d781faff0000007f6789ff81fff9feffff7c5d8d6424048b45008d40f43b45087305ff5528cd40894500c740fc02000000897004c70009000000e8adc0ffff89c28b4d008d49f43b4d087305ff5528cd04894d00c741fc02000000c74104943966b18911be0100000089cfe9931100008b45008d40f43b45087305ff5528cd40894500c740fc02000000897004c7000b000000bb01000000e85fc8ffff89c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e8925bffffbb09000000e874bfffff89c383fb0175065983c404eb0e8b0424e8e314000089c18d642408f6c101750e8b11be0100000089cfe90e100000bf100666b1e9de0f0000b8d02f66b18b5d04ff23b8d02f66b18b5d04ff23b8d02f66b18b5d04ff238b48048b50088b700c8b3683fe0175768b75008d76f43b75087305ff5528cd06897500c746fc02000000895604c706010000008b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890f8b118b490457565251b8400c67b1bbffffffffe82fb5ffff89c1f6c101750e8b11be0100000089cfe9590e0000bf100666b1e9290e00008b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00ff7004ff70088b34248b3683fe01754d8d6424048b7c24108b74240857568b442408bb01000000e82e1400008d642404e8c558f2ff89c78b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00ba010000008b742404e9560c00008b70048b3683fe070f85940100008b378d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e84d98f2ff5f89c6f7c6010000000f844701000089f183e908710ab8f80466b18b5d04ff238b178d14550100000083f9010f8c1a0100003bca0f87080100008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a08894a04c70201000000528b7c2410f7c701000000740b8b7c241083ff017d16eb1a8b7c24100fb67fff8d3c7d0100000083ff2374068b7c2410eb128b5c2410b8b02f66b156e8ac97f2ff5e89c7f7c7010000000f848400000083ee0103fe710e8d642404b8f80466b18b5d04ff23b8010000002bc7710e8d642404b8f80466b18b5d04ff2383c001a801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8d158ffffbb09000000e8b3bcffff89c6f7c601000000750e8b16bf0100000089f1e9f1090000ba100666b1e93d0900008d642404b8d02f66b18b5d04ff23b8d41b66b18b5d04ff23b8800266b18b5d04ff23b8d02f66b18b5d04ff238b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b50048b7424048b76fcc1e608c1ee0783ce013bd6720ab8783266b18b5d04ff238b7424048b7456fe8b178d1c5501000000f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489d9eb10b8b02f66b15756e86996f2ff5e5f89c1f6c1010f84e800000083e908710ab8f80466b18b5d04ff238b178d14550100000083f9010f8cbd0000003bca0f87ab0000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a08894a04c7020100000052f7c601000000740783fe017d12eb140fb67eff8d3c7d0100000083ff23740489f0eb0c89f3b8b02f66b1e8dd95f2ffa801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e84057ffffbb09000000e822bbffff89c6f7c601000000750e8b16bf0100000089f1e9bd060000ba100666b1e909060000b8d41b66b18b5d04ff23b8800266b18b5d04ff23b8d02f66b18b5d04ff238b50048b7424048b76fcc1e608c1ee0783ce013bd6720ab8783266b18b5d04ff238b7424048b7456fe8b3f8d1c7d01000000f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0eb8b02f66b156e80d95f2ff5e89c7f7c7010000000f843a020000f7c601000000740783fe017d12eb120fb656ff8d14550100000083fa237402eb1089f3b8b02f66b157e8d094f2ff5f89c6f7c6010000000f84f30100008b54240cf6c201740b8b54240c83fa017d16eb1a8b54240c0fb652ff8d14550100000083fa2374068b54240ceb148b5c240cb8b02f66b15756e88394f2ff5e5f89c2f6c2010f849e0100002bf2710ab8f80466b18b5d04ff2383c6012bf7710ab8f80466b18b5d04ff2383c6015683ff050f8593000000b8c01167b1e854baffff89c28b342489f781fe01ffffff7c6c89ff89fe81ff010100007d5a89f681e6ff0100008d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b4d008d49f43b4d087305ff5528cd84894d00c741fc020000008979048911be0100000089cfe9400300008d642404eb048d642404b8341167b18b5d04ff2383ff0b740e8d642404b80c1267b18b5d04ff238b342489f781feff0000007f4989ff81fffbfeffff7c3f8d642404b8c01167b1e893b9ffff89c28b4d008d49f43b4d087305ff5528cd04894d00c741fc02000000c74104943966b18911be0100000089cfe9b7010000b8880f67b1e858b9ffff89c757f64424040174228b7c2404d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb098b442404e89b54ffffbb09000000e87db8ffff89c78b4d008d49f43b4d087305ff5528cd80894d00c741fc020000008979048b3c248939be0100000089cfeb1eb8d02f66b18b5d04ff23b8d02f66b18b5d04ff23b8d02f66b18b5d04ff23f7c70100000075288b5f0489f283c202710e8d642408b8f80466b18b5d04ff2389df89d63b650c7305ff552ccdc2ebd083fe010f8c8a00000083fe037515bf400666b18b34248b7c77fe8d642408e9aa0000008d64240889f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb18b8780566b18b5d04ff238d642408b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b3a8d3c7d010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404e8720d0000e8fd4ef2ff89c78b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f6c10175288b410489fb83c302710e8d642404b8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd383ff010f8c8100000083ff03750ebf400666b18b5457fee9ab00000089f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01773f89cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ef893abf09000000eb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f7c60100000075238b0e8b5e04d1e989f8d1e8880c0289f983c10289de89cf3b650c7305ff552ccdc4ebd58062ffbfe95dfeffff8b3a8d3c7d010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404e8cf0b0000e85a4df2ff89c78b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f6c10175288b410489fb83c302710e8d642404b8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd383ff010f8c8100000083ff03750ebf400666b18b5457fee9ab00000089f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01773f89cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ef893abf09000000eb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f7c60100000075238b0e8b5e04d1e989f8d1e8880c0289f983c10289de89cf3b650c7305ff552ccdc4ebd58062ffbfe95dfefffff7c60100000075288b5e0489d183c102710e8d642408b8f80466b18b5d04ff2389de89ca3b650c7305ff552ccdc4ebd083ea016bd206710e8d642408b8f80466b18b5d04ff2383c2018b7424148d5416ff8b742404f7c60100000075728b068b4e048b5c240c8b5bfcc1e308c1eb0783cb013bc3720e8d642408b8783266b18b5d04ff238b5c240c8b5c43fe89d083c0043bd876332bda83eb0381fbff0000007307bb03000000eb05bb0100000083fb03751589d383c30489da89ce3b650c7305ff552ccdc4eb8dbe01000000eb05be0300000083fe03751b8b3c24c707010000008d6424048b0424e8cf0a00008d642404eb218d6424048b7424108b5424085652578b44240cbb01000000e83c0c00008d642404e81f4bf2ff89c78b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbfe9effeffff8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbfe9effefffff7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c008b3a8d3c7d010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404e8b0040000e83b46f2ff89c78b7424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20c00f6c10175288b410489fb83c302710e8d642404b8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd383ff010f8c8100000083ff03750ebf400666b18b5457fee9ab00000089f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01773f89cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ef893abf09000000eb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f7c60100000075238b0e8b5e04d1e989f8d1e8880c0289f983c10289de89cf3b650c7305ff552ccdc4ebd58062ffbfe95dfefffff400|@12271,1,@1457|15,0,@6277 573,0,@9958 579,1,@4895 606,0,@9455 675,0,0 734,0,@9958 740,1,@4895 771,0,@9455 781,0,0 794,0,@9455 843,1,@6162 848,0,4 853,1,@6190 870,0,0 882,0,@9473 896,0,@9960 906,0,@9821 916,0,@9427 926,0,@9960 1000,0,@9988 1059,0,@9958 1066,1,@4895 1119,0,@9958 1126,1,@4895 1194,0,@9958 1202,1,@4895 1225,0,@9455 1242,0,@9455 1295,0,4 1300,1,@6191 1313,0,-128 1325,0,128 1372,0,0 1410,0,0 1432,0,@12260 1451,0,@12263 1467,0,127 1477,0,-132 1518,0,4 1523,1,@6191 1558,0,@10068 1565,0,0 1607,0,5 1612,0,0 1617,1,@6200 1670,1,@6162 1675,0,4 1680,1,@6190 1701,1,@6278 1719,0,0 1731,0,@9473 1741,0,@9960 1751,0,@9960 1761,0,@9960 1817,0,0 1859,0,@12185 1864,0,-1 1869,1,@6188 1883,0,0 1895,0,@9473 1977,0,0 1982,1,@6279 1991,1,@4827 2036,0,0 2105,0,@9958 2111,1,@4895 2138,0,@9455 2207,0,0 2266,0,@9958 2272,1,@4895 2303,0,@9455 2313,0,0 2326,0,@9455 2375,1,@6162 2380,0,4 2385,1,@6190 2402,0,0 2414,0,@9473 2428,0,@9960 2438,0,@9821 2448,0,@9427 2458,0,@9960 2529,0,@9988 2588,0,@9958 2595,1,@4895 2618,0,@9455 2687,0,0 2730,0,@9958 2735,1,@4895 2776,1,@6162 2781,0,4 2786,1,@6190 2803,0,0 2815,0,@9473 2825,0,@9821 2835,0,@9427 2845,0,@9960 2878,0,@9988 2937,0,@9958 2943,1,@4895 2998,0,@9958 3004,1,@4895 3074,0,@9958 3081,1,@4895 3103,0,@9455 3120,0,@9455 3143,0,@12266 3148,1,@6191 3161,0,-128 3173,0,128 3220,0,0 3258,0,0 3280,0,@12260 3299,0,@12268 3315,0,127 3325,0,-131 3336,0,@12266 3341,1,@6191 3376,0,@10068 3383,0,0 3395,0,@12240 3400,1,@6191 3453,1,@6162 3458,0,4 3463,1,@6190 3504,0,0 3513,0,@9960 3523,0,@9960 3533,0,@9960 3565,0,@9455 3605,0,@9476 3635,0,4 3656,0,16777215 3710,0,0 3719,0,4 3728,0,@9465 3742,0,@9468 3852,0,@9455 3888,0,@9476 3907,0,4 3928,0,16777215 3982,0,0 3991,0,4 4000,0,@9465 4010,0,@9468 4120,0,@9455 4156,0,@9476 4175,0,4 4196,0,16777215 4250,0,0 4259,0,4 4268,0,@9465 4278,0,@9468 4412,0,0 4445,0,0 4490,1,@6280 4495,1,@4827 4559,0,@9455 4599,0,@9476 4618,0,4 4639,0,16777215 4693,0,0 4702,0,4 4713,0,@9465 4727,0,@9468 4831,0,0 4864,0,0 4909,1,@6280 4914,1,@4827 4978,0,@9455 5018,0,@9476 5037,0,4 5058,0,16777215 5112,0,0 5121,0,4 5132,0,@9465 5146,0,@9468 5230,0,@9455 5268,0,@9455 5330,0,@9988 5363,0,127 5370,0,1 5377,0,0 5408,0,0 5415,0,1 5429,0,0 5441,1,@6281 5471,0,0 5476,1,@6282 5485,1,@4827 5586,0,@9455 5622,0,@9476 5641,0,4 5662,0,16777215 5716,0,0 5725,0,4 5734,0,@9465 5744,0,@9468 5859,0,@9455 5895,0,@9476 5914,0,4 5935,0,16777215 5989,0,0 5998,0,4 6007,0,@9465 6017,0,@9468 6094,0,@9455 6130,0,@9476 6149,0,4 6170,0,16777215 6224,0,0 6233,0,4 6242,0,@9465 6252,0,@9468 6362,0,@9455 6398,0,@9476 6417,0,4 6438,0,16777215 6492,0,0 6501,0,4 6510,0,@9465 6520,0,@9468 6654,0,0 6687,0,0 6732,1,@6280 6737,1,@4827 6801,0,@9455 6841,0,@9476 6860,0,4 6881,0,16777215 6935,0,0 6944,0,4 6955,0,@9465 6969,0,@9468 6278:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1451| 6279:D3,764|3b650c7305ff552ccd0953a8010f85880100008b30ff70048b7c240c8b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c240c8b5c77fef6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0cb8b02f66b1e83484f2ff89c7f7c7010000000f84130100008b742410f7c601000000740b8b74241083fe017d16eb1a8b7424100fb676ff8d34750100000083fe2374068b742410eb128b5c2410b8b02f66b157e8e683f2ff5f89c6f7c6010000000f84b60000002bfe710e8d642408b8f80466b18b5d04ff2383ef0357710e8d64240cb8f80466b18b5d04ff23b8c01167b1e8bba9ffff89c28b342489f781fe01ffffff7c6989ff89fe81ff010100007d5789f681e6ff0100008d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089378b4d008d49f43b4d087305ff5528cd84894d00c741fc020000008979048911be0100000089cfeb3c8d64240ceb048d64240cb8341167b18b5d04ff238d642408b8d02f66b18b5d04ff238d642408b8d02f66b18b5d04ff238d642404b801000000c20800f7c70100000075288b470489f383c302710e8d642408b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642408b8780566b18b5d04ff238d642408b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf578b5c240883c304710e8d64240cb8f80466b18b5d04ff238b7c241483c7048b74241057568b44240ce835fdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20800f40000|@12267,1,@1452|49,0,@9988 99,0,@9958 104,1,@4895 176,0,@9958 182,1,@4895 210,0,@9455 230,0,@9455 240,0,@12266 245,1,@6191 258,0,-128 270,0,128 317,0,0 355,0,0 374,0,@12260 388,0,@9960 402,0,@9960 416,0,0 446,0,@9455 486,0,@9476 505,0,4 526,0,16777215 580,0,0 589,0,4 602,0,@9465 616,0,@9468 684,0,@9455 6280:D3,256|3b650c7305ff552ccd01a8010f85e50000008b38ff70048b378b4f048b7f088b178d14550100000083fe0175093bca7505e98000000083f9017507bf100666b1eb7489c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f878200000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee8d34378d7a04d1e9f3a48062ffbf89d7578b442404e840ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c38d642404b8780566b18b5d04ff23b801000000c3f40000|@10030,1,@1453|60,0,@9473 72,0,4 93,0,16777215 151,0,0 238,0,@9465 248,0,0 6281:D3,380|3b650c7305ff552ccd01a801753bff7004b8c01167b1e875a6ffff89c28b4d008d49f43b4d087305ff5528cd04894d00c741fc02000000c74104943966b18911be0100000089cfeb06b801000000c3f7c70100000075288b470489f383c302710e8d642404b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf578b442404e8b1feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3f4000000|@10030,1,@1454|18,0,@12266 23,1,@6191 58,0,@10068 65,0,0 74,0,0 102,0,@9455 142,0,@9476 161,0,4 182,0,16777215 236,0,0 245,0,4 258,0,@9465 272,0,@9468 6282:D3,644|3b650c7305ff552ccd0953a8010f85620200008b30ff70048b7c24108b7ffcc1e708c1ef0783cf013bf7720e8d642408b8783266b18b5d04ff238b7c24108b4477fe8b7c240c8b3f8d347d010000008b54240489d783fa010f8c0902000089ff89fa83c70a3bfe0f87ec0100008b7c240c8b3f8d3c7d0100000089d289d683fa01750b83ff0b75068b5c240ceb57bf070000008d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd41895d00d1ef897bfcc643ff41c7430800000000c7030500000089f683c6088b7c240cb90b000000d1ee8d34378d7b04d1e9f3a48063ffbf8b7c241457e8a901000089c7578b54240889d383c20a710e8d64240cb8f80466b18b5d04ff238b7c24108b3f8d347d0100000083fa010f8c2a01000089d783c7063bfe0f870f0100008b7c24108b3f8d3c7d0100000083fa01750b83ff0775068b7c2410eb6dbe050000008d3c7502000000f7df037d003b7d0872053b7d007205ff5528cd0c897d00d1ee8977fcc647ff41c7470400000000c7070300000083c2088b74241089d1d1e90fb60c0e884f048b74241089d1d1e90fb64c0e01884f058b742410d1ea0fb64c1602884f068067ffbf5789db83c310710e8d642410b8f80466b18b5d04ff238b7c241c83c7108b7424188b5424145756528b442414e817feffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20c008d64240cb8d41b66b18b5d04ff238d64240cb8800266b18b5d04ff238d642408b8d41b66b18b5d04ff238d642408b8800266b18b5d04ff238d642404b801000000c20c00f40000|@12267,1,@1456|49,0,@9988 143,0,3 189,0,0 195,0,2 209,0,5 235,1,@6283 258,0,@9455 332,0,2 378,0,0 384,0,1 453,0,@9455 578,0,@9821 592,0,@9427 606,0,@9821 620,0,@9427 634,0,0 6283:D3,860|3b650c7305ff552ccd0989c789da8b328d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb10b8b02f66b15752e8117cf2ff5a5f89c6f7c6010000000f8476010000f7c701000000740783ff017d12eb120fb64fff8d0c4d0100000083f9237402eb1289fbb8b02f66b15256e8d27bf2ff5e5a89c7f7c7010000000f842d0100008b4c2404f6c101740b8b4c240483f9017d16eb1a8b4c24040fb649ff8d0c4d0100000083f92374068b4c2404eb168b5c2404b8b02f66b1525657e8837bf2ff5f5e5a89c1f6c1010f84d600000089f82bc1710ab8f80466b18b5d04ff2383c0012bc6710ab8f80466b18b5d04ff2383c00183ee08710ab8f80466b18b5d04ff238b3a8d3c7d0100000083fe010f8c870000003bf777798b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070100000057a801742089c7d1ff8b45008d40f83b45087303ff5528894500c740fc010000018938eb05e8683cffffbb09000000e84aa0ffff89c6f7c601000000750e8b16bf0100000089f1e9c5000000ba100666b1eb32b8d41b66b18b5d04ff23b8800266b18b5d04ff23b8d02f66b18b5d04ff23b8d02f66b18b5d04ff23b8d02f66b18b5d04ff238b3a8d3c7d010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404e874f8ffff8b3c24897c240483c404e9f539f2fff6c10175288b410489fb83c302710e8d642404b8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd383ff010f8c8100000083ff03750ebf400666b18b5457fee9ab00000089f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01773f89cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ef893abf09000000eb1c8d642404b8780566b18b5d04ff238d642404b8b00566b18b5d04ff23f7c60100000075238b0e8b5e04d1e989f8d1e8880c0289f983c10289de89cf3b650c7305ff552ccdc4ebd58062ffbfe97bfefffff4000000|@12270,1,@1455|56,0,@9958 63,1,@4895 119,0,@9958 126,1,@4895 197,0,@9958 205,1,@4895 230,0,@9455 247,0,@9455 265,0,@9455 330,0,0 372,1,@6162 377,0,4 382,1,@6190 399,0,0 411,0,@9473 418,0,@9821 428,0,@9427 438,0,@9960 448,0,@9960 458,0,@9960 510,0,0 543,0,0 588,1,@6280 603,1,@4827 627,0,@9455 667,0,@9476 686,0,4 707,0,16777215 761,0,0 770,0,4 781,0,@9465 795,0,@9468 6284:D3,2736|3b650c7305ff552ccd098b38be24e733b181c61d0000008d74befcffe6e9bb010000909090e9b3010000909090e9ab010000909090e9aa010000909090e95e020000909090e993010000909090e92f030000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9d8030000909090e95b010000909090e953010000909090e94b010000909090e974040000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e934050000909090e9e3000000909090e9f5050000909090e9d3000000909090e9cb000000909090e92d060000909090e906070000909090e9b3000000909090e9ab000000909090e906070000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e997070000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913080000909090e90b000000909090e9030000009090908b442404c208008b78108b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e8c976f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b780c8b1789d683fa010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e8fd75f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff2389f783ff0575078b442404c208008b442404c208008b78048b3783fe010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e81e75f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b442404c208008b78088b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e85b74f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b7804be680e67b1dd07dc1edfe089c681e60044000081f6004000007502eb38be980e67b1dd07dc1edfe089c681e60044000081f6004000007502eb1bbea40e67b1dd07dc1edfe089c681e60044000081f60040000075078b442404c208008b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e84373f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b78048b3783fe010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e87972f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b442404c208008b74240883c6028b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704181367b189378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c208008b78088b1789d683fa010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e85671f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff2389f783ff0575078b442404c208008b442404c208008b78088b3f83ff0575078b442404c208008b442404c208008b78048b1789d683fa010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e85d70f2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff2389f783ff0575078b442404c208008b442404c208008b78088b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e88c6ff2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b780c8b3783fe010f85bc0000008b7f048b338d1c7501000000f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489daeb0eb8b02f66b157e8c26ef2ff5f89c2f6c20174738b7424088d7416ff83ee088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20800b8d02f66b18b5d04ff238b442404c20800f400|@12277,1,@1459|13,0,@6284 529,0,@9958 535,1,@4895 589,0,1 663,0,@9960 733,0,@9958 739,1,@4895 793,0,1 867,0,@9960 956,0,@9958 962,1,@4895 1016,0,2 1090,0,@9960 1151,0,@9958 1157,1,@4895 1211,0,1 1285,0,@9960 1298,0,@12223 1327,0,@12226 1356,0,@12227 1431,0,@9958 1437,1,@4895 1491,0,1 1565,0,@9960 1633,0,@9958 1639,1,@4895 1693,0,2 1767,0,@9960 1819,0,@12276 1924,0,@9958 1930,1,@4895 1984,0,1 2058,0,@9960 2173,0,@9958 2179,1,@4895 2233,0,1 2307,0,@9960 2382,0,@9958 2388,1,@4895 2442,0,1 2516,0,@9960 2584,0,@9958 2590,1,@4895 2644,0,1 2718,0,@9960 6285:D3,1088|3b650c7305ff552ccd09508b3389f783fe070f85d00100008b43048b7c240cff378b7c24108b74240c5756bb01000000e81f0400005b2b1c2483eb07f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8ba6df2ffa801741ed1f88b7d008d7ff83b7d087303ff5528897d00c747fc010000018907eb07e81f2fffff89c78b0f89cac1e91889ce8d34750100000081e6ff0100005689d3c1ea1089d68d14750100000081e2ff01000089dec1eb0889d98d1c4d0100000081e3ff01000089f78d0c7d0100000081e1ff0100008b7c240c8b7ffcc1e708c1ef0783cf018d34bdfdffffff8b7c24043bfe0f83da0000008b7c240cd1e98b742404d1ee880c378b74240483c6028b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83970000008b7c240c89d9d1e9d1ee880c378b74240483c6048b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf7735a8b7c240c89d1d1e9d1ee880c378b74240483c6068b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf7731d8b7c240c8b0c24d1e98d642404d1ee880c37b80100000083c404c208008d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff2383ff090f85420200008b7b048b74240cff36f7c701000000740e8d642408b81c4266b18b5d04ff238b77fcc1e608c1ee0783ce018d1cb5fdffffff83fb110f85f90100000fb677ff8d34750100000081e6ff01000083fe037507be03000000eb05be0100000083fe030f85c80100008b7424108b54240c575652b801000000e8e40500005b2b1c2483eb07f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8836bf2ffa801741ed1f88b7d008d7ff83b7d087303ff5528897d00c747fc010000018907eb07e8e82cffff89c78b0f89cac1e91889ce8d34750100000081e6ff0100005689d3c1ea1089d68d14750100000081e2ff01000089dec1eb0889d98d1c4d0100000081e3ff01000089f78d0c7d0100000081e1ff0100008b7c240c8b7ffcc1e708c1ef0783cf018d34bdfdffffff8b7c24043bfe0f83da0000008b7c240cd1e98b742404d1ee880c378b74240483c6028b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83970000008b7c240c89d9d1e9d1ee880c378b74240483c6048b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf7735a8b7c240c89d1d1e9d1ee880c378b74240483c6068b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf7731d8b7c240c8b0c24d1e98d642404d1ee880c37b80100000083c404c208008d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff238d642408b8501367b18b5d04ff238d642408eb048d642408b8801467b18b5d04ff238d642404b801000000c20800f4|@12290,1,@1463|44,0,0 49,1,@6286 93,0,@9958 98,1,@4895 137,1,@6162 422,0,0 437,0,@12279 451,0,@12279 465,0,@12279 479,0,@12279 519,0,@10189 579,0,1 586,0,0 611,0,0 616,1,@6288 660,0,@9958 665,1,@4895 704,1,@6162 989,0,0 1004,0,@12279 1018,0,@12279 1032,0,@12279 1046,0,@12279 1066,0,@12287 1080,0,0 6286:D3,936|3b650c7305ff552ccd0950538b3c2483ff09750c8d642408b801000000c20800bf0102000083ff01750e8d642408b864c766b18b5d04ff23f64424040174198b442404bf01020000d1f8d1ff99f7ff8d045501000000eb0e8b442404bb01020000e8c2e4f8ff83f8017502eb69a801741383f8017c07bf03000000eb05bf01000000eb1c0fb678ff8d3c7d0100000083ff037507bf03000000eb05bf0100000083ff037507bf03000000eb05bf0100000083ff037420a801740c89c281c2000200007002eb0cbb01020000e8fc68f2ff89c289d0eb00a801740489c2eb10e8752affff89c78b3f8d147d0100000081e2ff0100008b4d008d49f43b4d087305ff5528cd04894d00c741fc02000000c74104010000008911be0100000089cff7c70100000075288b470489f383c302710e8d642408b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642408b8780566b18b5d04ff238d642408b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b378d34750100000056be010000003b34240f82100100008d642404f64424040174178b7c240483ff017c07bf03000000eb05bf01000000eb208b7c24040fb67fff8d3c7d0100000083ff037507bf03000000eb05bf0100000083ff0375068b442404eb3fbb0102000083eb027002eb11b801020000bb03000000e8b068f2ff89c3f6442404017412f6c301740d8b4424042bc3700583c001eb098b442404e88c68f2ffbf0102000083ff01750e8d642408b8b01367b18b5d04ff23a8017442bf0102000083ffff751681f8010000807507bf03000000eb05bf01000000eb05bf0100000083f70283ff037515bf01020000d1f8d1ff99f7ff8d044501000000eb0abb01020000e89c0000005b83c3028b74240c8b542408895424088974240c83c404e9c4fcffff89f283c208d1ea0fb60c178b5424148b1a8b5424108b52fcc1e208c1ea0783ca018d1495fdffffff3bda732e8b542410d1eb880c1a8b5424148b1283c2028b4c2414891189f283c20289d63b650c7305ff552ccdc0e98dfeffff8d64240cb8501367b18b5d04ff23f4000000|@12285,1,@1461|25,0,0 33,0,256 47,0,@11574 68,0,256 93,0,256 98,1,@5618 119,0,1 126,0,0 149,0,1 156,0,0 166,0,1 173,0,0 199,0,256 204,1,@4895 223,1,@6162 273,0,0 280,0,0 309,0,@9455 349,0,@9476 368,0,4 389,0,16777215 443,0,0 452,0,4 465,0,@9465 479,0,@9468 543,0,0 577,0,1 584,0,0 611,0,1 618,0,0 634,0,256 646,0,256 651,0,1 656,1,@4897 692,1,@4897 697,0,256 711,0,@12282 725,0,256 736,0,-1073741824 743,0,1 750,0,0 757,0,0 770,0,256 791,0,256 796,1,@6287 923,0,@12279 6287:D3,44|b9807346b48b0989e78965208b651883ec3c5350ff751cffd189fc837d10017501c38b45108b5d04ff23f400|@12284,1,@1460|1,0,@19852 6288:D3,512|3b650c7305ff552ccd0950538b7c24043b3c24750c8d642408b801000000c20c008b7c24148b742404d1ee0fb63c378d147d010000008b4d008d49f43b4d087305ff5528cd04894d00c741fc02000000c74104010000008911be0100000089cff7c70100000075288b470489f383c302710e8d642408b8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd083fe010f8c8300000083fe03750ebf400666b18b7c57fee9aa00000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb1c8d642408b8780566b18b5d04ff238d642408b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbf8b378d34750100000056be010000003b3424722d8d6424048b44240483c0025b8d6424048b74240c8b5424088b4c2404894c2404895424088974240ce969feffff89f283c208d1ea0fb60c178b5424148b1a8b5424108b52fcc1e208c1ea0783ca018d1495fdffffff3bda732e8b542410d1eb880c1a8b5424148b1283c2028b4c2414891189f283c20289d63b650c7305ff552ccdc0e974ffffff8d64240cb8501367b18b5d04ff23f4|@12286,1,@1462|26,0,0 83,0,0 90,0,0 119,0,@9455 159,0,@9476 178,0,4 199,0,16777215 253,0,0 262,0,4 275,0,@9465 289,0,@9468 353,0,0 502,0,@12279 6289:D3,604|3b650c7305ff552ccd0950538b7c241083ff01750c8d642408b801000000c20800bf0102000083ff01750e8d642408b864c766b18b5d04ff23f64424040174198b442404bf01020000d1f8d1ff99f7ff8d045501000000eb0e8b442404bb01020000e8b1def8ff83f8017502eb69a801741383f8017c07bf03000000eb05bf01000000eb1c0fb678ff8d3c7d0100000083ff037507bf03000000eb05bf0100000083ff037507bf03000000eb05bf0100000083ff037420a801740c89c181c1000200007002eb0cbb01020000e8eb62f2ff89c189c8eb00a801740489c1eb10e86424ffff89c78b3f8d0c7d0100000081e1ff0100008b7c240c8b7ffcc1e708c1ef0783cf018d14bdfdffffff8b3c2489fe3bfa0f83330100008b7c240cd1e989f6d1ee880c37f64424040174178b7c240483ff017c07bf03000000eb05bf01000000eb208b7c24040fb67fff8d3c7d0100000083ff037507bf03000000eb05bf0100000083ff0375068b442404eb3fbb0102000083eb027002eb11b801020000bb03000000e8aa63f2ff89c3f6442404017412f6c301740d8b4424042bc3700583c001eb098b442404e88663f2ffbf0102000083ff01750e8d642408b8b01367b18b5d04ff23a8017442bf0102000083ffff751681f8010000807507bf03000000eb05bf01000000eb05bf0100000083f70283ff037515bf01020000d1f8d1ff99f7ff8d044501000000eb0abb01020000e896fbffff8b1c2483c3028d6424048b74240c83ee02710e8d642404b8f80466b18b5d04ff238d6424048b5424048954240489742408e9b4fdffff8d642408b8501367b18b5d04ff23f400|@12291,1,@1464|26,0,0 34,0,256 48,0,@11574 69,0,256 94,0,256 99,1,@5618 120,0,1 127,0,0 150,0,1 157,0,0 167,0,1 174,0,0 200,0,256 205,1,@4895 224,1,@6162 311,0,1 318,0,0 345,0,1 352,0,0 368,0,256 380,0,256 385,0,1 390,1,@4897 426,1,@4897 431,0,256 445,0,@12282 459,0,256 470,0,-1073741824 477,0,1 484,0,0 491,0,0 504,0,256 525,0,256 530,1,@6287 558,0,@9455 593,0,@12279 6290:D3,44|b99c7346b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@12292,1,@1465|1,0,@19853 6291:D3,432|3b650c7305ff552ccd09538b78048b1789d683fa01754d8b57048b308b7c24088b7ffcc1e708c1ef0783cf013b3c24770e8d642404b8681567b18b5d04ff238b4c24088b1c2489df895459fe89ff8d3cbdfdffffff2bfe83ef07ba09000000e9d400000089f283fe05753e8b7f048b188b7424088b76fcc1e608c1ee0783ce018d34b5fdffffff3bf3770e8d642404b8d01567b18b5d04ff238b442408576a03e81f01000058c2040089d683fa03753e8b7f048b188b7424088b76fcc1e608c1ee0783ce018d34b5fdffffff3bf3770e8d642404b8d01567b18b5d04ff238b442408576a01e8da00000058c2040089f783ff0b753f8b188b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bfb770e8d642404b8d01567b18b5d04ff238b4424088b7c2408576a01e89400000058c2040058c2040083fa01750d8b042483c0028d642404c2040089f981e1ff0100008b5c24088b5bfcc1e308c1eb0783cb018d1c9dfdffffff3bf373318b5c2408d1e989f0d1e8880c0389f9c1e90883c90189f383c30289d083e80289c289de89cf3b650c7305ff552ccdc4eb9a8d642404b8501367b18b5d04ff23f4000000|@12301,1,@1467|54,0,@12293 91,0,4 144,0,@12298 161,1,@6292 213,0,@12298 230,1,@6292 279,0,@12298 300,1,@6292 419,0,@12279 6292:D3,36|b9bc7346b48b0989e78b651883ec388b5704528b5708525350ffd189fcc20800f4000000|@12300,1,@1466|1,0,@19854 6293:D3,39764|3b650c7305ff552ccd0989c7538b07ff7704be010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc0100004089375781f8100666b17502eb238b388d3c7d0100000083ff017522bf100666b18d70048d7f0433c93bc9f3a67402eb0d8b542404b81c0f66b1ff12eb068b542404ff128b542404b8c00567b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83fe940000d1ee8b7c24080fb63c378d3c7d0100000081ffe90100000f84ca940000ff7424048b7c24048b1ff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e81c5ef2ffba803066b1bb05000000e84d5ef2ff8b1424ff128d6424048b542404b8940c66b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8341940000d1ee8b7c24080fb63c378d3c7d0100000081ffe1010000751a8b542404b84c1667b1ff128b3c248b3f83c7028b3424893eeb008b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83dc930000d1ee8b7c24080fb63c378d3c7d0100000081ffe50100007502eb1281ffe70100007502eb0881ffcd000000750f8b34248b3683c6028b14248932eb05bf01000000578b7c24048b378b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8367930000d1ee8b7c240c0fb63c378d3c7d0100000081ff81000000721981ff9f00000077118b7424048b3683c6028b5424048932eb05bf01000000578b3c2483e71183ff017507bf03000000eb05bf0100000083f702578b7c240483e70983ff017507bf03000000eb05bf0100000083f702578b7c240883e70383ff017507bf03000000eb05bf0100000083f702578b7c24148b378b7c241c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a9920000d1ee8b7c241c0fb63c378d3c7d01000000578b7c24188b3f83c7028b742418893e8b7c240c83ff037507bf05000000eb188b7c241481ffcd0000007507bf07000000eb05bf03000000578b7c240483ef0689fe81fefb0100000f83ee910000bef80034b181c6190300008d74befcffe6e9e3070000909090e927090000909090e928090000909090e929090000909090e92a090000909090e92b090000909090e92c090000909090e92d090000909090e92e090000909090e9720a0000909090e9730a0000909090e9740a0000909090e9750a0000909090e9f22f0000909090e9f32f0000909090e9f42f0000909090e9f52f0000909090e939310000909090e93a310000909090e93b310000909090e93c310000909090e93d310000909090e93e310000909090e93f310000909090e940310000909090e984320000909090e985320000909090e986320000909090e987320000909090e988320000909090e989320000909090e98a320000909090e98b320000909090e9cf330000909090e9d0330000909090e9d1330000909090e9d2330000909090e9d3330000909090e9d4330000909090e9d5330000909090e9d6330000909090e91a350000909090e91b350000909090e91c350000909090e91d350000909090e91e350000909090e91f350000909090e920350000909090e921350000909090e965360000909090e966360000909090e967360000909090e968360000909090e969360000909090e96a360000909090e96b360000909090e96c360000909090e9b0370000909090e9b1370000909090e9b2370000909090e9b3370000909090e9b4370000909090e9b5370000909090e9b6370000909090e9b7370000909090e9b8370000909090e9b9370000909090e9ba370000909090e9bb370000909090e9bc370000909090e9bd370000909090e9be370000909090e9bf370000909090e9c0370000909090e9c1370000909090e9c2370000909090e9c3370000909090e9c4370000909090e9a8380000909090e98c390000909090e9703a0000909090e9543b0000909090e9383c0000909090e91c3d0000909090e9003e0000909090e9e43e0000909090e9c83f0000909090e9ac400000909090e990410000909090e974420000909090e958430000909090e93c440000909090e920450000909090e904460000909090e905460000909090e906460000909090e907460000909090e908460000909090e909460000909090e90a460000909090e90b460000909090e90c460000909090e9c7460000909090e944480000909090e967490000909090e9504b0000909090e9514b0000909090e9524b0000909090e9534b0000909090e9544b0000909090e9334c0000909090e9124d0000909090e9f14d0000909090e9d04e0000909090e9af4f0000909090e98e500000909090e96d510000909090e94c520000909090e92b530000909090e90a540000909090e9e9540000909090e9c8550000909090e9a7560000909090e986570000909090e965580000909090e944590000909090e9195c0000909090e97d5e0000909090e97e5e0000909090e94e610000909090e94f610000909090e950610000909090e951610000909090e90f620000909090e9de660000909090e99c670000909090e99d670000909090e95f680000909090e960680000909090e922690000909090e923690000909090e973690000909090e97f690000909090e980690000909090e981690000909090e982690000909090e983690000909090e984690000909090e985690000909090e986690000909090e987690000909090e9ae690000909090e9af690000909090e9b0690000909090e9b1690000909090e9b2690000909090e9be690000909090e9bf690000909090e9c0690000909090e9c1690000909090e9c2690000909090e9c3690000909090e9e5690000909090e9076a0000909090e9296a0000909090e92a6a0000909090e94d6b0000909090e94e6b0000909090e9706b0000909090e9b06b0000909090e9b16b0000909090e9b26b0000909090e9b36b0000909090e9b46b0000909090e9b56b0000909090e9b66b0000909090e9b76b0000909090e9b86b0000909090e9b96b0000909090e9ba6b0000909090e9bb6b0000909090e9bc6b0000909090e9936d0000909090e96a6f0000909090e941710000909090e918730000909090e9ef740000909090e9c6760000909090e99d780000909090e9747a0000909090e9757a0000909090e9927a0000909090e9167c0000909090e9227c0000909090e9237c0000909090e9247c0000909090e99b7d0000909090e9a17e0000909090e9a27e0000909090e9a37e0000909090e9747f0000909090e9757f0000909090e9767f0000909090e9d37f0000909090e9d47f0000909090e9d57f0000909090e9d67f0000909090e9f37f0000909090e9f47f0000909090e911800000909090e912800000909090e913800000909090e914800000909090e915800000909090e933800000909090e951800000909090e96f800000909090e98d800000909090e9ab800000909090e9c9800000909090e9e7800000909090e905810000909090e906810000909090e907810000909090e908810000909090e909810000909090e90a810000909090e90b810000909090e90c810000909090e90d810000909090e9ab810000909090e949820000909090e94a820000909090e929830000909090e92a830000909090e92b830000909090e92c830000909090e92d830000909090e92e830000909090e92f830000909090e930830000909090e931830000909090e93d830000909090e93e830000909090e9ed850000909090e96b880000909090e96c880000909090e96d880000909090e96e880000909090e96f880000909090e970880000909090e971880000909090e9728800009090908b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e8a1e8fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707609c34b157ff742420ff74242cff74242c8b4424248b5c2410e8728f00008d64241ce9708900008d642428b8441767b18b5d04ff238d642404e9a48800008d642404e99b8800008d642404e9928800008d642404e9898800008d642404e9808800008d642404e9778800008d642404e96e8800008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e816e7fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c70708b134b157ff742420ff74242cff74242c8b4424248b5c2410e8e78d00008d64241ce9e58700008d642428b8441767b18b5d04ff238d642404e9198700008d642404e9108700008d642404e9078700008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8352250000d1ee8b7c24240fb63c378d3c7d01000000578b7c24208b3f83c7028b742420893e8b7c241c81ffcd0000000f85ec0400008b7c24208b378b7c24288b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83b9040000d1ee8b7c24280fb63c378d3c7d01000000c1ef0383cf0183e70f578b7c240481ffaf0000000f85550100008b542428b8081867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e82e50f2ffba803066b1bb05000000e85f50f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70748b134b157ff742428ff742434ff7424348b44242cbb05000000e8d08b000083c424e9420300008d642434b8780566b18b5d04ff238b7c240481ffa90000000f85550100008b542428b8181867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8c94ef2ffba803066b1bb05000000e8fa4ef2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70754b234b157ff742428ff742434ff7424348b44242cbb05000000e86b8a000083c424e9dd0100008d642434b8780566b18b5d04ff238b7c240483ff5d0f85520100008b542428b8281867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8674df2ffba803066b1bb05000000e8984df2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ab00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70760b334b157ff742428ff742434ff7424348b44242cbb05000000e80989000083c424eb7e8d642434b8780566b18b5d04ff238d6424048b542424b8381867b1ff128b542424b8441867b1ff12ff742424f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8064cf2ffba803066b1bb05000000e8374cf2ff8b1424ff128d642424e93e2000008d64242cb8441767b18b5d04ff238b7c241c81ffe70100000f857f0300008b7c24208b378b7c24288b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f834c030000d1ee8b7c24280fb63c378d3c7d01000000c1ef0383cf0183e70f578b7c240483ff230f854e0100008b542428b8501867b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c7076cb434b157ff742428ff742434ff7424348b44242cbb03000000e8cb8700008b542428b8380e66b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8ea4af2ffba803066b1bb05000000e81b4bf2ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d642428e9df0100008d642434b8780566b18b5d04ff238b7c240481ffb50000000f85510100008b542428b8601867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8d749f2ffba803066b1bb05000000e8084af2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87aa00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70778b534b157ff742428ff742434ff7424348b44242c8b5c2418e87a85000083c424eb7e8d642434b8780566b18b5d04ff238d6424048b542424b8741867b1ff128b542424b8441867b1ff12ff742424f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e87748f2ffba803066b1bb05000000e8a848f2ff8b1424ff128d642424e9af1c00008d64242cb8441767b18b5d04ff238b7c241c81ffe50100000f85d70b00008b7c24208b378b7c24288b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a40b0000d1ee8b7c24280fb63c378d3c7d01000000c1ef0383cf0183e70f578b7c240481ffbd0000000f85550100008b542428b8801867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8a347f2ffba803066b1bb05000000e8d447f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707b8b534b157ff742428ff742434ff7424348b44242cbb05000000e84583000083c424e92d0a00008d642434b8780566b18b5d04ff238b7c240481ffb90000000f85550100008b542428b8901867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e83e46f2ffba803066b1bb05000000e86f46f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707c4b634b157ff742428ff742434ff7424348b44242cbb05000000e8e081000083c424e9c80800008d642434b8780566b18b5d04ff238b7c240481ffb50000000f85550100008b542428b8a01867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8d944f2ffba803066b1bb05000000e80a45f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707d0b734b157ff742428ff742434ff7424348b44242cbb05000000e87b80000083c424e9630700008d642434b8780566b18b5d04ff238b7c240481ffb30000000f85550100008b542428b8b41867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e87443f2ffba803066b1bb05000000e8a543f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707dcb834b157ff742428ff742434ff7424348b44242cbb05000000e8167f000083c424e9fe0500008d642434b8780566b18b5d04ff238b7c240481ffb10000000f85550100008b542428b8c41867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e80f42f2ffba803066b1bb05000000e84042f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ae00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707e8b934b157ff742428ff742434ff7424348b44242cbb05000000e8b17d000083c424e9990400008d642434b8780566b18b5d04ff238b7c240483ff550f85540100008b542428b8d41867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8ad40f2ffba803066b1bb05000000e8de40f2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ad00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707f4ba34b157ff742428ff742434ff7424348b44242c8b5c2418e8507c000083c424e9380300008d642434b8780566b18b5d04ff238b7c240483ff230f854e0100008b542428b8e81867b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70734bb34b157ff742428ff742434ff7424348b44242cbb05000000e8e27b00008b542428b8380e66b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8013ff2ffba803066b1bb05000000e8323ff2ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d642428e9dd0100008d642434b8780566b18b5d04ff238b7c240483ff210f85520100008b542428b8e81867b1ff12ff742428f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8f13df2ffba803066b1bb05000000e8223ef2ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87ab00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542428b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c70740bc34b157ff742428ff742434ff7424348b44242cbb05000000e89379000083c424eb7e8d642434b8780566b18b5d04ff238d6424048b542424b8f81867b1ff128b542424b8441867b1ff12ff742424f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8903cf2ffba803066b1bb05000000e8c13cf2ff8b1424ff128d642424e9c81000008d64242cb8441767b18b5d04ff238b7c241c83ff010f85111000008b3c2481ff1f0100000f85b10000008d6424208b3c248b078b5c2408e8038b000089c7578b7c24048b3f83c7088b742404893e8b542408b8041967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e87bfdfeff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8b53bf2ffba803066b1bb05000000e8e63bf2ff8b1424ff128d642408e94c0f00008b3c2481ff1d0100000f85b10000008d6424208b3c248b078b5c2408e8438a000089c7578b7c24048b3f83c7088b742404893e8b542408b8101967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8bbfcfeff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f53af2ffba803066b1bb05000000e8263bf2ff8b1424ff128d642408e98c0e00008b3c2481ff1b0100000f85b10000008d6424208b3c248b078b5c2408e88389000089c7578b7c24048b3f83c7088b742404893e8b542408b81c1967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8fbfbfeff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8353af2ffba803066b1bb05000000e8663af2ff8b1424ff128d642408e9cc0d00008b3c2481ff190100000f85b10000008d6424208b3c248b078b5c2408e8c388000089c7578b7c24048b3f83c7088b742404893e8b542408b8281967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e83bfbfeff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87539f2ffba803066b1bb05000000e8a639f2ff8b1424ff128d642408e90c0d00008b3c2481ff170100000f85b10000008d6424208b3c248b078b5c2408e80388000089c7578b7c24048b3f83c7088b742404893e8b542408b8341967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e87bfafeff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8b538f2ffba803066b1bb05000000e8e638f2ff8b1424ff128d642408e94c0c00008b3c2481ff150100000f85b10000008d6424208b3c248b078b5c2408e84387000089c7578b7c24048b3f83c7088b742404893e8b542408b8401967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8bbf9feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f537f2ffba803066b1bb05000000e82638f2ff8b1424ff128d642408e98c0b00008b3c2481ff130100000f85b10000008d6424208b3c248b078b5c2408e88386000089c7578b7c24048b3f83c7088b742404893e8b542408b84c1967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8fbf8feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e83537f2ffba803066b1bb05000000e86637f2ff8b1424ff128d642408e9cc0a00008b3c2481ff110100000f85b10000008d6424208b3c248b078b5c2408e8c385000089c7578b7c24048b3f83c7088b742404893e8b542408b8581967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e83bf8feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87536f2ffba803066b1bb05000000e8a636f2ff8b1424ff128d642408e90c0a00008b3c2481ff0f0100000f85b10000008d6424208b3c248b078b5c2408e80385000089c7578b7c24048b3f83c7088b742404893e8b542408b8641967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e87bf7feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8b535f2ffba803066b1bb05000000e8e635f2ff8b1424ff128d642408e94c0900008b3c2481ff0d0100000f85b10000008d6424208b3c248b078b5c2408e84384000089c7578b7c24048b3f83c7088b742404893e8b542408b8701967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8bbf6feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f534f2ffba803066b1bb05000000e82635f2ff8b1424ff128d642408e98c0800008b3c2481ff0b0100000f85b10000008d6424208b3c248b078b5c2408e88383000089c7578b7c24048b3f83c7088b742404893e8b542408b87c1967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8fbf5feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e83534f2ffba803066b1bb05000000e86634f2ff8b1424ff128d642408e9cc0700008b3c2481ff090100000f85b10000008d6424208b3c248b078b5c2408e8c382000089c7578b7c24048b3f83c7088b742404893e8b542408b8881967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e83bf5feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87533f2ffba803066b1bb05000000e8a633f2ff8b1424ff128d642408e90c0700008b3c2481ff070100000f85b10000008d6424208b3c248b078b5c2408e80382000089c7578b7c24048b3f83c7088b742404893e8b542408b8941967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e87bf4feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8b532f2ffba803066b1bb05000000e8e632f2ff8b1424ff128d642408e94c0600008b3c2481ff050100000f85b10000008d6424208b3c248b078b5c2408e84381000089c7578b7c24048b3f83c7088b742404893e8b542408b8a01967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8bbf3feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f531f2ffba803066b1bb05000000e82632f2ff8b1424ff128d642408e98c0500008b3c2481ff030100000f85b10000008d6424208b3c248b078b5c2408e88380000089c7578b7c24048b3f83c7088b742404893e8b542408b8ac1967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8fbf2feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e83531f2ffba803066b1bb05000000e86631f2ff8b1424ff128d642408e9cc0400008b3c2481ff010100000f85b10000008d6424208b3c248b078b5c2408e8c37f000089c7578b7c24048b3f83c7088b742404893e8b542408b8b81967b1ff128b542408b8940c66b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e83bf2feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87530f2ffba803066b1bb05000000e8a630f2ff8b1424ff128d642408e90c0400008b3c2481ff5f0100000f85ce0000008d6424048b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8397000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8c41967b1ff12ff742424ff7424088b4424088b5c2418e859c5fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7074cbd34b157ff742420ff74242cff74242c8b4424248b5c2410e82a6c00008d64241ce93d0300008d642428b8441767b18b5d04ff238b3c2481ff6f0100000f85ce0000008d6424048b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8397000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8d41967b1ff12ff742424ff7424088b4424088b5c2418e87cc4fdff8b1424ff128d64240c8b54241cb8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c897704c7078cbd34b157ff74241cff742428ff7424288b442420bb07000000e84c6b000083c418e9600200008d642428b8441767b18b5d04ff238b3c2481ff6d0100000f85ce0000008d6424048b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8397000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8d41967b1ff12ff742424ff7424088b4424088b5c2418e89fc3fdff8b1424ff128d64240c8b54241cb8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c897704c707ccbd34b157ff74241cff742428ff7424288b442420bb01000000e86f6a000083c418e9830100008d642428b8441767b18b5d04ff238b3c2481ff830100000f85ca0000008d6424048b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8393000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8e41967b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c7070cbe34b157ff742424ff742430ff7424308b4424288b5c2414e8bc6900008b542424b8380e66b1ff12ff742424ff7424088b4424088b5c2418e878c2fdff8b1424ff128d642424e9aa0000008d642428b8441767b18b5d04ff238b542424b8f41967b1ff12f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742424ba803066b18b442404bb03000000e8e32cf2ff8b1424ff128d642424eb4c8b542424b8440e66b1ff12ff742424f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8dc2df2ffba803066b1bb03000000e8952cf2ff8b1424ff128d642424e99c0000008b542424b8f41967b1ff12f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742424ba803066b18b442404bb03000000e8422cf2ff8b1424ff128d642424eb4c8b542424b8440e66b1ff12ff742424f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e83b2df2ffba803066b1bb03000000e8f42bf2ff8b1424ff128d642424e9456200008d642428b8441767b18b5d04ff238d642404e9796100008d642404e9706100008d642404e9676100008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e80fc0fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7074cbe34b157ff742420ff74242cff74242c8b4424248b5c2410e8e06600008d64241ce9de6000008d642428b8441767b18b5d04ff238d642404e9126000008d642404e9096000008d642404e9006000008d642404e9f75f00008d642404e9ee5f00008d642404e9e55f00008d642404e9dc5f00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e884befdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7078cbe34b157ff742420ff74242cff74242c8b4424248b5c2410e8556500008d64241ce9535f00008d642428b8441767b18b5d04ff238d642404e9875e00008d642404e97e5e00008d642404e9755e00008d642404e96c5e00008d642404e9635e00008d642404e95a5e00008d642404e9515e00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e8f9bcfdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707ccbe34b157ff742420ff74242cff74242c8b4424248b5c2410e8ca6300008d64241ce9c85d00008d642428b8441767b18b5d04ff238d642404e9fc5c00008d642404e9f35c00008d642404e9ea5c00008d642404e9e15c00008d642404e9d85c00008d642404e9cf5c00008d642404e9c65c00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e86ebbfdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7070cbf34b157ff742420ff74242cff74242c8b4424248b5c2410e83f6200008d64241ce93d5c00008d642428b8441767b18b5d04ff238d642404e9715b00008d642404e9685b00008d642404e95f5b00008d642404e9565b00008d642404e94d5b00008d642404e9445b00008d642404e93b5b00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e8e3b9fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7074cbf34b157ff742420ff74242cff74242c8b4424248b5c2410e8b46000008d64241ce9b25a00008d642428b8441767b18b5d04ff238d642404e9e65900008d642404e9dd5900008d642404e9d45900008d642404e9cb5900008d642404e9c25900008d642404e9b95900008d642404e9b05900008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8319010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f57bf110000008b442408d1e8d1ef33d2f7f7bf11000000d1ef33d2f7f78d3c55010000008b54242483ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542424b8940c66b1ff12ff742424ff7424088b4424088b5c2418e858b8fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7078cbf34b157ff742420ff74242cff74242c8b4424248b5c2410e8295f00008d64241ce9275900008d642428b8441767b18b5d04ff238d642404e95b5800008d642404e9525800008d642404e9495800008d642404e9405800008d642404e9375800008d642404e92e5800008d642404e9255800008d642404e91c5800008d642404e9135800008d642404e90a5800008d642404e9015800008d642404e9f85700008d642404e9ef5700008d642404e9e65700008d642404e9dd5700008d642404e9d45700008d642404e9cb5700008d642404e9c25700008d642404e9b95700008d642404e9b05700008d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce80fb7fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9875700008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce823b6fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce99b5600008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce837b5fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9af5500008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce84bb4fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9c35400008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce85fb3fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9d75300008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce873b2fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9eb5200008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce887b1fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9ff5100008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce89bb0fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8001a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf001a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9135100008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce8afaffdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9275000008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce8c3aefdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce93b4f00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce8d7adfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce94f4e00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce8ebacfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9634d00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce8ffabfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9774c00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce813abfdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce98b4b00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce827aafdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce99f4a00008d64242cb8780566b18b5d04ff238d642404ff74241cbf110000008b442404d1e8d1ef33d2f7f78d0455010000006a038b5c240ce83ba9fdff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404b8101a67b1e98300000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776b89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf101a67b1b90b0000008d77048d7804d1e9f3a489d95f8d77048d7809d1e9f3a48060ffbf8b1424ff128d64241ce9b34900008d64242cb8780566b18b5d04ff238d642404e9e74800008d642404e9de4800008d642404e9d54800008d642404e9cc4800008d642404e9c34800008d642404e9ba4800008d642404e9b14800008d642404e9a84800008d64241c8b542404b8001a67b1ff128b3c248b078b5c2408e86d61000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8a412f2ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e89d13f2ffba803066b1bb03000000e85612f2ff8b1424ff128d6424088b3c248b3f83c7088b3424893ee99a4800008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8352010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8c41967b1ff12ff742424ff7424088b4424088b5c2418e80fa7fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707ccbf34b157ff742420ff74242cff74242c8b4424248b5c2410e8e04d00008d6424048b54241cb8380e66b1ff128b7c24188b078b5c2420e8f65f000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e82d11f2ff8b1424ff128d642420eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e82612f2ffba803066b1bb03000000e8df10f2ff8b1424ff128d6424208b3c248b3f83c7088b3424893ee9234700008d642428b8441767b18b5d04ff238d64241c8b542404b8001a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ea000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8f50ff2ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8ee10f2ffba803066b1bb03000000e8a70ff2ff8b1424ff128d642408e9f84500008d64240cb8441767b18b5d04ff238b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83be010000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8c41967b1ff12ff742424ff7424088b4424088b5c2418e85fa4fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7070cc034b157ff742420ff74242cff74242c8b4424248b5c2410e8304b00008d6424048b54241cb8380e66b1ff128b7c24188b378b7c24208b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ee0000008d642418d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8120ef2ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e80b0ff2ffba803066b1bb03000000e8c40df2ff8b1424ff128d642408e9154400008d642424b8441767b18b5d04ff238d642428b8441767b18b5d04ff238d642404e93b4300008d642404e9324300008d642404e9294300008d642404e9204300008d64241c8b542404b8201a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87a0cf2ffba803066b1bb05000000e8ab0cf2ff8b1424ff128d642404e9fc4200008d64240cb8441767b18b5d04ff238d64241c8b542404b8301a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8930bf2ffba803066b1bb05000000e8c40bf2ff8b1424ff128d642404e9154200008d64240cb8441767b18b5d04ff238d64241c8b542404b8401a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8ac0af2ffba803066b1bb05000000e8dd0af2ff8b1424ff128d642404e92e4100008d64240cb8441767b18b5d04ff238d64241c8b542404b8501a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8c509f2ffba803066b1bb05000000e8f609f2ff8b1424ff128d642404e9474000008d64240cb8441767b18b5d04ff238d64241c8b542404b8601a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8de08f2ffba803066b1bb05000000e80f09f2ff8b1424ff128d642404e9603f00008d64240cb8441767b18b5d04ff238d64241c8b542404b8701a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f707f2ffba803066b1bb05000000e82808f2ff8b1424ff128d642404e9793e00008d64240cb8441767b18b5d04ff238d64241c8b542404b8801a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e81007f2ffba803066b1bb05000000e84107f2ff8b1424ff128d642404e9923d00008d64240cb8441767b18b5d04ff238d64241c8b542404b8901a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e82906f2ffba803066b1bb05000000e85a06f2ff8b1424ff128d642404e9ab3c00008d64240cb8441767b18b5d04ff238d64241c8b542404b8a01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e84205f2ffba803066b1bb05000000e87305f2ff8b1424ff128d642404e9c43b00008d64240cb8441767b18b5d04ff238d64241c8b542404b8b01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e85b04f2ffba803066b1bb05000000e88c04f2ff8b1424ff128d642404e9dd3a00008d64240cb8441767b18b5d04ff238d64241c8b542404b8c01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87403f2ffba803066b1bb05000000e8a503f2ff8b1424ff128d642404e9f63900008d64240cb8441767b18b5d04ff238d64241c8b542404b8d01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e88d02f2ffba803066b1bb05000000e8be02f2ff8b1424ff128d642404e90f3900008d64240cb8441767b18b5d04ff238d64241c8b542404b8e01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8a601f2ffba803066b1bb05000000e8d701f2ff8b1424ff128d642404e9283800008d64240cb8441767b18b5d04ff238d64241c8b542404b8f01a67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8bf00f2ffba803066b1bb05000000e8f000f2ff8b1424ff128d642404e9413700008d64240cb8441767b18b5d04ff238d64241c8b542404b8001b67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8d8fff1ffba803066b1bb05000000e80900f2ff8b1424ff128d642404e95a3600008d64240cb8441767b18b5d04ff238d64241c8b542404b8101b67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8f1fef1ffba803066b1bb05000000e822fff1ff8b1424ff128d642404e9733500008d64240cb8441767b18b5d04ff238d6424148b7c24088b378b7c24108b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6020000d1ee8b7c24100fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642414b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642414b8f80466b18b5d04ff238b54240c83ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b54240cb8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c7074cc034b157ff74240cff742418ff7424188b442410bb01000000e8bf3900008d6424048b542408b8380e66b1ff128b7c24048b378b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ee0000008d642404d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8a1fcf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e89afdf1ffba803066b1bb03000000e853fcf1ff8b1424ff128d642408e9a43200008d642410b8441767b18b5d04ff238d642414b8441767b18b5d04ff238b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8339020000d1ee8b7c24240fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642428b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642428b8f80466b18b5d04ff238b54242083ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542420b8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7078cc034b157ff742420ff74242cff74242c8b4424248b5c2410e8e73600008d6424048b54241cb8380e66b1ff128b7c24188b078b5c2420e8fd48000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e834faf1ff8b1424ff128d642420eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e82dfbf1ffba803066b1bb03000000e8e6f9f1ff8b1424ff128d6424208b3c248b3f83c7088b3424893ee92a3000008d642428b8441767b18b5d04ff238d642404e95e2f00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a5020000d1ee8b7c24240fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642428b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642428b8f80466b18b5d04ff238b54242083ff0d7507b85c1667b1eb4d83ff0b7507b8681667b1eb4183ff097507b8741667b1eb3583ff077507b8801667b1eb2983ff057507b88c1667b1eb1d83ff037507b8981667b1eb1183ff017507b8a41667b1eb05b8b01667b1ff128b542420b8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707ccc034b157ff742420ff74242cff74242c8b4424248b5c2410e8723400008d6424048b54241cb8380e66b1ff128b7c24188b378b7c24208b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ee0000008d642418d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e854f7f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e84df8f1ffba803066b1bb03000000e806f7f1ff8b1424ff128d642408e9572d00008d642424b8441767b18b5d04ff238d642428b8441767b18b5d04ff238d642404e97d2c00008d642404e9742c00008d642404e96b2c00008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8393000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8201b67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c7070cc134b157ff742424ff742430ff7424308b4424288b5c2414e88f3200008b542424b8380e66b1ff12ff742424ff7424088b4424088b5c2418e84b8bfdff8b1424ff128d642424e9682c00008d642428b8441767b18b5d04ff238d64240c8b7c24108b378b7c24188b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a0040000d1ee8b7c24180fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d64241cb8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d64241cb8f80466b18b5d04ff23578b542418b8301b67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c7074cc134b157ff742418ff742424ff7424248b44241cbb01000000e8123100008b542418b8380e66b1ff128b7c240483ff030f856f010000ff7424188b44240483c010710e8d642424b8f80466b18b5d04ff23ba803066b1bb03000000e878f4f1ff89c78b378d0c750100000083f9017507bf801166b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87f600000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204728d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8400f66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438428060ffbf8b1424ff128d642418e90a0200008d642424b8780566b18b5d04ff238d642424b8780566b18b5d04ff238b3c2489fe83fe110f83390100008d64240cbef80034b181c6406c00008d74befcffe6e93b000000909090e947000000909090e953000000909090e95f000000909090e96b000000909090e988000000909090e9a5000000909090e9c20000009090908d6424088b542404b8d4ed66b1ff12e9770100008d6424088b542404b804ee66b1ff12e9630100008d6424088b542404b834ee66b1ff12e94f0100008d6424088b542404b864ee66b1ff12e93b0100008b54240c5f83ff01750b8d642404b894ee66b1eb098d642404b8401b67b1ff12e9160100008b54240c5f83ff01750b8d642404b8c4ee66b1eb098d642404b84c1b67b1ff12e9f10000008b54240c5f83ff01750b8d642404b8f4ee66b1eb098d642404b8581b67b1ff12e9cc0000008b54240c5f83ff01750b8d642404b824ef66b1eb098d642404b8641b67b1ff12e9a7000000ff742418ba803066b18b442404bb03000000e8d5f1f1ff89c78b378d0c750100000083f9017507b8801166b1eb7089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775889d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c64004728d77048d7805d1e9f3a48060ffbf8b1424ff128d642418e99f2700008d642424b8780566b18b5d04ff238d64241cb8441767b18b5d04ff238b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8393000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8301b67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c7078cc134b157ff742424ff742430ff7424308b4424288b5c2414e8f22c00008b542424b8380e66b1ff12ff742424ff7424088b4424088b5c2418e8ae85fdff8b1424ff128d642424e9cb2600008d642428b8441767b18b5d04ff238d642404e9ff2500008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8397000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8301b67b1ff12ff742424ff7424088b4424088b5c2418e82985fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707ccc134b157ff742420ff74242cff74242c8b4424248b5c2410e8fa2b00008d64241ce9f82500008d642428b8441767b18b5d04ff238d642404e92c2500008b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8397000000d1ee8b7c24240fb63c378d3c7d01000000c1ef0383cf0183e70f578b542424b8701b67b1ff12ff742424ff7424088b4424088b5c2418e85684fdff8b1424ff128d6424088b542420b8380e66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7070cc234b157ff742420ff74242cff74242c8b4424248b5c2410e8272b00008d64241ce9252500008d642428b8441767b18b5d04ff238d642404e9592400008d6424148b54240cb8101a67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c7074cc234b157ff74240cff742418ff7424188b442410bb03000000e8b82a00008d642408e9b62400008d64241c8b542404b8801b67b1ff12e9a22400008d642404e9e42300008d642404e9db2300008d642404e9d22300008d642404e9c92300008d642404e9c02300008d642404e9b72300008d642404e9ae2300008d642404e9a52300008d6424105f83ff0375118d6424088b542404b88c1b67b1ff12eb0f8d6424088b542404b8981b67b1ff12e92b2400008d642404e96d2300008d642404e9642300008d642404e95b2300008d642404e9522300008d64241c8b542404b8a41b67b1ff12e9f32300008d642404e9352300008d642404e92c2300008d642404e9232300008d642404e91a2300008d642404e9112300008d6424185f81ffe7010000750d8b542404b8b41b67b1ff12eb008b542404b8c01b67b1ff12e99c2300008d6424185f81ffe7010000750d8b542404b8b41b67b1ff12eb008b542404b8d01b67b1ff12e9722300008d6424185f81ffe7010000750d8b542404b8e01b67b1ff12eb008b542404b8f01b67b1ff12e9482300008d642404e98a2200008d64241c8b542404b8001c67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ea000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e81fecf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e818edf1ffba803066b1bb03000000e8d1ebf1ff8b1424ff128d642408e9222200008d64240cb8441767b18b5d04ff238d642404e9562100008d6424185f81ffe7010000750d8b542404b8b41b67b1ff12eb008b542404b8101c67b1ff12e9e12100008d6424108b7c240881ffe7010000750d8b542410b8b41b67b1ff12eb005f83ff0375118d6424088b542404b8201c67b1ff12eb0f8d6424088b542404b8301c67b1ff12e9992100008d642404e9db2000008d642404e9d22000008d642404e9c92000008d642404e9c02000008d642404e9b72000008d642404e9ae2000008d642404e9a52000008d642404e99c2000008d642404e9932000008d642404e98a2000008d642404e9812000008d642404e9782000008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e8ce7ffdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e8ac4c000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e82beaf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e824ebf1ffba803066b1bb03000000e8dde9f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e83238000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e869e9f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e862eaf1ffba803066b1bb03000000e81be9f1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e94e1f00008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e8ef7dfdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e8cd4a000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e84ce8f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e845e9f1ffba803066b1bb03000000e8fee7f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e85336000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e88ae7f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e883e8f1ffba803066b1bb03000000e83ce7f1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e96f1d00008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e8107cfdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e8ee48000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e86de6f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e866e7f1ffba803066b1bb03000000e81fe6f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e87434000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8abe5f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8a4e6f1ffba803066b1bb03000000e85de5f1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9901b00008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e8317afdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e80f47000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e88ee4f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e887e5f1ffba803066b1bb03000000e840e4f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e89532000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8cce3f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8c5e4f1ffba803066b1bb03000000e87ee3f1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9b11900008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e85278fdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e83045000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8afe2f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8a8e3f1ffba803066b1bb03000000e861e2f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e8b630000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8ede1f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8e6e2f1ffba803066b1bb03000000e89fe1f1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9d21700008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e87376fdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e85143000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8d0e0f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8c9e1f1ffba803066b1bb03000000e882e0f1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e8d72e000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e80ee0f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e807e1f1ffba803066b1bb03000000e8c0dff1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9f31500008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e89474fdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e87241000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8f1def1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8eadff1ffba803066b1bb03000000e8a3def1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e8f82c000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e82fdef1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e828dff1ffba803066b1bb03000000e8e1ddf1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9141400008b542420b8301b67b1ff12ff742420bf110000008b442408d1e8d1ef33d2f7f78d045501000000ff7424048b5c2410e8b572fdff8b1424ff128d6424048b542420b8380e66b1ff128b3c2483ff050f85b80000008d64241c8b3c248b078b5c2408e8933f000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e812ddf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e80bdef1ffba803066b1bb03000000e8c4dcf1ff8b1424ff128d6424088b3c248b3f83c7108b3424893ee9ce0000005f83ff030f85b50000008d6424188b3c248b078b5c2408e8192b000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e850dcf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e849ddf1ffba803066b1bb03000000e802dcf1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb0f8d6424188b542404b8701c67b1ff12e9351200008d642404e977110000ff3424ff742420ff74242cff74242c8b4424148b5c2424e8454200008d64241ce9071200008d64241c8b542404b8d41c67b1ff128b3c248b178b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bd70f834b01000089d6d1ee8b7c24080fb63c378d347d0100000083c2028b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bd70f8308010000d1ea8b7c24080fb63c178d3c7d0100000081ff010100007c1881ef00020000710e8d64240cb8f80466b18b5d04ff23eb0083ef0169ff00010000710e8d64240cb8f80466b18b5d04ff2383c70183ee0103fe57710e8d642410b8f80466b18b5d04ff238b7c24048b3f83c7048b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e894daf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e88ddbf1ffba803066b1bb03000000e846daf1ff8b1424ff128d642408e9971000008d64240cb8441767b18b5d04ff238d64240cb8441767b18b5d04ff238d64241c8b542404b8e41c67b1ff12e9671000008d642404e9a90f00008d642404e9a00f00008d6424148b54240cb8301b67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70744ca34b157ff74240cff742418ff7424188b442410bb01000000e8ff1500008d6424048b542408b8380e66b1ff128b7c24048b378b7c240c8b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ee0000008d642404d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e8e1d8f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8dad9f1ffba803066b1bb03000000e893d8f1ff8b1424ff128d642408e9e40e00008d642410b8441767b18b5d04ff238b542420b8301b67b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c70784ca34b157ff742420ff74242cff74242c8b4424248b5c2410e8851400008d6424048b54241cb8380e66b1ff128b7c24188b078b5c2420e89b26000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e8d2d7f1ff8b1424ff128d642420eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8cbd8f1ffba803066b1bb03000000e884d7f1ff8b1424ff128d6424208b3c248b3f83c7088b3424893ee9c80d00008d642404e90a0d00008d642404e9010d00008d64241c8b3c248b1789d683c6028b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f839e000000d1ee8b7c24080fb63c378d3c7d0100000083ef0169ff00010000710e8d64240cb8f80466b18b5d04ff2383c7018b7424088b76fcc1e608c1ee0783ce018d34b5fdffffff3bd67348d1ea8b7424080fb634168d34750100000083ee0103fe57710e8d642410b8f80466b18b5d04ff238b7c24048b3f83c7048b742404893e8b542408b8f01c67b1ff126a01e9d50f00008d64240cb8441767b18b5d04ff238d64240cb8441767b18b5d04ff238d642404e91f0c00008d642404e9160c00008d64241c8b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf77333d1ee8b7c24080fb63c378d3c7d01000000578b7c24048b3f83c7028b742404893e8b542408b8f01c67b1ff126a01e98c0c00008d64240cb8441767b18b5d04ff238d642404e9a80b00008d642404e99f0b00008d642404e9960b0000ff3424ff742420ff74242cff74242c8b4424148b5c2424e8643c00008d64241ce9260c00008d642404e9680b0000ff3424ff742420ff74242cff74242c8b4424148b5c2424e8363c00008d64241ce9f80b00008d642404e93a0b00008d642404e9310b00008d642404e9280b00008d642404e91f0b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8d43f00008d642418e9ae0b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8ae3f00008d642418e9880b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8883f00008d642418e9620b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8623f00008d642418e93c0b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce83c3f00008d642418e9160b00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8163f00008d642418e9f00a00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8f03e00008d642418e9ca0a00008d642404ff742418ff742424ff7424248b44240c8b5c241ce8ca3e00008d642418e9a40a00008d642404e9e60900008d642404e9dd0900008d642404e9d40900008d642404e9cb0900008d642404e9c20900008d642404e9b90900008d642404e9b00900008d642404e9a70900008d64241c8b3c248b078b5c2408e87722000089c7578b7c24048b3f83c7088b742404893e8b542408b8781f67b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e8fa94feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e834d3f1ffba803066b1bb05000000e865d3f1ff8b1424ff128d642408e9b60900008d64241c8b3c248b078b5c2408e8d121000089c7578b7c24048b3f83c7088b742404893e8b542408b8881f67b1ff12ff7424088b7c2408ff37f64424080174068b742408eb148b442408e85494feff89c78b3f8d347d010000005f8d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e88ed2f1ffba803066b1bb05000000e8bfd2f1ff8b1424ff128d642408e9100900008d642404e9520800008d64241c8b542404b8881f67b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83a6000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb008b34248b3683c6028b14248932ff7424048b7424048b368d5c37fff6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8acd1f1ffba803066b1bb05000000e8ddd1f1ff8b1424ff128d642404e92e0800008d64240cb8441767b18b5d04ff238d642404e9620700008d642404e9590700008d642404e9500700008d642404e9470700008d642404e93e0700008d642404e9350700008d642404e92c0700008d642404e9230700008d64241c8b542404b8981f67b1ff12e9c40700008d642404e9060700008d6424148b7c24088b378b7c24108b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8380020000d1ee8b7c24100fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642414b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642414b8f80466b18b5d04ff23578b5424108b3c2483ff077507b8a41f67b1eb148b3c2483ff017507b8b01f67b1eb05b8701c67b1ff128b542410b8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707c0fd34b157ff742410ff74241cff74241c8b442414bb01000000e84a0c00005f8d64240483ff010f85280100008d6424048b542404b8380e66b1ff128b3c248b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83e7000000d1ee8b7c24080fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d64240cb8f80466b18b5d04ff2383ef02710e8d64240cb8f80466b18b5d04ff23eb00578b7c24048b3f83c7028b742404893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e823cff1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e81cd0f1ffba803066b1bb03000000e8d5cef1ff8b1424ff128d642408eb128d64240cb8441767b18b5d04ff238d642404e9120500008d642414b8441767b18b5d04ff238b7c241c8b378b7c24248b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f8353020000d1ee8b7c24240fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642428b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642428b8f80466b18b5d04ff23578b5424248b3c2483ff0f7507b8bc1f67b1eb508b3c2483ff0d7507b8c81f67b1eb418b3c2483ff0b7507b8d41f67b1eb328b3c2483ff097507b8e01f67b1eb238b3c2483ff077507b8ec1f67b1eb148b3c2483ff017507b8b01f67b1eb05b8701c67b1ff128b542424b8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c70700fe34b157ff742424ff742430ff7424308b4424288b5c2414e85c0900005f8d64240483ff010f85c00000008d6424188b542404b8380e66b1ff128b3c248b078b5c2408e8651b000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e89cccf1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e895cdf1ffba803066b1bb03000000e84eccf1ff8b1424ff128d6424088b3c248b3f83c7088b3424893eeb048d642418e98c0200008d642428b8441767b18b5d04ff238d642404e9c00100008d642404e9b70100008d642404e9ae0100008d642404e9a50100008d642404e99c0100008d642404e9930100008d642404e98a0100008d6424148b7c24088b378b7c24108b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f834f010000d1ee8b7c24100fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642414b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642414b8f80466b18b5d04ff238b54240c83ff0d7507b8f81f67b1eb1d83ff097507b8042067b1eb1183ff057507b8102067b1eb05b8701c67b1ff128b54240cb8940c66b1ff128b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70740fe34b157ff74240cff742418ff7424188b442410bb03000000e8c90600008d642408e9c70000008d642414b8441767b18b5d04ff238d642404ff74241cf644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8d8c9f1ffba803066b1bb05000000e809caf1ff8b1424ff128d64241ceb5d8d642420b8441767b18b5d04ff238d642410b8441767b18b5d04ff238d64240cb8441767b18b5d04ff238d64240cb8441767b18b5d04ff238d6424045ab8a00c66b18b7c2404897c240883c408ff228d64240cb8441767b18b5d04ff238b542404b8a00c66b1ff123b650c7303ff552ce9b86affff8b3c2483ff3d75068d642408ebda8b3c2483ff3f7207be01000000eb0f33f683c6028b0c24d1e9d3e683ce018b7c240423fe83ff010f8463020000ff74240cff7504bff80034b181c73d980000578965048b7c24248b77fcc1e608c1ee0783ce018b7c240c3bfe720ab8a43266b18b5d04ff238b7c24248b74240c8b7c77fe83c4045e8975048b1789d683fa050f85de0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e889c8f1ffba803066b1bb05000000e8bac8f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775789d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbfe9fd0000008d642418b8780566b18b5d04ff2383fe010f85d70000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8a2c7f1ffba803066b1bb05000000e8d3c7f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbfeb1d8d642418b8780566b18b5d04ff238b7f048b078b5f046a03e85d5cfdff8b1424ff128d6424048b54240cb8a80d66b1ff12eb288b650483c4045f897d048b3883ff17750e8d642418b81c2067b18b5d04ff238d6424188b5d04ff238b342483c602710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552ce93cfdffff8b3c2483ff3d75098d642408e913fdffff8b3c2483ff3f7207be01000000eb0f33f683c6028b0c24d1e9d3e683ce018b7c240423fe83ff010f8463020000ff74240cff7504bff80034b181c7049b0000578965048b7c24248b77fcc1e608c1ee0783ce018b7c240c3bfe720ab8a43266b18b5d04ff238b7c24248b74240c8b7c77fe83c4045e8975048b1789d683fa050f85de0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8c2c5f1ffba803066b1bb05000000e8f3c5f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775789d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbfe9fd0000008d642418b8780566b18b5d04ff2383fe010f85d70000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8dbc4f1ffba803066b1bb05000000e80cc5f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbfeb1d8d642418b8780566b18b5d04ff238b7f048b078b5f046a03e89659fdff8b1424ff128d6424048b54240cb8a80d66b1ff12eb288b650483c4045f897d048b3883ff17750e8d642418b81c2067b18b5d04ff238d6424188b5d04ff238b342483c602710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552ce939fdfffff400|@12460,1,@1530|19,0,0 54,0,@9473 77,0,@9473 102,0,@9568 121,0,@12121 182,0,244 235,0,@9958 240,1,@4895 245,0,@9967 250,0,2 255,1,@4896 273,0,@9514 334,0,240 345,0,@12302 421,0,242 431,0,243 441,0,102 463,0,0 524,0,64 532,0,79 556,0,0 573,0,1 580,0,0 601,0,1 608,0,0 629,0,1 636,0,0 724,0,2 736,0,102 743,0,3 750,0,1 766,0,253 777,0,@6293 2882,0,8 2899,0,8 2926,0,@12303 2938,0,@12304 2950,0,@12305 2962,0,@12306 2974,0,@12307 2986,0,@12308 2998,0,@12309 3005,0,@12310 3016,0,@9514 3039,1,@6101 3057,0,@9549 3096,0,@6294 3122,1,@6295 3140,0,@12316 3277,0,8 3294,0,8 3321,0,@12303 3333,0,@12304 3345,0,@12305 3357,0,@12306 3369,0,@12307 3381,0,@12308 3393,0,@12309 3400,0,@12310 3411,0,@9514 3434,1,@6101 3452,0,@9549 3491,0,@6297 3517,1,@6295 3535,0,@12316 3647,0,102 3727,0,87 3742,0,@12324 3797,0,@9958 3806,1,@4895 3811,0,@9967 3816,0,2 3821,1,@4896 3842,0,@11883 3859,0,4 3880,0,16777215 3938,0,0 3986,0,@9549 4025,0,@6298 4047,0,2 4052,1,@6295 4069,0,@9465 4084,0,84 4099,0,@12325 4154,0,@9958 4163,1,@4895 4168,0,@9967 4173,0,2 4178,1,@4896 4199,0,@11883 4216,0,4 4237,0,16777215 4295,0,0 4343,0,@9549 4382,0,@6299 4404,0,2 4409,1,@6295 4426,0,@9465 4453,0,@12326 4508,0,@9958 4517,1,@4895 4522,0,@9967 4527,0,2 4532,1,@4896 4553,0,@11883 4570,0,4 4591,0,16777215 4649,0,0 4697,0,@9549 4736,0,@6300 4758,0,2 4763,1,@6295 4777,0,@9465 4795,0,@12327 4806,0,@12328 4861,0,@9958 4870,1,@4895 4875,0,@9967 4880,0,2 4885,1,@4896 4908,0,@12316 4923,0,243 5015,0,@12329 5054,0,@6301 5076,0,1 5081,1,@6295 5090,0,@9549 5145,0,@9958 5154,1,@4895 5159,0,@9967 5164,0,2 5169,1,@4896 5190,0,@11883 5207,0,4 5228,0,16777215 5282,0,0 5335,0,@9465 5350,0,90 5365,0,@12330 5420,0,@9958 5429,1,@4895 5434,0,@9967 5439,0,2 5444,1,@4896 5465,0,@11883 5482,0,4 5503,0,16777215 5561,0,0 5609,0,@9549 5648,0,@6302 5674,1,@6295 5688,0,@9465 5706,0,@12331 5717,0,@12328 5772,0,@9958 5781,1,@4895 5786,0,@9967 5791,0,2 5796,1,@4896 5819,0,@12316 5834,0,242 5914,0,94 5929,0,@12332 5984,0,@9958 5993,1,@4895 5998,0,@9967 6003,0,2 6008,1,@4896 6029,0,@11883 6046,0,4 6067,0,16777215 6125,0,0 6173,0,@9549 6212,0,@6303 6234,0,2 6239,1,@6295 6256,0,@9465 6271,0,92 6286,0,@12333 6341,0,@9958 6350,1,@4895 6355,0,@9967 6360,0,2 6365,1,@4896 6386,0,@11883 6403,0,4 6424,0,16777215 6482,0,0 6530,0,@9549 6569,0,@6304 6591,0,2 6596,1,@6295 6613,0,@9465 6628,0,90 6643,0,@12334 6698,0,@9958 6707,1,@4895 6712,0,@9967 6717,0,2 6722,1,@4896 6743,0,@11883 6760,0,4 6781,0,16777215 6839,0,0 6887,0,@9549 6926,0,@6305 6948,0,2 6953,1,@6295 6970,0,@9465 6985,0,89 7000,0,@12335 7055,0,@9958 7064,1,@4895 7069,0,@9967 7074,0,2 7079,1,@4896 7100,0,@11883 7117,0,4 7138,0,16777215 7196,0,0 7244,0,@9549 7283,0,@6306 7305,0,2 7310,1,@6295 7327,0,@9465 7342,0,88 7357,0,@12336 7412,0,@9958 7421,1,@4895 7426,0,@9967 7431,0,2 7436,1,@4896 7457,0,@11883 7474,0,4 7495,0,16777215 7553,0,0 7601,0,@9549 7640,0,@6307 7662,0,2 7667,1,@6295 7684,0,@9465 7711,0,@12337 7766,0,@9958 7775,1,@4895 7780,0,@9967 7785,0,2 7790,1,@4896 7811,0,@11883 7828,0,4 7849,0,16777215 7907,0,0 7955,0,@9549 7994,0,@6308 8020,1,@6295 8037,0,@9465 8064,0,@12338 8103,0,@6309 8125,0,2 8130,1,@6295 8139,0,@9549 8194,0,@9958 8203,1,@4895 8208,0,@9967 8213,0,2 8218,1,@4896 8239,0,@11883 8256,0,4 8277,0,16777215 8331,0,0 8384,0,@9465 8411,0,@12338 8466,0,@9958 8475,1,@4895 8480,0,@9967 8485,0,2 8490,1,@4896 8511,0,@11883 8528,0,4 8549,0,16777215 8607,0,0 8655,0,@9549 8694,0,@6310 8716,0,2 8721,1,@6295 8735,0,@9465 8753,0,@12339 8764,0,@12328 8819,0,@9958 8828,1,@4895 8833,0,@9967 8838,0,2 8843,1,@4896 8866,0,@12316 8893,0,143 8917,1,@6296 8944,0,@12340 8955,0,@9514 8989,1,@6162 9042,0,@9958 9047,1,@4895 9052,0,@9967 9057,0,2 9062,1,@4896 9085,0,142 9109,1,@6296 9136,0,@12341 9147,0,@9514 9181,1,@6162 9234,0,@9958 9239,1,@4895 9244,0,@9967 9249,0,2 9254,1,@4896 9277,0,141 9301,1,@6296 9328,0,@12342 9339,0,@9514 9373,1,@6162 9426,0,@9958 9431,1,@4895 9436,0,@9967 9441,0,2 9446,1,@4896 9469,0,140 9493,1,@6296 9520,0,@12343 9531,0,@9514 9565,1,@6162 9618,0,@9958 9623,1,@4895 9628,0,@9967 9633,0,2 9638,1,@4896 9661,0,139 9685,1,@6296 9712,0,@12344 9723,0,@9514 9757,1,@6162 9810,0,@9958 9815,1,@4895 9820,0,@9967 9825,0,2 9830,1,@4896 9853,0,138 9877,1,@6296 9904,0,@12345 9915,0,@9514 9949,1,@6162 10002,0,@9958 10007,1,@4895 10012,0,@9967 10017,0,2 10022,1,@4896 10045,0,137 10069,1,@6296 10096,0,@12346 10107,0,@9514 10141,1,@6162 10194,0,@9958 10199,1,@4895 10204,0,@9967 10209,0,2 10214,1,@4896 10237,0,136 10261,1,@6296 10288,0,@12347 10299,0,@9514 10333,1,@6162 10386,0,@9958 10391,1,@4895 10396,0,@9967 10401,0,2 10406,1,@4896 10429,0,135 10453,1,@6296 10480,0,@12348 10491,0,@9514 10525,1,@6162 10578,0,@9958 10583,1,@4895 10588,0,@9967 10593,0,2 10598,1,@4896 10621,0,134 10645,1,@6296 10672,0,@12349 10683,0,@9514 10717,1,@6162 10770,0,@9958 10775,1,@4895 10780,0,@9967 10785,0,2 10790,1,@4896 10813,0,133 10837,1,@6296 10864,0,@12350 10875,0,@9514 10909,1,@6162 10962,0,@9958 10967,1,@4895 10972,0,@9967 10977,0,2 10982,1,@4896 11005,0,132 11029,1,@6296 11056,0,@12351 11067,0,@9514 11101,1,@6162 11154,0,@9958 11159,1,@4895 11164,0,@9967 11169,0,2 11174,1,@4896 11197,0,131 11221,1,@6296 11248,0,@12352 11259,0,@9514 11293,1,@6162 11346,0,@9958 11351,1,@4895 11356,0,@9967 11361,0,2 11366,1,@4896 11389,0,130 11413,1,@6296 11440,0,@12353 11451,0,@9514 11485,1,@6162 11538,0,@9958 11543,1,@4895 11548,0,@9967 11553,0,2 11558,1,@4896 11581,0,129 11605,1,@6296 11632,0,@12354 11643,0,@9514 11677,1,@6162 11730,0,@9958 11735,1,@4895 11740,0,@9967 11745,0,2 11750,1,@4896 11773,0,128 11797,1,@6296 11824,0,@12355 11835,0,@9514 11869,1,@6162 11922,0,@9958 11927,1,@4895 11932,0,@9967 11937,0,2 11942,1,@4896 11965,0,175 12048,0,@12356 12071,1,@6101 12089,0,@9549 12128,0,@6311 12154,1,@6295 12172,0,@12316 12186,0,183 12269,0,@12357 12292,1,@6101 12310,0,@9549 12349,0,@6312 12371,0,3 12376,1,@6295 12393,0,@12316 12407,0,182 12490,0,@12357 12513,1,@6101 12531,0,@9549 12570,0,@6313 12592,0,0 12597,1,@6295 12614,0,@12316 12628,0,193 12711,0,@12358 12750,0,@6314 12776,1,@6295 12785,0,@9549 12808,1,@6101 12831,0,@12316 12845,0,@12359 12891,0,@9967 12900,0,1 12905,1,@4896 12925,0,@9550 12943,0,0 12959,0,0 12968,1,@4897 12973,0,@9967 12978,0,1 12983,1,@4896 13006,0,@12359 13052,0,@9967 13061,0,1 13066,1,@4896 13086,0,@9550 13104,0,0 13120,0,0 13129,1,@4897 13134,0,@9967 13139,0,1 13144,1,@4896 13167,0,@12316 13268,0,8 13285,0,8 13312,0,@12303 13324,0,@12304 13336,0,@12305 13348,0,@12306 13360,0,@12307 13372,0,@12308 13384,0,@12309 13391,0,@12310 13402,0,@9514 13425,1,@6101 13443,0,@9549 13482,0,@6315 13508,1,@6295 13526,0,@12316 13663,0,8 13680,0,8 13707,0,@12303 13719,0,@12304 13731,0,@12305 13743,0,@12306 13755,0,@12307 13767,0,@12308 13779,0,@12309 13786,0,@12310 13797,0,@9514 13820,1,@6101 13838,0,@9549 13877,0,@6316 13903,1,@6295 13921,0,@12316 14058,0,8 14075,0,8 14102,0,@12303 14114,0,@12304 14126,0,@12305 14138,0,@12306 14150,0,@12307 14162,0,@12308 14174,0,@12309 14181,0,@12310 14192,0,@9514 14215,1,@6101 14233,0,@9549 14272,0,@6317 14298,1,@6295 14316,0,@12316 14453,0,8 14470,0,8 14497,0,@12303 14509,0,@12304 14521,0,@12305 14533,0,@12306 14545,0,@12307 14557,0,@12308 14569,0,@12309 14576,0,@12310 14587,0,@9514 14610,1,@6101 14628,0,@9549 14667,0,@6318 14693,1,@6295 14711,0,@12316 14848,0,8 14865,0,8 14892,0,@12303 14904,0,@12304 14916,0,@12305 14928,0,@12306 14940,0,@12307 14952,0,@12308 14964,0,@12309 14971,0,@12310 14982,0,@9514 15005,1,@6101 15023,0,@9549 15062,0,@6319 15088,1,@6295 15106,0,@12316 15243,0,8 15260,0,8 15287,0,@12303 15299,0,@12304 15311,0,@12305 15323,0,@12306 15335,0,@12307 15347,0,@12308 15359,0,@12309 15366,0,@12310 15377,0,@9514 15400,1,@6101 15418,0,@9549 15457,0,@6320 15483,1,@6295 15501,0,@12316 15699,0,8 15729,1,@6101 15758,0,@12360 15778,0,4 15799,0,16777215 15853,0,0 15862,0,@12360 15867,0,5 15917,0,@9465 15935,0,8 15965,1,@6101 15994,0,@12360 16014,0,4 16035,0,16777215 16089,0,0 16098,0,@12360 16103,0,5 16153,0,@9465 16171,0,8 16201,1,@6101 16230,0,@12360 16250,0,4 16271,0,16777215 16325,0,0 16334,0,@12360 16339,0,5 16389,0,@9465 16407,0,8 16437,1,@6101 16466,0,@12360 16486,0,4 16507,0,16777215 16561,0,0 16570,0,@12360 16575,0,5 16625,0,@9465 16643,0,8 16673,1,@6101 16702,0,@12360 16722,0,4 16743,0,16777215 16797,0,0 16806,0,@12360 16811,0,5 16861,0,@9465 16879,0,8 16909,1,@6101 16938,0,@12360 16958,0,4 16979,0,16777215 17033,0,0 17042,0,@12360 17047,0,5 17097,0,@9465 17115,0,8 17145,1,@6101 17174,0,@12360 17194,0,4 17215,0,16777215 17269,0,0 17278,0,@12360 17283,0,5 17333,0,@9465 17351,0,8 17381,1,@6101 17410,0,@12360 17430,0,4 17451,0,16777215 17505,0,0 17514,0,@12360 17519,0,5 17569,0,@9465 17587,0,8 17617,1,@6101 17646,0,@12361 17666,0,4 17687,0,16777215 17741,0,0 17750,0,@12361 17755,0,5 17805,0,@9465 17823,0,8 17853,1,@6101 17882,0,@12361 17902,0,4 17923,0,16777215 17977,0,0 17986,0,@12361 17991,0,5 18041,0,@9465 18059,0,8 18089,1,@6101 18118,0,@12361 18138,0,4 18159,0,16777215 18213,0,0 18222,0,@12361 18227,0,5 18277,0,@9465 18295,0,8 18325,1,@6101 18354,0,@12361 18374,0,4 18395,0,16777215 18449,0,0 18458,0,@12361 18463,0,5 18513,0,@9465 18531,0,8 18561,1,@6101 18590,0,@12361 18610,0,4 18631,0,16777215 18685,0,0 18694,0,@12361 18699,0,5 18749,0,@9465 18767,0,8 18797,1,@6101 18826,0,@12361 18846,0,4 18867,0,16777215 18921,0,0 18930,0,@12361 18935,0,5 18985,0,@9465 19003,0,8 19033,1,@6101 19062,0,@12361 19082,0,4 19103,0,16777215 19157,0,0 19166,0,@12361 19171,0,5 19221,0,@9465 19239,0,8 19269,1,@6101 19298,0,@12361 19318,0,4 19339,0,16777215 19393,0,0 19402,0,@12361 19407,0,5 19457,0,@9465 19547,0,@12360 19563,1,@6296 19610,0,@9967 19619,0,1 19624,1,@4896 19644,0,@9550 19662,0,0 19678,0,0 19687,1,@4897 19692,0,@9967 19697,0,1 19702,1,@4896 19802,0,@12356 19825,1,@6101 19843,0,@9549 19882,0,@6321 19908,1,@6295 19921,0,@9549 19938,1,@6296 19985,0,@9967 19994,0,1 19999,1,@4896 20019,0,@9550 20037,0,0 20053,0,0 20062,1,@4897 20067,0,@9967 20072,0,1 20077,1,@4896 20113,0,@12316 20131,0,@12360 20192,0,128 20211,0,@9455 20230,0,@9455 20297,0,@9967 20306,0,1 20311,1,@4896 20331,0,@9550 20349,0,0 20365,0,0 20374,1,@4897 20379,0,@9967 20384,0,1 20389,1,@4896 20412,0,@12316 20490,0,@12356 20513,1,@6101 20531,0,@9549 20570,0,@6322 20596,1,@6295 20609,0,@9549 20675,0,128 20694,0,@9455 20713,0,@9455 20780,0,@9967 20789,0,1 20794,1,@4896 20814,0,@9550 20832,0,0 20848,0,0 20857,1,@4897 20862,0,@9967 20867,0,1 20872,1,@4896 20895,0,@12316 20909,0,@12316 20963,0,@12362 21024,0,128 21043,0,@9455 21062,0,@9455 21133,0,@9958 21138,1,@4895 21143,0,@9967 21148,0,2 21153,1,@4896 21176,0,@12316 21194,0,@12363 21255,0,128 21274,0,@9455 21293,0,@9455 21364,0,@9958 21369,1,@4895 21374,0,@9967 21379,0,2 21384,1,@4896 21407,0,@12316 21425,0,@12364 21486,0,128 21505,0,@9455 21524,0,@9455 21595,0,@9958 21600,1,@4895 21605,0,@9967 21610,0,2 21615,1,@4896 21638,0,@12316 21656,0,@12365 21717,0,128 21736,0,@9455 21755,0,@9455 21826,0,@9958 21831,1,@4895 21836,0,@9967 21841,0,2 21846,1,@4896 21869,0,@12316 21887,0,@12366 21948,0,128 21967,0,@9455 21986,0,@9455 22057,0,@9958 22062,1,@4895 22067,0,@9967 22072,0,2 22077,1,@4896 22100,0,@12316 22118,0,@12367 22179,0,128 22198,0,@9455 22217,0,@9455 22288,0,@9958 22293,1,@4895 22298,0,@9967 22303,0,2 22308,1,@4896 22331,0,@12316 22349,0,@12368 22410,0,128 22429,0,@9455 22448,0,@9455 22519,0,@9958 22524,1,@4895 22529,0,@9967 22534,0,2 22539,1,@4896 22562,0,@12316 22580,0,@12369 22641,0,128 22660,0,@9455 22679,0,@9455 22750,0,@9958 22755,1,@4895 22760,0,@9967 22765,0,2 22770,1,@4896 22793,0,@12316 22811,0,@12370 22872,0,128 22891,0,@9455 22910,0,@9455 22981,0,@9958 22986,1,@4895 22991,0,@9967 22996,0,2 23001,1,@4896 23024,0,@12316 23042,0,@12371 23103,0,128 23122,0,@9455 23141,0,@9455 23212,0,@9958 23217,1,@4895 23222,0,@9967 23227,0,2 23232,1,@4896 23255,0,@12316 23273,0,@12372 23334,0,128 23353,0,@9455 23372,0,@9455 23443,0,@9958 23448,1,@4895 23453,0,@9967 23458,0,2 23463,1,@4896 23486,0,@12316 23504,0,@12373 23565,0,128 23584,0,@9455 23603,0,@9455 23674,0,@9958 23679,1,@4895 23684,0,@9967 23689,0,2 23694,1,@4896 23717,0,@12316 23735,0,@12374 23796,0,128 23815,0,@9455 23834,0,@9455 23905,0,@9958 23910,1,@4895 23915,0,@9967 23920,0,2 23925,1,@4896 23948,0,@12316 23966,0,@12375 24027,0,128 24046,0,@9455 24065,0,@9455 24136,0,@9958 24141,1,@4895 24146,0,@9967 24151,0,2 24156,1,@4896 24179,0,@12316 24197,0,@12376 24258,0,128 24277,0,@9455 24296,0,@9455 24367,0,@9958 24372,1,@4895 24377,0,@9967 24382,0,2 24387,1,@4896 24410,0,@12316 24428,0,@12377 24489,0,128 24508,0,@9455 24527,0,@9455 24598,0,@9958 24603,1,@4895 24608,0,@9967 24613,0,2 24618,1,@4896 24641,0,@12316 24711,0,8 24732,0,8 24763,0,1 24770,0,0 24780,0,1 24787,0,0 24808,0,@9455 24822,0,8 24846,0,0 24858,0,1 24865,0,0 24886,0,@9455 24905,0,@12303 24917,0,@12304 24929,0,@12305 24941,0,@12306 24953,0,@12307 24965,0,@12308 24977,0,@12309 24984,0,@12310 24995,0,@9514 25034,0,@6323 25056,0,0 25061,1,@6295 25074,0,@9549 25140,0,128 25159,0,@9455 25178,0,@9455 25245,0,@9967 25254,0,1 25259,1,@4896 25279,0,@9550 25297,0,0 25313,0,0 25322,1,@4897 25327,0,@9967 25332,0,1 25337,1,@4896 25360,0,@12316 25374,0,@12316 25440,0,8 25461,0,8 25492,0,1 25499,0,0 25509,0,1 25516,0,0 25537,0,@9455 25551,0,8 25575,0,0 25587,0,1 25594,0,0 25615,0,@9455 25634,0,@12303 25646,0,@12304 25658,0,@12305 25670,0,@12306 25682,0,@12307 25694,0,@12308 25706,0,@12309 25713,0,@12310 25724,0,@9514 25763,0,@6324 25789,1,@6295 25802,0,@9549 25819,1,@6296 25866,0,@9967 25875,0,1 25880,1,@4896 25900,0,@9550 25918,0,0 25934,0,0 25943,1,@4897 25948,0,@9967 25953,0,1 25958,1,@4896 25994,0,@12316 26069,0,8 26090,0,8 26121,0,1 26128,0,0 26138,0,1 26145,0,0 26166,0,@9455 26180,0,8 26204,0,0 26216,0,1 26223,0,0 26244,0,@9455 26263,0,@12303 26275,0,@12304 26287,0,@12305 26299,0,@12306 26311,0,@12307 26323,0,@12308 26335,0,@12309 26342,0,@12310 26353,0,@9514 26392,0,@6325 26418,1,@6295 26431,0,@9549 26497,0,128 26516,0,@9455 26535,0,@9455 26602,0,@9967 26611,0,1 26616,1,@4896 26636,0,@9550 26654,0,0 26670,0,0 26679,1,@4897 26684,0,@9967 26689,0,1 26694,1,@4896 26717,0,@12316 26731,0,@12316 26836,0,@12378 26875,0,@6326 26901,1,@6295 26910,0,@9549 26933,1,@6101 26956,0,@12316 27026,0,8 27047,0,8 27078,0,1 27085,0,0 27095,0,1 27102,0,0 27123,0,@9455 27137,0,8 27161,0,0 27173,0,1 27180,0,0 27201,0,@9455 27216,0,@12379 27255,0,@6327 27277,0,0 27282,1,@6295 27291,0,@9549 27328,0,@9455 27338,0,@9967 27343,0,1 27348,1,@4896 27369,0,@9619 27386,0,4 27407,0,16777215 27465,0,0 27508,0,@9571 27525,0,4 27546,0,16777215 27600,0,0 27654,0,@9465 27668,0,@9465 27696,0,@6293 27785,0,@11888 27805,0,@11892 27825,0,@11896 27845,0,@11900 27871,0,@11904 27882,0,@12380 27908,0,@11908 27919,0,@12381 27945,0,@11912 27956,0,@12382 27982,0,@11916 27993,0,@12383 28009,0,@9967 28018,0,1 28023,1,@4896 28044,0,@9619 28061,0,4 28082,0,16777215 28136,0,0 28181,0,@9465 28195,0,@12316 28273,0,@12379 28312,0,@6328 28338,1,@6295 28347,0,@9549 28370,1,@6101 28393,0,@12316 28480,0,@12379 28503,1,@6101 28521,0,@9549 28560,0,@6329 28586,1,@6295 28604,0,@12316 28691,0,@12384 28714,1,@6101 28732,0,@9549 28771,0,@6330 28797,1,@6295 28815,0,@12316 28842,0,@12361 28881,0,@6331 28903,0,1 28908,1,@6295 28930,0,@12385 29032,0,@12386 29049,0,@12387 29105,0,@12388 29168,0,243 29179,0,@12389 29192,0,@12390 29210,0,243 29221,0,@12389 29234,0,@12391 29252,0,243 29263,0,@12392 29276,0,@12393 29305,0,@12394 29366,0,128 29385,0,@9455 29404,0,@9455 29471,0,@9967 29480,0,1 29485,1,@4896 29505,0,@9550 29523,0,0 29539,0,0 29548,1,@4897 29553,0,@9967 29558,0,1 29563,1,@4896 29586,0,@12316 29611,0,243 29622,0,@12389 29635,0,@12395 29656,0,243 29667,0,@12389 29690,0,@12396 29707,0,@12397 29831,0,@12379 29842,0,8 29874,1,@6101 29892,0,@9549 29924,1,@6332 29971,0,@9967 29980,0,1 29985,1,@4896 30005,0,@9550 30023,0,0 30039,0,0 30048,1,@4897 30053,0,@9967 30058,0,1 30063,1,@4896 30118,1,@6296 30165,0,@9967 30174,0,1 30179,1,@4896 30199,0,@9550 30217,0,0 30233,0,0 30242,1,@4897 30247,0,@9967 30252,0,1 30257,1,@4896 30294,0,@12399 30310,0,@12379 30321,0,8 30353,1,@6101 30371,0,@9549 30403,1,@6332 30450,0,@9967 30459,0,1 30464,1,@4896 30484,0,@9550 30502,0,0 30518,0,0 30527,1,@4897 30532,0,@9967 30537,0,1 30542,1,@4896 30597,1,@6296 30644,0,@9967 30653,0,1 30658,1,@4896 30678,0,@9550 30696,0,0 30712,0,0 30721,1,@4897 30726,0,@9967 30731,0,1 30736,1,@4896 30773,0,@12399 30789,0,@12379 30800,0,8 30832,1,@6101 30850,0,@9549 30882,1,@6332 30929,0,@9967 30938,0,1 30943,1,@4896 30963,0,@9550 30981,0,0 30997,0,0 31006,1,@4897 31011,0,@9967 31016,0,1 31021,1,@4896 31076,1,@6296 31123,0,@9967 31132,0,1 31137,1,@4896 31157,0,@9550 31175,0,0 31191,0,0 31200,1,@4897 31205,0,@9967 31210,0,1 31215,1,@4896 31252,0,@12399 31268,0,@12379 31279,0,8 31311,1,@6101 31329,0,@9549 31361,1,@6332 31408,0,@9967 31417,0,1 31422,1,@4896 31442,0,@9550 31460,0,0 31476,0,0 31485,1,@4897 31490,0,@9967 31495,0,1 31500,1,@4896 31555,1,@6296 31602,0,@9967 31611,0,1 31616,1,@4896 31636,0,@9550 31654,0,0 31670,0,0 31679,1,@4897 31684,0,@9967 31689,0,1 31694,1,@4896 31731,0,@12399 31747,0,@12379 31758,0,8 31790,1,@6101 31808,0,@9549 31840,1,@6332 31887,0,@9967 31896,0,1 31901,1,@4896 31921,0,@9550 31939,0,0 31955,0,0 31964,1,@4897 31969,0,@9967 31974,0,1 31979,1,@4896 32034,1,@6296 32081,0,@9967 32090,0,1 32095,1,@4896 32115,0,@9550 32133,0,0 32149,0,0 32158,1,@4897 32163,0,@9967 32168,0,1 32173,1,@4896 32210,0,@12399 32226,0,@12379 32237,0,8 32269,1,@6101 32287,0,@9549 32319,1,@6332 32366,0,@9967 32375,0,1 32380,1,@4896 32400,0,@9550 32418,0,0 32434,0,0 32443,1,@4897 32448,0,@9967 32453,0,1 32458,1,@4896 32513,1,@6296 32560,0,@9967 32569,0,1 32574,1,@4896 32594,0,@9550 32612,0,0 32628,0,0 32637,1,@4897 32642,0,@9967 32647,0,1 32652,1,@4896 32689,0,@12399 32705,0,@12379 32716,0,8 32748,1,@6101 32766,0,@9549 32798,1,@6332 32845,0,@9967 32854,0,1 32859,1,@4896 32879,0,@9550 32897,0,0 32913,0,0 32922,1,@4897 32927,0,@9967 32932,0,1 32937,1,@4896 32992,1,@6296 33039,0,@9967 33048,0,1 33053,1,@4896 33073,0,@9550 33091,0,0 33107,0,0 33116,1,@4897 33121,0,@9967 33126,0,1 33131,1,@4896 33168,0,@12399 33184,0,@12379 33195,0,8 33227,1,@6101 33245,0,@9549 33277,1,@6332 33324,0,@9967 33333,0,1 33338,1,@4896 33358,0,@9550 33376,0,0 33392,0,0 33401,1,@4897 33406,0,@9967 33411,0,1 33416,1,@4896 33471,1,@6296 33518,0,@9967 33527,0,1 33532,1,@4896 33552,0,@9550 33570,0,0 33586,0,0 33595,1,@4897 33600,0,@9967 33605,0,1 33610,1,@4896 33647,0,@12399 33691,1,@6333 33713,0,@12404 33827,0,128 33846,0,@9455 33873,0,@9455 33898,0,@9455 33962,0,@9967 33971,0,1 33976,1,@4896 33996,0,@9550 34014,0,0 34030,0,0 34039,1,@4897 34044,0,@9967 34049,0,1 34054,1,@4896 34077,0,@12316 34091,0,@12316 34109,0,@12405 34147,0,@12379 34186,0,@6335 34208,0,0 34213,1,@6295 34226,0,@9549 34292,0,128 34311,0,@9455 34330,0,@9455 34397,0,@9967 34406,0,1 34411,1,@4896 34431,0,@9550 34449,0,0 34465,0,0 34474,1,@4897 34479,0,@9967 34484,0,1 34489,1,@4896 34512,0,@12316 34526,0,@12379 34565,0,@6336 34591,1,@6295 34604,0,@9549 34621,1,@6296 34668,0,@9967 34677,0,1 34682,1,@4896 34702,0,@9550 34720,0,0 34736,0,0 34745,1,@4897 34750,0,@9967 34755,0,1 34760,1,@4896 34887,0,@9455 34956,0,@9455 34985,0,@12406 35003,0,@12316 35017,0,@12316 35118,0,@12406 35136,0,@12316 35196,1,@6333 35242,1,@6333 35316,1,@6337 35354,1,@6337 35392,1,@6337 35430,1,@6337 35468,1,@6337 35506,1,@6337 35544,1,@6337 35582,1,@6337 35681,1,@6296 35708,0,@12444 35742,1,@6162 35795,0,@9958 35800,1,@4895 35805,0,@9967 35810,0,2 35815,1,@4896 35847,1,@6296 35874,0,@12445 35908,1,@6162 35961,0,@9958 35966,1,@4895 35971,0,@9967 35976,0,2 35981,1,@4896 36017,0,@12445 36078,0,128 36097,0,@9455 36116,0,@9455 36187,0,@9958 36192,1,@4895 36197,0,@9967 36202,0,2 36207,1,@4896 36230,0,@12316 36320,0,@12446 36401,0,8 36422,0,8 36453,0,1 36460,0,0 36470,0,1 36477,0,0 36498,0,@9455 36512,0,8 36536,0,0 36548,0,1 36555,0,0 36576,0,@9455 36599,0,@12447 36614,0,@12448 36621,0,@12399 36632,0,@9514 36671,0,@6353 36693,0,0 36698,1,@6295 36725,0,@9549 36786,0,128 36805,0,@9455 36824,0,@9455 36891,0,@9967 36900,0,1 36905,1,@4896 36925,0,@9550 36943,0,0 36959,0,0 36968,1,@4897 36973,0,@9967 36978,0,1 36983,1,@4896 37003,0,@12316 37026,0,@12316 37092,0,8 37113,0,8 37144,0,1 37151,0,0 37161,0,1 37168,0,0 37189,0,@9455 37203,0,8 37227,0,0 37239,0,1 37246,0,0 37267,0,@9455 37290,0,@12449 37305,0,@12450 37320,0,@12451 37335,0,@12452 37350,0,@12453 37365,0,@12448 37372,0,@12399 37383,0,@9514 37422,0,@6354 37448,1,@6295 37475,0,@9549 37491,1,@6296 37538,0,@9967 37547,0,1 37552,1,@4896 37572,0,@9550 37590,0,0 37606,0,0 37615,1,@4897 37620,0,@9967 37625,0,1 37630,1,@4896 37672,0,@12316 37805,0,8 37826,0,8 37857,0,1 37864,0,0 37874,0,1 37881,0,0 37902,0,@9455 37916,0,8 37940,0,0 37952,0,1 37959,0,0 37980,0,@9455 37999,0,@12454 38011,0,@12455 38023,0,@12456 38030,0,@12399 38041,0,@9514 38080,0,@6355 38102,0,1 38107,1,@6295 38125,0,@12316 38187,0,@9958 38196,1,@4895 38201,0,@9967 38206,0,2 38211,1,@4896 38231,0,@12316 38245,0,@12316 38259,0,@12316 38273,0,@12316 38288,0,@9515 38310,0,@12316 38324,0,@9515 38366,0,0 38410,0,@6293 38449,0,@9990 38526,0,@9958 38531,1,@4895 38536,0,@9967 38541,0,2 38546,1,@4896 38567,0,@11883 38584,0,4 38605,0,16777215 38659,0,0 38703,0,@9465 38757,0,@9958 38762,1,@4895 38767,0,@9967 38772,0,2 38777,1,@4896 38798,0,@11884 38815,0,4 38836,0,16777215 38890,0,0 38927,0,@9465 38947,1,@6101 38965,0,@9537 38995,0,@12457 39026,0,@9455 39077,0,0 39121,0,@6293 39160,0,@9990 39237,0,@9958 39242,1,@4895 39247,0,@9967 39252,0,2 39257,1,@4896 39278,0,@11883 39295,0,4 39316,0,16777215 39370,0,0 39414,0,@9465 39468,0,@9958 39473,1,@4895 39478,0,@9967 39483,0,2 39488,1,@4896 39509,0,@11884 39526,0,4 39547,0,16777215 39601,0,0 39638,0,@9465 39658,1,@6101 39676,0,@9537 39706,0,@12457 39737,0,@9455 6294:D3,44|3b650c7305ff552ccd0dff72048b7c240857e80559fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1468|19,1,@6101 6295:D3,4640|3b650c7305ff552ccd0989c68b7c240c8b178b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bd70f83e31100008b7c2408d1ea0fb63c178d3c7d010000008b54240c8b1283c2028b4c240c891189f283e20583fa017507ba03000000eb05ba0100000083f2025283e60383fe017507be03000000eb05be0100000083f6025683fb057507b8f41667b1eb1d83fb037507b8081767b1eb1183fb077507b81c1767b1eb05b8301767b189fec1ee0683ce015683e70f578b7c240483ff010f85fa0800008b3c2483ff0b0f85bf0000008d6424108b542404ff128b7c240c8b078b5c2408e84911000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742408ba803066b18b442404bb03000000e880c2f1ff8b1424ff128d642408eb4c8b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e879c3f1ffba803066b1bb03000000e832c2f1ff8b1424ff128d6424088b7c240c8b3f83c7088b74240c893ec210008b3c2483ff090f85d40400008d6424048b7c24188b378b7c24148b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f839d0400008b7c2414d1ee0fb63c378d3c7d010000008b7424188b3683c6028b542418893289fec1ee0683ce015689fec1ee0383ce0183e60f5683e70f578b54241cff128b7c240c83ff010f85c50000008b3c2483ff0b0f85b40000008b7c24248b078b5c2420e80710000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e83ec1f1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e837c2f1ffba803066b1bb03000000e8f0c0f1ff8b1424ff128d6424088b7c24248b3f83c7088b742424893eeb00e9eb0100008b7c240c83ff050f85b70000008b7c24248b078b5c2420e8410f000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e878c0f1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e871c1f1ffba803066b1bb03000000e82ac0f1ff8b1424ff128d6424088b7c24248b3f83c7088b742424893ee9270100008b7c240c83ff030f851a0100008b7c24248b378b7c24208b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83e70000008b7c2420d1ee0fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d642418b8f80466b18b5d04ff2383ef02710e8d642418b8f80466b18b5d04ff23eb00578b7c24288b3f83c7028b742428893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e84dbff1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e846c0f1ffba803066b1bb03000000e8ffbef1ff8b1424ff128d642408eb0e8d642418b8441767b18b5d04ff238b54241cb86c1066b1ff128b7c240c83ff017402eb0e8b3c2483ff0b75068d642404eb31ff74241c6a038b4424088b5c2418e8e353fdff8b1424ff128d6424088b3c2483ff097502eb0b8b542418b8380e66b1ff128b3c2483ff0975128b7c241083ff0374098d642414e90f010000ff7424186a038b4424088b5c2418e89853fdff89c78b74240883fe017507bea01767b1eb258b74240883fe037507beac1767b1eb158b74240883fe057507beb81767b1eb05bec41767b1568b378d1c75010000008b34248b368d3475010000005683fb01750a8d64240458e9960000008b342483fe01750b8d64240889f8e9830000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777989d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d6424188b542404b8841066b18b3c24897c241083c410ff228d642420b8780566b18b5d04ff238d64240cb8441767b18b5d04ff238b542414ff128b7c240483ff030f851d0100008b7c241c8b378b7c24188b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ea0000008b7c2418d1ee0fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d642410b8f80466b18b5d04ff2383ef02710e8d642410b8f80466b18b5d04ff23eb00578b7c24208b3f83c7028b742420893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742418ba803066b18b442404bb03000000e871bcf1ff8b1424ff128d642408eb4c8b542418b8440e66b1ff12ff742418f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e86abdf1ffba803066b1bb03000000e823bcf1ff8b1424ff128d642408e9cf0000008d642410b8441767b18b5d04ff238b7c240483ff050f85b40000008b7c241c8b078b5c2418e8770a000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742418ba803066b18b442404bb03000000e8aebbf1ff8b1424ff128d642408eb4c8b542418b8440e66b1ff12ff742418f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8a7bcf1ffba803066b1bb03000000e860bbf1ff8b1424ff128d6424088b7c241c8b3f83c7088b74241c893eeb00ff7424146a038b4424088b5c2410e86750fdff89c78b378d0c750100000083f9017507bf6c1066b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87fc00000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642045b8d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8841066b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776789d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604385d8060ffbf8b14248b7c2414897c242483c424ff228d6424048d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff238b7c240483ff07751c8b542420588b742404895c241c89f38b7c240c897c241883c418ff228b3c2483ff090f85d40400008d6424048b7c24188b378b7c24148b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f839d0400008b7c2414d1ee0fb63c378d3c7d010000008b7424188b3683c6028b542418893289fec1ee0683ce015689fec1ee0383ce0183e60f5683e70f578b54241cff128b7c240c83ff010f85c50000008b3c2483ff0b0f85b40000008b7c24248b078b5c2420e8b307000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e8eab8f1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8e3b9f1ffba803066b1bb03000000e89cb8f1ff8b1424ff128d6424088b7c24248b3f83c7088b742424893eeb00e9eb0100008b7c240c83ff050f85b70000008b7c24248b078b5c2420e8ed06000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e824b8f1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e81db9f1ffba803066b1bb03000000e8d6b7f1ff8b1424ff128d6424088b7c24248b3f83c7088b742424893ee9270100008b7c240c83ff030f851a0100008b7c24248b378b7c24208b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83e70000008b7c2420d1ee0fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d642418b8f80466b18b5d04ff2383ef02710e8d642418b8f80466b18b5d04ff23eb00578b7c24288b3f83c7028b742428893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742420ba803066b18b442404bb03000000e8f9b6f1ff8b1424ff128d642408eb4c8b542420b8440e66b1ff12ff742420f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8f2b7f1ffba803066b1bb03000000e8abb6f1ff8b1424ff128d642408eb0e8d642418b8441767b18b5d04ff238b54241cb86c1066b1ff128b7c240c83ff017402eb0e8b3c2483ff0b75068d642404eb31ff74241c6a038b4424088b5c2418e88f4bfdff8b1424ff128d6424088b3c2483ff097502eb0b8b542418b8380e66b1ff128b3c2483ff0975128b7c241083ff0374098d642414e90f010000ff7424186a038b4424088b5c2418e8444bfdff89c78b74240883fe017507bea01767b1eb258b74240883fe037507beac1767b1eb158b74240883fe057507beb81767b1eb05bec41767b1568b378d1c75010000008b34248b368d3475010000005683fb01750a8d64240458e9960000008b342483fe01750b8d64240889f8e9830000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777989d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d6424188b542404b8841066b18b3c24897c241083c410ff228d642420b8780566b18b5d04ff238d64240cb8441767b18b5d04ff238b542414ff128b7c240483ff030f851d0100008b7c241c8b378b7c24188b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83ea0000008b7c2418d1ee0fb63c378d3c7d0100000081ff010100007c2b81effe010000710e8d642410b8f80466b18b5d04ff2383ef02710e8d642410b8f80466b18b5d04ff23eb00578b7c24208b3f83c7028b742420893ef6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742418ba803066b18b442404bb03000000e81db4f1ff8b1424ff128d642408eb4c8b542418b8440e66b1ff12ff742418f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e816b5f1ffba803066b1bb03000000e8cfb3f1ff8b1424ff128d642408e9cf0000008d642410b8441767b18b5d04ff238b7c240483ff050f85b40000008b7c241c8b078b5c2418e82302000089c757f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742418ba803066b18b442404bb03000000e85ab3f1ff8b1424ff128d642408eb4c8b542418b8440e66b1ff12ff742418f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e853b4f1ffba803066b1bb03000000e80cb3f1ff8b1424ff128d6424088b7c241c8b3f83c7088b74241c893eeb00ff7424146a038b4424088b5c2410e81348fdff89c78b378d0c750100000083f9017507bf6c1066b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87fc00000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642045b8d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8841066b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776789d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604385d8060ffbf8b14248b7c2414897c242483c424ff228d6424048d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff23b8441767b18b5d04ff23f400|@12323,1,@1470|92,0,1 99,0,0 116,0,1 123,0,0 137,0,@12312 149,0,@12313 161,0,@12314 168,0,@12315 231,1,@6296 278,0,@9967 287,0,1 292,1,@4896 312,0,@9550 330,0,0 346,0,0 355,1,@4897 360,0,@9967 365,0,1 370,1,@4896 553,1,@6296 600,0,@9967 609,0,1 614,1,@4896 634,0,@9550 652,0,0 668,0,0 677,1,@4897 682,0,@9967 687,0,1 692,1,@4896 751,1,@6296 798,0,@9967 807,0,1 812,1,@4896 832,0,@9550 850,0,0 866,0,0 875,1,@4897 880,0,@9967 885,0,1 890,1,@4896 992,0,128 1011,0,@9455 1030,0,@9455 1097,0,@9967 1106,0,1 1111,1,@4896 1131,0,@9550 1149,0,0 1165,0,0 1174,1,@4897 1179,0,@9967 1184,0,1 1189,1,@4896 1209,0,@12316 1223,0,@9596 1269,1,@6101 1297,0,@9549 1344,1,@6101 1360,0,@12319 1376,0,@12320 1392,0,@12321 1399,0,@12322 1473,0,4 1494,0,16777215 1548,0,0 1605,0,@9598 1626,0,@9465 1640,0,@12316 1724,0,128 1743,0,@9455 1762,0,@9455 1829,0,@9967 1838,0,1 1843,1,@4896 1863,0,@9550 1881,0,0 1897,0,0 1906,1,@4897 1911,0,@9967 1916,0,1 1921,1,@4896 1944,0,@12316 1977,1,@6296 2024,0,@9967 2033,0,1 2038,1,@4896 2058,0,@9550 2076,0,0 2092,0,0 2101,1,@4897 2106,0,@9967 2111,0,1 2116,1,@4896 2161,1,@6101 2182,0,@9596 2199,0,4 2220,0,16777215 2278,0,0 2321,0,@9598 2338,0,4 2359,0,16777215 2413,0,0 2473,0,@9465 2487,0,@9465 2685,1,@6296 2732,0,@9967 2741,0,1 2746,1,@4896 2766,0,@9550 2784,0,0 2800,0,0 2809,1,@4897 2814,0,@9967 2819,0,1 2824,1,@4896 2883,1,@6296 2930,0,@9967 2939,0,1 2944,1,@4896 2964,0,@9550 2982,0,0 2998,0,0 3007,1,@4897 3012,0,@9967 3017,0,1 3022,1,@4896 3124,0,128 3143,0,@9455 3162,0,@9455 3229,0,@9967 3238,0,1 3243,1,@4896 3263,0,@9550 3281,0,0 3297,0,0 3306,1,@4897 3311,0,@9967 3316,0,1 3321,1,@4896 3341,0,@12316 3355,0,@9596 3401,1,@6101 3429,0,@9549 3476,1,@6101 3492,0,@12319 3508,0,@12320 3524,0,@12321 3531,0,@12322 3605,0,4 3626,0,16777215 3680,0,0 3737,0,@9598 3758,0,@9465 3772,0,@12316 3856,0,128 3875,0,@9455 3894,0,@9455 3961,0,@9967 3970,0,1 3975,1,@4896 3995,0,@9550 4013,0,0 4029,0,0 4038,1,@4897 4043,0,@9967 4048,0,1 4053,1,@4896 4076,0,@12316 4109,1,@6296 4156,0,@9967 4165,0,1 4170,1,@4896 4190,0,@9550 4208,0,0 4224,0,0 4233,1,@4897 4238,0,@9967 4243,0,1 4248,1,@4896 4293,1,@6101 4314,0,@9596 4331,0,4 4352,0,16777215 4410,0,0 4453,0,@9598 4470,0,4 4491,0,16777215 4545,0,0 4605,0,@9465 4619,0,@9465 4629,0,@12316 6296:D3,544|3b650c7305ff552ccd0989c78b73fc89f2c1e608c1ee0783ce018d34b5fdffffff3bfe0f83ec01000089fed1ee0fb634338d3475010000005689fe83c60289d0c1e208c1ea0783ca018d1495fdffffff3bf20f83af010000d1ee0fb634338d34750100000089fa83c20489c1c1e008c1e80783c8018d0485fdffffff3bd00f8375010000d1ea0fb614138d14550100000083c706c1e108c1e90783c9018d0c8dfdffffff3bf90f833f010000d1ef0fb63c3b8d3c7d01000000f7c701000000740a81ff010100007c12eb140fb64fff8d0c4d0100000083f903740489f8eb24f7c701000000740c89f881e8000200007002eb1089f8bb010200005652e8abb1f1ff5a5ea801741489c783ef0169ff00010000700789f883c001eb0ebb010200005652e8358bf7ff5a5ea8017410f6c201740b89d783ef0103f87002eb0b89d356e8efaff1ff5e89c7f7c601000000741289f083e80169c000010000700583c001eb0e89f0bb0102000057e8ed8af7ff5fa8017416f604240174108b342483ee0103f070068d642404eb108b1c2457e8a1aff1ff5f89c68d642404f7c701000000741489fa83ea0169d200000100700789d783c701eb1089f8bb0100020056e8998af7ff5e89c7f7c7010000007413f7c601000000740b89f083e80103c77002eb0989f389f8e84aaff1ffc38d642404b8441767b18b5d04ff238d642404b8441767b18b5d04ff238d642404b8441767b18b5d04ff23b8441767b18b5d04ff23f4|@12318,1,@1469|195,0,128 246,0,256 253,1,@4897 284,0,256 291,1,@5527 321,1,@4895 357,0,256 363,1,@5527 399,1,@4895 441,0,65536 447,1,@5527 486,1,@4895 496,0,@12316 510,0,@12316 524,0,@12316 534,0,@12316 6297:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85d44fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1471|19,1,@6101 6298:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e88aaef1ffba803066b1bb05000000e8bbaef1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1472|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6299:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e87eadf1ffba803066b1bb05000000e8afadf1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1473|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6300:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e872acf1ffba803066b1bb05000000e8a3acf1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1474|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6301:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e866abf1ffba803066b1bb05000000e897abf1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1475|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6302:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8ed3ffdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1476|19,1,@6101 6303:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e81aaaf1ffba803066b1bb05000000e84baaf1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1477|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6304:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e80ea9f1ffba803066b1bb05000000e83fa9f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1478|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6305:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e802a8f1ffba803066b1bb05000000e833a8f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1479|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6306:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e8f6a6f1ffba803066b1bb05000000e827a7f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1480|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6307:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e8eaa5f1ffba803066b1bb05000000e81ba6f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1481|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6308:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8713afdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1482|19,1,@6101 6309:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e89ea4f1ffba803066b1bb05000000e8cfa4f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1483|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6310:D3,248|3b650c7305ff552ccd0dff7204a801740783f8017d12eb120fb678ff8d3c7d0100000083ff237402eb0c89c3b8b02f66b1e892a3f1ffba803066b1bb05000000e8c3a3f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776689d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b14248b7c2404897c240883c408ff228d6424048d642404b8780566b18b5d04ff23f400|@12311,1,@1484|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@11883 103,0,4 124,0,16777215 178,0,0 237,0,@9465 6311:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81938fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1485|19,1,@6101 6312:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8d937fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1486|19,1,@6101 6313:D3,44|3b650c7305ff552ccd0dff72048b7c240857e89937fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1487|19,1,@6101 6314:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85937fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1488|19,1,@6101 6315:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81937fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1489|19,1,@6101 6316:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8d936fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1490|19,1,@6101 6317:D3,44|3b650c7305ff552ccd0dff72048b7c240857e89936fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1491|19,1,@6101 6318:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85936fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1492|19,1,@6101 6319:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81936fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1493|19,1,@6101 6320:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8d935fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1494|19,1,@6101 6321:D3,44|3b650c7305ff552ccd0dff72048b7c240857e89935fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1495|19,1,@6101 6322:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85935fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1496|19,1,@6101 6323:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81935fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1497|19,1,@6101 6324:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8d934fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1498|19,1,@6101 6325:D3,44|3b650c7305ff552ccd0dff72048b7c240857e89934fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1499|19,1,@6101 6326:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85934fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1500|19,1,@6101 6327:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81934fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1501|19,1,@6101 6328:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8d933fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1502|19,1,@6101 6329:D3,44|3b650c7305ff552ccd0dff72048b7c240857e89933fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1503|19,1,@6101 6330:D3,44|3b650c7305ff552ccd0dff72048b7c240857e85933fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1504|19,1,@6101 6331:D3,44|3b650c7305ff552ccd0dff72048b7c240857e81933fdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1505|19,1,@6101 6332:D3,1084|3b650c7305ff552ccd0989c78b73fc89f2c1e608c1ee0783ce018d34b5fdffffff3bfe0f830804000089fed1ee0fb634338d3475010000005689fe83c60289d1c1e208c1ea0783ca018d1495fdffffff3bf20f83cb030000d1ee0fb634338d3475010000005689fe83c60489cac1e108c1e90783c9018d0c8dfdffffff3bf10f8390030000d1ee0fb634338d3475010000005689fe83c60689d1c1e208c1ea0783ca018d1495fdffffff3bf20f8355030000d1ee0fb634338d3475010000005689fe83c60889cac1e108c1e90783c9018d0c8dfdffffff3bf10f831a030000d1ee0fb634338d3475010000005689fe83c60a89d0c1e208c1ea0783ca018d1495fdffffff3bf20f83df020000d1ee0fb634338d34750100000089fa83c20c89c1c1e008c1e80783c8018d0485fdffffff3bd00f83a5020000d1ea0fb614138d14550100000083c70ec1e108c1e90783c9018d0c8dfdffffff3bf90f836f020000d1ef0fb63c3b8d3c7d01000000f7c701000000740a81ff010100007c12eb140fb64fff8d0c4d0100000083f903740489f8eb24f7c701000000740c89f881e8000200007002eb1089f8bb010200005652e83f9df1ff5a5ea801741289c783ef0169ff00010000700583c701eb10bb010200005652e8cb76f7ff5a5e89c7f7c7010000007410f6c201740b89d083e80103c77002eb0b89d389f856e87d9bf1ff5ea801741289c783ef0169ff00010000700583c701eb0ebb0102000056e88376f7ff5e89c7f7c7010000007413f7c601000000740b89f083e80103c77002eb0989f389f8e8349bf1ffa801741289c783ef0169ff00010000700583c701eb0cbb01020000e83c76f7ff89c7f7c7010000007416f604240174108b042483e80103c770068d642404eb0e89f88b1c24e8ea9af1ff8d642404a801741289c783ef0169ff00010000700583c701eb0cbb01020000e8ee75f7ff89c7f7c7010000007416f604240174108b042483e80103c770068d642404eb0e89f88b1c24e89c9af1ff8d642404a801741289c783ef0169ff00010000700583c701eb0cbb01020000e8a075f7ff89c7f7c7010000007416f604240174108b042483e80103c770068d642404eb0e89f88b1c24e84e9af1ff8d642404a801741289c783ef0169ff00010000700583c701eb0cbb01020000e85275f7ff89c7f7c7010000007416f604240174108b042483e80103c770068d642404eb0e89f88b1c24e8009af1ff8d642404a801741289c783ef0169ff00010000700583c701eb0cbb01020000e80475f7ff89c7f7c7010000007416f604240174108b042483e80103c770068d642404eb0e89f88b1c24e8b299f1ff8d642404c38d642414b8441767b18b5d04ff238d642414b8441767b18b5d04ff238d642414b8441767b18b5d04ff238d642410b8441767b18b5d04ff238d64240cb8441767b18b5d04ff238d642408b8441767b18b5d04ff238d642404b8441767b18b5d04ff23b8441767b18b5d04ff23f4|@12398,1,@1506|375,0,128 426,0,256 433,1,@4897 462,0,256 469,1,@5527 507,1,@4895 535,0,256 541,1,@5527 580,1,@4895 607,0,256 612,1,@5527 654,1,@4895 685,0,256 690,1,@5527 732,1,@4895 763,0,256 768,1,@5527 810,1,@4895 841,0,256 846,1,@5527 888,1,@4895 919,0,256 924,1,@5527 966,1,@4895 980,0,@12316 994,0,@12316 1008,0,@12316 1022,0,@12316 1036,0,@12316 1050,0,@12316 1064,0,@12316 1074,0,@12316 6333:D3,788|3b650c7305ff552ccd0950538b7c24148b378b7c24108b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83d10200008b7c2410d1ee0fb63c378d347d0100000089f0bf11000000d1f8d1ff99f7ff8d3c450100000089f0be11000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642408b8f80466b18b5d04ff23eb0289f8bf11000000d1f8d1ff99f7ff8d3c550100000083ff017507bf01000000eb2b83ff017d07be03000000eb05be0100000083fe017502eb1383c710710e8d642408b8f80466b18b5d04ff238b54240c83ff0f7507b87c1c67b1eb1d83ff0b7507b8881c67b1eb1183ff097507b8941c67b1eb05b8701c67b1ff128b54240cb8940c66b1ff128b5c24188b74240c8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c70704ca34b18b7424148b5424108b4c240c575652518b442410e849d4ffff8d6424048b542408b8380e66b1ff12b8b40c67b1e8acbdfeff89c68b3c243bfe75198d6424048b542404b8740e66b18b3c24897c241083c410ff22b8bc0c67b1e880bdfeff89c68b3c243bfe8d64240475158b542404b804ee66b18b3c24897c241083c410ff228b7c240c8b378b7c24088b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83f10000008b7c2408d1ee0fb63c378d3c7d0100000081ff010100007c2381effe010000710ab8f80466b18b5d04ff2383ef02710ab8f80466b18b5d04ff23eb00578b7c24108b3f83c7028b742410893ef6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742408ba803066b18b442404bb03000000e8df96f1ff8b14248b7c2408897c241883c418ff228d6424088b542408b8440e66b1ff12ff742408f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8cf97f1ffba803066b1bb03000000e88896f1ff8b14248b7c2408897c241883c418ff228d642404b8441767b18b5d04ff238d642408b8441767b18b5d04ff23f4000000|@12403,1,@1508|69,0,8 90,0,8 121,0,1 128,0,0 138,0,1 145,0,0 166,0,@9455 180,0,8 204,0,0 216,0,1 223,0,0 244,0,@9455 263,0,@12400 275,0,@12401 287,0,@12402 294,0,@12399 305,0,@9514 350,0,@6334 375,1,@6295 388,0,@9549 395,0,@12197 400,1,@6191 422,0,@9554 439,0,@12198 444,1,@6191 466,0,@11892 538,0,128 553,0,@9455 568,0,@9455 635,0,@9967 644,0,1 649,1,@4896 678,0,@9550 696,0,0 712,0,0 721,1,@4897 726,0,@9967 731,0,1 736,1,@4896 761,0,@12316 775,0,@12316 6334:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8612bfdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1507|19,1,@6101 6335:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8212bfdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1509|19,1,@6101 6336:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8e12afdff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1510|19,1,@6101 6337:D3,12072|3b650c7305ff552ccd0950538b7c24148b378b7c24108b7ffcc1e708c1ef0783cf018d3cbdfdffffff3bf70f83e62e00008b7c2410d1ee0fb63c378d3c7d01000000578b3c24c1ef0383cf0183e70f8b74240883e60f8b142481e28101000081fa810100000f853f2000008b142483e20f83fe010f85f30c000083ff030f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e88d94f1ffba803066b1bb05000000e8be94f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf001d67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf001d67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e95b0b00008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff010f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8de92f1ffba803066b1bb05000000e80f93f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf141d67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf141d67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9ac0900008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff070f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e82f91f1ffba803066b1bb05000000e86091f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf281d67b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf281d67b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9fd0700008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff0f0f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8808ff1ffba803066b1bb05000000e8b18ff1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf3c1d67b1e98900000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf3c1d67b1b9190000008d77048d7a04d1e9f3a489d95f8d77048d7a10d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e94e0600008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff0d0f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8d18df1ffba803066b1bb05000000e8028ef1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf501d67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf501d67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e99f0400008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff0b0f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8228cf1ffba803066b1bb05000000e8538cf1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf641d67b1e98900000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf641d67b1b9190000008d77048d7a04d1e9f3a489d95f8d77048d7a10d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9f00200008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff090f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8738af1ffba803066b1bb05000000e8a48af1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf781d67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf781d67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9410100008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff23f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e80489f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8fd89f1ffba803066b1bb03000000e8b688f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e87388f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e86c89f1ffba803066b1bb03000000e82588f1ff8b1424ff128d642410e92613000083fe0b0f853706000083ff010f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e89187f1ffba803066b1bb05000000e8c287f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf8c1d67b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf8c1d67b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e99f0400008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff070f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8e285f1ffba803066b1bb05000000e81386f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfa01d67b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfa01d67b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9f00200008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff050f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e83384f1ffba803066b1bb05000000e86484f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfb01d67b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfb01d67b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9410100008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff23f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8c482f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8bd83f1ffba803066b1bb03000000e87682f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e83382f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e82c83f1ffba803066b1bb03000000e8e581f1ff8b1424ff128d642410e9e60c000083fe0f0f854801000083ff09751983fa0175148d64240c8b542404b8c01d67b1ff12e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e87381f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce86c82f1ffba803066b1bb03000000e82581f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e8e280f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8db81f1ffba803066b1bb03000000e89480f1ff8b1424ff128d642410e9950b000083fe030f85670a000083ff030f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e80080f1ffba803066b1bb05000000e83180f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfd41d67b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfd41d67b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9cf0800008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff010f85a60100008d64240cff742404f6c201740783fa017d12eb140fb67aff8d3c7d0100000083ff23740489d0eb0c89d3b8b02f66b1e8517ef1ffba803066b1bb05000000e8827ef1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe41d67b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe41d67b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8140e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776189d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438298060ffbf8b1424ff128d642404e9200700008d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2383ff0f0f857501000083fa0f75148d64240c8b542404b8f41d67b1ff12e95701000083fa0575148d64240c8b542404b8001e67b1ff12e93e01000083fa0d75148d64240c8b542404b8101e67b1ff12e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e88e7cf1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8877df1ffba803066b1bb03000000e8407cf1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e8fd7bf1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8f67cf1ffba803066b1bb03000000e8af7bf1ff8b1424ff128d642410e98605000083ff0d0f857501000083fa0f75148d64240c8b542404b81c1e67b1ff12e95701000083fa0775148d64240c8b542404b82c1e67b1ff12e93e01000083fa0d75148d64240c8b542404b83c1e67b1ff12e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8107bf1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8097cf1ffba803066b1bb03000000e8c27af1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e87f7af1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8787bf1ffba803066b1bb03000000e8317af1ff8b1424ff128d642410e90804000083ff0b0f857501000083fa0d75148d64240c8b542404b84c1e67b1ff12e95701000083fa0375148d64240c8b542404b8581e67b1ff12e93e01000083fa0175148d64240c8b542404b8641e67b1ff12e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e89279f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce88b7af1ffba803066b1bb03000000e84479f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e80179f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8fa79f1ffba803066b1bb03000000e8b378f1ff8b1424ff128d642410e98a02000083ff090f855c01000083fa0375148d64240c8b542404b8701e67b1ff12e93e01000083fa0175148d64240c8b542404b87c1e67b1ff12e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e82d78f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce82679f1ffba803066b1bb03000000e8df77f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e89c77f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e89578f1ffba803066b1bb03000000e84e77f1ff8b1424ff128d642410e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e80377f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8fc77f1ffba803066b1bb03000000e8b576f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e87276f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e86b77f1ffba803066b1bb03000000e82476f1ff8b1424ff128d642410e925010000f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8d975f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8d276f1ffba803066b1bb03000000e88b75f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb358b3c240fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b442404bb03000000e84875f1ff8b1424ff128d642410eb4c8b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e84176f1ffba803066b1bb03000000e8fa74f1ff8b1424ff128d6424108b7c240c8b3f83c7028b74240c893eb801000000c20c0083fe0b0f859b02000083ff0775718d6424048b54240cb8881e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70200fa34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e9b7b0ffff8d64240883ff0575718d6424048b54240cb8981e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70240fa34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e941b0ffff8d64240883ff0175718d6424048b54240cb8a41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70280fa34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e9cbafffff8d642408f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e83273f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce82b74f1ffba803066b1bb03000000e8e472f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e8a172f1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e89173f1ffba803066b1bb03000000e84a72f1ff8b14248b7c2410897c241c83c41cff228d64240483fe090f857304000083ff0f75718d6424048b54240cb8b41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702c0fa34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e913aeffff8d64240883ff0d75718d6424048b54240cb8c41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70200fb34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e99dadffff8d64240883ff0975718d6424048b54240cb8d41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70240fb34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e927adffff8d64240883ff0375718d6424048b54240cb8e41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70280fb34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e9b1acffff8d64240883ff0b75718d6424048b54240cb8f41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702c0fb34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e93bacffff8d64240883ff0775718d6424048b54240cb8041f67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70200fc34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e9c5abffff8d64240883ff0175718d6424048b54240cb8141f67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70240fc34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e94fabffff8d642408f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8b66ef1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8af6ff1ffba803066b1bb03000000e8686ef1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e8256ef1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8156ff1ffba803066b1bb03000000e8ce6df1ff8b14248b7c2410897c241c83c41cff228d64240483fe0f0f85af01000083ff0b75718d6424048b54240cb8241f67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70280fc34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e997a9ffff8d642408f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8fe6cf1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce8f76df1ffba803066b1bb03000000e8b06cf1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e86d6cf1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e85d6df1ffba803066b1bb03000000e8166cf1ff8b14248b7c2410897c241c83c41cff228d64240483fe070f85af01000083ff0175718d6424048b54240cb8341f67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702c0fc34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb05000000894c2414895424188974240883c408e9dfa7ffff8d642408f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8466bf1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce83f6cf1ffba803066b1bb03000000e8f86af1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e8b56af1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8a56bf1ffba803066b1bb03000000e85e6af1ff8b14248b7c2410897c241c83c41cff228d64240483fe030f859b02000083ff0775718d6424048b54240cb8881e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70200fd34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb03000000894c2414895424188974240883c408e927a6ffff8d64240883ff0575718d6424048b54240cb8981e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70240fd34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb03000000894c2414895424188974240883c408e9b1a5ffff8d64240883ff0175718d6424048b54240cb8a41e67b1ff12ff34248b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70280fd34b18b4c24188b5c24148b4424108b74240c8944240c8b0424895c2410bb03000000894c2414895424188974240883c408e93ba5ffff8d642408f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e8a268f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce89b69f1ffba803066b1bb03000000e85468f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e81168f1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e80169f1ffba803066b1bb03000000e8ba67f1ff8b14248b7c2410897c241c83c41cff228d642404f644240801740b8b7c240883ff017d16eb368b7c24080fb67fff8d3c7d0100000083ff237422ff742410ba803066b18b44240cbb03000000e86967f1ff8b1424ff128d642404eb4c8b542410b8440e66b1ff12ff742410f644240c017410b8010000002b44240c700583c001eb0eb8010000008b5c240ce86268f1ffba803066b1bb03000000e81b67f1ff8b1424ff128d642404f6042401740a8b3c2483ff017d15eb3e8b3c240fb67fff8d3c7d0100000083ff23742bff742410ba803066b18b442404bb03000000e8d866f1ff8b14248b7c2410897c241c83c41cff228d6424088b542410b8440e66b1ff12ff742410f6442404017410b8010000002b442404700583c001eb0eb8010000008b5c2404e8c867f1ffba803066b1bb03000000e88166f1ff8b14248b7c2410897c241c83c41cff228d6424048d642408b8441767b18b5d04ff23f40000|@12443,1,@1526|97,0,192 174,0,@9958 179,1,@4895 184,0,@9967 189,0,2 194,1,@4896 223,0,@12407 243,0,4 264,0,16777215 322,0,0 331,0,@12407 336,0,11 384,0,@9546 401,0,4 422,0,16777215 476,0,0 530,0,@9465 544,0,@9465 605,0,@9958 610,1,@4895 615,0,@9967 620,0,2 625,1,@4896 654,0,@12408 674,0,4 695,0,16777215 753,0,0 762,0,@12408 767,0,11 815,0,@9546 832,0,4 853,0,16777215 907,0,0 961,0,@9465 975,0,@9465 1036,0,@9958 1041,1,@4895 1046,0,@9967 1051,0,2 1056,1,@4896 1085,0,@12409 1105,0,4 1126,0,16777215 1184,0,0 1193,0,@12409 1198,0,9 1246,0,@9546 1263,0,4 1284,0,16777215 1338,0,0 1392,0,@9465 1406,0,@9465 1467,0,@9958 1472,1,@4895 1477,0,@9967 1482,0,2 1487,1,@4896 1516,0,@12410 1536,0,4 1557,0,16777215 1615,0,0 1624,0,@12410 1629,0,12 1677,0,@9546 1694,0,4 1715,0,16777215 1769,0,0 1823,0,@9465 1837,0,@9465 1898,0,@9958 1903,1,@4895 1908,0,@9967 1913,0,2 1918,1,@4896 1947,0,@12411 1967,0,4 1988,0,16777215 2046,0,0 2055,0,@12411 2060,0,11 2108,0,@9546 2125,0,4 2146,0,16777215 2200,0,0 2254,0,@9465 2268,0,@9465 2329,0,@9958 2334,1,@4895 2339,0,@9967 2344,0,2 2349,1,@4896 2378,0,@12412 2398,0,4 2419,0,16777215 2477,0,0 2486,0,@12412 2491,0,12 2539,0,@9546 2556,0,4 2577,0,16777215 2631,0,0 2685,0,@9465 2699,0,@9465 2760,0,@9958 2765,1,@4895 2770,0,@9967 2775,0,2 2780,1,@4896 2809,0,@12413 2829,0,4 2850,0,16777215 2908,0,0 2917,0,@12413 2922,0,11 2970,0,@9546 2987,0,4 3008,0,16777215 3062,0,0 3116,0,@9465 3130,0,@9465 3182,0,@9967 3191,0,1 3196,1,@4896 3216,0,@9550 3234,0,0 3250,0,0 3259,1,@4897 3264,0,@9967 3269,0,1 3274,1,@4896 3327,0,@9967 3336,0,1 3341,1,@4896 3361,0,@9550 3379,0,0 3395,0,0 3404,1,@4897 3409,0,@9967 3414,0,1 3419,1,@4896 3498,0,@9958 3503,1,@4895 3508,0,@9967 3513,0,2 3518,1,@4896 3547,0,@12414 3567,0,4 3588,0,16777215 3646,0,0 3655,0,@12414 3660,0,9 3708,0,@9546 3725,0,4 3746,0,16777215 3800,0,0 3854,0,@9465 3868,0,@9465 3929,0,@9958 3934,1,@4895 3939,0,@9967 3944,0,2 3949,1,@4896 3978,0,@12415 3998,0,4 4019,0,16777215 4077,0,0 4086,0,@12415 4091,0,8 4139,0,@9546 4156,0,4 4177,0,16777215 4231,0,0 4285,0,@9465 4299,0,@9465 4360,0,@9958 4365,1,@4895 4370,0,@9967 4375,0,2 4380,1,@4896 4409,0,@12416 4429,0,4 4450,0,16777215 4508,0,0 4517,0,@12416 4522,0,8 4570,0,@9546 4587,0,4 4608,0,16777215 4662,0,0 4716,0,@9465 4730,0,@9465 4782,0,@9967 4791,0,1 4796,1,@4896 4816,0,@9550 4834,0,0 4850,0,0 4859,1,@4897 4864,0,@9967 4869,0,1 4874,1,@4896 4927,0,@9967 4936,0,1 4941,1,@4896 4961,0,@9550 4979,0,0 4995,0,0 5004,1,@4897 5009,0,@9967 5014,0,1 5019,1,@4896 5065,0,@12417 5119,0,@9967 5128,0,1 5133,1,@4896 5153,0,@9550 5171,0,0 5187,0,0 5196,1,@4897 5201,0,@9967 5206,0,1 5211,1,@4896 5264,0,@9967 5273,0,1 5278,1,@4896 5298,0,@9550 5316,0,0 5332,0,0 5341,1,@4897 5346,0,@9967 5351,0,1 5356,1,@4896 5435,0,@9958 5440,1,@4895 5445,0,@9967 5450,0,2 5455,1,@4896 5484,0,@12418 5504,0,4 5525,0,16777215 5583,0,0 5592,0,@12418 5597,0,8 5645,0,@9546 5662,0,4 5683,0,16777215 5737,0,0 5791,0,@9465 5805,0,@9465 5866,0,@9958 5871,1,@4895 5876,0,@9967 5881,0,2 5886,1,@4896 5915,0,@12419 5935,0,4 5956,0,16777215 6014,0,0 6023,0,@12419 6028,0,8 6076,0,@9546 6093,0,4 6114,0,16777215 6168,0,0 6222,0,@9465 6236,0,@9465 6268,0,@12420 6293,0,@12421 6318,0,@12422 6372,0,@9967 6381,0,1 6386,1,@4896 6406,0,@9550 6424,0,0 6440,0,0 6449,1,@4897 6454,0,@9967 6459,0,1 6464,1,@4896 6517,0,@9967 6526,0,1 6531,1,@4896 6551,0,@9550 6569,0,0 6585,0,0 6594,1,@4897 6599,0,@9967 6604,0,1 6609,1,@4896 6650,0,@12423 6675,0,@12424 6700,0,@12425 6754,0,@9967 6763,0,1 6768,1,@4896 6788,0,@9550 6806,0,0 6822,0,0 6831,1,@4897 6836,0,@9967 6841,0,1 6846,1,@4896 6899,0,@9967 6908,0,1 6913,1,@4896 6933,0,@9550 6951,0,0 6967,0,0 6976,1,@4897 6981,0,@9967 6986,0,1 6991,1,@4896 7032,0,@12426 7057,0,@12427 7082,0,@12428 7136,0,@9967 7145,0,1 7150,1,@4896 7170,0,@9550 7188,0,0 7204,0,0 7213,1,@4897 7218,0,@9967 7223,0,1 7228,1,@4896 7281,0,@9967 7290,0,1 7295,1,@4896 7315,0,@9550 7333,0,0 7349,0,0 7358,1,@4897 7363,0,@9967 7368,0,1 7373,1,@4896 7414,0,@12429 7439,0,@12430 7493,0,@9967 7502,0,1 7507,1,@4896 7527,0,@9550 7545,0,0 7561,0,0 7570,1,@4897 7575,0,@9967 7580,0,1 7585,1,@4896 7638,0,@9967 7647,0,1 7652,1,@4896 7672,0,@9550 7690,0,0 7706,0,0 7715,1,@4897 7720,0,@9967 7725,0,1 7730,1,@4896 7791,0,@9967 7800,0,1 7805,1,@4896 7825,0,@9550 7843,0,0 7859,0,0 7868,1,@4897 7873,0,@9967 7878,0,1 7883,1,@4896 7936,0,@9967 7945,0,1 7950,1,@4896 7970,0,@9550 7988,0,0 8004,0,0 8013,1,@4897 8018,0,@9967 8023,0,1 8028,1,@4896 8089,0,@9967 8098,0,1 8103,1,@4896 8123,0,@9550 8141,0,0 8157,0,0 8166,1,@4897 8171,0,@9967 8176,0,1 8181,1,@4896 8234,0,@9967 8243,0,1 8248,1,@4896 8268,0,@9550 8286,0,0 8302,0,0 8311,1,@4897 8316,0,@9967 8321,0,1 8326,1,@4896 8355,0,0 8385,0,@12431 8429,0,@6338 8461,0,2 8481,1,@6295 8503,0,@12432 8547,0,@6339 8579,0,2 8599,1,@6295 8621,0,@12433 8665,0,@6340 8697,0,2 8717,1,@6295 8768,0,@9967 8777,0,1 8782,1,@4896 8802,0,@9550 8820,0,0 8836,0,0 8845,1,@4897 8850,0,@9967 8855,0,1 8860,1,@4896 8913,0,@9967 8922,0,1 8927,1,@4896 8956,0,@9550 8974,0,0 8990,0,0 8999,1,@4897 9004,0,@9967 9009,0,1 9014,1,@4896 9061,0,@12434 9105,0,@6341 9137,0,2 9157,1,@6295 9179,0,@12435 9223,0,@6342 9255,0,2 9275,1,@6295 9297,0,@12436 9341,0,@6343 9373,0,2 9393,1,@6295 9415,0,@12437 9459,0,@6344 9491,0,2 9511,1,@6295 9533,0,@12438 9577,0,@6345 9609,0,2 9629,1,@6295 9651,0,@12439 9695,0,@6346 9727,0,2 9747,1,@6295 9769,0,@12440 9813,0,@6347 9845,0,2 9865,1,@6295 9916,0,@9967 9925,0,1 9930,1,@4896 9950,0,@9550 9968,0,0 9984,0,0 9993,1,@4897 9998,0,@9967 10003,0,1 10008,1,@4896 10061,0,@9967 10070,0,1 10075,1,@4896 10104,0,@9550 10122,0,0 10138,0,0 10147,1,@4897 10152,0,@9967 10157,0,1 10162,1,@4896 10209,0,@12441 10253,0,@6348 10285,0,2 10305,1,@6295 10356,0,@9967 10365,0,1 10370,1,@4896 10390,0,@9550 10408,0,0 10424,0,0 10433,1,@4897 10438,0,@9967 10443,0,1 10448,1,@4896 10501,0,@9967 10510,0,1 10515,1,@4896 10544,0,@9550 10562,0,0 10578,0,0 10587,1,@4897 10592,0,@9967 10597,0,1 10602,1,@4896 10649,0,@12442 10693,0,@6349 10725,0,2 10745,1,@6295 10796,0,@9967 10805,0,1 10810,1,@4896 10830,0,@9550 10848,0,0 10864,0,0 10873,1,@4897 10878,0,@9967 10883,0,1 10888,1,@4896 10941,0,@9967 10950,0,1 10955,1,@4896 10984,0,@9550 11002,0,0 11018,0,0 11027,1,@4897 11032,0,@9967 11037,0,1 11042,1,@4896 11089,0,@12431 11133,0,@6350 11165,0,1 11185,1,@6295 11207,0,@12432 11251,0,@6351 11283,0,1 11303,1,@6295 11325,0,@12433 11369,0,@6352 11401,0,1 11421,1,@6295 11472,0,@9967 11481,0,1 11486,1,@4896 11506,0,@9550 11524,0,0 11540,0,0 11549,1,@4897 11554,0,@9967 11559,0,1 11564,1,@4896 11617,0,@9967 11626,0,1 11631,1,@4896 11660,0,@9550 11678,0,0 11694,0,0 11703,1,@4897 11708,0,@9967 11713,0,1 11718,1,@4896 11785,0,@9967 11794,0,1 11799,1,@4896 11819,0,@9550 11837,0,0 11853,0,0 11862,1,@4897 11867,0,@9967 11872,0,1 11877,1,@4896 11930,0,@9967 11939,0,1 11944,1,@4896 11973,0,@9550 11991,0,0 12007,0,0 12016,1,@4897 12021,0,@9967 12026,0,1 12031,1,@4896 12060,0,@12316 6338:D3,44|3b650c7305ff552ccd0dff72048b7c240857e865fbfcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1511|19,1,@6101 6339:D3,44|3b650c7305ff552ccd0dff72048b7c240857e825fbfcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1512|19,1,@6101 6340:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8e5fafcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1513|19,1,@6101 6341:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8a5fafcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1514|19,1,@6101 6342:D3,44|3b650c7305ff552ccd0dff72048b7c240857e865fafcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1515|19,1,@6101 6343:D3,44|3b650c7305ff552ccd0dff72048b7c240857e825fafcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1516|19,1,@6101 6344:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8e5f9fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1517|19,1,@6101 6345:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8a5f9fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1518|19,1,@6101 6346:D3,44|3b650c7305ff552ccd0dff72048b7c240857e865f9fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1519|19,1,@6101 6347:D3,44|3b650c7305ff552ccd0dff72048b7c240857e825f9fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1520|19,1,@6101 6348:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8e5f8fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1521|19,1,@6101 6349:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8a5f8fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1522|19,1,@6101 6350:D3,44|3b650c7305ff552ccd0dff72048b7c240857e865f8fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1523|19,1,@6101 6351:D3,44|3b650c7305ff552ccd0dff72048b7c240857e825f8fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1524|19,1,@6101 6352:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8e5f7fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1525|19,1,@6101 6353:D3,44|3b650c7305ff552ccd0dff72048b7c240857e8a5f7fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1527|19,1,@6101 6354:D3,44|3b650c7305ff552ccd0dff72048b7c240857e865f7fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1528|19,1,@6101 6355:D3,44|3b650c7305ff552ccd0dff72048b7c240857e825f7fcff8b14248b7c2404897c240883c408ff228d642404f4|@12311,1,@1529|19,1,@6101 6356:D3,44|b9d87346b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@12462,1,@1531|1,0,@19855 6357:D3,9732|3b650c7305ff552ccd09538b38bec0fe34b181c61e0000008d74befcffe6e9bb010000909090e913020000909090e93d020000909090e98e030000909090e9da040000909090e9ba060000909090e911070000909090e9a6070000909090e9ec070000909090e9e9080000909090e92a090000909090e96e090000909090e9e9090000909090e9700a0000909090e9ca0b0000909090e9c40c0000909090e9ea0c0000909090e9070e0000909090e9610e0000909090e9880e0000909090e9ac0e0000909090e9bb0f0000909090e93c100000909090e96a100000909090e9ff100000909090e934110000909090e935110000909090e9ca110000909090e969130000909090e9c1130000909090e921140000909090e94b140000909090e92c150000909090e915160000909090e93f160000909090e969160000909090e917170000909090e91e170000909090e983170000909090e9c9170000909090e9f4170000909090e9a8180000909090e902190000909090e909190000909090e95c190000909090e963190000909090e9b1190000909090e90e1a0000909090e96c1a0000909090e9be1a0000909090e9491b0000909090e9731b0000909090e99e1b0000909090e9791c0000909090e928200000909090e953210000909090ff7004ff70088b542408b8b02067b1ff12ff742408ba803066b18b442408bb03000000e8825ff1ff8b1424ff128d6424048b542408b8c42067b1ff12ff7424088b7c24048b0789ff8b5f046a03e88cf4fcff8b1424ff128d64240ce95d230000ff70048b542404b8d02067b1ff12ff7424048b7c24048b0789ff8b5f046a03e85af4fcff8b1424ff128d642408e92b2300008b7804ff7008ff700cff7010ff74240cbec0fe34b181c6910200008d743effffe6eb0aeb0feb14eb19eb1eeb23bfb06d66b1eb21bfdc6e66b1eb1abfec2067b1eb13bfd06e66b1eb0cbff86d66b1eb05bfc46e66b18b378d1c750100000083fb01750ab8f82067b1e98f00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87b400000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604304d89fed1eec644300143d1efc6443802208060ffbf8b1424ff128d642404ff742404ff7424108b442410bbc46866b1e88d2200008b54240cb8a80d66b1ff12ff74240cba803066b18b442404bb03000000e8db5df1ff8b1424ff128d642410e9e02100008d642414b8780566b18b5d04ff238b7804ff7008ff700cff7010ff74240cbec0fe34b181c6ea0300008d743effffe6eb0aeb0feb14eb19eb1eeb23bfb06d66b1eb21bfdc6e66b1eb1abfec2067b1eb13bfd06e66b1eb0cbff86d66b1eb05bfc46e66b18b378d1c750100000083fb01750ab8f82067b1e98f00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87af00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604304d89fed1eec644300143d1efc6443802208060ffbf8b1424ff128d642404ff742404ff7424108b442410bbc46866b1e8342100008b54240cb8642167b1ff12ff74240cba787066b18b442404e8efc8f3ff8b1424ff128d642410e98c2000008d642414b8780566b18b5d04ff238b7804ff7008ff700cff742408bec0fe34b181c63b0500008d743effffe6eb0aeb0feb14eb19eb1eeb23bfb06d66b1eb21bfdc6e66b1eb1abfec2067b1eb13bfd06e66b1eb0cbff86d66b1eb05bfc46e66b18b378d1c750100000083fb01750ab8702167b1e98f00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f874601000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305289fed1eec644300152d1efc6443802208060ffbf8b1424ff128d642404ff7424088b7c24088b0789ff8b5f046a03e887f0fcff8b1424ff128d6424048b542408b8642167b1ff128b3c248b3789f283fe01752289ff8b47048d642404ff742404ba787066b1e884c7f3ff8b1424ff128d642408eb7b89ff89d683fa05752789ff8b47048d642404ff742404ba803066b1bb03000000e8ec5af1ff8b1424ff128d642408eb4b89ff83fe03752289ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742408e84d1f000083c404eb2289ff8b7f048d642404ff7424048b078b5f046a03e8d3effcff8b1424ff128d642408e9a41e00008d642410b8780566b18b5d04ff23ff7004ff70088b542408b87c2167b1ff12ff7424088b7c24088b0789ff8b5f046a03e890effcff8b1424ff128d6424048b542408b8902167b1ff12ff7424088b7c24048b0789ff8b5f046a03e866effcff8b1424ff128d64240ce9371e0000ff70048b542404b8a02167b1ff128b3c248b3789f283fe03752389ff8b7f048d642404ff34248b078b5f046a03e826effcff8b1424ff128d642404eb5b89ff89d683fa0575108d6424048b1424b8b82167b1ff12eb4289ff83fe01752d89ffff77048b542408b8d02167b1ff12ff742408ba787066b18b442404e80dc6f3ff8b1424ff128d64240ceb0e8d6424048b1424b8347166b1ff12e99a1d0000ff70048b542404b8e02167b1ff128b342489f783fe0575108d6424048b1424b8f02167b1ff12eb2189ff83ff018d642404750c8b1424b80c2267b1ff12eb0a8b1424b8202267b1ff12e94c1d00008b7804ff7008ff700c8b542408bec0fe34b181c66d0800008d743effffe6eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb51eb56eb5bb83c2267b1eb59b8502267b1eb52b8642267b1eb4bb8782267b1eb44b88c2267b1eb3db8a82267b1eb36b8b82267b1eb2fb8d02267b1eb28b8e42267b1eb21b8fc2267b1eb1ab8102367b1eb13b8282367b1eb0cb83c2367b1eb05b8502367b1ff128b542408b8642367b1ff12ff742408ba803066b18b442408bb03000000e87b58f1ff8b1424ff128d6424048b342489f783fe0375108d6424088b1424b8702367b1ff12eb1f89ff83ff058d64240475108d6424048b1424b8882367b1ff12eb048d642404e9471c0000ff7004ff70088b780c8b54240883ff037507b8a02367b1eb05b8b42367b1ff128b542408b8a80d66b1ff12ff3424ff74240c8b44240cbbc46866b1e8841c00008d642408e9fe1b0000ff70048b78088b54240483ff037507b8a02367b1eb05b8b42367b1ff128b542404b8a80d66b1ff12ff7424048b7c24048b0789ff8b5f046a03e8e1ecfcff8b1424ff128d642408e9b21b00008b7804ff70088b542404bec0fe34b181c6040a00008d743effffe6eb0eeb13eb18eb1deb22eb27eb2ceb31b8cc2367b1eb2fb8dc2367b1eb28b8f02367b1eb21b8082467b1eb1ab8182467b1eb13b8302467b1eb0cb8442467b1eb05b8582467b1ff12ff742404ba787066b18b442404e892c3f3ff8b1424ff128d642408e92f1b00008b7804ff7008ff700c8b542408bec0fe34b181c68a0a00008d743effffe6eb0eeb13eb18eb1deb22eb27eb2ceb31b8cc2367b1eb2fb8dc2367b1eb28b8f02367b1eb21b8082467b1eb1ab8182467b1eb13b8302467b1eb0cb8442467b1eb05b8582467b1ff128b542408b8a80d66b1ff12ff3424ff74240c8b44240cbbc46866b1e8261b00008d642408e9a01a00008b7804ff70088b542404bec0fe34b181c6160b00008d743effffe6eb0eeb13eb18eb1deb22eb27eb2ceb31b8cc2367b1eb2fb8dc2367b1eb28b8f02367b1eb21b8082467b1eb1ab8182467b1eb13b8302467b1eb0cb8442467b1eb05b8582467b1ff128b542404b8a80d66b1ff12ff742404f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8a155f1ffba803066b1bb05000000e8d255f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775c89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbf8b1424ff128d642408e94c1900008d64240cb8780566b18b5d04ff23ff70048b542404b8742467b1ff12ff742404f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e89f54f1ffba803066b1bb05000000e8d054f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775c89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbf8b1424ff128d642408e94a1800008d64240cb8780566b18b5d04ff23ff70048b542404b8842467b1ff12ff742404ba942467b18b442404e8551a00008b1424ff128d642408e90e180000ff7004ff70088b542408b8842467b1ff12ff742408f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e86c53f1ffba803066b1bb05000000e89d53f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01777c89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbf8b1424ff128d6424048b3c2483ff038d64240475108d6424048b1424b8602567b1ff12eb048d642404e9f71600008d642410b8780566b18b5d04ff23ff70048b780883ff03752a8b542404b8702567b1ff128b3c248b0789ff8b5f0489ff8b7f088d64240457ff742404e833170000eb288b542404b8882567b1ff128b3c248b0789ff8b5f0489ff8b7f088d64240457ff742404e809170000e987160000ff7004ff70088b542408b8a02567b1ff12ff3424ff74240c8b44240cbbc46866b1e8de1600008d642408e9581600008b1424b8b42567b1ff12ff34246a03b801000000bb01000000e85be7fcff8b1424ff128d642404e92c1600008b7804ff700883ff03750d8b542404b8c82567b1ff12eb0b8b542404b8e42567b1ff12ff742404f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e87851f1ffba803066b1bb05000000e8a951f1ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775c89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbf8b1424ff128d642408e9231500008d64240cb8780566b18b5d04ff238b7804ff70088b700c83fe03753c83ff03750d8b542404b8f82567b1ff12eb0b8b542404b8182667b1ff128b3c248b0789ff8b5f0489ff8b7f088d64240457ff742404e84a150000eb3a83ff03750d8b542404b8342667b1ff12eb0b8b542404b8542667b1ff128b3c248b0789ff8b5f0489ff8b7f088d64240457ff742404e80e150000e98c1400008b78048b142483ff077507b8702667b1eb1d83ff057507b8842667b1eb1183ff017507b8982667b1eb05b8a82667b1ff12e956140000ff7004ff70088b780cff378b54240cb8bc2667b1ff12ff74240c8b7c240c8b0789ff8b5f046a03e84be5fcff8b1424ff128d6424048b54240cb8d42667b1ff12ff74240c8b7c24088b0789ff8b5f046a03e821e5fcff8b1424ff128d6424048b3c2483ff038d64240c7507bbe02667b1eb05bbf02667b1bf0c8046b48b07e808f8f0ffbf0c8046b48b078b781057bb6c1e66b1e88b23f1ffe9b9130000ff70048b542404b8b80f66b1ff12ff742404ba803066b18b442404bb03000000e8814ff1ff8b1424ff128d6424088b1424b8e00e66b1ff12e97c1300008b780457e97b130000ff70048b542404b8fc2667b1ff128b3c248b3789f283fe03752389ff8b7f048d642404ff34248b078b5f046a03e862e4fcff8b1424ff128d642404eb5b89ff89d683fa0575108d6424048b1424b8b82167b1ff12eb4289ff83fe01752d89ffff77048b542408b8d02167b1ff12ff742408ba787066b18b442404e849bbf3ff8b1424ff128d64240ceb0e8d6424048b1424b8347166b1ff12e9d6120000ff7004ff7008ff700cff70108b542410b8142767b1ff12f644240c01752c8b7c240c8b3fff7424108b078b5f046a03e8c3e3fcff8b1424ff128d6424048b542410b8282767b1ff12eb00ff742410ba803066b18b442408bb03000000e8624ef1ff8b1424ff128d6424048b7c24088b1789d683fa07753f89ffff77048b542414b8282767b1ff12ff7424148b7c24048b0789ff8b5f046a03e85ae3fcff8b1424ff128d6424088b542410b8342767b1ff12e9c200000089ff89f283fe05753c89ffff77048b542414b8282767b1ff12ff7424148b7c24048b0789ff8b5f046a03e812e3fcff8b1424ff128d6424088b542410b8402767b1ff12eb7d89ff89d683fa03753c89ffff77048b542414b8282767b1ff12ff7424148b7c24048b0789ff8b5f046a03e8cde2fcff8b1424ff128d6424088b542410b84c2767b1ff12eb3889ff83fe01753189ffff77048b542414b8282767b1ff12ff7424148b7c24048b0789ff8b5f046a03e88ae2fcff8b1424ff128d642408eb008b542410b8c42067b1ff12ff7424108b7c24048b0789ff8b5f046a03e85ee2fcff8b1424ff128d642414e92f110000ff7004ff70088b542408b8582767b1ff12ff742408ba803066b18b442408bb03000000e8f44cf1ff8b1424ff128d6424048b542408b8742767b1ff12ff7424088b7c24048b0789ff8b5f046a03e8fee1fcff8b1424ff128d64240ce9cf100000ff7008ff700c8b542408b8b87466b1ff128b542408b8a80d66b1ff12ff7424088b7c24088b0789ff8b5f046a03e8bee1fcff8b1424ff128d6424048b542408b8642167b1ff128b3c248b0789ff8b5f0489ff8b7f088d64240857ff742404e8e9100000e967100000ff70048b542404b8802767b1ff12ff7424048b7c24048b0789ff8b5f046a03e864e1fcff8b1424ff128d642408e935100000ff7004ff70088b542408b89c2767b1ff12ff7424088b7c24088b0789ff8b5f046a03e82fe1fcff8b1424ff128d6424048b542408b8642167b1ff128b3c248b3789f283fe01752289ff8b47048d642404ff742404ba787066b1e82cb8f3ff8b1424ff128d642408eb7b89ff89d683fa05752789ff8b47048d642404ff742404ba803066b1bb03000000e8944bf1ff8b1424ff128d642408eb4b89ff83fe03752289ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742408e8f50f000083c404eb2289ff8b7f048d642404ff7424048b078b5f046a03e87be0fcff8b1424ff128d642408e94c0f0000ff7004ff70088b542408b8ac2767b1ff128b542408b8a80d66b1ff128b3c248b3789f283fe01752289ff8b47048d642404ff742404ba787066b1e862b7f3ff8b1424ff128d642404eb7889ff89d683fa05752789ff8b47048d642404ff742404ba803066b1bb03000000e8ca4af1ff8b1424ff128d642404eb4889ff83fe03751f89ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742408e82b0f0000eb2289ff8b7f048d642404ff7424048b078b5f046a03e8b4dffcff8b1424ff128d6424048b542404b8c02767b1ff12ff7424048b7c24048b0789ff8b5f046a03e88adffcff8b1424ff128d642408e95b0e0000ff70048b542404b8cc2767b1ff12ff7424048b7c24048b0789ff8b5f046a03e858dffcff8b1424ff128d642408e9290e0000ff70048b542404b8e02767b1ff12ff7424048b7c24048b0789ff8b5f046a03e826dffcff8b1424ff128d642408e9f70d0000ff70048b542404b8f02767b1ff128b3c248b3789f283fe01752189ff8b47048d642404ff3424ba787066b1e81cb6f3ff8b1424ff128d642404eb7689ff89d683fa05752689ff8b47048d642404ff3424ba803066b1bb03000000e88549f1ff8b1424ff128d642404eb4789ff83fe03751f89ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742404e8e60d0000eb2189ff8b7f048d642404ff34248b078b5f046a03e870defcff8b1424ff128d642404e9410d00008b1424b8002867b1ff12e9320d0000ff70048b542404b8182867b1ff128b5424048b342489f783fe09750b8d642404b8282867b1eb3f89ff89fe83ff07750b8d642404b83c2867b1eb2b89f689f783fe05750b8d642404b8502867b1eb1789ff83ff038d6424047507b8642867b1eb05b8782867b1ff12e9c50c0000ff7004ff70088b542408b88c2867b1ff12ff742408ba803066b18b442408bb03000000e88a48f1ff8b1424ff128d6424048b3c2483ff038d642408750c8b1424b8a02867b1ff12eb00e9770c0000ff70048b542404b8b42867b1ff12ff742404ba803066b18b442404bb03000000e83f48f1ff8b1424ff128d642408e9440c0000ff7004ff70088b780c8b54240883ff017507b8d02867b1eb1183ff057507b8f02867b1eb05b80c2967b1ff128b542408b8a80d66b1ff12ff7424088b7c24048b0789ff8b5f046a03e818ddfcff8b1424ff128d6424088b542404b8282967b1ff12ff742404f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e85247f1ffba803066b1bb05000000e88347f1ff8b1424ff128d642408e9880b0000ff70048b78088b54240483ff017507b8d02867b1eb1183ff057507b8f02867b1eb05b80c2967b1ff128b542404b8a80d66b1ff12ff7424048b7c24048b0789ff8b5f046a03e85fdcfcff8b1424ff128d6424088b1424b8342967b1ff12e9260b00008b1424b8442967b1ff12e9170b0000ff7004ff70088b542408b8602967b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce8690b00008b542408b8642167b1ff12ff742408ba803066b18b442404bb03000000e8b746f1ff8b1424ff128d64240ce9bc0a00008b1424b87c2967b1ff12e9ad0a0000ff7004ff70088b542408b8942967b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce8ff0a00008b542408b8642167b1ff12ff742408ba787066b18b442404e8bab2f3ff8b1424ff128d64240ce9570a0000ff7008ff700c8b542408b8647566b1ff128b542408b8a80d66b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce89e0a00008b542408b8642167b1ff12ff7424088b7c24048b0789ff8b5f046a01e821dbfcff8b1424ff128d64240ce9f2090000ff7008ff700c8b542408b8b42967b1ff128b542408b8a80d66b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce8390a00008b542408b8642167b1ff12ff742408ba803066b18b442404bb03000000e88745f1ff8b1424ff128d64240ce98c090000ff7004ff70088b542408b8c82967b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce8de0900008b542408b8642167b1ff12ff7424088b7c24048b0789ff8b5f046a03e861dafcff8b1424ff128d64240ce932090000ff7004ff7008ff700c8b54240cb8e42967b1ff12ff3424ff7424108b442410bbc46866b1e8860900008d6424048b542408b8f82967b1ff12ff742408f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e86944f1ffba803066b1bb05000000e89a44f1ff8b1424ff128d64240ce99f080000ff70048b542404b8042a67b1ff12ff7424048b7c24048b0789ff8b5f046a03e89cd9fcff8b1424ff128d642408e96d080000ff70048b542404b8182a67b1ff12ff742404ba803066b18b442404bb03000000e83544f1ff8b1424ff128d642408e93a080000ff7004ff70088b542408b8302a67b1ff12ff7424088b7c24048b0789ff8b5f046a03e834d9fcff8b1424ff128d6424088b542404b8402a67b1ff128b3c248b3789f283fe01752189ff8b47048d642404ff3424ba787066b1e832b0f3ff8b1424ff128d642404eb7689ff89d683fa05752689ff8b47048d642404ff3424ba803066b1bb03000000e89b43f1ff8b1424ff128d642404eb4789ff83fe03751f89ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742404e8fc070000eb2189ff8b7f048d642404ff34248b078b5f046a03e886d8fcff8b1424ff128d642404e9570700008b7804ff7008ff700cff742408bec0fe34b181c6621e00008d743effffe6eb12eb17eb1ceb21eb26eb2beb30eb35eb3aeb3fbf502a67b1eb3dbf602a67b1eb36bf702a67b1eb2fbf802a67b1eb28bf902a67b1eb21bfac2a67b1eb1abfbc2a67b1eb13bfd42a67b1eb0cbfe42a67b1eb05bff42a67b18b378d1c750100000083fb01750ab8042b67b1e98f00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87f102000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604305289fed1eec64430014dd1efc6443802208060ffbf8b1424ff128d642404ff742408f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e8a041f1ffba803066b1bb05000000e8d141f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f87e701000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542408b8642167b1ff128b3c248b3789f283fe01752589ff8b47048d642404ff742404ba787066b1e86fadf3ff8b1424ff128d642408e93d01000089ff89d683fa05752a89ff8b47048d642404ff742404ba803066b1bb03000000e8d440f1ff8b1424ff128d642408e90a01000089ff83fe03752589ff8b470489ff8b5f0889ff8b7f0c8d64240457ff742408e83205000083c404e9de00000089ff8b5f048d642404ff742404f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e82340f1ffba803066b1bb05000000e85440f1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d642408e9ca0300008d64240cb8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642410b8780566b18b5d04ff23ff7004ff70088b542408b8102b67b1ff12ff7424088b7c24048b0789ff8b5f046a03e89ad4fcff8b1424ff128d6424088b542404b8c42067b1ff12ff742404f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8d43ef1ffba803066b1bb05000000e8053ff1ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01776089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d642408e97b0200008d64240cb8780566b18b5d04ff23ff7004ff70088b780c83ff030f852f0100008b542408b8282b67b1ff12ff742408f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8bf3df1ffba803066b1bb05000000e8f03df1ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f878800000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542408b8c42067b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce8bf01000083c408e92a0100008d642410b8780566b18b5d04ff238b542408b83c2b67b1ff12ff742408f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e8903cf1ffba803066b1bb05000000e8c13cf1ff89c78b378d0c750100000083f9017507b898ed66b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f878500000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542408b8c42067b1ff128b7c24048b0789ff8b5f0489ff8b7f0857ff74240ce89000000083c408eb0e8d642410b8780566b18b5d04ff235ab8a00c66b1ff22f604240175548b342489f7ff3689ffff77048b54240cb8182a67b1ff12ff74240cba803066b18b442408bb03000000e8b13bf1ff8b1424ff128d6424048b54240cb8a00c66b1ff125e8d6424048934243b650c7303ff552ceba68d642404eb98f4|@12599,1,@1537|14,0,@6357 489,0,@12463 500,0,@9967 509,0,1 514,1,@4896 532,0,@12464 556,1,@6101 582,0,@12465 606,1,@6101 641,0,@6357 670,0,@10829 677,0,@10849 684,0,@12466 691,0,@10848 698,0,@10835 705,0,@10847 724,0,@12467 744,0,4 765,0,16777215 823,0,0 898,0,@10755 903,1,@6358 912,0,@9537 923,0,@9967 932,0,1 937,1,@4896 960,0,@9465 986,0,@6357 1015,0,@10829 1022,0,@10849 1029,0,@12466 1036,0,@10848 1043,0,@10835 1050,0,@10847 1069,0,@12467 1089,0,4 1110,0,16777215 1168,0,0 1243,0,@10755 1248,1,@6358 1257,0,@12472 1268,0,@10875 1277,1,@5068 1300,0,@9465 1323,0,@6357 1352,0,@10829 1359,0,@10849 1366,0,@12466 1373,0,@10848 1380,0,@10835 1387,0,@10847 1406,0,@12473 1426,0,4 1447,0,16777215 1505,0,0 1585,1,@6101 1603,0,@12472 1635,0,@10875 1640,1,@5068 1678,0,@9967 1683,0,1 1688,1,@4896 1735,1,@6358 1765,1,@6101 1788,0,@9465 1808,0,@12474 1832,1,@6101 1850,0,@12475 1874,1,@6101 1900,0,@12476 1938,1,@6101 1970,0,@12477 1995,0,@12478 2006,0,@10875 2015,1,@5068 2038,0,@10885 2057,0,@12479 2081,0,@12480 2104,0,@12481 2116,0,@12482 2141,0,@6357 2186,0,@12483 2193,0,@12484 2200,0,@12485 2207,0,@12486 2214,0,@12487 2221,0,@12488 2228,0,@12489 2235,0,@12490 2242,0,@12491 2249,0,@12492 2256,0,@12493 2263,0,@12494 2270,0,@12495 2277,0,@12496 2288,0,@12497 2299,0,@9967 2308,0,1 2313,1,@4896 2344,0,@12498 2371,0,@12499 2407,0,@12500 2414,0,@12501 2425,0,@9537 2443,0,@10755 2448,1,@6358 2477,0,@12500 2484,0,@12501 2495,0,@9537 2519,1,@6101 2548,0,@6357 2581,0,@12502 2588,0,@12503 2595,0,@12504 2602,0,@12505 2609,0,@12506 2616,0,@12507 2623,0,@12508 2630,0,@12509 2641,0,@10875 2650,1,@5068 2682,0,@6357 2715,0,@12502 2722,0,@12503 2729,0,@12504 2736,0,@12505 2743,0,@12506 2750,0,@12507 2757,0,@12508 2764,0,@12509 2775,0,@9537 2793,0,@10755 2798,1,@6358 2822,0,@6357 2855,0,@12502 2862,0,@12503 2869,0,@12504 2876,0,@12505 2883,0,@12506 2890,0,@12507 2897,0,@12508 2904,0,@12509 2915,0,@9537 2970,0,@9958 2979,1,@4895 2984,0,@9967 2989,0,2 2994,1,@4896 3015,0,@11884 3032,0,4 3053,0,16777215 3107,0,0 3156,0,@9465 3173,0,@12510 3228,0,@9958 3237,1,@4895 3242,0,@9967 3247,0,2 3252,1,@4896 3273,0,@11884 3290,0,4 3311,0,16777215 3365,0,0 3414,0,@9465 3431,0,@12511 3442,0,@12512 3451,1,@6359 3480,0,@12511 3535,0,@9958 3544,1,@4895 3549,0,@9967 3554,0,2 3559,1,@4896 3580,0,@11884 3597,0,4 3618,0,16777215 3672,0,0 3731,0,@12524 3753,0,@9465 3778,0,@12525 3809,1,@6358 3820,0,@12526 3851,1,@6358 3871,0,@12527 3889,0,@10755 3894,1,@6358 3911,0,@12528 3923,0,0 3928,0,0 3933,1,@6101 3967,0,@12529 3980,0,@12530 4035,0,@9958 4044,1,@4895 4049,0,@9967 4054,0,2 4059,1,@4896 4080,0,@11884 4097,0,4 4118,0,16777215 4172,0,0 4221,0,@9465 4254,0,@12531 4267,0,@12532 4298,1,@6358 4314,0,@12533 4327,0,@12534 4358,1,@6358 4379,0,@12535 4391,0,@12536 4403,0,@12537 4410,0,@12538 4437,0,@12539 4461,1,@6101 4479,0,@12540 4503,1,@6101 4529,0,@12541 4536,0,@12542 4541,0,@19863 4548,1,@4819 4553,0,@19863 4564,0,@9844 4569,1,@4839 4586,0,@9581 4597,0,@9967 4606,0,1 4611,1,@4896 4628,0,@9563 4656,0,@12543 4694,1,@6101 4726,0,@12477 4751,0,@12478 4762,0,@10875 4771,1,@5068 4794,0,@10885 4822,0,@12544 4853,1,@6101 4871,0,@12545 4884,0,@9967 4893,0,1 4898,1,@4896 4934,0,@12545 4958,1,@6101 4976,0,@12546 5006,0,@12545 5030,1,@6101 5048,0,@12547 5075,0,@12545 5099,1,@6101 5117,0,@12548 5142,0,@12545 5166,1,@6101 5186,0,@12464 5210,1,@6101 5239,0,@12549 5250,0,@9967 5259,0,1 5264,1,@4896 5282,0,@12550 5306,1,@6101 5335,0,@10942 5346,0,@9537 5370,1,@6101 5388,0,@12472 5419,1,@6358 5436,0,@12551 5460,1,@6101 5489,0,@12552 5513,1,@6101 5531,0,@12472 5563,0,@10875 5568,1,@5068 5606,0,@9967 5611,0,1 5616,1,@4896 5663,1,@6358 5693,1,@6101 5722,0,@12553 5733,0,@9537 5765,0,@10875 5770,1,@5068 5808,0,@9967 5813,0,1 5818,1,@4896 5865,1,@6358 5892,1,@6101 5910,0,@12554 5934,1,@6101 5960,0,@12555 5984,1,@6101 6010,0,@12556 6034,1,@6101 6060,0,@12557 6091,0,@10875 6096,1,@5068 6133,0,@9967 6138,0,1 6143,1,@4896 6190,1,@6358 6216,1,@6101 6238,0,@12558 6257,0,@12559 6282,0,@12560 6302,0,@12561 6322,0,@12562 6340,0,@12563 6347,0,@12564 6369,0,@12565 6380,0,@9967 6389,0,1 6394,1,@4896 6423,0,@12566 6444,0,@12567 6455,0,@9967 6464,0,1 6469,1,@4896 6506,0,@12568 6518,0,@12569 6525,0,@12570 6536,0,@9537 6560,1,@6101 6578,0,@12571 6633,0,@9958 6642,1,@4895 6647,0,@9967 6652,0,2 6657,1,@4896 6691,0,@12568 6703,0,@12569 6710,0,@12570 6721,0,@9537 6745,1,@6101 6762,0,@12572 6777,0,@12573 6799,0,@12574 6827,1,@6358 6836,0,@12472 6847,0,@9967 6856,0,1 6861,1,@4896 6883,0,@12575 6905,0,@12576 6933,1,@6358 6942,0,@12472 6953,0,@10875 6962,1,@5068 6991,0,@10956 7002,0,@9537 7030,1,@6358 7039,0,@12472 7063,1,@6101 7092,0,@12577 7103,0,@9537 7131,1,@6358 7140,0,@12472 7151,0,@9967 7160,0,1 7165,1,@4896 7194,0,@12578 7222,1,@6358 7231,0,@12472 7255,1,@6101 7287,0,@12579 7305,0,@10755 7310,1,@6358 7323,0,@12580 7378,0,@9958 7387,1,@4895 7392,0,@9967 7397,0,2 7402,1,@4896 7428,0,@12581 7452,1,@6101 7478,0,@12582 7489,0,@9967 7498,0,1 7503,1,@4896 7532,0,@12583 7556,1,@6101 7574,0,@12584 7605,0,@10875 7610,1,@5068 7647,0,@9967 7652,0,1 7657,1,@4896 7704,1,@6358 7730,1,@6101 7762,0,@6357 7799,0,@12585 7806,0,@12586 7813,0,@12587 7820,0,@12588 7827,0,@12589 7834,0,@12590 7841,0,@12591 7848,0,@12592 7855,0,@12593 7862,0,@12594 7881,0,@12595 7901,0,4 7922,0,16777215 7980,0,0 8091,0,@9958 8100,1,@4895 8105,0,@9967 8110,0,2 8115,1,@4896 8136,0,@11883 8153,0,4 8174,0,16777215 8232,0,0 8280,0,@12472 8312,0,@10875 8317,1,@5068 8358,0,@9967 8363,0,1 8368,1,@4896 8418,1,@6358 8476,0,@9958 8481,1,@4895 8486,0,@9967 8491,0,2 8496,1,@4896 8517,0,@11883 8534,0,4 8555,0,16777215 8609,0,0 8662,0,@9465 8676,0,@9465 8690,0,@9465 8710,0,@12596 8734,1,@6101 8752,0,@12464 8807,0,@9958 8816,1,@4895 8821,0,@9967 8826,0,2 8831,1,@4896 8852,0,@11883 8869,0,4 8890,0,16777215 8944,0,0 8997,0,@9465 9029,0,@12597 9084,0,@9958 9093,1,@4895 9098,0,@9967 9103,0,2 9108,1,@4896 9129,0,@11883 9146,0,4 9167,0,16777215 9225,0,0 9273,0,@12464 9301,1,@6358 9318,0,@9465 9332,0,@12598 9387,0,@9958 9396,1,@4895 9401,0,@9967 9406,0,2 9411,1,@4896 9432,0,@11883 9449,0,4 9470,0,16777215 9528,0,0 9576,0,@12464 9604,1,@6358 9618,0,@9465 9629,0,@9515 9658,0,@12582 9669,0,@9967 9678,0,1 9683,1,@4896 9701,0,@9515 6358:D3,424|3b650c7305ff552ccd095053ff74240cba803066b18b442414bb03000000e84d3bf1ff8b1424ff128d6424048b54240cb8080e66b1ff12ff74240c8b7c24088b0789ff8b5f046a03e857d0fcff8b1424ff128d6424048b54240cb8140e66b1ff128b3c248b1789d683fa07754589ffff77048b542410b86c1066b1ff12ff7424108b7c24048b0789ff8b5f046a03e811d0fcff8b1424ff128d64240c8b542408b8042167b18b7c2404897c240c83c40cff2289ff89f283fe05754589ffff77048b542410b86c1066b1ff12ff7424108b7c24048b0789ff8b5f046a03e8c3cffcff8b1424ff128d64240c8b542408b8102167b18b7c2404897c240c83c40cff2289ff89d683fa03754589ffff77048b542410b86c1066b1ff12ff7424108b7c24048b0789ff8b5f046a03e875cffcff8b1424ff128d64240c8b542408b81c2167b18b7c2404897c240c83c40cff2289ff83fe01754589ffff77048b542410b86c1066b1ff12ff7424108b7c24048b0789ff8b5f046a03e829cffcff8b1424ff128d64240c8b542408b8841066b18b7c2404897c240c83c40cff228d642408b801000000c20800f400|@12471,1,@1532|17,0,@9967 26,0,1 31,1,@4896 49,0,@9545 73,1,@6101 91,0,@9546 119,0,@9596 143,1,@6101 161,0,@12468 197,0,@9596 221,1,@6101 239,0,@12469 275,0,@9596 299,1,@6101 317,0,@12470 351,0,@9596 375,1,@6101 393,0,@9598 415,0,0 6359:D3,36|3b650c7305ff552ccd058b72048b520852ff742404bb1900000089742408e915000000f4|@12521,1,@1535|22,0,12 31,1,@6360 6360:D3,3412|3b650c7305ff552ccd0989c753dd07dc1fdfe089c681e60044000081f6004000007507be03000000eb05be0100000083fe03740c8d642404b8ac2467b1c208008b74240cdd07dc0e8b55008d52f43b55087305ff5528cd80895500c742fc02000001dd1a8b74240cdd02dc1edfe089c681e60044000081f6004000007507be03000000eb05be0100000083fe0374288d6424048b742408dd06dc1fdfe089c781e7004500007508b8b82467b1c20800b8c42467b1c208008b542408ff342489f8bb05000000ff1289c7ff37ff7704ff77088b7c24088b3f8d3c7d01000000578b7c24083b7c24107e05e9180700008b7c240883fff70f8c0b0700008b7c240883ff010f8f990100008d642404b8010000002b442404710e8d642410b8f80466b18b5d04ff2383c001e83b0c000089c78b378d0c750100000083f9017507bfe82467b1eb7a89ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f872501000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400430c640052e8d77048d7806d1e9f3a48060ffbf89c78b378d1c75010000008b7424088b368d3475010000005683fb01750d8d6424048b7c2408e9990000008b342483fe0175098d642404e9880000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776589d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708598b7424088d7604d1ef8d3c38d1e9f3a48060ffbf89c7e91a0500008d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff238b3c243b7c24080f8fae0100008b4424082b04248d642404710e8d642410b8f80466b18b5d04ff2383c001e8970a000089c7578b7c240c8b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750a8d6424045fe9a20000008b3c2483ff01750d8d6424088b7c2408e98d0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871001000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24108d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abff42467b1e98400000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776389d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604302ed1efc6443801308060ffbf89c7e95f0300008d642410b8780566b18b5d04ff238d642418b8780566b18b5d04ff238b7c240c8b3f8d347d010000008b7c240883ff010f8c820300008b7c24083bfe760e8d642414b808cf66b18b5d04ff238b7c240c8b3f8d347d010000008b7c24083bfe75098b7c240ce98b0000008b7c240883ff017507bf100666b1eb7b8b44240883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f870903000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd80895500d1ee8972fcc642ff4183ef02c7447afe000000008b7c2408d1ef893a8b4c24088b7c240c8d77048d7a04d1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876802000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b4c24042b4c240c710e8d642418b8f80466b18b5d04ff2383c1018b7c24108b3f8d347d010000008b7c240c83ff010f8ccf01000083f9010f8cb80100008b7c240c8d7c0fff3bfe760e8d642418b808cf66b18b5d04ff238b7c24108b3f8d3c7d010000008b74240c83fe01750d3bcf75098b7c2410e98800000083f9017507bf100666b1eb7c89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f873c01000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd82895500d1ee8972fcc642ff4183ef02c7447afe0000000089cfd1ef893a8b74240c83c608d1ee8b7c24108d34378d7a04d1e9f3a48062ffbf89d7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c408e9a50000008b3c2483ff01750d8d6424085f83c404e9900000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776d89f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf89c783c404e9b00400008d642420b8780566b18b5d04ff238d642418b8780566b18b5d04ff238d642418b8800266b18b5d04ff238d642418b8800266b18b5d04ff238d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642414b8800266b18b5d04ff238b3c2483ff03750d8d6424048b7c2408e9ac0200008b7c240c8b3f8d3c7d0100000083ff03730e8d642414b808cf66b18b5d04ff238b7c240c8b3f8d3c7d0100000083ff0375068b7c240ceb46be050000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41c7470400000000c707010000008b74240c0fb64e04884f048067ffbf8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876c04000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b4c240483e902710e8d642418b8f80466b18b5d04ff238b7c24108b3f8d347d0100000083f9010f8cdb03000089cf83c7023bfe760e8d642418b808cf66b18b5d04ff2383f9017507bf100666b1eb7389c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f878503000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd82895500d1ee8972fcc642ff4183ef02c7447afe0000000089cfd1ef893a8b7c24108d77058d7a04d1e9f3a48062ffbf89d7578b7c24048b378d1c75010000008b34248b368d3475010000005683fb01750d8d6424045f83c408e9a90000008b342483fe01750f8d64240889ff8d642408e9920000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87b902000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d783c4048b378d1c750100000083fb017507bf640f66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870602000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a458062ffbf89d7578b44240883e802710e8d642414b8f80466b18b5d04ff23ba803066b1bb03000000e8fa2df1ff89c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c404e9a30000008b3c2483ff01750a8d6424085fe9910000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870f01000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf89c75e83fe010f84970000008d64240c8b378d0c750100000083f9017508b8101266b1c2080089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01774d89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c640047e8d77048d7805d1e9f3a48060ffbfc20800b8780566b18b5d04ff238d64240c89f8c208008d64241cb8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642420b8780566b18b5d04ff238d642418b8780566b18b5d04ff238d642418b8800266b18b5d04ff238d642414b8780566b18b5d04ff23f400|@12520,1,@1534|36,0,1 43,0,0 57,0,@12514 127,0,1 134,0,0 168,0,@12515 176,0,@12516 193,0,2 269,0,0 284,0,@9455 297,1,@6361 318,0,@12518 335,0,4 356,0,16777215 414,0,0 517,0,4 538,0,16777215 592,0,0 650,0,@9465 664,0,@9465 704,0,@9455 717,1,@6361 799,0,4 820,0,16777215 878,0,0 942,0,@12519 962,0,4 983,0,16777215 1037,0,0 1093,0,@9465 1107,0,@9465 1155,0,@11630 1204,0,@9473 1218,0,4 1239,0,16777215 1297,0,0 1348,0,@9551 1365,0,4 1386,0,16777215 1444,0,0 1497,0,@9455 1561,0,@11630 1611,0,@9473 1623,0,4 1644,0,16777215 1702,0,0 1820,0,4 1841,0,16777215 1895,0,0 1961,0,@9465 1975,0,@9465 1989,0,@9427 2003,0,@9427 2017,0,@9465 2031,0,@9465 2045,0,@9427 2098,0,@11630 2132,0,2 2176,0,0 2182,0,0 2216,0,@9551 2233,0,4 2254,0,16777215 2312,0,0 2364,0,@9455 2409,0,@11630 2424,0,@9473 2436,0,4 2457,0,16777215 2515,0,0 2626,0,4 2647,0,16777215 2705,0,0 2774,0,@9574 2791,0,4 2812,0,16777215 2870,0,0 2922,0,@9455 2932,0,@9967 2937,0,1 2942,1,@4896 3024,0,4 3045,0,16777215 3103,0,0 3185,0,@9631 3203,0,4 3224,0,16777215 3278,0,0 3308,0,@9465 3331,0,@9465 3345,0,@9465 3359,0,@9465 3373,0,@9465 3387,0,@9427 3401,0,@9465 6361:D3,188|3b650c7305ff552ccd0183f8017f06b8100666b1c383e802710ab8f80466b18b5d04ff23e8d7ffffff89c78b378d0c750100000083f9017506b8680e66b1c389ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01774b89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c64004308d77048d7805d1e9f3a48060ffbfc3b8780566b18b5d04ff23f400|@12517,1,@1533|16,0,@9473 27,0,@9455 58,0,@9553 74,0,4 95,0,16777215 149,0,0 177,0,@9465 6362:D3,48|b9f47346b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@12523,1,@1536|1,0,@19856 6363:D3,2460|3b650c7305ff552ccd0953a8010f856b090000ff30ff70048b7c24048b3f83ff4d0f85ca000000f60424010f85be0000008b3c248b3f8b3f83ff4d7507bf03000000eb05bf0100000083ff030f859d0000008b7c24048b57048b7c24048b7f088b34248b0e5e8d6424048b76048b59048b490883eb0103d3710e8d642404b8f80466b18b5d04ff2383ff037507b903000000eb008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7074d0000008b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489385b8b74240489742404c744240803000000e911ffffffeb008b7c24048b3f83ff090f85eb0300008b7c24048b7f0c8b3f83ff057538f6042401752b8b3c248b3f8b3783fe0975188b7f0c8b3f83ff057507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f85970300008b7c2404ff77048b7c2408ff77088b7c240c8b7f0cff77048b7c240cff378b7c2410ff77048b7c24048b7f048b7424048b4e088b7424048b760c8b76048b54240c3bd17502eb348b54240c8b128b193bd3751c8b54240c8b52048b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa037402eb228b54241083fa017502eb0b8b54241083fa097402eb0c83ff017502eb6383ff09745e8b45008d40f43b45087303ff5528894500c740fc020000005f8978045f89388b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2414897b048b7c2410893b8b7424208b54241c8954241c8974242083c418e9b1fdffff6a016a018b54241883fa090f85f300000083ff09753bf6442410017417f7c601000000740f89f283ea018b7c241003fa7002eb0d89f38b442410e83228f1ff89c7c7042409000000897c2404e9a000000083ff010f859c000000f6442410017412f7c601000000740a8b7c24103bfe7c16eb4a89f38b44241056e83e4dfeff5e89c783ff017d36f7c6010000007414f644241001740d89f72b7c2410700583c701eb0d89f08b5c2410e83b29f1ff89c7c7042401000000897c2404eb34f6442410017415f7c601000000740d8b7c24102bfe700583c701eb0d89f38b442410e80529f1ff89c7c7042409000000897c2404e9fc0000008d642428b8a42b67b18b5d04ff238b54241883fa010f857d01000083ff090f8599000000f6442410017412f7c601000000740a8b7c24103bfe7c16eb4a89f38b44241056e87e4cfeff5e89c783ff017d36f7c6010000007414f644241001740d89f72b7c2410700583c701eb0d89f08b5c2410e87b28f1ff89c7c7042409000000897c2404eb34f6442410017415f7c601000000740d8b7c24102bfe700583c701eb0d89f38b442410e84528f1ff89c7c7042401000000897c2404eb3f83ff010f85c4000000f6442410017417f7c601000000740f89f283ea018b7c241003fa7002eb0d89f38b442410e88c26f1ff89c7c7042401000000897c24045e5f8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702050000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8b54240c895708897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e89700489388b5c24188b74242089742420c74424240300000083c41ce931fbffff8d642428b8a42b67b18b5d04ff238d642428b8a42b67b18b5d04ff238b7c24048b3f83ff3f0f85450400008b7c24048b7f088b3783fe0375388b7f088b3f83ff097527f6042401751a8b3c248b3f8b3f83ff4d7507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f85f10300008b7c2404ff77048b7c24088b7f08ff77048b5f0c8b7c24088b3f8b742408ff76048b4f04ff77088b54240889d681fa38f366b17502eb3489f68b1683fa09751889f68b760483fe017507be03000000eb05be01000000eb05be0100000083fe0374098d642404e92703000089ce83ee016bf604710e8d64241cb8f80466b18b5d04ff2383c6013bde7d07be03000000eb05be0100000083fe030f85ef02000089d8bf09000000d1f8d1ff99f7ff8d34450100000089d8bf09000000d1f8d1ff99f7ff8d3c550100000083ff017502eb3c83ff017d07bf03000000eb05bf0100000083ff017507bf03000000eb05bf0100000083ff03741583ee02710e8d64241cb8f80466b18b5d04ff23eb003bf17d02eb0289ce83fe010f85f600000083fb010f85df0000002bce710e8d64241cb8f80466b18b5d04ff2389ce83ee01710e8d64241cb8f80466b18b5d04ff2383fe01750a8d6424045883c404eb4a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a895708897704c7074d0000008b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c4048b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000005e897704c707450000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000008b742408897304893b8b74241089742410c74424140300000083c40ce9adf8ffff8d64241cb8282c67b18b5d04ff2389f283ea016bd204710e8d64241cb8f80466b18b5d04ff2383c20189df2bfa710e8d64241cb8f80466b18b5d04ff2383c7018b55008d52ec3b55087305ff5528cdc2895500c742fc04000000897a0cc74208c46866b18b7c2408897a04c702030000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc030000008957088b54240c895704c7073f0000003bce75068b542404eb6389ca2bd6710e8d64241cb8f80466b18b5d04ff2383c2018b4d008d49f03b4d087305ff5528cdc4894d00c741fc030000008b1c24895908895104c7014d0000008b55008d52f43b55087305ff5528cdc2895500c742fc020000008b5c2404895a04890a8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489388b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000005a895708897704c7074d0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc020000008b742414897304893b8b74241c8974241cc74424200300000083c418e924f7ffff8d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000005e89700489388b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2410897b048b7c240c893b8b74241c8b542418895424188974241c83c414e9c1f6ffff8b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2408897b048b7c2404893b588d6424088b7424088b5424048954240489742408e982f6ffff588b7424088b542404bb010000008954240489742408e917000000f40000|@12609,1,@1540|62,0,1 69,0,0 127,0,@9455 142,0,1 182,0,38 230,0,1 299,0,1 306,0,0 313,0,0 320,0,0 327,0,0 438,0,1 445,0,0 452,0,0 650,1,@4895 659,0,4 714,1,@6189 761,1,@4897 770,0,0 815,1,@4897 824,0,4 842,0,@12601 906,1,@6189 953,1,@4897 962,0,4 1007,1,@4897 1016,0,0 1072,1,@4895 1081,0,0 1122,0,2 1167,0,4 1219,0,1 1236,0,@12601 1250,0,@12601 1317,0,1 1324,0,0 1331,0,0 1338,0,0 1345,0,0 1405,0,@11957 1433,0,1 1440,0,0 1447,0,0 1480,0,@9455 1497,0,1 1504,0,0 1520,0,4 1541,0,4 1572,0,1 1579,0,0 1589,0,1 1596,0,0 1615,0,@9455 1661,0,@9455 1682,0,@9455 1741,0,38 1812,0,34 1863,0,1 1880,0,@12605 1904,0,@9455 1927,0,@9455 1971,0,@10755 1984,0,1 2026,0,31 2051,0,@9455 2100,0,38 2205,0,38 2256,0,1 2440,0,0 2453,1,@6364 6364:D3,432|3b650c7305ff552ccd0953a8010f8585010000ff308b40048b3c248b3f83ff210f8535010000a8010f852b0100008b388b3783fe2975168b7f0483ff037507bf03000000eb05bf01000000eb05bf0100000083ff030f85fe0000008b3c248b5f048b3c248b7f088b088b70048b51083bda75068d642404eb643bda745c8b45008d40f43b45087305ff5528cd42894500c740fc0200000089700489088b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2404897b045f8d642404893b8b7424088b5424048954240489742408e927ffffff8d64240483ff03751889f05b8b74240489742404c744240803000000e906ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c7470401000000c707290000008b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489385b8b74240489742404c744240803000000e9a7feffffeb008b5d008d5bf43b5d087305ff5528cd01895d00c743fc020000008b7c2404897b045f8d642404893b8b7424088b5424048954240489742408e968feffff8b7424088b7c240c5a8916897e04b801000000c20800f400|@12608,1,@1539|64,0,1 71,0,0 78,0,0 241,0,1 282,0,0 288,0,20 336,0,1 423,0,0 6365:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1543|69,0,0 6366:D3,360|3b650c7305ff552ccd0950baf4ce66b189d8bb58d066b1e88c8ff9ff89c7578b7c24048b7ffcc1e708c1ef0783cf01576a018b3c243b7c2404720a8d642410b801000000c38b34248b7c240c8b7c77feff37ff74240cba803066b18b442408bb03000000e8c31ef1ff89c7578b3c248b378d1c750100000083fb01750e8d642404b8940c66b1e98300000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87a400000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d6424048d7804d1e9f3a489df83c708d1efc60438098060ffbf8b1424ff128d6424048b54240cb82c2d67b1ff12ff74240c8b442404bb29000000e8480000008d6424048b542408b8a00c66b1ff128b342483c6028934243b650c7303ff552ce9d9feffff8d64241cb8780566b18b5d04ff23f4|@12614,1,@1545|12,0,@11628 19,0,@11639 24,1,@5762 64,0,0 87,0,@9967 96,0,1 101,1,@4896 130,0,@9514 150,0,4 171,0,16777215 229,0,0 284,0,@12612 299,0,20 304,1,@6367 317,0,@9515 350,0,@9465 6367:D3,404|3b650c7305ff552ccd0989c753f7c7010000000f856c0100008b07ff77048b3c2483ff0175468d6424045f83ff0175158b542404b8c85466b18b3c24897c240483c404ff22ff742404ba803066b1bb03000000e8581df1ff8b14248b7c2404897c240883c408ff228d6424048b7c240483ff0175198d6424088b542404b8c85466b18b3c24897c240483c404ff22ff74240cba803066b1bb03000000e80f1df1ff89c7578b3c248b378d1c750100000083fb01750e8d642404b8380e66b1e98300000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f878a00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d6424048d7804d1e9f3a489df83c708d1efc604382c8060ffbf8b1424ff128d6424048b5c240483eb02710e8d642408b8f80466b18b5d04ff23588b7424088974240883c404e989feffff8d642410b8780566b18b5d04ff238d642404b801000000c20400f40000|@12613,1,@1544|53,0,@10438 74,0,@9967 79,0,1 84,1,@4896 126,0,@10438 147,0,@9967 152,0,1 157,1,@4896 186,0,@9549 206,0,4 227,0,16777215 285,0,0 349,0,@9455 380,0,@9465 394,0,0 6368:D3,184|3b650c7305ff552ccd0953ba803066b1bb03000000e8ee1bf1ff89c78b378d0c750100000083f9017507b8001066b1eb7089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775189d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c64004528d77048d7805d1e9f3a48060ffbf5aff228d6424048d642404b8780566b18b5d04ff23f400|@12616,1,@1546|12,0,@9967 17,0,1 22,1,@4896 43,0,@9587 60,0,4 81,0,16777215 135,0,0 173,0,@9465 6369:D3,2320|3b650c7305ff552ccd09ff33ff730483f8010f8455010000ff74240cba803066b1bb03000000e8111bf1ff89c78b378d0c750100000083f9017507bfb80f66b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87f300000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642044c8d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8e00e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775e89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604383a8060ffbf8b1424ff128d642404eb1c8d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23ff3424f604240175328b3c248b078b3c24ff77048b5c24148b7c241857e8950700008b542414b8a00c66b1ff125e8934243b650c7303ff552cebc88d6424088b3c248b3fbe0c4535b181c6c20100008d74befcffe6e933000000909090e951020000909090e923030000909090e927030000909090e92b030000909090e91d040000909090e9950500009090908b3c24ff77088b7c24048b7f0c8b742404ff7610be0c4535b181c61f0200008d74befcffe6e96b000000909090e973000000909090e97b000000909090e983000000909090e98b000000909090e990000000909090e995000000909090e99a000000909090e99f000000909090e9a4000000909090e9a9000000909090e9ae000000909090e9b3000000909090e9b80000009090908b542410b8303767b1ff12e9b00000008b542410b84c3767b1ff12e9a00000008b542410b8683767b1ff12e9900000008b542410b87c3767b1ff12e9800000008b542410b8943767b1ff12eb738b542410b8ac3767b1ff12eb668b542410b8c43767b1ff12eb598b542410b8dc3767b1ff12eb4c8b542410b8f83767b1ff12eb3f8b542410b8143867b1ff12eb328b542410b82c3867b1ff12eb258b542410b8443867b1ff12eb188b542410b8603867b1ff12eb0b8b542410b8783867b1ff12ff742410ba803066b18b442408bb03000000e8d617f1ff89c757ba803066b18b442408bb03000000e8c017f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704903867b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c3867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b80f66b1e8f0d6f0ff8b14248b7c2410897c241883c418ff228d64240c8b3c24ff77048b7c24048b4708ff74240cba803066b1bb03000000e8fc16f1ff89c757ba803066b18b442408bb03000000e8e616f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704903867b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ac3867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700bc3867b1e816d6f0ff8b14248b7c240c897c241483c414ff228d64240c8d642404b801000000c208008d642404b801000000c208008b3c248b47045fff7708ff742408ba803066b1bb03000000e80d16f1ff89c757ba803066b18b442408bb03000000e8f715f1ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604903867b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bc3867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a00c66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700cc3867b1e804d5f0ff8b14248b7c2408897c241083c410ff228d6424085f8b4704ff742404ba803066b1bb03000000e81915f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfbc3867b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870f01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfbc3867b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8a00c66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776789d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604380a8060ffbf8b14248b7c2404897c240c83c40cff228d6424048d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff235f8b4704ff742404ba803066b1bb03000000e89913f1ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe43867b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870f01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe43867b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8a00c66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776789d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604380a8060ffbf8b14248b7c2404897c240c83c40cff228d6424048d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff23f4000000|@12752,1,@1550|29,0,@9967 34,0,1 39,1,@4896 60,0,@9581 77,0,4 98,0,16777215 156,0,0 199,0,@9563 216,0,4 237,0,16777215 291,0,0 342,0,@9465 356,0,@9465 395,1,@6370 404,0,@9515 434,0,@6369 527,0,@6369 660,0,@12732 676,0,@12733 692,0,@12734 708,0,@12735 724,0,@12736 737,0,@12737 750,0,@12738 763,0,@12739 776,0,@12740 789,0,@12741 802,0,@12742 815,0,@12743 828,0,@12744 841,0,@12745 852,0,@9967 861,0,1 866,1,@4896 874,0,@9967 883,0,1 888,1,@4896 923,0,@12746 960,0,@12747 1027,0,@9581 1032,1,@4827 1074,0,@9967 1079,0,1 1084,1,@4896 1092,0,@9967 1101,0,1 1106,1,@4896 1141,0,@12746 1178,0,@12748 1245,0,@12749 1250,1,@4827 1279,0,0 1291,0,0 1313,0,@9967 1318,0,1 1323,1,@4896 1331,0,@9967 1340,0,1 1345,1,@4896 1380,0,@12746 1417,0,@12749 1452,0,@9515 1519,0,@12750 1524,1,@4827 1557,0,@9967 1562,0,1 1567,1,@4896 1596,0,@12749 1616,0,4 1637,0,16777215 1695,0,0 1704,0,@12749 1709,0,7 1757,0,@9515 1774,0,4 1795,0,16777215 1849,0,0 1909,0,@9465 1923,0,@9465 1941,0,@9967 1946,0,1 1951,1,@4896 1980,0,@12751 2000,0,4 2021,0,16777215 2079,0,0 2088,0,@12751 2093,0,7 2141,0,@9515 2158,0,4 2179,0,16777215 2233,0,0 2293,0,@9465 2307,0,@9465 6370:D3,9164|3b650c7305ff552ccd09538b38be304e35b181c61e0000008d74befcffe6e95b010000909090e987020000909090e9d8020000909090e993030000909090e9d6030000909090e9e8030000909090e91f040000909090e98c040000909090e9ed040000909090e940050000909090e9f9050000909090e991060000909090e934070000909090e977070000909090e981070000909090e9e2070000909090e9fa070000909090e9b8080000909090e9080a0000909090e94e0a0000909090e9660a0000909090e9be0a0000909090e9e10a0000909090e9f90a0000909090e9930b0000909090e9ab0b0000909090e9530c0000909090e9a40c0000909090e97b0d0000909090e9b00d0000909090e9a50e0000909090e9e10e0000909090e9670f0000909090e9fe100000909090e900120000909090e937120000909090e9dd120000909090e9f2120000909090e979130000909090e9ae130000909090e9e3130000909090e9ba140000909090e9d2140000909090e942150000909090ff7004ff7008ff700cff70108b542410b8082e67b1ff12ff742410ba803066b18b44240cbb03000000e86c10f1ff89c757f644240c01740b8b7c240c83ff017d16eb1a8b7c240c0fb67fff8d3c7d0100000083ff2374068b44240ceb0eb8b02f66b18b5c240ce8ef0ff1ffba803066b1bb05000000e82010f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704202e67b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7062c2e67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700382e67b1e850cff0ff8b1424ff128d6424048b5424188b44240c8b5c2410ff128b542410b8442e67b1ff12ff3424e9bc200000ff7004ff7008ff700c8b54240cb8082e67b1ff128b54240cb8382e67b1ff128b5424148b4424048b5c240cff128b54240cb8c42067b1ff128b5424148b4424088b5c240cff128b54240cb8442e67b1ff12ff3424e9062000008b70048b3eff7608ff760cff7610be304e35b181c62a0300008d743effffe6eb0aeb15eb20eb2beb36eb418b54240cb8542e67b1ff12eb3f8b54240cb8642e67b1ff12eb328b54240cb8782e67b1ff12eb258b54240cb88c2e67b1ff12eb188b54240cb89c2e67b1ff12eb0b8b54240cb8b02e67b1ff128b5424148b4424088b5c240cff128b54240cb8380e66b1ff128b7c2414578b4424088b5c2410e8332000008b54240cb8c42067b1ff128b542414588d6424085b8b3c24897c240483c404ff22ff7004ff70088b542408b8342f67b1ff128b542408b8542f67b1ff128b5424108b4424048b5c2408ff128b542408b8642f67b1ff128b542410588d6424045b8b3c24897c240483c404ff22ff7004ff70088b542408b8742f67b1ff12ff742404e9061c0000ff7004ff70088b542408b88c2f67b1ff128b5424108b04248b5c2408ff128d6424048b542404b8a42f67b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff7008ff700c8b78108b54240c83ff037507b8b42f67b1eb05b8cc2f67b1ff128b54240cb8e42f67b1ff128b5424148b4424048b5c240cff128b54240cb8f02f67b1ff128b5424148b04248b5c240cff128d6424088b542404b8003067b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff70088b780cff70108b54240c83ff037507b8103067b1eb1183ff057507b8243067b1eb05b8343067b1ff128b5424148b4424048b5c240cff128b54240cb8c42067b1ff128b5424148b4424088b5c240cff128b54240cb8442e67b1ff12ff3424e98c1a0000ff7008ff700cff70108b54240cb8483067b1ff128b5424148b4424048b5c240cff128b54240cb8380e66b1ff128b5424148b04248b5c240cff128d6424088b542404b8380e66b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff7008ff700c8b54240cb8643067b1ff128b7c2404be304e35b181c6d40500008d743effffe6eb0aeb15eb20eb2beb36eb418b54240cb8783067b1ff12eb3f8b54240cb8883067b1ff12eb328b54240cb8983067b1ff12eb258b54240cb8a43067b1ff12eb188b54240cb8b43067b1ff12eb0b8b54240cb82c6f66b1ff128b54240cb8940c66b1ff128b5424148b04248b5c240cff128d6424048b542408b8c42067b1ff128b5424108b4424048b5c24088b7c240c897c241083c410ff228b7804ff37ff7704ff7708ff770cff77108b542414b8c43067b1ff128b5424148b7c240883ff037507b8d83067b1eb05b8e83067b1ff128b54241c8b44240c8b5c2414ff128b542414b8282967b1ff128b7c241c578b4424148b5c2418e8121d00008b542414b8c42067b1ff128b54241c8b4424048b5c2414ff128b542414b8fc3067b1ff128b54241c588d6424048b5c240c8b7c2410897c241483c414ff228b7804ff37ff7704ff7708ff770cff77108b542414b80c3167b1ff128b7c24088b3f83ff03752d8b7c24088b7f04ff7424148b078b5f046a03e802a0fcff8b1424ff128d6424048b542414b8a80d66b1ff12eb4e8b7c24088b3f83ff057502eb418b7c24088b3f83ff01752b8b7c24088b4704ff742414ba787066b1e8f376f3ff8b1424ff128d6424048b542414b8a80d66b1ff12eb0b8b542414b8243167b1ff12ff74240ce90c150000ff7004ff70088b542408b8383167b1ff128b542408b8503167b1ff128b5424108b4424048b5c2408ff128b542408b8603167b1ff128b542410588d6424045b8b3c24897c240483c404ff225ab8703167b18b3c24897c240483c404ff22ff7004ff7008ff700c8b54240cb8883167b1ff128b54240cb8382e67b1ff128b5424148b04248b5c240cff128d6424048b542408b8a03167b1ff128b5424108b04248b5c2408ff128d6424048b542404b8ac3167b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff7008ff700cff70108b542410b8b83167b1ff12ff74240ce994110000ff7004ff7008ff700c8b54240cb8cc3167b1ff128b7c2404be304e35b181c6c60800008d743effffe6eb0aeb15eb20eb2beb36eb418b54240cb8783067b1ff12eb3f8b54240cb8883067b1ff12eb328b54240cb8983067b1ff12eb258b54240cb8a43067b1ff12eb188b54240cb8b43067b1ff12eb0b8b54240cb82c6f66b1ff128b54240cb8940c66b1ff128b7c2414578b4424048b5c2410e8a51a00008d6424048b542408b8c42067b1ff128b5424108b4424048b5c24088b7c240c897c241083c410ff22ff7004ff7008ff700cff70108b542410b8dc3167b1ff12ff742410ba803066b18b442404bb03000000e88708f1ff89c7578b3c248b378d1c750100000083fb01750e8d642404b8080e66b1e98300000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87d000000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d6424048d7804d1e9f3a489df83c708d1efc60438288060ffbf8b1424ff128d642404f644240c0175168d6424048b7c24088b078b5424148b5c240cff12eb0f8d6424048b54240cb89c1066b1ff128b54240cb8140e66b1ff128b7c2414578b4424048b5c2410e8201d00008d6424048b542408b8c42067b1ff128b542410588b5c24048b7c2408897c240c83c40cff228d64241cb8780566b18b5d04ff23ff7004ff70088b542408b8f83167b1ff12ff742408ba803066b18b442404bb03000000e83507f1ff8b1424ff128d6424088b542404b8c42067b1ff128b54240c585b8b3c24897c240483c404ff22ff70048b542404b80c3267b1ff128b54240c585b8b3c24897c240483c404ff22ff7008ff700cff70108b54240cb8243267b1ff128b5424148b4424088b5c240cff128b54240cb8380e66b1ff128b7c2414578b4424088b5c2410e8781800008b54240cb8c42067b1ff128b542414588d6424085b8b3c24897c240483c404ff22ff70048b542404b83c3267b1ff128b542404b85c3267b1ff128b54240c585b8b3c24897c240483c404ff22ff70048b542404b86c3267b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff70088b542408b88c3267b1ff128b7c2410578b4424088b5c240ce8e91700008b542408b8c42067b1ff128b3c24ff378b7c2404ff77048b542410b80c1066b1ff12ff742410ba803066b18b442408bb03000000e8e805f1ff8b1424ff128d6424048b542410b8080e66b1ff12ff742410ba803066b18b442404bb03000000e8bd05f1ff8b1424ff128d6424145ab8140e66b18b3c24897c240483c404ff22ff70048b542404b8a03267b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff70088b542408b8b03267b1ff12ff742408ba803066b18b442408bb03000000e85a05f1ff8b1424ff128d6424048b542408b8c42067b1ff128b3c24ff378b7c2404ff77048b542410b80c1066b1ff12ff742410ba803066b18b442408bb03000000e81805f1ff8b1424ff128d6424048b542410b8080e66b1ff12ff742410ba803066b18b442404bb03000000e8ed04f1ff8b1424ff128d6424145ab8140e66b18b3c24897c240483c404ff22ff7004ff70088b542408b8cc3267b1ff12ff742408ba803066b18b442408bb03000000e8aa04f1ff8b1424ff128d6424045f8d64240483ff0375125ab8a02867b18b3c24897c240483c404ff228d642404b801000000c20400ff7004ff70088b542408b8e43267b1ff128b5424108b4424048b5c2408ff12ff742408ba803066b18b442404bb03000000e84304f1ff89c78b378d0c750100000083f9017507b8380e66b1eb7089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775e89d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c640042c8d77048d7805d1e9f3a48060ffbf8b14248b7c2410897c241483c414ff228d6424048d642410b8780566b18b5d04ff23ff7004ff70088b542408b8003367b1ff128b5424108b4424048b5c2408ff128b542408b8380e66b1ff12588d6424045b8b74240489742404e9251500008b7804ff7008ff700cff7010be304e35b181c6d80e00008d743effffe6eb12eb1deb28eb33eb3eeb49eb54eb5feb6aeb758b54240cb8183367b1ff12eb738b54240cb82c3367b1ff12eb668b54240cb8403367b1ff12eb598b54240cb8543367b1ff12eb4c8b54240cb8683367b1ff12eb3f8b54240cb8883367b1ff12eb328b54240cb89c3367b1ff12eb258b54240cb8b83367b1ff12eb188b54240cb8cc3367b1ff12eb0b8b54240cb8e03367b1ff128b5424148b4424088b5c240cff128b54240cb8380e66b1ff128b7c2414578b4424088b5c2410e8491400008b54240cb8c42067b1ff128b542414588d6424085b8b3c24897c240483c404ff22ff7004ff70088b542408b8f43367b1ff128b7c2410578b4424048b5c240ce8051400008d6424048b542404b8c42067b1ff128b54240c585b8b3c24897c240483c404ff228b70048b7e04ff7608ff760cff761083ff01750d8b54240cb8083467b1ff12eb1d83ff05750d8b54240cb8203467b1ff12eb0b8b54240cb8383467b1ff128b5424148b4424088b5c240cff128b54240cb8380e66b1ff128b7c2414578b4424048b5c2410e87b1300008d6424048b542408b8c42067b1ff128b542410588d6424045b8b3c24897c240483c404ff228b7004ff368b7e04ff7608ff760cff7610be304e35b181c6ac1000008d743effffe6eb0aeb15eb20eb2beb36eb418b542410b84c3467b1ff12eb3f8b542410b8603467b1ff12eb328b542410b8743467b1ff12eb258b542410b8883467b1ff12eb188b542410b8a03467b1ff12eb0b8b542410b8b43467b1ff128b7c2418578b4424048b5c2414e8ca1200008d6424048b54240cb8c42067b1ff12ff74240cba803066b18b442404bb03000000e8dc00f1ff89c7578b3c248b378d1c750100000083fb01750e8d642404b8080e66b1e98300000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f879300000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d6424048d7804d1e9f3a489df83c708d1efc60438288060ffbf8b1424ff128d6424048b5424148b4424088b5c240cff128b54240cb8140e66b1ff128b4424048b5c240c8b7424148974241483c410e98d1500008d642418b8780566b18b5d04ff23ff7004ff7008ff700cff70108b542410b8c83467b1ff128b7c2418578b44240c8b5c2414e88e1100008b542410b8c42067b1ff128b7c2404ff378b7c2408ff77048b542418b80c1066b1ff12ff742418ba803066b18b442408bb03000000e88cfff0ff8b1424ff128d6424048b542418b8080e66b1ff12ff742418ba803066b18b442404bb03000000e861fff0ff8b1424ff128d64240c8b542410b8140e66b1ff128b542410b82c0e66b1ff12ff742410ba803066b18b442410bb03000000e82bfff0ff8b1424ff128d6424048b542410b8080e66b1ff12ff742410ba803066b18b442404bb03000000e800fff0ff8b1424ff128d6424145ab8140e66b18b3c24897c240483c404ff22ff7004ff70088b542408b8e03467b1ff128b5424108b04248b5c2408ff128d6424048b542404b8c42067b1ff128b54240c585b8b3c24897c240483c404ff228b7804ff37ff7704ff7708ff770cff7710ff77148b542418b8f43467b1ff128b7c240c8b3f83ff03752d8b7c240c8b7f04ff7424188b078b5f046a03e89993fcff8b1424ff128d6424048b542418b8a80d66b1ff12eb4e8b7c240c8b3f83ff057502eb418b7c240c8b3f83ff01752b8b7c240c8b4704ff742418ba787066b1e88a6af3ff8b1424ff128d6424048b542418b8a80d66b1ff12eb0b8b542418b8243167b1ff12ff742414e9e1020000ff70048b542404b8083567b1ff12585b8b74240489742404e9a30f0000ff7004ff7008ff700cff70108b542410b81c3567b1ff128b5424105f83ff037507b8d83067b1eb05b8e83067b1ff128b5424148b04248b5c240cff128d6424048b542408b8c42067b1ff128b5424108b4424048b5c2408ff12f604240175245fff378b542408b8042f67b1ff128b542410588b5c24048b7c2408897c240c83c40cff228d64240cb801000000c20400ff7004ff70088b542408b82c3567b1ff128b5424108b4424048b5c2408ff128b542408b8380e66b1ff12588d6424045b8b74240489742404e9d70e0000ff7004ff70088b542408b8443567b1ff128b5424108b4424048b5c2408ff128b542408b8380e66b1ff12588d6424045b8b74240489742404e99a0e00008b7804ff7008ff700cff7010be304e35b181c6631500008d743effffe6eb0eeb19eb24eb2feb3aeb45eb50eb5b8b54240cb8583567b1ff12eb598b54240cb86c3567b1ff12eb4c8b54240cb8843567b1ff12eb3f8b54240cb8a03567b1ff12eb328b54240cb8b43567b1ff12eb258b54240cb8cc3567b1ff12eb188b54240cb8e03567b1ff12eb0b8b54240cb8f43567b1ff128b5424148b4424088b5c240cff128b54240cb8380e66b1ff128b7c2414578b4424088b5c2410e8dc0d00008b54240cb8c42067b1ff128b542414588d6424085b8b3c24897c240483c404ff22ff70048b542404b80c3667b1ff128b54240c585b8b3c24897c240483c404ff22ff70048b7808ff700c83ff07750d8b542408b82c3667b1ff12eb2f83ff05750d8b542408b8403667b1ff12eb1d83ff03750d8b542408b8543667b1ff12eb0b8b542408b86c3667b1ff128b5424108b04248b5c2408ff128d6424048b542404b8c42067b1ff128b54240c585b8b3c24897c240483c404ff22ff7004ff70088b542408b8803667b1ff128b7c2410578b4424048b5c240ce8000d00008d6424048b542404b8c42067b1ff128b54240c585b8b3c24897c240483c404ff22f60424010f85340200008b3c248b3f8b3424ff7604ff378b7f04ff7424248b1789d683fa050f85de0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e87ffaf0ffba803066b1bb05000000e8b0faf0ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775789d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbfe9fd0000008d64242cb8780566b18b5d04ff2383fe010f85d70000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e898f9f0ffba803066b1bb05000000e8c9f9f0ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbfeb1d8d64242cb8780566b18b5d04ff238b7f048b078b5f046a03e8538efcff8b1424ff128d6424048b542424b8040f66b1ff128b7c242c578b4424048b5c2428e8c10a00008d6424048b542420b8a80d66b1ff125e8934243b650c7303ff552ce9c2fdffff8d642404ff742408f604240175668b3c248b3f8b3424ff7604ff378b4704ff742424ba803066b1bb03000000e8a8f8f0ff8b1424ff128d6424048b542424b8807566b1ff128b7c242c578b4424048b5c2428e84a0a00008d6424048b542420b8a80d66b1ff125e8934243b650c7303ff552ceb948d6424048b542418b8943667b1ff12ff742418ba803066b18b442408bb03000000e83ff8f0ff8b1424ff128d6424048b542418b8a43667b1ff12ff742418ba803066b18b442404bb03000000e814f8f0ff8b1424ff128d64240c8b542410b8b83667b1ff128b5424188b4424088b5c24108b7c2414897c241883c418ff22f604240175548b3c248b3f8b3424ff7604ff378b47048b5424248b5c241cff128b54241cb8040f66b1ff128b7c2424578b4424048b5c2420e8720900008d6424048b542418b8a80d66b1ff125e8934243b650c7303ff552ceba68d642404ff742404f60424010f857a0100008b3c248b3f8b3424ff7604ff37ff77048b7f08ff37ff77048b542428b80c1066b1ff12ff742428ba803066b18b442408bb03000000e841f7f0ff8b1424ff128d6424048b542428b8080e66b1ff12ff742428ba803066b18b442404bb03000000e816f7f0ff8b1424ff128d64240c8b542420b8140e66b1ff12ff742420ba803066b18b442404bb03000000e8ebf6f0ff89c78b378d0c750100000083f9017507b8cc3667b1eb7c89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff010f879b00000089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400428c6400573c64006708d77048d7807d1e9f3a48060ffbf8b1424ff128d6424048b542420b8d83667b1ff128b7c2428578b4424088b5c2424e8fa0700008b542420b8a80d66b1ff128b7424088974240c3b650c7303ff552c83c40ce98afeffff8d642428b8780566b18b5d04ff238d642404f604240175135fff378b542410b8e43667b1ff12ff3424eb3a8d642408f604240175245fff378b542408b8b83667b1ff128b542410588b5c24048b7c2408897c240c83c40cff228d64240cb801000000c20400f604240175468b3c248b078b3c24ff77048b3c2483ff0175108d6424108b5424108b5c2408ff12eb278b5424208b5c2418ff128b542418b8380e66b1ff125e8934243b650c7303ff552cebb48d64240ce975fffffff60424010f85340200008b3c248b3f8b3424ff7604ff378b7f04ff7424208b1789d683fa050f85de0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8bdf4f0ffba803066b1bb05000000e8eef4f0ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775789d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbfe9fd0000008d642428b8780566b18b5d04ff2383fe010f85d70000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8d6f3f0ffba803066b1bb05000000e807f4f0ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbfeb1d8d642428b8780566b18b5d04ff238b7f048b078b5f046a03e89188fcff8b1424ff128d6424048b542420b8040f66b1ff128b7c2428578b4424048b5c2424e8ff0400008d6424048b54241cb8a80d66b1ff125e8934243b650c7303ff552ce9c2fdffff8d642404ff3424f604240175468b3c24ff378b7c2404ff77048b542420b8f83667b1ff128b7c2428578b4424088b5c2424e8a90400008b542420b8a80d66b1ff125e8d6424048934243b650c7303ff552cebb48d6424088b542410b8043767b1ff128b5424188b44240c8b5c2410ff128b542410b8442e67b1ff12ff3424f6042401754b8b3c248b078b3c24ff77048b3c2483ff0175158d6424188b5424085b8b3c24897c240483c404ff228b5424208b5c2418ff128b542418b8380e66b1ff125e8934243b650c7303ff552cebaf8d642418b801000000c20400f6042401754b8b3c248b078b3c24ff77048b3c2483ff0175158d6424148b5424085b8b3c24897c240483c404ff228b54241c8b5c2414ff128b542414b8380e66b1ff125e8934243b650c7303ff552cebaf8d642414b801000000c20400f60424010f852f0200008b3c248b3f8b3424ff7604ff378b7f04ff7424148b1789d683fa050f85de0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e847f1f0ffba803066b1bb05000000e878f1f0ff89c78b378d0c750100000083f9017507b898ed66b1eb7889ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775789d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400478c640056dc640066d8d77048d7807d1e9f3a48060ffbfe9fd0000008d64241cb8780566b18b5d04ff2383fe010f85d70000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e860f0f0ffba803066b1bb05000000e891f0f0ff89c78b378d0c750100000083f9017507b8a4ed66b1eb7489ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775089d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c6400466c64005708d77048d7806d1e9f3a48060ffbfeb1d8d64241cb8780566b18b5d04ff238b7f048b078b5f046a03e81b85fcff8b1424ff128d6424048b542414b8040f66b1ff128b54241c8b04248b5c2414ff128d6424048b542410b8a80d66b1ff125e8934243b650c7303ff552ce9c7fdffff8d642404ff3424f60424010f85820000008b3c248b3f8b3424ff7604ff37ff77048b542418b80c1066b1ff12ff742418ba803066b18b442408bb03000000e863eff0ff8b1424ff128d6424048b542418b8080e66b1ff12ff742418ba803066b18b442404bb03000000e838eff0ff8b1424ff128d64240c8b542410b8140e66b1ff125e8934243b650c7303ff552ce974ffffff8d642410b801000000c20400f6042401754b8b3c248b078b3c24ff77048b3c2483ff0175158d6424148b5424085b8b3c24897c240483c404ff228b54241c8b5c2414ff128b542414b8380e66b1ff125e8934243b650c7303ff552cebaf8d642414b801000000c20400f6042401754b8b3c248b078b3c24ff77048b3c2483ff0175158d6424188b5424085b8b3c24897c240483c404ff228b5424208b5c2418ff128b542418b8380e66b1ff125e8934243b650c7303ff552cebaf8d642418b801000000c20400f4|@12731,1,@1549|14,0,@6370 399,0,@12617 410,0,@9967 419,0,1 424,1,@4896 476,0,@9958 485,1,@4895 490,0,@9967 495,0,2 500,1,@4896 535,0,@12618 572,0,@12619 639,0,@12620 644,1,@4827 676,0,@12621 704,0,@12617 715,0,@12620 740,0,@12464 765,0,@12621 794,0,@6370 827,0,@12622 840,0,@12623 853,0,@12624 866,0,@12625 879,0,@12626 892,0,@12627 917,0,@9549 937,1,@6371 946,0,@12464 985,0,@12633 996,0,@12634 1021,0,@12635 1060,0,@12636 1086,0,@12637 1114,0,@12638 1160,0,@12639 1167,0,@12640 1178,0,@12641 1203,0,@12642 1231,0,@12643 1277,0,@12644 1289,0,@12645 1296,0,@12646 1321,0,@12464 1346,0,@12621 1374,0,@12647 1399,0,@9549 1427,0,@9549 1465,0,@12648 1476,0,@6370 1509,0,@12649 1522,0,@12650 1535,0,@12651 1548,0,@12652 1561,0,@12653 1574,0,@10854 1585,0,@9514 1613,0,@12464 1666,0,@12654 1686,0,@12655 1693,0,@12656 1718,0,@12571 1738,1,@6371 1747,0,@12464 1772,0,@12657 1826,0,@12658 1862,1,@6101 1880,0,@9537 1924,0,@10875 1929,1,@5068 1947,0,@9537 1960,0,@12659 1986,0,@12660 1997,0,@12661 2022,0,@12662 2052,0,@12663 2082,0,@12664 2093,0,@12620 2121,0,@12665 2149,0,@12666 2190,0,@12667 2219,0,@12668 2230,0,@6370 2263,0,@12649 2276,0,@12650 2289,0,@12651 2302,0,@12652 2315,0,@12653 2328,0,@10854 2339,0,@9514 2359,1,@6371 2372,0,@12464 2420,0,@12669 2431,0,@9967 2440,0,1 2445,1,@4896 2474,0,@9545 2494,0,4 2515,0,16777215 2573,0,0 2661,0,@9600 2672,0,@9546 2692,1,@6372 2705,0,@12464 2738,0,@9465 2758,0,@12670 2769,0,@9967 2778,0,1 2783,1,@4896 2801,0,@12464 2833,0,@12671 2871,0,@12672 2896,0,@9549 2916,1,@6371 2925,0,@12464 2961,0,@12673 2972,0,@12674 3004,0,@12675 3039,0,@12676 3059,1,@6371 3068,0,@12464 3091,0,@9588 3102,0,@9967 3111,0,1 3116,1,@4896 3134,0,@9545 3145,0,@9967 3154,0,1 3159,1,@4896 3174,0,@9546 3198,0,@12677 3233,0,@12678 3244,0,@9967 3253,0,1 3258,1,@4896 3276,0,@12464 3299,0,@9588 3310,0,@9967 3319,0,1 3324,1,@4896 3342,0,@9545 3353,0,@9967 3362,0,1 3367,1,@4896 3382,0,@9546 3409,0,@12679 3420,0,@9967 3429,0,1 3434,1,@4896 3459,0,@12566 3480,0,0 3498,0,@12680 3523,0,@9967 3532,0,1 3537,1,@4896 3558,0,@9549 3575,0,4 3596,0,16777215 3650,0,0 3701,0,@9465 3721,0,@12681 3746,0,@9549 3767,1,@6371 3784,0,@6370 3825,0,@12682 3838,0,@12683 3851,0,@12684 3864,0,@12685 3877,0,@12686 3890,0,@12687 3903,0,@12688 3916,0,@12689 3929,0,@12690 3942,0,@12691 3967,0,@9549 3987,1,@6371 3996,0,@12464 4035,0,@12692 4055,1,@6371 4068,0,@12464 4117,0,@12693 4135,0,@12694 4148,0,@12695 4173,0,@9549 4193,1,@6371 4206,0,@12464 4252,0,@6370 4285,0,@12696 4298,0,@12697 4311,0,@12698 4324,0,@12699 4337,0,@12700 4350,0,@12701 4370,1,@6371 4383,0,@12464 4394,0,@9967 4403,0,1 4408,1,@4896 4437,0,@9545 4457,0,4 4478,0,16777215 4536,0,0 4605,0,@9546 4631,1,@6372 4640,0,@9465 4666,0,@12702 4686,1,@6371 4695,0,@12464 4719,0,@9588 4730,0,@9967 4739,0,1 4744,1,@4896 4762,0,@9545 4773,0,@9967 4782,0,1 4787,1,@4896 4805,0,@9546 4816,0,@9548 4827,0,@9967 4836,0,1 4841,1,@4896 4859,0,@9545 4870,0,@9967 4879,0,1 4884,1,@4896 4899,0,@9546 4926,0,@12703 4954,0,@12464 5003,0,@12704 5039,1,@6101 5057,0,@9537 5101,0,@10875 5106,1,@5068 5124,0,@9537 5137,0,@12659 5160,0,@12705 5177,1,@6371 5198,0,@12706 5215,0,@12655 5222,0,@12656 5250,0,@12464 5284,0,@12631 5317,0,0 5335,0,@12707 5360,0,@9549 5381,1,@6371 5396,0,@12708 5421,0,@9549 5442,1,@6371 5459,0,@6370 5496,0,@12709 5509,0,@12710 5522,0,@12711 5535,0,@12712 5548,0,@12713 5561,0,@12714 5574,0,@12715 5587,0,@12716 5612,0,@9549 5632,1,@6371 5641,0,@12464 5677,0,@12717 5720,0,@12718 5738,0,@12719 5756,0,@12720 5769,0,@12721 5797,0,@12464 5832,0,@12722 5852,1,@6371 5865,0,@12464 5968,0,@9958 5973,1,@4895 5978,0,@9967 5983,0,2 5988,1,@4896 6009,0,@11883 6026,0,4 6047,0,16777215 6101,0,0 6145,0,@9465 6199,0,@9958 6204,1,@4895 6209,0,@9967 6214,0,2 6219,1,@4896 6240,0,@11884 6257,0,4 6278,0,16777215 6332,0,0 6369,0,@9465 6389,1,@6101 6407,0,@9566 6427,1,@6371 6440,0,@9537 6498,0,@9967 6503,0,1 6508,1,@4896 6526,0,@10958 6546,1,@6371 6559,0,@9537 6588,0,@12723 6599,0,@9967 6608,0,1 6613,1,@4896 6631,0,@12724 6642,0,@9967 6651,0,1 6656,1,@4896 6674,0,@12725 6742,0,@9566 6762,1,@6371 6775,0,@9537 6842,0,@9588 6853,0,@9967 6862,0,1 6867,1,@4896 6885,0,@9545 6896,0,@9967 6905,0,1 6910,1,@4896 6928,0,@9546 6939,0,@9967 6948,0,1 6953,1,@4896 6974,0,@12726 6991,0,4 7012,0,16777215 7070,0,0 7118,0,@12727 7138,1,@6371 7147,0,@9537 7182,0,@9465 7209,0,@12728 7238,0,@12725 7271,0,0 7334,0,@9549 7442,0,@9958 7447,1,@4895 7452,0,@9967 7457,0,2 7462,1,@4896 7483,0,@11883 7500,0,4 7521,0,16777215 7575,0,0 7619,0,@9465 7673,0,@9958 7678,1,@4895 7683,0,@9967 7688,0,2 7693,1,@4896 7714,0,@11884 7731,0,4 7752,0,16777215 7806,0,0 7843,0,@9465 7863,1,@6101 7881,0,@9566 7901,1,@6371 7914,0,@9537 7967,0,@12729 7987,1,@6371 7996,0,@9537 8029,0,@12730 8054,0,@12621 8124,0,@9549 8149,0,0 8217,0,@9549 8242,0,0 8328,0,@9958 8333,1,@4895 8338,0,@9967 8343,0,2 8348,1,@4896 8369,0,@11883 8386,0,4 8407,0,16777215 8461,0,0 8505,0,@9465 8559,0,@9958 8564,1,@4895 8569,0,@9967 8574,0,2 8579,1,@4896 8600,0,@11884 8617,0,4 8638,0,16777215 8692,0,0 8729,0,@9465 8749,1,@6101 8767,0,@9566 8795,0,@9537 8856,0,@9588 8867,0,@9967 8876,0,1 8881,1,@4896 8899,0,@9545 8910,0,@9967 8919,0,1 8924,1,@4896 8942,0,@9546 8970,0,0 9038,0,@9549 9063,0,0 9131,0,@9549 9156,0,0 6371:D3,948|3b650c7305ff552ccd09538b38be107235b181c61e0000008d74befcffe6e92b000000909090e947000000909090e9fb000000909090e91c010000909090e954020000909090e9600200009090908b4004ff3424ba787066b1e8425af3ff8b14248b7c2408897c240c83c40cff228d642408ff7004ff70088b542408b8280f66b1ff128b7c2404ff378b7c2408ff77048b542410b80c1066b1ff12ff742410ba803066b18b442408bb03000000e886edf0ff8b1424ff128d6424048b542410b8080e66b1ff12ff742410ba803066b18b442404bb03000000e85bedf0ff8b1424ff128d64240c8b542408b8140e66b1ff128b542408b8cc2e67b1ff12ff742408ba803066b18b442404bb03000000e825edf0ff8b1424ff128d64240c5ab8140e66b18b3c24897c240483c404ff228b4004ff3424ba803066b1bb03000000e8f5ecf0ff8b14248b7c2408897c240c83c40cff228d642408ff7004ff7008ff700c8b4010ff74240cba803066b1bb03000000e8c2ecf0ff89c7578b3c248b378d1c750100000083fb01750e8d642404b8080e66b1e98300000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87c700000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d6424048d7804d1e9f3a489df83c708d1efc60438288060ffbf8b1424ff128d6424048b5424148b4424088b5c240cff128b54240cb8140e66b1ff128b7c2414578b4424048b5c2410e8790100008d642404f604240175245fff378b542408b8042f67b1ff128b542410588b5c24048b7c2408897c240c83c40cff228d64240cb801000000c204008d642418b8780566b18b5d04ff238b40048b5424085b8b3c24897c240483c404ff22ff7004ff70088b780cff7010ff37ff77048b542414b80c1066b1ff12ff742414ba803066b18b442408bb03000000e85aebf0ff8b1424ff128d6424048b542414b8080e66b1ff12ff742414ba803066b18b442404bb03000000e82febf0ff8b1424ff128d64240c8b54240cb8140e66b1ff128b54240cb8282767b1ff12ff74240cba803066b18b442408bb03000000e8f9eaf0ff8b1424ff128d6424048b54240cb8cc2e67b1ff12ff74240cba803066b18b442404bb03000000e8ceeaf0ff8b1424ff128d64240c8b542404b8140e66b1ff12f604240175205fff378b542404b8042f67b1ff128b54240c585b8b3c24897c240483c404ff228d642408b801000000c20400f4000000|@12632,1,@1548|14,0,@6371 85,0,@10875 90,1,@5068 125,0,@9569 149,0,@9588 160,0,@9967 169,0,1 174,1,@4896 192,0,@9545 203,0,@9967 212,0,1 217,1,@4896 235,0,@9546 246,0,@12628 257,0,@9967 266,0,1 271,1,@4896 286,0,@9546 309,0,@9967 314,0,1 319,1,@4896 360,0,@9967 365,0,1 370,1,@4896 399,0,@9545 419,0,4 440,0,16777215 498,0,0 567,0,@9546 587,1,@6372 609,0,@12631 642,0,0 654,0,@9465 705,0,@9588 716,0,@9967 725,0,1 730,1,@4896 748,0,@9545 759,0,@9967 768,0,1 773,1,@4896 791,0,@9546 802,0,@12545 813,0,@9967 822,0,1 827,1,@4896 845,0,@12628 856,0,@9967 865,0,1 870,1,@4896 888,0,@9546 908,0,@12631 937,0,0 6372:D3,248|3b650c7305ff552ccd09538b3089f783fe077531ff70048b542404b86c1066b1ff128b54240c8b04248b5c2404ff128d6424045ab8042167b18b3c24897c240483c404ff2289fe83ff057531ff70048b542404b86c1066b1ff128b54240c8b04248b5c2404ff128d6424045ab8102167b18b3c24897c240483c404ff2289f783fe037531ff70048b542404b86c1066b1ff128b54240c8b04248b5c2404ff128d6424045ab81c2167b18b3c24897c240483c404ff2283ff017531ff70048b542404b86c1066b1ff128b54240c8b04248b5c2404ff128d6424045ab8d82e67b18b3c24897c240483c404ff228d642404b801000000c20400f4|@12630,1,@1547|28,0,@9596 53,0,@12468 84,0,@9596 109,0,@12469 140,0,@9596 165,0,@12470 194,0,@9596 219,0,@12629 240,0,0 6373:D3,184|3b650c7305ff552ccd0953ba803066b1bb03000000e84ae9f0ff89c78b378d0c750100000083f9017507b8001066b1eb7089ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d14450100000081faffffff01775189d38d045d02000000f7d80345003b450872053b45007205ff5528cdc6894500d1eb8958fcc640ff4183ea02c74450fe00000000d1ee8930c64004528d77048d7805d1e9f3a48060ffbf5aff228d6424048d642404b8780566b18b5d04ff23f400|@12616,1,@1551|12,0,@9967 17,0,1 22,1,@4896 43,0,@9587 60,0,4 81,0,16777215 135,0,0 173,0,@9465 6374:D3,560|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c38b0889cef6c1010f85f60100008b3683ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089780489308b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d83967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b8483a67b1c3f400|@12769,1,@1555|21,0,@11331 47,0,@9455 152,0,@9771 159,0,1 167,0,@9772 174,0,1 182,0,@9773 189,0,1 196,0,0 241,0,@11374 278,0,@10625 313,0,@11377 349,0,0 356,0,1 363,0,3 369,0,0 408,0,0 445,0,@10448 480,0,@12758 516,0,0 523,0,0 530,0,1 536,0,0 547,0,@11331 553,0,@12765 6375:D3,532|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b3883ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a83a67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@12779,1,@1556|21,0,@11331 34,0,@9455 75,0,@4670 141,0,@9771 148,0,1 156,0,@9772 163,0,1 171,0,@9773 178,0,1 185,0,0 230,0,@11374 267,0,@10625 302,0,@11377 338,0,0 345,0,1 352,0,3 358,0,0 397,0,0 434,0,@10448 469,0,@12771 505,0,0 512,0,0 519,0,1 525,0,0 6376:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc0400000089780c8b7a088978088b7a04897804c700707c35b1c3f4000000|@12823,1,@1560|55,0,@6377 6377:D3,2652|3b650c7305ff552ccd05528b780489fe83ff037d0a8d642404b8b4ab66b1c38b3889fa8b3f83ff010f85fd0100008d6424048b7a0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfa402c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d03b67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa030f85e603000089f28b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9b202000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f088b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70628dc66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707483c67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706643c67b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707803c67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe050f85fd0100008d6424048b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bfac02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc3c67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c38b14248b520c8d6424048b52048b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783d67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@12822,1,@1559|26,0,@11331 59,0,@9455 100,0,@4679 166,0,@9771 173,0,1 181,0,@9772 188,0,1 196,0,@9773 203,0,1 210,0,0 255,0,@11374 292,0,@10625 327,0,@11377 363,0,0 370,0,1 377,0,3 383,0,0 422,0,0 459,0,@10448 494,0,@12789 530,0,0 537,0,0 544,0,1 550,0,0 567,0,@11331 607,0,@9455 631,0,@11421 652,0,@9455 718,0,@11421 739,0,@9455 811,0,@9455 856,0,@4670 895,0,@11424 932,0,@10448 967,0,@11750 1002,0,@10448 1037,0,@11428 1110,0,@10448 1145,0,@12796 1180,0,@10448 1215,0,@11428 1288,0,@10448 1323,0,@12798 1361,0,@11431 1397,0,0 1404,0,0 1411,0,1 1417,0,0 1450,0,0 1487,0,@10448 1522,0,@12800 1558,0,0 1565,0,0 1572,0,1 1578,0,0 1595,0,@11331 1626,0,@9455 1667,0,@4680 1733,0,@9771 1740,0,1 1748,0,@9772 1755,0,1 1763,0,@9773 1770,0,1 1777,0,0 1822,0,@11374 1859,0,@10625 1894,0,@11377 1930,0,0 1937,0,1 1944,0,3 1950,0,0 1989,0,0 2026,0,@10448 2061,0,@12808 2097,0,0 2104,0,0 2111,0,1 2117,0,0 2134,0,@11331 2161,0,@9455 2261,0,@9771 2268,0,1 2276,0,@9772 2283,0,1 2291,0,@9773 2298,0,1 2305,0,0 2350,0,@11374 2387,0,@10625 2422,0,@11377 2458,0,0 2465,0,1 2472,0,3 2478,0,0 2517,0,0 2554,0,@10448 2589,0,@12815 2625,0,0 2632,0,0 2639,0,1 2645,0,0 6378:D3,64|3b650c7305ff552ccd018b00ba787066b1e8ba45f3ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@9475,1,@1557|13,0,@10875 18,1,@5068 55,0,3 6379:D3,68|3b650c7305ff552ccd018b00ba803066b1bb03000000e8f9d8f0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f40000|@9475,1,@1558|13,0,@9967 18,0,1 23,1,@4896 60,0,3 6380:D3,2152|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c38b0889ce8b0983f9010f85f70100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089780489308b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707343e67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f983ff037d06b8b4ab66b1c389f78b3683fe030f85f70100008b7f0483e902710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd86894500c740fc0200000089480489388b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a43e67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389ce83f9037d06b8b4ab66b1c389f98b3f83ff050f85f70100008b790483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e43e67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389ce8b0983f9070f85f70100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089780489308b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707243f67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b8643f67b1c3f4000000|@12848,1,@1561|21,0,@11331 50,0,@9455 155,0,@9771 162,0,1 170,0,@9772 177,0,1 185,0,@9773 192,0,1 199,0,0 244,0,@11374 281,0,@10625 316,0,@11377 352,0,0 359,0,1 366,0,3 372,0,0 411,0,0 448,0,@10448 483,0,@12825 519,0,0 526,0,0 533,0,1 539,0,0 552,0,@11331 579,0,@9455 684,0,@9771 691,0,1 699,0,@9772 706,0,1 714,0,@9773 721,0,1 728,0,0 773,0,@11374 810,0,@10625 845,0,@11377 881,0,0 888,0,1 895,0,3 901,0,0 940,0,0 977,0,@10448 1012,0,@12832 1048,0,0 1055,0,0 1062,0,1 1068,0,0 1081,0,@11331 1108,0,@9455 1213,0,@9771 1220,0,1 1228,0,@9772 1235,0,1 1243,0,@9773 1250,0,1 1257,0,0 1302,0,@11374 1339,0,@10625 1374,0,@11377 1410,0,0 1417,0,1 1424,0,3 1430,0,0 1469,0,0 1506,0,@10448 1541,0,@12836 1577,0,0 1584,0,0 1591,0,1 1597,0,0 1610,0,@11331 1637,0,@9455 1742,0,@9771 1749,0,1 1757,0,@9772 1764,0,1 1772,0,@9773 1779,0,1 1786,0,0 1831,0,@11374 1868,0,@10625 1903,0,@11377 1939,0,0 1946,0,1 1953,0,3 1959,0,0 1998,0,0 2035,0,@10448 2070,0,@12840 2106,0,0 2113,0,0 2120,0,1 2126,0,0 2137,0,@11331 2143,0,@12844 6381:D3,616|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be185566b1e9200100008b7c24048b3f89f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc02c0b08b17ff1289c7578b7c24088b7f048b74240483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d83f67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@12859,1,@1563|21,0,@11331 39,0,@9455 63,0,@10443 90,0,@9455 131,0,@4682 163,0,@9455 204,0,@4672 243,0,@11375 280,0,@10448 315,0,@11428 391,0,@11377 427,0,0 434,0,0 441,0,1 447,0,0 480,0,0 517,0,@10448 552,0,@12852 588,0,0 595,0,0 602,0,1 608,0,0 6382:D3,264|3b650c7305ff552ccd018b18f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e84ecdf0ffba803066b1bb05000000e87fcdf0ff89c78b378d0c750100000083f9017507bfcc3f67b1eb7a89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01777889d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420430c6420577c64206788d77048d7a07d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3b8780566b18b5d04ff23f4000000|@9475,1,@1562|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@12851 103,0,4 124,0,16777215 178,0,0 245,0,3 251,0,@9465 6383:D3,524|3b650c7305ff552ccd018b388b1789d683fa050f85dc0000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e822ccf0ffba803066b1bb05000000e853ccf0ff89c78b378d0c750100000083f9017507bf98ed66b1eb7a89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775989d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420478c642056dc642066d8d77048d7a07d1e9f3a48062ffbf89d7e9f9000000b8780566b18b5d04ff2383fe010f85d50000008b5f04f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e83dcbf0ffba803066b1bb05000000e86ecbf0ff89c78b378d0c750100000083f9017507bfa4ed66b1eb7689ce83c60489f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775289d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420466c64205708d77048d7a06d1e9f3a48062ffbf89d7eb1bb8780566b18b5d04ff238b7f048b078b5f046a03e8fa5ffcff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@9475,1,@1564|61,0,@9958 66,1,@4895 71,0,@9967 76,0,2 81,1,@4896 102,0,@11883 119,0,4 140,0,16777215 194,0,0 236,0,@9465 290,0,@9958 295,1,@4895 300,0,@9967 305,0,2 310,1,@4896 331,0,@11884 348,0,4 369,0,16777215 423,0,0 458,0,@9465 478,1,@6101 515,0,3 6384:D3,532|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b3883ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b84167b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@12887,1,@1565|21,0,@11331 34,0,@9455 75,0,@4670 141,0,@9771 148,0,1 156,0,@9772 163,0,1 171,0,@9773 178,0,1 185,0,0 230,0,@11374 267,0,@10625 302,0,@11377 338,0,0 345,0,1 352,0,3 358,0,0 397,0,0 434,0,@10448 469,0,@12880 505,0,0 512,0,0 519,0,1 525,0,0 6385:D3,756|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9ac0100008b7c24048b3f89f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24088b7f048b74240483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707404267b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060cdc66b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7075c4267b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@12898,1,@1566|21,0,@11331 39,0,@9455 63,0,@11421 90,0,@9455 131,0,@4670 163,0,@9455 204,0,@4670 243,0,@11424 280,0,@10448 315,0,@12889 350,0,@10448 385,0,@11428 458,0,@10448 493,0,@11748 531,0,@11431 567,0,0 574,0,0 581,0,1 587,0,0 620,0,0 657,0,@10448 692,0,@12891 728,0,0 735,0,0 742,0,1 748,0,0 6386:D3,13900|3b650c7305ff552ccd018b38bef09a35b181c61d0000008d74befcffe6e9b3000000909090e91e020000909090e91f040000909090e979050000909090e9f7060000909090e91f0e0000909090e994130000909090e905150000909090e930150000909090e99f160000909090e976180000909090e9991a0000909090e9971a0000909090e9821c0000909090e959220000909090e9a1260000909090e976270000909090e9bd280000909090e93e290000909090e952290000909090e9412e0000909090e92a300000909090e9063100009090908b50048b70088b780c8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e81c350000e84336000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707886d66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b78048b178b77048b5f088b4f0c8b7f10b8f09a35b181c06a0200008d4418ffffe0eb0ceb11eb16eb1beb20eb25eb2ab8b06d66b1eb28b8bc6d66b1eb21b8c86d66b1eb1ab8d46d66b1eb13b8e06d66b1eb0cb8ec6d66b1eb05b8f86d66b18b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304c70307000000538b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e898340000e8bf35000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c3ff70048b4008e814350000e80b3a000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706586e66b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b442404e838fbffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c3ff7004ff70088b400ce8df1df3ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938e894380000e8bb39000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b7804ff7008ff700cff701083ff017507bf906f66b1eb1f83ff037507bfa46f66b1eb138b3f83ff037507bfb86f66b1eb05bfc86f66b18b378d1c750100000083fb017507be080e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ac06000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff7708e8bff7ffff89c757f644240801750f8b7c24088b07e8aaf7ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e87ebcf0ffba803066b1bb05000000e8afbcf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b7c24148b078b7c2414ff77048b7c2418ff7708e865f5ffff89c757f644240801750f8b7c24088b07e850f5ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e824baf0ffba803066b1bb05000000e855baf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b442424e81bf3ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704247066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c424c38d64240cb8780566b18b5d04ff238b78048b07ff7704ff7708ff770cff7710e881f1ffff89c757f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e85cb6f0ffba803066b1bb05000000e88db6f0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf904367b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87c104000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf904367b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d78b74240483fe037507bea04367b1eb05be100666b1568b378d1c75010000008b34248b368d3475010000005683fb01750a8d6424045ee99c0000008b342483fe01750b8d64240889fee9890000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87da03000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442414e8d62f000089c7578b442414e87aefffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e04367b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c7070100000057be070000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41c7470800000000c70707000000c6470429c6470520c647067bc6470743c6470841c6470953c6470a458067ffbf8b378d1c750100000083fb017507bf041266b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87fc01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a7d8062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175035eeb0e8b0424e80f30000089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc4367b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c7000100000083c410c38d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238d642418b8780566b18b5d04ff238b7804ff7008ff700c89f8e80aecffff89c7578b442408e8feebffff89c7578b442408e8f2ebffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706184467b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707184467b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707244467b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38b4004ba787066b1e8541cf3ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38b7804ff7008ff700c89f8e8a22d0000e83d30000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c4467b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b442408e8f2e9ffff89c68b7c240483ff017507ba784367b1eb05ba844367b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000059890f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701545566b18b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c408c38b78048b3789f283fe077530b8544467b1e8f96df0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c389d683fa030f85850000008b4704ba803066b1bb03000000e8f6adf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704604467b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700804467b1e8696df0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c383fe010f85850000008b4704ba803066b1bb03000000e868adf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704604467b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700904467b1e8db6cf0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38b4704ba803066b1bb03000000e8e3acf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704604467b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a04467b1e8566cf0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3ff70048b4008ba803066b1bb03000000e85bacf0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfb04467b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87bc01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfb04467b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abe987566b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870d01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322cd1efc6443a01208062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e88be5ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c746043c5566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c38d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff23b8747166b1c38b7804ff7008ff700c89f8e8d7e4ffff89c757ba803066b18b442404bb03000000e819aaf0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404be947166b1e98900000089df83c71489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf947166b1b9150000008d77048d7a04d1e9f3a489d95f8d77048d7a0ed1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b44240ce8e9e3ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a87166b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c408c38d642410b8780566b18b5d04ff238b7804ff378b5704ff7708ff770cff7710ff77148b7f188b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000005683ff017507bfc8b766b1eb05bfbcb766b18b378d0c750100000083f9017507bec44467b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f874605000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420443c642054cc642063d8d77048d7a07d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba803066b18b44240cbb03000000e836a7f0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bed04467b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f876104000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfd04467b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442414e84627000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7061c4567b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241083ff017507be784367b1eb05be844367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706384567b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b442420e81b270000bf070000008d147d02000000f7da0355003b550872053b55007205ff5528cd01895500d1ef897afcc642ff41c7420800000000c70207000000bf504567b1b90d0000008d77048d7a04d1e9f3a4c6420a288062ffbf8b7d008d7ff43b7d087305ff5528cd05897d00c747fc02000000895704c7070700000057e81d270000e84428000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b442428e824dfffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704604567b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078c4567b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c7000100000083c414c38d642420b8780566b18b5d04ff238d642418b8780566b18b5d04ff238b7804ff70088b37baf09a35b181c2042300008d5432ffffe2eb10eb15eb1aeb1feb24eb29eb2eeb42eb56bff07366b1eb54bf007466b1eb4dbf107466b1eb46bf207466b1eb3fbf307466b1eb38bf407466b1eb318b7f0483ff017507bf507466b1eb05bf607466b1eb1b8b7f0483ff017507bf787466b1eb05bf887466b1eb05bfa07466b18b378d0c750100000083f901750abeb87466b1e98200000089ce83c60889f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f877a03000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642044cc642056fc6420661c64207648d77048d7a08d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff7708e8b8dbffff89c757f644240801750f8b7c24088b07e8a3dbffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e877a0f0ffba803066b1bb05000000e8a8a0f0ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e46f66b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706087066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c410c38d642404b8780566b18b5d04ff238b4004bf070000008d347d02000000f7de0375003b750872053b75007205ff5528cd01897500d1ef897efcc646ff41c7460800000000c70605000000c646044cc646054fc646064fc6460750c64608288066ffbf8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e860210000e8fb23000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38b5004ff7008bf070000008d1c7d02000000f7db035d003b5d0872053b5d007205ff5528cd04895d00d1ef897bfcc643ff41c7430800000000bf0d000000d1ef893bbfa84567b1b90b0000008d77048d7b04d1e9f3a4c64309288063ffbf8b7d008d7ff43b7d087305ff5528cd0c897d00c747fc02000000895f04c707070000005789d0e87323000089c7578b442408e853d7ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175035eeb0e8b0424e8b32b000089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c7000100000083c404c38b4004e891d6ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707487566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c3ff70048b7808ff700cff37ff37be01000000ba01000000e9ac0900008b7804ff7008ff700c8b37baf09a35b181c2282a00008d5432ffffe2eb10eb15eb1aeb1feb24eb29eb2eeb42eb56bff07366b1eb54bf007466b1eb4dbf107466b1eb46bf207466b1eb3fbf307466b1eb38bf407466b1eb318b7f0483ff017507bf507466b1eb05bf607466b1eb1b8b7f0483ff017507bf787466b1eb05bf887466b1eb05bfa07466b1578b3c248b3f8d1c7d0100000083fb01750e8d642404be647566b1e98900000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871604000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf647566b1b90b0000008d77048d7a04d1e9f3a489d95f8d77048d7a09d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b078b7c2404ff77048b7c2408ff7708e885d4ffff89c757f644240801750f8b7c24088b07e870d4ffff89c7eb05bfd86f66b157f644240801740b8b7c240883ff017d16eb1a8b7c24080fb67fff8d3c7d0100000083ff2374068b442408eb0eb8b02f66b18b5c2408e84499f0ffba803066b1bb05000000e87599f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604e46f66b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707087066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706187066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c70701000000578b442414e83bd2ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707747566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c414c38d64240cb8780566b18b5d04ff238b5804ff7008ff700cf6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8e295f0ffba803066b1bb05000000e81396f0ff89c757f644240401740b8b7c240483ff017d16eb1a8b7c24040fb67fff8d3c7d0100000083ff2374068b442404eb0eb8b02f66b18b5c2404e89695f0ffba803066b1bb05000000e8c795f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747048c7566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706987566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a47566b1e8f754f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442408e8b0cfffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c408c38b4004bf090000008d147d02000000f7da0355003b550872053b55007205ff5528cd01895500d1ef897afcc642ff41c7420c00000000bf15000000d1ef893abf404667b1b9130000008d77048d7a04d1e9f3a4c6420d288062ffbf8b7d008d7ff43b7d087305ff5528cd05897d00c747fc02000000895704c7070700000057e8a4230000e8cb24000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38b78048b7008baf09a35b181c2ef3100008d5432ffffe2eb1aeb1feb24eb29eb2eeb33eb38eb3deb42eb47eb4ceb51eb56eb5bbaf84966b1eb59ba104a66b1eb52ba284a66b1eb4bba3c4a66b1eb44ba544a66b1eb3dba6c4a66b1eb36ba844a66b1eb2fba9c4a66b1eb28bab44a66b1eb21bacc4a66b1eb1abae04a66b1eb13baf04a66b1eb0cba004b66b1eb05ba184b66b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70607000000568b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8ed230000e81425000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c33b14240f82050200008d64240489f0ba803066b1bb03000000e88291f0ff89c757ba803066b18b442404bb03000000e86c91f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704d47566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7065c0e66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e07566b1e89850f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b442404e851cbffff89c7578b44240ce845cbffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604146066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c389d183c102518b4f0489d3c1eb0383cb01d1eb0fb60c198d1c4d0100000089d183e10f83f93f7207b901000000eb0e33c083c002d1e9d3e089c183c90123cb83f9017507b903000000eb05b90100000083f10283f901750489f1eb1589f183c102710e8d642414b8f80466b18b5d04ff235b89da89ce3b650c7305ff552ccdc4e96dfdfffff4|@12951,1,@1594|13,0,@6386 251,0,0 320,1,@6387 325,1,@6388 362,0,@10450 398,0,0 405,0,1 412,0,1 418,0,0 451,0,0 488,0,@10448 523,0,@10827 559,0,0 566,0,0 573,0,3 579,0,0 602,0,@6386 633,0,@10829 640,0,@10830 647,0,@10831 654,0,@10832 661,0,@10833 668,0,@10834 675,0,@10835 710,0,3 744,0,0 844,1,@6389 849,1,@6390 886,0,@10450 922,0,0 929,0,1 936,0,1 942,0,0 975,0,0 1012,0,@10448 1080,0,0 1087,0,0 1094,0,3 1100,0,0 1112,1,@6391 1117,1,@6392 1154,0,@10841 1190,0,0 1197,0,1 1204,0,1 1210,0,0 1255,0,@10624 1292,0,@10625 1327,0,@10450 1362,0,@10625 1434,0,0 1441,0,0 1448,0,3 1454,0,0 1469,1,@5065 1506,0,3 1538,0,0 1584,1,@6393 1589,1,@6394 1626,0,@10450 1662,0,0 1669,0,1 1676,0,1 1682,0,0 1715,0,0 1752,0,@10448 1824,0,0 1831,0,0 1838,0,3 1844,0,0 1867,0,@10858 1879,0,@10859 1893,0,@10860 1900,0,@10861 1919,0,@9545 1936,0,4 1957,0,16777215 2015,0,0 2083,0,3 2139,0,@10862 2189,0,@9958 2198,1,@4895 2203,0,@9967 2208,0,2 2213,1,@4896 2250,0,3 2283,0,@10863 2320,0,@10448 2355,0,@10449 2390,0,@10625 2457,0,@10448 2492,0,@10449 2527,0,@10625 2594,0,@10866 2629,0,@10867 2665,0,0 2672,0,1 2679,0,1 2685,0,0 2741,0,@10862 2791,0,@9958 2800,1,@4895 2805,0,@9967 2810,0,2 2815,1,@4896 2852,0,3 2885,0,@10863 2922,0,@10448 2957,0,@10449 2992,0,@10625 3059,0,@10448 3094,0,@10449 3129,0,@10625 3196,0,@10866 3231,0,@10867 3267,0,0 3274,0,1 3281,0,1 3287,0,0 3332,0,@10868 3369,0,@10449 3404,0,@10448 3471,0,@10449 3506,0,@10448 3576,0,@10448 3647,0,0 3654,0,0 3661,0,3 3667,0,0 3680,0,@9465 3759,0,@9958 3768,1,@4895 3773,0,@9967 3778,0,2 3783,1,@4896 3812,0,@12908 3832,0,4 3853,0,16777215 3911,0,0 3920,0,@12908 3925,0,7 3968,0,@12909 3975,0,@9473 4049,0,4 4070,0,16777215 4128,0,0 4204,0,3 4214,1,@6395 4261,0,0 4298,0,@10448 4333,0,@12913 4369,0,0 4376,0,0 4383,0,1 4389,0,0 4395,0,3 4439,0,0 4445,0,3 4496,0,@9630 4513,0,4 4534,0,16777215 4592,0,0 4660,0,3 4693,0,0 4730,0,@10448 4797,0,@10448 4813,1,@6396 4854,0,@10448 4921,0,@10448 4988,0,@12915 5024,0,0 5031,0,1 5038,0,1 5044,0,0 5057,0,@9465 5071,0,@9465 5085,0,@9465 5165,0,@10624 5202,0,@10625 5237,0,@12917 5304,0,@10625 5339,0,@12917 5410,0,@12918 5446,0,0 5453,0,1 5460,0,1 5466,0,0 5475,0,@10875 5480,1,@5068 5517,0,3 5534,1,@6397 5539,1,@6398 5576,0,@12920 5612,0,0 5619,0,1 5626,0,1 5632,0,0 5658,0,@12906 5665,0,@12907 5698,0,0 5736,0,@10448 5802,0,@10448 5869,0,0 5876,0,0 5883,0,3 5889,0,0 5910,0,@12922 5915,1,@4827 5952,0,3 5972,0,@9967 5977,0,1 5982,1,@4896 6017,0,@12923 6054,0,@12925 6059,1,@4827 6096,0,3 6114,0,@9967 6119,0,1 6124,1,@4896 6159,0,@12923 6196,0,@12926 6201,1,@4827 6238,0,3 6247,0,@9967 6252,0,1 6257,1,@4896 6292,0,@12923 6329,0,@12927 6334,1,@4827 6371,0,3 6383,0,@9967 6388,0,1 6393,1,@4896 6422,0,@12928 6442,0,4 6463,0,16777215 6521,0,0 6530,0,@12928 6535,0,9 6583,0,@10960 6603,0,4 6624,0,16777215 6682,0,0 6759,0,3 6804,0,@10446 6878,0,0 6885,0,0 6892,0,0 6898,0,0 6908,0,@9465 6922,0,@9465 6932,0,@10889 6957,0,@9967 6966,0,1 6971,1,@4896 7000,0,@10891 7020,0,4 7041,0,16777215 7099,0,0 7108,0,@10891 7113,0,10 7177,0,3 7222,0,@10446 7259,0,@10448 7358,0,@10892 7394,0,0 7401,0,0 7408,0,3 7414,0,0 7427,0,@9465 7490,0,3 7501,0,@11459 7508,0,@11458 7527,0,@12929 7544,0,4 7565,0,16777215 7623,0,0 7690,0,3 7696,0,@9967 7705,0,1 7710,1,@4896 7739,0,@12930 7759,0,4 7780,0,16777215 7838,0,0 7847,0,@12930 7852,0,8 7916,0,3 7926,1,@6399 7963,0,@12932 7999,0,0 8006,0,0 8013,0,1 8019,0,0 8034,0,@12906 8041,0,@12907 8074,0,0 8111,0,@12934 8147,0,0 8154,0,0 8161,0,1 8167,0,0 8177,1,@6400 8182,0,3 8228,0,0 8234,0,3 8239,0,@12936 8244,0,6 8297,0,3 8303,1,@6401 8308,1,@6402 8378,0,0 8385,0,1 8392,0,1 8398,0,0 8443,0,@12937 8480,0,@10448 8579,0,@10448 8646,0,@10448 8745,0,@10448 8812,0,@10448 8847,0,@12940 8883,0,0 8890,0,1 8897,0,1 8903,0,0 8916,0,@9465 8930,0,@9465 8948,0,@6386 8983,0,@10931 8990,0,@10932 8997,0,@10933 9004,0,@10934 9011,0,@10935 9018,0,@10936 9033,0,@10937 9040,0,@10938 9055,0,@10939 9062,0,@10940 9069,0,@10941 9088,0,@10942 9108,0,4 9129,0,16777215 9187,0,0 9258,0,3 9314,0,@10862 9364,0,@9958 9373,1,@4895 9378,0,@9967 9383,0,2 9388,1,@4896 9425,0,3 9458,0,@10863 9495,0,@10448 9530,0,@10449 9565,0,@10625 9632,0,@10448 9667,0,@10449 9702,0,@10625 9769,0,@10866 9804,0,@10867 9840,0,0 9847,0,1 9854,0,1 9860,0,0 9893,0,0 9930,0,@10448 10001,0,0 10008,0,0 10015,0,3 10021,0,0 10034,0,@9465 10047,0,3 10093,0,0 10099,0,2 10158,0,3 10164,1,@6403 10169,1,@6404 10239,0,0 10246,0,1 10253,0,1 10259,0,0 10271,0,3 10317,0,0 10322,0,6 10331,0,@12942 10336,0,5 10389,0,3 10397,1,@6405 10444,0,@10624 10481,0,@10448 10497,1,@6409 10571,0,0 10578,0,1 10585,0,1 10591,0,0 10638,0,@10624 10675,0,@10954 10711,0,0 10718,0,1 10725,0,1 10731,0,0 10750,0,0 10755,0,0 10776,0,@6386 10811,0,@10931 10818,0,@10932 10825,0,@10933 10832,0,@10934 10839,0,@10935 10846,0,@10936 10861,0,@10937 10868,0,@10938 10883,0,@10939 10890,0,@10940 10897,0,@10941 10924,0,@10956 10944,0,4 10965,0,16777215 11023,0,0 11032,0,@10956 11037,0,5 11101,0,3 11157,0,@10862 11207,0,@9958 11216,1,@4895 11221,0,@9967 11226,0,2 11231,1,@4896 11268,0,3 11301,0,@10863 11338,0,@10448 11373,0,@10449 11408,0,@10625 11475,0,@10448 11510,0,@10449 11545,0,@10625 11612,0,@10866 11647,0,@10867 11683,0,0 11690,0,1 11697,0,1 11703,0,0 11748,0,0 11785,0,@10448 11820,0,@10957 11855,0,@10448 11922,0,@10448 11993,0,0 12000,0,0 12007,0,3 12013,0,0 12026,0,@9465 12077,0,@9958 12082,1,@4895 12087,0,@9967 12092,0,2 12097,1,@4896 12149,0,@9958 12158,1,@4895 12163,0,@9967 12168,0,2 12173,1,@4896 12208,0,@10959 12245,0,@10960 12312,0,@10961 12317,1,@4827 12354,0,3 12399,0,@10624 12436,0,@10448 12504,0,0 12511,0,0 12518,0,3 12524,0,0 12536,0,4 12582,0,0 12587,0,10 12596,0,@12950 12601,0,9 12654,0,3 12660,1,@6410 12665,1,@6411 12735,0,0 12742,0,1 12749,0,1 12755,0,0 12767,0,@6386 12812,0,@10272 12819,0,@10273 12826,0,@10274 12833,0,@10275 12840,0,@10276 12847,0,@10277 12854,0,@10278 12861,0,@10279 12868,0,@10280 12875,0,@10281 12882,0,@10282 12889,0,@10283 12896,0,@10284 12903,0,@10285 12938,0,3 12972,0,0 12979,1,@6412 12984,1,@6413 13021,0,@10450 13057,0,0 13064,0,1 13071,0,1 13077,0,0 13110,0,0 13147,0,@10448 13215,0,0 13222,0,0 13229,0,3 13235,0,0 13256,0,@9967 13261,0,1 13266,1,@4896 13274,0,@9967 13283,0,1 13288,1,@4896 13323,0,@10964 13360,0,@9552 13431,0,@10965 13436,1,@4827 13473,0,3 13530,0,@10624 13567,0,@10448 13602,0,@10449 13637,0,@10625 13741,0,0 13748,0,0 13755,0,3 13761,0,0 13807,0,0 13835,0,1 13842,0,0 13870,0,@9455 6387:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1567|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6388:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1568|66,0,@10624 6389:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1569|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6390:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1570|66,0,@10624 6391:D3,1256|3b650c7305ff552ccd01a8010f85ce0400008b30ff70048b3c2483ff010f851a0200008d6424048b3eff76048b07ff7704ba803066b1bb03000000e8a88bf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747045c4367b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700684367b1e81b4bf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba284367b18b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b3eff76048b07ff7704ba803066b1bb03000000e89289f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747045c4367b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700684367b1e80549f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba284367b18b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e86cfbffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1571|50,0,@9967 55,0,1 60,1,@4896 95,0,@12904 132,0,@12905 137,1,@4827 174,0,3 180,0,@12902 221,0,0 258,0,@10448 332,0,0 339,0,0 346,0,1 352,0,0 369,0,@12906 376,0,@12907 409,0,0 446,0,@10448 513,0,0 520,0,0 527,0,1 533,0,0 566,0,0 584,0,@9967 589,0,1 594,1,@4896 629,0,@12904 666,0,@12905 671,1,@4827 708,0,3 714,0,@12902 755,0,0 792,0,@10448 866,0,0 873,0,0 880,0,1 886,0,0 903,0,@12906 910,0,@12907 943,0,0 980,0,@10448 1047,0,0 1054,0,0 1061,0,1 1067,0,0 1100,0,@10822 1138,0,0 1145,0,0 1152,0,0 1158,0,0 1205,0,@10448 1249,0,0 6392:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1572|66,0,@10624 6393:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1573|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6394:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1574|66,0,@10624 6395:D3,636|3b650c7305ff552ccd01a8010f85600200008b38ff70048b342483fe010f85e30000008d64240483ff01750abfb44367b1e9ac0000008b07ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d44367b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c383ff01750abfb44367b1e9ac0000008b07ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d44367b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e8dafdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4000000|@12903,1,@1575|45,0,@12910 57,0,@12902 94,0,0 131,0,@10448 166,0,@12912 202,0,0 209,0,1 216,0,1 222,0,0 255,0,0 268,0,@12910 280,0,@12902 317,0,0 354,0,@10448 389,0,@12912 425,0,0 432,0,1 439,0,1 445,0,0 478,0,@10822 516,0,0 523,0,0 530,0,0 536,0,0 583,0,@10448 627,0,0 6396:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1576| 6397:D3,652|3b650c7305ff552ccd01a8010f85700200008b38ff70048b342483fe010f85eb0000008d6424048b07ff7704ba284367b1ff1289c78b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b07ff7704ba284367b1ff1289c78b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e8cafdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4000000|@12903,1,@1577|45,0,@12902 66,0,@12906 73,0,@12907 106,0,0 143,0,@10448 210,0,0 217,0,0 224,0,1 230,0,0 263,0,0 276,0,@12902 297,0,@12906 304,0,@12907 337,0,0 374,0,@10448 441,0,0 448,0,0 455,0,1 461,0,0 494,0,@10822 532,0,0 539,0,0 546,0,0 552,0,0 599,0,@10448 643,0,0 6398:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1578|66,0,@10624 6399:D3,188|3b650c7305ff552ccd01a8010f85a20000008b388b400483f801753583ff017507bf784367b1eb05bf844367b18b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c383ff017507bf784367b1eb05bf844367b157e898ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@12931,1,@1579|34,0,@12906 41,0,@12907 74,0,0 87,0,@12906 94,0,@12907 137,0,@10448 181,0,0 6400:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071300000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1580|50,0,9 102,0,0 6401:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1581|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6402:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1582|66,0,@10624 6403:D3,652|3b650c7305ff552ccd01a8010f85700200008b38ff70048b342483fe010f85eb0000008d6424048b07ff7704ba284367b1ff1289c78b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b07ff7704ba284367b1ff1289c78b342483fe018d6424047507ba784367b1eb05ba844367b18b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e8cafdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4000000|@12903,1,@1583|45,0,@12902 66,0,@12906 73,0,@12907 106,0,0 143,0,@10448 210,0,0 217,0,0 224,0,1 230,0,0 263,0,0 276,0,@12902 297,0,@12906 304,0,@12907 337,0,0 374,0,@10448 441,0,0 448,0,0 455,0,1 461,0,0 494,0,@10822 532,0,0 539,0,0 546,0,0 552,0,0 599,0,@10448 643,0,0 6404:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1584|66,0,@10624 6405:D3,276|3b650c7305ff552ccd0189c7f7c7010000000f85f40000008b07ff77048b3c2483ff01752f8d642404e8fa00000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3e8cf00000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604c47466b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e840ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1588|42,1,@6406 77,0,0 85,1,@6406 120,0,@10943 158,0,0 165,0,0 172,0,0 178,0,0 225,0,@10448 269,0,0 6406:D3,828|3b650c7305ff552ccd0189c78b3789f283fe010f85e70000008b4704ff7708ba803066b1bb03000000e8ee77f0ff89c757ba803066b18b442404bb03000000e8d877f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706040f66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b84567b1e80237f0ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c389d683fa05750a8b4704ba284367b1ff2283fe070f85e70000008b4704bf070000008d147d02000000f7da0355003b550872053b55007205ff5528cd01895500d1ef897afcc642ff41c7420800000000c70207000000bfcc4567b1b90d0000008d77048d7a04d1e9f3a4c6420a288062ffbf8b7d008d7ff43b7d087305ff5528cd05897d00c747fc02000000895704c7070700000057e8b5010000e88005000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38b4704ff7708ba803066b1bb03000000e80676f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747045c4367b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700684367b1e87935f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba284367b18b442404ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@12949,1,@1587|32,0,@9967 37,0,1 42,1,@4896 50,0,@9967 59,0,1 64,1,@4896 99,0,0 136,0,@9566 209,0,@12943 214,1,@4827 251,0,3 267,0,@12902 286,0,3 332,0,0 338,0,3 343,0,@12944 348,0,6 401,0,3 407,1,@6407 412,1,@6408 488,0,0 495,0,1 502,0,1 508,0,0 520,0,@9967 525,0,1 530,1,@4896 565,0,@12904 602,0,@12905 607,1,@4827 644,0,3 650,0,@12902 691,0,0 728,0,@10448 802,0,0 809,0,0 816,0,1 822,0,0 6407:D3,956|3b650c7305ff552ccd01a8010f85a00300008b38ff70048b342483fe010f85830100008d6424048b07ff7704ba803066b1bb03000000e89174f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747045c4367b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700684367b1e80434f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba284367b18b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c7001b000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b07ff7704ba803066b1bb03000000e81273f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747045c4367b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700684367b1e88532f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057ba284367b18b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c7001b000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604dc4567b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e89afcffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4000000|@12903,1,@1585|45,0,@9967 50,0,1 55,1,@4896 90,0,@12904 127,0,@12905 132,1,@4827 169,0,3 175,0,@12902 214,0,13 251,0,0 288,0,@10448 362,0,0 369,0,0 376,0,1 382,0,0 415,0,0 428,0,@9967 433,0,1 438,1,@4896 473,0,@12904 510,0,@12905 515,1,@4827 552,0,3 558,0,@12902 597,0,13 634,0,0 671,0,@10448 745,0,0 752,0,0 759,0,1 765,0,0 798,0,@12945 836,0,0 843,0,0 850,0,0 856,0,0 903,0,@10448 947,0,0 6408:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1586|66,0,@10624 6409:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1589| 6410:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1590|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6411:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1591|66,0,@10624 6412:D3,280|3b650c7305ff552ccd0189c7f7c7010000000f85f80000008b07ff77048b3c2483ff0175318d642404ba284367b1ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ba284367b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442404e83cffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@12903,1,@1592|42,0,@12902 79,0,0 87,0,@12902 124,0,@10822 162,0,0 169,0,0 176,0,0 182,0,0 229,0,@10448 273,0,0 6413:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@1593|66,0,@10624 6414:D3,176|3b650c7305ff552ccd0953a8010f8590000000ff70048b4424106a018b5c2408e89b46f2ff89c68b54240c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5c240883c302710e8d64240cb8f80466b18b5d04ff238b7c24148b74241057568b44240ce88bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c208008d642404b801000000c20800f4|@12953,1,@1596|33,1,@4973 89,0,@9455 168,0,0 6415:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e8499ef3ff89c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@1597|31,1,@5181 97,0,0 6416:D3,140|3b650c7305ff552ccd01a80175758b308b40048b7e048b76088b55008d52f83b55087305ff5528cdc1895500c742fc01000000893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1599|132,0,0 6417:D3,384|3b650c7305ff552ccd0953a8010f855e0100008b38ff7004ff77048b7f086a016a016a016a016a016a016a016a01ff37ff7704ff7708ff770cff7710ff7714ff77188b7f1c8b74245c8b5424588b4c24548b5c24508b44244cff742410ff742410ff742410ff742410ff742410575483042434ff74246056525153508b44244c8b5c2448e80b0100008d64241cff3424ff742408ff7424108b7c24188b54241c8b4c24208b5c24248b4424288b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b3c24897e088d6424048b3c24897e048d6424048b3c24893e8d6424248b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c70701000000578b7c24208b74241c8b5424188b4c24148b5c241057565251538b4424188b5c241ce8bafeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc214008d642404b801000000c21400f40000|@10030,1,@1605|133,1,@6418 283,0,0 374,0,0 6418:D3,276|3b650c7305ff552ccd095053be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c243c8b7424248b5424208b4c241c8b5d008d5be43b5d087305ff5528cdc6895d00c743fc060000008b0424894314894b1089530c897308897b04c703b8f735b18b4c24188b7c24308b7424108b54241468ec4767b157565289ca8b442418ff125f8b37bf01000000f7c60100000075368b0e8b56048b198b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc1ebc289fb8b7424248b4c24348b54242c8b7c2428890658894604c7460801000000895e0c894e10c7461403000000895618897e1cb80100000083c404c23400f4|@12959,1,@1604|13,0,0 108,0,@6419 129,0,@12957 148,0,0 241,0,0 254,0,1 265,0,0 6419:D3,80|3b650c7305ff552ccd0589d36a016a018b7b048b73088b530c8b4b108b5b1457565251538d5c2414e8370000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@12956,1,@1602|41,1,@6420 6420:D3,488|3b650c7305ff552ccd09538b7c2418f7c7010000000f85bc0100008b178b770483f8010f858601000089d66a016a018b3e89fa83ff0175338b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000e9d800000089d783fa03751c8b46048b54241cff1289c78b378934248b7f04897c2404e9b500000083ff07751d8b542418b801000000ff1289c7c70424008266b1897c2404e9930000008b56048b7c24148b7ffcc1e708c1ef0783cf013bd7720e8d64240cb8783266b18b5d04ff238b7c24148b7c57fe83ff0175308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000893c24c744240401000000eb318b3f8b178b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70601000000893424897c24048b3c24ff7424048b3783fe017502eb318b47048b5c2414e8d198f3ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b5c24188b442404e86a00000089c78b7424108b142489168d642408897e04b80100000083c40cc2140089c283ea02710e8d642404b8f80466b18b5d04ff2389d089f73b650c7305ff552ccd81e938feffff8d642404b8643c66b18b5d04ff23f40000|@12955,1,@1601|87,0,1 98,0,0 152,0,0 163,0,@11068 204,0,@9988 257,0,1 268,0,0 312,0,0 347,1,@5181 384,0,1 398,1,@6421 421,0,0 443,0,@9455 476,0,@10105 6421:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e81198f3ff89c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@1600|31,1,@5181 97,0,0 6422:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@12958,1,@1603|11,0,0 6423:D3,140|3b650c7305ff552ccd0953a80175728b38ff70048b07ff77048b5c2408e8261bf3ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4|@10030,1,@1607|30,1,@5117 134,0,0 6424:D3,144|3b650c7305ff552ccd01a801757a8b388b40048b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1608|50,0,8 83,0,1 137,0,0 6425:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1609| 6426:D3,140|3b650c7305ff552ccd0953a80175728b38ff70048b07ff77048b5c2408e87e19f3ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b4424048b5c2408e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4|@10030,1,@1610|30,1,@5117 134,0,0 6427:D3,144|3b650c7305ff552ccd01a801757a8b388b40048b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8a1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@1611|50,0,8 83,0,1 137,0,0 6428:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1612| 6429:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@1617| 6430:D3,484|3b650c7305ff552ccd0d89df52ff30ff7004ff37ff7704ff77088b5f0cff7710ff7714ff7718ff771c8b7c240483ff017d098d642428e91e0100008b7c240481ffffffff010f8d0a0100008b7c240489f98d147d02000000f7da0355003b550872053b55007205ff5528cd0a895500d1ef897afcc642ff4089d7d1e9b801000000f3abbe010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc010000408937578b7424388b7d008d7fe43b7d087305ff5528cd4c897d00c747fc06000000895714895f108b4c2420894f0c8b0c24894f08897704c707500036b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706f40136b18b5424308b5d008d5be43b5d087305ff5528cdc4895d00c743fc06000000895314897310897b0c8b7c2424897b088b7c24288b7f04897b04c703640236b18b44241ce86316f3ff89c25f8b37bf01000000eb0e8d642428b8383066b18b5d04ff23f7c60100000075368b1e8b4e048b038b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897b04890389df89ce3b650c7305ff552ccdc4ebc28b74243089168b5424148956048b542410895608897e0c8b7c240c897e108b7c2408897e148b7c2404897e185f8d642414897e1cb80100000083c410c20c00f4000000|@12974,1,@1622|65,0,16777215 125,0,0 132,0,0 219,0,@6431 254,0,@6432 316,0,@6433 325,1,@5117 335,0,0 346,0,@9964 470,0,0 6431:D3,400|3b650c7305ff552ccd0589c7528b3789f283fe07750b8b3c248b47048d642404c389d683fa0375138b57048b34248b7e0c89f68b7610e9be00000083fe050f858d0000008b57048b34248b5e1489d98b5bfcc1e308c1eb0783cb013bd3720e8d642404b8783266b18b5d04ff2389ce8d6424048b7456fef7c601000000752e8b368b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70001000000c38b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c38d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f7c601000000757e8b068b4e0483fa01754c89faff1289c78b3783fe0175078d64240489f8c38b47048b3c248b5f088d642404e8cb90f3ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c389d383eb02710e8d642404b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e97affffff8d642404b8643c66b18b5d04ff23f40000|@12972,1,@1619|100,0,@9988 168,0,0 204,0,1 244,0,1 301,1,@5181 338,0,1 355,0,@9455 388,0,@10105 6432:D3,92|3b650c7305ff552ccd0589d68b108b48048b7d008d7ff83b7d087305ff5528cd46897d00c747fc01000000890f8b5e0489d98b5bfcc1e308c1eb0783cb013bd3720ab8003566b18b5d04ff2389ce897c56feb801000000c3f4000000|@12973,1,@1620|67,0,@10015 83,0,0 6433:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@11272,1,@1621| 6434:D3,24|3b650c7305ff552ccd01b8e4a166b18b5d04ff23f4000000|@11281,1,@1624|11,0,@11277 6435:D3,388|3b650c7305ff552ccd098b3089f783fe1f75088b4008e9e5ffffff89fe83ff2975178b400453bb984b67b1e86801000089c689f7e9be00000089f783fe110f85a40000008b70048b3e83ff050f858c0000008b7e048b53fcc1e208c1ea0783ca013bfa720ab8783266b18b5d04ff238b7c7bfef7c701000000752f8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70701000000eb238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b3783fe0175048b4708c3b801000000c3b80ca066b18b5d04ff2383ff0d75048b4008c3b801000000c3f7c701000000751f8b0f8b5704f6c101740e89d73b650c7305ff552ccdc0ebe0bf01000000eb05bf0300000083ff037506b801000000c38b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c707c400c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3f4|@12977,1,@1626|39,0,@12976 44,1,@6436 102,0,@9988 164,0,0 201,0,1 217,0,0 223,0,@11264 242,0,0 280,0,0 287,0,1 297,0,0 331,0,0 341,0,@9574 347,0,@4619 380,0,0 6436:D3,116|3b650c7305ff552ccd0989c753f7c701000000754f8b07ff77048b5424048b5c240cff1289c7578b7c2410578b4424088b5c240ce8c7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f4000000|@10030,1,@1625|105,0,0 6437:D3,384|3b650c7305ff552ccd0d5250538b342489f783fe0175098d6424045883c404c38b74240489f083fe01750789f88d64240cc36a016a018b7c24108b7f04578d5c2404e84d010000ff3424ff7424086a016a018b7c24208b7f04578b44241c8d5c2404e8f90100008b3c24ff742404f6442410010f85de000000f7c7010000000f85cc0000008b7424108b168b378b1a8b7c24248b470489c13bd80f85a30000008b42088b1689ff3bd10f85860000008b5e0857e87402000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b18b7424248b76048937578b7c240489fb83ff0175068b7c2410eb0b8b442410e8cb02000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c428c38d642428b8483366b18b5d04ff238d642428b8483366b18b5d04ff238d64241ceb048d64241c8b3c2489fb83ff0175098d6424045883c404c38b44240489db8d64240ce9bb020000f40000|@12980,1,@1632|67,1,@6438 99,1,@6439 180,1,@6440 215,0,0 225,0,@9574 261,1,@6441 314,0,@9999 328,0,@9999 377,1,@6442 6438:D3,184|3b650c7305ff552ccd0953a8010f858a000000ff308b40048b3c248b378b54240c3bf275308b75008d76f83b75087305ff5528cd81897500c746fc0100000089ff893e8d6424045f8937894704b801000000c204006a016a018b7c2414578d5c2404e899ffffff5a5e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c204005ebf943966b18b1789168b7f04897e04b801000000c20400f40000|@12979,1,@1627|78,0,0 150,0,0 159,0,@10068 174,0,0 6439:D3,184|3b650c7305ff552ccd0953a8010f858a000000ff308b40048b3c248b378b54240c3bf275308b75008d76f83b75087305ff5528cd81897500c746fc0100000089ff893e8d6424045f8937894704b801000000c204006a016a018b7c2414578d5c2404e899ffffff5a5e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c204005ebf943966b18b1789168b7f04897e04b801000000c20400f40000|@12979,1,@1628|78,0,0 150,0,0 159,0,@10068 174,0,0 6440:D3,148|3b650c7305ff552ccd0989c689df83fe01751783ff017508b801000000c20400b81c9666b18b5d04ff238b06ff7604f7c701000000754b8b1fff77048b54240cff1289c7578b7c2410578b44240c8b5c2408e8a9ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b81c9666b18b5d04ff23f4000000|@11207,1,@1629|25,0,0 33,0,@11204 135,0,@11204 6441:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1630| 6442:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1631| 6443:D3,200|3b650c7305ff552ccd0953a8010f85a60000008b38ff7004ff37ff77048b4424146a018b5c2410e81830f2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d642404c70703000000578b5c240883c302710e8d64240cb8f80466b18b5d04ff238b7c2410578b442408e875ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c204008d642404b801000000c20400f40000|@12982,1,@1634|40,1,@4973 97,0,1 116,0,@9455 190,0,0 6444:D3,504|3b650c7305ff552ccd05528b3089f783fe1f75718b7004ff70088b5c24048b7b045789f0e8e301000089c7578b4424048b5c2408e8570bf3ff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d64240cc7071f0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c383ff190f855c0100008b70048b7e0c83ff010f85430100008b7e1483ff037507bf03000000eb05bf0100000083ff030f85200100008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089386a016a018b7c24088b570489e3ff125a5e8d64240483fa01755df7c601000000754b8b0e89cf8b56048b0983f903751383fa017507ba03000000eb05ba01000000eb05ba0100000083fa0375208b7f0c8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8f84d67b18b5d04ff238b3a8b520483fa01754883fe0175438b77088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8f84d67b18b5d04ff238d642404eb048d642404b801000000c38d642404b801000000c3f4000000|@12991,1,@1641|37,1,@6445 53,1,@5117 100,0,15 166,0,1 173,0,0 218,0,0 224,0,0 257,0,0 317,0,1 324,0,0 331,0,0 373,0,@12988 431,0,12 465,0,@12988 485,0,0 495,0,0 6445:D3,72|3b650c7305ff552ccd0953a801752bff308b40048b7c240c578b5c2408e8deffffff89c3585e8b542404ff34248954240489742408e9220000008d642404b801000000c20400f400|@11273,1,@1640|54,1,@6446 63,0,0 6446:D3,856|3b650c7305ff552ccd09538b3889fe83ff010f8581000000ff7004ff7008ff700c8b40108b5c2418e8fb08f3ff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b342489770c8d6424048b34248977088d6424048b34248977048d642404c707010000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c2080089f783fe05755a8b40048b5c240ce87c08f3ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c2080083ff070f859e0000008b40046a016a018b54241089e3ff128b3424ff742404f7c6010000007407b801000000eb468b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b7c240c89fb83ff01750489c3eb07e8ea01000089c383fb0175075883c40cc20800588b7c240c897c241483c414e92f020000ff7004ff70088b400c8b3883ff190f85370100008b70048b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d6424048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089386a016a018b54241089e3ff125a5e83fa01752a8b3c2489fb83ff0175098d64240489f0c2080089f089db8d6424048b3c24897c240883c408e9ec0100008b3a8b520483fa010f858800000083fe01757d8b378b57048b7f088b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701190000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c208008d642404eb048d642404b8584d67b18b5d04ff238b5c2414e83306f3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d642404c707030000008b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c20800f4|@12987,1,@1639|41,1,@5117 108,0,0 168,1,@5117 205,0,2 290,0,0 327,0,3 360,0,0 382,1,@6447 413,1,@6448 517,0,0 580,1,@6449 642,0,12 683,0,1 739,0,@12984 753,1,@5117 810,0,1 6447:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1636| 6448:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1637| 6449:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1638| 6450:D3,212|3b650c7305ff552ccd018b3883ff07752fff70048b78088b342489f383fe017d0e8d642404b8a84566b18b5d04ff2357b801000000e8ae00000089c689f7eb01c3f7c70100000075248b0f8b57048b49048b0983f905750e89d73b650c7305ff552ccdc0ebdbbf01000000eb05bf0300000083ff03750a8d642404b8003b66b1c38b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c3428b18b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70007000000c3f400|@12998,1,@1646|38,0,@10224 49,0,0 54,1,@6451 103,0,0 110,0,1 124,0,@10093 160,0,@4967 205,0,3 6451:D3,180|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c204008b54240cff1289c7ff378b4704ba644f67b1ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e87bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20400f4|@10221,1,@1645|28,0,0 49,0,@12997 110,0,@9455 6452:D3,76|3b650c7305ff552ccd05528b3c248b5708b801000000ff1289c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248b76048d642404897008897804c7000d000000c3f4|@12999,1,@1647|18,0,0 70,0,6 6453:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8c04f67b1c389d783fa037d06b8b4ab66b1c383fe037506b8345067b1c383ff037d06b8b4ab66b1c3b87c5067b1c3f400|@13016,1,@1648|21,0,@11331 36,0,@13001 49,0,@11331 60,0,@13008 71,0,@11331 77,0,@13012 6454:D3,328|3b650c7305ff552ccd0d52538b3089f783fe01750a8d642408b801000000c389fe83ff09750a8d642408b801000000c389f783fe0375108b70048b78088b760cbb01000000eb7283ff0775298b58048b780883fb017d0e8d642408b8a84566b18b5d04ff2357b801000000e8ec00000089c757eb0a8d642408b801000000c3f6042401752a8b34248b3e89f6ff76048b74240c8b56048b078b5f04ff742408ff125e8934243b650c7303ff552cebd08d64240cb801000000c3f7c60100000075288b4e0489da83c202710e8d642408b8f80466b18b5d04ff2389ce89d33b650c7305ff552ccdc8ebd083fb017d0e8d642408b8a84566b18b5d04ff2357b801000000e8e900000089c757f6042401752a8b34248b3e89f6ff76048b74240c8b56048b078b5f04ff742408ff125e8934243b650c7303ff552cebd08d64240cb801000000c3f4000000|@13019,1,@1651|26,0,0 43,0,0 65,0,0 92,0,@10224 103,0,0 108,1,@6455 122,0,0 180,0,0 208,0,@9455 243,0,@10224 254,0,0 259,1,@6456 319,0,0 6455:D3,128|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c204008b54240cff1289c7578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20400f4|@10221,1,@1649|28,0,0 58,0,@9455 6456:D3,128|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c204008b54240cff1289c7578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20400f4|@10221,1,@1650|28,0,0 58,0,@9455 6457:D3,308|3b650c7305ff552ccd0d89c789d88b3783fe017508b801000000c204008b7f048b3783fe050f85fd0000008b77048b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8783266b18b5d04ff238b7c24048b7c77fe83ff03754c8b3883ff057508b801000000c204008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fe050000008b52048b5c24048b3c24897c240483c404ff2283ff057508b801000000c204008b3883ff0575328b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fe03000000b801000000c204008b7c24048b7ffcc1e708c1ef0783cf013bf7720ab8003566b18b5d04ff238b7c2404c74477fe050000008b52048b5c24048b3c24897c240483c404ff22b8185167b18b5d04ff23f400|@13023,1,@1652|22,0,0 67,0,@9988 97,0,0 125,0,@10015 142,0,2 171,0,0 206,0,@10015 223,0,1 228,0,0 256,0,@10015 273,0,2 297,0,@13020 6458:D3,688|3b650c7305ff552ccd09538b3889fe83ff010f85d1000000ff70088b580c83fb017d0e8d642408b8a84566b18b5d04ff23ff3424b801000000e88602000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b5424048b5afcc1e308c1eb0783cb018b0c2489ce3bcb720e8d642408b8a43266b18b5d04ff2389f689d28b5472fe83fa01743f8b54240c8b4afcc1e108c1e90783c90189f689f23bf1720e8d642408b8003566b18b5d04ff238b74240c89d2897c56fe8d642404b80100000083c404c204008d642408b801000000c2040089f783fe05750c8d642404b801000000c2040083ff0775088b7804e9c20000008b500883fa017d0e8d642404b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd04897500c746fc02000000895604c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707110000008b34248b4efcc1e108c1e90783c9013bd1720e8d642404b8a43266b18b5d04ff2389f68b7456fe8d64240483fe01742e8b7424048b76fcc1e608c1ee0783ce013bd6720ab8003566b18b5d04ff238b742404897c56feb801000000c20400b801000000c20400f7c7010000000f85ca0000008b178b77048b5a0483fb017d0e8d642404b8948966b18b5d04ff238b4d008d49f43b4d087305ff5528cdc8894d00c741fc02000000895904c701050000008b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04c702110000008b0c248b41fcc1e008c1e80783c8013bd8720e8d642404b8a43266b18b5d04ff2389c98b4c59fe83f901742c8b4c24088b49fcc1e108c1e90783c9013bd9720e8d642404b8003566b18b5d04ff238b4c2408895459feeb0089f73b650c7305ff552ccd80e92affffff8d642404b801000000c20400f40000|@13024,1,@1654|40,0,@10224 53,0,0 58,1,@6459 93,0,0 102,0,20 136,0,@9990 187,0,@10015 211,0,0 226,0,0 245,0,0 278,0,@11112 318,0,2 353,0,8 381,0,@9990 426,0,@10015 444,0,0 452,0,0 489,0,@11112 529,0,2 564,0,8 592,0,@9990 637,0,@10015 678,0,0 6459:D3,236|3b650c7305ff552ccd093bc37508b801000000c204008b7c240483ff017d0ab8948966b18b5d04ff238b7424048b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd49897d00c747fc04000000c7470c01000000894708897704c707170000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e842ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@1653|15,0,0 32,0,@11112 76,0,2 111,0,8 144,0,0 156,0,11 171,0,@9455 6460:D3,660|3b650c7305ff552ccd05528b3c248b5710b801000000ff1289c757f6042401740e8d642408b8cc5167b18b5d04ff23f6042401740e8d642408b81c4266b18b5d04ff238b3c24ff378b7c24088b7f0cf7c701000000753b8b178b77048b0a81f9c400c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507bf01000000eb2f8b3f8b3781fec400c0b00f85d10100008b77088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937f7c70100000075278b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707903428b1eb05bfc83a66b1578b1424b801000000ff128b4c240c8b790889fe8b3f83ff01750e8d642404bb003b66b1e91d01000089c989f78b3683fe09750e8d642404bb003b66b1e90401000089c989fe8b3f83ff03757589c989f789fe8b7f0489c98b56088b75008d76e83b75087305ff5528cd87897500c746fc050000008b1c24895e108d6424048b5c2404895e0c89c98b4904894e08895604c706f82d28b18b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c70303000000e98400000089c989f78b3683fe07757089c989fe8b7f0489c98b56088b75008d76e83b75087305ff5528cd87897500c746fc050000008b1c24895e108d6424048b5c2404895e0c89c98b4904894e08895604c706683328b18b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c70307000000eb098d642404bb003b66b1e85700000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c7000d00000083c408c38d64240cb8483366b18b5d04ff23f400|@12999,1,@1656|18,0,0 38,0,@13025 58,0,@10189 96,0,@4619 147,0,0 157,0,0 169,0,@4619 251,0,@4968 258,0,@10091 267,0,0 294,0,@10093 319,0,@10093 409,0,@4956 447,0,1 535,0,@4965 573,0,3 584,0,@10093 589,1,@6461 636,0,6 649,0,@9999 6461:D3,188|3b650c7305ff552ccd0983f80175628b3b83ff057506b801000000c38b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e974ffffffe86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10207,1,@1655|23,0,0 57,0,0 67,0,@9574 73,0,@4620 106,0,0 125,0,@4620 6462:D3,24|b9147446b48b0989e78b651883ec4450ffd189fcc3f40000|@13030,1,@1658|1,0,@19857 6463:D3,24|b92c7446b48b0989e78b651883ec4450ffd189fcc3f40000|@13031,1,@1659|1,0,@19858 6464:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10361,1,@1660|11,0,@10050 6465:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@1661|15,0,1 21,0,0 6466:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1662|11,0,@10262 6467:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1663|16,0,0 27,0,@9455 74,0,@10071 6468:D3,132|3b650c7305ff552ccd01a801756dff308b40048b3c248b3783fe0d755589ff8b7f0883e70983ff017507bf03000000eb05bf0100000083f70283ff03752ee8bdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404eb048d642404e985ffffffb801000000c3f40000|@9865,1,@1664|43,0,1 50,0,0 124,0,0 6469:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1665|15,0,0 26,0,@9455 73,0,@10071 6470:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1666|15,0,0 26,0,@9455 73,0,@10071 6471:D3,444|3b650c7305ff552ccd018b7d008d7fec3b7d087305ff5528cd01897d00c747fc0400000089470cc74708745266b1c747044c5266b1c7070700000057e8bb9cf2ff89c78b378d1c750100000083fb01750aba344b66b1e98600000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e8ae00000089c757b801000000e81101000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977108b342489770c8d642404c74708010000008b34248977048d6424048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c38d642404b8780566b18b5d04ff23f40000|@13070,1,@1669|42,0,@10400 49,0,@10398 55,0,3 61,1,@5065 82,0,@10286 102,0,4 123,0,16777215 181,0,0 227,0,@9473 250,0,@9473 271,0,@10237 281,0,0 286,1,@6472 294,0,0 299,1,@6473 334,0,1 341,0,0 348,0,0 368,0,0 422,0,12 432,0,@9465 6472:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1667|76,0,@10218 86,0,0 6473:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1668|16,0,0 27,0,@9455 74,0,@10071 6474:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1670|15,0,0 26,0,@9455 73,0,@10071 6475:D3,168|3b650c7305ff552ccd0953a8010f858a000000ff30ff7004ba803066b18b442408bb03000000e8813bf0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424048957048937578b5c240c83c302710e8d642410b8f80466b18b5d04ff238b442404e88fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c38d642404b801000000c3f4|@13071,1,@1671|25,0,@9967 34,0,1 39,1,@4896 95,0,@9455 162,0,0 6476:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1672|68,0,0 6477:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1673|76,0,@10218 86,0,0 6478:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1674|16,0,0 27,0,@9455 74,0,@10071 6479:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1675|15,0,0 26,0,@9455 73,0,@10071 6480:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1676|15,0,0 26,0,@9455 73,0,@10071 6481:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1677|15,0,0 26,0,@9455 73,0,@10071 6482:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1678|15,0,0 26,0,@9455 73,0,@10071 6483:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1679|15,0,0 26,0,@9455 73,0,@10071 6484:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1680|15,0,0 26,0,@9455 73,0,@10071 6485:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1681|76,0,@10218 86,0,0 6486:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1682|16,0,0 27,0,@9455 74,0,@10071 6487:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1683|15,0,0 26,0,@9455 73,0,@10071 6488:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1684|15,0,0 26,0,@9455 73,0,@10071 6489:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1685|15,0,0 26,0,@9455 73,0,@10071 6490:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1686|15,0,0 26,0,@9455 73,0,@10071 6491:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1687|15,0,0 26,0,@9455 73,0,@10071 6492:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1688|76,0,@10218 86,0,0 6493:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1689|16,0,0 27,0,@9455 74,0,@10071 6494:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1690|15,0,0 26,0,@9455 73,0,@10071 6495:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1691|15,0,0 26,0,@9455 73,0,@10071 6496:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1692|15,0,0 26,0,@9455 73,0,@10071 6497:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1693|15,0,0 26,0,@9455 73,0,@10071 6498:D3,40|3b650c7305ff552ccd01bad05967b1ff3424bb03000000c744240401000000e918000000f4000000|@13208,1,@1703|11,0,@13135 19,0,1 27,0,0 32,1,@6499 6499:D3,1632|3b650c7305ff552ccd0d5250538b7c24088b570c8b442404ff1289c7578b7c240c8b5708ff1283f8057507bf03000000eb1a83f8037507bf01000000eb0e83f8010f859d040000bf0500000083ff050f85a20000008b44240483c002710e8d642410b8f80466b18b5d04ff2383e8016bc004710e8d642410b8f80466b18b5d04ff2383c001be21000000d1f8d1fe99f7fe8d14550100000083fa017507ba01000000eb2b83fa017d07be03000000eb05be0100000083fe017502eb1383c220710e8d642410b8f80466b18b5d04ff2383fa017507be71000000eb1abe910000002bf2710e8d642410b8f80466b18b5d04ff2383c601eb1183ff037507beb1000000eb05be710000008b55008d52f43b55087305ff5528cdc0895500c742fc0200000059894a04c702010000008b4d008d49f03b4d087305ff5528cdc4894d00c741fc03000000895108c74104b83966b1c7013f0000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c74204ec5967b1890a528b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702050000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560cc7460838f366b1c7460409000000c706090000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7061c5a67b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702405a67b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706605a67b15683ff0575518b74240883fe077507be705a67b1eb2e8b74240883fe057507be7c5a67b1eb1e8b74240883fe037507bea85a67b1eb0e8b74240883fe01750abecc5a67b1e9a30000008d642414b8105b67b18b5d04ff2383ff03754e8b74240883fe077507beb05b67b1eb2e8b74240883fe057507be2c5c67b1eb1e8b74240883fe037507be445c67b1eb0e8b74240883fe017507be5c5c67b1eb508d642414b8105b67b18b5d04ff238b74240883fe077507be685c67b1eb328b74240883fe057507bed85c67b1eb228b74240883fe037507befc5c67b1eb128b74240883fe010f8595010000be145d67b15683ff0575198b74240c83ee04710e8d642418b8f80466b18b5d04ff23eb178b74240c83ee0a710e8d642418b8f80466b18b5d04ff2383fe017e02eb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074f0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604205d67b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707745d67b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703885d67b183fb017507bb01000000eb0cb801000000e84a02000089c383fb017507bba05d67b1eb0cb8a05d67b1e89602000089c383fb0175035beb0e8b0424e8e802000089c38d64240483fb0175035beb0e8b0424e83603000089c38d64240483fb017507bb01000000eb0cb801000000e87e03000089c383fb0175065f83c404eb0e8b0424e8cd03000089c78d64240857be030000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41be09000000e9100100008d642414b8105b67b18b5d04ff238d642410ba803066b1bb03000000e8052df0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe05d67b1e98900000089df83c72289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe05d67b1b9230000008d77048d7a04d1e9f3a489d95f8d77048d7a15d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cfc5d67b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff2383fe0175558b7424105689fb8b442408e8b112fcff89c38b7c24088b7f046a03578b442408e8dc00fdff89c78d64240cbe010000008b45008d40f83b45087305ff5528cdc0894500c740fc01000040893089388060ffbfc2040089f283ea02d1eac604170089f283ea0289d63b650c7305ff552ccdc0eb88f400|@13204,1,@1700|44,0,1 56,0,0 72,0,2 99,0,@9455 121,0,@9455 134,0,16 158,0,0 170,0,1 177,0,0 198,0,@9455 213,0,56 220,0,72 233,0,@9455 253,0,88 260,0,56 296,0,0 332,0,@10071 338,0,31 371,0,@13137 409,0,2 445,0,@11957 452,0,4 458,0,4 491,0,0 528,0,@13140 563,0,@13142 598,0,@13144 618,0,@13145 634,0,@13146 650,0,@13149 666,0,@13152 680,0,@13157 704,0,@13161 720,0,@13170 736,0,@13172 752,0,@13174 763,0,@13157 782,0,@13175 798,0,@13183 814,0,@13186 834,0,@13188 858,0,@9455 883,0,@9455 900,0,0 935,0,39 968,0,@13189 1005,0,@13195 1040,0,@13196 1050,0,0 1057,0,0 1062,1,@6500 1074,0,@13197 1081,0,@13197 1086,1,@6501 1104,1,@6502 1126,1,@6503 1142,0,0 1149,0,0 1154,1,@6504 1175,1,@6505 1187,0,1 1229,0,4 1243,0,@13157 1257,0,@9967 1262,0,1 1267,1,@4896 1296,0,@13202 1316,0,4 1337,0,16777215 1395,0,0 1404,0,@13202 1409,0,17 1471,0,@13203 1481,0,@9978 1487,0,@4611 1501,0,@9465 1527,1,@6115 1548,1,@6176 1559,0,0 6500:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1694| 6501:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1695| 6502:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1696| 6503:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1697| 6504:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1698| 6505:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1699| 6506:D3,24|b9447446b48b0989e78b651883ec38ffd189fcc3f4000000|@13206,1,@1701|1,0,@19859 6507:D3,44|b9587446b48b0989e78965208b651883ec4050ff751cffd189fc837d10017501c38b45108b5d04ff23f40000|@13207,1,@1702|1,0,@19860 6508:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1704|16,0,0 27,0,@9455 74,0,@10071 6509:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1705|15,0,0 26,0,@9455 73,0,@10071 6510:D3,40|3b650c7305ff552ccd01bae05e67b1ff3424bb03000000c744240401000000e918000000f4000000|@13208,1,@1709|11,0,@13212 19,0,1 27,0,0 32,1,@6511 6511:D3,1452|3b650c7305ff552ccd0d5250538b7c24088b570c8b442404ff1289c7578b7c240c8b5708ff1283f8057507bf03000000eb1a83f8037507bf01000000eb0e83f8010f85ea030000bf0500000083ff050f858f0000008b44240483e8016bc004710e8d642410b8f80466b18b5d04ff2383c001be21000000d1f8d1fe99f7fe8d34550100000083fe017507be01000000eb2b83fe017d07ba03000000eb05ba0100000083fa017502eb1383c620710e8d642410b8f80466b18b5d04ff2383fe017507b971000000eb1ab9910000002bce710e8d642410b8f80466b18b5d04ff2383c101eb1183ff037507b9b1000000eb05b9710000008b75008d76f43b75087305ff5528cd82897500c746fc020000005a895604c706010000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208c74204b83966b1c7023f0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc7410838f366b1c7410409000000c701090000008b75008d76f43b75087305ff5528cd86897500c746fc02000000c7460401000000890e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7011c5a67b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706605a67b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701f85967b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916568b74240483fe09752283ff057507b8f45e67b1eb1183ff037507b87c5f67b1eb05b8985f67b1e98a0000008b74240483fe07751f83ff057507b8146067b1eb1183ff037507b87c5f67b1eb05b8206067b1eb628b74240483fe05751f83ff057507b8645f67b1eb1183ff037507b87c5f67b1eb05b8446067b1eb3a8b74240483fe03751f83ff057507b8705f67b1eb1183ff037507b85c6067b1eb05b8686067b1eb128b74240483fe010f8530010000b80100000083ff0575198b74240483ee04710e8d642410b8f80466b18b5d04ff23eb178b74240483ee0a710e8d642410b8f80466b18b5d04ff2383fe017e02eb05be010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7074f0000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707c45d67b18b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703b85d67b183fb01750489c3eb07e8ed01000089c383fb0175065f83c404eb0e8b0424e83c02000089c78d64240857be030000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41be09000000e9100100008d642410b8746067b18b5d04ff238d642410ba803066b1bb03000000e87c23f0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe05d67b1e98900000089df83c72289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe05d67b1b9230000008d77048d7a04d1e9f3a489d95f8d77048d7a15d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cfc5d67b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff2383fe0175558b7424105689fb8b442408e82809fcff89c38b7c24088b7f046a01578b442408e853f7fcff89c78d64240cbe010000008b45008d40f83b45087305ff5528cdc0894500c740fc01000040893089388060ffbfc2040089f283ea02d1eac604170089f283ea0289d63b650c7305ff552ccdc0eb88f4|@13244,1,@1708|44,0,1 56,0,0 72,0,2 102,0,@9455 115,0,16 139,0,0 151,0,1 158,0,0 179,0,@9455 194,0,56 201,0,72 214,0,@9455 234,0,88 241,0,56 277,0,0 313,0,@10071 319,0,31 354,0,2 390,0,@11957 397,0,4 403,0,4 436,0,0 473,0,@13140 508,0,@13144 543,0,@13138 594,0,@13213 606,0,@13223 613,0,@13225 637,0,@13234 649,0,@13223 656,0,@13235 677,0,@13221 689,0,@13223 696,0,@13238 717,0,@13222 729,0,@13240 736,0,@13241 756,0,0 779,0,@9455 804,0,@9455 821,0,0 856,0,39 889,0,0 926,0,@13200 961,0,@13199 975,1,@6512 996,1,@6513 1008,0,1 1050,0,4 1064,0,@13242 1078,0,@9967 1083,0,1 1088,1,@4896 1117,0,@13202 1137,0,4 1158,0,16777215 1216,0,0 1225,0,@13202 1230,0,17 1292,0,@13203 1302,0,@9978 1308,0,@4611 1322,0,@9465 1348,1,@6115 1369,1,@6176 1380,0,0 6512:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1706| 6513:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1707| 6514:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1710|16,0,0 27,0,@9455 74,0,@10071 6515:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1711|15,0,0 26,0,@9455 73,0,@10071 6516:D3,40|3b650c7305ff552ccd01bad05967b1ff3424bb01000000c744240401000000e950eefffff4000000|@13208,1,@1712|11,0,@13135 19,0,0 27,0,0 32,1,@6499 6517:D3,1132|3b650c7305ff552ccd095053ba803066b18b442404bb03000000e81520f0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe46067b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ef03000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe46067b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d7578b7c240883ff017d0e8d64240cb8a84566b18b5d04ff23b8010000008b5c2408e890030000e81b0af2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c747089c5a66b1897704c7070f000000578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b742408897704c7070d00000057b8506566b1e8b009f2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24088b3f8d1c7d0100000083fb01750abaf46067b1e99300000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877502000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320131d1efc6443a02298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b8006167b1e8b3fbf1ff89c757b801000000e88e02000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977105e89770cc74708010000005e8977048b74240489378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702190000008b7d008d7fec3b7d087305ff5528cd04897d00c747fc040000005e8d64240489770cc7470801000000c7470401000000c707030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893e83fe01750489d7eb268b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071f000000578b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017520bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240457b801000000e862faf1ff89c757b801000000e8a101000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471803000000c74714010000008977105e89770cc74708010000005e8977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c40cc38d642414b8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4000000|@13250,1,@1716|13,0,@9967 22,0,1 27,1,@4896 56,0,@13247 76,0,4 97,0,16777215 155,0,0 164,0,@13247 169,0,7 217,0,@10224 227,0,0 236,1,@6518 241,1,@4985 276,0,1 283,0,@10535 292,0,7 324,0,0 337,0,6 343,0,@10704 348,1,@4985 383,0,1 396,0,7 420,0,@13248 440,0,4 461,0,16777215 519,0,0 578,0,@9473 601,0,@9473 622,0,@10237 632,0,@13249 637,1,@4975 645,0,0 650,1,@6519 685,0,1 692,0,0 699,0,0 713,0,0 758,0,12 799,0,0 806,0,0 812,0,1 845,0,0 894,0,15 905,0,@9473 932,0,@9473 957,0,@10237 969,0,0 974,1,@4975 982,0,0 987,1,@6520 1022,0,1 1029,0,1 1036,0,0 1050,0,0 1092,0,12 1105,0,@9465 1119,0,@9465 6518:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@1713|15,0,0 49,0,0 59,0,@10067 65,0,11 80,0,@9455 6519:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1714|16,0,0 27,0,@9455 74,0,@10071 6520:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1715|16,0,0 27,0,@9455 74,0,@10071 6521:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1717|15,0,0 26,0,@9455 73,0,@10071 6522:D3,40|3b650c7305ff552ccd01bae05e67b1ff3424bb01000000c744240401000000e908f2fffff4000000|@13208,1,@1718|11,0,@13212 19,0,0 27,0,0 32,1,@6511 6523:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1719|15,0,0 26,0,@9455 73,0,@10071 6524:D3,40|3b650c7305ff552ccd01bad05967b1ff3424bb05000000c744240401000000e92ce7fffff4000000|@13208,1,@1720|11,0,@13135 19,0,2 27,0,0 32,1,@6499 6525:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1721|15,0,0 26,0,@9455 73,0,@10071 6526:D3,40|3b650c7305ff552ccd01bae05e67b1ff3424bb05000000c744240401000000e9c8f0fffff4000000|@13208,1,@1722|11,0,@13212 19,0,2 27,0,0 32,1,@6511 6527:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1723|15,0,0 26,0,@9455 73,0,@10071 6528:D3,40|3b650c7305ff552ccd01bad05967b1ff3424bb07000000c744240401000000e9ece5fffff4000000|@13208,1,@1724|11,0,@13135 19,0,3 27,0,0 32,1,@6499 6529:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1725|15,0,0 26,0,@9455 73,0,@10071 6530:D3,40|3b650c7305ff552ccd01bae05e67b1ff3424bb07000000c744240401000000e988effffff4000000|@13208,1,@1726|11,0,@13212 19,0,3 27,0,0 32,1,@6511 6531:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1727|15,0,0 26,0,@9455 73,0,@10071 6532:D3,40|3b650c7305ff552ccd01bae05e67b1ff3424bb09000000c744240401000000e9e8eefffff4000000|@13208,1,@1728|11,0,@13212 19,0,4 27,0,0 32,1,@6511 6533:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1729|15,0,0 26,0,@9455 73,0,@10071 6534:D3,40|3b650c7305ff552ccd01bad05967b1ff3424bb07000000c744240401000000e90ce4fffff4000000|@13208,1,@1730|11,0,@13135 19,0,3 27,0,0 32,1,@6499 6535:D3,1396|3b650c7305ff552ccd095053ba803066b18b442404bb03000000e8d115f0ff89c757ba803066b18b442404bb03000000e8bb15f0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c0f66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000c6267b1e8e5d4efff89c7578b7c240889fb83ff017d0e8d64240cb8a84566b18b5d04ff23b801000000e897040000e82e050000e8d1fff1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c747089c5a66b1897704c7070f0000008b55008d52e83b55087305ff5528cd80895500c742fc05000000897a108b74240489f789720cc7420801000000c7420401000000c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089165689ff89fb83ff017d0e8d642410b8a84566b18b5d04ff23b801000000e8d304000089c78b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420801000000897a04c702290000008b3c2489fe83ff0175088d64240489d7eb2c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c7071f000000578b7c24048b378d1c750100000083fb01750abaf46067b1e99100000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870503000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320131d1efc6443a02298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b8006167b1e8eaf0f1ff89c757b801000000e80904000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461803000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7424148b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d00000057b8506566b1e804fdf1ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc7470801000000c7470401000000c707030000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e83fe0175035feb2d8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c7071f000000578b7c240489fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240457b801000000e81beff1ff89c757b801000000e89e02000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471803000000c74714010000008977108b342489770c8d642404c74708010000008b34248977048d6424048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c40cc204008d642410b8780566b18b5d04ff23f40000|@13266,1,@1736|13,0,@9967 22,0,1 27,1,@4896 35,0,@9967 44,0,1 49,1,@4896 84,0,0 121,0,@9572 194,0,@13265 199,1,@4827 222,0,@10224 232,0,0 237,1,@6536 242,1,@6537 247,1,@4985 282,0,1 289,0,@10535 298,0,7 343,0,0 350,0,0 356,0,0 389,0,0 410,0,@10224 420,0,0 425,1,@6538 460,0,0 469,0,20 531,0,15 555,0,@13248 575,0,4 596,0,16777215 654,0,0 711,0,@9473 734,0,@9473 755,0,@10237 765,0,@13249 770,1,@4975 778,0,0 783,1,@6539 818,0,1 825,0,1 832,0,0 852,0,0 906,0,12 944,0,0 953,0,6 959,0,@10704 964,1,@4985 999,0,1 1018,0,7 1054,0,0 1061,0,0 1067,0,1 1100,0,0 1155,0,15 1168,0,@9473 1193,0,@9473 1216,0,@10237 1228,0,0 1233,1,@4975 1241,0,0 1246,1,@6540 1281,0,1 1288,0,1 1295,0,0 1315,0,0 1369,0,12 1384,0,@9465 6536:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@1731|15,0,0 49,0,0 59,0,@10067 65,0,11 80,0,@9455 6537:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8006167b1c3f4|@10825,1,@1732|66,0,@13249 6538:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704a05266b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@1733|15,0,0 49,0,0 59,0,@10403 65,0,11 80,0,@9455 6539:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1734|16,0,0 27,0,@9455 74,0,@10071 6540:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1735|16,0,0 27,0,@9455 74,0,@10071 6541:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1737|11,0,@10262 6542:D3,864|3b650c7305ff552ccd0150b89c6467b1e85f03000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708d05667b1897704c7070f0000008b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610d06467b1897e0c8b3c24897e08c74604745266b1c7064c5266b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b7c24048b3f83ff0175578b7c24048b7f04be685236b181c6c60000008d743effffe6eb0ceb11eb16eb1beb20eb25eb2abfb06d66b1eb28bfbc6d66b1eb21bfc86d66b1eb1abfd46d66b1eb13bfe06d66b1eb0cbfec6d66b1eb05bff86d66b1eb3c8b7c24048b7f0483ff057507bf046e66b1eb2983ff037507bf186e66b1eb1d83ff097507bf286e66b1eb1183ff077507bf3c6e66b1eb05bf486e66b1578b3c248b3f8d1c7d0100000083fb01750e8d642404bf046567b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87c601000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf046567b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d78b378d1c750100000083fb01750aba344b66b1e98600000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871701000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e82b01000089c757b801000000e88e01000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977105e89770cc74708010000005e8977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c404c38d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@13315,1,@1741|12,0,@13307 17,1,@6543 52,0,1 59,0,@13096 68,0,7 101,0,@13311 117,0,@10400 123,0,@10398 158,0,1 182,0,@6542 213,0,@10829 220,0,@10830 227,0,@10831 234,0,@10832 241,0,@10833 248,0,@10834 255,0,@10835 274,0,@10836 286,0,@10837 298,0,@10838 310,0,@10839 317,0,@10840 344,0,@13314 364,0,4 385,0,16777215 443,0,0 452,0,@13314 457,0,9 505,0,@10286 525,0,4 546,0,16777215 604,0,0 650,0,@9473 673,0,@9473 694,0,@10237 704,0,0 709,1,@6544 717,0,0 722,1,@6545 757,0,1 764,0,0 771,0,0 785,0,0 827,0,12 840,0,@9465 854,0,@9465 6543:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@1738|48,0,1 102,0,0 6544:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1739|76,0,@10218 86,0,0 6545:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1740|16,0,0 27,0,@9455 74,0,@10071 6546:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1742|11,0,@10262 6547:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1743|11,0,@10262 6548:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1744|11,0,@10262 6549:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1745|11,0,@10262 6550:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1746|11,0,@10262 6551:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1747|11,0,@10262 6552:D3,28|3b650c7305ff552ccd01ba986867b1bb01000000e917000000f40000|@13409,1,@1753|11,0,@13381 16,0,0 21,1,@6553 6553:D3,1232|3b650c7305ff552ccd0d5250538b7c24088b570c8b442404ff1289c7578b7c240c8b5708ff1283f8057507bf03000000eb1a83f8037507bf01000000eb0e83f8010f850f030000bf05000000578b3c2483ff057507b981000000eb148b3c2483ff037507b9b1000000eb05b971000000bb03000000c1e31881ebffffff00f6c301740783fb017d12eb120fb67bff8d3c7d0100000083ff237402eb0eb8b02f66b151e8f906f0ff5989c3f6c301741189df83ef016bff01700789fb83c301eb0eb80300000051e8fde1f5ff5989c3b80500000051e84765fcff5989c78b75008d76f43b75087305ff5528cd82897500c746fc020000008b542404895604c706010000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208c74204b83966b1c7023f0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc7410838f366b1c7410409000000c701090000008b75008d76f43b75087305ff5528cd86897500c746fc02000000c7460401000000890e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7011c5a67b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706605a67b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701f85967b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916568b74240483fe057507beac6867b1eb158b74240483fe037507be286967b1eb05be286967b1568b74240883fe0575728b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c746045c6967b1c706570000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747046c6967b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700986967b1eb05b8ac6967b1e80c02000089c383fb017507bba05d67b1eb0cb8a05d67b1e85002000089c383fb0175035beb0e8b0424e8a202000089c38d64240483fb0175065f83c408eb0e8b0424e8ed02000089c78d64240c57be030000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41be09000000e9020100008d642410ba803066b1bb03000000e87704f0ff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe05d67b1e98900000089df83c72289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe05d67b1b9230000008d77048d7a04d1e9f3a489d95f8d77048d7a15d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cfc5d67b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff2383fe017552ff74240489fb8b44240ce824eafbff89c38b7c240c8b7f046a01578b442408e84fd8fcff89c78d642410be010000008b45008d40f83b45087305ff5528cdc0894500c740fc01000040893089388060ffbfc389f283ea02d1eac604170089f283ea0289d63b650c7305ff552ccdc0eb8bf40000|@13408,1,@1752|44,0,1 56,0,0 72,0,2 86,0,64 101,0,88 108,0,56 113,0,1 157,0,@9958 163,1,@4895 193,0,1 199,1,@5527 207,0,2 213,1,@6124 255,0,0 291,0,@10071 297,0,31 332,0,2 368,0,@11957 375,0,4 381,0,4 414,0,0 451,0,@13140 486,0,@13144 521,0,@13138 567,0,@13382 583,0,@13390 590,0,@13390 636,0,@13393 642,0,43 675,0,@13394 712,0,@13397 719,0,@13398 724,1,@6554 736,0,@13197 743,0,@13197 748,1,@6555 766,1,@6556 791,1,@6557 803,0,1 845,0,4 859,0,@9967 864,0,1 869,1,@4896 898,0,@13202 918,0,4 939,0,16777215 997,0,0 1006,0,@13202 1011,0,17 1073,0,@13203 1083,0,@9978 1089,0,@4611 1103,0,@9465 1128,1,@6115 1149,1,@6176 1160,0,0 6554:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8246a67b1c3f4|@10825,1,@1748|66,0,@13406 6555:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1749| 6556:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1750| 6557:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1751| 6558:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1754|16,0,0 27,0,@9455 74,0,@10071 6559:D3,28|3b650c7305ff552ccd01bae46a67b1bb01000000e917000000f40000|@13415,1,@1760|11,0,@13413 16,0,0 21,1,@6560 6560:D3,1232|3b650c7305ff552ccd0d5250538b7c24088b570c8b442404ff1289c7578b7c240c8b5708ff1283f8057507bf03000000eb1a83f8037507bf01000000eb0e83f8010f850f030000bf05000000578b3c2483ff057507b981000000eb148b3c2483ff037507b9b1000000eb05b971000000bb03000000c1e31881ebffffff00f6c301740783fb017d12eb120fb67bff8d3c7d0100000083ff237402eb0eb8b02f66b151e8f9ffefff5989c3f6c301741189df83ef016bff01700789fb83c301eb0eb80300000051e8fddaf5ff5989c3b80500000051e8475efcff5989c78b75008d76f43b75087305ff5528cd82897500c746fc020000008b542404895604c706010000008b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208c74204b83966b1c7023f0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b4d008d49ec3b4d087305ff5528cdc4894d00c741fc0400000089710cc7410838f366b1c7410409000000c701090000008b75008d76f43b75087305ff5528cd86897500c746fc02000000c7460401000000890e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c7011c5a67b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706605a67b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897104c701f85967b18b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916568b74240483fe057507be705f67b1eb158b74240483fe037507be5c6067b1eb05be686067b1568b74240883fe0575728b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c746045c6967b1c706570000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747046c6967b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700986967b1eb05b8ac6967b1e80c02000089c383fb017507bba05d67b1eb0cb8a05d67b1e85002000089c383fb0175035beb0e8b0424e8a202000089c38d64240483fb0175065f83c408eb0e8b0424e8ed02000089c78d64240c57be030000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41be09000000e9020100008d642410ba803066b1bb03000000e877fdefff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe05d67b1e98900000089df83c72289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe05d67b1b9230000008d77048d7a04d1e9f3a489d95f8d77048d7a15d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cfc5d67b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff2383fe017552ff74240489fb8b44240ce824e3fbff89c38b7c240c8b7f046a01578b442408e84fd1fcff89c78d642410be010000008b45008d40f83b45087305ff5528cdc0894500c740fc01000040893089388060ffbfc389f283ea02d1eac604170089f283ea0289d63b650c7305ff552ccdc0eb8bf40000|@13414,1,@1759|44,0,1 56,0,0 72,0,2 86,0,64 101,0,88 108,0,56 113,0,1 157,0,@9958 163,1,@4895 193,0,1 199,1,@5527 207,0,2 213,1,@6124 255,0,0 291,0,@10071 297,0,31 332,0,2 368,0,@11957 375,0,4 381,0,4 414,0,0 451,0,@13140 486,0,@13144 521,0,@13138 567,0,@13222 583,0,@13240 590,0,@13241 636,0,@13393 642,0,43 675,0,@13394 712,0,@13397 719,0,@13398 724,1,@6561 736,0,@13197 743,0,@13197 748,1,@6562 766,1,@6563 791,1,@6564 803,0,1 845,0,4 859,0,@9967 864,0,1 869,1,@4896 898,0,@13202 918,0,4 939,0,16777215 997,0,0 1006,0,@13202 1011,0,17 1073,0,@13203 1083,0,@9978 1089,0,@4611 1103,0,@9465 1128,1,@6115 1149,1,@6176 1160,0,0 6561:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8246a67b1c3f4|@10825,1,@1755|66,0,@13406 6562:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1756| 6563:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1757| 6564:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1758| 6565:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1761|16,0,0 27,0,@9455 74,0,@10071 6566:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1762|11,0,@10262 6567:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1763|11,0,@10262 6568:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10764,1,@1764|11,0,@10050 6569:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1765|11,0,@10262 6570:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1766|15,0,0 26,0,@9455 73,0,@10071 6571:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1767|15,0,0 26,0,@9455 73,0,@10071 6572:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1768|15,0,0 26,0,@9455 73,0,@10071 6573:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1769|15,0,0 26,0,@9455 73,0,@10071 6574:D3,324|3b650c7305ff552ccd018b388d1c7d010000008b7d008d7ff03b7d087305ff5528cd09897d00c747fc03000000895f08894704c707cc6936b15750b801000000e8db01000089c6f7c601000000750b8b16bf0100000089f1eb06b8100666b1c3f6c10175248b410489fb83c302710ab8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd783ff017c7983ff03750abf400666b18b4457fec389f883c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01773f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdc4894500d1e98948fcc640ff4183ea02c74450fe00000000d1ef8938bf09000000eb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f7c60100000075258b0e8b5e04d1e989fad1ea880c1089fa83c20289d989ce89d73b650c7305ff552ccdc1ebd38060ffbfc3f4|@13502,1,@1774|53,0,@6575 60,0,0 65,1,@6576 82,0,0 91,0,@9473 112,0,@9455 148,0,@9476 163,0,4 184,0,16777215 238,0,0 247,0,4 254,0,@9465 264,0,@9468 6575:D3,180|3b650c7305ff552ccd0589d789c28b77083bd67506b801000000c383fa017d05e9820000008b770489f18b368d3475010000003bd67c07be03000000eb05be0100000083fe03745f89d683c60889cfd1ee0fb63c378d347d0100000083c202710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8a01e66b18b5d04ff23f40000|@13486,1,@1770|22,0,0 56,0,1 63,0,0 98,0,@9455 168,0,@9847 6576:D3,520|3b650c7305ff552ccd09533b0424750c8d642404b801000000c2080050ba207067b18b5c24108b0424e8ee01000089c7f7c7010000000f85660100008b178b1a81fb100666b17502eb2e8b3b8d3c7d0100000083ff010f85f7000000bf100666b18d73048d7f0433c93bc9f3a674098d642404e9df0000008b72043b742404750abf01000000e99a00000083fe017d098d642408e9b00000008b7c240c8b3f8d3c7d010000003bf77c07bf03000000eb05bf0100000083ff030f848600000089f283c2088b7c240cd1ea0fb63c178d3c7d0100000089f183c102710e8d642408b8f80466b18b5d04ff238b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000000891783ff01750b8d642404bf01000000eb6b8934243b650c7303ff552ce9d8feffff8d642408b8a01e66b18b5d04ff238d6424048b52040fb67b048d3c7d010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb098d642404bf01000000f7c70100000075458b3fff378b47048b7c24108b74240c57568b5c240ce833feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c208008d642404b8a87067b18b5d04ff23f400|@13501,1,@1773|21,0,0 30,0,@13487 42,1,@6577 66,0,@9473 93,0,@9473 130,0,0 171,0,1 178,0,0 225,0,@9455 303,0,0 330,0,@9847 423,0,0 509,0,@13497 6577:D3,2204|3b650c7305ff552ccd0d5250538b14248b442404ff1289c7f7c7010000000f85330500008b3f8b37ff770483fe4173098d642410e91805000081fefd0000000f870805000081feb90000000f85ab0400008b5424048b0424ff1289c7f7c7010000000f858a0400008b3f8b3781feeb0000000f85880000008d6424048b7f0457ff742404b801000000bb09000000e81d08000089c78d642404f7c70100000075558d6424048b3f8b378b57048b3c248b7f048d6424048b7477fe8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642408b801000000c381febd0000000f85d60000008d6424048b47045aff1289c7f7c7010000000f85b40000008d6424048b3f8b378b570481fe810000000f8c9300000081febf0000000f8f8100000081ee80000000710e8d642404b8f80466b18b5d04ff2383fe017d068d642404eb5681feff0100007f4a8b3c248b7f048d6424048b7477fe8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b8bc0a66b18b5d04ff238d642404eb048d642404b801000000c38d642408b801000000c383fe4575478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707040666b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381feb900000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f80b66b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fee500000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707407067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fecd00000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074c7067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381feed00000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707587067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fedd00000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707647067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fee900000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707707067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fec500000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c7067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c381fec300000075478d6424108b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707887067b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7f0483fe13720b83fe1b77068d642404eb3083fe41742783fe61721883fe65770d6a016a07ff742408e9800100008d642410eb048d642410b801000000c38d642404ff342457e9b10000008d642410b801000000c38b7c240c8b7f048b7477fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d64240489378b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc38d642410b801000000c38d6424048b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707100666b18b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c38b5424088b0424ff1289c7f7c70100000075288b378b3e8b760483ff13720783ff1b7702eb0883ff41740358eb0e8934243b650c7303ff552cebc5588b1424ff1289c78d642404f7c70100000075598d64240c8b378b3e8b760481ffb90000007406b801000000c38b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707100666b18b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d64240cb801000000c38b7c240483ff010f858e0000008b74240889f781feff0100007e0b8d642418bf01000000eb6289ff89fe83ff017d068d64241ceb5c89f689f781feff0100007f4c8b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d64240489ff893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c414e9560100008d64241cb8bc0a66b18b5d04ff238b5424108b0424ff1289c7f7c7010000000f85990000008b378b3e8b4e0483ff61727f83ff737f748b54240483ea02710e8d64241cb8f80466b18b5d04ff238b74240883ee016bf60a710e8d64241cb8f80466b18b5d04ff2383c60183ef0103f7710e8d64241cb8f80466b18b5d04ff2383ee60710e8d64241cb8f80466b18b5d04ff23890c2489542404897424083b650c7303ff552ce9c9feffff8d642418eb048d642418bf01000000e9980000008b74240889f781feff0100007e068d642418eb7f8b74240483fe017f7289ff89fe83ff017d068d64241ceb5989f689f781feff0100007f498b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d64240489ff893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c414eb178d64241cb8bc0a66b18b5d04ff238d642418bf01000000f7c70100000075518b3f8b378b57048b3c248b7f048d6424048b7477fe8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f4|@13496,1,@1772|59,0,126 71,0,92 110,0,117 133,0,0 138,0,4 143,1,@6578 251,0,0 258,0,94 305,0,64 317,0,95 340,0,@9455 362,0,255 447,0,@9487 467,0,0 477,0,0 525,0,@9472 560,0,92 604,0,@9502 639,0,114 683,0,@13489 718,0,102 762,0,@13490 797,0,118 841,0,@13491 876,0,110 920,0,@13492 955,0,116 999,0,@13493 1034,0,98 1078,0,@13494 1113,0,97 1157,0,@13495 1248,0,0 1271,0,0 1362,0,0 1407,0,@9473 1535,0,92 1542,0,0 1578,0,@9473 1616,0,0 1642,0,255 1653,0,0 1680,0,255 1767,0,@9487 1830,0,@9455 1856,0,@9455 1880,0,@9455 1899,0,@9455 1943,0,0 1960,0,255 2002,0,255 2086,0,@9487 2100,0,0 2198,0,0 6578:D3,888|3b650c7305ff552ccd0950538b3c2483ff010f858e0000008d6424048b3c2489fe81ffff0100007e0c8d642404b801000000c2080089f689f783fe017d068d642404eb5889ff89fe81ffff0100007f488b54240c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489f689378d6424048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c208008d642404b8bc0a66b18b5d04ff238b54240c8b442410ff1289c7f7c7010000000f85170200008b378b3e8b760483ff61726683ff7377618b1c2483eb028d642404710e8d642404b8f80466b18b5d04ff235883e8016bc010710ab8f80466b18b5d04ff2383c00183ef0103c7710ab8f80466b18b5d04ff2383e860710ab8f80466b18b5d04ff238b5424048954240489742408e9d0feffff81ffc3000000727b81ffcd00000077738b1c2483eb028d642404710e8d642404b8f80466b18b5d04ff235883e8016bc010710ab8f80466b18b5d04ff2383c00183ef0103c7710ab8f80466b18b5d04ff2381e8c2000000710ab8f80466b18b5d04ff2383c014710ab8f80466b18b5d04ff238b5424048954240489742408e94dfeffff81ff83000000727b81ff8d00000077738b1c2483eb028d642404710e8d642404b8f80466b18b5d04ff235883e8016bc010710ab8f80466b18b5d04ff2383c00183ef0103c7710ab8f80466b18b5d04ff2381e882000000710ab8f80466b18b5d04ff2383c014710ab8f80466b18b5d04ff238b5424048954240489742408e9cafdffff8b3c2483ffff8d6424047c098d642404e9820000008b3c2489fe81ffff0100007f7189f689f783fe017d068d642404eb5889ff89fe81ffff0100007f488b54240c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489f689378d6424048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c208008d642404b8bc0a66b18b5d04ff238d642404b801000000c208008b3c2483ffff8d6424047c098d642404e9820000008b3c2489fe81ffff0100007f7189f689f783fe017d068d642404eb5889ff89fe81ffff0100007f488b54240c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489f689378d6424048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c208008d642404b8bc0a66b18b5d04ff238d642404b801000000c20800f4000000|@13488,1,@1771|35,0,255 46,0,0 74,0,255 157,0,@9487 224,0,@9455 243,0,@9455 263,0,@9455 278,0,@9455 306,0,97 314,0,102 337,0,@9455 356,0,@9455 376,0,@9455 394,0,@9455 409,0,@9455 437,0,65 445,0,70 468,0,@9455 487,0,@9455 507,0,@9455 525,0,@9455 540,0,@9455 594,0,255 621,0,255 704,0,@9487 718,0,0 753,0,255 780,0,255 863,0,@9487 877,0,0 6579:D3,700|3b650c7305ff552ccd018b3889fe8d3c7d0100000083ff070f8cc600000089f78d34750100000083fe05730ab808cf66b18b5d04ff238d3c7d0100000083ff05750489c6eb4ebf050000008d347d02000000f7de0375003b750872053b75007205ff5528cd01897500d1ef897efcc646ff41c7460400000000bf05000000d1ef893e0fb64804884e040fb64805884e058066ffbf81fe7c7167b17507bf03000000eb378b3e8d3c7d0100000083ff057524bf7c7167b18d76048d7f0433c983c1023bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff037505e9e70000008b3889fe8d3c7d0100000083ff090f8cc200000089f78d34750100000083fe07730ab808cf66b18b5d04ff238d3c7d0100000083ff07750489c6eb52bf050000008d347d02000000f7de0375003b750872053b75007205ff5528cd01897500d1ef897efcc646ff41c7460400000000c706030000000fb64804884e040fb64805884e050fb64806884e068066ffbf81fe887167b17507bf03000000eb378b3e8d3c7d0100000083ff077524bf887167b18d76048d7f04b9030000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff037407bf03000000eb05bf050000008b308d3475010000008b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308894304c703bc7b36b1babc7167b157b801000000e84501000089c7f7c70100000075568b378b3e8b5604f7c701000000743d8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb0fb8287267b18b5d04ff23bf01000000f7c70100000075228b3f8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c70100000075038b07c3b8547267b18b5d04ff23f4000000|@13517,1,@1778|45,0,@11630 71,0,2 117,0,0 122,0,2 150,0,@13505 157,0,1 178,0,@13505 200,0,1 207,0,0 214,0,0 263,0,@11630 289,0,2 335,0,0 341,0,1 372,0,@13506 379,0,1 400,0,@13506 411,0,1 422,0,1 429,0,0 436,0,0 443,0,0 453,0,1 460,0,2 507,0,@6580 512,0,@13508 518,0,0 523,1,@6581 614,0,@13511 624,0,0 671,0,0 687,0,@13513 6580:D3,112|3b650c7305ff552ccd0589d789c28b77083bd67506b801000000c389d683c6088b7f04d1ee0fb63c378d347d0100000083c2028b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4|@13507,1,@1775|22,0,0 6581:D3,2808|3b650c7305ff552ccd0d5250536a016a016a018b7c241c83ff05751d8b7c24148b770489ff8b7f08c704242100000089742404897c2408eb678b7c241c83ff03751d8b7c24148b770c89ff8b7f10c704241500000089742404897c2408eb418b7c241c83ff07751d8b7c24148b771489ff8b7f18c704241100000089742404897c2408eb1b8b7c24148b771c89ff8b7f20c704240500000089742404897c2408ff34248b5424108b442414ff1289c7f7c7010000000f85d60400008b378b3eff760483ff13720a83ff1b7705e9a704000083ff410f849e04000083ff570f85830100008b7c240483ff210f85690100008b5424148b0424ff1289c7f7c7010000000f85460100008b378b3eff760483ff61742b8d6424045a8b4c24108b74241cbb01000000b801000000894c241c895424208974241883c418e9ce0900008b5424188b0424ff1289c7f7c7010000000f85ae0000008b3f8b378b7f0481fef10000007502eb3381feb1000000742b8d6424045a8b4c24108b74241cbb01000000b801000000894c241c895424208974241883c418e97309000057ff74241cb801000000bb01000000e85f09000083f801754a8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707010000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c420c204008d642424c204008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707010000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c420c204008d642420b801000000c204006a016a01ff742408e9ed06000083ff5b7505e99601000081fffd0000000f848a0100008d6424048b3c2483ff210f856d0100008d6424108b14248b442404ff1289c7f7c7010000000f85460100008b378b3eff760483ff61742b8d6424048b542404598d6424048b742404bb01000000b801000000894c240489542408893424e92e0800008b5424048b0424ff1289c7f7c7010000000f85ae0000008b3f8b378b7f0481fef10000007502eb3381feb1000000742b8d6424048b542404598d6424048b742404bb01000000b801000000894c240489542408893424e9d307000057ff742408b801000000bb01000000e8bf07000083f801754a8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707010000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc204008d642410c204008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707010000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc204008d64240cb801000000c204006a016a01ff74241ce9aa0300008b7c240483ff210f855b0100008b5424148b0424ff1289c7f7c7010000000f85360100008b378b3eff760483ff6174258d642404ff3424ff742418b801000000bb01000000e8bc06000089c78d642420e9030100008b5424188b0424ff1289c7f7c7010000000f85a50000008b3f8b378b7f0481fef10000007502eb2a81feb100000074228d642404ff3424ff742418b801000000bb01000000e86706000089c78d642420eb6857ff74241cb801000000bb01000000e84b06000089c783ff0175498b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d642404c706010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c420eb048d642424eb478b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d642404c706010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c420eb098d642420bf01000000e9cc0100006a016a01ff742408eb258b54241c588b5c24108b7424208974242083c41ce96ffaffff8d64241cb801000000c204008b5424208b0424ff1289c7f7c7010000000f85280100008b3f8b178b4f0483fa610f8cb80000008b7c241089fe83c760710e8d64242cb8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8586000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24105251e8c5b8f5ff595a89d383eb60710e8d64242cb8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e86cddefff5989c2be03000000890c2489542404897424083b650c7303ff552ce921ffffff8b7c240883ff03754c8b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c424eb098d64242cbf01000000eb5e8b7c240883ff03754c8b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c424eb098d64242cbf01000000f7c70100000075668b3f8b1f8b5704f6c301740ebe010000002bf3700583c601eb0eb80100000052e8d9ddefff5a89c68b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20400b801000000c204008b54241c8b0424ff1289c7f7c7010000000f852a0100008b3f8b178b4f0483fa610f8cb80000008b7c240c89fe83c760710e8d642428b8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8586000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c240c5251e8b2b6f5ff595a89d383eb60710e8d642428b8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e859dbefff5989c2be03000000890c2489542404897424083b650c7303ff552ce921ffffff8b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c420c204008d642428b801000000c204008b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c420c204008d642428b801000000c204008b5424208b0424ff1289c7f7c7010000000f852a0100008b3f8b178b4f0483fa610f8cb80000008b7c241089fe83c760710e8d64242cb8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8586000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24105251e80fb5f5ff595a89d383eb60710e8d64242cb8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e8b6d9efff5989c2be03000000890c2489542404897424083b650c7303ff552ce921ffffff8b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c424c204008d64242cb801000000c204008b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c424c204008d64242cb801000000c20400f400|@13510,1,@1777|43,0,16 81,0,10 119,0,8 148,0,2 289,0,0 294,0,0 314,1,@6582 350,0,120 360,0,88 380,0,0 385,0,0 405,1,@6582 415,0,0 420,0,0 425,1,@6582 470,0,0 551,0,0 594,0,0 626,0,126 709,0,0 714,0,0 730,1,@6582 766,0,120 776,0,88 800,0,0 805,0,0 821,1,@6582 831,0,0 836,0,0 841,1,@6582 886,0,0 967,0,0 1010,0,0 1090,0,0 1095,0,0 1100,1,@6582 1147,0,120 1157,0,88 1175,0,0 1180,0,0 1185,1,@6582 1203,0,0 1208,0,0 1213,1,@6582 1260,0,0 1339,0,0 1381,0,0 1430,0,0 1492,0,@9455 1506,0,1 1513,0,0 1575,1,@5527 1593,0,@9455 1624,1,@4895 1632,0,1 1750,0,0 1846,0,0 1871,0,0 1885,0,0 1891,1,@4897 1961,0,0 2023,0,@9455 2037,0,1 2044,0,0 2106,1,@5527 2124,0,@9455 2155,1,@4895 2163,0,1 2282,0,0 2380,0,0 2442,0,@9455 2456,0,1 2463,0,0 2525,1,@5527 2543,0,@9455 2574,1,@4895 2582,0,1 2701,0,0 2799,0,0 6582:D3,688|3b650c7305ff552ccd0950538b54240c8b442410ff1289c7f7c7010000000f85280200008b378b3e8b760483ff617c7b83ff737f76f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e886b3f5ff5e5f8d64240883ef60710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e82ad8efff5e89c38b542404b8030000008954240489742408e955ffffff81ff830000000f8c9400000081ff8d0000000f8f88000000f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e8f8b2f5ff5e5f8d64240881ef82000000710ab8f80466b18b5d04ff2383c714710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e88ad7efff5e89c38b542404b8030000008954240489742408e9b5feffff81ffc30000000f8c9400000081ffcd0000000f8f88000000f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e858b2f5ff5e5f8d64240881efc2000000710ab8f80466b18b5d04ff2383c714710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e8ead6efff5e89c38b542404b8030000008954240489742408e915feffff8b7c240483ff03754c8b7424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c208008d642408b801000000c208008b7c240483ff03754c8b7424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c208008d642408b801000000c20800f40000|@13509,1,@1776|83,0,16 90,1,@5527 106,0,@9455 142,1,@4895 154,0,1 173,0,65 185,0,70 225,0,16 232,1,@5527 251,0,@9455 266,0,@9455 302,1,@4895 314,0,1 333,0,97 345,0,102 385,0,16 392,1,@5527 411,0,@9455 426,0,@9455 462,1,@4895 474,0,1 581,0,0 678,0,0 6583:D3,380|3b650c7305ff552ccd018b3089f78d34750100000083fe057e418d3c7d0100000083ff057f0ab8a01e66b18b5d04ff230fb678068d3c7d0100000081fff10000007507bf03000000eb05bf0100000083ff037507bf05000000eb05bf030000008b308d3475010000008b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308894304c703a08b36b157b801000000e87a01000089c7f7c7010000000f858a0000008b378b3eff760489f8bb547367b157e888fafcff5f89c683fe017e0e8d642404b85c7367b18b5d04ff23f7c7010000007402eb1289f8e8a196fcff89c78b3f8d3c7d010000008b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d642404893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c70100000075228b3f8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c70100000075038b07c3b8a87367b18b5d04ff23f4|@13529,1,@1782|39,0,@9847 61,0,120 68,0,1 75,0,0 85,0,2 92,0,1 139,0,@6584 145,0,0 150,1,@6585 178,0,@13522 184,1,@6189 201,0,@13523 223,1,@6162 307,0,0 354,0,0 370,0,@13526 6584:D3,112|3b650c7305ff552ccd0589d789c28b77083bd67506b801000000c389d683c6088b7f04d1ee0fb63c378d347d0100000083c2028b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4|@13507,1,@1779|22,0,0 6585:D3,3396|3b650c7305ff552ccd0950538b7c240c83ff057507bf21000000eb258b7c240c83ff037507bf15000000eb158b7c240c83ff077507bf11000000eb05bf05000000578b5424048b442408ff1289c7f7c7010000000f85200200008b378b3e83ff610f85ac010000ff76048b5424088b0424ff1289c7f7c7010000000f85880100008b378b3eff760481ffef0000000f85e90000008b7c241883ff050f85a70000008b54240c8b0424ff1289c7f7c7010000000f85820000008b3f8b378b7f0481fef100000075068d642404eb4181feb100000074358b7c241883ff05751fff3424ff742410b801000000bb01000000e8640c00008d642404e93f0c00006a016a01ff742408e97c0a00008d6424048b74241483fe05751957ff74240cb801000000bb01000000e82d0c0000e9510a00006a016a0157e9910800008d642404b801000000e9810800008b7c241883ff05751fff3424ff742410b801000000bb01000000e8f10b00008d642404e9540800006a016a01ff742408e99106000081fff10000007502eb0e81ffb100000074068d642404eb428b7c241883ff0575358b7c241883ff05751fff3424ff742410b801000000bb01000000e89b0b00008d642404e9430600006a016a01ff742408e9800400008d6424048b7c241483ff05751cff74240cff74240cb801000000bb01000000e8610b0000e9520400006a016a01ff742414e98f020000b801000000e92f0200008b460483ff13720b83ff1b77068d642404eb4383ff41743a8b7c241083ff0575278d6424048b7424045a8d642404ff3424bb01000000b8010000008954240489742408e9fd0a00006a016a01ff742410eb218d6424045b8b7424088974240883c404e986fdffff8d64240cb801000000c204008b5424108b0424ff1289c7f7c7010000000f85430100008b3f8b178b4f0483fa610f8cd1000000f644240c010f84b80000008b7c240c89fe83c760710e8d642418b8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c240c5251e8edabf5ff595a89d383eb60710e8d642418b8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e894d0efff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d642418b8d02f66b18b5d04ff238b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c410c204008d642418b801000000c204008b7c240883ff03754d8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c410c204008d642418b801000000c2040083f801754a8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d642404c707010000008b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c40cc204008d642410c204008b5424148b0424ff1289c7f7c7010000000f85410100008b3f8b178b4f0483fa610f8cd1000000f6442410010f84b80000008b7c241089fe83c760710e8d64241cb8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24105251e8dba9f5ff595a89d383eb60710e8d64241cb8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e882ceefff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d64241cb8d02f66b18b5d04ff238b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404eb098d64240cb801000000eb5e8b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404eb098d64240cb801000000e9effdffff8b5424188b0424ff1289c7f7c7010000000f85410100008b3f8b178b4f0483fa610f8cd1000000f6442414010f84b80000008b7c241489fe83c760710e8d642420b8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24145251e820a8f5ff595a89d383eb60710e8d642420b8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e8c7ccefff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d642420b8d02f66b18b5d04ff238b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000eb5e8b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000e940feffff8b5424188b0424ff1289c7f7c7010000000f85410100008b3f8b178b4f0483fa610f8cd1000000f6442414010f84b80000008b7c241489fe83c760710e8d642420b8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24145251e865a6f5ff595a89d383eb60710e8d642420b8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e80ccbefff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d642420b8d02f66b18b5d04ff238b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000eb5e8b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000e985fcffffebf98b5424148b0424ff1289c7f7c7010000000f85410100008b3f8b178b4f0483fa610f8cd1000000f6442410010f84b80000008b7c241089fe83c760710e8d64241cb8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24105251e8a8a4f5ff595a89d383eb60710e8d64241cb8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e84fc9efff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d64241cb8d02f66b18b5d04ff238b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404eb098d64240cb801000000eb5e8b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404eb098d64240cb801000000e943feffff8b5424188b0424ff1289c7f7c7010000000f85410100008b3f8b178b4f0483fa610f8cd1000000f6442414010f84b80000008b7c241489fe83c760710e8d642420b8f80466b18b5d04ff233bd77d07bf03000000eb05bf0100000083ff030f8594000000f644240401741f89f7f7c60100000074158b44240489ffd1f883ef010fafc7700583c001eb118b4424048b5c24145251e8eda2f5ff595a89d383eb60710e8d642420b8f80466b18b5d04ff23a8017410f6c301740b89da83ea0103d07002eb0951e894c7efff5989c2be03000000890c2489542404897424083b650c7303ff552ce916ffffff8d642420b8d02f66b18b5d04ff238b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000eb5e8b7c240883ff03754c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048d6424048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c408eb098d642410b801000000e940fefffff40000|@13521,1,@1781|22,0,16 38,0,10 54,0,8 61,0,2 138,0,119 193,0,120 207,0,88 230,0,0 235,0,0 240,1,@6586 285,0,0 290,0,0 295,1,@6586 319,0,0 345,0,0 350,0,0 355,1,@6586 383,0,120 393,0,88 431,0,0 436,0,0 441,1,@6586 489,0,0 494,0,0 499,1,@6586 522,0,0 581,0,0 586,0,0 599,1,@6586 639,0,0 712,0,@9455 726,0,1 733,0,0 795,1,@5527 813,0,@9455 844,1,@4895 852,0,1 885,0,@9960 985,0,0 1083,0,0 1131,0,0 1242,0,@9455 1256,0,1 1263,0,0 1325,1,@5527 1343,0,@9455 1374,1,@4895 1382,0,1 1415,0,@9960 1514,0,0 1610,0,0 1685,0,@9455 1699,0,1 1706,0,0 1768,1,@5527 1786,0,@9455 1817,1,@4895 1825,0,1 1858,0,@9960 1957,0,0 2053,0,0 2128,0,@9455 2142,0,1 2149,0,0 2211,1,@5527 2229,0,@9455 2260,1,@4895 2268,0,1 2301,0,@9960 2400,0,0 2496,0,0 2573,0,@9455 2587,0,1 2594,0,0 2656,1,@5527 2674,0,@9455 2705,1,@4895 2713,0,1 2746,0,@9960 2845,0,0 2941,0,0 3016,0,@9455 3030,0,1 3037,0,0 3099,1,@5527 3117,0,@9455 3148,1,@4895 3156,0,1 3189,0,@9960 3288,0,0 3384,0,0 6586:D3,688|3b650c7305ff552ccd0950538b54240c8b442410ff1289c7f7c7010000000f85280200008b378b3e8b760483ff617c7b83ff737f76f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e856a1f5ff5e5f8d64240883ef60710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e8fac5efff5e89c38b542404b8030000008954240489742408e955ffffff81ff830000000f8c9400000081ff8d0000000f8f88000000f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e8c8a0f5ff5e5f8d64240881ef82000000710ab8f80466b18b5d04ff2383c714710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e85ac5efff5e89c38b542404b8030000008954240489742408e9b5feffff81ffc30000000f8c9400000081ffcd0000000f8f88000000f604240174148b042483e8016bc01070098d64240883c001eb158b0424bb210000005756e828a0f5ff5e5f8d64240881efc2000000710ab8f80466b18b5d04ff2383c714710ab8f80466b18b5d04ff23a8017413f7c701000000740b89fb83eb0103d87002eb0b89fb56e8bac4efff5e89c38b542404b8030000008954240489742408e915feffff8b7c240483ff03754c8b7424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c208008d642408b801000000c208008b7c240483ff03754c8b7424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c208008d642408b801000000c20800f40000|@13520,1,@1780|83,0,16 90,1,@5527 106,0,@9455 142,1,@4895 154,0,1 173,0,65 185,0,70 225,0,16 232,1,@5527 251,0,@9455 266,0,@9455 302,1,@4895 314,0,1 333,0,97 345,0,102 385,0,16 392,1,@5527 411,0,@9455 426,0,@9455 462,1,@4895 474,0,1 581,0,0 678,0,0 6587:D3,132|3b650c7305ff552ccd0d89c7528b5424088b75008d76f03b75087305ff5528cd8c897500c746fc03000000895608895e04893e568b7424048b76048b065389fbe85300000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b34248b76048d642404893eb801000000c20400f40000|@13553,1,@1784|65,1,@6588 122,0,0 6588:D3,324|3b650c7305ff552ccd09a8010f8526010000ff30ff70048b7c24048b3f8b7424048b56043bfb7502eb2d8b378d3475010000008b0389c18d0445010000003bf00f85bb0000008d77048d7b043bc9f3a67405e9aa0000008b7c240c8b7f0c8b720c8b4f0489ca8b0983f90375378b460489c18b0083f8037507b803000000eb05b80100000083f803751a8b7a0489ce8b76043bfe7507bf03000000eb05bf01000000eb4789d18b1283fa0175398b460489c28b0083f8017507b803000000eb05b80100000083f803751c89cf8b7f0c89d68b760c3bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037511588b7424088974240883c404e9fffeffff8b7c240c578b442404e8f1feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c20400b801000000c20400f4000000|@13552,1,@1783|122,0,1 129,0,0 151,0,1 158,0,0 186,0,1 193,0,0 217,0,1 224,0,0 231,0,0 313,0,0 6589:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@1785|76,0,@10218 86,0,0 6590:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1786|16,0,0 27,0,@9455 74,0,@10071 6591:D3,136|3b650c7305ff552ccd01a80175738b388b40048b378b7f048b1783fa1975588b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070100000057e8b2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8a47767b18b5d04ff23b801000000c3f4|@10030,1,@1787|68,0,0 120,0,@13579 130,0,0 6592:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1788|16,0,0 27,0,@9455 74,0,@10071 6593:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1789|16,0,0 27,0,@9455 74,0,@10071 6594:D3,20|3b650c7305ff552ccd01b8a87867b1c3f4000000|@13593,1,@1791|11,0,@13591 6595:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@13592,1,@1790|11,0,@10050 6596:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1792|16,0,0 27,0,@9455 74,0,@10071 6597:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1793|16,0,0 27,0,@9455 74,0,@10071 6598:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1794|16,0,0 27,0,@9455 74,0,@10071 6599:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10764,1,@1795|11,0,@10050 6600:D3,20|3b650c7305ff552ccd01b8287b67b1c3f4000000|@10723,1,@1797|11,0,@13627 6601:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@1796|15,0,1 21,0,0 6602:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@10729,1,@1798|11,0,2 6603:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@10730,1,@1799|11,0,1 6604:D3,20|3b650c7305ff552ccd01b8a07c67b1c3f4000000|@10723,1,@1801|11,0,@13653 6605:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@1800|15,0,1 21,0,0 6606:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@10729,1,@1802|11,0,2 6607:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@10730,1,@1803|11,0,1 6608:D3,28|3b650c7305ff552ccd093bc37506b803000000c3b801000000c3f400|@10155,1,@1804|15,0,1 21,0,0 6609:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1805|11,0,@10262 6610:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1806|11,0,@10262 6611:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1807|11,0,@10262 6612:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1808|11,0,@10262 6613:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1809|11,0,@10262 6614:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1810|11,0,@10262 6615:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1811|11,0,@10262 6616:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1812|11,0,@10262 6617:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@13709,1,@1813|11,0,@10050 6618:D3,1444|3b650c7305ff552ccd0950538b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e82b7fffff89c7578b0424e8dc7fffff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708e45667b1897704c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cc46066b1c74608f46066b1897e04c7060b0000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704545967b1c70705000000578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545967b1bb03000000e8c87dffff89c7578b0424e8797effff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000c74610603766b1c7460cb45666b1c74608d45666b1897e04c7060b0000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704e45667b1c70705000000578b7c24108b3f8d1c7d0100000083fb01750ab8888267b1e98a00000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87a902000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bf888267b1b90b0000008d77048d7804d1e9f3a489d98b7c24108d77048d7809d1e9f3a48060ffbfe86902000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937578b7c24148b3f8d1c7d0100000083fb01750ab8c88267b1e98a00000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ca01000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938bfc88267b1b90d0000008d77048d7804d1e9f3a489d98b7c24148d77048d780ad1e9f3a48060ffbfe89801000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937578b7c24188b3f8d0c7d0100000083f901750ab8d88267b1e98000000089cf83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87eb00000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc2894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef8938c6400461c640056cc640066c8b7c24188d77048d7807d1e9f3a48060ffbfe8d100000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c410c38d64241cb8780566b18b5d04ff238d642418b8780566b18b5d04ff238d642414b8780566b18b5d04ff23f40000|@13742,1,@1815|39,0,0 79,0,@13128 84,0,1 89,1,@6475 100,1,@6476 135,0,1 144,0,0 183,0,3 216,0,@13097 225,0,2 257,0,0 296,0,@10037 303,0,@10635 310,0,@10638 319,0,5 355,0,@13128 361,0,2 393,0,0 434,0,@13128 439,0,1 444,1,@6475 455,1,@6476 490,0,1 499,0,0 538,0,3 571,0,0 606,0,@10037 613,0,@10472 620,0,@10474 629,0,5 665,0,@13097 671,0,2 695,0,@13738 715,0,4 736,0,16777215 794,0,0 803,0,@13738 808,0,5 843,1,@6619 904,0,@13740 924,0,4 945,0,16777215 1003,0,0 1012,0,@13740 1017,0,6 1052,1,@6619 1113,0,@13741 1133,0,4 1154,0,16777215 1212,0,0 1251,1,@6619 1321,0,0 1404,0,@9465 1418,0,@9465 1432,0,@9465 6619:D3,368|3b650c7305ff552ccd0189c38b3389f78d34750100000083fe037f05e94901000089fa8d3c7d0100000083ff017f0ab8a01e66b18b5d04ff230fb67b048d347d01000000bf400666b18b7477fe81fe680e66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bf680e66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f70283ff030f84cb00000089d689f78d0c750100000083e902710ab8f80466b18b5d04ff238d347d0100000083f9010f8c9700000089cf83c7023bfe760ab808cf66b18b5d04ff2383f9017507b8100666b1eb6989c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01774d89fe8d047502000000f7d80345003b450872053b45007205ff5528cd8a894500d1ee8970fcc640ff4183ef02c74478fe0000000089cfd1ef89388d73058d7804d1e9f3a48060ffbfe9aafeffffb8780566b18b5d04ff23b8800266b18b5d04ff2389d8c3f40000|@13739,1,@1814|48,0,@9847 69,0,@9476 79,0,@9553 86,0,1 107,0,@9553 118,0,0 129,0,1 136,0,0 143,0,0 176,0,@9455 211,0,@11630 226,0,@9473 238,0,4 259,0,16777215 313,0,0 343,0,@9465 353,0,@9427 6620:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@1816| 6621:D3,52|3b650c7305ff552ccd01a801751dff308b40048b3c24ff37e8e3ffffff5b5eff342489742404e91d000000b801000000c3f40000|@13744,1,@1818|39,1,@6622 44,0,0 6622:D3,424|3b650c7305ff552ccd095350f60424010f85610100008b3c24ff378b7c2404ff77048b7c24048b178b7c240c8b3789f18d1c75010000008b0289c68d0445010000003bd80f859c00000089fb89df3bda7502eb2889ff89cb8d044d0100000089f18d3475010000003bc6751789ff8d77048d7a043bc9f3a67402eb07bf01000000eb618b7c240c89de8d1c75010000008b328d0475010000003bd8730489d9eb0289c189ff8d77048d7a04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175063bd87307eb0c83ff017c07bf03000000eb05bfffffffffeb2089cf8d3c7d010000008d3475010000003bfe7d07bfffffffffeb05bf0300000083ff017f2e8d6424088b7c240c8b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c404c204008b7c2414578b4424048b5c2410e8b5feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c408c204008d6424088b7c24048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20400f40000|@13743,1,@1817|125,0,0 182,0,0 189,0,1 196,0,-1 217,0,1 224,0,-1 251,0,-1 258,0,1 412,0,0 6623:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@1819|68,0,0 6624:D3,128|3b650c7305ff552ccd01a801756a8b38ff70048b07ff7704e897fbffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424048937578b442404e8b1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10030,1,@1820|25,1,@6619 121,0,0 6625:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1821|11,0,@10262 6626:D3,576|3b650c7305ff552ccd0953e84402000089c7576a016a018b7c240c89fe83ff017516bf248c67b18b378934248b7f04897c2404e9cc010000bf0100000089f6f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8f68df1ff89c7578b7c240489fb83ff017d0e8d642418b8a84566b18b5d04ff23b801000000e86812000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642408c7460801000000c74604308c67b1c7063c5c66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057bf010000008b742410f7c60100000075288b4e0489fa83c202710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057b801000000e8168df1ff89c7578b7c240489fb83ff017d0e8d64241cb8a84566b18b5d04ff23b801000000e8ec11000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642408c7460801000000c74604308c67b1c706783966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b3424897424048d642404897c2404ff3424ff7424088b4424108b5c2414e8b811000089c78b74241c8b142489168d6424048b14248956048d642414897e08b801000000c20400f4000000|@13847,1,@1845|12,1,@6627 35,0,@13841 57,0,0 86,0,@9455 113,0,0 118,1,@4975 141,0,@10224 151,0,0 156,1,@6640 191,0,1 198,0,0 205,0,0 225,0,0 232,0,@13842 238,0,@10566 273,0,12 279,0,0 310,0,@9455 337,0,0 342,1,@4975 365,0,@10224 375,0,0 380,1,@6641 415,0,1 422,0,0 429,0,0 449,0,0 456,0,@13842 462,0,@10066 497,0,12 532,1,@6642 565,0,0 6627:D3,168|3b650c7305ff552ccd01a8010f858f0000008b38ff7004ff378b47046a016a018b3883ff037511c70424010000008b7c2408897c2404eb12e87f00000089c7893c248b7c2408897c24045e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b442408e88bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c408c3b801000000c3f4|@10030,1,@1834|42,0,0 57,1,@6628 162,0,0 6628:D3,292|3b650c7305ff552ccd018b3889fe83ff0b75798b58048b780c8b570c89d68b52048b1283fa05755e89f78b7f048b3783fe0575488b4704ff7708e83dfff2ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70320b436b16a016a01548b44240ce85e010000588d642408e984ffffffb8a48b67b18b5d04ff23b805000000c389f783fe057506b803000000c383ff0775358b7004f7c60100000075238b7e0483ff017507bf03000000eb05bf0100000083ff03750a8b3e8b4704e934ffffffbf01000000eb06b805000000c3f7c60100000075248b4e0489fa83c202710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd48b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13840,1,@1833|59,1,@5210 96,0,@6629 110,1,@6630 125,0,@13837 135,0,2 148,0,1 178,0,1 185,0,0 205,0,0 212,0,2 236,0,@9455 6629:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@1822|81,0,0 91,0,0 6630:D3,128|3b650c7305ff552ccd0989dfba010000008b75008d76f83b75087305ff5528cd85897500c746fc010000408916568b5d008d5bf03b5d087305ff5528cd81895d00c743fc03000000897b088b3c24897b04c7034cb536b168448b67b1e82703000089c28b3c248b3f8d6424048b7424048916897e04b801000000c20400f40000|@13836,1,@1832|13,0,0 83,0,@6631 88,0,@13834 93,1,@6634 118,0,0 6631:D3,224|3b650c7305ff552ccd0589c7528b3783fe0d0f85c0000000ff77048b5f08c1eb0383cb01f6c301740783fb017d12eb140fb673ff8d34750100000083fe23740489deeb0eb8b02f66b157e86daaefff5f89c6f7c601000000747081fe1f4e000074078d64240889f8c38b7424048b5e0489f68b76085689f8e87700000089c7578b7c24048b078b3883ff0775388b3c248b3783fe0d752089ffff770468ac8967b18b5c2410e84a02000089c78b3424893e8d642404eb0e8d64240cb81c8967b18b5d04ff235883c408c38d642408b8d02f66b18b5d04ff238d64240489f8c3f4|@13833,1,@1830|69,0,@9958 75,1,@4895 92,0,9999 121,1,@6632 157,0,@13822 166,1,@6634 188,0,@13817 207,0,@9960 6632:D3,460|3b650c7305ff552ccd09538b3883ff0d7533ff7004ff70088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048b7424048937578b7c240c8b3feb0e8d642404b81c8967b18b5d04ff23f7c701000000753c8b178b77048b4a048b093b4c2408751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbcbf0100000083ff010f85180100008b5424148b0424ff1289c783ff010f85fb0000008b74240489f783e60983fe017507b903000000eb05b90100000083f10289ff83e70383ff017507ba03000000eb05ba0100000083f202bfcc5366b18b75008d76f83b75087305ff5528cd86897500c746fc01000040893ebf1f4e00008d3cfdf9ffffff83f9037507b909000000eb05b9010000000bf90bfa8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897808897004c7000d0000008b7c24088b3f893e8b55008d52f43b55087305ff5528cd01895500c742fc020000008b3c24897a048d64240489028b7424088b0e8b7d008d7ff43b7d087305ff5528cd47897d00c747fc02000000894f04891789f6893e83c40cc204008d6424108b07c204008d6424108b3f8b07c20400f4000000|@13821,1,@1823|74,0,@13817 152,0,0 200,0,1 207,0,0 225,0,1 232,0,0 240,0,@10423 273,0,9999 290,0,4 297,0,0 339,0,6 6633:D3,12|3b650c7305ff552ccd01c3f4|@13823,1,@1824| 6634:D3,540|3b650c7305ff552ccd0953e82002000089c7578b34248b1689d783fa09750e8d642408b83c8a67b18b5d04ff2389f6ba40b836b181c2400000008d54bafcffe2e933000000909090e937000000909090e93b000000909090e9b6000000909090e912010000909090e920010000909090e9020100009090908d642408b8902d66b1c204008d642408b8cc5366b1c2040089f689f7ff760489ffff77088b7c2414578b4424088b5c2410e852ffffff89c7578b7c2418578b4424088b5c2414e83dffffff89c68b142489d73b54240875113b742404750b8d64240c5883c404c204008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7000500000083c410c2040089f689f7ff760489ffff77088b7c2414578b4424088b5c2410e8c307000089c73b7c2404750b8d6424085883c404c204008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642404897804c7000700000083c40cc204008b54240489f08d6424088b3c24897c240483c404ff2289f789feff770489f689f7ff760c89ffff77108b7c2418578b44240c8b5c2414e81e08000089c7578b54241c8b442408ff1289c28b328b0c2489cf3b4c240c75113b542408750b8d6424105883c404c204008b45008d40e83b45087305ff5528cdc4894500c740fc050000008b4c240489481089500c89700889ff8978048d642408c7000b00000083c410c20400f4|@13832,1,@1829|12,1,@6635 36,0,@13826 48,0,@6634 125,0,@9922 137,0,@10423 265,0,2 301,1,@6637 365,0,3 430,1,@6638 529,0,5 6635:D3,544|3b650c7305ff552ccd01508b04248b3883ff0d756489c089c7ff700489ffff77088b7c2404ff378b0424e8d1ffffff8b3c243bf88d6424047502eb068b7c240489078b3889fe83ff0975068d64240858c389f783fe077511ff7004ff7008bf010000008b742404eb178d64240883ff03750258c38d642404c389c08d642404c3f7c60100000075288b4e0489fa83c202710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd06a016a018b7424088b1683fa0175198b56048b7608891424897424045a8d642404be01000000eb138b56048b1289d63b650c7305ff552ccdc1ebcdf6c20175288b5a0489f183c102710e8d642414b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc5ebd33bfe750d6a016a018b7c2408e9ba0000006a016a018b7c24088b3783fe01755a8b77048b7f08893424897c2404588d642404ff7424088b5c2408e8dd00000089c28b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b0c2489ce894f08895704c707070000008b54240c893a6a016a0189f6eb138b77048b3689f73b650c7305ff552ccd80eb8c8b1683fa0175248b56048b7608891424897424048d6424045e83fe0375078d64241489f8c38d64241058c38b56048b1289d63b650c7305ff552ccdc0ebc28b3783fe0175228b77048b7f08893424897c24048d6424045f83ff0375058d642414c38d64241058c38b77048b3689f73b650c7305ff552ccd81ebc4f4|@13825,1,@1826|95,0,0 151,0,@9455 210,0,0 255,0,@9455 339,1,@6636 384,0,3 6636:D3,1148|3b650c7305ff552ccd0953a8010f854e040000ff30ff7004f6442408010f85f50200008b7c2408ff378b7c240cff77048b7c24048b178b7c240c8b3f8d3c7d010000008b0a89ce8d0c4d010000003bf90f85a20000008b7c240c3bfa7502eb2c8b7c240c8b3f8d3c7d0100000089f18d3475010000003bfe75198b7c240c8d77048d7a043bc9f3a67402eb07bf01000000eb638b7c240c8b3f8d1c7d010000008b3a8d047d010000003bd8730489d9eb0289c18b7c240c8d77048d7a04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175063bd87307eb0c83ff017c07bf03000000eb05bfffffffffeb248b7c240c8b3f8d3c7d010000008d3475010000003bfe7d07bfffffffffeb05bf0300000083ff0175428b7c2418578b44240c8b5c2404e8cdfeffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c408c2040083ff010f8d490100008d6424088b5c2410c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489daeb0cb8b02f66b1e8c0a1efff89c2f6c2010f84f80000008b7c241083e70983ff017507b903000000eb05b90100000083f1028b7c241083e70383ff017507be03000000eb05be0100000083f602bbcc5366b18b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000040891f8d14d5f9ffffff83f9037507b909000000eb05b9010000000bd10bd68b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424048937578b7c2414578b4424088b5c2410e882fdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d64240c8938c204008d64240cb8d02f66b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000008b7c24088978048b7c240c89388b7c2418578b5c2404e818fdffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642408893883c404c204008b5c2410c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489daeb0cb8b02f66b1e818a0efff89c2f6c2010f84fc0000008b7c241083e70983ff017507b903000000eb05b90100000083f1028b7c241083e70383ff017507be03000000eb05be0100000083f602bbcc5366b18b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000040891f8d14d5f9ffffff83f9037507b909000000eb05b9010000000bd10bd68b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424048937578b7c2414578b442408bb01000000e8d9fbffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642408893883c404c204008d64240cb8d02f66b18b5d04ff238b3c2483ff01750c8d642404b801000000c2040058c20400f40000|@13824,1,@1825|141,0,0 200,0,0 207,0,1 214,0,-1 235,0,1 242,0,-1 273,0,-1 280,0,1 411,0,@9958 416,1,@4895 444,0,1 451,0,0 471,0,1 478,0,0 486,0,@10423 531,0,4 538,0,0 580,0,6 684,0,@9960 835,0,@9958 840,1,@4895 868,0,1 875,0,0 895,0,1 902,0,0 910,0,@10423 955,0,4 962,0,0 1004,0,6 1054,0,0 1112,0,@9960 1134,0,0 6637:D3,200|3b650c7305ff552ccd095053f6442404010f85a20000008b7424048b3e89f6ff7604ff37ff7704ba8c8a67b18b7c2418578b4424048b5c2410ff1289c7578b7c241c578b4424108b5c2414e8b0ffffff89c68b3c2489fa3b7c2404750e3b74240c75088d64241458c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089d28957048d6424048b54240489178b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c414c204008d642408b801000000c20400f40000|@13830,1,@1827|40,0,@13829 190,0,0 6638:D3,156|3b650c7305ff552ccd095053f644240401757c8b74240489f7ff3689ffff7704ba8c8a67b18b7c2414578b4424088b5c240cff1289c7578b7c2418578b4424088b5c2410e8b7ffffff89c68b142489d73b542408750e3b74240475088d64241058c204008b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489ff89388d64240483c410c204008d642408b801000000c20400f4|@13831,1,@1828|33,0,@13829 148,0,0 6639:D3,12|3b650c7305ff552ccd01c3f4|@13835,1,@1831| 6640:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1835|15,0,0 26,0,@9455 73,0,@10071 6641:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1836|15,0,0 26,0,@9455 73,0,@10071 6642:D3,1008|3b650c7305ff552ccd09a8010f85c50100008b1089d78b70048b1283fa01751383fe017507be03000000eb05be01000000eb05be0100000083fe030f8596010000ff7704b8487966b1bb883966b1e82d72f1ff89c7578b7c240489fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240457b801000000e8fd79f1ff89c757b801000000e85403000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8487966b1bbc43966b1e8397af1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c404c3a801755f8b1089d78b70048b1283fa05751383fe017507be03000000eb05be01000000eb05be0100000083fe0375348b7f0457b8b43a66b1e844a6f1ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3a801755f8b1089d78b70048b1283fa03751383fe017507be03000000eb05be01000000eb05be0100000083fe0375348b7f0457b8b43a66b1e8e1a5f1ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3a801755f8b1089d78b70048b12f6c201751383fe017507be03000000eb05be01000000eb05be0100000083fe0375348b7f0457b8b43a66b1e87ea5f1ff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c389c6bf01000000f7c60100000075318b0e8b56048b0983f901750489f9eb1189f983c102710ab8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc9ebc783ff037511ff342489442404b801000000e91201000083ff017509be0100000089c7eb49be0100000089c7f7c70100000075248b4f0489f283c202710ab8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc9ebd483ee0256ff74240489442408b801000000e9bf040000f7c70100000075248b4f0489f283c202710ab8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc1ebd483ee0289c3ff3424b80100000089742404e965080000f4|@13846,1,@1844|38,0,1 45,0,0 52,0,0 69,0,@10997 74,0,@10067 79,1,@4971 94,0,@9473 119,0,@9473 142,0,@10237 154,0,0 159,1,@4975 167,0,0 172,1,@6643 207,0,1 214,0,0 221,0,0 241,0,0 295,0,12 301,0,@10997 306,0,@10072 311,1,@4977 346,0,0 419,0,0 428,0,20 461,0,0 495,0,1 502,0,0 509,0,0 523,0,@10089 528,1,@5042 563,0,0 594,0,1 601,0,0 608,0,0 622,0,@10089 627,1,@5042 662,0,0 693,0,1 700,0,0 707,0,0 721,0,@10089 726,1,@5042 761,0,0 771,0,0 807,0,@9455 845,0,0 850,1,@6644 860,0,0 869,0,0 894,0,@9455 932,0,0 937,1,@6646 960,0,@9455 994,0,0 1003,1,@6648 6643:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1837|16,0,0 27,0,@9455 74,0,@10071 6644:D3,908|3b650c7305ff552ccd0950538b7c240cf7c7010000000f85630300008b7c240c8b3f8b74240cff76048b37f7c6010000000f85c70000008b3683fe0175518b7f0457b8902d66b18b5c2408e8a0a3f1ff89c757ff7424048b4424108b5c240ce89cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c204008b7f048b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004c70011000000578b5c2408e831a3f1ff89c757ff7424048b4424108b5c240ce82dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c2040083fe0375518b7f0457b8986767b18b5c2408e8dba2f1ff89c757ff7424048b4424108b5c240ce8d7feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c2040083fe0575518b7f0457b8902d66b18b5c2408e885a2f1ff89c757ff7424048b4424108b5c240ce881feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c20400ff77048b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c7070b000000578b0424bb883966b1e8386cf1ff89c7578b7c240889fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240857b801000000e80874f1ff89c757b801000000e86301000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404bbc43966b1e84574f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000578b44241083c002ff7424088b5c2410e8affcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c410c204008d642408b801000000c20400f4|@13843,1,@1839|67,0,@9922 76,1,@5042 177,0,8 187,1,@5042 264,0,@13360 273,1,@5042 350,0,@9922 359,1,@5042 462,0,5 471,0,@10067 476,1,@4971 491,0,@9473 516,0,@9473 539,0,@10237 551,0,0 556,1,@4975 564,0,0 569,1,@6645 604,0,1 611,0,0 618,0,0 638,0,0 692,0,12 702,0,@10072 707,1,@4977 742,0,0 815,0,0 824,0,20 900,0,0 6645:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1838|16,0,0 27,0,@9455 74,0,@10071 6646:D3,880|3b650c7305ff552ccd0950538b7c2410f7c7010000000f85450300008b7c24108b3f8b742410ff76048b37f7c601000000757c8b368b7f0483fe097f338b5424108b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c8970088b742408897004c7000f000000eb2e8b7424108b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088b742408897004c7000d000000578b5c2408e8449ff1ff89c7e96d02000083fe0375428b7f048b7424108b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088b742408897004c7000d000000578b5c2408e8fd9ef1ff89c7e92602000083fe0575428b7f048b7424108b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088b742408897004c7000d000000578b5c2408e8b69ef1ff89c7e9df010000ff77048b7c240c8b75008d76f83b75087305ff5528cd80897500c746fc01000000893e0fb67eff8d3c7d0100000081e7ff01000081e78100000081ff8100000075068066ffbfeb008b5424148b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70703000000578b0424bb883966b1e85768f1ff89c7578b7c240889fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240857b801000000e82770f1ff89c757b801000000e86a01000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404bbc43966b1e86470f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7072900000083c404578b44240c83c0028b7c2414ff742404578b5c2410e8cafcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c208008d642408b801000000c20800f40000|@13844,1,@1841|106,0,7 154,0,6 164,1,@5042 225,0,6 235,1,@5042 296,0,6 306,1,@5042 377,0,64 427,0,1 436,0,@10067 441,1,@4971 456,0,@9473 481,0,@9473 504,0,@10237 516,0,0 521,1,@4975 529,0,0 534,1,@6647 569,0,1 576,0,0 583,0,0 603,0,0 657,0,12 667,0,@10072 672,1,@4977 707,0,0 780,0,0 789,0,20 870,0,0 6647:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1840|16,0,0 27,0,@9455 74,0,@10071 6648:D3,520|3b650c7305ff552ccd0950f6c3010f85e40100008b3bff7304ff77048b7424108b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742408897704c70705000000578b0424bb883966b1e8d465f1ff89c7578b7c240889fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240857b801000000e8a46df1ff89c757b801000000e86701000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b442404bbc43966b1e8e16df1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000578b44240c83c0028b7c2414578b5c240ce836feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c40cc204008d642404b801000000c20400f4000000|@13845,1,@1843|70,0,2 79,0,@10067 84,1,@4971 99,0,@9473 124,0,@9473 147,0,@10237 159,0,0 164,1,@4975 172,0,0 177,1,@6649 212,0,1 219,0,0 226,0,0 246,0,0 300,0,12 310,0,@10072 315,1,@4977 350,0,0 423,0,0 432,0,20 509,0,0 6649:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1842|16,0,0 27,0,@9455 74,0,@10071 6650:D3,288|3b650c7305ff552ccd09a8010f8505010000f6c3010f85fc0000008b10ff70048b3b8b5b048b328b52048b4c240c8b45008d40f03b45087305ff5528cdce894500c740fc03000000894808895004c700050000008b4d008d49f43b4d087305ff5528cdc9894d00c741fc02000000897904c701030000008b7c24088b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04c702010000008b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000c7471801000000c7471401000000c74710603766b189470c894f088957048937578b7c24108b74240c57568b44240ce814ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c20800b801000000c20800f4|@11120,1,@1846|80,0,2 115,0,1 154,0,0 187,0,0 194,0,0 201,0,@10037 280,0,0 6651:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f8d336b1c3f4000000|@13887,1,@1864|43,0,@6652 6652:D3,268|3b650c7305ff552ccd0589c7ff378b4704ff7708ff770c8b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c70618d536b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707ccdd36b157bb909167b1e8dde3ffff89c68b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208010000008b3c24897a048d642404c7020d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707030000008b45008d40e03b45087305ff5528cdc0894500c740fc07000000c7401801000000c74014010000008b14248950108d64240489700c897808c74004050000008b3c2489388d642404c3f400|@13886,1,@1863|57,0,@6653 92,0,@6658 98,0,@13885 103,1,@6634 138,0,0 154,0,6 189,0,1 222,0,0 229,0,0 252,0,2 6653:D3,108|3b650c7305ff552ccd058b388b3f83ff0375218b78048b3f83ff037507bf03000000eb05bf0100000083ff037506b801000000c38b720489f78b1e89fe8b7f048b76085756e83600000089c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f40000|@13870,1,@1851|30,0,1 37,0,0 47,0,0 70,1,@6654 6654:D3,1100|3b650c7305ff552ccd09508b7d008d7ff43b7d087305ff5528cd08897d00c747fc020000008b3424897704c707f8d936b18b74240c5789d889f3e8c505000089c783ff010f85f60300008b3c248b77048b0e89ca83f9030f85be010000ff760889ffff7708b801000000e829c8ffff89c757b801000000e85407000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642404c7470801000000c74704b88e67b1c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704d88e67b189378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c706290000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b7424088b76048b0e89ca83f905750e8d64240cb8508f67b18b5d04ff2383fa0175168b76088b1683fa0375078b76048b36eb038b7604eb058b76048b368b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008b4c2404894e08895604c706030000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008b14248950088d642408897004893883c404c2080083fa010f85be010000ff760489ffff7708b801000000e862c6ffff89c757b801000000e88d05000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642404c7470801000000c74704b88e67b1c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704d88e67b189378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c706290000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b7424088b76048b0e89ca83f905750e8d64240cb8508f67b18b5d04ff2383fa0175168b76088b1683fa0375078b76048b36eb038b7604eb058b76048b368b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008b4c2404894e08895604c706030000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008b14248950088d642408897004893883c404c208008b56048b4e0889ff8b77088d6424048b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707050000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700d04166b1c208008d6424048b07c20800f40000|@13869,1,@1850|45,0,@6655 59,1,@6656 102,0,0 107,1,@6589 115,0,0 120,1,@6657 155,0,1 162,0,0 169,0,1 189,0,0 196,0,@13859 202,0,@10066 237,0,12 270,0,@13860 305,0,0 314,0,20 349,0,1 374,0,@13866 472,0,0 488,0,1 557,0,0 562,1,@6589 570,0,0 575,1,@6657 610,0,1 617,0,0 624,0,1 644,0,0 651,0,@13859 657,0,@10066 692,0,12 725,0,@13860 760,0,0 769,0,20 804,0,1 829,0,@13866 927,0,0 943,0,1 1043,0,2 1081,0,@10184 6655:D3,400|3b650c7305ff552ccd058b30ff70048b3e83ff0b0f85680100008b7e048b76088b5e0489d98b1b83fb0375488b420489c38b40048b0083f8037507b803000000eb05b80100000083f80375288b710489da8b52048b52043bf27507be03000000eb05be0100000083fe037502eb628d642404eb5689cb8b0983f901753f8b420489c18b40048b0083f8017507b803000000eb05b80100000083f803751f89de8b760c89ca8b52048b520c3bf27507be03000000eb05be01000000eb05be0100000083fe03740a8d642404b801000000c38b57048b3283fe030f85960000008b4f088b7d008d7ff03b7d087305ff5528cd06897d00c747fc03000000c74708010000008b34248977048d642404c7070d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706030000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b8f08d67b18b5d04ff238d642404b801000000c3f4000000|@13857,1,@1847|60,0,1 67,0,0 92,0,1 99,0,0 141,0,1 148,0,0 175,0,1 182,0,0 189,0,0 203,0,0 254,0,0 270,0,6 305,0,1 377,0,@13853 391,0,0 6656:D3,440|3b650c7305ff552ccd0953a8010f8598010000f60424010f8588010000ff30ff70048b7424088b3e89f6ff76048b5424148b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff1289c783ff010f851f0100008b7c24088b3fbe9cdb36b181c6780000008d74befcffe6e93b000000909090e94c000000909090e95d000000909090e96e000000909090e97f000000909090e990000000909090e9a1000000909090e9b20000009090908b4424045b8d6424048b74240c8974240c83c408e92fffffff8b4424045b8d6424048b74240c8974240c83c408e916ffffff8b4424045b8d6424048b74240c8974240c83c408e9fdfeffff8b4424045b8d6424048b74240c8974240c83c408e9e4feffff8d642404588b5c24048b74240c8974240c83c408e9cbfeffff8b4424045b8d6424048b74240c8974240c83c408e9b2feffff8b4424045b8d6424048b74240c8974240c83c408e999feffff8b4424045b8d6424048b74240c8974240c83c408e980feffff8d6424108b3f8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c204008d642404eb048d642404b801000000c20400f4|@13858,1,@1848|104,0,@6656 432,0,0 6657:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1849|16,0,0 27,0,@9455 74,0,@10071 6658:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468e88f67b168189067b16a01548304240ce8810000005f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@13884,1,@1861|22,0,@13871 27,0,@13873 39,1,@6661 6659:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1852| 6660:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1853| 6661:D3,712|3b650c7305ff552ccd0989da508b3c248b470c8b78048b3783fe050f8512010000ff7704ff7708ff30ff70088b7424208b4c241c8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c897708895704c70754e136b1578b44240cbbb09067b1e85cd9ffff89c7578b7c240c3b3c2475278d6424148b7424085f8b1789168b57048956048b57088956088b7f0c897e0cb801000000c210008b5424248b7c24148b07ff1289c38b75008d76f03b75087305ff5528cd08897500c746fc030000008b3c24897e088d6424048b7c240c89f9897e04c706050000008b7d008d7ff03b7d087305ff5528cd4a897d00c747fc030000008b14248957088d6424048977048b342489378d6424048b7424088b56088b742410891e89c9894e04895608897e0cb80100000083c40cc21000ff1289c7f7c701000000751dff378b7c24048b076a016a0189e3e83a020000ff742404ff74241ceb238b7424085f8b1789168b57048956048b57088956088b7f0c897e0cb801000000c21000f60424010f85cd0000008b342489f7ff3689ffff77048b7c24048b470c8b5c2418e8bb04000089c783ff030f85910000008b7c24048b076a016a0189e3e8cb0100008d6424045e3b74240c7507bf03000000eb3f8b3e8d147d010000008b7c240c8b1f89d98d1c5d010000003bd3751e89ff8d760489ff8d7f043bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c410eb1e5e897424043b650c7303ff552c83c404e929ffffff8d642410bf0100000083ff0175388b5424148b7c24048b07ff1289c18b7c24048b570489ff8b7f088b74240c890e895604897e088b3c24897e0c8d642408b801000000c210008d6424088b7424048b3f8b1789168b57048956048b57088956088b7f0c897e0cb801000000c21000f4000000|@13883,1,@1860|89,0,@6662 99,0,@13878 104,1,@6634 152,0,0 220,0,2 297,0,0 334,1,@6665 376,0,0 417,1,@6666 445,1,@6665 461,0,1 512,0,1 519,0,0 526,0,0 603,0,0 661,0,0 701,0,0 6662:D3,92|3b650c7305ff552ccd0589d66a016a016a016a01ba209067b18b5e048b7e088b760c68289067b15756548304240cff125f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f400|@13877,1,@1855|21,0,@13874 35,0,@13875 6663:D3,12|3b650c7305ff552ccd01c3f4|@13876,1,@1854| 6664:D3,12|3b650c7305ff552ccd01c3f4|@13877,1,@1856| 6665:D3,704|3b650c7305ff552ccd09538b388d0c7d010000006a016a0189ca83fa0175588b75008d76f03b75087305ff5528cd07897500c746fc03000000894608c746040100000089168b7d008d7ff03b7d087305ff5528cd43897d00c747fc03000000894708894f04c70701000000893424897c2404e98100000089d783c706d1ef0fb63c388d3c7d0100000083ff5d741689d783ef0289fa3b650c7305ff552ccd07e976ffffff8b75008d76f03b75087305ff5528cd07897500c746fc03000000894608895604c706010000002bca83c1018b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894708894f048917893424897c24048b3c24ff7424048b570489d683fa0175148d64240c5fc707100666b1894704b801000000c38b178b7f086a016a016a0183fe037d11891424c744240401000000897c2408eb0e83ee0289142489742404897c24085e595f8b178d14550100000083fe0175093bca7505e98000000083f9017507bf100666b1eb7489c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f871701000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee8d34378d7a04d1e9f3a48062ffbf89d7578b7c24048b3789ff8b4f0489ff8b7f088b178d14550100000083fe0175063bca7502eb7c83f9017507bf100666b1eb7089c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01776889d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee8d34378d7a04d1e9f3a48062ffbf89d78b7424108b142489168d642404897e04b80100000083c410c38d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff23f4000000|@13879,1,@1857|63,0,0 103,0,0 198,0,0 272,0,@9473 280,0,0 308,0,0 364,0,@9473 376,0,4 397,0,16777215 455,0,0 529,0,@9473 541,0,4 562,0,16777215 616,0,0 664,0,0 677,0,@9465 691,0,@9465 6666:D3,196|3b650c7305ff552ccd098b700489f78b3683fe05752a8b530489d68b1283fa057507ba03000000eb05ba0100000083fa03750d8b470889f78b5f08e99800000089fe8b3f83ff0375358b7b0489fa8b3f83ff037507bf03000000eb05bf0100000083ff0375188b7e0489d68b76043bfe7506b803000000c3b801000000c389f78b3683fe0175338b530489d68b1283fa017507ba03000000eb05ba0100000083fa0375168b7f0c8b760c3bfe7506b803000000c3b801000000c3b801000000c3f4000000|@13882,1,@1859|35,0,1 42,0,0 60,1,@6667 86,0,1 93,0,0 115,0,1 121,0,0 148,0,1 155,0,0 175,0,1 181,0,0 187,0,0 6667:D3,708|3b650c7305ff552ccd098b3889fe83ff0b753e8b3b83ff0b7537ff70048b700cff73048b7b0c8b460c8b5f0cbadc9067b1ff1289c783ff03750dff742404ff742404e9fd0100008d642408b801000000c389f783fe05753b8b3383fe0575348b7804ff70088b7304ff730889f389f8e88cffffff89c783ff03750e8b4424045b8d642404e977ffffff8d642408b801000000c389fe83ff0775198b3b83ff0775128b78048b48088b73048b53086a016a01eb4289f783fe0d751d8b3383fe0d75168b78048b73043bfe7506b803000000c3b801000000c383ff0375138b3b83ff037506b803000000c3b801000000c3b801000000c38b1983fb0175238b59048b4908891c24894c24048d6424045983f90375066a016a01eb19b801000000c38b59048b1b89d93b650c7305ff552ccdc6ebc38b0a83f90175218b4a048b5208890c24895424048d6424045a83fa0375045756eb19b801000000c38b4a048b0989ca3b650c7305ff552ccdc4ebc5f6442404010f85b20000008b7c2404ff378b7c2408ff7704f6442408010f85900000008b7c24088b178b7c2408ff77048b7c24088b378b3a3bf77502eb2a8b0e8d1c4d010000008b0789c18d0445010000003bd875538d76048d7f043bc9f3a674068d642414eb458b7c24088b47048b5a04e81cfeffff89c783ff0375218b7424045a8d64240489542404897424083b650c7303ff552c83c404e961ffffff8d642414b801000000c38d642414b801000000c38d642410b801000000c35f83ff01750a8d642404b803000000c38d642404b801000000c3f644240401755b8b7c24048b078b7c2404ff7704f644240401753d8b7c24048b1f8b7c2404ff7704e88ffdffff89c783ff03751a8b7424045a8d642404891424897424043b650c7303ff552cebb28d642418b801000000c38d642414b801000000c35f83ff01750a8d64240cb803000000c38d64240cb801000000c3f4000000|@13881,1,@1858|45,0,@13880 76,0,0 142,0,0 204,0,1 210,0,0 228,0,1 234,0,0 240,0,0 282,0,0 341,0,0 529,0,0 539,0,0 549,0,0 565,0,1 575,0,0 663,0,0 673,0,0 689,0,1 699,0,0 6668:D3,12|3b650c7305ff552ccd01c3f4|@13884,1,@1862| 6669:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f0e836b1c3f4000000|@13894,1,@1871|43,0,@6670 6670:D3,268|3b650c7305ff552ccd0589c7ff378b4704ff7708ff770c8b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c70610ea36b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70790ea36b157bb089267b1e8e5ceffff89c68b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208010000008b3c24897a048d642404c7020d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707030000008b45008d40e03b45087305ff5528cdc0894500c740fc07000000c7401801000000c74014010000008b14248950108d64240489700c897808c74004010000008b3c2489388d642404c3f400|@13893,1,@1870|57,0,@6671 92,0,@6672 98,0,@13892 103,1,@6634 138,0,0 154,0,6 189,0,1 222,0,0 229,0,0 252,0,0 6671:D3,108|3b650c7305ff552ccd058b388b3f83ff0375218b78048b3f83ff037507bf03000000eb05bf0100000083ff037506b801000000c38b720489f78b1e89fe8b7f048b76085756e83eebffff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f40000|@13870,1,@1865|30,0,1 37,0,0 47,0,0 70,1,@6654 6672:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468f89167b168009267b16a01548304240ce8bdf3ffff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@13884,1,@1868|22,0,@13890 27,0,@13891 39,1,@6661 6673:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1866| 6674:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1867| 6675:D3,12|3b650c7305ff552ccd01c3f4|@13884,1,@1869| 6676:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a4eb36b1c3f4000000|@13901,1,@1878|43,0,@6677 6677:D3,308|3b650c7305ff552ccd0589c7ff378b4704ff7708ff770cff7710ff77148b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c706ecec36b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7076ced36b157bb8c9267b1e82bccffff89c28b7d008d7ff03b7d087305ff5528cd04897d00c747fc03000000c74708010000008b34248977048d642404c7070d0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2404894f048b4c2408890f8b45008d40e03b45087305ff5528cdc4894500c740fc07000000c7401801000000c74014010000008b0c248948108d64240c89500c8970088978048b3c2489388d642404c3f4|@13900,1,@1877|63,0,@6678 98,0,@6679 104,0,@13899 109,1,@6634 144,0,0 160,0,6 195,0,1 267,0,0 274,0,0 6678:D3,108|3b650c7305ff552ccd058b388b3f83ff0375218b78048b3f83ff037507bf03000000eb05bf0100000083ff037506b801000000c38b720489f78b1e89fe8b7f048b76085756e862e8ffff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f40000|@13870,1,@1872|30,0,1 37,0,0 47,0,0 70,1,@6654 6679:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a04687c9267b168849267b16a01548304240ce8e1f0ffff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@13884,1,@1875|22,0,@13897 27,0,@13898 39,1,@6661 6680:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1873| 6681:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1874| 6682:D3,12|3b650c7305ff552ccd01c3f4|@13884,1,@1876| 6683:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70080ee36b1c3f4000000|@13908,1,@1885|43,0,@6684 6684:D3,256|3b650c7305ff552ccd0589c78b07ff77048b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c70694ef36b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70714f036b157bb189367b1e85bc9ffff89c68b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208010000008b3c24897a048d642404c7020d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707030000008b45008d40e03b45087305ff5528cdc0894500c740fc07000000c7401801000000c7401401000000c740100100000089700c897808c7400405000000c700100666b1c3f400|@13907,1,@1884|51,0,@6685 86,0,@6686 92,0,@13906 97,1,@6634 132,0,0 148,0,6 183,0,1 216,0,0 223,0,0 230,0,0 243,0,2 249,0,@9473 6685:D3,108|3b650c7305ff552ccd058b388b3f83ff0375218b78048b3f83ff037507bf03000000eb05bf0100000083ff037506b801000000c38b720489f78b1e89fe8b7f048b76085756e8bae5ffff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f40000|@13870,1,@1879|30,0,1 37,0,0 47,0,0 70,1,@6654 6686:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468089367b168109367b16a01548304240ce839eeffff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@13884,1,@1882|22,0,@13904 27,0,@13905 39,1,@6661 6687:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1880| 6688:D3,12|3b650c7305ff552ccd01c3f4|@13872,1,@1881| 6689:D3,12|3b650c7305ff552ccd01c3f4|@13884,1,@1883| 6690:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70028f136b1c3f4000000|@13924,1,@1896|43,0,@6691 6691:D3,484|3b650c7305ff552ccd0589d6ff308b4804ff7008ff700c8b39ff7104ff710c8b5110ff71148b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008b7604897104c70120f336b18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c706c0f336b1568b3783fe030f85950000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c70701000000eb008b75008d76e43b75087305ff5528cd80897500c746fc060000008b5424048956148b14248956108d6424088b142489560c8d642404c74608010000008b14248956048d642404893e8b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208010000008b3c24897a048d642404c7020d0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707030000008b45008d40ec3b45087305ff5528cdc0894500c740fc040000008b142489500c8d6424048970088978048b3c2489388d642404c3f400|@13923,1,@1895|71,0,@6692 109,0,@6693 153,0,@10109 207,0,0 268,0,0 330,0,0 375,0,0 391,0,6 426,0,1 6692:D3,140|3b650c7305ff552ccd058b7d008d7fe83b7d087305ff5528cd05897d00c747fc05000000c747100100000089470cc74708943966b1c7470401000000c707010000008b45008d40f03b45087305ff5528cd84894500c740fc03000000c740089c9367b1897804c700d04166b18b7a0489fe8b1f89f78b76048b570852ff74240489742408e9efe1fffff40000|@13912,1,@1886|39,0,0 49,0,@10068 56,0,0 62,0,0 95,0,@13911 104,0,@10184 133,1,@6654 6693:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e918000000f4000000|@13922,1,@1894|24,1,@6694 6694:D3,36|3b650c7305ff552ccd0989daff128b5c24048b3c24897c240483c404e917000000f40000|@13921,1,@1893|29,1,@6695 6695:D3,236|3b650c7305ff552ccd0989da8b78048b0f89ce83f9050f85c4000000ff77048b7708ff30ff70088b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708c74704dc9367b1c7072cf536b189fa8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70784f536b15789f0bb9c9467b1e891c3ffff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742408897704c707050000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d642408c383fe037501c38b470cff22f4|@13920,1,@1892|71,0,@13913 77,0,@6696 114,0,@6697 122,0,@13919 127,1,@6634 171,0,2 6696:D3,68|3b650c7305ff552ccd0589d78b70048b3683fe037506b801000000c38b57048b5f08ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4|@13914,1,@1887|23,0,0 6697:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468189467b1685c9467b16a01548304240ce8c9e8ffff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@13918,1,@1890|22,0,@13915 27,0,@13917 39,1,@6661 6698:D3,12|3b650c7305ff552ccd01c3f4|@13916,1,@1888| 6699:D3,12|3b650c7305ff552ccd01c3f4|@13916,1,@1889| 6700:D3,12|3b650c7305ff552ccd01c3f4|@13918,1,@1891| 6701:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70098f636b1c3f4000000|@13928,1,@1898|43,0,@6702 6702:D3,136|3b650c7305ff552ccd05ff308b3c248b470c8b720489f78b1e89fe8b7f048b76085756e8d8deffff89c38b3c248b3789ff8b570489ff8b4f088d6424048b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c894f0889570489378b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3f400|@13927,1,@1897|36,1,@6654 127,0,0 6703:D3,80|3b650c7305ff552ccd05a80175308b308b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c70798f736b18b7204893eb801000000c38b7a04c70701000000b801000000c3f40000|@13936,1,@1901|47,0,@6704 57,0,0 67,0,0 72,0,0 6704:D3,20|3b650c7305ff552ccd058b5a04e916000000f400|@13935,1,@1900|14,1,@6705 6705:D3,488|3b650c7305ff552ccd0989da8b7d1c578b3c24ff77148b7c2404ff77188b7c2408ff771c8b7c240cff7720ff7504bfc0f736b181c74b00000057896504ff1283c4045f897d04e92d0100008b650483c4045f897d04508b7c24108b742414897e148b7c240c8b742414897e188b7c24088b742414897e1c8b7c24048b742414897e208b3c248b770cf7c60100000075548b3e8b4e048b46088b560c8b5e108b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85b30000008b3fff378b5f04ff77088b470c8b4f108b7c2408ff378b7c240c8b7f048b74240c8b76088b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a088b4c2404894a048b4c2408890a8b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c8970088978045f8d64240c8938e8403eefff8b7c240c8b742410897e148b7c24088b742410897e188b7c24048b742410897e1c5f8d64240c5e897e20b801000000c38b3c248b3f8b34248b76045a8b52088b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400cf81d66b189500889700489388b5d04ff23f40000|@13934,1,@1899|47,0,@6705 229,0,0 372,1,@4842 419,0,0 468,0,@9840 6706:D3,80|3b650c7305ff552ccd05a80175308b308b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c70720fa36b18b7204893eb801000000c38b7a04c70701000000b801000000c3f40000|@13939,1,@1903|47,0,@6707 57,0,0 67,0,0 72,0,0 6707:D3,20|3b650c7305ff552ccd058b5a04e98efdfffff400|@13935,1,@1902|14,1,@6705 6708:D3,80|3b650c7305ff552ccd05a80175308b308b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707acfa36b18b7204893eb801000000c38b7a04c70701000000b801000000c3f40000|@13944,1,@1906|47,0,@6709 57,0,0 67,0,0 72,0,0 6709:D3,56|3b650c7305ff552ccd058b5204ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f8fa36b1c3f40000|@13943,1,@1905|48,0,@6710 6710:D3,20|3b650c7305ff552ccd058b5a04e9b6fcfffff400|@13935,1,@1904|14,1,@6705 6711:D3,80|3b650c7305ff552ccd05a80175308b308b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c70784fb36b18b7204893eb801000000c38b7a04c70701000000b801000000c3f40000|@13951,1,@1908|47,0,@6712 57,0,0 67,0,0 72,0,0 6712:D3,20|3b650c7305ff552ccd058b5a04e92afcfffff400|@13935,1,@1907|14,1,@6705 6713:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@13965,1,@1909|11,0,0 6714:D3,2176|3b650c7305ff552ccd018b700489f783fe037d06b8bc5466b1c38b3089f28b3683fe010f8502060000ff720483ef0257710e8d642408b8045566b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfdc00c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfdc00c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf1c01c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfdc00c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfdc00c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604cc9867b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707889967b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707949967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8bc5466b1c38b7a04ff720883ee0256710e8d642408b8045566b18b5d04ff238b142489d683fa017d0e8d642408be185566b1e91701000089f683ee02710e8d642408b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf1c01c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8045566b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf1c01c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc9967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@13988,1,@1910|21,0,@10437 55,0,@10442 79,0,@11421 107,0,@10442 148,0,@4622 171,0,@11421 199,0,@10442 240,0,@4622 263,0,@11421 290,0,@10442 331,0,@4630 354,0,@11421 382,0,@10442 423,0,@4622 455,0,@10442 496,0,@4622 535,0,@13967 572,0,@10448 607,0,@13969 642,0,@10448 677,0,@10449 750,0,@10448 785,0,@13971 820,0,@10448 855,0,@10449 928,0,@10448 963,0,@13973 998,0,@10448 1033,0,@10449 1106,0,@10448 1141,0,@13975 1176,0,@10448 1211,0,@10449 1284,0,@10448 1319,0,@13977 1357,0,@13979 1393,0,0 1400,0,0 1407,0,1 1413,0,0 1446,0,0 1483,0,@10448 1518,0,@13980 1554,0,0 1561,0,0 1568,0,1 1574,0,0 1587,0,@10437 1609,0,@10442 1633,0,@10443 1654,0,@10442 1695,0,@4630 1720,0,@10442 1765,0,@4630 1804,0,@10446 1841,0,@10448 1876,0,@10449 1952,0,@10450 1988,0,0 1995,0,0 2002,0,1 2008,0,0 2041,0,0 2078,0,@10448 2113,0,@13984 2149,0,0 2156,0,0 2163,0,1 2169,0,0 6715:D3,32|3b650c7305ff552ccd018b3883ff017506b803000000c3b801000000c3f40000|@13983,1,@1911|18,0,1 24,0,0 6716:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c3f4000000|@13983,1,@1912|43,0,0 6717:D3,16|3b650c7305ff552ccd018b4004c3f400|@13983,1,@1913| 6718:D3,32|3b650c7305ff552ccd018b3883ff037506b803000000c3b801000000c3f40000|@13987,1,@1914|18,0,1 24,0,0 6719:D3,56|3b650c7305ff552ccd018b388b70048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70003000000c3f400|@13987,1,@1915|49,0,1 6720:D3,52|3b650c7305ff552ccd018b78048b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@13987,1,@1916| 6721:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@13965,1,@1917|11,0,0 6722:D3,2916|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8bc5466b1c38b3089f28b3683fe010f854d0400008b7204ff7208ff720cff721083ef0257710e8d642414b8045566b18b5d04ff238b142489d783fa017d0e8d642414be185566b1e91803000089ff83ef02710e8d642414b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bfdc00c0b08b17ff1289c7578b74240489f783fe037d0abf185566b1e95402000089ff83ef02710e8d642418b8045566b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bffc00c0b08b17ff1289c7578b7c240889fe83ff057d0abe185566b1e98f01000089f683ee02710e8d64241cb8045566b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf3c01c0b08b17b80ca167b1ff1289c28b0424ff1289c7578b74241083ee02710e8d642424b8045566b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742414893757bf3c01c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424248b7604897704c707981137b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706645566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073ca167b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c38d64240489fe83ff037d06b8bc5466b1c389d78b1283fa030f854802000089fa8b7a04ff720883ee0256710e8d642408b8045566b18b5d04ff238b142489d683fa017d0e8d642408be185566b1e91701000089f683ee02710e8d642408b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfdc00c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8045566b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bfdc00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780a167b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8bc5466b1c389fe8b3f83ff057506b8c4a167b1c389d783fa037d06b8bc5466b1c389f28b3683fe070f85f90100008b720483ef02710ab8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf1c01c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ff080e66b17507bf03000000eb2381ffec1166b17507bf03000000eb1481ff6c1066b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070ca267b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8bc5466b1c38b7a04ff720883ee0256710e8d642408b8045566b18b5d04ff238b142489d683fa017d0e8d642408be185566b1e91701000089f683ee02710e8d642408b8045566b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf1c01c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8045566b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bfdc00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707645566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70750a267b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@14093,1,@1920|26,0,@10437 69,0,@10442 93,0,@10443 114,0,@10442 155,0,@4622 178,0,@10443 199,0,@10442 244,0,@4626 267,0,@10443 288,0,@10442 334,0,@4634 341,0,@14091 371,0,@10442 417,0,@4634 461,0,@6724 494,0,1 501,0,3 510,0,0 558,0,@10446 595,0,@10448 630,0,@10449 706,0,@10448 741,0,@10449 814,0,@10448 849,0,@10449 925,0,@10450 961,0,0 968,0,0 975,0,1 981,0,0 1014,0,0 1051,0,@10448 1086,0,@14094 1122,0,0 1129,0,0 1136,0,1 1142,0,0 1159,0,@10437 1196,0,@10442 1220,0,@10443 1241,0,@10442 1282,0,@4622 1307,0,@10442 1352,0,@4622 1391,0,@10446 1428,0,@10448 1463,0,@10449 1539,0,@10450 1575,0,0 1582,0,0 1589,0,1 1595,0,0 1628,0,0 1665,0,@10448 1700,0,@14098 1736,0,0 1743,0,0 1750,0,1 1756,0,0 1769,0,@10437 1784,0,@14102 1797,0,@10437 1824,0,@10442 1865,0,@4630 1931,0,@9545 1938,0,1 1946,0,@9628 1953,0,1 1961,0,@9596 1968,0,1 1975,0,0 2020,0,@10624 2057,0,@10625 2092,0,@10450 2128,0,0 2135,0,1 2142,0,3 2148,0,0 2187,0,0 2224,0,@10448 2259,0,@14106 2295,0,0 2302,0,0 2309,0,1 2315,0,0 2328,0,@10437 2350,0,@10442 2374,0,@10443 2395,0,@10442 2436,0,@4630 2461,0,@10442 2506,0,@4622 2545,0,@10446 2582,0,@10448 2617,0,@10449 2693,0,@10450 2729,0,0 2736,0,0 2743,0,1 2749,0,0 2782,0,0 2819,0,@10448 2854,0,@14110 2890,0,0 2897,0,0 2904,0,1 2910,0,0 6723:D3,20|3b650c7305ff552ccd01bf6403c0b08b17ff22f4|@13988,1,@1918|11,0,@4703 6724:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@14093,1,@1919| 6725:D3,32|3b650c7305ff552ccd018b3883ff017506b803000000c3b801000000c3f40000|@14097,1,@1921|18,0,1 24,0,0 6726:D3,68|3b650c7305ff552ccd018b388b70048b50088b480c8b45008d40e83b45087305ff5528cdc6894500c740fc0500000089481089500c897008897804c70001000000c3f400|@14097,1,@1922|61,0,0 6727:D3,64|3b650c7305ff552ccd018b78048b70088b500c8b48108b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f4000000|@14097,1,@1923| 6728:D3,32|3b650c7305ff552ccd018b3883ff037506b803000000c3b801000000c3f40000|@14101,1,@1924|18,0,1 24,0,0 6729:D3,56|3b650c7305ff552ccd018b388b70048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70003000000c3f400|@14101,1,@1925|49,0,1 6730:D3,52|3b650c7305ff552ccd018b78048b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@14101,1,@1926| 6731:D3,32|3b650c7305ff552ccd018b3883ff057506b803000000c3b801000000c3f40000|@14105,1,@1927|18,0,1 24,0,0 6732:D3,32|3b650c7305ff552ccd018b3883ff077506b803000000c3b801000000c3f40000|@14109,1,@1928|18,0,1 24,0,0 6733:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@14109,1,@1929|43,0,3 6734:D3,16|3b650c7305ff552ccd018b4004c3f400|@14109,1,@1930| 6735:D3,32|3b650c7305ff552ccd018b3883ff097506b803000000c3b801000000c3f40000|@14113,1,@1931|18,0,1 24,0,0 6736:D3,56|3b650c7305ff552ccd018b388b70048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70009000000c3f400|@14113,1,@1932|49,0,4 6737:D3,52|3b650c7305ff552ccd018b78048b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@14113,1,@1933| 6738:D3,44|3b650c7305ff552ccd0183f8037507bf303766b1eb05bf903f66b1beec00c0b0893eb801000000c3f4000000|@14348,1,@1934|16,0,@10034 23,0,@10147 28,0,@4624 35,0,0 6739:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@1935|11,0,@10262 6740:D3,20|3b650c7305ff552ccd01b890b267b1c3f4000000|@13593,1,@1937|11,0,@14356 6741:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@13592,1,@1936|11,0,@10050 6742:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1938|16,0,0 27,0,@9455 74,0,@10071 6743:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@1939|16,0,0 27,0,@9455 74,0,@10071 6744:D3,16|3b650c7305ff552ccd018b4004c3f400|@14365,1,@1940| 6745:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1941|15,0,0 26,0,@9455 73,0,@10071 6746:D3,16|3b650c7305ff552ccd018b4008c3f400|@14369,1,@1942| 6747:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1943|15,0,0 26,0,@9455 73,0,@10071 6748:D3,16|3b650c7305ff552ccd018b00c3f40000|@14373,1,@1944| 6749:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@1945|15,0,0 26,0,@9455 73,0,@10071 6750:D3,288|3b650c7305ff552ccd09a8010f8505010000f6c3010f85fc0000008b10ff70048b3b8b5b048b328b52048b4c240c8b45008d40f03b45087305ff5528cdce894500c740fc03000000894808895004c700050000008b4d008d49f43b4d087305ff5528cdc9894d00c741fc02000000897904c701030000008b7c24088b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04c702010000008b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000c7471801000000c7471401000000c74710603766b189470c894f088957048937578b7c24108b74240c57568b44240ce814ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c20800b801000000c20800f4|@11120,1,@1946|80,0,2 115,0,1 154,0,0 187,0,0 194,0,0 201,0,@10037 280,0,0 6751:D3,32|3b650c7305ff552ccd058b7204ff3424bb0100000089742404e916000000f400|@19454,1,@4339|17,0,0 26,1,@6752 6752:D3,1776|3b650c7305ff552ccd0950538b7c24048b3f8d1c7d0100000083fb01750abf64b667b1e98c00000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f875301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf64b667b1b90b0000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a09d1e9f3a48062ffbf89d7578b3c248b3f8d3c7d01000000578b3c2489fe83ff01750e8d642408bba00c66b1e98900000089f689f783c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f879100000089d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c24048d77048d7b04d1e9f3a489d783c7088d642408d1efc6043b0a8063ffbfbf0c8046b48b07e899edeeffbf0c8046b48b078b781057bb6c1e66b1e81c19efffb803000000bb01000000e8f54cefff89c2eb1c8d642410b8780566b18b5d04ff238d642408b8780566b18b5d04ff23f6c201754e8b328b5a0481fe74b667b17502eb268b3e8d3c7d0100000083ff057521bf74b667b18d76048d7f0433c983c1023bc9f3a67402eb09f6c30175048b03eb1589df89fa3b650c7305ff552ccd04ebadb8500e66b1ba80b667b18b5c2404e8eb04000089c7576a016a01ba18b967b18b44240889e3e878130000ff34248b5c2408b86cb967b1e84b18000089c38b0424e84118000089c78d64240c57ff7504bf881937b181c77204000057896504ff7504bf881937b181c7b603000057896504ff742410b807000000bb01000000e8e319000083c4045f897d04baf82066b16a038b5c240ce82c26efff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf030000008b55008d52f83b55087305ff5528cdc0895500c742fc01000048893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707030000008b55008d52f83b55087305ff5528cd80895500c742fc01000048893abe030000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004889378b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542408895704893783c4045e89750483c408e9180200008b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abfa0b967b18b378934248b7704897424048b7f08897c2408eb3d8b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000c74708b0b967b18947048b7424148937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400cc8b967b189500889700489388b5d04ff238b650483c4045f897d048b3881ff2c00c0b00f855b0200008d642404ff7504bf881937b181c72906000057896504ff742408b807000000bb01000000e8b917000083c4045f897d04baf82066b16a038b5c2404e80224efff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf030000008b55008d52f83b55087305ff5528cdc0895500c742fc01000048893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707030000008b55008d52f83b55087305ff5528cd80895500c742fc01000048893abe030000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004889378b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8957048937ff37ff77048b442414e8d416000089c28b45008d40f03b45087305ff5528cd04894500c740fc030000008b7c24088978088b7c24048978045f8938ff128b3c248b375f8d6424048b4704bb649a69b18974240883c404e97714efff8b650483c4045f897d046a016a016a018b3089f781fe2c00c0b07513893c248b7804897c24048b7808897c2408eb5c83ff03751abfa0b967b18b378934248b7704897424048b7f08897c2408eb3d8b7d008d7ff03b7d087305ff5528cd01897d00c747fc03000000c74708b0b967b18947048b74240c8937c704242c00c0b0c7442404b80466b1897c24085f5e5a8b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400cc8b967b189500889700489388b5d04ff238d6424108b5d04ff23f400|@19453,1,@4338|31,0,@14411 51,0,4 72,0,16777215 130,0,0 139,0,@14411 144,0,5 209,0,@9515 231,0,4 252,0,16777215 310,0,0 356,0,@19863 363,1,@4819 368,0,@19863 379,0,@9844 384,1,@4839 389,0,1 394,0,0 399,1,@4902 412,0,@9465 426,0,@9465 447,0,@14412 470,0,@14412 519,0,@9551 524,0,@14413 533,1,@6753 545,0,@14441 556,1,@6764 568,0,@14444 573,1,@6766 583,1,@6766 598,0,@6752 616,0,@6752 635,0,3 640,0,0 645,1,@6767 657,0,@9870 668,1,@4860 705,0,1 738,0,1 804,0,1 837,0,1 972,0,@4600 1003,0,@14447 1057,0,@14448 1073,0,@4600 1081,0,@9449 1121,0,@14449 1152,0,@4600 1170,0,@6752 1189,0,3 1194,0,0 1199,1,@6767 1211,0,@9870 1222,1,@4860 1259,0,1 1292,0,1 1358,0,1 1391,0,1 1496,1,@6768 1561,0,@19452 1573,1,@4839 1599,0,@4600 1630,0,@14447 1684,0,@14448 1700,0,@4600 1708,0,@9449 1748,0,@14449 6753:D3,604|3b650c7305ff552ccd0d52536a016a016a018b7c24108b571489e3ff12ff3424ff742408ff7424106a016a016a018b7c24288b57148b44242489e3ff12ff3424ff7424088b7c241083ff0375428d6424308b45008d40ec3b45087303ff5528894500c740fc04000000c7400cacb667b1c7400801000000c74004dcb667b18b3c248b7f0c8d64240489388b5d04ff238b7c240489fe81ff100666b17502eb2589f68b3e8d3c7d0100000083ff01751abf100666b189f68d76048d7f0433c93bc9f3a67505e9c00000008b7c24308b57108b44241cff1289c7578b7c24348b57108b442408ff1289c78b142489d63bd7750b8d642404bf03000000eb4389f68b168d1455010000008b1f89d98d1c5d010000003bd3752089f68d76048d6424048d7f043bc9f3a67507bf03000000eb05bf01000000eb098d642404bf0100000083f70283ff0375428d6424308b45008d40ec3b45087303ff5528894500c740fc04000000c7400ce8b667b1c7400801000000c74004dcb667b18b3c248b7f0c8d64240489388b5d04ff238b7c24308b57088b44242cff1289c78b7f0883ff030f8581000000f604240175588b14248b3281fe100666b17507bf03000000eb348b3e8d3c7d0100000083ff017521bf100666b18d76048d7f0433c93bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff03750b89d78b5f048d642414eb045b83c4108b7c241c8b4f048b4424085a8b74241c8954241c89ca8974241883c418ff228b4424188b1c24e83f00000089c38d6424048b7c242c8b4f048b4424188b5424108b7424308954243089ca8974242c83c42cff22f40000|@14420,1,@1948|108,0,@14415 115,0,0 122,0,@14417 151,0,@9473 176,0,@9473 246,0,1 297,0,1 304,0,0 315,0,0 358,0,@14418 365,0,0 372,0,@14417 433,0,@9473 440,0,1 461,0,@9473 480,0,1 487,0,0 494,0,0 557,1,@6754 6754:D3,192|3b650c7305ff552ccd0989c789d8f7c7010000000f85a4000000ff378b7f0483ff0175688b3c2489fe81ff100666b175068d642404eb2b89f68b3e8d3c7d0100000083ff01751cbf100666b189f68d76048d7f0433c93bc9f3a67402eb058d642404c38b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008947048b342489378d64240489f8c389c389f8e86bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f4|@14419,1,@1947|43,0,@9473 72,0,@9473 6755:D3,668|3b650c7305ff552ccd0d5250538b7c24088b57188b7c24108b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24048938ff1289c783ff03743c8d6424088b45008d40ec3b45087303ff5528894500c740fc04000000c7400c6cb767b1c7400801000000c74004dcb667b15f8b7f0489388b5d04ff23ff3424f604240175348b3c248b078b3c24ff77048b7c24108b5714ff1289c783ff03740b8d642408bf03000000eb175e8934243b650c7303ff552cebc68d642404bf0100000083ff03753c8d6424088b45008d40ec3b45087303ff5528894500c740fc04000000c7400c84b767b1c7400801000000c740049cb767b15f8b7f1089388b5d04ff238b7c241083ff030f85e70000008b7c24048b3f8d1c7d010000008b7c24088b7f0c8b3f8d3c7d010000005783fb0175108d6424048b7c24088b7f0ce9a40000008b3c2483ff01750d8d6424048b7c2404e98f0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776989f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c7088b74240c8b760c598d7604d1ef8d3c3ad1e9f3a48062ffbf89d7eb128d642410b8780566b18b5d04ff238b7c2404578b7c240c8b5f0c8b442404e8a000000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938e8fdf9eeff89c7578b7c24088b57088b0424ff1289c78b3f8b7424103bfe743c8d6424088b45008d40ec3b45087303ff5528894500c740fc04000000c7400cdcb767b1c7400801000000c74004dcb667b15f8b7f0489388b5d04ff235883c408c20400f40000|@14428,1,@1950|99,0,@14423 106,0,0 113,0,@14417 169,0,1 194,0,0 234,0,@14424 241,0,0 248,0,@14425 361,0,4 382,0,16777215 436,0,0 498,0,@9465 524,1,@6756 567,1,@4827 629,0,@14427 636,0,0 643,0,@14417 6756:D3,172|3b650c7305ff552ccd0953a8010f858b000000ff308b400483f801752c8b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b3c2489388d64240483c404c38b5c2404e8aeffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c38d642404b801000000c3f4000000|@14426,1,@1949|56,0,0 163,0,0 6757:D3,200|3b650c7305ff552ccd018b3089f78d3475010000006a016a016a016a0183fe017e5c8d3c7d0100000083ff017f0e8d642410b8a01e66b18b5d04ff230fb678048d3c7d0100000083ff5f7507bf03000000eb05bf0100000083ff037521bf18b867b18b378934248b7704897424048b7708897424088b7f0c897c240ceb1fbf2cb867b18b378934248b7704897424048b7708897424088b7f0c897c240c5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f4|@14432,1,@1951|51,0,@9847 77,0,1 84,0,0 94,0,@14430 127,0,@14431 6758:D3,140|3b650c7305ff552ccd018b388d3c7d01000000ba010000003bd77207bf01000000eb4d89d683c608d1ee0fb634308d34750100000083fe5f7502eb1883fe01741389d683c60289f23b650c7305ff552ccd85ebc48b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783ff017507b803000000eb05b80100000083f00283f002c3f4000000|@11926,1,@1952|20,0,0 29,0,0 118,0,1 125,0,0 6759:D3,80|3b650c7305ff552ccd018b3081fe100666b17506b803000000c38b3e8d3c7d0100000083ff01751fbf100666b18d76048d7f0433c93bc9f3a67506b803000000c3b801000000c3b801000000c3f40000|@14434,1,@1953|14,0,@9473 21,0,1 41,0,@9473 60,0,1 66,0,0 72,0,0 6760:D3,12|3b650c7305ff552ccd01c3f4|@14436,1,@1954| 6761:D3,544|3b650c7305ff552ccd0d5250538b7c240489fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff017536bf100666b189f68d76048d7f0433c93bc9f3a67402eb1f5ebfc8b867b18b1789168b57048956048b7f08897e08b80100000083c408c38b7c24088b57088b442404ff1289c7ff37ff7704ff77088b770c8b7c24108b1789d38d0c55010000002bce710e8d642418b8f80466b18b5d04ff2383c10189ff89da8d045d0100000083fe010f8c5901000083f9010f8c420100008d5c0eff3bd8760e8d642418b808cf66b18b5d04ff2389ff8d14550100000083fe01750b3bca750789fee98200000083f9017507be100666b1eb7689c883c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87d400000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe0000000089cbd1eb891a83c608d1ee89ff8d34378d7a04d1e9f3a48062ffbf89d68b3e8d3c7d010000008b5424148b5204575652b801000000bb01000000e8a300000089c78b342483fe038d64240475308b74240483fe0374278b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706100666b189f7eb008b7424088b142489168d642404897e048b3c24897e088d642408b80100000083c408c38d642418b8780566b18b5d04ff238d642418b8800266b18b5d04ff238d642418b8800266b18b5d04ff23f4000000|@14439,1,@1956|21,0,@9473 46,0,@9473 70,0,@14438 91,0,0 149,0,@9455 203,0,@11630 243,0,@9473 255,0,4 276,0,16777215 334,0,0 387,0,0 392,0,0 397,1,@6762 455,0,@9473 490,0,0 503,0,@9465 517,0,@9427 531,0,@9427 6762:D3,888|3b650c7305ff552ccd0950538b5424148b3c2489fe3bfa0f855c01000089f12b4c24048d642404710e8d642404b8f80466b18b5d04ff2383c1018b7c240c8b3f8d347d010000008b142489d783fa010f8c1601000083f9010f8cff00000089ff89fa8d7c0fff3bfe760e8d642404b808cf66b18b5d04ff238b7c240c8b3f8d3c7d0100000089d289d683fa0175113bcf750d8d6424048b7c2408e98a00000083f901750b8d642404bf100666b1eb7a89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01777f89fb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ef02c7447afe0000000089cfd1ef893a89f683c6088d6424048b7c2408d1ee8d34378d7a04d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20c008d642404b8780566b18b5d04ff238d642404b8800266b18b5d04ff238d642404b8800266b18b5d04ff238b54240c89f683c6088b7c2410d1ee0fb63c378d047d01000000ff1289c783ff030f859d0100008b0c2489cb2b4c2404710e8d642408b8f80466b18b5d04ff2383c1018b7c24108b3f8d347d010000008b54240489d783fa010f8c5701000083f9010f8c4001000089ff89fa8d7c0fff3bfe760e8d642408b808cf66b18b5d04ff238b7c24108b3f8d3c7d0100000089d289d683fa01750d3bcf75098b7c2410e98600000083f9017507bf100666b1eb7a89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f87c400000089f88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183ef02c7447afe0000000089cfd1ef893a89f683c6088b7c2410d1ee8d34378d7a04d1e9f3a48062ffbf89d75789db89d883c302710e8d64240cb8f80466b18b5d04ff2389c083c002710e8d64240cb8f80466b18b5d04ff238b7c24188b7424148b542410575652e81bfdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c408c20c008d642408b8780566b18b5d04ff238d642408b8800266b18b5d04ff238d642408b8800266b18b5d04ff238b1c2483c3028d642404710e8d642404b8f80466b18b5d04ff23588b74240c8b5424088b4c2404894c2404895424088974240ce98bfcfffff40000|@11632,1,@1955|46,0,@9455 111,0,@11630 169,0,@9473 181,0,4 202,0,16777215 256,0,0 326,0,0 340,0,@9465 354,0,@9427 368,0,@9427 432,0,@9455 498,0,@11630 548,0,@9473 560,0,4 581,0,16777215 639,0,0 691,0,@9455 712,0,@9455 792,0,@9465 806,0,@9427 820,0,@9427 846,0,@9455 6763:D3,28|3b650c7305ff552ccd0183f85f7506b803000000c3b801000000c3f4|@14440,1,@1957|16,0,1 22,0,0 6764:D3,700|3b650c7305ff552ccd0d50538b7c24048b3f8d3c7d01000000578b042483e802710e8d64240cb8f80466b18b5d04ff238b5a04ff742408ff742404e89002000089c7f7c7010000000f85570200008b1f8b7c24088b3f8d3c7d0100000083fb010f8c310200003bdf760e8d64240cb808cf66b18b5d04ff238b7c24088b3f8d3c7d010000003bdf75098b7c2408e98100000083fb017507bf100666b1eb7589d883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f87c601000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd88895500d1ee8972fcc642ff4183ef02c7447afe0000000089dfd1ef893a89d98b7c24088d77048d7a04d1e9f3a48062ffbf89d75789de83c602710e8d642410b8f80466b18b5d04ff238b4c24042bcb710e8d642410b8f80466b18b5d04ff2383e901710e8d642410b8f80466b18b5d04ff238b7c240c8b3f8d147d0100000083fe010f8c1301000083f9010f8cfc0000008d7c0eff3bfa760e8d642410b808cf66b18b5d04ff238b7c240c8b3f8d3c7d0100000083fe01750d3bcf75098b74240ce98400000083f9017507be100666b1eb7889c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f878800000089fb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ef02c7447afe0000000089cfd1ef893a83c608d1ee8b7c240c8d34378d7a04d1e9f3a48062ffbf89d68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742408893e8b3c24897e048d642404b80100000083c40cc38d642410b8780566b18b5d04ff238d642410b8800266b18b5d04ff238d642410b8800266b18b5d04ff238d64240cb8780566b18b5d04ff238d64240cb8800266b18b5d04ff238d6424045ec706010000005f897e04b801000000c3f400|@14443,1,@1959|39,0,@9455 60,1,@6765 111,0,@11630 152,0,@9473 164,0,4 185,0,16777215 243,0,0 288,0,@9455 310,0,@9455 329,0,@9455 382,0,@11630 428,0,@9473 440,0,4 461,0,16777215 519,0,0 599,0,0 612,0,@9465 626,0,@9427 640,0,@9427 654,0,@9465 668,0,@9427 684,0,0 693,0,0 6765:D3,512|3b650c7305ff552ccd0950538b7c240489fe83ff017f0c8d642408b801000000c208008b142489f689f783fe017d098d642408e9bd0100008b7424108b368d0c750100000089ff89fe3bf97c07bf03000000eb05bf0100000083ff030f848f01000089f683c6088b7c2410d1ee0fb63c378d047d01000000ff1289c783ff03750c8d642408b801000000c208008b74240489f783fe017d098d642408e9460100008b7424108b368d14750100000089ff89fe3bfa7c07bf03000000eb05bf0100000083ff030f841801000089f689f083c6088b7c2410d1ee0fb63c378d3c7d0100000083ff5d0f85c90000008b7c240c83ef02710e8d642408b8f80466b18b5d04ff2389c089c63bc7750c8d642408b801000000c208005a89f683ee02710e8d642404b8f80466b18b5d04ff2383fe017d068d642404eb738b7c240c8b3f8d3c7d010000003bf77c07bf03000000eb05bf0100000083ff03744d83c6088b7c240cd1ee0fb63c378d047d01000000ff1289c783ff03750c8d642404b801000000c208008b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d642404c208008d642404b8a01e66b18b5d04ff2389c083e802710e8d642408b8f80466b18b5d04ff235b8b74240c8b542408895424088974240c83c404e91dfeffff8d642408b8a01e66b18b5d04ff238d642408b8a01e66b18b5d04ff23f4|@14442,1,@1958|28,0,0 78,0,1 85,0,0 134,0,0 183,0,1 190,0,0 250,0,@9455 272,0,0 292,0,@9455 330,0,1 337,0,0 380,0,0 428,0,@9847 449,0,@9455 488,0,@9847 502,0,@9847 6766:D3,460|3b650c7305ff552ccd0953a8010f85b5010000ff308b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff01751ebf100666b18b34248d76048d7f0433c93bc9f3a67402eb068d64240458c38b7c24048b378d1c750100000083fb01750abf500e66b1e98100000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f871f01000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf89c78b378d1c75010000008b34248b368d3475010000005683fb0175098d6424045883c404c38b342483fe0175078d64240c89f8c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbf83c404c38d64240cb8780566b18b5d04ff238d642408b8780566b18b5d04ff2358c3f400|@14446,1,@1960|26,0,@9473 56,0,@9473 104,0,@9551 124,0,4 145,0,16777215 203,0,0 306,0,4 327,0,16777215 381,0,0 433,0,@9465 447,0,@9465 6767:D3,48|b97c7446b48b0989e78965208b651883ec38ff77045350ff751cffd189fc837d10017503c204008b45108b5d04ff23f4|@9421,1,@1961|1,0,@19861 6768:D3,884|3b650c7305ff552ccd01508b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707c03937b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707b83a37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c707b03b37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c707a83c37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707a03d37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707983e37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c707903f37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c897704c707644137b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707384337b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742424897704c7070c4537b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707e04637b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74242c897704c707b44837b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742430897704c707884a37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c707cc4b37b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742438897704c707104d37b1578b75008d76f43b75087303ff5528897500c746fc020000008b7c243c897e04c706544e37b18b4d008d49f43b4d087305ff5528cd40894d00c741fc020000008b7c243c897904c701984f37b18b55008d52f43b55087305ff5528cd42895500c742fc020000008b7c243c897a04c702dc5037b18b7d008d7fb43b7d087305ff5528cd46897d00c747fc120000008b5c2428895f448b5c2424895f408b5c2414895f3c8b5c2430895f388b5c240c895f348b5c2434895f308b5c242c895f2c8b5c2438895f288b5c2418895f24894f208b4c241c894f1c8b4c2410894f188b4c2420894f148957108b142489570c8d6424048b14248957088d6424048977045e8d64243089378b45008d40f03b45087305ff5528cd80894500c740fc030000005e897008897804c700205237b1c3f40000|@19451,1,@4336|43,0,@6769 81,0,@6771 119,0,@6773 157,0,@6775 195,0,@6777 233,0,@6779 271,0,@6781 309,0,@6784 347,0,@6787 385,0,@6790 423,0,@6793 461,0,@6796 499,0,@6799 537,0,@6802 575,0,@6805 613,0,@6808 652,0,@6811 691,0,@6814 876,0,@6817 6769:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700183a37b1e927d4f0fff40000|@10013,1,@1963|56,0,@6770 61,1,@4913 6770:D3,140|3b650c7305ff552ccd058b42048b5a08e8bfd1f0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb8c00c0b0753489cf81ff8c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1962|17,1,@4911 36,0,0 60,0,@4612 70,0,@4612 109,0,@9999 133,0,0 6771:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700103b37b1e92fd3f0fff40000|@10013,1,@1965|56,0,@6772 61,1,@4913 6772:D3,140|3b650c7305ff552ccd058b42048b5a08e8c7d0f0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9400c0b0753489cf81ff9400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1964|17,1,@4911 36,0,0 60,0,@4613 70,0,@4613 109,0,@9999 133,0,0 6773:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700083c37b1e937d2f0fff40000|@10013,1,@1967|56,0,@6774 61,1,@4913 6774:D3,140|3b650c7305ff552ccd058b42048b5a08e8cfcff0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9c00c0b0753489cf81ff9c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1966|17,1,@4911 36,0,0 60,0,@4614 70,0,@4614 109,0,@9999 133,0,0 6775:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700003d37b1e93fd1f0fff40000|@10013,1,@1969|56,0,@6776 61,1,@4913 6776:D3,140|3b650c7305ff552ccd058b42048b5a08e8d7cef0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fba400c0b0753489cf81ffa400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1968|17,1,@4911 36,0,0 60,0,@4615 70,0,@4615 109,0,@9999 133,0,0 6777:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700f83d37b1e947d0f0fff40000|@10013,1,@1971|56,0,@6778 61,1,@4913 6778:D3,140|3b650c7305ff552ccd058b42048b5a08e8dfcdf0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbac00c0b0753489cf81ffac00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1970|17,1,@4911 36,0,0 60,0,@4616 70,0,@4616 109,0,@9999 133,0,0 6779:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700f03e37b1e94fcff0fff40000|@10013,1,@1973|56,0,@6780 61,1,@4913 6780:D3,140|3b650c7305ff552ccd058b42048b5a08e8e7ccf0ff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbb400c0b0753489cf81ffb400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@1972|17,1,@4911 36,0,0 60,0,@4617 70,0,@4617 109,0,@9999 133,0,0 6781:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700f03f37b1e94dcef0fff4|@10024,1,@1976|66,0,@6782 71,1,@4913 6782:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7068c00c0b05689ff8b470489ff8b5f08e8accbf0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e928d9f0fff4000000|@10023,1,@1975|38,0,0 54,0,@9574 60,0,@4612 76,1,@4911 114,0,0 135,1,@6783 168,1,@4928 6783:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff8c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1974|26,0,@4612 145,0,0 6784:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700c44137b1e979ccf0fff4|@10024,1,@1979|66,0,@6785 71,1,@4913 6785:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069400c0b05689ff8b470489ff8b5f08e8d8c9f0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e954d7f0fff4000000|@10023,1,@1978|38,0,0 54,0,@9574 60,0,@4613 76,1,@4911 114,0,0 135,1,@6786 168,1,@4928 6786:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1977|26,0,@4613 145,0,0 6787:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700984337b1e9a5caf0fff4|@10024,1,@1982|66,0,@6788 71,1,@4913 6788:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069c00c0b05689ff8b470489ff8b5f08e804c8f0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e980d5f0fff4000000|@10023,1,@1981|38,0,0 54,0,@9574 60,0,@4614 76,1,@4911 114,0,0 135,1,@6789 168,1,@4928 6789:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1980|26,0,@4614 145,0,0 6790:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7006c4537b1e9d1c8f0fff4|@10024,1,@1985|66,0,@6791 71,1,@4913 6791:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706ac00c0b05689ff8b470489ff8b5f08e830c6f0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9acd3f0fff4000000|@10023,1,@1984|38,0,0 54,0,@9574 60,0,@4616 76,1,@4911 114,0,0 135,1,@6792 168,1,@4928 6792:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1983|26,0,@4616 145,0,0 6793:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700404737b1e9fdc6f0fff4|@10024,1,@1988|66,0,@6794 71,1,@4913 6794:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706a400c0b05689ff8b470489ff8b5f08e85cc4f0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9d8d1f0fff4000000|@10023,1,@1987|38,0,0 54,0,@9574 60,0,@4615 76,1,@4911 114,0,0 135,1,@6795 168,1,@4928 6795:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffa400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1986|26,0,@4615 145,0,0 6796:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700144937b1e929c5f0fff4|@10024,1,@1991|66,0,@6797 71,1,@4913 6797:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706b400c0b05689ff8b470489ff8b5f08e888c2f0ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e904d0f0fff4000000|@10023,1,@1990|38,0,0 54,0,@9574 60,0,@4617 76,1,@4911 114,0,0 135,1,@6798 168,1,@4928 6798:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffb400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@1989|26,0,@4617 145,0,0 6799:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700dc4a37b1e964c3f0fff4000000|@14452,1,@1994|51,0,@6800 56,1,@4913 6800:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404fcb967b1e91ae0f0fff400|@10029,1,@1993|17,0,0 25,0,@14451 30,1,@4949 6801:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f98c00c0b0755c81fa8c00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@1992|35,0,@4612 43,0,@4612 124,0,@9999 6802:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700204c37b1e920c2f0fff4000000|@14452,1,@1997|51,0,@6803 56,1,@4913 6803:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c744240428ba67b1e9d6def0fff400|@10029,1,@1996|17,0,0 25,0,@14453 30,1,@4949 6804:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99400c0b0755c81fa9400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@1995|35,0,@4613 43,0,@4613 124,0,@9999 6805:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700644d37b1e9dcc0f0fff4000000|@14452,1,@2000|51,0,@6806 56,1,@4913 6806:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c744240430ba67b1e992ddf0fff400|@10029,1,@1999|17,0,0 25,0,@14454 30,1,@4949 6807:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99c00c0b0755c81fa9c00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@1998|35,0,@4614 43,0,@4614 124,0,@9999 6808:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700a84e37b1e998bff0fff4000000|@14452,1,@2003|51,0,@6809 56,1,@4913 6809:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c744240438ba67b1e94edcf0fff400|@10029,1,@2002|17,0,0 25,0,@14455 30,1,@4949 6810:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9a400c0b0755c81faa400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@2001|35,0,@4615 43,0,@4615 124,0,@9999 6811:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700ec4f37b1e954bef0fff4000000|@14452,1,@2006|51,0,@6812 56,1,@4913 6812:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c744240440ba67b1e90adbf0fff400|@10029,1,@2005|17,0,0 25,0,@14456 30,1,@4949 6813:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9ac00c0b0755c81faac00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@2004|35,0,@4616 43,0,@4616 124,0,@9999 6814:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700305137b1e910bdf0fff4000000|@14452,1,@2009|51,0,@6815 56,1,@4913 6815:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c744240448ba67b1e9c6d9f0fff400|@10029,1,@2008|17,0,0 25,0,@14457 30,1,@4949 6816:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9b400c0b0755c81fab400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@2007|35,0,@4617 43,0,@4617 124,0,@9999 6817:D3,44|3b650c7305ff552ccd0589d789c68b068b5e048b76088b57048b4f085251ff7424088974240ce915000000f4|@19450,1,@4335|39,1,@6818 6818:D3,1760|3b650c7305ff552ccd095053be030000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240889770c8b7424048977088b3424897704c707545937b157ff7504bf605237b181c79a00000057896504e9680200008b650483c4045f897d04508b3c248b3f81ffcf00000075515fff77088b7c24108b3f8b7424108b460457bb68bb67b1e8fae0eeff8b45008d40ec3b45087303ff5528894500c740fc04000000c7400cc8bb67b15f897808c74004b83566b1c700cf0000008b5d04ff238b3c24ff77048b3c248b3f8d1c7d0100000083fb01750e8d642404bfe0bb67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87a201000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe0bb67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d7578b3c248b3f8d3c7d01000000578b3c2489fe83ff01750e8d642408bbf4bb67b1e99900000089f689f783c61089f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87e300000089d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c24048d77048d7b04d1e9f3a489d783c7088d642408bef4bb67b1b9110000008d7604d1ef8d3c3bd1e9f3a48063ffbfbf0c8046b48b07e8b4b3eeffbf0c8046b48b078b781057bb6c1e66b1e837dfeeff8b7c24108b3f8b7424108b460457bb04bc67b1e81fdfeeff8b3c248b3f8b34248b76045a8b52088b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c0cbc67b189500889700489388b5d04ff238d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238b7c240c8b3f83ff030f844a0100008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707286737b18b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c74604640f66b1c7068c01c0b08b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542418895708c74704640f66b1c7079c01c0b08b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420454bc67b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7037cbf67b183fb0175068b7c2428eb0b8b442428e80f20000089c78b442424578b5c240ce86320000089c78b7f04f7c701000000751f8b17b801000000ff1289c68b3eff7604ff7608ff760cff7610ff761457eb1cb8ac9969b18b5d04ff23b80100000083c4045f897d0483c414c20c00f604240175598b3c248b3f8b3424ff76048b378b57048b7c243c8b1f8b7c243c8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700404b48b1e80ab7f0ff5e8934243b650c7303ff552ceba18d642404ff74240cf604240175598b3c248b3f8b3424ff76048b378b57048b7c243c8b1f8b7c243c8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700b44c48b1e8a3b6f0ff5e8934243b650c7303ff552ceba18d642404ff3424f604240175598b3c248b3f8b3424ff76048b378b57048b7c243c8b1f8b7c243c8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700284e48b1e83db6f0ff5e8934243b650c7303ff552ceba18d642408ff3424f604240175598b3c248b3f8b3424ff76048b378b57048b7c24388b1f8b7c24388b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7009c4f48b1e8d7b5f0ff5e8934243b650c7303ff552ceba18d642408ff3424f604240175598b3c248b3f8b3424ff76048b378b57048b7c24348b1f8b7c24348b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700105148b1e871b5f0ff5e8934243b650c7303ff552ceba18d64240cff3424f604240175598b3c248b3f8b3424ff76048b378b57048b7c242c8b1f8b7c242c8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700845248b1e80bb5f0ff5e8934243b650c7303ff552ceba18d6424083b650c7303ff552ce926fcfffff4000000|@19449,1,@4334|13,0,1 47,0,0 126,0,@6819 135,0,@6818 172,0,103 197,0,@14468 202,1,@4839 233,0,@14472 244,0,@10021 250,0,103 287,0,@14473 307,0,4 328,0,16777215 386,0,0 395,0,@14473 400,0,11 462,0,@14474 484,0,4 505,0,16777215 563,0,0 599,0,@14474 604,0,8 625,0,@19863 632,1,@4819 637,0,@19863 648,0,@9844 653,1,@4839 672,0,@14475 677,1,@4839 725,0,@14476 747,0,@9465 761,0,@9465 818,0,@6827 851,0,0 861,0,@9574 867,0,@4644 900,0,0 914,0,@9574 920,0,@4646 953,0,@14478 1021,0,@14519 1041,1,@6840 1057,1,@6841 1077,0,0 1106,0,@19446 1116,0,0 1205,0,@9131 1210,1,@4913 1308,0,@9133 1313,1,@4913 1410,0,@9135 1415,1,@4913 1512,0,@9137 1517,1,@4913 1614,0,@9139 1619,1,@4913 1716,0,@9141 1721,1,@4913 6819:D3,116|3b650c7305ff552ccd05528b34248b7e0c89fa8b3f89d68b460457bb50ba67b1e8afdaeeff83f80175168b3c248b7f048d642404c70703000000b801000000c38b3883ff1575268b34248b7e0889fa8b3f83c702710e8d642404b8f80466b18b5d04ff2389d68d642404893ec38d642404c3f400|@14467,1,@2014|28,0,@14458 33,1,@4839 54,0,1 59,0,0 91,0,@9455 6820:D3,144|3b650c7305ff552ccd01508b3c248b076a016a0154bb03000000e8850000008b0424ff742404e801c6eeff89c78b34248b54240c89328d6424108b1789d68d14550100000083fa017506b801000000c38d34750100000083fe017f0ab8a01e66b18b5d04ff230fb67f048d3c7d010000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@14466,1,@2013|22,0,1 27,1,@6821 39,1,@4827 75,0,0 93,0,@9847 6821:D3,1388|3b650c7305ff552ccd098b3883ff010f8504050000ff7004ff7008ff700cff70108b7c240c8b3f8d3c7d0100000083ff0175418d6424088b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b74240c893e8b3c24897e048d642408b801000000c2040089fe2b742404710e8d642410b8f80466b18b5d04ff2383c6013bde0f8d9f0100008b7c240c8b3f8d347d010000008b7c240483ff010f8c7701000083fb010f8c600100008b7c24048d7c1fff3bfe0f87420100008b7c240c8b3f8d3c7d010000008b74240483fe01750d3bdf75098b7c240ce98a00000083fb017507bf100666b1eb7e89d883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f87e000000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd88895500d1ee8972fcc642ff4183ef02c7447afe0000000089dfd1ef893a8b74240483c60889d9d1ee8b7c240c8d34378d7a04d1e9f3a48062ffbf89d78b55008d52f43b55087305ff5528cd88895500c742fc02000000c7420401000000893a89df83ef018b5c240403df710e8d642410b8f80466b18b5d04ff238b7d008d7fe83b7d087305ff5528cd0c897d00c747fc050000005e897710895f0c8b7424048977088b742408897704c707010000008b7424108916897e04b80100000083c40cc204008d642410b8780566b18b5d04ff238d642410b8d41b66b18b5d04ff238d642410b8800266b18b5d04ff238d642410b8800266b18b5d04ff238d64240489fe2b3424710e8d64240cb8f80466b18b5d04ff2383c6013bde0f85410100008b3c2483ff010f8c270100008b7c24088b3f8d0c7d010000008b3c243bf90f87010100002b0c2483c1018b7c24088b3f8d3c7d010000008b342483fe0175113bcf750d8d6424048b742404e98900000083f901750b8d642404be100666b1eb7989c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f879200000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd82895500d1ee8972fcc642ff4183ef02c7447afe0000000089cfd1ef893a5e83c608d1ee8b7c24048d34378d7a04d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b74240c893e8b3c24897e048d642404b80100000083c404c204008d64240cb8780566b18b5d04ff238d64240cb8741e66b18b5d04ff238d64240cb8800266b18b5d04ff232b3c24710e8d64240cb8f80466b18b5d04ff2383c7012bdf710e8d64240cb8f80466b18b5d04ff2383c3016a016a01548b442410e82efcffffff3424ff7424088b7c241083ff010f8c250100008b7c24188b3f8d0c7d010000008b7c24103bf90f87fe0000002b4c241083c1018b7c24188b3f8d3c7d010000008b74241083fe01750d3bcf75098b742418e98800000083f9017507be100666b1eb7c89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f879500000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd82895500d1ee8972fcc642ff4183ef02c7447afe0000000089cfd1ef893a8b74241083c608d1ee8b7c24188d34378d7a04d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240489570489378b742420893e8b3c24897e048d642408b80100000083c414c204008d64241cb8780566b18b5d04ff238d64241cb8741e66b18b5d04ff238d64241cb8800266b18b5d04ff238b70048b78088b45008d40f03b45087305ff5528cdc8894500c740fc030000008958088978048930ff74240457bb58ba67b1e858d4eeff89c78b378b142489328b7f045e897e04b801000000c20400f4000000|@14465,1,@2012|82,0,0 109,0,0 129,0,@9455 241,0,@9473 253,0,4 274,0,16777215 332,0,0 402,0,0 426,0,@9455 484,0,0 498,0,0 513,0,@9465 527,0,@9821 541,0,@9427 555,0,@9427 580,0,@9455 690,0,@9473 702,0,4 723,0,16777215 781,0,0 846,0,0 869,0,0 884,0,@9465 898,0,@9845 912,0,@9427 931,0,@9455 952,0,@9455 1071,0,@9473 1083,0,4 1104,0,16777215 1162,0,0 1253,0,0 1268,0,@9465 1282,0,@9845 1296,0,@9427 1351,0,@14459 1356,1,@4839 1377,0,0 6822:D3,72|3b650c7305ff552ccd0189c76a016a018b078b5f048b7f08575483042404e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14464,1,@2011|31,1,@6823 6823:D3,1468|3b650c7305ff552ccd0950538b7c24048b3f8b1789d683fa05753b8b7d008d7ff03b7d087303ff5528897d00c747fc030000005e8977085e897704c707030000008b742404c70660ba67b1897e04b801000000c2080083fe010f8507030000ff7704ff77088b5f0c8b7c24048b3f8d347d0100000083fe01756a8b55008d52f43b55087303ff5528895500c742fc02000000c74204010000008b7c2404893a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b7424088977088b34248977048d64240cc707030000008b7424088916897e04b80100000083c404c208008b7c24183bfe0f8d960100008b7c24048b3f8d347d010000008b7c241883ff010f8c6e0100008b7c24183bfe0f87540100008b7c24048b3f8d347d010000008b7c24183bfe75098b7c2404e98b0000008b7c241883ff017507bf100666b1eb7b8b44241883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f87f100000089fe8d147502000000f7da0355003b550872053b55007205ff5528cd88895500d1ee8972fcc642ff4183ef02c7447afe000000008b7c2418d1ef893a8b4c24188b7c24048d77048d7a04d1e9f3a48062ffbf89d78b55008d52f43b55087305ff5528cd88895500c742fc02000000c7420401000000893a8b75008d76f03b75087305ff5528cd0c897500c746fc030000008b7c2408897e088b3c24897e048d642404c706030000008b4c24148b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8977085e8d642404897704c707010000008b7424088916897e04b80100000083c404c208008d642410b8780566b18b5d04ff238d642410b8d41b66b18b5d04ff238d642410b8800266b18b5d04ff238b7c24183bfe756a8b55008d52f43b55087303ff5528895500c742fc02000000c74204010000008b7c2404893a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b7424088977088b34248977048d64240cc707030000008b7424088916897e04b80100000083c404c208008b7c24182bfe710e8d642410b8f80466b18b5d04ff2383c7016a016a015754830424048b4424108b5c2418e8d8fcffff5e5f8d6424048b55008d52f43b55087305ff5528cdc0895500c742fc020000008972045e8d64240489328b7424088916897e04b80100000083c404c208008b7c2404ff376a016a018b7c24088b3f83ff030f854e0100008b7c24088b7f048b7724f7c6010000000f85d2000000ff368b7714ff772c83fe017507bf01000000eb278b16b801000000ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937578b5424088b442404ff1289c68b7c24148b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000598d642408894f0c895708897704c707010000008b4c241089398b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c240c894f08895704c70703000000893424897c2404e9e90000008d6424148b378b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c747086cba67b1c747048c1b66b189378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c7cba67b1897808c74004b80466b1c7002c00c0b08b5d04ff238b7c24088b3f83ff0575398b7d008d7ff03b7d087303ff5528897d00c747fc030000008b74240c8977088b742410897704c70703000000c70424100666b1897c2404eb3f8b7c24088b77048b7c24088b57088b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c240c894f08895704c70703000000893424897c24045e5f8b168d14550100000083fa0175388d64240c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b7424048916897e04b801000000c208008d6424048b4424045b8d6424048b7424088b5424048954240489742408e946fafffff400|@14463,1,@2010|61,0,1 71,0,@14460 79,0,0 149,0,0 204,0,1 218,0,0 318,0,@9473 332,0,4 353,0,16777215 411,0,0 476,0,0 527,0,1 580,0,0 594,0,0 609,0,@9465 623,0,@9821 637,0,@9427 681,0,0 736,0,1 750,0,0 773,0,@9455 860,0,0 931,0,0 940,0,0 1063,0,0 1111,0,1 1162,0,@14461 1169,0,@9818 1204,0,@14462 1214,0,@9449 1220,0,@4600 1280,0,1 1287,0,@9473 1349,0,1 1409,0,0 1425,0,0 6824:D3,60|3b650c7305ff552ccd018b388b3783fe0175118b770889f73b650c7305ff552ccd80ebe88b47048b7708ff3424bb70bb67b189742404e9c1cdeefff4|@14471,1,@2016|46,0,@14469 55,1,@4839 6825:D3,72|3b650c7305ff552ccd018b388b1789d683fa0375138b7f048b570cc700f02e66b1b801000000ff2283fe057506b801000000c38b7f0889f83b650c7305ff552ccd01ebc6f4000000|@14470,1,@2015|29,0,@9945 34,0,0 46,0,0 6826:D3,60|3b650c7305ff552ccd018b388b3783fe0175118b770889f73b650c7305ff552ccd80ebe88b47048b7708ff3424bb70bb67b189742404e915cdeefff4|@14471,1,@2017|46,0,@14469 55,1,@4839 6827:D3,20|3b650c7305ff552ccd058b7a048b07c3f4000000|@14477,1,@2018| 6828:D3,368|3b650c7305ff552ccd018b38ff70088b700cff368b460883ff037507bf88bc67b1eb05bf98bc67b157ba803066b1bb03000000e8c0f8eeff89c7578b44240ce84001000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604903867b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70778bd67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70784bd67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70794bd67b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240ce872b7eeff89c3bf0c8046b48b07e8ec9feeffbf0c8046b48b078b7010ff3424bb6c1e66b189742404e969cbeefff4|@14496,1,@2022|29,0,@14482 36,0,@14483 42,0,@9967 47,0,1 52,1,@4896 64,1,@6829 99,0,@12746 136,0,@14493 209,0,@14494 279,0,@14495 322,1,@4827 329,0,@19863 336,1,@4819 341,0,@19863 354,0,@9844 363,1,@4839 6829:D3,652|3b650c7305ff552ccd018b3889fef7c7010000000f848201000083ff010f858f000000f7c601000000747d83fe01756e8b78048b50088b480c8b58108b75008d76ec3b75087305ff5528cd8e897500c746fc04000000895e0c894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b560c89570c8b56088957088b56048957048b3689378b470ce807020000e996b6eeffb8b0bc67b18b5d04ff23b8cc4466b18b5d04ff2389f7f7c6010000000f84d200000083fe030f85a4000000f7c7010000000f848e00000083ff03757f8b78048b50088b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b56048957048b3689378b1f83fb017d0ab8a84566b18b5d04ff23b801000000e8d201000089c6f7c601000000750b8b16bf0100000089f1eb53b8100666b1c3b804bd67b18b5d04ff23b8cc4466b18b5d04ff23f7c701000000741383ff0775048b4004c3b830bd67b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff23f6c10175248b410489fb83c302710ab8f80466b18b5d04ff2389c189df3b650c7305ff552ccdc6ebd783ff017c7983ff03750abf400666b18b4457fec389f883c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01773f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdc4894500d1e98948fcc640ff4183ea02c74450fe00000000d1ef8938bf09000000eb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f7c60100000075258b0e8b5e04d1e989fad1ea880c1089fa83c20289d989ce89d73b650c7305ff552ccdc1ebd38060ffbfc3f40000|@14492,1,@2021|149,1,@6830 154,1,@4827 159,0,@14485 169,0,@10214 299,0,@10224 309,0,0 314,1,@6831 331,0,0 340,0,@9473 346,0,@14488 356,0,@10214 383,0,@14490 393,0,@10214 403,0,@10214 413,0,@10214 438,0,@9455 474,0,@9476 489,0,4 510,0,16777215 564,0,0 573,0,4 580,0,@9465 590,0,@9468 6830:D3,92|3b650c7305ff552ccd0189c7f7c70100000075418b07ff7704baa8bc67b1ff1289c7578b442404e8d4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@2019|26,0,@14484 86,0,0 6831:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70041000000c3f400|@10221,1,@2020|15,0,0 26,0,@9455 73,0,32 6832:D3,32|3b650c7305ff552ccd01ff3424bb38be67b1c74424048d000000e969000000f4|@14511,1,@2028|14,0,@14504 22,0,70 27,1,@6834 6833:D3,64|3b650c7305ff552ccd0589c7528b34248b76048b0689fbe8f89beeff8b3c248b7f048d6424048b078b7010ff3424bb6c1e66b189742404e970c7eefff4000000|@14505,1,@2023|24,1,@4819 47,0,@9844 56,1,@4839 6834:D3,76|3b650c7305ff552ccd09538b7c24088b74240857ff74240456bb01000000e83d00000089c78b7424083bfe74125ab8a00c66b18b3c24897c240483c404ff228d642404b801000000c20400f4|@14510,1,@2027|26,0,0 31,1,@6835 47,0,@9515 68,0,0 6835:D3,564|3b650c7305ff552ccd098b3889fef7c7010000000f846001000083ff010f85b2000000f7c6010000000f849c00000083fe010f85890000008b7804ff7008ff701083ef0103df53710e8d64240cb8f80466b18b5d04ff238b5c2418e8e801000089c783ff01754bff742404ff74241c8b5424108b4c241c8b5c24088b4424188b742414c744241084be67b1894424148b442404895c24188b1c24894c241c895424208974240c83c40ce9020400008d642414ff37ff742408ff742420e927010000b8b0bc67b18b5d04ff23b8cc4466b18b5d04ff2389f7f7c6010000000f848d00000083fe03752cf7c701000000741a83ff03750bff7004ff3424e984000000b804bd67b18b5d04ff23b8cc4466b18b5d04ff23f7c701000000744a83ff07753bff70048b54240c8b0424ff125f8b3f8d3c7d010000008b44240c2bc7710ab8f80466b18b5d04ff2383c00183f8017e03c20c00b801000000c20c00b830bd67b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff238b3c2483ff017e2e8b542410b8a80d66b1ff128b342483ee02710e8d642408b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b4424102b04248d642404710ab8f80466b18b5d04ff2383c00183f8017e03c20c00b801000000c20c00f64424040175388b7c24048b078b7c2404ff77048b7c24248b742420ff74240457568b5c241ce8edfdffff89c25e891424897424043b650c7303ff552cebc18d6424085883c40cc20c00f400|@14509,1,@2026|78,0,@9455 92,1,@6836 135,0,@14507 170,1,@6837 194,0,@14485 204,0,@10214 257,0,@14488 267,0,@10214 320,0,@9455 341,0,0 349,0,@14490 359,0,@10214 369,0,@10214 379,0,@10214 401,0,@9537 420,0,@9455 460,0,@9455 481,0,0 6836:D3,596|3b650c7305ff552ccd0989df8b3089f2f7c6010000000f84e701000083fe010f85af000000f6c2010f849c00000083fa010f85890000008b70048b48088b580c8b40108b55008d52ec3b55087305ff5528cdcb895500c742fc0400000089420c895a08894a0489328b75008d76ec3b75087305ff5528cd84897500c746fc040000008b4a0c894e0c8b4a08894e088b4a04894e048b1289168b760c8b55008d52f83b55087305ff5528cdc0895500c742fc01000000893a89d75657e94d010000b8b0bc67b18b5d04ff23b8cc4466b18b5d04ff2389d6f6c2010f841a01000083fa030f85ac000000f7c6010000000f849600000083fe030f85830000008b70048b48088b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc020000008b4a04894e048b1289168b363bf77f2e2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3b804bd67b18b5d04ff23b8cc4466b18b5d04ff23f7c601000000745383fe0775448b70048b368d3475010000003bf77f2e2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3b830bd67b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff23b8cc4466b18b5d04ff23f644240401753a8b7c24048b0789ffff77048b74240489f783fe017507ba01000000eb0b89ff8b1fe8c6fdffff89c25e891424897424043b650c7303ff552cebbf5883c404c3f4|@14506,1,@2024|193,0,@14485 203,0,@10214 337,0,@9455 379,0,0 385,0,@14488 395,0,@10214 438,0,@9455 480,0,0 486,0,@14490 496,0,@10214 506,0,@10214 516,0,@10214 555,0,0 6837:D3,1076|3b650c7305ff552ccd0989c753f7c7010000000f85c60100008b07ff77048b3889fef7c7010000000f84a301000083ff03757ff604240174088d64240458c21400f7c601000000745b83fe037548ff7004ff70088b7c242483ff037505e9500200008b74240c89f73b7424047f05e93f02000089ff2b7c2404710e8d642410b8f80466b18b5d04ff2383c701ff74240857e94d0100008d642408b804bd67b18b5d04ff238d642408b8cc4466b18b5d04ff2389f7f7c6010000000f840301000083fe070f85a1000000f7c7010000000f848700000083ff077574ff70048b54241c8b0424ff128b3c248b3f8d6424048d347d010000008b7c24042bfe710e8d642408b8f80466b18b5d04ff2383c701ff3424578b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e9b6feffff8d64240c8d642408b830bd67b18b5d04ff238d642408b8cc4466b18b5d04ff238b54240c8b5c24148b7c24188b742410ff7424045756ff1289c7ff3424578b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e941feffff8d6424108d642408b8cc4466b18b5d04ff238d642408b8cc4466b18b5d04ff2358c21400f6442404010f85840000008b7c24048b0789ffff77048b38f7c701000000746183ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c404eb308b5c2404e85dfbffff89c7f7c70100000075148b175e891424897424043b650c7303ff552ceb8a8d64240cbf01000000eb328d64241cb8cc4466b18b5d04ff238b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c40483ff017507bf03000000eb05bf0100000083f70283f70283ff03752d8b542420b8a00c66b1ff128b7c241c8b342483ee0103fe710e8d642410b8f80466b18b5d04ff2357e99e0000008d642404ff34248b3c2483ff017e2e8b542420b8a80d66b1ff128b342483ee02710e8d642410b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b7c24082b3c248d642404710e8d642408b8f80466b18b5d04ff2383c701ff3424578b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e987fcffff8d64240c8b3c2483ff017e2e8b542424b8a80d66b1ff128b342483ee02710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b7c24188b74241c2bfe710e8d642410b8f80466b18b5d04ff2383c7012b3c248d642404710e8d64240cb8f80466b18b5d04ff238d64240483c701ff3424578b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e9d3fbffff8d64240cf40000|@14508,1,@2025|128,0,@9455 155,0,@14488 169,0,@10214 259,0,@9455 339,0,@14490 353,0,@10214 456,0,@10214 470,0,@10214 567,1,@6836 606,0,0 617,0,@10214 668,0,1 675,0,0 695,0,@9515 720,0,@9455 755,0,@9537 774,0,@9455 818,0,@9455 906,0,@9537 925,0,@9455 968,0,@9455 994,0,@9455 6838:D3,20|3b650c7305ff552ccd01b829000000c3f4000000|@14477,1,@2029|11,0,20 6839:D3,32|3b650c7305ff552ccd01ff3424bb38be67b1c74424048d000000e961f6fffff4|@14511,1,@2030|14,0,@14504 22,0,70 27,1,@6834 6840:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2031| 6841:D3,1772|8d7c24883b7d0c7305ff5530cd09506a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a01ba98bf67b18b7c244c5489d889fbe8bc060000ff3424ff742408ff742410ff742418ff742420ff742428ff742430ff742438ff742440ff742448ff742450ff7424588b7c24608b7424648b5424688b4c246c8b5c24708b45008d40b83b45087305ff5528cdce894500c740fc1100000089584089483c8950388970348978305f89782c5f8978285f8978245f8978205f89781c5f8978185f8978145f8978105f89780c5f8978085f8978045f8d64244489388b7c2408f7c701000000753b8b178b77048b0a81f93402c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017507bf64c067b1eb138b3f8b3781fe3402c0b00f85910500008b7f0857ff7504bfe87637b181c7a6010000578965046a016a018b7c241c5754830424048b5c241ce8ac0b00005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c4045f897d0483c408c204008b650483c4045f897d048b3089f783fe0375125ab8649869b1ff12b8909869b18b5d04ff2381ff8400c0b00f85890200008b4008bb6c0566b1e884a5eeff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfe89869b1e98900000089df83c73489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f872202000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe89869b1b9350000008d77048d7a04d1e9f3a489d95f8d77048d7a1ed1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf0c9969b1e98f00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f877301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be0c9969b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b3c248b3f8d1c7d0100000083fb01750abfa00c66b1e98200000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ba00000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b3c248d77048d7a04d1e9f3a489df83c708d1efc6043a0a8062ffbf89d78b5424048b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70007000000ff128b45008d40ec3b45087303ff5528894500c740fc04000000c7400c2c9969b15f8d642404897808c74004b83566b1c700cf0000008b5d04ff238d64240cb8780566b18b5d04ff238d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff23ff70048b3c248b3f8d1c7d0100000083fb01750e8d642404bfe0bb67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f872202000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe0bb67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf449969b1e98f00000089de83c64889f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f877301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be449969b1b9490000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b3c248b3f8d1c7d0100000083fb01750abfa00c66b1e98200000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ba00000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b3c248d77048d7a04d1e9f3a489df83c708d1efc6043a0a8062ffbf89d78b5424048b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70007000000ff128b45008d40ec3b45087303ff5528894500c740fc04000000c7400c709969b15f8d642404897808c74004b83566b1c700cf0000008b5d04ff238d64240cb8780566b18b5d04ff238d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238d642404b8483366b18b5d04ff23f400|@19445,1,@4321|50,0,@14521 64,1,@6842 248,0,@4665 299,0,0 309,0,@14529 321,0,@4665 339,0,@6841 372,1,@6845 443,0,@19435 450,0,@19437 461,0,@4611 475,0,@9464 480,1,@4826 509,0,@19440 529,0,4 550,0,16777215 608,0,0 617,0,@19440 622,0,26 670,0,@19441 690,0,4 711,0,16777215 769,0,0 795,0,@19441 800,0,23 841,0,@9515 861,0,4 882,0,16777215 940,0,0 1015,0,3 1048,0,@19442 1063,0,@10021 1069,0,103 1083,0,@9465 1097,0,@9465 1111,0,@9465 1145,0,@14473 1165,0,4 1186,0,16777215 1244,0,0 1253,0,@14473 1258,0,11 1306,0,@19443 1326,0,4 1347,0,16777215 1405,0,0 1431,0,@19443 1436,0,36 1477,0,@9515 1497,0,4 1518,0,16777215 1576,0,0 1651,0,3 1684,0,@19444 1699,0,@10021 1705,0,103 1719,0,@9465 1733,0,@9465 1747,0,@9465 1761,0,@9999 6842:D3,1468|3b650c7305ff552ccd0d50538b3c24f7c701000000753a8b0f8b77048b198b42043bd8751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbebf0100000083ff017507bfa4bf67b1eb0e8b3f8b378b52043bf2750a8b7f08578b7c2404eb0e8d642408b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f98c01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507bf106a66b1eb0f8b3f8b3781fe8c01c0b0750a8b7f08578b7c2408eb0e8d64240cb8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f99401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9e70300008b3f8b3781fe9401c0b075058b7f08eb0e8d642410b8483366b18b5d04ff23578b7c240cf7c701000000753b8b178b77048b0a81f99c01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9ef0200008b3f8b3781fe9c01c0b075058b7f08eb0e8d642414b8483366b18b5d04ff23578b542408b801000000ff1289c7578b542408b801000000ff1289c68b7c2414f7c701000000753b8b0f8b57048b1981fba401c0b0751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0ebbdbf0100000083ff01750abfe46966b1e9dc0100008b3f8b1781faa401c0b075058b7f08eb0e8d64241cb8483366b18b5d04ff2357ba410000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba610000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba100666b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba530000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc01000040891757ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7c241c8b4d008d49f83b4d087305ff5528cdc0894d00c741fc0100004089398b7c241c8b5d008d5bf83b5d087305ff5528cdc2895d00c743fc01000040893b89f28b7d008d7ff83b7d087305ff5528cd4e897d00c747fc0100004089178b55008d52f83b55087305ff5528cdca895500c742fc0100004089328b74243c8b44241489068b44240c8946048b4424108946088b44240889460c8b442434894610895e148b5c2420895e188b5c2428895e1c8b5c2424895e208b5c2404895e24894e288b0c24894e2c8d6424188b4c2414894e308b4c2418894e34895638897e3c5f8d64241c897e40b801000000c20400f7c701000000753b8b0f8b57048b1981fba401c0b0751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0ebbdbf0100000083ff01750e8d64241cb8489d66b18b5d04ff238b3f8b1781faa401c0b075088b7f08e9d4fdffff8d64241cb8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f99c01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781fe9c01c0b075088b7f08e9c1fcffff8d642414b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f99401c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642410b8489d66b18b5d04ff238b3f8b3781fe9401c0b075088b7f08e9c9fbffff8d642410b8483366b18b5d04ff23f4000000|@14528,1,@2033|82,0,0 92,0,@14522 124,0,@9999 150,0,@4644 201,0,0 211,0,@10772 223,0,@4644 244,0,@9999 270,0,@4645 321,0,0 331,0,@10769 346,0,@4645 362,0,@9999 393,0,@4646 444,0,0 454,0,@10769 469,0,@4646 485,0,@9999 500,0,0 514,0,0 543,0,@4647 594,0,0 604,0,@10769 619,0,@4647 635,0,@9999 646,0,32 680,0,48 714,0,@9473 748,0,0 782,0,41 816,0,0 1082,0,0 1106,0,@4647 1157,0,0 1171,0,@11247 1186,0,@4647 1205,0,@9999 1231,0,@4646 1282,0,0 1296,0,@11247 1311,0,@4646 1330,0,@9999 1356,0,@4645 1407,0,0 1421,0,@11247 1436,0,@4645 1455,0,@9999 6843:D3,24|3b650c7305ff552ccd01b8acbf67b18b5d04ff23f4000000|@14527,1,@2032|11,0,@14523 6844:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@2034|11,0,0 6845:D3,2096|3b650c7305ff552ccd0989df508b74240cf7c601000000753b8b0e8b56048b1981fb3402c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe017507be6cc067b1eb0f8b368b1681fa3402c0b0750a8b7608568b742410eb0e8d642404b8483366b18b5d04ff23f7c601000000753b8b0e8b56048b1981fbc401c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750abee46966b1e9cf0600008b368b1681fac401c0b075058b7608eb0e8d642408b8483366b18b5d04ff2356ff7728ff7730ff7738ff772c8b47448b5f40ff7714ff771cff77248b4f3cff77188b77348b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04c702788c37b18b7d008d7fc83b7d087305ff5528cd4f897d00c747fc0d000000894730895f2c894f288957248b54241489572089771c8b7424188977188b7424108977148b74241c8977108b74240489770c8b7424088977085e8d6424088977045e8d64240c8937578b7c2410ff77188b7c24148b77288b7c24148b7f3cff36ff378b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0083ff610f85cf0100008b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d64241c8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e829060000e8b00a000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce80c0b0000eb008b7c2428f7c701000000753b8b178b77048b0a81f9ac03c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507bfc45d66b1eb138b3f8b3781feac03c0b00f85830300008b7f08578b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff6175098d642404e99502000083ff010f84880200006a016a016a01b80100000089e3e8ba4100008d6424045e5f8b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b7c2414897a04c7029ccc37b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757b8dccd67b18b5c2424e85044000089c7578b7c241c83ff037563ff7424208b7c24048b1f68100666b168214e0000b8c4ef67b1e8a65b030089c78b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c700010000008b1424ff128d642404eb008b7c24248b7f0c8b3f83ff03751f8d6424288b742404bf943966b18b1789168b7f04897e04b801000000c20800bad00068b1ff7424148b4424048b5c2428e8b26503008b7c24248b7f0c8b3f83ff03754bbaf0ff68b18b4424048b1c24e807710b0089c78d6424088b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7c24248937c7470401000000b80100000083c420c208006a016a01548b44240c8b5c2430e827d50c00585f8b7424248b760c8b3683fe03754bbaf0ff68b18b4424048b1c24e89a700b0089c78d6424088b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7c24248937c7470401000000b80100000083c420c20800bac86966b18b5c243057e851edf0ff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b3424897704c707342248b157baf0ff68b18b4424088b5c2404e813700b0089c78b55008d52f83b55087305ff5528cd80895500c742fc01000000893a8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000005e8d64240889378b7424248916897e04b80100000083c420c208008d6424048b7c241c8b7f0c8b3f83ff03751f8d6424208b742404bf943966b18b1789168b7f04897e04b801000000c208008b7c241c8b7f148b74241c8b76388b3f8b168b75008d76e83b75087305ff5528cd84897500c746fc0500000059894e1089560c5a895608897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7c24188937c74704009869b1b80100000083c414c208008d642420b8483366b18b5d04ff23f7c601000000753b8b0e8b56048b1981fbc401c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750e8d642408b8489d66b18b5d04ff238b368b1681fac401c0b075088b7608e9e1f8ffff8d642408b8483366b18b5d04ff23f4000000|@19434,1,@4320|34,0,@4665 85,0,0 95,0,@14530 107,0,@4665 128,0,@9999 154,0,@4651 205,0,0 215,0,@10769 230,0,@4651 246,0,@9999 323,0,@6847 510,0,41 576,0,0 590,0,0 661,0,0 675,0,0 777,0,@14532 782,0,@14533 787,1,@6850 792,1,@6852 830,0,0 837,0,0 844,0,3 850,0,0 890,0,0 896,0,1 912,0,1 919,0,@14539 930,0,41 935,0,@14542 944,1,@6853 971,0,@4712 1022,0,0 1032,0,@10588 1044,0,@4712 1115,0,0 1122,1,@6866 1170,0,@6871 1207,0,@14672 1216,1,@6873 1243,0,@9473 1248,0,10000 1253,0,@14920 1258,1,@7221 1296,0,0 1303,0,1 1310,0,0 1316,0,0 1354,0,@10068 1369,0,0 1377,0,@15104 1394,1,@7233 1413,0,@18009 1425,1,@8252 1472,0,0 1477,0,0 1501,1,@8395 1522,0,@18009 1534,1,@8252 1581,0,0 1586,0,0 1597,0,@10767 1607,1,@5052 1650,0,@9098 1656,0,@18009 1669,1,@8252 1746,0,0 1783,0,@10068 1798,0,0 1895,0,0 1938,0,@19431 1943,0,0 1958,0,@9999 1984,0,@4651 2035,0,0 2049,0,@11247 2064,0,@4651 2083,0,@9999 6846:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@2035|11,0,0 6847:D3,32|3b650c7305ff552ccd058b7a048b5708b801000000ff12e918000000f4000000|@14531,1,@2037|17,0,0 24,1,@6848 6848:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2036|68,0,0 6849:D3,44|3b650c7305ff552ccd0183f813720b83f81b7706b803000000c383f8417506b803000000c3b801000000c3f4|@14534,1,@2038|21,0,1 32,0,1 38,0,0 6850:D3,48|3b650c7305ff552ccd098b388d347d010000005053ff742408bb01000000b8010000008974240ce918000000f4000000|@14536,1,@2040|26,0,0 31,0,0 40,1,@6851 6851:D3,1076|3b650c7305ff552ccd0950538b5424148b3c2489fe3bfa0f85730100008b54240489d789f13bd6750c8d642408b801000000c20c0089c989fa2bcf8d642404710e8d642404b8f80466b18b5d04ff2383c1018b7c240c8b3f8d347d0100000089d289d783fa010f8c1601000083f9010f8cff00000089ff89fa8d7c0fff3bfe760e8d642404b808cf66b18b5d04ff238b7c240c8b3f8d3c7d0100000089d289d683fa0175113bcf750d8d6424048b7c2408e98a00000083f901750b8d642404bf100666b1eb7a89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff01777f89fb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ef02c7447afe0000000089cfd1ef893a89f683c6088d6424048b7c2408d1ee8d34378d7a04d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20c008d642404b8780566b18b5d04ff238d642404b8800266b18b5d04ff238d642404b8800266b18b5d04ff238b54240c89f689f783fe017d098d642408e9810200008b7424108b368d0c750100000089ff89fe3bf97c07bf03000000eb05bf0100000083ff030f845302000089f683c6088b7c2410d1ee0fb63c378d047d01000000ff1289c783ff030f85f80100008b74240489f73b342475528b1c2489d883c302710e8d642408b8f80466b18b5d04ff2389c083c0028d642404710e8d642404b8f80466b18b5d04ff238d6424048b74240c8b5424088b4c2404894c2404895424088974240ce9b0fdffff8b0c2489cb89fa2bcf710e8d642408b8f80466b18b5d04ff2383c1018b7c24108b3f8d347d0100000089d289d783fa010f8c5701000083f9010f8c4001000089ff89fa8d7c0fff3bfe760e8d642408b808cf66b18b5d04ff238b7c24108b3f8d3c7d0100000089d289d683fa01750d3bcf75098b7c2410e98600000083f9017507bf100666b1eb7a89c883c00ebf09000000d1e8d1ef33d2f7f78d3c450100000081ffffffff010f87c400000089f88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183ef02c7447afe0000000089cfd1ef893a89f683c6088b7c2410d1ee8d34378d7a04d1e9f3a48062ffbf89d75789db89d883c302710e8d64240cb8f80466b18b5d04ff2389c083c002710e8d64240cb8f80466b18b5d04ff238b7c24188b7424148b542410575652e86dfcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c408c20c008d642408b8780566b18b5d04ff238d642408b8800266b18b5d04ff238d642408b8800266b18b5d04ff238b1c2483c3028d642404710e8d642404b8f80466b18b5d04ff23588b74240c8b5424088b4c2404894c2404895424088974240ce9ddfbffff8d642408b8a01e66b18b5d04ff23f40000|@14535,1,@2039|46,0,0 70,0,@9455 134,0,@11630 192,0,@9473 204,0,4 225,0,16777215 279,0,0 349,0,0 363,0,@9465 377,0,@9427 391,0,@9427 444,0,1 451,0,0 525,0,@9455 550,0,@9455 608,0,@9455 672,0,@11630 722,0,@9473 734,0,4 755,0,16777215 813,0,0 865,0,@9455 886,0,@9455 966,0,@9465 980,0,@9427 994,0,@9427 1020,0,@9455 1064,0,@9847 6852:D3,224|3b650c7305ff552ccd01a8010f85c60000008b308b400483f80175478b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e874ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b82cc167b1c3f400|@14538,1,@2041|59,0,3 92,0,0 130,0,3 173,0,@10448 217,0,@14537 6853:D3,4080|3b650c7305ff552ccd0552508b3c24ff378b7c2404ff77048b7c2408ff77088b7c240c8b3f8b3f83ff13720a83ff1b7705e9b80b000083ff410f84af0b0000578b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c2483ff5d0f85680500008d6424048b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24088b3f83ff5d0f84f50100008b7c24088b37bf400666b1ff7477fe8b3c248b3f8d1c7d0100000083fb01750e8d642404bfacc167b1e98900000089df83c72089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878f01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfacc167b1b9210000008d77048d7a04d1e9f3a489d95f8d77048d7a14d1e9f3a48062ffbf89d7578b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e81ef8ffffe8a5fcffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12e9250300008d642418b8780566b18b5d04ff238b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24088b3f83ff5d0f84f50100008b7c24088b37bf400666b1ff7477fe8b3c248b3f8d1c7d0100000083fb01750e8d642404bfc4c167b1e98900000089df83c72289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878f01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfc4c167b1b9230000008d77048d7a04d1e9f3a489d95f8d77048d7a15d1e9f3a48062ffbf89d7578b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e895f5ffffe81cfaffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12e99c0000008d642418b8780566b18b5d04ff238b3c24c707730000008b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9680600008b3c2481fffb00000075568d6424048b3c24c7075d0000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9070600008b3c2481fff700000075568d6424048b3c24c707410000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9a60500008b3c2481ffbf00000075568d6424048b3c24c707790000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9450500008b3c2481ffbb00000075568d6424048b3c24c7075b0000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9e40400008b3c2481ffb700000075568d6424048b3c24c7073f0000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9830400008b3c2483ff5375568d6424048b3c24c7075f0000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9250400008b3c2483ff51756c8d6424048b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24088b3f83ff55740b8b3c24c70743000000eb098b44240ce83a070000e9b10300008b3c2483ff5975568d6424048b3c24c707170000008b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9530300008b3c2483ff77751c8d6424048b3c24c707610000008b7c2408c70741000000e92f0300008b3c2483ff4575228d6424048b7c24108b5f048b44240ce82f0900008b3c24c70769000000e9050300008b3c2483ff470f85860000008d6424048b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24088b3f83ff45751b8b7c24108b5f048b44240ce8b20800008b3c24c70711000000eb13ff74240cb8cc0d66b1bb78c367b1e8fc170000e9730200008b3c2481fffd0000000f85290100008d6424048b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24088b3f83ff610f82ba00000083ff730f87b1000000b8030000008b5c240ce87e2000008b7c24048b3f8b378d0c750100000083f9017507bf101266b1eb7289ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01775489d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642047e8d77048d7a05d1e9f3a48062ffbf89d78b742404893eeb218d642414b8780566b18b5d04ff23ff74240cb8101266b1bb78c367b1e8c4160000e93b0100008b3c2483ff0975128d6424048b3c24c70701000000e9210100008b3c2483ff61721f8b3c2483ff7377178d642404b8010000008b5c240ce8871f0000e9fa0000008b3c2481ff8300000072118b3c2481ffb500000077068d642404eb1c8b3c2481ffc300000072138b3c2481fff50000007602eb068d642404eb168b3c2483ff4f740abf29000000e9d20000008d642404ff74240cb8100666b1bb00c467b1e81b160000e9920000008b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e3b650c7303ff552ce99ff3ffff5f8b3f83ff5375128d6424088b542404588d642404e966f3ffff8d642410b801000000c383ff017507bf01000000eb2589fa83c206be80c367b1d1ea0fb634168d3475010000003b34240f8506030000bf0300000083ff03751c8d642404ff74240cb8100666b1bb78c367b1e813150000e9bf020000ba6c0566b18b0424e88581eeff89c78d642404578b3c248b3f8d1c7d0100000083fb01750e8d642404bfa8cc67b1e98900000089df83c72689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877502000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfa8cc67b1b9270000008d77048d7a04d1e9f3a489d95f8d77048d7a17d1e9f3a48062ffbf89d78b378d1c750100000083fb017507bfc00d66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c901000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a228062ffbf89d7578b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e896ebffffe81df0ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff128b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893ee9c6fcffff8d642414b8780566b18b5d04ff238d642418b8780566b18b5d04ff2389fe83ee0289f73b650c7305ff552ccd80e9b8fcfffff4000000|@14665,1,@2054|107,0,0 121,0,0 223,0,0 237,0,4 270,0,@9476 300,0,@14543 320,0,4 341,0,16777215 399,0,0 408,0,@14543 413,0,16 476,0,0 490,0,0 601,0,@14533 606,1,@6850 611,1,@6852 649,0,0 656,0,0 663,0,3 669,0,0 713,0,0 719,0,1 739,0,1 755,0,@9465 793,0,0 807,0,0 872,0,0 886,0,4 919,0,@9476 949,0,@14544 969,0,4 990,0,16777215 1048,0,0 1057,0,@14544 1062,0,17 1125,0,0 1139,0,0 1250,0,@14533 1255,1,@6850 1260,1,@6852 1298,0,0 1305,0,0 1312,0,3 1318,0,0 1362,0,0 1368,0,1 1388,0,1 1404,0,@9465 1418,0,57 1451,0,0 1465,0,0 1530,0,0 1544,0,4 1565,0,125 1580,0,46 1627,0,0 1641,0,4 1662,0,123 1677,0,32 1724,0,0 1738,0,4 1759,0,95 1774,0,60 1821,0,0 1835,0,4 1856,0,93 1871,0,45 1918,0,0 1932,0,4 1953,0,91 1968,0,31 2015,0,0 2029,0,4 2062,0,47 2109,0,0 2123,0,4 2194,0,0 2208,0,4 2235,0,33 2246,1,@6854 2272,0,11 2319,0,0 2333,0,4 2366,0,48 2376,0,32 2409,1,@6856 2418,0,52 2486,0,0 2500,0,4 2534,1,@6856 2543,0,8 2554,0,@9540 2559,0,@14558 2564,1,@6859 2578,0,126 2635,0,0 2649,0,4 2685,0,1 2694,1,@6863 2719,0,@9631 2736,0,4 2757,0,16777215 2811,0,0 2852,0,@9465 2866,0,@9631 2871,0,@14558 2876,1,@6859 2902,0,0 2932,0,0 2941,1,@6863 2955,0,65 2966,0,90 2983,0,97 2994,0,122 3017,0,20 3035,0,@9473 3040,0,@14563 3045,1,@6859 3083,0,0 3097,0,0 3162,0,0 3176,0,4 3231,0,0 3242,0,0 3254,0,@14559 3281,0,1 3299,0,@9473 3304,0,@14558 3309,1,@6859 3319,0,@9464 3327,1,@4828 3360,0,@14664 3380,0,4 3401,0,16777215 3459,0,0 3468,0,@14664 3473,0,19 3521,0,@9539 3538,0,4 3559,0,16777215 3617,0,0 3684,0,0 3698,0,0 3809,0,@14533 3814,1,@6850 3819,1,@6852 3857,0,0 3864,0,0 3871,0,3 3877,0,0 3921,0,0 3927,0,1 3947,0,1 3996,0,0 4010,0,4 4031,0,@9465 4045,0,@9465 6854:D3,44|3b650c7305ff552ccd01ff308b581050b801000000e82600000089c78b3424893e8d642404b801000000c3f4|@14547,1,@2043|17,0,0 22,1,@6855 38,0,0 6855:D3,580|3b650c7305ff552ccd09538b1424b801000000ff1289c783ff017507bf09000000eb028b3f578b3c2483ff090f85850100008b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8e0c167b1bbd4c067b1e815e9ffffe89cedffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff125883c404c204008b542404b801000000ff1289c783ff017507be09000000eb028b378b142489d783fa55752583fe5375208d6424045ab801000000ff1289c783ff017508b809000000c204008b07c2040089ff83ff51752a83fe5575258b7c240c57b8010000008b5c2408e8e0fdffff89c68934243b650c7303ff552ce9f4fdffff8934243b650c7303ff552ce9e4fdfffff400|@14546,1,@2042|15,0,0 29,0,4 79,0,0 93,0,0 152,0,0 166,0,0 281,0,@14545 286,0,@14533 291,1,@6850 296,1,@6852 334,0,0 341,0,0 348,0,3 354,0,0 400,0,0 406,0,1 426,0,1 444,0,0 458,0,4 487,0,0 501,0,4 531,0,0 6856:D3,828|3b650c7305ff552ccd0950538b74240489f7ff3689ff89feff770489f689f7ff3689ff8b571089ff8b4f2c8b31f7c60100000075128b3e8b760489318b3424893e8d642404eb20b801000000ff1289c783ff017507bf09000000eb028b3f8b3424893e8d642404ff7504bf68a537b181c79b00000057896504ff742414ff742414b8010000008b5c2414e8c102000089c7b901000000e94d0100008b650483c4045f897d048b383b7c24080f852e0100008d64240c8b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b82cc367b1bbd4c067b1e88fe6ffffe816ebffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff228d6424108b5d04ff23f7c70100000075348b1f8b77048b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04891a89d189f73b650c7305ff552ccd82ebc4f6c101750b8b11be0100000089cfeb1bbf100666b18b742408893eb80100000083c4045f897d0483c410c3f7c70100000075248b470489f383c302710ab8f80466b18b5d04ff2389c789de3b650c7305ff552ccdc6ebd483fe017c7f83fe03750ebf400666b18b7c57fee9a200000089f083c00ebf09000000d1e8d1ef33d2f7f78d14450100000081faffffff01774189d38d3c5d02000000f7df037d003b7d0872053b7d007205ff5528cd46897d00d1eb895ffcc647ff4183ea02c74457fe00000000d1ee8937be0900000089caeb14b8780566b18b5d04ff23b8b00566b18b5d04ff23f6c20175238b0a8b5a04d1e989f0d1e8880c0789f183c10289da89ce3b650c7305ff552ccdc4ebd88067ffbfe9fffefffff400|@14557,1,@2045|72,0,0 86,0,4 107,0,@6856 130,0,0 139,1,@6857 146,0,0 207,0,0 221,0,0 327,0,@14556 332,0,@14533 337,1,@6850 342,1,@6852 380,0,0 387,0,0 394,0,3 400,0,0 446,0,0 452,0,1 473,0,1 556,0,0 565,0,@9473 576,0,0 610,0,@9455 646,0,@9476 665,0,4 686,0,16777215 740,0,0 749,0,4 758,0,@9465 768,0,@9468 6857:D3,2976|3b650c7305ff552ccd0950538b3c24ff378b3c2481ffb90000000f85fc0100008d6424048b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b3c24ff378b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b3c2483ff1372118b3c2483ff1b77098d642404e94d0100008b3c2483ff410f843d0100008b3c2481ffbd0000000f85cf0000008d6424048b3c24ff378b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b75008d76f43b75087303ff5528897500c746fc020000008b7c2408897e04c706b90000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bd0000008b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f89385b8d6424048b7424088b5424048954240489742408e94cfeffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c707b90000008b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f89385b8d6424048b7424088b5424048954240489742408e9edfdffff8d642404e91a0500008b3c2483ff150f85c30000008d64240c8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c2408ff378b7c240c8b57108b7c240c8b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c50c267b1c7400801000000c7400468c267b189388b5d04ff238b3c2483ff450f858d0000008d6424088b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e58c208008b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b3c2483ff09753e8d64240c8b7c24048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c7cc267b1c7400801000000c7400468c267b189388b5d04ff238b3c2483ff4372108b3c2481fffd0000007705e9d40200008b3c2483ff410f84c8020000ba6c0566b18b0424e85d74eeff89c78d642404578b3c248b3f8d1c7d0100000083fb01750e8d642404bf94c267b1e98900000089df83c72c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f875d02000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf94c267b1b92d0000008d77048d7a04d1e9f3a489d95f8d77048d7a1ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfb4c267b1e98f00000089de83c62089f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ae01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beb4c267b1b9210000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e85bdeffffe8e2e2ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff128b4424045b8d6424048b7424088b5424048954240489742408e922f9ffff8d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238b45008d40f43b45087303ff5528894500c740fc020000008b7c24088978045f89385b8d6424048b7424088b5424048954240489742408e9caf8ffff8b7c24108b3f8b3f83ff13720a83ff1b7705e9cc02000083ff410f84c302000081ffb90000007505e9d90300008b3c248b37bf400666b18b4477febb6c0566b1e81d6eeeff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfccc267b1e98900000089df83c72a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874402000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfccc267b1b92b0000008d77048d7a04d1e9f3a489d95f8d77048d7a19d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfecc267b1e98f00000089de83c61689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f879501000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beecc267b1b9170000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e823dbffffe8aadfffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12e9ae0000008d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e3b650c7303ff552ce98bfcffff8b3c248b3f81ffb90000000f84800000008b3c248b3f83ff45741b8b3c248b3f83ff097507bf03000000eb05bf0100000083f702eb05bf0100000083ff0375518b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e3b650c7303ff552ce96fffffff8b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b4424045b8d6424048b7424088b5424048954240489742408e962f4fffff400|@14555,1,@2044|22,0,92 79,0,0 93,0,4 152,0,0 166,0,4 219,0,94 281,0,0 295,0,4 339,0,92 374,0,94 469,0,92 585,0,0 599,0,0 664,0,0 678,0,4 722,0,@14548 729,0,0 736,0,@14549 792,0,0 806,0,0 871,0,0 885,0,4 943,0,0 957,0,4 1013,0,@14550 1020,0,0 1027,0,@14549 1051,0,126 1075,0,@9464 1083,1,@4828 1116,0,@14551 1136,0,4 1157,0,16777215 1215,0,0 1224,0,@14551 1229,0,22 1277,0,@14552 1297,0,4 1318,0,16777215 1376,0,0 1402,0,@14552 1407,0,16 1459,0,0 1473,0,0 1584,0,@14533 1589,1,@6850 1594,1,@6852 1632,0,0 1639,0,0 1646,0,3 1652,0,0 1696,0,0 1702,0,1 1722,0,1 1763,0,@9465 1777,0,@9465 1880,0,92 1897,0,@9476 1906,0,@9464 1911,1,@4826 1940,0,@14553 1960,0,4 1981,0,16777215 2039,0,0 2048,0,@14553 2053,0,21 2101,0,@14554 2121,0,4 2142,0,16777215 2200,0,0 2226,0,@14554 2231,0,11 2283,0,0 2297,0,0 2408,0,@14533 2413,1,@6850 2418,1,@6852 2456,0,0 2463,0,0 2470,0,3 2476,0,0 2520,0,0 2526,0,1 2546,0,1 2562,0,@9465 2576,0,@9465 2614,0,0 2628,0,0 2693,0,0 2707,0,4 2738,0,92 2769,0,1 2776,0,0 2786,0,0 2838,0,0 2852,0,4 2919,0,0 2933,0,4 6858:D3,80|3b650c7305ff552ccd01bf2900000083ff017506b801000000c389fa83c206be80c367b1d1ea0fb634168d3475010000003bf07506b803000000c389fe83ee0289f73b650c7305ff552ccd81ebc1f400|@14560,1,@2046|11,0,20 21,0,0 32,0,@14559 54,0,1 6859:D3,1752|3b650c7305ff552ccd098b7c2404ff378b7c2408ff77048b7c240cff77088b7c241057e8c406000089c7578b7c240c8b3f83ff5d0f854c0100008b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c240cff378b3c2481ff8300000072118b3c2481ffb500000077068d642404eb238b3c2481ffc30000000f82cd0000008b3c2481fff50000007605e9bd0000008d6424048b3c248b3f8d1c7d0100000083fb01750b8d642410b8500e66b1eb7d89df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776989f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d95f8d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf83c40c8b742404bb00c467b189742404e992feffff8d642410b8780566b18b5d04ff23bf29000000e9d90000008b3c248b742408893e8b3c248b3f8d3c7d0100000083ff010f8e8c0000008b3c248b3f8d3c7d0100000083ff017f0e8d642410b8a01e66b18b5d04ff238b3c240fb67f048d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff03750b8d642404bf75000000eb21b828c467b18b1c24e8df54f0ff89c78d64240483ff017507bf31000000eb028b3f5e893eb80100000083c408c2040083ff017507bf01000000eb2589fa83c206be80c367b1d1ea0fb634168d3475010000003b34240f8535040000bf0300000083ff030f85bd0000008d6424048b3c248b3f8d1c7d0100000083fb01750b8d642410b8500e66b1eb7d89df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776989f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d95f8d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf83c40c8b742404bb78c367b189742404e9b8fcffff8d642410b8780566b18b5d04ff238b7c24048b3f8d1c7d0100000083fb01750abfc4cb67b1e98c00000089df83c72a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871603000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfc4cb67b1b92b0000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a19d1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876702000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7be400666b15aff7456fe8b378d1c75010000008b34248b368d3475010000005683fb01750d8d6424045f83c410e99d0000008b342483fe0175098d642418e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f879501000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d783c410578b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e877d2ffffe8fed6ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c707030000008b3c24897c240483c404ff228d642418b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff2389fe83ee0289f73b650c7305ff552ccd80e989fbfffff400|@14654,1,@2050|36,1,@6860 101,0,0 115,0,4 137,0,65 148,0,90 165,0,97 180,0,122 217,0,@9551 234,0,4 255,0,16777215 309,0,0 353,0,@14563 371,0,@9465 381,0,20 442,0,@9847 466,0,@9476 476,0,@9544 483,0,1 504,0,@9544 515,0,0 526,0,1 533,0,0 540,0,0 554,0,58 561,0,@14565 569,1,@4911 585,0,24 597,0,0 613,0,0 625,0,@14559 652,0,1 691,0,@9551 708,0,4 729,0,16777215 783,0,0 827,0,@14558 845,0,@9465 873,0,@14653 893,0,4 914,0,16777215 972,0,0 981,0,@14653 986,0,21 1037,0,@9551 1054,0,4 1075,0,16777215 1133,0,0 1171,0,@9476 1250,0,4 1271,0,16777215 1329,0,0 1407,0,0 1421,0,0 1532,0,@14533 1537,1,@6850 1542,1,@6852 1580,0,0 1587,0,0 1594,0,3 1600,0,0 1644,0,0 1650,0,1 1670,0,1 1691,0,@9465 1705,0,@9465 1719,0,@9465 6860:D3,92|3b650c7305ff552ccd09508b7c24088b378b7c2408535789f3b801000000e84d00000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d6424048b3c24897c240483c404e9f263eefff400|@14562,1,@2048|26,0,0 31,1,@6861 86,1,@4827 6861:D3,284|3b650c7305ff552ccd09538b3c24ff378b5424108b0424ff1289c783ff030f85e80000008b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240cff378b7c24108b57108b7c24108b4f2c8b31f7c60100000075128b3e8b760489318b3424893e8d642404eb20b801000000ff1289c783ff017507bf09000000eb028b3f8b3424893e8d642404bf400666b18b3424ff7477fe8b7c24148b7424105756b8010000008b5c2410e81fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642408b801000000c20800f4000000|@14561,1,@2047|65,0,0 79,0,0 158,0,0 172,0,4 190,0,@9476 212,0,0 273,0,0 6862:D3,100|3b650c7305ff552ccd0181f883000000720a81f8b50000007702eb1281f8c3000000720c81f8f50000007602eb02eb0c83f861720d83f8737602eb06b803000000c383f84f7506b803000000c381f8bf0000007506b803000000c3b801000000c3f40000|@14564,1,@2049|12,0,65 20,0,90 30,0,97 38,0,122 61,0,1 72,0,1 79,0,95 86,0,1 92,0,0 6863:D3,2976|3b650c7305ff552ccd0950538b3c24ff378b7c2404ff77048b7c2408ff77088b7c240cff772c8b7c2404c7073d000000ff742410b8100666b1bb00cc67b1e8a5fdffff89c78b742408893e8b7c241483ff030f84490200008b7c240c8b3f81ffef000000754e8b7c24088b3781fe680e66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bf680e66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f85df0100008b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c240c8b3f81fff10000000f850e0100008b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c240c8b3f83ff61720b83ff7377068d642404eb2a81ffc3000000720e81ffcd00000077068d642404eb1481ff83000000723481ff8d000000772c8d6424045fc70787000000ff742408b820cc67b1bb2ccc67b1e832fcffff89c75e893eb80100000083c40cc38b7c240c8b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f10000005e893e8b7c2408c707ef000000b80100000083c414c38b7c240c8b3f83ff61723183ff73772c8d6424045fc70787000000ff742408b850cc67b1bb00cc67b1e894fbffff89c75e893eb80100000083c40cc38b7c240c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089375e893e8b7c2408c707ef000000b80100000083c414c38b7c240c8b3f81fff10000000f85390100008b7c24088b3781fe680e66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bf680e66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff030f85e40000008b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c240c8b3f83ff61720b83ff7377068d642408eb2a81ffc3000000720e81ffcd00000077068d642408eb1481ff83000000722d81ff8d00000077258d642408ff742408b87c7167b1bb2ccc67b1e849faffff89c75e893eb80100000083c40cc38b7c240c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089375e893e8b7c2408c707f1000000b80100000083c414c38b7c240c8b3f83ff5d7502eb3e8b7c240c8b3f81ff8b0000007507bf03000000eb1a8b7c240c8b3f81ffcb0000007507bf03000000eb05bf0100000083ff03740a8d642418b801000000c38b7c240c8b3f83ff5d0f850b0400008b7c2404c707570000008b7c24088b3f8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ae03000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d78b742408893e8b7c2410ff378b7c24148b57108b7c24148b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c240c8b3f83ff61721383ff737707bf03000000eb05bf01000000eb05bf0100000083ff030f84c50200008b7c2408ff378b3c248b3f8d1c7d0100000083fb01750e8d642404bf5ccc67b1e98900000089df83c72e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f876802000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf5ccc67b1b92f0000008d77048d7a04d1e9f3a489d95f8d77048d7a1bd1e9f3a48062ffbf89d78b74240c8b16be400666b1ff7456fe8b378d1c75010000008b34248b368d3475010000005683fb01750a8d6424045fe99a0000008b342483fe0175098d642408e9890000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878a01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b442404bbd4c067b1e8f8c7ffffe87fccffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e8d64240489700c897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12eb388d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238b7c24088b07ff742410bb00cc67b1e8aff5ffff89c78b742408893eeb0e8d642418b8780566b18b5d04ff238b7c240c8b3f81ff8b0000007502eb298b7c240c8b3f81ffcb0000007507bf03000000eb05bf0100000083ff03740a8d642418b801000000c38b7c240cff378b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24108b3f81fffd0000000f85960100008b7c2414ff378b7c24188b57108b7c24188b4f2c8b31f7c601000000750c8b3e8b760489315e893eeb1ab801000000ff1289c783ff017507bf09000000eb028b3f5e893e8b7c24108b3f83ff610f82dd00000083ff730f87d40000008d6424085fc707570000008b3c248b3f8b378d1c750100000083fb01750ab87ccc67b1e98200000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777889d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec6043045d1efc64438017e8060ffbfff742408bb00cc67b1e8eef3ffff89c75e893eb80100000083c40cc38d642410b8780566b18b5d04ff238b7c24108b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fd0000008b742404893e5f8d6424048b742408893eb80100000083c414c38b7c24108b3f83ff610f82d100000083ff730f87c80000008d6424085fc707570000008b3c248b3f8b378d1c750100000083fb017507b8640f66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01776f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc60438458060ffbfff742408bb00cc67b1e8a8f2ffff89c75e893eb80100000083c40cc38d642410b8780566b18b5d04ff238b7c24108b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b742404893e5f8d6424048b742408893eb80100000083c414c3f4|@14663,1,@2053|44,0,30 53,0,@9473 58,0,@14655 63,1,@6860 96,0,119 110,0,@9553 117,0,1 138,0,@9553 149,0,0 160,0,1 167,0,0 174,0,0 181,0,0 237,0,0 251,0,4 270,0,120 323,0,0 337,0,4 372,0,97 380,0,102 394,0,65 402,0,70 415,0,67 424,0,@14657 429,0,@14658 434,1,@6860 444,0,0 487,0,0 524,0,120 537,0,119 542,0,0 573,0,67 582,0,@14660 587,0,@14655 592,1,@6860 602,0,0 645,0,0 660,0,119 665,0,0 681,0,120 699,0,@9553 706,0,1 727,0,@9553 738,0,0 749,0,1 756,0,0 763,0,0 819,0,0 833,0,4 868,0,97 876,0,102 890,0,65 898,0,70 913,0,@13505 918,0,@14658 923,1,@6860 933,0,0 976,0,0 991,0,120 996,0,0 1025,0,69 1032,0,1 1046,0,101 1053,0,1 1060,0,0 1074,0,0 1100,0,43 1125,0,@9551 1142,0,4 1163,0,16777215 1221,0,0 1307,0,0 1321,0,4 1349,0,1 1356,0,0 1363,0,0 1404,0,@14661 1424,0,4 1445,0,16777215 1503,0,0 1512,0,@14661 1517,0,23 1557,0,@9476 1632,0,4 1653,0,16777215 1711,0,0 1786,0,0 1800,0,0 1911,0,@14533 1916,1,@6850 1921,1,@6852 1959,0,0 1966,0,0 1973,0,3 1979,0,0 2023,0,0 2029,0,1 2049,0,1 2062,0,@9465 2076,0,@9465 2096,0,@14655 2101,1,@6860 2120,0,@9465 2137,0,69 2153,0,101 2160,0,1 2167,0,0 2181,0,0 2235,0,0 2249,0,4 2268,0,126 2321,0,0 2335,0,4 2377,0,43 2401,0,@14662 2421,0,4 2442,0,16777215 2496,0,0 2545,0,@14655 2550,1,@6860 2560,0,0 2573,0,@9465 2617,0,0 2654,0,126 2676,0,0 2715,0,43 2739,0,@9574 2756,0,4 2777,0,16777215 2831,0,0 2871,0,@14655 2876,1,@6860 2886,0,0 2899,0,@9465 2943,0,0 2967,0,0 6864:D3,40|3b650c7305ff552ccd0183f861721183f8737706b803000000c3b801000000c3b801000000c3f400|@14656,1,@2051|21,0,1 27,0,0 33,0,0 6865:D3,84|3b650c7305ff552ccd0183f861720b83f8737706b803000000c381f8c3000000720e81f8cd0000007706b803000000c381f883000000721481f88d0000007706b803000000c3b801000000c3b801000000c3f400|@14659,1,@2052|21,0,1 28,0,97 36,0,102 43,0,1 50,0,65 58,0,70 65,0,1 71,0,0 77,0,0 6866:D3,164|3b650c7305ff552ccd09bf010000008b4d008d49f83b4d087305ff5528cd88894d00c741fc0100004089398b55008d52f43b55087305ff5528cd0a895500c742fc02000000894a04c702e4ca37b18b75008d76f43b75087305ff5528cd0e897500c746fc02000000894e04c70684cb37b18b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000894f04c707f8cb37b18913897304897b08b801000000c3f400|@14670,1,@2059|11,0,0 74,0,@6867 109,0,@6869 144,0,@6870 157,0,0 6867:D3,24|3b650c7305ff552ccd0589c38b7a048b07e916000000f400|@14667,1,@2056|18,1,@6868 6868:D3,96|3b650c7305ff552ccd0953a80175468b388b4004ff37ff77048b5c2408e8deffffff8b5424088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b3c2489388d642408ff228d642404b801000000c3f4|@14666,1,@2055|90,0,0 6869:D3,96|3b650c7305ff552ccd058b388b70048b4d008d49f43b4d087305ff5528cdc4894d00c741fc0200000089710489398b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f4000000|@14668,1,@2057|87,0,0 6870:D3,144|3b650c7305ff552ccd058b7a048b17f6c20175728b32ff72048b3eff76043bf87502eb2a8b378d3475010000008b1889d98d1c5d010000003bf375378d77048d78043bc9f3a674068d642404eb298b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c404c38d6424045f89fa3b650c7305ff552ccd05eb89b801000000c3f4000000|@14669,1,@2058|135,0,0 6871:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2060| 6872:D3,40|3b650c7305ff552ccd0183f8617506b803000000c383f8017506b803000000c3b801000000c3f400|@14673,1,@2061|16,0,1 27,0,1 33,0,0 6873:D3,1340|3b650c7305ff552ccd09538b7c24088b378b7c24088b57048b4d008d49f43b4d087305ff5528cd45894d00c741fc020000008b3c24897904c70170d237b18b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f0889570489378b75008d76f43b75087305ff5528cd81897500c746fc02000000894604c706c4d437b18b14248b52088b0c248b49248b128b0983f953740489caeb0089d1bb20cd37b181c3af0000008d5c8bfcffe3e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083fa7b7507b903000000eb05b901000000eb44b903000000eb3db903000000eb36b903000000eb2fb903000000eb28b903000000eb21b903000000eb1ab903000000eb13b903000000eb0cb903000000eb05b90300000083f9037502eb0c83fa477502eb0583fa6d7502eb0c83fa677502eb0583fa2b75416a016a01ff742408505756b850ce67b18d5c2410e8f80c00005f5e8d6424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c204008b1424ff72188b5424048b4a288b5424048b523cff31ff326a016a016a0157548304240850ff74242489f08b5c2428e8901101005e59bf010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c70701000000578b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff6174448b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff017507bf03000000eb05bf0100000083f70283ff037510b8ec0e66b18b5c2410e8cd1e0000eb00be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b74240c8b56148b74240c8b76388b128b0e8b75008d76e83b75087305ff5528cd86897500c746fc050000005b895e10894e0c59894e088956045a8d64240489168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c20400f4|@14919,1,@2311|58,0,@6874 127,0,@6876 159,0,@6873 725,0,1 732,0,0 739,0,1 746,0,1 753,0,1 760,0,1 767,0,1 774,0,1 781,0,1 788,0,1 795,0,1 802,0,1 851,0,@14676 860,1,@6878 952,1,@6993 959,0,0 1028,0,0 1098,0,1 1105,0,0 1118,0,@9564 1127,1,@6882 1134,0,0 1201,0,2 1234,0,0 6874:D3,332|3b650c7305ff552ccd05528b1c248b730489f78b561489f98b771889cf8b492889f88b7f3889c38b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8fccd67b1bbd4c067b1e872baffffe8f100000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0489fa8b7f0c89d68d6424048b5630c70703000000ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff83ce058b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14675,1,@2063|92,0,@14674 97,0,@14533 102,1,@6850 107,1,@6875 145,0,0 152,0,0 159,0,3 165,0,0 211,0,0 217,0,1 243,0,1 250,0,@10423 283,0,9999 6875:D3,224|3b650c7305ff552ccd01a8010f85c60000008b308b400483f80175478b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e874ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b82cc167b1c3f400|@14538,1,@2062|59,0,3 92,0,0 130,0,3 173,0,@10448 217,0,@14537 6876:D3,1472|3b650c7305ff552ccd0583f82f7505e9a205000089c7bec4d437b181c6270000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037505e92a03000083f8237502eb0c83f80d7502eb0583f8317505e91203000083f8417505e90803000083f8437505e9fe02000083f83f7505e9f402000083f84d7505e9ea02000083f8450f84e102000083f8277505e9d502000083f80f7505e9cb02000081f8810000007505e9be02000083f8337505e9b402000083f8550f84ab02000089c7bec4d437b181c61c0300008d74befcffe6e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f87b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb1383f8677502eb0c83f82b7502eb0583f86d7502eb078b5204ff22eb00b803000000c3f4000000|@14673,1,@2064|23,0,@6876 589,0,1 596,0,0 603,0,1 610,0,1 617,0,1 624,0,1 631,0,1 638,0,1 747,0,64 780,0,@6876 1346,0,1 1353,0,0 1360,0,1 1367,0,1 1374,0,1 1381,0,1 1388,0,1 1395,0,1 1402,0,1 1409,0,1 1416,0,1 1423,0,1 1463,0,1 6877:D3,716|3b650c7305ff552ccd0189c7be98da37b181c61d0000008d74befcffe6e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f87b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb0c83f8477502eb0583f86d7506b803000000c383f8677506b803000000c383f82b7506b803000000c3b801000000c3f40000|@14673,1,@2065|13,0,@6877 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 656,0,1 680,0,1 691,0,1 702,0,1 708,0,0 6878:D3,1656|3b650c7305ff552ccd09538b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb008b7424148b56148b742414ff76188b7424188b5e288b7424188b76388b4c24188b493cff338b12ff318b0e8b75008d76e83b75087305ff5528cd86897500c746fc050000008b1c24895e10894e0c8b4c2404894e088956048b54240889165683ff617505e9c605000083ff010f84bd05000089feba78dd37b181c2ab0000008d54b2fcffe2e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083ff7b7507be03000000eb05be01000000eb44be03000000eb3dbe03000000eb36be03000000eb2fbe03000000eb28be03000000eb21be03000000eb1abe03000000eb13be03000000eb0cbe03000000eb05be0300000083fe0375068d642404eb1483ff4775068d642404eb0983ff6d75068d642404eb1883ff6775068d642404eb0d83ff2b0f85d10200008d6424046a016a0183ff47757cb958ce67b18b4424208b5c24288b7c241c8b7424288b54242457565289cae80503000089c6bf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000893c24c744240498ed67b1e9a701000083ff6d757cb958ce67b18b4424208b5c24288b7c241c8b7424288b54242457565289cae88402000089c6bf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000893c24c744240498ed67b1e92601000083ff6775298b4424208b5c24288b7c241c8b7424285756e88f41020089c7893c24c7442404c0ee67b1e9f800000083ff2b752e8b4424208b5c24288b7c241c8b7424288b542424575652e8b046020089c7893c24c744240450ef67b1e9c50000006a016a018b4424248b5c24308b7c24288b74242c8b5424306a035754830424085652e80b0001005f59be010000008b55008d52f83b55087305ff5528cdc2895500c742fc0100004089328b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c70601000000bf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000893c24c744240498ed67b1ff34248b4424086a016a018b7c24348b7424308b54242c8b4c2428575652518d5c2410e851faffff5e5f8b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d64240c8b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b1c24895f108d642404894f0c8b0c24894f088d6424048977048b342489378d6424045e8916897e04b801000000c210008b5c2424b8ec0e66b1e8aa0c00008b742410c706010000008b3c24897e048d642404b80100000083c410c210008b742410c706010000008b3c24897e048d642404b80100000083c410c21000f4000000|@14918,1,@2310|155,0,@6878 721,0,1 728,0,0 735,0,1 742,0,1 749,0,1 756,0,1 763,0,1 770,0,1 777,0,1 784,0,1 791,0,1 798,0,1 869,0,@14677 899,1,@6879 906,0,0 972,0,2 983,0,@14901 998,0,@14677 1028,1,@6879 1035,0,0 1101,0,2 1112,0,@14901 1145,1,@7110 1158,0,@14912 1196,1,@7114 1209,0,@14916 1253,1,@6993 1260,0,0 1329,0,0 1334,0,0 1400,0,2 1411,0,@14901 1569,0,0 1581,0,@9564 1586,1,@6882 1596,0,0 1611,0,0 1627,0,0 1642,0,0 6879:D3,1580|3b650c7305ff552ccd0d5250538b7c2404ff378b7c2404ff77188b7c24088b77288b7c24088b7f3cff36ff378b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff6d0f85f10100008b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8c8a7ffffe84facffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e8abacffff8b7c2410ff77188b7c24148b77288b7c24148b7f3cff36ff376a016a016a01e91e0200008d64240cb8470000008b5c2404e8ed0300008b7c2404ff77188b7c24088b77288b7c24088b7f3cff36ff378b7c2414ff77048b7c2418ff77086a016a016a01b80100000089e3e89ce3ffffff7424048b74240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742414897704c70764f537b1578b45008d40f03b45087303ff5528894500c740fc030000008b7c24148978088b3c248978048b7c240489388b7424448b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707acf537b18b7424348b4e088b7424408b54243c57565289ca8b5c2438ff1289c757b8350000008b5c2430e8040300008b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424088977088b74242c897704c707e4f537b18b45008d40f03b45087305ff5528cd80894500c740fc030000008b7424188970088b74240489700489388b7424488b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70720f637b18b7424388b4e088b7424448b54244057565289ca8b5c243cff1289c7578b7c24348b77148b7c24348b7f38ff36ff37b81f0000008b5c243ce84a0200008b7d008d7fe83b7d087303ff5528897d00c747fc050000008b74242c8977105e89770c8b74242c8977085e8977048b74242c89378b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978085f8d64243c897804c70003000000c20c006a016a018b7c24488b7424448b5424388b52048b4c244057ff74243456ff7424405251b8010000008d5c2418e8bc0d0000ff3424ff742408ff742438b805000000bb44dd67b1e87e3d000089c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e974ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c24148b7424108b7c24148b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2424895f10894f0c8b4c2428894f088957048b54242c8917b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a8b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c7000500000083c440c20c00f40000|@14786,1,@2164|103,0,41 169,0,0 183,0,0 254,0,0 268,0,0 370,0,@14532 375,0,@14533 380,1,@6850 385,1,@6852 423,0,0 430,0,0 437,0,3 443,0,0 483,0,0 489,0,1 505,0,1 512,0,@14539 523,0,41 528,0,@14542 537,1,@6853 582,0,35 591,1,@6880 641,0,0 648,1,@6866 698,0,@6883 781,0,@6884 815,0,26 824,1,@6880 868,0,@6885 949,0,@6886 1001,0,15 1010,1,@6880 1112,0,1 1155,0,0 1164,1,@6887 1180,0,2 1185,0,@14784 1190,1,@6906 1297,0,0 1498,0,0 1567,0,2 6880:D3,536|3b650c7305ff552ccd09538b14248b4a0889cf89d28b5a2489de8b098b1b83fb53740489d9eb003bc80f85db01000089d089c08b1683fa5374108d642404c70653000000b801000000c38b3783fe010f859f01000089c089c6ff701489f68b561c89f689f7ff762089ff89feff772889f689f7ff763889ffff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8a8a1ffffe82fa6ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b189c08d642404e97ea6ffffe81d0000005be9ff030000f40000|@14691,1,@2068|64,0,41 69,0,0 124,0,0 138,0,0 218,0,0 232,0,0 338,0,@14532 343,0,@14533 348,1,@6850 353,1,@6852 391,0,0 398,0,0 405,0,3 411,0,0 457,0,0 463,0,1 484,0,1 491,0,@14539 502,0,41 507,0,@14542 518,1,@6853 523,1,@6881 529,1,@6882 6881:D3,980|3b650c7305ff552ccd01bf70ec37b181c71b0000008d7c87fcffe7e91b020000909090e919020000909090e917020000909090e915020000909090e913020000909090e911020000909090e90f020000909090e90d020000909090e90b020000909090e909020000909090e907020000909090e905020000909090e903020000909090e901020000909090e9ff010000909090e9fd010000909090e9fb010000909090e9f9010000909090e9f7010000909090e9f5010000909090e9f3010000909090e9f1010000909090e9ef010000909090e9ed010000909090e9eb010000909090e9e9010000909090e9e7010000909090e9e5010000909090e9e3010000909090e9e1010000909090e9df010000909090e9dd010000909090e9db010000909090e9d9010000909090e9d7010000909090e9d5010000909090e9d3010000909090e9d1010000909090e9cf010000909090e9cd010000909090e9cb010000909090e9c9010000909090e9c7010000909090e9c5010000909090e9c3010000909090e9c1010000909090e9bf010000909090e9bd010000909090e9bb010000909090e9b9010000909090e9b7010000909090e9b5010000909090e9b3010000909090e9b1010000909090e9af010000909090e9ad010000909090e9ab010000909090e9a9010000909090e9a7010000909090e9a5010000909090e9a3010000909090e9a1010000909090e99f010000909090e99d010000909090e99b010000909090e999010000909090e997010000909090e995010000909090b87c0c66b1c3b878c867b1c3b868cb67b1c3b8a4cb67b1c3b86c7266b1c3b850ca67b1c3b8200e66b1c3b854c867b1c3b874ce67b1c3b8e00e66b1c3b8bcc967b1c3b8380e66b1c3b820c867b1c3b8fcc867b1c3b86c7066b1c3b80c7566b1c3b828ca67b1c3b8040f66b1c3b83cc967b1c3b8d8c867b1c3b884ca67b1c3b830cb67b1c3b85cc967b1c3b8cc0d66b1c3b88cce67b1c3b83c7066b1c3b8247566b1c3b8f8ca67b1c3b8b8c767b1c3b880c767b1c3b8a0ce67b1c3b86c1066b1c3b8ec1166b1c3b8080e66b1c3b83c7566b1c3b89cca67b1c3b89cc767b1c3b808c867b1c3b8f8c967b1c3b88ccb67b1c3b8d0ca67b1c3b8bcce67b1c3b820c967b1c3b8d4ce67b1c3b8c0c867b1c3b8841066b1c3b8041266b1c3b8140e66b1c3b8ec0e66b1c3b8ecc767b1c3b810ca67b1c3b8a0c867b1c3b8ecce67b1c3b84ccb67b1c3b89cc967b1c3b8547066b1c3b8742767b1c3b8c85466b1c3b808cf67b1c3b8e0c967b1c3b89c1066b1c3b878c967b1c3b8f81166b1c3b8b4cb67b1c3b814cb67b1c3b89c7666b1c3b868ca67b1c3b824cf67b1c3f4|@14687,1,@2066|11,0,@6881 572,0,@9512 578,0,@14589 584,0,@14646 590,0,@14651 596,0,@10906 602,0,@14625 608,0,@9547 614,0,@14586 620,0,@14679 626,0,@9563 632,0,@14613 638,0,@9549 644,0,@14582 650,0,@14599 656,0,@10874 662,0,@10949 668,0,@14622 674,0,@9566 680,0,@14604 686,0,@14596 692,0,@14629 698,0,@14642 704,0,@14606 710,0,@9540 716,0,@14680 722,0,@10870 728,0,@10951 734,0,@14638 740,0,@14574 746,0,@14570 752,0,@14681 758,0,@9596 764,0,@9628 770,0,@9545 776,0,@10953 782,0,@14631 788,0,@14572 794,0,@14580 800,0,@14618 806,0,@14649 812,0,@14635 818,0,@14682 824,0,@14602 830,0,@14683 836,0,@14594 842,0,@9598 848,0,@9630 854,0,@9546 860,0,@9564 866,0,@14578 872,0,@14620 878,0,@14592 884,0,@14684 890,0,@14644 896,0,@14611 902,0,@10872 908,0,@12550 914,0,@10438 920,0,@14685 926,0,@14616 932,0,@9600 938,0,@14608 944,0,@9629 950,0,@14652 956,0,@14640 962,0,@10974 968,0,@14627 974,0,@14686 6882:D3,1272|3b650c7305ff552ccd0950538b3c248b7f088b34248b76248b3f8b3683fe53740489f7eb0083ff690f85410100008b3c248b7f048b3f8b378d0c750100000083f9017507bfc00d66b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87ec00000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204228d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb017507bfc00d66b1eb7b89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01775789c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a228062ffbf89d7eb798d642408b8780566b18b5d04ff238d642408b8780566b18b5d04ff238b3c248b7f088b34248b76248b3f8b3683fe53740489f7eb0083ff577502eb3583ff3d7502eb2e83ff757502eb2783ff3174228b3c248b77088b3c248b7f248b068b3f83ff53740489f8eb00e858faffff89c7eb088b3c248b7f048b3f578b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c240c8b3f8d1c7d0100000083fb01750abf54cf67b1e99300000089df83c71c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878002000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c240c8d77048d7a04d1e9f3a489df83c708be54cf67b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c75010000008b7424048b368d3475010000005683fb01750d8d6424048b7c2404e99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87a301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab86ccf67b1e98d00000089de83c61489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87f300000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be6ccf67b1b9150000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8af98ffffe82edfffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c7070300000083c40cff228d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff23f40000|@14690,1,@2067|69,0,@9539 86,0,4 107,0,16777215 165,0,0 208,0,@9539 225,0,4 246,0,16777215 300,0,0 344,0,@9465 358,0,@9465 444,1,@6881 564,0,@14688 584,0,4 605,0,16777215 663,0,0 693,0,@14688 698,0,14 791,0,4 812,0,16777215 870,0,0 933,0,@14689 953,0,4 974,0,16777215 1032,0,0 1058,0,@14689 1063,0,10 1084,0,@14533 1089,1,@6850 1094,1,@6875 1132,0,0 1139,0,0 1146,0,3 1152,0,0 1192,0,0 1198,0,1 1218,0,1 1232,0,@9465 1246,0,@9465 1260,0,@9465 6883:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2069| 6884:D3,36|3b650c7305ff552ccd0583f81f7502eb0a83f83574058b5204ff22b803000000c3f40000|@14673,1,@2070|28,0,1 6885:D3,40|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b5704588d642404ff22f400|@14692,1,@2071| 6886:D3,28|3b650c7305ff552ccd0583f81f7506b803000000c38b5204ff22f400|@14673,1,@2072|16,0,1 6887:D3,1820|3b650c7305ff552ccd09538b7c241c8b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70380fd37b16a016a018b7c2420575483042404b8e4cf67b1e862070000ff3424ff7424088b5c2428ff34248b442408e85b0c00008b7c24288b7f088b7424288b76248b3f8b3683fe53740489f7eb0083ff150f85690200008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424148b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e84095ffffe8c799ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e81f9affff8b74242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707580638b16a016a01bac0d067b18b4424288b5c24308b74242c57548304240456e8930d00005f5a8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460403000000893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e97402000083ff130f85660200008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424148b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8ce92ffffe85597ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e8ad97ffff8b74242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f0bd38b16a016a01bac0d067b18b4424288b5c24308b74242c57548304240456e8210b00005f5a8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460401000000893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000578b5c242cb823000000e883eeffff6a016a018b4c24288b44242c8b5c24348b7c24388b7424308b542424575483042404565289caff12ff34248b7c24088b7424108b368b5424108b4a088b5424108b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757f6442410010f85a40000008b7c24108b3f8b378b57048b4f08bf010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893bbf010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977048b74240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70605000000eb048b7424048b7c241083ff017507b903000000eb05b90100000083f102bf010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7fe43b7d087305ff5528cd46897d00c747fc060000008b5c2414895f14894f1089570c8977088b7424188977048b342489378b742424893e5f897e04b80100000083c424c21800f400|@14783,1,@2162|46,0,@6888 65,0,@14693 70,1,@6890 93,1,@6891 156,0,41 223,0,0 237,0,0 309,0,0 323,0,0 430,0,@14532 435,0,@14533 440,1,@6850 445,1,@6852 483,0,0 490,0,0 497,0,3 503,0,0 543,0,0 549,0,1 569,0,1 576,0,@14539 587,0,41 592,0,@14542 601,1,@6853 640,0,@6893 649,0,@14702 673,1,@6894 711,0,1 782,0,41 849,0,0 863,0,0 935,0,0 949,0,0 1056,0,@14532 1061,0,@14533 1066,1,@6850 1071,1,@6852 1109,0,0 1116,0,0 1123,0,3 1129,0,0 1169,0,0 1175,0,1 1195,0,1 1202,0,@14539 1213,0,41 1218,0,@14542 1227,1,@6853 1266,0,@6976 1275,0,@14702 1299,1,@6894 1337,0,0 1374,0,0 1384,0,17 1389,1,@6880 1533,0,0 1566,0,0 1676,0,2 1696,0,1 1703,0,0 1711,0,0 1808,0,0 6888:D3,44|3b650c7305ff552ccd0583f8237502eb0c83f8157502eb0583f8137506b803000000c38b5204ff22f4000000|@14673,1,@2073|30,0,1 6889:D3,40|3b650c7305ff552ccd0183f80d7506b803000000c383f8317506b803000000c3b801000000c3f400|@14673,1,@2074|16,0,1 27,0,1 33,0,0 6890:D3,1276|3b650c7305ff552ccd0989c2538b7c240c8b77088b7c240c8b7f248b068b3f83ff53740489f8eb00ff1289c783ff030f856e0200008d6424048b7c24088b7f04ff378b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8708dffffe8f791ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e84992ffff8b74240c8b7c2404893e8b3c24897e048d642408b801000000c208008b5c240cb8eccf67b1e8abefffff8b7c240c8b77088b7c240c8b7f248b068b3f83ff53740489f8eb008b1424ff1289c783ff030f84fe0100008b7c240c8b7f088b74240c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82a8bffffe8b18fffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44240ce80390ffff3b650c7303ff552ce9d7fdffff8d6424048b742404bf00d067b18b1789168b7f04897e04b801000000c20800f40000|@14697,1,@2075|173,0,41 240,0,0 254,0,0 337,0,0 351,0,0 466,0,@14532 471,0,@14533 476,1,@6850 481,1,@6852 519,0,0 526,0,0 533,0,3 539,0,0 585,0,0 591,0,1 611,0,1 618,0,@14539 629,0,41 634,0,@14542 643,1,@6853 668,0,0 680,0,@14694 685,1,@6882 755,0,41 822,0,0 836,0,0 919,0,0 933,0,0 1048,0,@14532 1053,0,@14533 1058,1,@6850 1063,1,@6852 1101,0,0 1108,0,0 1115,0,3 1121,0,0 1167,0,0 1173,0,1 1193,0,1 1200,0,@14539 1211,0,41 1216,0,@14542 1225,1,@6853 1251,0,@14695 1266,0,0 6891:D3,40|3b650c7305ff552ccd098b742404ff3424895c240489c3b80300000089742408e917000000f40000|@14701,1,@2077|24,0,1 33,1,@6892 6892:D3,764|3b650c7305ff552ccd09538b3c248b3f8d3c7d010000003bc77e0c8d642404b801000000c2080089c683ee02710e8d642404b8f80466b18b5d04ff2383fe017d098d642404e9a40200008b3c248b3f8d3c7d010000003bf77c07bf03000000eb05bf0100000083ff030f847b02000083c608d1ee8b3c240fb63c378d347d01000000bf400666b18b7477fe81fe500e66b17502eb2d8b3e8d3c7d0100000083ff030f851a020000bf500e66b18d76048d7f04b9010000003bc9f3a67405e9ff0100008b3c248b3f8d1c7d0100000083fb01750e8d642404bf40d067b1e98900000089df83c71e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87a801000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf40d067b1b91f0000008d77048d7a04d1e9f3a489d95f8d77048d7a13d1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab858d067b1e98d00000089de83c61a89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be58d067b1b91b0000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8eb87ffffe86aceffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c707030000008b3c24897c240883c408ff22b8780566b18b5d04ff238d642404b8780566b18b5d04ff2383c002710e8d642404b8f80466b18b5d04ff235b8b7424088b5424048954240489742408e916fdffff8d642404b8a01e66b18b5d04ff23f4000000|@14700,1,@2076|32,0,0 51,0,@9455 91,0,1 98,0,0 131,0,@9476 141,0,@9551 168,0,@9551 179,0,0 216,0,@14698 236,0,4 257,0,16777215 315,0,0 324,0,@14698 329,0,15 377,0,@14699 397,0,4 418,0,16777215 476,0,0 502,0,@14699 507,0,13 528,0,@14533 533,1,@6850 538,1,@6875 576,0,0 583,0,0 590,0,3 596,0,0 639,0,0 645,0,1 665,0,1 682,0,@9465 696,0,@9465 715,0,@9455 751,0,@9847 6893:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2078|16,0,1 6894:D3,1884|3b650c7305ff552ccd0d5250538b5c241868d8d067b1ff742404b8f4d067b1e8940700008b3c24ff77188b7c24048b77288b7c24048b7f3cff36ff378b7c240c8b7f088b74240c8b76248b3f8b3683fe53740489f7eb0083ff310f85d30000008d64240c8b7c24188b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703001138b16a016a01ff7424085483042404b8e4cf67b1e8d2f6ffffff3424ff742408ff34248b4424088b5c2414e8cbfbffffbe010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088b7c2404897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8d64240c8957048937e9d403000083ff650f85b70200008b7c240c8b7f088b74240c8b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d64240c8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e85884ffffe8df88ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44240ce83b89ffff8b7424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301138b18b7424148b56048b74241c57568b4424188b5c2414ff1289c7578b7c24108b77148b7c24108b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2404894f1089570c8b5424088957088977048b74240c893757b81f0000008b5c2414e81de0ffff8b75008d76f03b75087303ff5528897500c746fc030000008b3c24897e088b7c2404897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8d6424108957048937e9140100008d64240c8b3c248b57148b3c248b7f188b34248b4e288b34248b76388b1c248b5b3c8b098b128b038b1e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893ebf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470418d167b1c70703000000578b7c24048b57148b7c24048b7f188b7424048b4e288b7424048b76388b5c24048b5b3c8b098b128b038b1e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7c24048b7f088b7424048b76248b3f8b3683fe53740489f7eb0083ff7f0f85100200008b7c24048b7f088b7424048b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424048b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e86880ffffe8ef84ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442404e84b85ffffff7424188b7c24048b078b7c24048b5f048b7c24188b742420ff7424085756e8d303000089c78b378b142489328b7f045e8d642408897e04b80100000083c408c20c008b7424188b3c248b3f893e5f8b7f04897e04b80100000083c40cc20c00f40000|@14758,1,@2118|18,0,@14704 27,0,@14705 32,1,@6896 135,0,@6897 153,0,@14693 158,1,@6890 181,1,@6891 186,0,0 262,0,1 339,0,41 405,0,0 419,0,0 490,0,0 504,0,0 606,0,@14532 611,0,@14533 616,1,@6850 621,1,@6852 659,0,0 666,0,0 673,0,3 679,0,0 719,0,0 725,0,1 741,0,1 748,0,@14539 759,0,41 764,0,@14542 773,1,@6853 812,0,@6898 914,0,15 923,1,@6880 966,0,0 1094,0,0 1161,0,@14707 1167,0,1 1347,0,41 1413,0,0 1427,0,0 1498,0,0 1512,0,0 1614,0,@14532 1619,0,@14533 1624,1,@6850 1629,1,@6852 1667,0,0 1674,0,0 1681,0,3 1687,0,0 1727,0,0 1733,0,1 1749,0,1 1756,0,@14539 1767,0,41 1772,0,@14542 1781,1,@6853 1817,1,@6899 1842,0,0 1871,0,0 6895:D3,52|3b650c7305ff552ccd0183f8657506b803000000c383f80d7506b803000000c383f8317506b803000000c3b801000000c3f40000|@14673,1,@2079|16,0,1 27,0,1 38,0,1 44,0,0 6896:D3,684|3b650c7305ff552ccd0950538b7c240c8b77088b7c240c8b7f248b068b3f83ff53740489f8eb008b542404ff1289c783ff03740f8b4424108b5c240ce8d7e1ffffeb0c8d642408b801000000c208008b7c240c8b7f088b74240c8b76248b3f8b3683fe53740489f7eb00578b5424048b0424ff1289c783ff03750b8d642404bf03000000eb0f8b5424088b0424ff1289c78d64240483ff030f84fe0100008b7c240c8b7f088b74240c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8247dffffe8ab81ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44240ce8fd81ffff3b650c7303ff552ce9b3fdffff8d642408b801000000c20800f4000000|@14706,1,@2080|61,1,@6882 72,0,0 128,0,1 181,0,41 248,0,0 262,0,0 345,0,0 359,0,0 474,0,@14532 479,0,@14533 484,1,@6850 489,1,@6852 527,0,0 534,0,0 541,0,3 547,0,0 593,0,0 599,0,1 619,0,1 626,0,@14539 637,0,41 642,0,@14542 651,1,@6853 673,0,0 6897:D3,28|3b650c7305ff552ccd0583f87f7506b803000000c38b5204ff22f400|@14673,1,@2081|16,0,1 6898:D3,52|3b650c7305ff552ccd0583f8617506b803000000c383f87f7506b803000000c383f81f7506b803000000c38b5204ff22f4000000|@14673,1,@2082|16,0,1 27,0,1 38,0,1 6899:D3,1724|3b650c7305ff552ccd0950538b5c2414b877000000e8b2d8ffff6a016a016a01b80100000089e3e888b8ffffff3424ff742408ff7424108b5d008d5bf03b5d087303ff5528895d00c743fc030000008b3c24897b088b7c2404897b048b7c2408893b8b7c242857b801000000e85f06000089c7578b7c24288b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703b42838b16a016a018b7c2438575483042404b8e4d267b1e8d1ebffffff3424ff7424088b7c243cff742414578b4424248b5c2420e8cc16000089c7578b5c2444b823000000e8ebd7ffff8b5c243c8b7c244468e0c967b157b89cd367b1e8cffbffff8b7c243c8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700ec2b38b16a016a018b5c244cff7424085483042404e87a1900005e5f8d6424048b55008d52e83b55087305ff5528cdc0895500c742fc050000008972108b74241089720c8b7424048972088b7424308972048b342489328d64242c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248977048b7424048937578b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff050f85670200008b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff77288b7c2418ff77388b7c241cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e86778ffffe8ee7cffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e8407dffff8b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff77752d8d6424048b4424045b8d6424048b7424148b5424108b4c240c894c240c895424108974241483c408e99ffbffff8b7c24208b7f248b3783fe53740e8d642414b828d167b18b5d04ff23c707050000005883c410c20c0083ff7f0f851e0200008d6424048b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff77288b7c2418ff77388b7c241cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8f375ffffe87a7affff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce8cc7affff8b4424045b8d6424048b7424148b5424108b4c240c894c240c895424108974241483c408e94ff9ffff5883c410c20c00f4000000|@14757,1,@2117|17,0,59 22,1,@6880 33,0,0 40,1,@6866 104,0,0 109,1,@6900 151,0,@6907 170,0,@14720 175,1,@6890 204,1,@6909 216,0,17 221,1,@6880 234,0,@14616 240,0,@14725 245,1,@6896 284,0,@6912 306,1,@6913 406,0,2 570,0,41 637,0,0 651,0,0 734,0,0 748,0,0 863,0,@14532 868,0,@14533 873,1,@6850 878,1,@6852 916,0,0 923,0,0 930,0,3 936,0,0 982,0,0 988,0,1 1008,0,1 1015,0,@14539 1026,0,41 1031,0,@14542 1040,1,@6853 1140,0,@14708 1151,0,2 1198,0,41 1265,0,0 1279,0,0 1362,0,0 1376,0,0 1491,0,@14532 1496,0,@14533 1501,1,@6850 1506,1,@6852 1544,0,0 1551,0,0 1558,0,3 1564,0,0 1610,0,0 1616,0,1 1636,0,1 1643,0,@14539 1654,0,41 1659,0,@14542 1668,1,@6853 6900:D3,1092|3b650c7305ff552ccd0950ff33ff73048b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff430f855f0200008b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64240c8b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88673ffffe80d78ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e85f78ffff8b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff7575248b7c2410ff77188b7c24148b77288b7c24148b7f3cff36ff376a016a016a01e9890000008d64240c8b7c24048b7f248b3783fe53740ab828d167b18b5d04ff23c70743000000b801000000c2040083ff75754e6a016a018b7c241857ff742410ff742418ff742414b8010000008d5c2410e89d0100005f8d6424108b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c204008d64240cb801000000c204006a016a018b7c243057ff742428ff742430ff74242cb8010000008d5c2410e843010000ff3424ff7424088b7c243857b817000000bb74d267b1e8b40a000089c783ff0375408d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e048b3c24893e8d642404897424083b650c7303ff552c83c408e97bffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c2414ff7424108b5c2438b85f000000e8c2cdffff5883c430c20400f40000|@14719,1,@2089|75,0,41 142,0,0 156,0,0 239,0,0 253,0,0 368,0,@14532 373,0,@14533 378,1,@6850 383,1,@6852 421,0,0 428,0,0 435,0,3 441,0,0 487,0,0 493,0,1 513,0,1 520,0,@14539 531,0,41 536,0,@14542 545,1,@6853 636,0,@14708 647,0,33 652,0,0 686,0,0 695,1,@6901 733,0,0 747,0,0 776,0,0 785,1,@6901 802,0,11 807,0,@14716 812,1,@6906 925,0,0 1073,0,47 1078,1,@6880 6901:D3,1240|3b650c7305ff552ccd09538b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff750f85da0300008b7c24148b7f04ff378b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b5424188b7c241c8b45008d40f03b45087305ff5528cd84894500c740fc030000008978088b7c2404897804c7008c2138b1ff128b7c241483ff030f85950000008b7c24048b1789d68d14550100000083fa037e7a89ff8d34750100000083fe037f0e8d64240cb8a01e66b18b5d04ff2389ff0fb67f058d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf01000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff83ff037507bf09000000eb05bf010000000bd783ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5424148b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24088938ff128b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e86c6dffffe8f371ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e84572ffff8b74240c8b3c24893e8d6424048b3c24897e048d642404b80100000083c408c210008b5c2414b875000000e835030000bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff83ca0983ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b7424048b142489168d642408897e04b801000000c21000f40000|@14715,1,@2086|186,0,@6902 244,0,@9847 267,0,@9476 277,0,@9544 284,0,1 305,0,@9544 316,0,0 327,0,1 334,0,0 341,0,0 348,0,0 355,0,0 360,0,@10423 393,0,9999 410,0,4 417,0,0 525,0,41 592,0,0 606,0,0 689,0,0 703,0,0 818,0,@14532 823,0,@14533 828,1,@6850 833,1,@6852 871,0,0 878,0,0 885,0,3 891,0,0 937,0,0 943,0,1 963,0,1 970,0,@14539 981,0,41 986,0,@14542 995,1,@6853 1023,0,0 1038,0,58 1043,1,@6904 1048,0,@10423 1081,0,9999 1230,0,0 6902:D3,40|3b650c7305ff552ccd0589c78b078b5f048b72048b520852ff74240489742408e917000000f40000|@14713,1,@2084|33,1,@6903 6903:D3,528|3b650c7305ff552ccd09508b54240c8b3c2489fe3bfa7502eb4189f68b3e8d3c7d010000008b54240c8b128d1455010000003bfa0f85c70100008b7c240c8b54240c8b0a89f68d76048d7f043bc9f3a674098d642404e9aa0100008b7c24088b77148b7c2408ff77188b7c240c8b57288b7c240c8b7f388b4c240c8b493c8b128b368b198b0f8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8957088977045e8937578b7c24048b378d1c750100000083fb01750ab87cd167b1e98f00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d7804d1e9f3a489df83c708be7cd167b1b92f0000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e81f6affffe89eb0ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c707030000008b7c2404897c240c83c40cff228d642408b8780566b18b5d04ff238d642404b801000000c20800f40000|@14712,1,@2083|195,0,@14711 215,0,4 236,0,16777215 294,0,0 322,0,@14711 327,0,23 348,0,@14533 353,1,@6850 358,1,@6875 396,0,0 403,0,0 410,0,3 416,0,0 456,0,0 462,0,1 482,0,1 504,0,@9465 518,0,0 6904:D3,508|3b650c7305ff552ccd0953e874c8ffff8b1c24e854ccffff8b04248b780889c08b70248b1683fa5374108d642404c70653000000b801000000c38b3783fe010f859f01000089c089c6ff701489f68b561c89f689f7ff762089ff89feff772889f689f7ff763889ffff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81068ffffe8976cffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b189c08d642404e9e66cfffff400|@14714,1,@2085|12,1,@6881 20,1,@6882 48,0,41 53,0,0 108,0,0 122,0,0 202,0,0 216,0,0 322,0,@14532 327,0,@14533 332,1,@6850 337,1,@6852 375,0,0 382,0,0 389,0,3 395,0,0 441,0,0 447,0,1 468,0,1 475,0,@14539 486,0,41 491,0,@14542 502,1,@6853 6905:D3,28|3b650c7305ff552ccd0183f8757506b803000000c3b801000000c3f4|@14717,1,@2087|16,0,1 22,0,0 6906:D3,628|3b650c7305ff552ccd0989da508b7c24088b7f088b7424088b76248b3f8b3683fe53740489f7eb003b3c240f85f90100008d6424048b7c24048b7f088b7424048b76248b1683fa53740bc70653000000e9cd0100008b3783fe010f85ae0100008b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8a565ffffe82c6affff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442404e87e6affffb803000000c204008b7c24088b77088b7c24088b7f248b068b3f83ff53740489f8eb00ff1289c783ff0375188b5c24088b0424e866fbffff8d642404b803000000c204008d642404b801000000c20400f400|@14718,1,@2088|76,0,41 139,0,0 153,0,0 236,0,0 250,0,0 365,0,@14532 370,0,@14533 375,1,@6850 380,1,@6852 418,0,0 425,0,0 432,0,3 438,0,0 484,0,0 490,0,1 510,0,1 517,0,@14539 528,0,41 533,0,@14542 542,1,@6853 547,0,1 598,1,@6904 607,0,1 619,0,0 6907:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2090|16,0,1 6908:D3,28|3b650c7305ff552ccd0183f8317506b803000000c3b801000000c3f4|@14721,1,@2091|16,0,1 22,0,0 6909:D3,60|3b650c7305ff552ccd098b7c24048b7424088b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700642938b1c20800f4|@14724,1,@2093|52,0,@6910 6910:D3,544|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff010f85f30100008b5c24048b730489f78b561489f98b771889cf8b492889f88b7f3889c38b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c24048b378d1c750100000083fb01750ab804d367b1e98f00000089de83c65489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f874e01000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d7804d1e9f3a489df83c708be04d367b1b9550000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8bf62ffffe83ea9ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7424048b7e0489fa8b7f0c89d68b5630c70703000000ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff83ce058b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c408c38d64240cb8780566b18b5d04ff238d6424088b07c3f40000|@14723,1,@2092|135,0,@14722 155,0,4 176,0,16777215 234,0,0 262,0,@14722 267,0,42 288,0,@14533 293,1,@6850 298,1,@6875 336,0,0 343,0,0 350,0,3 356,0,0 402,0,0 408,0,1 431,0,1 438,0,@10423 471,0,9999 525,0,@9465 6911:D3,64|3b650c7305ff552ccd0183f8417506b803000000c383f8437506b803000000c383f8317506b803000000c383f8757506b803000000c3b801000000c3f4000000|@14673,1,@2094|16,0,1 27,0,1 38,0,1 49,0,1 55,0,0 6912:D3,40|3b650c7305ff552ccd0583f8057506b803000000c383f87f7506b803000000c38b5204ff22f40000|@14673,1,@2095|16,0,1 27,0,1 6913:D3,812|3b650c7305ff552ccd0950538b45008d40f43b45087303ff5528894500c740fc020000008b7c2404897804c700682f38b16a016a018b7c2418ff742408578d5c2408e829030000ff3424ff7424088b7c24108b4f0889ca89ff8b5f2489de8b098b1b83fb53740489d9eb0083f9090f858102000089f889d789c08b1683fa53740bc70653000000e9be0100008b3783fe010f85a30100008d64241089c089c6ff701489f68b561c89f689f7ff762089ff89feff772889f689f7ff763889ffff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87e5fffffe80564ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b1e85a64ffff6a016a018b7c24285754830424048b4424248b5c2420e89bfdffffff34248b7c24088b54240c8b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52ec3b55087305ff5528cd80895500c742fc040000008b342489720c8d642410897a088b34248972048d642404c702050000008b7424148916897e04b80100000083c410c2080068c4d767b1578b44241cbbfcd667b1e80fdfffff8b74241c8b7c2404893e8b3c24897e048d642408b80100000083c410c20800f4000000|@14756,1,@2116|45,0,@6914 67,1,@6915 131,0,41 194,0,0 208,0,0 288,0,0 302,0,0 408,0,@14532 413,0,@14533 418,1,@6850 423,1,@6852 461,0,0 468,0,0 475,0,3 481,0,0 527,0,0 533,0,1 554,0,1 561,0,@14539 572,0,41 577,0,@14542 582,1,@6853 733,0,2 747,0,0 758,0,@14755 768,0,@14750 773,1,@6896 798,0,0 6914:D3,28|3b650c7305ff552ccd0583f8097506b803000000c38b5204ff22f400|@14673,1,@2096|16,0,1 6915:D3,144|3b650c7305ff552ccd09536a016a018b7c24148b742410505756b8010000008d5c240ce87c0000005e5ff7c60100000075298b560483fa017507ba03000000eb05ba0100000083fa0375108b165e8916897e04b801000000c208008b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a08897204c7020b0000005e8916897e04b801000000c20800f4|@14754,1,@2115|27,0,0 36,1,@6916 59,0,1 66,0,0 84,0,0 125,0,5 136,0,0 6916:D3,840|3b650c7305ff552ccd09538b7c24108b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700983338b16a016a018b7c24148b74241057568d5c2408e843030000ff3424ff7424088b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0083ff0d0f85910200008b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8525bffffe8d95fffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce82b60ffff6a016a018b7c24288b7424248b542420575652b8010000008d5c240ce87afdffff5a5f8b75008d76f43b75087305ff5528cd84897500c746fc020000008956048b5424048916568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b7424148b142489168d64240c897e04b80100000083c40cc20c008b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b742410893e8b3c24897e048d642408b80100000083c40cc20c00f40000|@14753,1,@2114|46,0,@6917 69,1,@6918 139,0,41 206,0,0 220,0,0 303,0,0 317,0,0 432,0,@14532 437,0,@14533 442,1,@6850 447,1,@6852 485,0,0 492,0,0 499,0,3 505,0,0 551,0,0 557,0,1 577,0,1 584,0,@14539 595,0,41 600,0,@14542 609,1,@6853 633,0,0 763,0,0 800,0,0 827,0,0 6917:D3,28|3b650c7305ff552ccd0583f80d7506b803000000c38b5204ff22f400|@14673,1,@2097|16,0,1 6918:D3,3416|8d7c249c3b7d0c7305ff5530cd0950538b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb008b7424108b56148b742410ff76188b7424148b5e288b7424148b76388b4c24148b493cff338b12ff318b0e8b75008d76e83b75087305ff5528cd86897500c746fc050000008b1c24895e10894e0c8b4c2404894e088956048b5424088916566a016a0183ff310f85c00000006a016a018b7c2430575483042404b8e4d267b18b5c242ce881c9ffff5a5fbea4d367b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76e43b75087305ff5528cd86897500c746fc06000000894e14897e10897e0c897e08895604c706010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404e94e08000083ff750f85820000008b5424248b7c24288b7f048b07ff1289c7578b5c242cb875000000e8fcb4ffff8b55008d52f03b55087303ff5528895500c742fc030000008b74240c89f78972088b34248972048d642404c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000891689342489ff897c2404e9c307000083ff410f85180500008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424208b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e84f56ffffe8d65affff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e8285bffff8b7c24288b77148b7c24288b7f38ff36ff378b7c24308b7f088b7424308b76248b3f8b3683fe53740489f7eb0083ff5d0f85910200008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424288b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82854ffffe8af58ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e80159ffff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424148977108b342489770c8d6424048b7424148977088b34248977048d6424048b74241489378b55008d52ec3b55087305ff5528cd80895500c742fc04000000897a0cc7420803000000c7420401000000c702090000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404e9af0600008d6424088b7c24288b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7005c4138b16a016a016a0189e3e8e1080000ff7424048b7c2438ff77188b7c243c8b77288b7c243c8b7f3cff36ff376a016a016a01e96703000083ff430f857c0200008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424208b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82e51ffffe8b555ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e80756ffff8b5c24288b7c2424ff74241c57b801000000e89c09000089c7578b7c242c8b77148b7c242c8b7f38ff36ff378b5c2434b85f000000e845adffff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424188977108b342489770c8d6424048b7424188977088b34248977048d6424048b74241889378b3424897424048d642404897c2404eb1d8b5c2428b831000000e88ee6ffffc70424010000008b7c2408897c24048b3c24ff7424048b74242c8b76088b54242c8b52248b368b1283fa53740489d6eb0083fe31751b89f85b8b7424188b542428895424248974242883c420e9b90c0000f7c701000000755cff378b7f0483ff0175228b7424208b3c24893e8d6424048b3c24897e048d642404b80100000083c420c208008b5c2430b831000000e8fbe5ffff8b7424208b3c24893e8d6424048b3c24897e048d642404b80100000083c420c208008b74241cc706902d66b18b3c24897e048d642404b80100000083c420c208008b45008d40f43b45087303ff5528894500c740fc020000008b7c2444897804c700f84d38b16a016a018b5c245854e8c30f00008b3424ff7424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048937578b5424288b0424ff128b5c2460b813000000e89eabffff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2454897804c700785238b16a016a01bab4d567b18b5c24688b7c2464575483042404ff125e5a8b5c24048b3b89db8b4b0889db8b5b10ff7204ff720c8b55008d52e83b55087305ff5528cdca895500c742fc05000000895a108b1c24895a0c894a088b4c2404894a04893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088977048b7424088937578b7c246c57b817000000bbfcd667b1e8c6e6ffff89c783ff03753c8b75008d76f43b75087303ff5528897500c746fc020000008b7c241c897e048b3c24893e8d642404897424183b650c7303ff552c83c418e989feffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c8977048b342489378d642404be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b5424248957108b142489570c8d6424048b5424248957088b14248957048d6424048b542424891789742414897c2418ff7424148b7c24648b77148b7c24648b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2448894f1089570c8b54244c8957088977048b7424508937578b5c2468b85d000000e88fa9ffff8b55008d52ec3b55087303ff5528895500c742fc040000008b342489f789720cc74208030000008b742404897204c702090000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168974244089ff897c24448d642440e94efcfffff4|@14752,1,@2113|166,0,@14720 175,1,@6890 182,0,@14726 257,0,0 292,0,1 325,0,0 375,0,58 380,1,@6880 429,0,3 462,0,0 514,0,41 581,0,0 595,0,0 678,0,0 692,0,0 807,0,@14532 812,0,@14533 817,1,@6850 822,1,@6852 860,0,0 867,0,0 874,0,3 880,0,0 926,0,0 932,0,1 952,0,1 959,0,@14539 970,0,41 975,0,@14542 984,1,@6853 1065,0,41 1132,0,0 1146,0,0 1229,0,0 1243,0,0 1358,0,@14532 1363,0,@14533 1368,1,@6850 1373,1,@6852 1411,0,0 1418,0,0 1425,0,3 1431,0,0 1477,0,0 1483,0,1 1503,0,1 1510,0,@14539 1521,0,41 1526,0,@14542 1535,1,@6853 1635,0,1 1642,0,0 1648,0,4 1681,0,0 1738,0,@6920 1751,1,@6921 1827,0,41 1894,0,0 1908,0,0 1991,0,0 2005,0,0 2120,0,@14532 2125,0,@14533 2130,1,@6850 2135,1,@6852 2173,0,0 2180,0,0 2187,0,3 2193,0,0 2239,0,0 2245,0,1 2265,0,1 2272,0,@14539 2283,0,41 2288,0,@14542 2297,1,@6853 2315,0,0 2320,1,@6926 2350,0,47 2355,1,@6880 2445,0,24 2450,1,@6904 2457,0,0 2531,1,@6929 2577,0,0 2592,0,24 2597,1,@6904 2625,0,0 2641,0,@9922 2656,0,0 2699,0,@6930 2713,1,@6931 2773,0,9 2778,1,@6880 2815,0,@6932 2824,0,@14744 2960,0,11 2965,0,@14750 2970,1,@6906 3082,0,0 3300,0,46 3305,1,@6880 3344,0,1 3357,0,4 3390,0,0 6919:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@10361,1,@2098|11,0,@10050 6920:D3,532|3b650c7305ff552ccd0d5052538b7c24088b3f8d1c7d0100000083fb01750abf4cd467b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87af01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf4cd467b1b90f0000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab85cd467b1e98d00000089de83c63289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be5cd467b1b9330000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e88c4affffe80b91ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c707030000008b7c2404897c240883c408ff228d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4000000|@14738,1,@2099|32,0,@14736 52,0,4 73,0,16777215 131,0,0 140,0,@14736 145,0,7 196,0,@14737 216,0,4 237,0,16777215 295,0,0 321,0,@14737 326,0,25 347,0,@14533 352,1,@6850 357,1,@6875 395,0,0 402,0,0 409,0,3 415,0,0 455,0,0 461,0,1 483,0,1 505,0,@9465 519,0,@9465 6921:D3,168|3b650c7305ff552ccd09bf010000008b4d008d49f83b4d087305ff5528cd89894d00c741fc0100004089398b55008d52f43b55087305ff5528cd0b895500c742fc02000000894a04c702404438b18b75008d76f03b75087305ff5528cd0f897500c746fc03000000894e08894604c706e04438b18b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000894f04c707d44538b18913897304897b08b801000000c3f40000|@14743,1,@2104|11,0,0 74,0,@6922 112,0,@6924 147,0,@6925 160,0,0 6922:D3,24|3b650c7305ff552ccd0589c38b7a048b07e916000000f400|@14740,1,@2101|18,1,@6923 6923:D3,96|3b650c7305ff552ccd0953a80175468b388b4004ff37ff77048b5c2408e8deffffff8b5424088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b3c2489388d642408ff228d642404b801000000c3f4|@14739,1,@2100|90,0,0 6924:D3,224|3b650c7305ff552ccd05528b10ff70048b7c24048b7f088b1ff6c301756e8b33ff73048b3eff76043bfa7502eb2a8b378d3475010000008b0289c18d0445010000003bf075338d77048d7a043bc9f3a674068d642404eb258b7c240c8b4f0489d05b8b5424048b74240c8954240c89ca8974240883c408ff228d6424045f89fb3b650c7305ff552ccd0ceb8d8b75008d76f43b75087305ff5528cd04897500c746fc020000005f897e0489168b3c248b7f088b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489375e8b7608893eb801000000c3f4|@14741,1,@2102|218,0,0 6925:D3,144|3b650c7305ff552ccd058b7a048b17f6c20175728b32ff72048b3eff76043bf87502eb2a8b378d3475010000008b1889d98d1c5d010000003bf375378d77048d78043bc9f3a674068d642404eb298b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c404c38d6424045f89fa3b650c7305ff552ccd05eb89b801000000c3f4000000|@14742,1,@2103|135,0,0 6926:D3,284|3b650c7305ff552ccd09538b1c248b7b0889db8b73248b3f8b3683fe53740489f7eb0083ff417502eb2483ff437502eb1d83ff317502eb1683ff757411b875000000e82dddffffbf902d66b1eb418b7c240c8b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700a84738b16a016a01bab4d567b18b7c2410575483042404ff125f8d64240457ff742404b817000000bb9cd367b1e8c500000089c783ff0375438b7c24108b74240c5756b8010000008b5c240ce83effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c208008b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b3c2489388d64240483c404c20800f4|@14746,1,@2107|62,0,58 67,1,@6904 72,0,@9922 113,0,@6927 122,0,@14744 149,0,11 154,0,@14725 159,1,@6928 181,0,0 264,0,0 6927:D3,36|3b650c7305ff552ccd0583f85f7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2105|28,0,1 6928:D3,628|3b650c7305ff552ccd0989da508b7c24088b7f088b7424088b76248b3f8b3683fe53740489f7eb003b3c240f85f90100008d6424048b7c24048b7f088b7424048b76248b1683fa53740bc70653000000e9cd0100008b3783fe010f85ae0100008b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8f143ffffe87848ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442404e8ca48ffffb803000000c204008b7c24088b77088b7c24088b7f248b068b3f83ff53740489f8eb00ff1289c783ff0375188b5c24088b0424e8b2d9ffff8d642404b803000000c204008d642404b801000000c20400f400|@14745,1,@2106|76,0,41 139,0,0 153,0,0 236,0,0 250,0,0 365,0,@14532 370,0,@14533 375,1,@6850 380,1,@6852 418,0,0 425,0,0 432,0,3 438,0,0 484,0,0 490,0,1 510,0,1 517,0,@14539 528,0,41 533,0,@14542 542,1,@6853 547,0,1 598,1,@6904 607,0,1 619,0,0 6929:D3,892|3b650c7305ff552ccd0950538b7c240c8b7f04ff378b7c24108b5f148b7c24108b77188b7c24108b57288b7c24108b7f388b4c24108b493c8b12ff338b198b0f8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8957088b14248957048937578b7c240c8b378b7c240c8b57088b7c240c8b5f108b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8957088b542404895704893757bea4d367b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76e43b75087305ff5528cd80897500c746fc06000000897e148b3c24897e108b7c2404897e0c8b7c2410897e088b7c240c897e048b7c2414893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d64241c8b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87d40ffffe80445ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e85c45ffff8b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff31753b8b45008d40f43b45087303ff5528894500c740fc02000000c74004010000005f89385b8b74241c8b542418895424188974241c83c414e99dfcffff8b7424245f893e5f897e04b80100000083c414c20800f40000|@14747,1,@2108|174,0,@14726 299,0,1 327,0,41 394,0,0 408,0,0 480,0,0 494,0,0 601,0,@14532 606,0,@14533 611,1,@6850 616,1,@6852 654,0,0 661,0,0 668,0,3 674,0,0 714,0,0 720,0,1 740,0,1 747,0,@14539 758,0,41 763,0,@14542 772,1,@6853 835,0,0 879,0,0 6930:D3,28|3b650c7305ff552ccd0583f8137506b803000000c38b5204ff22f400|@14673,1,@2109|16,0,1 6931:D3,1084|3b650c7305ff552ccd0989df89c3578b3c248b7f088b34248b76248b3f8b3683fe53740489f7eb0083ff3d0f85ee0300008b3c248b7f04ff378b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c24048b3f8d3c7d0100000083ff017f0e8d64240cb8a01e66b18b5d04ff238b7c24040fb67f048d347d01000000bf400666b1ff7477fe8b7c240c8b7f088b74240c8b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d64240c8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82f3dffffe8b641ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44240ce81242ffff8b3c2481ff101266b175068d642404eb308b3c248b3f8d3c7d0100000083ff037521bf101266b18b34248d76048d7f04b9010000003bc9f3a67402eb068d642404eb418b3c2481ff680e66b175068d642404eb308b3c248b3f8d3c7d0100000083ff030f8503010000bf680e66b15e8d76048d7f04b9010000003bc9f3a60f85ec0000008b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8bcd667b1bbd4c067b1e8ab3bffffe82a82ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12eb048d6424048b7424108b7c2404893e5f8d642404897e04b80100000083c404c204005e8b542404ff3424b8e4cf67b18954240489742408e99babfffff40000|@14749,1,@2110|164,0,@9847 189,0,@9476 220,0,41 286,0,0 300,0,0 371,0,0 385,0,0 487,0,@14532 492,0,@14533 497,1,@6850 502,1,@6852 540,0,0 547,0,0 554,0,3 560,0,0 600,0,0 606,0,1 622,0,1 629,0,@14539 640,0,41 645,0,@14542 654,1,@6853 663,0,@9631 693,0,@9631 707,0,0 730,0,@9553 764,0,@9553 776,0,0 875,0,@14748 880,0,@14533 885,1,@6850 890,1,@6875 928,0,0 935,0,0 942,0,3 948,0,0 988,0,0 994,0,1 1014,0,1 1045,0,0 1064,0,@14693 1077,1,@6890 6932:D3,36|3b650c7305ff552ccd0583f85d7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2111|28,0,1 6933:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14751,1,@2112|11,0,0 6934:D3,172|3b650c7305ff552ccd0d5250538b7c2404ff77086a016a016a01b80100000089e3e82e77ffff8d6424045f5e8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700985338b1ff742418ff7424088b7c2414ff77048b5424208b4c24148b5c240c8b74241c89442410b801000000895c24148b5c2408894c24188954241c8b3c24897c24208b7c2404897c24248974240c83c40ce9870100008d64241cf40000|@14782,1,@2160|27,0,0 34,1,@6866 78,0,@6935 118,0,0 161,1,@6936 6935:D3,344|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff010f852a0100008b3c248b1789d68d14550100000083fa037e7a89ff8d34750100000083fe037f0e8d642408b8a01e66b18b5d04ff2389ff0fb67f058d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff83ff037507bf09000000eb05bf010000000bd783ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24088b57048b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff12588d642408c38d6424088b07c3f4000000|@14759,1,@2119|73,0,@9847 96,0,@9476 106,0,@9544 113,0,1 134,0,@9544 145,0,0 156,0,1 163,0,0 170,0,0 177,0,0 182,0,@10423 215,0,9999 232,0,4 239,0,0 6936:D3,9468|3b650c7305ff552ccd09538b45008d40f43b45087303ff5528894500c740fc020000008b3c2489fb897804c700147a38b18b7c241c68a0d867b157e8fcb8ffff8b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb008b74241cff76188b7424208b56288b7424208b763cff32ff36be045538b181c6850000008d74befcffe6e91b020000909090e919020000909090e917020000909090e915020000909090e913020000909090e911020000909090e90f020000909090e90d020000909090e90b020000909090e909020000909090e907020000909090e905020000909090e906020000909090e937030000909090e935030000909090e933030000909090e934030000909090e941060000909090e942060000909090e953080000909090e951080000909090e94f080000909090e94d080000909090e94b080000909090e949080000909090e947080000909090e945080000909090e946080000909090e95f0b0000909090e95d0b0000909090e95b0b0000909090e9590b0000909090e9570b0000909090e9550b0000909090e9530b0000909090e9510b0000909090e94f0b0000909090e94d0b0000909090e94b0b0000909090e9490b0000909090e9470b0000909090e9450b0000909090e9430b0000909090e9410b0000909090e93f0b0000909090e93d0b0000909090e93b0b0000909090e9390b0000909090e9370b0000909090e9380b0000909090e9f10f0000909090e9ef0f0000909090e9ed0f0000909090e9eb0f0000909090e9ec0f0000909090e9fd110000909090e9fb110000909090e9f9110000909090e9f7110000909090e9f8110000909090e905150000909090e906150000909090e917170000909090e915170000909090e913170000909090e911170000909090e90f170000909090e90d1700009090908d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce93d0100008d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008b3424897004c700c07c38b18b7424108b368b5424108b52048b5c241c8b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000895904c7016c7f38b18b5d008d5bf03b5d087305ff5528cdc7895d00c743fc03000000894b0889530489336a016a018b74241c6a0357548304240856e85b2800005f5a8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937e98f1500008d64240ceb048d64240ceb048d64240ce9190300008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70798a338b1578b7c242c8b7f088b74242c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e89a32ffffe82137ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44242ce87337ffff8b7c24208b7424248b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c70344a638b16a016a018b7c242c54578b442410e8964100005e5a8d6424048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707350000008b72048b4a0c8b55008d52e83b55087305ff5528cdc2895500c742fc050000008b1c24895a108d642404894a0c8b0c24894a088d6424048972048b342489328d6424048b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937e9651200008d64240ce91d0200008d64240c8b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e89e2fffffe82534ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce87734ffff8b7c241cff77188b7c24208b77288b7c24208b7f3cff36ff376a016a016a01e94a1a00008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce9250300008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8562dffffe8dd31ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e82f32ffff8b7c242868d8d067b157b834db67b18b5c2414e88badffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c707eca638b16a016a018b54242c8b4424248b5c24308b74242857548304240456ff12ff34248b4424086a016a018b7c243c57ff7424248d5c2408e89c4800005e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d64240c8b72048b4a0c8b55008d52e83b55087305ff5528cdc2895500c742fc050000008b1c24895a108d642404894a0c8b0c24894a088d6424048972048b342489328d6424048b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937e9ef0c00008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce9c50400008d64240c8b7c241cff77188b7c24208b77288b7c24208b7f3cff36ff378b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e89729ffffe81e2effff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e8702effff8b7c24288b7f088b7424288b76248b3f8b3683fe53740489f7eb0083ff770f85f80100008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88227ffffe8092cffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e85b2cffffbf03000000eb05bf01000000578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2410897b04c703dcaa38b16a016a018b7c2434575483042404b8e4cf67b1e84197ffff5e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b5c2430b823000000e85983ffff8b7c2430ff77188b7c24348b77288b7c24348b7f3cff36ff376a016a016a01e9850f00008d64240ceb048d64240ceb048d64240ceb048d64240ce91d0200008d64240c8b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8d424ffffe85b29ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce8ad29ffff8b7c241cff77188b7c24208b77288b7c24208b7f3cff36ff376a016a016a01e9bb0b00008d64240ceb048d64240ceb048d64240ceb048d64240ce9190300008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70714ab38b1578b7c242c8b7f088b74242c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87e22ffffe80527ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44242ce85727ffff8b7c24208b7424248b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c703c0ad38b16a016a018b7c242c54578b442410e87a3100005e5a8d6424048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707350000008b72048b4a0c8b55008d52e83b55087305ff5528cdc2895500c742fc050000008b1c24895a108d642404894a0c8b0c24894a088d6424048972048b342489328d6424048b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937e9490200008d64240ce91d0200008d64240c8b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8821fffffe80924ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce85b24ffff8b7c241cff77188b7c24208b77288b7c24208b7f3cff36ff376a016a016a01e92d0500008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240cbf01000000578b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff610f85f30100008b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8211dffffe8a821ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e8fa21ffffeb008b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0089feba045538b181c2fe1b00008d54b2fcffe2e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9ae010000909090e993010000909090e9a5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e964010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9c3000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083ff197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff03754b8b7c24208b74241c8b5424188b4c24148b5c24108b44240c575652515350b8010000008b5c241ce868e1ffff89c383fb0175075883c404c21800588b7c2404897c241c83c41ce9653a00005883c404c218006a016a018b7c243c8b742428ff7424205756b8010000008d5c240ce8a23a0000ff3424ff7424088b7c244457b805000000bbfcd667b1e82fb2ffff89c783ff03753d8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e048b3c24893e8d642404897424083b650c7303ff552c83c408eb818b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c241483c4105f83c410e9bef9ffff6a016a018b7c243c8b7424388b5424348b4c243057ff742424565251b8010000008d5c2414e8ac3d0000ff3424ff7424088b7c244457b805000000bbfcd667b1e8e9b0ffff89c783ff0375408d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e048b3c24893e8d642404897424083b650c7303ff552c83c408e974ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c24148b7c24108b5424148b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893783c424e928f8ffff8b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c242c897b04c70324b738b16a016a018b7c2450575483042404b8e4cf67b1e82b87ffff8b3424ff7424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048937578b7c245857b823000000bbe4d267b1e81dafffff89c783ff03753c8b75008d76f43b75087303ff5528897500c746fc020000008b7c2410897e048b3c24893e8d6424048974240c3b650c7303ff552c83c40ce942ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b342489378d642404be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2414895f10894f0c8b4c2418894f088957048b54241c89178974240c897c24108b74240c8b7c24108b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2428895f10894f0c8b4c242c894f088957048b54243089178b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b74242089328b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c8b542424895608897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893783c434e9f9f5ffff6a016a018b7c243c8b74242cff7424205756b8010000008d5c240ce8793e0000ff3424ff7424088b7c244457b805000000bbfcd667b1e82eadffff89c783ff03753d8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e048b3c24893e8d642404897424083b650c7303ff552c83c408eb818b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c241483c4105f83c410e9bdf4fffff4|@14781,1,@2159|45,0,@6937 54,0,@14760 60,1,@6896 117,0,@6936 873,0,@6938 925,0,@6939 981,1,@6940 1021,0,0 1054,0,0 1119,0,@6957 1147,0,41 1214,0,0 1228,0,0 1311,0,0 1325,0,0 1440,0,@14532 1445,0,@14533 1450,1,@6850 1455,1,@6852 1493,0,0 1500,0,0 1507,0,3 1513,0,0 1559,0,0 1565,0,1 1585,0,1 1592,0,@14539 1603,0,41 1608,0,@14542 1617,1,@6853 1663,0,@6958 1682,1,@6952 1726,0,26 1831,0,0 1864,0,0 1911,0,41 1978,0,0 1992,0,0 2075,0,0 2089,0,0 2204,0,@14532 2209,0,@14533 2214,1,@6850 2219,1,@6852 2257,0,0 2264,0,0 2271,0,3 2277,0,0 2323,0,0 2329,0,1 2349,0,1 2356,0,@14539 2367,0,41 2372,0,@14542 2381,1,@6853 2495,0,41 2562,0,0 2576,0,0 2659,0,0 2673,0,0 2788,0,@14532 2793,0,@14533 2798,1,@6850 2803,1,@6852 2841,0,0 2848,0,0 2855,0,3 2861,0,0 2907,0,0 2913,0,1 2933,0,1 2940,0,@14539 2951,0,41 2956,0,@14542 2965,1,@6853 2974,0,@14704 2980,0,@14775 2989,1,@6896 3026,0,@6960 3084,1,@6961 3229,0,2 3262,0,0 3454,0,41 3521,0,0 3535,0,0 3618,0,0 3632,0,0 3747,0,@14532 3752,0,@14533 3757,1,@6850 3762,1,@6852 3800,0,0 3807,0,0 3814,0,3 3820,0,0 3866,0,0 3872,0,1 3892,0,1 3899,0,@14539 3910,0,41 3915,0,@14542 3924,1,@6853 3987,0,41 4054,0,0 4068,0,0 4151,0,0 4165,0,0 4280,0,@14532 4285,0,@14533 4290,1,@6850 4295,1,@6852 4333,0,0 4340,0,0 4347,0,3 4353,0,0 4399,0,0 4405,0,1 4425,0,1 4432,0,@14539 4443,0,41 4448,0,@14542 4457,1,@6853 4462,0,1 4469,0,0 4507,0,@6962 4526,0,@14693 4531,1,@6890 4574,0,17 4579,1,@6880 4673,0,41 4740,0,0 4754,0,0 4837,0,0 4851,0,0 4966,0,@14532 4971,0,@14533 4976,1,@6850 4981,1,@6852 5019,0,0 5026,0,0 5033,0,3 5039,0,0 5085,0,0 5091,0,1 5111,0,1 5118,0,@14539 5129,0,41 5134,0,@14542 5143,1,@6853 5243,0,@6963 5271,0,41 5338,0,0 5352,0,0 5435,0,0 5449,0,0 5564,0,@14532 5569,0,@14533 5574,1,@6850 5579,1,@6852 5617,0,0 5624,0,0 5631,0,3 5637,0,0 5683,0,0 5689,0,1 5709,0,1 5716,0,@14539 5727,0,41 5732,0,@14542 5741,1,@6853 5787,0,@6964 5806,1,@6952 5850,0,26 5955,0,0 5988,0,0 6035,0,41 6102,0,0 6116,0,0 6199,0,0 6213,0,0 6328,0,@14532 6333,0,@14533 6338,1,@6850 6343,1,@6852 6381,0,0 6388,0,0 6395,0,3 6401,0,0 6447,0,0 6453,0,1 6473,0,1 6480,0,@14539 6491,0,41 6496,0,@14542 6505,1,@6853 6580,0,0 6644,0,41 6711,0,0 6725,0,0 6808,0,0 6822,0,0 6937,0,@14532 6942,0,@14533 6947,1,@6850 6952,1,@6852 6990,0,0 6997,0,0 7004,0,3 7010,0,0 7056,0,0 7062,0,1 7082,0,1 7089,0,@14539 7100,0,41 7105,0,@14542 7114,1,@6853 7150,0,@6936 7716,0,1 7723,0,0 7730,0,1 7737,0,1 7744,0,1 7751,0,1 7758,0,1 7765,0,1 7772,0,1 7779,0,1 7819,0,0 7859,1,@6965 7889,0,0 7898,1,@6966 7915,0,2 7920,0,@14750 7925,1,@6906 8035,0,0 8215,0,0 8224,1,@6969 8241,0,2 8246,0,@14750 8251,1,@6906 8364,0,0 8545,0,4 8578,0,0 8625,0,@6972 8644,0,@14693 8649,1,@6890 8701,0,17 8706,0,@14720 8711,1,@6906 8823,0,0 9104,0,3 9137,0,0 9170,0,0 9179,1,@6973 9196,0,2 9201,0,@14750 9206,1,@6906 9316,0,0 6937:D3,664|3b650c7305ff552ccd0589c7be147a38b181c61d0000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9ae010000909090e993010000909090e9a5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e964010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9c3000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f400|@14673,1,@2120|13,0,@6937 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 652,0,1 6938:D3,664|3b650c7305ff552ccd0589c7bec07c38b181c61d0000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9b6010000909090e9b5010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96b010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f400|@14673,1,@2121|13,0,@6938 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 652,0,1 6939:D3,440|3b650c7305ff552ccd0552508b5c24048b730489f78b561489f98b771889cf8b492889f88b7f3889c38b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c24048b378d1c750100000083fb01750ab804d367b1e98f00000089de83c65489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f870401000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d989ff8d77048d7804d1e9f3a489df83c708be04d367b1b9550000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8ce0cffffe84d53ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7424048b7e0489fa8b7f0c89d68b5630c70703000000ff12b8902d66b183c408c38d64240cb8780566b18b5d04ff23f40000|@14761,1,@2122|112,0,@14722 132,0,4 153,0,16777215 211,0,0 239,0,@14722 244,0,42 265,0,@14533 270,1,@6850 275,1,@6875 313,0,0 320,0,0 327,0,3 333,0,0 379,0,0 385,0,1 408,0,1 415,0,@9922 428,0,@9465 6940:D3,3324|3b650c7305ff552ccd0950538b7c240c8b7f088b74240c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8be0affffe8450fffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44240ce8970fffff6a016a016a01b80100000089e3e8e546ffff5e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7c241057b8030000008b5c2404e8c894ffff89c7578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c240c897b04c703488e38b16a016a018b7c241c575483042404b8e4d267b1e83c7affffff3424ff7424088b5c2424ff34248b442408e8357fffff8b5c2424b823000000e85f66ffff8b7c24248b7f088b7424248b76248b3f8b3683fe53740489f7eb0083ff190f85c80300008b7c241083ff017505e9ec0000008b7c24248b57148b7c24248b77188b7c24248b4f288b7c24248b7f388b5c24248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b808d967b1bbd4c067b1e8d208ffffe8514fffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24248b7f0c8b7424248b5630c70703000000ff128b7c24248b7f088b7424248b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424208b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8ff06ffffe8860bffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442424e8d80bffff6a016a018b7c242c575483042404b8e4d267b18b5c242ce8ec76ffffff34248b5424088b7c2438ff378b7c243c8b4f088b7c243c8b47108b72048b5a0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088977048b342489378d6424048b75008d76e83b75087305ff5528cd84897500c746fc05000000897e108b0c24894e0c8d64240c8b4c2404894e088956048b142489168d6424088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020d0000008b7424208916897e04b80100000083c418c210008b45008d40f43b45087303ff5528894500c740fc020000008b7c241c897804c700788e38b16a016a018b7c24388b74242cff742418ff742420ff742410575483042410568b5c2424e89a060000ff34248b7c24088b7424308b76088b5424308b52248b368b1283fa53740489d6eb006a016a0183fe050f855e0200008b7c24388b7f088b7424388b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424348b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b503ffffe83c08ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442438e88e08ffff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2430897804c700989b38b18b7c24448b7424388b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c703cc9b38b16a016a018b7c24405457e8901200005e5f893424897c2404eb0bc7042401000000897c2404ff34248b7c24088b74243c8b76088b54243c8b52248b368b1283fa53740489d6eb006a016a0181fe850000000f853d0200008b7c24448b7f088b7424448b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424408b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81a01ffffe8a105ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442444e8f305ffff8b7c24448b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2438897b04c7039ca038b16a016a018b7c244c54578b44244ce8161000005e5f893424897c2404eb0bc7042401000000897c2404ff34248b7c24088b7424508b368b5424508b4a088b5424508b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52f43b55087305ff5528cd80895500c742fc020000008b74240c8972048b7424188932be010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76e43b75087305ff5528cd86897500c746fc06000000894e148b0c24894e108d642410c7460c01000000895608897e04c706010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702010000008b74243c8916897e04b80100000083c434c21000f400|@14774,1,@2139|35,0,41 102,0,0 116,0,0 199,0,0 213,0,0 328,0,@14532 333,0,@14533 338,1,@6850 343,1,@6852 381,0,0 388,0,0 395,0,3 401,0,0 447,0,0 453,0,1 473,0,1 480,0,@14539 491,0,41 496,0,@14542 505,1,@6853 516,0,0 523,1,@6866 571,0,1 580,1,@6900 620,0,@6941 639,0,@14720 644,1,@6890 667,1,@6891 676,0,17 681,1,@6880 820,0,@14762 825,0,@14533 830,1,@6850 835,1,@6875 873,0,0 880,0,0 887,0,3 893,0,0 939,0,0 945,0,1 965,0,1 994,0,41 1061,0,0 1075,0,0 1158,0,0 1172,0,0 1287,0,@14532 1292,0,@14533 1297,1,@6850 1302,1,@6852 1340,0,0 1347,0,0 1354,0,3 1360,0,0 1406,0,0 1412,0,1 1432,0,1 1439,0,@14539 1450,0,41 1455,0,@14542 1464,1,@6853 1483,0,@14720 1492,1,@6890 1665,0,6 1679,0,0 1722,0,@6942 1762,1,@6943 1836,0,41 1903,0,0 1917,0,0 2000,0,0 2014,0,0 2129,0,@14532 2134,0,@14533 2139,1,@6850 2144,1,@6852 2182,0,0 2189,0,0 2196,0,3 2202,0,0 2248,0,0 2254,0,1 2274,0,1 2281,0,@14539 2292,0,41 2297,0,@14542 2306,1,@6853 2343,0,@6949 2389,0,@6950 2404,1,@6952 2422,0,0 2470,0,66 2503,0,41 2570,0,0 2584,0,0 2667,0,0 2681,0,0 2796,0,@14532 2801,0,@14533 2806,1,@6850 2811,1,@6852 2849,0,0 2856,0,0 2863,0,3 2869,0,0 2915,0,0 2921,0,1 2941,0,1 2948,0,@14539 2959,0,41 2964,0,@14542 2973,1,@6853 3019,0,@6954 3038,1,@6952 3056,0,0 3177,0,0 3251,0,0 3263,0,0 3298,0,0 3312,0,0 6941:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2123|16,0,1 6942:D3,44|3b650c7305ff552ccd0583f8057506b803000000c381f8850000007506b803000000c38b5204ff22f4000000|@14673,1,@2124|16,0,1 23,0,66 30,0,1 6943:D3,288|3b650c7305ff552ccd0950538b7c240c68e0c967b157b844d967b18b5c240ce8647fffff8b7c241c8b078b7c241c8b5f048b7c241c8b7f088b74240c5756e8199affff89c26a016a018b7c24148b74241c5756528b4424188d5c240ce83f010000ff34248b7c24088b7424248b368b5424248b4a088b5424248b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937ba00da67b18b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b4c24248b5c242c8b55008d52e43b55087305ff5528cdca895500c742fc06000000895a14894a10897a0c8b0c24894a088d64240c8972048b342489328d6424088b7424088916897e04b801000000c21800f40000|@14769,1,@2130|17,0,@14616 23,0,@14763 32,1,@6896 63,1,@6909 93,1,@6945 171,0,@14768 278,0,0 6944:D3,88|3b650c7305ff552ccd0183f84d7502eb0c83f80d7502eb0583f8317506b803000000c383f8417506b803000000c383f8437506b803000000c383f8317506b803000000c383f8757506b803000000c3b801000000c3f40000|@14673,1,@2125|30,0,1 41,0,1 52,0,1 63,0,1 74,0,1 80,0,0 6945:D3,2512|3b650c7305ff552ccd0950538b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff4d0f85e10200008b7c241083ff030f85e10000008b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b84cd967b1bbd4c067b1e854fcfeffe83f09000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700010000008b7c24148b5730ff12eb008b7c24148b7f088b7424148b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff77288b7c2418ff77388b7c241cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88cfafeffe813fffeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442414e865fffeffeb008b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2404897b04c703309b38b16a016a018b7c241c575483042404b8e4cf67b1e8566affffff3424ff7424088b5c2424ff34248b442408e84f6fffff8b7c24248b7f088b7424248b76248b3f8b3683fe53740489f7eb006a016a0183ff4b0f85e90200008b7c242c8b7f088b74242c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424208b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff77288b7c2418ff77388b7c241cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81df8feffe8a4fcfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44242ce8f6fcfeff8b45008d40f43b45087303ff5528894500c740fc020000008b7c241c897804c700689b38b16a016a018b5c24348b7c242c575483042404e81696ffff5e5f8b55008d52f83b55087305ff5528cdc0895500c742fc010000008932be94d967b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76ec3b75087305ff5528cd86897500c746fc040000008b5c240c895e0c894e088956048b4c240889ca890e5689d28b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b3424897424048d642404897c2404eb5dbe94d967b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240c89560c897e08c74604010000008b54240889d7891689342489ff897c2404ff3424ff7424088b7c24348b7f088b7424348b76248b3f8b3683fe53740489f7eb0083ff7d0f85900200008b7c24348b7f088b7424348b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424288b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff77288b7c2418ff77388b7c241cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c240cff77148b7c24108b571c8b7c2410ff77208b7c2414ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c240c8b57148b7c240c8b77188b7c240c8b4f288b7c240c8b7f388b5c240c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8acf4feffe833f9feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442434e885f9feff6a016a018b7c243c8b7424388b5424345756528b4424388d5c240ce8f1f6ffff5a5f8b75008d76f43b75087305ff5528cd84897500c746fc020000008956048b5424048916568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b7424248b142489168d64240c897e04b80100000083c420c20c008b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b742420893e8b3c24897e048d642408b80100000083c420c20c00f400|@14767,1,@2129|146,0,@14764 151,0,@14533 156,1,@6850 161,1,@6946 199,0,0 206,0,0 213,0,3 219,0,0 265,0,0 271,0,0 309,0,41 376,0,0 390,0,0 473,0,0 487,0,0 602,0,@14532 607,0,@14533 612,1,@6850 617,1,@6852 655,0,0 662,0,0 669,0,3 675,0,0 721,0,0 727,0,1 747,0,1 754,0,@14539 765,0,41 770,0,@14542 779,1,@6853 818,0,@6947 837,0,@14693 842,1,@6890 865,1,@6891 932,0,41 999,0,0 1013,0,0 1096,0,0 1110,0,0 1225,0,@14532 1230,0,@14533 1235,1,@6850 1240,1,@6852 1278,0,0 1285,0,0 1292,0,3 1298,0,0 1344,0,0 1350,0,1 1370,0,1 1377,0,@14539 1388,0,41 1393,0,@14542 1402,1,@6853 1439,0,@6948 1462,1,@6913 1497,0,@14765 1655,0,@14765 1726,0,0 1813,0,41 1880,0,0 1894,0,0 1977,0,0 1991,0,0 2106,0,@14532 2111,0,@14533 2116,1,@6850 2121,1,@6852 2159,0,0 2166,0,0 2173,0,3 2179,0,0 2225,0,0 2231,0,1 2251,0,1 2258,0,@14539 2269,0,41 2274,0,@14542 2283,1,@6853 2436,0,0 2473,0,0 2500,0,0 6946:D3,224|3b650c7305ff552ccd01a8010f85c60000008b308b400483f80175478b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e874ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b82cc167b1c3f400|@14538,1,@2126|59,0,3 92,0,0 130,0,3 173,0,@10448 217,0,@14537 6947:D3,36|3b650c7305ff552ccd0583f87d7502eb0a83f84b74058b5204ff22b803000000c3f40000|@14673,1,@2127|28,0,1 6948:D3,28|3b650c7305ff552ccd0583f87d7506b803000000c38b5204ff22f400|@14673,1,@2128|16,0,1 6949:D3,32|3b650c7305ff552ccd0581f8850000007506b803000000c38b5204ff22f40000|@14673,1,@2131|12,0,66 19,0,1 6950:D3,288|3b650c7305ff552ccd0552506a016a016a01b80100000089e3e8422effff5e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7c24088b7f0857b8030000008b5c2404e8227cffff89c7578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2408897b04c703009d38b16a016a018b7c24148b7f08575483042404b8e4d267b1e89361ffffff3424ff7424088b7c241c8b5f08ff34248b442408e88966ffff8b7c241c8b5f08b823000000e8b04dffff6a016a018b7424248b7e0489f68b7608ff742418ff742420ff742410575483042410568b4424388b5c2424e8f4f1ffff5f5e8d6424208b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@14770,1,@2133|19,0,0 26,1,@6866 77,0,1 86,1,@6900 126,0,@6951 148,0,@14720 153,1,@6890 179,1,@6891 191,0,17 196,1,@6880 244,1,@6943 6951:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2132|16,0,1 6952:D3,808|3b650c7305ff552ccd0950538b14248b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c2404897804c7006ca038b1ff1289c7ff37ff77048b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff050f85840200008b7c24148b7f088b7424148b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e86feefeffe8f6f2feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442414e848f3feff6a016a018b7c241c54578b44241c8b5c2418e895fdffff5a5f8b75008d76f43b75087305ff5528cd84897500c746fc020000008956048b5424048916568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b74241c8b142489168d642414897e04b801000000c208008b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b742418893e8b3c24897e048d642408b80100000083c408c20800f4|@14771,1,@2135|50,0,@6953 122,0,41 189,0,0 203,0,0 286,0,0 300,0,0 415,0,@14532 420,0,@14533 425,1,@6850 430,1,@6852 468,0,0 475,0,0 482,0,3 488,0,0 534,0,0 540,0,1 560,0,1 567,0,@14539 578,0,41 583,0,@14542 592,1,@6853 736,0,0 770,0,0 797,0,0 6953:D3,28|3b650c7305ff552ccd0583f8057506b803000000c38b5204ff22f400|@14673,1,@2134|16,0,1 6954:D3,76|3b650c7305ff552ccd056a016a018b7a048b72086a0157548304240856bb01000000e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14773,1,@2138|30,0,0 35,1,@6955 6955:D3,600|3b650c7305ff552ccd0950536a016a016a01b80100000089e3e81229ffffff3424ff742408ff7424108b5d008d5bf03b5d087303ff5528895d00c743fc030000008b3c24897b088b7c2404897b048b7c2408893b8b7c242457b801000000e8e976ffff89c7578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2420897b04c70368a338b16a016a018b7c2430575483042404b8e4d267b1e85d5cffffff3424ff7424088b5c2438ff34248b442408e85661ffff8b7c2438ff742414578b4424248b5c2420e84887ffff89c7576a016a018b7c243883ff0375368b7c24448b7f088b7424448b76248b3f8b3683fe53740489f7eb0083ff237507bf03000000eb05bf0100000083f70283ff037502eb708b7c245083ff0374678b5c2444b823000000e81b48ffff8b7c244468e0c967b157b89cd367b18b5c2444e8ff6bffff6a016a018b5c244cff74241054830424048b44244ce8cd89ffff5a5f8b75008d76f83b75087305ff5528cd84897500c746fc010000008916893424897c2404eb0fc70424010000008b7c240c897c2404ff34248b7c24088b7424108b368b5424108b4a088b5424108b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937ba00da67b18b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b4c24548b55008d52e03b55087305ff5528cdc2895500c742fc070000008b5c2420895a18894a148b4c2410894a10897a0c598d642408894a088972048b74240889328b7424408916897e04b80100000083c438c21000f400|@14772,1,@2137|19,0,0 26,1,@6866 90,0,0 95,1,@6900 135,0,@6956 154,0,@14720 159,1,@6890 182,1,@6891 204,1,@6909 257,0,1 264,0,0 292,0,17 297,1,@6880 306,0,@14616 312,0,@14725 321,1,@6896 347,1,@6913 393,0,0 479,0,@14768 588,0,0 6956:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2136|16,0,1 6957:D3,664|3b650c7305ff552ccd0589c7be98a338b181c61d0000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9b6010000909090e9b5010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96b010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f400|@14673,1,@2140|13,0,@6957 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 652,0,1 6958:D3,76|3b650c7305ff552ccd056a016a018b7a048b72086a0357548304240856bb03000000e891faffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14773,1,@2141|30,0,1 35,1,@6955 6959:D3,52|3b650c7305ff552ccd0183f8657506b803000000c383f80d7506b803000000c383f8317506b803000000c3b801000000c3f40000|@14673,1,@2142|16,0,1 27,0,1 38,0,1 44,0,0 6960:D3,688|3b650c7305ff552ccd0583f80d7505e99502000083f8310f848c02000089c7beeca638b181c6300000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9b6010000909090e9b5010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96b010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22b803000000c3f4|@14673,1,@2143|32,0,@6960 598,0,1 605,0,0 612,0,1 619,0,1 626,0,1 633,0,1 640,0,1 647,0,1 654,0,1 661,0,1 671,0,1 682,0,1 6961:D3,280|3b650c7305ff552ccd09538b7c240c8b7f088b74240c8b76248b3f8b3683fe53740489f7eb0083ff310f85d50000006a016a018b5c24108b7c2414575483042404b8e4cf67b1e80154ffffff3424ff7424088b5c241cff34248b442408e8fa58ffff6a016a018b7c24248b74242057568b4424108d5c2408e883ffffff595fbe010000008b55008d52f83b55087305ff5528cdc2895500c742fc0100004089328b75008d76ec3b75087305ff5528cd86897500c746fc0400000089560c8b14248956088d6424048b14248956048d64240cc706030000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489325e8916897e04b801000000c208005fc70701000000894704b801000000c20800f400|@14776,1,@2144|66,0,@14693 71,1,@6890 94,1,@6891 128,0,0 211,0,1 253,0,0 263,0,0 271,0,0 6962:D3,36|3b650c7305ff552ccd0583f8237502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2145|28,0,1 6963:D3,664|3b650c7305ff552ccd0589c7be14ab38b181c61d0000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9b6010000909090e9b5010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96b010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c2000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a1000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e980000000909090e93b000000909090e977000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f400|@14673,1,@2146|13,0,@6963 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 652,0,1 6964:D3,76|3b650c7305ff552ccd056a016a018b7a048b72086a0157548304240856bb03000000e815f3ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14773,1,@2147|30,0,1 35,1,@6955 6965:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2148| 6966:D3,344|3b650c7305ff552ccd09538b7c24108b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703f0af38b16a016a018b7c2414575483042404b8e4cf67b1e82e4fffff8b0424ff7424048b75008d76f43b75087305ff5528cd01897500c746fc020000008b142489d78956048906568b5c241c57e80854ffff8b5c241cb813000000e8323bffff8b7c24208b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70020b038b16a016a018b5c24248b7c2420575483042404e8d87cffffff34248b7c24088b5424108b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52ec3b55087305ff5528cd80895500c742fc040000008b342489720c8d64240c8b34248972088d642410897a04c7020b0000005e8916897e04b801000000c20c00f400|@14777,1,@2151|46,0,@6967 65,0,@14693 70,1,@6890 124,1,@6891 133,0,9 138,1,@6880 177,0,@6968 200,1,@6913 324,0,5 335,0,0 6967:D3,28|3b650c7305ff552ccd0583f8137506b803000000c38b5204ff22f400|@14673,1,@2149|16,0,1 6968:D3,672|3b650c7305ff552ccd0589c7be20b038b181c61d0000008d74befcffe6e91b020000909090e913020000909090e91e020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bd010000909090e9bc010000909090e993010000909090e9b3010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e972010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c9000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a8000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e987000000909090e93b000000909090e97e000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f40000|@14673,1,@2150|13,0,@6968 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 659,0,1 6969:D3,320|3b650c7305ff552ccd09536a016a018b7c2420575483042404b8e4db67b1bbfcd667b1e8004bffffff3424ff7424088b5c2428ff34248b442408e8f94fffff8b5c2428b813000000e82337ffff8b7424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70770b438b16a016a018b5424288b4424208b5c24308b74242457548304240456ff12ff34248b5424088b7c240cff378b7c24108b4f088b7c24108b47108b72048b5a0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088977045e89378b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c74604010000005a8d64240889168b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720c5e8972085e8d642408897204893a5e8916897e04b801000000c21400f4|@14779,1,@2154|26,0,@14778 31,0,@14750 36,1,@6890 59,1,@6891 68,0,9 73,1,@6880 112,0,@6971 251,0,0 312,0,0 6970:D3,52|3b650c7305ff552ccd0183f8237506b803000000c383f80d7506b803000000c383f8317506b803000000c3b801000000c3f40000|@14673,1,@2152|16,0,1 27,0,1 38,0,1 44,0,0 6971:D3,672|3b650c7305ff552ccd0589c7be70b438b181c61d0000008d74befcffe6e91b020000909090e913020000909090e91e020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bd010000909090e9bc010000909090e993010000909090e9b3010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e972010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c9000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a8000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e987000000909090e93b000000909090e97e000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f40000|@14673,1,@2153|13,0,@6971 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 659,0,1 6972:D3,36|3b650c7305ff552ccd0583f8237502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2155|28,0,1 6973:D3,924|3b650c7305ff552ccd09538b7c24108b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7030cbb38b16a016a018b7c2414575483042404b8e4db67b1e85646ffff8b0424ff7424048b75008d76f43b75087305ff5528cd01897500c746fc020000008b142489d78956048906568b5c241c57e8304bffff8b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb006a016a0183ff4b0f859d0200008b7c24248b7f088b7424248b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64241c8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8fed3feffe885d8feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442424e8d7d8feff8b7c24288b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7003cbb38b16a016a018b5c242c8b7c2428575483042404e8f571ffff5a5f8b75008d76f83b75087305ff5528cd84897500c746fc010000008916568b5424108b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b3424897424048d642404897c2404eb0fc70424010000008b7c240c897c24045e5f8b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720c8b34248972088d642404897a04c702030000008b74240c8916897e04b80100000083c410c20c00f400|@14780,1,@2158|46,0,@6974 65,0,@14778 70,1,@6890 124,1,@6891 191,0,41 258,0,0 272,0,0 355,0,0 369,0,0 484,0,@14532 489,0,@14533 494,1,@6850 499,1,@6852 537,0,0 544,0,0 551,0,3 557,0,0 603,0,0 609,0,1 629,0,1 636,0,@14539 647,0,41 652,0,@14542 661,1,@6853 700,0,@6975 723,1,@6913 840,0,0 898,0,1 912,0,0 6974:D3,28|3b650c7305ff552ccd0583f84b7506b803000000c38b5204ff22f400|@14673,1,@2156|16,0,1 6975:D3,672|3b650c7305ff552ccd0589c7be3cbb38b181c61d0000008d74befcffe6e91b020000909090e913020000909090e91e020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bd010000909090e9bc010000909090e993010000909090e9b3010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e972010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c9000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a8000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e987000000909090e93b000000909090e97e000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f8197507bf03000000eb05bf01000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c38b5204ff22f40000|@14673,1,@2157|13,0,@6975 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 659,0,1 6976:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2161|16,0,1 6977:D3,28|3b650c7305ff552ccd0183f86b7506b803000000c3b801000000c3f4|@14785,1,@2163|16,0,1 22,0,0 6978:D3,4248|8d7c24a83b7d0c7305ff5530cd0d5250538b5c241c68a4dd67b1ff742404b8ccdd67b1e8c84fffff8b74241c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70748cf38b1578b7c2404ff77188b7c24088b77288b7c24088b7f3cff36ff378b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb006a016a0183ff450f857e0300008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424188b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e83bcdfeffe8c2d1feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e81ed2feff8b7c241cff77048b7c2420ff77086a016a016a01b80100000089e3e85e09ffff8d6424045e5f8b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b7c2404897a04c70284cf38b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000598d642404894f088957048937578b7424388b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707cccf38b18b7424248b4e048b7424308b54242c57565289ca8b44240c8b5c2428ff1289c757b8350000008b5c2420e8c828ffff8b74243c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70718d038b16a016a018b4c24308b74243c8b542438575483042404565289ca8b44241c8b5c2438e886fcffffff34248b7c242c8b77148b7c242c8b7f38ff36ff37b81f0000008b5c2434e85728ffff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424248977105e89770c8b7424248977085e8977048b74242489378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b54240c8956085a8d642410895604c70603000000893424897c2404e93d0c000083ff6b0f85400300008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424188b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b4c9feffe83bcefeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e897cefeff8b7c241cff77048b7c2420ff77086a016a016a01b80100000089e3e8d705ffff8d6424045f5a8b75008d76f03b75087305ff5528cd84897500c746fc030000008956088b542404895604c70660d038b18b45008d40f03b45087305ff5528cdc0894500c740fc030000005a8d64240489500889700489388b7424348b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707a8d038b18b7424208b4e048b74242c8b54242857565289ca8b5c2424ff1289c7578b7c241c8b77148b7c241c8b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c240c894f1089570c8b5424108957088977048b742414893757b81f0000008b5c2420e8ff24ffffbf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088b742404897704c70707000000897c24085f8d642404897c2404e9f40800008b7c24348b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703f0d038b16a016a01ff7424205483042404b8e4cf67b1e81638ffffff3424ff7424088b7c2428ff77188b7c242c8b77288b7c242c8b7f3cff36ff378b7c24348b7f088b7424348b76248b3f8b3683fe53740489f7eb0083ff430f850d0800008b7c24348b7f088b7424348b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424348b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8f2c5feffe879cafeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442434e8d5cafeffff74240c8b4424148b5c2438e8043bffff8b7c24348b7f088b7424348b76248b3f8b3683fe53740489f7eb0083ff5f0f85900000008b7c24348b7f148b7424348b76388b3f8b168b75008d76e83b75087305ff5528cd84897500c746fc0500000059894e1089560c5a895608897e045f893ebf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470401000000c70707000000e92a0400008b7424508b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70738d138b1578b7c24388b7f088b7424388b76248b3f8b3683fe53740489f7eb0089feba50be38b181c2c20a00008d54b2fcffe2e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9bd000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99c000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083ff7b7507bf03000000eb05bf01000000eb4bbf03000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff030f85200100008b7c243cff77048b7c2440ff77086a016a016a01b80100000089e3e873fefeff8d6424045f5a8b75008d76f03b75087305ff5528cd84897500c746fc030000008956088b542404895604c70684d138b18b45008d40f03b45087305ff5528cdc0894500c740fc030000005a8d64240489500889700489388b7c24408b57048b7c244c8b742448ff342457568b5c2444ff1289c68d6424048b7c24348b7f148b5424348b52388b3f8b0a8b55008d52e83b55087305ff5528cdc2895500c742fc050000005b895a10894a0c59894a08897a045f893abf010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c70707000000eb2d6a016a018b5424488b7c24548b742450ff742408548304240457568b4424548b5c2450e86ff1ffff5f8d642414578b7c242c8b77148b7c242c8b7f38ff36ff37b85f0000008b5c2434e83d1dffff8b7c240c8b378b7c240c8b57088b7c240c8b4f108b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1059894f0c8957085a8957048937be010000008b5d008d5bf83b5d087305ff5528cdc0895d00c743fc010000408933ba010000008b75008d76f83b75087305ff5528cd8c897500c746fc010000408916ba010000008b4d008d49f83b4d087305ff5528cdcc894d00c741fc010000408911ba010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089108b55008d52dc3b55087305ff5528cdcb895500c742fc0800000089421c8b442404894218897a14895a10894a0c8972088b7424088972045e8d64240889328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060100000089742408897c240c83c408eb658d64240cbf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8977088b742404897704c70709000000897c24105f8d642404897c240c83c4085e5f5657ff7424308b54241c8b4c24308b5c24208b4424188b742428894424288b442408895c242c8b5c2404894c2430895424348b3c24897c24388974242483c424e9e90200008d64240cf4|@14791,1,@2176|22,0,@14788 31,0,@14789 36,1,@6896 75,0,@6980 168,0,41 234,0,0 248,0,0 319,0,0 333,0,0 435,0,@14532 440,0,@14533 445,1,@6850 450,1,@6852 488,0,0 495,0,0 502,0,3 508,0,0 548,0,0 554,0,1 570,0,1 577,0,@14539 588,0,41 593,0,@14542 602,1,@6853 627,0,0 634,1,@6866 682,0,@6981 761,0,@6982 799,0,26 808,1,@6880 847,0,@6983 912,0,15 921,1,@6880 1023,0,1 1071,0,41 1137,0,0 1151,0,0 1222,0,0 1236,0,0 1338,0,@14532 1343,0,@14533 1348,1,@6850 1353,1,@6852 1391,0,0 1398,0,0 1405,0,3 1411,0,0 1451,0,0 1457,0,1 1473,0,1 1480,0,@14539 1491,0,41 1496,0,@14542 1505,1,@6853 1530,0,0 1537,1,@6866 1585,0,@6984 1663,0,@6985 1768,0,15 1777,1,@6880 1782,0,0 1858,0,3 1915,0,@6986 1933,0,@14693 1938,1,@6890 2033,0,41 2099,0,0 2113,0,0 2184,0,0 2198,0,0 2300,0,@14532 2305,0,@14533 2310,1,@6850 2315,1,@6852 2353,0,0 2360,0,0 2367,0,3 2373,0,0 2413,0,0 2419,0,1 2435,0,1 2442,0,@14539 2453,0,41 2458,0,@14542 2467,1,@6853 2484,1,@6891 2586,0,0 2653,0,0 2659,0,3 2703,0,@6987 2738,0,@6978 3304,0,1 3311,0,0 3318,0,1 3325,0,1 3332,0,1 3339,0,1 3346,0,1 3353,0,1 3360,0,1 3367,0,1 3374,0,1 3381,0,1 3388,0,1 3422,0,0 3429,1,@6866 3477,0,@6988 3614,0,0 3683,0,3 3754,0,47 3763,1,@6880 3830,0,0 3863,0,0 3896,0,0 3929,0,0 4054,0,0 4076,0,0 4152,0,4 4239,1,@6989 6979:D3,56|3b650c7305ff552ccd0183f8457502eb0c83f80d7502eb0583f8317506b803000000c383f86b7506b803000000c3b801000000c3f4000000|@14673,1,@2165|30,0,1 41,0,1 47,0,0 6980:D3,40|3b650c7305ff552ccd0583f8157506b803000000c383f8137506b803000000c38b5204ff22f40000|@14673,1,@2166|16,0,1 27,0,1 6981:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2167| 6982:D3,56|3b650c7305ff552ccd0583f81f7502eb2083f835741b83f8157506b803000000c383f8137506b803000000c38b5204ff22b803000000c3f4|@14673,1,@2168|28,0,1 39,0,1 50,0,1 6983:D3,52|3b650c7305ff552ccd0583f81f7506b803000000c383f8157506b803000000c383f8137506b803000000c38b5204ff22f4000000|@14673,1,@2169|16,0,1 27,0,1 38,0,1 6984:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2170| 6985:D3,52|3b650c7305ff552ccd0583f81f7506b803000000c383f8157506b803000000c383f8137506b803000000c38b5204ff22f4000000|@14673,1,@2171|16,0,1 27,0,1 38,0,1 6986:D3,52|3b650c7305ff552ccd0583f8437506b803000000c383f8157506b803000000c383f8137506b803000000c38b5204ff22f4000000|@14673,1,@2172|16,0,1 27,0,1 38,0,1 6987:D3,56|3b650c7305ff552ccd0583f8177502eb2083f85f741b83f8157506b803000000c383f8137506b803000000c38b5204ff22b803000000c3f4|@14673,1,@2173|28,0,1 39,0,1 50,0,1 6988:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2174| 6989:D3,1716|3b650c7305ff552ccd0950538b7c24188b7f088b7424188b76248b3f8b3683fe53740489f7eb0083ff150f852e0300008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e806bafeffe88dbefeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e8dfbefeff6a016a01bac0d067b18b4424188b5c24208b7c24148b74241c57548304240456e87632ffff5e5fba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408911ba010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc0100004089138b55008d52e43b55087305ff5528cdca895500c742fc06000000895a14894a10897a0cc74208030000008972048b74240489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937ff3424578b7424288b5424248b4c24208b5c241c8b442418894424188b442404895c241c8b1c24894c2420895424248974242883c414e9a6fcffff8d64241483ff130f852e0300008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8cfb6feffe856bbfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e8a8bbfeff6a016a01bac0d067b18b4424188b5c24208b7c24148b74241c57548304240456e83f2fffff5e5fba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408911ba010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc0100004089138b55008d52e43b55087305ff5528cdca895500c742fc06000000895a14894a10897a0cc74208010000008972048b74240489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70605000000568b5424048b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937ff3424578b7424288b5424248b4c24208b5c241c8b442418894424188b442404895c241c8b1c24894c2420895424248974242883c414e96ff9ffff8d6424148b74241c8b7c2404893e8b3c24897e048d642408b801000000c21400f40000|@14790,1,@2175|71,0,41 138,0,0 152,0,0 235,0,0 249,0,0 364,0,@14532 369,0,@14533 374,1,@6850 379,1,@6852 417,0,0 424,0,0 431,0,3 437,0,0 483,0,0 489,0,1 509,0,1 516,0,@14539 527,0,41 532,0,@14542 541,1,@6853 550,0,@14702 578,1,@6894 585,0,0 618,0,0 688,0,1 732,0,2 894,0,41 961,0,0 975,0,0 1058,0,0 1072,0,0 1187,0,@14532 1192,0,@14533 1197,1,@6850 1202,1,@6852 1240,0,0 1247,0,0 1254,0,3 1260,0,0 1306,0,0 1312,0,1 1332,0,1 1339,0,@14539 1350,0,41 1355,0,@14542 1364,1,@6853 1373,0,@14702 1401,1,@6894 1408,0,0 1441,0,0 1511,0,0 1555,0,2 1706,0,0 6990:D3,68|3b650c7305ff552ccd0dff74240c8b72048b54240c8b4c2408ff742404894c24088954240c89742410895c24148b5c240489442404b801000000e9190000008d642404f4|@14900,1,@2295|54,0,0 59,1,@6991 6991:D3,1696|3b650c7305ff552ccd09538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707a0df38b18b7424188b76088b5424188b52248b368b1283fa53740489d6eb0083fe610f85300200008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8c3b2feffe84ab7feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e89cb7feffff34248b74241c8b5424188b4c24148b5c24108b44240c8944240cb801000000895c24108b1c24894c2414895424188974241c83c408e981fdffff8d6424088b7424188b76088b5424188b52248b368b1283fa53740489d6eb0083fe477505e98703000083fe6d0f847e0300008b7424188b76088b5424188b52248b368b1283fa53740489d6eb0089f2b9ecd838b181c1df0200008d4c91fcffe1e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083fe7b7507be03000000eb05be01000000eb44be03000000eb3dbe03000000eb36be03000000eb2fbe03000000eb28be03000000eb21be03000000eb1abe03000000eb13be03000000eb0cbe03000000eb05be0300000083fe030f85c40000006a016a018b5c24208b7424108b5424148b4c24186a03565483042408525189f8e8fc0300005e59bf010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c70701000000578b7c241c8b7424188b5424148b4c24108b5c240c5756525153b8010000008b5c2418e808faffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c214008d642404b801000000c214008b4c24148b4424088b5c24188b7424108b54240c57565289caff1289c7578b7c241c8b7424188b5424148b4c24108b5c240c5756525153b8010000008b5c2418e88cf9ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c21400f4|@14899,1,@2294|43,0,@6992 106,0,41 173,0,0 187,0,0 270,0,0 284,0,0 399,0,@14532 404,0,@14533 409,1,@6850 414,1,@6852 452,0,0 459,0,0 466,0,3 472,0,0 518,0,0 524,0,1 544,0,1 551,0,@14539 562,0,41 567,0,@14542 576,1,@6853 608,0,0 719,0,@6991 1285,0,1 1292,0,0 1299,0,1 1306,0,1 1313,0,1 1320,0,1 1327,0,1 1334,0,1 1341,0,1 1348,0,1 1355,0,1 1362,0,1 1408,1,@6993 1415,0,0 1484,0,0 1515,0,0 1576,0,0 1639,0,0 6992:D3,696|3b650c7305ff552ccd0583f86d7505e99602000089c7bea0df38b181c6270000008d74befcffe6e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f87b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb0583f8617506b803000000c38b5204ff22f40000|@14673,1,@2177|23,0,@6992 589,0,1 596,0,0 603,0,1 610,0,1 617,0,1 624,0,1 631,0,1 638,0,1 645,0,1 652,0,1 659,0,1 666,0,1 683,0,1 6993:D3,8820|8d7c24b03b7d0c7305ff5530cd0950538b7c2418ff378b7c242083ff037505e9150500008b7c24048b7f088b7424048b76248b3f8b3683fe53740489f7eb0089feba6ce238b181c2520000008d54b2fcffe2e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083ff7b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff030f84670200008d6424046a016a016a01b80100000089e3e8d8e4feffff34248b742408ff74240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b1424895708897704c707f40439b1576a016a016a01b80100000089e3e891e4feffff3424ff74240c8b7c24448b3f8b7424448b76048b45008d40f03b45087305ff5528cdc0894500c740fc030000008b54241489500889700489386a016a018b7c24448b74244054ff742438683cde67b157568b5c244ce86a200000595fbecc5366b18b5d008d5bf83b5d087305ff5528cdc2895d00c743fc010000408933ba94d967b18b75008d76f83b75087305ff5528cd8e897500c746fc010000408916ba4ce867b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089108b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210c7420c0cd067b1895a08897204c70254e867b18b75008d76f43b75087305ff5528cd86897500c746fc02000000895604c7061d000000ba010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc0100004089138b55008d52e83b55087305ff5528cdca895500c742fc05000000c7421001000000895a0c897a08894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000005a8951045a8d64241089118b5d008d5bf43b5d087305ff5528cdc2895d00c743fc020000005a8953045a8d64241489138b55008d52e83b55087305ff5528cdca895500c742fc05000000897a10895a0c894a08897204c702390000008b74240c8916897e04b801000000c214008b7c24048b7f088b7424048b76248b3f8b3683fe53740489f7eb008b7424048b56148b742404ff76188b7424088b5e288b7424088b76388b4c24088b493cff338b12ff318b0e8b75008d76e83b75087305ff5528cd86897500c746fc050000008b1c24895e10894e0c8b4c2404894e088956048b542408891656be6ce238b181c6c40500008d74befcffe6e91b020000909090e92c020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9af070000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b4070000909090e983010000909090e9230a0000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e9a80d0000909090e9c90d0000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e9c20d0000909090e9e8110000909090e9f3000000909090e9eb000000909090e9f9110000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991140000909090e93b000000909090e900170000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090908b742428c706a84e66b15f897e04b80100000083c418c214008d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8afa1feffe836a6feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e892a6feff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2414897804c700f4d739b18b7c241c8b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c70330d839b16a016a018b7c24245457e89bb0ffffff34248b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0081ff850000000f85360200008b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d64241c8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e85d9ffeffe8e4a3feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce840a4feff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2420897804c70090d939b18b7c24348b7424288b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c703c4d939b16a016a018b7c24305457e842aeffff5f8d642404eb05bf0100000057b8830000008b5c2420e83bfbfeff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2424897804c70024da39b18b5c24388b7c24308b74242cff742420683cde67b15756e89a4c000089c7578b7c24248b77148b7c24248b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2414894f1089570c8b5424188957088977048b74241c893757b81f0000008b5c2428e8a2fafeff8b442404e8a9ea000089c7be010000008b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76e43b75087305ff5528cd84897500c746fc060000008956148b542408895610c7460c030000008b54240c8956088b1424895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b74243c893e5f8d64240c897e04b80100000083c420c214008b4424188b5c242c5e8b5424248b4c241c894c24208954242489742428c744242c010000008b7c2418897c241c83c41ce9bf90ffff8d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e89f9bfeffe826a0feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e882a0feff8b7c24288b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2410897b04c703f4da39b16a016a018b7c242454578b442424e8a5aaffff5e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000005b895f10894f0c59894f088957045a89178b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a08897204c702130000008b7424188916897e04b80100000083c40cc214008d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82099feffe8a79dfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e8039efeff6a016a016a01b80100000089e3e851d5feffff3424ff742408ff7424106a016a016a01b80100000089e3e834d5feffff34248b7c2408ff74240c8b7424548b168b7424548b4e048b5d008d5bec3b5d087305ff5528cd86895d00c743fc040000008b342489730c8b7424148973088b742418897304c70338e739b18b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e048916568b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000008b742404897308897b048b7c2408893b8b7c244c57b803000000e8a822ffff8b7c24508b74244c8b5d008d5be43b5d087305ff5528cdc0895d00c743fc06000000897314897b10c7430c3cde67b15f897b088b7c243c897b04c703c0e839b16a016a018b7c245054578b442450e83da7ffff5e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c242c895f10894f0c8b4c2430894f088957048b54243489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000005a8951045a8d64240c89118b5d008d5bf43b5d087305ff5528cdc2895d00c743fc020000005a8d6424048953045a8d64241889138b55008d52e83b55087305ff5528cdca895500c742fc05000000897a10895a0c894a08897204c702190000008b7424188916897e04b80100000083c40cc214008d642414588b5c24148b7424108b54240c89542414897424188b7c2404897c241083c410e9261401008d642414588b5c24148b7424108b54240c89542414897424188b7c2404897c241083c410e9fd1301008d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e80995feffe89099feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e8ec99feff8b7c2428ff77048b7c242cff77086a016a016a01b80100000089e3e82cd1feffff7424048b74240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742414897704c70718163ab1578b5d008d5bf03b5d087303ff5528895d00c743fc030000008b7c2414897b088b3c24897b048b7c2404893b8b45008d40f43b45087305ff5528cd08894500c740fc020000008b7c2430897804c70060163ab18b7c243c8b742438ff74242c683cde67b15756e84742000089c757b8350000008b5c2430e896f0feff8b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424088977088b74242c897704c70798163ab18b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000008b7424188973088b742404897304893b8b45008d40f43b45087305ff5528cd08894500c740fc020000008b7c2434897804c700d4163ab18b7c24408b74243cff742430683cde67b15756e8a141000089c7578b7c24348b77148b7c24348b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2424894f1089570c8b5424288957088977048b74242c893757b81f0000008b5c2438e8a9effeff8b442408e81057000089c7578b442408e8a457000089c7be010000008b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76e83b75087305ff5528cd84897500c746fc050000008956108b54240489560cc74608030000005a895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707270000008b74244c893e5f8d64243c897e04b801000000c214008d642414588b5c24148b7424108b54240c89542414897424188b7c2404897c241083c410e9a60f01008b7c24148b7f088b7424148b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424148b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b690feffe83d95feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442414e89995feff8b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff237502eb1083ff0d7502eb0983ff310f85120100006a016a01ff74241cff7424248b4424108d5c2408e8861901005a5f8d6424048b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000005b895f10894f0c59894f088977045e8937be010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408931be010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc010000408933be010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08897e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702290000008b7424188916897e04b80100000083c40cc21400b8310000008b5c2414e86725ffff8b742428c706a84e66b15f897e04b80100000083c418c214008d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87a8dfeffe80192feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e85d92feff8b7c24288b74241c8b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c70328183ab16a016a018b7c242454578b442424e8809cffff5e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000005b895f10894f0c59894f088957045a89178b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a08897204c702350000008b7424188916897e04b80100000083c40cc214008d6424048b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424108b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8fb8afeffe8828ffeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e8de8ffeff6a016a016a01b80100000089e3e82cc7feffff3424ff742408ff7424106a016a016a01b80100000089e3e80fc7feffff34248b7c2408ff74240c8b7424548b168b7424548b4e048b5d008d5bec3b5d087305ff5528cd86895d00c743fc040000008b342489730c8b7424148973088b742418897304c70388183ab18b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e048916568b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000008b742404897308897b048b7c2408893b8b7c244c57b803000000e88314ffff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2444897804c700101a3ab16a016a018b7c24588b74245454ff74244cff742410683cde67b15756bb01000000e8301601005e5f8d6424048b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c242c895f10894f0c8b4c2430894f088957048b54243489178b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000005a8951045a8d64240c89118b5d008d5bf43b5d087305ff5528cdc2895d00c743fc020000005a8d6424048953045a8d64241889138b55008d52e83b55087305ff5528cdca895500c742fc05000000897a10895a0c894a08897204c702390000008b7424188916897e04b80100000083c40cc21400f400|@14898,1,@2293|66,0,@6993 632,0,1 639,0,0 646,0,1 653,0,1 660,0,1 667,0,1 674,0,1 681,0,1 688,0,1 695,0,1 702,0,1 709,0,1 733,0,0 740,1,@6866 792,0,@6994 804,0,0 811,1,@6866 891,0,@14792 902,1,@6995 909,0,@10423 942,0,@14765 975,0,@14868 1039,0,@14696 1051,0,@14869 1086,0,14 1091,0,0 1152,0,0 1196,0,0 1316,0,28 1330,0,0 1460,0,@6993 2026,0,@10341 2035,0,0 2072,0,41 2138,0,0 2152,0,0 2223,0,0 2237,0,0 2339,0,@14532 2344,0,@14533 2349,1,@6850 2354,1,@6852 2392,0,0 2399,0,0 2406,0,3 2412,0,0 2452,0,0 2458,0,1 2474,0,1 2481,0,@14539 2492,0,41 2497,0,@14542 2506,1,@6853 2543,0,@7074 2582,0,@7075 2597,1,@6952 2633,0,66 2666,0,41 2732,0,0 2746,0,0 2817,0,0 2831,0,0 2933,0,@14532 2938,0,@14533 2943,1,@6850 2948,1,@6852 2986,0,0 2993,0,0 3000,0,3 3006,0,0 3046,0,0 3052,0,1 3068,0,1 3075,0,@14539 3086,0,41 3091,0,@14542 3100,1,@6853 3137,0,@7077 3183,0,@7078 3198,1,@6952 3210,0,0 3216,0,65 3225,1,@6880 3262,0,@7079 3283,0,@14792 3290,1,@6999 3369,0,15 3378,1,@6880 3387,1,@7080 3394,0,0 3465,0,1 3515,0,0 3534,0,0 3577,0,0 3593,1,@6940 3624,0,41 3690,0,0 3704,0,0 3775,0,0 3789,0,0 3891,0,@14532 3896,0,@14533 3901,1,@6850 3906,1,@6852 3944,0,0 3951,0,0 3958,0,3 3964,0,0 4004,0,0 4010,0,1 4026,0,1 4033,0,@14539 4044,0,41 4049,0,@14542 4058,1,@6853 4104,0,@7081 4123,1,@6952 4212,0,9 4226,0,0 4263,0,41 4329,0,0 4343,0,0 4414,0,0 4428,0,0 4530,0,@14532 4535,0,@14533 4540,1,@6850 4545,1,@6852 4583,0,0 4590,0,0 4597,0,3 4603,0,0 4643,0,0 4649,0,1 4665,0,1 4672,0,@14539 4683,0,41 4688,0,@14542 4697,1,@6853 4708,0,0 4715,1,@6866 4737,0,0 4744,1,@6866 4820,0,@7086 4907,0,1 4912,1,@6900 4959,0,@14792 4976,0,@7087 4995,1,@6952 5177,0,12 5191,0,0 5238,1,@7095 5279,1,@7095 5310,0,41 5376,0,0 5390,0,0 5461,0,0 5475,0,0 5577,0,@14532 5582,0,@14533 5587,1,@6850 5592,1,@6852 5630,0,0 5637,0,0 5644,0,3 5650,0,0 5690,0,0 5696,0,1 5712,0,1 5719,0,@14539 5730,0,41 5735,0,@14542 5744,1,@6853 5769,0,0 5776,1,@6866 5826,0,@7099 5909,0,@7100 5926,0,@14792 5933,1,@6999 5941,0,26 5950,1,@6880 5994,0,@7101 6075,0,@7102 6092,0,@14792 6099,1,@6999 6178,0,15 6187,1,@6880 6196,1,@7019 6208,1,@7020 6215,0,0 6286,0,1 6327,0,19 6346,0,0 6390,1,@7095 6417,0,41 6483,0,0 6497,0,0 6568,0,0 6582,0,0 6684,0,@14532 6689,0,@14533 6694,1,@6850 6699,1,@6852 6737,0,0 6744,0,0 6751,0,3 6757,0,0 6797,0,0 6803,0,1 6819,0,1 6826,0,@14539 6837,0,41 6842,0,@14542 6851,1,@6853 6926,1,@7103 6986,0,0 7019,0,0 7052,0,0 7155,0,20 7169,0,0 7180,0,24 7189,1,@6904 7199,0,@10341 7208,0,0 7245,0,41 7311,0,0 7325,0,0 7396,0,0 7410,0,0 7512,0,@14532 7517,0,@14533 7522,1,@6850 7527,1,@6852 7565,0,0 7572,0,0 7579,0,3 7585,0,0 7625,0,0 7631,0,1 7647,0,1 7654,0,@14539 7665,0,41 7670,0,@14542 7679,1,@6853 7725,0,@7104 7744,1,@6952 7833,0,26 7847,0,0 7884,0,41 7950,0,0 7964,0,0 8035,0,0 8049,0,0 8151,0,@14532 8156,0,@14533 8161,1,@6850 8166,1,@6852 8204,0,0 8211,0,0 8218,0,3 8224,0,0 8264,0,0 8270,0,1 8286,0,1 8293,0,@14539 8304,0,41 8309,0,@14542 8318,1,@6853 8329,0,0 8336,1,@6866 8358,0,0 8365,1,@6866 8441,0,@7105 8528,0,1 8533,1,@6900 8570,0,@7106 8596,0,@14792 8603,0,0 8608,1,@7107 8794,0,28 8808,0,0 6994:D3,344|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff010f852a0100008b3c248b1789d68d14550100000083fa037e7a89ff8d34750100000083fe037f0e8d642408b8a01e66b18b5d04ff2389ff0fb67f058d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff83ff037507bf09000000eb05bf010000000bd783ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24088b57048b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff12588d642408c38d6424088b07c3f4000000|@14759,1,@2178|73,0,@9847 96,0,@9476 106,0,@9544 113,0,1 134,0,@9544 145,0,0 156,0,1 163,0,0 170,0,0 177,0,0 182,0,@10423 215,0,9999 232,0,4 239,0,0 6995:D3,1864|3b650c7305ff552ccd0950538b7424188b5424148b4c24108b5c240c8b7d008d7fe03b7d087305ff5528cd4e897d00c747fc070000008b442404894718895f14894f1089570cc7470844de67b1897704c707bc0d39b1578b7c241c68a4e167b157b8b8e167b18b5c240ce87107ffff8b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0083ff2f7505e95903000089feba600639b181c2a70000008d54b2fcffe2e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083ff317507be03000000eb05be01000000eb28be03000000eb21be03000000eb1abe03000000eb13be03000000eb0cbe03000000eb05be0300000083fe037505e9e100000083ff237502eb0c83ff0d7502eb0583ff317505e9c900000083ff417505e9bf00000083ff437505e9b500000083ff3f7505e9ab00000083ff4d7505e9a100000083ff450f849800000083ff277505e98c00000083ff0f7505e98200000081ff810000007502eb7883ff337502eb7183ff55746c8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b742414c706a84e66b1897e04b801000000c21400eb008b45008d40f43b45087303ff5528894500c740fc020000008b7c2404897804c700105639b16a016a018b7c24248b7424208b54241c8b4c241857ff7424146844de67b1565251ff7424208d5c241ce8a04b0000ff3424ff7424088b7c242c8b7f088b74242c8b76248b3f8b3683fe53740489f7eb0083ff2d0f85bb0200008b7c242c8b7f088b74242c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64241c8b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e83781feffe8be85feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44242ce81086feff6a016a018b7c24348b7424308b54242c8b4c242857ff7424246844de67b15652518b4424348d5c2418e8ae6a0000ff34248b7424088b54240c89d7ff3289ff8b4f0889ff8b47108b56048b5e0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048b142489178d6424048b55008d52e83b55087305ff5528cdc0895500c742fc05000000897210897a0c8b34248972088d6424108b34248972048d642404c7021b0000008b7424288916897e04b80100000083c414c214008b7424308b7c2404893e8b3c24897e048d642408b80100000083c414c21400f40000|@14867,1,@2256|73,0,@14793 82,0,@6996 92,0,@14820 98,0,@14821 107,1,@6896 151,0,@6995 717,0,1 724,0,0 731,0,1 738,0,1 745,0,1 752,0,1 759,0,1 766,0,1 875,0,64 988,0,@10341 996,0,0 1038,0,@7022 1068,0,@14793 1084,1,@7023 1154,0,41 1221,0,0 1235,0,0 1318,0,0 1332,0,0 1447,0,@14532 1452,0,@14533 1457,1,@6850 1462,1,@6852 1500,0,0 1507,0,0 1514,0,3 1520,0,0 1566,0,0 1572,0,1 1592,0,1 1599,0,@14539 1610,0,41 1615,0,@14542 1624,1,@6853 1654,0,@14793 1670,1,@7030 1806,0,13 1820,0,0 1851,0,0 6996:D3,11676|8d7c24a43b7d0c7305ff5530cd0d5250538b7c24088b7f048b7f088b7424088b76048b76248b3f8b3683fe53740489f7eb008b7424088b7604ff76188b74240c8b76048b56288b74240c8b76048b763cff32ff3683ff450f853c0300008b7c24148b7f048b7f088b7424148b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424148b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8d07dfeffe85782feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24148b4704e8aa82feff8b7c24148b7f18ff77048b7c24188b7f18ff77086a016a016a01b80100000089e3e8e4b9feff8d6424045e5f8b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b7c2404897a04c7026c3b39b18b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000598d642404894f088957048937578b45008d40f43b45087303ff5528894500c740fc020000008b7c2414897804c700b43b39b18b7c24188b7f048b7424188b760c8b5424188b52108b4c24188b4914575652518b5c2410e8f62a000089c7578b7c241c8b5f04b835000000e842d9feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c707644439b1578b7c24208b7f04ff77188b7c24248b7f048b77288b7c24248b7f048b7f3cff36ff376a016a016a01e99e27000083ff410f85250500008b7c24148b7f048b7f088b7424148b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424148b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88b7afeffe8127ffeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24148b4704e8657ffeff8b7c24148b7f048b77148b7c24148b7f048b7f38ff36ff378b7c241c8b7f048b7f088b74241c8b76048b76248b3f8b3683fe53740489f7eb0083ff5d0f85700200008b7c241c8b7f048b7f088b74241c8b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64241c8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e84078feffe8c77cfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c241c8b4704e81a7dfeff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424088977105e89770c8b7424088977085e8d6424088977045e89378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702370000005e8916897e04b80100000083c408c38d6424088b45008d40f43b45087303ff5528894500c740fc020000008b7c24148b7f04897804c7009c4439b16a016a016a0189e3e8322dffffff7424048b7c24248b7f04ff77188b7c24288b7f048b77288b7c24288b7f048b7f3cff36ff376a016a016a01e94820000083ff430f85940a00008b7c24148b7f048b7f088b7424148b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424148b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e85d75feffe8e479feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24148b4704e8377afeff8b7c24148b7f048b77148b7c24148b7f048b7f38ff36ff378b7c241c8b7f048b7f088b74241c8b76048b76248b3f8b3683fe53740489f7eb0083ff5f0f85700200008b7c241c8b7f048b7f088b74241c8b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64241c8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81273feffe89977feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c241c8b4704e8ec77feff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424088977105e89770c8b7424088977085e8d6424088977045e89378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702370000005e8916897e04b80100000083c408c38d6424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707c44639b1576a016a018b7c24208b5f088b7c24208b47188b7c24208b7f048b7424208b760c8b5424208b52108b4c24208b4914545756525189da8b5c241cff12ff34248b7c24248b7f048b7f088b7424248b76048b76248b3f8b3683fe53740489f7eb006a016a0183ff610f855c0200008b7c242c8b7f048b7f088b74242c8b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64242c8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e80c70feffe89374feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c242c8b4704e8e674feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c707044739b1578b7c24308b7f04ff77188b7c24348b7f048b77288b7c24348b7f048b7f3cff36ff376a016a016a01e99716000083ff170f855c0200008b7c242c8b7f048b7f088b74242c8b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64242c8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8a76dfeffe82e72feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c242c8b4704e88172feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742428897704c7073c4739b1578b7c24308b7f04ff77188b7c24348b7f048b77288b7c24348b7f048b7f3cff36ff376a016a016a01e91f1200008b7c242c8b7f048b77148b7c242c8b7f048b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2418894f1089570c8b54241c8957088977048b74242089378b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b542408895604c7062d000000893424897c2404e96a11000083ff3f0f858c0200008b7c24148b7f048b7f088b7424148b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424148b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8c06afeffe8476ffeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24148b4704e89a6ffeff8b7c24148b7f048b7f088b7424148b76048b76248b3f8b3683fe53740489f7eb0083ff5b74538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707744739b1578b7c24188b7f04ff77188b7c241c8b7f048b77288b7c241c8b7f048b7f3cff36ff376a016a016a01e98d0d0000bf01000000e9bc0c000083ff4d7507bf03000000eb05bf01000000578b3c2483ff030f850b0200008b7c24188b7f048b7f088b7424188b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424188b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81668feffe89d6cfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24188b4704e8f06cfeffeb008b7c24188b7f048b7f088b7424188b76048b76248b3f8b3683fe53740489f7eb00578b7c241c8b7f048b4f148b7c241c8b7f04ff77188b7c24208b7f048b77288b7c24208b7f048b7f388b5424208b52048b523c8b36ff318b12ff378b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008957108b142489570c8977088b7424048977048b7424088937578b7c2410bebc0d39b181c6c71800008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e968030000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e94f030000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e97d070000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e974070000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e98b070000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9720700009090908b7c241089fe83ff2375068d642414eb1e89f689f783fe0d75068d642414eb0f89ff83ff310f853a0100008d6424148b7c24188b7f188b078b7c24188b7f188b5f048b7c24188b7f188b7f086a016a018b7424208b76045756ff74242468e4db67b1ff7424185483042414e8991e00005a5f8d642404becc5366b18b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408933be94d967b18b4d008d49f83b4d087305ff5528cdcc894d00c741fc010000408931be40df67b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610897e0c895e08894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7021d0000008b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000005b895f10894f0c59894f088977045e89375e8d6424088916897e04b801000000c38b7c242c8b5f04b831000000e8d3f9feff8b742424c706a84e66b15f897e04b80100000083c42cc38d6424048b7c24288b5f04b86cdf67b1e8a320000089c28b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424148977105e89770c8b7424148977085e8977048b74241489378b7424188916897e04b80100000083c424c38d6424188b7c24148b7f048b7f088b7424148b76048b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424148b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff77288b7c240c8b7f04ff77388b7c24108b7f04ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f04ff77148b7c24048b7f048b571c8b7c24048b7f04ff77208b7c24088b7f04ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f048b57148b3c248b7f048b77188b3c248b7f048b4f288b3c248b7f048b7f388b1c248b5b048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e85661feffe8dd65feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24148b4704e83066feff6a016a018b7c241c8b5f04548b44241ce87721ffffff34248b7c24088b77048b570c8b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c240c894f1089570c8b5424108957088977048b742414893757bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b442408e87c7dfdff89c78b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b0424e81881fdff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c706010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70707000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d0cd5f9ffffff8b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c7020d000000893e8b75008d76f03b75087305ff5528cd04897500c746fc030000005f897e08895604c706050000008b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b0c24894f1089570c8977088b742404897704c707310000008b74241c893e5f8d642424897e04b801000000c38d6424048b7c24288b5f04b83ce067b1e8de1b000089c28b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424148977105e89770c8b7424148977085e8977048b74241489378b7424188916897e04b80100000083c424c38d6424048b7c24288b5f04b864e067b1e87f1b000089c28b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424148977105e89770c8b7424148977085e8977048b74241489378b7424188916897e04b80100000083c424c38d6424048b7c24288b5f04b89ce067b1e8201b000089c28b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424148977105e89770c8b7424148977085e8977048b74241489378b7424188916897e04b80100000083c424c38d6424048b7c24288b5f04b8c4e067b1e8c11a000089c28b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424148977105e89770c8b7424148977085e8977048b74241489378b7424188916897e04b80100000083c424c3578b7c24188b7f048b77148b7c24188b7f048b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2404894f1089570c8b5424088957088977048b74240c8937578b7c241c8b5f04b85b000000e874b9feffbfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8b542404895708897704c707230000008b742414893e5f8d642414897e04b80100000083c408c36a016a018b7c24388b5f088b7c24388b47188b7c24388b7f048b7424388b760c8b5424388b52108b4c24388b4914545756525189da8b5c2434ff12ff3424ff7424088b7c24408b7f0457b817000000bbfcd667b1e89bf4feff89c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e966ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c241483c4105f83c414e9e7fdffffff3424ff7424088b7c24348b5f04b85f000000e8a2b7feff8b74242c8b7c2404893e5f8d64240c897e04b80100000083c428c36a016a018b7c24508b5f088b7c24508b47188b7c24508b7f048b7424508b760c8b5424508b52108b4c24508b4914545756525189da8b5c2434ff12ff3424ff7424088b7c24588b7f0457b817000000bbfcd667b1e816f3feff89c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e966ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c24148b7c24108b55008d52f43b55087305ff5528cd80895500c742fc02000000897a048b7c2430893a8b7c24548b7f048b77148b7c24548b7f048b7f388b368b0f8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2440895f10894f0c8b4c2444894f088977048b7424488937becc5366b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76ec3b75087305ff5528cd86897500c746fc04000000897e0c894e08895604c7063300000089742428897c242c83c428e9bafdffff6a016a018b7c24508b5f088b7c24508b47188b7c24508b7f048b7424508b760c8b5424508b52108b4c24508b4914545756525189da8b5c2434ff12ff3424ff7424088b7c24588b7f0457b861000000bbfcd667b1e803f1feff89c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e966ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c24148b7c24108b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c243089388b7c24548b7f048b77148b7c24548b7f048b7f388b368b178b7d008d7fe83b7d087305ff5528cd45897d00c747fc050000008b4c2440894f1089570c8b5424448957088977048b742448893757e88918000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b1424895708897704c70715000000897c242c5f897c242c83c428e9bffbffff6a016a018b7c24448b7f048b7424448b76088b5424448b520c8b4c24448b49108b5c24448b5b148b4424448b4018ff74244057ff7424285652515350b8010000008d5c2420e8a3180000ff3424ff7424088b7c244c8b7f0457b817000000bbfcd667b1e8f9eefeff89c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e957ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c2414ff7424108b7c244c8b7f048b77148b7c244c8b7f048b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2438894f1089570c8b54243c8957088977048b742440893757bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b14248957108b54240489570c897708c7470403000000c7071f000000578b7c24548b5f04b85d000000e869b1feff8b74244c5f893e5f8d642404897e04b80100000083c44cc36a016a018b7c24408b5f088b7c24408b7f048b7424408b760c8b5424408b52108b4c24408b4914545756525189da8b44243c8b5c2434ff12ff3424ff7424088b7c24488b7f0457b861000000bbfcd667b1e8e3ecfeff89c783ff03753a8d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e045f893e897424083b650c7303ff552c83c408e969ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b57045f8b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c2414ff7424108b7c24488b7f048b77148b7c24488b7f048b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2434894f1089570c8b5424388957088977048b74243c8937578b7c244c8b5f04b81f000000e8acaffeff8b7c244c8b7f04683ce167b1578b442450bbfcd667b1e88dd3feff8b442430e8f816000089c7578b442408e88c17000089c7be010000008b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76e83b75087305ff5528cd84897500c746fc050000008956108b54240489560cc74608010000005a895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707270000008b742444893e5f8d642404897e04b80100000083c448c3f400|@14819,1,@2203|122,0,41 206,0,0 220,0,0 303,0,0 317,0,0 434,0,@14532 439,0,@14533 444,1,@6850 449,1,@6852 487,0,0 494,0,0 501,0,3 507,0,0 547,0,0 553,0,1 575,0,1 582,0,@14539 593,0,41 598,0,@14542 610,1,@6853 641,0,0 648,1,@6866 696,0,@6997 773,0,@6998 814,1,@6999 829,0,26 834,1,@6880 871,0,@7001 959,0,41 1043,0,0 1057,0,0 1140,0,0 1154,0,0 1271,0,@14532 1276,0,@14533 1281,1,@6850 1286,1,@6852 1324,0,0 1331,0,0 1338,0,3 1344,0,0 1384,0,0 1390,0,1 1412,0,1 1419,0,@14539 1430,0,41 1435,0,@14542 1447,1,@6853 1546,0,41 1630,0,0 1644,0,0 1727,0,0 1741,0,0 1858,0,@14532 1863,0,@14533 1868,1,@6850 1873,1,@6852 1911,0,0 1918,0,0 1925,0,3 1931,0,0 1971,0,0 1977,0,1 1999,0,1 2006,0,@14539 2017,0,41 2022,0,@14542 2034,1,@6853 2122,0,27 2133,0,0 2181,0,@7002 2194,1,@6921 2285,0,41 2369,0,0 2383,0,0 2466,0,0 2480,0,0 2597,0,@14532 2602,0,@14533 2607,1,@6850 2612,1,@6852 2650,0,0 2657,0,0 2664,0,3 2670,0,0 2710,0,0 2716,0,1 2738,0,1 2745,0,@14539 2756,0,41 2761,0,@14542 2773,1,@6853 2872,0,41 2956,0,0 2970,0,0 3053,0,0 3067,0,0 3184,0,@14532 3189,0,@14533 3194,1,@6850 3199,1,@6852 3237,0,0 3244,0,0 3251,0,3 3257,0,0 3297,0,0 3303,0,1 3325,0,1 3332,0,@14539 3343,0,41 3348,0,@14542 3360,1,@6853 3448,0,27 3459,0,0 3504,0,@7003 3646,0,41 3730,0,0 3744,0,0 3827,0,0 3841,0,0 3958,0,@14532 3963,0,@14533 3968,1,@6850 3973,1,@6852 4011,0,0 4018,0,0 4025,0,3 4031,0,0 4071,0,0 4077,0,1 4099,0,1 4106,0,@14539 4117,0,41 4122,0,@14542 4134,1,@6853 4171,0,@7004 4259,0,41 4343,0,0 4357,0,0 4440,0,0 4454,0,0 4571,0,@14532 4576,0,@14533 4581,1,@6850 4586,1,@6852 4624,0,0 4631,0,0 4638,0,3 4644,0,0 4684,0,0 4690,0,1 4712,0,1 4719,0,@14539 4730,0,41 4735,0,@14542 4747,1,@6853 4784,0,@7005 4948,0,22 5002,0,41 5086,0,0 5100,0,0 5183,0,0 5197,0,0 5314,0,@14532 5319,0,@14533 5324,1,@6850 5329,1,@6852 5367,0,0 5374,0,0 5381,0,3 5387,0,0 5427,0,0 5433,0,1 5455,0,1 5462,0,@14539 5473,0,41 5478,0,@14542 5490,1,@6853 5565,0,@7006 5616,0,0 5631,0,1 5638,0,0 5684,0,41 5768,0,0 5782,0,0 5865,0,0 5879,0,0 5996,0,@14532 6001,0,@14533 6006,1,@6850 6011,1,@6852 6049,0,0 6056,0,0 6063,0,3 6069,0,0 6109,0,0 6115,0,1 6137,0,1 6144,0,@14539 6155,0,41 6160,0,@14542 6172,1,@6853 6327,0,@6996 6981,0,@14778 6995,1,@7007 7006,0,@10423 7039,0,@14765 7072,0,@14798 7175,0,14 7239,0,0 7252,0,24 7257,1,@6904 7267,0,@10341 7276,0,0 7296,0,@14800 7301,1,@7010 7371,0,0 7412,0,41 7496,0,0 7510,0,0 7593,0,0 7607,0,0 7724,0,@14532 7729,0,@14533 7734,1,@6850 7739,1,@6852 7777,0,0 7784,0,0 7791,0,3 7797,0,0 7837,0,0 7843,0,1 7865,0,1 7872,0,@14539 7883,0,41 7888,0,@14542 7900,1,@6853 7921,1,@6931 7992,0,@10423 8025,0,9999 8070,0,6 8080,1,@6619 8149,0,0 8160,1,@6623 8195,0,0 8204,0,0 8267,0,1 8306,0,3 8311,0,@10423 8344,0,9999 8389,0,6 8430,0,2 8481,0,24 8500,0,0 8517,0,@14808 8522,1,@7010 8592,0,0 8612,0,@14810 8617,1,@7010 8687,0,0 8707,0,@14813 8712,1,@7010 8782,0,0 8802,0,@14815 8807,1,@7010 8877,0,0 8971,0,45 8976,1,@6880 8981,0,@10423 9057,0,17 9076,0,0 9159,0,11 9164,0,@14750 9169,1,@6906 9276,0,0 9437,0,47 9442,1,@6880 9465,0,0 9548,0,11 9553,0,@14750 9558,1,@6906 9665,0,0 9915,0,@10423 9984,0,25 10079,0,48 10084,0,@14750 10089,1,@6906 10196,0,0 10447,1,@7015 10490,0,10 10572,0,0 10581,1,@7016 10601,0,11 10606,0,@14750 10611,1,@6906 10718,0,0 10934,0,@10423 11011,0,1 11017,0,15 11030,0,46 11035,1,@6880 11055,0,0 11135,0,48 11140,0,@14750 11145,1,@6906 11252,0,0 11475,0,15 11480,1,@6880 11492,0,@14818 11502,0,@14750 11507,1,@6896 11516,1,@7019 11528,1,@7020 11535,0,0 11606,0,0 11647,0,19 11666,0,0 6997:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2179| 6998:D3,28|3b650c7305ff552ccd0583f8357506b803000000c38b5204ff22f400|@14673,1,@2180|16,0,1 6999:D3,1452|3b650c7305ff552ccd0950538b7c24188b7f088b7424188b76248b3f8b3683fe53740489f7eb0083ff610f852a0200008b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424088b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8ee4ffeffe87554feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e8c754feffff7424048b4424048b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce9aafdffff8d64240c8b7c24188b7f088b7424188b76248b3f8b3683fe53740489f7eb0089febae43b39b181c2880200008d54b2fcffe2e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083ff7b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff030f85970000008b45008d40f43b45087303ff5528894500c740fc020000008b7c2404897804c700a44139b16a016a018b54241c8b5c24208b7c24188b7424146a03ff74240c54830424085756ff12ff34248b7c24248b7424208b54241c8b4c2418575652518b4424208b5c241ce88cfaffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642414c210008d642408b801000000c21000f4|@14794,1,@2182|71,0,41 138,0,0 152,0,0 235,0,0 249,0,0 364,0,@14532 369,0,@14533 374,1,@6850 379,1,@6852 417,0,0 424,0,0 431,0,3 437,0,0 483,0,0 489,0,1 509,0,1 516,0,@14539 527,0,41 532,0,@14542 541,1,@6853 632,0,@6999 1198,0,1 1205,0,0 1212,0,1 1219,0,1 1226,0,1 1233,0,1 1240,0,1 1247,0,1 1254,0,1 1261,0,1 1268,0,1 1275,0,1 1321,0,@7000 1444,0,0 7000:D3,684|3b650c7305ff552ccd0589c7bea44139b181c61d0000008d74befcffe6e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f87b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb0a83f86174058b5204ff22b803000000c3f4|@14673,1,@2181|13,0,@7000 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 656,0,1 678,0,1 7001:D3,36|3b650c7305ff552ccd0583f81f7502eb0a83f86174058b5204ff22b803000000c3f40000|@14673,1,@2183|28,0,1 7002:D3,532|3b650c7305ff552ccd0d5052538b7c24088b3f8d1c7d0100000083fb01750abf4cd467b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87af01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf4cd467b1b90f0000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab85cd467b1e98d00000089de83c63289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be5cd467b1b9330000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e84c47feffe8cb8dfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c707030000008b7c2404897c240883c408ff228d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4000000|@14795,1,@2184|32,0,@14736 52,0,4 73,0,16777215 131,0,0 140,0,@14736 145,0,7 196,0,@14737 216,0,4 237,0,16777215 295,0,0 321,0,@14737 326,0,25 347,0,@14533 352,1,@6850 357,1,@6875 395,0,0 402,0,0 409,0,3 415,0,0 455,0,0 461,0,1 483,0,1 505,0,@9465 519,0,@9465 7003:D3,44|3b650c7305ff552ccd0583f8177502eb0c83f8617502eb0583f85f7506b803000000c38b5204ff22f4000000|@14673,1,@2185|30,0,1 7004:D3,36|3b650c7305ff552ccd0583f8617502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2186|28,0,1 7005:D3,36|3b650c7305ff552ccd0583f8177502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2187|28,0,1 7006:D3,36|3b650c7305ff552ccd0583f85b7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2188|28,0,1 7007:D3,652|3b650c7305ff552ccd09536a016a018b4424188b5c241c8b7c2420575483042404e82ab6feffff3424ff7424088b5424108b442404ff1289c7f7c701000000752a8b3f8b7f048b1789d683fa037507bf03000000eb1389f783ff017507bf03000000eb05bf01000000eb05bf0100000083ff030f85f00100008b7c241c83ff030f84dd0100008b7c24048b378d0c750100000083f9017507bf080e66b1eb7889ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f878c01000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642042889ff8d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab8d4de67b1e98d00000089de83c65c89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87ee00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708bed4de67b1b95d0000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8da43feffe8c550ffff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700010000008b7c24248b5730ff1283c404eb268d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642408eb048d6424088b7424108b3c24893e8d6424045f897e04b80100000083c404c21800f40000|@14797,1,@2189|34,1,@6890 80,0,1 94,0,1 101,0,0 108,0,0 153,0,@9545 170,0,4 191,0,16777215 249,0,0 294,0,@14796 314,0,4 335,0,16777215 393,0,0 419,0,@14796 424,0,46 445,0,@14533 450,1,@6850 455,1,@6946 493,0,0 500,0,0 507,0,3 513,0,0 559,0,0 565,0,0 588,0,@9465 602,0,@9465 639,0,0 7008:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2190|11,0,0 7009:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c7401074df67b189580c897008897804c70025000000c3f400|@14806,1,@2191|13,0,@10423 74,0,@14801 89,0,18 7010:D3,588|3b650c7305ff552ccd0950538b3c248b7f04ff378b7c24048b77148b7c2404ff77188b7c24088b57288b7c24088b7f388b4c24088b493c8b128b368b198b0f8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8957088977048b342489378d642404578b7c24088b7f088b7424088b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424088b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8c540feffe84c45feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442408e8a845feff8b54240c8b4424045b8d64240cff22f4|@14807,1,@2192|134,0,41 200,0,0 214,0,0 285,0,0 299,0,0 401,0,@14532 406,0,@14533 411,1,@6850 416,1,@6852 454,0,0 461,0,0 468,0,3 474,0,0 514,0,0 520,0,1 536,0,1 543,0,@14539 554,0,41 559,0,@14542 568,1,@6853 7011:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c7401044e067b189580c897008897804c70025000000c3f400|@14806,1,@2193|13,0,@10423 74,0,@14809 89,0,18 7012:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c740106ce067b189580c897008897804c70025000000c3f400|@14806,1,@2194|13,0,@10423 74,0,@14811 89,0,18 7013:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c74010a4e067b189580c897008897804c70025000000c3f400|@14806,1,@2195|13,0,@10423 74,0,@14814 89,0,18 7014:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c74010cce067b189580c897008897804c70025000000c3f400|@14806,1,@2196|13,0,@10423 74,0,@14816 89,0,18 7015:D3,140|3b650c7305ff552ccd01a80175748b308b4004bf010000008b55008d52f83b55087305ff5528cdc1895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@2197|20,0,0 131,0,0 7016:D3,384|3b650c7305ff552ccd09538b7c24248b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7004c5139b16a016a018b5c242854e830fefeffff3424ff7424088b54242c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff128b5c2430b823000000e80b9afeff8b7424348b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c5139b1576a016a018b5c24348b4424248b7c243c8b7424308b54242c8b4c2428545756525189da8b5c241cff12ff34248b7c24088b7424108b368b5424108b4a088b5424108b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52e83b55087305ff5528cdc0895500c742fc05000000897a10598d64240c894a0c59894a088972045e8d64240889325e8916897e04b801000000c22000f40000|@14817,1,@2200|46,0,@7017 60,1,@6931 120,0,17 125,1,@6880 164,0,@7018 284,0,@10423 374,0,0 7017:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2198|16,0,1 7018:D3,36|3b650c7305ff552ccd0583f85d7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2199|28,0,1 7019:D3,140|3b650c7305ff552ccd01a80175748b308b4004bf010000008b55008d52f83b55087305ff5528cdc1895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@2201|20,0,0 131,0,0 7020:D3,140|3b650c7305ff552ccd01a80175748b308b4004bf010000008b55008d52f83b55087305ff5528cdc1895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@2202|20,0,0 131,0,0 7021:D3,776|3b650c7305ff552ccd0183f82f7505e9eb02000089c7bef45239b181c6270000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb7683f8237502eb0c83f80d7502eb0583f8317502eb6183f8417502eb5a83f8437502eb5383f83f7502eb4c83f84d7502eb4583f845744083f8277506b803000000c383f80f7506b803000000c381f8810000007506b803000000c383f8337506b803000000c383f8557506b803000000c3b801000000c3b803000000c3f40000|@14673,1,@2204|23,0,@7021 589,0,1 596,0,0 603,0,1 610,0,1 617,0,1 624,0,1 631,0,1 638,0,1 709,0,1 720,0,1 727,0,64 734,0,1 745,0,1 756,0,1 762,0,0 768,0,1 7022:D3,28|3b650c7305ff552ccd0583f82d7506b803000000c38b5204ff22f400|@14673,1,@2205|16,0,1 7023:D3,884|3b650c7305ff552ccd0950538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707c85939b1576a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8500300008d642404ff3424ff7424088b7c24388b7f088b7424388b76248b3f8b3683fe53740489f7eb0083ff510f85bb0200008b7c24388b7f088b7424388b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64241c8b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82b35feffe8b239feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442438e8043afeff6a016a01ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424408d5c2420e842fdffff8d642404ff34248b7c24088b54240c8b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52ec3b55087305ff5528cd80895500c742fc04000000897a0c8b34248972088d6424108b34248972048d642404c7022b0000008b74240c8916897e04b80100000083c414c21c008b7424148b7c2404893e8b3c24897e048d642408b80100000083c414c21c00f40000|@14866,1,@2255|45,0,@7024 100,1,@7025 174,0,41 241,0,0 255,0,0 338,0,0 352,0,0 467,0,@14532 472,0,@14533 477,1,@6850 482,1,@6852 520,0,0 527,0,0 534,0,3 540,0,0 586,0,0 592,0,1 612,0,1 619,0,@14539 630,0,41 635,0,@14542 644,1,@6853 826,0,21 840,0,0 871,0,0 7024:D3,28|3b650c7305ff552ccd0583f8517506b803000000c38b5204ff22f400|@14673,1,@2206|16,0,1 7025:D3,884|3b650c7305ff552ccd0950538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707805d39b1576a016a01ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b4424288d5c2420e8500300008d642404ff3424ff7424088b7c24388b7f088b7424388b76248b3f8b3683fe53740489f7eb0083ff070f85bb0200008b7c24388b7f088b7424388b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64241c8b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87331feffe8fa35feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442438e84c36feff6a016a01ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff34245756525153508b4424408d5c2420e842fdffff8d642404ff34248b7c24088b54240c8b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52ec3b55087305ff5528cd80895500c742fc04000000897a0c8b34248972088d6424108b34248972048d642404c702030000008b74240c8916897e04b80100000083c414c21c008b7424148b7c2404893e8b3c24897e048d642408b80100000083c414c21c00f40000|@14865,1,@2254|45,0,@7026 100,1,@7027 174,0,41 241,0,0 255,0,0 338,0,0 352,0,0 467,0,@14532 472,0,@14533 477,1,@6850 482,1,@6852 520,0,0 527,0,0 534,0,3 540,0,0 586,0,0 592,0,1 612,0,1 619,0,@14539 630,0,41 635,0,@14542 644,1,@6853 826,0,1 840,0,0 871,0,0 7026:D3,28|3b650c7305ff552ccd0583f8077506b803000000c38b5204ff22f400|@14673,1,@2207|16,0,1 7027:D3,5828|3b650c7305ff552ccd0950538b7c24248b7f088b7424248b76248b3f8b3683fe53740489f7eb008b742424ff76188b7424288b56288b7424288b763cff32ff36beb05d39b181c6510000008d74befcffe6e91b020000909090e919020000909090e917020000909090e915020000909090e913020000909090e911020000909090e90f020000909090e910020000909090e973050000909090e971050000909090e96f050000909090e96d050000909090e96b050000909090e969050000909090e967050000909090e965050000909090e963050000909090e961050000909090e95f050000909090e960050000909090e943080000909090e941080000909090e93f080000909090e93d080000909090e93b080000909090e93c080000909090e9fa0b0000909090e9f80b0000909090e9f60b0000909090e9f40b0000909090e9f20b0000909090e9f00b0000909090e9ee0b0000909090e9ec0b0000909090e9ea0b0000909090e9e80b0000909090e9e60b0000909090e9e40b0000909090e9e20b0000909090e9e00b0000909090e9de0b0000909090e9dc0b0000909090e9dd0b0000909090e96c0e0000909090e96a0e0000909090e9680e0000909090e9660e0000909090e9640e0000909090e9620e0000909090e9600e0000909090e95e0e0000909090e95c0e0000909090e95a0e0000909090e9580e0000909090e9560e0000909090e9540e0000909090e9520e0000909090e9500e0000909090e94e0e0000909090e94c0e0000909090e94a0e0000909090e9480e0000909090e9460e0000909090e9440e0000909090e9450e0000909090e997130000909090e995130000909090e9931300009090908d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce96f0300008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b42bfeffe83b30feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e88d30feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707887439b1576a016a018b5c24348b4424388b7c243c8b7424308b54242c8b4c2428545756525189da8b5c241cff12ff34248b5c2440b84b000000e8a587feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707687739b1576a016a018b7c244c8b7424488b5424448b4c24408b5c243c8b4424385756525153508b4424208d5c2418e8a41400005a5b8d6424048b73048b4b0c8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc050000008b442410894710894f0c8b4c2414894f088977048b7424188937becc5366b18b4d008d49f83b4d087305ff5528cdcc894d00c741fc0100004089318b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e10897e0c894e088956048b142489168d64241c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702070000005e8d6424048916897e04b801000000c21c008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce9ef0200008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e80428feffe88b2cfeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e8dd2cfeff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707f0cd39b1576a016a018b7c243c8b7424388b5424348b4c24308b5c242c8b4424285756525153508b4424208d5c2418e854110000595f8d6424048b77048b570c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b1c24895f108d64240489570c8b14248957088d6424048977048b342489378d642404bacc5366b18b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc2895500c742fc04000000897a0c894a08897204c702170000005e8d6424048916897e04b801000000c21c008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce9ca0300008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8f824feffe87f29feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e8d129feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70720ce39b1576a016a018b5c24348b4424388b7c243c8b7424308b54242c8b4c2428545756525189da8b5c241cff12ff34248b5c2440b86f000000e8e980feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c7072cd139b1576a016a018b5c24448b4424488b7c244c8b7424408b54243c8b4c2438545756525189da8b5c241cff12ff34248b5c2450b81d000000e88980feff6a016a018b5c24508b4424548b7c24588b74244c8b5424488b4c2444545756525189da8b5c244cff125a5f8b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2420895f10894f0c8b4c2424894f088977048b7424288937be010000008b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408933be010000008b4d008d49f83b4d087305ff5528cdcc894d00c741fc0100004089318b75008d76e43b75087305ff5528cd8e897500c746fc06000000895e14894e10897e0c8b0c24894e088d6424108956048b142489168d64241c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702090000005e8d6424048916897e04b801000000c21c008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce99b0200008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8cf20feffe85625feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e8a825feff6a016a018b5c24308b4424348b7c24388b74242c8b5424288b4c2424545756525189da8b5c242cff125e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b1c24895f108d642404894f0c8b0c24894f088d6424048957048b142489178d6424048b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a08897204c7022f0000005e8d6424048916897e04b801000000c21c008d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ceb048d64240ce95e0500008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b71dfeffe83e22feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e89022feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70738d439b1576a016a018b5c24348b4424388b7c243c8b7424308b54242c8b4c2428545756525189da8b5c241cff12ff3424ff7424088b7c24448b7f088b7424448b76248b3f8b3683fe53740489f7eb0083ff1b0f85c20200008d6424048b7c24408b7f088b7424408b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424248b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff77288b7c2428ff77388b7c242cff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c241cff77148b7c24208b571c8b7c2420ff77208b7c2424ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8481bfeffe8cf1ffeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442440e82120feff6a016a018b5c24408b4424448b7c24488b74243c8b5424388b4c2434545756525189da8b5c243cff125e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2410895f10894f0c8b4c2414894f088957048b5424188917ba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089118b55008d52e83b55087305ff5528cdc2895500c742fc05000000894a10897a0c8b0c24894a088d642404897204c7023b0000008b7424188916897e04b80100000083c420c21c008b5c2444b81b000000e866b0feff8b7424208b7c2404893e8b3c24897e048d642408b80100000083c420c21c008d64240ceb048d64240ceb048d64240c8b55008d52f43b55087303ff5528895500c742fc020000008b7c2404897a04c70268d439b18b7c24208b078b7c24208b5f048b7c24208b7f086a016a018b7424148b4c242c5756684ce767b168e4db67b152548304241451e83e4b00005e5a8b45008d40f43b45087305ff5528cd44894500c740fc020000008b7c2404897804c7009cd739b1ff7424208b4c24048b5c2428895c241c89c38b0424894c242089542424897424288b7c240c897c241883c418e9744200008d64240cf4000000|@14864,1,@2253|65,0,@7027 693,0,41 760,0,0 774,0,0 857,0,0 871,0,0 986,0,@14532 991,0,@14533 996,1,@6850 1001,1,@6852 1039,0,0 1046,0,0 1053,0,3 1059,0,0 1105,0,0 1111,0,1 1131,0,1 1138,0,@14539 1149,0,41 1154,0,@14542 1163,1,@6853 1200,0,@7028 1254,0,37 1259,1,@6880 1296,0,@7029 1344,1,@7030 1413,0,@10423 1523,0,3 1538,0,0 1637,0,41 1704,0,0 1718,0,0 1801,0,0 1815,0,0 1930,0,@14532 1935,0,@14533 1940,1,@6850 1945,1,@6852 1983,0,0 1990,0,0 1997,0,3 2003,0,0 2049,0,0 2055,0,1 2075,0,1 2082,0,@14539 2093,0,41 2098,0,@14542 2107,1,@6853 2144,0,@7066 2192,1,@7030 2270,0,@10423 2339,0,11 2354,0,0 2417,0,41 2484,0,0 2498,0,0 2581,0,0 2595,0,0 2710,0,@14532 2715,0,@14533 2720,1,@6850 2725,1,@6852 2763,0,0 2770,0,0 2777,0,3 2783,0,0 2829,0,0 2835,0,1 2855,0,1 2862,0,@14539 2873,0,41 2878,0,@14542 2887,1,@6853 2924,0,@7067 2978,0,55 2983,1,@6880 3020,0,@7068 3074,0,14 3079,1,@6880 3185,0,0 3218,0,0 3338,0,4 3353,0,0 3482,0,41 3549,0,0 3563,0,0 3646,0,0 3660,0,0 3775,0,@14532 3780,0,@14533 3785,1,@6850 3790,1,@6852 3828,0,0 3835,0,0 3842,0,3 3848,0,0 3894,0,0 3900,0,1 3920,0,1 3927,0,@14539 3938,0,41 3943,0,@14542 3952,1,@6853 4100,0,23 4115,0,0 4274,0,41 4341,0,0 4355,0,0 4438,0,0 4452,0,0 4567,0,@14532 4572,0,@14533 4577,1,@6850 4582,1,@6852 4620,0,0 4627,0,0 4634,0,3 4640,0,0 4686,0,0 4692,0,1 4712,0,1 4719,0,@14539 4730,0,41 4735,0,@14542 4744,1,@6853 4781,0,@7069 4897,0,41 4964,0,0 4978,0,0 5061,0,0 5075,0,0 5190,0,@14532 5195,0,@14533 5200,1,@6850 5205,1,@6852 5243,0,0 5250,0,0 5257,0,3 5263,0,0 5309,0,0 5315,0,1 5335,0,1 5342,0,@14539 5353,0,41 5358,0,@14542 5367,1,@6853 5473,0,0 5552,0,29 5566,0,0 5581,0,13 5586,1,@6904 5611,0,0 5670,0,@7070 5709,0,@14863 5714,0,@14778 5726,1,@7056 5767,0,@7072 5816,1,@7047 7028:D3,716|3b650c7305ff552ccd0583f84d7505e9b002000083f8417505e9a602000083f83f7505e99c02000083f8437505e99202000089c7be887439b181c6450000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb1d83f80d7502eb1683f831741183f8797502eb0a83f84b74058b5204ff22b803000000c3f400|@14673,1,@2208|53,0,@7028 619,0,1 626,0,0 633,0,1 640,0,1 647,0,1 654,0,1 661,0,1 668,0,1 709,0,1 7029:D3,28|3b650c7305ff552ccd0583f8617506b803000000c38b5204ff22f400|@14673,1,@2209|16,0,1 7030:D3,2292|3b650c7305ff552ccd0950538b7c242068146367b157b8c0e167b18b5c240ce88496feff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707888339b16a016a018b4424248b5c24288b74242857548304240456e8bb0b0000ff3424ff7424088b7c24308b7f088b7424308b76248b3f8b3683fe53740489f7eb0083ff710f85f60100008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424188b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8da13feffe86118feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e8b318feffe9250200008b5c2430b8742767b1e82c76feff8b7c24308b7f088b7424308b76248b3f8b3683fe53740489f7eb0083ff230f85f30100008b7c24308b7f088b7424308b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424188b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b211feffe83916feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442430e88b16feffeb008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707c0cd39b1576a016a018b5c24348b4424388b7c243c8b7424308b54242c8b4c2428545756525189da8b5c241cff125a5f8d6424048b342489f1ff3689c989ceff710889f6ff76108b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b1c24895f10894f0c8b4c2404894f088977048b7424088937be902d66b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408931be902d66b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc010000408933be010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e43b75087305ff5528cd8f897500c746fc06000000894614897e10895e0c894e088b4c2410894e048916568b7424408b76088b5424408b52248b368b1283fa53740489d6eb006a016a0183fe7d0f85880200008b7c24488b7f088b7424488b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424308b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8630efeffe8ea12feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442448e83c13feff6a016a018b7c24508b74244c8b5424488b4c24448b5c24408b44243c5756525153508b44244c8d5c2418e8d9f7ffff5a5f8b75008d76f43b75087305ff5528cd84897500c746fc020000008956048b54240889168b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c240c895f10894f0c8b4c2410894f088957048b5424148917893424897c2404eb2e8b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b5424088916893424897c24048b7c244868fce667b1578b442434bbfcd667b1e8d38dfeff8b7424288b3c24893e8d6424045f897e04b80100000083c428c21800f40000|@14862,1,@2245|17,0,@13281 23,0,@14822 32,1,@6896 69,0,@7032 97,1,@7033 167,0,41 234,0,0 248,0,0 331,0,0 345,0,0 460,0,@14532 465,0,@14533 470,1,@6850 475,1,@6852 513,0,0 520,0,0 527,0,3 533,0,0 579,0,0 585,0,1 605,0,1 612,0,@14539 623,0,41 628,0,@14542 637,1,@6853 651,0,@12550 656,1,@6882 719,0,41 786,0,0 800,0,0 883,0,0 897,0,0 1012,0,@14532 1017,0,@14533 1022,1,@6850 1027,1,@6852 1065,0,0 1072,0,0 1079,0,3 1085,0,0 1131,0,0 1137,0,1 1157,0,1 1164,0,@14539 1175,0,41 1180,0,@14542 1189,1,@6853 1228,0,@7065 1357,0,@9922 1390,0,@9922 1423,0,0 1566,0,41 1633,0,0 1647,0,0 1730,0,0 1744,0,0 1859,0,@14532 1864,0,@14533 1869,1,@6850 1874,1,@6852 1912,0,0 1919,0,0 1926,0,3 1932,0,0 1978,0,0 1984,0,1 2004,0,1 2011,0,@14539 2022,0,41 2027,0,@14542 2036,1,@6853 2220,0,0 2242,0,@14861 2252,0,@14750 2257,1,@6896 2279,0,0 7031:D3,724|3b650c7305ff552ccd0183f84d7506b803000000c383f8417506b803000000c383f83f7506b803000000c383f8437506b803000000c389c7bea08039b181c6490000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c383f80d7502eb1683f831741183f8797506b803000000c3b801000000c3b803000000c3f400|@14673,1,@2210|16,0,1 27,0,1 38,0,1 49,0,1 57,0,@7031 623,0,1 630,0,0 637,0,1 644,0,1 651,0,1 658,0,1 665,0,1 672,0,1 682,0,1 705,0,1 711,0,0 717,0,1 7032:D3,28|3b650c7305ff552ccd0583f8717506b803000000c38b5204ff22f400|@14673,1,@2211|16,0,1 7033:D3,280|3b650c7305ff552ccd0950538b54240c8b75008d76e83b75087305ff5528cd04897500c746fc050000008b7c2404897e10c7460cc8e167b18b0c2489cf894e08895604c706e48439b1568b5c241868d8e167b157b8c0e167b1e82a8afeff8b7c24188b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70618bf39b18b7c24088b0789ff8b5f0489ff8b7f086a016a018b54241857ff74240c68c0e167b168e4cf67b156548304241452e8e03a00005b5f8d6424046a016a018b44241c8b74241457548304240456ff742418ff74241868c8e167b1e8b52d00008b44241c68b4e667b1ff74240cbbfcd667b1e88e89feff8b7424188b3c24893e8d6424045f8d642408897e04b801000000c20c00f4|@14860,1,@2243|52,0,@14823 69,0,@7034 79,0,@14825 85,0,@14822 90,1,@6896 129,0,@7055 163,0,@14822 168,0,@14693 180,1,@7056 218,0,@14823 223,1,@7045 232,0,@14859 241,0,@14750 246,1,@6896 272,0,0 7034:D3,6924|3b650c7305ff552ccd0d5250538b7c24088b7f088b7f088b7424088b76088b76248b3f8b3683fe53740489f7eb00578b7c240c8b7f088b77148b7c240c8b7f08ff77188b7c24108b7f088b4f288b7c24108b7f088b7f388b5424108b52088b523cff318b36ff328b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b0c24894f1089570c8b5424048957088977048b7424088937578b7c2410bee48439b181c6b20000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9d3050000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e949050000909090e967050000909090e990080000909090e9970e0000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e94c150000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e925160000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e90b160000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9131800009090908b7c241c8b7f088b7f088b74241c8b76088b76248b3f8b3683fe53740489f7eb0083ff4d75068d642404eb1883ff0d75068d642404eb0d83ff310f85860300008d6424048b7c24188b7f088b7f088b7424188b76088b76248b3f8b3683fe53740489f7eb0083ff4d7507bf03000000eb05bf01000000578b3c2483ff030f850b0200008b7c241c8b7f088b7f088b74241c8b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64241c8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8b003feffe83708feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c241c8b4708e88a08feffeb008b7c241c8b7f108b078b7c241c8b7f108b5f048b7c241c8b7f108b7f086a016a018b7424248b76085756ff74242868e4cf67b1ff7424185483042414e827bdffff5a5f8d642404becc5366b18b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408933be94d967b18b4d008d49f83b4d087305ff5528cdcc894d00c741fc010000408931bed0e167b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610897e0c895e08894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7021d0000008b77048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000005b895f10894f0c59894f088977045e89378b7424048916897e04b80100000083c410c38b7c241c8b7f0868d8e167b157b8fcd667b18b5c2420e8a982feff8b742414c706a84e66b15f897e04b80100000083c41cc38b7c241c8b5f04b8e8e167b1e829bfffff89c78b742414893e5f897e04b80100000083c41cc38b7c241c8b5f04b8f0e167b1e803bfffff89c78b742414893e5f897e04b80100000083c41cc38d6424048b7c24188b7f088b7f088b7424188b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424188b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8ebfffdffe87204feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24188b4708e8c504feff8b7c24188b7f088b7f088b7424188b76088b76248b3f8b3683fe53740489f7eb0083ff5b7507bf01000000eb308b7c24188b7f0c8b7424188b76048b5424188b52108b4c24188b490857565251b8010000008b5c2424e8b212000089c7578b7c241c8b7f088b77148b7c241c8b7f088b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2404894f1089570c8b5424088957088977048b74240c8937578b7c24208b5f08b85b000000e8815bfeffbfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8b542404895708897704c707230000008b742418893e5f8d642410897e04b80100000083c410c38d6424048b7c24188b7f088b7f088b7424188b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424188b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8bafcfdffe84101feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24188b4708e89401feff8b7c24188b7f088b77148b7c24188b7f088b7f38ff36ff378b7c24208b7f088b7f088b7424208b76088b76248b3f8b3683fe53740489f7eb0083ff5d0f85730200008b7c24208b7f088b7f088b7424208b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424208b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e86ffafdffe8f6fefdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24208b4708e849fffdff8b7d008d7fe83b7d087303ff5528897d00c747fc050000008b7424088977105e89770c8b7424088977085e8d6424088977045e89378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702370000008b7424048916897e04b80100000083c410c38d6424088b45008d40f43b45087303ff5528894500c740fc020000008b7c24188b7f08897804c70044a439b16a016a016a0189e3e85eaffeff8d6424045e8d6424046a016a018b7c24208b7f088b5424208b520c8b4c24208b49048b5c24208b5b1057ff74242056525153b8010000008d5c2418e806120000ff3424ff7424088b7c24288b7f088b77148b7c24288b7f088b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2410894f1089570c8b5424148957088977048b7424188937578b7c242c8b5f08b85d000000e87955feffbfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b14248957108b54240489570c8977088b742408897704c7071f0000008b742424893e5f8d64241c897e04b80100000083c410c38d6424048b7c24188b7f088b7f088b7424188b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424188b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8abf6fdffe832fbfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24188b4708e885fbfdff8b7c24188b7f088b7f088b7424188b76088b76248b3f8b3683fe53740489f7eb0083ff5f75738b7c24188b7f088b7f148b7424188b76088b76388b3f8b168b75008d76e83b75087305ff5528cd84897500c746fc050000008b0c24894e1089560c8b542404895608897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70737000000e9e50300008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c70754ba39b16a016a018b7424208b560c8b7424208b46108b7424208b5e088b7424208b760457548304240456ff12ff34248b7c24248b7f088b7f088b7424248b76088b76248b3f8b3683fe53740489f7eb0083ff170f85f40200008b7c24248b7f088b7f088b7424248b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d6424248b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88ef3fdffe815f8fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c24248b4708e868f8fdff8b7c24248b7f0c8b7424248b76048b5424248b52108b4c24248b490857565251b8010000008b5c2430e8fa1f000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7c24208b7f088b7f148b5424208b52088b52388b3f8b128b4d008d49e83b4d087305ff5528cdc4894d00c741fc050000008b5c240889591089510c8b54240c8951088979048b7c24108939bfcc5366b18b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c7073300000083c408eb768b7c24248b7f088b7f148b7424248b76088b76388b3f8b168b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c240c894e1089560c8b542410895608897e048b7c2414893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7072d00000083c408578b7c241c8b7f088b77148b7c241c8b7f088b7f388b368b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2404894f1089570c8b5424088957088977048b74240c8937578b7c24208b5f08b85f000000e8204efeff8b7424188b7c2404893e5f8d642410897e04b80100000083c410c38b7c241c8b7f088b57148b7c241c8b7f088b77188b7c241c8b7f088b4f288b7c241c8b7f088b7f388b5c241c8b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b800e467b1bbd4c067b1e89bf0fdffe81a37feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c241c8b7f088b7f0c8b74241c8b76088b5630c70703000000ff128b7c241c8b5f04b830e467b1e89dadffff89c78b742414893e5f897e04b80100000083c41cc38b7c241c8b5f04b838e467b1e877adffff89c78b742414893e5f897e04b80100000083c41cc38b7c241c8b7f088b7f088b74241c8b76088b76248b1683fa53740bc70653000000e9e30100008b3783fe010f85c10100008d64241c8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff77288b7c240c8b7f08ff77388b7c24108b7f08ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c248b7f08ff77148b7c24048b7f088b571c8b7c24048b7f08ff77208b7c24088b7f08ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b7f088b57148b3c248b7f088b77188b3c248b7f088b4f288b3c248b7f088b7f388b1c248b5b088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e863eefdffe8eaf2fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f088b7f0c5e8b76088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b7c241c8b4708e83df3fdff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c7073d0000008b742414893e5f897e04b80100000083c41cc38b7c241c8b5f04b840e467b1e811abffff89c78b742414893e5f897e04b80100000083c41cc3f4000000|@14841,1,@2232|162,0,@7034 829,0,1 836,0,0 882,0,41 966,0,0 980,0,0 1063,0,0 1077,0,0 1194,0,@14532 1199,0,@14533 1204,1,@6850 1209,1,@6852 1247,0,0 1254,0,0 1261,0,3 1267,0,0 1307,0,0 1313,0,1 1335,0,1 1342,0,@14539 1353,0,41 1358,0,@14542 1370,1,@6853 1423,0,@14693 1437,1,@7007 1448,0,@10423 1481,0,@14765 1514,0,@14824 1617,0,14 1680,0,0 1696,0,@14825 1702,0,@14750 1711,1,@6896 1721,0,@10341 1730,0,0 1746,0,@14826 1751,1,@7010 1768,0,0 1784,0,@14827 1789,1,@7010 1806,0,0 1847,0,41 1931,0,0 1945,0,0 2028,0,0 2042,0,0 2159,0,@14532 2164,0,@14533 2169,1,@6850 2174,1,@6852 2212,0,0 2219,0,0 2226,0,3 2232,0,0 2272,0,0 2278,0,1 2300,0,1 2307,0,@14539 2318,0,41 2323,0,@14542 2335,1,@6853 2378,0,0 2417,0,0 2426,1,@7038 2518,0,45 2523,1,@6880 2528,0,@10423 2604,0,17 2623,0,0 2664,0,41 2748,0,0 2762,0,0 2845,0,0 2859,0,0 2976,0,@14532 2981,0,@14533 2986,1,@6850 2991,1,@6852 3029,0,0 3036,0,0 3043,0,3 3049,0,0 3089,0,0 3095,0,1 3117,0,1 3124,0,@14539 3135,0,41 3140,0,@14542 3152,1,@6853 3251,0,41 3335,0,0 3349,0,0 3432,0,0 3446,0,0 3563,0,@14532 3568,0,@14533 3573,1,@6850 3578,1,@6852 3616,0,0 3623,0,0 3630,0,3 3636,0,0 3676,0,0 3682,0,1 3704,0,1 3711,0,@14539 3722,0,41 3727,0,@14542 3739,1,@6853 3827,0,27 3841,0,0 3889,0,@7040 3902,1,@6921 3957,0,0 3966,1,@7041 4062,0,46 4067,1,@6880 4072,0,@10423 4155,0,15 4174,0,0 4215,0,41 4299,0,0 4313,0,0 4396,0,0 4410,0,0 4527,0,@14532 4532,0,@14533 4537,1,@6850 4542,1,@6852 4580,0,0 4587,0,0 4594,0,3 4600,0,0 4640,0,0 4646,0,1 4668,0,1 4675,0,@14539 4686,0,41 4691,0,@14542 4703,1,@6853 4851,0,27 4893,0,@7049 5012,0,41 5096,0,0 5110,0,0 5193,0,0 5207,0,0 5324,0,@14532 5329,0,@14533 5334,1,@6850 5339,1,@6852 5377,0,0 5384,0,0 5391,0,3 5397,0,0 5437,0,0 5443,0,1 5465,0,1 5472,0,@14539 5483,0,41 5488,0,@14542 5500,1,@6853 5537,0,0 5546,1,@7050 5661,0,@10423 5730,0,25 5850,0,22 5943,0,47 5948,1,@6880 5971,0,0 6079,0,@14837 6084,0,@14533 6089,1,@6850 6094,1,@6875 6132,0,0 6139,0,0 6146,0,3 6152,0,0 6192,0,0 6198,0,1 6224,0,1 6238,0,@14838 6243,1,@7010 6260,0,0 6276,0,@14839 6281,1,@7010 6298,0,0 6335,0,41 6419,0,0 6433,0,0 6516,0,0 6530,0,0 6647,0,@14532 6652,0,@14533 6657,1,@6850 6662,1,@6852 6700,0,0 6707,0,0 6714,0,3 6720,0,0 6760,0,0 6766,0,1 6788,0,1 6795,0,@14539 6806,0,41 6811,0,@14542 6823,1,@6853 6859,0,30 6874,0,0 6890,0,@14840 6895,1,@7010 6912,0,0 7035:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2212|11,0,0 7036:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c7401074df67b189580c897008897804c70025000000c3f400|@14806,1,@2213|13,0,@10423 74,0,@14801 89,0,18 7037:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c7401044e067b189580c897008897804c70025000000c3f400|@14806,1,@2214|13,0,@10423 74,0,@14809 89,0,18 7038:D3,740|3b650c7305ff552ccd09538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c7070ca439b16a016a018b54241c8b4424148b5c24108b74241857548304240456ff12ff34248b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff170f85410200008b7c24148b7f088b7424148b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87beafdffe802effdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442414e854effdff8b7c24208b74241c8b5424188b4c241457565251b8010000008b5c241ce87afdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c40cc210008b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b3c2489388d64240483c40cc21000f400|@14828,1,@2216|43,0,@7039 138,0,41 205,0,0 219,0,0 302,0,0 316,0,0 431,0,@14532 436,0,@14533 441,1,@6850 446,1,@6852 484,0,0 491,0,0 498,0,3 504,0,0 550,0,0 556,0,1 576,0,1 583,0,@14539 594,0,41 599,0,@14542 608,1,@6853 633,0,0 719,0,0 7039:D3,36|3b650c7305ff552ccd0583f85b7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2215|28,0,1 7040:D3,532|3b650c7305ff552ccd0d5052538b7c24088b3f8d1c7d0100000083fb01750abf4cd467b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87af01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf4cd467b1b90f0000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab85cd467b1e98d00000089de83c63289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be5cd467b1b9330000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8a4e7fdffe8232efeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f048b7f0c5e8b76048b5630c707030000008b7c2404897c240883c408ff228d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4000000|@14829,1,@2217|32,0,@14736 52,0,4 73,0,16777215 131,0,0 140,0,@14736 145,0,7 196,0,@14737 216,0,4 237,0,16777215 295,0,0 321,0,@14737 326,0,25 347,0,@14533 352,1,@6850 357,1,@6875 395,0,0 402,0,0 409,0,3 415,0,0 455,0,0 461,0,1 483,0,1 505,0,@9465 519,0,@9465 7041:D3,2860|3b650c7305ff552ccd09538b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0083ff730f85f00100008b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424048b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87ae5fdffe801eafdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce859eafdff5ebf943966b18b1789168b7f04897e04b801000000c218008b7424188b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707acb139b1578b7c241c8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e4b139b16a016a018b5c242854e840a5feffff3424ff7424088b5424288b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff128b7c24308b7f088b7424308b76248b3f8b3683fe53740489f7eb006a016a0183ff230f85f90100008b7c24388b7f088b7424388b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424208b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8d2e2fdffe859e7fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442438e8b1e7fdff8b54242c8b4424248b5c24388b7c2428ff742418548304240457ff12e9220300008b7c240c8b3f8d3c7d0100000083ff010f8e230200008b7c240c8b3f8d3c7d0100000083ff017f0e8d642420b8a01e66b18b5d04ff238b7c240c0fb67f048d347d01000000bf400666b18b7477fe8b3e8d147d0100000083fa03730489d1eb05b903000000bf740e66b18d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff01750783fa037207eb0f83ff017d0abf01000000e9a00000008b7c240c8b3f8d3c7d0100000083ff017f0e8d642420b8a01e66b18b5d04ff238b7c240c0fb67f048d347d01000000bf400666b18b7477fe8b3e8d147d0100000083fa03730489d1eb05b903000000bfd40e66b18d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff01751383fa037707bf03000000eb05bf01000000eb1183ff017f07bf03000000eb05bf0100000083ff030f85e80000008b7c24388b57148b7c24388b77188b7c24388b4f288b7c24388b7f388b5c24388b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b890e267b1bbd4c067b1e85ce0fdffe8db26feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24388b7f0c8b7424388b5630c70703000000ff12eb00bfcc5366b18b55008d52f83b55087305ff5528cd80895500c742fc01000040893abf94d967b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893ebfbce267b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f108b4c2408894f0c8957088977048b74240c89378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7031d0000006a016a018b7c24308b74242c8b5424408b4c2434ff7424105483042404575652518b442438e8fb0300005e5f893424897c2404ff34248b5424088b7c240c8b3f8b74240c8b4e088b74240c8b46108b72048b5a0c8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abfcc5366b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008957105a8d64240889570c5a8957088977045e8937578b7c242c8b7f088b74242c8b76248b3f8b3683fe53740489f7eb0083ff170f853e0200008b7c242c8b7f088b74242c8b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424148b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff77288b7c2424ff77388b7c2428ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2418ff77148b7c241c8b571c8b7c241cff77208b7c2420ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8f9dcfdffe880e1fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24188b7f0c8b7424188b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44242ce8d8e1fdff6a016a018b7c24348b7424308b54242c8b4c24288b5c24248b442420575652515350b8010000008d5c2418e848f5ffff5a5e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89378b74240c8916897e04b80100000083c410c218008b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000005e89378b74240cc70603000000897e04b80100000083c410c21800f4000000|@14835,1,@2225|70,0,41 137,0,0 151,0,0 223,0,0 237,0,0 344,0,@14532 349,0,@14533 354,1,@6850 359,1,@6852 397,0,0 404,0,0 411,0,3 417,0,0 457,0,0 463,0,1 483,0,1 490,0,@14539 501,0,41 506,0,@14542 515,1,@6853 521,0,@10068 536,0,0 578,0,@7042 618,0,@7043 632,1,@6931 750,0,41 817,0,0 831,0,0 903,0,0 917,0,0 1024,0,@14532 1029,0,@14533 1034,1,@6850 1039,1,@6852 1077,0,0 1084,0,0 1091,0,3 1097,0,0 1137,0,0 1143,0,1 1163,0,1 1170,0,@14539 1181,0,41 1186,0,@14542 1195,1,@6853 1277,0,@9847 1302,0,@9476 1329,0,1 1334,0,@9554 1355,0,0 1362,0,1 1369,0,-1 1391,0,0 1423,0,@9847 1448,0,@9476 1475,0,1 1480,0,@9562 1501,0,0 1508,0,1 1515,0,-1 1530,0,1 1537,0,0 1549,0,1 1556,0,0 1654,0,@14830 1659,0,@14533 1664,1,@6850 1669,1,@6875 1707,0,0 1714,0,0 1721,0,3 1727,0,0 1767,0,0 1773,0,1 1793,0,1 1802,0,@10423 1835,0,@14765 1868,0,@14831 1979,0,14 2021,1,@7045 2108,0,@10423 2247,0,41 2314,0,0 2328,0,0 2400,0,0 2414,0,0 2521,0,@14532 2526,0,@14533 2531,1,@6850 2536,1,@6852 2574,0,0 2581,0,0 2588,0,3 2594,0,0 2634,0,0 2640,0,1 2660,0,1 2667,0,@14539 2678,0,41 2683,0,@14542 2692,1,@6853 2731,0,0 2788,0,0 2825,0,0 2838,0,1 2846,0,0 7042:D3,36|3b650c7305ff552ccd0583f85d7502eb0a83f81774058b5204ff22b803000000c3f40000|@14673,1,@2218|28,0,1 7043:D3,48|3b650c7305ff552ccd0583f8237506b803000000c383f85d7502eb0a83f81774058b5204ff22b803000000c3f4000000|@14673,1,@2219|16,0,1 39,0,1 7044:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2220|11,0,0 7045:D3,1100|3b650c7305ff552ccd09508b3b83ff1d7507bf03000000eb05bf01000000578b55008d52f43b55087305ff5528cd08895500c742fc020000008b7c2404897a04c702b0b639b16a016a018b44241c8b7c24288b742420535754830424085689d3e82b040000ff34248b7c24088b74241c8b76088b54241c8b52248b368b1283fa53740489d6eb0083fe0b0f85a00300008b7c241c8b7f088b74241c8b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424148b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e822d9fdffe8a9ddfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44241ce8fbddfdff8b7c240c83ff030f84ee0000008b7c241c8b57148b7c241c8b77188b7c241c8b4f288b7c241c8b7f388b5c241c8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8f8e267b1bbd4c067b1e80bd8fdffe88a1efeff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c241c8b7f0c8b74241c8b5630c70703000000ff12eb006a016a018b5424208b4424288b5c24248b7c242cff742418548304240457ff12ff34248b7c24088b7424388b368b5424388b4a088b5424388b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52ec3b55087305ff5528cd80895500c742fc04000000897a0c8b34248972088d64240c8b34248972048d642404c702210000008b7424248916897e04b80100000083c410c218008b7424288b142489168d642404897e04b80100000083c410c21800f4|@14834,1,@2224|19,0,1 26,0,0 66,0,@7046 97,1,@7047 167,0,41 234,0,0 248,0,0 331,0,0 345,0,0 460,0,@14532 465,0,@14533 470,1,@6850 475,1,@6852 513,0,0 520,0,0 527,0,3 533,0,0 579,0,0 585,0,1 605,0,1 612,0,@14539 623,0,41 628,0,@14542 637,1,@6853 739,0,@14833 744,0,@14533 749,1,@6850 754,1,@6875 792,0,0 799,0,0 806,0,3 812,0,0 858,0,0 864,0,1 884,0,1 1048,0,16 1062,0,0 1089,0,0 7046:D3,28|3b650c7305ff552ccd0583f80b7506b803000000c38b5204ff22f400|@14673,1,@2221|16,0,1 7047:D3,816|3b650c7305ff552ccd0950538b7c2404ff77088b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff130f85da0200008b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d64240c8b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8ebd4fdffe872d9fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e8c4d9fdff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2404897804c70024ba39b16a016a018b5c2418ff7424085483042404e8e572feffff34248b5424088b7c24248b3f8b7424248b4e088b7424248b46108b72048b5a0c8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893a8b7c24288b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c897e088b3c24897e048d642410c7060b000000ff7424048b4424048b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce9f3fcffff8d64240c8d64240c8b7424088b5424108b7c240c8916897e04b801000000c21000f400|@14832,1,@2223|78,0,41 145,0,0 159,0,0 242,0,0 256,0,0 371,0,@14532 376,0,@14533 381,1,@6850 386,1,@6852 424,0,0 431,0,0 438,0,3 444,0,0 490,0,0 496,0,1 516,0,1 523,0,@14539 534,0,41 539,0,@14542 548,1,@6853 585,0,@7048 607,1,@6913 732,0,5 807,0,0 7048:D3,28|3b650c7305ff552ccd0583f8137506b803000000c38b5204ff22f400|@14673,1,@2222|16,0,1 7049:D3,36|3b650c7305ff552ccd0583f8177502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2226|28,0,1 7050:D3,740|3b650c7305ff552ccd09538b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70784bd39b16a016a018b54241c8b4424148b5c24108b74241857548304240456ff12ff34248b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff170f85410200008b7c24148b7f088b7424148b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff77288b7c2410ff77388b7c2414ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2404ff77148b7c24088b571c8b7c2408ff77208b7c240cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24048b57148b7c24048b77188b7c24048b4f288b7c24048b7f388b5c24048b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e803d1fdffe88ad5fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442414e8dcd5fdff8b7c24208b74241c8b5424188b4c241457565251b8010000008b5c241ce87afdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c40cc210008b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b3c2489388d64240483c40cc21000f400|@14836,1,@2228|43,0,@7051 138,0,41 205,0,0 219,0,0 302,0,0 316,0,0 431,0,@14532 436,0,@14533 441,1,@6850 446,1,@6852 484,0,0 491,0,0 498,0,3 504,0,0 550,0,0 556,0,1 576,0,1 583,0,@14539 594,0,41 599,0,@14542 608,1,@6853 633,0,0 719,0,0 7051:D3,36|3b650c7305ff552ccd0583f8177502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2227|28,0,1 7052:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c740106ce067b189580c897008897804c70025000000c3f400|@14806,1,@2229|13,0,@10423 74,0,@14811 89,0,18 7053:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c74010a4e067b189580c897008897804c70025000000c3f400|@14806,1,@2230|13,0,@10423 74,0,@14814 89,0,18 7054:D3,96|3b650c7305ff552ccd0989c6bacc5366b18b7d008d7ff83b7d087305ff5528cd4c897d00c747fc0100004089178b45008d40e83b45087305ff5528cdc8894500c740fc05000000c74010cce067b189580c897008897804c70025000000c3f400|@14806,1,@2231|13,0,@10423 74,0,@14816 89,0,18 7055:D3,36|3b650c7305ff552ccd0583f80b7502eb0a83f81374058b5204ff22b803000000c3f40000|@14673,1,@2233|28,0,1 7056:D3,208|3b650c7305ff552ccd09536a016a016a016a018b7c24248b7424208b5424288b4c242c8b5c24185756525153ff742424b8010000008d5c2418e8a6000000ff34248b7c2408ff74240c8b74241483fe017d1a8d64241c8b7424088b1789168b7f04897e04b801000000c21c00ff74242c8b54242c8b4c24348b5c24388b4424246800d067b1ff74240c57ff74241056ff74241452515350ff742444b8ffffffffbb01000000e89205000089c78d64240c8b74241c8b7f048b1789168b7f04897e04b80100000083c414c21c00f4000000|@14858,1,@2242|49,0,0 58,1,@7057 101,0,0 129,0,@14695 156,0,-1 161,0,0 166,1,@7062 194,0,0 7057:D3,512|3b650c7305ff552ccd09538b7424188b54241c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70748c239b1578b7c241c8b7424188b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70094c239b16a016a018b54241c89e3ff12ff34248b4424086a016a018b7c24248b74242c8b5424348b4c24208b5c2428ff7424145483042404575652515389c38b442424e8140200005e5a8d6424108b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24108b77088b7c24108b7f248b068b3f83ff53740489f8eb006a016a016a018b54242cff1289c783ff0375626a016a018b4424348b5c24308b7c2424575483042404e8ad3cfeffff3424ff7424088b5424288b442404ff1289c783ff01750e8d642424b8b07766b18b5d04ff238b3f8b7f048b742404897424108b3424897424148d642408897c241083c408eb18bfd0e467b18b378934248b7704897424048b7f08897c24085e5b5f6a016a018b0f89ca83f9057513bfe0e467b18b178914248b7f04897c2404eb2383fa0375108b7f04893c24c744240403000000eb0e8b7f04893c24c7442404010000005f598b55008d52f43b55087305ff5528cdca895500c742fc02000000895a0489328b742404890e8b0c24894e048d642408895608897e0cb801000000c21800f4|@14845,1,@2238|53,0,@7058 100,0,@7059 168,1,@7060 279,1,@6890 312,0,@10986 355,0,@14843 395,0,@14844 428,0,1 444,0,0 504,0,0 7058:D3,56|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff03750a8d642408b803000000c38b7c24048b5704588d642404ff22f4|@14673,1,@2234|36,0,1 7059:D3,76|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff0375068d642408eb1d8b3c2489f883ff4d740f8b7c24048b570489c08d642408ff228d642408b803000000c3f4000000|@14673,1,@2235|67,0,1 7060:D3,568|3b650c7305ff552ccd0950538b7c241c8b77088b7c241c8b7f248b068b3f83ff53740489f8eb008b542418ff1289c783ff030f85e30100008b7c241c8b77088b7c241c8b7f248b068b3f83ff53740489f8eb008b542414ff1289c783ff0375698b5424108b7c241c8b7f048b07ff1289c7f7c701000000752a8b3f8b7f048b1789d683fa037507bf03000000eb1389f783ff017507bf03000000eb05bf01000000eb05bf0100000083ff03751c8b7424208b7c2404893e8b3c24897e048d642408b801000000c21c008b7c24248b7424188b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70040c539b16a016a018b54241489e3ff12ff34248b7c24088b54240c8b3289d28b4a0889d28b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52e83b55087305ff5528cdc0895500c742fc05000000897a10c7420c010000008972088b34248972048d6424108b342489328d6424048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706050000005657ff742424ff7424248b7424248b5424208b4c241c8b5c24188b442414894424148b44240c895c24188b5c2408894c241c89542420897424248b3c24897c24288b7c2404897c242c83c410e9e9fdffff8d6424108b7424208b7c2404893e8b3c24897e048d642408b801000000c21c00f4|@14842,1,@2237|136,0,1 150,0,1 157,0,0 164,0,0 194,0,0 243,0,@7061 329,0,@10423 393,0,0 450,0,2 560,0,0 7061:D3,56|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c783ff03750a8d642408b803000000c38b7c24048b5704588d642404ff22f4|@14673,1,@2236|36,0,1 7062:D3,1212|3b650c7305ff552ccd0950536a016a016a016a018b7c24308b74242c8b5424288b4c24248b5c24208b44241c575652515350b8010000008d5c2418e868faffffff3424ff742408ff742410ff7424188b7d008d7fec3b7d087303ff5528897d00c747fc040000008b342489770c8b7424048977088b7424088977048b74240c8937578b7c24548b74244c8b5424488b45008d40f03b45087305ff5528cdc4894500c740fc0300000089500889700489388b7c2434578b5c2404e8120400008b7424488b7c24043bfe7e068d642404eb1b8b7c245483ff0375648b7424488b7c24043bfe7402eb568d642404ff742444ff742454ff7424508b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff3424ff74241cff74241cff74241cff74241c5756525153508b4424348b5c2430e8cbfeffff89c78d64242ceb045f83c420578b7c242c8b3f8b74242c8b5e04becc5366b18b4d008d49f83b4d087305ff5528cdc8894d00c741fc010000408931be94d967b18b55008d52f83b55087305ff5528cdca895500c742fc010000408932be38e667b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071d000000578b7c24348b77048b7c24048b7f048b57048b3e8b4e088b46108b72048b5a0c8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893a8b7c24348b378b7c24048b7f048b3f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048937becc5366b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76ec3b75087305ff5528cd86897500c746fc0400000089560c894e08897e04c70633000000bfcc5366b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000895710c7470c03000000894f088977045e89378b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c2404ff77088b7c2408ff770c8b7c240cff378b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770c8b7424088977088b74240c8977048b34248937578b7c244c8b45008d40f03b45087305ff5528cd80894500c740fc030000008b74241c8970088978048b7c241889388b7c2428578b5c2418e8dc0000008b7c24148b7f0c3b7c241c7e068d642404eb288b7c24148b7f0c3b7c241c75068b7c2418eb05bf0100000083ff0374075883c41cc22c008d642404ff742418ff742418ff742450ff74240cff74241cff74241cff74241cff7424508b7424508b54244c8b4c24488b5c24448b442440894424408b44241c895c24448b5c2418894c24488954244c897424508b3c24897c24548b7c2404897c24588b7c2408897c245c8b7c240c897c24608b7c2410897c24648b7c2414897c246883c43ce94afbffff8d642430f400|@14857,1,@2241|51,0,0 60,1,@7057 186,1,@7063 336,0,@10423 369,0,@14765 402,0,@14856 505,0,14 625,0,0 663,0,@10423 732,0,25 737,0,@10423 801,0,1 845,0,2 1008,1,@7063 1051,0,0 7063:D3,808|3b650c7305ff552ccd0950538b7c24048b77088b14248b520c3bf20f85f902000089ff8b378b14248b123bf27507be03000000eb05be0100000083f60283fe030f85ce0200008b74240c8b56148b74240cff76188b7424108b4e288b7424108b76388b5c24108b5b3c8b098b128b038b1e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e088956045a89165689ff8b770489f2ff368b7424088b76088b3689ff8b1289ff8b3f83ff037507b92ce567b1eb05b93ce567b18b7c24088b7f088b1f8b7c24088b3f83ff037507b82ce567b1eb05b83ce567b18b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000c7470448e567b189078b45008d40f43b45087305ff5528cdce894500c740fc02000000897804c7006ce567b18b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704891f8b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897b04c7037ce567b18b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c7016ce567b18b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c70298e567b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c0e567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700d0e567b1e83053ecffbbd4c067b1e86ac0fdffe8e906feff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c707030000008b7c2408897c240c83c40cff228d642408eb048d642408b801000000c20400f400|@14855,1,@2239|47,0,1 54,0,0 187,0,@14846 194,0,@14847 219,0,@14846 226,0,@14847 259,0,@14848 296,0,@14850 362,0,@14851 428,0,@14850 494,0,@14852 560,0,@14853 627,0,@14854 632,1,@4827 637,0,@14533 642,1,@6850 647,1,@6875 685,0,0 692,0,0 699,0,3 705,0,0 745,0,0 751,0,1 771,0,1 799,0,0 7064:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2240|11,0,0 7065:D3,28|3b650c7305ff552ccd0583f87d7506b803000000c38b5204ff22f400|@14673,1,@2244|16,0,1 7066:D3,28|3b650c7305ff552ccd0583f8617506b803000000c38b5204ff22f400|@14673,1,@2246|16,0,1 7067:D3,760|3b650c7305ff552ccd0583f82f7505e9db02000089c7be20ce39b181c6270000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb6683f8237502eb0c83f80d7502eb0583f8317502eb5183f8417502eb4a83f8437502eb4383f83f7502eb3c83f84d7502eb3583f845743083f8277502eb2783f80f7502eb2081f8810000007502eb1683f8337502eb0f83f855740a83f86f74078b5204ff22eb00b803000000c3f40000|@14673,1,@2247|23,0,@7067 589,0,1 596,0,0 603,0,1 610,0,1 617,0,1 624,0,1 631,0,1 638,0,1 719,0,64 752,0,1 7068:D3,760|3b650c7305ff552ccd0583f82f7505e9db02000089c7be2cd139b181c6270000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037502eb6683f8237502eb0c83f80d7502eb0583f8317502eb5183f8417502eb4a83f8437502eb4383f83f7502eb3c83f84d7502eb3583f845743083f8277502eb2783f80f7502eb2081f8810000007502eb1683f8337502eb0f83f855740a83f81d74078b5204ff22eb00b803000000c3f40000|@14673,1,@2248|23,0,@7068 589,0,1 596,0,0 603,0,1 610,0,1 617,0,1 624,0,1 631,0,1 638,0,1 719,0,64 752,0,1 7069:D3,28|3b650c7305ff552ccd0583f81b7506b803000000c38b5204ff22f400|@14673,1,@2249|16,0,1 7070:D3,36|3b650c7305ff552ccd0583f8137502eb0a83f80774058b5204ff22b803000000c3f40000|@14673,1,@2250|28,0,1 7071:D3,744|3b650c7305ff552ccd0183f82f7506b803000000c389c7bea0d439b181c6280000008d74befcffe6e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9fe010000909090e9e3010000909090e9f5010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e94c010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9eb000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9aa000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e93900000090909083f8317507bf03000000eb05bf01000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c383f8237502eb0c83f80d7502eb0583f8317506b803000000c383f8417506b803000000c383f8437506b803000000c383f83f7506b803000000c383f84d7506b803000000c383f8457506b803000000c3b801000000c3f4000000|@14673,1,@2251|16,0,1 24,0,@7071 590,0,1 597,0,0 604,0,1 611,0,1 618,0,1 625,0,1 632,0,1 639,0,1 649,0,1 674,0,1 685,0,1 696,0,1 707,0,1 718,0,1 729,0,1 735,0,0 7072:D3,28|3b650c7305ff552ccd0583f8077506b803000000c38b5204ff22f400|@14673,1,@2252|16,0,1 7073:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2257|11,0,0 7074:D3,40|3b650c7305ff552ccd0581f8830000007502eb0d81f88500000074058b5204ff22b803000000c3f4|@14673,1,@2258|12,0,65 22,0,66 34,0,1 7075:D3,284|3b650c7305ff552ccd0552506a016a016a01b80100000089e3e8def1fdff5e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7c24088b7f0457b8030000008b5c2404e8be3ffeff89c7578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2408897b04c70360d939b16a016a018b7c24148b7f04575483042404b8e4d267b1e82f25feffff3424ff7424088b7c241c8b5f04ff34248b442408e8252afeff8b7c241c8b5f04b823000000e84c11feff6a016a018b7c24248b7f04ff742418ff742420ff7424106a015483042410578b4424388b5c2424e894b5feff5f5e8d6424208b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@14770,1,@2260|19,0,0 26,1,@6866 77,0,1 86,1,@6900 126,0,@7076 148,0,@14720 153,1,@6890 179,1,@6891 191,0,17 196,1,@6880 240,1,@6943 7076:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2259|16,0,1 7077:D3,32|3b650c7305ff552ccd0581f8830000007506b803000000c38b5204ff22f40000|@14673,1,@2261|12,0,65 19,0,1 7078:D3,76|3b650c7305ff552ccd056a016a018b7a048b72086a0157548304240856bb01000000e811c7feff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14773,1,@2262|30,0,0 35,1,@6955 7079:D3,28|3b650c7305ff552ccd0583f81f7506b803000000c38b5204ff22f400|@14673,1,@2263|16,0,1 7080:D3,140|3b650c7305ff552ccd01a80175748b308b4004bf010000008b55008d52f83b55087305ff5528cdc1895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@2264|20,0,0 131,0,0 7081:D3,68|3b650c7305ff552ccd056a016a018b7a048b720857568d5c2408e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14872,1,@2269|27,1,@7082 7082:D3,2888|3b650c7305ff552ccd0950538b7c24108b7f088b7424108b76248b3f8b3683fe53740489f7eb0083ff4d0f85da0100008b7c24108b7f088b7424108b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424088b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e899b0fdffe820b5fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442410e878b5fdffeb008b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2404897b04c703a8e639b16a016a018b7c2418575483042404b8e4db67b1e86920feffff3424ff7424088b5c2420ff34248b442408e86225feff8b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff230f855b0500008b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424188b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e847aefdffe8ceb2fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e826b3fdff8b7c24208b7f088b7424208b76248b3f8b3683fe53740489f7eb0083ff4d0f85da0100008b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424188b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e84bacfdffe8d2b0fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e82ab1fdffeb006a016a018b7c2428575483042404b8e4db67b18b5c2424e83c1cfeffff3424ff7424088b7c24108b378b7c24108b4f088b7c24108b47108b3c248b57048b3c248b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937becc5366b18b4d008d49f83b4d087305ff5528cdc0894d00c741fc010000408931be94d967b18b55008d52f83b55087305ff5528cdc2895500c742fc010000408932be60e867b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc0100004089338b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e105b895e0c894e088956045a8d64240889168b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000897104c7011d000000ba94d967b18b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52e43b55087305ff5528cdc2895500c742fc06000000894a1459894a10897a0cc74208010000008972045e89328b7424088916897e04b80100000083c410c2080083ff4b0f85e70200008b7c24208b7f088b7424208b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424188b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff77288b7c2414ff77388b7c2418ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2408ff77148b7c240c8b571c8b7c240cff77208b7c2410ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8e3a8fdffe86aadfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442420e8c2adfdff8b45008d40f43b45087303ff5528894500c740fc020000008b7c2414897804c70008e739b18b7c241c8b7f086a016a018b5c2428575483042404e8df46feffff34248b7c24088b74240c8b368b54240c8b4a088b54240c8b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b4d008d49f83b4d087305ff5528cd80894d00c741fc010000005e8d6424088931ba94d967b18b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52e43b55087305ff5528cdc2895500c742fc06000000c74214a84e66b15b895a10897a0c894a088972045e89328b7424088916897e04b80100000083c410c20800bf94d967b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714a84e66b18b14248957108b142489570cc74708010000008977048b74240489378b742410893e5f8d642404897e04b80100000083c410c20800f4000000|@14871,1,@2268|71,0,41 138,0,0 152,0,0 224,0,0 238,0,0 345,0,@14532 350,0,@14533 355,1,@6850 360,1,@6852 398,0,0 405,0,0 412,0,3 418,0,0 458,0,0 464,0,1 484,0,1 491,0,@14539 502,0,41 507,0,@14542 516,1,@6853 555,0,@7083 574,0,@14778 579,1,@6890 602,1,@6891 665,0,41 732,0,0 746,0,0 818,0,0 832,0,0 939,0,@14532 944,0,@14533 949,1,@6850 954,1,@6852 992,0,0 999,0,0 1006,0,3 1012,0,0 1052,0,0 1058,0,1 1078,0,1 1085,0,@14539 1096,0,41 1101,0,@14542 1110,1,@6853 1173,0,41 1240,0,0 1254,0,0 1326,0,0 1340,0,0 1447,0,@14532 1452,0,@14533 1457,1,@6850 1462,1,@6852 1500,0,0 1507,0,0 1514,0,3 1520,0,0 1560,0,0 1566,0,1 1586,0,1 1593,0,@14539 1604,0,41 1609,0,@14542 1618,1,@6853 1639,0,@14778 1648,1,@6890 1732,0,@10423 1765,0,@14765 1798,0,@14870 1907,0,14 1912,0,@14765 1983,0,0 2003,0,0 2045,0,41 2112,0,0 2126,0,0 2198,0,0 2212,0,0 2319,0,@14532 2324,0,@14533 2329,1,@6850 2334,1,@6852 2372,0,0 2379,0,0 2386,0,3 2392,0,0 2432,0,0 2438,0,1 2458,0,1 2465,0,@14539 2476,0,41 2481,0,@14542 2490,1,@6853 2527,0,@7085 2553,1,@6913 2664,0,@14765 2725,0,@10341 2755,0,0 2766,0,@14765 2827,0,@10341 2846,0,0 2874,0,0 7083:D3,36|3b650c7305ff552ccd0583f8237502eb0a83f84b74058b5204ff22b803000000c3f40000|@14673,1,@2265|28,0,1 7084:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14799,1,@2266|11,0,0 7085:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2267|16,0,1 7086:D3,372|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1289c783ff010f85480100008b7c24048b57088b0424ff1289c783ff010f852a0100008b3c248b1789d68d14550100000083fa037e7a89ff8d34750100000083fe037f0e8d642408b8a01e66b18b5d04ff2389ff0fb67f058d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff83ff037507bf09000000eb05bf010000000bd783ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24088b57048b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff12588d642408c38d6424088b07c38d6424088b07c3f400|@14873,1,@2270|96,0,@9847 119,0,@9476 129,0,@9544 136,0,1 157,0,@9544 168,0,0 179,0,1 186,0,0 193,0,0 200,0,0 205,0,@10423 238,0,9999 255,0,4 262,0,0 7087:D3,80|3b650c7305ff552ccd0589d36a016a018b7b048b73088b530c8b4b108b5b1457565251538d5c2414e8370000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@14886,1,@2278|41,1,@7088 7088:D3,260|3b650c7305ff552ccd09536a016a018b7c24208b74241c8b5424188b4c24148b5c2410505756525153b8010000008d5c2418e8e1000000ff34248b7c2408be010000008b5d008d5bf83b5d087305ff5528cdc0895d00c743fc010000408933be94d967b18b4d008d49f83b4d087305ff5528cdc8894d00c741fc010000408931ba902d66b18b75008d76f83b75087305ff5528cd8e897500c746fc010000408916ba902d66b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089108b55008d52e43b55087305ff5528cdcb895500c742fc06000000894214895a10897a0c894a088b0c24894a048d64240c89325e8916897e04b801000000c21400f400|@14885,1,@2277|42,0,0 51,1,@7089 63,0,0 96,0,@14765 129,0,@9922 162,0,@9922 251,0,0 7089:D3,4108|8d7c24ac3b7d0c7305ff5530cd0950538b7424208b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7075cfa39b16a016a018b4424208b5c24248b74242457548304240456e82999ffff8b0424ff7424046a016a016a018b5c243454e8e60f0000ff3424ff742408ff7424108b7c242883ff017505e9290700008b7c24288b3fff37ff77048b7c24043b7c240c7502eb3a8b7c24048b3f8d3c7d010000008b74240c8b368d3475010000003bfe75218b7c240c8b0f8b7c24048d77048b7c240c8d7f043bc9f3a67402eb05e9940300008b7c24488b57148b7c24488b77188b7c24488b4f288b7c24488b7f388b5c24488b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7c24108b3f8d1c7d0100000083fb01750abf4cea67b1e98c00000089df83c73e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878a0e000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf4cea67b1b93f0000008d77048d7a04d1e9f3a489d98b7c24108d77048d7a23d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf74ea67b1e98f00000089de83c64889f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87d80d000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be74ea67b1b9490000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c75010000008b7424088b368d3475010000005683fb01750d8d6424048b7c2408e99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ff0c000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab8a0ea67b1e98600000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f874f0c000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec6043027d1efc6443801278060ffbfbbd4c067b1e8269ffdffe8a5e5fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24488b7f0c8b7424488b5630c70703000000ff128b3c243b7c240875098d642408e92d0300008b7c24488b57148b7c24488b77188b7c24488b4f288b7c24488b7f388b5c24488b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757ba803066b18b44240cbb03000000e82671ecff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bfacea67b1e98900000089df83c72089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87930a000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfacea67b1b9210000008d77048d7a04d1e9f3a489d95f8d77048d7a14d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfc4ea67b1e98f00000089de83c64c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87e409000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec4ea67b1b94d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d757ba803066b18b442408bb03000000e8c06fecff89c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045883c404e9a10000008b3c2483ff01750a8d64240858e98f0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f008000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8ea9bfdffe869e2fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24488b7f0c8b7424488b5630c70703000000ff1283c4088b7c24408b7f088b7424408b76248b3f8b3683fe53740489f7eb0083ff230f85dd0100008b7c24408b7f088b7424408b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d64242c8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8099afdffe8909efdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442440e8e89efdffe90c0200008b5c2440b8040f66b1e861fcfdff8b7c24408b7f088b7424408b76248b3f8b3683fe53740489f7eb0083ff710f85da0100008b7c24408b7f088b7424408b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d64242c8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8fa97fdffe8819cfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442440e8d99cfdffeb008b7c24448b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703dc0a3ab16a016a018b4424448b7c24488b7424408b54243c8b4c24385457565251e82210ffffff3424ff7424088b7c24288b3f8b7424288b4e088b7424288b46108b34248b56048b34248b5e0c8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893ebf010000008b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977088b7424048977048b7424188937578b7c24548b7f088b7424548b76248b3f8b3683fe53740489f7eb006a016a0183ff7d0f85580200008b7c245c8b7f088b74245c8b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424488b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e81195fdffe89899fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b44245ce8f099fdff8b75008d76f43b75087303ff5528897500c746fc020000008b7c241c897e048b7c2420893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937576a016a018b7c246c8b7424688b5424648b4c24608b5c245c8b4424585756525153508b4424208d5c2418e8eff0ffff5e5f8d642404893424897c2404eb0fc70424010000008b7c240c897c24045a5f8b75008d76f43b75087305ff5528cd84897500c746fc020000008956045a8916568b74242c8b368b54242c8b4a088b54242c8b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b7424385a8916897e04b80100000083c43cc218008d642444b8780566b18b5d04ff238d642438b8780566b18b5d04ff238d64243cb8780566b18b5d04ff238d642438b8780566b18b5d04ff238d64243cb8780566b18b5d04ff238d642438b8780566b18b5d04ff238d642438b8780566b18b5d04ff23f4|@14884,1,@2276|51,0,@7090 79,1,@7033 102,1,@7091 320,0,@14879 340,0,4 361,0,16777215 419,0,0 428,0,@14879 433,0,31 484,0,@14880 504,0,4 525,0,16777215 583,0,0 609,0,@14880 614,0,36 707,0,4 728,0,16777215 786,0,0 849,0,@14881 869,0,4 890,0,16777215 948,0,0 993,0,@14533 998,1,@6850 1003,1,@6875 1041,0,0 1048,0,0 1055,0,3 1061,0,0 1101,0,0 1107,0,1 1127,0,1 1236,0,@9967 1245,0,1 1250,1,@4896 1279,0,@14882 1299,0,4 1320,0,16777215 1378,0,0 1387,0,@14882 1392,0,16 1440,0,@14883 1460,0,4 1481,0,16777215 1539,0,0 1565,0,@14883 1570,0,38 1594,0,@9967 1603,0,1 1608,1,@4896 1690,0,4 1711,0,16777215 1769,0,0 1821,0,@14533 1826,1,@6850 1831,1,@6875 1869,0,0 1876,0,0 1883,0,3 1889,0,0 1929,0,0 1935,0,1 1955,0,1 2023,0,41 2090,0,0 2104,0,0 2176,0,0 2190,0,0 2297,0,@14532 2302,0,@14533 2307,1,@6850 2312,1,@6852 2350,0,0 2357,0,0 2364,0,3 2370,0,0 2410,0,0 2416,0,1 2436,0,1 2443,0,@14539 2454,0,41 2459,0,@14542 2468,1,@6853 2482,0,@9566 2487,1,@6882 2550,0,41 2617,0,0 2631,0,0 2703,0,0 2717,0,0 2824,0,@14532 2829,0,@14533 2834,1,@6850 2839,1,@6852 2877,0,0 2884,0,0 2891,0,3 2897,0,0 2937,0,0 2943,0,1 2963,0,1 2970,0,@14539 2981,0,41 2986,0,@14542 2995,1,@6853 3036,0,@7094 3070,1,@6995 3154,0,0 3295,0,41 3362,0,0 3376,0,0 3448,0,0 3462,0,0 3569,0,@14532 3574,0,@14533 3579,1,@6850 3584,1,@6852 3622,0,0 3629,0,0 3636,0,3 3642,0,0 3682,0,0 3688,0,1 3708,0,1 3715,0,@14539 3726,0,41 3731,0,@14542 3740,1,@6853 3875,0,0 3999,0,0 4014,0,@9465 4028,0,@9465 4042,0,@9465 4056,0,@9465 4070,0,@9465 4084,0,@9465 4098,0,@9465 7090:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2271|16,0,1 7091:D3,2320|3b650c7305ff552ccd09538b3889fe83ff0575476a016a016a016a01ff7424108d5c2404e8fb0800005f5e5a5b8d6424048b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8951088971048939e96808000089f783fe2d0f85fc0100008b78048b3f83ff0575476a016a016a016a01ff7424108d5c2404e89f0800005f5e5a5b8d6424048b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8951088971048939e9a60100008b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a0e967b1bbd4c067b1e8af91fdffe82ed8fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b5630c70703000000ff128b1c248b731489db8b7b1889db8b4b2889db8b533889db8b5b3c8d6424048b098b368b038b1a8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abfcc5366b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707100666b18b4d008d49ec3b4d087305ff5528cd80894d00c741fc04000000c7410c01000000c7410801000000897904c70101000000e96106000083ff0b0f8552040000ff70048b40088b3089f783fe2d0f85220200008b78048b3f83ff0575696a016a016a016a01ff7424148d5c2404e8870600005f5e5a8d6424048b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000008b0c24890b8d6424088b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8951088971048939e9aa0100008d6424048b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a0e967b1bbd4c067b1e8718ffdffe8f0d5fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b5630c70703000000ff128b1c248b731489db8b7b1889db8b4b2889db8b533889db8b5b3c8d6424048b098b368b038b1a8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abfcc5366b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707100666b18b4d008d49ec3b4d087305ff5528cd80894d00c741fc04000000c7410c01000000c7410801000000897904c70101000000e91802000083ff0575696a016a016a016a01ff7424148d5c2404e86a0400005f5e5a8d6424048b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000008b0c24890b8d6424088b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8951088971048939e9aa0100008d6424048b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a0e967b1bbd4c067b1e8548dfdffe8d3d3fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b5630c70703000000ff128b1c248b731489db8b7b1889db8b4b2889db8b533889db8b5b3c8d6424048b098b368b038b1a8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abfcc5366b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707100666b18b4d008d49ec3b4d087305ff5528cd80894d00c741fc04000000c7410c01000000c7410801000000897904c70101000000e9060200008b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a0e967b1bbd4c067b1e8a98bfdffe828d2fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b5630c70703000000ff128b1c248b731489db8b7b1889db8b4b2889db8b533889db8b5b3c8d6424048b098b368b038b1a8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abecc5366b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089378b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706100666b18b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470801000000897704c707010000008b4d008d49ec3b4d087305ff5528cd80894d00c741fc040000008b770c89710c8b77088971088b77048971048b3f89398b398b71048b51088b590c8b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c89510889710489398b318b79048b17bf01000000f7c60100000075248b460489fb83c302710ab8f80466b18b5d04ff2389c689df3b650c7305ff552ccdc6ebd48b742404890e895604897e08b801000000c20400f4|@14878,1,@2274|37,1,@7092 129,1,@7092 259,0,@14876 264,0,@14533 269,1,@6850 274,1,@6875 312,0,0 319,0,0 326,0,3 332,0,0 378,0,0 384,0,1 401,0,1 486,0,@10423 552,0,@9473 585,0,0 592,0,0 601,0,0 665,1,@7092 833,0,@14876 838,0,@14533 843,1,@6850 848,1,@6875 886,0,0 893,0,0 900,0,3 906,0,0 952,0,0 958,0,1 975,0,1 1060,0,@10423 1126,0,@9473 1159,0,0 1166,0,0 1175,0,0 1206,1,@7092 1374,0,@14876 1379,0,@14533 1384,1,@6850 1389,1,@6875 1427,0,0 1434,0,0 1441,0,3 1447,0,0 1493,0,0 1499,0,1 1516,0,1 1601,0,@10423 1667,0,@9473 1700,0,0 1707,0,0 1716,0,0 1801,0,@14876 1806,0,@14533 1811,1,@6850 1816,1,@6875 1854,0,0 1861,0,0 1868,0,3 1874,0,0 1920,0,0 1926,0,1 1943,0,1 2028,0,@10423 2094,0,@9473 2127,0,0 2134,0,0 2143,0,0 2251,0,0 2274,0,@9455 2312,0,0 7092:D3,1716|3b650c7305ff552ccd09538b3889fe83ff2d0f85da0100008b7804ff70088b3783fe050f85c70000008b570489d68b0a8b0983f91d75168b520c83fa037507ba03000000eb05ba01000000eb05ba0100000083fa030f85950000008d64240489f78b378b76048b168b5e0c8b7f04becc5366b18b4d008d49f83b4d087305ff5528cdcc894d00c741fc0100004089318b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a5f8917897704c7470803000000c7470c01000000b801000000c20400b808e967b1bbd4c067b1e89d88fdffe81ccffdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c897808c7400401000000c700030000008b7c240c8b7f0c8b74240c8b5630c70703000000ff12becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76f03b75087305ff5528cd80897500c746fc030000008b14248956088d642404897e04c706100666b15fc70701000000897704c7470801000000c7470c01000000b801000000c2040089f783fe1d756b8b70048b3e8b4e0cbecc5366b18b55008d52f83b55087305ff5528cdc2895500c742fc0100004089328b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e5fc70701000000897704c7470801000000c7470c01000000b801000000c2040083ff050f85a00200008b7804ff37ff77048b7f0c83ff030f85ff0000008b34248b1683fa330f85ef00000089f68b4e04f6c10175358b118b4904f6c10175248b490483f90175158b1283fa057507ba03000000eb05ba01000000eb05ba01000000eb05ba01000000eb05ba0100000083fa030f85a200000089f7ff770cb858e967b1bbd4c067b1e8ac86fdffe82bcdfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12e90a010000eb0083ff030f85ff0000008b3c248b3783fe330f85ef00000089ff8b7704f7c60100000075358b5604f6c20175268b328b520483fa0175158b3683fe057507be03000000eb05be01000000eb05be01000000eb05be01000000eb05be0100000083fe030f859f00000089ffff770cb858e967b1bbd4c067b1e8a185fdffe820ccfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12eb02eb006a016a016a016a018b7c2420578b4424188d5c2404e85efbffff8b0424ff742404ff74240c8b5d008d5bf43b5d087305ff5528cd01895d00c743fc02000000c74304010000008b7c2418893b83fb01750489c6eb07e8e601000089c68b7c242089378b7424048977048b34248977088d642408c7470c01000000b80100000083c41cc204008b7c24088b57148b7c24088b77188b7c24088b4f288b7c24088b7f388b5c24088b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a0e967b1bbd4c067b1e82c84fdffe8abcafdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24088b7f0c8b7424088b5630c70703000000ff128b7c24088b77148b7c24088b7f188b5424088b4a288b5424088b52388b5c24088b5b3c8b098b368b038b1a8b55008d52e83b55087305ff5528cdcb895500c742fc05000000894210895a0c894a08897204893abecc5366b18b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089378b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706100666b15fc70701000000897704c7470801000000c7470c01000000b801000000c20400f4|@14877,1,@2273|64,0,1 71,0,0 78,0,0 111,0,@10423 206,0,0 221,0,1 228,0,0 233,0,0 241,0,@14874 246,0,@14533 251,1,@6850 256,1,@6875 294,0,0 301,0,0 308,0,3 314,0,0 356,0,0 362,0,1 382,0,1 389,0,@10423 462,0,@9473 469,0,0 479,0,0 486,0,0 491,0,0 514,0,@10423 583,0,0 593,0,0 600,0,0 605,0,0 691,0,1 698,0,0 705,0,0 712,0,0 719,0,0 738,0,@14875 743,0,@14533 748,1,@6850 753,1,@6875 791,0,0 798,0,0 805,0,3 811,0,0 857,0,0 863,0,1 883,0,1 958,0,1 965,0,0 972,0,0 979,0,0 986,0,0 1005,0,@14875 1010,0,@14533 1015,1,@6850 1020,1,@6875 1058,0,0 1065,0,0 1072,0,3 1078,0,0 1124,0,0 1130,0,1 1150,0,1 1226,0,0 1246,1,@7093 1278,0,0 1283,0,0 1378,0,@14876 1383,0,@14533 1388,1,@6850 1393,1,@6875 1431,0,0 1438,0,0 1445,0,3 1451,0,0 1497,0,0 1503,0,1 1523,0,1 1613,0,@10423 1679,0,@9473 1686,0,0 1696,0,0 1703,0,0 1708,0,0 7093:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2272| 7094:D3,28|3b650c7305ff552ccd0583f87d7506b803000000c38b5204ff22f400|@14673,1,@2275|16,0,1 7095:D3,940|3b650c7305ff552ccd0950538b7c24048b7f088b7424048b76248b3f8b3683fe53740489f7eb00578b7c24088b77148b7c2408ff77188b7c240c8b4f288b7c240c8b7f388b54240c8b523cff318b36ff328b178b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b0c24894f1089570c8b5424048957088977048b7424088937578b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424188b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88980fdffe81085fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e86c85fdff8b7c241083ff3b7535b8010000008b5c2418e85501000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb508b7c241083ff397535b8010000008b5c2418e81701000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000eb128b7c241083ff490f85bd000000bf003b66b1578b5c24246800ec67b1ff742420b8e4db67b1e83a00feff6a016a018b7c242cff74242457ff742428ff7424148b44241c8d5c2410e8a80600005e5f8b57048b4f0c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2408895f10894f0c8b4c240c894f088957048b54241089178b55008d52ec3b55087305ff5528cdc0895500c742fc04000000897a0c8972085e8d642410897204c7020f0000008b7424148916897e04b80100000083c40cc208008d64241cb840ec67b18b5d04ff23f4000000|@14895,1,@2282|158,0,41 224,0,0 238,0,0 309,0,0 323,0,0 425,0,@14532 430,0,@14533 435,1,@6850 440,1,@6852 478,0,0 485,0,0 492,0,3 498,0,0 538,0,0 544,0,1 560,0,1 567,0,@14539 578,0,41 583,0,@14542 592,1,@6853 606,0,0 615,1,@7096 652,0,1 668,0,0 677,1,@7096 714,0,0 734,0,@10093 744,0,@14890 753,0,@14778 758,1,@6896 792,1,@7098 898,0,7 912,0,0 927,0,@14892 7096:D3,1388|3b650c7305ff552ccd09538b3c248b7f088b34248b76248b3f8b3683fe53740489f7eb0083ff3d0f85320500008b3c248b7f048b3f8b378d3475010000008b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c7034c143ab1babc7167b16a03b801000000e8ff6cfcff89c7f7c701000000755a8b378b3e8b5604f7c701000000743d8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb138d642404b8287267b18b5d04ff23bf01000000f7c70100000075228b3f8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff01750e8d642404b8b07766b18b5d04ff23ff378b3c2483ff017d02eb0d8b3c2483ff137f05e9380200008b7c24048b77148b7c2404ff77188b7c24088b57288b7c24088b7f388b4c24088b493c8b128b368b198b0f8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c8957088977045e8937578b7c24088b7f04ff378b3c248b3f8d1c7d0100000083fb01750e8d642404bf84eb67b1e98900000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877103000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf84eb67b1b9170000008d77048d7a04d1e9f3a489d95f8d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab898eb67b1e98d00000089de83c64a89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87c202000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be98eb67b1b94b0000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e8927bfdffe811c2fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24048b7f0c8b7424048b5630c70703000000ff128b7c24048b7f088b7424048b76248b1683fa53740bc70653000000e9ad0100008b3783fe010f858e0100008d6424048b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff77288b7c240cff77388b7c2410ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b3c24ff77148b7c24048b571c8b7c2404ff77208b7c2408ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b3c248b57148b3c248b77188b3c248b4f288b3c248b7f388b1c248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8df79fdffe8667efdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b3c248b7f0c5e8b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442404e8c27efdff5883c404c38d64240cb8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642404b801000000c3f40000|@14889,1,@2280|96,0,@7097 101,0,@13508 108,0,0 113,1,@6581 208,0,@13511 218,0,0 265,0,0 279,0,@10986 429,0,@14887 449,0,4 470,0,16777215 528,0,0 537,0,@14887 542,0,11 590,0,@14888 610,0,4 631,0,16777215 689,0,0 715,0,@14888 720,0,37 741,0,@14533 746,1,@6850 751,1,@6875 789,0,0 796,0,0 803,0,3 809,0,0 849,0,0 855,0,1 875,0,1 904,0,41 970,0,0 984,0,0 1055,0,0 1069,0,0 1171,0,@14532 1176,0,@14533 1181,1,@6850 1186,1,@6852 1224,0,0 1231,0,0 1238,0,3 1244,0,0 1284,0,0 1290,0,1 1306,0,1 1313,0,@14539 1324,0,41 1329,0,@14542 1338,1,@6853 1352,0,@9465 1366,0,@9465 1380,0,0 7097:D3,112|3b650c7305ff552ccd0589d789c28b77083bd67506b801000000c389d683c6088b7f04d1ee0fb63c378d347d0100000083c2028b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4|@13507,1,@2279|22,0,0 7098:D3,308|3b650c7305ff552ccd09538b7c24148b7f088b7424148b76248b3f8b3683fe53740489f7eb0083ff237502eb1083ff0d7502eb0983ff310f85e40000006a016a018b5c24188b7c241c575483042404b8e4db67b1e8d3e8fdffff3424ff7424088b5c2424ff34248b442408e8ccedfdff8b7c241c8b178b7c24188b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b4c240489cf890e8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489ff8938ff126a016a018b7c242c8b7424288b5424248b4c2420575652518b4424188d5c2410e819ffffff5e5f8d6424048b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b342489328d64240c5e8916897e04b801000000c210005fc70701000000894704b801000000c21000f4|@14891,1,@2281|80,0,@14778 85,1,@6890 108,1,@6891 282,0,0 292,0,0 300,0,0 7099:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2283| 7100:D3,36|3b650c7305ff552ccd0583f81f7502eb0a83f83574058b5204ff22b803000000c3f40000|@14673,1,@2284|28,0,1 7101:D3,40|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b5704588d642404ff22f400|@14692,1,@2285| 7102:D3,28|3b650c7305ff552ccd0583f81f7506b803000000c38b5204ff22f400|@14673,1,@2286|16,0,1 7103:D3,272|3b650c7305ff552ccd09538b7c240c8b7f088b74240c8b76248b3f8b3683fe53740489f7eb0083ff237502eb1083ff0d7502eb0983ff310f85be0000006a016a018b5c24108b7c2414575483042404b8e4db67b1e89fe6fdffff3424ff7424086a016a018b7c24248b74242057568b4424108d5c2408e885ffffff595fbe010000008b55008d52f83b55087305ff5528cdc2895500c742fc0100004089328b75008d76f03b75087305ff5528cd86897500c746fc030000008b1c24895e088d6424048956048b142489168d64240c8b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489325e8916897e04b801000000c208005fc70701000000894704b801000000c20800f40000|@14896,1,@2287|80,0,@14778 85,1,@6890 126,0,0 244,0,0 254,0,0 262,0,0 7104:D3,76|3b650c7305ff552ccd056a016a018b7a048b72086a0157548304240856bb01000000e8ad88feff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@14773,1,@2288|30,0,0 35,1,@6955 7105:D3,372|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1289c783ff010f85480100008b7c24048b57088b0424ff1289c783ff010f852a0100008b3c248b1789d68d14550100000083fa037e7a89ff8d34750100000083fe037f0e8d642408b8a01e66b18b5d04ff2389ff0fb67f058d347d01000000bf400666b18b7477fe81fefc0d66b17507bf03000000eb378b3e8d3c7d0100000083ff037524bffc0d66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff83ff037507bf09000000eb05bf010000000bd783ca058b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24088b57048b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff12588d642408c38d6424088b07c38d6424088b07c3f400|@14873,1,@2289|96,0,@9847 119,0,@9476 129,0,@9544 136,0,1 157,0,@9544 168,0,0 179,0,1 186,0,0 193,0,0 200,0,0 205,0,@10423 238,0,9999 255,0,4 262,0,0 7106:D3,28|3b650c7305ff552ccd0583f8057506b803000000c38b5204ff22f400|@14673,1,@2290|16,0,1 7107:D3,1584|3b650c7305ff552ccd0950538b7c241c8b7f088b74241c8b76248b3f8b3683fe53740489f7eb0083ff590f85400200008d6424048b7c24188b7f088b7424188b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424048b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e88e71fdffe81576fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442418e86776fdffff3424ff7424208b7424208b54241c8b4c24188b5c24148b442410894424108b442404895c2414bb03000000894c24188954241c897424208b3c24897c242483c40ce994fdffff8d64240c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70784203ab16a016a018b4424208b5c24248b74242457548304240456e8c766ffffff3424ff7424088b5c242cb823000000e83ecdfdff6a016a018b4424308b7c24348b74242c8b5424288b4c242454575652518b5c2430e834e9feffff3424ff7424088b7c243c8b7f088b74243c8b76248b3f8b3683fe53740489f7eb006a016a0183ff050f85270200008b7c24448b7f088b7424448b76248b1683fa53740bc70653000000e9d10100008b3783fe010f85b20100008d6424308b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff77288b7c2420ff77388b7c2424ff773cb801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b7c2414ff77148b7c24188b571c8b7c2418ff77208b7c241cff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b7c24148b57148b7c24148b77188b7c24148b4f288b7c24148b7f388b5c24148b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8a76efdffe82e73fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b7c24148b7f0c8b7424148b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442444e88073fdff6a016a018b7c244c8b7424488b5424448b4c24408b5c243c5457565251538b44244c8b5c2448e8c9faffff5e5f893424897c2404eb0fc70424010000008b7c2408897c2404ff3424ff7424088b7c24208b3789ff8b4f0889ff8b47108b7c24108b570489ff8b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937be010000008b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76e83b75087305ff5528cd84897500c746fc050000008b4c2430894e1089560c897e088b7c2414897e048b7c2424893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240489570489378b742450893e8b3c24897e048d642418b80100000083c420c21800f4|@14897,1,@2292|75,0,41 142,0,0 156,0,0 239,0,0 253,0,0 368,0,@14532 373,0,@14533 378,1,@6850 383,1,@6852 421,0,0 428,0,0 435,0,3 441,0,0 487,0,0 493,0,1 513,0,1 520,0,@14539 531,0,41 536,0,@14542 545,1,@6853 589,0,1 657,0,@7108 685,1,@7033 701,0,17 706,1,@6880 744,1,@6995 818,0,41 885,0,0 899,0,0 982,0,0 996,0,0 1111,0,@14532 1116,0,@14533 1121,1,@6850 1126,1,@6852 1164,0,0 1171,0,0 1178,0,3 1184,0,0 1230,0,0 1236,0,1 1256,0,1 1263,0,@14539 1274,0,41 1279,0,@14542 1288,1,@6853 1349,0,0 1437,0,0 1573,0,0 7108:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2291|16,0,1 7109:D3,700|3b650c7305ff552ccd0189c7beb4203ab181c61d0000008d74befcffe6e91b020000909090e926020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9d5010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9ac010000909090e983010000909090e9a3010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e96a010000909090e969010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e940010000909090e93f010000909090e9f3000000909090e9eb000000909090e92e010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e995000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083f87b7507bf03000000eb05bf01000000eb44bf03000000eb3dbf03000000eb36bf03000000eb2fbf03000000eb28bf03000000eb21bf03000000eb1abf03000000eb13bf03000000eb0cbf03000000eb05bf0300000083ff037506b803000000c383f8477506b803000000c383f86d7506b803000000c3b801000000c3f4|@14673,1,@2296|13,0,@7109 579,0,1 586,0,0 593,0,1 600,0,1 607,0,1 614,0,1 621,0,1 628,0,1 635,0,1 642,0,1 649,0,1 656,0,1 666,0,1 677,0,1 688,0,1 694,0,0 7110:D3,1196|3b650c7305ff552ccd0950538b3c2489f8ff771889c08b502889d389c08b783c89feff32ff3789c08b780889c08b50248b0a83f953740bc70253000000e9b60100008b1783fa010f859b0100008d64240c89c089c1ff701489c98b511c89c989cfff712089ff89f95389c9ff713856b801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e87468fdffe8fb6cfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b1e8506dfdff8b74240c89f7ff761889ff8b772889ff8b7f3cff36ff376a016a016a016a016a01ff74242c5483042404b8e4db67b1bbfcd667b1e847d8fdffff3424ff742408ff34248b4424088b5c2438e840ddfdffb8230000008b5c2434e86ac4fdff8b7424448b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70744283ab16a016a01bac0d067b18b742448575483042404568b44244c8b5c2448e866e0fdff5b5e8b0c248b3989c98b510889c98b4110ff7604ff760c8b75008d76e83b75087305ff5528cd8f897500c746fc050000008946108b042489460c8956088b542404895604893ebfa0ed67b18b55008d52f83b55087305ff5528cdca895500c742fc01000040893a8b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f1089c9894f0c8957088b54240c895704893757ff742440b805000000bbfcd667b1e861fffdff89c783ff03753c8b75008d76f43b75087303ff5528897500c746fc020000008b7c241c897e048b3c24893e8d642404897424183b650c7303ff552c83c418e98bfeffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c8977048b342489378d642404be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b5424248957108b142489570c8d6424048b5424248957088b14248957048d6424048b542424891789742414897c24188b7c24148b7424188b56048b4e0c8b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2428895e10894e0c8b4c242c894e088956048b54243089168b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000300000083c43cc20800f4|@14911,1,@2299|57,0,41 112,0,0 126,0,0 206,0,0 220,0,0 326,0,@14532 331,0,@14533 336,1,@6850 341,1,@6852 379,0,0 386,0,0 393,0,3 399,0,0 445,0,0 451,0,1 472,0,1 479,0,@14539 490,0,41 495,0,@14542 500,1,@6853 547,0,@14778 552,0,@14750 557,1,@6890 580,1,@6891 585,0,17 594,1,@6880 633,0,@7111 642,0,@14702 666,1,@6894 741,0,@14902 825,0,2 830,0,@14750 835,1,@6906 947,0,0 1185,0,1 7111:D3,36|3b650c7305ff552ccd0583f8057502eb0a83f81f74058b5204ff22b803000000c3f40000|@14673,1,@2297|28,0,1 7112:D3,24|3b650c7305ff552ccd01b80cee67b18b5d04ff23f4000000|@14910,1,@2298|11,0,@14907 7113:D3,28|3b650c7305ff552ccd0183f8677506b803000000c3b801000000c3f4|@14913,1,@2300|16,0,1 22,0,0 7114:D3,960|3b650c7305ff552ccd0950538b3c2489f8ff771889c08b502889d389c08b783c89feff32ff3789c08b780889c08b50248b0a83f953740bc70253000000e9b60100008b1783fa010f859b0100008d64240c89c089c1ff701489c98b511c89c989cfff712089ff89f95389c9ff713856b801000000ff1289c7578b542410b801000000ff1289c78b5424148b328b4c240c89318b342489d289328d6424048b7424048b168b0c2489118d64240489f6893e8d6424108b3c2489feff771489f68b561c89f689f7ff762089ffff7738b801000000ff1289c7578b542408b801000000ff1289c78b34248b54240c89328d6424048b3424893e8d64240c8b1c248b531489db8b731889db8b4b2889db8b7b3889db8b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e82063fdffe8a767fdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700030000008b34248b7e0c89f68b56308d642404c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b1e8fc67fdff8b74240c89f7ff761889ff8b772889ff8b7f3cff36ff376a016a016a016a016a018b7c24408b74243c8b54243857ff74243056ff74243c52b8010000008d5c2414e896010000ff3424ff742408ff742434b805000000bb44dd67b1e8fcfafdff89c783ff0375408d6424048b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e048b3c24893e8d642404897424083b650c7303ff552c83c408e976ffffff8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424108977048b7424048937be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc48b3c248b570489ff8b4f0c8d6424048b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2418895f10894f0c8b4c241c894f088957048b542420891789742410897c24148b7c24108b7424148b56048b4e0c8b75008d76e83b75087305ff5528cd86897500c746fc050000008b5c2424895e10894e0c8b4c2428894e088956048b54242c89168b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000100000083c438c20c00f400|@14915,1,@2308|57,0,41 112,0,0 126,0,0 206,0,0 220,0,0 326,0,@14532 331,0,@14533 336,1,@6850 341,1,@6852 379,0,0 386,0,0 393,0,3 399,0,0 445,0,0 451,0,1 472,0,1 479,0,@14539 490,0,41 495,0,@14542 500,1,@6853 561,0,0 570,1,@7115 586,0,2 591,0,@14784 596,1,@6906 709,0,0 948,0,0 7115:D3,3468|3b650c7305ff552ccd09538b7c24188b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7034c3a3ab16a016a018b7c241c575483042404b8e4cf67b1e806d1fdffff3424ff7424088b5c2424ff34248b442408e8ffd5fdff8b5c2424b843000000e829bdfdff8b7424288b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078c3a3ab18b7424248b76088b5424248b52248b368b1283fa53740489d6eb0083fe5f0f85c90000008b7c24248b57148b7c24248b77188b7c24248b4f288b7c24248b7f388b5c24248b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f0889570489378b55008d52f03b55087305ff5528cd80895500c742fc03000000897a08c7420401000000c70201000000bf010000008b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707100666b1e9720400008b7424248b76088b5424248b52248b368b1283fa53740489d6eb0089f2b9ac2c3ab181c1b10100008d4c91fcffe1e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9ae010000909090e993010000909090e9a5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e964010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9bb000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e99a000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e979000000909090e93b000000909090e970000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909083fe197507be03000000eb05be01000000eb2fbe03000000eb28be03000000eb21be03000000eb1abe03000000eb13be03000000eb0cbe03000000eb05be0300000083fe030f85e20000008b742424ff76188b7424288b56288b7424288b763cff32ff36baccd067b18b4424288b5c24308b74242c5756e8df21feff89c78b7424308b56148b7424308b76388b128b0e8b75008d76e83b75087305ff5528cd86897500c746fc050000005b895e10894e0c59894e088956045a89168b55008d52f03b55087305ff5528cdc0895500c742fc03000000897208897a04c70201000000bf010000008b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707100666b1e9f70000008b7c24288b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703c43a3ab16a016a018b7c242c575483042404b8e4cf67b1e813ccfdffff34248b7c24088b5c2430578b442404e80ed1fdff8b5c2430b813000000e838b8fdff8b7424348b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707083b3ab16a016a01bac0d067b18b4424308b5c24388b74243457548304240456e834d4fdff5a8d642404bf010000008b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088977045e8d6424088937578b5c2428b85f000000e894b7fdff8b7c24288b7f088b7424288b76248b3f8b3683fe53740489f7eb0083ff150f85690200008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424188b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e84159fdffe8c85dfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e8205efdff8b74242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074c3b3ab16a016a01bac0d067b18b4424288b5c24308b74242c57548304240456e894d1fdff5f5a8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460403000000893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e97402000083ff130f85660200008b7c24288b7f088b7424288b76248b1683fa53740bc70653000000e9b80100008b3783fe010f85990100008d6424188b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff77288b7c241cff77388b7c2420ff773cb801000000ff1289c7578b542410b801000000ff1289c78b7424148b368b54240c89325e8b54241089328b7424048b365a89325e8d64240c893e8b7c2410ff77148b7c24148b571c8b7c2414ff77208b7c2418ff7738b801000000ff1289c7578b542408b801000000ff1289c75e8b54240889325e8d642408893e8b7c24108b57148b7c24108b77188b7c24108b4f288b7c24108b7f388b5c24108b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b8a8c067b1bbd4c067b1e8cf56fdffe8565bfdff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700030000008b7c24108b7f0c8b7424108b5630c70703000000ff12b860c167b18b5d04ff23c70753000000baa0c167b18b442428e8ae5bfdff8b74242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c3b3ab16a016a01bac0d067b18b4424288b5c24308b74242c57548304240456e822cffdff5f5a8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460401000000893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000578b5c242cb823000000e884b2fdff6a016a01b998dd67b18b44242c8b5c24348b7c24388b7424308b542428575483042404565289cae86486feffff34248b7c24088b7424148b368b5424148b4a088b5424148b42108b57048b5f0c8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757f6442410010f85a40000008b7c24108b378b3e8b56048b4e08be010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc010000408933be010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e43b75087305ff5528cd8f897500c746fc06000000894614895e10894e0c895608897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000eb048b7c2404578b7c241483ff017507bf03000000eb05bf0100000083f70257be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf010000008b4d008d49f83b4d087305ff5528cdc0894d00c741fc010000408939bf010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040893abf010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893bbf010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7fcc3b7d087305ff5528cd4f897d00c747fc0c00000089472c895f28894f248957208b54242489571c8b5424048957185a8d6424048957148977108b74242089770c8b7424048977085e8977048b74241489378b742428893e5f897e04b80100000083c428c21400f400|@14914,1,@2307|46,0,@7116 65,0,@14693 70,1,@6890 93,1,@6891 102,0,33 107,1,@6880 146,0,@7117 301,0,0 307,0,0 312,0,0 378,0,@9473 417,0,@7115 983,0,1 990,0,0 997,0,1 1004,0,1 1011,0,1 1018,0,1 1025,0,1 1032,0,1 1039,0,1 1078,0,@14703 1097,1,@6934 1198,0,0 1203,0,0 1269,0,@9473 1313,0,@7118 1332,0,@14693 1337,1,@6890 1358,1,@6891 1367,0,9 1372,1,@6880 1411,0,@7119 1420,0,@14702 1444,1,@6894 1454,0,0 1531,0,47 1536,1,@6880 1599,0,41 1666,0,0 1680,0,0 1752,0,0 1766,0,0 1873,0,@14532 1878,0,@14533 1883,1,@6850 1888,1,@6852 1926,0,0 1933,0,0 1940,0,3 1946,0,0 1986,0,0 1992,0,1 2012,0,1 2019,0,@14539 2030,0,41 2035,0,@14542 2044,1,@6853 2083,0,@7120 2092,0,@14702 2116,1,@6894 2154,0,1 2225,0,41 2292,0,0 2306,0,0 2378,0,0 2392,0,0 2499,0,@14532 2504,0,@14533 2509,1,@6850 2514,1,@6852 2552,0,0 2559,0,0 2566,0,3 2572,0,0 2612,0,0 2618,0,1 2638,0,1 2645,0,@14539 2656,0,41 2661,0,@14542 2670,1,@6853 2709,0,@7121 2718,0,@14702 2742,1,@6894 2780,0,0 2817,0,0 2827,0,17 2832,1,@6880 2841,0,@14787 2876,1,@6978 2980,0,0 3013,0,0 3123,0,2 3144,0,1 3151,0,0 3160,0,0 3194,0,0 3227,0,0 3260,0,0 3293,0,0 3326,0,0 3456,0,0 7116:D3,44|3b650c7305ff552ccd0583f8237502eb0c83f8157502eb0583f8137506b803000000c38b5204ff22f4000000|@14673,1,@2301|30,0,1 7117:D3,36|3b650c7305ff552ccd0583f8177502eb0a83f85f74058b5204ff22b803000000c3f40000|@14673,1,@2302|28,0,1 7118:D3,48|3b650c7305ff552ccd0583f8137506b803000000c383f8177502eb0a83f85f74058b5204ff22b803000000c3f4000000|@14673,1,@2303|16,0,1 39,0,1 7119:D3,48|3b650c7305ff552ccd0583f8637506b803000000c383f8177502eb0a83f85f74058b5204ff22b803000000c3f4000000|@14673,1,@2304|16,0,1 39,0,1 7120:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2305|16,0,1 7121:D3,28|3b650c7305ff552ccd0583f8237506b803000000c38b5204ff22f400|@14673,1,@2306|16,0,1 7122:D3,28|3b650c7305ff552ccd0183f82b7506b803000000c3b801000000c3f4|@14917,1,@2309|16,0,1 22,0,0 7123:D3,24|3b650c7305ff552ccd0189c78b078b5f04e916000000f400|@15103,1,@2421|18,1,@7124 7124:D3,352|3b650c7305ff552ccd0983fb017f06b8bc5466b1c38b3089f783fe010f85960000008b78046868cb67b15389fbb8ccef67b1e861a8000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707280068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c383ff030f85960000008b78046868cb67b15389fbb8340068b1e8c2a7000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707740068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b4004e92da50000f4|@15102,1,@2420|16,0,@10437 38,0,@14646 46,0,@14921 51,1,@7221 88,0,@10448 123,0,@15098 159,0,0 166,0,0 173,0,3 179,0,0 197,0,@14646 205,0,@15099 210,1,@7221 247,0,@10448 282,0,@15101 318,0,0 325,0,0 332,0,3 338,0,0 347,1,@7220 7125:D3,24|3b650c7305ff552ccd0189c78b078b5f04e916000000f400|@15097,1,@2418|18,1,@7126 7126:D3,1436|3b650c7305ff552ccd09538b38ff37ff77088b70048b780c8b50186a016a0183fa03755c8b1683fa0575558b4e048b318b51048b59088b410c8b4d008d49f03b4d087305ff5528cdcd894d00c741fc0300000089410889590489118b55008d52f83b55087305ff5528cdc2895500c742fc01000000890a89142489742404eb0bc704240100000089742404ff3424ff7424088b378d1c750100000083fb017507be080e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ba04000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c241889fe81ff100666b17502eb2989f68b3e89fa8d3c7d0100000083ff017521bf100666b189f68d76048d7f0433c93bc9f3a67402eb0abf01000000e9ec0000008b7c241889d68d1c750100000083fb01750abfd4ef67b1e98a00000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87aa03000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013a8062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e0ef67b18937578b5c242083eb02710e8d642424b8f80466b18b5d04ff238b442418e81603000089c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175035eeb0e8b0424e8199c000089c68d6424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c7070100000057f644240c010f85cc0000008b7c240c8b3f8b078b7f0483ff037507be84fd67b1eb05bed4ef67b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c242483eb02710e8d642428b8f80466b18b5d04ff23e83b02000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404eb05bf01000000578b5c242483eb02710e8d642428b8f80466b18b5d04ff238b44240ce8419b000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707387666b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175035feb0e8b0424e8b7aa000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706485566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c41cc38d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff23f40000|@15096,1,@2417|131,0,0 161,0,@9545 178,0,4 199,0,16777215 257,0,0 325,0,3 338,0,@9473 365,0,@9473 388,0,0 416,0,@14922 436,0,4 457,0,16777215 515,0,0 594,0,3 627,0,@14923 648,0,@9455 662,1,@7127 697,0,0 715,1,@7217 757,0,0 764,0,0 771,0,1 777,0,0 810,0,@15075 817,0,@14922 852,0,3 871,0,@9455 881,1,@7127 916,0,0 953,0,@10448 998,0,0 1017,0,@9455 1031,1,@7218 1066,0,0 1103,0,@10448 1138,0,@10969 1173,0,@10448 1189,1,@7231 1230,0,@10447 1303,0,@10448 1377,0,0 1384,0,0 1391,0,3 1397,0,0 1410,0,@9465 1424,0,@9465 7127:D3,904|3b650c7305ff552ccd09538b342489f783fe017f0a8d642404b8bc5466b1c38b1089d683fa050f858a0200008b70048b4604ff7608ff760cff761089fbe8beffffff89c757b801000000e84d03000089c7ba3cf167b1578b44240c8b5c2414e8200b000089c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70707000000578b7c241883ef0257710e8d642420b8f80466b18b5d04ff238b442410e8ca3a000089c757b801000000e8e102000089c7ba48f167b1576878f167b16a018b44240c8b5c2410e8c50e000089c78d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175035feb0e8b0424e8853f000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcf667b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c8f667b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c410c383fe010f859d0000008b580468100666b157b8d4f667b1e8fa9000008d642404e80196000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70724fe67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c70001000000c38d6424048b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4|@15082,1,@2401|26,0,@10437 70,0,0 75,1,@7128 82,0,@14941 96,1,@7133 136,0,3 156,0,@9455 170,1,@7163 178,0,0 183,1,@7128 190,0,@14942 196,0,@14943 211,1,@7139 250,0,0 287,0,@10448 322,0,@10969 357,0,@10448 411,1,@7169 452,0,@10448 487,0,@14996 522,0,@10448 557,0,@14997 592,0,@10448 666,0,0 673,0,0 680,0,3 686,0,0 707,0,@9473 713,0,@14998 718,1,@7212 727,1,@7216 764,0,@10448 799,0,@15081 835,0,0 842,0,1 849,0,0 855,0,0 898,0,3 7128:D3,156|3b650c7305ff552ccd01be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937c707ecef67b1bfffffffff8b75008d76f83b75087305ff5528cd80897500c746fc01000040893eba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700d44a3ab1c3f400|@14940,1,@2316|11,0,0 45,0,@14924 50,0,-1 83,0,0 149,0,@7131 7129:D3,756|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9ac0100008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfcc03c0b08b17ff1289c7578b7c24088b3f8b74240483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70618f067b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70734f067b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@14937,1,@2313|21,0,@11331 39,0,@9455 63,0,@11421 91,0,@9455 132,0,@4716 163,0,@9455 204,0,@4602 243,0,@11424 280,0,@10448 315,0,@14926 350,0,@10448 385,0,@11428 458,0,@10448 493,0,@14928 531,0,@11431 567,0,0 574,0,0 581,0,1 587,0,0 620,0,0 657,0,@10448 692,0,@14930 728,0,0 735,0,0 742,0,1 748,0,0 7130:D3,20|3b650c7305ff552ccd01b8183366b1c3f4000000|@9998,1,@2312|11,0,@9996 7131:D3,496|3b650c7305ff552ccd0552508b7c24048b7f048b3ff7c701000000753f8b178b77048b4a048b098b1c248b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebb9bf01000000f7c70100000075098d6424088b3f8b07c38b7c24048b7f088b3f83c702710e8d642408b8f80466b18b5d04ff238b7424048b7608893e8b3c248b7f0483e70983ff017407bfa0ea67b1eb05bffc0d66b1578b7c24088b7f088b07e84401000089c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045883c404e9a10000008b3c2483ff01750a8d64240858e98f0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87b100000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf8b75008d76f43b75087305ff5528cd01897500c746fc020000005f897e0489068b3c248b7f048b178b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489375e8b7604893ec38d642414b8780566b18b5d04ff23f4000000|@14939,1,@2315|93,0,0 133,0,@9455 166,0,@14881 173,0,@9544 188,1,@7132 270,0,4 291,0,16777215 349,0,0 483,0,@9465 7132:D3,496|3b650c7305ff552ccd01508b3c2483ff350f8c8f0000008b0424bf35000000d1f8d1ff99f7ff8d3c45010000008b0424be35000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642404b8f80466b18b5d04ff23eb0289f883e802710e8d642404b8f80466b18b5d04ff23e85effffff89c7eb05bf100666b158be35000000d1f8d1fe99f7fe8d14550100000083fa017507ba01000000eb2783fa017d07be03000000eb05be0100000083fe017502eb0f83c234710ab8f80466b18b5d04ff2381c2c2000000710ab8f80466b18b5d04ff2383fa017d05e9d700000081faff0100000f8fcb000000be400666b1ff7456fe8b378d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175078d64240889f8c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775c89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff23b8bc0a66b18b5d04ff23f4|@14938,1,@2314|27,0,26 49,0,26 80,0,1 87,0,0 97,0,1 104,0,0 125,0,@9455 148,0,@9455 167,0,@9473 173,0,26 197,0,0 209,0,1 216,0,0 233,0,@9455 251,0,@9455 272,0,255 283,0,@9476 352,0,4 373,0,16777215 427,0,0 476,0,@9465 486,0,@9487 7133:D3,340|3b650c7305ff552ccd0da8010f85360100008b308b780483ff0175648b3e8b76048b45008d40f03b45087305ff5528cdcc894500c740fc03000000897008897804c7000d0000008b52048b7c2404576878f167b16a01ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004b8f167b18938c2040083fb037f08b8c4f167b1c204008b7a048b742404575687c3e81b010000e81a03000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706705566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004b8f167b18938c20400b801000000c20400f4000000|@14951,1,@2322|67,0,6 80,0,@14943 119,0,@14947 134,0,@14948 153,1,@7136 158,1,@7138 195,0,@10625 230,0,@10450 266,0,0 273,0,0 280,0,0 286,0,0 319,0,@14947 329,0,0 7134:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14946,1,@2317|11,0,0 7135:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@14946,1,@2318|11,0,0 7136:D3,396|3b650c7305ff552ccd0950538b7c240489fb83ff017f0c8d642408b8c4f167b1c20800f6042401740c8d642408b801000000c20800f60424010f853e0100008b3c248b378b3e8b76048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c7000d0000008b5424108b7c240c576878f167b16a01ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704d0f167b1893757f6442404010f85bd0000008b7424048b7e0489fbf7c7010000007407bb01000000eb7af7c6010000000f858b0000008b44240883e802710e8d64240cb8f80466b18b5d04ff238b7c24148b7424105756e804ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703645566b183fb0175075883c408c20800588b7c2408897c241083c410e93f0000008d64240cb8e09966b18b5d04ff238d64240cb8e09966b18b5d04ff238d642408b8648e66b18b5d04ff23f4|@14950,1,@2320|28,0,@14948 46,0,0 107,0,6 121,0,@14943 160,0,@14949 196,0,0 228,0,@9455 285,0,@10448 320,0,@10449 349,1,@7137 358,0,@11229 372,0,@11229 386,0,@11149 7137:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2319| 7138:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b83c5566b1c3f4|@10825,1,@2321|66,0,@10446 7139:D3,204|3b650c7305ff552ccd0d5053ff7204ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff742434ff74243cff742444ff742414ff74241cff742424ff74242c8b4424348b5c24388b4c243c8b5424408b74244c8b7c2410897c24288b7c2414897c242c8b7c2418897c24308b7c241c897c24348b7c2420897c24388b7c240c897c243c8b7c2408897c24408944244c8b4424488b3c24897c2448895c24508b5c24448b7c2404897c2444894c2454895424588974242483c424e91b0000008d64244cf40000|@14993,1,@2346|193,1,@7140 7140:D3,4540|3b650c7305ff552ccd0953e88c66fcff89c78b37bad4533ab181c2250000008d54b2fcffe2e933000000909090e937000000909090e93b000000909090e970030000909090e9fa040000909090e918050000909090e9470700009090908d642404b82cf267b1c234008d642404b844f267b1c234008b4704ff77088b7c240483ff017f0c8d642408b8bc5466b1c23400e80766fcff89c7578b3c248b3f83ff050f851b0100008b7c240883ff037f0e8d642404bfbc5466b1e9ff0000008b7c240883ef0257710e8d642410b8f80466b18b5d04ff23ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b4424548b5c2450e8c8feffff89c68d6424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706705566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000e9810000008b7c240883ef0257710e8d642410b8f80466b18b5d04ff23ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b4424548b5c2450e8c4fdffff89c78d642424578b7c240883ef0257710e8d642410b8f80466b18b5d04ff23ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b4424588b5c2450e842fdffff89c68d6424208b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707607266b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c23400ff7704ff77088b74240883fe017f0c8d64240cb8bc5466b1c2340089f8e8fc0d000089c783ff030f85c10000008d6424048b0424e8350f000089c78d64240457ff74243cff74243cff74243cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff74241c6884f267b1ff742420ff742420ff742420ff742420ff742420ff742420ff742420575652515350b8200e66b18b5c245ce8210f000089c78d6424248b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c234008b442404bbc0f267b1e8360df1ff89c7578b7c240c83ef0257710e8d642414b8f80466b18b5d04ff23ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b4424346884f267b1ff74241cff74241cff74241cff74241cff74241cff74241cff74241c5756525153508b4424548b5c2458e8ef15000089c78d6424246a016a018b742408e95d0b0000ff77048b342489f783fe01750c8d642408b844f267b1c234008b74243cff3689ffe9fe060000ff77048b4708ff770c8b3c248b7f0c8b570489d68b1283fa03752089f78b7f048b74241c3bfe7507bf03000000eb05bf0100000083ff037502eb058b3c248b07be010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000408937c70764f367b16a016a018b7c24208b74241c5457ff74241056bb01000000e81e1a0000ff3424ff7424088b3c2483ff01750d8d6424045f83c408e9060100008b7c24108b7f0c8b742428f7c60100000075338b570489d68b1283fa017507ba03000000eb05ba0100000083fa0375168b5424288b1289f78b470cff1289c78b7f088b07eb058b7f088b0781f8100666b17502eb238b388d3c7d0100000083ff017548bf100666b18d70048d7f0433c93bc9f3a67402eb335f83ff0375278b7d008d7ff43b7d087303ff5528897d00c747fc020000005e897704c7071c0f66b183c408eb045f83c408eb5b6a016a018b7c24308b74242c5457ff74242056bb01000000e83a1900005f5e83fe0175068d642410eb315f83ff0375278b7d008d7ff43b7d087303ff5528897d00c747fc020000005e897704c7071c0f66b183c408eb045f83c408f7c701000000753dff378b470483f80175035aeb2ee8e61e000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938e8e3c4ebff89c2eb05ba100666b18b3c248b7f0c8b4f0489ce8b0983f903752c89f78b7f048b74241c3bfe7507bf03000000eb05bf0100000083ff03750e8d642404be01000000e9c40100005f8b7f08e9000100008b77048b7f088b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b3e8b3783fe0375328d6424048b542404ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c2340057ff742404ff742440ff742440ff742440ff742440ff742440ff742440ff742440ff7424408b7424408b54243c8b4c24388b5c24348b442430894424308b442424895c24348b5c2420894c24388954243c897424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245c8b7c241c897c246083c42ce963f7ffff8d64242cf7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470801000000c7470401000000c7070100000057f6442404010f857f0200008b7c24048b078b7c2404ff7704e8a85cfcff89c757f6442404010f84c40000008b0424e8c607000089c783ff037507bf03000000eb168b3c248b3f83ff057507bf03000000eb05bf0100000083f70283ff030f85860000008b7c241083ef0257710e8d642418b8f80466b18b5d04ff23ff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b4424548b5c2450e84bf5ffff89c68d642428e9fd0000008d642408eb048d6424088b7c240883ff037f0abebc5466b1e9e00000008b7c240883ef0257710e8d642410b8f80466b18b5d04ff23ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff7424246884f267b1ff742420ff742420ff742420ff742420ff742420ff742420ff742420575652515350b8380e66b18b5c2458e81e0800008d642420e8251b000089c383fb017507bff0f567b1eb0cb8f0f567b1e8691b000089c78b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000005a89178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c408c234005883c408c2340083ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff0375278b7c243c8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9fa0100008b3c2483ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755289ca8b4a048b5424383bd17507ba03000000eb05ba0100000083fa037534bf0300000083ff0375258b7424348b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98a0100008b3c24eb0e89f73b650c7305ff552ccd80eb8083ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755289ca8b4a048b5424303bd17507ba03000000eb05ba0100000083fa037534bf0300000083ff0375258b74242c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e90a0100008b3c24eb0e89f73b650c7305ff552ccd80eb8083ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755289ca8b4a048b5424283bd17507ba03000000eb05ba0100000083fa037534bf0300000083ff0375258b7424248b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98a0000008b3c24eb0e89f73b650c7305ff552ccd80eb8083ff017507bf01000000eb3f8b178b77048b520c8b5a0489d98b1b83fb030f858001000089ca8b4a048b5424203bd17507ba03000000eb05ba0100000083fa030f855e010000bf0300000083ff0375228b74241c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff01754c8b0424e8e017000089c78d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c234008d6424048b178b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b00000057ff742404ff742440ff742440ff742440ff742440ff742440ff742440ff742440ff7424408b7424408b54243c8b4c24388b5c24348b442430894424308b442424895c24348b5c2420894c24388954243c897424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245c8b7c241c897c246083c42ce974efffff8d64242c89f73b650c7305ff552ccd80e94bfeffff8b1683fa010f85f60000008b56048b7608891424897424048d6424045e83fe03750b8d64240cba041266b1eb1e8d6424045e83fe01750b8d642404ba44b566b1eb098d642404ba3cf667b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000c7430401000000893383fb01750489feeb0989f8e85619000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707889967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c234008b56048b1289d63b650c7305ff552ccdc0e9e9fefffff4000000|@14992,1,@2345|12,1,@6635 21,0,@7140 98,0,@14952 110,0,@14954 137,0,@10437 145,1,@6635 180,0,@10437 204,0,@9455 347,0,@10446 384,0,@10450 420,0,0 427,0,0 434,0,0 440,0,0 464,0,@9455 594,0,@9455 737,0,0 774,0,@10826 809,0,@10905 844,0,@10826 916,0,0 923,0,0 930,0,0 936,0,0 966,0,@10437 976,1,@7141 999,1,@7142 1067,0,@14957 1106,0,@9547 1115,1,@7143 1157,0,0 1164,0,0 1171,0,0 1177,0,0 1189,0,@14959 1194,1,@5475 1216,0,@9455 1278,0,@14957 1325,1,@7146 1366,0,@14954 1427,0,1 1434,0,0 1451,0,0 1485,0,@14963 1509,0,0 1514,1,@7150 1578,0,1 1585,0,0 1623,0,@9473 1646,0,@9473 1702,0,@9568 1737,0,0 1742,1,@7150 1795,0,@9568 1830,1,@7158 1869,1,@4827 1878,0,@9473 1914,0,1 1921,0,0 1935,0,0 2042,0,3 2274,0,0 2298,0,1 2305,0,0 2350,0,0 2383,0,0 2392,0,0 2427,0,3 2460,0,0 2501,0,0 2508,0,0 2514,0,0 2544,1,@6635 2566,1,@7141 2578,0,1 2595,0,1 2602,0,0 2633,0,@9455 2772,0,@10437 2796,0,@9455 2862,0,@14957 2901,0,@9549 2910,1,@7143 2919,1,@7159 2931,0,@14988 2938,0,@14988 2943,1,@7160 2981,0,0 2988,0,0 2995,0,0 3001,0,0 3034,0,0 3072,0,@10448 3139,0,0 3146,0,0 3153,0,0 3159,0,0 3186,0,0 3235,0,1 3242,0,0 3264,0,1 3271,0,0 3308,0,1 3315,0,0 3339,0,1 3346,0,0 3353,0,0 3385,0,1 3442,0,0 3482,0,1 3489,0,0 3499,0,1 3570,0,0 3610,0,1 3617,0,0 3627,0,1 3698,0,0 3738,0,1 3745,0,0 3755,0,1 3826,0,0 3870,0,1 3877,0,0 3891,0,1 3935,0,0 3948,1,@7161 3990,0,0 3997,0,0 4004,0,0 4010,0,0 4057,0,0 4070,0,0 4076,0,5 4296,0,@9630 4317,0,@11423 4328,0,@14991 4363,0,3 4396,0,0 4414,1,@7162 4451,0,@13979 4487,0,0 4494,0,0 4501,0,2 4507,0,0 7141:D3,316|3b650c7305ff552ccd018b3883ff07753c8b700489f7f7c601000000751c8b7604f7c6010000007407be03000000eb05be0100000083f602eb05be0100000083fe0375098b70086a016a01eb06b801000000c38b1683fa0175228b56048b7608891424897424048d6424045e83fe0375056a0357eb19b801000000c38b56048b1289d63b650c7305ff552ccdc0ebc4f60424010f85980000008b34248b3e89f6ff7604ff37ba803066b18b44240cbb03000000e8ecf9ebff89c78b142489d63bd775068d642404eb3289f68b168d1455010000008b1f89d98d1c5d010000003bd3754489f68d76048d6424048d7f043bc9f3a674068d64240ceb308b74240883c602710e8d64240cb8f80466b18b5d04ff235a891424897424043b650c7303ff552ce968ffffff8d642410b801000000c38d642408b803000000c3f4|@14956,1,@2323|42,0,1 49,0,0 59,0,0 78,0,0 119,0,0 166,0,@9967 175,0,1 180,1,@4896 265,0,@9455 300,0,0 310,0,1 7142:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@2324|69,0,0 7143:D3,1716|3b650c7305ff552ccd0950538b7c2444f7c7010000000f85880600008b7c24448b078b7c2444ff77048b3c2483ff010f854a0200008d642404e8de52fcff89c7578b7c240881ff200e66b17502eb358b7c24088b3f8d3c7d0100000083ff030f8583010000bf200e66b18b7424088d76048d7f04b9010000003bc9f3a67405e9640100008b3c248b3f83ff057502eb148b0424e8b8fdffff89c783ff037405e9440100008b7c240483ff037f0e8d64240cbfbc5466b1e9070100008b7c240483ef0257710e8d642410b8f80466b18b5d04ff23ff742448ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b5424508b4424588b5c2454ff1289c68d6424288b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747043c5566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706705566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000083c4088b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c23c00ff742444ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b5424508b4424548b5c2458ff1289c78d6424288b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c404c23c008b7c240483ff017f0c8d64240cb8c4f167b1c23c00e88350fcff89c7578b7c240c81ff200e66b17502eb358b7c240c8b3f8d3c7d0100000083ff030f855c010000bf200e66b18b74240c8d76048d7f04b9010000003bc9f3a67405e93d0100008b3c248b3f83ff057502eb148b0424e85dfbffff89c783ff037405e91d0100008b7c240883ff037f0e8d642404babc5466b1e9040100008b7c240883ef0257710e8d642414b8f80466b18b5d04ff23ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b5424508b4424588b5c2454ff1289c78d6424288b75008d76f43b75087305ff5528cd80897500c746fc02000000c746043c5566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b55008d52e83b55087305ff5528cd80895500c742fc05000000897a10c7420c01000000c7420801000000c7420401000000c70201000000eb6eff742448ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b5424508b4424548b5c245cff1289c28d6424248b7c240881ff380e66b17507bf03000000eb3f8b7c24088b3f8d3c7d0100000083ff037528bf380e66b18b7424088d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f7028b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2408894f04c707070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489378b75008d76f43b75087305ff5528cd84897500c746fc02000000897e0489168b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c240883ef0257710e8d642414b8f80466b18b5d04ff23ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742428ff742420ff742420ff742420ff742420ff742420ff742420ff742420ff7424205756525153508b44246c8b5c245ce8aff9ffff89c68d6424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c408c23c008d642408b801000000c23c00f4000000|@14958,1,@2325|58,1,@6635 71,0,@9547 102,0,@9547 117,0,0 148,1,@7141 178,0,@10437 202,0,@9455 350,0,@10446 387,0,@10450 423,0,0 430,0,0 437,0,0 443,0,0 479,0,0 627,0,0 653,0,@14948 661,1,@6635 674,0,@9547 705,0,@9547 720,0,0 751,1,@7141 781,0,@10437 805,0,@9455 953,0,@10446 990,0,@10450 1026,0,0 1033,0,0 1040,0,0 1046,0,0 1168,0,@9549 1175,0,1 1200,0,@9549 1215,0,0 1226,0,1 1233,0,0 1240,0,0 1276,0,0 1285,0,1 1324,0,3 1357,0,0 1457,0,0 1464,0,0 1471,0,0 1477,0,0 1497,0,@9455 1654,0,@10448 1705,0,0 7144:D3,52|3b650c7305ff552ccd018b388b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700646e3ab1c3f4000000|@14961,1,@2327|43,0,@7145 7145:D3,124|3b650c7305ff552ccd0589d68b388b560489d08b128d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d989c68d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37706b803000000c3b801000000c383ff017f06b803000000c3b801000000c3f400|@14960,1,@2326|66,0,0 73,0,1 80,0,-1 94,0,1 100,0,0 111,0,1 117,0,0 7146:D3,936|3b650c7305ff552ccd0950f6c3010f85870300008b33ff73048b3eff76048b74240883fe017f0c8d64240cb8c4f167b1c238008b378d1c750100000083fb017507bee00e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871b03000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a3a8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c240c83ef0257710e8d642414b8f80466b18b5d04ff23ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b7c244c8b7424488b5424448b4c24408b5c243c8b442438ff742418ff742418ff742418ff742418ff742418ff742418ff7424185756525153508b5424508b44245c8b5c2454ff1289c78d6424248b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938f60424017407bb01000000eb05bb286d66b183fb01750489c7eb07e8c101000089c78b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757f644240401740abb01000000e9ac0000008b7c240883ef0257710e8d642410b8f80466b18b5d04ff23ff742448ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff74241cff74241cff74241cff74241cff74241cff74241cff74241cff74241c5756525153508b4424588b5c2460e813fdffff89c78d6424248b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175065e83c408eb0e8b0424e8f700000089c68d64240c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c238008d64240cb8780566b18b5d04ff238d642404b801000000c23800f4|@14962,1,@2330|44,0,@14948 66,0,@9563 83,0,4 104,0,16777215 162,0,0 230,0,3 250,0,@9455 398,0,0 435,0,@10448 482,0,0 489,0,@10822 503,1,@7147 541,0,0 548,0,0 555,0,0 561,0,0 594,0,0 609,0,0 633,0,@9455 786,0,@10448 805,1,@7148 847,0,0 854,0,0 861,0,0 867,0,0 900,0,0 914,0,@9465 928,0,0 7147:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2328| 7148:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2329| 7149:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b86cf367b1c389d783fa037d06b8b4ab66b1c383fe037506b8e0f367b1c383ff037d06b8b4ab66b1c3b828f467b1c3f400|@14979,1,@2331|21,0,@11331 36,0,@14964 49,0,@11331 60,0,@14971 71,0,@11331 77,0,@14975 7150:D3,352|3b650c7305ff552ccd095381f8100666b17502eb238b388d3c7d0100000083ff017531bf100666b18d70048d7f0433c93bc9f3a67402eb1c8b7c24148b342489378d642404c7470405000000b801000000c210006a016a0189e3e8c56dfcffff34248b7424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c8957048937578b4424188b7c24208b74241c57568b5c2408e8d300000089c783ff057539ff7424048b4424048b7424288b5424248b4c24208b5c241c895c241c89c38b0424894c2420895424248974242883c418e923ffffff8d64240c83ff03755a6a016a018b7c24288b7424248b542420545756528b44241c8b5c2418e8f9feffff5e5f8d64240883ff0175158d64240c8b5424108932897a04b801000000c210008d64240c8b7c24108937c7470403000000b801000000c210008b7c24248b342489378d642404c7470401000000b80100000083c410c21000f4|@14986,1,@2339|13,0,@9473 36,0,@9473 72,0,2 77,0,0 91,1,@6665 157,1,@7151 288,0,0 308,0,1 313,0,0 336,0,0 341,0,0 7151:D3,504|3b650c7305ff552ccd0989c7f6c3010f85d80100008b03ff73048b342483fe010f85cb0000008d6424048b17ff1289c783ff017508b805000000c208008b378b3eff7604ff378b7c24108b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70360773ab16a016a016a016a018b44241c68b0f467b168b0f467b16a01548304240ce89568fcffff74240c8b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2418897b04c703f8773ab16a016a016a016a0168b0f467b168b0f467b16a01548304240c8b442434e84a68fcff8d64240c5b8b0424e89d6efcff8d64241c83f002c208008b5704ff1289c783ff01750c8d642404b805000000c208008b378b3e8b7f08ff76048b07ff7710ba3c4966b1e8eed5edff89c78b77208b4f308b54240489d783fa0175065a83c404eb3189ff8b3f8b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a088b3c24897a048d642408c70270783ab18b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000897708895704c707a4783ab18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c70644793ab18b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489385b8b7424088b5424048954240489742408e913feffffb805000000c20800f40000|@14985,1,@2338|54,0,2 105,0,@7152 122,0,@14981 127,0,@14981 139,1,@6661 180,0,@7154 193,0,@14981 198,0,@14981 214,1,@6661 227,1,@6666 258,0,2 281,0,@10267 286,1,@4989 360,0,@7155 398,0,@7156 436,0,@7157 494,0,2 7152:D3,100|3b650c7305ff552ccd058b7a0489fef7c70100000075438b480489cf8b0983f9017507b903000000eb05b90100000083f90375268b168b470cff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@14980,1,@2332|36,0,1 43,0,0 91,0,0 7153:D3,12|3b650c7305ff552ccd01c3f4|@14982,1,@2333| 7154:D3,100|3b650c7305ff552ccd058b7a0489fef7c70100000075438b480489cf8b0983f9017507b903000000eb05b90100000083f90375268b168b470cff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@14980,1,@2334|36,0,1 43,0,0 91,0,0 7155:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9687bfcfff4000000|@13922,1,@2335|24,1,@6694 7156:D3,140|3b650c7305ff552ccd05528b3c248b5708ff1289c7f7c70100000075648b378b55008d52f83b55087305ff5528cd40895500c742fc010000008b3c248b7f048d642404893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f4|@14983,1,@2336|134,0,0 7157:D3,140|3b650c7305ff552ccd05528b3c248b5708ff1289c7f7c70100000075648b378b55008d52f83b55087305ff5528cd40895500c742fc010000008b3c248b7f048d642404893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f4|@14984,1,@2337|134,0,0 7158:D3,108|3b650c7305ff552ccd01a8017556ff308b4004e8e8ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700500e66b1c3b801000000c3f400|@14987,1,@2340|95,0,@9551 101,0,0 7159:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@2341|66,0,@10624 7160:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2342| 7161:D3,820|3b650c7305ff552ccd01a80175178b388b400483f80175088b7708e9b70100008b7708eb06b801000000c3f7c60100000075388b0e8b56048b1983fb01751e8b75008d76f83b75087305ff5528cd83897500c746fc01000000890eeb1389d63b650c7305ff552ccdc1ebc0be01000000f7c60100000075698b0e89ca8b0983f9017507b903000000eb05b90100000083f903754d89d68b76048b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c702010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c74604010000008916eb05be010000008b178b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770cc7470801000000c7470401000000c7070100000057e898feffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcf567b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f7c60100000075388b0e8b56048b1983fb01751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebc0be01000000f7c60100000075698b0e89ca8b0983f9017507b903000000eb05b90100000083f903754d89d68b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be010000008b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3f400|@14990,1,@2343|38,0,0 108,0,0 132,0,1 139,0,0 184,0,0 217,0,0 226,0,0 263,0,3 296,0,0 337,0,0 344,0,0 350,0,0 393,0,@14989 428,0,@10625 536,0,0 560,0,1 567,0,0 612,0,0 645,0,0 654,0,0 691,0,3 724,0,0 765,0,0 772,0,0 778,0,0 811,0,0 7162:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2344| 7163:D3,776|3b650c7305ff552ccd018b38bed07e3ab181c61d0000008d74befcffe6e92b000000909090e929000000909090e9bd000000909090e9fe000000909090e925010000909090e943020000909090b8902d66b1c38b78048b7714ff368b07ff7704ff7710e8b402000089c78b55008d52f43b55087305ff5528cd80895500c742fc020000008b34248972048d642404c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40e83b45087305ff5528cdc0894500c740fc050000008970108b74240489700c8b34248970088d642408897804c7000b000000c38b7804ff700c89f8e804ffffff89c7578b442404e8f8feffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c70005000000c38b70048b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c38b7804ff700889f8e818020000e86b2cfcff89c7578b0424e8f802000089c68b55008d52f03b55087305ff5528cd40895500c742fc030000008b4c240489cf894a08897204c7020100000089ff89fe83ff037502eb3f8b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088b14248957048d642404c7070700000089f683fe038d642404750389f8c3bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c7000d000000893ec38b4004e847020000bb03000000e82da3fbff89c7578b0424e8a202000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70007000000c3f4000000|@14995,1,@2352|13,0,@7163 78,0,@9922 100,1,@7164 144,0,0 177,0,0 234,0,5 307,0,2 354,0,6 368,1,@7165 373,1,@6621 384,1,@7166 430,0,0 504,0,1 549,0,3 568,0,@10423 601,0,9999 646,0,6 657,1,@7167 662,0,1 667,1,@6475 678,1,@7168 713,0,1 722,0,0 767,0,3 7164:D3,92|3b650c7305ff552ccd0189c7f7c70100000075418b07ff7704ba8cf667b1ff1289c7578b442404e8d4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@2347|26,0,@14994 86,0,0 7165:D3,220|3b650c7305ff552ccd01a8010f85c20000008b30ff70048b3e8b4604ff37ba8cf667b1ff1289c7578b442404e83f28fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b56048957048b3689378b378b57048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b442404e855ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10030,1,@2348|31,0,@14994 45,1,@6619 213,0,0 7166:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2349|68,0,0 7167:D3,92|3b650c7305ff552ccd0189c7f7c70100000075418b07ff7704ba8cf667b1ff1289c7578b442404e8d4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@2350|26,0,@14994 86,0,0 7168:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2351|68,0,0 7169:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2353| 7170:D3,28|3b650c7305ff552ccd0189c7badcf667b18b078b5f04ff22f4000000|@15080,1,@2399|13,0,@14999 7171:D3,1920|3b650c7305ff552ccd09538b3c2483ff017f0a8d642404b8bc5466b1c38b38be10853ab181c6300000008d74befcffe6e92b000000909090e93b000000909090e920030000909090e9bc030000909090e979040000909090e90c0500009090908b40045b83eb02710ab8f80466b18b5d04ff23e91c0700008b78088b700c8b3ff7c6010000000f8510020000ff368b378d1c750100000083fb01750abed4ef67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87be01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013a8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c240883ef0257710e8d642410b8f80466b18b5d04ff238b442408e84df8ffff89c757b801000000e864c0ffff89c7ba48f167b1576878f167b16a018b44240c8b5c2410e848ccffff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8fc67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4f967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c38d642408b8780566b18b5d04ff238d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8fc67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4f967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c38b58045f83ef02710ab8f80466b18b5d04ff2368100666b157b8d8fc67b1e88c4e000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728fd67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b78088b580c83ff037407bf01000000eb05bf34fd67b15768040f66b1ff742408b840fd67b1e8e04d000089c383fb0175065f83c404eb0e8b0424e80751000089c78d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70770fd67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b58046868cb67b1ff742404b87cfd67b1e8304d000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0fd67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b7808ff700c8b3f8b378d1c750100000083fb01750abed4ef67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87be01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013a8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c240883ef0257710e8d642410b8f80466b18b5d04ff238b442408e86af3ffff89c757b801000000e881bbffff89c7ba48f167b1576878f167b16a018b44240c8b5c2410e865c7ffff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8fc67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774fc67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c38d642408b8780566b18b5d04ff23f4|@15079,1,@2398|24,0,@10437 32,0,@7171 106,0,@9455 116,1,@7172 157,0,@14922 177,0,4 198,0,16777215 256,0,0 333,0,3 353,0,@9455 367,1,@7163 375,0,0 380,1,@7128 387,0,@14942 393,0,@14943 408,1,@7139 447,0,0 484,0,@10448 555,0,@15065 590,0,@15031 626,0,0 633,0,0 640,0,0 646,0,0 659,0,@9465 703,0,3 736,0,0 773,0,@15065 808,0,@15031 844,0,0 851,0,0 858,0,0 864,0,0 879,0,@9455 889,0,@9473 895,0,@15066 900,1,@7212 937,0,@10448 972,0,@15069 1008,0,0 1015,0,1 1022,0,3 1028,0,0 1045,0,0 1052,0,@15070 1058,0,@9566 1067,0,@15071 1072,1,@7212 1093,1,@7214 1134,0,@10448 1169,0,@15073 1205,0,0 1212,0,0 1219,0,3 1225,0,0 1234,0,@14646 1243,0,@15074 1248,1,@7212 1289,0,@10448 1324,0,@15078 1360,0,0 1367,0,0 1374,0,3 1380,0,0 1408,0,@14922 1428,0,4 1449,0,16777215 1507,0,0 1584,0,3 1604,0,@9455 1618,1,@7163 1626,0,0 1631,1,@7128 1638,0,@14942 1644,0,@14943 1659,1,@7139 1698,0,0 1735,0,@10448 1806,0,@15065 1841,0,@15061 1877,0,0 1884,0,0 1891,0,0 1897,0,0 1910,0,@9465 7172:D3,9124|3b650c7305ff552ccd09538b342489f783fe017f0a8d642404b8bc5466b1c38b30baa48c3ab181c2320000008d54b2fcffe2e9f3000000909090e9ac040000909090e9d9050000909090e96a080000909090e9da090000909090e9020c0000909090e9400d0000909090e9fb0e0000909090e97e110000909090e980110000909090e921120000909090e9c7120000909090e968130000909090e909140000909090e979150000909090e99e150000909090e99d160000909090e9ca170000909090e970180000909090e99d190000909090e9e21a0000909090e9851b0000909090e9b21c0000909090e95c1d0000909090e9151e0000909090e9c91e0000909090e9711f0000909090e967200000909090e969200000909090e9ff200000909090e9702200009090908b7004ff368b4608ff76108b760c83fe030f854302000089ff83ef02710e8d64240cb8f80466b18b5d04ff235768e4f667b1bb68cb67b1e85e25000089c757f6442404017407bf01000000eb788b7c240c83ef02710e8d642410b8f80466b18b5d04ff235768acf767b18b44240cbb68cb67b1e822250000e8b92a000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4f767b1578b7c241083ef02710e8d642414b8f80466b18b5d04ff23576800f867b18b442414bbec0e66b1e8a924000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703907666b183fb0175035beb0e8b0424e81e2a000089c38d64240483fb017507bbb8f167b1eb0cb8b8f167b1e8662a000089c383fb0175065f83c40ceb0e8b0424e8b52a000089c78d6424108b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70754f867b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c389ff83ef02710e8d64240cb8f80466b18b5d04ff235768e4f667b1bb68cb67b1e81b23000089c757f644240401740abb01000000e9960000008b7c240c83ef02710e8d642410b8f80466b18b5d04ff235768acf767b18b44240cbb68cb67b1e8dc22000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4f767b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175065f83c40ceb0e8b0424e8b229000089c78d6424108b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70760f867b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b7004ff700889fb83eb02710e8d642408b8f80466b18b5d04ff2389f0e8f3faffff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e8d0faffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076cf867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38b7004ff76048b4e0489ca8b1983fb330f859a0100008b4904f6c10175348b4904f6c10175258b490483f90175168b4e0c83f9037507b903000000eb05b901000000eb05b901000000eb05b901000000eb05b90100000083f9030f85500100008d6424048b52048b028b5204ff32ff3689fb83eb02710e8d64240cb8f80466b18b5d04ff23e856f9ffff89c7578b4424048b5c240ce846f9ffff89c7578b5c241083eb02710e8d642414b8f80466b18b5d04ff238b44240ce823f9ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c40cc38b0689fb83eb02710e8d642408b8f80466b18b5d04ff23e814f8ffff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e8f1f7ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c38b70048b06ff760489fb83eb02710e8d642408b8f80466b18b5d04ff23e825f7ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460478f867b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70690f867b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c240883ef02710e8d64240cb8f80466b18b5d04ff2357689cf867b18b44240cbbf81166b1e81a1d000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38b70048b06ff7604ff760889fb83eb02710e8d64240cb8f80466b18b5d04ff23e8aaf5ffff89c7578b5c240c83eb02710e8d642410b8f80466b18b5d04ff238b442404e887f5ffff89c7578b5c241083eb02710e8d642414b8f80466b18b5d04ff238b44240ce864f5ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707607066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707487066b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707307066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c40cc3ff70048b400889fb83eb02710e8d642408b8f80466b18b5d04ff23e87ff3ffff89c7578b442404e89fe5ffff89c757b801000000e8b6adffff89c7ba48f167b1576878f167b16a018b44240c8b5c2418e89ab9ffff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240c8b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38d6424048b78048b57088b7f0c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70760f867b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707387666b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70760f867b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b7804ff70088b1789d683fa030f85dd0000008b4704ba803066b1bb03000000e815c4ebff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706dcf867b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000e9e800000083fe010f85da0000008b4704ba803066b1bb03000000e82fc3ebff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e8f867b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000eb05bff4f867b1578b7c240883ef02710e8d64240cb8f80466b18b5d04ff23576800f967b18b44240cbb100666b1e85615000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38d642404b838f967b1c38b400489ff83ef028d642404710ab8f80466b18b5d04ff23576854f967b1bb68cb67b1e89d14000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4f967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b400489ff83ef028d642404710ab8f80466b18b5d04ff23576800f867b1bbec0e66b1e8f4130000e83720000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b400889ff83ef028d642404710ab8f80466b18b5d04ff2357689cf867b1bbf81166b1e84613000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e0f967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b400489ff83ef028d642404710ab8f80466b18b5d04ff235768ecf967b1bb68cb67b1e89d12000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e8fa67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b7004ff700889fb83eb02710e8d642408b8f80466b18b5d04ff2389f0e836ebffff89c7578b7c240883ef02710e8d64240cb8f80466b18b5d04ff2357689cf867b18b44240cbbf81166b1e8cc11000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4fa67b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c38d6424048b78048b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3ff7004ff700c89fb83eb02710e8d64240cb8f80466b18b5d04ff238b0424e8582900008b7c240483ff03750b8d64240cbbcc9867b1eb64f60424018d642404740b8d642408be44b566b1eb098d642408be3cf667b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707070000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c6eb07e8562d000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707889967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c70001000000c38b7004ff700889fb83eb02710e8d642408b8f80466b18b5d04ff2389f0e88ae8ffff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e867e8ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074cfb67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38b400889ff83ef028d642404710ab8f80466b18b5d04ff235768fcf967b1bb380e66b1e8130e0000e8fa2b000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38d6424048b50088b78108b1f81fb8c7467b17502eb288b3b89f88d3c7d0100000083ff15756abf8c7467b18d73048d7f0433c983c10a3bc9f3a67402eb528b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c7470458fb67b189178b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700c00d66b1e8a479ebff89c7e98100000081fba4df67b17502eb2689c78d3c7d0100000083ff117567bfa4df67b18d73048d7f0433c983c1083bc9f3a67402eb4f8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c7470458fb67b189178b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70064fb67b1e82279ebff89c7eb0289d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c38b7004ff368b46048b760883fe037507ba9cca67b1eb05ba3c7566b18b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000005689ff83ef02710e8d64240cb8f80466b18b5d04ff23576800f867b1bbec0e66b1e8f30b000089c7578b7c240c83ef02710e8d642410b8f80466b18b5d04ff23576800f867b18b442410bbec0e66b1e8c50b0000e8082a000089c383fb017507bb70fb67b1eb0cb870fb67b1e84c2a000089c383fb0175035feb0e8b0424e89e2a000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c408c38b70048b0689ff83ef028d642404710ab8f80466b18b5d04ff23576888fb67b1bb100666b1e8e10a000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ccfb67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b7004ff700889fb83eb02710e8d642408b8f80466b18b5d04ff2389f0e87ae3ffff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e857e3ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d8fb67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38b400489fbe85de2ffff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c38b400489fb83eb028d642404710ab8f80466b18b5d04ff23e898e1ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e4fb67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c38d6424048b78048b378d0c750100000083f9017507bfcc0d66b1eb7289ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01777089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c64204238d77048d7a05d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3b8780566b18b5d04ff238b400489ff83ef028d642404710ab8f80466b18b5d04ff235768fcf967b1bb380e66b1e8d406000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707206066b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700705566b1e83b26000089c78b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b4004a80175228b308b761483fe037507be03000000eb05be0100000083fe037507ba28ca67b1eb05bae0c967b18b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706070000005689ff83ef02710e8d642408b8f80466b18b5d04ff235768acf767b1bb68cb67b1e8d505000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c38d642404b8f0fb67b1c38b400489fb83eb028d642404710ab8f80466b18b5d04ff23e83725000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774fc67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3ff70048b400889fb83eb02710e8d642408b8f80466b18b5d04ff23e8c2ddffff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e89fddffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780fc67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cfc67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c38d642404b8947266b1c3f40000|@15064,1,@2392|26,0,@10437 34,0,@7172 333,0,@9455 344,0,@15000 349,0,@14646 354,1,@7175 369,0,0 389,0,@9455 400,0,@15006 409,0,@14646 414,1,@7175 419,1,@7179 456,0,@10448 491,0,@15008 510,0,@9455 521,0,@15009 530,0,@9564 535,1,@7175 573,0,0 580,0,1 587,0,3 593,0,0 626,0,0 663,0,@10448 698,0,@10973 714,1,@7181 730,0,@14947 737,0,@14947 742,1,@7182 763,1,@7183 804,0,@10448 839,0,@15012 875,0,0 882,0,1 889,0,3 895,0,0 912,0,@9455 923,0,@15000 928,0,@14646 933,1,@7175 948,0,0 971,0,@9455 982,0,@15006 991,0,@14646 996,1,@7175 1033,0,@10448 1068,0,@15008 1103,0,@10448 1122,1,@7184 1163,0,@10448 1198,0,@15013 1234,0,0 1241,0,1 1248,0,3 1254,0,0 1277,0,@9455 1310,0,@9455 1359,0,0 1396,0,@10448 1431,0,@15014 1466,0,@10448 1540,0,0 1547,0,1 1554,0,3 1560,0,0 1623,0,1 1630,0,0 1637,0,0 1644,0,0 1651,0,0 1692,0,@9455 1739,0,@9455 1788,0,0 1825,0,@10448 1898,0,@10448 1972,0,0 1979,0,0 1986,0,0 1992,0,0 2014,0,@9455 2045,0,@9455 2094,0,0 2131,0,@10448 2205,0,0 2212,0,0 2219,0,0 2225,0,0 2253,0,@9455 2298,0,@15015 2335,0,@10448 2370,0,@15017 2406,0,0 2413,0,0 2420,0,0 2426,0,0 2445,0,@9455 2456,0,@15018 2465,0,@9629 2470,1,@7175 2507,0,@10448 2581,0,0 2588,0,1 2595,0,3 2601,0,0 2632,0,@9455 2663,0,@9455 2698,0,@9455 2747,0,0 2784,0,@10448 2819,0,@10873 2854,0,@10448 2927,0,@10448 2962,0,@10871 2997,0,@10448 3070,0,@10448 3105,0,@10869 3141,0,0 3148,0,0 3155,0,0 3161,0,0 3187,0,@9455 3209,1,@7163 3217,0,0 3222,1,@7128 3229,0,@14942 3235,0,@14943 3250,1,@7139 3289,0,0 3326,0,@10448 3361,0,@15020 3396,0,@10448 3470,0,0 3477,0,0 3484,0,3 3490,0,0 3539,0,3 3574,0,3 3607,0,0 3644,0,@10448 3679,0,@15013 3714,0,@10448 3749,0,@10969 3784,0,@10448 3850,0,@10448 3885,0,@15013 3921,0,0 3928,0,1 3935,0,3 3941,0,0 3969,0,@9967 3974,0,1 3979,1,@4896 4016,0,3 4049,0,0 4086,0,@10448 4121,0,@15021 4157,0,0 4164,0,0 4171,0,0 4177,0,0 4199,0,@9967 4204,0,1 4209,1,@4896 4246,0,3 4279,0,0 4316,0,@10448 4351,0,@15022 4387,0,0 4394,0,0 4401,0,0 4407,0,0 4414,0,@15023 4433,0,@9455 4444,0,@15024 4453,0,@9473 4458,1,@7175 4495,0,@10448 4569,0,0 4576,0,1 4583,0,3 4589,0,0 4602,0,@15026 4622,0,@9455 4633,0,@15028 4638,0,@14646 4643,1,@7175 4680,0,@10448 4715,0,@15031 4751,0,0 4758,0,1 4765,0,3 4771,0,0 4791,0,@9455 4802,0,@15009 4807,0,@9564 4812,1,@7175 4817,1,@7190 4854,0,@10625 4889,0,@10450 4925,0,0 4932,0,1 4939,0,3 4945,0,0 4965,0,@9455 4976,0,@15018 4981,0,@9629 4986,1,@7175 5023,0,@10448 5058,0,@15032 5094,0,0 5101,0,1 5108,0,3 5114,0,0 5134,0,@9455 5145,0,@15033 5150,0,@14646 5155,1,@7175 5192,0,@10448 5227,0,@15040 5263,0,0 5270,0,1 5277,0,3 5283,0,0 5306,0,@9455 5339,0,@9455 5350,0,@15018 5359,0,@9629 5364,1,@7175 5401,0,@10448 5436,0,@15041 5472,0,0 5479,0,1 5486,0,3 5492,0,0 5525,0,0 5562,0,@10448 5636,0,0 5643,0,0 5650,0,0 5656,0,0 5704,0,3 5727,0,@9455 5740,1,@7200 5758,0,@13967 5779,0,@11423 5790,0,@14991 5825,0,3 5858,0,0 5874,1,@7201 5911,0,@13979 5947,0,0 5954,0,0 5961,0,2 5967,0,0 5990,0,@9455 6023,0,@9455 6072,0,0 6109,0,@10448 6144,0,@15044 6179,0,@10448 6253,0,0 6260,0,1 6267,0,3 6273,0,0 6296,0,@9455 6307,0,@15035 6312,0,@9549 6317,1,@7175 6322,1,@7202 6359,0,@10625 6394,0,@10867 6430,0,0 6437,0,1 6444,0,3 6450,0,0 6469,0,@13535 6494,0,@13535 6546,0,@15045 6583,0,@9539 6588,1,@4827 6601,0,@14803 6624,0,@14803 6676,0,@15045 6713,0,@15046 6718,1,@4827 6759,0,3 6781,0,@14631 6788,0,@10953 6823,0,3 6840,0,@9455 6851,0,@15009 6856,0,@9564 6861,1,@7175 6882,0,@9455 6893,0,@15009 6902,0,@9564 6907,1,@7175 6912,1,@7203 6924,0,@15047 6931,0,@15047 6936,1,@7204 6954,1,@7205 6995,0,@10448 7069,0,0 7076,0,0 7083,0,3 7089,0,0 7114,0,@9455 7125,0,@15049 7130,0,@9473 7135,1,@7175 7172,0,@10448 7207,0,@15051 7243,0,0 7250,0,1 7257,0,3 7263,0,0 7286,0,@9455 7319,0,@9455 7368,0,0 7405,0,@10448 7440,0,@15052 7475,0,@10448 7549,0,0 7556,0,1 7563,0,3 7569,0,0 7622,0,@10624 7659,0,@10625 7694,0,@10450 7730,0,0 7737,0,0 7744,0,0 7750,0,0 7770,0,@9455 7815,0,0 7852,0,@10448 7887,0,@15053 7923,0,0 7930,0,0 7937,0,0 7943,0,0 7970,0,@9540 7987,0,4 8008,0,16777215 8062,0,0 8121,0,3 8127,0,@9465 8151,0,@9455 8162,0,@15035 8167,0,@9549 8172,1,@7175 8209,0,@10625 8244,0,@10450 8249,1,@7207 8287,0,0 8294,0,1 8301,0,3 8307,0,0 8330,0,1 8337,0,0 8347,0,@14622 8354,0,@14616 8389,0,3 8406,0,@9455 8417,0,@15006 8422,0,@14646 8427,1,@7175 8464,0,@10448 8538,0,0 8545,0,1 8552,0,3 8558,0,0 8571,0,@15054 8591,0,@9455 8601,1,@7208 8638,0,@10448 8673,0,@15061 8709,0,0 8716,0,1 8723,0,3 8729,0,0 8752,0,@9455 8783,0,@9455 8832,0,0 8869,0,@10448 8904,0,@15062 8939,0,@10448 9012,0,@10448 9047,0,@15063 9083,0,0 9090,0,0 9097,0,0 9103,0,0 9116,0,@10909 7173:D3,368|3b650c7305ff552ccd018b38ff7004ff37ff7708ff7714b801000000e87796ffff89c7ba3cf167b1578b4424048b5c2410e84a9effff89c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70707000000578b7c241483ef02710e8d642418b8f80466b18b5d04ff235768ecf667b18b442414bbf81166b1e88202000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175065f83c410eb0e8b0424e8ee04000089c78d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3f40000|@15005,1,@2357|24,0,0 29,1,@7128 36,0,@14941 50,1,@7133 90,0,3 109,0,@9455 120,0,@15001 129,0,@9629 134,1,@7175 171,0,@10448 206,0,@10969 241,0,@10448 298,1,@7176 340,0,0 347,0,1 354,0,3 360,0,0 7174:D3,372|3b650c7305ff552ccd018b30ff70048b7e048b560c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060700000056f7c7010000000f85c40000008b07e8a4ccffff89c757b801000000e8bb94ffff89c7ba48f167b1576878f167b16a018b44240c8b5c2414e89fa0ffff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4f667b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b1eb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400405000000c7000100000083c404c3f4000000|@15003,1,@2354|52,0,3 72,1,@7163 80,0,0 85,1,@7128 92,0,@14942 98,0,@14943 113,1,@7139 152,0,0 189,0,@10448 224,0,@15002 259,0,@10448 266,0,0 340,0,0 347,0,0 354,0,2 360,0,0 7175:D3,764|3b650c7305ff552ccd09538b7c240c83ff017f0c8d642404b8c4f167b1c20800a8010f85c70200008b38ff70048b342483fe0175558d6424088b5424048b7424088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c208008b54240c8b7424108b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c28b7c240489fe81ff380e66b17502eb2c89f68b3e89fb8d3c7d0100000083ff037524bf380e66b189f68d76048d7f04b9010000003bc9f3a67402eb0abf03000000e9900000008b7c240489fe81ffec0e66b17502eb2c89f689df89fb8d3c7d0100000083ff037521bfec0e66b189f68d76048d7f04b9010000003bc9f3a67402eb07bf03000000eb4d8b7c240489fe81ff100666b17507bf03000000eb3889f689df8d3c7d0100000083ff017523bf100666b189f68d76048d7f0433c93bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f7028b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240489cb894f04c707070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000894f0489378b75008d76f43b75087305ff5528cd8c897500c746fc02000000897e0489168b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c241483ef02710e8d64240cb8f80466b18b5d04ff238b74241057568b44240ce85ffdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f4|@15004,1,@2355|25,0,@14948 129,0,0 189,0,@9549 216,0,@9549 229,0,0 242,0,1 259,0,@9564 286,0,@9564 299,0,0 312,0,1 326,0,@9473 333,0,1 356,0,@9473 377,0,1 384,0,0 391,0,0 427,0,0 436,0,1 477,0,3 510,0,0 610,0,0 617,0,0 624,0,0 630,0,0 649,0,@9455 706,0,@10448 756,0,0 7176:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2356| 7177:D3,432|3b650c7305ff552ccd018b38ff7004ff37ff7708ff7718b801000000e8f78fffff89c7ba3cf167b1578b4424048b5c2410e8ca97ffff89c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c7070700000057f644240c010f85c80000008b7c240c8b07e87fc7ffff89c757b801000000e8968fffff89c7ba48f167b1576878f167b16a018b44240c8b5c2424e87a9bffff89c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b1eb05bf010000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175065f83c410eb0e8b0424e85400000089c78d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3f4|@15007,1,@2359|24,0,0 29,1,@7128 36,0,@14941 50,1,@7133 90,0,3 113,1,@7163 121,0,0 126,1,@7128 133,0,@14942 139,0,@14943 154,1,@7139 193,0,0 230,0,@10448 265,0,@10969 300,0,@10448 307,0,0 364,1,@7178 406,0,0 413,0,1 420,0,3 426,0,0 7178:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2358| 7179:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8b8f167b1c3f4|@10825,1,@2360|66,0,@14947 7180:D3,28|3b650c7305ff552ccd018b388b58048b07ba08f867b1ff22f4000000|@15011,1,@2361|18,0,@15010 7181:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2362| 7182:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2363| 7183:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2364| 7184:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2365| 7185:D3,328|3b650c7305ff552ccd018b38ff7004ff378b47048b5c240483eb02710e8d642408b8f80466b18b5d04ff23ba08f867b1ff1289c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff23ba08f867b18b442404ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d44367b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c3f4|@15019,1,@2366|34,0,@9455 44,0,@15010 67,0,@9455 77,0,@15010 118,0,0 155,0,@10448 190,0,@12912 225,0,@10448 299,0,0 306,0,0 313,0,0 319,0,0 7186:D3,52|3b650c7305ff552ccd018b388b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@15025,1,@2367|43,0,3 7187:D3,24|3b650c7305ff552ccd0189c78b078b5f04e916000000f400|@15030,1,@2370|18,1,@7188 7188:D3,584|3b650c7305ff552ccd09538b108b7808ff70148b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060700000056f7c7010000000f85c40000008b07e896c1ffff89c757b801000000e8ad89ffff89c7ba48f167b1576878f167b16a018b44240c8b5c2418e89195ffff89c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4f667b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b1eb05bf01000000578b4424088b3883ff11750abb01000000e9ac0000008b5c240c83eb02710e8d642410b8f80466b18b5d04ff23ba08f867b1ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707387666b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175035eeb0e8b0424e87e00000089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c408c3f400|@15029,1,@2369|50,0,3 70,1,@7163 78,0,0 83,1,@7128 90,0,@14942 96,0,@14943 111,1,@7139 150,0,0 187,0,@10448 222,0,@15002 257,0,@10448 264,0,0 281,0,0 304,0,@9455 314,0,@15010 351,0,0 388,0,@10448 423,0,@10969 458,0,@10448 474,1,@7189 554,0,0 561,0,0 568,0,0 574,0,0 7189:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2368| 7190:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@2371|66,0,@10624 7191:D3,112|3b650c7305ff552ccd018b308b78048b460483ef02710ab8f80466b18b5d04ff235768f4f967b1bbf81166b1e82bf3ffff89c78b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3f4000000|@15039,1,@2380|24,0,@9455 35,0,@15034 40,0,@9629 45,1,@7175 83,0,0 90,0,1 97,0,3 103,0,0 7192:D3,328|3b650c7305ff552ccd018b38ff70048b07ff77048b5c240483eb02710e8d642408b8f80466b18b5d04ff23e82c01000089c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff23ba08f867b18b442404ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707387666b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c7000100000083c404c3f40000|@15038,1,@2379|34,0,@9455 44,1,@7193 65,0,@9455 75,0,@15010 116,0,0 153,0,@10448 188,0,@10969 223,0,@10448 297,0,0 304,0,1 311,0,3 317,0,0 7193:D3,2124|3b650c7305ff552ccd0989c6538b0689c289d7f6c2010f85e40200008b0a8b52048b1983fb33754f8b4904f6c10175408b4904f6c10175318b490483f901752283fa0175168b560883fa037507ba03000000eb05ba01000000eb05ba01000000eb05ba01000000eb05ba01000000eb05ba01000000eb05ba0100000083fa030f857b0200008b3f8b7f048b078b7f04ff378b7e04ff37ff760c8b5c240c83eb02710e8d642410b8f80466b18b5d04ff23ba08f867b1ff1289c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70707000000578b5c241483eb02710e8d642418b8f80466b18b5d04ff23ba08f867b18b442410ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c241083ef0257710e8d642418b8f80466b18b5d04ff23f6442408010f85c80000008b7c24088b07e8fcbaffff89c757b801000000e81383ffff89c7ba48f167b1576878f167b16a018b44240c8b5c2410e8f78effff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b1eb098d642404bb0100000083fb0175065f83c410eb0e8b0424e89f05000089c78d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c389faf7c7010000000f85680300008b3f8b0f83f93375498b7f04f7c70100000075378b7f04f7c70100000075258b7f0483ff0175168b7e0883ff037507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f85080300008b3aff72048b7f048b078b7f04ff378b7e04ff37ff760c8b5c241083eb02710e8d642414b8f80466b18b5d04ff23ba08f867b1ff1289c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70707000000578b5c241883eb02710e8d64241cb8f80466b18b5d04ff23ba08f867b18b442410ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705566b1578b7c241483ef02710e8d642418b8f80466b18b5d04ff235768fcf967b18b442418bb100666b1e865ecffff89c7578b7c241883ef0457710e8d642420b8f80466b18b5d04ff23f644240c010f85c80000008b7c240c8b07e89cb7ffff89c757b801000000e8b37fffff89c7ba48f167b1576878f167b16a018b44240c8b5c2410e8978bffff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b1eb098d642404bb0100000083fb0175035beb0e8b0424e8d202000089c38d64240483fb0175065f83c414eb0e8b0424e81d03000089c78d6424188b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c38b7e048b3fff760c8b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704b8f167b18937578b7c240883ef02710e8d64240cb8f80466b18b5d04ff235768fcf967b1bb100666b1e890eaffff89c7578b7c240c83ef0457710e8d642414b8f80466b18b5d04ff23f644240c010f85c80000008b7c240c8b07e8c7b5ffff89c757b801000000e8de7dffff89c7ba48f167b1576878f167b16a018b44240c8b5c2410e8c289ffff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b1eb098d642404bb0100000083fb0175035beb0e8b0424e8c501000089c38d64240483fb0175065f83c408eb0e8b0424e81002000089c78d64240c8b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f4|@15037,1,@2378|78,0,1 85,0,0 92,0,0 99,0,0 106,0,0 113,0,0 120,0,0 167,0,@9455 177,0,@15010 219,0,3 238,0,@9455 248,0,@15010 289,0,0 326,0,@10448 399,0,@10448 457,0,@9455 484,1,@7163 492,0,0 497,1,@7128 504,0,@14942 510,0,@14943 525,1,@7139 564,0,0 601,0,@10448 636,0,@15020 671,0,@10448 682,0,0 701,1,@7194 743,0,0 750,0,0 757,0,0 763,0,0 830,0,1 837,0,0 844,0,0 851,0,0 858,0,0 865,0,0 915,0,@9455 925,0,@15010 967,0,3 986,0,@9455 996,0,@15010 1037,0,@10624 1074,0,@10448 1147,0,@10448 1220,0,@10625 1255,0,@10450 1274,0,@9455 1285,0,@15035 1294,0,@9473 1299,1,@7175 1321,0,@9455 1348,1,@7163 1356,0,0 1361,1,@7128 1368,0,@14942 1374,0,@14943 1389,1,@7139 1428,0,0 1465,0,@10448 1500,0,@15020 1535,0,@10448 1546,0,0 1562,1,@7196 1587,1,@7197 1629,0,0 1636,0,0 1643,0,0 1649,0,0 1693,0,3 1726,0,@14947 1747,0,@9455 1758,0,@15035 1763,0,@9473 1768,1,@7175 1790,0,@9455 1817,1,@7163 1825,0,0 1830,1,@7128 1837,0,@14942 1843,0,@14943 1858,1,@7139 1897,0,0 1934,0,@10448 1969,0,@15020 2004,0,@10448 2015,0,0 2031,1,@7198 2056,1,@7199 2098,0,0 2105,0,0 2112,0,0 2118,0,0 7194:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2372| 7195:D3,24|3b650c7305ff552ccd0189c78b078b5f04e9dec1fffff400|@15036,1,@2373|18,1,@7172 7196:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2374| 7197:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2375| 7198:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2376| 7199:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2377| 7200:D3,1136|3b650c7305ff552ccd09538b3c2483ff017f0a8d642404b8c4f167b1c3a8010f853f0400008b30ff70048b3c2483ff010f85c80100008d6424048b3eff760c8b378d1c750100000083fb01750abe00fb67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876f01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5c240883eb02710e8d64240cb8f80466b18b5d04ff23ba08f867b18b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c404c38d642408b8780566b18b5d04ff238b3eff760c8b378d1c750100000083fb01750abe00fb67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871102000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5c240c83eb02710e8d642410b8f80466b18b5d04ff23ba08f867b18b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604286d66b1893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e8f7fbffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c404c38d64240cb8780566b18b5d04ff238d642404b801000000c3f400|@15043,1,@2381|24,0,@14948 78,0,@15042 98,0,4 119,0,16777215 177,0,0 254,0,3 273,0,@9455 283,0,@15010 324,0,0 361,0,@10448 433,0,0 440,0,0 447,0,0 453,0,0 486,0,0 501,0,@9465 530,0,@15042 550,0,4 571,0,16777215 629,0,0 706,0,3 725,0,@9455 735,0,@15010 776,0,0 813,0,@10448 885,0,0 892,0,0 899,0,0 905,0,0 938,0,@10822 976,0,0 983,0,0 990,0,0 996,0,0 1015,0,@9455 1066,0,@10448 1115,0,@9465 1129,0,0 7201:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2382| 7202:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e46f66b1c3f4|@10825,1,@2383|66,0,@10863 7203:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@2384|66,0,@10946 7204:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2385| 7205:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2386| 7206:D3,52|3b650c7305ff552ccd018b388b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f400|@15050,1,@2387|45,0,3 7207:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8146066b1c3f4|@10825,1,@2388|66,0,@10624 7208:D3,676|3b650c7305ff552ccd0953a8010f85840200008b38ff70048b07ff77048b7f108b74240889f383fe017f0a8d64240cb8c4f167b1c383ff037507bffcfb67b1eb05bf010000005789db83eb02710e8d642410b8f80466b18b5d04ff23ba08f867b1ff1289c7578b5c241083eb02710e8d642414b8f80466b18b5d04ff23ba08f867b18b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b74240883fe0175368b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175055883c40cc35883c40ce9050100008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430414fc67b1893b83fb0175065e83c404eb0e8b0424e83301000089c68d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e8b8fdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c38d642404b801000000c3f40000|@15060,1,@2391|48,0,@14948 59,0,@15055 66,0,0 83,0,@9455 93,0,@15010 116,0,@9455 126,0,@15010 167,0,0 204,0,@10448 239,0,@10969 274,0,@10448 348,0,0 355,0,0 362,0,3 368,0,0 410,0,0 431,1,@7209 464,0,@15057 485,1,@7210 527,0,0 534,0,0 541,0,0 547,0,0 566,0,@9455 617,0,@10448 668,0,0 7209:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2389| 7210:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2390| 7211:D3,24|3b650c7305ff552ccd0189c78b078b5f04e94a6cfffff400|@15067,1,@2393|18,1,@7127 7212:D3,736|3b650c7305ff552ccd0989df50f7c7010000000f85b70200008b1fff77048b3c2483ff0175678d6424048b7c240883ff017f0c8d642404b8c4f167b1c208005a8b7c24048b45008d40f43b45087305ff5528cd8c894500c740fc020000008978048918ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c208008b7c240c83ff017f0c8d642408b8c4f167b1c208008b7c241081ff380e66b17502eb2e8b7c24108b3f8d3c7d0100000083ff0375238b742410bf380e66b18d76048d7f04b9010000003bc9f3a67402eb07bf03000000eb528b7c241081ffec0e66b17507bf03000000eb3f8b7c24108b3f8d3c7d0100000083ff0375288b742410bfec0e66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f702578b5424088b7c24108b45008d40f43b45087305ff5528cd8c894500c740fc020000008978048918ff1289c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b14248956048d642404c706030000008b4c24108b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b74241083ee02710e8d64240cb8f80466b18b5d04ff238b7c241457568b4424108b5c240ce87efdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f4000000|@15068,1,@2394|56,0,@14948 132,0,0 155,0,@14948 168,0,@9549 199,0,@9549 210,0,0 223,0,1 235,0,@9564 242,0,1 271,0,@9564 282,0,0 293,0,1 300,0,0 307,0,0 387,0,0 403,0,1 442,0,3 475,0,0 575,0,0 582,0,0 589,0,0 595,0,0 614,0,@9455 675,0,@10448 725,0,0 7213:D3,52|3b650c7305ff552ccd018b388b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f400|@15072,1,@2395|45,0,3 7214:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2396| 7215:D3,348|3b650c7305ff552ccd018b388b58048b57048b7f0c8b078b7f048b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604c706070000005683ff037507be84fd67b1eb05bed4ef67b18b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707070000005783eb02710e8d642408b8f80466b18b5d04ff23ba90fd67b1ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c3f400|@15077,1,@2397|57,0,3 68,0,@15075 75,0,@14922 110,0,3 125,0,@9455 135,0,@15076 172,0,0 209,0,@10448 321,0,0 328,0,0 335,0,3 341,0,0 7216:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@2400|66,0,@10946 7217:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2402| 7218:D3,1372|3b650c7305ff552ccd09538b3c2483ff017f0a8d642404b8bc5466b1c38b3089f783fe050f85470100008b78048b07ff7704ff77088b5c240883eb02710e8d64240cb8f80466b18b5d04ff23e8afffffff89c7578b7c240483ff037507be84fd67b1eb05bed4ef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5c241083eb02710e8d642414b8f80466b18b5d04ff238b44240ce8b765ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c40cc389fe83ff030f857d010000ff70048b58088b7c240483ef02710e8d642408b8f80466b18b5d04ff2368ec0e66b157b854fe67b1e80306000089c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e834feffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707187566b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700545566b1e8990c000089c383fb0175065f83c408eb0e8b0424e8e00c000089c78d64240c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707307566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c389f783fe010f85800100008b7804ff378b7f048b378d1c750100000083fb017507be080e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872b01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b4424048b5c2408e82ffcffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704146066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c38d642408b8780566b18b5d04ff2383ff070f85a00000008b580468100666b1ff742404b854fe67b1e8090300008d642404e80c0b000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70778ff67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400403000000c70001000000c38d6424048b78048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@15095,1,@2415|24,0,@10437 67,0,@9455 94,0,@15075 101,0,@14922 136,0,3 155,0,@9455 169,1,@7127 204,0,0 241,0,@10448 341,0,0 348,0,0 355,0,0 361,0,0 400,0,@9455 410,0,@9564 416,0,@15083 421,1,@7221 442,0,@9455 491,0,0 528,0,@10448 563,0,@10950 598,0,@10448 603,1,@7228 624,1,@7229 665,0,@10448 700,0,@10952 736,0,0 743,0,0 750,0,3 756,0,0 795,0,@9545 812,0,4 833,0,16777215 891,0,0 959,0,3 1008,0,@10624 1045,0,@10625 1117,0,0 1124,0,0 1131,0,1 1137,0,0 1147,0,@9465 1169,0,@9473 1178,0,@15083 1183,1,@7221 1192,1,@7230 1229,0,@10448 1264,0,@15094 1300,0,0 1307,0,1 1314,0,1 1320,0,0 1363,0,3 7219:D3,28|3b650c7305ff552ccd0189c7ba5cfe67b18b078b5f04ff22f4000000|@15093,1,@2411|13,0,@15084 7220:D3,504|3b650c7305ff552ccd09538b342489f783fe017f0a8d642404b8bc5466b1c38b1089d683fa01751d8b400489fb83eb028d642404710ab8f80466b18b5d04ff23e9cba9ffff83fe030f8510010000ff70048b580889ff83ef02710e8d642408b8f80466b18b5d04ff2368ec0e66b157b854fe67b1e89301000089c7578b7c240883ef02710e8d64240cb8f80466b18b5d04ff2368ec0e66b157b854fe67b18b5c240ce865010000e85404000089c383fb017507bb70fb67b1eb0cb870fb67b1e89804000089c383fb0175065f83c408eb0e8b0424e8e704000089c78d64240c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70788fe67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38b58086868cb67b157b894fe67b1e89b00000089c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0fd67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c3f400|@15092,1,@2410|26,0,@10437 55,0,@9455 65,1,@7172 96,0,@9455 106,0,@9564 112,0,@15083 117,1,@7221 138,0,@9455 148,0,@9564 154,0,@15083 163,1,@7221 168,1,@7222 180,0,@15047 187,0,@15047 192,1,@7223 213,1,@7224 254,0,@10448 289,0,@15086 325,0,0 332,0,0 339,0,3 345,0,0 354,0,@14646 360,0,@15087 365,1,@7221 406,0,@10448 441,0,@15078 477,0,0 484,0,0 491,0,3 497,0,0 7221:D3,736|3b650c7305ff552ccd0989df50f7c7010000000f85b70200008b1fff77048b3c2483ff0175678d6424048b7c240883ff017f0c8d642404b8c4f167b1c208005a8b7c24048b45008d40f43b45087305ff5528cd8c894500c740fc020000008978048918ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c208008b7c240c83ff017f0c8d642408b8c4f167b1c208008b7c241081ff380e66b17502eb2e8b7c24108b3f8d3c7d0100000083ff0375238b742410bf380e66b18d76048d7f04b9010000003bc9f3a67402eb07bf03000000eb528b7c241081ffec0e66b17507bf03000000eb3f8b7c24108b3f8d3c7d0100000083ff0375288b742410bfec0e66b18d76048d7f04b9010000003bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f702578b5424088b7c24108b45008d40f43b45087305ff5528cd8c894500c740fc020000008978048918ff1289c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b14248956048d642404c706030000008b4c24108b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04c702070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089118b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b74241083ee02710e8d64240cb8f80466b18b5d04ff238b7c241457568b4424108b5c240ce87efdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f4000000|@15085,1,@2403|56,0,@14948 132,0,0 155,0,@14948 168,0,@9549 199,0,@9549 210,0,0 223,0,1 235,0,@9564 242,0,1 271,0,@9564 282,0,0 293,0,1 300,0,0 307,0,0 387,0,0 403,0,1 442,0,3 475,0,0 575,0,0 582,0,0 589,0,0 595,0,0 614,0,@9455 675,0,@10448 725,0,0 7222:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@2404|66,0,@10946 7223:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2405| 7224:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2406| 7225:D3,24|3b650c7305ff552ccd0189c78b078b5f04e916000000f400|@15091,1,@2409|18,1,@7226 7226:D3,656|3b650c7305ff552ccd09538b50048b78088b70106a016a0183fe03755c8b3783fe0575558b4f048b398b71048b59088b410c8b4d008d49f03b4d087305ff5528cdcd894d00c741fc0300000089410889590489318b75008d76f83b75087305ff5528cd86897500c746fc01000000890e893424897c2404eb0bc7042401000000897c24048b3c24ff7424048b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c7060700000056f7c7010000000f85c80000008b3f8b078b7f0483ff037507be84fd67b1eb05bed4ef67b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70707000000578b5c241483eb02710e8d642418b8f80466b18b5d04ff23e86159ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404eb05bf01000000578b5c241483eb02710e8d642418b8f80466b18b5d04ff23ba9cfe67b18b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703a4fe67b183fb0175035eeb0e8b0424e87e00000089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c410c3f400|@15090,1,@2408|124,0,0 170,0,3 200,0,@15075 207,0,@14922 242,0,3 261,0,@9455 271,1,@7127 306,0,0 343,0,@10448 388,0,0 407,0,@9455 417,0,@15088 458,0,0 495,0,@10448 530,0,@15089 546,1,@7227 626,0,0 633,0,0 640,0,3 646,0,0 7227:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2407| 7228:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@2412|66,0,@10946 7229:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2413| 7230:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@2414|66,0,@10946 7231:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2416| 7232:D3,436|3b650c7305ff552ccd018b30ff70048b7e04ff76108b378d1c750100000083fb01750abe00fb67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874c01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e8f354ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c404c38d642408b8780566b18b5d04ff23f40000|@15100,1,@2419|36,0,@15042 56,0,4 77,0,16777215 135,0,0 212,0,3 231,0,@9455 245,1,@7127 280,0,0 317,0,@10448 391,0,0 398,0,0 405,0,3 411,0,0 424,0,@9465 7233:D3,972|8dbc246cffffff3b7d0c7305ff5530cd0d5253ff306a016a016a01b80100000089e3e8d1dafcffff3424ff742408ff7424108b7d008d7ff03b7d087303ff5528897d00c747fc030000008b34248977088b7424048977048b7424088937576a016a016a01b80100000089e3e888dafcffff742404ff74240c6a016a016a01b80100000089e3e86edafcff8b3424ff742404ff74240c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088b5424048957048937576a016a016a01b80100000089e3e827dafcffff742404ff74240c6a016a016a01b80100000089e3e80ddafcffff7424048b5c240c8b7c247cff77188b7d008d7ff03b7d087305ff5528cd08897d00c747fc030000008b7424588977088b3424897704c70714f33ab1578bbc2484000000ff77208b7d008d7ff03b7d087305ff5528cd08897d00c747fc030000008b7424488977088b3424897704c7075cf33ab18bb42488000000ff76308b4d008d49f03b4d087305ff5528cd88894d00c741fc030000008b7424388971088b3424897104c701a4f33ab18bb4248c0000008b56148b75008d76f03b75087305ff5528cd8e897500c746fc030000008b442420894608895604c706ecf33ab1568bb424900000008b562c8b75008d76f03b75087305ff5528cd8e897500c746fc03000000895e08895604c70634f43ab1568bb424940000008b55008d52f03b55087305ff5528cdc2895500c742fc030000008b5c2474895a08897204c7027cf43ab18bb42494000000ff76108b75008d76c83b75087305ff5528cd86897500c746fc0d000000894e308b4c2404894e2c8b4c2448894e28895624897e208b7c241c897e1c8b7c2414897e188b7c2408897e148b3c24897e108b7c245c897e0c8b7c2474897e088b7c2430897e04c706480168b1ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897b04c703f4f53ab18b45008d40f43b45087305ff5528cdc8894500c740fc02000000897804c7004cf63ab18b9424980000008b8c24900000008b4904ffb4248c0000005756ff74243cffb42480000000ff74242cff742470ff74242cff742464ff742430ffb424a000000052ffb424a4000000ffb42490000000ff742438ff742444ff74245cffb4248c000000ff74244c515350ffb424c4000000ffb4249c0000008b8424e8000000bb01000000e81b0500008d6424708b5424088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d642420897804c70040f942b18b3c24897c240483c404ff22f40000|@17985,1,@3439|28,0,0 35,1,@6866 101,0,0 108,1,@6866 127,0,0 134,1,@6866 198,0,0 205,1,@6866 224,0,0 231,1,@6866 291,0,@7234 347,0,@7235 402,0,@7236 454,0,@7237 503,0,@7238 553,0,@7239 666,0,@15107 671,0,0 734,0,@7243 769,0,@7244 900,0,0 905,1,@7246 953,0,@8249 7234:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2422| 7235:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2423| 7236:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2424| 7237:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2425| 7238:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2426| 7239:D3,136|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c70018f53ab1ff128b3c24ff378b7c24088b7f048b5724b801000000ff1289c383fb0175055883c408c35883c408e965000000f4|@15106,1,@2429|12,0,0 86,0,@7240 108,0,0 131,1,@7241 7240:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@15105,1,@2427|53,0,0 7241:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2428| 7242:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@15108,1,@2430|11,0,0 7243:D3,68|3b650c7305ff552ccd058b7a048b3fb801000000f7c70100000075248b570489c683c602710ab8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd4c3f40000|@15109,1,@2431|16,0,0 39,0,@9455 7244:D3,312|3b650c7305ff552ccd058b7a048b3fba01000000f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc483fa01750abfe43c66b1e989000000bf0100000089d6f7c60100000075248b5e0489f983c102710ab8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd481ffffffff017c0ab8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175288067ffbf8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70098f73ab1c38b0a8b5a04894c77fe89f183c102710ab8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4eba9f400|@15111,1,@2433|16,0,0 86,0,@10109 96,0,0 121,0,@9455 148,0,16777215 155,0,@11058 210,0,0 219,0,0 263,0,@7245 285,0,@9455 7245:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b4447fec3f400|@15110,1,@2432|32,0,@9990 7246:D3,3876|8dbc2464ffffff3b7d0c7305ff5530cd0953a8010f85df020000ff30ff70048b7c24048b1789d683fa03751589fe89f7ff760489ffff7708ff742410e9ad08000089ff83fe01751589fe89f7ff760489ffff7708ff742410e92b03000089ff8b770489ff8b57088b4c24688b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c70714073bb1578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c24748b57148b7c24748b77188b7c24748b4f288b7c24748b7f388b5c24748b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704893757b87c0368b18b7c24288b7424248b5424708b4c24788b5c242c57565251ff74241068100666b15389c28b4424208b5c2424e80c1200008d64240c8b7c246c8b7f0c8b3f83ff037507bf01000000eb4a8b7c24148b5424108b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088957048937ff342457ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff742474ff7424748b7424748b5424708b4c246c8b5c24688b442464894424648b442450895c24688b5c244c894c246c89542470897424748b3c24897c24788b7c2404897c247c8b7c240889bc24800000008b7c240c89bc24840000008b7c241089bc24880000008b7c241489bc248c0000008b7c241889bc24900000008b7c241c89bc24940000008b7c242089bc24980000008b7c242489bc249c0000008b7c242889bc24a00000008b7c242c89bc24a40000008b7c243089bc24a80000008b7c243489bc24ac0000008b7c243889bc24b00000008b7c243c89bc24b40000008b7c244089bc24b80000008b7c244489bc24bc0000008b7c244889bc24c000000083c460e90bfdffff8d642458ff3424f6042401757a8b3c248b3789ffff77048b3eff76048b178b7c24708b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70060c242b1ff128b3c248b178d6424048b7c246c8b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70004cc42b1ff125e8934243b650c7303ff552ceb808d642408b801000000c26000f60424010f85800000008b3c248b3789ffff77048b3eff76048b178bbc24800000008b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70000d142b1ff128b3c248b178d6424048b7c247c8b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70040d142b1ff125e8934243b650c7303ff552ce976ffffff8d6424048b7c24748b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b7c2408897804c70024d242b16a016a016a0189e3e84d47fdffff3424ff7424088bbc24800000008b37bf01000000f7c60100000075288b4e0489fa83c202710e8d642424b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578bbc24840000008b3fba01000000f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc483fa01750abfe43c66b1e991000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642428b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642428b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175308067ffbf578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707a8d442b157ff742420eb2e8b0a8b5a04894c77fe89f183c102710e8d642428b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4eb9df60424010f85580100008b34248b3e89f6ff7604ff37ff7704ff7708ff770cff7710ff7714ff7718ff771cff7720ff7724ff7728ff772cffb424c0000000ffb424cc000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424c0000000ffb424e4000000ffb424c4000000ffb424c40000008bbc24c40000008bb424c00000008b9424bc0000008b8c24b80000008b9c24b40000008b8424b0000000ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ffb4249c000000ffb42498000000ff742460ff742460ffb424a8000000ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464575652515350ffb424f80000008b8424e40000008b9c24e0000000e8ded507008d6424645e8934243b650c7303ff552ce99efeffff8d6424145a8b44243cff12ff742410ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bb424800000008b54247c8b4c24788b5c24748b442470894424708b44244c895c2474bb01000000894c24788954247c89b424800000008b3c2489bc24840000008b7c240489bc24880000008b7c240889bc248c0000008b7c240c89bc24900000008b7c241089bc24940000008b7c241489bc24980000008b7c241889bc249c0000008b7c241c89bc24a00000008b7c242089bc24a40000008b7c242489bc24a80000008b7c242889bc24ac0000008b7c242c89bc24b00000008b7c243089bc24b40000008b7c243489bc24b80000008b7c243889bc24bc0000008b7c243c89bc24c00000008b7c244089bc24c40000008b7c244489bc24c80000008b7c244889bc24cc00000083c46ce916f7ffff8d642450f60424010f85800000008b3c248b3789ffff77048b3eff76048b178bbc24800000008b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70054f542b1ff128b3c248b178d6424048b7c247c8b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c70094f542b1ff125e8934243b650c7303ff552ce976ffffff8d6424048b7c24748b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d6424048978088b7c2408897804c70078f642b16a016a016a0189e3e8e741fdffff3424ff7424088bbc24800000008b37bf01000000f7c60100000075288b4e0489fa83c202710e8d642424b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578bbc24840000008b3fba01000000f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc483fa01750abee43c66b1e993000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642428b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642428b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175308067ffbf89fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcf842b157ff74241ceb2e8b0a8b5a04894c77fe89f183c102710e8d642428b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4eb9df60424010f85260200008b34248b3e89f6ff76048b17ff7704ff7708ff770c8b4710b934ce68b18bbc24980000008bb424a0000000ff74241457565289ca8b5c2428e85aa1060089c7ff37ff7708ff7710ff77148b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c70701000000578bbc24b40000008b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b5424108b3a83ff030f859900000089d28b720489d28b7a0cff368b378b5efcc1e308c1eb0783cb0183fb017507bfe43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d78b55008d52f03b55087305ff5528cd80895500c742fc03000000897a088b3c24897a048d642404c70201000000eb0289d28b75008d76e43b75087305ff5528cd04897500c746fc060000008b7c2404897e148b7c2408897e108b3c24897e0c8d64240c8b3c24897e088d6424048b4c240c89cf894e0489168b54240889328b5424208b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489ff8938ff128b742410897424143b650c7303ff552c83c414e9d0fdffff8d6424105a8b442470ff12ff742410ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bb424800000008b54247c8b4c24788b5c24748b442470894424708b44244c895c2474bb01000000894c24788954247c89b424800000008b3c2489bc24840000008b7c240489bc24880000008b7c240889bc248c0000008b7c240c89bc24900000008b7c241089bc24940000008b7c241489bc24980000008b7c241889bc249c0000008b7c241c89bc24a00000008b7c242089bc24a40000008b7c242489bc24a80000008b7c242889bc24ac0000008b7c242c89bc24b00000008b7c243089bc24b40000008b7c243489bc24b80000008b7c243889bc24bc0000008b7c243c89bc24c00000008b7c244089bc24c40000008b7c244489bc24c80000008b7c244889bc24cc00000083c46ce9e2f0ffff8d642450f400|@17982,1,@3436|141,0,@7247 175,0,0 267,0,@15124 300,0,@9473 316,1,@7251 339,0,0 822,0,@8204 872,0,@8211 897,0,0 969,0,@8215 1019,0,@8216 1098,0,@8217 1111,1,@6921 1132,0,0 1159,0,@9455 1195,0,0 1265,0,@10109 1275,0,0 1304,0,@9455 1331,0,16777215 1342,0,@11058 1397,0,0 1406,0,0 1452,0,@8219 1484,0,@9455 1838,1,@8220 2047,0,0 2351,0,@8244 2401,0,@8245 2480,0,@8246 2493,1,@6921 2514,0,0 2541,0,@9455 2577,0,0 2647,0,@10109 2657,0,0 2686,0,@9455 2713,0,16777215 2724,0,@11058 2779,0,0 2788,0,0 2834,0,@8248 2866,0,@9455 2926,0,@17604 2958,1,@7978 3008,0,0 3024,0,0 3063,0,2 3096,0,0 3188,0,@10109 3242,0,0 3303,0,0 3635,0,0 7247:D3,540|3b650c7305ff552ccd0552ff308b7804ff7008ff700c8b50108b74240c8b76088b0ebe01000000f6c10175288b410489f383c302710e8d642410b8f80466b18b5d04ff2389c189de3b650c7305ff552ccdc6ebd383ff030f85b2000000bfffffffff8b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408939bf2c0268b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893b8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707050000008b45008d40e43b45087305ff5528cdc4894500c740fc060000008950148b14248950108d6424048b142489500c8d6424048970088978048b3c2489388d642404e896010000e9ad000000bfffffffff8b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408939bf2c0268b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893b8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707050000008b45008d40e43b45087305ff5528cdc4894500c740fc060000008950148b14248950108d6424048b142489500c8d6424048970088978048b3c2489388d642404e8ac0100008b34248b7e0889fa8b0f8b7d008d7ff43b7d087305ff5528cd47897d00c747fc02000000894f04890789f6893a89f68b7e0489fa8b0f8b7d008d7ff43b7d087305ff5528cd07897d00c747fc02000000894f04890789d68d642404893ec3f400|@15123,1,@2437|35,0,0 59,0,@9455 94,0,-1 127,0,@15112 193,0,2 262,1,@7249 272,0,-1 305,0,@15112 371,0,2 440,1,@7250 7248:D3,92|3b650c7305ff552ccd018b388b50048b700883fa01753883fe01753383ff017d0ab8440268b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3b8880268b18b5d04ff23f40000|@15120,1,@2434|34,0,@15114 74,0,2 80,0,@15117 7249:D3,180|3b650c7305ff552ccd0189c78b17ff77048b5f088b4f0c8b47108b77148b7d008d7ff83b7d087305ff5528cd4f897d00c747fc01000040890f8b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897904c701030000008b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704c707010000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088978048b3c2489388d642404c3f400|@15121,1,@2435|88,0,1 132,0,0 7250:D3,152|3b650c7305ff552ccd0189c68b16ff76048b5e088b7e0c8b46108b76148b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000897904c701010000008b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f08895704c707010000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008970088978048b3c2489388d642404c3f400|@15122,1,@2436|60,0,0 104,0,0 7251:D3,264|3b650c7305ff552ccd0d525350f60424010f85e30000008b3c248b0789ffff77048b3089f783fe0175258b48048b58088b7c24248b7424188b54242057ff74240c565289c8e8d2000000e99a00000083ff037546ff7004ff7008ff74242c8b7c24208b7424388b5424348b4c242c8b5c24288b442424ff3424ff74241c57ff74242056525153508b4424288b5c242ce8cc6f06008d64240ceb4fff7008ff700cff742428ff742428ff7424288b7c24208b7f048b7424288b5424408b4c243c8b5c2438ff74240cff74240cff74240cff742428ff74241057565251538b5c2438e8b37506008d6424145e8934243b650c7303ff552ce913ffffff8d64240cb801000000c21c00f400|@17596,1,@3158|70,1,@7252 144,1,@7952 225,1,@7963 255,0,0 7252:D3,436|3b650c7305ff552ccd0989df508b742414ff76188b742418ff76208b74241cff76108b742420ff76308b742424ff76148b742428ff762c8b54242c8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c7060c0e3bb1568b5424308b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706180f3bb1568b5424348b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c70624103bb1568b7424388b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c7033c113bb18b7c24388b77048b7c24388b571c8b7c24388b4f248b7d008d7fc83b7d087305ff5528cd4e897d00c747fc0d0000008b4424148947308b44240c89472c895f28894f248b4c241c894f2089571c8b5424208957188b5424108957148b5424188957108b54240489570c8b5424088957088977048b342489378d6424248b7424108b54240c8b5d008d5bf03b5d087305ff5528cdc4895d00c743fc03000000895308897304c70348123bb1ba140468b18b742408575668ccc968b18b44240ce8cf0700008d642404b801000000c21000f40000|@17581,1,@3137|93,0,@7253 136,0,@7255 179,0,@7257 222,0,@7259 392,0,@7261 397,0,@15128 408,0,@17579 417,1,@7262 426,0,0 7253:D3,148|3b650c7305ff552ccd0552ff70048b7c24048b7f088b5708ff128b7c24048b7f048b078b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c707070000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e82a00000089c78b34248b76048d642404893eb801000000c3f400|@15126,1,@2439|73,0,3 106,0,0 122,1,@7254 141,0,0 7254:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2438| 7255:D3,148|3b650c7305ff552ccd0552ff70048b7c24048b7f088b570cff128b7c24048b7f048b078b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c707050000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e82a00000089c78b34248b76048d642404893eb801000000c3f400|@15126,1,@2441|73,0,2 106,0,0 122,1,@7256 141,0,0 7256:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2440| 7257:D3,160|3b650c7305ff552ccd0552508b7c24048b7f088b178b0424ff128b7c24048b7f048b078b3c248b3789ff8b57048d6424048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c707010000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e82c00000089c78b34248b76048d642404893eb801000000c3f4000000|@15126,1,@2443|83,0,0 116,0,0 132,1,@7258 151,0,0 7258:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2442| 7259:D3,148|3b650c7305ff552ccd0552ff70048b7c24048b7f088b5728ff128b7c24048b7f048b078b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248977048d642404c707030000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c7eb07e82a00000089c78b34248b76048d642404893eb801000000c3f400|@15126,1,@2445|73,0,1 106,0,0 122,1,@7260 141,0,0 7260:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2444| 7261:D3,860|3b650c7305ff552ccd0d5250538b7c2414ff77048b3c248b3f83ff03752f8d6424048b7c24148b378b7c2410ff378b7c2414ff77048b7c2418ff77088b7c2414ff7704bf01000000e9810100008b7c2418ff378b7c2418ff378b7c241cff77048b7c2420ff77088b7c241c8b7f088b3f8d1c7d010000008b7c24088b3f8d3c7d010000005783fb01750d8d6424048b7c2408e9ab0000008b3c2483ff0175108d6424048b7c241c8b7f08e9930000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87e500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c24208b7f0889d98d77048d7a04d1e9f3a489df83c708598b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc030000005a8956085a895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424088957088b542404895704c707050000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700d04166b183c418c208008d642424b8780566b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c241c8b7f088b3f8d1c7d010000008b7c24108b3f8d3c7d010000005783fb01750d8d6424048b742410e9ab0000008b3c2483ff0175108d6424048b7c241c8b7708e9930000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87da00000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c24208b7f0889d98d77048d7a04d1e9f3a489df83c708598b7424108d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424088957088b54240c89570489378b45008d40e83b45087305ff5528cd80894500c740fc050000008978108b7c241489780c8b7c2418897808c74004030000005f89388b14248b7c241c897c242483c424ff228d64240c8d642424b8780566b18b5d04ff23f4|@15127,1,@2446|68,0,0 188,0,4 209,0,16777215 267,0,0 400,0,2 438,0,@10184 453,0,@9465 485,0,@9455 596,0,4 617,0,16777215 675,0,0 818,0,1 850,0,@9465 7262:D3,316|3b650c7305ff552ccd0d5250538b7c2418ff77188b7c241cff77208b7c2420ff77108b7c2424ff77308b7c2428ff77148b7c242c8b5f2c8b7c242cff77088b7c2430ff770c8b7c2434ff378b7c24388b4f288b7c2438ff77048b7c243c8b771c8b7c243c8b57248b7d008d7fc43b7d087305ff5528cd4e897d00c747fc0e0000008b442414894734c74730380468b1895f2c894f288957248b54241c89572089771c8b7424208977188b7424108977148b7424188977108b74240889770c8b74240c8977088b34248977048d6424045e8d64241c893757ff742408ff74240cff7424208b4c24108b5c24208b7c24188b47048b54240c8b74241c89442410b803000000895c2414bb01000000894c24188b3c24897c241c8b7c2404897c24208b7c2408897c2424895424288974240c83c40ce9410000008d64241cf4|@16708,1,@2819|139,0,@15130 255,0,1 264,0,0 307,1,@7264 7263:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@15131,1,@2447|11,0,0 7264:D3,272|3b650c7305ff552ccd0989c789d88b74241c8b55008d52f43b55087305ff5528cdc1895500c742fc02000000897204c70254183bb18b74241c8b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000897104c701d0183bb18b75008d76f43b75087305ff5528cd87897500c746fc02000000894e048916ff742414ff74241cff742424ff74241c56ff74242857ff7424288b4c24288b5c24248b5424148b7424208b7c241887df897c24188b7c241c87c7897c241c8b7c241c877c2418897c241c894c24208b3c24897c2424c7442428b00468b18b7c2404897c242c8b7c2408897c24308b7c240c897c24348b7c2410897c24388954243c8974241483c414e9140100008d642420f4000000|@16707,1,@2818|49,0,@7265 88,0,@7266 212,0,@15133 260,1,@7267 7265:D3,104|3b650c7305ff552ccd058b7a048b5720ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@15132,1,@2448|59,0,0 95,0,0 7266:D3,104|3b650c7305ff552ccd058b7a048b5734ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@15132,1,@2449|59,0,0 95,0,0 7267:D3,19212|8dbc247cffffff3b7d0c7305ff5530cd0950538b7c24048b3f83ff2d0f85830000008b7c24048b7f0457ff742404ff742438ff742438ff742438ff742438ff7424388b7424388b5424348b4c24308b5c242c8b442428894424288b442418895c242c8b5c2414894c243089542434897424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c83c424e95fffffff8d6424248b7c24048b3f83ff11750e8d642408b8b80468b18b5d04ff238b7c24048b3f83ff21750e8d642408b8480568b18b5d04ff238b7c24048b3f83ff3d750e8d642408b8a00568b18b5d04ff238b7c24048b3fbe4c193bb181c6070100008d74befcffe6e9f3000000909090e9af010000909090e90d050000909090e9ed080000909090e9790b0000909090e97f0e0000909090e938120000909090e963140000909090e972140000909090e9d8150000909090e922160000909090e92d160000909090e934170000909090e9aa170000909090e942140000909090e96e190000909090e932140000909090e9e21a0000909090e95a1c0000909090e9ad1d0000909090e9af1f0000909090e901200000909090e902140000909090e957230000909090e9b8250000909090e9bb250000909090e987260000909090e9ea260000909090e9ee260000909090e959270000909090e9c21300009090908d6424045f8b7f04ff37ff7704ff7708ff770cff7710ff7714ff74243cff742438ff742424ff742434ff742450ff7424388b4c24448b5c24388b4424488b5424248b7424308b7c242887df897c24288b7c242c87c7897c242c8b7c242c877c2428897c242c894c24308b3c24897c24348b7c2404897c24388b7c2408897c243c8b7c240c897c24408b7c2410897c24448b7c2414897c24488b7c2418897c244c8b7c241c897c24508b7c2420897c2454895424588974242483c424e9614800008d6424308d6424048b3c248b7f048b34248b76088b1424ff720c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893ebfcc5366b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b0c24894f0c895708897704c7073300000057ff742434ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2440e84cfcffff89c78d64241057b8006368b1bb03000000e88607fbff89c7578b0424e83708fbff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b085f897b04c70307000000ba0c6368b18b0424e8b30e020089c7f7c7010000000f85dd010000ff378b7c24388b742434ff7424045756b8c46868b18b5c2414e8876e020089c757ba106968b18b44243c8b5c24388b7c24385768dc6968b1e80471020089c28b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d64240c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706bc6a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24308b7f34e9844300008d642410e9734300008b7c24048b7f04ff37ff7704ff7708ff7710ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b4424448b5c2448e87af9ffff89c78d64241057ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b4424448b5c244ce828f9ffff89c78d642410578b44241ce83c7b020089c783ff037502eb60becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b7424388d34f5f9ffffff8b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c7030d000000ba0c6368b18b442404e8970b02008b442404e8ca99fbff89c68b3e83ff0575468b7e048b56088b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e99f3c0000bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b45008d40f03b45087303ff5528894500c740fc030000008b7c24048978088b3c24897804c70005000000ba0c6368b18b5c240ce85e0a020089c7f7c7010000000f85320100008d6424088b7c24448b742440ff7424045756b8906b68b18b5c2420e8306a020089c7578b7c24488b742444ff7424045756b8a46b68b18b5c2420e8116a020089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604b86b68b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706546c68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24488b7f34e96a3e00008b75008d76f43b75087303ff5528897500c746fc020000008b7c2404897e045f8d642404893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9373a00008d6424048b3c248b7f04ff37ff7704ff7708ff770cff742438ff742434ff742434ff742440ff74244c8b7c243c8b5424388b4c24348b5c24308b44242c8b75008d76cc3b75087305ff5528cd8f897500c746fc0c00000089462c895e28894e24895620897e1c5f897e185f897e145f897e105f897e0c5f897e088b7c2410897e04c706b89e3db18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708d87468b1c747049cf867b189378b5d008d5be83b5d087305ff5528cd80895d00c743fc050000008b7424108973108b342489730cc74308f81166b1c74304947568b1c703a47568b18b7424388b5424345756528b442414e8fbb1020089c757ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b4424488b5c244ce8a1f4ffff89c78d642410578b442404e8b595fbff8b3883ff05755d8b7804ff7008ba0c6368b189f88b5c2404e85c07020089c7f7c7010000007538ff37ba106968b18b4424488b5c24448b7c24445768dc6968b1e8d069020089c28b0424ff1289c78d642404578b7c24488b7f34e917370000e909370000bfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d000000578b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b088b7c2404897b04c70305000000ba0c6368b1e88a06020089c7f7c7010000007538ff37ba106968b18b4424488b5c24448b7c24445768dc6968b1e8fe68020089c28b0424ff1289c78d642404578b7c24488b7f34e9d9340000e9c73400008d6424048b3c248b7f04ff37ff7704ff7708ff770cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff74240cff74240cff74240cff74240c5756525153508b4424448b5c2448e8fbf2ffff89c78d64241057ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b4424408b5c244ce8a9f2ffff89c78d64241057ff742444ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff74240cff74240cff74240cff74240c5756525153508b4424488b5c2450e857f2ffff89c78d64241057ba0c6368b18b442408bb504766b1e82505020089c7f7c7010000000f85dd010000ff378b7c24488b742444ff74240c5756b8d47568b18b5c2428e8f964020089c757ba106968b18b44244c8b5c24488b7c24485768dc6968b1e87667020089c28b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e07568b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24488b7f34e95b300000e9872c00008b7c2404ff77048b7c2408ff77088b7c240cff770cff74243cff74243cff74243cff74243c8b7c243c8b7424388b5424348b4c24308b5c242c8b442428ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2444e8edefffff89c78d64241057ba980668b18b7c243c8b7424408b5d008d5bec3b5d087305ff5528cdc4895d00c743fc0400000089730c8b742414897308897b04c70300ee3db18b7c243c578b442410e8e648000089c757ba0c6368b18b4424048b1c24e87202020089c7f7c7010000000f85eb020000ff378b7c24448b742440ff7424085756b8587068b18b5c241ce84662020089c757b801000000e8f91cffff89c7ba48f167b18b74244457566a018b442414bb214e0000e8dc28ffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706687068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ba106968b18b44244c8b5c24488b7c24485768dc6968b1e8f863020089c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706887068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24448b7f34e968270000e95c2700008b7c24048b7f04ff37ff7704ff7708ff770c8b7c24408b7f208b7424408b76348b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b74243c8b7d008d7fec3b7d087305ff5528cd41897d00c747fc040000008b54240889570c8b542410895708897704c707dcee3db1578b5c2404e8da4f000089c7576a016a018b44240c89e3e8b4b4fbff5a8d64240481fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf01000000eb4a8b7c24448b5f348b7424408b7d008d7fec3b7d087305ff5528cd4c897d00c747fc040000008b4c240c894f0c8b4c2418894f08897704c7071cef3db15257b8880768b1e81755000089c7578b7c2404ff378b7c2408ff77048b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c897704c70701000000578b7c24508b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424048b5e0c8b7424048b56048b75008d76ec3b75087305ff5528cd8c897500c746fc04000000895e0c897e088956048b542414891656ff3424ff742410578b442410e896c0020089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045a8d64241089165657e9a42400008d6424048b3c24ff77048b7c24048b7f0857e9182400008b7c24048b77048b3eff7604ff7608ff760cff76108b7424408b76188b5424408b52348b5d008d5bf43b5d087305ff5528cdc4895d00c743fc0200000089530489338b54243c8b75008d76ec3b75087305ff5528cd8c897500c746fc040000008b4c2404894e0c8b4c2410894e08895604c706ecf13db15756b8487768b1e8ef91020089c7578b3c248b7f088b3783fe0775288b7f0483ff117507bf03000000eb05bf0100000083ff03750f8b0424bb01000000e8199e0200eb268b3c248b470c6a016a0154bb647768b1e8de84fbffff34248b442408e8dea10200588d6424088b3c248b7f14f7c701000000752d8b3f8b378b168b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048b5424088917893eeb008b3c248b7f18f7c70100000075278b378b168b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048907893eeb008b7c240c89075f8b74240c893e8b7c24408b7f245e893e83c414c228008d6424048b3c24ff77048b7c242c8b45008d40f03b45087305ff5528cd80894500c740fc030000008b742404897008897804c70054f23db16a016a016a0189e3e8c712fdffff742404ff742410e9172200008d6424045f8b7f045768902d66b1e9152100008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742434ff742430ff742430ff74243cff7424488b7c24388b5424348b4c24308b5c242c8b4424288b75008d76cc3b75087305ff5528cd8f897500c746fc0c00000089462c895e28894e24895620897e1c5f897e185f897e145f897e105f897e0c5f897e088b7c240c897e04c70658f33db18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708d87468b1c747049cf867b189378b5d008d5be83b5d087305ff5528cd80895d00c743fc050000008b74240c8973105e89730cc74308f81166b1c74304947568b1c703b87768b18b7424308b54242c5756528b44240ce87aa402008d6424045f8d6424048907c228008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770c8b7c240cff7710ff74242cff742440ff742440ff74243c8b7c24448b7424388b5424348b4c24308b5c242c8b442428ff742414ff742414ff742414ff742414ff742414ff7424145756525153508b44244c8b5c2448e8b6c102008d642424b8902d66b1c228008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c5756525153508b4424408b5c2444e87fe6ffff89c78d64241057ff742438ff742434ff742434ff742440ff74244c8b7c243c8b5424388b4c24348b5c24308b44242c8b75008d76cc3b75087305ff5528cd8f897500c746fc0c00000089462c895e28894e24895620897e1c5f897e185f897e145f897e105f897e0c5f897e088b7c2410897e04c706c8343eb18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708d87468b1c747049cf867b189378b5d008d5be83b5d087305ff5528cd80895d00c743fc050000008b7424108973108b74240489730cc74308f81166b1c74304947568b1c7033c7f68b18b7424388b5424345756528b442414e898a202008b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b08c743046c6367b1c70305000000ba0c6368b1e83df8010089c7f7c7010000007538ff37ba106968b18b44243c8b5c24388b7c24385768dc6968b1e8b15a020089c28b0424ff1289c78d642404578b7c243c8b7f34e9561c0000e94a1c00008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c575652515350ff7424448b44243cbb6c7f68b1e8de0003008d642414e80578fbff89c7578b0424e8fe79fbff89c78b75008d76f03b75087305ff5528cd80897500c746fc030000008b542408895608897e04c706010000008b7c240883ff037502eb3f8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b74240483fe03750489f8eb55bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c7000d000000893e5f890783c408c228008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742438ff742438ff742438ff742438ff7424388b7c24388b5424348b4c24308b5c242c8b4424288b75008d76c83b75087305ff5528cd8f897500c746fc0d000000894630895e2c894e28895624897e205f897e1c5f897e185f897e145f897e105f897e0c8b7c240c897e08c746046c7f68b1c706d4363eb18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708f47168b1c74704fcf967b189378b5d008d5be83b5d087305ff5528cd80895d00c743fc050000008b74240c8973105e89730cc74308380e66b1c74304707268b1c7037c7268b18b7424308b54242c5756528b44240ce88e9f020089c68d6424048b3e83ff017507b8902d66b1eb5b8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40e83b45087305ff5528cd80894500c740fc05000000c74010603766b1c7400cb45666b1c74008d45666b1897804c7000b0000005f890783c404c228008b7c2404ff77048b7c2408ff770c8b7c240c8b4710bb03000000e87b960200e80a83fbff8b3883ff05755e8b7804ff7008ba0c6368b189f8bb545967b1e8b0f4010089c7f7c7010000007538ff37ba106968b18b44243c8b5c24388b7c24385768dc6968b1e82457020089c28b0424ff1289c78d642404578b7c243c8b7f34e95f170000e951170000bfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d000000578b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b08c74304545967b1c70305000000ba0c6368b1e8def3010089c7f7c7010000007538ff37ba106968b18b44243c8b5c24388b7c24385768dc6968b1e85256020089c28b0424ff1289c78d642404578b7c243c8b7f34e921150000e90f1500008d6424045f8b7f04ff37ff7704ff7708ff77106a016a016a01b80100000089e3e86a91fcffff3424ff742408ff7424106a016a016a01b80100000089e3e84d91fcffff742404ff74240c6a016a016a01b80100000089e3e83391fcffff7424048b54240c8b7c244083ff0375068b7c2450eb178b7c245083c702710e8d64244cb8f80466b18b5d04ff23578b7c24788b77188b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c2428894f08897704c70790373eb1578b7c247c8b77208b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c2418894f08897704c707d8373eb1578bbc2480000000ff77108bbc24840000008b77348b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70720383eb1578bbc2488000000ff77148bbc248c000000ff772c8bbc2490000000ff77308bbc24940000008b77048bbc24940000008b571c8b8c24940000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc030000008b5c244c895f08894f04c70768383eb1578b7d008d7fc43b7d087305ff5528cd44897d00c747fc0e0000008b4c2410894f348b4c2404894f308b4c2408894f2c8b4c2424894f288b0c24894f248b4c2418894f2089571c8b54241c8957188b54240c8957148b5424148957108b54243889570c8b54244c895708897704c707088068b157ff74246ce9581000008d6424048b3c248b7f04ff37ff7708ff770cff7710b815000000e80222ebff89c757b815000000e8f521ebff89c757b815000000e8e821ebff89c7578b5c24488b7c244457ff7424208b442420e8e7fe020089c757e95b0f00008d6424048b3c248b7f048b34248b76088b1424ff720c8b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893ebfcc5366b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b0c24894f0c895708897704c7073300000057ff742434ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff74240cff74240cff74240cff74240c5756525153508b4424388b5c2440e85addffff89c78d64241057b8108068b1bb03000000e894e8faff89c7578b0424e845e9faff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b085f897b04c70307000000ba0c6368b18b0424e8c1ef010089c7f7c7010000000f85dd010000ff378b7c24388b742434ff7424045756b8c46868b18b5c2414e8954f020089c757ba106968b18b44243c8b5c24388b7c24385768dc6968b1e81252020089c28b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d64240c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706408068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24308b7f34e9970a00008d642410e9860a00008d6424048b3c24ff77048b7c2404ff7708ff742434ff742434ff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2440e889daffff89c78d64241057ba0c6368b18b0424bb6c6367b1e858ed010089c7f7c7010000000f85dd010000ff378b7c24388b742434ff7424045756b8848068b18b5c2418e82c4d020089c757ba106968b18b44243c8b5c24388b7c24385768dc6968b1e8a94f020089c28b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706948068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24348b7f34e9bc0600008d642410e95d0600008d6424045f8b4708c228008b7c2404ff77048b7c2408ff7708ff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c575652515350ff7424408b442440bb6c7f68b1e82ffa02008d642410bb03000000e855e3faff89c7578b0424e806e4faff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f897804c700070000005f8d64240c8907c228008d6424048b3c24ff77048b7c242c8b45008d40f03b45087305ff5528cd80894500c740fc030000008b742404897008897804c7007c3c3eb16a016a016a0189e3e89001fdffff7424048b5c24408b7c243c57ff7424188b442418e8a2fb020089c7ff74241057e9a80400008d642408b8e45667b1c228008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742428ff74243cff74243cff7424388b7c24408b7424348b5424308b4c242c8b5c24288b442424ff742410ff742410ff742410ff742410ff7424105756525153508b4424448b5c2440e8d7fc02008d642420b8902d66b1c228008d6424048b3c24ff77048b7c2404ff77088b7c2408ff770cff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff74240cff74240cff74240cff74240c5756525153508b44243c8b5c2444e850d6ffff89c78d64241057ba0c6368b18b0424bb504766b1e81fe9010089c7f7c7010000000f85da010000ff378b7c243c8b742438ff7424045756b8c88368b18b5c2418e8f348020089c757ba106968b18b4424408b5c243c8b7c243c5768dc6968b1e8704b020089c28b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d88368b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24388b7f34eb5b8d64240cff742430ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff74240cff74240cff74240cff74240c5756525153508b4424388b5c243ce800d4ffff8d642418b8e45667b1c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9960000008b3f8b3781feec01c0b075058b5f08eb0e8d642414b8483366b18b5d04ff238b442410e8cd46ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c5e8d642404897008897804c700030000008b7c24308b7f0c8b7424308b5630c70703000000ff1283c404e9bcfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91affffff8d642414b8483366b18b5d04ff23f6442404017558f6042401754c8b7c24048b078b7c2404ff77048b7c24048b1f8b7c2404ff77048b7c244c8b7424388b5424505756ff74241852e8f70b03008b7424045a8d642404891424897424043b650c7303ff552ceba78d642420eb048d642420b8902d66b1c22800becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9960000008b3f8b3781feec01c0b075058b5f08eb0e8d642410b8483366b18b5d04ff238b44240ce8a244ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c5e8d642404897008897804c700030000008b7c242c8b7f0c8b74242c8b5630c70703000000ff1283c408e9bdfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642410b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91affffff8d642410b8483366b18b5d04ff23b8504766b1c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9930000008b3f8b3781feec01c0b075058b5f08eb0e8d64240cb8483366b18b5d04ff238b442408e83043ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c5e8d642408897008897804c700030000008b7c24248b7f0c8b7424248b5630c70703000000ff12e90efffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91dffffff8d64240cb8483366b18b5d04ff23f604240175348b3c248b3f8b3424ff76048b078b5f048b7c2450ff74240c57ff742410ff74241ce8880c03005e8934243b650c7303ff552cebc68d64240468448568b18b44240cbb01000000e86be0ecff89c78b742414893e68908568b18b442404bb01000000e850e0ecff89c78d6424048b74240c893e68988568b18b442404bb01000000e831e0ecff89c78d6424085e8d642408893eb8902d66b183c408c22800f604240175678b3c248b3f8b3424ff7604ff37ffb424940000008b84249c0000008bbc24a00000008bb424a80000008b9424940000008b8c24900000008b9c248c000000ff74241057ff74240c565251538b54241c8b5c2450ff128d6424085e8934243b650c7303ff552ceb938d6424088bb424980000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54246089570c8b54244c895708897704c707605f3eb1578bbc249c0000008b55008d52f03b55087305ff5528cd80895500c742fc030000008b74243c897208897a04c702d05f3eb18bbc249c000000ff378bbc24a00000008b5d008d5bf03b5d087305ff5528cd84895d00c743fc030000008b74242c897308897b04c70310603eb18bbc24a00000008b77048bbc24a00000008b4f1c8b7d008d7fc43b7d087305ff5528cd4e897d00c747fc0e0000008b4424188947348b44240c8947308b44241089472c895f288b5c2408895f248b5c2420895f20894f1c8b4c2424894f188b4c2414894f148b4c241c894f1089570c8b5424048957088977048b342489378d642428578b7c244883f70257ff74245468902d66b1f6442404010f85f20000008b7c24048b3f8b742404ff7604ff37ff74247c8b8424840000008bbc24880000008bb424900000008b54247c8b4c24788b5c2474ff74241857ff74240c565251538b54241c8b5c2438ff1289c78d642404578b7c241483ff03757af6442408017407bf03000000eb05bf0100000083f70283f70283f70283ff0375598b9c24900000008b0424e81213030089c7f7c701000000753eff376a016a018b94248000000054b8c45d66b18b5c2414ff125f8d6424048b842494000000ff74240857ff742408bb01000000e8881e00008d642404eb00eb008b7424085a895424088974240c3b650c7303ff552c83c408e903ffffff5883c45cc228005883c4045f890783c408c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642418b8483366b18b5d04ff238b442410e86c3effff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24388b7f0c8b7424388b5630c70703000000ff12e90dfffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642418b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642418b8483366b18b5d04ff235883c404e98bfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642418b8483366b18b5d04ff238b442410e8003dffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24388b7f0c8b7424388b5630c70703000000ff12e911fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642418b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642418b8483366b18b5d04ff235883c410c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642418b8483366b18b5d04ff238b442414e8963bffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24388b7f0c8b7424388b5630c70703000000ff12e913fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642418b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642418b8483366b18b5d04ff23f6442404010f85dd0000008b7c24048b3f8b742404ff7604ff37ff742424ff74242cff74241c8b7c24448b7424388b5424408b4c242c8b5c24288b4424245756ff742414525153508b5424248b4424208b5c241cff1289c78d64240c57f6442408017407bf03000000eb05bf0100000083f70283f70283ff0374508b5c24388b0424e8d70d030089c7f7c7010000007538ff376a016a018b54242854b8c45d66b18b5c2414ff125f8d6424048b44243cff74240857ff742408bb01000000e8531900008d642404eb00eb008b7424085a895424088974240c3b650c7303ff552c83c408e918ffffff5883c404c22800f6042401752f8b3c248b078b3c24ff77048b5c24488b7c244457ff742420ff742410e8681103005e8934243b650c7303ff552cebcb8d64241cb8902d66b1c22800f604240175638b3c248b3f8b3424ff76048b7424388b168b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e04893e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552ceb978d64240cb8902d66b1c22800f604240175438b3c248b378b3c24ff77048b7c244c8b57088b3e8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff125e8934243b650c7303ff552cebb78d6424048b7c24448b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000005f8978048b7c24048938ff12b8902d66b183c418c228005883c418c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642420b8483366b18b5d04ff238b44241ce80238ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240c89700c5e897008897804c700030000008b7c24408b7f0c8b7424408b5630c70703000000ff12e913fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642420b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642420b8483366b18b5d04ff23ba0c6368b18b4424048b1c24e89dd6010089c7f7c7010000000f853c020000ff378b7c24488b742444ff7424085756b84c8768b18b5c2420e87136020089c7578b7c244c8b742448ff7424085756b85c8768b18b5c2428e85236020089c757ba106968b18b4424508b5c244c8b7c244c5768dc6968b1e8cf38020089c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d64240c893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7066c8768b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24408b7f34eb0b8d6424045883c418c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9950000008b3f8b3781feec01c0b075058b5f08eb0e8d64241cb8483366b18b5d04ff238b442418e83934ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c243c8b7f0c8b74243c8b5630c70703000000ff12b8902d66b183c418c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64241cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91bffffff8d64241cb8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b442420e8d032ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24448b7f0c8b7424448b5630c70703000000ff12e94bfbfffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642424b8483366b18b5d04ff235883c40c5f890783c40cc22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b442420e86031ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24448b7f0c8b7424448b5630c70703000000ff12e90dfffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642424b8483366b18b5d04ff235883c40ce98bfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b442420e8f42fffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24448b7f0c8b7424448b5630c70703000000ff12e911fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642424b8483366b18b5d04ff23f7c7010000000f85610200008b3f8b07ff7704ba0c6368b18b5c2404e87fce010089c7f7c7010000000f853c020000ff378b7c244c8b742448ff74240c5756b8906b68b18b5c2428e8532e020089c7578b7c24508b74244cff74240c5756b8a46b68b18b5c2428e8342e020089c757ba106968b18b4424548b5c24508b7c24505768dc6968b1e8b130020089c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706546c68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c244c8b7f34eb1eeb0c8d642420b8902d66b1c228008b3c248b742410893e5883c420c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642428b8483366b18b5d04ff238b442420e8082cffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24488b7f0c8b7424488b5630c70703000000ff12e90afffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642428b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642428b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9940000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b44241ce8a52affff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240c89700c5e897008897804c700030000008b7c24448b7f0c8b7424448b5630c70703000000ff12bf01000000e929fbfffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91cffffff8d642424b8483366b18b5d04ff23b8504766b1c22800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9930000008b3f8b3781feec01c0b075058b5f08eb0e8d64240cb8483366b18b5d04ff238b442408e83529ffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c5e8d642408897008897804c700030000008b7c24248b7f0c8b7424248b5630c70703000000ff12e90efffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91dffffff8d64240cb8483366b18b5d04ff23f4|@16706,1,@2817|181,0,@15134 206,0,@15138 231,0,@15141 247,0,@7267 699,1,@7268 758,0,0 796,0,@10423 868,0,25 956,0,@16476 961,0,1 966,1,@6475 977,1,@6476 1012,0,1 1021,0,0 1060,0,3 1065,0,@16477 1073,1,@7452 1108,0,@16514 1117,1,@7487 1125,0,@16516 1143,0,@16520 1148,1,@7488 1191,0,0 1228,0,@16528 1263,0,@16529 1299,0,0 1306,0,0 1313,0,0 1319,0,0 1352,0,0 1389,0,@10448 1460,0,@10448 1495,0,@16531 1531,0,0 1538,0,1 1545,0,3 1551,0,0 1764,1,@7494 1778,0,@10423 1855,0,6 1860,0,@16477 1869,1,@7452 1878,1,@6635 1962,0,@10423 1995,0,9999 2040,0,6 2046,0,@10423 2079,0,9999 2124,0,6 2168,0,2 2173,0,@16477 2182,1,@7452 2219,0,@16535 2228,1,@7487 2250,0,@16536 2259,1,@7487 2294,0,@16537 2331,0,@10448 2398,0,@10448 2433,0,@16545 2469,0,0 2476,0,1 2483,0,3 2489,0,0 2708,0,@7496 2741,0,@16600 2748,0,@15018 2796,0,@9629 2803,0,@16604 2809,0,@16605 2829,1,@7527 2923,1,@6635 2941,0,@16477 2952,1,@7452 2969,0,@16516 2987,0,@16520 2992,1,@7488 3028,0,@10423 3061,0,9999 3106,0,6 3152,0,2 3157,0,@16477 3162,1,@7452 3179,0,@16516 3197,0,@16520 3202,1,@7488 3505,0,@16477 3514,0,@10239 3519,1,@7452 3554,0,@16606 3563,1,@7487 3571,0,@16516 3589,0,@16520 3594,1,@7488 3637,0,0 3674,0,@16528 3709,0,@16529 3745,0,0 3752,0,0 3759,0,0 3765,0,0 3798,0,0 3835,0,@10448 3906,0,@10448 3941,0,@16607 3977,0,0 3984,0,1 3991,0,3 3997,0,0 4123,0,@15147 4176,0,@7538 4190,1,@7273 4198,0,@16477 4210,1,@7452 4245,0,@16574 4254,1,@7487 4262,0,0 4267,1,@7128 4274,0,@14942 4291,0,10000 4296,1,@7139 4331,0,0 4368,0,@10448 4403,0,@16575 4439,0,0 4446,0,0 4453,0,0 4459,0,0 4465,0,@16516 4483,0,@16520 4488,1,@7488 4531,0,0 4568,0,@16528 4603,0,@16529 4639,0,0 4646,0,0 4653,0,0 4659,0,0 4692,0,0 4729,0,@10448 4796,0,@10448 4867,0,@10448 4902,0,@16577 4938,0,0 4945,0,1 4952,0,3 4958,0,0 5092,0,@7540 5102,1,@7283 5120,1,@6665 5131,0,@9473 5154,0,@9473 5175,0,0 5237,0,@7541 5244,0,@15155 5249,1,@7284 5302,0,0 5315,0,0 5354,0,2 5387,0,0 5494,1,@7542 5681,0,@7546 5688,0,@16613 5693,1,@7502 5722,0,1 5729,0,0 5742,0,0 5747,1,@7512 5765,0,@16614 5770,1,@6630 5782,1,@7517 5984,0,@7548 5997,1,@6921 6024,0,@9922 6167,0,@7549 6200,0,@16600 6207,0,@15018 6253,0,@9629 6260,0,@16604 6266,0,@16616 6286,1,@7527 6414,1,@7550 6423,0,@9922 6646,0,@7581 6679,0,@16600 6686,0,@15018 6735,0,@9629 6742,0,@16604 6748,0,@16655 6768,1,@7527 6807,0,@13287 6813,0,2 6818,0,@16477 6823,1,@7452 6840,0,@16516 6858,0,@16520 6863,1,@7488 6993,0,@16656 6998,1,@7582 7007,1,@6621 7018,1,@6623 7062,0,0 7136,0,1 7175,0,3 7193,0,@10423 7226,0,9999 7271,0,6 7421,0,@16656 7427,0,@7583 7460,0,@16585 7467,0,@15035 7513,0,@9549 7520,0,@16588 7526,0,@16589 7546,1,@7527 7564,0,@9922 7599,0,0 7634,0,@10037 7641,0,@10472 7648,0,@10474 7657,0,5 7692,0,1 7697,1,@7512 7702,1,@6635 7720,0,@16477 7727,0,@13128 7732,1,@7452 7749,0,@16516 7767,0,@16520 7772,1,@7488 7808,0,@10423 7841,0,9999 7886,0,6 7926,0,@13128 7932,0,2 7937,0,@16477 7942,1,@7452 7959,0,@16516 7977,0,@16520 7982,1,@7488 8043,0,0 8050,1,@6866 8072,0,0 8079,1,@6866 8098,0,0 8105,1,@6866 8146,0,@9455 8201,0,@7584 8251,0,@7585 8310,0,@7586 8410,0,@7587 8525,0,@16659 8561,0,10 8566,1,@4893 8574,0,10 8579,1,@4893 8587,0,10 8592,1,@4893 8617,1,@7591 8680,0,0 8718,0,@10423 8790,0,25 8878,0,@16660 8883,0,1 8888,1,@6475 8899,1,@6476 8934,0,1 8943,0,0 8982,0,3 8987,0,@16477 8995,1,@7452 9030,0,@16514 9039,1,@7487 9047,0,@16516 9065,0,@16520 9070,1,@7488 9113,0,0 9150,0,@16528 9185,0,@16529 9221,0,0 9228,0,0 9235,0,0 9241,0,0 9274,0,0 9311,0,@10448 9382,0,@10448 9417,0,@16663 9453,0,0 9460,0,1 9467,0,3 9473,0,0 9599,0,@16477 9607,0,@13287 9612,1,@7452 9647,0,@16665 9656,1,@7487 9664,0,@16516 9682,0,@16520 9687,1,@7488 9730,0,0 9767,0,@16528 9802,0,@16529 9838,0,0 9845,0,0 9852,0,0 9858,0,0 9891,0,0 9928,0,@10448 9999,0,@10448 10034,0,@16666 10070,0,0 10077,0,1 10084,0,3 10090,0,0 10212,0,@16656 10217,1,@7593 10226,0,1 10231,1,@6475 10242,1,@6476 10277,0,1 10286,0,0 10325,0,3 10391,0,@7594 10404,1,@6921 10430,1,@7595 10451,0,@13097 10557,1,@7598 10566,0,@9922 10680,0,@16477 10688,0,@10239 10693,1,@7452 10728,0,@16680 10737,1,@7487 10745,0,@16516 10763,0,@16520 10768,1,@7488 10811,0,0 10848,0,@16528 10883,0,@16529 10919,0,0 10926,0,0 10933,0,0 10939,0,0 10972,0,0 11009,0,@10448 11080,0,@10448 11115,0,@16681 11151,0,0 11158,0,1 11165,0,3 11171,0,0 11269,0,@13097 11293,0,@4656 11344,0,0 11354,0,@10769 11369,0,@4656 11385,0,@9999 11399,1,@7172 11479,0,1 11499,0,1 11530,0,@4656 11581,0,0 11595,0,@11247 11610,0,@4656 11629,0,@9999 11697,1,@7613 11738,0,@9922 11746,0,@10423 11779,0,9999 11824,0,6 11848,0,@4656 11899,0,0 11909,0,@10769 11924,0,@4656 11940,0,@9999 11954,1,@7172 12034,0,1 12054,0,1 12085,0,@4656 12136,0,0 12150,0,@11247 12165,0,@4656 12184,0,@9999 12194,0,@10239 12218,0,@4656 12269,0,0 12279,0,@10769 12294,0,@4656 12310,0,@9999 12324,1,@7172 12404,0,1 12424,0,1 12452,0,@4656 12503,0,0 12517,0,@11247 12532,0,@4656 12551,0,@9999 12600,1,@7614 12623,0,@16687 12632,0,0 12637,1,@4949 12650,0,@16689 12659,0,0 12664,1,@4949 12681,0,@16690 12690,0,0 12695,1,@4949 12713,0,@9922 12888,0,@7625 12938,0,@7626 12996,0,@7627 13144,0,@9922 13258,0,1 13265,0,0 13294,1,@7628 13323,0,@10588 13355,0,0 13360,1,@7270 13438,0,@4656 13489,0,0 13499,0,@10769 13514,0,@4656 13530,0,@9999 13544,1,@7172 13620,0,1 13640,0,1 13668,0,@4656 13719,0,0 13733,0,@11247 13748,0,@4656 13767,0,@9999 13802,0,@4656 13853,0,0 13863,0,@10769 13878,0,@4656 13894,0,@9999 13908,1,@7172 13984,0,1 14004,0,1 14032,0,@4656 14083,0,0 14097,0,@11247 14112,0,@4656 14131,0,@9999 14164,0,@4656 14215,0,0 14225,0,@10769 14240,0,@4656 14256,0,@9999 14270,1,@7172 14346,0,1 14366,0,1 14394,0,@4656 14445,0,0 14459,0,@11247 14474,0,@4656 14493,0,@9999 14603,0,1 14610,0,0 14633,1,@7628 14659,0,@10588 14688,0,0 14693,1,@7270 14776,1,@7631 14799,0,@9922 14916,0,@9922 15046,0,@9922 15080,0,@4656 15131,0,0 15141,0,@10769 15156,0,@4656 15172,0,@9999 15186,1,@7172 15262,0,1 15282,0,1 15310,0,@4656 15361,0,0 15375,0,@11247 15390,0,@4656 15409,0,@9999 15419,0,@16477 15431,1,@7452 15466,0,@16702 15475,1,@7487 15497,0,@16703 15506,1,@7487 15514,0,@16516 15532,0,@16520 15537,1,@7488 15580,0,0 15617,0,@16528 15652,0,@16529 15688,0,0 15695,0,0 15702,0,0 15708,0,0 15741,0,0 15778,0,@10448 15845,0,@10448 15916,0,@10448 15951,0,@16704 15987,0,0 15994,0,1 16001,0,3 16007,0,0 16049,0,@4656 16100,0,0 16110,0,@10769 16125,0,@4656 16141,0,@9999 16155,1,@7172 16231,0,1 16251,0,1 16258,0,@9922 16285,0,@4656 16336,0,0 16350,0,@11247 16365,0,@4656 16384,0,@9999 16410,0,@4656 16461,0,0 16471,0,@10769 16486,0,@4656 16502,0,@9999 16516,1,@7172 16592,0,1 16612,0,1 16640,0,@4656 16691,0,0 16705,0,@11247 16720,0,@4656 16739,0,@9999 16778,0,@4656 16829,0,0 16839,0,@10769 16854,0,@4656 16870,0,@9999 16884,1,@7172 16960,0,1 16980,0,1 17008,0,@4656 17059,0,0 17073,0,@11247 17088,0,@4656 17107,0,@9999 17142,0,@4656 17193,0,0 17203,0,@10769 17218,0,@4656 17234,0,@9999 17248,1,@7172 17324,0,1 17344,0,1 17372,0,@4656 17423,0,0 17437,0,@11247 17452,0,@4656 17471,0,@9999 17500,0,@16477 17509,1,@7452 17544,0,@16535 17553,1,@7487 17575,0,@16536 17584,1,@7487 17592,0,@16516 17610,0,@16520 17615,1,@7488 17658,0,0 17695,0,@16528 17730,0,@16529 17766,0,0 17773,0,0 17780,0,0 17786,0,0 17819,0,0 17856,0,@10448 17923,0,@10448 17994,0,@10448 18029,0,@16545 18065,0,0 18072,0,1 18079,0,3 18085,0,0 18106,0,@9922 18146,0,@4656 18197,0,0 18207,0,@10769 18222,0,@4656 18238,0,@9999 18252,1,@7172 18328,0,1 18348,0,1 18376,0,@4656 18427,0,0 18441,0,@11247 18456,0,@4656 18475,0,@9999 18501,0,@4656 18552,0,0 18562,0,@10769 18577,0,@4656 18593,0,@9999 18607,1,@7172 18683,0,1 18703,0,1 18710,0,0 18736,0,@4656 18787,0,0 18801,0,@11247 18816,0,@4656 18835,0,@9999 18845,0,@10239 18869,0,@4656 18920,0,0 18930,0,@10769 18945,0,@4656 18961,0,@9999 18975,1,@7172 19055,0,1 19075,0,1 19103,0,@4656 19154,0,0 19168,0,@11247 19183,0,@4656 19202,0,@9999 7268:D3,1616|8d7c24903b7d0c7305ff5530cd09508b7c24288b7424248b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700d06a3bb16a016a016a0189e3e8cedefcffff742404ff74240c8b44244c8b5c24348b7c24308b74243c5756ff74240ce85709000089c7578b4424488b5c24308b7c24408b74243cff7424045756e8b50c000089c7ff74244857f6442404010f851f020000f60424010f850f0200008b7c24048b3f8b742404ff76048b742404ff368b742408ff7604ff37ff7704ff7710ff77188b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708100666b18b7424048977048b74240c8937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70701000000578b7c246c8b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74241c8977048b74240889378b54246057ff742408b801000000bb01000000ff1289c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c5f8d642404897e085f897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b3c248b742408893e8b5c2464ff7424048b442410e8619cfcff8b54242c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c240c8938ff128b7c24548b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000005f8d6424088978045f8938ff128b7424085a8d642408891424897424043b650c7303ff552ce9dcfdffff8d642408eb048d6424088b7c24408b74243c8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700e0aa3bb16a016a016a0189e3e81ddcfcffff3424ff742408ff7424106a016a016a01b80100000089e3e8a862fcffff742404ff74240c8b44247c8b7c246c8b74245c8b5424688b4c24785756ff74243852ff74242851ff74241c8b5c2448e85b440000baf00e68b18b5c2458e8b95000008b7c247883ff0374168d64241c5a8b7c243c8b4708ff1283c428e9ca0200006a016a016a01b80100000089e3e83462fcff5a5b598b74245c8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08897704c70704283db1578b7c24608b77188b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8b4c2418894f08897704c70744283db1578b7424648b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8b542424895708897704c707a0283db1578b7424688b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c707142b3db1578b7c246c8b77208b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c707542b3db1578b7c2470ff77108b7c2474ff77348b7c2478ff77148b7c247c8b4f2c8b7c247c8b5f308b7c247cff378bbc24800000008b57288bbc2480000000ff77048bbc24840000008b771c8b7d008d7fc43b7d087305ff5528cd4e897d00c747fc0e0000008b44240c894734895f30894f2c8957288b54241c8957248b54241489572089771c8b7424208977188b7424088977148b7424108977108b74241889770c8b7424248977088b34248977048d6424045e8d642428893757ff742440f604240175588b3c248b3f8b3424ff7604ff37ff74245cff7424588b4424748b7c24788b74247c8b5424708b4c24688b5c2460ff74241457ff7424105652515389c38b5424208b44241cff128d64240c5e8934243b650c7303ff552ceba28d64242c8b0424e889c1010089c78b742444893e5f83c418f7c7010000000f85850000008b178b77048b520c8b4a0489cb8b0183f80375248b490c83f9037507b903000000eb05b90100000083f903750b8b5304c70201000000eb3289d98b0383f801753a8b5b088b1b83fb037507bb03000000eb05bb0100000083fb03751f89ca8b52088b5204c7020100000089f73b650c7305ff552ccd80e979ffffffb8c85e68b18b5d04ff23b8902d66b1c23400f4000000|@16475,1,@2633|57,0,@7269 70,1,@6921 105,1,@7271 135,1,@7272 231,0,@9473 282,0,0 295,0,0 334,0,2 367,0,0 453,0,0 458,0,0 542,0,0 571,1,@6891 746,0,@7322 759,1,@6921 781,0,0 788,1,@6866 841,1,@7323 846,0,@15206 855,1,@7333 897,0,0 904,1,@6866 949,0,@7442 1002,0,@7443 1052,0,@7444 1099,0,@7449 1149,0,@7450 1443,1,@7451 1500,0,1 1507,0,0 1521,0,0 1547,0,1 1554,0,0 1573,0,0 1595,0,@16439 1605,0,@9922 7269:D3,292|3b650c7305ff552ccd0d89c7528b7424088b368b7608f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab9f00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce9260000008d642408b8780566b18b5d04ff23f4000000|@15146,1,@2451|62,0,@14696 82,0,@15144 102,0,4 123,0,16777215 181,0,0 207,0,@15144 212,0,43 257,0,1 270,1,@7270 279,0,@9465 7270:D3,532|3b650c7305ff552ccd0950538b7c24048b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9290100008b3f8b3781feec01c0b075058b5f08eb0e8d642408b8483366b18b5d04ff238b74240c8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd88897500c746fc02000000c7460401000000893e8b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442418e8871fffff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b7424148b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d6424048978048b3c2489fe89388b5424048b7a0c89d28b523089f683fe038d6424087508c70703000000eb008b3c24897c240c83c40cff22f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e987feffff8d642408b8483366b18b5d04ff23f4000000|@15145,1,@2450|36,0,@4656 87,0,0 97,0,@10769 112,0,@4656 128,0,@9999 172,0,3 205,0,0 243,0,0 250,0,0 257,0,0 263,0,0 273,1,@7172 385,0,1 420,0,@4656 471,0,0 485,0,@11247 500,0,@4656 519,0,@9999 7271:D3,872|3b650c7305ff552ccd0953a80175468b38ff7004ff37ff7704ff7710ff77148b4d008d49f03b4d087303ff5528894d00c741fc03000000c74108100666b18b7c24048979048b7c240c8939bb010000008b3c24eb0c8d642404b801000000c20c00f7c70100000075288b570489de83c602710e8d642418b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd8aebd08b7c241483ff01753f8b7d008d7ff43b7d087305ff5528cd02897d00c747fc02000000c74704cc5366b18b342489378b5424245751b801000000bb03000000ff1289c7e9d8000000beffffffff8b7d008d7ff83b7d087305ff5528cd4a897d00c747fc010000408937be2c0268b18b55008d52f83b55087305ff5528cdca895500c742fc0100004089328b75008d76f03b75087305ff5528cd8e897500c746fc03000000895608897e04c70605000000ba010000008b7d008d7ff83b7d087305ff5528cd4e897d00c747fc0100004089178b55008d52ec3b55087305ff5528cdca895500c742fc04000000c7420c03000000895a08897a04c702030000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70701000000578b7c24288b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8d6424048977088b34248977048d6424048b74240889f08937578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000c74704010000008b142489d689178b542408893a8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c747040100000089f68937578b5c2424ff742408e8ed91fcff8b5424208b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b7c240c8938ff128b7c24248b7424208b54241c5756528b44241c8b5c2420e8c5fcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642418c20c00f400|@10030,1,@2452|58,0,@9473 76,0,0 90,0,0 120,0,@9455 183,0,@10423 199,0,0 204,0,1 218,0,-1 251,0,@15112 317,0,2 322,0,0 383,0,1 395,0,1 467,0,0 480,0,0 519,0,2 552,0,0 683,0,0 729,0,0 747,1,@6891 7272:D3,212|3b650c7305ff552ccd0953a8010f85b40000008b38ff70048b7f08f7c7010000007559ff37ba980668b18b7c24188b7424148b4c24108b5d008d5be83b5d087305ff5528cdc6895d00c743fc050000008b442408894310894b0c897308897b04c703cc7b3bb18b7c2414578b442404e87400000089c78d642404eb05bfcc5366b1578b7c24188b7424148b5424105756528b4424108b5c2414e862ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424088938c20c008d642404b801000000c20c00f4|@10030,1,@2502|38,0,@15147 98,0,@7280 112,1,@7273 125,0,@10423 204,0,0 7273:D3,36|3b650c7305ff552ccd0d8b72048b542404ff34248954240489742408e917000000f40000|@15153,1,@2459|29,1,@7274 7274:D3,1572|3b650c7305ff552ccd09538b38becc723bb181c61e0000008d74befcffe6e92b000000909090e92f000000909090e9b7000000909090e916010000909090e943010000909090e9800200009090908d642404b8902d66b1c208008b7804ff37ff7704ff7710ff77146a018b542414548b4424108b5c240cff12ff34248b3c248b570c89d68b5a0489d98b1b83fb03751b89ca8b52048b4c24243bd17507ba03000000eb05ba01000000eb05ba0100000083fa03743089f78b7f048b1789d683fa0375088b4708e96403000083fe0175088b4704e9570300008b7f04b801000000e91a030000e9700200008b5004ff700c8b7c24108b74240c575689d08b5c240ce8fbfeffff89c7578b7c24148b74241057568b44240c8b5c2410e8e1feffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d64240cc70005000000c208008d6424048b70048b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c208008b5004ff70088b7c24108b74240cff742404575689d0bba40668b1e892040000e83d38fbff89c7578b0424e85205000089c68b55008d52f03b55087305ff5528cd40895500c742fc030000008b4c240489cf894a08897204c7020100000089ff89fe83ff037502eb3f8b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088b14248957048d642404c7070700000089f683fe038d64240475098d64240489f8c208008d642404bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c7000d000000893ec208008b40048b7c240c8b742408ff34245756bba40668b1e8830400008d642404bb03000000e8ddaefaff89c7578b0424e80605000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70007000000c208008b7c24248b742420ff74241857568b442420bba40668b1e8ee04000089c78b55008d52f43b55087305ff5528cd80895500c742fc020000008b74240c897204c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40e83b45087305ff5528cdc0894500c740fc050000008970108b342489700c8d6424048b74240c897008897804c7000b00000083c418c20800f7c70100000075288b570489c683c602710e8d64241cb8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd0bf010000008b742414f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd0573b04240f849c0100008b7c2404ff37ba803066b1bb03000000e8f5e8eaff89c757ba803066b18b442408bb03000000e8dfe8eaff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ac0668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c40668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700d80668b1e8c0a7eaffbbd4c067b1e8fa14fcffe8795bfcff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240c89700c897808c7400401000000c700030000008b7c24208b7f0c8b7424208b5630c70703000000ff12eb0d8d6424048b3c248b742408893ee93afdfffff4000000|@15152,1,@2458|14,0,@7274 83,0,@9922 158,0,1 165,0,0 172,0,0 220,0,0 330,0,2 383,0,6 413,0,@15148 418,1,@7275 423,1,@6621 434,1,@7276 480,0,0 554,0,1 599,0,3 628,0,@10423 661,0,9999 706,0,6 732,0,@15148 737,1,@7277 746,0,1 751,1,@6475 762,1,@7278 797,0,1 806,0,0 851,0,3 877,0,@15148 882,1,@7279 923,0,0 956,0,0 1013,0,5 1046,0,@9455 1072,0,0 1103,0,@9455 1145,0,@9967 1150,0,1 1155,1,@4896 1163,0,@9967 1172,0,1 1177,1,@4896 1212,0,0 1249,0,@15149 1322,0,@15150 1395,0,@15151 1400,1,@4827 1405,0,@14533 1410,1,@6850 1415,1,@6875 1453,0,0 1460,0,0 1467,0,3 1473,0,0 1516,0,0 1522,0,1 1542,0,1 7275:D3,188|3b650c7305ff552ccd0953a8010f859c0000008b30ff70048b3e8b4604ff378b5424088b5c24188b7c24148b7424105756ff1289c7578b442404e88931fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d6424088937578b7c24188b7424148b5424105756528b4424108b5c2414e87cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f4|@10030,1,@2453|59,1,@6619 180,0,0 7276:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2454|68,0,0 7277:D3,136|3b650c7305ff552ccd0989c753f7c70100000075638b07ff77048b5424048b5c24148b7c24108b74240c5756ff1289c7578b7c24188b7424148b5424105756528b4424108b5c2414e8b3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f4000000|@10030,1,@2455|125,0,0 7278:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2456|68,0,0 7279:D3,136|3b650c7305ff552ccd0989c753f7c70100000075638b07ff77048b5424048b5c24148b7c24108b74240c5756ff1289c7578b7c24188b7424148b5424105756528b4424108b5c2414e8b3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f4000000|@10030,1,@2457|125,0,0 7280:D3,176|3b650c7305ff552ccd0d508b7a1089fe8b4f208b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b4204894708894f04c707907c3bb18b76348b45008d40f43b45087305ff5528cdcc894500c740fc0200000089700489388b7d008d7fec3b7d087305ff5528cd0d897d00c747fc04000000895f0c8b720c8977088b7208897704c707d87c3bb1ff742408578b5c2408e8b100000089c78b3f5e8d642404893eb801000000c20400f400|@15197,1,@2501|56,0,@7281 137,0,@7282 151,1,@7283 167,0,0 7281:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2460| 7282:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce907effffff40000|@15154,1,@2461|26,0,1 37,1,@7270 7283:D3,1468|3b650c7305ff552ccd09ff30ff70046a016a0189d889e3e8d064fbffff3424ff7424088b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017529bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb108b5424148b0424ff1289c7e9470100008b7c241cff74240457b8880768b18b5c2418e84d05000089c7f7c7010000000f851d010000ff378b3c248b7f088b07ba3c4966b1e8a7ceecff89c78b57208b442404ff1289c783ff01750e8d642404bf01000000e9d9000000ff378b7c24048b7f08ff77108b7c24088b3f8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878a00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b4424088b5c2404e8670d000089c68d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c404eb138d642424b8780566b18b5d04ff23bfc80c68b183ff010f85f5030000ff74241cbe0d0000008d3c7502000000f7df037d003b7d0872053b7d007203ff5528897d00d1ee8977fcc647ff41578b3c2489fac7471400000000be25000000d1ee89d289d78932bed00c68b1b9210000008d760489ff89fa8d7f04d1e9f3a489d689f7c646142089ff89fec647152889f689f78066ffbf89ff8b378d1c75010000008b7424088b368d3475010000005683fb01750d8d6424088b7c2404e9a90000008b342483fe01750f8d64240489ff8d642404e9920000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870103000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c708598d6424048b7424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfc80768b1e98f00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874b02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec80768b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff017523bf100666b18b74240c8d76048d7f0433c93bc9f3a67402eb0abf100666b1e9a80000008b7c240c8b3f8d1c7d0100000083fb01750abfe80768b1e98c00000089df83c71c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874e01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe80768b1b91d0000008d77048d7a04d1e9f3a489d98b7c240c8d77048d7a12d1e9f3a48062ffbf89d7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045883c404e99d0000008b3c2483ff01750a8d64240858e98b0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777789f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b800da67b183c418c204008d642428b8780566b18b5d04ff238d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238d642424b8780566b18b5d04ff238d6424188b07c20400f400|@15196,1,@2500|24,1,@6665 41,0,@9473 68,0,@9473 118,0,@15155 127,1,@7284 156,0,@10267 161,1,@4989 188,0,0 230,0,@9551 247,0,4 268,0,16777215 326,0,0 373,1,@7288 421,0,@9465 431,0,@15194 449,0,6 499,0,0 504,0,18 517,0,@15195 522,0,16 643,0,4 664,0,16777215 722,0,0 791,0,@15157 811,0,4 832,0,16777215 890,0,0 916,0,@15157 921,0,23 950,0,@9473 977,0,@9473 1002,0,@9473 1030,0,@15158 1050,0,4 1071,0,16777215 1129,0,0 1138,0,@15158 1143,0,14 1255,0,4 1276,0,16777215 1330,0,0 1391,0,@14768 1406,0,@9465 1420,0,@9465 1434,0,@9465 1448,0,@9465 7284:D3,1352|3b650c7305ff552ccd0950536a016a018b44241889e3e8015ffbffff3424ff7424088b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017529bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb108b5424108b0424ff1289c7e9850000008b7c241cff74240457b8880768b18b5c2418e87effffff89c7f7c701000000755fff378b3c248b7f088b07ba3c4966b1e8dcc8ecff89c78b57308b442404ff1289c783ff01750b8d642404bf01000000eb2c8b078b1c24e89504000089c68d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff010f8529040000ff74241c8b7c24188b3f8d1c7d0100000083fb01750abfcc2e67b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d103000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24188d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a01288062ffbf89d78b378d1c75010000008b7424048b368d3475010000005683fb01750d8d6424048b7c2404e99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87fb02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfc80768b1e98f00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874b02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec80768b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff017523bf100666b18b74240c8d76048d7f0433c93bc9f3a67402eb0abf100666b1e9a80000008b7c240c8b3f8d1c7d0100000083fb01750abfe80768b1e98c00000089df83c71c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874e01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe80768b1b91d0000008d77048d7a04d1e9f3a489d98b7c240c8d77048d7a12d1e9f3a48062ffbf89d7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045883c404e99d0000008b3c2483ff01750a8d64240858e98b0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777789f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b80100000083c418c208008d642428b8780566b18b5d04ff238d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238d642420b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238d6424188b3f8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20800f4|@15159,1,@2465|23,1,@6665 40,0,@9473 67,0,@9473 117,0,@15155 151,0,@10267 156,1,@4989 183,0,0 195,1,@7285 236,0,0 272,0,@12628 292,0,4 313,0,16777215 371,0,0 492,0,4 513,0,16777215 571,0,0 634,0,@15157 654,0,4 675,0,16777215 733,0,0 759,0,@15157 764,0,23 793,0,@9473 820,0,@9473 845,0,@9473 873,0,@15158 893,0,4 914,0,16777215 972,0,0 981,0,@15158 986,0,14 1098,0,4 1119,0,16777215 1173,0,0 1234,0,0 1249,0,@9465 1263,0,@9465 1277,0,@9465 1291,0,@9465 1305,0,@9465 7285:D3,776|3b650c7305ff552ccd09ff30ff70048b7808ff700c8b73088b4e10ff7614ff73048b37ff7704ff770c8b57108b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c707608b3bb1578b3e83ff030f85950000008b56048b7e0cff328b378b5efcc1e308c1eb0783cb0183fb017507bfe43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e048d642404c70601000000eb008b7d008d7fe43b7d087305ff5528cd40897d00c747fc060000008b5424108957148b14248957108d6424048b142489570c8d642404c74708010000008b14248957048d6424048937578b7c24108b3783fe010f85a900000089ff8b77048b5424048b3a83ff03756f89d28b52048b3a83ff0d750f6a0189f389d0e826b0ecff89c6eb2f8b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c01000000897708895704c7071700000089fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb288b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089d2895708897704c70709000000eb0289ff578b7c2410f7c70100000075388b178b77048b0a83f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebc0bf01000000f7c70100000075698b1789d68b1283fa017507ba03000000eb05ba0100000083fa03754d89f78b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b8010000008b7c241089fb83ff01750489c7eb07e88600000089c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978088b3c248978048d6424088b7c2410893883c414c3f4000000|@15156,1,@2464|78,0,@7286 122,0,@10109 176,0,0 237,0,0 299,0,0 366,1,@4973 403,0,0 415,0,11 452,0,1 494,0,4 572,0,0 596,0,1 603,0,0 648,0,3 681,0,0 690,0,0 710,1,@7287 7286:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e97868fbfff4000000|@13922,1,@2462|24,1,@6694 7287:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2463| 7288:D3,256|3b650c7305ff552ccd095053b815000000e8bad0eaff89c757ba3c4966b18b0424e846c0ecff89c78b570c8b7424088b3e8b3f8b45008d40f43b45087305ff5528cdc4894500c740fc0200000089f68970048938ff12be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c7070c8d3bb18b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c74308580868b1897b04c703b40868b18b7c2414ff7424086a035768e80868b16a018b442418e8cb0200008b3c248b3f8d64241083ff01750ab8b07766b18b5d04ff238b07c20400f400|@15193,1,@2499|13,0,10 18,1,@4893 26,0,@10267 34,1,@4989 87,0,0 152,0,@7289 185,0,@15161 194,0,@15165 210,0,@15168 221,1,@7293 240,0,@10986 7289:D3,56|3b650c7305ff552ccd058b70048b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100000089378b7204893eb801000000c3f4000000|@15160,1,@2466|47,0,0 7290:D3,252|3b650c7305ff552ccd01ff308b3c248b3f8d1c7d0100000083fb01750e8d642404bf600868b1e98900000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf600868b1b9190000008d77048d7a04d1e9f3a489d95f8d77048d7a10d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c740868b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff23f4000000|@15160,1,@2467|34,0,@15162 54,0,4 75,0,16777215 133,0,0 142,0,@15162 147,0,12 209,0,@15163 219,0,@9978 225,0,@4611 239,0,@9465 7291:D3,252|3b650c7305ff552ccd01ff308b3c248b3f8d1c7d0100000083fb01750e8d642404bfbc0868b1e98900000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfbc0868b1b9130000008d77048d7a04d1e9f3a489d95f8d77048d7a0dd1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cd00868b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff23f4000000|@15160,1,@2468|34,0,@15166 54,0,4 75,0,16777215 133,0,0 142,0,@15166 147,0,9 209,0,@15167 219,0,@9978 225,0,@4611 239,0,@9465 7292:D3,24|3b650c7305ff552ccd01b8f00868b18b5d04ff23f4000000|@15171,1,@2469|11,0,@15169 7293:D3,220|3b650c7305ff552ccd0950538b5c24148b7c241c8b74240c576a036a01568b442414e8c900000089c68b5c24148b7c241c576a0156568b442414e8b100000089c38b7c241c8b7424148b45008d40ec3b45087305ff5528cdc8894500c740fc0400000089580c897008897804c700109b3bb1ff7424188b7c24208b5424188b4c24148b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c8b442404894618895e14894e1089560c897e088b3c24897e048d642408c706289d3bb158bb01000000897424148b3c24897c241083c410e9999aecfff4|@15192,1,@2498|35,1,@7294 59,1,@7294 110,0,@7305 190,0,@7309 196,0,0 215,1,@4949 7294:D3,172|3b650c7305ff552ccd0950538b7424188b5424148b4c24108b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089570c8977088b3424897704c70754913bb18b5c240c578b442408e82f9aecff89c38b7c24188b5424148b4c24108b75008d76e83b75087305ff5528cd8e897500c746fc05000000894e1089560c897e088b3c24897e048d642404c70658943bb158897424108b3c24897c240c83c40ce9da99ecfff400|@15181,1,@2480|67,0,@7295 81,1,@4949 146,0,@7298 166,1,@4949 7295:D3,104|3b650c7305ff552ccd0d525053ff742410f64424040175468b7c24048b1f89ffff77048b4c24108b790489c98b710889c98b510c89c98b4910ff742404575652518b442420e83200000089c25e891424897424043b650c7303ff552cebb35883c40cc20400f40000|@10026,1,@2472|70,1,@7296 7296:D3,576|3b650c7305ff552ccd09508b3389f781feac00c0b00f851902000081ffac00c0b00f85ff0100008b7b088b7f08ff37ff77108b7c241c8b3f8d3c7d01000000578b7c240c8b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2408e9aa00000083fb01750d8d6424048b7c241ce99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f877501000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242089f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8500e66b1eb7d89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87bd00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf8b7c24188b75008d76f03b75087305ff5528cd81897500c746fc03000000897e085f897e04c70624943bb168480968b1ff7424048b5424188b4c24148b5c2424895c241889c38b0424894c241c895424208b542404897424248b7c2410897c241483c414ff228d64240c8d64240cb8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642404b8483366b18b5d04ff238d6424048b442414c21400f4|@15173,1,@2471|17,0,@4616 29,0,@4616 132,0,4 153,0,16777215 211,0,0 285,0,@9551 302,0,4 323,0,16777215 381,0,0 455,0,@7297 460,0,@15172 527,0,@9465 541,0,@9465 555,0,@9999 7297:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9b45ffbfff4000000|@13922,1,@2470|24,1,@6694 7298:D3,104|3b650c7305ff552ccd0d525053ff742410f64424040175468b7c24048b1f89ffff77048b4c24108b790489c98b710889c98b510c89c98b4910ff742404575652518b442420e83200000089c25e891424897424043b650c7303ff552cebb35883c40cc20400f40000|@10026,1,@2479|70,1,@7299 7299:D3,1080|3b650c7305ff552ccd098b3389f781fe9c00c0b00f851504000081ff9c00c0b00f85ff0300008b7b08ff378b7c24148b4d008d49f43b4d087305ff5528cd80894d00c741fc02000000897904c70120993bb18b7c24108b55008d52f43b55087305ff5528cd82895500c742fc02000000897a04c7020c9a3bb18b3c248b7f0c8b5f0489de8b0383f8050f85ea010000ff73048b4308ff37ff77088b7c241883ff03750b8d6424108b442414c214008b7424148b7d008d7fec3b7d087305ff5528cd47897d00c747fc0400000089770c894f08895704c707649a3bb157bbc80a68b1e88622fbff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2408897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a8957088977045e8937578b7c2408ff378b7c24208b3f8d3c7d01000000578b7c24048b3f8d1c7d010000008b342489f783fe01750a8d6424045ee9a700000083fb01750d8d6424088b74241ce99500000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c000000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242489f189f08d77048d7a04d1e9f3a489c783c7088d64240489d95e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7c24088b57088b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000059894f0c8957085a8d64240489570489378b7424148b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c214008d642414b8780566b18b5d04ff238b54240c83fa03740b8d6424048b442414c2140089f78b3783fe0175298b470c8b542410ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f854a010000ff378b7c2404ff378b7c241c8b3f8d3c7d01000000578b7c24048b3f8d1c7d010000008b342489f783fe01750a8d6424045ee9a700000083fb01750d8d6424088b742418e99500000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c600000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242089f189f08d77048d7a04d1e9f3a489c783c7088d64240489d95e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7c24048b57048b7c24048b4f088b7d008d7fec3b7d087305ff5528cd46897d00c747fc040000005b8d642404895f0c894f0889570489378b7424148b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c214008d642410b8780566b18b5d04ff238d6424048b442414c21400b8483366b18b5d04ff238b442414c21400f400|@15180,1,@2478|16,0,@4614 28,0,@4614 78,0,@7300 117,0,@7301 215,0,@7302 221,0,@15179 226,1,@6634 270,0,2 396,0,4 417,0,16777215 475,0,0 624,0,@9465 704,0,0 807,0,4 828,0,16777215 886,0,0 1041,0,@9465 1062,0,@9999 7300:D3,216|3b650c7305ff552ccd0589d7508b770489f08b368d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175058d642408c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee89308b7f0489d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff23f40000|@15174,1,@2473|77,0,4 98,0,16777215 152,0,0 204,0,@9465 7301:D3,68|3b650c7305ff552ccd058b78048b3783fe0175278b470c8b5204ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@15175,1,@2474|60,0,0 7302:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a048b7a088b720c68240a68b15756548304240ce8e843fbff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f400|@15178,1,@2476|28,0,@15176 40,1,@6661 7303:D3,12|3b650c7305ff552ccd01c3f4|@15177,1,@2475| 7304:D3,12|3b650c7305ff552ccd01c3f4|@15178,1,@2477| 7305:D3,160|3b650c7305ff552ccd058b5d008d5bf43b5d087305ff5528cd05895d00c743fc020000008b7a04897b04c703c49b3bb18b7d008d7ff43b7d087305ff5528cd0d897d00c747fc020000008b7208897704c7071c9c3bb16a016a016a016a018b720c68b00b68b15756548304240ce8f642fbff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f4000000|@15185,1,@2484|44,0,@7306 82,0,@7307 98,0,@15184 110,1,@6661 7306:D3,68|3b650c7305ff552ccd058b78048b3783fe0175278b470c8b5204ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@15182,1,@2481|60,0,0 7307:D3,216|3b650c7305ff552ccd0589d7508b770489f08b368d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175058d642408c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775f89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee89308b7f0489d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff23f40000|@15183,1,@2482|77,0,4 98,0,16777215 152,0,0 204,0,@9465 7308:D3,12|3b650c7305ff552ccd01c3f4|@15183,1,@2483| 7309:D3,140|3b650c7305ff552ccd0d525053ff742410f644240401756b8b74240489f7ff3689ffff77048b7c241489f8ff770489c08b780889c08b700c89c08b501089c08b481489c08b581889c08b401cff74240cff7424045756525153508b4424348b5c2428e83900000089c28d6424045e8d642404891424897424043b650c7303ff552ceb8e5883c40cc20400f400|@10026,1,@2497|99,1,@7310 7310:D3,1764|3b650c7305ff552ccd09508b3389f781feac00c0b00f852005000081ffac00c0b00f85060500008b7308ff36ff76048b7e08ff760cff37ff7704ff770cff7710ff77148b7c244083ff030f85210100008b74243c8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742404897704c707c0a43bb1578b7c24148b3f83ff030f85970000008b7c24148b77048b7c24148b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c24148b75008d76e43b75087305ff5528cd80897500c746fc060000008b5424048956145a8d6424048956108b54240489560cc74608010000008b542408895604893e83c410e945030000b815000000e885bdeaff89c7578b55008d52f43b55087303ff5528895500c742fc020000008b3c24897a04c702f4a43bb18b4d008d49f43b4d087305ff5528cd04894d00c741fc020000008b3c24897904c70164a63bb18b75008d76f43b75087305ff5528cd06897500c746fc020000008b3c24897e04c706d4a73bb18b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7424448b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b74240c897704c70744a93bb1578b7c24448b3f8d3c7d01000000578b7c24308b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c242ce9aa00000083fb01750d8d6424048b7c2444e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876e02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c244889f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b74242c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87b601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7b9180c68b18b7424408b54243cff34246a0157565289ca8b4424308b5c2418ff128d6424088b3c248b3f83ff030f85930000008b3c248b77045f8b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb015f8b5424348b75008d76e43b75087305ff5528cd84897500c746fc0600000059894e148956108b54240489560cc74608010000008b542408895604893e83c4108b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000005a89570c8977085e8977045e89378b74240c8b56088b45008d40f43b45087305ff5528cd84894500c740fc020000008978045f89388b3c24897c242083c420ff228d642430b8780566b18b5d04ff238d642434b8780566b18b5d04ff238d642404b8483366b18b5d04ff2389fe81ff9c00c0b00f858d00000081fe9c00c0b075778b7b088b07ff77048b54240cff1289c7578b5c24108b442404e84106000089c68b7c24148b57048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e8d64240489378b45008d40f43b45087305ff5528cd84894500c740fc020000008978045f89388b3c24897c242083c420ff228d642404b8483366b18b5d04ff238d64240489f781fe9400c0b00f85f100000081ff9400c0b00f85db000000ff73088b3c24ff378b7c2404ff77048b7c2408ff77088b7c240cff770c8b7c2410ff77108b7c2414ff77148b7c2418ff77188b7c2424578b442410bb580c68b1e83f14fbff89c63b74240c7507bf03000000eb05bf0100000083ff0374428b7d008d7fe03b7d087305ff5528cd40897d00c747fc070000005a8957185a8957145a89571089770c8b7424048977088b7424088977048b74240c893783c40ceb088d6424188b7c24048b7424108b168b45008d40f43b45087305ff5528cd84894500c740fc020000008978045f89388b7c2404897c242483c424ff22b8483366b18b5d04ff23b801000000c22000f40000|@15191,1,@2496|17,0,@4616 29,0,@4616 122,0,@7311 178,0,@10109 232,0,0 287,0,0 348,0,0 370,0,10 375,1,@4893 414,0,@7312 452,0,@7314 490,0,@7316 571,0,@7318 658,0,4 679,0,16777215 737,0,0 811,0,@9551 828,0,4 849,0,16777215 907,0,0 945,0,@15187 1027,0,@10109 1081,0,0 1136,0,0 1190,0,0 1302,0,@9465 1316,0,@9465 1330,0,@9999 1343,0,@4614 1355,0,@4614 1387,1,@7319 1485,0,@9999 1502,0,@4613 1514,0,@4613 1584,0,@15190 1589,1,@6634 1602,0,1 1609,0,0 1744,0,@9999 1754,0,0 7311:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9184ffbfff4000000|@13922,1,@2485|24,1,@6694 7312:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c7079c00c0b0578b7c24088b47048b5c2404e8a666ecff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e92574ecfff4|@15186,1,@2487|45,0,0 55,0,@9574 61,0,@4614 78,1,@4911 116,0,0 137,1,@7313 167,1,@4928 7313:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@2486|26,0,@4614 145,0,0 7314:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c707ac00c0b0578b7c24088b47048b5c2404e83665ecff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9b572ecfff4|@15186,1,@2489|45,0,0 55,0,@9574 61,0,@4616 78,1,@4911 116,0,0 137,1,@7315 167,1,@4928 7315:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@2488|26,0,@4616 145,0,0 7316:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c7079400c0b0578b7c24088b47048b5c2404e8c663ecff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e94571ecfff4|@15186,1,@2491|45,0,0 55,0,@9574 61,0,@4613 78,1,@4911 116,0,0 137,1,@7317 167,1,@4928 7317:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@2490|26,0,@4613 145,0,0 7318:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9944afbfff4000000|@13922,1,@2492|24,1,@6694 7319:D3,276|3b650c7305ff552ccd0953a8010f85f6000000ff30ff70048b7c240489feff3789f689f7ff760489ff89feff770889f689f7ff760c89ff89feff771089f689f7ff761489ffff7718ff7424248b442410bb200c68b1e86e0efbff89c63b74240c7507bf03000000eb05bf0100000083ff0374548b7d008d7fe03b7d087305ff5528cd40897d00c747fc070000008b14248957188d6424048b14248957148d6424048b14248957108d64240489770c8b7424048977088b7424088977048b74240c893783c410eb088d64241c8b7c2404578b4424048b5c240ce823ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c38d642404b801000000c3f4|@10030,1,@2494|81,0,@15188 86,1,@6634 99,0,1 106,0,0 270,0,0 7320:D3,12|3b650c7305ff552ccd01c3f4|@15189,1,@2493| 7321:D3,12|3b650c7305ff552ccd01c3f4|@15189,1,@2495| 7322:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7610f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab92c0d68b1e98f00000089de83c66889f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be2c0d68b1b9690000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce918c0ffff8d642408b8780566b18b5d04ff23f400|@15146,1,@2503|60,0,@14696 80,0,@15198 100,0,4 121,0,16777215 179,0,0 205,0,@15198 210,0,52 255,0,1 268,1,@7270 277,0,@9465 7323:D3,196|3b650c7305ff552ccd09a8010f85a9000000f6c3010f85a0000000ff30ff7004ff33ff7304ff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b44242c8b5c2424e88100000089c757ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff34245756525153508b4424308b5c2428e874ffffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642418c21c00b801000000c21c00f4|@11120,1,@2513|83,1,@7324 188,0,0 7324:D3,616|3b650c7305ff552ccd0953ff30ff7004ff7008ff70108b4014bf010000008b742404f7c60100000075288b4e0489fa83c202710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd057e82402000089c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70701000000578b7c243c8b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241889770c8b7424148977088b34248977048d642404c7070b000000578b44240cbb680d68b1e885b7efff8b5c24348b7c24308b7424388b54242c8b4c2428575652ff74240cff74241451e87002000089c68d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424088937578b7c241883ff030f85810000008b5424148b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24088938ff128b7c24288b570c8b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b74240c89378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff12eb2f8b7c24288b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24088938ff128b3c2489f88b742404893e89c08d642410c21c00f4|@15205,1,@2512|26,0,0 57,0,@9455 84,1,@7325 124,0,0 137,0,0 176,0,2 209,0,0 308,0,5 318,0,@15199 323,1,@5475 360,1,@7328 499,0,0 7325:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2504|58,0,6 110,0,0 7326:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70038b03bb1c3f4000000|@15201,1,@2506|43,0,@7327 7327:D3,124|3b650c7305ff552ccd058b780c8b72048b760c8b168d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d98d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37306b803000000c3b801000000c383ff017d06b803000000c3b801000000c3f4000000|@15200,1,@2505|64,0,0 71,0,1 78,0,-1 92,0,1 98,0,0 109,0,1 115,0,0 7328:D3,768|3b650c7305ff552ccd0953a8010f85dd0200008b30ff7004ff368b7e04ff7608ff760c6a016a01f7c7010000000f858e000000ff37ba980668b18b7c24388b7424348b4c24308b5d008d5be83b5d087305ff5528cdc6895d00c743fc050000008b44241c894310894b0c897308897b04c703dcb33bb18b7c2434578b442404e848c1ffff89c68d6424048b5424288b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000893c24c744240401000000eb0f8b7c2428893c24c744240403000000ff3424ff7424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742418897704c70701000000578b7c243c8b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49f43b4d087305ff5528cd80894d00c741fc020000008979045f8939beffffffff8b7d008d7ff83b7d087305ff5528cd42897d00c747fc010000408937ba2c0268b18b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208897a04c702050000008b7c242c8b75008d76f43b75087305ff5528cd86897500c746fc02000000897e045f893e8b7d008d7fe03b7d087305ff5528cd46897d00c747fc07000000c7471801000000c7471401000000894f10598d642408894f0c8957088977048b34248937578b5c242cff74240c8b442408e8f54ffcff8b5c24288b7c242c57ff7424106a038b442410e8f90100008b54241c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff128b3c248b742408893e8b7c24308b74242c8b5424288b4c24248b5c24208b44241c5756525153508b4424288b5c242ce839fdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424148938c218008d642404b801000000c21800f4000000|@10030,1,@2511|54,0,@15147 114,0,@7329 128,1,@7273 176,0,2 187,0,0 204,0,1 248,0,0 261,0,0 300,0,2 333,0,0 372,0,-1 405,0,@15112 471,0,2 540,0,0 547,0,0 587,1,@6891 611,1,@7332 757,0,0 7329:D3,176|3b650c7305ff552ccd0d508b7a1089fe8b4f208b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b4204894708894f04c707a0b43bb18b76348b45008d40f43b45087305ff5528cdcc894500c740fc0200000089700489388b7d008d7fec3b7d087305ff5528cd0d897d00c747fc04000000895f0c8b720c8977088b7208897704c707e8b43bb1ff742408578b5c2408e8a1c8ffff89c78b3f5e8d642404893eb801000000c20400f400|@15197,1,@2509|56,0,@7330 137,0,@7331 151,1,@7283 167,0,0 7330:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2507| 7331:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9f7b6fffff40000|@15154,1,@2508|26,0,1 37,1,@7270 7332:D3,836|3b650c7305ff552ccd0950538b7c240481ff984866b17502eb2e8b7c24048b3f8d3c7d0100000083ff097521bf984866b18b7424048d76048d7f0433c983c1043bc9f3a67402eb05e9500100008b7c240481ff884566b17502eb2e8b7c24048b3f8d3c7d0100000083ff0b7521bf884566b18b7424048d76048d7f04b9050000003bc9f3a67402eb05e90f0100008b7c240481ff705466b17502eb2e8b7c24048b3f8d3c7d0100000083ff077521bf705466b18b7424048d76048d7f04b9030000003bc9f3a67402eb05e9ce0000008b7c240481ff505066b17502eb2e8b7c24048b3f8d3c7d0100000083ff057521bf505066b18b7424048d76048d7f0433c983c1023bc9f3a67402eb05e98d0000008b7c240481ffd86566b17502eb2e8b7c24048b3f8d3c7d0100000083ff07751ebfd86566b18b7424048d76048d7f04b9030000003bc9f3a67402eb02eb4f8b7c240c83ff030f85db0100008b7c240481ff54e867b17502eb348b7c24048b3f8d3c7d0100000083ff050f85b1010000bf54e867b18b7424048d76048d7f0433c983c1023bc9f3a60f858d0100008b7c24048b3f8d1c7d0100000083fb01750abf2c0e68b1e98c00000089df83c73289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf2c0e68b1b9330000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a1dd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab9500e68b1e98f00000089de83c61889f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878700000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be500e68b1b9190000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b4424145e8b54240cbb03000000894c24088954240c8974241083c404e9d2b3ffff8d642408b8780566b18b5d04ff238d642408b8780566b18b5d04ff238d642408eb048d642408eb048d642408b801000000c20c00f400|@15204,1,@2510|18,0,@10260 45,0,@10260 83,0,@10222 110,0,@10222 125,0,2 148,0,@10432 175,0,@10432 190,0,1 213,0,@10367 240,0,@10367 278,0,@10712 305,0,@10712 320,0,1 353,0,@14869 384,0,@14869 432,0,@15202 452,0,4 473,0,16777215 531,0,0 540,0,@15202 545,0,25 596,0,@15203 616,0,4 637,0,16777215 695,0,0 721,0,@15203 726,0,12 758,0,1 778,1,@7270 787,0,@9465 801,0,@9465 827,0,0 7333:D3,488|3b650c7305ff552ccd0d525053bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424088b5208895704c7077cba3bb1893e6a016a01b8ec5c68b189e3e8ba610100ff3424ff7424088b7d008d7fe83b7d087303ff5528897d00c747fc050000008b34248977108b74241089770c8b7424188b76048977088b742404897704c707401d3db157ff742418f604240175258b3c248b0789ffff7704ff7424108b5c2410e87d6601005e8934243b650c7303ff552cebd58d642404ff742418f60424010f85ec0000008b34248b3e89f6ff7604ff378b3c24ff770c8b5424108b0424ff1289c783ff0375098d642408e99c0000008b5424188b45008d40f43b45087305ff5528cd04894500c740fc02000000c74004d03366b18b3c2489388d642404ff128b3c248b7f0c8d6424048b770489f28b0e83f90375248b760c83fe037507be03000000eb05be0100000083fe03750b8b7a04c70703000000eb3289d68b0a83f90175408b52088b1283fa037507ba03000000eb05ba0100000083fa03751f89f78b7f088b7f04c707030000005e8934243b650c7303ff552ce91effffff8d642428eb048d642428b8c85e68b18b5d04ff238d642424b801000000c3f40000|@16443,1,@2618|14,0,0 84,0,@7334 95,0,@16424 102,1,@7431 169,0,@7435 203,1,@7437 315,0,@10005 361,0,1 368,0,0 382,0,1 408,0,1 415,0,0 434,0,1 466,0,@16439 480,0,0 7334:D3,1080|3b650c7305ff552ccd058b780489f983ff037d06b8b4ab66b1c38b3089f78b3683fe010f850a0200008b770483e902710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd42897d00c747fc02000000894f04893757bf7c02c0b08b17b8000f68b1ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707205c68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707905c68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16423,1,@2609|21,0,@11331 50,0,@9455 92,0,@4674 99,0,@15207 174,0,@9771 181,0,1 189,0,@9772 196,0,1 204,0,@9773 211,0,1 218,0,0 263,0,@11374 300,0,@10625 335,0,@11377 371,0,0 378,0,1 385,0,3 391,0,0 430,0,0 467,0,@10448 502,0,@16412 538,0,0 545,0,0 552,0,1 558,0,0 571,0,@11331 585,0,@9455 690,0,@9771 697,0,1 705,0,@9772 712,0,1 720,0,@9773 727,0,1 734,0,0 779,0,@11374 816,0,@10625 851,0,@11377 887,0,0 894,0,1 901,0,3 907,0,0 946,0,0 983,0,@10448 1018,0,@16419 1054,0,0 1061,0,0 1068,0,1 1074,0,0 7335:D3,20|3b650c7305ff552ccd01bfec03c0b08b17ff22f4|@15218,1,@2608|11,0,@4720 7336:D3,724|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e9890100008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f088b17ff1289c7578b7c24088b77048b54240483ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c707d8c13bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707400f68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@15218,1,@2515|26,0,@11331 44,0,@9455 68,0,@10443 95,0,@9455 170,0,@9455 212,0,@4674 256,0,@7337 289,0,1 296,0,3 305,0,0 353,0,@11375 390,0,@10448 425,0,@11428 501,0,@11377 537,0,0 544,0,0 551,0,1 557,0,0 590,0,0 627,0,@10448 662,0,@15211 698,0,0 705,0,0 712,0,1 718,0,0 7337:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15210,1,@2514| 7338:D3,2336|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9d40700008b7c24048b7f0889f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f108b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c10600008b7c24088b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f0c8b17ff1289c7578b7c240889fa83ff057d0abe2cb566b1e9b10500008b7c240c8b771889d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c70734cb3bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c241089fa83ff077d0abf2cb566b1e93d0400008b7c24148b771089d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7608897704c707c0d43bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241889fe83ff097d0abe2cb566b1e9c90200008b7c241c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c241c89fa83ff0b7d0abf2cb566b1e9bc0100008b7c24208b771489d283ea02710e8d642428b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b8d01068b1ff1289c28b0424ff1289c7578b7c24288b7f0c8b74242483ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c242c8b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f41168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707101268b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301268b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706501268b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707741268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706901268b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ac1268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@15210,1,@2531|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 162,0,@11421 190,0,@9455 256,0,@11421 284,0,@9455 326,0,@4604 370,0,@7339 403,0,1 410,0,2 419,0,0 447,0,@11421 475,0,@9455 517,0,@4674 561,0,@7347 594,0,1 601,0,3 610,0,0 638,0,@11421 665,0,@9455 706,0,@4602 729,0,@11421 757,0,@9455 799,0,@4604 806,0,@15231 843,0,@9455 925,0,@11424 962,0,@10448 997,0,@15250 1032,0,@10448 1067,0,@11428 1140,0,@10448 1175,0,@15252 1213,0,@10448 1248,0,@11428 1321,0,@10448 1356,0,@14926 1391,0,@10448 1426,0,@11428 1499,0,@10448 1534,0,@15254 1572,0,@10448 1607,0,@11428 1680,0,@10448 1715,0,@15256 1753,0,@10448 1788,0,@11428 1861,0,@10448 1896,0,@15258 1931,0,@10448 1966,0,@11428 2039,0,@10448 2074,0,@15260 2112,0,@11431 2148,0,0 2155,0,0 2162,0,1 2168,0,0 2201,0,0 2238,0,@10448 2273,0,@15262 2309,0,0 2316,0,0 2323,0,1 2329,0,0 7339:D3,116|3b650c7305ff552ccd0589d650bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c70710d43bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c258ff22f400|@15229,1,@2523|14,0,@4724 54,0,@7345 87,0,1 94,0,3 103,0,0 7340:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008978088b7a04897804c70008cc3bb1c3f400|@9475,1,@2520|49,0,@7341 7341:D3,76|3b650c7305ff552ccd058b70048b7a088b7f048b008b5d008d5bf43b5d087305ff5528cdc5895d00c743fc02000000897b04c70368cc3bb18b520452ff74240489742408e95f000000f40000|@11673,1,@2519|52,0,@7342 69,1,@7343 7342:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@15221,1,@2516| 7343:D3,1252|3b650c7305ff552ccd0950538b7c2404ff378b7c241483ff017f0c8d64240cb8240566b1c208008b7d1c8b7f08f7c701000000755a8b178b77048b128b1a89d98b4424103bd8753989cf8b7424103bfe75218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d64240cb8483366b18b5d04ff2389f73b650c7305ff552ccd80eb9ebf01000000f7c70100000075048b3feb05bf01000000578b3c24f7c70100000075208b178b77043b54240c7507bf03000000eb1389f73b650c7305ff552ccd80ebd8bf0100000083ff03750c8d642410b8240566b1c20800ff7504bfb0cc3bb181c72c010000578965048b4d008d49f43b4d087303ff5528894d00c741fc020000008b7c24088979048b7c241489398b7d1cff77088b3c24e9290100008b650483c4045f897d04508b7d1c8b4f0889cff7c701000000755b8b178b77048b1a8b1b8b4424183bd8753c8b7424188b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c010000008b4c2404894f08c74704640f66b18937893ae98400000089f73b650c7305ff552ccd82eb9d8b751c8b5424188b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c010000008b5c2404895f08c74704640f66b189178b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917897e088b3c248b3f8b34248b76045a8b52088b45008d40ec3b45087305ff5528cdc4894500c740fc04000000c7400c101068b189500889700489388b5d04ff23f7c701000000755b8b178b77048b1a8b1b8b4424203bd8753c8d6424048b74241c8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c01000000894f08c74704640f66b18937893ae98100000089f73b650c7305ff552ccd82eb9d8b751c8b5424208b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c01000000894f08c74704640f66b189178b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f048917897e088b5c242083eb02710ab8f80466b18b5d04ff238b5424108b44240cff12e8ab01000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201a66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706601068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b7d1c8b4f0889cff7c701000000755b8b178b77048b1a8b1b8b4424203bd8753c8b7424208b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c010000008b4c240c894f08c74704640f66b18937893ae98400000089f73b650c7305ff552ccd82eb9d8b751c8b5424208b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c010000008b5c240c895f08c74704640f66b189178b55008d52f83b55087305ff5528cdc2895500c742fc01000040893a8b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917897e085883c4045f897d0483c410c20800f4000000|@15227,1,@2518|32,0,@9458 120,0,@9999 144,0,0 161,0,0 189,0,1 210,0,0 224,0,@9458 235,0,@7343 377,0,0 391,0,@9574 454,0,0 468,0,@9574 580,0,@15222 659,0,0 669,0,@9574 732,0,0 742,0,@9574 821,0,@9455 841,1,@7344 876,0,0 913,0,@9794 948,0,@15225 984,0,0 991,0,0 998,0,3 1004,0,0 1075,0,0 1089,0,@9574 1152,0,0 1166,0,@9574 7344:D3,596|3b650c7305ff552ccd018b3883ff010f853c0200008b7010f7c6010000000f85ae0100008b3e8b760483fe017501c38b3783fe070f85190100008b570481fa6c1066b17502eb288b3a89fb8d3c7d0100000083ff037519bf6c1066b18d72048d7f04b9010000003bc9f3a67402eb01c381faec1166b17502eb2889df89fb8d3c7d0100000083ff037519bfec1166b18d72048d7f04b9010000003bc9f3a67402eb01c381fa080e66b17502eb2689df8d3c7d0100000083ff037519bf080e66b18d72048d7f04b9010000003bc9f3a67402eb01c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c38b75008d76f43b75087305ff5528cd01897500c746fc02000000c74604541a66b189068b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c1a66b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400407000000c70001000000c3c3f400|@15224,1,@2517|63,0,@9596 88,0,@9596 99,0,0 114,0,@9628 139,0,@9628 150,0,0 165,0,@9545 188,0,@9545 199,0,0 241,0,@9798 278,0,@9800 314,0,0 321,0,1 328,0,3 334,0,0 368,0,@9798 405,0,@9800 441,0,0 448,0,1 455,0,3 461,0,0 495,0,@9798 532,0,@9800 568,0,0 575,0,1 582,0,3 588,0,0 7345:D3,116|3b650c7305ff552ccd0589d650bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c70798d43bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c258ff22f400|@10454,1,@2522|14,0,@4674 54,0,@7346 87,0,1 94,0,3 103,0,0 7346:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15228,1,@2521| 7347:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@2524| 7348:D3,880|3b650c7305ff552ccd01508b3c248b770489f283fe017d0e8d642404be2cb566b1e9ea02000089ff8b378b760483ea02710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8ec1068b1ff1289c28b0424ff1289c7578b7c24088b770489f283fe037d0abf2cb566b1e9cb01000089ff8b378b3683ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b81c1168b1ff1289c28b0424ff1289c7578b7c24108b378b760889ff8b570483ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8541168b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068c1168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b01168b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d01168b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@2530|29,0,@11421 55,0,@9455 97,0,@4724 104,0,@15233 135,0,@11421 160,0,@9455 202,0,@4724 209,0,@15236 249,0,@9455 291,0,@4724 298,0,@15240 346,0,@11424 383,0,@10448 418,0,@15244 453,0,@10448 488,0,@11428 561,0,@10448 596,0,@15246 634,0,@10448 669,0,@11428 742,0,@10448 777,0,@15248 815,0,@11431 851,0,0 858,0,0 865,0,1 871,0,0 7349:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@2525|11,0,@4672 7350:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8381168b1ff1289c258ff22f400|@10454,1,@2527|12,0,@4674 19,0,@15238 7351:D3,1384|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be2cb566b1e9e204000089f68b3e8b7f0489d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424048b7e0489fa83ff037d0abf2cb566b1e9ce03000089f68b3e8b7f0c89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424088b7e0489fa83ff057d0abe2cb566b1e9bd02000089f68b3e8b3f89d683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74240c8b7e0489fa83ff077d0abf2cb566b1e9ad01000089f68b3e8b7f0889d683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424108b3e8b7f1089f68b760483ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@2526|29,0,@11421 57,0,@9455 98,0,@4670 124,0,@11421 152,0,@9455 193,0,@4670 219,0,@11421 246,0,@9455 287,0,@4602 313,0,@11421 341,0,@9455 382,0,@4670 417,0,@9455 458,0,@4670 497,0,@11424 534,0,@10448 569,0,@13969 604,0,@10448 639,0,@11428 712,0,@10448 747,0,@13971 782,0,@10448 817,0,@11428 890,0,@10448 925,0,@13973 960,0,@10448 995,0,@11428 1068,0,@10448 1103,0,@13975 1138,0,@10448 1173,0,@11428 1246,0,@10448 1281,0,@13977 1319,0,@11431 1355,0,0 1362,0,0 1369,0,1 1375,0,0 7352:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8701168b1ff1289c258ff22f400|@10454,1,@2529|12,0,@4674 19,0,@15242 7353:D3,1736|3b650c7305ff552ccd01508b3c248b570489d683fa017d0e8d642404be185566b1e94306000089ff8b17ff3289f783ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2528|29,0,@10443 57,0,@9455 81,0,@11421 109,0,@9455 150,0,@4670 173,0,@11421 201,0,@9455 242,0,@4670 265,0,@11421 292,0,@9455 333,0,@4602 356,0,@11421 384,0,@9455 425,0,@4670 457,0,@9455 498,0,@4670 537,0,@11424 574,0,@10448 609,0,@13969 644,0,@10448 679,0,@11428 752,0,@10448 787,0,@13971 822,0,@10448 857,0,@11428 930,0,@10448 965,0,@13973 1000,0,@10448 1035,0,@11428 1108,0,@10448 1143,0,@13975 1178,0,@10448 1213,0,@11428 1286,0,@10448 1321,0,@13977 1359,0,@11431 1395,0,0 1402,0,0 1409,0,1 1415,0,0 1444,0,@9455 1485,0,@4602 1524,0,@11375 1561,0,@10448 1596,0,@11428 1672,0,@11377 1708,0,0 1715,0,0 1722,0,1 1728,0,0 7354:D3,4600|3b650c7305ff552ccd05528b780489fe83ff037d0a8d642404b8b4ab66b1c38b3889fa8b3f83ff01750a8d642404b8341368b1c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa03750a8d642404b8a41368b1c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe050f85d802000089fe8b7e04ff760883ea0252710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9a701000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c7578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240889388b7c240c8b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707181468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706341468b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707501468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff070f853b030000ff72048b7a0883ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e90c02000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f088b17ff1289c7578b74240483ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c70760f73bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e01468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706001568b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa090f850f0200008b760489fa83ea02710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424048b760c897704c707acf93bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b01568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d01568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe0b0f85b90500008b7704ff7708ff770cff771083ea0252710e8d642414b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642414be2cb566b1e98404000089d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c707d4f93bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e91703000089ff83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24188b7f0c8b17ff1289c7578b7c240c89fe83ff057d0abe2cb566b1e90a02000089f683ee02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424208b7610897704c707fcf93bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241483ef02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24208938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301268b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707441668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706601668b183c4188b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c1668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c3ff77048b7f0883ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e90a02000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c7578b74240483ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c70740fb3bb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706181768b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707381768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@15228,1,@2538|26,0,@11331 47,0,@15270 64,0,@11331 83,0,@15277 100,0,@11331 137,0,@9455 161,0,@11421 182,0,@9455 250,0,@9455 336,0,@11424 373,0,@10448 408,0,@15284 443,0,@10448 478,0,@11428 551,0,@10448 586,0,@15286 624,0,@11431 660,0,0 667,0,0 674,0,1 680,0,0 713,0,0 750,0,@10448 785,0,@15288 821,0,0 828,0,0 835,0,1 841,0,0 858,0,@11331 893,0,@9455 917,0,@11421 938,0,@9455 1006,0,@9455 1052,0,@4674 1096,0,@7355 1129,0,2 1136,0,2 1145,0,0 1193,0,@11424 1230,0,@10448 1265,0,@15297 1300,0,@10448 1335,0,@11428 1408,0,@10448 1443,0,@15299 1481,0,@11431 1517,0,0 1524,0,0 1531,0,1 1537,0,0 1570,0,0 1607,0,@10448 1642,0,@15301 1678,0,0 1685,0,0 1692,0,1 1698,0,0 1715,0,@11331 1748,0,@9455 1790,0,@4674 1834,0,@7356 1867,0,1 1874,0,3 1883,0,0 1931,0,@11424 1968,0,@10448 2003,0,@15309 2038,0,@11431 2074,0,0 2081,0,0 2088,0,1 2094,0,0 2127,0,0 2164,0,@10448 2199,0,@15311 2235,0,0 2242,0,0 2249,0,1 2255,0,0 2272,0,@11331 2313,0,@9455 2337,0,@11421 2358,0,@9455 2400,0,@4674 2444,0,@7357 2477,0,1 2484,0,3 2493,0,0 2521,0,@11421 2542,0,@9455 2612,0,@11421 2633,0,@9455 2679,0,@4674 2723,0,@7358 2756,0,1 2763,0,3 2772,0,0 2802,0,@9455 2847,0,@4602 2886,0,@11424 2923,0,@10448 2958,0,@14926 2993,0,@10448 3028,0,@11428 3101,0,@10448 3136,0,@15254 3174,0,@10448 3209,0,@11428 3282,0,@10448 3317,0,@15318 3352,0,@10448 3387,0,@11428 3460,0,@10448 3495,0,@15320 3533,0,@11431 3569,0,0 3576,0,0 3583,0,1 3589,0,0 3622,0,0 3659,0,@10448 3694,0,@15322 3730,0,0 3737,0,0 3744,0,1 3750,0,0 3767,0,@11331 3789,0,@9455 3813,0,@11421 3834,0,@9455 3875,0,@4728 3900,0,@9455 3946,0,@4724 3990,0,@7360 4023,0,1 4030,0,3 4039,0,0 4087,0,@11424 4124,0,@10448 4159,0,@15330 4194,0,@10448 4229,0,@11428 4302,0,@10448 4337,0,@15332 4375,0,@11431 4411,0,0 4418,0,0 4425,0,1 4431,0,0 4464,0,0 4501,0,@10448 4536,0,@15334 4572,0,0 4579,0,0 4586,0,1 4592,0,0 7355:D3,568|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be2cb566b1e9b101000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c41468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@2532|30,0,@11421 57,0,@9455 98,0,@4602 133,0,@9455 215,0,@11424 252,0,@10448 287,0,@15295 322,0,@10448 357,0,@11428 430,0,@10448 465,0,@14926 503,0,@11431 539,0,0 546,0,0 553,0,1 559,0,0 7356:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15308,1,@2533| 7357:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15228,1,@2534| 7358:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@2535| 7359:D3,264|3b650c7305ff552ccd018b18f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489d8eb0ab8b02f66b1e8ae65eaffba803066b1bb05000000e8df65eaff89c78b378d0c750100000083f9017507bfcc3f67b1eb7a89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff01777889d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420430c6420577c64206788d77048d7a07d1e9f3a48062ffbf89d78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3b8780566b18b5d04ff23f4000000|@9475,1,@2536|45,0,@9958 50,1,@4895 55,0,@9967 60,0,2 65,1,@4896 86,0,@12851 103,0,4 124,0,16777215 178,0,0 245,0,3 251,0,@9465 7360:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15228,1,@2537| 7361:D3,1256|3b650c7305ff552ccd0589d68b780489fa83ff037d06b8b4ab66b1c38b0889cf8b0983f9010f85530200008b7704ff770883ea0252710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be185566b1e92401000089d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b8b41768b1ff1289c28b0424ff1289c7578b7c240883ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf6c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d01768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d183fa037d06b8b4ab66b1c38b570483e902710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c7078c003cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707601868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@15351,1,@2541|23,0,@11331 60,0,@9455 84,0,@10443 105,0,@9455 147,0,@4674 154,0,@15342 184,0,@9455 229,0,@4672 268,0,@11375 305,0,@10448 340,0,@11428 416,0,@11377 452,0,0 459,0,0 466,0,1 472,0,0 505,0,0 542,0,@10448 577,0,@15344 613,0,0 620,0,0 627,0,1 633,0,0 646,0,@11331 660,0,@9455 702,0,@4724 742,0,@7363 775,0,1 782,0,3 791,0,0 866,0,@9771 873,0,1 881,0,@9772 888,0,1 896,0,@9773 903,0,1 910,0,0 955,0,@11374 992,0,@10625 1027,0,@11377 1063,0,0 1070,0,1 1077,0,3 1083,0,0 1122,0,0 1159,0,@10448 1194,0,@15352 1230,0,0 1237,0,0 1244,0,1 1250,0,0 7362:D3,20|3b650c7305ff552ccd01bf3c00c0b08b17ff22f4|@9981,1,@2539|11,0,@4602 7363:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15351,1,@2540| 7364:D3,5228|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3089f28b3683fe010f8502060000ff720483ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc1868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8b4ab66b1c389d78b1283fa030f8502060000ff770483ee0256710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707501968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe8b3f83ff050f85f90100008b7e0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c01968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d06b8b4ab66b1c3ff760483ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707341a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@15230,1,@2542|21,0,@11331 55,0,@9455 79,0,@11421 107,0,@9455 148,0,@4670 171,0,@11421 199,0,@9455 240,0,@4670 263,0,@11421 290,0,@9455 331,0,@4602 354,0,@11421 382,0,@9455 423,0,@4670 455,0,@9455 496,0,@4670 535,0,@11424 572,0,@10448 607,0,@13969 642,0,@10448 677,0,@11428 750,0,@10448 785,0,@13971 820,0,@10448 855,0,@11428 928,0,@10448 963,0,@13973 998,0,@10448 1033,0,@11428 1106,0,@10448 1141,0,@13975 1176,0,@10448 1211,0,@11428 1284,0,@10448 1319,0,@13977 1357,0,@11431 1393,0,0 1400,0,0 1407,0,1 1413,0,0 1446,0,0 1483,0,@10448 1518,0,@15360 1554,0,0 1561,0,0 1568,0,1 1574,0,0 1587,0,@11331 1619,0,@9455 1643,0,@11421 1671,0,@9455 1712,0,@4670 1735,0,@11421 1763,0,@9455 1804,0,@4670 1827,0,@11421 1854,0,@9455 1895,0,@4602 1918,0,@11421 1946,0,@9455 1987,0,@4670 2019,0,@9455 2060,0,@4670 2099,0,@11424 2136,0,@10448 2171,0,@13969 2206,0,@10448 2241,0,@11428 2314,0,@10448 2349,0,@13971 2384,0,@10448 2419,0,@11428 2492,0,@10448 2527,0,@13973 2562,0,@10448 2597,0,@11428 2670,0,@10448 2705,0,@13975 2740,0,@10448 2775,0,@11428 2848,0,@10448 2883,0,@13977 2921,0,@11431 2957,0,0 2964,0,0 2971,0,1 2977,0,0 3010,0,0 3047,0,@10448 3082,0,@15367 3118,0,0 3125,0,0 3132,0,1 3138,0,0 3151,0,@11331 3178,0,@9455 3219,0,@4670 3285,0,@9771 3292,0,1 3300,0,@9772 3307,0,1 3315,0,@9773 3322,0,1 3329,0,0 3374,0,@11374 3411,0,@10625 3446,0,@11377 3482,0,0 3489,0,1 3496,0,3 3502,0,0 3541,0,0 3578,0,@10448 3613,0,@15374 3649,0,0 3656,0,0 3663,0,1 3669,0,0 3682,0,@11331 3701,0,@9455 3725,0,@11421 3753,0,@9455 3794,0,@4670 3817,0,@11421 3845,0,@9455 3886,0,@4670 3909,0,@11421 3936,0,@9455 3977,0,@4602 4000,0,@11421 4028,0,@9455 4069,0,@4670 4101,0,@9455 4142,0,@4670 4181,0,@11424 4218,0,@10448 4253,0,@13969 4288,0,@10448 4323,0,@11428 4396,0,@10448 4431,0,@13971 4466,0,@10448 4501,0,@11428 4574,0,@10448 4609,0,@13973 4644,0,@10448 4679,0,@11428 4752,0,@10448 4787,0,@13975 4822,0,@10448 4857,0,@11428 4930,0,@10448 4965,0,@13977 5003,0,@11431 5039,0,0 5046,0,0 5053,0,1 5059,0,0 5092,0,0 5129,0,@10448 5164,0,@15381 5200,0,0 5207,0,0 5214,0,1 5220,0,0 7365:D3,832|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b1089d7f6c2010f85d302000089fa8b3aff720483ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be2cb566b1e9a301000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b01a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d01a68b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f01a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe83ff017506b8641b68b1c389d783fa037d06b8b4ab66b1c383fe037506b8d81b68b1c383ff037d06b8b4ab66b1c3b84c1c68b1c3f40000|@15421,1,@2543|21,0,@11331 57,0,@9455 81,0,@11421 102,0,@9455 143,0,@4672 168,0,@9455 213,0,@4670 252,0,@11424 289,0,@10448 324,0,@15389 359,0,@10448 394,0,@11428 467,0,@10448 502,0,@15391 540,0,@11431 576,0,0 583,0,0 590,0,1 596,0,0 629,0,0 666,0,@10448 701,0,@15393 737,0,0 744,0,0 751,0,1 757,0,0 770,0,@11331 783,0,@15400 796,0,@11331 807,0,@15407 818,0,@11331 824,0,@15414 7366:D3,3168|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c38b3089f28b3683fe010f85fd0100008d6424048b720483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e41c68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa030f85fd0100008d6424048b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf4c04c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707344f68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff050f85f60200008d64240489f78b7704ff770883ea0252710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be2cb566b1e9c101000089d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8a44f68b1ff1289c28b0424ff1289c7578b74240883ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf0c04c0b08b17b8c04f68b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b45168b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1f68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d05168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe070f85020200008b720483ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707305268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c38b7a04ff720883ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9a501000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240889388b7c240c8b7f088b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643c67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1f68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a45268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16270,1,@2594|26,0,@11331 59,0,@9455 100,0,@4670 166,0,@9771 173,0,1 181,0,@9772 188,0,1 196,0,@9773 203,0,1 210,0,0 255,0,@11374 292,0,@10625 327,0,@11377 363,0,0 370,0,1 377,0,3 383,0,0 422,0,0 459,0,@10448 494,0,@15423 530,0,0 537,0,0 544,0,1 550,0,0 567,0,@11331 598,0,@9455 639,0,@4732 705,0,@9771 712,0,1 720,0,@9772 727,0,1 735,0,@9773 742,0,1 749,0,0 794,0,@11374 831,0,@10625 866,0,@11377 902,0,0 909,0,1 916,0,3 922,0,0 961,0,0 998,0,@10448 1033,0,@16205 1069,0,0 1076,0,0 1083,0,1 1089,0,0 1106,0,@11331 1147,0,@9455 1171,0,@11421 1192,0,@9455 1234,0,@4724 1241,0,@16212 1271,0,@9455 1317,0,@4724 1324,0,@16214 1372,0,@11424 1409,0,@10448 1444,0,@16248 1479,0,@10448 1514,0,@11428 1587,0,@10448 1622,0,@15461 1660,0,@11431 1696,0,0 1703,0,0 1710,0,1 1716,0,0 1749,0,0 1786,0,@10448 1821,0,@16250 1857,0,0 1864,0,0 1871,0,1 1877,0,0 1894,0,@11331 1925,0,@9455 2037,0,@9771 2044,0,1 2052,0,@9772 2059,0,1 2067,0,@9773 2074,0,1 2081,0,0 2126,0,@11374 2163,0,@10625 2198,0,@11377 2234,0,0 2241,0,1 2248,0,3 2254,0,0 2293,0,0 2330,0,@10448 2365,0,@16256 2401,0,0 2408,0,0 2415,0,1 2421,0,0 2438,0,@11331 2460,0,@9455 2484,0,@11421 2505,0,@9455 2546,0,@4670 2571,0,@9455 2657,0,@11424 2694,0,@10448 2729,0,@12798 2764,0,@10448 2799,0,@11428 2872,0,@10448 2907,0,@15461 2945,0,@11431 2981,0,0 2988,0,0 2995,0,1 3001,0,0 3034,0,0 3071,0,@10448 3106,0,@16263 3142,0,0 3149,0,0 3156,0,1 3162,0,0 7367:D3,24520|3b650c7305ff552ccd05528b780489fe83ff037d0a8d642404b8b4ab66b1c38b1089d78b1283fa010f85e803000089fa8b7a04ff7208ff720c83ee0256710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9b402000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a801000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706741d68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707941d68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b41d68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d01d68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff030f850c060000ff760483ea0252710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9e00400008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9ce0300008b7c24088b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f048b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9be0200008b7c240c8b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f048b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9ae0100008b7c24108b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24148b7f088b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706241e68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707441e68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706601e68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707801e68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1e68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b81e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe050f853f030000ff72048b720883ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e91002000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b74240c8b4e0c894f0889f68b7604897704c707d8843cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707782068b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706942068b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b42068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa070f85e603000089fa8b7a04ff7208ff720c83ee0256710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9b202000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf6404c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706441e68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707801e68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1e68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bc2f68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff090f85c40b0000ff7604ff7608ff760cff761083ea0252710e8d642418b8f80466b18b5d04ff238b342489f783fe017d0e8d642418be2cb566b1e98f0a000089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9220300008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c7578b7c240489fa83ff037d0abe2cb566b1e9100200008b7c24108b770489d283ea02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424208b7604897704c70724a53cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24188b7f088b74240c83ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728dc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706483c67b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643c67b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e91906000089ff83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bf8c04c0b08b17ff1289c7578b74240889f783fe057d0abe2cb566b1e90e05000089ff83ef02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241489388b7c241c8b7f048b17ff1289c7578b7c240c83ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9220300008b7c24148b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24248b7f048b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e9100200008b7c24188b770489d283ea02710e8d64242cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74242c8b7604897704c70754a73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24208b7f088b74240c83ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70628dc66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707483c67b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706643c67b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f03168b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706103268b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c3268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706483268b183c4188b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707683268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe0b0f85140300008b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be185566b1e9e201000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf185566b1e91c01000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e03268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa0d0f855d0200008d64240489fa8b7a04ff720883ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be185566b1e92801000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfa402c0b08b17ff1289c7578b74240483ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf7c02c0b08b17b84c3368b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707943368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff0f0f854704000089f78b7704ff7708ff770c83ea0252710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642410be2cb566b1e91303000089d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c707cca73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24148b7f048b17ff1289c7578b7c240c83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf5c04c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706043468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707243468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706443468b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe110f85020200008b720483ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b3c248b7f108d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d03468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa13750a8d642404b8403568b1c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff150f85e4030000ff7604ff76088b7e0c83ea0252710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9b202000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a801000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706943568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b43568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d03568b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f43568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe170f85e20300008b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9b002000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a401000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf6c02c0b08b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70628dc66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706643c67b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707843668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa190f855f0a0000ff770483ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9330900008b7c24048b771089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b760c897704c70784a93cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e9bf0700008b7c240c8b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f048b17ff1289c7578b7c240c89fa83ff057d0abe2cb566b1e9b00600008b7c24108b770c89d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7610897704c707d0ab3cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241489fe83ff077d0abf2cb566b1e93c0500008b7c24188b7f1489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c241c8b7f148b17ff1289c7578b7c241889fe83ff097d0abe2cb566b1e92c0400008b7c241c8b7f1889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c89fe83ff0b7d0abf2cb566b1e91e0300008b7c24208b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c242089fa83ff0d7d0abe2cb566b1e9100200008b7c24248b770889d283ea02710e8d64242cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74242c8b760c897704c707f8ab3cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c242c8b7f1c8b74242883ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707043468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7060c3768b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706283768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707483768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706683768b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707883768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a43768b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff1b0f853e060000ff7604ff760883ea0252710e8d642410b8f80466b18b5d04ff238b342489f783fe017d0e8d642410be2cb566b1e90f05000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9220300008b7c24088b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f048b17ff1289c7578b7c240489fa83ff037d0abe2cb566b1e9100200008b7c240c8b770489d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7604897704c70720ac3cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24148b7f088b74240c83ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728dc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706483c67b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643c67b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240483ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf9c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c3268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b03c68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d03c68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe1d0f85660200008b720489fa83ea02710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424048b7604897704c707a0b03cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c68d6424088b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707483d68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa1f0f85ab0200008b5704ff770883ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e97c01000089f683ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7618897704c70758b23cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d03d68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff210f85020200008b7e0483ea02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc0200000089500489388b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707403e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe230f85e4030000ff7204ff72088b720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9b202000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bfa404c0b08b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c3f68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707583f68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70698b566b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707743f68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa250f854e070000ff7704ff7708ff770c83ee0256710e8d642414b8f80466b18b5d04ff238b342489f783fe017d0e8d642414be2cb566b1e91c06000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9220300008b7c24088b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24148b7f048b17ff1289c7578b7c240489fa83ff037d0abe2cb566b1e9100200008b7c240c8b770489d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7604897704c70764b53cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24148b7f088b74240c83ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728dc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706483c67b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643c67b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf9c04c0b08b17ff1289c7578b7c240883ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24188b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c3268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b03c68b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e83f68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff270f85e2030000ff7604ff76088b7e0c83ea0252710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9b002000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a601000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf2c04c0b08b17ff1289c7578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706602568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707604068b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7067c4068b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707984068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe290f85350300008b7204ff720883ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e90602000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c7078cb53cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf6c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707643668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706084168b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707244168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c38b7a04ff720883ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9a501000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c7578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bfac04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707441e68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069c1e68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f44668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@15718,1,@2571|26,0,@11331 68,0,@9455 92,0,@11421 113,0,@9455 179,0,@11421 200,0,@9455 272,0,@9455 358,0,@11424 395,0,@10448 430,0,@15431 465,0,@10448 500,0,@11428 573,0,@10448 608,0,@15433 643,0,@10448 678,0,@11428 751,0,@10448 786,0,@15435 824,0,@11431 860,0,0 867,0,0 874,0,1 880,0,0 913,0,0 950,0,@10448 985,0,@15437 1021,0,0 1028,0,0 1035,0,1 1041,0,0 1058,0,@11331 1090,0,@9455 1114,0,@11421 1141,0,@9455 1207,0,@11421 1235,0,@9455 1301,0,@11421 1329,0,@9455 1395,0,@11421 1423,0,@9455 1498,0,@9455 1580,0,@11424 1617,0,@10448 1652,0,@15442 1687,0,@10448 1722,0,@11428 1795,0,@10448 1830,0,@15444 1865,0,@10448 1900,0,@11428 1973,0,@10448 2008,0,@15446 2043,0,@10448 2078,0,@11428 2151,0,@10448 2186,0,@15448 2221,0,@10448 2256,0,@11428 2329,0,@10448 2364,0,@15450 2402,0,@11431 2438,0,0 2445,0,0 2452,0,1 2458,0,0 2491,0,0 2528,0,@10448 2563,0,@15452 2599,0,0 2606,0,0 2613,0,1 2619,0,0 2636,0,@11331 2671,0,@9455 2695,0,@11421 2716,0,@9455 2758,0,@4674 2810,0,@7368 2843,0,2 2850,0,2 2859,0,0 2889,0,@9455 2975,0,@11424 3012,0,@10448 3047,0,@15479 3082,0,@10448 3117,0,@11428 3190,0,@10448 3225,0,@15481 3263,0,@11431 3299,0,0 3306,0,0 3313,0,1 3319,0,0 3352,0,0 3389,0,@10448 3424,0,@15483 3460,0,0 3467,0,0 3474,0,1 3480,0,0 3497,0,@11331 3537,0,@9455 3561,0,@11421 3582,0,@9455 3648,0,@11421 3669,0,@9455 3741,0,@9455 3786,0,@4735 3825,0,@11424 3862,0,@10448 3897,0,@15444 3932,0,@10448 3967,0,@11428 4040,0,@10448 4075,0,@15448 4110,0,@10448 4145,0,@11428 4218,0,@10448 4253,0,@15450 4291,0,@11431 4327,0,0 4334,0,0 4341,0,1 4347,0,0 4380,0,0 4417,0,@10448 4452,0,@15711 4488,0,0 4495,0,0 4502,0,1 4508,0,0 4525,0,@11331 4566,0,@9455 4590,0,@11421 4612,0,@9455 4636,0,@11421 4663,0,@9455 4729,0,@11421 4757,0,@9455 4799,0,@4604 4843,0,@7376 4876,0,1 4883,0,3 4892,0,0 4929,0,@9455 4970,0,@4728 5009,0,@11424 5046,0,@10448 5081,0,@11750 5116,0,@10448 5151,0,@11428 5224,0,@10448 5259,0,@12796 5297,0,@10448 5332,0,@11428 5405,0,@10448 5440,0,@12798 5478,0,@11431 5514,0,0 5521,0,0 5528,0,1 5534,0,0 5551,0,@11421 5572,0,@9455 5617,0,@4740 5640,0,@11421 5661,0,@9455 5734,0,@9455 5758,0,@11421 5785,0,@9455 5851,0,@11421 5879,0,@9455 5921,0,@4604 5965,0,@7378 5998,0,1 6005,0,3 6014,0,0 6051,0,@9455 6092,0,@4728 6131,0,@11424 6168,0,@10448 6203,0,@11750 6238,0,@10448 6273,0,@11428 6346,0,@10448 6381,0,@12796 6419,0,@10448 6454,0,@11428 6527,0,@10448 6562,0,@12798 6600,0,@11431 6636,0,0 6643,0,0 6650,0,1 6656,0,0 6689,0,@11424 6726,0,@10448 6761,0,@15744 6796,0,@10448 6831,0,@11428 6904,0,@10448 6939,0,@15746 6974,0,@10448 7009,0,@11428 7082,0,@10448 7117,0,@15748 7152,0,@10448 7187,0,@11428 7260,0,@10448 7295,0,@15750 7333,0,@11431 7369,0,0 7376,0,0 7383,0,1 7389,0,0 7422,0,0 7459,0,@10448 7494,0,@15752 7530,0,0 7537,0,0 7544,0,1 7550,0,0 7567,0,@11331 7605,0,@9455 7629,0,@10443 7650,0,@9455 7716,0,@10443 7737,0,@9455 7809,0,@9455 7895,0,@11375 7932,0,@10448 7967,0,@11428 8040,0,@10448 8075,0,@11428 8151,0,@11377 8187,0,0 8194,0,0 8201,0,1 8207,0,0 8240,0,0 8277,0,@10448 8312,0,@15759 8348,0,0 8355,0,0 8362,0,1 8368,0,0 8385,0,@11331 8426,0,@9455 8450,0,@10443 8471,0,@9455 8512,0,@4679 8537,0,@9455 8583,0,@4674 8590,0,@15766 8638,0,@11375 8675,0,@10448 8710,0,@11428 8786,0,@11377 8822,0,0 8829,0,0 8836,0,1 8842,0,0 8875,0,0 8912,0,@10448 8947,0,@15770 8983,0,0 8990,0,0 8997,0,1 9003,0,0 9020,0,@11331 9060,0,@9455 9084,0,@11421 9105,0,@9455 9147,0,@4674 9191,0,@7381 9224,0,2 9231,0,2 9240,0,0 9268,0,@11421 9289,0,@9455 9361,0,@9455 9406,0,@4734 9445,0,@11424 9482,0,@10448 9517,0,@15777 9552,0,@10448 9587,0,@11428 9660,0,@10448 9695,0,@15779 9730,0,@10448 9765,0,@11428 9838,0,@10448 9873,0,@15781 9911,0,@11431 9947,0,0 9954,0,0 9961,0,1 9967,0,0 10000,0,0 10037,0,@10448 10072,0,@15783 10108,0,0 10115,0,0 10122,0,1 10128,0,0 10145,0,@11331 10176,0,@9455 10288,0,@9771 10295,0,1 10303,0,@9772 10310,0,1 10318,0,@9773 10325,0,1 10332,0,0 10377,0,@11374 10414,0,@10625 10449,0,@11377 10485,0,0 10492,0,1 10499,0,3 10505,0,0 10544,0,0 10581,0,@10448 10616,0,@15790 10652,0,0 10659,0,0 10666,0,1 10672,0,0 10689,0,@11331 10708,0,@15797 10725,0,@11331 10763,0,@9455 10787,0,@11421 10808,0,@9455 10849,0,@4670 10872,0,@11421 10893,0,@9455 10965,0,@9455 11051,0,@11424 11088,0,@10448 11123,0,@15802 11158,0,@10448 11193,0,@11428 11266,0,@10448 11301,0,@15804 11336,0,@10448 11371,0,@11428 11444,0,@10448 11479,0,@15806 11517,0,@11431 11553,0,0 11560,0,0 11567,0,1 11573,0,0 11606,0,0 11643,0,@10448 11678,0,@15808 11714,0,0 11721,0,0 11728,0,1 11734,0,0 11751,0,@11331 11789,0,@9455 11813,0,@11421 11834,0,@9455 11900,0,@11421 11921,0,@9455 11966,0,@4672 11991,0,@9455 12036,0,@4670 12075,0,@11424 12112,0,@10448 12147,0,@11750 12182,0,@10448 12217,0,@11428 12290,0,@10448 12325,0,@15815 12360,0,@10448 12395,0,@11428 12468,0,@10448 12503,0,@12798 12541,0,@11431 12577,0,0 12584,0,0 12591,0,1 12597,0,0 12630,0,0 12667,0,@10448 12702,0,@15817 12738,0,0 12745,0,0 12752,0,1 12758,0,0 12775,0,@11331 12807,0,@9455 12831,0,@11421 12859,0,@9455 12901,0,@4674 12945,0,@7382 12978,0,2 12985,0,2 12994,0,0 13022,0,@11421 13049,0,@9455 13115,0,@11421 13143,0,@9455 13185,0,@4674 13229,0,@7384 13262,0,1 13269,0,3 13278,0,0 13306,0,@11421 13334,0,@9455 13400,0,@11421 13428,0,@9455 13469,0,@4670 13492,0,@11421 13520,0,@9455 13561,0,@4602 13584,0,@11421 13612,0,@9455 13654,0,@4674 13698,0,@7385 13731,0,1 13738,0,3 13747,0,0 13784,0,@9455 13825,0,@4734 13864,0,@11424 13901,0,@10448 13936,0,@15777 13971,0,@10448 14006,0,@11428 14079,0,@10448 14114,0,@15825 14152,0,@10448 14187,0,@11428 14260,0,@10448 14295,0,@14926 14330,0,@10448 14365,0,@11428 14438,0,@10448 14473,0,@15827 14508,0,@10448 14543,0,@11428 14616,0,@10448 14651,0,@15829 14686,0,@10448 14721,0,@11428 14794,0,@10448 14829,0,@15831 14867,0,@10448 14902,0,@11428 14975,0,@10448 15010,0,@15833 15045,0,@10448 15080,0,@11428 15153,0,@10448 15188,0,@15835 15226,0,@11431 15262,0,0 15269,0,0 15276,0,1 15282,0,0 15315,0,0 15352,0,@10448 15387,0,@15837 15423,0,0 15430,0,0 15437,0,1 15443,0,0 15460,0,@11331 15495,0,@9455 15519,0,@11421 15541,0,@9455 15565,0,@11421 15592,0,@9455 15658,0,@11421 15686,0,@9455 15728,0,@4604 15772,0,@7386 15805,0,1 15812,0,3 15821,0,0 15858,0,@9455 15899,0,@4728 15938,0,@11424 15975,0,@10448 16010,0,@11750 16045,0,@10448 16080,0,@11428 16153,0,@10448 16188,0,@12796 16226,0,@10448 16261,0,@11428 16334,0,@10448 16369,0,@12798 16407,0,@11431 16443,0,0 16450,0,0 16457,0,1 16463,0,0 16482,0,@9455 16527,0,@4742 16566,0,@11424 16603,0,@10448 16638,0,@15748 16673,0,@10448 16708,0,@11428 16781,0,@10448 16816,0,@15911 16854,0,@11431 16890,0,0 16897,0,0 16904,0,1 16910,0,0 16943,0,0 16980,0,@10448 17015,0,@15913 17051,0,0 17058,0,0 17065,0,1 17071,0,0 17088,0,@11331 17121,0,@9455 17163,0,@4674 17207,0,@7388 17240,0,2 17247,0,2 17256,0,0 17331,0,@9771 17338,0,1 17346,0,@9772 17353,0,1 17361,0,@9773 17368,0,1 17375,0,0 17420,0,@11374 17457,0,@10625 17492,0,@11377 17528,0,0 17535,0,1 17542,0,3 17548,0,0 17587,0,0 17624,0,@10448 17659,0,@15920 17695,0,0 17702,0,0 17709,0,1 17715,0,0 17732,0,@11331 17767,0,@9455 17791,0,@10443 17812,0,@9455 17854,0,@4674 17898,0,@7389 17931,0,1 17938,0,3 17947,0,0 17977,0,@9455 18063,0,@11375 18100,0,@10448 18135,0,@11428 18211,0,@11377 18247,0,0 18254,0,0 18261,0,1 18267,0,0 18300,0,0 18337,0,@10448 18372,0,@15928 18408,0,0 18415,0,0 18422,0,1 18428,0,0 18445,0,@11331 18476,0,@9455 18588,0,@9771 18595,0,1 18603,0,@9772 18610,0,1 18618,0,@9773 18625,0,1 18632,0,0 18677,0,@11374 18714,0,@10625 18749,0,@11377 18785,0,0 18792,0,1 18799,0,3 18805,0,0 18844,0,0 18881,0,@10448 18916,0,@15935 18952,0,0 18959,0,0 18966,0,1 18972,0,0 18989,0,@11331 19027,0,@9455 19051,0,@11421 19072,0,@9455 19138,0,@11421 19159,0,@9455 19204,0,@4743 19229,0,@9455 19315,0,@11424 19352,0,@10448 19387,0,@15952 19422,0,@10448 19457,0,@11428 19530,0,@10448 19565,0,@15954 19600,0,@10448 19635,0,@11428 19708,0,@10448 19743,0,@11429 19781,0,@11431 19817,0,0 19824,0,0 19831,0,1 19837,0,0 19870,0,0 19907,0,@10448 19942,0,@15956 19978,0,0 19985,0,0 19992,0,1 19998,0,0 20015,0,@11331 20053,0,@9455 20077,0,@11421 20099,0,@9455 20123,0,@11421 20150,0,@9455 20216,0,@11421 20244,0,@9455 20286,0,@4604 20330,0,@7392 20363,0,1 20370,0,3 20379,0,0 20416,0,@9455 20457,0,@4728 20496,0,@11424 20533,0,@10448 20568,0,@11750 20603,0,@10448 20638,0,@11428 20711,0,@10448 20746,0,@12796 20784,0,@10448 20819,0,@11428 20892,0,@10448 20927,0,@12798 20965,0,@11431 21001,0,0 21008,0,0 21015,0,1 21021,0,0 21038,0,@11421 21059,0,@9455 21104,0,@4742 21129,0,@9455 21215,0,@11424 21252,0,@10448 21287,0,@15330 21322,0,@10448 21357,0,@11428 21430,0,@10448 21465,0,@15748 21500,0,@10448 21535,0,@11428 21608,0,@10448 21643,0,@15911 21681,0,@11431 21717,0,0 21724,0,0 21731,0,1 21737,0,0 21770,0,0 21807,0,@10448 21842,0,@15963 21878,0,0 21885,0,0 21892,0,1 21898,0,0 21915,0,@11331 21953,0,@9455 21977,0,@11421 21998,0,@9455 22039,0,@4728 22062,0,@11421 22083,0,@9455 22128,0,@4728 22153,0,@9455 22239,0,@11424 22276,0,@10448 22311,0,@15553 22346,0,@10448 22381,0,@11428 22454,0,@10448 22489,0,@15970 22524,0,@10448 22559,0,@11428 22632,0,@10448 22667,0,@15972 22705,0,@11431 22741,0,0 22748,0,0 22755,0,1 22761,0,0 22794,0,0 22831,0,@10448 22866,0,@15974 22902,0,0 22909,0,0 22916,0,1 22922,0,0 22939,0,@11331 22974,0,@9455 22998,0,@11421 23019,0,@9455 23061,0,@4674 23105,0,@7393 23138,0,1 23145,0,3 23154,0,0 23184,0,@9455 23229,0,@4672 23268,0,@11424 23305,0,@10448 23340,0,@15815 23375,0,@10448 23410,0,@11428 23483,0,@10448 23518,0,@15981 23556,0,@11431 23592,0,0 23599,0,0 23606,0,1 23612,0,0 23645,0,0 23682,0,@10448 23717,0,@15983 23753,0,0 23760,0,0 23767,0,1 23773,0,0 23790,0,@11331 23812,0,@9455 23836,0,@11421 23857,0,@9455 23925,0,@9455 23970,0,@4744 24009,0,@11424 24046,0,@10448 24081,0,@15444 24116,0,@10448 24151,0,@11428 24224,0,@10448 24259,0,@15450 24297,0,@11431 24333,0,0 24340,0,0 24347,0,1 24353,0,0 24386,0,0 24423,0,@10448 24458,0,@16076 24494,0,0 24501,0,0 24508,0,1 24514,0,0 7368:D3,1300|3b650c7305ff552ccd0552508b3c248b570489d683fa017d0e8d642408be185566b1e98f04000089ff8b17ff3289f783ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9220300008b7c24048b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fa83ff037d0abe2cb566b1e9110200008b7c24088b3789d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7608897704c707008a3cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24108b7f088b74240c83ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301f68b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074c1f68b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@9816,1,@2546|30,0,@10443 58,0,@9455 82,0,@11421 110,0,@9455 151,0,@4670 174,0,@11421 201,0,@9455 243,0,@4674 287,0,@7369 320,0,1 327,0,3 336,0,0 373,0,@9455 455,0,@11424 492,0,@10448 527,0,@15330 562,0,@10448 597,0,@11428 670,0,@10448 705,0,@15459 743,0,@10448 778,0,@11428 851,0,@10448 886,0,@15461 924,0,@11431 960,0,0 967,0,0 974,0,1 980,0,0 1009,0,@9455 1050,0,@4734 1089,0,@11375 1126,0,@10448 1161,0,@11428 1237,0,@11377 1273,0,0 1280,0,0 1287,0,1 1293,0,0 7369:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2544| 7370:D3,60|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3083fe017506b8701f68b1c383ff037d06b8b4ab66b1c3b8e81f68b1c3f4000000|@15478,1,@2545|21,0,@11331 34,0,@15464 45,0,@11331 51,0,@15471 7371:D3,6236|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c38b1089d68b1283fa01750a8d642404b8402168b1c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe030f85020200008b7f0483ea02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc0200000089500489388b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a02168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff050f85020200008b7a0483ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071c2268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa070f85020200008b760483ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b3c248b7f088d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707942268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe090f85020200008b7f0483ea02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc0200000089500489388b3c248b7f0c8d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707102368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff0b0f85020200008b7a0483ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c248b7f108d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707882368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa0d0f85020200008b760483ef02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707002468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe0f0f85020200008b7f0483ea02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc0200000089500489388b3c248b7f088d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707742468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff110f85020200008b7a0483ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c248b7f048d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ec2468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa130f85d4020000ff76048b760883ef0257710e8d64240cb8f80466b18b5d04ff238b142489d783fa017d0e8d64240cbe2cb566b1e9a501000089ff83ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf6c02c0b08b17ff1289c7578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240889388b7c240c8b7f088b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707602568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7066cdd66b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077c2568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe150f85020200008b7f0483ea02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc0200000089500489388b3c248b7f0c8d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f42568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c38b7f0483ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c248b7f108d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707682668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@15576,1,@2547|26,0,@11331 47,0,@15491 64,0,@11331 95,0,@9455 207,0,@9771 214,0,1 222,0,@9772 229,0,1 237,0,@9773 244,0,1 251,0,0 296,0,@11374 333,0,@10625 368,0,@11377 404,0,0 411,0,1 418,0,3 424,0,0 463,0,0 500,0,@10448 535,0,@15497 571,0,0 578,0,0 585,0,1 591,0,0 608,0,@11331 639,0,@9455 751,0,@9771 758,0,1 766,0,@9772 773,0,1 781,0,@9773 788,0,1 795,0,0 840,0,@11374 877,0,@10625 912,0,@11377 948,0,0 955,0,1 962,0,3 968,0,0 1007,0,0 1044,0,@10448 1079,0,@15504 1115,0,0 1122,0,0 1129,0,1 1135,0,0 1152,0,@11331 1183,0,@9455 1295,0,@9771 1302,0,1 1310,0,@9772 1317,0,1 1325,0,@9773 1332,0,1 1339,0,0 1384,0,@11374 1421,0,@10625 1456,0,@11377 1492,0,0 1499,0,1 1506,0,3 1512,0,0 1551,0,0 1588,0,@10448 1623,0,@15511 1659,0,0 1666,0,0 1673,0,1 1679,0,0 1696,0,@11331 1727,0,@9455 1839,0,@9771 1846,0,1 1854,0,@9772 1861,0,1 1869,0,@9773 1876,0,1 1883,0,0 1928,0,@11374 1965,0,@10625 2000,0,@11377 2036,0,0 2043,0,1 2050,0,3 2056,0,0 2095,0,0 2132,0,@10448 2167,0,@15518 2203,0,0 2210,0,0 2217,0,1 2223,0,0 2240,0,@11331 2271,0,@9455 2383,0,@9771 2390,0,1 2398,0,@9772 2405,0,1 2413,0,@9773 2420,0,1 2427,0,0 2472,0,@11374 2509,0,@10625 2544,0,@11377 2580,0,0 2587,0,1 2594,0,3 2600,0,0 2639,0,0 2676,0,@10448 2711,0,@15525 2747,0,0 2754,0,0 2761,0,1 2767,0,0 2784,0,@11331 2815,0,@9455 2927,0,@9771 2934,0,1 2942,0,@9772 2949,0,1 2957,0,@9773 2964,0,1 2971,0,0 3016,0,@11374 3053,0,@10625 3088,0,@11377 3124,0,0 3131,0,1 3138,0,3 3144,0,0 3183,0,0 3220,0,@10448 3255,0,@15532 3291,0,0 3298,0,0 3305,0,1 3311,0,0 3328,0,@11331 3359,0,@9455 3471,0,@9771 3478,0,1 3486,0,@9772 3493,0,1 3501,0,@9773 3508,0,1 3515,0,0 3560,0,@11374 3597,0,@10625 3632,0,@11377 3668,0,0 3675,0,1 3682,0,3 3688,0,0 3727,0,0 3764,0,@10448 3799,0,@15539 3835,0,0 3842,0,0 3849,0,1 3855,0,0 3872,0,@11331 3903,0,@9455 4015,0,@9771 4022,0,1 4030,0,@9772 4037,0,1 4045,0,@9773 4052,0,1 4059,0,0 4104,0,@11374 4141,0,@10625 4176,0,@11377 4212,0,0 4219,0,1 4226,0,3 4232,0,0 4271,0,0 4308,0,@10448 4343,0,@15546 4379,0,0 4386,0,0 4393,0,1 4399,0,0 4416,0,@11331 4451,0,@9455 4475,0,@11421 4496,0,@9455 4537,0,@4672 4562,0,@9455 4648,0,@11424 4685,0,@10448 4720,0,@15553 4755,0,@10448 4790,0,@11428 4863,0,@10448 4898,0,@11767 4936,0,@11431 4972,0,0 4979,0,0 4986,0,1 4992,0,0 5025,0,0 5062,0,@10448 5097,0,@15555 5133,0,0 5140,0,0 5147,0,1 5153,0,0 5170,0,@11331 5201,0,@9455 5313,0,@9771 5320,0,1 5328,0,@9772 5335,0,1 5343,0,@9773 5350,0,1 5357,0,0 5402,0,@11374 5439,0,@10625 5474,0,@11377 5510,0,0 5517,0,1 5524,0,3 5530,0,0 5569,0,0 5606,0,@10448 5641,0,@15562 5677,0,0 5684,0,0 5691,0,1 5697,0,0 5714,0,@11331 5732,0,@9455 5844,0,@9771 5851,0,1 5859,0,@9772 5866,0,1 5874,0,@9773 5881,0,1 5888,0,0 5933,0,@11374 5970,0,@10625 6005,0,@11377 6041,0,0 6048,0,1 6055,0,3 6061,0,0 6100,0,0 6137,0,@10448 6172,0,@15569 6208,0,0 6215,0,0 6222,0,1 6228,0,0 7372:D3,188|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b1089d783fa017506b8fc2668b1c389f283fe037d06b8b4ab66b1c389fe83ff037506b86c2768b1c389d783fa037d06b8b4ab66b1c389f283fe057506b8dc2768b1c389fe83ff037d06b8b4ab66b1c389d783fa077506b84c2868b1c389f283fe037d06b8b4ab66b1c389fe83ff097506b8c02868b1c389d783fa037d06b8b4ab66b1c383fe0b7506b8342968b1c383ff037d06b8b4ab66b1c3b8a42968b1c3f400|@15627,1,@2548|21,0,@11331 36,0,@15578 49,0,@11331 62,0,@15585 75,0,@11331 88,0,@15592 101,0,@11331 114,0,@15599 127,0,@11331 140,0,@15606 153,0,@11331 164,0,@15613 175,0,@11331 181,0,@15620 7373:D3,136|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3089f283fe017506b8402a68b1c389fe83ff037d06b8b4ab66b1c389d783fa037506b8b42a68b1c389f283fe037d06b8b4ab66b1c389fe83ff057506b8282b68b1c389d783fa037d06b8b4ab66b1c383fe077506b8a02b68b1c383ff037d06b8b4ab66b1c3b8102c68b1c3f400|@15664,1,@2549|21,0,@11331 36,0,@15629 49,0,@11331 62,0,@15636 75,0,@11331 88,0,@15643 101,0,@11331 112,0,@15650 123,0,@11331 129,0,@15657 7374:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8ac2c68b1c389d783fa037d06b8b4ab66b1c383fe037506b8202d68b1c383ff037d06b8b4ab66b1c3b8942d68b1c3f400|@15687,1,@2550|21,0,@11331 36,0,@15666 49,0,@11331 60,0,@15673 71,0,@11331 77,0,@15680 7375:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8302e68b1c389d783fa037d06b8b4ab66b1c383fe037506b8a42e68b1c383ff037d06b8b4ab66b1c3b8202f68b1c3f400|@15710,1,@2551|21,0,@11331 36,0,@15689 49,0,@11331 60,0,@15696 71,0,@11331 77,0,@15703 7376:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2552| 7377:D3,500|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b1089d683fa017506b84c3068b1c389fa83ff037d06b8b4ab66b1c389f783fe037506b8c83068b1c389d683fa037d06b8b4ab66b1c38b3f83ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706403168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707603168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@15743,1,@2553|21,0,@11331 36,0,@15720 49,0,@11331 62,0,@15727 75,0,@11331 88,0,@9455 129,0,@4672 168,0,@11424 205,0,@10448 240,0,@15734 275,0,@11431 311,0,0 318,0,0 325,0,1 331,0,0 364,0,0 401,0,@10448 436,0,@15736 472,0,0 479,0,0 486,0,1 492,0,0 7378:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2554| 7379:D3,20|3b650c7305ff552ccd01bf9404c0b08b17ff22f4|@15769,1,@2556|11,0,@4741 7380:D3,20|3b650c7305ff552ccd01b8183366b1c3f4000000|@9998,1,@2555|11,0,@9996 7381:D3,420|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e92101000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@9816,1,@2557|29,0,@10443 56,0,@9455 130,0,@9455 171,0,@4734 210,0,@11375 247,0,@10448 282,0,@11428 358,0,@11377 394,0,0 401,0,0 408,0,1 414,0,0 7382:D3,528|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e98a01000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c707a8ab3cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2559|30,0,@10443 57,0,@9455 98,0,@4734 133,0,@9455 175,0,@4674 219,0,@7383 252,0,1 259,0,3 268,0,0 316,0,@11375 353,0,@10448 388,0,@11428 464,0,@11377 500,0,0 507,0,0 514,0,1 520,0,0 7383:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2558| 7384:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15824,1,@2560| 7385:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2561| 7386:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2562| 7387:D3,1092|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b3889fa8b3f83ff017506b83c3868b1c389f783fe037d06b8b4ab66b1c389d68b1283fa037506b8b03868b1c389fa83ff037d06b8b4ab66b1c389f78b3683fe057506b8243968b1c389d683fa037d06b8b4ab66b1c389fa8b3f83ff077506b8983968b1c389f783fe037d06b8b4ab66b1c389d68b1283fa097506b80c3a68b1c389fa83ff037d06b8b4ab66b1c389f78b3683fe0b7506b8843a68b1c389d683fa037d06b8b4ab66b1c389fa8b3f83ff0d0f85a20100008b7a0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc3a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707203b68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389d68b1283fa0f0f85a20100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf6c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc3a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707983b68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b8103c68b1c3f4000000|@15910,1,@2563|21,0,@11331 38,0,@15845 51,0,@11331 66,0,@15852 79,0,@11331 94,0,@15859 107,0,@11331 122,0,@15866 135,0,@11331 150,0,@15873 163,0,@11331 178,0,@15880 191,0,@11331 218,0,@9455 259,0,@4672 298,0,@11424 335,0,@10448 370,0,@15887 405,0,@11431 441,0,0 448,0,0 455,0,1 461,0,0 494,0,0 531,0,@10448 566,0,@15889 602,0,0 609,0,0 616,0,1 622,0,0 635,0,@11331 662,0,@9455 703,0,@4672 742,0,@11424 779,0,@10448 814,0,@15887 849,0,@11431 885,0,0 892,0,0 899,0,1 905,0,0 938,0,0 975,0,@10448 1010,0,@15896 1046,0,0 1053,0,0 1060,0,1 1066,0,0 1077,0,@11331 1083,0,@15903 7388:D3,420|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e92101000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@9816,1,@2564|29,0,@10443 56,0,@9455 130,0,@9455 171,0,@4734 210,0,@11375 247,0,@10448 282,0,@11428 358,0,@11377 394,0,0 401,0,0 408,0,1 414,0,0 7389:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15927,1,@2565| 7390:D3,36|3b650c7305ff552ccd018b70048b00ff3424bb0100000089742404e918000000f4000000|@9475,1,@2567|19,0,0 28,1,@7391 7391:D3,664|3b650c7305ff552ccd09508b3c248b3789f183ee0256710e8d642408b8f80466b18b5d04ff238b74240c83fe017f0b8d642408beb83e68b1eb4e8b54240c2b1424710e8d642408b8f80466b18b5d04ff2383c2018b75008d76f43b75087305ff5528cd06897500c746fc02000000895604c706dc3e68b189cf5683ff0175678b3c248b378d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f43e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c2040089fe83ee025689fa83ea0289f983e9028b74240c8b760489cbc1eb0383cb01d1eb0fb6341e8d34750100000083e10f83f93f7207b901000000eb0e33db83c302d1e9d3e389d983c90123f183fe017507b903000000eb05b90100000083f1028b7424048b1e89f68b76046a016a0183fe01752383c602710e8d642418b8f80466b18b5d04ff23c70424b83e68b189742404e9e300000083fe017d2383c602710e8d642418b8f80466b18b5d04ff23c704240100000089742404e9bb00000083f9037507b8bcb766b1eb05b8c8b766b18b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000894104c701070000003b54241074488b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04c702201a66b18b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000895304c703143f68b1eb008b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a83c602710e8d642418b8f80466b18b5d04ff23891424897424045e598b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a0489325989cf8914243b650c7305ff552ccd80e9e5fdfffff40000|@15951,1,@2566|29,0,@9455 52,0,@15943 72,0,@9455 115,0,@15946 167,0,@15948 203,0,0 210,0,0 217,0,3 223,0,0 283,0,0 311,0,1 318,0,0 355,0,@9455 367,0,@15943 395,0,@9455 407,0,0 426,0,@11458 433,0,@11459 468,0,3 509,0,@9794 544,0,@15950 591,0,@9455 7392:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2568| 7393:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2569| 7394:D3,372|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3089f283fe017506b89c4168b1c389fe83ff037d06b8b4ab66b1c389d783fa037506b8fc4168b1c389f283fe037d06b8b4ab66b1c389fe83ff057506b85c4268b1c389d783fa037d06b8b4ab66b1c389f283fe077506b8bc4268b1c389fe83ff037d06b8b4ab66b1c389d783fa097506b81c4368b1c389f283fe037d06b8b4ab66b1c389fe83ff0b7506b87c4368b1c389d783fa037d06b8b4ab66b1c389f283fe0d7506b8dc4368b1c389fe83ff037d06b8b4ab66b1c389d783fa0f7506b83c4468b1c389f283fe037d06b8b4ab66b1c389fe83ff117506b89c4468b1c389d783fa037d06b8b4ab66b1c389f283fe137506b8fc4468b1c389fe83ff037d06b8b4ab66b1c389d783fa157506b85c4568b1c389f283fe037d06b8b4ab66b1c389fe83ff177506b8bc4568b1c389d783fa037d06b8b4ab66b1c383fe197506b81c4668b1c383ff037d06b8b4ab66b1c3b87c4668b1c3f4000000|@16075,1,@2570|21,0,@11331 36,0,@15991 49,0,@11331 62,0,@15997 75,0,@11331 88,0,@16003 101,0,@11331 114,0,@16009 127,0,@11331 140,0,@16015 153,0,@11331 166,0,@16021 179,0,@11331 192,0,@16027 205,0,@11331 218,0,@16033 231,0,@11331 244,0,@16039 257,0,@11331 270,0,@16045 283,0,@11331 296,0,@16051 309,0,@11331 322,0,@16057 335,0,@11331 346,0,@16063 357,0,@11331 363,0,@16069 7395:D3,1068|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3089f78b3683fe010f85f90100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf7404c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076c4768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf7c04c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc4768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@16098,1,@2572|21,0,@11331 50,0,@9455 91,0,@4737 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@16084 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 568,0,@9455 609,0,@4738 675,0,@9771 682,0,1 690,0,@9772 697,0,1 705,0,@9773 712,0,1 719,0,0 764,0,@11374 801,0,@10625 836,0,@11377 872,0,0 879,0,1 886,0,3 892,0,0 931,0,0 968,0,@10448 1003,0,@16091 1039,0,0 1046,0,0 1053,0,1 1059,0,0 7396:D3,1604|3b650c7305ff552ccd05528b780489fe83ff037d0a8d642404b8b4ab66b1c38b1089d78b1283fa010f85100300008b5704ff770883ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e9e101000089f683ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7608897704c707d4c13cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b74240883ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c707fcc13cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707804868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff03750a8d642404b8f04868b1c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe050f85ad0200008b7204ff720883ef0257710e8d64240cb8f80466b18b5d04ff238b142489d783fa017d0e8d64240cbe185566b1e97e01000089ff83ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c7578b74240483ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7608897704c70724c23cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707644968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c38d64240483ff037d06b8b4ab66b1c3b8c44968b1c3f400|@15458,1,@2576|26,0,@11331 63,0,@9455 87,0,@10443 108,0,@9455 150,0,@4674 194,0,@7397 227,0,1 234,0,3 243,0,0 273,0,@9455 319,0,@4674 363,0,@7398 396,0,1 403,0,3 412,0,0 460,0,@11375 497,0,@10448 532,0,@11428 608,0,@11377 644,0,0 651,0,0 658,0,1 664,0,0 697,0,0 734,0,@10448 769,0,@16100 805,0,0 812,0,0 819,0,1 825,0,0 842,0,@11331 861,0,@16107 878,0,@11331 913,0,@9455 937,0,@10443 958,0,@9455 999,0,@4670 1024,0,@9455 1070,0,@4674 1114,0,@7399 1147,0,1 1154,0,3 1163,0,0 1211,0,@11375 1248,0,@10448 1283,0,@11428 1359,0,@11377 1395,0,0 1402,0,0 1409,0,1 1415,0,0 1448,0,0 1485,0,@10448 1520,0,@16114 1556,0,0 1563,0,0 1570,0,1 1576,0,0 1591,0,@11331 1597,0,@16120 7397:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2573| 7398:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15718,1,@2574| 7399:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2575| 7400:D3,1628|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3089f78b3683fe010f85f90100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707404a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c389fa8b3f83ff030f85f90100008b7a0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b44a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389d68b1283fa050f85f90100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707284b68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b89c4b68b1c3f40000|@15824,1,@2577|21,0,@11331 50,0,@9455 91,0,@4670 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@16128 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 581,0,@9455 622,0,@4670 688,0,@9771 695,0,1 703,0,@9772 710,0,1 718,0,@9773 725,0,1 732,0,0 777,0,@11374 814,0,@10625 849,0,@11377 885,0,0 892,0,1 899,0,3 905,0,0 944,0,0 981,0,@10448 1016,0,@16135 1052,0,0 1059,0,0 1066,0,1 1072,0,0 1085,0,@11331 1112,0,@9455 1153,0,@4670 1219,0,@9771 1226,0,1 1234,0,@9772 1241,0,1 1249,0,@9773 1256,0,1 1263,0,0 1308,0,@11374 1345,0,@10625 1380,0,@11377 1416,0,0 1423,0,1 1430,0,3 1436,0,0 1475,0,0 1512,0,@10448 1547,0,@16142 1583,0,0 1590,0,0 1597,0,1 1603,0,0 1614,0,@11331 1620,0,@16149 7401:D3,60|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3083fe017506b81c4c68b1c383ff037d06b8b4ab66b1c3b88c4c68b1c3f4000000|@16171,1,@2578|21,0,@11331 34,0,@16157 45,0,@11331 51,0,@16164 7402:D3,3740|3b650c7305ff552ccd05528b780489fa83ff037d0a8d642404b8b4ab66b1c38b3889fe8b3f83ff010f8557050000ff76048b7e08ff760cff761083ea0252710e8d642414b8f80466b18b5d04ff238b142489d683fa017d0e8d642414be2cb566b1e92204000089f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e91803000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240889388b7c24148b7f088b17ff1289c7578b74240889f783fe057d0abe2cb566b1e90b02000089ff83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf5c02c0b08b17ff1289c7578b74240c83ee02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742418893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424208b7604897704c707bcd73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301f68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706404267b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707344d68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1f68b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707504d68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe030f8548040000ff72048b7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e91603000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e90c02000089f683ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c707e4d73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24188b7f088b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301f68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1f68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c44d68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa050f85020200008b7f0483ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b3c248b7f088d6424048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707344e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c38b770483ea02710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7fe83b7d087305ff5528cd04897d00c747fc050000008b7424048b4e08894f1089f68b4e10894f0c89f68b4e0c894f0889f68b7604897704c7070cd83cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c07000000c7400805000000897804c70001000000ff1289c28b0424ff1289c68d6424088b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c44e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@15927,1,@2587|26,0,@11331 69,0,@9455 93,0,@11421 114,0,@9455 155,0,@4670 178,0,@11421 199,0,@9455 269,0,@11421 290,0,@9455 335,0,@4670 360,0,@9455 406,0,@4674 450,0,@7403 483,0,1 490,0,3 499,0,0 547,0,@11424 584,0,@10448 619,0,@15459 654,0,@10448 689,0,@11428 762,0,@10448 797,0,@12889 832,0,@10448 867,0,@11428 940,0,@10448 975,0,@16173 1010,0,@10448 1045,0,@11428 1118,0,@10448 1153,0,@15461 1191,0,@11431 1227,0,0 1234,0,0 1241,0,1 1247,0,0 1280,0,0 1317,0,@10448 1352,0,@16175 1388,0,0 1395,0,0 1402,0,1 1408,0,0 1425,0,@11331 1463,0,@9455 1487,0,@11421 1508,0,@9455 1549,0,@4670 1572,0,@11421 1593,0,@9455 1639,0,@4674 1683,0,@7404 1716,0,1 1723,0,3 1732,0,0 1762,0,@9455 1848,0,@11424 1885,0,@10448 1920,0,@15330 1955,0,@10448 1990,0,@11428 2063,0,@10448 2098,0,@15459 2136,0,@10448 2171,0,@11428 2244,0,@10448 2279,0,@15461 2317,0,@11431 2353,0,0 2360,0,0 2367,0,1 2373,0,0 2406,0,0 2443,0,@10448 2478,0,@16182 2514,0,0 2521,0,0 2528,0,1 2534,0,0 2551,0,@11331 2582,0,@9455 2694,0,@9771 2701,0,1 2709,0,@9772 2716,0,1 2724,0,@9773 2731,0,1 2738,0,0 2783,0,@11374 2820,0,@10625 2855,0,@11377 2891,0,0 2898,0,1 2905,0,3 2911,0,0 2950,0,0 2987,0,@10448 3022,0,@16189 3058,0,0 3065,0,0 3072,0,1 3078,0,0 3095,0,@11331 3113,0,@9455 3155,0,@4674 3223,0,@7405 3256,0,3 3263,0,2 3272,0,0 3347,0,@9771 3354,0,1 3362,0,@9772 3369,0,1 3377,0,@9773 3384,0,1 3391,0,0 3436,0,@11374 3473,0,@10625 3508,0,@11377 3544,0,0 3551,0,1 3558,0,3 3564,0,0 3603,0,0 3640,0,@10448 3675,0,@16198 3711,0,0 3718,0,0 3725,0,1 3731,0,0 7403:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2579| 7404:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2580| 7405:D3,3368|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be2cb566b1e9a40c000089f68b3e8b7f0489d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24048b570489d683fa037d0abf2cb566b1e9900b000089ff8b17ff720889f783ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408bf2cb566b1e9330900008b7c24048b771089d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c70748e53cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abe2cb566b1e9bf0700008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f108b17ff1289c7578b7c240c89fa83ff057d0abf2cb566b1e9b00600008b7c24108b770c89d283ea02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424208b760c897704c70794e73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241489fe83ff077d0abe2cb566b1e93c0500008b7c24188b7f1489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24248b7f088b17ff1289c7578b7c241889fe83ff097d0abf2cb566b1e92c0400008b7c241c8b7f1889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c89fe83ff0b7d0abe2cb566b1e91e0300008b7c24208b7f0489f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c242089fa83ff0d7d0abf2cb566b1e9100200008b7c24248b770889d283ea02710e8d642434b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424348b7604897704c707bce73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c242c8b7f1c8b74242883ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706043468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070c3768b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707283768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706483768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707683768b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a43768b183c40c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24088b378b3689ff8b570483ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c707e4e73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301f68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a84e68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1f68b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@9816,1,@2586|30,0,@11421 58,0,@9455 99,0,@4670 125,0,@11421 154,0,@9455 178,0,@11421 206,0,@9455 248,0,@4674 292,0,@7406 325,0,2 332,0,2 341,0,0 369,0,@11421 396,0,@9455 462,0,@11421 490,0,@9455 532,0,@4674 576,0,@7408 609,0,1 616,0,3 625,0,0 653,0,@11421 681,0,@9455 747,0,@11421 775,0,@9455 816,0,@4670 839,0,@11421 867,0,@9455 908,0,@4602 931,0,@11421 959,0,@9455 1001,0,@4674 1045,0,@7409 1078,0,1 1085,0,3 1094,0,0 1131,0,@9455 1172,0,@4734 1211,0,@11424 1248,0,@10448 1283,0,@15777 1318,0,@10448 1353,0,@11428 1426,0,@10448 1461,0,@15825 1499,0,@10448 1534,0,@11428 1607,0,@10448 1642,0,@14926 1677,0,@10448 1712,0,@11428 1785,0,@10448 1820,0,@15827 1855,0,@10448 1890,0,@11428 1963,0,@10448 1998,0,@15829 2033,0,@10448 2068,0,@11428 2141,0,@10448 2176,0,@15831 2214,0,@10448 2249,0,@11428 2322,0,@10448 2357,0,@15833 2392,0,@10448 2427,0,@11428 2500,0,@10448 2535,0,@15835 2573,0,@11431 2609,0,0 2616,0,0 2623,0,1 2629,0,0 2657,0,@9455 2699,0,@4674 2743,0,@7410 2776,0,1 2783,0,3 2792,0,0 2840,0,@11424 2877,0,@10448 2912,0,@15459 2947,0,@10448 2982,0,@11428 3055,0,@10448 3090,0,@16196 3125,0,@10448 3160,0,@11428 3233,0,@10448 3268,0,@15461 3306,0,@11431 3342,0,0 3349,0,0 3356,0,1 3362,0,0 7406:D3,528|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e98a01000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c04c0b08b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c7076ce73cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2582|30,0,@10443 57,0,@9455 98,0,@4734 133,0,@9455 175,0,@4674 219,0,@7407 252,0,1 259,0,3 268,0,0 316,0,@11375 353,0,@10448 388,0,@11428 464,0,@11377 500,0,0 507,0,0 514,0,1 520,0,0 7407:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2581| 7408:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15824,1,@2583| 7409:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2584| 7410:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15458,1,@2585| 7411:D3,20|3b650c7305ff552ccd01bf5c02c0b08b17ff22f4|@11676,1,@2588|11,0,@4670 7412:D3,20|3b650c7305ff552ccd01bfd404c0b08b17ff22f4|@16235,1,@2593|11,0,@4749 7413:D3,796|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d40100008b7c24048b7f0889f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50000008b7c24088b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e84f68b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707585068b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706683768b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707745068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@16235,1,@2589|21,0,@11331 39,0,@9455 63,0,@11421 91,0,@9455 153,0,@11421 180,0,@9455 221,0,@4670 245,0,@9455 283,0,@16217 320,0,@10448 355,0,@16226 390,0,@10448 425,0,@11428 498,0,@10448 533,0,@15831 571,0,@11431 607,0,0 614,0,0 621,0,1 627,0,0 660,0,0 697,0,@10448 732,0,@16228 768,0,0 775,0,0 782,0,1 788,0,0 7414:D3,548|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3083ea02710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8005168b1ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707385168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16247,1,@2592|21,0,@11331 34,0,@9455 76,0,@4724 83,0,@16237 158,0,@9771 165,0,1 173,0,@9772 180,0,1 188,0,@9773 195,0,1 202,0,0 247,0,@11374 284,0,@10625 319,0,@11377 355,0,0 362,0,1 369,0,3 375,0,0 414,0,0 451,0,@10448 486,0,@16241 522,0,0 529,0,0 536,0,1 542,0,0 7415:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b81c5168b1ff1289c258ff22f400|@10454,1,@2591|12,0,@4674 19,0,@16239 7416:D3,424|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be185566b1e92301000089f68b3e8b3f89d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfc404c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2590|29,0,@10443 56,0,@9455 97,0,@4747 132,0,@9455 173,0,@4670 212,0,@11375 249,0,@10448 284,0,@11428 360,0,@11377 396,0,0 403,0,0 410,0,1 416,0,0 7417:D3,240|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8345368b1c389d783fa037d06b8b4ab66b1c389f283fe037506b8a85368b1c389fe83ff037d06b8b4ab66b1c389d783fa057506b81c5468b1c389f283fe037d06b8b4ab66b1c389fe83ff077506b87c5468b1c389d783fa037d06b8b4ab66b1c389f283fe097506b8f05468b1c389fe83ff037d06b8b4ab66b1c389d783fa0b7506b8645568b1c389f283fe037d06b8b4ab66b1c389fe83ff0d7506b8d85568b1c389d783fa037d06b8b4ab66b1c383fe0f7506b8485668b1c383ff037d06b8b4ab66b1c3b8b85668b1c3f400|@16334,1,@2595|21,0,@11331 36,0,@16272 49,0,@11331 62,0,@16279 75,0,@11331 88,0,@16286 101,0,@11331 114,0,@16292 127,0,@11331 140,0,@16299 153,0,@11331 166,0,@16306 179,0,@11331 192,0,@16313 205,0,@11331 216,0,@16320 227,0,@11331 233,0,@16327 7418:D3,1508|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9970400008b7c24048b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f0c8b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e9840300008b7c24088b770889d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7608897704c707b0f63cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c89fe83ff057d0abe2cb566b1e9100200008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24148b77048b54241083ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7604897704c707d8f63cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707585768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301268b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706785768b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707985768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@15308,1,@2599|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 162,0,@11421 190,0,@9455 232,0,@4674 276,0,@7419 309,0,1 316,0,3 325,0,0 353,0,@11421 380,0,@9455 421,0,@4602 453,0,@9455 495,0,@4674 539,0,@7420 572,0,2 579,0,2 588,0,0 636,0,@11424 673,0,@10448 708,0,@16336 743,0,@10448 778,0,@11428 851,0,@10448 886,0,@14926 921,0,@10448 956,0,@11428 1029,0,@10448 1064,0,@15254 1102,0,@10448 1137,0,@11428 1210,0,@10448 1245,0,@16338 1283,0,@11431 1319,0,0 1326,0,0 1333,0,1 1339,0,0 1372,0,0 1409,0,@10448 1444,0,@16340 1480,0,0 1487,0,0 1494,0,1 1500,0,0 7419:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@2596| 7420:D3,668|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be2cb566b1e91602000089f68b3e8b7f0489d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c7578b7c24048b378b3689ff8b570483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c70788f93cb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706181768b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2598|30,0,@11421 58,0,@9455 99,0,@4728 133,0,@9455 175,0,@4724 219,0,@7421 252,0,1 259,0,3 268,0,0 316,0,@11424 353,0,@10448 388,0,@15330 423,0,@10448 458,0,@11428 531,0,@10448 566,0,@15332 604,0,@11431 640,0,0 647,0,0 654,0,1 660,0,0 7421:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15228,1,@2597| 7422:D3,3120|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9e20a00008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f088b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9d00900008b742408ff760889ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9da0700008b7c24048b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74240489f783fe037d0abe2cb566b1e9c90600008b742408ff760489ff83ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c8b3f8b74240883ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707285868b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c8b7f048b74240883ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c5868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707285868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706901268b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707685868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@16360,1,@2600|26,0,@11331 44,0,@9455 68,0,@11421 95,0,@9455 161,0,@11421 190,0,@9455 214,0,@11421 242,0,@9455 283,0,@4602 306,0,@11421 335,0,@9455 359,0,@11421 387,0,@9455 428,0,@4670 451,0,@11421 479,0,@9455 520,0,@4670 543,0,@11421 570,0,@9455 611,0,@4602 634,0,@11421 662,0,@9455 703,0,@4670 735,0,@9455 776,0,@4670 815,0,@11424 852,0,@10448 887,0,@13969 922,0,@10448 957,0,@11428 1030,0,@10448 1065,0,@13971 1100,0,@10448 1135,0,@11428 1208,0,@10448 1243,0,@13973 1278,0,@10448 1313,0,@11428 1386,0,@10448 1421,0,@13975 1456,0,@10448 1491,0,@11428 1564,0,@10448 1599,0,@13977 1637,0,@11431 1673,0,0 1680,0,0 1687,0,1 1693,0,0 1718,0,@9455 1759,0,@4602 1798,0,@11424 1835,0,@10448 1870,0,@14926 1905,0,@10448 1940,0,@11428 2013,0,@10448 2048,0,@16347 2083,0,@10448 2118,0,@11428 2191,0,@10448 2226,0,@16349 2264,0,@11431 2300,0,0 2307,0,0 2314,0,1 2320,0,0 2346,0,@9455 2428,0,@11424 2465,0,@10448 2500,0,@16351 2535,0,@10448 2570,0,@11428 2643,0,@10448 2678,0,@16349 2713,0,@10448 2748,0,@11428 2821,0,@10448 2856,0,@15260 2894,0,@11431 2930,0,0 2937,0,0 2944,0,1 2950,0,0 2983,0,0 3020,0,@10448 3055,0,@16353 3091,0,0 3098,0,0 3105,0,1 3111,0,0 7423:D3,3072|3b650c7305ff552ccd05528b780489fa83ff037d0a8d642404b8b4ab66b1c38b3089f78b3683fe010f850205000089fe8b7e04ff7608ff760cff761083ea0252710e8d642414b8f80466b18b5d04ff238b142489d683fa017d0e8d642414be2cb566b1e9cb03000089f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c102000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b7424108937578b7c24188b7f048b17b8fc5868b1ff1289c28b0424ff1289c7578b74240c89f783fe057d0abe2cb566b1e9a401000089ff83ef02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf6c02c0b08b17ff1289c7578b7c241083ef02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24188938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728dc66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706185968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707385968b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545968b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707705968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff030f85f50300008d642404ff7204ff72088b7a0c83ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9bf02000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9b501000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c7578b74240883ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b8e05968b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc5968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545968b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706185a68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073c5a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c38b7204ff720883ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe185566b1e97c01000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7608897704c70758123db18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24108b7f088b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a85a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16397,1,@2605|26,0,@11331 71,0,@9455 95,0,@11421 116,0,@9455 157,0,@4670 180,0,@11421 201,0,@9455 256,0,@16362 284,0,@11421 305,0,@9455 350,0,@4672 375,0,@9455 420,0,@4670 459,0,@11424 496,0,@10448 531,0,@11750 566,0,@10448 601,0,@11428 674,0,@10448 709,0,@16364 744,0,@10448 779,0,@11428 852,0,@10448 887,0,@16366 925,0,@10448 960,0,@11428 1033,0,@10448 1068,0,@16368 1106,0,@11431 1142,0,0 1149,0,0 1156,0,1 1162,0,0 1195,0,0 1232,0,@10448 1267,0,@16370 1303,0,0 1310,0,0 1317,0,1 1323,0,0 1340,0,@11331 1382,0,@9455 1406,0,@11421 1427,0,@9455 1468,0,@4672 1491,0,@11421 1512,0,@9455 1557,0,@4670 1582,0,@9455 1628,0,@4724 1635,0,@16377 1683,0,@11424 1720,0,@10448 1755,0,@16379 1790,0,@10448 1825,0,@11428 1898,0,@10448 1933,0,@16368 1968,0,@10448 2003,0,@11428 2076,0,@10448 2111,0,@16381 2149,0,@11431 2185,0,0 2192,0,0 2199,0,1 2205,0,0 2238,0,0 2275,0,@10448 2310,0,@16383 2346,0,0 2353,0,0 2360,0,1 2366,0,0 2383,0,@11331 2405,0,@9455 2429,0,@10443 2450,0,@9455 2492,0,@4674 2536,0,@7426 2569,0,2 2576,0,2 2585,0,0 2615,0,@9455 2701,0,@11375 2738,0,@10448 2773,0,@11428 2849,0,@11377 2885,0,0 2892,0,0 2899,0,1 2905,0,0 2938,0,0 2975,0,@10448 3010,0,@16390 3046,0,0 3053,0,0 3060,0,1 3066,0,0 7424:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@2601|11,0,@4672 7425:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@2602|11,0,@4672 7426:D3,668|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be2cb566b1e91602000089f68b3e8b7f0489d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c04c0b08b17ff1289c7578b7c24048b378b3689ff8b570483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c70708153db18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706181768b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2604|30,0,@11421 58,0,@9455 99,0,@4728 133,0,@9455 175,0,@4724 219,0,@7427 252,0,1 259,0,3 268,0,0 316,0,@11424 353,0,@10448 388,0,@15330 423,0,@10448 458,0,@11428 531,0,@10448 566,0,@15332 604,0,@11431 640,0,0 647,0,0 654,0,1 660,0,0 7427:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15228,1,@2603| 7428:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70078153db1c3f4000000|@16411,1,@2607|43,0,@7429 7429:D3,1140|3b650c7305ff552ccd0589d18b780489fe83ff037d06b8b4ab66b1c38b1089d78b1283fa010f85f80100008b51048b52048b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707385b68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c38b770483ea02710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704893757bf0c04c0b08b178b790489fe8b7f0489f38b760889d98b490c8b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c897008897804c70001000000ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ac5b68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@16410,1,@2606|23,0,@11331 58,0,@9455 158,0,@9771 165,0,1 173,0,@9772 180,0,1 188,0,@9773 195,0,1 202,0,0 247,0,@11374 284,0,@10625 319,0,@11377 355,0,0 362,0,1 369,0,3 375,0,0 414,0,0 451,0,@10448 486,0,@16399 522,0,0 529,0,0 536,0,1 542,0,0 555,0,@11331 569,0,@9455 611,0,@4724 672,0,0 747,0,@9771 754,0,1 762,0,@9772 769,0,1 777,0,@9773 784,0,1 791,0,0 836,0,@11374 873,0,@10625 908,0,@11377 944,0,0 951,0,1 958,0,3 964,0,0 1003,0,0 1040,0,@10448 1075,0,@16406 1111,0,0 1118,0,0 1125,0,1 1131,0,0 7430:D3,144|3b650c7305ff552ccd098b780489fe8b3f83ff0375358b7b0489fa8b3f83ff037507bf03000000eb05bf0100000083ff0375188b7e0489d68b76043bfe7506b803000000c3b801000000c389f78b3683fe0175338b530489d68b1283fa017507ba03000000eb05ba0100000083fa0375168b7f0c8b760c3bfe7506b803000000c3b801000000c3b801000000c3f40000|@16425,1,@2610|35,0,1 42,0,0 64,0,1 70,0,0 97,0,1 104,0,0 124,0,1 130,0,0 136,0,0 7431:D3,132|3b650c7305ff552ccd09bf010000008b55008d52f83b55087305ff5528cd89895500c742fc01000040893a8b75008d76f03b75087305ff5528cd0d897500c746fc03000000894608895604c7063c1b3db18b7d008d7ff03b7d087305ff5528cd4d897d00c747fc03000000895708894704c707a81c3db18933897b04b801000000c3f400|@16429,1,@2614|11,0,0 77,0,@7432 115,0,@7434 125,0,0 7432:D3,196|3b650c7305ff552ccd0552508b3c24ff378b7c24088b7f04ff37ff3424f604240175398b34248b3e89f6ff76048b078b7c24148b57088b5c240cff1289c783ff03750b8d642408bf03000000eb175e8934243b650c7303ff552cebc18d642404bf0100000083ff03751c8b7c240c8b5f08ff7424048b442404e85a00000089c68d642408eb045e83c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b34248b76048d642404893eb801000000c3f400|@16427,1,@2612|72,0,1 97,0,0 122,1,@7433 189,0,0 7433:D3,128|3b650c7305ff552ccd0953a8017564ff30ff70048b7c24048b078b5424088b5c2410ff1289c783ff0375075883c408c204008b7c2410578b4424048b5c240ce8bcffffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c204008d642404b801000000c20400f4|@16426,1,@2611|120,0,0 7434:D3,132|3b650c7305ff552ccd0552508b7c24048b7f088b3f57f6042401755a8b34248b3e89f6ff76048b07ff77048b7c24108b57048b5c240cff1289c783ff0375258b45008d40f83b45087303ff5528894500c740fc010000008b3c2489388d64240483c410c38d6424045e8934243b650c7303ff552ceba08d64240cb801000000c3f4000000|@16428,1,@2613|123,0,0 7435:D3,592|3b650c7305ff552ccd0552508b7c24048b57108b0424ff1289c783ff0175588b3c248b7f048b3783fe0175448b470c8b7c24048b570cff1289c783ff037507be05000000eb05be030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb05bf144167b1eb028b3f578b3c248b1789d683fa03751f89ff83fe03750a89ff8b47048d64240cc38d64240cb8b85d68b18b5d04ff238b7c24088b57048b45008d40f43b45087305ff5528cd04894500c740fc02000000c74004b83966b18b7c24048938ff128b3c248b3783fe01750a89ff8b7f04576a05eb0e8d64240cb8e45d68b18b5d04ff23f64424040175278b7424048b3e89f6ff76048b54240489d683fa03750aba03000000e91b0100008b7f045657eb69ff34248b7c24148b57048b3c2489fe83ff0175068b7c240ceb258b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089f6897704c707030000008b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24108938ff125883c414c3f60424010f859c0000008b34248b3e89f6ff76048b570c89d68b1283fa057507ba03000000eb05ba0100000083fa0374168b7424085a891424897424043b650c7303ff552cebb989f78b3783fe0575488b47048b5c24208b530868105e68b1ff1289c783ff03750b8d64240cba03000000eb3883ff017507be01000000eb048b7424085a891424897424043b650c7303ff552ce968ffffff8d642424b85c5e68b18b5d04ff238d6424045a5e891424897424043b650c7303ff552ce9a9fefffff400|@16438,1,@2616|64,0,2 71,0,1 106,0,1 113,0,@12866 156,0,@16430 201,0,@10071 238,0,@16432 277,0,1 352,0,1 431,0,1 438,0,0 489,0,@16434 507,0,1 519,0,0 555,0,@16436 7436:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@16435,1,@2615|11,0,2 7437:D3,576|3b650c7305ff552ccd0989da508b3c24ff378b3c248b470cff1289c7f7c7010000000f85f60000008b3f8b3783fe010f85db0000008b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b5424048916568b7424048b760c8b76048b0e89ca83f905750e8d64240cb8508f67b18b5d04ff2383fa01751b8b76088b1683fa0375078b76048b36eb038b760483fe03750ceb6b8b76048b3683fe037461f7c701000000754b8b3f8b3f8b7f0c8b7f048b1789d683fa05750e8d64240cb8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b3feb038b7f04eb058b7f048b3f83ff037413e93d0100008d64240cb8648e66b18b5d04ff238b3c24e98a0000008d642408b8e45d68b18b5d04ff238b4d008d49f43b4d087303ff5528894d00c741fc02000000c74104010000008b7c240489398b54240c5f8b7f0c8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706010000008b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7c2404897c240883c408ff22f7c7010000000f85910000008b178b77048b128b520c8b4a0489cb8b0183f80375248b490c83f9037507b903000000eb05b90100000083f903750b8b5304c70203000000eb3289d98b0383f80175408b5b088b1b83fb037507bb03000000eb05bb0100000083fb03751f89ca8b52088b5204c7020300000089f73b650c7305ff552ccd80e977ffffff8d64240ceb048d64240cb8c85e68b18b5d04ff2359e906fffffff40000|@16442,1,@2617|116,0,@13866 199,0,@13866 255,0,@11149 277,0,@16432 313,0,0 362,0,0 453,0,1 460,0,0 474,0,1 500,0,1 507,0,0 526,0,1 558,0,@16439 7438:D3,1136|3b650c7305ff552ccd0d5253e83f98f9ff89c68b1689d783fa03750c8d642408b803000000c2040089fa83ff01750c8d642408b803000000c2040089d783fa09750e8d642408b8a85f68b18b5d04ff2389fa83ff0775128b4604e82504000089c7576a05e99403000089d783fa0b0f8511020000ff76048b7e0c8b570c89d68b5a0489d98b1b83fb03752d89ca8b52048b4c24088b49143bd17507ba03000000eb05ba0100000083fa03750c8d64240cb803000000c2040089f28b76048b3683fe0575758b7a048b3783fe05755d8b4704ff77088b5c2404e8678fecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70304273db16a016a01548b44240ce88891f9ff588d64240c8b5424045b8d6424048b74240489742404e9d5feffff8d64240cb8a48b67b18b5d04ff2389d68b5a0489d98b1b83fb0375288b49048b5c24088b5b103bcb7507b903000000eb05b90100000083f90375098d64240ce90e0100008b5a0489d98b1b83fb0375268b49048b5c24088b5b0c3bcb7507b903000000eb05b90100000083f9037507ba03000000eb618b5a0489d98b1b83fb0375268b49048b5c24088b5b083bcb7507b903000000eb05b90100000083f9037507ba03000000eb2f8b5a0489d98b1b83fb03751e89ca8b52048b4c24088b49043bd17507ba03000000eb05ba01000000eb05ba0100000083fa03747289f08b76048b0e89ca83f905750e8d64240cb8508f67b18b5d04ff2383fa01751b8b76088b1683fa0375078b76048b36eb038b760483fe03750ceb2c8b76048b3683fe0374228b542404ff1289c783ff03750c8d64240cb803000000c20400ff342457e91f010000ff34246a05e9a60000008d64240cb805000000c2040083ff05750c8d642408b803000000c204008b7e048b76088b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883e60983fe01740c8d642408b805000000c20400ff378b3c248b3f83ff0775308b542410ff1289c783ff03750c8d64240cb803000000c204008b542408585b8d6424048b74240489742404e9f5fcffff8d64240c8b5424048b3c24897c240483c404ff22f64424040175618b7c24048b0789ffff77048b5424148b7c241c578b5c2414e8bdfcffff89c783ff0575155e8b1424891424897424043b650c7303ff552cebc083ff0175175eba01000000891424897424043b650c7303ff552ceba48d642418b803000000c204005883c410c20400f64424040175618b7c24048b0789ffff77048b5424148b7c241c578b5c2414e84efcffff89c783ff0575155e8b1424891424897424043b650c7303ff552cebc083ff0175175eba01000000891424897424043b650c7303ff552ceba48d642418b803000000c204005883c410c20400f64424040175618b7c24048b0789ffff77048b5424108b7c2418578b5c2410e8dffbffff89c783ff0575155e8b1424891424897424043b650c7303ff552cebc083ff0175175eba01000000891424897424043b650c7303ff552ceba48d642414b803000000c204005883c40cc20400f4000000|@16448,1,@2621|13,1,@6635 33,0,1 52,0,1 71,0,@16445 91,1,@7439 156,0,1 163,0,0 177,0,1 217,1,@5210 254,0,@7440 268,1,@6630 304,0,@13837 342,0,1 349,0,0 394,0,1 401,0,0 411,0,1 444,0,1 451,0,0 461,0,1 496,0,1 503,0,0 510,0,0 538,0,@13866 607,0,1 638,0,2 655,0,1 712,0,2 749,0,1 870,0,0 896,0,1 981,0,0 1007,0,1 1092,0,0 1118,0,1 7439:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@2619|69,0,0 7440:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2620|81,0,0 91,0,0 7441:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b8206068b1c389d783fa037d06b8b4ab66b1c383fe037506b8906068b1c383ff037d06b8b4ab66b1c3b8fc6068b1c3f400|@11347,1,@2622|21,0,@11331 36,0,@16450 49,0,@11331 60,0,@16457 71,0,@11331 77,0,@16464 7442:D3,44|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b7f048b5708588d642404ff22f40000|@16471,1,@2623| 7443:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@2624| 7444:D3,248|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700ac293db1ff128b3c24ff37be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c240c8b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700fc293db1ff128b3c24ff378b7c24108b7f048b5724b801000000ff1289c383fb0175065b83c404eb0e8b0424e8cf00000089c38d64240883fb0175055883c408c35883c408e91a010000f400|@16473,1,@2629|12,0,0 86,0,@7445 98,0,0 172,0,@7446 194,0,0 217,1,@7447 242,1,@7448 7445:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2625|53,0,0 7446:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2626|53,0,0 7447:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2627| 7448:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2628| 7449:D3,44|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b7f048b570c588d642404ff22f40000|@16474,1,@2630| 7450:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2631| 7451:D3,132|3b650c7305ff552ccd01a801756d8b388b40048b7f0c8b7f048b1789d683fa05750ab8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b3feb038b7f04eb058b7f048b3f57e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2632|35,0,@13866 124,0,0 7452:D3,144|3b650c7305ff552ccd0d89c789d05753be010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc01000040893757ff7004ff7008ff700cff7010ff70148b78188b701c8b50208b48248b58288b402cff742414ff742414ff742414ff742414ff742414ff7424145756525153508b44244c8b5c2448e8260000008d6424148b3c248b078d64240cc3f4000000|@16513,1,@2668|17,0,0 122,1,@7453 7453:D3,13332|8d7c24b03b7d0c7305ff5530cd0950538b442404e87f8df9ff89c7578b442404e8738df9ff89c7578b7c24048b3f83ff0b75418b7c24048b7f0c8b7f0c8b570489d68b1283fa03751b89f78b7f048b7424383bfe7507bf03000000eb05bf01000000eb05bf0100000083ff0375068d642410eb4a8b3c248b3f83ff0b75488b3c248b7f0c8b7f0c8b570489d68b1283fa03751b89f78b7f048b7424383bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037402eb0c8d642410b801000000c230008b7c24048b3f83ff01750c8d642410b801000000c230008b3c248b3f83ff01750c8d642410b801000000c230008b7c24048b3f83ff0d0f85690800008b3c248b3f83ff0d0f855b0800008b7c2404ff77048b7c24088b7f088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b14248916568b742408ff76048b74240c8b56088b75008d76f43b75087305ff5528cd84897500c746fc020000008956048b14248916568b74240cff368b7424103b742408750c8d642424b801000000c2300083e70583ff010f84c90000008d642404ff3424ff742418ff742424ff742424ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b5424608b4c245c8b5c24588b4424548b742450894424488b44242c895c244c8b5c2428894c2450895424548b3c24897c24588b7c2404897c245c8b7c2408897c24608b7c240c897c24648b7c2410897c24688b7c2414897c246c8b7c2418897c2470c7442474406368b18b7c241c897c24788b7c2420897c247c8b7c242489bc24800000008974244483c444e9c93100008d6424348b7c2408ff378b7c24048b3f83ff070f851b0200008b3c248b3f83ff070f850d0200008b7c24048b77048b7c24048b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24048b77048b7c24048b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c2414c707cc5366b18b7c241cc707cc5366b1ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff742424ff74242468406368b1ff742420ff742420ff742420ff742420ff742420ff7424205756525153508b4424588b5c2454e89642000089c78d64242857ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742438ff742438ff74241c68406368b1ff742420ff742420ff742420ff742420ff7424205756525153508b4424588b5c2454e85b3000008d642424ff3424ff74240cff74241cff74241cff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b5424588b4c24548b5c24508b44244c8b742448894424408b44242c895c24448b5c2428894c24488954244c8b3c24897c24508b7c2404897c24548b7c2408897c24588b7c240c897c245c8b7c2410897c24608b7c2414897c24648b7c2418897c2468c744246c406368b18b7c241c897c24708b7c2420897c24748b7c2424897c24788974243c83c43ce9992f00008d64243c8b7c24048b3f83ff090f85ae0200008b3c248b3f83ff090f85a00200008b7c24048b5f045f8d6424048b4704e82852000089c183f90175718d6424188b75008d76ec3b75087303ff5528897500c746fc04000000c7460c8c6768b15f897e085f897e04c706010000008b7c24308b3ff7c7010000007508b801000000c230008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008b7c2404c707cc5366b18b7c240cc707cc5366b1f6c10175538b790483ff017507bf03000000eb05bf0100000083ff03753a8b118b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b000000eb78bfcc5366b18b55008d52f83b55087305ff5528cd82895500c742fc01000040893abf1f4e00008d34fdf9ffffff8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000897708895704c7070d0000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c70609000000893257ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742438ff742438ff74241c68406368b1ff742420ff742420ff742420ff742420ff7424205756525153508b4424588b5c2454e89f2d00008d642420ff742404ff742410ff742420ff742420ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b54245c8b4c24588b5c24548b4424508b74244c894424448b44242c895c24488b5c2428894c244c895424508b3c24897c24548b7c2404897c24588b7c2408897c245c8b7c240c897c24608b7c2410897c24648b7c2414897c24688b7c2418897c246cc7442470406368b18b7c241c897c24748b7c2420897c24788b7c2424897c247c8974244083c440e9dc2c00008d6424308b7c24048b3f83ff030f85c60000008d642410ff3424ff74240cff74241cff74241cff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b5424588b4c24548b5c24508b44244c8b742448894424408b44242c895c24448b5c2428894c24488954244c8b3c24897c24508b7c2404897c24548b7c2408897c24588b7c240c897c245c8b7c2410897c24608b7c2414897c24648b7c2418897c2468c744246c406368b18b7c241c897c24708b7c2420897c24748b7c2424897c24788974243c83c43ce9072c00008d6424345f8b3f83ff030f85c90000008d642404ff3424ff742418ff742424ff742424ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b5424608b4c245c8b5c24588b4424548b742450894424488b44242c895c244c8b5c2428894c2450895424548b3c24897c24588b7c2404897c245c8b7c2408897c24608b7c240c897c24648b7c2410897c24688b7c2414897c246c8b7c2418897c2470c7442474406368b18b7c241c897c24788b7c2420897c247c8b7c242489bc24800000008974244483c444e9322b00008d6424348d64241c8b75008d76ec3b75087303ff5528897500c746fc04000000c7460cb06768b15f897e085f897e04c706010000008b7c24308b3ff7c7010000007508b801000000c230008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008b7c24048b3f83ff0d0f85520600008b7c24048b7f048b7424048b76088b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5283e60583fe017405e9e00000008b3f8b3f83ff097507bf03000000eb05bf0100000083ff030f84c2000000ff3424ff742408ff742418ff742418ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b5424548b4c24508b5c244c8b4424488b7424448944243c8b44242c895c24408b5c2428894c2444895424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c2464c7442468406368b18b7c241c897c246c8b7c2420897c24708b7c2424897c24748974243883c438e9972900008d6424388b7c24048b3f83ff0b0f85660400008b7c24048b5f048b7c24048b7f0c8b770c89f28b460489c18b0083f803752389ce8b76048b4c243c3bf17507be03000000eb05be0100000083fe037505e92301000089d68b52048b1283fa057507ba03000000eb05ba0100000083f20283fa030f84ff0000008d64240889f78b7f048b3783fe050f85dd0000008b4704ff7708e8637aecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70314853db16a016a01548b44240ce8847cf9ff588d642408e83282f9ff89c7ff342457ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7424448b5424408b4c243c8b5c24388b442434894424348b442420895c24388b5c241c894c243c89542440897424448b3c24897c24488b7c2404897c244c8b7c2408897c24508b7c240c897c24548b7c2410897c24588b7c2414897c245c8b7c2418897c246083c430e909f4ffff8d6424288d64240cb8a48b67b18b5d04ff238b7c24048b3f83ff0b0f85300200008b7c2404ff77048b7c24088b7f0c8b770c89f28b5e0489d98b1b83fb03752789ce8b76048b4c24403bf17507be03000000eb05be0100000083fe0375098d642404e92801000089d68b52048b1283fa057507ba03000000eb05ba0100000083f20283fa030f840001000089f78b7f048b3783fe050f85e20000008b4704ff77088b5c2404e8eb78ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703ac853db16a016a01548b44240ce80c7bf9ff588d64240ce8ba80f9ff89c7ff74240857ff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b74244c8b5424488b4c24448b5c24408b44243c8944243c8b442420895c24408b5c241c894c2444895424488974244c8b3c24897c24508b7c2404897c24548b7c2408897c24588b7c240c897c245c8b7c2410897c24608b7c2414897c24648b7c2418897c246883c438e990f2ffff8d6424248d642418b8a48b67b18b5d04ff238d642404ff3424ff742408ff742418ff742418ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b5424548b4c24508b5c244c8b4424488b7424448944243c8b44242c895c24408b5c2428894c2444895424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c2464c7442468406368b18b7c241c897c246c8b7c2420897c24708b7c2424897c24748974243883c438e9e42500008d642438ff3424ff742408ff742418ff742418ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b5424548b4c24508b5c244c8b4424488b7424448944243c8b44242c895c24408b5c2428894c2444895424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c2464c7442468406368b18b7c241c897c246c8b7c2420897c24708b7c2424897c24748974243883c438e9222500008d642438ff3424ff742408ff742418ff742418ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b5424548b4c24508b5c244c8b4424488b7424448944243c8b44242c895c24408b5c2428894c2444895424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c2464c7442468406368b18b7c241c897c246c8b7c2420897c24708b7c2424897c24748974243883c438e9602400008d6424388b3c248b3f83ff0d0f855e0600008b3c248b7f048b34248b760883e60583fe017405e9ac0100008b3f8b3f83ff097507bf03000000eb05bf0100000083ff030f848e0100008b3c248b3f83ff0d0f85e90000008b3c248b77045f8b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742404ff742410ff742410ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b54244c8b4c24488b5c24448b4424408b74243c894424348b44242c895c24388b5c2428894c243c895424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245cc7442460406368b18b7c241c897c24648b7c2420897c24688b7c2424897c246c8974243083c430e9242300008d64243cff742404ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e965eeffff8d64242c8b7c24048b3f83ff0b0f85fc0200008b7c2404ff77048b7c24088b7f0c8b770c89f28b5e0489d98b1b83fb03752789ce8b76048b4c243c3bf17507be03000000eb05be0100000083fe0375098d642404e92801000089d68b52048b1283fa057507ba03000000eb05ba0100000083f20283fa030f840001000089f78b7f048b3783fe050f85e20000008b4704ff77088b5c2404e85573ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70344863db16a016a01548b44240ce87675f9ff588d64240ce8247bf9ff89c757ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e9faecffff8d6424288d642414b8a48b67b18b5d04ff238d6424048b3c248b3f83ff0d0f85e90000008b3c248b77045f8b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742404ff742410ff742410ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b54244c8b4c24488b5c24448b4424408b74243c894424348b44242c895c24388b5c2428894c243c895424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245cc7442460406368b18b7c241c897c24648b7c2420897c24688b7c2424897c246c8974243083c430e9192000008d64243cff742404ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e95aebffff8d64242c8b3c248b3f83ff0d0f85e90000008b3c248b77045f8b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742404ff742410ff742410ff74244cff74244cff74244cff74244cff74244cff74244cff74244cff74244c8b54244c8b4c24488b5c24448b4424408b74243c894424348b44242c895c24388b5c2428894c243c895424408b3c24897c24448b7c2404897c24488b7c2408897c244c8b7c240c897c24508b7c2410897c24548b7c2414897c24588b7c2418897c245cc7442460406368b18b7c241c897c24648b7c2420897c24688b7c2424897c246c8974243083c430e98b1e00008d64243cff742404ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e9cce9ffff8d64242c8b7c24048b3f83ff0b0f851b0500008b3c248b3f83ff0b0f850d0500008b7c2404ff77048b7c2408ff770c8b7c2408ff77048b7c240cff770c8b7c24088b7f0c8b570489d68b1283fa03752789f78b7f048b7424483bfe7507bf03000000eb05bf0100000083ff0375098d642420e9af0400008b3c248b770c89f28b5e0489d98b1b83fb03751b89ce8b76048b4c24483bf17507be03000000eb05be01000000eb05be0100000083fe030f846e0400008b7424088b760c8b76048b3683fe050f85ff0000008d6424085f8b7f0c8b7f048b3783fe050f85db0000008b4704ff77088b5c2404e86a6eecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703dc863db16a016a01548b44240ce88b70f9ff5f8d64240c57ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e916e8ffff8d6424288d642414b8a48b67b18b5d04ff2389ff89d68b52048b1283fa050f85fb0000008d6424048b7e048b3783fe050f85db0000008b4704ff77088b5c2404e85d6decff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70374873db16a016a01548b44240ce87e6ff9ff5f8d64240cff74240c57ff742450ff742450ff742450ff742450ff742450ff742450ff7424508b7424508b54244c8b4c24488b5c24448b442440894424408b442420895c24448b5c241c894c24488954244c897424508b3c24897c24548b7c2404897c24588b7c2408897c245c8b7c240c897c24608b7c2410897c24648b7c2414897c24688b7c2418897c246c83c43ce909e7ffff8d6424248d64241cb8a48b67b18b5d04ff2389ff89f28b76048b3683fe050f85fb0000008d6424048b7a048b3783fe050f85db0000008b4704ff77088b5c2404e8506cecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7030c883db16a016a01548b44240ce8716ef9ff5f8d64240cff74240c57ff742450ff742450ff742450ff742450ff742450ff742450ff7424508b7424508b54244c8b4c24488b5c24448b442440894424408b442420895c24448b5c241c894c24488954244c897424508b3c24897c24548b7c2404897c24588b7c2408897c245c8b7c240c897c24608b7c2410897c24648b7c2414897c24688b7c2418897c246c83c43ce9fce5ffff8d6424248d64241cb8a48b67b18b5d04ff238b7424088b760c89ff8b5e0489d98b1b83fb0375458b420489c38b0083f8037507b803000000eb05b80100000083f80375288b710489da8b52043bf27507be03000000eb05be0100000083fe0375098d642404e9dc000000eb5089cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe030f84860000008b75008d76e83b75087305ff5528cd80897500c746fc0500000089ff897e108d6424048b7c2404897e0c8b7c240c897e088b7c2410897e04c706030000008b7c244c8b3ff7c701000000750c8d64241cb801000000c230008d64241c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008d642404ff3424ff74240ce9191700008d642420b801000000c230008b7c24048b3f83ff090f85e00200008b3c248b3f83ff0b0f85d20200008b7c2404ff77048b7c24048b7f048b742404ff760c8b34248b760c8b4e0489ca8b0983f903752589d68b76048b5424403bf27507be03000000eb05be0100000083fe037507be03000000eb1f8b34248b760c8b76048b3683fe057507be03000000eb05be0100000083f60283fe030f84fc0000005e8b760c8b76048b1683fa050f85dc0000008d6424088b4604ff760889fbe87669ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703a4883db16a016a01548b44240ce8976bf9ff5f8d642408ff342457ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7424448b5424408b4c243c8b5c24388b442434894424348b442420895c24388b5c241c894c243c89542440897424448b3c24897c24488b7c2404897c244c8b7c2408897c24508b7c240c897c24548b7c2410897c24588b7c2414897c245c8b7c2418897c246083c430e923e3ffff8d6424288d642414b8a48b67b18b5d04ff238b34248b760c8b4e0489ca8b0983f903752a89d68b76048b5424403bf27507be03000000eb05be0100000083fe03750c8d642418b801000000c230008b34248b760c8b76048b3683fe050f85fc0000005e8b760c8b76048b1683fa050f85dc0000008d6424088b4604ff760889fbe82a68ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7033c893db16a016a01548b44240ce84b6af9ff5f8d642408ff342457ff742444ff742444ff742444ff742444ff742444ff742444ff7424448b7424448b5424408b4c243c8b5c24388b442434894424348b442420895c24388b5c241c894c243c89542440897424448b3c24897c24488b7c2404897c244c8b7c2408897c24508b7c240c897c24548b7c2410897c24588b7c2414897c245c8b7c2418897c246083c430e9d7e1ffff8d6424288d642414b8a48b67b18b5d04ff23f7c70100000074098b7c2404e93d130000e9df0e00008b7c24048b3f83ff0b0f85960100008b3c248b3f83ff090f85880100008b7c24048b7f048b742404ff760c8b742404ff76048b7424048b760c8b4e0489ca8b0983f903752589d68b76048b5424403bf27507be03000000eb05be0100000083fe037507be03000000eb208b7424048b760c8b76048b3683fe057507be03000000eb05be0100000083f60283fe030f84fd0000008d6424045e8b760c8b76048b1683fa050f85d90000008b4604ff760889fbe88566ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703d4893db16a016a01548b44240ce8a668f9ff5f8d64240857ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e931e0ffff8d6424288d642410b8a48b67b18b5d04ff23f7c70100000074088b3c24e9590c0000e9f10700008b7c24048b3f83ff0975188b3c248b3f83ff09750e8d642410b8cc6768b18b5d04ff238b7c24048b3f83ff0b0f85d90100008b7c2404ff77048b7c24088b7f0c8b570c89d68b5a0489d98b1b83fb03752589ca8b52048b4c243c3bd17507ba03000000eb05ba0100000083fa037507be03000000eb198b76048b3683fe057507be03000000eb05be0100000083f60283fe030f84fa0000008b7f0c8b7f048b3783fe050f85db0000008b4704ff77088b5c2404e8de64ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7036c8a3db16a016a01548b44240ce8ff66f9ff5f8d64240c57ff742404ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e98adeffff8d6424288d642414b8a48b67b18b5d04ff238d6424048b75008d76ec3b75087303ff5528897500c746fc04000000c7460cb06768b15f897e085f897e04c706010000008b7c24388b3ff7c701000000750c8d642408b801000000c230008d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008b3c248b3f83ff0b0f85230300008b3c24ff77048b7c24048b7f0c8b570c89d68b5a0489d98b1b83fb03752589ca8b52048b4c243c3bd17507ba03000000eb05ba0100000083fa037507be03000000eb198b76048b3683fe057507be03000000eb05be0100000083f60283fe030f84fa0000008b7f0c8b7f048b3783fe050f85db0000008b4704ff77088b5c2404e8f862ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703048b3db16a016a01548b44240ce81965f9ff5f8d64240cff74240457ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e9a4dcffff8d6424248d642414b8a48b67b18b5d04ff238b770c89f28b5e0489d98b1b83fb03752a89ce8b76048b4c243c3bf17507be03000000eb05be0100000083fe03750c8d642414b801000000c2300089d68b52048b1283fa050f85f900000089f78b7f048b3783fe050f85db0000008b4704ff77088b5c2404e8b461ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7039c8b3db16a016a01548b44240ce8d563f9ff5f8d64240cff74240457ff742448ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e960dbffff8d6424248d642414b8a48b67b18b5d04ff238d6424048b75008d76ec3b75087303ff5528897500c746fc04000000c7460cb06768b18b7c2404897e085f8d642404897e04c706010000008b7c24388b3ff7c701000000750c8d642408b801000000c230008d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008b7c24048b3f83ff050f85200100008b3c248b3f83ff050f85120100008b7c2404ff77048b7c2408ff77088b7c2408ff77048b7c240cff7708ff742450ff742450ff742450ff742450ff742450ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b44243cff742414ff742414ff742414ff742414ff742414ff7424145756525153508b4424548b5c244ce83adaffff8d642418ff742408ff742404ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7424588b5424548b4c24508b5c244c8b442448894424488b442420895c244c8b5c241c894c245089542454897424588b3c24897c245c8b7c2404897c24608b7c2408897c24648b7c240c897c24688b7c2410897c246c8b7c2414897c24708b7c2418897c247483c444e9a3d9ffff8d64243c8b7c24048b3f83ff0375168b3c248b3f83ff03750c8d642410b801000000c230008b7c24048b3f83ff070f85e10000008b3c248b3f83ff070f85d30000008b7c24048b77048b7c24048b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24048b77048b7c24048b57088b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742448ff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742424ff74242468406368b1ff742420ff742420ff742420ff742420ff742420ff7424205756525153508b4424588b5c2454e8911e00008d642428b80100000083c408c230008b75008d76ec3b75087303ff5528897500c746fc04000000c7460cb06768b15f897e085f897e04c706010000008b7c24388b3ff7c701000000750c8d642408b801000000c230008d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008b7c243cff378b7c240483ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff03752b8d6424048b7c24388b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e90d0200008b3c2483ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755689ca8b4a048b5424383bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7424308b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9990100008b3c24eb1189f73b650c7305ff552ccd80e979ffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755689ca8b4a048b5424303bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7424288b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9120100008b3c24eb1189f73b650c7305ff552ccd80e979ffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755489ca8b4a048b5424283bd17507ba03000000eb05ba0100000083fa037536bf0300000083ff0375298d6424048b7424208b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98b0000005feb1189f73b650c7305ff552ccd80e97bffffff83ff017507bf01000000eb3f8b178b77048b520c8b5a0489d98b1b83fb030f858901000089ca8b4a048b54241c3bd17507ba03000000eb05ba0100000083fa030f8567010000bf0300000083ff0375228b7424188b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85b10000008b178b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b0000008b75008d76e83b75087305ff5528cd84897500c746fc050000008956105a89560c897e088b7c2404897e04c706030000008b7c24408b3ff7c701000000750c8d642410b801000000c230008d6424108b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008d6424048b75008d76ec3b75087303ff5528897500c746fc04000000c7460c246868b15f897e085f897e04c706010000008b7c24388b3ff7c701000000750c8d642408b801000000c230008d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c2300089f73b650c7305ff552ccd80e942feffff83ff01750abf01000000e9c20000008b17ff77048b7424088b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642404eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e938ffffff8d642404bf0300000083ff030f85c3faffff8d642418b801000000c230008b7c243cff378b7c240883ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff0375278b7c243c8b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9070200008b7c240483ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755389ca8b4a048b5424383bd17507ba03000000eb05ba0100000083fa037535bf0300000083ff0375258b7424348b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9960100008b7c2404eb1189f73b650c7305ff552ccd80e97cffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755389ca8b4a048b5424303bd17507ba03000000eb05ba0100000083fa037535bf0300000083ff0375258b74242c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9120100008b7c2404eb1189f73b650c7305ff552ccd80e97cffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755389ca8b4a048b5424283bd17507ba03000000eb05ba0100000083fa037535bf0300000083ff0375258b7424248b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98e0000008b7c2404eb1189f73b650c7305ff552ccd80e97cffffff83ff017507bf01000000eb3f8b178b77048b520c8b5a0489d98b1b83fb030f858901000089ca8b4a048b5424203bd17507ba03000000eb05ba0100000083fa030f8567010000bf0300000083ff0375228b74241c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85b10000008b178b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b0000008b75008d76e83b75087305ff5528cd84897500c746fc0500000059894e1089560c8b542404895608897e04c706030000008b7c24448b3ff7c701000000750c8d642414b801000000c230008d6424148b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008d6424088b75008d76ec3b75087303ff5528897500c746fc04000000c7460c246868b15f897e085f897e04c706010000008b7c24388b3ff7c701000000750c8d642408b801000000c230008d6424088b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c2300089f73b650c7305ff552ccd80e942feffff83ff01750abf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642404eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e938ffffff8d642404bf0300000083ff030f85cdfaffff8d642418b801000000c23000f60424010f85120100008b3c24ff378b7c2404ff7704f644240c010f858a0000008b7c240cff378b7c2410ff7704ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff742414ff742414ff742414ff742414ff742414ff7424145756525153508b4424548b5c244ce808cdffff8d6424185e8d6424045a8d642404891424897424043b650c7303ff552ce955ffffff8d6424248b75008d76ec3b75087303ff5528897500c746fc04000000c7460c4c6868b15f897e085f897e04c706010000008b7c24308b3ff7c7010000007508b801000000c230008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c230008d6424045f83ff01750c8d64241cb801000000c230008d6424148b75008d76ec3b75087303ff5528897500c746fc04000000c7460c4c6868b15f897e085f897e04c706010000008b7c24308b3ff7c7010000007508b801000000c230008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742430893eb801000000c23000f400|@16512,1,@2667|21,1,@6635 33,1,@6635 87,0,1 94,0,0 101,0,0 161,0,1 168,0,0 175,0,0 191,0,0 214,0,0 236,0,0 391,0,0 564,0,@16478 603,1,@7454 744,0,@10423 754,0,@10423 815,0,@16478 858,1,@7471 930,0,@16478 969,1,@7454 1127,0,@16478 1163,1,@7454 1216,1,@7474 1258,0,@16505 1272,0,0 1291,0,0 1333,0,0 1346,0,@10423 1356,0,@10423 1374,0,1 1381,0,0 1423,0,0 1436,0,0 1442,0,5 1449,0,@10423 1482,0,9999 1527,0,6 1562,0,4 1630,0,@16478 1669,1,@7454 1828,0,@16478 1864,1,@7454 2041,0,@16478 2077,1,@7454 2251,0,@16478 2290,1,@7454 2329,0,@16506 2343,0,0 2362,0,0 2404,0,0 2495,0,1 2502,0,0 2665,0,@16478 2701,1,@7454 2769,0,1 2776,0,0 2803,0,1 2810,0,0 2853,1,@5210 2890,0,@7475 2904,1,@6630 2914,1,@6635 3072,0,@13837 3141,0,1 3148,0,0 3179,0,1 3186,0,0 3229,1,@5210 3266,0,@7476 3280,1,@6630 3290,1,@6635 3449,0,@13837 3612,0,@16478 3648,1,@7454 3806,0,@16478 3842,1,@7454 4000,0,@16478 4036,1,@7454 4093,0,1 4100,0,0 4316,0,@16478 4352,1,@7454 4571,0,1 4578,0,0 4609,0,1 4616,0,0 4659,1,@5210 4696,0,@7477 4710,1,@6630 4720,1,@6635 4879,0,@13837 5095,0,@16478 5131,1,@7454 5493,0,@16478 5529,1,@7454 5778,0,1 5785,0,0 5837,0,1 5844,0,0 5851,0,0 5918,1,@5210 5955,0,@7478 5969,1,@6630 6131,0,@13837 6187,1,@5210 6224,0,@7479 6238,1,@6630 6400,0,@13837 6456,1,@5210 6493,0,@7480 6507,1,@6630 6669,0,@13837 6712,0,1 6719,0,0 6741,0,1 6748,0,0 6790,0,1 6797,0,0 6821,0,1 6828,0,0 6835,0,0 6906,0,1 6929,0,0 6975,0,0 7003,0,0 7092,0,1 7099,0,0 7109,0,1 7132,0,1 7139,0,0 7186,1,@5210 7223,0,@7481 7237,1,@6630 7398,0,@13837 7439,0,1 7446,0,0 7460,0,0 7518,1,@5210 7555,0,@7482 7569,1,@6630 7730,0,@13837 7844,0,1 7851,0,0 7861,0,1 7885,0,1 7892,0,0 7939,1,@5210 7976,0,@7483 7990,1,@6630 8152,0,@13837 8208,0,@16507 8277,0,1 8284,0,0 8294,0,1 8311,0,1 8318,0,0 8362,1,@5210 8399,0,@7484 8413,1,@6630 8575,0,@13837 8615,0,@16506 8629,0,0 8652,0,0 8698,0,0 8763,0,1 8770,0,0 8780,0,1 8797,0,1 8804,0,0 8848,1,@5210 8885,0,@7485 8899,1,@6630 9061,0,@13837 9101,0,1 9108,0,0 9122,0,0 9172,1,@5210 9209,0,@7486 9223,1,@6630 9385,0,@13837 9425,0,@16506 9446,0,0 9469,0,0 9515,0,0 9851,0,0 10036,0,@16478 10079,1,@7471 10088,0,0 10125,0,@16506 10139,0,0 10162,0,0 10208,0,0 10235,0,0 10284,0,1 10291,0,0 10313,0,1 10320,0,0 10357,0,1 10364,0,0 10388,0,1 10395,0,0 10402,0,0 10434,0,1 10495,0,0 10535,0,1 10542,0,0 10552,0,1 10630,0,0 10670,0,1 10677,0,0 10687,0,1 10765,0,0 10805,0,1 10812,0,0 10822,0,1 10898,0,0 10942,0,1 10949,0,0 10963,0,1 11007,0,0 11056,0,0 11069,0,0 11075,0,5 11124,0,1 11147,0,0 11193,0,0 11231,0,@16510 11245,0,0 11268,0,0 11314,0,0 11344,0,0 11393,0,1 11400,0,0 11422,0,1 11429,0,0 11466,0,1 11473,0,0 11497,0,1 11504,0,0 11511,0,0 11543,0,1 11561,0,0 11588,0,0 11637,0,1 11644,0,0 11666,0,1 11673,0,0 11710,0,1 11717,0,0 11741,0,1 11748,0,0 11755,0,0 11787,0,1 11845,0,0 11885,0,1 11892,0,0 11902,0,1 11977,0,0 12017,0,1 12024,0,0 12034,0,1 12109,0,0 12149,0,1 12156,0,0 12166,0,1 12241,0,0 12285,0,1 12292,0,0 12306,0,1 12350,0,0 12399,0,0 12412,0,0 12418,0,5 12467,0,1 12490,0,0 12536,0,0 12574,0,@16510 12588,0,0 12611,0,0 12657,0,0 12687,0,0 12736,0,1 12743,0,0 12765,0,1 12772,0,0 12809,0,1 12816,0,0 12840,0,1 12847,0,0 12854,0,0 12886,0,1 12904,0,0 13113,0,@16511 13127,0,0 13146,0,0 13188,0,0 13210,0,0 13248,0,@16511 13262,0,0 13281,0,0 13323,0,0 7454:D3,1040|3b650c7305ff552ccd0950538b7c24048b3fff37ff7424048b0424e85059f9ff89c78b3783fe0b0f85880000008b5f048b770c8b4e0c89ca8b49048b0983f905756d89d78b7f048b3783fe0575538b4704ff7708e80b51ecff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70324653db16a016a01548b44240ce82c53f9ff5e8d6424088934243b650c7303ff552ce977ffffff8d642410b8a48b67b18b5d04ff238d642404eb048d642404578b3c248b3f83ff0d751e8b3c248b7f048b74240c8b363bfe7507bf03000000eb05bf01000000eb05bf01000000578b7c24088b3f83ff097566ff742444ff74244cff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742414ff742414ff742414ff742414ff742414ff7424145756525153508b5424488b4424548b5c2458ff128d64241ceb718b7c24088b3f83ff077566ff742444ff74244cff742448ff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742414ff742414ff742414ff742414ff742414ff7424145756525153508b5424488b4424548b5c2458ff128d64241ceb005f83ff03750c8d642410b801000000c23c008b7c240c8b7f0483e70583ff0174798d6424108b7c243c8b5424388b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c486368b1895608897e04c706010000008b7c24348b3ff7c7010000007508b801000000c23c008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742434893eb801000000c23c008b7c244c8b7424488b542444ff74240c575652b8010000008b5c2410e83702000089c78d64240483ff0375798d64240c8b7c243c8b5424388b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c006468b1895608897e04c706010000008b7c24348b3ff7c7010000007508b801000000c23c008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742434893eb801000000c23c008d6424048b7c24048b7f0483e70983ff010f84950000008b54243468346468b18b442404bbc46468b1ff1289c783ff037507bf03000000eb05bf0100000083ff0375698b7c24448b5424408b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c046568b1895608897e04c706010000008b7c243c8b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74243c893eeb008b7c24048b7f0483e70383ff01741cb8246568b1e8360b000089c28b0424ff1289c2b801000000ff12eb008b7c243c8b3ff7c701000000750c8d642408b801000000c23c008b7c24048b375f8d642404893eb801000000c23c00f4|@16498,1,@2650|28,1,@6635 85,1,@5210 122,0,@7455 136,1,@6630 166,0,@13837 213,0,1 220,0,0 227,0,0 469,0,0 532,0,@16479 544,0,0 563,0,0 605,0,0 632,0,0 641,1,@7456 697,0,@16483 709,0,0 728,0,0 770,0,0 805,0,@16484 814,0,@16487 828,0,1 835,0,0 881,0,@16489 893,0,0 965,0,@16490 970,1,@7465 984,0,0 1011,0,0 1032,0,0 7455:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2634|81,0,0 91,0,0 7456:D3,1044|3b650c7305ff552ccd0983f8010f85f603000089d8e89a54f9ff89c68b1689d783fa07752d8b46048b7424108b54240c8b4c24088b5c2404895c2404bb7c6368b1894c24088954240c89742410e9d603000089fa83ff0575648b5e04ff76088b7c24148b7424108b54240c8b4c240857565251b801000000e883ffffff89c783ff03750c8d642404b803000000c21000588b7424108b54240c8b4c24088b5c2404895c240489c3b801000000894c24088954240c89742410e943ffffff89d783fa0b0f85cc0000008b46048b7e0c8b570c89d68b52048b1283fa050f858900000089f78b77048b3e83ff0575738b7e04ff760889c389f8e8ac4becff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703786a3db16a016a01548b44240ce8cd4df9ff588d6424088b7424108b54240c8b4c24088b5c2404895c240489c3b801000000894c24088954240c89742410e9a0feffffb8a48b67b18b5d04ff238b7424108b54240c8b4c24088b5c2404895c2404bb7c6368b1894c24088954240c89742410e9c003000083ff0d0f85640200008b7e048b76088b5424108b5a04c1eb0383cb01f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489d9eb10b8b02f66b15756e870f8e8ff5e5f89c1f6c1010f840e02000089f3c1eb0383cb01f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489daeb12b8b02f66b1575651e82ef8e8ff595e5f89c2f6c2010f84c10100003bca7d0489caeb00ff3789f3c1eb0383cb01f6c301740783fb017d12eb140fb64bff8d0c4d0100000083f923740489d9eb12b8b02f66b1575652e8e1f7e8ff5a5e5f89c1f6c1010f84660100003bca0f841201000089f183e10583f901746c8b7424108b4c240c8b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c846368b1894a08897204c702010000008b7424088b36f7c6010000007502eb228b75008d76f83b75087305ff5528cd84897500c746fc0100000089168b5424088932e99a00000089f183e10983f9017507bb03000000eb05bb0100000083f30283e60383fe017507be03000000eb05be0100000083f602b8cc5366b18b4d008d49f83b4d087305ff5528cdcd894d00c741fc0100004089018d14d5f9ffffff83fb037507bb09000000eb05bb010000000bd30bd68b75008d76f03b75087305ff5528cd86897500c746fc03000000895608894e04c7060d0000008b142489118937eb008b7424148b363bfe7507bf03000000eb05bf01000000578b4424048b7424188b5424148b4c24108b5c240c895c240c89c38b0424894c2410895424148974241883c408e925fcffff8d6424088d642404b8d02f66b18b5d04ff23b8d02f66b18b5d04ff23b8d02f66b18b5d04ff23b801000000c21000b803000000c21000f40000|@16482,1,@2638|22,1,@6635 61,0,@16480 78,1,@7457 116,0,0 137,0,1 168,0,0 248,1,@5210 285,0,@7458 299,1,@6630 331,0,0 353,0,@13837 383,0,@16480 400,1,@7459 465,0,@9958 472,1,@4895 530,0,@9958 538,1,@4895 607,0,@9958 615,1,@4895 688,0,@16481 700,0,0 770,0,1 777,0,0 793,0,1 800,0,0 808,0,@10423 853,0,4 860,0,0 902,0,6 926,0,1 933,0,0 996,0,@9960 1006,0,@9960 1016,0,@9960 1026,0,0 1034,0,1 7457:D3,128|3b650c7305ff552ccd0953a8017564ff308b40048b7c24188b7424148b5424108b4c240c575652518b5c2414e8cfffffff89c78b34248b46048d642404ff3424578b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188b5424048974241c83c40cff228d64240c8d642404b801000000c21000f4|@11273,1,@2635|120,0,0 7458:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2636|81,0,0 91,0,0 7459:D3,124|3b650c7305ff552ccd0953a801755fff308b40048b7c24188b7424148b5424108b4c240c575652518b5c2414e8cfffffff89c7ff742404578b4424088b7424208b54241c8b4c24188b5c2414895c241489c38b0424894c24188954241c8b5424048974242083c410ff228d6424108d642404b801000000c21000f400|@11273,1,@2637|115,0,0 7460:D3,436|3b650c7305ff552ccd0189c18b710489f783e60983fe017406b805000000c389fb83e70583ff017406b803000000c3c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0eb8b02f66b151e808f4e8ff5989c7f7c7010000000f84370100008b710483e60383fe017507be03000000eb05be0100000083f602bbcc5366b18b55008d52f83b55087305ff5528cdca895500c742fc01000040891a528d3cfdf9ffffff83cf090bfe8b55008d52f03b55087305ff5528cd82895500c742fc03000000897a088b3c2489fe897a04c7020d0000008b3989fb8b3f89d989118b1783fa090f85a10000008b4704e8c900000089c6f7c6010000000f85810000008b168b7e0483ff0175458b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b0000008b3424893e8d642404b805000000c38b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b3424893e8d642404b805000000c38d642404b803000000c389f6893e8d642404b805000000c3b8d02f66b18b5d04ff23f4000000|@16486,1,@2640|26,0,2 42,0,1 86,0,@9958 92,1,@4895 123,0,1 130,0,0 138,0,@10423 222,0,6 251,1,@7461 310,0,0 323,0,0 329,0,5 343,0,2 379,0,4 393,0,2 403,0,1 417,0,2 423,0,@9960 7461:D3,168|3b650c7305ff552ccd01a8010f858c000000ff308b40048b3c248b7f0c8b7f048b1789d683fa05750e8d642404b8508f67b18b5d04ff2383fe0175218b7f088b3783fe0375078b7f048b3feb038b7f0483ff037502eb198d642404eb0e8b7f048b3f83ff0374098d642404e990ffffffe88bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@16485,1,@2639|46,0,@13866 159,0,0 7462:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@16488,1,@2641|11,0,1 7463:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700946e3db1c3f4000000|@16492,1,@2643|43,0,@7464 7464:D3,348|3b650c7305ff552ccd058b7a0489fe8b3f83ff0d0f853901000089f7ff76048b770889f783e70383ff01740a8d642404b801000000c38b3c248b3f8b1783fa09750a8d642404b801000000c389f3c1eb0383cb01f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489d9eb10b8b02f66b15657e8f4f0e8ff5f5e89c1f6c1010f84b800000089f283e20983fa017507bb03000000eb05bb0100000083f30283e60583fe017507ba03000000eb05ba0100000083f202b8cc5366b18b75008d76f83b75087305ff5528cd8f897500c746fc0100004089068d0ccdf9ffffff83fb037507bb09000000eb05bb010000000bcb83fa037507ba05000000eb05ba010000000bca83c9038b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c7020d0000008b0c2489118d642404893eb801000000c38d642404b8d02f66b18b5d04ff23b801000000c3f40000|@16491,1,@2642|49,0,0 71,0,0 117,0,@9958 124,1,@4895 152,0,1 159,0,0 175,0,1 182,0,0 190,0,@10423 235,0,4 242,0,0 254,0,2 261,0,0 304,0,6 320,0,0 330,0,@9960 340,0,0 7465:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7004c703db1c3f4000000|@16497,1,@2649|43,0,@7466 7466:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008b7204897008897804c70098703db1c3f400|@16496,1,@2648|49,0,@7467 7467:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e918000000f4000000|@16495,1,@2647|24,1,@7468 7468:D3,288|3b650c7305ff552ccd095089d8e89249f9ff89c7578b54240c8b0424ff1289c28b442404ff128b34248b3ebacc703db181c23c0000008d54bafcffe2e933000000909090e932000000909090e931000000909090e954000000909090e974000000909090e973000000909090e9930000009090908d642408c204008d642408c2040089f689f7ff760489ff8b5f088b7c241057e868ffffff5b8d6424048b7424088974240883c404e953ffffff89f68b4e048d6424048b5424088b742404bbb46568b18944240489c889542408893424e95f0000008d642408c2040089f68b4e048d6424048b5424088b742404bbb46568b18944240489c889542408893424e99800000089f68b7e048d6424048b1f8b7424088974240883c404e9e1fefffff4|@16494,1,@2646|14,1,@6635 44,0,@7468 191,0,@16493 209,1,@7469 238,0,@16493 256,1,@7470 7469:D3,84|3b650c7305ff552ccd0953a8017537ff308b40048b7c24108b74240c57568b5c240ce8d9ffffff8b3c248b5f048d6424045a8b742408897424088b3c24897c240483c404ff228d6424048b442404c20800f40000|@11273,1,@2644| 7470:D3,80|3b650c7305ff552ccd0953a8017535ff308b40048b7c24108b74240c57568b5c240ce8d9ffffff8b5424045b8d6424048b742408897424088b3c24897c240483c404ff228d6424048b442404c20800f4|@11273,1,@2645| 7471:D3,1204|3b650c7305ff552ccd09ff30ff7004ff33ff73048b78046a016a018b3783fe01751a8b77048b7f08893424897c2404ff7424048b7b046a016a01eb138b77048b3689f73b650c7305ff552ccd88ebcc8b3783fe0175378b77048b7f08893424897c2404ff7424048b7c240c83ff03751b8b3c2483ff03750ebf010000008b742424e938030000e92e030000eb138b77048b3689f73b650c7305ff552ccd80ebafff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b9c24880000008b842484000000ff742420ff742420ff742420ff742420ff742420ff742420ff742420ff742420ff74242057565251ff7424585350ff7424708b84248c0000008b9c2484000000e8a103000089c78d642424578b7c241083ff0375268d6424048b3c2483ff038d64240475098d642424e9620200008d6424145f83c404e9f10100008b7c240483ff03750d8d64241c8b7c2408e96d0100008b7c24248b3783fe017507bf01000000eb388b77048b168b0a83f903751089d689f73b650c7305ff552ccd80ebd68b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783ff01750e8d64242cb8b07766b18b5d04ff23ff378b7c24208b3783fe017507bf01000000eb388b77048b168b0a83f903751089d689f73b650c7305ff552ccd80ebd68b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783ff01750e8d642430b8b07766b18b5d04ff23ff378b7c24043b3c2475068d642408eb6b8b442408e84f0e000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707010000008b54240489d6893a8b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c707030000008b3424893e8d6424088b45008d40f03b45087303ff5528894500c740fc030000008b7c24248978088b3c248978048d642404c7000700000083c428c23c008b3783fe017507bf01000000eb388b77048b168b0a83f903751089d689f73b650c7305ff552ccd80ebd68b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783ff01750e8d642410b8b07766b18b5d04ff238b378b3c24893e8d6424048b44244483c40cc23c008b3783fe017507bf01000000eb388b77048b168b0a83f903751089d689f73b650c7305ff552ccd80ebd68b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783ff01750e8d642408b8b07766b18b5d04ff238b378b3c24893e8d6424088b44243cc23c00e9e2fcfffff7c60100000075288b4e0489fa83c202710e8d642428b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0be010000008b54241cf6c20175288b5a0489f183c102710e8d642428b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd33bfe7507bf03000000eb05bf0100000083f70283ff030f8579ffffff8b7c24648b5424608b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460cf86668b1895608897e04c706010000008b7c24588b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742458893ebf01000000e97cfcfffff40000|@16503,1,@2653|121,0,0 291,1,@7472 383,0,0 455,0,@10986 478,0,0 550,0,@10986 581,1,@7473 616,0,0 625,0,0 670,0,1 726,0,3 744,0,0 816,0,@10986 854,0,0 926,0,@10986 981,0,@9455 1007,0,0 1035,0,@9455 1065,0,1 1072,0,0 1125,0,@16502 1137,0,0 1192,0,0 7472:D3,3004|8d7c24b03b7d0c7305ff5530cd095053f6442404010f85980900008b7c2404ff378b7c2408ff77048b7c2404ff378b7c2408ff7704f6442410010f85870700008b7c2410ff378b7c2414ff77048b7c2404ff378b7c2408ff77048b7c24148b3f8d3c7d010000008b7424048b368d3475010000003bfe0f85ba0000008b7c24143b7c24047502eb3a8b7c24148b3f8d3c7d010000008b7424048b368d3475010000003bfe75238b7c24048b0f8b7c24148d77048b7c24048d7f043bc9f3a67402eb07bf01000000eb6b8b7c24148b3f8d147d010000008b7c24048b3f8d1c7d010000003bd3730489d1eb0289d98b7c24148d77048b7c24048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175063bd37307eb0c83ff017c07bf03000000eb05bfffffffffeb2a8b7c24148b3f8d3c7d010000008b7424048b368d3475010000003bfe7d07bfffffffffeb05bf0300000083ff010f8519010000ff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b442458ff742414ff742414ff742414ff742414ff742414ff7424145756525153508b5424488b44245c8b5c244cff128d642420ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424688b7c24688b7424648b5424608b4c245c8b5c24588b442454ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b8424840000008b5c2474e8adfdffff89c78d64242c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c2418893883c424c244008d64240483ff010f8d9d0200008d6424108b7c242483ff030f85d50100008b3c248b3f8d1c7d0100000083fb01750e8d642410bf8c6668b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877e01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf8c6668b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d783c40c8b378d1c750100000083fb01750ab99c6668b1e98f00000089de83c61289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87cc00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be9c6668b1b9130000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24108b54240c8b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706010000008b7c24448b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742444893e58c244008d642404b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642404ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b4424708b5c2478e804fbffff89c78d6424308b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d642404893883c404c244008b7c242883ff030f85d80100008b3c248b3f8d1c7d0100000083fb01750e8d64241cbf8c6668b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878101000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf8c6668b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d783c4188b378d1c750100000083fb01750ab99c6668b1e98f00000089de83c61289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87cf00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be9c6668b1b9130000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24148b5424108b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706010000008b7c24488b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742448893e5883c404c244008d642408b8780566b18b5d04ff238d642424b8780566b18b5d04ff238d642404ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b84248c0000008b5c2470e865f8ffff89c78d6424308b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c418c244008d6424048b7c242483ff030f85d30100008b3c248b3f8d1c7d0100000083fb01750e8d642410bf8c6668b1e98c00000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877c01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf8c6668b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d783c40c8b378d1c750100000083fb01750ab99c6668b1e98f00000089de83c61289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ca00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be9c6668b1b9130000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24108b54240c8b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706010000008b7c24448b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742444893eeb208d642404b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d64241058c24400f60424010f85ef0100008b3c248b3fff378b7c241083ff030f85d00100008b3c248b3f8d1c7d0100000083fb01750e8d642404bf8c6668b1e98900000089df83c70e89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877901000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf8c6668b1b90f0000008d77048d7a04d1e9f3a489d95f8d77048d7a0bd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab99c6668b1e98f00000089de83c61289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ca00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be9c6668b1b9130000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24148b5424108b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706010000008b7c24488b3ff7c7010000007502eb228b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742448893eeb208d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238d6424045883c404c244008d642408b801000000c24400f4000000|@16501,1,@2651|195,0,0 262,0,0 269,0,1 276,0,-1 297,0,1 304,0,-1 341,0,-1 348,0,1 694,0,@16499 714,0,4 735,0,16777215 793,0,0 802,0,@16499 807,0,7 858,0,@16500 878,0,4 899,0,16777215 957,0,0 983,0,@16500 988,0,9 1055,0,0 1118,0,@9465 1132,0,@9465 1359,0,@16499 1379,0,4 1400,0,16777215 1458,0,0 1467,0,@16499 1472,0,7 1523,0,@16500 1543,0,4 1564,0,16777215 1622,0,0 1648,0,@16500 1653,0,9 1720,0,0 1786,0,@9465 1800,0,@9465 2030,0,@16499 2050,0,4 2071,0,16777215 2129,0,0 2138,0,@16499 2143,0,7 2194,0,@16500 2214,0,4 2235,0,16777215 2293,0,0 2319,0,@16500 2324,0,9 2391,0,0 2452,0,@9465 2466,0,@9465 2535,0,@16499 2555,0,4 2576,0,16777215 2634,0,0 2643,0,@16499 2648,0,7 2696,0,@16500 2716,0,4 2737,0,16777215 2795,0,0 2821,0,@16500 2826,0,9 2893,0,0 2954,0,@9465 2968,0,@9465 2993,0,0 7473:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2652|68,0,0 7474:D3,316|3b650c7305ff552ccd0953a801750bff30ff70048b7c2408eb0a8d642404b801000000c383ff01750abf01000000e9c20000008b17ff77048b7424088b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642404eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e938ffffff8d642404bf0300000083ff0375378b04248b5c2408e8fafeffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938c35883c4045be9c5fefffff4|@16504,1,@2654|31,0,0 42,0,0 91,0,1 98,0,0 120,0,1 127,0,0 164,0,1 171,0,0 195,0,1 202,0,0 209,0,0 241,0,1 7475:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2655|81,0,0 91,0,0 7476:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2656|81,0,0 91,0,0 7477:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2657|81,0,0 91,0,0 7478:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2658|81,0,0 91,0,0 7479:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2659|81,0,0 91,0,0 7480:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2660|81,0,0 91,0,0 7481:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2661|81,0,0 91,0,0 7482:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2662|81,0,0 91,0,0 7483:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2663|81,0,0 91,0,0 7484:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2664|81,0,0 91,0,0 7485:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2665|81,0,0 91,0,0 7486:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2666|81,0,0 91,0,0 7487:D3,648|3b650c7305ff552ccd098b7c24088b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750abfe46966b1e9aa0100008b3f8b3781feec01c0b075058b7f08eb0ab8483366b18b5d04ff238b75008d76f43b75087305ff5528cd89897500c746fc02000000894604c706070000005689d889fbe8c0fffcff89c757b801000000e803bafcff89c7ba48f167b18b4424148b74240c57566a01bb214e0000e8e6c5fcff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c20c00f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e906feffffb8483366b18b5d04ff23f4|@16515,1,@2669|34,0,@4656 85,0,0 95,0,@10769 110,0,@4656 122,0,@9999 162,0,3 172,1,@7172 180,0,0 185,1,@7128 192,0,@14942 209,0,10000 214,1,@7139 249,0,0 286,0,@10448 321,0,@15020 356,0,@10448 429,0,@10448 503,0,0 510,0,0 517,0,3 523,0,0 547,0,@4656 598,0,0 608,0,@11247 623,0,@4656 638,0,@9999 7488:D3,72|3b650c7305ff552ccd0d8b7c24088b7424048b45008d40e83b45087305ff5528cdcc894500c740fc0500000089581089700c8b7204897008897804c7002c8f3db1c20800f4000000|@16527,1,@2675|61,0,@7489 7489:D3,1464|3b650c7305ff552ccd05528b3883ff030f85ca020000ff7004ff7008ff700cff70108b7c24108b7f0c8b3f8d1c7d0100000083fb01750abe1c6968b1e98f00000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f876702000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf1c6968b1b90d0000008d77048d7a04d1e9f3a48b7c24108b7f0c89d98d77048d7a0ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24148b5f108b7c24148b7f08ff742408578b442418e8bc04000089c7578b7c24188b7f0c81ffdc6968b17502eb348b7c24188b7f0c8b3f8d3c7d0100000083ff0b75268b7c24188b770cbfdc6968b18d76048d7f04b9050000003bc9f3a67402eb07be9c7666b1eb05beec6968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c241c8b5f048b7c241c8b7f08ff74240c578b44241ce82804000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704f86968b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c410c38d642414b8780566b18b5d04ff23ff7004ff7008ff700c8b7c240c8b7f0c8b3f8d1c7d0100000083fb01750abe1c6968b1e98f00000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877502000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf1c6968b1b90d0000008d77048d7a04d1e9f3a48b7c240c8b7f0c89d98d77048d7a0ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057b801000000e803b4fcff89c78b7424108b56088b7424108b761057566a018b442418bbd1070000ff1289c757b801000000e8d7b3fcff89c78b7424148b56088b7424148b760457566a018b442418bbd1070000ff1289c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2408897a04c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071c6a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64241089378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c38d642410b8780566b18b5d04ff23f40000|@16526,1,@2674|56,0,@16517 76,0,4 97,0,16777215 155,0,0 164,0,@16517 169,0,6 239,0,3 268,1,@7490 284,0,@16520 321,0,@16520 332,0,2 345,0,@10974 352,0,@16521 387,0,3 416,1,@7490 451,0,@16522 488,0,@10448 555,0,@10448 622,0,@10448 694,0,0 701,0,0 708,0,3 714,0,0 727,0,@9465 767,0,@16517 787,0,4 808,0,16777215 866,0,0 875,0,@16517 880,0,6 950,0,3 956,0,0 961,1,@7128 990,0,1000 1000,0,0 1005,1,@7128 1034,0,1000 1077,0,3 1110,0,0 1147,0,@10448 1213,0,@10448 1248,0,@16525 1283,0,@10448 1350,0,@10448 1422,0,0 1429,0,0 1436,0,3 1442,0,0 1452,0,@9465 7490:D3,80|3b650c7305ff552ccd098b7c24088b7f0c8b7f08ff37ff77048b77088b54240c8b4c2410ff7424088944240c8b442408895c24088b5c2404894c24048954241089742414e91b0000008d642408f40000|@16519,1,@2673|69,1,@7491 7491:D3,1336|3b650c7305ff552ccd095053b801000000e882b1fcff89c78b5424188b4424148b74241057566a01bbd1070000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937576a016a018b44241089e3e8444cf9ffff7424048b7c241c8b076a016a0189e3e82f4cf9ff8d6424045f8b142489d63bd775068d64240ceb3689f68b168d1455010000008b1f89d98d1c5d010000003bd3752689f68d76048d6424048d7f043bc9f3a674068d642408eb128d642408bf01000000e9560100008d64240c8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542408895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b1578b7c242481ff100666b17502eb2b8b7c24248b3f8d3c7d0100000083ff0175238b742424bf100666b18d76048d7f0433c93bc9f3a67402eb0abb01000000e9470200008b75008d76f43b75087303ff5528897500c746fc020000008b7c2408897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c24288b3f8d0c7d0100000083f9017507bfcc7366b1eb7e89cf83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873302000089f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe00000000d1ef893ac6420428c642052a8b7c24288d77048d7a06d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfb47366b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878f01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322ad1efc6443a01298062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e108b3c24897e0c8d642404c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175035beb0e8b0424e88e00000089c38d64240483fb0175065f83c408eb0e8b0424e8d900000089c78d64240c8b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c214008d642414b8780566b18b5d04ff238d642414b8780566b18b5d04ff23f4000000|@16518,1,@2672|13,0,0 18,1,@7128 41,0,1000 78,0,0 96,1,@6665 117,1,@6665 196,0,0 242,0,0 275,0,0 316,0,3 349,0,0 390,0,0 397,0,0 403,0,0 436,0,0 473,0,@10448 508,0,@10969 543,0,@10448 554,0,@9473 585,0,@9473 606,0,0 648,0,0 681,0,0 707,0,@10928 724,0,4 745,0,16777215 803,0,0 854,0,@10926 874,0,4 895,0,16777215 953,0,0 1030,0,3 1063,0,0 1111,0,0 1118,0,0 1124,0,0 1157,0,0 1194,0,@10448 1210,1,@7492 1235,1,@7493 1277,0,0 1284,0,0 1291,0,3 1297,0,0 1309,0,@9465 1323,0,@9465 7492:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2670| 7493:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2671| 7494:D3,608|3b650c7305ff552ccd018b3089f7ba709b3db181c21f0000008d54b2fcffe2e9f3000000909090e9eb000000909090e9f4000000909090e9db000000909090e9d3000000909090e900010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9c0000000909090e9be000000909090e973000000909090e9b9000000909090e9c4000000909090e95b000000909090e953000000909090e94b000000909090e9aa000000909090e93b000000909090e9a2000000909090e9a0000000909090e923000000909090e998000000909090e913000000909090e90b000000909090e90300000090909083ff177506b803000000c3b801000000c38b78048b07ff7704e83f01000089c783ff03750658e9befeffff8d642404b801000000c38b4008e9acfeffffb803000000c38b780c576a03e9b50000008b780883ff017506b803000000c3576a03eb62b803000000c38b4004e97afeffffb803000000c38b7804576a03eb06b803000000c3f64424040175348b7c24048b0789ffff77048b7c240483ff037509e846feffff89c2eb05ba010000005e891424897424043b650c7303ff552cebc55883c404c3f64424040175348b7c24048b0789ffff77048b7c240483ff037509e806feffff89c2eb05ba010000005e891424897424043b650c7303ff552cebc55883c404c3f64424040175378b7424048b3e89f6ff76048b470c8b7c240483ff037509e8c3fdffff89c2eb05ba010000005e891424897424043b650c7303ff552cebc25883c404c3f40000|@16534,1,@2677|15,0,@7494 285,0,1 291,0,0 305,1,@7495 327,0,0 341,0,1 366,0,1 377,0,1 391,0,1 405,0,1 447,0,0 511,0,0 578,0,0 7495:D3,192|3b650c7305ff552ccd018b3889fe83ff2d75088b4004e9e5ffffff89f783fe0b75088b4008e9d6ffffff83ff1d0f85860000008b78048b7f048b3f8b770483fe017502eb0ef7c6010000007406b801000000c38b470ce8311cf9ff89c78b3783fe05754c8b4708e8201cf9ff89c78b3783fe0b75348b7f0c8b7f0c8b570489d68b1283fa03751b89f78b7f0481ff7c01c0b07507b803000000eb05b801000000eb05b801000000eb05b801000000eb05b80100000083f002c3b801000000c3f4|@16533,1,@2676|78,0,0 87,1,@6635 104,1,@6635 142,0,@4642 149,0,1 156,0,0 163,0,0 170,0,0 177,0,0 186,0,0 7496:D3,168|3b650c7305ff552ccd0550ff7204ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff722cff742414ff74241cff742424ff74242c8b5424348b4424188b5c241c8b4c24208b7424408b7c2410897c241c8b7c2414897c2420894424248b44243c895c24288b5c2438894c242c8b7c240c897c24308b7c2408897c24348b7c2404897c24388b3c24897c243c895424408974241883c418e9190000008d642440f4|@16599,1,@2716|159,1,@7497 7497:D3,580|8d7c24ac3b7d0c7305ff5530cd09ff30ff7004ff7008ff700c8b7c24388b7424348b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700cca13db16a016a016a0189e3e8bca3faffff34248b5c2408ff74240c8b7c244483c70257710e8d642428b8f80466b18b5d04ff238b7c24508b7424448b5424408b4c244cff34246a01680c6d68b16a01575652518b442440e89c04000089c7578b7c24448b77188b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542408895708897704c70710e83db1578b7c2448ff77208b7c244cff77108b7c2450ff77348b7c2454ff77148b7c2458ff772c8b7c245c8b5f308b7c245cff77088b7c2460ff770c8b7c2464ff378b7c24688b4f288b7c2468ff77048b7c246c8b771c8b7c246c8b55008d52f03b55087305ff5528cdca895500c742fc030000008b442434894208897a04c70258e83db18b7d008d7fc43b7d087305ff5528cd4e897d00c747fc0e0000008b442418894734895f308b5c2410895f2c894f288957248b54242089572089771c8b7424248977188b7424148977148b74241c8977108b74240889770c8b74240c8977088b34248977048d6424045e8d642420893757ff7424448b4424388b7c24588b74245c8b5424448b4c24408b5c243cff74240457ff7424385652515389c38b54241c8b442428ff1289c78d6424088b74241c893e8b34248b54242089328b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f8d64240c897804c7000500000083c41cc22800f40000|@16598,1,@2715|67,0,@7498 80,1,@6921 110,0,@9455 141,0,@16549 156,1,@7500 208,0,@7531 338,0,@7532 567,0,2 7498:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7610f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab98c6c68b1e98f00000089de83c64a89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be8c6c68b1b94b0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce92cc9fdff8d642408b8780566b18b5d04ff23f400|@16548,1,@2678|60,0,@14696 80,0,@16547 100,0,4 121,0,16777215 179,0,0 205,0,@16547 210,0,37 255,0,1 268,1,@7270 277,0,@9465 7499:D3,412|3b650c7305ff552ccd01ff30ff70048b7008bfffffffff8b55008d52f83b55087305ff5528cdc0895500c742fc01000040893abf2c0268b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c70705000000ba010000008b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408913b9010000008b55008d52f83b55087305ff5528cdca895500c742fc01000040890ab9010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089088b4d008d49f03b4d087305ff5528cdcd894d00c741fc0300000089410889590489118b55008d52f83b55087305ff5528cdc2895500c742fc01000000890ab9010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040890b8b4d008d49f83b4d087305ff5528cdcc894d00c741fc0100000089198b45008d40e03b45087305ff5528cdc6894500c740fc070000008948188950148970108b342489700c8d642404897808c74004030000008b3c2489388d642404c3f40000|@16550,1,@2679|19,0,-1 52,0,@15112 118,0,2 123,0,0 156,0,0 189,0,0 284,0,0 395,0,1 7500:D3,7288|3b650c7305ff552ccd0950538b7c24048b3fbeb0a43db181c6230000008d74befcffe6e9f3000000909090e9f1000000909090e9f2000000909090e9e0040000909090e9de040000909090e9df040000909090e988080000909090e986080000909090e984080000909090e982080000909090e980080000909090e97e080000909090e97c080000909090e97a080000909090e97b080000909090e95a0c0000909090e9c30d0000909090e9a00e0000909090e905100000909090e95b110000909090e959110000909090e957110000909090e955110000909090e9b8110000909090e9b6110000909090e9b7110000909090e973120000909090e971120000909090e975120000909090e973120000909090e9771200009090908d642408eb048d642408e9fa0300008b7c24048b77048b3eff7604ff7608ff76108b3783fe1d0f85370200008b7f04ff37ff7704ff7708ff770c8b77108b7c242c8b7f24893e8b7c242c8b7f188b74242c8b76348b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b7424348b7d008d7fec3b7d087305ff5528cd48897d00c747fc040000008b142489570c8b542420895708897704c7073cc13db1ff74240c57b8501b68b1e8fb1a000089c7578b3c248b7f0483ff017505e92b010000f7c7010000000f841f0100005f8b3781feb4d967b175068d642410eb2a8b3e8d3c7d0100000083ff177521bfb4d967b18d76048d7f04b90b0000003bc9f3a67402eb098d642410e9ca0000008b7c240c8b3f8d1c7d0100000083fb01750abf686e68b1e99300000089df83c72a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878b00000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c240c8d77048d7a04d1e9f3a489df83c708be686e68b1b92b0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b442434ff742420ff74240457bb03000000e862c4fdff8d642410bf902d66b1eb7b8d642424b8780566b18b5d04ff238b3c248b7f088b3783fe07752a8b7f0483ff117507bf03000000eb05bf0100000083ff0375118b0424bb01000000e8ea25000089c7eb268b3c248b470c6a016a0154bb187068b1e8ad0cf9ffff34248b442408e8ad2900005f8d6424085e8b54240889328b742404893e83c410eb208b442424ff742410ff74240468207068b1bb03000000e8bfc3fdffbf902d66b157ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b4424348b5c2438e826fcffff89c78d642408578b442404e8d611f9ff8b3883ff05755d8b7804ff7008ba0c6368b189f88b5c2404e87d83ffff89c7f7c7010000007538ff37ba106968b18b4424348b5c24308b7c24305768dc6968b1e8f1e5ffff89c28b0424ff1289c78d642404578b7c24348b7f34e9c9160000e9bb160000bfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d000000578b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b088b7c2404897b04c70305000000ba0c6368b1e8ab82ffff89c7f7c7010000007538ff37ba106968b18b4424348b5c24308b7c24305768dc6968b1e81fe5ffff89c28b0424ff1289c78d642404578b7c24348b7f34e98b140000e9791400008d642408eb048d642408e9b50300008b7c2404ff77048b7c2408ff77088b7c240cff770cff742434ff7424348b7c24348b7424308b54242c8b4c24288b5c24248b442420ff742404ff7424045756525153508b44242c8b5c2434e881faffff89c78d64240857ba980668b18b7c24288b7424208b5d008d5bec3b5d087305ff5528cdc4895d00c743fc0400000089730c8b742414897308897b04c703acd23db18b7c2428578b442410e816c8fdff89c757ba0c6368b18b4424048b1c24e8a281ffff89c7f7c7010000000f85eb020000ff378b7c24308b74242cff7424085756b8587068b18b5c241ce876e1ffff89c757b801000000e8299cfcff89c7ba48f167b18b74243057566a018b442414bb214e0000e80ca8fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706687068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ba106968b18b4424388b5c24348b7c24345768dc6968b1e828e3ffff89c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706887068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24308b7f34e95b0f0000e94f0f00008d642408eb048d642408eb048d642408eb048d642408eb048d642408eb048d642408eb048d642408eb048d642408e90c0900008b7c24048b7f04ff37ff7704ff7708ff770cff77106a016a018b44241889e3e81d34f9ff5e8d6424048b7c243083ff03750abf94d967b1e9bf00000081fe100666b17502eb238b3e8d3c7d0100000083ff017534bf100666b18d76048d7f0433c93bc9f3a67402eb1f8b7c24248b57188b442410ff1289c783ff017507bf94d967b1eb028b3feb738b7c24248b7f188b7424248b76348b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b74242c8b7d008d7fec3b7d087305ff5528cd48897d00c747fc040000008b54240489570c8b542418895708897704c70788d33db1ff74241057b8501b68b1e8c012000089c7578b7c24288b7f248b742404893e8b3c248b7f0483ff017505e997010000f7c7010000000f848b0100008d6424088b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c70701000000578b7c242c8b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b542430bfcc5366b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7c24388d1cfdf9ffffff8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c7070d0000008b45008d40f03b45087305ff5528cdc4894500c740fc030000008970088978048b7c240c8938ff1289c7578b5c242cff7424048b442414e8f352faff8b5c24208b7c242c57ff7424086a018b44241ce8f704feff8b5424148b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24108938ff128b3c248b74240c893e5f8d6424048b470ce92e0100008b7c243c83ff03752d8d6424088b442428ff742414ff74240468c07068b1bb03000000e86dbbfdff8d642404b8902d66b1e9f80000008b3c248b742410893e8b3c248b7f04f7c70100000075048b3feb518b3c248b470ce8a109f9ff89c78b3783fe0575218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff017507bf03000000eb05bf0100000083f70283f70283ff03755f8b3c248b7f088b3783fe07752c8b7f0483ff117507bf03000000eb05bf0100000083ff0375138b0424bb01000000e88f1c00008d64240ceb245f8b470c6a016a0154bbfc7068b1e85203f9ffff34248b442408e852200000588d642410eb288d6424088b442428ff742414ff74240468047168b1bb03000000e870bafdff8d642404b8902d66b15f890783c410c220008b7c2404ff77048b7c2408ff77088b7c240cff770cff742424ff7424248b7c24248b7424208b54243c8b4c24388b5c24348b442430ff742404ff7424045756ff742424525153508b44242cbb407168b1e8f12100008d64240ce8acfaf8ff89c7578b0424e8a5fcf8ff89c78b75008d76f03b75087305ff5528cd80897500c746fc030000008b542408895608897e04c706010000008b7c240883ff037502eb3f8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707070000008b74240483fe03750489f8eb55bacc5366b18b75008d76f83b75087305ff5528cd84897500c746fc010000408916ba1f4e00008d14d5f9ffffff8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c7000d000000893e5f890783c40cc220008b7c2404ff77048b7c2408ff77088b7c240cff770cff7424348b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34246a035756525153508b44242c8b5c2430e84cf1ffff89c78d64240457ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742404ff7424045756525153508b4424308b5c2438e80af1ffff89c38d642408ba0c6368b18b0424e87b78ffff89c7f7c7010000007538ff37ba106968b18b44242c8b5c24288b7c24285768dc6968b1e8efdaffff89c28b0424ff1289c78d642404578b7c242c8b7f34e981070000e9750700008b7c2404ff77048b7c2408ff77088b7c240cff770cff742434ff742434ff7424348b7c24348b5424308b4c242c8b5c24288b4424248b75008d76d03b75087305ff5528cd8f897500c746fc0b000000894628895e24894e2089561c897e185f897e145f897e105f897e0c8b7c240c897e08c74604407168b1c70628d53db18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708f47168b1c74704fcf967b189378b5d008d5be83b5d087305ff5528cd80895d00c743fc050000008b7424108973105e89730cc74308380e66b1c74304707268b1c7037c7268b18b7424208b54241c5756528b44240ce86321000089c68d6424048b3e83ff017507b8902d66b1eb5b8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40e83b45087305ff5528cd80894500c740fc05000000c74010603766b1c7400cb45666b1c74008d45666b1897804c7000b0000005f890783c408c220008d6424048b3c24ff77048b7c2404ff770c8b7c24088b4710bb03000000e84d180000e8dc04f9ff8b3883ff05755e8b7804ff7008ba0c6368b189f8bb545967b1e88276ffff89c7f7c7010000007538ff37ba106968b18b4424248b5c24208b7c24205768dc6968b1e8f6d8ffff89c28b0424ff1289c78d642404578b7c24248b7f34e91e040000e910040000bfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d000000578b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b08c74304545967b1c70305000000ba0c6368b1e8b075ffff89c7f7c7010000007538ff37ba106968b18b4424248b5c24208b7c24205768dc6968b1e824d8ffff89c28b0424ff1289c78d642404578b7c24248b7f34e9e0010000e9ce0100008d642408eb048d642408eb048d642408eb6f8b7c24048b7f0457ff742404ff742430ff742430ff7424308b7424308b54242c8b4c24288b5c24248b442420894424208b442410895c24248b5c240c894c24288954242c897424308b3c24897c24348b7c2404897c24388b7c2408897c243c83c41ce96cedffff8d64241c8d642408eb048d642408e9c80000008b7c2404ff77048b7c2408ff7708ff742420ff7424208b7c24208b74241c8b5424388b4c24348b5c24308b44242cff742404ff7424045756ff742420525153508b442430bb407168b1e8772f00008d642408bb03000000e8e96cf8ff89c7578b0424e89a6df8ff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f897804c700070000005f8d64240c8907c220008d642408eb108d642408b8e45667b1c220008d642408eb048d642408b8902d66b1c220008d642408becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c220005883c4045f890783c404c22000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642414b8483366b18b5d04ff238b442410e87fd3fcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24208b7f0c8b7424208b5630c70703000000ff12e90dfffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642414b8483366b18b5d04ff235883c404e98bfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642414b8483366b18b5d04ff238b442410e813d2fcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24208b7f0c8b7424208b5630c70703000000ff12e911fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642414b8483366b18b5d04ff235883c414c22000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d64241cb8483366b18b5d04ff238b442418e8a9d0fcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240889700c5e897008897804c700030000008b7c24288b7f0c8b7424288b5630c70703000000ff12e913fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64241cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d64241cb8483366b18b5d04ff235883c418c22000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642420b8483366b18b5d04ff238b44241ce83fcffcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240c89700c5e897008897804c700030000008b7c242c8b7f0c8b74242c8b5630c70703000000ff12e913fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642420b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642420b8483366b18b5d04ff235883c40c5f890783c40cc22000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b442420e8cfcdfcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24308b7f0c8b7424308b5630c70703000000ff12e90dfffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642424b8483366b18b5d04ff235883c40ce98bfefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642424b8483366b18b5d04ff238b442420e863ccfcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c5e897008897804c700030000008b7c24308b7f0c8b7424308b5630c70703000000ff12e911fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642424b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642424b8483366b18b5d04ff23f40000|@16596,1,@2710|19,0,@7500 446,0,@7501 456,0,@15399 461,1,@7502 501,0,@14766 528,0,@14766 539,0,5 579,0,@16560 599,0,4 620,0,16777215 678,0,0 708,0,@16560 713,0,21 749,0,1 754,1,@7270 763,0,@9922 774,0,@9465 805,0,1 812,0,0 825,0,0 830,1,@7512 850,0,@16572 855,1,@6630 867,1,@7517 907,0,@16573 912,0,1 917,1,@7270 922,0,@9922 998,1,@6635 1016,0,@16477 1027,1,@7452 1044,0,@16516 1062,0,@16520 1067,1,@7488 1103,0,@10423 1136,0,9999 1181,0,6 1227,0,2 1232,0,@16477 1237,1,@7452 1254,0,@16516 1272,0,@16520 1277,1,@7488 1415,0,@15147 1468,0,@7519 1482,1,@7273 1490,0,@16477 1502,1,@7452 1537,0,@16574 1546,1,@7487 1554,0,0 1559,1,@7128 1566,0,@14942 1583,0,10000 1588,1,@7139 1623,0,0 1660,0,@10448 1695,0,@16575 1731,0,0 1738,0,0 1745,0,0 1751,0,0 1757,0,@16516 1775,0,@16520 1780,1,@7488 1823,0,0 1860,0,@16528 1895,0,@16529 1931,0,0 1938,0,0 1945,0,0 1951,0,0 1984,0,0 2021,0,@10448 2088,0,@10448 2159,0,@10448 2194,0,@16577 2230,0,0 2237,0,1 2244,0,3 2250,0,0 2355,1,@6665 2374,0,@14765 2385,0,@9473 2408,0,@9473 2449,0,@14765 2553,0,@7521 2563,0,@15399 2568,1,@7502 2652,0,0 2665,0,0 2704,0,2 2737,0,0 2780,0,@10423 2857,0,6 2917,1,@6891 2941,1,@7332 3037,0,@16579 3042,0,1 3047,1,@7270 3056,0,@9922 3099,1,@6635 3146,0,0 3156,0,1 3163,0,0 3200,0,1 3207,0,0 3220,0,0 3225,1,@7512 3245,0,@16580 3250,1,@6630 3262,1,@7517 3290,0,@16581 3295,0,1 3300,1,@7270 3309,0,@9922 3398,0,@16582 3403,1,@7523 3412,1,@6621 3423,1,@6623 3467,0,0 3541,0,1 3580,0,3 3598,0,@10423 3631,0,9999 3676,0,6 3837,0,@16477 3845,1,@7452 3862,0,@16516 3880,0,@16520 3885,1,@7488 4036,0,@16582 4042,0,@7524 4075,0,@16585 4082,0,@15035 4128,0,@9549 4135,0,@16588 4141,0,@16589 4161,1,@7527 4179,0,@9922 4214,0,0 4249,0,@10037 4256,0,@10472 4263,0,@10474 4272,0,5 4310,0,1 4315,1,@7512 4320,1,@6635 4338,0,@16477 4345,0,@13128 4350,1,@7452 4367,0,@16516 4385,0,@16520 4390,1,@7488 4426,0,@10423 4459,0,9999 4504,0,6 4544,0,@13128 4550,0,2 4555,0,@16477 4560,1,@7452 4577,0,@16516 4595,0,@16520 4600,1,@7488 4844,0,@16582 4849,1,@7530 4858,0,1 4863,1,@6475 4874,1,@6476 4909,0,1 4918,0,0 4957,0,3 4982,0,@13097 5000,0,@9922 5012,0,@10423 5045,0,9999 5090,0,6 5127,0,@4656 5178,0,0 5188,0,@10769 5203,0,@4656 5219,0,@9999 5233,1,@7172 5309,0,1 5329,0,1 5357,0,@4656 5408,0,0 5422,0,@11247 5437,0,@4656 5456,0,@9999 5491,0,@4656 5542,0,0 5552,0,@10769 5567,0,@4656 5583,0,@9999 5597,1,@7172 5673,0,1 5693,0,1 5721,0,@4656 5772,0,0 5786,0,@11247 5801,0,@4656 5820,0,@9999 5853,0,@4656 5904,0,0 5914,0,@10769 5929,0,@4656 5945,0,@9999 5959,1,@7172 6035,0,1 6055,0,1 6083,0,@4656 6134,0,0 6148,0,@11247 6163,0,@4656 6182,0,@9999 6215,0,@4656 6266,0,0 6276,0,@10769 6291,0,@4656 6307,0,@9999 6321,1,@7172 6397,0,1 6417,0,1 6445,0,@4656 6496,0,0 6510,0,@11247 6525,0,@4656 6544,0,@9999 6583,0,@4656 6634,0,0 6644,0,@10769 6659,0,@4656 6675,0,@9999 6689,1,@7172 6765,0,1 6785,0,1 6813,0,@4656 6864,0,0 6878,0,@11247 6893,0,@4656 6912,0,@9999 6947,0,@4656 6998,0,0 7008,0,@10769 7023,0,@4656 7039,0,@9999 7053,1,@7172 7129,0,1 7149,0,1 7177,0,@4656 7228,0,0 7242,0,@11247 7257,0,@4656 7276,0,@9999 7501:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9a3aafdfff40000|@15154,1,@2680|26,0,1 37,1,@7270 7502:D3,1328|3b650c7305ff552ccd0950ff33ff73046a016a018b44241c89e3e86920f9ffff3424ff7424088b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017529bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb108b5424148b0424ff1289c7e9850000008b7c2420ff74240457b8880768b18b5c2418e8e6c0fdff89c7f7c701000000755fff378b3c248b7f088b07ba3c4966b1e8448aeaff89c78b57188b442404ff1289c783ff01750b8d642404bf01000000eb2c8b078b1c24e87904000089c68d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf3c6e68b183ff010f8529040000ff7424208b7c241c8b3f8d1c7d0100000083fb01750abfcc2e67b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d103000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c241c8d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a01288062ffbf89d78b378d1c75010000008b7424048b368d3475010000005683fb01750d8d6424048b7c2404e99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87fb02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfc80768b1e98f00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874b02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec80768b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff017523bf100666b18b74240c8d76048d7f0433c93bc9f3a67402eb0abf100666b1e9a80000008b7c240c8b3f8d1c7d0100000083fb01750abfe80768b1e98c00000089df83c71c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f874e01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfe80768b1b91d0000008d77048d7a04d1e9f3a489d98b7c240c8d77048d7a12d1e9f3a48062ffbf89d7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045883c404e99d0000008b3c2483ff01750a8d64240858e98b0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777789f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef893889d98b7c24088d77048d7804d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b894d967b183c41cc208008d64242cb8780566b18b5d04ff238d642424b8780566b18b5d04ff238d642420b8780566b18b5d04ff238d642424b8780566b18b5d04ff238d642420b8780566b18b5d04ff238d64241c8b07c20800f4|@16559,1,@2690|27,1,@6665 44,0,@9473 71,0,@9473 121,0,@15155 130,1,@7284 155,0,@10267 160,1,@4989 187,0,0 199,1,@7503 240,0,@16558 276,0,@12628 296,0,4 317,0,16777215 375,0,0 496,0,4 517,0,16777215 575,0,0 638,0,@15157 658,0,4 679,0,16777215 737,0,0 763,0,@15157 768,0,23 797,0,@9473 824,0,@9473 849,0,@9473 877,0,@15158 897,0,4 918,0,16777215 976,0,0 985,0,@15158 990,0,14 1102,0,4 1123,0,16777215 1177,0,0 1238,0,@14765 1253,0,@9465 1267,0,@9465 1281,0,@9465 1295,0,@9465 1309,0,@9465 7503:D3,416|3b650c7305ff552ccd0989c753ff37ff7704ff77088b470cff77108b7424108b7e088b7f1089f68b368b55008d52f43b55087305ff5528cdc1895500c742fc02000000897a04c70274c83db18b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c707ccc83db157bbe86d68b1e803f1f8ff89c78b3424f7c60100000075388b0e8b56048b1983fb01751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebc0be01000000f7c60100000075698b0e89ca8b0983f9017507b903000000eb05b90100000083f903754d89d68b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be010000008b45008d40e03b45087305ff5528cdc0894500c740fc07000000c7401801000000c74014010000008b14248950108d64240489780c8b3c248978088d6424048b3c248978048d6424048b3c2489388d6424045bff342489742404e9cc020000f4000000|@16557,1,@2689|72,0,@7504 110,0,@7505 116,0,@16555 121,1,@6634 195,0,0 219,0,1 226,0,0 271,0,3 304,0,0 313,0,0 346,0,0 353,0,0 408,1,@7509 7504:D3,68|3b650c7305ff552ccd058b78048b3783fe0175278b470c8b5204ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@16551,1,@2681|60,0,0 7505:D3,120|3b650c7305ff552ccd058b7d008d7ff43b7d087305ff5528cd05897d00c747fc020000008b7204897704c70758c93db16a016a016a016a018b5a0868a86d68b1576a01548304240ce85f15f9ff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f4|@16554,1,@2684|44,0,@7506 60,0,@16553 73,1,@6661 7506:D3,380|3b650c7305ff552ccd0589d7508b77048b368d1c750100000083fb01750abf500e66b1e98200000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f871a01000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee89308b7f0489d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf89c78b378d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175078d64240889f8c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775c89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff238d642404b8780566b18b5d04ff23f400|@16552,1,@2682|31,0,@9551 51,0,4 72,0,16777215 130,0,0 231,0,4 252,0,16777215 306,0,0 355,0,@9465 369,0,@9465 7507:D3,12|3b650c7305ff552ccd01c3f4|@16552,1,@2683| 7508:D3,12|3b650c7305ff552ccd01c3f4|@16554,1,@2685| 7509:D3,472|3b650c7305ff552ccd098b78088b1789d683fa030f859a0000008b7704ff30ff7004ff700c8b58108b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707030000005783fb0175068b7c2414eb0b8b442414e88c01000089c78b45008d40e03b45087305ff5528cd80894500c740fc07000000c7401801000000c74014010000008978108b7c240489780c8b3c248978088d6424088b3c248978048d6424048b3c2489388d642404c2040083fe010f85170100008b7704ff30ff7004ff700cff70108b53048b3a83ff03756d8b52048b3a83ff0d750f6a0189f389d0e8ca6deaff89c6eb2f8b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c01000000897708895704c7071700000089fe8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb268b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70709000000578b7c240489fb83ff0175068b7c2418eb0b8b442418e8cd00000089c78b45008d40e03b45087305ff5528cd80894500c740fc07000000c7401801000000c74014010000008978108b7c240889780c8b3c248978088d6424048b7c24088978048b7c240c893883c410c20400c20400f4|@16556,1,@2688|71,0,1 92,1,@7510 127,0,0 134,0,0 230,1,@4973 267,0,0 279,0,11 316,0,1 356,0,4 383,1,@7511 418,0,0 425,0,0 7510:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2686| 7511:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2687| 7512:D3,568|3b650c7305ff552ccd09538b78088b3783fe070f85f40100008b7f0483ff117507bf03000000eb05bf0100000083ff030f85d10100008b18ff700cbffc02c0b08b07e805020000e8c402000089c7578b7c240883ff0375278b7c24048b3783fe05750e89ff8b4708e827ecf8ff89c7eb5f8d64240cb8bc6e68b18b5d04ff238b7c24048b3783fe05754489ff8b47048b3883ff07752f8b700489f7f7c6010000007407be03000000eb05be0100000083f60283fe03750e8b3f8b4704e8d3ebf8ff89c7eb07e8caebf8ff89c7eb0289ff8b3783fe0d0f851e0100008b7704f6042401755c8b3c248b570483fa017507ba03000000eb05ba0100000083fa03754089ff8b0f8d6424048b118b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000c7471001000000894f0c895708c7470401000000c7070b000000eb7fbfcc5366b18b4d008d49f83b4d087305ff5528cdc0894d00c741fc010000408939bf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708894f04c7070d0000008b55008d52f43b55087305ff5528cdc2895500c742fc020000008b1c24895a048d642404c7020900000089118b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c7034cd13db16a016a01548b44240ce8e9e4f8ff588d64240cc38d64240cb83c6f68b18b5d04ff238d642404eb048d6424048b400c6a016a0154bb9c6f68b1e8b9e4f8ffff34248b442408e8b9010000588d642408c3f40000|@16571,1,@2696|34,0,1 41,0,0 60,0,@4690 67,1,@7513 72,1,@7514 105,1,@6635 118,0,@16562 164,0,1 171,0,0 189,1,@6635 198,1,@6635 240,0,1 247,0,0 295,0,0 308,0,0 314,0,5 321,0,@10423 354,0,9999 399,0,6 441,0,4 481,0,@7515 495,1,@6630 510,0,@16566 538,0,@16569 543,1,@6630 555,1,@7517 7513:D3,176|3b650c7305ff552ccd09a8010f85960000008b308b40048b3eff7604ff76083bdf7502eb2a8b338d3475010000008b1789d18d1455010000003bf275628d73048d7f043bc9f3a674068d642408eb548b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008b34248977048d6424045e893757e884ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c38d642408e958ffffffb801000000c3f400|@16561,1,@2691|169,0,0 7514:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2692|68,0,0 7515:D3,60|3b650c7305ff552ccd058b388b72083bfe75208b45008d40f83b45087305ff5528cd04894500c740fc010000008b7a048938c3b801000000c3f40000|@16565,1,@2693|52,0,0 7516:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@2694|11,0,0 7517:D3,172|3b650c7305ff552ccd01a8010f85900000008b388b40048b378b7f048b570489d183e20983fa017507ba03000000eb05ba0100000083f20289cf83e70383ff017507b903000000eb05b90100000083f1028b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f08895704893757e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@2695|42,0,1 49,0,0 67,0,1 74,0,0 163,0,0 7518:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@2697|11,0,0 7519:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49348b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c70748d33db1ff7424045789f3e8fba9fdff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@2699|97,0,@7520 109,1,@7283 127,0,0 7520:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce99798fdfff40000|@15154,1,@2698|26,0,1 37,1,@7270 7521:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce95798fdfff40000|@15154,1,@2700|26,0,1 37,1,@7270 7522:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@2701|11,0,0 7523:D3,292|3b650c7305ff552ccd0953a8010f85010100008b38ff7004ff37ff7704ff770cff742410ff74242cff74242cff74242c8b7c242c8b7424288b5424488b4c24448b5c24408b44243cff742404ff7424045756525153508b54242c8b4424308b5c2428ff1289c7578b3c248b742418893e8b44241ce863d6f8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248957048d642420893757ff742430ff742430ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742408ff742408ff7424085756525153508b4424348b5c2438e81bffffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc224008d642404b801000000c22400f4000000|@16583,1,@2702|117,1,@6619 281,0,0 7524:D3,140|3b650c7305ff552ccd05ff720450ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff7424148b4c241c8b5424208b4424108b5c24148b7424308b7c2404897c24148b7c2408897c24188b7c240c897c241c894424208b4424288b7c242487df897c24248b3c24897c2428895424308b54242c894c242c8974241083c410ff228d642430f4|@16584,1,@2703| 7525:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70010d63db1c3f4000000|@16587,1,@2705|43,0,@7526 7526:D3,52|3b650c7305ff552ccd0589d789c68b068b5e048b76088b570489d18b1289cf8b4f045251ff7424088974240ce9f3b5fffff40000|@16586,1,@2704|45,1,@7487 7527:D3,352|3b650c7305ff552ccd0950f60424010f85f00000008b3c248b078b3c24ff77048b3c2483ff0175168d6424088b7c240c8b178b3c24897c240c83c40cff228b7c2414ff378b7c2418ff77048b7c241cff7708ff33ff7304ff7308ff730cff73108b54241cff1289c757ff742424ff742424ff74243cff74241cff742438ff742420ff742434ff74244c8b5424388b4c24348b5c24248b4424288b74244c8944242c8b442420895c2430bb03000000894c2434895424388b3c24897c243c8b7c2404897c24408b7c2408897c24448b7c240c897c24488b7c2410897c244c8b7c2414897c24508b7c2418897c24548b7c241c897c24588974242883c428e9730000008d64244c8d642404becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c20c00f4|@16595,1,@2708|170,0,1 253,1,@7528 266,0,@10423 299,0,9999 344,0,6 7528:D3,3116|3b650c7305ff552ccd0950538b7c2438f7c7010000000f85f20000008b7c2438ff378b7c243cff77048b54243c8b442404ff1289c757ba0c6368b18b4424108b1c24e82154ffff89c7f7c701000000750eff378b7c24408b7f34e9b70000008d6424048b7c240883c702710e8d642410b8f80466b18b5d04ff23ff74240c57ff742408ff742448ff742448ff742448ff742448ff742448ff7424488b7424488b5424448b4c24408b5c243c8b442438894424388b442420895c243c8b5c241c894c244089542444897424488b3c24897c244c8b7c2404897c24508b7c2408897c24548b7c240c897c24588b7c2410897c245c8b7c2414897c24608b7c2418897c246483c434e9f6feffff8d6424288d64240458c23000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9410a00008b3f8b3781feec01c0b075058b7f08eb0e8d642418b8483366b18b5d04ff23578b7c241483ff030f85c00000008b7c24408b3f8d1c7d0100000083fb01750abeac7268b1e99100000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c244089d98d77048d7a04d1e9f3a489df83c70889fed1eec604322089fed1eec644320131d1efc6443a023a8062ffbf89d6e9420200008d64241cb8780566b18b5d04ff238b7c24408b3f8d1c7d0100000083fb01750abfb87268b1e99e00000089df83c70889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87fa06000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c244089d98d77048d7a04d1e9f3a489df83c70889fed1eec604327389fed1eec64432012089fed1eec644320231d1efc6443a032d8062ffbf89d757ba803066b18b442418bb03000000e85485e8ff89c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c404e9a30000008b3c2483ff01750a8d6424085fe9910000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f705000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bee00e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874505000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a3a8062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b4424408b5c2418e87d5cebff8b5c243c8b7c2438ff74240457e86f07000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057b801000000e8126afcff89c7ba48f167b18b74243857566a018b44242cbb214e0000e8f575fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d0f867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b54242c8b7c24448b7424308b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c7578b44241883c002710e8d642420b8f80466b18b5d04ff23ba803066b1bb03000000e8c581e8ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704147368b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a80d66b18b7c24448b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e81541e8ff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b74240c8970088b74241489700489388b1424ff1289c78d64240457ba106968b18b4424488b5c24348b7c24345768dc6968b1e889afffff89c28b442408ff1289c28b74242c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702906a68b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706a06a68b18b55008d52e83b55087305ff5528cdc0895500c742fc05000000897210c7420c01000000c7420801000000c7420401000000c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc020000008956045a89168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc020000008956045a8d64240889168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c243c8b7f34eb2a8d64241cb8780566b18b5d04ff238d642428b8780566b18b5d04ff238d64241cb8780566b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9320100008b3f8b3781feec01c0b075058b5f08eb0e8d642414b8483366b18b5d04ff238b44241ce8b1aafcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b7424188b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c5e897008897804c700030000008b7c24388b7f0c8b7424388b5630c70703000000ff128b7c240883c702710e8d642410b8f80466b18b5d04ff2357ff742404ff742444ff742444ff742444ff742444ff742444ff7424448b7424448b5424408b4c243c8b5c24388b44243489442434b8902d66b1895c24388b5c241c894c243c89542440897424448b3c24897c24488b7c2404897c244c8b7c2408897c24508b7c240c897c24548b7c2410897c24588b7c2414897c245c8b7c2418897c246083c430e9d3f4ffff8d642424f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e97efeffff8d642414b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642418b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e96ff5ffff8d642418b8483366b18b5d04ff23f4|@16594,1,@2707|55,0,@16477 67,1,@7452 113,0,@9455 295,0,@4656 346,0,0 356,0,@10769 371,0,@4656 387,0,@9999 429,0,@16590 449,0,4 470,0,16777215 524,0,0 593,0,@9465 621,0,@16591 641,0,4 662,0,16777215 720,0,0 790,0,@9967 799,0,1 804,1,@4896 886,0,4 907,0,16777215 965,0,0 1033,0,@9563 1050,0,4 1071,0,16777215 1129,0,0 1197,0,3 1211,1,@5138 1229,1,@7529 1267,0,0 1274,0,0 1281,0,0 1287,0,0 1293,0,0 1298,1,@7128 1305,0,@14942 1322,0,10000 1327,1,@7139 1362,0,0 1399,0,@10448 1434,0,@15020 1469,0,@10448 1536,0,@10448 1608,0,0 1615,0,0 1622,0,3 1628,0,0 1695,0,@9455 1705,0,@9967 1710,0,1 1715,1,@4896 1750,0,@16593 1787,0,@9537 1827,1,@4827 1888,0,@16516 1906,0,@16520 1911,1,@7488 1960,0,3 1993,0,0 2030,0,@16528 2065,0,@16529 2101,0,0 2108,0,0 2115,0,0 2121,0,0 2154,0,0 2191,0,@10448 2258,0,@10448 2329,0,@10448 2396,0,0 2403,0,1 2410,0,3 2416,0,0 2435,0,@9465 2449,0,@9465 2463,0,@9465 2489,0,@4656 2540,0,0 2550,0,@10769 2565,0,@4656 2581,0,@9999 2595,1,@7172 2671,0,1 2691,0,1 2711,0,@9455 2774,0,@9922 2882,0,@4656 2933,0,0 2947,0,@11247 2962,0,@4656 2981,0,@9999 3007,0,@4656 3058,0,0 3072,0,@11247 3087,0,@4656 3106,0,@9999 7529:D3,764|3b650c7305ff552ccd09538b7c240c83ff017f0c8d642404b8c4f167b1c20800a8010f85c70200008b38ff70048b342483fe0175558d6424088b5424048b7424088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c208008b54240c8b7424108b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff1289c28b7c240489fe81ff380e66b17502eb2c89f68b3e89fb8d3c7d0100000083ff037524bf380e66b189f68d76048d7f04b9010000003bc9f3a67402eb0abf03000000e9900000008b7c240489fe81ffec0e66b17502eb2c89f689df89fb8d3c7d0100000083ff037521bfec0e66b189f68d76048d7f04b9010000003bc9f3a67402eb07bf03000000eb4d8b7c240489fe81ff100666b17507bf03000000eb3889f689df8d3c7d0100000083ff017523bf100666b189f68d76048d7f0433c93bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083f7028b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240489cb894f04c707070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000c741040100000089398b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000894f0489378b75008d76f43b75087305ff5528cd8c897500c746fc02000000897e0489168b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c241483ef02710e8d64240cb8f80466b18b5d04ff238b74241057568b44240ce85ffdffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f4|@16592,1,@2706|25,0,@14948 129,0,0 189,0,@9549 216,0,@9549 229,0,0 242,0,1 259,0,@9564 286,0,@9564 299,0,0 312,0,1 326,0,@9473 333,0,1 356,0,@9473 377,0,1 384,0,0 391,0,0 427,0,0 436,0,1 477,0,3 510,0,0 610,0,0 617,0,0 624,0,0 630,0,0 649,0,@9455 706,0,@10448 756,0,0 7530:D3,224|3b650c7305ff552ccd0953a8010f85be000000ff30ff7004ff742408ff742424ff742424ff7424248b7c24248b7424208b5424408b4c243c8b5c24388b442434ff742404ff7424045756525153508b54242c8b4424348b5c2428ff1289c757ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742408ff742408ff7424085756525153508b4424448b5c244ce85effffff89c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642420c224008d642404b801000000c22400f40000|@10030,1,@2709|214,0,0 7531:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2711| 7532:D3,136|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700f4e83db1ff128b3c24ff378b7c24088b7f048b5724b801000000ff1289c383fb0175055883c408c35883c408e965000000f4|@16597,1,@2714|12,0,0 86,0,@7533 108,0,0 131,1,@7534 7533:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2712|53,0,0 7534:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2713| 7535:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f0e93db1c3f4000000|@16603,1,@2719|43,0,@7536 7536:D3,52|3b650c7305ff552ccd0589d789c68b068b5e048b76088b570489d18b1289cf8b4f045251ff7424088974240ce917000000f40000|@16602,1,@2718|45,1,@7537 7537:D3,948|3b650c7305ff552ccd098b7c24088b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750abfe46966b1e9d30200008b3f8b3781feec01c0b075058b7f08eb0ab8483366b18b5d04ff23578b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704c7070700000057ff338b43048b5c240883eb02710e8d64240cb8f80466b18b5d04ff23e8a3a1fcff89c7578b5c240c83eb02710e8d642410b8f80466b18b5d04ff238b442404e880a1fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d44367b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057b801000000e8d95afcff89c7ba48f167b18b4424188b74241057566a01bb214e0000e8bc66fcff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c404c20c00f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e9ddfcffffb8483366b18b5d04ff23f4000000|@16601,1,@2717|34,0,@4656 85,0,0 95,0,@10769 110,0,@4656 122,0,@9999 163,0,3 187,0,@9455 197,1,@7172 218,0,@9455 232,1,@7172 267,0,0 304,0,@10448 339,0,@12912 374,0,@10448 448,0,0 455,0,0 462,0,0 468,0,0 474,0,0 479,1,@7128 486,0,@14942 503,0,10000 508,1,@7139 543,0,0 580,0,@10448 615,0,@15020 650,0,@10448 723,0,@10448 797,0,0 804,0,0 811,0,3 817,0,0 844,0,@4656 895,0,0 905,0,@11247 920,0,@4656 935,0,@9999 7538:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49348b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c7079cee3db1ff7424045789f3e8a78efdff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@2721|97,0,@7539 109,1,@7283 127,0,0 7539:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9437dfdfff40000|@15154,1,@2720|26,0,1 37,1,@7270 7540:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9037dfdfff40000|@15154,1,@2722|26,0,1 37,1,@7270 7541:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9c37cfdfff40000|@15154,1,@2723|26,0,1 37,1,@7270 7542:D3,140|3b650c7305ff552ccd0989c753f7c70100000075678b07ff77048b7c24148b7424108b54240c5756528b5c2410e86e00000089c7578b7c24188b7424148b5424105756528b4424108b5c2414e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f4000000|@10030,1,@2727|46,1,@7543 129,0,0 7543:D3,244|3b650c7305ff552ccd09ff30ff7004ff70088b400c8b7424188b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000895f08897704c70704f13db157bb887668b1e8fac7f8ff89c68b3c248b1783fa01754b89ff8b57048b4c241483f901750889ff8d642404eb338d6424048b7c24108b3f8b4f048b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c70709000000eb0689ff8d6424048b54240c8b45008d40e03b45087305ff5528cdc4894500c740fc07000000c7401801000000c740140100000089501089700c8978088b3c248978048d6424048b3c2489388d642404c20c00f400|@16612,1,@2726|59,0,@7544 65,0,@16610 70,1,@6634 155,0,4 200,0,0 207,0,0 7544:D3,180|3b650c7305ff552ccd058b780c8b4f0489ce8b0983f90375428b5a0889d98b5b048b1b83fb037507bb03000000eb05bb0100000083fb0375228b7e0489ce8b76048b76043bfe7507bf03000000eb05bf0100000083ff037552eb5189f18b3683fe01753d8b5a0889de8b5b048b1b83fb017507bb03000000eb05bb0100000083fb03751d89cf8b7f0c8b76048b760c3bfe7507bf03000000eb05bf01000000eb05bf0100000083ff037401c38b4204c3f4000000|@16609,1,@2724|41,0,1 48,0,0 73,0,1 80,0,0 116,0,1 123,0,0 148,0,1 155,0,0 162,0,0 7545:D3,12|3b650c7305ff552ccd01c3f4|@16611,1,@2725| 7546:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9f379fdfff40000|@15154,1,@2728|26,0,1 37,1,@7270 7547:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@2729|11,0,0 7548:D3,240|3b650c7305ff552ccd0d89c7528b378d1c750100000083fb01750ab9f00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878f00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b3c248b470489ff8b77088d6424048b54240451ff742404bb03000000895424088974240ce9d678fdff8d642404b8780566b18b5d04ff23f4000000|@16615,1,@2730|28,0,@15144 48,0,4 69,0,16777215 127,0,0 153,0,@15144 158,0,43 205,0,1 218,1,@7270 227,0,@9465 7549:D3,168|3b650c7305ff552ccd0550ff7204ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff722cff742414ff74241cff742424ff74242c8b5424348b4424188b5c241c8b4c24208b7424408b7c2410897c241c8b7c2414897c2420894424248b44243c895c24288b5c2438894c242c8b7c240c897c24308b7c2408897c24348b7c2404897c24388b3c24897c243c895424408974241883c418e979abffff8d642440f4|@16599,1,@2731|159,1,@7497 7550:D3,716|3b650c7305ff552ccd0950538b7c243083c70257710e8d64240cb8f80466b18b5d04ff238b7c24048b178b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700f4f63db1ff128b7c243c8b178b7c24308b45008d40f03b45087305ff5528cd84894500c740fc030000008978088b3c24897804c70010f83db1ff128b7c242c8b7424288b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70054fb3db16a016a016a0189e3e8ae4efaffff3424ff742408ff742410ff742420f6042401752e8b3c248b0789ffff77048b5c244c8b7c2448ff74242057ff742414e87d0700005e8934243b650c7303ff552cebcc8d642404ff742420f60424010f85800000008b342489f7ff3689ffff7704ff742460ff742454ff742450ff7424608b7c245c8b7424548b5424508b4c244c8b5c24488b442444ff74240cff74240cff74243cff742410ff74241057ff742434ff7424405652515350ff7424708b44244c8b5c2470e89a0a00008d6424105e8d6424048934243b650c7303ff552ce976ffffff8d64241cff742408f6042401752a8b34248b3e89f6ff7604ff77088b3c24ff378b3c2489feff3789f68b460c89f68b7e1089f6ff7618eb0c8d642410b801000000c23000f7c701000000751f8b178b77048b0a83f90175058b7204eb1389f73b650c7305ff552ccd81ebd9be0cd067b18b7c24408b4c24448b55008d52f03b55087305ff5528cdc3895500c742fc03000000894a08897a04c702181c3eb1bb807d68b18b7c24448b4c243c6a035756525189da8b5c242ce8c12600008b342489f783fe01750e8d642424b8b07766b18b5d04ff2389ff8b3f8d642404c707010000008b7c24448b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c24048978048b3c2489388d642404ff128b3c248b742404893e8d6424085e8934243b650c7303ff552ce9d5fefffff400|@16654,1,@2762|27,0,@9455 76,0,@7551 129,0,@7552 177,0,@7554 190,1,@6921 243,1,@7555 378,1,@7556 468,0,0 515,0,@14696 561,0,@7573 566,0,@16644 591,1,@7574 610,0,@10986 629,0,0 7551:D3,264|3b650c7305ff552ccd05528b70048b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e83ec3f8ff89c78b3783fe0d0f85ae0000008b77048b7f0889fa83e20983fa017507bb03000000eb05bb0100000083f30283e70383ff017507bf03000000eb05bf0100000083f702b9cc5366b18b55008d52f83b55087305ff5528cdca895500c742fc01000040890a8b0c248b49048d6424048d0ccdf9ffffff83fb037507bb09000000eb05bb010000000bcb83c9050bcf8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d000000893eb801000000c38d642404b81c8967b18b5d04ff23f4|@16617,1,@2732|53,0,6 58,1,@6635 92,0,1 99,0,0 115,0,1 122,0,0 130,0,@10423 185,0,4 192,0,0 237,0,6 244,0,0 254,0,@13817 7552:D3,312|3b650c7305ff552ccd0589c7528b07ff77048b7c24048b7f088b5730ff1289c783ff010f85020100008b34248b3e89f68b76048d6424048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e8fec1f8ff89c78b3783fe0d0f85ae0000008b77048b7f0889fa83e20983fa017507bb03000000eb05bb0100000083f30283e70383ff017507bf03000000eb05bf0100000083f702b9cc5366b18b55008d52f83b55087305ff5528cdca895500c742fc01000040890a8b0c248b49048d6424048d0ccdf9ffffff83fb037507bb09000000eb05bb010000000bcb83c9050bcf8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d000000893eb801000000c38d642404b81c8967b18b5d04ff238b075b83c404e916000000f400|@16617,1,@2734|89,0,6 94,1,@6635 128,0,1 135,0,0 151,0,1 158,0,0 166,0,@10423 221,0,4 228,0,0 273,0,6 280,0,0 290,0,@13817 306,1,@7553 7553:D3,484|3b650c7305ff552ccd0950538b7424048b3e89f68b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e8d2c0f8ff89c78b3783fe0d0f8584010000ff7704ff77088b7424088b3e89f68b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e889c0f8ff89c78b3783fe0d0f852d0100008b77048b57085bc1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb10b8b02f66b15652e8db65e8ff5a5e89c7f7c7010000000f84d600000089d3c1eb0383cb01f6c301740783fb017d12eb140fb653ff8d14550100000083fa23740489daeb10b8b02f66b15657e89765e8ff5f5e89c2f6c2010f84870000003bfa7e438b7c24048b3789ff8b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b3424893e8d642408b80100000083c404c38d6424088b3c248b1789ff8b4f048d6424048b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d000000893eb801000000c38d64240cb8d02f66b18b5d04ff238d64240cb8d02f66b18b5d04ff238d642410b81c8967b18b5d04ff238d642408b81c8967b18b5d04ff23f40000|@16618,1,@2733|57,0,6 62,1,@6635 130,0,6 135,1,@6635 198,0,@9958 205,1,@4895 266,0,@9958 273,1,@4895 339,0,6 353,0,0 413,0,6 420,0,0 430,0,@9960 444,0,@9960 458,0,@13817 472,0,@13817 7554:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7610f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab9f00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce9a46ffdff8d642408b8780566b18b5d04ff23f400|@16619,1,@2735|60,0,@14696 80,0,@15144 100,0,4 121,0,16777215 179,0,0 205,0,@15144 210,0,43 255,0,1 268,1,@7270 277,0,@9465 7555:D3,912|3b650c7305ff552ccd09538b7804f7c7010000000f859c0200008b3fff37ff7708ff7008ff70108b7c240c8b7f04ff378b77088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24188b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240457becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b7424288d34f5f9ffffff8b55008d52f03b55087305ff5528cdc0895500c742fc03000000897208897a04c7020d000000beffffffff8b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408937be2c0268b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04c70605000000bf010000008b5d008d5bf83b5d087305ff5528cdc4895d00c743fc01000040893bbf010000008b4d008d49f83b4d087305ff5528cdcc894d00c741fc010000408939bf010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7ff03b7d087305ff5528cd4f897d00c747fc03000000894708895f04890f8b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000008939bb010000008b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000040891f8b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000000893b8b7d008d7fe03b7d087305ff5528cd4e897d00c747fc07000000895f18894f148b0c24894f108d64240489570c897708c74704050000008b34248937578b7c24148b37bf01000000eb0e8d642404b8b87868b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd08b742408893e83ff01751e8b7c242457ff74241468187968b18b442424bb03000000e8656cfdffeb00ff7424108b4424088b5c241ce85603faff8b5c2424ff742418ff7424146a018b442410e85bb5fdff8b342489f78b54240c89328b5424208b45008d40f43b45087305ff5528cd84894500c740fc0200000089ff8978048d6424048b3c2489388d6424048b7c2414897c242083c420ff22f40000|@16624,1,@2736|82,0,0 95,0,0 134,0,2 167,0,0 213,0,@10423 290,0,6 295,0,-1 328,0,@15112 394,0,2 399,0,0 432,0,0 465,0,0 560,0,0 671,0,2 688,0,0 699,0,@16620 731,0,@9455 777,0,@16623 786,0,1 791,1,@7270 810,1,@6891 833,1,@7332 7556:D3,1704|3b650c7305ff552ccd0950538b7c24048b7708ff3689ff89faff3789d28b7a0489d289d6ff720c89f6ff7614becc5366b18b55008d52f83b55087305ff5528cdc0895500c742fc010000408932be1f4e00008d0cf5f9ffffff8b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c7060d0000005657f60424010f859b0000008b342489f7ff3689ffff7704ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff742418ff74243cff74241cff74241cff74241cff74241cff74241cff742450ff742420575652515350ff742468ff7424688b4424648b9c2480000000e8af0500008d64241c5e8d6424048934243b650c7303ff552ce95bffffff8d642404ff742420f604240175778b34248b3e89f6ff76048b7f088b3f8b7f1483ff01750e8d642424b8b07766b18b5d04ff238b3fff378b34248b06ff77088b7c24208b1fe8741900008b3c248b3f83ff01750489c7eb0989fbe8db19000089c78b3424893e8d6424048b3c24c707010000008d6424045e8934243b650c7303ff552ceb838d6424048b7c24108b5f0cba0c6368b18b0424e8452affff89c7f7c7010000000f8558030000ff378b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c241c893e8b5424588b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c240c894f1089570c8b542418895708897704c70719000000578b7c24588b742450ff7424085756b8906b68b18b5c240ce8bb89ffff89c7578b7c241c8b17becc5366b18b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408933be94d967b18b4d008d49f83b4d087305ff5528cdcc894d00c741fc010000408931be147c68b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089308b75008d76e83b75087305ff5528cd8f897500c746fc050000008946108b44241489460c895e08894e0489168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304c7031d00000089ff8b7f0c8b74245c8b542454575652b8847c68b1e8e688ffff89c757ba106968b18b4424608b5c24588b7c24585768dc6968b1e8638bffff89c28b44240cff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706987c68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c245c8b7f34eb0c8d64241cb801000000c23800f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e99b0000008b3f8b3781feec01c0b075058b5f08eb0e8d642428b8483366b18b5d04ff238b442404e8c486fcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241489700c8b34248970088d642408897804c700030000008b7c24548b7f0c8b7424548b5630c707030000008b7c2420897c245883c458ff22f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642428b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e915ffffff8d642428b8483366b18b5d04ff23f4000000|@16642,1,@2753|45,0,@10423 78,0,9999 123,0,6 265,1,@7557 336,0,@10986 364,1,@7570 385,1,@7571 405,0,0 439,0,@16477 447,1,@7452 494,0,0 556,0,12 576,0,@16535 585,1,@7487 599,0,@10423 632,0,@14765 665,0,@16637 772,0,14 793,0,@16639 798,1,@7487 806,0,@16516 824,0,@16520 829,1,@7488 872,0,0 909,0,@16528 944,0,@16529 980,0,0 987,0,0 994,0,0 1000,0,0 1033,0,0 1070,0,@10448 1143,0,@10448 1216,0,@10448 1251,0,@16640 1287,0,0 1294,0,1 1301,0,3 1307,0,0 1326,0,0 1350,0,@4656 1401,0,0 1411,0,@10769 1426,0,@4656 1442,0,@9999 1456,1,@7172 1538,0,1 1558,0,1 1592,0,@4656 1643,0,0 1657,0,@11247 1672,0,@4656 1691,0,@9999 7557:D3,3500|8d7c249c3b7d0c7305ff5530cd09538b38ff7004ff7008ff37ff7704ff770c8b55008d52f43b55087305ff5528cd01895500c742fc02000000c74204010000008902bf010000008b5d008d5bf83b5d087305ff5528cd84895d00c743fc01000040893bbf94d967b18b4d008d49f83b4d087305ff5528cd8c894d00c741fc010000408939bf902d66b18b75008d76f83b75087305ff5528cd8e897500c746fc01000040893ebf902d66b18b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f108b5c240c895f0c894f0889570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b54245c8b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c240c894f1089570c8b542414895708897704c70719000000578b7c24088b77048b7c245c8b7f0c893e8b7c24588b45008d40f03b45087305ff5528cd80894500c740fc030000008b3424897008897804c700a8143eb16a016a016a0189e3e8013bfaffff34248b4c2408ff74240c8b7c246883c70257710e8d642434b8f80466b18b5d04ff238b5c24708b7c24688b7424648b54246057565251ff7424108b442438e8150d000089c757f6042401757f8b3c248b3f8b34248b760483fe017502eb6b8b0424bb03000000e8ad1bf8ff89c7578b0424e85e1cf8ff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70707000000eb05bf902d66b18b742460893e8b7c24688b77188b54245c8b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2408894f0c895708897704c7079c163eb1578b7c246cff77208b7c2470ff77108b7c2474ff77348b7c2478ff77148b7c247cff772c8b7c244c8b4f048bbc24940000008b57048bbc24800000008b77308b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c707f8163eb1578bbc2484000000ff77088bbc2488000000ff770c8bbc248c000000ff378bbc24900000008b4f288bbc2490000000ff77048bbc24940000008b771c8bbc24940000008b9c24840000008b55008d52ec3b55087305ff5528cdca895500c742fc040000008b44243889420c895a08897a04c70254173eb18b7d008d7fc43b7d087305ff5528cd46897d00c747fc0e0000008b5c241c895f348b5c2410895f308b5c2414895f2c894f288957248b54242489572089771c8b7424288977188b7424188977148b7424208977108b74240889770c8b74240c8977088b34248977048d6424045e8d6424248937578b5c24588b4424488b7c24788b7424548b5424508b4c244cff3424ff742438ff74243c5756525189da89c38b442424ff1289c78d64240457f6442424010f856b0300008b7c24248b07ba980668b18b7c24788b7424688b4c246c8b5d008d5bec3b5d087305ff5528cdc7895d00c743fc04000000894b0c897308897b04c703c8193eb18b7c247857e82267fdff89c757ba0c6368b18b4424048b1c24e8ae20ffff89c7f7c7010000000f85fa020000ff378bbc24800000008b742478ff7424085756b8c87a68b18b5c2448e87f80ffff89c757b801000000e8323bfcff89c7ba48f167b18b74247c57566a018b442414bb214e0000e81547fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706687068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ba106968b18b8424880000008b9c24800000008bbc24800000005768dc6968b1e82882ffff89c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706dc7a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578bbc24800000008b7f34e9a0040000e9920400005b8b7c2440891f8b0424e8020c000089c78d64240457ba0c6368b18b5c243c8b0424e87a1dffff89c7f7c7010000000f85eb020000ff378b7c24788b742470ff7424045756b8247b68b18b5c242ce84e7dffff89c757b801000000e80138fcff89c7ba48f167b18b4424448b74247457566a01bb214e0000e8e443fcff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706347b68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ba106968b18b8424800000008b5c24788b7c24785768dc6968b1e8fd7effff89c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706587b68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24748b7f34eb0c8d642438b801000000c24400f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9920000008b3f8b3781feec01c0b075058b5f08eb0e8d642438b8483366b18b5d04ff238b44241ce8667afcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74242c89700c5e897008897804c700030000008b7c24708b7f0c8b7424708b5630c70703000000ff1283c434e90ffffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642438b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e91effffff8d642438b8483366b18b5d04ff235b83c404e966fbfffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e98f0000008b3f8b3781feec01c0b075058b5f08eb0e8d642444b8483366b18b5d04ff238b442428e8f778fcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74243889700c5e897008897804c700030000008b7c247c8b7f0c8b74247c8b5630c70703000000ff12e911fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642444b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e921ffffff8d642444b8483366b18b5d04ff23f40000|@16636,1,@2749|60,0,0 67,0,0 100,0,@14765 133,0,@9922 166,0,@9922 274,0,0 332,0,12 394,0,@7558 407,1,@6921 437,0,@9455 475,1,@7559 510,0,1 515,1,@6475 526,1,@6476 561,0,1 570,0,0 609,0,3 616,0,@9922 678,0,@7560 782,0,@7561 901,0,@7562 1095,0,@15147 1148,0,@7567 1158,1,@7273 1166,0,@16477 1178,1,@7452 1216,0,@16628 1225,1,@7487 1233,0,0 1238,1,@7128 1245,0,@14942 1262,0,10000 1267,1,@7139 1302,0,0 1339,0,@10448 1374,0,@16575 1410,0,0 1417,0,0 1424,0,0 1430,0,0 1436,0,@16516 1463,0,@16520 1468,1,@7488 1511,0,0 1548,0,@16528 1583,0,@16529 1619,0,0 1626,0,0 1633,0,0 1639,0,0 1672,0,0 1709,0,@10448 1776,0,@10448 1847,0,@10448 1882,0,@16629 1918,0,0 1925,0,1 1932,0,3 1938,0,0 1974,1,@7569 1986,0,@16477 1998,1,@7452 2033,0,@16631 2042,1,@7487 2050,0,0 2055,1,@7128 2062,0,@14942 2079,0,10000 2084,1,@7139 2119,0,0 2156,0,@10448 2191,0,@16632 2227,0,0 2234,0,0 2241,0,0 2247,0,0 2253,0,@16516 2274,0,@16520 2279,1,@7488 2322,0,0 2359,0,@16528 2394,0,@16529 2430,0,0 2437,0,0 2444,0,0 2450,0,0 2483,0,0 2520,0,@10448 2587,0,@10448 2658,0,@10448 2693,0,@16634 2729,0,0 2736,0,1 2743,0,3 2749,0,0 2768,0,0 2792,0,@4656 2843,0,0 2853,0,@10769 2868,0,@4656 2884,0,@9999 2898,1,@7172 2974,0,1 2994,0,1 3025,0,@4656 3076,0,0 3090,0,@11247 3105,0,@4656 3124,0,@9999 3159,0,@4656 3210,0,0 3220,0,@10769 3235,0,@4656 3251,0,@9999 3265,1,@7172 3341,0,1 3361,0,1 3389,0,@4656 3440,0,0 3454,0,@11247 3469,0,@4656 3488,0,@9999 7558:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7610f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab9ac7968b1e98f00000089de83c64e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beac7968b1b94f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce95056fdff8d642408b8780566b18b5d04ff23f400|@16626,1,@2737|60,0,@14696 80,0,@16625 100,0,4 121,0,16777215 179,0,0 205,0,@16625 210,0,39 255,0,1 268,1,@7270 277,0,@9465 7559:D3,172|3b650c7305ff552ccd0989c753f7c7010000000f85830000008b07ff77048b5c24108b7c240c8b74241c8b5424188b4c2414576a01680c6d68b16a01ff742414565251e88c8effff89c7578b7c24208b74241c8b5424188b4c24148b5c241057565251538b4424188b5c241ce88fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc214008d642404b801000000c21400f4000000|@10030,1,@2738|54,0,@16549 68,1,@7500 161,0,0 7560:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@2739| 7561:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@2740| 7562:D3,248|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c70060183eb1ff128b3c24ff37be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c240c8b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700b0183eb1ff128b3c24ff378b7c24108b7f048b5724b801000000ff1289c383fb0175065b83c404eb0e8b0424e8cf00000089c38d64240883fb0175055883c408c35883c408e91a010000f400|@16627,1,@2745|12,0,0 86,0,@7563 98,0,0 172,0,@7564 194,0,0 217,1,@7565 242,1,@7566 7563:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2741|53,0,0 7564:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2742|53,0,0 7565:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2743| 7566:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2744| 7567:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49348b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c707641a3eb1ff7424045789f3e8df62fdff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@2747|97,0,@7568 109,1,@7283 127,0,0 7568:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce97b51fdfff40000|@15154,1,@2746|26,0,1 37,1,@7270 7569:D3,88|3b650c7305ff552ccd0989c789d8f7c701000000753eff378b7f0489c389f8e8dcffffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70005000000c3c3f40000|@11273,1,@2748|79,0,2 7570:D3,104|3b650c7305ff552ccd09a80175538b308b40048b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000895f04893757e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2750|98,0,0 7571:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2751| 7572:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16638,1,@2752|11,0,0 7573:D3,252|3b650c7305ff552ccd058b7a088b7f34f7c701000000753b8b0f8b77048b1981fbec01c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff017507bfe46966b1eb238b3f8b3781feec01c0b075058b5f08eb0ab8483366b18b5d04ff238b4204e90570fcfff7c701000000753b8b0f8b77048b1981fbec01c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075058b5f08eb90b8483366b18b5d04ff23f40000|@16643,1,@2754|33,0,@4656 84,0,0 94,0,@10769 106,0,@4656 118,0,@9999 131,1,@7172 152,0,@4656 203,0,0 213,0,@11247 228,0,@4656 240,0,@9999 7574:D3,440|3b650c7305ff552ccd0d89c789d057538b7c24188b7f34f7c701000000753b8b178b77048b0a81f91c02c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750abfe46966b1e9ca0000008b3f8b3781fe1c02c0b075058b7f08eb0e8d642408b8483366b18b5d04ff23578b7424208b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70703000000576a016a01ff742428ff7004ff742424ff74242cff742434ff7008ff700cff70108b78148b70188b501c8b48208b58248b40285483042420ff742434ff742424ff742424ff742444ff742428ff742428ff742428ff74244cff74242cff74242cff74242c5756525153508b4424708b5c247ce8a00000008d642438b801000000c21400f7c701000000753b8b178b77048b0a81f91c02c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781fe1c02c0b075088b7f08e9e6feffff8d642408b8483366b18b5d04ff23f40000|@16653,1,@2761|40,0,@4662 91,0,0 101,0,@10769 116,0,@4662 132,0,@9999 177,0,1 296,1,@7575 305,0,0 329,0,@4662 380,0,0 394,0,@11247 409,0,@4662 428,0,@9999 7575:D3,3236|8d7c24a03b7d0c7305ff5530cd09508b3c24ff378b7c2404ff770489d8e85a9bf8ff89c78b1789d683fa070f85b30000008d642408ff7704ff742450ff742450ff742450ff742450ff742450ff742450ff742450ff742450ff742450ff742450ff742450ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b44243cff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428575652515350ff7424788b442478bbb07d68b1e8f40b000089c78d64242c8b378b142489328b7f045e8d642408897e04b801000000c2480089f283fe050f85aa0100008d642408ff7704ff77086a016a01ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444548304242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b8424840000008b5c247ce878feffff8d64242c5e5a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757ff742404ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7424588b5424548b4c24508b5c244c8b442448894424488b442438895c244c8b5c2434894c245089542454897424588b3c24897c245c8b7c2404897c24608b7c2408897c24648b7c240c897c24688b7c2410897c246c8b7c2414897c24708b7c2418897c24748b7c241c897c24788b7c2420897c247c8b7c242489bc24800000008b7c242889bc24840000008b7c242c89bc24880000008b7c243089bc248c00000083c444e96bfdffff8d64244489d683fa0b0f8575020000ff77048b7f0c8b570c89d68b52048b1283fa050f85aa01000089f78b7f048b3783fe050f858c0100008b4704ff77088b5c2404e89490ebff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703782d3eb16a016a01548b44240ce8b592f8ffff34246a016a01ff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246cff74246c8b7c246c8b7424688b5424648b4c24608b5c245c8b442458548304242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b8424980000008b5c247ce85ffcffff8d64242cff34246a016a01ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff742478ff7424788b7c24788b7424748b5424708b4c246c8b5c24688b44246468b07d68b1ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c575652515350ff74247c8b84249c0000008d5c2478e8e10a00008d64242c5f8d6424248b742454893e5f897e04b80100000083c408c248008d642410b8a48b67b18b5d04ff23ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428ff742428575652515350ffb424800000008b442478bbb07d68b1e82a0c000089c78d64242c8b378b142489328b7f045e8d642404897e04b80100000083c40cc2480083fe0d0f85f2020000ff7704ff77088b1c24c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0cb8b02f66b1e8b93be8ff89c7f7c7010000000f849d0200008b7424583bfe0f8c210200008b1c24c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0cb8b02f66b1e86c3be8ff89c7f7c7010000000f84d201000081ff1f4e0000741e8b7c24048b3f8b3f83ff097507bf03000000eb05bf0100000083f702eb05bf0100000083ff030f85980100008b7c240883f702578b3c2483ff0375198b7c245c83ef02710e8d642418b8f80466b18b5d04ff23eb05bf1f4e0000578b7c240883e70583ff0174488b7c240483ff03753d8b7c241483ff0375348b7c245c8b7424588b5424548b4c24508b5c244c8b442448575652515350b8448267b1bbb87d68b1e8800c0000be01000000eb06eb008b7424148b7c240883e70983ff017507b803000000eb05b80100000083f0028b7c240483ff03751d8b7c240883e70583ff017507bb03000000eb05bb0100000083f302eb05bb010000008b7c240883e70383ff017507bf03000000eb05bf0100000083f702bacc5366b18b4d008d49f83b4d087305ff5528cdcd894d00c741fc0100004089115a8d14d5f9ffffff83f803750b8d642408b809000000eb098d642408b8010000000bd083fb037507bb05000000eb05bb010000000bd30bd78b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000895708894f04c7070d0000008b14248b1289118b1424893a8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424048957048937eb1c8d642404eb128d642414b8d02f66b18b5d04ff238d6424048b7c240c578b7c24048b3f8b74243c83fe0375568b1789d683fa097512ff77048b7c243cff378b7c2404e96101000089f783ff07752f8b7c24548b7424508b54244c8b4c24488b5c24448b442440575652515350b8448267b1bb187e68b1e8e70a0000eb00e921010000eb298d642414b8d02f66b18b5d04ff238d6424088b74244c5f8b1789168b7f04897e04b801000000c248008b7c24048b3fff342457ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7424648b5424608b4c245c8b5c24588b442454894424548b442438895c24588b5c2434894c245c89542460897424648b3c24897c24688b7c2404897c246c8b7c2408897c24708b7c240c897c24748b7c2410897c24788b7c2414897c247c8b7c241889bc24800000008b7c241c89bc24840000008b7c242089bc24880000008b7c242489bc248c0000008b7c242889bc24900000008b7c242c89bc24940000008b7c243089bc249800000083c450e9dff6ffff8d642444e905ffffff83ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff03752b8d6424048b7c24388b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e90d0200008b3c2483ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755689ca8b4a048b5424383bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7424308b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9990100008b3c24eb1189f73b650c7305ff552ccd80e979ffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755689ca8b4a048b5424303bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7424288b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9120100008b3c24eb1189f73b650c7305ff552ccd80e979ffffff83ff017507bf01000000eb378b178b77048b520c8b5a0489d98b1b83fb03755489ca8b4a048b5424283bd17507ba03000000eb05ba0100000083fa037536bf0300000083ff0375298d6424048b7424208b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98b0000005feb1189f73b650c7305ff552ccd80e97bffffff83ff017507bf01000000eb3f8b178b77048b520c8b5a0489d98b1b83fb030f85a900000089ca8b4a048b54241c3bd17507ba03000000eb05ba0100000083fa030f8587000000bf0300000083ff0375228b7424188b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff01750e8d642414b8407e68b18b5d04ff238b178b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b0000008b742404893ee993fcffff89f73b650c7305ff552ccd80e922fffffff4|@16652,1,@2760|30,1,@6635 187,0,@16645 192,1,@7576 221,0,0 728,1,@5210 765,0,@7577 779,1,@6630 1009,0,@16645 1079,1,@7578 1103,0,0 1118,0,@13837 1261,0,@16645 1266,1,@7579 1295,0,0 1362,0,@9958 1367,1,@4895 1439,0,@9958 1444,1,@4895 1464,0,9999 1484,0,1 1491,0,0 1501,0,0 1544,0,@9455 1556,0,9999 1622,0,@13733 1627,0,@16646 1632,1,@7580 1637,0,0 1662,0,1 1669,0,0 1698,0,1 1705,0,0 1715,0,0 1732,0,1 1739,0,0 1747,0,@10423 1797,0,4 1808,0,0 1820,0,2 1827,0,0 1869,0,6 1933,0,@9960 2031,0,@13733 2036,0,@16648 2041,1,@7580 2059,0,@9960 2088,0,0 2356,0,0 2405,0,1 2412,0,0 2434,0,1 2441,0,0 2478,0,1 2485,0,0 2509,0,1 2516,0,0 2523,0,0 2555,0,1 2616,0,0 2656,0,1 2663,0,0 2673,0,1 2751,0,0 2791,0,1 2798,0,0 2808,0,1 2886,0,0 2926,0,1 2933,0,0 2943,0,1 3019,0,0 3063,0,1 3070,0,0 3084,0,1 3128,0,0 3142,0,@16649 3184,0,0 3197,0,0 3203,0,5 7576:D3,440|8d7c24843b7d0c7305ff5530cd0953a8010f8593010000ff30ff7004ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b4424788b9c2480000000e856ffffff89c7578b7c2438ff77046a016a01ff742448ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb42498000000ffb424980000008bbc24980000008bb424940000008b9424900000008b8c248c0000008b9c24880000008b8424840000005483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424748b8424840000008b9c2480000000ff128d6424305f5e8d6424448b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c248008d6424048b442404c24800f40000|@11273,1,@2755| 7577:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2756|81,0,0 91,0,0 7578:D3,496|3b650c7305ff552ccd0953a8010f85c6010000ff30ff70046a016a01ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7c24608b74245c8b5424588b4c24548b5c24508b44244cff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff742430ff7424305756525153508b8424880000008d9c2480000000e84bffffff8d6424345e5a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff74245457ff742408ff742410ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff742460ff7424608b7424608b54245c8b4c24588b5c24548b442450894424508b442438895c24548b5c2434894c24588954245c8b54243c897424608b3c24897c24648b7c2404897c24688b7c2408897c246c8b7c240c897c24708b7c2410897c24748b7c2414897c24788b7c2418897c247c8b7c241c89bc24800000008b7c242089bc24840000008b7c242489bc24880000008b7c242889bc248c0000008b7c242c89bc24900000008b7c243089bc24940000008b7c2448897c244c83c44cff228d6424485f8b7424048937c7470403000000b801000000c24c00f4|@11273,1,@2757|483,0,1 488,0,0 7579:D3,432|8d7c24883b7d0c7305ff5530cd0953a8010f858c010000ff30ff7004ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b4424788b9c2480000000e856ffffff89c7576a016a01ff742444ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb424940000008bbc24940000008bb424900000008b94248c0000008b8c24880000008b9c24840000008b8424800000005483042430ff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242cff74242c5756525153508b5424748b8424800000008b9c24b8000000ff128d6424305f5e8d6424408b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c248008d6424048b442404c24800f400|@11273,1,@2758| 7580:D3,732|3b650c7305ff552ccd095053b801000000e80615fcff89c78b7424208b7634f7c601000000753b8b0e8b56048b1981fbec01c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750abee46966b1e9e60100008b368b1681faec01c0b075058b5e08eb0e8d642408b8483366b18b5d04ff238b75008d76f43b75087305ff5528cd88897500c746fc020000008b542404895604c70607000000568b5424208b44241c8b74241857566a01ff1289c78b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702545566b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b54240cb801000000ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642404897804c700030000008b7c24188b7f0c8b7424188b5630c707030000008b3c24897c241883c418ff22f7c601000000753b8b0e8b56048b1981fbec01c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750e8d642408b8489d66b18b5d04ff238b368b1681faec01c0b075088b5e08e9cafdffff8d642408b8483366b18b5d04ff23f40000|@16647,1,@2759|13,0,0 18,1,@7128 48,0,@4656 99,0,0 109,0,@10769 124,0,@4656 140,0,@9999 184,0,3 244,0,3 277,0,0 314,0,@10448 380,0,@10448 454,0,0 461,0,0 468,0,3 474,0,0 484,0,0 568,0,1 588,0,1 621,0,@4656 672,0,0 686,0,@11247 701,0,@4656 720,0,@9999 7581:D3,168|3b650c7305ff552ccd0550ff7204ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff722cff742414ff74241cff742424ff74242c8b5424348b4424188b5c241c8b4c24208b7424408b7c2410897c241c8b7c2414897c2420894424248b44243c895c24288b5c2438894c242c8b7c240c897c24308b7c2408897c24348b7c2404897c24388b3c24897c243c895424408974241883c418e9096affff8d642440f4|@16599,1,@2763|159,1,@7497 7582:D3,316|3b650c7305ff552ccd0953a8010f85190100008b38ff7004ff37ff7704ff770cff742410ff74241cff742448ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff74240cff74240cff74240cff74240c5756525153508b54243c8b4424408b5c2438ff1289c68d64241c8b3c2489378d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240457ff742438ff742438ff742438ff742438ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff742410ff742410ff742410ff742410ff7424105756525153508b4424448b5c2448e803ffffff89c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc22c008d642404b801000000c22c00f4000000|@10030,1,@2764|305,0,0 7583:D3,168|3b650c7305ff552ccd05ff720450ff7208ff720cff7210ff7214ff7218ff721cff7220ff7224ff7228ff722cff7230ff742414ff74241cff7424248b4c242c8b5424308b4424188b5c241c8b7424408b7c240c897c241c8b7c2410897c24208b7c2414897c2424894424288b442438895c242c8b5c24348b7c2408897c24308b7c2404897c24348b3c24897c2438895424408b54243c894c243c8974241883c418ff228d642440f4|@16657,1,@2765| 7584:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2766| 7585:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2767| 7586:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2768| 7587:D3,136|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c70004393eb1ff128b3c24ff378b7c24088b7f048b5724b801000000ff1289c383fb0175055883c408c35883c408e965000000f4|@16658,1,@2771|12,0,0 86,0,@7588 108,0,0 131,1,@7589 7588:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2769|53,0,0 7589:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2770| 7590:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16658,1,@2772|11,0,0 7591:D3,308|3b650c7305ff552ccd0953a8010f85130100008b30ff70048b3eff7604ff76088b74240c8b5e348b5424188b4c24148b75008d76ec3b75087305ff5528cd8e897500c746fc040000008b042489460c894e08895604c706283b3eb15756b8880768b1e8a148fdff89c78b742404893e83ff01750b8d642408bf01000000eb478b3f8b75008d76f43b75087305ff5528cd80897500c746fc020000008b14248956048d642404893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893783c40483ff017517585b8b7424088b5424048954240489742408e91effffffff378b7c24148b74241057568b44240c8b5c2410e805ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f400|@11291,1,@2774|87,0,@7592 94,0,@15155 99,1,@7284 121,0,0 299,0,0 7592:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9b730fdfff40000|@15154,1,@2773|26,0,1 37,1,@7270 7593:D3,256|3b650c7305ff552ccd0953a8010f85de000000ff30ff7004ff742408ff742414ff742440ff742440ff742440ff7424408b7c24408b74243c8b5424388b4c24348b5c24308b44242cff74240cff74240cff74240cff74240c5756525153508b54243c8b4424448b5c2438ff1289c757ff742454ff742454ff742454ff742454ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442440ff742410ff742410ff742410ff742410ff7424105756525153508b44245c8b5c2464e83effffff89c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642428c22c008d642404b801000000c22c00f40000|@10030,1,@2775|246,0,0 7594:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7608f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab9f00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce97c2efdff8d642408b8780566b18b5d04ff23f400|@16615,1,@2776|60,0,@14696 80,0,@15144 100,0,4 121,0,16777215 179,0,0 205,0,@15144 210,0,43 255,0,1 268,1,@7270 277,0,@9465 7595:D3,196|3b650c7305ff552ccd0953a8010f85a20000008b38ff70048b7f08f7c701000000754a8b07ba980668b18b7c24108b74240c8b5d008d5bec3b5d087305ff5528cdc5895d00c743fc040000008b4c2404894b0c897308897b04c703883e3eb18b7c241057e87b34fdff89c7eb05bfcc5366b1578b7c24148b74241057568b44240c8b5c2410e876ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f40000|@10030,1,@2779|38,0,@15147 91,0,@7596 101,1,@7273 110,0,@10423 186,0,0 7596:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49348b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c707243f3eb1ff7424045789f3e81f3efdff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@2778|97,0,@7597 109,1,@7283 127,0,0 7597:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9bb2cfdfff40000|@15154,1,@2777|26,0,1 37,1,@7270 7598:D3,744|8d7c24a03b7d0c7305ff5530cd0950538b7c243083c70257710e8d64240cb8f80466b18b5d04ff238b7c24048b178b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c70060423eb1ff128b7c24388b178b7c24308b45008d40f03b45087305ff5528cd84894500c740fc030000008978088b3c24897804c7007c433eb1ff128b7c242c8b7424288b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700c8443eb16a016a016a0189e3e85a03faffff3424ff7424086a016a016a01b80100000089e3e8e989f9ffff34248b7c2408ff74240c8b7424548b54244c8b4c24588b5c24505756525153ff74243c8b4424488b5c242ce88805000089c757ff3424ff742438f6442404010f85a9000000f60424010f85990000008b74240489f7ff3689ffff77048b74240889f7ff3689ffff7704ff742474ffb42480000000ff74246cff74247c8b7c24708b74246c8b5424688b4c24648b5c24788b44247cff74240cff742430ff742460ff742414ff742440ff742418ff742418575652ff74247c5153508b4424548b5c244ce82d0800008d6424108b7424085a8d64240c891424897424043b650c7303ff552ce952ffffff8d642408eb048d642408ff3424ff7424388b7c240489fe83ff0175538b3c2483ff018d64240475398d6424208b7c24408b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70080513eb15a8b7c2418897c244483c444ff228d64243cb8b0a166b18b5d04ff2389f689f7ff3689ffff7704f6442408010f858b0000008b7424088b3e89f6ff76048b4704ff7708e8a959ffff89c78b74246c8b4c24708b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c702e8513eb1bb807d68b18b7424708b4c24685756ff742408525189da8b4424208b5c2458e80ddbffff8d6424048b7424045a8d642408891424897424043b650c7303ff552ce901ffffff8d642448b8b0a166b18b5d04ff23f400|@16679,1,@2794|31,0,@9455 80,0,@7599 133,0,@7600 181,0,@7601 194,1,@6921 212,0,0 219,1,@6866 268,1,@7602 419,1,@7605 535,0,@7611 558,0,@11274 607,1,@7494 655,0,@7612 660,0,@16644 691,1,@7574 733,0,@11274 7599:D3,264|3b650c7305ff552ccd05528b70048b3e8b76048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e8d277f8ff89c78b3783fe0d0f85ae0000008b77048b7f0889fa83e20983fa017507bb03000000eb05bb0100000083f30283e70383ff017507bf03000000eb05bf0100000083f702b9cc5366b18b55008d52f83b55087305ff5528cdca895500c742fc01000040890a8b0c248b49048d6424048d0ccdf9ffffff83fb037507bb09000000eb05bb010000000bcb83c9050bcf8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d000000893eb801000000c38d642404b81c8967b18b5d04ff23f4|@16668,1,@2780|53,0,6 58,1,@6635 92,0,1 99,0,0 115,0,1 122,0,0 130,0,@10423 185,0,4 192,0,0 237,0,6 244,0,0 254,0,@13817 7600:D3,312|3b650c7305ff552ccd0589c7528b07ff77048b7c24048b7f088b5730ff1289c783ff010f85020100008b34248b3e89f68b76048d6424048b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000e89276f8ff89c78b3783fe0d0f85ae0000008b77048b7f0889fa83e20983fa017507bb03000000eb05bb0100000083f30283e70383ff017507bf03000000eb05bf0100000083f702b9cc5366b18b55008d52f83b55087305ff5528cdca895500c742fc01000040890a8b0c248b49048d6424048d0ccdf9ffffff83fb037507bb09000000eb05bb010000000bcb83c9050bcf8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070d000000893eb801000000c38d642404b81c8967b18b5d04ff238b075b83c404e9aab4fffff400|@16668,1,@2781|89,0,6 94,1,@6635 128,0,1 135,0,0 151,0,1 158,0,0 166,0,@10423 221,0,4 228,0,0 273,0,6 280,0,0 290,0,@13817 306,1,@7553 7601:D3,288|3b650c7305ff552ccd0d89c7528b7424088b7610f7c601000000751f8b0e8b56048b1983fb0175058b7104eb1389d63b650c7305ff552ccdc0ebd9be0cd067b1568b378d1c750100000083fb01750ab9f00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b7c24048b470489ff8b77085a8d64240451ff742404bb03000000895424088974240ce93026fdff8d642408b8780566b18b5d04ff23f400|@16669,1,@2782|60,0,@14696 80,0,@15144 100,0,4 121,0,16777215 179,0,0 205,0,@15144 210,0,43 255,0,1 268,1,@7270 277,0,@9465 7602:D3,236|3b650c7305ff552ccd0953a8010f85c90000008b38ff7004ff378b570c8b77108b4c24248b7d008d7fe83b7d087305ff5528cd46897d00c747fc050000008b5c2408895f1089770c894f08895704c707fc463eb1578b7c24148b5424248b4c24208b5c241c8b442418576a0168d88168b156525153508b4424248b5c2420e8315effff89c7578b7c242c8b7424288b5424248b4c24208b5c241c8b4424185756525153508b4424248b5c2428e84fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642414c218008d642404b801000000c21800f4000000|@10030,1,@2785|80,0,@7603 109,0,@16671 127,1,@7500 225,0,0 7603:D3,120|3b650c7305ff552ccd0552508b3c2489f8ff77048b7c24088b5710ff128b7c24088b770c83fe03750d89ff8b57088b442404ff12eb008b7424088b7e0489fa8b0f8b7d008d7ff43b7d087305ff5528cd06897d00c747fc02000000894f048b0c24890f8d64240489d6893eb80100000083c408c3f4000000|@16670,1,@2783|108,0,0 7604:D3,412|3b650c7305ff552ccd01ff30ff70048b7008bfffffffff8b55008d52f83b55087305ff5528cdc0895500c742fc01000040893abf2c0268b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089398b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c70705000000ba010000008b5d008d5bf83b5d087305ff5528cdc4895d00c743fc010000408913b9010000008b55008d52f83b55087305ff5528cdca895500c742fc01000040890ab9010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089088b4d008d49f03b4d087305ff5528cdcd894d00c741fc0300000089410889590489118b55008d52f83b55087305ff5528cdc2895500c742fc01000000890ab9010000008b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040890b8b4d008d49f83b4d087305ff5528cdcc894d00c741fc0100000089198b45008d40e03b45087305ff5528cdc6894500c740fc070000008948188950148970108b342489700c8d642404897808c74004050000008b3c2489388d642404c3f40000|@16550,1,@2784|19,0,-1 52,0,@15112 118,0,2 123,0,0 156,0,0 189,0,0 284,0,0 395,0,2 7605:D3,1600|3b650c7305ff552ccd0950ff33ff7304ff7308ff73108b342489f783fe0375338b74244c8b56188b4c24488b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c7068c4f3eb1eb078b74244c8b7618568b742450ff76208b742454ff76108b742458ff76348b74245cff76148b742460ff762c8b74245c8b5e048b7424588b4e048b7424648b56308b75008d76ec3b75087305ff5528cd8e897500c746fc04000000895e0c894e08895604c706d44f3eb1568b742468ff76088b74246cff760c8b742470ff368b7424748b5e288b7424748b76048b5424748b521c89ff83ff0375308b7c24748b4424648b4d008d49f03b4d087305ff5528cdcd894d00c741fc03000000894108897904c70130503eb1eb078b7c24748b4f248b7d008d7fc43b7d087305ff5528cd4e897d00c747fc0e0000008b4424188947348b44240c8947308b44241089472c895f28894f248b4c2420894f2089571c8b5424248957188b5424148957148b54241c8957108b54240489570c8b5424088957088977048b342489378d64242857ff74243c8b44242c8b5c24288b7c243c8b7424388b5424348b4c2430ff742404ff742414ff742418575652518b54241cff1289c757ba0c6368b18b44241c8b1c24e823e1feff89c7f7c7010000000f8547020000ff378b7c24448b74242cff7424205756b8408268b18b5c2428e8f740ffff89c7578b7c24488b742430ff7424085756b8c87a68b18b5c2428e8d840ffff89c757ba106968b18b44244c8b5c24348b7c24345768dc6968b1e85543ffff89c28b442408ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a06a68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706508268b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470407000000c70701000000578b7c24408b7f34e9a40000008d64240c8b3c2483ff038d64240475068b7c2404eb0c8d642410b801000000c238008b3789f283fe2d75118b770489f73b650c7305ff552ccd80ebe689d683fa177507bf03000000eb1b83fe0b75118b770889f73b650c7305ff552ccd80ebc2bf0100000083f70283ff03752e8b4424308b7424145abb03000000c744243c948268b189542440897424448b7c240c897c243883c438e9071efdff8d642410e976fffffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9980000008b3f8b3781feec01c0b075058b5f08eb0e8d642420b8483366b18b5d04ff238b442424e81b3efcff89c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74241089700c8b34248970088d642404897804c700030000008b7c243c8b7f0c8b74243c8b5630c70703000000ff1283c408e971fefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642420b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b5f08e918ffffff8d642420b8483366b18b5d04ff23f400|@16677,1,@2791|77,0,@7606 184,0,@7607 279,0,@7608 457,0,@16477 469,1,@7452 504,0,@16673 513,1,@7487 535,0,@16628 544,1,@7487 552,0,@16516 570,0,@16520 575,1,@7488 618,0,0 655,0,@16528 690,0,@16529 726,0,0 733,0,0 740,0,0 746,0,0 779,0,0 816,0,@10448 889,0,@10448 962,0,@10448 997,0,@16674 1033,0,0 1040,0,1 1047,0,3 1053,0,0 1097,0,0 1138,0,1 1167,0,0 1189,0,1 1197,0,@16676 1221,1,@7270 1251,0,@4656 1302,0,0 1312,0,@10769 1327,0,@4656 1343,0,@9999 1357,1,@7172 1439,0,1 1459,0,1 1490,0,@4656 1541,0,0 1555,0,@11247 1570,0,@4656 1589,0,@9999 7606:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@2786| 7607:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@2787| 7608:D3,136|3b650c7305ff552ccd0552be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c700cc503eb1ff128b3c24ff378b7c24088b7f048b5724b801000000ff1289c383fb0175055883c408c35883c408e965000000f4|@16672,1,@2790|12,0,0 86,0,@7609 108,0,0 131,1,@7610 7609:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@16472,1,@2788|53,0,0 7610:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2789| 7611:D3,84|3b650c7305ff552ccd058b388b70048b4e1883f901750ab8b07766b18b5d04ff238b09c701010000008b52048b52088b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff22f4000000|@16678,1,@2792|24,0,@10986 37,0,0 7612:D3,252|3b650c7305ff552ccd058b7a088b7f34f7c701000000753b8b0f8b77048b1981fbec01c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff017507bfe46966b1eb238b3f8b3781feec01c0b075058b5f08eb0ab8483366b18b5d04ff238b4204e9353afcfff7c701000000753b8b0f8b77048b1981fbec01c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075058b5f08eb90b8483366b18b5d04ff23f40000|@16643,1,@2793|33,0,@4656 84,0,0 94,0,@10769 106,0,@4656 118,0,@9999 131,1,@7172 152,0,@4656 203,0,0 213,0,@11247 228,0,@4656 240,0,@9999 7613:D3,1028|3b650c7305ff552ccd0953ff30ff7004ff7010ff7014ff70188b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70701000000578b7c242c8b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7424188b1689d783fa030f85a20000008b75008d76f03b75087303ff5528897500c746fc03000000c74608100666b18b7c240c897e048b7c2414893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704cc5366b18b54240489178b54242857568b442410bb01000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d6424088b7424088937e90301000089f683ff0b751389f68b7e0489f6ff760c8b742408e9b6010000bf0100000083ff010f859f0000008b75008d76f03b75087303ff5528897500c746fc03000000c74608100666b18b7c240c897e048b7c2414893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424188957048b54240489178b54242857568b442410bb01000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d6424088b7424088937eb3c8b378b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d6424048b34248977048d6424048b74240c893783c404578b5c2424ff7424048b442410e890adf9ff8b54241c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c240c8938ff128b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b142489d689178b542408893a8b7c24188b570c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089f689378d64240c8b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b3c2489388d6424048b7c2404897c241483c414ff2283ff01751383fe017507bf03000000eb05bf01000000eb5e8b17ff7704f7c60100000075488b1e8b4e048b0283f80d75318b52048b1b3bd37507ba03000000eb05ba0100000083fa0375115a89ce89d73b650c7305ff552ccdc0eba48d642404eb048d642404bf01000000eb098d642404bf0100000083ff03740b8d642404bf01000000eb378b3c248b770c8d6424048b7e048b3f83ff057507bf01000000eb1c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e98dfdfffff40000|@16683,1,@2795|58,0,0 71,0,0 110,0,2 143,0,0 232,0,@9473 278,0,@10423 299,0,0 394,0,0 434,0,@9473 501,0,0 640,1,@6891 715,0,0 768,0,0 842,0,1 849,0,0 890,0,1 897,0,0 934,0,0 945,0,0 959,0,0 986,0,0 7614:D3,788|3b650c7305ff552ccd09508b3c24ff378b7c2404ff77088b7c24088b7f0cf7c70100000075388b178b77048b0a83f901751e8b7d008d7ff83b7d087305ff5528cd0c897d00c747fc010000008917eb1389f73b650c7305ff552ccd88ebc0bf01000000f7c7010000000f85af0000008b1789d68b1283fa017507ba03000000eb05ba0100000083fa030f858f00000089f78b77048b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707070000008b55008d52f43b55087305ff5528cd88895500c742fc02000000895a04c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893beb468b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000895f04c707030000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b8b7424188b54241c8b7d008d7fe83b7d087305ff5528cd4c897d00c747fc05000000895f108b4c2408894f0c895708897704c707385a3eb1578b7c241c8b7424188b55008d52e83b55087305ff5528cdc8895500c742fc05000000895a108b4c240c894a0c897208897a04c702785b3eb18b7c241c8b4c24148b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e108b5c240c895e0c894e08897e04c706005e3eb18b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088b14248957048d6424048937578b7c24088b3f8d1c7d0100000083fb01750abe500e66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d68b7c24048b078b7c24048b7f10576a0356576a018b5c2414e8a135fdff8d642408b80100000083c408c210008d642410b8780566b18b5d04ff23f4000000|@16686,1,@2803|95,0,0 123,0,1 130,0,0 179,0,3 214,0,1 247,0,0 317,0,1 350,0,0 408,0,@7615 465,0,@7617 521,0,@7621 586,0,@9551 606,0,4 627,0,16777215 685,0,0 751,1,@7293 760,0,0 775,0,@9465 7615:D3,160|3b650c7305ff552ccd0552ff308b7804ff378b47048b7c24088b5f0c89ff8b7f1057e88d00000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c24088b4708ff34248b5c2408e829bfe9ff8b7c24088b7f048b570c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b3c2489388d642408ff22f4000000|@16684,1,@2797|35,1,@7616 95,1,@4928 7616:D3,120|3b650c7305ff552ccd0989c753f7c70100000075538b07ff77048b7c240c578b5c2408e81470ffff89c7578b7c2410578b4424088b5c240ce8c3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f4000000|@10030,1,@2796|36,1,@7509 109,0,0 7617:D3,116|3b650c7305ff552ccd0552ff308b40048b7c24048b5f0c89ff8b7f1057e86600000089c7578b7c24088b4708ff34248b5c2408e814bee9ff8b7c24088b7f048b57288b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b3c2489388d642408ff22f40000|@16684,1,@2801|30,1,@7618 52,1,@4928 7618:D3,292|3b650c7305ff552ccd0989dfff308b7004ff70088b580c8b0e89ca83f90375778b76048b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707030000005783fb0175068b7c2410eb0b8b442410e8dd00000089c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978088b3c248978048d6424088b3c2489388d642404c2040083fa01757d8b76048b57048b7d008d7ff03b7d087305ff5528cd4c897d00c747fc03000000895708897704c707090000005783fb0175068b7c2410eb0b8b442410e8bf00000089c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978088b3c248978048d6424088b3c2489388d642404c204008d642408c20400f4000000|@16685,1,@2800|66,0,1 87,1,@7619 196,0,4 217,1,@7620 7619:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2798| 7620:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2799| 7621:D3,116|3b650c7305ff552ccd0552ff308b40048b7c24048b5f0c89ff8b7f1057e8066dffff89c7578b7c24088b4708ff34248b5c2408e88cbbe9ff8b7c24088b7f048b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d6424048b3c2489388d642408ff22f40000|@16684,1,@2802|30,1,@7509 52,1,@4928 7622:D3,52|3b650c7305ff552ccd098b7c24048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c20400f4000000|@16688,1,@2804| 7623:D3,52|3b650c7305ff552ccd098b7c24048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c20400f4000000|@16688,1,@2805| 7624:D3,52|3b650c7305ff552ccd098b7c24048b45008d40f43b45087305ff5528cd88894500c740fc020000008978048918c20400f4000000|@16688,1,@2806| 7625:D3,92|3b650c7305ff552ccd0552508b04248b48048b7c24048b770c89f28b1e8b75008d76f43b75087305ff5528cd8f897500c746fc02000000895e04890e89ff893289ff8b5708ff128b7c24048b7f048b5708588d642404ff22f4000000|@16691,1,@2807| 7626:D3,44|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b7f048b570c588d642404ff22f40000|@16691,1,@2808| 7627:D3,44|3b650c7305ff552ccd0552508b7c24048b57088b0424ff128b7c24048b7f048b5728588d642404ff22f40000|@16691,1,@2809| 7628:D3,732|3b650c7305ff552ccd098b7b34f7c701000000753b8b178b77048b0a81f92c02c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750abfe46966b1e9000200008b3f8b3781fe2c02c0b075058b7f08eb0ab8483366b18b5d04ff2383ff05750de89759f8ff89c757e9de00000083ff03750ae88559f8ff89c757eb06b801000000c38b3c248b1789d683fa0b0f859100000089ff8b5f0489ff8b7f0c8b570c89d68b52048b1283fa05756d89f78b7f048b3783fe0575538b4704ff7708e82e51ebff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70340633eb16a016a01548b44240ce84f53f8ff5e8d6424088934243b650c7303ff552ce978ffffff8d642404b8a48b67b18b5d04ff238d642404bf01000000eb1789f78d64240483ff057507bf03000000eb05bf0100000083ff037506b8ec8568b1c3b801000000c38b3c248b3789f283fe0d750e8d642404bf03000000e9ca00000089ff89d683fa0b0f859100000089ff8b5f0489ff8b7f0c8b570c89d68b52048b1283fa05756d89f78b7f048b3783fe0575538b4704ff7708e84e50ebff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703d8633eb16a016a01548b44240ce86f52f8ff5e8d6424088934243b650c7303ff552ce961ffffff8d642404b8a48b67b18b5d04ff238d642404bf01000000eb2c89ff83fe07751c89ff8b7f048d64240483ff017507bf03000000eb05bf01000000eb098d642404bf0100000083ff037506b801000000c3b8208668b1c3f7c701000000753b8b178b77048b0a81f92c02c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fe2c02c0b075088b7f08e9b0fdffffb8483366b18b5d04ff23f40000|@16696,1,@2812|30,0,@4664 81,0,0 91,0,@10769 106,0,@4664 118,0,@9999 133,1,@6635 151,1,@6635 161,0,0 226,1,@5210 263,0,@7629 277,1,@6630 307,0,@13837 321,0,0 339,0,1 346,0,0 356,0,@16692 362,0,0 384,0,1 450,1,@5210 487,0,@7630 501,1,@6630 531,0,@13837 545,0,0 573,0,1 580,0,0 591,0,0 601,0,0 607,0,@16694 629,0,@4664 680,0,0 690,0,@11247 705,0,@4664 720,0,@9999 7629:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2810|81,0,0 91,0,0 7630:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@2811|81,0,0 91,0,0 7631:D3,1444|3b650c7305ff552ccd0953ff30ff70048b7808ff7010ff7014f7c70100000075748b07ba980668b18b7c24208b74241c8b5d008d5bec3b5d087305ff5528cdc5895d00c743fc040000008b4c2410894b0c897308897b04c703286a3eb18b7c242057e8bd0dfdff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c747086c6367b1897704c70705000000eb05bf6c6367b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c70701000000578b7c24288b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c24088b1789d683fa1d0f85e202000089ff8b7f04ff37ff7704ff7708ff770cff77108b74242c8b7e1889f68b76348b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b74243c8b5424388b7d008d7fec3b7d087305ff5528cd4c897d00c747fc040000008b4c2404894f0c895708897704c707046b3eb1ff74241057b8c41b68b1e83b5bffff89c7578b342489f7ff760c89ff8b7f0483ff017505e9500100008b7c24188b378d0c750100000083f9017507bf080e66b1eb7889ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87f501000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642042889ff8d77048d7a05d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abe788668b1e98f00000089de83c62c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f875701000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be788668b1b92d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b4424448b7c244057ff74241056bb03000000e85d04fdff8b7c24048b742414893e8b3c2489fa8b742410893e8b7c24348b7f248b742408893ebe010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408937be2c0268b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04c706050000008b7d008d7fe03b7d087305ff5528cd44897d00c747fc07000000c7471801000000c74714010000008b4c241c894f1089d289570c8d64240c897708c74704010000008b742424893783c41ce9de0000008d642438b8780566b18b5d04ff238d642438b8780566b18b5d04ff2389f783ff110f8557010000be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be2c0268b18b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706050000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c74714010000008b14248957108d6424048b142489570c8d642404897708c74704010000008b74240c893783c404578b3c248b742408893e8b5424188b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c24048978048b7c240c8938ff128b5c2420ff7424048b442410e86199f9ff8b5c241c8b7c242057ff7424086a038b442418e8654bfdff8b7c24108b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048d64240c8b3c2489388d6424088b3c24897c240c83c40cff228d64241cb8988668b18b5d04ff23f40000|@16701,1,@2816|36,0,@15147 89,0,@7632 99,1,@7273 134,0,@13287 143,0,2 150,0,@13287 188,0,0 201,0,0 240,0,2 273,0,0 446,0,@7634 456,0,@15406 461,1,@7502 510,0,@9545 527,0,4 548,0,16777215 606,0,0 651,0,@16697 671,0,4 692,0,16777215 750,0,0 776,0,@16697 781,0,22 818,0,1 823,1,@7270 862,0,0 895,0,@15112 961,0,2 994,0,0 1001,0,0 1027,0,0 1050,0,@9465 1064,0,@9465 1085,0,0 1118,0,@15112 1184,0,2 1217,0,0 1224,0,0 1254,0,0 1335,1,@6891 1359,1,@7332 1432,0,@16698 7632:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49348b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c707c46a3eb1ff7424045789f3e87f12fdff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@2814|97,0,@7633 109,1,@7283 127,0,0 7633:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce91b01fdfff40000|@15154,1,@2813|26,0,1 37,1,@7270 7634:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9db00fdfff40000|@15154,1,@2815|26,0,1 37,1,@7270 7635:D3,8032|3b650c7305ff552ccd0d5250538b7c24048b078b7c24048b5f048b7c24048b7f0857e84d1f00008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b3424897704c707d88c3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c7eb0989fbe81d21000089c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770c8b7424088977088b74240c897704c707688d3eb157bf010000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b5424108b521089570c8b5424108b52088957088b5424108b520c895704c707bc8d3eb1893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c707f8943eb18b75008d76f43b75087305ff5528cd80897500c746fc020000008b542410895604c706bc953eb1568b75008d76f43b75087305ff5528cd80897500c746fc020000008b5424148b5204895604c706a8c33eb1568b7424108b36ba446b3eb181c2ca0100008d54b2fcffe2e9f3000000909090e9c2010000909090e98d020000909090e925050000909090e9b8060000909090e921080000909090e93f090000909090e95e090000909090e97a090000909090e98f090000909090e9310a0000909090e9ac0a0000909090e9740b0000909090e9dc0c0000909090e92a0e0000909090e9fc0e0000909090e9ec0f0000909090e9b7100000909090e986110000909090e9ed110000909090e97d120000909090e9fa120000909090e9c5130000909090e9db130000909090e989140000909090e9ee140000909090e9bd150000909090e941160000909090e980160000909090e91e180000909090e9481900009090908d6424048b7c240c8b7f04ff37ff77048b4708ff7710e8635b000089c7578b442404e8d75b000089c7578b442410e84b5c000089c383fb0175035beb0e8b0424e8c15c000089c38d64240483fb0175065883c404eb0c8b0424e80c5d00008d6424088b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240c89378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c2408893be85c3f00008b7c241083ff01750489c7eb0b8b5c2410e80e5d000089c78b7424245a8916897e04b80100000083c41cc204008d6424088b7c24088b7f048b7424088b56088b742408ff760c8b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2404890e8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008973048b7424148b760489338b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8893e00008b7c240883ff01750489c7eb0b8b5c2408e89f5c000089c78b74241c5a8916897e04b80100000083c414c204008d6424088b7c24088b77048b560489d189cf8b1983fb330f857b0100008b4904f6c10175348b4904f6c10175258b490483f90175168b4e0c83f9037507b903000000eb05b901000000eb05b901000000eb05b901000000eb05b90100000083f9030f85310100008b57048b3a8b52048b028b16ff76108b76088b0e8b75008d76f43b75087305ff5528cd87897500c746fc02000000894e04c7061b000000568b75008d76f83b75087305ff5528cd85897500c746fc010000008b4c2408890e8b5d008d5bf43b5d087305ff5528cdc5895d00c743fc020000008973048b7424188b760489338b4d008d49f43b4d087305ff5528cd8d894d00c741fc02000000c741040100000089018b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8113d00008b7c240c83ff01750489c6eb0b8b5c240ce88b5b000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8916897e04b80100000083c414c204008b3eff76108b76088b0e8b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7061b000000568b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2408890e8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008973048b7424188b760489338b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8093c00008b7c240c83ff01750489c6eb0b8b5c240ce8e75a000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8916897e04b80100000083c414c204008b7c24108b7f048b0fff7704ff770cff77108b7f08ff378b75008d76e83b75087305ff5528cd02897500c746fc05000040c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7fe43b7d087305ff5528cd42897d00c747fc06000040c7471401000000c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089f28b5c2418895a10897a0c894a088b4c2428894a04c70264cd3eb18066ffbf89fa8b4c2410894a148b4c240c894a108b4c2418894a0c8972088b4c2404894a04c70218ce3eb18067ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b55008d52f43b55087305ff5528cd80895500c742fc020000005e8d642404897204c7021b0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c241483ff01750489c7eb0b8b5c2414e8a85b000089c78b7424285a8916897e04b80100000083c420c204008d6424088b7424088b4e048b11ff71048b7108ff710cff71108b49148b45008d40f83b45087305ff5528cdc6894500c740fc010000008b5c240c89188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304893bbf010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7ff43b7d087305ff5528cd4f897d00c747fc0200000089470489178b55008d52f43b55087305ff5528cdca895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd8c897500c746fc0200000059894e048b4c2404890e8b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd8e897500c746fc02000000894e0489168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8dd3800008b7c240c83ff01750489c7eb0b8b5c240ce89b5a000089c78b7424205a8916897e04b80100000083c418c204008d6424088b7c24088b4f048b7c2408ff77088b7c240cff770c8b55008d52ec3b55087305ff5528cd02895500c742fc04000040c7420c01000000c7420801000000c7420401000000c702010000008b7d008d7fe83b7d087305ff5528cd06897d00c747fc05000040c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089d68b5c2408895e0c897e08894e04c70644d03eb18062ffbf89fe8b4c2408894e1089560c8b5424048956088b542418895604c70600d13eb18067ffbf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c89570489378b7424205a8d6424108916897e04b80100000083c408c204008d64240c8b7c24048b7f048b7f108b742414893e5f8d642404897e04b80100000083c408c204008d64240c8b7c24048b7f0c8b742414893e5f8d642404897e04b80100000083c408c204008d64240c8b742414c7060cd067b15f897e04b80100000083c40cc204008d6424088b7c24088b47048b7c2408ff77088b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742414897704c707b4d13eb18b75008d76f83b75087305ff5528cd81897500c746fc010000008b54240489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be8a53600008b7c240883ff01750489c7eb0b8b5c2408e8c76e000089c78b74241c5a8916897e04b80100000083c414c204008d6424088b7424088b46048b742408ff76088b75008d76f83b75087305ff5528cd81897500c746fc010000008b54240489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be8223600008b7c240883ff01750489c7eb0b8b5c2408e8a86e000089c78b74241c5a8916897e04b80100000083c414c204008b7c24108b7f048b7424108b46088b742410ff760c8b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071b000000578b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74241089378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c2408893be8723500008b7c241483ff01750489c6eb0b8b5c2414e85c6e000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424245a8916897e04b80100000083c41cc204008d6424088b7c24088b47048b7c2408ff7710bf010000008b75008d76f83b75087305ff5528cd81897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008b5424148b5208895708897704c70770e73eb1893e8b75008d76f43b75087305ff5528cd01897500c746fc02000040c7460401000000c706010000008b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000040c7470801000000c7470401000000c7070100000089f2897a04c7027c473fb18066ffbf89fa8b4c2414894a08897204c702d0473fb18067ffbf8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707584d3fb18b75008d76f83b75087305ff5528cd81897500c746fc010000008b54240489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be8e23300008b7c240883ff01750489c7eb0b8b5c2408e8e0de000089c78b74241c5a8916897e04b80100000083c414c204008b7c24108b4f048b7c2410ff77088b7c2414ff770c8b7c2418ff77108b75008d76e83b75087305ff5528cd02897500c746fc05000040c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7fe43b7d087305ff5528cd42897d00c747fc06000040c7471401000000c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089f28b5c2414895a10897a0c894a088b4c2424894a04c70284593fb18066ffbf89fa8b4c240c894a148b4c2408894a108b4c2414894a0c89720859894a04c702385a3fb18067ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b7c241483ff01750489c7eb0b8b5c2414e806e0000089c78b7424285a8916897e04b80100000083c420c204008d64240c8b7c24048b77048b7e08ff37ff368b7e04ff760c8b5e108b178b326a016a016a0181feb4d967b17502eb2a8b3e8d3c7d0100000083ff170f858a000000bfb4d967b18d76048d7f04b90b0000003bc9f3a67402eb728b13b801000000ff128b5c2410e8e8df000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937c7042401000000c744240401000000897c2408e9f20c0000ff7210ff7214ff742404e9e80a00008d6424088b7c24088b7f088b7424088b460c8b742408ff7610ff378b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742418897704c707945c3fb18b75008d76f83b75087305ff5528cd81897500c746fc010000008b54240889168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be8ff3000008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000005e897704c7071b000000578b7c240c83ff01750489c6eb0b8b5c240ce8d0e5000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8916897e04b80100000083c414c204008d6424088b7c24088b7f048b7424088b56088b742408ff760c8b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2404890e8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008973048b7424148b760489338b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8e72f00008b7c240883ff01750489c7eb0b8b5c2408e841e5000089c78b74241c5a8916897e04b80100000083c414c204008d6424088b7c24088b7f048b7424088b46088b742408ff760c8b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071b000000578b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240889378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c24188b7f04893be8302f00008b7c240c83ff01750489c6eb0b8b5c240ce8eee4000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8916897e04b80100000083c414c204008d64240c8b7c24048b7f048b7424048b560c8b3f8b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7061b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000598d642404894f0489378b74240c8916897e04b80100000083c408c204008d6424088b7424088b76048b1e8b4604ff760c8b55008d52f83b55087305ff5528cd89895500c742fc010000008b74240489328b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893e5683fb017502eb05e84de400008b1c24e80d2e00008d6424048b7c240883ff01750489c7eb0b8b5c2408e88fe4000089c78b74241c5a8916897e04b80100000083c414c204008d6424088b7c24088b7f048b07ff77048b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703949e68b1e8842d00008b7c240883ff01750489c7eb0b8b5c2408e876e5000089c78b74241c5a8916897e04b80100000083c414c204008d6424088b7c24088b7f048b7424088b56088b742408ff760c8b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2404890e8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008973048b7424148b760489338b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8b12c00008b7c240883ff01750489c7eb0b8b5c2408e807e5000089c78b74241c5a8916897e04b80100000083c414c204008d6424105f8b5f048b542404588d6424048b74240489742404e99ee9ffff8d6424088b7c24088b7f048b742408ff76088b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54240489560c897e088b7c2414897e04c706dc663fb18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b7c240883ff01750489c7eb0b8b5c2408e833e5000089c78b74241c5a8916897e04b80100000083c414c204008d64240c8b7c24048b7f088b7424048b56108b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c7061b0000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000598d642404894f0489378b74240c8916897e04b80100000083c408c204008d6424088b7c24088b47048b7c24088b7f088b742408ff760c8b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071b000000578b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240889378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c24188b7f04893be8b92a00008b7c240c83ff01750489c6eb0b8b5c240ce873e4000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8916897e04b80100000083c414c204008d6424048b7c240c8b47048b7c240cff7708e889e400008b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240889378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c2404893be80d2a00008b7c240c83ff01750489c7eb0b8b5c240ce8abe4000089c78b7424205a8916897e04b80100000083c418c204008d64240c8b7c24048b57048b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000005e8d642404897704c707109f68b18b74240c8916897e04b80100000083c408c204008d6424088b7c2408ff77048b7c240cff77108b7d008d7ff43b7d087303ff5528897d00c747fc020000008b7424188b7604897704c70724693fb18b75008d76f83b75087305ff5528cd80897500c746fc010000008b54240889168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b442404e817290000f6442404010f85ec0000008b7c24048b3f8b7424048b56048b3f8b3783fe1d754f8b7f048b3781fe54e867b17502eb268b3e8d3c7d0100000083ff05752bbf54e867b18d76048d7f0433c983c1023bc9f3a67402eb1383fa017507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff03757d8b7c24048b3f8b378b76048b760c8b5f048b7e108b560c3bfa75358b7e088b76043bfe7507bf03000000eb05bf0100000083ff03751a8d6424148b542404588d6424048b74240489742404e985e5ffff8b7c240c83ff01750489c7eb0b8b5c240ce8b7e5000089c78b7424205a8916897e04b80100000083c418c204008b7c240c83ff01750489c7eb0b8b5c240ce8eee5000089c78b7424205a8916897e04b80100000083c418c204008d6424088b7424088b76048b5424088b52088b4c2408ff710c8b4c240c8b49108b45008d40f83b45087305ff5528cdc6894500c740fc010000008b5c240489188b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000894304893bbf010000008b45008d40f83b45087305ff5528cdce894500c740fc0100004089388b7d008d7ff43b7d087305ff5528cd4f897d00c747fc0200000089470489178b55008d52f43b55087305ff5528cdca895500c742fc02000000894a0489328b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8ee2600008b7c240883ff01750489c7eb0b8b5c2408e820e5000089c78b74241c5a8916897e04b80100000083c414c204008d64240c8b7c24048b7f048b742414893e5f8d642404897e04b80100000083c408c20400f60424010f85f40000008b3c24ff378b7c2404ff77048b7c24048b3f83ff010f85c40000008b7c24048b57048b328b7c24208b3f3bf77502eb268b0e8d1c4d010000008b0789c18d0445010000003bd875698d76048d7f043bc9f3a67402eb5b8b7a048b7424208b76043bfe75468b7a088b7424208b76083bfe75318b7a0c8b7424208b760c3bfe751c8b7a108b7424208b76103bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff0375248d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000005e893783c404eb1e5e897424043b650c7303ff552c83c404e902ffffff8d642404bf0100000083ff0175108b442404e8381e000089c7e9cb0000008b742404bf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff897c24085f897c2408c744240c0100000083c404ff34248b7c2408ff74240cf7c701000000757c8b3f8b37ff368b7704ff368b7f088b07e826e300008b7c240483ff01750489c6eb0b8b5c2404e870e3000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707150000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c404eb05b8010000008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74241c897704c7071b000000578b7c240483ff01750489c3eb0b8b5c2404e840e3000089c383fb0175068b5c2424eb0b8b442424e88ee3000089c383fb0175068b742408eb0b8b442408e8dce3000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424348b5424148916897e04b80100000083c430c20400f400|@16904,1,@3010|35,1,@7636 73,0,@7639 108,0,9 141,0,0 159,1,@7640 213,0,@7641 219,0,0 309,0,@7642 348,0,@7646 387,0,@7647 430,0,@7705 442,0,@7635 729,1,@7712 741,1,@7713 753,1,@7714 771,1,@7715 796,1,@7716 872,1,@7670 894,1,@7717 911,0,0 1045,0,0 1083,1,@7670 1105,1,@7718 1122,0,0 1194,0,1 1201,0,0 1208,0,0 1215,0,0 1222,0,0 1286,0,13 1390,0,0 1459,1,@7670 1481,1,@7719 1530,0,0 1581,0,13 1685,0,0 1723,1,@7670 1745,1,@7720 1794,0,0 1856,0,0 1863,0,0 1870,0,0 1877,0,0 1883,0,0 1916,0,0 1923,0,0 1930,0,0 1937,0,0 1944,0,0 1950,0,0 1978,0,@7721 2021,0,@7722 2060,0,4 2100,0,13 2133,0,0 2188,1,@7724 2205,0,0 2307,0,0 2466,0,0 2535,1,@7670 2557,1,@7725 2574,0,0 2638,0,0 2645,0,0 2652,0,0 2658,0,0 2691,0,0 2698,0,0 2705,0,0 2712,0,0 2718,0,0 2739,0,@7726 2775,0,@7727 2814,0,4 2868,0,0 2907,0,0 2943,0,0 2963,0,@14696 2972,0,0 3035,0,@7728 3103,1,@7670 3125,1,@7751 3142,0,0 3234,1,@7670 3256,1,@7752 3273,0,0 3337,0,13 3410,1,@7670 3432,1,@7753 3481,0,0 3510,0,0 3583,0,@7754 3618,0,0 3624,0,0 3657,0,0 3664,0,0 3670,0,0 3681,0,@7762 3703,0,@7763 3742,0,@7770 3810,1,@7670 3832,1,@7786 3849,0,0 3916,0,0 3923,0,0 3930,0,0 3937,0,0 3943,0,0 3976,0,0 3983,0,0 3990,0,0 3997,0,0 4004,0,0 4010,0,0 4038,0,@7787 4078,0,@7788 4117,0,4 4150,0,0 4174,1,@7790 4191,0,0 4240,0,@14766 4267,0,@14766 4278,0,5 4293,0,0 4304,1,@7791 4341,0,1 4374,0,0 4383,0,0 4391,0,0 4481,0,@7792 4549,1,@7670 4585,0,13 4608,1,@7800 4657,0,0 4791,0,0 4829,1,@7670 4851,1,@7801 4868,0,0 4936,0,13 5012,1,@7670 5034,1,@7802 5083,0,0 5144,0,13 5194,0,0 5295,1,@7803 5303,1,@7670 5329,1,@7804 5346,0,0 5435,0,@16896 5440,1,@7670 5462,1,@7807 5479,0,0 5613,0,0 5651,1,@7670 5673,1,@7808 5690,0,0 5793,0,@7809 5828,0,4 5861,0,0 5885,1,@7810 5902,0,0 5961,0,13 6011,0,0 6079,0,13 6155,1,@7670 6177,1,@7811 6226,0,0 6255,1,@7812 6327,1,@7670 6349,1,@7813 6366,0,0 6423,0,@16899 6437,0,0 6501,0,@7814 6573,1,@7670 6617,0,@14869 6640,0,@14869 6669,0,1 6676,0,0 6683,0,0 6690,0,0 6737,0,1 6744,0,0 6797,1,@7818 6814,0,0 6842,1,@7819 6859,0,0 6965,0,0 7088,0,0 7126,1,@7670 7148,1,@7820 7165,0,0 7201,0,0 7364,0,1 7371,0,0 7378,0,0 7385,0,0 7392,0,0 7399,0,0 7470,0,0 7484,1,@7659 7500,0,0 7564,0,3 7640,0,2 7711,0,0 7754,1,@7821 7776,1,@7822 7817,0,10 7850,0,0 7862,0,0 7901,0,13 7924,1,@7823 7946,1,@7824 7968,1,@7825 8020,0,0 7636:D3,324|3b650c7305ff552ccd0989c7f6c301754a8b338b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c7020f0000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916eb05be01000000568b742408f7c601000000754e8b7424088b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706110000008b45008d40f43b45087305ff5528cdc0894500c740fc02000000c74004010000008930eb05b801000000f7c701000000754a8b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070b0000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893beb05bb0100000083fb01750489c3eb07e83300000089c383fb01750458c20400588b3c24897c240483c404e97c000000f4000000|@16709,1,@2822|50,0,7 83,0,0 92,0,0 146,0,8 179,0,0 188,0,0 233,0,5 266,0,0 275,0,0 289,1,@7637 316,1,@7638 7637:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2820| 7638:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2821| 7639:D3,24|3b650c7305ff552ccd0589c38b4204e9b8fffbfff4000000|@16710,1,@2823|16,1,@7172 7640:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2824| 7641:D3,64|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c54ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16711,1,@2825| 7642:D3,1688|3b650c7305ff552ccd058b700489f783fe037d06b8b4ab66b1c38b0889ce8b0983f9010f85f70100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089780489308b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f88868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f983ff037d06b8b4ab66b1c389f78b3683fe030f855702000089fe8b7e04ff760883e90251710e8d642408b8f80466b18b5d04ff238b0c2489ce83f9017d0e8d642408be185566b1e92601000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a088b17ff1289c7578b74240483ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf0c04c0b08b17b8a48968b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f88968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a0c8b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707348a68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@16734,1,@2829|21,0,@11331 50,0,@9455 155,0,@9771 162,0,1 170,0,@9772 177,0,1 185,0,@9773 192,0,1 199,0,0 244,0,@11374 281,0,@10625 316,0,@11377 352,0,0 359,0,1 366,0,3 372,0,0 411,0,0 448,0,@10448 483,0,@16712 519,0,0 526,0,0 533,0,1 539,0,0 552,0,@11331 589,0,@9455 613,0,@10443 634,0,@9455 698,0,@9455 744,0,@4724 751,0,@16720 799,0,@11375 836,0,@10448 871,0,@11428 947,0,@11377 983,0,0 990,0,0 997,0,1 1003,0,0 1036,0,0 1073,0,@10448 1108,0,@16726 1144,0,0 1151,0,0 1158,0,1 1164,0,0 1177,0,@11331 1191,0,@9455 1296,0,@9771 1303,0,1 1311,0,@9772 1318,0,1 1326,0,@9773 1333,0,1 1340,0,0 1385,0,@11374 1422,0,@10625 1457,0,@11377 1493,0,0 1500,0,1 1507,0,3 1513,0,0 1552,0,0 1589,0,@10448 1624,0,@16730 1660,0,0 1667,0,0 1674,0,1 1680,0,0 7643:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8c08968b1ff1289c258ff22f400|@10629,1,@2828|12,0,@4604 19,0,@16722 7644:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b8dc8968b1ff1289c258ff22f400|@15229,1,@2827|12,0,@4724 19,0,@16724 7645:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@2826|11,0,@4672 7646:D3,176|3b650c7305ff552ccd0589c78b078b7f048b77048b366a016a01f7c6010000007562ff368b1f6a016a018b520454ff125e598b55008d52f43b55087305ff5528cd42895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917893424897c2404eb088b1f8b520454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16735,1,@2830|88,0,0 7647:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16769,1,@2888|27,1,@7648 7648:D3,1188|3b650c7305ff552ccd0989df508b1789d683fa030f85940000008b5f048b7f088b3ff7c701000000756bff376a016a018b542414548b442410ff125a598b75008d76f43b75087305ff5528cd06897500c746fc020000005f8d642404897e04c706010000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489378b7424088916897e04b801000000c208008b542408588b742408897424088b3c24897c240483c404ff2283fe050f85690200008b77048b560883fa010f85eb0000008b16ff760c8b4e108b76048b368b1e8b44240c8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610897e0c8b7c2404897e08c74604c88a68b1c706cc9a3eb189f78b75008d76e83b75087305ff5528cd8e897500c746fc05000000897e10895e0c894e08895604c706249b3eb18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c24088b078b7c24088b5f048b7c24088b7f0857e82bf3ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424105a8d6424048916897e04b801000000c208008b02ff368b56048b12ff32ff760c8b56108b7424148b5d008d5be83b5d087305ff5528cdc5895d00c743fc05000000897310897b0c8b7c240c897b08c74304c88a68b1c703189e3eb18b4d008d49ec3b4d087305ff5528cd0d894d00c741fc04000040c7410c01000000c7410801000000c7410401000000c701010000008b75008d76e43b75087305ff5528cd0f897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c7060100000089cf895f0c897708894704c707709e3eb18061ffbf89f7895f14894f108b4c2404894f0c8957088b542408895704c707ccb83eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c24108b078b7c24108b5f048b7c24108b7f0857e8bcf1ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424185a8d64240c8916897e04b801000000c208008b77048b56048b12ff32ff368b4608ff760c8b56108b7424148b5d008d5be83b5d087305ff5528cdc5895d00c743fc05000000897310897b0c8b7c240c897b08c74304c88a68b1c703e0bb3eb18b4d008d49e83b4d087305ff5528cd0d894d00c741fc05000040c7411001000000c7410c01000000c7410801000000c7410401000000c701010000008b75008d76e43b75087305ff5528cd0f897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c7060100000089cf894710895f0c8977088b0424894704c70738bc3eb18061ffbf89f7895f14894f108b4c2408894f0c8957088b542404895704c70794c03eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c24108b078b7c24108b5f048b7c24108b7f0857e83cf0ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424185a8d64240c8916897e04b801000000c20800f4000000|@16768,1,@2887|97,0,0 142,0,0 259,0,@16736 265,0,@7649 311,0,@7650 346,0,4 373,1,@7636 426,0,0 496,0,@16736 502,0,@7654 535,0,0 542,0,0 549,0,0 555,0,0 588,0,0 595,0,0 602,0,0 609,0,0 616,0,0 622,0,0 639,0,@7655 674,0,@7689 713,0,4 740,1,@7636 793,0,0 867,0,@16736 873,0,@7693 906,0,0 913,0,0 920,0,0 927,0,0 933,0,0 966,0,0 973,0,0 980,0,0 987,0,0 994,0,0 1000,0,0 1023,0,@7694 1058,0,@7701 1097,0,4 1124,1,@7636 1177,0,0 7649:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16737,1,@2831| 7650:D3,464|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76108937578b7c24048b7f0c8b7708bf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a01b8010000008b5c2408e886eeffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b7424088b7604897704c707089d3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89e00000089c383fb0175065f83c404eb0e8b0424e8ed00000089c78d6424088b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f40000|@16739,1,@2835|55,0,0 119,0,3 195,0,2 257,0,0 266,1,@7636 308,0,@7651 343,0,9 376,0,0 394,1,@7652 415,1,@7653 7651:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2832|44,0,3 7652:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2833| 7653:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2834| 7654:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16737,1,@2836| 7655:D3,168|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01ba948b68b18b5f0454e83a0000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@16763,1,@2870|108,0,0 117,0,@16740 126,1,@7656 7656:D3,1752|3b650c7305ff552ccd0d5250538b0424e88fdffbff89c7578b75008d76f03b75087303ff5528897500c746fc030000008b3c24897e088b7c240c8b7f04897e04c70618a63eb18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c7071b000000578b7c24108b078b7c24108b5f048b7c24108b7f0857e8e2eaffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240889770c8b74240c8977088b742410897704c70768a63eb1578b7c240c8b3fbe2c9f3eb181c6380100008d74befcffe6e92b000000909090e940000000909090e96f030000909090e936040000909090e94e040000909090e9ec0400009090908d6424048b742418c7060cd067b15f897e04b80100000083c410c204008b7c240c8b7f04ff37ff7708ff770cff77106a016a018b7c24208b3f83ff0b75608b7c2420ff77088b7c24248b7f0c8b770c8b4e0489ca8b0983f903752f89d68b76048b5424308b520c3bf27507be03000000eb05be0100000083fe03750e5f893c24c744240401000000eb128b4708e89605000089c75e893424897c2404eb11bf188c68b18b378934248b7f04897c2404ff3424ff742408f644241c010f85620200008b7c241c8b178b7c241c8b7f0483ff010f851e0100008b4d008d49e43b4d087305ff5528cd04894d00c741fc06000040c7411401000000c7411001000000c7410c01000000c7410801000000c7410401000000c701010000008b75008d76e83b75087305ff5528cd06897500c746fc05000040c7461001000000c7460c01000000c7460801000000c7460401000000c7060100000089cf8b5c2420895f148977108b1c24895f0c8d6424048b5c2410895f088b1c24895f048d642404c707d4a73eb18061ffbf89f78b5c2418895f10894f0c8957088b54242c895704c70718aa3eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c408e92c0100008b55008d52e43b55087303ff5528895500c742fc06000040c7421401000000c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b75008d76e43b75087305ff5528cd04897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c7060100000089d78b4c2420894f148977108b0c24894f0c8d6424048b4c2410894f088b0c24894f048d642404c707ccaa3eb18062ffbf8b7c242c8b4f0889f7894f148b4c2414894f108b4c2418894f0c8957088b542410895704c70710ad3eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c7400401000000893883c408eb045883c40c8b7c241483ff01750489c7eb0b8b5c2414e8730d000089c78b74242c5a8916897e04b80100000083c424c204008b7c240c8b7f048b74240cff76088b7424108b560c8b75008d76f83b75087305ff5528cd84897500c746fc010000008b4c2404890e8b5d008d5bf43b5d087305ff5528cdc4895d00c743fc020000008973048b7424188b760889338b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc020000008970048938e8820900008b7c240883ff01750489c7eb0b8b5c2408e8080d000089c78b7424205a8916897e04b80100000083c418c204008d6424048b7c24088b7f088b742418893e5f897e04b80100000083c410c204008b7c240c8b47048b7c240cff770c8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742418897704c7070cb23eb18b75008d76f83b75087305ff5528cd81897500c746fc010000008b54240489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be8bc0800008b7c240883ff01750489c7eb0b8b5c2408e84a12000089c78b7424205a8916897e04b80100000083c418c204008b7c240c8b47048b7c240cff77088b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c24188b7f08893be8360800008b7c240883ff01750489c7eb0b8b5c2408e82812000089c78b7424205a8916897e04b80100000083c418c20400f4|@16761,1,@2868|17,1,@7163 66,0,@7657 101,0,9 139,0,13 166,1,@7636 284,0,@7658 296,0,@7656 370,0,@14696 379,0,0 468,0,1 475,0,0 492,0,0 502,1,@7659 519,0,@16744 604,0,0 611,0,0 618,0,0 625,0,0 632,0,0 638,0,0 671,0,0 678,0,0 685,0,0 692,0,0 698,0,0 743,0,@7660 775,0,@7664 814,0,4 847,0,0 888,0,0 895,0,0 902,0,0 909,0,0 916,0,0 922,0,0 955,0,0 962,0,0 969,0,0 976,0,0 983,0,0 989,0,0 1034,0,@7665 1080,0,@7669 1119,0,4 1152,0,0 1185,1,@7676 1202,0,0 1332,0,0 1370,1,@7670 1392,1,@7677 1409,0,0 1441,0,0 1500,0,@7678 1568,1,@7670 1590,1,@7686 1607,0,0 1702,1,@7670 1724,1,@7687 1741,0,0 7657:D3,60|3b650c7305ff552ccd055250b801000000e8c6a0fbff89c68b7c24048b570489ff8b47085b8d6424046878f167b16a01ff7424088974240cff22f400|@16742,1,@2837|13,0,0 18,1,@7128 42,0,@14943 7658:D3,64|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c54ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16743,1,@2838| 7659:D3,260|3b650c7305ff552ccd01a8010f85ea0000008b388b40048b3789f283fe05752b8b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70717000000e98200000089d683fa0775288b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70719000000eb5383fe0375288b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070d000000eb268b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070500000057e82dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@2839|66,0,11 116,0,12 161,0,6 201,0,2 253,0,0 7660:D3,288|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b34248b7e14893b8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089f68b7610893757b801000000e88de2ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c70708a93eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a600000089c383fb0175088b3c248b7f0ceb0d8b3c248b470ce8f000000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f4000000|@16745,1,@2843|78,0,0 83,1,@7636 124,0,@7661 159,0,9 192,0,0 210,1,@7662 236,1,@7663 7661:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2840|44,0,3 7662:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2841| 7663:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2842| 7664:D3,160|3b650c7305ff552ccd0589d78b55008d52f83b55087305ff5528cd80895500c742fc010000008b771089328b75008d76f83b75087305ff5528cd84897500c746fc010000008b4f0c890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089500489306a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16746,1,@2844|103,0,0 7665:D3,288|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b34248b7e14893b8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089f68b7610893757b801000000e895dfffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c70700ac3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a600000089c383fb0175088b3c248b7f0ceb0d8b3c248b470ce8f000000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f4000000|@16745,1,@2848|78,0,0 83,1,@7636 124,0,@7666 159,0,9 192,0,0 210,1,@7667 236,1,@7668 7666:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2845|44,0,3 7667:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2846| 7668:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2847| 7669:D3,232|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b142489d789168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc0200000089730489ff8b7714893389ff8b4710e8a400000089c7578b5d008d5bf83b5d087303ff5528895d00c743fc010000008b7c24048b770c89338b45008d40f83b45087305ff5528cd88894500c740fc0100000089ff8b7f0889386a01e804ddffff89c383fb0175035feb0e8b0424e81a03000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f048d6424048938c3f400|@16754,1,@2855|84,1,@7670 160,1,@7636 178,1,@7675 7670:D3,140|3b650c7305ff552ccd0983f8017506b801000000c38b3b8b53048b75008d76ec3b75087305ff5528cd85897500c746fc0400000089560c897e08894604c706acae3eb18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3f400|@16753,1,@2853|16,0,0 63,0,@7671 98,0,4 131,0,0 7671:D3,40|3b650c7305ff552ccd058b5a048b72088b520c5652ff742408c744240c01000000e916000000f400|@16748,1,@2852|29,0,0 34,1,@7672 7672:D3,332|3b650c7305ff552ccd09f6c3010f852b010000ff338b7304ff74240c83fe01750abe01000000e9b20000008b5424148b4c24108b44240c8b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714894f1089570c895f08c74704a48c68b1c70748b03eb18b55008d52f83b55087305ff5528cdc0895500c742fc01000000893a8b4c24108b5c240c8b7d008d7fe43b7d087305ff5528cd4e897d00c747fc06000000895f14894f1089570c897708c74704a48c68b1c70794b03eb18b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b54240c8b4c24148b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008b74240489700489388b14248b7c2408897c241483c414ff228d642408b8dc8c68b18b5d04ff23f4000000|@16752,1,@2851|34,0,0 96,0,@16747 102,0,@7673 183,0,@16747 189,0,@7674 319,0,@16749 7673:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@16748,1,@2849| 7674:D3,56|3b650c7305ff552ccd0589d7ff77048b5f088b770c8b57108b4f1451ff7424088b7c240887d7897c24088974240cff228d642404f4000000|@16748,1,@2850| 7675:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2854| 7676:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2856| 7677:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2857| 7678:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16760,1,@2865|27,1,@7679 7679:D3,400|3b650c7305ff552ccd09508b3bff37ff7704ff7304ff73088b7424188b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710895f0c8b742410897708c74704c88d68b1c70708b43eb1578b55008d52e83b55087303ff5528895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b75008d76e43b75087305ff5528cd04897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b4c241c89d78b1c24895f1089770c8b5c2408895f08894f04c70760b43eb18062ffbf89f759894f148957108b54240489570c8b5424088957088b54240c895704c70714b53eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c24148b078b7c24148b5f048b7c24148b7f0857e8fdd6ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b74241c5a8d6424108916897e04b801000000c20800f4|@16759,1,@2864|70,0,@16755 76,0,@7680 108,0,0 115,0,0 122,0,0 129,0,0 135,0,0 168,0,0 175,0,0 182,0,0 189,0,0 196,0,0 202,0,0 233,0,@7681 273,0,@7682 312,0,4 339,1,@7636 392,0,0 7680:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16756,1,@2858| 7681:D3,160|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b571089168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f0c890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16757,1,@2859|108,0,0 7682:D3,376|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b3c248b57148916568b75008d76f83b75087305ff5528cd80897500c746fc0100000089ff8b571089165689ff8b470ce864c9fbff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7061b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937576a018b4424088b5c240ce8f4d4ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707a0b63eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a400000089c383fb0175065f83c408eb0e8b0424e8f300000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f40000|@16758,1,@2863|84,1,@7163 121,0,13 154,0,0 172,1,@7636 214,0,@7683 249,0,9 282,0,0 300,1,@7684 321,1,@7685 7683:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2860|44,0,3 7684:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2861| 7685:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2862| 7686:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2866| 7687:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2867| 7688:D3,64|3b650c7305ff552ccd0589c76a016a018b52048b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16762,1,@2869| 7689:D3,496|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b7f0c8b7708bf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce8bdd0ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707d0ba3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89d00000089c383fb0175065f83c408eb0e8b0424e8ec00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f400|@16739,1,@2874|89,0,0 153,0,3 229,0,2 299,1,@7636 341,0,@7690 376,0,9 409,0,0 427,1,@7691 448,1,@7692 7690:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2871|44,0,3 7691:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2872| 7692:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2873| 7693:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16737,1,@2875| 7694:D3,236|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b3c248b570c89168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304c703908f68b189ff8b4710e87cf1ffff89c7578b5d008d5bf83b5d087303ff5528895d00c743fc010000008b7424048b7e0c893b8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089f68b7608893757b801000000e8d8cdffff89c383fb0175035feb0e8b0424e83e03000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f048d6424048938c3f400|@16767,1,@2882|74,0,@16764 84,1,@7670 159,0,0 164,1,@7636 182,1,@7700 7695:D3,24|3b650c7305ff552ccd0189c78b078b5f04e916000000f400|@16766,1,@2880|18,1,@7696 7696:D3,424|3b650c7305ff552ccd0989c78b73088b368b5610ff33ff730cbe01000000f6c2010f85b70000008b0aff72048b0189c383f80575478b59048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701070000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304890beb4e83fb0175478b59048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895904c701050000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000897304890beb0289f35989de89ca3b650c7305ff552ccdc4e940ffffff568b078b5f048b7f0857e867ccffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742404897704c70720bf3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89a00000089c383fb0175065f83c404eb0e8b0424e8e900000089c78d6424088b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c3f400|@16765,1,@2879|26,0,0 87,0,3 163,0,2 233,1,@7636 272,0,@7697 307,0,9 340,0,0 358,1,@7698 379,1,@7699 7697:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2876|44,0,3 7698:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2877| 7699:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2878| 7700:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2881| 7701:D3,496|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b7f0c8b7708bf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce8f5c8ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c70798c23eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89d00000089c383fb0175065f83c408eb0e8b0424e8ec00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f400|@16739,1,@2886|89,0,0 153,0,3 229,0,2 299,1,@7636 341,0,@7702 376,0,9 409,0,0 427,1,@7703 448,1,@7704 7702:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2883|44,0,3 7703:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2884| 7704:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2885| 7705:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16774,1,@2895|27,1,@7706 7706:D3,656|3b650c7305ff552ccd0989da508b7a088b378b7a0c8b1f8b7a148b0fff32ff7204ff72108b4424148b7d008d7fe83b7d087305ff5528cd4f897d00c747fc0500000089471089570c8b44240c894708c747041c9168b1c707a4c63eb1f6c101754a8b098b45008d40f43b45087305ff5528cdce894500c740fc02000000894804c700010000008b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000c74104010000008901eb05b901000000518b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104c701fcc63eb18b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04c702130000008b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000895908897104c701050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c7061b0000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048916568b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7c241c8b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704010000008b74241089378b45008d40f43b45087305ff5528cd88894500c740fc020000008978048b7c240c8938e8fbe7ffff89c7578b7c24188b0789ff8b5f0489ff8b7f0857e88ec4ffff8b74240889f783fe01750489c3eb0989fbe81802000089c383fb0175035beb0e8b0424e86a02000089c38d64240483fb0175065f83c404eb0e8b0424e8b502000089c78d6424088b7424188b142489168d642404897e04b80100000083c40cc20800f4000000|@16773,1,@2894|82,0,@16770 88,0,@7707 130,0,0 163,0,0 172,0,0 208,0,@7708 243,0,9 281,0,2 316,0,13 349,0,0 479,0,0 525,1,@7670 550,1,@7636 572,1,@7709 590,1,@7710 615,1,@7711 642,0,0 7707:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16771,1,@2889| 7708:D3,328|3b650c7305ff552ccd05508b720489f7ff368b47048b5c240483eb02710e8d642408b8f80466b18b5d04ff23e877c5fbff89c7578b5c240883eb02710e8d64240cb8f80466b18b5d04ff238b442404e854c5fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d44367b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c404c3f4000000|@16772,1,@2890|35,0,@9455 45,1,@7172 66,0,@9455 80,1,@7172 115,0,0 152,0,@10448 187,0,@12912 222,0,@10448 296,0,0 303,0,0 310,0,0 316,0,0 7709:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2891| 7710:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2892| 7711:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2893| 7712:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070100000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2896|50,0,0 102,0,0 7713:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070500000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2897|50,0,2 102,0,0 7714:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070300000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2898|58,0,1 110,0,0 7715:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2899| 7716:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2900| 7717:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2901| 7718:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2902| 7719:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2903| 7720:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2904| 7721:D3,160|3b650c7305ff552ccd0589d78b55008d52f83b55087305ff5528cd80895500c742fc010000008b771089328b75008d76f83b75087305ff5528cd84897500c746fc010000008b4f0c890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089500489306a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16775,1,@2905|103,0,0 7722:D3,236|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b142489d789168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc0200000089730489ff8b7714893389ff8b4710e89cdfffff89c7578b5d008d5bf83b5d087303ff5528895d00c743fc010000008b7424048b7e0c893b8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089f68b7608893757b801000000e8f8bbffff89c383fb0175035feb0e8b0424e84600000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f048d6424048938c3f400|@16776,1,@2907|84,1,@7670 159,0,0 164,1,@7636 182,1,@7723 7723:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2906| 7724:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2908| 7725:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2909| 7726:D3,168|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01ba948b68b18b5f0454e866ceffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@16777,1,@2910|108,0,0 117,0,@16740 126,1,@7656 7727:D3,160|3b650c7305ff552ccd0589d78b55008d52f83b55087305ff5528cd80895500c742fc010000008b771089328b75008d76f83b75087305ff5528cd84897500c746fc010000008b4f0c890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089500489306a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16775,1,@2911|103,0,0 7728:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16785,1,@2934|27,1,@7729 7729:D3,1720|3b650c7305ff552ccd0953508b7c24048b7f08f7c7010000000f852c030000ff378b7c24088b47148b3883ff110f85860100008b7c2408ff378b7c240c8b7f048b3fff77108b7c2410ff770c8b7c24148b57108b7c241c8b5d008d5be83b5d087305ff5528cd84895d00c743fc05000000897b108b7c2414897b0c8b7c2410897b08c74304c49268b1c703d8d83eb18b4d008d49ec3b4d087305ff5528cd0c894d00c741fc04000040c7410c01000000c7410801000000c7410401000000c701010000008b75008d76e43b75087305ff5528cd0e897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c7060100000089cf895f0c8977088b44240c894704c70730d93eb18061ffbf89f7895f14894f108b4c2404894f0c8957088b542408895704c707ecd93eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c24148b078b7c24148b5f048b7c24148b7f0857e82bb7ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424205a8d6424148916897e04b801000000c208008d6424048b7c2404ff378b7c2408ff770c8b7c240cff77108b7c24108b7f048b3fff77108b7c241c8b4d008d49e83b4d087305ff5528cd81894d00c741fc050000008979108b7c241489790c8b7c2410897908c74104c49268b1c701fcdc3eb18b55008d52e83b55087305ff5528cd03895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b75008d76e43b75087305ff5528cd07897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b5c241c89d7894f1089770c894708895f04c70754dd3eb18062ffbf89f7894f148957105a89570c5a8957088b542404895704c70708de3eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c240c8b078b7c240c8b5f048b7c240c8b7f0857e899b5ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424185a8d64240c8916897e04b801000000c208008b7c24048b47148b3883ff1175238b7c24048b7f048b3f8b7f108b742404ff368b742408ff7610be01000000e98e0100008b7c2404ff378b7c2408ff770c8b7c240cff77108b7c24108b7f048b3fff77108b7c241c8b4d008d49e83b4d087305ff5528cd81894d00c741fc050000008979108b7c241489790c8b7c2410897908c74104c49268b1c70118e13eb18b55008d52e83b55087305ff5528cd03895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b75008d76e43b75087305ff5528cd07897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b5c241c89d7894f1089770c894708895f04c70770e13eb18062ffbf89f7894f148957105a89570c5a8957088b542404895704c70724e23eb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c240c8b078b7c240c8b5f048b7c240c8b7f0857e8dab3ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424185a8d64240c8916897e04b801000000c20800f7c7010000000f85b60000008b0f8b57048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008971048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008971048919eb0289f189ce89d73b650c7305ff552ccdc0e93effffff8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e89368b1578b7c240c8b078b7c240c8b5f048b7c240c8b7f0857e8a2b2ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742408897704c70734e53eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8e90c000089c383fb0175035feb0e8b0424e83b0d000089c78d6424048b7424185a8916897e04b80100000083c40cc20800f4000000|@16784,1,@2933|133,0,@16778 139,0,@7730 172,0,0 179,0,0 186,0,0 192,0,0 225,0,0 232,0,0 239,0,0 246,0,0 253,0,0 259,0,0 280,0,@7731 315,0,@7732 354,0,4 381,1,@7636 434,0,0 527,0,@16778 533,0,@7736 566,0,0 573,0,0 580,0,0 587,0,0 593,0,0 626,0,0 633,0,0 640,0,0 647,0,0 654,0,0 660,0,0 684,0,@7737 717,0,@7738 756,0,4 783,1,@7636 836,0,0 883,0,0 974,0,@16778 980,0,@7742 1013,0,0 1020,0,0 1027,0,0 1034,0,0 1040,0,0 1073,0,0 1080,0,0 1087,0,0 1094,0,0 1101,0,0 1107,0,0 1131,0,@7743 1164,0,@7744 1203,0,4 1230,1,@7636 1283,0,0 1350,0,3 1426,0,2 1515,0,@16783 1542,1,@7636 1581,0,@7748 1616,0,9 1649,0,0 1667,1,@7749 1685,1,@7750 1706,0,0 7730:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16779,1,@2912| 7731:D3,168|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01ba948b68b18b5f0454e87ac5ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@16780,1,@2913|108,0,0 117,0,@16740 126,1,@7656 7732:D3,492|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b770cbf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce8a0afffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707ecdb3eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89c00000089c383fb0175065f83c408eb0e8b0424e8eb00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f4|@16781,1,@2917|86,0,0 150,0,3 226,0,2 296,1,@7636 338,0,@7733 373,0,9 406,0,0 424,1,@7734 445,1,@7735 7733:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2914|44,0,3 7734:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2915| 7735:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2916| 7736:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16779,1,@2918| 7737:D3,160|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b571089168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f0c890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16782,1,@2919|108,0,0 7738:D3,492|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b770cbf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce884abffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c70708e03eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89c00000089c383fb0175065f83c408eb0e8b0424e8eb00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f4|@16781,1,@2923|86,0,0 150,0,3 226,0,2 296,1,@7636 338,0,@7739 373,0,9 406,0,0 424,1,@7740 445,1,@7741 7739:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2920|44,0,3 7740:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2921| 7741:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2922| 7742:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16779,1,@2924| 7743:D3,160|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b571089168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f0c890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16782,1,@2925|108,0,0 7744:D3,492|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b770cbf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce868a7ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c70724e43eb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89c00000089c383fb0175065f83c408eb0e8b0424e8eb00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f4|@16781,1,@2929|86,0,0 150,0,3 226,0,2 296,1,@7636 338,0,@7745 373,0,9 406,0,0 424,1,@7746 445,1,@7747 7745:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2926|44,0,3 7746:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2927| 7747:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2928| 7748:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2930|44,0,3 7749:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2931| 7750:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2932| 7751:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2935| 7752:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2936| 7753:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2937| 7754:D3,5784|3b650c7305ff552ccd058b780489fe83ff037d06b8b4ab66b1c38b3889f98b3f83ff010f85f90100008b790483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf0405c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389ce8b0983f9030f85770a0000ff7604ff760883ef0257710e8d64240cb8f80466b18b5d04ff238b342489f783fe017d0e8d64240cbe185566b1e94809000089ff83ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642404bf2cb566b1e9e70700008b7c240c8b770489d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8bc9868b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abe2cb566b1e9c90600008b742414ff760889ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24188b3f8b74240c83ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d89868b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf2405c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f89868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f983ff037d06b8b4ab66b1c389f78b3683fe050f85c30700008b7704ff770883e90251710e8d642408b8f80466b18b5d04ff238b3c2489f983ff017d0e8d642408be185566b1e99406000089c983e902710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04893757bf7c02c0b08b3f8b75008d76f43b75087305ff5528cd84897500c746fc020000008b5204895604c70654473fb18b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c03000000c7400807000000897004c7000100000089faff1289c28b0424ff1289c7578b7c240883ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707809968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a088b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f49968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@16862,1,@2945|21,0,@11331 50,0,@9455 91,0,@4755 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@16844 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 589,0,@9455 613,0,@10443 635,0,@9455 659,0,@11421 687,0,@9455 729,0,@4724 736,0,@16851 764,0,@11421 793,0,@9455 817,0,@11421 845,0,@9455 886,0,@4670 909,0,@11421 937,0,@9455 978,0,@4670 1001,0,@11421 1028,0,@9455 1069,0,@4602 1092,0,@11421 1120,0,@9455 1161,0,@4670 1193,0,@9455 1234,0,@4670 1273,0,@11424 1310,0,@10448 1345,0,@13969 1380,0,@10448 1415,0,@11428 1488,0,@10448 1523,0,@13971 1558,0,@10448 1593,0,@11428 1666,0,@10448 1701,0,@13973 1736,0,@10448 1771,0,@11428 1844,0,@10448 1879,0,@13975 1914,0,@10448 1949,0,@11428 2022,0,@10448 2057,0,@13977 2095,0,@11431 2131,0,0 2138,0,0 2145,0,1 2151,0,0 2176,0,@9455 2217,0,@4602 2256,0,@11424 2293,0,@10448 2328,0,@14926 2363,0,@10448 2398,0,@11428 2471,0,@10448 2506,0,@16347 2541,0,@10448 2576,0,@11428 2649,0,@10448 2684,0,@16853 2722,0,@11431 2758,0,0 2765,0,0 2772,0,1 2778,0,0 2797,0,@9455 2842,0,@4759 2881,0,@11375 2918,0,@10448 2953,0,@11428 3029,0,@11377 3065,0,0 3072,0,0 3079,0,1 3085,0,0 3118,0,0 3155,0,@10448 3190,0,@16855 3226,0,0 3233,0,0 3240,0,1 3246,0,0 3259,0,@11331 3294,0,@9455 3318,0,@10443 3339,0,@9455 3381,0,@4674 3421,0,@7761 3454,0,1 3461,0,3 3470,0,0 3503,0,@9455 3527,0,@11421 3555,0,@9455 3596,0,@4670 3619,0,@11421 3647,0,@9455 3688,0,@4670 3711,0,@11421 3738,0,@9455 3779,0,@4602 3802,0,@11421 3830,0,@9455 3871,0,@4670 3903,0,@9455 3944,0,@4670 3983,0,@11424 4020,0,@10448 4055,0,@13969 4090,0,@10448 4125,0,@11428 4198,0,@10448 4233,0,@13971 4268,0,@10448 4303,0,@11428 4376,0,@10448 4411,0,@13973 4446,0,@10448 4481,0,@11428 4554,0,@10448 4589,0,@13975 4624,0,@10448 4659,0,@11428 4732,0,@10448 4767,0,@13977 4805,0,@11431 4841,0,0 4848,0,0 4855,0,1 4861,0,0 4894,0,@11375 4931,0,@10448 4966,0,@11428 5042,0,@11377 5078,0,0 5085,0,0 5092,0,1 5098,0,0 5131,0,0 5168,0,@10448 5203,0,@16863 5239,0,0 5246,0,0 5253,0,1 5259,0,0 5272,0,@11331 5286,0,@9455 5391,0,@9771 5398,0,1 5406,0,@9772 5413,0,1 5421,0,@9773 5428,0,1 5435,0,0 5480,0,@11374 5517,0,@10625 5552,0,@11377 5588,0,0 5595,0,1 5602,0,3 5608,0,0 5647,0,0 5684,0,@10448 5719,0,@16870 5755,0,0 5762,0,0 5769,0,1 5775,0,0 7755:D3,14928|3b650c7305ff552ccd05528b780489fa83ff037d0a8d642404b8b4ab66b1c38b3089f78b3683fe01750a8d642404b8789468b1c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff030f85e6160000ff720483ee0256710e8d64240cb8f80466b18b5d04ff238b342489f783fe017d0e8d64240cbe2cb566b1e9ba1500008b742404ff760889ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240489fa83ff037d0abf2cb566b1e9890f00008b7c24088b3789d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c70780383fb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c89fa83ff057d0abe2cb566b1e9160e00008b7c24108b771489d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8089568b1ff1289c28b0424ff1289c7578b74241489f783fe077d0abf2cb566b1e9f80c00008b742418ff761089ff83ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241889fe83ff097d0abe2cb566b1e9ca0600008b7c241c8b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c2420ff770c8b7c242083ef0257710e8d642430b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642440b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707249568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449568b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707601668b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7066c9568b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707889568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c389d68b1283fa050f850209000089f28b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9ce07000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f048b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9c206000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706043468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089668b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d0a8d642404b8b4ab66b1c389f78b3683fe070f85f60700008d642404ff7704ff770883ea0252710e8d64240cb8f80466b18b5d04ff238b342489f783fe017d0e8d64240cbe2cb566b1e9c306000089ff83ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24088b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c240c8b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24148b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24188b7f108b74241083ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bfcc03c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a49668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c09668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff090f856109000089d78b5704ff7708ff770c83ee0256710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642410be2cb566b1e92d08000089f683ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c707d0383fb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c07000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9c006000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf6c02c0b08b17ff1289c7578b7c240c83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707349768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706084168b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707509768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c38b7204ff720883ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e92207000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c70704473fb18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706084168b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707cc9768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@16794,1,@2942|26,0,@11331 47,0,@16787 64,0,@11331 96,0,@9455 120,0,@11421 149,0,@9455 173,0,@11421 201,0,@9455 242,0,@4670 265,0,@11421 293,0,@9455 334,0,@4670 357,0,@11421 384,0,@9455 425,0,@4602 448,0,@11421 476,0,@9455 517,0,@4670 549,0,@9455 590,0,@4670 629,0,@11424 666,0,@10448 701,0,@13969 736,0,@10448 771,0,@11428 844,0,@10448 879,0,@13971 914,0,@10448 949,0,@11428 1022,0,@10448 1057,0,@13973 1092,0,@10448 1127,0,@11428 1200,0,@10448 1235,0,@13975 1270,0,@10448 1305,0,@11428 1378,0,@10448 1413,0,@13977 1451,0,@11431 1487,0,0 1494,0,0 1501,0,1 1507,0,0 1524,0,@11421 1551,0,@9455 1593,0,@4674 1637,0,@7756 1670,0,1 1677,0,3 1686,0,0 1714,0,@11421 1742,0,@9455 1784,0,@4724 1791,0,@16795 1819,0,@11421 1848,0,@9455 1872,0,@11421 1900,0,@9455 1941,0,@4670 1964,0,@11421 1992,0,@9455 2033,0,@4670 2056,0,@11421 2083,0,@9455 2124,0,@4602 2147,0,@11421 2175,0,@9455 2216,0,@4670 2248,0,@9455 2289,0,@4670 2328,0,@11424 2365,0,@10448 2400,0,@13969 2435,0,@10448 2470,0,@11428 2543,0,@10448 2578,0,@13971 2613,0,@10448 2648,0,@11428 2721,0,@10448 2756,0,@13973 2791,0,@10448 2826,0,@11428 2899,0,@10448 2934,0,@13975 2969,0,@10448 3004,0,@11428 3077,0,@10448 3112,0,@13977 3150,0,@11431 3186,0,0 3193,0,0 3200,0,1 3206,0,0 3223,0,@11421 3251,0,@9455 3292,0,@4602 3325,0,@9455 3349,0,@11421 3377,0,@9455 3418,0,@4670 3441,0,@11421 3469,0,@9455 3510,0,@4670 3533,0,@11421 3560,0,@9455 3601,0,@4602 3624,0,@11421 3652,0,@9455 3693,0,@4670 3725,0,@9455 3766,0,@4670 3805,0,@11424 3842,0,@10448 3877,0,@13969 3912,0,@10448 3947,0,@11428 4020,0,@10448 4055,0,@13971 4090,0,@10448 4125,0,@11428 4198,0,@10448 4233,0,@13973 4268,0,@10448 4303,0,@11428 4376,0,@10448 4411,0,@13975 4446,0,@10448 4481,0,@11428 4554,0,@10448 4589,0,@13977 4627,0,@11431 4663,0,0 4670,0,0 4677,0,1 4683,0,0 4716,0,@11424 4753,0,@10448 4788,0,@16797 4823,0,@10448 4858,0,@11428 4931,0,@10448 4966,0,@14926 5001,0,@10448 5036,0,@11428 5109,0,@10448 5144,0,@16347 5179,0,@10448 5214,0,@11428 5287,0,@10448 5322,0,@16799 5360,0,@10448 5395,0,@11428 5468,0,@10448 5503,0,@15320 5541,0,@10448 5576,0,@11428 5649,0,@10448 5684,0,@16801 5722,0,@11431 5758,0,0 5765,0,0 5772,0,1 5778,0,0 5811,0,0 5848,0,@10448 5883,0,@16803 5919,0,0 5926,0,0 5933,0,1 5939,0,0 5956,0,@11331 5996,0,@9455 6020,0,@11421 6041,0,@9455 6107,0,@11421 6129,0,@9455 6153,0,@11421 6181,0,@9455 6222,0,@4670 6245,0,@11421 6273,0,@9455 6314,0,@4670 6337,0,@11421 6364,0,@9455 6405,0,@4602 6428,0,@11421 6456,0,@9455 6497,0,@4670 6529,0,@9455 6570,0,@4670 6609,0,@11424 6646,0,@10448 6681,0,@13969 6716,0,@10448 6751,0,@11428 6824,0,@10448 6859,0,@13971 6894,0,@10448 6929,0,@11428 7002,0,@10448 7037,0,@13973 7072,0,@10448 7107,0,@11428 7180,0,@10448 7215,0,@13975 7250,0,@10448 7285,0,@11428 7358,0,@10448 7393,0,@13977 7431,0,@11431 7467,0,0 7474,0,0 7481,0,1 7487,0,0 7506,0,@9455 7592,0,@11424 7629,0,@10448 7664,0,@15777 7699,0,@10448 7734,0,@11428 7807,0,@10448 7842,0,@16347 7877,0,@10448 7912,0,@11428 7985,0,@10448 8020,0,@16810 8058,0,@11431 8094,0,0 8101,0,0 8108,0,1 8114,0,0 8147,0,0 8184,0,@10448 8219,0,@16812 8255,0,0 8262,0,0 8269,0,1 8275,0,0 8292,0,@11331 8331,0,@9455 8355,0,@11421 8377,0,@9455 8401,0,@11421 8429,0,@9455 8470,0,@4670 8493,0,@11421 8521,0,@9455 8562,0,@4670 8585,0,@11421 8612,0,@9455 8653,0,@4602 8676,0,@11421 8704,0,@9455 8745,0,@4670 8777,0,@9455 8818,0,@4670 8857,0,@11424 8894,0,@10448 8929,0,@13969 8964,0,@10448 8999,0,@11428 9072,0,@10448 9107,0,@13971 9142,0,@10448 9177,0,@11428 9250,0,@10448 9285,0,@13973 9320,0,@10448 9355,0,@11428 9428,0,@10448 9463,0,@13975 9498,0,@10448 9533,0,@11428 9606,0,@10448 9641,0,@13977 9679,0,@11431 9715,0,0 9722,0,0 9729,0,1 9735,0,0 9754,0,@9455 9799,0,@4716 9838,0,@11424 9875,0,@10448 9910,0,@16819 9945,0,@10448 9980,0,@11428 10053,0,@10448 10088,0,@16347 10126,0,@11431 10162,0,0 10169,0,0 10176,0,1 10182,0,0 10215,0,0 10252,0,@10448 10287,0,@16821 10323,0,0 10330,0,0 10337,0,1 10343,0,0 10360,0,@11331 10400,0,@9455 10424,0,@11421 10445,0,@9455 10487,0,@4674 10531,0,@7758 10564,0,3 10571,0,2 10580,0,0 10608,0,@11421 10629,0,@9455 10674,0,@4672 10700,0,@9455 10724,0,@11421 10752,0,@9455 10793,0,@4670 10816,0,@11421 10844,0,@9455 10885,0,@4670 10908,0,@11421 10935,0,@9455 10976,0,@4602 10999,0,@11421 11027,0,@9455 11068,0,@4670 11100,0,@9455 11141,0,@4670 11180,0,@11424 11217,0,@10448 11252,0,@13969 11287,0,@10448 11322,0,@11428 11395,0,@10448 11430,0,@13971 11465,0,@10448 11500,0,@11428 11573,0,@10448 11608,0,@13973 11643,0,@10448 11678,0,@11428 11751,0,@10448 11786,0,@13975 11821,0,@10448 11856,0,@11428 11929,0,@10448 11964,0,@13977 12002,0,@11431 12038,0,0 12045,0,0 12052,0,1 12058,0,0 12091,0,@11424 12128,0,@10448 12163,0,@16347 12198,0,@10448 12233,0,@11428 12306,0,@10448 12341,0,@16828 12376,0,@10448 12411,0,@11428 12484,0,@10448 12519,0,@15981 12557,0,@11431 12593,0,0 12600,0,0 12607,0,1 12613,0,0 12646,0,0 12683,0,@10448 12718,0,@16830 12754,0,0 12761,0,0 12768,0,1 12774,0,0 12791,0,@11331 12813,0,@9455 12837,0,@11421 12858,0,@9455 12900,0,@4674 12944,0,@7759 12977,0,1 12984,0,3 12993,0,0 13024,0,@9455 13048,0,@11421 13076,0,@9455 13117,0,@4670 13140,0,@11421 13168,0,@9455 13209,0,@4670 13232,0,@11421 13259,0,@9455 13300,0,@4602 13323,0,@11421 13351,0,@9455 13392,0,@4670 13424,0,@9455 13465,0,@4670 13504,0,@11424 13541,0,@10448 13576,0,@13969 13611,0,@10448 13646,0,@11428 13719,0,@10448 13754,0,@13971 13789,0,@10448 13824,0,@11428 13897,0,@10448 13932,0,@13973 13967,0,@10448 14002,0,@11428 14075,0,@10448 14110,0,@13975 14145,0,@10448 14180,0,@11428 14253,0,@10448 14288,0,@13977 14326,0,@11431 14362,0,0 14369,0,0 14376,0,1 14382,0,0 14415,0,@11424 14452,0,@10448 14487,0,@16347 14522,0,@10448 14557,0,@11428 14630,0,@10448 14665,0,@15981 14703,0,@11431 14739,0,0 14746,0,0 14753,0,1 14759,0,0 14792,0,0 14829,0,@10448 14864,0,@16837 14900,0,0 14907,0,0 14914,0,1 14920,0,0 7756:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16794,1,@2938| 7757:D3,20|3b650c7305ff552ccd01bf1405c0b08b17ff22f4|@15308,1,@2939|11,0,@4757 7758:D3,3616|3b650c7305ff552ccd0552508b3c248b570489d683fa017d0e8d642408be185566b1e99a0d000089ff8b17ff3289f783ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf185566b1e9400600008b7c24048b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c2408ff77048b7c240883ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240483c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424048b7e0489fa83ff037d0abf185566b1e94306000089f68b3e8b7f0489d683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c7578b7c24088b37ff760889ff8b7f0483ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@2940|30,0,@10443 58,0,@9455 82,0,@10443 109,0,@9455 150,0,@4602 183,0,@9455 207,0,@11421 235,0,@9455 276,0,@4670 299,0,@11421 327,0,@9455 368,0,@4670 391,0,@11421 418,0,@9455 459,0,@4602 482,0,@11421 510,0,@9455 551,0,@4670 583,0,@9455 624,0,@4670 663,0,@11424 700,0,@10448 735,0,@13969 770,0,@10448 805,0,@11428 878,0,@10448 913,0,@13971 948,0,@10448 983,0,@11428 1056,0,@10448 1091,0,@13973 1126,0,@10448 1161,0,@11428 1234,0,@10448 1269,0,@13975 1304,0,@10448 1339,0,@11428 1412,0,@10448 1447,0,@13977 1485,0,@11431 1521,0,0 1528,0,0 1535,0,1 1541,0,0 1574,0,@11375 1611,0,@10448 1646,0,@11428 1722,0,@11377 1758,0,0 1765,0,0 1772,0,1 1778,0,0 1798,0,@10443 1826,0,@9455 1905,0,@9455 1929,0,@11421 1957,0,@9455 1998,0,@4670 2021,0,@11421 2049,0,@9455 2090,0,@4670 2113,0,@11421 2140,0,@9455 2181,0,@4602 2204,0,@11421 2232,0,@9455 2273,0,@4670 2305,0,@9455 2346,0,@4670 2385,0,@11424 2422,0,@10448 2457,0,@13969 2492,0,@10448 2527,0,@11428 2600,0,@10448 2635,0,@13971 2670,0,@10448 2705,0,@11428 2778,0,@10448 2813,0,@13973 2848,0,@10448 2883,0,@11428 2956,0,@10448 2991,0,@13975 3026,0,@10448 3061,0,@11428 3134,0,@10448 3169,0,@13977 3207,0,@11431 3243,0,0 3250,0,0 3257,0,1 3263,0,0 3296,0,@11375 3333,0,@10448 3368,0,@11428 3441,0,@10448 3476,0,@11428 3552,0,@11377 3588,0,0 3595,0,0 3602,0,1 3608,0,0 7759:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16794,1,@2941| 7760:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@2943|11,0,@4758 7761:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16862,1,@2944| 7762:D3,64|3b650c7305ff552ccd0589c76a016a018b52048b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16877,1,@2946| 7763:D3,816|3b650c7305ff552ccd0d508b3b89fe83ff050f85c20000008b4304ff73088b75008d76ec3b75087305ff5528cd0d897500c746fc04000000895e0c8b7c2404897e08895604c706144b3fb18b7d008d7ff83b7d087305ff5528cd45897d00c747fc0100000089378b5d008d5bf43b5d087305ff5528cd85895d00c743fc02000000897b048b7a04893be8ae65ffff89c7578b7c24088b0789ff8b5f0489ff8b7f0857e84142ffff89c383fb0175035feb0e8b0424e8df02000089c78d6424048b74240c8b142489168d642404897e04b80100000083c404c2040089f783fe0175168b5b04ba948b68b1588b74240489742404e96556ffff83ff0775118b5b048b5208588b74240489742404ff228b73048b7b088b5604ff32ff7608ff77108b7f14f7c7010000000f85800000008b3f8b37ff368b7704ff368b7f088b07e8ba0200008b7c240489fb83ff01750489c7eb07e80603000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e048d642404c706150000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893783c404eb05bf01000000578b742404bf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c7071b000000578b7c24188b0789ff8b5f0489ff8b7f0857e82d40ffff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175035beb0e8b0424e8cd01000089c38d64240483fb0175065f83c404eb0e8b0424e81802000089c78d6424088b7424108b142489168d642404897e04b80100000083c408c20400f40000|@16879,1,@2953|71,0,@7764 138,1,@7670 163,1,@7636 181,1,@7765 208,0,0 229,0,@16740 243,1,@7656 318,1,@7766 338,1,@7767 385,0,10 418,0,0 430,0,0 440,0,0 504,0,3 580,0,2 672,0,13 695,1,@7636 751,1,@7768 776,1,@7769 803,0,0 7764:D3,64|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c54ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16878,1,@2947| 7765:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2948| 7766:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@2949|68,0,0 7767:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2950| 7768:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2951| 7769:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2952| 7770:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16889,1,@2969|27,1,@7771 7771:D3,520|3b650c7305ff552ccd0950538b342489f7ff760489ff8b570489d6f6c2010f85d30000008b520483fa017507ba03000000eb05ba0100000083fa030f85b60000008d64240489ffff3689ff8b7708ff3689ffff770c8b7c24108b0789ff8b5f0489ff8b7f0857e89d3cffff89c7578b74241c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241089770c8b742414897708c74704249b68b1c707cc4f3fb18b74241c57568b4424148b5c2410e8b70100008b342489f783fe0175088d64240489c7eb0d89fbe88e07000089c78d6424048b74241c8b142489168d642404897e04b80100000083c410c2080089ff8b7708ff3689ffff770c8b7c24108b0789ff8b5f0489ff8b7f0857e8ef3bffff89c7578b7c241c8b55008d52e83b55087305ff5528cd80895500c742fc05000000897a108b7c2410897a0c8b7c2414897a08c74204249b68b1c70278563fb18b74241c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c2408894f08897704c707d0563fb18b75008d76f83b75087305ff5528cd84897500c746fc0100000089168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b44240ce8925effff8b342489f783fe0175088d64240489c7eb0d89fbe82909000089c78d6424048b74241c8b142489168d642404897e04b80100000083c410c20800f4000000|@16888,1,@2968|45,0,1 52,0,0 103,1,@7636 160,0,@16880 166,0,@7772 185,1,@7773 210,1,@7779 237,0,0 277,1,@7636 334,0,@16880 340,0,@7780 386,0,@7781 454,1,@7670 479,1,@7785 506,0,0 7772:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16881,1,@2954| 7773:D3,944|3b650c7305ff552ccd0989c28b7a0cff378b0a8b018b71048b7908ff710cff720483ff030f8596010000a8010f858c0100008b3889fa8b0f83f933753a8b7f04f7c70100000075288b7f04f7c70100000075168b7f0483ff017507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f8539010000ff70048b7a048b520c8b0f8b7f048b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894f04c707070000008b4d008d49f03b4d087305ff5528cdcd894d00c741fc03000000895908897104c7010300000089ce8b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000894104c701070000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04893e8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000578b442404e83002000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642408eb56eb008b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000895f08897704c7070300000057e85802000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240457f644240801754e8b7c24088b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb05b801000000f644240c01754e8b7c240c8b3f8b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937eb05bf01000000578b7c241c8b55008d52f83b55087305ff5528cd81895500c742fc01000000893a8b7424188b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048937578b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c897704c707070000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb01750489c3eb07e85e01000089c383fb0175068b442408eb098b442408e8ac0100008b1c24e8645affff8d6424048b342489f783fe0175078d642414c2080089fb8d6424048b7c2410897c241883c418e9dd010000f4|@16882,1,@2960|92,0,1 99,0,0 106,0,0 113,0,0 120,0,0 180,0,3 218,0,1 255,0,3 288,0,0 390,0,2 400,1,@7774 482,0,1 488,1,@7775 577,0,0 610,0,0 619,0,0 667,0,0 700,0,0 709,0,0 817,0,3 850,0,0 866,1,@7776 888,1,@7777 896,1,@7670 939,1,@7778 7774:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2955|50,0,3 102,0,0 7775:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070700000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2956|50,0,3 102,0,0 7776:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2957| 7777:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2958| 7778:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2959| 7779:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2961| 7780:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16883,1,@2962| 7781:D3,72|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a048b7208545756e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16887,1,@2966|31,1,@7782 7782:D3,188|3b650c7305ff552ccd0950538b3c24ff77088b7c24088b0789ff8b5f0489ff8b7f0857e86433ffff89c7578b7424188b5424148b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008957148977108b74240889f089770c8b74240c897708c74704f09b68b1c707fc573fb18b5c24148b7424185756e879f8ffff8b342489f783fe0175088d64240489c7eb0d89fbe89400000089c78d6424048b7424188b142489168d642404897e04b80100000083c408c20c00f40000|@16886,1,@2965|36,1,@7636 102,0,@16884 108,0,@7783 123,1,@7773 148,1,@7784 175,0,0 7783:D3,72|3b650c7305ff552ccd0589d66a016a018b56048b46088b5e0c8b7e108b7614545756ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16885,1,@2963| 7784:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2964| 7785:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2967| 7786:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2970| 7787:D3,160|3b650c7305ff552ccd0589d78b55008d52f83b55087305ff5528cd80895500c742fc010000008b771089328b75008d76f83b75087305ff5528cd84897500c746fc010000008b4f0c890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089500489306a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16775,1,@2971|103,0,0 7788:D3,236|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b142489d789168b5d008d5bf43b5d087305ff5528cdc0895d00c743fc0200000089730489ff8b7714893389ff8b4710e87c53ffff89c7578b5d008d5bf83b5d087303ff5528895d00c743fc010000008b7424048b7e0c893b8b7d008d7ff83b7d087305ff5528cd48897d00c747fc0100000089f68b7608893757b801000000e8d82fffff89c383fb0175035feb0e8b0424e84600000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f048d6424048938c3f400|@16776,1,@2973|84,1,@7670 159,0,0 164,1,@7636 182,1,@7789 7789:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2972| 7790:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2974| 7791:D3,128|3b650c7305ff552ccd09a8017569ff308b40048b0b8d144d010000008b3c248b378d3475010000003bd67f428d730489ff8d7f043bc9f3a6752ee8c1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404eb048d642404e989ffffffb801000000c3f40000|@9865,1,@2975|120,0,0 7792:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16895,1,@2983|27,1,@7793 7793:D3,644|3b650c7305ff552ccd0950538b3c248b7f04ff378b7c2404ff378b7c2408ff77088b7c240cff770c8b7c2410ff77106a016a018b542428548b4424248b5c2410ff128b1424ff7424048b328b7c240c8b3f3bf77502eb318b0e8d1c4d010000008b0789c18d0445010000003bd80f85940000008d76048d7f043bc9f3a674098d64240ce9830000008b7a048b74240c8b76043bfe75468b7a088b74240c8b76083bfe75318b7a0c8b74240c8b760c3bfe751c8b7a108b74240c8b76103bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff03751b8b74243089168b3c24897e048d642404b80100000083c424c208008d64240ceb048d64240c8b7c24208b4d008d49e83b4d087305ff5528cd80894d00c741fc050000008979108b7c241489790c8b7c2418897908c74104489d68b1c701845f3fb18b55008d52e83b55087305ff5528cd02895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b75008d76e43b75087305ff5528cd06897500c746fc06000040c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b5c242089d7894f1089770c8b442404894708895f04c707dc5f3fb18062ffbf89f7894f148957108b54241089570c8b5424088957088b54240c895704c70790603fb18066ffbf8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70709000000578b7c241c8b078b7c241c8b5f048b7c241c8b7f0857e8812bffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424245a8d6424188916897e04b801000000c20800f4|@16894,1,@2982|193,0,1 200,0,0 207,0,0 214,0,0 221,0,0 247,0,0 317,0,@16890 323,0,@7794 356,0,0 363,0,0 370,0,0 377,0,0 383,0,0 416,0,0 423,0,0 430,0,0 437,0,0 444,0,0 450,0,0 478,0,@7795 517,0,@7796 556,0,4 583,1,@7636 636,0,0 7794:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16891,1,@2976| 7795:D3,160|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b571089168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f0c890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@16892,1,@2977|108,0,0 7796:D3,356|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b3c248b771489338b45008d40f83b45087305ff5528cd88894500c740fc0100000089ff8b771089308b75008d76f43b75087305ff5528cd89897500c746fc0200000089ff8b7f0c897e04c7061b0000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000c74704010000008937576a01e88929ffff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b7424048b7604897704c70708623fb18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a100000089c383fb0175035feb0e8b0424e8f300000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f40000|@16893,1,@2981|112,0,13 145,0,0 155,1,@7636 197,0,@7797 232,0,9 265,0,0 283,1,@7798 301,1,@7799 7797:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@2978|44,0,3 7798:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2979| 7799:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2980| 7800:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2984| 7801:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2985| 7802:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2986| 7803:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2987| 7804:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2988| 7805:D3,144|3b650c7305ff552ccd01ff308b70048b7e04ff76088b3f83ff017507bf01000000eb0c8b3f8b470ce88341ffff89c7578b7c24088b0789ff8b5f0489ff8b7f0857e86625ffff8b342489f783fe0175088d64240489c7eb0d89fbe84500000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c404c3f4|@16897,1,@2990|29,0,0 41,1,@7659 66,1,@7636 91,1,@7806 7806:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2989| 7807:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2991| 7808:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2992| 7809:D3,136|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b45008d40f03b45087305ff5528cdc0894500c740fc03000000c7400801000000897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@16898,1,@2993|72,0,0 81,0,0 7810:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2994| 7811:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2995| 7812:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070500000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@2996|50,0,2 102,0,0 7813:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2997| 7814:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16903,1,@3001|27,1,@7815 7815:D3,320|3b650c7305ff552ccd0950538b3c2489feff3789f689f7ff760489ffff77088b7c24108b0789ff8b5f0489ff8b7f0857e80721ffff89c7578b74241c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74241089770c8b742414897708c747041c9f68b1c707d06a3fb18b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7c241c8b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b8b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704010000008b74240889378b45008d40f43b45087305ff5528cd88894500c740fc020000008978048b7c240c8938e88e43ffff8b342489f783fe0175088d64240489c7eb0d89fbe89100000089c78d6424048b74241c8b142489168d642404897e04b80100000083c410c20800f4000000|@16902,1,@3000|49,1,@7636 106,0,@16900 112,0,@7816 208,0,0 254,1,@7670 279,1,@7817 306,0,0 7816:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@16901,1,@2998| 7817:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@2999| 7818:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3002| 7819:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3003| 7820:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3004| 7821:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@3005|68,0,0 7822:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3006| 7823:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3007| 7824:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3008| 7825:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3009| 7826:D3,64|3b650c7305ff552ccd0589c76a016a018b52048b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@16906,1,@3011| 7827:D3,80832|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c38b3089f28b3683fe010f85700d0000ff720483ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9440c00008b7c24048b3789d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b760c897704c707d0aa40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fa83ff037d0abf2cb566b1e9d10a00008b7c240c8b771489d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8b4a068b1ff1289c28b0424ff1289c7578b7c241089fe83ff057d0abe2cb566b1e9b30900008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b74241489f783fe077d0abf2cb566b1e9a50800008b742418ff760489ff83ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241889fa83ff097d0abe2cb566b1e9770200008b7c241c8b770889d283ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424248b7608897704c70788ad40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c24248b77108b54242083ea02710e8d64242cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74242c8b7604897704c707b0ad40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720a168b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70640a168b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70660a168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780a168b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a4a168b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c4a168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa030f850209000089fa8b7a04ff7208ff720c83ee0256710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9ce07000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f0c8b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9c206000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24148b7f0c8b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70680a268b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069ca268b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8a268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff050f85360b0000ff760483ea0252710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e90a0a00008b7c24048b7f0489f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f0c8b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e9f70800008b7c24088b770889d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b828a368b1ff1289c28b0424ff1289c7578b7c240c89fe83ff057d0abe2cb566b1e9d90700008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24148b7f0c8b17ff1289c7578b7c241089fe83ff077d0abf2cb566b1e9ca0600008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c2418ff77108b7c241883ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70744a368b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664a368b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d89868b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706341468b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077ca368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe070f85b7100000ff720483ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e98b0f00008b7c24048b770889d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8eca368b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e96d0e00008b74240cff761089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240c89f783fe057d0abe2cb566b1e93f0800008b742410ff760c89ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241089fa83ff077d0abf2cb566b1e9110200008b7c24148b770489d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7610897704c70728ae40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241c8b3f8b74241883ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24208b7f0c8b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706602568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720a468b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073ca468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70760a468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa090f85530c0000ff770483ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9270b00008b7c24048b771089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8cca468b1ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e9090a00008b7c240c8b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f0c8b17ff1289c7578b74240c89f783fe057d0abe2cb566b1e9f90800008b742410ff760c89ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241089fe83ff077d0abf2cb566b1e9cb0200008b7c24148b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f0c8b17ff1289c7578b7c241489fa83ff097d0abe2cb566b1e9bc0100008b7c24188b771489d283ea02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b820a568b1ff1289c28b0424ff1289c7578b7c24208b7f088b74241c83ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24248b7f0c8b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774a568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70690a568b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707602568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b0a568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706cca568b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707eca568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff0b0f85fe0800008b7e04ff7608ff760c83ea0252710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e9cc07000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf0405c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9c206000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24148b7f0c8b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70634a668b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70750a668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe0d0f85661500008d642404ff720483ef0257710e8d642408b8f80466b18b5d04ff238b342489f783fe017d0e8d642408be2cb566b1e9361400008b742404ff761089ff83ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e9050e00008b742408ff3689ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240889fe83ff057d0abe2cb566b1e9d80700008b7c240c8b7f0889f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74240c89f783fe077d0abf2cb566b1e9ca0600008b742410ff760489ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24148b7f0c8b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c4a668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e4a668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70600a768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720a768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073ca768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa0f0f85130900008d64240489fa8b7a04ff7208ff720c83ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9db07000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c05c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9d106000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240883ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf7c02c0b08b17b828a968b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70644a968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70660a968b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077ca968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff11750a8d642404b8f0a968b1c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe130f85c50700008b7204ff720883ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe185566b1e99606000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7614897704c707f4b340b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70778aa68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa150f85c50700008b5704ff770883ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e99606000089f683ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b760c897704c7071cb440b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70744ab68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff170f857209000089f78b7704ff7708ff770c83ea0252710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642410be2cb566b1e93e08000089d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8b4ab68b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e92707000089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240c83ee02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742414893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7610897704c707a0b640b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d0ab68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f0ab68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe190f85330b00008b7204ff721083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9040a000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7618897704c707c8b640b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e99708000089f689f783ee02710e8d642414b8f80466b18b5d04ff2383fe017d07be2cb566b1eb2d89f283ea02710e8d642414b8f80466b18b5d04ff2383ee02710e8d642414b8f80466b18b5d04ff23be74ac68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702b8b566b18b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460403000000c706010000005689ff89fe83ff057d0abe2cb566b1e92607000089f689f783ee02710e8d642418b8f80466b18b5d04ff2383fe017d07be2cb566b1eb2d89f283ea02710e8d642418b8f80466b18b5d04ff2383ee02710e8d642418b8f80466b18b5d04ff23be74ac68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702b8b566b18b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460403000000c706010000005689ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b4ac68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4ac68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4ac68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70710ad68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa1b0f85900f000089fa8b7a04ff7208ff720cff721083ee0256710e8d642414b8f80466b18b5d04ff238b142489d683fa017d0e8d642414be2cb566b1e9590e000089f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f0c8b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e94d0d000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7610897704c707f0b640b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b74240c89f783fe057d0abe2cb566b1e9dc0b000089ff83ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241083ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c241c8b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24208b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24248b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24288b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c242c8b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063ca468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70788ad68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b43568b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a4ad68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff1d0f85540b00008d642404ff760483ea0252710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be2cb566b1e9240a00008b7c24048b770889d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b818ae68b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9060900008b74240cff760c89ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fe83ff057d0abe2cb566b1e9d80200008b7c24108b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c241089fa83ff077d0abf2cb566b1e9cb0100008b7c24148b771089d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b834ae68b1ff1289c28b0424ff1289c7578b7c241c8b77048b54241883ea02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b868ae68b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70784ae68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a4ae68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe1f0f857e0a0000ff72048b7208ff720cff721083ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642414be2cb566b1e94909000089d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b814af68b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e93208000089ff83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bf6c02c0b08b17ff1289c7578b74240c89f783fe057d0abe2cb566b1e92707000089ff83ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74241083ee02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742418893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424248b760c897704c707b8b740b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400805000000897804c70001000000ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e01468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707349768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c4188b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70790af68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa210f8504090000ff7704ff7708ff770c83ee0256710e8d642414b8f80466b18b5d04ff238b342489f783fe017d0e8d642414be2cb566b1e9d207000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24088b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c240c8b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24108b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24148b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24188b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e9a801000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b7c24148b7f0c8b17ff1289c7578b7c240883ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241489388b7c24188b7f0c8b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70600b068b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071cb068b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073cb068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff230f857109000089f7ff77048b7708ff770c83ea0252710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642410be2cb566b1e93d08000089d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b760c897704c707a8c740b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e9d006000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b8c4b068b1ff1289c28b0424ff1289c7578b7c241083ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d89868b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e0b068b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70700b168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe250f851e0a00008d642404ff7204ff7208ff720c8b721083ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9e508000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf2405c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9db07000089f683ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b86cb168b1ff1289c28b0424ff1289c7578b74240c89f783fe057d0abe2cb566b1e9c006000089ff83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bf3c00c0b08b17ff1289c7578b7c241083ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70688b168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d89868b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a8b168b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c8b168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa270f85fc0b0000ff770483ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9d00a00008b7c24048b3789d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b760c897704c70720c840b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fa83ff037d0abf2cb566b1e95d0900008b7c240c8b770489d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b760c897704c7077cca40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c241089fe83ff057d0abe2cb566b1e9e90700008b7c24148b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b74241489f783fe077d0abf2cb566b1e9db0600008b742418ff760c89ff83ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241c8b77108b54241883ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8e0b268b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70618b368b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70638b368b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70758b368b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883768b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774b368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff290f85640b00008d642404ff760483ea0252710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be2cb566b1e9340a00008b7c24048b3789d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b8e4b368b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9170900008b74240cff760489ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fa83ff057d0abe2cb566b1e9e90200008b7c24108b770c89d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b858ba68b1ff1289c28b0424ff1289c7578b7c241489fa83ff077d0abf2cb566b1e9cb0100008b7c24188b771089d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b890ba68b1ff1289c28b0424ff1289c7578b7c24208b77088b54241c83ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8c8ba68b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70600bb68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720bb68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70644bb68b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70658b368b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764bb68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe2b0f85000900008b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9ce07000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f0c8b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9c206000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241089388b7c24148b7f0c8b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70680a268b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069ca268b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4bb68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa2d0f856607000089fa8b7a04ff720883ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe185566b1e93506000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f0c8b17ff1289c7578b7c240483ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70744bc68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff2f0f85640700008b7e04ff760883ea0252710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe185566b1e93506000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f0c8b17ff1289c7578b7c240483ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcbc68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe310f850e0a00008d642404ff7204ff72088b720cff721083ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e9d508000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf1c05c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9cb07000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240889f783fe057d0abe2cb566b1e9a401000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bf3c00c0b08b17ff1289c7578b7c240c83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24148938bf1c05c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c41468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70604bd68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70724bd68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa330f856f090000ff77048b5708ff770c83ee0256710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642410be2cb566b1e93d08000089f683ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf0c04c0b08b17b894bd68b1ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e92607000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b760c897704c70718fa40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241083ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707084168b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b0bd68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff350f85c707000089f78b7704ff770883ea0252710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe185566b1e99606000089d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c70740fa40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70724be68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe370f85060600008d642404ff720483ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7079cbe68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa390f85330b00008b5704ff771083ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9040a000089f683ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b761c897704c70768fa40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e99708000089f689f783ee02710e8d642414b8f80466b18b5d04ff2383fe017d07be2cb566b1eb2d89f283ea02710e8d642414b8f80466b18b5d04ff2383ee02710e8d642414b8f80466b18b5d04ff23be74ac68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702b8b566b18b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460403000000c706010000005689ff89fe83ff057d0abe2cb566b1e92607000089f689f783ee02710e8d642418b8f80466b18b5d04ff2383fe017d07be2cb566b1eb2d89f283ea02710e8d642418b8f80466b18b5d04ff2383ee02710e8d642418b8f80466b18b5d04ff23be74ac68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702b8b566b18b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460403000000c706010000005689ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b4ac68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4ac68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4ac68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720bf68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff3b0f851e0a00008b7e04ff7608ff760cff761083ea0252710e8d642414b8f80466b18b5d04ff238b142489d683fa017d0e8d642414be2cb566b1e9e908000089f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f0c8b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9dd07000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf0c04c0b08b17b898bf68b1ff1289c28b0424ff1289c7578b74240c89f783fe057d0abe2cb566b1e9c206000089ff83ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241083ef02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c241c89388b7c24208b7f0c8b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707602568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ecbf68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883768b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070cc068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c38d64240489d783fa037d06b8b4ab66b1c3ff760483ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7077cc068b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@17169,1,@3100|26,0,@11331 60,0,@9455 84,0,@11421 111,0,@9455 153,0,@4674 197,0,@7828 230,0,2 237,0,2 246,0,0 274,0,@11421 302,0,@9455 344,0,@4724 351,0,@16914 379,0,@11421 407,0,@9455 448,0,@4672 471,0,@11421 500,0,@9455 524,0,@11421 552,0,@9455 593,0,@4670 616,0,@11421 644,0,@9455 685,0,@4670 708,0,@11421 735,0,@9455 776,0,@4602 799,0,@11421 827,0,@9455 868,0,@4670 900,0,@9455 941,0,@4670 980,0,@11424 1017,0,@10448 1052,0,@13969 1087,0,@10448 1122,0,@11428 1195,0,@10448 1230,0,@13971 1265,0,@10448 1300,0,@11428 1373,0,@10448 1408,0,@13973 1443,0,@10448 1478,0,@11428 1551,0,@10448 1586,0,@13975 1621,0,@10448 1656,0,@11428 1729,0,@10448 1764,0,@13977 1802,0,@11431 1838,0,0 1845,0,0 1852,0,1 1858,0,0 1875,0,@11421 1903,0,@9455 1945,0,@4674 1989,0,@7834 2022,0,1 2029,0,3 2038,0,0 2075,0,@9455 2117,0,@4674 2161,0,@7835 2194,0,1 2201,0,3 2210,0,0 2258,0,@11424 2295,0,@10448 2330,0,@16920 2365,0,@10448 2400,0,@11428 2473,0,@10448 2508,0,@16922 2546,0,@10448 2581,0,@11428 2654,0,@10448 2689,0,@16347 2724,0,@10448 2759,0,@11428 2832,0,@10448 2867,0,@16924 2902,0,@10448 2937,0,@11428 3010,0,@10448 3045,0,@16926 3083,0,@10448 3118,0,@11428 3191,0,@10448 3226,0,@16928 3264,0,@11431 3300,0,0 3307,0,0 3314,0,1 3320,0,0 3353,0,0 3390,0,@10448 3425,0,@16930 3461,0,0 3468,0,0 3475,0,1 3481,0,0 3498,0,@11331 3538,0,@9455 3562,0,@11421 3583,0,@9455 3649,0,@11421 3671,0,@9455 3695,0,@11421 3723,0,@9455 3764,0,@4670 3787,0,@11421 3815,0,@9455 3856,0,@4670 3879,0,@11421 3906,0,@9455 3947,0,@4602 3970,0,@11421 3998,0,@9455 4039,0,@4670 4071,0,@9455 4112,0,@4670 4151,0,@11424 4188,0,@10448 4223,0,@13969 4258,0,@10448 4293,0,@11428 4366,0,@10448 4401,0,@13971 4436,0,@10448 4471,0,@11428 4544,0,@10448 4579,0,@13973 4614,0,@10448 4649,0,@11428 4722,0,@10448 4757,0,@13975 4792,0,@10448 4827,0,@11428 4900,0,@10448 4935,0,@13977 4973,0,@11431 5009,0,0 5016,0,0 5023,0,1 5029,0,0 5048,0,@9455 5134,0,@11424 5171,0,@10448 5206,0,@16938 5241,0,@10448 5276,0,@11428 5349,0,@10448 5384,0,@16347 5419,0,@10448 5454,0,@11428 5527,0,@10448 5562,0,@16940 5600,0,@11431 5636,0,0 5643,0,0 5650,0,1 5656,0,0 5689,0,0 5726,0,@10448 5761,0,@16942 5797,0,0 5804,0,0 5811,0,1 5817,0,0 5834,0,@11331 5866,0,@9455 5890,0,@11421 5918,0,@9455 5984,0,@11421 6012,0,@9455 6054,0,@4724 6061,0,@16949 6089,0,@11421 6116,0,@9455 6182,0,@11421 6210,0,@9455 6251,0,@4672 6284,0,@9455 6308,0,@11421 6336,0,@9455 6377,0,@4670 6400,0,@11421 6428,0,@9455 6469,0,@4670 6492,0,@11421 6519,0,@9455 6560,0,@4602 6583,0,@11421 6611,0,@9455 6652,0,@4670 6684,0,@9455 6725,0,@4670 6764,0,@11424 6801,0,@10448 6836,0,@13969 6871,0,@10448 6906,0,@11428 6979,0,@10448 7014,0,@13971 7049,0,@10448 7084,0,@11428 7157,0,@10448 7192,0,@13973 7227,0,@10448 7262,0,@11428 7335,0,@10448 7370,0,@13975 7405,0,@10448 7440,0,@11428 7513,0,@10448 7548,0,@13977 7586,0,@11431 7622,0,0 7629,0,0 7636,0,1 7642,0,0 7675,0,@11424 7712,0,@10448 7747,0,@16347 7782,0,@10448 7817,0,@11428 7890,0,@10448 7925,0,@16951 7960,0,@10448 7995,0,@11428 8068,0,@10448 8103,0,@16953 8138,0,@10448 8173,0,@11428 8246,0,@10448 8281,0,@16853 8319,0,@10448 8354,0,@11428 8427,0,@10448 8462,0,@15286 8500,0,@11431 8536,0,0 8543,0,0 8550,0,1 8556,0,0 8589,0,0 8626,0,@10448 8661,0,@16955 8697,0,0 8704,0,0 8711,0,1 8717,0,0 8734,0,@11331 8766,0,@9455 8790,0,@11421 8818,0,@9455 8860,0,@4724 8867,0,@16962 8895,0,@11421 8924,0,@9455 8948,0,@11421 8976,0,@9455 9017,0,@4670 9040,0,@11421 9068,0,@9455 9109,0,@4670 9132,0,@11421 9159,0,@9455 9200,0,@4602 9223,0,@11421 9251,0,@9455 9292,0,@4670 9324,0,@9455 9365,0,@4670 9404,0,@11424 9441,0,@10448 9476,0,@13969 9511,0,@10448 9546,0,@11428 9619,0,@10448 9654,0,@13971 9689,0,@10448 9724,0,@11428 9797,0,@10448 9832,0,@13973 9867,0,@10448 9902,0,@11428 9975,0,@10448 10010,0,@13975 10045,0,@10448 10080,0,@11428 10153,0,@10448 10188,0,@13977 10226,0,@11431 10262,0,0 10269,0,0 10276,0,1 10282,0,0 10299,0,@11421 10328,0,@9455 10352,0,@11421 10380,0,@9455 10421,0,@4670 10444,0,@11421 10472,0,@9455 10513,0,@4670 10536,0,@11421 10563,0,@9455 10604,0,@4602 10627,0,@11421 10655,0,@9455 10696,0,@4670 10728,0,@9455 10769,0,@4670 10808,0,@11424 10845,0,@10448 10880,0,@13969 10915,0,@10448 10950,0,@11428 11023,0,@10448 11058,0,@13971 11093,0,@10448 11128,0,@11428 11201,0,@10448 11236,0,@13973 11271,0,@10448 11306,0,@11428 11379,0,@10448 11414,0,@13975 11449,0,@10448 11484,0,@11428 11557,0,@10448 11592,0,@13977 11630,0,@11431 11666,0,0 11673,0,0 11680,0,1 11686,0,0 11703,0,@11421 11731,0,@9455 11773,0,@4674 11817,0,@7838 11850,0,1 11857,0,3 11866,0,0 11902,0,@9455 11984,0,@11424 12021,0,@10448 12056,0,@15553 12091,0,@10448 12126,0,@11428 12199,0,@10448 12234,0,@16965 12272,0,@10448 12307,0,@11428 12380,0,@10448 12415,0,@16347 12450,0,@10448 12485,0,@11428 12558,0,@10448 12593,0,@16967 12628,0,@10448 12663,0,@11428 12736,0,@10448 12771,0,@16853 12809,0,@11431 12845,0,0 12852,0,0 12859,0,1 12865,0,0 12898,0,0 12935,0,@10448 12970,0,@16969 13006,0,0 13013,0,0 13020,0,1 13026,0,0 13043,0,@11331 13075,0,@9455 13099,0,@11421 13127,0,@9455 13169,0,@4724 13176,0,@16976 13204,0,@11421 13232,0,@9455 13298,0,@11421 13327,0,@9455 13351,0,@11421 13379,0,@9455 13420,0,@4670 13443,0,@11421 13471,0,@9455 13512,0,@4670 13535,0,@11421 13562,0,@9455 13603,0,@4602 13626,0,@11421 13654,0,@9455 13695,0,@4670 13727,0,@9455 13768,0,@4670 13807,0,@11424 13844,0,@10448 13879,0,@13969 13914,0,@10448 13949,0,@11428 14022,0,@10448 14057,0,@13971 14092,0,@10448 14127,0,@11428 14200,0,@10448 14235,0,@13973 14270,0,@10448 14305,0,@11428 14378,0,@10448 14413,0,@13975 14448,0,@10448 14483,0,@11428 14556,0,@10448 14591,0,@13977 14629,0,@11431 14665,0,0 14672,0,0 14679,0,1 14685,0,0 14702,0,@11421 14729,0,@9455 14795,0,@11421 14823,0,@9455 14865,0,@4724 14872,0,@16982 14909,0,@9455 14991,0,@11424 15028,0,@10448 15063,0,@16988 15098,0,@10448 15133,0,@11428 15206,0,@10448 15241,0,@16990 15279,0,@10448 15314,0,@11428 15387,0,@10448 15422,0,@15553 15457,0,@10448 15492,0,@11428 15565,0,@10448 15600,0,@16347 15635,0,@10448 15670,0,@11428 15743,0,@10448 15778,0,@16992 15813,0,@10448 15848,0,@11428 15921,0,@10448 15956,0,@16994 15994,0,@11431 16030,0,0 16037,0,0 16044,0,1 16050,0,0 16083,0,0 16120,0,@10448 16155,0,@16996 16191,0,0 16198,0,0 16205,0,1 16211,0,0 16228,0,@11331 16266,0,@9455 16290,0,@11421 16311,0,@9455 16352,0,@4755 16375,0,@11421 16397,0,@9455 16421,0,@11421 16449,0,@9455 16490,0,@4670 16513,0,@11421 16541,0,@9455 16582,0,@4670 16605,0,@11421 16632,0,@9455 16673,0,@4602 16696,0,@11421 16724,0,@9455 16765,0,@4670 16797,0,@9455 16838,0,@4670 16877,0,@11424 16914,0,@10448 16949,0,@13969 16984,0,@10448 17019,0,@11428 17092,0,@10448 17127,0,@13971 17162,0,@10448 17197,0,@11428 17270,0,@10448 17305,0,@13973 17340,0,@10448 17375,0,@11428 17448,0,@10448 17483,0,@13975 17518,0,@10448 17553,0,@11428 17626,0,@10448 17661,0,@13977 17699,0,@11431 17735,0,0 17742,0,0 17749,0,1 17755,0,0 17774,0,@9455 17860,0,@11424 17897,0,@10448 17932,0,@15330 17967,0,@10448 18002,0,@11428 18075,0,@10448 18110,0,@16347 18145,0,@10448 18180,0,@11428 18253,0,@10448 18288,0,@17000 18326,0,@11431 18362,0,0 18369,0,0 18376,0,1 18382,0,0 18415,0,0 18452,0,@10448 18487,0,@17002 18523,0,0 18530,0,0 18537,0,1 18543,0,0 18560,0,@11331 18596,0,@9455 18620,0,@11421 18649,0,@9455 18673,0,@11421 18701,0,@9455 18742,0,@4670 18765,0,@11421 18793,0,@9455 18834,0,@4670 18857,0,@11421 18884,0,@9455 18925,0,@4602 18948,0,@11421 18976,0,@9455 19017,0,@4670 19049,0,@9455 19090,0,@4670 19129,0,@11424 19166,0,@10448 19201,0,@13969 19236,0,@10448 19271,0,@11428 19344,0,@10448 19379,0,@13971 19414,0,@10448 19449,0,@11428 19522,0,@10448 19557,0,@13973 19592,0,@10448 19627,0,@11428 19700,0,@10448 19735,0,@13975 19770,0,@10448 19805,0,@11428 19878,0,@10448 19913,0,@13977 19951,0,@11431 19987,0,0 19994,0,0 20001,0,1 20007,0,0 20024,0,@11421 20052,0,@9455 20076,0,@11421 20104,0,@9455 20145,0,@4670 20168,0,@11421 20196,0,@9455 20237,0,@4670 20260,0,@11421 20287,0,@9455 20328,0,@4602 20351,0,@11421 20379,0,@9455 20420,0,@4670 20452,0,@9455 20493,0,@4670 20532,0,@11424 20569,0,@10448 20604,0,@13969 20639,0,@10448 20674,0,@11428 20747,0,@10448 20782,0,@13971 20817,0,@10448 20852,0,@11428 20925,0,@10448 20960,0,@13973 20995,0,@10448 21030,0,@11428 21103,0,@10448 21138,0,@13975 21173,0,@10448 21208,0,@11428 21281,0,@10448 21316,0,@13977 21354,0,@11431 21390,0,0 21397,0,0 21404,0,1 21410,0,0 21427,0,@11421 21455,0,@9455 21496,0,@4602 21519,0,@11421 21548,0,@9455 21572,0,@11421 21600,0,@9455 21641,0,@4670 21664,0,@11421 21692,0,@9455 21733,0,@4670 21756,0,@11421 21783,0,@9455 21824,0,@4602 21847,0,@11421 21875,0,@9455 21916,0,@4670 21948,0,@9455 21989,0,@4670 22028,0,@11424 22065,0,@10448 22100,0,@13969 22135,0,@10448 22170,0,@11428 22243,0,@10448 22278,0,@13971 22313,0,@10448 22348,0,@11428 22421,0,@10448 22456,0,@13973 22491,0,@10448 22526,0,@11428 22599,0,@10448 22634,0,@13975 22669,0,@10448 22704,0,@11428 22777,0,@10448 22812,0,@13977 22850,0,@11431 22886,0,0 22893,0,0 22900,0,1 22906,0,0 22932,0,@9455 22973,0,@4602 23012,0,@11424 23049,0,@10448 23084,0,@17009 23119,0,@10448 23154,0,@11428 23227,0,@10448 23262,0,@17011 23297,0,@10448 23332,0,@11428 23405,0,@10448 23440,0,@17013 23475,0,@10448 23510,0,@11428 23583,0,@10448 23618,0,@17015 23653,0,@10448 23688,0,@11428 23761,0,@10448 23796,0,@16347 23834,0,@11431 23870,0,0 23877,0,0 23884,0,1 23890,0,0 23923,0,0 23960,0,@10448 23995,0,@17017 24031,0,0 24038,0,0 24045,0,1 24051,0,0 24068,0,@11331 24112,0,@9455 24136,0,@11421 24157,0,@9455 24198,0,@4762 24221,0,@11421 24243,0,@9455 24267,0,@11421 24295,0,@9455 24336,0,@4670 24359,0,@11421 24387,0,@9455 24428,0,@4670 24451,0,@11421 24478,0,@9455 24519,0,@4602 24542,0,@11421 24570,0,@9455 24611,0,@4670 24643,0,@9455 24684,0,@4670 24723,0,@11424 24760,0,@10448 24795,0,@13969 24830,0,@10448 24865,0,@11428 24938,0,@10448 24973,0,@13971 25008,0,@10448 25043,0,@11428 25116,0,@10448 25151,0,@13973 25186,0,@10448 25221,0,@11428 25294,0,@10448 25329,0,@13975 25364,0,@10448 25399,0,@11428 25472,0,@10448 25507,0,@13977 25545,0,@11431 25581,0,0 25588,0,0 25595,0,1 25601,0,0 25620,0,@9455 25666,0,@4674 25673,0,@17047 25721,0,@11424 25758,0,@10448 25793,0,@17049 25828,0,@10448 25863,0,@11428 25936,0,@10448 25971,0,@16347 26006,0,@10448 26041,0,@11428 26114,0,@10448 26149,0,@17051 26187,0,@11431 26223,0,0 26230,0,0 26237,0,1 26243,0,0 26276,0,0 26313,0,@10448 26348,0,@17053 26384,0,0 26391,0,0 26398,0,1 26404,0,0 26421,0,@11331 26440,0,@17060 26457,0,@11331 26492,0,@9455 26516,0,@10443 26537,0,@9455 26579,0,@4674 26623,0,@7847 26656,0,1 26663,0,3 26672,0,0 26703,0,@9455 26727,0,@11421 26755,0,@9455 26796,0,@4670 26819,0,@11421 26847,0,@9455 26888,0,@4670 26911,0,@11421 26938,0,@9455 26979,0,@4602 27002,0,@11421 27030,0,@9455 27071,0,@4670 27103,0,@9455 27144,0,@4670 27183,0,@11424 27220,0,@10448 27255,0,@13969 27290,0,@10448 27325,0,@11428 27398,0,@10448 27433,0,@13971 27468,0,@10448 27503,0,@11428 27576,0,@10448 27611,0,@13973 27646,0,@10448 27681,0,@11428 27754,0,@10448 27789,0,@13975 27824,0,@10448 27859,0,@11428 27932,0,@10448 27967,0,@13977 28005,0,@11431 28041,0,0 28048,0,0 28055,0,1 28061,0,0 28094,0,@11375 28131,0,@10448 28166,0,@11428 28242,0,@11377 28278,0,0 28285,0,0 28292,0,1 28298,0,0 28331,0,0 28368,0,@10448 28403,0,@17068 28439,0,0 28446,0,0 28453,0,1 28459,0,0 28476,0,@11331 28511,0,@9455 28535,0,@10443 28556,0,@9455 28598,0,@4674 28642,0,@7848 28675,0,2 28682,0,2 28691,0,0 28722,0,@9455 28746,0,@11421 28774,0,@9455 28815,0,@4670 28838,0,@11421 28866,0,@9455 28907,0,@4670 28930,0,@11421 28957,0,@9455 28998,0,@4602 29021,0,@11421 29049,0,@9455 29090,0,@4670 29122,0,@9455 29163,0,@4670 29202,0,@11424 29239,0,@10448 29274,0,@13969 29309,0,@10448 29344,0,@11428 29417,0,@10448 29452,0,@13971 29487,0,@10448 29522,0,@11428 29595,0,@10448 29630,0,@13973 29665,0,@10448 29700,0,@11428 29773,0,@10448 29808,0,@13975 29843,0,@10448 29878,0,@11428 29951,0,@10448 29986,0,@13977 30024,0,@11431 30060,0,0 30067,0,0 30074,0,1 30080,0,0 30113,0,@11375 30150,0,@10448 30185,0,@11428 30261,0,@11377 30297,0,0 30304,0,0 30311,0,1 30317,0,0 30350,0,0 30387,0,@10448 30422,0,@17081 30458,0,0 30465,0,0 30472,0,1 30478,0,0 30495,0,@11331 30535,0,@9455 30559,0,@11421 30580,0,@9455 30622,0,@4724 30629,0,@17088 30657,0,@11421 30679,0,@9455 30703,0,@11421 30731,0,@9455 30772,0,@4670 30795,0,@11421 30823,0,@9455 30864,0,@4670 30887,0,@11421 30914,0,@9455 30955,0,@4602 30978,0,@11421 31006,0,@9455 31047,0,@4670 31079,0,@9455 31120,0,@4670 31159,0,@11424 31196,0,@10448 31231,0,@13969 31266,0,@10448 31301,0,@11428 31374,0,@10448 31409,0,@13971 31444,0,@10448 31479,0,@11428 31552,0,@10448 31587,0,@13973 31622,0,@10448 31657,0,@11428 31730,0,@10448 31765,0,@13975 31800,0,@10448 31835,0,@11428 31908,0,@10448 31943,0,@13977 31981,0,@11431 32017,0,0 32024,0,0 32031,0,1 32037,0,0 32056,0,@9455 32102,0,@4674 32146,0,@7853 32179,0,1 32186,0,3 32195,0,0 32243,0,@11424 32280,0,@10448 32315,0,@17090 32350,0,@10448 32385,0,@11428 32458,0,@10448 32493,0,@16347 32528,0,@10448 32563,0,@11428 32636,0,@10448 32671,0,@16853 32709,0,@11431 32745,0,0 32752,0,0 32759,0,1 32765,0,0 32798,0,0 32835,0,@10448 32870,0,@17092 32906,0,0 32913,0,0 32920,0,1 32926,0,0 32943,0,@11331 32978,0,@9455 33002,0,@11421 33023,0,@9455 33065,0,@4674 33109,0,@7854 33142,0,1 33149,0,3 33158,0,0 33186,0,@11421 33209,0,@9455 33224,0,@11421 33242,0,@9455 33261,0,@9455 33271,0,@17100 33306,0,@11431 33342,0,0 33349,0,0 33356,0,1 33362,0,0 33377,0,@11421 33400,0,@9455 33415,0,@11421 33433,0,@9455 33452,0,@9455 33462,0,@17100 33497,0,@11431 33533,0,0 33540,0,0 33547,0,1 33553,0,0 33571,0,@9455 33595,0,@11421 33623,0,@9455 33664,0,@4670 33687,0,@11421 33715,0,@9455 33756,0,@4670 33779,0,@11421 33806,0,@9455 33847,0,@4602 33870,0,@11421 33898,0,@9455 33939,0,@4670 33971,0,@9455 34012,0,@4670 34051,0,@11424 34088,0,@10448 34123,0,@13969 34158,0,@10448 34193,0,@11428 34266,0,@10448 34301,0,@13971 34336,0,@10448 34371,0,@11428 34444,0,@10448 34479,0,@13973 34514,0,@10448 34549,0,@11428 34622,0,@10448 34657,0,@13975 34692,0,@10448 34727,0,@11428 34800,0,@10448 34835,0,@13977 34873,0,@11431 34909,0,0 34916,0,0 34923,0,1 34929,0,0 34962,0,@11424 34999,0,@10448 35034,0,@16347 35069,0,@10448 35104,0,@11428 35177,0,@10448 35212,0,@17105 35247,0,@10448 35282,0,@11428 35355,0,@10448 35390,0,@17107 35425,0,@10448 35460,0,@11428 35533,0,@10448 35568,0,@17109 35606,0,@11431 35642,0,0 35649,0,0 35656,0,1 35662,0,0 35695,0,0 35732,0,@10448 35767,0,@17111 35803,0,0 35810,0,0 35817,0,1 35823,0,0 35840,0,@11331 35883,0,@9455 35907,0,@11421 35928,0,@9455 35994,0,@11421 36015,0,@9455 36061,0,@4674 36105,0,@7855 36138,0,1 36145,0,3 36154,0,0 36182,0,@11421 36204,0,@9455 36228,0,@11421 36256,0,@9455 36297,0,@4670 36320,0,@11421 36348,0,@9455 36389,0,@4670 36412,0,@11421 36439,0,@9455 36480,0,@4602 36503,0,@11421 36531,0,@9455 36572,0,@4670 36604,0,@9455 36645,0,@4670 36684,0,@11424 36721,0,@10448 36756,0,@13969 36791,0,@10448 36826,0,@11428 36899,0,@10448 36934,0,@13971 36969,0,@10448 37004,0,@11428 37077,0,@10448 37112,0,@13973 37147,0,@10448 37182,0,@11428 37255,0,@10448 37290,0,@13975 37325,0,@10448 37360,0,@11428 37433,0,@10448 37468,0,@13977 37506,0,@11431 37542,0,0 37549,0,0 37556,0,1 37562,0,0 37582,0,@9455 37606,0,@11421 37634,0,@9455 37675,0,@4670 37698,0,@11421 37726,0,@9455 37767,0,@4670 37790,0,@11421 37817,0,@9455 37858,0,@4602 37881,0,@11421 37909,0,@9455 37950,0,@4670 37982,0,@9455 38023,0,@4670 38062,0,@11424 38099,0,@10448 38134,0,@13969 38169,0,@10448 38204,0,@11428 38277,0,@10448 38312,0,@13971 38347,0,@10448 38382,0,@11428 38455,0,@10448 38490,0,@13973 38525,0,@10448 38560,0,@11428 38633,0,@10448 38668,0,@13975 38703,0,@10448 38738,0,@11428 38811,0,@10448 38846,0,@13977 38884,0,@11431 38920,0,0 38927,0,0 38934,0,1 38940,0,0 38973,0,@11424 39010,0,@10448 39045,0,@16347 39080,0,@10448 39115,0,@11428 39188,0,@10448 39223,0,@16967 39258,0,@10448 39293,0,@11428 39366,0,@10448 39401,0,@17118 39439,0,@10448 39474,0,@11428 39547,0,@10448 39582,0,@15804 39620,0,@11431 39656,0,0 39663,0,0 39670,0,1 39676,0,0 39709,0,0 39746,0,@10448 39781,0,@17120 39817,0,0 39824,0,0 39831,0,1 39837,0,0 39854,0,@11331 39890,0,@9455 39914,0,@11421 39942,0,@9455 39984,0,@4724 39991,0,@17127 40019,0,@11421 40048,0,@9455 40072,0,@11421 40100,0,@9455 40141,0,@4670 40164,0,@11421 40192,0,@9455 40233,0,@4670 40256,0,@11421 40283,0,@9455 40324,0,@4602 40347,0,@11421 40375,0,@9455 40416,0,@4670 40448,0,@9455 40489,0,@4670 40528,0,@11424 40565,0,@10448 40600,0,@13969 40635,0,@10448 40670,0,@11428 40743,0,@10448 40778,0,@13971 40813,0,@10448 40848,0,@11428 40921,0,@10448 40956,0,@13973 40991,0,@10448 41026,0,@11428 41099,0,@10448 41134,0,@13975 41169,0,@10448 41204,0,@11428 41277,0,@10448 41312,0,@13977 41350,0,@11431 41386,0,0 41393,0,0 41400,0,1 41406,0,0 41423,0,@11421 41450,0,@9455 41491,0,@4602 41514,0,@11421 41542,0,@9455 41584,0,@4724 41591,0,@17129 41628,0,@9455 41670,0,@4724 41677,0,@17132 41725,0,@11424 41762,0,@10448 41797,0,@15330 41832,0,@10448 41867,0,@11428 41940,0,@10448 41975,0,@17134 42013,0,@10448 42048,0,@11428 42121,0,@10448 42156,0,@14926 42191,0,@10448 42226,0,@11428 42299,0,@10448 42334,0,@16347 42369,0,@10448 42404,0,@11428 42477,0,@10448 42512,0,@16853 42550,0,@11431 42586,0,0 42593,0,0 42600,0,1 42606,0,0 42639,0,0 42676,0,@10448 42711,0,@17136 42747,0,0 42754,0,0 42761,0,1 42767,0,0 42784,0,@11331 42825,0,@9455 42849,0,@11421 42870,0,@9455 42912,0,@4724 42919,0,@17143 42947,0,@11421 42968,0,@9455 43013,0,@4672 43036,0,@11421 43058,0,@9455 43082,0,@11421 43110,0,@9455 43151,0,@4670 43174,0,@11421 43202,0,@9455 43243,0,@4670 43266,0,@11421 43293,0,@9455 43334,0,@4602 43357,0,@11421 43385,0,@9455 43426,0,@4670 43458,0,@9455 43499,0,@4670 43538,0,@11424 43575,0,@10448 43610,0,@13969 43645,0,@10448 43680,0,@11428 43753,0,@10448 43788,0,@13971 43823,0,@10448 43858,0,@11428 43931,0,@10448 43966,0,@13973 44001,0,@10448 44036,0,@11428 44109,0,@10448 44144,0,@13975 44179,0,@10448 44214,0,@11428 44287,0,@10448 44322,0,@13977 44360,0,@11431 44396,0,0 44403,0,0 44410,0,1 44416,0,0 44435,0,@9455 44481,0,@4674 44525,0,@7860 44558,0,1 44565,0,2 44574,0,0 44622,0,@11424 44659,0,@10448 44694,0,@15297 44729,0,@10448 44764,0,@11428 44837,0,@10448 44872,0,@16347 44907,0,@10448 44942,0,@11428 45015,0,@10448 45050,0,@16828 45085,0,@10448 45120,0,@11428 45193,0,@10448 45228,0,@16853 45266,0,@11431 45302,0,0 45309,0,0 45316,0,1 45322,0,0 45355,0,0 45392,0,@10448 45427,0,@17151 45463,0,0 45470,0,0 45477,0,1 45483,0,0 45500,0,@11331 45538,0,@9455 45562,0,@11421 45584,0,@9455 45608,0,@11421 45636,0,@9455 45677,0,@4670 45700,0,@11421 45728,0,@9455 45769,0,@4670 45792,0,@11421 45819,0,@9455 45860,0,@4602 45883,0,@11421 45911,0,@9455 45952,0,@4670 45984,0,@9455 46025,0,@4670 46064,0,@11424 46101,0,@10448 46136,0,@13969 46171,0,@10448 46206,0,@11428 46279,0,@10448 46314,0,@13971 46349,0,@10448 46384,0,@11428 46457,0,@10448 46492,0,@13973 46527,0,@10448 46562,0,@11428 46635,0,@10448 46670,0,@13975 46705,0,@10448 46740,0,@11428 46813,0,@10448 46848,0,@13977 46886,0,@11431 46922,0,0 46929,0,0 46936,0,1 46942,0,0 46959,0,@11421 46980,0,@9455 47052,0,@9455 47138,0,@11424 47175,0,@10448 47210,0,@17158 47245,0,@10448 47280,0,@11428 47353,0,@10448 47388,0,@17160 47423,0,@10448 47458,0,@11428 47531,0,@10448 47566,0,@16347 47604,0,@11431 47640,0,0 47647,0,0 47654,0,1 47660,0,0 47693,0,0 47730,0,@10448 47765,0,@17162 47801,0,0 47808,0,0 47815,0,1 47821,0,0 47838,0,@11331 47878,0,@9455 47902,0,@11421 47923,0,@9455 47965,0,@4674 48009,0,@7862 48042,0,1 48049,0,3 48058,0,0 48086,0,@11421 48107,0,@9455 48153,0,@4724 48160,0,@17170 48191,0,@9455 48215,0,@11421 48243,0,@9455 48284,0,@4670 48307,0,@11421 48335,0,@9455 48376,0,@4670 48399,0,@11421 48426,0,@9455 48467,0,@4602 48490,0,@11421 48518,0,@9455 48559,0,@4670 48591,0,@9455 48632,0,@4670 48671,0,@11424 48708,0,@10448 48743,0,@13969 48778,0,@10448 48813,0,@11428 48886,0,@10448 48921,0,@13971 48956,0,@10448 48991,0,@11428 49064,0,@10448 49099,0,@13973 49134,0,@10448 49169,0,@11428 49242,0,@10448 49277,0,@13975 49312,0,@10448 49347,0,@11428 49420,0,@10448 49455,0,@13977 49493,0,@11431 49529,0,0 49536,0,0 49543,0,1 49549,0,0 49582,0,@11424 49619,0,@10448 49654,0,@16347 49689,0,@10448 49724,0,@11428 49797,0,@10448 49832,0,@16853 49870,0,@10448 49905,0,@11428 49978,0,@10448 50013,0,@17172 50051,0,@11431 50087,0,0 50094,0,0 50101,0,1 50107,0,0 50140,0,0 50177,0,@10448 50212,0,@17174 50248,0,0 50255,0,0 50262,0,1 50268,0,0 50285,0,@11331 50330,0,@9455 50354,0,@11421 50375,0,@9455 50416,0,@4759 50439,0,@11421 50460,0,@9455 50506,0,@4724 50513,0,@17181 50541,0,@11421 50562,0,@9455 50607,0,@4602 50633,0,@9455 50657,0,@11421 50685,0,@9455 50726,0,@4670 50749,0,@11421 50777,0,@9455 50818,0,@4670 50841,0,@11421 50868,0,@9455 50909,0,@4602 50932,0,@11421 50960,0,@9455 51001,0,@4670 51033,0,@9455 51074,0,@4670 51113,0,@11424 51150,0,@10448 51185,0,@13969 51220,0,@10448 51255,0,@11428 51328,0,@10448 51363,0,@13971 51398,0,@10448 51433,0,@11428 51506,0,@10448 51541,0,@13973 51576,0,@10448 51611,0,@11428 51684,0,@10448 51719,0,@13975 51754,0,@10448 51789,0,@11428 51862,0,@10448 51897,0,@13977 51935,0,@11431 51971,0,0 51978,0,0 51985,0,1 51991,0,0 52024,0,@11424 52061,0,@10448 52096,0,@16347 52131,0,@10448 52166,0,@11428 52239,0,@10448 52274,0,@17183 52309,0,@10448 52344,0,@11428 52417,0,@10448 52452,0,@16853 52490,0,@10448 52525,0,@11428 52598,0,@10448 52633,0,@17185 52671,0,@11431 52707,0,0 52714,0,0 52721,0,1 52727,0,0 52760,0,0 52797,0,@10448 52832,0,@17187 52868,0,0 52875,0,0 52882,0,1 52888,0,0 52905,0,@11331 52937,0,@9455 52961,0,@11421 52988,0,@9455 53030,0,@4674 53074,0,@7865 53107,0,2 53114,0,2 53123,0,0 53151,0,@11421 53179,0,@9455 53221,0,@4674 53265,0,@7869 53298,0,2 53305,0,2 53314,0,0 53342,0,@11421 53370,0,@9455 53411,0,@4672 53434,0,@11421 53463,0,@9455 53487,0,@11421 53515,0,@9455 53556,0,@4670 53579,0,@11421 53607,0,@9455 53648,0,@4670 53671,0,@11421 53698,0,@9455 53739,0,@4602 53762,0,@11421 53790,0,@9455 53831,0,@4670 53863,0,@9455 53904,0,@4670 53943,0,@11424 53980,0,@10448 54015,0,@13969 54050,0,@10448 54085,0,@11428 54158,0,@10448 54193,0,@13971 54228,0,@10448 54263,0,@11428 54336,0,@10448 54371,0,@13973 54406,0,@10448 54441,0,@11428 54514,0,@10448 54549,0,@13975 54584,0,@10448 54619,0,@11428 54692,0,@10448 54727,0,@13977 54765,0,@11431 54801,0,0 54808,0,0 54815,0,1 54821,0,0 54847,0,@9455 54889,0,@4724 54896,0,@17206 54944,0,@11424 54981,0,@10448 55016,0,@17210 55051,0,@10448 55086,0,@11428 55159,0,@10448 55194,0,@16347 55229,0,@10448 55264,0,@11428 55337,0,@10448 55372,0,@17212 55407,0,@10448 55442,0,@11428 55515,0,@10448 55550,0,@17214 55588,0,@10448 55623,0,@11428 55696,0,@10448 55731,0,@15833 55769,0,@11431 55805,0,0 55812,0,0 55819,0,1 55825,0,0 55858,0,0 55895,0,@10448 55930,0,@17216 55966,0,0 55973,0,0 55980,0,1 55986,0,0 56003,0,@11331 56039,0,@9455 56063,0,@11421 56090,0,@9455 56132,0,@4674 56139,0,@17223 56167,0,@11421 56196,0,@9455 56220,0,@11421 56248,0,@9455 56289,0,@4670 56312,0,@11421 56340,0,@9455 56381,0,@4670 56404,0,@11421 56431,0,@9455 56472,0,@4602 56495,0,@11421 56523,0,@9455 56564,0,@4670 56596,0,@9455 56637,0,@4670 56676,0,@11424 56713,0,@10448 56748,0,@13969 56783,0,@10448 56818,0,@11428 56891,0,@10448 56926,0,@13971 56961,0,@10448 56996,0,@11428 57069,0,@10448 57104,0,@13973 57139,0,@10448 57174,0,@11428 57247,0,@10448 57282,0,@13975 57317,0,@10448 57352,0,@11428 57425,0,@10448 57460,0,@13977 57498,0,@11431 57534,0,0 57541,0,0 57548,0,1 57554,0,0 57571,0,@11421 57599,0,@9455 57641,0,@4724 57648,0,@17324 57676,0,@11421 57704,0,@9455 57746,0,@4724 57753,0,@17328 57790,0,@9455 57832,0,@4724 57839,0,@17332 57887,0,@11424 57924,0,@10448 57959,0,@17336 57994,0,@10448 58029,0,@11428 58102,0,@10448 58137,0,@17338 58175,0,@10448 58210,0,@11428 58283,0,@10448 58318,0,@17340 58356,0,@10448 58391,0,@11428 58464,0,@10448 58499,0,@16347 58534,0,@10448 58569,0,@11428 58642,0,@10448 58677,0,@17214 58715,0,@11431 58751,0,0 58758,0,0 58765,0,1 58771,0,0 58804,0,0 58841,0,@10448 58876,0,@17342 58912,0,0 58919,0,0 58926,0,1 58932,0,0 58949,0,@11331 58987,0,@9455 59011,0,@11421 59032,0,@9455 59098,0,@11421 59120,0,@9455 59144,0,@11421 59172,0,@9455 59213,0,@4670 59236,0,@11421 59264,0,@9455 59305,0,@4670 59328,0,@11421 59355,0,@9455 59396,0,@4602 59419,0,@11421 59447,0,@9455 59488,0,@4670 59520,0,@9455 59561,0,@4670 59600,0,@11424 59637,0,@10448 59672,0,@13969 59707,0,@10448 59742,0,@11428 59815,0,@10448 59850,0,@13971 59885,0,@10448 59920,0,@11428 59993,0,@10448 60028,0,@13973 60063,0,@10448 60098,0,@11428 60171,0,@10448 60206,0,@13975 60241,0,@10448 60276,0,@11428 60349,0,@10448 60384,0,@13977 60422,0,@11431 60458,0,0 60465,0,0 60472,0,1 60478,0,0 60497,0,@9455 60583,0,@11424 60620,0,@10448 60655,0,@16938 60690,0,@10448 60725,0,@11428 60798,0,@10448 60833,0,@16347 60868,0,@10448 60903,0,@11428 60976,0,@10448 61011,0,@16940 61049,0,@11431 61085,0,0 61092,0,0 61099,0,1 61105,0,0 61138,0,0 61175,0,@10448 61210,0,@17349 61246,0,0 61253,0,0 61260,0,1 61266,0,0 61283,0,@11331 61320,0,@9455 61344,0,@10443 61365,0,@9455 61434,0,@9455 61458,0,@11421 61486,0,@9455 61527,0,@4670 61550,0,@11421 61578,0,@9455 61619,0,@4670 61642,0,@11421 61669,0,@9455 61710,0,@4602 61733,0,@11421 61761,0,@9455 61802,0,@4670 61834,0,@9455 61875,0,@4670 61914,0,@11424 61951,0,@10448 61986,0,@13969 62021,0,@10448 62056,0,@11428 62129,0,@10448 62164,0,@13971 62199,0,@10448 62234,0,@11428 62307,0,@10448 62342,0,@13973 62377,0,@10448 62412,0,@11428 62485,0,@10448 62520,0,@13975 62555,0,@10448 62590,0,@11428 62663,0,@10448 62698,0,@13977 62736,0,@11431 62772,0,0 62779,0,0 62786,0,1 62792,0,0 62825,0,@11375 62862,0,@10448 62897,0,@11428 62973,0,@11377 63009,0,0 63016,0,0 63023,0,1 63029,0,0 63062,0,0 63099,0,@10448 63134,0,@17356 63170,0,0 63177,0,0 63184,0,1 63190,0,0 63207,0,@11331 63242,0,@9455 63266,0,@10443 63287,0,@9455 63356,0,@9455 63380,0,@11421 63408,0,@9455 63449,0,@4670 63472,0,@11421 63500,0,@9455 63541,0,@4670 63564,0,@11421 63591,0,@9455 63632,0,@4602 63655,0,@11421 63683,0,@9455 63724,0,@4670 63756,0,@9455 63797,0,@4670 63836,0,@11424 63873,0,@10448 63908,0,@13969 63943,0,@10448 63978,0,@11428 64051,0,@10448 64086,0,@13971 64121,0,@10448 64156,0,@11428 64229,0,@10448 64264,0,@13973 64299,0,@10448 64334,0,@11428 64407,0,@10448 64442,0,@13975 64477,0,@10448 64512,0,@11428 64585,0,@10448 64620,0,@13977 64658,0,@11431 64694,0,0 64701,0,0 64708,0,1 64714,0,0 64747,0,@11375 64784,0,@10448 64819,0,@11428 64895,0,@11377 64931,0,0 64938,0,0 64945,0,1 64951,0,0 64984,0,0 65021,0,@10448 65056,0,@17363 65092,0,0 65099,0,0 65106,0,1 65112,0,0 65129,0,@11331 65174,0,@9455 65198,0,@11421 65219,0,@9455 65260,0,@4758 65283,0,@11421 65305,0,@9455 65329,0,@11421 65357,0,@9455 65398,0,@4670 65421,0,@11421 65449,0,@9455 65490,0,@4670 65513,0,@11421 65540,0,@9455 65581,0,@4602 65604,0,@11421 65632,0,@9455 65673,0,@4670 65705,0,@9455 65746,0,@4670 65785,0,@11424 65822,0,@10448 65857,0,@13969 65892,0,@10448 65927,0,@11428 66000,0,@10448 66035,0,@13971 66070,0,@10448 66105,0,@11428 66178,0,@10448 66213,0,@13973 66248,0,@10448 66283,0,@11428 66356,0,@10448 66391,0,@13975 66426,0,@10448 66461,0,@11428 66534,0,@10448 66569,0,@13977 66607,0,@11431 66643,0,0 66650,0,0 66657,0,1 66663,0,0 66680,0,@11421 66701,0,@9455 66746,0,@4602 66771,0,@9455 66816,0,@4758 66855,0,@11424 66892,0,@10448 66927,0,@15295 66962,0,@10448 66997,0,@11428 67070,0,@10448 67105,0,@14926 67140,0,@10448 67175,0,@11428 67248,0,@10448 67283,0,@16347 67318,0,@10448 67353,0,@11428 67426,0,@10448 67461,0,@17367 67499,0,@11431 67535,0,0 67542,0,0 67549,0,1 67555,0,0 67588,0,0 67625,0,@10448 67660,0,@17369 67696,0,0 67703,0,0 67710,0,1 67716,0,0 67733,0,@11331 67771,0,@9455 67795,0,@11421 67816,0,@9455 67858,0,@4724 67865,0,@17376 67893,0,@11421 67914,0,@9455 67960,0,@4674 68004,0,@7910 68037,0,1 68044,0,3 68053,0,0 68084,0,@9455 68108,0,@11421 68136,0,@9455 68177,0,@4670 68200,0,@11421 68228,0,@9455 68269,0,@4670 68292,0,@11421 68319,0,@9455 68360,0,@4602 68383,0,@11421 68411,0,@9455 68452,0,@4670 68484,0,@9455 68525,0,@4670 68564,0,@11424 68601,0,@10448 68636,0,@13969 68671,0,@10448 68706,0,@11428 68779,0,@10448 68814,0,@13971 68849,0,@10448 68884,0,@11428 68957,0,@10448 68992,0,@13973 69027,0,@10448 69062,0,@11428 69135,0,@10448 69170,0,@13975 69205,0,@10448 69240,0,@11428 69313,0,@10448 69348,0,@13977 69386,0,@11431 69422,0,0 69429,0,0 69436,0,1 69442,0,0 69475,0,@11424 69512,0,@10448 69547,0,@16347 69582,0,@10448 69617,0,@11428 69690,0,@10448 69725,0,@15981 69763,0,@10448 69798,0,@11428 69871,0,@10448 69906,0,@16853 69944,0,@11431 69980,0,0 69987,0,0 69994,0,1 70000,0,0 70033,0,0 70070,0,@10448 70105,0,@17378 70141,0,0 70148,0,0 70155,0,1 70161,0,0 70178,0,@11331 70215,0,@9455 70239,0,@10443 70260,0,@9455 70302,0,@4674 70346,0,@7911 70379,0,1 70386,0,3 70395,0,0 70426,0,@9455 70450,0,@11421 70478,0,@9455 70519,0,@4670 70542,0,@11421 70570,0,@9455 70611,0,@4670 70634,0,@11421 70661,0,@9455 70702,0,@4602 70725,0,@11421 70753,0,@9455 70794,0,@4670 70826,0,@9455 70867,0,@4670 70906,0,@11424 70943,0,@10448 70978,0,@13969 71013,0,@10448 71048,0,@11428 71121,0,@10448 71156,0,@13971 71191,0,@10448 71226,0,@11428 71299,0,@10448 71334,0,@13973 71369,0,@10448 71404,0,@11428 71477,0,@10448 71512,0,@13975 71547,0,@10448 71582,0,@11428 71655,0,@10448 71690,0,@13977 71728,0,@11431 71764,0,0 71771,0,0 71778,0,1 71784,0,0 71817,0,@11375 71854,0,@10448 71889,0,@11428 71965,0,@11377 72001,0,0 72008,0,0 72015,0,1 72021,0,0 72054,0,0 72091,0,@10448 72126,0,@17385 72162,0,0 72169,0,0 72176,0,1 72182,0,0 72199,0,@11331 72235,0,@9455 72259,0,@11421 72287,0,@9455 72328,0,@4670 72351,0,@11421 72379,0,@9455 72420,0,@4670 72443,0,@11421 72470,0,@9455 72511,0,@4602 72534,0,@11421 72562,0,@9455 72603,0,@4670 72635,0,@9455 72676,0,@4670 72715,0,@11424 72752,0,@10448 72787,0,@13969 72822,0,@10448 72857,0,@11428 72930,0,@10448 72965,0,@13971 73000,0,@10448 73035,0,@11428 73108,0,@10448 73143,0,@13973 73178,0,@10448 73213,0,@11428 73286,0,@10448 73321,0,@13975 73356,0,@10448 73391,0,@11428 73464,0,@10448 73499,0,@13977 73537,0,@11431 73573,0,0 73580,0,0 73587,0,1 73593,0,0 73626,0,0 73663,0,@10448 73698,0,@17392 73734,0,0 73741,0,0 73748,0,1 73754,0,0 73771,0,@11331 73806,0,@9455 73830,0,@11421 73851,0,@9455 73893,0,@4674 73937,0,@7912 73970,0,1 73977,0,3 73986,0,0 74014,0,@11421 74037,0,@9455 74052,0,@11421 74070,0,@9455 74089,0,@9455 74099,0,@17100 74134,0,@11431 74170,0,0 74177,0,0 74184,0,1 74190,0,0 74205,0,@11421 74228,0,@9455 74243,0,@11421 74261,0,@9455 74280,0,@9455 74290,0,@17100 74325,0,@11431 74361,0,0 74368,0,0 74375,0,1 74381,0,0 74399,0,@9455 74423,0,@11421 74451,0,@9455 74492,0,@4670 74515,0,@11421 74543,0,@9455 74584,0,@4670 74607,0,@11421 74634,0,@9455 74675,0,@4602 74698,0,@11421 74726,0,@9455 74767,0,@4670 74799,0,@9455 74840,0,@4670 74879,0,@11424 74916,0,@10448 74951,0,@13969 74986,0,@10448 75021,0,@11428 75094,0,@10448 75129,0,@13971 75164,0,@10448 75199,0,@11428 75272,0,@10448 75307,0,@13973 75342,0,@10448 75377,0,@11428 75450,0,@10448 75485,0,@13975 75520,0,@10448 75555,0,@11428 75628,0,@10448 75663,0,@13977 75701,0,@11431 75737,0,0 75744,0,0 75751,0,1 75757,0,0 75790,0,@11424 75827,0,@10448 75862,0,@16347 75897,0,@10448 75932,0,@11428 76005,0,@10448 76040,0,@17105 76075,0,@10448 76110,0,@11428 76183,0,@10448 76218,0,@17107 76253,0,@10448 76288,0,@11428 76361,0,@10448 76396,0,@17109 76434,0,@11431 76470,0,0 76477,0,0 76484,0,1 76490,0,0 76523,0,0 76560,0,@10448 76595,0,@17400 76631,0,0 76638,0,0 76645,0,1 76651,0,0 76668,0,@11331 76709,0,@9455 76733,0,@11421 76754,0,@9455 76820,0,@11421 76841,0,@9455 76887,0,@4724 76894,0,@17407 76922,0,@11421 76944,0,@9455 76968,0,@11421 76996,0,@9455 77037,0,@4670 77060,0,@11421 77088,0,@9455 77129,0,@4670 77152,0,@11421 77179,0,@9455 77220,0,@4602 77243,0,@11421 77271,0,@9455 77312,0,@4670 77344,0,@9455 77385,0,@4670 77424,0,@11424 77461,0,@10448 77496,0,@13969 77531,0,@10448 77566,0,@11428 77639,0,@10448 77674,0,@13971 77709,0,@10448 77744,0,@11428 77817,0,@10448 77852,0,@13973 77887,0,@10448 77922,0,@11428 77995,0,@10448 78030,0,@13975 78065,0,@10448 78100,0,@11428 78173,0,@10448 78208,0,@13977 78246,0,@11431 78282,0,0 78289,0,0 78296,0,1 78302,0,0 78321,0,@9455 78407,0,@11424 78444,0,@10448 78479,0,@15553 78514,0,@10448 78549,0,@11428 78622,0,@10448 78657,0,@16347 78692,0,@10448 78727,0,@11428 78800,0,@10448 78835,0,@17413 78873,0,@10448 78908,0,@11428 78981,0,@10448 79016,0,@15833 79054,0,@11431 79090,0,0 79097,0,0 79104,0,1 79110,0,0 79143,0,0 79180,0,@10448 79215,0,@17415 79251,0,0 79258,0,0 79265,0,1 79271,0,0 79288,0,@11331 79307,0,@9455 79331,0,@11421 79359,0,@9455 79400,0,@4670 79423,0,@11421 79451,0,@9455 79492,0,@4670 79515,0,@11421 79542,0,@9455 79583,0,@4602 79606,0,@11421 79634,0,@9455 79675,0,@4670 79707,0,@9455 79748,0,@4670 79787,0,@11424 79824,0,@10448 79859,0,@13969 79894,0,@10448 79929,0,@11428 80002,0,@10448 80037,0,@13971 80072,0,@10448 80107,0,@11428 80180,0,@10448 80215,0,@13973 80250,0,@10448 80285,0,@11428 80358,0,@10448 80393,0,@13975 80428,0,@10448 80463,0,@11428 80536,0,@10448 80571,0,@13977 80609,0,@11431 80645,0,0 80652,0,0 80659,0,1 80665,0,0 80698,0,0 80735,0,@10448 80770,0,@17422 80806,0,0 80813,0,0 80820,0,1 80826,0,0 7828:D3,440|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e93201000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b860a068b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3015|29,0,@10443 56,0,@9455 130,0,@9455 172,0,@4724 179,0,@16908 227,0,@11375 264,0,@10448 299,0,@11428 375,0,@11377 411,0,0 418,0,0 425,0,1 431,0,0 7829:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b87ca068b1ff1289c258ff22f400|@10629,1,@3014|12,0,@4604 19,0,@16910 7830:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b898a068b1ff1289c258ff22f400|@15229,1,@3013|12,0,@4724 19,0,@16912 7831:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3012|11,0,@4672 7832:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8d0a068b1ff1289c258ff22f400|@10454,1,@3017|12,0,@4674 19,0,@16916 7833:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3016|11,0,@4672 7834:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16918,1,@3018| 7835:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16919,1,@3019| 7836:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3020|11,0,@4758 7837:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3021|11,0,@4758 7838:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16964,1,@3022| 7839:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8e8a468b1ff1289c258ff22f400|@10629,1,@3025|12,0,@4604 19,0,@16978 7840:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b804a568b1ff1289c258ff22f400|@15229,1,@3024|12,0,@4724 19,0,@16980 7841:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3023|11,0,@4672 7842:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b83ca568b1ff1289c258ff22f400|@10629,1,@3028|12,0,@4604 19,0,@16984 7843:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b858a568b1ff1289c258ff22f400|@15229,1,@3027|12,0,@4724 19,0,@16986 7844:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3026|11,0,@4672 7845:D3,1096|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b3889fa8b3f83ff010f85f90100008b7a0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c0a768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389d68b1283fa030f85f90100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70730a868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c383ff037d06b8b4ab66b1c3b8a0a868b1c3f400|@17046,1,@3029|21,0,@11331 50,0,@9455 91,0,@4670 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@17025 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 581,0,@9455 622,0,@4670 688,0,@9771 695,0,1 703,0,@9772 710,0,1 718,0,@9773 725,0,1 732,0,0 777,0,@11374 814,0,@10625 849,0,@11377 885,0,0 892,0,1 899,0,3 905,0,0 944,0,0 981,0,@10448 1016,0,@17032 1052,0,0 1059,0,0 1066,0,1 1072,0,0 1083,0,@11331 1089,0,@17039 7846:D3,20|3b650c7305ff552ccd01bf3c00c0b08b17ff22f4|@9981,1,@3030|11,0,@4602 7847:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17067,1,@3031| 7848:D3,440|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e93201000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8f0aa68b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3035|29,0,@10443 56,0,@9455 130,0,@9455 172,0,@4724 179,0,@17075 227,0,@11375 264,0,@10448 299,0,@11428 375,0,@11377 411,0,0 418,0,0 425,0,1 431,0,0 7849:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b80cab68b1ff1289c258ff22f400|@10629,1,@3034|12,0,@4604 19,0,@17077 7850:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b828ab68b1ff1289c258ff22f400|@15229,1,@3033|12,0,@4724 19,0,@17079 7851:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3032|11,0,@4672 7852:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3036|11,0,@4758 7853:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16964,1,@3037| 7854:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17099,1,@3038| 7855:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16964,1,@3039| 7856:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3040|11,0,@4758 7857:D3,20|3b650c7305ff552ccd01b8405068b1c3f4000000|@17131,1,@3041|11,0,@16224 7858:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3042|11,0,@4759 7859:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3043|11,0,@4758 7860:D3,4020|3b650c7305ff552ccd0552508b3c248b770489f283fe017d0e8d642408be2cb566b1e92f0f000089ff8b378b760483ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b830af68b1ff1289c28b0424ff1289c7578b7c24088b570489d683fa037d0abf2cb566b1e9100e000089ff8b17ff721089f783ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240c8b7e0489fa83ff057d0abe2cb566b1e9df07000089f68b3e8b3f89d683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24108b570489d683fa077d0abf2cb566b1e9cf06000089ff8b17ff720889f783ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424148b3e8b7f0c89f68b760483ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064caf68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707249568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7076caf68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d89868b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@9816,1,@3045|30,0,@11421 56,0,@9455 98,0,@4724 105,0,@17145 136,0,@11421 165,0,@9455 189,0,@11421 217,0,@9455 258,0,@4670 281,0,@11421 309,0,@9455 350,0,@4670 373,0,@11421 400,0,@9455 441,0,@4602 464,0,@11421 492,0,@9455 533,0,@4670 565,0,@9455 606,0,@4670 645,0,@11424 682,0,@10448 717,0,@13969 752,0,@10448 787,0,@11428 860,0,@10448 895,0,@13971 930,0,@10448 965,0,@11428 1038,0,@10448 1073,0,@13973 1108,0,@10448 1143,0,@11428 1216,0,@10448 1251,0,@13975 1286,0,@10448 1321,0,@11428 1394,0,@10448 1429,0,@13977 1467,0,@11431 1503,0,0 1510,0,0 1517,0,1 1523,0,0 1543,0,@11421 1570,0,@9455 1611,0,@4602 1637,0,@11421 1666,0,@9455 1690,0,@11421 1718,0,@9455 1759,0,@4670 1782,0,@11421 1810,0,@9455 1851,0,@4670 1874,0,@11421 1901,0,@9455 1942,0,@4602 1965,0,@11421 1993,0,@9455 2034,0,@4670 2066,0,@9455 2107,0,@4670 2146,0,@11424 2183,0,@10448 2218,0,@13969 2253,0,@10448 2288,0,@11428 2361,0,@10448 2396,0,@13971 2431,0,@10448 2466,0,@11428 2539,0,@10448 2574,0,@13973 2609,0,@10448 2644,0,@11428 2717,0,@10448 2752,0,@13975 2787,0,@10448 2822,0,@11428 2895,0,@10448 2930,0,@13977 2968,0,@11431 3004,0,0 3011,0,0 3018,0,1 3024,0,0 3053,0,@9455 3135,0,@11424 3172,0,@10448 3207,0,@17147 3242,0,@10448 3277,0,@11428 3350,0,@10448 3385,0,@16797 3420,0,@10448 3455,0,@11428 3528,0,@10448 3563,0,@14926 3598,0,@10448 3633,0,@11428 3706,0,@10448 3741,0,@17149 3776,0,@10448 3811,0,@11428 3884,0,@10448 3919,0,@16853 3957,0,@11431 3993,0,0 4000,0,0 4007,0,1 4013,0,0 7861:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3044|11,0,@4758 7862:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17169,1,@3046| 7863:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3047|11,0,@4758 7864:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3048|11,0,@4758 7865:D3,440|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e93201000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b838b268b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3052|29,0,@10443 56,0,@9455 130,0,@9455 172,0,@4724 179,0,@17194 227,0,@11375 264,0,@10448 299,0,@11428 375,0,@11377 411,0,0 418,0,0 425,0,1 431,0,0 7866:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b854b268b1ff1289c258ff22f400|@10629,1,@3051|12,0,@4604 19,0,@17196 7867:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b870b268b1ff1289c258ff22f400|@15229,1,@3050|12,0,@4724 19,0,@17198 7868:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3049|11,0,@4672 7869:D3,440|3b650c7305ff552ccd05508b34248b7e0489f983ff017d0e8d642404be185566b1e93201000089f68b3e8b3f89ce83ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a048b17ff1289c7578b7c24048b378b760489ff8b570483ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b88cb268b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3056|29,0,@10443 56,0,@9455 130,0,@9455 172,0,@4724 179,0,@17200 227,0,@11375 264,0,@10448 299,0,@11428 375,0,@11377 411,0,0 418,0,0 425,0,1 431,0,0 7870:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8a8b268b1ff1289c258ff22f400|@10629,1,@3055|12,0,@4604 19,0,@17202 7871:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b8c4b268b1ff1289c258ff22f400|@15229,1,@3054|12,0,@4724 19,0,@17204 7872:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3053|11,0,@4672 7873:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8fcb268b1ff1289c258ff22f400|@10454,1,@3058|12,0,@4674 19,0,@17208 7874:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3057|11,0,@4759 7875:D3,2164|3b650c7305ff552ccd01508b3c248b570489d683fa017d0e8d642404be2cb566b1e9f107000089ff8b17ff720889f783ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424048b7e0489fa83ff037d0abf2cb566b1e9bd01000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24088b378b760489ff8b570483ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b800b468b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fc1668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@9816,1,@3086|29,0,@11421 58,0,@9455 82,0,@11421 110,0,@9455 151,0,@4670 174,0,@11421 202,0,@9455 243,0,@4670 266,0,@11421 293,0,@9455 334,0,@4602 357,0,@11421 385,0,@9455 426,0,@4670 458,0,@9455 499,0,@4670 538,0,@11424 575,0,@10448 610,0,@13969 645,0,@10448 680,0,@11428 753,0,@10448 788,0,@13971 823,0,@10448 858,0,@11428 931,0,@10448 966,0,@13973 1001,0,@10448 1036,0,@11428 1109,0,@10448 1144,0,@13975 1179,0,@10448 1214,0,@11428 1287,0,@10448 1322,0,@13977 1360,0,@11431 1396,0,0 1403,0,0 1410,0,1 1416,0,0 1436,0,@11421 1463,0,@9455 1504,0,@4602 1539,0,@9455 1581,0,@4724 1588,0,@17225 1636,0,@11424 1673,0,@10448 1708,0,@15330 1743,0,@10448 1778,0,@11428 1851,0,@10448 1886,0,@14926 1921,0,@10448 1956,0,@11428 2029,0,@10448 2064,0,@16347 2102,0,@11431 2138,0,0 2145,0,0 2152,0,1 2158,0,0 7876:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b81cb468b1ff1289c258ff22f400|@10629,1,@3085|12,0,@4604 19,0,@17227 7877:D3,20|3b650c7305ff552ccd01bf4405c0b08b17ff22f4|@17238,1,@3084|11,0,@4763 7878:D3,1408|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9320400008b7c24048b7f0489f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f0c8b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e91f0300008b7c24088b770c89d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7608897704c707acdb40b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c89fe83ff057d0abe2cb566b1e9ab0100008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24148b7f088b74241083ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7074cb468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707301268b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706901268b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70768b468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@17238,1,@3060|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 162,0,@11421 190,0,@9455 232,0,@4674 276,0,@7879 309,0,1 316,0,3 325,0,0 353,0,@11421 380,0,@9455 421,0,@4602 453,0,@9455 535,0,@11424 572,0,@10448 607,0,@17230 642,0,@10448 677,0,@11428 750,0,@10448 785,0,@14926 820,0,@10448 855,0,@11428 928,0,@10448 963,0,@15254 1001,0,@10448 1036,0,@11428 1109,0,@10448 1144,0,@15260 1182,0,@11431 1218,0,0 1225,0,0 1232,0,1 1238,0,0 1271,0,0 1308,0,@10448 1343,0,@17232 1379,0,0 1386,0,0 1393,0,1 1399,0,0 7879:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@3059| 7880:D3,1812|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9c90500008b7c24048b770889d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7608897704c707fce240b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e9550400008b7c240c8b7f1489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240c89fa83ff057d0abe2cb566b1e9470300008b7c24108b770c89d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7604897704c70724e340b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241489fe83ff077d0abf2cb566b1e9d30100008b7c24188b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c241889fe83ff097d0abe2cb566b1e9c50000008b7c241c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5405c0b08b17ff1289c78b74241883ee02710e8d642424b8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460438b968b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7067cb968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301268b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70798b968b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c0b968b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e0b968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@17323,1,@3083|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 138,0,@4674 182,0,@7881 215,0,1 222,0,3 231,0,0 259,0,@11421 287,0,@9455 328,0,@4670 351,0,@11421 379,0,@9455 421,0,@4674 465,0,@7882 498,0,1 505,0,3 514,0,0 542,0,@11421 570,0,@9455 611,0,@4602 634,0,@11421 661,0,@9455 702,0,@4765 726,0,@9455 764,0,@17306 801,0,@10448 836,0,@17311 871,0,@10448 906,0,@11428 979,0,@10448 1014,0,@14926 1049,0,@10448 1084,0,@11428 1157,0,@10448 1192,0,@15254 1230,0,@10448 1265,0,@11428 1338,0,@10448 1373,0,@17313 1408,0,@10448 1443,0,@11428 1516,0,@10448 1551,0,@17315 1589,0,@11431 1625,0,0 1632,0,0 1639,0,1 1645,0,0 1678,0,0 1715,0,@10448 1750,0,@17317 1786,0,0 1793,0,0 1800,0,1 1806,0,0 7881:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16360,1,@3061| 7882:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@3062| 7883:D3,548|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3083ea02710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf5c05c0b08b17b830b868b1ff1289c28b0424ff1289c68d6424048b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780b868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@17305,1,@3082|21,0,@11331 34,0,@9455 76,0,@4766 83,0,@17292 158,0,@9771 165,0,1 173,0,@9772 180,0,1 188,0,@9773 195,0,1 202,0,0 247,0,@11374 284,0,@10625 319,0,@11377 355,0,0 362,0,1 369,0,3 375,0,0 414,0,0 451,0,@10448 486,0,@17297 522,0,0 529,0,0 536,0,1 542,0,0 7884:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008b7204897008897804c700d0e540b1c3f400|@17278,1,@3077|49,0,@7885 7885:D3,1780|3b650c7305ff552ccd0589d68b780489f983ff037d06b8b4ab66b1c38b3889fa8b3f83ff010f85530200008b520883e90251710e8d642404b8f80466b18b5d04ff238b3c2489f983ff017d0e8d642404be2cb566b1e92701000089c983e902710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891757bf6c05c0b08b178b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4e08894f088b7604897704c7075cf040b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424048b342483ee028d642404710ab8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000c746045cb568b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069cb568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcb568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389cf83f9037d06b8b4ab66b1c3ff7204ff72088b520c83ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489f983ff017d0e8d64240cbe2cb566b1e93403000089c983e902710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04891757bf0c04c0b08b178b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4e08894f088b7604897704c707c8f040b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e9c501000089f683ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b87cb668b1ff1289c28b0424ff1289c7578b74241083ee02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742414893757bf0c04c0b08b17b898b668b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b4b668b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780b568b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7069cb568b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0b668b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@17277,1,@3076|23,0,@11331 57,0,@9455 81,0,@11421 102,0,@9455 144,0,@4768 190,0,@7890 223,0,1 230,0,3 239,0,0 271,0,@9455 309,0,@17246 346,0,@10448 381,0,@17251 416,0,@11431 452,0,0 459,0,0 466,0,1 472,0,0 505,0,0 542,0,@10448 577,0,@17253 613,0,0 620,0,0 627,0,1 633,0,0 646,0,@11331 671,0,@9455 695,0,@11421 716,0,@9455 758,0,@4724 804,0,@7891 837,0,1 844,0,2 853,0,0 881,0,@11421 902,0,@9455 948,0,@4724 955,0,@17264 985,0,@9455 1031,0,@4724 1038,0,@17266 1086,0,@11424 1123,0,@10448 1158,0,@17268 1193,0,@10448 1228,0,@11428 1301,0,@10448 1336,0,@17249 1374,0,@10448 1409,0,@11428 1482,0,@10448 1517,0,@17251 1555,0,@11431 1591,0,0 1598,0,0 1605,0,1 1611,0,0 1644,0,0 1681,0,@10448 1716,0,@17270 1752,0,0 1759,0,0 1766,0,1 1772,0,0 7886:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70020ed40b1c3f4000000|@9475,1,@3066|43,0,@7887 7887:D3,72|3b650c7305ff552ccd058b70048b7a048b7f048b008b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897b04c7037ced40b1ff342489742404e960000000f4000000|@11673,1,@3065|52,0,@7888 64,1,@7889 7888:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17243,1,@3063| 7889:D3,644|3b650c7305ff552ccd0950538b7c24048b77fc89f2c1e608c1ee0783ce0183ee0256710e8d64240cb8f80466b18b5d04ff238b74241083fe017f0b8d64240cbeb83e68b1eb618b4c24102b0c24710e8d64240cb8f80466b18b5d04ff2383c1018b75008d76f43b75087305ff5528cd06897500c746fc02000000894e04c706dc3e68b189d7c1e708c1ef0783cf0156578b3c2489fe83ff01756b8d6424048b3c248b378d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f43e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c2040089f689f783ee025689ff89fe83ef025789f683ee028b7c24188b4477fe8b74240c89f7ff3689ffff77046a016a018b74240889f783fe01752589ff83c702710e8d64242cb8f80466b18b5d04ff23c70424b83e68b1897c2404e9e200000089ff89fb83ff017d2589df83c702710e8d64242cb8f80466b18b5d04ff23c7042401000000897c2404e9b400000089db83eb02710e8d64242cb8f80466b18b5d04ff238b542424ff1289c78b7424103b742420744c8b75008d76f43b75087305ff5528cd80897500c746fc020000008b54240c895604c706201a66b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702143f68b1eb048b54240c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7c240883c702710e8d64242cb8f80466b18b5d04ff23893424897c24045f5a8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b54240c89542410897424143b650c7303ff552c83c410e90efefffff400|@17244,1,@3064|41,0,@9455 64,0,@15943 84,0,@9455 127,0,@15946 198,0,@15948 234,0,0 241,0,0 248,0,3 254,0,0 330,0,@9455 342,0,@15943 376,0,@9455 388,0,0 413,0,@9455 475,0,@9794 510,0,@15950 565,0,@9455 7890:D3,88|3b650c7305ff552ccd0589d1508b79088b178b790489fe8b7f0489f38b760889d98b490c8b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c897008897804c70001000000ff1289c258ff22f4000000|@17245,1,@3067|73,0,0 7891:D3,124|3b650c7305ff552ccd0589d650bf7405c0b08b178b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4e08894f088b7604897704c707dcf440b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c258ff22f4000000|@17263,1,@3073|14,0,@4769 60,0,@7896 93,0,1 100,0,3 109,0,0 7892:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700a0f140b1c3f4000000|@9475,1,@3071|43,0,@7893 7893:D3,72|3b650c7305ff552ccd058b70048b7a048b7f048b008b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897b04c703fcf140b1ff342489742404e960000000f4000000|@11673,1,@3070|52,0,@7894 64,1,@7895 7894:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17261,1,@3068| 7895:D3,644|3b650c7305ff552ccd0950538b7c24048b77fc89f2c1e608c1ee0783ce0183ee0256710e8d64240cb8f80466b18b5d04ff238b74241083fe017f0b8d64240cbeb83e68b1eb618b4c24102b0c24710e8d64240cb8f80466b18b5d04ff2383c1018b75008d76f43b75087305ff5528cd06897500c746fc02000000894e04c706dc3e68b189d7c1e708c1ef0783cf0156578b3c2489fe83ff01756b8d6424048b3c248b378d6424108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f43e68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c2040089f689f783ee025689ff89fe83ef025789f683ee028b7c24188b4477fe8b74240c89f7ff3689ffff77046a016a018b74240889f783fe01752589ff83c702710e8d64242cb8f80466b18b5d04ff23c70424b83e68b1897c2404e9e200000089ff89fb83ff017d2589df83c702710e8d64242cb8f80466b18b5d04ff23c7042401000000897c2404e9b400000089db83eb02710e8d64242cb8f80466b18b5d04ff238b542424ff1289c78b7424103b742420744c8b75008d76f43b75087305ff5528cd80897500c746fc020000008b54240c895604c706201a66b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702143f68b1eb048b54240c8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7c240883c702710e8d64242cb8f80466b18b5d04ff23893424897c24045f5a8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b54240c89542410897424143b650c7303ff552c83c410e90efefffff400|@17262,1,@3069|41,0,@9455 64,0,@15943 84,0,@9455 127,0,@15946 198,0,@15948 234,0,0 241,0,0 248,0,3 254,0,0 330,0,@9455 342,0,@15943 376,0,@9455 388,0,0 413,0,@9455 475,0,@9794 510,0,@15950 565,0,@9455 7896:D3,88|3b650c7305ff552ccd0589d1508b79088b178b790489fe8b7f0489f38b760889d98b490c8b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c897008897804c70001000000ff1289c258ff22f4000000|@17245,1,@3072|73,0,0 7897:D3,20|3b650c7305ff552ccd01b8405068b1c3f4000000|@17131,1,@3074|11,0,@16224 7898:D3,20|3b650c7305ff552ccd01bf5c02c0b08b17ff22f4|@11676,1,@3075|11,0,@4670 7899:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e0f540b1c3f4000000|@17291,1,@3079|43,0,@7900 7900:D3,652|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c38b3089f283fe01750a8d642404b86cb768b1c389fe83ff037d0a8d642404b8b4ab66b1c38b3aff720483ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe185566b1e91a01000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c8b7f048b57048b7c240483ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d8b768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@17245,1,@3078|26,0,@11331 45,0,@17280 62,0,@11331 83,0,@9455 107,0,@10443 128,0,@9455 169,0,@4602 204,0,@9455 281,0,@11375 318,0,@10448 353,0,@11428 429,0,@11377 465,0,0 472,0,0 479,0,1 485,0,0 518,0,0 555,0,@10448 590,0,@17287 626,0,0 633,0,0 640,0,1 646,0,0 7901:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b84cb868b1ff1289c258ff22f400|@10454,1,@3081|12,0,@4674 19,0,@17294 7902:D3,20|3b650c7305ff552ccd01bf9404c0b08b17ff22f4|@17296,1,@3080|11,0,@4741 7903:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b874ba68b1ff1289c258ff22f400|@10454,1,@3088|12,0,@4674 19,0,@17326 7904:D3,20|3b650c7305ff552ccd01bf4405c0b08b17ff22f4|@17238,1,@3087|11,0,@4763 7905:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8acba68b1ff1289c258ff22f400|@10454,1,@3090|12,0,@4674 19,0,@17330 7906:D3,20|3b650c7305ff552ccd01bfec03c0b08b17ff22f4|@15218,1,@3089|11,0,@4720 7907:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8e4ba68b1ff1289c258ff22f400|@10454,1,@3092|12,0,@4674 19,0,@17334 7908:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3091|11,0,@4759 7909:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3093|11,0,@4758 7910:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17169,1,@3094| 7911:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@16919,1,@3095| 7912:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17399,1,@3096| 7913:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8b4bf68b1ff1289c258ff22f400|@10629,1,@3099|12,0,@4604 19,0,@17409 7914:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b8d0bf68b1ff1289c258ff22f400|@15229,1,@3098|12,0,@4724 19,0,@17411 7915:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3097|11,0,@4672 7916:D3,4776|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be2cb566b1e9601100008b7c24048b770889d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b8f4c068b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9421000008b74240cff760c89ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fe83ff057d0abe2cb566b1e9140a00008b7c24108b7f1489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c241089fe83ff077d0abf2cb566b1e9060900008b7c24148b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74241489f783fe097d0abe2cb566b1e9f90700008b742418ff761089ff83ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241889fa83ff0b7d0abf2cb566b1e9cb0100008b7c241c8b770489d283ea02710e8d642420b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b810c168b1ff1289c28b0424ff1289c7578b7c24248b77188b54242083ea02710e8d642428b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b82cc168b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706585768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c168b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706249568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70680c168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0c168b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c0c168b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e0c168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@16919,1,@3104|21,0,@11331 39,0,@9455 63,0,@11421 91,0,@9455 133,0,@4604 140,0,@17430 168,0,@11421 197,0,@9455 221,0,@11421 249,0,@9455 290,0,@4670 313,0,@11421 341,0,@9455 382,0,@4670 405,0,@11421 432,0,@9455 473,0,@4602 496,0,@11421 524,0,@9455 565,0,@4670 597,0,@9455 638,0,@4670 677,0,@11424 714,0,@10448 749,0,@13969 784,0,@10448 819,0,@11428 892,0,@10448 927,0,@13971 962,0,@10448 997,0,@11428 1070,0,@10448 1105,0,@13973 1140,0,@10448 1175,0,@11428 1248,0,@10448 1283,0,@13975 1318,0,@10448 1353,0,@11428 1426,0,@10448 1461,0,@13977 1499,0,@11431 1535,0,0 1542,0,0 1549,0,1 1555,0,0 1572,0,@11421 1600,0,@9455 1641,0,@4672 1664,0,@11421 1691,0,@9455 1732,0,@4602 1755,0,@11421 1784,0,@9455 1808,0,@11421 1836,0,@9455 1877,0,@4670 1900,0,@11421 1928,0,@9455 1969,0,@4670 1992,0,@11421 2019,0,@9455 2060,0,@4602 2083,0,@11421 2111,0,@9455 2152,0,@4670 2184,0,@9455 2225,0,@4670 2264,0,@11424 2301,0,@10448 2336,0,@13969 2371,0,@10448 2406,0,@11428 2479,0,@10448 2514,0,@13971 2549,0,@10448 2584,0,@11428 2657,0,@10448 2692,0,@13973 2727,0,@10448 2762,0,@11428 2835,0,@10448 2870,0,@13975 2905,0,@10448 2940,0,@11428 3013,0,@10448 3048,0,@13977 3086,0,@11431 3122,0,0 3129,0,0 3136,0,1 3142,0,0 3159,0,@11421 3187,0,@9455 3229,0,@4724 3236,0,@17432 3273,0,@9455 3315,0,@4674 3322,0,@17434 3370,0,@11424 3407,0,@10448 3442,0,@16336 3477,0,@10448 3512,0,@11428 3585,0,@10448 3620,0,@17437 3658,0,@10448 3693,0,@11428 3766,0,@10448 3801,0,@16797 3836,0,@10448 3871,0,@11428 3944,0,@10448 3979,0,@14926 4014,0,@10448 4049,0,@11428 4122,0,@10448 4157,0,@17439 4192,0,@10448 4227,0,@11428 4300,0,@10448 4335,0,@17441 4370,0,@10448 4405,0,@11428 4478,0,@10448 4513,0,@17443 4551,0,@11431 4587,0,0 4594,0,0 4601,0,1 4607,0,0 4640,0,0 4677,0,@10448 4712,0,@17445 4748,0,0 4755,0,0 4762,0,1 4768,0,0 7917:D3,20|3b650c7305ff552ccd01bf0405c0b08b17ff22f4|@16794,1,@3101|11,0,@4755 7918:D3,20|3b650c7305ff552ccd01bfec03c0b08b17ff22f4|@15218,1,@3102|11,0,@4720 7919:D3,20|3b650c7305ff552ccd01bfcc03c0b08b17ff22f4|@17436,1,@3103|11,0,@4716 7920:D3,4504|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c3ff3083ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be2cb566b1e9521000008b7c24048b770889d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b858c268b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9340f00008b74240cff760c89ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fe83ff057d0abe2cb566b1e9060900008b7c24108b3f89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74241089f783fe077d0abf2cb566b1e9f90700008b742414ff761089ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241489fa83ff097d0abe2cb566b1e9cb0100008b7c24188b770489d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b828c368b1ff1289c28b0424ff1289c7578b7c24208b77148b54241c83ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b844c368b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707585768b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c168b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707249568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0c168b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70660c368b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780c368b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16918,1,@3110|21,0,@11331 39,0,@9455 63,0,@11421 91,0,@9455 133,0,@4674 140,0,@17453 168,0,@11421 197,0,@9455 221,0,@11421 249,0,@9455 290,0,@4670 313,0,@11421 341,0,@9455 382,0,@4670 405,0,@11421 432,0,@9455 473,0,@4602 496,0,@11421 524,0,@9455 565,0,@4670 597,0,@9455 638,0,@4670 677,0,@11424 714,0,@10448 749,0,@13969 784,0,@10448 819,0,@11428 892,0,@10448 927,0,@13971 962,0,@10448 997,0,@11428 1070,0,@10448 1105,0,@13973 1140,0,@10448 1175,0,@11428 1248,0,@10448 1283,0,@13975 1318,0,@10448 1353,0,@11428 1426,0,@10448 1461,0,@13977 1499,0,@11431 1535,0,0 1542,0,0 1549,0,1 1555,0,0 1572,0,@11421 1599,0,@9455 1640,0,@4602 1663,0,@11421 1692,0,@9455 1716,0,@11421 1744,0,@9455 1785,0,@4670 1808,0,@11421 1836,0,@9455 1877,0,@4670 1900,0,@11421 1927,0,@9455 1968,0,@4602 1991,0,@11421 2019,0,@9455 2060,0,@4670 2092,0,@9455 2133,0,@4670 2172,0,@11424 2209,0,@10448 2244,0,@13969 2279,0,@10448 2314,0,@11428 2387,0,@10448 2422,0,@13971 2457,0,@10448 2492,0,@11428 2565,0,@10448 2600,0,@13973 2635,0,@10448 2670,0,@11428 2743,0,@10448 2778,0,@13975 2813,0,@10448 2848,0,@11428 2921,0,@10448 2956,0,@13977 2994,0,@11431 3030,0,0 3037,0,0 3044,0,1 3050,0,0 3067,0,@11421 3095,0,@9455 3137,0,@4724 3144,0,@17467 3181,0,@9455 3223,0,@4674 3230,0,@17469 3278,0,@11424 3315,0,@10448 3350,0,@16336 3385,0,@10448 3420,0,@11428 3493,0,@10448 3528,0,@17437 3566,0,@10448 3601,0,@11428 3674,0,@10448 3709,0,@16797 3744,0,@10448 3779,0,@11428 3852,0,@10448 3887,0,@14926 3922,0,@10448 3957,0,@11428 4030,0,@10448 4065,0,@17441 4100,0,@10448 4135,0,@11428 4208,0,@10448 4243,0,@17471 4281,0,@11431 4317,0,0 4324,0,0 4331,0,1 4337,0,0 4370,0,0 4407,0,@10448 4442,0,@17473 4478,0,0 4485,0,0 4492,0,1 4498,0,0 7921:D3,2448|3b650c7305ff552ccd01508b3c248b770489f283fe017d0e8d642404be2cb566b1e90a09000089ff8b378b760483ea02710e8d642404b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b874c268b1ff1289c28b0424ff1289c7578b7424088b7e0489fa83ff037d0abf2cb566b1e9eb07000089f68b3e8b7f0c89d683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c8b770489f283fe057d0abe2cb566b1e9da06000089ff8b378b760883ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b890c268b1ff1289c28b0424ff1289c7578b7c24148b37ff3689ff8b7f0483ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707acc268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8c268b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e8c268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70608c368b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3107|29,0,@11421 55,0,@9455 97,0,@4604 104,0,@17455 135,0,@11421 163,0,@9455 204,0,@4602 230,0,@11421 256,0,@9455 298,0,@4724 305,0,@17457 345,0,@9455 369,0,@11421 397,0,@9455 438,0,@4670 461,0,@11421 489,0,@9455 530,0,@4670 553,0,@11421 580,0,@9455 621,0,@4602 644,0,@11421 672,0,@9455 713,0,@4670 745,0,@9455 786,0,@4670 825,0,@11424 862,0,@10448 897,0,@13969 932,0,@10448 967,0,@11428 1040,0,@10448 1075,0,@13971 1110,0,@10448 1145,0,@11428 1218,0,@10448 1253,0,@13973 1288,0,@10448 1323,0,@11428 1396,0,@10448 1431,0,@13975 1466,0,@10448 1501,0,@11428 1574,0,@10448 1609,0,@13977 1647,0,@11431 1683,0,0 1690,0,0 1697,0,1 1703,0,0 1736,0,@11424 1773,0,@10448 1808,0,@17459 1843,0,@10448 1878,0,@11428 1951,0,@10448 1986,0,@17461 2024,0,@10448 2059,0,@11428 2132,0,@10448 2167,0,@17463 2202,0,@10448 2237,0,@11428 2310,0,@10448 2345,0,@17465 2383,0,@11431 2419,0,0 2426,0,0 2433,0,1 2439,0,0 7922:D3,20|3b650c7305ff552ccd01bf0405c0b08b17ff22f4|@16794,1,@3105|11,0,@4755 7923:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3106|11,0,@4759 7924:D3,20|3b650c7305ff552ccd01bfec03c0b08b17ff22f4|@15218,1,@3108|11,0,@4720 7925:D3,20|3b650c7305ff552ccd01bfcc03c0b08b17ff22f4|@17436,1,@3109|11,0,@4716 7926:D3,3200|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9350b00008b7c24048b770889d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b800c468b1ff1289c28b0424ff1289c7578b7c240889fa83ff037d0abf2cb566b1e9170a00008b7c240c8b771489d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b81cc468b1ff1289c28b0424ff1289c7578b7c241089fe83ff057d0abe2cb566b1e9f90800008b7c24148b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c7578b74241489f783fe077d0abf2cb566b1e9ea0700008b742418ff761089ff83ef0257710e8d642428b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241889fa83ff097d0abe2cb566b1e9bc0100008b7c241c8b770c89d283ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b870c468b1ff1289c28b0424ff1289c7578b7c24248b7f048b74242083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24288b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cc468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a8c468b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b43568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ecbf68b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089668b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c8c468b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@16964,1,@3116|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 138,0,@4724 145,0,@17481 173,0,@11421 201,0,@9455 243,0,@4724 250,0,@17483 278,0,@11421 305,0,@9455 371,0,@11421 400,0,@9455 424,0,@11421 452,0,@9455 493,0,@4670 516,0,@11421 544,0,@9455 585,0,@4670 608,0,@11421 635,0,@9455 676,0,@4602 699,0,@11421 727,0,@9455 768,0,@4670 800,0,@9455 841,0,@4670 880,0,@11424 917,0,@10448 952,0,@13969 987,0,@10448 1022,0,@11428 1095,0,@10448 1130,0,@13971 1165,0,@10448 1200,0,@11428 1273,0,@10448 1308,0,@13973 1343,0,@10448 1378,0,@11428 1451,0,@10448 1486,0,@13975 1521,0,@10448 1556,0,@11428 1629,0,@10448 1664,0,@13977 1702,0,@11431 1738,0,0 1745,0,0 1752,0,1 1758,0,0 1775,0,@11421 1803,0,@9455 1845,0,@4724 1852,0,@17489 1889,0,@9455 1971,0,@11424 2008,0,@10448 2043,0,@17491 2078,0,@10448 2113,0,@11428 2186,0,@10448 2221,0,@17493 2259,0,@10448 2294,0,@11428 2367,0,@10448 2402,0,@16347 2437,0,@10448 2472,0,@11428 2545,0,@10448 2580,0,@15804 2615,0,@10448 2650,0,@11428 2723,0,@10448 2758,0,@17413 2796,0,@10448 2831,0,@11428 2904,0,@10448 2939,0,@16810 2977,0,@11431 3013,0,0 3020,0,0 3027,0,1 3033,0,0 3066,0,0 3103,0,@10448 3138,0,@17495 3174,0,0 3181,0,0 3188,0,1 3194,0,0 7927:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3111|11,0,@4758 7928:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b838c468b1ff1289c258ff22f400|@10629,1,@3114|12,0,@4604 19,0,@17485 7929:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b854c468b1ff1289c258ff22f400|@15229,1,@3113|12,0,@4724 19,0,@17487 7930:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3112|11,0,@4672 7931:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3115|11,0,@4758 7932:D3,4500|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b342489f783fe017d0e8d64240cbe2cb566b1e9471000008b742404ff760c89ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240489fe83ff037d0abf2cb566b1e9160a00008b7c24088b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74240889f783fe057d0abe2cb566b1e9090900008b74240cff761089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fa83ff077d0abf2cb566b1e9db0200008b7c24108b770889d283ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b848c568b1ff1289c28b0424ff1289c7578b7c241489fe83ff097d0abe2cb566b1e9bd0100008b7c24188b7f1489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c241c8b7f048b17ff1289c7578b7c241c8b77048b54241883ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b864c568b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70680c568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0c568b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706249568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a0c168b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcc568b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@17067,1,@3119|26,0,@11331 44,0,@9455 68,0,@11421 97,0,@9455 121,0,@11421 149,0,@9455 190,0,@4670 213,0,@11421 241,0,@9455 282,0,@4670 305,0,@11421 332,0,@9455 373,0,@4602 396,0,@11421 424,0,@9455 465,0,@4670 497,0,@9455 538,0,@4670 577,0,@11424 614,0,@10448 649,0,@13969 684,0,@10448 719,0,@11428 792,0,@10448 827,0,@13971 862,0,@10448 897,0,@11428 970,0,@10448 1005,0,@13973 1040,0,@10448 1075,0,@11428 1148,0,@10448 1183,0,@13975 1218,0,@10448 1253,0,@11428 1326,0,@10448 1361,0,@13977 1399,0,@11431 1435,0,0 1442,0,0 1449,0,1 1455,0,0 1472,0,@11421 1499,0,@9455 1540,0,@4602 1563,0,@11421 1592,0,@9455 1616,0,@11421 1644,0,@9455 1685,0,@4670 1708,0,@11421 1736,0,@9455 1777,0,@4670 1800,0,@11421 1827,0,@9455 1868,0,@4602 1891,0,@11421 1919,0,@9455 1960,0,@4670 1992,0,@9455 2033,0,@4670 2072,0,@11424 2109,0,@10448 2144,0,@13969 2179,0,@10448 2214,0,@11428 2287,0,@10448 2322,0,@13971 2357,0,@10448 2392,0,@11428 2465,0,@10448 2500,0,@13973 2535,0,@10448 2570,0,@11428 2643,0,@10448 2678,0,@13975 2713,0,@10448 2748,0,@11428 2821,0,@10448 2856,0,@13977 2894,0,@11431 2930,0,0 2937,0,0 2944,0,1 2950,0,0 2967,0,@11421 2995,0,@9455 3037,0,@4604 3044,0,@17503 3072,0,@11421 3100,0,@9455 3175,0,@9455 3217,0,@4724 3224,0,@17505 3272,0,@11424 3309,0,@10448 3344,0,@15330 3379,0,@10448 3414,0,@11428 3487,0,@10448 3522,0,@17507 3557,0,@10448 3592,0,@11428 3665,0,@10448 3700,0,@17509 3738,0,@10448 3773,0,@11428 3846,0,@10448 3881,0,@16797 3916,0,@10448 3951,0,@11428 4024,0,@10448 4059,0,@14926 4094,0,@10448 4129,0,@11428 4202,0,@10448 4237,0,@17441 4275,0,@11431 4311,0,0 4318,0,0 4325,0,1 4331,0,0 4364,0,0 4401,0,@10448 4436,0,@17511 4472,0,0 4479,0,0 4486,0,1 4492,0,0 7933:D3,20|3b650c7305ff552ccd01bf0405c0b08b17ff22f4|@16794,1,@3117|11,0,@4755 7934:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3118|11,0,@4759 7935:D3,3316|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9a80b00008b7c24048b3789d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b838c668b1ff1289c28b0424ff1289c7578b7c240889fa83ff037d0abf2cb566b1e98b0a00008b7c240c8b770489d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7604897704c707e05641b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241089fa83ff057d0abe2cb566b1e9170900008b7c24148b770889d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b86cc668b1ff1289c28b0424ff1289c7578b74241889f783fe077d0abf2cb566b1e9f90700008b74241cff760c89ff83ef0257710e8d64242cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241c89fa83ff097d0abe2cb566b1e9cb0100008b7c24208b771089d283ea02710e8d642428b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b888c668b1ff1289c28b0424ff1289c7578b7c24288b77148b54242483ea02710e8d642430b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8a4c668b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707043468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c0c668b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e0c668b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70700c768b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089668b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70720c768b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@17099,1,@3125|26,0,@11331 44,0,@9455 68,0,@11421 95,0,@9455 137,0,@4724 144,0,@17519 172,0,@11421 200,0,@9455 242,0,@4674 286,0,@7937 319,0,1 326,0,3 335,0,0 363,0,@11421 391,0,@9455 433,0,@4724 440,0,@17522 468,0,@11421 497,0,@9455 521,0,@11421 549,0,@9455 590,0,@4670 613,0,@11421 641,0,@9455 682,0,@4670 705,0,@11421 732,0,@9455 773,0,@4602 796,0,@11421 824,0,@9455 865,0,@4670 897,0,@9455 938,0,@4670 977,0,@11424 1014,0,@10448 1049,0,@13969 1084,0,@10448 1119,0,@11428 1192,0,@10448 1227,0,@13971 1262,0,@10448 1297,0,@11428 1370,0,@10448 1405,0,@13973 1440,0,@10448 1475,0,@11428 1548,0,@10448 1583,0,@13975 1618,0,@10448 1653,0,@11428 1726,0,@10448 1761,0,@13977 1799,0,@11431 1835,0,0 1842,0,0 1849,0,1 1855,0,0 1872,0,@11421 1900,0,@9455 1942,0,@4724 1949,0,@17524 1986,0,@9455 2028,0,@4724 2035,0,@17526 2083,0,@11424 2120,0,@10448 2155,0,@15777 2190,0,@10448 2225,0,@11428 2298,0,@10448 2333,0,@17528 2371,0,@10448 2406,0,@11428 2479,0,@10448 2514,0,@16347 2549,0,@10448 2584,0,@11428 2657,0,@10448 2692,0,@17530 2730,0,@10448 2765,0,@11428 2838,0,@10448 2873,0,@17532 2911,0,@10448 2946,0,@11428 3019,0,@10448 3054,0,@16810 3092,0,@11431 3128,0,0 3135,0,0 3142,0,1 3148,0,0 3181,0,0 3218,0,@10448 3253,0,@17534 3289,0,0 3296,0,0 3303,0,1 3309,0,0 7936:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3120|11,0,@4758 7937:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17521,1,@3121| 7938:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3122|11,0,@4759 7939:D3,20|3b650c7305ff552ccd01bf5c02c0b08b17ff22f4|@11676,1,@3123|11,0,@4670 7940:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3124|11,0,@4758 7941:D3,5884|8d7c24ac3b7d0c7305ff5530cd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d64240cbe2cb566b1e9ad1500008b7c24048b770c89d283ea02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b89cc768b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e98f1400008b74240cff3689ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408bf2cb566b1e96c0c00008b7c24048b3789d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7604897704c707206f41b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fa83ff037d0abe2cb566b1e9f90a00008b7c240c8b770c89d283ea02710e8d642424b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf4c00c0b08b17b8f0c768b1ff1289c28b0424ff1289c7578b74241089f783fe057d0abf2cb566b1e9db0900008b742414ff760489ff83ef0257710e8d642434b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408bf2cb566b1e9e70700008b7c24048b770489d283ea02710e8d642434b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b80cc868b1ff1289c28b0424ff1289c7578b74240889f783fe037d0abe2cb566b1e9c90600008b74240cff760889ff83ef0257710e8d642444b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642444b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642448b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64244cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642450b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642454b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24108b3f8b74240c83ee02710e8d642440b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d89868b183c40c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24188b7f088b74241483ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70644a368b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70728c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70644c868b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707601668b183c40c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c89fe83ff057d0abe2cb566b1e9cc0600008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24148b7f048b17ff1289c7578b7c2414ff77088b7c241483ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b43568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4ac68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ecbf68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780c868b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@17521,1,@3132|30,0,@11331 48,0,@9455 72,0,@11421 100,0,@9455 142,0,@4724 149,0,@17542 177,0,@11421 205,0,@9455 229,0,@11421 256,0,@9455 298,0,@4674 342,0,@7945 375,0,1 382,0,3 391,0,0 419,0,@11421 447,0,@9455 489,0,@4604 496,0,@17548 524,0,@11421 553,0,@9455 577,0,@11421 605,0,@9455 647,0,@4724 654,0,@17550 682,0,@11421 711,0,@9455 735,0,@11421 763,0,@9455 804,0,@4670 827,0,@11421 855,0,@9455 896,0,@4670 919,0,@11421 946,0,@9455 987,0,@4602 1010,0,@11421 1038,0,@9455 1079,0,@4670 1111,0,@9455 1152,0,@4670 1191,0,@11424 1228,0,@10448 1263,0,@13969 1298,0,@10448 1333,0,@11428 1406,0,@10448 1441,0,@13971 1476,0,@10448 1511,0,@11428 1584,0,@10448 1619,0,@13973 1654,0,@10448 1689,0,@11428 1762,0,@10448 1797,0,@13975 1832,0,@10448 1867,0,@11428 1940,0,@10448 1975,0,@13977 2013,0,@11431 2049,0,0 2056,0,0 2063,0,1 2069,0,0 2094,0,@9455 2135,0,@4602 2174,0,@11424 2211,0,@10448 2246,0,@14926 2281,0,@10448 2316,0,@11428 2389,0,@10448 2424,0,@16347 2459,0,@10448 2494,0,@11428 2567,0,@10448 2602,0,@16853 2640,0,@11431 2676,0,0 2683,0,0 2690,0,1 2696,0,0 2722,0,@9455 2763,0,@4672 2802,0,@11424 2839,0,@10448 2874,0,@16951 2909,0,@10448 2944,0,@11428 3017,0,@10448 3052,0,@17552 3087,0,@10448 3122,0,@11428 3195,0,@10448 3230,0,@17554 3268,0,@10448 3303,0,@11428 3376,0,@10448 3411,0,@15320 3449,0,@11431 3485,0,0 3492,0,0 3499,0,1 3505,0,0 3522,0,@11421 3550,0,@9455 3626,0,@9455 3650,0,@11421 3678,0,@9455 3719,0,@4670 3742,0,@11421 3770,0,@9455 3811,0,@4670 3834,0,@11421 3861,0,@9455 3902,0,@4602 3925,0,@11421 3953,0,@9455 3994,0,@4670 4026,0,@9455 4067,0,@4670 4106,0,@11424 4143,0,@10448 4178,0,@13969 4213,0,@10448 4248,0,@11428 4321,0,@10448 4356,0,@13971 4391,0,@10448 4426,0,@11428 4499,0,@10448 4534,0,@13973 4569,0,@10448 4604,0,@11428 4677,0,@10448 4712,0,@13975 4747,0,@10448 4782,0,@11428 4855,0,@10448 4890,0,@13977 4928,0,@11431 4964,0,0 4971,0,0 4978,0,1 4984,0,0 5017,0,@11424 5054,0,@10448 5089,0,@17556 5124,0,@10448 5159,0,@11428 5232,0,@10448 5267,0,@15804 5302,0,@10448 5337,0,@11428 5410,0,@10448 5445,0,@17109 5480,0,@10448 5515,0,@11428 5588,0,@10448 5623,0,@17413 5661,0,@11431 5697,0,0 5704,0,0 5711,0,1 5717,0,0 5750,0,0 5787,0,@10448 5822,0,@17558 5858,0,0 5865,0,0 5872,0,1 5878,0,0 7942:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8b8c768b1ff1289c258ff22f400|@10629,1,@3128|12,0,@4604 19,0,@17544 7943:D3,32|3b650c7305ff552ccd0150bf0c04c0b08b17b8d4c768b1ff1289c258ff22f400|@15229,1,@3127|12,0,@4724 19,0,@17546 7944:D3,20|3b650c7305ff552ccd01bf6c02c0b08b17ff22f4|@15235,1,@3126|11,0,@4672 7945:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@17169,1,@3129| 7946:D3,20|3b650c7305ff552ccd01bf0405c0b08b17ff22f4|@16794,1,@3130|11,0,@4755 7947:D3,20|3b650c7305ff552ccd01bf1c05c0b08b17ff22f4|@15228,1,@3131|11,0,@4758 7948:D3,2904|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e90b0a00008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9f90800008b7c24088b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f048b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9e90700008b7c240c8b7f1089f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b74240c89f783fe077d0abf2cb566b1e9db0600008b742410ff760889ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24148b770c8b54241083ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b800c968b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70600bb68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70638c968b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b43568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4ac68b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7075cc968b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@17399,1,@3135|26,0,@11331 44,0,@9455 68,0,@11421 95,0,@9455 161,0,@11421 189,0,@9455 255,0,@11421 283,0,@9455 324,0,@4672 347,0,@11421 376,0,@9455 400,0,@11421 428,0,@9455 469,0,@4670 492,0,@11421 520,0,@9455 561,0,@4670 584,0,@11421 611,0,@9455 652,0,@4602 675,0,@11421 703,0,@9455 744,0,@4670 776,0,@9455 817,0,@4670 856,0,@11424 893,0,@10448 928,0,@13969 963,0,@10448 998,0,@11428 1071,0,@10448 1106,0,@13971 1141,0,@10448 1176,0,@11428 1249,0,@10448 1284,0,@13973 1319,0,@10448 1354,0,@11428 1427,0,@10448 1462,0,@13975 1497,0,@10448 1532,0,@11428 1605,0,@10448 1640,0,@13977 1678,0,@11431 1714,0,0 1721,0,0 1728,0,1 1734,0,0 1760,0,@9455 1802,0,@4724 1809,0,@17566 1857,0,@11424 1894,0,@10448 1929,0,@17336 1964,0,@10448 1999,0,@11428 2072,0,@10448 2107,0,@17556 2142,0,@10448 2177,0,@11428 2250,0,@10448 2285,0,@17570 2320,0,@10448 2355,0,@11428 2428,0,@10448 2463,0,@15804 2498,0,@10448 2533,0,@11428 2606,0,@10448 2641,0,@17109 2679,0,@11431 2715,0,0 2722,0,0 2729,0,1 2735,0,0 2768,0,0 2805,0,@10448 2840,0,@17572 2876,0,0 2883,0,0 2890,0,1 2896,0,0 7949:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b81cc968b1ff1289c258ff22f400|@10454,1,@3134|12,0,@4674 19,0,@17568 7950:D3,20|3b650c7305ff552ccd01bf2405c0b08b17ff22f4|@15210,1,@3133|11,0,@4759 7951:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17580,1,@3136|11,0,0 7952:D3,852|3b650c7305ff552ccd095053683c4966b1b815000000e825e1e4ff8b1424e8b9d0e6ff89c78d642404578b3c248b57188b7c24308b77188b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707f07e41b1578b7c24048b57208b7c24348b77208b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707387f41b1578b7c2408ff77108b7c240c8b57308b7c243c8b77308b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707807f41b1578b7c2440ff77148b7c2444ff772c8b7c2418ff77088b7c241c8b570c8b7c241c8b4f288b7c241c8b77048b7c241cff771c8b5c24508b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b442420894708895f04c707c87f41b1578b7d008d7fc83b7d087305ff5528cd46897d00c747fc0d0000008b5c2414895f308b5c240c895f2c894f288b0c24894f248b4c241c894f208b4c2404894f1c8b4c2420894f188b4c2410894f148b4c2418894f1089570c8b542408895708897704c70788ca68b157ff742454ff7424508b7c24508b74244c8b5424488b4c24448b5c24408b4424585756ff742410525153508b5424208b4424548b5c241cff128d64240c8b7c24548b55008d52f03b55087305ff5528cd80895500c742fc030000008b742424897208897a04c702b08041b18b7c24548b4d008d49f03b4d087305ff5528cd84894d00c741fc030000008b742424897108897904c701f48041b18b7c24548b5d008d5bf03b5d087305ff5528cd86895d00c743fc030000008b742424897308897b04c703388141b18b7424548b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b442424894708897704c7077c8141b18b75008d76c83b75087305ff5528cd8e897500c746fc0d0000008b4424148946308b44240c89462c895e285b895e248b5c2418895e205b8d642408895e1c8b5c2410895e185b8d642404895e145b8d64240c895e10894e0c895608897e04c70688ca68b1ff742428ff742404ff742428ff742428ff7424288b5424288b4c24248b5c24208b442438894424288b44240c895c242c8b5c2408894c2430895424348b542410897424388b3c24897c243c8b7c2404897c24408b7c241c897c242483c424ff228d64241cf4|@17585,1,@3148|13,0,@10267 18,0,10 23,1,@4893 31,1,@4989 89,0,@7953 142,0,@7954 202,0,@7955 298,0,@7956 402,0,@17583 509,0,@7959 555,0,@7960 601,0,@7961 647,0,@7962 747,0,@17583 7953:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3138| 7954:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3139| 7955:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3140| 7956:D3,72|3b650c7305ff552ccd05528b3c248b7f088b5724b801000000ff1289c7578b7c24048b7f048b5724b801000000ff1289c383fb0175055883c404c35883c404e918000000f4000000|@17582,1,@3142|21,0,0 41,0,0 64,1,@7957 7957:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3141| 7958:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17582,1,@3143|11,0,0 7959:D3,48|3b650c7305ff552ccd0552508b7c24048b7f088b57088b0424ff128b7c24048b7f048b5708588d642404ff22f4000000|@17584,1,@3144| 7960:D3,48|3b650c7305ff552ccd0552508b7c24048b7f088b570c8b0424ff128b7c24048b7f048b570c588d642404ff22f4000000|@17584,1,@3145| 7961:D3,48|3b650c7305ff552ccd0552508b7c24048b7f088b57288b0424ff128b7c24048b7f048b5728588d642404ff22f4000000|@17584,1,@3146| 7962:D3,48|3b650c7305ff552ccd0552508b7c24048b7f088b57048b0424ff128b7c24048b7f048b5704588d642404ff22f4000000|@17584,1,@3147| 7963:D3,288|3b650c7305ff552ccd0989c7538b7424288b5424248b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c700f48241b16a016a016a0189e3e879c1f6ffff3424ff7424088b7424408b5424348b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707148741b157ff742418f604240175788b34248b3e89f6ff7604ff37ff7704ff7708ff770cff7710ff7714ff7424548b7c24548b7424508b54244c8b4c24488b5c24448b442464ff742410ff742410ff742410ff742410ff7424105756ff74244052515350ff7424588b44244c8b5c2448e8bf0400008d64241c5e8934243b650c7303ff552ceb828d64240c5a8b7c24148b47288b7c2410897c243883c438ff22f4000000|@17595,1,@3157|58,0,@7964 71,1,@6921 124,0,@7967 237,1,@7968 7964:D3,580|3b650c7305ff552ccd0d50528b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248b7604897704c7074c8541b1578b7c24088b3f8d1c7d0100000083fb01750abf48cb68b1e98c00000089df83c71489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87bb01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf48cb68b1b9150000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0ed1e9f3a48062ffbf89d78b378d1c750100000083fb01750abff00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870901000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b7c24048b47085e5f8b570cff742404bb03000000894c2404895424088974240ce95d0000008d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@17589,1,@3151|47,0,@7965 71,0,@17587 91,0,4 112,0,16777215 170,0,0 179,0,@17587 184,0,10 235,0,@15144 255,0,4 276,0,16777215 334,0,0 360,0,@15144 365,0,43 418,0,3 451,0,0 489,0,0 496,0,0 503,0,0 509,0,0 530,0,1 547,1,@7966 556,0,@9465 570,0,@9465 7965:D3,24|3b650c7305ff552ccd0589c38b4204e9345df9fff4000000|@17586,1,@3149|16,1,@7220 7966:D3,392|3b650c7305ff552ccd0950538b7c24048b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9a00000008b3f8b3781feec01c0b075058b4708eb0e8d642408b8483366b18b5d04ff238b542414ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74240c8b5424108b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c8970088978048b3c2489fe89388b5424048b7a0c89d28b523089f683fe038d6424087508c70703000000eb008b3c24897c240c83c40cff22f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b4708e910ffffff8d642408b8483366b18b5d04ff23f4|@17588,1,@3150|36,0,@4656 87,0,0 97,0,@10769 112,0,@4656 128,0,@9999 248,0,1 283,0,@4656 334,0,0 348,0,@11247 363,0,@4656 382,0,@9999 7967:D3,72|3b650c7305ff552ccd05528b3c248b5708ff128b34248b7e0489fa8b0f8b7d008d7ff43b7d087305ff5528cd07897d00c747fc02000000894f04890789d68d642404893ec3f40000|@17590,1,@3152| 7968:D3,960|3b650c7305ff552ccd0950538b7c242c8b3f8d3c7d01000000578b7c24048b3f8d1c7d010000008b342489f783fe01750c8d6424048b3c24e9a900000083fb01750d8d6424048b7c242ce99700000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f873403000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c243089f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b34248d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f877d02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7576a016a016a016a016a016a01ff742444ff74245c8b4424448b7c24408b74243c8b5424388b4c24348b5c244857565251ff742438ff74243454830424205389c38b5424248b442420ff128d642408ff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8d64241c8937578b0424e8bb0100008b7424348b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24188b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a045f893abeffffffff8b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408937be2c0268b18b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089318b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04c706050000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c5a8957088977048b34248937578b5424108b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c248978048b7c24048938ff128b7d008d7ff83b7d087303ff5528897d00c747fc010000005e8d64240889378b742430893eb801000000c234008d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f400|@17594,1,@3156|93,0,4 114,0,16777215 172,0,0 245,0,@9551 262,0,4 283,0,16777215 341,0,0 533,1,@7969 572,0,0 585,0,0 624,0,2 657,0,0 696,0,-1 729,0,@15112 795,0,2 923,0,0 935,0,@9465 949,0,@9465 7969:D3,36|3b650c7305ff552ccd018b00ff3424bb01000000c74424040ccc68b1e9b39fe6fff40000|@17593,1,@3155|16,0,0 24,0,@17591 29,1,@4949 7970:D3,248|3b650c7305ff552ccd0953ff742408f6442404010f85d40000008b7424048b3e89f6ff76048b1789d681fa9400c0b00f859f00000081fe9400c0b00f85850000008b7f088b7714f7c601000000750d8b368b7604c70603000000eb008b7718f7c6010000007558ff368b470c6a016a0154bb14cc68b1e8c128f5ffff34248b442408e8c145fcff8b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378d64240c8b3424893e8d642404ba01000000eb05ba01000000eb138d64240cb8483366b18b5d04ff23ba010000005e891424897424043b650c7303ff552ce921ffffff5883c404c20400f40000|@10026,1,@3154|43,0,@4613 55,0,@4613 86,0,1 114,0,@17592 119,1,@6630 131,1,@7517 162,0,0 185,0,0 192,0,0 203,0,@9999 213,0,0 7971:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3153|11,0,0 7972:D3,5404|8d7c24943b7d0c7305ff5530cd0d5250538b7c24288b5424248b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706e0a141b18b7c24288b4c24248b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897a04c70290a241b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24088b3f83ff050f85900100008b7c24088b7f04ff37ff7704ff7708ff770cff7710ff7714be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b54244cb801000000ff1289c7578b54244cb801000000ff1289c7578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424288977088b742408897704c70740a341b1578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240889770c8b74240c8977088b742404897704c707d8a341b1576a016a016a016a016a016a01ff7424508b7c24788b7424708b54246c8b4c24688b5c24648b44245c57ff74242056525153548304241c508b5424208b4424648b5c2440e865feffff8d642404ff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8d642420893757ba34ce68b18b7c24508b74244cff7424045756ff7424248b4424308b5c2418e80d16000089c7578b3c24ff77148b7c24048b57088b7c24048b7f14be01000000e90c0e00008b7c24088b3f83ff030f851a0200008d6424048b7c2404ff77048b7c2408ff77088b7c240cff770c683c4966b1b815000000e8b5cde4ff8b1424e849bde6ff8d6424048b50188b7c24308b77188b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c707485742b1578b50208b7c24348b77208b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c707905742b157ff70108b50308b7c243c8b77308b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c707d85742b1578b7c2440ff77148b7c24448b5f2cff7008ff700c8b4828ff70048b701c8b7c24508b55008d52f03b55087305ff5528cdcb895500c742fc03000000894208897a04c702205842b18b7d008d7fc83b7d087305ff5528cd4e897d00c747fc0d0000008b442410894730895f2c894f288957248b54241889572089771c8b74241c8977188b74240c8977148b7424148977108b74240489770c8b7424088977085e8d64241c897704c70754e768b1578b7c24188b47048b7c243c8b7424388b5424308b4c24288b5c24205756ff74240852ff742414515389c28b4424248b5c242cff12ff742418ff742410ff742418ff742448ff742448ff7424148b7424488b54241c8b4c24408b5c243c8b442438894424388b442410895c243c8b5c240c894c2440895424448b542414897424488b3c24897c244c8b7c2404897c24508b7c2408897c245483c434e9affbffff8d6424348b7c24088b3f83ff070f85bd0300008d6424048b7c2404ff77048b7c2408ff77088b7c240cff770cb815000000e891cbe4ff89c757ba3c4966b18b0424e81dbbe6ff89c7578b3c24ff770c8b7c2404ff77088b7c2408ff77288b7c240c8b57188b7c24448b77188b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707085942b1578b7c24108b57208b7c24488b77208b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707505942b1578b7c24148b77308b7c244c8b7f308b5d008d5bf03b5d087305ff5528cdc0895d00c743fc03000000897308897b04c703985942b18b7c244cff77148b7c24508b4f2c8b7c24508b77108b7c24508b55008d52f03b55087305ff5528cdca895500c742fc030000008b442418894208897a04c702e05942b18b7d008d7fc83b7d087305ff5528cd4e897d00c747fc0d000000895f30894f2c8b4c240c894f288957248b542404895720c7471c8ce768b18b5424088957188b14248957148d6424108977108b74240489770c5e8d642408897708c74704e0e768b1c70734e868b1578b7c241cff77048b7c24448b7424408b5424388b4c24348b5c24308b4424285756ff74240c525153508b54241c8b4424308b5c2434ff128d642408b815000000e8dbc9e4ff89c757ba3c4966b18b0424e867b9e6ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707205b42b1578b442408bb943966b1e8e797e6ff89c78b7f048b742408893e8b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c70701000000578b7c24388b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b542444b801000000ff1289c7578b542444b801000000ff1289c7578b7c240c8b3f83ff030f85970000008b7c240c8b77048b7c240c8b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c240c8b742434893ec74604100666b1c74608010000008b7c2408897e0c5f897e105f8d642404897e14b80100000083c420c220008b7c24088b3f83ff010f85070400008b7c24088b7f04ff37ff7704ff7708ff770cff7710ff7714ff7718ff771c8b7c24488b572c8b442418ff1289c7f7c7010000000f856e0100008b378b3eff7708ff760c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b742414893e6a016a016a016a016a016a01ff74244c8b7c24748b7424708b54246c8b4c24688b5c24608b44245857565251ff74243c53548304241c508b5424208b4424608b5c2468e823f7ffff8d642404ff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8d6424188937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742434897704c707e06542b1578b54245cb801000000ff1289c66a016a018b7c245c8b54244cff742408ff7424245756ff7424485483042414528b4424288b5c2430e8d3cf0000ff3424ff7424088b7c241c8b5f08b801000000e8c320010089c383fb0175035feb0e8b0424e8bd21010089c78d6424048b74241c893e8b7c24188b77088b7c24188b5f14bf01000000e9370300008d6424048b7c24148b3f8d1c7d0100000083fb01750abf74f468b1e98c00000089df83c71289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870802000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf74f468b1b9130000008d77048d7a04d1e9f3a489d98b7c24148d77048d7a0dd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abac80768b1e98d00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f875601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec80768b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b742424897704c70784b842b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460401000000c706010000008b44244057ff74240456bb03000000e8e7ecffff8d6424048b742430bfa0ed67b18b1789168b57048956048b57088956088b570c89560c8b57108956108b7f14897e14b80100000083c428c220008d64242cb8780566b18b5d04ff238d64242cb8780566b18b5d04ff238d6424088b3c248b7f048b3424ff76088b7424048b4e0c8b7424248b5e308b5424208b75008d76ec3b75087305ff5528cd8e897500c746fc04000000894e0c8956088b542404895604c706b0b842b15756b8880768b1e8a6e9f9ff89c75e8d642404893e83ff0175378d6424048b742408bfa0ed67b18b1789168b57048956048b57088956088b570c89560c8b57108956108b7f14897e14b801000000c220008d6424048b3f8b7424088b7f088b1789168b57048956048b57088956088b570c89560c8b57108956108b7f14897e14b801000000c22000f7c60100000075288b4e0489fa83c202710e8d64244cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc8ebd083ef0103df710e8d64244cb8f80466b18b5d04ff238b7c24188b7f142bdf710e8d64244cb8f80466b18b5d04ff2383c30183fb017d0e8d64244cb8a84566b18b5d04ff23ff342457b801000000e87c1f01008b7c24188b5f08e82420010089c78b742430893e8b7c24148b4708ff742424ff7424448b5c243ce8a42001008b7c242c8907e80d23010089c283fa01750abfe43c66b1e995000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d64244cb8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d64244cb8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa010f859e0100008067ffbf578b7c241c8b77148b7c24188b7f143bf77d0489f7eb00578b542470b801000000ff1289c68b7d008d7fe03b7d087305ff5528cd40897d00c747fc070000005a8957188b54241c8957148b5424048957108b54241889570c5a8d642404895708897704c707e4bd42b1578b7c2414ff378b7c2418ff77048b7c241cff770c8b542478b801000000ff1289c7578b7c24248b77108b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c7076cbe42b1578b7c24108b3f83ff030f85970000008b7c24108b77048b7c24108b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c24108b742468893e8b7c240c897e04c74608010000008b7c2408897e0c5f897e105f8d642408897e14b80100000083c450c220008b0a8b5a04894c77fe89f183c102710e8d64244cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e928fefffff6c20175288b5a0489f183c102710e8d642440b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd383ee0103fe57710e8d642444b8f80466b18b5d04ff238b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742430897704c707a0be42b16a016a018b7424608b54245057ff74243056ff742424ff74244c5483042414528b4424308b5c242ce88fc80000ff34248b7c24088b742428893e8b7c243483ff030f85940000008b5c240c2b5c2410710e8d642450b8f80466b18b5d04ff2383c30183fb017d0e8d642450b8a84566b18b5d04ff23ff3424ff742414b801000000e8f620010089c78d642404578b7c24148b4708ff7424448b5c2434e88f21010089c7578b4424048b1c24e8bc22010089c78b742430893e8b3c2483ff01750e8d642414bfe43c66b1e90c020000bf010000008b3424e96d0100008b54246cb801000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54241489570c5a895708897704c7075cc142b1578b7c2414ff378b7c2418ff77048b7c241cff770c8b7c2420ff77108b942480000000b801000000ff1289c7578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424148977088b742404897704c70790c142b1578b7c24148b3f83ff030f85970000008b7c24148b77048b7c24148b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c24148b742470893e8b7c2410897e04c74608010000008b7c240c897e0c5f897e105f897e14b80100000083c460c22000f7c60100000075288b4e0489fa83c202710e8d642454b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd081ffffffff017c0e8d642454b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be010000005a83c41083fa010f85730100008067ffbf578b542460b801000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c5a8d642404895708897704c707c4c142b1578b7c2404ff378b7c2408ff77048b7c240cff770c8b7c2410ff77108b542470b801000000ff1289c7578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424148977088b742404897704c7072cc242b1578b7c24148b3f83ff030f85970000008b7c24148b77048b7c24148b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c24148b742460893e8b7c2410897e04c74608010000008b7c240c897e0c5f897e105f897e14b80100000083c450c220008b0a8b5a04894c77fe89f183c102710e8d642440b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e953fefffff400|@17946,1,@3390|59,0,@7973 105,0,@7974 181,0,0 219,0,0 233,0,0 282,0,@7975 334,0,@7976 488,0,@17604 519,1,@7978 547,0,0 597,0,@10267 602,0,10 607,1,@4893 615,1,@4989 667,0,@8109 716,0,@8110 768,0,@8111 840,0,@8112 941,0,@17810 1150,0,10 1155,1,@4893 1163,0,@10267 1171,1,@4989 1246,0,@8115 1299,0,@8116 1352,0,@8117 1419,0,@8118 1475,0,@17812 1517,0,@17816 1523,0,@17820 1588,0,10 1593,1,@4893 1601,0,@10267 1609,1,@4989 1646,0,@8123 1656,0,@10068 1661,1,@4949 1709,0,0 1722,0,0 1761,0,2 1794,0,0 1838,0,0 1852,0,0 1912,0,@10109 1966,0,0 2021,0,0 2040,0,@9473 2047,0,0 2071,0,0 2378,0,@8128 2388,0,0 2437,1,@8129 2456,0,0 2461,1,@8184 2479,1,@8185 2510,0,0 2542,0,@17932 2562,0,4 2583,0,16777215 2641,0,0 2650,0,@17932 2655,0,9 2706,0,@15157 2726,0,4 2747,0,16777215 2805,0,0 2831,0,@15157 2836,0,23 2891,0,@8186 2926,0,3 2959,0,0 2997,0,0 3004,0,0 3011,0,0 3017,0,0 3032,0,1 3037,1,@7966 3050,0,@14902 3089,0,0 3104,0,@9465 3118,0,@9465 3202,0,@8187 3209,0,@15155 3214,1,@7284 3241,0,@14902 3280,0,0 3335,0,0 3365,0,@9455 3402,0,@9455 3427,0,@9455 3449,0,@10224 3463,0,0 3468,1,@8189 3480,1,@8190 3512,1,@8191 3523,1,@8193 3535,0,@10109 3545,0,0 3574,0,@9455 3601,0,16777215 3612,0,@11058 3667,0,0 3676,0,0 3722,0,0 3794,0,@8194 3824,0,0 3878,0,@8195 3934,0,@10109 3988,0,0 4043,0,0 4069,0,0 4093,0,0 4124,0,@9455 4172,0,@9455 4210,0,@9455 4252,0,@8196 4297,1,@8129 4342,0,@9455 4364,0,@10224 4381,0,0 4386,1,@8197 4413,1,@8198 4428,1,@8199 4453,0,@10109 4463,0,0 4480,0,0 4530,0,@8200 4570,0,0 4619,0,@8201 4675,0,@10109 4729,0,0 4784,0,0 4810,0,0 4830,0,0 4863,0,@9455 4890,0,16777215 4901,0,@11058 4956,0,0 4965,0,0 4992,0,0 5046,0,@8202 5083,0,0 5132,0,@8203 5188,0,@10109 5242,0,0 5297,0,0 5323,0,0 5343,0,0 5374,0,@9455 7973:D3,156|3b650c7305ff552ccd05528b3c248b7f088b5720ff1289c7f7c7010000007571ff378b7c24048b5704b801000000ff1289c78b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f4|@17597,1,@3159|42,0,0 150,0,0 7974:D3,156|3b650c7305ff552ccd05528b3c248b7f088b5730ff1289c7f7c7010000007571ff378b7c24048b5704b801000000ff1289c78b75008d76f83b75087305ff5528cd80897500c746fc01000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f4|@17597,1,@3160|42,0,0 150,0,0 7975:D3,132|3b650c7305ff552ccd0552ff308b78048b70088b480c8b58108b5424048b52088b45008d40e83b45087305ff5528cdce894500c740fc0500000089581089480c8970088978048b3c2489388d642404ff128b34248b7e0489fa8b0f8b7d008d7ff43b7d087305ff5528cd07897d00c747fc02000000894f04890789d68d642404893ec3f4|@17598,1,@3161| 7976:D3,64|3b650c7305ff552ccd058b45008d40ec3b45087305ff5528cd04894500c740fc040000008b7a0c89780c8b7a088978088b7a04897804c7002ca441b1c3f40000|@17603,1,@3163|56,0,@7977 7977:D3,136|3b650c7305ff552ccd058b7a0c3bc77d058b5204ff228b7a088b3ff7c701000000754c8b178b77048b4a048b1983fb0175338b490c3bc8751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1d89f73b650c7305ff552ccd81ebb6b860cd68b18b5d04ff23bf0100000083ff01750ab8b07766b18b5d04ff238b07c3f400|@17602,1,@3162|102,0,@17599 112,0,0 122,0,@10986 7978:D3,1840|8d7c24b03b7d0c7305ff5530cd0d89df89d35057be010000008b7d008d7ff83b7d087305ff5528cd48897d00c747fc010000408937c70740ce68b18b34248b7d008d7ff83b7d087305ff5528cd48897d00c747fc01000040893757bf1500000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b8003b66b1f3ab89f78b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706030000008b7d008d7ff83b7d087305ff5528cd48897d00c747fc010000408937578b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704003b66b18b3424893757bf1500000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f78b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706030000008b7d008d7ff83b7d087305ff5528cd48897d00c747fc010000408937578b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704010000008b34248937576a016a016a016a018b7c24288b3f83ff010f859a0000008b7c2428ff77048b7c242cff77086a016a016a016a016a016a016884d068b18b44245c8b7c24588b7424608b54245c8b4b048b5c2454ff74241c6a0168100666b15483042410ff74245c57ff74245cff742464ff74245cff74245856ff74246cff74246852515389c38b5424408b442460e8980c00008d642404595a8d6424045e5f8d64240c890c248954240489742408897c240ce92c0100008b7c24288b3f83ff050f859a0000008b7c24288b7f04ff37ff7704ff7708ff770cff77106890d068b18b7c24508b74244c8b5424548b4c24508b5b048b442448ff74240cff742408ff74241c5768100666b1ff74245456ff742454ff74245cff742454ff74245052ff742464ff7424605153508b5424448b4424548b5c244ce8a48d000089c78d6424188b378934248b7704897424048b770c897424088b7f10897c240ce9830000008b7c2428ff77048b7c242cff77088b7c2430ff770c6a016a016a016a016a016a018b7c245c8b74245c8b5424588b4b048b5c2460ff7424185768100666b1548304240c56ff7424605251ff742464ff74246cff742464ff742460538b4424548b5c2450e86f760000595a8d6424045e5f8d642410890c248954240489742408897c240cff3424ff742408ff742410ff7424186820e568b18b442410bb01000000e8b282e6ff89c28b7424348b7d008d7ff83b7d087305ff5528cd44897d00c747fc0100004089378b75008d76f83b75087305ff5528cd84897500c746fc0100004089166a016a01ff742438ff742440ff74243cff74243c5756b8010000008d5c2418e8d8a40000ff34248b54240883fa01750abee43c66b1e993000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642448b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642448b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175228067ffbf89fe8b3c2483ff01750ab9e43c66b1e9c8000000bf010000008b1424eb2e8b0a8b5a04894c77fe89f183c102710e8d642448b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebabf6c20175288b5a0489f983c102710e8d642448b8f80466b18b5d04ff2389da89cf3b650c7305ff552ccdc4ebd381ffffffff017c0e8d642448b8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba010000008b0c2483f9010f857e0100008067ffbf89f98b7c24588b55008d52ec3b55087305ff5528cdc2895500c742fc040000008b5c2440895a0c897208897a04c702ac5642b18b7efcc1e708c1ef0783cf018b71fcc1e608c1ee0783ce013bfe7507bf03000000eb05bf0100000083ff0375068b7c240ceb2a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008957088b74240c897704c707145742b1578b7c241c8b3f83ff030f85970000008b7c241c8b77048b7c241c8b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c241c8b45008d40e43b45087305ff5528cd80894500c740fc060000008b7424448970145e8970108b74241089700c5e8970088b742410897004893883c444c210008b198b4104895c57fe89d383c302710e8d642448b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6e948fefffff4000000|@17808,1,@3294|21,0,0 55,0,@17605 92,0,10 142,0,@10093 181,0,1 243,0,@10093 254,0,10 304,0,0 343,0,1 405,0,0 465,0,@17641 499,0,@9473 552,1,@7981 629,0,@17642 670,0,@9473 720,1,@8085 819,0,@9473 861,1,@8057 908,0,@17791 917,0,0 922,1,@4949 1011,0,0 1020,1,@8100 1037,0,@10109 1047,0,0 1076,0,@9455 1103,0,16777215 1114,0,@11058 1169,0,0 1178,0,0 1202,0,@10109 1212,0,0 1242,0,@9455 1287,0,@9455 1314,0,16777215 1325,0,@11058 1380,0,0 1389,0,0 1456,0,@8107 1489,0,1 1496,0,0 1549,0,@8108 1605,0,@10109 1659,0,0 1714,0,0 1808,0,@9455 7979:D3,1860|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b1089d78b1283fa010f85f90100008b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70748ce68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe8b3f83ff030f85f90100008b7e0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bf5c02c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8ce68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d06b8b4ab66b1c389f28b3683fe057506b82ccf68b1c389fe83ff037d06b8b4ab66b1c38b7a04ff720883ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be2cb566b1e9b401000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c7578b74240483ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742408893757bf7c02c0b08b17b89ccf68b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8cf68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706dccf68b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fccf68b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@17640,1,@3165|21,0,@11331 50,0,@9455 91,0,@4778 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@17606 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 581,0,@9455 622,0,@4670 688,0,@9771 695,0,1 703,0,@9772 710,0,1 718,0,@9773 725,0,1 732,0,0 777,0,@11374 814,0,@10625 849,0,@11377 885,0,0 892,0,1 899,0,3 905,0,0 944,0,0 981,0,@10448 1016,0,@17613 1052,0,0 1059,0,0 1066,0,1 1072,0,0 1085,0,@11331 1100,0,@17620 1113,0,@11331 1135,0,@9455 1159,0,@11421 1180,0,@9455 1221,0,@4778 1246,0,@9455 1292,0,@4674 1299,0,@17627 1347,0,@11424 1384,0,@10448 1419,0,@17629 1454,0,@10448 1489,0,@11428 1562,0,@10448 1597,0,@17631 1635,0,@11431 1671,0,0 1678,0,0 1685,0,1 1691,0,0 1724,0,0 1761,0,@10448 1796,0,@17633 1832,0,0 1839,0,0 1846,0,1 1852,0,0 7980:D3,20|3b650c7305ff552ccd01bf3c00c0b08b17ff22f4|@9981,1,@3164|11,0,@4602 7981:D3,1200|8dbc2470ffffff3b7d0c7305ff5530cd0d525053b815000000e81ea9e4ff89c757ba3c4966b18b0424e8aa98e6ff89c7ff7718ff7720ff7710ff7730ff7714ff772cff7708ff77188b5424608b4c24708b5c245c8b75008d76e43b75087305ff5528cd8e897500c746fc06000000895e14894e1089560c8b14248956088b542404895604c70650b841b156ff770cff77208b54246c8b4c247c8b5c24688b75008d76e43b75087305ff5528cd8e897500c746fc06000000895e14894e1089560c8b14248956088b542404895604c706a8be41b156ff7728ff77308b5424788b8c24880000008b5c24748b75008d76e43b75087305ff5528cd8e897500c746fc06000000895e14894e1089560c8b14248956088b542404895604c706a0bf41b156ff77248b7d008d7fc83b7d087303ff5528897d00c747fc0d0000008b7424308977308b74242889772c8b7424048977288b34248977248b742438897720c7471c40d268b18b74243c8977188b74242c8977148b7424348977108b74241089770c8b74241c897708c747049cd268b1c707f8d268b157ff74244cffb42494000000f6442404010f855c0100008b7c2404ff378b7c2408ff7704ffb424a4000000ffb42498000000ffb424ac000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb424bc000000ffb424a0000000ffb424a00000008bbc24a00000008bb4249c0000008b9424980000008b8c24940000008b9c248c0000008b5b04ff742428ff742428ff742428ff742428ff742474ff742474ffb4249c000000ffb42494000000ffb42490000000ffb42498000000ffb42494000000ffb424a8000000ff742470ff742478ffb424a0000000ff742454ff742454ff742454ff742454ff742454ff742454ff742454ffb424b0000000ffb424b000000057ffb424a0000000ffb424c4000000ffb424bc000000ffb424fc00000056525153ffb424d0000000ffb424d00000008b8424bc0000008b9c24c0000000e8a40a000089c28d64242c5e8d642404891424897424043b650c7303ff552ce999feffff8d64244c8b7424508b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24408b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7c243cff378b5c24408b7c243c8b7424288b542430575652b801000000e80f37000089c7578b7c240c8b3f83ff030f85970000008b7c240c8b77048b7c240c8b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb048b7c240c8b742450893ec74604100666b1c74608010000008b7c2408897e0c5f897e105f8d642404897e14b80100000083c410c24000f4000000|@17767,1,@3269|21,0,10 26,1,@4893 34,0,@10267 42,1,@4989 134,0,@7982 207,0,@7988 283,0,@7991 352,0,@17653 394,0,@17657 400,0,@17661 740,1,@7997 814,0,0 827,0,0 866,0,2 899,0,0 964,0,0 969,1,@8030 1027,0,@10109 1081,0,0 1136,0,0 1155,0,@9473 1162,0,0 1186,0,0 7982:D3,116|3b650c7305ff552ccd0589d78b108b700452568b75008d76f43b75087305ff5528cd80897500c746fc020000008b5704895604c706d8b841b18b57088b4f0c8b5f108b471468dcd068b1515350ff7424188b5c24148b442418c74424140c1368b1895424188974241ce9860000008d642408f400|@17650,1,@3171|53,0,@7983 70,0,@17644 93,0,@15268 106,1,@7985 7983:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3166| 7984:D3,16|3b650c7305ff552ccd018b4010c3f400|@17645,1,@3167| 7985:D3,904|3b650c7305ff552ccd0950538b5424208b442404ff1289c783ff0175198b5424248b4424045b8d6424048b3c24897c241c83c41cff228b7424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e0bc41b1578b54241c8b442404ff1289c783ff0175068b7c2414eb138b178b77048b0a83f9010f85ef0200008b7a04578b7c24248b3f8d1c7d0100000083fb01750abfcc2e67b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879702000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c242489d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a01288062ffbf89d78b378d1c75010000008b74240c8b368d3475010000005683fb01750d8d6424048b7c240ce99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c101000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b74240c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf60d168b1e98f00000089de83c64e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871101000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be60d168b1b94f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b4424148b7424045a8d642404bb03000000894c241c89542420897424248b7c2408897c241883c418e97e0000008d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff2389f73b650c7305ff552ccd80e9e5fcfffff40000|@17649,1,@3170|89,0,@7986 156,0,@12628 176,0,4 197,0,16777215 255,0,0 376,0,4 397,0,16777215 455,0,0 518,0,@17647 538,0,4 559,0,16777215 617,0,0 643,0,@17647 648,0,39 701,0,3 734,0,0 772,0,0 779,0,0 786,0,0 792,0,0 810,0,1 838,1,@7987 847,0,@9465 861,0,@9465 875,0,@9465 7986:D3,24|3b650c7305ff552ccd0589c38b4204e96486f8fff4000000|@17646,1,@3168|16,1,@7127 7987:D3,392|3b650c7305ff552ccd0950538b7c24048b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9a00000008b3f8b3781feec01c0b075058b4708eb0e8d642408b8483366b18b5d04ff238b542414ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74240c8b5424108b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c8970088978048b3c2489fe89388b5424048b7a0c89d28b523089f683fe038d6424087508c70703000000eb008b3c24897c240c83c40cff22f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b4708e910ffffff8d642408b8483366b18b5d04ff23f4|@17648,1,@3169|36,0,@4656 87,0,0 97,0,@10769 112,0,@4656 128,0,@9999 248,0,1 283,0,@4656 334,0,0 348,0,@11247 363,0,@4656 382,0,@9999 7988:D3,116|3b650c7305ff552ccd0589d78b108b700452568b75008d76f43b75087305ff5528cd80897500c746fc020000008b5704895604c70630bf41b18b57088b4f0c8b5f108b47146830d268b1515350ff7424188b5c24148b442418c7442414448267b1895424188974241ce92efaffff8d642408f400|@17650,1,@3174|53,0,@7989 70,0,@17651 93,0,@13733 106,1,@7985 7989:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3172| 7990:D3,20|3b650c7305ff552ccd018b388b4708c3f4000000|@11926,1,@3173| 7991:D3,116|3b650c7305ff552ccd0589d78b108b700452568b75008d76f43b75087305ff5528cd80897500c746fc020000008b5704895604c70628c041b18b57088b4f0c8b5f108b47146838d268b1515350ff7424188b5c24148b442418c7442414880768b1895424188974241ce936f9ffff8d642408f400|@17650,1,@3177|53,0,@7992 70,0,@17652 93,0,@15155 106,1,@7985 7992:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3175| 7993:D3,16|3b650c7305ff552ccd018b400cc3f400|@17645,1,@3176| 7994:D3,24|3b650c7305ff552ccd01b848d268b18b5d04ff23f4000000|@17645,1,@3178|11,0,@17654 7995:D3,24|3b650c7305ff552ccd01b8a4d268b18b5d04ff23f4000000|@17645,1,@3179|11,0,@17658 7996:D3,24|3b650c7305ff552ccd01b800d368b18b5d04ff23f4000000|@17645,1,@3180|11,0,@17662 7997:D3,4876|8dbc247cffffff3b7d0c7305ff5530cd0950538b7c24048b3fbe18c141b181c62a0000008d74befcffe6e92b000000909090e9c2020000909090e9d7080000909090e9e0080000909090e96c090000909090e9830b00009090908b7c2404ff77048b7424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757ffb4248c0000008bb4248c0000008b94249c0000008b8c24980000008b9c24940000008b7d008d7fe03b7d087305ff5528cd4e897d00c747fc070000008b442404894718895f14894f1089570c8977088b34248977048d642404c70738d441b1576a016a016a01b80100000089e3e81f08f6ffff3424ff7424088b4c24108bbc249c0000008b77208b9424980000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c707bcd541b1578bbc24a00000008b7f308bb424980000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c70018d641b1ffb42494000000ffb424940000008bb424940000008b9424900000008b8c248c0000008b9c24880000008b7d008d7fc83b7d087305ff5528cd4f897d00c747fc0d000000894730895f2c894f288957248b542408895720c7471c40d268b18977185e8977145e8d6424048977105e89770c8b742410897708c747049cd268b1c707f8d268b1578b7c24688b7424788b5424748b4c24708b44246c8b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894314894b1089530c897308897b04c70360d641b18b7c24648b5424608b4c24748b75008d76ec3b75087305ff5528cd8e897500c746fc04000000894e0c895608897e04c7063cdd41b1ba140468b18bbc24a8000000ff342457568b442428e81652f9ff8d642404ff7424588b7c24588bb424b00000008b9424ac0000008b8c24a80000008b45008d40e03b45087305ff5528cdc6894500c740fc070000008b5c241889581889481489501089700c8978088b3c248978048d642404c70080e041b15a8d642410ff125f8d64240c8b07c28c008b7c2404ff77048b7c24088b77088b7c24088b7f0cff36ff76048bb424940000008b4d008d49ec3b4d087305ff5528cdc0894d00c741fc040000008b54240889510c8971088b742410897104c70188e241b1f7c7010000000f858b000000ff37ba980668b18bbc24880000008bb424840000008b84248c0000008b5d008d5be83b5d087305ff5528cdc7895d00c743fc05000000894310894b0c897308897b04c70394e341b18bbc2498000000578b442404e8ccadf9ff89c68d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c747086c6367b1897704c70705000000eb05bf6c6367b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70701000000578bbc249c0000008b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7c240c81ff984866b17502eb2e8b7c240c8b3f8d3c7d0100000083ff097521bf984866b18b74240c8d76048d7f0433c983c1043bc9f3a67402eb05e9430100008b7c240c81ff884566b17502eb2e8b7c240c8b3f8d3c7d0100000083ff0b7521bf884566b18b74240c8d76048d7f04b9050000003bc9f3a67402eb05e9020100008b7c240c81ff705466b17502eb2e8b7c240c8b3f8d3c7d0100000083ff077521bf705466b18b74240c8d76048d7f04b9030000003bc9f3a67402eb05e9c10000008b7c240c81ff505066b17502eb2e8b7c240c8b3f8d3c7d0100000083ff057521bf505066b18b74240c8d76048d7f0433c983c1023bc9f3a67402eb05e9800000008b7c240c81ffd86566b17502eb2e8b7c240c8b3f8d3c7d0100000083ff07751ebfd86566b18b74240c8d76048d7f04b9030000003bc9f3a67402eb02eb428b7c240c81ff54e867b17502eb348b7c240c8b3f8d3c7d0100000083ff050f8545020000bf54e867b18b74240c8d76048d7f0433c983c1023bc9f3a60f85270200008b7c240c8b3f8d1c7d0100000083fb01750abfc0d668b1e98c00000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfc0d668b1b9190000008d77048d7a04d1e9f3a489d98b7c240c8d77048d7a10d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abad4d668b1e98d00000089de83c61a89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872101000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bed4d668b1b91b0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b742418897704c707e8e441b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460401000000c706010000008b84249c00000057ff74241456bb03000000e8dff3ffffeb1c8d64241cb8780566b18b5d04ff238d64241cb8780566b18b5d04ff238b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742414897704c707010000008b45008d40e03b45087305ff5528cd80894500c740fc07000000c7401801000000c74014010000005e8970105e89700c897808c74004010000008b7c240489388bb424900000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c70714e541b18bb4248c0000008b94249c0000008b8c24980000008b9c24940000005756680c1368b168dcd068b152515389c38b442420e834efffff8b44240c83c002710e8d642414b8f80466b18b5d04ff238d642414c28c008b7c24048b7f0457ff742404e9400800008b7c24048b77048b7c24048b57088b7c24048b4f0c8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704893757ff742434ffb42498000000ffb4249c000000ffb424980000008b7c246c8b7424688b5424488b4c24588b5c24548b442464ff742408ff742408ff7424085756525153508b4424348b5c2430e8951a00008d642414588d642404c28c008b7c24048b7f04ff342457ffb42484000000ffb42484000000ffb42484000000ff742478ff742444ff742444ffb42490000000ffb42490000000ffb42490000000ffb4248c000000ffb4248c000000ff74247cff74245cffb424cc000000ffb424c8000000ffb4249c000000ffb4249c000000ffb4249c000000ffb4249c000000ffb42498000000ffb42498000000ffb42490000000ffb42480000000ffb42480000000ffb424800000008bb424800000008b9424000100008b8c24f80000008b5c247c8b4424788984248c0000008b442468899c24900000008b5c2464898c24940000008994249800000089b4249c0000008b3c2489bc24a00000008b7c240489bc24a40000008b7c240889bc24a80000008b7c240c89bc24ac0000008b7c241089bc24b00000008b7c241489bc24b40000008b7c241889bc24b80000008b7c241c89bc24bc0000008b7c242089bc24c00000008b7c242489bc24c40000008b7c242889bc24c80000008b7c242c89bc24cc0000008b7c243089bc24d00000008b7c243489bc24d40000008b7c243889bc24d80000008b7c243c89bc24dc0000008b7c244089bc24e00000008b7c244489bc24e40000008b7c244889bc24e80000008b7c244c89bc24ec0000008b7c245089bc24f00000008b7c245489bc24f40000008b7c245889bc24f80000008b7c245c89bc24fc0000008b7c246089bc24000100008b7c247489bc248800000081c488000000e9564800008d6424748b7c2404ff77048b7c24088b7f088b742408ff760cff37ff77048b7c240481ff984866b17502eb2e8b7c24048b3f8d3c7d0100000083ff097521bf984866b18b7424048d76048d7f0433c983c1043bc9f3a67402eb05e9030100008b7c240481ff884566b17502eb2e8b7c24048b3f8d3c7d0100000083ff0b7521bf884566b18b7424048d76048d7f04b9050000003bc9f3a67402eb05e9c20000008b7c240481ff705466b17502eb2e8b7c24048b3f8d3c7d0100000083ff077521bf705466b18b7424048d76048d7f04b9030000003bc9f3a67402eb05e9810000008b7c240481ff505066b17502eb2e8b7c24048b3f8d3c7d0100000083ff05751ebf505066b18b7424048d76048d7f0433c983c1023bc9f3a67402eb02eb438b7c240481ffd86566b17502eb358b7c24048b3f8d3c7d0100000083ff070f8546020000bfd86566b18b7424048d76048d7f04b9030000003bc9f3a67405e9270200008b7c24048b3f8d1c7d0100000083fb01750abfc0d668b1e98c00000089df83c71889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfc0d668b1b9190000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a10d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abad4d668b1e98d00000089de83c61a89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872101000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bed4d668b1b91b0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b742414897704c707242742b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460401000000c706010000008b84249800000057ff74241056bb03000000e8b3ecffffeb1c8d642418b8780566b18b5d04ff238d642418b8780566b18b5d04ff23ba980668b18bbc24880000008bb424840000008b8c24980000008b84248c0000008b5d008d5be43b5d087305ff5528cdc7895d00c743fc06000000894314894b108b4c2414894b0c897308897b04c703502742b18bbc2498000000578b44240ce8b8a1f9ff89c7578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742404897704c70701000000578bbc24a00000008b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89375768d4df68b18b442408bb18e068b1e8aee6f4ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542418895704c707010000008b45008d40e03b45087305ff5528cdc0894500c740fc07000000c7401801000000c74014010000005a8d64240889501089700c897808c74004050000008b3c2489388bb424900000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071c2a42b18bb4248c0000008b94249c0000008b8c24980000008b9c24940000005756680c1368b168dcd068b152515389c38b44241ce8e7e6ffff8d6424088b44240483c002710e8d64240cb8f80466b18b5d04ff238d64240cc28c00f6442404010f858f0100008b7c2404ff378b7c2408ff7704ffb4248c000000ffb4248c000000ffb4248c000000ff742448ff742448ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ffb42494000000ff742460ffb424d0000000ffb424cc000000ffb424a0000000ffb424a0000000ffb424a0000000ffb424a0000000ffb4249c000000ffb4249c000000ffb42494000000ffb42484000000ffb42484000000ffb42484000000ffb424b8000000ffb42488000000ffb424040100008bbc24b80000008bb424b40000008b94248c0000008b8c24880000008b9c24000100008b8424fc000000ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424685756525153508b8424f40000008b9c24f8000000e86a56000089c28d64246c5e8d642404891424897424043b650c7303ff552ce966feffff5883c40cc28c00f4000000|@17766,1,@3268|26,0,@7997 222,0,@7998 234,0,0 241,1,@6866 310,0,@8000 366,0,@8001 460,0,@17653 493,0,@17657 499,0,@17661 567,0,@8002 620,0,@8005 625,0,@15128 646,1,@7262 740,0,@8012 839,0,@8015 858,0,@15147 923,0,@8017 940,1,@7273 979,0,@13287 988,0,2 995,0,@13287 1033,0,0 1049,0,0 1088,0,2 1121,0,0 1166,0,@10260 1193,0,@10260 1231,0,@10222 1258,0,@10222 1273,0,2 1296,0,@10432 1323,0,@10432 1338,0,1 1361,0,@10367 1388,0,@10367 1426,0,@10712 1453,0,@10712 1468,0,1 1488,0,@14869 1519,0,@14869 1567,0,@17692 1587,0,4 1608,0,16777215 1666,0,0 1675,0,@17692 1680,0,12 1731,0,@17693 1751,0,4 1772,0,16777215 1830,0,0 1856,0,@17693 1861,0,13 1916,0,@8020 1951,0,3 1984,0,0 2022,0,0 2029,0,0 2036,0,0 2042,0,0 2060,0,1 2065,1,@7987 2076,0,@9465 2090,0,@9465 2132,0,0 2165,0,0 2172,0,0 2190,0,0 2238,0,@8021 2273,0,@15268 2278,0,@17644 2292,1,@7985 2310,0,@9455 2475,1,@8022 3026,1,@8052 3066,0,@10260 3093,0,@10260 3131,0,@10222 3158,0,@10222 3173,0,2 3196,0,@10432 3223,0,@10432 3238,0,1 3261,0,@10367 3288,0,@10367 3323,0,@10712 3354,0,@10712 3369,0,1 3403,0,@17692 3423,0,4 3444,0,16777215 3502,0,0 3511,0,@17692 3516,0,12 3567,0,@17693 3587,0,4 3608,0,16777215 3666,0,0 3692,0,@17693 3697,0,13 3752,0,@8066 3787,0,3 3820,0,0 3858,0,0 3865,0,0 3872,0,0 3878,0,0 3896,0,1 3901,1,@7987 3912,0,@9465 3926,0,@9465 3936,0,@15147 4015,0,@8067 4032,1,@7273 4072,0,0 4088,0,0 4127,0,2 4160,0,0 4200,0,@17756 4209,0,@17758 4214,1,@6634 4255,0,0 4288,0,0 4295,0,0 4316,0,2 4363,0,@8074 4398,0,@15268 4403,0,@17644 4417,1,@7985 4439,0,@9455 4830,1,@8075 7998:D3,296|3b650c7305ff552ccd0552ff308b7804ff37ff77048b570c8b4f108b7c240c8b7f188b3f8b74240c8b76188b3683c602710e8d642410b8f80466b18b5d04ff238b5c240c8b5b1889338b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706010000008b7d008d7fe03b7d087305ff5528cd46897d00c747fc07000000c7471801000000c7471401000000894f1089570c8977088b34248977048d6424045e8937ff3424578b75008d76f43b75087303ff5528897500c746fc020000008b7c240c8b7f04897e04c70674d541b18b7c240c8b57088b7c240c8b4f0c8b7c240c8b5f108b7c240c8b47145350ff7424188b5c240c8b442410894c240cc7442410dcd068b1c74424140c1368b1895424188974241ce9ebe3ffff8d642410f40000|@17665,1,@3182|55,0,@9455 104,0,0 137,0,0 144,0,0 210,0,@7999 264,0,@17644 272,0,@15268 285,1,@7985 7999:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3181| 8000:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@3183| 8001:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3184| 8002:D3,612|3b650c7305ff552ccd0d528b7c240cff77048b3c248b3f83ff0375148d6424048b7c240c8b37bf01000000e9810100008b7c2410ff378b7c2410ff378b7c2414ff77048b7c2418ff77088b7c24148b7f048b3f8d1c7d010000008b7c24088b3f8d3c7d010000005783fb01750d8d6424048b7c2408e9ab0000008b3c2483ff0175108d6424048b7c24148b7f04e9930000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87e500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c24188b7f0489d98d77048d7a04d1e9f3a489df83c708598b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc030000005a8956085a895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424088957088b542404895704c707050000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700d04166b183c410c208008d64241cb8780566b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642404b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc9ebd0575053ff7424148b7c2410ff77048b7c2414ff77088b7c2418ff770c8b7c241cff77108b7c24208b47148b4c24108b5424148b5c240c8b742424894424108b44241c8b3c24897c24148b7c2408897c241c895c24208b5c24188b7c2404897c2418894c2424c7442428030000008954242c8974240c83c40ce91a0000008d642424f400|@17674,1,@3187|39,0,0 159,0,4 180,0,16777215 238,0,0 371,0,2 409,0,@10184 424,0,@9465 456,0,@9455 586,0,1 602,1,@8003 8003:D3,692|3b650c7305ff552ccd0950538b7c2420ff378b7c2424ff77048b7c2428ff77088b7c24288b3f8d3c7d01000000578b7c240c8b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2408e9aa00000083fb01750d8d6424048b7c2428e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871402000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242c89f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b75008d76f03b75087303ff5528897500c746fc030000008b7c2404897e088b7c2408897e048b3c24893e8b7c2428ff378b7c242c8b3f83c702710e8d64241cb8f80466b18b5d04ff238b54242c893a8b7c243883ff0375478b7c243c8b45008d40e43b45087305ff5528cdc0894500c740fc060000008970148978108b7c241489780c8b3c24897808c74004943966b18b7c24188938e8432ff9ff89c7eb458b7c243c8b45008d40e43b45087305ff5528cdc0894500c740fc060000008970148978108b7c241489780c8b3c24897808c74004943966b18b7c24188938e8c42ff9ff89c7578b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b7c2408893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b3424897704c707070000008b74242c8b5c24042bde710e8d642420b8f80466b18b5d04ff2383c3018b44242857e8700000008b7c242c8b5c24042bdf710e8d642420b8f80466b18b5d04ff2383c3018b7d008d7ff83b7d087305ff5528cd08897d00c747fc010000008b342489378b44242457e82a0000005883c41cc220008d642418b8780566b18b5d04ff23f4|@17673,1,@3186|114,0,4 135,0,16777215 193,0,0 318,0,@9455 394,0,@10068 405,1,@7249 465,0,@10068 476,1,@7250 510,0,0 557,0,3 578,0,@9455 596,1,@8004 617,0,@9455 666,1,@8004 682,0,@9465 8004:D3,392|3b650c7305ff552ccd09ff308b3c248b3f8b3783fe030f855b0100008b77048b40048b7efc89fac1e708c1ef0783cf013bdf7d2d8d64240489d7c1e708c1ef0783cf013bdf720ab8003566b18b5d04ff238b7c2404897c5efeb801000000c20400c1e208c1ea0783ca0183ea016bd203710e8d642404b8f80466b18b5d04ff2383c20189df83c702710e8d642404b8f80466b18b5d04ff233bd77e0489d7eb0083ff017d098d642404e9bf00000081ffffffff010f8daf00000089f98d147d02000000f7da0355003b550872053b55007205ff5528cd4b895500d1ef897afcc642ff4089d7d1e9f3ab8b4efcc1e108c1e90783c9018b7afcc1e708c1ef0783cf013bcf7e0e8d642404b894d368b18b5d04ff2389d7d1e9f3a58b7d008d7ff43b7d087305ff5528cd0c897d00c747fc02000000895704c707030000005e893e8b7afcc1e708c1ef0783cf013bdf720ab8003566b18b5d04ff238b7c2404897c5afeb801000000c204008d642404b8383066b18b5d04ff238d642404b8c0d368b18b5d04ff23f40000|@17672,1,@3185|72,0,@10015 90,0,0 119,0,@9455 143,0,@9455 176,0,16777215 266,0,@17666 312,0,1 336,0,@10015 354,0,0 366,0,@9964 380,0,@17668 8005:D3,576|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d778b520489f0ff1289c78b4f0489ce8b1183fa05752e8b4108ba8c5f68b168dcd468b1bb14d568b1e8a344fbff89c783ff037507b803000000eb05b80100000083f002c389f78b1789d683fa05750ab8508f67b18b5d04ff2383fe0175148b7f088b3783fe0375068b7f048b07c38b4704c38b7f048b07c32bf7710ab8f80466b18b5d04ff2383c6018b7a088b3f8b0f83f90175398b7f048b5ffc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b7c77feeb05bf003b66b1eb378b7f048b5ffc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b7c77feeb05bf003b66b18b0f83f90375228b7f043bfe7c0ab81cd568b18b5d04ff2389fe3b650c7305ff552ccd44e95bffffff8b1789d683fa0775718b7f048b570489d68b0a83f905752e8b4208ba8c5f68b16864d568b1bb6cd568b1e87343fbff89c783ff037507b803000000eb05b80100000083f002c389f78b1789d683fa05750ab8508f67b18b5d04ff2383fe0175148b7f088b3783fe0375068b7f048b07c38b4704c38b7f048b07c383fe0175718b7f048b570489d68b0a83f905752e8b4208ba8c5f68b16874d568b1bb7cd568b1e8fd42fbff89c783ff037507b803000000eb05b80100000083f002c389f78b1789d683fa05750ab8508f67b18b5d04ff2383fe0175148b7f088b3783fe0375068b7f048b07c38b4704c38b7f048b07c3b884d568b18b5d04ff23f4000000|@17688,1,@3194|46,0,@16444 51,0,@17675 56,0,@17677 61,1,@7438 73,0,1 80,0,0 100,0,@13866 145,0,@9455 204,0,@9990 220,0,@10093 261,0,@9988 277,0,@10093 296,0,@17678 350,0,@16444 355,0,@17681 360,0,@17682 365,1,@7438 377,0,1 384,0,0 404,0,@13866 468,0,@16444 473,0,@17683 478,0,@17684 483,1,@7438 495,0,1 502,0,0 522,0,@13866 563,0,@17685 8006:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@17676,1,@3188|11,0,2 8007:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@17676,1,@3189|11,0,1 8008:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@17676,1,@3190|11,0,2 8009:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@17676,1,@3191|11,0,1 8010:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@17676,1,@3192|11,0,2 8011:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@17676,1,@3193|11,0,1 8012:D3,192|3b650c7305ff552ccd0552ff308b7804ff378b47048b7c24088b5f18e8b300000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404ff3424578b75008d76f43b75087303ff5528897500c746fc020000008b7c240c8b5704895604c70640e241b189ff8b570889ff8b4f0c89ff8b5f1089ff8b47145350ff7424188b5c240c8b442410894c240cc744241030d268b1c7442414448267b1895424188974241ce90cd8ffff8d642410f4000000|@17689,1,@3197|29,1,@8013 113,0,@8014 159,0,@17651 167,0,@13733 180,1,@7985 8013:D3,216|3b650c7305ff552ccd09a8010f85bc0000008b38ff7004ff378b77048b4f0c8b47108b3b89fa83c202710e8d642408b8f80466b18b5d04ff2389138b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04c702010000008b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000c7471801000000c7471401000000894710894f0c8957088977048b342489378d642404578b442404e85bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4000000|@10030,1,@3195|48,0,@9455 90,0,0 123,0,0 130,0,0 207,0,0 8014:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3196| 8015:D3,204|3b650c7305ff552ccd058b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c70668e341b18b4d008d49f43b4d087305ff5528cd45894d00c741fc02000000894104c701070000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b42088b520c5251ff742408bb030000008974240ce9bcd9fffff4000000|@17691,1,@3199|44,0,@8016 79,0,3 112,0,0 150,0,0 157,0,0 164,0,0 170,0,0 187,0,1 196,1,@7987 8016:D3,24|3b650c7305ff552ccd0589c38b4204e994a1f8fff4000000|@17690,1,@3198|16,1,@7171 8017:D3,176|3b650c7305ff552ccd0d89c68b7a1089f98b5f208b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b4204894708895f04c70758e441b18b59308b4d008d49f03b4d087305ff5528cdcc894d00c741fc030000008b4208894108895904c701a0e441b18b45008d40f43b45087305ff5528cdc6894500c740fc020000008948048938ff7424048b7a0c5789f3e8ed98f9ff89c78b3f8b3424893e8d642404b801000000c20400f4000000|@15197,1,@3202|57,0,@8018 101,0,@8019 147,1,@7283 165,0,0 8018:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3200| 8019:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3201| 8020:D3,24|3b650c7305ff552ccd0589c38b4204e914a0f8fff4000000|@17690,1,@3203|16,1,@7171 8021:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3204| 8022:D3,640|3b650c7305ff552ccd0953ff308b78048b400883ff030f85cc000000a8010f85b60000008b38ff70048b1f8b4f048b7424088b7e2089f68b76308b45008d40f43b45087305ff5528cdca894500c740fc0200000089700489388b74242c8b5424288b7d008d7fec3b7d087305ff5528cd4f897d00c747fc04000000894f0c895708897704c707f0e741b157e82c97f9ff89c7578b3c248b3f8b7f0c8b570489d68b1283fa03752a89f78b7f0481ffbc03c0b07507bf03000000eb05bf0100000083ff03750c8d642410b801000000c22400ff742404e98f0000008d642408b878d768b18b5d04ff238b7c24288b74242457568b5c240ce86503000089c757ff742404ff742434ff742430ff74242c8b7424248b5424208b4c24348b5c242c8b442428894424248b442410895c24288b5c240c894c242c89542430897424348b3c24897c24388b7c2404897c243c8b7c2408897c24408b7c241c897c242083c420e9ab0500008d64241cf60424010f85000100008b34248b3e89f6ff76048b1f8b4f048b7424148b7e2089f68b76308b45008d40f43b45087305ff5528cdca894500c740fc0200000089700489388b7424388b5424348b7d008d7fec3b7d087305ff5528cd4f897d00c747fc04000000894f0c895708897704c707781342b157e8d895f9ff89c7578b5c24348b7c24308b74242c8b542428575652b801000000e80807000089c7578b5c24388b7c24348b7424308b54242c575652b801000000e8e806000089c78b7424448b54243c8b4c24348b5c24288b442424ff3424ff74241468100666b157ff74242856525153508b44242cbb100666b1e8721200008d6424085e8934243b650c7303ff552ce9f6feffff8d642414b801000000c22400f4|@17742,1,@3234|134,0,@8023 140,1,@7283 174,0,@4714 181,0,1 188,0,0 202,0,0 223,0,@17697 247,1,@8025 353,1,@8028 474,0,@8050 480,1,@7283 507,0,0 512,1,@8030 539,0,0 544,1,@8030 578,0,@9473 597,0,@9473 602,1,@8042 632,0,0 8023:D3,396|3b650c7305ff552ccd0589c7528b378d1c750100000083fb01750abaecd668b1e98d00000089de83c61c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872c01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beecd668b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c248b4f04894e04c70690e941b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000895110c7410c01000000c7410801000000c7410401000000c7010100000089ff8b470889ff8b570c8d6424045251ff742408bb030000008974240ce9a1d3ffff8d642404b8780566b18b5d04ff23f40000|@17696,1,@3206|28,0,@17694 48,0,4 69,0,16777215 127,0,0 153,0,@17694 158,0,14 215,0,@8024 250,0,3 283,0,0 321,0,0 328,0,0 335,0,0 341,0,0 366,0,1 375,1,@7987 384,0,@9465 8024:D3,24|3b650c7305ff552ccd0589c38b4204e9b459f8fff4000000|@17695,1,@3205|16,1,@7127 8025:D3,208|3b650c7305ff552ccd0953a8010f85b00000008b30ff70048b3e8b46048b7424048b5e308b5424108b4c240c8b75008d76ec3b75087305ff5528cd8f897500c746fc0400000089460c894e08895604c706a0ea41b15756b8880768b1e8cb98f9ff89c783ff017517585b8b7424088b5424048954240489742408e981ffffffff378b7c24148b74241057568b44240c8b5c2410e868ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f4|@11291,1,@3209|81,0,@8026 88,0,@15155 93,1,@7284 200,0,0 8026:D3,396|3b650c7305ff552ccd0589c7528b378d1c750100000083fb01750abaecd668b1e98d00000089de83c61c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872c01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beecd668b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c248b4f04894e04c70640ec41b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000895110c7410c01000000c7410801000000c7410401000000c7010100000089ff8b470889ff8b570c8d6424045251ff742408bb030000008974240ce9f1d0ffff8d642404b8780566b18b5d04ff23f40000|@17696,1,@3208|28,0,@17694 48,0,4 69,0,16777215 127,0,0 153,0,@17694 158,0,14 215,0,@8027 250,0,3 283,0,0 321,0,0 328,0,0 335,0,0 341,0,0 366,0,1 375,1,@7987 384,0,@9465 8027:D3,24|3b650c7305ff552ccd0589c38b4204e90457f8fff4000000|@17695,1,@3207|16,1,@7127 8028:D3,112|3b650c7305ff552ccd09538b5c24108b7c241c8b74240c8b542408575652e86100000089c757ff7424248b7424248b5424208b4c241c8b5c24088b44242c8944241c8b442404895c24208b1c24894c2424895424288974242c8b7c240c897c241883c418e9870300008d64240cf40000|@17741,1,@3231|31,1,@8029 101,1,@8032 8029:D3,356|3b650c7305ff552ccd0953a8010f8542010000ff30ff70048b7c24048b3f8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ea00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b7c241c8b7424188b542414575652b8010000008b5c2418e8a800000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d6424048b7424048937578b7c241c8b7424188b5424145756528b4424108b5c2418e8e4feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c20c008d64240cb8780566b18b5d04ff238d642404b801000000c20c00f40000|@10030,1,@3212|45,0,@9551 62,0,4 83,0,16777215 141,0,0 195,0,0 204,1,@8030 332,0,@9465 346,0,0 8030:D3,376|3b650c7305ff552ccd098b338b7c240c2bf7710ab8f80466b18b5d04ff2383c60183fe017507bee43c66b1eb6083fe017e4781feffffff017d3f89f789f98d147d02000000f7da0355003b550872053b55007205ff5528cd42895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba01000000eb0ab888b766b18b5d04ff233bf27f3a8067ffbf89fe8b7c24048b54240c8b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c700f4ef41b1c20c008b4c24088b098b1983fb0175398b49048b41fc89c3c1e008c1e80783c8013bd07d1dc1e308c1eb0783cb013bd3720ab8a43266b18b5d04ff238b4c51feeb05b901000000eb378b49048b41fc89c3c1e008c1e80783c8013bd07d1dc1e308c1eb0783cb013bd3720ab8783266b18b5d04ff238b4c51feeb05b90100000083f901750ab8b07766b18b5d04ff238b09894c57fe89d183c102710ab8f80466b18b5d04ff2389ca3b650c7305ff552ccdc4e90efffffff40000|@17700,1,@3211|21,0,@9455 39,0,@10109 52,0,16777215 106,0,0 115,0,0 122,0,@11455 186,0,@8031 241,0,@9990 257,0,0 298,0,@9988 314,0,0 324,0,@10986 347,0,@9455 8031:D3,84|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f40000|@17699,1,@3210|33,0,@9455 67,0,@9990 8032:D3,416|3b650c7305ff552ccd09536a016a015068943966b1f64424040175288b7c24048b0789ffff77048b5c2404e88401000089c25e891424897424043b650c7303ff552cebd18b3c248b378974240889ff8b7f048d642404897c24088b442404ff742408bb68d868b1e8f074e9ff6a016a01bb100666b1e89e06000089c7578b442404bb3cd968b1e8d174e9ff6a016a01bb100666b1e87f06000089c757ff742404f604240175308b34248b3e89f6ff7604f7c70100000075108b378b7f04ff36ff7604ff760857eb618d642424b844d968b18b5d04ff238d642404ff3424f6042401753a8b3c248b0789ffff77048b7c24388b7424348b5424308b4c242c8b5c242857565251538b5c2434e8f1feffff5e8934243b650c7303ff552cebc08d642420b801000000c21400f6042401755b8b34248b3e89f6ff7604ff37ff77048b7f088b7424488b5424448b4c24548b5c24508b44244cff742410ff742408ff742408575652ff7424545153508b4424408b5c243ce8580800008d6424085e8934243b650c7303ff552ceb9f8d6424105e8934243b650c7303ff552ce901fffffff4|@17740,1,@3230|17,0,@10068 44,1,@8033 99,0,@17703 104,1,@5475 113,0,@9473 118,1,@8039 130,0,@17707 135,1,@5475 144,0,@9473 149,1,@8039 205,0,@17708 290,0,0 372,1,@8042 8033:D3,120|3b650c7305ff552ccd0989c28b3a8b7f088b078b77108b7a048b4a088b55008d52f03b55087305ff5528cdcb895500c742fc03000000894a08897204c7029cf241b18b75008d76f03b75087305ff5528cd8d897500c746fc03000000895608897e04c706d0f241b1ff342489742404e99438e6fff4000000|@17702,1,@3216|62,0,@8034 100,0,@8035 112,1,@4949 8034:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e93c01f5fff4000000|@13922,1,@3213|24,1,@6694 8035:D3,132|3b650c7305ff552ccd0d525053ff742410f64424040175628b7c24048b1f89ffff77046a016a018b7424188b7e0489f68b7608ff74240c548304240457568b442424e8510000005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceb975883c40cc20400f40000|@10026,1,@3215|67,1,@8036 8036:D3,800|3b650c7305ff552ccd09508b7c2414ff378b7c2418ff77048b3b89fe81ffac00c0b00f852902000081feac00c0b00f850f020000ff73088b7c24188b3f8d3c7d01000000578b7c24108b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c240ce9aa00000083fb01750d8d6424048b7c2418e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878d01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c241c89f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b74240c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507be500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87d500000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d68b5424148b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a89570489378b7424145a8d6424048916897e04b801000000c210008d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d64240cb8483366b18b5d04ff2389f781fe9c00c0b00f85a300000081ff9c00c0b00f85890000008b73088b5424148b4c24108b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f0889570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240489570489378b742418893e5f8d642408897e04b801000000c210008d64240cb8483366b18b5d04ff238b7424188b7c2404893e5f8d642404897e04b80100000083c404c21000f4|@17701,1,@3214|30,0,@4616 42,0,@4616 137,0,4 158,0,16777215 216,0,0 290,0,@9551 307,0,4 328,0,16777215 386,0,0 544,0,0 556,0,@9465 570,0,@9465 584,0,@9999 597,0,@4614 609,0,@4614 749,0,0 761,0,@9999 789,0,0 8037:D3,52|3b650c7305ff552ccd018b388b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700e4f641b1c3f4000000|@17705,1,@3218|43,0,@8038 8038:D3,124|3b650c7305ff552ccd0589d68b388b560489d08b128d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d989c68d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37706b803000000c3b801000000c383ff017f06b803000000c3b801000000c3f400|@17704,1,@3217|66,0,0 73,0,1 80,0,-1 94,0,1 100,0,0 111,0,1 117,0,0 8039:D3,460|3b650c7305ff552ccd0989daa8010f85670100008b38ff70048b1fff77043bd37502eb268b3a8d3c7d010000008b3389f18d3475010000003bfe754c8d72048d7b043bc9f3a67402eb3e8b7c24108b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b3c24893e8d6424045889d38b5424048954240489742408e978ffffff8b7c2410f7c7010000000f85a70000008b7c24108b7f0483ff01753c8b75008d76f43b75087305ff5528cd08897500c746fc02000000c74604010000008b3c24893e8d642404588b5424048954240489742408e920ffffff8b75008d76f43b75087305ff5528cd08897500c746fc02000000c74604010000008b3c24893e8d6424048b7c240c8b4c24088b55008d52f43b55087305ff5528cdca895500c742fc02000000894a04893a588954240489742408e9c1feffff8b75008d76f43b75087305ff5528cd08897500c746fc02000000c74604010000008b3c24893e8d642404588b5424048954240489742408e985feffff8b7c2408f7c701000000753d8b7c24088b7f0483ff0175078b442404c208008b7c24088b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c208008b442404c20800f4|@17706,1,@3219|193,0,0 253,0,0 348,0,0 8040:D3,52|3b650c7305ff552ccd018b388b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7009cf941b1c3f4000000|@17705,1,@3221|43,0,@8041 8041:D3,124|3b650c7305ff552ccd0589d68b388b560489d08b128d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d989c68d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37706b803000000c3b801000000c383ff017f06b803000000c3b801000000c3f400|@17704,1,@3220|66,0,0 73,0,1 80,0,-1 94,0,1 100,0,0 111,0,1 117,0,0 8042:D3,3620|3b650c7305ff552ccd0950538b7c2404ff378b7c2430ff378b7c24048b7f0c8b570489d68b1283fa03752489f78b7f0481ffbc03c0b07507bf03000000eb05bf0100000083ff0375068d642410eb678b3c248b7f0c8b570489d68b1283fa03751b89f78b7f0481ffbc03c0b07507bf03000000eb05bf01000000eb05bf0100000083ff03742c8b7c24048b7f0c8b7f048b1789d683fa0375058b7f08eb5083fe0175058b7f04eb468b7704bf01000000eb0c8d642410b801000000c22800f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd08b34248b760c8b76048b0e89ca83f90375058b7608eb3f83fa0175058b7604eb358b5604be01000000f6c20175288b5a0489f183c102710e8d642410b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd33bfe0f84a20100008d6424088b74241c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707640842b1578b4424088b5c2404e8df0c000089c7578b4424348b5c2430e8cf0c000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704f4d968b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780da68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0da68b18b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410407000000c701010000008b44241c5e8d6424088b542418bb03000000894c242089542424897424288b3c24897c241c83c41ce9f2bfffff8b7c24048b7f0c8b77048b1683fa01750d8b460c8b542438ff1289c7eb00578b7c24048b7f0c8b77048b1683fa01750d8b460c8b542430ff1289c7eb00578b7c24048b7f048b3783fe0175338b570c8b7c24243bd77d0abf01000000e9c10a00008b7c24242bd7710e8d642418b8f80466b18b5d04ff2383c201e9d7090000bf0100000083ff030f84320400008d6424048b7c2408ff378b7c24108b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750a8d6424045ee9a20000008b3c2483ff01750d8d6424088b74240ce98d0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87b003000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24148d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b7f088b078b5f048b7f0857e8030c000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ecda68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b7424288b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707680e42b1578b4424148b5c2410e8bb08000089c7578b4424408b5c243ce8ab08000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008b54240889178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70718da68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702206066b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780da68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0da68b18b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410407000000c701010000008b4424285e8d6424048b542428bb03000000894c243089542434897424388b7c2410897c242c83c42ce941bbffff8d64241cb8780566b18b5d04ff238b3c248b7f048b3783fe0175338b570c8b7c24243bd77d0abf01000000e9620500008b7c24242bd7710e8d642418b8f80466b18b5d04ff2383c201e978040000bf0100000083ff030f84390400008b7c2408ff378b7c243c8b3f8d3c7d01000000578b7c24048b3f8d1c7d010000008b342489f783fe01750a8d6424045ee9a700000083fb01750d8d6424088b742438e99500000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87b703000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c244089f189f08d77048d7a04d1e9f3a489c783c7088d64240489d95e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24048b7f088b078b5f048b7f0857e87c07000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ecda68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642404893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b74242c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707940e42b1578b4424188b5c2414e83404000089c7578b4424448b5c2440e82404000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008b54240889178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c70718da68b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702206066b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70780da68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a0da68b18b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410407000000c701010000008b44242c5e8d6424048b54242cbb03000000894c2434895424388974243c8b7c2414897c243083c430e9bab6ffff8d642420b8780566b18b5d04ff238b4424045b8d6424048b74241c8b5424188b4c2414894c243089542434897424388b7c2410897c242c83c42ce92f0800008b7c24208b3f8b3783fe01753d8b7f048b4ffc89cec1e108c1e90783c9013bd17d21c1e608c1ee0783ce013bd6720e8d642418b8a43266b18b5d04ff238b7c57feeb05bf003b66b1eb3b8b7f048b4ffc89cec1e108c1e90783c9013bd17d21c1e608c1ee0783ce013bd6720e8d642418b8783266b18b5d04ff238b7c57feeb05bf003b66b18b0f89ce83f90375268b7f043bfa7c0e8d642418b81cd568b18b5d04ff2389fa3b650c7305ff552ccd04e94cffffff89f783ff017507bf01000000eb0a83ff07750abf03000000e9bcfaffff8d642418b854dc68b18b5d04ff238b7c24208b3f8b3783fe01753d8b7f048b4ffc89cec1e108c1e90783c9013bd17d21c1e608c1ee0783ce013bd6720e8d642418b8a43266b18b5d04ff238b7c57feeb05bf003b66b1eb3b8b7f048b4ffc89cec1e108c1e90783c9013bd17d21c1e608c1ee0783ce013bd6720e8d642418b8783266b18b5d04ff238b7c57feeb05bf003b66b18b0f89ce83f90375268b7f043bfa7c0e8d642418b81cd568b18b5d04ff2389fa3b650c7305ff552ccd04e94cffffff89f783ff017507bf01000000eb0a83ff07750abf03000000e95df5ffff8d642418b854dc68b18b5d04ff23f4|@17739,1,@3229|50,0,@4714 57,0,1 64,0,0 104,0,@4714 111,0,1 118,0,0 125,0,0 172,0,0 183,0,0 213,0,@9455 275,0,0 299,0,@9455 371,0,@8043 385,1,@8044 401,1,@8044 436,0,@17712 473,0,@10448 508,0,@17719 543,0,@10448 610,0,@10826 645,0,@17721 681,0,0 688,0,0 695,0,3 701,0,0 719,0,1 746,1,@7987 838,0,0 860,0,@9455 878,0,0 976,0,4 997,0,16777215 1055,0,0 1135,0,3 1157,1,@8045 1192,0,0 1229,0,@10448 1264,0,@17724 1299,0,@10448 1371,0,0 1378,0,0 1385,0,3 1391,0,0 1431,0,@8046 1445,1,@8044 1461,1,@8044 1496,0,0 1537,0,@10448 1572,0,@17715 1607,0,@10625 1673,0,@10448 1708,0,@17719 1743,0,@10448 1810,0,@10826 1845,0,@17721 1881,0,0 1888,0,0 1895,0,3 1901,0,0 1919,0,1 1947,1,@7987 1956,0,@9465 1990,0,0 2012,0,@9455 2030,0,0 2128,0,4 2149,0,16777215 2207,0,0 2294,0,3 2316,1,@8045 2351,0,0 2388,0,@10448 2423,0,@17724 2458,0,@10448 2530,0,0 2537,0,0 2544,0,3 2550,0,0 2590,0,@8047 2604,1,@8044 2620,1,@8044 2655,0,0 2696,0,@10448 2731,0,@17715 2766,0,@10625 2832,0,@10448 2867,0,@17719 2902,0,@10448 2969,0,@10826 3004,0,@17721 3040,0,0 3047,0,0 3054,0,3 3060,0,0 3078,0,1 3106,1,@7987 3115,0,@9465 3169,1,@8048 3225,0,@9990 3241,0,@10093 3286,0,@9988 3302,0,@10093 3327,0,@17678 3361,0,0 3373,0,1 3387,0,@17736 3448,0,@9990 3464,0,@10093 3509,0,@9988 3525,0,@10093 3550,0,@17678 3584,0,0 3596,0,1 3610,0,@17736 8043:D3,24|3b650c7305ff552ccd0589c38b4204e9e03af8fff4000000|@17710,1,@3222|16,1,@7127 8044:D3,532|3b650c7305ff552ccd0989df8b308b5608f6c20175388b1a8b4a048b0383f801751e8b55008d52f83b55087305ff5528cdc8895500c742fc01000000891aeb1389ca3b650c7305ff552ccdc4ebc3ba01000000f6c20175698b1a89d98b1b83fb017507bb03000000eb05bb0100000083fb03754d89ca8b52048b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701010000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890aeb05ba0100000052ff368b378d1c75010000008b34248b368d3475010000005683fb01750a8d6424045fe99a0000008b342483fe0175098d642408e9890000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87d900000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708595e8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40e83b45087305ff5528cd80894500c740fc050000008978105f89780cc7400801000000c7400401000000c70001000000c38d64240cb8780566b18b5d04ff23f400|@17711,1,@3223|79,0,0 100,0,1 107,0,0 152,0,0 185,0,0 194,0,0 268,0,4 289,0,16777215 347,0,0 423,0,3 456,0,0 498,0,0 505,0,0 511,0,0 521,0,@9465 8045:D3,924|3b650c7305ff552ccd098b7c240481ff100666b17502eb328b7c24048b3f8d3c7d0100000083ff010f85df0000008b742404bf100666b18d76048d7f0433c93bc9f3a67405e9c30000008b75008d76f43b75087305ff5528cd09897500c746fc02000000895e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c747040100000089378b55008d52f43b55087305ff5528cd81895500c742fc02000000894204c702070000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40e83b45087305ff5528cdc0894500c740fc0500000089701089780cc7400801000000c7400401000000c70001000000c204008b75008d76f43b75087305ff5528cd09897500c746fc02000000895e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c70707000000578b7c240c8b3f8d0c7d0100000083f9017507bfcc7366b1eb7e89cf83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87cf01000089f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe00000000d1ef893ac6420428c642052a8b7c240c8d77048d7a06d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abfb47366b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872b01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322ad1efc6443a01298062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc050000008978108b3c2489780c8d642404c7400801000000c7400401000000c70001000000c204008d642408b8780566b18b5d04ff238d642408b8780566b18b5d04ff23f4000000|@17723,1,@3224|16,0,@9473 51,0,@9473 105,0,0 138,0,0 175,0,3 208,0,0 249,0,0 256,0,0 262,0,0 300,0,0 333,0,0 371,0,3 395,0,@10928 412,0,4 433,0,16777215 491,0,0 542,0,@10926 562,0,4 583,0,16777215 641,0,0 718,0,3 751,0,0 788,0,@10448 872,0,0 879,0,0 885,0,0 897,0,@9465 911,0,@9465 8046:D3,24|3b650c7305ff552ccd0589c38b4204e9dc34f8fff4000000|@17710,1,@3225|16,1,@7127 8047:D3,24|3b650c7305ff552ccd0589c38b4204e9b034f8fff4000000|@17710,1,@3226|16,1,@7127 8048:D3,1088|3b650c7305ff552ccd098b780489fe8b3f83ff01753a8b530489d78b1283fa017507ba03000000eb05ba0100000083fa03751d8b560c8b770c8b7c240c2bd7710ab8f80466b18b5d04ff2383c201eb0ab818db68b18b5d04ff238b7c24088b3f8b0f83f90175398b7f048b5ffc89d9c1e308c1eb0783cb013bd37d1dc1e108c1e90783c9013bd1720ab8a43266b18b5d04ff238b7c57feeb05bf003b66b1eb378b7f048b5ffc89d9c1e308c1eb0783cb013bd37d1dc1e108c1e90783c9013bd1720ab8783266b18b5d04ff238b7c57feeb05bf003b66b18b0f83f90375228b7f043bfa7c0ab81cd568b18b5d04ff2389fa3b650c7305ff552ccd44e95affffff8b54240c2bf2710ab8f80466b18b5d04ff2383c6018b5424088b128b0a83f90175398b52048b5afc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b5472feeb05ba003b66b1eb378b52048b5afc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b5472feeb05ba003b66b18b0a83f90375228b52043bd67c0ab81cd568b18b5d04ff2389d63b650c7305ff552ccdc0e95affffff8b3783fe070f856d0200008b4f0489ce8b49048b0983f90175298b0a83f907751b8b4a048b49048b0983f9017507b903000000eb05b901000000eb05b901000000eb05b90100000083f9030f8527020000ff77088b7e04ff7704ff77088b5f0c8b7f10ff76088b7204ff72088b4e048b5104ff71088b710c8b49103bde750c8d642418b801000000c20c003bde7d0489d8eb0289f0503bde7e0489deeb005683ff037507b903000000eb008b74241889f73bf20f85b10100008b7424148b1683fa03750e89f68b76048b3683fe03750ceb2589f68b760483fe03741b8b7424088b1683fa03750989f68b76048b36eb0589f68b7604eb05be030000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000897204c702010000008b75008d76e83b75087305ff5528cd86897500c746fc05000000894e108b4c2404894e0c89560889ff897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c707943966b1578b7c241089fb83ff0175068b742420eb0b8b442420e80301000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c707070000008b74242c8b5c24042bde710e8d642420b8f80466b18b5d04ff2383c3018b44242457e839c9ffff8b7c242c8b1c242bdf8d642404710e8d64241cb8f80466b18b5d04ff2383c3018b7424288b3c242bfe8d642404710e8d642418b8f80466b18b5d04ff238d64241883c7018b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706030000008b4424048974240c8b3c24897c240883c408e9bbc8ffff8d642420b86cdb68b18b5d04ff23b8c8db68b18b5d04ff23f40000|@17735,1,@3228|35,0,1 42,0,0 66,0,@9455 81,0,@17726 138,0,@9990 154,0,@10093 195,0,@9988 211,0,@10093 230,0,@17678 265,0,@9455 325,0,@9990 341,0,@10093 382,0,@9988 398,0,@10093 417,0,@17678 490,0,1 497,0,0 504,0,0 511,0,0 575,0,0 608,0,1 691,0,1 726,0,0 776,0,0 818,0,@10068 845,1,@8049 892,0,3 913,0,@9455 931,1,@8004 955,0,@9455 987,0,@9455 1034,0,1 1057,1,@8004 1066,0,@17729 1076,0,@17732 8049:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3227| 8050:D3,396|3b650c7305ff552ccd0589c7528b378d1c750100000083fb01750abaecd668b1e98d00000089de83c61c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872c01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beecd668b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c248b4f04894e04c706181542b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000895110c7410c01000000c7410801000000c7410401000000c7010100000089ff8b470889ff8b570c8d6424045251ff742408bb030000008974240ce919a8ffff8d642404b8780566b18b5d04ff23f40000|@17696,1,@3233|28,0,@17694 48,0,4 69,0,16777215 127,0,0 153,0,@17694 158,0,14 215,0,@8051 250,0,3 283,0,0 321,0,0 328,0,0 335,0,0 341,0,0 366,0,1 375,1,@7987 384,0,@9465 8051:D3,24|3b650c7305ff552ccd0589c38b4204e92c2ef8fff4000000|@17695,1,@3232|16,1,@7127 8052:D3,2036|8d7c248c3b7d0c7305ff5530cd0950f6c3010f85d40700008b3bff7304ff77048b7f0cff378bbc24880000008b77208b9424840000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7074c1d42b1578bbc248c0000008b7f308bb424840000008b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c700941d42b18bbc248c0000008bb424800000008b55008d52f03b55087305ff5528cdc1895500c742fc03000000897208897a04c702dc1d42b1ff74247cff74247cff74247cff74247c8b74247c8b4c24788b5c24748b7d008d7fc83b7d087305ff5528cd4f897d00c747fc0d000000894730895f2c894f288957248b542410895720c7471c40d268b18977185e8977145e8977105e89770c5e8d642404897708c747049cd268b1c707f8d268b1578b7c24608b3f8d3c7d01000000578b7c240c8b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2408e9aa00000083fb01750d8d6424048b7c2460e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f873006000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c246489f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f877805000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b7c24088b3f83ff010f85f40000008b7c2408ff77048b7c240cff77086a016a016a016a016a016a01ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008bbc24800000008b74247c8b5424788b4c24748b5c24708b44246cff7424346a01ff7424445483042428ff742424ff742424ff742424ff742424ff742424ff7424245756525153508b5424588b4424788b9c2480000000ff128d64241cff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8d64242c8937e96f0100008b7c24088b3f83ff050f85940000008b7c24088b7f04ff37ff7704ff7708ff770cff7710ff742440ff742474ff742474ff742474ff742474ff742474ff7424748b7c24748b7424708b54246c8b4c24688b5c24648b442460ff742424ff742420ff742434ff742440ff742440ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b54245c8b44246c8b5c2464ff1289c78d64243ce9cc0000008b7c2408ff77048b7c240cff77088b7c2410ff770c6a016a016a016a016a016a01ff74245cffb42484000000ffb424840000008b7c24648bb424840000008b9424800000008b4c247c8b5c24788b442474ff742424ff742438ff7424385483042418ff742418ff742418ff7424185756525153508b4424608b5c245ce87f0400008d64240cff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8d6424308937578b7c240c83c70257710e8d642414b8f80466b18b5d04ff23ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c000000ffb4248c0000008bbc248c0000008bb424880000008b9424840000008b8c24800000008b5c247c8b442478ff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245cff74245c5756525153508b8424d80000008b9c24e4000000e882f9ffff89c78d642464578b7424248b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24588b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542410895704c707010000008b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b7424048970088978048b7c240889388b74241c8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707dc2642b18b7424188b5424588b4c24208b5c2454575668880768b16838d268b152515389c38b442424e8389cffff588d642410c278008d642414b8780566b18b5d04ff238d642418b8780566b18b5d04ff2358c27800f4000000|@17755,1,@3248|88,0,@8053 144,0,@8054 196,0,@8055 276,0,@17653 306,0,@17657 312,0,@17661 399,0,4 420,0,16777215 478,0,0 552,0,@9551 569,0,4 590,0,16777215 648,0,0 1233,1,@8057 1328,0,@9455 1704,0,0 1717,0,0 1756,0,2 1789,0,0 1862,0,0 1946,0,@8065 1969,0,@15155 1974,0,@17652 1988,1,@7985 2005,0,@9465 2019,0,@9465 8053:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3235| 8054:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3236| 8055:D3,68|3b650c7305ff552ccd05528b3c248b5708b801000000ff1289c7578b7c24048b7f048b5724b801000000ff1289c383fb0175055883c404c35883c404e917000000f40000|@17743,1,@3238|18,0,0 38,0,0 61,1,@8056 8056:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3237| 8057:D3,708|3b650c7305ff552ccd096a016a016a016a016a016a018b7c243c8b7424388b5424348b4c24305457565251e8a8020000ff3424ff742408ff742410ff742418ff742420ff7424288b7424648b7c2408893e8b7c2444ff378b7c24488b7424448b5424408b4c243c8b5c246057565251538b442424bbf4dd68b1e87a05000089c283fa01750abae43c66b1e997000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642434b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642434b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa010f85710100008067ffbf89fa8b7c240489f93b3c248d64240475068d642404eb6df644240c0175628b7c24348b75008d76ec3b75087305ff5528cd86897500c746fc0400000089c9894e0c8d642404895608897e04c706402642b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c707a82642b1eb058d6424045f578b7c2440ff378b7c24148b3783fe030f859900000089ff8b770489ff8b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c70701000000eb0289ff8b742458893e8b7c2410897e04c74608010000008b7c2408897e0c8b7c2404897e108b3c24897e148d64240cb80100000083c424c234008b0a8b5a04894c77fe89f183c102710e8d642434b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e955fefffff400|@17754,1,@3246|44,1,@8058 117,0,@17746 122,1,@8061 134,0,@10109 144,0,0 173,0,@9455 200,0,16777215 211,0,@11058 266,0,0 275,0,0 369,0,@8063 414,0,@8064 479,0,@10109 533,0,0 594,0,0 618,0,0 647,0,0 678,0,@9455 8058:D3,696|3b650c7305ff552ccd0950538b7c24188b57148b442404ff1289c783ff010f855e0200008b7c24048b3f8d1c7d0100000083fb01750abfb8dd68b1e98c00000089df83c71689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870a02000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfb8dd68b1b9170000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a0fd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abac80768b1e98d00000089de83c62e89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f875801000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bec80768b1b92f0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b7424148b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c7073c2442b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76e83b75087305ff5528cd84897500c746fc05000000895610c7460c01000000c7460801000000c7460401000000c706010000008b44241057ff74240456bb03000000e87299ffff8d6424048b7c24188b7424088937c74704b4d967b1c7470801000000c7470c01000000c74710bced67b1c7471401000000b80100000083c404c214008d642408b8780566b18b5d04ff238d642408b8780566b18b5d04ff238d6424088b7424148b3f8b1789168b57048956048b57088956088b570c89560c8b57108956108b7f14897e14b801000000c21400f400|@17745,1,@3240|55,0,@17744 75,0,4 96,0,16777215 154,0,0 163,0,@17744 168,0,11 219,0,@15157 239,0,4 260,0,16777215 318,0,0 344,0,@15157 349,0,23 404,0,@8059 439,0,3 472,0,0 510,0,0 517,0,0 524,0,0 530,0,0 545,0,1 550,1,@7987 571,0,@14766 578,0,0 585,0,0 592,0,@14903 599,0,0 604,0,0 619,0,@9465 633,0,@9465 687,0,0 8059:D3,24|3b650c7305ff552ccd0589c38b4204e9081ff8fff4000000|@17695,1,@3239|16,1,@7127 8060:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17747,1,@3241|11,0,0 8061:D3,316|3b650c7305ff552ccd0953a8010f851a0100008b38ff70048b570489d68b0a83f9010f85f7000000ff7204ff720cff7210ff770889f78b1789d683fa05750e8d642418b8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b07eb038b4704eb058b7f048b078b7c241c8b74242c8b5424288b4c24248b5c2420ff7424046a01ff742408575652515389c38b44242ce8adb3ffff89c7578b45008d40ec3b45087303ff5528894500c740fc040000008b7c240c89780c8b7c24188978088b3c24897804c700e02542b18b7c24308b74242c8b5424288b4c24248b5c2420575652515389c38b442428e80cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64241cc214008d642408b884de68b18b5d04ff238d642404b801000000c21400f40000|@17752,1,@3243|68,0,@13866 151,1,@8003 204,0,@8062 292,0,@17749 306,0,0 8062:D3,76|3b650c7305ff552ccd058b78048b3783fe01752f8b7f0c8b720c3bfe75208b45008d40f83b45087305ff5528cd04894500c740fc010000008b7a048938c38b5208ff22b801000000c3f40000|@17748,1,@3242|68,0,0 8063:D3,84|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f40000|@17753,1,@3244|33,0,@9455 67,0,@9990 8064:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e930cdf4fff4000000|@13922,1,@3245|24,1,@6694 8065:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3247| 8066:D3,24|3b650c7305ff552ccd0589c38b4204e9d85df8fff4000000|@17690,1,@3249|16,1,@7171 8067:D3,220|3b650c7305ff552ccd0d508b7a1489fe8b4f208b7d008d7ff03b7d087305ff5528cd4e897d00c747fc030000008b4204894708894f04c707402842b18b4e308b75008d76f03b75087305ff5528cd8e897500c746fc030000008b4208894608894e04c706882842b18b45008d40f43b45087305ff5528cdcc894500c740fc0200000089700489388b7d008d7fec3b7d087305ff5528cd0d897d00c747fc04000000895f0c8b72108977088b720c897704c707d02842b1ff742408578b5c2408e80455f9ff89c78b3f8b3424893e8d642408b801000000c20400f40000|@15197,1,@3254|56,0,@8068 100,0,@8069 178,0,@8070 192,1,@7283 210,0,0 8068:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3250| 8069:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3251| 8070:D3,204|3b650c7305ff552ccd058b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c706b02942b18b4d008d49f43b4d087305ff5528cd45894d00c741fc02000000894104c701070000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b42088b520c5251ff742408bb030000008974240ce97493fffff4000000|@17691,1,@3253|44,0,@8071 79,0,3 112,0,0 150,0,0 157,0,0 164,0,0 170,0,0 187,0,1 196,1,@7987 8071:D3,24|3b650c7305ff552ccd0589c38b4204e94c5bf8fff4000000|@17690,1,@3252|16,1,@7171 8072:D3,12|3b650c7305ff552ccd01c3f4|@17757,1,@3255| 8073:D3,12|3b650c7305ff552ccd01c3f4|@17757,1,@3256| 8074:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3257| 8075:D3,1216|8d7c24ac3b7d0c7305ff5530cd09508b7d008d7ff83b7d087305ff5528cd08897d00c747fc01000040891f578bbc248c0000008b7f208b9424880000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706382f42b18bbc248c0000008b7f308b9424840000008b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897804c700802f42b1ffb42480000000ffb42480000000ffb42480000000ffb42480000000ffb424800000008b9424800000008b4c247c8b5c24788b7d008d7fc83b7d087305ff5528cd4f897d00c747fc0d000000894730895f2c894f28895724897720c7471c40d268b15e8977185e8977145e8977105e89770c5e897708c747049cd268b1c707f8d268b1576a016a018b7c24108b3f83ff010f85ce0000008b7c2410ff77048b7c2414ff77086a016a016a016a016a016a01ffb4248c000000ff74245cffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb42490000000ffb424900000008bbc24900000008bb4248c0000008b9424880000008b8c24840000008b9c24800000008b44247cff7424386a01ff742420548304242cff742424ff742424ff742424ff742424ff742424ff7424245756525153508b54245c8b44247c8b9c2488000000ff128d6424205e8d64240c5f8d64240c893424897c2404e96e0100008b7c24108b3f83ff050f85bc0000008b7c24108b7f04ff37ff7704ff7708ff770cff7710ff742448ff742450ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb42484000000ffb424840000008bbc24840000008bb424800000008b54247c8b4c24788b5c24748b442470ff742428ff742424ff742438ff742448ff742428ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b5424608b4424708b5c2468ff1289c78d6424348b378934248b7f10897c2404e9a30000008b7c2410ff77048b7c2414ff77088b7c2418ff770c6a016a016a016a016a016a01ff74245cff74246cffb42494000000ffb424940000008b7c24748bb424940000008b9424900000008b8c248c0000008b9c24880000008b842484000000ff742428ff742440ff742414548304241cff742418ff742418ff7424185756525153508b4424648b5c2460e8dcf0ffff8d6424105e8d64240c5f8d642410893424897c2404ff3424ff742408ff7424348b7424348b5424748b4c243c8b5c24708b7d008d7fe03b7d087305ff5528cd4e897d00c747fc070000008b442418894718895f14894f1089570c8977088b34248977048d642404c707c82f42b157ff742430ff7424308b74247c8b5424448b4c24788b7d008d7fe03b7d087305ff5528cd46897d00c747fc070000008b5c2420895f18894f1489571089770c8b34248977088d6424048b34248977048d642404c707243242b157ff74242c8b74242c8b54247c8b4c24448b5c24788b7d008d7fe03b7d087305ff5528cd4e897d00c747fc070000008b442420894718895f14894f1089570c8977088b34248977048d642404c707a83342b18b5d008d5bf03b5d087305ff5528cd80895d00c743fc030000005e8973085e897304893bff34246a0368100666b1ff74240c6a018b442418e89360f9ff8d6424108b7c24048b0783c40cc28400f40000|@17765,1,@3267|95,0,@8076 150,0,@8077 248,0,@17653 275,0,@17657 281,0,@17661 852,1,@8057 961,0,@8078 1050,0,@8081 1132,0,@8083 1178,0,@9473 1193,1,@7293 8076:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3258| 8077:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3259| 8078:D3,248|3b650c7305ff552ccd0552ff308b70048b3e8b460483f801750489f7eb658b378b57048b5f0c8b4f088b7d008d7fec3b7d087305ff5528cd4f897d00c747fc04000000895f0c894f088957048937578b7c24088b5f18e8b100000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404ff3424578b75008d76f43b75087303ff5528897500c746fc020000008b7c240c8b5704895604c706dc3142b189ff8b570889ff8b4f0c89ff8b5f1089ff8b47145350ff7424188b5c240c8b442410894c240cc744241030d268b1c7442414448267b1895424188974241ce98a88ffff8d642410f400|@17762,1,@3262|87,1,@8079 171,0,@8080 217,0,@17651 225,0,@13733 238,1,@7985 8079:D3,244|3b650c7305ff552ccd09a8010f85d80000008b10ff7004ff328b72048b7a088b4a0c8b42108b3f83ff010f85ac0000008b3b89fa83c202710e8d642408b8f80466b18b5d04ff2389138b55008d52f43b55087305ff5528cdcb895500c742fc02000000897a04c702010000008b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000c7471801000000c7471401000000894710894f0c8957088977048b342489378d642404578b442404e84dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c38d642408b820e068b18b5d04ff23b801000000c3f4000000|@10030,1,@3260|62,0,@9455 104,0,0 137,0,0 144,0,0 225,0,@17759 235,0,0 8080:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3261| 8081:D3,296|3b650c7305ff552ccd0552ff308b7004ff368b7e048b56088b4e0c8b3f83ff010f85f10000008b7c24088b7f188b3f89fe83c602710e8d64240cb8f80466b18b5d04ff238b5c24088b5b1889338b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706010000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8957088977048b342489378d642404ff3424578b75008d76f43b75087303ff5528897500c746fc020000008b7c240c8b7f04897e04c706603342b18b7c240c8b57088b7c240c8b4f0c8b7c240c8b5f108b7c240c8b47145350ff7424188b5c240c8b442410894c240cc744241038d268b1c7442414880768b1895424188974241ce90d86ffff8d6424108d64240cb820e068b18b5d04ff23f40000|@17763,1,@3264|59,0,@9455 108,0,0 196,0,@8082 250,0,@17652 258,0,@15155 271,1,@7985 284,0,@17759 8082:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3263| 8083:D3,316|3b650c7305ff552ccd0552ff308b7004ff36ff76048b7e088b560c8b4e108b3f83ff010f85030100008b7c240c8b7f188b3f89fe83c602710e8d642410b8f80466b18b5d04ff238b5c240c8b5b1889338b75008d76f43b75087305ff5528cd86897500c746fc02000000897e04c706010000008b7d008d7fe03b7d087305ff5528cd46897d00c747fc07000000c7471801000000c7471401000000894f1089570c8977088b34248977048d6424045e8937ff3424578b75008d76f43b75087303ff5528897500c746fc020000008b7c240c8b7f04897e04c706f83442b18b7c240c8b57088b7c240c8b4f0c8b7c240c8b5f108b7c240c8b47145350ff7424188b5c240c8b442410894c240cc7442410dcd068b1c74424140c1368b1895424188974241ce97484ffff8d6424108d642410b820e068b18b5d04ff23f400|@17764,1,@3266|62,0,@9455 111,0,0 144,0,0 151,0,0 217,0,@8084 271,0,@17644 279,0,@15268 292,1,@7985 305,0,@17759 8084:D3,52|3b650c7305ff552ccd0d89c78b52048b45008d40f43b45087305ff5528cd8c894500c740fc020000008958048938ff22f4000000|@17643,1,@3265| 8085:D3,3408|3b650c7305ff552ccd0d50538b7c24048b0f89ce83f9010f85e300000089fe89f7ff760489ffff77086a016a016a016a016a016a01ff7204ff742464ff742464ff742464ff742464ff742464ff742464ff742464ff7424648b7c24648b7424608b54245c8b4c24588b5c24548b442450ff74243c6a01ff7424205483042430ff742424ff742424ff742424ff742424ff742424ff7424245756525153508b5424608b8424800000008b5c245cff128d642424ff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977048b342489378d642424e96d01000089ff83fe050f859a00000089ff8b7f04ff37ff7704ff7708ff770cff771052ff742458ff742458ff742458ff742458ff742458ff742458ff742458ff7424588b7c24588b7424548b5424508b4c244c8b5c24488b442444ff74242cff742428ff74243cff742428ff742428ff742428ff742428ff742428ff742428ff742428ff7424285756525153508b5424648b4424748b5c246ce866feffff89c78d642438e9c800000089ff89feff770489f689f7ff760889ffff770c6a016a016a016a016a016a01ff742464ff742464ff742440ff742468ff7424688b7c24488b7424688b5424648b4c24608b5c245c8b442458ff74242cff742414ff7424145483042420ff742418ff742418ff7424185756525153508b4424688b5c2464e838e7ffff8d642414ff34248b7424088b54240c8b4c24108b5c24148b4424188b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977048b342489378d642428578b3c248b0789ffff7710ba3c4966b1e8a214e6ff89c28b7424408b4c243c8b5c244c8b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c894f08897704c707a44242b18b72208b52308b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489308b5c245457e8f044f9ff89c757ba980668b18b4424548b7c24448b7424408b4c244c8b5d008d5bec3b5d087305ff5528cdc7895d00c743fc04000000894b0c897308897b04c703704442b18b7c244057e8213af9ff89c7578b7c24048b1789d68b520c8b5a0489d98b1b83fb03752789ca8b520481fabc03c0b07507ba03000000eb05ba0100000083fa0375098d64240ce97907000089f78b7f0c8b570489d66a016a018b0a83f901751a8b420c8b542410ff1289c78b77048934248b7f08897c2404eb0a8934248b7f08897c24048b3c24ff7424048b3783fe0175338b4f0c8b7424483bce7d0abe01000000e9690900008b7424482bce710e8d642424b8f80466b18b5d04ff2383c101e97f080000be0100000083fe030f84050300008b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742420897704c707184642b1578b7c246c8b3f8d0c7d0100000083f9017507bfc4e268b1eb7e89cf83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878e02000089f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe00000000d1ef893ac6420460c64205608b7c246c8d77048d7a06d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abea0ea67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ea01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043227d1efc6443a01278062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c24088b0789ff8b5f0489ff8b7f0857e8e5cfffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0e268b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fce268b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460407000000c706010000008b4424548b7c242cff34245756bb03000000e8f080ffff8d64241ce9080400008d642428b8780566b18b5d04ff238d642428b8780566b18b5d04ff238d64240c8b3783fe01751e8b770c8b7c243c2bf7710e8d642418b8f80466b18b5d04ff2383c601eb0e8d642418b830e368b18b5d04ff238b7c242c8b3f8b1783fa01753d8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642418b8a43266b18b5d04ff238b7c77feeb05bf003b66b1eb3b8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642418b8783266b18b5d04ff238b7c77feeb05bf003b66b18b1783fa0375268b7f043bfe7c0e8d642418b81cd568b18b5d04ff2389fe3b650c7305ff552ccd40e94effffff8b3783fe070f85ea0000008b570489d68b52048b1283fa017507ba03000000eb05ba0100000083fa030f85c0000000568b3c248b77048b7e08ff760cff76108b3783fe03750c8b7f048b3f83ff03750aeb0a8b7f0483ff037402eb6eba8c5f68b16870e368b18b442410bb78e368b1e882e4faff89c783ff037507bf03000000eb05bf0100000083f70283f70283ff0375388d64240c8b7c24508b74245c8b5424448b4c241c57ff74241856ff74240c5251b880e368b1bb98e368b1e8a90800008d64240ce9390200008b74240c8b3e83ff0b751389f68b7e0489f6ff760c8b742420e9d9020000bf01000000eb148d642418eb048d642418b884e468b18b5d04ff2383ff010f851c0100008b3c2483ff038d64240475388d6424088b7c24508b74245c8b5424448b4c241c57ff74241856ff74240c5251b8b0e468b1bbcce468b1e8230800008d64240ce9d30000008b7c24648b74245c8b55008d52f03b55087305ff5528cdc0895500c742fc03000000c74208100666b1897204893a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b7424088977088b742418897704c707050000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706d04166b18b7c24448b1c242bdf8d642404710e8d64241cb8f80466b18b5d04ff238d64241083c3018b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707010000008b44242c57e8539cffffe9db0000008d6424048b078b78048b3783fe0175518b770c8b7c24443bf77d288b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c70701000000e9510100008b7c24442bf7710e8d642420b8f80466b18b5d04ff2383c601e9810000008b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707010000008b3783fe0775228d6424048b7c24408b7424308b54243c5756528b5c240ce8c7ceffff8d642410eb2e8b7424448b1c242bde8d642404710e8d64241cb8f80466b18b5d04ff238d64241083c3018b44242c57e8739bffff5883c408c244008b7c24348b3f8b1783fa01753d8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642420b8a43266b18b5d04ff238b7c77feeb05bf003b66b1eb3b8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642420b8783266b18b5d04ff238b7c77feeb05bf003b66b18b1783fa0375268b7f043bfe7c0e8d642420b81cd568b18b5d04ff2389fe3b650c7305ff552ccd41e94effffffe9ebfeffff83ff01751383fe017507bf03000000eb05bf01000000eb5e8b17ff7704f7c60100000075488b1e8b4e048b0283f80d75318b52048b1b3bd37507ba03000000eb05ba0100000083fa0375115a89ce89d73b650c7305ff552ccdc0eba48d642404eb048d642404bf01000000eb098d642404bf0100000083ff03740b8d642404bf01000000eb378b3c248b770c8d6424048b7e048b3f83ff057507bf01000000eb1c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e980fcffff8b7424388b368b1683fa01753d8b76048b5efc89dac1e308c1eb0783cb013bcb7d21c1e208c1ea0783ca013bca720e8d642424b8a43266b18b5d04ff238b744efeeb05be003b66b1eb3b8b76048b5efc89dac1e308c1eb0783cb013bcb7d21c1e208c1ea0783ca013bca720e8d642424b8783266b18b5d04ff238b744efeeb05be003b66b18b1e89da83fb0375268b76043bf17c0e8d642424b81cd568b18b5d04ff2389f13b650c7305ff552ccd82e94cffffff89d683fe017507be01000000eb0a83fe07750abe03000000e9b5f6ffff8d642424b854dc68b18b5d04ff23f4000000|@17790,1,@3282|540,1,@8057 633,0,@10267 638,1,@4989 693,0,@8086 740,1,@7283 748,0,@15147 805,0,@8088 815,1,@7273 852,0,@4714 859,0,1 866,0,0 967,0,0 989,0,@9455 1007,0,0 1053,0,@8091 1077,0,@17771 1094,0,4 1115,0,16777215 1173,0,0 1224,0,@14881 1244,0,4 1265,0,16777215 1323,0,0 1400,0,3 1423,1,@8045 1458,0,0 1495,0,@10448 1530,0,@17772 1565,0,@10448 1638,0,@10826 1673,0,@17774 1709,0,0 1716,0,0 1723,0,3 1729,0,0 1747,0,1 1752,1,@7987 1770,0,@9465 1784,0,@9465 1820,0,@9455 1839,0,@17776 1900,0,@9990 1916,0,@10093 1961,0,@9988 1977,0,@10093 2000,0,@17678 2053,0,1 2060,0,0 2119,0,@16444 2124,0,@17779 2133,0,@17780 2138,1,@7438 2150,0,1 2157,0,0 2205,0,@17781 2210,0,@17782 2215,1,@8094 2259,0,0 2276,0,@17786 2339,0,@17788 2344,0,@17789 2349,1,@8094 2399,0,@9473 2450,0,2 2488,0,@10184 2512,0,@9455 2559,0,0 2569,1,@8004 2636,0,0 2658,0,@9455 2706,0,0 2741,1,@8048 2771,0,@9455 2793,1,@8004 2856,0,@9990 2872,0,@10093 2917,0,@9988 2933,0,@10093 2956,0,@17678 2998,0,1 3005,0,0 3046,0,1 3053,0,0 3090,0,0 3101,0,0 3115,0,0 3142,0,0 3233,0,@9990 3249,0,@10093 3294,0,@9988 3310,0,@10093 3335,0,@17678 3369,0,0 3381,0,1 3395,0,@17736 8086:D3,396|3b650c7305ff552ccd0589c7528b378d1c750100000083fb01750abaecd668b1e98d00000089de83c61c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872c01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708beecd668b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c248b4f04894e04c706444442b18b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000895104c701070000008b55008d52f43b55087305ff5528cdc2895500c742fc02000000c7420401000000890a8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000895110c7410c01000000c7410801000000c7410401000000c7010100000089ff8b470889ff8b570c8d6424045251ff742408bb030000008974240ce9ed78ffff8d642404b8780566b18b5d04ff23f40000|@17768,1,@3271|28,0,@17694 48,0,4 69,0,16777215 127,0,0 153,0,@17694 158,0,14 215,0,@8087 250,0,3 283,0,0 321,0,0 328,0,0 335,0,0 341,0,0 366,0,1 375,1,@7987 384,0,@9465 8087:D3,24|3b650c7305ff552ccd0589c38b4204e900fff7fff4000000|@17695,1,@3270|16,1,@7127 8088:D3,136|3b650c7305ff552ccd0d89c68b7a0c89f98b7f208b49308b45008d40f43b45087305ff5528cdce894500c740fc0200000089480489388b7d008d7fec3b7d087305ff5528cd4d897d00c747fc04000000895f0c8b4a08894f088b5204895704c7070c4542b1ff7424045789f3e83738f9ff89c78b3f8b3424893e8d642404b801000000c20400f400|@15197,1,@3274|97,0,@8089 109,1,@7283 127,0,0 8089:D3,204|3b650c7305ff552ccd058b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c706ec4542b18b4d008d49f43b4d087305ff5528cd45894d00c741fc02000000894104c701070000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b42088b520c5251ff742408bb030000008974240ce93877fffff4000000|@17769,1,@3273|44,0,@8090 79,0,3 112,0,0 150,0,0 157,0,0 164,0,0 170,0,0 187,0,1 196,1,@7987 8090:D3,24|3b650c7305ff552ccd0589c38b4204e958fdf7fff4000000|@17695,1,@3272|16,1,@7127 8091:D3,24|3b650c7305ff552ccd0589c38b4204e92cfdf7fff4000000|@17770,1,@3275|16,1,@7127 8092:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@17676,1,@3276|11,0,2 8093:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@17676,1,@3277|11,0,1 8094:D3,1076|3b650c7305ff552ccd0950538b7c24208b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706dc4a42b18b7c24208b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702584b42b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7424208b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d44b42b1578b7c24208b3f8d0c7d0100000083f9017507bfc4e268b1eb7e89cf83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873d03000089f38d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183ee02c74472fe00000000d1ef893ac6420460c64205608b7c24208d77048d7a06d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abea0ea67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f879902000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043227d1efc6443a01278062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742410897704c7070700000057b801000000e833fef7ff89c7ba48f167b18b44242457ff7424106a01bbd1070000e8170af8ff89c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2410897a04c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702206066b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fce268b18b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410407000000c701010000008b4424185e8d64240c8b542404bb03000000894c241089542414897424188b3c24897c240c83c40ce96472ffff8d642410b8780566b18b5d04ff238d642410b8780566b18b5d04ff23f4000000|@17785,1,@3281|47,0,@8095 86,0,@8096 157,0,@8097 181,0,@17771 198,0,4 219,0,16777215 277,0,0 328,0,@14881 348,0,4 369,0,16777215 427,0,0 504,0,3 542,0,3 548,0,0 553,1,@7128 560,0,@14942 576,0,1000 581,1,@7139 622,0,3 655,0,0 692,0,@10625 758,0,@10448 831,0,@10448 904,0,@10826 939,0,@17774 975,0,0 982,0,0 989,0,3 995,0,0 1013,0,1 1040,1,@7987 1049,0,@9465 1063,0,@9465 8095:D3,104|3b650c7305ff552ccd058b7a048b5720ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@17783,1,@3278|59,0,0 95,0,0 8096:D3,104|3b650c7305ff552ccd058b7a048b5730ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@17783,1,@3279|59,0,0 95,0,0 8097:D3,24|3b650c7305ff552ccd0589c38b4204e970f7f7fff4000000|@17784,1,@3280|16,1,@7127 8098:D3,76|3b650c7305ff552ccd095053ff74240cf644240401752c8b7c24048b1f89ffff7704ff7424048b442410e83100000089c25e891424897424043b650c7303ff552cebcd5883c408c20400f400|@10026,1,@3284|43,1,@8099 8099:D3,300|3b650c7305ff552ccd098b3389f781fe9400c0b0754a81ff9400c0b075388b7b088b7f088b3783fe0175248b470483c002710ab8f80466b18b5d04ff238b7c24043bc77e03c204008b442404c204008b442404c20400b8483366b18b5d04ff2389fe81ffac00c0b0754a81feac00c0b075388b7b088b7f048b3783fe0175248b470483c002710ab8f80466b18b5d04ff238b7c24043bc77e03c204008b442404c204008b442404c20400b8483366b18b5d04ff2389f781fe9c00c0b0751e81ff9c00c0b0750c8b7b088b7f048b442404eb11b8483366b18b5d04ff238b442404c20400f7c701000000753d8b178b77048b52088b0a83f901751c8b520483c202710ab8f80466b18b5d04ff233bd07e02eb0289c2eb0289c289d089f73b650c7305ff552ccd81ebbbc20400f4|@17792,1,@3283|16,0,@4613 24,0,@4613 52,0,@9455 87,0,@9999 100,0,@4616 108,0,@4616 136,0,@9455 171,0,@9999 184,0,@4614 192,0,@4614 211,0,@9999 259,0,@9455 8100:D3,1664|3b650c7305ff552ccd0950538b7c24208b378b7c241c2bf7710e8d642408b8f80466b18b5d04ff2383c6018b7c24043bfe751b5ebf943966b18b1789168b7f04897e04b80100000083c404c218008b7424048b7c24188b3f8b1783fa01753d8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642408b8a43266b18b5d04ff238b7c77feeb05bf003b66b1eb3b8b7f048b4ffc89cac1e108c1e90783c9013bf17d21c1e208c1ea0783ca013bf2720e8d642408b8783266b18b5d04ff238b7c77feeb05bf003b66b18b1783fa0375268b7f043bfe7c0e8d642408b81cd568b18b5d04ff2389fe3b650c7305ff552ccd40e94effffff8b1789d683fa010f8503020000ff77048b3c248b7f048b3783fe050f8571010000ff77048b47088b7c2404ff77088b7c24248b5424288b75008d76f03b75087305ff5528cd85897500c746fc03000000895608897e04c706345442b18b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707605542b157bb5ce668b1e81269f4ff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b7c2404897e04c706050000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a8d642408895708897704c707d04166b1578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707010000008b442418578b5c240ce8e88bffff8b7c240883c70257710e8d642410b8f80466b18b5d04ff236a016a018b7c24308b74242c8b5424288b4c24248b5c24208b44241c5756525153508b4424208d5c2418e8a1fdffff5a5e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89375e8916897e04b80100000083c404c218008b7c240883c70257710e8d642410b8f80466b18b5d04ff236a016a018b7c24308b74242c8b5424288b4c24248b5c24208b44241c5756525153508b4424208d5c2418e823fdffff5a5e8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89375e8916897e04b80100000083c404c2180083fe070f85520300008b77048b7f088b56048b0a83f9010f8530030000ff7204ff7208ff72108b7608ff36ff76048b7608f7c7010000000f851e0100008b570489d0f6c2017407ba03000000eb05ba0100000083f20283fa030f85fc000000f7c701000000753aff3783f80175035feb2ee80205000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938e8b7cee3ff89c7eb05bf100666b1578b3c248b3f8d1c7d0100000083fb01750e8d642404be64e668b1e98500000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01776189f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf64e668b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d6eb0e8d642420b8780566b18b5d04ff238b7c24248b1f89df83c702710e8d64241cb8f80466b18b5d04ff238b542424893a8b7c24208b3f89fa83c202710e8d64241cb8f80466b18b5d04ff238b4c242089118b4d008d49f03b4d087305ff5528cdc8894d00c741fc030000008971085e8971045e89318b75008d76f43b75087305ff5528cd8a897500c746fc02000000897e04c706010000008b7c24048b3f83ff03750b8b7c24048b7f048b17eb078b7c24048b57048b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707010000008b55008d52e83b55087305ff5528cdca895500c742fc0500000058894210895a0c897a088b7c2404897a04c702010000008b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707010000008b442420578b5c2414e84288ffff8b7c241083c70257710e8d642418b8f80466b18b5d04ff236a016a018b7c24388b7424348b5424308b4c242c8b5c24288b4424245756525153508b4424208d5c2418e8fbf9ffff5f5e8d6424048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a048b3c24893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89378b7424088916897e04b80100000083c410c218008d642408b874e668b18b5d04ff238d642408b874e668b18b5d04ff23f40000|@17806,1,@3291|31,0,@9455 53,0,@10068 68,0,0 134,0,@9990 150,0,@10093 195,0,@9988 211,0,@10093 234,0,@17678 348,0,@8101 383,0,@8102 389,0,@17801 394,1,@6634 438,0,2 481,0,@10184 518,0,0 532,1,@8004 551,0,@9455 652,0,0 677,0,@9455 778,0,0 860,0,1 867,0,0 902,1,@8106 941,1,@4827 950,0,@9473 977,0,@17802 997,0,4 1018,0,16777215 1072,0,0 1081,0,@17802 1086,0,8 1126,0,@9465 1153,0,@9455 1186,0,@9455 1268,0,0 1332,0,0 1381,0,0 1452,0,0 1466,1,@8004 1485,0,@9455 1623,0,0 1638,0,@17803 1652,0,@17803 8101:D3,280|3b650c7305ff552ccd058b78048b3783fe0175258b770c8b4a0889cf3bf17d06b801000000c32bf7710ab8f80466b18b5d04ff2383c601eb06b801000000c38b7a048b3f8b0f83f90175398b7f048b5ffc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b7c77feeb05bf003b66b1eb378b7f048b5ffc89d9c1e308c1eb0783cb013bf37d1dc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b7c77feeb05bf003b66b18b0f83f90375228b7f043bfe7c0ab81cd568b18b5d04ff2389fe3b650c7305ff552ccd44e95bffffff8b3783fe0175208b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b85ce568b18b5d04ff23f40000|@17796,1,@3285|33,0,0 43,0,@9455 58,0,0 110,0,@9990 126,0,@10093 167,0,@9988 183,0,@10093 202,0,@17678 268,0,@17793 8102:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468d8e568b1681ce668b16a01548304240ce8ed88f4ff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@17800,1,@3288|22,0,@17797 27,0,@17799 39,1,@6661 8103:D3,12|3b650c7305ff552ccd01c3f4|@17798,1,@3286| 8104:D3,12|3b650c7305ff552ccd01c3f4|@17798,1,@3287| 8105:D3,12|3b650c7305ff552ccd01c3f4|@17800,1,@3289| 8106:D3,108|3b650c7305ff552ccd01a8017556ff308b4004e8e8ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700380e66b1c3b801000000c3f400|@14987,1,@3290|95,0,@9549 101,0,0 8107:D3,84|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f40000|@17807,1,@3292|33,0,@9455 67,0,@9990 8108:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9c49cf4fff4000000|@13922,1,@3293|24,1,@6694 8109:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3295| 8110:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3296| 8111:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3297| 8112:D3,72|3b650c7305ff552ccd05528b3c248b7f088b5724b801000000ff1289c7578b7c24048b7f048b5724b801000000ff1289c383fb0175055883c404c35883c404e918000000f4000000|@17809,1,@3299|21,0,0 41,0,0 64,1,@8113 8113:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3298| 8114:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17809,1,@3300|11,0,0 8115:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3301| 8116:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3302| 8117:D3,52|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c3f4000000|@14671,1,@3303| 8118:D3,72|3b650c7305ff552ccd05528b3c248b7f088b5724b801000000ff1289c7578b7c24048b7f048b5724b801000000ff1289c383fb0175055883c404c35883c404e918000000f4000000|@17811,1,@3305|21,0,0 41,0,0 64,1,@8119 8119:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3304| 8120:D3,24|3b650c7305ff552ccd01b894e768b18b5d04ff23f4000000|@17811,1,@3306|11,0,@17813 8121:D3,24|3b650c7305ff552ccd01b8e8e768b18b5d04ff23f4000000|@17811,1,@3307|11,0,@17817 8122:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17811,1,@3308|11,0,0 8123:D3,124|3b650c7305ff552ccd0d525053ff742410f644240401755c8b7c24048b1f89ffff77046a016a018b7c24188b7f04ff74240c5483042404578b442420e84f0000005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceb9d5883c40cc20400f4|@10026,1,@3313|61,1,@8124 8124:D3,1808|3b650c7305ff552ccd09508b7c2410ff378b7c2414ff77048b3389f781fe9c00c0b00f85c900000081ff9c00c0b00f85af0000008b7b08ff378b7704f7c601000000744a8d6424048b7424108b560c8b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24088938ff128b7424148b7c2404893e5f8d642408897e04b801000000c20c008b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b7c2408893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707010000006a016a015657e95e0300008d64240cb8483366b18b5d04ff2389fe81ffac00c0b00f855501000081feac00c0b00f853b010000ff73088b3c24ff770c8b7c2404ff77088b0424e80106000089c7578b7c24208b57288b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2414897e04c706010000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2408894f0c8b4c2404894f088977048b74241889378b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24188938ff128b54241483c202710e8d64241cb8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000008b74240c8977085e897704c707010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b7c2410893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240c894f0489378b7424208916897e04b80100000083c418c20c008d64240cb8483366b18b5d04ff2389f781fe9400c0b00f85c201000081ff9400c0b00f85a8010000ff73088b3c248b7f088b3f83ff0775478b7c24148b57088b45008d40f43b45087305ff5528cd04894500c740fc020000005f8978048b7c24088938ff128b7424148b7c2404893e5f8d642408897e04b801000000c20c008b3c248b77048b3c24ff770c8b7c24048b4f108b7c24048b5f148b7c24048b47188b55008d52f43b55087305ff5528cd4b895500c742fc020000008b7c240c897a04c702010000008b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000894718895f14894f108b0c24894f0c8957088977048b74241089378b7424188b56088b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24108938ff128b54240c83c202710e8d642414b8f80466b18b5d04ff238b7d008d7fec3b7d087305ff5528cd04897d00c747fc040000008b74240489770c5e8d642404897708c7470405000000c707050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000598d642404894f0489378b74240c8916897e04b80100000083c404c20c008d64240cb8483366b18b5d04ff238b7424148b7c2404893e5f8d642404897e04b80100000083c404c20c00f6442404010f85b90100008b7c2404ff378b7c2408ff77048b7c2404ff378b7c2408ff77048b7c240cff770c8b7c24108b57108b7c24108b4f148b7c24108b5f188b7c2414ff378b7c24188b7f04ff37ff77048b7d008d7ff43b7d087305ff5528cd0e897d00c747fc020000008b742404897704c707010000008b75008d76e03b75087305ff5528cd8e897500c746fc07000000895e18894e148956108b54240c89560c897e088b7c2410897e048b7c2414893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b54240483c202710e8d642440b8f80466b18b5d04ff238b4d008d49ec3b4d087305ff5528cd84894d00c741fc040000008b74241c89710c8b74240c897108c7410405000000c701050000008b75008d76f43b75087305ff5528cd86897500c746fc02000000894e048b4c2404890e8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000005b8d64240489590489318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a8b742410895424188974241c3b650c7303ff552c83c418e93cfeffff8b3c248b3f897c24085f8b7f04897c24088b7c2404ff7424088b7424108b168b7424108b4e048b7424108b460c8b7424108b5e088b75008d76ec3b75087305ff5528cd8f897500c746fc0400000089460c895e08894e0489168b542424ff720cba01000000f7c70100000075348b078b4f048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000895304890389da89cf3b650c7305ff552ccdc4ebc48b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c242089388b1424ff128d6424048b7424288b3c248b3f893e5f8b7f04897e04b80100000083c41cc20c00f400|@17825,1,@3312|30,0,@4614 42,0,@4614 135,0,0 212,0,0 232,0,@9999 245,0,@4616 257,0,@4616 287,1,@8125 336,0,0 440,0,@9455 488,0,0 572,0,0 587,0,@9999 600,0,@4613 612,0,@4613 702,0,0 777,0,0 892,0,@9455 945,0,2 951,0,2 1036,0,0 1051,0,@9999 1079,0,0 1207,0,0 1318,0,@9455 1370,0,2 1376,0,2 1638,0,0 1796,0,0 8125:D3,36|3b650c7305ff552ccd018b00ff3424bb01000000c74424043ce868b1e923c8e5fff40000|@17824,1,@3311|16,0,0 24,0,@17821 29,1,@4949 8126:D3,76|3b650c7305ff552ccd095053ff74240cf644240401752c8b7c24048b1f89ffff7704ff7424048b442410e83100000089c25e891424897424043b650c7303ff552cebcd5883c408c20400f400|@10026,1,@3310|43,1,@8127 8127:D3,608|3b650c7305ff552ccd098b3389f781feac00c0b00f85bc00000081ffac00c0b00f85a6000000ff73088b3c248b77048b1683fa010f8587000000ff7604ba44e868b189ff8b4708ff1289c78b75008d76f03b75087305ff5528cd80897500c746fc030000008b542404895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c204008d6424048b442404c20400b8483366b18b5d04ff2389fe81ff9400c0b00f85a200000081fe9400c0b00f858c0000008b4b088b79088b3783fe0175788b77048b790c8b55008d52ec3b55087305ff5528cdc2895500c742fc04000000894a0c897a08c7420405000000c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424048b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c204008b442404c20400b8483366b18b5d04ff2389f781fe9c00c0b0751e81ff9c00c0b0750c8b7b088b7f048b442404eb11b8483366b18b5d04ff238b442404c20400f7c7010000000f85980000008b1fff77048b73088b1683fa0175738b56048b730c8b4d008d49ec3b4d087305ff5528cdcd894d00c741fc0400000089590c897108c7410405000000c701050000008b75008d76f43b75087305ff5528cd87897500c746fc02000000894e0489168b55008d52f43b55087305ff5528cdc1895500c742fc020000008942048932eb0289c25e89d089f73b650c7305ff552ccd81e95cffffffc20400f4000000|@17823,1,@3309|16,0,@4616 28,0,@4616 62,0,@17822 113,0,0 205,0,@9999 218,0,@4613 230,0,@4613 294,0,2 300,0,2 381,0,@9999 394,0,@4614 402,0,@4614 421,0,@9999 505,0,2 511,0,2 8128:D3,24|3b650c7305ff552ccd0589c38b4204e90077f8fff4000000|@17826,1,@3314|16,1,@7218 8129:D3,584|3b650c7305ff552ccd09538b78088b58108b501483ff010f85a90000008b700481feb4d967b17502eb268b3e8d3c7d0100000083ff17751fbfb4d967b18d76048d7f04b90b0000003bc9f3a67402eb07bfa0ed67b1eb0f8b7c2414526a0157e8f801000089c7578b4424048b700889c08b581089c08b78148b4c24188b55008d52ec3b55087305ff5528cdcb895500c742fc04000000897a0c897208894a04c702986e42b1575652e8af01000089c7578b3c248b5f1489de89ff8b570889f7be01000000eb0e8d642404b89ce968b18b5d04ff23f6c20175288b420489f183c102710e8d64240cb8f80466b18b5d04ff2389c289ce3b650c7305ff552ccdccebd383ee0103fe710e8d64240cb8f80466b18b5d04ff232bfb710e8d64240cb8f80466b18b5d04ff2383c70183ff017d098d64240ce90301000081ffffffff010f8df300000089f98d347d02000000f7de0375003b750872053b75007205ff5528cd0a897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f18b7d008d7ff03b7d087305ff5528cd0a897d00c747fc03000000895f08894f04c7071c6f42b1578b7d008d7ff03b7d087305ff5528cd0a897d00c747fc03000000895f08894f04c707846f42b1578b7c24288b7424308b54242c68100666b157565253518b4424248b5c2420e8f40700008b7c24288b7424308b54242c8b4c24208b5c241868100666b1ff74240857565251538b4424288b5c2424e8b52c000089c78b74241c8b142489168d642410897e04b80100000083c404c21c008d64240cb8383066b18b5d04ff23f400|@17927,1,@3369|34,0,@14766 57,0,@14766 68,0,5 81,0,@14902 96,1,@8130 161,0,@8137 169,1,@8130 192,0,0 203,0,@17830 232,0,@9455 269,0,@9455 287,0,@9455 315,0,16777215 371,0,0 413,0,@8138 452,0,@8139 470,0,@9473 488,1,@8140 513,0,@9473 535,1,@8163 558,0,0 573,0,@9964 8130:D3,460|3b650c7305ff552ccd0953ff30ff7004ff700cb815000000e843f4e3ff89c7578b75008d76f43b75087303ff5528897500c746fc020000008b142489d7895604c706486a42b18b55008d52f43b55087305ff5528cdc0895500c742fc0200000089ff89f9897a04c702b86b42b18b7d008d7ff43b7d087305ff5528cd46897d00c747fc0200000089c9894f04c707286d42b18b5d008d5bf03b5d087305ff5528cdc4895d00c743fc03000000895308897304893b8b7c2418ff7424106a0168100666b1576a018b442420e86d26f9ff8b3c248b3783fe030f859d00000089ff8b770489ff8b7f0c8d642404ff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c70701000000eb0689ff8d6424048b7424188b5424148b4c241c8b45008d40e43b45087305ff5528cdc6894500c740fc060000008948148950108b142489500c8d6424048970088b34248970048d642404893883c408c20c00f4|@17828,1,@3321|20,0,10 25,1,@4893 66,0,@8131 105,0,@8133 142,0,@8135 191,0,@9473 203,1,@7293 257,0,@10109 311,0,0 372,0,0 8131:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c7079c00c0b0578b7c24088b47048b5c2404e852a1e5ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9d1aee5fff4|@17827,1,@3316|45,0,0 55,0,@9574 61,0,@4614 78,1,@4911 116,0,0 137,1,@8132 167,1,@4928 8132:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@3315|26,0,@4614 145,0,0 8133:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c707ac00c0b0578b7c24088b47048b5c2404e8e29fe5ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e961ade5fff4|@17827,1,@3318|45,0,0 55,0,@9574 61,0,@4616 78,1,@4911 116,0,0 137,1,@8134 167,1,@4928 8134:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@3317|26,0,@4616 145,0,0 8135:D3,172|3b650c7305ff552ccd0552ff308b70048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704640f66b1c7079400c0b0578b7c24088b47048b5c2404e8729ee5ff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83300000089c68d6424048b7c24048b47045b8d642404ff342489742404e9f1abe5fff4|@17827,1,@3320|45,0,0 55,0,@9574 61,0,@4613 78,1,@4911 116,0,0 137,1,@8136 167,1,@4928 8136:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@3319|26,0,@4613 145,0,0 8137:D3,112|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b7a08f7c701000000752c8b078b570483fe017501c389f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebccb8643c66b18b5d04ff23f400|@17829,1,@3322|33,0,@9455 75,0,@9455 101,0,@10105 8138:D3,84|3b650c7305ff552ccd0589c68b4a0889cf3bf17d06b801000000c32bf7710ab8f80466b18b5d04ff2383c6018b4a0489cf8b49fcc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b4477fec3f4000000|@17833,1,@3323|22,0,0 32,0,@9455 66,0,@9988 8139:D3,84|3b650c7305ff552ccd0589c68b7a082bf7710ab8f80466b18b5d04ff2383c6018b4a0489cf8b49fcc1e108c1e90783c9013bf1720ab8783266b18b5d04ff238b7c77fe83ff017506b8b8d367b1c38b07c3f40000|@17834,1,@3324|20,0,@9455 54,0,@9988 73,0,@14727 8140:D3,204|3b650c7305ff552ccd09508b3c248b770481feb4d967b175068d642404eb2a8b3e8d3c7d0100000083ff177524bfb4d967b18d76048d7f04b90b0000003bc9f3a67402eb0c8d642404b801000000c21800ff33ff74241c8b7c241c8b5424188b4c24248b5c24148b4424108b75008d76d83b75087305ff5528cd8f897500c746fc09000000c7462060ea68b189461c895e18894e14895610897e0c8b7c2408897e085f897e04c706cc7042b1588d642404bb01000000897424188b3c24897c241483c414e963bae5fff40000|@17879,1,@3347|19,0,@14766 46,0,@14766 57,0,5 74,0,0 136,0,@17835 168,0,@8141 178,0,0 197,1,@4949 8141:D3,152|3b650c7305ff552ccd0d525053ff742410f64424040175768b74240489f7ff3689ffff77048b74241489f7ff760489ff89f8ff770889c08b780c89c08b701089c08b501489c08b481889c08b581c89c08b4020ff742410ff742408ff7424085756525153508b44243c8b5c2430e83a00000089c28d6424085e8d642404891424897424043b650c7303ff552ceb835883c40cc20400f40000|@10026,1,@3346|110,1,@8142 8142:D3,2116|3b650c7305ff552ccd09508b3b89fe81ff9c00c0b0757781fe9c00c0b07561ff73088b3c24ff378b7c2404ff77048b7424308b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d07942b1578b7c24308b078b5c2410e80f9ae5ff89c7f7c70100000075078b3fe961070000bf01000000e9fa0200008d642404b8483366b18b5d04ff2389f781feac00c0b0754081ffac00c0b0752aff73088b7c24248b078b5c2404e8c299e5ff89c7f7c70100000075078b3fe94d020000bf01000000eb1a8d642404b8483366b18b5d04ff238d642404b801000000c2240083ff017536588b7424248b54241c8b4c24188b5c2414895c241cbb30ec68b1894c242089542424897424288b7c2404897c241883c418e9a51800008b3fff77088b7c2404ff77088b7c24208b3f8d3c7d01000000578b7c24108b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c240ce9aa00000083fb01750d8d6424048b7c2420e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242489f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b74240c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ae00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7ff742414ff742408ff742408578b7424408b5424388b4c24348b5c242c8b442428894424308b442408895c24348b5c2404894c24388954243c8b54240c897424408b3c24897c24448b7c2420897c242c83c42cff228d6424188d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff23f7c70100000075588b178b77048b1a89d981fbac00c0b0753989cf81ffac00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642408b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e96afdffff83ff017541ff74240c8b4424048b7424388b5424308b4c242c8b5c2428895c243089c38b0424894c2434895424388974243c8b7c2418897c242c83c42ce9081600008d642408ff378b3c24ff378b7c24048b7f048b7424108b760c8b4e0489ca8b0983f903751b89d68b760481febc03c0b07507be03000000eb05be01000000eb05be0100000083fe030f84b10000008b7424108b760c8b76048b1683fa0175748b4e0c8b34248b560c8b7424283bce7d02eb5f8b7424282bce710e8d64241cb8f80466b18b5d04ff2383c1018b75008d76f83b75087305ff5528cd86897500c746fc0100000089168b5424248b52fcc1e208c1ea0783ca013bca720e8d64241cb8003566b18b5d04ff238b54242489744afeeb008b7424108b760c8b76048b0e89ca83f90375058b7608eb4d83fa0175058b7604eb438b5604be01000000eb0c8d64241cb801000000c22400f6c20175288b5a0489f183c102710e8d64241cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd38b14248b520c8b52048b1a89d983fb0375058b5208eb3f83f90175058b5204eb358b4a04ba01000000f6c10175288b410489d383c302710e8d64241cb8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebd33bf274568d642404ff3424ff7424148b74240c8b5424408b4c24388b5c24348b442430894424308b442404895c24348b1c24894c24388954243c89742440c7442444a8ed68b18b7c2420897c242c83c42ce99c1700008d642410f644240c017407be03000000eb05be0100000083f60283f60283fe03745ef7c70100000074568d642404ff3424ff7424148b74240c8b5424408b4c24388b5c24348b442430894424308b442404895c24348b1c24894c24388954243c89742440c744244418ee68b18b7c2420897c242c83c42ce9201700008d6424108b7c24108b7f0c8b7f048b3f83ff057507bf03000000eb05bf0100000083ff030f84850100008b7c24108b7f0c8b7f048b1789d683fa05750e8d64241cb8508f67b18b5d04ff2383fe0175218b7f088b3783fe0375078b7f048b3feb038b7f0483ff037502eb1e8d642404eb0e8b7f048b3f83ff03740e8d642404bf01000000e9c90000008b3c248b7f0c8b7f048b3f83ff0575788b3c24ff378b7c24048b4704e8c61b000089c78b45008d40e83b45087305ff5528cd80894500c740fc05000000c74010010000008b74240489700c5e8d642404897008897804c7000b000000ba8c5f68b16850ee68b1bb58ee68b1e893a9faff89c783ff037507bf03000000eb05bf0100000083f702eb3e5f8b7f0c8b7f048b1789d683fa05750e8d642418b8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b3feb038b7f04eb058b7f048b3f83f70283ff037552ff3424ff7424148b74240c8b5424408b4c24388b5c24348b442430894424308b442404895c24348b1c24894c24388954243c89742440c744244460ee68b18b7c2420897c242c83c42ce97b1500008d6424108d642418eb048d64241cb801000000c22400f7c70100000075588b178b77048b1a89d981fb9c00c0b0753989cf81ff9c00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642414b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e939fbfffff40000|@17878,1,@3345|17,0,@4614 25,0,@4614 81,0,@8143 97,1,@4911 119,0,0 133,0,@9999 146,0,@4616 154,0,@4616 174,1,@4911 196,0,0 207,0,@9999 221,0,0 255,0,@17852 283,1,@8158 381,0,4 402,0,16777215 460,0,0 534,0,@9551 551,0,4 572,0,16777215 630,0,0 761,0,@9465 775,0,@9465 803,0,@4616 813,0,@4616 857,0,@9999 881,0,0 952,1,@8158 1000,0,@4714 1007,0,1 1014,0,0 1021,0,0 1083,0,@9455 1148,0,@10015 1205,0,0 1216,0,0 1243,0,@9455 1305,0,0 1329,0,@9455 1420,0,@17869 1436,1,@8159 1452,0,1 1459,0,0 1544,0,@17872 1560,1,@8159 1586,0,1 1593,0,0 1630,0,@13866 1692,0,0 1730,1,@8160 1765,0,0 1789,0,5 1794,0,@16444 1799,0,@17874 1804,0,@17875 1809,1,@7438 1821,0,1 1828,0,0 1858,0,@13866 1965,0,@17876 1981,1,@8159 2000,0,0 2026,0,@4614 2036,0,@4614 2080,0,@9999 2104,0,0 8143:D3,268|3b650c7305ff552ccd058b7a048b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017507bfe46966b1eb338b3f8b3781feec01c0b075058b5f08eb0ab8483366b18b5d04ff23ba68ea68b16a01ff742404c744240890eb68b1e989000000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075058b5f08eb80b8483366b18b5d04ff23f40000|@17851,1,@3338|33,0,@4656 84,0,0 94,0,@10769 106,0,@4656 118,0,@9999 128,0,@17836 142,0,@17847 147,1,@8144 168,0,@4656 219,0,0 229,0,@11247 244,0,@4656 256,0,@9999 8144:D3,1776|3b650c7305ff552ccd0d5253ff70048b3c2483ff010f85c40300008d642404ff308b3c248b570c89d68b52048b0a83f9050f85fb010000ff7204ff720889ffff378b7c241083ff017f0c8d642418b8bc5466b1c20800b801000000e8a4cbf7ff89c7578b7c24188b5708ff34248b4424108b5c2418ff1289c7576a016a018b44241089e3e88b66f4ff8d6424045e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5c241c83eb02710e8d642424b8f80466b18b5d04ff238b7c24208b57048b7c242c8b742428ff74240857568b44241cff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706387666b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175065f83c41ceb0e8b0424e85905000089c78d6424208b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcf667b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c208008b54240483fa017f0c8d64240cb8bc5466b1c2080089ff8b76048b0e89ca83f905750e8d64240cb8508f67b18b5d04ff2383fa01751b8b76088b1683fa0375078b76048b36eb038b760483fe03750ceb118b76048b3683fe037407bae0c967b1eb05ba28ca67b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c706070000005689ffff7704b801000000e838c9f7ff89c78b7424108b5608578b4424048b5c2410ff1289c7578b7c240c8b076a016a0189e3e82064f4ff8d6424045e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175065f83c404eb0e8b0424e81604000089c78d6424088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c7000100000083c40cc20800ff308b342489f7ff3689ffff77088b7c241083ff017f0c8d642418b8bc5466b1c20800b801000000e8f8c7f7ff89c7578b7c240cff77048b0424e8ae03000089c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008b5424088957108b54241089570c8b54240c895708897704c7070b000000578b7c24208b5708ff7424088b4424088b5c2420ff1289c7578b7c24188b076a016a0189e3e89262f4ff8d6424045e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c743047cea68b1893b83fb0175035eeb0e8b0424e87703000089c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707786d66b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70660f867b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c242083ef0257710e8d64242cb8f80466b18b5d04ff23f6442420010f85d90000008b7424208b3e89f6ff76048b078b7f0c8b54242c8b720c89d28b52048b4c24388b5c243457ff74240856ff74241852ff742428515389c3b803000000e8f202000089c7578b5c240883eb02710e8d642434b8f80466b18b5d04ff238b7424308b7e0c89f68b76048b54243c8b4c243857ff74241456ff74242452518b44241ce84f07000089c383fb0175065e83c408eb0e8b0424e89208000089c68d64240c8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470405000000c70701000000eb098d642404bf447666b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c424c20800f400|@17846,1,@3335|79,0,@10437 87,0,0 92,1,@7128 133,1,@6665 173,0,3 192,0,@9455 259,0,0 296,0,@10448 331,0,@10969 366,0,@10448 423,1,@8145 464,0,@10448 499,0,@14996 535,0,0 542,0,0 549,0,3 555,0,0 576,0,@10437 602,0,@13866 654,0,@14616 661,0,@14622 696,0,3 707,0,0 712,1,@7128 752,1,@6665 792,0,3 825,0,0 846,1,@8146 887,0,@10448 961,0,0 968,0,0 975,0,3 981,0,0 1019,0,@10437 1027,0,0 1032,1,@7128 1050,1,@8147 1108,0,5 1150,1,@6665 1190,0,3 1223,0,@17837 1241,1,@8148 1282,0,@10826 1317,0,@15013 1353,0,0 1360,0,0 1367,0,0 1373,0,0 1393,0,@9455 1469,0,1 1474,1,@8149 1495,0,@9455 1541,1,@8152 1562,1,@8154 1604,0,0 1611,0,1 1618,0,2 1624,0,0 1635,0,@10970 1668,0,0 1744,0,0 1751,0,0 1758,0,0 1764,0,0 8145:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3325| 8146:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3326| 8147:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3327|58,0,6 110,0,0 8148:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3328| 8149:D3,932|3b650c7305ff552ccd0950536a016a018b44243054bb94ea68b1e8f130f4ffff34248b442408e8b50300008b74241089f783fe037507ba05000000eb05ba010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608c7460403000000c70603000000568b7424048b1683fa050f851102000089f689f7ff760489ff8b47088b5424348b5c2430ff128b7c241883ff037507bfd47166b1eb05bf9cea68b18b74243883fe017f07bac4f167b1eb4a8b75008d76f43b75087305ff5528cd80897500c746fc020000008b542414895604c706070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204c0ea68b189328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b7c243c83ff017e7c8b5c243c83eb02710e8d642420b8f80466b18b5d04ff238b4c24308b7c242c8b7424288b54242457565289ca8b442410ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ccea68b1eb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c2404893883c41cc2200089ff83ff037507bed47166b1eb05be9cea68b18b7c243483ff017f07bac85466b1eb048b5424108b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c414c22000f4000000|@17844,1,@3331|22,0,@17839 27,1,@6630 39,1,@8151 55,0,2 62,0,0 98,0,1 104,0,1 156,0,@10895 163,0,@17840 177,0,@14948 218,0,3 251,0,@17842 320,0,0 327,0,0 334,0,0 340,0,0 368,0,@9455 435,0,0 472,0,@17843 479,0,0 553,0,0 560,0,0 567,0,0 573,0,0 606,0,0 661,0,@10895 668,0,@17840 682,0,@10438 723,0,3 756,0,0 825,0,0 832,0,0 839,0,0 845,0,0 878,0,0 8150:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3329|11,0,0 8151:D3,172|3b650c7305ff552ccd01a8010f85900000008b388b40048b378b7f048b570489d183e20983fa017507ba03000000eb05ba0100000083f20289cf83e70383ff017507b903000000eb05b90100000083f1028b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f08895704893757e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3330|42,0,1 49,0,0 67,0,1 74,0,0 163,0,0 8152:D3,224|3b650c7305ff552ccd0953a8010f85bf0000008b38ff70048b74240483fe017d0c8d642408b801000000c21800ff37ff770c8b7c24288b7424248b5424208b4c241c8b5c24188b442414ff3424ff742410575652515350b8010000008b5c2424e8fbfaffff89c78d642408578b7c240883ef0257710e8d642410b8f80466b18b5d04ff238b7c24288b7424248b5424208b4c241c8b5c24188b4424145756525153508b4424208b5c2418e851ffffff89c38d64240483fb0175075883c408c21800588b7c2408897c242083c420e9220000008d642404b801000000c21800f400|@17845,1,@3333|38,0,0 88,0,0 97,1,@8149 123,0,@9455 206,1,@8153 215,0,0 8153:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3332| 8154:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3334| 8155:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17850,1,@3336|11,0,0 8156:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17850,1,@3337|11,0,0 8157:D3,212|3b650c7305ff552ccd018b388b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0fd67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f40000|@17853,1,@3339|43,0,3 76,0,0 113,0,@16528 148,0,@15078 184,0,0 191,0,0 198,0,0 204,0,0 8158:D3,868|3b650c7305ff552ccd0950538b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff0175238b74240cbf100666b18d76048d7f0433c93bc9f3a67402eb0abf500e66b1e9b00000008b7c240c8b3f8d3c7d01000000578b3c2483ff01750e8d642404bf80ec68b1e98c0000008b3c2483c72489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87b702000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf80ec68b1b9250000008d77048d7a04d1e9f3a48b7c2410598d77048d7a16d1e9f3a48062ffbf89d7578b3c248b3f8d1c7d0100000083fb01750e8d642404be9cec68b1e98900000089df83c74489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87fe01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf9cec68b1b9450000008d77048d7a04d1e9f3a489d95f8d77048d7a26d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5424048b442408ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c8ec68b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460407000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704e8ec68b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410803000000c7410407000000c701010000008b4424108b74240c8b542408bb03000000894c24088954240c897424108b3c24897c240483c404e9f5f6feff8d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@17868,1,@3340|18,0,@9473 49,0,@9473 70,0,@9551 106,0,@17854 127,0,4 148,0,16777215 206,0,0 215,0,@17854 220,0,18 278,0,@17855 298,0,4 319,0,16777215 377,0,0 386,0,@17855 391,0,34 455,0,3 501,0,0 538,0,@10448 573,0,@17856 609,0,0 616,0,0 623,0,3 629,0,0 662,0,@17858 699,0,@10448 771,0,0 778,0,1 785,0,3 791,0,0 808,0,1 835,1,@7966 844,0,@9465 858,0,@9465 8159:D3,1340|3b650c7305ff552ccd0950538b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff0175238b74240cbf100666b18d76048d7f0433c93bc9f3a67402eb0abf500e66b1e9b00000008b7c240c8b3f8d3c7d01000000578b3c2483ff01750e8d642404bf80ec68b1e98c0000008b3c2483c72489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878f04000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc0895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf80ec68b1b9250000008d77048d7a04d1e9f3a48b7c2410598d77048d7a16d1e9f3a48062ffbf89d7578b3c248b3f8d1c7d0100000083fb01750e8d642404be9cec68b1e98900000089df83c74489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d603000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf9cec68b1b9450000008d77048d7a04d1e9f3a489d95f8d77048d7a26d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b5424208b442404ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8ec68b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c70701000000578b5424248b44240cff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70730ed68b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460407000000c706010000008b5424288b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707a06a68b18b55008d52e83b55087305ff5528cdc0895500c742fc05000000897a10c7420c01000000c7420801000000c7420407000000c702010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410803000000c7410407000000c701010000008b4424108b74240c8b542408bb03000000894c241089542414897424188b3c24897c240c83c40ce9a5f1feff8d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@17871,1,@3341|18,0,@9473 49,0,@9473 70,0,@9551 106,0,@17854 127,0,4 148,0,16777215 206,0,0 215,0,@17854 220,0,18 278,0,@17855 298,0,4 319,0,16777215 377,0,0 386,0,@17855 391,0,34 455,0,3 501,0,0 538,0,@10448 573,0,@17856 609,0,0 616,0,0 623,0,3 629,0,0 675,0,0 712,0,@10448 747,0,@17863 783,0,0 790,0,0 797,0,3 803,0,0 840,0,0 877,0,@10448 912,0,@16529 948,0,0 955,0,0 962,0,3 968,0,0 1001,0,0 1038,0,@10448 1104,0,@10448 1171,0,@10448 1243,0,0 1250,0,1 1257,0,3 1263,0,0 1280,0,1 1307,1,@7966 1316,0,@9465 1330,0,@9465 8160:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3342|58,0,6 110,0,0 8161:D3,20|3b650c7305ff552ccd01b805000000c3f4000000|@17676,1,@3343|11,0,2 8162:D3,20|3b650c7305ff552ccd01b803000000c3f4000000|@17676,1,@3344|11,0,1 8163:D3,380|3b650c7305ff552ccd0950538b7c24048b770481feb4d967b175068d642408eb2a8b3e8d3c7d0100000083ff177524bfb4d967b18d76048d7f04b90b0000003bc9f3a67402eb0c8d642408b801000000c21c008b3c24ff37ff742424ff7424248b7424248b5424208b4c241c8b5c24308b4424188b7d008d7fd43b7d087305ff5528cd4f897d00c747fc0a000000894724c7472004ef68b1895f1c894f188957148977105e89770c5e8977088b742408897704c7076c9642b1578b442404bb01000000e87495e5ff89c78d642404578b7c24148b7424208b55008d52f03b55087305ff5528cdc0895500c742fc03000000897208897a04c70224a542b18b7c2404ff37ff742414ff74242cff74242c8b7c24248b4c242c8b5c24288b4424388b75008d76d43b75087305ff5528cd8f897500c746fc0a000000894624895e20894e1c895618897e145f897e105f897e0c5f897e088b7c240c897e04c7060cae42b1585b8d6424088974241c8b3c24897c241883c418e9c294e5fff400|@17926,1,@3368|21,0,@14766 48,0,@14766 59,0,5 76,0,0 148,0,@17880 181,0,@8164 191,0,0 196,1,@4949 249,0,@8178 349,0,@8179 374,1,@4949 8164:D3,168|3b650c7305ff552ccd0d525053ff742410f6442404010f85840000008b74240489f7ff3689ffff77048b7c241489feff770489f689f7ff760889ff89f8ff770c89c08b781089c08b701489c08b501889c08b481c89c08b582089c08b4024ff742414ff74240cff74240cff74240c5756525153508b4424448b5c2438e83b00000089c28d64240c5e8d642404891424897424043b650c7303ff552ce971ffffff5883c40cc20400f4|@10026,1,@3361|125,1,@8165 8165:D3,1300|3b650c7305ff552ccd09508b3b89fe81ff9c00c0b0754381fe9c00c0b0752dff73088b7c242c8b078b5c2404e89374e5ff89c7f7c70100000075078b3fe965040000bf01000000e93e0300008d642404b8483366b18b5d04ff2389f781feac00c0b0754081ffac00c0b0752aff73088b7c242c8b078b5c2404e84674e5ff89c7f7c70100000075078b3fe991020000bf01000000eb198d642404b8483366b18b5d04ff238d6424048b442428c2280083ff01750b8d6424088b442428c22800ff378b3c24ff77088b7c2408ff77088b7c24208b3f8d3c7d01000000578b7c24148b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2410e9aa00000083fb01750d8d6424048b7c2420e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87d301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c242489f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424108d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871b01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d757ff7424208b7c243c8b7424388b5424348b4c24308b5c242c8b442420ff7424045756525153508b54241c8b4424288b5c2424ff1289c78d6424108b7424048b76048b1683fa0175728b76048b55008d52f03b55087305ff5528cdc0895500c742fc0300000059894a08897a04c702010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424308b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c408c228008d64240c8b442428c228008d642414b8780566b18b5d04ff238d642418b8780566b18b5d04ff23f7c70100000075588b178b77048b1a89d981fbac00c0b0753989cf81ffac00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642408b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e925fdffff83ff01750b8d6424088b442428c22800ff378b7c242c8b7424288b5424248b4c24208b5c241c8b4424185756525153508b4424188b5c241ce8610100005f8b7f045e8b7604568b442430f7c7010000000f85c0000000f60424010f85b00000008b1fff77048b7424048b168b742404ff76048b730c8b52088b0a83f90175708b52048b4d008d49ec3b4d087305ff5528cdcd894d00c741fc0400000089590c897108c7410405000000c701050000008b75008d76f43b75087305ff5528cd87897500c746fc02000000894e0489168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc020000008943048933eb0289c38b4c24045a8d64240489d889cf8914243b650c7305ff552ccd81e93affffff8d642408eb048d642408c22800f7c70100000075588b178b77048b1a89d981fb9c00c0b0753989cf81ff9c00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642408b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e979fefffff40000|@17901,1,@3360|17,0,@4614 25,0,@4614 45,1,@4911 67,0,0 81,0,@9999 94,0,@4616 102,0,@4616 122,1,@4911 144,0,0 155,0,@9999 288,0,4 309,0,16777215 367,0,0 441,0,@9551 458,0,4 479,0,16777215 537,0,0 685,0,0 777,0,@9465 791,0,@9465 819,0,@4616 829,0,@4616 873,0,@9999 897,0,0 963,1,@8166 1071,0,2 1077,0,2 1210,0,@4614 1220,0,@4614 1264,0,@9999 1288,0,0 8166:D3,1160|3b650c7305ff552ccd0950538b7c2404ff378b7c2408ff77048b7c2408ff378b7c240cff77048b7c240cff378b7c2408ff378b7c240c8b4704e85e04000089c78b5424348b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70674a142b1568b7424188b760c8b76048b0e89ca83f90375058b7608eb3f83fa0175058b7604eb358b5604be01000000f6c20175288b5a0489f183c102710e8d642424b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd38b5424108b520c8b52048b1a89d983fb0375058b5208eb3f83f90175058b5204eb358b4a04ba01000000f6c10175288b410489d383c302710e8d642424b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebd33bf2740c8d642424b801000000c218008b45008d40e83b45087305ff5528cd80894500c740fc05000000c74010010000008b74241889700c8b742408897008897804c7000b0000008b5d008d5be83b5d087305ff5528cd81895d00c743fc05000000c74310010000008b74241089730c8b742404897308897b04c7030b0000008b7c243c8b7424385756e8ef04000089c78b3783fe0375228d642408f644240401740c8d64241cb801000000c21800bf010000008b74240ceb78ff7704ba106968b18b44243c8b5c24308b7c24305768b4f068b1e891f0faff89c28b0424ff1289c78d642404ff742420ff742420578b74240c8b5424448b4c24408b5c243c8b442434894424348b442408895c24388b5c2404894c243c89542440897424448b3c24897c244883c430e920f0ffff8d642410f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0be010000008b542404f6c20175288b5a0489f183c102710e8d64241cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd33bfe7f0c8d64241cb801000000c21800ff74240cf604240175138b3c248b3f8b3424ff76048b178b5c240ceb0c8d642420b801000000c21800f6c30175518b3bff73048b3f3bfa75068d642404eb2a8b378d3475010000008b0289c18d0445010000003bf075198d77048d7a043bc9f3a67402eb0b8d642404bf03000000eb145f89fb3b650c7305ff552ccd0cebaabf0100000083ff037505e92a0100008b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704c4f068b189178b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70610f168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240889378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70028f168b1e8db7fe3ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b55008d52e83b55087305ff5528cd80895500c742fc05000000897a10c7420c01000000c7420801000000c7420401000000c702010000008b4424388b7c24348b742430575652bb03000000e8b2e4feff5e8934243b650c7303ff552ce93bfefffff4|@17900,1,@3359|58,1,@8167 99,0,@8168 142,0,0 166,0,@9455 229,0,0 253,0,@9455 287,0,0 323,0,0 346,0,5 379,0,0 402,0,5 417,1,@8171 446,0,0 454,0,0 468,0,@16516 486,0,@17895 491,1,@7488 576,1,@8159 607,0,@9455 633,0,0 661,0,@9455 695,0,0 736,0,0 808,0,1 830,0,0 873,0,@17896 910,0,@17898 980,0,@17899 985,1,@4827 1022,0,3 1055,0,0 1093,0,0 1100,0,0 1107,0,0 1113,0,0 1133,0,1 1138,1,@7966 8167:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3348|58,0,6 110,0,0 8168:D3,268|3b650c7305ff552ccd058b7a048b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017507bfe46966b1eb338b3f8b3781feec01c0b075058b5f08eb0ab8483366b18b5d04ff23ba68ea68b16a01ff742404c74424080cef68b1e9e5d8fffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781feec01c0b075058b5f08eb80b8483366b18b5d04ff23f40000|@17885,1,@3351|33,0,@4656 84,0,0 94,0,@10769 106,0,@4656 118,0,@9999 128,0,@17836 142,0,@17881 147,1,@8144 168,0,@4656 219,0,0 229,0,@11247 244,0,@4656 256,0,@9999 8169:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17884,1,@3349|11,0,0 8170:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17884,1,@3350|11,0,0 8171:D3,256|3b650c7305ff552ccd09508b7c240c8b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706f8a342b18b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c70730a442b15789d8bb4cf068b1e8fa14f4ff89c7576a016a01548b442410bb88f068b1e85c11f4ffff34248b442408e85c2efbffba0c6368b18b04248b5c240ce8bb88faff89c78d64240cf7c701000000752c8d6424088b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c208008b45008d40f43b45087303ff5528894500c740fc020000008b3c248978048d642404c7000300000083c404c20800f40000|@17894,1,@3358|46,0,@8172 81,0,@8173 89,0,@17891 94,1,@6634 111,0,@17893 116,1,@6630 128,1,@7517 133,0,@16477 145,1,@7452 200,0,0 243,0,1 8172:D3,36|3b650c7305ff552ccd058b78048b3783fe0175088b470c8b5204ff22b801000000c3f400|@17886,1,@3352|29,0,0 8173:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468ccef68b1680cf068b16a01548304240ce81d3af4ff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@17890,1,@3355|22,0,@17887 27,0,@17889 39,1,@6661 8174:D3,12|3b650c7305ff552ccd01c3f4|@17888,1,@3353| 8175:D3,12|3b650c7305ff552ccd01c3f4|@17888,1,@3354| 8176:D3,12|3b650c7305ff552ccd01c3f4|@17892,1,@3356| 8177:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3357|11,0,0 8178:D3,2260|3b650c7305ff552ccd05528b10ff700c8b7810f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd07897d00c747fc01000000890feb1389f73b650c7305ff552ccd85ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770cc7470801000000c7470401000000c70701000000578b780483ff01755b8b442404e8f213f4ff89c78b3783fe0575218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000007511ff378b7c240c8b7f088b7f34e97b050000be01000000e9c9040000f7c701000000750f8b7c24088b7f088b7f34e95e0200008b7c24088b7f088b7f34f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9800100008b3f8b3781feec01c0b075058b7f08eb0e8d64240cb8483366b18b5d04ff2357b801000000e8829ff7ff89c7ba48f167b18b74240c8b760457566a018b4424148b5c240ce863abf7ff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774fc67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e930feffff8d64240cb8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9800100008b3f8b3781feec01c0b075058b7f08eb0e8d64240cb8483366b18b5d04ff2357b801000000e82e9df7ff89c7ba48f167b18b74240c8b760457566a018b4424148b5c240ce80fa9f7ff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d0f867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bcf168b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e930feffff8d64240cb8483366b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d4f967b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c408c3f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9e00000008b3f8b3781feec01c0b075058b7f08eb0e8d642410b8483366b18b5d04ff2357b801000000e8329af7ff89c7ba48f167b18b7424108b760457566a018b4424108b5c240ce813a6f7ff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4f667b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8fc67b1e921fefffff7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642410b8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e9d0feffff8d642410b8483366b18b5d04ff23f40000|@17904,1,@3362|84,0,0 108,0,1 115,0,0 160,0,0 193,0,0 202,0,0 237,0,3 270,0,0 311,0,0 318,0,0 324,0,0 342,1,@6635 389,0,0 419,0,0 478,0,@4656 529,0,0 539,0,@10769 554,0,@4656 570,0,@9999 581,0,0 586,1,@7128 593,0,@14942 617,1,@7139 656,0,0 693,0,@10448 728,0,@15020 763,0,@10625 836,0,@16528 871,0,@15061 907,0,0 914,0,0 921,0,0 927,0,0 949,0,@4656 1000,0,0 1014,0,@11247 1029,0,@4656 1048,0,@9999 1074,0,@4656 1125,0,0 1135,0,@10769 1150,0,@4656 1166,0,@9999 1177,0,0 1182,1,@7128 1189,0,@14942 1213,1,@7139 1252,0,0 1289,0,@10448 1324,0,@15020 1359,0,@10625 1432,0,@16528 1467,0,@17902 1503,0,0 1510,0,0 1517,0,0 1523,0,0 1545,0,@4656 1596,0,0 1610,0,@11247 1625,0,@4656 1644,0,@9999 1722,0,@16528 1757,0,@15031 1793,0,0 1800,0,0 1807,0,0 1813,0,0 1838,0,@4656 1889,0,0 1899,0,@10769 1914,0,@4656 1930,0,@9999 1941,0,0 1946,1,@7128 1953,0,@14942 1977,1,@7139 2016,0,0 2053,0,@16528 2088,0,@15002 2123,0,@15065 2149,0,@4656 2200,0,0 2214,0,@11247 2229,0,@4656 2248,0,@9999 8179:D3,168|3b650c7305ff552ccd0d525053ff742410f6442404010f85840000008b74240489f7ff3689ffff77048b7c241489feff770489f689f7ff760889ff89f8ff770c89c08b781089c08b701489c08b501889c08b481c89c08b582089c08b4024ff742414ff74240cff74240cff74240c5756525153508b4424448b5c2438e83b00000089c28d64240c5e8d642404891424897424043b650c7303ff552ce971ffffff5883c40cc20400f4|@10026,1,@3367|125,1,@8180 8180:D3,936|3b650c7305ff552ccd0989c78b1389d681fa9400c0b0754e81fe9400c0b0753cff73088b3424ff76048b742404ff76088b742408ff760c8b7424348b0689fbe8e05ce5ff89c7f7c70100000075078b3fe9e6020000bf01000000eb11b8483366b18b5d04ff238b442428c22800f7c7010000000f8592020000ff378b3c248b7f048b34248b460cbe010000008b55008d52f83b55087305ff5528cdc1895500c742fc0100004089328b4c24348b75008d76f43b75087305ff5528cd87897500c746fc02000000894e04c70684b242b189328b74240c83fe01751383ff017507bf5c5066b1eb05bfe8f268b1eb3df644240c017516f7c7010000007507bf5c5066b1eb05bf24f368b1eb2083ff017507bfac3966b1eb14f7c7010000007507bf943966b1eb05bf5c5066b18b3783fe010f859e010000ff77048b7c24348b74243057568b5c2410e8d1f2ffff89c78b3783fe0175658d642404ff7704ba106968b18b4424308b5c242c8b7c242c5768b4f068b1e891defaff89c28b0424ff1289c78d6424048b7424248b54242c8b4c24208b5c241c8b4424185756525153508b4424188b5c2428e841deffff8d6424048b44243883c410c22800ff77048b7c24088b7f14f7c701000000750d8b3f8b7f04c70703000000eb008b7c24088b7f18f7c7010000007550ff376a016a01548b442410bb60f368b1e8f403f4ffff34248b442408e8f420fbff8b7c240c8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889375e893eeb008b7c24108b3f83ff010f85820000008b7c24108b77048b55008d52ec3b55087305ff5528cd40895500c742fc040000008b7c2408897a0c5f897a085f8d642404897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b7424388b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c410c228008d64241c8b442428c228008b7f048b7424248b54242c8b4c24208b5c241c8b4424185756525153508b4424188b5c2428e8efdcffff8d6424048b44243883c410c228008d64240c8b5c24148b7c241c8b7424108b54240c8b4c2408575652518b442410e844d9ffff8d6424048b442428c22800f7c70100000075588b178b77048b1a89d981fb9400c0b0753989cf81ff9400c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642410b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e9c8fcfffff40000|@17925,1,@3366|18,0,@4613 26,0,@4613 64,1,@4911 86,0,0 93,0,@9999 136,0,0 203,0,@8181 224,0,@10368 231,0,@17918 253,0,@10368 260,0,@17921 272,0,@10070 287,0,@10068 294,0,@10368 327,1,@8171 348,0,@16516 366,0,@17895 371,1,@7488 423,1,@8159 466,0,1 499,0,@17924 504,1,@6630 516,1,@7517 636,0,2 761,1,@8159 812,1,@8158 846,0,@4613 856,0,@4613 900,0,@9999 924,0,0 8181:D3,1068|3b650c7305ff552ccd0589d68b780489fa83ff037d06b8b4ab66b1c38b0889cf8b0983f9010f85f70100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089500489388b7e048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071cf268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfc405c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70790f268b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@17917,1,@3364|23,0,@11331 52,0,@9455 157,0,@9771 164,0,1 172,0,@9772 179,0,1 187,0,@9773 194,0,1 201,0,0 246,0,@11374 283,0,@10625 318,0,@11377 354,0,0 361,0,1 368,0,3 374,0,0 413,0,0 450,0,@10448 485,0,@17905 521,0,0 528,0,0 535,0,1 541,0,0 554,0,@11331 568,0,@9455 609,0,@4779 675,0,@9771 682,0,1 690,0,@9772 697,0,1 705,0,@9773 712,0,1 719,0,0 764,0,@11374 801,0,@10625 836,0,@11377 872,0,0 879,0,1 886,0,3 892,0,0 931,0,0 968,0,@10448 1003,0,@17913 1039,0,0 1046,0,0 1053,0,1 1059,0,0 8182:D3,20|3b650c7305ff552ccd01b8183366b1c3f4000000|@9998,1,@3363|11,0,@9996 8183:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3365|11,0,0 8184:D3,248|3b650c7305ff552ccd09f6c3010f85dc0000008b3b8b5b048b378b1683fa010f85c00000008b76048b7f048b0f89ca83f905750ab8508f67b18b5d04ff2383fa0175168b7f088b1783fa0375078b7f048b3feb038b7f04eb058b7f048b3f8b55008d52f03b55087305ff5528cdc9895500c742fc03000000894208897a04c702030000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c002710e8d642404b8f80466b18b5d04ff23e844ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b800f468b18b5d04ff23b801000000c3f40000|@17931,1,@3370|53,0,@13866 128,0,1 174,0,@9455 230,0,@17928 240,0,0 8185:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3371| 8186:D3,24|3b650c7305ff552ccd0589c38b4204e95c24f8fff4000000|@17933,1,@3372|16,1,@7218 8187:D3,204|3b650c7305ff552ccd058b75008d76f43b75087305ff5528cd05897500c746fc020000008b7a04897e04c70690b942b18b4d008d49f43b4d087305ff5528cd45894d00c741fc02000000894104c701070000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000c7470401000000890f8b4d008d49e83b4d087305ff5528cdc4894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b42088b520c5251ff742408bb030000008974240ce900ccfefff4000000|@17934,1,@3374|44,0,@8188 79,0,3 112,0,0 150,0,0 157,0,0 164,0,0 170,0,0 187,0,1 196,1,@7966 8188:D3,24|3b650c7305ff552ccd0589c38b4204e95023f8fff4000000|@17933,1,@3373|16,1,@7218 8189:D3,160|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c208008b5424108b7c240c83ef0189c003c7710e8d642408b8f80466b18b5d04ff23ff1289c7578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c24148b74241057568b5c240ce88fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20800f4|@10221,1,@3375|28,0,0 57,0,@9455 85,0,@9455 8190:D3,140|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b108b4004f6c30175538b338b5b048b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f4|@11207,1,@3376|21,0,0 27,0,@11204 130,0,@11204 8191:D3,172|3b650c7305ff552ccd0989c753f7c7010000000f85840000008b07ff77046a016a018b7c24188b742414ff74240c57568d5c240ce8870000005e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c24148b74241057568b44240c8b5c2410e88effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc208008d642404b801000000c20800f40000|@10030,1,@3378|53,1,@8192 162,0,0 8192:D3,416|3b650c7305ff552ccd0950538b7c24048b7f048b3783fe010f8573010000ff7704ff77108b7c240c8b7f08ff378b7c24208b3f8d1c7d0100000083fb01750abad8f468b1e98a00000089df83c73c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871001000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfd8f468b1b93d0000008d77048d7a04d1e9f3a48b7c242089d98d77048d7a22d1e9f3a48062ffbf8b7c241c8b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e048b3c24893e8d6424048b5424148b7c240c8b7f048b1f89d983fb05750e8d642410b8508f67b18b5d04ff2383f90175168b7f088b0f83f90375078b7f048b3feb038b7f04eb058b7f048b3f8b45008d40e83b45087305ff5528cdc4894500c740fc050000008970105e89700c897808c74004010000005f8938ff1289c75e893e5f897e04b801000000c20c008d642414b8780566b18b5d04ff238d642408b800f568b18b5d04ff23f4|@17939,1,@3377|64,0,@17935 84,0,4 105,0,16777215 163,0,0 172,0,@17935 177,0,30 281,0,@13866 361,0,0 380,0,0 392,0,@9465 406,0,@17936 8193:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@3379|68,0,0 8194:D3,116|3b650c7305ff552ccd058b7a183bc77d058b5204ff228b720c89f78b76143bc67c3a8b7f1489c62bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec38b721489f78b76143bc67c058b5210ff228b5710ff22f400|@17940,1,@3380|44,0,@9455 78,0,@9990 8195:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e96c35f4fff4000000|@13922,1,@3381|24,1,@6694 8196:D3,24|3b650c7305ff552ccd0589c38b4204e9401ef8fff4000000|@17826,1,@3382|16,1,@7218 8197:D3,160|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c208008b5424108b7c240c83ef0189c003c7710e8d642408b8f80466b18b5d04ff23ff1289c7578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c24148b74241057568b5c240ce88fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20800f4|@10221,1,@3383|28,0,0 57,0,@9455 85,0,@9455 8198:D3,296|3b650c7305ff552ccd0953a8010f85080100008b38ff70048b770489f38b1683fa010f85e5000000ff76048b76108b57088b128b4d008d49f03b4d087305ff5528cdcc894d00c741fc03000000c74108acf568b18b44240889410489118b54241089df8b0789c383f805750e8d64240cb8508f67b18b5d04ff2383fb0175168b7f088b1f83fb0375078b7f048b3feb038b7f04eb058b7f048b3f8b45008d40e83b45087305ff5528cdc6894500c740fc0500000089481089700c897808c74004010000008b3c2489388d642404ff1289c7578b7c2410578b4424088b5c240ce81cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424088938c204008d642408b8d4f568b18b5d04ff238d642404b801000000c20400f4|@10030,1,@3384|80,0,@17941 113,0,@13866 192,0,0 274,0,@17942 288,0,0 8199:D3,140|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b108b4004f6c30175538b338b5b048b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f4|@11207,1,@3385|21,0,0 27,0,@11204 130,0,@11204 8200:D3,32|3b650c7305ff552ccd058b7a0c8b7f143bc77d058b5204ff228b5208ff22f400|@17944,1,@3386| 8201:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e94832f4fff4000000|@13922,1,@3387|24,1,@6694 8202:D3,84|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f40000|@17945,1,@3388|33,0,@9455 67,0,@9990 8203:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9ac31f4fff4000000|@13922,1,@3389|24,1,@6694 8204:D3,44|3b650c7305ff552ccd0589c78b078b7f048b5f0c8b72046890f668b1ff74240489742408e96b010000f40000|@17958,1,@3397|24,0,@17947 37,1,@8206 8205:D3,320|3b650c7305ff552ccd0552b801000000e87bdbf3ff89c757b801000000e8a61af4ff89c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642404c7470801000000c74704b88e67b1c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c783966b18b14248b52048d642404895708c74704984566b1c707010000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204f87f67b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000c3f4|@17948,1,@3391|12,0,0 17,1,@6589 25,0,0 30,1,@6657 65,0,1 72,0,0 79,0,1 99,0,0 106,0,@13859 112,0,@10066 147,0,12 180,0,@10066 200,0,@10223 206,0,0 239,0,@13710 305,0,0 314,0,20 8206:D3,132|3b650c7305ff552ccd0989c153be010000008b7d008d7ff83b7d087305ff5528cd42897d00c747fc0100004089378b74240c8b5424088b45008d40e83b45087305ff5528cdc6894500c740fc0500000089481089500c897008897804c7008cc442b1e8a9abfaff89c28b0424ff1289c28d642404b801000000ff12b801000000c20800f4|@17957,1,@3396|14,0,0 94,0,@8207 99,1,@7465 117,0,0 124,0,0 8207:D3,76|3b650c7305ff552ccd0589c78b45008d40e43b45087305ff5528cd84894500c740fc060000008b72108970148b720c8970108b720889700c8b7204897008897804c700ecc442b1c3f4000000|@17956,1,@3395|67,0,@8208 8208:D3,60|3b650c7305ff552ccd0589d7508b47048b77088b570c8b4f108b5f145153ff74240c89c38b44240c8954240c89742410e91b0000008d642404f40000|@17955,1,@3394|49,1,@8209 8209:D3,1200|3b650c7305ff552ccd098b3b83ff0d0f8590040000ff7304ff73088b7c24048b3f8b3f83ff030f856d0400008b1c24c1eb0383cb01f6c301740783fb017d12eb140fb67bff8d3c7d0100000083ff23740489dfeb0cb8b02f66b1e86d9ae3ff89c7f7c7010000000f841e04000083ff037507bf03000000eb05bf0100000083ff030f85fe0300008b7c24188b07e83204000089c78b378d0c750100000083f9017507bf9c1066b1eb7689ce83c60289f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87a403000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642045f8d77048d7a05d1e9f3a48062ffbf89d7578b7c241c8b3f83c702710e8d64240cb8f80466b18b5d04ff238b74241c893e8b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c7470800f768b18b34248977048b7424048937578b54241cb801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b74240c83e60983fe017507ba03000000eb05ba0100000083f2028b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c01000000c7420801000000897204c702030000008b75008d76f03b75087305ff5528cd84897500c746fc030000008b0c24894e088d642404895604893e8b55008d52f43b55087305ff5528cd40895500c742fc020000008b3c24897a048d642404c702010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52ec3b55087305ff5528cdc0895500c742fc0400000089720c897a08c74204010000008b3c2489fe893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c89f68977088d642404c7470401000000c7070b000000578b7c24188b57148b7c24188b77188b7c24188b4f288b7c24188b7f388b5c24188b5b3c8b098b128b038b1f8b7d008d7fe83b7d087305ff5528cd4f897d00c747fc05000000894710895f0c894f088957048937578b7424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470430f768b189378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70088f768b1e8f356e3ffbbd4c067b1e82dc4f4ffe818d1f5ff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000008b342489700c8d642404897808c7400401000000c700010000008b7c24188b5730ff128b3c248b742408893e8d642404b80100000083c408c210008d642408b8780566b18b5d04ff238d642408eb128d642408b8d02f66b18b5d04ff238d642408b801000000c21000b801000000c21000f40000|@17954,1,@3393|86,0,@9958 91,1,@4895 115,0,1 122,0,0 142,1,@8210 163,0,@9600 180,0,4 201,0,16777215 259,0,0 304,0,@9455 430,0,@17950 452,0,0 491,0,1 508,0,1 515,0,0 579,0,0 586,0,0 595,0,1 678,0,0 711,0,0 752,0,0 792,0,0 811,0,0 817,0,5 939,0,@17951 976,0,@17953 981,1,@4827 986,0,@14533 991,1,@6850 996,1,@6946 1034,0,0 1041,0,0 1048,0,3 1054,0,0 1100,0,0 1106,0,0 1133,0,0 1148,0,@9465 1168,0,@9960 1182,0,0 1190,0,0 8210:D3,496|3b650c7305ff552ccd01508b3c2483ff350f8c8f0000008b0424bf35000000d1f8d1ff99f7ff8d3c45010000008b0424be35000000d1f8d1fe99f7fe8d34550100000083fe017502eb3e83fe017d07be03000000eb05be0100000083fe017507be03000000eb05be0100000083fe03741789f883e802710e8d642404b8f80466b18b5d04ff23eb0289f883e802710e8d642404b8f80466b18b5d04ff23e85effffff89c7eb05bf100666b158be35000000d1f8d1fe99f7fe8d14550100000083fa017507ba01000000eb2783fa017d07be03000000eb05be0100000083fe017502eb0f83c234710ab8f80466b18b5d04ff2381c2c2000000710ab8f80466b18b5d04ff2383fa017d05e9d700000081faff0100000f8fcb000000be400666b1ff7456fe8b378d1c75010000008b34248b368d3475010000005683fb0175068d64240458c38b342483fe0175078d64240889f8c38b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01775c89d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708595e8d7604d1ef8d3c38d1e9f3a48060ffbfc38d642408b8780566b18b5d04ff23b8bc0a66b18b5d04ff23f4|@17949,1,@3392|27,0,26 49,0,26 80,0,1 87,0,0 97,0,1 104,0,0 125,0,@9455 148,0,@9455 167,0,@9473 173,0,26 197,0,0 209,0,1 216,0,0 233,0,@9455 251,0,@9455 272,0,255 283,0,@9476 352,0,4 373,0,16777215 427,0,0 476,0,@9465 486,0,@9487 8211:D3,208|3b650c7305ff552ccd05528b38ff70048b378d1c750100000083fb017507b8500e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777389d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf8b3c248b5f088d6424048b3c248b77048d642404ff342489742404e9260000008d642408b8780566b18b5d04ff23f4000000|@17958,1,@3401|31,0,@9551 48,0,4 69,0,16777215 123,0,0 186,1,@8212 195,0,@9465 8212:D3,80|3b650c7305ff552ccd0989c78b038b5424048b75008d76ec3b75087305ff5528cd85897500c746fc0400000089560cc74608ccf868b1897e04c7064ccd42b1bb0100000089742404e9e35de5fff40000|@17961,1,@3400|50,0,@17959 59,0,@8213 64,0,0 73,1,@4949 8213:D3,96|3b650c7305ff552ccd0d525053ff742410f64424040175408b7c24048b1f89ffff77048b5424108b7a0489d28b720889d28b520cff7424045756528b44241ce83000000089c25e891424897424043b650c7303ff552cebb95883c40cc20400f4|@10026,1,@3399|64,1,@8214 8214:D3,812|3b650c7305ff552ccd0950538b3c248b3f81ffac00c0b00f85c50100008b7c24148b3f8d3c7d01000000578b7c24088b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2404e9aa00000083fb01750d8d6424048b7c2414e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f874601000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c241889f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507b8500e66b1eb7d89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f878e00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf8b3c248b3f81ffac00c0b075205f8b7f088b5f088b54240c8b742408897424148b7c2404897c241083c410ff228d642408b8483366b18b5d04ff238d642408b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238b3c248b3f81ff9400c0b00f852a0100008b7c24148b3f8d3c7d01000000578b7c24088b3f8d1c7d010000008b342489f783fe01750d8d6424048b442404e9a800000083fb01750d8d6424048b442414e99600000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87ab00000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ef89388b7c241889f189f28d77048d7804d1e9f3a489d783c7088d64240489d98b7424048d7604d1ef8d3c38d1e9f3a48060ffbf8b3c248b3f81ff9400c0b075275f8b7f088b5f0c8b742408c744241090f668b1897424148b7c2404897c240c83c40ce933f3ffff8d642408b8483366b18b5d04ff238d64240cb8780566b18b5d04ff238d642408b801000000c21000f40000|@17960,1,@3398|19,0,@4616 111,0,4 132,0,16777215 190,0,0 264,0,@9551 281,0,4 302,0,16777215 360,0,0 402,0,@4616 445,0,@9999 459,0,@9465 473,0,@9465 489,0,@4613 581,0,4 602,0,16777215 660,0,0 724,0,@4613 745,0,@17947 765,1,@8206 774,0,@9999 788,0,@9465 802,0,0 8215:D3,44|3b650c7305ff552ccd0589c78b078b7f048b5f0c8b72046890f668b1ff74240489742408e9cbf2fffff40000|@17958,1,@3402|24,0,@17947 37,1,@8206 8216:D3,208|3b650c7305ff552ccd05528b38ff70048b378d1c750100000083fb017507b8500e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777389d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf8b3c248b5f088d6424048b3c248b77048d642404ff342489742404e9eafaffff8d642408b8780566b18b5d04ff23f4000000|@17958,1,@3403|31,0,@9551 48,0,4 69,0,16777215 123,0,0 186,1,@8212 195,0,@9465 8217:D3,580|3b650c7305ff552ccd0d50528b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248b7604897704c7077cd442b1578b7c24088b3f8d1c7d0100000083fb01750abfb8f968b1e98c00000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87bb01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfb8f968b1b9110000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abff00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870901000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b7c24048b47085e5f8b570cff742404bb03000000894c2404895424088974240ce92db1feff8d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@17964,1,@3405|47,0,@8218 71,0,@17963 91,0,4 112,0,16777215 170,0,0 179,0,@17963 184,0,8 235,0,@15144 255,0,4 276,0,16777215 334,0,0 360,0,@15144 365,0,43 418,0,3 451,0,0 489,0,0 496,0,0 503,0,0 509,0,0 530,0,1 547,1,@7966 556,0,@9465 570,0,@9465 8218:D3,24|3b650c7305ff552ccd0589c38b4204e97867f7fff4000000|@17962,1,@3404|16,1,@7124 8219:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b4447fec3f400|@15110,1,@3406|32,0,@9990 8220:D3,4436|8dbc2470ffffff3b7d0c7305ff5530cd0953ff30ff7004ff70088b74246c8b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000040893757bb34ce68b18b4424748b7c24708b74246c8b5424688b8c249c0000005756525189da89c38b442418e852cffeff89c7578bb4248c0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578b7c24708b5740b801000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e893757bfffffffff8b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf2c0268b18b55008d52f83b55087305ff5528cdc0895500c742fc01000040893a8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70705000000578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770c8b7424088977088b34248977048b74241c8937578b7c240c8b4708ff7424048b5c2424e8890f000089c283fa01750abfe43c66b1e991000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642428b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642428b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175198067ffbf578b7c24188b3f8b7424108b5608be01000000eb2e8b0a8b5a04894c77fe89f183c102710e8d642428b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebb4f6c20175288b5a0489f183c102710e8d64242cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd383ee0103fe710e8d64242cb8f80466b18b5d04ff238b742418893e8b7c2418ff378b7c24148b3f8b742414ff76048b742418ff760c8b74241c8b56108bb424840000008b9c24940000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8b5c240c895908897104c701f4e942b18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c70678ea42b1568b3783fe030f858f0000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb00578b7d008d7fe43b7d087303ff5528897d00c747fc060000008b7424108977148b7424048977108b74240889770cc74708010000008b74240c8977048b3424893757683c4966b1b815000000e86283e3ff8b1424e8f672e5ff89c78d642404578b7c244081ff100666b17502eb318b7c24408b3f8d3c7d0100000083ff010f85fa000000bf100666b18b7424408d76048d7f0433c93bc9f3a60f85df0000008bbc24a80000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e04c706acea42b18bbc24ac0000008b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2420894a0c897a088b3c24897a04c70220eb42b18b8c24b40000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc040000008b5c2420895f0c894f088b0c24894f04c707b4eb42b18b5d008d5bf03b5d087305ff5528cdc4895d00c743fc03000000895308897304893bff74240c6a0368100666b1ff7424186a018b44241ce816b5f8ffe98a0000008b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74242889770c8b7424048977088b7424248977048b74244089378b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b9424ac00000089328b34248b56288b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24408938ff128b7d008d7ff83b7d087303ff5528897d00c747fc010000008b74242089378b74243c893e8b3c248b4f188bb4248c0000008b9424900000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c70748ec42b1578b7c24048b4f208bb424880000008b94248c0000008b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c707a4ec42b1578b7c24088b57308bbc24840000008bb424880000008b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c70000ed42b18b7c247c8bb424800000008b55008d52ec3b55087305ff5528cdc1895500c742fc040000008b4c2408894a0c897208897a04c7025ced42b1ff742478ff742478ff742478ff742478ff7424788b7424788b4c24748b5c24708b7d008d7fc83b7d087305ff5528cd4f897d00c747fc0d000000894730895f2c894f288957248b54241489572089771c8b7424188977185e8977145e8977105e89770c5e8977085e8d64240c897704c707b8fb68b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424348977088b742430897704c70764ef42b1578bbc24980000008b9424a80000008b75008d76e03b75087305ff5528cd84897500c746fc070000008b4c2434894e188956148b54241c8956108b54243089560c8b542420895608897e04c70638f142b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542438895704c7076cf342b16a016a016a016a016a016a01b8880368b18b9424b40000008b8c24e80000008b5c246c5756ff742424525168100666b154830424185389c28b8424800000008b5c2438e81aaffeffff3424ff7424088b742410ff742414ff74241c8b5424248b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008957148b14248957108b54240489570c8977088b7424088977048b74240c8937578bbc24c80000008b7f0c8b3f83ff037505e9c60000008bbc24f80000008b3f8d1c7d0100000083fb01750ab814fd68b1e99600000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ac00000089f28d045502000000f7d80345003b450872053b45007205ff5528cdc8894500d1ea8950fcc640ff4183ee02c74470fe00000000d1ef89388bbc24f800000089d98d77048d7804d1e9f3a489df83c70889fed1eec604302889fed1eec644300129d1efc64438022e8060ffbf8bbc24c8000000578b5c2404e824eeffff8b0424e878acfeff8d6424046820fd68b18b442410bb01000000e8354ce5ff89c7578b7c24608b3fba01000000eb0e8d642478b8780566b18b5d04ff23f7c70100000075348b1f8b77048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000895104891989ca89f73b650c7305ff552ccd84ebc483fa01750abfe43c66b1e991000000bf0100000089d6f7c60100000075288b5e0489f983c102710e8d642478b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd081ffffffff017c0e8d642478b8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd06897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000083fa0175678067ffbf578b3c248b7ffcc1e708c1ef0783cf01578b3c2483ff01750e8d642404bfe43c66b1e9850000008b3c2489f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab566a01eb318b0a8b5a04894c77fe89f183c102710e8d642478b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e963ffffff8b3c243b7c24087c298d6424048b3c248067ffbf5f83c404578b3c248b77fcc1e608c1ee0783ce01bf01000000e9560100008b34248b7c240c8b7c77fe8b770489f28b0e83f9010f8507010000ff76048b4e0c8b5e10ff77088b74241883ee018b44240803c671118da42490000000b8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604c7060100000089d78b0789c283f80575118da42490000000b8508f67b18b5d04ff2383fa0175168b7f088b1783fa0375078b7f048b17eb038b5704eb058b7f048b178b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895704c707010000008b55008d52e83b55087305ff5528cdca895500c742fc05000000895a10894a0c897a088b7c2404897a04c702010000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000598d642404894f088957048937eb008b7424048b1424897c56fe8b342483c60271118da42488000000b8f80466b18b5d04ff238934243b650c7303ff552ce978feffff83fe017518578b7c24088b77fcc1e608c1ee0783ce01bf01000000eb4089f183e90289f383eb028b14248b5c5afe8b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04891a89ce89d73b650c7305ff552ccdc0eba383fe010f85490300008bb42400010000893e8bbc24d00000008b9424e00000008b75008d76e03b75087305ff5528cd84897500c746fc070000008956188b5424548956148b5424048956108b54246889560c8b542458895608897e04c706f4f342b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b742410897704c707bcf442b1578b7c24208b3f83ff030f85970000008b7c24208b77048b7c24208b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bfe43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c70601000000eb048b7424208b7d008d7fe43b7d087305ff5528cd40897d00c747fc060000008b5424588957145a8957108b54241489570c8b14248957088b5424188957048937578b0424e8037fffff89c757b8010000008b5c2408e832d3ffff89c383fb0175035feb0e8b0424e8fc10000089c78d6424048bb424f0000000893e8bb424f80000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000578bbc24dc0000008b5740b801000000ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49f43b4d087305ff5528cd80894d00c741fc020000008979045f8939beffffffff8b7d008d7ff83b7d087305ff5528cd42897d00c747fc010000408937ba2c0268b18b75008d76f83b75087305ff5528cd86897500c746fc0100004089168b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208897a04c702050000008bb424080100008b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1059894f0c8957088977048b74245c8937578b94248c0000008bbc24080100008b45008d40f43b45087305ff5528cd84894500c740fc020000008b34248970048938ff128b7d008d7ff83b7d087303ff5528897d00c747fc010000005e89378bb424fc000000893eb80100000081c484000000c2840089f283ea025289f183e90289f383eb028b54240c8b5c5afe8b5424088b52fcc1e208c1ea0783ca013bca72118da42488000000b8a43266b18b5d04ff238b5424088b544afe8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489118b55008d52f43b55087305ff5528cdc2895500c742fc02000000897a04890a5989ce89d73b650c7305ff552ccdc0e917fcfffff4|@17980,1,@3430|60,0,0 94,0,@17604 134,1,@7978 179,0,0 192,0,0 231,0,2 264,0,0 304,0,-1 337,0,@15112 403,0,2 475,1,@8221 487,0,@10109 497,0,0 526,0,@9455 553,0,16777215 564,0,@11058 619,0,0 628,0,0 656,0,0 683,0,@9455 728,0,@9455 765,0,@9455 868,0,@8223 906,0,@8224 950,0,@10109 1004,0,0 1059,0,0 1114,0,0 1132,0,@10267 1137,0,10 1142,1,@4893 1150,1,@4989 1167,0,@9473 1198,0,@9473 1268,0,@8225 1323,0,@8226 1378,0,@8227 1423,0,@9473 1438,1,@7293 1527,0,0 1678,0,@8228 1741,0,@8229 1804,0,@8230 1860,0,@8231 1977,0,@17972 2022,0,@8236 2103,0,@8237 2142,0,@8239 2159,0,@15125 2190,0,@9473 2214,1,@7972 2344,0,@17977 2364,0,4 2385,0,16777215 2443,0,0 2516,1,@8212 2524,1,@7969 2533,0,@17978 2542,0,0 2547,1,@4949 2561,0,0 2572,0,@9465 2647,0,@10109 2657,0,0 2686,0,@9455 2713,0,16777215 2724,0,@11058 2779,0,0 2788,0,0 2831,0,@10109 2889,0,0 2921,0,@9455 2990,0,0 3061,0,@9455 3101,0,0 3124,0,@13866 3196,0,0 3244,0,0 3316,0,@9455 3364,0,0 3528,0,@8241 3570,0,@8242 3626,0,@10109 3680,0,0 3735,0,0 3809,1,@8125 3817,0,0 3826,1,@8184 3844,1,@8243 3901,0,0 3917,0,0 3956,0,2 3989,0,0 4028,0,-1 4061,0,@15112 4127,0,2 4271,0,0 4336,0,@9990 8221:D3,120|3b650c7305ff552ccd0989c753f7c70100000075538b07ff77048b7c240c578b5c2408e86400000089c7578b7c2410578b4424088b5c240ce8c3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f4000000|@10030,1,@3408|36,1,@8222 109,0,0 8222:D3,768|3b650c7305ff552ccd0953508b3c248b3f8b3f83ff010f85d40200008b3c248b7f048b3f83ff017507bf03000000eb05bf0100000083ff030f85ac0200008b3c248b3fff77048b7c24048b7f048b77048b57088b4f0c8b5f108b7c24048b7f08ff37ff7704ff77088b7d008d7fe83b7d087305ff5528cd4e897d00c747fc05000000895f10894f0c895708897704c70701000000578b7c241889fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff017520bf100666b189f68d76048d7f0433c93bc9f3a67402eb098b7c240ce9740100008b7c24188b378d1c750100000083fb01750abf500e66b1e98100000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c101000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d78b378d347501000000568b7424108b368d347501000000568b74240483fe01750d8d6424088b7c240ce9a90000008b342483fe0175098d642408e9980000008b7424048b14248d7416ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ed00000089cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ee89328b4c24048d77048d7a04d1e9f3a48b7c240483c708598d6424048b74240c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc030000008b5424048956088b542408895604893e8b5424208b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008957088b542410895704c707090000008b45008d40f03b45087305ff5528cdc0894500c740fc030000008970085e8d642408897004893883c410c204008d642424b8780566b18b5d04ff238d64241cb8780566b18b5d04ff238d642408eb048d642408b804fa68b18b5d04ff23f400|@17968,1,@3407|42,0,1 49,0,0 144,0,0 157,0,@9473 182,0,@9473 232,0,@9551 252,0,4 273,0,16777215 331,0,0 450,0,4 471,0,16777215 529,0,0 669,0,4 723,0,@9465 737,0,@9465 757,0,@17965 8223:D3,112|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d248b4a0489cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec32bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f400|@17969,1,@3409|43,0,@9990 62,0,@9455 96,0,@9990 8224:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e96009f4fff4000000|@13922,1,@3410|24,1,@6694 8225:D3,96|3b650c7305ff552ccd058b388b70048b4a0889cb8b018b4d008d49f43b4d087305ff5528cdcd894d00c741fc020000008941048931890b8b52048b520c8b45008d40f43b45087305ff5528cdc4894500c740fc020000008970048938ff22f400|@17970,1,@3411| 8226:D3,128|3b650c7305ff552ccd0552ff308b40048b7c24048b5f0c6a01e8c270fbff89c78b7424048b560889d18b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04893a89f6891189f68b76048b56288b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b3c2489388d642408ff22f400|@17970,1,@3412|26,1,@7618 8227:D3,128|3b650c7305ff552ccd0552ff308b40048b7c24048b5f0c6a01e856dffaff89c78b7424048b560889d18b1a8b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04893a89f6891189f68b76048b56088b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b3c2489388d642408ff22f400|@17970,1,@3413|26,1,@7509 8228:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@3414| 8229:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@3415| 8230:D3,72|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1283f80175248b7c24048b57088b0424ff1283f801750e8b7c24048b5704588d642404ff228d642408c38d642408c3f400|@14671,1,@3416| 8231:D3,180|3b650c7305ff552ccd05528b3c248b7f0c8b5724b801000000ff1289c757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24088b57088b45008d40f43b45087305ff5528cd04894500c740fc020000008b3c24897804c70024ee42b1ff128b3c24ff378b7c240c8b7f048b5724b801000000ff1289c383fb0175065b83c404eb0e8b0424e87e00000089c38d64240883fb0175055883c404c35883c404e9c9000000f4|@17971,1,@3420|21,0,0 31,0,0 105,0,@8232 127,0,0 150,1,@8233 175,1,@8234 8232:D3,60|3b650c7305ff552ccd058b088b7a0489fe8b1f8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f893eb801000000c3f400|@15105,1,@3417|53,0,0 8233:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3418| 8234:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3419| 8235:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@17971,1,@3421|11,0,0 8236:D3,448|3b650c7305ff552ccd0552ff308b7804ff7008ff700c8b50108b74240c8b76088b3689f183c102710e8d642410b8f80466b18b5d04ff238b5c240c8b5b08890b83ff030f85a6000000bfffffffff8b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408939bf2c0268b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893b8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707050000008b45008d40e43b45087305ff5528cdc4894500c740fc060000008950148b14248950108d6424045a89500c8970088978045f8938e86619f8ffe9a1000000bfffffffff8b4d008d49f83b4d087305ff5528cdc4894d00c741fc010000408939bf2c0268b18b5d008d5bf83b5d087305ff5528cdc6895d00c743fc01000040893b8b7d008d7ff03b7d087305ff5528cd4e897d00c747fc03000000895f08894f04c707050000008b45008d40e43b45087305ff5528cdc4894500c740fc060000008950148b14248950108d6424045a89500c8970088978045f8938e88819f8ff8b3c248b7f048b378b7d008d7ff43b7d087305ff5528cd41897d00c747fc0200000089770489075e8b7604893ec3f400|@17973,1,@3422|46,0,@9455 74,0,-1 107,0,@15112 173,0,2 230,1,@7249 240,0,-1 273,0,@15112 339,0,2 396,1,@7250 8237:D3,344|3b650c7305ff552ccd058b7a188b3fbb01000000f7c70100000075348b078b77048b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000895904890189cb89f73b650c7305ff552ccd8cebc483fb01750abfe43c66b1e98b000000bf0100000089def7c60100000075248b460489f983c102710ab8f80466b18b5d04ff2389c689cf3b650c7305ff552ccdccebd481ffffffff017c0ab8b48066b18b5d04ff2389f98d347d02000000f7de0375003b750872053b75007205ff5528cd0e897500d1ef897efcc646ff4089f7d1e9b801000000f3ab89f7be0100000089d983f90175468067ffbf8b45008d40e03b45087305ff5528cd84894500c740fc070000008b72148970188b72108970148978108b7a0c89780c8b7a088978088b7a04897804c700a4f242b1c38b198b4104895c77fe89f383c302710ab8f80466b18b5d04ff2389c189de3b650c7305ff552ccdc6eb8bf400|@17975,1,@3424|16,0,0 86,0,@10109 96,0,0 121,0,@9455 148,0,16777215 155,0,@11058 210,0,0 219,0,0 295,0,@8238 317,0,@9455 8238:D3,180|3b650c7305ff552ccd0589c68b7a183bf77d248b4a0489cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec38b4a1489cf3bf17d3b8b7a0c8b7f142bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec32bf7710ab8f80466b18b5d04ff2383c6018b4a1089cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f4000000|@17974,1,@3423|41,0,@9990 75,0,@9455 109,0,@9990 128,0,@9455 162,0,@9990 8239:D3,20|3b650c7305ff552ccd058b7a048b07c3f4000000|@17976,1,@3425| 8240:D3,76|3b650c7305ff552ccd095053ff74240cf644240401752c8b7c24048b1f89ffff7704ff7424048b442410e89d58ffff89c25e891424897424043b650c7303ff552cebcd5883c408c20400f400|@10026,1,@3426|43,1,@8099 8241:D3,180|3b650c7305ff552ccd0589c68b7a183bf77d248b4a0489cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec38b4a1489cf3bf17d3b8b7a0c8b7f142bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec32bf7710ab8f80466b18b5d04ff2383c6018b4a1089cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f4000000|@17979,1,@3427|41,0,@9990 75,0,@9455 109,0,@9990 128,0,@9455 162,0,@9990 8242:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e91cfff3fff4000000|@13922,1,@3428|24,1,@6694 8243:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3429| 8244:D3,44|3b650c7305ff552ccd0589c78b078b7f048b5f0c8b72046890f668b1ff74240489742408e977cefffff40000|@17958,1,@3431|24,0,@17947 37,1,@8206 8245:D3,208|3b650c7305ff552ccd05528b38ff70048b378d1c750100000083fb017507b8500e66b1eb7989de83c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777389d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708d1efc604382e8060ffbf8b3c248b5f088d6424048b3c248b77048d642404ff342489742404e996d6ffff8d642408b8780566b18b5d04ff23f4000000|@17958,1,@3432|31,0,@9551 48,0,4 69,0,16777215 123,0,0 186,1,@8212 195,0,@9465 8246:D3,580|3b650c7305ff552ccd0d50528b7d008d7ff43b7d087303ff5528897d00c747fc020000008b34248b7604897704c707d0f842b1578b7c24088b3f8d1c7d0100000083fb01750abfc4fd68b1e98c00000089df83c71489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87bb01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfc4fd68b1b9150000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a0ed1e9f3a48062ffbf89d78b378d1c750100000083fb01750abff00568b1e98f00000089de83c65689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870901000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708bef00568b1b9570000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b4d008d49e83b4d087305ff5528cd80894d00c741fc05000000897910c7410c01000000c7410801000000c7410401000000c701010000008b7c24048b47085e5f8b570cff742404bb03000000894c2404895424088974240ce9d98cfeff8d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f4|@17964,1,@3434|47,0,@8247 71,0,@17981 91,0,4 112,0,16777215 170,0,0 179,0,@17981 184,0,10 235,0,@15144 255,0,4 276,0,16777215 334,0,0 360,0,@15144 365,0,43 418,0,3 451,0,0 489,0,0 496,0,0 503,0,0 509,0,0 530,0,1 547,1,@7966 556,0,@9465 570,0,@9465 8247:D3,24|3b650c7305ff552ccd0589c38b4204e92443f7fff4000000|@17962,1,@3433|16,1,@7124 8248:D3,48|3b650c7305ff552ccd058b720489f78b76fcc1e608c1ee0783ce013bc6720ab8a43266b18b5d04ff238b4447fec3f400|@15110,1,@3435|32,0,@9990 8249:D3,196|3b650c7305ff552ccd0589c78b07ff77048b5204ff1289c7f7c70100000075328b1789d68b5214f6c2017407ba03000000eb05ba0100000083f20283fa03751289f78b7f148b3f8b7f04c70703000000eb008b3c248b7718f7c6010000007559ff3689ff8b470c6a016a0154bb0cfe68b1e802bbf3ffff34248b442408e802d8faff8b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b342489378d64240c8b3424893e8d642408b801000000c38d642404b801000000c3f4|@17984,1,@3438|45,0,1 52,0,0 76,0,1 109,0,@17983 114,1,@6630 126,1,@7517 157,0,0 180,0,0 190,0,0 8250:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3437|11,0,0 8251:D3,84|3b650c7305ff552ccd018b780489fa83ff037d06b8b4ab66b1c38b3889fe83ff017506b86cfe68b1c389d783fa037d06b8b4ab66b1c383fe037506b8e8fe68b1c383ff037d06b8b4ab66b1c3b860ff68b1c3f400|@18008,1,@3440|21,0,@11331 36,0,@17987 49,0,@11331 60,0,@17994 71,0,@11331 77,0,@18001 8252:D3,108|3b650c7305ff552ccd0d89c752538b078b5f048b7f0857e8f48ffbff89c76a016a018b7424088b0689f68b5e048b54240c8b720489d28b520854575652e83e0000005f5e8d6424088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18059,1,@3505|24,1,@7636 62,1,@8253 8253:D3,232|3b650c7305ff552ccd095383f801751c8b7424148b7c24108b142489168d642404897e04b801000000c210008b7c24108b54240c8b4c24088b75008d76e03b75087305ff5528cd87897500c746fc070000008b1c24895e18894e14895610897e0cc74608100069b1894604c70624fc42b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707090000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b7c2410eb0b8b442410e8952f000089c78b7424148b142489168d642404897e04b801000000c21000f40000|@18058,1,@3504|37,0,0 100,0,@18011 109,0,@8254 144,0,4 177,0,0 199,1,@8316 222,0,0 8254:D3,120|3b650c7305ff552ccd0550ff7204ff7208ff720cff7210ff7214ff7204ff7218ff7424148b5424148b4c24108b5c240c8b4424088b7424248b7c2404897c240c894424108b442420895c24148b5c241c894c24188954241c8b3c24897c2420c7442424010000008974240883c408e9190000008d642424f4|@18014,1,@3502|99,0,0 111,1,@8255 8255:D3,520|3b650c7305ff552ccd0953f60424010f85e40100008b3c24ff378b7c2404ff7704ff7424248b7c24188b5424148b4c24248b5c24208b44241c8b75008d76e03b75087305ff5528cd8f897500c746fc07000000894618895e14894e1089560c897e085f897e04c706ccfe42b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937578b7c240483ff01750abf01000000e9f7000000ff74242cff74242c8b7c242c8b5424288b4c24248b5c24208b44241c8b75008d76d43b75087305ff5528cd8f897500c746fc0a000000894624895e20894e1c895618897e145f897e105f897e0c8b7c240c897e08c74604600069b1c7062cff42b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc01000000893757ff74242c8b7c242c8b5424288b4c24248b5c24208b44241c8b75008d76d43b75087305ff5528cd8f897500c746fc0a000000894624895e20894e1c895618897e145f897e105f897e0c8b7c2404897e08c74604600069b1c706ccff42b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74242c8b45008d40f03b45087305ff5528cdc0894500c740fc030000008970085e89700489386a016a018b7c24248b7424205457568b5c2418e8ea0100005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c40cc21c008d642404b8640769b18b5d04ff23f4|@18057,1,@3501|104,0,@8256 147,0,0 243,0,@18013 249,0,@8257 365,0,@18013 371,0,@8258 462,1,@8259 510,0,@18055 8256:D3,76|3b650c7305ff552ccd056a016a018b4a048b42088b5a0c8b7a108b72148b52185457565289caff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18012,1,@3441| 8257:D3,140|3b650c7305ff552ccd05ff720450ff7208ff720cff7210ff7214ff7218ff721cff7220ff72248b4c24148b5424188b44240c8b5c24108b7424288b3c24897c24108b7c2404897c24148b7c2408897c24188b7c241c87df897c241c8b7c242087c7897c24208b7c2420877c241c897c2420895424288b542424894c24248974240c83c40cff228d642428f400|@18014,1,@3442| 8258:D3,140|3b650c7305ff552ccd05ff720450ff7208ff720cff7210ff7214ff7218ff721cff7220ff72248b4c24148b5424188b44240c8b5c24108b7424288b3c24897c24108b7c2404897c24148b7c2408897c24188b7c241c87df897c241c8b7c242087c7897c24208b7c2420877c241c897c2420895424288b542424894c24248974240c83c40cff228d642428f400|@18014,1,@3443| 8259:D3,584|3b650c7305ff552ccd0950538b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706c80243b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7c24088b0789ff8b5f0489ff8b7f0857e8e289fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b7c24148b5424108b75008d76e43b75087305ff5528cd84897500c746fc06000000895614897e108b54240489d789560c8b54240889d0895608c74604e80069b1c706f40243b189ff8b0f89ca83f9010f85a600000089ff8b470489ffff77088b5424188b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707500343b18b55008d52f83b55087305ff5528cdc1895500c742fc01000000893289d68b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be844acfbff8b74240489f783fe01750489c7eb0989fbe8ea22000089c78b74241c8b142489168d642404897e04b80100000083c40cc20c0089ff83fa030f858100000089ff8b470489ffff77088b7d008d7ff83b7d087305ff5528cd41897d00c747fc0100000089378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703fc0569b1e8b8abfbff8b74240489f783fe01750489c7eb0989fbe8ba28000089c78b74241c8b142489168d642404897e04b80100000083c40cc20c008d64240489ff8b5f048d6424048b54240889c08d6424048b74240c8974240c8b3c24897c240883c408ff22f400|@18054,1,@3500|44,0,@8260 79,0,9 102,1,@7636 208,0,@18016 214,0,@8261 278,0,@8262 344,1,@7670 366,1,@8306 389,0,0 479,0,@18047 484,1,@7670 506,1,@8315 529,0,0 8260:D3,24|3b650c7305ff552ccd0589c38b4204e92c39f7fff4000000|@18015,1,@3444|16,1,@7124 8261:D3,72|3b650c7305ff552ccd0589d66a016a018b56048b46088b5e0c8b7e108b7614545756ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18017,1,@3445| 8262:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18046,1,@3489|27,1,@8263 8263:D3,920|3b650c7305ff552ccd0950538b3c248b7f148b178b3c248b3fff77088b7c24048b7f048b742404ff76088b742408ff760c8b74240c8b76188b4c240cff711cf6c20175078b128b5210eb05ba01000000526a016a0183fe03755c8b3783fe0575558b57048b3a8b72048b4a088b5a0c8b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a0489328b75008d76f83b75087305ff5528cd84897500c746fc010000008916893424897c2404eb0bc7042401000000897c2404ff3424ff7424088b7c24288b078b7c24288b5f048b7c24288b7f0857e82e86fbff89c7578b7424348b7d008d7fe83b7d087305ff5528cd40897d00c747fc050000008977108b74242889770c8b74242c897708c74704240169b1c707540743b1578b7d008d7fe83b7d087303ff5528897d00c747fc05000040578b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b75008d76e03b75087303ff5528897500c746fc07000040c7461801000000c7461401000000c7461001000000c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000040578b3c24c74718010000008b3c24c74714010000008b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000040578b3c24c74714010000008b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b7c24088b54240c8957108b54240489570c8977088b542418895704c707ac0743b18b7c24088067ffbf8b54244489f78b4c2418894f188b4c2404894f148b4c2408894f108b4c240c894f0c8b4c2414894f08895704c707182043b18066ffbf8b7c24048b5424188957188977148b7424088977108b74240c89770c8b34248977088b742434897704c707dc2043b18b7c24048067ffbf8b3c248b74240c8977148b7424048977108b74242489770c8b7424288977088b74242c897704c707b82143b18b3c248067ffbf8b75008d76f43b75087303ff5528897500c746fc020000005f8d64240c897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a8d64241c89570489378b7424185a8d64240c8916897e04b801000000c20800f4000000|@18045,1,@3488|76,0,0 185,0,0 222,1,@7636 279,0,@18018 285,0,@8264 321,0,0 331,0,0 341,0,0 351,0,0 360,0,0 391,0,0 398,0,0 405,0,0 412,0,0 419,0,0 426,0,0 432,0,0 469,0,0 479,0,0 489,0,0 499,0,0 509,0,0 519,0,0 528,0,0 565,0,0 575,0,0 585,0,0 595,0,0 605,0,0 614,0,0 648,0,@8265 706,0,@8300 757,0,@8301 809,0,@8302 854,0,4 909,0,0 8264:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18019,1,@3446| 8265:D3,208|3b650c7305ff552ccd058b75008d76f83b75087305ff5528cd04897500c746fc010000008b7a10893e8b4d008d49f83b4d087305ff5528cd44894d00c741fc010000008b7a0c89398b7d008d7ff83b7d087305ff5528cd46897d00c747fc010000008b5a08891f8b45008d40f03b45087305ff5528cdc6894500c740fc0300000089480889700489388b720489f783fe01750ab8b07766b18b5d04ff238b3f8b1f6a016a0154e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18041,1,@3481|148,0,@10986 167,1,@8266 8266:D3,444|3b650c7305ff552ccd0950538b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706600a43b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7c24088b0789ff8b5f0489ff8b7f0857e8be81fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b55008d52f03b55087303ff5528895500c742fc030000008b7c240489fe897a088b7c2408897a04c7028c0a43b189f68b0e89cf83f905751f8b742410c7060cd067b18b3c24897e048d642404b80100000083c408c2040089f683ff010f858100000089f68b460489f6ff76088b7d008d7ff83b7d087305ff5528cd05897d00c747fc0100000089178b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703dc0169b1e838a4fbff8b74240489f783fe01750489c7eb0989fbe86615000089c78b7424148b142489168d642404897e04b80100000083c40cc2040089f689f7ff760889ff8b7f0c8b07e8a29cfbff8b7c240489fb83ff01750489c7eb07e88615000089c78b7424148b142489168d642404897e04b80100000083c40cc20400f4|@18040,1,@3480|44,0,@8267 79,0,9 102,1,@7636 189,0,@8268 210,0,@14696 225,0,0 315,0,@18023 320,1,@7670 342,1,@8298 365,0,0 390,1,@7659 410,1,@8299 433,0,0 8267:D3,24|3b650c7305ff552ccd0589c38b4204e9e438f7fff4000000|@18020,1,@3447|16,1,@7127 8268:D3,68|3b650c7305ff552ccd0589d76a016a01baa40169b18b47048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18022,1,@3448|17,0,@18021 8269:D3,64|3b650c7305ff552ccd0189c76a016a01bae40169b18b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18039,1,@3477|17,0,@18024 8270:D3,1344|3b650c7305ff552ccd0950538b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c7068c1043b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7c24088b078b7c24088b5f048b7c24088b7f0857e8127ffbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424048977088b742408897704c707b81043b1578b7c24088b3fbe380b43b181c6d50000008d74befcffe6e92b000000909090e93e000000909090e904020000909090e97f020000909090e994020000909090e90f0300009090908d6424085f8b5f04ba200468b1588b74240489742404e9ec5efbff8b7c2408ff77048b7c240c8b77088b7c240c8b7f0cff368b7604f7c7010000000f8515010000ff378b4d008d49ec3b4d087305ff5528cd40894d00c741fc04000040c7410c01000000c7410801000000c7410401000000c701010000008b7d008d7fe83b7d087305ff5528cd42897d00c747fc05000040c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089ca8b5c240c895a0c897a088b1c24895a048d642404c702101143b18061ffbf89fa8b5c2408895a10894a0c8972088b34248972048d642404c702cc1143b18067ffbf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b7424185a8d6424088916897e04b80100000083c408c204008b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240889570c8977088b34248977048d642404c707081443b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b7424185a8d6424088916897e04b80100000083c408c204008b7c24088b47048b7c2408ff77088b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703b80269b1e8909ffbff8b7c240883ff01750489c7eb0b8b5c2408e8ea07000089c78b7424185a8916897e04b80100000083c410c204008d6424048b742410c7060cd067b15f897e04b80100000083c408c204008b7c24088b47048b7c2408ff77088b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703e80269b1e8f09efbff8b7c240883ff01750489c7eb0b8b5c2408e8c20c000089c78b7424185a8916897e04b80100000083c410c204008b7c2408ff77048b7c240c8b7f088b74240c8b4e0cff37ff77048b55008d52ec3b55087305ff5528cd02895500c742fc04000040c7420c01000000c7420801000000c7420401000000c702010000008b7d008d7fe83b7d087305ff5528cd06897d00c747fc05000040c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089d68b5c240c895e0c897e08894e04c706581c43b18062ffbf89fe8b4c240c894e1089560c8b14248956088d6424048b14248956048d642404c706141d43b18067ffbf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240889570489378b7424185a8d64240c8916897e04b80100000083c404c20400f400|@18038,1,@3476|44,0,@8271 79,0,9 106,1,@7636 185,0,@8272 197,0,@8270 270,0,@15129 284,1,@7635 357,0,0 364,0,0 371,0,0 377,0,0 410,0,0 417,0,0 424,0,0 431,0,0 437,0,0 465,0,@8273 500,0,@8274 539,0,4 593,0,0 651,0,@8278 686,0,4 740,0,0 827,0,@18029 832,1,@7670 854,1,@8283 871,0,0 891,0,@14696 900,0,0 987,0,@18031 992,1,@7670 1014,1,@8292 1031,0,0 1096,0,0 1103,0,0 1110,0,0 1116,0,0 1149,0,0 1156,0,0 1163,0,0 1170,0,0 1176,0,0 1197,0,@8293 1239,0,@8294 1278,0,4 1332,0,0 8271:D3,24|3b650c7305ff552ccd0589c38b4204e97074f7fff4000000|@18025,1,@3449|16,1,@7171 8272:D3,68|3b650c7305ff552ccd0589d76a016a01bae40169b18b47048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18026,1,@3450|17,0,@18024 8273:D3,168|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01ba948b68b18b5f0454e89a8dfbff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18027,1,@3451|108,0,0 117,0,@16740 126,1,@7656 8274:D3,280|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b3c248b771089338b45008d40f83b45087305ff5528cd88894500c740fc0100000089ff8b7f0c89386a01e89978fbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c707f81243b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a200000089c383fb017507bf01000000eb0cb801000000e8ee00000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f400|@18028,1,@3455|79,1,@7636 120,0,@8275 155,0,9 188,0,0 206,1,@8276 218,0,0 225,0,0 230,1,@8277 8275:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3452|44,0,3 8276:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3453| 8277:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3454| 8278:D3,252|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b3c248b7f0c893b6a01b801000000e87976fbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c707181543b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a200000089c383fb017507bf01000000eb0cb801000000e8ee00000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f400|@18028,1,@3459|46,0,0 51,1,@7636 92,0,@8279 127,0,9 160,0,0 178,1,@8280 190,0,0 197,0,0 202,1,@8281 8279:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3456|44,0,3 8280:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3457| 8281:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3458| 8282:D3,64|3b650c7305ff552ccd0189c76a016a018b078b5f0454e84df2ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18030,1,@3460|23,1,@8266 8283:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3461| 8284:D3,64|3b650c7305ff552ccd0189c76a016a018b078b5f0454e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18037,1,@3469|23,1,@8285 8285:D3,352|3b650c7305ff552ccd0989c789deff36ff7604ff76088b560c8b028b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c703a81843b18b4d008d49ec3b4d087305ff5528cd89894d00c741fc04000040c7410c01000000c7410801000000c7410401000000c701010000008b55008d52e83b55087305ff5528cd8b895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c7020100000089ce895e0c895608894604c706001943b18061ffbf89d6895e10894e0c8b0c24894e088d6424048b0c24894e048d642404c706b81943b18062ffbf8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70609000000568b078b5f048b7f0857e86572fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b7424088b142489168d642404897e04b801000000c20400f4|@18036,1,@3468|61,0,@8286 94,0,0 101,0,0 108,0,0 114,0,0 147,0,0 154,0,0 161,0,0 168,0,0 174,0,0 191,0,@8287 229,0,@8288 268,0,4 283,1,@7636 344,0,0 8286:D3,68|3b650c7305ff552ccd0589d76a016a01baf00269b18b47048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18033,1,@3462|17,0,@18032 8287:D3,164|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01baa40169b18b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18034,1,@3463|108,0,0 117,0,@18021 8288:D3,280|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b3c248b771089338b45008d40f83b45087305ff5528cd88894500c740fc0100000089ff8b7f0c89386a01e8ad70fbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c707e41a43b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a200000089c383fb017507bf01000000eb0cb801000000e8ee00000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f400|@18035,1,@3467|79,1,@7636 120,0,@8289 155,0,9 188,0,0 206,1,@8290 218,0,0 225,0,0 230,1,@8291 8289:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3464|44,0,3 8290:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3465| 8291:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3466| 8292:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3470| 8293:D3,168|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f08890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a01ba948b68b18b5f0454e85282fbff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18027,1,@3471|108,0,0 117,0,@16740 126,1,@7656 8294:D3,280|3b650c7305ff552ccd05528b5d008d5bf83b5d087303ff5528895d00c743fc010000008b3c248b771089338b45008d40f83b45087305ff5528cd88894500c740fc0100000089ff8b7f0c89386a01e8516dfbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c707401e43b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a200000089c383fb017507bf01000000eb0cb801000000e8ee00000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f400|@18028,1,@3475|79,1,@7636 120,0,@8295 155,0,9 188,0,0 206,1,@8296 218,0,0 225,0,0 230,1,@8297 8295:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3472|44,0,3 8296:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3473| 8297:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3474| 8298:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3478| 8299:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3479| 8300:D3,176|3b650c7305ff552ccd0589d78b771883fe0174058b4f10eb038b4f148b75008d76f83b75087305ff5528cd82897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc2895500c742fc01000000890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18042,1,@3482|121,0,0 8301:D3,200|3b650c7305ff552ccd058b7a1883ff0174058b5a10eb038b5a148b75008d76f83b75087305ff5528cd0c897500c746fc010000008b7a0c893e8b4d008d49f83b4d087305ff5528cd4c894d00c741fc010000008b7a0889398b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000000891f8b45008d40f03b45087305ff5528cdc6894500c740fc0300000089480889700489386a016a018b5a0454e811e7ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18043,1,@3483|159,1,@8266 8302:D3,492|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b770cbf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce8d467fbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707b82343b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89c00000089c383fb0175065f83c408eb0e8b0424e8eb00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f4|@18044,1,@3487|86,0,0 150,0,3 226,0,2 296,1,@7636 338,0,@8303 373,0,9 406,0,0 424,1,@8304 445,1,@8305 8303:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3484|44,0,3 8304:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3485| 8305:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3486| 8306:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3490| 8307:D3,64|3b650c7305ff552ccd0189c76a016a018b078b5f0454e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18053,1,@3498|23,1,@8308 8308:D3,372|3b650c7305ff552ccd0989c789de8b56088b12ff720cff36ff7604ff760c8b46108b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897308897b04c703082743b18b4d008d49ec3b4d087305ff5528cd89894d00c741fc04000040c7410c01000000c7410801000000c7410401000000c701010000008b55008d52e43b55087305ff5528cd8b895500c742fc06000040c7421401000000c7421001000000c7420c01000000c7420801000000c7420401000000c7020100000089ce895e0c895608894604c706602743b18061ffbf89d6895e14894e108b4c240c894e0c8b0c24894e088d6424048b0c24894e048d642404c706142843b18062ffbf8b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70609000000568b078b5f048b7f0857e80564fbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b74240c8b142489168d642408897e04b801000000c20400f4|@18052,1,@3497|67,0,@8309 100,0,0 107,0,0 114,0,0 120,0,0 153,0,0 160,0,0 167,0,0 174,0,0 181,0,0 187,0,0 204,0,@8310 249,0,@8311 288,0,4 303,1,@7636 364,0,0 8309:D3,68|3b650c7305ff552ccd0589d76a016a01ba040669b18b47048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4000000|@18049,1,@3491|17,0,@18048 8310:D3,160|3b650c7305ff552ccd058b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008b720c89378b75008d76f83b75087305ff5528cd84897500c746fc010000008b4a08890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000897008897804c700010000006a016a018b5a0454e8b5e0ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18050,1,@3492|106,0,0 119,1,@8266 8311:D3,492|3b650c7305ff552ccd05528b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937578b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937578b7c24088b770cbf01000000f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffff576a018b4424088b5c240ce87861fbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707142a43b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe89c00000089c383fb0175065f83c408eb0e8b0424e8eb00000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8b7f088938c3f4|@18051,1,@3496|86,0,0 150,0,3 226,0,2 296,1,@7636 338,0,@8312 373,0,9 406,0,0 424,1,@8313 445,1,@8314 8312:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3493|44,0,3 8313:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3494| 8314:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3495| 8315:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3499| 8316:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3503| 8317:D3,1480|3b650c7305ff552ccd0d5250538b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706c83143b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7c24088b078b7c24088b5f048b7c24088b7f0857e85d5efbff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8937578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74240489770c8b7424088977088b74240c897704c707f43143b1578b7c24088b3f83ff050f851e0100008b7c24088b7f04ff378b4f04ff770c8b55008d52ec3b55087305ff5528cd02895500c742fc04000040c7420c01000000c7420801000000c7420401000000c702010000008b7d008d7fe83b7d087305ff5528cd06897d00c747fc05000040c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089d68b5c2408895e0c897e08894e04c706483243b18062ffbf89fe8b4c2408894e1089560c8b5424048956088b542418895604c706fc3243b18067ffbf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c89570489378b7424208b142489168d642414897e04b80100000083c408c204008b7c24088b3f83ff030f85710100008b7c2408ff77048b7c240c8b47088b7c240cff770cbf010000008b75008d76f83b75087305ff5528cd81897500c746fc01000040893e8b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008b5424188b520c8957088b5424188b5208895704c707b03343b1893e8b75008d76f03b75087305ff5528cd01897500c746fc030000008b7c2418897e088b7c24188b7f04897e04c706ec3743b18b55008d52f83b55087305ff5528cd41895500c742fc010000008b7c2408893a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8a80900008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742408897704c707030000008b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000c7430401000000893b83fb017502eb05e8d20900008b1c24e8de7efbff8d6424048b7c240c83ff01750489c7eb0b8b5c240ce8140a000089c78b7424205a8916897e04b80100000083c418c204008b7c24088b3f83ff010f85580100008b7c24088b77048b0eff76048b7e10ff7614ff76188b3f83ff017507bf01000000eb058b3f8b7f10578b55008d52e83b55087305ff5528cd02895500c742fc05000040c7421001000000c7420c01000000c7420801000000c7420401000000c702010000008b7d008d7fe43b7d087305ff5528cd06897d00c747fc06000040c7471401000000c7471001000000c7470c01000000c7470801000000c7470401000000c7070100000089d68b5c2410895e10897e0c894e088b4c2420894e04c706c03943b18062ffbf89fe8b4c2410894e148956108b142489560c8d6424048b14248956088d6424048b542404895604c706743a43b18067ffbf8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c89570489378b7424205a8d64240c8916897e04b80100000083c40cc204008b7c24088b3f83ff070f85860000008b7c24088b47048b7c2408ff77088b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000008b74240489378b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b048b7c24148b7f10893be8de7cfbff8b7c240883ff01750489c7eb0b8b5c2408e8840b000089c78b74241c5a8916897e04b80100000083c414c204008d6424048b7c24048b7f088b742404ff760c8b3f83ff017507b801000000eb058b3f8b470ce83775fbff8b7c240483ff01750489c7eb0b8b5c2404e8910b000089c78b7424185a8916897e04b80100000083c410c20400f400|@18078,1,@3522|45,0,@8318 80,0,9 107,1,@7636 193,0,@8319 257,0,0 264,0,0 271,0,0 277,0,0 310,0,0 317,0,0 324,0,0 331,0,0 337,0,0 358,0,@8320 394,0,@8321 433,0,4 489,0,0 536,0,0 616,0,@8322 667,0,@8323 736,1,@8324 775,0,1 808,0,0 822,1,@8325 830,1,@7670 856,1,@8326 873,0,0 927,0,0 968,0,0 975,0,0 982,0,0 989,0,0 995,0,0 1028,0,0 1035,0,0 1042,0,0 1049,0,0 1056,0,0 1062,0,0 1090,0,@8327 1139,0,@8328 1178,0,4 1232,0,0 1342,1,@7670 1364,1,@8332 1381,0,0 1417,0,0 1429,1,@7659 1451,1,@8333 1468,0,0 8318:D3,24|3b650c7305ff552ccd0589c38b4204e918abf7fff4000000|@18062,1,@3506|16,1,@7218 8319:D3,64|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c54ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18063,1,@3507| 8320:D3,160|3b650c7305ff552ccd058b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008b720c89378b75008d76f83b75087305ff5528cd84897500c746fc010000008b4a08890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000897008897804c700010000006a016a018b5a0454e8cdd5ffff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18064,1,@3508|106,0,0 119,1,@8266 8321:D3,160|3b650c7305ff552ccd0589d78b55008d52f83b55087305ff5528cd80895500c742fc010000008b771089328b75008d76f83b75087305ff5528cd84897500c746fc010000008b4f0c890e8b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089500489306a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18065,1,@3509|103,0,0 8322:D3,1064|3b650c7305ff552ccd058b780489f983ff037d06b8b4ab66b1c38b3089f78b3683fe010f85f70100008b7f0483e902710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd86894500c740fc0200000089480489388b7a048b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707580969b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389ce83f9037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a088b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c40969b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@18074,1,@3510|21,0,@11331 50,0,@9455 155,0,@9771 162,0,1 170,0,@9772 177,0,1 185,0,@9773 192,0,1 199,0,0 244,0,@11374 281,0,@10625 316,0,@11377 352,0,0 359,0,1 366,0,3 372,0,0 411,0,0 448,0,@10448 483,0,@18066 519,0,0 526,0,0 533,0,1 539,0,0 552,0,@11331 566,0,@9455 671,0,@9771 678,0,1 686,0,@9772 693,0,1 701,0,@9773 708,0,1 715,0,0 760,0,@11374 797,0,@10625 832,0,@11377 868,0,0 875,0,1 882,0,3 888,0,0 927,0,0 964,0,@10448 999,0,@18073 1035,0,0 1042,0,0 1049,0,1 1055,0,0 8323:D3,120|3b650c7305ff552ccd0589c78b078b7f048b3783fe01752f8b5f046a016a018b520454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c38b5f046a016a018b520854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18075,1,@3511| 8324:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7070100000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3512|50,0,0 102,0,0 8325:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3513| 8326:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3514| 8327:D3,160|3b650c7305ff552ccd0589d78b75008d76f83b75087305ff5528cd80897500c746fc010000008b571089168b55008d52f83b55087305ff5528cdc0895500c742fc010000008b4f0c890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18076,1,@3515|108,0,0 8328:D3,304|3b650c7305ff552ccd05528b75008d76f83b75087303ff5528897500c746fc010000008b3c248b57148916568b75008d76f83b75087305ff5528cd80897500c746fc0100000089ff8b571089165689ff8b470ce8f06bfbff89c7576a018b4424088b5c240ce8da4ffbff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b74240c8b7604897704c707b83b43b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a200000089c383fb0175065f83c408eb0e8b0424e8f100000089c78d64240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f4|@18077,1,@3519|84,1,@7659 102,1,@7636 144,0,@8329 179,0,9 212,0,0 230,1,@8330 251,1,@8331 8329:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3516|44,0,3 8330:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3517| 8331:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3518| 8332:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3520| 8333:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3521| 8334:D3,7420|3b650c7305ff552ccd05528b780489fa83ff037d0a8d642404b8b4ab66b1c38b3089f78b3683fe010f856509000089fe8b7e04ff7608ff760c83ea0252710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be2cb566b1e93108000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c05c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e92707000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240883ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7604897704c707a05a43b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cc468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4ac68b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707180b69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d0a8d642404b8b4ab66b1c389fa8b3f83ff030f85c709000089d78b5704ff7708ff770c83ee0256710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642410be2cb566b1e99308000089f683ee02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7608897704c707505b43b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240889fe83ff037d0abf2cb566b1e92607000089f683ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424188b7608897704c707785b43b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241083ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24188b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c241c8b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24208b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24248b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24288b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70758b368b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883768b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a00b69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d0a8d642404b8b4ab66b1c3ff72048b7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642410be2cb566b1e93e08000089d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b760c897704c707a05b43b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e9d106000089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240c83ee02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b85c0c69b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706940c69b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706bc0c69b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dc0c69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@18088,1,@3532|26,0,@11331 68,0,@9455 92,0,@11421 113,0,@9455 154,0,@4760 177,0,@11421 199,0,@9455 223,0,@11421 251,0,@9455 292,0,@4670 315,0,@11421 343,0,@9455 384,0,@4670 407,0,@11421 434,0,@9455 475,0,@4602 498,0,@11421 526,0,@9455 567,0,@4670 599,0,@9455 640,0,@4670 679,0,@11424 716,0,@10448 751,0,@13969 786,0,@10448 821,0,@11428 894,0,@10448 929,0,@13971 964,0,@10448 999,0,@11428 1072,0,@10448 1107,0,@13973 1142,0,@10448 1177,0,@11428 1250,0,@10448 1285,0,@13975 1320,0,@10448 1355,0,@11428 1428,0,@10448 1463,0,@13977 1501,0,@11431 1537,0,0 1544,0,0 1551,0,1 1557,0,0 1576,0,@9455 1622,0,@4724 1666,0,@8335 1699,0,1 1706,0,3 1715,0,0 1763,0,@11424 1800,0,@10448 1835,0,@17491 1870,0,@10448 1905,0,@11428 1978,0,@10448 2013,0,@16347 2048,0,@10448 2083,0,@11428 2156,0,@10448 2191,0,@17109 2229,0,@11431 2265,0,0 2272,0,0 2279,0,1 2285,0,0 2318,0,0 2355,0,@10448 2390,0,@18081 2426,0,0 2433,0,0 2440,0,1 2446,0,0 2463,0,@11331 2503,0,@9455 2527,0,@11421 2548,0,@9455 2590,0,@4674 2634,0,@8337 2667,0,1 2674,0,3 2683,0,0 2711,0,@11421 2732,0,@9455 2778,0,@4674 2822,0,@8338 2855,0,1 2862,0,3 2871,0,0 2902,0,@9455 2926,0,@11421 2954,0,@9455 2995,0,@4670 3018,0,@11421 3046,0,@9455 3087,0,@4670 3110,0,@11421 3137,0,@9455 3178,0,@4602 3201,0,@11421 3229,0,@9455 3270,0,@4670 3302,0,@9455 3343,0,@4670 3382,0,@11424 3419,0,@10448 3454,0,@13969 3489,0,@10448 3524,0,@11428 3597,0,@10448 3632,0,@13971 3667,0,@10448 3702,0,@11428 3775,0,@10448 3810,0,@13973 3845,0,@10448 3880,0,@11428 3953,0,@10448 3988,0,@13975 4023,0,@10448 4058,0,@11428 4131,0,@10448 4166,0,@13977 4204,0,@11431 4240,0,0 4247,0,0 4254,0,1 4260,0,0 4293,0,@11424 4330,0,@10448 4365,0,@17556 4400,0,@10448 4435,0,@11428 4508,0,@10448 4543,0,@17214 4581,0,@10448 4616,0,@11428 4689,0,@10448 4724,0,@15833 4762,0,@11431 4798,0,0 4805,0,0 4812,0,1 4818,0,0 4851,0,0 4888,0,@10448 4923,0,@18089 4959,0,0 4966,0,0 4973,0,1 4979,0,0 4996,0,@11331 5021,0,@9455 5045,0,@11421 5066,0,@9455 5108,0,@4674 5152,0,@8339 5185,0,1 5192,0,2 5201,0,0 5229,0,@11421 5251,0,@9455 5275,0,@11421 5303,0,@9455 5344,0,@4670 5367,0,@11421 5395,0,@9455 5436,0,@4670 5459,0,@11421 5486,0,@9455 5527,0,@4602 5550,0,@11421 5578,0,@9455 5619,0,@4670 5651,0,@9455 5692,0,@4670 5731,0,@11424 5768,0,@10448 5803,0,@13969 5838,0,@10448 5873,0,@11428 5946,0,@10448 5981,0,@13971 6016,0,@10448 6051,0,@11428 6124,0,@10448 6159,0,@13973 6194,0,@10448 6229,0,@11428 6302,0,@10448 6337,0,@13975 6372,0,@10448 6407,0,@11428 6480,0,@10448 6515,0,@13977 6553,0,@11431 6589,0,0 6596,0,0 6603,0,1 6609,0,0 6628,0,@9455 6674,0,@4724 6681,0,@18101 6729,0,@11424 6766,0,@10448 6801,0,@18105 6836,0,@10448 6871,0,@11428 6944,0,@10448 6979,0,@17556 7014,0,@10448 7049,0,@11428 7122,0,@10448 7157,0,@18107 7195,0,@11431 7231,0,0 7238,0,0 7245,0,1 7251,0,0 7284,0,0 7321,0,@10448 7356,0,@18109 7392,0,0 7399,0,0 7406,0,1 7412,0,0 8335:D3,116|3b650c7305ff552ccd0589d650bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c707285b43b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c258ff22f400|@10454,1,@3524|14,0,@4674 54,0,@8336 87,0,1 94,0,3 103,0,0 8336:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18080,1,@3523| 8337:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18088,1,@3525| 8338:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18088,1,@3526| 8339:D3,4296|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be2cb566b1e94310000089f68b3e8b7f1089d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c24048b570489d683fa037d0abf2cb566b1e92f0f000089ff8b17ff3289f783ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424088b7e0489fa83ff057d0abe2cb566b1e9ff08000089f68b3e8b7f0489d683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c8b570489d683fa077d0abf2cb566b1e9ee07000089ff8b17ff721489f783ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24108b770489f283fe097d0abe2cb566b1e9bd01000089ff8b378b760c83ea02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8e80b69b1ff1289c28b0424ff1289c7578b7424188b3e8b7f0889f68b760483ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c241c8b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fc1668b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706200c69b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707249568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c0c69b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@9816,1,@3529|30,0,@11421 58,0,@9455 99,0,@4672 125,0,@11421 153,0,@9455 177,0,@11421 205,0,@9455 246,0,@4670 269,0,@11421 297,0,@9455 338,0,@4670 361,0,@11421 388,0,@9455 429,0,@4602 452,0,@11421 480,0,@9455 521,0,@4670 553,0,@9455 594,0,@4670 633,0,@11424 670,0,@10448 705,0,@13969 740,0,@10448 775,0,@11428 848,0,@10448 883,0,@13971 918,0,@10448 953,0,@11428 1026,0,@10448 1061,0,@13973 1096,0,@10448 1131,0,@11428 1204,0,@10448 1239,0,@13975 1274,0,@10448 1309,0,@11428 1382,0,@10448 1417,0,@13977 1455,0,@11431 1491,0,0 1498,0,0 1505,0,1 1511,0,0 1531,0,@11421 1559,0,@9455 1600,0,@4602 1626,0,@11421 1655,0,@9455 1679,0,@11421 1707,0,@9455 1748,0,@4670 1771,0,@11421 1799,0,@9455 1840,0,@4670 1863,0,@11421 1890,0,@9455 1931,0,@4602 1954,0,@11421 1982,0,@9455 2023,0,@4670 2055,0,@9455 2096,0,@4670 2135,0,@11424 2172,0,@10448 2207,0,@13969 2242,0,@10448 2277,0,@11428 2350,0,@10448 2385,0,@13971 2420,0,@10448 2455,0,@11428 2528,0,@10448 2563,0,@13973 2598,0,@10448 2633,0,@11428 2706,0,@10448 2741,0,@13975 2776,0,@10448 2811,0,@11428 2884,0,@10448 2919,0,@13977 2957,0,@11431 2993,0,0 3000,0,0 3007,0,1 3013,0,0 3033,0,@11421 3059,0,@9455 3101,0,@4724 3108,0,@18093 3148,0,@9455 3230,0,@11424 3267,0,@10448 3302,0,@15330 3337,0,@10448 3372,0,@11428 3445,0,@10448 3480,0,@18097 3518,0,@10448 3553,0,@11428 3626,0,@10448 3661,0,@16797 3696,0,@10448 3731,0,@11428 3804,0,@10448 3839,0,@14926 3874,0,@10448 3909,0,@11428 3982,0,@10448 4017,0,@17556 4052,0,@10448 4087,0,@11428 4160,0,@10448 4195,0,@18099 4233,0,@11431 4269,0,0 4276,0,0 4283,0,1 4289,0,0 8340:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8040c69b1ff1289c258ff22f400|@10629,1,@3528|12,0,@4604 19,0,@18095 8341:D3,20|3b650c7305ff552ccd01bf4405c0b08b17ff22f4|@17238,1,@3527|11,0,@4763 8342:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8780c69b1ff1289c258ff22f400|@10454,1,@3531|12,0,@4674 19,0,@18103 8343:D3,20|3b650c7305ff552ccd01bfbc05c0b08b17ff22f4|@16360,1,@3530|11,0,@4778 8344:D3,2204|3b650c7305ff552ccd018b780489fe83ff037d06b8b4ab66b1c38b3889fa8b3f83ff010f85460200008b7a04ff720883ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be185566b1e91701000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bfe405c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f00d69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f783fe037d06b8b4ab66b1c389d68b1283fa030f85f90100008b760483ef02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf4405c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707600e69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fa83ff037d06b8b4ab66b1c389f78b3683fe050f85f90100008b7f0483ea02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc020000008950048938bfec03c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707d40e69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d683fa037d06b8b4ab66b1c38b7f0483ee02710ab8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2405c0b08b17ff1289c68b3e83ff010f85100100008b7e10f7c7010000000f85ff0000008b5704f6c2010f85f10000008b0f89ca8b0983f907754389d78b7f0481ffc01866b17507bf03000000eb2381ffcc1866b17507bf03000000eb1481ffd81866b17507bf03000000eb05bf0100000083ff037402eb05e9a30000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470494b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706206066b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460803000000c7460407000000c70601000000eb02eb00eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707440f69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@18080,1,@3534|21,0,@11331 58,0,@9455 82,0,@10443 103,0,@9455 144,0,@4602 169,0,@9455 214,0,@4783 253,0,@11375 290,0,@10448 325,0,@11428 401,0,@11377 437,0,0 444,0,0 451,0,1 457,0,0 490,0,0 527,0,@10448 562,0,@18126 598,0,0 605,0,0 612,0,1 618,0,0 631,0,@11331 658,0,@9455 699,0,@4763 765,0,@9771 772,0,1 780,0,@9772 787,0,1 795,0,@9773 802,0,1 809,0,0 854,0,@11374 891,0,@10625 926,0,@11377 962,0,0 969,0,1 976,0,3 982,0,0 1021,0,0 1058,0,@10448 1093,0,@18133 1129,0,0 1136,0,0 1143,0,1 1149,0,0 1162,0,@11331 1189,0,@9455 1230,0,@4720 1296,0,@9771 1303,0,1 1311,0,@9772 1318,0,1 1326,0,@9773 1333,0,1 1340,0,0 1385,0,@11374 1422,0,@10625 1457,0,@11377 1493,0,0 1500,0,1 1507,0,3 1513,0,0 1552,0,0 1589,0,@10448 1624,0,@18140 1660,0,0 1667,0,0 1674,0,1 1680,0,0 1693,0,@11331 1707,0,@9455 1748,0,@4759 1814,0,@9771 1821,0,1 1829,0,@9772 1836,0,1 1844,0,@9773 1851,0,1 1858,0,0 1903,0,@11374 1940,0,@10625 1975,0,@11377 2011,0,0 2018,0,1 2025,0,3 2031,0,0 2070,0,0 2107,0,@10448 2142,0,@18147 2178,0,0 2185,0,0 2192,0,1 2198,0,0 8345:D3,624|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e9220100008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24088b7f048b74240483ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707640d69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@18125,1,@3533|26,0,@11331 44,0,@9455 68,0,@10443 95,0,@9455 136,0,@4602 168,0,@9455 250,0,@11375 287,0,@10448 322,0,@11428 398,0,@11377 434,0,0 441,0,0 448,0,1 454,0,0 487,0,0 524,0,@10448 559,0,@18118 595,0,0 602,0,0 609,0,1 615,0,0 8346:D3,15748|3b650c7305ff552ccd05528b780489fa83ff037d0a8d642404b8b4ab66b1c38b3889fe8b3f83ff010f8505140000ff760483ea0252710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9d91200008b7c24048b3f89f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f088b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e9c71100008b7c24088b770889d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8cc0f69b1ff1289c28b0424ff1289c7578b74240c89f783fe057d0abe2cb566b1e9a91000008b742410ff761489ff83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c241089fa83ff077d0abf2cb566b1e97b0a00008b7c24148b771c89d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7604897704c7077cb843b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241889fe83ff097d0abe2cb566b1e9070900008b7c241c8b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74241c89f783fe0b7d0abf2cb566b1e9f90700008b742420ff761889ff83ef0257710e8d642430b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642440b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c242089fa83ff0d7d0abe2cb566b1e9cb0100008b7c24248b770c89d283ea02710e8d64242cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b83c1069b1ff1289c28b0424ff1289c7578b7c242c8b77108b54242883ea02710e8d642434b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8741069b1ff1289c28b0424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707200c69b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7064c1169b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707249568b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706fcef67b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707681169b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a0c168b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707901169b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706341468b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ac1169b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c389f28b3683fe030f85640900008b7204ff7208ff720c83ef0257710e8d642410b8f80466b18b5d04ff238b142489d783fa017d0e8d642410be2cb566b1e93208000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089780489308b7c240c8b7f088b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e92607000089f683ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b760c897704c70768c443b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c83ef0257710e8d642420b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70758b368b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883768b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707201269b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d0a8d642404b8b4ab66b1c389d78b1283fa050f85a80c0000ff770483ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e97c0b00008b7c24048b7f0489f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf0c06c0b08b17ff1289c7578b7c240489fa83ff037d0abf2cb566b1e96b0a00008b7c24088b771489d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b7604897704c7076c3e44b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240c89fe83ff057d0abe2cb566b1e9f70800008b7c24108b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c241089fa83ff077d0abf2cb566b1e9e90700008b7c24148b771089d283ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf0c04c0b08b17b8f41769b1ff1289c28b0424ff1289c7578b74241889f783fe097d0abe2cb566b1e9cb0600008b74241cff760c89ff83ef0257710e8d64242cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c24208b3f8b74241c83ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24248b7f088b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c1869b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706481869b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707641869b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706841869b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707a01869b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c81869b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e41869b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff070f85c809000089f78b7704ff7708ff770c83ea0252710e8d642410b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642410be2cb566b1e99408000089d283ea02710e8d642410b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424108b760c897704c707304344b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b74240889f783fe037d0abf2cb566b1e92707000089ff83ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24148b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24188b7f0c89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c241c8b3f89f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24208b7f0889f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24248b7f108b74241083ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240c83ee02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74241c8b7604897704c707584344b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7065c1969b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706801969b183c4148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7079c1969b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c38d64240489d783fa037d06b8b4ab66b1c3ff7604ff7608ff760c83ef0257710e8d642410b8f80466b18b5d04ff238b342489f783fe017d0e8d642410be2cb566b1e9df07000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24088b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c240c8b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24108b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24148b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24188b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e9b501000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf3c00c0b08b17ff1289c7578b74240883ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b742410893757bf0c04c0b08b17b8101a69b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706200c69b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706085868b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707481a69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4|@18331,1,@3565|26,0,@11331 60,0,@9455 84,0,@11421 111,0,@9455 177,0,@11421 205,0,@9455 247,0,@4724 254,0,@18155 282,0,@11421 311,0,@9455 335,0,@11421 363,0,@9455 404,0,@4670 427,0,@11421 455,0,@9455 496,0,@4670 519,0,@11421 546,0,@9455 587,0,@4602 610,0,@11421 638,0,@9455 679,0,@4670 711,0,@9455 752,0,@4670 791,0,@11424 828,0,@10448 863,0,@13969 898,0,@10448 933,0,@11428 1006,0,@10448 1041,0,@13971 1076,0,@10448 1111,0,@11428 1184,0,@10448 1219,0,@13973 1254,0,@10448 1289,0,@11428 1362,0,@10448 1397,0,@13975 1432,0,@10448 1467,0,@11428 1540,0,@10448 1575,0,@13977 1613,0,@11431 1649,0,0 1656,0,0 1663,0,1 1669,0,0 1686,0,@11421 1714,0,@9455 1756,0,@4724 1800,0,@8349 1833,0,1 1840,0,3 1849,0,0 1877,0,@11421 1905,0,@9455 1946,0,@4602 1969,0,@11421 1998,0,@9455 2022,0,@11421 2050,0,@9455 2091,0,@4670 2114,0,@11421 2142,0,@9455 2183,0,@4670 2206,0,@11421 2233,0,@9455 2274,0,@4602 2297,0,@11421 2325,0,@9455 2366,0,@4670 2398,0,@9455 2439,0,@4670 2478,0,@11424 2515,0,@10448 2550,0,@13969 2585,0,@10448 2620,0,@11428 2693,0,@10448 2728,0,@13971 2763,0,@10448 2798,0,@11428 2871,0,@10448 2906,0,@13973 2941,0,@10448 2976,0,@11428 3049,0,@10448 3084,0,@13975 3119,0,@10448 3154,0,@11428 3227,0,@10448 3262,0,@13977 3300,0,@11431 3336,0,0 3343,0,0 3350,0,1 3356,0,0 3373,0,@11421 3401,0,@9455 3443,0,@4724 3450,0,@18163 3487,0,@9455 3529,0,@4724 3536,0,@18167 3584,0,@11424 3621,0,@10448 3656,0,@18097 3691,0,@10448 3726,0,@11428 3799,0,@10448 3834,0,@18180 3872,0,@10448 3907,0,@11428 3980,0,@10448 4015,0,@16797 4050,0,@10448 4085,0,@11428 4158,0,@10448 4193,0,@14926 4228,0,@10448 4263,0,@11428 4336,0,@10448 4371,0,@18182 4409,0,@10448 4444,0,@11428 4517,0,@10448 4552,0,@17441 4587,0,@10448 4622,0,@11428 4695,0,@10448 4730,0,@18184 4768,0,@10448 4803,0,@11428 4876,0,@10448 4911,0,@15286 4949,0,@11431 4985,0,0 4992,0,0 4999,0,1 5005,0,0 5038,0,0 5075,0,@10448 5110,0,@18186 5146,0,0 5153,0,0 5160,0,1 5166,0,0 5183,0,@11331 5221,0,@9455 5245,0,@11421 5266,0,@9455 5332,0,@11421 5353,0,@9455 5399,0,@4674 5443,0,@8357 5476,0,1 5483,0,3 5492,0,0 5523,0,@9455 5547,0,@11421 5575,0,@9455 5616,0,@4670 5639,0,@11421 5667,0,@9455 5708,0,@4670 5731,0,@11421 5758,0,@9455 5799,0,@4602 5822,0,@11421 5850,0,@9455 5891,0,@4670 5923,0,@9455 5964,0,@4670 6003,0,@11424 6040,0,@10448 6075,0,@13969 6110,0,@10448 6145,0,@11428 6218,0,@10448 6253,0,@13971 6288,0,@10448 6323,0,@11428 6396,0,@10448 6431,0,@13973 6466,0,@10448 6501,0,@11428 6574,0,@10448 6609,0,@13975 6644,0,@10448 6679,0,@11428 6752,0,@10448 6787,0,@13977 6825,0,@11431 6861,0,0 6868,0,0 6875,0,1 6881,0,0 6914,0,@11424 6951,0,@10448 6986,0,@17556 7021,0,@10448 7056,0,@11428 7129,0,@10448 7164,0,@17214 7202,0,@10448 7237,0,@11428 7310,0,@10448 7345,0,@15833 7383,0,@11431 7419,0,0 7426,0,0 7433,0,1 7439,0,0 7472,0,0 7509,0,@10448 7544,0,@18193 7580,0,0 7587,0,0 7594,0,1 7600,0,0 7617,0,@11331 7649,0,@9455 7673,0,@11421 7701,0,@9455 7742,0,@4788 7765,0,@11421 7793,0,@9455 7835,0,@4724 7879,0,@8368 7912,0,1 7919,0,3 7928,0,0 7956,0,@11421 7984,0,@9455 8025,0,@4672 8048,0,@11421 8076,0,@9455 8118,0,@4724 8125,0,@18286 8153,0,@11421 8182,0,@9455 8206,0,@11421 8234,0,@9455 8275,0,@4670 8298,0,@11421 8326,0,@9455 8367,0,@4670 8390,0,@11421 8417,0,@9455 8458,0,@4602 8481,0,@11421 8509,0,@9455 8550,0,@4670 8582,0,@9455 8623,0,@4670 8662,0,@11424 8699,0,@10448 8734,0,@13969 8769,0,@10448 8804,0,@11428 8877,0,@10448 8912,0,@13971 8947,0,@10448 8982,0,@11428 9055,0,@10448 9090,0,@13973 9125,0,@10448 9160,0,@11428 9233,0,@10448 9268,0,@13975 9303,0,@10448 9338,0,@11428 9411,0,@10448 9446,0,@13977 9484,0,@11431 9520,0,0 9527,0,0 9534,0,1 9540,0,0 9565,0,@9455 9647,0,@11424 9684,0,@10448 9719,0,@18290 9754,0,@10448 9789,0,@11428 9862,0,@10448 9897,0,@18292 9932,0,@10448 9967,0,@11428 10040,0,@10448 10075,0,@18294 10113,0,@10448 10148,0,@11428 10221,0,@10448 10256,0,@18296 10291,0,@10448 10326,0,@11428 10399,0,@10448 10434,0,@18298 10472,0,@10448 10507,0,@11428 10580,0,@10448 10615,0,@18300 10653,0,@11431 10689,0,0 10696,0,0 10703,0,1 10709,0,0 10742,0,0 10779,0,@10448 10814,0,@18302 10850,0,0 10857,0,0 10864,0,1 10870,0,0 10887,0,@11331 10927,0,@9455 10951,0,@11421 10972,0,@9455 11014,0,@4674 11058,0,@8372 11091,0,1 11098,0,3 11107,0,0 11135,0,@11421 11157,0,@9455 11181,0,@11421 11209,0,@9455 11250,0,@4670 11273,0,@11421 11301,0,@9455 11342,0,@4670 11365,0,@11421 11392,0,@9455 11433,0,@4602 11456,0,@11421 11484,0,@9455 11525,0,@4670 11557,0,@9455 11598,0,@4670 11637,0,@11424 11674,0,@10448 11709,0,@13969 11744,0,@10448 11779,0,@11428 11852,0,@10448 11887,0,@13971 11922,0,@10448 11957,0,@11428 12030,0,@10448 12065,0,@13973 12100,0,@10448 12135,0,@11428 12208,0,@10448 12243,0,@13975 12278,0,@10448 12313,0,@11428 12386,0,@10448 12421,0,@13977 12459,0,@11431 12495,0,0 12502,0,0 12509,0,1 12515,0,0 12534,0,@9455 12580,0,@4724 12624,0,@8373 12657,0,1 12664,0,3 12673,0,0 12721,0,@11424 12758,0,@10448 12793,0,@18309 12828,0,@10448 12863,0,@11428 12936,0,@10448 12971,0,@16347 13006,0,@10448 13041,0,@11428 13114,0,@10448 13149,0,@18311 13187,0,@11431 13223,0,0 13230,0,0 13237,0,1 13243,0,0 13276,0,0 13313,0,@10448 13348,0,@18313 13384,0,0 13391,0,0 13398,0,1 13404,0,0 13421,0,@11331 13446,0,@9455 13470,0,@11421 13492,0,@9455 13516,0,@11421 13544,0,@9455 13585,0,@4670 13608,0,@11421 13636,0,@9455 13677,0,@4670 13700,0,@11421 13727,0,@9455 13768,0,@4602 13791,0,@11421 13819,0,@9455 13860,0,@4670 13892,0,@9455 13933,0,@4670 13972,0,@11424 14009,0,@10448 14044,0,@13969 14079,0,@10448 14114,0,@11428 14187,0,@10448 14222,0,@13971 14257,0,@10448 14292,0,@11428 14365,0,@10448 14400,0,@13973 14435,0,@10448 14470,0,@11428 14543,0,@10448 14578,0,@13975 14613,0,@10448 14648,0,@11428 14721,0,@10448 14756,0,@13977 14794,0,@11431 14830,0,0 14837,0,0 14844,0,1 14850,0,0 14867,0,@11421 14888,0,@9455 14933,0,@4602 14958,0,@9455 15004,0,@4724 15011,0,@18320 15059,0,@11424 15096,0,@10448 15131,0,@18097 15166,0,@10448 15201,0,@11428 15274,0,@10448 15309,0,@14926 15344,0,@10448 15379,0,@11428 15452,0,@10448 15487,0,@16347 15525,0,@11431 15561,0,0 15568,0,0 15575,0,1 15581,0,0 15614,0,0 15651,0,@10448 15686,0,@18324 15722,0,0 15729,0,0 15736,0,1 15742,0,0 8347:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8e80f69b1ff1289c258ff22f400|@10454,1,@3536|12,0,@4674 19,0,@18157 8348:D3,564|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be2cb566b1e9af01000089f68b3e8b3f89d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707041069b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201069b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@3535|29,0,@11421 56,0,@9455 97,0,@4778 132,0,@9455 173,0,@4778 212,0,@11424 249,0,@10448 284,0,@18159 319,0,@10448 354,0,@11428 427,0,@10448 462,0,@18161 500,0,@11431 536,0,0 543,0,0 550,0,1 556,0,0 8349:D3,116|3b650c7305ff552ccd0589d650bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c70704b943b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c258ff22f400|@10454,1,@3538|14,0,@4674 54,0,@8350 87,0,2 94,0,2 103,0,0 8350:D3,428|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e92501000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3537|30,0,@10443 57,0,@9455 98,0,@4670 133,0,@9455 215,0,@11375 252,0,@10448 287,0,@11428 363,0,@11377 399,0,0 406,0,0 413,0,1 419,0,0 8351:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8581069b1ff1289c258ff22f400|@10454,1,@3540|12,0,@4674 19,0,@18165 8352:D3,564|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be2cb566b1e9af01000089f68b3e8b3f89d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707041069b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201069b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@3539|29,0,@11421 56,0,@9455 97,0,@4778 132,0,@9455 173,0,@4778 212,0,@11424 249,0,@10448 284,0,@18159 319,0,@10448 354,0,@11428 427,0,@10448 462,0,@18161 500,0,@11431 536,0,0 543,0,0 550,0,1 556,0,0 8353:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b8901069b1ff1289c258ff22f400|@10629,1,@3544|12,0,@4604 19,0,@18169 8354:D3,20|3b650c7305ff552ccd01bffc05c0b08b17ff22f4|@18179,1,@3543|11,0,@4786 8355:D3,1680|3b650c7305ff552ccd05528b700489f783fe037d0a8d642404b8b4ab66b1c3ff3083ef0257710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe2cb566b1e9420500008b7c24048b7f0889f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f108b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e92f0400008b7c24088b3f89f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c240c8b7f0c8b17ff1289c7578b7c240889fa83ff057d0abe2cb566b1e9200300008b7c240c8b771089d283ea02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b7424148b7608897704c70740c443b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c241089fe83ff077d0abf2cb566b1e9ac0100008b7c24148b7f0489f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24188b7f0c8b74241483ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c241c8b7f048b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706181468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706301268b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707341468b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706901268b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c41069b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@18179,1,@3542|26,0,@11331 44,0,@9455 68,0,@11421 96,0,@9455 162,0,@11421 189,0,@9455 255,0,@11421 283,0,@9455 325,0,@4674 369,0,@8356 402,0,1 409,0,3 418,0,0 446,0,@11421 474,0,@9455 515,0,@4602 547,0,@9455 629,0,@11424 666,0,@10448 701,0,@15284 736,0,@10448 771,0,@11428 844,0,@10448 879,0,@14926 914,0,@10448 949,0,@11428 1022,0,@10448 1057,0,@15254 1095,0,@10448 1130,0,@11428 1203,0,@10448 1238,0,@15286 1273,0,@10448 1308,0,@11428 1381,0,@10448 1416,0,@15260 1454,0,@11431 1490,0,0 1497,0,0 1504,0,1 1510,0,0 1543,0,0 1580,0,@10448 1615,0,@18172 1651,0,0 1658,0,0 1665,0,1 1671,0,0 8356:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@15230,1,@3541| 8357:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18088,1,@3545| 8358:D3,7064|3b650c7305ff552ccd05528b780489fe83ff037d0a8d642404b8b4ab66b1c38b1089d78b1283fa010f85c50700008b5704ff770883ee0256710e8d64240cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d64240cbe185566b1e99606000089f683ee02710e8d64240cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704891757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd04897d00c747fc020000008b74240c8b7604897704c7073ce043b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b41269b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d0a8d642404b8b4ab66b1c389fe8b3f83ff030f853f0800008d6424048b7e04ff7608ff760c83ea0252710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe185566b1e90907000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b74240489f783fe037d0abf185566b1e94506000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240883ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf0c04c0b08b17b8241369b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7075c1369b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d0a8d642404b8b4ab66b1c3ff760483ef0257710e8d64240cb8f80466b18b5d04ff238b342489f783fe017d0e8d64240cbe2cb566b1e9090a00008b742404ff3689ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240489fe83ff037d0abf2cb566b1e9d90300008b7c24088b7f1089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf0405c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9cb0200008b7c240c8b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24108b7f088b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9bb0100008b7c24108b7f0889f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24148b770c8b54241083ea02710e8d64241cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757bf7c02c0b08b17b8d41369b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706585768b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f01369b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706101469b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7072c1469b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707501469b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@18235,1,@3550|26,0,@11331 63,0,@9455 87,0,@10443 108,0,@9455 150,0,@4674 194,0,@8359 227,0,1 234,0,3 243,0,0 274,0,@9455 298,0,@11421 326,0,@9455 367,0,@4670 390,0,@11421 418,0,@9455 459,0,@4670 482,0,@11421 509,0,@9455 550,0,@4602 573,0,@11421 601,0,@9455 642,0,@4670 674,0,@9455 715,0,@4670 754,0,@11424 791,0,@10448 826,0,@13969 861,0,@10448 896,0,@11428 969,0,@10448 1004,0,@13971 1039,0,@10448 1074,0,@11428 1147,0,@10448 1182,0,@13973 1217,0,@10448 1252,0,@11428 1325,0,@10448 1360,0,@13975 1395,0,@10448 1430,0,@11428 1503,0,@10448 1538,0,@13977 1576,0,@11431 1612,0,0 1619,0,0 1626,0,1 1632,0,0 1665,0,@11375 1702,0,@10448 1737,0,@11428 1813,0,@11377 1849,0,0 1856,0,0 1863,0,1 1869,0,0 1902,0,0 1939,0,@10448 1974,0,@18202 2010,0,0 2017,0,0 2024,0,1 2030,0,0 2047,0,@11331 2089,0,@9455 2113,0,@10443 2134,0,@9455 2175,0,@4602 2198,0,@10443 2220,0,@9455 2244,0,@11421 2272,0,@9455 2313,0,@4670 2336,0,@11421 2364,0,@9455 2405,0,@4670 2428,0,@11421 2455,0,@9455 2496,0,@4602 2519,0,@11421 2547,0,@9455 2588,0,@4670 2620,0,@9455 2661,0,@4670 2700,0,@11424 2737,0,@10448 2772,0,@13969 2807,0,@10448 2842,0,@11428 2915,0,@10448 2950,0,@13971 2985,0,@10448 3020,0,@11428 3093,0,@10448 3128,0,@13973 3163,0,@10448 3198,0,@11428 3271,0,@10448 3306,0,@13975 3341,0,@10448 3376,0,@11428 3449,0,@10448 3484,0,@13977 3522,0,@11431 3558,0,0 3565,0,0 3572,0,1 3578,0,0 3597,0,@9455 3643,0,@4724 3650,0,@18209 3698,0,@11375 3735,0,@10448 3770,0,@11428 3843,0,@10448 3878,0,@11428 3954,0,@11377 3990,0,0 3997,0,0 4004,0,1 4010,0,0 4043,0,0 4080,0,@10448 4115,0,@18213 4151,0,0 4158,0,0 4165,0,1 4171,0,0 4188,0,@11331 4207,0,@9455 4231,0,@11421 4259,0,@9455 4283,0,@11421 4311,0,@9455 4352,0,@4670 4375,0,@11421 4403,0,@9455 4444,0,@4670 4467,0,@11421 4494,0,@9455 4535,0,@4602 4558,0,@11421 4586,0,@9455 4627,0,@4670 4659,0,@9455 4700,0,@4670 4739,0,@11424 4776,0,@10448 4811,0,@13969 4846,0,@10448 4881,0,@11428 4954,0,@10448 4989,0,@13971 5024,0,@10448 5059,0,@11428 5132,0,@10448 5167,0,@13973 5202,0,@10448 5237,0,@11428 5310,0,@10448 5345,0,@13975 5380,0,@10448 5415,0,@11428 5488,0,@10448 5523,0,@13977 5561,0,@11431 5597,0,0 5604,0,0 5611,0,1 5617,0,0 5634,0,@11421 5662,0,@9455 5703,0,@4755 5726,0,@11421 5754,0,@9455 5820,0,@11421 5848,0,@9455 5889,0,@4602 5921,0,@9455 5963,0,@4674 5970,0,@18220 6018,0,@11424 6055,0,@10448 6090,0,@16336 6125,0,@10448 6160,0,@11428 6233,0,@10448 6268,0,@18222 6303,0,@10448 6338,0,@11428 6411,0,@10448 6446,0,@18224 6481,0,@10448 6516,0,@11428 6589,0,@10448 6624,0,@18226 6659,0,@10448 6694,0,@11428 6767,0,@10448 6802,0,@17556 6840,0,@11431 6876,0,0 6883,0,0 6890,0,1 6896,0,0 6929,0,0 6966,0,@10448 7001,0,@18228 7037,0,0 7044,0,0 7051,0,1 7057,0,0 8359:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18201,1,@3546| 8360:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8401369b1ff1289c258ff22f400|@10454,1,@3548|12,0,@4674 19,0,@18211 8361:D3,20|3b650c7305ff552ccd01bf1c06c0b08b17ff22f4|@15230,1,@3547|11,0,@4790 8362:D3,20|3b650c7305ff552ccd01bfcc03c0b08b17ff22f4|@17436,1,@3549|11,0,@4716 8363:D3,16452|3b650c7305ff552ccd0589d18b780489fe83ff037d06b8b4ab66b1c38b1089d78b1283fa010f85f007000089fa8b7a04ff720883ee0256710e8d642408b8f80466b18b5d04ff238b142489d683fa017d0e8d642408be2cb566b1e9bf06000089f683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf2c05c0b08b17ff1289c7578b7c240483ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c240c8b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24108b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24148b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24188b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c241c8b7f108b74241083ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707085868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706f4ac68b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e41469b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe8b3f83ff030f85970f0000ff7604ff7608ff760c83ea0252710e8d642410b8f80466b18b5d04ff238b342489f783fe017d0e8d642410be2cb566b1e9650e000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e93b08000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf185566b1e9400600008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c2414ff77048b7c240883ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240483c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240883ee02710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf4c00c0b08b17b82c1569b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c41468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707481569b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d06b8b4ab66b1c389f28b3683fe050f85c10700008b7204ff720883ef0257710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be185566b1e99206000089d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd06897d00c747fc020000008b7104897704c707682144b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c03000000c7400807000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b81569b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8b4ab66b1c389d78b1283fa070f850f09000089faff72048b7a08ff720c83ee0256710e8d64240cb8f80466b18b5d04ff238b142489d683fa017d0e8d64240cbe2cb566b1e9db07000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9d106000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240883ee02710e8d642414b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c893757bf7c02c0b08b17b82c1669b1ff1289c28b0424ff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706481669b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70764c868b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706641669b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707801669b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389f283fe037d06b8b4ab66b1c389fe8b3f83ff090f85c307000089f78b7704ff770883ea0252710e8d642408b8f80466b18b5d04ff238b3c2489fa83ff017d0e8d642408be185566b1e99206000089d283ea02710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000895704893757bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd06897d00c747fc020000008b7104897704c7076c2844b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c09000000c7400805000000897804c70001000000ff1289c28b0424ff1289c7578b7c240883ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404be2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707101769b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389d783fa037d06b8b4ab66b1c3ff7604ff7608ff760c83ef0257710e8d642410b8f80466b18b5d04ff238b342489f783fe017d0e8d642410be2cb566b1e9540e000089ff83ef0257710e8d642414b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf2cb566b1e9d60400008b7c24108b7f0489f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24148b7f0c89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c24188b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c241c8b7f0889f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24208b7f108b74241083ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b74240489f783fe037d0abf2cb566b1e92a08000089ff83ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642404bf185566b1e9400600008b7c24108b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c2414ff77048b7c240883ef0257710e8d642424b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240483c4048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b066b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240883ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf0405c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c41468b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b183c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707841769b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@18201,1,@3555|23,0,@11331 62,0,@9455 86,0,@11421 107,0,@9455 148,0,@4760 174,0,@9455 198,0,@11421 226,0,@9455 267,0,@4670 290,0,@11421 318,0,@9455 359,0,@4670 382,0,@11421 409,0,@9455 450,0,@4602 473,0,@11421 501,0,@9455 542,0,@4670 574,0,@9455 615,0,@4670 654,0,@11424 691,0,@10448 726,0,@13969 761,0,@10448 796,0,@11428 869,0,@10448 904,0,@13971 939,0,@10448 974,0,@11428 1047,0,@10448 1082,0,@13973 1117,0,@10448 1152,0,@11428 1225,0,@10448 1260,0,@13975 1295,0,@10448 1330,0,@11428 1403,0,@10448 1438,0,@13977 1476,0,@11431 1512,0,0 1519,0,0 1526,0,1 1532,0,0 1565,0,@11424 1602,0,@10448 1637,0,@16347 1672,0,@10448 1707,0,@11428 1780,0,@10448 1815,0,@17109 1853,0,@11431 1889,0,0 1896,0,0 1903,0,1 1909,0,0 1942,0,0 1979,0,@10448 2014,0,@18237 2050,0,0 2057,0,0 2064,0,1 2070,0,0 2083,0,@11331 2121,0,@9455 2145,0,@11421 2167,0,@9455 2191,0,@11421 2219,0,@9455 2260,0,@4670 2283,0,@11421 2311,0,@9455 2352,0,@4670 2375,0,@11421 2402,0,@9455 2443,0,@4602 2466,0,@11421 2494,0,@9455 2535,0,@4670 2567,0,@9455 2608,0,@4670 2647,0,@11424 2684,0,@10448 2719,0,@13969 2754,0,@10448 2789,0,@11428 2862,0,@10448 2897,0,@13971 2932,0,@10448 2967,0,@11428 3040,0,@10448 3075,0,@13973 3110,0,@10448 3145,0,@11428 3218,0,@10448 3253,0,@13975 3288,0,@10448 3323,0,@11428 3396,0,@10448 3431,0,@13977 3469,0,@11431 3505,0,0 3512,0,0 3519,0,1 3525,0,0 3542,0,@11421 3564,0,@9455 3588,0,@10443 3615,0,@9455 3656,0,@4602 3689,0,@9455 3713,0,@11421 3741,0,@9455 3782,0,@4670 3805,0,@11421 3833,0,@9455 3874,0,@4670 3897,0,@11421 3924,0,@9455 3965,0,@4602 3988,0,@11421 4016,0,@9455 4057,0,@4670 4089,0,@9455 4130,0,@4670 4169,0,@11424 4206,0,@10448 4241,0,@13969 4276,0,@10448 4311,0,@11428 4384,0,@10448 4419,0,@13971 4454,0,@10448 4489,0,@11428 4562,0,@10448 4597,0,@13973 4632,0,@10448 4667,0,@11428 4740,0,@10448 4775,0,@13975 4810,0,@10448 4845,0,@11428 4918,0,@10448 4953,0,@13977 4991,0,@11431 5027,0,0 5034,0,0 5041,0,1 5047,0,0 5080,0,@11375 5117,0,@10448 5152,0,@11428 5228,0,@11377 5264,0,0 5271,0,0 5278,0,1 5284,0,0 5303,0,@9455 5349,0,@4604 5356,0,@18241 5404,0,@11424 5441,0,@10448 5476,0,@15295 5511,0,@10448 5546,0,@11428 5619,0,@10448 5654,0,@14926 5689,0,@10448 5724,0,@11428 5797,0,@10448 5832,0,@17556 5870,0,@11431 5906,0,0 5913,0,0 5920,0,1 5926,0,0 5959,0,0 5996,0,@10448 6031,0,@18243 6067,0,0 6074,0,0 6081,0,1 6087,0,0 6100,0,@11331 6135,0,@9455 6159,0,@10443 6180,0,@9455 6222,0,@4674 6262,0,@8365 6295,0,1 6302,0,3 6311,0,0 6342,0,@9455 6366,0,@11421 6394,0,@9455 6435,0,@4670 6458,0,@11421 6486,0,@9455 6527,0,@4670 6550,0,@11421 6577,0,@9455 6618,0,@4602 6641,0,@11421 6669,0,@9455 6710,0,@4670 6742,0,@9455 6783,0,@4670 6822,0,@11424 6859,0,@10448 6894,0,@13969 6929,0,@10448 6964,0,@11428 7037,0,@10448 7072,0,@13971 7107,0,@10448 7142,0,@11428 7215,0,@10448 7250,0,@13973 7285,0,@10448 7320,0,@11428 7393,0,@10448 7428,0,@13975 7463,0,@10448 7498,0,@11428 7571,0,@10448 7606,0,@13977 7644,0,@11431 7680,0,0 7687,0,0 7694,0,1 7700,0,0 7733,0,@11375 7770,0,@10448 7805,0,@11428 7881,0,@11377 7917,0,0 7924,0,0 7931,0,1 7937,0,0 7970,0,0 8007,0,@10448 8042,0,@18250 8078,0,0 8085,0,0 8092,0,1 8098,0,0 8111,0,@11331 8151,0,@9455 8175,0,@11421 8196,0,@9455 8237,0,@4672 8260,0,@11421 8282,0,@9455 8306,0,@11421 8334,0,@9455 8375,0,@4670 8398,0,@11421 8426,0,@9455 8467,0,@4670 8490,0,@11421 8517,0,@9455 8558,0,@4602 8581,0,@11421 8609,0,@9455 8650,0,@4670 8682,0,@9455 8723,0,@4670 8762,0,@11424 8799,0,@10448 8834,0,@13969 8869,0,@10448 8904,0,@11428 8977,0,@10448 9012,0,@13971 9047,0,@10448 9082,0,@11428 9155,0,@10448 9190,0,@13973 9225,0,@10448 9260,0,@11428 9333,0,@10448 9368,0,@13975 9403,0,@10448 9438,0,@11428 9511,0,@10448 9546,0,@13977 9584,0,@11431 9620,0,0 9627,0,0 9634,0,1 9640,0,0 9659,0,@9455 9705,0,@4674 9712,0,@18257 9760,0,@11424 9797,0,@10448 9832,0,@18259 9867,0,@10448 9902,0,@11428 9975,0,@10448 10010,0,@17556 10045,0,@10448 10080,0,@11428 10153,0,@10448 10188,0,@18261 10226,0,@11431 10262,0,0 10269,0,0 10276,0,1 10282,0,0 10315,0,0 10352,0,@10448 10387,0,@18263 10423,0,0 10430,0,0 10437,0,1 10443,0,0 10456,0,@11331 10493,0,@9455 10517,0,@10443 10538,0,@9455 10580,0,@4674 10620,0,@8367 10653,0,4 10660,0,2 10669,0,0 10700,0,@9455 10724,0,@11421 10752,0,@9455 10793,0,@4670 10816,0,@11421 10844,0,@9455 10885,0,@4670 10908,0,@11421 10935,0,@9455 10976,0,@4602 10999,0,@11421 11027,0,@9455 11068,0,@4670 11100,0,@9455 11141,0,@4670 11180,0,@11424 11217,0,@10448 11252,0,@13969 11287,0,@10448 11322,0,@11428 11395,0,@10448 11430,0,@13971 11465,0,@10448 11500,0,@11428 11573,0,@10448 11608,0,@13973 11643,0,@10448 11678,0,@11428 11751,0,@10448 11786,0,@13975 11821,0,@10448 11856,0,@11428 11929,0,@10448 11964,0,@13977 12002,0,@11431 12038,0,0 12045,0,0 12052,0,1 12058,0,0 12091,0,@11375 12128,0,@10448 12163,0,@11428 12239,0,@11377 12275,0,0 12282,0,0 12289,0,1 12295,0,0 12328,0,0 12365,0,@10448 12400,0,@18272 12436,0,0 12443,0,0 12450,0,1 12456,0,0 12469,0,@11331 12494,0,@9455 12518,0,@11421 12540,0,@9455 12564,0,@11421 12592,0,@9455 12633,0,@4670 12656,0,@11421 12684,0,@9455 12725,0,@4670 12748,0,@11421 12775,0,@9455 12816,0,@4602 12839,0,@11421 12867,0,@9455 12908,0,@4670 12940,0,@9455 12981,0,@4670 13020,0,@11424 13057,0,@10448 13092,0,@13969 13127,0,@10448 13162,0,@11428 13235,0,@10448 13270,0,@13971 13305,0,@10448 13340,0,@11428 13413,0,@10448 13448,0,@13973 13483,0,@10448 13518,0,@11428 13591,0,@10448 13626,0,@13975 13661,0,@10448 13696,0,@11428 13769,0,@10448 13804,0,@13977 13842,0,@11431 13878,0,0 13885,0,0 13892,0,1 13898,0,0 13915,0,@11421 13937,0,@9455 13961,0,@10443 13988,0,@9455 14029,0,@4602 14062,0,@9455 14086,0,@11421 14114,0,@9455 14155,0,@4670 14178,0,@11421 14206,0,@9455 14247,0,@4670 14270,0,@11421 14297,0,@9455 14338,0,@4602 14361,0,@11421 14389,0,@9455 14430,0,@4670 14462,0,@9455 14503,0,@4670 14542,0,@11424 14579,0,@10448 14614,0,@13969 14649,0,@10448 14684,0,@11428 14757,0,@10448 14792,0,@13971 14827,0,@10448 14862,0,@11428 14935,0,@10448 14970,0,@13973 15005,0,@10448 15040,0,@11428 15113,0,@10448 15148,0,@13975 15183,0,@10448 15218,0,@11428 15291,0,@10448 15326,0,@13977 15364,0,@11431 15400,0,0 15407,0,0 15414,0,1 15420,0,0 15453,0,@11375 15490,0,@10448 15525,0,@11428 15601,0,@11377 15637,0,0 15644,0,0 15651,0,1 15657,0,0 15676,0,@9455 15721,0,@4755 15760,0,@11424 15797,0,@10448 15832,0,@15295 15867,0,@10448 15902,0,@11428 15975,0,@10448 16010,0,@14926 16045,0,@10448 16080,0,@11428 16153,0,@10448 16188,0,@17556 16226,0,@11431 16262,0,0 16269,0,0 16276,0,1 16282,0,0 16315,0,0 16352,0,@10448 16387,0,@18279 16423,0,0 16430,0,0 16437,0,1 16443,0,0 8364:D3,20|3b650c7305ff552ccd01bf0405c0b08b17ff22f4|@16794,1,@3551|11,0,@4755 8365:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18235,1,@3552| 8366:D3,1736|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be185566b1e94306000089f68b3e8b3f89d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24048b37ff760489ff8b7f0483ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abf2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abe2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abf2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706e49867b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707089967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706289967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707449967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706689967b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@3553|29,0,@10443 56,0,@9455 97,0,@4602 133,0,@9455 157,0,@11421 185,0,@9455 226,0,@4670 249,0,@11421 277,0,@9455 318,0,@4670 341,0,@11421 368,0,@9455 409,0,@4602 432,0,@11421 460,0,@9455 501,0,@4670 533,0,@9455 574,0,@4670 613,0,@11424 650,0,@10448 685,0,@13969 720,0,@10448 755,0,@11428 828,0,@10448 863,0,@13971 898,0,@10448 933,0,@11428 1006,0,@10448 1041,0,@13973 1076,0,@10448 1111,0,@11428 1184,0,@10448 1219,0,@13975 1254,0,@10448 1289,0,@11428 1362,0,@10448 1397,0,@13977 1435,0,@11431 1471,0,0 1478,0,0 1485,0,1 1491,0,0 1524,0,@11375 1561,0,@10448 1596,0,@11428 1672,0,@11377 1708,0,0 1715,0,0 1722,0,1 1728,0,0 8367:D3,5612|3b650c7305ff552ccd0552508b3c248b570489d683fa017d0e8d642408be2cb566b1e96515000089ff8b17ff3289f783ef0257710e8d642410b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7424048b7e0489fa83ff037d0abf2cb566b1e9320f000089f68b3e8b7f0489d683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c24088b570489d683fa057d0abe2cb566b1e9210e000089ff8b17ff720889f783ef0257710e8d642418b8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642424b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d642428b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c70701000000578b7c240c8b37ff760c89ff8b7f0483ef0257710e8d64241cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408be185566b1e90a0700008b7c24048b3f89f683ee02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24188b7f048b17ff1289c7578b7c240489fe83ff037d0abf185566b1e93e0600008b7c24088b7f0489f683ee02710e8d642420b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf6c02c0b08b17ff1289c7578b7c240cff77088b7c240c83ef0257710e8d64242cb8f80466b18b5d04ff238b3c2489fe83ff017d0e8d642408bf2cb566b1e9d60400008b7c24048b7f0489f683ee02710e8d64242cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240489fe83ff037d0abe2cb566b1e9c50300008b7c24088b7f0c89f683ee02710e8d642430b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c240889fe83ff057d0abf2cb566b1e9b70200008b7c240c8b3f89f683ee02710e8d642434b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf3c00c0b08b17ff1289c7578b7c240c89fe83ff077d0abe2cb566b1e9aa0100008b7c24108b7f0889f683ee02710e8d642438b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7c24148b7f108b74241083ee02710e8d64243cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e49867b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706089967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707289967b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706449967b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707689967b183c4088b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706b8b566b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470403000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f01669b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706249568b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707fcef67b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70664c868b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3554|30,0,@11421 58,0,@9455 82,0,@11421 110,0,@9455 151,0,@4670 174,0,@11421 202,0,@9455 243,0,@4670 266,0,@11421 293,0,@9455 334,0,@4602 357,0,@11421 385,0,@9455 426,0,@4670 458,0,@9455 499,0,@4670 538,0,@11424 575,0,@10448 610,0,@13969 645,0,@10448 680,0,@11428 753,0,@10448 788,0,@13971 823,0,@10448 858,0,@11428 931,0,@10448 966,0,@13973 1001,0,@10448 1036,0,@11428 1109,0,@10448 1144,0,@13975 1179,0,@10448 1214,0,@11428 1287,0,@10448 1322,0,@13977 1360,0,@11431 1396,0,0 1403,0,0 1410,0,1 1416,0,0 1436,0,@11421 1464,0,@9455 1505,0,@4602 1531,0,@11421 1560,0,@9455 1584,0,@11421 1612,0,@9455 1653,0,@4670 1676,0,@11421 1704,0,@9455 1745,0,@4670 1768,0,@11421 1795,0,@9455 1836,0,@4602 1859,0,@11421 1887,0,@9455 1928,0,@4670 1960,0,@9455 2001,0,@4670 2040,0,@11424 2077,0,@10448 2112,0,@13969 2147,0,@10448 2182,0,@11428 2255,0,@10448 2290,0,@13971 2325,0,@10448 2360,0,@11428 2433,0,@10448 2468,0,@13973 2503,0,@10448 2538,0,@11428 2611,0,@10448 2646,0,@13975 2681,0,@10448 2716,0,@11428 2789,0,@10448 2824,0,@13977 2862,0,@11431 2898,0,0 2905,0,0 2912,0,1 2918,0,0 2948,0,@9455 2972,0,@10443 2999,0,@9455 3065,0,@10443 3093,0,@9455 3134,0,@4672 3167,0,@9455 3191,0,@11421 3219,0,@9455 3260,0,@4670 3283,0,@11421 3311,0,@9455 3352,0,@4670 3375,0,@11421 3402,0,@9455 3443,0,@4602 3466,0,@11421 3494,0,@9455 3535,0,@4670 3567,0,@9455 3608,0,@4670 3647,0,@11424 3684,0,@10448 3719,0,@13969 3754,0,@10448 3789,0,@11428 3862,0,@10448 3897,0,@13971 3932,0,@10448 3967,0,@11428 4040,0,@10448 4075,0,@13973 4110,0,@10448 4145,0,@11428 4218,0,@10448 4253,0,@13975 4288,0,@10448 4323,0,@11428 4396,0,@10448 4431,0,@13977 4469,0,@11431 4505,0,0 4512,0,0 4519,0,1 4525,0,0 4558,0,@11375 4595,0,@10448 4630,0,@11428 4703,0,@10448 4738,0,@11428 4814,0,@11377 4850,0,0 4857,0,0 4864,0,1 4870,0,0 4903,0,@11424 4940,0,@10448 4975,0,@18270 5010,0,@10448 5045,0,@11428 5118,0,@10448 5153,0,@16797 5188,0,@10448 5223,0,@11428 5296,0,@10448 5331,0,@14926 5366,0,@10448 5401,0,@11428 5474,0,@10448 5509,0,@17556 5547,0,@11431 5583,0,0 5590,0,0 5597,0,1 5603,0,0 8368:D3,116|3b650c7305ff552ccd0589d650bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c707f43e44b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c258ff22f400|@10454,1,@3557|14,0,@4674 54,0,@8369 87,0,2 94,0,2 103,0,0 8369:D3,428|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e92501000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3556|30,0,@10443 57,0,@9455 98,0,@4670 133,0,@9455 215,0,@11375 252,0,@10448 287,0,@11428 363,0,@11377 399,0,0 406,0,0 413,0,1 419,0,0 8370:D3,32|3b650c7305ff552ccd0150bf7c02c0b08b17b8101869b1ff1289c258ff22f400|@10454,1,@3559|12,0,@4674 19,0,@18288 8371:D3,564|3b650c7305ff552ccd01508b34248b7e0489fa83ff017d0e8d642404be2cb566b1e9af01000089f68b3e8b3f89d683ee02710e8d642404b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bfbc05c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707041069b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706201069b183c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@9816,1,@3558|29,0,@11421 56,0,@9455 97,0,@4778 132,0,@9455 173,0,@4778 212,0,@11424 249,0,@10448 284,0,@18159 319,0,@10448 354,0,@11428 427,0,@10448 462,0,@18161 500,0,@11431 536,0,0 543,0,0 550,0,1 556,0,0 8372:D3,20|3b650c7305ff552ccd058b7a048b17ff22f40000|@18088,1,@3560| 8373:D3,116|3b650c7305ff552ccd0589d650bf7c02c0b08b178b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b7604897704c707e04344b18b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c05000000c7400805000000897804c70001000000ff1289c258ff22f400|@10454,1,@3562|14,0,@4674 54,0,@8374 87,0,2 94,0,2 103,0,0 8374:D3,428|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e92501000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3561|30,0,@10443 57,0,@9455 98,0,@4670 133,0,@9455 215,0,@11375 252,0,@10448 287,0,@11428 363,0,@11377 399,0,0 406,0,0 413,0,1 419,0,0 8375:D3,32|3b650c7305ff552ccd0150bf4c00c0b08b17b82c1a69b1ff1289c258ff22f400|@10629,1,@3564|12,0,@4604 19,0,@18322 8376:D3,20|3b650c7305ff552ccd01bf4405c0b08b17ff22f4|@17238,1,@3563|11,0,@4763 8377:D3,2616|3b650c7305ff552ccd058b780489f983ff037d06b8b4ab66b1c38b3889fe8b3f83ff010f853503000089f78b7704ff770883e90251710e8d642408b8f80466b18b5d04ff238b3c2489f983ff017d0e8d642408be2cb566b1e90402000089c983e902710e8d642408b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f04893757bf7c02c0b08b3f8b75008d76f43b75087305ff5528cd84897500c746fc020000008b5204895604c706485044b18b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c05000000c7400805000000897004c7000100000089faff1289c28b0424ff1289c7578b7c240883ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf4405c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707ec1a69b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706141b69b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707381b69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389cf83f9037d06b8b4ab66b1c389f18b3683fe030f85d20200008b7104ff710883ef0257710e8d642408b8f80466b18b5d04ff238b142489d783fa017d0e8d642408be2cb566b1e9a301000089ff83ef02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf6c02c0b08b17ff1289c7578b7c240483ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf5c02c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470450b566b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b01b69b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d01b69b183c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f01b69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8b4ab66b1c38b7904ff7108ff710c83ee0256710e8d64240cb8f80466b18b5d04ff238b0c2489ce83f9017d0e8d64240cbe2cb566b1e9ac02000089f683ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc4894500c740fc0200000089700489388b7a088b17ff1289c7578b74240489f783fe037d0abf2cb566b1e9a401000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24088938bf2405c0b08b17ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf1c05c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460450b566b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706641c69b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707841c69b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706a81c69b183c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b566b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c81c69b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f40000|@18368,1,@3567|21,0,@11331 60,0,@9455 84,0,@11421 105,0,@9455 147,0,@4674 187,0,@8378 220,0,2 227,0,2 236,0,0 268,0,@9455 313,0,@4763 352,0,@11424 389,0,@10448 424,0,@18333 459,0,@10448 494,0,@11428 567,0,@10448 602,0,@18335 640,0,@11431 676,0,0 683,0,0 690,0,1 696,0,0 729,0,0 766,0,@10448 801,0,@18337 837,0,0 844,0,0 851,0,1 857,0,0 870,0,@11331 905,0,@9455 929,0,@11421 950,0,@9455 991,0,@4672 1016,0,@9455 1061,0,@4670 1100,0,@11424 1137,0,@10448 1172,0,@18344 1207,0,@10448 1242,0,@11428 1315,0,@10448 1350,0,@18346 1388,0,@11431 1424,0,0 1431,0,0 1438,0,1 1444,0,0 1477,0,0 1514,0,@10448 1549,0,@18348 1585,0,0 1592,0,0 1599,0,1 1605,0,0 1618,0,@11331 1643,0,@9455 1667,0,@11421 1688,0,@9455 1750,0,@11421 1771,0,@9455 1816,0,@4759 1841,0,@9455 1886,0,@4758 1925,0,@11424 1962,0,@10448 1997,0,@18355 2032,0,@10448 2067,0,@11428 2140,0,@10448 2175,0,@18357 2210,0,@10448 2245,0,@11428 2318,0,@10448 2353,0,@18359 2391,0,@11431 2427,0,0 2434,0,0 2441,0,1 2447,0,0 2480,0,0 2517,0,@10448 2552,0,@18361 2588,0,0 2595,0,0 2602,0,1 2608,0,0 8378:D3,428|3b650c7305ff552ccd0552508b34248b7e0489fa83ff017d0e8d642408be185566b1e92501000089f68b3e8b3f89d683ee02710e8d642408b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf5c02c0b08b17ff1289c7578b7424048b3e8b7f0489f68b760483ee02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b7c24088b7f048b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f4000000|@9816,1,@3566|30,0,@10443 57,0,@9455 98,0,@4670 133,0,@9455 215,0,@11375 252,0,@10448 287,0,@11428 363,0,@11377 399,0,0 406,0,0 413,0,1 419,0,0 8379:D3,64|3b650c7305ff552ccd0589c76a016a018b52048b078b5f0454ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18369,1,@3568| 8380:D3,592|3b650c7305ff552ccd0d5250538b75008d76f43b75087303ff5528897500c746fc020000008b3c24897e04c706c05444b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70713000000578b7c24088b0789ff8b5f0489ff8b7f0857e8f137faff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b55008d52ec3b55087303ff5528895500c742fc040000008b7c240489f9897a0c8b7c240889f8897a088b7c240c89fe897a04c702ec5444b189c98b1989df83fb030f859d00000089c98b590489c98b410889c9ff710c8b7d008d7ff83b7d087305ff5528cd4d897d00c747fc01000000891789fa8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489f68b760489375783fb017502eb05e8aa0100008b1c24e86e5afaff8d6424048b74240489f783fe01750489c7eb0989fbe8ec01000089c78b7424188b142489168d642404897e04b80100000083c410c2040089c983ff0175288d64240489c98b59048d642404ba200468b189c08d6424048b7424088974240883c404e94017faff89c989cfff710489ff8b47088b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089f68b7608897704c707085644b18b75008d76f83b75087305ff5528cd85897500c746fc0100000089168b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893be89459faff8b74240489f783fe01750489c7eb0989fbe8220a000089c78b7424188b142489168d642404897e04b80100000083c410c20400f4|@18379,1,@3583|45,0,@8381 80,0,9 103,1,@7636 201,0,@8382 310,1,@8383 318,1,@7670 344,1,@8384 367,0,0 398,0,@15129 420,1,@7635 472,0,@8385 536,1,@7670 558,1,@8394 581,0,0 8381:D3,24|3b650c7305ff552ccd0589c38b4204e9c08df6fff4000000|@18370,1,@3569|16,1,@7220 8382:D3,64|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c54ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18371,1,@3570| 8383:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3571| 8384:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3572| 8385:D3,68|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a045457e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@18378,1,@3581|27,1,@8386 8386:D3,1000|3b650c7305ff552ccd09508b7b0cff37ff33ff73048b7b088b7310ff73146a016a0183fe03755c8b3783fe0575558b57048b3a8b72048b4a088b420c8b55008d52f03b55087305ff5528cdcb895500c742fc03000000894208894a0489328b75008d76f83b75087305ff5528cd8c897500c746fc010000008916893424897c2404eb0bc7042401000000897c2404ff3424ff7424088b7424288b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710895f0c8b742420897708c74704f01d69b1c7075c5a44b157f64424200175138b7c24208b3f8b770cbf01000000e938020000bf01000000578b7d008d7fe03b7d087303ff5528897d00c747fc07000040578b3c24c74718010000008b3c24c74714010000008b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b7d008d7fdc3b7d087303ff5528897d00c747fc08000040578b3c24c7471c010000008b3c24c74718010000008b3c24c74714010000008b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b7d008d7fe83b7d087303ff5528897d00c747fc05000040578b3c24c74710010000008b3c24c7470c010000008b3c24c74708010000008b3c24c74704010000008b3c24c707010000008b74243c8b7c24088b5424188957188b5424048957148b14248957108b54241089570c8b542414895708897704c707b45a44b18b7c24088067ffbf8b7c24048b74241889771c8b34248977188b7424088977148b7424108977108b74240c89770c8b7424248977088b742428897704c707785b44b18b7c24048067ffbf8b3c248b7424088977108b74241889770c8b7424108977088b742404897704c707cc5d44b15f8067ffbf8b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8d642414897704c70709000000578b7c241c8b078b7c241c8b5f048b7c241c8b7f0857e87231faff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b7424248b5424108916897e04b80100000083c41cc20800f7c6010000000f85b60000008b0e8b56048b0189c383f80575478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703070000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb4e83fb0175478b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703050000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc020000008979048919eb0289f989cf89d63b650c7305ff552ccdc0e93effffffe906fdfffff4|@18377,1,@3580|134,0,0 195,0,@18372 201,0,@8387 223,0,0 233,0,0 269,0,0 279,0,0 289,0,0 299,0,0 309,0,0 319,0,0 328,0,0 363,0,0 373,0,0 383,0,0 393,0,0 403,0,0 413,0,0 423,0,0 432,0,0 467,0,0 477,0,0 487,0,0 497,0,0 506,0,0 557,0,@8388 623,0,@8389 668,0,@8393 711,0,4 738,1,@7636 790,0,0 860,0,3 936,0,2 8387:D3,68|3b650c7305ff552ccd0589d76a016a018b57048b47088b5f0c8b7f105457ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@18373,1,@3573| 8388:D3,176|3b650c7305ff552ccd0589d78b7718f7c60100000075058b4f10eb038b4f148b75008d76f83b75087305ff5528cd82897500c746fc010000008b570c89168b55008d52f83b55087305ff5528cdc2895500c742fc01000000890a8b45008d40f03b45087305ff5528cdc4894500c740fc03000000895008897004c700010000006a016a018b57048b5f0854ff125f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18374,1,@3574|124,0,0 8389:D3,304|3b650c7305ff552ccd05528b3c248b771c83fe01750789ff8b7f14eb0589ff8b7f188b5d008d5bf83b5d087305ff5528cd80895d00c743fc010000008b34248b761089338b45008d40f83b45087305ff5528cd88894500c740fc0100000089386a01e8d92efaff8b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b34248b7604897704c707bc5c44b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706130000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893783ff01750489c3eb0989fbe8a600000089c383fb0175088b3c248b7f0ceb0d8b3c248b470ce8f000000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c248b7f088d6424048938c3f4000000|@18375,1,@3578|99,1,@7636 140,0,@8390 175,0,9 208,0,0 226,1,@8391 252,1,@8392 8390:D3,52|3b650c7305ff552ccd058b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70007000000c3f40000|@16738,1,@3575|44,0,3 8391:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3576| 8392:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3577| 8393:D3,208|3b650c7305ff552ccd0589d18b7d008d7ff83b7d087305ff5528cd02897d00c747fc010000008b711089378b510c89d683fa01750ab8b07766b18b5d04ff238b368b1e8b75008d76f83b75087305ff5528cd8a897500c746fc010000008b510889168b55008d52f83b55087305ff5528cdca895500c742fc010000008b4904890a8b45008d40f03b45087305ff5528cdcc894500c740fc0300000089500889700489386a016a0154e817aafeff5f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18376,1,@3579|54,0,@10986 169,1,@8266 8394:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3582| 8395:D3,580|3b650c7305ff552ccd0953ff30ff3424f604240175338b34248b3e89f6ff76048b1789d683fa037505e9d801000083fe0175098b7f0457e9db0100008b4704e814020000e9bd0100008d642404be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707948b44b16a016a0154ff74241457b8382469b18b5c2418e83d2c0000ff3424ff7424106a01f64424040175388b7c24048b0789ffff7704e811be03008b7c240489fb83ff01750489c2eb07e8ddc1030089c25e891424897424043b650c7303ff552cebc15ebf0100000083c404f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc48b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8c8e5e3ff89c6eb008b142489d783fa0175088d64240c89f2eb2f8b55008d52f03b55087305ff5528cdc0895500c742fc0300000089720889ff897a048d642404c7021f00000083c4088b0c248b3989fe89c989c989318d6424048b74240c8916897e04b80100000083c408c204005e8934243b650c7303ff552ce9f9fdfffff604240175208b34248b3e89f6ff76048b4704e8692900005e8934243b650c7303ff552cebda8d642404ebc3f4|@19405,1,@4286|64,1,@8396 78,0,0 143,0,@8438 158,0,@18411 167,1,@8440 199,1,@9092 219,1,@9097 245,0,0 341,0,0 350,0,20 389,0,0 396,0,1 408,1,@4980 474,0,15 508,0,0 555,1,@8435 8396:D3,104|3b650c7305ff552ccd018b3089f783fe0375138b7804ff700889f8e85c00000058e99200000083ff0175088b4004e9c10000008b780857f604240175208b34248b3e89f6ff76048b4708e8f12800005e8934243b650c7303ff552cebda8d642404b801000000c3f4|@18409,1,@3625|28,1,@8397 34,1,@8398 47,1,@8399 75,1,@8435 98,0,0 8397:D3,40|3b650c7305ff552ccd01a8017512ff308b4004e8e8ffffffba941f69b158ff22b801000000c3f400|@11273,1,@3584|25,0,@18380 33,0,0 8398:D3,40|3b650c7305ff552ccd01a8017512ff308b4004e8e8ffffffba941f69b158ff22b801000000c3f400|@11273,1,@3585|25,0,@18380 33,0,0 8399:D3,1540|3b650c7305ff552ccd018b38be606244b181c61d0000008d74befcffe6e9f3000000909090e9f5000000909090e900010000909090e90b010000909090e918010000909090e932010000909090e932010000909090e92a010000909090e922010000909090e91a010000909090e918010000909090e919010000909090e91a010000909090e927010000909090e9f2000000909090e92c010000909090e9e2000000909090e925010000909090e9d2000000909090e91e010000909090e9c2000000909090e91c010000909090e927010000909090e9aa000000909090e9a2000000909090e917010000909090e992000000909090e98a000000909090e908010000909090e90a010000909090e9720000009090908b78048b07e9f90400008b7804ff700889f8e8d4feffff58e9cefeffff8b78048b07ff7704e8c1feffff58e9bbfeffff8b78048b07ff7704e8aefeffffff3424e9780400008b78048b07ff7704ff7708e896feffff8b0424e88efeffff8d64240458e984feffff8b4008e97cfeffffb801000000c38b780457e9100400008b780857e9d8030000ff70048b0424e8b504000089c7576a01e99d0200008b7804ff700889f8e842feffffff3424e9590200008b780c57e9200200008b780857e9ea0100008b70048b3eff760457e9ad0100008b7804ff700889f8e80dfeffff58e907feffff8b4004e9fffdffff8b780457e95c010000ff7004ff34246a01eb11ff70048b4008e8e1fdffff58e9dbfdfffff64424040175388b7424048b3e89f6ff76048b7f0c8b078b7c240489fb83ff01750489c2eb07e87004000089c25e891424897424043b650c7303ff552cebc15f576a01f64424040175288b7c24048b0789ffff77048b5c2404e8a104000089c25e891424897424043b650c7303ff552cebd15f57f60424010f858c0000008b3c248b3789ffff77048b3e8b76048b068b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d0000005768042169b1e8be2400008b1424e8120a000089c38d642404ba0c6368b18b0424e8cfc6f8ff89c78d64240483ff01740e8d642414b8f02269b18b5d04ff235e8934243b650c7303ff552ce96affffff8d64240cff3424f604240175208b34248b3e89f6ff76048b4704e8b2fcffff5e8934243b650c7303ff552cebda8d642408b801000000c3f6042401751d8b3c248b0789ffff7704e885fcffff5e8934243b650c7303ff552cebdd8d642404b801000000c3f6042401751f8b34248b3e89f6ff76048b07e856fcffff5e8934243b650c7303ff552cebdb8d64240458e946240000f6042401751d8b3c248b0789ffff7704e829fcffff5e8934243b650c7303ff552cebdd8d642404b801000000c3f604240175208b34248b3e89f6ff76048b470ce8f9fbffff5e8934243b650c7303ff552cebda8d642404b801000000c3f6042401751f8b34248b3e89f6ff76048b07e8cafbffff5e8934243b650c7303ff552cebdb8d642408b801000000c3f64424040175288b7c24048b0789ffff77048b5c2404e8bb02000089c25e891424897424043b650c7303ff552cebd15f57f60424010f858c0000008b3c248b3789ffff77048b3e8b76048b068b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d0000005768042169b1e8d82200008b1424e82c08000089c38d642404ba0c6368b18b0424e8e9c4f8ff89c78d64240483ff01740e8d642410b8f02269b18b5d04ff235e8934243b650c7303ff552ce96affffff8d642408ff3424f604240175108b34248b3e89f6ff76048b7f0457eb0a8d642408b801000000c3f604240175208b34248b3e89f6ff76048b4704e8acfaffff5e8934243b650c7303ff552cebda8d6424045e8934243b650c7303ff552ceba8f6042401751f8b34248b3e89f6ff76048b07e875faffff5e8934243b650c7303ff552cebdb8d642404b801000000c3f6042401751f8b34248b3e89f6ff76048b07e846faffff5e8934243b650c7303ff552cebdb8d642404b801000000c3f6042401751f8b34248b3e89f6ff76048b07e817faffff5e8934243b650c7303ff552cebdb8d642408b801000000c3f40000|@18407,1,@3621|13,0,@8399 283,1,@8400 389,0,0 419,1,@8401 588,1,@8402 639,1,@8403 731,0,6 737,0,@18388 742,1,@8433 750,1,@8415 761,0,@16477 769,1,@7452 789,0,@18404 865,0,0 910,0,0 958,1,@8434 1002,0,0 1050,0,0 1097,0,0 1125,1,@8403 1217,0,6 1223,0,@18388 1228,1,@8433 1236,1,@8415 1247,0,@16477 1255,1,@7452 1275,0,@18404 1335,0,0 1438,0,0 1485,0,0 1532,0,0 8400:D3,48|3b650c7305ff552ccd01a801751aff308b4004e8e8ffffff8b3c248b078d642404ba9c1f69b1ff22b801000000c3f400|@11273,1,@3586|34,0,@18381 41,0,0 8401:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f08ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3587|71,0,0 8402:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3588| 8403:D3,132|3b650c7305ff552ccd0953ff700c8b781883ff01750e8d642408b8b07766b18b5d04ff238b3f8b078b1c24e868000000e88b01000089c7576a016a01548b442410bb242069b1e8e94af2ff8d64240458e8ff020000ff7424088b5c2404e8520300008d6424088b342489f783fe0175058d642404c389fb8d642404e9fc040000f4000000|@18387,1,@3600|27,0,@10986 44,1,@8404 49,1,@8407 66,0,@18385 71,1,@6630 81,1,@8411 94,1,@8412 124,1,@8414 8404:D3,196|3b650c7305ff552ccd0953a8010f85a3000000ff30ff70046a016a01548b442414bba41f69b1e8714af2ffff34248b442408e87167f9ff89c757ba0c6368b18b4424048b5c2414e8ccc1f8ff89c783ff0174258d6424106a016a01548b442414bbac1f69b1e8324af2ff8d64240458e83467f9ff89c7eb045f83c40c578b4424048b5c240ce876ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c38d642404b801000000c3f4000000|@10030,1,@3591|34,0,@18382 39,1,@6630 51,1,@7517 59,0,@16477 72,1,@7452 97,0,@18383 102,1,@6630 112,1,@7517 187,0,0 8405:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3589|11,0,0 8406:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3590|11,0,0 8407:D3,116|3b650c7305ff552ccd01508b3c2489f883ff01750a8d642404b801000000c389c08b3883ff01750a8d642404b801000000c3e85100000089c7578b442404e8b5000000e8b8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3f40000|@18384,1,@3594|26,0,0 45,0,0 51,1,@8408 63,1,@8409 8408:D3,92|3b650c7305ff552ccd01a80175478b388b4004f7c7010000007530ff37e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8648e66b18b5d04ff23b801000000c3f4|@10030,1,@3592|76,0,@11149 86,0,0 8409:D3,96|3b650c7305ff552ccd01a80175488b388b4004f7c7010000007531ff7704e8ddffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e09966b18b5d04ff23b801000000c3f4000000|@10030,1,@3593|77,0,@11229 87,0,0 8410:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@18386,1,@3595|11,0,0 8411:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3596|69,0,0 8412:D3,336|3b650c7305ff552ccd09a8017515f6c3017510ff30ff70048b33ff73048b7c2410eb08b801000000c20400f7c701000000753f8b0f8b57048b198b1b8b4424088b003bd8751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0ebb9bf010000006a016a01f7c7010000007540ff378b3c24ff77048b3c248b1f83fb01750489f7eb0989f0e8c400000089c78b3424893e8d6424048b3c248b378974240489ff8b7f048d642404897c2404eb278b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b742410893424897c24045e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c2414578b44240c8b5c2408e8e2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240c83c404c20400f4000000|@11120,1,@3598|36,0,0 115,0,0 156,1,@8413 8413:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3597| 8414:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3599| 8415:D3,1956|3b650c7305ff552ccd0552a80175088b38ff700457eb0a8d642404b8cc5366b1c38b3c248b1789d683fa0b0f859100000089ff8b5f0489ff8b770c8b4e0c89ca8b49048b0983f905756d89d78b7f048b3783fe0575538b4704ff7708e89f42e5ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7031c7744b16a016a01548b44240ce8c044f2ff5e8d6424088934243b650c7303ff552ce978ffffff8d64240cb8a48b67b18b5d04ff2389ff8d642404e98800000089ff83fe0d757b89ff8b77048b368b0e89ca83f909754e8b7424088b560489f8bb01000000ff1289c28d6424048b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b000000eb0b83fa03750889ff8d642404eb168934243b650c7303ff552ce9ddfeffff89ff8d6424048b1789d683fa077513ff7704ff77086a016a018b7c2408e95004000089f283fe057522ff7704ff77088b7c240c8b5f048b442408e8cd060000bf0100000089c6e9bd02000089d683fa0b0f8582000000ff7704ff7708ff770cff77108b7c24048b5f0c8b3b8b3f83ff03750ebf010000008b74240ce90b0100008d642418becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c38d64240889f783ff0d7554becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c3becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c3f7c60100000075288b4e0489fa83c202710e8d642418b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc8ebd08b7424148b760457568b442418e8c707000089c7be0100000089faf6c20175288b5a0489f183c102710e8d642418b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd3ba010000008b4c2410f6c10175288b410489d383c302710e8d642418b8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6ebd33bf275738b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c89388b5c2414e8d30a000089c78b45008d40e83b45087305ff5528cd80894500c740fc050000008b34248970108d6424048b342489700c8d6424048b34248970088d642408897804c7000b00000083c408c38d642418becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c3f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd0be010000008b542408f6c20175288b5a0489f183c102710e8d642410b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc5ebd33bfe0f85a40000006a016a0189e3e8370b00008b3c24ff7424048b5424188b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24108938e808fbffff89c7578b54241c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c24048978048b7c24108938e8d5faffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642418c7000500000083c408c38d642410becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c38b3783fe010f85900000008b77048b7f08893424897c24048d6424045f83ff0375218b7c240c8b5f04ff7424048b44240ce8b80a000089c757bf010000008b3424eb6e8d642410becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c38b77048b3689f73b650c7305ff552ccd80e94ffffffff7c60100000075288b4e0489fa83c202710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0be010000008b54240cf6c20175288b5a0489f183c102710e8d642414b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd33bfe75788b442408e85a0d000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d64240489388b5c240ce87507000089c38b442404e87e0d000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642408897804c7000700000083c408c38d642414becc5366b18b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937be1f4e00008d34f5f9ffffff8b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7000d000000c3f40000|@18395,1,@3616|28,0,@10423 93,1,@5210 130,0,@8416 144,1,@6630 174,0,@13837 227,0,0 270,0,0 283,0,0 289,0,5 383,1,@8417 388,0,0 439,0,0 457,0,@10423 490,0,9999 535,0,6 552,0,@10423 585,0,9999 630,0,6 636,0,@10423 669,0,9999 714,0,6 742,0,@9455 781,1,@8419 788,0,0 814,0,@9455 840,0,0 868,0,@9455 937,1,@8422 1004,0,5 1017,0,@10423 1050,0,9999 1095,0,6 1123,0,@9455 1149,0,0 1177,0,@9455 1217,1,@8425 1366,0,2 1379,0,@10423 1412,0,9999 1457,0,6 1512,1,@8426 1520,0,0 1534,0,@10423 1567,0,9999 1612,0,6 1662,0,@9455 1688,0,0 1716,0,@9455 1750,1,@8429 1799,1,@8422 1810,1,@8430 1857,0,3 1870,0,@10423 1903,0,9999 1948,0,6 8416:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3601|81,0,0 91,0,0 8417:D3,476|3b650c7305ff552ccd0953a80175088b38ff700457eb0a8d642404b801000000c38b34248b1689d783fa0b0f859100000089f68b5e0489f68b7e0c8b4f0c89ca8b49048b0983f905756d89d78b7f048b3783fe0575538b4704ff7708e84f3ae5ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703a47944b16a016a01548b44240ce8703cf2ff5e8d6424088934243b650c7303ff552ce978ffffff8d64240cb8a48b67b18b5d04ff2389f68d642404e98500000089f683ff0d757889f78b77048b368b0e89ca83f909754b8b54240889f8bb01000000ff1289c28d6424048b3a8b75008d76e83b75087305ff5528cd84897500c746fc05000000c746100100000089560c897e08c7460401000000c7060b000000eb0b83fa03750889fe8d642404eb168934243b650c7303ff552ce9e0feffff89f68d6424048b3e83ff0575438b7e048b56088b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff017507585be95efeffffff378b4424048b5c2408e84ffeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc3f400|@11291,1,@3603|28,0,0 93,1,@5210 130,0,@8418 144,1,@6630 174,0,@13837 224,0,0 267,0,0 280,0,0 286,0,5 402,0,0 8418:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3602|81,0,0 91,0,0 8419:D3,440|3b650c7305ff552ccd0953a80175088b38ff700457eb0c8d642404b801000000c208008b04248b3089f783fe0b0f859100000089c08b580489c08b780c8b570c89d68b52048b1283fa05756d89f78b7f048b3783fe0575538b4704ff7708e8c537e5ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703087c44b16a016a01548b44240ce8e639f2ff5e8d6424088934243b650c7303ff552ce978ffffff8d64240cb8a48b67b18b5d04ff2389c08d642404e98300000089c083ff0d757689c08b78048b378b1689d783fa0975498b542410bb01000000ff1289c68d6424048b3e8b45008d40e83b45087305ff5528cdc0894500c740fc05000000c740100100000089700c897808c7400401000000c7000b000000eb0b83ff03750889c08d642404eb168934243b650c7303ff552ce9e2feffff89c08d6424048b7c2410578b5c2408e80f01000089c783ff017517585b8b7424088b5424048954240489742408e98dfeffffff378b7c24148b74241057568b44240c8b5c2410e874feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20800f4|@11291,1,@3606|28,0,0 95,1,@5210 132,0,@8420 146,1,@6630 176,0,@13837 224,0,0 267,0,0 280,0,0 286,0,5 337,1,@8421 8420:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3604|81,0,0 91,0,0 8421:D3,304|3b650c7305ff552ccd098b3883ff0b0f85a60000008b78048b700c8b560c8b730489f18b3683fe03753c8b720489f08b3683fe037507be03000000eb05be0100000083fe03751f8b710489c28b52043bf27507be03000000eb05be0100000083fe03754ceb4c89ce8b0983f90175378b420489c18b0083f8017507b803000000eb05b80100000083f803751a8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe037402eb72be0100000089faeb08b801000000c20400f6c20175248b5a0489f183c102710ab8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd78b5424043bf27507be03000000eb05be0100000083fe03751f8b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20400b801000000c20400f4000000|@18390,1,@3605|55,0,1 62,0,0 84,0,1 91,0,0 124,0,1 131,0,0 153,0,1 160,0,0 167,0,0 179,0,0 188,0,0 211,0,@9455 245,0,1 252,0,0 293,0,0 8422:D3,132|3b650c7305ff552ccd095053f64424040175608b4424048b3883ff01750a8d642408b801000000c3ff3424e8680000008b1424ff1289c7578b44240ce8c70000008b5c2408e8b6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c38d642408b8702169b18b5d04ff23f40000|@18393,1,@3609|35,0,0 44,1,@8423 61,1,@8424 120,0,@18391 8423:D3,92|3b650c7305ff552ccd01a80175478b388b4004f7c7010000007530ff37e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8648e66b18b5d04ff23b801000000c3f4|@10030,1,@3607|76,0,@11149 86,0,0 8424:D3,96|3b650c7305ff552ccd01a80175488b388b4004f7c7010000007531ff7704e8ddffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e09966b18b5d04ff23b801000000c3f4000000|@10030,1,@3608|77,0,@11229 87,0,0 8425:D3,148|3b650c7305ff552ccd095383f80175165ebf388a66b18b1789168b7f04897e04b801000000c38b388b4004ff37ff77046a016a0189e3e8c5ffffff5f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a048b7c2404893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424085e8916897e04b801000000c3f400|@18394,1,@3610|18,0,@11118 33,0,0 141,0,0 8426:D3,644|3b650c7305ff552ccd0953a80175088b38ff700457eb0c8d642404b801000000c204008b3c248b3f83ff0b0f858e0000008b3c248b5f048b3c248b7f0c8b570c89d68b52048b1283fa05756d89f78b7f048b3783fe0575538b4704ff7708e8f931e5ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703a08244b16a016a01548b44240ce81a34f2ff5e8d6424088934243b650c7303ff552ce978ffffff8d64240cb8a48b67b18b5d04ff235fe9800000008b3c248b3f83ff0d75758b3c248b7f048b378b1689d783fa09754c8b5424088b0424bb01000000ff1289c28d6424048b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b000000eb0683ff0375035feb118934243b650c7303ff552ce9e5feffff5f8b3783fe07750dff7704ff7424108b542404eb56bf0100000083ff01750f585b8b74240489742404e994feffffff378b7c2410578b4424088b5c240ce880feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424088938c204008b342489f783fe0175178d64240483fa017507bf03000000eb05bf01000000eb7889ff8b3789ffff7704f6c20175618b3aff72048b368b3f3bf77502eb2a8b0e8d1c4d010000008b0789c18d0445010000003bd8752f8d76048d7f043bc9f3a674068d64240ceb218b742404598d64240489ca8934243b650c7305ff552ccd04e97bffffff8d64240cbf01000000eb098d642408bf0100000083ff03752c8b0424e8e100000089c68d6424048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb098d642404bf01000000e9d7fefffff40000|@11291,1,@3613|28,0,0 95,1,@5210 132,0,@8427 146,1,@6630 176,0,@13837 226,0,0 269,0,0 282,0,0 288,0,5 340,0,0 445,0,1 452,0,0 563,0,0 574,0,0 587,1,@8428 632,0,0 8427:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3611|81,0,0 91,0,0 8428:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3612|69,0,0 8429:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7704e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3614|69,0,0 8430:D3,116|3b650c7305ff552ccd09a801755ff6c301755a8b388b40048b138b5b048b378b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@11120,1,@3615|110,0,0 8431:D3,1244|3b650c7305ff552ccd0d52e8e035f2ff89c78b3783fe0575428b47048b3883ff07752f8b700489f7f7c6010000007407be03000000eb05be0100000083f60283fe03750e8b3f8b4704e8a235f2ff89c7eb07e89935f2ff89c7eb00578b3c248b3f83ff0b0f85a00000008b3c248b5f048b3c248b7f0c8b570c89d68b52048b1283fa057507ba03000000eb05ba0100000083fa0374078d64240889f8c389f78b7f048b3783fe0575538b4704ff7708e8302de5ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703708944b16a016a01548b44240ce8512ff2ff5e8d6424088934243b650c7303ff552ce960ffffff8d642408b8a48b67b18b5d04ff238b3c248b3f83ff0d75305fff77048b3c248b3f8b3783fe097512ff77048b7c24088b7f04ff378b7c2404eb1c8d642408b80c2269b18b5d04ff238d642408b8682269b18b5d04ff2383ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff03752e8d6424048b7c24048b7f048b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e91d0200008b3c2483ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755a89ca8b4a048b5424088b52243bd17507ba03000000eb05ba0100000083fa037539bf0300000083ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76088937e9a50100008b3c24eb1189f73b650c7305ff552ccd80e975ffffff83ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755a89ca8b4a048b5424088b52203bd17507ba03000000eb05ba0100000083fa037539bf0300000083ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b760c8937e91a0100008b3c24eb1189f73b650c7305ff552ccd80e975ffffff83ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755889ca8b4a048b5424088b521c3bd17507ba03000000eb05ba0100000083fa037537bf0300000083ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76108937e98f0000005feb1189f73b650c7305ff552ccd80e977ffffff83ff017507bf01000000eb428b178b77048b520c8b5a0489d98b1b83fb030f85a900000089ca8b4a048b5424048b52183bd17507ba03000000eb05ba0100000083fa030f8584000000bf0300000083ff0375238b7d008d7ff83b7d087303ff5528897d00c747fc010000008b7424048b76148937eb05bf0100000083ff01750e8d642408b8942269b18b5d04ff238b078b308b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000c747100100000089470c897708c7470401000000c7070b0000005e893e83c404c389f73b650c7305ff552ccd80e922fffffff400|@18403,1,@3618|12,1,@6635 49,0,1 56,0,0 74,1,@6635 83,1,@6635 134,0,1 141,0,0 176,1,@5210 213,0,@8432 227,1,@6630 257,0,@13837 315,0,@18396 329,0,@18399 348,0,0 397,0,1 404,0,0 426,0,1 433,0,0 470,0,1 477,0,0 501,0,1 508,0,0 515,0,0 547,0,1 611,0,0 654,0,1 661,0,0 671,0,1 750,0,0 793,0,1 800,0,0 810,0,1 889,0,0 932,0,1 939,0,0 949,0,1 1026,0,0 1073,0,1 1080,0,0 1094,0,1 1139,0,0 1153,0,@18401 1195,0,0 1208,0,0 1214,0,5 8432:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3617|81,0,0 91,0,0 8433:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@3619|68,0,0 8434:D3,48|3b650c7305ff552ccd01a801751aff308b4004e8e8ffffff8b3c248b078d642404ba9c1f69b1ff22b801000000c3f400|@11273,1,@3620|34,0,@18381 41,0,0 8435:D3,92|3b650c7305ff552ccd018b3089f783fe05750a8b78048b07e9e3ffffff89fe83ff0375138b7804ff700889f8e8cfffffff58e93900000089f783fe01750a8b78048b07e9b8ffffff83ff0775088b4004e957000000b801000000c3f4|@18408,1,@3624|51,1,@8436 81,1,@8437 86,0,0 8436:D3,40|3b650c7305ff552ccd01a8017512ff308b4004e8e8ffffffba941f69b158ff22b801000000c3f400|@11273,1,@3622|25,0,@18380 33,0,0 8437:D3,40|3b650c7305ff552ccd01a8017512ff308b4004e8e8ffffffba941f69b158ff22b801000000c3f400|@11273,1,@3623|25,0,@18380 33,0,0 8438:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@18410,1,@3626|31,0,@9455 8439:D3,20|3b650c7305ff552ccd01b8c43966b1c3f4000000|@18413,1,@3627|11,0,@10072 8440:D3,160|3b650c7305ff552ccd09f6c30175788b13ff73046a016a018b7c24108b7424145754830424045689c389d0e884000000ff34248b4424086a016a018b7c24208b74241c5457568b5c2420e8b1ffffff8b1c24ff74240483fb0175068b7c240ceb0b8b44240ce82691030089c78b742428893e8b3c24897e048d642404b80100000083c418c20c008b7c240cc70701000000894704b801000000c20c00f4000000|@19392,1,@4279|44,1,@8441 102,1,@9091 125,0,0 141,0,0 149,0,0 8441:D3,428|3b650c7305ff552ccd098b3089f783fe0375158b7c2408c70701000000895f04b801000000c20c0083ff0175248b780489d889fb8b7424088b5424048b4c240c894c2404895424088974240ce96f0100008b7804ba010000008b75008d76f83b75087305ff5528cd8c897500c746fc010000408916568b7424108b55008d52ec3b55087305ff5528cdc8895500c742fc04000000c7420c943966b1897208c742042c0268b18b342489328b75008d76f43b75087305ff5528cd8c897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc8894500c740fc02000000c740040100000089386a016a01b9245069b18b7c24188b5424105357682c0268b1566a0168389269b154830424185289c389cab8100666b1e8dc540100ff3424ff7424088b7c24108b07e8e246010089c7b801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240489fb83ff01750489c7eb07e8eb8e030089c78b74241c893e8b3c24897e048d642404b80100000083c410c20c00f400|@19403,1,@4277|25,0,0 33,0,0 77,1,@8442 85,0,0 151,0,@10068 161,0,@15112 199,0,0 234,0,0 245,0,@18902 260,0,@15112 268,0,@19401 283,0,@9473 288,1,@8699 306,1,@8677 313,0,0 393,1,@9090 416,0,0 8442:D3,156|3b650c7305ff552ccd09f6c30175748b13ff73046a016a018b7c24148b74241054575689c389d0e884000000ff34248b4424086a016a018b7c24208b74241c5457568b5c2420e8b5ffffff8b1c24ff74240483fb0175068b7c240ceb0b8b44240ce8aa8d030089c78b742428893e8b3c24897e048d642404b80100000083c418c20c008b7c240cc70701000000894704b801000000c20c00f4000000|@19392,1,@4274|40,1,@8443 98,1,@9088 121,0,0 137,0,0 145,0,0 8443:D3,2132|8d7c24803b7d0c7305ff5530cd09538b7810ff378b7824ff378b388b7f04ff7004ff700c8b7014ff7020ff7028ff702c8b3f83ff01750e8d642420b8b07766b18b5d04ff238b3fb9030000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f43b55087305ff5528cdc0895500c742fc020000008b0c24894a04c702889744b152b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b4d008d49f43b4d087305ff5528cdc0894d00c741fc020000008b1424895104c701c89744b18b55008d52f03b55087305ff5528cdc2895500c742fc030000008b1c24895a08894a04c70203000000528b57048b0a83f9050f85060300008b5a048b4a088b54240cff328b5424108b1283c202710e8d642434b8f80466b18b5d04ff238b44241089108b142489138b54240489118b3683fe01750e8d642434b8b07766b18b5d04ff23ff368b7f088b47086a016a018b7c2448ff74241057ff742420548304240c8b5c244ce82a080000ff34248b5c24088b7c24288b076a016a018b7c2454ff74241c57ff74242c548304240ce89a130000ff34248b5c2408bf010000008b75008d76f83b75087305ff5528cd88897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd48897d00c747fc04000000c7470c943966b18b5424288957088b54242089570489378b75008d76f43b75087305ff5528cd88897500c746fc02000000c7460401000000893e8b7c24388b076a016a018b7c2460ff74242857ff742438565483042410e8b8190000ff34248b5c24088b7c243c8b076a016a018b7c246cff74243457ff742444548304240ce82cda00008b1c24ff74240483fb0175068b5c240ceb0b8b44240ce865e2000089c383fb0175068b5c2418eb0b8b442418e8b3e2000089c383fb0175068b7c2424eb0b8b442424e801e3000089c7578b7c24588b3f8d3c7d01000000578b3c2489fe83ff01750e8d642404bb14fd68b1e99b00000089f689f783c60689f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87fc00000089d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c245c8d77048d7b04d1e9f3a489d783c7088d64240489fed1eec604332889fed1eec644330129d1efc6443b022e8063ffbf6a016a01ba185069b18b7c247cff74240cff742450ff74244c548304240c578b442478e879e20000ff34248b4424088b7d008d7fec3b7d087305ff5528cd01897d00c747fc040000008b74247089770c8b7424508977088b742448897704c707bc1448b18bb4248000000057ff742454ff742450568b5c247ce8630c010089c7578bbc24840000008b7f34eb1c8d642470b8780566b18b5d04ff238d642430b86c5369b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ac01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9520300008b3f8b3781feac01c0b0750e8b7f0883ff030f84f3010000eb0e8d64247cb8483366b18b5d04ff238b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c883966b18b742448897708c7470401000000c70703000000578b7c240883ff0175068b7c2414eb0f8b4424148b5c2408e85981030089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e83fe0175065f83c440eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a895708897704c7071f00000083c440578b7c24108b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e87776000089c78b7424188b368b5424188b128b4c241889118b45008d40e83b45087305ff5528cdc0894500c740fc0500000089701089780c8b7c2428897808c74004030000005f8938e8cd80030089c7578b542440b803000000ff1289c78b7424048b76088b1683fa0575778b56048b7608893ac7062c0268b18b75008d76ec3b75087305ff5528cd80897500c746fc040000005a89560c897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b742444893e8b7c2434897e04b80100000083c438c20c008d64243cb86c5369b18b5d04ff238b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c883966b18b742448897708c7470401000000c70703000000578b7c240883ff0175068b7c2414eb0f8b4424148b5c2408e84e81030089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e83fe0175065f83c440eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a895708897704c7071f00000083c440578b7c24108b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e89474000089c78b7424188b368b5424188b128b4c241889118b45008d40e83b45087305ff5528cdc0894500c740fc0500000089701089780c8b7c2428897808c74004030000005f8938e8c280030089c7e918fefffff7c701000000753b8b178b77048b0a81f9ac01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64247cb8489d66b18b5d04ff238b3f8b3781feac01c0b075118b7f0883ff030f8563fcffffe941feffff8d64247cb8483366b18b5d04ff23f4|@19400,1,@4272|60,0,@10986 72,0,1 139,0,@8444 145,0,0 212,0,@8445 253,0,1 300,0,@9455 338,0,@10986 382,1,@8446 422,1,@8455 434,0,0 495,0,@10068 544,0,0 580,1,@8461 620,1,@8597 647,1,@8603 669,1,@8604 691,1,@8605 727,0,@17977 749,0,4 770,0,16777215 828,0,0 896,0,@18901 927,1,@8606 987,0,@9076 1013,1,@8644 1037,0,@9465 1051,0,@18928 1077,0,@4648 1128,0,0 1138,0,@10769 1153,0,@4648 1178,0,@9999 1214,0,@10067 1228,0,0 1234,0,1 1263,1,@9077 1347,0,15 1362,0,0 1429,1,@8500 1495,0,1 1503,1,@9078 1515,0,1 1547,0,@15112 1587,0,0 1593,0,1 1626,0,0 1646,0,0 1661,0,@18928 1697,0,@10067 1711,0,0 1717,0,1 1746,1,@9080 1830,0,15 1845,0,0 1912,1,@8500 1978,0,1 1986,1,@9081 2014,0,@4648 2065,0,0 2079,0,@11247 2094,0,@4648 2122,0,@9999 8444:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@18414,1,@3628|31,0,@9455 8445:D3,240|3b650c7305ff552ccd058b388b48048b700883f9017d0ab8d02469b18b5d04ff2383f9017e5d83e902710ab8f80466b18b5d04ff2383f901753f83fe01753a83ff017d0ab8440268b18b5d04ff238b45008d40f43b45087305ff5528cd84894500c740fc02000000897804c700050000008b5a04e90bfae4ffb8880268b18b5d04ff2383fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3629|24,0,@18415 44,0,@9455 69,0,@15114 109,0,2 117,1,@5181 122,0,@15117 142,0,@18418 182,0,0 193,0,@18418 233,0,2 8446:D3,336|3b650c7305ff552ccd098b7c240c8b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff017507bfe46966b1eb728b3f8b3781fe0402c0b075058b7f08eb0ab8483366b18b5d04ff2383ff0374158b7c2404c70701000000895f04b801000000c210006a016a018b7c24188b742410545756e8b6000000585b8b7424108b5424088b4c2404894c24088954240c897424108b3c24897c240483c404e9a1060000f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e93effffffb8483366b18b5d04ff23f4000000|@18434,1,@3638|34,0,@4659 85,0,0 95,0,@10769 107,0,@4659 119,0,@9999 139,0,0 147,0,0 170,1,@8447 211,1,@8452 232,0,@4659 283,0,0 293,0,@11247 308,0,@4659 323,0,@9999 8447:D3,984|3b650c7305ff552ccd0983f80175158b7c240cc70701000000895f04b801000000c20c00ff30ff7004ff33ff7304ff73088b7c24108b3f8b3783fe0175368b77048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704883966b1c70717000000eb118b7c24108b078b5c241ce86903000089c7578b54240c8b442420ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e80fabe3ff89c7eb00576a016a018b7c24088b3f83ff0d75358b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c7072c9f44b1c7042401000000897c2404e9920000008b542424b803000000ff1289c68b5424288b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707509f44b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b7c24248b7f048b3783fe010f85e30000008b4f048b7c24248b57088b7c24248b7f048b1f89de83fb05750e8d642428b8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b37eb038b7704eb058b7f048b378b7d008d7ff83b7d087305ff5528cd46897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd86897500c746fc04000000c7460c01000000894e08897e04c706030000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707d04166b18b75008d76f03b75087305ff5528cd80897500c746fc030000008b542424895608897e04c7060b000000eb2c8b75008d76f03b75087303ff5528897500c746fc030000008b7c2424897e088b7c2424897e04c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54241489570489378b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2418897b048b3c24893b8d6424046a016a018b7c24348b7424305457568b442430e85cfcffff8b1c24ff74240483fb0175068b7c240ceb0b8b44240ce8f101000089c78b74243c893e5f897e04b80100000083c42cc20c00f400|@18428,1,@3634|21,0,0 29,0,0 94,0,0 104,0,@10067 110,0,11 127,1,@8448 175,0,0 242,0,1 251,0,20 290,0,0 297,0,1 309,1,@4980 366,0,@8449 373,0,0 391,0,1 437,0,@8450 480,0,0 486,0,1 519,0,0 588,0,@13866 686,0,0 698,0,1 736,0,@10184 778,0,5 824,0,5 955,1,@8451 972,0,0 8448:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9869be3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3630|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8449:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3631| 8450:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3632|27,0,@9455 68,0,0 115,0,8 8451:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3633| 8452:D3,836|3b650c7305ff552ccd0950538b342489f7ff3689ffff77088b542418b803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc04000000c7420c487966b18b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b542408895604c7060d000000568b7424288b368b5424288b52048b4c24288b092bf1710e8d64241cb8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c747049c2669b189378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d642404c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578b5424108b442428ff1289c7578b7c242c8b3f8b74242c8b56048b74242c8b362bfe710e8d642420b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c240c8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604b42669b1893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c74704d46866b1c707250000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175065b83c40ceb0e8b0424e84f00000089c38d64241083fb0175068b7c2404eb0b8b442404e89900000089c78b74240c893e8b3c24897e048d642404b80100000083c404c20c00f4000000|@18433,1,@3637|29,0,1 65,0,@10997 80,0,0 86,0,1 119,0,0 155,0,0 168,0,6 201,0,@9455 242,0,0 288,0,8 321,0,0 328,0,@18429 376,0,@10757 382,0,18 417,0,2 463,0,@9455 504,0,0 552,0,8 585,0,0 592,0,@18431 640,0,@10757 646,0,18 681,0,2 714,0,0 773,1,@8453 799,1,@8454 822,0,0 8453:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3635| 8454:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3636| 8455:D3,488|3b650c7305ff552ccd098b7c240c8b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750abfe46966b1e9010100008b3f8b3781fe0402c0b0750a8b7f0883ff037421eb0ab8483366b18b5d04ff238b7c2404c70701000000895f04b801000000c210008b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000895f04c707010000006a016a015057f64424040175568b7c24048b0789ffff77046a016a018b7c242c8b7424245457568b5c2418e80c0100005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceba38b3c248b378974240889ff8b7f048d642404897c24088b4424048b5c24088b74241c8b5424148b4c2410894c2414895424188974241c8b7c240c897c241083c410e977fafffff7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fe0402c0b075118b7f0883ff030f85b0feffffe9c0feffffb8483366b18b5d04ff23f4|@18440,1,@3644|34,0,@4659 85,0,0 95,0,@10769 110,0,@4659 127,0,@9999 142,0,0 150,0,0 188,0,0 236,1,@8456 357,1,@8452 378,0,@4659 429,0,0 439,0,@11247 454,0,@4659 478,0,@9999 8456:D3,644|3b650c7305ff552ccd09ff30ff7008ff700cff338b7b04ff37ff7704ff77088b40048b5c2424e86d02000089c7578b54240c8b442428ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8319fe3ff89c7eb00576a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c70708aa44b1c7042401000000897c2404e9920000008b54242cb803000000ff1289c68b5424308b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7072caa44b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c24048b1c24ff7424048b7d008d7fec3b7d087305ff5528cd08897d00c747fc040000008b74242089770c8b7424248977088b742428897704c707070000005783fb0175068b542420eb0b8b442420e84902000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2414897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008977088b7424148977048b342489378d6424048b7424348916897e04b80100000083c428c20c00f4000000|@18439,1,@3643|39,1,@8457 87,0,0 160,0,1 169,0,20 208,0,0 215,0,1 227,1,@4980 284,0,@8458 291,0,0 309,0,1 355,0,@8459 398,0,0 404,0,1 437,0,0 506,0,3 527,1,@8460 630,0,0 8457:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9aa90e3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3639|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8458:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3640| 8459:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3641|27,0,@9455 68,0,0 115,0,8 8460:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3642| 8461:D3,500|3b650c7305ff552ccd098b7c24108b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750abfe46966b1e90b0100008b3f8b3781fe0402c0b0750a8b7f0883ff037421eb0ab8483366b18b5d04ff238b7c2404c70701000000895f04b801000000c214008b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000895f04c707010000006a016a015057f64424040175608b7c24048b0789ffff77046a016a018b7c24308b7424248b54242c8b4c242854575652518b5c2420e80e0100005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceb998b3c248b378974240889ff8b7f048d642404897c24088b4424048b5c24088b7424208b5424188b4c2410894c24188954241c897424208b7c240c897c241483c414e9b1f3fffff7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fe0402c0b075118b7f0883ff030f85a6feffffe9b6feffffb8483366b18b5d04ff23f40000|@18898,1,@3780|34,0,@4659 85,0,0 95,0,@10769 110,0,@4659 127,0,@9999 142,0,0 150,0,0 188,0,0 246,1,@8462 367,1,@8452 388,0,@4659 439,0,0 449,0,@11247 464,0,@4659 488,0,@9999 8462:D3,836|3b650c7305ff552ccd0950ff338b7b04ff37ff7704ff77088b5c24248b7c24208b74241c576a0156680cd067b18b442420e82203000089c7578b54240c8b442428ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e85e98e3ff89c7eb00576a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c707a46a45b1c7042401000000897c2404e9920000008b542424b803000000ff1289c68b5424308b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707c86a45b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b7c24248b7704f7c60100000075608b0e8b5e0489fe8b3e89f68b560c89f68b46108b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070d000000eb7583fe01753989ff8b3789ff8b570c89ff8b4f108b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c70703000000eb3789ff8b3789ff8b570c89ff8b4f108b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c895708897704c7070f000000578b7c240889fb83ff0175068b542424eb0b8b442424e85dbb000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2418897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008977088b7424188977048b342489378d6424048b7424388916897e04b80100000083c424c21400f4000000|@18897,1,@3779|41,0,@14696 50,1,@8463 98,0,0 171,0,1 180,0,20 219,0,0 226,0,1 238,1,@4980 295,0,@8594 302,0,0 320,0,1 366,0,@8595 409,0,0 415,0,1 448,0,0 573,0,6 635,0,1 692,0,7 719,1,@8596 822,0,0 8463:D3,7464|3b650c7305ff552ccd0950538b7c24048b7f088b1789d683fa070f85ef0a00008b7f04be80b044b181c6340000008d74befcffe6e943000000909090e901010000909090e933000000909090e9de060000909090e9e2060000909090e9d9070000909090e913000000909090e9540a0000909090e9030000009090908b3c248b375f8b7f04b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b3c24897a04c702bccd44b183c602710e8d642408b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f088957048937b8042869b18b7424188b5424148b4c24108b5c240c575652515389c28b442418bb883966b1ff1289c7578b7c24048b3fb801000000e91b1b00008b7c2414f7c7010000000f85500500008b7c24148b3f8b7424148b7604f7c6010000000f85290500008b560483fa017507ba03000000eb05ba0100000083fa030f85060500008b36ff36ff37bfcc5366b18b75008d76f83b75087305ff5528cd80897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d000000578b442404e8199e000089c757f60424010f85c80200008b3c248b3fff77048b5f0883fb017d0e8d64241cb8a84566b18b5d04ff23b801000000e8c49f000089c757f60424010f85410100008b3c248b3f8b34248b760483fe010f85b70000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004cc6567b18938bb03000000e8ae71f1ff89c7578b0424e85f72f1ff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54240c895708897704c70705000000eb748b04248b5c240ce8a49f0000bb03000000e80e71f1ff89c7578b0424e8bf71f1ff89c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706010000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70707000000eb05bfe45667b1578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424108977088b742414897704c707050000008b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c2418897804c700050000008b7c24088b3f8b5424288b75008d76f43b75087305ff5528cd85897500c746fc02000000895604c706010000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c742040100000089328b75008d76e83b75087305ff5528cd85897500c746fc050000008956108b54240889560c897e088b7c2404897e04c7060b0000008b7d008d7ff03b7d087305ff5528cd41897d00c747fc030000008b542410895708897704c707050000008b5d008d5bf03b5d087305ff5528cd81895d00c743fc03000000897b088b3c24897b048d64240cc703050000008b7c24208b74241c68904869b1575668a84869b1e83a9f0000eb008b3c2483ff01750c8d642418b8f44969b1c210005f8b3fff37ff77088b3c2483ff010f85400100008d642404b8a84a69b1e8ae95e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c747089c5a66b1897704c7070f00000057b8587867b1e87095e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f00000057b8d44a69b1e83595e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f00000057b8f44a69b1e806e8f1ff89c757b801000000e8fda3000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e105f897e0cc7460801000000c74604004b69b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000e9681400008b3c2483ff03750abf104b69b1e9331200008b3c2483ff017d0e8d64241cb8a84566b18b5d04ff23b8010000008b1c24e8bba3000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000e97e1100008d642408eb048d642408b8304b69b18b5d04ff238d642408b801000000e800e7f1ff89c757b801000000e85fa4000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704904b69b1c707a44b69b18b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c210008d642408b8e84b69b1c210008b7c2414f7c70100000075408b7c24148b3f8b7424148b760483fe0175208b07ba5c2869b15b8b742414897424148b7c2404897c241083c410e9375900008d642408b8a04c69b18b5d04ff238b3c248b3f5e8b5604b9010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76f03b75087305ff5528cd84897500c746fc030000008956088b1424895604c706585c45b183c702710e8d642408b8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc0895d00c743fc030000008b1424895308897304893bba5c2869b18b7c241857b8902d66b1e88958000089c7578b7c24048b3fb801000000e90b0f00008b7c2414f7c7010000000f856a0100008b7c24148b3f8b7424148b760483fe010f85460100008b078b3c248b3f5e8b5604b9010000008b75008d76f83b75087305ff5528cd87897500c746fc01000040890e568b75008d76f03b75087305ff5528cd85897500c746fc030000008956088b1424895604c706545d45b183c702710e8d642408b8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc1895d00c743fc030000008b1424895308897304893bba5c2869b18b7c241857e8b357000089c757b8004d69b1e89a91e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e84291e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c74708444d69b1897704c7070f000000578b7c24048b3fb801000000e9d80c00008d642408b8544d69b18b5d04ff238d642408b801000000e8eee3f1ff89c757b801000000e801a4000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e105f897e0cc7460801000000c74604b44d69b1c706c84d69b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b801000000e87f83e3ff89c757b801000000e8dea3000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977105e89770cc7470801000000c74704d84d69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c210008b7c2414f7c701000000752e8b7c24148b3f8b7424148b760483fe01750e8b078b7c24108b7f34e9780600008d642408b8f04d69b18b5d04ff238d6424088b7c24088b7f34e9fd03000089f283fe01750e8d642408b84c4e69b18b5d04ff2389d683fa090f8576010000ff77048b47088b7c24088b7f048b75008d76f03b75087305ff5528cd81897500c746fc030000008946088b1424895604c706185f45b15683ff0175658d6424048b5c2404e8bca4000089c78b3783fe0d751b89f85bc7442418010000008b7c2408897c241483c414e9c07de3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000005e897008897804c7001700000083c408c2100083ff0375658d6424048b5c2404e862a5000089c78b3783fe0d751b89f85bc7442418010000008b7c2408897c241483c414e9567de3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000005e897008897804c7001700000083c408c21000f7c7010000007532b801000000e8101b0000b93c2869b18b5c24088b7424205a8954241889ca8974241c8b7c240c897c241483c414e9581b00008b44241ce8df1a0000b93c2869b18b5c24088b7424205a8954241889ca8974241c8b7c240c897c241483c414e9271b000083fe050f85a50100008b77048b7f088b368b0f8b7c24048b7f048b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c702d46245b15283ff0175788d6424048b3c248b3f5a8b52048b092bf9710e8d642404b8f80466b18b5d04ff238d64240483c7018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2100083ff0375788d6424048b3c248b3f5a8b52048b092bf9710e8d642404b8f80466b18b5d04ff238d64240483c7018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c21000f7c7010000007536b801000000e86a190000b93c2869b18b5c24048b74241c5a8d6424048954241089ca897424148b7c2404897c240c83c40ce9ae1900008b442418e835190000b93c2869b18b5c24048b74241c5a8d6424048954241089ca897424148b7c2404897c240c83c40ce9791900008b47048b7c24048b7f048b75008d76f43b75087305ff5528cd81897500c746fc02000000894604c706646345b15683ff0175078d64240cc2100083ff0375078d64240cc21000f7c7010000007536b801000000e8b1180000b93c2869b18b5c24048b74241c5a8d6424048954241089ca897424148b7c2404897c240c83c40ce9f51800008b442418e87c180000b93c2869b18b5c24048b74241c5a8d6424048954241089ca897424148b7c2404897c240c83c40ce9c0180000f7c701000000753b8b178b77048b0a81f99c03c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507beb84e69b1eb138b3f8b3781fe9c03c0b00f85ef0100008b77088b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d00000057b8c04e69b1e8fc8ae3ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000005a895608897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e83fe017507bf883966b1eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708883966b1897704c7071f00000057b801000000e851ddf1ff89c757b801000000e8c4a2000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e105f897e0cc7460801000000c74604cc4e69b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b801000000e8cddcf1ff89c757b801000000e8a4a2000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704dc4e69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c21000b8483366b18b5d04ff23f7c701000000753b8b178b77048b0a81f9f401c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750abfe46966b1e9410400008b3f8b3781fef401c0b075058b7f08eb0e8d642408b8483366b18b5d04ff23578b7c24148b7f34f7c701000000753b8b178b77048b0a81f99c03c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017507beec4e69b1eb138b3f8b3781fe9c03c0b00f85e10200008b77088b7c24048b3f8b5424048b4a04bb010000008b55008d52f83b55087305ff5528cdcb895500c742fc01000040891a528b55008d52f03b55087305ff5528cdc3895500c742fc03000000894a088b0c24894a04c702a06445b183c702710e8d642410b8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc5895d00c743fc030000008b0c24894b08895304893b8b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000c7470801000000897704c7070d00000057ba5c2869b18b7c242457e8984d000089c7578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b74240c897704c7070d00000057b8587867b1e85287e3ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000005a895608897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706883966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e88a86e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e83286e3ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000005a895608897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e83fe017507bf883966b1eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708883966b1897704c7071f000000578b7c24048b3fb801000000eb0e8d64240cb8483366b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e833450000e82ed8f1ff89c757b801000000e88d9f000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704cc4e69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c410c21000f7c701000000753b8b178b77048b0a81f9f401c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781fef401c0b075088b7f08e96ffbffff8d642408b8483366b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8ef430000e8ead6f1ff89c757b801000000e8ad9e000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704b44d69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c21000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e828430000e823d6f1ff89c757b801000000e84a9e000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704f44e69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c21000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8b27de3ff89c6eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757b8a84a69b1e82c82e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c03000000c747089c5a66b1897704c7070f000000578b442404e8ef81e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a8d642404895708897704c7070f00000057b8d44a69b1e8b081e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c240483ff017d0e8d642420b8a84566b18b5d04ff23b8010000008b5c2404e8fe9c000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7009c5a66b1e83cd4f1ff89c757b801000000e8879d000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e105f897e0cc7460801000000c74604084f69b15f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057b8f44a69b1e8b8d3f1ff89c7578b7c240883ff017d0e8d642424b8a84566b18b5d04ff23b8010000008b5c2408e84c9d000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e105f897e0cc7460801000000c74604004b69b15f8d642404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7c24148b1f8b7c24148b7f04ba010000008b75008d76f83b75087305ff5528cd8c897500c746fc0100004089165683c302710e8d642420b8f80466b18b5d04ff238b7424088b0657ff742404e8ed9c000089c68b3e83ff0d75126a0189f0bb03000000e8626ee3ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470803000000897704c707170000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604cc6866b1893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b742404897708c74704d46866b1c70725000000578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8d73e0000e8d2d1f1ff89c757b801000000e8719d000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704184f69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c420c21000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8103e0000e80bd1f1ff89c757b801000000e80e9d000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704184766b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c21000f4000000|@18896,1,@3775|36,0,@8463 134,0,0 204,0,@8464 218,0,@9455 265,0,@18441 297,0,@10067 313,0,0 372,0,1 379,0,0 399,0,@10423 432,0,9999 477,0,6 487,1,@8558 525,0,@10224 535,0,0 540,1,@8560 606,0,@13326 613,0,1 618,1,@6475 629,1,@6476 664,0,1 673,0,0 712,0,3 754,0,2 768,1,@8561 773,0,1 778,1,@6475 789,1,@6476 824,0,1 833,0,0 872,0,3 879,0,@13097 924,0,2 966,0,2 1011,0,0 1044,0,0 1098,0,5 1140,0,2 1185,0,2 1198,0,@18826 1205,0,@18827 1210,1,@8563 1229,0,@18837 1261,0,@18843 1266,1,@4985 1301,0,1 1308,0,@10535 1317,0,7 1323,0,@13586 1328,1,@4985 1363,0,1 1376,0,7 1382,0,@18846 1387,1,@4985 1422,0,1 1435,0,7 1441,0,@18848 1446,1,@6589 1454,0,0 1459,1,@8565 1494,0,1 1501,0,0 1508,0,1 1522,0,0 1529,0,@18849 1567,0,12 1585,0,@18850 1607,0,@10224 1617,0,0 1625,1,@8566 1660,0,0 1669,0,20 1689,0,@18852 1703,0,0 1708,1,@6589 1716,0,0 1721,1,@8567 1756,0,1 1763,0,0 1770,0,1 1784,0,0 1791,0,@18855 1797,0,@18856 1832,0,12 1844,0,@18860 1884,0,@18444 1909,1,@8517 1918,0,@18866 1937,0,0 2007,0,@8570 2021,0,@9455 2068,0,@18444 2078,0,@9922 2083,1,@8517 2097,0,0 2156,0,0 2226,0,@8571 2240,0,@9455 2287,0,@18444 2297,1,@8517 2305,0,@18869 2310,1,@4985 2345,0,1 2358,0,7 2391,0,0 2398,1,@4985 2433,0,1 2440,0,@18874 2449,0,7 2461,0,0 2475,0,@18875 2489,0,0 2494,1,@6589 2502,0,0 2507,1,@8572 2542,0,1 2549,0,0 2556,0,1 2570,0,0 2577,0,@18878 2583,0,@18879 2618,0,12 2624,0,0 2629,1,@4975 2637,0,0 2642,1,@8573 2677,0,1 2684,0,0 2691,0,0 2705,0,0 2712,0,@18880 2750,0,12 2806,0,@18881 2843,0,@18884 2913,0,@8574 2932,1,@8576 2952,0,0 2968,1,@4973 3001,0,0 3014,0,11 3038,1,@8577 3058,0,0 3074,1,@4973 3107,0,0 3120,0,11 3139,0,0 3144,1,@8467 3149,0,@18443 3184,1,@8468 3193,1,@8467 3198,0,@18443 3233,1,@8468 3297,0,@8578 3331,0,@9455 3376,0,0 3420,0,8 3456,0,@9455 3501,0,0 3545,0,8 3561,0,0 3566,1,@8467 3571,0,@18443 3610,1,@8468 3619,1,@8467 3624,0,@18443 3663,1,@8468 3708,0,@8579 3746,0,0 3751,1,@8467 3756,0,@18443 3795,1,@8468 3804,1,@8467 3809,0,@18443 3848,1,@8468 3869,0,@4710 3920,0,0 3930,0,@18888 3942,0,@4710 3984,0,0 3993,0,6 3999,0,@18889 4004,1,@4985 4039,0,1 4052,0,7 4087,0,2 4120,0,0 4132,0,@10067 4167,0,@10067 4176,0,15 4182,0,0 4187,1,@6589 4195,0,0 4200,1,@8581 4235,0,1 4242,0,0 4249,0,1 4263,0,0 4270,0,@18890 4308,0,12 4314,0,0 4319,1,@6589 4327,0,0 4332,1,@8582 4367,0,1 4374,0,0 4381,0,1 4395,0,0 4402,0,@18891 4440,0,12 4448,0,@9999 4474,0,@4657 4525,0,0 4535,0,@10769 4550,0,@4657 4566,0,@9999 4600,0,@4710 4651,0,0 4661,0,@18892 4673,0,@4710 4700,0,0 4770,0,@8584 4784,0,@9455 4859,0,0 4868,0,6 4874,0,@18444 4884,1,@8517 4918,0,0 4931,0,6 4937,0,@13586 4942,1,@4985 4977,0,1 4990,0,7 5023,0,0 5060,0,@10067 5093,0,0 5102,0,20 5135,0,0 5142,1,@4985 5177,0,1 5190,0,7 5223,0,0 5230,1,@4985 5265,0,1 5278,0,7 5313,0,2 5346,0,0 5358,0,@10067 5393,0,@10067 5402,0,15 5414,0,0 5425,0,@9999 5497,1,@8500 5502,1,@6589 5510,0,0 5515,1,@8585 5550,0,1 5557,0,0 5564,0,1 5578,0,0 5585,0,@18890 5623,0,12 5650,0,@4657 5701,0,0 5715,0,@11247 5730,0,@4657 5749,0,@9999 5821,1,@8500 5826,1,@6589 5834,0,0 5839,1,@8586 5874,0,1 5881,0,0 5888,0,1 5902,0,0 5909,0,@18878 5947,0,12 6020,1,@8500 6025,1,@6589 6033,0,0 6038,1,@8587 6073,0,1 6080,0,0 6087,0,1 6101,0,0 6108,0,@18893 6146,0,12 6191,0,0 6198,0,1 6210,1,@4980 6247,0,0 6255,0,@18843 6260,1,@4985 6295,0,1 6302,0,@10535 6311,0,7 6321,1,@4985 6356,0,1 6373,0,7 6379,0,@18846 6384,1,@4985 6419,0,1 6432,0,7 6451,0,@10224 6461,0,0 6470,1,@8588 6507,0,@10535 6512,1,@6589 6520,0,0 6525,1,@8589 6560,0,1 6567,0,0 6574,0,1 6588,0,0 6595,0,@18894 6633,0,12 6639,0,@18848 6644,1,@6589 6665,0,@10224 6675,0,0 6684,1,@8590 6719,0,1 6726,0,0 6733,0,1 6747,0,0 6754,0,@18849 6796,0,12 6815,0,0 6858,0,@9455 6879,1,@8591 6897,0,1 6902,1,@4973 6939,0,0 6946,0,1 6955,0,11 6988,0,0 6995,0,@10756 7040,0,@10757 7046,0,18 7058,0,0 7125,1,@8500 7130,1,@6589 7138,0,0 7143,1,@8592 7178,0,1 7185,0,0 7192,0,1 7206,0,0 7213,0,@18895 7251,0,12 7324,1,@8500 7329,1,@6589 7337,0,0 7342,1,@8593 7377,0,1 7384,0,0 7391,0,1 7405,0,0 7412,0,@10237 7450,0,12 8464:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e919c4e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3645|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8465:D3,2180|3b650c7305ff552ccd0950538b4424048b7804f7c7010000000f85c20000008b7424188b5424108b4c240c8b7d008d7fe83b7d087305ff5528cd47897d00c747fc05000000894f1089570c89770889c0894704c70750d744b157b801000000e8c0080000ba3c2869b18b5c24208b7c241c57ff742404e81909000089c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24088938e8c47be3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642410897804c7000f000000c2140083ff010f85e60000008b5c241c8b7c24188b7424148b5424108b4c240c57565251e8c1e0ffff89c68b7c24048b178b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c7470801000000895704c7070d0000008b4d008d49f43b4d087305ff5528cdc0894d00c741fc02000000c74104587867b18b142489118d6424088b55008d52f43b55087305ff5528cdc2895500c742fc02000000894a04893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000e96c06000089c08b78088b3783fe070f85450400008b7f0489c689f0ff36beb8ce44b181c6fa0100008d74befcffe6e943000000909090e9ac000000909090e9ad000000909090e972010000909090e99f010000909090e99d010000909090e99e010000909090e98d020000909090e90c0300009090908d6424046a016a018b7c241cf7c70100000075478b7c241c8b7f04f7c70100000075168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff0375188b7c241c8b378b7c241c8b7f048b3f8b3f8b36e95f050000bf2c4469b18b378934248b7f04897c2404e9f50300008d642404e9060100008d6424048b7c2414f7c7010000000f85ab0000008b7c24148b7f0483ff017507bf03000000eb05bf0100000083ff030f85840000008b7c24148b3f8b07ba384469b18b5c241c8b7c241857e89074000089c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e83379e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f00000083c404c214008d642408eb048d642408b8c44469b18b5d04ff238d64240c8b7c24048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c214008d642404eb048d642404e9fb0000008d6424048b7c2414f7c7010000000f85d50000008b7c24148b7f0483ff017507bf03000000eb05bf0100000083ff030f85ae0000008b7c24148b3f8b07ba384469b18b5c241c8b7c241857e87f73000089c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e82278e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642408897704c7070f0000008b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400813000000897804c7002b00000083c404c214008d642408eb048d642408b8084569b18b5d04ff238d6424048b5c241c8b7c24188b7424148b5424108b4c240c57565251e8e3dcffff89c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e85a77e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d64240c897804c7000f000000c214008b7c2418f7c7010000000f85bc0000008b7c24188b7f0483ff017507bf03000000eb05bf0100000083ff030f85950000008b7c24188b3f8b07ba102169b1bb01000000e835b0ffff89c3ba504569b168b44569b18b442404e87876000089c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24088938e89776e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d64240c897804c7000f00000083c404c214008d64240ceb048d64240cb83c4669b18b5d04ff238b5c241c8b7c24188b7424148b5424108b4c240c57565251e886dbffff89c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e8fd75e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d64240c897804c7000f000000c214005e5a8b4d008d49f03b4d087305ff5528cd44894d00c741fc03000000895108897104c701844c45b18b3c248b1f83fb0d752389ff8b5f048b7d008d7ff83b7d087305ff5528cd4e897d00c747fc01000000891feb05bf0100000083ff010f85910000008b7d008d7ff03b7d087305ff5528cd02897d00c747fc03000000c7470801000000894f04c7070d000000578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c24048938e80c75e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f00000083c404c214008b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977088b34248977048d642404c7074c5045b18b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d00000083c404c214008b1683fa0d75138b56048b1289d63b650c7305ff552ccdc0ebe68b1783fa0d75138b57048b1289d73b650c7305ff552ccdc0ebe6893424897c2404e96cfefffff7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff03750f8b3c24897c241483c414e9426fe3ffc21400f40000|@18824,1,@3738|85,0,@8466 91,0,0 96,1,@8467 101,0,@18443 119,1,@8468 153,0,0 164,1,@4985 199,0,1 218,0,7 259,1,@8463 300,0,0 309,0,6 342,0,@13586 446,0,0 455,0,20 490,0,@8465 622,0,1 629,0,0 636,0,0 670,0,@18790 733,0,1 740,0,0 762,0,@18791 776,1,@8544 810,0,0 821,1,@4985 856,0,1 875,0,7 896,0,@18796 942,0,0 951,0,6 1006,0,1 1013,0,0 1035,0,@18791 1049,1,@8544 1083,0,0 1094,1,@4985 1129,0,1 1148,0,7 1181,0,9 1190,0,21 1211,0,@18799 1249,1,@8463 1283,0,0 1294,1,@4985 1329,0,1 1348,0,7 1384,0,1 1391,0,0 1413,0,@18389 1418,0,0 1423,1,@8431 1430,0,@18802 1435,0,@18805 1444,1,@8549 1478,0,0 1489,1,@4985 1524,0,1 1543,0,7 1564,0,@18810 1598,1,@8463 1632,0,0 1643,1,@4985 1678,0,1 1697,0,7 1740,0,@8552 1790,0,0 1832,0,0 1841,0,6 1873,0,0 1884,1,@4985 1919,0,1 1938,0,7 1992,0,@8557 2025,0,0 2034,0,6 2143,0,0 2150,0,1 2170,1,@4980 8466:D3,120|3b650c7305ff552ccd0589c18b42048b7a088b720c8b5210576a01565289cbe80cd9ffff89c78b3783fe0d751789f8ff3424bb03000000c744240401000000e94862e3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c3f400|@18442,1,@3646|32,1,@8463 51,0,1 59,0,0 64,1,@4973 97,0,0 104,0,1 113,0,11 8467:D3,92|3b650c7305ff552ccd01a8017547ff308b40048b3c248b7f0483ff03752ee8ddffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9abffffffb801000000c3f4|@9865,1,@3647|86,0,0 8468:D3,180|3b650c7305ff552ccd0d5250538b7c240483ff0175128b542410588b7c2408897c241083c410ff228b5424108b0424ff1289c7578b7c240c89f8ff770489c08b780889c08b700c8b54241c89c08b481089c08b581489c08b40185756ff742410525153508b4424288b5c241ce8570000008d642404e85e72e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642410897804c7000f000000c20800f4|@18496,1,@3687|109,1,@8469 118,1,@4985 153,0,1 172,0,7 8469:D3,204|3b650c7305ff552ccd0953a8010f85ac0000008b38ff7004ff37ff7704ff7708ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff742404ff742418ff7424085756525153508b4424308b5c242ce88500000089c757ff7424388b7c24388b7424348b5424308b4c242c8b5c24288b442424ff34245756525153508b4424348b5c2438e870ffffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64241cc21c008d642404b801000000c21c00f4|@10030,1,@3686|87,1,@8470 196,0,0 8470:D3,1284|3b650c7305ff552ccd095083fb037502eb768b7c242883ff03746d8b4424148b7c24248b7424208b54241c5756528b5c240ce8e104000089c783ff0175328b7c24148b7424248b5424208b4c241c575652518b442410bb03000000e83c10000089c7be010000008b542414e9c30100008d6424048b3f8b178b4424148b3c24897c242483c424ff2283fb03752a8b5c24188b7c24148b7424248b5424208b4c241c68b02a69b1575652518b442414e89915000089c7eb048b7c2410578b5c241c8b7c24188b7424288b5424248b4c242068082f69b1575652518b442418e85622000089c7578b7c243083ff0375178b5424148b5c24208b7c241c578b44240cff1289c7eb048b7c2410578b5c24248b7c24208b7424308b54242c8b4c242868082f69b1575652518b442420e8c428000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff03750f8b3c24897c242483c424e9546ae3ffc22400f6c20175288b5a0489f183c102710e8d642404b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd32bf7710e8d642404b8f80466b18b5d04ff2383c6016a016a016a018b7c2420f7c7010000000f856a0200008b0f8b570483fe010f85340200008b39893c248b7904897c24048b7908897c2408ff3424ff742408ff7424108b7c242c8b74243c8b5424388b4c243468602f69b1575652518b44242c8b5c2418e85b20000089c7578b7c24308b7424408b54243c8b4c243868b42f69b1575652518b4424308b5c241ce8ee26000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7c24208b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a8b7c24288b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000578b542404b803000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8d642408897708c7470401000000c707030000008b4d008d49f03b4d087305ff5528cdc0894d00c741fc030000008979088971048b7c241489398b5424048b1a8b7d008d7ff43b7d087305ff5528cd4e897d00c747fc02000000895f04890f89d2893a8b7c242c8b0f8b7c242c8b7f048b14248b128d6424182bca710ab8f80466b18b5d04ff2389ca83c2018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c7400801000000895004893089faff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2240089f183e902710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e98afdffff8d642410b8643c66b18b5d04ff23f4|@18495,1,@3685|51,1,@8471 87,0,1 92,1,@8480 99,0,0 162,0,@18454 175,1,@8485 209,0,@18489 222,1,@8492 287,0,@18489 300,1,@8496 335,0,0 481,0,0 490,0,20 529,0,0 536,0,1 556,1,@4980 583,0,@9455 617,0,@9455 712,0,@18491 729,1,@8492 753,0,@18493 770,1,@8496 805,0,0 948,0,0 957,0,20 967,0,1 1017,0,0 1023,0,1 1133,0,@9455 1176,0,0 1222,0,8 1241,0,@9455 1274,0,@10105 8471:D3,1028|3b650c7305ff552ccd09508b3b89fe83ff05756d8d6424048b7c240c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70624e344b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704ffffffff89378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c0089f783fe0b0f85c20000008b7b04ff730c8b34248b4e0c89ca8b49048b0983f9050f858100000089d68d6424048b76048b1683fa0575638b4604ff760889fbe893d2e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c70348e344b16a016a01548b44240ce8b4d4f1ff5b8d642408588b74240c8b5424088b4c2404894c2404895424088974240ce9e5feffff8d642404b8a48b67b18b5d04ff23f7c7010000007409ff742410e9420100008d642404588b3c24897c240c83c40ce98603000083ff0d0f85150100008b7b048b53088b75008d76f43b75087305ff5528cd8c897500c746fc02000000895604893e8b3f8b0f89ca83f9097567ba102169b189d8bb01000000e8dca3ffff89c68b3e8b5d008d5be83b5d087305ff5528cdc0895d00c743fc05000000c743100100000089730c897b08c7430401000000c7030b000000588b74240c8b5424088b4c2404894c2404895424088974240ce912feffff83fa0375596a016a018b7c2410545789f38b442410e8e80700005e5a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c005889fb8b74240c8b5424088b4c2404894c2404895424088974240ce994fdffff588b3c24897c240c83c40ce958020000f60424010f85f10000008b342489f7ff3689ffff77048b7c24048b3f8b7f0c8b74240c8b760c8b4f0489ca8b0983f90375408b460489c18b0083f8037507b803000000eb05b80100000083f80375238b7a0489ce8b76043bfe7507bf03000000eb05bf0100000083ff0375528d642404eb6789d18b1283fa0175398b460489c28b0083f8017507b803000000eb05b80100000083f803751c89cf8b7f0c89d68b760c3bfe7507bf03000000eb05bf01000000eb05bf0100000083ff0374175e897424043b650c7305ff552ccd0883c404e92bffffff8d6424048b7d008d7ff83b7d087305ff5528cd08897d00c747fc010000005e893783c408eb098d642408bf0100000083ff017510588b3c24897c240c83c40ce93f0100008d6424048b3f8b7f048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7066cea44b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704ffffffff89378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c20c00f4|@18451,1,@3656|59,0,@8472 92,0,-1 193,1,@5210 230,0,@8473 244,1,@6630 288,0,@13837 330,1,@8474 392,0,@18389 399,0,0 404,1,@8431 441,0,0 454,0,0 460,0,5 516,1,@8477 632,1,@8474 699,0,1 706,0,0 728,0,1 735,0,0 772,0,1 779,0,0 803,0,1 810,0,0 817,0,0 892,0,0 913,1,@8474 957,0,@8479 990,0,-1 8472:D3,16|3b650c7305ff552ccd058b4204c3f400|@18445,1,@3648| 8473:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3649|81,0,0 91,0,0 8474:D3,352|3b650c7305ff552ccd0953a801750f8b30ff70048b3e8b3fff760457eb0a8d642404b801000000c3f6042401755e8b342489f7ff3689ffff77048b7c24048b078b5c2414e82b01000089c783ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c404eb1b5e897424043b650c7303ff552c83c404eb9c8d642404bf01000000f7c701000000753d8b3f8b7f048b75008d76f03b75087305ff5528cd80897500c746fc030000008b14248956088d642404897e04c7066ce844b1ba010000005f83c404eb0b8d642404585be91bfffffff7c70100000075248b5f0489d183c102710ab8f80466b18b5d04ff2389df89ca3b650c7305ff552ccdc4ebd483c202710ab8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4000000|@18448,1,@3652|35,0,0 69,1,@8475 145,0,0 203,0,@8476 208,0,0 248,0,@9455 279,0,@9455 8475:D3,772|3b650c7305ff552ccd0953e80cd5f1ff89c7578b442404e800d5f1ff89c28b3c248b3f83ff0d753e8b3a83ff0d75375f8b7f048b72048b0f8b168b0983f903751b8d6424048b1283fa0375143bfe7506b803000000c3b801000000c38d642404b801000000c38b3c248b3f83ff05753b8b3a83ff0575348b3c248b47045fff77088b5a04ff7208e874ffffff89c783ff03750e8b4424045b8d642408e95fffffff8d64240cb801000000c38b3c248b3f83ff0775158b3a83ff07750e5f8b77048b7a045657e96a0100008b3c248b3f83ff0b0f85d40000008b3a83ff0b0f85c30000008b3c24ff77048b7c24048b770c8b7a048b520c8b760c8b520c8b5e0489d98b1b83fb0375428b420489c38b0083f8037507b803000000eb05b80100000083f80375258b710489da8b52043bf27507be03000000eb05be0100000083fe037502eb5c8d64240ceb5089cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe03740a8d64240cb801000000c3ff342457eb108d642408eb048d642408b801000000c38b7c240483ff01751a5f83ff01750a8d642410b803000000c38d642410b801000000c38b7c24048b078b7c2404ff7704f644240401753d8b7c24048b1f8b7c2404ff7704e801feffff89c783ff03751a8b7424045a8d642404891424897424043b650c7303ff552ceb968d64241cb801000000c38d642418b801000000c38b7c240483ff01751a5f83ff01750a8d642408b803000000c38d642408b801000000c38b7c24048b3f8b742404ff7604f6442404010f85870000008b7424048b168b742404ff76048b37ff77048b3a8b5a043bf77502eb2a8b168d1455010000008b0789c18d0445010000003bd075488d76048d7f043bc9f3a674068d642418eb3a8b0424e842fdffff89c78d64240483ff03751d8b7424045a8d642404891424897424043b650c7303ff552ce94effffff8d642414eb048d642418b801000000c38d642410b801000000c3f4000000|@18446,1,@3650|12,1,@6635 24,1,@6635 81,0,1 87,0,0 97,0,0 166,0,0 277,0,1 284,0,0 306,0,1 313,0,0 352,0,1 359,0,0 383,0,1 390,0,0 397,0,0 411,0,0 433,0,0 458,0,1 468,0,0 549,0,0 559,0,0 584,0,1 594,0,0 753,0,0 763,0,0 8476:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18447,1,@3651|27,0,@9455 68,0,0 115,0,8 8477:D3,312|3b650c7305ff552ccd0953a801752a8b388b40048b7f0c8b3783fe0375058b7f04eb565b8b7424088b5424048954240489742408e9c7ffffff8d6424048b7c24048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70648ea44b18b7c24088937c7470401000000b801000000c20800f7c701000000753e8b178b77048b0a8b098b1c248b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbabf0100000083ff0175165b8b7424088b5424048954240489742408e921ffffff8d6424048b3f8b5704bf01000000a80175248b480489fe83c602710ab8f80466b18b5d04ff2389c889f73b650c7305ff552ccd85ebd883c702710ab8f80466b18b5d04ff238b7424088916897e04b801000000c20800f40000|@18450,1,@3654|96,0,@8478 109,0,0 114,0,0 192,0,0 233,0,0 252,0,@9455 283,0,@9455 302,0,0 8478:D3,16|3b650c7305ff552ccd058b4204c3f400|@18449,1,@3653| 8479:D3,16|3b650c7305ff552ccd058b4204c3f400|@18445,1,@3655| 8480:D3,584|3b650c7305ff552ccd0950538b4424188b7c24148b7424108b54240c5756528b5c2410e854f4ffff89c783ff010f85630100008b7c24048b3789f283fe07750f89ff8b7f0457ff742404e9a901000089ff89d683fa0b0f85d300000089fe89f7ff760489ff8b470c8b700c89f78b76048b3683fe050f85950000008b7f048b3783fe05757d8b4704ff77088b5c2404e840c7e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703ecec44b16a016a01548b44240ce861c9f1ff5f8d64240c578b4424048b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce902ffffff8d6424088d64240cb8a48b67b18b5d04ff238b5c241ce8db01000089c78b54240489d63bd77e0489f7eb00ff342457eb7f89ff83fe0d755989ff8b7f048b3f8b1789d683fa0375075883c404c2100083fe0975075883c404c21000578b4424048b74241c8b5424188b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce975feffff8d6424085883c404c210008b3f8b47043b04247e078d642408c210005883c404c21000f644240401753c8b7c24048b0789ffff77048b7c24288b7424248b5424208b4c241c575652518b5c2414e823feffff89c25e891424897424043b650c7303ff552cebbd5883c410c21000f644240401753f8b7424048b3e89f6ff76048b47048b7c24248b7424208b54241c8b4c2418575652518b5c2414e8d6fdffff89c25e891424897424043b650c7303ff552cebba5883c40cc21000f40000|@18453,1,@3659|36,1,@8471 144,1,@5210 181,0,@8481 195,1,@6630 263,0,@13837 277,1,@8482 8481:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3657|81,0,0 91,0,0 8482:D3,364|3b650c7305ff552ccd0950f6c30175228b3bff73048b7f0c8b3783fe0175058b7f04eb188b4424045b8d642404e9ceffffff8d642404b8ffffffffc3f7c7010000000f85c40000008b37ff77048b760c8b5424088b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642404eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e93bffffff8d642404bf03000000eb05bf0100000083ff03750bb8010000005f83c404eb0e8b4424045b8d642404e9d1fefffff7c70100000075248b570489c683c602710ab8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd483c002710ab8f80466b18b5d04ff23c3f4|@18452,1,@3658|55,0,-1 112,0,1 119,0,0 141,0,1 148,0,0 185,0,1 192,0,0 216,0,1 223,0,0 230,0,0 262,0,1 269,0,0 279,0,0 322,0,@9455 353,0,@9455 8483:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18455,1,@3661|18,1,@8484 8484:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9724ae3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3660|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8485:D3,1200|3b650c7305ff552ccd09538b3889fe83ff070f85350100008b4004a801755e8b780483ff017507bf03000000eb05bf0100000083ff0375458b388b7f0457ff7424048b7424208b54241c8b4c24188b5c24148b442410894424108b442404895c24148b1c24894c24188954241c8974242083c40ce987ffffff8d64240c8b3c248b375f8b7f04b9010000008b55008d52f83b55087305ff5528cdc3895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc1895500c742fc03000000897a088b3c24897a04c70204f544b183c602710e8d642404b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd45897d00c747fc030000008b0c24894f088957048937578b7c24148b7424108b54240c8b4c241c8b5c241868002b69b1575652ff7424105153bb01000000e88a04000089c78d642404578b7c24048b3fb801000000e99902000089f783fe0b0f85190100008b78048b700c8b4e0c89ca8b49048b0983f9050f85a300000089d68b76048b1683fa050f85850000008b4604ff760889fbe896c0e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703dcf744b16a016a01548b44240ce8b7c2f1ff5f8d64240857ff7424048b7424208b54241c8b4c24188b5c24148b442410894424108b442404895c24148b1c24894c24188954241c8974242083c40ce9fefdffff8d64240c8d642404b8a48b67b18b5d04ff235657ff742418ff7424188b5424188b4c24248b5c24108b4424288b742414894424108b44240cc7442414002b69b1895c24188b5c2408894c241c895424208b3c24897c24248b7c2404897c24288974240c83c40ce9c70500008d64241483ff0d0f855e0100008b78048b3f8b1789d683fa030f85990000008b4c24148b7c24108b74240c8b54240857565289c389c8e824ecffff89c783ff01750e8d642404b82c2e69b18b5d04ff238b3f8b178b0424ff1289c78d6424048b3783fe0d751e89f8bb01000000c7442414010000008b3c24897c241083c410e9ab46e3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400801000000897804c70017000000c2140083fe09756eba102169b1bb01000000e80791ffff89c757ff742414ff7424148b5424148b4c24208b5c240c8b4424248b7424108944240c8b442408c7442410002b69b1895c2414bb01000000894c24188954241c8b3c24897c24208b7c2404897c24248974240883c408e9a00400008d64241057ff7424048b7424208b54241c8b4c24188b5c24148b442410894424108b442404895c24148b1c24894c24188954241c8974242083c40ce92cfcffff8d64240c8d642404b8882e69b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8c7160000e8c2a9f1ff89c757b801000000e83517000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704d42e69b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c404c21400f40000|@18488,1,@3678|40,0,1 47,0,0 135,0,0 205,0,@8486 219,0,@9455 287,0,@18456 301,0,0 306,1,@8487 324,0,0 394,1,@5210 431,0,@8488 445,1,@6630 523,0,@13837 574,0,@18456 617,1,@8489 676,1,@8471 692,0,@18481 726,0,0 734,0,0 749,1,@4973 782,0,0 789,0,0 798,0,11 811,0,@18389 816,0,0 821,1,@8431 868,0,@18456 877,0,0 912,1,@8489 989,0,@18484 1061,1,@8500 1066,1,@6589 1074,0,0 1079,1,@8501 1114,0,1 1121,0,0 1128,0,1 1142,0,0 1149,0,@18487 1187,0,12 8486:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9d19ce4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3662|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8487:D3,456|3b650c7305ff552ccd0953a8010f85a80100008b38ff7004ff7704ff7424288b44241c8b7c24188b7424148b5424288b4c24248b5c2420575652515389c38b5424148b442418ff1289c7578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c010000008b54241089d6895708c74704883966b1c707170000008b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c0100000089f6897208c74204a03966b1c702170000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938e82a54e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d64240c897704c7070f000000578b7c240883c70257710e8d642410b8f80466b18b5d04ff23ff74242c8b7c242c8b7424288b5424248b4c24208b5c241c8b442418ff34245756525153508b4424288b5c2420e885feffff89c78d6424088b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400cc43966b18978088b3c248978048d642408c7000b00000083c404c21c008d642404b8783966b1c21c00f4|@18457,1,@3663|102,0,0 118,0,@10067 124,0,11 157,0,0 169,0,@10069 175,0,11 208,0,0 246,1,@4985 281,0,1 300,0,7 320,0,@9455 414,0,@10072 433,0,5 448,0,@10066 8488:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3664|81,0,0 91,0,0 8489:D3,476|3b650c7305ff552ccd09538b700c89f78b4e0489ca8b0983f90375258b520481fa7c01c0b07507ba03000000eb05ba0100000083fa0375098d642404e9920100008b4e0489ca8b0983f90375238b520481fa1403c0b07507ba03000000eb05ba0100000083fa037507be03000000eb5b8b4e0489ca8b0983f90375238b520481fa2c03c0b07507ba03000000eb05ba0100000083fa037507be03000000eb2c8b4e0489ca8b0983f903751b89d68b760481fe3c03c0b07507be03000000eb05be01000000eb05be0100000083fe030f84fb0000008b5424088b7424108b45008d40f03b45087305ff5528cdc4894500c740fc030000008970088b34248970048938ff1289c68b3e83ff0d75126a0189f0bb01000000e84e40e3ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470801000000897704c7071700000057f64424040174075883c404c21c00ff7424248b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b4424208b5c2418e8630000008d642404e81a51e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c21c008d642404b8e46c67b1c21c00f4|@18480,1,@3675|33,0,@4642 40,0,1 47,0,0 82,0,@4693 89,0,1 96,0,0 106,0,1 129,0,@4696 136,0,1 143,0,0 153,0,1 178,0,@4698 185,0,1 192,0,0 199,0,0 273,0,0 278,1,@4973 315,0,0 322,0,0 331,0,11 393,1,@8490 402,1,@4985 437,0,1 456,0,7 468,0,@13440 8490:D3,172|3b650c7305ff552ccd0953a8010f8589000000ff30ff70048b7c24248b7424208b54241c8b4c24188b5c24148b4424105756525153508b44241c8b5c2420e87d00000089c7578b7c24288b7424248b5424208b4c241c8b5c24188b4424145756525153508b44241c8b5c2424e88fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c218008d642404b801000000c21800f4000000|@10030,1,@3674|63,1,@8491 161,0,0 8491:D3,500|3b650c7305ff552ccd0950538b5c24048b3b83ff0d755e89db8b7b048b3f8b3f83ff037507bf03000000eb05bf0100000083ff03753f8b4424188b7c24208b74241cff34245756e89ce3ffff89c78d64240883ff01750ab8382b69b18b5d04ff238b3f8b178b44240c8b3c24897c241883c418ff228b5c24108b4424148b7c240c8b7424188b5424208b4c241c5756ff742408525189da89c38b442418ff1289c7578b5c24188b7c24108b74241c8b5424248b4c24205756ff74240c52518b44241ce84101000089c7578b5c241c8b7c24148b7424208b5424288b4c24245756ff74241052518b442420e8d507000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240c8b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff03750f8b3c24897c241883c418e96549e3ffc21800f400|@18479,1,@3673|38,0,1 45,0,0 72,1,@8471 88,0,@18458 195,1,@8492 235,1,@8496 270,0,0 345,0,@10072 416,0,0 425,0,20 464,0,0 471,0,1 491,1,@4980 8492:D3,852|3b650c7305ff552ccd0950538b4424188b7c24148b7424108b54240c5756528b5c2410e8b8e1ffff89c783ff010f85ae0200008b7c24048b3f83ff07757f8b7c24048b7f04f7c70100000075648b770483fe017507be03000000eb05be0100000083fe0375458b3f8b7f0457ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e959ffffff8d64240c8d642408eb048d642408b8506866b1c214008b7c24048b3f83ff0b0f85210100008b7c24048b7f048b7424048b760c8b4e0c89ca8b49048b0983f9050f85a300000089d68b76048b1683fa050f85850000008b4604ff760889fbe82eb4e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703940045b16a016a01548b44240ce84fb6f1ff5f8d64240857ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e982feffff8d64240c8d642408b8a48b67b18b5d04ff235657ff742424ff74240c8b5424248b4c24208b5c241c8b4424288b742418894424148b44240c895c24188b5c2408894c241c89542420c7442424742b69b18b3c24897c24288b7c2404897c242c8974241083c410e9170200008d6424148b7c24048b3f83ff0d0f85d70000008b7c24048b7f048b3f8b1789d683fa03750e8d642408b8c02b69b18b5d04ff2383fe097572ba102169b18b442404bb01000000e82085ffff89c757ff742420ff7424088b5424208b4c241c8b5c24188b4424248b742414894424108b442408895c2414bb01000000894c24188954241cc7442420742b69b18b3c24897c24248b7c2404897c24288974240c83c40ce9710100008d64241457ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e931fdffff8d64240c8d642408b8202c69b18b5d04ff238b3f8b178b0424ff1289c78d6424048b3783fe0d75228d64240489f8bb05000000c7442414010000008b3c24897c241083c410e99739e3ff8d6424048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400805000000897804c70017000000c21400f40000|@18469,1,@3668|36,1,@8471 86,0,1 93,0,0 182,0,@10749 262,1,@5210 299,0,@8493 313,1,@6630 391,0,@13837 458,0,@18461 485,1,@8494 531,0,@18463 546,0,@18389 555,0,0 560,1,@8431 608,0,0 624,0,@18461 651,1,@8494 728,0,@18466 766,0,2 774,0,0 789,1,@4973 826,0,0 833,0,2 842,0,11 8493:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3665|81,0,0 91,0,0 8494:D3,268|3b650c7305ff552ccd09538b5424208b780c8b74241c8b45008d40f03b45087305ff5528cdc4894500c740fc030000008970088b34248970048938ff1289c68b3e83ff0d75126a0189f0bb05000000e85c38e3ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470805000000897704c7071700000057f64424040174075883c404c21c00ff74241c8b7c241c8b7424188b5424148b4c24248b5c24288b4424105756525153508b4424208b5c2418e8590000008d642404e82849e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c21c00f40000|@18462,1,@3667|75,0,2 80,1,@4973 117,0,0 124,0,2 133,0,11 195,1,@8495 204,1,@4985 239,0,1 258,0,7 8495:D3,392|3b650c7305ff552ccd0953a8010f85cd000000ff30ff7004ff7424088b44241c8b7c24188b7424148b5424288b4c24248b5c2420575652515389c38b5424148b44241cff1289c78d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604bc6966b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb0c8d642404b801000000c21800f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e80643e3ff89c7eb00578b7c24288b7424248b5424208b4c241c8b5c24188b4424145756525153508b44241c8b5c2424e8aafeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c21800f4000000|@10030,1,@3666|104,0,@10766 141,0,@10072 176,0,@10072 209,0,0 218,0,20 229,0,0 271,0,0 278,0,1 290,1,@4980 8496:D3,960|3b650c7305ff552ccd0950538b4424188b7c24148b7424108b54240c5756528b5c2410e8fcdaffff89c783ff010f85b40200008b7c24048b3f83ff070f85810000008b7c24048b7704f7c60100000075648b7e0483ff017507bf03000000eb05bf0100000083ff0375458b3e8b7f0457ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e955ffffff8d64240c8d642408eb048d642408bf01000000e9940200008b7c24048b3f83ff0b0f85210100008b7c24048b7f048b7424048b760c8b4e0c89ca8b49048b0983f9050f85a300000089d68b76048b1683fa050f85850000008b4604ff760889fbe86cade4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703bc0745b16a016a01548b44240ce88daff1ff5f8d64240857ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e97cfeffff8d64240c8d642408b8a48b67b18b5d04ff235657ff742424ff74240c8b5424248b4c24208b5c241c8b4424288b742418894424148b44240c895c24188b5c2408894c241c89542420c74424249c2c69b18b3c24897c24288b7c2404897c242c8974241083c410e97d0200008d6424148b7c24048b3f83ff0d0f85d70000008b7c24048b7f048b3f8b1789d683fa03750e8d642408b8e02c69b18b5d04ff2383fe097572ba102169b18b442404bb01000000e85e7effff89c757ff742420ff7424088b5424208b4c241c8b5c24188b4424248b742414894424108b442408895c2414bb01000000894c24188954241cc74424209c2c69b18b3c24897c24248b7c2404897c24288974240c83c40ce9d70100008d64241457ff7424048b7424248b5424208b4c241c8b5c24188b442414894424148b442404895c24188b1c24894c241c895424208974242483c410e92bfdffff8d64240c8d642408b83c2d69b18b5d04ff238b3f8b178b0424ff1289c78d6424048b3783fe0d75228d64240489f8bb07000000c7442414010000008b3c24897c241083c410e9d532e3ff8d6424048b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400807000000897804c70017000000c21400f7c60100000075248b4e0489fa83c202710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd483ff097f2d8b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c21400b8783966b1c21400f40000|@18478,1,@3672|36,1,@8471 90,0,1 97,0,0 186,0,0 268,1,@5210 305,0,@8497 319,1,@6630 397,0,@13837 464,0,@18470 491,1,@8498 537,0,@18472 552,0,@18389 561,0,0 566,1,@8431 614,0,0 630,0,@18470 657,1,@8498 734,0,@18475 772,0,3 780,0,0 795,1,@4973 832,0,0 839,0,3 848,0,11 874,0,@9455 933,0,0 942,0,6 950,0,@10066 8497:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3669|81,0,0 91,0,0 8498:D3,268|3b650c7305ff552ccd09538b5424208b780c8b74241c8b45008d40f03b45087305ff5528cdc4894500c740fc030000008970088b34248970048938ff1289c68b3e83ff0d75126a0189f0bb07000000e83431e3ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470807000000897704c7071700000057f64424040174075883c404c21c00ff74241c8b7c241c8b7424188b5424148b4c24248b5c24288b4424105756525153508b4424208b5c2418e8590000008d642404e80042e3ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c21c00f40000|@18471,1,@3671|75,0,3 80,1,@4973 117,0,0 124,0,3 133,0,11 195,1,@8499 204,1,@4985 239,0,1 258,0,7 8499:D3,424|3b650c7305ff552ccd0953a8010f85f0000000ff30ff7004ff7424088b44241c8b7c24188b7424148b5424288b4c24248b5c2420575652515389c38b5424148b44241cff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb0c8d642404b801000000c21800f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8bb3be3ff89c7eb00578b7c24288b7424248b5424208b4c241c8b5c24188b4424145756525153508b44241c8b5c2424e887feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c21800f4|@10030,1,@3670|104,0,0 141,0,@10072 176,0,@10072 211,0,@10072 244,0,0 253,0,20 264,0,0 306,0,0 313,0,1 325,1,@4980 8500:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3676|50,0,8 102,0,0 8501:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3677|16,0,0 27,0,@9455 74,0,@10071 8502:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18490,1,@3680|18,1,@8503 8503:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9622de3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3679|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8504:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18492,1,@3682|18,1,@8505 8505:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9262ce3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3681|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8506:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18494,1,@3684|18,1,@8507 8507:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9ea2ae3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3683|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8508:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@18502,1,@3688|11,0,0 8509:D3,20|3b650c7305ff552ccd01b8e0f967b1c3f4000000|@18503,1,@3689|11,0,@15032 8510:D3,20|3b650c7305ff552ccd09b801000000c3f4000000|@18502,1,@3690|11,0,0 8511:D3,20|3b650c7305ff552ccd01b8403866b1c3f4000000|@13864,1,@3691|11,0,@10050 8512:D3,20|3b650c7305ff552ccd01bfdc00c0b08b17ff22f4|@11676,1,@3692|11,0,@4622 8513:D3,20|3b650c7305ff552ccd01bfbc00c0b08b17ff22f4|@11676,1,@3693|11,0,@4618 8514:D3,20|3b650c7305ff552ccd01bffc00c0b08b17ff22f4|@15235,1,@3694|11,0,@4626 8515:D3,20|3b650c7305ff552ccd01bf1c01c0b08b17ff22f4|@9981,1,@3695|11,0,@4630 8516:D3,20|3b650c7305ff552ccd01bf0c01c0b08b17ff22f4|@18534,1,@3696|11,0,@4628 8517:D3,64|3b650c7305ff552ccd0d89d789c689d8568b77048b57088b4f0c8b5c240853ff74240889c38b442408894c24088954240c89742410e91a0000008d642404f400|@18789,1,@3723|54,1,@8518 8518:D3,6088|3b650c7305ff552ccd0989c1538b3189f783fe05750e8d642404bfd03f69b1e9d316000089fe83ff070f8580020000ff71048b7908f60424010f85620200008b34248b368b14248b520483fa010f85450200008d642404ff368b46048b7c24048b3f8b7424048b5604b9010000008b75008d76f83b75087305ff5528cd87897500c746fc01000040890e568b75008d76f03b75087305ff5528cd85897500c746fc030000008956088b1424895604c706602945b183c702710e8d64240cb8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc1895d00c743fc030000008b1424895308897304893b8b7c241c8b7424188b5424148b4c241057565251e8fbfeffff89c757b8506566b1e88e38e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24088b3f8d1c7d0100000083fb01750abf00fb67b1e98c00000089df83c70489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870101000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000e9251000008d642410b8780566b18b5d04ff236a016a01e9fc0900008d642408bff83f69b1e92109000089f783fe0b0f85b8040000ff7104ff71088b710c8b7e0c8b7f048b3f83ff050f859c0000008d6424048b7e0c8b7f048b3783fe05757d8b4704ff77088b5c2404e8ec9de4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7035c2a45b16a016a01548b44240ce80da0f1ff5f8d64240c578b4424048b7424188b5424148b4c24108b5c240c895c240c89c38b0424894c2410895424148974241883c408e9a2fcffff8d6424088d642408b8a48b67b18b5d04ff238b7c24088b1f8b7c2408ff7704ba010000008b7d008d7ff83b7d087305ff5528cd4c897d00c747fc010000408917578b4d008d49f03b4d087305ff5528cd48894d00c741fc030000008b54240489d78951088b1424895104c701f42a45b183c302710e8d642414b8f80466b18b5d04ff238b55008d52f03b55087305ff5528cdca895500c742fc030000008b0424894208894a04891a528b760c8b0657ff742408e85616000089c68b3e83ff0d75126a0189f0bb03000000e82b24e3ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470803000000897704c70717000000578b7c242c8b7424288b5424248b4c242057565251ff7424148b442428bb204069b1e86f1700008b7c241483ff010f85520100008b75008d76f03b75087303ff5528897500c746fc03000000c7460801000000c74604cc6866b15f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d46866b1c7071b00000057b8506566b1e8ac34e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24108b3f8d1c7d0100000083fb01750abf804069b1e98800000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777389f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf804069b1b90d0000008d77048d7a04d1e9f3a489d98b7c24108d77048d7a0ad1e9f3a48062ffbf89d7578b7c240c8b3fb801000000e9eb0400008d64241cb8780566b18b5d04ff238b75008d76f03b75087305ff5528cd01897500c746fc03000000c7460801000000c74604cc6866b15f893e8b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000897708c74704d46866b1c7071b00000057e85d33e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f00000057b8506566b1e82233e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24108b3f8d1c7d0100000083fb01750abf804069b1e98800000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777389f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf804069b1b90d0000008d77048d7a04d1e9f3a489d98b7c24108d77048d7a0ad1e9f3a48062ffbf89d7578b7c240c8b3fb801000000e9560200008d64241cb8780566b18b5d04ff2383ff0d0f85690100008b79048b1789d68b0289c383f809757fba102169b189c8bb01000000e8606bffff89c28b328b7d008d7fe83b7d087305ff5528cd44897d00c747fc05000000c747100100000089570c897708c7470401000000c7070b000000578b4424048b7424188b5424148b4c24108b5c240c895c240c89c38b0424894c2410895424148974241883c408e9faf7ffff8d64240889da83fa030f85970000008b4424088b7c24148b7424108b54240c57565289cbe859c5ffff89c783ff01750e8d642404b8904069b18b5d04ff238b3f8b178b0424ff1289c78d6424048b3783fe0d751e89f8bb03000000c7442410010000008b3c24897c240c83c40ce9e01fe3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c2100089f7578b4424048b7424188b5424148b4c24108b5c240c895c240c89c38b0424894c2410895424148974241883c408e920f7ffff8d6424088d642404bff44069b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb82c4169b1e8ca2be3ff89c7eb05bf2c4169b157b801000000e86e83f1ff89c757b801000000e8ed15000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c747043c4169b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c21000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8afefffff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e86382f1ff89c757b801000000e84615000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c418c21000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8a4eeffff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e85881f1ff89c757b801000000e89f14000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c418c21000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8504169b1e8e728e3ff89c7eb05bf504169b157b801000000e88b80f1ff89c757b801000000e83614000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704604169b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c210008b3783fe0175288b77048b7f08893424897c24048d6424045f83ff03750aff34246a03e9e4040000bf01000000eb138b77048b3689f73b650c7305ff552ccd80ebbe578b7c24088b378b7c24088b7f04b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b3c24897a04c7024c3245b183c602710e8d642410b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f08895704893757bb010000008b7c240cf7c70100000075288b570489de83c602710e8d642414b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642414b8a84566b18b5d04ff23b801000000e8fd13000089c3bad0a766b18b44240ce8b944e6ff8b7c240883ff03750489c7eb0cbb784169b1e84646e6ff89c7578b7c240c83ff037507bf080e66b1eb05bfec1166b18b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e81a26e3ff89c7eb00578b7c242c8b7424288b5424248b4c242068204069b157565251ff74241cff7424288b442420bb01000000e80a14000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f8d642408893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e83925e3ff89c7eb008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e82224e3ff89c7eb00578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e887e8ffffe8827bf1ff89c757b801000000e88521000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704604169b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c410c21000f6442404010f85960000008b7c24048b3f8b742404ff7604ff37ba803066b18b442408bb03000000e8ee3ce1ff89c78b34243bf775068d642404eb2e8b34248b368d3475010000008b1789d18d1455010000003bf2753f5e8d76048d7f043bc9f3a674068d64240ceb308b54240483c202710e8d642414b8f80466b18b5d04ff235e891424897424043b650c7303ff552ce96affffff8d642410bf01000000eb098d642408bf0300000083ff03750abf010000008b3424eb0abf01000000e973fafffff7c60100000075288b4e0489fa83c202710e8d642408b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ff057c07bf03000000eb05bf01000000ebb8f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e80b22e3ff89c7eb0057bf5c4269b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8404369b1e8c421e3ff89c7eb05bf404369b157bf504369b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8784369b1e87821e3ff89c6eb05be784369b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2408893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938e80c1f000089c757bf884369b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8b04369b1e89b20e3ff89c7eb05bfb04369b18b55008d52f43b55087305ff5528cd80895500c742fc02000000c74204010000005e89328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8eb1fe3ff89c7eb008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8d41ee3ff89c7eb00578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e839e3ffffe83476f1ff89c757b801000000e8831d000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704604169b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c40cc21000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8c04369b1e8c01de3ff89c7eb05bfc04369b157b801000000e86475f1ff89c757b801000000e8171d000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704bc3069b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c21000f4000000|@18788,1,@3722|27,0,@18736 106,0,0 176,0,@8519 190,0,@9455 265,0,@10704 270,1,@4985 305,0,1 318,0,7 342,0,@15042 362,0,4 383,0,16777215 441,0,0 520,0,0 529,0,6 562,0,0 599,0,@10566 632,0,1 641,0,20 655,0,@9465 678,0,@18739 752,1,@5210 789,0,@8520 803,1,@6630 871,0,@13837 894,0,0 970,0,@8521 984,0,@9455 1042,1,@8522 1060,0,1 1065,1,@4973 1102,0,0 1109,0,1 1118,0,11 1152,0,@18742 1157,1,@8523 1201,0,0 1208,0,@10756 1247,0,@10757 1253,0,13 1259,0,@10704 1264,1,@4985 1299,0,1 1312,0,7 1336,0,@18745 1356,0,4 1377,0,16777215 1431,0,0 1440,0,@18745 1445,0,6 1489,0,0 1503,0,@9465 1541,0,0 1548,0,@10756 1587,0,@10757 1593,0,13 1599,1,@4985 1634,0,1 1647,0,7 1653,0,@10704 1658,1,@4985 1693,0,1 1706,0,7 1730,0,@18745 1750,0,4 1771,0,16777215 1825,0,0 1834,0,@18745 1839,0,6 1883,0,0 1897,0,@9465 1932,0,@18389 1939,0,0 1944,1,@8431 1981,0,0 1994,0,0 2000,0,5 2091,1,@8471 2107,0,@18746 2141,0,1 2149,0,0 2164,1,@4973 2197,0,0 2204,0,1 2213,0,11 2281,0,@18749 2320,0,0 2327,0,1 2337,0,@18753 2342,1,@4980 2351,0,@18753 2357,0,0 2362,1,@6589 2370,0,0 2375,1,@8526 2410,0,1 2417,0,0 2424,0,1 2438,0,0 2445,0,@18754 2483,0,12 2553,1,@8500 2562,0,@9473 2592,0,@9473 2620,0,@10237 2629,1,@6589 2637,0,0 2642,1,@8527 2677,0,1 2684,0,0 2691,0,1 2705,0,0 2747,0,12 2820,1,@8500 2829,0,@9473 2859,0,@9473 2887,0,@10237 2896,1,@6589 2904,0,0 2909,1,@8528 2944,0,1 2951,0,0 2958,0,1 2972,0,0 3014,0,12 3059,0,0 3066,0,1 3076,0,@18755 3081,1,@4980 3090,0,@18755 3096,0,0 3101,1,@6589 3109,0,0 3114,1,@8529 3149,0,1 3156,0,0 3163,0,1 3177,0,0 3184,0,@18756 3222,0,12 3270,0,0 3310,0,0 3380,0,@8530 3394,0,@9455 3442,0,0 3473,0,@9455 3508,0,@10224 3518,0,0 3523,1,@8531 3530,0,@11313 3539,1,@5472 3557,0,@18757 3562,1,@5475 3579,0,@9545 3586,0,@9628 3619,0,0 3628,0,6 3661,0,0 3698,0,@10566 3731,0,1 3740,0,20 3779,0,0 3786,0,1 3798,1,@4980 3824,0,@18742 3845,0,0 3850,1,@8534 3885,0,0 3956,0,0 3965,0,20 4004,0,0 4011,0,1 4023,1,@4980 4060,0,0 4097,0,@10072 4132,0,@10072 4167,0,@10066 4202,0,@10072 4235,0,1 4244,0,20 4283,0,0 4290,0,1 4302,1,@4980 4318,0,0 4385,1,@8500 4390,1,@6589 4398,0,0 4403,1,@8540 4438,0,1 4445,0,0 4452,0,1 4466,0,0 4473,0,@18756 4511,0,12 4548,0,@9967 4557,0,1 4562,1,@4896 4641,0,@9455 4676,0,0 4687,0,1 4697,0,0 4707,0,0 4739,0,@9455 4770,0,1 4777,0,0 4818,0,0 4825,0,1 4837,1,@4980 4847,0,@18765 4886,0,0 4893,0,1 4903,0,@18778 4908,1,@4980 4917,0,@18778 4923,0,@18779 4962,0,0 4969,0,1 4979,0,@18782 4984,1,@4980 4993,0,@18782 5026,0,0 5136,1,@8541 5144,0,@18783 5183,0,0 5190,0,1 5200,0,@18786 5205,1,@4980 5214,0,@18786 5247,0,0 5314,0,0 5323,0,20 5362,0,0 5369,0,1 5381,1,@4980 5418,0,0 5455,0,@10072 5490,0,@10072 5525,0,@10066 5560,0,@10072 5593,0,1 5602,0,20 5641,0,0 5648,0,1 5660,1,@4980 5676,0,0 5743,1,@8500 5748,1,@6589 5756,0,0 5761,1,@8542 5796,0,1 5803,0,0 5810,0,1 5824,0,0 5831,0,@18756 5869,0,12 5914,0,0 5921,0,1 5931,0,@18787 5936,1,@4980 5945,0,@18787 5951,0,0 5956,1,@6589 5964,0,0 5969,1,@8543 6004,0,1 6011,0,0 6018,0,1 6032,0,0 6039,0,@18503 6077,0,12 8519:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e97568e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3697|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8520:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3698|81,0,0 91,0,0 8521:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9e166e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3699|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8522:D3,376|3b650c7305ff552ccd098b3889fe83ff09756fff70048b40088b7c240c8b7424085756e8d8ffffff89c78b3783fe0d751a89f85bc7442408010000008b3c24897c240483c404e9a10de3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c2080089f783fe050f85d30000008b70048b78088b368b3f8b1789df2bfa710ab8f80466b18b5d04ff2383c70183ff017d0ab8d02469b18b5d04ff2383ff017e488b54240883ef02710ab8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff128b5c2404e85865e4ff89c7eb3283fe017d0ab8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2080083ff0375068b4004c20800b8802569b18b5d04ff23f40000|@18425,1,@3700|56,0,0 71,1,@4973 104,0,0 123,0,11 160,0,@9455 178,0,@18415 202,0,@9455 240,0,0 256,1,@5181 270,0,@18418 310,0,2 345,0,8 364,0,@18421 8523:D3,496|3b650c7305ff552ccd0953a8010f853d010000ff30ff70048b5c24088b4424108b7c24208b74241c8b5424188b4c24145756525189da89c38b442414ff1289c7578b5c24148b7c24188b7424248b5424208b4c241c68284069b1575652518b44241ce849cfffff89c7578b5c24188b7c241c8b7424288b5424248b4c242068284069b1575652518b442420e8dcd5ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb0c8d642404b801000000c21400f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e86617e3ff89c7eb00578b7c24248b7424208b54241c8b4c24188b5c241457565251538b4424188b5c2420e83ffeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c21400f4|@10030,1,@3703|86,0,@18743 99,1,@8492 127,0,@18743 140,1,@8496 175,0,0 288,0,@10072 321,0,0 330,0,20 341,0,0 383,0,0 390,0,1 402,1,@4980 8524:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18744,1,@3702|18,1,@8525 8525:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9f609e3ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3701|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8526:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3704|16,0,0 27,0,@9455 74,0,@10071 8527:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3705|16,0,0 27,0,@9455 74,0,@10071 8528:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3706|16,0,0 27,0,@9455 74,0,@10071 8529:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3707|16,0,0 27,0,@9455 74,0,@10071 8530:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9895fe4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3708|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8531:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb750a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@3709|25,0,0 42,0,@9455 8532:D3,52|3b650c7305ff552ccd018b388b3f8b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700083445b1c3f400|@18759,1,@3711|45,0,@8533 8533:D3,128|3b650c7305ff552ccd0589d68b388b3f8b560489d08b128d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d989c68d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37706b803000000c3b801000000c383ff017f06b803000000c3b801000000c3f4000000|@18758,1,@3710|68,0,0 75,0,1 82,0,-1 96,0,1 102,0,0 113,0,1 119,0,0 8534:D3,3080|3b650c7305ff552ccd0953a8010f85140400008b30ff70048b3c2483ff010f858c0200008d6424088b3eff37ff7704ff76048b5c24288b4424148b7c24248b7424208b54241c8b4c24185756525189da89c38b442414ff1289c7578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c010000008b742404897708c747044c5266b1c707170000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604044269b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e88515e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d64240c897704c7070f000000576a016a018b7c241483ff037516bf244269b18b378934248b7f04897c2404e95e0900008b7c240c8b378d1c750100000083fb01750abf00fb67b1e98a00000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ff00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d989ff8d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000e93b0700008d642410b8780566b18b5d04ff238b168b3aff7204ff76046a016a018b74241c83fe037516bf244269b18b378934248b7f04897c2404e9360200008b378d1c750100000083fb01750abf00fb67b1e98800000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87fa00000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043220d1efc6443a013d8062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000eb1c8d642418b8780566b18b5d04ff238d642404b8304269b18b5d04ff23f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e86d0de3ff89c7eb0057bf5c4269b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8744269b1e8260de3ff89c7eb05bf744269b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404893c24c7442404041266b1ff3424ff7424088b5c243c8b4424288b7c24388b7424348b5424308b4c242c5756525189da89c38b442424ff1289c7578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c010000008b742414897708c747044c5266b1c707170000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604044269b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e89d10e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f00000057bf904269b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8b84269b1e8780be3ff89c7eb05bfb84269b157bf5c4269b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8c84269b1e82c0be3ff89c7eb05bfc84269b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b3c24893b8d64240483fb0175068b7c2404eb0b8b442404e8e004000089c7578b7c242083c70257710e8d642428b8f80466b18b5d04ff23ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff34245756525153508b4424408b5c2420e877f8ffff89c38d6424088b0424e8e904000089c7578b7c24088b378d0c750100000083f901750abfc85466b1e98000000089ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f87f200000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c642042ec642052ec642062e89ff8d77048d7a07d1e9f3a48062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000eb0e8d642428b8780566b18b5d04ff23f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8c208e3ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e82a04000089c68b55008d52f03b55087305ff5528cd40895500c742fc03000000c74208010000008b7c2424897a04c7020d0000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470cf06567b1895708c74704745266b1c707070000008b45008d40ec3b45087305ff5528cdc0894500c740fc040000008b142489500c8d642404897008897804c7000b00000083c424c21c00f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8c507e3ff89c7eb0057bf5c4269b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8e44269b1e87e07e3ff89c7eb05bfe44269b18b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404893c24c7442404041266b1ff34248b7424088b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7073c5c66b18b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e84606e3ff89c6eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b048b7c240c893b83fb0175065883c410eb0c8b0424e8650200008d6424148b3c24897c241c83c41ce9b6020000f400|@18777,1,@3717|118,0,0 132,0,@10398 138,0,11 171,0,@18760 206,0,0 215,0,20 248,0,0 255,1,@4985 290,0,1 309,0,7 328,0,@18762 368,0,@15042 388,0,4 409,0,16777215 467,0,0 544,0,0 553,0,6 586,0,0 623,0,@10566 656,0,1 665,0,20 679,0,@9465 712,0,@18762 748,0,@15042 768,0,4 789,0,16777215 847,0,0 922,0,0 931,0,6 964,0,0 1001,0,@10566 1034,0,1 1043,0,20 1054,0,@9465 1068,0,@18763 1112,0,0 1119,0,1 1131,1,@4980 1141,0,@18765 1180,0,0 1187,0,1 1197,0,@18767 1202,1,@4980 1211,0,@18767 1244,0,0 1295,0,@9630 1374,0,0 1388,0,@10398 1394,0,11 1427,0,@18760 1462,0,0 1471,0,20 1504,0,0 1511,1,@4985 1546,0,1 1565,0,7 1571,0,@18769 1610,0,0 1617,0,1 1627,0,@18772 1632,1,@4980 1641,0,@18772 1647,0,@18765 1686,0,0 1693,0,1 1703,0,@18773 1708,1,@4980 1717,0,@18773 1750,0,0 1848,1,@8535 1870,0,@9455 1939,1,@8536 1965,0,@10438 1985,0,4 2006,0,16777215 2064,0,0 2131,0,0 2140,0,6 2173,0,0 2210,0,@10566 2243,0,1 2252,0,20 2263,0,@9465 2307,0,0 2314,0,1 2326,1,@4980 2363,0,0 2370,1,@8537 2405,0,0 2418,0,6 2451,0,@13329 2461,0,@10400 2467,0,3 2515,0,5 2560,0,0 2567,0,1 2579,1,@4980 2589,0,@18765 2628,0,0 2635,0,1 2645,0,@18775 2650,1,@4980 2659,0,@18775 2692,0,0 2743,0,@9630 2783,0,0 2792,0,6 2825,0,0 2862,0,@10566 2895,0,1 2904,0,20 2943,0,0 2950,0,1 2962,1,@4980 2999,0,0 3055,1,@8538 3074,1,@8539 8535:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3712| 8536:D3,220|3b650c7305ff552ccd0989c789d8f7c7010000000f8585000000ff378b7f0489c389f8e8d8ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb01c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e98404e3ffc3f40000|@11273,1,@3713|71,0,0 144,0,0 153,0,20 195,0,0 202,0,1 212,1,@4980 8537:D3,212|3b650c7305ff552ccd01a8010f8581000000ff308b4004e8e4ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb06b8c43966b1c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e99b03e3ffc3f400|@11273,1,@3714|59,0,0 132,0,0 141,0,20 148,0,@10072 188,0,0 195,0,1 205,1,@4980 8538:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3715| 8539:D3,212|3b650c7305ff552ccd01a8010f8581000000ff308b4004e8e4ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb06b8c43966b1c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e94f02e3ffc3f400|@11273,1,@3716|59,0,0 132,0,0 141,0,20 148,0,@10072 188,0,0 195,0,1 205,1,@4980 8540:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3718|16,0,0 27,0,@9455 74,0,@10071 8541:D3,212|3b650c7305ff552ccd01a8010f8581000000ff308b4004e8e4ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb06b8c43966b1c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e90301e3ffc3f400|@11273,1,@3719|59,0,0 132,0,0 141,0,20 148,0,@10072 188,0,0 195,0,1 205,1,@4980 8542:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3720|16,0,0 27,0,@9455 74,0,@10071 8543:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3721|16,0,0 27,0,@9455 74,0,@10071 8544:D3,468|3b650c7305ff552ccd0d89d18b3b8b5304bb010000008b75008d76f83b75087305ff5528cd8f897500c746fc01000040891e568b75008d76f03b75087305ff5528cd87897500c746fc030000008956088b1c2489da895e04c7063c4845b183c702710e8d642404b8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc7895d00c743fc0300000089d2895308897304893b8b7c24088b71048b51088b490c684c4469b157565251e83ca9ffff89c757b8b86467b1e81304e3ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e89ac3ffffe8adf6e2ff89c757b801000000e8cc02000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977108b342489770c8d642404c7470801000000c747048c4469b18b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c404c20400f400|@18795,1,@3728|18,0,0 90,0,@8545 104,0,@9455 163,0,@18792 172,1,@8485 180,0,@13309 185,1,@4985 220,0,1 239,0,7 251,0,0 318,1,@8500 323,1,@4975 331,0,0 336,1,@8548 371,0,1 378,0,0 385,0,0 405,0,0 412,0,@18794 456,0,12 8545:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e99949e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3724|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8546:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18793,1,@3726|18,1,@8547 8547:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e93ef0e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3725|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8548:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3727|16,0,0 27,0,@9455 74,0,@10071 8549:D3,44|3b650c7305ff552ccd0d89d789c28b7f048b078b742404ff342489742404895c240889d3e917000000f40000|@18804,1,@3730|37,1,@8550 8550:D3,300|3b650c7305ff552ccd09a8010f85040100008b30ff70048b3e8b5604ff76083bdf7502eb318b338d3475010000008b0789c18d0445010000003bf00f85bb0000008d73048d7f043bc9f3a674098d642404e9aa0000008b7c24108b7f0c8b720c8b4f0489ca8b0983f90375378b460489c18b0083f8037507b803000000eb05b80100000083f803751a8b7a0489ce8b76043bfe7507bf03000000eb05bf01000000eb4789d18b1283fa0175398b460489c28b0083f8017507b803000000eb05b80100000083f803751c89cf8b7f0c89d68b760c3bfe7507bf03000000eb05bf01000000eb05bf0100000083ff0375075883c404c208008d642404eb048d642404588b7424088b5424048954240489742408e9eafeffff8b542404b8010000008b3c24897c240883c408ff22f4|@18803,1,@3729|121,0,1 128,0,0 150,0,1 157,0,0 185,0,1 192,0,0 216,0,1 223,0,0 230,0,0 283,0,0 8551:D3,24|3b650c7305ff552ccd01b8bc4569b18b5d04ff23f4000000|@18809,1,@3731|11,0,@18806 8552:D3,104|3b650c7305ff552ccd058b7d008d7ff03b7d087305ff5528cd05897d00c747fc03000000c7470801000000894704c7070d0000008b45008d40ec3b45087305ff5528cd84894500c740fc040000008b720889700c8b7204897008897804c700004d45b1c3f4000000|@18823,1,@3736|39,0,0 48,0,6 95,0,@8553 8553:D3,36|3b650c7305ff552ccd058b5a048b72088b520c52ff74240489742408e917000000f40000|@18822,1,@3735|29,1,@8554 8554:D3,428|3b650c7305ff552ccd0950538b7c24048b3789f28d34750100000083fe090f8ee500000089ff89d68d14550100000083fa09730e8d642408b808cf66b18b5d04ff2389ff8d34750100000083fe09750489feeb64ba050000008d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41c7460400000000ba09000000d1ea891689ff0fb64f04884e0489ff0fb64f05884e0589ff0fb64f06884e0689ff0fb64f07884e078066ffbf81fe804669b17507bf03000000eb378b3e8d3c7d0100000083ff097524bf804669b18d76048d7f0433c983c1043bc9f3a67507bf03000000eb05bf01000000eb05bf0100000083ff0375068b442410eb5e8b7c240c8b3f83ff07754f8b7c240c8b7f04f7c70100000075288b7f04f7c70100000075168b7f0483ff017507bf03000000eb05bf01000000eb05bf01000000eb05bf0100000083ff03750e8b7c240c8b7f048b3f8b4704eb2c8b44240ce85400000089c3bab87567b18b4424045e8d642404897424088b3c24897c240483c404e9794df1ff8b3883ff0d75138b78048b3f89f83b650c7305ff552ccd01ebe6ebbcf4|@18821,1,@3734|57,0,@11630 85,0,2 131,0,0 136,0,4 186,0,@18813 193,0,1 214,0,@18813 236,0,1 243,0,0 250,0,0 311,0,1 318,0,0 325,0,0 332,0,0 360,1,@8555 367,0,@13551 395,1,@6587 8555:D3,168|3b650c7305ff552ccd018b3883ff0b0f85850000008b58048b400c8b700c89f78b76048b0e89ca83f901750ab88c4669b18b5d04ff2389d683fe05755c8b7f048b3783fe0575488b4704ff7708e81a63e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703b44f45b16a016a01548b44240ce83b65f1ff588d642408e971ffffffb8a48b67b18b5d04ff23c3b8f84669b18b5d04ff23f4000000|@18820,1,@3733|45,0,@18814 78,1,@5210 115,0,@8556 129,1,@6630 144,0,@13837 155,0,@18817 8556:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3732|81,0,0 91,0,0 8557:D3,36|3b650c7305ff552ccd058b5a048b72088b520c52ff74240489742408e9cbfcfffff40000|@18822,1,@3737|29,1,@8554 8558:D3,308|3b650c7305ff552ccd018b3089f783fe0d75178b78048b078b3883ff037506b801000000c3e9d6ffffff83ff0b0f858d0000008b58048b780c8b570c89d68b52048b1283fa057507ba03000000eb05ba0100000083fa03740989f2b901000000eb6489f78b7f048b3783fe0575488b4704ff7708e86761e4ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703cc5145b16a016a01548b44240ce88863f1ff588d642408e94affffffb8a48b67b18b5d04ff23b801000000c3f6c30175248b430489ce83c602710ab8f80466b18b5d04ff2389c389f13b650c7305ff552ccd8eebd78b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04891689f78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f4000000|@18825,1,@3740|32,0,0 73,0,1 80,0,0 92,0,0 117,1,@5210 154,0,@8559 168,1,@6630 183,0,@13837 193,0,0 214,0,@9455 8559:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3739|81,0,0 91,0,0 8560:D3,176|3b650c7305ff552ccd093bc37506b801000000c3bfcc5366b18b75008d76f83b75087305ff5528cd89897500c746fc01000040893ebf010000008d14fdf9ffffff83ca058b7d008d7ff03b7d087305ff5528cd4d897d00c747fc03000000895708897704c7070d0000005783c002710e8d642404b8f80466b18b5d04ff23e87dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4000000|@10221,1,@3741|15,0,0 21,0,@10423 54,0,0 102,0,6 117,0,@9455 8561:D3,276|3b650c7305ff552ccd0953a8010f85f50000008b38ff70048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004cc6567b18938bb03000000e82fd1f0ff89c7578b0424e8e0d1f0ff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e088b3c24897e048d642404c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54240489d3895708897704c70705000000578b442404e821ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@3742|53,0,@13326 60,0,1 65,1,@6475 76,1,@6476 111,0,1 120,0,0 165,0,3 209,0,2 269,0,0 8562:D3,20|3b650c7305ff552ccd01b8b04869b1c3f4000000|@18830,1,@3743|11,0,@18828 8563:D3,1404|3b650c7305ff552ccd095053ba0c6368b18b4424048b1c24e89fd7f7ff89c7f7c701000000750bff378b7c24188b7f34eb0c8d642408b801000000c21000f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9690400008b3f8b3781feec01c0b075058b7f08eb0e8d64240cb8483366b18b5d04ff23578b7c24208b3f8d1c7d0100000083fb01750abe704969b1e98c00000089df83c71a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f503000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf704969b1b91b0000008d77048d7a04d1e9f3a48b7c242089d98d77048d7a11d1e9f3a48062ffbf89d68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7070700000057b801000000e8f1f0f4ff89c7ba48f167b1576878f167b16a018b4424188b5c2410e8d5fcf4ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706884969b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057b801000000e827f0f4ff89c7ba48f167b1576878f167b16a018b4424208b5c2414e80bfcf4ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706ac4969b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ba106968b18b4424286878f167b168dc6968b1bb78f167b1e82637f8ff89c28b442410ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707906a68b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424148b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470803000000c7470401000000c70701000000578b542408b801000000ff1289c68b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100000089378b74240c8b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642404897804c700030000008b7c240c8b7f0c8b74240c8b5630c707030000008b3c24897c241083c410ff228d642410b8780566b18b5d04ff23f7c701000000753b8b178b77048b0a81f9ec01c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781feec01c0b075088b7f08e947fbffff8d64240cb8483366b18b5d04ff23f4|@18836,1,@3744|13,0,@16477 25,1,@7452 55,0,0 79,0,@4656 130,0,0 140,0,@10769 155,0,@4656 171,0,@9999 200,0,@18831 220,0,4 241,0,16777215 299,0,0 308,0,@18831 313,0,13 380,0,3 386,0,0 391,1,@7128 398,0,@14942 404,0,@14943 419,1,@7139 454,0,0 491,0,@10448 526,0,@18832 562,0,0 569,0,0 576,0,0 582,0,0 588,0,0 593,1,@7128 600,0,@14942 606,0,@14943 621,1,@7139 656,0,0 693,0,@10448 728,0,@18834 764,0,0 771,0,0 778,0,0 784,0,0 790,0,@16516 799,0,@14943 804,0,@16520 809,0,@14943 814,1,@7488 857,0,0 894,0,@16528 967,0,@16528 1040,0,@16528 1114,0,0 1121,0,1 1128,0,0 1134,0,0 1144,0,0 1228,0,1 1248,0,1 1269,0,@9465 1295,0,@4656 1346,0,0 1360,0,@11247 1375,0,@4656 1394,0,@9999 8564:D3,24|3b650c7305ff552ccd01b80c4a69b18b5d04ff23f4000000|@18842,1,@3745|11,0,@18839 8565:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3746|16,0,0 27,0,@9455 74,0,@10071 8566:D3,240|3b650c7305ff552ccd093bc37506b801000000c389c683c602710ab8f80466b18b5d04ff2383fe017d0ab8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707030000008b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd49897d00c747fc04000000c7470c01000000c7470803000000897704c707170000005783c002710e8d642404b8f80466b18b5d04ff23e83cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@3747|15,0,0 28,0,@9455 43,0,@11112 83,0,1 118,0,8 151,0,0 158,0,1 167,0,11 182,0,@9455 8567:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3748|16,0,0 27,0,@9455 74,0,@10071 8568:D3,24|3b650c7305ff552ccd01b8bc4b69b18b5d04ff23f4000000|@18842,1,@3749|11,0,@18858 8569:D3,24|3b650c7305ff552ccd01b8004c69b18b5d04ff23f4000000|@18865,1,@3750|11,0,@18862 8570:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e97d35e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3751|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8571:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e98134e4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3752|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8572:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3753|16,0,0 27,0,@9455 74,0,@10071 8573:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3754|16,0,0 27,0,@9455 74,0,@10071 8574:D3,120|3b650c7305ff552ccd0589c7528b34248b460889fbe87200000089c78b3783fe0d751c89f88b3c248b5f048d642404ff3424c744240401000000e985dae2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248b76048d642404897008897804c70017000000c3f4|@18842,1,@3756|22,1,@8575 54,0,0 59,1,@4973 92,0,0 114,0,11 8575:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9fed9e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3755|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8576:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9eed8e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3757|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8577:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9ded7e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3758|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8578:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18887,1,@3759|27,0,@9455 68,0,0 115,0,8 8579:D3,16|3b650c7305ff552ccd058b4204c3f400|@18842,1,@3760| 8580:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@3761|11,0,0 8581:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3762|16,0,0 27,0,@9455 74,0,@10071 8582:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3763|16,0,0 27,0,@9455 74,0,@10071 8583:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@10819,1,@3764|11,0,0 8584:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9352de4ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3765|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8585:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3766|16,0,0 27,0,@9455 74,0,@10071 8586:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3767|16,0,0 27,0,@9455 74,0,@10071 8587:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3768|16,0,0 27,0,@9455 74,0,@10071 8588:D3,172|3b650c7305ff552ccd093bc37506b801000000c383f8017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd09897500c746fc02000000894604c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff23e87effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@3769|15,0,0 26,0,@11112 66,0,0 101,0,8 116,0,@9455 8589:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3770|16,0,0 27,0,@9455 74,0,@10071 8590:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3771|15,0,0 26,0,@9455 73,0,@10071 8591:D3,376|3b650c7305ff552ccd098b3889fe83ff09756fff70048b40088b7c240c8b7424085756e8d8ffffff89c78b3783fe0d751a89f85bc7442408010000008b3c24897c240483c404e941d1e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c2080089f783fe050f85d30000008b70048b78088b368b3f8b1789df2bfa710ab8f80466b18b5d04ff2383c70183ff017d0ab8d02469b18b5d04ff2383ff017e488b54240883ef02710ab8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff128b5c2404e8f828e4ff89c7eb3283fe017d0ab8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2080083ff0375068b4004c20800b8202769b18b5d04ff23f40000|@18438,1,@3772|56,0,0 71,1,@4973 104,0,0 123,0,11 160,0,@9455 178,0,@18415 202,0,@9455 240,0,0 256,1,@5181 270,0,@18418 310,0,2 345,0,8 364,0,@18435 8592:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3773|16,0,0 27,0,@9455 74,0,@10071 8593:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3774|16,0,0 27,0,@9455 74,0,@10071 8594:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3776| 8595:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3777|27,0,@9455 68,0,0 115,0,8 8596:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3778| 8597:D3,336|3b650c7305ff552ccd098b7c240c8b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff017507bfe46966b1eb728b3f8b3781fe0402c0b075058b7f08eb0ab8483366b18b5d04ff2383ff0374158b7c2404c70701000000895f04b801000000c210006a016a018b7c24188b742410545756e8b6000000585b8b7424108b5424088b4c2404894c24088954240c897424108b3c24897c240483c404e9b133fffff7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd0d897d00c747fc010000008917eb1389f73b650c7305ff552ccd89ebbdbf0100000083ff01750ab8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e93effffffb8483366b18b5d04ff23f4000000|@18900,1,@3786|34,0,@4659 85,0,0 95,0,@10769 107,0,@4659 119,0,@9999 139,0,0 147,0,0 170,1,@8598 211,1,@8452 232,0,@4659 283,0,0 293,0,@11247 308,0,@4659 323,0,@9999 8598:D3,1204|3b650c7305ff552ccd0983f80175158b7c240cc70701000000895f04b801000000c20c00ff30ff7004ff33ff7304ff73088b7c24108b3fff770c8b076a016a0189e3e89d74f1ffff7424048b7c24208b3f8b7f0c8b7f048b3f83ff050f859a0000008b75008d76f03b75087303ff5528897500c746fc030000008b7c2420897e085f897e04c706090000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240c89570489378b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2410897b048b7c2414893b8b4424188b74242c8b5424288b4c2424894c2424895424288974242c83c420e904ffffff8b7c240c8b078b5c242ce8bd03000089c7578b54241c8b442430ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e897d7e2ff89c7eb00576a016a018b7c24088b3f83ff0d75358b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c707f87245b1c7042401000000897c2404e9920000008b542434b803000000ff1289c68b5424388b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071c7345b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424348977088b742414897704c70709000000578b7c24248b7f048b3783fe010f85e30000008b4f048b7c24248b57088b7c24248b7f048b1f89de83fb05750e8d64243cb8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b3feb038b7f04eb058b7f048b3f8b75008d76f83b75087305ff5528cd86897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000c7470c01000000894f08897704c707030000008b75008d76f03b75087305ff5528cd84897500c746fc03000000895608897e04c706d04166b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542424895708897704c7070b000000eb2c8b7d008d7ff03b7d087303ff5528897d00c747fc030000008b7424248977088b742424897704c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc020000008b542428895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b7c2428897b048b3c24893b8d6424046a016a018b7c24448b7424405457568b442440e881fbffff8b1c24ff74240483fb0175068b7c240ceb0b8b44240ce8f201000089c78b74244c893e5f897e04b80100000083c43cc20c00f40000|@18899,1,@3785|21,0,0 29,0,0 67,1,@6665 135,0,4 263,1,@8599 311,0,0 378,0,1 387,0,20 426,0,0 433,0,1 445,1,@4980 502,0,@8600 509,0,0 527,0,1 573,0,@8601 616,0,0 622,0,1 655,0,0 715,0,4 769,0,@13866 867,0,0 879,0,1 917,0,@10184 959,0,5 1005,0,5 1174,1,@8602 1191,0,0 8599:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9bac7e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3781|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8600:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3782| 8601:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3783|27,0,@9455 68,0,0 115,0,8 8602:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3784| 8603:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3787| 8604:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3788| 8605:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3789| 8606:D3,2220|3b650c7305ff552ccd0d52538b3089f783fe050f85a40100008b78048b078b7710ff368b7f14ff376a016a018b5c24148b7c242c8b7424288b5424248b4c241c575652548304240c5189da8b5c2424e8acffffffff3424ff7424086a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c707fc7d45b1c7042401000000897c2404e9920000008b542438b803000000ff1289c68b5424348b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c707207e45b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b5c24408b7c243c578b442428e82a08000089c383fb0175068b5c2404eb0b8b442404e8ec27000089c383fb0175068b7c2414eb0b8b442414e83a28000089c7578b5424048b442440ff128b7c24448b7424408b54243868d05369b15756528b5c2434e8a028000089c78b74243c8b142489168d642408897e04b80100000083c42cc2140089fe83ff070f85c7000000ff70048b780cff37be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7424208b5424248b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c943966b18957088977048b342489378b4d008d49f43b4d087305ff5528cd80894d00c741fc02000000c741040100000089396a016a018b7c24188b47048b7c24308b74242c8b5424288b5c2420575652516a01680c5a69b154830424185389c28b4424348b5c2430ff12ff3424ff7424146a01e98804000089f783fe030f8508010000ff7004ff7008be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7424208b5424248b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c943966b18957088977048b342489378b4d008d49f43b4d087305ff5528cd80894d00c741fc02000000c741040100000089396a016a018b7c24188b47048b7c24308b74242c8b5424288b5c2420575652516a01685c5a69b154830424185389c28b4424348b5c242cff12ff34248b7c24086a016a018b5c24248b7424388b5424348b4c242c575652548304240c5189da8b4424308b5c2434e87cfcffffff3424ff7424088b7c241c8b07e8f65b000089c6bf01000000e9eb02000083ff09753d8d6424088b78088b3f83ff01750ab8b07766b18b5d04ff238b3f8b47048b5c240ce80b5d000089c78b742408c70601000000897e04b801000000c214008b78048b7708ff368b770cff368b7710ff368b771cff368b076a016a018b5c241c8b7c24348b7424308b54242c8b4c2424575652548304240c5189da8b5c242ce8d7fbffffff34248b4424088b7424308b5424348b7d008d7fec3b7d087305ff5528cd45897d00c747fc040000008b4c2418894f0c895708897704c70724d745b18b7424348b5424308b4c2428575652518b5c241ce8c225000089c7578b542438b803000000ff1289c757bfffffffff8b55008d52f83b55087305ff5528cd80895500c742fc01000040893abf2c0268b18b75008d76f83b75087305ff5528cd84897500c746fc01000040893e8b5d008d5bf03b5d087305ff5528cd44895d00c743fc03000000897308895304c703050000008b3c24893a8b7c2438893e8b44241ce88d5d00008b5c243c8b7c243857e85b04000089c7578b74241c89f783fe01750e8d642430b8c05a69b18b5d04ff2389ff8b3f8b47088b5c243ce84b5e000089c7578b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c240c8938e876d0e2ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b742404897708c7470401000000c707030000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000008b34248973048d642404893b83fb0175068b542408eb0b8b442408e88d5e000089c28b342489f783fe017d0e8d64242cb8948966b18b5d04ff238b75008d76f43b75087305ff5528cd84897500c746fc0200000089ff897e048d642404c706050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707110000008b7424308916897e04b80100000083c428c21400f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c240889fb83ff0175068b5c2414eb0b8b442414e8205e000089c383fb0175035feb0e8b0424e8725e000089c78d6424048b742438893e8b3c24897e048d642404b80100000083c42cc21400f644240401753e8b7c24048b0789ffff77048b5c2438e89a5e00008b74240489f783fe01750489c2eb0989fbe83865000089c25e891424897424043b650c7303ff552cebbb5ebf0100000083c404f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c24108b07e8df57000089c7b801000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240489fb83ff01750489c7eb07e8e064000089c7578b45008d40f03b45087303ff5528894500c740fc03000000c74008010000008b74240489f7897004c7002900000089fff7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037507e8cdc8e2ffeb008b7c24388b7424348b54242c68885c69b15756528b5c2428e8b221000089c78b7424308b142489168d642404897e04b80100000083c424c21400f4|@19002,1,@3882|139,0,@8607 146,0,0 164,0,1 210,0,@8608 253,0,0 259,0,1 292,0,0 326,1,@8609 348,1,@8641 370,1,@8642 400,0,@18931 412,1,@8644 435,0,0 465,0,0 535,0,@10068 579,0,0 619,0,@18980 673,0,0 743,0,@10068 787,0,0 827,0,@18982 914,1,@8677 921,0,0 950,0,@10986 969,1,@8681 981,0,0 989,0,0 1121,0,@8682 1146,1,@8644 1158,0,1 1168,0,-1 1201,0,@15112 1267,0,2 1287,1,@8683 1301,1,@8609 1324,0,@18986 1345,1,@8684 1379,0,0 1390,1,@4985 1425,0,1 1444,0,7 1487,0,0 1493,0,1 1551,1,@8685 1572,0,@11112 1618,0,2 1653,0,8 1667,0,0 1760,1,@8686 1778,1,@8687 1805,0,0 1838,1,@8688 1860,1,@8696 1886,0,0 1961,1,@8677 1968,0,0 2048,1,@8697 2082,0,0 2097,0,20 2138,0,0 2145,0,1 2155,1,@4980 2174,0,@18999 2186,1,@8644 2209,0,0 8607:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3790| 8608:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3791|27,0,@9455 68,0,0 115,0,8 8609:D3,24|3b650c7305ff552ccd098b74240489742404e915000000f4|@18930,1,@3823|19,1,@8610 8610:D3,348|3b650c7305ff552ccd0953a8010f853a0100008b38ff7004ff37ff77048b74240489f7ff760489ff8b3f8b3783fe050f850a010000ff7704ff77088b542418b803000000ff1289c7578b3c248b742408893e8b7c24248b742404893e8b7c240c8b3783fe01750789ff8b7f10eb05bf010000008b7424148b76048b0e89ca83f905750e8d642420b8508f67b18b5d04ff2383fa0175168b76088b1683fa0375078b76048b06eb038b4604eb058b76048b06ba305069b18b5c2424ff74241cff74241457e8a800000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c7470401000000c70703000000578b7c2424578b44241c8b5c2420e8effeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c41cc204008d642414b86c5369b18b5d04ff238d642404b801000000c20400f40000|@10030,1,@3822|64,0,1 111,0,0 136,0,@13866 178,0,@18903 196,1,@8611 244,0,0 250,0,1 324,0,@18928 338,0,0 8611:D3,3044|3b650c7305ff552ccd0d5250538b7c24148b7f048b3783fe050f85c1010000ff7704ff77088b7c240489fe83ff010f8526010000be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7c24248b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c943966b1897e088b7c240c89fb897e048b3c24893e8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000c74704010000008937578b7c241483ff037407bfc43966b1eb288b5424188b7a0889d28b720c89d28b521068485069b1ff7424045756528b44241ce80e6fffff89c7578b54241c8b7a0889d28b720c89d28b521068845069b1ff7424085756528b4424208b5c2428e8cd7bffff89c7578b5424208b7a0889d28b720c89d28b521068c45069b1ff74240c5756528b4424248b5c242ce85c82ffff89c7578b7c24108b07e85e0e000089c6bf01000000e9dd080000ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7c24248b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c943966b1897a088b7c240c897a048b3c24893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c7470401000000891757bf0100000089f6e9020500008b7c24148b078b1c24e81e0e000089c7576a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c707689145b1c7042401000000897c2404e9920000008b542424b803000000ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54240c895708897704c7078c9145b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff34248b5424088b442410ff1289c7578b7c24288b7f048b1789d683fa05750e8d642420b8005169b18b5d04ff2383fe0375058b7f08eb038b7f04578b7c242883ff030f85ac0000008d6424048b3c248b3783fe0d75126a0189f8bb03000000e864b6e2ff89c6eb338b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000c746080300000089ff897e04c706170000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c74704cc6866b189378b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c74604d46866b1c7061b000000e9c00000008b3c2483ff0175108d6424048b7c241c8b7704e9a8000000b801000000e8061af1ff89c7578b7c240489fb83ff017d0e8d642428b8a84566b18b5d04ff23b801000000e8cc0d000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642408c7470801000000c74704445169b18b74241c8b760489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c783966b1897708c74704984566b1c70701000000578b7424048b3e83ff0d75126a0189f0bb01000000e8c9b4e2ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080100000089f6897704c70717000000578b7424088b3e83ff0d75126a0189f0bb05000000e878b4e2ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080500000089f6897704c70717000000578b74240c8b3e83ff0d75126a0189f0bb07000000e827b4e2ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080700000089f6897704c707170000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7062900000083c404f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e893bfe2ff89c6eb008b142489d783fa0175098d64241c89f0c20c008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c418c20c00f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b45008d40f43b45087303ff5528894500c740fc020000008b7c241c8b7f04897804c700809245b1ff742414ff742404ff742418ff742410bb445169b1e8030b000089c7578b7c241c83ff037407bfc43966b1eb5b8b45008d40e83b45087303ff5528894500c740fc050000008b7c24208b771089701089ff8b770c89700c89ff8b7f088978088b7c2410897804c700789945b1ff742418ff742408ff74241cff742414bb8c5269b1e8970a000089c7578b45008d40e83b45087303ff5528894500c740fc050000008b7c24248b771089701089ff8b770c89700c89ff8b7f088978088b7c2414897804c700089b45b1ff74241cff74240cff742420ff742418bbe05269b1e83b0a000089c7578b45008d40e83b45087303ff5528894500c740fc050000008b7c24288b771089701089ff8b770c89700c89ff8b7f088978088b7c2418897804c700989c45b1ff742420ff742410ff742424ff74241cbb345369b1e8df09000089c7578b7c24188b07e85515000089c6bf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c783966b18b742410897708c74704984566b1c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b54240489168b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b74240889328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c89378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e83ebce2ff89c6eb008b142489d783fa0175098d64243489f0c20c008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c430c20c00f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c783966b18b7424288b7604897708c74704984566b1c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b54240489168b55008d52f43b55087305ff5528cdc0895500c742fc020000008972048b74240889328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74240c89378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e892bae2ff89c6eb008b142489d783fa0175098d64242c89f0c20c008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c428c20c00f4|@18927,1,@3821|53,0,0 119,0,@10068 169,0,0 186,0,@10072 210,0,@18904 226,1,@8485 251,0,@18906 271,1,@8492 296,0,@18908 316,1,@8496 330,1,@8618 337,0,0 347,0,0 413,0,@10068 461,0,0 469,0,0 490,1,@8619 545,0,@8620 552,0,0 570,0,1 616,0,@8621 659,0,0 665,0,1 698,0,0 748,0,@18910 803,0,1 808,1,@4973 845,0,0 852,0,1 863,0,11 896,0,0 903,0,@10756 941,0,@10757 947,0,13 981,0,0 986,1,@6589 1009,0,@10224 1019,0,0 1024,1,@8622 1059,0,1 1066,0,0 1073,0,1 1093,0,0 1100,0,@18913 1144,0,12 1177,0,@10066 1187,0,@10223 1193,0,0 1214,0,0 1219,1,@4973 1256,0,0 1263,0,0 1274,0,11 1295,0,2 1300,1,@4973 1337,0,0 1344,0,2 1355,0,11 1376,0,3 1381,1,@4973 1418,0,0 1425,0,3 1436,0,11 1469,0,0 1615,0,0 1624,0,20 1666,0,0 1673,0,1 1685,1,@4980 1752,0,15 1785,0,@9455 1847,0,@8623 1868,0,@18913 1873,1,@8624 1890,0,@10072 1955,0,@8631 1976,0,@18920 1981,1,@8624 2047,0,@8634 2068,0,@18923 2073,1,@8624 2139,0,@8637 2160,0,@18926 2165,1,@8624 2179,1,@8640 2186,0,0 2278,0,@10066 2292,0,@10223 2298,0,0 2331,0,0 2471,0,0 2480,0,20 2519,0,0 2526,0,1 2538,1,@4980 2605,0,15 2703,0,@10066 2720,0,@10223 2726,0,0 2759,0,0 2899,0,0 2908,0,20 2947,0,0 2954,0,1 2966,1,@4980 3033,0,15 8612:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18905,1,@3793|18,1,@8613 8613:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e932ade2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3792|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8614:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18907,1,@3795|18,1,@8615 8615:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9f6abe2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3794|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8616:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18909,1,@3797|18,1,@8617 8617:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9baaae2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3796|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8618:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3798|69,0,0 8619:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e94aa9e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3799|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8620:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3800| 8621:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3801|27,0,@9455 68,0,0 115,0,8 8622:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3802|15,0,0 26,0,@9455 73,0,@10071 8623:D3,16|3b650c7305ff552ccd0d8b4204c3f400|@18914,1,@3803| 8624:D3,916|3b650c7305ff552ccd0950538b7c24188b3f8b7424188b7604b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b342489f1897204c7024c9645b183c702710e8d64240cb8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd86897500c746fc0300000089c9894e08895604893e56ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b75008d76f43b75087305ff5528cd80897500c746fc020000008b1424895604c706489745b1568b74242483fe017d0e8d642418b8a84566b18b5d04ff238b5c242457b801000000e8d703000089c3bad0a766b18b442420e853d0e5ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70603000000ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b7424048977088b74240c89f08977048b342489378b7424208b5d008d5bf43b5d087305ff5528cdc1895d00c743fc02000000897304893b8b542418ff1289c7578b7c24048b07e84304000089c7be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc483fe0175065f83c408eb308b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c7071f00000083c408578b7c240c8b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8f275ffff8b7c2404ff378b7c241489fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c241457e8a408f1ff89c7578b7c243083ff017d0e8d642424b8a84566b18b5d04ff238b5c2430b801000000e86003000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714030000008977108b342489770c8d642404c74708010000008b34248977048d6424088b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c414c21000f40000|@18917,1,@3810|26,0,0 98,0,@8625 112,0,@9455 159,0,0 226,0,@8626 245,0,@10224 260,0,0 265,1,@8627 272,0,@11313 281,1,@5472 318,0,1 323,0,0 457,1,@8629 464,0,0 580,0,15 595,0,0 662,1,@8500 680,0,@9473 705,0,@9473 728,0,@10237 740,1,@6589 761,0,@10224 775,0,0 780,1,@8630 815,0,1 829,0,1 849,0,0 903,0,12 8625:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e989fbe3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3804|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8626:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@18915,1,@3805|31,0,@9455 8627:D3,140|3b650c7305ff552ccd093bc37508b801000000c204008b7424048b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000897708894704c707289845b15783c002710e8d642404b8f80466b18b5d04ff238b7c240857e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@3807|15,0,0 60,0,@8628 75,0,@9455 8628:D3,120|3b650c7305ff552ccd0589d78b308b50048b4f082bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f400|@18916,1,@3806|25,0,@9455 66,0,1 113,0,8 8629:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3808|69,0,0 8630:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3809|15,0,0 26,0,@9455 73,0,@10071 8631:D3,64|3b650c7305ff552ccd0d89d7ff77048b77088b570c8b4f10565251ff74241087d88b7c241087c7897c2410c74424144c5269b1e99056ffff8d642404f4000000|@18914,1,@3813|47,0,@18918 52,1,@8485 8632:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18919,1,@3812|18,1,@8633 8633:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9aa9fe2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3811|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8634:D3,64|3b650c7305ff552ccd0d89d7ff77048b77088b570c8b4f10565251ff74241087d88b7c241087c7897c2410c7442414a05269b1e9ec61ffff8d642404f4000000|@18914,1,@3816|47,0,@18921 52,1,@8492 8635:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18922,1,@3815|18,1,@8636 8636:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e91a9ee2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3814|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8637:D3,64|3b650c7305ff552ccd0d89d7ff77048b77088b570c8b4f10565251ff74241087d88b7c241087c7897c2410c7442414f45269b1e91867ffff8d642404f4000000|@18914,1,@3819|47,0,@18924 52,1,@8496 8638:D3,24|3b650c7305ff552ccd018b388b58088b07e916000000f400|@18925,1,@3818|18,1,@8639 8639:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e98a9ce2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3817|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8640:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3820|69,0,0 8641:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3824| 8642:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3825| 8643:D3,24|3b650c7305ff552ccd09b8d85369b18b5d04ff23f4000000|@18934,1,@3826|11,0,@18932 8644:D3,52|3b650c7305ff552ccd096a016a018b7c24148b7424108b5424188b4c240c5457565251e820000000588d642404c21000f4000000|@18979,1,@3861|36,1,@8645 8645:D3,920|3b650c7305ff552ccd0950536a016a018b74240c8b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c70770a345b1c7042401000000897c2404e9920000008b542420b803000000ff1289c68b54241c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70794a345b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c240c894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff742408bf010000008b742410f7c60100000075288b4e0489fa83c202710e8d642418b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ff017d068d642418eb4781ffffffff017d3b89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b7c2414eb0e8d642418b8383066b18b5d04ff23f7c701000000755b8b178b77048b1a8b4a048b55008d52f83b55087305ff5528cdca895500c742fc01000000890a8b0c248b41fcc1e008c1e80783c8013bd8720e8d64241cb8003566b18b5d04ff2389c9895459fe89f73b650c7305ff552ccd80eb9d8b3c248b77fcc1e608c1ee0783ce01bf0100000083fe010f85870000008d64240489f86a016a018b7c24288b74242c8b5424308b4c2424575652ff7424145168445469b18d5c2418e8320200005f5e8d64240483fe0375208d6424108b7c24188b342489378d642404c7470403000000b801000000c214008b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420801000000897a04c70229000000eb7c89f183e90289f283ea0289f083e8028b1c248b5c43fe83fb01750e8d64241cb8b07766b18b5d04ff238b038b5d008d5bf43b5d087305ff5528cdc7895d00c743fc0200000089430489138b55008d52f43b55087305ff5528cdca895500c742fc02000000897a04891a89ce89d73b650c7305ff552ccdc0e9f4fefffff7c70100000075218b0f8b77048b0983f90d750e89f73b650c7305ff552ccd84ebdebf01000000eb05bf0300000083ff03750b89d0e879a3e2ff89c2eb008b342489f783fe0175088d64241489d6eb2f8b75008d76f03b75087305ff5528cd84897500c746fc0300000089560889ff897e048d642404c7061f00000083c4108b7c24148937c7470401000000b801000000c21400f40000|@18978,1,@3860|60,0,@8646 67,0,0 85,0,1 131,0,@8647 174,0,0 180,0,1 213,0,0 234,0,0 265,0,@9455 303,0,16777215 355,0,0 373,0,@9964 452,0,@10015 497,0,0 545,0,@18935 554,1,@8648 589,0,1 594,0,0 630,0,0 639,0,20 677,0,@10986 804,0,0 811,0,1 823,1,@4980 889,0,15 905,0,0 910,0,0 8646:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@3827| 8647:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@3828|27,0,@9455 68,0,0 115,0,8 8648:D3,232|3b650c7305ff552ccd0953a8010f85bc000000ff30ff70046a016a018b7c242c8b7424288b5424248b4c24208b5c241c8b4424185756525153508b4424208d5c2418e8b9ffffff5e5a8d6424048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff342457ff74240cff74242cff74242c8b54242c8b4c24288b5c24248b4424208b74241c8944241c8b442410895c24208b5c240c894c2424895424288b3c24897c242c8b7c2404897c24308b7c2408897c24348974241883c418e9310000008d64241c5ebfac3966b18b1789168b7f04897e04b801000000c21800f4|@11273,1,@3859|199,1,@8649 209,0,@10070 224,0,0 8649:D3,2820|8d7c24983b7d0c7305ff5530cd098b78048b1789d683fa0375508b77048b4708ff338b54241c89f3ff128b5c2418e8e50a000089c78b75008d76f43b75087305ff5528cd80897500c746fc020000005a895604893e8b7c241c8937c7470401000000b801000000c21c0083fe050f85aa020000ff7704ff7708ff770c8b3c24ff378b7c24048b7f0cff30ff33ff7304ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b7424348b4c24308b55008d52ec3b55087305ff5528cdc2895500c742fc04000000c7420c943966b1894a088972048b342489328b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b5424308b4c24388b5c242c8b75008d76d83b75087305ff5528cd8e897500c746fc09000000895e208b1c24895e1c8b5c2418895e188b5c2420895e14897e10894e0c8b4c2414894e08895604c70648b145b1566a016a015489f8bbf45469b1e82a0ef1ffff34248b442408e82a2bf8ffe82518000089c757ba0c6368b18b4424048b5c2430e88085f7ff89c7f7c7010000000f85450100008d642428ff378b7c24048b3f8d3c7d01000000578b3c2489fe83ff01750e8d642404bbc00567b1e99200000089f689f783c60489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87df00000089d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c24088d77048d7b04d1e9f3a489d783c7088d64240489fed1eec604333ad1efc6443b010a8063ffbfbf0c8046b48b07e80461e0ffbf0c8046b48b078b781057bb6c1e66b1e8878ce0ff68fc5469b1ba0c5669b1b801000000e8a721000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24048938bf5406c0b08b17ff128b1424e8491700008d642408b8545769b18b5d04ff238d642418b8780566b18b5d04ff236a016a01548b44243cbba45769b1e89e0cf1ff8d64240458e8b4c4feffe8b328000089c7576a016a01ff74240cff74240ce931010000ff77048b7f08ff30ff33ff73048b770489f06a016a018b1683fa017573ff76048b5424288b442430ff1289c78b3783fe0d75116a0189f88b5c2404e85f91e2ff89c6eb308b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000008b1424895608897e04c706170000005f3b7c24107507bf03000000eb05bf01000000893424897c2404eb168b5c242ce87a28000089c7893c24c7442404010000008b0424ff7424046a016a018b5c24288b7c24348b7424388b54243c8b4c242c545756525189da8b5c2434ff125e5f8b55008d52f43b55087305ff5528cdc0895500c742fc020000008b4c2410894a0489328b74240c83fe0375175e83fe0375068d642418eb098d642418bf01000000eb098d64241cbf010000008b74241c8916897e04b801000000c21c008b7c240483ff01751f5f83ff01750b8d642404bf03000000eb098d642404bf01000000e9860000008b7c24048b3f8b742404ff7604f64424040175698b742404ff368b742408ff76048b07e8b210f1ff89c78b3783fe0d75418b7f048b7424048b363bfe7507bf03000000eb05bf0100000083ff03751d8b7424085a895424088974240c3b650c7303ff552c83c408e96cffffff8d642414eb048d642414bf01000000eb098d64240cbf0100000083ff0375448b54241c8b442458ff1289c68b7c24388b7f088b1783fa0175198b57048b7c24303bfa7507bf03000000eb05bf01000000eb05bf01000000893424897c2404e9c4040000f64424080174318b44240ce8672dffffba3c2869b18b5c2458ff742420ff742420e8c12dffff89c7893c24c744240401000000e98c040000bf010000008b742408f7c60100000075288b4e0489fa83c202710e8d642444b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c245c8b3f8b74245c8b7604b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc030000008972088b3424897204c70260d245b183c702710e8d64244cb8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd84897500c746fc030000008b0c24894e08895604893e568b74240883fe017d0e8d642450b8a84566b18b5d04ff2357b8010000008b5c240ce8ce27000089c3bad0a766b18b442414e876b8e5ff89c6ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b1424895704c70788d445b18b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c70203000000b9010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c897e088b7c2408897e048b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424348957048937578b442424e8562bffffba3c2869b1ff3424ff7424388b5c2414e8b12bffff89c78d642404578b7c24048b07e81b28000089c7be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc483fe0175065f83c404eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a895708897704c7071f00000083c404578b7c24488b3f8d1c7d0100000083fb01750abf145969b1e99100000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777989f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24488d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320150d1efc6443a02298062ffbf89d7578b7c24108b3fb801000000eb0e8d642458b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8fe5cffff8b7c2408ff378b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017520bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240457e8aeeff0ff89c7578b7c242083ff017d0e8d642468b8a84566b18b5d04ff23b8010000008b5c2420e87e26000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c030000008b542408895618c7461403000000897e105f897e0cc74608010000005f8d642404897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000897c2418c744241c0100000083c418ff3424ff7424088b7c242c8b07e88d25000089c7be01000000f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc483fe0175068b7c2404eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542404895708897704c7071f0000008b55008d52f43b55087305ff5528cd80895500c742fc020000008b742434897204893a8b7c243083ff0375295f83ff0375188d6424445f83ff057507bf03000000eb05bf01000000eb098d642448bf01000000eb098d64244cbf010000008b74241c8916897e04b801000000c21c00f400|@18977,1,@3858|47,1,@8650 94,0,0 99,0,0 144,0,0 214,0,@10068 258,0,0 344,0,@8651 357,0,@18940 362,1,@6630 374,1,@7517 379,1,@8660 387,0,@16477 400,1,@7452 453,0,@12121 475,0,4 496,0,16777215 554,0,0 609,0,@19863 616,1,@4819 621,0,@19863 632,0,@9844 637,1,@4839 642,0,@18941 647,0,@18951 652,0,0 657,1,@8668 699,0,@4797 711,1,@8661 720,0,@18969 734,0,@9465 753,0,@18972 758,1,@6630 768,1,@8411 773,1,@8671 857,1,@4973 894,0,0 909,0,11 921,0,1 928,0,0 946,1,@8672 959,0,0 1070,0,0 1081,0,0 1095,0,0 1122,0,1 1133,0,0 1178,1,@6635 1205,0,1 1212,0,0 1261,0,0 1272,0,0 1319,0,1 1326,0,0 1333,0,0 1361,1,@8467 1366,0,@18443 1383,1,@8468 1396,0,0 1406,0,0 1437,0,@9455 1477,0,0 1547,0,@8673 1561,0,@9455 1622,0,@10224 1633,0,0 1642,1,@8674 1649,0,@11313 1658,1,@5472 1665,0,0 1732,0,@8676 1767,0,1 1772,0,0 1890,1,@8467 1895,0,@18443 1911,1,@8468 1929,1,@8677 1936,0,0 2046,0,15 2073,0,@18976 2093,0,4 2114,0,16777215 2168,0,0 2235,0,0 2246,0,@9465 2318,1,@8500 2334,0,@9473 2361,0,@9473 2386,0,@10237 2398,1,@6589 2419,0,@10224 2429,0,0 2438,1,@8678 2473,0,1 2487,0,1 2501,0,0 2550,0,12 2562,0,0 2583,1,@8677 2590,0,0 2703,0,15 2768,0,1 2775,0,0 2786,0,0 2797,0,0 2811,0,0 8650:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e96a89e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3829|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8651:D3,1824|3b650c7305ff552ccd0552508b7c24048b7f188b7f088b3783fe010f8500040000ff77048b7c24088b7f1483ff010f85ac0000008b7c24088b57048b442404ff1289c68b3e83ff0d75156a0189f08b5c2404e83d88e2ff89c78d64240ceb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000005a895708897704c7071700000083c4088b3783fe0d751789f8ff3424bb03000000c744240401000000e9e687e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c38b7c24088b7f1483ff030f85ce0200008b7c24088b4710e82c08f1ff89c78b3783fe0575218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f858c0100008b7c24088b7f0c8b3f8b7424088b760c8b5604b9010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76f03b75087305ff5528cd84897500c746fc030000008956088b1424895604c7067cb845b183c702710e8d642410b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc0894500c740fc030000008b142489500889700489388b7c240c8b5704ff1289c68b3e83ff0d75116a0189f08b5c2408e8a886e2ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542404895708897704c707170000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b54240c8b5208895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742044c5469b189328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e94a0300008b7c24088b57048b442404ff1289c78b3783fe0d75156a0189f88b5c2404e8ae85e2ff89c68d642408eb318b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000005a895608897e04c7061700000083c4048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c74708010000005a8b5208895704c7070d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c74204585469b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000e9160200008b7c24088b57048b442404ff1289c78b3783fe0d751b89f85b8b742408c7442408010000008974240483c404e9a584e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000005e897008897804c7001700000083c408c38b7c24048b7f1483ff010f85c1000000bf2c06c0b08b37bf3406c0b08b3fba3c06c0b08b1aba4406c0b08b0a8b55008d52e83b55087305ff5528cdca895500c742fc05000000895a10894a0c897208897a04c702100666b18b7c24048b47188b7c24048b7f1c8b7424048b7620576a0156528b5c2410e89cfafeff89c78d6424088b3783fe0d751789f8ff3424bb03000000c744240401000000e9d483e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c38b7c24048b7f1483ff03756bbf2c06c0b08b37bf3406c0b08b3fba3c06c0b08b1aba4406c0b08b128b4d008d49e83b4d087305ff5528cdcc894d00c741fc0500000089591089510c897108897904c701100666b18b7c24048b47185b8b3c248b771c5f8b57206a015251ff74240c89742410e9c7020000bf2c06c0b08b37bf3406c0b08b3fba3c06c0b08b1aba4406c0b08b128b4d008d49e83b4d087305ff5528cdcc894d00c741fc0500000089591089510c897108897904c701100666b18b7c24048b47185b8b3c248b771c5f8b57206a015251ff74240c89742410e964f9fefff7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e9248fe2ffc3f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8e98ee2ff89c7eb00578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e84e53ffffe849e6f0ff89c757b801000000e84406000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704184766b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c410c3f4000000|@18939,1,@3837|83,1,@4973 124,0,0 137,0,11 157,0,1 165,0,0 170,1,@4973 203,0,0 210,0,1 219,0,11 248,1,@6635 295,0,0 331,0,0 401,0,@8652 415,0,@9455 488,1,@4973 525,0,0 541,0,11 574,0,0 590,0,6 623,0,@18936 689,0,0 698,0,20 738,1,@4973 779,0,0 792,0,11 828,0,0 841,0,6 874,0,@18937 940,0,0 949,0,20 991,0,0 1003,1,@4973 1036,0,0 1049,0,11 1074,0,@4792 1081,0,@4793 1088,0,@4794 1095,0,@4795 1141,0,@9473 1176,1,@8463 1199,0,1 1207,0,0 1212,1,@4973 1245,0,0 1252,0,1 1261,0,11 1279,0,@4792 1286,0,@4793 1293,0,@4794 1300,0,@4795 1346,0,@9473 1381,1,@8653 1386,0,@4792 1393,0,@4793 1400,0,@4794 1407,0,@4795 1453,0,@9473 1488,1,@8463 1527,0,0 1534,0,1 1544,1,@4980 1584,0,0 1591,0,1 1603,1,@4980 1619,0,0 1686,1,@8500 1691,1,@6589 1699,0,0 1704,1,@8658 1739,0,1 1746,0,0 1753,0,1 1767,0,0 1774,0,@10237 1812,0,12 8652:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e959d9e3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3830|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8653:D3,572|3b650c7305ff552ccd0950538b7c24048b470ce8e000f1ff89c78b3783fe0575218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85cd0000008b3c248b375f8b7f04b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a088b3c24897a04c702c8bb45b183c602710e8d642408b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f088957048937578b442418e86302000089c68b7c241c8b5424148b4c2410ff3424575652518b44241cbb883966b1e83414ffff89c78d642404578b7c24048b3fb801000000eb538b442414e8ab02000089c1ff742404ff7424048b5424208b5c24188b4424148b742410894424108b442404895c2414bbc43966b1894c24188954241c8b3c24897c24208974240c83c40ce9d113ffff8d642410f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e80250ffffe8fde2f0ff89c757b801000000e89402000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc7470801000000c74704184766b15e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c21000f400|@18938,1,@3835|20,1,@6635 67,0,0 93,0,0 163,0,@8654 177,0,@9455 229,1,@8655 259,0,@10067 264,1,@8465 282,0,0 293,1,@8656 336,0,@10072 363,1,@8465 434,1,@8500 439,1,@6589 447,0,0 452,1,@8657 487,0,1 494,0,0 501,0,1 515,0,0 522,0,@10237 560,0,12 8654:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e90dd6e3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3831|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8655:D3,116|3b650c7305ff552ccd01a801755e8b308b40048b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000c7470801000000c7470401000000893757e8bdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3832|48,0,0 55,0,0 109,0,0 8656:D3,116|3b650c7305ff552ccd01a801755e8b308b40048b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000c7470801000000c7470401000000893757e8bdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3833|48,0,0 55,0,0 109,0,0 8657:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3834|16,0,0 27,0,@9455 74,0,@10071 8658:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3836|16,0,0 27,0,@9455 74,0,@10071 8659:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@16570,1,@3838|11,0,0 8660:D3,92|3b650c7305ff552ccd01a8017547ff308b40048b3c248b7f0483ff03752ee8ddffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9abffffffb801000000c3f4|@9865,1,@3839|86,0,0 8661:D3,40|3b650c7305ff552ccd058b5a048b7208680c5569b168345569b1ff7424088974240ce965000000f4|@18950,1,@3846|17,0,@18942 22,0,@18944 35,1,@8664 8662:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@18943,1,@3840|11,0,0 8663:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@18943,1,@3841|11,0,0 8664:D3,88|3b650c7305ff552ccd09538b7c24108b7424108b54240c8b4c240857ff742404565251bb01000000e83f00000089c78b7424103bfe74125ab8a00c66b18b3c24897c240c83c40cff228d642404b801000000c20c00f40000|@18949,1,@3845|36,0,0 41,1,@8665 57,0,@9515 78,0,0 8665:D3,524|3b650c7305ff552ccd098b3089f783fe0575078b442414c2140089fe83ff0975388b7804ff70088b54241489f8ff128b4424182b04248d642404710ab8f80466b18b5d04ff2383c00183f8017e03c21400b801000000c2140089f783fe077541ff70048b5424148b0424ff128b3c248b3f8d6424048d3c7d010000008b4424142bc7710ab8f80466b18b5d04ff2383c00183f8017e03c21400b801000000c2140083ff03750bff7004ff3424e9f50000008b7804ff7008ff700cff701083ef0103df53710e8d642410b8f80466b18b5d04ff238b5c2424e84401000089c783ff0175538b5424188b442408ff128b7c24248b7424208b54241c8b4c24188b5c24145756ff7424085268645569b15153ff7424288b442424bb01000000e86702000089c7578b5424188b44240cff12588d642410c21400ff378b54241c8b44240cff12ff742408ff74242cf64424040175408b7c24048b0789ffff77048b7c24308b74242c8b5424288b4c2424ff742404575652518b5c2424e883feffff89c25e891424897424043b650c7303ff552cebb98d6424088b5424188b44240cff125883c410c214008b3c2483ff017e2e8b542418b8a80d66b1ff128b342483ee02710e8d642408b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b4424182b04248d642404710ab8f80466b18b5d04ff2383c00183f8017e03c21400b801000000c21400f400|@18948,1,@3844|61,0,@9455 82,0,0 133,0,@9455 154,0,0 202,0,@9455 216,1,@8666 265,0,@18946 280,0,0 285,1,@8667 435,0,@9537 454,0,@9455 494,0,@9455 515,0,0 8666:D3,340|3b650c7305ff552ccd098b3089f783fe057506b801000000c389fe83ff09753d8b70083bf37f3089df2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c389f783fe0775468b78048b3f8d347d010000003bf37f3089df2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c383ff03753d8b70043bf37f3089df2bfe710ab8f80466b18b5d04ff2383c7018b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c38b70108b7d008d7ff83b7d087305ff5528cd48897d00c747fc01000000891f5657f644240401753a8b7c24048b0789ffff77048b74240489f783fe017507ba01000000eb0b89ff8b1fe8c6feffff89c25e891424897424043b650c7303ff552cebbf5883c404c3f4|@18945,1,@3842|20,0,0 46,0,@9455 88,0,0 123,0,@9455 165,0,0 189,0,@9455 231,0,0 299,0,0 8667:D3,1428|3b650c7305ff552ccd0989dea8010f857e0200008b38ff70048b1789d183fa0575148b542420b8a00c66b1ff12ff74241ce9a604000089ca83f9010f85a90000008b5c241c83ee0103de53710e8d642408b8f80466b18b5d04ff23ff7424188b74242c8b5424288b4c24208b5c24188b442414565251535089f88b5424148b5c2418ff1289c78d642408ff342457ff742428ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b44240c895c241cbb01000000894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e91affffff8d64241489d683fa090f858a0000008b4704ff77088b542424ff128b7c24282b3c248d642404710e8d642404b8f80466b18b5d04ff2383c701ff342457ff742428ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b44240c895c241cbb01000000894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e985feffff8d64241483fe070f8595000000ff77048b5424248b0424ff128b3c248b3f8d6424048d347d010000008b7c24242bfe710e8d642404b8f80466b18b5d04ff2383c701ff342457ff742428ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b44240c895c241cbb01000000894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e9e7fdffff8d642414ff7704ff77088b7c240889fe83ff01750b8d64240c8b442420c220008b7c24248b142483ea0103fa57710e8d642410b8f80466b18b5d04ff238b7c241483ff037505e9ea0000008b7c24303b7c24087f05e9db0000008b7c24302b7c2408710e8d642410b8f80466b18b5d04ff2383c7015657eb078b442420c22000f644240401756e8b7c24048b0789ffff77048b3883ff03752a8d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c404eb308b5c2404e8b3fbffff89c7f7c70100000075148b175e891424897424043b650c7303ff552ceb968d64240cbf01000000eb248b7d008d7ff83b7d087303ff5528897d00c747fc010000008b342489378d64240483c40483ff017507bf03000000eb05bf0100000083f70283f70283ff0375138b54242cb8a00c66b1ff12ff3424e9bf0000008d642408ff34248b3c2483ff017e2e8b542428b8a80d66b1ff128b342483ee02710e8d64240cb8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b7c24282b3c248d642404710e8d642404b8f80466b18b5d04ff2383c701ff342457ff742428ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b44240c895c241cbb01000000894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e9e4fbffff8d6424148b3c2483ff017e2e8b542430b8a80d66b1ff128b342483ee02710e8d642414b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b7c24242b3c248d642404710e8d64240cb8f80466b18b5d04ff2383c701ff742408ff74240457ff742434ff7424348b7424348b5424308b4c242c8b5c24288b442424894424248b442410895c24288b5c240c894c242c89542430897424348b3c24897c24388b7c2404897c243c8b7c2408897c244083c420e928fbffff8d6424188b3c2483ff017e2e8b542424b8a80d66b1ff128b342483ee02710e8d642408b8f80466b18b5d04ff238934243b650c7303ff552cebca8d6424048b7c24188b74241c2bfe710e8d642404b8f80466b18b5d04ff2383c701ff342457ff742428ff7424288b7424288b5424248b4c24208b5c241c8b442418894424188b44240c895c241cbb01000000894c242089542424897424288b3c24897c242c8b7c2404897c24308b7c2408897c243483c414e971faffff8d642414f4|@18947,1,@3843|39,0,@9515 82,0,@9455 183,0,0 275,0,@9455 332,0,0 433,0,@9455 490,0,0 589,0,@9455 642,0,@9455 737,1,@8666 776,0,0 824,0,1 831,0,0 851,0,@9515 885,0,@9537 904,0,@9455 948,0,@9455 1005,0,0 1069,0,@9537 1088,0,@9455 1132,0,@9455 1257,0,@9537 1276,0,@9455 1319,0,@9455 1376,0,0 8668:D3,20|3b650c7305ff552ccd058b7a048b07c3f4000000|@18952,1,@3847| 8669:D3,1820|3b650c7305ff552ccd018b700489f783fe037d06b8b4ab66b1c38b3089f28b3683fe010f850e0300008b7204ff7208ff720c83ef0257710e8d64240cb8f80466b18b5d04ff238b142489d783fa017d0e8d64240cbe185566b1e9dc01000089ff83ef02710e8d64240cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008978048930bf1c05c0b08b17ff1289c7578b74240489f783fe037d0abf185566b1e91801000089ff83ef02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf1c05c0b08b17ff1289c7578b7c240883ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c240c8938bf3c00c0b08b17ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b066b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c40c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707485669b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c389fe83ff037d06b8b4ab66b1c38b7a04ff7208ff720cff721083ee0256710e8d642410b8f80466b18b5d04ff238b142489d683fa017d0e8d642410be185566b1e9a102000089f683ee02710e8d642410b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bf1c05c0b08b17ff1289c7578b74240489f783fe037d0abf185566b1e9dd01000089ff83ef02710e8d642414b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf1c05c0b08b17ff1289c7578b74240889f783fe057d0abe185566b1e91801000089ff83ef02710e8d642418b8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf1405c0b08b17ff1289c7578b7c240c83ef02710e8d64241cb8f80466b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938bf1405c0b08b17ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704a0b066b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7068cb566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7078cb566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d64240483c4108b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b8b066b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460403000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707bc5669b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400403000000c70001000000c3f400|@18968,1,@3848|21,0,@11331 61,0,@9455 85,0,@10443 106,0,@9455 147,0,@4758 170,0,@10443 191,0,@9455 236,0,@4758 261,0,@9455 306,0,@4602 345,0,@11375 382,0,@10448 417,0,@11428 490,0,@10448 525,0,@11428 601,0,@11377 637,0,0 644,0,0 651,0,1 657,0,0 690,0,0 727,0,@10448 762,0,@18954 798,0,0 805,0,0 812,0,1 818,0,0 831,0,@11331 859,0,@9455 883,0,@10443 904,0,@9455 945,0,@4758 968,0,@10443 989,0,@9455 1034,0,@4758 1057,0,@10443 1078,0,@9455 1123,0,@4757 1148,0,@9455 1193,0,@4757 1232,0,@11375 1269,0,@10448 1304,0,@11428 1377,0,@10448 1412,0,@11428 1485,0,@10448 1520,0,@11428 1596,0,@11377 1632,0,0 1639,0,0 1646,0,1 1652,0,0 1685,0,0 1722,0,@10448 1757,0,@18961 1793,0,0 1800,0,0 1807,0,1 1813,0,0 8670:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@18973,1,@3849|11,0,0 8671:D3,96|3b650c7305ff552ccd01a801754aff308b40048b3c248b7f0483e70983ff01742ee8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a8ffffffb801000000c3f400|@9865,1,@3850|89,0,0 8672:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e95268e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3851|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8673:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e975bfe3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3852|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8674:D3,140|3b650c7305ff552ccd093bc37508b801000000c204008b7424048b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000897708894704c707fcd345b15783c002710e8d642404b8f80466b18b5d04ff238b7c240857e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@3854|15,0,0 60,0,@8675 75,0,@9455 8675:D3,120|3b650c7305ff552ccd0589d78b308b50048b4f082bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f400|@18974,1,@3853|25,0,@9455 66,0,1 113,0,8 8676:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@18975,1,@3855|31,0,@9455 8677:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3856|69,0,0 8678:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3857|15,0,0 26,0,@9455 73,0,@10071 8679:D3,48|3b650c7305ff552ccd018b388b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18981,1,@3862| 8680:D3,48|3b650c7305ff552ccd018b388b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@18981,1,@3863| 8681:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e98e63e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3864|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8682:D3,156|3b650c7305ff552ccd0d8b7a0cf7c701000000757c8b0f8b770483f801754e8b79048b77048b3683fe05753eb9305069b18b42048b720856576a0187c389cae8e4a8ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c38b07c389c183e902710ab8f80466b18b5d04ff2389c889f73b650c7305ff552ccd8de97cffffffb8643c66b18b5d04ff23f4|@18934,1,@3865|45,0,@18903 64,1,@8611 101,0,1 117,0,@9455 146,0,@10105 8683:D3,228|3b650c7305ff552ccd09a8010f85c80000008b38ff70048b378b7f048b178b0a83f9010f85a30000008b52048b4f048b47088b7d008d7ff03b7d087305ff5528cd4f897d00c747fc03000000895f08895704c707090000008b55008d52f03b55087305ff5528cdcb895500c742fc03000000894208894a04893a8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937578b442404e85dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c38d642404b8645a69b18b5d04ff23b801000000c3f4000000|@10030,1,@3866|84,0,4 209,0,@18983 219,0,0 8684:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9d660e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3867|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8685:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3868| 8686:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3869| 8687:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3870| 8688:D3,524|3b650c7305ff552ccd09538b3089f783fe010f85820000008b78088b3fba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52ec3b55087305ff5528cdc0895500c742fc04000000c7420c943966b1c742080c5b69b18b0c24894a0489328b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000891656576a01e93201000083ff03750b8b7804576a01e9d80000008d6424048b7808b801000000f7c7010000000f85bf0000008b178b77048b520c8b1283fa01750ab8b07766b18b5d04ff238b128b52048b0a83f9050f858c0000008b52048b0a83f9017d0ab8948966b18b5d04ff238b55008d52f43b55087305ff5528cdc3895500c742fc02000000894a04c702050000008b4d008d49f43b4d087305ff5528cdc5894d00c741fc02000000895104c701110000008b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81e93fffffffb86c5369b18b5d04ff23c3f644240401753e8b7c24048b0789ffff77048b5c240ce863feffff8b74240489f783fe01750489c2eb0989fbe89900000089c25e891424897424043b650c7303ff552cebbb5883c408c3f64424040175308b7c24048b0789ffff7704ff742410ff7424108b5c240ce8c100000089c25e891424897424043b650c7303ff552cebc95883c40cc3f4000000|@18998,1,@3878|30,0,0 91,0,@10068 98,0,@18989 139,0,0 178,0,0 210,0,@10986 246,0,@11112 286,0,2 321,0,8 376,0,@18928 431,1,@8690 491,1,@8691 8689:D3,24|3b650c7305ff552ccd01b8145b69b18b5d04ff23f4000000|@18993,1,@3871|11,0,@18990 8690:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3872| 8691:D3,372|3b650c7305ff552ccd09538b3889fe83ff0575208b78048b47048b5c240c8b7c240857e86001000089c7b801000000e9da00000089f783fe03753a8b78048b47048b5c240ce84602000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c2080083ff070f858c0000008b4004bf2c06c0b08b17bf3406c0b08b3fbe3c06c0b08b1ebe4406c0b08b0e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000895e10894e0c895608897e04c706100666b18b5c240c8b7c2408576a01689c5b69b156e8e9d1feff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d6424048938c2080058c20800f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b3c2489fb83ff0175078d642404c2080089db8d6424048b3c24897c240883c408e930020000f4000000|@18997,1,@3877|36,1,@8692 43,0,0 70,1,@8694 130,0,@4792 137,0,@4793 144,0,@4794 151,0,@4795 197,0,@9473 213,0,@18994 219,1,@8463 364,1,@8695 8692:D3,204|3b650c7305ff552ccd0989c753f7c7010000000f85a30000008b07ff7704bf2c06c0b08b17bf3406c0b08b3fbe3c06c0b08b1ebe4406c0b08b0e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000895e10894e0c895608897e04c706100666b18b7c240c576a01689c5b69b1568b5c2414e8c4d0feff89c7578b7c2410578b4424088b5c240ce86fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f4000000|@10030,1,@3874|31,0,@4792 38,0,@4793 45,0,@4794 52,0,@4795 98,0,@9473 110,0,@18994 120,1,@8463 193,0,0 8693:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@18996,1,@3873|11,0,0 8694:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e95a59e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8202769b18b5d04ff23f40000|@18438,1,@3875|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18435 8695:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3876| 8696:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3879| 8697:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3880| 8698:D3,24|3b650c7305ff552ccd09b8905c69b18b5d04ff23f4000000|@18934,1,@3881|11,0,@19000 8699:D3,1244|3b650c7305ff552ccd0d5250f6c3010f85a50300008b3bff73048b1789d683fa010f857b0100008b7f04be010000008b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757bf010000008b45008d40f83b45087305ff5528cd80894500c740fc010000408938ff7424148b74242c8b5424308b4c24348b5c24288b7d008d7fdc3b7d087305ff5528cd4f897d00c747fc0800000089471cc7471803000000895f14894f108b4c240c894f0c8957088977045e8937578b7424308b54242c8b4c24208b5c24188b7d008d7fdc3b7d087305ff5528cd4e897d00c747fc08000000895f1c894f188957148977108b74240889770c8b74240c8977088b742410897704c707a0e745b16a016a01ba205d69b1ff7424085754830424088b442418bb01000000e80c0400008b1c24ff74240483fb0175068b7c2430eb0b8b442430e83928020089c78b742428893e5f897e04b80100000083c41cc2200083fe030f85db0000008b77048b7f088b4c24188b5c24108b55008d52e83b55087305ff5528cdca895500c742fc05000000895a10894a0c59894a088b4c2404894a04c702d80c48b18b5c240c8b4d008d49e83b4d087305ff5528cdcc894d00c741fc0500000089591089510c8971088b742404897104c701600d48b1ff742404ff74240457ff742434ff742434ff7424348b7424348b5424308b5c24288b442424894424248b442410895c24288b5c240c894c242c895424308b542414897424348b3c24897c24388b7c2404897c243c8b7c2408897c244083c420e97efdffff8d642420ff77088b7f0cff376a016a018b44243c8b7c24188b7f048b7424208b5424388b4c24348b5c243c54ff74241857565251538b5c2428e878280200ff34248b5c24086a016a018b7c24408b74242c8b542444575652548304240c8b442424e834b3feffff3424ff742408be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b74244c8b5424508b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c943966b18957088977048b342489378b55008d52f43b55087305ff5528cd80895500c742fc02000000c7420401000000893a6a016a018b4424388b7c24588b7424548b4c24488b5c2440ff74240c5756526a015154830424185389c28b4424548b5c2450e861fcffffff3424ff7424088b7c24108b07e867eeffff89c7b801000000eb73ff742410ff7424188b7c24208b7424308b54242c8b4c24288b5c24248b45008d40e43b45087305ff5528cdce894500c740fc0600000089581489481089500c8970088b74240889700489388b1424ff1289c78d6424048b378b142489328b7f045e8d642404897e04b80100000083c404c22000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240483ff01750489c3eb0b8b5c2404e8fd2b020089c383fb0175068b5c2418eb0b8b442418e84b2c020089c383fb0175068b5c2424eb0b8b442424e8992c020089c383fb0175068b7c2454eb0b8b442454e8e72c020089c78b74244c893e5f897e04b80100000083c440c22000f4000000|@19393,1,@4259|43,0,0 135,0,0 143,0,0 227,0,1 331,0,@8700 340,0,@19004 359,0,0 364,1,@8701 391,1,@9064 408,0,0 486,0,@9065 538,0,@9066 700,1,@9067 740,1,@8446 752,0,0 822,0,@10068 866,0,0 941,1,@8677 948,0,0 1059,0,0 1147,1,@9072 1169,1,@9073 1191,1,@9074 1213,1,@9075 1230,0,0 8700:D3,120|3b650c7305ff552ccd0589d1ff308b7804ff7710ff77146a016a01ff71048b41088b590c8b79108b71148b51188b491cff7424105756ff742418ff74242452548304241c518b542420ff128d6424045f5e8d64240c8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@19003,1,@3883| 8701:D3,4736|8dbc2458ffffff3b7d0c7305ff5530cd0d5253a8010f85b80700008b38ff7004ff378b34248b36ba2ce845b181c2380000008d54b2fcffe2e9f3000000909090e997010000909090e995010000909090e993010000909090e991010000909090e98f010000909090e98d010000909090e98b010000909090e989010000909090e98a010000909090e9b7020000909090e9b5020000909090e9b6020000909090e983030000909090e981030000909090e97f030000909090e97d030000909090e97b030000909090e979030000909090e97a030000909090e9f8030000909090e975050000909090e973050000909090e971050000909090e96f050000909090e96d050000909090e96e050000909090e95c060000909090e95a060000909090e971060000909090e96f0600009090905f8b7f048b7714ff36ff37ff7708ff770cff77108b7c242cff378b7c2430ff77048b7c2434ff77088b7c2438ff77108b7c243cff77148b44241ce82511000089c7578b7c241c83ff0375068b5c2428eb0a8b0424e86f11000089c38b442420e8fc1100006a016a0189e3e89595feffff34248b7424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542414895704c707010000006a016a01ff7424345657e9d70900008d642404eb048d642404eb048d642404eb048d642404eb048d642404eb048d642404eb048d642404eb048d642404e9390100005fff77048b7c241c8b178b7c241c8b7f048b74241c8b5e088b74241c8b76145756528b44240ce8e613000089c7578b442404e87e1800008b7c24208b378b7c24208b7f048b5424208b52088b4c24208b59108b4c24208b49146a016a01575652515483042410e87ac0feff8b1c24ff74240483fb0175068b5c240ceb0b8b44240ce89318000089c383fb0175068b7c2418eb0b8b442418e8e118000089c7578b7c2430ff378b7c2434ff77048b7c24388b7f088b7424388b560c8b7424388b4e148b7424388b5e188b7424388b461c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e148b4c240c894e1089560c897e085f897e045f893eff7424208b44241c8b5c24048b5424308b4c242c894c242c895424308b14248974243483c428e9c0fcffff8d64240c8d642404eb048d642404e9d90000008b3c248b47046a016a018b7c24148b57048b7c24245754830424048b5c2410ff128b1c24ff74240483fb0175068b7c2414eb0b8b442414e86118000089c7578b7c242cff378b7c2430ff77048b7c24348b7f088b7424348b560c8b7424348b4e148b7424348b5e188b7424348b461c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e148b4c240c894e1089560c897e085f897e045f893eff74241c8b4424188b5c24048b54242c8b4c2428894c24288954242c8b14248974243083c424e9dcfbffff8d64240c8d642404eb048d642404eb048d642404eb048d642404eb048d642404eb048d642404e90f0200005f8b7f048b77108b168b1f8b47048b7424188b4c24148b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894f1459894f108b4c2404894f0c895708897704c707800446b15783fb017502eb05e896190000ff7424088b5c24088b74241c8b5424048b4c2414894c2414895424188b14248974241c83c410e92ffbffff8d6424105f8b7f048b77088b068b770cff368b7f10ff378b7c2420ff378b7c2424ff77048b7c2428ff77088b7c242c8b378b7c242c8b7f048b54242c8b52088b4c242c8b59108b4c242c8b49146a016a01575652515483042410e8c4bdfeffff34248b5c24086a016a01ff742418ff742420ff74241c548304240c8b442430e83b7effffff34248b5c24086a016a01ff742424ff74242cff742428548304240c8b442440e8beb6feff8b1c24ff74240483fb0175068b5c240ceb0b8b44240ce80b19000089c383fb0175068b5c2418eb0b8b442418e85919000089c383fb0175068b7c243ceb0b8b44243ce8a719000089c7578b7c2454ff378b7c2458ff77048b7c245c8b7f088b74245c8b560c8b74245c8b4e148b74245c8b5e188b74245c8b461c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e148b4c240c894e1089560c897e085f897e045f893eff7424448b4424408b5c24048b5424548b4c2450894c2450895424548b14248974245883c44ce9aaf9ffff8d64240c8d642404eb048d642404eb048d642404eb048d642404eb048d642404e9fa0000005f8b47048b7c2418ff378b7c241cff77048b7c2420ff77088b7c2424ff7710e82d1900006a016a01ff742410ff742418ff742414548304240c8b5c2418e8d37cffff8b1c24ff74240483fb0175068b7c2420eb0b8b442420e85819000089c7578b7c2438ff378b7c243cff77048b7c24408b7f088b7424408b560c8b7424408b4e148b7424408b5e188b7424408b461c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e148b4c240c894e1089560c897e085f897e045f893eff7424288b4424248b5c24048b5424388b4c2434894c2434895424388b14248974243c83c430e993f8ffff8d64240c8d642404eb238b3424ff76048b742404ff7610ff77048b7c2428ff37ff74240ce98d0000008d642404eb048d642404ff7424088b4424048b5c24088b74241c8b5424188b4c2414894c2414895424188b14248974241c83c410e931f8ffff8d642410ff74240c8b5424148b7c24188b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24048938ff1289c78b378b142489328b7f045e8d642404897e04b80100000083c404c20c00f604240175198b3c248b378b3c24ff77048b7e0c8b3fff760857e9000300008d6424088b7c2428ff378b7c242cff77048b7c2430ff77088b7c24348b47106a016a01ff74241054830424048b5c2420e81d180000ff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424288b5c242ce8d01a000089c383fb0175068b7c2404eb0b8b442404e84620000089c7578b7c2448ff378b7c244cff77048b7c2450ff77088b7c24548b770c8b7c2454ff77148b7c24588b57188b7c24588b4f1c8b7d008d7fdc3b7d087305ff5528cd46897d00c747fc08000000894f1c8957188b14248957148b54241489571089770c8b7424048977088b7424088977048b74240c8937576a016a018b44244489e3e823200000ff34248b4424088b7c24588b5708ff74240c8b5c2450ff1289c7578b7c240483ff017507bf01000000eb57ff7424046a01f644240401752a8b7c24048b078b7c2404ff77048b5c2404e89d20000089c25e891424897424043b650c7303ff552cebcf586a016a018b7c24688b5704ff74241c54830424048b5c2464ff125f8d64240857ff7424506a01f644240401753c8b7c24048b3f8b742404ff76048b7f0c8b078b7c240483ff01750489c2eb0b8b5c2404e88724000089c25e891424897424043b650c7303ff552cebbd586a016a01ff74242cff742434ff742430ff74243054830424108b5c244ce8ccb8feff8b1c24ff74240483fb0175068b5c2410eb0b8b442410e89924000089c383fb0175068b5c2414eb0b8b442414e8e724000089c383fb0175068b5c2438eb0b8b442438e83525000089c383fb0175068b7c246ceb0b8b44246ce88325000089c7578bbc2484000000ff378bbc2488000000ff77048bbc248c0000008b7f088bb4248c0000008b560c8bb4248c0000008b4e148bb4248c0000008b5e188bb4248c0000008b461c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e148b4c240c894e1089560c897e085f897e045f893eff7424748b4424708b5c24048b9424840000008b8c2480000000898c2480000000899424840000008b142489b4248800000083c47ce9c2f4ffff8d64240cf604240175568b3c248b3f8b3424ff76048b470c8b5d008d5bec3b5d087305ff5528cd01895d00c743fc040000008b7c2408897b0c8b7c2424897b088b7c2414897b04c703981846b1e81c2500005e8934243b650c7303ff552ceba48d6424085e8934243b650c7303ff552ce970fcfffff6442408010f8582000000f644240401757b8b7c24088b078b7c2408ff77048b7c24088b1f8b7c2408ff77046a016a018b7c2474ff7424105483042404ff742444ff74244c57e8062900005f5e8b4d008d49f43b4d087305ff5528cdc0894d00c741fc0200000089710489398b7424045a8d642404890c2489542404897424083b650c7303ff552ce973ffffff8b3c248b3f897c240c5f8b7f04897c240cff742408ff7424108b7c24388b7f34f7c701000000753b8b178b77048b0a81f92402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e94b0500008b3f8b3781fe2402c0b075058b7f08eb0e8d64245cb8483366b18b5d04ff23ba106369b1ff742434ff74242c578b4424248b5c243ce8a32a000089c7576a016a01ff742440ff742448ff742444548304240c8b4424408b5c241ce87a76ffffff3424ff7424088b442450e81e8a00006a016a01ff742450ff742458ff742454548304240c8b5c2418e84c76ffff8b1c24ff74240483fb0175068b7c2410eb0b8b442410e8498a000089c7578b442448e8a18a000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70701000000ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b7c2458897e088b7c245c897e048b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424508957048937578b7c246c83ff03750d8b7c24508b742478e9030300008bbc2494000000ff378bbc24980000008b77048bbc24980000008b57088bbc24980000008b4f0c8bbc24980000008b5f188bbc24980000008b471c8b7d008d7fdc3b7d087305ff5528cd4f897d00c747fc0800000089471c895f188b5c2404895f148b5c2410895f10894f0c8957088977045e89376a016a018b94248c0000005768946b69b154830424088b842488000000bb01000000e848f1ffffff3424ff7424088b7c247c83ff0375098b7c2460e9a60100008bbc24a4000000ff378bbc24a80000008b77048bbc24a80000008b57088bbc24a80000008b4f0c8bbc24a80000008b5f188bbc24a80000008b471c8b7d008d7fdc3b7d087305ff5528cd4f897d00c747fc0800000089471c895f188b5c2414895f148b5c2404895f10894f0c8957088977045e8d64240489376a016a018b9424980000008bb424a4000000575654830424088b84249c000000bb01000000e88cf0ffffff3424ff7424088b7c24208b07e816ddffff89c6bf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c240883ff0175068b5c2414eb0f8b4424148b5c2408e8ce88000089c383fb0175035beb0e8b0424e82089000089c38d64240483fb0175068b5c2424eb0b8b442424e86a89000089c383fb0175068b5c2444eb0b8b442444e8b889000089c383fb0175068b5c244ceb0b8b44244ce8068a000089c383fb0175098bbc249c000000eb0e8b84249c000000e84e8a000089c78bb424a8000000893e5f897e04b80100000081c4a0000000c20c00f7c7010000000f85970000008b178b77048b128b520c8b4a0489cb8b0183f80375248b490c83f9037507b903000000eb05b90100000083f903750b8b5304c70201000000eb3289d98b0383f80175438b5b088b1b83fb037507bb03000000eb05bb0100000083fb03751f89ca8b52088b5204c7020100000089f73b650c7305ff552ccd80e977ffffff8da42498000000eb078da42498000000b8c85e68b18b5d04ff23e9b2fdffff83ff01751b83fe017505e9eefcffff8da42488000000b8b0a166b18b5d04ff238b17ff7704f7c6010000000f85a1000000ff36ff76048b128b520c8b4a0489cb8b0183f80375248b490c83f9037507b903000000eb05b90100000083f903750b8b4b048b5424048911eb3289d98b0383f801754d8b5b088b1b83fb037507bb03000000eb05bb0100000083fb03752989ca8b52088b4a048b54240489118b5424085989ce89d73b650c7305ff552ccdc083c408e948ffffff8da42494000000eb078da42494000000b8c85e68b18b5d04ff238da4248c000000b8b0a166b18b5d04ff23f7c701000000753b8b178b77048b0a81f92402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64245cb8489d66b18b5d04ff238b3f8b3781fe2402c0b075088b7f08e965faffff8d64245cb8483366b18b5d04ff23f4|@19130,1,@3995|40,0,@8701 363,1,@8702 389,1,@8703 400,1,@8704 411,1,@8425 457,0,0 566,1,@8707 578,1,@8711 630,1,@8461 657,1,@8712 679,1,@8713 907,1,@8714 1173,0,@8715 1186,1,@8718 1324,1,@8461 1361,1,@8597 1398,1,@8455 1425,1,@8719 1447,1,@8720 1469,1,@8721 1691,1,@8722 1721,1,@8597 1748,1,@8723 2073,0,0 2163,1,@8724 2175,0,@19031 2200,1,@8725 2222,1,@8727 2357,1,@8728 2398,0,0 2435,1,@8729 2541,1,@8733 2596,1,@8461 2623,1,@8734 2645,1,@8735 2667,1,@8736 2689,1,@8737 2951,0,@8738 2956,1,@8739 3066,1,@8744 3185,0,@4663 3236,0,0 3246,0,@10769 3261,0,@4663 3277,0,@9999 3287,0,@19054 3309,1,@8748 3346,1,@8597 3362,1,@8803 3392,1,@8597 3419,1,@8804 3431,1,@8805 3468,0,0 3473,0,0 3742,0,@19128 3759,0,0 3947,0,0 3970,1,@8677 3977,0,0 4066,1,@8807 4084,1,@8808 4110,1,@8809 4132,1,@8810 4154,1,@8811 4182,1,@8812 4202,0,0 4258,0,1 4265,0,0 4279,0,0 4305,0,1 4312,0,0 4331,0,0 4369,0,@16439 4406,0,@11274 4463,0,1 4470,0,0 4510,0,1 4517,0,0 4584,0,@16439 4601,0,@11274 4627,0,@4663 4678,0,0 4692,0,@11247 4707,0,@4663 4726,0,@9999 8702:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f04ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3884|71,0,0 8703:D3,132|3b650c7305ff552ccd01a801756f8b388b40048b3f8b7f0c8b7f048b1789d683fa05750ab8508f67b18b5d04ff2383fe0175168b7f088b3783fe0375078b7f048b3feb038b7f04eb058b7f048b3f57e8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3885|37,0,@13866 126,0,0 8704:D3,332|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b38ff7004f6c3010f850b010000ff33ff73048b7704ff368b34248b4604ff7714e81601000089c7578b442404e8b201000089c36a016a016a01548b442410e8b4b3f0ff5e595a8d6424088b7d008d7fec3b7d087305ff5528cd46897d00c747fc040000008b1c24895f0c8d642404894f088977048b74240489378b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b56048957048b3689378b378b57048b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b44240c8b5c2404e8ecfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c38d642404b81c9666b18b5d04ff23f4|@11207,1,@3888|21,0,0 27,0,@11204 70,1,@8705 82,1,@8706 100,1,@6626 322,0,@11204 8705:D3,148|3b650c7305ff552ccd01a801757e8b388b40048b770c6a016a018b1683fa05750e8b76048b3f893c2489742404eb0d8b3f893c24c7442404cc5366b15e5a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e89dffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3886|56,0,@10423 141,0,0 8706:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3887|58,0,6 110,0,0 8707:D3,348|3b650c7305ff552ccd0953a8010f853a0100008b30ff70048b7e048b3fff76148b77088b1683fa050f8511010000ff7604ff7608ff770c8b542414b803000000ff1289c68b54240889d789328b7424248b542404893289ffff378b7c24108b1789d683fa1d752789ff8b7f048b77048b068b570c8b5c24288b7c24248b742420576a015652e8aab1feff89c6eb2489f783ff110f8598000000ba3c5d69b18b5c24288b7c2424578b442408e8c000000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c7470401000000c70703000000578b7c24288b7424248b5424205756528b4424208b5c2424e8fdfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c418c20c008d64241cb85c5e69b18b5d04ff238d64240cb8d45e69b18b5d04ff238d642404b801000000c20c00f40000|@10030,1,@3892|60,0,1 134,1,@8463 154,0,@19006 172,1,@8708 220,0,0 226,0,1 310,0,@19018 324,0,@19022 338,0,0 8708:D3,520|3b650c7305ff552ccd0d5250538b7d008d7ff03b7d087303ff5528897d00c747fc03000000c7470801000000c74704010000008b7424088b560c89178b45008d40f43b45087305ff5528cdc0894500c740fc02000000c740040100000089388b7d008d7ff43b7d087305ff5528cd41897d00c747fc0200000089f68b7604897704c707d80146b157e893d7feffba3c2869b18b7c241457ff7424048b5c240ce8ecd7feff89c7578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c7470801000000c74704010000008b7424108b560c89178b45008d40f43b45087305ff5528cdc0894500c740fc02000000c740040100000089388b7d008d7ff43b7d087305ff5528cd41897d00c747fc0200000089f68b7608897704c707640246b157e8f9d6feffba3c2869b18b7c241c57ff7424048b5c2414e852d7feff89c78d6424048b74240c8b1683fa05757d89f78b4704ba5c2869b18b7c2418578b5c240ce80d10ffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8d749e2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f00000083c410eb048d6424148b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c783966b1897808c74004984566b1c70001000000c20400f4000000|@19012,1,@3891|40,0,0 47,0,0 89,0,0 131,0,@8709 137,1,@8467 142,0,@18443 160,1,@8468 194,0,0 201,0,0 243,0,0 285,0,@8710 291,1,@8467 296,0,@18443 314,1,@8468 341,0,@18444 355,1,@8517 390,0,0 397,1,@4985 432,0,1 451,0,7 493,0,@10066 503,0,@10223 509,0,0 8709:D3,120|3b650c7305ff552ccd058b7a048b7f088b3783fe0375538b7f048b3783fe0d751789f8ff3424bb03000000c744240401000000e9cc37e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c3b8685d69b18b5d04ff23f4000000|@19010,1,@3889|39,0,1 47,0,0 52,1,@4973 85,0,0 92,0,1 101,0,11 107,0,@19008 8710:D3,120|3b650c7305ff552ccd058b7a048b7f088b3783fe0375538b7f048b3783fe0d751789f8ff3424bb03000000c744240401000000e94037e2ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c3b8685d69b18b5d04ff23f4000000|@19011,1,@3890|39,0,1 47,0,0 52,1,@4973 85,0,0 92,0,1 101,0,11 107,0,@19008 8711:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f04ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3893|71,0,0 8712:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3894| 8713:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3895| 8714:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3896| 8715:D3,68|3b650c7305ff552ccd0589d7ff30ff70048b77048b57088b4f0c8b5f108b47145350ff7424108b5c240c8b442410894c240c8954241089742414e9190000008d642408f4|@19026,1,@3899|59,1,@8716 8716:D3,280|3b650c7305ff552ccd0950538b7c241c8b378b7c241c8b7f048b54241c8b52088b4c241c8b59108b4c241c8b49146a016a018b442420575652515483042410e804a6feff8b1c24ff74240483fb0175068b7c2410eb0b8b442410e8cd00000089c7578b7c241089feff3789f689f7ff760489ff8b770889ff8b570c89ff8b4f1489ff8b5f1889ff8b471c8b7d008d7fdc3b7d087305ff5528cd4f897d00c747fc0800000089471c895f18894f148b4c240c894f1089570c8977088b34248977048d6424048b342489378d6424046a016a018b54242c8b4424288b742424575654830424088b5c2414ff125f5e8d6424088b45008d40f43b45087305ff5528cdc0894500c740fc02000000897004893883c410c21400f40000|@19025,1,@3898|64,1,@8461 91,1,@8717 8717:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3897| 8718:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3900| 8719:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3901| 8720:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3902| 8721:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3903| 8722:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f04ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3904|71,0,0 8723:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3905| 8724:D3,708|3b650c7305ff552ccd0953508b3c24ff378b7c24048b57048b7c2404ff77088b7c24188b7f34f7c701000000753b8b0f8b77048b1981fb0402c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff01750abfe46966b1e9c60100008b3f8b3781fe0402c0b075058b7f08eb0e8d642410b8483366b18b5d04ff2383ff0374098d642408e9800100008b328b7c240c8b3f3bf77502eb268b0e8d1c4d010000008b0789c18d0445010000003bd875698d76048d7f043bc9f3a67402eb5b8b7a048b74240c8b76043bfe75468b7a088b74240c8b76083bfe75318b7a0c8b74240c8b760c3bfe751c8b7a108b74240c8b76103bfe7507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf01000000eb05bf0100000083ff030f84df0000008b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b74240c897704c7070d0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c885f69b1897e08c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b55008d52f43b55087305ff5528cd80895500c742fc02000000c7420401000000893a8b7d008d7ff03b7d087305ff5528cd04897d00c747fc030000005e8977088b7424088977045e89378b74240c8916897e04b80100000083c408c208008d6424088b74240cc706010000005f897e04b80100000083c404c20800f7c701000000753b8b0f8b77048b1981fb0402c0b0751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebbdbf0100000083ff01750e8d642410b8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e9eafdffff8d642410b8483366b18b5d04ff23f4000000|@19030,1,@3906|55,0,@4659 106,0,0 116,0,@10769 131,0,@4659 147,0,@9999 279,0,1 286,0,0 293,0,0 300,0,0 307,0,0 314,0,0 354,0,0 367,0,6 400,0,@19027 410,0,@10757 416,0,18 451,0,2 484,0,0 540,0,0 560,0,0 569,0,0 596,0,@4659 647,0,0 661,0,@11247 676,0,@4659 695,0,@9999 8725:D3,1300|3b650c7305ff552ccd0d52538b7c24108b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750abfe46966b1e92a0400008b3f8b3781fe0402c0b075058b7f08eb0e8d642408b8483366b18b5d04ff2383ff03740c8d642408b801000000c20c008b3883ff017541be010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc0100004089378b75008d76f83b75087305ff5528cd81897500c746fc01000000893e8930eb028b3f578b542410b803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc040000008b7c240c8b7f04897a0c8b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b7424208b368b5424208b52048b4c24208b092bf1710e8d642414b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000897e08c7460401000000c706270000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470813000000897704c7072b000000578b7c24248b3f8b7424248b56048b7424248b362bfe710e8d642418b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24088938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7d008d7ff03b7d087303ff5528897d00c747fc03000000c74708010000008b742414897704c7070d0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b542410895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e84537e2ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8c53be2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460cc43966b1897e088b3c24897e048d642404c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175075883c410c20c00588b7c2410897c241c83c41ce994000000f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff01750e8d642408b8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e986fbffff8d642408b8483366b18b5d04ff23f40000|@19033,1,@3908|36,0,@4659 87,0,0 97,0,@10769 112,0,@4659 128,0,@9999 147,0,0 162,0,0 234,0,1 288,0,0 294,0,1 327,0,0 362,0,@9455 403,0,0 449,0,8 482,0,0 492,0,0 498,0,19 531,0,9 540,0,21 573,0,@9455 614,0,0 662,0,8 694,0,0 707,0,6 740,0,0 753,0,6 786,0,0 852,0,0 861,0,20 900,0,0 907,0,1 919,1,@4980 956,0,0 963,1,@4985 998,0,1 1017,0,7 1050,0,@10072 1069,0,5 1104,0,2 1137,0,0 1168,1,@8726 1189,0,@4659 1240,0,0 1254,0,@11247 1269,0,@4659 1288,0,@9999 8726:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3907| 8727:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3909| 8728:D3,180|3b650c7305ff552ccd0953a8010f858a000000ff308b40048b3c24ff77106a016a0189e3e8d7ffffff5a5e8b3c2483ff038d64240475348b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b801000000c38b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c35ebf388a66b18b1789168b7f04897e04b801000000c3f4|@11119,1,@3910|102,0,0 152,0,0 159,0,@11118 174,0,0 8729:D3,136|3b650c7305ff552ccd09538b780cff378b7804ff70088b3789f283fe2d75118b770489f73b650c7305ff552ccd80ebe689d683fa0b75118b770889f73b650c7305ff552ccd80ebce83fe1775298b4708e84700000089c3ff34248b442408e86501000089c38d64240883fb01750258c358e97a0300008d64240cb8806069b18b5d04ff23f4000000|@19042,1,@3914|81,1,@8730 95,1,@8731 114,1,@8732 123,0,@19039 8730:D3,280|3b650c7305ff552ccd01a8010f85ff0000008b38ff70048b178b77048b4f108b5f14b8cc5366b18b7d008d7ff83b7d087305ff5528cd4f897d00c747fc0100004089078b45008d40f03b45087305ff5528cdce894500c740fc03000000894808897804c700100666b18b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000c747040100000089378b75008d76ec3b75087305ff5528cd8f897500c746fc04000000c7460c01000000c7460801000000894604893e8b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c894f088957048937578b442404e818ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f4|@10030,1,@3911|35,0,@10423 101,0,@9473 134,0,0 169,0,0 176,0,0 274,0,0 8731:D3,532|3b650c7305ff552ccd0953a8010f85f1010000ff30ff70048b7c24048b470cbfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057bfcc5366b18b75008d76f83b75087305ff5528cd81897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d000000578b5d008d5bf03b5d087305ff5528cd01895d00c743fc030000008b3c24897b088b7c2404897b04c70305000000ba0c6368b1e81e17f7ff89c783ff01740e8d642414b8406069b18b5d04ff23bf030000008b5d008d5bf83b5d087305ff5528cd80895d00c743fc01000040893b8b7c240c8b55008d52f83b55087305ff5528cd88895500c742fc01000040893a8b7c24048b75008d76f83b75087305ff5528cd8c897500c746fc01000040893e5f8d6424048b45008d40f83b45087305ff5528cdcc894500c740fc0100004089388b4c24108b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088b54240889d38957048937578b7c2414578b442408e827feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c204008d642404b801000000c20400f4000000|@10030,1,@3912|32,0,@10423 65,0,9999 110,0,6 116,0,@10423 149,0,9999 194,0,6 240,0,2 245,0,@16477 250,1,@7452 266,0,@19036 276,0,1 521,0,0 8732:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3913| 8733:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3915| 8734:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3916| 8735:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3917| 8736:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3918| 8737:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3919| 8738:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce94753f5fff40000|@19043,1,@3920|26,0,1 37,1,@7270 8739:D3,164|3b650c7305ff552ccd09508b75008d76f03b75087305ff5528cd08897500c746fc03000040c7460801000000c7460401000000c706010000008b45008d40f43b45087305ff5528cd48894500c740fc02000040c7400401000000c7000100000089f7895f08894704c707901946b18066ffbf89c7897704c707b81c46b18060ffbfe8a656f7ff89c28b0424ff1289c28d642404b803000000ff12b801000000c3f4000000|@19049,1,@3925|40,0,0 47,0,0 53,0,0 86,0,0 92,0,0 106,0,@8740 121,0,@8742 130,1,@7465 148,0,1 155,0,0 8740:D3,636|3b650c7305ff552ccd0d508b3b83ff0b0f8561020000ff7304ff730c8b3c248b7f0c8b7f048b3f83ff05757f8b4204e84056f7ff89c7578b7c24048b7f0c8b7f048b3783fe0575558b4704ff77088b5c240ce87d98e3ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703201c46b16a016a01548b44240ce89e9af0ff588d6424088b1424ff1289c28d64240c58ff228d642410b8a48b67b18b5d04ff238b7c240883ff030f85b50100008b3c248b7f0c8b3f8b3783fe050f85980100008b7f048b3f83ff010f8d80010000ff72088b7c2404ff378b3c248b3f8d1c7d0100000083fb01750e8d642404bf486169b1e98900000089df83c75889f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f872001000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf486169b1b9590000008d77048d7a04d1e9f3a489d95f8d77048d7a30d1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab87c6169b1e98900000089de83c63289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777589d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be7c6169b1b9330000008d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b80100000083c40cc38d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d64240cb803000000c38d64240cb803000000c38d64240cb801000000c358c3f40000|@19046,1,@3922|48,1,@7465 83,1,@5210 120,0,@8741 134,1,@6630 162,0,@13837 248,0,@19044 268,0,4 289,0,16777215 347,0,0 356,0,@19044 361,0,44 409,0,@19045 429,0,4 450,0,16777215 504,0,0 530,0,@19045 535,0,25 565,0,0 578,0,@9465 592,0,@9465 606,0,1 616,0,1 626,0,0 8741:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@13816,1,@3921|81,0,0 91,0,0 8742:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008978088b7a04897804c700041d46b1c3f400|@19048,1,@3924|49,0,@8743 8743:D3,24|3b650c7305ff552ccd0589d78b57048b5f08ff22f4000000|@19047,1,@3923| 8744:D3,188|3b650c7305ff552ccd098b78048b3fff77048b7c2418ff378b7c241cff77048b7c24188b74241457568b442410e89e00000089c7578b7c24148b378b7c24148b7f048b5424148b52088b4c24148b49146a016a015756525154830424108b4424288b5c2420e8868dfeff8b1c24ff74240483fb0175068b5c2414eb0b8b442414e84301000089c383fb0175068b7c240ceb0b8b44240ce89101000089c78b74242c893e8b3c24897e048d642404b80100000083c418c21400f4000000|@19053,1,@3929|46,1,@8745 102,1,@8461 129,1,@8746 151,1,@8747 174,0,0 8745:D3,228|3b650c7305ff552ccd09a8010f85c9000000f6c3010f85c00000008b38ff7004ff33ff73048b7f088b3783fe050f859a000000ff7704ff77088b54241cb803000000ff1289c68b7c240489378b7c24188b1424893a8d6424088b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c897708c7470401000000c70703000000578b7c24188b74241457568b4424148b5c240ce85effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c208008d64240cb8906269b18b5d04ff23b801000000c20800f4|@11120,1,@3926|62,0,1 128,0,0 134,0,1 210,0,@19050 220,0,0 8746:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3927| 8747:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3928| 8748:D3,264|3b650c7305ff552ccd0d5250538b4424048b1c24e80301000089c7578b7c241c8b7424188b5c240c8b530c89db8b4b1089db8b5b1457565251538b44241c8b5c2414e8b501000083f801750e8d642410b84c7767b18b5d04ff23e8e57ef0ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000578b7c2420ff742408578b4424148b5c240ce84d31000089c7578b5c241c8b4c24148b79048b7424248b54242089c98b4908575652518b442420e83d33000089c383fb0175035feb0e8b0424e8775e000089c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c410c20c00f4|@19127,1,@3984|21,1,@8749 67,1,@8750 81,0,@13576 91,1,@6591 128,0,3 151,1,@8776 191,1,@8777 209,1,@8802 8749:D3,204|3b650c7305ff552ccd0953a80175368b38ff70048b7f0c8b3f8b5424048b7f0c8b7f048b0f89ce83f90375058b7f08eb4e83fe0175058b7f04eb448b7704bf01000000eb0a8d642404b801000000c3f7c60100000075288b5e0489f983c102710e8d642408b8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd083ff017507b803000000eb05b805000000ff1289c7578b4424048b5c2408e85effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc3f4|@10030,1,@3930|63,0,0 74,0,0 102,0,@9455 133,0,1 140,0,2 8750:D3,112|3b650c7305ff552ccd09bad0a766b1e84442e5ff89c757ff34246a01f64424040175458b7c24048b0789ffff77048b7c24248b7424208b54241c8b4c24188b5c24145756ff7424145251538b5c241ce83000000089c25e891424897424043b650c7303ff552cebb45883c408c21400f4|@19071,1,@3956|11,0,@11313 16,1,@5472 80,1,@8751 8751:D3,4848|8d7c24a03b7d0c7305ff5530cd09538b388b770cff36ff76048b3fff700483ff0375358b7c24088b7f0c8b7f048b1789d683fa0375088b7f08e92501000083fe0175088b7f04e9180100008b7704bf01000000e9db000000b801000000e88e7bf0ff89c757b801000000e89512000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642404c7470801000000c74704b49867b1c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008b742408897004893883c40cc21800f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c240c8b7f0c8b7f048b1789d683fa0375058b5f08eb4283fe0175058b5f04eb388b7f04bb01000000f7c70100000075288b570489de83c602710e8d642414b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642414b8a84566b18b5d04ff23b801000000e88d11000089c7578b7c24308b378b7c2430ff7704ba010000008b7d008d7ff83b7d087305ff5528cd44897d00c747fc010000408917578b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088b0c2489ca894f04c707603646b183c60256710e8d642424b8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd84897500c746fc0300000089d2895608897e048b142489d78916568b74241083fe0175098b7c243ce9400100008b74241489f383fe017d0e8d642428b8a84566b18b5d04ff2357b801000000e86c12000089c3bad0a766b18b442410e8143fe5ff89c7578b7c241889fb83ff017d0e8d64242cb8a84566b18b5d04ff23ff742408ff742414ff742414b801000000e866130000be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc0100004089378b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702203a46b18b4d008d49f43b4d087305ff5528cd04894d00c741fc020000008b3c248979048d642404c70103000000be010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c8956088b1424895604893e8b54243c8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c243c8b7424448b4d008d49f03b4d087305ff5528cdc0894d00c741fc03000000897108897904c701603a46b18b7c24388b7424348b542430ff742410ff742410ff74241c575652ff74241c51ff7424208b4424448b5c242ce8b017000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708783966b1c74704ec4066b1c7070b00000057f6442418010f846b0100008b7c24288b3f8b378d0c750100000083f9017507bf706569b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f871801000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420465c6420571c642062d8d77048d7a07d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf7c6569b1e98d00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01777889c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320132d1efc6443a02298062ffbf89d7578b7c24148b3fb801000000e9cf0b00008d642430b8780566b18b5d04ff238d642430b8780566b18b5d04ff23bf010000008b742418f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c244c8b3f8b74244cff7604ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089165683c702710e8d64243cb8f80466b18b5d04ff23ba010000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089165689fe83c60256710e8d642444b8f80466b18b5d04ff238b74241089f383fe017d0e8d642444b8a84566b18b5d04ff23ff342457ff742414ff742414ff742414b801000000e85f24000089c7578b7c243883c702710e8d642448b8f80466b18b5d04ff238b7424608b168b7424042bf2710e8d642448b8f80466b18b5d04ff2383c60183fe017d0e8d642448b8d02469b18b5d04ff2383fe010f8eb800000083ee02710e8d642448b8f80466b18b5d04ff2383fe017d0e8d642448b8d02469b18b5d04ff2383fe017e4a8b54241083ee02710e8d642448b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff128b5c240ce88768e3ffeb3683ff017d0e8d642448b8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700050000008b5c2408e84668e3ff89c6eb3683ff017d0e8d642448b8282569b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c240489fb83ff017507b8207767b1eb0ab8207767b1e8d4240000e89f20e2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b7c24448b3f8b378d0c750100000083f9017507bf706569b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f871501000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420465c6420571c642062d8d77048d7a07d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf7c6569b1e98d00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01777589c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320132d1efc6443a02298062ffbf89d7578b7c24108b3fb801000000eb1c8d64244cb8780566b18b5d04ff238d64244cb8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8c9defeff8b3c2489fe81ff100666b175068d642404eb2b89f68b3e8d3c7d0100000083ff017522bf100666b189f68d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e89511e2ff89c757b801000000e8f822000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7c24448b3f8b378d0c750100000083f9017507bf706569b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f871301000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420465c6420571c642062d8d77048d7a07d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf886569b1e98b00000089de83c60c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01777389c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be886569b1b90d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c24148b3fb801000000eb1c8d64244cb8780566b18b5d04ff238d64244cb8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e84bdcfeff8b3c2489fe81ff100666b175068d642404eb2b89f68b3e8d3c7d0100000083ff017522bf100666b189f68d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8170fe2ff89c7578b7c242089fb83ff017d0e8d642454b8a84566b18b5d04ff23b801000000e8c520000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b54243889d789165689ff83c70257710e8d642450b8f80466b18b5d04ff23f64424240175188b7c24248b3f8b3f8b07e85c20000089c7be01000000eb0e8d642450b8986569b18b5d04ff23f7c70100000075348b1f8b57048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0ebc483fe0175068b7c2420eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542420895708897704c7071f000000578b7c244083c70457710e8d642458b8f80466b18b5d04ff238b7c24508b3f8b378d0c750100000083f9017507bf706569b1eb7e89ce83c60689f083c00ebb09000000d1e8d1eb33d2f7f38d1c450100000081fbffffff010f870c01000089d88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183eb02c7445afe00000000d1ee8932c6420465c6420571c642062d8d77048d7a07d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf344b66b1e98400000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01776c89c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf89d7578b7c243c8b3fb801000000eb1c8d642458b8780566b18b5d04ff238d642458b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8c9d8feff8b3c2489fe81ff100666b175068d642404eb2b89f68b3e8d3c7d0100000083ff017522bf100666b189f68d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e87d6bf0ff89c7578b7c240889fb83ff017d0e8d642460b8a84566b18b5d04ff23b801000000e8071e000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461403000000897e108b3c24897e0c8d642404c74608010000008b3c24897e048d6424088b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54244889570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c448c21800f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e824d7feff8b3c2489fe81ff100666b175068d642404eb2b89f68b3e8d3c7d0100000083ff017522bf100666b189f68d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8d869f0ff89c757b801000000e8df1c000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977108b342489770c8d642404c74708010000008b34248977048d6424048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74241c89378b45008d40f43b45087305ff5528cd80894500c740fc020000008b742428897004893883c42cc21800f4000000|@19070,1,@3955|79,0,0 89,0,0 94,1,@6589 102,0,0 107,1,@8752 142,0,1 149,0,0 156,0,1 176,0,0 183,0,@13965 189,0,@10072 224,0,12 330,0,@9455 394,0,0 421,0,@9455 456,0,@10224 466,0,0 471,1,@8753 492,0,0 568,0,@8754 583,0,@9455 668,0,@10224 679,0,0 684,1,@8755 691,0,@11313 700,1,@5472 723,0,@10224 745,0,0 750,1,@8757 755,0,0 818,0,@8758 860,0,1 865,0,0 1015,0,@8759 1064,1,@8762 1102,0,@10066 1109,0,@10169 1115,0,5 1152,0,@19064 1169,0,4 1190,0,16777215 1248,0,0 1299,0,@19065 1319,0,4 1340,0,16777215 1394,0,0 1457,0,0 1471,0,@9465 1485,0,@9465 1495,0,0 1526,0,@9455 1566,0,0 1609,0,@9455 1619,0,0 1665,0,@9455 1690,0,@10224 1716,0,0 1721,1,@8769 1742,0,@9455 1770,0,@9455 1792,0,@18415 1820,0,@9455 1839,0,@18415 1867,0,@9455 1905,0,0 1921,1,@5181 1937,0,@18418 1977,0,2 1986,1,@5181 2004,0,@18418 2044,0,2 2079,0,8 2096,0,@13573 2103,0,@13573 2108,1,@8770 2113,1,@4985 2148,0,1 2167,0,7 2193,0,@19064 2210,0,4 2231,0,16777215 2289,0,0 2340,0,@19065 2360,0,4 2381,0,16777215 2435,0,0 2498,0,0 2509,0,@9465 2523,0,@9465 2595,1,@8500 2606,0,@9473 2635,0,@9473 2662,0,@10237 2671,1,@4975 2679,0,0 2684,1,@8771 2719,0,1 2726,0,0 2733,0,0 2753,0,0 2807,0,12 2833,0,@19064 2850,0,4 2871,0,16777215 2929,0,0 2980,0,@19066 3000,0,4 3021,0,16777215 3075,0,0 3101,0,@19066 3106,0,6 3136,0,0 3147,0,@9465 3161,0,@9465 3233,1,@8500 3244,0,@9473 3273,0,@9473 3300,0,@10237 3309,1,@4975 3332,0,@10224 3342,0,0 3347,1,@8772 3382,0,1 3389,0,0 3396,0,0 3416,0,0 3470,0,12 3525,0,@9455 3552,1,@8773 3559,0,0 3570,0,@19067 3688,0,15 3708,0,@9455 3738,0,@19064 3755,0,4 3776,0,16777215 3834,0,0 3885,0,@10286 3905,0,4 3926,0,16777215 3980,0,0 4034,0,0 4045,0,@9465 4059,0,@9465 4131,1,@8500 4142,0,@9473 4171,0,@9473 4198,0,@10237 4207,1,@6589 4230,0,@10224 4240,0,0 4245,1,@8774 4280,0,1 4287,0,0 4294,0,1 4314,0,0 4368,0,12 4552,1,@8500 4563,0,@9473 4592,0,@9473 4619,0,@10237 4628,1,@6589 4636,0,0 4641,1,@8775 4676,0,1 4683,0,0 4690,0,1 4710,0,0 4764,0,12 8752:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3931|16,0,0 27,0,@9455 74,0,@10071 8753:D3,164|3b650c7305ff552ccd093bc37506b801000000c3bfcc5366b18b75008d76f83b75087305ff5528cd89897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c002710e8d642404b8f80466b18b5d04ff23e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10221,1,@3932|15,0,0 21,0,@10423 54,0,9999 107,0,@9455 8754:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9755be3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3933|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8755:D3,140|3b650c7305ff552ccd093bc37508b801000000c204008b7424048b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000894708897704c707fc3746b15783c002710e8d642404b8f80466b18b5d04ff238b7c240857e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@3935|15,0,0 60,0,@8756 75,0,@9455 8756:D3,136|3b650c7305ff552ccd0589d18b790883c704710ab8f80466b18b5d04ff238b308b50048b49042bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f40000|@19055,1,@3934|21,0,@9455 43,0,@9455 84,0,1 128,0,8 8757:D3,372|3b650c7305ff552ccd0950538b74240489f73b3424750c8d642408b801000000c20c0089ff83c704710e8d642408b8f80466b18b5d04ff238b7424148b5424142bf2710e8d642408b8f80466b18b5d04ff2383c60183fe017d0e8d642408b8d02469b18b5d04ff2383fe017e4c8b54241083ee02710e8d642408b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048938ff128b5c240ce8ff58e3ff89c6eb3683ff017d0e8d642408b8282569b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c24188b7424148b5424105756528b5c2410e8befeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20c00f4000000|@10221,1,@3936|28,0,0 47,0,@9455 73,0,@9455 95,0,@18415 123,0,@9455 161,0,1 177,1,@5181 195,0,@18418 235,0,0 270,0,8 289,0,@9455 8758:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19056,1,@3937|31,0,@9455 8759:D3,44|3b650c7305ff552ccd0589d789c68b068b5e048b76088b57048b4f085251ff7424088974240ce915000000f4|@19058,1,@3940|39,1,@8760 8760:D3,600|3b650c7305ff552ccd098b7c2408f7c7010000000f85e1000000ff37ff77048b7424048b368b760c8b368b760c8b4e0489ca8b0983f90375408b580489d98b1b83fb037507bb03000000eb05bb0100000083fb0375238b720489ca8b52043bf27507be03000000eb05be0100000083fe0375508d642404eb6389d18b1283fa0175378b580489da8b1b83fb017507bb03000000eb05bb0100000083fb03751a89ce8b760c8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374155e89f73b650c7305ff552ccd8183c404e936ffffff8d6424048b7d008d7ff83b7d087305ff5528cd01897d00c747fc010000005e8937eb05bf0100000083ff0175158b008b5c240c8b3c24897c240c83c40ce9520100008b3f8b37ff7604ff76088b7f048b7424148b368b5424148b52048b4c240c8b092bf1710e8d642408b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b55008d52f43b55087305ff5528cd40895500c742fc02000000c74204010000008b7c2404893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957045a8d64240489178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702c43966b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000c20c00f400|@19057,1,@3939|70,0,1 77,0,0 99,0,1 106,0,0 143,0,1 150,0,0 172,0,1 179,0,0 186,0,0 252,0,0 278,1,@8761 323,0,@9455 364,0,0 408,0,8 441,0,0 518,0,@10072 582,0,0 591,0,20 8761:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e996fce1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3938|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8762:D3,2260|3b650c7305ff552ccd0953a8010f85b10800008b38ff7004ff7704ff7708ff770c8b7c24388b74243457568b44240c8b5c2418e8b008000089c757f644240c010f85780200008b7c240c8b3f83ff037507bf03000000eb05bf0100000083ff030f85580200008b3c248b3783fe0d75126a0189f8bb03000000e842fbe1ff89c6eb338b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c01000000c746080300000089ff897e04c706170000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c747080b000000897704c7072b000000578b7424048b3e83ff0d75126a0189f0bb01000000e8c7fae1ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080100000089f6897704c7071700000057b8506566b1e8cd0be2ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c43966b18b34248977048d642404c7070b000000578b7424048b3e83ff0d75126a0189f0bb01000000e801fae1ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080100000089f6897704c7071700000057b82c7767b1e8070be2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f00000057ff742444ff742444ff7424448b7c24448b7424408b54243c8b4c24388b5c24348b442430ff742408ff742408ff7424085756525153508b4424488b5c244ce885fdffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b3c248978048d642404c7000b00000083c418c224008b442434e8ad07000089c7578b5424088b3a83ff050f85dd05000089d28b7a0889fe8b3f83ff0b7507bf03000000eb05bf0100000083ff030f85b405000089d2ff720489f78b4704e8f10700008b5c2404e83471e3ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703ac4946b16a016a01548b44240ce85573f0ffff34248b4424388b7c24348b7424308b5424448b4c24408b5c243c575652515389c38b442414e8b2aefeff89c7578b7c24548b74245057568b4424288b5c2434e89c08000089c68b3e83ff0d75126a0189f0bb05000000e81df8e1ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470805000000897704c70717000000578b7c243089fe2bfe710e8d642434b8f80466b18b5d04ff2383c70183ff017d0e8d642434b8d02469b18b5d04ff2383ff017e508b54245883ef02710e8d642434b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cd84894500c740fc03000000c7400803000000897804c70001000000ff128b5c2454e8d84fe3ff89c6eb05be943966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e85c08e2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b7c24588b74245457568b44242c8b5c2438e8ba08000089c68b3e83ff0d75126a0189f0bb05000000e8aff6e1ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470805000000897704c70717000000578b7c243489fe2bfe710e8d642438b8f80466b18b5d04ff2383c70183ff017d0e8d642438b8d02469b18b5d04ff2383ff017e508b54245c83ef02710e8d642438b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cd84894500c740fc03000000c7400803000000897804c70003000000ff128b5c2458e86a4ee3ff89c6eb05beac3966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8ee06e2ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404e86a06e2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b7424188b3e83ff0d75126a0189f0bb01000000e8d2f4e1ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080100000089f6897704c7071700000057b8506566b1e8d805e2ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b74241c8b3e83ff0d75126a0189f0bb01000000e840f4e1ff89c7eb338b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c747080100000089f6897704c7071700000057b82c7767b1e84605e2ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470cc43966b18b542404895708897704c7070b00000057ff74245cff74245cff74245c8b7c245c8b7424588b5424548b4c24508b5c244c8b442448ff742408ff742408ff7424085756525153508b4424608b5c2464e893f7ffff89c78d64240c8b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b3c248978048d642408c7000b00000083c42cc224008d64241ceb048d64241cb8d46469b18b5d04ff238d642404b8c43966b1c22400f4000000|@19063,1,@3947|52,1,@8763 82,0,1 89,0,0 117,0,1 122,1,@4973 159,0,0 166,0,1 177,0,11 210,0,5 219,0,21 240,0,0 245,1,@4973 282,0,0 289,0,0 300,0,11 306,0,@10704 311,1,@4985 346,0,1 365,0,7 401,0,@10072 417,0,5 438,0,0 443,1,@4973 480,0,0 487,0,0 498,0,11 504,0,@13574 509,1,@4985 544,0,1 563,0,7 692,0,5 707,1,@8764 744,0,1 751,0,0 775,1,@8765 784,1,@5210 821,0,@8766 835,1,@6630 878,1,@8485 904,1,@8767 922,0,2 927,1,@4973 964,0,0 971,0,2 980,0,11 1000,0,@9455 1022,0,@18415 1050,0,@9455 1088,0,1 1097,0,0 1108,1,@5181 1117,0,@10068 1152,0,8 1185,0,0 1192,1,@4985 1227,0,1 1246,0,7 1270,1,@8768 1288,0,2 1293,1,@4973 1330,0,0 1337,0,2 1346,0,11 1366,0,@9455 1388,0,@18415 1416,0,@9455 1454,0,1 1463,0,1 1474,1,@5181 1483,0,@10070 1518,0,8 1551,0,0 1558,1,@4985 1593,0,1 1612,0,7 1645,0,0 1690,1,@4985 1725,0,1 1744,0,7 1765,0,0 1770,1,@4973 1807,0,0 1814,0,0 1825,0,11 1831,0,@10704 1836,1,@4985 1871,0,1 1890,0,7 1911,0,0 1916,1,@4973 1953,0,0 1960,0,0 1971,0,11 1977,0,@13574 1982,1,@4985 2017,0,1 2036,0,7 2069,0,@10072 2085,0,5 2214,0,5 2235,0,@19060 2249,0,@10072 8763:D3,376|3b650c7305ff552ccd098b3889fe83ff09756fff70048b40088b7c240c8b7424085756e8d8ffffff89c78b3783fe0d751a89f85bc7442408010000008b3c24897c240483c404e98df2e1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c2080089f783fe050f85d30000008b70048b78088b368b3f8b1789df2bfa710ab8f80466b18b5d04ff2383c70183ff017d0ab8d02469b18b5d04ff2383ff017e488b54240883ef02710ab8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff128b5c2404e8444ae3ff89c7eb3283fe017d0ab8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2080083ff0375068b4004c20800b8802569b18b5d04ff23f40000|@18425,1,@3941|56,0,0 71,1,@4973 104,0,0 123,0,11 160,0,@9455 178,0,@18415 202,0,@9455 240,0,0 256,1,@5181 270,0,@18418 310,0,2 345,0,8 364,0,@18421 8764:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3942|58,0,6 110,0,0 8765:D3,128|3b650c7305ff552ccd01a801756a8b388b40048b3783fe0d75548b77048b57088b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704893757e8bbffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c8967b18b5d04ff23b801000000c3f400|@10030,1,@3943|111,0,@13817 121,0,0 8766:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19059,1,@3944|81,0,0 91,0,0 8767:D3,376|3b650c7305ff552ccd098b3889fe83ff09756fff70048b40088b7c240c8b7424085756e8d8ffffff89c78b3783fe0d751a89f85bc7442408010000008b3c24897c240483c404e94defe1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c2080089f783fe050f85d30000008b70048b78088b368b3f8b1789df2bfa710ab8f80466b18b5d04ff2383c70183ff017d0ab8d02469b18b5d04ff2383ff017e488b54240883ef02710ab8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff128b5c2404e80447e3ff89c7eb3283fe017d0ab8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2080083ff0375068b4004c20800b8802569b18b5d04ff23f40000|@18425,1,@3945|56,0,0 71,1,@4973 104,0,0 123,0,11 160,0,@9455 178,0,@18415 202,0,@9455 240,0,0 256,1,@5181 270,0,@18418 310,0,2 345,0,8 364,0,@18421 8768:D3,376|3b650c7305ff552ccd098b3889fe83ff09756fff70048b40088b7c240c8b7424085756e8d8ffffff89c78b3783fe0d751a89f85bc7442408010000008b3c24897c240483c404e9c1ede1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c2080089f783fe050f85d30000008b70048b78088b368b3f8b1789df2bfa710ab8f80466b18b5d04ff2383c70183ff017d0ab8d02469b18b5d04ff2383ff017e488b54240883ef02710ab8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008978048930ff128b5c2404e87845e3ff89c7eb3283fe017d0ab8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c2080083ff0375068b4004c20800b8802569b18b5d04ff23f40000|@18425,1,@3946|56,0,0 71,1,@4973 104,0,0 123,0,11 160,0,@9455 178,0,@18415 202,0,@9455 240,0,0 256,1,@5181 270,0,@18418 310,0,2 345,0,8 364,0,@18421 8769:D3,484|3b650c7305ff552ccd0950538b7c240489fe3b3c24750c8d642408b801000000c214008b7c241c8b5424182bfa710e8d642408b8f80466b18b5d04ff2383c70183ff017d0e8d642408b8d02469b18b5d04ff2383ff010f8ec000000083ef02710e8d642408b8f80466b18b5d04ff2383ff017d0e8d642408b8d02469b18b5d04ff2383ff017e4c8b54241483ef02710e8d642408b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080300000089780489f68930ff128b5c2410e81f44e3ffeb3c89f689f783fe017d0e8d642408b8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc0200000089ff897804c700010000008b5c240ce8d843e3ff89c6eb3c89f689f783fe017d0e8d642408b8282569b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc0200000089ff897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c24208b74241c8b5424188b4c24148b5c241057565251538b5c2418e84bfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c21400f4|@10221,1,@3948|28,0,0 52,0,@9455 74,0,@18415 102,0,@9455 121,0,@18415 149,0,@9455 187,0,1 205,1,@5181 225,0,@18418 267,0,0 276,1,@5181 298,0,@18418 340,0,0 375,0,8 394,0,@9455 8770:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3949| 8771:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3950|16,0,0 27,0,@9455 74,0,@10071 8772:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3951|15,0,0 26,0,@9455 73,0,@10071 8773:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3952|69,0,0 8774:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3953|15,0,0 26,0,@9455 73,0,@10071 8775:D3,80|3b650c7305ff552ccd0183f8057506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3954|16,0,0 27,0,@9455 74,0,@10071 8776:D3,516|3b650c7305ff552ccd09a8010f85e9010000f6c3010f85e00100008b38ff7004ff33ff7304ff7704ff77088b7f0c8b3f8b7f0c8b3f8b3783fe050f85ad010000ff7704ff77088b542424b803000000ff1289c68b7c241489f983ff017d0e8d64241cb8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd42897d00c747fc0200000089ca895704c707050000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702110000008b4d008d49f43b4d087305ff5528cd44894d00c741fc02000000c74104010000008b7c240c89398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048b4c2408890f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000897904c701506669b18b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489178b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000897a04c702290000008b7c240489378b7c24208b0c2489398d6424108b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470401000000c70703000000578b7c24188b74241457568b4424148b5c240ce83efeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642410c208008d642414b86c5369b18b5d04ff23b801000000c20800f4|@11120,1,@3957|75,0,1 99,0,@11112 141,0,2 176,0,8 209,0,0 285,0,@19072 349,0,0 358,0,20 416,0,0 422,0,1 498,0,@18928 508,0,0 8777:D3,168|3b650c7305ff552ccd0953a8010f85860000008b30ff7004ff36ff76048b7e088b760c8b5424208b4c241c8b5c24188b4424145756ff742414525153508b4424208b5c241ce87200000089c7578b7c24248b7424208b54241c8b4c2418575652518b44241c8b5c2420e892ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642414c210008d642404b801000000c21000f40000|@10030,1,@3982|70,1,@8778 158,0,0 8778:D3,564|3b650c7305ff552ccd098b7c24188b3fff770c8b7f0c8b7f048b1789d683fa0375058b7f08eb4283fe0175058b7f04eb388b7704bf01000000f7c60100000075288b4e0489fa83c202710e8d642404b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c241c83ff0375228d6424048b44241c8b5c24108b7c240c8b7424145756e8ba01000089c7e9ba0000008b3c2483ff01750d8d6424048b7c2408e9a5000000b801000000e80049f0ff89c7578b7c240489fb83ff017d0e8d64240cb8a84566b18b5d04ff23b801000000e84228000089c28b7c24108b75008d76dc3b75087305ff5528cd84897500c746fc08000000c7461c03000000c7461801000000c74614030000008956108b142489560c8d642408c7460801000000c746040c6b69b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7c24048b078b5c2414e82128000089c68b3e83ff0d75126a0189f0bb03000000e8eae3e1ff89c7eb318b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470803000000897704c707170000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604cc6866b1893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c74704d46866b1c707250000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7000500000083c404c21c00f400|@19126,1,@3981|53,0,0 80,0,@9455 138,1,@8779 171,0,0 176,1,@6589 199,0,@10224 209,0,0 214,1,@8800 253,0,1 260,0,0 267,0,1 287,0,0 294,0,@19125 331,0,12 347,1,@8801 365,0,1 370,1,@4973 407,0,0 414,0,1 423,0,11 456,0,0 463,0,@10756 511,0,@10757 517,0,18 552,0,2 8779:D3,4140|3b650c7305ff552ccd098b38ff37ff70048b33ff7304b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc0895500c742fc030000008b4c2404894a088b0c24894a04c702046746b183c60256710e8d642414b8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd84897500c746fc030000008b4c2404894e088956048b14248916568b7f0c8b7f048b1789d683fa0375058b7f08eb4283fe0175058b7f04eb388b7704bf01000000f7c60100000075288b4e0489fa83c202710e8d642418b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b3c2483ff017d0e8d64241cb8a84566b18b5d04ff23b8010000008b1c24e81f10000089c7576a016a018b7c240c83ff0175148b7c24308b742410893424897c2404e987010000bf010000008b4d008d49f83b4d087305ff5528cd80894d00c741fc0100004089398b55008d52ec3b55087305ff5528cd02895500c742fc040000008b7c241c897a0c8b7c2418897a08894a04c702b86846b18b74241483c602710e8d642428b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937576a016a01ff74241c54830424048b44241c8b5c2410e8b91100005f8d642404ba030000008b75008d76f83b75087305ff5528cd84897500c746fc0100004089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702a46d46b18b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c70103000000be010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c8956088b542414895604893e8b5424348b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489375e893424897c2404ff3424ff742408bf886769b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8b06769b1e8a3ece1ff89c7eb05bfb06769b157bfc06769b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8cc6769b1e857ece1ff89c7eb05bfcc6769b157bfc06769b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8e86769b1e80bece1ff89c7eb05bfe86769b157bff86769b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8206869b1e8bfebe1ff89c6eb05be206869b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704587867b189378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e82febe1ff89c6eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e884eae1ff89c7eb008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707883966b18b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c706290000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e869e9e1ff89c7eb008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8bee8e1ff89c6eb008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460803000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e8a7e7e1ff89c6eb008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c883966b1897708c74704306869b1c7070b0000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e08c74604c46969b1c7061f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c883966b1897708c7470404a667b1c7070b00000057b801000000e8c43ef0ff89c757b801000000e86b0e000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471805000000c74714030000008977105e89770cc7470801000000c74704e46969b15e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7c2434ff742404ff74241457ff74240c568b44243c8b5c2440e8440e000089c7578b7c241883ff010f85c60000008b7c24308b3f8d1c7d0100000083fb01750abf804069b1e98800000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777689f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf804069b1b90d0000008d77048d7a04d1e9f3a489d98b7c24308d77048d7a0ad1e9f3a48062ffbf89d7578b7c240c8b7f088b3fb801000000e9160500008d642434b8780566b18b5d04ff23f64424040175188b7c24048b3f8b3f8b07e81c1b000089c6bf01000000eb0e8d642434b8986569b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c24348b3f8d1c7d0100000083fb01750abf804069b1e98800000089df83c70c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777389f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf804069b1b90d0000008d77048d7a04d1e9f3a489d98b7c24348d77048d7a0ad1e9f3a48062ffbf89d7578b7c24108b7f088b3fb801000000eb0e8d642438b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8e6a8feff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e89a3bf0ff89c757b801000000e8c919000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8977048b74240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b3c2483ff0175088d64241c89f7eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7071f00000083c418578b7c241c8b3f8d1c7d0100000083fb01750abfdcb067b1e98c00000089df83c70a89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871a01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfdcb067b1b90b0000008d77048d7a04d1e9f3a489d98b7c241c8d77048d7a09d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf344b66b1e98400000089de83c60489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01776c89c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec6043228d1efc6443a01298062ffbf89d7578b7c24148b3fb801000000eb1c8d642420b8780566b18b5d04ff238d642420b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e835a6feff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8e938f0ff89c7578b7c240c83ff017d0e8d642428b8a84566b18b5d04ff23b8010000008b5c240ce86117000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8977045e8d64240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c418c20800f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e80ba5feff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8bf37f0ff89c757b801000000e8b616000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c430c20800f40000|@19124,1,@3978|23,0,0 97,0,@8780 112,0,@9455 197,0,0 224,0,@9455 263,0,@10224 273,0,0 281,1,@8781 322,0,0 399,0,@8782 417,0,@9455 483,1,@8783 493,0,1 556,0,@8788 591,0,1 596,0,0 720,0,@19076 759,0,0 766,0,1 776,0,@19079 781,1,@4980 790,0,@19079 796,0,@19080 835,0,0 842,0,1 852,0,@19081 857,1,@4980 866,0,@19081 872,0,@19080 911,0,0 918,0,1 928,0,@19083 933,1,@4980 942,0,@19083 948,0,@19084 987,0,0 994,0,1 1004,0,@19087 1009,1,@4980 1018,0,@19087 1051,0,@13586 1086,0,1 1095,0,20 1134,0,0 1141,0,1 1153,1,@4980 1190,0,0 1257,0,1 1266,0,20 1305,0,0 1312,0,1 1324,1,@4980 1361,0,0 1398,0,@10067 1431,0,1 1440,0,20 1473,0,0 1540,0,1 1549,0,20 1588,0,0 1595,0,1 1607,1,@4980 1644,0,0 1711,0,1 1720,0,20 1759,0,0 1766,0,1 1778,1,@4980 1815,0,0 1852,0,@10072 1887,0,@10066 1922,0,@10566 1957,0,@10072 1990,0,1 1999,0,20 2038,0,0 2045,0,1 2057,1,@4980 2094,0,@10067 2104,0,@19088 2110,0,5 2146,0,@19110 2152,0,15 2185,0,@10067 2195,0,@14164 2201,0,5 2207,0,0 2212,1,@6589 2220,0,0 2225,1,@8789 2260,0,1 2267,0,2 2274,0,1 2288,0,0 2295,0,@19112 2333,0,12 2364,1,@8790 2403,0,@18745 2423,0,4 2444,0,16777215 2498,0,0 2507,0,@18745 2512,0,6 2559,0,0 2573,0,@9465 2600,1,@8796 2607,0,0 2618,0,@19067 2707,0,@18745 2727,0,4 2748,0,16777215 2802,0,0 2811,0,@18745 2816,0,6 2863,0,0 2874,0,@9465 2946,1,@8500 2955,0,@9473 2985,0,@9473 3013,0,@10237 3022,1,@6589 3030,0,0 3035,1,@8797 3070,0,1 3077,0,0 3084,0,1 3098,0,0 3143,0,12 3198,0,15 3225,0,@14334 3245,0,4 3266,0,16777215 3324,0,0 3333,0,@14334 3338,0,5 3389,0,@10286 3409,0,4 3430,0,16777215 3484,0,0 3538,0,0 3549,0,@9465 3563,0,@9465 3635,1,@8500 3644,0,@9473 3674,0,@9473 3702,0,@10237 3711,1,@6589 3732,0,@10224 3742,0,0 3751,1,@8798 3786,0,1 3793,0,0 3800,0,1 3814,0,0 3860,0,12 3933,1,@8500 3942,0,@9473 3972,0,@9473 4000,0,@10237 4009,1,@6589 4017,0,0 4022,1,@8799 4057,0,1 4064,0,0 4071,0,1 4085,0,0 4127,0,12 8780:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9d12ae3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@3958|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8781:D3,164|3b650c7305ff552ccd093bc37506b801000000c3bfcc5366b18b75008d76f83b75087305ff5528cd89897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc0200000089570489375783c002710e8d642404b8f80466b18b5d04ff23e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@10221,1,@3959|15,0,0 21,0,@10423 54,0,9999 107,0,@9455 8782:D3,408|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9010f8ef700000083e902710e8d642404b8f80466b18b5d04ff2383f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4a8b14248b520c83e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f08e8f228e3ffeb7383fe03753883ff017d0e8d642404b8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000eb3683ff017d0e8d642404b8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700050000008b3c248b5f048d642404e96e28e3ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f40000|@18420,1,@3960|29,0,@18415 57,0,@9455 76,0,@18415 106,0,@9455 158,1,@5181 179,0,@18418 219,0,0 235,0,@18418 275,0,2 290,1,@5181 309,0,@18418 349,0,0 360,0,@18418 400,0,2 8783:D3,180|3b650c7305ff552ccd095053bb010000008b7c2404f7c70100000075288b570489de83c602710e8d642408b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642408b8a84566b18b5d04ff23b801000000e86600000089c7578b5c24148b0424e8cf00000089c3bad0a766b18b442408e82ff9e4ff89c7578b7c2418578b4424088b5c240ce8be01000089c78b7424148b142489168d642410897e04b801000000c20800f4000000|@19074,1,@3965|13,0,0 44,0,@9455 79,0,@10224 89,0,0 94,1,@8784 109,1,@8785 116,0,@11313 125,1,@5472 146,1,@8787 169,0,0 8784:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb750a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@3961|25,0,0 42,0,@9455 8785:D3,112|3b650c7305ff552ccd09a801755a8b308b40048b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000895f08897704c707286c46b157e8c1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3963|53,0,@8786 105,0,0 8786:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@19073,1,@3962|27,0,@9455 68,0,1 115,0,8 8787:D3,216|3b650c7305ff552ccd0953a8010f85b60000008b38ff70048b5424048b3289d28b52048b4c240c8b092bf1710e8d642408b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c2410578b4424088b5c240ce862ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc204008d642404b801000000c20400f40000|@10030,1,@3964|50,0,@9455 91,0,1 135,0,8 206,0,0 8788:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19075,1,@3966|31,0,@9455 8789:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3967|16,0,0 27,0,@9455 74,0,@10071 8790:D3,2480|3b650c7305ff552ccd0953a80175508b3089f78b7604f7c6010000007407be03000000eb05be0100000083f60283fe03752dff70048b7704ff36ff378b4708ff770cff77108b5c242ce87609000089c7578b742404bf01000000e9ec0000008b3c248b3f8d1c7d0100000083fb01750e8d642404bff86969b1e98900000089df83c72089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879500000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abff86969b1b9210000008d77048d7a04d1e9f3a489d95f8d77048d7a14d1e9f3a48062ffbf89d78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c106a69b1897808c74004b83166b1c7008400c0b08b5d04ff238d642404b8780566b18b5d04ff23f7c60100000075698b0e8b56048b1983fb01754b8b49048b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000894b04c703010000008b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000c74104010000008919eb0289f989cf89d63b650c7305ff552ccdc0eb8f578b75008d76f03b75087303ff5528897500c746fc03000000c74608010000008b7c2410897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7063c5c66b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e89dd5e1ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e81508000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000005a895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e835d4e1ff89c7eb00578b7c241483ff0375065fe9260400008b442430e8a407000089c7578b7c24108b3f83ff050f85130100008b7c24108b7f088b3f83ff0b7507bf03000000eb05bf0100000083ff030f85ea0000008b7c2410ff77048b7c24148b7f088b4704e86dd6ffff8b5c2404e8b03fe3ff89c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c7038c7a46b16a016a01548b44240ce8d141f0ffff34248b7c24188b3f83ff0d75146a018b44241cbb05000000e8d7c6e1ff89c7eb338b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c01000000c74708050000008b742418897704c7071700000057b8286a69b1e8ddd7e1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f00000057bf5c4269b1eb148d642424eb048d642424b8d46469b18b5d04ff23f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8346a69b1e8a8d2e1ff89c7eb05bf346a69b1578b5424488b5c24508b7c2444578b44240cff1289c7578b75008d76f43b75087303ff5528897500c746fc02000000c74604044269b18b7c2408893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8bdd6e1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f0000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e865d6e1ff89c68b5424408b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c03000000895708897704c7070f0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e8d64240889378b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c24108938e8c305000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707c43966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707783966b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c7072900000083c414f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8ffcfe1ff89c7eb0057f64424180174095f83c41ce9eb0000008b7c24048b3f83ff0d75146a018b442408bb01000000e833c3e1ff89c7eb338b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c01000000c74708010000008b742404897704c7071700000057b8286a69b1e839d4e1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24388b7424348b5424308b4c242c8b5c242857565251538b4424308b5c2434e806f7ffff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b7424048977085e8d642404897704c7070b00000083c41c57bf506a69b1f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd80ebdebf01000000eb05bf0300000083ff03750eb8786a69b1e8bccee1ff89c7eb05bf786a69b18b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c74004886a69b1c7000b000000c21400f400|@19123,1,@3973|31,0,1 38,0,0 74,1,@8791 86,0,0 117,0,@19113 137,0,4 158,0,16777215 216,0,0 225,0,@19113 230,0,16 292,0,@19114 302,0,@9978 308,0,@4611 322,0,@9465 385,0,0 418,0,0 472,0,0 485,0,6 518,0,0 555,0,@10566 588,0,1 597,0,20 636,0,0 643,0,1 655,1,@4980 692,0,0 699,1,@8792 734,0,0 744,0,6 777,0,0 845,0,@10072 880,0,@10072 915,0,@10072 948,0,1 957,0,20 996,0,0 1003,0,1 1015,1,@4980 1044,1,@8793 1081,0,1 1088,0,0 1119,1,@8765 1128,1,@5210 1165,0,@8794 1179,1,@6630 1204,0,2 1209,1,@4973 1244,0,0 1251,0,2 1264,0,11 1270,0,@19115 1275,1,@4985 1310,0,1 1323,0,7 1329,0,@18765 1346,0,@19060 1390,0,0 1397,0,1 1407,0,@19116 1412,1,@4980 1421,0,@19116 1475,0,@18760 1514,0,0 1523,0,20 1556,0,0 1563,1,@4985 1598,0,1 1611,0,7 1644,0,0 1651,1,@4985 1690,0,1 1702,0,7 1735,0,0 1813,1,@8795 1848,0,0 1885,0,@10072 1920,0,@10072 1955,0,@10066 1990,0,@10072 2023,0,1 2032,0,20 2074,0,0 2081,0,1 2093,1,@4980 2136,0,0 2141,1,@4973 2176,0,0 2183,0,0 2196,0,11 2202,0,@19115 2207,1,@4985 2242,0,1 2255,0,7 2346,0,5 2355,0,@19118 2394,0,0 2401,0,1 2411,0,@19121 2416,1,@4980 2425,0,@19121 2465,0,@19122 2471,0,5 8791:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e996c1e1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3968|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8792:D3,212|3b650c7305ff552ccd01a8010f8581000000ff308b4004e8e4ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb06b8c43966b1c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e98bcce1ffc3f400|@11273,1,@3969|59,0,0 132,0,0 141,0,20 148,0,@10072 188,0,0 195,0,1 205,1,@4980 8793:D3,116|3b650c7305ff552ccd01a801755f8b388b40048b378b57048b7d008d7ff03b7d087305ff5528cd45897d00c747fc03000000895708897704c7070d00000057e8bcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@3970|58,0,6 110,0,0 8794:D3,132|3b650c7305ff552ccd058b7a04f7c701000000753b8b178b77048b1a8b088b1b3bcb751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebbdbf0100000083ff017506b801000000c38b3f8b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19059,1,@3971|81,0,0 91,0,0 8795:D3,212|3b650c7305ff552ccd01a8010f8581000000ff308b4004e8e4ffffff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000eb06b8c43966b1c3f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e983cae1ffc3f400|@11273,1,@3972|59,0,0 132,0,0 141,0,20 148,0,@10072 188,0,0 195,0,1 205,1,@4980 8796:D3,76|3b650c7305ff552ccd01a80175368b388b4004ff7708e8e5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@3974|69,0,0 8797:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3975|16,0,0 27,0,@9455 74,0,@10071 8798:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3976|15,0,0 26,0,@9455 73,0,@10071 8799:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@3977|16,0,0 27,0,@9455 74,0,@10071 8800:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@3979|15,0,0 26,0,@9455 73,0,@10071 8801:D3,252|3b650c7305ff552ccd098b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e9a6bbe1ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe0575708b78048b70088b3f8b0e8b338b53048b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c383ff0375048b4004c3b8802569b18b5d04ff23f40000|@18425,1,@3980|49,0,0 54,1,@4973 87,0,0 106,0,11 140,0,@9455 181,0,0 225,0,8 240,0,@18421 8802:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3983| 8803:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f04ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3985|71,0,0 8804:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3986| 8805:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@3987|68,0,0 8806:D3,52|3b650c7305ff552ccd018b388b70048b76108b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@19129,1,@3988| 8807:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3989| 8808:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3990| 8809:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3991| 8810:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3992| 8811:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3993| 8812:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@3994| 8813:D3,1036|3b650c7305ff552ccd0d5250538b7c2414ff378b7c2418ff77048b7c241cff77088b7c2420ff770c8b7c2424ff77148b442418e8e803000089c757ff74241cf604240175598b34248b3e89f6ff76048b77088b368b7f0c8b460c8b5d008d5bec3b5d087305ff5528cd81895d00c743fc04000000897b0c8b7c2420897b088b7c241c897b04c703bc8746b1e81095ffff5e8934243b650c7303ff552ceba18d6424048b44241c8b5c240ce81504000089c7578b7c24208b342483ff01756983fe0175568b4424208b5c2408e86c04000089c38b7c24308b7424248b7604ff3424ff742410ff742420ff74242053ff74241c57ff74243cff742420ff74242856ff7424488b442450e89406000089c7578b7c24248b742404eb6d8d642428b8b0a166b18b5d04ff238b1fff7704f7c60100000075448b168b4e048b5b088b1b8b5b088b0383f80575228b43048b5b0889108b54241889135a89ce89d73b650c7305ff552ccdc0e94fffffff8d64242cb8007069b18b5d04ff238d64242cb8b0a166b18b5d04ff2383ff01755b83fe0175488b7c24348b378b7c24348b7f048b5424348b52088b4c24348b59108b4c24348b49146a016a015756525154830424108b442424e82026feffff3424ff7424088b7c242c8b7f34eb6d8d64242cb8b0a166b18b5d04ff238b1fff7704f7c60100000075448b168b4e048b5b088b1b8b5b088b0383f80575228b43048b5b0889108b54241c89135a89ce89d73b650c7305ff552ccdc0e95dffffff8d642430b8007069b18b5d04ff238d642430b8b0a166b18b5d04ff23f7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9e60000008b3f8b3781fe0c02c0b0750e8b7f0883ff030f8491000000eb0e8d64243cb8483366b18b5d04ff238b7c241089f883ff01750e8d64243cb84c7767b18b5d04ff23e8ea18f0ff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54240489570489378b742440893e8b3c24897e048d642408b80100000083c434c208008b442418e866760000ff742418f604240175218b3c248b0789ffff77048b5c2434e85d7a00005e8934243b650c7303ff552cebd98d642404e942fffffff7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64243cb8489d66b18b5d04ff238b3f8b3781fe0c02c0b075118b7f0883ff030f85cffeffffe94bffffff8d64243cb8483366b18b5d04ff23f4000000|@19198,1,@4078|52,1,@8814 135,0,@8815 140,1,@8739 171,1,@8816 204,1,@8817 264,1,@8821 286,0,@11274 367,0,@19158 381,0,@11274 452,1,@8461 477,0,@11274 558,0,@19158 572,0,@11274 598,0,@4660 649,0,0 659,0,@10769 674,0,@4660 699,0,@9999 724,0,@13576 734,1,@6591 771,0,3 827,0,0 842,1,@8889 871,1,@8895 915,0,@4660 966,0,0 980,0,@11247 995,0,@4660 1023,0,@9999 8814:D3,80|3b650c7305ff552ccd01a80175388b388b40048b7f08ff37e8e3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@3996|71,0,0 8815:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce923e4f4fff40000|@19133,1,@3997|26,0,1 37,1,@7270 8816:D3,100|3b650c7305ff552ccd0953a8017547ff70048b542404b805000000ff1289c7578b4424048b5c2408e8d3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10030,1,@3998|23,0,2 91,0,0 8817:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e85900000089c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@4002|31,1,@8818 97,0,0 8818:D3,84|3b650c7305ff552ccd0989df8b70088b368b460c8b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703588946b16a016a0154e8872bf0ff8d64240458e89de3fdffe924010000f4000000|@19135,1,@4001|51,0,@8819 61,1,@6630 71,1,@8411 76,1,@8820 8819:D3,248|3b650c7305ff552ccd05508b7a04f7c70100000075238b37ff77048b760c8b1683fa0375058b7604eb195e89f73b650c7305ff552ccd80ebd58d642404b801000000c3f7c601000000753f8b0e8b56048b198b1b8b4424048b003bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebb9be0100000083fe0175125e89f73b650c7305ff552ccd80e968ffffff8d6424088b3e8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19134,1,@3999|62,0,0 139,0,0 213,0,6 8820:D3,96|3b650c7305ff552ccd01a801754aff308b40048b3c248b7f0483e70983ff01742ee8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a8ffffffb801000000c3f400|@9865,1,@4000|89,0,0 8821:D3,5236|8dbc245cffffff3b7d0c7305ff5530cd09a8010f8557010000f6c3010f854c0100008b7c2430f7c7010000000f853c010000ff30ff70048b7c24048b3fff378b7c24088b7f088b3fff378b7c240c8b7f10ff378b7c24108b7f14ff378b7c2414ff77048b7c2418ff770cff33ff73048b7c2458ff378b7c245cff77048b7c245c8b3f8d3c7d01000000578b7c24248b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c2420e9a600000083fb01750d8d6424048b7c245ce99400000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff01777789c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c246089f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b7424208d7604d1ef8d3c3ad1e9f3a48062ffbf89d757bf010000008b742410eb188d642434b8780566b18b5d04ff23eb00b801000000c23000f7c60100000075288b4e0489fa83c202710e8d642434b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd057f644241c01751d8b7c241c8b3f8b3f8b07e8c912000089c757ff74242068b83966b1eb0e8d642438b8486e69b18b5d04ff23f64424040175538b7c24048b3f8b742404ff7604f64424040175298b7424048b760483fe017507be03000000eb05be0100000083fe03750c8b4704e8dd12000089c2eb048b5424045e891424897424043b650c7303ff552ceba65f8b7424688b763483c404f7c601000000753b8b0e8b56048b1981fb0402c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750abee46966b1e9581100008b368b1681fa0402c0b0750e8b760883fe030f8436110000eb0e8d64243cb8483366b18b5d04ff23be0100000089faf6c20175288b5a0489f183c102710e8d64243cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd3566a016a01f7c70100000075288b770483fe017507be03000000eb05be0100000083fe03750f8b3f893c24c744240401000000eb11bf144167b18b378934248b7f04897c2404ff3424ff7424088b74241883ee018b3c2403fe57710e8d642454b8f80466b18b5d04ff238b442418e8ee1a000089c65ff7c601000000752c8b0e8b560489fb83eb0103cb710e8d642450b8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc0ebcc578b7c244083ff0375208b3c2483ff03750eff74241868305c66b1e9390f0000bf01000000e92a0f0000bf01000000578b44243c8b5c2444e80a1b000089c757ff742424ff742420b8010000008b5c2428e8451c000089c757bf010000008b3424f7c60100000075288b4e0489fa83c202710e8d642460b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578bbc24880000008b3f8bb42488000000ff7604ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b75008d76f03b75087305ff5528cd80897500c746fc030000008b5424048956088b1424895604c706bcad46b183c70257710e8d642470b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b5424048957088977048b34248937578b7c246083ff030f85120100008b7c24102b7c2420710e8d642474b8f80466b18b5d04ff2383c7018b5c24202b5c2424710e8d642474b8f80466b18b5d04ff2383c3012b5c243c710e8d642474b8f80466b18b5d04ff2383c30183fb03755e83ff017d0e8d642474b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000e9600d000083fb017f0e8d642474b8dc6e69b18b5d04ff2383fb017d0e8d642474b8a84566b18b5d04ff2357b801000000e8231e000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9c00c00008b7c243c83ef018b5c242403df710e8d642474b8f80466b18b5d04ff23ff7424108b44243ce8a81e000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e822b5e1ff89c7eb0057be030000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707dcb246b157ba803066b18b44242cbb03000000e893cedfff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604604467b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707080e66b18b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c244c8938e8e38ddfff89c7578b7c244483ff037507bf03000000eb05bf0100000083f7028b74244c83fe017d118da42484000000b8a84566b18b5d04ff23ff74242057ff74241cb8010000008b5c2458e8ab20000089c3bad0a766b18b442460e893d1e4ff89c757ffb424a80000006a01f64424040175178b7c24048b3f8b742404ff760457ff742408e98c0900005b83fb0175078d6424045aeb128d6424048b0424e8dc21000089c28d6424048b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000895704c70703000000b9010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0c8b7c2408897e088b7c2414897e048b3c24893e8b8c24a40000008b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048937578bbc24a4000000ff378bbc24a8000000ff77108bbc24ac000000ff771c8b7c244083ff037507bf01000000eb3c8b8424ac0000008b9c24a80000008bbc24b80000008bb424bc000000576a015652ff742434ff742430ff742440ff74244cff74244ce83721000089c7578bbc24a40000008bb424a00000008b9424a80000008b45008d40b83b45087305ff5528cdc4894500c740fc110000008950408b54240489503c8b5424108950388b5424188950348b54241c8950308b54242889502c8b54240c8950288b5424248950248b54244089502089701c8978188b7c24388978148b7c242c8978108b7c243489780c8b7c24308978088b7c245c897804c700a4b946b1ba5c7169b1ff742424ffb42494000000ffb4248c000000ffb42488000000ff742418ff74243cff742424ff7424388b9c2488000000e8b12a000089c757bf010000008b742440f7c601000000752b8b4e0489fa83c20271118da424a0000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd3b7c244c75148b7c24188b07e8d53fffff89c7b801000000eb118da424a0000000b8d07269b18b5d04ff23f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc48b7c240483ff01750489c6eb0b8b5c2404e8e157000089c683fe0175065f83c418eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a895708897704c7071f00000083c418578b7c241c8b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e84b75feff8b7c240cff378b7c24108b3f8b742410893e8b7c240881ff100666b17502eb2b8b7c24088b3f8d3c7d0100000083ff017520bf100666b18b7424088d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240857e86357000089c7578b442434e8c757000089c78b75008d76dc3b75087305ff5528cd80897500c746fc080000008b54244889561c8b542408895618c7461403000000897e105f897e0cc74608010000005f8d642404897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057f644246401740c8bbc24ac000000e9920000008bbc24ac0000008b378bbc24ac0000008b7f04ba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089118b55008d52f03b55087305ff5528cdc2895500c742fc03000000897a08894a04c70294ee46b183c60271118da42488000000b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578bbc24880000008b7f088b3f8b7f088b3783fe050f85520100008b57048b77088b7c2460893a8bbc24b0000000893e8b7c243483ff030f85d40000008d6424048b7d008d7ff43b7d087303ff5528897d00c747fc020000005e8977048b742458893757ffb424b4000000ffb424b4000000ffb424b4000000ffb424b4000000ffb424b40000008bbc24b40000008bb424b00000008b9424ac0000008b8c24a80000008b9c24a40000008b8424a0000000ff74246cff742414ff742414ff742414ff742414ff7424145756525153508b8424c40000008b9c24a4000000e896f2ffff89c78d6424148b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893881c484000000c230006a016a018bbc24b8000000681c7369b1ff74245c5483042408ff74247457ff742470ff742420ff742470ff7424688b44242c8b9c2484000000e809570000ff3424f64424740174095e83c40ce949020000bf010000008b742474eb118da4248c000000b8007069b18b5d04ff23f7c601000000752b8b4e0489fa83c20271118da42498000000b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebcd578b7c24688b3f8d1c7d0100000083fb01750abf145969b1e99100000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777c89f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24688d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320150d1efc6443a02298062ffbf89d7578b7c24148b7f088b3fb801000000eb118da4249c000000b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e80c71feff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8d8a3e1ff89c7578b7c240883ff017d118da424a4000000b8a84566b18b5d04ff23b8010000008b5c2408e8c561000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977105e89770cc74708010000005e8d6424048977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7061900000083c40c8b54245c83c20271118da42488000000b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f048917578b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b74245c893757ffb424b8000000ffb424b8000000ffb424b8000000ffb424b8000000ffb424b80000008bbc24b80000008bb424b40000008b9424b00000008b8c24ac0000008b9c24a80000008b8424a4000000ff742470ff742414ff742414ff742414ff742414ff7424145756525153508b8424c80000008b9c24a8000000e8f0eeffff89c68d6424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893881c484000000c23000f64424040175138b7c24048b378b7c2404ff77048b7c2418eb1d5a8b742404895424088974240c3b650c7303ff552c83c408e91ff6fffff7c701000000753b8b0f8b57048b198b1b8b063bd8751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0ebbdbf0100000083ff017405e9ad0000008b7c2404f7c701000000753b8b0f8b57048b198b1b8b063bd8751e8b7d008d7ff83b7d087305ff5528cd42897d00c747fc01000000890feb1389d73b650c7305ff552ccdc0ebbdbf0100000083ff017507bf03000000eb05bf0100000083f70283ff0374488b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704087469b189378b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893aeb048b5424045e891424897424043b650c7303ff552ce9b1fefffff7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8b8a8e1ff89c7eb00e991f3ffffe9d6f0ffff8b7c24043b3c24750b8d642408bf03000000eb3df644240401752df6042401751c8b7c24048b3f8b742404ff76048b7424048b368b542404ff7204eb398d642408bf01000000eb2c8d642408bf0100000083ff0375178b7c240883ff037507bf03000000eb05bf01000000eb05bf01000000eb87ebdb3bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff03751d8b7424045a8d642404891424897424043b650c7303ff552ce91cffffff8d642410bf01000000eb85bfb83966b1e9d0eefffff7c601000000753b8b0e8b56048b1981fb0402c0b0751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebbdbe0100000083fe01750e8d64243cb8489d66b18b5d04ff238b368b1681fa0402c0b0750e8b760883fe030f855deeffffeb818d64243cb8483366b18b5d04ff23f400|@19192,1,@4070|206,0,4 227,0,16777215 281,0,0 342,0,0 357,0,@9465 369,0,0 399,0,@9455 443,1,@8822 455,0,@10071 466,0,@19148 515,0,1 522,0,0 535,1,@8823 593,0,@4659 644,0,0 654,0,@10769 669,0,@4659 694,0,@9999 704,0,0 730,0,@9455 777,0,1 784,0,0 802,0,0 809,0,@12866 852,0,@9455 866,1,@8827 900,0,@9455 948,0,@10565 958,0,0 968,0,0 982,1,@8828 998,0,0 1007,1,@8829 1015,0,0 1045,0,@9455 1091,0,0 1165,0,@8835 1180,0,@9455 1259,0,@9455 1286,0,@9455 1309,0,@9455 1336,0,@11112 1376,0,0 1411,0,8 1430,0,@19152 1449,0,@10224 1460,0,0 1465,1,@8836 1500,0,0 1509,0,20 1538,0,@9455 1556,1,@8837 1591,0,0 1600,0,20 1639,0,0 1646,0,1 1658,1,@4980 1668,0,1 1733,0,@8839 1739,0,@9967 1748,0,1 1753,1,@4896 1788,0,@12923 1825,0,@9545 1865,1,@4827 1882,0,1 1889,0,0 1913,0,@10224 1932,0,0 1941,1,@8840 1948,0,@11313 1957,1,@5472 2024,1,@8842 2065,0,1 2070,0,0 2229,0,0 2289,1,@8843 2445,0,@8845 2450,0,@19167 2503,1,@8848 2511,0,0 2545,0,@9455 2583,1,@8677 2590,0,0 2604,0,@19183 2691,1,@8871 2743,0,15 2758,0,0 2825,1,@8500 2853,0,@9473 2880,0,@9473 2905,0,@10237 2917,1,@8872 2929,1,@8873 2978,0,1 2992,0,0 3038,0,12 3082,0,0 3148,0,@8874 3165,0,@9455 3493,0,@19186 3539,1,@8876 3563,0,0 3581,0,@19158 3616,0,@9455 3661,0,@18976 3681,0,4 3702,0,16777215 3756,0,0 3826,0,0 3840,0,@9465 3912,1,@8500 3921,0,@9473 3951,0,@9473 3979,0,@10237 3988,1,@4975 4012,0,@10224 4022,0,0 4031,1,@8887 4066,0,1 4073,0,0 4080,0,0 4094,0,0 4140,0,12 4164,0,@9455 4570,0,0 4656,0,0 4666,0,1 4673,0,0 4714,0,@19190 4817,0,0 4824,0,1 4836,1,@4980 4868,0,1 4920,0,0 4931,0,0 4950,0,1 4957,0,0 4964,0,0 4977,0,1 5030,0,0 5037,0,0 5044,0,0 5087,0,0 5094,0,@10071 5120,0,@4659 5171,0,0 5185,0,@11247 5200,0,@4659 5225,0,@9999 8822:D3,92|3b650c7305ff552ccd0189c7f7c701000000753f8b07ff7704e85200000089c7578b442404e8d6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f40000|@10030,1,@4007|26,1,@8823 84,0,0 8823:D3,1112|3b650c7305ff552ccd018b38bed09f46b181c61d0000008d74befcffe6e9f3000000909090e9eb000000909090e9e9000000909090e91c010000909090e925010000909090e959010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e939010000909090e99b000000909090e993000000909090e929010000909090e929010000909090e95c010000909090e973000000909090e96b000000909090e950010000909090e980010000909090e953000000909090e94b000000909090e97e010000909090e93b000000909090e933000000909090e96e010000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090b8b83966b1c38b78048b7f088b07bad46c69b1e83f03000089c783f7028b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b78048b7f045768b83966b1e9930200008b7804ff77048b4708e88bfeffffa80175258b780483ff017507bf03000000eb05bf0100000083ff03750658e968feffff8d642404eb048d642404c38b4008e955feffff8b7804e9160200008b4004e945feffff8b78048b7f088b07bad46c69b1e89f02000089c783f7028b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b78088b3f89fee9f10000008b78048b07bad46c69b1e85b02000089c783f7028b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c38b78048b3f83ff01750ab8246d69b18b5d04ff23eb728b4004e9a8fdffff8b78088b3f8b3789f283fe0b752b8b770c8b760c8b76048b1683fa0575118b760889f73b650c7305ff552ccd80ebd6b8746d69b18b5d04ff2389d683fa0d75138b77048b3689f73b650c7305ff552ccd80ebb283fe0775088b4704e9bc050000b8cc6d69b18b5d04ff23f7c701000000751f8b178b770483fe0175078b02e925fdffff89f73b650c7305ff552ccd80ebd9b8dc7b66b18b5d04ff238b0e89ca83f907750c8b76086a016a01e98d00000083fa0d75138b56048b1289d63b650c7305ff552ccdc0ebd3be0100000083fe037506b8b83966b1c38b3789f283fe0b752b8b770c8b760c8b76048b1683fa0575118b760889f73b650c7305ff552ccd80ebd6b8746d69b18b5d04ff2389d683fa0d75138b77048b3689f73b650c7305ff552ccd80ebb283fe0775088b4704e95d050000b8cc6d69b18b5d04ff238b1683fa01751a8b56048b7608891424897424048d6424045e83f602e96fffffff8b56048b1289d63b650c7305ff552ccdc0ebccf7c701000000751f8b178b770483fe0175078b02e91efcffff89f73b650c7305ff552ccd80ebd9b8dc7b66b18b5d04ff23f64424040175508b7424048b3e89f6ff7604f64424040175288b7424048b760483fe017507be03000000eb05be0100000083fe03750b8b07e8c9fbffff89c2eb048b5424045e891424897424043b650c7303ff552ceba95883c404c3f400|@19147,1,@4006|13,0,@8823 278,0,@10071 292,0,@19136 297,1,@8824 335,0,0 350,0,@10071 386,0,1 393,0,0 452,0,@19136 457,1,@8824 495,0,0 520,0,@19136 525,1,@8824 563,0,0 581,0,@19138 648,0,@19141 692,1,@8825 697,0,@19144 746,0,@11017 801,0,0 811,0,@10071 859,0,@19141 903,1,@8826 908,0,@19144 1009,0,@11017 1056,0,1 1063,0,0 8824:D3,1012|3b650c7305ff552ccd0552e82416f0ff89c78b1789d683fa097512ff77048b7c24048b7f08ff378b7c2404eb5683fe0b75478b77048b7f0c83fe0175328b7f0c8b570489d68b1283fa03751989f78b7f045e8b76043bfe7506b803000000c3b801000000c38d642404b801000000c38d642404b801000000c38d642404b801000000c383ff01750e8d642404bf01000000e9c20000008b17ff77048b7424048b760c8b520c8b5e0489d98b1b83fb0375408b420489c38b0083f8037507b803000000eb05b80100000083f80375238b710489da8b52043bf27507be03000000eb05be0100000083fe0375528d642408eb6289cb8b0983f90175398b420489c18b0083f8017507b803000000eb05b80100000083f803751c89de8b760c89ca8b520c3bf27507be03000000eb05be01000000eb05be0100000083fe0374125e89f73b650c7305ff552ccd80e934ffffff8d642408bf0300000083ff03752d8d6424048b3c248b7f088b378b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937e9140200008b3c2483ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755989ca8b4a048b5424048b52043bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b760c8937e99d0100008b3c24eb1189f73b650c7305ff552ccd80e976ffffff83ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755989ca8b4a048b5424048b52243bd17507ba03000000eb05ba0100000083fa037538bf0300000083ff0375298d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76108937e9130100008b3c24eb1189f73b650c7305ff552ccd80e976ffffff83ff017507bf01000000eb3a8b178b77048b520c8b5a0489d98b1b83fb03755789ca8b4a048b5424048b52203bd17507ba03000000eb05ba0100000083fa037536bf0300000083ff0375298d6424048b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76148937e9890000005feb1189f73b650c7305ff552ccd80e978ffffff83ff017507bf01000000eb3d8b178b77048b520c8b5a0489d98b1b83fb030f859400000089ca8b4a048b14248b521c3bd17507ba03000000eb05ba0100000083fa037574bf0300000083ff0375228b7d008d7ff83b7d087303ff5528897d00c747fc010000008b34248b76188937eb05bf0100000083ff01750a8d642404b801000000c38b3f8b7f0c8b570489d68b1283fa03751989f78b7f045e8b76043bfe7506b803000000c3b801000000c38d642404b801000000c389f73b650c7305ff552ccd80e937fffffff400|@19137,1,@4003|12,1,@6635 90,0,1 96,0,0 106,0,0 116,0,0 126,0,0 141,0,0 190,0,1 197,0,0 219,0,1 226,0,0 263,0,1 270,0,0 294,0,1 301,0,0 308,0,0 340,0,1 403,0,0 446,0,1 453,0,0 463,0,1 541,0,0 584,0,1 591,0,0 601,0,1 679,0,0 722,0,1 729,0,0 739,0,1 815,0,0 861,0,1 868,0,0 878,0,1 922,0,0 936,0,0 972,0,1 978,0,0 988,0,0 8825:D3,96|3b650c7305ff552ccd01a801754a8b38ff70048b4704bad46c69b1e8d8fbffff89c783f702578b442404e8d1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10030,1,@4004|23,0,@19136 28,1,@8824 89,0,0 8826:D3,96|3b650c7305ff552ccd01a801754a8b38ff70048b4704bad46c69b1e864fbffff89c783f702578b442404e8d1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f400|@10030,1,@4005|23,0,@19136 28,1,@8824 89,0,0 8827:D3,124|3b650c7305ff552ccd01a801750c8b308b4004bf01000000eb06b801000000c3f7c60100000075248b4e0489fa83c202710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd457e8aeffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10030,1,@4008|20,0,0 27,0,0 51,0,@9455 8828:D3,320|3b650c7305ff552ccd0953a8010f85220100008b30ff70048b3e8b3fff76048b5e088b460c8b74240883fe03751af7c70100000075048b37eb588d64240cb8648e66b18b5d04ff23becc5366b18b55008d52f83b55087305ff5528cdc9895500c742fc0100004089328b75008d76ec3b75087305ff5528cd8d897500c746fc04000000895e0c895608897e04c70633000000bf902d66b18b55008d52f83b55087305ff5528cdc9895500c742fc01000040893abf902d66b18b4d008d49f83b4d087305ff5528cdcd894d00c741fc0100004089398b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894714895f10894f0c8957088977045e8937578b4424048b5c2408e8f2feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424088938c38d642404b801000000c3f4|@10030,1,@4009|63,0,@11149 73,0,@10423 142,0,25 147,0,@9922 180,0,@9922 314,0,0 8829:D3,172|3b650c7305ff552ccd0950f6c30175308b03ff73048b7c240489fb83ff017502eb05e8990000005b8b74240c8b542408895424088974240c83c404e9c0ffffff8b7c240c83ff017d0e8d642404b8a84566b18b5d04ff238b5c240cb801000000e8bf0000008b7c240883ff03751d83f801750458c208005e89c389f08b3c24897c240883c408e9fd000000e85c01000089c383fb01750458c20800588b3c24897c240883c408e99d010000f4|@19151,1,@4015|35,1,@8830 78,0,@10224 92,0,0 97,1,@8831 135,1,@8832 140,1,@8833 167,1,@8834 8830:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4010| 8831:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f400|@10221,1,@4011|15,0,0 26,0,@9455 73,0,1 8832:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4012| 8833:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8b83966b1c3f4|@10825,1,@4013|66,0,@10071 8834:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4014| 8835:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e919e4e2ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4016|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8836:D3,204|3b650c7305ff552ccd093bc37508b801000000c204008b7c240483ef0103f8710ab8f80466b18b5d04ff2383ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e862ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@4017|15,0,0 34,0,@9455 49,0,@11112 89,0,0 124,0,8 139,0,@9455 8837:D3,592|3b650c7305ff552ccd0953a801752bff30ff70048b7c24102b7c2408710e8d64240cb8f80466b18b5d04ff2383c701be010000008b542404eb0c8d642404b801000000c20400f6c20175288b5a0489f183c102710e8d64240cb8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4ebd32bfe710e8d64240cb8f80466b18b5d04ff2383c701bb010000008b742404f7c60100000075288b4e0489da83c202710e8d64240cb8f80466b18b5d04ff2389ce89d33b650c7305ff552ccdc8ebd083fb03755e83ff017d0e8d64240cb8948966b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000e99b00000083fb017f0e8d64240cb8dc6e69b18b5d04ff2383fb017d0e8d64240cb8a84566b18b5d04ff2357b801000000e80f01000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e82595e1ff89c7eb0057bf010000008b742408f7c60100000075288b4e0489fa83c202710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ef018b5c240c03df710e8d642410b8f80466b18b5d04ff238b7c2414578b442408e8e0fdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c408c20400f400|@19155,1,@4019|35,0,@9455 48,0,0 63,0,0 90,0,@9455 124,0,@9455 137,0,0 168,0,@9455 208,0,@11112 248,0,0 283,0,8 302,0,@19152 321,0,@10224 332,0,0 337,1,@8838 372,0,0 381,0,20 420,0,0 427,0,1 439,1,@4980 449,0,0 480,0,@9455 521,0,@9455 8838:D3,204|3b650c7305ff552ccd093bc37508b801000000c204008b7c240483ef0103f8710ab8f80466b18b5d04ff2383ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e862ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@4018|15,0,0 34,0,@9455 49,0,@11112 89,0,0 124,0,8 139,0,@9455 8839:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19156,1,@4020|31,0,@9455 8840:D3,168|3b650c7305ff552ccd093bc37508b801000000c20c008b7424048b5424088b4c240c8b7d008d7fe43b7d087305ff5528cd4f897d00c747fc06000000894f14894710895f0c895708897704c707d8b346b15783c002710e8d642404b8f80466b18b5d04ff238b7c24108b74240c8b542408575652e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20c00f4000000|@10221,1,@4022|15,0,0 77,0,@8841 92,0,@9455 8841:D3,180|3b650c7305ff552ccd0589d18b79108b711483ee0103fe710ab8f80466b18b5d04ff238b710c2bfe710ab8f80466b18b5d04ff2383c7018b71082bfe710ab8f80466b18b5d04ff2383c7018b308b50048b49042bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f400|@19157,1,@4021|26,0,@9455 43,0,@9455 63,0,@9455 88,0,@9455 129,0,1 173,0,8 8842:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4023| 8843:D3,936|3b650c7305ff552ccd0950f60424010f85e8000000f6c3010f85dd0000008b7c2428f7c7010000000f85cb0000008b7c24288b3f83ff017507bf03000000eb05bf0100000083ff030f85ab0000008b3c248b0789ff8b57048d6424048b0b8b73048b7c24248b7f048b58088b1b8b5b088b0383f80575788b43048b5b0889088b4c241c890b525657ff74242cff74242cff74242c8b74242c8b5424288b4c24248b5c24208b44241c8944241c8b442414895c24208b5c2410894c2424895424288974242c8b3c24897c24308b7c2404897c24348b7c2408897c24388b7c240c897c243c83c418e915ffffff8d642418b8007069b18b5d04ff23eb00eb00f60424010f8595020000f6c3010f85860200008b7c2428f7c7010000000f85700200008b342489f7ff3689ffff7704ff33ff73048b7c24388b078b7c2438ff77048b5c24308b7c242c57e87002000089c7578b7c242cff378b7c24308b3f83c702710e8d642420b8f80466b18b5d04ff238b742430893e8b7c243c8b378b7c242c2bfe710e8d642420b8f80466b18b5d04ff2383c70183ff017d0e8d642420b8d02469b18b5d04ff2383ff017e508b54242883ef02710e8d642420b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24108938ff128b5c2424e851dbe2ff89c6eb3c8b7c241083ff017d0e8d642420b8282569b18b5d04ff238b75008d76f43b75087303ff5528897500c746fc020000008b7c2410897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c241c8b7f088b3f8b7f088b3783fe050f85100100008b57048b77088b7c2404893a8b7c2438893e8b442408e89393e1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c5f8d642404897e08c7460401000000c706030000008b5424388b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937ff74240cff742408ff74240857ff742444ff7424448b7424448b5424408b4c243c8b5c24388b442434894424348b442414895c24388b5c2410894c243c89542440897424448b3c24897c24488b7c2404897c244c8b7c2408897c24508b7c240c897c245483c430e982fcffff8d6424208d642424b8007069b18b5d04ff238d642404eb048d642404eb048d6424048b442420c22400f4|@19164,1,@4025|58,0,1 65,0,0 240,0,@19158 328,1,@8844 357,0,@9455 391,0,@9455 413,0,@18415 441,0,@9455 479,0,0 499,1,@5181 521,0,@18418 563,0,2 598,0,8 649,1,@4985 684,0,1 697,0,7 741,0,0 747,0,1 903,0,@19158 8844:D3,208|3b650c7305ff552ccd0953a801750b8b38ff70048b742404eb0c8d642404b801000000c20400f7c601000000753b8b0e8b56048b198b1b8b073bd8751e8b7d008d7ff83b7d087305ff5528cd02897d00c747fc01000000890feb1389d63b650c7305ff552ccdc0ebbdbf0100000083ff01750e8d642408b8447069b18b5d04ff238b3f8b57048b44240cff1289c7578b7c2410578b4424088b5c240ce85fffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20400f4000000|@10030,1,@4024|31,0,0 106,0,0 120,0,@19161 8845:D3,532|3b650c7305ff552ccd0589c3526a016a018b4c24088b414089c98b792c89c98b712889c98b513089c98b4938575652515483042410e842f1fdffff34248b5424088b75008d76dc3b75087305ff5528cd04897500c746fc080000008b7c240c8b4f3c894e1cc746180100000089ff8b4f38894e1489561089ff8b573489560c89ff8b573089560889ff8b572c89560489ff8b5728891689ff8b571889ff8b471c89ff8b5f2089ff8b7f24576a0156ff1289c28b3c2489fe83ff0175088d64240c89d7eb2f8b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c7071f00000083c408578b5424048b7a0483ff0375055883c404c389d28b721483ee02710e8d642408b8f80466b18b5d04ff2389d28b7a1089f989d22bf9710e8d642408b8f80466b18b5d04ff2383c70183ff017d0e8d642408b8d02469b18b5d04ff2383ff017e5089d28b520c83ef02710e8d642408b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008978048930ff128b7c24048b5f08e809d7e2ff89c7eb3683fe017d0e8d642408b8282569b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700110000005b8b3c248b77048d642404ff342489742404e915000000f4|@19166,1,@4028|54,1,@8461 104,0,0 236,0,15 276,0,@9455 303,0,@9455 325,0,@18415 354,0,@9455 392,0,1 411,1,@5181 429,0,@18418 469,0,0 504,0,8 527,1,@8846 8846:D3,480|3b650c7305ff552ccd0950538b7c240c83ff010f8c830000008b7c240c83ff017d068d642408eb6a8b7c240c81ffffffff017f5a8b44240c83c03ebf41000000d1e8d1ef33d2f7f78d3c450100000089fa8d345502000000f7de0375003b750872053b75007205ff5528cd80897500d1ea8956fcc646ff41568d3cbdfdffffff83ff017502eb2789fe83ee08eb1c8d642408b8d48e66b18b5d04ff238d642408b82c8f66b18b5d04ff233bf7750d6a016a03be010000006a01eb1e89f1d1e98b1424c6040a0089f283c20289d63b650c7305ff552ccdc0ebd18b54241c8b3c243bfa0f8da10000008b54240489d10b54240889c989cf81f901010000754d89d1d1e989f2d1ea8b7c240c880c178b0c2483c102710e8d642418b8f80466b18b5d04ff2389f083c002ba01000000bb0300000089c6895c2404890c24895424083b650c7305ff552ccd40eb8e8b0c2483c102710e8d642418b8f80466b18b5d04ff2389ff89fb89db8d5c1fff89f089c6895c2404890c24895424083b650c7305ff552ccd40e950ffffff8d6424088b3c2483ff0175068d642404eb0b59d1e9d1ee8b3c24880c378b3c248067ffbf8b7c24108b5d008d5bf43b5d087305ff5528cd80895d00c743fc020000005e897304893b585e89742404e918000000f4000000|@19165,1,@4027|46,0,16777215 60,0,32 147,0,@11152 161,0,@11156 179,0,0 248,0,128 282,0,@9455 297,0,0 302,0,1 344,0,@9455 472,1,@8847 8847:D3,384|3b650c7305ff552ccd0989c7538b1789d683fa1575658b4704ff7708ff770c8b7c2410578b5c240ce8d3ffffff89c7578b7c2414578b44240c8b5c2410e8beffffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc040000008b74240489700c8978088b3c248978048d642410c70015000000c2040089f283fe2175098d64240489f8c2040089d683fa1f7546ff77048b47088b7c240c578b5c2408e85affffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642408c7001f000000c2040083fe0b7568ff77048b4708ff770c8b7c2410578b5c240ce80cffffff89c7578b7c2414578b4424088b5c2410e8f7feffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424088b3c248978048d642408c7000b000000c204008b7424088b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c8b34248970088d642404897804c70023000000c20400f4000000|@11159,1,@4026|116,0,10 209,0,15 318,0,5 373,0,17 8848:D3,9120|8dbc2464ffffff3b7d0c7305ff5530cd0d5250538b7c24148b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9ae2200008b3f8b3781fe0402c0b075058b7f08eb0e8d64240cb8483366b18b5d04ff2383ff0374168d6424045a8b4424148b7c2404897c242483c424ff228b7424208b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b542414b803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc04000000c7420c487966b18b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b7424248b368b5424248b52048b4c24248b092bf1710e8d642418b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c746049c2669b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d46866b1c7071b000000578b542420b803000000ff1289c7578b75008d76ec3b75087303ff5528897500c746fc040000008b7c2404897e0c8b3c24897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c24308b3f8b7424308b56048b7424308b362bfe710e8d642424b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24108938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604b42669b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d46866b1c7071b000000578b54242cb803000000ff1289c7578b75008d76ec3b75087303ff5528897500c746fc040000008b7c2404897e0c8b3c24897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c243c8b3f8b74243c8b56048b74243c8b362bfe710e8d642430b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c241c8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604985f69b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d46866b1c7071b000000578b542438b803000000ff1289c7578b75008d76ec3b75087303ff5528897500c746fc040000008b7c2404897e0c8b3c24897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c24488b3f8b7424488b56048b7424488b362bfe710e8d64243cb8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24288938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000c74604807169b1893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000897708c74704d46866b1c7071b000000578b542444b803000000ff1289c7578b75008d76ec3b75087303ff5528897500c746fc040000008b7c2404897e0c8b3c24897e08c7460401000000c706030000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c24548b3f8b7424548b56048b7424548b362bfe710e8d642448b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24348938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c24588b3f8b7424588b56048b7424588b362bfe710e8d64244cb8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c242c8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c245c8b3f8b74245c8b56048b74245c8b362bfe710e8d642450b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24248938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c24608b3f8b7424608b56048b7424608b362bfe710e8d642454b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c241c8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c24648b3f8b7424648b56048b7424648b362bfe710e8d642458b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24148938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707290000008b55008d52f03b55087305ff5528cd80895500c742fc03000000c7420801000000c74204807169b18b342489328d6424048b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c897e08c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175035beb0e8b0424e89419000089c38d64240483fb0175068b5c2408eb0b8b442408e8de19000089c383fb0175068b5c2414eb0b8b442414e82c1a000089c383fb0175068b5c2420eb0b8b442420e87a1a000089c383fb0175068b7c242ceb0b8b44242ce8c81a000089c7578b7c24588b178b7c2458ff77048b7c245cff77088b44245cff1289c78b55008d52f43b55087305ff5528cd80895500c742fc02000000c7420401000000893a8b7c24708b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8df7be1ff89c7eb00576a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c707fce446b1c7042401000000897c2404e9920000008b542460b803000000ff1289c68b5424688b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70720e546b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b7c24788b9424800000008b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c897e088b7c2458897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424148957048937578b7d008d7ff03b7d087303ff5528897d00c747fc030000008b34248977088b74241c8977048b7424048937578b7c24788b3f8b7424788b56048b7424788b362bfe710e8d64246cb8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24588938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b75008d76f03b75087305ff5528cd80897500c746fc03000000c74608010000008b542404895604c7060d0000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000c742049c2669b1893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c74704d46866b1c70725000000578b7c247c8b3f8b74247c8b56048b74247c8b362bfe710e8d642470b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c245c8938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b5424108b842480000000ff1289c68b55008d52f03b55087305ff5528cd40895500c742fc03000000c7420801000000c74204b42669b18b3c24893a8d6424048b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c74704d46866b1c70725000000578bbc24800000008b3f8bb424800000008b56048bb424800000008b362bfe710e8d642474b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24608938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b9424880000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c7060d0000008b55008d52f03b55087305ff5528cdc0895500c742fc03000000c7420801000000c74204985f69b1893a8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c74704d46866b1c70725000000578b54247cb803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc040000008b7c24788b7f0c897a0c8b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568bb4248c0000008b368b94248c0000008b52048b8c248c0000008b092bf171118da42480000000b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c7470401000000c70727000000578bbc24900000008b3f8bb424900000008b56048bb424900000008b362bfe71118da42484000000b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24088938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b442478e8827ae1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608c43966b18b3c24897e048d642404c7060b0000008b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2410897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c240c894f04c707050000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008b5c2408895904c701050000008b5d008d5bf43b5d087305ff5528cdc6895d00c743fc02000000c7430401000000890b8b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489398b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f048917578b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b5c2404eb0b8b442404e87313000089c383fb0175065b83c414eb0e8b0424e8c213000089c38d64241883fb0175068b7c240ceb0b8b44240ce80c14000089c7578b7c247c8b3f8b74247c8b56048b74247c8b362bfe710e8d642470b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24508938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578bbc24800000008b3f8bb424800000008b56048bb424800000008b362bfe710e8d642474b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24608938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c747049c2669b189378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d642404c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578bbc24800000008b3f8bb424800000008b56048bb424800000008b362bfe710e8d642474b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24488938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578bbc24840000008b3f8bb424840000008b56048bb424840000008b362bfe710e8d642478b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24648938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c74704b42669b189378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d642404c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578bbc24840000008b3f8bb424840000008b56048bb424840000008b362bfe710e8d642478b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24408938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578bbc24880000008b3f8bb424880000008b56048bb424880000008b362bfe710e8d64247cb8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24688938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c74704985f69b189378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d642404c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000578bbc24880000008b3f8bb424880000008b56048bb424880000008b362bfe710e8d64247cb8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24388938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578bbc248c0000008b3f8bb4248c0000008b56048bb4248c0000008b362bfe71118da42480000000b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c246c8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000c74704807169b189378b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0c8b3c24897e088d642404c74604d46866b1c706250000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b542478b803000000ff1289c7578b54247cb803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc040000008b7c24788b7f08897a0c8b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568bb4248c0000008b368b94248c0000008b52048b8c248c0000008b092bf171118da42480000000b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c7470401000000c70727000000578bbc24900000008b3f8bb424900000008b56048bb424900000008b362bfe71118da42484000000b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24088938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b442478e84f70e1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b74241089f783fe017d118da42488000000b8948966b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc0200000089ff897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e88c6fe1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608c43966b18b3c24897e048d642404c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b7c240c89fb83ff01750489c3eb07e8800a000089c383fb0175065e83c404eb0e8b0424e8cf0a000089c68d6424088b142489d783fa017d0e8d642478b8948966b18b5d04ff238b55008d52f43b55087305ff5528cdc0895500c742fc0200000089ff897a04c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707110000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c7022100000083fe01750489d7eb268b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071f000000578b5424748b442410ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c8b14248957088d642408897704c70715000000578b54247cb803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc040000008b7c2404897a0c8b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568bb4248c0000008b368b94248c0000008b52048b8c248c0000008b092bf171118da42480000000b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c78b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703110000006a016a018b8424980000008bbc24a00000008bb424940000008b94248c0000008b8c249c0000005768987169b154830424085652ffb4249000000051e863090000585b6a016a018bbc24940000008bb4248c00000057565483042408e88fc1fdffff34248b942490000000b803000000ff1289c7578b55008d52ec3b55087303ff5528895500c742fc040000008bbc248c0000008b7f04897a0c8b342489f7897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568bb424a00000008b368b9424a00000008b52048b8c24a00000008b092bf171118da42494000000b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080100000089700489ff8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c7470401000000c70727000000578bbc24a40000008b3f8bb424a40000008b56048bb424a40000008b362bfe71118da42498000000b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24088938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b84248c000000e8b66ae1ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f0000008b75008d76ec3b75087305ff5528cd80897500c746fc04000000897e0cc74608c43966b18b3c24897e048d642404c7060b0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175065b83c404eb0e8b0424e8b709000089c38d64240883fb0175065883c408eb0c8b0424e8020a00008d64240c8b7c240c89fb83ff01750489c3eb07e84e0a000089c383fb0175035beb0e8b0424e8a00a000089c38d64240483fb0175068b5c240ceb0b8b44240ce8ea0a000089c383fb0175068b7c2434eb0b8b442434e8380b000089c7578bbc248c0000008b3f8bb4248c0000008b56048bb4248c0000008b362bfe71118da42480000000b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c74008010000008978048b7c24048938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b142489d783fa01750c8da4248000000089f0c220008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c47cc22000f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d64240cb8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e902ddffff8d64240cb8483366b18b5d04ff23f40000|@19174,1,@4051|44,0,@4659 95,0,0 105,0,@10769 120,0,@4659 136,0,@9999 239,0,0 248,0,6 281,0,0 293,0,1 329,0,@10997 344,0,0 350,0,1 383,0,0 418,0,@9455 459,0,0 505,0,8 538,0,0 545,0,@18429 583,0,@10757 589,0,13 599,0,1 648,0,0 654,0,1 687,0,0 722,0,@9455 763,0,0 811,0,8 844,0,0 851,0,@18431 889,0,@10757 895,0,13 905,0,1 954,0,0 960,0,1 993,0,0 1028,0,@9455 1069,0,0 1117,0,8 1150,0,0 1157,0,@19028 1195,0,@10757 1201,0,13 1211,0,1 1260,0,0 1266,0,1 1299,0,0 1334,0,@9455 1375,0,0 1423,0,8 1456,0,0 1463,0,@19169 1501,0,@10757 1507,0,13 1517,0,1 1566,0,0 1572,0,1 1605,0,0 1640,0,@9455 1681,0,0 1729,0,8 1762,0,@9455 1803,0,0 1851,0,8 1884,0,@9455 1925,0,0 1973,0,8 2006,0,@9455 2047,0,0 2095,0,8 2128,0,@9455 2169,0,0 2217,0,8 2250,0,0 2399,0,1 2408,0,20 2441,0,0 2448,0,@19169 2496,0,@10757 2502,0,18 2537,0,2 2570,0,0 2588,1,@8849 2614,1,@8850 2636,1,@8851 2658,1,@8852 2680,1,@8853 2744,0,0 2814,0,1 2823,0,20 2862,0,0 2869,0,1 2881,1,@4980 2938,0,@8854 2945,0,0 2963,0,1 3009,0,@8855 3052,0,0 3058,0,1 3091,0,0 3163,0,2 3275,0,@9455 3316,0,0 3364,0,8 3397,0,0 3410,0,6 3443,0,0 3450,0,@18429 3491,0,@10757 3497,0,18 3530,0,@9455 3571,0,0 3619,0,8 3668,0,0 3675,0,@18431 3723,0,@10757 3729,0,18 3771,0,@9455 3812,0,0 3860,0,8 3900,0,0 3909,0,6 3942,0,0 3949,0,@19028 3990,0,@10757 3996,0,18 4006,0,1 4060,0,0 4066,0,1 4099,0,0 4146,0,@9455 4187,0,0 4233,0,8 4266,0,0 4276,0,0 4282,0,19 4327,0,@9455 4368,0,0 4416,0,8 4426,1,@4985 4461,0,1 4480,0,7 4516,0,@10072 4532,0,5 4571,0,2 4610,0,2 4649,0,2 4682,0,0 4782,0,2 4815,0,0 4837,1,@8856 4858,1,@8857 4884,1,@8858 4919,0,@9455 4960,0,0 5008,0,8 5050,0,@9455 5091,0,0 5139,0,8 5172,0,0 5179,0,@18429 5227,0,@10757 5233,0,18 5268,0,2 5310,0,@9455 5351,0,0 5399,0,8 5441,0,@9455 5482,0,0 5530,0,8 5563,0,0 5570,0,@18431 5618,0,@10757 5624,0,18 5659,0,2 5701,0,@9455 5742,0,0 5790,0,8 5832,0,@9455 5873,0,0 5921,0,8 5954,0,0 5961,0,@19028 6009,0,@10757 6015,0,18 6050,0,2 6092,0,@9455 6133,0,0 6181,0,8 6226,0,@9455 6267,0,0 6315,0,8 6348,0,0 6355,0,@19169 6403,0,@10757 6409,0,18 6444,0,2 6477,0,0 6603,0,1 6617,0,1 6671,0,0 6677,0,1 6710,0,0 6757,0,@9455 6798,0,0 6844,0,8 6877,0,0 6887,0,0 6893,0,19 6938,0,@9455 6979,0,0 7027,0,8 7037,1,@4985 7072,0,1 7091,0,7 7115,0,@11112 7157,0,2 7192,0,8 7225,0,0 7232,1,@4985 7267,0,1 7286,0,7 7322,0,@10072 7338,0,5 7373,0,2 7406,0,0 7428,1,@8859 7449,1,@8860 7474,0,@11112 7516,0,2 7551,0,8 7586,0,16 7633,0,15 7698,0,10 7708,0,1 7759,0,0 7765,0,1 7798,0,0 7845,0,@9455 7886,0,0 7932,0,8 7977,0,@19171 7997,1,@8862 8029,1,@8452 8044,0,1 8101,0,0 8107,0,1 8140,0,0 8187,0,@9455 8228,0,0 8274,0,8 8307,0,0 8317,0,0 8323,0,19 8368,0,@9455 8409,0,0 8457,0,8 8470,1,@4985 8505,0,1 8524,0,7 8560,0,@10072 8576,0,5 8611,0,2 8644,0,0 8665,1,@8865 8690,1,@8866 8714,1,@8867 8732,1,@8868 8758,1,@8869 8780,1,@8870 8827,0,@9455 8868,0,0 8916,0,8 8982,0,15 9009,0,@4659 9060,0,0 9074,0,@11247 9089,0,@4659 9108,0,@9999 8849:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4029| 8850:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4030| 8851:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4031| 8852:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4032| 8853:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4033| 8854:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4034| 8855:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4035|27,0,@9455 68,0,0 115,0,8 8856:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4036| 8857:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4037| 8858:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4038| 8859:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4039| 8860:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4040| 8861:D3,64|3b650c7305ff552ccd0989c78b7424048b45008d40ec3b45087305ff5528cdc8894500c740fc0400000089700c895808897804c70001000000c20400f4000000|@19172,1,@4041|53,0,0 8862:D3,552|3b650c7305ff552ccd09538b10ff7004ff70088b44241cff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2408893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8bb5de1ff89c7eb00576a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c70734ea46b1c7042401000000897c2404e9920000008b542424b803000000ff1289c68b5424288b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c70758ea46b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b5424388b4424288b5c24248b7c243c57ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc020000008b542414895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b7424188977048b342489378d6424048b7424308b142489168d64240c897e04b80100000083c410c21c00f4|@19173,1,@4044|56,0,0 126,0,1 135,0,20 174,0,0 181,0,1 193,1,@4980 250,0,@8863 257,0,0 275,0,1 321,0,@8864 364,0,0 370,0,1 403,0,0 541,0,0 8863:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4042| 8864:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4043|27,0,@9455 68,0,0 115,0,8 8865:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4045| 8866:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4046| 8867:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4047| 8868:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4048| 8869:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4049| 8870:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4050| 8871:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4052| 8872:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@4053|76,0,@10218 86,0,0 8873:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@4054|48,0,0 102,0,0 8874:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e941a3e2ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4055|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8875:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19187,1,@4056|11,0,0 8876:D3,1448|3b650c7305ff552ccd0989df508b742424f7c6010000000f85e40100008b742424ff368b742428ff76048b7424088b368b5424088b4a04bb010000008b55008d52f83b55087305ff5528cdca895500c742fc01000040891a528b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a088b0c24894a04c70274f546b183c60256710e8d642414b8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd84897500c746fc030000008b4c2404894e088956048b14248916568b378d1c750100000083fb01750abff46067b1e99100000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87f100000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320131d1efc6443a02298062ffbf89d7578b7424408b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240889570c8b542414895708897704c70770f646b1576a016a018b7c24408b74243c8b5424388b4c24348b5c24308b44242cff742408ff74242054830424085756525153508b4424348b5c2430e824feffffff3424ff7424088b7c24208b3fb801000000e9950200008d642418b8780566b18b5d04ff238b7c241c83c702710e8d642404b8f80466b18b5d04ff238b34248b368b14248b52048b4c24188b092bf1710e8d642404b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c241883ff017d0e8d642408b8a84566b18b5d04ff238b5c24188b7c2414ff74240457b801000000e89e06000089c7578b5424308b442408ff1289c7578b7c241883ff0375678b7c240483ff0175065f83c404eb128b04248b5c2404e89607000089c78d6424088b54240c8b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c5a895608897e04c7060f0000008b7c24208937c7470401000000b80100000083c404c224008b442404e8a507000089c383fb0175065f83c404eb0e8b0424e8ec07000089c78d6424088b55008d52ec3b55087305ff5528cd80895500c742fc04000000c7420c030000005e897208897a04c7020f0000008b7c240c8b75008d76e83b75087305ff5528cd84897500c746fc05000000895610897e0cc7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c241083ff017d0e8d642408b8a84566b18b5d04ff238b5c2410b801000000e89b07000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c707290000008b342483fe0175088d64240889feeb2a8b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c7061f00000083c4048b7c241c8937c7470403000000b801000000c22400f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8ad16feff8b7c241481ff100666b17502eb2b8b7c24148b3f8d3c7d0100000083ff017520bf100666b18b7424148d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c241457e87b49e1ff89c757b801000000e82207000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714010000008977105e89770cc74708010000005e8d6424048977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7c24448937c7470401000000b80100000083c428c22400f4|@19189,1,@4067|56,0,0 126,0,@8877 141,0,@9455 207,0,@13248 227,0,4 248,0,16777215 306,0,0 411,0,@8878 490,0,0 504,0,@9465 527,0,@9455 562,0,@9455 603,0,0 647,0,8 666,0,@10224 689,0,0 694,1,@8881 746,1,@8882 798,0,7 811,0,0 816,0,0 831,1,@8883 852,1,@8884 891,0,1 904,0,7 947,0,0 954,0,0 960,0,0 993,0,0 1014,0,@10224 1028,0,0 1033,1,@8885 1068,0,0 1077,0,20 1132,0,15 1148,0,1 1153,0,0 1223,1,@8500 1233,0,@9473 1260,0,@9473 1285,0,@10237 1297,1,@4975 1305,0,0 1310,1,@8886 1345,0,1 1359,0,0 1373,0,0 1419,0,12 1432,0,0 1437,0,0 8877:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9619ce2ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4057|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8878:D3,384|3b650c7305ff552ccd0552508b34248b3e89f68b56048b7424048b760c2bfe710e8d642408b8f80466b18b5d04ff2383c7018b45008d40f03b45087305ff5528cd84894500c740fc03000000c7400803000000897804c70001000000ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b7424048b560889d1f6c201756389ca8b490483f9017507b903000000eb05b90100000083f903754889d68b168b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937eb68bb010000008b7424048b7608f7c60100000075288b4e0489da83c202710e8d642408b8f80466b18b5d04ff2389ce89d33b650c7305ff552ccdc8ebd083fb017d0e8d642408b8a84566b18b5d04ff2357b801000000e8460000008b7c24048b5f08e89abae2ff89c7578b7c24088b57048b442404ff1289c383fb0175055883c408c35883c408e9bd000000f4|@19188,1,@4060|38,0,@9455 79,0,1 88,0,0 127,0,8 156,0,1 163,0,0 236,0,0 245,0,0 279,0,@9455 314,0,@10224 325,0,0 330,1,@8879 342,1,@5210 379,1,@8880 8879:D3,148|3b650c7305ff552ccd093bc37508b801000000c204008b7424048b7d008d7fec3b7d087305ff5528cd49897d00c747fc04000000c7470c01000000894708897704c707170000005783c002710e8d642404b8f80466b18b5d04ff238b7c240857e89bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f4000000|@10221,1,@4058|15,0,0 55,0,0 67,0,11 82,0,@9455 8880:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4059| 8881:D3,280|3b650c7305ff552ccd0950538b74240489f73b3424750c8d642408b801000000c208008b7424108b368b5424108b52048b4c240c8b092bf1710e8d642408b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c740080300000089700489ff8938ff1289c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706110000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704030000008937578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c24148b74241057568b5c240ce818ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20800f400|@10221,1,@4061|28,0,0 63,0,@9455 104,0,1 150,0,8 183,0,1 204,0,@9455 8882:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4062| 8883:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8389866b1c3f4|@10825,1,@4063|66,0,@11219 8884:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4064| 8885:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704a05266b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@4065|15,0,0 49,0,0 59,0,@10403 65,0,11 80,0,@9455 8886:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@4066|16,0,0 27,0,@9455 74,0,@10071 8887:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4068|15,0,0 26,0,@9455 73,0,@10071 8888:D3,20|3b650c7305ff552ccd01b8c03e69b1c3f4000000|@19191,1,@4069|11,0,@18721 8889:D3,116|3b650c7305ff552ccd016a016a0189e3e873000000ff3424ff742408ff7424046a01f644240401752c8b7c24048b0789ffff7704ff74240c8b5c2408e84701000089c25e891424897424043b650c7303ff552cebcd5f83ff03750d8d6424085883c408e998ffffff8d642414b801000000c3f400|@19194,1,@4076|17,1,@8890 61,1,@8891 109,0,0 8890:D3,236|3b650c7305ff552ccd0953a8010f85c2000000ff308b40048b3c248b7f14f7c701000000752a8b3f8b378b3683fe0175188b7f048b3f83ff017507bf03000000eb05bf01000000eb05bf01000000eb05bf01000000576a016a0189e3e89fffffff5a5e8b3c2483ff038d64240475348b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048b142489178d64240489fa5f8917897704b801000000c38b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b342489378d6424045e8916897e04b801000000c35ebf388a66b18b1789168b7f04897e04b801000000c3f4|@11119,1,@4071|60,0,1 67,0,0 74,0,0 81,0,0 158,0,0 208,0,0 215,0,@11118 230,0,0 8891:D3,136|3b650c7305ff552ccd09538b7814f7c701000000756a8b3fff37ff77088b3c248b076a016a018b7c2418578d5c2404e8680000008b0424ff742404a80174088d64241458c20400e87c0100008b7c24108b1f83fb01750489c7eb07e8c801000089c78b742410893e8b3c248b74240c893e8d642404b80300000083c414c2040058c20400f4000000|@19193,1,@4075|48,1,@8892 72,1,@8893 92,1,@8894 118,0,1 8892:D3,280|3b650c7305ff552ccd0953a8017512ff30ff70048b7c24048b57048b5c2410eb185ebf388a66b18b1789168b7f04897e04b801000000c20400f6c30175518b3bff73048b3f3bfa75068d642404eb2a8b378d3475010000008b0289c18d0445010000003bf075198d77048d7a043bc9f3a67402eb0b8d642404bf03000000eb145f89fb3b650c7305ff552ccd0cebaabf01000000576a016a018b7c241c578b4424108d5c2404e855ffffff5a5e5f8d64240483ff0375308b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957045a891789fa5f8917897704b801000000c204008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89375e8916897e04b801000000c20400f40000|@11119,1,@4072|35,0,@11118 50,0,0 122,0,1 144,0,0 224,0,0 270,0,0 8893:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4073|68,0,0 8894:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4074| 8895:D3,632|3b650c7305ff552ccd09538b7814f7c701000000753a8b3f8b378b3683fe0175188b7f048b3f83ff017507bf03000000eb05bf01000000eb05bf0100000083ff037507ff308b7810eb108d642404eb048d642404b801000000c383ff017507bf0cd067b1eb138b178b77048b0a83f9010f85f00100008b7a04578b7c24048b3f8d1c7d0100000083fb01750abf3c7569b1e98c00000089df83c72489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879801000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf3c7569b1b9250000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a16d1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab8587569b1e98d00000089de83c63489f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87e600000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708be587569b1b9350000008d7604d1ef8d3c38d1e9f3a48060ffbfbbd4c067b1e87b8af0ffe86697f1ff89c68b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470407000000c707010000008b45008d40ec3b45087305ff5528cd80894500c740fc040000005e89700c897808c7400401000000c700010000008b7c24048b573083c408ff228d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff2389f73b650c7305ff552ccd80e9e3fdfffff4|@19197,1,@4077|44,0,1 51,0,0 58,0,0 85,0,0 96,0,@14696 141,0,@19195 161,0,4 182,0,16777215 240,0,0 249,0,@19195 254,0,18 305,0,@19196 325,0,4 346,0,16777215 404,0,0 430,0,@19196 435,0,26 456,0,@14533 461,1,@6850 466,1,@6946 504,0,0 511,0,0 518,0,3 524,0,0 564,0,0 570,0,0 591,0,@9465 605,0,@9465 8896:D3,1604|8d7c24b03b7d0c7305ff5530cd0d5250538b7c2410ff378b7c2414ff77048b7c2418ff77088b7c241cff7714bf010000008b742410f7c60100000075288b4e0489fa83c202710e8d64241cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c24108b7f34f7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9f70400008b3f8b3781fe0c02c0b0750e8b7f0883ff030f8475040000eb0e8d642420b8483366b18b5d04ff23f6442414010f85560200008b7c24148b3fff77106a016a018b7c24388b3f83ff0d75378b7424388b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e40947b1c7042401000000897c2404e9920000008b542414b803000000ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542418895708897704c707080a47b18b4c24388b55008d52ec3b55087305ff5528cdc2895500c742fc04000000894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff34248b5424088b44241cff1289c7578b54241c8b442414ff1289c7578b7c241889fe83ff017d098d642438e93a01000089f689f781feffffff010f8d2601000089ff89f98d347d02000000f7de0375003b750872053b75007205ff5528cd02897500d1ef897efcc646ff4089f7d1e9b801000000f3ab568b5424408b75008d76e03b75087305ff5528cd04897500c746fc070000008b3c24897e188b7c243089f8897e148b7c2404897e108b7c24388b4f08894e0c89560889ff8b7f04897e04c706980a47b18b55008d52ec3b55087305ff5528cd41895500c742fc040000008b7c2420897a0c8b7c2424897a088b7c2428897a048b7c242c893a6a016a018b7c244c57ff742424565254830424108b5c2424e8d30b0000ff34248b7c240883ff03751a8b7c245083ff03750c8b7c24388b7f34e92a010000e9200100008b7c245083ff037502eb1bff742440ff74242868448569b18b442444bb01000000e83f65f4ffeb1c8d642438b8383066b18b5d04ff238d642420b8688569b18b5d04ff238b7c240c8b7ffcc1e708c1ef0783cf01576a018b3c2489f83b7c24040f82890000008d6424088b7c244c8b5424448b720889d28b52046a03ff742410ff742440ff74244c5756528b4424588b5c242ce8397d000089c383fb0175068b7c2418eb0b8b442418e8ff89000089c783ff0175075883c444c20c008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642404897804c7001f00000083c444c20c0089c08b7c24148b5c47feff742444ff742444ff742450e8078a00008b342483c6028934243b650c7303ff552ce937ffffffe91ffffffff7c701000000753b8b178b77048b0a81f91402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff017507bfe46966b1eb448b3f8b3781fe1402c0b075058b7f08eb0e8d642448b8483366b18b5d04ff2383ff037583ff742440ff74242868988669b18b442444bb01000000e8ad63f4ffe963fffffff7c701000000753b8b178b77048b0a81f91402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642448b8489d66b18b5d04ff238b3f8b3781fe1402c0b075088b7f08e96cffffff8d642448b8483366b18b5d04ff23ff7424146a01f644240401752b8b7424048b3e89f6ff76048b47048b5c2404e85305000089c25e891424897424043b650c7303ff552cebce5f57f604240175218b3c248b0789ffff77048b5c241ce8d0f7ffff5e8934243b650c7303ff552cebd98d642408e931fbfffff7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642420b8489d66b18b5d04ff238b3f8b3781fe0c02c0b075118b7f0883ff030f85befaffffe91effffff8d642420b8483366b18b5d04ff23f40000|@19329,1,@4163|45,0,0 76,0,@9455 126,0,@4660 177,0,0 187,0,@10769 202,0,@4660 227,0,@9999 306,0,@8897 313,0,0 331,0,1 377,0,@8898 420,0,0 426,0,1 459,0,0 527,0,16777215 585,0,0 667,0,@8899 749,1,@8904 811,0,@19318 820,0,0 825,1,@7270 836,0,@9964 850,0,@19319 939,1,@8969 961,1,@8979 1020,0,15 1053,1,@8980 1101,0,@4661 1152,0,0 1162,0,@10769 1174,0,@4661 1190,0,@9999 1213,0,@19328 1222,0,0 1227,1,@7270 1253,0,@4661 1304,0,0 1318,0,@11247 1333,0,@4661 1352,0,@9999 1393,1,@8900 1440,1,@8895 1484,0,@4660 1535,0,0 1549,0,@11247 1564,0,@4660 1592,0,@9999 8897:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4079| 8898:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4080|27,0,@9455 68,0,0 115,0,8 8899:D3,936|8d7c24983b7d0c7305ff5530cd0552508b7c24048b7f188b77fcc1e608c1ee0783ce018b3c243bfe720e8d642408b8783266b18b5d04ff238b7c24048b7f188b34248b7c77fe83c702710e8d642408b8f80466b18b5d04ff238b7424048b76188b56fcc1e208c1ea0783ca018b34243bf2720e8d642408b8003566b18b5d04ff238b7424048b76188b1424897c56fe6a016a016a018b7424108b76148b54240cf7c6010000000f85ed0200008b1e8b4e0483fa010f85b70200008b338934248b7304897424048b731489742408ff34248b442408ff74240c83ff070f8fd4010000bb01000000e8d102000089c7578b7c241c8b7f088b378b7c241c8b7f088b7f048b54241c8b52088b52088b4c241c8b49088b59108b4c241c8b49088b49146a016a015756525154830424108b44241ce8539ffdffff3424ff7424086a016a018b7c24348b570c54b8c45d66b18b5c2424ff12ff34248b7c24388b7f08ff378b7c243c8b7f08ff77048b7c24408b7f08ff77086a016a01ff74241054830424048b4424288b5c241ce89bfcfeffff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424488b5c2428e84efffeff89c383fb0175068b5c2404eb0b8b442404e85404000089c383fb0175068b7c242ceb0b8b44242ce8a204000089c7578b7c24588b7f08ff378b7c245c8b7f08ff77048b7c24608b7f08ff77088b7c24648b7f088b7f0c8b7424648b76088b76148b5424648b52088b52188b4c24648b49088b491c8b5d008d5bdc3b5d087305ff5528cdc6895d00c743fc08000000894b1c8953188973148b742410897310897b0c8b3c24897b088d6424045f897b045f893b6a016a018b7c24608b5704548b442450ff125f8d6424048b342483fe0175078d64245c89f8c38b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f897804c7001f00000083c458c38d642414bb01000000e8f9000000e81c0400008b7c24048b7f105e8d64240483ee0103fe710ab8f80466b18b5d04ff2383ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e84c3de1ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000005e897008897804c7000f000000c389d383eb02710e8d642414b8f80466b18b5d04ff2389da89ce3b650c7305ff552ccdc4e907fdffff8d642414b8643c66b18b5d04ff23f4|@19204,1,@4085|47,0,@9988 80,0,@9455 120,0,@10015 226,0,0 231,1,@8900 305,1,@8461 329,0,@10588 393,1,@8724 405,0,@19031 430,1,@8725 452,1,@8901 474,1,@8902 685,0,15 698,0,0 703,1,@8900 708,1,@8903 732,0,@9455 747,0,@11112 787,0,2 822,0,8 828,1,@4985 863,0,1 876,0,7 893,0,@9455 926,0,@10105 8900:D3,588|3b650c7305ff552ccd0989c789d88b37ba540e47b181c2210000008d54b2fcffe2e9f3000000909090e9eb000000909090e9e4000000909090e9db000000909090e9d3000000909090e9db000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e99f000000909090e9d4000000909090e9d6000000909090e9e5000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9c4000000909090e93b000000909090e933000000909090e9b8000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c38b7f048b770489c389f0e9d7feffff8b770889c389f0e9cbfeffff8b7f048b7f048b378b7e0483ff017502eb2af7c70100000074228b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000894704893789f8c3c38b7f0c5750e9970000008b7704ff770889c389f0e875feffff89c358e96dfeffff8b7f085750eb458b770489c389f0e95afeffff8b7f045750f64424040175288b7c24048b0789ffff77048b5c2404e83afeffff89c25e891424897424043b650c7303ff552cebd15883c404c3f64424040175288b7c24048b0789ffff77048b5c2404e806feffff89c25e891424897424043b650c7303ff552cebd15883c404c3f644240401752b8b7424048b3e89f6ff76048b470c8b5c2404e8cffdffff89c25e891424897424043b650c7303ff552cebce5883c404c3f400|@19200,1,@4081|17,0,@8900 8901:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4082| 8902:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4083| 8903:D3,192|3b650c7305ff552ccd01a8010f85a60000008b388b40048b7f088b3783fe050f85890000008b7f048b3f83ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e87bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8307669b18b5d04ff23b801000000c3f400|@10030,1,@4084|48,0,@11112 88,0,2 123,0,8 175,0,@19201 185,0,0 8904:D3,920|3b650c7305ff552ccd09538b7c240cff37bf0100000089c6f7c60100000075288b4e0489fa83c202710e8d642408b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1ebd05768ac7669b16a0350f60424010f85840000008b34248b3e89f6ff76048b47048b77108b54240889d783c20252710e8d642420b8f80466b18b5d04ff236a016a016a018b542434575652548304240c8b5c242ce80c0300005f5a598b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e5a59890c2489542404897424083b650c7303ff552ce972ffffff8d642408ff34248b0424e8aa3c000089c783ff037507bf03000000eb7d8b7c240c8b7f34f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e9be0100008b3f8b3781fe0402c0b075058b7f08eb0e8d642414b8483366b18b5d04ff2357b8030000008b5c240ce8543d000089c36a016a016a016a0168c47e69b16a0154830424088b442420e8453e0000595a5e5f8b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089780c89700889500489086a016a016a016a018b5c241083fb03750989e3e8ac510000eb0f890c248954240489742408897c240c5a595e5b8b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c897708894f04891783c41483fe017507be01000000eb32f7c6010000000f85cd0000008b0e89ca83f9017507be03000000eb16f7c6010000000f85a300000083fa017e74be0100000083f602568b5424188b4c241c8b5c24148b75008d76e43b75087305ff5528cd8e897500c746fc06000000895e148b1c24895e10894e0c8956088b54240489d3895604c706886c47b18b542410565289f8e8d459000089c78b74240c893e8b3c24897e048d642408b801000000c21400f7c60100000075148b560489d63b650c7305ff552ccdc0e937ffffff8d642404b8e09966b18b5d04ff238d642404b8648e66b18b5d04ff238d642404b8648e66b18b5d04ff23f7c701000000753b8b178b77048b0a81f90402c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750e8d642414b8489d66b18b5d04ff238b3f8b3781fe0402c0b075088b7f08e9f2fdffff8d642414b8483366b18b5d04ff23f40000|@19317,1,@4150|18,0,0 47,0,@9455 74,0,@19205 124,0,@9455 156,1,@8905 234,1,@8941 246,0,1 276,0,@4659 327,0,0 337,0,@10769 352,0,@4659 368,0,@9999 379,0,1 388,1,@8942 403,0,@19270 419,1,@8944 484,1,@8953 555,0,0 583,0,1 607,0,0 679,0,@8957 692,1,@8958 715,0,0 755,0,@11229 769,0,@11149 783,0,@11149 809,0,@4659 860,0,0 874,0,@11247 889,0,@4659 908,0,@9999 8905:D3,2852|3b650c7305ff552ccd0950538b7c24048b37bafc1547b181c2230000008d54b2fcffe2e9f3000000909090e9eb000000909090e903010000909090e9db000000909090e9d3000000909090e948020000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e93c020000909090e97e030000909090e997030000909090e9cc030000909090e904050000909090e95b000000909090e953000000909090e94b000000909090e967060000909090e93b000000909090e933000000909090e98b060000909090e923000000909090e976070000909090e913000000909090e90b000000909090e97b0700009090908b74240c5f8b1789168b57048956048b7f08897e08b80100000083c404c2100089ff8b7f048b378b1683fa1d0f852b0100008b76048b5604ff328b76088b1eff7704ff77108b7c241c8b7f0c578b44240ce8c7090000e82a10000089c28b7424248b4c241c8b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f108b0c24894f0c8d6424048977088b34248977048d642404c707fc2747b18b0c248b710483fe017542ff7424108b742420ff7424085689fb89c8e89110000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d64240cb80100000083c404c21000f7c60100000075458b5e04ff7424108b74242057ff74240c565289c8e81417000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d64240cb80100000083c404c210008d6424048b74240c5f8b1789168b57048956048b7f08897e08b80100000083c404c210008b74240c5f8b1789168b57048956048b7f08897e08b80100000083c404c2100089fe8b7e0889f68b560c578b4424048b74241c8b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce930fdffff8d64240c89ff8b7f048b7704ff368b7f088b1f8b7c24148b7f0c578b442404e844080000e86b1a000089c28b74241c8b4c24188b5c24148b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c894f08897704c707c03347b18b0c248b710483fe017542ff7424108b742420ff7424085689fb89c8e81b0f000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d64240cb80100000083c404c21000f7c60100000075458b5e04ff7424108b74242057ff74240c565289c8e89e15000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d64240cb80100000083c404c210006a016a016a018b442428548b5c2414e8521a00005e5a5f8b4d008d49f43b4d087305ff5528cdc4894d00c741fc020000008971048b342489318d6424088b742408890e895604897e08b80100000083c404c2100089fa8b7a0889d289d6ff720c89f6ff7610ff378b7c241c8b078b3c24e9d204000089fe89f7ff760489ff8b470889ff8b770c6a016a016a018b7c24288b542420575652548304240c8b5c2420e891fbffff5b5a5f5e8d642408e93404000089fa8b7a0489d289d6ff720889f6ff760c8b1fbfcc5366b18b75008d76f83b75087305ff5528cd88897500c746fc01000040893ebf1f4e00008d14fdf9ffffff8b7d008d7ff03b7d087305ff5528cd4c897d00c747fc03000000895708897704c7070d000000578b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704010000008b342489378b45008d40e83b45087305ff5528cd88894500c740fc05000000c74010603766b1c7400cb45666b1c74008d45666b1897804c7000b000000ba0c6368b1e8ed10f6ff8b55008d52f43b55087303ff5528895500c742fc02000000c74204010000008b3c24893a8d642404ff7424148b7c24248b74241c57ff74240856528b44241c8b5c2418e84d1c000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d642414b801000000c2100089fe8b7e0489f689f2ff760889d289d6ff720c89f6ff7610ff378b7c2420ff378b7c2424ff7704ba102169b18b442408bb03000000e88e68fdff89c68b3e8b45008d40e83b45087305ff5528cdc0894500c740fc05000000c740100100000089700c897808c7400401000000c7000b000000be010000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc0100004089378b75008d76ec3b75087305ff5528cd81897500c746fc04000000c7460c943966b1c74608487a69b1c746042c0268b1893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704010000008937ba384469b1578b5c2404e8a629feff89c7578b7d008d7fec3b7d087303ff5528897d00c747fc040000008b74241489770c8b7424208977088b742408897704c707b83c47b1ff74240c578b4424188b5c2420e80220000089c3ff7424288b7c2438ff74242057ff7424148b442410e8de29000089c78b378b142489d189328b570489c989ce8951048b7f0889f6897e088d642428b801000000c2100089fe8b7e0489f68b5608578b4424048b74241c8b4c24148b5c2410895c241089c38b0424894c2414895424188974241c83c40ce989f8ffff8d64240c89ff8b470489ff8b770c8b14248b7a048b1f89d983fb0775698b5f0489d289d7ff3289ffff77088b7c24208b74241c8b542418575652e8462e000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b7424148b5424048916897e048b3c24897e088d64240cb80100000083c404c2100089cf83ff09756489d289d7ff3289ff89fbff77088b7c24208b542418575652e8cf2e000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b7424148b5424048916897e048b3c24897e088d64240cb80100000083c404c210008d642408b8b47c69b18b5d04ff238b4424185b8b742408897424148b7c2404897c241083c410e99d1500008b4424185b8b742408897424148b7c2404897c241083c410e9801500008b0689c183f80b75118b4e0889ce3b650c7305ff552ccdccebe683f91d750a8b76048b76048b36eb05be94d967b18b4d008d49f43b4d087305ff5528cdcc894d00c741fc0200000089590489318b742404890e895604897e08b801000000c210008b1789d683fa07750c8b7f086a016a01e9c901000083fe0d75138b77048b3689f73b650c7305ff552ccd81ebd3bf0100000083ff037519ff742410ff74240868087d69b1bb03000000e8ad4cf4ffeb008b3c248b3789f283fe0b752f8b770c8b760c8b76048b1683fa0575118b760889f73b650c7305ff552ccd80ebd68d642414b8746d69b18b5d04ff2389d683fa0d75138b77048b3689f73b650c7305ff552ccd80ebae83fe07750a8b7f04bb01000000eb0e8d642414b8307d69b18b5d04ff23f7c70100000075288b570489de83c602710e8d642414b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642414b8a84566b18b5d04ff23b801000000e8d02d000089c7ff74240857f644240401753d8b7424048b3e89f6ff76048b07ff770c8b5c2410e80d2e0000ff34248b5c240ce8ed2e000089c28d6424045e891424897424043b650c7303ff552cebbc5e8b7c24048b4d008d49f83b4d087305ff5528cdc0894d00c741fc0100004089398b7d008d7fec3b7d087305ff5528cd42897d00c747fc040000008b5c240889da895f0c894f08897704c70733000000578b4424148b74242c89d28b4c24248b5c2420895c242089c38b0424894c2424895424288974242c83c41ce915f5ffff8d6424048b3783fe01751a8b77048b7f08893424897c24048d6424045f83f702e933feffff8b77048b3689f73b650c7305ff552ccd81ebccf4|@19267,1,@4121|19,0,@8905 305,0,0 365,1,@8906 370,1,@8913 438,0,@8914 471,1,@8915 509,0,0 548,1,@8919 586,0,0 622,0,0 654,0,0 752,1,@8906 757,1,@8921 812,0,@8922 845,1,@8915 883,0,0 922,1,@8919 960,0,0 986,1,@8923 1044,0,0 1168,0,@10423 1201,0,9999 1246,0,6 1280,0,0 1318,0,@10037 1325,0,@10472 1332,0,@10474 1341,0,5 1346,0,@16477 1351,1,@7452 1382,0,0 1423,1,@8927 1461,0,0 1508,0,@18389 1517,0,1 1522,1,@8431 1559,0,0 1572,0,0 1578,0,5 1583,0,0 1644,0,@10068 1651,0,@19232 1658,0,@15112 1693,0,0 1700,0,@18791 1710,1,@8544 1764,0,@8931 1782,1,@8932 1810,1,@8934 1848,0,0 1970,1,@8936 2007,0,3 2035,0,0 2077,1,@8937 2114,0,3 2142,0,0 2157,0,@19252 2191,1,@8923 2220,1,@8923 2266,0,@14765 2314,0,0 2367,0,0 2385,0,@19255 2390,0,1 2395,1,@7270 2451,0,@19141 2495,0,0 2506,0,@19256 2538,0,@9455 2573,0,@10224 2583,0,0 2588,1,@8938 2627,1,@8939 2639,1,@8940 2743,0,25 8906:D3,652|3b650c7305ff552ccd09538b188b7808ff700c6a016a018b3783fe070f85f70100008b7f0483ff117507bf03000000eb05bf0100000083ff030f85da010000bffc02c0b08b07e855020000e81403000089c7578b7c240c8b3783fe05754489ff8b47048b3883ff07752f8b700489f7f7c6010000007407be03000000eb05be0100000083f60283fe03750e8b3f8b4704e8a798efff89c7eb07e89e98efff89c7eb0289ff8b3783fe0d0f855c0100008b7f04f6042401755c8b34248b560483fa017507ba03000000eb05ba0100000083fa03754089f68b0e8d6424048b118b75008d76e83b75087305ff5528cd86897500c746fc05000000c7461001000000894e0c895608c7460401000000c7060b000000eb7fbecc5366b18b4d008d49f83b4d087305ff5528cdc0894d00c741fc010000408931be1f4e00008d14f5f9ffffff8b75008d76f03b75087305ff5528cd86897500c746fc03000000895608894e04c7060d0000008b55008d52f43b55087305ff5528cdc2895500c742fc020000008b1c24895a048d642404c702090000008911568b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000897b088b3c24897b04c703f82447b16a016a01548b442418e8b991efffff34248b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c240c8938e81c02000089c78b3424897424108d642410897c2404eb608d642414b83c6f68b18b5d04ff238b7c24148b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703d02547b16a016a01548b442414e83691efffff34248b442408e84e03000089c78b34248974240c8d64240c897c24048b0424ff742404ba0c6368b18b5c2410e88008f6ff588d642410c20400f4000000|@19206,1,@4092|43,0,1 50,0,0 64,0,@4690 71,1,@8907 76,1,@8908 120,0,1 127,0,0 145,1,@6635 154,1,@6635 196,0,1 203,0,0 251,0,0 264,0,0 270,0,5 277,0,@10423 310,0,9999 355,0,6 397,0,4 441,0,@8909 455,1,@6630 489,0,0 500,1,@8910 528,0,@16566 572,0,@8911 586,1,@6630 598,1,@8912 627,0,@16477 636,1,@7452 8907:D3,176|3b650c7305ff552ccd09a8010f85960000008b308b40048b3eff7604ff76083bdf7502eb2a8b338d3475010000008b1789d18d1455010000003bf275628d73048d7f043bc9f3a674068d642408eb548b7d008d7ff43b7d087305ff5528cd09897d00c747fc020000008b34248977048d6424045e893757e884ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c38d642408e958ffffffb801000000c3f400|@16561,1,@4086|169,0,0 8908:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4087|68,0,0 8909:D3,60|3b650c7305ff552ccd058b388b72083bfe75208b45008d40f83b45087305ff5528cd04894500c740fc010000008b7a048938c3b801000000c3f40000|@16565,1,@4088|52,0,0 8910:D3,116|3b650c7305ff552ccd01a801755e8b308b40048b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000c7470801000000c7470401000000893757e8bdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@4089|48,0,0 55,0,0 109,0,0 8911:D3,248|3b650c7305ff552ccd05508b7a04f7c70100000075238b37ff77048b760c8b1683fa0375058b7604eb195e89f73b650c7305ff552ccd80ebd58d642404b801000000c3f7c601000000753f8b0e8b56048b198b1b8b4424048b003bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebb9be0100000083fe0175125e89f73b650c7305ff552ccd80e968ffffff8d6424088b3e8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19134,1,@4090|62,0,0 139,0,0 213,0,6 8912:D3,172|3b650c7305ff552ccd01a8010f85900000008b388b40048b378b7f048b570489d183e20983fa017507ba03000000eb05ba0100000083f20289cf83e70383ff017507b903000000eb05b90100000083f1028b7d008d7ff03b7d087305ff5528cd47897d00c747fc03000000894f08895704893757e887ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@4091|42,0,1 49,0,0 67,0,1 74,0,0 163,0,0 8913:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4093|68,0,0 8914:D3,88|3b650c7305ff552ccd0589c36a016a016a01b9e47669b18b42048b7a088b720c8b5210575652548304240c89caff125f5e5a8b45008d40f03b45087305ff5528cdc4894500c740fc030000008950088970048938c3f40000|@19208,1,@4094|19,0,@19207 8915:D3,504|3b650c7305ff552ccd0950538b7c24108b7f048b1789d683fa030f8591000000ff77048b7c2414ff378b7c2418ff77088b7c24108b4708e8d001000089c38b7c24188b74241c57ff74241056ff74241c8b442418e8a302000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d642410c2080089f783ff090f852d0100008b7c2410ff378b7c2414ff77088b7424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b54240c8b7c241c8b7f088b45008d40f03b45087305ff5528cd84894500c740fc03000000897808c74004c46866b1c70001000000ff1289c7578b7c24148b4708e8d500000089c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54241489570c8b14248957088d6424048977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d64240cc208008d642408b8947769b18b5d04ff23f4|@19216,1,@4098|56,1,@8916 85,1,@8917 122,0,1 234,0,0 284,0,@10755 290,0,0 307,1,@8916 397,0,0 434,0,1 494,0,@19212 8916:D3,220|3b650c7305ff552ccd018b3089f783fe090f8589000000ff70048b4008e8deffffff89c7f7c701000000756a8b3f8b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d0000006a018b5c2404e8050fe1ff89c78d6424048b3783fe0d75208b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c38d642404b801000000c383ff0375308b78048b3783fe0d75208b7f048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3b801000000c3f4|@19209,1,@4095|75,0,0 84,0,6 95,1,@4973 145,0,0 155,0,0 208,0,0 214,0,0 8917:D3,548|3b650c7305ff552ccd0953a8010f8554010000ff30ff70048b7c24048b1f89ff89feff770489f689f7ff760889ffff770cf6442414010f85d7000000f6442408010f85c60000008b7c24148b3f8b7424088b363bfe7507bf03000000eb05bf0100000083ff030f859b0000008b7c24288b45008d40f43b45087305ff5528cd88894500c740fc02000000c74004010000008938e8a001000089c7578b5424288b442408ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240489570c8977088b74240c8977048b342489378d6424108b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d642404893883c408c210008d64240ceb0a8d64240ceb048d64240c8b7c241c8b7424188b5424148b4c2410575652518b4424108b5c2418e8c8feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c210008b7424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b5424148b7c24108b7f088b45008d40f03b45087305ff5528cd84894500c740fc03000000897808c74004c46866b1c70001000000ff1289c68b54240c8b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977088b7424048977048b342489378d6424088b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c21000f400|@19211,1,@4097|88,0,1 95,0,0 141,0,0 148,1,@8918 392,0,0 442,0,@10755 448,0,0 537,0,0 8918:D3,392|3b650c7305ff552ccd0983f801750389d8c383fb017501c3a8010f855a0100008b3889faf6c3010f85430100008b3389f13bfe7568a801755a52a80175478b4004f6c30175318b5b04e8b2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404b8e09966b18b5d04ff238d642404b8e09966b18b5d04ff23b8648e66b18b5d04ff23a8010f85c100000089d6f6c3010f85ac00000089cf3bd17d52a801754456a80175318b4004e839ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404b8e09966b18b5d04ff23b8648e66b18b5d04ff23f6c301754557f6c30175318b5b04e8e5feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404b8e09966b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23f4000000|@19210,1,@4096|124,0,@11229 138,0,@11229 148,0,@11149 245,0,@11229 255,0,@11149 329,0,@11229 339,0,@11149 349,0,@11149 359,0,@11149 369,0,@11149 379,0,@11149 8919:D3,496|3b650c7305ff552ccd0950538b7c24148b7f048b1789d683fa010f85930000008d6424048b4704ff77088b7c2414ff378b7c2418ff77088b7c24188b7424208b5424148b4c241c575652518b5c241ce8b001000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542408895708897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d64240cc2100089f783ff090f85220100008b7c2414ff378b7c2418ff77088b7424188b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b5424248b7c24208b7f088b45008d40f03b45087305ff5528cd84894500c740fc03000000897808c74004c46866b1c70001000000ff1289c28b7424188b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2410894f0c8957088977048b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542408895708897704c707010000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d64240cc210008d642408b8807869b18b5d04ff23f400|@19221,1,@4100|80,1,@8920 124,0,0 236,0,0 286,0,@10755 292,0,0 381,0,0 425,0,0 485,0,@19218 8920:D3,528|3b650c7305ff552ccd0953a8010f8541010000ff30ff70048b7c2404ff378b7c2408ff77088b7c240c8b7f0c8b378b7c24108b3f3bf77502eb318b168d1455010000008b1f89d98d1c5d010000003bd30f85ac0000008d76048d7f043bc9f3a674098d642408e99b0000008b7c24248b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b5c2404e8c5fbffff89c7578b5424248b442404ff1289c28b7424208b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2414894f0c8957088977045e8d64240889378b45008d40f43b45087305ff5528cd80894500c740fc020000005e897004893883c408c210008d6424088b7c241c8b7424188b5424148b4c2410575652518b4424108b5c2418e8d9feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8d6424048938c210008b7424148b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b5424148b7c240c8b7f088b45008d40f03b45087305ff5528cd84894500c740fc03000000897808c74004c46866b1c70001000000ff1289c28b7424108b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2404894f0c8957088977045e8d64240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c21000f40000|@19217,1,@4099|140,0,0 151,1,@8918 373,0,0 423,0,@10755 429,0,0 516,0,0 8921:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4101|68,0,0 8922:D3,88|3b650c7305ff552ccd056a016a016a01b9e47669b18b7a048b72088b520c575652548304240c89c389cab8007969b1ff125f5e5a8b45008d40f03b45087305ff5528cdc4894500c740fc030000008950088970048938c3f4|@19208,1,@4102|17,0,@19207 43,0,@19222 8923:D3,288|3b650c7305ff552ccd0950ff338b7b04ff73088b3789f283fe0375338b47048b5c2408e80c01000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000eb7f89d683fa0175408b4704ff77088b5c240ce8bb01000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b14248957088d642404897704c70701000000eb3883fe0775338b47048b5c2408e86502000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70707000000eb00578b5d008d5bf43b5d087303ff5528895d00c743fc02000000c74304010000008b7c240c893b8b442404e873f8ffff89c78b7424148b54240889168b14248956048d642410897e08b801000000c20400f400|@19224,1,@4106|36,1,@8924 73,0,1 97,1,@8925 144,0,0 163,1,@8926 200,0,3 234,0,0 249,1,@8918 279,0,0 8924:D3,216|3b650c7305ff552ccd0953a8010f85b80000008b38ff7004ff37ff77048b5f08ff770c6a016a016a01ba0c7969b1548b442420ff125f5a598b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8d6424048977088b34248977048d6424048b342489378d642404578b4424048b5c2408e85effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@4103|42,0,@19223 208,0,0 8925:D3,216|3b650c7305ff552ccd0953a8010f85b80000008b38ff7004ff37ff77048b5f08ff770c6a016a016a01ba0c7969b1548b442420ff125f5a598b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e8b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b142489570c8d6424048977088b34248977048d6424048b342489378d642404578b4424048b5c2408e85effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f40000|@10030,1,@4104|42,0,@19223 208,0,0 8926:D3,144|3b650c7305ff552ccd0953a80175738b18ff70046a016a016a01ba0c7969b1548b442414ff125e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b4424048b5c2408e8a7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4000000|@10030,1,@4105|27,0,@19223 135,0,0 8927:D3,236|3b650c7305ff552ccd0950f6c301757d8b03ff73048b7c24188b5424148b4c24108b5c240c8b75008d76dc3b75087305ff5528cd8f897500c746fc0800000089461c895e18894e14895610897e0c8b3c24897e088d642404c746043c7969b1c706dc3847b15a8b4c24108b5c2404b8205066b1895c2404bb05000000894c24088954240c89742410e9cff6ffff8b7c24148b5424108b4c240c8b75008d76ec3b75087305ff5528cd86897500c746fc04000000894e0c895608897e04c706203c47b15a8b4c24108b5c2404b8ac5c66b1895c2404bb05000000894c24088954240c89742410e972f6fffff400|@19231,1,@4109|91,0,@19225 97,0,@8928 111,0,@10365 120,0,2 137,1,@8919 190,0,@8929 204,0,@10572 213,0,2 230,1,@8919 8928:D3,816|3b650c7305ff552ccd05528b78048b1789d683fa090f857f010000ff30ff70088b780889fe8b5d008d5bf03b5d087305ff5528cdc1895d00c743fc03000000897b08c74304c46866b1c703010000008b7d008d7ff03b7d087305ff5528cd48897d00c747fc03000000897708c74704c46866b1c70701000000576a016a016a01b9e47669b18b5424188b421c89d28b7a0c89d28b721089d28b5214575652548304240c89caff125e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b4c24108b590489c98b410889c98b790c89c98b711089c98b511489c98b49185756525189da89c38b442414ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d642408c383fe070f857c0100008b570489d6f6c2010f85600100008b5204f6c20175168b520483fa017507ba03000000eb05ba01000000eb05ba0100000083fa030f852e01000089f78b1f8b7f04ff37ff30ff70086a016a016a01b9e47669b18b5424188b421c89d28b7a0c89d28b721089d28b5214575652548304240c89caff125e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b4c24108b590489c98b410889c98b790c89c98b711089c98b511489c98b49185756525189da89c38b44241cff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b3c24893e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707070000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d64240cc38d642404eb048d642404b8447969b18b5d04ff238d642404b8447969b18b5d04ff23f40000|@19229,1,@4107|69,0,@10755 75,0,0 111,0,@10755 117,0,0 129,0,@19207 282,0,0 357,0,3 450,0,1 457,0,0 464,0,0 498,0,@19207 651,0,0 726,0,3 790,0,@19226 804,0,@19226 8929:D3,88|3b650c7305ff552ccd056a016a016a01b9e47669b18b7a048b72088b520c575652548304240c89c389cab8007969b1ff125f5e5a8b45008d40f03b45087305ff5528cdc4894500c740fc030000008950088970048938c3f4|@19230,1,@4108|17,0,@19207 43,0,@19222 8930:D3,24|3b650c7305ff552ccd01b8507a69b18b5d04ff23f4000000|@19236,1,@4110|11,0,@19233 8931:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce9272ff4fff40000|@19237,1,@4111|26,0,1 37,1,@7270 8932:D3,2488|3b650c7305ff552ccd0953ff30ba102169b18b442410bb03000000e86847fdff89c757ba504569b168f47a69b18b4424088b5c2404e8a60dfeff89c75e8d642404ff36ff7504bef83c47b181c6c4000000568965048b3783fe0d75218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff01750ab8b07766b18b5d04ff238b178b44240cff1289c78b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c4045f897d0483c408c208008b650483c4045f897d048b3089f781fecb000000750c8d642408b801000000c2080089fe83ff110f85ea030000ff7008ff7424108b7c24048b3f8d1c7d0100000083fb01750abffc7a69b1e98c00000089df83c72c89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f878f03000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abffc7a69b1b92d0000008d77048d7a04d1e9f3a489d98b7c24048d77048d7a1ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf1c7b69b1e98f00000089de83c63489f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87dd02000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be1c7b69b1b9350000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c75010000008b74240c8b368d3475010000005683fb01750d8d6424048b7c240ce99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870402000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b74240c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf407b69b1e99a00000089de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f875401000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604302089fed1eec64430017489fed1eec64430026fd1efc6443803208060ffbf89c78b378d1c75010000008b7424088b368d3475010000005683fb01750d8d6424048b442408e9990000008b342483fe01750b8d64240489f8e9860000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777289d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708598b7424088d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b80100000083c40cc208008d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642414b8780566b18b5d04ff238d642410b8780566b18b5d04ff238d642410b8780566b18b5d04ff2389f783fe0b0f855e020000ff74240c8b7c24088b3f8d1c7d0100000083fb01750abf4c7b69b1e98c00000089df83c75689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870602000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf4c7b69b1b9570000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a2fd1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf407b69b1e99a00000089de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f875401000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604302089fed1eec64430017489fed1eec64430026fd1efc6443803208060ffbf89c78b378d1c75010000008b7424048b368d3475010000005683fb01750d8d6424048b442404e9990000008b342483fe01750b8d64240489f8e9860000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777289d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708598b7424048d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b80100000083c408c208008d642410b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff2383ff03750e8d642408b8807b69b18b5d04ff23ff74240c8b7c24088b3f8d1c7d0100000083fb01750abfac7b69b1e98c00000089df83c74489f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f870602000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abfac7b69b1b9450000008d77048d7a04d1e9f3a489d98b7c24088d77048d7a26d1e9f3a48062ffbf89d78b378d1c750100000083fb01750abf407b69b1e99a00000089de83c60889f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f875401000089d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c70889fed1eec604302089fed1eec64430017489fed1eec64430026fd1efc6443803208060ffbf89c78b378d1c75010000008b7424048b368d3475010000005683fb01750d8d6424048b442404e9990000008b342483fe01750b8d64240489f8e9860000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff01777289d18d044d02000000f7d80345003b450872053b45007205ff5528cdcc894500d1e98948fcc640ff4183ea02c74450fe00000000d1ee893089d98d77048d7804d1e9f3a489df83c708598b7424048d7604d1ef8d3c38d1e9f3a48060ffbf8b1424ff128d642404b80100000083c408c208008d642410b8780566b18b5d04ff238d64240cb8780566b18b5d04ff238d64240cb8780566b18b5d04ff23f40000|@19246,1,@4113|14,0,@18389 23,0,1 28,1,@8431 36,0,@18802 41,0,@19238 54,1,@8549 71,0,@8932 126,0,0 136,0,@10986 212,0,101 223,0,0 267,0,@19239 287,0,4 308,0,16777215 366,0,0 375,0,@19239 380,0,22 431,0,@19240 451,0,4 472,0,16777215 530,0,0 556,0,@19240 561,0,26 654,0,4 675,0,16777215 733,0,0 796,0,@19241 816,0,4 837,0,16777215 895,0,0 1032,0,4 1053,0,16777215 1107,0,0 1163,0,0 1178,0,@9465 1192,0,@9465 1206,0,@9465 1220,0,@9465 1234,0,@9465 1277,0,@19242 1297,0,4 1318,0,16777215 1376,0,0 1385,0,@19242 1390,0,43 1441,0,@19241 1461,0,4 1482,0,16777215 1540,0,0 1677,0,4 1698,0,16777215 1752,0,0 1808,0,0 1823,0,@9465 1837,0,@9465 1851,0,@9465 1870,0,@19243 1902,0,@19245 1922,0,4 1943,0,16777215 2001,0,0 2010,0,@19245 2015,0,34 2066,0,@19241 2086,0,4 2107,0,16777215 2165,0,0 2302,0,4 2323,0,16777215 2377,0,0 2433,0,0 2448,0,@9465 2462,0,@9465 2476,0,@9465 8933:D3,24|3b650c7305ff552ccd01b8bc4569b18b5d04ff23f4000000|@18809,1,@4112|11,0,@18806 8934:D3,364|3b650c7305ff552ccd098b7c240c8b7f048b1789d683fa05757a8b57048b7c240cff378b7c2410ff77088b7c240c8b74241050575689d0e84401000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d6424048978048b3c2489388d642404c20c0089f783ff090f85c10000008b7c240c8b3f8b74240c8b56088b7424088b4d008d49f43b4d087305ff5528cdcd894d00c741fc02000000c741040100000089318b75008d76f03b75087305ff5528cd8f897500c746fc03000000895e08894e0489068b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e04c706050000008b45008d40f03b45087305ff5528cdc4894500c740fc030000008950088970048938c20c00b8347c69b18b5d04ff23f400|@19251,1,@4115|56,1,@8935 93,0,2 205,0,0 274,0,0 311,0,2 353,0,@19248 8935:D3,884|3b650c7305ff552ccd0953a8010f8503010000ff30ff70048b74240489f7ff760489ff8b7f08f644240c010f85df000000f7c7010000000f85cd0000008b74240c8b368b178b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c7470801000000897704c7070d0000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c7060d0000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742040100000089328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9d10000008d642404eb048d642404eb7a8b7c24088b55008d52f43b55087305ff5528cd80895500c742fc02000000c7420401000000893a8b7424108b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f088d64240489570489378b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c20c008b7c24188b7424148b5424105756528b44240c8b5c2414e854feffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c20c00f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8f3fbe0ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e87300e1ff89c78b74241c8b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c03000000897008897804c7000f0000008b7c24188b5f34bac86966b16a01e8b12ce1ff89c2b801000000ff1289c78b3783fe0d75218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf0100000083ff01750e8d642410b8b07766b18b5d04ff238b3f83ff030f858b0000008b7c24148b45008d40f43b45087305ff5528cd80894500c740fc02000000c740040100000089388b1c24e820e2ffff89c28d6424048b7424188b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b4c2408894f0889570489378b45008d40f43b45087305ff5528cd80894500c740fc020000008b34248970048d642404893883c408c20c008d642404e91ffefffff40000|@19247,1,@4114|98,0,0 107,0,6 140,0,0 149,0,6 182,0,0 248,0,0 257,0,20 311,0,0 391,0,0 510,0,0 517,0,1 529,1,@4980 566,0,0 573,1,@4985 612,0,1 624,0,7 636,0,@10767 643,1,@5052 650,0,0 699,0,0 713,0,@10986 766,0,0 776,1,@8918 8936:D3,224|3b650c7305ff552ccd0989c689df83fe01751783ff017508b801000000c20c00b81c9666b18b5d04ff238b06ff7604f7c7010000000f85950000008b1fff77046a016a016a01b9e47669b18b7c24208b74241c8b542418575652548304240c89caff125e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7c24188b7424148b5424105756528b4424148b5c2410e85bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b81c9666b18b5d04ff23f400|@11207,1,@4116|25,0,0 33,0,@11204 71,0,@19207 213,0,@11204 8937:D3,236|3b650c7305ff552ccd0989c753f7c7010000000f85c60000008b07ff77048b7c24048b7f088b5d008d5bf03b5d087305ff5528cd81895d00c743fc03000000897b08c74304c46866b1c703010000006a016a016a01b9e47669b18b7c24208b74241c8b542418575652548304240c89caff125e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f088957048937578b7c24188b7424148b5424105756528b4424108b5c2414e84cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20c008d642404b801000000c20c00f4|@10030,1,@4117|69,0,@10755 75,0,0 86,0,@19207 228,0,0 8938:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700007969b1c3f400|@10221,1,@4118|15,0,0 26,0,@9455 73,0,@19222 8939:D3,216|3b650c7305ff552ccd098b3b89fe83ff0b75228b7b0c8b7f0c8b7f048b3783fe0575088b5f08e9d5ffffffb8746d69b18b5d04ff2389f783fe0d750a8b7b048b1fe9baffffff83ff0775078b53046a01eb0ab85c7d69b18b5d04ff2383fa01750e8d642404b8887d69b18b5d04ff238b3aff72048b3f3bf875068d642404eb2a8b378d3475010000008b1889d98d1c5d010000003bf375148d77048d78043bc9f3a67402eb068d64240458c38b74240483c602710e8d642408b8f80466b18b5d04ff235989ca8934243b650c7305ff552ccd05eb87f40000|@19262,1,@4119|44,0,@19141 83,0,@19258 102,0,@19260 186,0,@9455 8940:D3,152|3b650c7305ff552ccd0983fb01750ab8d87d69b18b5d04ff23ff338b5b0483f801752a8d6424048b7c24048b45008d40f43b45087305ff5528cd88894500c740fc020000008958048938c2040083e802710e8d642404b8f80466b18b5d04ff238b7c240857e896ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@19266,1,@4120|16,0,@19263 87,0,@9455 8941:D3,304|3b650c7305ff552ccd018b78048b3789f283fe03750b8b7f04576a01e9a500000089d683fa0175088b7f04576a01eb5383fe0775088b7f04576a01eb06b801000000c3f64424040175348b7c24048b0789ffff77048b7c240483ff037507ba03000000eb07e896ffffff89c25e891424897424043b650c7303ff552cebc55883c404c3f64424040175378b7424048b3e89f6ff76048b47088b7c240483ff037507ba03000000eb07e853ffffff89c25e891424897424043b650c7303ff552cebc25883c404c3f644240401755a8b7c24048b3789ffff77048b7e048b46088b74240483fe037507ba03000000eb2783ff017507bf03000000eb05bf0100000083f70283ff037407ba03000000eb07e8edfeffff89c25e891424897424043b650c7303ff552ceb9f5883c404c3f4000000|@19268,1,@4122|62,0,0 95,0,1 162,0,1 232,0,1 244,0,1 251,0,0 264,0,1 8942:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb7e0a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@19269,1,@4123|25,0,0 42,0,@9455 8943:D3,132|3b650c7305ff552ccd018b3883ff017507be01000000eb0af7c70100000075578b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000897808c7400401000000c700003b66b1c3b8648e66b18b5d04ff23f40000|@19271,1,@4124|18,0,0 63,0,0 98,0,1 108,0,0 114,0,@10093 120,0,@11149 8944:D3,1888|3b650c7305ff552ccd0953ff30ff70048b40088b5c2408e85807000089c7576a016a016a016a018b74241c89f783fe017505e98d01000089ff8b7424103bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff030f84320100008b7424148b1689d783fa09754e8b54242c8b7c24288b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24108938ff1289c78b378934248b7704897424048b7708897424088b7f0c897c240ce95802000089f689fa83ff05750d89f68b7e04576a01e90505000089f689d783fa03750d89f68b7e04576a01e99603000089f683ff01751289f68b7e0489f6ff7608576a01e91802000089f689f7ff760489ff8b570489d6f6c20175598b520483fa017507ba03000000eb05ba0100000083fa0375408d64240489f78b076a016a016a016a018b7c243c8b742438575654830424088b5c2438e87afeffff595a5e5f890c248954240489742408897c240ce9a70100008b7c242c83c70257710e8d642428b8f80466b18b5d04ff23bf010000008b742404e9970000008b54242c8b7c24288b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c241c8938ff1289c78b378934248b7704897424048b7708897424088b7f0c897c240cff34248b5c2408ff74240cff74241483fb0175068b7c2424eb0b8b442424e86406000089c78b7424308b5424088916897e048b7c2404897e088b3c24897e0c8d64240cb80100000083c420c20c00f7c60100000075288b4e0489fa83c202710e8d642428b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b1c2483eb02710e8d64242cb8f80466b18b5d04ff23b801000000e84c06000089c76a016a016a016a018b7424488b54244457548304240456ff74241cff742428528b4424508b5c242ce8950600005a5b5e5f8d64240c8b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089790c89710889590489118b5c24288b55008d52f03b55087305ff5528cdca895500c742fc03000000895a08894a04c70201000000891424c74424040100000089742408897c240ce9c3fefffff6442404010f850d0100008b7424048b3e89f6ff76048b07ff7704ff7708ff770c8b5c2438e80004000083f801750d8d64240c8b542404e9c70000008b5c242ce8d1d7ffff89c36a016a016a016a018b7c24588b742454575654830424088b442420e84ffcffff5f5e595b8b55008d52ec3b55087305ff5528cdca895500c742fc04000000895a0c894a08897204893a8b75008d76f03b75087305ff5528cd04897500c746fc030000008b7c2408897e088b3c24897e048d64240cc706010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893a5e891424897424043b650c7303ff552ce9e8feffffff34248b54243c8b7c24388b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c24208938ff1289c3ff74240c54830424148b442408e8f60b00008d642410e996fefffff6442404010f85030100008b7424048b3e89f6ff76048b07ff7708ff770c8b5c2430e89e02000083f801750d8d6424088b542404e9c00000008b5c2424e86fd6ffff89c36a016a016a016a018b7c24508b74244c575654830424088b442420e8edfaffff5f5e595b8b55008d52ec3b55087305ff5528cdca895500c742fc04000000895a0c894a08897204893a8b75008d76f43b75087305ff5528cd04897500c746fc020000008b3c24897e048d642408c706030000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893a5e891424897424043b650c7303ff552ce9f2feffffff34248b5424388b7c24348b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c241c8938ff1289c36a0154830424108b442408e89d0a00008d64240ce93dfdfffff6442404010f85fe0000008b7424048b3e89f6ff7604ff378b4704ff77088b5c2430e84501000083f801750d8d6424088b542404e9bb0000008b7d008d7ff03b7d087305ff5528cd01897d00c747fc030000008b34248977088d6424048b34248977048d642404c7070500000057ff74243c8b5c2424e8ddd4ffff89c78b74243c8b45008d40f43b45087305ff5528cdc0894500c740fc0200000089700489388b1424ff1289c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b55008d52f43b55087305ff5528cd80895500c742fc020000008b742404897204893a5e891424897424043b650c7303ff552ce9f7feffffff34248b5424388b7c24348b45008d40f43b45087305ff5528cd84894500c740fc020000008978048b7c241c8938ff1289c36a0154830424108b442408e8490900008d64240ce9e9fbfffff4000000|@19283,1,@4137|24,1,@8945 66,0,1 119,0,0 126,0,0 133,0,0 334,0,1 341,0,0 429,0,@9455 439,0,0 556,1,@8946 593,0,0 626,0,@9455 665,0,@9455 675,0,0 680,1,@8947 727,1,@8948 814,0,0 825,0,0 880,1,@8945 907,1,@8918 1031,0,0 1186,1,@8952 1234,1,@8945 1261,1,@8918 1378,0,1 1531,1,@8952 1579,1,@8945 1649,0,2 1663,1,@8918 1871,1,@8952 8945:D3,268|3b650c7305ff552ccd0983f8017505e9f000000083fb010f84e7000000a8010f85d50000008b1089d7f6c3010f85be0000008b0b89ce3bd17568a801755a57a80175478b4004f6c30175318b5b04e8adffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404b8e09966b18b5d04ff238d642404b8e09966b18b5d04ff23b8648e66b18b5d04ff23a8017540f6c30175313bfe7d16a80175088b4004e945ffffffb8e09966b18b5d04ff23f6c30175088b5b04e92effffffb8e09966b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b801000000c3f400|@19272,1,@4125|129,0,@11229 143,0,@11229 153,0,@11149 188,0,@11229 211,0,@11229 221,0,@11149 231,0,@11149 241,0,@11149 251,0,@11149 261,0,0 8946:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4126| 8947:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb7e0a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@19269,1,@4127|25,0,0 42,0,@9455 8948:D3,936|3b650c7305ff552ccd0950538b7c242083ff017502eb118b7c240483ff0174086a016a016a01eb64ff74241c8b54241c8b45008d40f43b45087305ff5528cd04894500c740fc020000008b7c24048978048b7c24088938ff1289c78b378b0c2489ca89318b770489d289d18972048b570889c989ce8951088b7f0c89f6897e0c8d64240cb801000000c218008b7424208b7c24083bfe75158d6424045f83c404578b7c24148b3424e9940100008b7c242c83ff017507bf01000000eb34f7c7010000000f85a50000008b1f89da8b4c240889ce3bcb7507bf03000000eb13f7c701000000757a89f63bf27d4abf0100000083ff03750a8b7c241c8b742408eb7c8b74240883c602710e8d642414b8f80466b18b5d04ff238b5424048b0c24890c2489542404897424083b650c7303ff552ce956fffffff7c70100000075148b770489f73b650c7305ff552ccd80e95fffffff8d642414b8e09966b18b5d04ff238d642414b8648e66b18b5d04ff238d642414b8648e66b18b5d04ff23f7c7010000000f85ab0000008b078b570483fe0175798b5c2410e82102000089c13b0c247e338b74240889f283c602710e8d642414b8f80466b18b5d04ff2389d2890c2489542404897424083b650c7303ff552ce9b7feffff8b74240883c602710e8d642414b8f80466b18b5d04ff238b5424048b0c24890c2489542404897424083b650c7303ff552ce981feffff89f183e902710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e949ffffff8d642414b8643c66b18b5d04ff23f7c7010000000f854c0100008b0f8b570483fe010f851601000089cf578b5d008d5bf43b5d087303ff5528895d00c743fc02000000c74304010000008b7c2404893b8b442428e80403000089c68b5424208b4c241c8b5c24188b4424148b7d008d7fe03b7d087305ff5528cd4f897d00c747fc07000000894718895f14894f1089570c897708c74704747f69b1c707546247b16a016a016a016a01bab87f69b157ff74241c54830424088b44241c8b5c2428ff12595b5a5f8d6424048b75008d76ec3b75087305ff5528cd8e897500c746fc04000000897e0c895608895e04890e8b5c24108b4d008d49ec3b4d087305ff5528cdcc894d00c741fc040000008b042489410c8d64240c895908897104c701090000008b742414890ec7460401000000895608897e0cb801000000c2180089f183e902710e8d64240cb8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e9a8feffff8d64240cb8643c66b18b5d04ff23f4|@19278,1,@4131|133,0,0 183,0,0 216,0,1 237,0,0 270,0,@9455 343,0,@11229 357,0,@11149 371,0,@11149 407,1,@8949 434,0,@9455 483,0,@9455 535,0,@9455 568,0,@10105 633,0,0 648,1,@8950 714,0,@19275 720,0,@8951 733,0,@19277 850,0,4 863,0,0 874,0,0 893,0,@9455 926,0,@10105 8949:D3,448|3b650c7305ff552ccd0953ff70048b3c248b3783fe07751189ff8b7f048d642404576a01e9530100008b40088b5c2404e813faffff89c783ff017507be03000000eb05be0100000083fe0374198d642408f7c70100000075038b07c3b8648e66b18b5d04ff238b3c248b3789f283fe05751689ff8b7f048d642404b80100000083c404e9b800000089ff89d683fa03751389ff8b7f048d642404b80100000083c404eb6089ff83fe01751389ff8b7f048d642404b80100000083c404eb0a8d642408b801000000c3f7c70100000075248b570489c683c602710ab8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd483c002710ab8f80466b18b5d04ff23c3f7c70100000075248b570489c683c602710ab8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd483c002710ab8f80466b18b5d04ff23c3f7c70100000075248b570489c683c602710ab8f80466b18b5d04ff2389d789f03b650c7305ff552ccd81ebd483c002710ab8f80466b18b5d04ff23c3f64424040175348b7c24048b0789ffff77048b5c240ce869feffff89c23b5424047e02eb048b5424045e891424897424043b650c7303ff552cebc55883c408c3f4000000|@19273,1,@4128|49,1,@8945 61,0,1 68,0,0 93,0,@11149 124,0,0 155,0,0 181,0,0 195,0,0 219,0,@9455 250,0,@9455 279,0,@9455 310,0,@9455 339,0,@9455 370,0,@9455 8950:D3,260|3b650c7305ff552ccd0983f8017506b801000000c383fb017501c3a8010f85d30000008b3889fef6c3010f85bc0000008b0b89ca3bf97528a801751a8b4004f6c30175088b5b04e9b4ffffffb8e09966b18b5d04ff23b8e09966b18b5d04ff23a801757e89f7f6c301756d3bf27d52a801754457a80175318b4004e880ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404b8e09966b18b5d04ff23b8648e66b18b5d04ff23f6c30175088b5b04e932ffffffb8e09966b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23b8648e66b18b5d04ff23f4000000|@19274,1,@4129|16,0,0 77,0,@11229 87,0,@11229 174,0,@11229 184,0,@11149 207,0,@11229 217,0,@11149 227,0,@11149 237,0,@11149 247,0,@11149 8951:D3,112|3b650c7305ff552ccd0589d36a016a016a016a01ff7304ff308b40048b7b088b730c8b53108b4b148b5b1857548304240c5652515389c38b54241c8b442418ff128d6424085f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f4|@19276,1,@4130| 8952:D3,760|3b650c7305ff552ccd095053bf010000008b742404f7c60100000075288b4e0489fa83c202710e8d642408b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd06a016a018b7424183bfe7513bf943966b18b378934248b7f04897c2404eb138b7c24088b770889ff8b7f0c893424897c2404ff3424ff7424088b7c2410ff7708ff742418f604240175198b34248b3e89f6ff76048b7f048b7f088b742408e9dc0100008d642408bf0300000083ff03752a8d6424108b74240c5f8b1789168b57048956048b57088956088b7f0c897e0cb80100000083c404c20800ff742414ff742408f644240401752e8b7424048b3e89f6ff76048b7f048b5f088b442404e8bbc9ffff89c25e891424897424043b650c7303ff552cebcbff34248b7424208b7c240cf7c60100000075308b0e8b56048b49048b490c83e90103cf710e8d642424b8f80466b18b5d04ff2389cf89d63b650c7305ff552ccdc0ebc88b74242c8b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2420894a0c8972088b74241c897204c702030000008b75008d76ec3b75087305ff5528cd84897500c746fc04000000897e0c8b1c2489d9895e08c746040100000089165683ff037e09be0100000089c9eb298d6424048b7424288916c74604010000008b14248956088d642404897e0cb80100000083c420c20800f6c10175288b410489f383c302710e8d642428b8f80466b18b5d04ff2389c189de3b650c7305ff552ccdc6ebd383ee016bf602710e8d642428b8f80466b18b5d04ff2383ee01710e8d642428b8f80466b18b5d04ff233bfe7c07be03000000eb05be0100000083fe037515588b5c24288b7c2424897c242c83c42ce9910000008d642404e952ffffff3bfe7507bf03000000eb41f7c7010000007534f7c60100000075258b1f8b57048b068b4e043bd8751089ce89d73b650c7305ff552ccdc0ebc7bf01000000eb05bf01000000eb05bf0100000083ff0375115e8934243b650c7303ff552ce9a3fdffff8d64240cbf01000000e9bdfdfffff4000000|@19282,1,@4136|13,0,0 44,0,@9455 82,0,@10068 173,0,1 214,0,0 261,1,@8918 327,0,@9455 401,0,1 445,0,0 458,0,0 479,0,0 497,0,0 527,0,@9455 565,0,@9455 584,0,@9455 598,0,1 605,0,0 631,1,@8953 649,0,1 702,0,0 709,0,0 716,0,0 747,0,0 8953:D3,156|3b650c7305ff552ccd0953ff7004ff700889c38b0424e89500000089c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c70207000000bf010000008b3424f7c60100000075288b5e0489f983c102710e8d64240cb8f80466b18b5d04ff2389de89cf3b650c7305ff552ccdc4ebd08b74240889168b5424048956048b14248956088d64240c897e0cb801000000c3f4000000|@19281,1,@4135|23,1,@8954 60,0,3 65,0,0 95,0,@9455 147,0,0 8954:D3,292|3b650c7305ff552ccd0950538b7c240489fe83ff01750a8d642408b801000000c389f7f7c6010000000f85e400000089ffff378b04248b5c2404e8f900000089c28b75008d76f43b75087305ff5528cd04897500c746fc020000008b0c2489cf894e048916568b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c743040100000089ff893b8b44240ce814faffff8b5c2408e863ffffff89c78b74240483fe0175418b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c74304010000008b342489338d64240483fb0175078d64240c89f8c38d64240c89f8e9a70400008b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c40cc38d642408b8648e66b18b5d04ff23f40000|@19280,1,@4134|28,0,0 59,1,@8955 131,0,0 144,1,@8950 197,0,0 229,1,@8956 280,0,@11149 8955:D3,1092|3b650c7305ff552ccd09538b3c248b3f8b1789d683fa07750c8b7f045e8b5604e98303000089f283fe0375128b77048b7f0c5aff72048b5608e94701000089d683fa09757b8b5f048b4f088b7f0c5e8b56048b75008d76f03b75087305ff5528cd8f897500c746fc03000000897e08894e04c706050000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e863ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c383fe0175758b5f048b7f085e8b56048b75008d76f43b75087305ff5528cd8d897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704893757e8e9feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c35f8b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707b43a66b18b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c383fa017507ba01000000eb2af6c2010f85ac0000008b1a89d93bc37507ba03000000eb12f6c2010f85860000003bc17d5bba0100000083fa03754f8b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000005a895704c707b43a66b15789f3e814feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c3eb43f6c20175148b4a0489ca3b650c7305ff552ccdc5e95bffffff8d642404b8e09966b18b5d04ff238d642404b8648e66b18b5d04ff238d642404b8648e66b18b5d04ff23f7c70100000075108b37ff77048b56048b5208e98b000000bf0100000083ff01750e8d642404b8b07766b18b5d04ff238b378b3e8b5e048b75008d76f43b75087305ff5528cd89897500c746fc02000000897e04c706030000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc020000005a895704893757e82cfdffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938c383fa017507ba01000000eb26f6c2010f858e0000008b1a89d93bc37507ba03000000eb0ef6c201756c3bc17d41ba0100000083fa0375258d6424048b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000008937e91effffff5e89f73b650c7305ff552ccd81e9effefffff6c20175148b4a0489ca3b650c7305ff552ccdc5e979ffffff8d642408b8e09966b18b5d04ff238d642408b8648e66b18b5d04ff238d642408b8648e66b18b5d04ff23f7c70100000075388b0f8b77048b59043bc3751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd85ebc0bf0100000083ff01750ab8b07766b18b5d04ff238b3f8b378b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707b43a66b18b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@19279,1,@4132|116,0,2 238,0,0 349,0,@10089 382,0,0 395,0,0 419,0,1 439,0,0 480,0,@10089 559,0,@11229 573,0,@11149 587,0,@11149 621,0,0 635,0,@10986 682,0,1 765,0,0 789,0,1 805,0,0 899,0,@11229 913,0,@11149 927,0,@11149 1001,0,0 1011,0,@10986 1055,0,@10089 8956:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4133| 8957:D3,576|3b650c7305ff552ccd0583f8010f85b60100008b7a1083ff03750ab8e08069b18b5d04ff238b7a0c83ff0375278b45008d40f43b45087305ff5528cd04894500c740fc020000008b7a04897804c70021000000c38b7a0889fe8b1f89f7ff760489fe8b470889f7ff760c8b571081fb100666b17502eb238b3b8d3c7d0100000083ff01752cbf100666b18d73048d7f0433c93bc9f3a67402eb1783f801751083fa01750b8d642408bec43966b1eb62eb008b7d008d7fe83b7d087305ff5528cd0d897d00c747fc050000008b34248977108d6424048b342489770c8d642404895708894704891f8b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707388169b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706488169b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb148b521483e802710ab8f80466b18b5d04ff23ff22f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8d9d7e0ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70021000000c3f4|@19289,1,@4138|28,0,@19284 79,0,16 111,0,@9473 134,0,@9473 169,0,@10072 260,0,0 269,0,6 302,0,0 339,0,@10072 374,0,@19287 409,0,@19288 442,0,0 451,0,20 466,0,@9455 512,0,0 519,0,1 531,1,@4980 570,0,16 8958:D3,80|3b650c7305ff552ccd0989c789d88b7424048b4e048b7424048b5e0c578b7424088b54240c53ff74240889c38b442408894c24088954240c89742410c744241401000000e91b0000008d642404f40000|@19316,1,@4149|64,0,0 69,1,@8959 8959:D3,904|3b650c7305ff552ccd0953ff30ff7004ff70088b7c2420ff77048b7c24248b5708b803000000ff1289c78b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54241089560c897e08c7460401000000c706030000005683ff017d0e8d642418b8948966b18b5d04ff238b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70611000000568b742410f7c60100000075398b0e8b56048b59088b0b83f905751c8b4b048b5b0889398b4c2408890b89d63b650c7305ff552ccdc0ebcd8d64241cb8908169b18b5d04ff238b7c24148b1789d683fa0775288d64240489ff8b47048b7c242c8b7424288b5424245756528b5c2420e87302000089c6e92601000089ff89f283fe03755189ff89feff770489f689f7ff760889ff8b470c8b7c24348b7424308b54242c8b4c24288b5c243868048469b157565251ff742418ff74243853ff7424288b5c2424e8ad11000089c68d64240ce9cc00000089ff89d683fa09751e8d64240489ff89feff770489f68b7e0889f68b760c8b542430e90a01000089ff83fe01757589ff8b470489ff8b7f088b75008d76f43b75087305ff5528cd81897500c746fc020000008b14248956048d642404893e8b54242c8b7d008d7ff43b7d087305ff5528cd45897d00c747fc0200000089570489378b7424288b5424248b4c24208b5c241c57565251538b5c2428e8d7fdffff89c6eb198d6424048b542424f644240801750c8b7c24088b07ff1289c6eb0e8d642418b8648e66b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008b142489178d64240483ff0175098d64241489f0c214008d6424148b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7001f000000c21400f6c20175378b1a8b4a048b033bf8751e8b7d008d7ff83b7d087305ff5528cd48897d00c747fc01000000891feb1389ca3b650c7305ff552ccdc4ebc4bf0100000083ff01750e8d64241cb8b07766b18b5d04ff238b3f8b7f048b1783fa0d750d6a0189f389f8e876c7e0ffeb2d8b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c01000000897008897804c700170000008b7c24308b74242c8b5424288b4c24248b5c2420575652515389c38b442414e887fcffff89c68d642404e9d2fefffff4000000|@19315,1,@4148|34,0,1 81,0,0 87,0,1 102,0,@11112 142,0,2 177,0,8 242,0,@19290 293,1,@8960 353,0,@19310 379,1,@8968 589,0,@11149 627,0,0 692,0,15 760,0,0 774,0,@10986 802,1,@4973 837,0,0 849,0,11 8960:D3,280|3b650c7305ff552ccd0953a8010f85f30000008b38ff7004ff37ff77048b7c241c8b742418ff74240c57568b4424108b5c240ce8f400000089c7578b5424188b442404ff1289c28b3c2489fe83ff0175088d64240889d7eb2f8b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c7071f00000083c40457f64424080174075883c40cc20c008b7c241c8b74241857568b44240c8b5c2414e8de0a000089c7578b7c24208b74241c8b5424185756528b4424188b5c241ce833ffffff89c78b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b7c24048978088b3c248978048d642414c7000b000000c20c008d642404b86c8369b18b5d04ff23f4000000|@19309,1,@4146|52,1,@8961 129,0,15 170,1,@8967 255,0,5 267,0,@19306 8961:D3,740|3b650c7305ff552ccd0953a8010f85b20000008b38ff7004ff37ff77048b7c2414ff77048b7c24188b5708b803000000ff1289c68b5424208b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c897708c7470401000000c707030000005783fe017d0e8d642418b8948966b18b5d04ff238b55008d52f43b55087305ff5528cd40895500c742fc02000000897204c702050000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707110000008b542408eb0c8d642404b801000000c20c00f6c20175398b1a8b4a048b43088b1883fb05751c8b58048b400889338b5c2404891889ca3b650c7305ff552ccdc4ebd08d642418b8908169b18b5d04ff238b74240c8b1689d183fa03753e89f68b46046a016a018b74242456548304240489fbe8c20100008d6424045f8b7424208b54241c5756528b44241c8b5c2420e8adfeffff89c7e99c00000089f689ca83f905751389f68b7e0489f68b56088b742420e9ac00000089f683fa01755f89f68b76048b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a0489328b4c24208b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489168b54241c5756528b44241c8b5c2420e828feffff89c7eb1a8b7424208b54241c5756528b44241c8b5c2420e80cfeffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c414c20c00f7c60100000075378b1e8b4e048b033bf8751e8b7d008d7ff83b7d087305ff5528cd0c897d00c747fc01000000891feb1389ce3b650c7305ff552ccdc4ebc1bf0100000083ff01750e8d642418b8b07766b18b5d04ff238b3f8b77048b3e83ff0d750f6a0189d389f0e844c3e0ff89c7eb2d8b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c01000000895708897704c707170000008b7424208b54241c5756528b44241c8b5c2420e827fdffff89c7e916fffffff4000000|@19304,1,@4144|44,0,1 91,0,0 97,0,1 112,0,@11112 152,0,2 187,0,8 202,0,0 262,0,@19290 306,1,@8962 610,0,0 624,0,@10986 652,1,@4973 689,0,0 701,0,11 8962:D3,588|3b650c7305ff552ccd09538b3089f783fe050f85b3000000ff70048b780883ff017507bec43966b1eb2c8b3f8b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2404893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9ca00000083ff037562ff70048b7c2410ff77048b7c2414ff770cff74240cff742408ff7424088b442414bb01000000e86501000089c757ff742410ff74240cff74240c8b442418bb01000000e81404000089c78b7424188b142489168d642414897e04b801000000c20800ff7004ff70088b7c2414ff77048b7c2418ff770cff742410ff742408ff7424088b4424188b5c2414e80101000089c757ff742414ff74240cff74240c8b44241c8b5c2418e8b103000089c78b74241c8b142489168d642418897e04b801000000c20800f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8a9cde0ff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e829d2e0ff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c030000008b14248956088d642404897e04c7060f0000008b7c24088937c74704c43966b1b80100000083c404c20800f40000|@19303,1,@4143|36,0,@10072 73,0,0 82,0,6 115,0,0 185,0,0 194,0,20 242,0,0 247,1,@8963 271,0,0 276,1,@8965 299,0,0 347,1,@8963 375,1,@8965 398,0,0 440,0,0 447,0,1 459,1,@4980 496,0,0 503,1,@4985 538,0,1 557,0,7 570,0,@10072 575,0,0 8963:D3,480|3b650c7305ff552ccd09508b34248b7e0483ff010f85f00000008b7c24108b3f83ff0d75148b4424106a01bb01000000e847c0e0ff89c7eb358b7424108b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000c7470801000000897704c7071700000057bf2c06c0b08b17bf3406c0b08b3fbe3c06c0b08b1ebe4406c0b08b0e8b75008d76e83b75087305ff5528cd8e897500c746fc05000000895e10894e0c895608897e04c706100666b18b5c24108b7c240c576a01689c5b69b1568b442414e84f36fdff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c004166b18978088b3c248978048d642408c70007000000c20c00f7c7010000000f85ba0000008b5424088b7d008d7ff03b7d087305ff5528cd44897d00c747fc0300000089570889f68977048d642404c707547b47b157b801000000e82b5dfdffba3c2869b18b5c240c8b7c240857ff742404e8845dfdff89c7578b7c24148b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e82dd0e0ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c20c008d642404b8f88169b18b5d04ff23f400|@19297,1,@4140|44,0,0 49,1,@4973 90,0,0 97,0,0 106,0,11 112,0,@4792 119,0,@4793 126,0,@4794 133,0,@4795 179,0,@9473 195,0,@18994 205,1,@8463 240,0,@10170 259,0,3 322,0,@8964 328,0,0 333,1,@8467 338,0,@18443 356,1,@8468 396,0,0 403,1,@4985 438,0,1 457,0,7 469,0,@19294 8964:D3,196|3b650c7305ff552ccd0550bf2c06c0b08b0fbf3406c0b08b3fbe3c06c0b08b06be4406c0b08b1e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08897e04c706100666b18b42048b7a08576a01689c5b69b1568b5c2410e8c134fdff89c78d6424048b3783fe0d751789f8ff3424bb01000000c744240401000000e9f9bde0ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400801000000897804c70017000000c3f40000|@19293,1,@4139|12,0,@4792 19,0,@4793 26,0,@4794 33,0,@4795 79,0,@9473 93,0,@18994 103,1,@8463 126,0,0 134,0,0 139,1,@4973 172,0,0 179,0,0 188,0,11 8965:D3,336|3b650c7305ff552ccd098b780483ff0175638b7c240c8b3f83ff0d75208b44240cbb05000000c744240c030000008b3c24897c240883c408e973bde0ff8b7c240c8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000c7400805000000897804c70017000000c20c00f7c7010000000f85c30000008b3f83ff037508b8c43966b1c20c008b7424048b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000897708894704c707907d47b157b801000000e8eb5afdffba3c2869b18b5c240c8b7c240857ff742404e8445bfdff89c7578b7c24148b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8edcde0ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642408897804c7000f000000c20c00b8888269b18b5d04ff23f400|@19302,1,@4142|34,0,2 42,0,1 57,1,@4973 94,0,1 101,0,2 110,0,11 137,0,@10072 182,0,@8966 188,0,0 193,1,@8467 198,0,@18443 216,1,@8468 256,0,0 263,1,@4985 298,0,1 317,0,7 325,0,@19299 8966:D3,196|3b650c7305ff552ccd0550bf2c06c0b08b0fbf3406c0b08b3fbe3c06c0b08b06be4406c0b08b1e8b75008d76e83b75087305ff5528cd8f897500c746fc05000000894610895e0c894e08897e04c706100666b18b42048b7a08576a01689c5b69b1568b5c2410e88532fdff89c78d6424048b3783fe0d751789f8ff3424bb05000000c744240401000000e9bdbbe0ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400805000000897804c70017000000c3f40000|@19298,1,@4141|12,0,@4792 19,0,@4793 26,0,@4794 33,0,@4795 79,0,@9473 93,0,@18994 103,1,@8463 126,0,2 134,0,0 139,1,@4973 172,0,0 179,0,2 188,0,11 8967:D3,1008|3b650c7305ff552ccd0953a8010f85180300008b38ff70048b3f8b3789f283fe030f856f010000ff77048b7c24108b5708b803000000ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240889570c897708c7470401000000c707030000005783fe017d0e8d642410b8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703110000006a016a018b7c241c5754830424048b442414e8bcf7ffffff34248b5c24088b7d008d7ff43b7d087305ff5528cd08897d00c747fc02000000c74704010000008b74240c8937578b7c24288b74242457568b442420e8e2feffff89c78b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460cc43966b1897e088b7c2404897e04c7060b0000008b142489d783fa0175098d64242089f0c208008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c41cc2080089d683fa05750f8b57048b77088b7c2410e98b01000083fe010f855f010000ff77048b7c24108b5708b803000000ff1289c78b4d008d49ec3b4d087305ff5528cd80894d00c741fc040000008b74240889f389710c897908c7410401000000c7010300000083ff017d0e8d64240cb8948966b18b5d04ff238b75008d76f43b75087305ff5528cd8a897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd4a897d00c747fc02000000897704c707110000008b75008d76f43b75087305ff5528cd8a897500c746fc02000000c7460401000000890e568b75008d76f43b75087305ff5528cd88897500c746fc02000000897e048b7c2404893e8b5424188b7d008d7ff43b7d087305ff5528cd4c897d00c747fc0200000089570489378b74241457568b442410e833fdffff89c68b142489d783fa0175098d64241089f0c208008b45008d40f03b45087305ff5528cdc0894500c740fc0300000089700889ff8978048d642404c7001f00000083c40cc20800585b8b7424088b5424048954240489742408e9d5fcffff8d642404b8783966b1c20800f7c70100000075378b1f8b4f048b033bd0751e8b7d008d7ff83b7d087305ff5528cd48897d00c747fc01000000891feb1389cf3b650c7305ff552ccdc4ebc1bf0100000083ff01750e8d642408b8b07766b18b5d04ff238b3f8b7f048b1783fa0d750f6a0189f389f8e8cfb7e0ff89c3eb2d8b5d008d5bec3b5d087305ff5528cdc0895d00c743fc04000000c7430c01000000897308897b04c70317000000588b74240c8b542408895424088974240c83c404e911fcfffff4|@19305,1,@4145|50,0,1 97,0,0 103,0,1 118,0,@11112 158,0,2 193,0,8 216,1,@8962 256,0,0 317,0,@10072 333,0,5 396,0,15 448,0,1 497,0,0 503,0,1 517,0,@11112 557,0,2 592,0,8 625,0,0 778,0,15 816,0,@10066 887,0,0 901,0,@10986 929,1,@4973 966,0,0 978,0,11 8968:D3,500|3b650c7305ff552ccd095383f80175548d642404ff742424ff742414ff7424148b7424148b54242c8b4c24288b5c24248b442420894424208b442404895c24248b1c24894c24288954242c8b542408897424308b7c240c897c241c83c41cff228d64240c8b38ff70048b0789c289d68b1283fa010f858e0000008b54240483fa030f85810000008b46048b5e08ff7704f64424040174638b7c24108b7424248b542420575652e815f9ffff89c7ff742430ff742404578b7424208b5424388b4c24348b5c24308b44242c8944242c8b442404895c24308b1c24894c2434895424388b5424088974243c8b7c2418897c242883c428ff228d6424108d64240cb80c8469b18b5d04ff23ff77046a016a018b5c24188b7c2434575483042404e872f3ffffff3424ff7424088b4424408b7c24248b74243c8b5424388b4c24348b5c2430575652515389c28b4424248b5c2414ff1289c7578b7c241c83ef0257710e8d642424b8f80466b18b5d04ff23ff742448ff742448ff7424488b7c24488b7424448b5424408b4c243c8b5c24388b442434ff742408ff742408ff7424085756525153508b44244c8b5c2430e850feffff89c78d6424108b45008d40ec3b45087305ff5528cd80894500c740fc0400000089780c8b3c248978088d6424048b7c2404897804c7000b00000083c41cc22400f4000000|@19314,1,@4147|167,1,@8965 255,0,@19311 286,1,@8962 356,0,@9455 486,0,5 8969:D3,2072|8d7c24803b7d0c7305ff5530cd0953a8010f85d70100008b38ff7004ff378b4704ff77148b7c241c8b7f048b74241cff760c8b54243083ea02710e8d642414b8f80466b18b5d04ff238b74242c8b76fcc1e608c1ee0783ce013bd6720e8d642414b8783266b18b5d04ff238b74242c8b7456fe83fe077f728d64240c8b7c242483c702710e8d642408b8f80466b18b5d04ff23ff3424ff74240857ff74242c8b74242c8b5424288b4c24248b5c24208b44241c8944241c8b44240c895c24208b5c2408894c2424895424288974242c8b3c24897c24308b7c2404897c243483c418e91affffff8d6424188b378b7f04b9010000008b55008d52f83b55087305ff5528cdc3895500c742fc01000040890a528b55008d52f03b55087305ff5528cdc1895500c742fc03000000897a088b3c24897a04c702a08c47b183c602710e8d642418b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd45897d00c747fc030000008b0c24894f08895704893757be030000008b7d008d7ff83b7d087305ff5528cd41897d00c747fc010000408937578b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b3424897704c7079c8d47b1578b7c2430ff378b7c2434ff77108b7c2438ff77148b7c243cff771cbb01000000e8ff87ffff89c757bf010000008b3424eb0c8d642404b801000000c21c00f7c60100000075288b4e0489fa83c202710e8d642438b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b3c2483ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b1c24e81a07000089c7578b4424088b5c2420e8ca07000089c7578b04248b5c2404e82f08000089c7578b7c24108b74240483ff010f855f03000083fe010f85480300006a016a01ff742434ff74242cff742434ff74242c54830424108b44242c8b5c2438e8fc23fdffff3424ff7424086a016a018b54246854b8c45d66b18b5c2458ff12ff34246a016a01ff74244454830424048b44241c8b5c2410e86481feffff3424ff742408badc5f69b1ff742458ff742450ff7424588b4424708b5c241ce81784feff89c383fb0175068b5c2404eb0b8b442404e82908000089c383fb0175068b5c2420eb0b8b442420e87708000089c383fb0175068b7c242ceb0b8b44242ce8c508000089c7578b5d008d5bdc3b5d087303ff5528895d00c743fc080000008b7c2444897b1cc74318010000008b7c2448897b148b7c2404897b108b7c2464897b0c8b7c2454897b088b7c245c897b048b7c2450893b6a016a018b942484000000548b442478ff125e8d6424048b3c2483ff0175088d64243c89f7eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7071f00000083c438578b74245c83ee02710e8d642440b8f80466b18b5d04ff2383ee018b7c243c03fe57710e8d642444b8f80466b18b5d04ff238b7c24308b3f8d1c7d0100000083fb01750abf5c0e66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f875a01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24308d77048d7a04d1e9f3a489df83c708d1efc6043a2f8062ffbf89d757ba803066b18b442464bb03000000e8fdd6deff89c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c404e99f0000008b3c2483ff01750a8d6424085fe98d0000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777689f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b7c24308b3fb801000000e9840000008d642450b8780566b18b5d04ff238d642444b8780566b18b5d04ff238d642448b8b0a166b18b5d04ff238b1fff7704f7c601000000753f8b168b4e048b5b088b0383f80575228b43048b5b0889108b54243089135a89ce89d73b650c7305ff552ccdc0e95afcffff8d64244cb8d48569b18b5d04ff238d64244cb8b0a166b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e83f80fdff8b7c2428ff378b7c242c8b3f8b74242c893e8b7c240481ff100666b17502eb2b8b7c24048b3f8d3c7d0100000083ff017520bf100666b18b7424048d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240457e8e312efff89c7578b7c241883ff017d0e8d642454b8a84566b18b5d04ff23b8010000008b5c2418e87705000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714030000008977105e89770cc74708010000005e8d6424048977048b74240889378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b742404897708c7470401000000c70703000000578b7c246883c70257710e8d642450b8f80466b18b5d04ff238b7c24688b7424648b5424608b4c245c8b5c24588b442454ff34245756525153508b4424648b5c2468e817f8ffff89c78d6424048b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f893883c448c21c00f40000|@19324,1,@4160|64,0,@9455 98,0,@9988 138,0,@9455 240,0,0 310,0,@8970 324,0,@9455 372,0,1 439,0,@8971 472,0,0 477,1,@8900 485,0,0 499,0,0 529,0,@9455 568,0,@10224 578,0,0 586,1,@8972 602,1,@8973 617,1,@8974 684,1,@8461 705,0,@10588 740,1,@8724 752,0,@19031 777,1,@8725 799,1,@8975 821,1,@8976 843,1,@8977 884,0,0 1003,0,15 1025,0,@9455 1051,0,@9455 1079,0,@9552 1099,0,4 1120,0,16777215 1178,0,0 1221,0,@9967 1230,0,1 1235,1,@4896 1317,0,4 1338,0,16777215 1392,0,0 1453,0,0 1467,0,@9465 1481,0,@9465 1495,0,@11274 1571,0,@19322 1585,0,@11274 1657,1,@8500 1685,0,@9473 1712,0,@9473 1737,0,@10237 1749,1,@6589 1770,0,@10224 1780,0,0 1789,1,@8978 1824,0,1 1838,0,1 1852,0,0 1901,0,12 1944,0,0 1950,0,1 1970,0,@9455 8970:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e93505e2ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4151|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 8971:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19321,1,@4152|31,0,@9455 8972:D3,172|3b650c7305ff552ccd093bc37506b801000000c383f8017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd09897500c746fc02000000894604c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff23e87effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@4153|15,0,0 26,0,@11112 66,0,0 101,0,8 116,0,@9455 8973:D3,96|3b650c7305ff552ccd09a801754a8b4004ff338b3b83c702710e8d642404b8f80466b18b5d04ff23893be8d1ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@4154|31,0,@9455 89,0,0 8974:D3,156|3b650c7305ff552ccd0983f801751583fb017506b801000000c3b81c9666b18b5d04ff238b308b4004f6c30175618b138b5b048b7d008d7fec3b7d087305ff5528cd4d897d00c747fc0400000089570c897708c7470401000000c7070300000057e89affffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b81c9666b18b5d04ff23f40000|@11207,1,@4155|21,0,0 27,0,@11204 86,0,0 92,0,1 144,0,@11204 8975:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4156| 8976:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4157| 8977:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4158| 8978:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4159|15,0,0 26,0,@9455 73,0,@10071 8979:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4161| 8980:D3,540|3b650c7305ff552ccd0983fb0175088b7c240c89c6eb08b801000000c20c00f7c7010000000f85e50100008b0f8b570483fe010f85b30100008b79105783c002710e8d642404b8f80466b18b5d04ff23ba803066b1bb03000000e835cedeff89c7578b3c248b3f8d1c7d0100000083fb01750e8d642404bf348669b1e98900000089df83c71089f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f873301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893abf348669b1b9110000008d77048d7a04d1e9f3a489d95f8d77048d7a0cd1e9f3a48062ffbf89d78b378d1c750100000083fb01750ab9448669b1e98f00000089de83c61c89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878400000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708be448669b1b91d0000008d7604d1ef8d3c3ad1e9f3a48062ffbf89d18b44240c8b7424085abb01000000894c2404895424088974240ce984d8f3ff8d642404b8780566b18b5d04ff238d642408b8780566b18b5d04ff2389f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc1e90ffeffffb8643c66b18b5d04ff23f400|@19327,1,@4162|24,0,0 71,0,@9455 81,0,@9967 86,0,1 91,1,@4896 120,0,@19325 140,0,4 161,0,16777215 219,0,0 228,0,@19325 233,0,8 281,0,@19326 301,0,4 322,0,16777215 380,0,0 406,0,@19326 411,0,14 443,0,0 460,1,@7270 469,0,@9465 483,0,@9465 500,0,@9455 529,0,@10105 8981:D3,8772|8dbc2468ffffff3b7d0c7305ff5530cd0d5250538b7c24048b3fbee49347b181c62b0000008d74befcffe6e9f3000000909090e907010000909090e9eb010000909090e996030000909090e9e8030000909090e9ef060000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9e4060000909090e94c070000909090e993000000909090e9c6070000909090e9bc080000909090e92a0a0000909090e973000000909090e9830a0000909090e9290c0000909090e9e50c0000909090e953000000909090e9460d0000909090e92a0e0000909090e93f0e0000909090e9b8110000909090e9f0110000909090e923000000909090e956120000909090e913000000909090e962120000909090e9030000009090905f8b7f108b74240cc706c43966b1897e04b80100000083c408c204008b7c24048b47048b7c2404ff77086a016a018b542414548b5c2410e8a1feffffff3424ff7424088b7c2414ff378b7c2418ff77048b7c241c8b7f088b74241c8b760c8b54241c8b52148b4c241c8b49188b5c241c8b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240889531089730c897b085f897b045f893b6a016a018b542424548b44241ce821feffff5e8d6424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470cc43966b18977088b742404897704c7070b0000008b742424893e5f8d64241c897e04b801000000c204008b7c24048b7f048b078b3083fe1d0f858b0000008b70048b5604ff328b76088b1eff7704ff77108b7c240cff378b7c2410ff77048b7c2414ff7714ff34248b442418e8de8affff89c7576a016a018b54242c548b4424208b5c2428e875fdffff8b1c24ff742404ff742414ff742414ff742414ff742424ff74242c8b442438e82538fdff89c78b742438893e5f8d642428897e04b80100000083c408c20400ff77046a016a018b542414548b5c2410e821fdffffff3424ff7424088b7c2414ff378b7c2418ff77048b7c241c8b7f088b74241c8b760c8b54241c8b52148b4c241c8b49188b5c241c8b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240889531089730c897b085f897b045f8d642404893b6a016a018b542420548b442418e89dfcffff8b3c24ff7424048b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e8aeb3e0ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b54240c895708897704c7070f0000008b74242c893e5f8d64241c897e04b80100000083c408c204008b7c24048b7f048b07ff77048b7c2404ff77106a016a018b542418548b5c2414e8fdfbffff5f8d6424048b7424108b5604576a01ff7424108b4424188b5c2410ff1289c78b742418893e5f8d642410897e04b801000000c204008b7c24048b7f048b07ff7704ff7708ff7710ff77146a016a018b542420548b5c241ce8a1fbffffff3424ff7424086a016a018b7c24308b570854b8c45d66b18b5c2424ff12ff34248b7c242cff378b7c2430ff77048b7c2434ff77086a016a01ff74241054830424048b4424288b5c241ce82e70feffff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424448b5c2428e8e172feff89c383fb0175068b7c2404eb0b8b442404e86f1d000089c7578b7c244cff378b7c2450ff77048b7c24548b7f088b7424548b760c8b5424548b52148b4c24548b49188b5c24548b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240c89531089730c897b085f897b045f893b6a016a018b54245c548b442450e89bfaffffff34246a016a018b7c24688b570854b8c45d66b18b5c2460ff12ff34248b7c2464ff378b7c2468ff77048b7c246cff77086a016a01ff74241054830424048b4424608b5c241ce82c6ffeffff3424ff742408badc5f69b1ff742414ff74241cff7424188b8424800000008b5c2428e8dc71feff89c383fb0175068b7c2404eb0b8b442404e8ce1c000089c7578bbc2484000000ff378bbc2488000000ff77048bbc248c0000008b7f088bb4248c0000008b760c8b94248c0000008b52148b8c248c0000008b49188b9c248c0000008b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240c89531089730c897b085f897b045f893b6a016a018b942494000000548b84248c000000e87bf9ffff5f8d6424048b74243883fe0175068b74242ceb2e8b75008d76f03b75087305ff5528cd80897500c746fc030000008b54242c8956088b542438895604c7061f0000008b142483fa0175088d64246489faeb2a8b55008d52f03b55087305ff5528cdc0895500c742fc03000000897a085f897a04c7021f00000083c4608b7d008d7fec3b7d087305ff5528cd44897d00c747fc0400000089570c8977088b742404897704c7070b0000008b742430893e5f8d642404897e04b80100000083c424c204008b7c24048b47088b5424085b8d6424088b74240489742404e99cf8ffff8b7c24048b47048b3c248b5f106a016a016a018b7c24148b7f085457ff742414ff742420e8931b00005e595f8d64240c83fe01750489caeb268b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897204c7021f0000008b7424048916897e04b801000000c204008b7c24048b7f048b742404ff760c8b078b7c2404ff77108b7c24088b7f148b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c703f0b947b16a016a0154e8b518efff8d64240458e8cbd0fcffe8ea1e000089c78b7424108b561057ff74240c8b4424148b5c240cff1289c78b742418893e5f8d642410897e04b801000000c204008b7c2404ff77048b7c2408ff77088b7c24088b57088b7c2408ff7710b803000000ff1289c7576a016a018b542420548b4424188b5c241ce866f7ffffff34248b7c240c83ff017d0e8d642428b8948966b18b5d04ff238b75008d76f43b75087303ff5528897500c746fc020000008b7c240c897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707110000008b7424248b5604576a03ff7424248b44242c8b5c2420ff1289c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240c89570c8977085e897704c707150000008b742428893e8b7c240c897e04b80100000083c424c204008b7c24048b7f048b7704ff368b34248b7604f7c6010000000f85a30000008b77088b1e8b570c8b7c24048b378b7c2404ff77048b7c2408ff77108b7c240cff77148b7d008d7fe83b7d087305ff5528cd4c897d00c747fc0500000089571089770c8b34248977088b74240c897704c70770bb47b157ff7424048b442414e87283ffffb801000000e8103afdffba3c2869b1ff742404ff7424048b5c2414e86a3afdff89c78d6424088b74241c893e5f8d64240c897e04b80100000083c408c2040083fe0175478b570c8b7c24048b378b7c24048b5f048b7c2404ff77108b7c24088b7f14576a0156528b442414e8461bfeff89c78b742418893e5f8d642408897e04b80100000083c408c204008b77088b1eff770c8b7c2408ff378b7c240cff77048b7c2410ff77108b7c2414ff7714ff34248b442418e8b882ffff89c7ff342457ff742414ff74241c8b4424248b5c2418e8e911fdff89c78d6424048b742424893e5f8d642414897e04b80100000083c408c204008b7c24048b7f088b7424048b5e0cf6c30175338b730483fe017507be03000000eb05be0100000083fe03751a8b3b8b470c8b5424085b8b74240c8974240c83c408e9e8f4ffffff378b7c2404ff77048b7c24088b7f088b742408ff7610be0100000089dae9741600008b7c24048b7f048b742404ff76088b742408ff760cff378b7c240cff378b7c2410ff77048b7c2414ff77108b7c2418ff77148b7c24108b3f83ff0b0f855f0100008b7c24108b7f04f7c70100000075168b7f0483ff017507bf03000000eb05bf01000000eb05bf0100000083ff030f85260100008b7c24108b7f048b3f8b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604010000008b54241089168b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938bb03000000e8b084eeff89c7578b0424e86185eeff89c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470803000000897704c707010000008b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c706070000008b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542410895708897704c70705000000ff74241c57ff742408ff742414ff74241cff742428ff7424288b4424348b5c2440e8621b000089c78d6424048b742428893e5f8d642418897e04b80100000083c408c204008d642428eb048d642428b82c8869b18b5d04ff238b7c24048b7f048b742404ff76088b7424088b4e0c8b7424088b46108b3f8b7424048b168b742404ff76108b75008d76ec3b75087305ff5528cd87897500c746fc04000000894e0c8b4c240c894e08895604c70688be47b157568b5c240ce8c89bffff89c783ff0175198b742418c706c43966b15f897e04b80100000083c410c204008b378b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7070d0000008b742418893e5f897e04b80100000083c410c204008b7c24048b7f048b378b47048b7d008d7fec3b7d087305ff5528cd41897d00c747fc0400000089770c8b7424088977088b7424088b7608897704c707c8be47b16a016a018b7424108b560cff742408575483042408bb01000000ff128b3c24ff7424046a016a01be01000000e99b1200008b7c24048b47048b7c2404ff77086a016a018b542414548b5c2410e8c2f1ffffff3424ff7424088b7c2414ff378b7c2418ff77048b7c241c8b7f088b74241c8b760c8b54241c8b52148b4c241c8b49188b5c241c8b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240889531089730c897b085f897b045f893b6a016a018b542424548b44241ce842f1ffff5e8d6424048b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708783966b18b742404897704c7070b0000008b742424893e5f8d64241c897e04b801000000c204008b7c24048b47048b5424085b8d6424088b74240489742404e9d9f0ffff8b7c24048b47048b7c2404ff77088b7c2404ff77048b7c2408ff77086a016a018b54241c548b5c2418e8abf0ffffff3424ff7424086a016a018b7c240c8b3f83ff0d75358b7d008d7ff43b7d087303ff5528897d00c747fc020000008b74240c897704c7073cc347b1c7042401000000897c2404e9920000008b542418b803000000ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b54241c895708897704c70760c347b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c240c894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff34248b5424088b442420ff1289c7578b3c248b3f83ff0d75146a018b442404bb01000000e89c95e0ff89c7eb328b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c01000000c74708010000008b3424897704c70717000000578b7c24048b3f83ff0d75146a018b442408bb03000000e84a95e0ff89c7eb338b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c01000000c74708030000008b742404897704c70717000000578b7c24088b3f83ff0d75146a018b44240cbb05000000e8f794e0ff89c7eb338b7d008d7fec3b7d087303ff5528897d00c747fc04000000c7470c01000000c74708050000008b742408897704c70717000000578b7c24348b178b7c2434ff77048b7c24388b5f088b7c2438ff770c8b7c243c8b471081fa100666b17502eb238b3a8d3c7d0100000083ff01752cbf100666b18d72048d7f0433c93bc9f3a67402eb1783fb01751083f801750b8d642408bec43966b1eb56eb008b7d008d7fe83b7d087305ff5528cd0d897d00c747fc050000005e8977105e89770c894708895f0489178b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e045f893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c7072900000083c404e9610d00008b7c2404ff77048b7c2408ff77088b7c240cff770c8b7c24108b7f108b74240c8b068b74240cff760c8b742410ff76108b742414ff76148b74240ce97f0300008b7c24048b4704a80175278b780483ff017507bf03000000eb05bf0100000083ff03750e8d64240cb8648969b18b5d04ff238b3c24ff7710ff7424048b5c2410e8df1c000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9b60200005f8b7f108b74240cc706c43966b1897e04b80100000083c408c204008b7c2404ff77048b7c24088b47088b7c2408ff77108b7c2408ff77106a016a018b54241c548b5c2418e858ecffffff3424ff7424086a016a018b7c242c8b570854b8c45d66b18b5c2424ff12ff34248b7c2428ff378b7c242cff77048b7c2430ff77086a016a01ff74241054830424048b4424288b5c241ce8e560feffff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424488b5c2428e89863feff89c383fb0175068b7c2404eb0b8b442404e8661c000089c7578b7c2448ff378b7c244cff77048b7c24508b7f088b7424508b760c8b5424508b52148b4c24508b49188b5c24508b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240c89531089730c897b085f897b045f893b6a016a018b542458548b442450e852ebffff5e8d6424048b3c2483ff0175088d64243089f7eb2a8b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7071f00000083c42c8b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757b801000000e8be1b000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071d0000008b342483fe0175088d64240489feeb278b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c7061f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470cc43966b18977085e897704c7070b00000057b801000000e8a91b000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c707050000008b742424893e8b7c2408897e04b80100000083c420c20400f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8469ce0ff89c7eb008b742414893e5f897e04b80100000083c40cc204008b0e89ca83f907750c8b76086a016a01e95909000083fa0d75138b56048b1289d63b650c7305ff552ccdc1ebd3be0100000083fe037516ff74241c5768087d69b1bb03000000e872c1f3ffeb008b7c240c8b3789f283fe0b752f8b770c8b760c8b76048b1683fa0575118b760889f73b650c7305ff552ccd80ebd68d642424b8746d69b18b5d04ff2389d683fa0d75138b77048b3689f73b650c7305ff552ccd80ebae83fe07750a8b7704bf01000000eb0e8d642424b8307d69b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642424b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd083ff037507bf883966b1eb408b4424148b5c240ce8fca2ffff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c01000000897708c74704883966b1c70717000000578b5d008d5bf43b5d087303ff5528895d00c743fc020000008b7c2404897b04c70310c647b16a016a01548b442420e8fd08efff8d64240458e813c1fcffe8521b000089c7578b3c2483ff010f85440200008d6424048b7c240c8b3f8d1c7d0100000083fb01750abfcc0d66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87ec01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c240c8d77048d7a04d1e9f3a489df83c708d1efc6043a238062ffbf89d78b378d1c75010000008b7424188b368d3475010000005683fb01750d8d6424048b542418e99d0000008b342483fe01750b8d64240489fae98a0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f871d01000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424188d7604d1ef8d3c3ad1e9f3a48062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e8c590e0ff89c757b801000000e8001a000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc74608010000005f897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c404e9790500008d64242cb8780566b18b5d04ff238d642428b8780566b18b5d04ff238b7c24108b3f8d1c7d0100000083fb01750abfcc0d66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87f301000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24108d77048d7a04d1e9f3a489df83c708d1efc6043a238062ffbf89d78b378d1c75010000008b74241c8b368d3475010000005683fb01750d8d6424048b54241ce99d0000008b342483fe01750b8d64240489fae98a0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f872401000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b74241c8d7604d1ef8d3c3ad1e9f3a48062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e8858ee0ff89c757b801000000e82418000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc74608010000005f897e048b7c2404893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000057bf010000008b742404eb1c8d642430b8780566b18b5d04ff238d64242cb8780566b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642430b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c24188b3f8d1c7d0100000083fb01750abfcc0d66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87d002000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24188d77048d7a04d1e9f3a489df83c708d1efc6043a238062ffbf89d78b378d1c75010000008b7424248b368d3475010000005683fb01750d8d6424048b7c2424e99d0000008b342483fe0175098d642404e98c0000008b34248d7433ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f870302000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708598b7424248d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb01750aba145969b1e98f00000089de83c60689f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f875301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320150d1efc6443a02298062ffbf81fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757b801000000e8668be0ff89c7578b7c240883ff017d0e8d64243cb8a84566b18b5d04ff23b8010000008b5c2408e84e15000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc74608010000005f8d642404897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c7071900000083c40c8b742424893e5f897e04b80100000083c41cc204008d642434b8780566b18b5d04ff238d642438b8780566b18b5d04ff238d642434b8780566b18b5d04ff238b1683fa01751a8b56048b7608891424897424048d6424045e83f602e9a3f6ffff8b56048b1289d63b650c7305ff552ccdc1ebccf7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e85192e0ff89c7eb008b342483fe0175088d64240c89feeb2a8b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c7061f00000083c4088b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707210000008b74242c893e5f897e04b80100000083c424c20400f7c701000000755a8b1f8b570483fa0175218b3b83ff05750c8b7b0489f2be01000000eb4b8d642420b8ac8969b18b5d04ff238b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897104891989ce89d73b650c7305ff552ccdc0eb9e8d642420b8d88969b18b5d04ff23f6c20175348b028b4a048b5d008d5bf43b5d087305ff5528cdc7895d00c743fc02000000897304890389de89ca3b650c7305ff552ccdc4ebc7893424897c24045e5a83fe01750489d7eb268b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071f0000008b74241c893e5f897e04b80100000083c414c20400f6c20175288b420489f183c102710e8d642418b8f80466b18b5d04ff2389c289ce3b650c7305ff552ccdccebd36a016a0154ff742420ff74241c57ff74241cff74242456b8048a69b1e8071300005e5a83fe01750489d7eb268b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7071f0000008b74241c893e5f897e04b80100000083c414c20400f4|@19358,1,@4200|27,0,@8981 301,0,@10072 309,0,0 513,0,@10072 529,0,5 548,0,0 622,1,@8906 683,1,@8465 704,0,0 903,0,0 910,1,@4985 945,0,1 961,0,7 980,0,0 1073,0,0 1139,0,@10588 1194,1,@8724 1206,0,@19031 1231,1,@8725 1253,1,@8982 1397,0,@10588 1452,1,@8724 1464,0,@19031 1492,1,@8725 1514,1,@8983 1731,0,15 1786,0,15 1834,0,5 1853,0,0 1929,1,@8984 1983,0,15 1997,0,0 2065,0,@8987 2075,1,@6630 2085,1,@8411 2090,1,@8988 2135,0,0 2171,0,1 2219,0,@11112 2261,0,2 2296,0,8 2368,0,10 2386,0,0 2508,0,@8989 2522,1,@8906 2527,0,0 2532,1,@8467 2537,0,@18443 2554,1,@8468 2579,0,0 2634,1,@8653 2655,0,0 2708,1,@8906 2735,1,@8463 2760,0,0 2798,0,1 2805,0,0 2864,0,0 2964,0,1 2971,0,0 2978,0,0 3029,0,0 3071,0,1 3076,1,@6475 3087,1,@6476 3122,0,1 3131,0,0 3170,0,3 3212,0,2 3250,1,@8990 3275,0,0 3296,0,@19338 3389,0,@8992 3400,1,@8932 3417,0,@10072 3426,0,0 3467,0,0 3476,0,6 3491,0,0 3561,0,@8993 3587,0,0 3605,0,0 3811,0,@10066 3824,0,5 3843,0,0 3980,0,@9000 3987,0,0 4005,0,1 4051,0,@9001 4094,0,0 4100,0,1 4133,0,0 4179,0,0 4184,1,@4973 4219,0,0 4226,0,0 4238,0,11 4261,0,1 4266,1,@4973 4301,0,0 4308,0,1 4321,0,11 4344,0,2 4349,1,@4973 4384,0,0 4391,0,2 4404,0,11 4445,0,@9473 4468,0,@9473 4503,0,@10072 4582,0,0 4591,0,6 4624,0,0 4755,0,0 4764,0,20 4860,0,1 4867,0,0 4881,0,@19345 4905,1,@9002 4940,0,0 4949,0,20 4968,0,@10072 4976,0,0 5052,0,@10588 5107,1,@8724 5119,0,@19031 5144,1,@8725 5166,1,@9003 5350,0,15 5388,0,2 5421,0,0 5429,0,0 5434,1,@9004 5471,0,14 5526,0,15 5559,0,@10072 5572,0,5 5578,0,0 5583,1,@9005 5624,0,2 5642,0,0 5687,0,0 5694,0,1 5706,1,@4980 5725,0,0 5781,0,0 5796,0,@19255 5801,0,1 5806,1,@7270 5863,0,@19141 5907,0,0 5918,0,@19256 5950,0,@9455 5981,0,@10067 5996,1,@8939 6031,0,0 6041,0,@10067 6047,0,11 6085,0,@9006 6099,1,@6630 6109,1,@8411 6114,1,@9007 6156,0,@9540 6176,0,4 6197,0,16777215 6255,0,0 6369,0,4 6390,0,16777215 6448,0,0 6496,0,@9473 6519,0,@9473 6540,0,@10237 6550,0,0 6555,1,@4975 6563,0,0 6568,1,@9008 6603,0,1 6610,0,0 6617,0,0 6631,0,0 6673,0,12 6690,0,@9465 6704,0,@9465 6732,0,@9540 6752,0,4 6773,0,16777215 6831,0,0 6945,0,4 6966,0,16777215 7024,0,0 7072,0,@9473 7095,0,@9473 7116,0,@10237 7126,0,0 7131,1,@4975 7139,0,0 7144,1,@9009 7179,0,1 7186,0,0 7193,0,0 7207,0,0 7252,0,12 7258,0,0 7273,0,@9465 7287,0,@9465 7319,0,@9455 7364,0,@9540 7384,0,4 7405,0,16777215 7463,0,0 7575,0,4 7596,0,16777215 7654,0,0 7717,0,@18976 7737,0,4 7758,0,16777215 7816,0,0 7871,0,@9473 7894,0,@9473 7915,0,@10237 7925,0,0 7930,1,@4975 7951,0,@10224 7961,0,0 7970,1,@9010 8005,0,1 8012,0,0 8019,0,0 8033,0,0 8079,0,12 8097,0,0 8112,0,@9465 8126,0,@9465 8140,0,@9465 8236,0,0 8243,0,1 8255,1,@4980 8314,0,15 8352,0,16 8367,0,0 8408,0,0 8419,0,@19348 8480,0,@19350 8598,0,15 8613,0,0 8643,0,@9455 8692,0,@19352 8697,1,@9012 8746,0,15 8761,0,0 8982:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4164| 8983:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4165| 8984:D3,528|8d7c24a43b7d0c7305ff5530cd0953a8010f85e70100008b38ff7004ff37ff77046a016a018b54242454b8c45d66b18b5c2410ff12ff34248b7c2424ff378b7c2428ff77048b7c242cff77086a016a01ff74241054830424048b4424348b5c241ce85651feffff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424348b5c2428e80954feff89c383fb0175068b7c2404eb0b8b442404e88301000089c7578b7c2444ff378b7c2448ff77048b7c244c8b7f088b74244c8b760c8b54244c8b52148b4c244c8b49188b5c244c8b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240c89531089730c897b088b3c24897b048d6424048b3c24893b8d6424046a016a018b542448548b44243cff12ff34248b5c24088b7c244089f883ff0175228b7c24588b74240c89378b34248977048d642404895f08b80100000083c444c210006a016a016a018b7c24608b74245c8b54245854575652e88bfeffff8b3424ff742404ff74240c8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542414895704c707050000008b5d008d5bf43b5d087305ff5528cdc0895d00c743fc02000000897304893b83fb0175068b7c2420eb0b8b442420e8ae00000089c78b74246c893e8b7c2404897e048b3c24897e088d642408b80100000083c454c210008d642404b8f48669b18b5d04ff23f4000000|@19334,1,@4168|43,0,@10588 98,1,@8724 110,0,@19031 135,1,@8725 157,1,@8985 336,0,0 419,0,2 470,1,@8986 500,0,0 515,0,@19331 8985:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4166| 8986:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4167| 8987:D3,248|3b650c7305ff552ccd05508b7a04f7c70100000075238b37ff77048b760c8b1683fa0375058b7604eb195e89f73b650c7305ff552ccd80ebd58d642404b801000000c3f7c601000000753f8b0e8b56048b198b1b8b4424048b003bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebb9be0100000083fe0175125e89f73b650c7305ff552ccd80e968ffffff8d6424088b3e8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19134,1,@4169|62,0,0 139,0,0 213,0,6 8988:D3,96|3b650c7305ff552ccd01a801754aff308b40048b3c248b7f0483e70983ff01742ee8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a8ffffffb801000000c3f400|@9865,1,@4170|89,0,0 8989:D3,120|3b650c7305ff552ccd0589c18b42048b7a088b720c8b5210576a01565289cbe8ecf4fcff89c78b3783fe0d751789f8ff3424bb03000000c744240401000000e9287ee0ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c3f400|@19335,1,@4171|32,1,@8463 51,0,1 59,0,0 64,1,@4973 97,0,0 104,0,1 113,0,11 8990:D3,492|3b650c7305ff552ccd0989c753f7c7010000000f85d60000008b07ff77046a016a018b54240c8b5c242c54ff12ff3424ff7424308b7c24308b74242c8b5424288b4c24248b5c24208b44241cff34245756525153508b44242c8b5c2430e89effffff89c7578b5c24348b7c243057b8205066b1e8c064ffff89c7578b7d008d7ff43b7d087303ff5528897d00c747fc02000000c74704010000008b74240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c240c893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb798d6424048b5c24048b7c241457b8ac5c66b1e83264ffff8b7424148b54240c8b4c24088b7d008d7fec3b7d087305ff5528cd47897d00c747fc04000000894f0c895708897704c707fcbd47b157e89f1afdffb93c2869b18b5c24148b7424185a8954241889ca8974241c8b3c24897c241483c414e9e81afdfff7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8da88e0ff89c7eb00578b7424348b5424388b4c24048b5c24308b44242c89442430b8205066b1895c24348b1c24894c24388954243c897424408b7c2424897c242c83c42ce9d510fdff8d642408f4|@19337,1,@4173|111,0,@10365 116,1,@8906 150,0,0 224,0,0 233,0,20 253,0,@10572 258,1,@8906 311,0,@8991 317,1,@8467 322,0,@18443 356,1,@8468 395,0,0 402,0,1 414,1,@4980 448,0,@10365 483,1,@8465 8991:D3,120|3b650c7305ff552ccd058b7a048b72088b520c576a01565289c3b8ac5c66b1e860f2fcff89c78b3783fe0d751789f8ff3424bb03000000c744240401000000e99c7be0ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c01000000c7400803000000897804c70017000000c3f400|@19336,1,@4172|27,0,@10572 32,1,@8463 51,0,1 59,0,0 64,1,@4973 97,0,0 104,0,1 113,0,11 8992:D3,44|3b650c7305ff552ccd058b4a048b72088b520c5250ff742408bb0300000089c88974240ce957adf3fff40000|@19341,1,@4174|26,0,1 37,1,@7270 8993:D3,76|3b650c7305ff552ccd0589c76a016a018b078b5f048b7a048b72088b520c54575652e8390000005f5e8b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f40000|@19344,1,@4181|35,1,@8994 8994:D3,100|3b650c7305ff552ccd09508b53106a016a018b4424108b7c24188b7424145457535689d3e84f0000008b1c24ff74240483fb0175068b7c240ceb0b8b44240ce86c03000089c78b742420893e8b3c24897e048d642404b80100000083c40cc21000f40000|@19343,1,@4180|37,1,@8995 64,1,@8999 87,0,0 8995:D3,504|3b650c7305ff552ccd0953a8010f85c80100008b38ff7004ff37ff77046a016a018b54242454b8c45d66b18b5c2410ff12ff34248b7c2424ff378b7c2428ff77048b7c242cff77086a016a01ff74241054830424048b4424348b5c241ce8be48feffff3424ff742408badc5f69b1ff742414ff74241cff7424188b4424348b5c2428e8714bfeff89c383fb0175068b7c2404eb0b8b442404e86f01000089c7578b7c2444ff378b7c2448ff77048b7c244c8b7f088b74244c8b760c8b54244c8b52148b4c244c8b49188b5c244c8b431c8b5d008d5bdc3b5d087305ff5528cdc7895d00c743fc0800000089431c894b188953148b54240c89531089730c897b088b3c24897b048d6424048b3c24893b8d6424046a016a018b542448548b44243cff125e8d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70705000000576a016a018b7c24548b7424508b54244c545756528b4424508b5c2420e894feffff8b1c24ff7424048b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008b7c240c893883fb01750489c3eb07e8c800000089c383fb0175068b7c2410eb0b8b442410e81601000089c78b74245c893e8b3c24897e048d642404b80100000083c448c210008b742414c706010000008b3c24897e048d642404b801000000c21000f4|@19342,1,@4178|39,0,@10588 94,1,@8724 106,0,@19031 131,1,@8725 153,1,@8996 326,0,2 400,0,0 420,1,@8997 442,1,@8998 465,0,0 481,0,0 496,0,0 8996:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4175| 8997:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4176| 8998:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4177| 8999:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4179| 9000:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4182| 9001:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4183|27,0,@9455 68,0,0 115,0,8 9002:D3,120|3b650c7305ff552ccd0989c753f7c70100000075548b07ff77046a016a018b54240c8b5c241454ff12ff34248b7c2418578b4424108b5c2414e8c2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642414c204008d642404b801000000c20400f40000|@10030,1,@4184|110,0,0 9003:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4185| 9004:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@4186|48,0,1 102,0,0 9005:D3,156|3b650c7305ff552ccd01a8010f85820000008b308b40048b3e8b56048b75008d76f03b75087305ff5528cd85897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e895ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@4187|62,0,0 95,0,1 149,0,0 9006:D3,248|3b650c7305ff552ccd05508b7a04f7c70100000075238b37ff77048b760c8b1683fa0375058b7604eb195e89f73b650c7305ff552ccd80ebd58d642404b801000000c3f7c601000000753f8b0e8b56048b198b1b8b4424048b003bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebb9be0100000083fe0175125e89f73b650c7305ff552ccd80e968ffffff8d6424088b3e8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19134,1,@4188|62,0,0 139,0,0 213,0,6 9007:D3,96|3b650c7305ff552ccd01a801754aff308b40048b3c248b7f0483e70983ff01742ee8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a8ffffffb801000000c3f400|@9865,1,@4189|89,0,0 9008:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@4190|16,0,0 27,0,@9455 74,0,@10071 9009:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@4191|16,0,0 27,0,@9455 74,0,@10071 9010:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4192|15,0,0 26,0,@9455 73,0,@10071 9011:D3,24|3b650c7305ff552ccd01b80c8a69b18b5d04ff23f4000000|@19341,1,@4193|11,0,@19353 9012:D3,620|3b650c7305ff552ccd0950f6c3010f85ac0100008b3bff7304ff378b470c6a016a018b54242c8b5c242854ff12ff34246a016a018b7424088b3e83ff0d75358b7d008d7ff43b7d087305ff5528cd40897d00c747fc0200000089f6897704c70768cb47b1c7042401000000897c2404e9920000008b542430b803000000ff1289c68b54242c8b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7078ccb47b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff3424ff7424088b5c24308b44241ce84e84ffff89c28b7424348b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008957108b54242489570c8977088b34248977048d642404c7071ccc47b1576a016a018b7c24488b7424448b5424408b4c243c8b5c24388b442434545756525153508b4424248b5c2444e878feffff8b1c24ff74240483fb0175068b7c2410eb0b8b442410e8c901000089c78b742450893e8b3c24897e048d642404b80100000083c430c21c008b7c240883ff017d0e8d642404b8a84566b18b5d04ff238b5c2408ff3424b801000000e8e801000089c68d6424048b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e83e7be0ff89c7eb008b74241cc70601000000897e04b801000000c21c00f4|@19357,1,@4199|96,0,@9013 103,0,0 121,0,1 167,0,@9014 210,0,0 216,0,1 249,0,0 278,1,@8939 339,0,@9015 415,1,@9016 438,0,0 462,0,@10224 479,0,0 484,1,@9017 523,0,0 532,0,20 571,0,0 578,0,1 590,1,@4980 604,0,0 612,0,0 9013:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4194| 9014:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4195|27,0,@9455 68,0,0 115,0,8 9015:D3,36|3b650c7305ff552ccd058b7a103bc7750a8b72048b420889f2ff228b520cff22f4000000|@19356,1,@4196| 9016:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4197| 9017:D3,128|3b650c7305ff552ccd0950538b7c240489f83b3c24750c8d642408b801000000c204008b54240cff1289c7578b44240883c002710e8d64240cb8f80466b18b5d04ff238b7c2410578b5c2408e8afffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c404c20400f4|@10221,1,@4198|28,0,0 58,0,@9455 9018:D3,4472|8d7c24983b7d0c7305ff5530cd0d5250538b7c2410ff77048b7c2414ff77088b7c2418ff770c8b7c24108b3789f283fe2d75118b770489f73b650c7305ff552ccd80ebe689d683fa170f85310100008b7f08576a016a016a018b7c2430f7c70100000074218b7c24188b3f893c248b7c24188b7f04897c24048b7c24188b7f08897c2408eb728b7c24188b178b7c24188b4f04be010000008b7d008d7ff83b7d087305ff5528cd46897d00c747fc0100004089378b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08897e04c706d8de47b183c202710e8d642428b8f80466b18b5d04ff2389142489742404897c2408ff3424ff742408ff742410be030000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707d4df47b157f64424200175218b7c24208b3f8b7708ff368b770cff368b4704e81bd1feff89c6bf01000000eb358d64243cb82c8b69b18b5d04ff2383fe0b75148b770889f73b650c7305ff552ccd80e991feffff8d642418b88c8b69b18b5d04ff23f7c60100000075288b4e0489fa83c202710e8d642444b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b3c2483ff030f84640300008b7c2450f7c7010000000f844e0300008b7c24308b3f8d1c7d0100000083fb01750abf080e66b1e98300000089df83c70289f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f87fa02000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24308d77048d7a04d1e9f3a489df83c708d1efc6043a288062ffbf89d757ba803066b18b442404bb03000000e85590deff89c7578b7c24048b3f8d1c7d010000008b3c248b3f8d3c7d010000005783fb01750d8d6424045f83c404e9a30000008b3c2483ff01750a8d6424085fe9910000008b3c248d7c3bff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f871202000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24088d77048d7a04d1e9f3a489df83c708595e8d6424048d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf140e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876001000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a298062ffbf89d757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b55008d52f03b55087303ff5528895500c742fc030000008b7c2420897a088b3c24897a04c70214e047b18b74242483c602710e8d642450b8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f088957048937578b7c240c83ff03750abf883966b1e92c0600008b7c240c83ff017f0e8d642454b8dc6e69b18b5d04ff238b7c240c83ff017d0e8d642454b8a84566b18b5d04ff23b8010000008b5c240ce8dd0e000089c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000e9810500008d642448b8780566b18b5d04ff238d642454b8780566b18b5d04ff238d642448b8780566b18b5d04ff238d642404eb048d6424048b7c242c8b3f8d1c7d0100000083fb01750abff46067b1e99500000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f879f01000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c242c8d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320131d1efc6443a02298062ffbf89d757be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b55008d52f03b55087303ff5528895500c742fc030000008b7c241c897a088b3c24897a04c702d0e147b18b74242083c602710e8d64244cb8f80466b18b5d04ff238b7d008d7ff03b7d087305ff5528cd44897d00c747fc030000008b0c24894f0889570489378b7424508b368b542450ff72108b5424548b52148b4c24548b491c8b45008d40d43b45087305ff5528cdc6894500c740fc0a0000008948248950208b54240889501c8b5424148950188978148970108b54243489500c8b5424488950088b54244c8b5204895004c700cce247b1ba5c7169b168883966b1ff742414ff742414ff742450ff7424105756ff7424308b5c2428e8ebeafeff89c78d642404578b7c24048b3fb801000000eb0e8d642444b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e86236fdff8b7c2418ff378b7c241c8b3f8b74241c893e8b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff017520bf100666b18b74240c8d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240c57e806c9eeff89c757b801000000e8190e000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c030000008b542408895618c7461403000000897e105f897e0cc74608010000005f8d642404897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b7c2458f7c70100000074075883c44cc20800bf010000008b742458f7c60100000075288b4e0489fa83c202710e8d642450b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c240c8b3f8d1c7d0100000083fb01750abf145969b1e99100000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777989f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c240c8d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320150d1efc6443a02298062ffbf89d7578b7c24248b3fb801000000eb0e8d642454b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e83234fdff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e8e6c6eeff89c7578b7c240883ff017d0e8d64245cb8a84566b18b5d04ff23b8010000008b5c2408e8420c000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714030000008977105e89770cc74708010000005e8d6424048977045e89378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c44cc20800f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e8596ee0ff89c7eb008b7424588b368b542458ff72108b54245c8b52148b4c245c8b491c8b45008d40d03b45087305ff5528cdc6894500c740fc0b0000008948288950248b54240c8950208b54241c89501c8b5424048950188970148978108b54243c89500c8b5424508950088b5424548b5204895004c70018e447b1ba5c7169b157ff74241cff74241cff742458ff742410ff74241856ff7424388b5c242ce895e6feff89c78d642408578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e81c32fdff8b7c241cff378b7c24208b3f8b742420893e8b7c240c81ff100666b17502eb2b8b7c240c8b3f8d3c7d0100000083ff017520bf100666b18b74240c8d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240c57e8c0c4eeff89c7578b7c241883ff017d0e8d642460b8a84566b18b5d04ff23b8010000008b5c2418e8040b000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c030000008b542408895618c7461403000000897e105f897e0cc74608010000005f8d642404897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70719000000578b542440b803000000ff1289c78b55008d52ec3b55087305ff5528cd80895500c742fc040000005e89720c897a08c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916568b7424448b368b542444ff7204b9010000008b55008d52f83b55087305ff5528cdc2895500c742fc01000040890a5283c602710e8d64245cb8f80466b18b5d04ff238b54244c8b122bf2710e8d64245cb8f80466b18b5d04ff2383c60183fe017d0e8d64245cb8d02469b18b5d04ff2383fe017e4b8b54240483ee02710e8d64245cb8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff128b1c24e82bb7e1ff89c6eb3683ff017d0e8d64245cb8282569b18b5d04ff238b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c241883ff017d0e8d642460b8a84566b18b5d04ff23b8010000008b5c2418e85c09000089c757f604240175678b3c248b7f0483ff017507bf03000000eb05bf0100000083ff03754b5f8b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707883966b18b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938eb61bb010000008b3c24f7c70100000075288b570489de83c602710e8d642464b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642464b8a84566b18b5d04ff23b801000000e8fb0800008b1c24e8f3d5e1ff8d642404e886090000e8a56ee0ff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000005a895708897704c7070f000000578b7c24488b3f8d1c7d0100000083fb01750abff46067b1e99100000089df83c70689f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff01777989f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a89d98b7c24488d77048d7a04d1e9f3a489df83c70889fed1eec604322889fed1eec644320131d1efc6443a02298062ffbf89d7578b7c24088b3fb801000000eb0e8d642460b8780566b18b5d04ff23f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8742dfdff8b3c2481ff100666b175068d642404eb2d8b3c248b3f8d3c7d0100000083ff017523bf100666b18b34248d76048d7f0433c93bc9f3a67402eb0b8d642404bf184766b1eb015f57e84060e0ff89c757b801000000e84b08000089c78b75008d76dc3b75087305ff5528cd80897500c746fc08000000c7461c03000000c7461801000000c7461401000000897e105f897e0cc74608010000005f897e045f893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707190000008b74240883fe0175098d64245c89f8c208008d6424088b45008d40f03b45087305ff5528cd80894500c740fc030000008978085f897804c7001f00000083c450c20800f40000|@19367,1,@4215|148,0,0 214,0,@9019 228,0,@9455 260,0,1 325,0,@9020 357,1,@8823 364,0,0 375,0,@19360 414,0,@19363 446,0,@9455 519,0,@9545 539,0,4 560,0,16777215 618,0,0 661,0,@9967 670,0,1 675,1,@4896 757,0,4 778,0,16777215 836,0,0 904,0,@9546 921,0,4 942,0,16777215 1000,0,0 1039,0,0 1111,0,@9021 1129,0,@9455 1186,0,@10067 1209,0,@19152 1232,0,@10224 1242,0,0 1251,1,@9022 1286,0,0 1295,0,20 1309,0,@9465 1323,0,@9465 1337,0,@9465 1375,0,@13248 1395,0,4 1416,0,16777215 1474,0,0 1535,0,0 1607,0,@9023 1625,0,@9455 1776,0,@9024 1781,0,@19167 1786,0,@10067 1817,1,@8848 1835,0,0 1846,0,@9465 1918,1,@8500 1946,0,@9473 1973,0,@9473 1998,0,@10237 2010,1,@6589 2018,0,0 2023,1,@9025 2058,0,1 2072,0,1 2086,0,0 2132,0,12 2157,0,0 2188,0,@9455 2233,0,@18976 2253,0,4 2274,0,16777215 2328,0,0 2395,0,0 2406,0,@9465 2478,1,@8500 2487,0,@9473 2517,0,@9473 2545,0,@10237 2554,1,@6589 2575,0,@10224 2585,0,0 2594,1,@9026 2629,0,1 2636,0,0 2643,0,1 2657,0,0 2703,0,12 2748,0,0 2755,0,1 2767,1,@4980 2887,0,@9027 2892,0,@19167 2927,1,@8848 2945,0,0 3012,1,@8500 3040,0,@9473 3067,0,@9473 3092,0,@10237 3104,1,@6589 3125,0,@10224 3135,0,0 3144,1,@9028 3179,0,1 3193,0,1 3207,0,0 3253,0,12 3263,0,1 3307,0,0 3313,0,1 3346,0,0 3367,0,0 3410,0,@9455 3434,0,@9455 3456,0,@18415 3484,0,@9455 3522,0,0 3537,1,@5181 3555,0,@18418 3595,0,2 3630,0,8 3649,0,@10224 3659,0,0 3668,1,@9029 3693,0,1 3700,0,0 3743,0,@10067 3776,0,0 3785,0,0 3815,0,@9455 3850,0,@10224 3860,0,0 3865,1,@9030 3873,1,@5210 3882,1,@9031 3887,1,@4985 3922,0,1 3935,0,7 3959,0,@13248 3979,0,4 4000,0,16777215 4054,0,0 4121,0,0 4132,0,@9465 4204,1,@8500 4213,0,@9473 4243,0,@9473 4271,0,@10237 4280,1,@4975 4288,0,0 4293,1,@9032 4328,0,1 4335,0,0 4342,0,0 4356,0,0 4398,0,12 4459,0,15 9019:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9fdb2e1ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4201|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 9020:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19359,1,@4202|31,0,@9455 9021:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e9c1b1e1ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4203|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 9022:D3,172|3b650c7305ff552ccd093bc37506b801000000c383f8017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd09897500c746fc02000000894604c706010000008b7d008d7ff43b7d087305ff5528cd49897d00c747fc02000000897704c707110000005783c002710e8d642404b8f80466b18b5d04ff23e87effffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@4204|15,0,0 26,0,@11112 66,0,0 101,0,8 116,0,@9455 9023:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e905b0e1ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4205|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 9024:D3,112|3b650c7305ff552ccd0589d78b75008d76dc3b75087305ff5528cd81897500c746fc080000008b572489561cc74618010000008b57208956148946108b571c89560c8b57188956088b57148956048b571089168b57048b47088b5f0c6a0156ff742408c744240c883966b1ff22f40000|@19366,1,@4206|47,0,0 103,0,@10067 9025:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@4207|16,0,0 27,0,@9455 74,0,@10071 9026:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4208|15,0,0 26,0,@9455 73,0,@10071 9027:D3,112|3b650c7305ff552ccd0589d78b55008d52dc3b55087305ff5528cd81895500c742fc080000008b772889721cc74218010000008b77248972148942108b772089720c8b771c8972088b77188972048b771489328b4f048b47088b5f0c8b77106a0152ff74240889ca8974240cff22f400|@19366,1,@4209|47,0,0 9028:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4210|15,0,0 26,0,@9455 73,0,@10071 9029:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f400|@10221,1,@4211|15,0,0 26,0,@9455 73,0,1 9030:D3,136|3b650c7305ff552ccd093bc37506b801000000c38b7d008d7fec3b7d087305ff5528cd09897d00c747fc04000000c7470c01000000894708c74704883966b1c707170000005783c002710e8d642404b8f80466b18b5d04ff23e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f4|@10221,1,@4212|15,0,0 49,0,0 59,0,@10067 65,0,11 80,0,@9455 9031:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4213|68,0,0 9032:D3,80|3b650c7305ff552ccd0183f8037506b801000000c383c002710ab8f80466b18b5d04ff23e8d7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f4|@10221,1,@4214|16,0,0 27,0,@9455 74,0,@10071 9033:D3,132|3b650c7305ff552ccd0d52538b7c240cff378b7c2410ff770c8b7c2414ff77148b7c2418ff7718506a01f64424040175498b7c24048b0789ffff77048b7c24288b7424208b7604ff74241057ff74241c56ff742428ff742420ff7424348b5c2420e83200000089c25e891424897424043b650c7303ff552cebb05883c41cc20400f40000|@19388,1,@4246|98,1,@9034 9034:D3,3348|8dbc2460ffffff3b7d0c7305ff5530cd09538b780cff37ff30ff7004ff70088b7c240c83ff017507bf9c1066b1eb558b44240ce8f00c000089c7f7c701000000753dff378b470483f80175035feb2ee8340d000089c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978045f8938e83138deff89c7eb05bf100666b1578b5c24348b442410e8760d000089c757ff34246a01f64424040175378b7c24048b078b7c2404ff77048b7c240483ff01750489c2eb0b8b5c2404e8a00f000089c25e891424897424043b650c7303ff552cebc2ff3424bf010000008b3424f7c60100000075288b4e0489fa83c202710e8d642428b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0576a016a016a016a016a016a016a018b7c241c83ff0175388b7c24608b378934248b7704897424048b7708897424088b77108974240c8b7714897424108b7718897424148b7f1c897c2418e9d2010000bf030000008b75008d76f83b75087305ff5528cd80897500c746fc01000040893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70724f847b1578b7c24648b77048b3e8b7604ba010000008b4d008d49f83b4d087305ff5528cdc4894d00c741fc0100004089118b55008d52f03b55087305ff5528cdc2895500c742fc03000000897208894a04c70264f847b183c702710e8d64244cb8f80466b18b5d04ff238b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604893e568b74242483fe017d0e8d642450b8a84566b18b5d04ff2357b8010000008b5c2428e8ad0f000089c3bad0a766b18b442428e8517ae3ff89c78b7424688b56148b4d008d49f43b4d087305ff5528cd84894d00c741fc02000000897904c70103000000bf010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040893e8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8b4c2404894f088b0c24894f0489378b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7c24688b0f8b7c24688b57108b7c24688b7f1c894c240859894c240859894c24088954240c89742410c744241401000000897c2418ff3424ff742408ff742410ff742418ff742420ff742428ff7424308b7c24788b3f8d3c7d01000000578b7c24508b3f8d1c7d010000008b342489f783fe01750d8d6424048b7c244ce9aa00000083fb01750d8d6424048b7c2478e99800000089ff89fe8d7c1fff89f883c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f876003000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ef893a8b7c247c89f189f08d77048d7a04d1e9f3a489c783c7088d64240489d98b74244c8d7604d1ef8d3c3ad1e9f3a48062ffbf89d78b378d1c750100000083fb017507bf440e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87a802000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2d8062ffbf89d78b5d008d5bdc3b5d087305ff5528cd80895d00c743fc080000005e89731c5e8973188b34248973148b742404897310897b0c8b7c2408897b088b7c240c897b048b7c2410893b6a016a018b542474548b442458ff12ff34246a016a018b7c24088b3f83ff0d75358b7d008d7ff43b7d087303ff5528897d00c747fc020000008b742408897704c7078cfa47b1c7042401000000897c2404e9920000008b54241cb803000000ff1289c68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008b542420895708897704c707b0fa47b18b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2408894a0c897208c7420401000000c702030000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c74604010000008916893424897c2404ff34248b5424088bb424800000008b7d008d7fec3b7d087305ff5528cd44897d00c747fc040000008b4c2418894f0c8b4c2420894f088b4c2424894f048937578b442428ff1289c7576a016a016a016a03ff742478ff742418548304240c8b84248c000000bbac7669b1e84328ffff5e5a598b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704893757b803000000e8570d000089c36a016a016a016a0168908d69b16a0154830424088b44241ce83464ffff5f5e5a598d6424048b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c89500889700489386a016a016a016a0189e3e8a077ffff5a595e5b8b7d008d7fec3b7d087305ff5528cd4e897d00c747fc04000000895f0c897708894f048917eb1c8d642464b8780566b18b5d04ff238d642468b8780566b18b5d04ff2383fe017507be01000000eb32f7c6010000000f85bd0000008b0e89ca83f9017507be03000000eb16f7c6010000000f859300000083fa017e64be0100000083f60256ff74246cff74240c89f88b5c240ce8700d000089c7578b7c240483ff0374308bbc248c00000083ff0374248b8424900000008bbc248800000057ff74247468408e69b1bb01000000e8ee7cf3ffeb008bbc24900000008b7f34eb46f7c60100000075148b560489d63b650c7305ff552ccdc0e947ffffff8d64247cb8e09966b18b5d04ff238d64247cb8648e66b18b5d04ff238d64247cb8648e66b18b5d04ff23f7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff01750abfe46966b1e91e0400008b3f8b3781fe0c02c0b0750e8b7f0883ff030f84c1030000eb118da42484000000b8483366b18b5d04ff238b7c245883ff01752c8b3c2483ff01750a8d6424105b83c46ceb158b4424108b1c24e86911000089c38da42480000000e9600300008bbc249c000000ff77088bbc24a0000000ff77048b542404b803000000ff1289c757f64424340175188b7c24348b3f8b3f8b07e86be4fdff89c6bf01000000eb118da42490000000b8986569b18b5d04ff23f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc4578b7c241083ff0175068b5c2420eb0f8b4424208b5c2410e81411000089c383fb0175035feb0e8b0424e86611000089c78d642404578b84248c000000e8b711000089c78b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c70629000000f7c70100000075218b0f8b57048b0983f90d750e89d73b650c7305ff552ccdc0ebdebf01000000eb05bf0300000083ff03750b89f0e81d55e0ff89c6eb008b3c2483ff0175088d64240489f7eb278b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c7071f000000578b7c24448b7f088b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e84819fdff89c7578b542444b801000000ff1289c7578b442404e8464ce0ff89c7578b7c247483ff017d118da424a0000000b8a84566b18b5d04ff23b8010000008b5c2474e85311000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542404895718c74714010000008977105e8d64240489770cc7470801000000c74704145969b18b74240489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706190000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b742408897708c7470401000000c70703000000576a01ff742418ff742418ff742418ffb424840000008b8424a80000008b9c2494000000e8ea10000089c757ff742414ff742414ffb42480000000b8010000008b5c2420e88214000089c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a89570489378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b045f893b81c49400000083fb01750458c21c00588b3c24897c241c83c41ce9721800008b442478bb01000000e8a81affff89c757f604240175258b3c248b078b3c24ff77048b9c2498000000e8340dffff5e8934243b650c7303ff552cebd58d642404e90dfcfffff7c701000000753b8b178b77048b0a81f90c02c0b0751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebbdbf0100000083ff0175118da42484000000b8489d66b18b5d04ff238b3f8b3781fe0c02c0b075118b7f0883ff030f8597fbffffe940ffffff8da42484000000b8483366b18b5d04ff23f4|@19387,1,@4245|41,0,@9600 52,1,@9035 80,1,@9036 119,1,@4827 128,0,@9473 142,1,@9037 192,1,@9041 220,0,0 250,0,@9455 356,0,1 419,0,@9042 437,0,0 503,0,@9043 517,0,@9455 575,0,@10224 586,0,0 595,1,@9044 602,0,@11313 611,1,@5472 655,0,1 660,0,0 813,0,0 930,0,4 951,0,16777215 1009,0,0 1083,0,@9550 1100,0,4 1121,0,16777215 1179,0,0 1352,0,@9046 1359,0,0 1377,0,1 1423,0,@9047 1466,0,0 1472,0,1 1505,0,0 1620,0,@19205 1625,1,@8905 1668,0,1 1673,1,@9048 1688,0,@19371 1704,1,@8944 1764,1,@8953 1816,0,@9465 1830,0,@9465 1845,0,0 1873,0,1 1897,0,0 1920,1,@9050 1968,0,@19378 1973,0,0 1978,1,@7270 2029,0,@11229 2043,0,@11149 2057,0,@11149 2083,0,@4660 2134,0,0 2144,0,@10769 2159,0,@4660 2187,0,@9999 2231,1,@9052 2274,0,1 2301,1,@8677 2308,0,0 2322,0,@19067 2416,1,@9053 2434,1,@9054 2453,1,@9055 2488,0,0 2497,0,20 2536,0,0 2543,0,1 2555,1,@4980 2614,0,15 2629,0,0 2696,1,@8500 2708,0,0 2722,1,@4975 2746,0,@10224 2756,0,0 2765,1,@9056 2800,0,1 2814,0,0 2832,0,0 2839,0,@18976 2880,0,12 2923,0,0 2929,0,1 2970,1,@9057 2993,0,0 3002,1,@9058 3039,0,2 3134,1,@9063 3143,0,0 3148,1,@8900 3180,1,@8895 3224,0,@4660 3275,0,0 3292,0,@11247 3307,0,@4660 3338,0,@9999 9035:D3,76|3b650c7305ff552ccd01a80175358b388b4004ff37e8e6ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f40000|@10030,1,@4216|68,0,0 9036:D3,108|3b650c7305ff552ccd01a8017556ff308b4004e8e8ffffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700f81166b1c3b801000000c3f400|@14987,1,@4217|95,0,@9629 101,0,0 9037:D3,104|3b650c7305ff552ccd0989c753f7c70100000075478b07ff77048b5c2404e85900000089c7578b4424048b5c2408e8cdffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@4221|31,1,@9038 97,0,0 9038:D3,76|3b650c7305ff552ccd0989df8b400c8b5d008d5bf43b5d087305ff5528cd81895d00c743fc02000000897b04c70340f647b16a016a0154e89cbeeeff8d64240458e8b276fcffe921010000f4|@19368,1,@4220|46,0,@9039 56,1,@6630 66,1,@8411 71,1,@9040 9039:D3,248|3b650c7305ff552ccd05508b7a04f7c70100000075238b37ff77048b760c8b1683fa0375058b7604eb195e89f73b650c7305ff552ccd80ebd58d642404b801000000c3f7c601000000753f8b0e8b56048b198b1b8b4424048b003bd8751e8b75008d76f83b75087305ff5528cd82897500c746fc01000000890eeb1389d63b650c7305ff552ccdc0ebb9be0100000083fe0175125e89f73b650c7305ff552ccd80e968ffffff8d6424088b3e8b3f8b378b57048b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000895708897704c7070d0000008b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3f400|@19134,1,@4218|62,0,0 139,0,0 213,0,6 9040:D3,96|3b650c7305ff552ccd01a801754aff308b40048b3c248b7f0483e70983ff01742ee8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38d642404e9a8ffffffb801000000c3f400|@9865,1,@4219|89,0,0 9041:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4222| 9042:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19369,1,@4223|31,0,@9455 9043:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e97199e1ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4224|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 9044:D3,140|3b650c7305ff552ccd093bc37508b801000000c204008b7424048b7d008d7ff03b7d087305ff5528cd49897d00c747fc03000000897708894704c70700fa47b15783c002710e8d642404b8f80466b18b5d04ff238b7c240857e8a2ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c20400f40000|@10221,1,@4226|15,0,0 60,0,@9045 75,0,@9455 9045:D3,120|3b650c7305ff552ccd0589d78b308b50048b4f082bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f400|@19370,1,@4225|25,0,@9455 66,0,1 113,0,8 9046:D3,16|3b650c7305ff552ccd058b4204c3f400|@18426,1,@4227| 9047:D3,124|3b650c7305ff552ccd0589d78b308b50048b4f088b092bf1710ab8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048b7f048938ff1289c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@18427,1,@4228|27,0,@9455 68,0,0 115,0,8 9048:D3,100|3b650c7305ff552ccd01508b3c2489f883ff037e0a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c7ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@19269,1,@4229|26,0,0 43,0,@9455 9049:D3,132|3b650c7305ff552ccd018b3883ff017507be01000000eb0af7c70100000075578b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c03000000897808c7400401000000c700003b66b1c3b8648e66b18b5d04ff23f40000|@19271,1,@4230|18,0,0 63,0,0 98,0,1 108,0,0 114,0,@10093 120,0,@11149 9050:D3,1208|3b650c7305ff552ccd09538b3089f78b1683fa070f85df0000008b7604f7c6010000007407be03000000eb05be0100000083f60283fe030f85b60000008b7f048b3fff37ff7004ff70088b7c2414ff77048b7c24188b5708b803000000ff1289c78b75008d76ec3b75087305ff5528cd80897500c746fc040000008b54241089560c897e08c7460401000000c706030000005683ff017d0e8d642418b8948966b18b5d04ff238b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c702050000008b75008d76f43b75087305ff5528cd84897500c746fc02000000895604c70611000000568b742410eb148d642404eb048d642404b8988d69b18b5d04ff23f7c60100000075398b0e8b56048b59088b0b83f905751c8b4b048b5b0889398b4c2408890b89d63b650c7305ff552ccdc0ebcd8d64241cb8908169b18b5d04ff238b7c240c83ff017507bf01000000eb36f7c7010000000f85060200008b1789d683fa017507bf03000000eb1af7c7010000000f85dc01000083fe010f8ea9010000bf0100000083ff03740abf01000000e9b60200008b7c24206a01578b44241c8b5c2408e86780ffff89c7578b7c24288b178b7c2428ff77048b7c242c8b5f088b7c242cff770c8b7c24308b471081fa100666b17502eb238b3a8d3c7d0100000083ff01752cbf100666b18d72048d7f0433c93bc9f3a67402eb1783fb01751083f801750b8d642408bec43966b1eb62eb008b7d008d7fe83b7d087305ff5528cd0d897d00c747fc050000008b34248977108d6424048b342489770c8d642404894708895f0489178b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c43966b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f88d69b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706088e69b18b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000eb46f7c70100000075148b770489f73b650c7305ff552ccd80e9fefdffff8d64241cb8e09966b18b5d04ff238d64241cb8648e66b18b5d04ff238d64241cb8648e66b18b5d04ff23f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e87646e0ff89c7eb008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706210000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770cc74708c43966b18b34248977048d642404c7070b0000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937578b7c2424ff7424046a01578b442424bb03000000e84b73ffff89c383fb0175065f83c404eb0e8b0424e84a00000089c78d6424088b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240483c414c20800f4000000|@19377,1,@4232|38,0,1 45,0,0 89,0,1 136,0,0 142,0,1 157,0,@11112 197,0,2 232,0,8 254,0,@19372 319,0,@19290 338,0,0 366,0,1 394,0,0 404,0,0 429,1,@8967 472,0,@9473 495,0,@9473 530,0,@10072 621,0,0 630,0,6 663,0,0 700,0,@10072 735,0,@19375 770,0,@19376 803,0,0 812,0,20 851,0,@11229 865,0,@11149 879,0,@11149 923,0,0 930,0,1 942,1,@4980 981,0,16 1017,0,@10072 1033,0,5 1068,0,2 1101,0,0 1124,0,1 1129,1,@8961 1150,1,@9051 9051:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4231| 9052:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4233| 9053:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4234| 9054:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4235| 9055:D3,192|3b650c7305ff552ccd01a8010f85a60000008b388b40048b7f088b3783fe050f85890000008b7f048b3f83ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e87bffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8648e69b18b5d04ff23b801000000c3f400|@10030,1,@4236|48,0,@11112 88,0,2 123,0,8 175,0,@19379 185,0,0 9056:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4237|15,0,0 26,0,@9455 73,0,@10071 9057:D3,932|3b650c7305ff552ccd09a8010f85d3000000f6c3010f85ca000000ff30ff7004ff33ff73048b542420b803000000ff1289c7578b7c24108b7f088b3783fe050f85920000008b57048b77088b3c24893a8b7c2420893e8b7c240889fe83ff01756d8b5c24208b7c24208b74241c8b542418575652b801000000e83a03000089c78b3783fe0d75118b5c24286a0189f8e86435e0ff89c6eb318b5424288b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c01000000895608897e04c70617000000e939020000bf0100000089f6eb168d642414b8fc8e69b18b5d04ff23b801000000c21400f7c60100000075288b4e0489fa83c202710e8d642414b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebd0578b7c24248b3f8b7424248b5604b9010000008b75008d76f83b75087305ff5528cd86897500c746fc01000040890e568b75008d76f03b75087305ff5528cd84897500c746fc030000008956088b0c2489ca894e04c706b00a48b183c702710e8d64241cb8f80466b18b5d04ff238b5d008d5bf03b5d087305ff5528cdc4895d00c743fc0300000089d2895308897304893b8b7c24288b7424248b5424205756528b44241ce8f101000089c68b3e83ff0d75118b5c24306a0189f0e81b34e0ff89c7eb318b5424308b7d008d7fec3b7d087305ff5528cd44897d00c747fc04000000c7470c01000000895708897704c70717000000578b7c24048b3fb801000000f7c70100000075368b178b77048b0a8b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc2e8eb04fdffe8fe37e0ff89c7578b7c240c89fb83ff017d0e8d642424b8a84566b18b5d04ff23b801000000e83c05000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c03000000c7471801000000c74714010000008977108b342489770c8d642404c7470801000000c74704145969b18b342489378d6424048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c7061900000083c4088b7d008d7fec3b7d087305ff5528cd40897d00c747fc0400000089770c8b34248977088d642404c7470401000000c70703000000578b7c242883c702710e8d642414b8f80466b18b5d04ff238b7424248b5424208b4c241c8b5c241857565251538b4424208b5c2418e88bfcffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240883c40cc21400f4|@19386,1,@4243|42,0,1 117,0,0 122,1,@9058 144,1,@4973 185,0,0 197,0,11 207,0,0 220,0,@19383 230,0,0 260,0,@9455 300,0,0 372,0,@9061 386,0,@9455 451,1,@9058 473,1,@4973 514,0,0 526,0,11 538,0,0 605,1,@8500 610,1,@4975 633,0,@10224 643,0,0 648,1,@9062 683,0,1 690,0,0 697,0,0 717,0,0 724,0,@18976 768,0,12 817,0,0 823,0,1 842,0,@9455 9058:D3,320|3b650c7305ff552ccd095053bb010000008b7c2404f7c70100000075288b570489de83c602710e8d642408b8f80466b18b5d04ff2389d789f33b650c7305ff552ccd88ebd083fb017d0e8d642408b8a84566b18b5d04ff23b801000000e8f200000089c3bad0a766b18b442404e8065ce3ff89c7578b7c24048b3789ff8b57048b7c24188b3f2bf7710e8d64240cb8f80466b18b5d04ff2383c6018b7c24148b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008010000008970048938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b442414ff7424088b5c2408e8ce000000e88542e0ff89c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d64240c897804c7000f00000083c404c20c00f4|@19382,1,@4240|13,0,0 44,0,@9455 79,0,@10224 89,0,0 94,1,@9059 101,0,@11313 110,1,@5472 143,0,@9455 188,0,0 232,0,8 250,1,@9060 255,1,@4985 290,0,1 309,0,7 9059:D3,100|3b650c7305ff552ccd09508b3c2489f83bfb750a8d642404b801000000c389c083c002710e8d642404b8f80466b18b5d04ff23e8c8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10221,1,@4238|25,0,0 42,0,@9455 9060:D3,308|3b650c7305ff552ccd0953a801750b8b38ff70048b742404eb0c8d642404b801000000c20400f7c601000000753b8b0e8b56048b198b1b8b073bd8751e8b7d008d7ff83b7d087305ff5528cd02897d00c747fc01000000890feb1389d63b650c7305ff552ccdc0ebbdbf0100000083ff017507bfc03e69b1eb7a8b3f8b7f048b74240c8b368b54240c8b52048b4c240c8b092bf1710e8d642408b8f80466b18b5d04ff2383c6018b45008d40f03b45087305ff5528cdc4894500c740fc03000000c74008030000008970048938ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70711000000578b7c2410578b4424088b5c240ce8f9feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc20400f400|@10030,1,@4239|31,0,0 106,0,0 116,0,@18721 155,0,@9455 196,0,1 240,0,8 9061:D3,232|3b650c7305ff552ccd05528b388b48048b700883f9017d0e8d642404b8d02469b18b5d04ff2383f9017e4c8b14248b520883e902710e8d642404b8f80466b18b5d04ff238b45008d40f03b45087305ff5528cdc6894500c740fc030000008970088948048938ff128b3c248b5f048d642404e92587e1ff8d64240483fe03753383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70001000000c383ff017d0ab8282569b18b5d04ff238b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f400|@18420,1,@4241|29,0,@18415 59,0,@9455 115,1,@5181 134,0,@18418 174,0,0 185,0,@18418 225,0,2 9062:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4242|15,0,0 26,0,@9455 73,0,@10071 9063:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4244| 9064:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4247| 9065:D3,116|3b650c7305ff552ccd0589d1ff30ff7004ff7008ff700c8b78108b70146a016a018b59048b41088b510c8b4910ff74240cff74240c5756ff7424245254830424185189da89c38b442430ff125f5e8d6424108b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@19389,1,@4248| 9066:D3,116|3b650c7305ff552ccd0589d1ff30ff7004ff7008ff700c8b78108b70146a016a018b59048b41088b510c8b4910ff74240cff74240c5756ff7424245254830424185189da89c38b442430ff125f5e8d6424108b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f400|@19390,1,@4249| 9067:D3,216|3b650c7305ff552ccd09f6c3010f85ad000000ff33ff73046a016a01ff7424288b7c24288b7424248b5424208b4c241c8b5c24185483042404ff742404575652515389c38b44242ce89f0000008d642404ff3424ff7424086a016a018b7c24388b7424348b5424308b4c242c8b5c24288b442424545756525153508b4424248b5c2434e878ffffff8b1c24ff74240483fb0175068b7c2410eb0b8b442410e83d04000089c78b742440893e8b3c24897e048d642404b80100000083c420c21c008b7c241cc70701000000894704b801000000c21c00f40000|@19392,1,@4254|73,1,@9068 159,1,@9071 182,0,0 198,0,0 206,0,0 9068:D3,792|3b650c7305ff552ccd0953ff7004ff70088b780c8b3f83ff01750e8d64240cb8b07766b18b5d04ff23ff378b7c24288b3f8d3c7d01000000578b7c240c8b3f8d1c7d010000008b3c2483ff01750d8d6424048b7c2408e9a300000083fb01750d8d6424048b7c2428e9910000008b3c248d7c1fff89f883c00ebe09000000d1e8d1ee33d2f7f68d34450100000081feffffff010f877002000089f18d144d02000000f7da0355003b550872053b55007205ff5528cdc8895500d1e9894afcc642ff4183ee02c74472fe00000000d1ef893a8b7c242c8b0c248d77048d7a04d1e9f3a45f83c70889d98b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d7578b3c248b3f8d3c7d01000000578b3c2489fe83ff01750e8d642408bb500e66b1e98900000089f689f783c60289f083c00eb909000000d1e8d1e933d2f7f18d14450100000081faffffff010f87ab01000089d18d1c4d02000000f7db035d003b5d0872053b5d007205ff5528cdc4895d00d1e9894bfcc643ff4183ea02c74453fe00000000d1ee893389f989fa8b7c24048d77048d7b04d1e9f3a489d783c7088d642408d1efc6043b2e8063ffbf6a016a018b4c242c8b7c24248b7424208b542428ff7424145756548304240c5289ca8b442420ff12ff3424ff7424088b54242cb803000000ff1289c7578b7c24148b7f048b3783fe050f85f10000008b57048b77088b3c24893a8b7c242c893e8b45008d40f43b45087303ff5528894500c740fc02000000c74004010000008b7c241489386a016a018b5c24308b7c24348b74243c8b542438575652548304240ce83d93fcff8b1c24ff7424048b7d008d7fec3b7d087305ff5528cd08897d00c747fc040000008b74241089770c8b74240c897708c7470401000000c707030000008b45008d40f43b45087305ff5528cd88894500c740fc02000000c7400401000000893883fb01750489c3eb07e86c00000089c383fb0175068b7c2414eb0b8b442414e8ba00000089c78b74244c893e5f897e04b80100000083c42cc21c008d642424b86c5369b18b5d04ff238d642418b8780566b18b5d04ff238d642414b8780566b18b5d04ff23f4|@19391,1,@4252|32,0,@10986 122,0,4 143,0,16777215 201,0,0 283,0,@9551 305,0,4 326,0,16777215 384,0,0 481,0,1 552,0,0 591,1,@8455 645,0,0 651,0,1 684,0,0 700,1,@9069 722,1,@9070 739,0,0 754,0,@18928 768,0,@9465 782,0,@9465 9069:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4250| 9070:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4251| 9071:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4253| 9072:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4255| 9073:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4256| 9074:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4257| 9075:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4258| 9076:D3,156|3b650c7305ff552ccd0d8b7a0cf7c701000000757c8b0f8b770483f801754e8b79048b77048b3683fe05753eb9305069b18b42048b720856576a0187c389cae84c6bfdff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c38b07c389c183e902710ab8f80466b18b5d04ff2389c889f73b650c7305ff552ccd8de97cffffffb8643c66b18b5d04ff23f4|@18934,1,@4260|45,0,@18903 64,1,@8611 101,0,1 117,0,@9455 146,0,@10105 9077:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4261| 9078:D3,252|3b650c7305ff552ccd0189c7ff37ff77048b57088b470cff771081fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757e80a88eeff89c7578b7c240c89fb83ff017d0e8d642414b8a84566b18b5d04ff23b801000000e89400000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714030000008977108b342489770c8d642404c74708010000008b34248977048d64240c8b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c3f4000000|@11926,1,@4263|28,0,@9473 51,0,@9473 72,0,@10237 82,1,@6589 105,0,@10224 115,0,0 120,1,@9079 155,0,1 169,0,1 189,0,0 243,0,12 9079:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4262|15,0,0 26,0,@9455 73,0,@10071 9080:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4264| 9081:D3,556|3b650c7305ff552ccd0189c78b770c89f083fe010f8526010000ff37ff77048b5708ff771081fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757e8df01000089c7578b7c240c89fb83ff017d0e8d642414b8a84566b18b5d04ff23b801000000e82902000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714010000008977108b342489770c8d642404c74708010000008b34248977048d64240c8b342489378d6424048b5d008d5bf03b5d087305ff5528cd80895d00c743fc03000000c74308589169b1897b04c70303000000b801000000e82d02000089c78b45008d40f03b45087305ff5528cd80894500c740fc03000000897808c7400401000000c7000d000000c3ff37ff77048b5708ff771081fa100666b17502eb238b3a8d3c7d0100000083ff01751cbf100666b18d72048d7f0433c93bc9f3a67402eb07bf184766b1eb0289d757e87d02000089c7578b7c240c89fb83ff017d0e8d642414b8a84566b18b5d04ff23b801000000e8c702000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b542408895718c74714010000008977108b342489770c8d642404c74708010000008b34248977048d64240c8b342489378d6424048b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70019000000c3f40000|@19399,1,@4271|39,0,@9473 62,0,@9473 83,0,@10237 93,1,@9082 116,0,@10224 126,0,0 131,1,@9083 166,0,1 180,0,0 200,0,0 252,0,@19394 261,0,1 266,0,0 271,1,@9085 309,0,0 315,0,6 333,0,@9473 356,0,@9473 377,0,@10237 387,1,@9086 410,0,@10224 420,0,0 425,1,@9087 460,0,1 474,0,0 494,0,0 548,0,12 9082:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@4265|76,0,@10218 86,0,0 9083:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4266|15,0,0 26,0,@9455 73,0,@10071 9084:D3,24|3b650c7305ff552ccd01b8609169b18b5d04ff23f4000000|@19398,1,@4267|11,0,@19395 9085:D3,176|3b650c7305ff552ccd0983f80175558b7d008d7fec3b7d087305ff5528cd08897d00c747fc04000000c7470c01000000895f08c74704640f66b1c707cc00c0b08b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938c3ff308b40048b3c248b3f81ffcc00c0b075098d642404e981ffffffe87cffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f40000|@10207,1,@4268|44,0,0 54,0,@9574 60,0,@4620 93,0,0 112,0,@4620 9086:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@4269|76,0,@10218 86,0,0 9087:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700b83966b1c3f400|@10221,1,@4270|15,0,0 26,0,@9455 73,0,@10071 9088:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4273| 9089:D3,48|3b650c7305ff552ccd018b388b70088b45008d40f43b45087305ff5528cdc0894500c740fc020000008970048938c3f4|@19402,1,@4275| 9090:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4276| 9091:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4278| 9092:D3,228|3b650c7305ff552ccd0189c78b1789d683fa037506b801000000c383fe0175118b4704e8d000000089c7b801000000eb748b47048b7f08ff37bb2c0268b1e8d5bcfdff89c7578b442404e89501000089c7bb01000000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdca895500c742fc02000000895a04890a89d389f73b650c7305ff552ccd88ebc483fb0175055883c404c35883c404e9d7020000f7c70100000075348b0f8b77048b55008d52f43b55087305ff5528cdc3895500c742fc02000000894204890a89d089f73b650c7305ff552ccd81ebc4c3f400|@19404,1,@4284|22,0,0 36,1,@9093 43,0,0 58,0,@15112 63,1,@8688 75,1,@9094 82,0,0 161,1,@9096 9093:D3,216|3b650c7305ff552ccd01a8010f85bc0000008b388b40048b7f148b3f83ff01750ab8b07766b18b5d04ff238b3f8b7f088b3783fe050f85890000008b7f048b3f83ff017d0ab8948966b18b5d04ff238b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071100000057e865ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b86c5369b18b5d04ff23b801000000c3f4000000|@10030,1,@4280|34,0,@10986 70,0,@11112 110,0,2 145,0,8 197,0,@18928 207,0,0 9094:D3,88|3b650c7305ff552ccd01a80175418b38ff70048b07e85200000089c7578b442404e8daffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642408c3b801000000c3f40000|@10030,1,@4282|22,1,@9095 80,0,0 9095:D3,280|3b650c7305ff552ccd018b3889fe83ff09755cff70048b4008e8e2ffffff89c78b3783fe0d751389f85bff3424c744240401000000e96219e0ff8b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c010000008b34248970088d642404897804c70017000000c389f783fe050f85870000008b70048b78088b368b3f8b17bf010000002bfa710ab8f80466b18b5d04ff2383c70183ff01755683fe017d0ab8440268b18b5d04ff238b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3b8880268b18b5d04ff2383ff0375048b4004c3b8802569b18b5d04ff23f4000000|@18425,1,@4281|49,0,0 54,1,@4973 87,0,0 106,0,11 135,0,0 144,0,@9455 167,0,@15114 207,0,2 242,0,8 248,0,@15117 267,0,@18421 9096:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4283| 9097:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4285| 9098:D3,124|3b650c7305ff552ccd05528b3c248b5708b801000000ff126a016a016a016a016a016a018b7c24188b5f0454e85f000000ff34248b7c24088b74240c8b5424108b4c24148b5c24188b45008d40e43b45087305ff5528cdce894500c740fc0600000089581489481089500c8970088978048b3c2489388d642420c3f4|@19430,1,@4318|18,0,0 45,1,@9099 9099:D3,860|8d7c24843b7d0c7305ff5530cd09508b3b6a016a016a016a016a016a0157681c9369b1f644240401755c8b7c24048b0789ffff77046a016a016a016a0154ff7424388b5c241ce8510300005f5e595b8b55008d52ec3b55087305ff5528cdca895500c742fc04000000895a0c894a08897204893a5e891424897424043b650c7303ff552ceb9d8b3c248b7f048d6424048b37897424048b7704897424088b77088974240c8b770c897424108b7710897424148b7f14897c24188b7c2404ff742408ff742410ff742418ff742420ff742428576a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe8d223000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba5ff3424ff7424186a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe80624000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba5ff3424ff7424186a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe83a24000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba5ff3424ff74242c6a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe86e24000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba5ff3424ff7424406a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe8a224000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba5ff3424ff7424406a01f64424040175548b74240489f7ff3689ff8b47048b3c248b1fe8d624000089c68b55008d52f43b55087305ff5528cd40895500c742fc020000008b7c2404897a048b3c24893a8d642404891424897424043b650c7303ff552ceba55f8b7424788b54243489168b5424048956048b5424288956088b54241089560c897e108b7c241c897e14b80100000083c474c20400f4000000|@19429,1,@4317|31,0,@19406 71,1,@9101 238,1,@9124 338,1,@9125 438,1,@9126 538,1,@9127 638,1,@9128 738,1,@9129 846,0,0 9100:D3,24|3b650c7305ff552ccd01b8389369b18b5d04ff23f4000000|@19410,1,@4287|11,0,@19408 9101:D3,1444|8d7c24ac3b7d0c7305ff5530cd09ff33ff73048b342489f7ff3689ff89feff770489f689f7ff760889ff89feff770c89f689f7ff761089ffff7714ff7308ff730c8b3089f783fe030f858b0000008b40048b1c24e85f0500008b74240c89f783fe01750489c6eb0989fbe80108000089c68b7d008d7fe43b7d087305ff5528cd40897d00c747fc060000008b5424088957148977108b74241089770c8b7424148977088b7424188977048b74241c89378b7424308b5424248916897e048b7c2404897e088b3c24897e0c8d64240cb80100000083c41cc2080083ff0175358b70048b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b5424108957048b54242489176a016a015657e9b2030000ff70048b78088b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008b54242889176a016a015657f6442404010f85b70100008b7424048b3e89f6ff76048b77048b1683fa010f8590010000ff7604ff7608ff77088b74241089f7ff3689ffff77048b7c24588b3f83ff0d75138b4424586a018b5c2408e8e011e0ff89c6eb358b7c24588b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000008b542404895608897e04c706170000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b74240c8b1683fa03750989f68b76048b36eb0589f68b76048b55008d52f83b55087305ff5528cdc0895500c742fc0100004089328b75008d76ec3b75087305ff5528cd84897500c746fc04000000c7460c010000008b4c2410894e08895604c706030000008b55008d52f03b55087305ff5528cdc0895500c742fc030000008b4c2408894a08897204893a8b7c240483c702710e8d642454b8f80466b18b5d04ff238b75008d76f43b75087305ff5528cd84897500c746fc020000008b0c24894e048d64240489168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a8b74241089542414897424183b650c7303ff552c83c414e94cfeffff8d642440b82c9469b18b5d04ff238b3c248b378974240889ff8b7f048d642404897c24088b7424048b5c240883fb01750e8d64240cbfe43c66b1e9980000008d64240cbf0100000089daf6c20175288b420489f983c102710e8d64242cb8f80466b18b5d04ff2389c289cf3b650c7305ff552ccdccebd381ffffffff017c0e8d64242cb8b48066b18b5d04ff2389f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d7ba0100000089d983f9010f85c50000008067ffbf578b7d008d7fec3b7d087305ff5528cd40897d00c747fc040000008b54240c89570c8b14248957088b542408895704c707342f48b1578b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b54242c89570489376a016a018b742440575483042404568b44241c8b5c2414e8f4040000595a8b7c24048b77fcc1e608c1ee0783ce0183ee018b7c241003fe710e8d642434b8f80466b18b5d04ff238b74243c890e895604897e088b3c24897e0c8d642404b80100000083c430c208008b198b4104895c57fe89d383c302710e8d64242cb8f80466b18b5d04ff2389c189da3b650c7305ff552ccdc6e901fffffff64424040175558b7c24048b0789ffff77046a016a018b7c24485457ff7424248b5c2418e87a1300005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceba48b3c248b378974240889ff8b7f048d642404897c24088b5424048b7424088b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008b4c2414894f148b4c2418894f1089770c8b7424208977088b7424248977048b74242889378b74243c8916897e048b7c2410897e088b7c240c897e0cb80100000083c434c20800f4000000|@19428,1,@4310|85,1,@9102 107,1,@9106 207,0,0 312,0,0 408,1,@4973 449,0,0 465,0,11 500,0,1 586,0,0 602,0,1 658,0,@9455 769,0,@19413 818,0,@10109 832,0,0 858,0,@9455 885,0,16777215 896,0,@11058 951,0,0 960,0,0 1028,0,@9107 1092,1,@9108 1130,0,@9455 1162,0,0 1193,0,@9455 1258,1,@9119 1430,0,0 9102:D3,144|3b650c7305ff552ccd0953a80175758b38ff7004ff77048b7f088b078b5c2408e87f00000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b4424048b5c2408e8a5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f400|@10030,1,@4291|33,1,@9103 137,0,0 9103:D3,328|3b650c7305ff552ccd098b38ff7004ff7008ff700c8b5010ff70148b4d008d49ec3b4d087305ff5528cd8c894d00c741fc040000008b342489710c8b742408897108895904c701182e48b18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c7069c2e48b1568b3783fe030f858f0000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb008b45008d40e43b45087305ff5528cd80894500c740fc060000008b7424048970145e8d6424048970105e89700c5e8970085e8970048938c3f4000000|@19412,1,@4290|71,0,@9104 109,0,@9105 153,0,@10109 207,0,0 262,0,0 9104:D3,112|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b7a08f7c701000000752c8b078b570483fe017501c389f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebccb8643c66b18b5d04ff23f400|@19411,1,@4288|33,0,@9455 75,0,@9455 101,0,@10105 9105:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e93cc5eefff4000000|@13922,1,@4289|24,1,@6694 9106:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4292| 9107:D3,84|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b4a0889cf8b49fcc1e108c1e90783c9013bf1720ab8a43266b18b5d04ff238b4477fec3f40000|@19415,1,@4293|33,0,@9455 67,0,@9990 9108:D3,596|3b650c7305ff552ccd09538b7c24108b178b7c24108b7f04ff37ff7704ff7708ff770cff77108b4f148b3089f783fe0175138d6424148b78088b3f57ff742414e98d01000083ff0375118d6424148b780457ff742414e9f50000008b70088b7d008d7ff43b7d087305ff5528cd46897d00c747fc02000000894f0489176a016a015657f64424040175558b7c24048b0789ffff77046a016a018b7c24385457ff7424388b5c2418e8bc0100005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceba48b3c248b378974240889ff8b7f048d642404897c24088b5424048b7424088b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008977148b74240c8977108b74241089770c8b7424148977088b7424188977048b74241c89378b74242c8916897e04b80100000083c424c20c00f64424040175598b7c24048b0789ffff77046a016a018b7c241cff74240c5483042404578b5c2420e883feffff5f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceba08b7424148b3c248b17891689ff8b7f048d642404897e04b80100000083c408c20c00f64424040175558b7c24048b0789ffff77046a016a018b7c241c5457ff74241c8b5c2418e8710300005f5e8b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204893a5e891424897424043b650c7303ff552ceba48b7424148b3c248b17891689ff8b7f048d642404897e04b80100000083c408c20c00f4000000|@19425,1,@4304|168,1,@9109 326,0,0 456,0,0 503,1,@9111 582,0,0 9109:D3,700|3b650c7305ff552ccd09ff30ff7004ff700cff33ff73048b7c241c8b3f83ff0d75138b44241c6a018b5c2408e8a707e0ff89c7eb358b74241c8b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542404895708897704c70717000000578b7c240c8b3f83ff01750e8d642418b8b07766b18b5d04ff238b3f8b77088b3eff7604ff760c8b56108b4c24248b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c706d43448b1568b3783fe030f85950000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977088b34248977048d642404c70701000000eb008b75008d76e43b75087305ff5528cd80897500c746fc06000000c74614010000008b14248956108d6424048b142489560c8d642404c74608010000008b14248956048d642404893e8b54240883c202710e8d642418b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2414894f04c707010000008b5d008d5bf43b5d087305ff5528cdc4895d00c743fc02000000c7430401000000893b8b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008b0c24894f048d642404c707030000008b4d008d49ec3b4d087305ff5528cdcc894d00c741fc0400000089590c8971088979048b74240c89f789318b75008d76f43b75087305ff5528cd86897500c746fc02000000894e0489ff893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b0c24894f048d64240489378b74241c8916897e04b80100000083c410c20c00f4000000|@19416,1,@4295|45,1,@4973 86,0,0 102,0,11 123,0,@10986 186,0,@9110 230,0,@10109 284,0,0 345,0,0 380,0,0 407,0,0 437,0,@9455 481,0,0 514,0,0 558,0,1 686,0,0 9110:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e904bfeefff4000000|@13922,1,@4294|24,1,@6694 9111:D3,2032|3b650c7305ff552ccd098b3889fe83ff05754c8b7804ff378b77048b138b7b04ff37ff7704ff7708ff770cff7710ff77148b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089176a016a015657e91a05000089f783fe010f85990000008b70048b50088b7d008d7ff43b7d087305ff5528cd4c897d00c747fc020000008957048937ff338b73048b06ff7604ff76088b560c8b4e108b5e148b75008d76f43b75087305ff5528cd8f897500c746fc02000000894604893e8b7d008d7fe43b7d087305ff5528cd4e897d00c747fc06000000895f14894f1089570c5a8957085a89570489378b7424105a8916897e04b801000000c20c0083ff030f8583020000ff7004ff338b7b04ff37ff7704ff7708ff770cff7710ff77148b7c241c8b7f088b37ff7704ff770c8b57108b4c242c8b7d008d7ff03b7d087305ff5528cd46897d00c747fc03000000894f08895704c7070c3d48b1578b3e83ff030f858f0000008b56048b7e0cff328b378b5efcc1e308c1eb0783cb0183fb017507bfe43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d78b75008d76f03b75087305ff5528cd80897500c746fc03000000897e085f897e04c70601000000eb008b7d008d7fe43b7d087305ff5528cd40897d00c747fc06000000c74714010000005a8957105a89570cc74708010000005a8957048937578b7c2420ff378b7c24308b3f83ff0d75138b4424306a018b5c2424e88102e0ff89c6eb358b7c24308b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000008b542420895608897e04c706170000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707030000008b7424248b560c8b75008d76ec3b75087305ff5528cd84897500c746fc0400000089560c8b542404895608897e048b3c24893e8b54242083c202710e8d642428b8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977045e89378b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2404894e04893e8b7d008d7fe43b7d087305ff5528cd44897d00c747fc060000008977148b7424088977108b74240c89770c8b7424108977088b7424148977048b74241889378b7424308916897e04b80100000083c424c20c008b7004ff36ff76048b7e08ff760cff7610ff338b7304ff36ff7604ff7608ff760cff7610ff76148b3783fe077502eb768b7c24348b3f83ff0d75138b4424346a018b5c241ce8fb00e0ff89c6eb358b7c24348b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c010000008b542418895608897e04c706170000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70703000000578b7c24348b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706403d48b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707983d48b1578b442428bb009669b1e8a97eeeff89c78b75008d76e03b75087305ff5528cd80897500c746fc07000000c7461801000000c74614010000008b542420895610897e0c5f897e088b7c2424897e048b7c2428893e8b54241883c202710e8d64242cb8f80466b18b5d04ff238b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008977048b74242889378b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c240c894e04893e8b7d008d7fe43b7d087305ff5528cd44897d00c747fc0600000059894f1459894f10598d642404894f0c8977085e8977045e89378b7424208916897e04b80100000083c414c20c00f6442404010f856e0100008b7c24048b3f8b742404ff7604ff37ff7704ff770cff77108b7c2414ff378b7c2418ff77048b7c24508b3f83ff0d75138b4424506a018b5c2408e811ffdfff89c7eb358b7424508b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542404895708897704c707170000008b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706030000008b7d008d7fe03b7d087305ff5528cd40897d00c747fc07000000c7471801000000c74714010000008b5424088957108b54240c89570c8977088b7424108977048b74241489378b74240483c60256710e8d64244cb8f80466b18b5d04ff238b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430401000000893b83fb0175068b7c2404eb0b8b442404e8a802000089c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a045f893a8b7424188954241c897424203b650c7303ff552c83c41ce987feffff8b3c248b3f897c24085f8b7f04897c2408ff7424048b7c240c8b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b7c242889388b5c243068100666b1e8b44ff3ff89c7578b7c242c8b076a016a0189e3e8aca5eeff8d6424045e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000005a89570489378b75008d76f43b75087305ff5528cd80897500c746fc020000008b542420895604893e8b7d008d7fe43b7d087305ff5528cd40897d00c747fc060000008b5424108957148b5424148957108b54241889570c8b54241c8957088977048b74242489378b7424385a8916897e04b80100000083c428c20c00f4000000|@19424,1,@4303|78,0,0 252,0,0 349,0,@9112 393,0,@10109 447,0,0 502,0,0 537,0,0 552,0,0 591,1,@4973 632,0,0 648,0,11 683,0,1 752,0,@9455 901,0,0 981,1,@4973 1022,0,0 1038,0,11 1073,0,1 1113,0,@9113 1148,0,@9114 1158,0,@19422 1163,1,@6634 1198,0,0 1205,0,0 1250,0,@9455 1391,0,0 1471,1,@4973 1512,0,0 1528,0,11 1563,0,1 1596,0,0 1603,0,0 1652,0,@9455 1690,0,0 1712,1,@9118 1843,0,@9473 1848,1,@7288 1868,1,@6665 2018,0,0 9112:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9ccb6eefff4000000|@13922,1,@4296|24,1,@6694 9113:D3,68|3b650c7305ff552ccd058b78048b3783fe0175278b470c8b5204ff1289c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f40000|@19417,1,@4297|60,0,0 9114:D3,88|3b650c7305ff552ccd056a016a016a016a018b5a0468389569b1689c9569b16a01548304240ce8b5a0eeff5f5e5a598b45008d40ec3b45087305ff5528cdc6894500c740fc0400000089480c8950088970048938c3f40000|@19421,1,@4300|22,0,@19418 27,0,@19420 39,1,@6661 9115:D3,12|3b650c7305ff552ccd01c3f4|@19419,1,@4298| 9116:D3,12|3b650c7305ff552ccd01c3f4|@19419,1,@4299| 9117:D3,12|3b650c7305ff552ccd01c3f4|@19423,1,@4301| 9118:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4302| 9119:D3,1104|8d7c24ac3b7d0c7305ff5530cd09ff700cff7014ff33ff73048b7c24188b3f83ff0d75138b4424186a018b5c2408e8e1fadfff89c7eb358b7424188b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c010000008b542404895708897704c70717000000578b7c240c8b3f83ff01750e8d642414b8b07766b18b5d04ff238b3fff378b3424ff368b7424048b7608ff7704ff770cff77108b3eff7604ff7608ff760c8b5610ff76148b74243c8b4d008d49ec3b4d087305ff5528cdc4894d00c741fc040000008b1c2489590c8b5c2408895908897104c7012c4348b18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c706b04348b1568b3783fe030f858f0000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb008b55008d52e43b55087305ff5528cd80895500c742fc060000008b7424048972145e8972108b74240489720c8b7424088972088b74240c897204893a8b7c24208b77048b7c24208b4f0c8b7d008d7fec3b7d087305ff5528cd46897d00c747fc04000000894f0c8957088977048b74241c8937578b7c24188b3f8b742418ff76048b74241cff76088b742420ff760c8b7424248b56108b742424ff76148b7424508b4d008d49e03b4d087305ff5528cdc4894d00c741fc070000008971188b7424148971148b74241c8971108b74243089710c8b34248971088b742408897104c701e44348b18b75008d76f03b75087305ff5528cd86897500c746fc03000000894e08895604c706544748b1568b3783fe030f858f0000008b77048b7f0cff368b378b5efcc1e308c1eb0783cb0183fb017507bee43c66b1eb4489df89f98d147d02000000f7da0355003b550872053b55007205ff5528cd4a895500d1ef897afcc642ff4089d7d1e9b801000000f3ab89d989d7d1e9f3a58062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000008977085e897704c70701000000eb008b55008d52e43b55087305ff5528cd80895500c742fc060000008b7424048972145e8d6424048972105e89720c5e8972085e897204893a8b75008d76f43b75087305ff5528cd04897500c746fc020000008b7c2428897e04c706030000008b7d008d7fe83b7d087305ff5528cd44897d00c747fc050000008b4c2414894f1089570c8977088b74241c8977045e89378b54242c83c202710e8d642438b8f80466b18b5d04ff238d6424288b75008d76f43b75087305ff5528cd84897500c746fc02000000897e048b7c240c893e8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000059894f0489378b7424188916897e04b80100000083c40cc20c00f40000|@19427,1,@4309|47,1,@4973 88,0,0 104,0,11 125,0,@10986 224,0,@9120 262,0,@9121 306,0,@10109 360,0,0 415,0,0 647,0,@9122 685,0,@9123 729,0,@10109 783,0,0 838,0,0 934,0,1 1001,0,@9455 1091,0,0 9120:D3,112|3b650c7305ff552ccd0589c68b4a0c89cf3bf17d078b520489f0ff222bf7710ab8f80466b18b5d04ff2383c6018b7a08f7c701000000752c8b078b570483fe017501c389f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebccb8643c66b18b5d04ff23f400|@19426,1,@4305|33,0,@9455 75,0,@9455 101,0,@10105 9121:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e928b0eefff4000000|@13922,1,@4306|24,1,@6694 9122:D3,860|3b650c7305ff552ccd05528b3c248b770889f23bc67c2789ff89c62bf2710e8d642404b8f80466b18b5d04ff2383c60189ff8b7f048d642404e9dd02000089ff8b771489f23bc67c2689ff89c62bf2710e8d642404b8f80466b18b5d04ff2383c6016a016a016a0189ff8b7f10eb0b89ff8b57188d642404ff22f7c7010000000f85870200008b0f8b570483fe010f85510200008b39893c248b7904897c24048b7908897c2408ff3424ff7424088b7c2410ff37ff7704ff77088b7c24208b770c89f281fe100666b17502eb2589d68b128d14550100000083fa01751ebf100666b18d76048d7f0433c93bc9f3a67402eb098b742408e97c0100008b7c24208b770c8b368d1c750100000083fb01750abf500e66b1e98400000089de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f879301000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289ff8b7f0c89d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d78b378d347501000000568b74240c8b368d347501000000568b74240483fe01750d8d6424088b742408e9ab0000008b342483fe01750b8d64240889fee9980000008b7424048b14248d7416ff89f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87ba00000089cb8d145d02000000f7da0355003b550872053b55007205ff5528cdc2895500d1eb895afcc642ff4183e902c7444afe00000000d1ee89328b4c24048d77048d7a04d1e9f3a48b7c240483c708598d6424048b7424088d7604d1ef8d3c3ad1e9f3a48062ffbf89d68b7d008d7ff03b7d087305ff5528cd40897d00c747fc030000005a8957085a89570489378b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b7c24048978048b7c2408893883c41cc38d64242cb8780566b18b5d04ff238d642424b8780566b18b5d04ff2389f183e902710e8d642410b8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0e96dfdffff8d642410b8643c66b18b5d04ff23f7c701000000752c8b078b570483fe017501c389f183e902710ab8f80466b18b5d04ff2389ce89d73b650c7305ff552ccdc0ebccb8643c66b18b5d04ff23f40000|@19426,1,@4307|36,0,@9455 86,0,@9455 197,0,@9473 222,0,@9473 273,0,@9551 293,0,4 314,0,16777215 372,0,0 496,0,4 517,0,16777215 575,0,0 718,0,@9465 732,0,@9465 753,0,@9455 786,0,@10105 822,0,@9455 848,0,@10105 9123:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e984aceefff4000000|@13922,1,@4308|24,1,@6694 9124:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4311|126,0,0 9125:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4312|126,0,0 9126:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4313|126,0,0 9127:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4314|126,0,0 9128:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4315|126,0,0 9129:D3,132|3b650c7305ff552ccd09a801756fff308b40048b3c248b3f3bdf75068d642404eb288b338d3475010000008b1789d18d1455010000003bf275158d73048d7f043bc9f3a675098d642404e9b1ffffffe8acffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@9865,1,@4316|126,0,0 9130:D3,20|3b650c7305ff552ccd01b8c0d166b1c3f4000000|@19433,1,@4319|11,0,@11651 9131:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7068c00c0b05689ff8b470489ff8b5f08e85cc0dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9d8cddffff4000000|@10023,1,@4323|38,0,0 54,0,@9574 60,0,@4612 76,1,@4911 114,0,0 135,1,@9132 168,1,@4928 9132:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff8c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4322|26,0,@4612 145,0,0 9133:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069400c0b05689ff8b470489ff8b5f08e8e8bedfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e964ccdffff4000000|@10023,1,@4325|38,0,0 54,0,@9574 60,0,@4613 76,1,@4911 114,0,0 135,1,@9134 168,1,@4928 9134:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4324|26,0,@4613 145,0,0 9135:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706ac00c0b05689ff8b470489ff8b5f08e874bddfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9f0cadffff4000000|@10023,1,@4327|38,0,0 54,0,@9574 60,0,@4616 76,1,@4911 114,0,0 135,1,@9136 168,1,@4928 9136:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4326|26,0,@4616 145,0,0 9137:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706a400c0b05689ff8b470489ff8b5f08e800bcdfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e97cc9dffff4000000|@10023,1,@4329|38,0,0 54,0,@9574 60,0,@4615 76,1,@4911 114,0,0 135,1,@9138 168,1,@4928 9138:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffa400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4328|26,0,@4615 145,0,0 9139:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706b400c0b05689ff8b470489ff8b5f08e88cbadfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e908c8dffff4000000|@10023,1,@4331|38,0,0 54,0,@9574 60,0,@4617 76,1,@4911 114,0,0 135,1,@9140 168,1,@4928 9140:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffb400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4330|26,0,@4617 145,0,0 9141:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069c00c0b05689ff8b470489ff8b5f08e818b9dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e994c6dffff4000000|@10023,1,@4333|38,0,0 54,0,@9574 60,0,@4614 76,1,@4911 114,0,0 135,1,@9142 168,1,@4928 9142:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4332|26,0,@4614 145,0,0 9143:D3,60|3b650c7305ff552ccd018b388b3783fe0175118b770889f73b650c7305ff552ccd80ebe88b47048b7708ff3424bb70bb67b189742404e9f5dfddfff4|@14471,1,@4337|46,0,@14469 55,1,@4839 9144:D3,56|3b650c7305ff552ccd0589c78b45008d40f03b45087305ff5528cd84894500c740fc030000008b7204897008897804c700945448b1c3f400|@19456,1,@4341|49,0,@9145 9145:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9d8c4eefff4000000|@19454,1,@4340|24,1,@6752 9146:D3,36|3b650c7305ff552ccd0189c78b078b5f048b7708ff342489742404e90022effff4000000|@19461,1,@4342|28,1,@6841 9147:D3,776|3b650c7305ff552ccd09538b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c7071c5848b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707145948b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c7070c5a48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707045b48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707fc5b48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707f45c48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707ec5d48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707c05f48b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707946148b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707686348b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c7073c6548b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707106748b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707e46848b1578b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707286a48b1578b4d008d49f43b4d087305ff5528cd01894d00c741fc02000000894104c7016c6b48b18b5d008d5bf43b5d087305ff5528cd03895d00c743fc02000000894304c703b06c48b18b7d008d7ff43b7d087305ff5528cd0b897d00c747fc02000000894704c707f46d48b18b55008d52f43b55087305ff5528cd8b895500c742fc02000000894204c702386f48b18b7424388b4424048906895e048b1c24895e088d642408894e0c8956108b5424148956148b5424088956188b54241089561c897e208b7c240c897e248b7c242c897e288b7c2420897e2c8b7c2428897e305f897e348b7c2420897e385f8d642410897e3c5f897e405f8d642414897e44b801000000c3f40000|@19469,1,@4391|42,0,@9148 78,0,@9150 114,0,@9152 150,0,@9154 186,0,@9156 222,0,@9158 258,0,@9160 294,0,@9163 330,0,@9166 366,0,@9169 402,0,@9172 438,0,@9175 474,0,@9178 510,0,@9181 546,0,@9184 581,0,@9187 616,0,@9190 651,0,@9193 768,0,0 9148:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700745848b1e9cbb5dffff40000|@10013,1,@4344|56,0,@9149 61,1,@4913 9149:D3,140|3b650c7305ff552ccd058b42048b5a08e863b3dfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb8c00c0b0753489cf81ff8c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4343|17,1,@4911 36,0,0 60,0,@4612 70,0,@4612 109,0,@9999 133,0,0 9150:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c7006c5948b1e9d3b4dffff40000|@10013,1,@4346|56,0,@9151 61,1,@4913 9151:D3,140|3b650c7305ff552ccd058b42048b5a08e86bb2dfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9400c0b0753489cf81ff9400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4345|17,1,@4911 36,0,0 60,0,@4613 70,0,@4613 109,0,@9999 133,0,0 9152:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700645a48b1e9dbb3dffff40000|@10013,1,@4348|56,0,@9153 61,1,@4913 9153:D3,140|3b650c7305ff552ccd058b42048b5a08e873b1dfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fb9c00c0b0753489cf81ff9c00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4347|17,1,@4911 36,0,0 60,0,@4614 70,0,@4614 109,0,@9999 133,0,0 9154:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c7005c5b48b1e9e3b2dffff40000|@10013,1,@4350|56,0,@9155 61,1,@4913 9155:D3,140|3b650c7305ff552ccd058b42048b5a08e87bb0dfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fba400c0b0753489cf81ffa400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4349|17,1,@4911 36,0,0 60,0,@4615 70,0,@4615 109,0,@9999 133,0,0 9156:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c700545c48b1e9ebb1dffff40000|@10013,1,@4352|56,0,@9157 61,1,@4913 9157:D3,140|3b650c7305ff552ccd058b42048b5a08e883afdfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbac00c0b0753489cf81ffac00c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4351|17,1,@4911 36,0,0 60,0,@4616 70,0,@4616 109,0,@9999 133,0,0 9158:D3,68|3b650c7305ff552ccd0589c68b4a0489cf8b198b7f048b45008d40f03b45087305ff5528cdc8894500c740fc03000000897008897804c7004c5d48b1e9f3b0dffff40000|@10013,1,@4354|56,0,@9159 61,1,@4913 9159:D3,140|3b650c7305ff552ccd058b42048b5a08e88baedfff89c7f7c70100000075048b3feb06b801000000c3f7c70100000075538b178b77048b1a89d981fbb400c0b0753489cf81ffb400c0b075208b7a088b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba5b801000000c3f400|@10003,1,@4353|17,1,@4911 36,0,0 60,0,@4617 70,0,@4617 109,0,@9999 133,0,0 9160:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7004c5e48b1e9f1afdffff4|@10024,1,@4357|66,0,@9161 71,1,@4913 9161:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7068c00c0b05689ff8b470489ff8b5f08e850addfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9ccbadffff4000000|@10023,1,@4356|38,0,0 54,0,@9574 60,0,@4612 76,1,@4911 114,0,0 135,1,@9162 168,1,@4928 9162:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff8c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4355|26,0,@4612 145,0,0 9163:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700206048b1e91daedffff4|@10024,1,@4360|66,0,@9164 71,1,@4913 9164:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069400c0b05689ff8b470489ff8b5f08e87cabdfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9f8b8dffff4000000|@10023,1,@4359|38,0,0 54,0,@9574 60,0,@4613 76,1,@4911 114,0,0 135,1,@9165 168,1,@4928 9165:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4358|26,0,@4613 145,0,0 9166:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700f46148b1e949acdffff4|@10024,1,@4363|66,0,@9167 71,1,@4913 9167:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c7069c00c0b05689ff8b470489ff8b5f08e8a8a9dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e924b7dffff4000000|@10023,1,@4362|38,0,0 54,0,@9574 60,0,@4614 76,1,@4911 114,0,0 135,1,@9168 168,1,@4928 9168:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ff9c00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4361|26,0,@4614 145,0,0 9169:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700c86348b1e975aadffff4|@10024,1,@4366|66,0,@9170 71,1,@4913 9170:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706a400c0b05689ff8b470489ff8b5f08e8d4a7dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e950b5dffff4000000|@10023,1,@4365|38,0,0 54,0,@9574 60,0,@4615 76,1,@4911 114,0,0 135,1,@9171 168,1,@4928 9171:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffa400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4364|26,0,@4615 145,0,0 9172:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c7009c6548b1e9a1a8dffff4|@10024,1,@4369|66,0,@9173 71,1,@4913 9173:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706ac00c0b05689ff8b470489ff8b5f08e800a6dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e97cb3dffff4000000|@10023,1,@4368|38,0,0 54,0,@9574 60,0,@4616 76,1,@4911 114,0,0 135,1,@9174 168,1,@4928 9174:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffac00c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4367|26,0,@4616 145,0,0 9175:D3,76|3b650c7305ff552ccd0589d78b308b50048b5f0489d98b1b89cf8b7f048b45008d40ec3b45087305ff5528cdcc894500c740fc0400000089500c897008897804c700706748b1e9cda6dffff4|@10024,1,@4372|66,0,@9176 71,1,@4913 9176:D3,176|3b650c7305ff552ccd05528b75008d76ec3b75087303ff5528897500c746fc04000000c7460c010000008b3c248b570c895608c74604640f66b1c706b400c0b05689ff8b470489ff8b5f08e82ca4dfff89c783ff01752a8b75008d76f43b75087303ff5528897500c746fc02000000c74604010000008b3c24893e8d642404eb108b078b1c24e83900000089c68d6424048b3c248b470489ff8b5f088d642404ff342489742404e9a8b1dffff4000000|@10023,1,@4371|38,0,0 54,0,@9574 60,0,@4617 76,1,@4911 114,0,0 135,1,@9177 168,1,@4928 9177:D3,156|3b650c7305ff552ccd09a8017566ff308b40048b3c248b3f81ffb400c0b075268d6424048b7d008d7ff43b7d087305ff5528cd09897d00c747fc02000000894704891f89f8c3e8b5ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c38b45008d40f43b45087305ff5528cd08894500c740fc02000000c74004010000008918c3f4000000|@10014,1,@4370|26,0,@4617 145,0,0 9178:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700386948b1e908a5dffff4000000|@14452,1,@4375|51,0,@9179 56,1,@4913 9179:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404489b69b1e9bec1dffff400|@10029,1,@4374|17,0,0 25,0,@19463 30,1,@4949 9180:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f98c00c0b0755c81fa8c00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4373|35,0,@4612 43,0,@4612 124,0,@9999 9181:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c7007c6a48b1e9c4a3dffff4000000|@14452,1,@4378|51,0,@9182 56,1,@4913 9182:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404509b69b1e97ac0dffff400|@10029,1,@4377|17,0,0 25,0,@19464 30,1,@4949 9183:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99400c0b0755c81fa9400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4376|35,0,@4613 43,0,@4613 124,0,@9999 9184:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700c06b48b1e980a2dffff4000000|@14452,1,@4381|51,0,@9185 56,1,@4913 9185:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404589b69b1e936bfdffff400|@10029,1,@4380|17,0,0 25,0,@19465 30,1,@4949 9186:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99c00c0b0755c81fa9c00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4379|35,0,@4614 43,0,@4614 124,0,@9999 9187:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700046d48b1e93ca1dffff4000000|@14452,1,@4384|51,0,@9188 56,1,@4913 9188:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404609b69b1e9f2bddffff400|@10029,1,@4383|17,0,0 25,0,@19466 30,1,@4949 9189:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9a400c0b0755c81faa400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4382|35,0,@4615 43,0,@4615 124,0,@9999 9190:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c700486e48b1e9f89fdffff4000000|@14452,1,@4387|51,0,@9191 56,1,@4913 9191:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404689b69b1e9aebcdffff400|@10029,1,@4386|17,0,0 25,0,@19467 30,1,@4949 9192:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9ac00c0b0755c81faac00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4385|35,0,@4616 43,0,@4616 124,0,@9999 9193:D3,64|3b650c7305ff552ccd058b720489f78b1e8b7f048b45008d40f43b45087305ff5528cd88894500c740fc02000000897804c7008c6f48b1e9b49edffff4000000|@14452,1,@4390|51,0,@9194 56,1,@4913 9194:D3,36|3b650c7305ff552ccd058b4204ff3424bb01000000c7442404709b69b1e96abbdffff400|@10029,1,@4389|17,0,0 25,0,@19468 30,1,@4949 9195:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9b400c0b0755c81fab400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4388|35,0,@4617 43,0,@4617 124,0,@9999 9196:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4392|20,0,1 26,0,0 9197:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4393|41,0,0 51,0,@9574 9198:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4394|24,0,@9999 9199:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4395|20,0,1 26,0,0 9200:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4396|41,0,0 51,0,@9574 9201:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4397|24,0,@9999 9202:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4398|20,0,1 26,0,0 9203:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4399|41,0,0 51,0,@9574 9204:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4400|24,0,@9999 9205:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4401|20,0,1 26,0,0 9206:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4402|41,0,0 51,0,@9574 9207:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4403|24,0,@9999 9208:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4404|20,0,1 26,0,0 9209:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4405|41,0,0 51,0,@9574 9210:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4406|24,0,@9999 9211:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4407|20,0,1 26,0,0 9212:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4408|41,0,0 51,0,@9574 9213:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4409|24,0,@9999 9214:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4410|20,0,1 26,0,0 9215:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4411|41,0,0 51,0,@9574 9216:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4412|24,0,@9999 9217:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4413|20,0,1 26,0,0 9218:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4414|41,0,0 51,0,@9574 9219:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4415|24,0,@9999 9220:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4416|20,0,1 26,0,0 9221:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4417|41,0,0 51,0,@9574 9222:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4418|24,0,@9999 9223:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4419|20,0,1 26,0,0 9224:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4420|41,0,0 51,0,@9574 9225:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4421|24,0,@9999 9226:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4422|20,0,1 26,0,0 9227:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4423|41,0,0 51,0,@9574 9228:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4424|24,0,@9999 9229:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4425|20,0,1 26,0,0 9230:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4426|41,0,0 51,0,@9574 9231:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4427|24,0,@9999 9232:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4428|20,0,1 26,0,0 9233:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4429|41,0,0 51,0,@9574 9234:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4430|24,0,@9999 9235:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4431|20,0,1 26,0,0 9236:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4432|41,0,0 51,0,@9574 9237:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4433|24,0,@9999 9238:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4434|20,0,1 26,0,0 9239:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4435|41,0,0 51,0,@9574 9240:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4436|24,0,@9999 9241:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4437|20,0,1 26,0,0 9242:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4438|41,0,0 51,0,@9574 9243:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4439|24,0,@9999 9244:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4440|20,0,1 26,0,0 9245:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4441|41,0,0 51,0,@9574 9246:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4442|24,0,@9999 9247:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4443|20,0,1 26,0,0 9248:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4444|41,0,0 51,0,@9574 9249:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4445|24,0,@9999 9250:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4446|20,0,1 26,0,0 9251:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4447|41,0,0 51,0,@9574 9252:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4448|24,0,@9999 9253:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4449|20,0,1 26,0,0 9254:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4450|41,0,0 51,0,@9574 9255:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4451|24,0,@9999 9256:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4452|20,0,1 26,0,0 9257:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4453|41,0,0 51,0,@9574 9258:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4454|24,0,@9999 9259:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4455|20,0,1 26,0,0 9260:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4456|41,0,0 51,0,@9574 9261:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4457|24,0,@9999 9262:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4458|20,0,1 26,0,0 9263:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4459|41,0,0 51,0,@9574 9264:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4460|24,0,@9999 9265:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4461|20,0,1 26,0,0 9266:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4462|41,0,0 51,0,@9574 9267:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4463|24,0,@9999 9268:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4464|20,0,1 26,0,0 9269:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4465|41,0,0 51,0,@9574 9270:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4466|24,0,@9999 9271:D3,32|3b650c7305ff552ccd058b388b72043bfe7506b803000000c3b801000000c3f4|@19485,1,@4467|20,0,1 26,0,0 9272:D3,64|3b650c7305ff552ccd0589c78b45008d40ec3b45087305ff5528cd84894500c740fc04000000c7400c01000000897808c74004640f66b18b7a048938c3f40000|@19485,1,@4468|41,0,0 51,0,@9574 9273:D3,36|3b650c7305ff552ccd058b388b72043bfe75048b4008c3b8483366b18b5d04ff23f40000|@19485,1,@4469|24,0,@9999 9274:D3,24|3b650c7305ff552ccd01b8ac4866b18b5d04ff23f4000000|@10265,1,@4470|11,0,@10262 9275:D3,56|3b650c7305ff552ccd0189c78b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c7000d000000c3f4|@19624,1,@4471|41,0,0 50,0,6 9276:D3,36|3b650c7305ff552ccd0589c78b52048b078b5f048b7708ff342489742404ff22f4000000|@19627,1,@4472| 9277:D3,56|3b650c7305ff552ccd018b3883ff0d75208b78048b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4|@19630,1,@4473|50,0,0 9278:D3,272|3b650c7305ff552ccd01ff308b5804ff7008ff700cff701083fb017d0e8d642410b8a84566b18b5d04ff23b801000000e8ef00000089c7578b7c240c89fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240c578b44240ce82868feff89c7578b442408e88c68feff89c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b54240c895718c74714030000008977108b342489770c8d642404c74708010000008b34248977048d6424108b74240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c3f4000000|@19633,1,@4475|34,0,@10224 44,0,0 49,1,@9279 64,0,@9473 89,0,@9473 112,0,@10237 128,1,@8872 140,1,@8873 175,0,1 189,0,1 209,0,0 260,0,12 9279:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f400|@10221,1,@4474|15,0,0 26,0,@9455 73,0,1 9280:D3,272|3b650c7305ff552ccd01ff308b5804ff7008ff700cff701083fb017d0e8d642410b8a84566b18b5d04ff23b801000000e8ef00000089c7578b7c240c89fe81ff100666b17502eb2789f68b3e8d3c7d0100000083ff01751ebf100666b189f68d76048d7f0433c93bc9f3a67402eb07bf184766b1eb048b7c240c578b44240ce80401000089c7578b442408e86801000089c68b7d008d7fdc3b7d087305ff5528cd40897d00c747fc08000000c7471c030000008b54240c895718c74714010000008977108b342489770c8d642404c74708010000008b34248977048d6424108b74240489378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001900000083c408c3f4000000|@19636,1,@4479|34,0,@10224 44,0,0 49,1,@9281 64,0,@9473 89,0,@9473 112,0,@10237 128,1,@9282 140,1,@9283 175,0,1 189,0,0 209,0,0 260,0,12 9281:D3,80|3b650c7305ff552ccd093bc37506b801000000c383c002710ab8f80466b18b5d04ff23e8d8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70003000000c3f400|@10221,1,@4476|15,0,0 26,0,@9455 73,0,1 9282:D3,92|3b650c7305ff552ccd01a80175478b388b40048b3783fe117531ff7704e8deffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8304566b18b5d04ff23b801000000c3f4|@10030,1,@4477|76,0,@10218 86,0,0 9283:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470401000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@4478|48,0,0 102,0,0 9284:D3,76|3b650c7305ff552ccd01ff308b4004e84c00000089c78b45008d40ec3b45087305ff5528cd80894500c740fc04000000c7400c030000008b34248970088d642404897804c7000f000000c3f4|@19639,1,@4481|16,1,@9285 51,0,1 70,0,7 9285:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@4480|48,0,1 102,0,0 9286:D3,100|3b650c7305ff552ccd0183f8017d0ab8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707050000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@11926,1,@4482|16,0,@11112 56,0,2 91,0,8 9287:D3,100|3b650c7305ff552ccd0183f8017d0ab8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707010000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@11926,1,@4483|16,0,@11112 56,0,0 91,0,8 9288:D3,100|3b650c7305ff552ccd0183f8017d0ab8948966b18b5d04ff238b7d008d7ff43b7d087305ff5528cd01897d00c747fc02000000894704c707030000008b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70011000000c3f4000000|@11926,1,@4484|16,0,@11112 56,0,1 91,0,8 9289:D3,64|3b650c7305ff552ccd018b388b70048b45008d40ec3b45087305ff5528cdc0894500c740fc0400000089700c897808c7400401000000c70003000000c3f40000|@19648,1,@4485|50,0,0 56,0,1 9290:D3,92|3b650c7305ff552ccd018b308b78048b1783fa0d751489f889f3ff3424c744240401000000e91eaedfff8b45008d40ec3b45087305ff5528cdc0894500c740fc04000000c7400c01000000897008897804c70017000000c3f4000000|@19651,1,@4486|33,0,0 38,1,@4973 71,0,0 83,0,11 9291:D3,64|3b650c7305ff552ccd018b388b70048b50088b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c7000b000000c3f4000000|@15765,1,@4487|55,0,5 9292:D3,308|3b650c7305ff552ccd01ff308b78048b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706050000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757b801000000e82838ffff89c78b55008d52f43b55087305ff5528cd80895500c742fc02000000897a04c7021d0000008b342489f783fe0175088d64240489d6eb2c8b75008d76f03b75087305ff5528cd84897500c746fc0300000089560889ff897e048d642404c7061f0000008b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470cc43966b18977088b34248977048d642404c7070b00000057b801000000e80638ffff89c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70005000000c3f400|@19656,1,@4488|46,0,2 79,0,0 87,0,0 92,1,@9004 129,0,14 191,0,15 224,0,@10072 243,0,5 249,0,0 254,1,@9005 301,0,2 9293:D3,56|3b650c7305ff552ccd01e83d00000089c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c7001d000000c3f40000|@19659,1,@4490|11,1,@9294 48,0,14 9294:D3,108|3b650c7305ff552ccd01a80175578b308b40048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e8c4ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4|@10030,1,@4489|48,0,1 102,0,0 9295:D3,72|3b650c7305ff552ccd01ff308b4004e84800000089c78b45008d40f03b45087305ff5528cd80894500c740fc030000008978088b3c248978048d642404c70005000000c3f4000000|@19662,1,@4492|16,1,@9296 63,0,2 9296:D3,156|3b650c7305ff552ccd01a8010f85820000008b308b40048b3e8b56048b75008d76f03b75087305ff5528cd85897500c746fc03000000895608897e04c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470403000000893757e895ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f400|@10030,1,@4491|62,0,0 95,0,1 149,0,0 9297:D3,64|3b650c7305ff552ccd018b388b700483ff01750389f0c38b45008d40f03b45087305ff5528cdc0894500c740fc03000000897008897804c7001f000000c3f400|@19665,1,@4493|57,0,15 9298:D3,72|3b650c7305ff552ccd0183f801750ab84c7767b18b5d04ff23e81a0feeff89c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70007000000c3f4000000|@19668,1,@4494|16,0,@13576 26,1,@6591 63,0,3 9299:D3,112|3b650c7305ff552ccd0189c78b45008d40f03b45087305ff5528cd80894500c740fc03000000c7400801000000897804c70029000000f7c70100000075218b178b77048b1283fa0d750e89f73b650c7305ff552ccd81ebdebf01000000eb05bf0300000083ff037505e9e2b5dfffc3f4|@19671,1,@4495|41,0,0 50,0,20 89,0,0 96,0,1 106,1,@4980 9300:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70021000000c3f4000000|@15941,1,@4496|43,0,16 9301:D3,64|3b650c7305ff552ccd018b388b70048b50088b45008d40ec3b45087305ff5528cdc4894500c740fc0400000089500c897008897804c70015000000c3f4000000|@19676,1,@4497|55,0,10 9302:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c70005000000c3f4000000|@16195,1,@4498|43,0,2 9303:D3,16|3b650c7305ff552ccd018b00c3f40000|@19681,1,@4499| 9304:D3,120|3b650c7305ff552ccd018b088b70048b51048b79088b590c83fa0575548b1783fa03754d8b7f048b1783fa0d75218b57048b7d008d7ff83b7d087305ff5528cd4c897d00c747fc010000008917eb05bf0100000083ff01750ab8b07766b18b5d04ff238b07ff342489742404e91b000000b8447666b1c3f4|@19689,1,@4505|80,0,0 90,0,@10986 109,1,@9305 114,0,@10970 9305:D3,896|3b650c7305ff552ccd095053be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707d49548b1ba010000008b75008d76f83b75087305ff5528cd84897500c746fc010000408916568b75008d76ec3b75087305ff5528cd80897500c746fc04000000c7460c943966b1897e08c746042c0268b18b3c24893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c74704010000008937576a016a01548b442418bb00aa69b1e89d21eeff8d64240458e8b3d9fbffe8120300008b7d008d7ff43b7d087305ff5528cd01897d00c747fc020000008b742410897704c707e09648b157e88544fcffba3c2869b1ff742404ff742404bb2c0268b1e8de44fcff89c757ba5c2869b1ff7424088b442418bb2c0268b1e8a87dfcff89c7578b7c24248b75008d76f03b75087305ff5528cd80897500c746fc03000000c7460801000000897e04c7060d0000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e048b7c2404893e8b7d008d7ff03b7d087305ff5528cd40897d00c747fc03000000c7470801000000897704c70729000000f7c60100000075218b0e8b56048b0983f90d750e89d63b650c7305ff552ccdc0ebdebe01000000eb05be0300000083fe03750b89f8e815b2dfff89c7eb008b45008d40f43b45087305ff5528cd80894500c740fc02000000c74004010000008938e895b6dfff89c68b7d008d7fec3b7d087305ff5528cd40897d00c747fc04000000c7470c030000008b14248957088d642404897704c7070f000000578b7c24108b07e8f73ffdff89c6bf01000000f7c60100000075348b1e8b56048b4d008d49f43b4d087305ff5528cdcc894d00c741fc02000000897904891989cf89d63b650c7305ff552ccdc0ebc483ff0175065883c410eb308b45008d40f03b45087305ff5528cd80894500c740fc030000008b34248970088d642404897804c7001f00000083c4108b3c248b3f8d642404bac86966b157bb01000000e840e2dfff89c2b801000000ff1289c78b3783fe0d75258d6424088b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb098d642408bf0100000083ff01750ab8b07766b18b5d04ff238b07c20400f4000000|@19688,1,@4504|13,0,0 78,0,@9306 83,0,0 145,0,@10068 155,0,@15112 193,0,0 210,0,@19685 215,1,@6630 225,1,@8411 230,1,@9308 269,0,@9309 275,1,@8467 280,0,@18443 293,0,@15112 298,1,@8468 306,0,@18444 319,0,@15112 324,1,@8517 364,0,0 373,0,6 406,0,0 476,0,0 485,0,20 524,0,0 531,0,1 543,1,@4980 580,0,0 587,1,@4985 622,0,1 641,0,7 653,1,@8677 660,0,0 776,0,15 793,0,@10767 799,0,0 804,1,@5052 811,0,0 868,0,0 878,0,@10986 9306:D3,44|3b650c7305ff552ccd0589c18b720489f78b0689fe8b3f83e90103f9710ab8f80466b18b5d04ff23893ec3f4|@19684,1,@4500|31,0,@9455 9307:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19686,1,@4501|11,0,0 9308:D3,144|3b650c7305ff552ccd01a80175788b388b40048b7f0483e70983ff017507be03000000eb05be0100000083f6028b7d008d7ff03b7d087305ff5528cd41897d00c747fc03000000c7470801000000897704c707e45667b157e8a3ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b801000000c3f4000000|@10030,1,@4502|31,0,1 38,0,0 74,0,0 83,0,@13097 135,0,0 9309:D3,60|3b650c7305ff552ccd058b45008d40f03b45087305ff5528cd04894500c740fc03000000c74008010000008b7a04897804c7000d000000c3f4000000|@19687,1,@4503|39,0,0 51,0,6 9310:D3,180|3b650c7305ff552ccd0189c78b078b5f048b7f086a016a01f7c70100000075518b178b75008d76f43b75087305ff5528cd0d897500c746fc02000000895604c706f89748b18b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704c707749848b1893424897c2404eb11bf00ab69b18b378934248b7f04897c24045f5a8b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893e6a01ff74240489742408e95e010000f400|@19697,1,@4512|65,0,@9311 100,0,@9312 114,0,@19692 174,1,@9315 9311:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4506|59,0,0 95,0,0 9312:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4507|59,0,0 95,0,0 9313:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4508|11,0,0 9314:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4509|11,0,0 9315:D3,4292|3b650c7305ff552ccd0953ff308b50048b7008ff700c8b78108b4c24148b198b4c24148b41048b4d008d49f43b4d087305ff5528cdcd894d00c741fc020000008941048919518b4c240c83f9017f0c8d642410b8bc5466b1c2080083fa0375718b7424088b168d14550100000083fa017f0e8d642410b8a01e66b18b5d04ff2389f60fb676048d34750100000081fe83000000720a81feb50000007702eb1281fec3000000721181fef50000007602eb07ba03000000eb1183fe4f7507ba03000000eb05ba0100000083f202e9fa0c0000f6c20175718b7424088b168d14550100000083fa017f0e8d642410b8a01e66b18b5d04ff2389f60fb676048d34750100000081fe83000000720a81feb50000007702eb1281fec3000000721181fef50000007602eb07ba03000000eb1183fe4f7507ba03000000eb05ba0100000083f202e98f09000083fa017505e93f0600008b1683fa0375328b76048b1683fa0d75218b56048b75008d76f83b75087305ff5528cd84897500c746fc010000008916eb05be01000000eb05be01000000f7c60100000075278b068b7424088b368d34750100000083fe017f0e8d642410b8a01e66b18b5d04ff23e9770300008b7424088b168d14550100000083fa017f0e8d642410b8a01e66b18b5d04ff2389f60fb676048d34750100000081fe83000000720a81feb50000007702eb1281fec3000000721181fef50000007602eb07ba03000000eb1183fe4f7507ba03000000eb05ba0100000083f202f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b7f048b75008d76f43b75087305ff5528cd84897500c746fc02000000897e04c706010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c74704010000008937eb05bf010000008b75008d76f43b75087305ff5528cd84897500c746fc020000008b4c2408894e04c706070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089318b75008d76e83b75087305ff5528cd86897500c746fc05000000894e10897e0cc7460801000000c7460401000000c706010000008b7d008d7ff03b7d087305ff5528cd44897d00c747fc03000000c7470801000000895704c707030000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742041cab69b1893a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70774fc67b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c7470401000000893757b801000000e839a9f1ff89c7ba48f167b18b74241857ff742408568b4424148b5c241ce81bb5f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000897b04c703545566b183fb0175065f83c410eb0e8b0424e8e40b000089c78d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c20800f7c70100000075388b178b77048b0a83f901751e8b7d008d7ff83b7d087305ff5528cd05897d00c747fc010000008917eb1389f73b650c7305ff552ccd81ebc0bf01000000f7c70100000075698b1789d68b1283fa017507ba03000000eb05ba0100000083fa03754d89f78b77048b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc020000008b542408895704c707070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c746047cea68b1893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c70674fc67b18b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057ff7424108b5c240ce8e3f1ffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747041cab69b189378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404e9e0fcfffff7c70100000075388b178b77048b0a83f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebc0bf01000000f7c70100000075698b1789d68b1283fa017507ba03000000eb05ba0100000083fa03754d89f78b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542408895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d4f967b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b442408e8bc17eeff89c78b3783fe0575218b77048b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb05bf01000000f7c7010000000f85be000000ff37b801000000e8f9a3f1ff89c7ba48f167b18b74241c57ff74240c568b44240c8b5c2420e8dbaff1ff89c68d6424048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706906a68b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707f4f667b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706c8fc67b1eb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c410c20800f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2408894f04c707070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089770cc7470801000000c7470401000000c707010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c706030000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742041cab69b189328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706bcf168b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057b801000000e8b0a0f1ff89c7ba48f167b18b74241857ff742408568b4424148b5c241ce892acf1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c20800f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd06897d00c747fc01000000890feb1389f73b650c7305ff552ccd84ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008b4c2408894f04c707070000008b4d008d49f43b4d087305ff5528cdc4894d00c741fc02000000c741040100000089398b7d008d7fe83b7d087305ff5528cd46897d00c747fc05000000894f1089770cc7470801000000c7470401000000c707010000008b75008d76f03b75087305ff5528cd84897500c746fc03000000c7460801000000895604c706030000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c742041cab69b189328b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c70674fc67b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057b801000000e8bb9df1ff89c7ba48f167b18b74241857ff742408568b4424148b5c241ce89da9f1ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424148b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400407000000c70001000000c20800f4000000|@19696,1,@4511|84,0,@10437 119,0,@9847 143,0,65 151,0,90 161,0,97 169,0,122 178,0,1 190,0,1 197,0,0 237,0,@9847 261,0,65 269,0,90 279,0,97 287,0,122 296,0,1 308,0,1 315,0,0 388,0,0 395,0,0 432,0,@9847 469,0,@9847 493,0,65 501,0,90 511,0,97 519,0,122 528,0,1 540,0,1 547,0,0 619,0,0 643,0,1 650,0,0 695,0,0 728,0,0 737,0,0 776,0,3 809,0,0 850,0,0 857,0,0 863,0,0 896,0,0 905,0,1 938,0,@19695 1006,0,@10448 1041,0,@15061 1077,0,0 1084,0,0 1091,0,0 1097,0,0 1130,0,0 1138,0,0 1143,1,@7128 1150,0,@14942 1173,1,@7139 1208,0,0 1245,0,@10448 1264,1,@9316 1306,0,0 1313,0,0 1320,0,3 1326,0,0 1398,0,0 1422,0,1 1429,0,0 1474,0,0 1507,0,0 1516,0,0 1555,0,3 1588,0,0 1629,0,0 1636,0,0 1642,0,0 1675,0,@17837 1712,0,@10448 1747,0,@15061 1783,0,0 1790,0,0 1797,0,0 1803,0,0 1817,1,@9305 1852,0,@19695 1889,0,@10448 2001,0,0 2025,0,1 2032,0,0 2077,0,0 2110,0,0 2119,0,0 2158,0,3 2191,0,0 2232,0,0 2239,0,0 2245,0,0 2278,0,0 2315,0,@10448 2350,0,@15031 2386,0,0 2393,0,0 2400,0,0 2406,0,0 2416,1,@6635 2463,0,0 2482,0,0 2487,1,@7128 2494,0,@14942 2517,1,@7139 2556,0,0 2593,0,@16528 2628,0,@15002 2663,0,@15065 2670,0,0 2744,0,0 2751,0,0 2758,0,0 2764,0,0 2839,0,0 2863,0,1 2870,0,0 2915,0,0 2948,0,0 2957,0,0 2996,0,3 3029,0,0 3070,0,0 3077,0,0 3083,0,0 3116,0,0 3125,0,1 3158,0,@19695 3226,0,@10448 3261,0,@17902 3297,0,0 3304,0,0 3311,0,0 3317,0,0 3323,0,0 3328,1,@7128 3335,0,@14942 3358,1,@7139 3393,0,0 3430,0,@10448 3504,0,0 3511,0,0 3518,0,3 3524,0,0 3596,0,0 3620,0,1 3627,0,0 3672,0,0 3705,0,0 3714,0,0 3753,0,3 3786,0,0 3827,0,0 3834,0,0 3840,0,0 3873,0,0 3882,0,1 3915,0,@19695 3983,0,@10448 4018,0,@15061 4054,0,0 4061,0,0 4068,0,0 4074,0,0 4080,0,0 4085,1,@7128 4092,0,@14942 4115,1,@7139 4150,0,0 4187,0,@10448 4261,0,0 4268,0,0 4275,0,3 4281,0,0 9316:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4510| 9317:D3,212|3b650c7305ff552ccd01ff30ff70048b78086a016a01f7c70100000075518b178b75008d76f43b75087305ff5528cd04897500c746fc02000000895604c70664ab48b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704c707e0ab48b1893424897c2404eb11bfacab69b18b378934248b7f04897c24045e5a8b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000895704893757b801000000e8cc9bf1ff89c6b948f167b18b4424088b5c24045a8d642408526a01ff74240889ca8974240ce9a6a7f1fff400|@19703,1,@4517|63,0,@9318 98,0,@9319 112,0,@19700 163,0,0 168,1,@7128 175,0,@14942 206,1,@7139 9318:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4513|59,0,0 95,0,0 9319:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4514|59,0,0 95,0,0 9320:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4515|11,0,0 9321:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4516|11,0,0 9322:D3,16|3b650c7305ff552ccd018b400cc3f400|@19706,1,@4518| 9323:D3,64|3b650c7305ff552ccd018b780483ff0575218b700889f78b3683fe037507be03000000eb05be0100000083fe0375048b4704c3b860ac69b18b5d04ff23f40000|@19712,1,@4519|31,0,1 38,0,0 52,0,@19709 9324:D3,100|3b650c7305ff552ccd018b700c8b40108b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c7071b00000057e85ff9f5ff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3f400|@19715,1,@4520|47,0,13 53,1,@7659 9325:D3,48|3b650c7305ff552ccd018b7804f7c7010000007506b803000000c383ff017506b803000000c3b801000000c3f4000000|@19718,1,@4521|22,0,1 33,0,1 39,0,0 9326:D3,32|3b650c7305ff552ccd018b780483ff017506b803000000c3b801000000c3f400|@19721,1,@4522|19,0,1 25,0,0 9327:D3,16|3b650c7305ff552ccd018b388b07c3f4|@19724,1,@4523| 9328:D3,184|3b650c7305ff552ccd0189c78b078b5f048b7f086a016a01f7c70100000075518b178b75008d76f43b75087305ff5528cd0d897500c746fc02000000895604c70604af48b18b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704c70780af48b1893424897c2404eb11bf2cae69b18b378934248b7f04897c24045f5a8b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893eba68ea68b16a01ff74240489742408e901ccf9fff4|@19729,1,@4528|65,0,@9329 100,0,@9330 114,0,@19726 164,0,@17836 179,1,@8144 9329:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4524|59,0,0 95,0,0 9330:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4525|59,0,0 95,0,0 9331:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4526|11,0,0 9332:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4527|11,0,0 9333:D3,24|3b650c7305ff552ccd018b388b4708e95cf6f5fff4000000|@19731,1,@4529|16,1,@7659 9334:D3,16|3b650c7305ff552ccd018b00c3f40000|@19733,1,@4530| 9335:D3,36|3b650c7305ff552ccd0189c78b078b5f048b7708ff342489742404e918000000f4000000|@19748,1,@4546|28,1,@9336 9336:D3,952|3b650c7305ff552ccd096a016a018b7c240cf7c70100000075558b7c240c8b178b75008d76f43b75087305ff5528cd0d897500c746fc02000000895604c706a0b448b18b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704c7071cb548b1893424897c2404eb11bf18af69b18b378934248b7f04897c24045e5a8b7d008d7ff43b7d087305ff5528cd4d897d00c747fc020000008957048937578b10ff70088b780c83fb017f0c8d642408b8bc5466b1c20400f7c70100000075388b0f8b77048b0183f801751e8b7d008d7ff83b7d087305ff5528cd0e897d00c747fc01000000890feb1389f73b650c7305ff552ccd8cebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc8895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd4c897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd88897500c746fc02000000c7460434af69b1893e8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706d0fd67b18b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000005783eb02710e8d64240cb8f80466b18b5d04ff238b4424048b500481fa100666b17502eb238b3a8d3c7d0100000083ff017526bf100666b18d72048d7f0433c93bc9f3a67402eb116a03ff74240c6a01e82e02000089c6eb238b75008d76f43b75087305ff5528cd04897500c746fc02000000895604c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c408c20400f4|@19747,1,@4545|63,0,@9337 98,0,@9338 112,0,@19735 180,0,@10437 252,0,0 276,0,1 283,0,0 328,0,0 361,0,0 370,0,0 405,0,3 438,0,0 479,0,0 486,0,0 492,0,0 525,0,@19738 562,0,@10448 597,0,@15078 633,0,0 640,0,0 647,0,0 653,0,0 668,0,@9455 686,0,@9473 709,0,@9473 738,1,@9341 777,0,3 810,0,0 847,0,@10826 921,0,0 928,0,0 935,0,0 941,0,0 9337:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4531|59,0,0 95,0,0 9338:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4532|59,0,0 95,0,0 9339:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4533|11,0,0 9340:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4534|11,0,0 9341:D3,660|3b650c7305ff552ccd0953ff30ff70108b7c2414ff378b7c2418ff7704ba3c4966b18b44240ce85196dfff89c68b7e208b4e308b742418f7c601000000754e8b7424188b368b55008d52f03b55087305ff5528cdc2895500c742fc030000008972088b742408897204c70290b848b18b75008d76f83b75087305ff5528cd86897500c746fc010000008916eb208b75008d76f83b75087305ff5528cd82897500c746fc010000008b5424088916568b75008d76ec3b75087305ff5528cd82897500c746fc04000000897e0c8b7c2408897e088b142489d7895604c706c4b848b18b55008d52ec3b55087305ff5528cdc2895500c742fc04000000894a0c8b4c2404894a0889ff897a04c70258b948b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c241c83ff037f0e8d642420b874af69b1e9c7000000be010000008b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000408937578b7d008d7ff43b7d087303ff5528897d00c747fc020000008b3424897704c707ecb948b1578b442420bb01000000e87573dfff8b3c248b078d642404bb80af69b1e802aee2ff89c7576a01f644240401754f8b7424048b3e89f6ff76048b078b5f04ff742428ff742414ff74241cff742418e8710300008b74240489f783fe01750489c2eb0989fbe8770e000089c25e891424897424043b650c7303ff552cebaa5883c424e8be0e000089c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c70724fe67b18b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400803000000c7400401000000c70001000000c20c00f400|@19746,1,@4544|30,0,@10267 39,1,@4989 107,0,@9342 220,0,@9343 267,0,@9344 349,0,@19740 359,0,0 424,0,@9345 434,0,0 439,1,@4949 453,0,@19741 458,1,@5475 507,1,@9348 529,1,@9349 558,1,@9350 595,0,@15081 631,0,0 638,0,1 645,0,0 651,0,0 9342:D3,32|3b650c7305ff552ccd058b5a048b7208ff342489742404e9483beefff4000000|@13922,1,@4535|24,1,@6694 9343:D3,128|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1289c7f7c701000000754c8d6424048b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248b52048d64240489570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7c24048b5708588d642404ff22f4000000|@19739,1,@4536| 9344:D3,128|3b650c7305ff552ccd0552508b7c24048b570c8b0424ff1289c7f7c701000000754c8d6424048b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b14248b52048d64240489570489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7c24048b5708588d642404ff22f4000000|@19739,1,@4537| 9345:D3,132|3b650c7305ff552ccd0d50ff742408f6c30175678b3bff73048b4d008d49f43b4d087305ff5528cd8c894d00c741fc020000008979048b7c240889398b7a0489fe8b078b7d008d7ff43b7d087305ff5528cd4f897d00c747fc02000000894704890f893ebe010000005989cb8934243b650c7305ff552ccd0ceb945883c404c20400f400|@10026,1,@4538|101,0,0 9346:D3,52|3b650c7305ff552ccd0189c78b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700ccba48b1c3f4000000|@19743,1,@4540|43,0,@9347 9347:D3,120|3b650c7305ff552ccd058b388b72048b368b168d1455010000008b0f8d1c4d010000003bd3730489d1eb0289d98d76048d7f04d1e93bc9f3a672107707bf01000000eb0cbf03000000eb05bfffffffff83ff0175103bd37606b803000000c3b801000000c383ff017e06b803000000c3b801000000c3f400|@19742,1,@4539|62,0,0 69,0,1 76,0,-1 90,0,1 96,0,0 107,0,1 113,0,0 9348:D3,2824|3b650c7305ff552ccd098b3389f781fea400c0b0754e81ffa400c0b0753c8b43088b7c241083ef0257710e8d642404b8f80466b18b5d04ff238b50048b780c8b342483fe017f0e8d642404bebc5466b1e9660a0000e9d0070000b8483366b18b5d04ff2389fe81ffac00c0b0754881feac00c0b075368b7b088b5c241083eb02710ab8f80466b18b5d04ff238b17ff77088b7f0c83fb017f0e8d642404bebc5466b1e93a070000e936040000b8483366b18b5d04ff2389f781fe9c00c0b0757881ff9c00c0b075668b4308ba68ea68b18b5c24108b7c24048b7424085756e8b5bef9ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700786d66b1c21000b8483366b18b5d04ff2389fe81ff9400c0b00f858600000081fe9400c0b075748b43088b7804f7c7010000007508b801000000c210008b5c24108b7c240c8b7424085756e871dcffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700786d66b1c21000b8483366b18b5d04ff2389f781fe8c00c0b00f850003000081ff8c00c0b00f85ea0200008b7b08ff378b7f048b1789d683fa030f85dd0000008b4704ba803066b1bb03000000e8e3a2ddff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dcf867b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c70601000000e9e800000083fe010f85da0000008b4704ba803066b1bb03000000e8fda1ddff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e8f867b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c70601000000eb05bef4f867b18b55008d52f43b55087305ff5528cd40895500c742fc020000008b3c24897a048d642404c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700786d66b1c21000b8483366b18b5d04ff23b801000000c21000f7c70100000075388b0f8b77048b0183f801751e8b7d008d7ff83b7d087305ff5528cd0e897d00c747fc01000000890feb1389f73b650c7305ff552ccd8cebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd8c897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd4c897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc8895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd4c897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd88897500c746fc02000000c7460434af69b1893e8b7d008d7ff43b7d087305ff5528cd48897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd88897500c746fc02000000897e04c706d0fd67b18b7d008d7fe83b7d087305ff5528cd48897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000005783eb02710e8d642408b8f80466b18b5d04ff238b4424048b500481fa100666b17502eb238b3a8d3c7d0100000083ff01752cbf100666b18d72048d7f0433c93bc9f3a67402eb17bae0af69b18b7c24148b7424106a035756ff1289c6eb238b75008d76f43b75087305ff5528cd04897500c746fc02000000895604c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424048b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c7060100000083c4048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700786d66b1c21000f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd07897d00c747fc01000000890feb1389f73b650c7305ff552ccd85ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c746047cea68b1893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706740068b18b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c7070100000057bae0af69b18b7c24146a03576a018b5c2410ff1289c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d6424088b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f43b45087305ff5528cd80894500c740fc02000000897804c700786d66b1c21000f4000000|@19745,1,@4541|16,0,@4615 24,0,@4615 48,0,@9455 76,0,@10437 91,0,@9999 104,0,@4616 112,0,@4616 131,0,@9455 158,0,@10437 173,0,@9999 186,0,@4614 194,0,@4614 204,0,@17836 223,1,@8144 258,0,0 295,0,@10826 303,0,@9999 316,0,@4613 328,0,@4613 349,0,0 371,1,@9315 406,0,0 443,0,@10826 451,0,@9999 464,0,@4612 476,0,@4612 511,0,@9967 516,0,1 521,1,@4896 558,0,3 591,0,0 628,0,@10448 663,0,@15021 699,0,0 706,0,0 713,0,0 719,0,0 741,0,@9967 746,0,1 751,1,@4896 788,0,3 821,0,0 858,0,@10448 893,0,@15022 929,0,0 936,0,0 943,0,0 949,0,0 956,0,@15023 998,0,3 1031,0,0 1068,0,@10448 1135,0,0 1142,0,0 1149,0,0 1155,0,0 1188,0,0 1225,0,@10826 1233,0,@9999 1243,0,0 1315,0,0 1339,0,1 1346,0,0 1391,0,0 1424,0,0 1433,0,0 1468,0,3 1501,0,0 1542,0,0 1549,0,0 1555,0,0 1588,0,@19738 1625,0,@10448 1660,0,@15078 1696,0,0 1703,0,0 1710,0,0 1716,0,0 1731,0,@9455 1749,0,@9473 1772,0,@9473 1793,0,@19744 1846,0,3 1879,0,0 1916,0,@10826 1990,0,0 1997,0,0 2004,0,0 2010,0,0 2046,0,0 2083,0,@10826 2155,0,0 2179,0,1 2186,0,0 2231,0,0 2264,0,0 2273,0,0 2308,0,3 2341,0,0 2382,0,0 2389,0,0 2395,0,0 2428,0,@17837 2465,0,@10448 2500,0,@15101 2536,0,0 2543,0,0 2550,0,0 2556,0,0 2562,0,@19744 2612,0,0 2649,0,@10826 2723,0,0 2730,0,0 2737,0,0 2743,0,0 2776,0,0 2813,0,@10826 9349:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4542| 9350:D3,72|3b650c7305ff552ccd01a8017533ff308b4004e8e8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3b8e87466b1c3f4|@10825,1,@4543|66,0,@10946 9351:D3,36|3b650c7305ff552ccd018b78048b3783fe0375048b4704c3b8c4b069b18b5d04ff23f400|@19753,1,@4547|25,0,@19750 9352:D3,20|3b650c7305ff552ccd018b400ce93edff5fff400|@19755,1,@4548|14,1,@7659 9353:D3,332|8dbc247cffffff3b7d0c7305ff5530cd016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a0189e3e824010000ff3424ff742408ff742410ff742418ff742420ff742428ff742430ff742438ff742440ff742448ff742450ff742458ff742460ff7424688b7c24708b7424748b5424788b4c247c8b5d008d5bb43b5d087305ff5528cdc6895d00c743fc12000000538b1c24894b448b0c248951408b142489723c8b3424897e388b34248b7c2404897e348b34248b7c2408897e308b7c240c8b3424897e2c8b7c24108b3424897e288b7c24148b3424897e248b7c24188b3424897e208b7c241c8b3424897e1c8b7c24208b3424897e188b7c24248b3424897e148b7c24288b3424897e108b7c242c8b3424897e0c8b7c24308b3424897e088b7c24348b3424897e048b7c24388b3424893e588da42480000000c3f400|@19779,1,@4569|56,1,@9354 9354:D3,372|3b650c7305ff552ccd098b78088b0f8b7d008d7ff03b7d087305ff5528cd0b897d00c747fc03000000894f08894704c7077cca48b1578b7d008d7ff03b7d087305ff5528cd0b897d00c747fc03000000894f08894704c7076ccb48b1578b7d008d7ff03b7d087305ff5528cd0b897d00c747fc03000000894f08894704c7071ccd48b1578b55008d52f03b55087305ff5528cd0b895500c742fc03000000894a08894204c7020cce48b18b75008d76f03b75087305ff5528cd0f897500c746fc03000000894e08894604c706a8cf48b18b7d008d7ff03b7d087305ff5528cd4f897d00c747fc03000000894f08894704c70704d248b1c7035cb369b1c74304a4b369b189530889730cc74310acb369b1c74314b4b369b1c74318b4b369b1c7431cb4b369b1897b20c74324b4b369b1c7432864b469b1c7432c6cb469b18b7c2408897b30c74334b4b369b18b7c2404897b38c7433cb4b369b1c7434074b469b18b3c24897b448d64240cb801000000c3f4000000|@19778,1,@4568|49,0,@9355 88,0,@9356 127,0,@9357 166,0,@9358 204,0,@9361 242,0,@9364 248,0,@19766 255,0,@19768 268,0,@19769 275,0,@19770 282,0,@19770 289,0,@19770 299,0,@19770 306,0,@19775 313,0,@19776 327,0,@19770 341,0,@19770 348,0,@19777 363,0,0 9355:D3,220|3b650c7305ff552ccd0589c7528b34248b460889fbe85641dfff89c7f7c70100000075048b3feb47bf01000000f7c70100000075308b078b3c248b5f048d642404e8fefbf4ff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f7c70100000075588b178b77048b1a89d981fb9400c0b0753989cf81ff9400c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642404b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e954fffffff40000|@19757,1,@4549|22,1,@4911 41,0,0 66,1,@7503 106,0,0 130,0,@4613 140,0,@4613 184,0,@9999 208,0,0 9356:D3,412|3b650c7305ff552ccd0589c7528b34248b460889fbe86640dfff89c7f7c70100000075078b3fe906010000bf01000000f7c7010000000f85eb000000ff378b7c24048b570489d68b5208ff721089f78b3f8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f878900000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b4424088b5c2404e899bff2ff89c78d6424088b45008d40f83b45087305ff5528cd80894500c740fc01000000893883c404c38d64240cb8780566b18b5d04ff238d642404b801000000c3f7c70100000075588b178b77048b1a89d981fb9c00c0b0753989cf81ff9c00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642404b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e995fefffff4|@19758,1,@4550|22,1,@4911 44,0,0 96,0,@9551 113,0,4 134,0,16777215 192,0,0 239,1,@7288 286,0,@9465 300,0,0 324,0,@4614 334,0,@4614 378,0,@9999 402,0,0 9357:D3,220|3b650c7305ff552ccd0589c7528b34248b460889fbe8b63edfff89c7f7c70100000075048b3feb47bf01000000f7c70100000075308b078b3c248b5f048d642404e8e2baf2ff89c78b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38d642404b801000000c3f7c70100000075588b178b77048b1a89d981fbac00c0b0753989cf81ffac00c0b075218b72088b7d008d7ff83b7d087305ff5528cd40897d00c747fc010000008937eb218d642404b8483366b18b5d04ff2389f73b650c7305ff552ccd80eba0bf01000000e954fffffff40000|@19759,1,@4551|22,1,@4911 41,0,0 66,1,@7285 106,0,0 130,0,@4616 140,0,@4616 184,0,@9999 208,0,0 9358:D3,48|3b650c7305ff552ccd05528b3c248b4708686cb269b1bb01000000e8ec5cdfff8b3c248b5f048d642404e9cd000000f4|@19761,1,@4554|18,0,@19760 23,0,0 28,1,@4949 43,1,@9360 9359:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99400c0b0755c81fa9400c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4552|35,0,@4613 43,0,@4613 124,0,@9999 9360:D3,140|3b650c7305ff552ccd0953a80175728b38ff7004ff378b47048b5c2408e896f7f4ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b4424048b5c2408e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4|@10030,1,@4553|30,1,@7503 134,0,0 9361:D3,48|3b650c7305ff552ccd05528b3c248b470868bcb269b1bb01000000e8505bdfff8b3c248b5f048d642404e9cd000000f4|@19763,1,@4557|18,0,@19762 23,0,0 28,1,@4949 43,1,@9363 9362:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f99c00c0b0755c81fa9c00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4555|35,0,@4614 43,0,@4614 124,0,@9999 9363:D3,332|3b650c7305ff552ccd0953a8010f852b0100008b38ff7004ff37ff77048b7c240c8b7708ff761089ff8b3f8b378d1c750100000083fb017507bf500e66b1eb7f89de83c60289f083c00eb909000000d1e8d1e933d2f7f18d0c450100000081f9ffffff010f87c600000089c88d144502000000f7da0355003b550872053b55007205ff5528cdca895500d1e88942fcc642ff4183e902c7444afe00000000d1ee893289d98d77048d7a04d1e9f3a489df83c708d1efc6043a2e8062ffbf89d7578b4424088b5c2404e887baf2ff89c68d6424088b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b4424048b5c2408e8f9feffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642414b8780566b18b5d04ff238d642404b801000000c3f4000000|@10030,1,@4556|58,0,@9551 75,0,4 96,0,16777215 154,0,0 201,1,@7288 309,0,@9465 323,0,0 9364:D3,48|3b650c7305ff552ccd05528b3c248b4708680cb369b1bb01000000e8f458dfff8b3c248b5f048d642404e9cd000000f4|@19765,1,@4560|18,0,@19764 23,0,0 28,1,@4949 43,1,@9366 9365:D3,164|3b650c7305ff552ccd09508b442408f6c3010f85820000008b338b7b048b0e89ca81f9ac00c0b0755c81faac00c0b075468b76088b55008d52f43b55087305ff5528cdc9895500c742fc020000008972048b342489328b75008d76f43b75087305ff5528cd8d897500c746fc020000008946048916eb108d642404b8483366b18b5d04ff2389c689f089fb3b650c7305ff552ccd09e975ffffff8d642404c20400f40000|@10026,1,@4558|35,0,@4616 43,0,@4616 124,0,@9999 9366:D3,140|3b650c7305ff552ccd0953a80175728b38ff7004ff378b47048b5c2408e822b5f2ff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d642404578b4424048b5c2408e8a8ffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d64240cc38d642404b801000000c3f4|@10030,1,@4559|30,1,@7285 134,0,0 9367:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4561|11,0,0 9368:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4562|11,0,0 9369:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4563|11,0,0 9370:D3,24|3b650c7305ff552ccd01b8bcb369b18b5d04ff23f4000000|@19774,1,@4564|11,0,@19771 9371:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4565|11,0,0 9372:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4566|11,0,0 9373:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19767,1,@4567|11,0,0 9374:D3,16|3b650c7305ff552ccd018b4004c3f400|@19782,1,@4570| 9375:D3,848|3b650c7305ff552ccd0189c78b07ff77048b7f086a016a01f7c70100000075518b178b75008d76f43b75087305ff5528cd05897500c746fc02000000895604c70644d848b18b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707c0d848b1893424897c2404eb11bf48b569b18b378934248b7f04897c24045e5a8b7d008d7ff43b7d087305ff5528cd45897d00c747fc020000008957048937578b50048b780c8b74240483fe017f0a8d642408b8bc5466b1c3f7c70100000075388b0f8b77048b1983fb01751e8b7d008d7ff83b7d087305ff5528cd07897d00c747fc01000000890feb1389f73b650c7305ff552ccd85ebc0bf01000000f7c70100000075698b0f89ce8b0983f9017507b903000000eb05b90100000083f903754d89f78b77048b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd85897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd45897d00c747fc02000000895704c707070000008b55008d52f43b55087305ff5528cdc1895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd45897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd81897500c746fc02000000c746047cea68b1893e8b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd81897500c746fc02000000897e04c706740068b18b7d008d7fe83b7d087305ff5528cd41897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000576a03ff7424086a018b5c2414e863deffff89c68b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706786d66b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977048b342489378d64240c8b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f4000000|@19787,1,@4575|65,0,@9376 100,0,@9377 114,0,@19784 184,0,@10437 254,0,0 278,0,1 285,0,0 330,0,0 363,0,0 372,0,0 407,0,3 440,0,0 481,0,0 488,0,0 494,0,0 527,0,@17837 564,0,@10448 599,0,@15101 635,0,0 642,0,0 649,0,0 655,0,0 673,1,@9341 708,0,0 745,0,@10826 819,0,0 826,0,0 833,0,0 839,0,0 9376:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4571|59,0,0 95,0,0 9377:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4572|59,0,0 95,0,0 9378:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4573|11,0,0 9379:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4574|11,0,0 9380:D3,20|3b650c7305ff552ccd018b400ce91ecdf5fff400|@19789,1,@4576|14,1,@7659 9381:D3,16|3b650c7305ff552ccd018b4004c3f400|@19791,1,@4577| 9382:D3,176|3b650c7305ff552ccd0189c78b078b5f048b7f086a016a01f7c70100000075518b178b75008d76f43b75087305ff5528cd0d897500c746fc02000000895604c7069cda48b18b7d008d7ff43b7d087305ff5528cd4d897d00c747fc02000000895704c70718db48b1893424897c2404eb11bf24b669b18b378934248b7f04897c24045f5a8b75008d76f43b75087305ff5528cd8d897500c746fc02000000895604893eff342489742404e95d010000f4|@19804,1,@4587|65,0,@9383 100,0,@9384 114,0,@19793 171,1,@9387 9383:D3,104|3b650c7305ff552ccd058b7a048b5738ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4578|59,0,0 95,0,0 9384:D3,104|3b650c7305ff552ccd058b7a048b5744ff1289c7f7c70100000075428b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c3b801000000c3f4000000|@19691,1,@4579|59,0,0 95,0,0 9385:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4580|11,0,0 9386:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@19691,1,@4581|11,0,0 9387:D3,1756|3b650c7305ff552ccd0953ff30ff7004ff700cff70108b7c241083ff017f0c8d642414b8bc5466b1c204008b7c240c8b4708ff308b7c2410ff378b3c2481ff100666b17502eb278b3c248b3f8d3c7d0100000083ff017520bf100666b18b34248d76048d7f0433c93bc9f3a6750abf01000000e9a40000008b75008d76f43b75087305ff5528cd01897500c746fc020000008b3c24897e04c706070000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c7470434af69b189378b75008d76e83b75087305ff5528cd81897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c706010000008b7d008d7ff43b7d087305ff5528cd41897d00c747fc02000000c74704e0ef67b18937578b5c241c83eb02710e8d642420b8f80466b18b5d04ff238b500481fa100666b17502eb238b3a8d3c7d0100000083ff017527bf100666b18d72048d7f0433c93bc9f3a67402eb128b7c24246a01576a01e892d8ffff89c7eb238b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000895704c707070000008b5d008d5bf43b5d087305ff5528cd80895d00c743fc02000000c7430440b669b1893b83fb0175035feb0e8b0424e82405000089c78d642404578b7c240481ff100666b17502eb328b7c24048b3f8d3c7d0100000083ff010f85a7000000bf100666b18b7424048d76048d7f0433c93bc9f3a67405e98b000000ba3c4966b18b442408e85f6edfff89c78b57208b4f308b7c24248b75008d76f03b75087305ff5528cd86897500c746fc03000000895608897e04c70638e348b18b7c24248b55008d52f03b55087305ff5528cdc2895500c742fc03000000894a08897a04c702c8e348b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937eb5a8b7c24248b378b7c24248b55008d52ec3b55087305ff5528cdc0895500c742fc040000008b4c2404894a0c897a088b7c2418897a04c70258e448b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc020000008957048937578b7c2410f7c70100000075388b178b77048b0a83f901751e8b7d008d7ff83b7d087305ff5528cd04897d00c747fc010000008917eb1389f73b650c7305ff552ccd80ebc0bf01000000f7c70100000075698b1789d68b1283fa017507ba03000000eb05ba0100000083fa03754d89f78b77048b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c7460401000000893eeb05be010000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008b542418895704c707070000008b55008d52f43b55087305ff5528cdc0895500c742fc02000000c7420401000000893a8b7d008d7fe83b7d087305ff5528cd44897d00c747fc0500000089571089770cc7470801000000c7470401000000c707010000008b75008d76f43b75087305ff5528cd80897500c746fc02000000c74604a0b669b1893e8b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707545566b18b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706280068b18b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c707010000008b55008d52e83b55087305ff5528cd80895500c742fc050000008b742404897210c7420c01000000c7420801000000c7420401000000c702010000008b75008d76f43b75087305ff5528cd84897500c746fc02000000c746040100000089168b55008d52f43b55087305ff5528cdc0895500c742fc02000000897204c702d47166b18b75008d76f43b75087305ff5528cd84897500c746fc02000000895604893e8b7d008d7fe83b7d087305ff5528cd40897d00c747fc05000000897710c7470c01000000c7470801000000c7470401000000c70701000000578b5c242483eb02710e8d642428b8f80466b18b5d04ff238b7c24188b570481fa100666b17502eb238b3a8d3c7d0100000083ff01752abf100666b18d72048d7f0433c93bc9f3a67402eb156a03ff7424086a018b442424e8f7d3ffff89c6eb238b75008d76f43b75087305ff5528cd04897500c746fc02000000895604c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706d47166b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc020000008977045e89378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c7000100000083c424c20400f4000000|@19803,1,@4586|36,0,@10437 63,0,@9473 89,0,@9473 111,0,0 154,0,3 187,0,@19738 225,0,0 232,0,0 239,0,0 245,0,0 278,0,@14923 299,0,@9455 313,0,@9473 336,0,@9473 366,1,@9341 405,0,3 438,0,@19796 456,1,@9388 473,0,@9473 504,0,@9473 532,0,@10267 541,1,@4989 591,0,@9389 633,0,@9390 725,0,@9391 830,0,0 854,0,1 861,0,0 906,0,0 939,0,0 948,0,0 987,0,3 1020,0,0 1061,0,0 1068,0,0 1074,0,0 1107,0,@19801 1144,0,@10448 1179,0,@15098 1215,0,0 1222,0,0 1229,0,0 1235,0,0 1275,0,0 1282,0,0 1289,0,0 1295,0,0 1328,0,0 1365,0,@10895 1432,0,0 1439,0,0 1446,0,0 1452,0,0 1471,0,@9455 1489,0,@9473 1512,0,@9473 1545,1,@9341 1584,0,3 1617,0,0 1654,0,@10895 1722,0,0 1729,0,0 1736,0,0 1742,0,0 9388:D3,80|3b650c7305ff552ccd0989c789d8f7c7010000007537ff378b7f0489c389f8e8dcffffff89c78b45008d40f43b45087305ff5528cd80894500c740fc020000008978048b3c2489388d642404c3c3f400|@10825,1,@4582| 9389:D3,124|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c7f7c70100000075468d6424088b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7c24048b7f048b17588d642404ff22f4000000|@19800,1,@4583|69,0,0 9390:D3,124|3b650c7305ff552ccd0552508b7c24048b57088b0424ff1289c7f7c70100000075468d6424088b378b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7c24048b7f048b5704588d642404ff22f40000|@19800,1,@4584|69,0,0 9391:D3,140|3b650c7305ff552ccd058b7a0c89f93bc77502eb2a8b388d347d0100000089cf8b098d0c4d010000003bf1755589fe8b0e8d70048d7f043bc9f3a67402eb438b7d008d7ff43b7d087305ff5528cd04897d00c747fc02000000c74704010000008b720489378b45008d40f83b45087305ff5528cd80894500c740fc010000008938c38b7a088b5704ff22f400|@19800,1,@4585|92,0,0 9392:D3,36|3b650c7305ff552ccd018b78088b3783fe0375048b4704c3b828b769b18b5d04ff23f400|@19809,1,@4588|25,0,@19806 9393:D3,20|3b650c7305ff552ccd018b4010e97ac1f5fff400|@19811,1,@4589|14,1,@7659 9394:D3,16|3b650c7305ff552ccd018b00c3f40000|@19813,1,@4590| 9395:D3,684|3b650c7305ff552ccd01ff308b78048b1789d683fa030f85dd0000008b4704ba803066b1bb03000000e89e7addff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707dcf867b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c70601000000e9e800000083fe010f85da0000008b4704ba803066b1bb03000000e8b879ddff89c78b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706070000008b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000c747040100000089378b75008d76f43b75087305ff5528cd80897500c746fc02000000897e04c706545566b18b7d008d7ff43b7d087305ff5528cd40897d00c747fc02000000897704c707e8f867b18b75008d76e83b75087305ff5528cd80897500c746fc05000000897e10c7460c01000000c7460801000000c7460401000000c70601000000eb05bef4f867b18b55008d52f43b55087305ff5528cd40895500c742fc020000008b3c24897a048d642404c702070000008b7d008d7ff43b7d087305ff5528cd44897d00c747fc02000000c747040100000089178b55008d52f43b55087305ff5528cdc0895500c742fc02000000897a04c702545566b18b7d008d7ff43b7d087305ff5528cd44897d00c747fc0200000089570489378b45008d40e83b45087305ff5528cd80894500c740fc05000000897810c7400c01000000c7400801000000c7400401000000c70001000000c3f40000|@19815,1,@4591|32,0,@9967 37,0,1 42,1,@4896 79,0,3 112,0,0 149,0,@10448 184,0,@15021 220,0,0 227,0,0 234,0,0 240,0,0 262,0,@9967 267,0,1 272,1,@4896 309,0,3 342,0,0 379,0,@10448 414,0,@15022 450,0,0 457,0,0 464,0,0 470,0,0 477,0,@15023 519,0,3 552,0,0 589,0,@10448 656,0,0 663,0,0 670,0,0 676,0,0 9396:D3,20|3b650c7305ff552ccd01b801000000c3f4000000|@9985,1,@4593|11,0,0 4595:MO1|@9398 4596:MO1|1 4597:MO1|0 4598:MO1|0 4599:MO1|0 4600:MO1|@9450 4601:MO1|@9457 4602:MO1|@9463 4603:MO1|0 4604:MO1|@9760 4605:MO1|@9789 4606:MO1|0 4607:MO1|@9915 4608:MO1|2 4609:MO1|0 4610:MO1|0 4611:MO1|@9979 4612:MO1|@9994 4613:MO1|@9994 4614:MO1|@9994 4615:MO1|@9994 4616:MO1|@9994 4617:MO1|@9994 4618:MO1|@10049 4619:MO1|@9994 4620:MO1|@9994 4621:MO1|1 4622:MO1|@10049 4623:MO1|1 4624:MO1|@10147 4625:MO1|@10191 4626:MO1|@10049 4627:MO1|1 4628:MO1|@10049 4629:MO1|1 4630:MO1|@10049 4631:MO1|1 4632:MO1|@10360 4633:MO1|0 4634:MO1|@10436 4635:MO1|@10423 4636:MO1|1 4637:MO1|@10620 4638:MO1|@10423 4639:MO1|1 4640:MO1|@10423 4641:MO1|@10724 4642:MO1|1 4643:MO1|@9994 4644:MO1|@9994 4645:MO1|@9994 4646:MO1|@9994 4647:MO1|@9994 4648:MO1|@9994 4649:MO1|@9994 4650:MO1|@9994 4651:MO1|@9994 4652:MO1|@9994 4653:MO1|@9994 4654:MO1|@9994 4655:MO1|@9994 4656:MO1|@9994 4657:MO1|@9994 4658:MO1|@9994 4659:MO1|@9994 4660:MO1|@9994 4661:MO1|@9994 4662:MO1|@9994 4663:MO1|@9994 4664:MO1|@9994 4665:MO1|@9994 4666:MO1|0 4667:MO1|0 4668:MO1|0 4669:MO1|@11372 4670:MO1|@11373 4671:MO1|@12888 4672:MO1|@11457 4673:MO1|@11664 4674:MO1|@11665 4675:MO1|@12757 4676:MO1|@12770 4677:MO1|@12787 4678:MO1|@12849 4679:MO1|@12788 4680:MO1|@12807 4681:MO1|@12824 4682:MO1|@12850 4683:MO1|@12860 4684:MO1|@12879 4685:MO1|@9994 4686:MO1|@13044 4687:MO1|0 4688:MO1|@10049 4689:MO1|1 4690:MO1|0 4691:MO1|@10423 4692:MO1|@10724 4693:MO1|1 4694:MO1|@10423 4695:MO1|@10724 4696:MO1|1 4697:MO1|@10049 4698:MO1|1 4699:MO1|0 4700:MO1|0 4701:MO1|0 4702:MO1|0 4703:MO1|@13966 4704:MO1|0 4705:MO1|@14090 4706:MO1|0 4707:MO1|0 4708:MO1|0 4709:MO1|@9994 4710:MO1|@9994 4711:MO1|0 4712:MO1|@9994 4713:MO1|@14733 4714:MO1|0 4715:MO1|@11957 4716:MO1|@14925 4717:MO1|@17986 4718:MO1|0 4719:MO1|@16449 4720:MO1|@15209 4721:MO1|@16335 4722:MO1|@15219 4723:MO1|@15422 4724:MO1|@15220 4725:MO1|@9994 4726:MO1|@15269 4727:MO1|@15359 4728:MO1|@15329 4729:MO1|@15341 4730:MO1|@15388 4731:MO1|@16271 4732:MO1|@15430 4733:MO1|@16172 4734:MO1|@15463 4735:MO1|@15490 4736:MO1|@15688 4737:MO1|@15577 4738:MO1|@15628 4739:MO1|@15665 4740:MO1|@15719 4741:MO1|@15768 4742:MO1|@15844 4743:MO1|@15942 4744:MO1|@15990 4745:MO1|@16083 4746:MO1|@16099 4747:MO1|@16127 4748:MO1|@16156 4749:MO1|@16216 4750:MO1|@16236 4751:MO1|@16346 4752:MO1|@16361 4753:MO1|@16398 4754:MO1|@17429 4755:MO1|@16786 4756:MO1|@16786 4757:MO1|@16335 4758:MO1|@15269 4759:MO1|@15219 4760:MO1|@16907 4761:MO1|@17565 4762:MO1|@17024 4763:MO1|@17229 4764:MO1|@17239 4765:MO1|@17240 4766:MO1|@17241 4767:MO1|@17279 4768:MO1|@17242 4769:MO1|@17260 4770:MO1|@17429 4771:MO1|@17452 4772:MO1|@16907 4773:MO1|@17480 4774:MO1|@17502 4775:MO1|@17518 4776:MO1|@17541 4777:MO1|@17452 4778:MO1|@16346 4779:MO1|@17912 4780:MO1|@18079 4781:MO1|@18154 4782:MO1|@18116 4783:MO1|@18117 4784:MO1|@17024 4785:MO1|@18332 4786:MO1|@18171 4787:MO1|@17229 4788:MO1|@18200 4789:MO1|@18200 4790:MO1|@15359 4791:MO1|@18236 4792:MO1|0 4793:MO1|0 4794:MO1|0 4795:MO1|0 4796:MO1|0 4797:MO1|@18953 4798:MO1|0 4799:MO1|32 4800:MO1|@9473 4801:MO1|48 4802:MO1|0 4803:MO1|41 19862:MVO1|0 19863:MVO1|@9412 19864:MVO1|1 19865:MVO1|1 19866:MVO1|1 19867:MVO1|0 19868:MVO1|0 19869:MVO1|1 19870:MVO1|1 19871:MVO1|@9912 19872:MVO1|1 19873:MVO1|@9935 19874:MVO1|1 19875:MVO1|1 0:MB4|00000000 1:MB4|00000000 2:MB4|00000000 3:MB4096|4372656174656420737472756374757265204d4c436f6d70696c65720a73696f6e0a0a69670a670a540a46554e4354494f4e530a290a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 4:MB4|00000000 5:MB4|00000000 6:MB4|00000000 7:MB4|00000000 8:MB4|00000000 9:MB4|00000000 10:MB4|00000000 11:MB4|00000000 12:MB4|00000000 13:MB4|00000000 14:MB4|00000000 15:MB4|00000000 16:MB4|00000000 17:MB4|00000000 18:MB4|00000000 19:MB4|00000000 20:MB4|00000000 21:MB4|00000000 22:MB4|00000000 23:MB4|00000000 24:MB4|00000000 25:MB4|00000000 26:MB4|00000000 27:MB4|00000000 28:MB4|00000000 29:MB4|00000000 30:MB4|00000000 31:MB4|00000000 32:MB4|00000000 33:MB4|00000000 34:MB4|00000000 35:MB4|00000000 36:MB4|00000000 37:MB4|00000000 38:MB4|00000000 39:MB4|00000000 40:MB4|00000000 41:MB4|00000000 42:MB4|00000000 43:MB4|00000000 44:MB4|00000000 45:MB4|00000000 46:MB4|00000000 47:MB4|00000000 48:MB4|00000000 49:MB4|00000000 50:MB4|00000000 51:MB4|00000000 52:MB4|00000000 53:MB4|00000000 54:MB4|00000000 55:MB4|00000000 56:MB4|00000000 57:MB4|00000000 58:MB4|00000000 59:MB4|00000000 60:MB4|00000000 61:MB4|00000000 62:MB4|00000000 63:MB4|00000000 64:MB4|00000000 65:MB4|00000000 66:MB4|00000000 67:MB4|00000000 68:MB4|00000000 69:MB4|00000000 70:MB4|00000000 71:MB4|00000000 72:MB4|00000000 73:MB4|00000000 74:MB4|00000000 75:MB4|00000000 76:MB4|00000000 77:MB4|00000000 78:MB4|00000000 79:MB4|00000000 80:MB4|00000000 81:MB4|00000000 82:MB4|00000000 83:MB4|00000000 84:MB4|00000000 85:MB4|00000000 86:MB4|00000000 87:MB4|00000000 88:MB4096|20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 89:MB4|00000000 90:MB4|00000000 91:MB4|00000000 92:MB4|00000000 93:MB4|00000000 94:MB4|00000000 95:MB4|00000000 96:MB4|00000000 97:MB4|00000000 98:MB4|00000000 99:MB4|00000000 100:MB4|00000000 101:MB4|00000000 102:MB4|00000000 103:MB4|00000000 104:MB4|00000000 105:MB4|00000000 106:MB4|00000000 107:MB4|00000000 108:MB4|00000000 109:MB4|00000000 110:MB4|00000000 111:MB4|00000000 112:MB4|00000000 113:MB4|00000000 114:MB4|00000000 115:MB4|00000000 116:MB4|00000000 117:MB4|00000000 118:MB4|00000000 119:MB4|00000000 120:MB4|00000000 121:MB4|00000000 122:MB4|00000000 123:MB4|00000000 124:MB4|00000000 125:MB4|00000000 126:MB4|00000000 127:MB4|00000000 128:MB4|00000000 129:MB4|00000000 130:MB4|00000000 131:MB4|00000000 132:MB4|00000000 133:MB4|00000000 134:MB4|00000000 135:MB4|00000000 136:MB4|00000000 137:MB4|00000000 138:MB4|00000000 139:MB4|00000000 140:MB4|00000000 141:MB4|00000000 142:MB4|00000000 143:MB4|00000000 144:MB4|00000000 145:MB4|00000000 146:MB4|00000000 147:MB4|00000000 148:MB4|00000000 149:MB4|00000000 150:MB4|00000000 151:MB4|00000000 152:MB4|00000000 153:MB4|00000000 154:MB4|00000000 155:MB4|00000000 156:MB4|00000000 157:MB4|00000000 158:MB4|00000000 159:MB4|00000000 160:MB4|00000000 161:MB4|00000000 162:MB4|00000000 163:MB4|00000000 164:MB4|00000000 165:MB4|00000000 166:MB4|00000000 167:MB4|00000000 168:MB4|00000000 169:MB4|00000000 170:MB4|00000000 171:MB4|00000000 172:MB4|00000000 173:MB4|00000000 174:MB4|00000000 175:MB4|00000000 176:MB4|00000000 177:MB4|00000000 178:MB4|00000000 179:MB4|00000000 180:MB4|00000000 181:MB4|00000000 182:MB4|00000000 183:MB4|00000000 184:MB4|00000000 185:MB4|00000000 186:MB4|00000000 187:MB4|00000000 188:MB4|00000000 189:MB4|00000000 190:MB4|00000000 191:MB4|00000000 192:MB4|00000000 193:MB4|00000000 194:MB4|00000000 195:MB4|00000000 196:MB4|00000000 197:MB4|00000000 198:MB4|00000000 199:MB4|00000000 200:MB4|00000000 201:MB4|00000000 202:MB4|00000000 203:MB4|00000000 204:MB4|00000000 205:MB4|00000000 206:MB4|00000000 207:MB4|00000000 208:MB4|00000000 209:MB4|00000000 210:MB4|00000000 211:MB4|00000000 212:MB4|00000000 213:MB4|00000000 214:MB4|00000000 215:MB4|00000000 216:MB4|00000000 217:MB4|00000000 218:MB4|00000000 219:MB4|00000000 220:MB4|00000000 221:MB4|00000000 222:MB4|00000000 223:MB4|00000000 224:MB4|00000000 225:MB4|00000000 226:MB4|00000000 227:MB4|00000000 228:MB4|00000000 229:MB4|00000000 230:MB4|00000000 231:MB4|00000000 232:MB4|00000000 233:MB4|00000000 234:MB4|00000000 235:MB4|00000000 236:MB4|00000000 237:MB4|00000000 238:MB4|00000000 239:MB4|00000000 240:MB4|00000000 241:MB4|00000000 242:MB4|00000000 243:MB4|00000000 244:MB4|00000000 245:MB4|00000000 246:MB4|00000000 247:MB4|00000000 248:MB4|00000000 249:MB4|00000000 250:MB4|00000000 251:MB4|00000000 252:MB4|00000000 253:MB4|00000000 254:MB4|00000000 255:MB4|00000000 256:MB4|00000000 257:MB4|00000000 258:MB4|00000000 259:MB4|00000000 260:MB4|00000000 261:MB4|00000000 262:MB4|00000000 263:MB4|00000000 264:MB4|00000000 265:MB4|00000000 266:MB4|00000000 267:MB4|00000000 268:MB4|00000000 269:MB4|00000000 270:MB4|00000000 271:MB4|00000000 272:MB4|00000000 273:MB4|00000000 274:MB4|00000000 275:MB4|00000000 276:MB4|00000000 277:MB4|00000000 278:MB4|00000000 279:MB4|00000000 280:MB4|00000000 281:MB4|00000000 282:MB4|00000000 283:MB4|00000000 284:MB4|00000000 285:MB4|00000000 286:MB4|00000000 287:MB4|00000000 288:MB4|00000000 289:MB4|00000000 290:MB4|00000000 291:MB4|00000000 292:MB4|00000000 293:MB4|00000000 294:MB4|00000000 295:MB4|00000000 296:MB4|00000000 297:MB4|00000000 298:MB4|00000000 299:MB4|00000000 300:MB4|00000000 301:MB4|00000000 302:MB4|00000000 303:MB4|00000000 304:MB4|00000000 305:MB4|00000000 306:MB4|00000000 307:MB4|00000000 308:MB4|00000000 309:MB4|00000000 310:MB4|00000000 311:MB4|00000000 312:MB4|00000000 313:MB4|00000000 314:MB4|00000000 315:MB4|00000000 316:MB4|00000000 317:MB4|00000000 318:MB4|00000000 319:MB4|00000000 320:MB4|00000000 321:MB4|00000000 322:MB4|00000000 323:MB4|00000000 324:MB4|00000000 325:MB4|00000000 326:MB4|00000000 327:MB4|00000000 328:MB4|00000000 329:MB4|00000000 330:MB4|00000000 331:MB4|00000000 332:MB4|00000000 333:MB4|00000000 334:MB4|00000000 335:MB4|00000000 336:MB4|00000000 337:MB4|00000000 338:MB4|00000000 339:MB4|00000000 340:MB4|00000000 341:MB4|00000000 342:MB4|00000000 343:MB4|00000000 344:MB4|00000000 345:MB4|00000000 346:MB4|00000000 347:MB4|00000000 348:MB4|00000000 349:MB4|00000000 350:MB4|00000000 351:MB4|00000000 352:MB4|00000000 353:MB4|00000000 354:MB4|00000000 355:MB4|00000000 356:MB4|00000000 357:MB4|00000000 358:MB4|00000000 359:MB4|00000000 360:MB4|00000000 361:MB4|00000000 362:MB4|00000000 363:MB4|00000000 364:MB4|00000000 365:MB4|00000000 366:MB4|00000000 367:MB4|00000000 368:MB4|00000000 369:MB4|00000000 370:MB4|00000000 371:MB4|00000000 372:MB4|00000000 373:MB4|00000000 374:MB4|00000000 375:MB4|00000000 376:MB4|00000000 377:MB4|00000000 378:MB4|00000000 379:MB4|00000000 380:MB4|00000000 381:MB4|00000000 382:MB4|00000000 383:MB4|00000000 384:MB4|00000000 385:MB4|00000000 386:MB4|00000000 387:MB4|00000000 388:MB4|00000000 389:MB4|00000000 390:MB4|00000000 391:MB4|00000000 392:MB4|00000000 393:MB4|00000000 394:MB4|00000000 395:MB4|00000000 396:MB4|00000000 397:MB4|00000000 398:MB4|00000000 399:MB4|00000000 400:MB4|00000000 401:MB4|00000000 402:MB4|00000000 403:MB4|00000000 404:MB4|00000000 405:MB4|00000000 406:MB4|00000000 407:MB4|00000000 408:MB4|00000000 409:MB4|00000000 410:MB4|00000000 411:MB4|00000000 412:MB4|00000000 413:MB4|00000000 414:MB4|00000000 415:MB4|00000000 416:MB4|00000000 417:MB4|00000000 418:MB4|00000000 419:MB4|00000000 420:MB4|00000000 421:MB4|00000000 422:MB4|00000000 423:MB4|00000000 424:MB4|00000000 425:MB4|00000000 426:MB4|00000000 427:MB4|00000000 428:MB4|00000000 429:MB4|00000000 430:MB4|00000000 431:MB4|00000000 432:MB4|00000000 433:MB4|00000000 434:MB4|00000000 435:MB4|00000000 436:MB4|00000000 437:MB4|00000000 438:MB4|00000000 439:MB4|00000000 440:MB4|00000000 441:MB4|00000000 442:MB4|00000000 443:MB4|00000000 444:MB4|00000000 445:MB4|00000000 446:MB4|00000000 447:MB4|00000000 448:MB4|00000000 449:MB4|00000000 450:MB4|00000000 451:MB4|00000000 452:MB4|00000000 453:MB4|00000000 454:MB4|00000000 455:MB4|00000000 456:MB4|00000000 457:MB4|00000000 458:MB4|00000000 459:MB4|00000000 460:MB4|00000000 461:MB4|00000000 462:MB4|00000000 463:MB4|00000000 464:MB4|00000000 465:MB4|00000000 466:MB4|00000000 467:MB4|00000000 468:MB4|00000000 469:MB4|00000000 470:MB4|00000000 471:MB4|00000000 472:MB4|00000000 473:MB4|00000000 474:MB4|00000000 475:MB4|00000000 476:MB4|00000000 477:MB4|00000000 478:MB4|00000000 479:MB4|00000000 480:MB4|00000000 481:MB4|00000000 482:MB4|00000000 483:MB4|00000000 484:MB4|00000000 485:MB4|00000000 486:MB4|00000000 487:MB4|00000000 488:MB4|00000000 489:MB4|00000000 490:MB4|00000000 491:MB4|00000000 492:MB4|00000000 493:MB4|00000000 494:MB4|00000000 495:MB4|00000000 496:MB4|00000000 497:MB4|00000000 498:MB4|00000000 499:MB4|00000000 500:MB4|00000000 501:MB4|00000000 502:MB4|00000000 503:MB4|00000000 504:MB4|00000000 505:MB4|00000000 506:MB4|00000000 507:MB4|00000000 508:MB4|00000000 509:MB4|00000000 510:MB4|00000000 511:MB4|00000000 512:MB4|00000000 513:MB4|00000000 514:MB4|00000000 515:MB4|00000000 516:MB4|00000000 517:MB4|00000000 518:MB4|00000000 519:MB4|00000000 520:MB4|00000000 521:MB4|00000000 522:MB4|00000000 523:MB4|00000000 524:MB4|00000000 525:MB4|00000000 526:MB4|00000000 527:MB4|00000000 528:MB4|00000000 529:MB4|00000000 530:MB4|00000000 531:MB4|00000000 532:MB4|00000000 533:MB4|00000000 534:MB4|00000000 535:MB4|00000000 536:MB4|00000000 537:MB4|00000000 538:MB4|00000000 539:MB4|00000000 540:MB4|00000000 541:MB4|00000000 542:MB4|00000000 543:MB4|00000000 544:MB4|00000000 545:MB4|00000000 546:MB4|00000000 547:MB4|00000000 548:MB4|00000000 549:MB4|00000000 550:MB4|00000000 551:MB4|00000000 552:MB4|00000000 553:MB4|00000000 554:MB4|00000000 555:MB4|00000000 556:MB4|00000000 557:MB4|00000000 558:MB4|00000000 559:MB4|00000000 560:MB4|00000000 561:MB4|00000000 562:MB4|00000000 563:MB4|00000000 564:MB4|00000000 565:MB4|00000000 566:MB4|00000000 567:MB4|00000000 568:MB4|00000000 569:MB4|00000000 570:MB4|00000000 571:MB4|00000000 572:MB4|00000000 573:MB4|00000000 574:MB4|00000000 575:MB4|00000000 576:MB4|00000000 577:MB4|00000000 578:MB4|00000000 579:MB4|00000000 580:MB4|00000000 581:MB4|00000000 582:MB4|00000000 583:MB4|00000000 584:MB4|00000000 585:MB4|00000000 586:MB4|00000000 587:MB4|00000000 588:MB4|00000000 589:MB4|00000000 590:MB4|00000000 591:MB4|00000000 592:MB4|00000000 593:MB4|00000000 594:MB4|00000000 595:MB4|00000000 596:MB4|00000000 597:MB4|00000000 598:MB4|00000000 599:MB4|00000000 600:MB4|00000000 601:MB4|00000000 602:MB4|00000000 603:MB4|00000000 604:MB4|00000000 605:MB4|00000000 606:MB4|00000000 607:MB4|00000000 608:MB4|00000000 609:MB4|00000000 610:MB4|00000000 611:MB4|00000000 612:MB4|00000000 613:MB4|00000000 614:MB4|00000000 615:MB4|00000000 616:MB4|00000000 617:MB4|00000000 618:MB4|00000000 619:MB4|00000000 620:MB4|00000000 621:MB4|00000000 622:MB4|00000000 623:MB4|00000000 624:MB4|00000000 625:MB4|00000000 626:MB4|00000000 627:MB4|00000000 628:MB4|00000000 629:MB4|00000000 630:MB4|00000000 631:MB4|00000000 632:MB4|00000000 633:MB4|00000000 634:MB4|00000000 635:MB4|00000000 636:MB4|00000000 637:MB4|00000000 638:MB4|00000000 639:MB4|00000000 640:MB4|00000000 641:MB4|00000000 642:MB4|00000000 643:MB4|00000000 644:MB4|00000000 645:MB4|00000000 646:MB4|00000000 647:MB4|00000000 648:MB4|00000000 649:MB4|00000000 650:MB4|00000000 651:MB4|00000000 652:MB4|00000000 653:MB4|00000000 654:MB4|00000000 655:MB4|00000000 656:MB4|00000000 657:MB4|00000000 658:MB4|00000000 659:MB4|00000000 660:MB4|00000000 661:MB4|00000000 662:MB4|00000000 663:MB4|00000000 664:MB4|00000000 665:MB4|00000000 666:MB4|00000000 667:MB4|00000000 668:MB4|00000000 669:MB4|00000000 670:MB4|00000000 671:MB4|00000000 672:MB4|00000000 673:MB4|00000000 674:MB4|00000000 675:MB4|00000000 676:MB4|00000000 677:MB4|00000000 678:MB4|00000000 679:MB4|00000000 680:MB4|00000000 681:MB4|00000000 682:MB4|00000000 683:MB4|00000000 684:MB4|00000000 685:MB4|00000000 686:MB4|00000000 687:MB4|00000000 688:MB4|00000000 689:MB4|00000000 690:MB4|00000000 691:MB4|00000000 692:MB4|00000000 693:MB4|00000000 694:MB4|00000000 695:MB4|00000000 696:MB4|00000000 697:MB4|00000000 698:MB4|00000000 699:MB4|00000000 700:MB4|00000000 701:MB4|00000000 702:MB4|00000000 703:MB4|00000000 704:MB4|00000000 705:MB4|00000000 706:MB4|00000000 707:MB4|00000000 708:MB4|00000000 709:MB4|00000000 710:MB4|00000000 711:MB4|00000000 712:MB4|00000000 713:MB4|00000000 714:MB4|00000000 715:MB4|00000000 716:MB4|00000000 717:MB4|00000000 718:MB4|00000000 719:MB4|00000000 720:MB4|00000000 721:MB4|00000000 722:MB4|00000000 723:MB4|00000000 724:MB4|00000000 725:MB4|00000000 726:MB4|00000000 727:MB4|00000000 728:MB4|00000000 729:MB4|00000000 730:MB4|00000000 731:MB4|00000000 732:MB4|00000000 733:MB4|00000000 734:MB4|00000000 735:MB4|00000000 736:MB4|00000000 737:MB4|00000000 738:MB4|00000000 739:MB4|00000000 740:MB4|00000000 741:MB4|00000000 742:MB4|00000000 743:MB4|00000000 744:MB4|00000000 745:MB4|00000000 746:MB4|00000000 747:MB4|00000000 748:MB4|00000000 749:MB4|00000000 750:MB4|00000000 751:MB4|00000000 752:MB4|00000000 753:MB4|00000000 754:MB4|00000000 755:MB4|00000000 756:MB4|00000000 757:MB4|00000000 758:MB4|00000000 759:MB4|00000000 760:MB4|00000000 761:MB4|00000000 762:MB4|00000000 763:MB4|00000000 764:MB4|00000000 765:MB4|00000000 766:MB4|00000000 767:MB4|00000000 768:MB4|00000000 769:MB4|00000000 770:MB4|00000000 771:MB4|00000000 772:MB4|00000000 773:MB4|00000000 774:MB4|00000000 775:MB4|00000000 776:MB4|00000000 777:MB4|00000000 778:MB4|00000000 779:MB4|00000000 780:MB4|00000000 781:MB4|00000000 782:MB4|00000000 783:MB4|00000000 784:MB4|00000000 785:MB4|00000000 786:MB4|00000000 787:MB4|00000000 788:MB4|00000000 789:MB4|00000000 790:MB4|00000000 791:MB4|00000000 792:MB4|00000000 793:MB4|00000000 794:MB4|00000000 795:MB4|00000000 796:MB4|00000000 797:MB4|00000000 798:MB4|00000000 799:MB4|00000000 800:MB4|00000000 801:MB4|00000000 802:MB4|00000000 803:MB4|00000000 804:MB4|00000000 805:MB4|00000000 806:MB4|00000000 807:MB4|00000000 808:MB4|00000000 809:MB4|00000000 810:MB4|00000000 811:MB4|00000000 812:MB4|00000000 813:MB4|00000000 814:MB4|00000000 815:MB4|00000000 816:MB4|00000000 817:MB4|00000000 818:MB4|00000000 819:MB4|00000000 820:MB4|00000000 821:MB4|00000000 822:MB4|00000000 823:MB4|00000000 824:MB4|00000000 825:MB4|00000000 826:MB4|00000000 827:MB4|00000000 828:MB4|00000000 829:MB4|00000000 830:MB4|00000000 831:MB4|00000000 832:MB4|00000000 833:MB4|00000000 834:MB4|00000000 835:MB4|00000000 836:MB4|00000000 837:MB4|00000000 838:MB4|00000000 839:MB4|00000000 840:MB4|00000000 841:MB4|00000000 842:MB4|00000000 843:MB4|00000000 844:MB4|00000000 845:MB4|00000000 846:MB4|00000000 847:MB4|00000000 848:MB4|00000000 849:MB4|00000000 850:MB4|00000000 851:MB4|00000000 852:MB4|00000000 853:MB4|00000000 854:MB4|00000000 855:MB4|00000000 856:MB4|00000000 857:MB4|00000000 858:MB4|00000000 859:MB4|00000000 860:MB4|00000000 861:MB4|00000000 862:MB4|00000000 863:MB4|00000000 864:MB4|00000000 865:MB4|00000000 866:MB4|00000000 867:MB4|00000000 868:MB4|00000000 869:MB4|00000000 870:MB4|00000000 871:MB4|00000000 872:MB4|00000000 873:MB4|00000000 874:MB4|00000000 875:MB4|00000000 876:MB4|00000000 877:MB4|00000000 878:MB4|00000000 879:MB4|00000000 880:MB4|00000000 881:MB4|00000000 882:MB4|00000000 883:MB4|00000000 884:MB4|00000000 885:MB4|00000000 886:MB4|00000000 887:MB4|00000000 888:MB4|00000000 889:MB4|00000000 890:MB4|00000000 891:MB4|00000000 892:MB4|00000000 893:MB4|00000000 894:MB4|00000000 895:MB4|00000000 896:MB4|00000000 897:MB4|00000000 898:MB4|00000000 899:MB4|00000000 900:MB4|00000000 901:MB4|00000000 902:MB4|00000000 903:MB4|00000000 904:MB4|00000000 905:MB4|00000000 906:MB4|00000000 907:MB4|00000000 908:MB4|00000000 909:MB4|00000000 910:MB4|00000000 911:MB4|00000000 912:MB4|00000000 913:MB4|00000000 914:MB4|00000000 915:MB4|00000000 916:MB4|00000000 917:MB4|00000000 918:MB4|00000000 919:MB4|00000000 920:MB4|00000000 921:MB4|00000000 922:MB4|00000000 923:MB4|00000000 924:MB4|00000000 925:MB4|00000000 926:MB4|00000000 927:MB4|00000000 928:MB4|00000000 929:MB4|00000000 930:MB4|00000000 931:MB4|00000000 932:MB4|00000000 933:MB4|00000000 934:MB4|00000000 935:MB4|00000000 936:MB4|00000000 937:MB4|00000000 938:MB4|00000000 939:MB4|00000000 940:MB4|00000000 941:MB4|00000000 942:MB4|00000000 943:MB4|00000000 944:MB4|00000000 945:MB4|00000000 946:MB4|00000000 947:MB4|00000000 948:MB4|00000000 949:MB4|00000000 950:MB4|00000000 951:MB4|00000000 952:MB4|00000000 953:MB4|00000000 954:MB4|00000000 955:MB4|00000000 956:MB4|00000000 957:MB4|00000000 958:MB4|00000000 959:MB4|00000000 960:MB4|00000000 961:MB4|00000000 962:MB4|00000000 963:MB4|00000000 964:MB4|00000000 965:MB4|00000000 966:MB4|00000000 967:MB4|00000000 968:MB4|00000000 969:MB4|00000000 970:MB4|00000000 971:MB4|00000000 972:MB4|00000000 973:MB4|00000000 974:MB4|00000000 975:MB4|00000000 976:MB4|00000000 977:MB4|00000000 978:MB4|00000000 979:MB4|00000000 980:MB4|00000000 981:MB4|00000000 982:MB4|00000000 983:MB4|00000000 984:MB4|00000000 985:MB4|00000000 986:MB4|00000000 987:MB4|00000000 988:MB4|00000000 989:MB4|00000000 990:MB4|00000000 991:MB4|00000000 992:MB4|00000000 993:MB4|00000000 994:MB4|00000000 995:MB4|00000000 996:MB4|00000000 997:MB4|00000000 998:MB4|00000000 999:MB4|00000000 1000:MB4|00000000 1001:MB4|00000000 1002:MB4|00000000 1003:MB4|00000000 1004:MB4|00000000 1005:MB4|00000000 1006:MB4|00000000 1007:MB4|00000000 1008:MB4|00000000 1009:MB4|00000000 1010:MB4|00000000 1011:MB4|00000000 1012:MB4|00000000 1013:MB4|00000000 1014:MB4|00000000 1015:MB4|00000000 1016:MB4|00000000 1017:MB4|00000000 1018:MB4|00000000 1019:MB4|00000000 1020:MB4|00000000 1021:MB4|00000000 1022:MB4|00000000 1023:MB4|00000000 1024:MB4|00000000 1025:MB4|00000000 1026:MB4|00000000 1027:MB4|00000000 1028:MB4|00000000 1029:MB4|00000000 1030:MB4|00000000 1031:MB4|00000000 1032:MB4|00000000 1033:MB4|00000000 1034:MB4|00000000 1035:MB4|00000000 1036:MB4|00000000 1037:MB4|00000000 1038:MB4|00000000 1039:MB4|00000000 1040:MB4|00000000 1041:MB4|00000000 1042:MB4|00000000 1043:MB4|00000000 1044:MB4|00000000 1045:MB4|00000000 1046:MB4|00000000 1047:MB4|00000000 1048:MB4|00000000 1049:MB4|00000000 1050:MB4|00000000 1051:MB4|00000000 1052:MB4|00000000 1053:MB4|00000000 1054:MB4|00000000 1055:MB4|00000000 1056:MB4|00000000 1057:MB4|00000000 1058:MB4|00000000 1059:MB4|00000000 1060:MB4|00000000 1061:MB4|00000000 1062:MB4|00000000 1063:MB4|00000000 1064:MB4|00000000 1065:MB4|00000000 1066:MB4|00000000 1067:MB4|00000000 1068:MB4|00000000 1069:MB4|00000000 1070:MB4|00000000 1071:MB4|00000000 1072:MB4|00000000 1073:MB4|00000000 1074:MB4|00000000 1075:MB4|00000000 1076:MB4|00000000 1077:MB4|00000000 1078:MB4|00000000 1079:MB4|00000000 1080:MB4|00000000 1081:MB4|00000000 1082:MB4|00000000 1083:MB4|00000000 1084:MB4|00000000 1085:MB4|00000000 1086:MB4|00000000 1087:MB4|00000000 1088:MB4|00000000 1089:MB4|00000000 1090:MB4|00000000 1091:MB4|00000000 1092:MB4|00000000 1093:MB4|00000000 1094:MB4|00000000 1095:MB4|00000000 1096:MB4|00000000 1097:MB4|00000000 1098:MB4|00000000 1099:MB4|00000000 1100:MB4|00000000 1101:MB4|00000000 1102:MB4|00000000 1103:MB4|00000000 1104:MB4|00000000 1105:MB4|00000000 1106:MB4|00000000 1107:MB4|00000000 1108:MB4|00000000 1109:MB4|00000000 1110:MB4|00000000 1111:MB4|00000000 1112:MB4|00000000 1113:MB4|00000000 1114:MB4|00000000 1115:MB4|00000000 1116:MB4|00000000 1117:MB4|00000000 1118:MB4|00000000 1119:MB4|00000000 1120:MB4|00000000 1121:MB4|00000000 1122:MB4|00000000 1123:MB4|00000000 1124:MB4|00000000 1125:MB4|00000000 1126:MB4|00000000 1127:MB4|00000000 1128:MB4|00000000 1129:MB4|00000000 1130:MB4|00000000 1131:MB4|00000000 1132:MB4|00000000 1133:MB4|00000000 1134:MB4|00000000 1135:MB4|00000000 1136:MB4|00000000 1137:MB4|00000000 1138:MB4|00000000 1139:MB4|00000000 1140:MB4|00000000 1141:MB4|00000000 1142:MB4|00000000 1143:MB4|00000000 1144:MB4|00000000 1145:MB4|00000000 1146:MB4|00000000 1147:MB4|00000000 1148:MB4|00000000 1149:MB4|00000000 1150:MB4|00000000 1151:MB4|00000000 1152:MB4|00000000 1153:MB4|00000000 1154:MB4|00000000 1155:MB4|00000000 1156:MB4|00000000 1157:MB4|00000000 1158:MB4|00000000 1159:MB4|00000000 1160:MB4|00000000 1161:MB4|00000000 1162:MB4|00000000 1163:MB4|00000000 1164:MB4|00000000 1165:MB4|00000000 1166:MB4|00000000 1167:MB4|00000000 1168:MB4|00000000 1169:MB4|00000000 1170:MB4|00000000 1171:MB4|00000000 1172:MB4|00000000 1173:MB4|00000000 1174:MB4|00000000 1175:MB4|00000000 1176:MB4|00000000 1177:MB4|00000000 1178:MB4|00000000 1179:MB4|00000000 1180:MB4|00000000 1181:MB4|00000000 1182:MB4|00000000 1183:MB4|00000000 1184:MB4|00000000 1185:MB4|00000000 1186:MB4|00000000 1187:MB4|00000000 1188:MB4|00000000 1189:MB4|00000000 1190:MB4|00000000 1191:MB4|00000000 1192:MB4|00000000 1193:MB4|00000000 1194:MB4|00000000 1195:MB4|00000000 1196:MB4|00000000 1197:MB4|00000000 1198:MB4|00000000 1199:MB4|00000000 1200:MB4|00000000 1201:MB4|00000000 1202:MB4|00000000 1203:MB4|00000000 1204:MB4|00000000 1205:MB4|00000000 1206:MB4|00000000 1207:MB4|00000000 1208:MB4|00000000 1209:MB4|00000000 1210:MB4|00000000 1211:MB4|00000000 1212:MB4|00000000 1213:MB4|00000000 1214:MB4|00000000 1215:MB4|00000000 1216:MB4|00000000 1217:MB4|00000000 1218:MB4|00000000 1219:MB4|00000000 1220:MB4|00000000 1221:MB4|00000000 1222:MB4|00000000 1223:MB4|00000000 1224:MB4|00000000 1225:MB4|00000000 1226:MB4|00000000 1227:MB4|00000000 1228:MB4|00000000 1229:MB4|00000000 1230:MB4|00000000 1231:MB4|00000000 1232:MB4|00000000 1233:MB4|00000000 1234:MB4|00000000 1235:MB4|00000000 1236:MB4|00000000 1237:MB4|00000000 1238:MB4|00000000 1239:MB4|00000000 1240:MB4|00000000 1241:MB4|00000000 1242:MB4|00000000 1243:MB4|00000000 1244:MB4|00000000 1245:MB4|00000000 1246:MB4|00000000 1247:MB4|00000000 1248:MB4|00000000 1249:MB4|00000000 1250:MB4|00000000 1251:MB4|00000000 1252:MB4|00000000 1253:MB4|00000000 1254:MB4|00000000 1255:MB4|00000000 1256:MB4|00000000 1257:MB4|00000000 1258:MB4|00000000 1259:MB4|00000000 1260:MB4|00000000 1261:MB4|00000000 1262:MB4|00000000 1263:MB4|00000000 1264:MB4|00000000 1265:MB4|00000000 1266:MB4|00000000 1267:MB4|00000000 1268:MB4|00000000 1269:MB4|00000000 1270:MB4|00000000 1271:MB4|00000000 1272:MB4|00000000 1273:MB4|00000000 1274:MB4|00000000 1275:MB4|00000000 1276:MB4|00000000 1277:MB4|00000000 1278:MB4|00000000 1279:MB4|00000000 1280:MB4|00000000 1281:MB4|00000000 1282:MB4|00000000 1283:MB4|00000000 1284:MB4|00000000 1285:MB4|00000000 1286:MB4|00000000 1287:MB4|00000000 1288:MB4|00000000 1289:MB4|00000000 1290:MB4|00000000 1291:MB4|00000000 1292:MB4|00000000 1293:MB4|00000000 1294:MB4|00000000 1295:MB4|00000000 1296:MB4|00000000 1297:MB4|00000000 1298:MB4|00000000 1299:MB4|00000000 1300:MB4|00000000 1301:MB4|00000000 1302:MB4|00000000 1303:MB4|00000000 1304:MB4|00000000 1305:MB4|00000000 1306:MB4|00000000 1307:MB4|00000000 1308:MB4|00000000 1309:MB4|00000000 1310:MB4|00000000 1311:MB4|00000000 1312:MB4|00000000 1313:MB4|00000000 1314:MB4|00000000 1315:MB4|00000000 1316:MB4|00000000 1317:MB4|00000000 1318:MB4|00000000 1319:MB4|00000000 1320:MB4|00000000 1321:MB4|00000000 1322:MB4|00000000 1323:MB4|00000000 1324:MB4|00000000 1325:MB4|00000000 1326:MB4|00000000 1327:MB4|00000000 1328:MB4|00000000 1329:MB4|00000000 1330:MB4|00000000 1331:MB4|00000000 1332:MB4|00000000 1333:MB4|00000000 1334:MB4|00000000 1335:MB4|00000000 1336:MB4|00000000 1337:MB4|00000000 1338:MB4|00000000 1339:MB4|00000000 1340:MB4|00000000 1341:MB4|00000000 1342:MB4|00000000 1343:MB4|00000000 1344:MB4|00000000 1345:MB4|00000000 1346:MB4|00000000 1347:MB4|00000000 1348:MB4|00000000 1349:MB4|00000000 1350:MB4|00000000 1351:MB4|00000000 1352:MB4|00000000 1353:MB4|00000000 1354:MB4|00000000 1355:MB4|00000000 1356:MB4|00000000 1357:MB4|00000000 1358:MB4|00000000 1359:MB4|00000000 1360:MB4|00000000 1361:MB4|00000000 1362:MB4|00000000 1363:MB4|00000000 1364:MB4|00000000 1365:MB4|00000000 1366:MB4|00000000 1367:MB4|00000000 1368:MB4|00000000 1369:MB4|00000000 1370:MB4|00000000 1371:MB4|00000000 1372:MB4|00000000 1373:MB4|00000000 1374:MB4|00000000 1375:MB4|00000000 1376:MB4|00000000 1377:MB4|00000000 1378:MB4|00000000 1379:MB4|00000000 1380:MB4|00000000 1381:MB4|00000000 1382:MB4|00000000 1383:MB4|00000000 1384:MB4|00000000 1385:MB4|00000000 1386:MB4|00000000 1387:MB4|00000000 1388:MB4|00000000 1389:MB4|00000000 1390:MB4|00000000 1391:MB4|00000000 1392:MB4|00000000 1393:MB4|00000000 1394:MB4|00000000 1395:MB4|00000000 1396:MB4|00000000 1397:MB4|00000000 1398:MB4|00000000 1399:MB4|00000000 1400:MB4|00000000 1401:MB4|00000000 1402:MB4|00000000 1403:MB4|00000000 1404:MB4|00000000 1405:MB4|00000000 1406:MB4|00000000 1407:MB4|00000000 1408:MB4|00000000 1409:MB4|00000000 1410:MB4|00000000 1411:MB4|00000000 1412:MB4|00000000 1413:MB4|00000000 1414:MB4|00000000 1415:MB4|00000000 1416:MB4|00000000 1417:MB4|00000000 1418:MB4|00000000 1419:MB4|00000000 1420:MB4|00000000 1421:MB4|00000000 1422:MB4|00000000 1423:MB4|00000000 1424:MB4|00000000 1425:MB4|00000000 1426:MB4|00000000 1427:MB4|00000000 1428:MB4|00000000 1429:MB4|00000000 1430:MB4|00000000 1431:MB4|00000000 1432:MB4|00000000 1433:MB4|00000000 1434:MB4|00000000 1435:MB4|00000000 1436:MB4|00000000 1437:MB4|00000000 1438:MB4|00000000 1439:MB4|00000000 1440:MB4|00000000 1441:MB4|00000000 1442:MB4|00000000 1443:MB4|00000000 1444:MB4|00000000 1445:MB4|00000000 1446:MB4|00000000 1447:MB4|00000000 1448:MB4|00000000 1449:MB4|00000000 1450:MB4|00000000 1451:MB4|00000000 1452:MB4|00000000 1453:MB4|00000000 1454:MB4|00000000 1455:MB4|00000000 1456:MB4|00000000 1457:MB4|00000000 1458:MB4|00000000 1459:MB4|00000000 1460:MB4|00000000 1461:MB4|00000000 1462:MB4|00000000 1463:MB4|00000000 1464:MB4|00000000 1465:MB4|00000000 1466:MB4|00000000 1467:MB4|00000000 1468:MB4|00000000 1469:MB4|00000000 1470:MB4|00000000 1471:MB4|00000000 1472:MB4|00000000 1473:MB4|00000000 1474:MB4|00000000 1475:MB4|00000000 1476:MB4|00000000 1477:MB4|00000000 1478:MB4|00000000 1479:MB4|00000000 1480:MB4|00000000 1481:MB4|00000000 1482:MB4|00000000 1483:MB4|00000000 1484:MB4|00000000 1485:MB4|00000000 1486:MB4|00000000 1487:MB4|00000000 1488:MB4|00000000 1489:MB4|00000000 1490:MB4|00000000 1491:MB4|00000000 1492:MB4|00000000 1493:MB4|00000000 1494:MB4|00000000 1495:MB4|00000000 1496:MB4|00000000 1497:MB4|00000000 1498:MB4|00000000 1499:MB4|00000000 1500:MB4|00000000 1501:MB4|00000000 1502:MB4|00000000 1503:MB4|00000000 1504:MB4|00000000 1505:MB4|00000000 1506:MB4|00000000 1507:MB4|00000000 1508:MB4|00000000 1509:MB4|00000000 1510:MB4|00000000 1511:MB4|00000000 1512:MB4|00000000 1513:MB4|00000000 1514:MB4|00000000 1515:MB4|00000000 1516:MB4|00000000 1517:MB4|00000000 1518:MB4|00000000 1519:MB4|00000000 1520:MB4|00000000 1521:MB4|00000000 1522:MB4|00000000 1523:MB4|00000000 1524:MB4|00000000 1525:MB4|00000000 1526:MB4|00000000 1527:MB4|00000000 1528:MB4|00000000 1529:MB4|00000000 1530:MB4|00000000 1531:MB4|00000000 1532:MB4|00000000 1533:MB4|00000000 1534:MB4|00000000 1535:MB4|00000000 1536:MB4|00000000 1537:MB4|00000000 1538:MB4|00000000 1539:MB4|00000000 1540:MB4|00000000 1541:MB4|00000000 1542:MB4|00000000 1543:MB4|00000000 1544:MB4|00000000 1545:MB4|00000000 1546:MB4|00000000 1547:MB4|00000000 1548:MB4|00000000 1549:MB4|00000000 1550:MB4|00000000 1551:MB4|00000000 1552:MB4|00000000 1553:MB4|00000000 1554:MB4|00000000 1555:MB4|00000000 1556:MB4|00000000 1557:MB4|00000000 1558:MB4|00000000 1559:MB4|00000000 1560:MB4|00000000 1561:MB4|00000000 1562:MB4|00000000 1563:MB4|00000000 1564:MB4|00000000 1565:MB4|00000000 1566:MB4|00000000 1567:MB4|00000000 1568:MB4|00000000 1569:MB4|00000000 1570:MB4|00000000 1571:MB4|00000000 1572:MB4|00000000 1573:MB4|00000000 1574:MB4|00000000 1575:MB4|00000000 1576:MB4|00000000 1577:MB4|00000000 1578:MB4|00000000 1579:MB4|00000000 1580:MB4|00000000 1581:MB4|00000000 1582:MB4|00000000 1583:MB4|00000000 1584:MB4|00000000 1585:MB4|00000000 1586:MB4|00000000 1587:MB4|00000000 1588:MB4|00000000 1589:MB4|00000000 1590:MB4|00000000 1591:MB4|00000000 1592:MB4|00000000 1593:MB4|00000000 1594:MB4|00000000 1595:MB4|00000000 1596:MB4|00000000 1597:MB4|00000000 1598:MB4|00000000 1599:MB4|00000000 1600:MB4|00000000 1601:MB4|00000000 1602:MB4|00000000 1603:MB4|00000000 1604:MB4|00000000 1605:MB4|00000000 1606:MB4|00000000 1607:MB4|00000000 1608:MB4|00000000 1609:MB4|00000000 1610:MB4|00000000 1611:MB4|00000000 1612:MB4|00000000 1613:MB4|00000000 1614:MB4|00000000 1615:MB4|00000000 1616:MB4|00000000 1617:MB4|00000000 1618:MB4|00000000 1619:MB4|00000000 1620:MB4|00000000 1621:MB4|00000000 1622:MB4|00000000 1623:MB4|00000000 1624:MB4|00000000 1625:MB4|00000000 1626:MB4|00000000 1627:MB4|00000000 1628:MB4|00000000 1629:MB4|00000000 1630:MB4|00000000 1631:MB4|00000000 1632:MB4|00000000 1633:MB4|00000000 1634:MB4|00000000 1635:MB4|00000000 1636:MB4|00000000 1637:MB4|00000000 1638:MB4|00000000 1639:MB4|00000000 1640:MB4|00000000 1641:MB4|00000000 1642:MB4|00000000 1643:MB4|00000000 1644:MB4|00000000 1645:MB4|00000000 1646:MB4|00000000 1647:MB4|00000000 1648:MB4|00000000 1649:MB4|00000000 1650:MB4|00000000 1651:MB4|00000000 1652:MB4|00000000 1653:MB4|00000000 1654:MB4|00000000 1655:MB4|00000000 1656:MB4|00000000 1657:MB4|00000000 1658:MB4|00000000 1659:MB4|00000000 1660:MB4|00000000 1661:MB4|00000000 1662:MB4|00000000 1663:MB4|00000000 1664:MB4|00000000 1665:MB4|00000000 1666:MB4|00000000 1667:MB4|00000000 1668:MB4|00000000 1669:MB4|00000000 1670:MB4|00000000 1671:MB4|00000000 1672:MB4|00000000 1673:MB4|00000000 1674:MB4|00000000 1675:MB4|00000000 1676:MB4|00000000 1677:MB4|00000000 1678:MB4|00000000 1679:MB4|00000000 1680:MB4|00000000 1681:MB4|00000000 1682:MB4|00000000 1683:MB4|00000000 1684:MB4|00000000 1685:MB4|00000000 1686:MB4|00000000 1687:MB4|00000000 1688:MB4|00000000 1689:MB4|00000000 1690:MB4|00000000 1691:MB4|00000000 1692:MB4|00000000 1693:MB4|00000000 1694:MB4|00000000 1695:MB4|00000000 1696:MB4|00000000 1697:MB4|00000000 1698:MB4|00000000 1699:MB4|00000000 1700:MB4|00000000 1701:MB4|00000000 1702:MB4|00000000 1703:MB4|00000000 1704:MB4|00000000 1705:MB4|00000000 1706:MB4|00000000 1707:MB4|00000000 1708:MB4|00000000 1709:MB4|00000000 1710:MB4|00000000 1711:MB4|00000000 1712:MB4|00000000 1713:MB4|00000000 1714:MB4|00000000 1715:MB4|00000000 1716:MB4|00000000 1717:MB4|00000000 1718:MB4|00000000 1719:MB4|00000000 1720:MB4|00000000 1721:MB4|00000000 1722:MB4|00000000 1723:MB4|00000000 1724:MB4|00000000 1725:MB4|00000000 1726:MB4|00000000 1727:MB4|00000000 1728:MB4|00000000 1729:MB4|00000000 1730:MB4|00000000 1731:MB4|00000000 1732:MB4|00000000 1733:MB4|00000000 1734:MB4|00000000 1735:MB4|00000000 1736:MB4|00000000 1737:MB4|00000000 1738:MB4|00000000 1739:MB4|00000000 1740:MB4|00000000 1741:MB4|00000000 1742:MB4|00000000 1743:MB4|00000000 1744:MB4|00000000 1745:MB4|00000000 1746:MB4|00000000 1747:MB4|00000000 1748:MB4|00000000 1749:MB4|00000000 1750:MB4|00000000 1751:MB4|00000000 1752:MB4|00000000 1753:MB4|00000000 1754:MB4|00000000 1755:MB4|00000000 1756:MB4|00000000 1757:MB4|00000000 1758:MB4|00000000 1759:MB4|00000000 1760:MB4|00000000 1761:MB4|00000000 1762:MB4|00000000 1763:MB4|00000000 1764:MB4|00000000 1765:MB4|00000000 1766:MB4|00000000 1767:MB4|00000000 1768:MB4|00000000 1769:MB4|00000000 1770:MB4|00000000 1771:MB4|00000000 1772:MB4|00000000 1773:MB4|00000000 1774:MB4|00000000 1775:MB4|00000000 1776:MB4|00000000 1777:MB4|00000000 1778:MB4|00000000 1779:MB4|00000000 1780:MB4|00000000 1781:MB4|00000000 1782:MB4|00000000 1783:MB4|00000000 1784:MB4|00000000 1785:MB4|00000000 1786:MB4|00000000 1787:MB4|00000000 1788:MB4|00000000 1789:MB4|00000000 1790:MB4|00000000 1791:MB4|00000000 1792:MB4|00000000 1793:MB4|00000000 1794:MB4|00000000 1795:MB4|00000000 1796:MB4|00000000 1797:MB4|00000000 1798:MB4|00000000 1799:MB4|00000000 1800:MB4|00000000 1801:MB4|00000000 1802:MB4|00000000 1803:MB4|00000000 1804:MB4|00000000 1805:MB4|00000000 1806:MB4|00000000 1807:MB4|00000000 1808:MB4|00000000 1809:MB4|00000000 1810:MB4|00000000 1811:MB4|00000000 1812:MB4|00000000 1813:MB4|00000000 1814:MB4|00000000 1815:MB4|00000000 1816:MB4|00000000 1817:MB4|00000000 1818:MB4|00000000 1819:MB4|00000000 1820:MB4|00000000 1821:MB4|00000000 1822:MB4|00000000 1823:MB4|00000000 1824:MB4|00000000 1825:MB4|00000000 1826:MB4|00000000 1827:MB4|00000000 1828:MB4|00000000 1829:MB4|00000000 1830:MB4|00000000 1831:MB4|00000000 1832:MB4|00000000 1833:MB4|00000000 1834:MB4|00000000 1835:MB4|00000000 1836:MB4|00000000 1837:MB4|00000000 1838:MB4|00000000 1839:MB4|00000000 1840:MB4|00000000 1841:MB4|00000000 1842:MB4|00000000 1843:MB4|00000000 1844:MB4|00000000 1845:MB4|00000000 1846:MB4|00000000 1847:MB4|00000000 1848:MB4|00000000 1849:MB4|00000000 1850:MB4|00000000 1851:MB4|00000000 1852:MB4|00000000 1853:MB4|00000000 1854:MB4|00000000 1855:MB4|00000000 1856:MB4|00000000 1857:MB4|00000000 1858:MB4|00000000 1859:MB4|00000000 1860:MB4|00000000 1861:MB4|00000000 1862:MB4|00000000 1863:MB4|00000000 1864:MB4|00000000 1865:MB4|00000000 1866:MB4|00000000 1867:MB4|00000000 1868:MB4|00000000 1869:MB4|00000000 1870:MB4|00000000 1871:MB4|00000000 1872:MB4|00000000 1873:MB4|00000000 1874:MB4|00000000 1875:MB4|00000000 1876:MB4|00000000 1877:MB4|00000000 1878:MB4|00000000 1879:MB4|00000000 1880:MB4|00000000 1881:MB4|00000000 1882:MB4|00000000 1883:MB4|00000000 1884:MB4|00000000 1885:MB4|00000000 1886:MB4|00000000 1887:MB4|00000000 1888:MB4|00000000 1889:MB4|00000000 1890:MB4|00000000 1891:MB4|00000000 1892:MB4|00000000 1893:MB4|00000000 1894:MB4|00000000 1895:MB4|00000000 1896:MB4|00000000 1897:MB4|00000000 1898:MB4|00000000 1899:MB4|00000000 1900:MB4|00000000 1901:MB4|00000000 1902:MB4|00000000 1903:MB4|00000000 1904:MB4|00000000 1905:MB4|00000000 1906:MB4|00000000 1907:MB4|00000000 1908:MB4|00000000 1909:MB4|00000000 1910:MB4|00000000 1911:MB4|00000000 1912:MB4|00000000 1913:MB4|00000000 1914:MB4|00000000 1915:MB4|00000000 1916:MB4|00000000 1917:MB4|00000000 1918:MB4|00000000 1919:MB4|00000000 1920:MB4|00000000 1921:MB4|00000000 1922:MB4|00000000 1923:MB4|00000000 1924:MB4|00000000 1925:MB4|00000000 1926:MB4|00000000 1927:MB4|00000000 1928:MB4|00000000 1929:MB4|00000000 1930:MB4|00000000 1931:MB4|00000000 1932:MB4|00000000 1933:MB4|00000000 1934:MB4|00000000 1935:MB4|00000000 1936:MB4|00000000 1937:MB4|00000000 1938:MB4|00000000 1939:MB4|00000000 1940:MB4|00000000 1941:MB4|00000000 1942:MB4|00000000 1943:MB4|00000000 1944:MB4|00000000 1945:MB4|00000000 1946:MB4|00000000 1947:MB4|00000000 1948:MB4|00000000 1949:MB4|00000000 1950:MB4|00000000 1951:MB4|00000000 1952:MB4|00000000 1953:MB4|00000000 1954:MB4|00000000 1955:MB4|00000000 1956:MB4|00000000 1957:MB4|00000000 1958:MB4|00000000 1959:MB4|00000000 1960:MB4|00000000 1961:MB4|00000000 1962:MB4|00000000 1963:MB4|00000000 1964:MB4|00000000 1965:MB4|00000000 1966:MB4|00000000 1967:MB4|00000000 1968:MB4|00000000 1969:MB4|00000000 1970:MB4|00000000 1971:MB4|00000000 1972:MB4|00000000 1973:MB4|00000000 1974:MB4|00000000 1975:MB4|00000000 1976:MB4|00000000 1977:MB4|00000000 1978:MB4|00000000 1979:MB4|00000000 1980:MB4|00000000 1981:MB4|00000000 1982:MB4|00000000 1983:MB4|00000000 1984:MB4|00000000 1985:MB4|00000000 1986:MB4|00000000 1987:MB4|00000000 1988:MB4|00000000 1989:MB4|00000000 1990:MB4|00000000 1991:MB4|00000000 1992:MB4|00000000 1993:MB4|00000000 1994:MB4|00000000 1995:MB4|00000000 1996:MB4|00000000 1997:MB4|00000000 1998:MB4|00000000 1999:MB4|00000000 2000:MB4|00000000 2001:MB4|00000000 2002:MB4|00000000 2003:MB4|00000000 2004:MB4|00000000 2005:MB4|00000000 2006:MB4|00000000 2007:MB4|00000000 2008:MB4|00000000 2009:MB4|00000000 2010:MB4|00000000 2011:MB4|00000000 2012:MB4|00000000 2013:MB4|00000000 2014:MB4|00000000 2015:MB4|00000000 2016:MB4|00000000 2017:MB4|00000000 2018:MB4|00000000 2019:MB4|00000000 2020:MB4|00000000 2021:MB4|00000000 2022:MB4|00000000 2023:MB4|00000000 2024:MB4|00000000 2025:MB4|00000000 2026:MB4|00000000 2027:MB4|00000000 2028:MB4|00000000 2029:MB4|00000000 2030:MB4|00000000 2031:MB4|00000000 2032:MB4|00000000 2033:MB4|00000000 2034:MB4|00000000 2035:MB4|00000000 2036:MB4|00000000 2037:MB4|00000000 2038:MB4|00000000 2039:MB4|00000000 2040:MB4|00000000 2041:MB4|00000000 2042:MB4|00000000 2043:MB4|00000000 2044:MB4|00000000 2045:MB4|00000000 2046:MB4|00000000 2047:MB4|00000000 2048:MB4|00000000 2049:MB4|00000000 2050:MB4|00000000 2051:MB4|00000000 2052:MB4|00000000 2053:MB4|00000000 2054:MB4|00000000 2055:MB4|00000000 2056:MB4|00000000 2057:MB4|00000000 2058:MB4|00000000 2059:MB4|00000000 2060:MB4|00000000 2061:MB4|00000000 2062:MB4|00000000 2063:MB4|00000000 2064:MB4|00000000 2065:MB4|00000000 2066:MB4|00000000 2067:MB4|00000000 2068:MB4|00000000 2069:MB4|00000000 2070:MB4|00000000 2071:MB4|00000000 2072:MB4|00000000 2073:MB4|00000000 2074:MB4|00000000 2075:MB4|00000000 2076:MB4|00000000 2077:MB4|00000000 2078:MB4|00000000 2079:MB4|00000000 2080:MB4|00000000 2081:MB4|00000000 2082:MB4|00000000 2083:MB4|00000000 2084:MB4|00000000 2085:MB4|00000000 2086:MB4|00000000 2087:MB4|00000000 2088:MB4|00000000 2089:MB4|00000000 2090:MB4|00000000 2091:MB4|00000000 2092:MB4|00000000 2093:MB4|00000000 2094:MB4|00000000 2095:MB4|00000000 2096:MB4|00000000 2097:MB4|00000000 2098:MB4|00000000 2099:MB4|00000000 2100:MB4|00000000 2101:MB4|00000000 2102:MB4|00000000 2103:MB4|00000000 2104:MB4|00000000 2105:MB4|00000000 2106:MB4|00000000 2107:MB4|00000000 2108:MB4|00000000 2109:MB4|00000000 2110:MB4|00000000 2111:MB4|00000000 2112:MB4|00000000 2113:MB4|00000000 2114:MB4|00000000 2115:MB4|00000000 2116:MB4|00000000 2117:MB4|00000000 2118:MB4|00000000 2119:MB4|00000000 2120:MB4|00000000 2121:MB4|00000000 2122:MB4|00000000 2123:MB4|00000000 2124:MB4|00000000 2125:MB4|00000000 2126:MB4|00000000 2127:MB4|00000000 2128:MB4|00000000 2129:MB4|00000000 2130:MB4|00000000 2131:MB4|00000000 2132:MB4|00000000 2133:MB4|00000000 2134:MB4|00000000 2135:MB4|00000000 2136:MB4|00000000 2137:MB4|00000000 2138:MB4|00000000 2139:MB4|00000000 2140:MB4|00000000 2141:MB4|00000000 2142:MB4|00000000 2143:MB4|00000000 2144:MB4|00000000 2145:MB4|00000000 2146:MB4|00000000 2147:MB4|00000000 2148:MB4|00000000 2149:MB4|00000000 2150:MB4|00000000 2151:MB4|00000000 2152:MB4|00000000 2153:MB4|00000000 2154:MB4|00000000 2155:MB4|00000000 2156:MB4|00000000 2157:MB4|00000000 2158:MB4|00000000 2159:MB4|00000000 2160:MB4|00000000 2161:MB4|00000000 2162:MB4|00000000 2163:MB4|00000000 2164:MB4|00000000 2165:MB4|00000000 2166:MB4|00000000 2167:MB4|00000000 2168:MB4|00000000 2169:MB4|00000000 2170:MB4|00000000 2171:MB4|00000000 2172:MB4|00000000 2173:MB4|00000000 2174:MB4|00000000 2175:MB4|00000000 2176:MB4|00000000 2177:MB4|00000000 2178:MB4|00000000 2179:MB4|00000000 2180:MB4|00000000 2181:MB4|00000000 2182:MB4|00000000 2183:MB4|00000000 2184:MB4|00000000 2185:MB4|00000000 2186:MB4|00000000 2187:MB4|00000000 2188:MB4|00000000 2189:MB4|00000000 2190:MB4|00000000 2191:MB4|00000000 2192:MB4|00000000 2193:MB4|00000000 2194:MB4|00000000 2195:MB4|00000000 2196:MB4|00000000 2197:MB4|00000000 2198:MB4|00000000 2199:MB4|00000000 2200:MB4|00000000 2201:MB4|00000000 2202:MB4|00000000 2203:MB4|00000000 2204:MB4|00000000 2205:MB4|00000000 2206:MB4|00000000 2207:MB4|00000000 2208:MB4|00000000 2209:MB4|00000000 2210:MB4|00000000 2211:MB4|00000000 2212:MB4|00000000 2213:MB4|00000000 2214:MB4|00000000 2215:MB4|00000000 2216:MB4|00000000 2217:MB4|00000000 2218:MB4|00000000 2219:MB4|00000000 2220:MB4|00000000 2221:MB4|00000000 2222:MB4|00000000 2223:MB4|00000000 2224:MB4|00000000 2225:MB4|00000000 2226:MB4|00000000 2227:MB4|00000000 2228:MB4|00000000 2229:MB4|00000000 2230:MB4|00000000 2231:MB4|00000000 2232:MB4|00000000 2233:MB4|00000000 2234:MB4|00000000 2235:MB4|00000000 2236:MB4|00000000 2237:MB4|00000000 2238:MB4|00000000 2239:MB4|00000000 2240:MB4|00000000 2241:MB4|00000000 2242:MB4|00000000 2243:MB4|00000000 2244:MB4|00000000 2245:MB4|00000000 2246:MB4|00000000 2247:MB4|00000000 2248:MB4|00000000 2249:MB4|00000000 2250:MB4|00000000 2251:MB4|00000000 2252:MB4|00000000 2253:MB4|00000000 2254:MB4|00000000 2255:MB4|00000000 2256:MB4|00000000 2257:MB4|00000000 2258:MB4|00000000 2259:MB4|00000000 2260:MB4|00000000 2261:MB4|00000000 2262:MB4|00000000 2263:MB4|00000000 2264:MB4|00000000 2265:MB4|00000000 2266:MB4|00000000 2267:MB4|00000000 2268:MB4|00000000 2269:MB4|00000000 2270:MB4|00000000 2271:MB4|00000000 2272:MB4|00000000 2273:MB4|00000000 2274:MB4|00000000 2275:MB4|00000000 2276:MB4|00000000 2277:MB4|00000000 2278:MB4|00000000 2279:MB4|00000000 2280:MB4|00000000 2281:MB4|00000000 2282:MB4|00000000 2283:MB4|00000000 2284:MB4|00000000 2285:MB4|00000000 2286:MB4|00000000 2287:MB4|00000000 2288:MB4|00000000 2289:MB4|00000000 2290:MB4|00000000 2291:MB4|00000000 2292:MB4|00000000 2293:MB4|00000000 2294:MB4|00000000 2295:MB4|00000000 2296:MB4|00000000 2297:MB4|00000000 2298:MB4|00000000 2299:MB4|00000000 2300:MB4|00000000 2301:MB4|00000000 2302:MB4|00000000 2303:MB4|00000000 2304:MB4|00000000 2305:MB4|00000000 2306:MB4|00000000 2307:MB4|00000000 2308:MB4|00000000 2309:MB4|00000000 2310:MB4|00000000 2311:MB4|00000000 2312:MB4|00000000 2313:MB4|00000000 2314:MB4|00000000 2315:MB4|00000000 2316:MB4|00000000 2317:MB4|00000000 2318:MB4|00000000 2319:MB4|00000000 2320:MB4|00000000 2321:MB4|00000000 2322:MB4|00000000 2323:MB4|00000000 2324:MB4|00000000 2325:MB4|00000000 2326:MB4|00000000 2327:MB4|00000000 2328:MB4|00000000 2329:MB4|00000000 2330:MB4|00000000 2331:MB4|00000000 2332:MB4|00000000 2333:MB4|00000000 2334:MB4|00000000 2335:MB4|00000000 2336:MB4|00000000 2337:MB4|00000000 2338:MB4|00000000 2339:MB4|00000000 2340:MB4|00000000 2341:MB4|00000000 2342:MB4|00000000 2343:MB4|00000000 2344:MB4|00000000 2345:MB4|00000000 2346:MB4|00000000 2347:MB4|00000000 2348:MB4|00000000 2349:MB4|00000000 2350:MB4|00000000 2351:MB4|00000000 2352:MB4|00000000 2353:MB4|00000000 2354:MB4|00000000 2355:MB4|00000000 2356:MB4|00000000 2357:MB4|00000000 2358:MB4|00000000 2359:MB4|00000000 2360:MB4|00000000 2361:MB4|00000000 2362:MB4|00000000 2363:MB4|00000000 2364:MB4|00000000 2365:MB4|00000000 2366:MB4|00000000 2367:MB4|00000000 2368:MB4|00000000 2369:MB4|00000000 2370:MB4|00000000 2371:MB4|00000000 2372:MB4|00000000 2373:MB4|00000000 2374:MB4|00000000 2375:MB4|00000000 2376:MB4|00000000 2377:MB4|00000000 2378:MB4|00000000 2379:MB4|00000000 2380:MB4|00000000 2381:MB4|00000000 2382:MB4|00000000 2383:MB4|00000000 2384:MB4|00000000 2385:MB4|00000000 2386:MB4|00000000 2387:MB4|00000000 2388:MB4|00000000 2389:MB4|00000000 2390:MB4|00000000 2391:MB4|00000000 2392:MB4|00000000 2393:MB4|00000000 2394:MB4|00000000 2395:MB4|00000000 2396:MB4|00000000 2397:MB4|00000000 2398:MB4|00000000 2399:MB4|00000000 2400:MB4|00000000 2401:MB4|00000000 2402:MB4|00000000 2403:MB4|00000000 2404:MB4|00000000 2405:MB4|00000000 2406:MB4|00000000 2407:MB4|00000000 2408:MB4|00000000 2409:MB4|00000000 2410:MB4|00000000 2411:MB4|00000000 2412:MB4|00000000 2413:MB4|00000000 2414:MB4|00000000 2415:MB4|00000000 2416:MB4|00000000 2417:MB4|00000000 2418:MB4|00000000 2419:MB4|00000000 2420:MB4|00000000 2421:MB4|00000000 2422:MB4|00000000 2423:MB4|00000000 2424:MB4|00000000 2425:MB4|00000000 2426:MB4|00000000 2427:MB4|00000000 2428:MB4|00000000 2429:MB4|00000000 2430:MB4|00000000 2431:MB4|00000000 2432:MB4|00000000 2433:MB4|00000000 2434:MB4|00000000 2435:MB4|00000000 2436:MB4|00000000 2437:MB4|00000000 2438:MB4|00000000 2439:MB4|00000000 2440:MB4|00000000 2441:MB4|00000000 2442:MB4|00000000 2443:MB4|00000000 2444:MB4|00000000 2445:MB4|00000000 2446:MB4|00000000 2447:MB4|00000000 2448:MB4|00000000 2449:MB4|00000000 2450:MB4|00000000 2451:MB4|00000000 2452:MB4|00000000 2453:MB4|00000000 2454:MB4|00000000 2455:MB4|00000000 2456:MB4|00000000 2457:MB4|00000000 2458:MB4|00000000 2459:MB4|00000000 2460:MB4|00000000 2461:MB4|00000000 2462:MB4|00000000 2463:MB4|00000000 2464:MB4|00000000 2465:MB4|00000000 2466:MB4|00000000 2467:MB4|00000000 2468:MB4|00000000 2469:MB4|00000000 2470:MB4|00000000 2471:MB4|00000000 2472:MB4|00000000 2473:MB4|00000000 2474:MB4|00000000 2475:MB4|00000000 2476:MB4|00000000 2477:MB4|00000000 2478:MB4|00000000 2479:MB4|00000000 2480:MB4|00000000 2481:MB4|00000000 2482:MB4|00000000 2483:MB4|00000000 2484:MB4|00000000 2485:MB4|00000000 2486:MB4|00000000 2487:MB4|00000000 2488:MB4|00000000 2489:MB4|00000000 2490:MB4|00000000 2491:MB4|00000000 2492:MB4|00000000 2493:MB4|00000000 2494:MB4|00000000 2495:MB4|00000000 2496:MB4|00000000 2497:MB4|00000000 2498:MB4|00000000 2499:MB4|00000000 2500:MB4|00000000 2501:MB4|00000000 2502:MB4|00000000 2503:MB4|00000000 2504:MB4|00000000 2505:MB4|00000000 2506:MB4|00000000 2507:MB4|00000000 2508:MB4|00000000 2509:MB4|00000000 2510:MB4|00000000 2511:MB4|00000000 2512:MB4|00000000 2513:MB4|00000000 2514:MB4|00000000 2515:MB4|00000000 2516:MB4|00000000 2517:MB4|00000000 2518:MB4|00000000 2519:MB4|00000000 2520:MB4|00000000 2521:MB4|00000000 2522:MB4|00000000 2523:MB4|00000000 2524:MB4|00000000 2525:MB4|00000000 2526:MB4|00000000 2527:MB4|00000000 2528:MB4|00000000 2529:MB4|00000000 2530:MB4|00000000 2531:MB4|00000000 2532:MB4|00000000 2533:MB4|00000000 2534:MB4|00000000 2535:MB4|00000000 2536:MB4|00000000 2537:MB4|00000000 2538:MB4|00000000 2539:MB4|00000000 2540:MB4|00000000 2541:MB4|00000000 2542:MB4|00000000 2543:MB4|00000000 2544:MB4|00000000 2545:MB4|00000000 2546:MB4|00000000 2547:MB4|00000000 2548:MB4|00000000 2549:MB4|00000000 2550:MB4|00000000 2551:MB4|00000000 2552:MB4|00000000 2553:MB4|00000000 2554:MB4|00000000 2555:MB4|00000000 2556:MB4|00000000 2557:MB4|00000000 2558:MB4|00000000 2559:MB4|00000000 2560:MB4|00000000 2561:MB4|00000000 2562:MB4|00000000 2563:MB4|00000000 2564:MB4|00000000 2565:MB4|00000000 2566:MB4|00000000 2567:MB4|00000000 2568:MB4|00000000 2569:MB4|00000000 2570:MB4|00000000 2571:MB4|00000000 2572:MB4|00000000 2573:MB4|00000000 2574:MB4|00000000 2575:MB4|00000000 2576:MB4|00000000 2577:MB4|00000000 2578:MB4|00000000 2579:MB4|00000000 2580:MB4|00000000 2581:MB4|00000000 2582:MB4|00000000 2583:MB4|00000000 2584:MB4|00000000 2585:MB4|00000000 2586:MB4|00000000 2587:MB4|00000000 2588:MB4|00000000 2589:MB4|00000000 2590:MB4|00000000 2591:MB4|00000000 2592:MB4|00000000 2593:MB4|00000000 2594:MB4|00000000 2595:MB4|00000000 2596:MB4|00000000 2597:MB4|00000000 2598:MB4|00000000 2599:MB4|00000000 2600:MB4|00000000 2601:MB4|00000000 2602:MB4|00000000 2603:MB4|00000000 2604:MB4|00000000 2605:MB4|00000000 2606:MB4|00000000 2607:MB4|00000000 2608:MB4|00000000 2609:MB4|00000000 2610:MB4|00000000 2611:MB4|00000000 2612:MB4|00000000 2613:MB4|00000000 2614:MB4|00000000 2615:MB4|00000000 2616:MB4|00000000 2617:MB4|00000000 2618:MB4|00000000 2619:MB4|00000000 2620:MB4|00000000 2621:MB4|00000000 2622:MB4|00000000 2623:MB4|00000000 2624:MB4|00000000 2625:MB4|00000000 2626:MB4|00000000 2627:MB4|00000000 2628:MB4|00000000 2629:MB4|00000000 2630:MB4|00000000 2631:MB4|00000000 2632:MB4|00000000 2633:MB4|00000000 2634:MB4|00000000 2635:MB4|00000000 2636:MB4|00000000 2637:MB4|00000000 2638:MB4|00000000 2639:MB4|00000000 2640:MB4|00000000 2641:MB4|00000000 2642:MB4|00000000 2643:MB4|00000000 2644:MB4|00000000 2645:MB4|00000000 2646:MB4|00000000 2647:MB4|00000000 2648:MB4|00000000 2649:MB4|00000000 2650:MB4|00000000 2651:MB4|00000000 2652:MB4|00000000 2653:MB4|00000000 2654:MB4|00000000 2655:MB4|00000000 2656:MB4|00000000 2657:MB4|00000000 2658:MB4|00000000 2659:MB4|00000000 2660:MB4|00000000 2661:MB4|00000000 2662:MB4|00000000 2663:MB4|00000000 2664:MB4|00000000 2665:MB4|00000000 2666:MB4|00000000 2667:MB4|00000000 2668:MB4|00000000 2669:MB4|00000000 2670:MB4|00000000 2671:MB4|00000000 2672:MB4|00000000 2673:MB4|00000000 2674:MB4|00000000 2675:MB4|00000000 2676:MB4|00000000 2677:MB4|00000000 2678:MB4|00000000 2679:MB4|00000000 2680:MB4|00000000 2681:MB4|00000000 2682:MB4|00000000 2683:MB4|00000000 2684:MB4|00000000 2685:MB4|00000000 2686:MB4|00000000 2687:MB4|00000000 2688:MB4|00000000 2689:MB4|00000000 2690:MB4|00000000 2691:MB4|00000000 2692:MB4|00000000 2693:MB4|00000000 2694:MB4|00000000 2695:MB4|00000000 2696:MB4|00000000 2697:MB4|00000000 2698:MB4|00000000 2699:MB4|00000000 2700:MB4|00000000 2701:MB4|00000000 2702:MB4|00000000 2703:MB4|00000000 2704:MB4|00000000 2705:MB4|00000000 2706:MB4|00000000 2707:MB4|00000000 2708:MB4|00000000 2709:MB4|00000000 2710:MB4|00000000 2711:MB4|00000000 2712:MB4|00000000 2713:MB4|00000000 2714:MB4|00000000 2715:MB4|00000000 2716:MB4|00000000 2717:MB4|00000000 2718:MB4|00000000 2719:MB4|00000000 2720:MB4|00000000 2721:MB4|00000000 2722:MB4|00000000 2723:MB4|00000000 2724:MB4|00000000 2725:MB4|00000000 2726:MB4|00000000 2727:MB4|00000000 2728:MB4|00000000 2729:MB4|00000000 2730:MB4|00000000 2731:MB4|00000000 2732:MB4|00000000 2733:MB4|00000000 2734:MB4|00000000 2735:MB4|00000000 2736:MB4|00000000 2737:MB4|00000000 2738:MB4|00000000 2739:MB4|00000000 2740:MB4|00000000 2741:MB4|00000000 2742:MB4|00000000 2743:MB4|00000000 2744:MB4|00000000 2745:MB4|00000000 2746:MB4|00000000 2747:MB4|00000000 2748:MB4|00000000 2749:MB4|00000000 2750:MB4|00000000 2751:MB4|00000000 2752:MB4|00000000 2753:MB4|00000000 2754:MB4|00000000 2755:MB4|00000000 2756:MB4|00000000 2757:MB4|00000000 2758:MB4|00000000 2759:MB4|00000000 2760:MB4|00000000 2761:MB4|00000000 2762:MB4|00000000 2763:MB4|00000000 2764:MB4|00000000 2765:MB4|00000000 2766:MB4|00000000 2767:MB4|00000000 2768:MB4|00000000 2769:MB4|00000000 2770:MB4|00000000 2771:MB4|00000000 2772:MB4|00000000 2773:MB4|00000000 2774:MB4|00000000 2775:MB4|00000000 2776:MB4|00000000 2777:MB4|00000000 2778:MB4|00000000 2779:MB4|00000000 2780:MB4|00000000 2781:MB4|00000000 2782:MB4|00000000 2783:MB4|00000000 2784:MB4|00000000 2785:MB4|00000000 2786:MB4|00000000 2787:MB4|00000000 2788:MB4|00000000 2789:MB4|00000000 2790:MB4|00000000 2791:MB4|00000000 2792:MB4|00000000 2793:MB4|00000000 2794:MB4|00000000 2795:MB4|00000000 2796:MB4|00000000 2797:MB4|00000000 2798:MB4|00000000 2799:MB4|00000000 2800:MB4|00000000 2801:MB4|00000000 2802:MB4|00000000 2803:MB4|00000000 2804:MB4|00000000 2805:MB4|00000000 2806:MB4|00000000 2807:MB4|00000000 2808:MB4|00000000 2809:MB4|00000000 2810:MB4|00000000 2811:MB4|00000000 2812:MB4|00000000 2813:MB4|00000000 2814:MB4|00000000 2815:MB4|00000000 2816:MB4|00000000 2817:MB4|00000000 2818:MB4|00000000 2819:MB4|00000000 2820:MB4|00000000 2821:MB4|00000000 2822:MB4|00000000 2823:MB4|00000000 2824:MB4|00000000 2825:MB4|00000000 2826:MB4|00000000 2827:MB4|00000000 2828:MB4|00000000 2829:MB4|00000000 2830:MB4|00000000 2831:MB4|00000000 2832:MB4|00000000 2833:MB4|00000000 2834:MB4|00000000 2835:MB4|00000000 2836:MB4|00000000 2837:MB4|00000000 2838:MB4|00000000 2839:MB4|00000000 2840:MB4|00000000 2841:MB4|00000000 2842:MB4|00000000 2843:MB4|00000000 2844:MB4|00000000 2845:MB4|00000000 2846:MB4|00000000 2847:MB4|00000000 2848:MB4|00000000 2849:MB4|00000000 2850:MB4|00000000 2851:MB4|00000000 2852:MB4|00000000 2853:MB4|00000000 2854:MB4|00000000 2855:MB4|00000000 2856:MB4|00000000 2857:MB4|00000000 2858:MB4|00000000 2859:MB4|00000000 2860:MB4|00000000 2861:MB4|00000000 2862:MB4|00000000 2863:MB4|00000000 2864:MB4|00000000 2865:MB4|00000000 2866:MB4|00000000 2867:MB4|00000000 2868:MB4|00000000 2869:MB4|00000000 2870:MB4|00000000 2871:MB4|00000000 2872:MB4|00000000 2873:MB4|00000000 2874:MB4|00000000 2875:MB4|00000000 2876:MB4|00000000 2877:MB4|00000000 2878:MB4|00000000 2879:MB4|00000000 2880:MB4|00000000 2881:MB4|00000000 2882:MB4|00000000 2883:MB4|00000000 2884:MB4|00000000 2885:MB4|00000000 2886:MB4|00000000 2887:MB4|00000000 2888:MB4|00000000 2889:MB4|00000000 2890:MB4|00000000 2891:MB4|00000000 2892:MB4|00000000 2893:MB4|00000000 2894:MB4|00000000 2895:MB4|00000000 2896:MB4|00000000 2897:MB4|00000000 2898:MB4|00000000 2899:MB4|00000000 2900:MB4|00000000 2901:MB4|00000000 2902:MB4|00000000 2903:MB4|00000000 2904:MB4|00000000 2905:MB4|00000000 2906:MB4|00000000 2907:MB4|00000000 2908:MB4|00000000 2909:MB4|00000000 2910:MB4|00000000 2911:MB4|00000000 2912:MB4|00000000 2913:MB4|00000000 2914:MB4|00000000 2915:MB4|00000000 2916:MB4|00000000 2917:MB4|00000000 2918:MB4|00000000 2919:MB4|00000000 2920:MB4|00000000 2921:MB4|00000000 2922:MB4|00000000 2923:MB4|00000000 2924:MB4|00000000 2925:MB4|00000000 2926:MB4|00000000 2927:MB4|00000000 2928:MB4|00000000 2929:MB4|00000000 2930:MB4|00000000 2931:MB4|00000000 2932:MB4|00000000 2933:MB4|00000000 2934:MB4|00000000 2935:MB4|00000000 2936:MB4|00000000 2937:MB4|00000000 2938:MB4|00000000 2939:MB4|00000000 2940:MB4|00000000 2941:MB4|00000000 2942:MB4|00000000 2943:MB4|00000000 2944:MB4|00000000 2945:MB4|00000000 2946:MB4|00000000 2947:MB4|00000000 2948:MB4|00000000 2949:MB4|00000000 2950:MB4|00000000 2951:MB4|00000000 2952:MB4|00000000 2953:MB4|00000000 2954:MB4|00000000 2955:MB4|00000000 2956:MB4|00000000 2957:MB4|00000000 2958:MB4|00000000 2959:MB4|00000000 2960:MB4|00000000 2961:MB4|00000000 2962:MB4|00000000 2963:MB4|00000000 2964:MB4|00000000 2965:MB4|00000000 2966:MB4|00000000 2967:MB4|00000000 2968:MB4|00000000 2969:MB4|00000000 2970:MB4|00000000 2971:MB4|00000000 2972:MB4|00000000 2973:MB4|00000000 2974:MB4|00000000 2975:MB4|00000000 2976:MB4|00000000 2977:MB4|00000000 2978:MB4|00000000 2979:MB4|00000000 2980:MB4|00000000 2981:MB4|00000000 2982:MB4|00000000 2983:MB4|00000000 2984:MB4|00000000 2985:MB4|00000000 2986:MB4|00000000 2987:MB4|00000000 2988:MB4|00000000 2989:MB4|00000000 2990:MB4|00000000 2991:MB4|00000000 2992:MB4|00000000 2993:MB4|00000000 2994:MB4|00000000 2995:MB4|00000000 2996:MB4|00000000 2997:MB4|00000000 2998:MB4|00000000 2999:MB4|00000000 3000:MB4|00000000 3001:MB4|00000000 3002:MB4|00000000 3003:MB4|00000000 3004:MB4|00000000 3005:MB4|00000000 3006:MB4|00000000 3007:MB4|00000000 3008:MB4|00000000 3009:MB4|00000000 3010:MB4|00000000 3011:MB4|00000000 3012:MB4|00000000 3013:MB4|00000000 3014:MB4|00000000 3015:MB4|00000000 3016:MB4|00000000 3017:MB4|00000000 3018:MB4|00000000 3019:MB4|00000000 3020:MB4|00000000 3021:MB4|00000000 3022:MB4|00000000 3023:MB4|00000000 3024:MB4|00000000 3025:MB4|00000000 3026:MB4|00000000 3027:MB4|00000000 3028:MB4|00000000 3029:MB4|00000000 3030:MB4|00000000 3031:MB4|00000000 3032:MB4|00000000 3033:MB4|00000000 3034:MB4|00000000 3035:MB4|00000000 3036:MB4|00000000 3037:MB4|00000000 3038:MB4|00000000 3039:MB4|00000000 3040:MB4|00000000 3041:MB4|00000000 3042:MB4|00000000 3043:MB4|00000000 3044:MB4|00000000 3045:MB4|00000000 3046:MB4|00000000 3047:MB4|00000000 3048:MB4|00000000 3049:MB4|00000000 3050:MB4|00000000 3051:MB4|00000000 3052:MB4|00000000 3053:MB4|00000000 3054:MB4|00000000 3055:MB4|00000000 3056:MB4|00000000 3057:MB4|00000000 3058:MB4|00000000 3059:MB4|00000000 3060:MB4|00000000 3061:MB4|00000000 3062:MB4|00000000 3063:MB4|00000000 3064:MB4|00000000 3065:MB4|00000000 3066:MB4|00000000 3067:MB4|00000000 3068:MB4|00000000 3069:MB4|00000000 3070:MB4|00000000 3071:MB4|00000000 3072:MB4|00000000 3073:MB4|00000000 3074:MB4|00000000 3075:MB4|00000000 3076:MB4|00000000 3077:MB4|00000000 3078:MB4|00000000 3079:MB4|00000000 3080:MB4|00000000 3081:MB4|00000000 3082:MB4|00000000 3083:MB4|00000000 3084:MB4|00000000 3085:MB4|00000000 3086:MB4|00000000 3087:MB4|00000000 3088:MB4|00000000 3089:MB4|00000000 3090:MB4|00000000 3091:MB4|00000000 3092:MB4|00000000 3093:MB4|00000000 3094:MB4|00000000 3095:MB4|00000000 3096:MB4|00000000 3097:MB4|00000000 3098:MB4|00000000 3099:MB4|00000000 3100:MB4|00000000 3101:MB4|00000000 3102:MB4|00000000 3103:MB4|00000000 3104:MB4|00000000 3105:MB4|00000000 3106:MB4|00000000 3107:MB4|00000000 3108:MB4|00000000 3109:MB4|00000000 3110:MB4|00000000 3111:MB4|00000000 3112:MB4|00000000 3113:MB4|00000000 3114:MB4|00000000 3115:MB4|00000000 3116:MB4|00000000 3117:MB4|00000000 3118:MB4|00000000 3119:MB4|00000000 3120:MB4|00000000 3121:MB4|00000000 3122:MB4|00000000 3123:MB4|00000000 3124:MB4|00000000 3125:MB4|00000000 3126:MB4|00000000 3127:MB4|00000000 3128:MB4|00000000 3129:MB4|00000000 3130:MB4|00000000 3131:MB4|00000000 3132:MB4|00000000 3133:MB4|00000000 3134:MB4|00000000 3135:MB4|00000000 3136:MB4|00000000 3137:MB4|00000000 3138:MB4|00000000 3139:MB4|00000000 3140:MB4|00000000 3141:MB4|00000000 3142:MB4|00000000 3143:MB4|00000000 3144:MB4|00000000 3145:MB4|00000000 3146:MB4|00000000 3147:MB4|00000000 3148:MB4|00000000 3149:MB4|00000000 3150:MB4|00000000 3151:MB4|00000000 3152:MB4|00000000 3153:MB4|00000000 3154:MB4|00000000 3155:MB4|00000000 3156:MB4|00000000 3157:MB4|00000000 3158:MB4|00000000 3159:MB4|00000000 3160:MB4|00000000 3161:MB4|00000000 3162:MB4|00000000 3163:MB4|00000000 3164:MB4|00000000 3165:MB4|00000000 3166:MB4|00000000 3167:MB4|00000000 3168:MB4|00000000 3169:MB4|00000000 3170:MB4|00000000 3171:MB4|00000000 3172:MB4|00000000 3173:MB4|00000000 3174:MB4|00000000 3175:MB4|00000000 3176:MB4|00000000 3177:MB4|00000000 3178:MB4|00000000 3179:MB4|00000000 3180:MB4|00000000 3181:MB4|00000000 3182:MB4|00000000 3183:MB4|00000000 3184:MB4|00000000 3185:MB4|00000000 3186:MB4|00000000 3187:MB4|00000000 3188:MB4|00000000 3189:MB4|00000000 3190:MB4|00000000 3191:MB4|00000000 3192:MB4|00000000 3193:MB4|00000000 3194:MB4|00000000 3195:MB4|00000000 3196:MB4|00000000 3197:MB4|00000000 3198:MB4|00000000 3199:MB4|00000000 3200:MB4|00000000 3201:MB4|00000000 3202:MB4|00000000 3203:MB4|00000000 3204:MB4|00000000 3205:MB4|00000000 3206:MB4|00000000 3207:MB4|00000000 3208:MB4|00000000 3209:MB4|00000000 3210:MB4|00000000 3211:MB4|00000000 3212:MB4|00000000 3213:MB4|00000000 3214:MB4|00000000 3215:MB4|00000000 3216:MB4|00000000 3217:MB4|00000000 3218:MB4|00000000 3219:MB4|00000000 3220:MB4|00000000 3221:MB4|00000000 3222:MB4|00000000 3223:MB4|00000000 3224:MB4|00000000 3225:MB4|00000000 3226:MB4|00000000 3227:MB4|00000000 3228:MB4|00000000 3229:MB4|00000000 3230:MB4|00000000 3231:MB4|00000000 3232:MB4|00000000 3233:MB4|00000000 3234:MB4|00000000 3235:MB4|00000000 3236:MB4|00000000 3237:MB4|00000000 3238:MB4|00000000 3239:MB4|00000000 3240:MB4|00000000 3241:MB4|00000000 3242:MB4|00000000 3243:MB4|00000000 3244:MB4|00000000 3245:MB4|00000000 3246:MB4|00000000 3247:MB4|00000000 3248:MB4|00000000 3249:MB4|00000000 3250:MB4|00000000 3251:MB4|00000000 3252:MB4|00000000 3253:MB4|00000000 3254:MB4|00000000 3255:MB4|00000000 3256:MB4|00000000 3257:MB4|00000000 3258:MB4|00000000 3259:MB4|00000000 3260:MB4|00000000 3261:MB4|00000000 3262:MB4|00000000 3263:MB4|00000000 3264:MB4|00000000 3265:MB4|00000000 3266:MB4|00000000 3267:MB4|00000000 3268:MB4|00000000 3269:MB4|00000000 3270:MB4|00000000 3271:MB4|00000000 3272:MB4|00000000 3273:MB4|00000000 3274:MB4|00000000 3275:MB4|00000000 3276:MB4|00000000 3277:MB4|00000000 3278:MB4|00000000 3279:MB4|00000000 3280:MB4|00000000 3281:MB4|00000000 3282:MB4|00000000 3283:MB4|00000000 3284:MB4|00000000 3285:MB4|00000000 3286:MB4|00000000 3287:MB4|00000000 3288:MB4|00000000 3289:MB4|00000000 3290:MB4|00000000 3291:MB4|00000000 3292:MB4|00000000 3293:MB4|00000000 3294:MB4|00000000 3295:MB4|00000000 3296:MB4|00000000 3297:MB4|00000000 3298:MB4|00000000 3299:MB4|00000000 3300:MB4|00000000 3301:MB4|00000000 3302:MB4|00000000 3303:MB4|00000000 3304:MB4|00000000 3305:MB4|00000000 3306:MB4|00000000 3307:MB4|00000000 3308:MB4|00000000 3309:MB4|00000000 3310:MB4|00000000 3311:MB4|00000000 3312:MB4|00000000 3313:MB4|00000000 3314:MB4|00000000 3315:MB4|00000000 3316:MB4|00000000 3317:MB4|00000000 3318:MB4|00000000 3319:MB4|00000000 3320:MB4|00000000 3321:MB4|00000000 3322:MB4|00000000 3323:MB4|00000000 3324:MB4|00000000 3325:MB4|00000000 3326:MB4|00000000 3327:MB4|00000000 3328:MB4|00000000 3329:MB4|00000000 3330:MB4|00000000 3331:MB4|00000000 3332:MB4|00000000 3333:MB4|00000000 3334:MB4|00000000 3335:MB4|00000000 3336:MB4|00000000 3337:MB4|00000000 3338:MB4|00000000 3339:MB4|00000000 3340:MB4|00000000 3341:MB4|00000000 3342:MB4|00000000 3343:MB4|00000000 3344:MB4|00000000 3345:MB4|00000000 3346:MB4|00000000 3347:MB4|00000000 3348:MB4|00000000 3349:MB4|00000000 3350:MB4|00000000 3351:MB4|00000000 3352:MB4|00000000 3353:MB4|00000000 3354:MB4|00000000 3355:MB4|00000000 3356:MB4|00000000 3357:MB4|00000000 3358:MB4|00000000 3359:MB4|00000000 3360:MB4|00000000 3361:MB4|00000000 3362:MB4|00000000 3363:MB4|00000000 3364:MB4|00000000 3365:MB4|00000000 3366:MB4|00000000 3367:MB4|00000000 3368:MB4|00000000 3369:MB4|00000000 3370:MB4|00000000 3371:MB4|00000000 3372:MB4|00000000 3373:MB4|00000000 3374:MB4|00000000 3375:MB4|00000000 3376:MB4|00000000 3377:MB4|00000000 3378:MB4|00000000 3379:MB4|00000000 3380:MB4|00000000 3381:MB4|00000000 3382:MB4|00000000 3383:MB4|00000000 3384:MB4|00000000 3385:MB4|00000000 3386:MB4|00000000 3387:MB4|00000000 3388:MB4|00000000 3389:MB4|00000000 3390:MB4|00000000 3391:MB4|00000000 3392:MB4|00000000 3393:MB4|00000000 3394:MB4|00000000 3395:MB4|00000000 3396:MB4|00000000 3397:MB4|00000000 3398:MB4|00000000 3399:MB4|00000000 3400:MB4|00000000 3401:MB4|00000000 3402:MB4|00000000 3403:MB4|00000000 3404:MB4|00000000 3405:MB4|00000000 3406:MB4|00000000 3407:MB4|00000000 3408:MB4|00000000 3409:MB4|00000000 3410:MB4|00000000 3411:MB4|00000000 3412:MB4|00000000 3413:MB4|00000000 3414:MB4|00000000 3415:MB4|00000000 3416:MB4|00000000 3417:MB4|00000000 3418:MB4|00000000 3419:MB4|00000000 3420:MB4|00000000 3421:MB4|00000000 3422:MB4|00000000 3423:MB4|00000000 3424:MB4|00000000 3425:MB4|00000000 3426:MB4|00000000 3427:MB4|00000000 3428:MB4|00000000 3429:MB4|00000000 3430:MB4|00000000 3431:MB4|00000000 3432:MB4|00000000 3433:MB4|00000000 3434:MB4|00000000 3435:MB4|00000000 3436:MB4|00000000 3437:MB4|00000000 3438:MB4|00000000 3439:MB4|00000000 3440:MB4|00000000 3441:MB4|00000000 3442:MB4|00000000 3443:MB4|00000000 3444:MB4|00000000 3445:MB4|00000000 3446:MB4|00000000 3447:MB4|00000000 3448:MB4|00000000 3449:MB4|00000000 3450:MB4|00000000 3451:MB4|00000000 3452:MB4|00000000 3453:MB4|00000000 3454:MB4|00000000 3455:MB4|00000000 3456:MB4|00000000 3457:MB4|00000000 3458:MB4|00000000 3459:MB4|00000000 3460:MB4|00000000 3461:MB4|00000000 3462:MB4|00000000 3463:MB4|00000000 3464:MB4|00000000 3465:MB4|00000000 3466:MB4|00000000 3467:MB4|00000000 3468:MB4|00000000 3469:MB4|00000000 3470:MB4|00000000 3471:MB4|00000000 3472:MB4|00000000 3473:MB4|00000000 3474:MB4|00000000 3475:MB4|00000000 3476:MB4|00000000 3477:MB4|00000000 3478:MB4|00000000 3479:MB4|00000000 3480:MB4|00000000 3481:MB4|00000000 3482:MB4|00000000 3483:MB4|00000000 3484:MB4|00000000 3485:MB4|00000000 3486:MB4|00000000 3487:MB4|00000000 3488:MB4|00000000 3489:MB4|00000000 3490:MB4|00000000 3491:MB4|00000000 3492:MB4|00000000 3493:MB4|00000000 3494:MB4|00000000 3495:MB4|00000000 3496:MB4|00000000 3497:MB4|00000000 3498:MB4|00000000 3499:MB4|00000000 3500:MB4|00000000 3501:MB4|00000000 3502:MB4|00000000 3503:MB4|00000000 3504:MB4|00000000 3505:MB4|00000000 3506:MB4|00000000 3507:MB4|00000000 3508:MB4|00000000 3509:MB4|00000000 3510:MB4|00000000 3511:MB4|00000000 3512:MB4|00000000 3513:MB4|00000000 3514:MB4|00000000 3515:MB4|00000000 3516:MB4|00000000 3517:MB4|00000000 3518:MB4|00000000 3519:MB4|00000000 3520:MB4|00000000 3521:MB4|00000000 3522:MB4|00000000 3523:MB4|00000000 3524:MB4|00000000 3525:MB4|00000000 3526:MB4|00000000 3527:MB4|00000000 3528:MB4|00000000 3529:MB4|00000000 3530:MB4|00000000 3531:MB4|00000000 3532:MB4|00000000 3533:MB4|00000000 3534:MB4|00000000 3535:MB4|00000000 3536:MB4|00000000 3537:MB4|00000000 3538:MB4|00000000 3539:MB4|00000000 3540:MB4|00000000 3541:MB4|00000000 3542:MB4|00000000 3543:MB4|00000000 3544:MB4|00000000 3545:MB4|00000000 3546:MB4|00000000 3547:MB4|00000000 3548:MB4|00000000 3549:MB4|00000000 3550:MB4|00000000 3551:MB4|00000000 3552:MB4|00000000 3553:MB4|00000000 3554:MB4|00000000 3555:MB4|00000000 3556:MB4|00000000 3557:MB4|00000000 3558:MB4|00000000 3559:MB4|00000000 3560:MB4|00000000 3561:MB4|00000000 3562:MB4|00000000 3563:MB4|00000000 3564:MB4|00000000 3565:MB4|00000000 3566:MB4|00000000 3567:MB4|00000000 3568:MB4|00000000 3569:MB4|00000000 3570:MB4|00000000 3571:MB4|00000000 3572:MB4|00000000 3573:MB4|00000000 3574:MB4|00000000 3575:MB4|00000000 3576:MB4|00000000 3577:MB4|00000000 3578:MB4|00000000 3579:MB4|00000000 3580:MB4|00000000 3581:MB4|00000000 3582:MB4|00000000 3583:MB4|00000000 3584:MB4|00000000 3585:MB4|00000000 3586:MB4|00000000 3587:MB4|00000000 3588:MB4|00000000 3589:MB4|00000000 3590:MB4|00000000 3591:MB4|00000000 3592:MB4|00000000 3593:MB4|00000000 3594:MB4|00000000 3595:MB4|00000000 3596:MB4|00000000 3597:MB4|00000000 3598:MB4|00000000 3599:MB4|00000000 3600:MB4|00000000 3601:MB4|00000000 3602:MB4|00000000 3603:MB4|00000000 3604:MB4|00000000 3605:MB4|00000000 3606:MB4|00000000 3607:MB4|00000000 3608:MB4|00000000 3609:MB4|00000000 3610:MB4|00000000 3611:MB4|00000000 3612:MB4|00000000 3613:MB4|00000000 3614:MB4|00000000 3615:MB4|00000000 3616:MB4|00000000 3617:MB4|00000000 3618:MB4|00000000 3619:MB4|00000000 3620:MB4|00000000 3621:MB4|00000000 3622:MB4|00000000 3623:MB4|00000000 3624:MB4|00000000 3625:MB4|00000000 3626:MB4|00000000 3627:MB4|00000000 3628:MB4|00000000 3629:MB4|00000000 3630:MB4|00000000 3631:MB4|00000000 3632:MB4|00000000 3633:MB4|00000000 3634:MB4|00000000 3635:MB4|00000000 3636:MB4|00000000 3637:MB4|00000000 3638:MB4|00000000 3639:MB4|00000000 3640:MB4|00000000 3641:MB4|00000000 3642:MB4|00000000 3643:MB4|00000000 3644:MB4|00000000 3645:MB4|00000000 3646:MB4|00000000 3647:MB4|00000000 3648:MB4|00000000 3649:MB4|00000000 3650:MB4|00000000 3651:MB4|00000000 3652:MB4|00000000 3653:MB4|00000000 3654:MB4|00000000 3655:MB4|00000000 3656:MB4|00000000 3657:MB4|00000000 3658:MB4|00000000 3659:MB4|00000000 3660:MB4|00000000 3661:MB4|00000000 3662:MB4|00000000 3663:MB4|00000000 3664:MB4|00000000 3665:MB4|00000000 3666:MB4|00000000 3667:MB4|00000000 3668:MB4|00000000 3669:MB4|00000000 3670:MB4|00000000 3671:MB4|00000000 3672:MB4|00000000 3673:MB4|00000000 3674:MB4|00000000 3675:MB4|00000000 3676:MB4|00000000 3677:MB4|00000000 3678:MB4|00000000 3679:MB4|00000000 3680:MB4|00000000 3681:MB4|00000000 3682:MB4|00000000 3683:MB4|00000000 3684:MB4|00000000 3685:MB4|00000000 3686:MB4|00000000 3687:MB4|00000000 3688:MB4|00000000 3689:MB4|00000000 3690:MB4|00000000 3691:MB4|00000000 3692:MB4|00000000 3693:MB4|00000000 3694:MB4|00000000 3695:MB4|00000000 3696:MB4|00000000 3697:MB4|00000000 3698:MB4|00000000 3699:MB4|00000000 3700:MB4|00000000 3701:MB4|00000000 3702:MB4|00000000 3703:MB4|00000000 3704:MB4|00000000 3705:MB4|00000000 3706:MB4|00000000 3707:MB4|00000000 3708:MB4|00000000 3709:MB4|00000000 3710:MB4|00000000 3711:MB4|00000000 3712:MB4|00000000 3713:MB4|00000000 3714:MB4|00000000 3715:MB4|00000000 3716:MB4|00000000 3717:MB4|00000000 3718:MB4|00000000 3719:MB4|00000000 3720:MB4|00000000 3721:MB4|00000000 3722:MB4|00000000 3723:MB4|00000000 3724:MB4|00000000 3725:MB4|00000000 3726:MB4|00000000 3727:MB4|00000000 3728:MB4|00000000 3729:MB4|00000000 3730:MB4|00000000 3731:MB4|00000000 3732:MB4|00000000 3733:MB4|00000000 3734:MB4|00000000 3735:MB4|00000000 3736:MB4|00000000 3737:MB4|00000000 3738:MB4|00000000 3739:MB4|00000000 3740:MB4|00000000 3741:MB4|00000000 3742:MB4|00000000 3743:MB4|00000000 3744:MB4|00000000 3745:MB4|00000000 3746:MB4|00000000 3747:MB4|00000000 3748:MB4|00000000 3749:MB4|00000000 3750:MB4|00000000 3751:MB4|00000000 3752:MB4|00000000 3753:MB4|00000000 3754:MB4|00000000 3755:MB4|00000000 3756:MB4|00000000 3757:MB4|00000000 3758:MB4|00000000 3759:MB4|00000000 3760:MB4|00000000 3761:MB4|00000000 3762:MB4|00000000 3763:MB4|00000000 3764:MB4|00000000 3765:MB4|00000000 3766:MB4|00000000 3767:MB4|00000000 3768:MB4|00000000 3769:MB4|00000000 3770:MB4|00000000 3771:MB4|00000000 3772:MB4|00000000 3773:MB4|00000000 3774:MB4|00000000 3775:MB4|00000000 3776:MB4|00000000 3777:MB4|00000000 3778:MB4|00000000 3779:MB4|00000000 3780:MB4|00000000 3781:MB4|00000000 3782:MB4|00000000 3783:MB4|00000000 3784:MB4|00000000 3785:MB4|00000000 3786:MB4|00000000 3787:MB4|00000000 3788:MB4|00000000 3789:MB4|00000000 3790:MB4|00000000 3791:MB4|00000000 3792:MB4|00000000 3793:MB4|00000000 3794:MB4|00000000 3795:MB4|00000000 3796:MB4|00000000 3797:MB4|00000000 3798:MB4|00000000 3799:MB4|00000000 3800:MB4|00000000 3801:MB4|00000000 3802:MB4|00000000 3803:MB4|00000000 3804:MB4|00000000 3805:MB4|00000000 3806:MB4|00000000 3807:MB4|00000000 3808:MB4|00000000 3809:MB4|00000000 3810:MB4|00000000 3811:MB4|00000000 3812:MB4|00000000 3813:MB4|00000000 3814:MB4|00000000 3815:MB4|00000000 3816:MB4|00000000 3817:MB4|00000000 3818:MB4|00000000 3819:MB4|00000000 3820:MB4|00000000 3821:MB4|00000000 3822:MB4|00000000 3823:MB4|00000000 3824:MB4|00000000 3825:MB4|00000000 3826:MB4|00000000 3827:MB4|00000000 3828:MB4|00000000 3829:MB4|00000000 3830:MB4|00000000 3831:MB4|00000000 3832:MB4|00000000 3833:MB4|00000000 3834:MB4|00000000 3835:MB4|00000000 3836:MB4|00000000 3837:MB4|00000000 3838:MB4|00000000 3839:MB4|00000000 3840:MB4|00000000 3841:MB4|00000000 3842:MB4|00000000 3843:MB4|00000000 3844:MB4|00000000 3845:MB4|00000000 3846:MB4|00000000 3847:MB4|00000000 3848:MB4|00000000 3849:MB4|00000000 3850:MB4|00000000 3851:MB4|00000000 3852:MB4|00000000 3853:MB4|00000000 3854:MB4|00000000 3855:MB4|00000000 3856:MB4|00000000 3857:MB4|00000000 3858:MB4|00000000 3859:MB4|00000000 3860:MB4|00000000 3861:MB4|00000000 3862:MB4|00000000 3863:MB4|00000000 3864:MB4|00000000 3865:MB4|00000000 3866:MB4|00000000 3867:MB4|00000000 3868:MB4|00000000 3869:MB4|00000000 3870:MB4|00000000 3871:MB4|00000000 3872:MB4|00000000 3873:MB4|00000000 3874:MB4|00000000 3875:MB4|00000000 3876:MB4|00000000 3877:MB4|00000000 3878:MB4|00000000 3879:MB4|00000000 3880:MB4|00000000 3881:MB4|00000000 3882:MB4|00000000 3883:MB4|00000000 3884:MB4|00000000 3885:MB4|00000000 3886:MB4|00000000 3887:MB4|00000000 3888:MB4|00000000 3889:MB4|00000000 3890:MB4|00000000 3891:MB4|00000000 3892:MB4|00000000 3893:MB4|00000000 3894:MB4|00000000 3895:MB4|00000000 3896:MB4|00000000 3897:MB4|00000000 3898:MB4|00000000 3899:MB4|00000000 3900:MB4|00000000 3901:MB4|00000000 3902:MB4|00000000 3903:MB4|00000000 3904:MB4|00000000 3905:MB4|00000000 3906:MB4|00000000 3907:MB4|00000000 3908:MB4|00000000 3909:MB4|00000000 3910:MB4|00000000 3911:MB4|00000000 3912:MB4|00000000 3913:MB4|00000000 3914:MB4|00000000 3915:MB4|00000000 3916:MB4|00000000 3917:MB4|00000000 3918:MB4|00000000 3919:MB4|00000000 3920:MB4|00000000 3921:MB4|00000000 3922:MB4|00000000 3923:MB4|00000000 3924:MB4|00000000 3925:MB4|00000000 3926:MB4|00000000 3927:MB4|00000000 3928:MB4|00000000 3929:MB4|00000000 3930:MB4|00000000 3931:MB4|00000000 3932:MB4|00000000 3933:MB4|00000000 3934:MB4|00000000 3935:MB4|00000000 3936:MB4|00000000 3937:MB4|00000000 3938:MB4|00000000 3939:MB4|00000000 3940:MB4|00000000 3941:MB4|00000000 3942:MB4|00000000 3943:MB4|00000000 3944:MB4|00000000 3945:MB4|00000000 3946:MB4|00000000 3947:MB4|00000000 3948:MB4|00000000 3949:MB4|00000000 3950:MB4|00000000 3951:MB4|00000000 3952:MB4|00000000 3953:MB4|00000000 3954:MB4|00000000 3955:MB4|00000000 3956:MB4|00000000 3957:MB4|00000000 3958:MB4|00000000 3959:MB4|00000000 3960:MB4|00000000 3961:MB4|00000000 3962:MB4|00000000 3963:MB4|00000000 3964:MB4|00000000 3965:MB4|00000000 3966:MB4|00000000 3967:MB4|00000000 3968:MB4|00000000 3969:MB4|00000000 3970:MB4|00000000 3971:MB4|00000000 3972:MB4|00000000 3973:MB4|00000000 3974:MB4|00000000 3975:MB4|00000000 3976:MB4|00000000 3977:MB4|00000000 3978:MB4|00000000 3979:MB4|00000000 3980:MB4|00000000 3981:MB4|00000000 3982:MB4|00000000 3983:MB4|00000000 3984:MB4|00000000 3985:MB4|00000000 3986:MB4|00000000 3987:MB4|00000000 3988:MB4|00000000 3989:MB4|00000000 3990:MB4|00000000 3991:MB4|00000000 3992:MB4|00000000 3993:MB4|00000000 3994:MB4|00000000 3995:MB4|00000000 3996:MB4|00000000 3997:MB4|00000000 3998:MB4|00000000 3999:MB4|00000000 4000:MB4|00000000 4001:MB4|00000000 4002:MB4|00000000 4003:MB4|00000000 4004:MB4|00000000 4005:MB4|00000000 4006:MB4|00000000 4007:MB4|00000000 4008:MB4|00000000 4009:MB4|00000000 4010:MB4|00000000 4011:MB4|00000000 4012:MB4|00000000 4013:MB4|00000000 4014:MB4|00000000 4015:MB4|00000000 4016:MB4|00000000 4017:MB4|00000000 4018:MB4|00000000 4019:MB4|00000000 4020:MB4|00000000 4021:MB4|00000000 4022:MB4|00000000 4023:MB4|00000000 4024:MB4|00000000 4025:MB4|00000000 4026:MB4|00000000 4027:MB4|00000000 4028:MB4|00000000 4029:MB4|00000000 4030:MB4|00000000 4031:MB4|00000000 4032:MB4|00000000 4033:MB4|00000000 4034:MB4|00000000 4035:MB4|00000000 4036:MB4|00000000 4037:MB4|00000000 4038:MB4|00000000 4039:MB4|00000000 4040:MB4|00000000 4041:MB4|00000000 4042:MB4|00000000 4043:MB4|00000000 4044:MB4|00000000 4045:MB4|00000000 4046:MB4|00000000 4047:MB4|00000000 4048:MB4|00000000 4049:MB4|00000000 4050:MB4|00000000 4051:MB4|00000000 4052:MB4|00000000 4053:MB4|00000000 4054:MB4|00000000 4055:MB4|00000000 4056:MB4|00000000 4057:MB4|00000000 4058:MB4|00000000 4059:MB4|00000000 4060:MB4|00000000 4061:MB4|00000000 4062:MB4|00000000 4063:MB4|00000000 4064:MB4|00000000 4065:MB4|00000000 4066:MB4|00000000 4067:MB4|00000000 4068:MB4|00000000 4069:MB4|00000000 4070:MB4|00000000 4071:MB4|00000000 4072:MB4|00000000 4073:MB4|00000000 4074:MB4|00000000 4075:MB4|00000000 4076:MB4|00000000 4077:MB4|00000000 4078:MB4|00000000 4079:MB4|00000000 4080:MB4|00000000 4081:MB4|00000000 4082:MB4|00000000 4083:MB4|00000000 4084:MB4|00000000 4085:MB4|00000000 4086:MB4|00000000 4087:MB4|00000000 4088:MB4|00000000 4089:MB4|00000000 4090:MB4|00000000 4091:MB4|00000000 4092:MB4|00000000 4093:MB4|00000000 4094:MB4|00000000 4095:MB4|00000000 4096:MB4|00000000 4097:MB4|00000000 4098:MB4|00000000 4099:MB4|00000000 4100:MB4|00000000 4101:MB4|00000000 4102:MB4|00000000 4103:MB4|00000000 4104:MB4|00000000 4105:MB4|00000000 4106:MB4|00000000 4107:MB4|00000000 4108:MB4|00000000 4109:MB4|00000000 4110:MB4|00000000 4111:MB4|00000000 4112:MB4|00000000 4113:MB4|00000000 4114:MB4|00000000 4115:MB4|00000000 4116:MB4|00000000 4117:MB4|00000000 4118:MB4|00000000 4119:MB4|00000000 4120:MB4|00000000 4121:MB4|00000000 4122:MB4|00000000 4123:MB4|00000000 4124:MB4|00000000 4125:MB4|00000000 4126:MB4|00000000 4127:MB4|00000000 4128:MB4|00000000 4129:MB4|00000000 4130:MB4|00000000 4131:MB4|00000000 4132:MB4|00000000 4133:MB4|00000000 4134:MB4|00000000 4135:MB4|00000000 4136:MB4|00000000 4137:MB4|00000000 4138:MB4|00000000 4139:MB4|00000000 4140:MB4|00000000 4141:MB4|00000000 4142:MB4|00000000 4143:MB4|00000000 4144:MB4|00000000 4145:MB4|00000000 4146:MB4|00000000 4147:MB4|00000000 4148:MB4|00000000 4149:MB4|00000000 4150:MB4|00000000 4151:MB4|00000000 4152:MB4|00000000 4153:MB4|00000000 4154:MB4|00000000 4155:MB4|00000000 4156:MB4|00000000 4157:MB4|00000000 4158:MB4|00000000 4159:MB4|00000000 4160:MB4|00000000 4161:MB4|00000000 4162:MB4|00000000 4163:MB4|00000000 4164:MB4|00000000 4165:MB4|00000000 4166:MB4|00000000 4167:MB4|00000000 4168:MB4|00000000 4169:MB4|00000000 4170:MB4|00000000 4171:MB4|00000000 4172:MB4|00000000 4173:MB4|00000000 4174:MB4|00000000 4175:MB4|00000000 4176:MB4|00000000 4177:MB4|00000000 4178:MB4|00000000 4179:MB4|00000000 4180:MB4|00000000 4181:MB4|00000000 4182:MB4|00000000 4183:MB4|00000000 4184:MB4|00000000 4185:MB4|00000000 4186:MB4|00000000 4187:MB4|00000000 4188:MB4|00000000 4189:MB4|00000000 4190:MB4|00000000 4191:MB4|00000000 4192:MB4|00000000 4193:MB4|00000000 4194:MB4|00000000 4195:MB4|00000000 4196:MB4|00000000 4197:MB4|00000000 4198:MB4|00000000 4199:MB4|00000000 4200:MB4|00000000 4201:MB4|00000000 4202:MB4|00000000 4203:MB4|00000000 4204:MB4|00000000 4205:MB4|00000000 4206:MB4|00000000 4207:MB4|00000000 4208:MB4|00000000 4209:MB4|00000000 4210:MB4|00000000 4211:MB4|00000000 4212:MB4|00000000 4213:MB4|00000000 4214:MB4|00000000 4215:MB4|00000000 4216:MB4|00000000 4217:MB4|00000000 4218:MB4|00000000 4219:MB4|00000000 4220:MB4|00000000 4221:MB4|00000000 4222:MB4|00000000 4223:MB4|00000000 4224:MB4|00000000 4225:MB4|00000000 4226:MB4|00000000 4227:MB4|00000000 4228:MB4|00000000 4229:MB4|00000000 4230:MB4|00000000 4231:MB4|00000000 4232:MB4|00000000 4233:MB4|00000000 4234:MB4|00000000 4235:MB4|00000000 4236:MB4|00000000 4237:MB4|00000000 4238:MB4|00000000 4239:MB4|00000000 4240:MB4|00000000 4241:MB4|00000000 4242:MB4|00000000 4243:MB4|00000000 4244:MB4|00000000 4245:MB4|00000000 4246:MB4|00000000 4247:MB4|00000000 4248:MB4|00000000 4249:MB4|00000000 4250:MB4|00000000 4251:MB4|00000000 4252:MB4|00000000 4253:MB4|00000000 4254:MB4|00000000 4255:MB4|00000000 4256:MB4|00000000 4257:MB4|00000000 4258:MB4|00000000 4259:MB4|00000000 4260:MB4|00000000 4261:MB4|00000000 4262:MB4|00000000 4263:MB4|00000000 4264:MB4|00000000 4265:MB4|00000000 4266:MB4|00000000 4267:MB4|00000000 4268:MB4|00000000 4269:MB4|00000000 4270:MB4|00000000 4271:MB4|00000000 4272:MB4|00000000 4273:MB4|00000000 4274:MB4|00000000 4275:MB4|00000000 4276:MB4|00000000 4277:MB4|00000000 4278:MB4|00000000 4279:MB4|00000000 4280:MB4|00000000 4281:MB4|00000000 4282:MB4|00000000 4283:MB4|00000000 4284:MB4|00000000 4285:MB4|00000000 4286:MB4|00000000 4287:MB4|00000000 4288:MB4|00000000 4289:MB4|00000000 4290:MB4|00000000 4291:MB4|00000000 4292:MB4|00000000 4293:MB4|00000000 4294:MB4|00000000 4295:MB4|00000000 4296:MB4|00000000 4297:MB4|00000000 4298:MB4|00000000 4299:MB4|00000000 4300:MB4|00000000 4301:MB4|00000000 4302:MB4|00000000 4303:MB4|00000000 4304:MB4|00000000 4305:MB4|00000000 4306:MB4|00000000 4307:MB4|00000000 4308:MB4|00000000 4309:MB4|00000000 4310:MB4|00000000 4311:MB4|00000000 4312:MB4|00000000 4313:MB4|00000000 4314:MB4|00000000 4315:MB4|00000000 4316:MB4|00000000 4317:MB4|00000000 4318:MB4|00000000 4319:MB4|00000000 4320:MB4|00000000 4321:MB4|00000000 4322:MB4|00000000 4323:MB4|00000000 4324:MB4|00000000 4325:MB4|00000000 4326:MB4|00000000 4327:MB4|00000000 4328:MB4|00000000 4329:MB4|00000000 4330:MB4|00000000 4331:MB4|00000000 4332:MB4|00000000 4333:MB4|00000000 4334:MB4|00000000 4335:MB4|00000000 4336:MB4|00000000 4337:MB4|00000000 4338:MB4|00000000 4339:MB4|00000000 4340:MB4|00000000 4341:MB4|00000000 4342:MB4|00000000 4343:MB4|00000000 4344:MB4|00000000 4345:MB4|00000000 4346:MB4|00000000 4347:MB4|00000000 4348:MB4|00000000 4349:MB4|00000000 4350:MB4|00000000 4351:MB4|00000000 4352:MB4|00000000 4353:MB4|00000000 4354:MB4|00000000 4355:MB4|00000000 4356:MB4|00000000 4357:MB4|00000000 4358:MB4|00000000 4359:MB4|00000000 4360:MB4|00000000 4361:MB4|00000000 4362:MB4|00000000 4363:MB4|00000000 4364:MB4|00000000 4365:MB4|00000000 4366:MB4|00000000 4367:MB4|00000000 4368:MB4|00000000 4369:MB4|00000000 4370:MB4|00000000 4371:MB4|00000000 4372:MB4|00000000 4373:MB4|00000000 4374:MB4|00000000 4375:MB4|00000000 4376:MB4|00000000 4377:MB4|00000000 4378:MB4|00000000 4379:MB4|00000000 4380:MB4|00000000 4381:MB4|00000000 4382:MB4|00000000 4383:MB4|00000000 4384:MB4|00000000 4385:MB4|00000000 4386:MB4|00000000 4387:MB4|00000000 4388:MB4|00000000 4389:MB4|00000000 4390:MB4|00000000 4391:MB4|00000000 4392:MB4|00000000 4393:MB4|00000000 4394:MB4|00000000 4395:MB4|00000000 4396:MB4|00000000 4397:MB4|00000000 4398:MB4|00000000 4399:MB4|00000000 4400:MB4|00000000 4401:MB4|00000000 4402:MB4|00000000 4403:MB4|00000000 4404:MB4|00000000 4405:MB4|00000000 4406:MB4|00000000 4407:MB4|00000000 4408:MB4|00000000 4409:MB4|00000000 4410:MB4|00000000 4411:MB4|00000000 4412:MB4|00000000 4413:MB4|00000000 4414:MB4|00000000 4415:MB4|00000000 4416:MB4|00000000 4417:MB4|00000000 4418:MB4|00000000 4419:MB4|00000000 4420:MB4|00000000 4421:MB4|00000000 4422:MB4|00000000 4423:MB4|00000000 4424:MB4|00000000 4425:MB4|00000000 4426:MB4|00000000 4427:MB4|00000000 4428:MB4|00000000 4429:MB4|00000000 4430:MB4|00000000 4431:MB4|00000000 4432:MB4|00000000 4433:MB4|00000000 4434:MB4|00000000 4435:MB4|00000000 4436:MB4|00000000 4437:MB4|00000000 4438:MB4|00000000 4439:MB4|00000000 4440:MB4|00000000 4441:MB4|00000000 4442:MB4|00000000 4443:MB4|00000000 4444:MB4|00000000 4445:MB4|00000000 4446:MB4|00000000 4447:MB4|00000000 4448:MB4|00000000 4449:MB4|00000000 4450:MB4|00000000 4451:MB4|00000000 4452:MB4|00000000 4453:MB4|00000000 4454:MB4|00000000 4455:MB4|00000000 4456:MB4|00000000 4457:MB4|00000000 4458:MB4|00000000 4459:MB4|00000000 4460:MB4|00000000 4461:MB4|00000000 4462:MB4|00000000 4463:MB4|00000000 4464:MB4|00000000 4465:MB4|00000000 4466:MB4|00000000 4467:MB4|00000000 4468:MB4|00000000 4469:MB4|00000000 4470:MB4|00000000 4471:MB4|00000000 4472:MB4|00000000 4473:MB4|00000000 4474:MB4|00000000 4475:MB4|00000000 4476:MB4|00000000 4477:MB4|00000000 4478:MB4|00000000 4479:MB4|00000000 4480:MB4|00000000 4481:MB4|00000000 4482:MB4|00000000 4483:MB4|00000000 4484:MB4|00000000 4485:MB4|00000000 4486:MB4|00000000 4487:MB4|00000000 4488:MB4|00000000 4489:MB4|00000000 4490:MB4|00000000 4491:MB4|00000000 4492:MB4|00000000 4493:MB4|00000000 4494:MB4|00000000 4495:MB4|00000000 4496:MB4|00000000 4497:MB4|00000000 4498:MB4|00000000 4499:MB4|00000000 4500:MB4|00000000 4501:MB4|00000000 4502:MB4|00000000 4503:MB4|00000000 4504:MB4|00000000 4505:MB4|00000000 4506:MB4|00000000 4507:MB4|00000000 4508:MB4|00000000 4509:MB4|00000000 4510:MB4|00000000 4511:MB4|00000000 4512:MB4|00000000 4513:MB4|00000000 4514:MB4|00000000 4515:MB4|00000000 4516:MB4|00000000 4517:MB4|00000000 4518:MB4|00000000 4519:MB4|00000000 4520:MB4|00000000 4521:MB4|00000000 4522:MB4|00000000 4523:MB4|00000000 4524:MB4|00000000 4525:MB4|00000000 4526:MB4|00000000 4527:MB4|00000000 4528:MB4|00000000 4529:MB4|00000000 4530:MB4|00000000 4531:MB4|00000000 4532:MB4|00000000 4533:MB4|00000000 4534:MB4|00000000 4535:MB4|00000000 4536:MB4|00000000 4537:MB4|00000000 4538:MB4|00000000 4539:MB4|00000000 4540:MB4|00000000 4541:MB4|00000000 4542:MB4|00000000 4543:MB4|00000000 4544:MB4|00000000 4545:MB4|00000000 4546:MB4|00000000 4547:MB4|00000000 4548:MB4|00000000 4549:MB4|00000000 4550:MB4|00000000 4551:MB4|00000000 4552:MB4|00000000 4553:MB4|00000000 4554:MB4|00000000 4555:MB4|00000000 4556:MB4|00000000 4557:MB4|00000000 4558:MB4|00000000 4559:MB4|00000000 4560:MB4|00000000 4561:MB4|00000000 4562:MB4|00000000 4563:MB4|00000000 4564:MB4|00000000 4565:MB4|00000000 4566:MB4|00000000 4567:MB4|00000000 4568:MB4|00000000 4569:MB4|00000000 4570:MB4|00000000 4571:MB4|00000000 4572:MB4|00000000 4573:MB4|00000000 4574:MB4|00000000 4575:MB4|00000000 4576:MB4|00000000 4577:MB4|00000000 4578:MB4|00000000 4579:MB4|00000000 4580:MB4|00000000 4581:MB4|00000000 4582:MB4|00000000 4583:MB4|00000000 4584:MB4|00000000 4585:MB4|00000000 4586:MB4|00000000 4587:MB4|00000000 4588:MB4|00000000 4589:MB4|00000000 4590:MB4|00000000 4591:MB4|00000000 4592:MB4|00000000 4593:MB4|00000000 4594:MB4|00000000 19822:MWVB28|00000000506f6c79546872656164466f726b54687265616400000000 19823:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19824:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19825:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19826:MWVB28|00000000506f6c7950726f63657373456e764572726f724e616d6500 19827:MWVB28|00000000506f6c795468726561644d75746578556e6c6f636b000000 19828:MWVB28|00000000506f6c7954687265616454657374496e7465727275707400 19829:MWVB28|00000000506f6c795468726561644d75746578426c6f636b00000000 19830:MWVB28|00000000506f6c79546872656164436f6e6456617257616b65000000 19831:MWVB24|00000000506f6c7957616974466f725369676e616c000000 19832:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 19833:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19834:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19835:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19836:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 19837:MWVB24|00000000506f6c7941646441726269747261727900000000 19838:MWVB28|00000000506f6c795375627472616374417262697472617279000000 19839:MWVB28|00000000506f6c7951756f7452656d41726269747261727900000000 19840:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 19841:MWVB28|00000000506f6c7950726f63657373456e7647656e6572616c000000 19842:MWVB16|00000000506f6c7946696e6973680000 19843:MWVB28|00000000506f6c795468726561644d6178537461636b53697a650000 19844:MWVB24|00000000506f6c7947657446756e6374696f6e4e616d6500 19845:MWVB28|00000000506f6c794d756c7469706c79417262697472617279000000 19846:MWVB28|00000000506f6c7952656d61696e6465724172626974726172790000 19847:MWVB20|00000000506f6c794f7241726269747261727900 19848:MWVB32|00000000506f6c794765744c6f774f7264657241734c61726765576f72640000 19849:MWVB28|00000000506f6c79436f6d7061726541726269747261727900000000 19850:MWVB24|00000000506f6c79416e6441726269747261727900000000 19851:MWVB20|00000000506f6c795265616c47656e6572616c00 19852:MWVB24|00000000506f6c7944697669646541726269747261727900 19853:MWVB28|00000000506f6c79436f707942797465566563546f436f6465000000 19854:MWVB24|00000000506f6c79536574436f6465436f6e7374616e7400 19855:MWVB24|00000000506f6c794c6f636b4d757461626c65436f646500 19856:MWVB28|00000000506f6c795265616c426f786564546f537472696e67000000 19857:MWVB20|00000000506f6c7953697a65446f75626c650000 19858:MWVB20|00000000506f6c7953697a65466c6f6174000000 19859:MWVB16|00000000506f6c794765744142490000 19860:MWVB32|00000000506f6c79437265617465456e747279506f696e744f626a6563740000 19861:MWVB24|00000000506f6c794261736963494f47656e6572616c0000 polyml-5.7.1/imports/polymlx86_64win.txt0000644000175000017500003056173613204034553017173 0ustar daviddavidObjects 19912 Root 53 53:O1|@10483 54:O2|@56,@55 55:O2|@59,@58 56:O2|@10484,@0 57:S19|466f726569676e4d656d6f72792e5f2d283129 58:O2|@515,@514 59:O2|@10485,@60 60:O2|@10526,@507 61:O6|@62,@15094,@63,@15095,@2,@15093 62:O2|4096,@15302 63:O14|@65,@66,@71,0,0,@72,0,@73,@81,@84,4096,0,@87,@64 64:O1|@90 65:S6|7374644f7574 66:O1|@67 67:O3|@10486,@68,1 68:O1|@10487 69:S50|4c696272617279494f537570706f72742e777261704f757446696c654465736372283529746578745072696d57722d283129 70:S18|506f6c794261736963494f47656e6572616c 71:O3|@10488,@68,1 72:O1|1 73:O1|@74 74:O3|@10489,@75,1 75:O1|@10490 76:O4|11,@78,0,@77 77:O5|@79,143,0,143,0 78:S9|537562736372697074 79:S26|2e5c62617369735c4c696272617279537570706f72742e736d6c 80:S49|4c696272617279494f537570706f72742e777261704f757446696c65446573637228352977726974654172726179283129 81:O1|@82 82:O3|@10491,@75,1 83:S50|4c696272617279494f537570706f72742e777261704f757446696c6544657363722835297772697465566563746f72283129 84:O1|@85 85:O3|@10492,@86,1 86:O1|@10493 87:O1|@88 88:O3|@10494,@74,@85 89:S40|5072696d494f28292e6175676d656e7457726974657228312977726974654172724e42272d283129 90:O3|@10495,@82,@85 91:S40|5072696d494f28292e6175676d656e7457726974657228312977726974655665634e42272d283129 92:S31|556e61626c6520746f20637265617465207369676e616c207468726561640a 93:O1|@10496 94:S8|666c7573684f7574 95:O4|@15096,@96,0,0 96:S20|426c6f636b696e674e6f74537570706f72746564 97:O5|@98,514,0,515,0 98:S25|2e5c62617369735c426173696353747265616d494f2e736d6c 99:S2|496f 100:O1|@101 101:O1|@10497 102:O2|@103,0 103:O2|3,@104 104:S4|2e2e2e7d 105:O4|5,@106,0,0 106:S8|4f766572666c6f77 107:O1|@10498 108:O2|3,@109 109:S3|2e2e2e 110:O2|@111,0 111:O2|3,@112 112:S4|2e2e2e29 113:O2|@10500,@114 114:O2|@10503,@126 115:O2|@116,0 116:S1|22 117:O4|4,@119,0,@118 118:O5|@79,169,0,169,0 119:S4|53697a65 120:O4|4,@119,0,@121 121:O5|@79,138,0,138,0 122:S7|61646450502d31 123:B8|0000000000000000 124:S16|537472696e672e636f6e636174283129 125:S19|537472696e672e746f537472696e6773283229 126:O256|@155,@156,@157,@158,@159,@160,@161,@162,@163,@164,@165,@166,@167,@168,@169,@170,@171,@172,@173,@174,@175,@176,@177,@178,@179,@180,@181,@182,@183,@184,@185,@186,@187,@188,@189,@190,@191,@192,@193,@194,@195,@196,@197,@198,@199,@200,@201,@202,@203,@204,@205,@206,@207,@208,@209,@210,@211,@212,@213,@214,@215,@216,@217,@218,@219,@220,@221,@222,@223,@224,@225,@226,@227,@228,@229,@230,@231,@232,@233,@234,@235,@236,@237,@238,@239,@240,@241,@242,@243,@244,@245,@246,@247,@248,@249,@250,@251,@252,@253,@254,@255,@256,@257,@258,@259,@260,@261,@262,@263,@264,@265,@266,@267,@268,@269,@270,@271,@272,@273,@274,@275,@276,@277,@278,@279,@280,@281,@282,@283,@284,@285,@286,@287,@288,@289,@290,@291,@292,@293,@294,@295,@296,@297,@298,@299,@300,@301,@302,@303,@304,@305,@306,@307,@308,@309,@310,@311,@312,@313,@314,@315,@316,@317,@318,@319,@320,@321,@322,@323,@324,@325,@326,@327,@328,@329,@330,@331,@332,@333,@334,@335,@336,@337,@338,@339,@340,@341,@342,@343,@344,@345,@346,@347,@348,@349,@350,@351,@352,@353,@354,@355,@356,@357,@358,@359,@360,@361,@362,@363,@364,@365,@366,@367,@368,@369,@370,@371,@372,@373,@374,@375,@376,@377,@378,@379,@380,@381,@382,@383,@384,@385,@386,@387,@388,@389,@390,@391,@392,@393,@394,@395,@396,@397,@398,@399,@400,@401,@402,@403,@404,@405,@406,@407,@408,@409,@154 127:S2|5c5c 128:S2|5c22 129:S2|5c61 130:S2|5c62 131:S2|5c74 132:S2|5c6e 133:S2|5c76 134:S2|5c66 135:S2|5c72 136:S2|5c5e 137:O4|@15100,@139,0,@138 138:O5|@140,126,0,126,0 139:S3|436872 140:S18|2e5c62617369735c537472696e672e736d6c 141:S1|5c 142:O4|7,@144,0,@143 143:O5|@145,125,0,125,0 144:S3|446976 145:S23|2e5c62617369735c496e697469616c42617369732e4d4c 146:O4|5,@148,0,@147 147:O5|@145,128,0,128,0 148:S8|4f766572666c6f77 149:O4|7,@151,0,@150 150:O5|@145,134,0,134,0 151:S3|446976 152:S16|436861722e746f537472696e67283129 153:S18|436861722e6f6374496e7452657072283329 154:S1|ff 155:S1|00 156:S1|01 157:S1|02 158:S1|03 159:S1|04 160:S1|05 161:S1|06 162:S1|07 163:S1|08 164:S1|09 165:S1|0a 166:S1|0b 167:S1|0c 168:S1|0d 169:S1|0e 170:S1|0f 171:S1|10 172:S1|11 173:S1|12 174:S1|13 175:S1|14 176:S1|15 177:S1|16 178:S1|17 179:S1|18 180:S1|19 181:S1|1a 182:S1|1b 183:S1|1c 184:S1|1d 185:S1|1e 186:S1|1f 187:S1|20 188:S1|21 189:S1|22 190:S1|23 191:S1|24 192:S1|25 193:S1|26 194:S1|27 195:S1|28 196:S1|29 197:S1|2a 198:S1|2b 199:S1|2c 200:S1|2d 201:S1|2e 202:S1|2f 203:S1|30 204:S1|31 205:S1|32 206:S1|33 207:S1|34 208:S1|35 209:S1|36 210:S1|37 211:S1|38 212:S1|39 213:S1|3a 214:S1|3b 215:S1|3c 216:S1|3d 217:S1|3e 218:S1|3f 219:S1|40 220:S1|41 221:S1|42 222:S1|43 223:S1|44 224:S1|45 225:S1|46 226:S1|47 227:S1|48 228:S1|49 229:S1|4a 230:S1|4b 231:S1|4c 232:S1|4d 233:S1|4e 234:S1|4f 235:S1|50 236:S1|51 237:S1|52 238:S1|53 239:S1|54 240:S1|55 241:S1|56 242:S1|57 243:S1|58 244:S1|59 245:S1|5a 246:S1|5b 247:S1|5c 248:S1|5d 249:S1|5e 250:S1|5f 251:S1|60 252:S1|61 253:S1|62 254:S1|63 255:S1|64 256:S1|65 257:S1|66 258:S1|67 259:S1|68 260:S1|69 261:S1|6a 262:S1|6b 263:S1|6c 264:S1|6d 265:S1|6e 266:S1|6f 267:S1|70 268:S1|71 269:S1|72 270:S1|73 271:S1|74 272:S1|75 273:S1|76 274:S1|77 275:S1|78 276:S1|79 277:S1|7a 278:S1|7b 279:S1|7c 280:S1|7d 281:S1|7e 282:S1|7f 283:S1|80 284:S1|81 285:S1|82 286:S1|83 287:S1|84 288:S1|85 289:S1|86 290:S1|87 291:S1|88 292:S1|89 293:S1|8a 294:S1|8b 295:S1|8c 296:S1|8d 297:S1|8e 298:S1|8f 299:S1|90 300:S1|91 301:S1|92 302:S1|93 303:S1|94 304:S1|95 305:S1|96 306:S1|97 307:S1|98 308:S1|99 309:S1|9a 310:S1|9b 311:S1|9c 312:S1|9d 313:S1|9e 314:S1|9f 315:S1|a0 316:S1|a1 317:S1|a2 318:S1|a3 319:S1|a4 320:S1|a5 321:S1|a6 322:S1|a7 323:S1|a8 324:S1|a9 325:S1|aa 326:S1|ab 327:S1|ac 328:S1|ad 329:S1|ae 330:S1|af 331:S1|b0 332:S1|b1 333:S1|b2 334:S1|b3 335:S1|b4 336:S1|b5 337:S1|b6 338:S1|b7 339:S1|b8 340:S1|b9 341:S1|ba 342:S1|bb 343:S1|bc 344:S1|bd 345:S1|be 346:S1|bf 347:S1|c0 348:S1|c1 349:S1|c2 350:S1|c3 351:S1|c4 352:S1|c5 353:S1|c6 354:S1|c7 355:S1|c8 356:S1|c9 357:S1|ca 358:S1|cb 359:S1|cc 360:S1|cd 361:S1|ce 362:S1|cf 363:S1|d0 364:S1|d1 365:S1|d2 366:S1|d3 367:S1|d4 368:S1|d5 369:S1|d6 370:S1|d7 371:S1|d8 372:S1|d9 373:S1|da 374:S1|db 375:S1|dc 376:S1|dd 377:S1|de 378:S1|df 379:S1|e0 380:S1|e1 381:S1|e2 382:S1|e3 383:S1|e4 384:S1|e5 385:S1|e6 386:S1|e7 387:S1|e8 388:S1|e9 389:S1|ea 390:S1|eb 391:S1|ec 392:S1|ed 393:S1|ee 394:S1|ef 395:S1|f0 396:S1|f1 397:S1|f2 398:S1|f3 399:S1|f4 400:S1|f5 401:S1|f6 402:S1|f7 403:S1|f8 404:S1|f9 405:S1|fa 406:S1|fb 407:S1|fc 408:S1|fd 409:S1|fe 410:O1|@10505 411:O2|3,@412 412:S3|2e2e2e 413:O5|0,0,0,@415,@414 414:O2|@419,0 415:O2|@416,0 416:O2|0,@417 417:O5|@418,0,0,0,0 418:S14|5374616e64617264204261736973 419:O2|3,@420 420:S4|4e4f4e45 421:O2|@423,@422 422:O2|@424,0 423:O3|1,0,0 424:O2|3,@425 425:S1|29 426:O2|3,@427 427:S1|28 428:O3|1,1,0 429:O5|0,0,0,@415,@430 430:O2|@431,0 431:O2|3,@432 432:S4|534f4d45 433:S1|7b 434:S12|7072696e742d6f7074696f6e 435:S1|5b 436:S13|7072696e746f7074696f6e2829 437:O4|0,@438,1,1 438:O1|@10507 439:O1|@10508 440:S23|506f6c7950726f63657373456e764572726f724e616d65 441:S17|7072696e742d4f532e7379736572726f72 442:O2|@443,0 443:O2|3,@425 444:O3|1,1,0 445:O2|3,@446 446:S1|2c 447:O2|3,@427 448:O3|1,1,1 449:O2|3,@450 450:S6|537973457272 451:O2|@452,0 452:O2|3,@196 453:O2|3,@195 454:S11|65786e5072696e74283329 455:S26|65786e5072696e74283329706172656e74686573697365283129 456:O2|@457,0 457:O2|3,@458 458:S1|7d 459:O2|3,@460 460:S6|6e616d65203d 461:O2|3,@462 462:S10|66756e6374696f6e203d 463:O2|3,@464 464:S7|6361757365203d 465:O2|3,@433 466:S14|7072696e742d6c6162656c6c6564 467:O4|11,@78,0,@468 468:O5|@469,111,0,111,0 469:S33|2e5c62617369735c566563746f72536c6963654f7065726174696f6e732e736d6c 470:O3|1,@471,0 471:S9|496e74657272757074 472:O5|@98,501,0,501,0 473:S28|426173696353747265616d494f28292e666c7573684f757427283129 474:O4|12,@476,@477,@475 475:O5|@478,218,0,218,0 476:S6|546872656164 477:S53|5468652073616d65206174747269627574652061707065617273206d6f7265207468616e206f6e636520696e20746865206c697374 478:S18|2e5c62617369735c5468726561642e736d6c 479:S20|5369676e616c2e666f726b546872656164283129 480:O5|@481,77,0,77,0 481:S27|2e5c62617369735c506f6c794d4c457863657074696f6e2e736d6c 482:S20|5468726561644c69622e70726f74656374283329 483:S20|506f6c795468726561644d75746578426c6f636b 484:S23|506f6c7954687265616454657374496e74657272757074 485:S7|7261697365466e 486:S21|506f6c795468726561644d75746578556e6c6f636b 487:S6|6f7574707574 488:O4|@15103,@489,0,0 489:S12|436c6f73656453747265616d 490:O5|@98,610,0,610,0 491:O4|11,@78,0,@492 492:O5|@140,1646,0,1646,0 493:S34|426173696353747265616d494f28292e6f7574707574566563746f72283129283129 494:O5|@98,604,0,605,0 495:O5|@98,577,0,577,0 496:S31|426173696353747265616d494f28292e6f7574707574566563746f72283229 497:O5|@98,595,0,595,0 498:S27|426173696353747265616d494f28292e7772697465566563283429 499:S38|426173696353747265616d494f28292e7772697465566563283429666f7263654f7574283129 500:O4|11,@78,0,@501 501:O5|@469,101,0,101,0 502:O4|11,@78,0,@503 503:O5|@140,267,0,267,0 504:S29|54657874494f2e5465787453747265616d494f2e6f7574707574283229 505:S20|506f6c79546872656164466f726b546872656164 506:S38|5468726561642e5468726561642e6174747273546f576f7264283129636f6e76657274283429 507:O1|@10530 508:O1|@10527 509:S38|5369676e616c2e73696754687265616428312962726f6164436173745765616b283129283129 510:S35|5369676e616c2e73696754687265616428312962726f6164436173745765616b283229 511:S21|506f6c79546872656164436f6e6456617257616b65 512:S19|5369676e616c2e736967546872656164283129 513:S17|506f6c7957616974466f725369676e616c 514:O2|@525,@524 515:O2|@10531,@516 516:O3|@10533,@520,@6 517:S28|426173696353747265616d494f28292e646f4f6e456e747279283129 518:S21|506f6c7950726f63657373456e7647656e6572616c 519:S27|426173696353747265616d494f28292e636c6f7365416c6c283129 520:O3|@10534,@7,@6 521:S28|426173696353747265616d494f28292e636c6f73654f757427283129 522:S35|426173696353747265616d494f28292e7465726d696e61746553747265616d27283129 523:S16|4c6973742e66696c7465722832292829 524:O2|@588,0 525:O3|@10538,@9,@8 526:O9|@10539,@75,@554,@86,@68,@555,@556,@557,@527 527:O6|@10564,@562,@558,0,0,0 528:S47|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329726561644172726179283129 529:S48|4c696272617279494f537570706f72742e77726170496e46696c65446573637228332972656164566563746f72283129 530:S34|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283129283129 531:O3|0,0,0 532:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229676574506f732d283129 533:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229736574506f732d283129 534:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229656e64506f732d283129 535:S43|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329617661696c283129 536:S49|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329746578745072696d52642d283129 537:O4|4,@119,0,@538 538:O5|@79,149,0,149,0 539:S37|5072696d494f28292e6175676d656e7452656164657228312972656164566563272d283129 540:O4|11,@78,0,@541 541:O5|@140,1211,0,1211,0 542:S37|5072696d494f28292e6175676d656e7452656164657228312972656164417272272d283129 543:S39|5072696d494f28292e6175676d656e74526561646572283129726561645665634e42272d283129 544:S39|5072696d494f28292e6175676d656e74526561646572283129726561644172724e42272d283129 545:S7|72656164566563 546:O5|@547,239,0,242,0 547:S18|2e5c62617369735c5072696d494f2e736d6c 548:S38|5072696d494f28292e6175676d656e745265616465722831297265616456656327272d283129 549:S7|72656164417272 550:O5|@547,262,0,265,0 551:S38|5072696d494f28292e6175676d656e745265616465722831297265616441727227272d283129 552:S35|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329 553:S25|5072696d494f28292e6175676d656e74526561646572283129 554:O1|@10560 555:O1|@10561 556:O1|@10562 557:O1|@10563 558:O1|@564 559:O5|@560,135,0,135,0 560:S28|2e5c62617369735c4c696272617279494f537570706f72742e736d6c 561:S31|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283229 562:O1|@563 563:B8|3427000000000000 564:B8|3327000000000000 565:S5|737464496e 566:S37|4261736963496d7065726174697665494f28292e736574496e73747265616d283229283129 567:S19|54657874494f2e6f6e53746172745570283129 568:O5|0,@570,@569,1693,0 569:O3|1,@15104,@10 570:S1694|282a0a20202020436f707972696768742028632920323030362d31302c20323031352d31362020446176696420432e204a2e204d617474686577730a0a2020202054686973206c696272617279206973206672656520736f6674776172653b20796f752063616e2072656469737472696275746520697420616e642f6f720a202020206d6f6469667920697420756e64657220746865207465726d73206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e73652076657273696f6e20322e31206173207075626c697368656420627920746865204672656520536f66747761726520466f756e646174696f6e2e0a202020200a2020202054686973206c69627261727920697320646973747269627574656420696e2074686520686f706520746861742069742077696c6c2062652075736566756c2c0a2020202062757420574954484f555420414e592057415252414e54593b20776974686f7574206576656e2074686520696d706c6965642077617272616e7479206f660a202020204d45524348414e544142494c495459206f72204649544e45535320464f52204120504152544943554c415220505552504f53452e20205365652074686520474e550a202020204c65737365722047656e6572616c205075626c6963204c6963656e736520666f72206d6f72652064657461696c732e0a202020200a20202020596f752073686f756c642068617665207265636569766564206120636f7079206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e736520616c6f6e6720776974682074686973206c6962726172793b206966206e6f742c20777269746520746f20746865204672656520536f6674776172650a20202020466f756e646174696f6e2c20496e632e2c203531204672616e6b6c696e2053742c20466966746820466c6f6f722c20426f73746f6e2c204d41202030323131302d3133303120205553410a2a290a0a282a20436f6d70696c65722074686520636f6d70696c657220616e64206578706f7274206974206173206120706f727461626c652066696c652e20205468652072657374206f66207468650a202020626f6f7473747261702070726f63657373206973207468656e20646f6e65207768656e2074686520706f727461626c652066696c6520697320696d706f727465642e202a290a0a506f6c794d4c2e7072696e745f646570746820303b0a0a506f6c794d4c2e6d616b6520226d6c736f757263652f4d4c436f6d70696c6572223b0a0a66756e20636f6d70696c654261736973416e644578706f72742829203d0a6c65740a20202020282a20546869732066756e6374696f6e2069732074686520726f6f74206f662074686520227072652d6275696c742220636f6d70696c6572732e2020497420636f6d70696c657320696e0a20202020202020746865206261736973206c69627261727920616e64206578706f7274732074686520636f6d70696c657220616c6f6e67207769746820746865206261736973206c6962726172790a20202020202020617320616e206f7065726174696e672d73797374656d207370656369666963206f626a6563742066696c652e202a290a2020202076616c20676c6f62616c5461626c65203a204d616b652e67456e76203d204d616b652e6d616b6547456e762028290a2020202076616c2074657374203d204c6973742e6578697374732028666e20222d2d696e744973496e74496e6622203d3e2074727565207c205f203d3e2066616c7365292028436f6d6d616e644c696e652e617267756d656e74732829290a2020202076616c202829203d20496e697469616c6973652e696e6974476c6f62616c456e767b676c6f62616c5461626c653d676c6f62616c5461626c652c20696e744973417262697472617279507265636973696f6e3d746573747d0a696e0a202020204d616b652e7368656c6c50726f6320676c6f62616c5461626c6528290a656e643b0a0a506f6c794d4c2e7368617265436f6d6d6f6e4461746120636f6d70696c654261736973416e644578706f72743b0a0a506f6c794d4c2e6578706f7274506f727461626c652822706f6c7974656d70222c0a20202020666e202829203d3e2028636f6d70696c654261736973416e644578706f72742028293b204f532e50726f636573732e65786974204f532e50726f636573732e73756363657373292068616e646c65205f203d3e204f532e50726f636573732e65786974204f532e50726f636573732e6661696c757265293b0a 571:O2|1,@572 572:O15|@565,@574,@575,@577,0,0,@578,0,@579,@581,@583,4096,@585,@573,0 573:O1|@587 574:O3|@10547,@86,0 575:O1|@576 576:O3|@10548,@68,0 577:O3|@10550,@68,0 578:O1|0 579:O1|@580 580:O3|@10540,@75,0 581:O1|@582 582:O3|@10541,@554,0 583:O1|@584 584:O3|@10549,@86,0 585:O1|@586 586:O3|@10556,@580,@584 587:O3|@10554,@582,@584 588:O2|@10566,@589 589:O3|@10567,@590,@11 590:O3|@10568,@12,@11 591:O2|@593,@592 592:O2|@61,0 593:O6|@594,@15106,@595,@15107,@13,@15105 594:O2|4096,@15389 595:O14|@597,@598,@600,0,0,@601,0,@602,@604,@606,4096,0,@608,@596 596:O1|@610 597:S6|737464457272 598:O1|@599 599:O3|@10486,@68,2 600:O3|@10488,@68,2 601:O1|2 602:O1|@603 603:O3|@10489,@75,2 604:O1|@605 605:O3|@10491,@75,2 606:O1|@607 607:O3|@10492,@86,2 608:O1|@609 609:O3|@10494,@603,@607 610:O3|@10495,@605,@607 611:O1|@10571 612:S29|4f532e50726f636573732e657869742831296578697446756e2d283129 613:O1|@10572 614:S13|2d2d696e744973496e74496e66 615:O3|@617,@616,0 616:O2|@8,@9 617:S7|3c737464696e3e 618:O1|@10573 619:S24|506f6c794d4c2e72756e46756e6374696f6e283129283129 620:S10|506f6c7946696e697368 621:O4|101,@623,0,@622 622:O5|@624,56,0,56,0 623:S5|4d61746368 624:S20|2e5c62617369735c556e6976657273616c2e4d4c 625:O4|11,@78,0,@626 626:O5|@627,81,0,81,0 627:S17|2e5c62617369735c41727261792e736d6c 628:O4|11,@78,0,@629 629:O5|@630,68,0,68,0 630:S18|2e5c62617369735c566563746f722e736d6c 631:S25|4d414b455f28292e6462456e764c6f6f6b7570283329283129 632:O1|@633 633:O1|@10581 634:O2|3,@635 635:S1|3f 636:S13|7072696e742d64656661756c74 637:S20|486173685461626c652e68617368537562283229 638:O2|@639,0 639:O2|1,2 640:O4|12,@476,@642,@641 641:O5|@478,336,0,336,0 642:S40|54686520737461636b2073697a65206d7573742062652067726561746572207468616e207a65726f 643:O5|@644,94,0,94,0 644:S28|6d6c736f757263655c4d4c436f6d70696c65725c4d414b455f2e4d4c 645:S28|4d414b455f28292e6462456e764c6f6f6b7570283129283129283129 646:S18|4d414b455f28292e70726f74656374283229 647:S22|506f6c795468726561644d6178537461636b53697a65 648:S24|4d414b455f28292e6462456e76456e746572283429283129 649:O4|7,@144,0,@650 650:O5|@145,253,0,253,0 651:B8|0000000000000080 652:O4|5,@148,0,@653 653:O5|@654,74,0,74,0 654:S15|2e5c62617369735c496e742e736d6c 655:S25|486173685461626c652e6861736856616c7565283129283129 656:S16|506f6c79416464417262697472617279 657:O4|4,@119,0,@658 658:O5|@627,70,0,70,0 659:S34|417474656d707420746f2073657420612076616c75652077697468206e616d652028 660:S24|2920696e20612066726f7a656e2068617368207461626c65 661:O5|@662,128,0,128,0 662:S32|6d6c736f757263655c4d4c436f6d70696c65725c486173685461626c652e4d4c 663:S4|4661696c 664:O4|11,@78,0,@665 665:O5|@627,86,0,86,0 666:S20|486173685461626c652e68617368536574283329 667:S31|486173685461626c652e68617368536574283329656e746572546162283329 668:S36|556e6976657273616c5461626c652e756e6976456e746572283429736561726368283129 669:S27|4d414b455f28292e6462456e76456e746572283129283129283129 670:O1|@10618 671:S38|556e6976657273616c5461626c652e666f6c64283329666f6c6448617368456e747279283329 672:S35|486173685461626c652e666f6c642833296765744974656d7c6c656e6774682d283129 673:S22|4d414b455f28292e6462456e76416c6c283329283129 674:S17|486173685461626c652e666f6c64283329 675:S25|4d414b455f28292e6462456e76416c6c283129283129283129 676:O1|@10624 677:O1|@10627 678:O1|@10630 679:O1|@10633 680:O1|@10636 681:O1|@10640 682:O1|@10642 683:O2|@123,0 684:S5|696e707574 685:O5|@98,140,0,140,0 686:S30|426173696353747265616d494f28292e696e7075744e4c69737427283129 687:S30|426173696353747265616d494f28292e696e7075744e4c69737427283429 688:S32|4261736963496d7065726174697665494f28292e696e70757431283129283129 689:S29|426173696353747265616d494f28292e696e7075744e4c697374283329 690:S41|4d414b455f28292e636f6d70696c65496e746f456e7628312975736528332967657443686172283129 691:O1|@10644 692:O1|@10645 693:S26|426173696353747265616d494f28292e646f436c6f7365283129 694:S33|4261736963496d7065726174697665494f28292e636c6f7365496e283129283129 695:O5|@644,258,0,258,0 696:S11|457863657074696f6e2d20 697:S8|207261697365640a 698:O1|@10646 699:O5|@644,264,0,264,0 700:S39|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329636f64652d283129 701:O2|@703,@702 702:O2|@744,@743 703:O4|@15116,@224,@704,0 704:O1|@10648 705:S6|4572726f722d 706:S8|5761726e696e672d 707:O9|@10649,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 708:O2|@10650,@709 709:O2|@10652,@708 710:S29|4c61726765496e742e666d74283229746f4368617247726f7570283229 711:S20|506f6c7951756f7452656d417262697472617279 712:S25|4c61726765496e742e666d74283229746f4368617273283529 713:S15|4c61726765496e742e666d74283229 714:S21|506f6c795375627472616374417262697472617279 715:O2|@165,0 716:S2|2e0a 717:S8|272c206c696e6520 718:S5|20696e2027 719:O4|101,@721,0,@720 720:O5|@722,98,0,98,0 721:S5|4d61746368 722:S30|6d6c736f757263655c4d4c436f6d70696c65725c5072657474792e736d6c 723:O4|@15117,@728,@729,@724 724:O5|@730,105,0,105,0 725:O1|@726 726:O1|@10655 727:S12|7072696e742d737472696e67 728:S4|43617374 729:S7|746f53686f7274 730:S30|6d6c736f757263655c4d4c436f6d70696c65725c416464726573732e4d4c 731:O4|4,@119,0,@732 732:O5|@733,136,0,136,0 733:S16|2e5c62617369735c4c6973742e736d6c 734:O4|101,@721,0,@735 735:O5|@722,108,0,108,0 736:O4|101,@721,0,@737 737:O5|@722,118,0,118,0 738:S43|4d414b455f28292e636f6d70696c65496e746f456e762831297573652833296572726f7250726f63283129 739:O1|@10654 740:S19|5072657474792e75676c795072696e74283129 741:S14|4c6973742e746162462833292829 742:S13|4c6973742e6d61702832292829 743:O2|@746,@745 744:O4|@15118,@224,80,0 745:O2|@748,@747 746:O4|@15119,@224,1,0 747:O2|@750,@749 748:O4|@15120,@224,0,0 749:O2|@761,@760 750:O4|@15121,@224,@751,0 751:O1|@10658 752:O2|@10659,@1 753:S15|54657874494f2e7072696e74283129 754:S24|5072657474792e7072657474795072696e74283129283129 755:O1|@10661 756:S21|5072657474792e7072657474795072696e74283329 757:S30|5072657474792e7072657474795072696e742833296c61794f7574283329 758:S40|5072657474792e7072657474795072696e742833296c61794f7574283329646f5072696e74283229 759:S31|5072657474792e7072657474795072696e7428332967657453697a65283229 760:O2|@764,@763 761:O4|@15122,@224,@762,0 762:O1|@10664 763:O2|@766,@765 764:O4|@15123,@224,0,0 765:O2|@768,@767 766:O4|@15124,@224,0,0 767:O2|@770,@769 768:O4|@15125,@224,0,0 769:O2|@771,0 770:O4|@15126,@224,0,0 771:O4|@15127,@224,0,0 772:O4|@15128,@224,@773,0 773:O1|@10665 774:O4|103,@663,@776,@775 775:O5|@644,241,0,241,0 776:S13|537461746963204572726f7273 777:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283129 778:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329 779:O2|@10680,@15116 780:O1|@10681 781:O4|103,@663,@783,@782 782:O5|@784,99,0,99,0 783:S20|4572726f7220696e20736f7572636520636f6465 784:S27|6d6c736f757263655c4d4c436f6d70696c65725c4c45585f2e4d4c 785:S37|4c45585f28292e696e697469616c2833296572726f724d65737361676550726f632d283129 786:O1|@10682 787:S18|44656275672e64656661756c74732d283129 788:O2|@790,@789 789:O2|@792,@791 790:O4|@15114,@224,@786,0 791:O2|@795,@794 792:O4|@15129,@224,@793,0 793:O1|@10683 794:O2|@797,@796 795:O4|@15115,@224,@123,0 796:O2|@800,@799 797:O4|@15130,@224,@798,0 798:O1|@10684 799:O2|@744,@801 800:O4|@15131,@224,1,0 801:O2|@803,@802 802:O2|@764,@804 803:O4|@15132,@224,0,0 804:O2|@766,@805 805:O2|@770,@806 806:O2|@808,@807 807:O2|@771,@809 808:O4|@15133,@224,1,0 809:O2|@768,@810 810:O2|@812,@811 811:O2|@814,@813 812:O4|@15134,@224,6,0 813:O2|@817,@816 814:O4|@15122,@224,@815,0 815:O1|@10685 816:O2|@819,@818 817:O4|@15135,@224,77,0 818:O2|@821,@820 819:O4|@15136,@224,0,0 820:O2|@748,@822 821:O4|@15119,@224,0,0 822:O2|@824,@823 823:O2|@826,@825 824:O4|@15137,@224,0,0 825:O2|@827,0 826:O4|@15138,@224,1,0 827:O4|@15139,@224,1,0 828:O4|@15140,@832,@833,@829 829:O5|@834,123,0,123,0 830:O1|@831 831:O1|@10686 832:S13|496e7465726e616c4572726f72 833:S11|746167206d697373696e67 834:S28|6d6c736f757263655c4d4c436f6d70696c65725c44656275672e4d4c 835:S17|4c45585f28292e696e697469616c283329 836:O1|@10687 837:S19|5072657474792e676574546167283229283129 838:O2|3,@839 839:S24|436f6d70696c6174696f6e20696e7465727275707465640a 840:O4|1,@471,0,@841 841:O5|@842,237,0,237,0 842:S36|6d6c736f757263655c4d4c436f6d70696c65725c434f4d50494c45525f424f44592e4d4c 843:S26|457863657074696f6e2d20496e7465726e616c4572726f723a20 844:S23|20726169736564207768696c6520636f6d70696c696e67 845:O5|@842,246,0,246,0 846:S36|20756e65787065637465646c7920726169736564207768696c6520636f6d70696c696e67 847:O5|@842,255,0,255,0 848:O1|@10689 849:S42|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429676c6f62616c732d283129 850:S34|756e657870656374656420656e64206f662066696c6520656e636f756e7465726564 851:O1|@10692 852:S15|436861722e69735370616365283129 853:O4|@15140,@832,@855,@854 854:O5|@784,600,0,600,0 855:S11|656e64206f662066696c65 856:O2|@10693,@15141 857:S16|756e6b6e6f776e2073796d626f6c202e 858:S17|756e6b6e6f776e2073796d626f6c202e2e 859:O1|@10694 860:S20|3a3d3c3e2b2a215e2f7c26257e2d3f60405c2423 861:S27|436861722e636f6e7461696e732831296d61746368283129283129 862:O1|@10695 863:S24|4c45585f28292e6973416c7068614e756d65726963283129 864:S19|756e6b6e6f776e206368617261637465722022 865:S20|4c45585f28292e7061727365546f6b656e283129 866:O3|1,1,0 867:O2|@868,0 868:O2|3,@123 869:S32|4c45585f28292e627265616b576f726473283129616464427265616b73283129 870:O3|0,@872,@871 871:O200|0,0,0,0,0,0,@874,@876,@878,0,@880,0,0,0,0,0,0,0,0,@882,@884,0,0,0,0,@886,0,0,@888,0,0,0,0,0,0,@890,0,0,0,0,0,0,@891,0,0,0,0,0,0,0,0,0,0,0,0,0,@892,0,@894,0,@895,@897,0,0,0,0,0,0,0,0,@898,@900,@902,0,0,@904,0,@906,0,@908,0,0,0,0,@910,0,0,@912,@914,@916,@918,@919,@921,@923,@925,@927,0,@929,@931,@933,0,0,@935,0,@937,0,0,0,0,0,0,@939,0,0,0,@941,0,0,0,0,0,0,@943,@944,@946,0,0,0,0,0,0,0,0,0,0,@948,@950,@952,0,0,0,0,0,0,0,0,0,@954,0,0,0,0,0,0,0,@956,0,0,0,0,0,0,0,0,0,0,0,@958,0,0,0,@960,0,0,@962,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@964,0,0,0,0,0,0,0,0,@873 872:O2|@10699,200 873:O2|@966,63 874:O2|@875,29 875:S6|696e66697872 876:O2|@877,36 877:S6|6e6f6e666978 878:O2|@879,28 879:S5|696e666978 880:O2|@881,65 881:S4|77697468 882:O2|@883,25 883:S2|6966 884:O2|@885,49 885:S7|73686172696e67 886:O2|@887,37 887:S2|6f66 888:O2|@889,12 889:S8|6461746174797065 890:O2|@190,23 891:O2|@197,6 892:O2|@893,7 893:S4|63617365 894:O2|@213,9 895:O2|@896,1 896:S7|61627374797065 897:O2|@216,17 898:O2|@899,51 899:S9|7369676e6174757265 900:O2|@901,44 901:S3|726563 902:O2|@903,19 903:S2|666e 904:O2|@905,26 905:S2|696e 906:O2|@907,13 907:S2|646f 908:O2|@909,4 909:S2|2d3e 910:O2|@911,42 911:S5|7261697365 912:O2|@913,18 913:S9|657863657074696f6e 914:O2|@915,22 915:S6|68616e646c65 916:O2|@917,61 917:S3|76616c 918:O2|@250,60 919:O2|@920,54 920:S9|737472756374757265 921:O2|@922,10 922:S2|3a3e 923:O2|@924,56 924:S2|3d3e 925:O2|@926,59 926:S4|74797065 927:O2|@928,38 928:S2|6f70 929:O2|@930,50 930:S3|736967 931:O2|@932,16 932:S6|657174797065 933:O2|@934,34 934:S3|6c6574 935:O2|@936,5 936:S2|6173 937:O2|@938,66 938:S8|7769746874797065 939:O2|@940,20 940:S3|66756e 941:O2|@942,35 942:S5|6c6f63616c 943:O2|@279,62 944:O2|@945,55 945:S4|7468656e 946:O2|@947,40 947:S6|6f72656c7365 948:O2|@949,14 949:S4|656c7365 950:O2|@951,27 951:S7|696e636c756465 952:O2|@953,64 953:S5|7768696c65 954:O2|@955,21 955:S7|66756e63746f72 956:O2|@957,53 957:S6|737472756374 958:O2|@959,2 959:S3|616e64 960:O2|@961,15 961:S3|656e64 962:O2|@963,39 963:S4|6f70656e 964:O2|@965,3 965:S7|616e64616c736f 966:S5|7768657265 967:S21|696e76616c6964206964656e746966696572202d20 968:S20|4c45585f28292e70617273654964656e74283329 969:S19|4c45585f28292e726561644368617273283329 970:S26|4c45585f28292e7265616443686172732833296c6f6f70283129 971:O1|@10703 972:S15|436861722e69734469676974283129 973:S3|307778 974:O1|@10704 975:S18|436861722e69734865784469676974283129 976:S2|3077 977:S2|3078 978:S23|6d616c666f726d6564207265616c206e756d6265723a20 979:S2|457e 980:S21|4c45585f28292e70617273654e756d626572283229 981:S36|6e6f206d61746368696e672071756f746520666f756e64206f6e2074686973206c696e65 982:O5|@784,350,0,350,0 983:S9|456e644f664c696e65 984:O5|@784,389,0,389,0 985:S22|756e7072696e7461626c652063686172616374657220 986:S16|20666f756e6420696e20737472696e67 987:S21|756e65787065637465642063686172616374657220 988:S11|20696e205c202e2e2e205c 989:S21|4c45585f28292e7061727365537472696e67283129 990:S33|4c45585f28292e7061727365537472696e67283129676574537472696e67283129 991:S28|656e64206f662066696c6520666f756e6420696e20636f6d6d656e74 992:S22|4c45585f28292e7061727365436f6d6d656e74283129 993:S36|4c45585f28292e7061727365436f6d6d656e74283129736b6970436f6d6d656e74283129 994:O4|11,@78,0,@995 995:O5|@140,305,0,305,0 996:S16|537472696e672e746f6b656e73283229 997:S23|537472696e672e746f6b656e73283229746f6b27283229 998:O3|0,0,0 999:S24|4d6973632e6c6f6f6b757044656661756c74283229283129 1000:O1|@10711 1001:S15|53796d5365742e2b2b283229283129 1002:O1|@10712 1003:O2|3,@1004 1004:S3|2e2e2e 1005:O1|@10714 1006:S2|203a 1007:O2|@1008,0 1008:O3|1,1,2 1009:S3|203a3e 1010:O2|3,@216 1011:O2|3,@196 1012:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283129 1013:O2|@10717,@1014 1014:O11|@10723,@15144,@15148,@1191,@15150,@1201,@15152,@1220,@15154,@1239,@15143 1015:O2|@1017,@1016 1016:O1|@10719 1017:O1|@10718 1018:S28|545950455f5452454528292e656d70747954797065456e762d283129 1019:O2|@866,0 1020:O2|@1003,0 1021:O3|1,0,0 1022:O2|3,@195 1023:O2|@1021,0 1024:O2|3,@199 1025:O4|@15142,@1027,0,@1026 1026:O5|@733,48,0,48,0 1027:S5|456d707479 1028:O4|@15142,@1027,0,@1029 1029:O5|@733,47,0,47,0 1030:S28|545950455f5452454528292e7072696e745479706556617273283329 1031:O2|@1011,0 1032:S15|4c6973742e40283229617070283129 1033:S36|545950455f5452454528292e7072696e7454797065566172732833297056617273283229 1034:O2|3,@1035 1035:S3|626164 1036:O2|3,@1037 1037:S7|6e6f2074797065 1038:O2|3,@909 1039:O1|@10724 1040:O1|@10725 1041:S48|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283229283129 1042:S45|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283129 1043:O1|@10727 1044:O2|3,@412 1045:O5|0,0,0,@1047,@1046 1046:O2|@1051,0 1047:O2|@1048,0 1048:O2|0,@1049 1049:O5|@1050,961,961,0,0 1050:S32|6d6c736f757263655c4d4c436f6d70696c65725c545950455f545245452e4d4c 1051:O2|3,@1052 1052:S10|466f756e644d61746368 1053:O5|0,0,0,@1047,@1054 1054:O2|@1055,0 1055:O2|3,@1056 1056:S13|466f756e644e6f744d61746368 1057:O5|0,0,0,@1047,@1058 1058:O2|@1059,0 1059:O2|3,@1060 1060:S8|4e6f74466f756e64 1061:S13|7072696e742d6973466f756e64 1062:O2|@1022,@1023 1063:S4|2e2e2e7d 1064:S6|2c202e2e2e7d 1065:O2|3,@278 1066:S20|545950455f5452454528292e7444697370283529 1067:S28|545950455f5452454528292e74446973702835296469737050283229 1068:O2|3,@202 1069:S42|545950455f5452454528292e744469737028352964697370502832297072696e745443636f6e73283129 1070:O2|@1021,@1031 1071:S41|545950455f5452454528292e744469737028352964697370502832297072657474794c697374283329 1072:S28|545950455f5452454528292e697350726f6475637454797065283129 1073:S25|537472696e672e636f6e636174576974682832296d6b283129 1074:S41|545950455f5452454528292e744469737028352964697370502832296e616d65546f4c697374283329 1075:S40|545950455f5452454528292e657154797065436f6e73747273283429636f70794964283129283129 1076:O1|@10740 1077:S33|545950455f5452454528292e657154797065436f6e737472732834296964283129 1078:O7|@10742,@15109,@15110,@15108,@15112,@15111,@15113 1079:S31|5354525543545f56414c5328292e6d616b654c6f6f6b283129283129283129 1080:S32|5354525543545f56414c5328292e6d616b65456e746572283129283129283129 1081:S35|5354525543545f56414c5328292e6d616b65416c6c4e616d6573283129283129283129 1082:S24|5354525543545f56414c5328292e6d616b65456e76283129 1083:S29|545950455f5452454528292e636f6d706f73654d617073283129283129 1084:O1|@10765 1085:S42|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f70794964283129 1086:O1|@10768 1087:S51|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129283129 1088:O1|@10769 1089:O1|@10770 1090:O1|@10772 1091:S56|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129283129 1092:S53|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129 1093:O1|@10773 1094:S48|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129 1095:O4|@15140,@832,@1097,@1096 1096:O5|@1050,776,0,776,0 1097:S27|636f7079547970653a204f7665726c6f616453657420666f756e64 1098:O1|1 1099:S38|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529 1100:O1|@10775 1101:S27|545950455f5452454528292e657175616c54797065496473283229 1102:S40|545950455f5452454528292e657175616c54797065496473283229657175616c5479706573283229 1103:O1|@10774 1104:S23|545950455f5452454528292e636f707954797065283329 1105:S34|545950455f5452454528292e636f707954797065283329636f70794c697374283129 1106:S40|545950455f5452454528292e636f707954797065283329636f70795265636f72644c697374283129 1107:O1|@10779 1108:S26|545950455f5452454528292e636f6d706f73654d617073283329 1109:S33|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129 1110:S55|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b757054797065283129 1111:S57|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b7570537472756374283129 1112:S39|545950455f5452454528292e7444697370283529646973705028322966696e6454797065283229 1113:S27|5554494c49544945535f28292e73706c6974537472696e67283229 1114:O2|@1021,@1115 1115:O2|@1024,0 1116:S35|545950455f5452454528292e7444697370283529646973705028322970526563283229 1117:S17|4d6973632e717569636b536f7274283229 1118:O2|0,0 1119:S22|4d6973632e717569636b536f72742832297173283229 1120:S19|4c6973742e706172746974696f6e2833292829 1121:S23|545950455f5452454528292e6576656e7475616c283129 1122:S39|545950455f5452454528292e6576656e7475616c283129616464546f496e7374616e6365283229 1123:O4|@1125,0,@1126,@1124 1124:O3|@1131,@1188,@1130 1125:S3|696e74 1126:O2|@1127,0 1127:O2|0,@1128 1128:O5|@1129,0,0,0,0 1129:S14|5374616e64617264204261736973 1130:O3|@1190,@1128,@1189 1131:O2|1,@1132 1132:O3|6,@1134,@1133 1133:O2|@1140,0 1134:O4|@1135,@15145,1,1 1135:O1|@10790 1136:S11|457175616c576f72642829 1137:O1|@10791 1138:O2|3,@218 1139:S37|545950455f5452454528292e64656661756c744d6f6e6f547970655072696e746572283129 1140:O4|@15146,@224,@1141,0 1141:O3|3,4,@1142 1142:O5|@10792,@1156,@1145,@1186,@1143 1143:O1|@10801 1144:S39|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e2833292d45 1145:O1|2 1146:O1|@10794 1147:S40|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283129283129 1148:O4|@15140,@832,@1150,@1149 1149:O5|@1151,302,0,302,0 1150:S33|5265666572656e636520746f206e6f6e2d6578697374656e742062696e64696e67 1151:S40|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245452e4d4c 1152:O4|@15140,@832,@1154,@1153 1153:O5|@1151,306,0,306,0 1154:S43|636f646574726565206e6577456e7669726f6e3a204e6f742045787472616374206f7220436f6e73746e74 1155:S37|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283329 1156:O2|@10799,@1157 1157:O2|@1162,@1161 1158:O4|11,@78,0,@1159 1159:O5|@733,60,0,60,0 1160:S39|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129283129 1161:O2|@1181,@1180 1162:O2|@1164,@1163 1163:O3|1,@1167,@1166 1164:O2|1,@1165 1165:O2|2,0 1166:O2|@10800,0 1167:O8|@1169,@1136,0,0,@1168,0,0,1 1168:O2|@1176,@1175 1169:O4|3,@1171,@1173,@1170 1170:O3|9,0,0 1171:O2|8,@1172 1172:O2|0,0 1173:O2|8,@1174 1174:O2|0,1 1175:O2|@1176,0 1176:O2|1,@1177 1177:O2|@1178,0 1178:O1|3 1179:S49|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529696e6c696e65436f64652d283129 1180:O2|@1184,@1183 1181:O2|@1182,@1145 1182:O3|0,@15145,0 1183:O2|@1184,0 1184:O2|@1185,@1145 1185:O3|0,1,0 1186:O2|@1134,@1135 1187:S38|434f44455452454528292e67656e436f64652833292831296669656c6450726f70732d283129 1188:O4|1,@15147,0,0 1189:S8|496e204261736973 1190:S12|4669786564496e742e696e74 1191:O4|@1193,0,@1126,@1192 1192:O3|@1195,@1200,@1194 1193:S4|7265616c 1194:O3|@1193,@1128,@1189 1195:O2|1,@1196 1196:O3|6,@1197,0 1197:O4|0,@15149,2,1 1198:O1|@10802 1199:S40|545950455f5452454528292e6d616b655479706528332964656661756c745072696e746572283129 1200:O4|1,@15148,0,0 1201:O4|@1203,0,@1126,@1202 1202:O3|@1205,@1219,@1204 1203:S4|776f7264 1204:O3|@1203,@1128,@1189 1205:O2|1,@1206 1206:O3|6,@1208,@1207 1207:O2|@1210,0 1208:O4|@1209,@15151,1,1 1209:O1|@10803 1210:O4|@15146,@224,@1211,0 1211:O3|3,4,@1212 1212:O5|@10792,@1214,@1145,@1213,@1143 1213:O2|@1208,@1209 1214:O2|@10799,@1215 1215:O2|@1162,@1216 1216:O2|@1217,@1180 1217:O2|@1218,@1145 1218:O3|0,@15151,0 1219:O4|1,@15150,0,0 1220:O4|@1222,0,@1126,@1221 1221:O3|@1224,@1238,@1223 1222:S4|63686172 1223:O3|@1222,@1128,@1189 1224:O2|1,@1225 1225:O3|6,@1227,@1226 1226:O2|@1229,0 1227:O4|@1228,@15153,1,1 1228:O1|@10804 1229:O4|@15146,@224,@1230,0 1230:O3|3,4,@1231 1231:O5|@10792,@1233,@1145,@1232,@1143 1232:O2|@1227,@1228 1233:O2|@10799,@1234 1234:O2|@1162,@1235 1235:O2|@1236,@1180 1236:O2|@1237,@1145 1237:O3|0,@15153,0 1238:O4|1,@15152,0,0 1239:O4|@1241,0,@1126,@1240 1240:O3|@1243,@1284,@1242 1241:S6|737472696e67 1242:O3|@1241,@1128,@1189 1243:O2|1,@1244 1244:O3|6,@1246,@1245 1245:O2|@1249,0 1246:O4|@1247,@15155,3,1 1247:O1|@10805 1248:S14|737472696e67457175616c697479 1249:O4|@15146,@224,@1250,0 1250:O3|3,4,@1251 1251:O5|@10792,@1253,@1145,@1252,@1143 1252:O2|@1246,@1247 1253:O2|@10799,@1254 1254:O2|@1256,@1255 1255:O2|@1280,@1279 1256:O2|@1164,@1257 1257:O3|1,@1258,@1166 1258:O8|@1260,@1248,0,0,@1259,0,0,1 1259:O2|@1274,@1273 1260:O4|5,@1169,@1262,@1261 1261:O4|5,@1264,@1270,@1263 1262:O3|6,1,0 1263:O3|6,0,0 1264:O4|3,@1266,@1265,@1170 1265:O3|13,@1268,@1269 1266:O3|13,@1268,@1267 1267:O3|@1171,0,0 1268:O1|8 1269:O3|@1173,0,0 1270:O5|4,1,@1265,@1272,@1271 1271:O3|@1171,0,8 1272:O3|@1173,0,8 1273:O2|@1277,0 1274:O2|1,@1275 1275:O2|@1178,@1276 1276:O2|@1178,@1177 1277:O2|1,@1278 1278:O2|@1178,@1275 1279:O2|@1282,@1183 1280:O2|@1281,@1145 1281:O3|0,@15155,0 1282:O2|@1283,@1145 1283:O3|0,3,0 1284:O4|1,@15154,0,0 1285:O2|3,@926 1286:O2|3,@966 1287:O1|@10806 1288:O1|@10807 1289:O3|1,1,1 1290:O2|3,@913 1291:O1|@10808 1292:S27|5349474e41545552455328292e646973706c617953696773283129 1293:O2|3,@951 1294:O2|@1285,@1019 1295:O1|@10809 1296:S31|5349474e41545552455328292e646973706c61795370656373283229283129 1297:O2|3,@885 1298:O1|@10810 1299:O1|@10716 1300:S46|5349474e41545552455328292e646973706c61795370656373283229646973706c61795369677342696e64283129 1301:O2|3,@920 1302:O2|3,@917 1303:O1|@10812 1304:O1|@10813 1305:O2|3,@887 1306:S56|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436f6e7374727563746f72283129 1307:O1|@10816 1308:O2|@1309,0 1309:O2|3,@1063 1310:O1|@10817 1311:O2|@1312,0 1312:O2|3,@458 1313:O2|3,@1314 1314:S6|6e616d65203d 1315:O2|3,@446 1316:O2|3,@1317 1317:S7|656e747279203d 1318:O2|3,@433 1319:O5|0,0,0,@1321,@1320 1320:O2|@1324,0 1321:O2|@1322,0 1322:O2|0,@1323 1323:O5|@1050,1192,1192,0,0 1324:O2|3,@1325 1325:S5|4e616d6573 1326:S11|7072696e742d6e616d6573 1327:S2|2727 1328:S33|545950455f5452454528292e7661724e616d6553657175656e6365283129283129 1329:S40|545950455f5452454528292e7661724e616d6553657175656e63652831292831296e616d65283129 1330:S30|545950455f5452454528292e7661724e616d6553657175656e6365283129 1331:O1|@10814 1332:S32|545950455f5452454528292e7479706546726f6d547970655061727365283129 1333:S26|545950455f5452454528292e6d6170746f5265636f7264283229 1334:S25|545950455f5452454528292e736f72744c6162656c73283129 1335:S35|545950455f5452454528292e736f72744c6162656c73283129656e7465722833292829 1336:S40|545950455f5452454528292e6d6b4c6162656c456e74727928332973747269705a65726f73283129 1337:S57|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446174617479706542696e64283129 1338:S30|5052494e545f50415253455452454528292e7072696e744c697374283429 1339:O1|@10831 1340:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745479706542696e64283129 1341:O2|3,@938 1342:O1|@10833 1343:O1|@10811 1344:S60|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61794c69737457697468427074732d283129 1345:O2|3,@881 1346:O2|3,@896 1347:O2|3,@889 1348:O2|3,@965 1349:O2|@866,@1350 1350:O2|@1305,0 1351:O2|3,@893 1352:O1|@10834 1353:O2|3,@924 1354:S33|5052494e545f50415253455452454528292e646973706c61794d61746368283129 1355:O2|3,@949 1356:O2|3,@945 1357:O2|3,@883 1358:O2|3,@213 1359:O2|3,@875 1360:O2|3,@879 1361:O2|3,@877 1362:O1|@10835 1363:S40|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229283129 1364:O2|3,@1365 1365:S7|3c456d7074793e 1366:O1|@10836 1367:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283129 1368:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283229 1369:O2|3,@903 1370:O1|@10839 1371:O1|@10840 1372:O1|@10842 1373:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283129 1374:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436c61757365283129 1375:S48|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446563283229 1376:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e746676616c62696e64283129 1377:O2|3,@940 1378:O2|3,@915 1379:O2|@1380,0 1380:O2|3,@280 1381:O2|3,@936 1382:O2|3,@246 1383:S10|636f6e76537472696e67 1384:O2|@189,0 1385:S8|636f6e7643686172 1386:S2|2322 1387:O2|@866,@1388 1388:O2|@1389,@1019 1389:O2|3,@905 1390:O1|@10848 1391:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745374724e616d65283129 1392:O2|3,@963 1393:O2|3,@947 1394:O2|3,@911 1395:O2|3,@1396 1396:S2|2829 1397:O2|3,@907 1398:O2|3,@953 1399:O2|3,@250 1400:S28|5349474e41545552455328292e646973706c61795370656373283229 1401:S27|5349474e41545552455328292e646973706c61794c697374283429 1402:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229 1403:O2|@1404,@1019 1404:O2|3,@901 1405:O2|@866,@1406 1406:O2|@1407,0 1407:O2|3,@959 1408:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e7456616c42696e64283229 1409:O2|@866,@1410 1410:O2|@1411,0 1411:O2|3,@961 1412:O2|@1021,@1413 1413:O2|@1414,0 1414:O2|3,@248 1415:S2|203d 1416:S54|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61795265634c697374283229 1417:S28|5349474e41545552455328292e646973706c61795370656373283129 1418:O2|3,@930 1419:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283229 1420:O1|@10869 1421:O1|@10870 1422:O2|3,@942 1423:O1|@10871 1424:O1|@10868 1425:O2|3,@1415 1426:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283129 1427:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283229 1428:S30|535452554354555245535f28292e646973706c6179537472756374283229 1429:S28|535452554354555245535f28292e646973706c61794c697374283429 1430:S30|535452554354555245535f28292e646973706c6179537472756374283129 1431:O2|3,@934 1432:O2|3,@957 1433:S35|535452554354555245535f28292e646973706c617953747275637456616c7565283229 1434:S27|5349474e41545552455328292e646973706c617953696773283229 1435:O2|3,@955 1436:O1|@10884 1437:S47|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617953696742696e64283129 1438:O2|3,@899 1439:S30|535452554354555245535f28292e646973706c6179546f70446563283129 1440:S30|535452554354555245535f28292e646973706c6179546f70446563283229 1441:O2|@10885,@15157 1442:S48|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d65732831295f2d283129 1443:S43|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d6573283129 1444:O1|@10894 1445:S36|535452554354555245535f28292e706173733253747275637473283329656e762d283129 1446:S48|535452554354555245535f28292e706173733253747275637473283329746f704c6576656c49644e756d626572283129 1447:O0| 1448:O4|4,@119,0,@1449 1449:O5|@630,78,0,78,0 1450:S52|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129283129 1451:S49|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129 1452:O1|@10899 1453:S39|545950455f5452454528292e67656e6572616c6973652832296e65774d617463687c742d283129 1454:O1|@10902 1455:S47|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129283129 1456:O4|101,@721,0,@1457 1457:O5|@1050,90,0,90,0 1458:S44|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129 1459:S36|545950455f5452454528292e67656e6572616c6973655479706573283329747673283129 1460:O1|@10904 1461:S40|545950455f5452454528292e67656e6572616c6973655479706573283329636f706965642d283129 1462:S32|535452554354555245535f28292e706173733253747275637473283329283129 1463:S30|545950455f5452454528292e67656e6572616c6973655479706573283329 1464:S34|5554494c49544945535f28292e7365617263684c6973742832296170706c79283129 1465:S41|5554494c49544945535f28292e7365617263684c6973742832296170706c792831296170706c283129 1466:S34|5554494c49544945535f28292e7365617263684c697374283229656e746572283129 1467:S35|5554494c49544945535f28292e7365617263684c6973742832296c6f6f6b7570283129 1468:S29|535452554354555245535f28292e706173733253747275637473283329 1469:O3|0,@1470,@15158 1470:O1|@10913 1471:O4|@15140,@832,@1473,@1472 1472:O5|@1151,76,0,76,0 1473:S14|6c6f61643a206e65676174697665 1474:O4|@15140,@832,@1476,@1475 1475:O5|@1151,79,0,79,0 1476:S12|626f74746f6d206c6576656c 1477:S25|434f44455452454528292e626f74746f6d4c6576656c283129 1478:S52|535452554354555245535f28292e7061737332537472756374732833297061737332546f704465632832296d616b654964283129 1479:S28|5354525543545f56414c5328292e6d616b65426f756e644964283129 1480:S40|5354525543545f56414c5328292e6d616b65426f756e644964576974684571557064617465283129 1481:O2|@10916,@1482 1482:O2|@11673,@1481 1483:S55|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296e6577456e762d283129 1484:O2|1,@1263 1485:S54|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296d616b654964283429 1486:O2|@10927,@1487 1487:O5|@11336,@3596,@15220,@15237,@15214 1488:O1|@10928 1489:S37|54595045434845434b5f50415253455452454528292e7061737332283529656e762d283129 1490:S56|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352974797065456e762d283129 1491:O1|@10929 1492:S30|54595045434845434b5f50415253455452454528292e7061737332283529 1493:O4|@15140,@832,@1495,@1494 1494:O5|@1496,1414,0,1414,0 1495:S28|61737369676e54797065733a20656d7074797472656520666f756e64 1496:S53|6d6c736f757263655c4d4c436f6d70696c65725c5061727365547265655c54595045434845434b5f5041525345545245452e736d6c 1497:O4|@15140,@832,@1499,@1498 1498:O5|@1496,1411,0,1411,0 1499:S34|61737369676e54797065733a206c617965726564207061747465726e20666f756e64 1500:O4|@15140,@832,@1502,@1501 1501:O5|@1496,1408,0,1408,0 1502:S27|61737369676e54797065733a2077696c646361726420666f756e64 1503:O2|@1505,@1504 1504:O2|@1505,0 1505:O5|5,0,@1507,@1506,0 1506:O4|@1507,0,@1126,@1508 1507:S4|626f6f6c 1508:O3|@1510,@1524,@1509 1509:O3|@1507,@1128,@1189 1510:O2|1,@1511 1511:O3|6,@1513,@1512 1512:O2|@1515,0 1513:O4|@1514,@15159,1,1 1514:O1|@10933 1515:O4|@15146,@224,@1516,0 1516:O3|3,4,@1517 1517:O5|@10792,@1519,@1145,@1518,@1143 1518:O2|@1513,@1514 1519:O2|@10799,@1520 1520:O2|@1162,@1521 1521:O2|@1522,@1180 1522:O2|@1523,@1145 1523:O3|0,@15159,0 1524:O4|1,@15160,0,0 1525:O12|@10934,@1526,@15143,@15144,@15148,@1191,@15150,@1201,@15152,@1220,@15154,@1239 1526:O6|@10970,@15163,@15164,@15165,@15162,@15143 1527:O1|@10935 1528:S27|28496e636f6d70617469626c65206f7665726c6f6164696e677329 1529:S20|28496e636f6d70617469626c6520747970657329 1530:S38|545950455f5452454528292e6d616b654571756976616c656e74283229676574417267283129 1531:O4|@15140,@832,@1533,@1532 1532:O5|@1050,1594,0,1594,0 1533:S35|6d616b654571756976616c656e743a204e6f74206120747970652066756e6374696f6e 1534:O4|@15140,@832,@1536,@1535 1535:O5|@1050,2443,0,2443,0 1536:S36|556e696669636174696f6e3a204f7665726c6f61645365742f4f7665726c6f6164536574 1537:S29|28446966666572656e74207479706520636f6e7374727563746f727329 1538:S32|28446966666572656e74206e756d62657273206f6620617267756d656e747329 1539:S25|545950455f5452454528292e756e6966795479706573283229 1540:S42|2843616e6e6f7420756e6966792077697468206578706c696369742074797065207661726961626c6529 1541:S44|2854797065207661726961626c6520746f20626520756e6966696564206f636375727320696e207479706529 1542:O1|@10950 1543:S45|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229283129 1544:O1|@10951 1545:O4|@15140,@832,@1547,@1546 1546:O5|@1548,347,0,347,0 1547:S18|6973457175616c6974793a2054797065466e 1548:S34|6d6c736f757263655c4d4c436f6d70696c65725c5354525543545f56414c532e4d4c 1549:S54|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b45715476283129 1550:S63|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b4571547628312966696c746572283129 1551:S24|28526571756972657320657175616c697479207479706529 1552:O1|@10953 1553:S60|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129283129 1554:S57|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129 1555:S33|545950455f5452454528292e756e69667954797065732832296d61746368283229 1556:O4|@15161,@1558,0,@1557 1557:O5|@1559,52,0,52,0 1558:S6|4f7074696f6e 1559:S18|2e5c62617369735c4f7074696f6e2e736d6c 1560:S28|28446966666572656e74206e756d626572206f66206669656c647329 1561:S7|284669656c6420 1562:S9|206d697373696e6729 1563:S48|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f726473283429 1564:S64|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f7264732834296d617463684c6162656c6c6564283229 1565:S15|4c697374506169722e7a6970283229 1566:S47|545950455f5452454528292e756e69667954797065732832296d61746368283229696e746572736563742832292829 1567:O1|@10960 1568:S44|2854797065207661726961626c65206973206672656520696e20737572726f756e64696e672073636f706529 1569:S42|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229 1570:O1|@10965 1571:S34|545950455f5452454528292e666f6c6454797065283129666f6c6454283129283129 1572:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283229 1573:S15|4c6973742e666f6c64722833292829 1574:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283129 1575:S23|545950455f5452454528292e666f6c6454797065283129 1576:S61|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296f6363757273436865636b4661696c73283229 1577:O4|@15140,@832,@1579,@1578 1578:O5|@1050,1725,0,1725,0 1579:S28|657175616c697479202d204f7665726c6f616473657420666f756e64 1580:S23|545950455f5452454528292e657175616c697479283329 1581:S10|417267756d656e74733a 1582:O2|@10973,@1014 1583:S6|43616e277420 1584:S5|756e696679 1585:S2|746f 1586:O2|@866,@1587 1587:O2|@1588,0 1588:O2|3,@1537 1589:O2|3,@1585 1590:S50|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129 1591:S2|282a 1592:S2|2a29 1593:S71|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e737472283329 1594:S87|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e7374722833297072696e745769746844657363283329 1595:S36|545950455f5452454528292e756e69667954797065734572726f725265706f7274283429 1596:O3|1,1,3 1597:O2|3,@1598 1598:S7|526561736f6e3a 1599:O2|3,@1600 1600:S46|417267756d656e7473206f6620616e64616c736f206d7573742068617665207479706520626f6f6c2a626f6f6c2e 1601:S9|46756e6374696f6e3a 1602:S9|417267756d656e743a 1603:O2|@866,@1604 1604:O2|@1605,0 1605:O5|0,0,0,0,@1606 1606:O2|@1597,@1607 1607:O2|@1596,@1608 1608:O2|@1609,0 1609:O2|3,@1610 1610:S49|56616c7565206265696e67206170706c69656420646f6573206e6f74206861766520612066756e6374696f6e2074797065 1611:O2|3,@1612 1612:S35|54797065206572726f7220696e2066756e6374696f6e206170706c69636174696f6e2e 1613:O5|@123,0,0,0,0 1614:S37|2068617320616c7265616479206265656e20626f756e6420696e2074686973206d61746368 1615:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d61746368547265652832296d657373466e283329 1616:S30|5052494e545f50415253455452454528292e6572726f724e656172283529 1617:O1|@10983 1618:S28|56414c55455f4f505328292e6d616b654c6f63616c56283129283129 1619:S57|54595045434845434b5f50415253455452454528292e7061737332283529737472696e67734f665365617263684c6973742834295f2d283129 1620:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229626f6479456e762d283129 1621:S63|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283129283129 1622:S36|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c79283129 1623:S43|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c792831296170706c283129 1624:S36|5554494c49544945535f28292e6e6f4475706c696361746573283229656e746572283129 1625:S37|5554494c49544945535f28292e6e6f4475706c6963617465732832296c6f6f6b7570283129 1626:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229 1627:S45|54595045434845434b5f50415253455452454528292e7061737332283529676976654572726f72283329283129 1628:S11|436f6e7374727563746f72 1629:S11|3c756e646566696e65643e 1630:S21|206973206e6f74206120636f6e7374727563746f72 1631:O1|@10995 1632:S46|436f6e7374727563746f7220696e2061207061747465726e20776173206e6f7420616e206964656e746966696572 1633:O2|@10996,@15143 1634:O1|@10997 1635:S13|2074797065287329206e6f7420 1636:S11|2920726571756972657320 1637:S18|5479706520636f6e7374727563746f722028 1638:S26|545950455f5452454528292e61737369676e5479706573283329 1639:S46|545950455f5452454528292e61737369676e54797065732833297479706546726f6d547970655061727365283129 1640:S9|537472756374757265 1641:O1|@1642 1642:O2|@1643,0 1643:O4|@1645,0,@1126,@1644 1644:O3|@1647,@1651,@1646 1645:S9|756e646566696e6564 1646:O3|@1645,@1128,@1652 1647:O2|1,@1648 1648:O3|6,@1649,0 1649:O4|0,@15166,3,1 1650:O1|@11007 1651:O4|1,@15143,0,0 1652:S9|556e646566696e6564 1653:S16|5479706520636f6e7374727563746f72 1654:S23|2920686173206e6f74206265656e206465636c61726564 1655:S14|20696e2073747275637475726520 1656:S28|545950455f5452454528292e61737369676e54797065732833292d45 1657:S2|2028 1658:S24|56414c55455f4f505328292e6c6f6f6b7570547970283329 1659:S38|434f5049455228292e66756c6c436f70794461746174797065283329726573456e762d283129 1660:O1|@11011 1661:S12|656e74657253747275637420 1662:O5|@1663,258,0,258,0 1663:S30|6d6c736f757263655c4d4c436f6d70696c65725c434f504945522e736d6c 1664:O1|@11012 1665:S9|656e74657256616c20 1666:O5|@1663,259,0,259,0 1667:S16|486173685461626c652e686173683a20 1668:O5|@662,88,0,88,0 1669:S28|434f5049455228292e66756c6c436f70794461746174797065283329 1670:S48|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129636f70794964283129 1671:S42|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129283129 1672:O1|@11018 1673:S39|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129 1674:S39|434f5049455228292e6c6f63616c436f70795369672837292833296e65775369672d5f2d283129 1675:O1|@11014 1676:O1|@11029 1677:S37|434f5049455228292e6c6f63616c436f7079536967283729636f7079547970283129283129 1678:O1|@11031 1679:S27|434f5049455228292e6c6f63616c436f7079536967283729283329 1680:O1|@11032 1681:S58|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6453756253747275637473283329 1682:S64|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6454797065732833296d616b654e616d65283129 1683:S62|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f70794964283129 1684:O1|@11041 1685:S71|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129283129 1686:S68|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129 1687:O1|@11042 1688:S53|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329 1689:S24|434f5049455228292e6c6f63616c436f7079536967283729 1690:S41|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629 1691:O1|@11043 1692:O4|11,@78,0,@1693 1693:O5|@1663,261,0,261,0 1694:S33|434f5049455228292e66756c6c436f707944617461747970652833295f2d283129 1695:S21|486173685461626c652e686173684d616b65283129 1696:S30|56414c55455f4f505328292e6c6f6f6b7570537472756374757265283429 1697:O4|@15140,@832,@1699,@1698 1698:O5|@1700,345,0,345,0 1699:S41|66696e64456e747279496e426c6f636b3a207475706c652f6461746174797065206d69736d61746368 1700:S51|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f46554e4354494f4e532e736d6c 1701:O2|16,@1702 1702:O3|6,@1703,0 1703:O4|@15140,@832,@1704,0 1704:S36|496e76616c6964206c6f616420656e636f756e746572656420696e20636f6d70696c6572 1705:O4|@15140,@832,@1707,@1706 1706:O5|@1700,352,0,352,0 1707:S33|66696e64456e747279496e426c6f636b3a20696e76616c69642061646472657373 1708:O4|@15140,@832,@1710,@1709 1709:O5|@1700,373,0,373,0 1710:S30|66696e64456e747279496e426c6f636b3a206e6f7420636f6e7374616e74 1711:O4|@15117,@728,@1713,@1712 1712:O5|@730,102,0,102,0 1713:S9|746f41646472657373 1714:O4|@15140,@832,@1707,@1715 1715:O5|@1700,387,0,387,0 1716:S36|56414c55455f4f505328292e6d616b6553656c6563746564537472756374757265283229 1717:S40|434f4445545245455f46554e4354494f4e5328292e66696e64456e747279496e426c6f636b283329 1718:S35|434f4445545245455f46554e4354494f4e5328292e736574496e6c696e652832292829 1719:S6|56616c75653a 1720:O2|3,@1721 1721:S11|436f6e73747261696e743a 1722:O2|3,@1723 1723:S33|54797065206d69736d6174636820696e207479706520636f6e73747261696e742e 1724:O7|@1629,2,@1484,@578,@1126,0,0 1725:S49|4964656e746966696572206265666f72652060617327206d757374206e6f74206265206120636f6e7374727563746f722e 1726:O1|@11050 1727:S51|436f6e7374727563746f72206d757374206265206170706c69656420746f20616e20617267756d656e74207061747465726e2e 1728:O1|@10993 1729:S79|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e28362970726f63657373456c656d656e74283129 1730:O1|@11052 1731:S50|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129283129 1732:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283529 1733:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129 1734:S4|4974656d 1735:S40|456c656d656e747320696e2061206c697374206861766520646966666572656e742074797065732e 1736:O4|@1738,@1739,@1126,@1737 1737:O3|@1742,@1867,@1741 1738:S4|6c697374 1739:O2|@1740,0 1740:O2|@15168,79992 1741:O3|@1738,@1128,@1189 1742:O2|1,@1743 1743:O3|6,@1745,@1744 1744:O2|@1768,0 1745:O4|@1747,@15169,@1765,@1746 1746:O1|@11060 1747:O1|@11055 1748:S10|65712d6c697374283229 1749:S13|65712d6c697374283229285029 1750:O2|@11057,@15169 1751:O5|0,0,0,@1126,@1752 1752:O2|@1753,0 1753:O2|3,@1754 1754:S3|6e696c 1755:O4|5,@148,0,0 1756:O2|@1757,0 1757:O2|3,@1758 1758:S4|2e2e2e29 1759:O5|0,0,0,@1126,@1760 1760:O2|@1761,0 1761:O2|3,@1762 1762:S2|3a3a 1763:S10|7072696e742d6c697374 1764:S11|7072696e746c6973742829 1765:O1|@11059 1766:S10|626f7865642d6c697374 1767:S9|73697a652d6c697374 1768:O4|@15146,@224,@1769,0 1769:O3|3,4,@1770 1770:O6|@10797,@1146,@1772,@1859,@1771,@1143 1771:O12|@1861,@1864,@1865,@1863,@1862,@1866,@1860,@1747,@15169,@1765,@1746,@1745 1772:O2|@10799,@1773 1773:O2|@1775,@1774 1774:O2|@1846,@1845 1775:O2|@1777,@1776 1776:O3|1,@1779,@1166 1777:O2|1,@1778 1778:O2|2,6 1779:O8|@1781,@1749,0,0,@1780,0,0,1 1780:O2|@1838,0 1781:O2|12,@1782 1782:O8|@1784,@1748,0,@1837,@1783,0,10,1 1783:O2|@1277,@1273 1784:O3|2,@1786,@1785 1785:O2|@1833,@1832 1786:O4|5,@1788,@1262,@1787 1787:O4|5,@1794,@1793,@1263 1788:O4|3,@1790,@1789,@1170 1789:O2|8,@1792 1790:O2|8,@1791 1791:O2|2,4 1792:O2|2,5 1793:O4|5,@1797,@1796,@1263 1794:O3|21,@1795,9 1795:O3|21,@1790,5 1796:O3|15,@1800,@1799 1797:O3|21,@1798,9 1798:O3|21,@1789,5 1799:O4|5,@1813,@1812,@1263 1800:O2|@1802,@1801 1801:O2|@1805,@1804 1802:O4|1,@1177,6,@1803 1803:O4|11,@1790,0,1 1804:O2|@1808,@1807 1805:O4|1,@1177,7,@1806 1806:O4|11,@1790,1,1 1807:O2|@1810,0 1808:O4|1,@1177,8,@1809 1809:O4|11,@1789,0,1 1810:O4|1,@1177,9,@1811 1811:O4|11,@1789,1,1 1812:O2|14,@1824 1813:O4|7,@1815,@1814,1 1814:O4|11,@1822,0,0 1815:O2|@1817,@1816 1816:O2|@1819,0 1817:O2|@1818,1 1818:O2|8,@1778 1819:O2|@1820,1 1820:O2|8,@1821 1821:O2|2,8 1822:O2|8,@1823 1823:O2|1,0 1824:O2|@1826,@1825 1825:O2|@1829,0 1826:O2|@1827,1 1827:O2|8,@1828 1828:O2|2,7 1829:O2|@1830,1 1830:O2|8,@1831 1831:O2|2,9 1832:O2|@1835,0 1833:O2|@1834,1 1834:O3|@1278,4,@1171 1835:O2|@1836,1 1836:O3|@1278,5,@1173 1837:O2|@1172,0 1838:O2|1,@1839 1839:O2|@1840,0 1840:O3|2,0,@1841 1841:O2|@1842,0 1842:O3|0,@1177,@1843 1843:O2|@1818,@1844 1844:O2|@1820,0 1845:O2|@1849,@1848 1846:O2|@1847,@1145 1847:O2|1,@1828 1848:O2|@1855,0 1849:O2|@1851,@1850 1850:O3|1,@1852,@1166 1851:O2|1,@1821 1852:O8|@1854,@1766,0,0,@1853,0,0,1 1853:O2|@1823,0 1854:O3|6,3,0 1855:O2|@1857,@1856 1856:O3|1,@1858,@1166 1857:O2|1,@1831 1858:O8|@1262,@1767,0,0,@1853,0,0,1 1859:O11|2,2,2,2,2,2,2,1,2,2,2 1860:O2|@1866,0 1861:O3|@1745,@1862,@1860 1862:O3|@1864,@1865,@1863 1863:O1|@11063 1864:O1|@11061 1865:O1|@11062 1866:O1|@11064 1867:O4|1,@15170,1,0 1868:O5|5,0,@1241,@1239,0 1869:O5|5,0,@1871,@1870,0 1870:O4|@1871,0,@1126,@1872 1871:S4|756e6974 1872:O3|@1484,@1874,@1873 1873:O3|@1871,@1128,@1871 1874:O3|2,0,@1875 1875:O3|3,0,@1876 1876:O3|0,0,1 1877:O1|@1724 1878:S62|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e283629 1879:O4|@15140,@832,@1881,@1880 1880:O5|@1050,2584,0,2584,0 1881:S26|676574526573756c74202d206e6f7420612066756e6374696f6e 1882:S38|545950455f5452454528292e67656e6572616c6973654f7665726c6f6164283429742d283129 1883:O4|@15140,@832,@1885,@1884 1884:O5|@1050,2599,0,2599,0 1885:S42|67656e6572616c6973654f7665726c6f6164202d20617267206973206e6f742061207479706520766172 1886:O1|@11070 1887:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296f7665726c6f616454797065283229 1888:S42|5052494e545f5441424c4528292e6765744f7665726c6f6164732831297365617263684c697374283129 1889:S3|20313a 1890:S4|7320312d 1891:O2|@213,0 1892:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c697374283329 1893:O4|11,@78,0,@1894 1894:O5|@733,71,0,71,0 1895:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833296170706c794c697374283329 1896:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833297072696e744c697374283429 1897:S12|4c6973742e74616b65283229 1898:S74|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e2836296d61704c6162656c73283129 1899:S4|74727565 1900:S5|66616c7365 1901:S3|726566 1902:S2|6974 1903:S25|526562696e64696e67206f722073706563696679696e672022 1904:S12|2220697320696c6c6567616c 1905:S48|54595045434845434b5f50415253455452454528292e7061737332283529636865636b466f724275696c74496e283529 1906:S15|7175616c6966696564206e616d6520 1907:S13|20696c6c6567616c2068657265 1908:S28|5554494c49544945535f28292e636865636b466f72446f7473283329 1909:S36|5554494c49544945535f28292e636865636b466f72446f7473283329636865636b283129 1910:S41|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70794964283129 1911:S49|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129283129 1912:O1|@11086 1913:S46|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129 1914:O1|@11087 1915:S26|56414c55455f4f505328292e6c6f6f6b757056616c7565283429 1916:S32|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229 1917:S28|56414c55455f4f505328292e6d6b53656c6563746564566172283329 1918:S28|5554494c49544945535f28292e6e6f4475706c696361746573283229 1919:O1|@11091 1920:S52|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129283129 1921:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283529 1922:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129 1923:S6|436c61757365 1924:S37|436c617573657320696e2063617365206861766520646966666572656e742074797065732e 1925:S3|49663a 1926:O2|3,@1927 1927:S46|436f6e646974696f6e20696e2069662d73746174656d656e74206d7573742068617665207479706520626f6f6c2e 1928:S43|2068617320616c7265616479206265656e20626f756e6420696e2074686973206465636c61726174696f6e 1929:S66|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296d657373466e283329 1930:S46|436c617573657320696e20666e2065787072657373696f6e206861766520646966666572656e742074797065732e 1931:S40|436c617573657320696e2068616e646c6572206861766520646966666572656e742074797065732e 1932:O5|5,0,@1934,@1933,0 1933:O4|@1934,0,@1126,@1935 1934:S3|65786e 1935:O3|@1937,@1941,@1936 1936:O3|@1934,@1128,@1189 1937:O2|1,@1938 1938:O3|6,@1939,0 1939:O4|0,@15172,2,1 1940:O1|@11101 1941:O4|1,@15173,0,0 1942:O1|@10932 1943:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283129283129 1944:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296c6f63616c456e762d283129 1945:O1|@11109 1946:O2|@1948,@1947 1947:O2|@1948,0 1948:O5|5,0,@1507,@1506,0 1949:O2|3,@1950 1950:S45|417267756d656e7473206f66206f72656c7365206d7573742068617665207479706520626f6f6c2a626f6f6c2e 1951:S6|52616973653a 1952:O2|3,@1953 1953:S42|457863657074696f6e20746f20626520726169736564206d757374206861766520747970652065786e2e 1954:S6|5768696c653a 1955:O2|3,@1956 1956:S55|4c6f6f7020636f6e646974696f6e206f66207768696c652d65787072657373696f6e206d7573742068617665207479706520626f6f6c2e 1957:S20|56616c7565206f7220636f6e7374727563746f72 1958:O1|@11112 1959:O1|@11113 1960:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229283329 1961:O1|@11114 1962:O1|@11115 1963:S68|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229626f6479456e762d283129 1964:S5|5468656e3a 1965:S5|456c73653a 1966:O2|3,@1967 1967:S46|54797065206d69736d61746368206265747765656e207468656e2d7061727420616e6420656c73652d706172742e 1968:S45|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529 1969:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836296d657373466e283329 1970:S52|2068617320616c7265616479206265656e2075736564206173206120636f6e7374727563746f7220696e20746869732074797065 1971:O3|@11122,@1526,@15174 1972:O1|@11124 1973:O2|@108,0 1974:O2|3,@435 1975:S7|61646450502d32 1976:O2|@1977,0 1977:O2|3,@1978 1978:S1|5d 1979:S6|402832292829 1980:S21|7072696e745f6c697374283329706c697374283229 1981:O4|0,@1982,3,1 1982:O1|@11128 1983:O3|@11129,@15178,@15177 1984:S12|7072696e742d76616c756573 1985:O2|@1986,0 1986:O2|3,@425 1987:O2|3,@427 1988:O5|0,0,0,@1990,@1989 1989:O2|@1993,0 1990:O2|@1991,0 1991:O2|0,@1992 1992:O5|@1548,159,159,0,0 1993:O2|3,@1994 1994:S13|54797065436f6e737472536574 1995:S19|7072696e742d74797065436f6e737472536574 1996:O5|@11131,@15184,@15185,@15188,@15179 1997:O2|@11133,@15181 1998:S14|7072696e745f7265662833292d45 1999:O5|@2000,115,0,115,0 2000:S22|2e5c62617369735c45786e5072696e7465722e736d6c 2001:O2|3,@2002 2002:S3|726566 2003:S12|7072696e745f726566283329 2004:S15|706172656e74686573697365283129 2005:S11|7072696e742d7479706573 2006:S9|7072696e742d726566 2007:S18|7072696e742d6c6f636174696f6e50726f70 2008:O4|0,@2009,2,3 2009:O1|@11141 2010:O4|0,@2011,1,1 2011:O1|@11142 2012:O1|@11143 2013:S4|74727565 2014:S5|66616c7365 2015:S10|7072696e742d626f6f6c 2016:O4|0,@2017,3,1 2017:O1|@11144 2018:O4|0,@2019,2,1 2019:O1|@11145 2020:O1|@11146 2021:O2|3,@2022 2022:S15|7374617274506f736974696f6e203d 2023:O2|3,@2024 2024:S11|73746172744c696e65203d 2025:O2|3,@2026 2026:S6|66696c65203d 2027:O2|3,@2028 2028:S13|656e64506f736974696f6e203d 2029:O2|3,@2030 2030:S9|656e644c696e65203d 2031:O4|0,@2032,3,1 2032:O1|@11147 2033:O4|0,@2034,2,2 2034:O1|@11148 2035:O2|3,@2036 2036:S14|726563757273697665526566203d 2037:O2|3,@2038 2038:S10|6c6f63616c526566203d 2039:O2|3,@2040 2040:S13|6578706f72746564526566203d 2041:O2|3,@2042 2042:S8|747970654f66203d 2043:O2|3,@2044 2044:S12|7265666572656e636573203d 2045:O2|3,@2046 2046:S11|6c6f636174696f6e73203d 2047:O2|3,@2048 2048:S15|696e7374616e63655479706573203d 2049:O2|3,@2050 2050:S7|636c617373203d 2051:O2|3,@2052 2052:S8|616363657373203d 2053:O5|0,0,0,@2055,@2054 2054:O2|@2058,0 2055:O2|@2056,0 2056:O2|0,@2057 2057:O5|@1548,244,244,0,0 2058:O2|3,@2059 2059:S5|56616c7565 2060:O5|@11149,@15184,@15187,@15177,@15185 2061:O5|0,0,0,@2063,@2062 2062:O2|@2066,0 2063:O2|@2064,0 2064:O2|0,@2065 2065:O5|@1548,145,145,0,0 2066:O2|3,@2067 2067:S7|42616454797065 2068:O5|0,0,0,@2070,@2069 2069:O2|@2073,0 2070:O2|@2071,0 2071:O2|0,@2072 2072:O5|@1548,147,147,0,0 2073:O2|3,@2074 2074:S9|456d70747954797065 2075:O2|3,@2076 2076:S8|726573756c74203d 2077:O2|3,@2078 2078:S5|617267203d 2079:O5|0,0,0,@2081,@2080 2080:O2|@2084,0 2081:O2|@2082,0 2082:O2|0,@2083 2083:O5|@1548,132,132,0,0 2084:O2|3,@2085 2085:S12|46756e6374696f6e54797065 2086:O2|3,@2087 2087:S8|747970656f66203d 2088:O2|3,@2089 2089:S9|7265634c697374203d 2090:O2|3,@2091 2091:S10|66756c6c4c697374203d 2092:O5|0,0,0,@2094,@2093 2093:O2|@2097,0 2094:O2|@2095,0 2095:O2|0,@2096 2096:O5|@1548,138,138,0,0 2097:O2|3,@2098 2098:S12|4c6162656c6c656454797065 2099:S17|7072696e742d74797065436f6e73747273 2100:O2|3,@2101 2101:S9|74797065736574203d 2102:O5|0,0,0,@2104,@2103 2103:O2|@2107,0 2104:O2|@2105,0 2105:O2|0,@2106 2106:O5|@1548,140,140,0,0 2107:O2|3,@2108 2108:S11|4f7665726c6f6164536574 2109:O2|3,@2110 2110:S8|636f6e737472203d 2111:O2|3,@2112 2112:S6|61726773203d 2113:O5|0,0,0,@2115,@2114 2114:O2|@2118,0 2115:O2|@2116,0 2116:O2|0,@2117 2117:O5|@1548,124,124,0,0 2118:O2|3,@2119 2119:S16|54797065436f6e737472756374696f6e 2120:O1|@11154 2121:S3|307778 2122:O2|3,@2123 2123:S7|76616c7565203d 2124:O2|3,@2125 2125:S10|656e636f64696e67203d 2126:O5|0,0,0,@2128,@2127 2127:O2|@2131,0 2128:O2|@2129,0 2129:O2|0,@2130 2130:O5|@1548,122,122,0,0 2131:O2|3,@2132 2132:S7|54797065566172 2133:O2|@11156,@15187 2134:O4|0,@2135,3,1 2135:O1|@11157 2136:O5|0,0,0,@2138,@2137 2137:O2|@2141,0 2138:O2|@2139,0 2139:O2|0,@2140 2140:O5|@1548,162,162,0,0 2141:O2|3,@2142 2142:S9|4669656c644c697374 2143:S20|7072696e742d6c6162656c4669656c644c697374 2144:O2|@1021,@1985 2145:O5|0,0,0,@2147,@2146 2146:O2|@2150,0 2147:O2|@2148,0 2148:O2|0,@2149 2149:O5|@1548,163,163,0,0 2150:O2|3,@2151 2151:S12|466c657869626c654c697374 2152:O1|@11159 2153:O5|0,0,0,@2155,@2154 2154:O2|@2158,0 2155:O2|@2156,0 2156:O2|0,@2157 2157:O5|@1548,267,267,0,0 2158:O2|3,@2159 2159:S10|4465636c617265644174 2160:O5|0,0,0,@2162,@2161 2161:O2|@2165,0 2162:O2|@2163,0 2163:O2|0,@2164 2164:O5|@1548,268,268,0,0 2165:O2|3,@2166 2166:S8|4f70656e65644174 2167:O5|0,0,0,@2169,@2168 2168:O2|@2172,0 2169:O2|@2170,0 2170:O2|0,@2171 2171:O5|@1548,270,270,0,0 2172:O2|3,@2173 2173:S10|53657175656e63654e6f 2174:O5|0,0,0,@2176,@2175 2175:O2|@2179,0 2176:O2|@2177,0 2177:O2|0,@2178 2178:O5|@1548,269,269,0,0 2179:O2|3,@2180 2180:S11|5374727563747572654174 2181:O1|@11160 2182:O2|3,@2183 2183:S11|6f66436f6e73747273203d 2184:O2|3,@2185 2185:S9|6e756c6c617279203d 2186:O5|0,0,0,@2188,@2187 2187:O2|@2191,0 2188:O2|@2189,0 2189:O2|0,@2190 2190:O5|@1548,260,260,0,0 2191:O2|3,@1628 2192:O5|0,0,0,@2194,@2193 2193:O2|@2197,0 2194:O2|@2195,0 2195:O2|0,@2196 2196:O5|@1548,259,259,0,0 2197:O2|3,@2198 2198:S9|457863657074696f6e 2199:O5|0,0,0,@2201,@2200 2200:O2|@2204,0 2201:O2|@2202,0 2202:O2|0,@2203 2203:O5|@1548,258,258,0,0 2204:O2|3,@2205 2205:S9|50617474426f756e64 2206:O5|0,0,0,@2208,@2207 2207:O2|@2211,0 2208:O2|@2209,0 2209:O2|0,@2210 2210:O5|@1548,257,257,0,0 2211:O2|3,@2212 2212:S8|56616c426f756e64 2213:S16|7072696e742d76616c7565436c617373 2214:O3|@11161,@15189,@15179 2215:O5|0,0,0,@2217,@2216 2216:O2|@2220,0 2217:O2|@2218,0 2218:O2|0,@2219 2219:O5|@1548,170,170,0,0 2220:O2|3,@2221 2221:S6|466f726d616c 2222:O7|@11162,@15190,@15204,@15205,@15206,@15207,@15191 2223:O2|3,@2224 2224:S10|6e756d576f726473203d 2225:O2|3,@2226 2226:S9|696e697469616c203d 2227:O2|3,@2228 2228:S7|666c616773203d 2229:O5|0,0,0,@2231,@2230 2230:O2|@2235,0 2231:O2|@2232,0 2232:O2|0,@2233 2233:O5|@2234,112,112,0,0 2234:S45|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c42617365436f6465547265652e736d6c 2235:O2|3,@2236 2236:S18|416c6c6f63617465576f72644d656d6f7279 2237:O2|3,@2238 2238:S11|73686f7274436f6e64203d 2239:O2|3,@2240 2240:S6|6f706572203d 2241:O2|3,@2242 2242:S10|6c6f6e6743616c6c203d 2243:O2|3,@2244 2244:S6|61726732203d 2245:O2|3,@2246 2246:S6|61726731203d 2247:O5|0,0,0,@2249,@2248 2248:O2|@2252,0 2249:O2|@2250,0 2250:O2|0,@2251 2251:O5|@2234,76,76,0,0 2252:O2|3,@2253 2253:S9|417262697472617279 2254:S13|7072696e742d636f6465557365 2255:O2|3,@2256 2256:S5|757365203d 2257:O2|3,@2258 2258:S6|61646472203d 2259:O1|@11165 2260:O5|0,0,0,@2262,@2261 2261:O2|@2266,0 2262:O2|@2263,0 2263:O2|0,@2264 2264:O5|@2265,137,137,0,0 2265:S56|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c4261636b656e64496e7465726d656469617465436f64652e736d6c 2266:O2|3,@2267 2267:S14|466c6f6174696e67507454797065 2268:O5|0,0,0,@2270,@2269 2269:O2|@2273,0 2270:O2|@2271,0 2271:O2|0,@2272 2272:O5|@2265,136,136,0,0 2273:O2|3,@2274 2274:S11|47656e6572616c54797065 2275:S18|7072696e742d617267756d656e7454797065 2276:O2|3,@2277 2277:S6|6c6f6f70203d 2278:O2|3,@2279 2279:S11|617267756d656e7473203d 2280:O5|0,0,0,@2282,@2281 2281:O2|@2285,0 2282:O2|@2283,0 2283:O2|0,@2284 2284:O5|@2234,83,83,0,0 2285:O2|3,@2286 2286:S9|426567696e4c6f6f70 2287:O5|@11166,@15195,@15196,@15197,@15194 2288:O5|0,0,0,@2290,@2289 2289:O2|@2293,0 2290:O2|@2291,0 2291:O2|0,@2292 2292:O5|@2265,74,74,0,0 2293:O2|3,@2294 2294:S18|416c6c6f63617465427974654d656d6f7279 2295:O5|0,0,0,@2297,@2296 2296:O2|@2300,0 2297:O2|@2298,0 2298:O2|0,@2299 2299:O5|@2265,70,70,0,0 2300:O2|3,@2301 2301:S19|4669786564507265636973696f6e4172697468 2302:O5|0,0,0,@2304,@2303 2303:O2|@2307,0 2304:O2|@2305,0 2305:O2|0,@2306 2306:O5|@2265,76,76,0,0 2307:O2|3,@2308 2308:S14|4c61726765576f72644172697468 2309:O5|0,0,0,@2311,@2310 2310:O2|@2314,0 2311:O2|@2312,0 2312:O2|0,@2313 2313:O5|@2265,75,75,0,0 2314:O2|3,@2315 2315:S19|4c61726765576f7264436f6d70617269736f6e 2316:O5|0,0,0,@2318,@2317 2317:O2|@2321,0 2318:O2|@2319,0 2319:O2|0,@2320 2320:O5|@2265,77,77,0,0 2321:O2|3,@2322 2322:S16|4c61726765576f72644c6f676963616c 2323:O5|0,0,0,@2325,@2324 2324:O2|@2328,0 2325:O2|@2326,0 2326:O2|0,@2327 2327:O5|@2265,78,78,0,0 2328:O2|3,@2329 2329:S14|4c61726765576f72645368696674 2330:O5|0,0,0,@2332,@2331 2331:O2|@2335,0 2332:O2|@2333,0 2333:O2|0,@2334 2334:O5|@2265,80,80,0,0 2335:O2|3,@2336 2336:S9|5265616c4172697468 2337:O5|0,0,0,@2339,@2338 2338:O2|@2342,0 2339:O2|@2340,0 2340:O2|0,@2341 2341:O5|@2265,79,79,0,0 2342:O2|3,@2343 2343:S14|5265616c436f6d70617269736f6e 2344:O5|0,0,0,@2346,@2345 2345:O2|@2349,0 2346:O2|@2347,0 2347:O2|0,@2348 2348:O5|@2265,71,71,0,0 2349:O2|3,@2350 2350:S9|576f72644172697468 2351:O2|3,@2352 2352:S6|74657374203d 2353:O2|3,@2354 2354:S10|69735369676e6564203d 2355:O5|0,0,0,@2357,@2356 2356:O2|@2360,0 2357:O2|@2358,0 2358:O2|0,@2359 2359:O5|@2265,69,69,0,0 2360:O2|3,@2361 2361:S14|576f7264436f6d70617269736f6e 2362:O5|0,0,0,@2364,@2363 2363:O2|@2367,0 2364:O2|@2365,0 2365:O2|0,@2366 2366:O5|@2265,72,72,0,0 2367:O2|3,@2368 2368:S11|576f72644c6f676963616c 2369:O5|0,0,0,@2371,@2370 2370:O2|@2374,0 2371:O2|@2372,0 2372:O2|0,@2373 2373:O5|@2265,73,73,0,0 2374:O2|3,@2375 2375:S9|576f72645368696674 2376:S15|7072696e742d62696e6172794f7073 2377:O1|@11167 2378:O5|0,0,0,@2380,@2379 2379:O2|@2383,0 2380:O2|@2381,0 2381:O2|0,@2382 2382:O5|@2265,34,34,0,0 2383:O2|3,@2384 2384:S8|4172697468416464 2385:O5|0,0,0,@2387,@2386 2386:O2|@2390,0 2387:O2|@2388,0 2388:O2|0,@2389 2389:O5|@2265,39,39,0,0 2390:O2|3,@2391 2391:S8|4172697468446976 2392:O5|0,0,0,@2394,@2393 2393:O2|@2397,0 2394:O2|@2395,0 2395:O2|0,@2396 2396:O5|@2265,40,40,0,0 2397:O2|3,@2398 2398:S8|41726974684d6f64 2399:O5|0,0,0,@2401,@2400 2400:O2|@2404,0 2401:O2|@2402,0 2402:O2|0,@2403 2403:O5|@2265,36,36,0,0 2404:O2|3,@2405 2405:S9|41726974684d756c74 2406:O5|0,0,0,@2408,@2407 2407:O2|@2411,0 2408:O2|@2409,0 2409:O2|0,@2410 2410:O5|@2265,37,37,0,0 2411:O2|3,@2412 2412:S9|417269746851756f74 2413:O5|0,0,0,@2415,@2414 2414:O2|@2418,0 2415:O2|@2416,0 2416:O2|0,@2417 2417:O5|@2265,38,38,0,0 2418:O2|3,@2419 2419:S8|417269746852656d 2420:O5|0,0,0,@2422,@2421 2421:O2|@2425,0 2422:O2|@2423,0 2423:O2|0,@2424 2424:O5|@2265,35,35,0,0 2425:O2|3,@2426 2426:S8|4172697468537562 2427:S26|7072696e742d61726974686d657469634f7065726174696f6e73 2428:O1|@11168 2429:O5|0,0,0,@2431,@2430 2430:O2|@2434,0 2431:O2|@2432,0 2432:O2|0,@2433 2433:O5|@2265,27,27,0,0 2434:O2|3,@2435 2435:S9|54657374457175616c 2436:O5|0,0,0,@2438,@2437 2437:O2|@2441,0 2438:O2|@2439,0 2439:O2|0,@2440 2440:O5|@2265,30,30,0,0 2441:O2|3,@2442 2442:S11|5465737447726561746572 2443:O5|0,0,0,@2445,@2444 2444:O2|@2448,0 2445:O2|@2446,0 2446:O2|0,@2447 2447:O5|@2265,31,31,0,0 2448:O2|3,@2449 2449:S16|5465737447726561746572457175616c 2450:O5|0,0,0,@2452,@2451 2451:O2|@2455,0 2452:O2|@2453,0 2453:O2|0,@2454 2454:O5|@2265,28,28,0,0 2455:O2|3,@2456 2456:S8|546573744c657373 2457:O5|0,0,0,@2459,@2458 2458:O2|@2462,0 2459:O2|@2460,0 2460:O2|0,@2461 2461:O5|@2265,29,29,0,0 2462:O2|3,@2463 2463:S13|546573744c657373457175616c 2464:S20|7072696e742d74657374436f6e646974696f6e73 2465:O1|@11169 2466:O5|0,0,0,@2468,@2467 2467:O2|@2471,0 2468:O2|@2469,0 2469:O2|0,@2470 2470:O5|@2265,43,43,0,0 2471:O2|3,@2472 2472:S10|4c6f676963616c416e64 2473:O5|0,0,0,@2475,@2474 2474:O2|@2478,0 2475:O2|@2476,0 2476:O2|0,@2477 2477:O5|@2265,44,44,0,0 2478:O2|3,@2479 2479:S9|4c6f676963616c4f72 2480:O5|0,0,0,@2482,@2481 2481:O2|@2485,0 2482:O2|@2483,0 2483:O2|0,@2484 2484:O5|@2265,45,45,0,0 2485:O2|3,@2486 2486:S10|4c6f676963616c586f72 2487:S23|7072696e742d6c6f676963616c4f7065726174696f6e73 2488:O1|@11170 2489:O5|0,0,0,@2491,@2490 2490:O2|@2494,0 2491:O2|@2492,0 2492:O2|0,@2493 2493:O5|@2265,48,48,0,0 2494:O2|3,@2495 2495:S9|53686966744c656674 2496:O5|0,0,0,@2498,@2497 2497:O2|@2501,0 2498:O2|@2499,0 2499:O2|0,@2500 2500:O5|@2265,50,50,0,0 2501:O2|3,@2502 2502:S20|5368696674526967687441726974686d65746963 2503:O5|0,0,0,@2505,@2504 2504:O2|@2508,0 2505:O2|@2506,0 2506:O2|0,@2507 2507:O5|@2265,49,49,0,0 2508:O2|3,@2509 2509:S17|536869667452696768744c6f676963616c 2510:S21|7072696e742d73686966744f7065726174696f6e73 2511:O5|0,0,0,@2513,@2512 2512:O2|@2516,0 2513:O2|@2514,0 2514:O2|0,@2515 2515:O5|@2234,70,70,0,0 2516:O2|3,@2517 2517:S6|42696e617279 2518:S14|7072696e742d636f646574726565 2519:O2|3,@2520 2520:S8|6f6666736574203d 2521:O2|3,@2522 2522:S7|696e646578203d 2523:O2|3,@2524 2524:S6|62617365203d 2525:O1|@11172 2526:O5|0,0,0,@2528,@2527 2527:O2|@2531,0 2528:O2|@2529,0 2529:O2|0,@2530 2530:O5|@2265,237,237,0,0 2531:O2|3,@2532 2532:S18|426c6f636b4f70436f6d7061726542797465 2533:O5|0,0,0,@2535,@2534 2534:O2|@2538,0 2535:O2|@2536,0 2536:O2|0,@2537 2537:O5|@2265,236,236,0,0 2538:O2|3,@2539 2539:S16|426c6f636b4f70457175616c42797465 2540:O2|3,@2541 2541:S12|6973427974654d6f7665203d 2542:O5|0,0,0,@2544,@2543 2543:O2|@2547,0 2544:O2|@2545,0 2545:O2|0,@2546 2546:O5|@2265,235,235,0,0 2547:O2|3,@2548 2548:S11|426c6f636b4f704d6f7665 2549:S17|7072696e742d626c6f636b4f704b696e64 2550:O2|3,@2551 2551:S12|736f757263654c656674203d 2552:O2|3,@2553 2553:S8|6c656e677468203d 2554:O2|3,@2555 2555:S6|6b696e64203d 2556:O2|3,@2557 2557:S11|646573745269676874203d 2558:O5|0,0,0,@2560,@2559 2559:O2|@2563,0 2560:O2|@2561,0 2561:O2|0,@2562 2562:O5|@2234,107,107,0,0 2563:O2|3,@2564 2564:S14|426c6f636b4f7065726174696f6e 2565:O5|0,0,0,@2567,@2566 2566:O2|@2570,0 2567:O2|@2568,0 2568:O2|0,@2569 2569:O5|@2234,81,81,0,0 2570:O2|3,@2571 2571:S4|436f6e64 2572:O1|@11174 2573:O3|@11175,@2574,@15117 2574:O1|@11176 2575:S3|4c4954 2576:S6|434f44452022 2577:S5|46554e2022 2578:S20|4c4954203c6c6f6e6720776f726420646174613e 2579:S9|425954452064617461 2580:S23|416464726573732e737472696e674f66576f7264283129 2581:S19|506f6c7947657446756e6374696f6e4e616d65 2582:O4|0,@2583,2,1 2583:O1|@11177 2584:O1|@11178 2585:S25|7072696e742d556e6976657273616c2e756e6976657273616c 2586:O5|0,0,0,@2588,@2587 2587:O2|@2591,0 2588:O2|@2589,0 2589:O2|0,@2590 2590:O5|@2234,54,54,0,0 2591:O2|3,@2592 2592:S7|436f6e73746e74 2593:O2|3,@2594 2594:S12|726573756c7454797065203d 2595:O2|3,@2596 2596:S10|66756e6374696f6e203d 2597:O2|3,@2598 2598:S9|6172674c697374203d 2599:O5|0,0,0,@2601,@2600 2600:O2|@2604,0 2601:O2|@2602,0 2602:O2|0,@2603 2603:O5|@2234,61,61,0,0 2604:O2|3,@2605 2605:S4|4576616c 2606:O5|0,0,0,@2608,@2607 2607:O2|@2611,0 2608:O2|@2609,0 2609:O2|0,@2610 2610:O5|@2234,56,56,0,0 2611:O2|3,@2612 2612:S7|45787472616374 2613:O5|0,0,0,@2615,@2614 2614:O2|@2618,0 2615:O2|@2616,0 2616:O2|0,@2617 2617:O5|@2234,110,110,0,0 2618:O2|3,@2619 2619:S11|4765745468726561644964 2620:O2|3,@2621 2621:S9|68616e646c6572203d 2622:O2|3,@2623 2623:S5|657870203d 2624:O2|3,@2625 2625:S14|65785061636b657441646472203d 2626:O5|0,0,0,@2628,@2627 2627:O2|@2631,0 2628:O2|@2629,0 2629:O2|0,@2630 2630:O5|@2234,90,90,0,0 2631:O2|3,@2632 2632:S6|48616e646c65 2633:O2|3,@2634 2634:S11|697356617269616e74203d 2635:O5|0,0,0,@2637,@2636 2636:O2|@2640,0 2637:O2|@2638,0 2638:O2|0,@2639 2639:O5|@2234,58,58,0,0 2640:O2|3,@2641 2641:S8|496e646972656374 2642:S14|7072696e742d6c6f6164466f726d 2643:O2|3,@2644 2644:S8|726563557365203d 2645:O2|3,@2646 2646:S12|6c6f63616c436f756e74203d 2647:O2|3,@2648 2648:S10|6973496e6c696e65203d 2649:O2|3,@2650 2650:S9|636c6f73757265203d 2651:O2|3,@2652 2652:S6|626f6479203d 2653:O2|3,@2654 2654:S10|6172675479706573203d 2655:O5|0,0,0,@2657,@2656 2656:O2|@2660,0 2657:O2|@2658,0 2658:O2|0,@2659 2659:O5|@2234,79,79,0,0 2660:O2|3,@2661 2661:S6|4c616d626461 2662:O1|@11185 2663:O5|0,0,0,@2665,@2664 2664:O2|@2668,0 2665:O2|@2666,0 2666:O2|0,@2667 2667:O5|@2265,227,227,0,0 2668:O2|3,@2669 2669:S12|4c6f616453746f7265433136 2670:O5|0,0,0,@2672,@2671 2671:O2|@2675,0 2672:O2|@2673,0 2673:O2|0,@2674 2674:O5|@2265,228,228,0,0 2675:O2|3,@2676 2676:S12|4c6f616453746f7265433332 2677:O5|0,0,0,@2679,@2678 2678:O2|@2682,0 2679:O2|@2680,0 2680:O2|0,@2681 2681:O5|@2265,229,229,0,0 2682:O2|3,@2683 2683:S12|4c6f616453746f7265433634 2684:O5|0,0,0,@2686,@2685 2685:O2|@2689,0 2686:O2|@2687,0 2687:O2|0,@2688 2688:O5|@2265,226,226,0,0 2689:O2|3,@2690 2690:S11|4c6f616453746f72654338 2691:O5|0,0,0,@2693,@2692 2692:O2|@2696,0 2693:O2|@2694,0 2694:O2|0,@2695 2695:O5|@2265,231,231,0,0 2696:O2|3,@2697 2697:S16|4c6f616453746f726543446f75626c65 2698:O5|0,0,0,@2700,@2699 2699:O2|@2703,0 2700:O2|@2701,0 2701:O2|0,@2702 2702:O5|@2265,230,230,0,0 2703:O2|3,@2704 2704:S15|4c6f616453746f726543466c6f6174 2705:O2|3,@2706 2706:S13|6973496d6d757461626c65203d 2707:O5|0,0,0,@2709,@2708 2708:O2|@2712,0 2709:O2|@2710,0 2710:O2|0,@2711 2711:O5|@2265,225,225,0,0 2712:O2|3,@2713 2713:S15|4c6f616453746f72654d4c42797465 2714:O5|0,0,0,@2716,@2715 2715:O2|@2719,0 2716:O2|@2717,0 2717:O2|0,@2718 2718:O5|@2265,224,224,0,0 2719:O2|3,@2720 2720:S15|4c6f616453746f72654d4c576f7264 2721:O5|0,0,0,@2723,@2722 2722:O2|@2726,0 2723:O2|@2724,0 2724:O2|0,@2725 2725:O5|@2265,232,232,0,0 2726:O2|3,@2727 2727:S25|4c6f616453746f7265556e746167676564556e7369676e6564 2728:S19|7072696e742d6c6f616453746f72654b696e64 2729:O2|3,@2730 2730:S9|61646472657373203d 2731:O5|0,0,0,@2733,@2732 2732:O2|@2736,0 2733:O2|@2734,0 2734:O2|0,@2735 2735:O5|@2234,103,103,0,0 2736:O2|3,@2737 2737:S13|4c6f61644f7065726174696f6e 2738:O5|0,0,0,@2740,@2739 2739:O2|@2743,0 2740:O2|@2741,0 2741:O2|0,@2742 2742:O5|@2234,86,86,0,0 2743:O2|3,@2744 2744:S4|4c6f6f70 2745:S17|7072696e742d636f646542696e64696e67 2746:O5|0,0,0,@2748,@2747 2747:O2|@2751,0 2748:O2|@2749,0 2749:O2|0,@2750 2750:O5|@2234,52,52,0,0 2751:O2|3,@2752 2752:S6|4e6577656e76 2753:O5|0,0,0,@2755,@2754 2754:O2|@2758,0 2755:O2|@2756,0 2756:O2|0,@2757 2757:O5|@2234,88,88,0,0 2758:O2|3,@2759 2759:S5|5261697365 2760:O1|@11188 2761:O2|@2762,0 2762:O2|3,@2763 2763:S4|2e2e2e5d 2764:O2|@2765,0 2765:O2|3,@248 2766:O2|3,@2767 2767:S9|66726f6d4c6973745b 2768:O2|3,@199 2769:S20|426f6f6c566563746f722e707265747479283329 2770:O2|3,@2771 2771:S7|7475706c65203d 2772:O2|3,@2773 2773:S8|66696c746572203d 2774:O2|3,@2775 2775:S11|636f6e7461696e6572203d 2776:O5|0,0,0,@2778,@2777 2777:O2|@2781,0 2778:O2|@2779,0 2779:O2|0,@2780 2780:O5|@2234,94,94,0,0 2781:O2|3,@2782 2782:S12|536574436f6e7461696e6572 2783:O5|0,0,0,@2785,@2784 2784:O2|@2788,0 2785:O2|@2786,0 2786:O2|0,@2787 2787:O5|@2234,105,105,0,0 2788:O2|3,@2789 2789:S14|53746f72654f7065726174696f6e 2790:O2|3,@2791 2791:S5|746167203d 2792:O2|3,@2793 2793:S8|6d6178546167203d 2794:O5|0,0,0,@2796,@2795 2795:O2|@2799,0 2796:O2|@2797,0 2797:O2|0,@2798 2798:O5|@2234,101,101,0,0 2799:O2|3,@2800 2800:S7|54616754657374 2801:O2|3,@2802 2802:S8|6669656c6473203d 2803:O5|0,0,0,@2805,@2804 2804:O2|@2808,0 2805:O2|@2806,0 2806:O2|0,@2807 2807:O5|@2234,92,92,0,0 2808:O2|3,@2809 2809:S5|5475706c65 2810:O1|@11192 2811:O5|0,0,0,@2813,@2812 2812:O2|@2816,0 2813:O2|@2814,0 2814:O2|0,@2815 2815:O5|@2265,59,59,0,0 2816:O2|3,@2817 2817:S15|41746f6d696344656372656d656e74 2818:O5|0,0,0,@2820,@2819 2819:O2|@2823,0 2820:O2|@2821,0 2821:O2|0,@2822 2822:O5|@2265,58,58,0,0 2823:O2|3,@2824 2824:S15|41746f6d6963496e6372656d656e74 2825:O5|0,0,0,@2827,@2826 2826:O2|@2830,0 2827:O2|@2828,0 2828:O2|0,@2829 2829:O5|@2265,60,60,0,0 2830:O2|3,@2831 2831:S11|41746f6d69635265736574 2832:O5|0,0,0,@2834,@2833 2833:O2|@2837,0 2834:O2|@2835,0 2835:O2|0,@2836 2836:O5|@2265,57,57,0,0 2837:O2|3,@2838 2838:S16|436c6561724d757461626c65466c6167 2839:O5|0,0,0,@2841,@2840 2840:O2|@2844,0 2841:O2|@2842,0 2842:O2|0,@2843 2843:O5|@2265,66,66,0,0 2844:O2|3,@2845 2845:S13|466c6f61744669786564496e74 2846:O5|0,0,0,@2848,@2847 2847:O2|@2851,0 2848:O2|@2849,0 2849:O2|0,@2850 2850:O5|@2265,54,54,0,0 2851:O2|3,@2852 2852:S13|497354616767656456616c7565 2853:O5|0,0,0,@2855,@2854 2854:O2|@2858,0 2855:O2|@2856,0 2856:O2|0,@2857 2857:O5|@2265,61,61,0,0 2858:O2|3,@2859 2859:S16|4c6f6e67576f7264546f546167676564 2860:O5|0,0,0,@2862,@2861 2861:O2|@2865,0 2862:O2|@2863,0 2863:O2|0,@2864 2864:O5|@2265,56,56,0,0 2865:O2|3,@2866 2866:S15|4d656d6f727943656c6c466c616773 2867:O5|0,0,0,@2869,@2868 2868:O2|@2872,0 2869:O2|@2870,0 2870:O2|0,@2871 2871:O5|@2265,55,55,0,0 2872:O2|3,@2873 2873:S16|4d656d6f727943656c6c4c656e677468 2874:O5|0,0,0,@2876,@2875 2875:O2|@2879,0 2876:O2|@2877,0 2877:O2|0,@2878 2878:O5|@2265,53,53,0,0 2879:O2|3,@2880 2880:S10|4e6f74426f6f6c65616e 2881:O5|0,0,0,@2883,@2882 2882:O2|@2886,0 2883:O2|@2884,0 2884:O2|0,@2885 2885:O5|@2265,64,64,0,0 2886:O2|3,@2887 2887:S7|5265616c416273 2888:O5|0,0,0,@2890,@2889 2889:O2|@2893,0 2890:O2|@2891,0 2891:O2|0,@2892 2892:O5|@2265,65,65,0,0 2893:O2|3,@2894 2894:S7|5265616c4e6567 2895:O5|0,0,0,@2897,@2896 2896:O2|@2900,0 2897:O2|@2898,0 2898:O2|0,@2899 2899:O5|@2265,62,62,0,0 2900:O2|3,@2901 2901:S16|5369676e6564546f4c6f6e67576f7264 2902:O5|0,0,0,@2904,@2903 2903:O2|@2907,0 2904:O2|@2905,0 2905:O2|0,@2906 2906:O5|@2265,63,63,0,0 2907:O2|3,@2908 2908:S18|556e7369676e6564546f4c6f6e67576f7264 2909:S14|7072696e742d756e6172794f7073 2910:O5|0,0,0,@2912,@2911 2911:O2|@2915,0 2912:O2|@2913,0 2913:O2|0,@2914 2914:O5|@2234,69,69,0,0 2915:O2|3,@2916 2916:S5|556e617279 2917:O1|@11193 2918:O5|0,0,0,@2920,@2919 2919:O2|@2923,0 2920:O2|@2921,0 2921:O2|0,@2922 2922:O5|@2234,36,36,0,0 2923:O2|3,@2924 2924:S8|4172624172697468 2925:O5|0,0,0,@2927,@2926 2926:O2|@2930,0 2927:O2|@2928,0 2928:O2|0,@2929 2929:O5|@2234,35,35,0,0 2930:O2|3,@2931 2931:S10|417262436f6d70617265 2932:S21|7072696e742d617262507265636973696f6e4f7073 2933:O3|@11194,@15190,@15205 2934:O5|0,0,0,@2936,@2935 2935:O2|@2939,0 2936:O2|@2937,0 2937:O2|0,@2938 2938:O5|@2234,46,46,0,0 2939:O2|3,@2940 2940:S8|5573654170706c79 2941:O5|0,0,0,@2943,@2942 2942:O2|@2946,0 2943:O2|@2944,0 2944:O2|0,@2945 2945:O5|@2234,45,45,0,0 2946:O2|3,@2947 2947:S9|5573654578706f7274 2948:O5|0,0,0,@2950,@2949 2949:O2|@2953,0 2950:O2|@2951,0 2951:O2|0,@2952 2952:O5|@2234,49,49,0,0 2953:O2|3,@2954 2954:S8|5573654669656c64 2955:O5|0,0,0,@2957,@2956 2956:O2|@2960,0 2957:O2|@2958,0 2958:O2|0,@2959 2959:O5|@2234,44,44,0,0 2960:O2|3,@2961 2961:S10|55736547656e6572616c 2962:O1|@11198 2963:O5|0,0,0,@2965,@2964 2964:O2|@2968,0 2965:O2|@2966,0 2966:O2|0,@2967 2967:O5|@2234,123,123,0,0 2968:O2|3,@2969 2969:S12|4c6f6164417267756d656e74 2970:O5|0,0,0,@2972,@2971 2971:O2|@2975,0 2972:O2|@2973,0 2973:O2|0,@2974 2974:O5|@2234,125,125,0,0 2975:O2|3,@2976 2976:S11|4c6f6164436c6f73757265 2977:O5|0,0,0,@2979,@2978 2978:O2|@2982,0 2979:O2|@2980,0 2980:O2|0,@2981 2981:O5|@2234,124,124,0,0 2982:O2|3,@2983 2983:S9|4c6f61644c6f63616c 2984:O5|0,0,0,@2986,@2985 2985:O2|@2989,0 2986:O2|@2987,0 2987:O2|0,@2988 2988:O5|@2234,126,126,0,0 2989:O2|3,@2990 2990:S13|4c6f6164526563757273697665 2991:O1|@11199 2992:O5|0,0,0,@2994,@2993 2993:O2|@2997,0 2994:O2|@2995,0 2995:O2|0,@2996 2996:O5|@2234,40,40,0,0 2997:O2|3,@2998 2998:S6|496e6c696e65 2999:O5|0,0,0,@3001,@3000 3000:O2|@3004,0 3001:O2|@3002,0 3002:O2|0,@3003 3003:O5|@2234,39,39,0,0 3004:O2|3,@3005 3005:S9|4e6f6e496e6c696e65 3006:S18|7072696e742d696e6c696e65537461747573 3007:O5|@11200,@15205,@15190,@15207,@15206 3008:O2|3,@3009 3009:S6|73697a65203d 3010:O2|3,@3011 3011:S8|736574746572203d 3012:O5|0,0,0,@3014,@3013 3013:O2|@3017,0 3014:O2|@3015,0 3015:O2|0,@3016 3016:O5|@2234,118,118,0,0 3017:O2|3,@3018 3018:S9|436f6e7461696e6572 3019:O5|0,0,0,@3021,@3020 3020:O2|@3024,0 3021:O2|@3022,0 3022:O2|0,@3023 3023:O5|@2234,115,115,0,0 3024:O2|3,@3025 3025:S6|4465636c6172 3026:O5|0,0,0,@3028,@3027 3027:O2|@3031,0 3028:O2|@3029,0 3029:O2|0,@3030 3030:O5|@2234,117,117,0,0 3031:O2|3,@3032 3032:S11|4e756c6c42696e64696e67 3033:O2|3,@3034 3034:S8|6c616d626461203d 3035:O5|0,0,0,@3037,@3036 3036:O2|@3040,0 3037:O2|@3038,0 3038:O2|0,@3039 3039:O5|@2234,116,116,0,0 3040:O2|3,@3041 3041:S7|52656344656373 3042:O5|0,0,0,@3044,@3043 3043:O2|@3047,0 3044:O2|@3045,0 3045:O2|0,@3046 3046:O5|@1548,167,167,0,0 3047:O2|3,@3048 3048:S6|476c6f62616c 3049:O4|0,@3050,1,1 3050:O1|@11209 3051:S9|7072696e742d696e74 3052:O4|0,@3053,3,1 3053:O1|@11210 3054:O2|@11211,@15209 3055:O2|@1315,@3056 3056:O2|@866,@3057 3057:O2|@3059,@3058 3058:O2|@866,@3061 3059:O2|3,@3060 3060:S8|6c6f6f6b7570203d 3061:O2|@3062,@1311 3062:O2|3,@3063 3063:S2|666e 3064:O2|3,@3065 3065:S5|6c6576203d 3066:O5|0,0,0,@3068,@3067 3067:O2|@3071,0 3068:O2|@3069,0 3069:O2|0,@3070 3070:O5|@1151,71,71,0,0 3071:O2|3,@3072 3072:S5|4c6576656c 3073:S11|7072696e742d6c6576656c 3074:O1|@11212 3075:O4|0,@3076,3,1 3076:O1|@11213 3077:O4|0,@3078,2,2 3078:O1|@11214 3079:O5|0,0,0,@3081,@3080 3080:O2|@3084,0 3081:O2|@3082,0 3082:O2|0,@3083 3083:O5|@1700,460,460,0,0 3084:O2|3,@3085 3085:S7|436c6f73757265 3086:S19|7072696e742d637265617465436c6f73757265 3087:O2|3,@3088 3088:S7|6c6576656c203d 3089:O5|0,0,0,@3091,@3090 3090:O2|@3094,0 3091:O2|@3092,0 3092:O2|0,@3093 3093:O5|@1548,168,168,0,0 3094:O2|3,@3095 3095:S5|4c6f63616c 3096:O5|0,0,0,@3098,@3097 3097:O2|@3101,0 3098:O2|@3099,0 3099:O2|0,@3100 3100:O5|@1548,171,171,0,0 3101:O2|3,@3102 3102:S10|4f7665726c6f61646564 3103:O5|0,0,0,@3105,@3104 3104:O2|@3108,0 3105:O2|@3106,0 3106:O2|0,@3107 3107:O5|@1548,169,169,0,0 3108:O2|3,@3109 3109:S8|53656c6563746564 3110:S15|7072696e742d76616c416363657373 3111:O1|@11215 3112:O5|0,0,0,@3114,@3113 3113:O2|@3117,0 3114:O2|@3115,0 3115:O2|0,@3116 3116:O5|@1548,239,239,0,0 3117:O2|3,@3118 3118:S11|4164644f7665726c6f6164 3119:O5|0,0,0,@3121,@3120 3120:O2|@3124,0 3121:O2|@3122,0 3122:O2|0,@3123 3123:O5|@1548,236,236,0,0 3124:O2|3,@3125 3125:S9|416464507265747479 3126:O5|0,0,0,@3128,@3127 3127:O2|@3131,0 3128:O2|@3129,0 3129:O2|0,@3130 3130:O5|@1548,237,237,0,0 3131:O2|3,@3132 3132:S5|457175616c 3133:O5|0,0,0,@3135,@3134 3134:O2|@3138,0 3135:O2|@3136,0 3136:O2|0,@3137 3137:O5|@1548,241,241,0,0 3138:O2|3,@3139 3139:S11|4765744c6f636174696f6e 3140:O5|0,0,0,@3142,@3141 3141:O2|@3145,0 3142:O2|@3143,0 3143:O2|0,@3144 3144:O5|@1548,234,234,0,0 3145:O2|3,@3146 3146:S9|476574507265747479 3147:O5|0,0,0,@3149,@3148 3148:O2|@3152,0 3149:O2|@3150,0 3150:O2|0,@3151 3151:O5|@1548,235,235,0,0 3152:O2|3,@3153 3153:S10|4d616b65537472696e67 3154:O5|0,0,0,@3156,@3155 3155:O2|@3159,0 3156:O2|@3157,0 3157:O2|0,@3158 3158:O5|@1548,238,238,0,0 3159:O2|3,@3160 3160:S8|4e6f74457175616c 3161:O5|0,0,0,@3163,@3162 3162:O2|@3166,0 3163:O2|@3164,0 3164:O2|0,@3165 3165:O5|@1548,233,233,0,0 3166:O2|3,@3167 3167:S5|5072696e74 3168:O5|0,0,0,@3170,@3169 3169:O2|@3173,0 3170:O2|@3171,0 3171:O2|0,@3172 3172:O5|@1548,240,240,0,0 3173:O2|3,@3174 3174:S7|54797065446570 3175:S19|7072696e742d74797065446570656e64656e74 3176:O4|@11216,@15184,@15185,@15210 3177:O2|3,@3178 3178:S10|7479706556617273203d 3179:O2|3,@3180 3180:S12|6964656e746966696572203d 3181:O5|0,0,0,@3183,@3182 3182:O2|@3186,0 3183:O2|@3184,0 3184:O2|0,@3185 3185:O5|@1548,150,150,0,0 3186:O2|3,@3187 3187:S11|54797065436f6e73747273 3188:O3|@11220,@15211,@15179 3189:O2|3,@3190 3190:S10|6c6f636174696f6e203d 3191:O2|3,@3192 3192:S13|6465736372697074696f6e203d 3193:O2|3,@3194 3194:S8|69644b696e64203d 3195:O5|0,0,0,@3197,@3196 3196:O2|@3200,0 3197:O2|@3198,0 3198:O2|0,@3199 3199:O5|@1548,113,113,0,0 3200:O2|3,@3201 3201:S6|547970654964 3202:S12|7072696e742d747970654964 3203:O3|@11221,@15212,@15184 3204:O4|0,@3205,1,1 3205:O1|@11222 3206:O2|3,@3207 3207:S12|69734461746174797065203d 3208:O2|3,@3209 3209:S8|657154797065203d 3210:O2|3,@3211 3211:S7|6172697479203d 3212:O5|0,0,0,@3214,@3213 3213:O2|@3217,0 3214:O2|@3215,0 3215:O2|0,@3216 3216:O5|@1548,117,117,0,0 3217:O2|3,@3218 3218:S5|426f756e64 3219:O4|0,@3220,1,1 3220:O1|@11223 3221:O2|3,@3222 3222:S5|756964203d 3223:O2|3,@3224 3224:S13|616c6c6f77557064617465203d 3225:O5|0,0,0,@3227,@3226 3226:O2|@3230,0 3227:O2|@3228,0 3228:O2|0,@3229 3229:O5|@1548,116,116,0,0 3230:O2|3,@3231 3231:S4|46726565 3232:O5|0,0,0,@3234,@3233 3233:O2|@3237,0 3234:O2|@3235,0 3235:O2|0,@3236 3236:O5|@1548,118,118,0,0 3237:O2|3,@3238 3238:S6|54797065466e 3239:S16|7072696e742d7479706549644b696e64 3240:O1|@11226 3241:O5|0,0,0,@3243,@3242 3242:O2|@3246,0 3243:O2|@3244,0 3244:O2|0,@3245 3245:O5|@1548,77,77,0,0 3246:O2|3,@3247 3247:S9|46726f7a656e526566 3248:O5|0,0,0,@3243,@3249 3249:O2|@3250,0 3250:O2|3,@3251 3251:S11|5661726961626c65526566 3252:S13|7072696e742d706f7373526566 3253:S14|7072696e74706f73735265662829 3254:O5|0,0,0,@3256,@3255 3255:O2|@3259,0 3256:O2|@3257,0 3257:O2|0,@3258 3258:O5|@1050,1740,1740,0,0 3259:O2|3,@3260 3260:S7|4e6f745365656e 3261:O5|0,0,0,@3263,@3262 3262:O2|@3266,0 3263:O2|@3264,0 3264:O2|0,@3265 3265:O5|@1050,1739,1739,0,0 3266:O2|3,@3267 3267:S9|50726f636573736564 3268:S11|7072696e742d7374617465 3269:O1|@11228 3270:S26|5554494c49544945535f28292e6d61705461626c652832292d45 3271:O2|1,1 3272:O4|101,@721,0,@3273 3273:O5|@1050,1748,0,1748,0 3274:O4|101,@721,0,@3275 3275:O5|@1050,1749,0,1749,0 3276:O1|@11230 3277:S57|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229636f6e737472457128332965712d283129 3278:O4|101,@721,0,@3279 3279:O5|@1050,93,0,93,0 3280:S54|545950455f5452454528292e636f6d707574654461746174797065457175616c697469657328322967656e457175616c697479283129 3281:O4|@15140,@832,@3283,@3282 3282:O5|@1548,354,0,354,0 3283:S41|736574457175616c6974793a2063616e27742073657420657175616c69747920617474726962757465 3284:S32|5554494c49544945535f28292e6d61705461626c65283229656e746572283129 3285:S35|5554494c49544945535f28292e6d61705461626c6528322964656c6574652832292829 3286:S33|5554494c49544945535f28292e6d61705461626c652832296c6f6f6b7570283129 3287:S40|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229 3288:S43|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229283129 3289:S24|5554494c49544945535f28292e6d61705461626c65283229 3290:O1|@11236 3291:O5|0,0,0,@3293,@3292 3292:O2|@3296,0 3293:O2|@3294,0 3294:O2|0,@3295 3295:O5|@1050,1638,1638,0,0 3296:O2|3,@3297 3297:S5|4d61796265 3298:O5|0,0,0,@3300,@3299 3299:O2|@3303,0 3300:O2|@3301,0 3301:O2|0,@3302 3302:O5|@1050,1637,1637,0,0 3303:O2|3,@3304 3304:S2|4e6f 3305:O5|0,0,0,@3307,@3306 3306:O2|@3310,0 3307:O2|@3308,0 3308:O2|0,@3309 3309:O5|@1050,1636,1636,0,0 3310:O2|3,@3311 3311:S3|596573 3312:S9|7072696e742d747269 3313:S80|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657256616c466e283129 3314:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d616c6c56616c4e616d6573283129 3315:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657254797065466e283129 3316:S57|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229 3317:S22|29206973206e6f7420616e20657863657074696f6e2e 3318:O4|@15140,@832,@3320,@3319 3319:O5|@1496,1279,0,1279,0 3320:S41|70726f63657373457863657074696f6e3a206261646c792d666f726d65642070617273652d74726565 3321:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f63657373457863657074696f6e283129 3322:O1|@3323 3323:S36|412066756e6374696f6e2076616c7565206973206265696e67206469736361726465642e 3324:O1|@3325 3325:S36|41206e6f6e20756e69742076616c7565206973206265696e67206469736361726465642e 3326:S27|545950455f5452454528292e636865636b44697363617264283229 3327:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e74726965732832295f2d283129 3328:S35|5354525543545f56414c5328292e6d616b6553656c6563746564537472756374283329 3329:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e7472696573283229 3330:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f6365737354797065283229 3331:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833295f2d283129 3332:S27|545950455f5452454528292e6c696e6b5479706556617273283229 3333:S75|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833296e6577456e762d283329 3334:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329656e746572446563283129 3335:O4|@15213,@3337,0,@3336 3336:O5|@3338,75,0,75,0 3337:S14|556e657175616c4c656e67746873 3338:S20|2e5c62617369735c4c697374506169722e736d6c 3339:S45|54595045434845434b5f50415253455452454528292e7061737332283529666f756e644e656172283129283129 3340:O11|@11269,@1014,@15144,@15148,@1191,@15150,@1201,@15152,@1220,@15154,@1239 3341:O1|@11270 3342:S4|54797065 3343:S29|696e636c75646573206120667265652074797065207661726961626c65 3344:S32|697320616e20756e7265736f6c76656420666c657869626c65207265636f7264 3345:O4|@15140,@832,@3347,@3346 3346:O5|@1050,2889,0,2889,0 3347:S25|67656e6572616c3a204e6f206d61746368696e672074797065 3348:S34|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729 3349:S44|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e28372967656e6572616c283329 3350:S46|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729676976654572726f72283229 3351:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329646f56616c283129656e74657256616c73283129 3352:O1|@11278 3353:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329 3354:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296e6f6e457870616e73697665283129 3355:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352969734e6f6e526566436f6e7374727563746f72283129 3356:S88|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b54797065732832296e6577456e762d283129 3357:S8|5061747465726e3a 3358:S11|45787072657373696f6e3a 3359:O2|3,@3360 3360:S47|5061747465726e20616e642065787072657373696f6e206861766520696e636f6d70617469626c652074797065732e 3361:S51|526563757273697665206465636c61726174696f6e206973206e6f74206f662074686520666f726d2060666e206d6174636827 3362:S78|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b5479706573283229 3363:S20|4c6973742e6d61705061727469616c2832292829 3364:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834295f2d283129 3365:S73|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834296d7367466e283329 3366:O4|@15140,@832,@3368,@3367 3367:O5|@1496,1676,0,1676,0 3368:S41|66696e644e616d65416e6450617474733a206261646c792d666f726d65642070617273652d74726565 3369:S46|436c617573616c2066756e6374696f6e20646f6573206e6f74206861766520616e7920706172616d65746572732e 3370:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e283429 3371:O1|@11301 3372:S95|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e672831296d6b4964656e74283229283129 3373:S9|5661726961626c653a 3374:O2|3,@3375 3375:S62|54797065206f662066756e6374696f6e20646f6573206e6f74206d617463682074797065206f6620726563757273697665206170706c69636174696f6e2e 3376:S39|2068617320616c7265616479206265656e20626f756e6420696e207468697320636c617573652e 3377:S107|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c617573652831296d657373466e283329 3378:S109|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129626f6479456e762d283129 3379:O2|3,@3380 3380:S51|426f6479206f662066756e2062696e64696e6720646f6573206e6f74206d61746368207479706520636f6e73747261696e742e 3381:S7|436c617573653a 3382:O2|3,@3383 3383:S14|4f7468657220636c61757365733a 3384:O2|3,@3385 3385:S59|54797065206f6620636c6175736520646f6573206e6f74206d61746368207468652074797065206f662070726576696f757320636c61757365732e 3386:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e67283129 3387:S98|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129 3388:S84|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342966696e644e616d65416e645061747473283129 3389:S91|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f707954797065436f6e73283129 3390:O1|@11320 3391:S89|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f7079547970283129283129 3392:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129 3393:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737341627344617461283629 3394:O1|@11325 3395:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129283129 3396:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129 3397:S17|4c697374506169722e6d61702833292829 3398:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e73747273283229 3399:S50|4558504f52545f50415253455452454528292e6765744578706f727454726565283329636f6d6d6f6e50726f70732d283129 3400:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296173506172656e74283129 3401:O5|0,0,0,@3403,@3402 3402:O2|@3407,0 3403:O2|@3404,0 3404:O2|0,@3405 3405:O5|@3406,66,66,0,0 3406:S50|6d6c736f757263655c4d4c436f6d70696c65725c5061727365547265655c4558504f52545f5041525345545245452e736d6c 3407:O2|3,@3408 3408:S5|4461746154 3409:O4|0,@3410,3,1 3410:O1|@11340 3411:O4|0,@3412,2,1 3412:O1|@11341 3413:O4|0,@3414,1,1 3414:O1|@11342 3415:S12|7072696e742d6f7074696f6e 3416:O5|0,0,0,@3403,@3417 3417:O2|@3418,0 3418:O2|3,@3419 3419:S4|4465636c 3420:O5|0,0,0,@3403,@3421 3421:O2|@3422,0 3422:O2|3,@3423 3423:S5|5479706542 3424:S11|7072696e742d6c54797065 3425:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745472656557697468427074283129 3426:O1|@11345 3427:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296173506172656e74283129 3428:S34|4578706f72745472656528292e676574537472696e67417354726565283529283129 3429:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296765744e616d65283129 3430:S37|4578706f72745472656528292e6578706f72744e617669676174696f6e50726f7073283329 3431:O4|@11356,@1014,@3432,@15143 3432:O2|@11388,@3431 3433:S44|545950455f5452454528292e747970654578706f727454726565283329636f6d6d6f6e50726f70732d283129 3434:S40|545950455f5452454528292e747970654578706f7274547265652833296173506172656e74283129 3435:O2|@123,0 3436:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d6765744e616d65283129 3437:S53|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d676574417267283129 3438:O1|@11371 3439:S40|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283129283129 3440:O4|@15142,@1027,0,@3441 3441:O5|@3442,88,0,88,0 3442:S34|6d6c736f757263655c4d4c436f6d70696c65725c4578706f7274547265652e736d6c 3443:S37|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283329 3444:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d67657441726773283129 3445:S26|4578706f72745472656528292e6578706f72744c697374283229 3446:O1|@11376 3447:S54|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 3448:S53|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c6428332967657454797065283129 3449:S52|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296765744c6162283129 3450:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283129 3451:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283329 3452:S29|545950455f5452454528292e747970654578706f727454726565283329 3453:S29|545950455f5452454528292e747970654578706f727454726565283129 3454:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e6728332967657454797065283129 3455:O1|@11395 3456:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283129 3457:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283229 3458:S68|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e73747273283129 3459:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283129 3460:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329 3461:O1|@11406 3462:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d617463682833296173506172656e74283129 3463:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329283129 3464:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283129 3465:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329 3466:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657445787072283129 3467:S48|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296765744d617463686573283129 3468:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657454797065283129 3469:O1|@11418 3470:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296173506172656e74283129 3471:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744f6654797065283129 3472:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744e616d65283129 3473:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274457864656328332967657450726576696f7573457863283129 3474:O2|13,@1932 3475:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283129 3476:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283329 3477:O2|@11441,@15216 3478:O5|0,0,0,@3480,@3479 3479:O2|@3483,0 3480:O2|@3481,0 3481:O2|0,@3482 3482:O5|@1050,1279,1279,0,0 3483:O2|3,@3484 3484:S12|506172736554797065426164 3485:S19|7072696e742d74797065506172736574726565 3486:O4|0,@3487,3,1 3487:O1|@11443 3488:O2|3,@3489 3489:S9|6e616d654c6f63203d 3490:O2|3,@3491 3491:S18|666f756e64436f6e7374727563746f72203d 3492:O2|3,@3493 3493:S8|6172674c6f63203d 3494:O5|0,0,0,@3496,@3495 3495:O2|@3499,0 3496:O2|@3497,0 3497:O2|0,@3498 3498:O5|@1050,1264,1264,0,0 3499:O2|3,@3500 3500:S21|506172736554797065436f6e737472756374696f6e 3501:O2|3,@3502 3502:S9|61726754797065203d 3503:O5|0,0,0,@3505,@3504 3504:O2|@3508,0 3505:O2|@3506,0 3506:O2|0,@3507 3507:O5|@1050,1273,1273,0,0 3508:O2|3,@3509 3509:S17|50617273655479706546756e6374696f6e 3510:O2|3,@3511 3511:S7|7479706573203d 3512:O5|0,0,0,@3514,@3513 3513:O2|@3517,0 3514:O2|@3515,0 3515:O2|0,@3516 3516:O5|@1050,1278,1278,0,0 3517:O2|3,@3518 3518:S11|5061727365547970654964 3519:O2|3,@3520 3520:S8|66726f7a656e203d 3521:O5|0,0,0,@3523,@3522 3522:O2|@3526,0 3523:O2|@3524,0 3524:O2|0,@3525 3525:O5|@1050,1275,1275,0,0 3526:O2|3,@3527 3527:S17|5061727365547970654c6162656c6c6564 3528:O5|0,0,0,@3530,@3529 3529:O2|@3533,0 3530:O2|@3531,0 3531:O2|0,@3532 3532:O5|@1050,1271,1271,0,0 3533:O2|3,@3534 3534:S16|50617273655479706550726f64756374 3535:O5|0,0,0,@3537,@3536 3536:O2|@3540,0 3537:O2|@3538,0 3538:O2|0,@3539 3539:O5|@3406,235,235,0,0 3540:O2|3,@3541 3541:S13|46756e436f6e73747261696e74 3542:O4|0,@3543,3,1 3543:O1|@11446 3544:O2|3,@3545 3545:S9|65787054797065203d 3546:O5|0,0,0,@3548,@3547 3547:O2|@3551,0 3548:O2|@3549,0 3549:O2|0,@3550 3550:O5|@3406,233,233,0,0 3551:O2|3,@3552 3552:S8|46756e4964656e74 3553:S14|7072696e742d66756e456e747279 3554:O5|0,0,0,@3556,@3555 3555:O2|@3559,0 3556:O2|@3557,0 3557:O2|0,@3558 3558:O5|@3406,236,236,0,0 3559:O2|3,@3560 3560:S10|46756e496e6669786564 3561:O5|0,0,0,@3563,@3562 3562:O2|@3566,0 3563:O2|@3564,0 3564:O2|0,@3565 3565:O5|@3406,234,234,0,0 3566:O2|3,@3567 3567:S8|46756e5074726565 3568:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283129 3569:S63|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e7472792833296173506172656e74283129 3570:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283329 3571:O1|@11457 3572:S57|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274464228332961734368696c642d283129 3573:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f727454686973283129 3574:O1|@11461 3575:S72|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c6175736528332961734368696c642d283129 3576:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283129 3577:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283329 3578:S51|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727441436c61757365283329 3579:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283129 3580:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283329 3581:O1|@11476 3582:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 3583:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329676574457870283129 3584:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296765744c6162283129 3585:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283129 3586:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329 3587:O1|@11483 3588:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745374727563744964656e74283129 3589:S44|4558504f52545f50415253455452454528292e6765744578706f727454726565283329676574457870283129 3590:O2|13,@1869 3591:O1|@11487 3592:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727456422833296578706f727454686973283129 3593:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283129 3594:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283329 3595:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283329 3596:O2|@11527,@1487 3597:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283129 3598:O8|@11528,@15230,@15231,@15232,@15233,@15234,@15235,@15221 3599:O4|0,@3600,3,1 3600:O1|@11530 3601:O4|0,@3602,2,1 3602:O1|@11531 3603:O4|0,@3604,1,1 3604:O1|@11532 3605:O4|0,@3606,3,1 3606:O1|@11533 3607:O4|0,@3608,1,1 3608:O1|@11534 3609:S18|7072696e742d646174617479706562696e64 3610:S14|7072696e742d7479706562696e64 3611:O2|3,@3612 3612:S11|776974687479706573203d 3613:O2|3,@3614 3614:S10|747970656c697374203d 3615:O2|3,@3616 3616:S11|697341627354797065203d 3617:O2|3,@3618 3618:S16|657175616c697479537461747573203d 3619:O2|3,@3620 3620:S9|6465636c697374203d 3621:O5|0,0,0,@3623,@3622 3622:O2|@3627,0 3623:O2|@3624,0 3624:O2|0,@3625 3625:O5|@3626,144,144,0,0 3626:S49|6d6c736f757263655c4d4c436f6d70696c65725c5061727365547265655c424153455f50415253455f545245452e736d6c 3627:O2|3,@3628 3628:S22|41627344617461747970654465636c61726174696f6e 3629:O2|3,@3630 3630:S8|7365636f6e64203d 3631:O2|3,@3632 3632:S7|6669727374203d 3633:O5|0,0,0,@3635,@3634 3634:O2|@3638,0 3635:O2|@3636,0 3636:O2|0,@3637 3637:O5|@3626,186,186,0,0 3638:O2|3,@3639 3639:S7|416e64616c736f 3640:O4|0,@3641,3,1 3641:O1|@11537 3642:O2|3,@3643 3643:S9|6973496e666978203d 3644:O2|3,@3645 3645:S3|66203d 3646:O5|0,0,0,@3648,@3647 3647:O2|@3651,0 3648:O2|@3649,0 3649:O2|0,@3650 3650:O5|@3626,70,70,0,0 3651:O2|3,@3652 3652:S6|4170706c6963 3653:O4|0,@3654,3,1 3654:O1|@11538 3655:S15|7072696e742d6d6174636874726565 3656:O2|3,@3657 3657:S7|6d61746368203d 3658:O2|3,@3659 3659:S14|6c6973744c6f636174696f6e203d 3660:O5|0,0,0,@3662,@3661 3661:O2|@3665,0 3662:O2|@3663,0 3663:O2|0,@3664 3664:O5|@3626,182,182,0,0 3665:O2|3,@3666 3666:S4|43617365 3667:O4|0,@3668,3,1 3668:O1|@11540 3669:O4|0,@3670,2,1 3670:O1|@11541 3671:O4|0,@3672,1,1 3672:O1|@11542 3673:O4|0,@3674,3,1 3674:O1|@11543 3675:O4|0,@3676,2,1 3676:O1|@11544 3677:O4|0,@3678,1,1 3678:O1|@11545 3679:O2|3,@3680 3680:S8|7468656e7074203d 3681:O2|3,@3682 3682:S11|7468656e427265616b203d 3683:O2|3,@3684 3684:S8|656c73657074203d 3685:O2|3,@3686 3686:S11|656c7365427265616b203d 3687:O5|0,0,0,@3688,@2566 3688:O2|@3689,0 3689:O2|0,@3690 3690:O5|@3626,74,74,0,0 3691:O2|3,@3692 3692:S7|676976656e203d 3693:O5|0,0,0,@3695,@3694 3694:O2|@3698,0 3695:O2|@3696,0 3696:O2|0,@3697 3697:O5|@3626,118,118,0,0 3698:O2|3,@3699 3699:S10|436f6e73747261696e74 3700:O2|3,@3701 3701:S9|6f6c6454797065203d 3702:O2|3,@3703 3703:S8|6f6c644c6f63203d 3704:O2|3,@3705 3705:S9|6e657754797065203d 3706:O2|3,@3707 3707:S8|6e65774c6f63203d 3708:O5|0,0,0,@3710,@3709 3709:O2|@3713,0 3710:O2|@3711,0 3711:O2|0,@3712 3712:O5|@3626,154,154,0,0 3713:O2|3,@3714 3714:S19|44617461747970655265706c69636174696f6e 3715:O1|@11546 3716:O5|0,0,0,@3718,@3717 3717:O2|@3721,0 3718:O2|@3719,0 3719:O2|0,@3720 3720:O5|@1548,502,502,0,0 3721:O2|3,@3722 3722:S5|496e666978 3723:O5|0,0,0,@3725,@3724 3724:O2|@3728,0 3725:O2|@3726,0 3726:O2|0,@3727 3727:O5|@1548,503,503,0,0 3728:O2|3,@3729 3729:S6|496e66697852 3730:O5|0,0,0,@3732,@3731 3731:O2|@3735,0 3732:O2|@3733,0 3733:O2|0,@3734 3734:O5|@1548,504,504,0,0 3735:O2|3,@3736 3736:S6|4e6f6e666978 3737:S14|7072696e742d696e666978697479 3738:O4|0,@3739,3,1 3739:O1|@11547 3740:O2|3,@3741 3741:S7|746c697374203d 3742:O2|3,@3743 3743:S5|666978203d 3744:O5|0,0,0,@3746,@3745 3745:O2|@3749,0 3746:O2|@3747,0 3747:O2|0,@3748 3748:O5|@3626,165,165,0,0 3749:O2|3,@3750 3750:S9|446972656374697665 3751:O5|0,0,0,@3753,@3752 3752:O2|@3756,0 3753:O2|@3754,0 3754:O2|0,@3755 3755:O5|@3626,200,200,0,0 3756:O2|3,@3757 3757:S9|456d70747954726565 3758:S12|7072696e742d657862696e64 3759:O5|0,0,0,@3761,@3760 3760:O2|@3764,0 3761:O2|@3762,0 3762:O2|0,@3763 3763:O5|@3626,170,170,0,0 3764:O2|3,@3765 3765:S13|45784465636c61726174696f6e 3766:O4|0,@3767,3,1 3767:O1|@11550 3768:O4|0,@3769,2,1 3769:O1|@11551 3770:O4|0,@3771,1,1 3771:O1|@11552 3772:O5|0,0,0,@3774,@3773 3773:O2|@3777,0 3774:O2|@3775,0 3775:O2|0,@3776 3776:O5|@3626,163,163,0,0 3777:O2|3,@3778 3778:S6|457870536571 3779:O4|0,@3780,3,1 3780:O1|@11553 3781:O2|3,@3782 3782:S9|6d617463686573203d 3783:O5|0,0,0,@3785,@3784 3784:O2|@3788,0 3785:O2|@3786,0 3786:O2|0,@3787 3787:O5|@3626,129,129,0,0 3788:O2|3,@3789 3789:S2|466e 3790:S14|7072696e742d6676616c62696e64 3791:O2|@3793,@3792 3792:O2|@866,@3795 3793:O2|3,@3794 3794:S7|6170706c79203d 3795:O2|@3062,@3055 3796:O2|3,@3797 3797:S10|696d706c69636974203d 3798:O2|3,@3799 3799:S10|6578706c69636974203d 3800:O2|3,@3801 3801:S5|646563203d 3802:O5|0,0,0,@3804,@3803 3803:O2|@3807,0 3804:O2|@3805,0 3805:O2|0,@3806 3806:O5|@3626,97,97,0,0 3807:O2|3,@3808 3808:S14|46756e4465636c61726174696f6e 3809:O2|3,@3810 3810:S8|6872756c6573203d 3811:O5|0,0,0,@3813,@3812 3812:O2|@3816,0 3813:O2|@3814,0 3814:O2|0,@3815 3815:O5|@3626,174,174,0,0 3816:O2|3,@3817 3817:S10|48616e646c6554726565 3818:O4|0,@3819,3,1 3819:O1|@11557 3820:O4|0,@3821,2,1 3821:O1|@11558 3822:S14|7072696e742d66756e6374696f6e 3823:O4|0,@3824,3,1 3824:O1|@11559 3825:O2|3,@3826 3826:S10|706f737369626c65203d 3827:O5|0,0,0,@3829,@3828 3828:O2|@3832,0 3829:O2|@3830,0 3830:O2|0,@3831 3831:O5|@3626,48,48,0,0 3832:O2|3,@3833 3833:S5|4964656e74 3834:O4|0,@3835,3,1 3835:O1|@11560 3836:O4|0,@3837,3,1 3837:O1|@11562 3838:O2|3,@3839 3839:S10|76616c4f72506174203d 3840:O2|3,@3841 3841:S14|66756c6c4c6f636174696f6e203d 3842:O5|0,0,0,@3844,@3843 3843:O2|@3847,0 3844:O2|@3845,0 3845:O2|0,@3846 3846:O5|@3626,190,190,0,0 3847:O2|3,@3848 3848:S8|4c6162656c6c6564 3849:O2|3,@3850 3850:S5|766172203d 3851:O2|3,@3852 3852:S9|7061747465726e203d 3853:O5|0,0,0,@3855,@3854 3854:O2|@3858,0 3855:O2|@3856,0 3856:O2|0,@3857 3857:O5|@3626,124,124,0,0 3858:O2|3,@3859 3859:S7|4c617965726564 3860:S15|7072696e742d706172736574726565 3861:O4|0,@3862,3,1 3862:O1|@11564 3863:O2|3,@3864 3864:S10|656c656d656e7473203d 3865:O5|0,0,0,@3867,@3866 3866:O2|@3870,0 3867:O2|@3868,0 3868:O2|0,@3869 3869:O5|@3626,198,198,0,0 3870:O2|3,@3871 3871:S4|4c697374 3872:O4|0,@3873,3,1 3873:O1|@11565 3874:O2|3,@3875 3875:S9|6c69746572616c203d 3876:O2|3,@3877 3877:S11|636f6e766572746572203d 3878:O5|0,0,0,@3880,@3879 3879:O2|@3883,0 3880:O2|@3881,0 3881:O2|0,@3882 3882:O5|@3626,64,64,0,0 3883:O2|3,@3884 3884:S7|4c69746572616c 3885:O4|0,@3886,3,1 3886:O1|@11567 3887:O4|0,@3888,2,1 3888:O1|@11568 3889:O4|0,@3890,1,1 3890:O1|@11569 3891:O4|0,@3892,3,1 3892:O1|@11571 3893:O4|0,@3894,2,1 3894:O1|@11572 3895:O4|0,@3896,1,1 3896:O1|@11573 3897:O4|0,@3898,3,1 3898:O1|@11574 3899:O4|0,@3900,3,1 3900:O1|@11575 3901:O2|3,@3902 3902:S12|76617273496e426f6479203d 3903:O2|3,@3904 3904:S9|69734c6f63616c203d 3905:O2|3,@3906 3906:S6|64656373203d 3907:O5|0,0,0,@3909,@3908 3908:O2|@3912,0 3909:O2|@3910,0 3910:O2|0,@3911 3911:O5|@3626,132,132,0,0 3912:O2|3,@3913 3913:S8|4c6f63616c646563 3914:O4|0,@3915,2,3 3915:O1|@11576 3916:O4|0,@3917,3,1 3917:O1|@11577 3918:O4|0,@3919,3,1 3919:O1|@11578 3920:O4|@11579,@15224,@15185,@15179 3921:O2|3,@3922 3922:S8|7369676e6174203d 3923:O5|0,0,0,@3925,@3924 3924:O2|@3928,0 3925:O2|@3926,0 3926:O2|0,@3927 3927:O5|@1548,175,175,0,0 3928:O2|3,@3929 3929:S6|537472756374 3930:S16|7072696e742d73747275637456616c73 3931:O3|@11581,@15185,@15210 3932:O1|@11584 3933:O2|@11585,@15227 3934:O1|@11587 3935:S18|566563746f722e7072657474792833292d45 3936:S16|566563746f722e707265747479283329 3937:S17|7072696e742d6e616d65644f7074696f6e 3938:O2|@1315,@3939 3939:O2|@866,@3940 3940:O2|@3941,@3058 3941:O2|3,@3942 3942:S6|68617368203d 3943:O2|3,@3944 3944:S9|656e7472696573203d 3945:O5|0,0,0,@3947,@3946 3946:O2|@3950,0 3947:O2|@3948,0 3948:O2|0,@3949 3949:O5|@662,74,74,0,0 3950:O2|3,@3951 3951:S6|46726f7a656e 3952:O1|@11593 3953:S17|41727261792e7072657474792833292d45 3954:S15|41727261792e707265747479283329 3955:S11|7072696e742d6172726179 3956:O4|0,@3957,2,1 3957:O1|@11598 3958:O4|0,@3959,1,1 3959:O1|@11599 3960:O2|3,@3961 3961:S6|75736564203d 3962:O5|0,0,0,@3964,@3963 3963:O2|@3967,0 3964:O2|@3965,0 3965:O2|0,@3966 3966:O5|@662,68,68,0,0 3967:O2|3,@3968 3968:S4|48617368 3969:S10|7072696e742d68617368 3970:S11|7072696e74686173682829 3971:O1|@11600 3972:O5|0,0,0,@3974,@3973 3973:O2|@3977,0 3974:O2|@3975,0 3975:O2|0,@3976 3976:O5|@662,52,52,0,0 3977:O2|3,@3978 3978:S4|4e6f6e65 3979:O5|0,0,0,@3974,@3980 3980:O2|@3981,0 3981:O2|3,@3982 3982:S4|536f6d65 3983:S18|7072696e746e616d65644f7074696f6e2829 3984:O4|0,@3985,3,1 3985:O1|@11602 3986:O4|0,@3987,2,1 3987:O1|@11603 3988:S15|7072696e742d756e6976657273616c 3989:O5|0,0,0,@3991,@3990 3990:O2|@3995,0 3991:O2|@3992,0 3992:O2|0,@3993 3993:O5|@3994,49,49,0,0 3994:S37|6d6c736f757263655c4d4c436f6d70696c65725c556e6976657273616c5461626c652e4d4c 3995:O2|3,@3996 3996:S5|5461626c65 3997:S15|7072696e742d756e69765461626c65 3998:O2|@1315,@3999 3999:O2|@866,@4000 4000:O2|@4001,@3058 4001:O2|3,@4002 4002:S11|7479706549644d6170203d 4003:O2|3,@4004 4004:S5|746162203d 4005:O2|3,@4006 4006:S17|6669727374426f756e64496e646578203d 4007:O2|3,@4008 4008:S10|626f756e64496473203d 4009:O5|0,0,0,@4011,@4010 4010:O2|@4014,0 4011:O2|@4012,0 4012:O2|0,@4013 4013:O5|@1548,208,208,0,0 4014:O2|3,@4015 4015:S10|5369676e617475726573 4016:S16|7072696e742d7369676e617475726573 4017:O4|0,@4018,3,1 4018:O1|@11604 4019:O4|0,@4020,3,1 4020:O1|@11605 4021:O4|0,@4022,3,1 4022:O1|@11606 4023:O4|0,@4024,3,1 4024:O1|@11607 4025:O4|0,@4026,3,1 4026:O1|@11608 4027:O4|0,@4028,3,1 4028:O1|@11609 4029:O2|3,@4030 4030:S11|7661726961626c6573203d 4031:O2|3,@4032 4032:S13|74797065636f6e73747273203d 4033:O2|3,@4034 4034:S12|73747275637475726573203d 4035:O5|0,0,0,@4037,@4036 4036:O2|@4040,0 4037:O2|@4038,0 4038:O2|0,@4039 4039:O5|@3626,107,107,0,0 4040:O2|3,@4041 4041:S7|4f70656e446563 4042:O5|0,0,0,@4044,@4043 4043:O2|@4047,0 4044:O2|@4045,0 4045:O2|0,@4046 4046:O5|@3626,188,188,0,0 4047:O2|3,@4048 4048:S6|4f72656c7365 4049:O5|0,0,0,@4051,@4050 4050:O2|@4054,0 4051:O2|@4052,0 4052:O2|0,@4053 4053:O5|@3626,203,203,0,0 4054:O2|3,@4055 4055:S13|506172656e7468657369736564 4056:O5|0,0,0,@4057,@2754 4057:O2|@4058,0 4058:O2|0,@4059 4059:O5|@3626,172,172,0,0 4060:O2|3,@4061 4061:S9|6c616254797065203d 4062:O5|0,0,0,@4064,@4063 4063:O2|@4067,0 4064:O2|@4065,0 4065:O2|0,@4066 4066:O5|@3626,195,195,0,0 4067:O2|3,@4068 4068:S8|53656c6563746f72 4069:O4|0,@4070,3,1 4070:O1|@11610 4071:O5|0,0,0,@4073,@4072 4072:O2|@4076,0 4073:O2|@4074,0 4074:O2|0,@4075 4075:O5|@3626,85,85,0,0 4076:O2|3,@4077 4077:S9|5475706c6554726565 4078:O5|0,0,0,@4080,@4079 4079:O2|@4083,0 4080:O2|@4081,0 4081:O2|0,@4082 4082:O5|@3626,142,142,0,0 4083:O2|3,@4084 4084:S15|547970654465636c61726174696f6e 4085:O5|0,0,0,@4087,@4086 4086:O2|@4090,0 4087:O2|@4088,0 4088:O2|0,@4089 4089:O5|@3626,202,202,0,0 4090:O2|3,@4091 4091:S4|556e6974 4092:S13|7072696e742d76616c62696e64 4093:O5|0,0,0,@4095,@4094 4094:O2|@4098,0 4095:O2|@4096,0 4096:O2|0,@4097 4097:O5|@3626,87,87,0,0 4098:O2|3,@4099 4099:S14|56616c4465636c61726174696f6e 4100:O4|0,@4101,3,1 4101:O1|@11614 4102:O4|0,@4103,2,1 4103:O1|@11615 4104:O4|0,@4105,1,1 4105:O1|@11616 4106:O2|3,@4107 4107:S12|627265616b506f696e74203d 4108:O5|0,0,0,@4110,@4109 4109:O2|@4113,0 4110:O2|@4111,0 4111:O2|0,@4112 4112:O5|@3626,178,178,0,0 4113:O2|3,@4114 4114:S5|5768696c65 4115:O5|0,0,0,@4117,@4116 4116:O2|@4120,0 4117:O2|@4118,0 4118:O2|0,@4119 4119:O5|@3626,201,201,0,0 4120:O2|3,@4121 4121:S8|57696c6443617264 4122:O1|@11617 4123:O4|0,@4124,3,1 4124:O1|@11618 4125:O4|0,@4126,3,1 4126:O1|@11619 4127:O4|0,@4128,2,2 4128:O1|@11620 4129:S17|7072696e742d74797065566172466f726d 4130:O2|3,@4131 4131:S6|74636f6e203d 4132:O2|3,@4133 4133:S10|6973457174797065203d 4134:O2|3,@4135 4135:S9|66756c6c4c6f63203d 4136:O2|3,@4137 4137:S9|64656354797065203d 4138:O5|0,0,0,@4140,@4139 4139:O2|@4143,0 4140:O2|@4141,0 4141:O2|0,@4142 4142:O5|@3626,242,242,0,0 4143:O2|3,@4144 4144:S8|5479706542696e64 4145:O1|@11621 4146:O4|0,@4147,2,4 4147:O1|@11622 4148:O4|0,@4149,3,1 4149:O1|@11623 4150:O4|0,@4151,3,1 4151:O1|@11624 4152:O2|3,@4153 4153:S8|69644c6f636e203d 4154:O2|3,@4155 4155:S11|636f6e73747256616c203d 4156:O2|3,@4157 4157:S12|636f6e7374724e616d65203d 4158:O2|3,@4159 4159:S11|636f6e737472417267203d 4160:O4|0,@4161,3,1 4161:O1|@11625 4162:O4|0,@4163,2,2 4163:O1|@11626 4164:O2|3,@4165 4165:S9|636f6e73747273203d 4166:O5|0,0,0,@4168,@4167 4167:O2|@4171,0 4168:O2|@4169,0 4169:O2|0,@4170 4170:O5|@3626,254,254,0,0 4171:O2|3,@4172 4172:S12|446174617479706542696e64 4173:O2|@11627,@15232 4174:O4|0,@4175,3,1 4175:O1|@11628 4176:O4|0,@4177,3,1 4177:O1|@11629 4178:O4|0,@4179,2,1 4179:O1|@11630 4180:O4|0,@4181,1,1 4181:O1|@11631 4182:O4|0,@4183,3,1 4183:O1|@11632 4184:O2|3,@4185 4185:S6|76617273203d 4186:O2|3,@4187 4187:S9|72657354797065203d 4188:O5|0,0,0,@4190,@4189 4189:O2|@4193,0 4190:O2|@4191,0 4191:O2|0,@4192 4192:O5|@3626,279,279,0,0 4193:O2|3,@4194 4194:S9|4d6174636854726565 4195:O2|@11633,@15232 4196:O4|0,@4197,3,1 4197:O1|@11634 4198:O4|0,@4199,3,1 4199:O1|@11635 4200:O2|3,@4201 4201:S10|70726576696f7573203d 4202:O2|3,@4203 4203:S8|6f6654797065203d 4204:O5|0,0,0,@4206,@4205 4205:O2|@4209,0 4206:O2|@4207,0 4207:O2|0,@4208 4208:O5|@3626,266,266,0,0 4209:O2|3,@4210 4210:S6|457842696e64 4211:O2|@11636,@15236 4212:O4|0,@4213,3,1 4213:O1|@11637 4214:S16|7072696e742d6676616c636c61757365 4215:O4|0,@4216,3,1 4216:O1|@11639 4217:O4|0,@4218,1,1 4218:O1|@11640 4219:O4|0,@4220,3,1 4220:O1|@11641 4221:O2|3,@4222 4222:S12|6e756d4f665061747473203d 4223:O2|3,@4224 4224:S10|66756e6374566172203d 4225:O2|3,@4226 4226:S9|636c6175736573203d 4227:O5|0,0,0,@4229,@4228 4228:O2|@4232,0 4229:O2|@4230,0 4230:O2|0,@4231 4231:O5|@3626,222,222,0,0 4232:O2|3,@4233 4233:S8|4656616c42696e64 4234:O2|@11642,@15232 4235:O4|0,@4236,3,1 4236:O1|@11643 4237:O4|0,@4238,2,1 4238:O1|@11644 4239:O4|0,@4240,1,1 4240:O1|@11645 4241:O4|0,@4242,3,1 4242:O1|@11647 4243:O4|0,@4244,3,1 4244:O1|@11648 4245:O2|3,@4246 4246:S7|6964656e74203d 4247:O2|3,@4248 4248:S12|636f6e73747261696e74203d 4249:O2|3,@4250 4250:S6|6c696e65203d 4251:O5|0,0,0,@4253,@4252 4252:O2|@4256,0 4253:O2|@4254,0 4254:O2|0,@4255 4255:O5|@3626,233,233,0,0 4256:O2|3,@4257 4257:S10|4656616c436c61757365 4258:O2|@11649,@15232 4259:O4|0,@4260,3,1 4260:O1|@11650 4261:O4|0,@4262,3,1 4262:O1|@11651 4263:O2|3,@4264 4264:S13|6973526563757273697665203d 4265:O5|0,0,0,@4267,@4266 4266:O2|@4270,0 4267:O2|@4268,0 4268:O2|0,@4269 4269:O5|@3626,206,206,0,0 4270:O2|3,@4271 4271:S7|56616c42696e64 4272:O1|@11652 4273:S50|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832295f2d283129 4274:S28|535452554354555245535f28292e7061737332537472756374283829 4275:S59|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329283129 4276:S10|53747275637475726520 4277:S56|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329 4278:S29|535452554354555245535f28292e6572726f724d73674e656172283529 4279:S61|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332963617074757265496473283129 4280:S48|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329 4281:O1|@11660 4282:O1|@11661 4283:S69|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329706173733253747275637475726542696e64283629 4284:S35|535452554354555245535f28292e6d61726b56616c7341734578706f72746564283129 4285:S56|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c6465632832296c6f63616c456e762d283129 4286:O1|@11668 4287:S55|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229626f6479456e762d283129 4288:S44|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229 4289:S45|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e283229 4290:S39|535452554354555245535f28292e73747275637456616c756528382974797065456e762d283129 4291:S52|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e744d616b65547970654964283129 4292:O4|11,@78,0,@4293 4293:O5|@4294,1743,0,1743,0 4294:S34|6d6c736f757263655c4d4c436f6d70696c65725c535452554354555245535f2e4d4c 4295:S54|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129283129 4296:S51|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129 4297:O2|@11679,@4298 4298:O3|0,@4512,@4511 4299:O1|@11680 4300:O5|0,0,0,@4302,@4301 4301:O2|@4306,0 4302:O2|@4303,0 4303:O2|0,@4304 4304:O5|@4305,463,463,0,0 4305:S34|6d6c736f757263655c4d4c436f6d70696c65725c5349474e4154555245532e736d6c 4306:O2|3,@4307 4307:S8|46726565536c6f74 4308:O5|0,0,0,@4310,@4309 4309:O2|@4313,0 4310:O2|@4311,0 4311:O2|0,@4312 4312:O5|@4305,461,461,0,0 4313:O2|3,@4314 4314:S10|53686172656457697468 4315:O5|0,0,0,@4317,@4316 4316:O2|@4320,0 4317:O2|@4318,0 4318:O2|0,@4319 4319:O5|@4305,464,464,0,0 4320:O2|3,@4321 4321:S5|556e736574 4322:O4|0,@4323,3,1 4323:O1|@11681 4324:O2|3,@4325 4325:S14|6465736372697074696f6e73203d 4326:O2|3,@4327 4327:S9|626f756e644964203d 4328:O5|0,0,0,@4330,@4329 4329:O2|@4333,0 4330:O2|@4331,0 4331:O2|0,@4332 4332:O5|@4305,462,462,0,0 4333:O2|3,@4334 4334:S12|5661726961626c65536c6f74 4335:S11|7072696e742d7661724964 4336:O2|@11682,@4337 4337:O2|@11787,@4336 4338:S54|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e7465722836292d45 4339:O1|@11685 4340:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529737472756374456e762d283129 4341:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629283129 4342:S39|2920697320616c72656164792070726573656e7420696e2074686973207369676e61747572652e 4343:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283129283129 4344:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629 4345:S28|5349474e41545552455328292e6572726f724d73674e656172283529 4346:O1|@11691 4347:S7|6f283229283129 4348:O1|@11694 4349:O1|@11695 4350:O4|@15140,@832,@4352,@4351 4351:O5|@4305,991,0,991,0 4352:S29|456e746572696e672066756e63746f7220696e207369676e6174757265 4353:O1|@11696 4354:O4|@15140,@832,@4356,@4355 4355:O5|@4305,990,0,990,0 4356:S31|456e746572696e67207369676e617475726520696e207369676e6174757265 4357:O1|@11697 4358:O4|@15140,@832,@4360,@4359 4359:O5|@4305,989,0,989,0 4360:S28|456e746572696e672066697869747920696e207369676e6174757265 4361:S60|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657256616c283129 4362:S58|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f636573735369672833296d616b654964283429 4363:O4|11,@78,0,@4364 4364:O5|@627,138,0,138,0 4365:O4|103,@663,@4367,@4366 4366:O5|@4368,93,0,93,0 4367:S39|417474656d707420746f207570646174652061206c6f636b656420737472657463684172726179 4368:S35|6d6c736f757263655c4d4c436f6d70696c65725c5374726574636841727261792e4d4c 4369:S39|5349474e41545552455328292e73696756616c2836296d616b655661726961626c654964283629 4370:S22|5374726574636841727261792e757064617465283329 4371:O1|@11707 4372:S37|545950455f5452454528292e747970655065726d697473457175616c697479283129283129 4373:O1|@11708 4374:O4|@15140,@832,@4376,@4375 4375:O5|@4305,493,0,493,0 4376:S20|7265616c49643a2053686172696e67206c6f6f70 4377:O1|@11709 4378:O1|@11710 4379:O1|@11711 4380:O1|@11712 4381:O4|@15140,@832,@4383,@4382 4382:O5|@4305,1261,0,1261,0 4383:S30|696e7465726e616c4d61703a204e6f7420626f756e64206f722046726565 4384:S64|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332966696e64457175616c697479283129 4385:S66|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657246696e616c54797065283129 4386:S35|5349474e41545552455328292e67697665537065634572726f72283329283129283129 4387:S32|5349474e41545552455328292e67697665537065634572726f72283329283129 4388:S12|53706563696679696e672022 4389:S13|2220697320696c6c6567616c2e 4390:O1|@11729 4391:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329283129 4392:O1|@11730 4393:S36|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529 4394:O4|4,@119,0,@4395 4395:O5|@630,101,0,101,0 4396:S37|5349474e41545552455328292e73696756616c283629747970654964456e76283129283129 4397:S34|5349474e41545552455328292e73696756616c283629747970654964456e76283129 4398:S14|20696e207369676e61747572652e 4399:S31|5349474e41545552455328292e676976654572726f72283329283129283129 4400:S66|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e742833296c6f6f6b75704661696c757265283129283129 4401:O4|@15142,@1027,0,@4402 4402:O5|@4305,709,0,709,0 4403:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329 4404:O4|@15140,@832,@4406,@4405 4405:O5|@4305,1141,0,1141,0 4406:S21|6e65774163636573733a204e6f7420466f726d616c 4407:S77|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657254797065283129 4408:S79|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e746572537472756374283129 4409:S76|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657256616c283129 4410:O1|@11750 4411:S49|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529762d283129 4412:S59|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d61704964732d6d61704964283129 4413:S65|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229 4414:S11|5369676e61747572652028 4415:O1|@11755 4416:O4|11,@78,0,@4417 4417:O5|@4305,177,0,177,0 4418:S35|5349474e41545552455328292e756e646566696e65645369676e61747572652d283129 4419:S44|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529 4420:S66|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e65774964732832296e65774d6170283129 4421:O4|@15140,@832,@4423,@4422 4422:O5|@4305,778,0,778,0 4423:S28|4d617020646f6573206e6f742072657475726e20426f756e64204964 4424:S57|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e6577496473283229 4425:S32|5349474e41545552455328292e73696756616c2836296c6f6f6b536967283229 4426:S69|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329705374727563742832296e6577456e762d283129 4427:S59|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332970537472756374283229 4428:S47|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e74283329 4429:S50|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e745368617265283129283129 4430:O2|@1021,@4431 4431:O2|@4433,@4432 4432:O2|@866,@4434 4433:O2|3,@201 4434:O2|@4435,0 4435:O2|3,@4436 4436:S58|546865207479706520636f6e7374727563746f72732074616b6520646966666572656e74206e756d62657273206f6620617267756d656e74732e 4437:O2|3,@4438 4438:S9|776974682074797065 4439:O2|3,@4440 4440:S17|43616e6e6f742073686172652074797065 4441:O2|3,@4442 4442:S21|697320616c726561647920646566696e6564206173 4443:O4|@15140,@832,@4445,@4444 4444:O5|@4305,504,0,504,0 4445:S5|6973566172 4446:S35|5349474e41545552455328292e73696756616c28362973686172655479706573283829 4447:O4|@15140,@832,@4449,@4448 4448:O5|@4305,552,0,552,0 4449:S30|6c696e6b466c657869626c65547970654964733a206e6f7420626f756e64 4450:O4|@15140,@832,@4452,@4451 4451:O5|@4305,540,0,540,0 4452:S38|6c696e6b466c657869626c65547970654964733a20646966666572656e742061726974696573 4453:O4|@15140,@832,@4455,@4454 4454:O5|@4305,550,0,550,0 4455:S33|6c696e6b466c657869626c65547970654964733a206e6f74207661726961626c65 4456:S44|5349474e41545552455328292e73696756616c2836296c696e6b466c657869626c6554797065496473283229 4457:S25|5349474e41545552455328292e7072696e7444657363283329 4458:S62|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e74536861726528312973686f7754797065436f6e73283229 4459:S41|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329 4460:O1|@11778 4461:S62|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283229283129 4462:S59|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283129 4463:O1|@11780 4464:O4|@15142,@1027,0,@4465 4465:O5|@4305,676,0,676,0 4466:S46|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229676574283429 4467:S56|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329736861726553747275637473283129 4468:S54|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129676574457175616c73283429 4469:S40|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229 4470:S59|5349474e41545552455328292e73696756616c2836297369676e61747572655768657265547970652837296c6f6f6b75704661696c757265283129 4471:S28|5349474e41545552455328292e676976654572726f72283329283129 4472:S46|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729283129 4473:S2|6060 4474:O2|3,@4475 4475:S24|2068617320616c7265616479206265656e2073657420746f 4476:O2|3,@4477 4477:S30|43616e6e6f74206170706c792074797065207265616c69736174696f6e2e 4478:O4|@15140,@832,@4480,@4479 4479:O5|@4305,937,0,937,0 4480:S12|736574576865726554797065 4481:O1|@11794 4482:O1|@11795 4483:S16|697320616e2065717479706520627574 4484:S25|646f6573206e6f74207065726d697420657175616c6974792e 4485:O4|@15140,@832,@4480,@4486 4486:O5|@4305,935,0,935,0 4487:S17|6973206120646174617479706520627574 4488:S21|6973206e6f7420612073696d706c6520747970652e 4489:S64|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e7453657428322974797065456e762d283129 4490:S56|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229283129 4491:S43|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729 4492:S53|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229 4493:O1|@11800 4494:S44|434f5049455228292e6765744e65787452756e74696d654f66667365742831296765744f6666736574283329 4495:S36|5349474e41545552455328292e73696756616c2836296d617046756e6374696f6e283129 4496:O4|@15140,@832,@4498,@4497 4497:O5|@4305,1350,0,1350,0 4498:S21|6d61704964733a636f707954797065436f6e737472 4499:S40|5349474e41545552455328292e73696756616c2836296d6170496473283229636f70794964283129 4500:O1|@11807 4501:S49|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129283129 4502:O1|@11808 4503:S46|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129 4504:O1|@11809 4505:S8|73686172696e6720 4506:O4|@15140,@832,@4508,@4507 4507:O5|@4305,1376,0,1376,0 4508:S6|6d6170496473 4509:S22|5349474e41545552455328292e73696756616c283629 4510:S31|5349474e41545552455328292e73696756616c2836296d6170496473283229 4511:O10|0,0,0,0,0,0,0,0,0,0 4512:O2|@10699,10 4513:S40|535452554354555245535f28292e73747275637456616c75652838296c6f63616c456e762d283129 4514:O1|@11816 4515:S38|535452554354555245535f28292e73747275637456616c75652838296e6577456e762d283129 4516:O1|@11822 4517:O4|@15140,@832,@4519,@4518 4518:O5|@4294,1574,0,1574,0 4519:S21|46756e63746f7220696e2053747275637420456e64 4520:O1|@11823 4521:O4|@15140,@832,@4523,@4522 4522:O5|@4294,1573,0,1573,0 4523:S23|5369676e617475726520696e2053747275637420456e64 4524:O1|@11824 4525:O1|@11828 4526:O1|@11827 4527:S45|535452554354555245535f28292e6d616b65436f7079416374696f6e732831296d61746368456e747279283329 4528:S40|535452554354555245535f28292e73747275637456616c7565283829656e7465724974656d283429 4529:S32|535452554354555245535f28292e6d616b65436f7079416374696f6e73283129 4530:S57|535452554354555245535f28292e73747275637456616c75652838296d61746368416374696f6e737c6d61746368526573756c74732d283129 4531:S9|46756e63746f722028 4532:S32|535452554354555245535f28292e676976654572726f72283329283129283129 4533:O6|@4298,@1629,0,0,@4415,0 4534:S29|535452554354555245535f28292e676976654572726f72283329283129 4535:S48|535452554354555245535f28292e73747275637456616c7565283829676574436f6d62696e6564547970654964283129 4536:S46|535452554354555245535f28292e73747275637456616c7565283829725369672d6d617463686564496473283129 4537:S42|535452554354555245535f28292e73747275637456616c7565283829725369672d6f6c644d6170283129 4538:S42|535452554354555245535f28292e6d61746368536967732838297461726765742d6e65774d6170283129 4539:O4|@15140,@832,@4541,@4540 4540:O5|@4294,1035,0,1035,0 4541:S48|43616e646964617465207374727563747572652077697468206e6f6e2d656d70747920626f756e64204944206c697374 4542:S39|535452554354555245535f28292e6d61746368536967732838296c6f6f6b757054797065283129 4543:S39|535452554354555245535f28292e6d6174636853696773283829726573756c7454797065283129 4544:S28|535452554354555245535f28292e73747275637456616c7565283829 4545:O4|@15213,@3337,0,@4546 4546:O5|@3338,68,0,68,0 4547:S19|4c697374506169722e6d617045712833292829 4548:S29|437265617465642066726f6d206f7061717565207369676e6174757265 4549:O4|@15140,@832,@4551,@4550 4550:O5|@4294,1770,0,1770,0 4551:S9|4e6f7420426f756e64 4552:S30|437265617465642066726f6d206170706c79696e672066756e63746f7220 4553:O4|@15140,@832,@4551,@4554 4554:O5|@4294,1513,0,1513,0 4555:S44|535452554354555245535f28292e73747275637456616c75652838296d616b654e6577547970654964283229 4556:O4|@15140,@832,@4558,@4557 4557:O5|@4294,1408,0,1408,0 4558:S24|6d61746368547970654964733a204e6f7420466f726d616c 4559:S29|535452554354555245535f28292e6d6174636854797065496473283229 4560:S32|434f5049455228292e7265706c6163654d6170283529747376456e762d283129 4561:S26|535452554354555245535f28292e6d6174636853696773283829 4562:O1|@11862 4563:O4|@11867,@1014,@1013,@1525 4564:O2|@866,@4565 4565:O2|@1010,0 4566:S40|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d6170283429 4567:O1|@11872 4568:O3|1,0,2 4569:O5|0,0,0,0,@4570 4570:O2|@4571,@1007 4571:O2|3,@279 4572:O2|@4573,@1350 4573:O3|1,1,4 4574:S57|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e73747252657374283229 4575:S53|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e737472283429 4576:O2|@4578,@4577 4577:O1|@11879 4578:O1|@11878 4579:S49|535452554354555245535f28292e636865636b54797065436f6e737472732838297072696e7454797065456e762d283129 4580:S52|535452554354555245535f28292e636865636b54797065436f6e737472732838296572726f72496e44617461747970652d283129 4581:S5|6d61746368 4582:O2|@4583,0 4583:S55|207761732070726573656e7420696e207468652073747275637475726520627574206e6f7420696e20746865207369676e61747572652e 4584:S14|3a20636f6e7374727563746f7220 4585:S30|4572726f72207768696c65206d61746368696e6720646174617479706520 4586:S56|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d6174636853747275637475726573283329 4587:S33|535452554354555245535f28292e636865636b54797065436f6e73747273283829 4588:S18|20696e207375622d73747275637475726520 4589:S34|53747275637475726520646f6573206e6f74206d61746368207369676e6174757265 4590:O2|3,@4591 4591:S10|5369676e61747572653a 4592:O2|3,@4593 4593:S10|5374727563747572653a 4594:S34|535452554354555245535f28292e7369675374727563744d617463684d7367283829 4595:S36|535452554354555245535f28292e6d617463685479706573283429636f70794964283129 4596:O1|@11885 4597:S48|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129283129 4598:O1|@11886 4599:S45|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129 4600:O1|@11887 4601:S43|535452554354555245535f28292e6d617463685479706573283429636f7079546172676574283129283129 4602:O1|@11888 4603:S27|535452554354555245535f28292e6d617463685479706573283429 4604:O2|3,@4605 4605:S11|636f6e7374727563746f72 4606:S53|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329646973706c617956616c7565283129 4607:O5|0,0,0,@4609,@4608 4608:O2|@4612,0 4609:O2|@4610,0 4610:O2|0,@4611 4611:O5|@4294,1266,1266,0,0 4612:O2|3,@4613 4613:S4|49734f4b 4614:O1|@11893 4615:O5|0,0,0,@4609,@4616 4616:O2|@4617,0 4617:O2|3,@4618 4618:S7|497357726f6e67 4619:S15|7072696e742d6d6174636854797065 4620:O2|0,2 4621:O2|1,@4622 4622:O2|3,@4623 4623:S25|56616c7565206973206e6f7420616e20657863657074696f6e 4624:O2|1,@4625 4625:O2|3,@4626 4626:S26|56616c7565206973206e6f74206120636f6e7374727563746f72 4627:O1|@11894 4628:O2|@866,@4629 4629:O2|@4630,0 4630:O5|0,3,0,0,@4631 4631:O2|@4592,@4632 4632:O2|@866,@4633 4633:O2|@4634,0 4634:O2|3,@4635 4635:S11|4e6f742070726573656e74 4636:S57|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d617463684c6f63616c56616c756573283329 4637:S36|535452554354555245535f28292e7369675374727563744d697373696e674d7367283629 4638:S38|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329 4639:O1|@11896 4640:O2|@4642,@4641 4641:O1|@11901 4642:O1|@11900 4643:S58|535452554354555245535f28292e6d61746368536967732838296d617463684e616d65732833292833297072696e7454797065456e762d283129 4644:S56|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c617954797065283129 4645:O1|@11902 4646:S61|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c6179537472756374757265283129 4647:O2|3,@4648 4648:S47|54797065732074616b6520646966666572656e74206e756d62657273206f66207479706520617267756d656e74732e 4649:O2|3,@4650 4650:S35|5479706520696e20737472756374757265206973206e6f742061206461746174797065 4651:O1|@11903 4652:O1|@11904 4653:O2|3,@4654 4654:S41|5479706520696e20737472756374757265206973206e6f7420616e20657175616c6974792074797065 4655:S42|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329 4656:S39|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329 4657:S22|434f5049455228292e7265706c6163654d6170283529 4658:O2|@11907,@4659 4659:O2|12,@4668 4660:S21|636f6465466f72556e6971756549642d657175616c 4661:O3|6,64,0 4662:O2|@1854,@4663 4663:O2|@1262,0 4664:O4|@15140,@832,@4666,@4665 4665:O5|@1151,68,0,68,0 4666:S9|646545787472616374 4667:S31|545950454944434f444528292e636f6465466f72556e697175654964283129 4668:O8|@4670,@4669,0,0,@1853,1,0,1 4669:S13|7072696e742d64656661756c74 4670:O3|6,@1138,0 4671:S38|436f6e73747275637465642066726f6d206120667265652074797065207661726961626c652e 4672:O2|@4673,0 4673:S65|2920636f6e7461696e73206120667265652074797065207661726961626c652e2053657474696e6720697420746f206120756e69717565206d6f6e6f747970652e 4674:S13|5468652074797065206f662028 4675:S56|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129283129 4676:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283229 4677:S50|545950455f5452454528292e636865636b466f7246726565547970655661726961626c657328342967656e4e616d65283129 4678:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129 4679:S49|535452554354555245535f28292e706173733253747275637473283329636865636b5661726961626c6573283229283129 4680:S40|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429 4681:O1|@11917 4682:S79|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229636865636b456e747279283329 4683:S66|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229 4684:S54|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329283129 4685:S8|46756e63746f7220 4686:S51|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329 4687:S10|5369676e617475726520 4688:S98|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296172675369675769746853656c65637465642d6d6170546f53656c6563746564283129 4689:S68|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132295f2d283129 4690:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229656e7657697468417267732d283129 4691:O1|@11943 4692:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296e6577547970654964283129 4693:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129283129 4694:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129 4695:S73|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132297265735369672d283129 4696:S3|28292e 4697:O1|@11948 4698:S76|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229726573547970654d6170283129 4699:S43|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229 4700:S63|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229 4701:O4|@15140,@832,@4703,@4702 4702:O5|@4294,2191,0,2191,0 4703:S29|6d6b49643a204e6f7420426f756e64206f72206e6f7420466f726d616c 4704:S70|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296d6b4964283129 4705:S26|5554494c49544945535f28292e7365617263684c697374283229 4706:O1|@11954 4707:O5|0,0,0,@4709,@4708 4708:O2|@4712,0 4709:O2|@4710,0 4710:O2|0,@4711 4711:O5|@4294,129,129,0,0 4712:O2|3,@4713 4713:S18|436f6e7374727563746f72546f56616c7565 4714:O5|0,0,0,@4716,@4715 4715:O2|@4719,0 4716:O2|@4717,0 4717:O2|0,@4718 4718:O5|@4294,128,128,0,0 4719:O2|3,@4720 4720:S16|457863657074696f6e546f56616c7565 4721:O5|0,0,0,@4723,@4722 4722:O2|@4726,0 4723:O2|@4724,0 4724:O2|0,@4725 4725:O5|@4294,127,127,0,0 4726:O2|3,@4727 4727:S10|4e6f436f657263696f6e 4728:S20|7072696e742d76616c7565436f657263696f6e73 4729:O3|@11955,@4780,@4730 4730:O3|@12083,@4781,@4780 4731:O1|@11956 4732:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329283129 4733:O1|@11958 4734:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283129283129 4735:O4|@15142,@1027,0,@4736 4736:O5|@4294,835,0,835,0 4737:S48|535452554354555245535f28292e746f704465634578706f727454726565283329636f6d6d6f6e50726f70732d283129 4738:O1|@11962 4739:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296173506172656e74283129 4740:O1|@11966 4741:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296578706f727454686973283129 4742:S44|5349474e41545552455328292e7369674578706f727454726565283329636f6d6d6f6e50726f70732d283129 4743:O1|@11969 4744:S40|5349474e41545552455328292e7369674578706f7274547265652833296173506172656e74283129 4745:O1|@11972 4746:O1|@11973 4747:S45|5349474e41545552455328292e737065634578706f727454726565283329636f6d6d6f6e50726f70732d283129 4748:S41|5349474e41545552455328292e737065634578706f7274547265652833296173506172656e74283129 4749:S40|5349474e41545552455328292e737065634578706f72745472656528332967657454797065283129 4750:S40|5349474e41545552455328292e737065634578706f7274547265652833296765744e616d65283129 4751:O1|@11985 4752:S29|5349474e41545552455328292e7369674578706f727454726565283129 4753:O1|@11986 4754:O1|@11987 4755:S54|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296578706f727454686973283129 4756:S56|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329676574536967537472756374283129 4757:S51|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296765744e616d65283129 4758:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283129 4759:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329 4760:S30|5349474e41545552455328292e737065634578706f727454726565283329 4761:S30|5349474e41545552455328292e737065634578706f727454726565283129 4762:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574536967283129 4763:S29|5349474e41545552455328292e7369674578706f727454726565283329 4764:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574426f6479283129 4765:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574417267283129 4766:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296765744e616d65283129 4767:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283129 4768:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329 4769:O1|@12009 4770:O1|@12010 4771:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296578706f727454686973283129 4772:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329676574536967283129 4773:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296765744e616d65283129 4774:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283129 4775:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329 4776:S58|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329 4777:S33|535452554354555245535f28292e746f704465634578706f727454726565283329 4778:S34|535452554354555245535f28292e737472756374734578706f727454726565283229 4779:S47|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329 4780:O5|@12020,@4730,@15240,@15241,@4781 4781:O2|@12082,@4730 4782:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329636f6d6d6f6e50726f70732d283129 4783:S49|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296173506172656e74283129 4784:S53|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296765745369676e6174757265283129 4785:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329676574537472756374757265283129 4786:O5|0,0,0,@4788,@4787 4787:O2|@4791,0 4788:O2|@4789,0 4789:O2|0,@4790 4790:O5|@4294,714,714,0,0 4791:O2|3,@4792 4792:S3|446563 4793:O5|0,0,0,@4788,@2054 4794:S16|7072696e742d616c6c456e7472696573 4795:S54|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296578706f7274456e7472696573283129 4796:S54|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f72417267283129 4797:S55|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f724e616d65283129 4798:S38|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329 4799:O4|@12037,@15242,@15240,@15241 4800:S21|7072696e742d636f72654465636c61726174696f6e 4801:O5|0,0,0,@4803,@4802 4802:O2|@4806,0 4803:O2|@4804,0 4804:O2|0,@4805 4805:O5|@4294,187,187,0,0 4806:O2|3,@4807 4807:S8|436f72654c616e67 4808:S15|7072696e742d737472756374446563 4809:O5|0,0,0,@4810,@3908 4810:O2|@4811,0 4811:O2|0,@4812 4812:O5|@4294,194,194,0,0 4813:O4|0,@4814,3,1 4814:O1|@12043 4815:O4|0,@4816,3,1 4816:O1|@12044 4817:O2|3,@4818 4818:S8|76616c526566203d 4819:O2|3,@4820 4820:S9|68617665536967203d 4821:O4|0,@4822,3,1 4822:O1|@12045 4823:O4|0,@4824,3,1 4824:O1|@12046 4825:O2|3,@4826 4826:S17|74797065496473466f724465627567203d 4827:O2|3,@4828 4828:S10|62696e64696e6773203d 4829:O5|0,0,0,@4831,@4830 4830:O2|@4834,0 4831:O2|@4832,0 4832:O2|0,@4833 4833:O5|@4294,180,180,0,0 4834:O2|3,@4835 4835:S12|537472756374757265446563 4836:O1|@12047 4837:O2|@12048,@15244 4838:O5|0,0,0,@4840,@4839 4839:O2|@4843,0 4840:O2|@4841,0 4841:O2|0,@4842 4842:O5|@1548,506,506,0,0 4843:O2|3,@4844 4844:S9|466978537461747573 4845:S15|7072696e742d666978537461747573 4846:O5|0,0,0,@4848,@4847 4847:O2|@4851,0 4848:O2|@4849,0 4849:O2|0,@4850 4850:O5|@4294,114,114,0,0 4851:O2|3,@4852 4852:S7|436f7265466978 4853:O5|0,0,0,@4855,@4854 4854:O2|@4858,0 4855:O2|@4856,0 4856:O2|0,@4857 4857:O5|@4294,115,115,0,0 4858:O2|3,@4859 4859:S10|436f7265537472756374 4860:O5|0,0,0,@4862,@4861 4861:O2|@4865,0 4862:O2|@4863,0 4863:O2|0,@4864 4864:O5|@4294,113,113,0,0 4865:O2|3,@4866 4866:S8|436f726554797065 4867:O5|0,0,0,@4869,@4868 4868:O2|@4872,0 4869:O2|@4870,0 4870:O2|0,@4871 4871:O5|@4294,112,112,0,0 4872:O2|3,@4873 4873:S9|436f726556616c7565 4874:O4|@12049,@15245,@15241,@15240 4875:O4|0,@4876,3,1 4876:O1|@12050 4877:O4|0,@4878,2,2 4878:O1|@12051 4879:O2|3,@4880 4880:S8|736f75726365203d 4881:O2|3,@4882 4882:S6|64657374203d 4883:O4|0,@4884,3,1 4884:O1|@12054 4885:O4|0,@4886,2,2 4886:O1|@12055 4887:O4|0,@4888,3,1 4888:O1|@12056 4889:O4|0,@4890,3,1 4890:O1|@12057 4891:O5|@12058,@15224,@15185,@15247,@15179 4892:O5|0,0,0,@4894,@4893 4893:O2|@4897,0 4894:O2|@4895,0 4895:O2|0,@4896 4896:O5|@1548,219,219,0,0 4897:O2|3,@4898 4898:S7|46756e63746f72 4899:S14|7072696e742d66756e63746f7273 4900:O2|3,@4901 4901:S8|726573496473203d 4902:O2|3,@4903 4903:S17|6d61746368546f417267756d656e74203d 4904:O2|3,@4905 4905:S8|617267496473203d 4906:O5|0,0,0,@4908,@4907 4907:O2|@4911,0 4908:O2|@4909,0 4909:O2|0,@4910 4910:O5|@4294,150,150,0,0 4911:O2|3,@4912 4912:S11|46756e63746f724170706c 4913:O5|0,0,0,@4915,@4914 4914:O2|@4918,0 4915:O2|@4916,0 4916:O2|0,@4917 4917:O5|@4294,162,162,0,0 4918:O2|3,@4919 4919:S6|4c6574446563 4920:O3|@12061,@15251,@15249 4921:S11|7072696e742d7370656373 4922:O5|0,0,0,@4924,@4923 4923:O2|@4927,0 4924:O2|@4925,0 4925:O2|0,@4926 4926:O5|@4305,78,78,0,0 4927:O2|3,@4928 4928:S6|536967446563 4929:O4|0,@4930,3,1 4930:O1|@12063 4931:O4|0,@4932,3,1 4932:O1|@12064 4933:O5|0,0,0,@4935,@4934 4934:O2|@4938,0 4935:O2|@4936,0 4936:O2|0,@4937 4937:O5|@4305,76,76,0,0 4938:O2|3,@4939 4939:S14|5369676e61747572654964656e74 4940:O4|0,@4941,2,2 4941:O1|@12065 4942:O2|3,@4943 4943:S10|747970654e616d65203d 4944:O2|3,@4945 4945:S8|736967457870203d 4946:O2|3,@4947 4947:S13|7265616c69736174696f6e203d 4948:O5|0,0,0,@4950,@4949 4949:O2|@4953,0 4950:O2|@4951,0 4951:O2|0,@4952 4952:O5|@4305,80,80,0,0 4953:O2|3,@4954 4954:S9|576865726554797065 4955:S10|7072696e742d73696773 4956:O2|@12066,@15249 4957:O5|0,0,0,@4958,@4861 4958:O2|@4959,0 4959:O2|0,@4960 4960:O5|@4305,91,91,0,0 4961:O4|0,@4962,3,1 4962:O1|@12067 4963:O5|0,0,0,@4965,@4964 4964:O2|@4968,0 4965:O2|@4966,0 4966:O2|0,@4967 4967:O5|@4305,88,88,0,0 4968:O2|3,@4969 4969:S5|4578536967 4970:O5|0,0,0,@4972,@4971 4971:O2|@4975,0 4972:O2|@4973,0 4973:O2|0,@4974 4974:O5|@4305,99,99,0,0 4975:O2|3,@4976 4976:S10|496e636c756465536967 4977:O4|0,@4978,2,2 4978:O1|@12069 4979:O2|3,@4980 4980:S8|736861726573203d 4981:O2|3,@4982 4982:S8|697354797065203d 4983:O5|0,0,0,@4985,@4984 4984:O2|@4988,0 4985:O2|@4986,0 4986:O2|0,@4987 4987:O5|@4305,97,97,0,0 4988:O2|3,@4989 4989:S7|53686172696e67 4990:O2|3,@4991 4991:S11|736967537472756374203d 4992:O5|0,0,0,@4994,@4993 4993:O2|@4997,0 4994:O2|@4995,0 4995:O2|0,@4996 4996:O5|@4305,83,83,0,0 4997:O2|3,@4998 4998:S12|537472756374757265536967 4999:O5|0,0,0,@5001,@5000 5000:O2|@5004,0 5001:O2|@5002,0 5002:O2|0,@5003 5003:O5|@4305,85,85,0,0 5004:O2|3,@5005 5005:S6|56616c536967 5006:O4|0,@5007,3,1 5007:O1|@12073 5008:O4|0,@5009,2,2 5009:O1|@12074 5010:O2|3,@5011 5011:S5|737472203d 5012:O2|3,@5013 5013:S8|7369674c6f63203d 5014:O2|3,@5015 5015:S11|6f7061717565496473203d 5016:O2|3,@5017 5017:S8|6f7061717565203d 5018:O2|3,@5019 5019:S19|6d61746368546f436f6e73747261696e74203d 5020:O2|3,@5021 5021:S6|63736967203d 5022:O5|0,0,0,@5024,@5023 5023:O2|@5027,0 5024:O2|@5025,0 5025:O2|0,@5026 5026:O5|@4294,169,169,0,0 5027:O2|3,@5028 5028:S13|536967436f6e73747261696e74 5029:O2|3,@5030 5030:S15|6d61746368546f526573756c74203d 5031:O2|3,@5032 5032:S7|616c697374203d 5033:O5|0,0,0,@5035,@5034 5034:O2|@5038,0 5035:O2|@5036,0 5036:O2|0,@5037 5037:O5|@4294,143,143,0,0 5038:O2|3,@5039 5039:S9|537472756374446563 5040:O4|0,@5041,3,1 5041:O1|@12078 5042:O4|0,@5043,3,1 5043:O1|@12079 5044:O5|0,0,0,@5046,@5045 5045:O2|@5049,0 5046:O2|@5047,0 5047:O2|0,@5048 5048:O5|@4294,136,136,0,0 5049:O2|3,@5050 5050:S14|5374727563747572654964656e74 5051:S17|7072696e742d73747275637456616c7565 5052:O3|@12080,@15245,@15157 5053:O2|3,@5054 5054:S17|736f75726365537472756374757265203d 5055:O2|3,@5056 5056:S15|636f6e74656e74734d61746368203d 5057:O5|0,0,0,@5059,@5058 5058:O2|@5062,0 5059:O2|@5060,0 5060:O2|0,@5061 5061:O5|@4294,121,121,0,0 5062:O2|3,@5063 5063:S14|5374727563747572654d61746368 5064:O2|3,@5065 5065:S12|736f7572636549644e6f203d 5066:O2|3,@5067 5067:S12|6973457175616c697479203d 5068:O5|0,0,0,@5070,@5069 5069:O2|@5073,0 5070:O2|@5071,0 5071:O2|0,@5072 5072:O5|@4294,123,123,0,0 5073:O2|3,@5074 5074:S11|5479706549644d61746368 5075:O2|3,@5076 5076:S12|74617267657454797065203d 5077:O2|3,@5078 5078:S13|736f7572636556616c7565203d 5079:O2|3,@5080 5080:S10|636f657263696f6e203d 5081:O5|0,0,0,@5083,@5082 5082:O2|@5086,0 5083:O2|@5084,0 5084:O2|0,@5085 5085:O5|@4294,119,119,0,0 5086:O2|3,@5087 5087:S10|56616c75654d61746368 5088:S19|7072696e742d76616c75654d61746368696e67 5089:S33|535452554354555245535f28292e7374727563744578706f727454726565283129 5090:S48|535452554354555245535f28292e7374727563744578706f727454726565283329636f6d6d6f6e50726f70732d283129 5091:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296173506172656e74283129 5092:O1|@12087 5093:S57|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296578706f727454686973283129 5094:S55|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f7274534228332967657456616c7565283129 5095:S54|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296765744e616d65283129 5096:S59|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329676574536967537472756374283129 5097:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283129 5098:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329 5099:S33|535452554354555245535f28292e7374727563744578706f727454726565283329 5100:O4|@12098,@15264,@7190,@5101 5101:O1|@13512 5102:O1|@12099 5103:O4|@12100,@5203,@5104,@15146 5104:O3|@12141,@5103,@5203 5105:S3|416464 5106:S3|446976 5107:S3|4d6f64 5108:S4|4d756c74 5109:S4|51756f74 5110:S3|52656d 5111:S3|537562 5112:S12|47726561746572457175616c 5113:S7|47726561746572 5114:S9|4c657373457175616c 5115:S4|4c657373 5116:O2|3,@5117 5117:S10|424547494e4c4f4f5028 5118:S11|436f6d7061726542797465 5119:S9|457175616c42797465 5120:S8|4d6f766542797465 5121:S8|4d6f7665576f7264 5122:O2|3,@200 5123:O3|1,0,3 5124:O2|@866,@1031 5125:O2|3,@5126 5126:S9|526563757273697665 5127:S3|417267 5128:S10|5749544820657869643d 5129:O2|3,@5130 5130:S7|48414e444c4528 5131:S5|282a562a29 5132:S7|696e6c696e652c 5133:S8|206c6f63616c732c 5134:S8|636c6f737572653d 5135:S14|726563757273697665207573653d 5136:O2|@866,@5137 5137:O2|@5138,0 5138:O2|3,@1592 5139:O2|3,@1591 5140:O2|3,@5141 5141:S3|666e28 5142:S6|433136426974 5143:S6|433332426974 5144:S6|433634426974 5145:S5|4338426974 5146:S7|43446f75626c65 5147:S6|43466c6f6174 5148:S6|4d4c42797465 5149:S15|4d4c42797465496d6d757461626c65 5150:S6|4d4c576f7264 5151:S15|4d4c576f7264496d6d757461626c65 5152:S14|4d4c576f7264556e746167676564 5153:S4|4c6f6164 5154:O2|3,@5155 5155:S6|524149534528 5156:S5|53746f7265 5157:O2|3,@5158 5158:S2|3c3d 5159:O2|@199,0 5160:S2|2c20 5161:S8|5441475445535428 5162:S8|4441544154595045 5163:S5|5455504c45 5164:O2|@5160,0 5165:S13|534554434f4e5441494e455228 5166:S22|42617365436f6465547265652e707265747479283129 5167:S23|42617365436f6465547265652e704c6973742833292829 5168:O2|@1021,@5169 5169:O2|@5170,0 5170:O2|3,@214 5171:O2|3,@5172 5172:S6|4578706f7274 5173:O1|@12111 5174:S27|42617365436f6465547265652e7072657474795573616765283129 5175:O2|@1021,@5176 5176:O2|@4571,0 5177:O2|@5122,0 5178:O5|0,0,0,0,@5179 5179:O2|@5122,@5175 5180:O2|@866,@5181 5181:O2|@5182,0 5182:O2|3,@5183 5183:S5|3a7265616c 5184:O2|@1021,@5185 5185:O2|@1024,@5186 5186:O2|@5187,0 5187:O3|1,1,0 5188:S34|42617365436f6465547265652e7072657474792831297072696e7441726773283229 5189:S5|4669786564 5190:S9|4c61726765576f7264 5191:S4|54657374 5192:S3|586f72 5193:S2|4f72 5194:S3|416e64 5195:S15|526967687441726974686d65746963 5196:S12|52696768744c6f676963616c 5197:S4|4c656674 5198:S4|5265616c 5199:S4|576f7264 5200:S6|5369676e6564 5201:S8|556e7369676e6564 5202:S46|4261636b656e64496e7465726d656469617465436f64652e4275696c74496e732e62696e61727952657072283129 5203:O2|@12138,@5103 5204:S9|76616c204c6f63616c 5205:S35|42617365436f6465547265652e70726574747953696d706c6542696e64696e67283329 5206:S12|3d20436f6e7461696e657220 5207:O2|3,@5208 5208:S8|76616c2072656320 5209:S29|42617365436f6465547265652e70726574747942696e64696e67283129 5210:O2|@1021,@5211 5211:O2|@5212,0 5212:O2|3,@5213 5213:S5|20616e6420 5214:S24|434f44455452454528292e67656e436f6465283329283129 5215:O1|@12150 5216:O5|0,0,0,@5218,@5217 5217:O2|@5221,0 5218:O2|@5219,0 5219:O2|0,@5220 5220:O5|@1151,186,186,0,0 5221:O2|3,@5222 5222:S9|556e56697369746564 5223:O5|0,0,0,@5218,@5224 5224:O2|@5225,0 5225:O2|3,@5226 5226:S14|5669736974656447656e6572616c 5227:O5|0,0,0,@5218,@5228 5228:O2|@5229,0 5229:O2|3,@5230 5230:S14|566973697465645370656369616c 5231:S11|7072696e742d7669736974 5232:O2|@12151,@5233 5233:O2|@12154,@5232 5234:S32|434f44455452454528292e67656e436f646528332966696e6444656373283129 5235:O4|@15140,@832,@5237,@5236 5236:O5|@1151,234,0,234,0 5237:S36|646f47656e6572616c3a206e6f74204c6f61644c6f63616c206f7220436f6e7374616e74 5238:S41|434f44455452454528292e67656e436f646528332970726f6365737347656e416e6453706563283229 5239:O4|@15140,@832,@5241,@5240 5240:O5|@1151,274,0,274,0 5241:S31|526573756c7420766563746f72206973206e6f7420616e2061646472657373 5242:S21|434f44455452454528292e67656e436f6465283329 5243:O4|@15140,@832,@5245,@5244 5244:O5|@5246,261,0,261,0 5245:S33|6c6f6f6b7570436f6e7374616e743a20746f702d6c6576656c2072656163686564 5246:S68|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e532e736d6c 5247:S66|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296c6f6f6b757041646472283129 5248:S64|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429636f6e746578742d283129 5249:O2|@12165,@5250 5250:O2|@13201,@5249 5251:S50|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283129283129 5252:O2|1,@1178 5253:S47|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283429 5254:O4|@15140,@832,@5256,@5255 5255:O5|@1700,273,0,273,0 5256:S31|6d616b6556616c202d206e6f7420636f6e7374616e74206f72207475706c65 5257:O4|4,@119,0,@5258 5258:O5|@730,149,0,149,0 5259:S81|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c2831297475706c6550726f70732d696e6c696e6550726f702d7475706c65456e747279283129 5260:O1|@12170 5261:S46|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129 5262:O4|@15140,@832,@5264,@5263 5263:O5|@1700,242,0,242,0 5264:S12|6e6f7420636f6e7374616e74 5265:S58|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129636f7079546f566563283229 5266:O1|@12176 5267:O4|@15140,@832,@5269,@5268 5268:O5|@5270,476,0,476,0 5269:S17|546f70206c6576656c2072656163686564 5270:S53|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f4c414d4244415f4c4946542e736d6c 5271:S49|434f4445545245455f4c414d4244415f4c49465428292e636f646547656e6572617465283329746f706c6576656c283129 5272:O4|@15140,@832,@5274,@5273 5273:O5|@5270,481,0,481,0 5274:S33|434f4445545245455f4c414d4244415f4c4946543a636f646547656e6572617465 5275:O4|4,@119,0,@5276 5276:O5|@5277,47,0,47,0 5277:S21|2e5c62617369735c426f6f6c41727261792e736d6c 5278:S66|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f526563757273697665283129 5279:O4|11,@78,0,@5280 5280:O5|@5277,402,0,402,0 5281:S64|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f436c6f73757265283129 5282:O1|@12177 5283:S47|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f6465283129 5284:O4|11,@78,0,@5285 5285:O5|@5277,396,0,396,0 5286:S61|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f646528312970726f6365737344656373283129 5287:O1|@12181 5288:O1|9 5289:S27|42617365436f6465547265652e6d6170436f646574726565283229 5290:S34|42617365436f6465547265652e6d6170436f6465747265652832296d617074283129 5291:O4|@15140,@832,@5293,@5292 5292:O5|@2234,617,0,617,0 5293:S8|64654c616d626461 5294:S47|42617365436f6465547265652e6d6170436f6465747265652832296d6170742831296d617062696e64696e67283129 5295:O4|@15140,@832,@4666,@5296 5296:O5|@2234,616,0,616,0 5297:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465546f436f6e7374616e74283329 5298:O14|@12198,@15254,13,@6614,@6623,@15256,@15261,@6716,@6721,5,@6726,@6727,@15262,@15252 5299:O2|3,@5300 5300:S13|737461636b4f6666736574203d 5301:O5|0,0,0,@5303,@5302 5302:O2|@5307,0 5303:O2|@5304,0 5304:O2|0,@5305 5305:O5|@5306,123,123,0,0 5306:S58|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c583836436f646574726565546f49436f64652e4d4c 5307:O2|3,@5308 5308:S17|436f6e7461696e65724c6f636174696f6e 5309:O5|0,0,0,@5311,@5310 5310:O2|@5314,0 5311:O2|@5312,0 5312:O2|0,@5313 5313:O5|@5306,121,121,0,0 5314:O2|3,@5315 5315:S10|4e6f4c6f636174696f6e 5316:O5|0,0,0,@5318,@5317 5317:O2|@5321,0 5318:O2|@5319,0 5319:O2|0,@5320 5320:O5|@5306,122,122,0,0 5321:O2|3,@5322 5322:S12|507265674c6f636174696f6e 5323:S19|7072696e742d6c6f636174696f6e56616c7565 5324:O2|3,@5325 5325:S9|6d656d41646472203d 5326:O2|3,@5327 5327:S14|6578697374696e6750726567203d 5328:O2|3,@5329 5329:S10|636f6e7374333273203d 5330:O2|3,@5331 5331:S13|616e79436f6e7374616e74203d 5332:O5|0,0,0,@5334,@5333 5333:O2|@5337,0 5334:O2|@5335,0 5335:O2|0,@5336 5336:O5|@5306,237,237,0,0 5337:O2|3,@5338 5338:S7|416c6c6f776564 5339:O5|0,0,0,@5341,@5340 5340:O2|@5344,0 5341:O2|@5342,0 5342:O2|0,@5343 5343:O5|@5306,236,236,0,0 5344:O2|3,@5345 5345:S8|4e6f526573756c74 5346:O5|0,0,0,@5348,@5347 5347:O2|@5351,0 5348:O2|@5349,0 5349:O2|0,@5350 5350:O5|@5306,235,235,0,0 5351:O2|3,@5352 5352:S12|537065636966696350526567 5353:S17|7072696e742d64657374696e6174696f6e 5354:O9|@12201,@5425,@5435,@5445,@5447,@5454,@5458,@5464,@5355 5355:O2|@12427,@5354 5356:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296a756d704f6e4f766572666c6f77283129 5357:O3|7,0,0 5358:O3|7,1,0 5359:O4|@15140,@832,@5361,@5360 5360:O5|@5306,577,0,577,0 5361:S24|4249434576616c2061646472657373206e6f7420636f6465 5362:O4|@15140,@832,@5364,@5363 5363:O5|@5306,575,0,575,0 5364:S15|4249434576616c2061646472657373 5365:O4|@15140,@832,@5367,@5366 5366:O5|@5306,485,0,485,0 5367:S28|636f6465546f49436f6465526576202d206c6f63616c20756e736574 5368:O5|0,0,0,0,1 5369:O4|@15140,@832,@5371,@5370 5370:O5|@5306,535,0,535,0 5371:S6|6f6666736574 5372:O1|4 5373:O4|@15140,@832,@5375,@5374 5374:O5|@5306,542,0,542,0 5375:S23|636f6465546f49436f64655265762d4249434669656c64 5376:O4|@15140,@832,@5378,@5377 5377:O5|@5306,1009,0,1009,0 5378:S28|4249434c6f6f7020776974686f757420424943426567696e4c6f6f70 5379:O4|@15140,@832,@5381,@5380 5380:O5|@5306,463,0,463,0 5381:S23|636f6465546f49436f6465202d20737461636b20707472 5382:S98|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362973746f7265496e7374727c636f6465436f6e7461696e65722d73746f7265546f537461636b283129 5383:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963726561746553746f7265283129283129 5384:O4|@15140,@832,@5367,@5385 5385:O5|@5306,1135,0,1135,0 5386:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d67657441646472283129 5387:S86|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d283129 5388:O4|@15140,@832,@5367,@5389 5389:O5|@5306,1197,0,1197,0 5390:S95|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d6c6f61644669656c64283129 5391:O2|6,@5392 5392:O1|13 5393:O5|0,0,1,0,1 5394:O4|11,@78,0,@5395 5395:O5|@5277,199,0,199,0 5396:O4|@15213,@3337,0,@5397 5397:O5|@3338,85,0,85,0 5398:O4|@15140,@832,@5400,@5399 5399:O5|@5306,509,0,509,0 5400:S19|424943457874726163743a20636c6f73757265 5401:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629 5402:O4|@15140,@832,@5404,@5403 5403:O5|@5306,940,0,940,0 5404:S19|636f646543617365733a206d69736d61746368 5405:S70|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64654361736573283329 5406:S21|506f6c794d756c7469706c79417262697472617279 5407:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6c6f616441726773283229 5408:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6d616b65537461636b41726773283229 5409:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564526576283429 5410:S20|506f6c79436f6d70617265417262697472617279 5411:O5|0,1,1,1,1 5412:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f61644669656c6473283329 5413:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d636f7079436f6e7461696e6572283329 5414:O4|@15140,@832,@5416,@5415 5415:O5|@5306,333,0,333,0 5416:S13|636f6465546f50526567526576 5417:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429 5418:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f73757265283329 5419:S97|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f737572652833296c6f61644669656c6473283229 5420:S85|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329 5421:O2|@5391,0 5422:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329636c656172283129 5423:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f616441726773283429 5424:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f646541726773283329 5425:O4|@12249,@5354,@5432,@5426 5426:O2|@12271,@5354 5427:O4|@15140,@832,@5429,@5428 5428:O5|@5306,2386,0,2386,0 5429:S35|636f6465546f49436f6465426c6f636b202d20426c6f636b4f70457175616c42797465 5430:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465426c6f636b283529 5431:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564283429 5432:O2|@12270,@5354 5433:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f646541646472657373526576283529 5434:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654173556e746167676564546f526567526576283529 5435:O5|@12272,@5354,@5432,@5436,@5426 5436:O2|@12306,@5354 5437:O4|@15140,@832,@5439,@5438 5438:O5|@5306,324,0,324,0 5439:S10|636f6465546f50526567 5440:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646553746f7265283429 5441:O4|@15140,@832,@5443,@5442 5442:O5|@5306,2979,0,2979,0 5443:S26|636f646543416464726573733a20756e6b6e6f776e2073697a65 5444:S56|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654341646472657373283429 5445:O3|@12309,@5432,@5436 5446:S59|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64654c6f6164283529 5447:O3|@12328,@5354,@5432 5448:O4|@15140,@832,@5450,@5449 5449:O5|@5306,79,0,79,0 5450:S26|6c61726765576f7264436f6e7374616e743a20696e76616c6964 5451:O4|@15140,@832,@5450,@5452 5452:O5|@5306,85,0,85,0 5453:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465436f6e646974696f6e526576283529 5454:O3|@12332,@5354,@5455 5455:O2|@12337,@5354 5456:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465416c6c6f63617465283529 5457:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329616c6c6f636174654d656d6f72795661726961626c65283629 5458:O2|@12343,@5354 5459:O4|@15140,@832,@5461,@5460 5460:O5|@5306,2906,0,2906,0 5461:S58|636f6465546f49436f64653a204669786564507265636973696f6e4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 5462:O2|2,1 5463:S67|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654669786564507265636973696f6e4172697468283629 5464:O4|@12371,@5354,@5465,@5458 5465:O2|@12425,@5354 5466:O2|0,@1755 5467:S77|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529636865636b4f766572666c6f77283129 5468:O4|@15140,@832,@5470,@5469 5469:O5|@5306,1867,0,1867,0 5470:S59|636f6465546f49436f64654e6f6e5265763a204c61726765576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 5471:O4|@15140,@832,@5473,@5472 5472:O5|@5306,1612,0,1612,0 5473:S54|636f6465546f49436f64654e6f6e5265763a20576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 5474:O4|@15140,@832,@5476,@5475 5475:O5|@5306,1961,0,1961,0 5476:S54|636f6465546f49436f64654e6f6e5265763a205265616c4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 5477:S61|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529 5478:S68|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654d756c7469706c79436f6e7374616e74576f7264283529 5479:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465556e617279283529 5480:O2|@1145,0 5481:S41|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329 5482:O2|@12446,@15128 5483:O1|@12447 5484:O4|11,@78,0,@5485 5485:O5|@469,121,0,121,0 5486:S40|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d283129 5487:S50|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c64283229 5488:S60|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c6428322966696e64546162283329 5489:S25|537472696e672e6669656c64732832296669656c6427283229 5490:S26|5072657474792e67657453696d706c655072696e746572283229 5491:O2|8,@5492 5492:O2|20,@5493 5493:O2|60,0 5494:O4|@15140,@832,@5496,@5495 5495:O5|@5497,192,0,192,0 5496:S15|546f6f206d616e7920706173736573 5497:S57|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c58383649436f64655472616e73666f726d2e4d4c 5498:O1|@12452 5499:S26|58383649436f646528292e7072696e74426c6f636b2834292d45 5500:O1|@12453 5501:S45|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f583836283729 5502:O1|@12456 5503:O4|0,@5504,1,1 5504:O1|@12457 5505:O5|0,0,0,@5507,@5506 5506:O2|@5511,0 5507:O2|@5508,0 5508:O2|0,@5509 5509:O5|@5510,22,22,0,0 5510:S47|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c496e745365742e736d6c 5511:O2|3,@5512 5512:S6|496e74536574 5513:S12|7072696e742d696e74536574 5514:O2|3,@5515 5515:S10|737461636b536574203d 5516:O2|3,@5517 5517:S8|726567536574203d 5518:O2|3,@5519 5519:S9|63635374617465203d 5520:O5|0,0,0,@5522,@5521 5521:O2|@5526,0 5522:O2|@5523,0 5523:O2|0,@5524 5524:O5|@5525,396,396,0,0 5525:S66|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c58383649436f64654964656e746966795265666572656e6365732e4d4c 5526:O2|3,@5527 5527:S6|4c6f6f706564 5528:O5|0,0,0,@5522,@3262 5529:O5|0,0,0,@5522,@5530 5530:O2|@5531,0 5531:O2|3,@5532 5532:S10|50726f63657373696e67 5533:O5|0,0,0,@5522,@5534 5534:O2|@5535,0 5535:O2|3,@5536 5536:S11|556e70726f636573736564 5537:S14|7072696e742d6c6f6f7044617461 5538:S59|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f6465283429 5539:S17|094a756d70477274556e7369676e656409 5540:S18|094a756d704c657373556e7369676e656409 5541:S11|094a756d70457175616c09 5542:S15|094a756d704772745369676e656409 5543:S15|094a756d704765715369676e656409 5544:S16|094a756d704c6573735369676e656409 5545:S15|094a756d704c65715369676e656409 5546:S17|094a756d704c6571556e7369676e656409 5547:S17|094a756d70476571556e7369676e656409 5548:S14|094a756d704e6f74457175616c09 5549:S16|094a756d704e6f4f766572666c6f7709 5550:S17|094a756d70506172697479436c65617209 5551:S14|094a756d704f766572666c6f7709 5552:S14|094a756d70506172697479536574 5553:S7|20656c7365204c 5554:S5|206f722048 5555:S7|094a756d70094c 5556:S13|0953657448616e646c65720948 5557:S7|094a756d700948 5558:S16|09416c6c6f636174654d656d6f727909 5559:O2|@5560,0 5560:S4|203d3e20 5561:S3|2c663d 5562:S2|733d 5563:S6|20736176653d 5564:S5|0941646409 5565:S9|09416e644269747309 5566:S9|09436f6d7061726509 5567:S8|094f724269747309 5568:S10|09537562747261637409 5569:S17|094578636c75736976654f724269747309 5570:S22|0941746f6d696345786368616e6765416e6441646409 5571:S7|616464723d3028 5572:S7|292c776974683d 5573:S15|09426567696e46756e6374696f6e09 5574:S14|09426567696e48616e646c657209 5575:S6|207769746820 5576:S15|09426c6f636b427974654d6f766509 5577:S15|09426c6f636b576f72644d6f766509 5578:S4|7372633d 5579:S6|2c646573743d 5580:S5|2c6c656e3d 5581:S9|09426f785353453209 5582:S8|09426f7858383709 5583:S10|09426f784c6172676509 5584:S20|09436f6d7061726542797465566563746f727309 5585:S12|09436f7079546f4361636865 5586:S5|3136426974 5587:S5|3332426974 5588:S4|42797465 5589:S6|446f75626c65 5590:S5|466c6f6174 5591:S9|094469766973696f6e 5592:S7|5369676e656409 5593:S9|556e7369676e656409 5594:S4|20627920 5595:S5|2072656d20 5596:S14|0946756e6374696f6e43616c6c09 5597:S10|72656375727369766520 5598:S13|09496e64657865644361736509 5599:S5|746573743d 5600:S5|776f726b3d 5601:S13|09496e6974436f6d706c657465 5602:S15|09496e697469616c6973654d656d09 5603:S3|2c693d 5604:S3|2c613d 5605:S10|094a756d704c6f6f7009 5606:S5|094c6f6164 5607:S19|094c6f61644566666563746976654164647209 5608:S12|094c6f61644d656d52656709 5609:S13|094c6f636b4d757461626c6509 5610:S16|094d756c7469706c69636174696f6e09 5611:S21|09506f70457863657074696f6e48616e646c657209 5612:S5|7769746820 5613:S21|095075736845786348616e646c6572097769746820 5614:S11|095075736856616c756509 5615:S7|09526169736509 5616:S18|0952657365727665436f6e7461696e657209 5617:S15|095265736574537461636b50747209 5618:S12|207072657365727665204343 5619:S20|0952657475726e46726f6d46756e6374696f6e09 5620:S13|0953534532436f6d7061726509 5621:S11|0953534532465041646409 5622:S11|09535345324650416e6409 5623:S12|09535345324650436f6d7009 5624:S11|0953534532465044697609 5625:S21|09535345324650446f75626c65546f466c6f617409 5626:S12|095353453246504d6f766509 5627:S18|095353453246504d6f766553696e676c6509 5628:S11|095353453246504d756c09 5629:S11|0953534532465053756209 5630:S11|09535345324650586f7209 5631:S11|0953534532466c6f617409 5632:S13|09536869667452417269746809 5633:S15|095368696674524c6f676963616c09 5634:S11|0953686966744c65667409 5635:S12|0953746f7265313642697409 5636:S12|0953746f7265333242697409 5637:S11|0953746f72654279746509 5638:S13|0953746f7265446f75626c6509 5639:S12|0953746f7265466c6f617409 5640:S11|0953746f7265576f726409 5641:S14|0953746f7265546f537461636b09 5642:S10|0954616756616c756509 5643:S10|095461696c43616c6c09 5644:S12|095465737454616742697409 5645:S6|09556e746167 5646:S7|20636163686520 5647:S16|09576f7264436f6d70617269736f6e09 5648:S12|09583837436f6d7061726509 5649:S10|09583837465041646409 5650:S14|095838374650436f6d7061726509 5651:S17|095838374650436f6d70617265506f7009 5652:S10|09583837465044697609 5653:S13|09583837465052657644697609 5654:S10|0958383746504d756c09 5655:S10|09583837465053756209 5656:S13|09583837465052657653756209 5657:S22|095838374650476574436f6e646974696f6e093d3e20 5658:S12|0958383746504c6f61643009 5659:S12|0958383746504c6f61643109 5660:S13|0958383746504e656761746509 5661:S10|09583837465041627309 5662:S10|09583837466c6f617409 5663:S3|786d6d 5664:S2|6670 5665:S7|61646a7573743d 5666:S10|737461636b53697a653d 5667:S10|20776f726b207265673d 5668:S3|287370 5669:S2|293d 5670:S12|20436865636b3a736176653d 5671:S2|703d 5672:S3|3d3e20 5673:S24|58383649436f646528292e7072696e74426c6f636b283429 5674:S3|202b20 5675:S24|58383649436f646528292e7072696e7449436f6465283329 5676:S2|6178 5677:S3|726178 5678:S3|656178 5679:S2|616c 5680:S2|6378 5681:S3|726378 5682:S3|656378 5683:S2|636c 5684:S2|6478 5685:S3|726478 5686:S3|656478 5687:S2|646c 5688:S2|6278 5689:S3|726278 5690:S3|656278 5691:S2|626c 5692:S2|7370 5693:S3|727370 5694:S3|657370 5695:S2|6168 5696:S2|6270 5697:S3|726270 5698:S3|656270 5699:S2|6368 5700:S2|7369 5701:S3|727369 5702:S3|657369 5703:S2|6468 5704:S2|6469 5705:S3|726469 5706:S3|656469 5707:S2|6268 5708:S7|756e6b6e6f776e 5709:S29|5838364f5554505554434f444528292e67656e52656752657072283229 5710:S3|2a385d 5711:S3|2a345d 5712:S3|2a325d 5713:S3|2a315d 5714:S24|58383649436f646528292e7072696e74496e646578283329 5715:S22|58383649436f646528292e7072696e74417267283329 5716:S10|436f6e666c696374733d 5717:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c69637473283129 5718:S74|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c696374732831297072696e7452656773283229 5719:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729676574416c6c6f6361746564526567283129 5720:O4|@15140,@832,@5722,@5721 5721:O5|@5723,63,0,63,0 5722:S8|617347656e526567 5723:S57|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c58383649436f6465546f583836436f64652e4d4c 5724:O4|@15140,@832,@5726,@5725 5725:O5|@5723,66,0,66,0 5726:S7|61734650526567 5727:O4|@15140,@832,@5729,@5728 5728:O5|@5723,69,0,69,0 5729:S8|6173584d4d526567 5730:S9|7072696e742d726567 5731:O5|0,0,0,@5733,@5732 5732:O2|@5736,0 5733:O2|@5734,0 5734:O2|0,@5735 5735:O5|@5723,231,231,0,0 5736:O2|3,@5737 5737:S11|4f74686572536f75726365 5738:O5|0,0,0,@5740,@5739 5739:O2|@5743,0 5740:O2|@5741,0 5741:O2|0,@5742 5742:O5|@5723,230,230,0,0 5743:O2|3,@5744 5744:S11|537461636b536f75726365 5745:S14|7072696e742d6c6c736f75726365 5746:O2|@1164,0 5747:O2|@5748,0 5748:O4|4,2,@5750,@5749 5749:O4|1,@5751,@5372,24 5750:O2|7,0 5751:O2|5,0 5752:O1|@5753 5753:O2|4,0 5754:O2|@5755,0 5755:O4|4,2,@5753,@5749 5756:S37|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729 5757:S2|3a0a 5758:O1|16 5759:O4|11,@78,0,@5760 5760:O5|@5761,99,0,99,0 5761:S42|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f44455f41525241592e4d4c 5762:O4|11,@78,0,@5763 5763:O5|@5761,112,0,112,0 5764:O4|@15140,@832,@5766,@5765 5765:O5|@5767,3139,0,3139,0 5766:S8|6d69736d61746368 5767:S53|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c5838364f5554505554434f44452e4d4c 5768:S2|0a0a 5769:S29|5838364f5054494d49534528292e67656e6572617465436f6465283329 5770:S11|416c6c6f6353746f726520 5771:S19|416c6c6f6353746f72655661726961626c6520 5772:S3|436d70 5773:S3|4d4320 5774:S4|203c3d20 5775:S3|525220 5776:S12|4c6f636b6564584164642028 5777:S6|29203c3d3e20 5778:S13|43616c6c46756e6374696f6e20 5779:S14|76696120436c6f73757265526567 5780:S5|636f64653d 5781:S8|43616c6c52545320 5782:S19|537461636b4f766572666c6f7743616c6c4578 5783:S12|486561704f766572666c6f77 5784:S17|537461636b4f766572666c6f7743616c6c 5785:S9|4a756d704166746572 5786:S10|4a756d704265666f7265 5787:S9|4a756d70457175616c 5788:S11|4a756d7047726561746572 5789:S18|4a756d70477265617465724f72457175616c 5790:S8|4a756d704c657373 5791:S15|4a756d704c6573734f72457175616c 5792:S12|4a756d704e6f744166746572 5793:S13|4a756d704e6f744265666f7265 5794:S12|4a756d704e6f74457175616c 5795:S15|4a756d704e6f744f766572666c6f77 5796:S12|4a756d704e6f506172697479 5797:S12|4a756d704f766572666c6f77 5798:S10|4a756d70506172697479 5799:S2|204c 5800:S16|20507265646963744e6f7454616b656e 5801:S13|205072656469637454616b656e 5802:S12|4469766964655369676e6564 5803:S14|446976696465556e7369676e6564 5804:S5|4650416464 5805:S9|4650436f6d70617265 5806:S15|4650436f6d70617265416e64506f70 5807:S8|4650446976696465 5808:S15|465052657665727365446976696465 5809:S10|46504d756c7469706c79 5810:S10|46505375627472616374 5811:S17|4650526576657273655375627472616374 5812:S7|46504672656520 5813:S7|46504c6f616420 5814:O3|@12477,@5824,@5815 5815:O1|@12480 5816:S3|6e616e 5817:S4|7e696e66 5818:S3|696e66 5819:S2|302e 5820:S2|2e30 5821:S17|5265616c2e67656e466d74283129283129 5822:S14|5265616c2e67656e466d74283229 5823:S16|5265616c2e6164645a65726f73283129 5824:B8|0000000000000000 5825:S21|506f6c795265616c426f786564546f537472696e67 5826:S7|20284c41535429 5827:S13|46504c6f616453696e676c6520 5828:S13|46504c6f6164446f75626c6520 5829:S10|46504c6f6164496e7420 5830:S9|465053746174757320 5831:S17|465053746f7265416e64506f70203d3e20 5832:S11|465053746f7265203d3e20 5833:S23|465053746f726553696e676c65416e64506f70203d3e20 5834:S17|465053746f726553696e676c65203d3e20 5835:S23|465053746f7265446f75626c65416e64506f70203d3e20 5836:S17|465053746f7265446f75626c65203d3e20 5837:S10|46504c6f61645a65726f 5838:S9|46504c6f61644f6e65 5839:S5|4650416273 5840:S12|46504368616e67655369676e 5841:S16|496e64657865644a756d7043616c6320 5842:S4|202b3d20 5843:S5|202a203820 5844:S4|202a2032 5845:S15|4a756d70546f46756e6374696f6e20 5846:S12|4c6f61644164647265737320 5847:S3|2a3820 5848:S3|2a3420 5849:S3|2a3220 5850:S18|4c6f61644c6162656c41646472657373204c 5851:S19|4c6f636b4d757461626c655365676d656e7420 5852:S7|4d6f7665525220 5853:S9|4d756c7469706c7952 5854:S4|202a3d3e 5855:S9|4e6567617469766520 5856:S5|506f705220 5857:S5|5075736820 5858:S14|5261697365457863657074696f6e 5859:S7|52657065617420 5860:S10|53746f7265576f726473 5861:S10|53746f72654279746573 5862:S9|4d6f7665576f726473 5863:S9|4d6f76654279746573 5864:S12|436f6d706172654279746573 5865:S11|5265736574537461636b20 5866:S19|52657475726e46726f6d46756e6374696f6e20 5867:S23|5368696674205269676874204172697468656d65746963 5868:S19|5368696674205269676874204c6f676963616c 5869:S18|5368696674204c656674204c6f676963616c 5870:S7|20627920454358 5871:S19|5369676e457874656e64466f72446976696465 5872:S19|53746f7265436f6e7374546f4d656d6f727920 5873:S16|53746f7265496e697469616c69736564 5874:S23|53746f72654c6f6e67436f6e7374546f4d656d6f727920 5875:S10|53746f7265436f6e7374 5876:S17|53746f7265526567546f4d656d6f727920 5877:S12|54657374427974654d656d20 5878:S3|203078 5879:S9|546573745461675220 5880:S14|556e636f6e644272616e6368204c 5881:S6|5843686e6720 5882:S5|203c3d3e20 5883:S7|53534532416464 5884:S7|53534532416e64 5885:S8|53534532436f6d70 5886:S7|53534532446976 5887:S17|53534532446f75626c65546f466c6f6174 5888:S8|535345324d6f7665 5889:S14|535345324d6f766553696e676c65 5890:S7|535345324d756c 5891:S7|53534532537562 5892:S7|53534532586f72 5893:S3|524d20 5894:S15|436f6e7665727446726f6d496e7420 5895:S11|4d6f766553696e676c6520 5896:S11|4d6f7665446f75626c6520 5897:S33|5838364f5554505554434f444528292e7072696e744f7065726174696f6e283229 5898:S51|5838364f5554505554434f444528292e7072696e744f7065726174696f6e2832297072696e74426173654f6666736574283329 5899:O4|@15140,@832,@5901,@5900 5900:O5|@5902,70,0,70,0 5901:S20|666f72776172643a20417269746852436f6e7374 5902:S51|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c5838364f5054494d4953452e4d4c 5903:O4|@15140,@832,@5905,@5904 5904:O5|@5902,90,0,90,0 5905:S24|666f72776172643a206f6666736574206e6f6e2d7a65726f 5906:S39|5838364f5054494d49534528292e67656e6572617465436f6465283329666f7277617264283329 5907:S39|5838364f5054494d49534528292e67656e6572617465436f646528332972657665727365283429 5908:S31|5838364f5554505554434f444528292e67656e6572617465436f6465283329 5909:S19|506f6c794c6f636b4d757461626c65436f6465 5910:S5|6c6f636b20 5911:S4|786f7220 5912:S4|73756220 5913:S4|616e6420 5914:S4|73626220 5915:S4|61646320 5916:S4|6f722020 5917:S4|61646420 5918:S4|636d7020 5919:S47|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c2833292d45 5920:O4|11,@78,0,@5921 5921:O5|@5761,89,0,89,0 5922:S6|786f72706409 5923:S6|616e64706409 5924:S8|75636f6d69736409 5925:S3|36360a 5926:S3|30460a 5927:S6|6d6f76737309 5928:S9|637674737332736409 5929:S3|46330a 5930:S6|646976736409 5931:S6|737562736409 5932:S9|637674736432737309 5933:S6|6d756c736409 5934:S6|616464736409 5935:S9|637674736932736409 5936:S6|6d6f76736409 5937:S3|46320a 5938:S4|6a672020 5939:S4|6a6c6520 5940:S4|6a676520 5941:S4|6a6c2020 5942:S4|6a6e7020 5943:S4|6a702020 5944:S4|6a6e7320 5945:S4|6a732020 5946:S4|6a612020 5947:S4|6a6e6120 5948:S4|6a6e6520 5949:S4|6a652020 5950:S4|6a6e6220 5951:S4|6a622020 5952:S4|6a6e6f20 5953:S4|6a6f2020 5954:S5|696d756c09 5955:S6|6d6f767a7809 5956:S5|7861646409 5957:S4|65736309 5958:S5|7075736809 5959:S5|706f702009 5960:S5|6a6f202009 5961:S5|6a6e6f2009 5962:S5|6a62202009 5963:S5|6a6e622009 5964:S5|6a65202009 5965:S5|6a6e652009 5966:S5|6a6e612009 5967:S5|6a61202009 5968:S5|6a73202009 5969:S5|6a6e732009 5970:S5|6a70202009 5971:S5|6a6e702009 5972:S5|6a6c202009 5973:S5|6a67652009 5974:S5|6a6c652009 5975:S5|6a67202009 5976:S7|7863686e672009 5977:S5|6d6f762009 5978:S3|73696c 5979:S3|64696c 5980:S3|62706c 5981:S3|73706c 5982:S5|6c65612009 5983:S3|6e6f70 5984:S3|63716f 5985:S3|636471 5986:S5|736168660a 5987:S4|72657020 5988:S5|6d6f767362 5989:S5|6d6f76736c 5990:S5|7265706520 5991:S5|636d707362 5992:S8|7465737409616c2c 5993:S5|73746f7362 5994:S5|73746f7371 5995:S5|73746f736c 5996:S3|3f3f3f 5997:S5|7265742009 5998:S3|726574 5999:S5|5341564509 6000:S5|63616c6c09 6001:S5|6a6d702009 6002:S3|686c74 6003:S3|6e6567 6004:S4|74657374 6005:S4|69646976 6006:S4|64697620 6007:S4|696d756c 6008:S4|6d756c20 6009:S4|6e656720 6010:S4|70757368 6011:S4|6a6d7020 6012:S4|63616c6c 6013:O4|@15140,@832,@6015,@6014 6014:O5|@5767,280,0,280,0 6015:S19|426164207265676973746572206e756d626572 6016:S10|71776f72642070747220 6017:S10|64776f72642070747220 6018:S9|776f72642070747220 6019:S9|627974652070747220 6020:S2|2e2b 6021:S2|2a31 6022:S2|2a32 6023:S2|2a34 6024:S2|2a38 6025:S28|5838364f5554505554434f444528292e7072696e74436f6465283229 6026:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574333273283229 6027:S26|506f6c794765744c6f774f7264657241734c61726765576f7264 6028:S11|666d756c0973742c737428 6029:S11|666164640973742c737428 6030:S9|66636f6d7009737428 6031:S12|66646976720973742c737428 6032:S11|666469760973742c737428 6033:S12|66737562720973742c737428 6034:S11|667375620973742c737428 6035:S9|666672656509737428 6036:S8|6673747009737428 6037:S8|6673742009737428 6038:S9|666e73747377096178 6039:S8|6678636809737428 6040:S8|666c642009737428 6041:S4|66636f73 6042:S5|6673717274 6043:S4|6673696e 6044:S7|66696e63737470 6045:S6|66706174616e 6046:S7|66646563737470 6047:S4|666c647a 6048:S4|666c6631 6049:S4|666c6431 6050:S4|66616273 6051:S4|66636873 6052:S5|6673747009 6053:S4|66737409 6054:S5|666c642009 6055:S6|666469767209 6056:S5|6664697609 6057:S5|6673756209 6058:S5|666d756c09 6059:S6|667375627209 6060:S6|66636f6d7009 6061:S5|6661646409 6062:S6|66696c647109 6063:S6|66696c646c09 6064:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74466c6f6174283229 6065:S4|73617220 6066:S4|73687220 6067:S4|73686c20 6068:O1|10 6069:O1|12 6070:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e745368696674283329 6071:S26|5838364f5554505554434f444528292e6f70546f496e74283129 6072:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574363473283229 6073:S45|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c283329 6074:O4|11,@78,0,@6075 6075:O5|@5761,131,0,131,0 6076:S42|5838364f5554505554434f444528292e67656e6572617465436f6465283329707574436f6e7374283229 6077:S19|506f6c79536574436f6465436f6e7374616e74 6078:S21|506f6c79436f707942797465566563546f436f6465 6079:O4|7,@144,0,@6080 6080:O5|@145,196,0,196,0 6081:O4|7,@144,0,@6082 6082:O5|@145,185,0,185,0 6083:S42|5838364f5554505554434f444528292e67656e6572617465436f64652833297365744279746573283329 6084:S19|506f6c79446976696465417262697472617279 6085:S22|506f6c7952656d61696e646572417262697472617279 6086:O4|@15140,@832,@6088,@6087 6087:O5|@5767,3109,0,3109,0 6088:S34|7075744e6f6e41646472436f6e73743a204e6f742061207265616c206e756d626572 6089:S49|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229 6090:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229646f436f7079283129 6091:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e73742832297365744d656d283229 6092:O2|242,0 6093:O2|240,0 6094:O2|102,0 6095:O2|243,0 6096:O2|15,0 6097:S30|5838364f5554505554434f444528292e6f70436f64654279746573283229 6098:B8|0000000000000000 6099:B8|000000000000f03f 6100:B8|000000000000f0bf 6101:S30|5838364f5554505554434f444528292e676574436f6e7374616e74283429 6102:O4|@15140,@832,@6104,@6103 6103:O5|@5767,2051,0,2051,0 6104:S26|726570726f63657373202d2073697a6520696e63726561736564 6105:O4|@15140,@832,@6107,@6106 6106:O5|@5767,198,0,198,0 6107:S25|696e7433325369676e65643a20696e76616c696420776f7264 6108:O4|@15140,@832,@6110,@6109 6109:O5|@5767,186,0,186,0 6110:S24|627974655369676e65643a20696e76616c69642062797465 6111:O4|@15140,@832,@6113,@6112 6112:O5|@5767,1941,0,1941,0 6113:S12|666978757041646472657373 6114:O1|22 6115:O1|21 6116:O4|@15140,@832,@6113,@6117 6117:O5|@5767,1921,0,1921,0 6118:O1|20 6119:S30|5838364f5554505554434f444528292e66697875704c6162656c73283329 6120:S45|5838364f5554505554434f444528292e66697875704c6162656c73283329666978757041646472657373283429 6121:S59|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875704164647265737328342970726f6365737343617365283329 6122:S40|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875703332283329 6123:O3|0,5,0 6124:O2|@5753,0 6125:O4|@15140,@832,@6127,@6126 6126:O5|@5767,664,0,664,0 6127:S13|6d6f64726d3a20626164207267 6128:O4|@15140,@832,@6130,@6129 6129:O5|@5767,665,0,665,0 6130:S13|6d6f64726d3a2062616420726d 6131:S31|5838364f5554505554434f444528292e6f70496e646578656447656e283529 6132:S26|5838364f5554505554434f444528292e72657842797465283429 6133:S35|5838364f5554505554434f444528292e6c61726765576f7264546f4279746573283229 6134:O4|@15140,@832,@6136,@6135 6135:O5|@5767,1554,0,1554,0 6136:S22|63674f703a2053746f7265496e697469616c69736564 6137:O4|@15140,@832,@6139,@6138 6138:O5|@5767,1552,0,1552,0 6139:S24|63674f703a20416c6c6f6353746f72655661726961626c65 6140:O4|@15140,@832,@6142,@6141 6141:O5|@5767,1550,0,1550,0 6142:S16|63674f703a20416c6c6f6353746f7265 6143:O4|@15140,@832,@6145,@6144 6144:O5|@5767,1547,0,1547,0 6145:S24|53746f72654e6f6e576f7264436f6e73743a203332426974 6146:O4|@15140,@832,@6148,@6147 6147:O5|@5767,1544,0,1544,0 6148:S24|53746f72654e6f6e576f7264436f6e73743a203136426974 6149:O1|24 6150:O1|32 6151:O1|31 6152:O4|@15140,@832,@6154,@6153 6153:O5|@5767,1519,0,1519,0 6154:S37|53746f72654c6f6e67436f6e7374546f4d656d6f727920696e2036342d626974206d6f6465 6155:O4|@15140,@832,@6157,@6156 6156:O5|@5767,1374,0,1374,0 6157:S32|41726974684d656d4c6f6e67436f6e737420696e2036342d626974206d6f6465 6158:O1|7 6159:O1|29 6160:O1|34 6161:O1|33 6162:O1|28 6163:O1|27 6164:O1|30 6165:O1|23 6166:O1|@6167 6167:O4|1,0,0,0 6168:O1|15 6169:O1|38 6170:O1|39 6171:O1|41 6172:O2|72,0 6173:O1|11 6174:O1|14 6175:O1|47 6176:O1|@1165 6177:O2|6,4 6178:O2|6,0 6179:O2|6,5 6180:O2|6,1 6181:O2|6,7 6182:O2|0,5 6183:O2|1,4 6184:O2|0,4 6185:O4|@15140,@832,@6187,@6186 6186:O5|@5767,1858,0,1858,0 6187:S21|63674f703a20496e64657865644a756d7043616c63 6188:O4|@15140,@832,@6190,@6189 6189:O5|@5767,1849,0,1849,0 6190:S15|63674f703a204a756d705461626c65 6191:O4|@15140,@832,@6193,@6192 6192:O5|@5767,1782,0,1782,0 6193:S27|4d756c7469706c79202d206164647265737320636f6e7374616e74 6194:O1|17 6195:O1|18 6196:O1|19 6197:O1|@5751 6198:O1|42 6199:O1|43 6200:O1|@6201 6201:O4|0,0,1,0 6202:O1|48 6203:O4|@15140,@832,@6205,@6204 6204:O5|@5767,1842,0,1842,0 6205:S11|63674f703a205843686e67 6206:O4|@15140,@832,@6208,@6207 6207:O5|@5767,1811,0,1811,0 6208:S14|63674f703a20584d4d4172697468 6209:O1|46 6210:O1|45 6211:S34|5838364f5554505554434f444528292e636f646547656e6572617465283129283229 6212:S38|5838364f5554505554434f444528292e636f646547656e657261746528312963674f70283129 6213:O1|35 6214:S49|5838364f5554505554434f444528292e636f646547656e657261746528312963674f702831296d616b654a756d70283229 6215:S24|5838364f5554505554434f444528292e6f70526567283329 6216:S35|5838364f5554505554434f444528292e696d6d6564696174654f706572616e64283329 6217:S29|5838364f5554505554434f444528292e6f70526567506c757332283329 6218:O2|224,0 6219:S15|506f6c795265616c47656e6572616c 6220:S26|5838364f5554505554434f444528292e72747343616c6c283229 6221:O2|191,0 6222:O4|@15140,@832,@6224,@6223 6223:O5|@5767,2227,0,2227,0 6224:S48|646f457870616e73696f6e3a20416c6c6f636174696f6e207374617274656420627574206e6f7420636f6d706c657465 6225:O4|@15140,@832,@6224,@6226 6226:O5|@5767,2209,0,2209,0 6227:O4|@15140,@832,@6229,@6228 6228:O5|@5767,2210,0,2210,0 6229:S18|416c6c6f6353746f72653a20696e20736574 6230:O1|@6231 6231:O2|7,1 6232:O4|1,@5751,@5372,16 6233:O4|@15140,@832,@6229,@6234 6234:O5|@5767,2228,0,2228,0 6235:O2|3,@6236 6236:O2|7,1 6237:S42|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329 6238:S56|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329646f457870616e73696f6e283329 6239:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837297365745265666572656e636573283229 6240:S47|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372967656e436f6465283329 6241:O4|@15140,@832,@6243,@6242 6242:O5|@5723,841,0,841,0 6243:S35|636f646547656e49436f64652d416c6c6f636174654d656d6f72795661726961626c65 6244:O3|@5751,@5372,8 6245:O3|31,@5753,@6246 6246:O4|1,@5751,@5372,8 6247:O3|38,1,0 6248:O2|3,@6249 6249:O2|1,@1172 6250:O2|1,@1823 6251:O2|1,@6252 6252:O2|7,0 6253:O2|1,@6178 6254:O1|44 6255:O4|4,2,@1823,@6256 6256:O2|3,@1823 6257:O2|37,0 6258:O4|@15140,@832,@6260,@6259 6259:O5|@5723,1188,0,1188,0 6260:S22|636f646547656e49436f64653a204469766973696f6e 6261:O4|4,5,@1165,@6262 6262:O2|3,@1165 6263:O4|@15140,@832,@6265,@6264 6264:O5|@5723,83,0,83,0 6265:S11|617267417347656e526567 6266:O4|@15140,@832,@6268,@6267 6267:O5|@5723,907,0,907,0 6268:S37|496e6465786564436173654f7065726174696f6e202d2073616d6520726567697374657273 6269:O4|@15140,@832,@6268,@6270 6270:O5|@5723,909,0,909,0 6271:O4|@15140,@832,@6273,@6272 6272:O5|@5723,912,0,912,0 6273:S34|636f646547656e49436f64653a20496e6465786564436173654f7065726174696f6e 6274:O2|37,4 6275:O2|35,@6246 6276:O3|48,@6244,@5753 6277:O4|@15140,@832,@6279,@6278 6278:O5|@5723,944,0,944,0 6279:S34|636f646547656e49436f64653a2050757368457863657074696f6e48616e646c6572 6280:O4|@15140,@832,@6282,@6281 6281:O5|@5723,894,0,894,0 6282:S34|636f6465457874656e6465643a205261697365457863657074696f6e5061636b6574 6283:O1|36 6284:O4|@15140,@832,@6286,@6285 6285:O5|@5723,1074,0,1074,0 6286:S45|636f646547656e49436f64653a205265736574537461636b507472202d206e65676174697665206f6666736574 6287:O4|@15140,@832,@6289,@6288 6288:O5|@5723,1330,0,1330,0 6289:S38|636f646547656e49436f6465202d2053534532416e64206e6f7420696e207265676973746572 6290:O4|@15140,@832,@6292,@6291 6291:O5|@5723,1328,0,1328,0 6292:S38|636f646547656e49436f6465202d2053534532586f72206e6f7420696e207265676973746572 6293:O4|@15140,@832,@6295,@6294 6294:O5|@5723,1314,0,1314,0 6295:S22|466c6f61744669786564496e743a206e6f7420726567 6296:O4|@15140,@832,@6298,@6297 6297:O5|@5723,1143,0,1143,0 6298:S29|636f6465457874656e646564202d2053686966744f7065726174696f6e 6299:O4|@15140,@832,@6301,@6300 6300:O5|@5723,1054,0,1054,0 6301:S24|636f646547656e49436f64653a2054657374546167426974 6302:O4|@15140,@832,@6304,@6303 6303:O5|@5723,1254,0,1254,0 6304:S39|636f646547656e49436f64653a20436f6d70617265466c6f6174696e675074206e6f7420667030 6305:O4|@15140,@832,@6307,@6306 6306:O5|@5723,1260,0,1260,0 6307:S37|636f646547656e49436f64653a20436f6d70617265466c6f6174696e6750743a20544f444f 6308:O4|@15140,@832,@6310,@6309 6309:O5|@5723,1279,0,1279,0 6310:S40|636f646547656e49436f64653a20466c6f6174696e67506f696e744172697468206e6f7420667030 6311:O4|@15140,@832,@6310,@6312 6312:O5|@5723,1280,0,1280,0 6313:O4|@15140,@832,@6315,@6314 6314:O5|@5723,1286,0,1286,0 6315:S30|636f646547656e49436f64653a20583837465041726974683a20544f444f 6316:O4|@15140,@832,@6318,@6317 6317:O5|@5723,1293,0,1293,0 6318:S35|636f646547656e49436f64653a205838374650556e6172794f7073206e6f7420667030 6319:O4|@15140,@832,@6318,@6320 6320:O5|@5723,1294,0,1294,0 6321:O4|@15140,@832,@6323,@6322 6322:O5|@5723,1303,0,1303,0 6323:S35|636f646547656e49436f64653a20466c6f61744669786564496e74206e6f7420667030 6324:O3|18,@5753,0 6325:S52|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329 6326:O4|@15140,@832,@6328,@6327 6327:O5|@5723,97,0,97,0 6328:S19|736f75726365417347656e5265674f724d656d 6329:O4|@15140,@832,@6331,@6330 6330:O5|@5723,137,0,137,0 6331:S26|636f646547656e49436f64653a204c6f6164417267756d656e74 6332:O4|@15140,@832,@6328,@6333 6333:O5|@5723,90,0,90,0 6334:S54|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c4c6f6164417267756d656e74283229 6335:O4|@15140,@832,@6337,@6336 6336:O5|@5723,818,0,818,0 6337:S30|636f6465457874656e6465643a2065617820696e20736176652072656773 6338:O4|@15140,@832,@6340,@6339 6339:O5|@5723,819,0,819,0 6340:S34|636f6465457874656e6465643a206172672072656720696e20736176652072656773 6341:S64|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e6465642833296d616b655361766573283229 6342:O2|3,@6343 6343:O2|1,@5753 6344:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329676574436f6e737441726773283229 6345:O4|@15140,@832,@6347,@6346 6346:O5|@5723,265,0,265,0 6347:S11|6e6f20776f726b20726567 6348:O2|@6350,@6349 6349:O1|@12681 6350:O1|@12680 6351:S44|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372961726373283129 6352:S51|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296e6f646541646472657373283129 6353:O1|@12679 6354:S58|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c756573283329 6355:S71|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c756573283229 6356:O4|@15140,@832,@6358,@6357 6357:O5|@5723,412,0,412,0 6358:S25|6d6f76654561636856616c7565202d20656d70747920736574 6359:O4|@15140,@832,@6361,@6360 6360:O5|@5723,292,0,292,0 6361:S30|6d6f76654561636856616c7565202d204d656d6f7279417267756d656e74 6362:O4|@15140,@832,@6364,@6363 6363:O5|@5723,405,0,405,0 6364:S20|6d6f76654561636856616c75653a206379636c65 6365:O4|@15140,@832,@6367,@6366 6366:O5|@5723,190,0,190,0 6367:S30|6c6c53746f7265417267756d656e743a2053746f7265417267756d656e74 6368:O4|@15140,@832,@6370,@6369 6369:O5|@5723,171,0,171,0 6370:S35|6c6c53746f7265417267756d656e743a2053746f7265204650526567203c3e20667030 6371:O4|@15140,@832,@6370,@6372 6372:O5|@5723,182,0,182,0 6373:S87|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c7565283229 6374:O4|@15140,@832,@6364,@6375 6375:O5|@5723,347,0,347,0 6376:S89|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c75652832292f37 6377:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c53746f7265417267756d656e74283529 6378:O4|103,@663,@6380,@6379 6379:O5|@6381,91,0,91,0 6380:S11|737461636b20656d707479 6381:S41|6d6c736f757263655c4d4c436f6d70696c65725c5374726f6e676c79436f6e6e65637465642e736d6c 6382:S48|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e7473283229 6383:O1|@12694 6384:S66|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e74283329 6385:S80|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e7428332970726f636573734c696e6b283229 6386:O4|@15140,@832,@6388,@6387 6387:O5|@5723,789,0,789,0 6388:S29|46756e6374696f6e43616c6c202d204d656d6f72794c6f636174696f6e 6389:O4|@15140,@832,@6391,@6390 6390:O5|@5723,216,0,216,0 6391:S31|636f6465457874417267756d656e74202d20436f6e7461696e657241646472 6392:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874417267756d656e74283229 6393:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c283329 6394:S82|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c28332972656e756d62657241726773283129 6395:O2|35,@6396 6396:O2|3,@5753 6397:S68|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e64656428332970757368537461636b41726773283329 6398:S65|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c416c6c6f636174654d656d6f72794f7065726174696f6e283229 6399:S15|506f6c794f72417262697472617279 6400:S29|5838364f5554505554434f444528292e636f6465437265617465283329 6401:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372970726f63657373426c6f636b73283129 6402:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729696e737472756374696f6e55736573283129 6403:S4|093d3e20 6404:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74526567697374657273283129 6405:S78|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e745265676973746572732831297072696e74526567416c6c6f63283229 6406:O1|@12740 6407:O2|3,@6408 6408:S5|726e6f203d 6409:O5|0,0,0,@6411,@6410 6410:O2|@6415,0 6411:O2|@6412,0 6412:O2|0,@6413 6413:O5|@6414,59,59,0,0 6414:S56|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c583836507573685265676973746572732e4d4c 6415:O2|3,@6416 6416:S11|43616368654d656d6f7279 6417:O5|0,0,0,@6419,@6418 6418:O2|@6422,0 6419:O2|@6420,0 6420:O2|0,@6421 6421:O5|@6414,58,58,0,0 6422:O2|3,@6423 6423:S10|4361636865537461636b 6424:O5|0,0,0,@6426,@6425 6425:O2|@6429,0 6426:O2|@6427,0 6427:O2|0,@6428 6428:O5|@6414,62,62,0,0 6429:O2|3,@6430 6430:S11|4361636865546167676564 6431:S15|7072696e742d636163686554797065 6432:O2|@6433,0 6433:O2|0,@1172 6434:O4|4,@119,0,@6435 6435:O5|@630,124,0,124,0 6436:S39|5838365075736852656769737465727328292e6164645265676973746572507573686573283529 6437:O2|@1145,0 6438:O4|@15140,@832,@6440,@6439 6439:O5|@6414,1243,0,1243,0 6440:S11|61646a757374537461636b 6441:S53|5838365075736852656769737465727328292e6164645265676973746572507573686573283529637265617465426c6f636b283129 6442:S55|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129 6443:O4|@15140,@832,@6445,@6444 6444:O5|@6414,288,0,288,0 6445:S17|6d6170537263526567202d20756e736574 6446:O4|@15140,@832,@6448,@6447 6447:O5|@6414,356,0,356,0 6448:S21|6d6170576f726b526567202d204d75737450757368 6449:O4|@15140,@832,@6451,@6450 6450:O5|@6414,368,0,368,0 6451:S21|6d6170576f726b526567202d206f6e20737461636b 6452:O4|@15140,@832,@6454,@6453 6453:O5|@6414,895,0,895,0 6454:S27|707573685265676973746572733a20426567696e48616e646c6572 6455:O4|@15140,@832,@6457,@6456 6456:O5|@6414,561,0,561,0 6457:S26|4c6f6164417267756d656e74202d20616c726561647920736574 6458:O4|@15140,@832,@6460,@6459 6459:O5|@6414,582,0,582,0 6460:S31|4c6f6164417267756d656e74202d20616c7265616479206f6e20737461636b 6461:O4|@15140,@832,@6463,@6462 6462:O5|@6414,605,0,605,0 6463:S9|63616368654b696e64 6464:O4|@15140,@832,@6466,@6465 6465:O5|@6414,414,0,414,0 6466:S29|6d617044657374436f6e7461696e65723a20616c726561647920736574 6467:O4|@15140,@832,@6469,@6468 6468:O5|@6414,395,0,395,0 6469:S21|6d6170436f6e7461696e6572202d20546f50526567 6470:O4|@15140,@832,@6472,@6471 6471:O5|@6414,394,0,394,0 6472:S20|6d6170436f6e7461696e6572202d20756e736574 6473:O4|@15140,@832,@6475,@6474 6474:O5|@6414,869,0,869,0 6475:S27|70757368526567697374657273202d20706f702068616e646c6572 6476:O4|@15140,@832,@6478,@6477 6477:O5|@6414,1024,0,1024,0 6478:S36|70757368526567697374657273202d2041746f6d696345786368616e6765416e64416464 6479:S64|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129646f50757368283229 6480:O4|@15140,@832,@6482,@6481 6481:O5|@6414,323,0,323,0 6482:S24|6d617044657374526567202d20616c726561647920736574 6483:O4|@15140,@832,@6485,@6484 6484:O5|@6414,346,0,346,0 6485:S29|6d617044657374526567202d20616c7265616479206f6e20737461636b 6486:S71|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312970757368526567697374657273283229 6487:O4|@15140,@832,@6489,@6488 6488:O5|@6414,420,0,420,0 6489:S17|6d6170536f75726365202d20756e736574 6490:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170536f757263654578283229 6491:O3|@5372,0,0 6492:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170496e6465784578283229 6493:S87|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296e6577436f6e7461696e657273283229 6494:S86|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296c6f6164537461636b417267283329 6495:O4|@15140,@832,@6497,@6496 6496:O5|@6414,550,0,550,0 6497:S30|6d6170416e644c6f6164202d20616c72656164792061206d656d206c6f63 6498:O4|@15140,@832,@6500,@6499 6499:O5|@6414,549,0,549,0 6500:S32|6d6170416e644c6f6164202d20616c7265616479206120737461636b206c6f63 6501:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170416e644c6f6164283229 6502:S83|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831297075736852656769737465727328322967657456616c756573283229 6503:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d617044657374526567283229 6504:S61|5838365075736852656769737465727328292e6164645265676973746572507573686573283529736574436f6d6d6f6e43616368655374617465283129 6505:O4|@15140,@832,@6507,@6506 6506:O5|@6414,226,0,226,0 6507:S24|72656d6f76654974656d73202d20737461636b2073697a65 6508:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312972656d6f76654974656d73283129 6509:S55|5838365075736852656769737465727328292e61646452656769737465725075736865732835297365745265666572656e636573283129 6510:O4|@15140,@832,@6512,@6511 6511:O5|@5497,256,0,256,0 6512:S9|63686f6f7365526567 6513:S83|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c69637453657473283129 6514:S108|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c283129 6515:S120|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c28312963686f6f7365526567283329 6516:S43|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329 6517:O1|@6249 6518:O1|@6253 6519:O1|@6520 6520:O2|1,@5750 6521:O1|@6250 6522:O1|@1164 6523:S59|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332970726f63657373426c6f636b73283129 6524:O4|@15140,@832,@6526,@6525 6525:O5|@6527,600,0,600,0 6526:S33|7265676973746572416c6c6f63617465202d2053686966744f7065726174696f6e 6527:S60|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c583836416c6c6f636174655265676973746572732e4d4c 6528:S62|583836416c6c6f6361746552656769737465727328292e616c6c6f636174655265676973746572732833297265676973746572416c6c6f63617465283429 6529:S58|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e645265676973746572283329 6530:S72|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e64526567697374657228332966696e6441467269656e64283329 6531:S54|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332961646448696e7473283429 6532:S73|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329616464536f75726365416e6444657374696e6174696f6e48696e74283229 6533:S46|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229 6534:O1|@12992 6535:S39|58383649436f64654964656e746966795265666572656e63657328292e61726752656773283129 6536:O1|@12993 6537:S41|58383649436f64654964656e746966795265666572656e63657328292e617267537461636b73283129 6538:O6|0,0,0,0,0,0 6539:S66|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229636f6e666c69637473466f72496e737472283529 6540:S19|496e745365742e6164644974656d2832292829 6541:S20|496e745365742e6d696e75734c69737473283229 6542:S51|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229 6543:S64|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229676574536f7572636573283129 6544:S20|496e745365742e6d657267654c69737473283329 6545:O1|@13027 6546:S66|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129283129 6547:S63|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129 6548:O4|@15140,@832,@6550,@6549 6549:O5|@5497,129,0,129,0 6550:S10|6d61726b417350757368 6551:S37|58383649436f64655472616e73666f726d28292e7370696c6c526567697374657273283229 6552:S53|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129 6553:S49|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329 6554:S64|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74283129 6555:O4|@15140,@832,@6557,@6556 6556:O5|@5525,644,0,644,0 6557:S24|707573685265676973746572733a20636163686520726567 6558:O4|@15140,@832,@6557,@6559 6559:O5|@5525,643,0,643,0 6560:S10|41726269747261727922 6561:S70|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74496e73747273283529 6562:O1|@13048 6563:O4|@15140,@832,@6565,@6564 6564:O5|@5525,479,0,479,0 6565:S20|4d69736d61746368656420636320737461746573 6566:O4|@15140,@832,@6565,@6567 6567:O5|@5525,470,0,470,0 6568:O4|@15140,@832,@6565,@6569 6569:O5|@5525,469,0,469,0 6570:O4|@15140,@832,@6572,@6571 6571:O5|@5525,487,0,487,0 6572:S21|4c6f6f706564207374617465206e65656473206363 6573:S65|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f70283129 6574:O4|@15140,@832,@6576,@6575 6575:O5|@5525,447,0,447,0 6576:S17|4d69736d61746368656420737461746573 6577:S81|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229 6578:S96|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229616464537563636573736f72283129 6579:S26|496e745365742e706172746974696f6e28312970617274283229 6580:S61|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e283129 6581:O4|@15140,@832,@6583,@6582 6582:O5|@5525,336,0,336,0 6583:S14|4343436865636b206661696c6564 6584:O4|@15140,@832,@6583,@6585 6585:O5|@5525,335,0,335,0 6586:S72|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e2831297363616e436f6465283329 6587:O4|@15140,@832,@6589,@6588 6588:O5|@5306,3095,0,3095,0 6589:S20|73706c6974436f6465202d206e6f20626567696e 6590:S53|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f58383628332973706c6974436f6465283329 6591:O2|@13065,@15255 6592:O5|0,0,0,@6594,@6593 6593:O2|@6597,0 6594:O2|@6595,0 6595:O2|0,@6596 6596:O5|@5525,44,44,0,0 6597:O2|3,@6598 6598:S8|43434e6565646564 6599:O5|0,0,0,@6594,@6600 6600:O2|@6601,0 6601:O2|3,@6602 6602:S8|4343556e75736564 6603:S15|7072696e742d696e43435374617465 6604:O1|@13066 6605:O5|0,0,0,@6607,@6606 6606:O2|@6611,0 6607:O2|@6608,0 6608:O2|0,@6609 6609:O5|@6610,72,72,0,0 6610:S48|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c58383649436f64652e4d4c 6611:O2|3,@6612 6612:S5|4363526566 6613:S11|7072696e742d6363526566 6614:O2|@1778,@6615 6615:O2|@1792,@6616 6616:O2|@1791,@6617 6617:O2|@6619,@6618 6618:O2|@6621,@6620 6619:O2|2,3 6620:O2|@5462,@6622 6621:O2|2,2 6622:O2|@1165,0 6623:O2|@6625,@6624 6624:O2|@6627,@6626 6625:O2|1,@6180 6626:O2|@6630,@6629 6627:O2|1,@6628 6628:O2|5,1 6629:O2|@6633,@6632 6630:O2|1,@6631 6631:O2|4,1 6632:O2|@6636,@6635 6633:O2|1,@6634 6634:O2|3,1 6635:O2|@6638,@6637 6636:O2|1,@5462 6637:O2|@6640,@6639 6638:O2|1,@3271 6639:O2|@6520,@6641 6640:O2|1,@1174 6641:O2|@6253,@6642 6642:O2|@1164,@6643 6643:O2|@6250,@6644 6644:O2|@6646,@6645 6645:O2|@6249,0 6646:O2|1,@6647 6647:O2|3,0 6648:O3|@13067,@15259,@15257 6649:O5|0,0,0,@6651,@6650 6650:O2|@6654,0 6651:O2|@6652,0 6652:O2|0,@6653 6653:O5|@5767,935,935,0,0 6654:O2|3,@6655 6655:S15|41646472657373436f6e7374417267 6656:O5|0,0,0,@6658,@6657 6657:O2|@6661,0 6658:O2|@6659,0 6659:O2|0,@6660 6660:O5|@5767,933,933,0,0 6661:O2|3,@6662 6662:S9|4d656d6f7279417267 6663:O1|@13069 6664:O5|0,0,0,@6666,@6665 6665:O2|@6669,0 6666:O2|@6667,0 6667:O2|0,@6668 6668:O5|@5767,934,934,0,0 6669:O2|3,@6670 6670:S18|4e6f6e41646472657373436f6e7374417267 6671:O5|0,0,0,@6673,@6672 6672:O2|@6676,0 6673:O2|@6674,0 6674:O2|0,@6675 6675:O5|@5767,932,932,0,0 6676:O2|3,@6677 6677:S11|5265676973746572417267 6678:S20|7072696e742d7265674f724d656d6f7279417267 6679:S21|7072696e747265674f724d656d6f72794172672829 6680:O2|@13070,@15257 6681:O5|0,0,0,@6683,@6682 6682:O2|@6686,0 6683:O2|@6684,0 6684:O2|0,@6685 6685:O5|@5767,683,683,0,0 6686:O2|3,@6687 6687:S6|496e64657831 6688:O5|0,0,0,@6683,@6689 6689:O2|@6690,0 6690:O2|3,@6691 6691:S6|496e64657832 6692:O5|0,0,0,@6683,@6693 6693:O2|@6694,0 6694:O2|3,@6695 6695:S6|496e64657834 6696:O5|0,0,0,@6683,@6697 6697:O2|@6698,0 6698:O2|3,@6699 6699:S6|496e64657838 6700:O5|0,0,0,@6683,@6701 6701:O2|@6702,0 6702:O2|3,@6703 6703:S7|4e6f496e646578 6704:S15|7072696e742d696e64657854797065 6705:O1|@13071 6706:O1|@13072 6707:O5|0,0,0,@6709,@6708 6708:O2|@6712,0 6709:O2|@6710,0 6710:O2|0,@6711 6711:O5|@5767,204,204,0,0 6712:O2|3,@6713 6713:S10|47656e6572616c526567 6714:S12|7072696e742d67656e526567 6715:O1|@13073 6716:O30|@6249,@6250,@1164,@6646,@6343,@6718,@6253,@6520,@6640,@6638,@6636,@6633,@6630,@6627,@6625,@6719,@1172,@1174,@4620,@6720,@6184,@6182,@6717,@1165,@5462,@6621,@6619,@1791,@1792,@1778 6717:O2|0,6 6718:O2|1,@5751 6719:O2|1,@6231 6720:O2|0,3 6721:O2|@6249,@6722 6722:O2|@6646,@6723 6723:O2|@6640,@6724 6724:O2|@6638,@6725 6725:O2|@6636,0 6726:B8|ffffffffffffff7f 6727:B8|0000000000000080 6728:O1|@13074 6729:O5|0,0,0,@6731,@6730 6730:O2|@6734,0 6731:O2|@6732,0 6732:O2|0,@6733 6733:O5|@6610,34,34,0,0 6734:O2|3,@6735 6735:S4|50526567 6736:S10|7072696e742d70726567 6737:O1|@13075 6738:O5|0,0,0,@6740,@6739 6739:O2|@6743,0 6740:O2|@6741,0 6741:O2|0,@6742 6742:O5|@6610,37,37,0,0 6743:O2|3,@6744 6744:S8|537461636b4c6f63 6745:S15|7072696e742d737461636b4c6f636e 6746:O4|@15140,@832,@6748,@6747 6747:O5|@6749,861,0,861,0 6748:S13|4e6f74204249434c616d626461 6749:S63|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f5354415449435f4c494e4b5f414e445f43415345532e736d6c 6750:O1|@13077 6751:O4|@15140,@832,@6753,@6752 6752:O5|@6749,847,0,847,0 6753:S31|6f75746572206c6576656c207265616368656420696e20636f7079436f6465 6754:S67|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837292d45 6755:O1|@13078 6756:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329746f704c6576656c283129 6757:S48|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e636f646547656e6572617465283329 6758:S7|282066726f6d20 6759:S11|2065786861757374697665 6760:O2|3,@6761 6761:S5|454c53453a 6762:O2|3,@6763 6763:S6|434153452028 6764:O2|3,@5160 6765:O2|3,@6766 6766:S3|494628 6767:O2|3,@6768 6768:S2|2428 6769:O2|3,@225 6770:O2|3,@226 6771:O2|@6773,@6772 6772:O2|@196,0 6773:S10|52454355525349564528 6774:S5|434c4f5328 6775:S6|504152414d28 6776:S6|4c4f43414c28 6777:S9|494e44495245435428 6778:S3|434c3d 6779:S8|204c4f43414c533d 6780:O2|3,@6781 6781:S5|415247533d 6782:O2|3,@6783 6783:S4|5245533d 6784:S6|20434c4f533d 6785:O2|@6786,0 6786:O2|3,@6787 6787:S9|297b4c414d4244417d 6788:O2|3,@6789 6789:S7|4c414d42444128 6790:S5|424c4f434b 6791:S9|524543434f4e535452 6792:O1|@13079 6793:S33|4261636b656e64496e7465726d656469617465436f64652e707265747479283129 6794:S34|4261636b656e64496e7465726d656469617465436f64652e704c6973742833292829 6795:S11|434f4e5441494e45522023 6796:S6|4d555455414c 6797:O2|@216,0 6798:S6|4445434c2023 6799:O2|@1021,@6800 6800:O2|@6801,0 6801:O2|3,@6802 6802:S5|20414e4420 6803:S40|4261636b656e64496e7465726d656469617465436f64652e70726574747942696e64696e67283129 6804:S50|4261636b656e64496e7465726d656469617465436f64652e7072657474792831297072657474794172675479706573283129 6805:O2|3,@6806 6806:S10|3d3e2064656661756c74 6807:O1|@13156 6808:S54|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329 6809:O2|@13108,@6810 6810:O2|@13149,@6809 6811:O4|@15140,@832,@6813,@6812 6812:O5|@6749,421,0,421,0 6813:S46|64656353657175656e63655769746846696e616c4578703a206c617374206973206e6f742061204e756c6c446563 6814:O4|@15140,@832,@6816,@6815 6815:O5|@6749,419,0,419,0 6816:S30|64656353657175656e63655769746846696e616c4578703a20656d707479 6817:S74|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129 6818:S85|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392970726576283329 6819:S104|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929707265762833296d616b65436c6f73757265456e747279283229 6820:S88|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392972656343616c6c283129 6821:O1|@13115 6822:O5|0,0,0,@6824,@6823 6823:O2|@6827,0 6824:O2|@6825,0 6825:O2|0,@6826 6826:O5|@6749,745,745,0,0 6827:O2|3,@6828 6828:S7|54726943616c6c 6829:O5|0,0,0,@6824,@6830 6830:O2|@6831,0 6831:O2|3,@6832 6832:S10|547269436c6f73757265 6833:O5|0,0,0,@6824,@6834 6834:O2|@6835,0 6835:O2|3,@6836 6836:S8|547269556e726566 6837:S84|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e736572742831296d617041726773283229 6838:S83|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f707950726f63436c6f73757265283329 6839:S78|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929 6840:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e73283129 6841:O4|@15140,@832,@6843,@6842 6842:O5|@6749,381,0,381,0 6843:S8|61734d757475616c 6844:S111|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e7328312970726f63657373436c6f7375726573283329 6845:O2|@13140,@15213 6846:O5|@3338,51,0,51,0 6847:S17|4c697374506169722e7a69704571283229 6848:O1|@13141 6849:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129283129 6850:S87|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129 6851:O4|@15140,@832,@6853,@6852 6852:O5|@6749,659,0,659,0 6853:S5|4361736573 6854:S81|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129 6855:S94|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129657874656e6443617365283229 6856:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e766572744361736528312966696c746572283129 6857:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831297265636f6e76657274283129 6858:O1|@13150 6859:O5|0,0,0,@6861,@6860 6860:O2|@6864,0 6861:O2|@6862,0 6862:O2|0,@6863 6863:O5|@6749,495,495,0,0 6864:O2|3,@6865 6865:S9|446966666572656e74 6866:O1|@13151 6867:O5|0,0,0,@6869,@6868 6868:O2|@6872,0 6869:O2|@6870,0 6870:O2|0,@6871 6871:O5|@2265,219,219,0,0 6872:O2|3,@6873 6873:S15|4249434c6f6164417267756d656e74 6874:O5|0,0,0,@6876,@6875 6875:O2|@6879,0 6876:O2|@6877,0 6877:O2|0,@6878 6878:O5|@2265,220,220,0,0 6879:O2|3,@6880 6880:S14|4249434c6f6164436c6f73757265 6881:O5|0,0,0,@6883,@6882 6882:O2|@6886,0 6883:O2|@6884,0 6884:O2|0,@6885 6885:O5|@2265,218,218,0,0 6886:O2|3,@6887 6887:S12|4249434c6f61644c6f63616c 6888:O5|0,0,0,@6890,@6889 6889:O2|@6893,0 6890:O2|@6891,0 6891:O2|0,@6892 6892:O5|@2265,221,221,0,0 6893:O2|3,@6894 6894:S16|4249434c6f6164526563757273697665 6895:S17|7072696e742d6269634c6f6164466f726d 6896:O5|0,0,0,@6861,@6897 6897:O2|@6898,0 6898:O2|3,@6899 6899:S7|53696d696c6172 6900:S16|7072696e742d73696d696c6172697479 6901:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e64283329 6902:S86|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e6428332973696d696c6172283229 6903:O1|@13107 6904:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729 6905:O1|@13154 6906:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f646528372967657450726f7073283129 6907:O1|@13157 6908:O4|@15140,@832,@6910,@6909 6909:O5|@5270,207,0,207,0 6910:S30|4c69667465642066756e6374696f6e206f7574206f6620636f6e74657874 6911:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f6465283129 6912:S11|3c746f70206c6576656c3e 6913:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d62646173283129 6914:S36|434f4445545245455f46554e4354494f4e5328292e616464546f436c6f73757265283229 6915:S61|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831296765744974656d283229 6916:O4|@15140,@832,@6918,@6917 6917:O5|@5270,400,0,400,0 6918:S8|6d6170546f417267 6919:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283129 6920:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283229 6921:S84|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329726563757273697665526566283129 6922:S69|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329 6923:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283129 6924:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283229 6925:O1|@13187 6926:S81|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f7375726528392970726f636573736564426f64792d283129 6927:S64|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929 6928:S65|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f646528312970726f6365737344656373283129 6929:S37|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f6479283529 6930:S35|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429 6931:S65|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e7328342970726f6365737342696e64696e6773283129 6932:O2|@6934,@6933 6933:O1|@13198 6934:O1|@13197 6935:S28|434f4445545245455f46554e4354494f4e5328292e61726373283129 6936:S35|434f4445545245455f46554e4354494f4e5328292e6e6f646541646472657373283129 6937:O4|@15140,@832,@6939,@6938 6938:O5|@1700,449,0,449,0 6939:S24|706172746974696f6e4d757461626c6542696e64696e6773 6940:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d6264612834296c6f6f6b75704c6f63616c283129 6941:S60|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429636f6e746578742d283129 6942:S49|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429 6943:O1|@13205 6944:O2|@13206,@15167 6945:S51|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e6d657267655475706c6550726f7073283229 6946:S48|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e73706c697450726f70732833292829 6947:O1|@13212 6948:S53|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429 6949:S68|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296578747261637450726f7073283129 6950:O4|@15140,@832,@6952,@6951 6951:O5|@1700,310,0,310,0 6952:S27|6d6b4c6f616478783a20617267756d656e74206e65676174697665 6953:S31|434f44455452454528292e67656e436f646528332961646444656373283129 6954:O1|@13216 6955:S36|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129 6956:O1|@13219 6957:O2|3,@6958 6958:S20|4f7574707574206f662073696d706c6966696572 6959:O2|@1098,0 6960:O1|@13220 6961:O4|@15140,@832,@6963,@6962 6962:O5|@6964,1476,0,1476,0 6963:S30|746f70206c6576656c207265616368656420696e206f7074696d69736572 6964:S51|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f4f5054494d495345522e736d6c 6965:S42|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632836292d45 6966:O1|@13221 6967:S44|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632d283429283129 6968:O2|3,@6969 6969:S17|4f7574707574206f6620636c65616e6572 6970:S66|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f63657373547265652834296d616b6541646472283129 6971:O1|@13224 6972:S35|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283129283129 6973:O1|@13227 6974:S47|434f4445545245455f4f5054494d4953455228292e6f70744c616d6264612835296f7074436f6e746578742d283129 6975:O2|0,@1098 6976:O4|@15142,@1027,0,@6977 6977:O5|@6964,522,0,522,0 6978:S33|434f4445545245455f4f5054494d4953455228292e6f70744c616d626461283529 6979:O1|@13234 6980:O2|8,@1178 6981:S53|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e672834292d45 6982:S45|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e283729 6983:O4|@15140,@832,@4666,@6984 6984:O5|@6964,248,0,248,0 6985:S39|434f4445545245455f4f5054494d4953455228292e6f6e6c7946756e6374696f6e283129283129 6986:S62|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e747279283129 6987:S71|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e7472792831296d6170417267283229 6988:S51|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429 6989:S55|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e28372967657441726773283829 6990:O4|4,@119,0,@6991 6991:O5|@5277,104,0,104,0 6992:S40|434f4445545245455f4f5054494d4953455228292e626f647952657475726e735475706c65283129 6993:S30|434f4445545245455f4f5054494d4953455228292e6d6170417267283129 6994:S33|434f4445545245455f4f5054494d4953455228292e66696e645475706c65283229 6995:S53|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429646f4d6170283129 6996:S45|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429 6997:O4|@15213,@3337,0,@6998 6998:O5|@3338,89,0,89,0 6999:S21|4c697374506169722e666f6c647245712834292829 7000:S2|2d45 7001:S58|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834296d61705061747465726e283429 7002:S47|434f4445545245455f4f5054494d4953455228292e6275696c6446756c6c5475706c65283229657874417267283229 7003:S2|2d50 7004:S73|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e74283529 7005:S40|434f4445545245455f46554e4354494f4e5328292e6d6b536574436f6e7461696e65722833292829 7006:S86|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c79283329 7007:S97|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c792833296d616b6541726773283229 7008:S85|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b283229 7009:O2|8,@1165 7010:O2|@7011,0 7011:O2|@7009,1 7012:O4|@15140,@832,@7014,@7013 7013:O5|@6964,731,0,731,0 7014:S17|6d6170417267733a206d69736d61746368 7015:O1|@13273 7016:S95|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d617041726773283229 7017:S104|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d6170417267732832296d6170417267283229 7018:S45|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429646f4d6170283129 7019:S37|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429 7020:S48|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c742834296d61704172672833292829 7021:O4|@15140,@832,@7023,@7022 7022:O5|@6964,936,0,936,0 7023:S15|6465637572727946756e6374696f6e 7024:S47|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329646f4d6170283129 7025:S39|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329 7026:S50|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e2833296d61704172672833292829 7027:S36|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e283229 7028:S33|434f4445545245455f46554e4354494f4e5328292e636f646550726f7073283129 7029:S51|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e2832296d657267655061747465726e283229 7030:O1|@13307 7031:O1|@13311 7032:S52|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f70283429 7033:S62|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f702834296d617041726773283529 7034:S40|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329 7035:S51|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329636865636b557365283429 7036:S32|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283329 7037:S42|434f4445545245455f4f5054494d4953455228292e6f70744669656c64732833296669656c642d283129 7038:S48|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329736574436f6e7461696e6572283129 7039:S38|434f4445545245455f4f5054494d4953455228292e6669656c6473546f46696c746572283129 7040:S33|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329 7041:S53|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329636f6e7461696e65722d6d6b4669656c64283329 7042:S49|434f4445545245455f4f5054494d4953455228292e6f70744669656c647328332970757368436f6e7461696e6572283229 7043:O4|@15140,@832,@7045,@7044 7044:O5|@6964,963,0,963,0 7045:S22|6d617062696e64696e673a206e6f74206c616d626461 7046:S45|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e67283129 7047:S57|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e672831296d6170526563446563283229 7048:O2|3,@7049 7049:S19|4f7574707574206f66206f7074696d69736572 7050:S41|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d69736572283429 7051:O4|@15140,@832,@7053,@7052 7052:O5|@7054,1602,0,1602,0 7053:S31|746f70206c6576656c207265616368656420696e2073696d706c6966696572 7054:S52|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f53494d504c49464945522e736d6c 7055:S48|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296c6f6f6b757041646472283129 7056:S47|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329656e74657241646472283129 7057:S44|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296d6b41646472283129 7058:O11|@13348,@7063,@7071,@7077,@7079,@7081,@7096,@7098,@7114,@7154,@7059 7059:O12|@13445,@7058,@7163,@7063,@7071,@7077,@7079,@7081,@7096,@7098,@7114,@7154 7060:S39|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283129283129 7061:S36|434f4445545245455f53494d504c494649455228292e73696d705370656369616c283429 7062:S44|434f4445545245455f53494d504c494649455228292e73696d705370656369616c28342973706c6974283329 7063:O2|@13352,@7058 7064:O2|@998,@1145 7065:O4|@15140,@832,@7067,@7066 7066:O5|@7054,1441,0,1441,0 7067:S24|6765744669656c64202d20696e76616c696420696e646578 7068:S45|434f4445545245455f53494d504c494649455228292e73696d705475706c652835296765744669656c64283129 7069:S34|434f4445545245455f53494d504c494649455228292e73696d705475706c65283529 7070:S50|434f4445545245455f53494d504c494649455228292e73696d705475706c6528352970726f636573734669656c6473283329 7071:O2|@13357,@7058 7072:S39|434f4445545245455f53494d504c494649455228292e73696d7049665468656e456c7365283629 7073:S43|434f4445545245455f53494d504c494649455228292e7370656369616c546f47656e6572616c2833292829 7074:O4|@15142,@1027,0,@7075 7075:O5|@733,51,0,51,0 7076:S30|434f4445545245455f53494d504c494649455228292e6d6b456e76283229 7077:O3|@13376,@7059,@7058 7078:S43|434f4445545245455f53494d504c494649455228292e73696d704172626974726172794172697468283829 7079:O3|@13380,@7059,@7058 7080:S45|434f4445545245455f53494d504c494649455228292e73696d70417262697472617279436f6d70617265283829 7081:O2|@13384,@7058 7082:O4|7,@144,0,@7083 7083:O5|@145,252,0,252,0 7084:O4|@15140,@832,@7086,@7085 7085:O5|@7054,1022,0,1022,0 7086:S19|576f726441726974683a20417269746852656d 7087:O4|@15140,@832,@7089,@7088 7088:O5|@7054,1021,0,1021,0 7089:S20|576f726441726974683a20417269746851756f74 7090:O2|16,@7091 7091:O3|6,@1755,0 7092:O2|16,@7093 7093:O3|6,@7094,0 7094:O4|7,@151,0,0 7095:S35|434f4445545245455f53494d504c494649455228292e73696d7042696e617279283629 7096:O2|@13385,@7058 7097:S34|434f4445545245455f53494d504c494649455228292e73696d70556e617279283529 7098:O3|@13386,@7058,@7059 7099:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283129 7100:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283329 7101:O1|@13389 7102:S24|42617365436f6465547265652e666f6c6474726565283329 7103:S32|42617365436f6465547265652e666f6c64747265652833296674726565283229 7104:O4|@15140,@832,@7106,@7105 7105:O5|@7054,783,0,783,0 7106:S35|73696d7046756e6374696f6e43616c6c3a20617267756d656e74206d69736d61746368 7107:O4|@15140,@832,@7109,@7108 7108:O5|@7054,818,0,818,0 7109:S27|6c6f63616c4f6c64416464723a204c6f6164526563757273697665 7110:S56|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c2836296c6f63616c4f6c6441646472283129 7111:S59|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629736574546162466f72496e6c696e65283129 7112:S41|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629 7113:S55|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362970726f6365737341726773283329 7114:O2|@13398,@7059 7115:O2|@5252,@1145 7116:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283129 7117:O1|@13401 7118:S82|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329636f6e76657274456e76283129283129 7119:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229 7120:S66|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329 7121:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529736574546162283129 7122:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296d6b41646472283129 7123:O1|@13407 7124:O1|@13408 7125:O1|@13435 7126:S35|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529 7127:O1|@13410 7128:O4|@15140,@832,@7130,@7129 7129:O5|@7131,337,0,337,0 7130:S9|73706c697441726773 7131:S58|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c434f4445545245455f52454d4f56455f524544554e44414e542e736d6c 7132:S79|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c7465724c6f6f7041726773283129 7133:S74|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322973706c697441726773283329 7134:O4|@15140,@832,@7136,@7135 7135:O5|@7131,126,0,126,0 7136:S25|636c65616e457874726163743a20656d707479207573616765 7137:S65|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283129283129 7138:S62|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283229 7139:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734669656c64283229 7140:S76|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f6365737344656373283129 7141:S63|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329616464526566283129 7142:O1|@13409 7143:O1|@1177 7144:O4|@15140,@832,@7146,@7145 7145:O5|@7131,101,0,101,0 7146:S12|6e6f74205573654669656c64 7147:O4|@15140,@832,@7146,@7148 7148:O5|@7131,98,0,98,0 7149:S54|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329 7150:S93|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734465637328312970726f636573734d757475616c73283329 7151:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c746572556e75736564283229 7152:S40|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629 7153:S52|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229 7154:O3|@13436,@7058,@7114 7155:O4|@15140,@832,@7157,@7156 7156:O5|@7054,590,0,590,0 7157:S32|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e6572 7158:O4|@15140,@832,@7160,@7159 7159:O5|@7054,599,0,599,0 7160:S37|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e65722073697a65 7161:S35|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329 7162:S46|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329636f707944656373283229 7163:O2|@13495,@7058 7164:O1|@1262 7165:O1|@1263 7166:S36|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529 7167:S50|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296368616e67654c6f6f7073283129 7168:S58|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296f7065726174696f6e2d6d616b654d6f766573283129 7169:S45|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429 7170:S62|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e65722834296669656c6473546f46696c746572283129 7171:S59|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429636865636b4669656c6473283229 7172:S54|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e657228342973656c656374283229 7173:S49|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529666f6c644c6f6f702833292829 7174:S59|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529636865636b4c6f6f70417267732832296d617033283329 7175:S36|434f4445545245455f53494d504c494649455228292e73696d7041646472657373283429 7176:S55|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f6365737354726565283429 7177:S70|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229 7178:S83|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229676574526573756c7473283229 7179:O4|@15140,@832,@7181,@7180 7180:O5|@6964,1428,0,1428,0 7181:S14|70726f636573734c616d62646173 7182:S65|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129 7183:O4|@15140,@832,@7185,@7184 7184:O5|@6964,1441,0,1441,0 7185:S13|636865636b42696e64696e6773 7186:S81|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129636865636b42696e64696e6773283229 7187:S53|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e283429 7188:O1|@13508 7189:S35|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329 7190:O1|@13511 7191:S14|506f6c7953697a65446f75626c65 7192:S13|506f6c7953697a65466c6f6174 7193:S45|434f4d50494c45525f424f445928292e62617365436f6d70696c657228342965786563757465436f6465283129 7194:O4|0,@6538,0,@7214 7195:S29|535452554354555245535f28292e706173733453747275637473283329 7196:O4|@15140,@832,@4551,@7197 7197:O5|@4294,3171,0,3171,0 7198:S58|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296d617054797065496473283129 7199:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329 7200:S75|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e642833296e65774d6170283129 7201:S66|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e64283329 7202:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374537472756374283429 7203:S69|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129636f70794964283129 7204:O1|@13536 7205:S84|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129283129 7206:O1|@13537 7207:S81|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129 7208:O1|@13538 7209:S63|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129283129 7210:S56|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296d616b6544656373283329 7211:S68|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296578747261637453747275637475726542696e64283329 7212:S70|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e61747572652831296d6170494473283129 7213:S61|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e6174757265283129 7214:O1|@13544 7215:O4|11,@78,0,@7216 7216:O5|@4294,3264,0,3264,0 7217:S39|535452554354555245535f28292e706173733453747275637473283329726573756c742d283129 7218:O1|@7219 7219:O1|@13545 7220:S34|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429283129 7221:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283329 7222:S31|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429 7223:S40|535452554354555245535f28292e67656e636f6465537472756374732833296d6b41646472283129 7224:O3|@7225,@1613,0 7225:O1|@13548 7226:S37|44454255474745525f28292e696e697469616c44656275676765725374617475732d283129 7227:S31|535452554354555245535f28292e67656e636f646553747275637473283329 7228:O1|@13549 7229:S53|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e53747275637456616c7565283129 7230:O4|101,@721,0,@7231 7231:O5|@1548,509,0,509,0 7232:S45|535452554354555245535f28292e67656e636f6465537472756374732833296c6f6164546f7064656373283129 7233:O4|@15140,@832,@7235,@7234 7234:O5|@7236,80,0,80,0 7235:S9|4e6f20616363657373 7236:S34|6d6c736f757263655c4d4c436f6d70696c65725c545950454944434f44452e736d6c 7237:S28|545950454944434f444528292e636f64654163636573732832292829 7238:O1|@13560 7239:O4|@15140,@832,@7241,@7240 7240:O5|@4294,2898,0,2898,0 7241:S10|747970655661724d6170 7242:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229747970655661724d61702d283129 7243:S49|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229 7244:O17|@15271,@15272,@15273,@15274,@7245,@15267,@123,@786,@793,@15275,@15266,@15270,@780,0,@15269,@15268,@798 7245:O1|@13563 7246:S18|4c45585f28292e6e756c6c4c65782d283129 7247:S60|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f6164537472646563732832296c6f616456616c73283229 7248:O4|@15140,@832,@7250,@7249 7249:O5|@1151,93,0,93,0 7250:S34|6d6b4c6f61643a206c6576656c206d757374206265206e6f6e2d6e65676174697665 7251:O4|@15140,@832,@1473,@7252 7252:O5|@1151,90,0,90,0 7253:S34|434f44455452454528292e6e65774c6576656c283129746869734c6576656c283129 7254:O1|@13568 7255:S40|56414c55455f4f505328292e6170706c7946756e6374696f6e283729676574436f6e737472283129 7256:O7|@13570,@7323,@7493,@7619,@7631,@7257,@4659 7257:O4|@13624,@7323,@7493,@7619 7258:S32|545950454944434f444528292e6170706c79546f496e7374616e636527283429 7259:O1|@13574 7260:S62|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296571436f64652d283129 7261:O1|@13576 7262:S72|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296765745479706556616c7565466f724944283129 7263:O1|@13578 7264:S65|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329626f786564436f64652d283129 7265:O1|@13580 7266:S64|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d6574657228332973697a65436f64652d283129 7267:S48|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229283129 7268:O10|@13585,@15144,@1191,@1201,@1220,@1239,@15154,@15152,@15150,@15148 7269:O4|@15140,@832,@7271,@7270 7270:O5|@1050,2764,0,2764,0 7271:S40|74797065436f6e73747246726f6d4f7665726c6f61643a204e6f206d61746368696e672074797065 7272:O4|@15140,@832,@7271,@7273 7273:O5|@1050,2772,0,2772,0 7274:O4|@15140,@832,@7271,@7275 7275:O5|@1050,2762,0,2762,0 7276:S37|545950455f5452454528292e74797065436f6e73747246726f6d4f7665726c6f6164283229 7277:S52|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329 7278:O1|@13588 7279:O4|@15140,@832,@7281,@7280 7280:O5|@7236,429,0,429,0 7281:S38|73697a653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 7282:O4|@15140,@832,@7284,@7283 7283:O5|@7236,455,0,455,0 7284:S25|73697a65466f72547970653a20556e6b6e6f776e2074797065 7285:S27|545950454944434f444528292e73697a65466f7254797065283429 7286:S49|545950454944434f444528292e73697a65466f725479706528342973697a65466f72436f6e737472756374696f6e283229 7287:O3|6,2,0 7288:O1|@13592 7289:O4|@15140,@832,@7291,@7290 7290:O5|@7236,377,0,377,0 7291:S43|626f7865646e6573733a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 7292:O4|@15140,@832,@7294,@7293 7293:O5|@7236,393,0,393,0 7294:S30|626f7865646e657373466f72547970653a20556e6b6e6f776e2074797065 7295:S32|545950454944434f444528292e626f7865646e657373466f7254797065283429 7296:S59|545950454944434f444528292e626f7865646e657373466f7254797065283429626f7865646e657373466f72436f6e737472756374696f6e283229 7297:O1|@13596 7298:O4|@15140,@832,@7300,@7299 7299:O5|@7236,683,0,683,0 7300:S40|6d616b6545713a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 7301:O4|@15140,@832,@7303,@7302 7302:O5|@7236,719,0,719,0 7303:S21|457175616c69747920666f722066756e6374696f6e 7304:S10|65717b2e2e2e7d283229 7305:S22|545950454944434f444528292e6d616b654571283429 7306:O2|12,@7307 7307:O8|@1169,@1136,0,0,@7308,0,0,1 7308:O2|@1823,@1853 7309:S48|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229 7310:O4|@15140,@832,@7312,@7311 7311:O5|@7236,631,0,631,0 7312:S6|676574417267 7313:S57|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229676574417267283129 7314:S39|545950454944434f444528292e6d616b654571283429636f6d62696e65456e7472696573283229 7315:S27|545950454944434f444528292e6765744d61784465707468283329 7316:S47|545950454944434f444528292e547970655661724d61702e636865636b54797065436f6e7374727563746f72283229 7317:S68|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229283129 7318:S45|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229 7319:S70|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329283129 7320:S67|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329 7321:S65|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229 7322:S56|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322973616d6554797065283229 7323:O3|6,@7325,@7324 7324:O2|@7330,0 7325:O4|@7327,@7326,2,1 7326:O1|@13614 7327:O1|@13613 7328:S10|6572726f72436f646532 7329:S14|7072696e742d66756e6374696f6e 7330:O4|@15146,@224,@7331,0 7331:O3|3,4,@7332 7332:O6|@10797,@1146,@7334,@7349,@7350,@7333 7333:O2|@12156,@7369 7334:O2|@10799,@7335 7335:O2|@7337,@7336 7336:O2|@7342,@7341 7337:O2|@7339,@7338 7338:O3|1,@7340,@1166 7339:O2|1,@6619 7340:O8|@1263,@7328,0,0,@7308,0,0,1 7341:O2|@7347,@1183 7342:O2|@7344,@7343 7343:O3|1,@7345,@1166 7344:O2|1,@1791 7345:O8|@7346,@7329,0,0,@1853,0,0,1 7346:O3|6,@1369,0 7347:O2|@7348,@1145 7348:O3|0,2,0 7349:O16|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 7350:O17|@7352,@7356,@7355,@7354,@7327,@7326,@7325,@7358,@7357,@7360,@7359,@7365,@7364,@7366,@7353,@7367,@7351 7351:O4|@1228,@7367,1,1 7352:O7|@7354,@7325,@7357,@7359,@7364,@7353,@7351 7353:O4|@1247,@7366,3,1 7354:O4|@7356,@7355,3,1 7355:O1|@13616 7356:O1|@13615 7357:O4|@1135,@7358,1,1 7358:O1|@13617 7359:O4|@7361,@7360,3,1 7360:O1|@13620 7361:O1|@13618 7362:S14|696e74496e66457175616c697479 7363:S26|617262697472617279507265636973696f6e457175616c697479 7364:O4|@1514,@7365,1,1 7365:O1|@13621 7366:O1|@13622 7367:O1|@13623 7368:S10|7072696e742d63686172 7369:O2|@7371,@7370 7370:O2|0,@7479 7371:O2|@7372,0 7372:O4|@15167,@224,@7373,0 7373:O2|0,@7374 7374:O2|0,@7375 7375:O2|@7377,@7376 7376:O2|@7393,@7392 7377:O2|@7379,@7378 7378:O2|@7386,0 7379:O4|@15167,@224,@7380,0 7380:O2|@7382,@7381 7381:O2|0,@6433 7382:O2|@7383,0 7383:O4|@15146,@224,@7384,0 7384:O3|1,@1167,@7385 7385:O6|@10795,@1146,@1166,@1145,@1186,@1143 7386:O4|@15146,@224,@7387,0 7387:O3|3,4,@7388 7388:O4|@12171,@7389,@7380,@7357 7389:O2|@7384,@7390 7390:O2|@1145,@7391 7391:O2|@1145,@5480 7392:O2|@7442,@7441 7393:O2|@7395,@7394 7394:O2|@7437,0 7395:O4|@15167,@224,@7396,0 7396:O2|@7397,@7381 7397:O2|@7398,0 7398:O4|@15146,@224,@7399,0 7399:O3|1,@7401,@7400 7400:O6|@10795,@1146,@7421,@1447,@7423,@7420 7401:O8|@7403,@7362,0,0,@7402,0,0,1 7402:O2|@1274,@7419 7403:O4|5,@7405,@1262,@7404 7404:O4|5,@7408,@7407,@1263 7405:O2|1,@7406 7406:O5|@1171,@1173,@1823,@1263,@1262 7407:O4|7,@7414,@7413,1 7408:O4|5,@7410,@7409,@1263 7409:O3|21,@7412,9 7410:O3|21,@7411,9 7411:O3|21,@1171,5 7412:O3|21,@1173,5 7413:O3|6,@7418,0 7414:O2|@7416,@7415 7415:O2|@7417,0 7416:O2|@1171,1 7417:O2|@1173,1 7418:O1|@13619 7419:O2|@1274,0 7420:O2|@12156,@7425 7421:O5|@12157,@1166,@1447,@7422,@1143 7422:O1|@7361 7423:O1|@7424 7424:O4|@7361,@15276,3,1 7425:O2|@7426,0 7426:O2|@7428,@7427 7427:O2|@7433,0 7428:O4|@15167,@224,@7429,0 7429:O2|@7430,@7381 7430:O2|@7431,0 7431:O4|@15146,@224,@7432,0 7432:O3|1,@7401,@7421 7433:O4|@15146,@224,@7434,0 7434:O3|3,4,@7435 7435:O4|@12171,@7436,@7429,@7424 7436:O2|@7432,@7390 7437:O4|@15146,@224,@7438,0 7438:O3|3,4,@7439 7439:O4|@12171,@7440,@7396,@7359 7440:O2|@7399,@7390 7441:O2|@7455,@7454 7442:O2|@7444,@7443 7443:O2|@7450,0 7444:O4|@15167,@224,@7445,0 7445:O2|@7446,@7381 7446:O2|@7447,0 7447:O4|@15146,@224,@7448,0 7448:O3|1,@1167,@7449 7449:O6|@10795,@1146,@1166,@1145,@1518,@1143 7450:O4|@15146,@224,@7451,0 7451:O3|3,4,@7452 7452:O4|@12171,@7453,@7445,@7364 7453:O2|@7448,@7390 7454:O2|@7467,0 7455:O2|@7457,@7456 7456:O2|@7463,0 7457:O4|@15167,@224,@7458,0 7458:O2|@7459,@7381 7459:O2|@7460,0 7460:O4|@15146,@224,@7461,0 7461:O3|1,@1258,@7462 7462:O6|@10795,@1146,@1166,@1145,@1252,@1143 7463:O4|@15146,@224,@7464,0 7464:O3|3,4,@7465 7465:O4|@12171,@7466,@7458,@7353 7466:O2|@7461,@7390 7467:O2|@7469,@7468 7468:O2|@7475,0 7469:O4|@15167,@224,@7470,0 7470:O2|@7471,@7381 7471:O2|@7472,0 7472:O4|@15146,@224,@7473,0 7473:O3|1,@1167,@7474 7474:O6|@10795,@1146,@1166,@1145,@1232,@1143 7475:O4|@15146,@224,@7476,0 7476:O3|3,4,@7477 7477:O4|@12171,@7478,@7470,@7351 7478:O2|@7473,@7390 7479:O2|0,@7480 7480:O2|0,@7481 7481:O2|0,@7482 7482:O2|0,@7483 7483:O2|0,@7484 7484:O2|0,@7485 7485:O2|@7377,@7486 7486:O2|0,@7487 7487:O2|@7393,@7488 7488:O2|0,@7489 7489:O2|@7442,@7490 7490:O2|0,@7491 7491:O2|@7455,@7492 7492:O2|0,@7454 7493:O2|@7495,@7494 7494:O2|@7516,@7515 7495:O2|@1123,@7496 7496:O3|6,@7357,@7497 7497:O2|@7379,@7498 7498:O2|@7499,0 7499:O4|@15146,@224,@7500,0 7500:O3|3,4,@7501 7501:O6|@10797,@1146,@7502,@7349,@7350,@7333 7502:O2|@10799,@7503 7503:O2|@7505,@7504 7504:O2|@7507,@1180 7505:O2|@7506,@7384 7506:O3|0,@1135,@7382 7507:O2|@1777,@7508 7508:O3|1,@7509,@1166 7509:O8|@7510,@3051,0,0,@1175,0,0,1 7510:O4|7,@7512,@7511,1 7511:O3|13,@5750,@7513 7512:O2|@7416,0 7513:O3|@7514,0,0 7514:O3|6,@15145,0 7515:O2|@7555,@7554 7516:O2|@7518,@7517 7517:O3|6,@7359,@7537 7518:O4|@1125,0,@1126,@7519 7519:O3|@7521,@7535,@7520 7520:O3|@7536,@1128,@1189 7521:O2|1,@7522 7522:O3|6,@7424,@7523 7523:O2|@7428,@7524 7524:O2|@7525,0 7525:O4|@15146,@224,@7526,0 7526:O3|3,4,@7527 7527:O5|@10792,@7528,@1447,@7423,@7420 7528:O2|@10799,@7529 7529:O2|@7531,@7530 7530:O2|@7533,@1279 7531:O2|@7532,@7432 7532:O3|0,@7361,@7430 7533:O2|@7534,@1145 7534:O3|0,@15276,0 7535:O4|1,@15277,0,0 7536:S10|496e74496e662e696e74 7537:O2|@7395,@7538 7538:O2|@7539,0 7539:O4|@15146,@224,@7540,0 7540:O3|3,4,@7541 7541:O6|@10797,@1146,@7542,@7349,@7350,@7333 7542:O2|@10799,@7543 7543:O2|@7545,@7544 7544:O2|@7547,@1279 7545:O2|@7546,@7399 7546:O3|0,@7361,@7397 7547:O2|@1851,@7548 7548:O3|1,@7549,@1166 7549:O8|@7550,@3051,0,0,@1175,0,0,1 7550:O4|7,@7512,@7551,1 7551:O3|13,@5750,@7552 7552:O3|@7553,0,0 7553:O3|6,@15276,0 7554:O2|@7577,@7576 7555:O2|@1506,@7556 7556:O3|6,@7364,@7557 7557:O2|@7444,@7558 7558:O2|@7559,0 7559:O4|@15146,@224,@7560,0 7560:O3|3,4,@7561 7561:O6|@10797,@1146,@7562,@7349,@7350,@7333 7562:O2|@10799,@7563 7563:O2|@7565,@7564 7564:O2|@7567,@1180 7565:O2|@7566,@7448 7566:O3|0,@1514,@7446 7567:O2|@7569,@7568 7568:O3|1,@7571,@1166 7569:O2|1,@7570 7570:O2|2,10 7571:O8|@7572,@2015,0,0,@1175,0,0,1 7572:O4|7,@7512,@7573,1 7573:O3|13,@5750,@7574 7574:O3|@7575,0,0 7575:O3|6,@15159,0 7576:O2|@7598,0 7577:O2|@1239,@7578 7578:O3|6,@7353,@7579 7579:O2|@7457,@7580 7580:O2|@7581,0 7581:O4|@15146,@224,@7582,0 7582:O3|3,4,@7583 7583:O6|@10797,@1146,@7584,@7349,@7350,@7333 7584:O2|@10799,@7585 7585:O2|@7587,@7586 7586:O2|@7589,@1279 7587:O2|@7588,@7461 7588:O3|0,@1247,@7459 7589:O2|@7591,@7590 7590:O3|1,@7593,@1166 7591:O2|1,@7592 7592:O2|2,12 7593:O8|@7594,@727,0,0,@1175,0,0,1 7594:O4|7,@7512,@7595,1 7595:O3|13,@5750,@7596 7596:O3|@7597,0,0 7597:O3|6,@15155,0 7598:O2|@1220,@7599 7599:O3|6,@7351,@7600 7600:O2|@7469,@7601 7601:O2|@7602,0 7602:O4|@15146,@224,@7603,0 7603:O3|3,4,@7604 7604:O6|@10797,@1146,@7605,@7349,@7350,@7333 7605:O2|@10799,@7606 7606:O2|@7608,@7607 7607:O2|@7610,@1180 7608:O2|@7609,@7473 7609:O3|0,@1228,@7471 7610:O2|@7612,@7611 7611:O3|1,@7614,@1166 7612:O2|1,@7613 7613:O2|2,14 7614:O8|@7615,@7368,0,0,@1175,0,0,1 7615:O4|7,@7512,@7616,1 7616:O3|13,@5750,@7617 7617:O3|@7618,0,0 7618:O3|6,@15153,0 7619:O3|6,@7354,@7620 7620:O2|@7621,0 7621:O4|@15146,@224,@7622,0 7622:O3|3,4,@7623 7623:O6|@10797,@1146,@7624,@7349,@7350,@7333 7624:O2|@10799,@7625 7625:O2|@7627,@7626 7626:O2|@7628,@1279 7627:O2|@1164,@7338 7628:O2|@6636,@7629 7629:O3|1,@7630,@1166 7630:O8|@4670,@4669,0,0,@1853,0,0,1 7631:O2|12,@7632 7632:O8|@1263,@7633,0,0,@7308,1,0,1 7633:S10|6e6f457175616c697479 7634:O2|@1854,@7635 7635:O2|@7636,0 7636:O3|6,@903,0 7637:O2|@1171,0 7638:O2|@1854,@7639 7639:O2|@7640,0 7640:O3|6,@1396,0 7641:O1|@13625 7642:S6|7072696e742d 7643:O4|@15140,@832,@7645,@7644 7644:O5|@7236,470,0,470,0 7645:S48|7072696e746572466f72547970653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 7646:O2|@1854,@7647 7647:O2|@7648,0 7648:O3|6,@7649,0 7649:S7|3c656d7074793e 7650:O3|20,@7646,1 7651:S11|7072696e742d656d707479 7652:S6|3c616e6f6e3e 7653:O3|20,@7638,1 7654:S14|7072696e742d6c6162656c6c6564 7655:O1|@13630 7656:S59|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283229283129 7657:S56|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283129 7658:O2|@1262,@7659 7659:O2|@1262,@7660 7660:O2|@1263,0 7661:O3|20,@7662,1 7662:O2|@1262,@7659 7663:O2|@1854,@7664 7664:O2|@7665,0 7665:O3|6,@280,0 7666:O3|20,@7663,1 7667:O2|@1854,@7668 7668:O2|@7669,0 7669:O3|6,@278,0 7670:O3|20,@7667,1 7671:O3|20,@7634,1 7672:S30|545950454944434f444528292e7072696e746572466f7254797065283329 7673:S42|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f6465283229 7674:O4|11,@1171,0,0 7675:O2|@7676,0 7676:O4|3,@7678,@1262,@7677 7677:O2|1,6 7678:O4|11,@1171,1,0 7679:O2|0,@196 7680:O4|@15142,@1027,0,@7681 7681:O5|@7236,565,0,565,0 7682:O3|20,@7683,1 7683:O2|@1262,@7659 7684:O2|@1854,@7685 7685:O2|@7686,0 7686:O3|6,@199,0 7687:O3|20,@7684,1 7688:O3|20,@7689,1 7689:O2|@1262,@7659 7690:O3|9,3,1 7691:O3|20,@7692,1 7692:O2|@1262,@7659 7693:S53|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f646528322961735265636f7264283229 7694:O1|@13649 7695:S70|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832296d616b655072696e7465724964283129636f6465466f724964283129 7696:O2|@578,@578 7697:O4|@13651,@7323,@7493,@7619 7698:O1|@13653 7699:S45|545950454944434f444528292e657175616c697479466f7254797065283329726573756c74436f64652d283129 7700:O2|@7674,@7701 7701:O2|@7678,0 7702:S8|657175616c697479 7703:S31|545950454944434f444528292e657175616c697479466f7254797065283329 7704:O4|@15140,@832,@7706,@7705 7705:O5|@7707,1060,0,1060,0 7706:S14|4f7665726c6f616420457175616c 7707:S32|6d6c736f757263655c4d4c436f6d70696c65725c56414c55455f4f50532e4d4c 7708:O4|@15140,@832,@7710,@7709 7709:O5|@7707,1073,0,1073,0 7710:S17|4f7665726c6f6164204e6f74457175616c 7711:O2|@13657,@15171 7712:S28|5052494e545f5441424c4528292e6765744f7665726c6f6164283329 7713:S41|5052494e545f5441424c4528292e6765744f7665726c6f61642833297365617263684c697374283129 7714:O1|@13659 7715:O4|@15140,@832,@7717,@7716 7716:O5|@7707,683,0,683,0 7717:S28|6765744f7665726c6f6164496e7374616e63653a204d697373696e67 7718:S37|56414c55455f4f505328292e6765744f7665726c6f6164496e7374616e6365283429283129 7719:O4|@15140,@832,@7721,@7720 7720:O5|@7707,1086,0,1086,0 7721:S16|4f7665726c6f61642054797065446570 7722:S4|636f6e76 7723:O2|@13663,@15171 7724:S28|5052494e545f5441424c4528292e6164644f7665726c6f6164283329 7725:S37|5052494e545f5441424c4528292e6164644f7665726c6f616428332966696c746572283129 7726:S48|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283129283129 7727:O4|103,@663,@7729,@7728 7728:O5|@7707,1113,0,1113,0 7729:S56|43616e6e6f7420696e7374616c6c20616e206f7665726c6f61642077697468696e206120737472756374757265206f722066756e63746f72 7730:O4|103,@663,@7732,@7731 7731:O5|@7707,1115,0,1115,0 7732:S52|496e76616c6964207479706520286e6f742061207479706520636f6e737472756374696f6e2920286164644f7665726c6f616429 7733:S45|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283229 7734:S42|56414c55455f4f505328292e6170706c7946756e6374696f6e283729666f6c6c6f775479706573283129 7735:S49|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f616447656e6572616c283129 7736:S28|56414c55455f4f505328292e6170706c7946756e6374696f6e283729 7737:O2|@7738,0 7738:O5|5,0,@1125,@1123,0 7739:S14|6164645072657474795072696e74 7740:O3|6,@7741,0 7741:O1|@13669 7742:O4|103,@663,@7744,@7743 7743:O5|@7707,999,0,999,0 7744:S68|6164645072657474795072696e743a2054686520617267756d656e74207479706520776173206e6f7420612073696d706c65207479706520636f6e737472756374696f6e 7745:S25|56414c55455f4f505328292e636f646556616c283629283129 7746:O2|@7747,0 7747:O4|11,@7748,1,0 7748:O2|8,@1172 7749:O2|@7750,0 7750:O4|11,@7748,0,0 7751:O2|@7748,0 7752:S7|61646450502d31 7753:O2|@7754,0 7754:O4|11,@7755,1,0 7755:O2|8,@3271 7756:O4|@15140,@832,@7758,@7757 7757:O5|@7707,1003,0,1003,0 7758:S42|4f7665726c6f6164656420416464507265747479202d2077726f6e6720696e7374616e63652074797065 7759:S12|416464507265747479285029 7760:O3|6,@7761,0 7761:O1|@13670 7762:O4|103,@663,@7744,@7763 7763:O5|@7707,870,0,870,0 7764:O3|6,@7765,0 7765:O1|@13671 7766:O4|103,@663,@7768,@7767 7767:O5|@7707,1009,0,1009,0 7768:S68|546865207370656369616c2066756e6374696f6e20506f6c794d4c2e736f757263654c6f636174696f6e2063616e6e6f74206265207573656420617320612076616c7565 7769:S31|56414c55455f4f505328292e636f646556616c2836296765744c6f63283129 7770:O4|@15140,@832,@7772,@7771 7771:O5|@7707,864,0,864,0 7772:S42|4f7665726c6f6164656420476574507265747479202d2077726f6e6720696e7374616e63652074797065 7773:O2|@7774,0 7774:O3|20,@7775,0 7775:O2|@1171,@7776 7776:O2|@7777,0 7777:O3|6,10000,0 7778:O3|6,@739,0 7779:O4|@15140,@832,@7781,@7780 7780:O5|@7707,849,0,849,0 7781:S43|4f7665726c6f61646564204d616b65537472696e67202d2077726f6e6720696e7374616e63652074797065 7782:S12|6d616b65737472696e672829 7783:O3|6,@218,0 7784:S13|6d616b65737472696e67285029 7785:O4|@15140,@832,@7787,@7786 7786:O5|@7707,822,0,822,0 7787:S38|4f7665726c6f61646564205072696e74202d2077726f6e6720696e7374616e63652074797065 7788:O4|@15140,@832,@7790,@7789 7789:O5|@7707,758,0,758,0 7790:S16|636f646556616c202d20466f726d616c 7791:O4|@15140,@832,@7235,@7792 7792:O5|@7707,668,0,668,0 7793:S27|56414c55455f4f505328292e636f64654163636573732832292829 7794:S32|56414c55455f4f505328292e636f646556616c2836296c6f6164566172283129 7795:O1|@13678 7796:O2|@4670,0 7797:S7|7072696e742829 7798:S8|7072696e74285029 7799:O1|@13679 7800:S9|676574507265747479 7801:S7|61646450502d32 7802:S5|6164645050 7803:S22|56414c55455f4f505328292e636f646556616c283629 7804:S13|417267756d656e7420666f7220 7805:O2|3,@7806 7806:S14|526571756972656420747970653a 7807:O2|3,@7808 7808:S14|417267756d656e7420747970653a 7809:S26|56414c55455f4f505328292e636865636b505054797065283629 7810:O1|@13702 7811:O2|3,@7812 7812:S133|6164645072657474795072696e7420656c656d656e742066756e6374696f6e73206d75737420686176652074797065202761202a20696e74202d3e207072657474792c202762202a20696e74202d3e207072657474792c202e2e2e2077697468206f6e652066756e6374696f6e20666f722065616368207479706520706172616d65746572 7813:S27|56414c55455f4f505328292e636f646556616c2836295f2d283129 7814:S36|56414c55455f4f505328292e636f646556616c283629666f6c6c6f775479706573283129 7815:O2|@13708,@7816 7816:O2|@14176,@7815 7817:S33|434f444547454e5f50415253455452454528292e67656e636f6465283829283129 7818:O3|@13710,@8186,@7819 7819:O2|@14127,@8256 7820:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283129 7821:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283229 7822:S29|434f44455452454528292e6d756c7469706c6555736573283429283129 7823:S35|434f44455452454528292e6d756c7469706c65557365732834296c6f6164466e283129 7824:S34|44454255474745525f28292e6d616b6556616c4465627567456e7472696573283729 7825:O1|@7826 7826:O3|6,6,0 7827:O1|@7828 7828:O3|6,7,0 7829:S26|44454255474745525f28292e7570646174655374617465283529 7830:S44|44454255474745525f28292e6d616b6556616c4465627567456e74726965732837296c6f6164566172283329 7831:O2|@13722,@7832 7832:O3|13,@5750,@7834 7833:S29|44454255474745525f28292e627265616b506f696e74436f6465283529 7834:O3|@7835,@7165,0 7835:O3|6,@15278,0 7836:S53|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529636865636b56617273283129283129283129 7837:O6|@13725,@7257,@4659,@7323,@7493,@7619 7838:O4|@15140,@832,@7840,@7839 7839:O5|@1151,520,0,520,0 7840:S36|6d6b4d757475616c446563733a20656d707479206465636c61726174696f6e206c697374 7841:S39|545950454944434f444528292e637265617465446174617479706546756e6374696f6e73283529 7842:S18|7072696e742d7072696e7464656661756c74 7843:S81|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b41646472283129 7844:O2|@1854,@7845 7845:O2|@7846,0 7846:O3|6,@195,0 7847:O3|20,@7844,1 7848:O2|@1262,@7849 7849:O2|@1263,@7660 7850:O3|20,@7851,1 7851:O2|@1262,@7849 7852:O3|20,@7848,1 7853:O2|@1854,@7854 7854:O2|@7855,0 7855:O3|6,@196,0 7856:O3|20,@7853,1 7857:O4|5,@7859,@7858,@1263 7858:O4|5,@7862,@7861,@1263 7859:O3|21,@7860,9 7860:O3|21,@7009,5 7861:O3|21,@7865,9 7862:O3|21,@7863,9 7863:O3|21,@7864,5 7864:O4|11,@7009,1,1 7865:O4|5,@7867,@7866,@1263 7866:O3|15,@7871,@7870 7867:O4|19,3,@7868,4 7868:O4|11,@7869,0,0 7869:O4|11,@7009,0,1 7870:O4|5,@7875,@1262,@7874 7871:O2|@7872,0 7872:O4|1,0,1,@7873 7873:O4|11,@7869,1,1 7874:O4|5,@7878,@1262,@7877 7875:O4|3,@7876,@7846,@1170 7876:O2|8,@5462 7877:O4|3,@7876,@7879,@1170 7878:O4|3,@7876,@7669,@1170 7879:O3|6,@246,0 7880:O2|@7881,0 7881:O4|1,0,0,@7882 7882:O4|11,@1171,4,1 7883:O4|19,0,@7674,4 7884:S12|706172656e74686573697365 7885:O4|@15140,@832,@7887,@7886 7886:O5|@7236,138,0,138,0 7887:S19|6765744361636865645479706556616c756573 7888:S5|7072696e74 7889:S52|545950454944434f444528292e637265617465446174617479706546756e6374696f6e732835297365745072696e746572283429 7890:S34|545950454944434f444528292e7072696e746572466f724461746174797065283329 7891:S16|4e6f20636f6e7374727563746f72733a 7892:O5|@7236,1053,0,1053,0 7893:S41|545950455f5452454528292e636f6e7374727563746f72526573756c74283229676574417267283129 7894:O2|@7674,0 7895:O4|@15140,@832,@7897,@7896 7896:O5|@1050,1576,0,1576,0 7897:S19|4e6f7420612066756e6374696f6e2074797065 7898:O3|20,@7658,1 7899:O2|@1854,@7900 7900:O2|@7901,0 7901:O3|6,@1004,0 7902:O3|20,@7899,1 7903:O4|3,@7678,@1262,@7690 7904:S59|545950454944434f444528292e7072696e746572466f7244617461747970652833297072696e746572466f72436f6e7374727563746f7273283129 7905:S85|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429 7906:S96|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429617267732d283129283129 7907:O4|0,@4661,@1263,@1262 7908:O4|@15140,@832,@7910,@7909 7909:O5|@1151,524,0,524,0 7910:S53|6d6b4d757475616c446563733a20526563757273697665206465636c61726174696f6e206973206e6f7420612066756e6374696f6e 7911:S5|6e6f2d6571 7912:S91|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d6d6b41646472283129 7913:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283129 7914:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283329 7915:S3|65712d 7916:S3|283229 7917:O2|@1171,@7918 7918:O2|@1173,0 7919:S6|283229285029 7920:S36|545950454944434f444528292e657175616c697479466f72446174617479706573283429 7921:S58|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229 7922:S75|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f72446174617479706528322970726f63657373436f6e73747273283129 7923:S93|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d617267732d283129283129 7924:O1|@13781 7925:S57|434f444547454e5f50415253455452454528292e636f646553657175656e63652835296e657744656275677c6c6f63616c446563732d283129 7926:S35|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529 7927:S41|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629 7928:S51|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629666f6c64496473283329 7929:O4|@15140,@832,@7931,@7930 7930:O5|@7932,1034,0,1034,0 7931:S18|646563436f6e733a204e6f74206c6f63616c 7932:S51|6d6c736f757263655c4d4c436f6d70696c65725c5061727365547265655c434f444547454e5f5041525345545245452e736d6c 7933:S48|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529646563436f6e73747273283429 7934:S44|54797065206f662065787072657373696f6e20636f6e7461696e73206c6f63616c2064617461747970652028 7935:S25|29206f7574736964652069747320646566696e6974696f6e2e 7936:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283229 7937:S56|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129283129 7938:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129 7939:S40|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229 7940:O4|@15140,@832,@7942,@7941 7941:O5|@7932,1535,0,1535,0 7942:S10|6765744d617463686573 7943:S61|434f444547454e5f50415253455452454528292e636f646552656356616c42696e64696e677328332976616c42696e64546f4676616c42696e64283229 7944:O4|@15140,@832,@7946,@7945 7945:O5|@7932,1554,0,1554,0 7946:S10|6d6b4656616c42696e64 7947:O3|@5288,@7948,0 7948:O1|@7949 7949:O3|6,8,0 7950:S34|44454255474745525f28292e75706461746544656275674c6f636174696f6e283429 7951:S37|44454255474745525f28292e6d616b655374727563744465627567456e7472696573283629 7952:S50|44454255474745525f28292e6d616b655374727563744465627567456e74726965732836296c6f6164537472756374283329 7953:O4|@13837,@7960,@8059,@7954 7954:O5|5,@8073,@8014,@8012,@1126 7955:O4|101,@721,0,@7956 7956:O5|@1548,508,0,508,0 7957:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b65536f6d652d283129 7958:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b654e6f6e652d283129 7959:S26|44415441545950455f52455028292e6d6b45784964656e283329 7960:O7|@7962,@4620,@7963,@7961,@1126,0,0 7961:O3|2,@8011,@8010 7962:S4|534f4d45 7963:O2|1,@7964 7964:O3|6,@7966,@7965 7965:O2|@7970,0 7966:O3|@7968,@7969,@7967 7967:O1|@13842 7968:O1|@13840 7969:O1|@13841 7970:O4|@15146,@224,@7971,0 7971:O3|3,3,@7972 7972:O6|@10797,@1146,@7974,@1859,@7973,@1143 7973:O12|@7991,@7993,@7992,@7968,@7969,@7967,@7966,@7995,@15279,@8006,@8008,@7990 7974:O2|@10799,@7975 7975:O2|@7977,@7976 7976:O2|@7982,@7981 7977:O2|@7979,@7978 7978:O3|1,@7980,@1166 7979:O2|1,@6621 7980:O8|@7410,@7962,0,0,@1175,0,0,1 7981:O2|@7986,0 7982:O2|@7339,@7983 7983:O3|1,@7984,@1166 7984:O8|@7985,@7962,0,0,@1175,0,0,1 7985:O3|20,@7637,1 7986:O2|@7344,@7987 7987:O3|1,@7988,@1166 7988:O8|@7989,@7962,0,0,@1175,0,0,1 7989:O4|11,@1171,0,1 7990:O4|@7995,@15279,@8006,@8008 7991:O3|@7990,@7992,@7966 7992:O2|@7993,0 7993:O1|@13843 7994:S4|4e4f4e45 7995:O1|@13844 7996:S12|65712d6f7074696f6e283229 7997:S15|65712d6f7074696f6e283229285029 7998:O1|@13846 7999:O5|0,0,0,@1126,@8000 8000:O2|@8001,0 8001:O2|3,@7994 8002:O5|0,0,0,@1126,@8003 8003:O2|@8004,0 8004:O2|3,@7962 8005:S13|7072696e746f7074696f6e2829 8006:O1|@13848 8007:S12|626f7865642d6f7074696f6e 8008:O1|@13849 8009:S11|73697a652d6f7074696f6e 8010:O5|5,@8013,@8014,@8012,@1126 8011:O3|6,@15280,79992 8012:O4|@8014,@8016,@1126,@8015 8013:O2|@8011,0 8014:S6|6f7074696f6e 8015:O3|@8019,@8058,@8018 8016:O2|@8017,0 8017:O2|@15280,79992 8018:O3|@8014,@1128,@1189 8019:O2|1,@8020 8020:O3|6,@7990,@8021 8021:O2|@8022,0 8022:O4|@15146,@224,@8023,0 8023:O3|3,4,@8024 8024:O6|@10797,@1146,@8025,@1859,@7973,@1143 8025:O2|@10799,@8026 8026:O2|@8028,@8027 8027:O2|@1846,@8050 8028:O2|@1777,@8029 8029:O3|1,@8030,@1166 8030:O8|@8032,@7997,0,0,@8031,0,0,1 8031:O2|@8043,0 8032:O2|12,@8033 8033:O8|@8034,@7996,0,@1837,@7402,0,0,1 8034:O4|5,@1169,@1262,@8035 8035:O4|5,@7410,@8036,@1263 8036:O4|5,@7409,@8037,@1263 8037:O4|7,@8038,@1814,1 8038:O2|@8040,@8039 8039:O2|@8041,0 8040:O2|@7989,1 8041:O2|@8042,1 8042:O4|11,@1173,0,1 8043:O2|1,@8044 8044:O2|@8045,0 8045:O3|2,0,@8046 8046:O2|@8047,0 8047:O3|0,@6959,@8048 8048:O2|@7989,@8049 8049:O2|@8042,0 8050:O2|@8052,@8051 8051:O2|@8055,0 8052:O2|@1851,@8053 8053:O3|1,@8054,@1166 8054:O8|@1854,@8007,0,0,@1853,0,0,1 8055:O2|@1857,@8056 8056:O3|1,@8057,@1166 8057:O8|@1262,@8009,0,0,@1853,0,0,1 8058:O4|1,@15281,1,0 8059:O7|@7994,@639,@8060,@8010,@1126,0,0 8060:O2|1,@8061 8061:O3|6,@7992,@8062 8062:O2|@8063,0 8063:O4|@15146,@224,@8064,0 8064:O3|3,2,@8065 8065:O6|@10797,@1146,@8066,@1859,@7973,@1143 8066:O2|@10799,@8067 8067:O2|@8069,@8068 8068:O2|@7064,0 8069:O2|@1164,@8070 8070:O3|1,@8071,@1166 8071:O8|@8072,@7994,0,0,@1175,0,0,1 8072:O4|19,0,@1171,0 8073:O2|@8074,0 8074:O3|2,@8076,@8075 8075:O5|5,0,@8087,@8086,@1126 8076:O3|3,@8078,@8077 8077:O3|0,@8084,1 8078:O2|@8080,@8079 8079:O2|@8082,0 8080:O2|@8081,@1932 8081:S1|31 8082:O2|@8083,@7738 8083:S1|32 8084:O2|@8081,@8085 8085:O2|@8083,0 8086:O4|@8087,0,@1126,@8088 8087:S6|707265747479 8088:O3|@8090,@8164,@8089 8089:O3|@8165,@1128,@1189 8090:O2|1,@8091 8091:O3|6,@8093,@8092 8092:O2|@8129,0 8093:O4|@8094,@15282,3,1 8094:O1|@13850 8095:O2|@13851,@15282 8096:O4|0,@8097,3,1 8097:O1|@13852 8098:O1|@13853 8099:O5|0,0,0,@1126,@8100 8100:O2|@8101,0 8101:O2|3,@8102 8102:S15|436f6e746578744c6f636174696f6e 8103:O5|0,0,0,@1126,@8104 8104:O2|@8105,0 8105:O2|3,@8106 8106:S15|436f6e7465787450726f7065727479 8107:S13|7072696e742d636f6e74657874 8108:S12|7072696e742d707265747479 8109:O5|0,0,0,@1126,@8110 8110:O2|@8111,0 8111:O2|3,@8112 8112:S11|507265747479426c6f636b 8113:O5|0,0,0,@1126,@8114 8114:O2|@8115,0 8115:O2|3,@8116 8116:S11|507265747479427265616b 8117:O5|0,0,0,@1126,@8118 8118:O2|@8119,0 8119:O2|3,@8120 8120:S15|5072657474794c696e65427265616b 8121:O5|0,0,0,@1126,@8122 8122:O2|@8123,0 8123:O2|3,@8124 8124:S12|507265747479537472696e67 8125:O5|0,0,0,@1126,@8126 8126:O2|@8127,0 8127:O2|3,@8128 8128:S21|507265747479537472696e67576974685769647468 8129:O4|@15146,@224,@8130,0 8130:O3|3,4,@8131 8131:O6|@10797,@1146,@8133,@8144,@8132,@1143 8132:O22|@8146,@8150,@8151,@8149,@8148,@8154,@8155,@8153,@8152,@8157,@8156,@8159,@8160,@8158,@8147,@8161,@8162,@8163,@8145,@8094,@15282,@8093 8133:O2|@10799,@8134 8134:O2|@8136,@8135 8135:O2|@8141,@1279 8136:O2|@8138,@8137 8137:O3|1,@8140,@1166 8138:O2|1,@8139 8139:O2|2,18 8140:O8|@1263,@7911,0,0,@7308,0,0,1 8141:O2|@8142,@1145 8142:O2|1,@8143 8143:O2|2,19 8144:O21|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2 8145:O3|@8161,@8162,@8163 8146:O6|@8093,@8148,@8152,@8156,@8147,@8145 8147:O3|@8159,@8160,@8158 8148:O3|@8150,@8151,@8149 8149:O1|@13857 8150:O1|@13855 8151:O1|@13856 8152:O3|@8154,@8155,@8153 8153:O1|@13860 8154:O1|@13858 8155:O1|@13859 8156:O2|@8157,@1145 8157:O1|@13861 8158:O1|@13864 8159:O1|@13862 8160:O1|@13863 8161:O1|@13865 8162:O1|@13866 8163:O1|@13867 8164:O4|1,@15284,0,0 8165:S13|506f6c794d4c2e707265747479 8166:O4|@15140,@832,@8168,@8167 8167:O5|@7932,982,0,982,0 8168:S6|636f64654578 8169:O4|@15140,@832,@8171,@8170 8170:O5|@7932,962,0,962,0 8171:S6|6c7641646472 8172:S17|4c697374506169722e756e7a6970283229 8173:O2|@1854,@1262 8174:S10|626f7865642f73697a65 8175:S34|44415441545950455f52455028292e63686f6f7365436f6e73747252657072283329 8176:S47|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f736552657072283129 8177:S60|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963726561746552657072283229 8178:S29|44415441545950455f52455028292e636f6e7374724170706c79283229 8179:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707232283329 8180:S40|44415441545950455f52455028292e637265617465556e617279436f6e7374727563746f72283329 8181:S32|44415441545950455f52455028292e636f6e7374724465737472756374283229 8182:O2|8,0 8183:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707231283329 8184:S29|44415441545950455f52455028292e636f6e7374724d61746368283229 8185:S30|44415441545950455f52455028292e6765745475706c654b696e64283129 8186:O2|@13901,@8187 8187:O3|@13985,@8256,@1487 8188:S53|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429636865636b56617273283129283129 8189:O4|@15140,@832,@8191,@8190 8190:O5|@7932,1149,0,1149,0 8191:S15|73657456616c756541646472657373 8192:S38|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429 8193:S18|56616c7565206964656e7469666965722028 8194:S26|2920686173206e6f74206265656e207265666572656e6365642e 8195:S46|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c7565283229 8196:S59|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129 8197:S68|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129757064617465283229 8198:O4|@15140,@832,@8200,@8199 8199:O5|@7932,1204,0,1204,0 8200:S23|6261646c7920666f726d65642070617273652074726565 8201:O4|@15140,@832,@8203,@8202 8202:O5|@7932,125,0,125,0 8203:S10|6d6b4172675475706c65 8204:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329666e4d6b41646472283129 8205:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329636f6465426f6479283129 8206:S29|434f44455452454528292e6d6b536574436f6e7461696e65722d283329 8207:O4|@13917,@8215,@8218,@8208 8208:O3|13,@5750,@8221 8209:O1|@8210 8210:O3|6,5,0 8211:O1|@13920 8212:S57|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e7472792835292d45 8213:S35|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029 8214:S55|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e747279283529 8215:O3|13,@5750,@8216 8216:O3|@8217,@7165,0 8217:O3|6,@15285,0 8218:O3|13,@5750,@8219 8219:O3|@8220,@7165,0 8220:O3|6,@15286,0 8221:O3|@8222,@7165,0 8222:O3|6,@15287,0 8223:O4|@15140,@832,@8225,@8224 8224:O5|@7932,1425,0,1425,0 8225:S23|417267756d656e74206c656e6774682070726f626c656d 8226:O1|@13941 8227:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296261736546756e2d283129 8228:S3|285029 8229:O1|@13942 8230:S87|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329616464457874726173283229636865636b506f6c796d6f72706869736d283229283129 8231:S52|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329 8232:S3|283129 8233:S75|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e732835296e6578745061726d73283129 8234:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e73283529 8235:O4|@15140,@832,@8237,@8236 8236:O5|@7932,1368,0,1368,0 8237:S31|6372656174654d6174636865733a204d697373696e67207479706520766172 8238:S73|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296372656174654170706c69636174696f6e73283429 8239:S67|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e4465637328332961726741646472732d283129283129 8240:S71|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296172674c6973742d6d616b6541726773283229 8241:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6541726773283229 8242:O10|@13976,@15148,@15144,@1191,@1201,@1220,@1239,@15154,@15152,@15150 8243:S27|545950455f5452454528292e6973466c6f6174696e675074283129 8244:O4|@15140,@832,@8246,@8245 8245:O5|@7932,176,0,176,0 8246:S26|7475706c6557696474683a20656d707479206c6f63616c646563 8247:O4|@15140,@832,@8249,@8248 8248:O5|@1050,97,0,97,0 8249:S33|74634571756976616c656e743a204e6f74206120747970652066756e6374696f6e 8250:O4|@15140,@832,@8252,@8251 8251:O5|@1050,3042,0,3042,0 8252:S26|656e7472794e756d626572202d206e6f742061207265636f7264 8253:S33|434f444547454e5f50415253455452454528292e7475706c655769647468283129 8254:S41|545950454944434f444528292e547970655661724d61702e6d61705479706556617273283129283129 8255:S48|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429676574506f6c79283129 8256:O5|@14070,@8187,@1487,@7818,@8452 8257:S56|434f444547454e5f50415253455452454528292e636f64654d61746368283529636f64655061747465726e45787072657373696f6e283129 8258:O4|@15140,@832,@8260,@8259 8259:O5|@7932,374,0,374,0 8260:S7|6d616b65417267 8261:S41|434f444547454e5f50415253455452454528292e6765745661726961626c6573496e50617474283229 8262:S27|4d61746368657320617265206e6f7420657868617573746976652e 8263:O4|101,@721,0,@8264 8264:O5|@7932,322,0,322,0 8265:S31|48616e646c6572206361746368657320616c6c20657863657074696f6e732e 8266:O1|@13994 8267:S47|4d415443485f434f4d50494c455228292e6275696c645061747465726e436f64652833296669726550617474283129 8268:O4|@15140,@832,@8270,@8269 8269:O5|@8271,1179,0,1179,0 8270:S33|636f646544656661756c742063616c6c6564206275742065786861757374697665 8271:S48|6d6c736f757263655c4d4c436f6d70696c65725c5061727365547265655c4d415443485f434f4d50494c45522e736d6c 8272:O3|6,@8273,0 8273:S5|4d61746368 8274:O3|6,101,0 8275:S48|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e732837296669726550617474283129 8276:S32|434f444547454e5f50415253455452454528292e636f64654d61746368283529 8277:S8|5061747465726e20 8278:S14|20697320726564756e64616e742e 8279:S50|434f444547454e5f50415253455452454528292e636f64654d617463682835297265706f7274526564756e64616e74283229 8280:S53|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729666e4d6b4164647273283129 8281:O4|@15140,@832,@8283,@8282 8282:O5|@7932,449,0,449,0 8283:S7|73657441646472 8284:S41|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729 8285:O3|0,@5372,0 8286:S37|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e73283729 8287:O4|@15140,@832,@8283,@8288 8288:O5|@8271,609,0,609,0 8289:O1|@14009 8290:S37|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429 8291:O4|@15140,@832,@8293,@8292 8292:O5|@8271,1083,0,1083,0 8293:S16|6d616b6554657374733a20656d707479 8294:S49|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d61746368283329 8295:O4|@15140,@832,@8297,@8296 8296:O5|@8271,1060,0,1060,0 8297:S21|646f5061747465726e3a206e6f7420617420656e64 8298:S39|56414c55455f4f505328292e6d616b65496e7665727365283529676574496e7665727365283129 8299:O4|@15140,@832,@8301,@8300 8300:O5|@7707,1234,0,1234,0 8301:S11|6d616b65496e7665727365 8302:S70|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d646f5061747465726e283229 8303:S33|56414c55455f4f505328292e6d616b654775617264283529746573746572283129 8304:O4|@15140,@832,@8306,@8305 8305:O5|@7707,1207,0,1207,0 8306:S9|6d616b654775617264 8307:S35|4d415443485f434f4d50494c455228292e636f6e7374727563746f72436f6465283429 8308:S24|56414c55455f4f505328292e6d616b654775617264283529 8309:S26|56414c55455f4f505328292e6d616b65496e7665727365283529 8310:S73|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d6d616b655061747465726e73283129 8311:S34|4d415443485f434f4d50494c455228292e6d616b654e616976655465737473283429 8312:S29|4d415443485f434f4d50494c455228292e6d616b654c6f616473283529 8313:S29|4d415443485f434f4d50494c455228292e6d616b654e61697665283229 8314:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655061747473283129 8315:S24|4d415443485f434f4d50494c455228292e64696666283229 8316:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655465737473283229 8317:S28|4d415443485f434f4d50494c455228292e70617474436f6465283529 8318:S43|4d415443485f434f4d50494c455228292e70617474436f64652835296d616b655061747454657374283329 8319:S24|4d415443485f434f4d50494c455228292e706c7573283229 8320:O1|@14028 8321:S51|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283129283129 8322:O1|@14024 8323:S48|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283429 8324:S29|4d415443485f434f4d50494c455228292e706174744465707468283229 8325:S26|4d415443485f434f4d50494c455228292e66726f6d2832292829 8326:S29|4d415443485f434f4d50494c455228292e696e74657273656374283229 8327:S45|4d415443485f434f4d50494c455228292e636f6e7461696e734e6f6e436f6e7374457863657074696f6e283129 8328:O1|@14035 8329:S36|4d415443485f434f4d50494c455228292e6275696c64416f74283529646f417267283129 8330:O2|30,@1613 8331:O1|@14038 8332:O4|@15140,@832,@8334,@8333 8333:O5|@8271,559,0,559,0 8334:S15|657175616c697479466f7254797065 8335:S40|4d415443485f434f4d50494c455228292e6275696c64416f74283529657175616c6974792d283129 8336:S40|4d415443485f434f4d50494c455228292e6275696c64416f742835296c697456616c75652d283129 8337:O4|@15140,@832,@8339,@8338 8338:O5|@8271,446,0,446,0 8339:S31|7061747465726e206973206e6f742061207475706c6520696e20612d6f2d74 8340:S31|43616e27742066696e642061206669786564207265636f726420747970652e 8341:O4|@15140,@832,@8252,@8342 8342:O5|@1050,3037,0,3037,0 8343:S28|4d415443485f434f4d50494c455228292e6275696c64416f74283529 8344:O4|@15140,@832,@8346,@8345 8345:O5|@8271,472,0,472,0 8346:S6|6d657267656e 8347:S39|4d415443485f434f4d50494c455228292e6275696c64416f742835296d657267656e2833292829 8348:O4|@15140,@832,@8252,@8349 8349:O5|@1050,3023,0,3023,0 8350:O4|101,@721,0,@8351 8351:O5|@1050,3011,0,3011,0 8352:S26|545950455f5452454528292e656e7472794e756d626572283229 8353:O1|@14046 8354:S30|4d415443485f434f4d50494c455228292e61646444656661756c74283229 8355:O4|@15140,@832,@8357,@8356 8356:O5|@8271,349,0,349,0 8357:S36|61646453636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 8358:S30|4d415443485f434f4d50494c455228292e61646453636f6e737472283529 8359:S41|4d415443485f434f4d50494c455228292e61646453636f6e737472283529616464436c697374283129 8360:O1|@14055 8361:S22|436f6e76657273696f6e20657863657074696f6e2028 8362:S26|2920726169736564207768696c6520636f6e76657274696e6720 8363:S4|20746f20 8364:S43|4f766572666c6f7720657863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 8365:O4|1,@471,0,@8366 8366:O5|@7707,1286,0,1286,0 8367:S34|457863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 8368:S30|56414c55455f4f505328292e6765744c69746572616c56616c7565283429 8369:O1|@14056 8370:O4|@15140,@832,@8372,@8371 8371:O5|@8271,539,0,539,0 8372:S34|6d6b436f6e735061743a206261646c792d666f726d65642070617273652d74726565 8373:S54|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c6973742832296d6b436f6e73506174283129 8374:O7|@1762,@4620,@8376,@8375,@1126,0,0 8375:O3|2,@8419,@8418 8376:O2|1,@8377 8377:O3|6,@1862,@8378 8378:O2|@8379,0 8379:O4|@15146,@224,@8380,0 8380:O3|3,3,@8381 8381:O6|@10797,@1146,@8382,@1859,@1771,@1143 8382:O2|@10799,@8383 8383:O2|@8385,@8384 8384:O2|@8389,@8388 8385:O2|@1164,@8386 8386:O3|1,@8387,@1166 8387:O8|@7410,@1762,0,0,@1175,0,0,1 8388:O2|@8406,0 8389:O2|@6636,@8390 8390:O3|1,@8391,@1166 8391:O8|@8393,@1762,0,0,@8392,0,2,1 8392:O2|@8401,0 8393:O3|15,@8395,@8394 8394:O3|20,@8399,1 8395:O2|@8397,@8396 8396:O2|@8398,0 8397:O4|1,@1177,0,@7674 8398:O4|1,@1177,1,@7678 8399:O2|@7009,@8400 8400:O2|@7876,0 8401:O2|1,@8402 8402:O2|@8404,@8403 8403:O2|@8405,0 8404:O3|2,0,@1177 8405:O3|2,1,@1177 8406:O2|@7979,@8407 8407:O3|1,@8408,@1166 8408:O8|@8410,@1762,0,0,@8409,0,2,1 8409:O2|@8417,0 8410:O3|15,@8412,@8411 8411:O3|20,@8399,0 8412:O2|@8414,@8413 8413:O2|@8415,0 8414:O4|1,@6959,0,@7989 8415:O4|1,@6959,1,@8416 8416:O4|11,@1171,1,1 8417:O2|1,@1276 8418:O5|5,@8425,@1738,@1736,@1126 8419:O3|3,@8420,@8077 8420:O2|@8422,@8421 8421:O2|@8424,0 8422:O2|@8081,@8423 8423:O3|6,@15168,79992 8424:O2|@8083,@8418 8425:O2|@8423,0 8426:S45|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229283129 8427:O7|@1754,@639,@8428,@8418,@1126,0,0 8428:O2|1,@8429 8429:O3|6,@1860,@8430 8430:O2|@8431,0 8431:O4|@15146,@224,@8432,0 8432:O3|3,2,@8433 8433:O6|@10797,@1146,@8434,@1859,@1771,@1143 8434:O2|@10799,@8435 8435:O2|@8436,@8068 8436:O2|@7344,@8437 8437:O3|1,@8438,@1166 8438:O8|@8072,@1754,0,0,@1175,0,0,1 8439:O4|@15140,@832,@8441,@8440 8440:O5|@8271,316,0,316,0 8441:S35|616464436f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 8442:S42|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229 8443:S29|4d415443485f434f4d50494c455228292e616464436f6e737472283629 8444:S40|4d415443485f434f4d50494c455228292e616464436f6e737472283629616464436c697374283129 8445:O4|@15140,@832,@8447,@8446 8446:O5|@8271,401,0,401,0 8447:S37|6164644578636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 8448:S31|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429 8449:S42|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429616464436c697374283129 8450:S30|4d415443485f434f4d50494c455228292e74657374416363657373283129 8451:S30|56414c55455f4f505328292e676574506f6c796d6f72706869736d283329 8452:O2|@14112,@8187 8453:S47|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329676574436f6e737472283129 8454:O4|@15140,@832,@8456,@8455 8455:O5|@7932,630,0,630,0 8456:S22|4c6973743a2062616420656c656d656e742074797065 8457:S38|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329283129 8458:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283129 8459:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329 8460:S60|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329636f64654c697374283329 8461:O4|@15140,@832,@8463,@8462 8462:O5|@7932,555,0,555,0 8463:S20|636f646567656e3a20556e617279207475706c65 8464:O4|@15140,@832,@6813,@8465 8465:O5|@1700,423,0,423,0 8466:O4|@15140,@832,@6816,@8467 8467:O5|@1700,421,0,421,0 8468:O1|@14084 8469:O4|@15140,@832,@8471,@8470 8470:O5|@7932,591,0,591,0 8471:S17|6d697373696e6720696e207265636f7264 8472:S35|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329 8473:S54|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c6973742833296c6f6f6b466e283129 8474:S45|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c697374283329 8475:S58|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129676574436f6e737472283129 8476:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129 8477:S29|56414c55455f4f505328292e636f6465457846756e6374696f6e283629 8478:O4|@15140,@832,@8480,@8479 8479:O5|@7932,695,0,695,0 8480:S22|4578705365713a20656d7074792073657175656e6365 8481:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f64654c697374283329 8482:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429666e4d6b41646472283129 8483:O4|@15140,@832,@8485,@8484 8484:O5|@7932,813,0,813,0 8485:S43|636f64654c616d6264613a20626f6479206f6620666e206973206e6f74206120636c61757365206c697374 8486:O4|@15140,@832,@8488,@8487 8487:O5|@7932,797,0,797,0 8488:S42|676574466e426f64793a206e6f74206120636f6e73747261696e656420666e2d65787072657373696f6e 8489:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429636f6465416c7473283129 8490:S33|434f444547454e5f50415253455452454528292e636f64654c616d626461283429 8491:S106|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d666e4d6b41646472283129 8492:O1|@14133 8493:S26|5061747465726e206973206e6f7420657868617573746976652e 8494:S44|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329 8495:S58|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229 8496:S83|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6170706c69636174696f6e283229 8497:O4|@15140,@832,@8499,@8498 8498:O5|@7932,1681,0,1681,0 8499:S13|6c6f616446756e6374696f6e73 8500:S85|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6c6f616446756e6374696f6e73283329 8501:O4|@15140,@832,@8503,@8502 8502:O5|@7932,1642,0,1642,0 8503:S7|6c6f616456616c 8504:O4|@15140,@832,@8506,@8505 8505:O5|@8271,1124,0,1124,0 8506:S42|636f646542696e64696e673a2073686f756c64206265206e61697665207061747465726e206d61746368 8507:O3|6,@8508,0 8508:S4|42696e64 8509:O3|6,100,0 8510:S31|4d415443485f434f4d50494c455228292e636f646542696e64696e67283429 8511:S110|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d61726741646472732d283129283129 8512:S77|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229706f6c7956617273466f7256616c732d283129 8513:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f636573735461696c283129 8514:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f63657373426f6479283129 8515:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929 8516:S37|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629 8517:S47|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629666f6c64496473283329 8518:S43|535452554354555245535f28292e67656e636f6465537472756374732833296d6170506169722834292829 8519:S65|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929636f646553747275637475726542696e64283329 8520:O1|@14179 8521:O4|11,@78,0,@8522 8522:O5|@4294,2792,0,2792,0 8523:S53|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835292d45 8524:O5|@14181,@4659,@7323,@7493,@7619 8525:O1|@14182 8526:S42|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283129 8527:O1|@14184 8528:S45|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283129 8529:O1|@14186 8530:S44|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283129 8531:O4|@15140,@832,@8533,@8532 8532:O5|@7236,1164,0,1164,0 8533:S15|416c726561647920636865636b6564 8534:S14|7072696e742d68656c7065722829 8535:S47|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832292d45 8536:O1|@14192 8537:S45|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283229283129 8538:S10|657175616c6974792829 8539:O1|@14195 8540:S48|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283229283129 8541:S11|626f7865646e6573732829 8542:O1|@14198 8543:S47|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283229283129 8544:S6|73697a652829 8545:S32|545950454944434f444528292e636f646547656e657261746976654964283529 8546:S54|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832296d6b41646472283129 8547:S56|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229617267732d283129283129 8548:S45|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229 8549:O4|@15140,@832,@8551,@8550 8550:O5|@4294,2735,0,2735,0 8551:S22|46756e63746f724170706c3a20756e646566696e6564 8552:O1|@14211 8553:O4|11,@78,0,@8554 8554:O5|@4294,2780,0,2780,0 8555:S47|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f6465283629 8556:S51|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e73283529 8557:O1|@14214 8558:S71|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d61746368537562537472756374757265283329 8559:O2|@1171,@7660 8560:S96|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296c6f6164436f6465283129 8561:O1|@14222 8562:O2|@14223,@15288 8563:S29|706f6c79436f6d70696c65722832297072696e7444657074682d283129 8564:O1|@14224 8565:O5|0,0,0,@8567,@8566 8566:O2|@8570,0 8567:O2|@8568,0 8568:O2|0,@8569 8569:O5|@1050,1869,1869,0,0 8570:O2|3,@8571 8571:S11|53696d706c654572726f72 8572:O5|0,0,0,@8574,@8573 8573:O2|@8577,0 8574:O2|@8575,0 8575:O2|0,@8576 8576:O5|@1050,1870,1870,0,0 8577:O2|3,@8578 8578:S20|54797065436f6e7374727563746f724572726f72 8579:S17|7072696e742d6d61746368526573756c74 8580:O4|@15140,@832,@8582,@8581 8581:O5|@4294,2608,0,2608,0 8582:S27|756e6966795479706573206661696c656420696e20706173732033 8583:O1|@14225 8584:S97|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e28332964657374566172732d283129 8585:S113|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d6d6b4164647273283129 8586:S85|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e283329 8587:S118|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d61726741646472732d283129283129 8588:O1|@14235 8589:S22|506f6c794d4c2e7072657474795072696e742d283129 8590:O1|@14236 8591:S28|506f6c794d4c2e7072657474794d61726b7570283129283129283129 8592:S22|506f6c794d4c2e7072657474794d61726b7570283529 8593:S31|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329 8594:S41|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329646f5072696e74283329 8595:O1|@14238 8596:S32|506f6c794d4c2e7072657474794d61726b757028352967657453697a65283229 8597:O3|@14234,@752,77 8598:O4|@15140,@832,@8600,@8599 8599:O5|@4294,2726,0,2726,0 8600:S37|6d616b6553656c65637465643a204e6f7420426f756e64206f72206e6f7420466f726d616c 8601:O1|@14250 8602:S61|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f646528362970726f63657373426f6479283129 8603:O1|@14251 8604:S47|535452554354555245535f28292e67656e636f6465537472756374732833296c6f61644f7061717565496473283329 8605:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429 8606:O1|@14258 8607:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f706465637328342964656275677c636f64652d283129 8608:S72|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e642833296d6b41646472283129 8609:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e64283329 8610:O1|@14266 8611:O4|@15140,@832,@8613,@8612 8612:O5|@1151,356,0,356,0 8613:S20|6d6b4d6163726f50726f633a20636c6f73757265 8614:S28|434f44455452454528292e6d6b4d6163726f50726f63283129283129 8615:S25|434f44455452454528292e6d6b4d6163726f50726f63283129 8616:S51|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e537472756374446563283129 8617:O4|@15140,@832,@8619,@8618 8618:O5|@1496,2217,0,2217,0 8619:S36|72656475636554797065733a20556e61626c6520746f2073657420747970652076617273 8620:O1|@14279 8621:S59|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c54797065732832296c6561737447656e457870283129 8622:S27|545950455f5452454528292e6c6561737447656e6572616c283129 8623:O4|@15142,@1027,0,@8624 8624:O5|@1050,3105,0,3105,0 8625:S39|545950455f5452454528292e6c6561737447656e6572616c2831296c6561737441726773283129 8626:S44|545950455f5452454528292e6c6561737447656e6572616c28312967657454797065436f6e73747273283129 8627:O2|@14281,@7268 8628:O1|@14298 8629:S107|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832296f726967696e616c566172732d283129 8630:O1|@14300 8631:O1|@14301 8632:S91|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e6365283229 8633:S103|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832297472616e73706f7365283129 8634:S31|467265652074797065207661726961626c6573206e6f7420616c6c6f776564 8635:S36|50415253455f44454328292e7061727365446563283329676c6f62616c456e762d283129 8636:O1|@14315 8637:O3|@14317,@8724,@8638 8638:O2|@14419,@8637 8639:S35|50415253455f44454328292e6d6b4c6f63616c426f6479466978456e76283529283129 8640:O1|@14322 8641:S19|53796d5365742e73747275637453792d283129 8642:S38|50415253455f44454328292e7061727365446563283329737472756374757265446563283329 8643:S19|534b4950535f28292e74657374666f72283329 8644:S15|3c6368617220636f6e7374616e743e 8645:S12|3c6964656e7469666965723e 8646:S18|3c696e746567657220636f6e7374616e743e 8647:S14|756e6b6e6f776e2073796d626f6c 8648:S15|3c7265616c20636f6e7374616e743e 8649:S17|3c737472696e6720636f6e7374616e743e 8650:S17|3c74797065206964656e7469666965723e 8651:S15|3c776f726420636f6e7374616e743e 8652:S19|534b4950535f28292e62616473796d73283229 8653:S14|2065787065637465642062757420 8654:S10|2077617320666f756e64 8655:S20|534b4950535f28292e6e6f74666f756e64283229 8656:S15|53796d626f6c732e72657072283129 8657:O1|@14330 8658:O2|@14332,@8659 8659:O2|@14365,@8658 8660:O1|@14333 8661:S18|5374617274206f66207369676e6174757265 8662:S5|6572726f72 8663:S40|50415253455f44454328292e706172736544656328332970617273655369676e6174757265283329 8664:O1|@14339 8665:S16|53796d5365742e6964656e742d283129 8666:O1|@14340 8667:O4|@15140,@832,@8669,@8668 8668:O5|@784,612,0,612,0 8669:S31|417474656d707420746f20707573682074776f20706172656e746865736573 8670:O1|@14343 8671:S20|53796d5365742e747970654964656e742d283129 8672:S56|50415253455f44454328292e706172736544656328332970617273655369676e617475726528332967657457686572655479706573283229 8673:O1|@14346 8674:S16|53796d5365742e656d7074792d283129 8675:S11|456e64206f662074797065 8676:S25|50415253455f5459504528292e706172736554797065283429 8677:S37|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229 8678:S7|4c6162656c2028 8679:S25|292061707065617273206d6f7265207468616e206f6e63652e 8680:S75|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d7265706f7274447570283329 8681:O1|@14344 8682:S50|50415253455f5459504528292e7061727365547970652834297475706c655479706528322967657450726f64756374283229 8683:S10|4964656e746966696572 8684:O2|@123,@1613 8685:S49|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229 8686:S25|4c6162656c73206d75737420626520312c322c332c2e2e2e2e 8687:S20|534b4950535f28292e6765744c6162656c283329 8688:S64|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229636f6e7374727563746f7273283329 8689:S77|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c697374283129 8690:S87|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c69737428312974657374666f72283329 8691:S17|534b4950535f28292e6765746964283429 8692:S42|20686173206e6f74206265656e206465636c6172656420696e2074797065206465636c61726174696f6e 8693:S42|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329283129 8694:S39|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329 8695:S23|2068617320616c7265616479206265656e20757365642e 8696:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283129 8697:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283229 8698:S37|50415253455f44454328292e70617273654465632833296765745479706556617273283229 8699:S50|50415253455f44454328292e7061727365446563283329676574547970655661727328322967657454797065566172283229 8700:S18|534b4950535f28292e736b69706f6e283429 8701:S43|50415253455f44454328292e70617273654465632833296d616b6554797065566172456e76283229283129 8702:S9|5369676e6174757265 8703:S75|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d6e6577656e762d283129 8704:S40|50415253455f44454328292e70617273654465632833297479706542696e64696e67283129283129 8705:S37|50415253455f44454328292e70617273654465632833297479706542696e64696e67283529 8706:O1|@14375 8707:S39|50415253455f44454328292e70617273654465632833297369676e617475726553706563283329 8708:S52|4461746174797065207265706c69636174696f6e206d757374206e6f7420636f6e7461696e2074797065207661726961626c6573 8709:O1|@14388 8710:S44|50415253455f44454328292e7061727365446563283329646174617479706542696e64696e67283129283129 8711:S62|60606f702727206d6179206e6f7420617070656172206265666f7265206120636f6e7374727563746f7220696e20612073706563696669636174696f6e2e 8712:S38|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729 8713:S48|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729636f6e73747273283229 8714:S57|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129 8715:O1|@14395 8716:S72|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f4578283229 8717:S79|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f537472756374757265283229 8718:S73|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f56616c283229 8719:S37|50415253455f44454328292e7061727365446563283329616e6442696e64696e6773283329 8720:S74|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d736967696473283229 8721:S43|50415253455f44454328292e706172736544656328332964617461747970654465634f725265706c283529 8722:S49|50415253455f44454328292e7061727365446563283329737472756374757265446563283329646f537472446563283229 8723:S18|534b4950535f28292e67657473796d283229 8724:O2|@14407,@8638 8725:O1|@14408 8726:S29|737472756374206f722066756e63746f72206170706c69636174696f6e 8727:S35|50415253455f44454328292e706172736544656328332973747275637456616c283329 8728:S51|50415253455f44454328292e706172736544656328332973747275637456616c283329646f436f6e73747261696e7473283329 8729:S32|50415253455f44454328292e7061727365446563283329737472446563283329 8730:O1|@14422 8731:O1|@14424 8732:S26|50415253455f5452454528292e6d6b4964656e74283229283129 8733:O1|@14434 8734:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283129 8735:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283229 8736:S39|50415253455f44454328292e70617273654465632833296465632835296e6577456e762d283129 8737:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283129 8738:S31|5468697320636c6175736520646566696e65732066756e6374696f6e206060 8739:S36|2727206275742070726576696f757320636c6175736528732920646566696e6564206060 8740:S16|5468697320636c617573652068617320 8741:S38|20617267756d656e7473206275742070726576696f757320636c617573652873292068616420 8742:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283229 8743:O1|@14442 8744:O1|@14444 8745:S7|5061747465726e 8746:O1|@14445 8747:O7|@1385,2,@8749,@8748,@1126,0,0 8748:O3|2,@1868,@8750 8749:O2|3,8 8750:O3|6,@15290,79992 8751:S45|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e742831292d45 8752:O1|@14446 8753:O7|@8754,2,@8749,@8748,@1126,0,0 8754:S7|636f6e76496e74 8755:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832297265706f7274447570283329 8756:S38|5265616c20636f6e7374616e7473206e6f7420616c6c6f77656420696e207061747465726e73 8757:O1|@14449 8758:O7|@8759,2,@8749,@8748,@1126,0,0 8759:S8|636f6e765265616c 8760:O1|@14450 8761:O7|@1383,2,@8749,@8748,@1126,0,0 8762:O1|@14451 8763:O7|@8764,2,@8749,@8748,@1126,0,0 8764:S8|636f6e76576f7264 8765:S46|292068617320696e666978207374617475732062757420776173206e6f74207072656365646564206279206f702e 8766:S55|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229 8767:S43|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e74283129 8768:S66|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d7475706c6573283129 8769:S35|203d20706174206578706563746564206166746572206e756d65726963206c6162656c 8770:O1|@14459 8771:S32|4578706563746564206964206f722069643a7479206265666f72652060617327 8772:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832296765744c6162656c73283229 8773:S61|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329636f6e73747261696e744f724c617965726564283429 8774:S42|50415253455f44454328292e7061727365446563283329646563283529636f6e73747261696e74283529 8775:S68|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d766172734c697374283129 8776:S41|50415253455f44454328292e70617273654465632833296765744c6f6e674e6f6e496e666978283729 8777:O1|@14466 8778:S14|456e64206f66207061747465726e 8779:S47|50415253455f44454328292e706172736544656328332964656328352966756e4228322962696e64696e6773283229 8780:O1|@14468 8781:S73|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e2832297265706f7274447570283329 8782:O1|@14478 8783:O1|@14479 8784:O1|@14480 8785:O1|@14481 8786:O1|@14482 8787:O1|@14483 8788:S21|456e64206f66206c65742065787072657373696f6e 8789:S61|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229 8790:S72|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229676574456e747279283229 8791:S43|50415253455f44454328292e706172736544656328332964656328352964656353657175656e6365283229 8792:O1|@14492 8793:S10|45787072657373696f6e 8794:S42|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e283329 8795:S12|456e64206f66206d61746368 8796:S50|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296d61746368283129 8797:S56|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332970617273654f72656c7365283229 8798:O1|@14509 8799:S57|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833297061727365416e64616c736f283229 8800:S55|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296b6579576f7264457870283229 8801:O3|@123,@1613,@1145 8802:O2|-1,0 8803:S42|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729 8804:O1|@14516 8805:S5|7269676874 8806:S4|6c656674 8807:O2|@8808,0 8808:S13|2d6173736f636961746976652e 8809:S5|2220697320 8810:S20|2d6173736f63696174697665207768696c652022 8811:S32|222068617665207468652073616d6520707265636564656e6365206275742022 8812:S7|2220616e642022 8813:S11|4f70657261746f72732022 8814:S54|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729 8815:S75|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729636865636b4173736f636961746976697479283229 8816:S56|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729726561644e6578744f7073283229 8817:S61|50415253455f44454328292e70617273654465632833296465632835297061727365496e66697828372970617273654170706c69636174696f6e283429 8818:S79|53796e746178206572726f723a2066756e2062696e64696e67206973206e6f7420616e206964656e746966696572206170706c69656420746f206f6e65206f72206d6f7265207061747465726e732e 8819:S70|506172656e74686573657320617265206f6e6c7920616c6c6f77656420666f7220696e6669786564206170706c69636174696f6e7320696e2066756e2062696e64696e67732e 8820:S63|436f6e7374727563746f72206170706c69636174696f6e7320696e2066756e2062696e64696e6773206d75737420626520706172656e74686573697365642e 8821:S28|50415253455f5452454528292e6d6b46756e5061747465726e283329 8822:S37|50415253455f5452454528292e6d6b46756e5061747465726e283329756e7069636b283229 8823:S39|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329 8824:S42|50415253455f44454328292e706172736544656328332973747244656328332967657444656373283129 8825:S29|50415253455f44454328292e7061727365446563283329646563283529 8826:S36|50415253455f44454328292e706172736544656328332964656328352976616c42283329 8827:S36|50415253455f44454328292e706172736544656328332964656328352976617273283229 8828:S8|5661726961626c65 8829:O4|@15140,@832,@8831,@8830 8830:O5|@8832,558,0,558,0 8831:S6|666978697479 8832:S32|6d6c736f757263655c4d4c436f6d70696c65725c50415253455f4445432e4d4c 8833:S29|537472696e674376742e7363616e537472696e67283229726472283129 8834:O9|@14537,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 8835:S16|4c61726765496e742e7363616e283329 8836:S34|4c61726765496e742e7363616e283329726561645f6865785f646967697473283329 8837:O4|5,@148,0,@8838 8838:O5|@654,352,0,352,0 8839:S11|507265636564656e636520 8840:S37|206e6f7420616c6c6f7765642c206d757374206265206265747765656e203020616e642039 8841:S32|50415253455f44454328292e7061727365446563283329666978697479283329 8842:S39|50415253455f44454328292e706172736544656328332966697869747928332976617273283229 8843:S48|50415253455f44454328292e7061727365446563283329666978697479283329676574507265636564656e6365283129 8844:O1|@14540 8845:O1|@14541 8846:S22|53796d5365742e7369676e617475726553792d283129 8847:O1|@14542 8848:S20|53796d5365742e66756e63746f7253792d283129 8849:S23|50415253455f44454328292e7061727365446563283329 8850:S38|50415253455f44454328292e70617273654465632833297061727365546f7044656373283229 8851:S36|50415253455f44454328292e706172736544656328332966756e63746f72446563283329 8852:S49|50415253455f44454328292e706172736544656328332966756e63746f72446563283329646f46756e6374446563283229 8853:S38|50415253455f44454328292e70617273654465632833297369676e6174757265446563283329 8854:S25|4d414b455f28292e636f6d70696c65496e746f456e76283129 8855:O5|5,0,@1125,@7518,0 8856:O2|@1871,@8857 8857:O2|@1870,0 8858:O3|2,0,1 8859:O3|2,1,1 8860:O1|@14554 8861:O4|11,@78,0,@8862 8862:O5|@1548,530,0,530,0 8863:S35|5354525543545f56414c5328292e6d616b65456d707479476c6f62616c283129283129 8864:S4|426f6f6c 8865:O3|2,@1505,@1505 8866:S3|6e6f74 8867:O2|@1222,@8868 8868:O2|@1220,0 8869:O2|@1241,@8870 8870:O2|@1239,0 8871:O2|@1193,@8872 8872:O2|@1191,0 8873:O2|@1738,@8874 8874:O2|@1736,@8875 8875:O2|@8374,@8876 8876:O2|@8427,0 8877:O2|@8014,@8878 8878:O2|@8012,@8879 8879:O2|@8059,@8880 8880:O2|@7960,0 8881:O4|@1901,@8883,@1126,@8882 8882:O3|@8886,@8923,@8885 8883:O2|@8884,0 8884:O2|@15291,79992 8885:O3|@1901,@1128,@1189 8886:O2|1,@8887 8887:O3|6,@8889,@8888 8888:O2|@8901,0 8889:O4|@8891,@15292,@8898,@8890 8890:O1|@14560 8891:O1|@14555 8892:O1|@14556 8893:S11|65712d68656c7065722829 8894:O1|@14557 8895:O1|@14558 8896:S40|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129283129 8897:S37|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129 8898:O1|@14559 8899:S14|626f7865642d68656c7065722829 8900:S13|73697a652d68656c7065722829 8901:O4|@15146,@224,@8902,0 8902:O3|3,4,@8903 8903:O5|@10792,@8905,@8922,@8904,@1143 8904:O4|@8889,@8891,@8898,@8890 8905:O2|@10799,@8906 8906:O2|@8908,@8907 8907:O2|@8913,@8912 8908:O2|@1164,@8909 8909:O3|1,@8910,@1166 8910:O8|@8911,@8893,0,0,@1853,0,0,1 8911:O2|12,@1167 8912:O2|@8916,@8915 8913:O2|@8914,@1145 8914:O3|0,@15292,0 8915:O2|@8919,0 8916:O2|@6636,@8917 8917:O3|1,@8918,@1166 8918:O8|@7287,@8899,0,0,@1853,0,0,1 8919:O2|@7979,@8920 8920:O3|1,@8921,@1166 8921:O8|@1262,@8900,0,0,@1853,0,0,1 8922:O3|2,2,2 8923:O4|1,@15162,1,0 8924:S16|457175616c4c61726765576f72642829 8925:O4|3,@1171,@1173,@6647 8926:O1|@14561 8927:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f547970655072696e746572283129 8928:O2|@1262,@4663 8929:S14|4c61726765576f72642e776f7264 8930:O2|@1934,@8931 8931:O2|@1933,0 8932:O2|@1203,@8933 8933:O2|@1201,0 8934:O1|@14562 8935:S7|52756e43616c6c 8936:S13|756e7361666543617374283129 8937:S10|756e7361666543617374 8938:S7|697353686f7274 8939:S9|706f696e7465724571 8940:S15|6c6f61644f7065726174696f6e2829 8941:O3|13,@5750,@8942 8942:O3|@7674,@8943,0 8943:O1|@7678 8944:O2|@8945,0 8945:O5|5,0,@1203,@1201,0 8946:S8|6c6f6164576f7264 8947:O3|13,@6231,@8942 8948:S21|6c6f6164576f726446726f6d496d6d757461626c65 8949:O3|13,@6178,@8942 8950:S8|6c6f616442797465 8951:O3|13,@6180,@8942 8952:S21|6c6f61644279746546726f6d496d6d757461626c65 8953:S16|6d656d6f727943656c6c4c656e677468 8954:S15|6d656d6f727943656c6c466c616773 8955:O2|@8957,@8956 8956:O7|@8957,2,@8959,@8945,@8958,0,0 8957:S12|6279746573506572576f7264 8958:O2|@1127,0 8959:O2|1,@7949 8960:S16|73746f72654f7065726174696f6e2829 8961:O4|18,@5750,@8962,@8942 8962:O4|11,@1171,2,0 8963:S9|73746f7265576f7264 8964:O4|18,@6178,@8962,@8942 8965:S9|73746f726542797465 8966:S15|636c6561724d757461626c65426974 8967:O2|@8945,@8968 8968:O2|@8945,0 8969:S18|616c6c6f63617465427974654d656d6f7279 8970:O2|12,@8971 8971:O8|@8973,@8972,0,0,@1853,0,0,1 8972:S20|416c6c6f63617465576f72644d656d6f72792829 8973:O4|0,@7678,@8962,@7674 8974:S18|616c6c6f63617465576f72644d656d6f7279 8975:S16|626c6f636b4f7065726174696f6e2829 8976:O5|4,1,@8978,@8979,@8977 8977:O3|@7674,@8982,0 8978:O4|11,@1171,4,0 8979:O3|@7678,@8980,0 8980:O1|@8981 8981:O4|11,@1171,3,0 8982:O1|@8962 8983:O2|@8945,@8967 8984:S15|62797465566563746f72457175616c 8985:O5|4,0,@8978,@8979,@8977 8986:S17|62797465566563746f72436f6d70617265 8987:O5|4,@1098,@8978,@8979,@8977 8988:S9|6d6f76654279746573 8989:O5|4,@578,@8978,@8979,@8977 8990:S9|6d6f7665576f726473 8991:O3|13,@1268,@8942 8992:O2|@1868,@8968 8993:S12|6c6f6164556e746167676564 8994:O4|18,@1268,@8962,@8942 8995:O2|@1868,@8967 8996:S13|73746f7265556e746167676564 8997:O3|6,@8998,0 8998:O1|@14563 8999:O4|@14564,@6716,@9075,@9000 9000:O1|@14572 9001:O2|@9002,0 9002:O3|31,@6634,@9003 9003:O4|1,@6634,@5372,0 9004:O3|31,@5753,@9005 9005:O4|1,@5751,@5372,48 9006:O3|48,@9007,@5753 9007:O3|@5751,@5372,64 9008:O3|31,@6628,@6396 9009:O2|@9011,@9010 9010:O2|@9014,@9013 9011:O2|35,@9012 9012:O4|1,@6628,@5372,4 9013:O2|@9017,@9016 9014:O2|35,@9015 9015:O2|3,@6647 9016:O2|@9019,0 9017:O2|35,@9018 9018:O2|3,@1172 9019:O2|35,@9020 9020:O4|1,@5751,@5372,56 9021:O4|@15140,@832,@9023,@9022 9022:O5|@9024,182,0,182,0 9023:S43|72747343616c6c3a204162692f617267756d656e7420636f756e74206e6f7420696d706c656d656e746564 9024:S55|6d6c736f757263655c4d4c436f6d70696c65725c436f6465547265655c583836436f64655c583836464f524549474e43414c4c2e736d6c 9025:O2|@9027,@9026 9026:O2|@9029,@9028 9027:O3|31,@1823,@9020 9028:O2|@9031,@9030 9029:O3|31,@1165,@9018 9030:O2|@9033,0 9031:O3|31,@3271,@9032 9032:O2|3,@1174 9033:O3|31,@1174,@9015 9034:O2|@9027,@9035 9035:O2|@9029,@9030 9036:O2|@9027,@9037 9037:O2|@9029,0 9038:O2|@9027,0 9039:O2|@9041,@9040 9040:O2|@9043,@9042 9041:O3|31,@5750,@9020 9042:O2|@9045,@9044 9043:O3|31,@6178,@9018 9044:O2|@9046,0 9045:O3|31,@1165,@9015 9046:O3|31,@1823,@9032 9047:O2|@9041,@9048 9048:O2|@9043,@9049 9049:O2|@9045,0 9050:O2|@9041,@9051 9051:O2|@9043,0 9052:O2|@9041,0 9053:O2|@9055,@9054 9054:O2|@9057,@9056 9055:O2|24,0 9056:O2|@6283,0 9057:O3|31,@1172,@9058 9058:O4|1,@5751,@5372,32 9059:O4|8,9,0,1 9060:O5|2,2,@5751,32,1 9061:O2|@9062,0 9062:O3|31,@6231,@9063 9063:O4|1,@5751,@5372,0 9064:O2|@9066,@9065 9065:O2|@9067,0 9066:O2|6,@6633 9067:O3|31,@5753,@9068 9068:O2|3,@6628 9069:O2|@9070,0 9070:O3|48,@9071,@6231 9071:O3|@5751,@5372,0 9072:S17|556e6b6e6f776e20414249207479706520 9073:O5|@9024,84,0,84,0 9074:S31|583836464f524549474e43414c4c28292e72747343616c6c46756c6c283329 9075:O1|@14571 9076:S10|506f6c79476574414249 9077:S26|506f6c79437265617465456e747279506f696e744f626a656374 9078:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6543616c6c283129283129283129 9079:S12|72747343616c6c46756c6c31 9080:O3|6,@9081,0 9081:O1|@14573 9082:O4|@14574,@6716,@9075,@9000 9083:O2|@9085,@9084 9084:O2|@9087,@9086 9085:O3|31,@1165,@9012 9086:O2|@9089,@9088 9087:O2|35,@6262 9088:O2|@9087,@9091 9089:O3|31,@1165,@9090 9090:O4|1,@6628,@5372,8 9091:O2|@9014,@9092 9092:O2|@9017,0 9093:O2|@9094,@9049 9094:O3|31,@1823,@9018 9095:O2|@9097,@9096 9096:O2|@9099,@9098 9097:O3|31,@5750,@9018 9098:O2|@9101,@9100 9099:O3|31,@6178,@9015 9100:O2|@9102,0 9101:O3|31,@1165,@9032 9102:O3|31,@1823,@9103 9103:O2|3,@3271 9104:O2|@9085,@9088 9105:O2|@9097,@9106 9106:O2|@9099,@9107 9107:O2|@9101,0 9108:O2|@9097,@9109 9109:O2|@9099,0 9110:O2|@9094,0 9111:O2|@9097,0 9112:O4|@15140,@832,@9023,@9113 9113:O5|@9024,281,0,281,0 9114:S31|583836464f524549474e43414c4c28292e72747343616c6c46617374283329 9115:S12|72747343616c6c4661737431 9116:O1|@14577 9117:O1|@14578 9118:O1|@14579 9119:O1|@14580 9120:O1|@14581 9121:O1|@14582 9122:O1|@14583 9123:S12|72747343616c6c46756c6c30 9124:S12|72747343616c6c4661737430 9125:S12|72747343616c6c46756c6c32 9126:S12|72747343616c6c4661737432 9127:S12|72747343616c6c46756c6c33 9128:S12|72747343616c6c4661737433 9129:S12|72747343616c6c4661737434 9130:O1|@14584 9131:S6|537973457272 9132:O3|@9133,12,@1868 9133:S6|546872656164 9134:O3|@9135,23,@1868 9135:S7|466f726569676e 9136:O3|@9137,10,@1868 9137:S8|5857696e646f7773 9138:O3|@9139,8,@1868 9139:S10|436f6e76657273696f6e 9140:O3|@9141,103,@1868 9141:S4|4661696c 9142:O1|@14585 9143:S8|4c61726765496e74 9144:O2|@8855,@9145 9145:O2|@8855,0 9146:S11|63616c6c51756f7452656d 9147:O2|@1125,@9148 9148:O2|@7518,0 9149:O2|1,3 9150:S4|6c657373 9151:S7|67726561746572 9152:S6|6c6573734571 9153:S9|677265617465724571 9154:S3|616464 9155:S8|7375627472616374 9156:S8|6d756c7469706c79 9157:O1|@14586 9158:S8|4669786564496e74 9159:O2|@7738,@7737 9160:O2|@1125,@9161 9161:O2|@1123,0 9162:O3|9,4,1 9163:O3|9,1,1 9164:O3|9,2,1 9165:S2|3e3d 9166:S4|71756f74 9167:O2|1,5 9168:S3|72656d 9169:O1|@14587 9170:O2|3,3 9171:O2|3,4 9172:O2|3,2 9173:S3|646976 9174:S3|6d6f64 9175:S3|6f7262 9176:S4|616e6462 9177:O2|4,2 9178:S4|786f7262 9179:S2|3c3c 9180:O2|5,2 9181:S2|3e3e 9182:S3|7e3e3e 9183:O1|@14588 9184:S11|746f4c61726765576f7264 9185:S12|746f4c61726765576f726458 9186:S13|66726f6d4c61726765576f7264 9187:O3|9,3,0 9188:O3|9,4,0 9189:O3|9,1,0 9190:O3|9,2,0 9191:O2|8,6 9192:O2|8,3 9193:O2|8,1 9194:O2|8,2 9195:O2|10,1 9196:O2|10,0 9197:O2|10,2 9198:O2|11,0 9199:O2|11,2 9200:O2|11,1 9201:O1|@14589 9202:S4|43686172 9203:O2|@9205,@9204 9204:O2|@9205,0 9205:O5|5,0,@1222,@1220,0 9206:O1|@14590 9207:S6|537472696e67 9208:O1|@14591 9209:O3|6,@9210,0 9210:O1|@14592 9211:O4|@14593,@6716,@9075,@9000 9212:O2|@9214,@9213 9213:O2|@9217,@9216 9214:O3|17,@9215,0 9215:O3|@1172,@5372,0 9216:O2|@9218,0 9217:O4|4,4,@5753,@1821 9218:O4|21,1,@9219,0 9219:O3|@5753,@5372,0 9220:O2|@9221,0 9221:O4|53,5,0,@9222 9222:O4|1,@1172,@5372,0 9223:O3|@1172,@5372,-8 9224:O2|@9226,@9225 9225:O2|@6254,0 9226:O4|21,1,@9215,0 9227:O4|0,1,@1172,0 9228:O2|@9227,@9229 9229:O2|@9231,@9230 9230:O2|@9233,@9232 9231:O3|43,@9223,1 9232:O2|@9235,@9225 9233:O4|47,2,@9234,1 9234:O3|@1172,@5372,-1 9235:O4|55,@9215,0,0 9236:O2|@9237,0 9237:O2|39,0 9238:S43|583836464f524549474e43414c4c28292e72747343616c6c46617374466c6f6174746f466c6f6174283229 9239:S53|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b65466173745265616c5265616c43616c6c283129 9240:S19|72747343616c6c466173745265616c5265616c 9241:O3|6,@9242,0 9242:O1|@14598 9243:O4|@14599,@6716,@9075,@9000 9244:S45|583836464f524549474e43414c4c28292e72747343616c6c4661737447656e6572616c746f466c6f6174283229 9245:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6546617374496e74496e665265616c43616c6c283129 9246:S21|72747343616c6c46617374496e74496e665265616c 9247:O3|2,@1868,@9248 9248:O3|2,@9249,@9249 9249:O5|5,0,@1193,@1191,0 9250:S14|72747343616c6c46617374465f46 9251:O3|2,@1868,@9252 9252:O3|2,@8855,@9249 9253:S14|72747343616c6c46617374495f46 9254:O2|@9249,@9255 9255:O2|@9249,0 9256:O2|7,3 9257:O2|7,4 9258:O2|7,2 9259:S2|3d3d 9260:O2|6,6 9261:O2|6,3 9262:O3|2,@9249,@9249 9263:S3|616273 9264:O3|2,@7738,@9249 9265:S12|66726f6d4669786564496e74 9266:O1|@14604 9267:S9|426f6f747374726170 9268:O1|@14605 9269:O1|@14606 9270:O2|@7287,@4663 9271:O3|@9272,@1128,@1189 9272:S6|746872656164 9273:O2|1,@9274 9274:O2|12,@9275 9275:O8|@5288,@9276,0,0,@1853,0,0,1 9276:S13|47657454687265616449642829 9277:S4|73656c66 9278:O3|2,@9279,@8945 9279:O5|5,@8968,@1901,@8881,@8958 9280:S10|61746f6d6963496e6372 9281:S10|61746f6d696344656372 9282:O3|2,@9279,@1869 9283:S11|61746f6d69635265736574 9284:O1|@14607 9285:S13|466f726569676e4d656d6f7279 9286:O3|13,@1178,@8942 9287:S4|67657438 9288:O3|13,@578,@8942 9289:S5|6765743136 9290:O3|13,@1098,@8942 9291:S5|6765743332 9292:O3|13,@1145,@8942 9293:S5|6765743634 9294:O3|13,@9295,@8942 9295:O1|5 9296:S8|676574466c6f6174 9297:O3|13,@5372,@8942 9298:S9|676574446f75626c65 9299:O4|18,@1178,@8962,@8942 9300:S4|73657438 9301:O4|18,@578,@8962,@8942 9302:S5|7365743136 9303:O4|18,@1098,@8962,@8942 9304:S5|7365743332 9305:O4|18,@1145,@8962,@8942 9306:S5|7365743634 9307:O2|@8945,@9308 9308:O2|@9249,0 9309:O4|18,@9295,@8962,@8942 9310:S8|736574466c6f6174 9311:O4|18,@5372,@8962,@8942 9312:S9|736574446f75626c65 9313:O3|6,@9314,0 9314:O1|@14608 9315:S28|4d6973632e756e657363617065537472696e67283129726472283129 9316:O2|@14611,@126 9317:S1|0d 9318:S1|0c 9319:S1|0b 9320:S1|0a 9321:S1|09 9322:S1|08 9323:S1|07 9324:S11|7363616e42617365283229 9325:S11|7265616448657827283429 9326:O4|8,@9139,@9328,@9327 9327:O5|@9329,91,0,91,0 9328:S23|496e76616c696420737472696e6720636f6e7374616e74 9329:S27|6d6c736f757263655c4d4c436f6d70696c65725c4d6973632e4d4c 9330:S22|4d6973632e756e657363617065537472696e67283129 9331:S34|4d6973632e756e657363617065537472696e67283129636f6e764368617273283129 9332:O3|6,@9333,0 9333:O1|@14613 9334:S3|7e3078 9335:O4|8,@9139,@9337,@9336 9336:O5|@9338,910,0,910,0 9337:S24|496e76616c696420696e746567657220636f6e7374616e74 9338:S34|6d6c736f757263655c4d4c436f6d70696c65725c494e495449414c4953455f2e4d4c 9339:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229696e744f66537472696e67283129 9340:O3|6,@9341,0 9341:O1|@14615 9342:B8|ffffffffffffff7f 9343:O4|5,@148,0,@9344 9344:O5|@9345,201,0,201,0 9345:S21|2e5c62617369735c4c61726765576f72642e736d6c 9346:O4|8,@9139,@9348,@9347 9347:O5|@9338,921,0,921,0 9348:S21|496e76616c696420776f726420636f6e7374616e74 9349:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229776f72644f66537472696e67283129 9350:S11|7363616e576f7264283329 9351:S29|7363616e576f7264283329726561645f6865785f646967697473283329 9352:O2|@9354,@9353 9353:O7|@9354,2,@9355,@1868,@1126,0,0 9354:S14|636f6e76537472696e674e616d65 9355:O2|1,@9356 9356:O3|6,@1383,0 9357:O2|@8754,@9358 9358:O7|@8754,2,@9360,@9359,@1126,0,0 9359:O3|2,@1868,@8855 9360:O2|1,@9332 9361:O2|@8764,@9362 9362:O7|@8764,2,@9364,@9363,@1126,0,0 9363:O3|2,@1868,@8945 9364:O2|1,@9340 9365:O2|@1383,@9366 9366:O7|@1383,2,@9368,@9367,@1126,0,0 9367:O3|2,@1868,@1868 9368:O2|1,@9313 9369:S23|696e744973417262697472617279507265636973696f6e 9370:O2|@9372,@9371 9371:O2|@9376,0 9372:O3|13,@6231,@9373 9373:O3|@9375,@9374,0 9374:O1|@1171 9375:O2|8,@9149 9376:O3|13,@6231,@9377 9377:O3|@9378,@9374,0 9378:O2|8,@6183 9379:O4|11,@9380,0,0 9380:O2|8,@639 9381:O2|@9382,0 9382:O4|3,@1171,@1262,@8182 9383:O4|3,@1822,@1171,@1170 9384:O2|@7009,@9385 9385:O2|@9387,@9386 9386:O2|@1822,@7917 9387:O2|8,@6621 9388:S11|766563746f722d6c6f6f70 9389:O4|1,0,1,@9390 9390:O3|21,@1173,8 9391:O4|1,0,0,@9392 9392:O3|21,@1171,8 9393:O4|3,@7009,@7876,@1170 9394:S9|766563746f722d6571 9395:S11|766563746f722d65712829 9396:O1|@14619 9397:O1|@14620 9398:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129283129 9399:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129 9400:S12|626f7865642d766563746f72 9401:S11|73697a652d766563746f72 9402:O3|@9403,@1128,@1189 9403:S6|766563746f72 9404:S13|62797465566563746f722d6571 9405:O3|15,@9407,@9406 9406:O4|5,@9393,@9409,@1263 9407:O2|@9391,@9408 9408:O2|@9389,0 9409:O3|15,@9411,@9410 9410:O5|4,1,@9387,@9415,@9414 9411:O2|@9412,0 9412:O4|1,0,2,@9413 9413:O4|3,@7949,@7009,@9192 9414:O3|@1171,@7165,0 9415:O3|@1173,@7165,0 9416:O1|@14621 9417:O3|@9418,@1128,@1189 9418:S10|62797465566563746f72 9419:O2|@9421,@9420 9420:O2|@9422,0 9421:S5|6172726179 9422:O4|@9421,@9424,@1126,@9423 9423:O3|@9427,@9444,@9426 9424:O2|@9425,0 9425:O2|@15293,79992 9426:O3|@9445,@1128,@1189 9427:O2|1,@9428 9428:O3|6,@9430,@9429 9429:O2|@9435,0 9430:O4|@9432,@15294,@9434,@9431 9431:O1|@14625 9432:O1|@14622 9433:O1|@14623 9434:O1|@14624 9435:O4|@15146,@224,@9436,0 9436:O3|3,4,@9437 9437:O5|@10792,@9439,@8922,@9438,@1143 9438:O4|@9430,@9432,@9434,@9431 9439:O2|@10799,@9440 9440:O2|@8908,@9441 9441:O2|@9442,@8912 9442:O2|@9443,@1145 9443:O3|0,@15294,0 9444:O4|1,@15165,1,0 9445:S11|41727261792e6172726179 9446:O2|@9421,@9447 9447:O2|@9448,0 9448:O4|@9421,@9450,@1126,@9449 9449:O3|@9453,@9470,@9452 9450:O2|@9451,0 9451:O2|@15295,79992 9452:O3|@9471,@1128,@1189 9453:O2|1,@9454 9454:O3|6,@9456,@9455 9455:O2|@9461,0 9456:O4|@9458,@15296,@9460,@9457 9457:O1|@14629 9458:O1|@14626 9459:O1|@14627 9460:O1|@14628 9461:O4|@15146,@224,@9462,0 9462:O3|3,4,@9463 9463:O5|@10792,@9465,@8922,@9464,@1143 9464:O4|@9456,@9458,@9460,@9457 9465:O2|@10799,@9466 9466:O2|@8908,@9467 9467:O2|@9468,@8912 9468:O2|@9469,@1145 9469:O3|0,@15296,0 9470:O4|1,@15164,1,0 9471:S12|4172726179322e6172726179 9472:O2|@9474,@9473 9473:O2|@9475,0 9474:S9|627974654172726179 9475:O4|@9474,0,@1126,@9476 9476:O3|@9478,@9492,@9477 9477:O3|@9474,@1128,@1189 9478:O2|1,@9479 9479:O3|6,@9481,@9480 9480:O2|@9483,0 9481:O4|@9482,@15297,2,1 9482:O1|@14630 9483:O4|@15146,@224,@9484,0 9484:O3|3,4,@9485 9485:O5|@10792,@9487,@1145,@9486,@1143 9486:O2|@9481,@9482 9487:O2|@10799,@9488 9488:O2|@1162,@9489 9489:O2|@9490,@7341 9490:O2|@9491,@1145 9491:O3|0,@15297,0 9492:O4|1,@15163,0,0 9493:O2|3,6 9494:S2|3c3e 9495:O1|@14631 9496:S6|506f6c794d4c 9497:O1|@14632 9498:S9|4e616d655370616365 9499:O1|@14633 9500:S6|56616c756573 9501:O1|@14634 9502:O1|@14635 9503:S7|496e6669786573 9504:O1|@14636 9505:S10|53747275637475726573 9506:O1|@14637 9507:O1|@14638 9508:S8|46756e63746f7273 9509:O1|@14639 9510:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f747970655072696e746572283129 9511:O3|@9512,@1128,@1189 9512:S29|506f6c794d4c2e4e616d6553706163652e56616c7565732e76616c7565 9513:S5|76616c7565 9514:O3|@9515,@1128,@1189 9515:S38|506f6c794d4c2e4e616d6553706163652e56616c7565732e7479706545787072657373696f6e 9516:S14|7479706545787072657373696f6e 9517:O3|@9518,@1128,@1189 9518:S39|506f6c794d4c2e4e616d6553706163652e54797065436f6e737472732e74797065436f6e737472 9519:S10|74797065436f6e737472 9520:O3|@9521,@1128,@1189 9521:S31|506f6c794d4c2e4e616d6553706163652e496e66697865732e666978697479 9522:O3|@9523,@1128,@1189 9523:S40|506f6c794d4c2e4e616d6553706163652e5369676e6174757265732e7369676e617475726556616c 9524:S12|7369676e617475726556616c 9525:O3|@9526,@1128,@1189 9526:S40|506f6c794d4c2e4e616d6553706163652e537472756374757265732e73747275637475726556616c 9527:S12|73747275637475726556616c 9528:O3|@9529,@1128,@1189 9529:S36|506f6c794d4c2e4e616d6553706163652e46756e63746f72732e66756e63746f7256616c 9530:S10|66756e63746f7256616c 9531:S3|56616c 9532:S3|466978 9533:S3|536967 9534:S5|46756e6374 9535:O3|@9536,@1128,@1189 9536:S26|506f6c794d4c2e4e616d6553706163652e6e616d655370616365 9537:S9|6e616d655370616365 9538:S6|76616c756573 9539:S5|6669786573 9540:S5|7479706573 9541:S10|73747275637475726573 9542:S10|7369676e617475726573 9543:S8|66756e63746f7273 9544:O2|@9546,@9545 9545:O2|@9547,0 9546:S8|6c6f636174696f6e 9547:O4|@9546,0,@1126,@9548 9548:O3|@1484,@9550,@9549 9549:O3|@9573,@1128,@1189 9550:O3|2,0,@9551 9551:O3|3,@9553,@9552 9552:O3|0,@9568,1 9553:O2|@9555,@9554 9554:O2|@9558,@9557 9555:O2|@9556,@1868 9556:S4|66696c65 9557:O2|@9561,@9560 9558:O2|@9559,@7738 9559:S7|656e644c696e65 9560:O2|@9564,@9563 9561:O2|@9562,@7738 9562:S9|73746172744c696e65 9563:O2|@9566,0 9564:O2|@9565,@7738 9565:S11|656e64506f736974696f6e 9566:O2|@9567,@7738 9567:S13|7374617274506f736974696f6e 9568:O2|@9556,@9569 9569:O2|@9559,@9570 9570:O2|@9562,@9571 9571:O2|@9565,@9572 9572:O2|@9567,0 9573:S15|506f6c794d4c2e6c6f636174696f6e 9574:O1|@14640 9575:S17|4465627567676572496e74657266616365 9576:O3|@9577,@1128,@1189 9577:S41|506f6c794d4c2e4465627567676572496e746572666163652e6c6f636174696f6e50726f704c697374 9578:S16|6c6f636174696f6e50726f704c697374 9579:O3|@9580,@1128,@1189 9580:S31|506f6c794d4c2e4465627567676572496e746572666163652e747970654964 9581:S6|747970654964 9582:O3|@9583,@1128,@1189 9583:S36|506f6c794d4c2e4465627567676572496e746572666163652e6d616368696e65576f7264 9584:S11|6d616368696e65576f7264 9585:O3|@9586,@1128,@1189 9586:S34|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065 9587:S9|6c6f63616c54797065 9588:O3|@9589,@1128,@1189 9589:S40|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065436f6e737472 9590:S15|6c6f63616c54797065436f6e737472 9591:O3|@9592,@1128,@1189 9592:S33|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c536967 9593:S8|6c6f63616c536967 9594:O3|@9595,@1128,@1189 9595:S37|506f6c794d4c2e4465627567676572496e746572666163652e656e7669726f6e456e747279 9596:S12|656e7669726f6e456e747279 9597:O5|5,0,@9546,@9547,@1126 9598:S14|456e76456e6446756e6374696f6e 9599:S12|456e76457863657074696f6e 9600:S16|456e76537461727446756e6374696f6e 9601:S12|456e76537472756374757265 9602:S10|456e7654436f6e737472 9603:S9|456e76547970656964 9604:S10|456e7656436f6e737472 9605:S8|456e7656616c7565 9606:O2|@9607,0 9607:O5|5,0,@9546,@9547,@1126 9608:O3|@9609,@1128,@1189 9609:S35|506f6c794d4c2e4465627567676572496e746572666163652e64656275675374617465 9610:S10|64656275675374617465 9611:O1|@14641 9612:O4|@15140,@832,@9614,@9613 9613:O5|@9615,160,0,160,0 9614:S24|736561726368547970653a205479706546756e6374696f6e 9615:S33|6d6c736f757263655c4d4c436f6d70696c65725c44454255474745525f2e736d6c 9616:S33|44454255474745525f28292e736561726368547970652834296d61746368283129 9617:O2|@9618,@4662 9618:O4|0,@4661,@4659,@1262 9619:S35|44454255474745525f28292e72756e54696d6554797065283229636f70794964283129 9620:S25|44454255474745525f28292e73656172636854797065283429 9621:S25|44454255474745525f28292e736561726368456e7673283329 9622:O1|@14648 9623:S32|44454255474745525f28292e72756e54696d6554797065283229283129283129 9624:O1|@14649 9625:S29|44454255474745525f28292e72756e54696d6554797065283229283129 9626:O1|@14650 9627:S27|44454255474745525f28292e6d616b6556616c7565283129283129 9628:S24|44454255474745525f28292e6d616b6556616c7565283129 9629:S9|6d616b6556616c7565 9630:O1|@14651 9631:O1|@14655 9632:O1|@14656 9633:O1|@14657 9634:S31|44454255474745525f28292e6d616b65457863657074696f6e283129283129 9635:S28|44454255474745525f28292e6d616b65457863657074696f6e283129 9636:S13|6d616b65457863657074696f6e 9637:O1|@14658 9638:O1|@14662 9639:O1|@14663 9640:O1|@14664 9641:S33|44454255474745525f28292e6d616b65436f6e7374727563746f72283129283129 9642:S30|44454255474745525f28292e6d616b65436f6e7374727563746f72283129 9643:S15|6d616b65436f6e7374727563746f72 9644:O1|@14665 9645:O1|@14669 9646:O1|@14670 9647:O1|@14671 9648:S36|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129283129 9649:S33|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129 9650:S18|6d616b65416e6f6e796d6f757356616c7565 9651:O1|@14672 9652:O3|@123,@1128,@1189 9653:S40|44454255474745525f28292e6d616b65537472756374757265283529676574467265654964283129 9654:S31|44454255474745525f28292e6d616b65537472756374757265283129283129 9655:S28|44454255474745525f28292e6d616b65537472756374757265283129 9656:S13|6d616b65537472756374757265 9657:O1|@14676 9658:S32|44454255474745525f28292e6d616b6554797065436f6e737472283129283129 9659:S29|44454255474745525f28292e6d616b6554797065436f6e737472283129 9660:S14|6d616b6554797065436f6e737472 9661:O7|@123,2,@1484,@1869,0,0,0 9662:S9|756e697456616c7565 9663:O2|@1868,@9606 9664:O2|@14678,@15287 9665:S22|44454255474745525f28292e77726170283129283129 9666:S19|44454255474745525f28292e77726170283229 9667:S25|44454255474745525f28292e7365744f6e456e747279283129 9668:S10|7365744f6e456e747279 9669:O2|@14681,@15285 9670:S24|44454255474745525f28292e7365744f6e45786974283129 9671:S9|7365744f6e45786974 9672:O3|2,@1932,@1869 9673:O2|@14683,@15286 9674:S36|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129283129 9675:S33|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129 9676:S18|7365744f6e45786974457863657074696f6e 9677:O2|@9607,@9678 9678:O2|@9679,0 9679:O5|5,@1504,@1901,@8881,@1126 9680:O2|@14686,@15278 9681:S30|44454255474745525f28292e7365744f6e427265616b506f696e74283129 9682:S15|7365744f6e427265616b506f696e74 9683:O2|@9685,@9684 9684:O2|@9687,@9686 9685:S7|636f6e74657874 9686:O2|@9717,@9716 9687:O4|@9685,0,@1126,@9688 9688:O3|@9690,@9714,@9689 9689:O3|@9715,@1128,@1189 9690:O2|1,@9691 9691:O3|6,@9693,@9692 9692:O2|@9695,0 9693:O4|@9694,@15283,3,1 9694:O1|@14688 9695:O4|@15146,@224,@9696,0 9696:O3|3,4,@9697 9697:O6|@10797,@1146,@9699,@9704,@9698,@1143 9698:O12|@9706,@9709,@9710,@9708,@9707,@9711,@9712,@9713,@9705,@9694,@15283,@9693 9699:O2|@10799,@9700 9700:O2|@9702,@9701 9701:O2|@9703,@1279 9702:O2|@1851,@8137 9703:O2|@1857,@1145 9704:O11|2,2,2,2,2,2,2,2,2,1,2 9705:O3|@9711,@9712,@9713 9706:O3|@9693,@9707,@9705 9707:O3|@9709,@9710,@9708 9708:O1|@14691 9709:O1|@14689 9710:O1|@14690 9711:O1|@14692 9712:O1|@14693 9713:O1|@14694 9714:O4|1,@15298,0,0 9715:S14|506f6c794d4c2e636f6e74657874 9716:O2|@9745,0 9717:O7|@8102,@4620,@9719,@9718,@1126,0,0 9718:O3|2,@9597,@9744 9719:O2|1,@9720 9720:O3|6,@9707,@9721 9721:O2|@9722,0 9722:O4|@15146,@224,@9723,0 9723:O3|3,3,@9724 9724:O6|@10797,@1146,@9725,@9704,@9698,@1143 9725:O2|@10799,@9726 9726:O2|@9728,@9727 9727:O2|@9736,@9735 9728:O2|@1164,@9729 9729:O3|1,@9730,@1166 9730:O8|@9732,@8102,0,0,@9731,0,0,1 9731:O2|@9733,0 9732:O4|19,0,@7674,1 9733:O2|1,@9734 9734:O2|@8404,0 9735:O2|@9741,0 9736:O2|@6636,@9737 9737:O3|1,@9738,@1166 9738:O8|@9739,@8102,0,0,@1175,0,0,1 9739:O3|20,@9740,1 9740:O2|@1263,@7637 9741:O2|@7979,@9742 9742:O3|1,@9743,@1166 9743:O8|@8416,@8102,0,0,@1175,0,0,1 9744:O5|5,0,@9685,@9687,@1126 9745:O7|@8106,@4620,@9747,@9746,@1126,0,0 9746:O3|2,@9777,@9744 9747:O2|1,@9748 9748:O3|6,@9705,@9749 9749:O2|@9750,0 9750:O4|@15146,@224,@9751,0 9751:O3|3,3,@9752 9752:O6|@10797,@1146,@9753,@9704,@9698,@1143 9753:O2|@10799,@9754 9754:O2|@9756,@9755 9755:O2|@9761,@9760 9756:O2|@7344,@9757 9757:O3|1,@9758,@1166 9758:O8|@9759,@8106,0,0,@9731,0,0,1 9759:O4|19,1,@7674,1 9760:O2|@9768,0 9761:O2|@9763,@9762 9762:O3|1,@9764,@1166 9763:O2|1,@1792 9764:O8|@9765,@8106,0,0,@8392,0,2,1 9765:O3|15,@8395,@9766 9766:O3|20,@9767,1 9767:O2|@1262,@8399 9768:O2|@1777,@9769 9769:O3|1,@9770,@1166 9770:O8|@9771,@8106,0,0,@8409,0,2,1 9771:O3|15,@9772,@8411 9772:O2|@9774,@9773 9773:O2|@9775,0 9774:O4|1,@6959,0,@8416 9775:O4|1,@6959,1,@9776 9776:O4|11,@1171,2,1 9777:O3|3,@9778,@8077 9778:O2|@9780,@9779 9779:O2|@9781,0 9780:O2|@8081,@1868 9781:O2|@8083,@1868 9782:O2|@8087,@9783 9783:O2|@8086,@9784 9784:O2|@9786,@9785 9785:O2|@9859,@9858 9786:O7|@8112,@6182,@9788,@9787,@1126,0,0 9787:O3|2,@9838,@8075 9788:O2|1,@9789 9789:O3|6,@8148,@9790 9790:O2|@9791,0 9791:O4|@15146,@224,@9792,0 9792:O3|3,3,@9793 9793:O6|@10797,@1146,@9794,@8144,@8132,@1143 9794:O2|@10799,@9795 9795:O2|@9797,@9796 9796:O2|@9801,@9800 9797:O2|@1164,@9798 9798:O3|1,@9799,@1166 9799:O8|@7883,@8112,0,0,@9731,0,0,1 9800:O2|@9826,0 9801:O2|@6636,@9802 9802:O3|1,@9803,@1166 9803:O8|@9805,@8112,0,0,@9804,0,4,1 9804:O2|@9819,0 9805:O3|15,@9807,@9806 9806:O3|20,@9813,1 9807:O2|@8397,@9808 9808:O2|@8398,@9809 9809:O2|@9811,@9810 9810:O2|@9812,0 9811:O4|1,@1177,2,@8962 9812:O4|1,@1177,3,@8981 9813:O2|@1263,@9814 9814:O2|@7009,@9815 9815:O2|@7876,@9816 9816:O2|@9387,@9817 9817:O2|@9818,0 9818:O2|8,@6619 9819:O2|1,@9820 9820:O2|@8404,@9821 9821:O2|@8405,@9822 9822:O2|@9824,@9823 9823:O2|@9825,0 9824:O3|2,2,@1177 9825:O3|2,3,@1177 9826:O2|@7979,@9827 9827:O3|1,@9828,@1166 9828:O8|@9829,@8112,0,0,@1273,0,4,1 9829:O3|15,@9831,@9830 9830:O3|20,@9814,0 9831:O2|@9774,@9832 9832:O2|@9775,@9833 9833:O2|@9835,@9834 9834:O2|@9837,0 9835:O4|1,@6959,2,@9836 9836:O4|11,@1171,3,1 9837:O4|1,@6959,3,@7882 9838:O3|3,@9840,@9839 9839:O3|0,@9854,1 9840:O2|@9842,@9841 9841:O2|@9844,@9843 9842:O2|@8081,@7738 9843:O2|@9846,@9845 9844:O2|@8083,@1505 9845:O2|@9850,0 9846:O2|@9848,@9847 9847:O5|5,@9849,@1738,@1736,@1126 9848:S1|33 9849:O2|@9744,0 9850:O2|@9852,@9851 9851:O5|5,@9853,@1738,@1736,@1126 9852:S1|34 9853:O2|@8075,0 9854:O2|@8081,@9855 9855:O2|@8083,@9856 9856:O2|@9848,@9857 9857:O2|@9852,0 9858:O2|@9884,@9883 9859:O7|@8116,@6182,@9861,@9860,@1126,0,0 9860:O3|2,@9881,@8075 9861:O2|1,@9862 9862:O3|6,@8152,@9863 9863:O2|@9864,0 9864:O4|@15146,@224,@9865,0 9865:O3|3,3,@9866 9866:O6|@10797,@1146,@9867,@8144,@8132,@1143 9867:O2|@10799,@9868 9868:O2|@9870,@9869 9869:O2|@9875,@9874 9870:O2|@7344,@9871 9871:O3|1,@9872,@1166 9872:O8|@9873,@8116,0,0,@9731,0,0,1 9873:O4|19,1,@7674,4 9874:O2|@9878,0 9875:O2|@9763,@9876 9876:O3|1,@9877,@1166 9877:O8|@9765,@8116,0,0,@8392,0,2,1 9878:O2|@1777,@9879 9879:O3|1,@9880,@1166 9880:O8|@9771,@8116,0,0,@8409,0,2,1 9881:O3|3,@9882,@8077 9882:O2|@9842,@8079 9883:O2|@9901,@9900 9884:O7|@8120,@9167,@9885,@8075,@1126,0,0 9885:O2|1,@9886 9886:O3|6,@8156,@9887 9887:O2|@9888,0 9888:O4|@15146,@224,@9889,0 9889:O3|3,2,@9890 9890:O6|@10797,@1146,@9891,@8144,@8132,@1143 9891:O2|@10799,@9892 9892:O2|@9894,@9893 9893:O2|@9898,0 9894:O2|@1851,@9895 9895:O3|1,@9896,@1166 9896:O8|@9897,@8120,0,0,@9731,0,0,1 9897:O4|19,2,@7674,4 9898:O2|@9899,@1145 9899:O3|0,@1145,0 9900:O2|@9927,0 9901:O7|@8124,@6182,@9903,@9902,@1126,0,0 9902:O3|2,@1868,@8075 9903:O2|1,@9904 9904:O3|6,@8147,@9905 9905:O2|@9906,0 9906:O4|@15146,@224,@9907,0 9907:O3|3,3,@9908 9908:O6|@10797,@1146,@9909,@8144,@8132,@1143 9909:O2|@10799,@9910 9910:O2|@9912,@9911 9911:O2|@9917,@9916 9912:O2|@7569,@9913 9913:O3|1,@9914,@1166 9914:O8|@9915,@8124,0,0,@9731,0,0,1 9915:O4|19,3,@7674,4 9916:O2|@9924,0 9917:O2|@9919,@9918 9918:O3|1,@9921,@1166 9919:O2|1,@9920 9920:O2|2,11 9921:O8|@9922,@8124,0,0,@1175,0,0,1 9922:O3|20,@9923,1 9923:O2|@1854,@7637 9924:O2|@7591,@9925 9925:O3|1,@9926,@1166 9926:O8|@8416,@8124,0,0,@1175,0,0,1 9927:O7|@8128,@6182,@9929,@9928,@1126,0,0 9928:O3|2,@9957,@8075 9929:O2|1,@9930 9930:O3|6,@8145,@9931 9931:O2|@9932,0 9932:O4|@15146,@224,@9933,0 9933:O3|3,3,@9934 9934:O6|@10797,@1146,@9935,@8144,@8132,@1143 9935:O2|@10799,@9936 9936:O2|@9938,@9937 9937:O2|@9943,@9942 9938:O2|@7612,@9939 9939:O3|1,@9940,@1166 9940:O8|@9941,@8128,0,0,@9731,0,0,1 9941:O4|19,4,@7674,4 9942:O2|@9952,0 9943:O2|@9945,@9944 9944:O3|1,@9947,@1166 9945:O2|1,@9946 9946:O2|2,15 9947:O8|@9948,@8128,0,0,@8392,0,2,1 9948:O3|15,@8395,@9949 9949:O3|20,@9950,1 9950:O2|@9951,@8399 9951:O3|6,4,0 9952:O2|@9954,@9953 9953:O3|1,@9956,@1166 9954:O2|1,@9955 9955:O2|2,16 9956:O8|@9771,@8128,0,0,@8409,0,2,1 9957:O3|3,@9958,@8077 9958:O2|@9780,@8079 9959:O2|3,7 9960:O2|3,5 9961:S10|6d616b65737472696e67 9962:S20|707265747479526570726573656e746174696f6e 9963:S16|6164645072657474795072696e746572 9964:O3|2,@1868,@1869 9965:S11|6164644f7665726c6f6164 9966:O2|@9968,@9967 9967:O7|@9968,2,@9970,@9969,@1126,0,0 9968:S26|73657444656661756c74496e7454797065417262697472617279 9969:O3|2,@1505,@1869 9970:O2|1,@9971 9971:O3|6,@9972,0 9972:O1|@14695 9973:S40|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973657454797065283129 9974:O2|@9976,@9975 9975:O7|@9976,2,@9170,@9977,@1126,0,0 9976:S14|736f757263654c6f636174696f6e 9977:O3|2,@1869,@9607 9978:O1|@14696 9979:S9|556e6976657273616c 9980:O1|@14697 9981:O1|@14698 9982:S9|626f7865642d746167 9983:S8|73697a652d746167 9984:O3|@9985,@1128,@1189 9985:S3|746167 9986:O3|@9987,@1128,@1189 9987:S9|756e6976657273616c 9988:O3|6,@9989,0 9989:O1|@14699 9990:S27|556e6976657273616c2e746167496e6a6563742d23696e6a656374 9991:S9|746167496e6a656374 9992:O3|6,@9993,0 9993:O1|@14700 9994:S29|556e6976657273616c2e74616750726f6a6563742d2370726f6a656374 9995:S10|74616750726f6a656374 9996:O3|6,@9997,0 9997:O1|@14701 9998:S19|556e6976657273616c2e74616749732d236973 9999:S5|7461674973 10000:O3|@10001,@1128,@1189 10001:S19|506f6c794d4c2e707450726f70657274696573 10002:S12|707450726f70657274696573 10003:O3|@10004,@1128,@1189 10004:S16|506f6c794d4c2e706172736554726565 10005:S9|706172736554726565 10006:S12|505466697273744368696c64 10007:S13|50546e6578745369626c696e67 10008:S8|5054706172656e74 10009:S17|505470726576696f75735369626c696e67 10010:O2|@1505,@10011 10011:O2|@10012,0 10012:O5|5,@9606,@1738,@1736,@1126 10013:S12|50547265666572656e636573 10014:S6|505474797065 10015:O2|@10016,@9607 10016:S13|50547374727563747572654174 10017:O2|@10018,@7738 10018:S7|50547265664964 10019:O2|@10021,@10020 10020:O3|2,@7738,@8075 10021:S7|50547072696e74 10022:O2|@10023,@9607 10023:S10|50546f70656e65644174 10024:O2|@10025,@7738 10025:S7|50546465664964 10026:O2|@10027,@9607 10027:S12|50546465636c617265644174 10028:O2|@10030,@10029 10029:O5|5,@10031,@1738,@1736,@1126 10030:S13|5054636f6d706c6574696f6e73 10031:O2|@1868,0 10032:O2|@10033,@9679 10033:S12|5054627265616b506f696e74 10034:O3|2,@1869,@10035 10035:O5|5,@9204,@8014,@8012,@1126 10036:S5|5573653a20 10037:S2|2d49 10038:O6|@14704,@10046,@10054,@15299,@10066,@10039 10039:O3|@14716,@10055,@10054 10040:O5|@10041,580,0,580,0 10041:S14|2e5c62617369735c4f532e736d6c 10042:S4|50617468 10043:O5|@10041,582,0,582,0 10044:S17|4f532e506174682e636f6e636174283229 10045:S32|4f532e506174682e636f6e636174283229636f6e636174417263732832292829 10046:O7|@14706,@15299,@10054,@247,@15300,@10063,@10047 10047:O2|@14712,@10055 10048:O5|@10041,382,0,382,0 10049:O5|@10041,385,0,385,0 10050:S10|496e76616c6964417263 10051:O5|@10041,400,0,400,0 10052:S19|4f532e506174682e746f537472696e67283329 10053:S33|4f532e506174682e746f537472696e6728332961726373546f4c696e6b73283129 10054:O3|@14708,@10055,@247 10055:O1|@14710 10056:O4|0,@123,0,0 10057:O4|11,@78,0,@10058 10058:O5|@140,1350,0,1350,0 10059:O4|0,@123,1,1 10060:S35|4f532e506174682e6d61746368566f6c756d6550726566697857696e646f7773283129 10061:S35|4f532e506174682e6d61746368566f6c756d6550726566697857696e646f7773283229 10062:S23|4f532e506174682e6973536570617261746f722d283129 10063:O1|@14711 10064:S23|4f532e506174682e76616c6964566f6c756d652d283129 10065:S23|4f532e506174682e76616c6964566f6c756d652d283229 10066:O1|@14715 10067:S16|537472696e672e6d6170283129283129 10068:O3|@123,0,0 10069:S21|4f532e506174682e66726f6d537472696e67283229 10070:O2|@14718,@10055 10071:S23|4f532e506174682e73706c697442617365457874283229 10072:S32|4f532e506174682e73706c697442617365457874283229676574457874283129 10073:O1|@10074 10074:S3|353731 10075:O3|1,@471,0 10076:S13|54657874494f2e6f70656e496e 10077:O5|@10078,290,0,290,0 10078:S18|2e5c62617369735c54657874494f2e736d6c 10079:O1|@14720 10080:S27|4d414b455f28292e757365496e746f456e76283129283129283129 10081:S21|4d414b455f28292e757365496e746f456e76283329 10082:S22|4f532e506174682e6a6f696e42617365457874283229 10083:S3|757365 10084:S24|4d414b455f28292e757365496e746f456e76283129283129 10085:S12|757365576974685061726d73 10086:O2|1,@10087 10087:O3|6,@10088,0 10088:O1|@14726 10089:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283129 10090:S8|636f6d70696c6572 10091:S11|676c6f62616c5370616365 10092:S4|68617264 10093:S7|6d657373616765 10094:O5|5,@10095,@8014,@8012,@1126 10095:O2|@8075,0 10096:S6|706172656e74 10097:S4|6e657874 10098:S8|70726576696f7573 10099:S21|636f6d70696c657256657273696f6e4e756d626572 10100:O2|@10101,0 10101:O3|2,@1869,@7738 10102:O3|@10104,@10106,@10103 10103:O2|@14729,@15114 10104:O2|@14727,@15114 10105:S19|556e6976657273616c2e746167283229283129 10106:O2|@14728,@15114 10107:S13|6c696e654e756d626572546167 10108:O3|@10110,@10111,@10109 10109:O2|@14732,@15129 10110:O2|@14730,@15129 10111:O2|@14731,@15129 10112:S9|6f6666736574546167 10113:O3|@10115,@10116,@10114 10114:O2|@14735,@15115 10115:O2|@14733,@15115 10116:O2|@14734,@15115 10117:S11|66696c654e616d65546167 10118:O3|@10120,@10121,@10119 10119:O2|@14738,@15130 10120:O2|@14736,@15130 10121:O2|@14737,@15130 10122:S17|62696e64696e67436f756e746572546167 10123:O3|@10125,@10126,@10124 10124:O2|@14741,@15118 10125:O2|@14739,@15118 10126:O2|@14740,@15118 10127:S16|6d6178496e6c696e6553697a65546167 10128:O3|@10130,@10131,@10129 10129:O2|@14744,@15127 10130:O2|@14742,@15127 10131:O2|@14743,@15127 10132:S15|617373656d626c79436f6465546167 10133:O3|@10135,@10136,@10134 10134:O2|@14747,@15123 10135:O2|@14745,@15123 10136:O2|@14746,@15123 10137:S12|706172736574726565546167 10138:O3|@10140,@10141,@10139 10139:O2|@14750,@15124 10140:O2|@14748,@15124 10141:O2|@14749,@15124 10142:S11|636f646574726565546167 10143:O3|@10145,@10146,@10144 10144:O2|@14753,@15126 10145:O2|@14751,@15126 10146:O2|@14752,@15126 10147:S8|69636f6465546167 10148:O3|@10150,@10151,@10149 10149:O2|@14756,@15133 10150:O2|@14754,@15133 10151:O2|@14755,@15133 10152:S19|6c6f776c6576656c4f7074696d697365546167 10153:O3|@10155,@10156,@10154 10154:O2|@14759,@15125 10155:O2|@14757,@15125 10156:O2|@14758,@15125 10157:S19|636f64657472656541667465724f7074546167 10158:O3|@10160,@10161,@10159 10159:O2|@14762,@15131 10160:O2|@14760,@15131 10161:O2|@14761,@15131 10162:S17|696e6c696e6546756e63746f7273546167 10163:O3|@10165,@10166,@10164 10164:O2|@14765,@15136 10165:O2|@14763,@15136 10166:O2|@14764,@15136 10167:S8|6465627567546167 10168:O3|@10170,@10171,@10169 10169:O2|@14768,@15122 10170:O2|@14766,@15122 10171:O2|@14767,@15122 10172:S16|7072696e74446570746846756e546167 10173:O3|@10175,@10176,@10174 10174:O2|@14771,@15134 10175:O2|@14769,@15134 10176:O2|@14770,@15134 10177:S13|6572726f724465707468546167 10178:O3|@10180,@10181,@10179 10179:O2|@14774,@15135 10180:O2|@14772,@15135 10181:O2|@14773,@15135 10182:S13|6c696e654c656e677468546167 10183:O3|@10185,@10186,@10184 10184:O2|@14777,@15132 10185:O2|@14775,@15132 10186:O2|@14776,@15132 10187:S20|70726f66696c65416c6c6f636174696f6e546167 10188:O2|@10189,0 10189:O3|2,@8075,@1869 10190:O3|@10192,@10193,@10191 10191:O2|@14780,@15121 10192:O2|@14778,@15121 10193:O2|@14779,@15121 10194:S14|7072696e744f7574707574546167 10195:O3|@10197,@10198,@10196 10196:O2|@14783,@15128 10197:O2|@14781,@15128 10198:O2|@14782,@15128 10199:S17|636f6d70696c65724f7574707574546167 10200:O3|@10202,@10203,@10201 10201:O2|@14786,@15116 10202:O2|@14784,@15116 10203:O2|@14785,@15116 10204:S19|6572726f724d65737361676550726f63546167 10205:O3|@10207,@10208,@10206 10206:O2|@14789,@15265 10207:O2|@14787,@15265 10208:O2|@14788,@15265 10209:S11|726f6f7454726565546167 10210:O3|@10212,@10213,@10211 10211:O2|@14792,@15119 10212:O2|@14790,@15119 10213:O2|@14791,@15119 10214:S24|7265706f7274556e7265666572656e636564496473546167 10215:O3|@10217,@10218,@10216 10216:O2|@14795,@15120 10217:O2|@14793,@15120 10218:O2|@14794,@15120 10219:S27|7265706f72744578686175737469766548616e646c657273546167 10220:O3|@10222,@10223,@10221 10221:O2|@14798,@15137 10222:O2|@14796,@15137 10223:O2|@14797,@15137 10224:S27|6e6172726f774f7665726c6f6164466c65785265636f7264546167 10225:O3|@10227,@10228,@10226 10226:O2|@14801,@15138 10227:O2|@14799,@15138 10228:O2|@14800,@15138 10229:S23|6372656174655072696e7446756e6374696f6e73546167 10230:O3|@10232,@10233,@10231 10231:O2|@14804,@15139 10232:O2|@14802,@15139 10233:O2|@14803,@15139 10234:S24|7265706f727444697363617264656456616c756573546167 10235:O3|@10237,@10236,@1868 10236:S13|352e372e312052656c65617365 10237:S15|636f6d70696c657256657273696f6e 10238:O1|@14805 10239:S8|436f646554726565 10240:S16|506f6c794d4c2e436f6465547265652e 10241:S8|636f646574726565 10242:S11|636f646542696e64696e67 10243:O1|@14806 10244:S21|434f44455452454528292e6d6b436f6e7374283129 10245:S10|6d6b436f6e7374616e74 10246:O2|@14807,@5100 10247:S21|434f44455452454528292e67656e436f6465283129 10248:S7|67656e436f6465 10249:O1|@14808 10250:S30|434f4445545245455f46554e4354494f4e5328292e6576616c7565283129 10251:S6|6576616c7565 10252:O1|@14809 10253:S41|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65466e283129 10254:S10|6d6b46756e6374696f6e 10255:O1|@14811 10256:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65496e6c696e65466e283129 10257:S16|6d6b496e6c696e6546756e6374696f6e 10258:O1|@14815 10259:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c6543616c6c283129 10260:S6|6d6b43616c6c 10261:O1|@14817 10262:S11|6d6b4c6f61644c6f63616c 10263:O1|@14818 10264:S14|6d6b4c6f6164417267756d656e74 10265:O1|@14819 10266:S13|6d6b4c6f6164436c6f73757265 10267:O1|@14820 10268:S19|434f44455452454528292e6d6b446563283129 10269:S5|6d6b446563 10270:O1|@14821 10271:S37|434f4445545245455f46554e4354494f4e5328292e6d6b496e646972656374283129283129 10272:S5|6d6b496e64 10273:O1|@14822 10274:S4|6d6b4966 10275:O1|@14823 10276:S21|434f44455452454528292e6d6b5768696c65283129 10277:S7|6d6b5768696c65 10278:O1|@14824 10279:S20|434f44455452454528292e6d6b4c6f6f70283129 10280:S6|6d6b4c6f6f70 10281:O1|@14826 10282:S25|434f44455452454528292e6d6b426567696e4c6f6f70283129 10283:S11|6d6b426567696e4c6f6f70 10284:O1|@14828 10285:S29|434f4445545245455f46554e4354494f4e5328292e6d6b456e76283129 10286:S5|6d6b456e76 10287:O1|@14829 10288:S26|434f44455452454528292e6d6b4d757475616c44656373283129 10289:S12|6d6b4d757475616c44656373 10290:O1|@14830 10291:S35|434f4445545245455f46554e4354494f4e5328292e6d6b5265636f7264283129283129 10292:S7|6d6b5475706c65 10293:O1|@14831 10294:S7|6d6b5261697365 10295:O1|@14832 10296:S22|434f44455452454528292e6d6b48616e646c65283129 10297:S8|6d6b48616e646c65 10298:O1|@14833 10299:S9|6d6b4e756c6c446563 10300:O1|@14834 10301:S24|5354525543545f56414c5328292e76616c4e616d65283129 10302:S4|6e616d65 10303:O1|@14835 10304:S41|56414c55455f4f505328292e7072696e7456616c7565466f72547970652833296d6b41646472283129 10305:O1|@14838 10306:S46|56414c55455f4f505328292e7072696e7456616c7565466f725479706528332964756d6d7954797065732d283129 10307:S44|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329706f6c79436f64652d283129 10308:S26|56414c55455f4f505328292e7072696e7456616c756573283129 10309:S32|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329 10310:O1|@14841 10311:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6554797065456e76283229283129 10312:O2|@10314,@10313 10313:O1|@14845 10314:O1|@14844 10315:O2|@1358,0 10316:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617956616c756573283129 10317:S28|56414c55455f4f505328292e646973706c617956616c756573283429 10318:S13|7072696e745769746854797065 10319:O1|@14848 10320:O2|@10322,@10321 10321:O1|@14852 10322:O1|@14851 10323:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065457870283129 10324:S9|7072696e7454797065 10325:O1|@14853 10326:S26|5354525543545f56414c5328292e76616c547970654f66283129 10327:S6|747970656f66 10328:O1|@14854 10329:O4|103,@663,@10331,@10330 10330:O5|@9338,1651,0,1651,0 10331:S18|4e6f74206120676c6f62616c2076616c7565 10332:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7256616c7565283129 10333:S4|636f6465 10334:O1|@14855 10335:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7256616c7565283129 10336:S10|70726f70657274696573 10337:O1|@14856 10338:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973436f6e7374727563746f72283129 10339:S13|6973436f6e7374727563746f72 10340:O1|@14857 10341:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973457863657074696f6e283129 10342:S11|6973457863657074696f6e 10343:O1|@14858 10344:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7254797065283129 10345:O1|@14859 10346:O2|@10348,@10347 10347:O1|@14863 10348:O1|@14862 10349:S58|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065436f6e737472283129 10350:O1|@14864 10351:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7254797065436f6e737472283129 10352:O1|@14865 10353:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72537472756374283129 10354:O1|@14866 10355:O2|@10357,@10356 10356:O1|@14871 10357:O1|@14870 10358:O2|@1021,@10315 10359:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283129 10360:S41|56414c55455f4f505328292e646973706c6179536967283529636f6d706f73697465456e762d283129 10361:O2|@866,@1020 10362:O1|@14877 10363:S36|56414c55455f4f505328292e646973706c61795369672835296f72646572283129283129 10364:S33|56414c55455f4f505328292e646973706c61795369672835296f72646572283129 10365:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283329 10366:O1|@14872 10367:S25|56414c55455f4f505328292e646973706c6179536967283529 10368:S39|56414c55455f4f505328292e646973706c6179536967283529646973706c617953706563283229 10369:O1|@14882 10370:O4|103,@663,@10372,@10371 10371:O5|@9338,1709,0,1709,0 10372:S22|4e6f74206120676c6f62616c20737472756374757265 10373:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f72537472756374283129 10374:O1|@14883 10375:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72537472756374283129 10376:O1|@14884 10377:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757056616c283129 10378:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757054797065283129 10379:S66|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b7570537472756374283129 10380:O1|@14890 10381:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c56616c756573283129 10382:O1|@14893 10383:S62|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c5479706573283129 10384:O1|@14896 10385:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c53747275637473283129 10386:O1|@14898 10387:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229283129 10388:O1|@14899 10389:O1|@14900 10390:O1|@14901 10391:O4|103,@663,@10393,@10392 10392:O5|@9338,1750,0,1750,0 10393:S37|7570646174696e67206120737472756374757265206973206e6f7420706f737369626c652e 10394:S67|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229656e74657246756e6374696f6e283129 10395:O1|@14902 10396:O1|@14903 10397:O1|@14904 10398:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283129 10399:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229 10400:S8|636f6e74656e7473 10401:O1|@14905 10402:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72536967283129 10403:O1|@14906 10404:O2|@10406,@10405 10405:O1|@14910 10406:O1|@14909 10407:S52|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953696773283129 10408:O1|@14911 10409:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72536967283129 10410:O1|@14912 10411:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7246756e63746f72283129 10412:O1|@14913 10413:O2|@10415,@10414 10414:O1|@14917 10415:O1|@14916 10416:O2|@1021,@10417 10417:O2|@10418,@1019 10418:O2|3,@10419 10419:S2|293a 10420:S40|56414c55455f4f505328292e646973706c617946756e63746f7273283329617267456e762d283129 10421:O2|@866,@10422 10422:O2|@1022,0 10423:S56|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617946756e63746f7273283129 10424:S30|56414c55455f4f505328292e646973706c617946756e63746f7273283329 10425:O1|@14923 10426:O4|103,@663,@10428,@10427 10427:O5|@9338,1817,0,1817,0 10428:S20|4e6f74206120676c6f62616c2066756e63746f72 10429:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7246756e6374283129 10430:O1|@14924 10431:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7246756e63746f72283129 10432:O1|@14925 10433:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72466978283129 10434:O1|@14926 10435:S31|56414c55455f4f505328292e646973706c6179466978537461747573283129 10436:O1|@14960 10437:S23|4d414b455f28292e67456e764173456e76283129283129 10438:S30|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229 10439:O1|@14995 10440:O1|@14998 10441:O1|@15001 10442:O1|@15004 10443:O1|@15007 10444:O1|@15010 10445:S26|4d414b455f28292e67456e7641734e616d655370616365283229 10446:S5|656e746572 10447:S6|6c6f6f6b7570 10448:S3|616c6c 10449:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296372656174654669656c6473283229 10450:S23|434f44455452454528292e6d6b556e617279466e283129 10451:S24|434f44455452454528292e6d6b42696e617279466e283129 10452:O2|@10453,0 10453:O3|20,@7700,0 10454:O4|5,@10456,@10455,@1263 10455:O3|21,@7678,5 10456:O3|21,@7674,5 10457:S27|434f44455452454528292e6d6b417262697472617279466e283129 10458:O2|@10460,@10459 10459:O2|@10463,@10462 10460:O2|@10461,1 10461:S9|496e74657272757074 10462:O2|@10466,@10465 10463:O2|@10464,4 10464:S4|53697a65 10465:O2|@10468,@10467 10466:O2|@8508,100 10467:O2|@10470,@10469 10468:O2|@5106,7 10469:O2|@10472,@10471 10470:O2|@8273,101 10471:O2|@10474,0 10472:O2|@10473,5 10473:S8|4f766572666c6f77 10474:O2|@10475,11 10475:S9|537562736372697074 10476:S8|72756e5f63616c6c 10477:O2|@7009,0 10478:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c656457697468436f6e7461696e6572283329 10479:S7|72747343616c6c 10480:S50|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c6564283229 10481:S20|4d414b455f28292e67456e764173456e76283129 10482:S20|506f6c794d4c2e72756e4f6e456e747279283129 10483:D15,848|483b65187305ff5558cd0149be0800110a00000000498b06ff15a2030000ff75084c8d35ae000000415648896508ff75084c8d358b00000041564889650849c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff484d892e415648c7c015000000ff15410300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408415648c7c00300000048c7c301000000ff15f50200004989c6e959010000488b65084883c408415e4c897508e9ad000000488b65084883c408415e4c89750849c7c6030000004156ff75084c8d352900000041564889650848c7c02700000048c7c301000000ff15970200004889c24883c408415e4c897508eb22488b65084883c408415e4c897508488b0424ff156802000048ba604f620800000000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e96affffffff75084c8d352900000041564889650848c7c02700000048c7c301000000ff15f10100004889c24883c408415e4c897508eb25488b65084883c408415e4c89750848c7c003000000ff15bf01000048baa04f620800000000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e967ffffff41f6c60175604d8b1e4d8b6e084c3b1d580100007502eb344d8b234e8d2465010000004983fc1b752c49bcb04f620800000000498d7308498d7c240848c7c10d000000483bc9f3a67402eb0948c7c303000000eb184d89ee483b65187306ff5558ca0040eb9a48c7c301000000488b0424ff15ed000000488b0424ff15db0000004889c2488d64240848b8d04f620800000000ff12ff75084c8d352900000041564889650848c7c02700000048c7c301000000ff159b0000004889c24883c408415e4c897508eb25488b65084883c408415e4c89750848c7c001000000ff156900000048ba2050620800000000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e967fffffff40000000000|@619,1,@15393,@10575,@10576,@10577,@14553,@614,@10575,@10576,@10575,@10576,@14721,@11013,@10574|13,0,@15092 314,0,@611 467,0,@613 583,0,@614 679,0,@615 769,0,@618 10484:D3,32|483b65187305ff5558cd054c8b720849c7060100000048c7c001000000c3f400|@57,1,@15301| 10485:D7,224|483b65187305ff5558cd0552ff75084c8d35620000004156488965086a016a0148c7c00100000048c7c30100000049c7c0010000004989e1ff15d20000005b415e4983f6fe4983e605490bde4c8b742410498b460849c7c001000000ff15a600000048c7c0010000004883c408415e4c8975084883c408c3488b65084883c408415e4c8975084c8b304983fe197543488d64240849be1800b60300000000498b0648bb4805620800000000ff154f00000049be1800b60300000000498b064c8b402048bb7805620800000000ff2526000000488d642408488b5d08ff23f40000|@479,1,@15328,@10512,@10517,@10525,@10511|150,0,@1 163,0,@92 179,0,@1 196,0,@93 10486:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c03b000000ff22f400|@69,1,@15303| 10487:D3,80|49bb0800b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15304|2,0,@14 10488:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c00f000000ff22f400|@69,1,@15305| 10489:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104d8b6d084983fc017c4d4983fb017c374d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c017000000ff2248b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23f400000000000000|@80,1,@15306|98,0,@76 114,0,@76 10490:D3,80|49bb3000b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15307|2,0,@15 10491:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104983fc017c514983fb017c3b4983c4104d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c017000000ff2248b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23f400000000000000|@83,1,@15308|98,0,@76 114,0,@76 10492:D3,64|483b65187305ff5558cd054989d6498b5608498b5e1048c7c03900000049c7c001000000ff124989c64983fe017e0848c7c003000000c348c7c001000000c3f4|@69,1,@15309| 10493:D3,80|49bb5800b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15310|2,0,@16 10494:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@89,1,@15311| 10495:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@91,1,@15312| 10496:D4,808|483b65187305ff5558cd014c8b700841ff364c8b681041ff7500ff304c8b6424104983fc01750d488d64241848c7c001000000c34d8b6d3841f6c501751241ff750049c706010000006a01e993000000488d6424084d8d77e04c3b75107303ff55504d89f749c746f80300000049bd88056208000000004d896e1049bda0056208000000004d896e084c8b2c244d892e488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdf0056208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff23ff75084c8d353b010000415648896508488b5424184c8b6c24304c2b6c2410711048b8d006620800000000488b5d08ff234983c5014c8b6424204d8b14244c8b7424104d89f34983fe010f8ce50000004983fd010f8ccb0000004d89db4d89de4f8d5c2bff4d3bda0f87a7000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084d89f64c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64242848b8d006620800000000488b5d08ff234c3b642420750d488d64242848c7c001000000c34d89f64983ee014d03ee7115488d64242848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e9ebfeffff48b8b832620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2df7000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48336208000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd88056208000000004d896e10498946084c8b6c24304d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb88336208000000004c8958184c8960104c8968084c8930488b5d08ff23f4|@473,1,@15327,@15097|111,0,@94 125,0,@95 178,0,@97 196,0,@99 210,0,@15097 262,0,@105 419,0,@105 472,0,@105 506,0,@467 522,0,@76 538,0,@76 622,0,@470 685,0,@94 711,0,@15097 721,0,@99 778,0,@472 10497:D3,1064|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bd8806620800000000e9860300004d89ed4d8b75004d8b76084d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be6800110a00000000498b16ff124989c641564c8b6c24084d8b75084d89f44983fe037d0f49be8806620800000000e9240200004d89ed4d8b75004d8b76104d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24104d8b75004d8b364d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca0316208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50306208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8316208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50306208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18326208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70306208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50306208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50326208000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80326208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@15326|36,0,@102 76,0,@105 126,0,@15098 164,0,@102 204,0,@105 254,0,@15099 304,0,@105 354,0,@15099 399,0,@456 448,0,@444 492,0,@459 537,0,@444 581,0,@445 669,0,@444 714,0,@461 758,0,@444 803,0,@445 891,0,@444 935,0,@463 984,0,@465 10498:D4,32|483b65187305ff5558cd014c8b4008488b0048c7c301000000ff2519000000f4|@122,1,@15323,@10499| 10499:D10,2944|483b65187306ff5558ca09014c8b284d89ebff70084c8b70104d89f441f6c5010f84e30900004d89dd4d89ee4983fd050f8518030000488d64240841544983f8037f14488d64240848b82007620800000000e9300200004983e80241507115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bd5007620800000000e9880100004c8b7424084d8b364d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424104d8b6e084c8b6424084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b8882f620800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20306208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70306208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0306208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000ff153b0900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8306208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe150f85420100004983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be7800110a00000000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15e30700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd190f85420100004983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be7800110a00000000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff158c0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe2f0f85420100004983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be7800110a00000000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15350500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4981fdcf0000000f85420100004983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be7800110a00000000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15db0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe110f85450100004d89e64983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00414989c748c740f8020000004c8940084c893049be7800110a00000000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15840200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c70007000000c34d8b6d0041f6c5010f8539010000498b55004983e8027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04414989c748c740f8020000004c8940084c8930ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15080100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c70007000000c3f40000|@454,1,@15324,@10510,@10510,@10510,@10510,@10510,@10510,@10510|74,0,@108 102,0,@105 136,0,@110 173,0,@105 223,0,@15099 268,0,@105 320,0,@15101 333,0,@437 389,0,@442 437,0,@444 482,0,@445 574,0,@447 727,0,@448 772,0,@449 872,0,@105 922,0,@15099 1063,0,@448 1207,0,@105 1257,0,@15099 1398,0,@448 1542,0,@105 1592,0,@15099 1733,0,@448 1880,0,@105 1930,0,@15099 2071,0,@448 2215,0,@105 2265,0,@15099 2406,0,@448 2600,0,@105 2778,0,@448 10500:D5,168|483b65187305ff5558cd05488b00488b5a08ff15b00000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8076208000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee0076208000000004c8930ff15470000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000|@122,1,@15313,@10502,@10501|56,0,@115 104,0,@116 10501:D3,552|483b65187305ff5558cd0950534c8b7424084d8b364e8d34750100000041566a016a014c8b2c244d89ee4c3b6c24100f85cd000000488d642408415e4983fe010f8ca70000004c3b34247507488d64241058c34c89f04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1da4010000775a4d89dc4e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00484d89ef49d1ec4d8965f841c645ff4141554983eb024c8b24244d89e54bc7449cfc0000000049d1ee4d89ed4d8975006a116a01e9a3000000488d64241848b8f807620800000000488b5d08ff23488d64241848b86808620800000000488b5d08ff234d89f64d89f54983c6024156488b5424204d89ed4983c51049d1ed4c8b7424284f0fb6342e4a8d047501000000ff124989c64d8b364e8d3475010000004983ee014c8b6c24104d03ee7115488d64243048b8d006620800000000488b5d08ff23415c4c8924244c896c2408483b65187303ff5558e9a8feffff4c8b34244d89f54c3b742418751a488d6424104c8b34244c89f0418066ffbf4889c0488d642420c3488b5424204d89ed4983c51049d1ed4c8b7424284f0fb6342e4a8d047501000000ff124989c64d8b2e4e8d2c6d010000004c89e9498d76084c8b5c24084d89de49d1eb4c8b6424104b8d3c1c48d1e9f3a44c8b24244983c4024d89f64f8d6c2eff4c8924244c896c2408483b65187303ff5558e960fffffff400000000ffffffffffffff01|@125,1,@15315|223,0,@117 244,0,@120 340,0,@105 10502:D3,400|483b65187305ff5558cd014989c541f6c501751b498b45004d8b75084983fe017501c34d89ec49c7c601000000eb0b48b8d808620800000000c341f6c40175414d8b14244d8b5c24084d8b124e8d1455010000004983ea014d03d6711048b8d006620800000000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebb94983fe01750b48b8d808620800000000c34983fe010f8c870000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c3000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2341f6c50175424d8b55004d8b5d084d8b224e8d2465010000004c89e1498d72084d89f249d1ea4a8d3c1048d1e9f3a44f8d6426ff4d89dd4d89e6483b65187306ff5558ca0160ebb88060ffbfc3f400000000000000ffffffffffffff01|@124,1,@15314|49,0,@123 95,0,@105 137,0,@123 277,0,@117 293,0,@120 10503:D4,712|483b65187305ff5558cd054881f8b9000000750b48b83811620800000000c34883f845750b48b85011620800000000c34883f843720e4881f8fd0000007705e9650200004883f8410f845b0200004883f80f750b48b86811620800000000c34883f811750b48b88011620800000000c34883f813750b48b89811620800000000c34883f815750b48b8b011620800000000c34883f817750b48b8c811620800000000c34883f819750b48b8e011620800000000c34883f81b750b48b8f811620800000000c34883f8410f83080100004989c54981c580000000711048b8d006620800000000488b5d08ff234983fd017d05e9d10000004981fdff0100000f8fc40000004c8b72084f8b74aefc4d8b2e4a8d0c6d010000004883f901750b48b81012620800000000c34989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2568010000775d4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640085cc640095e498d7608488d780a48d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b82812620800000000488b5d08ff234c8b4a0848c7c30700000049c7c015000000ff15f10000004989c64d8b2e4a8d0c6d010000004883f901750b48b8c012620800000000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640085c498d7608488d780948d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234c8b7208498b4486fcc3f400000000ffffffffffffff01ffffffffffffff01|@152,1,@15316,@10504|22,0,@127 39,0,@128 86,0,@129 103,0,@130 120,0,@131 137,0,@132 154,0,@133 171,0,@134 188,0,@135 221,0,@105 287,0,@136 441,0,@117 457,0,@137 517,0,@141 667,0,@117 10504:D3,872|483b65187306ff5558ca090350415041514883fb017510488d64241848b8d808620800000000c34883eb027115488d64241848b8d006620800000000488b5d08ff234c8b6c24084d89ee4983fd017515488d64241848b8d812620800000000488b5d08ff234d89f64d89f54983feff75234c8b7424104c3b35e30200007515488d64241848b87013620800000000488b5d08ff23488b4424104d89ee48d1f849d1fe489949f7fe4c8d3445010000004d89ed4d89ec4983fd017515488d64241848b8e013620800000000488b5d08ff23488b4424104d89e548d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb6a4983fd017d0949c7c503000000eb0749c7c5010000004d89e44983fc017d0949c7c403000000eb0749c7c4010000004d3bec750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64241848b8d006620800000000488b5d08ff23eb034c89f04c8b4424084c8b0c24e892feffff4989c34c8b7424084d89f24983fe017515488d64241848b8e013620800000000488b5d08ff23488b4424104d89d648d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb5a4983fd017d0949c7c403000000eb0749c7c4010000004d89d24d89d64983fa017d0949c7c203000000eb0749c7c2010000004d3be27502eb214d89f64983ee014d03ee7115488d64241848b8d006620800000000488b5d08ff234983c5607115488d64241848b8d006620800000000488b5d08ff234983fd017d0a488d642418e9040100004981fdff0100000f8ff20000004c8b34244f8b6caefc488d6424084d8b334e8d3475010000004d8b65004e8d2465010000004983fe017509488d6424104c89e8c3488d6424104983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d97000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff23488d64241848b82812620800000000488b5d08ff23f4ffffffffffffff010100000000000080|@153,1,@15317|30,0,@123 52,0,@105 87,0,@142 134,0,@146 194,0,@149 333,0,@105 390,0,@149 522,0,@105 549,0,@105 820,0,@117 841,0,@137 10505:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be002a9109000000004c8930c3f400000000|@436,1,@15319|47,0,@10506 10506:D6,688|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8a82c620800000000c34c8b284d89ee4983fd01750b48b8d82c620800000000c34d89e54983fc037d0b48b8a82c620800000000c34c8b6208498b5424084d8b364983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd02d6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be002e6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd502e6208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be802e6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda02e6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@434,1,@15318,@435,@433,@427|26,0,@411 49,0,@413 69,0,@411 98,0,@105 318,0,@421 366,0,@423 411,0,@426 562,0,@428 607,0,@429 10507:D3,32|483b65187305ff5558cd0149bea800110a00000000498b16ff22f40000000000|@441,1,@15322|13,0,@15102 10508:D4,64|483b65187305ff5558cd01488b00ff15440000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400|@122,1,@15320,@10509| 10509:D3,72|49bb8000b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@440,1,@15321|2,0,@17 10510:D6,720|483b65187305ff5558cd014c8b304983fe010f85b20200004c8b682041f6c5010f850d0200004d8b75004d8b6d084983fd017501c34d8b2e4983fd070f855a0100004d8b6e084c3b2dab0200007502eb374d8b75004d89f44e8d3475010000004983fe03752349be381d620800000000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34c3b2d600200007502eb344d89e64e8d2465010000004983fc03752449bc3820620800000000498d7508498d7c240848c7c101000000483bc9f3a67402eb01c34c3b2d180200007502eb304e8d3475010000004983fe03752349be7018620800000000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3c3f400000000|@455,1,@15325,@195,@278,@246|104,0,@246 167,0,@278 228,0,@195 289,0,@451 338,0,@453 440,0,@451 489,0,@453 591,0,@451 640,0,@453 10511:D3,272|483b65187306ff5558ca09034989c441f6c4010f85e70000004d8b3424498b4424084d8b1e4d89dd4983fb0575114989c4483b65187306ff5558ca0813ebd04983fd0375614d8b76084983fe03750949c7c60d000000eb254983fe01750949c7c609000000eb164983fe07750949c7c605000000eb0749c7c601000000490bde4d89c64983e60d4983fe01741048b8e833620800000000488b5d08ff234983c80de95affffff4d8b76084983fe0175264d89c64983e6034983fe01741048b8e833620800000000488b5d08ff234983c803e92affffff4883cb034d89c64983e6034983fe01741048b8e833620800000000488b5d08ff234983c803e900ffffff4989194d89410848c7c001000000c3f4|@506,1,@15343|143,0,@474 191,0,@474 233,0,@474 10512:D9,848|483b65187306ff5558ca0901505341504c8b753841ff76084c8b2c244d89ee4983e50d4983fd017502eb134c8b6d384d89f64983e6f34983ce094d89750849c7c6010000004c8b6c24084d8b65004983fc037502eb0d4981fe419c00000f85ba02000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe010f8585020000ff75084c8d3524000000415648896508488b542420488b442428ff124989c64883c408415d4c896d08e98f010000488b65084883c408415e4c8975085049c7c5020000004c8b6424104d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff159b0200004c8b65384c8b6c24084d89ee4d896c24084d89f64983e6094983fe0975184c8b75384d8b76184983fe017408ff1561020000eb00eb004c8b24244d8b6c241841f6c50175634d8b75004d8b55084d8b45104d8b5d184d8b4d204d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85050100004d8b364d8b16498b7e084d8b4e10498b76184d8b46204d89e44d8b34244d89e44d8b6c24084d89e44d8b642410488d6424084d8d5fd04c3b5d107306ff5550cac0774d89df49c743f8050000004989732049897b184d8943104d894b084d8913498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930ff15420100004989c6415649c7c5020000004c8b6424104d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15010100004c8b65384c8b6c24084d89ee4d896c24084d89f64983e6094983fe0975184c8b75384d8b76184983fe017408ff15c7000000eb00eb00584883c420c34d89e44d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbf0346208000000004c8958184c8960104c8968084c8930488b5d08ff23ff1559000000483b65187303ff5558e921fdffff4d89f54983c5027115488d64242048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e9f6fcfffff4|@482,1,@15329,@10514,@10515,@10513,@10516,@10515,@10513|748,0,@480 813,0,@105 10513:D3,72|49bba800b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@486,1,@15333|2,0,@18 10514:D3,72|49bbd000b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@483,1,@15330|2,0,@19 10515:D3,72|49bbf800b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d3841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400000000|@484,1,@15331|2,0,@20 10516:D3,24|483b65187305ff5558cd01488b5d08ff23f4000000000000|@485,1,@15332| 10517:D8,1000|483b65187305ff5558cd095053488b4424084c8b70284d8b364983fe0375144c8b34244d8b364e8d347501000000e9830000004c8b2c244d8b75004e8d2475010000004d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d89661049c74608010000004d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bed03b9109000000004c89334889c04c8b40204889c0488d642408ff256a0300004983fe01750949c7c601000000eb7f4d89f44983ec027115488d64241048b8d006620800000000488b5d08ff234983fc017d0a488d642410e9df0200004c8b2c244d8b5d004e8d1c5d010000004d3be37c0949c7c303000000eb0749c7c3010000004983fb030f84ab0200004983c41049d1ec4d89ed4f0fb66c25004e8d2c6d010000004983fd150f855702000041564c8b34244d89f44983fe010f8589000000488d6424084c8b2c244d8b75004e8d2475010000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049c74608010000004d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be50499109000000004c8933488b04244c8b40204889c0488d642408ff25380200004c8b6c24084d8b75004e8d1c75010000004d89e44d89e64983fc010f8c850100004d89f64d89f44d3bf30f87610100004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d89661049c74608010000004d89ed4d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be98499109000000004c8933488b4424104c8b4020ff1595010000488b4424104c8b402048bb7805620800000000ff15740100004c8b34244d89f44983fe010f8cb70000004c8b6c24084d8b75004e8d1c75010000004d89e44d89e64d3be30f87820000004d89f44d2bde4983c3014d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89e44d896608488d6424084d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee0499109000000004c8933488b04244c8b40204889c0488d642408ff25b9000000488d64241848b85038620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d64241848b8b832620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff234d89f54983ed027115488d64241048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e9e9fcffff488d64241048b8a838620800000000488b5d08ff23f40000000000|@504,1,@15341,@10512,@10512,@10512,@10512,@10512|150,0,@10518 213,0,@105 447,0,@10522 609,0,@10523 646,0,@93 806,0,@10524 846,0,@500 867,0,@76 888,0,@467 909,0,@76 939,0,@105 980,0,@502 10518:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@493,1,@15334,@10519| 10519:D7,1368|483b65187305ff5558cd09504c8b2c244d8b75104d8b264d89ed4d8b75184d8b364983fe030f858d000000488d6424084d8d77e04c3b75107306ff5550ca00104d89f749c746f80300000049bd08366208000000004d896e1049bd20366208000000004d896e084d8926498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd68366208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff234d89ed4d89ee41ff75004d89f64c89f041ff76084889c04c8b6828ff33ff7308ff73104c8b7424204d8b264c89e74c8b14244d89d34d3bd47e22ff1590040000488b442428488b5c24104c8b4424084159488d642428ff256c0400004d8b6d004983fd05751b4889c0488b5c24104c8b4424084d89d9488d642430ff253f0400004c8b6c24184d8b4d004d89ca4d89e04d2bc17115488d64243048b8d006620800000000488b5d08ff234983c0014d89db4d89d94d3bd80f8d410100004d89ed4c8b5c24104d8b234a8d3465010000004c8b4424084d89c44983f8010f8c070100004d89c94c89ca4983f9010f8ce20000004d89e44d89e14889d24989d04d8d6414ff4c3be60f87b30000004d89f64d89f64d8b76084983fa010f8c8a0000004d89c04d89c44f8d4402ff4c3bc77615488d64243048b89836620800000000488b5d08ff234d89c94983c1104c89e149d1e94d89db4b8d340b49d1ea4b8d3c1648d1e9f3a44d89ed4d8b75004d89e44983ec01488d6424184d03f47115488d64241848b8d006620800000000488b5d08ff234d89ed4d897500488d64240848c7c0010000004883c410c3488d64243048b8e002620800000000488b5d08ff23488d64243048b8b832620800000000488b5d08ff23488d64243048b8e002620800000000488b5d08ff23488d64243048b8e002620800000000488b5d08ff234d89ed4d89d34d2be27115488d64243048b8d006620800000000488b5d08ff234983c40141544d89ed4c8b5424184d8b224a8d3465010000004c8b4c24104d89cc4983f9010f8c3d0200004c8b0c244c89ca4983f9010f8c170200004d89e44d89e14889d24989d04d8d6414ff4c3be60f87e80100004d89f64d89f64d8b76084983fb010f8cbf0100004d89c04d89c44f8d4403ff4c3bc77615488d64243848b89836620800000000488b5d08ff234d89c94983c1104c89e149d1e94d89d24b8d340a49d1eb4b8d3c1e48d1e9f3a44d89ed4d8b75004d89e44983ec014d03f47115488d64243848b8d006620800000000488b5d08ff234d89ed4d897500ff15b60100004c8b34244d89f44983ee014c8b5c24104d03de7115488d64243848b8d006620800000000488b5d08ff23488b4c24084989ce4d89e5492bcc7115488d64243848b8d006620800000000488b5d08ff234883c1014c8b6424184d8b14244e8d0c55010000004983fb010f8cc20000004883f9010f8ca30000004d8d540bff4d3bd10f87800000004c8b4c24284d8b114d89c9498b7908493bca7615488d64243848b89836620800000000488b5d08ff234983c31049d1eb4d89e44b8d341c48d1e9f3a44d89f64d2bf5488d6424107115488d64242848b8d006620800000000488b5d08ff23488d6424104983c6014c8b2c244d897500488d64240848c7c0010000004883c410c3488d64243848b8b832620800000000488b5d08ff23488d64243848b8e002620800000000488b5d08ff23488d64243848b8e002620800000000488b5d08ff23488d64243848b8e002620800000000488b5d08ff23488d64243848b8b832620800000000488b5d08ff23488d64243848b8e002620800000000488b5d08ff23488d64243848b8e002620800000000488b5d08ff23f400000000|@496,1,@15335,@10496,@10520,@10520,@10496|77,0,@487 91,0,@488 135,0,@490 153,0,@99 167,0,@15097 340,0,@105 495,0,@491 572,0,@105 617,0,@76 638,0,@467 659,0,@76 680,0,@76 712,0,@105 855,0,@491 927,0,@105 982,0,@105 1019,0,@105 1115,0,@491 1168,0,@105 1223,0,@467 1244,0,@76 1265,0,@76 1286,0,@76 1307,0,@467 1328,0,@76 1349,0,@76 10520:D5,1016|483b65187306ff5558ca090353415041514c8b70104d8b6e4041f6c501750e41ff750041ff366a01e9640100004d8b6e3841f6c50175534d8b6d004d8b3649c7c3050000004e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00604d89e749d1eb4d895c24f841c64424ff4149c74424080000000049c7c301000000e990000000488d6424184d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc08366208000000004d89661049bca0056208000000004d8966084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd28376208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff234983fb15724e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703150000005b415841594d89e24d89dc4d89f341544153ff74241048c7c0010000004c896c2418ff25aa0200004d89da49d1ea43c60414204d89da4983c2024d89d3483b65187306ff5558ca0078eb89ff75084c8d3556010000415648896508488b5424204c8b6c24304983ed014c8b7424104d89f44d03f5711048b8d006620800000000488b5d08ff234c8b6c24284d2bec711048b8d006620800000000488b5d08ff234983c5014c8b6424384d8b1c244e8d145d010000004983fe010f8cdc0000004983fd010f8cc20000004f8d5c2eff4d3bda0f87a4000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64243048b8d006620800000000488b5d08ff234c3b642418750d488d64243048c7c001000000c34d89f64983ee014d03ee7115488d64243048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e9d0feffff48b8b832620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2dfe000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48336208000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd08366208000000004d896e10498946084c8b6c24204d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb58376208000000004c8958184c8960104c8968084c8930488b5d08ff23f400000000000000|@498,1,@15336,@15097,@10521|175,0,@487 189,0,@95 233,0,@494 251,0,@99 265,0,@15097 446,0,@105 472,0,@105 620,0,@105 673,0,@105 707,0,@467 723,0,@76 739,0,@76 823,0,@470 886,0,@487 912,0,@15097 922,0,@99 979,0,@495 10521:D4,824|483b65187306ff5558ca090750534150415141524c8b7424184c2b7424207115488d64242848b8d006620800000000488b5d08ff234983c6014983fe157d02eb0749c7c6150000004c8b6c24104983ed014c8b6424204d03e57115488d64242848b8d006620800000000488b5d08ff234c8b6c24084d8b5d004e8d145d010000004983fc010f8c960200004983fe010f8c770200004f8d5c34ff4d3bda0f87540200004983fe157615488d64242848b89836620800000000488b5d08ff234983c4104c89f149d1ec4d89ed4b8d742500488b3c2448d1e9f3a4ff75084c8d2d14010000415548896508488b5424504983fe010f8cef0000004983fe150f87d50000004c8b6c2448498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c70001000000ff124883c408415e4c8975084c8b6c24204d89ee4983ed014c03e87115488d64242848b8d006620800000000488b5d08ff234c3b6c2418750f488d64242848c7c001000000c218004d89f64983ee014903c67115488d64242848b8d006620800000000488b5d08ff23488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24204c8b6424184c8b5c24104c895c24104c896424184c896c24204883c408e929feffff48b8b832620800000000488b5d08ff2348b8e002620800000000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d38010000751b4c8934244c8b70084c897424084c8b70104c89742410e9820000004983fe03752549be48336208000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb574c8b6c24484d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049bc08366208000000004d896610498946084d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbb8376208000000004c8958184c8960104c8968084c8930488b5d08ff23488d64242848b8b832620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23f400|@499,1,@15337,@15097|39,0,@105 98,0,@105 176,0,@491 341,0,@105 396,0,@105 473,0,@467 489,0,@76 573,0,@470 642,0,@487 663,0,@15097 673,0,@99 730,0,@497 766,0,@467 787,0,@76 808,0,@76 10522:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@493,1,@15338,@10519| 10523:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@493,1,@15339,@10519| 10524:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@493,1,@15340,@10519| 10525:D3,80|49bb2001b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@505,1,@15342|2,0,@21 10526:D6,272|483b65187305ff5558cd05524c8b3424498b5608ff124989c64983fe010f85a900000049be3800b603000000004d8b364983fe03754d49bd3800b6030000000049c7c6fefffffff04d0fc175004983ee024983fe01750949c7c603000000eb0749c7c6010000004983fe03751648c7c00100000048c7c303000000ff15b7000000eb476a016a0148c7c00100000048c7c30100000049c7c0010000004989e1ff158b0000005b415e4983f6fe4983e605490bde48b8a03962080000000049c7c001000000ff155e000000eb33498b16498b4608ff75084c8d3514000000415648896508ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e9fffefffff40000|@512,1,@15347,@10525,@10511,@10528|37,0,@3 56,0,@3 181,0,@508 10527:D4,32|483b65187305ff5558cd0148c7c301000000ff2520000000f400000000000000|@509,1,@15344,@10528| 10528:D9,808|483b65187305ff5558cd094883fb037502eb4b49c7c60100000049bd3800b603000000004d8b6d004983fd037502eb0d4981fe419c00000f85ab00000049bd3800b6030000000049c7c6fefffffff04d0fc175004983ee024983fe01756c4c8b75384d8b76084983e60d4983fe01750949c7c605000000eb294983fe05750949c7c607000000eb1a4983fe09750949c7c603000000eb0749c7c6010000004983f60241564c8b34244983fe057502eb184c8b6d384c8b75384d8b76084983e6f34983ce054d897508eb4b48b83800b60300000000ff158e020000483b65187303ff5558e92bffffff4d89f54983c502711048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e905ffffff49c7c60100000049bd4800b603000000004d8b6d004983fd037502eb094981fe419c0000754d49bd4800b6030000000049c7c6fefffffff04d0fc175004983ee024983fe01751149be5800b603000000004d8b364156eb4d48b84800b60300000000ff15e3010000483b65187303ff5558eb8d4d89f54983c5027115488d64240848b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e962fffffff604240175254c8b3424498b064d89f641ff7608ff1584010000415d4c892c24483b65187303ff5558ebd5488d64240849c7c60100000049bd5800b603000000004d89750049bd4800b6030000000049c7c602000000f04d0fc175004983c6024983fe037502eb2149be4800b6030000000049c7060300000048b84800b60300000000ff150d0100004c8b6d384c8b34244d89f44983fe03750949c7c60d000000eb2e4d89e44d89e64983fc01750949c7c609000000eb194d89f64983fe07750949c7c605000000eb0749c7c6010000004c8b65384d8b6424084983e4f34d0bf44d8975084c8b2c244d89ee4983fd017507488d642408eb104d89f64983fe03488d6424087402eb164c8b75384d8b76184983fe017408ff1571000000eb0049bd3800b6030000000049c7c602000000f04d0fc175004983c6024983fe03750848c7c001000000c349be3800b6030000000049c7060300000048b83800b60300000000ff251d000000f400000000|@510,1,@15345,@10513,@10515,@10513,@10529,@10514,@10514|28,0,@3 63,0,@3 204,0,@3 243,0,@105 286,0,@4 317,0,@4 350,0,@5 367,0,@4 408,0,@105 499,0,@5 513,0,@4 548,0,@4 565,0,@4 731,0,@3 772,0,@3 789,0,@3 10529:D3,40|49bb4801b703000000004d8b1b4989e5488b65304881ecb00000004889c141ffd34c89ecc3f40000|@511,1,@15346|2,0,@22 10530:D3,72|49bb7001b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d3841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400000000|@513,1,@15348|2,0,@23 10531:D4,32|483b65187305ff5558cd05488b5a0848c7c025000000ff251c000000f4000000|@517,1,@15349,@10532| 10532:D3,80|49bb9801b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@518,1,@15350|2,0,@24 10533:D4,152|483b65187305ff5558cd05524c8b34244d8b76104d8b3641566a01f644240801756c4c8b742408498b064d89f641ff7608ff75084c8d35280000004156488965084c8b40204c8b742428498b5e08ff155c0000004989c44883c408415e4c897508eb15488b65084883c408415e4c89750849c7c401000000415d4c8924244c896c2408483b65187303ff5558eb8d584883c410c3f4000000|@519,1,@15351,@10512| 10534:D4,48|483b65187305ff5558cd054c8b701041ff7610488b5a084c8b4210ff15270000005a48c7c001000000ff22f400000000|@521,1,@15352,@10535| 10535:D7,312|483b65187306ff5558ca0901505341504c8b74241041ff76184c8b34244d8b2e4983fd03750d488d64242048c7c001000000c34d89f649c7060300000049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f859c00000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe01756b4c8b742408498b06488b1c24ff15d70000004989c6488d6424084c8b2c244d897500488d64240849c7c5020000004c8b24244d89e6f04d0fc12c244983c5024983fd037507488d642408eb184d89f64c89f049c70603000000ff1582000000488d64240858ff256e000000ff1560000000483b65187303ff5558e93fffffff4d89f54983c5027115488d64242048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e914fffffff400000000000000|@522,1,@15353,@10514,@10537,@10513,@10536|270,0,@105 10536:D3,112|483b65187305ff5558cd09a8017551ff30488b40084c8b34244d8b76184c3bf37434e8d9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e9a0ffffff48c7c001000000c3f400000000000000|@523,1,@15355| 10537:D4,808|483b65187305ff5558cd014c8b700841ff364c8b681041ff7500ff304c8b6424104983fc01750d488d64241848c7c001000000c34d8b6d3841f6c501751241ff750049c706010000006a01e993000000488d6424084d8d77e04c3b75107303ff55504d89f749c746f80300000049bd88056208000000004d896e1049bda0056208000000004d896e084c8b2c244d892e488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdf0056208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff23ff75084c8d353b010000415648896508488b5424184c8b6c24304c2b6c2410711048b8d006620800000000488b5d08ff234983c5014c8b6424204d8b14244c8b7424104d89f34983fe010f8ce50000004983fd010f8ccb0000004d89db4d89de4f8d5c2bff4d3bda0f87a7000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084d89f64c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64242848b8d006620800000000488b5d08ff234c3b642420750d488d64242848c7c001000000c34d89f64983ee014d03ee7115488d64242848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e9ebfeffff48b8b832620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2df7000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48336208000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd88056208000000004d896e10498946084c8b6c24304d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb88336208000000004c8958184c8960104c8968084c8930488b5d08ff23f4|@473,1,@15354,@15097|111,0,@94 125,0,@95 178,0,@97 196,0,@99 210,0,@15097 262,0,@105 419,0,@105 472,0,@105 506,0,@467 522,0,@76 538,0,@76 622,0,@470 685,0,@94 711,0,@15097 721,0,@99 778,0,@472 10538:D5,288|483b65187305ff5558cd055248ba503c62080000000048c7c00100000048bb284362080000000049c7c003000000ff150c0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70603000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee0779109000000004c89334c8b3424498b46084d89f64d8b4610488d642408ff251a000000f400|@567,1,@15383,@10512,@10539|14,0,@526 31,0,@565 249,0,@10565 10539:D4,1624|483b65187306ff5558ca0d015250534d8d57e04c3b55107306ff5550ca00014d89d749c742f8030000004c8b7424084d89f44d8972104c8b7424104d8b6e084d896a0849bdc05f9109000000004d892a4d8d6fe04c3b6d107306ff5550ca00554d89ef49c745f8030000004d89e44c89e34d8965104d89f64d8b66104d89650849bc70609109000000004d8965006a016a016a016a014983f803755f4d8d77f04c3b75107306ff5550ca08244d89f749c746f8010000004d892e4d89f54d8d77f04c3b75107306ff5550ca08244d89f749c746f8010000004d89164c892c244c8974240848c74424100100000048c744241801000000e9cd0000004d8d67e04c3b65107306ff5550ca08644d89e749c74424f8030000004d896c24104d89f64d8b6e404d89eb4d896c240849bdc0609109000000004d892c244d8d6ff04c3b6d107306ff5550ca081c4d89ef49c745f8010000004d8965004d8d67e04c3b65107306ff5550ca082c4d89e749c74424f8030000004d895424104d89de4d8974240849be08619109000000004d8934244d8d77f04c3b75107306ff5550ca08304d89f749c746f8010000004d892648c704240100000048c7442408010000004c896c24104c89742418ff3424ff742410ff742420ff7424304c8b742450498b561848c7c03d00000049c7c001000000ff124989c66a016a016a014983fe057f2849be903d6208000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410e903020000ff75084c8d35370000004156488965084c8b742478498b563848c7c025000000488b5c247049c7c001000000ff1249c7c6030000004883c408415d4c896d08eb22488b65084883c408415e4c8975084c8b304983fe050f85c303000049c7c6010000004983fe0375624d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424604d8965104c8b6424684d8b6424384d89650849bc50619109000000004d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24eb0749c7c4010000004983fe03755f4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24604d896b104c8b6c24684d8b6d304d896b0849bda0619109000000004d892b4d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d895d00eb0749c7c5010000004983fe03755e4d8d5fe04c3b5d107306ff5550ca00304d89df49c743f8030000004c8b7424604d8973104c8b7424684d8b76284d89730849bef8619109000000004d89334d8d77f04c3b75107306ff5550ca00384d89f749c746f8010000004d891eeb0749c7c6010000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8973104d896b084d89234d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8973104d896b084d89234c8924244c896c24084c89742410ff3424ff742410ff7424204d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424784c89f34d8975104c8bb424800000004d8b66184c89e24d89650849bc48629109000000004d896500415548c7c01f00000049c7c001000000ff124989c14d8d6fe04c3b6d107306ff5550ca00024d89ef49c745f8030000004c8bb424800000004d89f44d8975104c8b9c24880000004d8b73204d89f04d89750849be08639109000000004d8975004d8d77f04c3b75107306ff5550ca003b4d89f749c746f8010000004d892e4d8d6fe04c3b6d107306ff5550ca005b4d89ef49c745f8030000004d89e44c89e74d8965104d89db4d8b63184d89650849bc58639109000000004d8965004d8d57f04c3b55107306ff5550ca80634d89d749c742f8010000004d892a4d8d6fe04c3b6d107306ff5550ca80474d89ef49c745f8030000004889ff4989fc49897d104d89c34d895d0849bbc0639109000000004d895d004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f8010000004d89e44d8923498d4780483b45107306ff5550ca006e4989c748c740f80f0000004c8b4424184d89c44c8940704c8b4424404c8940684c8b4424384c8940604c8948584c8950504c8b5424504c8950484c8b5424484c8950404c8b5424104c8950384c8958304d89e44c8960284c8b6424084c8960204c8968184c8970104c8b34244c897008488d6424584c8b7424204c89304883c438ff252a000000488d642470488b5d08ff23f4000000000000|@552,1,@15375,@10551|69,0,@10540 130,0,@10541 301,0,@10542 387,0,@10543 513,0,@531 708,0,@10544 818,0,@10545 926,0,@10546 1134,0,@10547 1230,0,@10548 1322,0,@10549 1410,0,@10550 10540:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104d8b6d084983fc017c4d4983fb017c374d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c011000000ff2248b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff23f400000000000000|@528,1,@15356|98,0,@76 114,0,@76 10541:D3,40|483b65187305ff5558cd054989d64989c0498b5608498b5e1048c7c015000000ff22f40000000000|@529,1,@15357| 10542:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@530,1,@15358| 10543:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@530,1,@15359| 10544:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c025000000ff22f400|@532,1,@15360| 10545:D3,48|483b65187305ff5558cd054989d6498b5608498b5e104989c048c7c027000000ff1248c7c001000000c3f40000000000|@533,1,@15361| 10546:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c029000000ff22f400|@534,1,@15362| 10547:D3,152|483b65187305ff5558cd054989d6ff75084c8d2d2d000000415548896508498b5608498b5e1048c7c02300000049c7c001000000ff124989c64883c408415d4c896d08eb1e488b65084883c408415e4c8975084c8b304983fe05753449c7c6ffffffff4983fe017c1f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488b5d08ff23f400|@535,1,@15363| 10548:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c037000000ff22f400|@536,1,@15364| 10549:D3,64|483b65187305ff5558cd054989d6498b5608498b5e1048c7c02100000049c7c001000000ff124989c64983fe017e0848c7c003000000c348c7c001000000c3f4|@536,1,@15365| 10550:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c00f000000ff22f400|@536,1,@15366| 10551:D3,1056|483b65187305ff5558cd014c8b30ff70084c8b6810ff7018ff7020ff7028ff70304c8b60384c8b5840488b70484c8b48504c8b4058488b7860488b4868488b50704883fe0175624983fb01750949c7c201000000eb514d8b13498d5fe0483b5d107306ff5550cac67f4989df48c743f8030000004c8943104c89530849ba58689109000000004c89134d8d57f04c3b55107306ff5550cace7b4d89d749c742f80100000049891aeb034989f24983fb01755e4883fe01750949c7c301000000eb4d4c8b1e498d77e8483b75107306ff5550ca867f4989f748c746f8020000004c895e0849bb306b9109000000004c891e4d8d5ff04c3b5d107306ff5550cac6774d89df49c743f801000000498933eb004883f9010f85c40000004883ff01756b41f6c101755c41f6c2017556498b01498b32498d5fe0483b5d107306ff5550cac77f4989df48c743f803000000488943104889730848be086c910900000000488933498d77f0483b75107306ff5550ca8e7f4989f748c746f80100000048891eeb0748c7c601000000eb51488b37498d5fe0483b5d107306ff5550cac67f4989df48c743f8030000004c8943104889730848bea06c910900000000488933498d77f0483b75107306ff5550ca8e7f4989f748c746f80100000048891eeb034889ce4883ff010f85c00000004883f901756b41f6c101755c41f6c3017556498b19498b3b498d4fe0483b4d107306ff5550cacc7f4989cf48c741f803000000488959104889790848bfc06f910900000000488939498d7ff0483b7d107306ff5550ca467f4989ff48c747f80100000048890feb0748c7c701000000eb4d488b39498d4fe8483b4d107306ff5550cac47f4989cf48c741f8020000004889790848bf5870910900000000488939498d7ff0483b7d107306ff5550ca467f4989ff48c747f80100000048890feb004983fa01757041f6c501756140f6c601755b498b5d004c8b16498d4fd8483b4d107306ff5550cacc7f4989cf48c741f804000000488959184c8951104c89710849ba68719109000000004c89114d8d57f04c3b55107306ff5550cac67b4d89d749c742f80100000049890aeb0749c7c201000000eb004983fb01757041f6c501756140f6c701755b498b5d004c8b1f498d4fd8483b4d107306ff5550cacc7f4989cf48c741f804000000488959184c8959104c89710849bb68729109000000004c89194d8d5ff04c3b5d107306ff5550cac6774d89df49c743f80100000049890beb0749c7c301000000eb00498d4780483b45107306ff5550cac47f4989c748c740f80f0000004889507048897068488978604c8940584c8948504c8950484c8958404c8960384c8b24244c896030488d6424084c8b24244c896028488d6424084c8b24244c896020488d6424084c8b24244c896018488d6424084c8968104c8b2c244c896808488d6424084c8930c3f400000000|@553,1,@15376|126,0,@10552 229,0,@10553 343,0,@10554 435,0,@10555 552,0,@10556 640,0,@10557 749,0,@10558 867,0,@10559 10552:D3,688|483b65187305ff5558cd054989d64d8b66104d89e5493bc47d054989c5eb0041554c8b24244d89e54983fc010f8c9b0000004d89ed4c89e84c3b2d690200007615488d64240848b8f83e620800000000488b5d08ff234889c04883c00e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff4141554983fc017502eb114983ec024c8b2c244bc744a5fc0000000049c7c501000000eb15488d64240848b86808620800000000488b5d08ff234c8b6424084d89e34d3be50f87820100004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c24084d89db4d89dd4d891c24498b5608498d47e0483b45107306ff5550ca04304989c748c740f8030000004c8960104d89ee4c89700848c70001000000ff124889c14883f9010f8cfe000000483b4c24080f87de0000004883f9017510488d64241048b8d808620800000000c34883f90375294c8b34244d0fb636488d6424084e8d2c750100000049be30096208000000004b8b44aefc4883c408c34889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c3b35c500000077594d89f54a8d04ad0400000048f7d84903c7483b45107205493bc77206ff5550ca02404989c749d1ed4c8968f8c640ff414983ee024ac744b0fc000000004989ce49d1ee4c89305e488d780848d1e9f3a48060ffbf4883c408c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8b832620800000000488b5d08ff23488d64241048b8e002620800000000488b5d08ff234d89eb49d1eb4c8b242443c6041c204d89ec4983c4024d89e5483b65187306ff5558ca0060e943fefffff4ffffffffffffff01e1ffffffffffff0f|@539,1,@15367|72,0,@537 212,0,@120 378,0,@123 416,0,@126 573,0,@117 594,0,@467 615,0,@76 10553:D3,176|483b65187305ff5558cd054989c641ff36498b460841ff7610488b5208ff124989c64c8b2c244d8b55004d89ed4d8b6d08488d6424084d8b264a8d0c65010000004c8b24244d89e34983fc017c4a4d89db4d89dc4d8d5c0bff4d3bda7615488d64240848b8883f620800000000488b5d08ff23498d76084d89e449d1ec488d6424084b8d7c250048d1e9f3a44d8b364a8d047501000000c3488d64240848b8e002620800000000488b5d08ff23f40000|@542,1,@15368|101,0,@540 159,0,@76 10554:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@543,1,@15369| 10555:D3,760|483b65187305ff5558cd054989d64d8b66104d89e5493bc47d054989c5eb0041554c8b24244d89e54983fc010f8c9b0000004d89ed4c89e84c3b2db10200007615488d64240848b8f83e620800000000488b5d08ff234889c04883c00e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff4141554983fc017502eb114983ec024c8b2c244bc744a5fc0000000049c7c501000000eb15488d64240848b86808620800000000488b5d08ff234c8b6424084d89e34d3be50f87c40100004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c24084d89db4d89dd4d891c24498b5608498d47e0483b45107306ff5550ca04304989c748c740f8030000004c8960104d89ee4c89700848c70001000000ff124989c641f6c6010f8548010000498b0e4883f9010f8c26010000483b4c24080f87060100004883f9017514488d64241049bed808620800000000e9b80000004883f903752d4c8b34244d0fb636488d6424084e8d2c750100000049be30096208000000004f8b74aefc4883c408e9850000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d2c45010000004c3b2df800000077794d89ec4e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff414983ed024bc744aefc000000004989cd49d1ed4d892e5e498d7e0848d1e9f3a4418066ffbf4883c408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8b832620800000000488b5d08ff23488d64241048b8e002620800000000488b5d08ff23488d64241048c7c001000000c34d89eb49d1eb4c8b242443c6041c204d89ec4983c4024d89e5483b65187306ff5558ca0060e901fefffff4000000000000ffffffffffffff01e1ffffffffffff0f|@543,1,@15370|72,0,@537 212,0,@120 391,0,@123 433,0,@126 626,0,@117 647,0,@467 668,0,@76 10556:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@544,1,@15371| 10557:D3,232|483b65187305ff5558cd054989c641ff36498b460841ff7610488b5208ff124989c641f6c6010f85ac0000004d8b364c8b2c244d8b55004d89ed4d8b6d08488d6424084d8b264a8d0c65010000004c8b24244d89e34983fc017c684d89db4d89dc4d8d5c0bff4d3bda7615488d64240848b8883f620800000000488b5d08ff23498d76084d89e449d1ec488d6424084b8d7c250048d1e9f3a44d8b364e8d347501000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b8e002620800000000488b5d08ff23488d64241048c7c001000000c3f40000|@544,1,@15372|114,0,@540 202,0,@76 10558:D3,216|483b65187305ff5558cd0552504c8b742408498b561848c7c001000000ff124c8b742408498b5610488b0424ff124989c6488d64240841f6c6017509488d642408498b06c34d8d77e04c3b75107303ff55504d89f749c746f80300000049bd88406208000000004d896e1049bda0056208000000004d896e084c8b2c244d8b6d08488d6424084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bda0406208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff23f4|@548,1,@15373|95,0,@545 109,0,@95 166,0,@546 184,0,@99 198,0,@15097 10559:D3,216|483b65187305ff5558cd0552504c8b742408498b561848c7c001000000ff124c8b742408498b5610488b0424ff124989c6488d64240841f6c6017509488d642408498b06c34d8d77e04c3b75107303ff55504d89f749c746f80300000049bd30416208000000004d896e1049bda0056208000000004d896e084c8b2c244d8b6d08488d6424084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd48416208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff23f4|@551,1,@15374|95,0,@549 109,0,@95 166,0,@550 184,0,@99 198,0,@15097 10560:D3,80|49bbc001b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15377|2,0,@25 10561:D3,80|49bbe801b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15378|2,0,@26 10562:D3,80|49bb1002b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15379|2,0,@27 10563:D3,80|49bb3802b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@15380|2,0,@28 10564:D3,624|483b65187305ff5558cd0d4989d64889da4156ff75084c8d3538000000415648896508ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408415e4c8975084883c408c3488b65084883c408415e4c8975084c8b284d89ee4983fd050f85ee0100004c8b60104d89e54d8b64240841f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc030f85b70100004d89ec4d8b6d084d8b6d004c8b1c244d8b4b284d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84630100004c8b1c244d8b4b204d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f841a0100004c8b1c244d8b4b184d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84d10000004c8b1c244d8b4b104d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84880000004c8b1c244d8b4b084d89ca4983f9017507488d642408eb2a4d89d3488d6424084d8b1b4d8b6d004d3b2b750949c7c503000000eb0749c7c5010000004983fd03743e4c8b6808498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb68426208000000004c8958184c8960104c8968084c8930488b5d08ff2348c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d642408eb05488d642408488b5d08ff23f4000000|@561,1,@15381|513,0,@559 10565:D3,32|483b65187305ff5558cd054c8b72084c893048c7c001000000c3f40000000000|@566,1,@15382| 10566:D4,32|483b65187305ff5558cd05488b5a0848c7c025000000ff251c000000f4000000|@517,1,@15384,@10532| 10567:D4,152|483b65187305ff5558cd05524c8b34244d8b76104d8b3641566a01f644240801756c4c8b742408498b064d89f641ff7608ff75084c8d35280000004156488965084c8b40204c8b742428498b5e08ff155c0000004989c44883c408415e4c897508eb15488b65084883c408415e4c89750849c7c401000000415d4c8924244c896c2408483b65187303ff5558eb8d584883c410c3f4000000|@519,1,@15385,@10512| 10568:D4,48|483b65187305ff5558cd054c8b701041ff7610488b5a084c8b4210ff15270000005a48c7c001000000ff22f400000000|@521,1,@15386,@10569| 10569:D7,312|483b65187306ff5558ca0901505341504c8b74241041ff76184c8b34244d8b2e4983fd03750d488d64242048c7c001000000c34d89f649c7060300000049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f859c00000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe01756b4c8b742408498b06488b1c24ff15d70000004989c6488d6424084c8b2c244d897500488d64240849c7c5020000004c8b24244d89e6f04d0fc12c244983c5024983fd037507488d642408eb184d89f64c89f049c70603000000ff1582000000488d64240858ff256e000000ff1560000000483b65187303ff5558e93fffffff4d89f54983c5027115488d64242048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e914fffffff400000000000000|@522,1,@15387,@10514,@10496,@10513,@10570|270,0,@105 10570:D3,112|483b65187305ff5558cd09a8017551ff30488b40084c8b34244d8b76184c3bf37434e8d9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e9a0ffffff48c7c001000000c3f400000000000000|@523,1,@15388| 10571:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@612,1,@15390| 10572:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@612,1,@15391| 10573:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@612,1,@15392| 10574:D3,112|483b65187305ff5558cd01a8017552ff30488b4008e8e6ffffffff75084c8d3523000000415648896508488b54241048c7c001000000ff124883c408415e4c8975084883c408c3488b65084883c408415e4c89750848c7c0010000004883c408c348c7c001000000c3f4000000000000|@10482,1,@19911| 10575:D3,72|49bb6002b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@620,1,@15394|2,0,@29 10576:D3,80|49bb8002b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@518,1,@15395|2,0,@30 10577:D3,1096|483b65187305ff5558cd01504d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd68829109000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849bd588d9109000000004d892e4156498d77e8483b75107303ff55504989f748c746f8020000004c8b7424104c89760849bec88e9109000000004c89364d8d77e84c3b75107305ff5550cd404d89f749c746f8020000004c8b6c24104d896e0849bd38909109000000004d892e4156498d5fe8483b5d107305ff5550cd404989df48c743f8020000004c8b7424184c89730849bea8919109000000004c8933498d4fe8483b4d107305ff5550cd484989cf48c741f8020000004c8b7424184c89710849be18939109000000004c89314d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24184d896e0849bd88949109000000004d892e41564d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24204d896e0849bd60a09109000000004d892e41564d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24284d896e0849bde8a29109000000004d892e4156498d57e8483b55107305ff5550cd4a4989d748c742f8020000004c8b7424304c89720849be70a59109000000004c89324d8d77e84c3b75107305ff5550cd4e4d89f749c746f8020000004c8b6c24304d896e0849bdf8a79109000000004d892e4156498d7fe8483b7d107305ff5550cd4e4989ff48c747f8020000004c8b7424384c89770849be80aa9109000000004c89374d8d6fe84c3b6d107305ff5550cdce4d89ef49c745f8020000004c8b7424384d89750849be08ad9109000000004d8975004d8d5fe84c3b5d107306ff5550cace204d89df49c743f8020000004c8b7424384d89730849be00b19109000000004d89334d8d57e84c3b55107306ff5550cace284d89d749c742f8020000004c8b7424384d89720849bec8b29109000000004d89324d8d67e84c3b65107306ff5550cace2c4d89e749c74424f8020000004c8b7424384d8974240849be90b49109000000004d8934244d8d47e84c3b45107306ff5550cace3c4d89c749c740f8020000004c8b7424384d89700849be58b69109000000004d89304d8d4fe84c3b4d107306ff5550cace3d4d89cf49c741f8020000004c8b7424384d89710849be20b89109000000004d89314d8db768ffffff4c3b75107306ff5550cace3f4d89f749c746f81200000049899e8800000049898e80000000498956784989767049897e68488b7c242849897e60488b7c242049897e58488b7c243049897e50488b7c240849897e484d8946404c8b4424104d8946384158488d6424104d8946304158488d6424184d8946284d894e204d8956184d895e104d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f803000000415d4c8968104c89700849bee8b99109000000004c8930c3f4000000000000|@8854,1,@19371|46,0,@10578 94,0,@10584 142,0,@10586 190,0,@10588 240,0,@10590 288,0,@10592 336,0,@10594 386,0,@10601 436,0,@10604 486,0,@10607 534,0,@10610 584,0,@10613 632,0,@10616 682,0,@10622 731,0,@10625 782,0,@10628 832,0,@10631 881,0,@10634 1077,0,@10637 10578:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bef0829109000000004c8930ff251d000000f400000000|@645,1,@15399,@10582|66,0,@10579 10579:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15396,@15108,@15108,@10580|126,0,@621 10580:D3,608|483b65187305ff5558cd09534c8b304983fe017516488b5008ff7010488b442408ff124989c6e9260100004c8b68084c8b7018498b550041ff36488b442408ff124989c64c8b2c244d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37215488d64241048b81051620800000000488b5d08ff234d89ed4f8b5cb5fc41f6c3010f85bd0000004d8b0b4d8b5b084c8b5424084d89d04d3bd17507488d642410eb3a4d89c04d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd775384d89c0498d7008498d7908483bc9f3a67402eb24488d642410498d47f0483b45107306ff5550ca00084989c748c740f8010000004c8918c34983fe0175114d89e549c1e50849c1ed074983cd01eb034d89f54983ed027115488d64241048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e900ffffff488d64241048c7c001000000c34c8b2c244d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37215488d64241048b89051620800000000488b5d08ff234d89ed4f8b5cb5fc41f6c3010f85bd0000004d8b0b4d8b5b084c8b5424084d89d04d3bd17507488d642410eb3a4d89c04d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd775384d89c0498d7008498d7908483bc9f3a67402eb24488d642410498d47f0483b45107306ff5550ca00084989c748c740f8010000004c8918c34983fe0175114d89e549c1e50849c1ed074983cd01eb034d89f54983ed027115488d64241048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e900ffffff488d64241048c7c001000000c3f400|@637,1,@15398|103,0,@625 290,0,@105 372,0,@628 559,0,@105 10581:D3,24|483b65187305ff5558cd0148b86052620800000000c3f400|@636,1,@15397|13,0,@634 10582:D15,1472|483b65187305ff5558cd0950534c8b75384d8b66204983fc01750949c7c501000000eb1f4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d89650849c74500050000004d8b66084d89e64983e6034983fe03750949c7c303000000eb0749c7c3010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000004983e40d4983fc01750949c7c305000000eb294983fc05750949c7c307000000eb1a4983fc09750949c7c303000000eb0749c7c3010000004983f3024d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424030000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b753841564c8b342441ff76086a016a0148b8d85262080000000048c7c30100000049c7c0010000004989e1ff1572040000ff34244c8b6424104c8b742420498b462049bed85262080000000041f6c60175544d8b1e4d8b6e084d8b134983fa0575334d8b730841f6c6017520498b064883f8017f15488d64244848b80853620800000000488b5d08ff23eb0748c7c001000000eb114d89ee483b65187306ff5558ca0150eba64c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15c70300004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff1593030000eb00eb05488d64242049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f85ce02000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe010f8599020000ff75084c8d3529010000415648896508488b54242848c7c001000000ff124989c64883c408415d4c896d08415649c7c5020000004c8b6424184d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15db0200004c8b753841564c8b342441ff76086a016a01488b44242848c7c30100000049c7c0010000004989e1ff15a5020000ff34244c8b642410f64424380175254c8b742438498b064883f8017f15488d64245048b80853620800000000488b5d08ff23eb0748c7c0010000004c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15340200004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff1500020000eb00eb05488d642420584883c420c3488b65084883c408415e4c8975085049c7c5020000004c8b6424184d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15a60100004c8b753841564c8b342441ff76086a016a01488b44242848c7c30100000049c7c0010000004989e1ff1570010000ff34244c8b642410f64424380175254c8b742438498b064883f8017f15488d64245048b80853620800000000488b5d08ff23eb0748c7c0010000004c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15ff0000004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff15cb000000eb00eb05488d6424204c8b24244d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb98536208000000004c8958184c8960104c8968084c8930488b5d08ff23ff155d000000483b65187303ff5558e90dfdffff4d89f54983c5027115488d64242048b8d006620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e9e2fcfffff400000000|@646,1,@15400,@10514,@10515,@10583,@10511,@10513,@10515,@10583,@10511,@10513,@10515,@10583,@10511|415,0,@638 465,0,@638 521,0,@640 911,0,@640 1188,0,@640 1368,0,@643 1433,0,@105 10583:D3,72|49bba802b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@647,1,@15401|2,0,@31 10584:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bee08d9109000000004c8930ff251d000000f400000000|@645,1,@15403,@10582|66,0,@10585 10585:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15402,@15109,@15109,@10580|126,0,@621 10586:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be508f9109000000004c8930ff251d000000f400000000|@645,1,@15405,@10582|66,0,@10587 10587:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15404,@15110,@15110,@10580|126,0,@621 10588:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bec0909109000000004c8930ff251d000000f400000000|@645,1,@15407,@10582|66,0,@10589 10589:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15406,@15111,@15111,@10580|126,0,@621 10590:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be30929109000000004c8930ff251d000000f400000000|@645,1,@15409,@10582|66,0,@10591 10591:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15408,@15112,@15112,@10580|126,0,@621 10592:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bea0939109000000004c8930ff251d000000f400000000|@645,1,@15411,@10582|66,0,@10593 10593:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@15410,@15113,@15113,@10580|126,0,@621 10594:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be18959109000000004c8930ff251e000000f40000000000|@669,1,@15418,@10582|73,0,@10595 10595:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc0801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15412,@10597,@10596,@10580|58,0,@224 72,0,@15108 10596:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15417,@15108| 10597:D6,1576|483b65187306ff5558ca09015341504c8b304983fe030f852a020000ff7008ff7010ff70184c8b342441ff364c8b34244d8b76f849c1e60849c1ee074983ce0141564c8b742420498b16488b442430ff124889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b7424284d8970084c8b7424304d8930488b442408ff15c60500004c8b6424184d8b2c244983c5027115488d64243848b8d006620800000000488b5d08ff234d89e44d89e64d892c244d89f64d8b364983ee014d6bf6057115488d64243848b8d006620800000000488b5d08ff234983c6014c8b2c244983ed014d6bed047115488d64243848b8d006620800000000488b5d08ff234983c5014d3bf50f8e28010000415e4983ee014d6bf6027115488d64243048b8d006620800000000488b5d08ff234983c60141564c8b2c244d89ee4983fd017d0a488d642438e9da0000004d89f64d89f54c3b35c40400000f8dc20000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd789d9109000000004d892e4c8b2c244c8b6424184d892c244c8b6c24284d8975004c8b7424104d8b76f849c1e60849c1ee074983ce014983ee027115488d64244048b8d006620800000000488b5d08ff234156e94f020000488d64243848b8d055620800000000488b5d08ff23488d64243848c7c001000000c3488d6424084c8b34244d8b2e4e8d2c6d010000004983fd017514488d64240849bc2856620800000000e9bb0000004d89eb4983c3444c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15740300000f87b40100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb285662080000000048c7c145000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608488d642408498d7c242a48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be6056620800000000e9b60000004d89eb4983c3304c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15900200000f87c80000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc605662080000000048c7c131000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd88566208000000004c8968184c89701049bee8566208000000004c89700848c700cf000000488b5d08ff2348b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff234c8b34244d89f44983fe017d0d488d64244848c7c001000000c34c8b7424184d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64244848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc41f6c60175184d8b2e4d8b65004e8d1c650100000049c7c401000000eb314c8b2c244983ed027115488d64244848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e957ffffff4983fb010f85a30000004c89e04c8b6424104d89e54983fc017515488d64244848b8a054620800000000488b5d08ff2348d1e84d89ed49d1ed4833d249f7f5488d1c5501000000f6c30174084883fb017d15eb154c0fb66bff4e8d2c6d010000004983fd237402eb1748b8f8546208000000004156ff15b1000000415e4889c3f6c30174134d89f0488b442408ff1591000000e937ffffff488d64244848b80855620800000000488b5d08ff234d89d94983e9024d89da4983c20e49d1ea4f0fb65415004e8d1455010000004d89e04d6bc0074983e8064f8d5402ff4d89cb4d89d4483b65187306ff5558ca0078e90dfffffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01|@666,1,@15415,@10600,@10599,@10600|160,0,@105 207,0,@105 246,0,@105 292,0,@105 460,0,@10598 527,0,@105 555,0,@657 615,0,@659 755,0,@659 835,0,@660 993,0,@660 1059,0,@661 1077,0,@663 1104,0,@117 1125,0,@117 1204,0,@625 1276,0,@105 1342,0,@649 1415,0,@651 1467,0,@652 10598:D4,232|483b65187305ff5558cd054c8b304e8d2c750100000049c7c6010000004983fd01757e4c89f04c8b6a084d89ee4983fd01751048b8a054620800000000488b5d08ff2348d1e849d1ee4833d249f7f6488d1c5501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff1574000000a8017401c348b80855620800000000488b5d08ff234d89eb4983eb024d89ec4983c40e49d1ec4e0fb624204e8d2465010000004d89f24d6bd2074983ea064f8d6414ff4d89dd4d89e6483b65187306ff5558ca0560e937fffffff400|@655,1,@15413,@10599|53,0,@649 126,0,@651 147,0,@652 10599:D3,80|49bbd002b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@656,1,@15414|2,0,@32 10600:D3,304|483b65187306ff5558ca090141f6c00175054d8b28eb0848c7c001000000c34c8b60f84d89e649c1e40849c1ec074983cc01493bdc721048b81051620800000000488b5d08ff234c8b6498fc41f6c4010f85aa0000004d8b1c244d3bdd7502eb304d8b234e8d2465010000004d8b55004c89d14e8d1455010000004d3be2753f498d7308498d7d08483bc9f3a67402eb2e49c1e60849c1ee074983ce01493bde721048b80057620800000000488b5d08ff234c894498fc48c7c001000000c34883fb01750e49c1e60849c1ee074983ce01eb034989de4983ee02711048b8d006620800000000488b5d08ff234c89f3483b65187306ff5558ca0921e91fffffff49c1e60849c1ee074983ce01493bde721048b80057620800000000488b5d08ff234c894498fc48c7c001000000c3f400|@667,1,@15416|57,0,@625 164,0,@664 222,0,@105 275,0,@664 10601:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef0a09109000000004c8930ff251e000000f40000000000|@669,1,@15421,@10582|73,0,@10602 10602:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc1801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15419,@10597,@10603,@10580|58,0,@224 72,0,@15109 10603:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15420,@15109| 10604:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be78a39109000000004c8930ff251e000000f40000000000|@669,1,@15424,@10582|73,0,@10605 10605:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc2801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15422,@10597,@10606,@10580|58,0,@224 72,0,@15110 10606:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15423,@15110| 10607:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be00a69109000000004c8930ff251e000000f40000000000|@669,1,@15427,@10582|73,0,@10608 10608:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc4801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15425,@10597,@10609,@10580|58,0,@224 72,0,@15112 10609:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15426,@15112| 10610:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be88a89109000000004c8930ff251e000000f40000000000|@669,1,@15430,@10582|73,0,@10611 10611:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc3801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15428,@10597,@10612,@10580|58,0,@224 72,0,@15111 10612:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15429,@15111| 10613:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be10ab9109000000004c8930ff251e000000f40000000000|@669,1,@15433,@10582|73,0,@10614 10614:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc5801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15431,@10597,@10615,@10580|58,0,@224 72,0,@15113 10615:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15432,@15113| 10616:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be88ad9109000000004c8930ff251c000000f4000000|@675,1,@15439,@10582|59,0,@10617 10617:D4,40|483b65187305ff5558cd05488b420849b8185862080000000048c7c301000000ff251a000000f400|@673,1,@15437,@10619|17,0,@670 10618:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15434,@15108,@15108|139,0,@621 10619:D3,312|483b65187306ff5558ca090141506a016a014c8b304983fe01754c4c8b60104d8b6c24f849c1e50849c1ed074983cd014d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849bc30b09109000000004d89264c892c244c89742408eb4d4c8b70184d8b264d8b6c24f849c1e50849c1ed074983cd014d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849bc98b09109000000004d89264c892c244c89742408ff3424ff742410536a014c8b34244c89f04c3b7424187c0b488d642408584883c428c3488b542410ff124989c641f6c6017518498b06498b5e08488b5424304c8b442408ff124989c5eb054c8b6c24084c8b24244983c4027115488d64243848b8d006620800000000488b5d08ff234c8924244c896c2408483b65187303ff5558eb87f4|@674,1,@15438|81,0,@10620 160,0,@10621 277,0,@105 10620:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff23498b4486fcc3f40000|@672,1,@15435|41,0,@628 10621:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b81051620800000000488b5d08ff23498b4486fcc3f40000|@672,1,@15436|41,0,@625 10622:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be80b19109000000004c8930ff251c000000f4000000|@675,1,@15442,@10582|59,0,@10623 10623:D4,40|483b65187305ff5558cd05488b420849b8185962080000000048c7c301000000ff251a000000f400|@673,1,@15441,@10619|17,0,@676 10624:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15440,@15109,@15109|139,0,@621 10625:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be48b39109000000004c8930ff251c000000f4000000|@675,1,@15445,@10582|59,0,@10626 10626:D4,40|483b65187305ff5558cd05488b420849b8285962080000000048c7c301000000ff251a000000f400|@673,1,@15444,@10619|17,0,@677 10627:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15443,@15110,@15110|139,0,@621 10628:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be10b59109000000004c8930ff251c000000f4000000|@675,1,@15448,@10582|59,0,@10629 10629:D4,40|483b65187305ff5558cd05488b420849b8385962080000000048c7c301000000ff251a000000f400|@673,1,@15447,@10619|17,0,@678 10630:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15446,@15111,@15111|139,0,@621 10631:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bed8b69109000000004c8930ff251c000000f4000000|@675,1,@15451,@10582|59,0,@10632 10632:D4,40|483b65187305ff5558cd05488b420849b8485962080000000048c7c301000000ff251a000000f400|@673,1,@15450,@10619|17,0,@679 10633:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15449,@15112,@15112|139,0,@621 10634:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bea0b89109000000004c8930ff251c000000f4000000|@675,1,@15454,@10582|59,0,@10635 10635:D4,40|483b65187305ff5558cd05488b420849b8585962080000000048c7c301000000ff251a000000f400|@673,1,@15453,@10619|17,0,@680 10636:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@15452,@15113,@15113|139,0,@621 10637:D4,40|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b4a084c8b5210ff2519000000f4|@777,1,@15494,@10638| 10638:D15,2232|483b65187306ff5558ca0907505341504151415249c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24284d896e184c8b6c24084d896e104c8b2c244d896e0849bd80c39109000000004d892e4156ff75084c8d350b000000415648896508e90f030000488b65084883c408415e4c897508504c8b34244d8b2e4981fdcf00000075744d89f641ff76104c8b7424404d8b064d89f6498b460848bbe85a620800000000ff1521080000498d47d8483b45107303ff55504989c748c740f80400000049be705b6208000000004c8970184c8b34244c897010488d64241049bee8566208000000004c89700848c700cf000000488b5d08ff234d89f64d8b76084d8b2e4e8d246d010000004983fc01750f49bda05b620800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15040700000f870a0200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bba05b62080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48bbc05b620800000000e9b20000004d89f44983c4104c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2d0600000f87260100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f1498d7508488d7b0848d1e9f3a44983c61049bdc05b62080000000048c7c111000000498d750849d1ee4a8d3c3348d1e9f3a48063ffbf49be1800b60300000000498b06ff151006000049be1800b60300000000498b064c8b402048bb7805620800000000ff15e70500004c8b7424384d8b064d89f6498b460848bbd85b620800000000ff15c00500004c8b24244d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbe85b6208000000004c8958184c8960104c8968084c8930488b5d08ff23488d64244848b8f807620800000000488b5d08ff23488d64244848b8f807620800000000488b5d08ff234c8b7424184d8b364983fe030f84a80100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849bd90d59109000000004d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d89750849be6801110a000000004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424484d89661049bc281b6208000000004d89660849bc7801110a000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb505c6208000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec8656208000000004c89334883fb0175074c8b442438eb0e488b442438ff15d80300004989c0488b442430488b5c2410ff15bd0300004989c64d8b760841f6c601752b498b1648c7c001000000ff124989c54d8b750041ff750841ff751041ff751841ff752041ff75284156eb2648b80066620800000000488b5d08ff2348c7c0010000004883c408415e4c8975084883c440c3f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be30f49109000000004c8930ff15f2020000415d4c892c24483b65187303ff5558eb8a488d642408ff742418f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be28f69109000000004c8930ff156b020000415d4c892c24483b65187303ff5558eb8a488d642408ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be20f89109000000004c8930ff15e5010000415d4c892c24483b65187303ff5558eb8a488d642410ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742458498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be18fa9109000000004c8930ff155f010000415d4c892c24483b65187303ff5558eb8a488d642410ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742450498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be10fc9109000000004c8930ff15d9000000415d4c892c24483b65187303ff5558eb8a488d642418ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742440498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be08fe9109000000004c8930ff1553000000415d4c892c24483b65187303ff5558eb8a488d642410483b65187303ff5558e930fbfffff4000000000000ffffffffffffff01ffffffffffffff01|@778,1,@15495,@10582,@10582,@10582,@10582,@10582,@10582,@10679,@10678,@10512,@10512,@10517,@10512|160,0,@10639 249,0,@691 289,0,@695 316,0,@663 367,0,@696 505,0,@696 574,0,@697 730,0,@697 767,0,@1 786,0,@1 803,0,@93 834,0,@698 906,0,@699 942,0,@117 963,0,@117 1030,0,@10647 1082,0,@224 1096,0,@15114 1154,0,@224 1168,0,@15115 1209,0,@701 1293,0,@772 1405,0,@774 1525,0,@10666 1652,0,@10668 1778,0,@10670 1904,0,@10672 2030,0,@10674 2156,0,@10676 10639:D4,160|483b65187305ff5558cd05524c8b34244d8b66184d89e54d8b04244d89ee498b460848bb6859620800000000ff15860000004883f801751c4c8b34244d8b7608488d64240849c7060300000048c7c001000000c34c8b304983fe1575364c8b2c244d8b75104d89f44d8b364983c6027115488d64240848b8d006620800000000488b5d08ff234d89e5488d6424084d897500c3488d642408c3f4000000000000|@690,1,@15459,@10512|36,0,@681 120,0,@105 10640:D5,184|483b65187305ff5558cd01504c8b3424498b066a016a0148c7c3030000004989e0ff15b1000000488b0424ff742408ff159b0000004989c64c8b2c244c8b6424184d892c24488d6424204d8b264d89e54e8d2465010000004983fc01750848c7c001000000c34e8d2c6d010000004983fd017f1048b8a838620800000000488b5d08ff234d0fb676084e8d347501000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@688,1,@15457,@10502,@10641|118,0,@502 10641:D4,1784|483b65187306ff5558ca090141504c8b304983fe010f8554060000ff70084c8b7010ff70184c8b50204c8b6424084d8b2c244d89eb4e8d2c6d010000004983fd017549488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89e44d896500488d6424084d89ec415d4d8965004d89750848c7c001000000c34d89e94c2b0c247115488d64241848b8d006620800000000488b5d08ff234983c101493bd90f8d070200004d89e44d89dd4e8d045d010000004c8b0c244d89cb4983f9010f8cd30100004883fb010f8cb40100004d89db4d89d94d8d5c1bff4d3bd80f878b0100004d89e44e8d2c6d010000004d89c94d89cb4983f901750d493bdd75084d89e5e9ae0000004883fb01750f49bdd808620800000000e9990000004889d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d9a0500000f870e0100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc000000004989d949d1e94d894d004d89db4983c3104889d949d1eb4d89e44b8d341c498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca08644d89e749c74424f80200000049c7442408010000004d892c244989dd4983ed01488b1c244903dd488d6424087115488d64241048b8d006620800000000488b5d08ff234d8d6fd04c3b6d107306ff5550ca08544d89ef49c745f8050000004d89552049895d184d8975104c8b34244d897508488d64240849c74500010000004d89ee415d4d8965004d89750848c7c001000000c3488d64241848b8f807620800000000488b5d08ff23488d64241848b8b832620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff234d89ea4c2b14247115488d64241848b8d006620800000000488b5d08ff234983c201493bda0f859a0100004c8b2c244d89ea4983fd010f8c740100004d89e44d89dd4a8d0c5d010000004d89d24d89d34c3bd10f87420100004d89da492bcb4883c1014d89e44e8d2c6d010000004d89d24d89d34983fa017517493bcd7512488d6424084d89e5488d642408e9ba0000004883f9017514488d64241049bdd808620800000000e9a00000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15560300000f87ac0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004d89db4983c310488d64240849d1eb4d89e44b8d341c488d642408498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4d8965004d89750848c7c001000000c3488d64241848b8f807620800000000488b5d08ff23488d64241848b85038620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff234c2b2c247115488d64241848b8d006620800000000488b5d08ff234983c501492bdd7115488d64241848b8d006620800000000488b5d08ff234883c3016a016a014c89f04989e0e831fbffff415b415e4c8b2c244d89e94983fd010f8c760100004c8b6424084d8b14244d89d54a8d0c55010000004d89c94d89ca4c3bc90f873e0100004d89d1492bca4883c1014d89e44e8d2c6d010000004d89c94d89ca4983f9017517493bcd7512488d6424084d89e5488d642408e9ba0000004883f9017514488d64241049bdd808620800000000e9a00000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d5e0100000f87a80000004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc000000004989c949d1e94d894d004d89d24983c210488d64240849d1ea4d89e44b8d3414488d642408498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d64241848b8f807620800000000488b5d08ff23488d64241848b85038620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff234c8b70084c8b4010498d47e0483b45107306ff5550ca08414989c748c740f803000000488958104c8940084c8930ff342448bb7859620800000000ff15600000004989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64241048c7c001000000c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@689,1,@15458,@10512|156,0,@105 288,0,@123 523,0,@105 625,0,@117 646,0,@467 667,0,@76 688,0,@76 718,0,@105 860,0,@123 1099,0,@117 1120,0,@500 1141,0,@76 1168,0,@105 1198,0,@105 1356,0,@123 1591,0,@117 1612,0,@500 1633,0,@76 1698,0,@682 10642:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084d8b46104989e1ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@686,1,@15455,@10643| 10643:D3,1800|483b65187306ff5558ca09035053415041514c8b7424184d8b2e4d89ec4d8b55004d89d34983fa0575564d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424104d8965104d89f64d89750849c74500030000004d89ee415d49bc88596208000000004d8965004d89750848c7c0010000004883c418c34983fb010f859c03000041ff75084d8b75104d8b55184c8b1c244d8b2b4d89e94e8d2c6d010000004983fd01757a4d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d89db4d891c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24104d895d104d89750849c74500030000004d89ee415d4d8965004d89750848c7c0010000004883c418c34c8b4424104d89c44d3bc50f8deb0100004d89db4d89cd4e8d044d010000004d89e44d89e14983fc010f8cb80100004d89c94d89cc4d3bc80f87940100004d89db4e8d0c6d010000004d89e44d89e54d3be175084d89dde9ad0000004d89ed4c89e84983fd01750f49bdd808620800000000e9920000004889c04889c14883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25350500000f87140100004d89e14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004889c94d89db498d7308498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00644d89e749c74424f80200000049c7442408010000004d892c244d8d6fe04c3b6d107306ff5550ca00544d89ef49c745f8030000004c8b5c24184d895d104d89750849c74500030000004d8d77d04c3b75107306ff5550ca00344d89f749c746f8050000004d8956204c8b5c24104d895e184d896e104c8b2c244d896e08488d64240849c70601000000415d488d6424104d8965004d89750848c7c0010000004883c408c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8b832620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff234d89e44d89e04d3be5757a4d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d89dd4d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24104d895d104d89750849c74500030000004d89ee415d4d8965004d89750848c7c0010000004883c418c34d89c04d2bc57115488d64242848b8d006620800000000488b5d08ff234983c0016a016a014c89f0488b5c24284989e1e822fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642408415d4d8965004d89750848c7c0010000004883c418c34d89f64d89f541546a016a014c8b7424104d8b1e4d89dc4983fb030f85a60100004d89f64d8b76084d8b6e4841f6c5010f850101000041ff75004d8b6e2841ff76584983fd01750949c7c601000000eb2e498b550048c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4156488b542410488b442408ff124989c54c8b7424284d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e18488d6424184d8966104d896e0849c706010000004c8b5c24304d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24284d895e104d89660849c706030000004c892c244c89742408e926010000488d6424384d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca0596208000000004d89661049bca0056208000000004d8966084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdb8596208000000004c8968184c89701049be50066208000000004c89700849be5800110a000000004c8930488b5d08ff234d89f64983fc0575474d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d89ed4d896e0849c7060300000049bdd8086208000000004c892c244c89742408eb464d89f64d8b6e084d89f64d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24284d895e104d89660849c706030000004c892c244c89742408415d415e4d8b65004e8d2465010000004983fc017544488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4d8965004d89750848c7c0010000004883c418c3488d642408488b442418488b5c24104c8b4424084159488d642418e903f9fffff40000ffffffffffffff01|@687,1,@15456|100,0,@683 402,0,@123 748,0,@117 769,0,@467 790,0,@76 952,0,@105 1410,0,@684 1424,0,@95 1468,0,@685 1486,0,@99 1500,0,@15097 1578,0,@123 10644:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf85a620800000000ff251c000000f4000000|@694,1,@15461,@10512|54,0,@692 10645:D3,96|483b65187305ff5558cd014c8b304d8b264d89e54983fc03751e4d8b7608498b561849be704e6208000000004c893048c7c001000000ff224983fd05750848c7c001000000c34d8b76104c89f0483b65187305ff5558cd01ebb1f40000000000|@693,1,@15460|36,0,@601 10646:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf85a620800000000ff251c000000f4000000|@694,1,@15462,@10512|54,0,@692 10647:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@700,1,@15463| 10648:D8,472|483b65187305ff5558cd014c8b30ff70104c8b681841ff7500498b45104983fe03750c49beb85c620800000000eb0a49bed05c620800000000415648bae85c62080000000048c7c303000000ff15be0100004989c64156488b442418ff15a60100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc385e6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd505e6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd685e6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd805e6208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418ff15650000004889c349be1800b60300000000498b06ff154700000049be1800b60300000000498b064c8b402048bb7805620800000000ff251e000000f40000000000|@738,1,@15470,@10512,@10517,@10502,@10654,@10649|37,0,@705 49,0,@706 61,0,@707 130,0,@715 179,0,@716 267,0,@717 351,0,@718 416,0,@1 435,0,@1 452,0,@93 10649:D5,376|483b65187305ff5558cd0d6a016a016a014883fb05751c4c8b6a084c8b721048c70424210000004c896c24084c89742410eb5e4883fb03751c4c8b6a184c8b722048c70424150000004c896c24084c89742410eb3c4883fb07751c4c8b6a284c8b723048c70424110000004c896c24084c89742410eb1a4c8b6a384c8b724048c70424050000004c896c24084c89742410415a415e415da80174184883f8017d0949c7c103000000eb0749c7c101000000eb234c0fb660ff4e8d2465010000004983fc23750949c7c103000000eb0749c7c1010000004883f801750b48b83019620800000000c3a80174084883f8017c15eb4e4c0fb660ff4e8d2465010000004983fc03743ba801741549c7c4010000004c2be070094c89e04883c001eb204889c348c7c0010000004152415641554151ff15610000004159415d415e415aeb006a016a0148ba385d6208000000004156415548c7c3010000004c8d442410ff152b00000058488d6424088060ffbfc3f400000000000000|@713,1,@15467,@10650,@10653|222,0,@203 327,0,@708 10650:D4,504|483b65187306ff5558ca0d074989d54989c44989de4c89c741f6c401745241f6c401743c498b55084c89e04c89f34c8b6c24104c8b6424084154ff74240849c7c0010000004c896c24104c895424184989fa4c894c242049c7c101000000ff2248b80855620800000000488b5d08ff236a016a0141f6c4010f84f60000004c8b5c242041f6c3010f84e50000004c8b5c24204983fbff751b4c3b2551010000750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983f3024983fb030f85aa0000004c8b5c24204983fb017515488d64241048b8d812620800000000488b5d08ff234c8b5c24204983fbff751e4c3b25ee0000007515488d64241048b87013620800000000488b5d08ff234c89e04c8b5c242048d1f849d1fb489949f7fb4c8d1c45010000004c8b4424204983f8017515488d64241048b8e013620800000000488b5d08ff234c89e04c8b64242048d1f849d1fc489949f7fc4c8d2455010000004c891c244c89642408eb25eb00488b5c24204c89e04989e0415541565741514152ff1582000000415a41595f415e415d415858a8017433498b55084c89f34c8b5c24084c8b6c24104c8b6424084154ff7424084c896c24104c895424184989fa4c894c24204d89d9ff2248b80855620800000000488b5d08ff23f400000000000001000000000000800100000000000080|@710,1,@15464,@10651|98,0,@652 218,0,@142 259,0,@146 318,0,@149 467,0,@652 10651:D3,80|49bbf802b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@711,1,@15465|2,0,@33 10652:D3,1312|483b65187306ff5558ca0d074989d64989c4415141524983fc010f85a90100004983f8010f855b0100004c8b7424304983fe030f85ac0000004989de4983c6024c89f04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25af04000077654d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc0000000049d1ee4d89750041c645087e415e4d892e49c746081300000048c7c0010000004883c408c22000488d64241048b8f807620800000000488b5d08ff234889d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c3b350204000077604d89f44e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08404d89ef49d1ec4d8965f841c645ff414983ee024bc744b5fc0000000048d1eb49895d00415e4d892e49c746081100000048c7c0010000004883c408c22000488d64241048b8f807620800000000488b5d08ff234c8b6c24084a8d5c2bff6a016a01498b56084c8b4c24404c8b5424384c8b7424304c8b6c2428415641554c89c04c8d442410ff12415e415d49c7c401000000e9e70200004c8b6c24284983fd017515488d64241048b8e013620800000000488b5d08ff234c89e04c8b6c242848d1f849d1fd489949f7fd4c8d2c55010000004983fd01750949c7c501000000eb5b4983fd017d0949c7c303000000eb0749c7c3010000004c8b5424284983fa017d0949c7c203000000eb0749c7c2010000004d3bda7502eb234c8b5c24284983eb014d03eb7115488d64241048b8d006620800000000488b5d08ff234983fd157d484983c5607115488d64241048b8d006620800000000488b5d08ff234983fd017d07488d642410eb104981fdff0100007f02eb6b488d64241048b82812620800000000488b5d08ff234981c5820000007115488d64241048b8d006620800000000488b5d08ff234983ed147115488d64241048b8d006620800000000488b5d08ff234983fd017d0a488d642410e99b0100004981fdff0100000f8f8901000041554c8b6c24304983fd017515488d64241848b8d812620800000000488b5d08ff234c8b6c24304983fdff751e4c3b25c20100007515488d64241848b87013620800000000488b5d08ff234c89e04c8b6c243048d1f849d1fd489949f7fd4c8d2c45010000004c8b5c24304983fb017515488d64241848b8e013620800000000488b5d08ff234c89e04c8b64243048d1f849d1fc489949f7fc4c8d2455010000004983fc017502eb6c4983fc017d0949c7c403000000eb0749c7c4010000004c8b5c24304983fb017d0949c7c303000000eb0749c7c3010000004d3be3750949c7c403000000eb0749c7c4010000004983fc0374204c89e84883e8027115488d64241848b8d006620800000000488b5d08ff23eb034c89e84883c3024c8b4c24104983e9026a016a014c89f24c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8d542420e89cfbffff415c415e4c8b2c2449d1ed488d6424084d89f349d1eb47882c1c4983c602415d488d6424084d8965004d89750848c7c001000000c22000488d64241048b82812620800000000488b5d08ff234c3b64240875244c8b6424084f8d6c25ff415c488d6424084d8934244d896c240848c7c001000000c220004f8d5c25ff49d1eb43c6041e304d89e34983c3024d89dc483b65187306ff5558ca0070ebb0f4000000000000000100000000000080ffffffffffffff01ffffffffffffff01|@712,1,@15466|215,0,@117 375,0,@117 475,0,@149 608,0,@105 641,0,@105 686,0,@137 716,0,@105 743,0,@105 806,0,@142 847,0,@146 906,0,@149 1047,0,@105 1186,0,@137 10653:D3,80|49bb2003b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@714,1,@15468|2,0,@34 10654:D6,848|483b65187305ff5558cd014c8b304d89f541f6c6010f84ee0100004983fe010f85b900000041f6c5010f849f0000004983fd010f85850000004c8b70084c8b60104c8b58184c8b50204d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d8b65184d8966184d8b65104d8966104d8b65084d8966084d8b6d004d892e498b4618ff15c0020000ff25b202000048b8985e620800000000488b5d08ff2348b8385f620800000000488b5d08ff234d89ee41f6c5010f840e0100004983fd030f85d300000041f6c6010f84b90000004983fe030f859f0000004c8b70084c8b60104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e498b1e4883fb017d1048b83060620800000000488b5d08ff2348c7c001000000ff15e40100004989c541f6c50175104d8b650049c7c6010000004d89ebeb7c48b8d808620800000000c348b8a860620800000000488b5d08ff2348b8385f620800000000488b5d08ff2341f6c601741b4983fe077505488b4008c348b80061620800000000488b5d08ff2348b8385f620800000000488b5d08ff2348b8385f620800000000488b5d08ff2348b8385f620800000000488b5d08ff2341f6c30175314d8b4b084d89f24983c202711048b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc94983fe010f8c9d0000004983fe03751049be30096208000000004b8b44a6fcc34c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2341f6c50175304d8b65004d8b5d0849d1ec4d89f249d1ea468824104d89f44983c4024d89dd4d89e6483b65187306ff5558ca0160ebca8060ffbfc3f40000000000ffffffffffffff01|@740,1,@15471,@10657,@10502,@10656|192,0,@719 208,0,@723 361,0,@731 415,0,@123 426,0,@734 442,0,@723 475,0,@736 491,0,@723 507,0,@723 523,0,@723 558,0,@105 610,0,@126 745,0,@117 761,0,@120 10655:D3,32|483b65187305ff5558cd0149be7800110a00000000498b16ff22f40000000000|@727,1,@15469|13,0,@15099 10656:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba9861620800000000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@15473|29,0,@739 10657:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f40000|@741,1,@15472|32,0,@105 10658:D4,40|483b65187305ff5558cd0149c7c08d00000048bb2063620800000000ff251e000000f40000000000|@754,1,@15475,@10660|20,0,@752 10659:D5,80|483b65187305ff5558cd054989c6524c8b2c244d8b6d08498b45004c89f3ff154c0000004c8b34244d8b7608488d642408498b064c8b402048bb7805620800000000ff2520000000f400000000000000|@753,1,@15474,@10512,@10517|58,0,@93 10660:D4,88|483b65187306ff5558ca090153415048c7c3010000004c8b04244c8b4c24084c8b1424ff15470000004989c64c3b3424488d642408740d5a48b8a015620800000000ff22488d64240848c7c001000000c3f4000000000000|@756,1,@15476,@10661|58,0,@165 10661:D5,736|483b65187306ff5558ca09074150415141524c8b304d89f541f6c6010f84c90100004983fe010f85c800000041f6c5010f84a90000004983fd010f858a0000004c8b7008ff7010ff70204983ee014903de537115488d64243048b8d006620800000000488b5d08ff23488b5c2428ff158c0200004989c64983fe01753d488b442408488b5c24284c8b4424104c8b4c2420415a488d642410415d488d64241049bc80636208000000004154ff7424084c896c2410ff253e02000041ff36ff742410ff742438e9c1010000488d64241848b8985e620800000000488b5d08ff23488d64241848b8385f620800000000488b5d08ff23488d6424084d89ee41f6c5010f84d00000004983fd03754141f6c60174264983fe03750bff7008ff3424e9dd000000488d64241048b8a860620800000000488b5d08ff23488d64241048b8385f620800000000488b5d08ff2341f6c601746e4983fe077553ff7008488b542408488b0424ff124c8b34244d8b36488d6424104e8d347501000000488b0424492bc6488d642408711048b8d006620800000000488b5d08ff234883c0014883f8017e01c348c7c001000000c3488d64241048b80061620800000000488b5d08ff23488d64241048b8385f620800000000488b5d08ff23488d64241048b8385f620800000000488b5d08ff23488d64241848b8385f620800000000488b5d08ff234c8b34244983fe017e3f488b54241048b8b017620800000000ff124c8b2c244983ed027115488d64242048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b442410482b0424488d6424087115488d64241048b8d006620800000000488b5d08ff23488d6424104883c0014883f8017e01c348c7c001000000c3f64424080175414c8b742408498b064d89f641ff7608488b5c24204c8b4424084c8b4c24404c8b542438e846fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb8488d642410584883c430c3f400|@757,1,@15477,@10663,@10662|91,0,@105 161,0,@755 209,0,@719 230,0,@723 298,0,@734 319,0,@723 395,0,@105 435,0,@736 456,0,@723 477,0,@723 498,0,@723 529,0,@187 556,0,@105 613,0,@105 10662:D3,752|483b65187305ff5558cd094989de4c8b284d89ec41f6c5010f84690200004983fd010f85e100000041f6c4010f84c70000004983fc010f85ad0000004c8b68084c8b58104c8b50184c8b48204d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d894c24184d895424104d895c24084d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8b5c24184d895d184d8b5c24104d895d104d8b5c24084d895d084d8b24244d8965004d8b6d184d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8934244d89e641554156e9ae01000048b8985e620800000000488b5d08ff2348b8385f620800000000488b5d08ff234d89e541f6c4010f84610100004983fc030f85d600000041f6c5010f84bc0000004983fd030f85a20000004c8b68084c8b58104d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8b5c24084d895d084d8b24244d8965004d8b6d004d3bee7f384d2bf5711048b8d006620800000000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348b8a860620800000000488b5d08ff2348b8385f620800000000488b5d08ff2341f6c501746b4983fd0775554c8b68084d8b6d004e8d2c6d010000004d3bee7f384d2bf5711048b8d006620800000000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348b80061620800000000488b5d08ff2348b8385f620800000000488b5d08ff2348b8385f620800000000488b5d08ff2348b8385f620800000000488b5d08ff23f644240801754a4c8b742408498b064d89f641ff76084c8b6c24084d89ee4983fd01750949c7c401000000eb0e4d89f6498b1ee831fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaf584883c408c3f400|@759,1,@15479|235,0,@719 251,0,@723 413,0,@105 472,0,@734 488,0,@723 542,0,@105 601,0,@736 617,0,@723 633,0,@723 649,0,@723 10663:D4,1232|483b65187306ff5558ca09074989c65341504151415241f6c6010f85f6010000498b0641ff76084c8b304d89f541f6c6010f84ca0100004983fe030f859d000000f60424017409488d64242058c2100041f6c50174734983fd037558ff7008ff70104c8b7424284983fe037505e9a40200004c8b6c24304d89ee4c3b6c24087f05e9900200004d89f64c2b7424087115488d64243848b8d006620800000000488b5d08ff234983c601ff7424104156e96b010000488d64242848b8a860620800000000488b5d08ff23488d64242848b8385f620800000000488b5d08ff234d89ee41f6c5010f84010100004983fd070f85ae00000041f6c6010f848f0000004983fe077574ff7008488b542418488b0424ff124c8b34244d8b36488d6424084e8d347501000000488b5c2420492bde7115488d64242848b8d006620800000000488b5d08ff234883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e987feffff488d64242848b80061620800000000488b5d08ff23488d64242848b8385f620800000000488b5d08ff23488b5424304c8b542438488b5c24084c8b4424204c8b4c2410ff124889c3584c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e914feffff488d64242848b8385f620800000000488b5d08ff23488d64242848b8385f620800000000488b5d08ff23488d64241858c21000f6442408010f85a00000004c8b742408498b064d89f641ff76084c8b3041f6c60174734983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb3c488b5c2408ff15660200004989c641f6c601751c4d8b26415d4c8924244c896c2408483b65187303ff5558e978ffffff488d64241849c7c601000000eb3d488d64245048b8385f620800000000488b5d08ff234d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c4084983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03753f488b54242048b8a015620800000000ff124c8b2c244983ed014c8b7424184d03f57115488d64243848b8d006620800000000488b5d08ff234156e9ae000000488d642408ff34244c8b34244983fe017e3f488b54242048b8b017620800000000ff124c8b2c244983ed027115488d64243848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b5c2428482b1c24488d6424087115488d64242848b8d006620800000000488b5d08ff234883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e9fdfbffff4c8b34244983fe017e3f488b54242848b8b017620800000000ff124c8b2c244983ed027115488d64244048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b5c2448482b5c24187115488d64243848b8d006620800000000488b5d08ff234883c301482b1c24488d6424087115488d64243048b8d006620800000000488b5d08ff23488d6424084883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e932fbfffff400|@758,1,@15478,@10662|151,0,@105 187,0,@734 208,0,@723 312,0,@105 384,0,@736 405,0,@723 499,0,@723 520,0,@723 700,0,@723 797,0,@165 832,0,@105 878,0,@187 905,0,@105 962,0,@105 1044,0,@187 1071,0,@105 1124,0,@105 1160,0,@105 10664:D3,24|483b65187305ff5558cd0148c7c029000000c3f400000000|@700,1,@15480| 10665:D4,40|483b65187305ff5558cd0149c7c08d00000048bb2063620800000000ff251e000000f40000000000|@754,1,@15481,@10660|20,0,@752 10666:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc0801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15482,@10597,@10667,@10580|58,0,@224 72,0,@15108 10667:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15483,@15108| 10668:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc1801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15484,@10597,@10669,@10580|58,0,@224 72,0,@15109 10669:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15485,@15109| 10670:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc4801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15486,@10597,@10671,@10580|58,0,@224 72,0,@15112 10671:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15487,@15112| 10672:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc3801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15488,@10597,@10673,@10580|58,0,@224 72,0,@15111 10673:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15489,@15111| 10674:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc5801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15490,@10597,@10675,@10580|58,0,@224 72,0,@15113 10675:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15491,@15113| 10676:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc2801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@15492,@10597,@10677,@10580|58,0,@224 72,0,@15110 10677:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15493,@15110| 10678:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19370| 10679:D9,2344|488dbc2440ffffff483b7d187306ff5560ca09015041506a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a0148bad8666208000000004889d8488b9c24880000004989e0ff1511090000ff3424ff742410ff742420ff742430ff7424404c8b7424504c8b6c24584c8b6424604c8b5c24684c8b5424704c8b4c24784c8b842480000000488bbc2488000000488bb42490000000488b942498000000488b8c24a0000000488b9c24a8000000498d8770ffffff483b45107306ff5550cace7f4989c748c740f81100000048899880000000488948784889507048897068488978604c8940584c8948504c8950484c8958404c8960384c8968304c8970284c8b34244c897020488d6424084c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488da424900000004c8b342441f6c60175454d8b264d8b6e084d8b1c244c3b1df807000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49bec86d620800000000eb174d8b364d8b2e4c3b2d970700000f85150700004d8b76104156ff75084c8d35520000004156488965086a016a01488b5c24304c8b4424284989e1ff155c070000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c408415e4c8975084883c418c3488b65084883c408415e4c8975084c8b284d89ee4983fd03751d5a48b8006e620800000000ff1248b8406e620800000000488b5d08ff234c3b35e10600000f8541030000488b401048bbb007620800000000ff15bf0600004989c64d8b2e4e8d2c6d010000004983fd01750f49bcd06e620800000000e9b30000004d89eb4983c3344c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b154c0600000f87bf0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbd06e62080000000048c7c135000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c242248d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be006f620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15700500000f87d60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc006f62080000000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b24244d8b34244e8d2c75010000004983fd01750f49bea015620800000000e99f0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158b0400000f87e40000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e0a418066ffbf488b542408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70007000000ff12498d47d8483b45107303ff55504989c748c740f80400000049be286f6208000000004c8970184c8b34244c897010488d64241049bee8566208000000004c89700848c700cf000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff234c8b70084d8b2e4e8d2c6d010000004983fd01750f49bca05b620800000000e9b30000004d89eb4983c3164c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15060300000f87bf0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bba05b62080000000048c7c117000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241348d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be586f620800000000e9b60000004d89eb4983c3484c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b152a0200000f87d60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc586f62080000000048c7c149000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b24244d8b34244e8d2c75010000004983fd01750f49bea015620800000000e99f0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15450100000f87e40000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e0a418066ffbf488b542408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70007000000ff12498d47d8483b45107303ff55504989c748c740f80400000049be906f6208000000004c8970184c8b34244c897010488d64241049bee8566208000000004c89700848c700cf000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241048b87850620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@7221,1,@18361,@10501,@15140,@10688,@15128,@15128,@10680|59,0,@779 426,0,@836 582,0,@838 594,0,@840 627,0,@114 663,0,@843 803,0,@843 875,0,@844 1033,0,@844 1096,0,@165 1339,0,@845 1366,0,@663 1398,0,@117 1419,0,@117 1440,0,@117 1477,0,@696 1617,0,@696 1689,0,@846 1847,0,@846 1910,0,@165 2153,0,@847 2180,0,@663 2212,0,@117 2233,0,@117 2254,0,@117 2275,0,@621 10680:D17,1800|483b65187306ff5558ca0d01505341504c8b74240841f6c60175454d8b264d8b6e084d8b1c244c8b52084d3bda75204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49bef066620800000000eb134d8b364d8b2e4c8b62084d3bec750d4d8b761041564c8b742410eb15488d64241848b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc606000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bee867620800000000eb134d8b364d8b2e4c3b2d65060000750d4d8b761041564c8b742418eb15488d64242048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d2106000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9c40400004d8b364d8b2e4c3b2dbd05000075064d8b7610eb15488d64242848b87850620800000000488b5d08ff2341564c8b74242041f6c60175454d8b264d8b6e084d8b1c244c3b1d7905000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9920300004d8b364d8b2e4c3b2d1505000075064d8b7610eb15488d64243048b87850620800000000488b5d08ff234156488b54241048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c54c8b74243041f6c60175444d8b1e4d8b66084d8b134c3b15ae04000075204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0060ebb649c7c6010000004983fe01750f49be2068620800000000e93e0200004d8b364d8b264c3b254a04000075064d8b7610eb15488d64244048b87850620800000000488b5d08ff2349c7c441000000498d5ff0483b5d107306ff5550ca00704989df48c743f801000000c643ff404c892349c7c461000000498d57f0483b55107306ff5550ca08704989d748c742f801000000c642ff404c892249bcd808620800000000498d4ff0483b4d107306ff5550ca0c704989cf48c741f801000000c641ff404c892149c7c401000000498d77f0483b75107306ff5550ca0e704989f748c746f801000000c646ff404c892649c7c4530000004d8d47f04c3b45107306ff5550ca4e704d89c749c740f80100000041c640ff404d892049c7c4010000004d8d57f04c3b55107306ff5550ca4e714d89d749c742f80100000041c642ff404d89224c8b24244d8d4ff04c3b4d107306ff5550ca4e754d89cf49c741f80100000041c641ff404d8921415c498d7ff0483b7d107306ff5550ca4e774989ff48c747f801000000c647ff404c89274d89eb4d8d67f04c3b65107306ff5550cace6f4d89e749c74424f80100000041c64424ff404d891c244d8d5ff04c3b5d107306ff5550cace774d89df49c743f80100000041c643ff404d892b4c8b6c242049895d0049894d084989551049897518488b7424304989752049897d28488b3c2449897d30488d642408488b7c240849897d38488b3c2449897d40488d6424104d8945484d894d504d8955584c8b14244d895560488d6424104c8b14244d895568488d6424104d895d704d8965784d89b58000000048c7c001000000c341f6c60175444d8b1e4d8b66084d8b134c3b15fa01000075204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0060ebb649c7c6010000004983fe017515488d64244048b8b86c620800000000488b5d08ff234d8b364d8b264c3b259001000075094d8b7610e968fdffff488d64244048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d5001000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2de600000075094d8b7610e913fcffff488d64243048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e9e1faffff488d64242848b87850620800000000488b5d08ff23f4000000|@835,1,@15502,@15129,@15129,@15115,@15115,@15130,@15130,@15130,@15130,@15115,@15115,@15129,@15129,@15114,@15114|111,0,@780 156,0,@621 260,0,@786 305,0,@621 409,0,@788 450,0,@621 561,0,@788 602,0,@621 748,0,@788 789,0,@621 887,0,@123 1429,0,@828 1474,0,@621 1583,0,@828 1628,0,@621 1737,0,@828 1782,0,@621 10681:D3,32|483b65187305ff5558cd0148b80067620800000000488b5d08ff23f400000000|@785,1,@15496|13,0,@781 10682:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@787,1,@15497| 10683:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@787,1,@15498| 10684:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@787,1,@15499| 10685:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@787,1,@15500| 10686:D3,32|483b65187305ff5558cd0149be7800110a00000000498b16ff22f40000000000|@727,1,@15501|13,0,@15099 10687:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@15503| 10688:D23,2648|483b65187306ff5558ca09034989de50415041514c8b6c240841f6c50175464d8b5d004d8b65084d8b134c3b15d70a000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750c49bdc06f620800000000eb154d8b6d004d8b65004c3b25730a0000750d4d8b6d1041554c8b6c2410eb15488d64241848b87850620800000000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b152f0a000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2068620800000000e9a00800004d8b6d004d8b65004c3b25c809000075064d8b6d10eb15488d64242048b87850620800000000488b5d08ff23415541ff76504d8b4660498b76704d8b4e58498b8688000000498b9e800000004d8b6e284d8b5e384d8b5648498b4e784d8b6630498b7e68498d57e8483b55107306ff5550cacb7f4989d748c742f8020000004c89720849bed81e9209000000004c89324d8d77904c3b75107306ff5550cacf3f4d89f749c746f80d0000004989466049895e5849894e50498956484989764049897e384d8946304d894e284c8b0c244d894e204d8956184d895e104d8966084d892e41564c8b7424304c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b50104d89d64889c04c8b48484d89cc4d8b124d8b094983f95374054d89caeb004983fa610f85620200004889c04889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15fb060000ff15ed0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1525060000eb004c8b74244041f6c60175454d8b264d8b6e084d8b1c244c3b1dfe05000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bec086620800000000eb174d8b364d8b2e4c3b2d9d0500000f85730400004d8b761041564c8b6c24504d8b75104d89ed4d8b65484d8b364d8b24244983fc5374054d89e6eb004983fe61750a488d642408e9370300004983fe010f84280300006a016a016a0148c7c0010000004889e3ff1537050000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424284d89650849bc18749209000000004d8965004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8968084d893048b80887620800000000488b5c2450ff15b90400004989c641564c8b7424384983fe03757bff7424404c8b742408498b1e48b8388762080000000049b8d80862080000000049c7c1214e0000ff15740400004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000488b1424ff12488d642408eb00488b5c24584c8b73184d8b364983fe03752c488d642448415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c410c348ba28c1620800000000488b04244c8b442428ff15c7030000488b5c24584c8b73184d8b364983fe03755c48bac88b640800000000488b442408488b1c24ff15940300004989c6488d6424104d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004c8b7424384d892e49c746080100000048c7c0010000004883c450c36a016a01488b4424104989e0ff15370300005841584c8b7424584d8b76184d8b364983fe03755c48bac88b640800000000488b442408488b1c24ff15010300004989c6488d6424104d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004c8b7424384d892e49c746080100000048c7c0010000004883c450c348bac0be640800000000488b5c2450ff15a10200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244c89eb4d896e0849bd48aab109000000004d892e415648bac88b640800000000488b442410ff15480200004989c64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8934244d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004c8b2c244d892e488d6424184c8b6c24384d8965004d89750848c7c0010000004883c450c3488d6424084d89ed4d8b75184d8b364983fe03752c488d642438415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c410c34d89ed4d8b75284d89ed4d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d20488d6424084d8965184c8b24244d896510488d6424084d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8934244c8b6c242049be300d6608000000004d8965004d89750848c7c0010000004883c438c3488d64245048b87850620800000000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15a700000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64242048b8b86c620800000000488b5d08ff234d8b6d004d8b65004c3b253a00000075094d8b6d10e904f7ffff488d64242048b87850620800000000488b5d08ff23f400|@7222,1,@18362,@15123,@15123,@11955,@12098,@11955,@13546,@11955,@10885,@10874,@14312,@10906,@15265,@15265,@10693,@10697,@10696,@15123,@15123,@15128,@15128|116,0,@848 163,0,@621 268,0,@788 311,0,@621 414,0,@10690 981,0,@850 991,0,@851 1166,0,@853 1189,0,@856 1300,0,@998 1468,0,@10710 1516,0,@1000 1565,0,@1002 1575,0,@123 1701,0,@1172 1738,0,@1441 1781,0,@4729 1912,0,@4729 2004,0,@5100 2070,0,@13513 2085,0,@4729 2233,0,@1172 2440,0,@7218 2475,0,@621 2585,0,@828 2632,0,@621 10689:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@15504| 10690:D4,40|483b65187305ff5558cd054c8b7208498b561048c7c001000000ff12ff251e000000f40000000000|@849,1,@15505,@10691| 10691:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15506| 10692:D3,56|483b65187305ff5558cd014883f813720e4883f81b770848c7c003000000c34883f841750848c7c003000000c348c7c001000000c3f40000|@852,1,@15507| 10693:D19,5584|483b65187305ff5558cd0552504c8b34244d89f541ff364d89ed4d89ee41ff75084d89f641ff76104c8b7424184d8b2e4d8b6d004983fd13720b4983fd1b7705e90c1000004983fd410f840210000041554d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b2c244d89ee4983fd5d0f851b070000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b264d89e54983fc5d0f846d02000049be30096208000000004f8b6caefc4d8b75004e8d2475010000004983fc01750f49be0871620800000000e9ad0000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15eb1300000f87f20100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb087162080000000048c7c121000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1848d1e9f3a4418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff152b130000ff151d1300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12e93a040000488d64242848b8f807620800000000488b5d08ff234c8b7424184d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b264d89e54983fc5d0f846d02000049be30096208000000004f8b6caefc4d8b75004e8d2475010000004983fc01750f49be2871620800000000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15951000000f87f20100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb287162080000000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff15cd0f0000ff15bf0f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12e9ec000000488d64242848b8f807620800000000488b5d08ff234c8b342449c706730000004c8b7424184d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9150900004d89f64d89f54981fefb000000757f488d6424084c8b342449c7065d0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9870800004d89ed4d89ee4981fdf7000000757f488d6424084c8b342449c706410000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9f90700004d89f64d89f54981febf000000757f488d6424084c8b342449c706790000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e96b0700004d89ed4d89ee4981fdbb000000757f488d6424084c8b342449c7065b0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9dd0600004d89f64d89f54981feb7000000757f488d6424084c8b342449c7063f0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e94f0600004d89ed4d89ee4983fd53757f488d6424084c8b342449c7065f0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9c40500004d89f64d89f54983fe510f859a000000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe55740d4c8b342449c70643000000eb0b488b442418ff15360a0000e91a0500004d89ed4d89ee4983fd59757f488d6424084c8b342449c706170000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e98f0400004d89f64d89f54983fe777521488d6424084c8b342449c706610000004c8b74241049c70641000000e9620400004d89ed4d89ee4983fd457529488d6424084c8b742420498b5e08488b442418ff154c0900004c8b342449c70669000000e92d0400004d89f64d89f54983fe470f85c2000000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe4575214c8b742420498b5e08488b442418ff15930800004c8b342449c70611000000eb1f48b8f81762080000000048bb50716208000000004c8b442418ff155f080000e95b0300004d89ed4d89ee4981fdfd0000000f8597010000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe610f82f20000004983fe730f87e800000048c7c003000000488b5c2418ff15a20700004c8b6c24084d8b65004d8b34244a8d0c75010000004883f901750f49be8020620800000000e98e0000004989cb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e006000077654d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca023c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e41c646087e498d742408498d7e0948d1e9f3a4418066ffbf4d89ed4d897500eb34488d64242848b8f807620800000000488b5d08ff2348b8802062080000000048bb50716208000000004c8b442418ff15a5060000e9b10100004d89f64d89f54983fe097515488d6424084c8b342449c70601000000e9900100004d89ed4d89ee4983fd6172254d89f64983fe73771c488d64240848c7c001000000488b5c2418ff154b060000e95f0100004c8b2c244d89ee4981fd8300000072134d89f64981feb50000007707488d642408eb234c8b2c244d89ee4981fdc300000072154d89f64981fef50000007602eb07488d642408eb1b4c8b34244983fe4f740c49c7c629000000e935010000488d64240848b8d80862080000000048bbb8716208000000004c8b442418ff15bc050000e9d80000004d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e9ffeeffff4c8b34244d8b36488d6424084983fe537515488d642410488b54240858488d642408e9b0eeffff488d64242048c7c001000000c34983fe01750949c7c601000000eb334d89f44983c40e49bd607162080000000049d1ec4f0fb66c25004e8d2c6d010000004c3b2c240f85f103000049c7c6030000004983fe037529488d64240848b8d80862080000000048bb50716208000000004c8b442418ff1537040000e98c03000048bab007620800000000488b0424ff15160400004989c6488d6424084d8b2e4e8d2c6d010000004983fd01750f49bcf071620800000000e9b30000004d89eb4983c3264c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15760300000f87340300004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbf07162080000000048c7c127000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee017620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b159a0200000f874b0200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e22418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff159b010000ff158d0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff124c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9cafbffff488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234d89f54983ed024d89ee483b65187306ff5558ca0040e9b9fbfffff4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@865,1,@15510,@10697,@10696,@10503,@10698,@10698,@10702,@10698,@10702,@10698,@10705,@10705,@10707,@10697,@10696,@10697,@10696|383,0,@126 416,0,@857 553,0,@857 807,0,@851 988,0,@117 1229,0,@126 1262,0,@858 1399,0,@858 1653,0,@851 1834,0,@117 3500,0,@190 3510,0,@859 3739,0,@281 3910,0,@117 3926,0,@281 3936,0,@859 4143,0,@123 4153,0,@862 4469,0,@860 4524,0,@123 4534,0,@859 4560,0,@114 4605,0,@864 4745,0,@864 4817,0,@189 5191,0,@851 5478,0,@117 5499,0,@117 10694:D3,104|483b65187305ff5558cd0149c7c6290000004983fe01750848c7c001000000c34d89f44983c40e49bd607162080000000049d1ec4f0fb66c25004e8d2c6d010000004c3be8750848c7c003000000c34d89f54983ed024d89ee483b65187306ff5558ca0140ebabf4|@861,1,@15508|41,0,@860 10695:D3,120|483b65187305ff5558cd014881f883000000720b4881f8b50000007702eb144881f8c3000000720d4881f8f50000007602eb02eb0e4883f86172104883f8737602eb0848c7c003000000c34883f84f750848c7c003000000c34881f8bf000000750848c7c003000000c348c7c001000000c3f40000000000|@863,1,@15509| 10696:D4,56|483b65187305ff5558cd094989c14989da4d8b314e8d04750100000048c7c30100000048c7c001000000ff2520000000f400000000000000|@996,1,@15523,@10709| 10697:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86072620800000000c3f400000000000000|@869,1,@15511|190,0,@866 247,0,@867 10698:D8,2272|483b65187306ff5558ca090141504c8b34244d89f541ff364d89ed4d89ee41ff75084d89f64d89f041ff7610ff15e60800004989c641564c8b7424184d8b364983fe5d0f85a20100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b364981fe83000000720b4981feb50000007702eb1b4981fec30000000f82030100004981fef50000007605e9f50000004c8b2c244d8b75004e8d3475010000004983fe017514488d64242048b80019620800000000e9a50000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d940700000f87800000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d642408488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4883c418415848bbb871620800000000e936feffff488d64242848b8f807620800000000488b5d08ff2349c7c529000000e9280100004c8b2c244d89ee4c8b6424104d892c244d89f64d8b264d89e54e8d2465010000004983fc010f8eb60000004d89f64e8d2c6d010000004983fd017f15488d64242848b8a838620800000000488b5d08ff234d89f64d0fb676084e8d2c750100000049be30096208000000004f8b6caefc4c3b2dae060000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750e488d64240849c7c675000000eb2e48b8c072620800000000488b1c24ff15280600004989c6488d6424084983fe01750949c7c631000000eb034d8b364c8b2c244d897500488d64240848c7c0010000004883c418c34983fd01750949c7c501000000eb314d89eb4983c30e49bc607162080000000049d1eb4f0fb6241c4e8d2465010000004d3be60f854c05000049c7c5030000004983fd030f85f50000004c8b2c244d8b75004e8d3475010000004983fe017514488d64242048b80019620800000000e9a50000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d190500000f87800000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d642408488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4883c418415848bb5071620800000000e9c3fbffff488d64242848b8f807620800000000488b5d08ff234c8b2c244d8b65004e8d1c65010000004983fb017514488d64242049bc2882620800000000e9bf0000004d89da4983c22a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d1c0400000f87d10300004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba288262080000000048c7c12b000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241d48d1e9f3a441806424ffbf4883c4184d8b2c244e8d2c6d010000004983fd01750f49ba0019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d340300000f87dc0200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf49bd30096208000000004f8b64b5fc4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b30000004983fb0175084d89d6e9a50000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05500200000f87eb0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff1546010000ff15380100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d64240848b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234d89ec4983ec024d89e5483b65187306ff5558ca0060e960fafffff400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@968,1,@15513,@10697,@10696,@10580,@194,@10700|263,0,@201 445,0,@862 465,0,@117 558,0,@502 590,0,@126 641,0,@194 718,0,@870 811,0,@860 890,0,@201 1072,0,@859 1092,0,@117 1135,0,@967 1275,0,@967 1359,0,@201 1530,0,@126 1964,0,@851 2144,0,@117 2165,0,@117 2186,0,@117 10699:D4,232|483b65187305ff5558cd054c8b304e8d2c750100000049c7c6010000004983fd01757e4c89f04c8b6a084d89ee4983fd01751048b8a054620800000000488b5d08ff2348d1e849d1ee4833d249f7f6488d1c5501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff1574000000a8017401c348b80855620800000000488b5d08ff234d89eb4983eb024d89ec4983c40e49d1ec4e0fb624204e8d2465010000004d89f24d6bd2074983ea064f8d6414ff4d89dd4d89e6483b65187306ff5558ca0560e937fffffff400|@655,1,@15512,@10599|53,0,@649 126,0,@651 147,0,@652 10700:D5,96|483b65187306ff5558ca09014989de50498b184d89c14d89f048c7c001000000ff155a0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff251e000000f40000000000|@969,1,@15514,@10502,@10701| 10701:D3,360|483b65187306ff5558ca090353415041514c8b74241041ff36488b542410488b0424ff124989c64983fe030f85290100004c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d64240849be30096208000000004c8b2c2443ff74aefc48c7c001000000488b5c24204c8b4424184c8b4c2410e8d5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64242048c7c001000000c3f4|@970,1,@15515|255,0,@126 10702:D14,4000|483b65187305ff5558cd0950534c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d89f041ff76584c8b74240849c7063d00000048b8d80862080000000048bbd082620800000000ff15ac0f00004989c54c8b6424104d89e64d892c244c8b6c24284983fd030f84320300004c8b6c24184d8b6d004981fdef00000075654d89f64d8b2e4c3b2d670f0000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be3019620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f85aa0200004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b264d89e54981fcf10000000f85790100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b264d89e54983fc61720d4983fc737707488d642408eb304981fcc300000072104981fccd0000007707488d642408eb174981fc8300000072594981fc8d0000007750488d6424084c8b342449c70687000000488d64240848b8008362080000000048bb18836208000000004c8b442410ff158d0d00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500f10000004c8b24244d892c24488d6424084d89f649c706ef00000048c7c0010000004883c428c34d89f64d89ec4983fd6172564983fd737750488d6424084c8b342449c70687000000488d64240848b8508362080000000048bbd0826208000000004c8b442410ff15ad0c00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b24244d892c24488d6424084d89f649c706ef00000048c7c0010000004883c428c34c8b7424184d8b264d89e54981fcf10000000f85b00100004c8b6424104d8b1c244c3b1d140c0000750949c7c403000000eb4b4d8b234e8d2465010000004983fc03753349bc3019620800000000498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85400100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b2e4d89ec4983fd61720d4983fd737707488d642410eb304981fdc300000072104981fdcd0000007707488d642410eb174981fd8300000072494981fd8d0000007740488d64241048b8688362080000000048bb18836208000000004c8b442410ff15d50a00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b24244d892c24488d6424084d89f649c706f100000048c7c0010000004883c428c34d89ec4983fd5d7502eb444d89e54981fc8b000000750949c7c603000000eb1c4d89ee4981fecb000000750949c7c603000000eb0749c7c6010000004983fe03740d488d64243048c7c001000000c34c8b7424184d8b364983fe5d0f851e0500004c8b74240849c706570000004c8b6c24104d8b5d004d8b334e8d2475010000004983fc01750f49be0019620800000000e99b0000004d89e24983c2024c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0c45010000004c3b0d5e0900000f879e0400004d89c84e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983e9024bc7448efc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049d1ec43c604262e418066ffbf4d89ed4d8975004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b2e4983fd6172184983fd73770949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f84660300004c8b6c24104d8b6d004d8b65004e8d2465010000004983fc01750f49ba8083620800000000e9ad0000004d89e34983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0de90700000f87f10200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a49bb808362080000000048c7c12f000000498d7308498d7a0848d1e9f3a44c89e1498d7508498d7a1f48d1e9f3a4418062ffbf4d89f64d8b2e49be30096208000000004f8b64aefc4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b30000004983fb0175084d89d6e9a50000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ee0600000f87e90100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424284d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424284d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff15ec050000ff15de0500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24204d8b75184d89ed498b556049c70603000000ff12eb53488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234c8b742410498b0648bbd0826208000000004c8b442420ff15f80400004989c64c8b6c24104d897500eb15488d64243048b8f807620800000000488b5d08ff234c8b7424184d8b264d89e54981fc8b0000007502eb2f4d89ee4981fecb000000750949c7c603000000eb0749c7c6010000004983fe03740d488d64243048c7c001000000c34c8b74241841ff364c8b6c24284d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b6c24204d8b65004d89e64981fcfd0000000f85290200004c8b6c24284d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b6c24204d8b65004d89e64983fc610f82320100004983fc730f8728010000488d6424104c8b342449c70657000000488d6424084c8b34244d8b2e4d8b75004e8d3475010000004983fe01750f48b8a883620800000000e9a50000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc60200000f87a00000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c604284549d1ee42c64430017e8060ffbf48bbd0826208000000004c8b442410ff157c0200004989c64c8b2c244d897500488d64240848c7c0010000004883c418c3488d64242048b8f807620800000000488b5d08ff234d89ed4d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706fd0000004c8b6424084d8934244c8b34244d89ed4d897500488d64241048c7c0010000004883c428c34d89ed4d89f44983fe610f82260100004983fe730f871c010000488d6424104c8b342449c70657000000488d6424084c8b34244d8b2e4d8b75004e8d3475010000004983fe01750f48b8281b620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d050100000f87940000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430458060ffbf48bbd0826208000000004c8b442410ff15c70000004989c64c8b2c244d897500488d64240848c7c0010000004883c418c3488d64242048b8f807620800000000488b5d08ff234d89ed4d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c8b6424084d8934244c8b34244d89ed4d897500488d64241048c7c0010000004883c428c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@980,1,@15518,@10700,@10700,@10700,@10697,@10696,@10700,@203,@10700,@10700,@203,@10700|68,0,@123 78,0,@971 184,0,@203 590,0,@973 600,0,@974 806,0,@976 816,0,@971 1010,0,@203 1262,0,@977 1272,0,@974 1533,0,@201 1898,0,@978 2035,0,@978 2092,0,@126 2526,0,@851 2704,0,@117 2725,0,@117 2749,0,@971 2789,0,@117 3197,0,@979 3377,0,@971 3431,0,@117 3638,0,@224 3806,0,@971 3860,0,@117 10703:D3,48|483b65187305ff5558cd014883f86172164883f873770848c7c003000000c348c7c001000000c348c7c001000000c3f4|@972,1,@15516| 10704:D3,104|483b65187305ff5558cd014883f861720e4883f873770848c7c003000000c34881f8c300000072114881f8cd000000770848c7c003000000c34881f88300000072194881f88d000000770848c7c003000000c348c7c001000000c348c7c001000000c3f400000000|@975,1,@15517| 10705:D6,1072|483b65187305ff5558cd0950534c8b6c24084d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408ff75084c8d353100000041564889650848c7c001000000488b5c24184c8b4424284c8b4c2420ff15a10300004989c649c7c401000000e9a7010000488b65084883c408415e4c8975084c8b304c3b7424100f8580010000488d6424184c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8e88362080000000048bb4870620800000000ff158d020000ff157f0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d642420488b5d08ff2341f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd41f6c40175104d8b1c2449c7c5010000004d89e6eb2949bed8086208000000004c8b6c24104d89750048c7c0010000004883c408415e4c8975084883c420c341f6c60175314d8b4e084d89ea4983c202711048b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc94983fd010f8ca20000004983fd03751449be30096208000000004f8b749efce9d40000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db5000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe9adfefffff400000000ffffffffffffff01|@989,1,@15519,@10697,@10696,@10706|427,0,@981 437,0,@851 712,0,@123 772,0,@105 824,0,@126 964,0,@117 980,0,@120 10706:D9,3984|483b65187306ff5558ca09035053415041514c8b74241041ff364c8b34244d89f54981feb90000000f85a2020000488d6424084c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b74241041ff364c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b2c244d89ee4983fd1372134d89f64983fe1b770a488d642408e99c0100004c8b34244d89f54983fe410f84860100004d89ed4d89ee4981fdbd0000000f8507010000488d6424084c8b74241041ff364c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d89750849c74500b90000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706bd000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408488b5c24104c8b4424084159488d642418e9a6fdffff4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424204d89650849c74500b9000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084d89f64c8930488d642408488b5c24104c8b4424084159488d642418e93afdffff488d642408e9c50600004d89ed4d89ee4983fd150f851f010000488d6424084c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408498d47d8483b45107303ff55504989c748c740f80400000049be20846208000000004c89701848c740100100000049be50846208000000004c8970084c8b34244c8930488d642408488b5d08ff234d89f64983fe450f85d1000000488d6424104c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b2c244d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642418eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d64241858c34c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b34244d89f54983fe097553488d642408498d47d8483b45107303ff55504989c748c740f80400000049be70846208000000004c89701848c740100100000049be50846208000000004c8970084c8b34244c8930488d642408488b5d08ff234d89ed4d89ee4983fd4372114d89f64981fefd0000007705e98e0300004c8b34244c89f04983fe410f847d03000048bab007620800000000ff15eb0900004989c6488d6424084d8b2e4e8d2c6d010000004983fd01750f49bca084620800000000e9b30000004d89eb4983c32c4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b154b0900000f87fa0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bba08462080000000048c7c12d000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241e48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bec884620800000000e9b60000004d89eb4983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b156f0800000f87110200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bcc88462080000000048c7c121000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424104d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424104d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff1556070000ff15480700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12488b442418488b5c24104c8b4424084159488d642418e9d8f6ffff488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c8970084c8b34244c8930488d642408488b5c24104c8b4424084159488d642418e96bf6ffff4c8b7424084d8b2e4d8b6d004983fd13720b4983fd1b7705e9940300004983fd410f848a0300004d89ee4981feb90000007505e9160500004c8b7424104d8b2e49be30096208000000004b8b44aefc48bbb007620800000000ff15c40500004989c64d8b2e4e8d2c6d010000004983fd01750f49bce884620800000000e9b30000004d89eb4983c32a4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15310500000f87e40200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbe88462080000000048c7c12b000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241d48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be1085620800000000e9b60000004d89eb4983c3164c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15550400000f87fb0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc108562080000000048c7c117000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424104d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424104d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4870620800000000ff1534030000ff15260300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12e902010000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff234d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e977fbffff4c8b7424104d8b2e4d89ec4981fdb90000000f84ad0000004d89e54983fc45741f4d89ee4983fe09750949c7c603000000eb0749c7c6010000004983f602eb0749c7c6010000004983fe0375784c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e93bffffff4c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408488b442418488b5c24104c8b4424084159488d642418e998f0fffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@990,1,@15520,@10697,@10696,@10501,@10697,@10696,@10503|971,0,@982 993,0,@983 1395,0,@984 1417,0,@983 1495,0,@114 1536,0,@985 1676,0,@985 1748,0,@986 1906,0,@986 2148,0,@851 2351,0,@117 2372,0,@117 2519,0,@126 2534,0,@114 2570,0,@987 2710,0,@987 2782,0,@988 2940,0,@988 3182,0,@851 3363,0,@117 3384,0,@117 10707:D4,64|483b65187305ff5558cd01ff30488b58204989c048c7c001000000ff15370000004989c64c8b2c244d897500488d64240848c7c001000000c3f4000000000000|@992,1,@15521,@10708| 10708:D5,720|483b65187306ff5558ca0901534150488b54240848c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b3641564c8b34244983fe090f85e20100004c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8908562080000000048bb4870620800000000ff156e010000ff15600100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff1258488d642410c3488b54241048c7c001000000ff124989c64983fe01750949c7c509000000eb034d8b2e4c8b24244d89e64983fc55752a4983fd537524488d6424105a48c7c001000000ff124989c64983fe01750848c7c009000000c3498b06c34d89f64983fe5175314983fd55752b48c7c001000000488b5c24104c8b442408e85dfdffff4989c54c892c24483b65187303ff5558e97cfdffff4c892c24483b65187303ff5558e96afdfffff40000000000|@993,1,@15522,@10697,@10696|362,0,@991 372,0,@851 10709:D3,1368|483b65187306ff5558ca090750534150415141524c8b6c24184d89ee4c3b6c24100f85e0010000488d6424084c8b6424184d89e54c89f14d3be6750d488d64242048c7c001000000c34889c94d89eb492bcd7115488d64242048b8d006620800000000488b5d08ff234883c1014c8b2c244d8b65004d89e64e8d1465010000004d89db4d89dc4983fb010f8c620100004883f9010f8c430100004d89e44d89e34d8d640cff4d3be27615488d64242048b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb017512493bce750d4d89ee488d642420e9b90000004883f9017514488d64242049bed808620800000000e99f0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d250400000f87970000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500488d642408498d7e0848d1e9f3a4418066ffbf4883c418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048b8f807620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488b14244d89f64d89f44983fe017d0a488d642428e9160300004c8b7424084d8b2e4e8d1c6d010000004d89e44d89e54d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84dc0200004d89ed4983c51049d1ed4d89f64f0fb6342e4a8d047501000000ff124989c64983fe030f85780200004c8b6c24204d89ee4c3b6c24187557488b5c24184889d84883c3027115488d64242848b8d006620800000000488b5d08ff234889c04883c0027115488d64242848b8d006620800000000488b5d08ff234c8b4424104c8b4c2408415a488d642420e91bfdffff488b4c24184889cb4d89f3492bce7115488d64242848b8d006620800000000488b5d08ff234883c1014c8b6c24084d8b65004d89e64e8d1465010000004d89db4d89dc4983fb010f8cb00100004883f9010f8c910100004d89e44d89e34d8d640cff4d3be27615488d64242848b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb01750d493bce75084d89eee9ab0000004883f901750f49bed808620800000000e9960000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d850100000f87ef0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500498d7e0848d1e9f3a4418066ffbf41564889db4889d84883c3027115488d64243048b8d006620800000000488b5d08ff234889c04883c0027115488d64243048b8d006620800000000488b5d08ff234c8b4424184c8b4c24104c8b542408e87bfbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c410c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488b5c24184883c3027115488d64242848b8d006620800000000488b5d08ff23488b4424204c8b4424104c8b4c2408415a488d642420e9cefaffff488d64242848b8a838620800000000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@997,1,@15524|91,0,@105 177,0,@994 245,0,@123 463,0,@117 484,0,@76 505,0,@76 675,0,@105 705,0,@105 764,0,@105 851,0,@994 909,0,@123 1093,0,@105 1123,0,@105 1215,0,@117 1236,0,@76 1257,0,@76 1289,0,@105 1337,0,@502 10710:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15525| 10711:D3,48|483b65187305ff5558cd014883f861750848c7c003000000c34883f801750848c7c003000000c348c7c001000000c3f4|@1001,1,@15526| 10712:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1439,1,@15698,@10713| 10713:D6,448|483b65187305ff5558cd094883fb017f0b48b84887620800000000c34c8b284d89ee4983fd010f85bf0000004c8b70084989d94c89f348b8788762080000000049b86881620800000000ff15980100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48c06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34983fe030f85bf0000004c8b70084989d94c89f348b860c062080000000049b86881620800000000ff15c70000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0c06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488b4008ff251a000000f400|@1440,1,@15699,@10870,@10874,@10874|19,0,@1003 56,0,@1005 66,0,@959 116,0,@866 161,0,@1435 257,0,@1436 267,0,@959 317,0,@866 362,0,@1438 10714:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1012,1,@15527,@10715| 10715:D9,1768|483b65187305ff5558cd09534c8b304d8b1e4d8b76104c8b68084c8b50184c8b60306a016a014983fc03756e4d8b65004983fc0575644d8b4d084d8b294d8b61084d8b4110498b79184d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89214d8d67f04c3b65107306ff5550ca006e4d89e749c74424f8010000004d890c244c8924244c896c2408eb0d48c70424010000004c896c2408ff3424ff7424104d8b2a4e8d2c6d010000004983fd01750f49bc7018620800000000e9a00000004d89e94983c1024c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05e20500000f87ba0500004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89e9498d7208498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000700000041554c3b1d8a0500007502eb374d8b234d89e54e8d2465010000004983fc01752f49bcd808620800000000498d7308498d7c240848c7c100000000483bc9f3a67402eb0c49c7c501000000e91c0100004e8d246d010000004983fc01750f49bd8887620800000000e9a90000004d89e24983c2044c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0da60400000f87710400004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c4104d89e349d1eb43c6441d002049d1ec43c64425013a418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049bba0876208000000004d895d084d8965004155488b5c24304883eb027115488d64243848b8d006620800000000488b5d08ff234c89f0ff15f40300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017504415deb12488b0424ff15af0300004989c5488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004156f6442418010f85fc0000004c8b7424184d8b36498b064d8b76084983fe03750c49bdd887620800000000eb0a49bd88876208000000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c24384883eb027115488d64244048b8d006620800000000488b5d08ff23ff15db0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb0749c7c6010000004156488b5c24384883eb027115488d64244048b8d006620800000000488b5d08ff23488b442418ff151c0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0876208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017504415eeb12488b0424ff15520100004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08886208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3488d64243048b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@1419,1,@15678,@10867,@10868,@10716,@10881,@10716,@123|193,0,@195 440,0,@123 501,0,@1006 753,0,@1007 789,0,@105 979,0,@1009 991,0,@1006 1057,0,@105 1151,0,@866 1235,0,@105 1334,0,@866 1379,0,@1010 1423,0,@866 1495,0,@1011 1583,0,@866 1712,0,@117 1733,0,@117 10716:D11,1128|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84887620800000000c34c8b284d89ee4983fd050f852e0300004c8b7008498b460841ff761041ff761841ff76204c89cbe8abffffff4989c6415648c7c001000000ff15510400004989c048ba6888620800000000488b442410488b5c2420ff152c0400004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060700000041564c8b7424304983ee0241567115488d64244048b8d006620800000000488b5d08ff23488b442420ff15c80300004989c6415648c7c001000000ff15ae0300004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15790300004989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff157e0200004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48ad6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60ad6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c34983fe010f85c4000000488b580848b878ad62080000000049b8d808620800000000ff15f9000000488d642408ff15e60000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0bd6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3488d6424084c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@1434,1,@15694,@10883,@10849,@10882,@10723,@10815,@10814,@10717,@10815|32,0,@1003 108,0,@1013 199,0,@105 247,0,@1014 266,0,@1015 367,0,@866 411,0,@1010 456,0,@866 571,0,@866 616,0,@1285 660,0,@866 705,0,@1286 749,0,@866 887,0,@1287 897,0,@123 958,0,@866 1003,0,@1418 10717:D5,408|483b65187306ff5558ca0d014d89c6a8010f85780100004c8b204c8b68084983fd01757d4d8b2c244d8b642408498d47e0483b45107306ff5550ca0c704989c748c740f8030000004c8960104c89680848c7000d000000488b52084d89f049b9e08862080000000049c7c201000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000049bd48896208000000004c8968084c8930c34883fb037f0b48b86089620800000000c34c8b42084d89f14887c3ff15f6000000ff15e80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bd48896208000000004c8968084c8930c348c7c001000000c3f4|@1030,1,@15530,@10721,@10720|96,0,@1015 145,0,@1019 169,0,@1020 236,0,@1021 280,0,@1022 383,0,@1019 10718:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1018,1,@15528| 10719:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1018,1,@15529| 10720:D4,496|483b65187306ff5558ca09035053415041514c8b7424184c89f34983fe017f10488d64242048b86089620800000000c3f644241001740d488d64242048c7c001000000c3f6442410010f85850100004c8b7424104d8b2e4d8b75004d8b6d08498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700848c7000d000000488b5424084c8b042449b9e08862080000000049c7c201000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb0896208000000004d8966084d892e4156f6442418010f85de0000004c8b6c24184d8b75084c89f341f6c601740c48c7c301000000e99400000041f6c5010f85a1000000488b4424204883e8027115488d64242848b8d006620800000000488b5d08ff234c8b4424104c8b4c2408e8c8feffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec8896208000000004c89334883fb017506584883c420c3584883c420ff255e000000488d64242848b8e089620800000000488b5d08ff23488d64242848b8e089620800000000488b5d08ff23488d64242048b8508a620800000000488b5d08ff23f4000000000000|@1033,1,@15532,@10722|39,0,@1020 148,0,@1015 197,0,@1023 283,0,@105 348,0,@866 392,0,@1024 433,0,@1025 454,0,@1025 475,0,@1028 10721:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d88a620800000000c3f4000000|@1032,1,@15531|75,0,@1031 10722:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15533| 10723:D4,136|483b65187306ff5558ca0d074989d64c89c14c89ca4c89d6505341ff7608498b5e10498b46184d8b6e204d8b66284d8b5e304d8b56384d8b4e404d8b4648498b7e504151415057565251ff7424484989d94c8b442438488b5c24404c895424384989c2488b4424484c895c24404c896424484c896c2450ff2523000000488d642418f40000000000|@1066,1,@15537,@10724| 10724:D22,5336|483b65187306ff5558ca090753415041514152ff15671500004989c64d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e93d000000909090e947000000909090e9bf030000909090e974050000909090e999050000909090e99b080000909090488d64242048b8488b620800000000c25000488d64242048b8788b620800000000c25000498b460841ff76104c8b7424204983fe017f12488d64242848b84887620800000000c25000ff15c31400004c8b304983fe050f852e0100004c8b7424204c89f34983fe037f0f49be4887620800000000e90f0100004889db4883eb027115488d64242848b8d006620800000000488b5d08ff234c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524c8b4424684c8b4c24604c8b542458e8acfeffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb7a488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff234c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524c8b4424684c8b4c24604c8b542458e899fdffff4989c64156488b5c24284883eb027115488d64243048b8d006620800000000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b5424384156415541544153415241514150575652488b4424584c8b4424704c8b4c24684c8b542460e815fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda88b6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c2500041ff760841ff76104c8b6c24284983fd017f12488d64243048b84887620800000000c250004c89f0ff15381100004989c64983fe030f85d2000000488d642408488b0424ff15141100004889c1488d6424084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438488b742430488b542428ff742408ff74240841564155415441534152415141505756524989c848b8a018620800000000488b5c247849b9c08b6208000000004c8b542470ff15921000004989c6488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c25000488b44240848bbd08b620800000000ff152c1000004889c3488b4c24284883e9027115488d64243048b8d006620800000000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b542438ff74241041564155415441534152415141505756524889c849b8c08b6208000000004c8b4c24784c8b542470ff159a0f00004989c66a016a014c8b6c2410e9af0d00004d8b76084983fe017512488d64242048b8788b620800000000c250004c8b6c24104d8b6d004d89f4e98208000041ff7608498b461041ff76184c8b34244d8b6e184d8b5d084d89dc4d8b1b4983fb0375294d89e54d8b6d084c8b6424504d3bec750949c7c503000000eb0749c7c5010000004983fd037502eb064d89f6498b0649c7c6010000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049be608c6208000000004d8975006a016a014c8b4c24584c8b742450415648c7c3010000004c8d4424084c8b542418ff15a10e0000ff3424ff7424104c8b34244983fe017510488d642408415e4883c410e9750100004c8b7424204d8b76184c8b6c246841f6c50175454d8b66084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751e4c8b642468498b14244d89ee498b4618ff124989c64d8b7610498b06eb074d8b7610498b06483b05110e00007502eb334c8b304e8d3475010000004983fe01757449bed808620800000000488d7008498d7e0848c7c100000000483bc9f3a67402eb524c8b34244983fe03488d64240875384d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bd981a6208000000004d892e4883c410eb06415e4883c410e9850000006a016a014c8b4c24784c8b742470415648c7c3010000004c8d4424084c8b542438ff15590d0000415e415d4983fd017507488d642420eb4d4c8b34244983fe03488d64240875384d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bd981a6208000000004d892e4883c410eb06415e4883c41041f6c601755041ff36498b46084883f8017504415ceb3dff15d60c00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff159a0c00004989c4eb0a49bcd8086208000000004c8b34244d8b6e184d8b55084d89d34d8b124983fa0375384d89dd4d8b6d084c8b5c24504d3beb750949c7c503000000eb0749c7c5010000004983fd037511488d64240849c7c501000000e9fc0100004d89f64d8b7610488d642408e9150100004d8b6e084d8b7610498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284d8b75004d8b2e4983fd037538488d642420488b542408ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c250004156ff742420ff742420488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c244048894c24404889542448488974245048897c24584c894424604c8b04244c894c24684989d9488b5c24084c895424704989c2488b4424104c895c24784c89a424800000004c89ac24880000004883c438e9f2f5ffff488d64243841f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004156f6442408010f85ef0200004c8b742408498b064d89f641ff7608ff158c0900004989c64156f6442408010f84e3000000488b0424ff156a0900004989c64983fe03750949c7c603000000eb1d4c8b34244d8b364983fe05750949c7c603000000eb0749c7c6010000004983f6024983fe030f8595000000488b5c24384883eb027115488d64244048b8d006620800000000488b5d08ff234c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484156415541544153415241514150575652488b4424504c8b8424800000004c8b4c24784c8b542470e88df3ffff4989c5488d642410e929010000488d642410eb05488d6424104c8b7424284c89f34983fe037f0f49bd4887620800000000e9000100004889db4883eb027115488d64243048b8d006620800000000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b542438ff742418ff742418415641554154415341524151415057565248b8d0186208000000004c8b44246849b9c08b6208000000004c8b942480000000ff15d4070000ff15c60700004889c34883fb01750c49beb08e620800000000eb1348b8b08e620800000000ff15990700004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c428c25000584883c428c250004983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752d4c8b6c24104d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9790200004d89f54983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b5c24084d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d896500e9ef0100004d89f5eb144d89e5483b65187306ff5558ca0060e960ffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375624d89d34d8b53084c8b5c24704d3bda750949c7c303000000eb0749c7c3010000004983fb03753b49c7c5030000004983fd0375294c8b6424684d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e94e0100004d89f5eb144d89e5483b65187306ff5558ca0060e95fffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375624d89d34d8b53084c8b5c24604d3bda750949c7c303000000eb0749c7c3010000004983fb03753b49c7c5030000004983fd0375294c8b6424584d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9ad0000004d89f5eb144d89e5483b65187306ff5558ca0060e95fffffff4983fd01750949c7c501000000eb524d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85a50100004d89d34d8b53084c8b5c24504d3bda750949c7c303000000eb0749c7c3010000004983fb030f857a01000049c7c5030000004983fd0375264c8b6424484d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c5010000004983fd017552488d6424204c89f0ff15c20200004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c250004d8b65004d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004156ff742420ff742420488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c244048894c24404889542448488974245048897c24584c894424604c8b04244c894c24684989d9488b5c24084c895424704989c2488b4424104c895c24784c89a424800000004c89ac24880000004883c438e9a3ecffff488d6424384d89e5483b65187306ff5558ca0060e918feffff4d8b65004983fc010f85340100004d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd037511488d64243049bc6820620800000000eb34488d6424084c8b2c244983fd01488d6424087511488d64242049bcc88e620800000000eb0f488d64242049bce08e6208000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f5eb0c4c89f0ff15a80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf88e6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c250004d8b65084d8b24244d89e5483b65187306ff5558ca0060e9a2fefffff4000000|@1067,1,@15538,@10729,@10730,@10731,@10732,@10733,@10734,@10728,@10502,@10735,@10736,@123,@10736,@10782,@10785,@10733,@10788,@10734,@10728,@10728|109,0,@1034 127,0,@1036 164,0,@1003 210,0,@1003 239,0,@105 372,0,@1031 420,0,@1022 514,0,@105 638,0,@105 821,0,@1008 866,0,@1038 910,0,@1008 1060,0,@1003 1196,0,@197 1211,0,@1039 1310,0,@1040 1345,0,@105 1438,0,@1039 1496,0,@1036 1652,0,@1043 1862,0,@123 1948,0,@218 2086,0,@218 2197,0,@123 3069,0,@105 3228,0,@1003 3257,0,@105 3351,0,@199 3366,0,@1039 3405,0,@1062 3417,0,@1062 3579,0,@866 5033,0,@280 5070,0,@1063 5087,0,@1064 5228,0,@1065 10725:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb89f9209000000004c8930c3f400000000|@1042,1,@15535|47,0,@10726 10726:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@1041,1,@15534| 10727:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b8888c620800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b8988d620800000000c34983fe037d0b48b8708c620800000000c348b8188e620800000000c3f400000000|@1061,1,@15536|26,0,@1044 49,0,@1045 69,0,@1044 86,0,@1053 103,0,@1044 114,0,@1057 10728:D4,696|483b65187305ff5558cd0150488b04244c8b304983fe0d757b4889c04989c6ff70084d89f641ff76104c8b74240841ff36488b0424e8c6ffffff4c8b34244c3bf0488d6424087502eb084c8b7424084989064c8b304d89f54983fe097507488d64241058c34d89ee4983fd0775134c8b7008ff701049c7c5010000004d89f4eb1c488d6424104983fe03750258c3488d642408c34889c0488d642408c341f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0170ebc36a016a014c8b6424104d8b1c244983fb0175234d8b5c24084d8b6424104c891c244c89642408415b488d64240849c7c401000000eb194d8b5c24084d8b1b4d89dc483b65187306ff5558ca0170ebba41f6c30175364d8b4b084d89e24983c2027115488d64242048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0178ebc44d3bec750e6a016a014c8b742410e9eb0000006a016a014c8b6c24104d8b65004983fc01756b4d8b65084d8b6d104c8924244c896c240858488d6424084c89f34c8b442408ff15200100004989c44d8d77e04c3b75107306ff5550ca00104d89f749c746f8030000004c8b1c244d89dd4d895e104d89660849c706070000004c8b6424104d8934246a016a014d89edeb1c4d8b65084d8b24244d89e5483b65187306ff5558ca0060e96fffffff4d8b65004983fc01752e4d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd037509488d6424204c89f0c3488d64241858c34d8b65084d8b24244d89e5483b65187306ff5558ca0060ebaf4d8b2e4983fd01752b4d8b6e084d8b76104c892c244c89742408488d642408415e4983fe037506488d642420c3488d64241858c34d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebb3f400000000000000|@1121,1,@15599,@10789|184,0,@105 323,0,@105 10729:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15539| 10730:D3,960|483b65187305ff5558cd01a801751c4c8b30488b40084883f80175094d8b6e10e9050200004d8b6e10eb0848c7c001000000c341f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca01484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0160ebb749c7c50100000041f6c501757f4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375594d89e54d8b6d084d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500eb0749c7c5010000004d8b264d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004156e85efeffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be688f6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c341f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb749c7c50100000041f6c501757f4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375594d89e54d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500eb0749c7c5010000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f4000000000000|@1069,1,@15540|454,0,@1068 499,0,@1021 10731:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15541| 10732:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@15542|75,0,@1070 10733:D10,2024|483b65187306ff5558ca090750534151415241f6c0010f85b5070000498b0041ff70084c8b34244983fe010f85b4020000488d642408ff15f40700004989c641564c8b7424204c3b35db0700007502eb444c8b7424204d8b364e8d3475010000004983fe030f85d301000049bea0186208000000004c8b6c2420498d7508498d7e0848c7c101000000483bc9f3a67405e9a90100004c8b34244d8b364983fe057502eb18488b0424ff15720700004989c64983fe037405e9820100004c8b7424184983fe037f14488d64242849be4887620800000000e93a0100004c8b7424184983ee0241567115488d64243048b8d006620800000000488b5d08ff23488b4c2418488b9c2490000000488b8424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b54243841564155415441534152415141505756524989c24989d94889ca488b442458488b5c24504c8b442460ff124989c5488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004883c410498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c26000488b4c2410488b9c2488000000488b8424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524989c24989d94889ca488b442450488b5c24684c8b442458ff124989c6488d642420498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c260004c8b7424184983fe017f12488d64242848b86089620800000000c26000ff15100500004989c641564c8b7424284c3b35f70400007502eb444c8b7424284d8b364e8d3475010000004983fe030f85ab01000049bea0186208000000004c8b6c2428498d7508498d7e0848c7c101000000483bc9f3a67405e9810100004c8b34244d8b364983fe057502eb18488b0424ff158e0400004989c64983fe037405e95a0100004c8b7424204983fe037f14488d64240849be4887620800000000e9390100004c8b7424204983ee0241567115488d64243848b8d006620800000000488b5d08ff23488b4c2420488b9c2498000000488b8424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b54244041564155415441534152415141505756524989c24989d94889ca488b442458488b5c24504c8b442468ff124989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb7d488b4c2418488b9c2490000000488b8424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b54243841564155415441534152415141505756524989c24989d94889ca488b442450488b5c24704c8b442460ff124989c6488d6424084c8b6c24204c3b2d95020000750949c7c403000000eb564c8b6c24204d8b6d004e8d2c6d010000004983fd03753849bdd0186208000000004c8b642420498d742408498d7d0848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b4424204883e8027115488d64243048b8d006620800000000488b5d08ff234c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c2440488b5c2438415641554154415341524151415057565251534889c3488b8424880000004c8b4424684c8b4c24784c8b542470e88ef8ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424184c89304883c410c26000488d64242048c7c001000000c26000f400000000000000|@1071,1,@15543,@199,@10734,@197,@10728,@10734,@197,@10728|109,0,@197 206,0,@1003 239,0,@105 407,0,@1031 455,0,@1022 759,0,@1020 825,0,@197 922,0,@1003 955,0,@105 1126,0,@1031 1174,0,@1022 1423,0,@199 1773,0,@105 1942,0,@866 10734:D4,408|483b65187305ff5558cd014c8b304983fe0775444c8b68084d89ee41f6c50175204d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd03750a4c8b68106a016a01eb0848c7c001000000c34d8b65004983fc01752c4d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd0375066a034156eb2148c7c001000000c34d8b65084d8b24244d89e5483b65187306ff5558ca0060ebb1f60424010f85cc0000004c8b2c244d8b75004d89ed41ff750841ff3648bae85c620800000000488b44241848c7c303000000ff15c90000004989c54c8b34244d89f44d3bf57507488d642408eb424d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375584d89e4498d742408488d642408498d7d08483bc9f3a67407488d642418eb3e4c8b6c24104983c5027115488d64241848b8d006620800000000488b5d08ff23415c4c8924244c896c2408483b65187303ff5558e937ffffff488d64242048c7c001000000c3488d64241048c7c003000000c3f40000000000|@1072,1,@15544,@10649|205,0,@707 337,0,@105 10735:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be00196208000000004c8930c348c7c001000000c3f40000|@1073,1,@15545|105,0,@201 10736:D6,432|483b65187306ff5558ca090753415041514152483b05be0100007507488d642410eb384c8b304e8d3475010000004983fe01754749bed808620800000000488d7008498d7e0848c7c100000000483bc9f3a67402eb25488d642410415e4c8b2c244d892e488d64240849c746080500000048c7c001000000c208006a016a014889e3ff1548010000ff34244c8b6c24104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424304d8966084d892e4156488b442448488b1c244c8b4424284c8b4c2420ff15f60000004989c64983fe05752d488b4424085b488d6424084c8b4424204c8b4c24184c8b5424104c8b6c24384c896c24384883c430e9f8feffff4983fe0375766a016a014c8b7424584156488b442420488b5c24184c8d4424084c8b4c24404c8b542438e8c9feffff415d415e488d6424104983fe01751e488d642420415c4d892c244d8974240848c7c0010000004883c408c20800488d642420415e4d892e49c746080300000048c7c0010000004883c408c208004c8b7424304c8b2c244d892e488d64240849c746080100000048c7c0010000004883c438c20800f400000000|@1074,1,@15546,@10738,@10737,@123|54,0,@123 10737:D3,856|483b65187305ff5558cd094c8b304e8d1c75010000006a016a014d89dc4983fc0175634d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f8030000004989451049c74508010000004d8965004d8d77e04c3b75107306ff5550ca09284d89f749c746f803000000498946104d895e0849c706010000004c892c244c89742408e9990000004d89e64983c60e49d1ee4e0fb634304e8d3475010000004983fe5d741b4d89e64983ee024d89f4483b65187306ff5558ca0918e95fffffff4d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f803000000498945104d89650849c74500010000004d2bdc4983c3014d8d77e04c3b75107306ff5550ca09384d89f749c746f803000000498946104d895e084d89264c892c244c89742408415d415e4d8b5d084d89dc4983fb01751949bed8086208000000004c89334889430848c7c001000000c34d8b5d004d8b6d106a016a016a014983fc037d144c891c2448c7442408010000004c896c2410eb124983ec024c891c244c896424084c896c2410415b59415c4d8b2c244e8d2c6d010000004983fb01750d493bcd75084d89e5e9a50000004883f901750f49bdd808620800000000e9900000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156b0100000f874a0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a5c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4b8d341c498d7d0848d1e9f3a4418065ffbf4d8b1e498b4e084d8b66104d8b34244e8d3475010000004983fb01750d493bce75084d89e6e9a00000004883f901750f49bed808620800000000e98b0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b1594000000776f4d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a3c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc000000004989ca49d1ea4d89164983c31049d1eb4b8d341c498d7e0848d1e9f3a4418066ffbf4c892b4c89730848c7c001000000c348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@1113,1,@15591|306,0,@123 431,0,@123 638,0,@123 807,0,@117 823,0,@117 10738:D7,640|483b65187306ff5558ca09034989c641504151f6c3010f8555020000488b03ff73084c8b2c244983fd010f8506010000488d642408498b16ff124989c64983fe01750d488d64241048c7c005000000c34d8b2e4d8b750041ff750841ff36498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424184c89730849be70bc9209000000004c89336a016a016a016a0154488b44243849b8f09062080000000049b9f09062080000000049c7c201000000ff15f5010000ff742418498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849be48bd9209000000004c89336a016a016a016a0154488b44245049b8f09062080000000049b9f09062080000000049c7c201000000ff158c010000488d6424185b488b0424ff1574010000488d6424484883f002c3498b5608ff124989c64983fe01750d488d64241848c7c005000000c34d8b2e4d8b75004d8b761041ff7508498b0641ff762048ba3891620800000000ff15200100004989c64d8b6e404d8b5e604c8b6424084d89e64983fc017508415c4883c408eb434d89f64d8b364d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d897424104c8b34244d89742408488d64241049beb8d39209000000004d8934244d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104d89660849bdd8e59209000000004d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849bca0e69209000000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89305b4c8b4424084159488d642408e98ffdffff488d64241048c7c005000000c3f400|@1112,1,@15590,@10742,@10775,@10770,@10770|129,0,@10739 156,0,@1076 166,0,@1076 226,0,@10741 253,0,@1076 263,0,@1076 362,0,@1078 464,0,@10763 513,0,@10780 561,0,@10781 10739:D3,120|483b65187305ff5558cd054c8b72084d89f541f6c60175534c8b60084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752c498b5500498b4618ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@1075,1,@15547| 10740:D3,16|483b65187305ff5558cd01c3f4000000|@1077,1,@15548| 10741:D3,120|483b65187305ff5558cd054c8b72084d89f541f6c60175534c8b60084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752c498b5500498b4618ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@1075,1,@15549| 10742:D3,800|483b65187305ff5558cd054889d14d8d77e04c3b75107305ff5550cd034d89f749c746f803000000498946104c8b69084d89eb4d896e0849bd30c19209000000004d892e41564d8d6fe04c3b6d107306ff5550ca03084d89ef49c745f803000000498945104c8b61104d89e64d89650849bc28c29209000000004d89650041554d8d6fe04c3b6d107306ff5550ca03484d89ef49c745f803000000498945104c8b61184c89e74d89650849bc20c39209000000004d8965004155498d57e0483b55107306ff5550ca83484989d748c742f803000000488942104c8b61204d89e54c89620849bc18c49209000000004c89224d8d57e04c3b55107306ff5550ca87684d89d749c742f803000000498942104c8b61284d89e14d89620849bc10c59209000000004d8922498d77e0483b75107306ff5550ca876e4989f748c746f803000000488946104c8b61304d89e04c89660849bc08c69209000000004c89264d8d67e04c3b65107306ff5550cac76f4d89e749c74424f8030000004c89db4d895c2410498944240849bb00c79209000000004d891c244d8d5fe04c3b5d107306ff5550cacf774d89df49c743f8030000004d8973104989430849bef0c89209000000004d89334d8d77e04c3b75107306ff5550cacf3f4d89f749c746f80300000049897e104989460848bfe0ca92090000000049893e498d7fe0483b7d107306ff5550ca4f7f4989ff48c747f8030000004c896f104889470849bdd0cc9209000000004c892f4d8d6fe04c3b6d107306ff5550cacf5f4d89ef49c745f8030000004d894d104989450849b9c0ce9209000000004d894d004d8d4fe04c3b4d107306ff5550cacf7d4d89cf49c741f8030000004d8941104989410849b8b0d09209000000004d89014d8d47e04c3b45107306ff5550cacf7e4d89c749c740f803000000498940104889d94989480848b9a0d2920900000000498908498d4790483b45107306ff5550cac47f4989c748c740f80d0000004889506048897058488978504c8940484c8b4424084c8940404c8948384c8b4c24104c8948304c8950284c8b14244c895020488d6424184c8958184c8960104c8968084c8930c3f4000000|@1082,1,@15570|57,0,@10743 114,0,@10744 172,0,@10745 230,0,@10746 285,0,@10747 340,0,@10748 394,0,@10749 443,0,@10751 491,0,@10753 539,0,@10755 587,0,@10757 636,0,@10759 687,0,@10761 10743:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15550,@10580|149,0,@621 10744:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15551,@10580|149,0,@621 10745:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15552,@10580|149,0,@621 10746:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15553,@10580|149,0,@621 10747:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15554,@10580|149,0,@621 10748:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@1079,1,@15555,@10580|149,0,@621 10749:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15556,@10597,@10750,@10580|59,0,@224 10750:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15557| 10751:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15558,@10597,@10752,@10580|59,0,@224 10752:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15559| 10753:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15560,@10597,@10754,@10580|59,0,@224 10754:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15561| 10755:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15562,@10597,@10756,@10580|59,0,@224 10756:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15563| 10757:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15564,@10597,@10758,@10580|59,0,@224 10758:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15565| 10759:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be281b6208000000004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@1080,1,@15566,@10597,@10760,@10580|59,0,@224 10760:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@668,1,@15567| 10761:D4,80|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd044d89c749c740f8020000004c8b72084d89700849be20d39209000000004d8930488b421048c7c301000000ff251d000000f400000000|@1081,1,@15569,@10619|47,0,@10762 10762:D3,112|483b65187306ff5558ca0d014989c64c89c0f6c30175524c8b234c8b6b084d8b24244c8b5a084d3be375274d8d67e84c3b65107306ff5550ca0d604d89e749c74424f80200000049894424084d893424eb034989c44c89e04c89eb483b65187306ff5558ca0d40eba9c3f40000000000|@671,1,@15568| 10763:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@15571,@10764| 10764:D4,32|483b65187306ff5558ca09014889da4150ff125bff251e000000f40000000000|@1108,1,@15586,@10765| 10765:D4,296|483b65187305ff5558cd094889da4c8b70084d8b264d89e54983fc050f85f200000041ff76084d8b7610ff30ff70104d8d6fe04c3b6d107306ff5550ca04404d89ef49c745f8030000004989551049bc68926208000000004d89650849bcb0d59209000000004d8965004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849bd30d69209000000004d89284c89f048bb1096620800000000ff15970000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24104d896e0849c70605000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642410c34983fd037501c3498b4618ff22f4000000000000|@1109,1,@15587,@10774|80,0,@1084 94,0,@10766 139,0,@10767 155,0,@1107 10766:D3,88|483b65187305ff5558cd054989d64c8b68084d8b6d004983fd03750848c7c001000000c3498b5608498b5e10ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@1085,1,@15572| 10767:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8b89262080000000049b9109362080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@1094,1,@15578,@10770|26,0,@1086 36,0,@1088 10768:D3,16|483b65187305ff5558cd01c3f4000000|@1087,1,@15573| 10769:D3,16|483b65187305ff5558cd01c3f4000000|@1087,1,@15574| 10770:D7,912|483b65187306ff5558ca09074889da50415141524c8b742410498b46184c8b70084d8b2e4983fd050f855901000041ff760841ff7610ff30ff70104d8d47d84c3b45107305ff5550cd044d89c749c740f8040000004c8b7424204d8970184c8b7424284d8970104989500849be18db9209000000004d8930488b44241048bbd093620800000000ff15330300004989c641564c8b7424184c3b34247535488d6424384c8b6c2410415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800488b5424304c8b742438498b06ff124989c24d8d6fe04c3b6d107306ff5550ca00044d89ef49c745f8030000004c8b34244d897510488d6424084c8b7424184d89f34d89750849c74500050000004d8d77e04c3b75107306ff5550ca002c4d89f749c746f8030000004c8b24244d896610488d6424084d896e084c8b2c244d892e488d6424084c8b6c24204d8b65104c8b6c24304d8955004d89db4d895d084d8965104d89751848c7c0010000004883c428c20800ff124989c641f6c601752241ff364c8b742418498b066a016a014889e3ff150e020000ff742408ff742420eb35488d6424104c8b6c2410415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800f60424010f85010100004c8b2c244d89ee41ff75004d89f641ff76084c8b742408498b4618488b5c2430ff15970100004989c64983fe030f85b50000004c8b742408498b066a016a014889e3ff156d010000488d642408415c4c3b642418750949c7c603000000eb544d8b34244e8d3475010000004c8b6c24184d8b5d004c89d94e8d1c5d010000004d3bf375284d89ed498d7424084d89ed498d7d08483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c420eb25415d4c896c2408483b65187303ff55584883c408e9f5feffff488d64242049c7c6010000004983fe01754e488b5424104c8b742418498b06ff124989c34c8b7424184d8b66084d89f64d8b76104c8b6c24284d895d004d8965084d8975104c8b34244d897518488d64240848c7c0010000004883c418c20800488d6424204c8b6c24084d8b364d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800f40000000000|@1099,1,@15579,@10737,@10775,@10737,@10774|109,0,@10771 127,0,@1093 10771:D3,112|483b65187305ff5558cd054989d66a016a016a016a0148ba2093620800000000498b5e084d8b4e104d8b56185449b83093620800000000ff12415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@1092,1,@15576|24,0,@1089 47,0,@1090 10772:D3,16|483b65187305ff5558cd01c3f4000000|@1091,1,@15575| 10773:D3,16|483b65187305ff5558cd01c3f4000000|@1092,1,@15577| 10774:D6,632|483b65187306ff5558ca0901534150ff158b0200004989c641564c8b2c244d8b65004d89e64983fc097515488d64241848b82094620800000000488b5d08ff234d89ed4c8d25080000004f8d64b4fc41ffe4e933000000909090e93b000000909090e943000000909090e9d3000000909090e93e010000909090e945010000909090e92e010000909090488d64241848b8b84b620800000000c3488d64241848b8a894620800000000c34d89ed4d89ee41ff75084d89f641ff7610488b442408488b5c24204c8b442418e831ffffff4989c64156488b442408488b5c24284c8b442420e818ffffff4989c54c8b24244d89e64c3b64241075124c3b6c2408750b488d642418584883c410c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c700050000004883c428c34d89ed4d89ee41ff75084d89f641ff7610488b442408488b5c24204c8b442418ff15300100004989c64c3b742408750b488d642410584883c410c3498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c700070000004883c420c3488b5424104c89e8488d642418ff224d89ee4d89f541ff76084d89ed4d89ee41ff75184d89f641ff7620488b442410488b5c24284c8b442420ff159c0000004989c64156488b542428488b442410ff124989c44d8b2c244c8b1c244d89de4c3b5c241875124c3b642410750b488d642420584883c410c3498d47d0483b45107306ff5550ca00704989c748c740f8050000004c8b5c24084c8958204c8960184c8968104d89f64c897008488d64241048c7000b0000004883c428c3f400000000000000|@1104,1,@15582,@10778,@10777,@10728|50,0,@1095 145,0,@578 161,0,@1098 10775:D4,256|483b65187305ff5558cd094c8b68084d89ee4d8b6d004983fd0575384c8b63084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc037511498b46104d89ee498b5e10ff25c40000004d89f54d8b364983fe0375464c8b73084d89f44d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe0375204d8b75084d89e54d8b6d084d3bf5750848c7c003000000c348c7c001000000c34d89ee4d8b6d004983fd0175444c8b63084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751d4d8b76184d8b6d184d3bf5750848c7c003000000c348c7c001000000c348c7c001000000c3f4|@1101,1,@15580,@10776| 10776:D3,888|483b65187305ff5558cd094c8b304d89f54983fe0b754e4c8b334983fe0b7545ff70084c8b6818ff73084c8b7318498b4518498b5e1848baf094620800000000ff124989c64983fe03750dff742408ff742408e97b020000488d64241048c7c001000000c34d89ee4983fd0575484c8b2b4983fd05753f4c8b7008ff70104c8b6b08ff73104c89eb4c89f0e870ffffff4989c64983fe037510488b4424085b488d642408e957ffffff488d64241048c7c001000000c34d89f54983fe07751f4c8b334983fe0775164c8b70084c8b58104c8b6b084c8b63106a016a01eb564d89ee4983fd0d75264c8b2b4983fd0d751d4c8b70084c8b6b084d3bf5750848c7c003000000c348c7c001000000c34983fe0375194c8b334983fe03750848c7c003000000c348c7c001000000c348c7c001000000c34d8b134983fa01752c4d8b53084d8b5b104c8914244c895c2408488d642408415b4983fb0375066a016a01eb2048c7c001000000c34d8b53084d8b124d89d3483b65187306ff5558ca0078ebb34d8b1c244983fb01752e4d8b5c24084d8b6424104c891c244c89642408488d642408415c4983fc03750641564155eb2148c7c001000000c34d8b5c24084d8b1b4d89dc483b65187306ff5558ca0070ebaff6442408010f85cd0000004c8b7424084d8b2e4d89f641ff7608f6442408010f85a60000004c8b6424084d8b34244d89e441ff7424084d8b55004d8b1e4d3bd37502eb344d8b224e8d2465010000004d8b0b4c89c94e8d0c4d010000004d3be1755c498d7208498d7b08483bc9f3a67407488d642420eb4b498b4508498b5e08e8a9fdffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e94fffffff488d64242048c7c001000000c3488d64242048c7c001000000c3488d64241848c7c001000000c34c8b34244983fe01488d642408750d488d64240848c7c003000000c3488d64240848c7c001000000c3f644240801756d4c8b742408498b064d89f641ff7608f644240801754a4c8b742408498b1e4d89f641ff7608e8fcfcffff4989c64983fe0375204c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eba6488d64243048c7c001000000c3488d64242848c7c001000000c34c8b34244983fe01488d642408750d488d64241848c7c003000000c3488d64241848c7c001000000c3f400000000000000|@1102,1,@15581|56,0,@1100 10777:D3,232|483b65187306ff5558ca090150534150f6442410010f85bf0000004c8b6c24104d8b75004d89ed41ff750841ff3641ff760848ba6895620800000000488b0424488b5c24204c8b442418ff124989c64156488b442418488b5c24284c8b442420e89bffffff4989c54c8b34244d89f44c3b742408750e4c3b6c24187507488d64243058c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424084c8b6424084d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c3488d64241848c7c001000000c3f4|@1106,1,@15584|52,0,@1103 10778:D3,192|483b65187306ff5558ca090150534150f6442410010f85950000004c8b6c24104d89ee41ff75004d89f641ff760848ba6895620800000000488b442408488b5c24184c8b442410ff124989c64156488b442408488b5c24204c8b442418e89effffff4989c54c8b24244d89e64c3b642410750e4c3b6c24087507488d64242858c3498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084d89f64c8930488d6424084883c428c3488d64241848c7c001000000c3f40000|@1105,1,@15583|48,0,@1103 10779:D3,16|483b65187305ff5558cd01c3f4000000|@1094,1,@15585| 10780:D3,160|483b65187305ff5558cd05524c8b3424498b5610ff124989c641f6c60175714d8b2e4d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8b7608488d6424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@1110,1,@15588| 10781:D3,160|483b65187305ff5558cd05524c8b3424498b5610ff124989c641f6c60175714d8b2e4d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8b7608488d6424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@1111,1,@15589| 10782:D5,1104|483b65187306ff5558ca090750415041514152f6c3010f851a0400004c8b33ff73084d8b2641ff76084c8b7424284c89f34983fe017f12488d64243048b86089620800000000c258004d8b34244e8d3475010000004983fe01750f49bd201a620800000000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15ae0300000f87810300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435003a418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060700000041564889db4883eb027115488d64243848b8d006620800000000488b5d08ff23488b4c2428488b8424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b54244041564155415441534152415141505756524989c24889ca488b4424584c8b4424704c8b4c2468ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410f6042401740948c7c301000000eb0a48bb88976208000000004883fb0175054989c6eb09ff150a0200004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f644240801740c48c7c301000000e9b7000000488b4424284883e8027115488d64243048b8d006620800000000488b5d08ff234c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b542440488b4c2438415641554154415341524151415057565251488b5c24604c8b4424784c8b4c24704c8b542468e895fcffff4989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017508415d4883c428eb12488b0424ff15b60000004989c5488d6424304d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c25800488d64243048b8f807620800000000488b5d08ff23488d64242048c7c001000000c25800f40000ffffffffffffff01|@1116,1,@15592,@10784,@10783|62,0,@1020 93,0,@213 320,0,@105 518,0,@866 589,0,@1114 757,0,@105 911,0,@866 1064,0,@117 10783:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15594| 10784:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15593| 10785:D4,32|483b65187305ff5558cd094989d848c7c301000000ff251d000000f400000000|@1117,1,@15595,@10786| 10786:D4,224|483b65187306ff5558ca0901534150a8010f85ba000000ff30ff70084c8b34244983fe017537488d642408498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c8970084c8b34244c8930488d6424084883c410c3488b542410488b442408ff124989c06a016a01488b4424104889e3ff157a000000488b0424ff742408488b5c24304c8b442428e86bffffff4989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b7424204c893358488d6424204158488d642408e92fffffff488d64240858c3f400000000000000|@1119,1,@15596,@10787| 10787:D3,272|483b65187306ff5558ca0901534150a8010f85c9000000ff30ff7008488b542410488b442408ff124989c641566a016a01488b4424184889e34c8b442428e8bdffffff415c415d4c8b34244983fe03488d64241075464d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c410c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c410c3488d642408415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000000000|@1120,1,@15597|233,0,@1118 10788:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@15598| 10789:D5,1280|483b65187306ff5558ca09014989dea8010f85d20400004c8b204c8b680841f6c6010f853903000041ff36498b5e084c8b1c244d8b134d8b0c244d89cb4a8d3c4d01000000498b324989f1488d347501000000483bfe0f85b30000004d3be27502eb304c89df4989fb488d3c7d010000004c89c94e8d0c4d01000000493bf9751b498d742408498d7a08483bc9f3a67402eb0949c7c301000000eb714e8d0c5d010000004d8b1a4a8d145d010000004c3bca73054c89c9eb034889d1498d742408498d7a0848d1e9483bc9f3a67214770949c7c301000000eb1049c7c303000000eb0749c7c3ffffffff4983fb0175074c3bca7308eb0f4983fb017c0949c7c303000000eb0749c7c3ffffffffeb284e8d1c5d010000004d89ca4e8d1455010000004d3bda7d0949c7c3ffffffffeb0749c7c3030000004983fb0175374c89e8e8bbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fb010f8d8d010000488d6424084c89c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989d9eb2348b8f8546208000000004156415041544155ff1555030000415d415c4158415e4989c141f6c1010f841b0100004d89c34983e3094983fb01750948c7c703000000eb0748c7c7010000004883f7024d89c34983e3034983fb01750949c7c203000000eb0749c7c2010000004983f20248bea8946208000000004d8d5ff04c3b5d107306ff5550cac0774d89df49c743f80100000041c643ff404989334e8d0ccdf9ffffff4883ff03750948c7c709000000eb0748c7c7010000004c0bcf4d0bca4d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d894a104d895a0849c7020d0000004d8d5fe84c3b5d107306ff5550ca00754d89df49c743f8020000004d8953084d892341534c89f34c89e8e834fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b80855620800000000488b5d08ff23498d47e8483b45107306ff5550ca08314989c748c740f8020000004c8968084c8920e8cefcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c89c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989daeb1f48b8f854620800000000415041544155ff1571010000415d415c41584989c241f6c2010f841f0100004d89c64983e6094983fe01750949c7c103000000eb0749c7c1010000004983f1024d89c64983e6034983fe01750949c7c303000000eb0749c7c3010000004983f30248bfa8946208000000004d8d77f04c3b75107306ff5550ca803f4d89f749c746f80100000041c646ff4049893e4e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14d0bd34d8d5fe04c3b5d107306ff5550ca00754d89df49c743f8030000004d8953104d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00394d89f749c746f8020000004d895e084d892641564c89e848c7c301000000e856fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b80855620800000000488b5d08ff234983fe01750848c7c001000000c34c89f0c3f400000000|@1122,1,@15600,@10599,@10599|437,0,@651 548,0,@1098 765,0,@652 915,0,@651 1022,0,@1098 1243,0,@652 10790:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@15601| 10791:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@1139,1,@15602|13,0,@1138 10792:D4,128|483b65187305ff5558cd056a016a01498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be90f69209000000004c89334c8b4a104c8b52184c8b722041564c8d442408ff1541000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@1147,1,@15608,@10794|51,0,@10793 10793:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@1144,1,@15603| 10794:D3,768|483b65187306ff5558ca09074889da4150415141526a016a014889e3ff124c8b3424ff7424086a016a014d8b2e4983fd0175164d8b6e084d8b76104c892c244c89742408e99f0000004d8b76084d8b2e4983fd050f858c020000498b46084c8b7424304d8b6ef849c1e50849c1ed074983cd01493bc57215488d64244048b89051620800000000488b5d08ff234d89f64d8b7486fc4983fe010f84320200004989c54983c5024c8b74242843ff74aefc488b5424504883c0027115488d64244848b8d006620800000000488b5d08ff23ff124989c64c8b2c244c896c2408488d6424084c89742408415d415b4c8b34244d8b164d89d44983fa017514488d64242849bea89b620800000000e97f0100004d89f64d89e24983fc097514488d64242849bea89b620800000000e95f0100004d89f64d89d44983fa030f859b0000004d89f64d8b66084d89f64d8b7610488d6424084c8b4c24304d8d57c84c3b55107306ff5550ca007a4d89d749c742f8060000004d894a284c8b4c24104d894a204c8b4c24184d894a184d89721049beb89b6208000000004d89720849be20fa9209000000004d89324d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849c706030000004883c420e9b40000004d89f64983fc070f85980000004d89f64d8b66084d89f64d8b7610488d6424084c8b4c24304d8d57c84c3b55107306ff5550ca007a4d89d749c742f8060000004d894a284c8b4c24104d894a204c8b4c24184d894a184d89721049beb89b6208000000004d89720849be38fb9209000000004d89324d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849c706070000004883c420eb0f488d64242849bea89b6208000000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c7042401000000415d4d8965004d89750848c7c001000000c20800488d64244048b8009c620800000000488b5d08ff23488d64244048b8c89c620800000000488b5d08ff23f400000000|@1155,1,@15609|127,0,@628 194,0,@105 259,0,@1145 291,0,@1145 399,0,@1146 413,0,@10795 567,0,@1146 581,0,@10797 647,0,@1145 728,0,@1148 749,0,@1152 10795:D3,136|483b65187305ff5558cd054989d66a016a01498b5608498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004d8b6e104c896b0849bdd0fa9209000000004c892b4d8b4e184d8b56204d8b762841564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@1147,1,@15605|59,0,@10796 10796:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@1144,1,@15604| 10797:D3,136|483b65187305ff5558cd054989d66a016a01498b5608498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004d8b6e104c896b0849bde8fb9209000000004c892b4d8b4e184d8b56204d8b762841564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@1147,1,@15607|59,0,@10798 10798:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@1144,1,@15606| 10799:D3,104|483b65187305ff5558cd054c8b720841f6c601753e4d8b264d8b6e084883f80175044c89e0c34989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140ebbc48b8c89d620800000000488b5d08ff23f400000000|@1160,1,@15610|49,0,@105 85,0,@1158 10800:D3,192|483b65187305ff5558cd054c8b720841f6c6010f85930000004d8b264d8b6e084883f80175564d89e54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bda89b6208000000004c8968084c8930c34989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140e963ffffff48b8c89d620800000000488b5d08ff23f4000000|@1179,1,@15611|108,0,@1145 135,0,@105 174,0,@1158 10801:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1187,1,@15612| 10802:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@1199,1,@15613|13,0,@1138 10803:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@15614| 10804:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@15615| 10805:D3,96|483b65187305ff5558cd09483bc3750848c7c003000000c34c8b304e8d3475010000004c8b2b4c89e94e8d2c6d010000004d3bf5751f488d7008488d7b08483bc9f3a6750848c7c003000000c348c7c001000000c348c7c001000000c3f40000|@1248,1,@15616| 10806:D3,40|483b65187305ff5558cd014989c648ba88ad620800000000498b06498b5e08ff22f4000000000000|@1417,1,@15677|16,0,@1288 10807:D14,2360|483b65187305ff5558cd094883fb017f0b48b84887620800000000c34c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e943000000909090e9c2030000909090e98f040000909090e981050000909090e938060000909090488b40084883eb02711048b8d006620800000000488b5d08ff23ff25220900004c8b70104c8b68184d8b3641f6c5010f858d0200004d8b6d004d8b264e8d1c65010000004983fb01750f49bc8887620800000000e9af0000004d89da4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d490800000f87230200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89d9498d7608498d7c240848d1e9f3a44d89de4983c6104d89f349d1eb43c6041c2049d1ee43c64434013a41806424ffbf4d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849c7060700000041564883eb02537115488d64241048b8d006620800000000488b5d08ff234c89e8ff15e50700004989c6415648c7c001000000ff15cb0700004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15960700004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98ad6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ad6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c348b8f807620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98ad6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ad6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34c8b70084989d94983e902711048b8d006620800000000488b5d08ff234c89f348b8d0ad62080000000049b8d808620800000000ff15410500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10ae6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b68104c8b70184983fd03740949c7c501000000eb0a49bd28ae62080000000041554989d94c89f348b840ae62080000000049b8681a620800000000ff155b0400004889c34883fb017504415eeb12488b0424ff153c0400004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80ae6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b70084989d94c89f348b898ae62080000000049b86881620800000000ff15700300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8ae6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b68104c8b70184d8b5d004d8b2b4e8d2c6d010000004983fd01750f49bc8887620800000000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d390200000f87210200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013a41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554883eb02537115488d64241048b8d006620800000000488b5d08ff234c89f0ff15a70100004989c6415648c7c001000000ff158d0100004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15580100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98ad6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10af6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c348b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@1400,1,@15657,@10723,@10815,@10814,@10849,@10850,@10849,@10849,@10723,@10815,@10814,@10811|19,0,@1003 106,0,@105 170,0,@1006 412,0,@105 458,0,@1014 477,0,@1015 577,0,@866 665,0,@1289 710,0,@1290 786,0,@117 910,0,@1289 955,0,@1290 1044,0,@105 1063,0,@1291 1073,0,@123 1123,0,@866 1168,0,@1293 1267,0,@1294 1285,0,@1295 1295,0,@216 1373,0,@866 1418,0,@1297 1504,0,@1298 1514,0,@959 1564,0,@866 1609,0,@1301 1714,0,@1006 1954,0,@105 2000,0,@1014 2019,0,@1015 2119,0,@866 2207,0,@1289 2252,0,@1302 2328,0,@117 10808:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1292,1,@15617,@10716| 10809:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@1296,1,@15618| 10810:D3,424|483b65187305ff5558cd014c8b30488b58084d8b66084d8b7618498b064d8b76084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89650849c745000700000041554983fe03750c49bdd887620800000000eb0a49bd88876208000000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7060700000041564883eb027115488d64241048b8d006620800000000488b5d08ff2348baa8ae620800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f4000000000000|@1300,1,@15619|82,0,@1009 94,0,@1006 155,0,@105 171,0,@1299 256,0,@866 10811:D44,11328|483b65187305ff5558cd09534c8b34244d89f04983fe017f10488d64240848b84887620800000000c34c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9c1050000909090e932070000909090e95a0a0000909090e9260c0000909090e9d50e0000909090e964100000909090e982120000909090e98f150000909090e997150000909090e966160000909090e93b170000909090e90a180000909090e9d9180000909090e99e1a0000909090e9c91a0000909090e9011c0000909090e9721d0000909090e9471e0000909090e9cf1f0000909090e97b210000909090e94d220000909090e9be230000909090e98e240000909090e96e250000909090e958260000909090e92f270000909090e966280000909090e96e280000909090e929290000909090e9f02a00009090904c8b700841ff36498b461041ff76204d8b76184983fe030f85ea0200004d89c04983e8027115488d64241848b8d006620800000000488b5d08ff2348bb688162080000000049b928af620800000000ff15102c00004989c64156f644240801740c49c7c601000000e9a10000004c8b4424184983e8027115488d64242048b8d006620800000000488b5d08ff23488b44240848bb688162080000000049b9f8b3620800000000ff15b12b0000ff15a32b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50b46208000000004d892e41564c8b4424204983e8027115488d64242848b8d006620800000000488b5d08ff23488b44241848bb381a62080000000049b968b4620800000000ff15fe2a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bed8b46208000000004c89334883fb0175035beb12488b0424ff15232a00004889c3488d6424084883fb01750c48bb4889620800000000eb1348b84889620800000000ff15f12900004889c34883fb017508415e4883c418eb12488b0424ff15ce2900004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0b46208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d89c04983e8027115488d64241848b8d006620800000000488b5d08ff2348bb688162080000000049b928af620800000000ff15ee2800004989c64156f644240801740c48c7c301000000e9c70000004c8b4424184983e8027115488d64242048b8d006620800000000488b5d08ff23488b44240848bb688162080000000049b9f8b3620800000000ff158f2800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50b46208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017508415e4883c418eb12488b0424ff15e72700004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08b56208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff234c89f0e8caf9ffff4989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e89bf9ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20b56208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c34c8b700841ff76084d8b66084d89e54d8b1c244983fb330f85fa0100004d8b64240841f6c40175444d8b64240841f6c40175304d8b6424084983fc01751c4d8b66184983fc03750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f859a010000488d6424084d8b6d08498b45004d8b6d0841ff750041ff364c89c34883eb027115488d64241848b8d006620800000000488b5d08ff23e8c6f7ffff4989c64156488b442408488b5c2418e8b2f7ffff4989c64156488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff23488b442418e883f7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c3498b064c89c34883eb027115488d64241048b8d006620800000000488b5d08ff23e841f6ffff4989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e812f6ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c34c8b7008498b0641ff76084c89c34883eb027115488d64241048b8d006620800000000488b5d08ff23e820f5ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc38b56208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b56208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424104983e8027115488d64241848b8d006620800000000488b5d08ff23488b44240848bb502062080000000049b980b5620800000000ff15602100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c34c8b7008498b0641ff760841ff76104c89c34883eb027115488d64241848b8d006620800000000488b5d08ff23e848f3ffff4989c64156488b5c24184883eb027115488d64242048b8d006620800000000488b5d08ff23488b442408e819f3ffff4989c64156488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff23488b442418e8eaf2ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0b56208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8b56208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10b66208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c3ff7008488b40104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff23e899f0ffff4989c64156488b442408ff15c91d00004989c6415648c7c001000000ff15af1d00004989c048ba8088620800000000488b0424488b5c241849b9e08862080000000049c7c201000000ff157a1d00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d6424084c8b70084d8b66104d8b76184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc08b56208000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bcf0876208000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08b56208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104d8b264d89e54983fc030f8507010000498b460848bae85c62080000000048c7c303000000ff15fc1900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40b66208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000e9180100004983fd010f8504010000498b460848bae85c62080000000048c7c303000000ff15e31800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b66208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb0a49be70b662080000000041564c8b4424104983e8027115488d64241848b8d006620800000000488b5d08ff23488b44240848bbd80862080000000049b988b6620800000000ff15a71700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488d64240848b8d0b6620800000000c3488b40084d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bb688162080000000049b900b7620800000000ff15b51600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ad6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40084d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bb381a62080000000049b968b4620800000000ff15d6150000ff15c81500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40104d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bb502062080000000049b980b5620800000000ff15e91400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b76208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40084d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bb688162080000000049b9b8b7620800000000ff150a1400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0b86208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff234c89f0e852e6ffff4989c641564c8b4424104983e8027115488d64241848b8d006620800000000488b5d08ff23488b44240848bb502062080000000049b980b5620800000000ff15f61200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08b96208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3488d6424084c8b70084d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008ff70184c89c34883eb027115488d64241848b8d006620800000000488b5d08ff23488b0424ff15311100004c8b7424084983fe037511488d64241848bb20b9620800000000eb77f6042401488d6424087411488d64241049bdc88e620800000000eb0f488d64241049bde08e6208000000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c5eb09ff15851000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf88e6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff234c89f0e812e3ffff4989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e8e3e2ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50b96208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488b40104d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bbd01862080000000049b9d8b7620800000000ff155a0e0000ff154c0e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b96208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488d6424084c8b70104c8b68204d8b65004c3b25910d00007502eb3c4d8b1c244d89dd4e8d1c5d010000004983fb150f858d00000049bb80b9620800000000498d742408498d7b0848c7c10a000000483bc9f3a67402eb6a4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca0b96208000000004d8965084d8975004d89ee498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee0176208000000004c8930ff15e70c00004989c6e9a70000004c3b25d00c00007502eb354e8d2c6d010000004983fd110f858a00000049bdb8b9620800000000498d742408498d7d0848c7c108000000483bc9f3a67402eb674d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca0b96208000000004d8965084d8975004d89ee498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b96208000000004c8930ff152d0c00004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34c8b700841ff36498b46084d8b76104983fe03750c49bdd07f620800000000eb0a49bd107f6208000000004d8d77e84c3b75107306ff5550ca01214d89f749c746f8020000004d896e0849c7060700000041564d89c04983e8027115488d64241848b8d006620800000000488b5d08ff2348bb381a62080000000049b968b4620800000000ff156e0b00004989c641564c8b4424184983e8027115488d64242048b8d006620800000000488b5d08ff23488b44241048bb381a62080000000049b968b4620800000000ff15220b0000ff15140b00004889c34883fb01750c48bbe8b9620800000000eb1348b8e8b9620800000000ff15e70a00004889c34883fb017504415eeb12488b0424ff15c80a00004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c34c8b7008498b064d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bbd80862080000000049b930ba620800000000ff15de0900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88ba6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff234c89f0e89edcffff4989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e86fdcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0ba6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488b40084c89c3e846dbffff4989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488b40084c89c34883eb02488d642408711048b8d006620800000000488b5d08ff23e853daffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ba6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488d6424084c8b68084d8b75004a8d0c75010000004883f901750f49bef817620800000000e9910000004989cc4983c4024c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d700500000f87820000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c6460823498d7508498d7e0948d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff23488b40084d89c04983e802488d642408711048b8d006620800000000488b5d08ff2348bbd01862080000000049b9d8b7620800000000ff15d40400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be98896208000000004c8930ff156b0400004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b4008a801752f4c8b304d8b76284983fe03750949c7c603000000eb0749c7c6010000004983fe03750c49bde07e620800000000eb0a49bd507e6208000000004d8d77e84c3b75107306ff5550ca01214d89f749c746f8020000004d896e0849c7060700000041564d89c04983e8027115488d64241048b8d006620800000000488b5d08ff2348bb688162080000000049b9f8b3620800000000ff15800300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488d64240848b8d0ba620800000000c3488b40084c89c34883eb02488d642408711048b8d006620800000000488b5d08ff23ff15a20200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10af6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3ff7008488b40104c89c34883eb027115488d64241048b8d006620800000000488b5d08ff23e885d5ffff4989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e856d5ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00bb6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18bb6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3488d64240848b830bb620800000000c3f400000000000000ffffffffffffff01|@1402,1,@15660,@10852,@10829,@10855,@10829,@10829,@10856,@10857,@10858,@10829,@10829,@10502,@1385,@10502,@1383,@10859,@10829,@10860,@10861,@10829,@10829,@10829,@10862,@10829,@10829,@10829,@10649,@10649,@10723,@10815,@10814,@10829,@10863,@10829,@10829,@10864,@10865,@10866,@10829,@10851,@10829,@10829|32,0,@1003 352,0,@105 368,0,@959 378,0,@1303 434,0,@105 455,0,@959 465,0,@1339 521,0,@866 566,0,@1341 597,0,@105 618,0,@214 628,0,@1342 779,0,@866 823,0,@1345 869,0,@1019 881,0,@1019 963,0,@866 1008,0,@1346 1098,0,@105 1114,0,@959 1124,0,@1303 1180,0,@105 1201,0,@959 1211,0,@1339 1261,0,@866 1306,0,@1341 1350,0,@866 1426,0,@866 1471,0,@1347 1568,0,@105 1613,0,@105 1711,0,@866 1756,0,@1348 1800,0,@866 2087,0,@105 2149,0,@105 2247,0,@866 2335,0,@866 2476,0,@105 2518,0,@105 2616,0,@866 2765,0,@105 2816,0,@1349 2865,0,@866 2909,0,@1351 3003,0,@105 3024,0,@279 3034,0,@1352 3084,0,@866 3237,0,@105 3279,0,@105 3326,0,@105 3424,0,@866 3469,0,@1355 3513,0,@866 3601,0,@866 3646,0,@1356 3690,0,@866 3778,0,@866 3823,0,@1357 3924,0,@105 3982,0,@1014 4001,0,@1015 4101,0,@866 4146,0,@1358 4190,0,@866 4478,0,@866 4523,0,@1347 4569,0,@866 4614,0,@1010 4660,0,@866 4739,0,@866 4784,0,@1347 4887,0,@707 5021,0,@866 5065,0,@1359 5160,0,@707 5294,0,@866 5338,0,@1360 5416,0,@1361 5444,0,@105 5465,0,@123 5475,0,@1362 5525,0,@866 5654,0,@1364 5683,0,@105 5699,0,@959 5709,0,@1366 5759,0,@866 5804,0,@1290 5898,0,@105 5914,0,@214 5924,0,@1342 5980,0,@1021 6025,0,@1022 6119,0,@105 6135,0,@279 6145,0,@1352 6195,0,@866 6240,0,@1369 6334,0,@105 6350,0,@959 6360,0,@1370 6410,0,@866 6455,0,@1377 6552,0,@105 6597,0,@105 6618,0,@279 6628,0,@1352 6678,0,@866 6723,0,@1378 6868,0,@866 7063,0,@105 7105,0,@1379 7133,0,@1063 7150,0,@1064 7287,0,@1065 7384,0,@105 7429,0,@105 7527,0,@866 7572,0,@1381 7616,0,@866 7758,0,@105 7774,0,@199 7784,0,@1372 7840,0,@1021 7885,0,@1382 8014,0,@1383 8076,0,@1384 8128,0,@189 8184,0,@1385 8246,0,@1384 8298,0,@1386 8382,0,@942 8394,0,@934 8458,0,@105 8474,0,@214 8484,0,@1342 8521,0,@105 8542,0,@214 8552,0,@1342 8583,0,@1387 8595,0,@1387 8673,0,@866 8818,0,@105 8834,0,@123 8844,0,@1390 8894,0,@866 8939,0,@1392 9036,0,@105 9081,0,@105 9179,0,@866 9224,0,@1393 9268,0,@866 9439,0,@1070 9487,0,@1021 9532,0,@1022 9626,0,@105 9719,0,@866 9764,0,@1394 9867,0,@190 10066,0,@117 10100,0,@105 10116,0,@199 10126,0,@1372 10176,0,@1021 10220,0,@1022 10348,0,@932 10360,0,@926 10424,0,@105 10440,0,@959 10450,0,@1339 10500,0,@866 10629,0,@1395 10658,0,@105 10714,0,@866 10759,0,@1302 10856,0,@105 10898,0,@105 10996,0,@866 11041,0,@1397 11085,0,@866 11173,0,@866 11218,0,@1398 11303,0,@1399 10812:D7,456|483b65187305ff5558cd014c8b30ff700841ff3641ff761041ff762848c7c001000000ff15cf0100004989c048ba6888620800000000488b0424488b5c2418ff15ab0100004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060700000041564c8b4424284983e8027115488d64243048b8d006620800000000488b5d08ff23488b44241848bb502062080000000049b938af620800000000ff15350100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c420eb12488b0424ff15620000004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f40000|@1337,1,@15636,@10830,@10829,@10717,@10815|46,0,@1013 134,0,@105 155,0,@279 165,0,@1304 215,0,@866 259,0,@1010 304,0,@866 10813:D6,448|483b65187305ff5558cd014c8b28ff70084d8b75084d8b65184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85fe000000498b06ff15930100004989c6415648c7c001000000ff15790100004989c048ba8088620800000000488b0424488b5c241049b9e08862080000000049c7c201000000ff15440100004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48af6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c700010000004883c408c3f4|@1306,1,@15620,@10723,@10815,@10814|108,0,@1014 127,0,@1015 227,0,@866 272,0,@1305 316,0,@866 10814:D10,920|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e92e000000909090e9e0000000909090e92d010000909090e95c010000909090e9bd02000090909048b8b84b620800000000c34c8b70084d8b6e2841ff7500498b0641ff760841ff7620ff156b0300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b2c244d896c2408488d64240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c7000b000000c34c8b7008ff70184c89f0e8dffeffff4989c64156488b442408e8d0feffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c70005000000c34c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34c8b7008ff70104c89f0ff152a020000ff151c0200004989c64156488b0424ff15050200004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24084d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd03488d64240875044c89f0c349bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500c3488b4008ff15af00000048c7c303000000ff159a0000004989c64156488b0424ff15830000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3f40000000000|@1332,1,@15626,@10821,@10822,@10823,@10824,@10825,@10827,@10820|79,0,@578 669,0,@1098 10815:D3,208|483b65187305ff5558cd0149c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049bea8af6208000000004d89750049c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d8926498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bec8469309000000004c8930c3f40000000000|@1330,1,@15625|56,0,@1307 190,0,@10818 10816:D3,944|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9200200004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be0804110a00000000498b16ff124989c641564c8b7424104d8b364c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70b06208000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@1326,1,@15622|26,0,@1044 52,0,@105 86,0,@1308 124,0,@105 174,0,@15156 218,0,@105 268,0,@15099 313,0,@1311 361,0,@866 406,0,@1313 450,0,@866 495,0,@1315 583,0,@866 627,0,@1316 676,0,@1318 821,0,@866 866,0,@1319 10817:D3,24|483b65187305ff5558cd0148b86052620800000000c3f400|@636,1,@15621|13,0,@634 10818:D4,616|483b65187305ff5558cd0552504c8b7424084d8b76084d8b3641f6c601754c4d8b264d8b6e084d8b5c24084d8b1b4c8b14244d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebae49c7c60100000041f6c601750c488d6424104d8b36498b06c34c8b7424084d8b6e104d89ec4d8b6d004983c5027115488d64241048b8d006620800000000488b5d08ff234d89f64d892c244c8b2c244d8b6d084983e5094983fd01740c49bdb0b1620800000000eb0a49bd581862080000000041554d89f64d8b7610498b06ff15900100004989c54c8b1c244d8b334e8d3475010000004d8b65004e8d2465010000004983fe01750d488d6424084c89e8e9bd0000004983fc01750d4c89d8488d642408e9aa0000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0dfe0000000f87dd0000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f14d89db498d7308488d642408488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf4d8d5fe84c3b5d107305ff5550cd014d89df49c743f8020000004c8b34244d897308488d6424084989034c8b2c244d8b75084d89f44d8b164d8d77e84c3b75107306ff5550ca011c4d89f749c746f8020000004d8956084d891e4d89e5488d6424084d897500c3488d64241848b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1328,1,@15623,@10819|161,0,@105 202,0,@1327 214,0,@194 588,0,@117 10819:D3,632|483b65187305ff5558cd01504c8b34244d89f54983fe350f8cbc0000004c89e849c7c63500000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c53500000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64240848b8d006620800000000488b5d08ff23eb034c89f04883e8027115488d64240848b8d006620800000000488b5d08ff23e82cffffff4989c3eb0a49bbd8086208000000005849c7c63500000048d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb344983fd017d0949c7c603000000eb0749c7c6010000004983fe017502eb164983c534711048b8d006620800000000488b5d08ff234981c5c2000000711048b8d006620800000000488b5d08ff234983fd017d05e9f60000004981fdff0100000f8fe900000049be30096208000000004f8b6caefc4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d96000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b82812620800000000488b5d08ff23f400000000ffffffffffffff01|@1329,1,@15624|161,0,@105 193,0,@105 219,0,@123 307,0,@105 332,0,@105 372,0,@126 589,0,@117 605,0,@137 10820:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba68b2620800000000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@15635|29,0,@1331 10821:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15627| 10822:D4,208|483b65187305ff5558cd0953a8010f85aa000000ff30ff700848bae85c620800000000488b44241048c7c303000000ff15b30000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4156488b5c24184883c3027115488d64242048b8d006620800000000488b5d08ff23488b442408e875ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f400000000|@1333,1,@15628,@10649|27,0,@707 115,0,@105 10823:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba68b2620800000000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@15629|29,0,@1331 10824:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15630| 10825:D4,56|483b65187305ff5558cd01a801751bff30488b40084c8b342441ff36e8dfffffff5b4158ff252600000048c7c001000000c3f40000000000|@1334,1,@15631,@10826| 10826:D3,440|483b65187306ff5558ca09014989c641f6c6010f857301000041ff36498b46084c8b2c244d8b65004c8b1b4d89dd4e8d145d010000004d8b0c244d89cb4e8d0c4d010000004d3bd10f85b4000000493bdc7502eb304d89ea4d89d54e8d1455010000004c89d94e8d1c5d010000004d3bd3751b488d7308498d7c2408483bc9f3a67402eb0949c7c501000000eb724e8d1c6d010000004d8b2c244e8d146d010000004d3bda73054c89d9eb034c89d1488d7308498d7c240848d1e9483bc9f3a67214770949c7c501000000eb1049c7c503000000eb0749c7c5ffffffff4983fd0175074d3bda7308eb0f4983fd017c0949c7c503000000eb0749c7c5ffffffffeb284e8d2c6d010000004d89dc4e8d2465010000004d3bec7d0949c7c5ffffffffeb0749c7c5030000004983fd017f28488d642408498d47e8483b45107306ff5550ca00414989c748c740f8020000004c8970084c8900c3e8a3feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000|@1335,1,@15632| 10827:D4,264|483b65187305ff5558cd01a8010f85ea0000004c8b28ff70084d8b7500498b450841ff3648ba68b2620800000000ff124989c64156488b442408ff15e00000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408e832ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@15633,@10828|38,0,@1331 10828:D4,488|483b65187305ff5558cd014989c64d8b264d89e54e8d2465010000004983fc037f05e9b20100004d89ec4e8d2c6d010000004983fd017f1048b8a838620800000000488b5d08ff234d0fb66e084e8d1c6d0100000049bd30096208000000004f8b5c9dfc4c3b1d95010000750949c7c503000000eb4a4d8b2b4e8d2c6d010000004983fd03753249bd3019620800000000498d7308498d7d0848c7c101000000483bc9f3a6750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983f5024983fd030f840b0100004d89e54a8d0c65010000004883e902711048b8d006620800000000488b5d08ff234e8d246d010000004883f9010f8cc80000004989cd4983c5024d3bec761048b82086620800000000488b5d08ff234883f901750f48b8d808620800000000e9820000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2c45010000004c3b2d85000000775c4d89ec4a8d04a50400000048f7d84903c7483b45107205493bc77206ff5550ca02604989c749d1ec4c8960f8c640ff414983ed024ac744a8fc000000004989cd49d1ed4c8928498d7609488d780848d1e9f3a48060ffbfe947feffff48b8f807620800000000488b5d08ff2348b8e002620800000000488b5d08ff234c89f0c3f40000ffffffffffffff01|@1336,1,@15634,@203|58,0,@502 87,0,@126 137,0,@203 225,0,@105 271,0,@994 293,0,@123 443,0,@117 459,0,@76 10829:D6,928|483b65187306ff5558ca090353415041514c8b7424084d89f54983fe017f10488d64241848b86089620800000000c3a8010f85580300004c8b30ff70084c8b24244983fc017560488d6424085a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64c8b6c24184d89eb4c3b2de30200007502eb3c4d89db4d8b2b4d89ec4e8d2c6d010000004983fd03753149bdd0186208000000004d89db498d7308498d7d0848c7c101000000483bc9f3a67402eb0c49c7c403000000e9be0000004c8b6c24184d89eb4c3b2d800200007502eb3a4d89db4d89e54e8d2465010000004983fc03752f49bc381a6208000000004d89db498d7308498d7c240848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5c24184d89dc4c3b1d22020000750949c7c403000000eb4e4d89e44e8d2c6d010000004983fd01753649bdd8086208000000004d89e4498d742408498d7d0848c7c100000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184c89db4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424184983e8027115488d64242848b8d006620800000000488b5d08ff23488b4424084c8b4c2410e8d0fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c410c3488d64241848c7c001000000c3f4000000|@1338,1,@15638,@123,@214,@199|38,0,@1020 258,0,@199 346,0,@214 436,0,@123 787,0,@105 852,0,@866 10830:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15637| 10831:D9,536|483b65187305ff5558cd014c8b30ff700841ff3641ff761041ff763048c7c001000000ff152f0200004989c048ba6888620800000000488b0424488b5c2418ff150b0200004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c706070000004156f6442418010f85030100004c8b742418498b06ff15bb0100004989c6415648c7c001000000ff15a10100004989c048ba8088620800000000488b0424488b5c243049b9e08862080000000049c7c201000000ff156c0100004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892eeb0749c7c601000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c420eb12488b0424ff15640000004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f400000000|@1340,1,@15639,@10832,@10723,@10815,@10814,@10717,@10815|46,0,@1013 164,0,@1014 183,0,@1015 284,0,@866 328,0,@1010 373,0,@866 10832:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15640| 10833:D3,40|483b65187305ff5558cd014c8b30488b5808498b0648ba78b4620800000000ff22f4000000000000|@1344,1,@15641|23,0,@1343 10834:D3,408|483b65187305ff5558cd014c8b30ff700841ff36498b4608488b5c24084883eb027115488d64241048b8d006620800000000488b5d08ff2348ba78b4620800000000ff124989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff2348ba78b4620800000000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90b56208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3f4|@1354,1,@15642|42,0,@105 58,0,@1343 91,0,@105 107,0,@1343 196,0,@866 241,0,@1353 285,0,@866 10835:D3,56|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@1363,1,@15643| 10836:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1367,1,@15644,@10837| 10837:D7,720|483b65187305ff5558cd09534c8b204c8b7010ff70284d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85fe000000498b06ff15ae0200004989c6415648c7c001000000ff15940200004989c048ba8088620800000000488b0424488b5c241849b9e08862080000000049c7c201000000ff155f0200004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be48af6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892eeb0749c7c6010000004156488b4424104c8b304983fe11750c48c7c301000000e9da000000488b5c24184883eb027115488d64242048b8d006620800000000488b5d08ff2348ba78b4620800000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0876208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017504415deb12488b0424ff15900000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c410c3f400|@1368,1,@15645,@10838,@10723,@10815,@10814|105,0,@1014 124,0,@1015 225,0,@866 269,0,@1305 314,0,@866 380,0,@105 396,0,@1343 480,0,@866 525,0,@1010 569,0,@866 10838:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15646| 10839:D4,144|483b65187305ff5558cd014c8b304c8b4008498b46084983e802711048b8d006620800000000488b5d08ff2348bb502062080000000049b9c8b7620800000000ff15620000004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f400000000000000|@1376,1,@15655,@10829|30,0,@105 46,0,@279 56,0,@1371 10840:D4,408|483b65187305ff5558cd014c8b30ff7008498b0641ff7608488b5c24084883eb027115488d64241048b8d006620800000000488b5d08ff23ff15720100004989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff2348ba78b4620800000000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0876208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3f4000000000000|@1374,1,@15648,@10841|42,0,@105 85,0,@105 101,0,@1343 190,0,@866 235,0,@1010 279,0,@866 10841:D19,2688|483b65187305ff5558cd094989c553498b45004989c44d89e641f6c4010f85a40300004d8b1c244d8b6424084d8b134983fa3375644d8b5b0841f6c30175514d8b5b0841f6c301753e4d8b5b084983fb01752b4983fc01751c4d8b65104983fc03750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f851d0300004d8b364d8b7608498b064d8b760841ff364d8b750841ff3641ff7518488b5c24184883eb027115488d64242048b8d006620800000000488b5d08ff2348ba78b4620800000000ff124989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706070000004156488b5c24284883eb027115488d64243048b8d006620800000000488b5d08ff2348ba78b4620800000000488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424204983ee0241567115488d64243048b8d006620800000000488b5d08ff23f6442410010f85020100004c8b742410498b06ff15a80800004989c6415648c7c001000000ff158e0800004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15590800004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c8933eb0c488d64240848c7c3010000004883fb017508415e4883c420eb12488b0424ff15780700004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34d89f441f6c6010f85530400004d8b364d8b1e4983fb3375554d8b760841f6c60175424d8b760841f6c601752f4d8b76084983fe01751c4d8b75104983fe03750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f85e10300004d8b342441ff7424084d8b7608498b064d8b760841ff364d8b750841ff3641ff7518488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff2348ba78b4620800000000ff124989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706070000004156488b5c24304883eb027115488d64243848b8d006620800000000488b5d08ff2348ba78b4620800000000488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e41564c8b4424284983e8027115488d64243048b8d006620800000000488b5d08ff23488b44242048bbd80862080000000049b9d8b7620800000000ff15830400004989c641564c8b7424304983ee0441567115488d64244048b8d006620800000000488b5d08ff23f6442418010f85020100004c8b742418498b06ff153b0400004989c6415648c7c001000000ff15210400004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15ec0300004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c8933eb0c488d64240848c7c3010000004883fb0175035beb12488b0424ff15100300004889c3488d6424084883fb017508415e4883c428eb12488b0424ff15e80200004989c6488d642430498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34d8b75084d8b3641ff75184d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049bc48896208000000004d8966084d892e41564c8b4424104983e8027115488d64241848b8d006620800000000488b5d08ff2348bbd80862080000000049b9d8b7620800000000ff15ff0100004989c641564c8b7424184983ee0441567115488d64242848b8d006620800000000488b5d08ff23f6442418010f85020100004c8b742418498b06ff15b70100004989c6415648c7c001000000ff159d0100004989c048ba8088620800000000488b0424488b5c240849b9e08862080000000049c7c201000000ff15680100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c8933eb0c488d64240848c7c3010000004883fb0175035beb12488b0424ff158c0000004889c3488d6424084883fb017508415e4883c410eb12488b0424ff15640000004989c6488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f400000000|@1375,1,@15649,@10844,@10845,@10723,@10815,@10814,@10829,@10846,@10847,@10723,@10815,@10814,@10829,@10843,@10723,@10815,@10814|216,0,@105 232,0,@1343 307,0,@105 323,0,@1343 412,0,@866 500,0,@866 577,0,@105 639,0,@1014 658,0,@1015 758,0,@866 803,0,@1358 847,0,@866 1146,0,@105 1162,0,@1343 1237,0,@105 1253,0,@1343 1300,0,@1070 1348,0,@866 1436,0,@866 1524,0,@1021 1569,0,@1022 1600,0,@105 1621,0,@123 1631,0,@1372 1670,0,@105 1732,0,@1014 1751,0,@1015 1851,0,@866 1896,0,@1358 1940,0,@866 2166,0,@1019 2201,0,@105 2217,0,@123 2227,0,@1372 2266,0,@105 2328,0,@1014 2347,0,@1015 2447,0,@866 2492,0,@1358 2536,0,@866 10842:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1373,1,@15647,@10811| 10843:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15654| 10844:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15650| 10845:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15651| 10846:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15652| 10847:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15653| 10848:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@1391,1,@15656| 10849:D5,888|483b65187306ff5558ca09035041504151f6c3010f854d0300004c8b33ff73084c8b2c244983fd010f8581000000488d6424084c8b24244d89e54983fc017f10488d64241848b86089620800000000c3488b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c410c34c8b6424084d89e54983fc017f10488d64242048b86089620800000000c34c8b6424104d89e24c3b25bc0200007502eb3c4d89d24d8b1a4d89dc4e8d1c5d010000004983fb03752e49bbd0186208000000004d89d2498d7208498d7b0848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5424104d89d34c3b155c020000750949c7c403000000eb4e4d89db4e8d2465010000004983fc03753649bc381a6208000000004d89db498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024154488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24104d89d84d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00714d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4c24104983e9027115488d64242848b8d006620800000000488b5d08ff23488b442420488b5c2408e8f8fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3488d64241848c7c001000000c3f4000000|@1401,1,@15658,@214,@199|71,0,@1020 196,0,@1020 249,0,@199 338,0,@214 747,0,@105 812,0,@866 10850:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15659| 10851:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b84889620800000000c3f4000000|@1032,1,@15676|75,0,@1019 10852:D5,840|483b65187305ff5558cd0953a8010f85200300004c8b30ff7008498b0641ff76084d8b76204c8b6c24104c89eb4983fd017f10488d64241848b86089620800000000c34983fe03750c49bee0bb620800000000eb0749c7c60100000041564889db4883eb027115488d64242048b8d006620800000000488b5d08ff2348ba78b4620800000000ff124989c64156488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff2348ba78b4620800000000488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004c8b6c24104983fd01753d498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c418c3584883c418ff2549010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bd10bc6208000000004c896b084c89334883fb017508415d4883c408eb12488b0424ff15fd0000004989c5488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e82bfdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64240848c7c001000000c3f4000000000000|@1408,1,@15661,@10854,@10853|58,0,@1020 75,0,@1403 110,0,@105 126,0,@1343 159,0,@105 175,0,@1343 265,0,@866 309,0,@1010 354,0,@866 572,0,@1405 701,0,@105 761,0,@866 10853:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15663| 10854:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15662| 10855:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@15664|75,0,@1070 10856:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15665| 10857:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15666| 10858:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@15667|75,0,@1409 10859:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@15668|75,0,@1412 10860:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15669| 10861:D3,1416|483b65187305ff5558cd09534c8b34244c89f34983fe017f10488d64240848b86089620800000000c3a8010f85360500004c8b30ff70084c8b2c244983fd010f852e020000488d6424084d8b1e4d8b76184d8b2b4e8d2c6d010000004983fd01750f49bc30bd620800000000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0ddf0400000f87b70100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889db4883eb027115488d64241048b8d006620800000000488b5d08ff2348ba78b46208000000004c89f0ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488d64240848b8f807620800000000488b5d08ff234d8b1e4d8b76184d8b2b4e8d2c6d010000004983fd01750f49bc30bd620800000000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0dae0200000f87820200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889db4883eb027115488d64241848b8d006620800000000488b5d08ff2348ba78b46208000000004c89f0ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e80dfbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64241048b8f807620800000000488b5d08ff23488d64240848c7c001000000c3f4000000ffffffffffffff01ffffffffffffff01|@1416,1,@15670|32,0,@1020 100,0,@1415 342,0,@105 358,0,@1343 446,0,@866 613,0,@117 653,0,@1415 895,0,@105 911,0,@1343 999,0,@866 1145,0,@1114 1243,0,@105 1303,0,@866 1369,0,@117 10862:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@15671|75,0,@1070 10863:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15672| 10864:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15673| 10865:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15674| 10866:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15675| 10867:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15679| 10868:D9,1712|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84887620800000000c34c8b284d89ee4983fd050f859b0100004c8b7008498b0641ff760841ff76104c89cb4883eb027115488d64241848b8d006620800000000488b5d08ff23e895ffffff4989c641564c8b7424084983fe03750c49bdd887620800000000eb0a49bd88876208000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b5c24204883eb027115488d64242848b8d006620800000000488b5d08ff23488b442418ff150c0600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c34d89f54983fe030f85dd010000ff7008488b58104d89c94983e9027115488d64241048b8d006620800000000488b5d08ff2348b820be62080000000049b8381a620800000000ff15c80400004989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408e8b1fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18ba6208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be40726208000000004c8930ff15dd0300004889c34883fb017508415e4883c410eb12488b0424ff15ba0300004989c6488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0bf6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ee4983fd010f85db0100004c8b68084d8b75004d8b5d084d8b2b4e8d2c6d010000004983fd01750f49bc7018620800000000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05810200000f87640100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d89650849c745000700000041554c89cb4c89f0e835fbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d64240848b8f807620800000000488b5d08ff234983fe070f85c4000000488b580848b820be62080000000049b8d808620800000000ff1502010000488d642408ff15ef0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8bf6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d6424084c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000ffffffffffffff01|@1433,1,@15689,@10879,@10874,@10880,@10878,@10874,@10716|32,0,@1003 88,0,@105 125,0,@1009 137,0,@1006 203,0,@105 303,0,@866 504,0,@105 520,0,@1420 530,0,@214 567,0,@105 665,0,@866 710,0,@1389 754,0,@866 839,0,@866 884,0,@1431 1002,0,@195 1259,0,@1070 1307,0,@1021 1432,0,@117 1462,0,@1420 1472,0,@123 1533,0,@866 1578,0,@1432 10869:D3,40|483b65187305ff5558cd014989c648ba30be620800000000498b06498b5e08ff22f4000000000000|@1430,1,@15688|16,0,@1421 10870:D10,656|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84887620800000000c34c8b284d89ee4983fd017528488b40084c89cb4883eb02488d642408711048b8d006620800000000488b5d08ff23ff257b0200004983fe030f8569010000ff7008488b58104d89c94983e9027115488d64241048b8d006620800000000488b5d08ff2348b820be62080000000049b8381a620800000000ff152a0200004989c641564c8b4c24104983e9027115488d64241848b8d006620800000000488b5d08ff2348b820be620800000000488b5c240849b8381a620800000000ff15de010000ff15d00100004889c34883fb01750c48bbe8b9620800000000eb1348b8e8b9620800000000ff15a30100004889c34883fb017508415e4883c410eb12488b0424ff15800100004989c6488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40be6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488b581048b858be62080000000049b86881620800000000ff15ba0000004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8ae6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f400|@1428,1,@15683,@10874,@10875,@10876,@10877,@10874,@10874,@10811|32,0,@1003 73,0,@105 126,0,@105 142,0,@1420 152,0,@214 189,0,@105 205,0,@1420 220,0,@214 251,0,@1387 263,0,@1387 345,0,@866 390,0,@1422 470,0,@1423 480,0,@959 535,0,@866 580,0,@1301 10871:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@1426,1,@15680,@10872| 10872:D5,792|483b65187305ff5558cd09534c8b60084c8b70104c8b68206a016a014983fd03756c4d8b2e4983fd0575634d8b5e084d8b334d8b6b084d8b53104d8b4b184d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d8953084d892b4d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d895d004c892c244c89742408eb0d48c70424010000004c897424084c8b3424ff7424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85f70000004d8b36498b064d8b76084983fe03750c49bdd887620800000000eb0a49bd88876208000000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c24284883eb027115488d64243048b8d006620800000000488b5d08ff23ff15ee0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb0749c7c6010000004156488b5c24284883eb027115488d64243048b8d006620800000000488b5d08ff2348ba68be620800000000488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be78be6208000000004c89334883fb017504415deb12488b0424ff15930000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3f400000000|@1427,1,@15681,@10873,@10716|232,0,@1009 244,0,@1006 310,0,@105 404,0,@866 488,0,@105 504,0,@1424 594,0,@866 638,0,@1425 10873:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15682| 10874:D5,888|483b65187306ff5558ca09035041504151f6c3010f854d0300004c8b33ff73084c8b2c244983fd010f8581000000488d6424084c8b24244d89e54983fc017f10488d64241848b86089620800000000c3488b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c410c34c8b6424084d89e54983fc017f10488d64242048b86089620800000000c34c8b6424104d89e24c3b25bc0200007502eb3c4d89d24d8b1a4d89dc4e8d1c5d010000004983fb03752e49bbd0186208000000004d89d2498d7208498d7b0848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5424104d89d34c3b155c020000750949c7c403000000eb4e4d89db4e8d2465010000004983fc03753649bc381a6208000000004d89db498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024154488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24104d89d84d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00714d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4c24104983e9027115488d64242848b8d006620800000000488b5d08ff23488b442420488b5c2408e8f8fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3488d64241848c7c001000000c3f4000000|@1429,1,@15687,@214,@199|71,0,@1020 196,0,@1020 249,0,@199 338,0,@214 747,0,@105 812,0,@866 10875:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15684| 10876:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15685| 10877:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@15686|75,0,@1409 10878:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@15692|75,0,@1409 10879:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@15690|75,0,@1409 10880:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15691| 10881:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15693| 10882:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15696| 10883:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@15695|75,0,@1409 10884:D4,528|483b65187305ff5558cd014c8b30488b58084d8b5e084d8b76204d8b2b4e8d2c6d010000004983fd01750f49bc30bd620800000000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d9e0100000f87830100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554883eb027115488d64240848b8d006620800000000488b5d08ff234c89f0ff15f50000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c348b8f807620800000000488b5d08ff23f400000000ffffffffffffff01|@1437,1,@15697,@10716|45,0,@1415 284,0,@105 381,0,@866 501,0,@117 10885:D9,1176|488dbc24e8feffff483b7d187306ff5560ca0d0152534150ff306a016a016a0148c7c0010000004889e3ff15a8040000ff3424ff742410ff7424204d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e104c8b6c24084d896e084c8b6c24104d892e41566a016a016a0148c7c0010000004889e3ff154c040000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15260400004c8b2c24ff742408ff7424184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104c8b6424084d8966084d892e41566a016a016a0148c7c0010000004889e3ff15cb030000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15a5030000ff742408488b7c24184c8bb424e000000041ff76304d8d57e04c3b55107305ff5550cd804d89d749c742f8030000004c8bb424b00000004d8972104c8b2c244d89ee4d896a0849bdc8a69309000000004d892a4c8bac24e800000041ff75404d8d4fe04c3b4d107306ff5550ca80444d89cf49c741f8030000004c8bac24880000004d8969104c8b24244d89e54d89610849bc30a79309000000004d89214c8ba424f000000041ff742460498d77e0483b75107306ff5550ca80664989f748c746f8030000004c8b6424684c8966104c8b1c244d89dc4c895e0849bb98a79309000000004c891e4c8b9c24f80000004d8b43284d8d5fe04c3b5d107306ff5550cac0774d89df49c743f803000000488b542438498953104d89430849b800a89309000000004d890341534c8b9c24000100004d8b5b584d8d47e04c3b45107306ff5550cac07e4d89c749c740f803000000498978104d89580849bb68a89309000000004d8918498d7fe0483b7d107306ff5550ca40774989ff48c747f8030000004c8b9c24d80000004c895f104c8b9c24000100004c895f0849bbd0a89309000000004c891f4c8b9c24000100004d8b5b20498d5f90483b5d107306ff5550cac07f4989df48c743f80d000000488973604c894358488b7424784889735048897b484c894b40488b7c24204989f948897b384c895330488b3c244989fa48897b284c895b20488bbc24a000000048897b18488bbc24d000000048897b10488b7c244848897b0848bfc0c162080000000048893b48c7c701000000498d4ff0483b4d107306ff5550ca887f4989cf48c741f801000000c641ff40488939498d77e8483b75107306ff5550ca0a7f4989f748c746f80200000048894e0848bfe8aa93090000000048893e498d57e8483b55107306ff5550ca4a7f4989d748c742f80200000048894a0848bf68ab93090000000048893a488bbc2410010000488b7f08ff742448ffb424d00000004156ffb424b00000004155ffb424980000004154ffb42410010000ffb42440010000ffb42418010000ffb424f0000000415341524151ffb424e80000004150575652ffb42458010000ffb424080100004989da4989c9488b8424a001000048c7c3010000004c8b8424b0010000ff155f000000488da424c8000000488b542410498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424484c89700849be88ad9309000000004c8930ff22f40000000000|@1468,1,@15724,@10911,@10906,@10906,@10906,@10906,@10906|347,0,@10886 422,0,@10887 495,0,@10888 560,0,@10889 622,0,@10890 686,0,@10891 827,0,@1444 912,0,@10895 956,0,@10896 1157,0,@10898 10886:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15700| 10887:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15701| 10888:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15702| 10889:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15703| 10890:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15704| 10891:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb0a99309000000004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@1443,1,@15706,@10893|101,0,@10892 10892:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1442,1,@15705| 10893:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15707| 10894:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1445,1,@15708| 10895:D3,88|483b65187305ff5558cd054c8b72084d8b3648c7c00100000041f6c60175314d8b66084989c54983c502711048b8d006620800000000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc9c3f4000000000000|@1446,1,@15709|46,0,@105 10896:D3,400|483b65187305ff5558cd054c8b72084d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49be48c2620800000000e9ad00000049c7c5010000004d89e641f6c60175314d8b56084d89eb4983c302711048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc94c3b2dcf0000007c1048b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017532418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be20ad9309000000004c8930c34d8b1c244d8b5424084f895caefc4d89eb4983c302711048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eb8df400ffffffffffffff01|@1451,1,@15711|100,0,@1447 144,0,@105 189,0,@1448 319,0,@10897 356,0,@105 10897:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff23498b4486fcc3f40000|@1450,1,@15710|41,0,@628 10898:D5,248|483b65187305ff5558cd054989c6498b0641ff7608488b5208ff124989c641f6c60175424d8b264d89e54d8b64242841f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375174d89ee4d8b76284d8b364d8b760849c70603000000eb004c8b34244d8b6e3041f6c501757141ff75004d89f6498b46186a016a0148bb38c36208000000004989e0ff1582000000ff3424488b442410ff156c0000004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424184c8b2c244d897500488d64241048c7c001000000c3488d64240848c7c001000000c3f40000000000|@1462,1,@15717,@10905,@10900|133,0,@1452 10899:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@15712| 10900:D4,168|483b65187306ff5558ca09014989de415049c7c4010000004d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f80100000041c645ff404d8965004155498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b34244c89730849bed0af9309000000004c893349b8a0c4620800000000ff153e0000004989c44c8b34244d8b36488d642408415d4d8965004d89750848c7c001000000c3f400000000|@1463,1,@15719,@10774|103,0,@10901 116,0,@1460 10901:D6,296|483b65187305ff5558cd054989c6524d8b2e4983fd0d0f850201000041ff7608498b5e1048c1eb034883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f8546208000000004156ff15ed000000415e4989c541f6c5010f84970000004981fd1f4e00007409488d6424104c89f0c34c8b6c2408498b5d084d89ed4d8b45104c89f0ff15ab0000004989c641564c8b742408498b064c8b304983fe0775504c8b34244d8b2e4983fd0d752e4d89f641ff7608488b5c241849b880c3620800000000ff15640000004989c64c8b2c244d897500488d642408eb15488d64241848b8d0c3620800000000488b5d08ff23584883c410c3488d64241048b80855620800000000488b5d08ff23488d6424084c89f0c3f4|@1458,1,@15714,@10774,@10903,@10599|83,0,@651 206,0,@1454 245,0,@1456 272,0,@652 10902:D3,16|483b65187305ff5558cd01c3f4000000|@1455,1,@15713| 10903:D3,560|483b65187306ff5558ca09014c89c2534c8b304983fe0d753cff7008ff70104d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e084c8b6c24084d892e41564c8b7424184d8b36eb15488d64240848b8d0c3620800000000488b5d08ff2341f6c60175474d8b264d8b6e084d8b5c24084d8b1b4c3b5c241075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb349c7c6010000004983fe010f8556010000488b0424ff124989c64983fe010f853a0100004c8b6c24084d89ee4983e5094983fd01750949c7c303000000eb0749c7c3010000004983f3024d89f64983e6034983fe01750949c7c403000000eb0749c7c4010000004983f40249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d34f5f9ffffff4983fb03750949c7c309000000eb0749c7c3010000004d0bf34d0bf4498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8970104c89680848c7000d0000004c8b7424104d8b364d8975004d8d67e84c3b65107305ff5550cd014d89e749c74424f8020000004c8b34244d89742408488d642408498904244c8b6c24104d8b5d004d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d89ed4d8975004883c418c3488d642420498b06c3488d6424204d8b36498b06c3f40000000000|@1459,1,@15715|92,0,@1456 292,0,@1098 10904:D3,16|483b65187305ff5558cd01c3f4000000|@1461,1,@15716| 10905:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@15718| 10906:D3,216|483b65187305ff5558cd0949c7c6010000004d8d5ff04c3b5d107306ff5550ca08404d89df49c743f80100000041c643ff404d89334d8d67e84c3b65107306ff5550ca08084d89e749c74424f8020000004d895c240849bef8b59309000000004d8934244d8d6fe84c3b6d107306ff5550ca08184d89ef49c745f8020000004d895d0849bee0b69309000000004d8975004d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849bb78b79309000000004d891e4c89234c896b084c89731048c7c001000000c3f400000000000000|@4705,1,@16768|88,0,@10907 133,0,@10909 178,0,@10910 10907:D4,32|483b65187305ff5558cd054889c34c8b7208498b06ff251d000000f400000000|@1464,1,@15720,@10908| 10908:D3,112|483b65187305ff5558cd0953a80175524c8b30488b400841ff3641ff7608488b5c2410e8d8ffffff488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22488d64240848c7c001000000c3f4|@1465,1,@15721| 10909:D3,112|483b65187305ff5558cd054c8b304c8b68084d8d67e84c3b65107306ff5550ca04604d89e749c74424f8020000004d896c24084d8934244c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f4|@1466,1,@15722| 10910:D3,152|483b65187305ff5558cd054c8b72084d8b3641f6c60175764d8b264d8b6e084d8b14244d8b6424084c3bd07502eb2f4d8b1a4e8d1c5d010000004c8b084c89c94e8d0c4d010000004d3bd97530498d7208488d7808483bc9f3a67402eb1f498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d89ee483b65187306ff5558ca0140eb8448c7c001000000c3f400|@1467,1,@15723| 10911:D9,4568|488dbc24f8feffff483b7d187306ff5560ca090753415041514152a8010f856d030000ff30ff70084c8b6c24084d8b65004d89e64983fc03751a4d89ed4d89ee41ff75084d89f641ff7610ff742438e9250a00004d89ed4983fe01751a4d89ed4d89ee41ff75084d89f641ff7610ff742438e9d80300004d89ed4d8b75084d89ed4d8b6d10498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c8b6424184c8963104c896b0849bd68ca9309000000004c892b498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304c8b7424204d8b5e284d89f64d8b66304d89f64d8b56504d89f64d8b6e704d89f64d8b4e784d8b124d8b1b4d8b014d8b4d004d8d6fd04c3b6d107306ff5550ca095f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d89650048ba60c86208000000004c8b4424504c8b4c24484c8b64245841564155ff35b410000041544c8b542430ff159f1000004c8b7424204d8b6e184d8b6d004983fd03750949c7c501000000eb574c8b6c24404c8b5c24384d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24284d895d084d896500ff342441554156ff742430ff742430ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a800000048898424a8000000488b44246848899c24b0000000488b5c246048898c24b800000048899424c00000004889b424c80000004889bc24d00000004c898424d80000004c8b4424584c898c24e00000004c8b4c24504c899424e80000004c8b5424484c899c24f00000004c89a424f80000004c89ac24000100004c8b34244c89b424080100004c8b7424084c89b424100100004c8b7424104c89b424180100004c8b7424184c89b424200100004c8b7424204c89b424280100004c8b7424284c89b424300100004c8b7424304c89b424380100004c8b7424384c89b424400100004c8b7424404c89b424480100004881c4a0000000e975fcffff488d642478488d642410ff742408f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be58e19d09000000004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be50f09d09000000004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d64241848c7c001000000c2a800f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849be70f69d09000000004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849bed0f69d09000000004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d642408498d47d8483b45107303ff55504989c748c740f8040000004c8b34244c897018488d6424084c8b7424284c8970104c8b7424104c89700849bef8f79d09000000004c89306a016a016a014889e3ff15ba0c0000ff3424ff7424104c8b7424484d8b2e49c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424504d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49be48c2620800000000e9b700000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d7a0b00007c15488d64246848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01753c418066ffbf41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd38fb9d09000000004d892e4156ff742440eb434d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e97bfffffff60424010f85760100004c8b2c244d8b75004d89ed41ff750841ff3641ff760841ff761041ff761841ff762041ff762841ff763041ff763841ff764041ff764841ff765041ff7658ffb42488010000ffb42488010000ffb42488010000ffb424880100004c8bb424880100004c8bac24800100004c8ba424780100004c8b9c24700100004c8b9424b00100004c8b8c24680100004c8b842460010000488bbc2458010000488bb42450010000488b942448010000488b8c2440010000488b9c2438010000488b842430010000ff742450ff742450ff742450ff742450ff742450ff742450ff742450ffb424d8000000ffb424d0000000ffb42430010000ffb42448010000ffb424f0000000ff742478ff742478ff742478ff7424784156415541544153415241514150575652515350ffb42490010000488b842468010000488b9c24600100004c8b8424580100004c8b8c24500100004c8b942448010000ff1562090000488da42480000000415d4c892c24483b65187303ff5558e980feffff488d6424285a488b842490000000ff12ff742420ff742448ff742448ff742448ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c000000048898424c0000000488b44246048899c24c800000048c7c30100000048898c24d000000048899424d80000004889b424e00000004889bc24e80000004c898424f00000004c8b4424584c898c24f80000004c8b4c24504c899424000100004c8b5424484c899c24080100004c89a424100100004c89ac24180100004c8b34244c89b424200100004c8b7424084c89b424280100004c8b7424104c89b424300100004c8b7424184c89b424380100004c8b7424204c89b424400100004c8b7424284c89b424480100004c8b7424304c89b424500100004c8b7424384c89b424580100004c8b7424404c89b424600100004881c4b8000000e98cf5ffff488d642468f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849bea0fb9d09000000004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849be00fc9d09000000004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d642408498d47d8483b45107303ff55504989c748c740f8040000004c8b34244c897018488d6424084c8b7424284c8970104c8b7424104c89700849be28fd9d09000000004c89306a016a016a014889e3ff1580060000ff3424ff7424104c8b7424484d8b2e49c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424504d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49bd48c2620800000000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d480500007c15488d64246848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01753c418066ffbf4d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68009e09000000004d892e4156ff742438eb434d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e97bfffffff60424010f85990200004c8b34244d8b2e4d89f641ff76084d8b750041ff750841ff751041ff7518498b452048ba58426408000000004156488b5c24384c8b4424304c8b8c24800000004c8b942490000000ff15340400004989c641ff3641ff761041ff762041ff76284d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060100000041564c8bb424b0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6424184d8b2c244983fd030f85bf0000004d89e44d8b6c24084d89e44d8b6424184d8b6d00498b34244c8b66f849c1e40849c1ec074983cc014983fc01750c49bb48c2620800000000eb554d89e24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab4c89e14c89df48d1e9f348a5418063ffbf4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c7042401000000eb034d89e44d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084c8b1c244d895d20488d6424084d8975184c8b34244d897510488d6424084c8b5c24184d89de4d895d084d8965004c8b6424104d892c24488b542440498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6c24204c896c2428483b65187303ff55584883c428e95dfdffff488d6424205a488b8424f8000000ff12ff742420ff742448ff742448ff742448ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c000000048898424c0000000488b44246048899c24c800000048c7c30100000048898c24d000000048899424d80000004889b424e00000004889bc24e80000004c898424f00000004c8b4424584c898c24f80000004c8b4c24504c899424000100004c8b5424484c899c24080100004c89a424100100004c89ac24180100004c8b34244c89b424200100004c8b7424084c89b424280100004c8b7424104c89b424300100004c8b7424184c89b424380100004c8b7424204c89b424400100004c8b7424284c89b424480100004c8b7424304c89b424500100004c8b7424384c89b424580100004c8b7424404c89b424600100004881c4b8000000e93feeffff488d642468f400ffffffffffffff01ffffffffffffff01|@4699,1,@16763,@11679,@10988,@11930,@10988,@10916,@123|175,0,@10912 323,0,@1481 993,0,@11906 1055,0,@11916 1175,0,@11920 1237,0,@11921 1332,0,@11922 1406,0,@105 1532,0,@1447 1581,0,@105 1631,0,@1448 1764,0,@11924 1813,0,@105 2753,0,@11925 2815,0,@11926 2910,0,@11927 2984,0,@105 3110,0,@1447 3159,0,@105 3209,0,@1448 3342,0,@11929 3391,0,@105 3474,0,@4297 3790,0,@1447 10912:D5,616|483b65187305ff5558cd05524c8b304c8b68084c8b58104c8b50184c8b48204c8b24244d8b6424104d8b042449c7c40100000041f6c0017536498b70084c89e74883c7027115488d64240848b8d006620800000000488b5d08ff234989f04989fc483b65187306ff5558ca007febc44983fd030f85be00000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd60c6620800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff1556010000e9b900000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd60c6620800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff15900000004c8b2c244d8b75104d89f44d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084989064d89ed4d8934244d89ed4d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000|@1478,1,@15726,@10915,@10914|77,0,@105 165,0,@1469 355,0,@1469 10913:D3,112|483b65187305ff5558cd014c8b304c8b60084c8b68104983fc0175434983fd01753d4983fe017d1048b890c6620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c348b808c7620800000000488b5d08ff23f4|@1477,1,@15725|42,0,@1471 97,0,@1474 10914:D3,200|483b65187305ff5558cd014c8b184c8b70084c8b48104c8b50184c8b40204c8b60284d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f80100000041c645ff404d8955004d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d896a0849c702030000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d0849c7450001000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f400|@1480,1,@15728| 10915:D3,168|483b65187305ff5558cd014c8b184c8b70084c8b48104c8b68184c8b40204c8b60284d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d896a0849c702010000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d0849c7450001000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f40000000000|@1479,1,@15727| 10916:D6,272|483b65187306ff5558ca0d07525341504151415250f60424010f85e10000004c8b3424498b064d89f641ff76084c8b284d89ee4983fd01752c4c8b6808488b58104c8b5424484c8b74245841564c89e84c8b4424184c8b4c2430ff15d8000000e9870000004983fe037540488b5808488b40104c8b5424404c8b7424584c8b6c24504c8b642448ff742428ff742428ff7424284156415541544c8b4424404c8b4c2460ff1587000000eb41488b58104c8b40184c8b4c24584c8b5424504c8b7424484c8b6c24304d8b6d084c8b642440ff742428415641554154ff742440ff742440ff742440ff153c000000415d4c892c24483b65187303ff5558e915ffffff488d64243048c7c001000000c22000f4|@4274,1,@16464,@11653,@11662,@10917| 10917:D4,456|483b65187306ff5558ca09074989dd50415141524d8b4830498b704041ff7020498b40604d8b5028498b58584d8d67e04c3b65107306ff5550ca49274d89e749c74424f8030000004d894424104d896c240849bea8d29309000000004d8934244d8d5fe04c3b5d107306ff5550ca49374d89df49c743f8030000004d8943104d896b0849be10d49309000000004d89334d8d77e04c3b75107306ff5550ca493f4d89f749c746f8030000004d8946104d896e0848bf78d593090000000049893e498d4fe0483b4d107306ff5550ca497f4989cf48c741f8030000004c8941104c89690849bdf0d69309000000004c89294d8b6808498b7838498b50484d8d47904c3b45107306ff5550cacf7e4d89c749c740f80d0000004989406049895858498948504989504849897040498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930498d5fe0483b5d107306ff5550ca00014989df48c743f8030000004c8b34244c897310488d6424084c8b34244c897308488d64240849be58d89309000000004c893348ba38c96208000000004c8b4c2410488b042449bae83c640800000000ff1528000000488d64240848c7c001000000c20800f4|@4289,1,@16485,@10927|84,0,@10918 133,0,@10920 181,0,@10922 229,0,@10924 394,0,@10926 407,0,@1486 426,0,@4272 10918:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5610ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@1483,1,@15729,@10919| 10919:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15730| 10920:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5618ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@1483,1,@15731,@10921| 10921:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15732| 10922:D4,192|483b65187305ff5558cd0552504c8b7424084d8b7610498b16488b0424ff124c8b7424084d8b7608498b064c8b34244d8b2e4d89f64d8b6608488d6424084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@1483,1,@15733,@10923| 10923:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15734| 10924:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5650ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70603000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@1483,1,@15735,@10925| 10925:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15736| 10926:D3,880|483b65187306ff5558ca0d034889d7504d8b58084d8b334983fe03751d4d8b284d8b014d8b59084d8b5110ff770849c7c601000000e984010000488d6424084d8b204d8b014d8b51084d8b49104c8b6f104d89ee4d8b6d004e8d2c6d01000000498b30488d1c75010000004983fd0175084d89c6e9b30000004883fb017505e9a8000000498d741dff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15b60200000f87f60000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee498936488b7f104c89e9488d7708498d7e0848d1e9f3a44983c5104889d9498d700849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed8c86208000000004c8930c348b8f807620800000000488b5d08ff2341f6c50175364d8b4d084d89f44983c4027115488d64241048b8d006620800000000488b5d08ff234d89cd4d89e6483b65187306ff5558ca886debc44c8b6f104d8b6d004e8d2c6d010000004d8b204e8d0c65010000004983fd0175084d89c4e9bc0000004983f90175094c8b6710e9ad0000004b8d740dff4889f04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d144501000000483b15000100000f87e30000004889d14c8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550cacc6f4d89e748d1e949894c24f841c64424ff414883ea0249c74494fc0000000048d1ee49893424488b7f104c89e9488d7708498d7c240848d1e9f3a44983c5104c89c9498d700849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8d6fe04c3b6d107306ff5550ca085c4d89ef49c745f8030000004d8955104d895d084d896500498d47d0483b45107306ff5550ca08604989c748c740f8050000004c896820488958184c8b6c24084c89681048c74008030000004c89305a4883c408ff22488d642410488d64241048b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@1485,1,@15737|418,0,@1484 432,0,@117 472,0,@105 848,0,@117 10927:D4,248|483b65187306ff5558ca0d0752534151415241ff7030498b784041ff7020498b58604d8b5028498b48584d8b60104d8b58184d8b30498b50504d8b68084d8b4838498b70484d8d47884c3b45107306ff5550cacf7e4d89c749c740f80e0000004989586848bb80c962080000000049895860498948584989505049897048498978404d8948384c8b4c24084d8948304d8950284c8b14244d895020488d6424104d8958184d8960104d8968084d89304989c14c8b6c24084c8b642410415b488d6424104c8b34244d8b5608488d642408415441534152ff7424184989c248c7c30100000048c7c0030000004c896c2420ff251a000000f400|@1492,1,@15741,@10929|102,0,@1488 10928:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1489,1,@15738| 10929:D4,232|483b65187306ff5558ca09074c89c64c89cf4d8d77e84c3b75107306ff5550cac9044d89f749c746f8020000004989760849bd70de9309000000004d892e4d8d6fe84c3b6d107306ff5550cac9444d89ef49c745f8020000004989750849bc08df9309000000004d896500498d4fe8483b4d107306ff5550cac9644989cf48c741f8020000004c8969084c89314d89d0488b54242049bd10ca6208000000004c8b6424184c8b5c24104c8b4c2408415153ff7424104989d14889fb4c895c24184c896424204c896c242848894424304c89c04989f04c895424384989caff251d000000f400000000|@1968,1,@15928,@10932|51,0,@10930 95,0,@10931 151,0,@1491 10930:D3,112|483b65187305ff5558cd054c8b7208498b5640ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@1490,1,@15739| 10931:D3,112|483b65187305ff5558cd054c8b7208498b5668ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@1490,1,@15740| 10932:D169,23216|488dbc24e8feffff483b7d187306ff5560ca090750534150415141524c8b7424204d8b364983fe2d75724c8b742420498b4608488b5c2418488b742410488b54240859488d6424204c8b6c24384c8b6424304c8b5c24284c8b5424204c8b4c24184c8b442410488b7c240848897c24084c894424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438e964ffffff4c8b7424204d8b364983fe117515488d64242848b850ca620800000000488b5d08ff234c8b7424204d8b364983fe217515488d64242848b820cb620800000000488b5d08ff234c8b7424204d8b364983fe3d7515488d64242848b8b0cb620800000000488b5d08ff234c8b7424204d8b364c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e99e010000909090e9a8050000909090e94e0a0000909090e9780d0000909090e911110000909090e994150000909090e940180000909090e956180000909090e958180000909090e9b1180000909090e9c4180000909090e90f1a0000909090e9881a0000909090e9bc1c0000909090e9be1c0000909090e9771e0000909090e9791e0000909090e95c200000909090e915220000909090e9b9240000909090e928250000909090e932290000909090e934290000909090e90b2c0000909090e9112c0000909090e9f52c0000909090e96d2d0000909090e9772d0000909090e9e52d0000909090e9c5300000909090488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff7618498b46204d8b66284c8b5c24204c8b5424784c8b4c24484c8b442460488b7c2428488b742458488b542468488b4c2450488b5c24704c8b6c244048895c2430488b5c241048894c24384889542440488974244848897c24504c894424584c8b4424084c894c24604c8b0c244c895424684989c2488b4424184c895c24704c896424784c896c24284883c428ff252e5d0000488d6424304c8b7424204d8b76084c8b6c24204d8b6d104c8b64242041ff7424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d89750049bea8946208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e184d8966104d896e0849c7063300000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442438488b5c24684c8b4424584c8b4c24504c8b542448e81efcffff4989c6415648b838cc62080000000048c7c303000000ff15ea5b00004989c64156488b0424ff15d35b00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c897310415e4c89730848c7030700000048bad8ce620800000000488b0424ff155a5b00004989c641f6c6010f854402000041ff3648b878d9620800000000488b5c24104c8b4424084c8b4c24284c8b542420ff151e5b00004989c6415648ba98d9620800000000488b442430488b5c24284c8b44242849b9c8d9620800000000ff15e85a00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18dc6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668e925520000488d642440e90e5200004c8b7424204d8b760841ff3641ff760841ff761041ff76204c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24704c8b4424684c8b4c24604c8b542458e8bdf8ffff4989c641564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b442450488b5c24784c8b4424704c8b4c24684c8b542460e863f8ffff4989c64156488b442450ff15135800004989c64983fe037502eb7c49bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4c8bac24880000004e8d2cedf9ffffff498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730848c7030d00000048bad8ce620800000000488b442408ff1584570000488b442408ff15715700004989c54d8b75004983fe05754e4d8b75084d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9d449000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d47e0483b45107303ff55504989c748c740f8030000004c8b7424084c8970104c8b34244c89700848c7000500000048bad8ce620800000000488b5c2418ff15f75500004989c641f6c6010f857a010000488d64241048b870dc620800000000488b5c24284c8b4424084c8b4c24384c8b542430ff15b95500004989c6415648b890dc620800000000488b5c24284c8b4424084c8b4c24404c8b542438ff15885500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcb0dc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8dd6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424404d8b7668e9fc4b00004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d897508415e488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9e74600004c8b7424204d8b760841ff36498b460841ff761041ff76184c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c24484d8d77984c3b75107306ff5550ca813f4d89f749c746f80c00000049897e584d8946504d894e484d8956404d895e384c8b5c24284d895e304c8b5c24184d895e284d8966204d896e184c8b6c24204d896e104c8b6c24384d896e0849bd08cf9409000000004d892e4d8d47e04c3b45107306ff5550ca01404d89c749c740f80300000049bd700c6308000000004d89681049bd80b56208000000004d8968084d8930498d5fd0483b5d107306ff5550ca01014989df48c743f8050000004c8b7424384c8973204c8b34244c89731849be50206208000000004c89731049be580d6308000000004c89730849be700d6308000000004c89334c8b4c24204c8b542418ff15c75200004989c641564c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24784c8b4424684c8b4c24604c8b542458e8e0f2ffff4989c64156488b442408ff15585200004c8b304983fe05757a4c8b7008ff701048bad8ce6208000000004c89f0488b5c2408ff15285200004989c641f6c601754d41ff3648ba98d9620800000000488b442440488b5c24384c8b44243849b9c8d9620800000000ff15eb5100004889c2488b0424ff124989c6488d64240841564c8b7424404d8b7668e914430000e90543000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad8ce620800000000ff15125100004989c641f6c601754d41ff3648ba98d9620800000000488b442440488b5c24384c8b44243849b9c8d9620800000000ff15d55000004889c2488b0424ff124989c6488d64240841564c8b7424404d8b7668e958400000e9424000004c8b7424204d8b760841ff3641ff760841ff761041ff76184c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24784c8b4424684c8b4c24604c8b542458e8ddf0ffff4989c641564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b442448488b9c24800000004c8b4424704c8b4c24684c8b542460e880f0ffff4989c641564c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b4424604156415541544153415241514150488b442458488b9c24880000004c8b4424784c8b4c24704c8b542468e820f0ffff4989c6415648bad8ce620800000000488b44241048bb68cc620800000000ff155c4f00004989c641f6c6010f854402000041ff3648b8a80d630800000000488b5c24384c8b4424184c8b4c24484c8b542440ff15204f00004989c6415648ba98d9620800000000488b442450488b5c24484c8b44244849b9c8d9620800000000ff15ea4e00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec00d6308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668e9fa3a0000e94f3600004c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b442440488b5c24684c8b4424604c8b4c24584c8b542450e83cedffff4989c6415648ba60e2620800000000498d5fd8483b5d107305ff5550cd044989df48c743f8040000004c8b7424304c8973184c8b7424404c8973104c8b7424284c89730849be60a29509000000004c8933488b4424184c8b442428ff15234c00004989c6415648bad8ce620800000000488b442408488b1c24ff15fd4b00004989c641f6c6010f859003000041ff3648b880f0620800000000488b5c24204c8b4424104c8b4c24384c8b542430ff15c14b00004989c6415648c7c001000000ff15a74b00004989c048ba8088620800000000488b44241048c7c3214e00004c8b4c243849c7c201000000ff15744b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba98d9620800000000488b442448488b5c24404c8b44244049b9c8d9620800000000ff15804a00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424384d8b7668e91d300000e910300000488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff76184c8b7424284d8b76404c8b6c24284d8b6d68498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8b7424104d8970184c8b7424304d8970104c8b7424204d89700849be90a39509000000004d8930488b1c24ff15964700004989c641566a016a01488b4424184889e3ff15774700004158488d6424084c3b05614700007502eb334d8b304e8d3475010000004983fe01752b49bed808620800000000498d7008498d7e0848c7c100000000483bc9f3a67402eb0949c7c601000000eb5f4c8b742430498b5e684d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b7424184d8971184c8b7424404d8971104c8b7424284d89710849bee8a39509000000004d893148b860e3620800000000ff15bd4600004989c641564c8b74240841ff364c8b74241041ff76084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d57e84c3b55107306ff5550ca00404d89d749c742f8020000004d897208415e4d89324c8b742408498b5e184c8b7424084d8b6e084d8d77d84c3b75107306ff5550ca08244d89f749c746f80400000049895e184d8956104d896e084c8b6c24284d892e4156488b4424084c8b04244c8b4c2418ff15954500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415c488d6424204d89650041554156e9bc2c0000488d6424104c8b74241041ff76084c8b7424184d8b76104156e9112c0000488d642408e991040000488d6424084c8b74241841ff7608498d47e0483b45107303ff55504989c748c740f8030000004c8b7424204c8970104c8b7424084c89700849be40a49509000000004c89306a016a016a014889e3ff15db440000ff742408ff742420e9542b0000488d6424084c8b7424184d8b76084156ff35b0440000e9292a00004c8b74242041ff76084c8b742428498b46104c8b7424284d8b76184c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b7424384d8d6f984c3b6d107306ff5550cac15f4d89ef49c745f80c0000004989755849897d504d8945484d894d404d8955384c8b5424184d8955304c8b5424084d8955284d895d204d8965184c8b6424104d8965104c8b6424284d89650849bc90a59509000000004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f80300000049bc700c6308000000004d89601049bc80b56208000000004d8960084d8928498d5fd0483b5d107306ff5550ca01414989df48c743f8050000004c8b6c24284c896b204c89731849be50206208000000004c89731049be580d6308000000004c89730849beb00e6308000000004c89334c8b4c24104c8b542408ff1561430000415e488d6424184989064883c410c238004c8b742420498b46084c8b742420498b5e104c8b7424204d8b46184c8b742420498b7e20488b7424584c8b7424604c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c2430ff742410ff7424104156ff742418415541544153415241514989f24989f9ff15dd420000488d64241848b8b84b6208000000004883c410c238004c8b742420498b46084c8b74242041ff76104c8b74242841ff76184c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b5c24684c8b4424584c8b4c24504c8b542448e88ae3ffff4989c641564c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c24484d8d77984c3b75107306ff5550ca803f4d89f749c746f80c00000049897e584d8946504d894e484d8956404d895e384c8b5c24284d895e304c8b5c24184d895e284d8966204d896e184c8b6c24204d896e104c8b6c24384d896e0849bd20a69509000000004d892e4d8d47e04c3b45107306ff5550ca00404d89c749c740f80300000049bd700c6308000000004d89681049bd80b56208000000004d8968084d8930498d5fd0483b5d107306ff5550ca00014989df48c743f8050000004c8b7424384c8973204c8b7424084c89731849be50206208000000004c89731049be580d6308000000004c89730849bef00e6308000000004c8933488b4424104c8b4c24204c8b542418ff1525410000498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be280f6308000000004c89730848c7030500000048bad8ce620800000000ff15d64000004989c641f6c601754d41ff3648ba98d9620800000000488b442428488b5c24204c8b44242049b9c8d9620800000000ff15994000004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e972240000e965240000488d642408e9c60100004c8b74242041ff76084c8b74242841ff76104c8b742430498b46184c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150ff74246848bb70106308000000004c8b4424604c8b4c24584c8b542450ff15f23f0000ff15e43f00004989c64156488b0424ff15cd3f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424104d8965104d89750849c74500010000004c8b7424104983fe037502eb4a4d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004c8b6c24084983fd0375054c89f0eb6b49bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500415e4989064883c430c23800488d642408e9e60a00004c8b74242041ff76084c8b742428498b46104c8b7424284d8b76184c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b7424384d8d6f904c3b6d107306ff5550cac15f4d89ef49c745f80d0000004989756049897d584d8945504d894d484d8955404d895d384d8965304c8b6424084d8965284c8b6424104d8965204c8b6424184d8965184c8b6424284d89651049bc70106308000000004d89650849bcf0a69509000000004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f80300000049bc70f26208000000004d89601049bcd8b76208000000004d8960084d8928498d5fd0483b5d107306ff5550ca01414989df48c743f8050000004c8b6c24284c896b204c89731849bed0186208000000004c89731049be48f36208000000004c89730849be60f36208000000004c89334c8b4c24104c8b542408ff152e3d00004989c54d8b75004983fe01750c48b8b84b620800000000eb764d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d0483b45107306ff5550ca00404989c748c740f80500000049bd40996208000000004c89682049bd98f36208000000004c89681849bde0f36208000000004c8968104c89700848c7000b000000415e4989064883c428c238004c8b74242041ff76084c8b74242841ff76184c8b742430498b462048c7c303000000ff15633c0000ff15553c00004c8b304983fe05757f4c8b7008ff701048bad8ce6208000000004c89f048bb7803630800000000ff15203c00004989c641f6c601754d41ff3648ba98d9620800000000488b442428488b5c24204c8b44242049b9c8d9620800000000ff15e33b00004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e9481e0000e9391e000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be78036308000000004c89730848c7030500000048bad8ce620800000000ff15053b00004989c641f6c601754d41ff3648ba98d9620800000000488b442428488b5c24204c8b44242049b9c8d9620800000000ff15c83a00004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e9871b0000e9711b0000488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff76206a016a016a0148c7c0010000004889e3ff15673a0000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff153e3a0000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15183a0000ff7424084c8b6424184c8bb424800000004983fe03750a4c8bb424c0000000eb264c8bb424c00000004983c6027118488da424b800000048b8d006620800000000488b5d08ff2341564c8bb424a80000004d8b6e304d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24504d895e104d896e0849bd88a79509000000004d892e41564c8bb424b00000004d8b6e404d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24304d895e104d896e0849bdf0a79509000000004d892e41564c8bb424b800000041ff76204c8bb424c00000004d8b6e684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bd58a89509000000004d892e41564c8bb424c800000041ff76284c8bb424d000000041ff76584c8bb424d800000041ff76604c8bb424e00000004d8b6e084c8bb424e00000004d8b66384d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b9c24980000004d895e104c8b9c24e00000004d895e0849bbc0a89509000000004d891e41564d8d77884c3b75107306ff5550ca00304d89f749c746f80e0000004c8b5c24204d895e684c8b5c24084d895e604c8b5c24104d895e584c8b5c24484d895e504c8b1c244d895e484c8b5c24304d895e404d8966384c8b6424384d8966304c8b6424184d8966284c8b6424284d8966204c8b6424704d8966184c8ba424980000004d8966104d896e0849bd28116308000000004d892e4156ffb424d8000000e987150000488d6424084c8b7424184d8b760841ff3641ff761041ff761841ff762048c7c015000000ff15ac3700004989c6415648c7c015000000ff15923700004989c6415648c7c015000000ff15783700004989c64156488b442430488b5c24404c8b4424384c8b4c2450ff15513700004989c64156e9321400004c8b7424204d8b76084c8b6c24204d8b6d104c8b64242041ff7424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d89750049bea8946208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e184d8966104d896e0849c7063300000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442438488b5c24684c8b4424584c8b4c24504c8b542448e8f4d7ffff4989c6415648b8381163080000000048c7c303000000ff15083600004989c64156488b0424ff15f13500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c897310415e4c89730848c7030700000048bad8ce620800000000488b0424ff15783500004989c641f6c6010f854402000041ff3648b878d9620800000000488b5c24104c8b4424084c8b4c24284c8b542420ff153c3500004989c6415648ba98d9620800000000488b442430488b5c24284c8b44242849b9c8d9620800000000ff15063500004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98116308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668e9750e0000488d642440e95e0e0000488d642408e9ce0700004c8b74242041ff76084c8b74242841ff76104c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442440488b5c24684c8b4424584c8b4c24504c8b542448e892d4ffff4989c6415648bad8ce620800000000488b042448bb280f630800000000ff15773200004989c641f6c6010f854402000041ff3648b8f011630800000000488b5c24184c8b4424084c8b4c24284c8b542420ff153b3200004989c6415648ba98d9620800000000488b442430488b5c24284c8b44242849b9c8d9620800000000ff15053200004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08126308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424204d8b7668e9ca090000488d642440e957090000488d642420415e498b4610c238004c8b742420498b46084c8b74242041ff76104c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150ff74245848bb70106308000000004c8b4424584c8b4c24504c8b542448ff15902f000048c7c303000000ff157b2f00004989c64156488b0424ff15642f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c897010415e4c89700848c70007000000415e488d642428498906c23800488d6424084c8b74241841ff7608498d47e0483b45107303ff55504989c748c740f8030000004c8b7424204c8970104c8b7424084c89700849bed8aa9509000000004c89306a016a016a014889e3ff159e2e0000ff742408488b442420488b5c24304c8b4424284c8b4c2440ff15782e00004989c6ff7424204156e959070000488d64242848b8a803630800000000c238004c8b742420498b46084c8b742420498b5e104c8b7424204d8b4618488b7c24584c8b7424604c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c2430ff7424084156ff742410415541544153415241514989f94c8b542450ff15f02d0000488d64241848b8b84b6208000000004883c410c238004c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b442440488b5c24704c8b4424604c8b4c24584c8b542450e8a8cfffff4989c6415648bad8ce620800000000488b042448bb68cc620800000000ff15452d00004989c641f6c6010f854402000041ff3648b86012630800000000488b5c24184c8b4424084c8b4c24304c8b542428ff15092d00004989c6415648ba98d9620800000000488b442438488b5c24304c8b44243049b9c8d9620800000000ff15d32c00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78126308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424284d8b7668e93e020000488d642418e9cf010000488d6424084c8b7424184d8b76084d8b0641ff760841ff761041ff761841ff76204c8b7424284d8b76304c8b6c24284d8b6d68498d5fe8483b5d107306ff5550ca00614989df48c743f8020000004c896b084c89334d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b7424084d8971184c8b7424304d8971104c8b7424204d89710849be60ac9509000000004d893148b8d812630800000000ff152a2a00004989c641564c8b34244d8b76104d8b2e4983fd0775334d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe037513488b042448c7c301000000ff15db290000eb334c8b3424498b46186a016a0148bb00136308000000004989e0ff15b2290000ff3424488b442410ff159c29000058488d6424104c8b34244d8b762841f6c60175374d8b364d8b2e4d8b65004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084c8b6424104d89264d897500eb004c8b34244d8b763041f6c601752f4d8b2e4d8b65004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084989064d897500eb004c8b742418498906415e4c8b6c24184d8975004c8b7424284d8b7648415d4d8975004883c438c238004c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b442438488b5c24604c8b4424504c8b4c24484c8b542440e80ccbffff488d64242048b8a8036308000000004883c410c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d6628000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b40000004d8b364d8b2e4c3b2d022800007506498b5e10eb15488d64244848b87850620800000000488b5d08ff23488b442440ff15d22700004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424184d8b76184c8b6c2418498b556049c70603000000ff124883c408e980feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3327000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2dc92600007509498b5e10e9f1feffff488d64244848b87850620800000000488b5d08ff23f644240801756bf6042401755e4c8b742408498b064c8b74240841ff76084c8b742408498b1e4c8b74240841ff76084c8b8c2488000000ff7424504c8b4424504c8b542428ff15562600004c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eb95488d642458eb05488d64245848b8b84b620800000000c2380049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d9425000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b40000004d8b364d8b2e4c3b2d302500007506498b5e10eb15488d64244048b87850620800000000488b5d08ff23488b442438ff15002500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424104d8b76184c8b6c2410498b556049c70603000000ff124883c430e97cfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d6124000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2df72300007509498b5e10e9f1feffff488d64244048b87850620800000000488b5d08ff2348b868cc620800000000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1daa23000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b40000004d8b364d8b2e4c3b2d462300007506498b5e10eb15488d64243848b87850620800000000488b5d08ff23488b442430ff15162300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff124883c428e9d8feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7722000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d0d2200007509498b5e10e9f1feffff488d64243848b87850620800000000488b5d08ff23f604240175404c8b34244d8b364c8b2c2441ff7508498b06498b5e08ff7424204c8b4424204c8b4c24584c8b542418ff15b0210000415d4c892c24483b65187303ff5558ebba488d642408488b44241048c7c30100000049b81013630800000000ff15762100004989c64c8b6c24284d897500488b042448c7c30100000049b87013630800000000ff15472100004989c6488d6424084c8b6c24184d897500488b042448c7c30100000049b88013630800000000ff15132100004989c6488d642410415d488d6424104d89750048b8b84b6208000000004883c428c23800f6042401756c4c8b34244d8b364c8b2c2441ff75084d8b16488b942440010000488b8424480100004c8b8c24500100004c8bb424380100004c8bac24300100004c8ba42428010000ffb424f8000000415641554154488b5c24784c8b442430ff12415d4c892c24483b65187303ff5558eb8e488d6424104d8d5fd84c3b5d107303ff55504d89df49c743f8040000004c8bb424c00000004d8973184c8bb424980000004d8973104c8bb424e80000004d89730849be00ae9509000000004d89334d8d57e04c3b55107306ff5550ca00084d89d749c742f8030000004c8b7424704d8972104c8bb424e80000004d89720849be98ae9509000000004d89324c8bb424e80000004d8b2e4d8d47e04c3b45107306ff5550ca002c4d89c749c740f8030000004c8b7424484d8970104c8bb424e80000004d89700849bef8ae9509000000004d89304c8bb424e80000004d8b66084c8bb424e80000004d8b4e384d8d77884c3b75107306ff5550ca003f4d89f749c746f80e000000488b7c242049897e68488b7c240849897e60488b7c241049897e584d8946504158488d6424104d8946484c8b4424184d8946404d894e384c8b4c24204d894e304159488d6424084d894e284159488d6424104d894e204d8956184d895e104d8966084d892e41564c8bb424900000004983f6024156ffb424a8000000ff35ed1e0000f6442408010f852e0100004c8b7424084d8b364c8b6c240841ff750841ff36488b942418010000488b8424200100004c8b8c24280100004c8bb424100100004c8bac24080100004c8ba42400010000ffb424d0000000415641554154488b5c24504c8b4424484c8b542420ff124989c641564c8b7424284983fe030f8595000000f644241001740949c7c603000000eb0749c7c6010000004983f6024983f6024983f6024983fe03756c488b0424488b9c24d8000000ff15291e00004989c641f6c601754f41ff366a016a01488b94242001000048b8c086620800000000488b5c24204989e0ff124159488d642408488b8424e000000048c7c3010000004c8b4424104c8b1424ff15d01d0000488d642408eb00eb004c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e9c7feffff584881c4d8000000c23800584883c408415e4989064883c428c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d681d000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d041d00007506498b5e10eb15488d64244848b87850620800000000488b5d08ff23488b442438ff15d41c00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9ddfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3e1c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2dd41b00007509498b5e10e9fafeffff488d64244848b87850620800000000488b5d08ff23584883c408e93efeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8a1b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d261b00007506498b5e10eb15488d64244848b87850620800000000488b5d08ff23488b442438ff15f61a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9e4feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d601a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2df61900007509498b5e10e9fafeffff488d64244848b87850620800000000488b5d08ff23584883c438c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1dae19000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d4a1900007506498b5e10eb15488d64244848b87850620800000000488b5d08ff23488b442440ff151a1900004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9e6feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8418000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d1a1800007509498b5e10e9fafeffff488d64244848b87850620800000000488b5d08ff23f6442408010f85fd0000004c8b7424084d8b364c8b6c240841ff750841ff36488b542468488b442470488b5c24484c8b4c24784c8b7424604c8b6c24584c8b642450ff7424204156415541544c8b4424484c8b542420ff124989c64156f644241001740949c7c603000000eb0749c7c6010000004983f6024983f6024983fe037463488b0424488b5c2428ff15611700004989c641f6c601754941ff366a016a01488b54247048b8c086620800000000488b5c24204989e0ff124159488d642408488b44243048c7c3010000004c8b4424104c8b1424ff150e170000488d642408eb00eb004c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e9f8feffff584883c428c23800f6042401753a4c8b3424498b064c8b342441ff7608488b5c24404c8b4424384c8b4c24504c8b542410ff15a3160000415d4c892c24483b65187303ff5558ebc0488d64245048b8b84b620800000000c23800f604240175754c8b34244d8b364c8b2c2441ff75084c8b6c2418498b55004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b6424104d8965084d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eb85488d64242848b8b84b620800000000c23800f604240175514c8b34244d8b2e4c8b342441ff76084c8b742440498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba9488d6424084c8b742430498b5618498d47e8483b45107305ff5550cd044989c748c740f802000000415e4c8970084c8b7424084c8930ff1248b8b84b6208000000004883c440c23800584883c448c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d2b15000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2dc71400007506498b5e10eb15488d64245848b87850620800000000488b5d08ff23488b442450ff15971400004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c896818415d4c8968104c89700848c700030000004c8b7424304d8b76184c8b6c2430498b556049c70603000000ff12e9e6feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d0114000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d971300007509498b5e10e9fafeffff488d64245848b87850620800000000488b5d08ff2348bad8ce620800000000488b442408488b1c24ff15561300004989c641f6c6010f85bb02000041ff3648b8e813630800000000488b5c24284c8b4424104c8b4c24484c8b542440ff151a1300004989c6415648b80014630800000000488b5c24384c8b4424104c8b4c24504c8b542448ff15e91200004989c6415648ba98d9620800000000488b442458488b5c24504c8b44245049b9c8d9620800000000ff15b31200004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18146308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424384d8b7668eb0d488d642408584883c450c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d4910000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b70000004d8b364d8b2e4c3b2de50f00007506498b5e10eb15488d64245848b87850620800000000488b5d08ff23488b442450ff15b50f00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424304d8b76184c8b6c2430498b556049c70603000000ff1248b8b84b6208000000004883c450c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d130f000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2da90e00007509498b5e10e9eefeffff488d64245848b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d690e000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d050e00007506498b5e10eb15488d64246848b87850620800000000488b5d08ff23488b442460ff15d50d00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424404d8b76184c8b6c2440498b556049c70603000000ff12e948faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3f0d000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2dd50c00007509498b5e10e9fafeffff488d64246848b87850620800000000488b5d08ff23584883c418415e4989064883c430c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d840c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d200c00007506498b5e10eb15488d64246048b87850620800000000488b5d08ff23488b442458ff15f00b00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff12e9ddfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d5a0b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2df00a00007509498b5e10e9fafeffff488d64246048b87850620800000000488b5d08ff23584883c418e93efeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da60a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d420a00007506498b5e10eb15488d64246048b87850620800000000488b5d08ff23488b442458ff15120a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff12e9e4feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7c09000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d120900007509498b5e10e9fafeffff488d64246048b87850620800000000488b5d08ff2341f6c6010f85e90200004d8b36498b0641ff760848bad8ce620800000000488b5c2408ff15c10800004989c641f6c6010f85bb02000041ff3648b870dc620800000000488b5c24384c8b4424184c8b4c24484c8b542440ff15850800004989c6415648b890dc620800000000488b5c24384c8b4424184c8b4c24504c8b542448ff15540800004989c6415648ba98d9620800000000488b442458488b5c24504c8b44245049b9c8d9620800000000ff151e0800004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8dd6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668eb29eb12488d64245848b8b84b620800000000c238004c8b34244c8b6c24204d897500584883c458c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d9805000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ab0000004d8b364d8b2e4c3b2d340500007506498b5e10eb15488d64246848b87850620800000000488b5d08ff23488b442458ff15040500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424404d8b76184c8b6c2440498b556049c70603000000ff12e9d9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d6e04000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d040400007509498b5e10e9fafeffff488d64246848b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc403000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b20000004d8b364d8b2e4c3b2d600300007506498b5e10eb15488d64246048b87850620800000000488b5d08ff23488b442450ff15300300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff1249c7c601000000e921faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9302000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d290200007509498b5e10e9f3feffff488d64246048b87850620800000000488b5d08ff2348b868cc620800000000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1ddc01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b40000004d8b364d8b2e4c3b2d780100007506498b5e10eb15488d64243848b87850620800000000488b5d08ff23488b442430ff15480100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff124883c428e9d8feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3f0000007509498b5e10e9f1feffff488d64243848b87850620800000000488b5d08ff23f4000000000000|@3316,1,@16055,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@10973,@11054,@11054,@10934,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@10973,@11054,@11054,@10934,@15134,@15134,@10811,@15134,@15134,@11246,@10982,@11250,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@10982,@11250,@578,@10619,@10619,@10619,@11253,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@11261,@15134,@15134,@10811,@15134,@15134,@10905,@10900,@11068,@11065,@10973,@11054,@10934,@11262,@11287,@10988,@11066,@10822,@11290,@10973,@11054,@10934,@10973,@11054,@10934,@11066,@10822,@11291,@11013,@11013,@11013,@10906,@10906,@10906,@10973,@10934,@10973,@10934,@10728,@11068,@11073,@11077,@10825,@11293,@10973,@10934,@11073,@11294,@11073,@578,@10988,@11317,@11008,@123,@10737,@11006,@10973,@10723,@10815,@11054,@10934,@10996,@10973,@11054,@10934,@10973,@10934,@10973,@10934,@10728,@11073,@11054,@11054,@10934,@10728,@10934,@11279,@10973,@11054,@10934,@11066,@10822,@11119|177,0,@1493 212,0,@1497 247,0,@1500 817,0,@1098 1001,0,@1503 1132,0,@1525 1168,0,@1581 1209,0,@1582 1234,0,@1584 1333,0,@1596 1377,0,@1597 1523,0,@866 1609,0,@866 1653,0,@1599 1978,0,@1098 2081,0,@1525 2204,0,@1098 2309,0,@1098 2462,0,@1525 2501,0,@1601 2542,0,@1602 2608,0,@1603 2657,0,@866 2738,0,@866 2782,0,@1611 3103,0,@10979 3143,0,@1919 3157,0,@1352 3218,0,@279 3232,0,@1923 3246,0,@1924 3394,0,@1525 3430,0,@1582 3455,0,@1584 3509,0,@1098 3664,0,@1525 3692,0,@1582 3717,0,@1584 4071,0,@1525 4086,0,@1505 4118,0,@1925 4159,0,@1582 4184,0,@1584 4283,0,@1596 4327,0,@1597 4473,0,@866 4559,0,@866 4603,0,@1926 4811,0,@1633 4874,0,@11094 4908,0,@1525 4949,0,@1719 5006,0,@1014 5119,0,@866 5163,0,@1720 5241,0,@1582 5266,0,@1584 5365,0,@1596 5409,0,@1597 5555,0,@866 5636,0,@866 5722,0,@866 5766,0,@1722 5997,0,@11096 6078,0,@123 6184,0,@11097 6197,0,@1640 6651,0,@11098 6872,0,@11099 6913,0,@1919 6927,0,@1352 6984,0,@279 6998,0,@1923 7012,0,@1930 7170,0,@578 7419,0,@11100 7459,0,@1919 7473,0,@1352 7535,0,@279 7549,0,@1923 7563,0,@1931 7631,0,@1932 7652,0,@1525 7680,0,@1582 7705,0,@1584 7849,0,@1942 8099,0,@1098 8381,0,@1942 8395,0,@11102 8436,0,@1730 8450,0,@1372 8507,0,@199 8521,0,@1734 8535,0,@1735 8577,0,@578 8654,0,@1126 8668,0,@1736 8682,0,@1738 8781,0,@1525 8794,0,@1868 8822,0,@1582 8847,0,@1584 8901,0,@1098 9040,0,@1868 9061,0,@1525 9089,0,@1582 9114,0,@1584 9337,0,@105 9407,0,@11103 9474,0,@11104 9548,0,@11105 9674,0,@11106 9825,0,@1945 10075,0,@1098 10259,0,@1946 10390,0,@1525 10426,0,@1581 10467,0,@1582 10492,0,@1584 10591,0,@1596 10635,0,@1597 10781,0,@866 10867,0,@866 10911,0,@1949 11125,0,@1525 11139,0,@1932 11171,0,@1951 11212,0,@1582 11237,0,@1584 11336,0,@1596 11380,0,@1597 11526,0,@866 11612,0,@866 11656,0,@1952 11843,0,@1942 12064,0,@11110 12141,0,@1869 12255,0,@578 12383,0,@1525 12397,0,@1505 12429,0,@1954 12470,0,@1582 12495,0,@1584 12594,0,@1596 12638,0,@1597 12784,0,@866 12870,0,@866 12914,0,@1955 13155,0,@11111 13168,0,@1957 13269,0,@1958 13563,0,@1869 13668,0,@788 13709,0,@621 13956,0,@828 14001,0,@621 14136,0,@578 14149,0,@1098 14342,0,@788 14383,0,@621 14630,0,@828 14675,0,@621 14691,0,@1505 14792,0,@788 14833,0,@621 15080,0,@828 15125,0,@621 15228,0,@1959 15267,0,@1961 15311,0,@1962 15346,0,@578 15542,0,@11116 15603,0,@11117 15675,0,@11118 16081,0,@998 16298,0,@788 16339,0,@621 16577,0,@828 16622,0,@621 16736,0,@788 16777,0,@621 17015,0,@828 17060,0,@621 17172,0,@788 17213,0,@621 17451,0,@828 17496,0,@621 17678,0,@998 17853,0,@578 17994,0,@578 18150,0,@578 18263,0,@788 18304,0,@621 18542,0,@828 18587,0,@621 18603,0,@1525 18644,0,@1964 18685,0,@1965 18726,0,@1582 18751,0,@1584 18850,0,@1596 18894,0,@1597 19040,0,@866 19121,0,@866 19207,0,@866 19251,0,@1966 19441,0,@788 19482,0,@621 19622,0,@578 19732,0,@828 19777,0,@621 19881,0,@788 19922,0,@621 20160,0,@828 20205,0,@621 20326,0,@788 20367,0,@621 20605,0,@828 20650,0,@621 20764,0,@788 20805,0,@621 21043,0,@828 21088,0,@621 21124,0,@1525 21161,0,@1601 21202,0,@1602 21243,0,@1582 21268,0,@1584 21367,0,@1596 21411,0,@1597 21557,0,@866 21638,0,@866 21724,0,@866 21768,0,@1611 21864,0,@578 21986,0,@788 22027,0,@621 22265,0,@828 22310,0,@621 22414,0,@788 22455,0,@621 22700,0,@828 22745,0,@621 22761,0,@1505 22862,0,@788 22903,0,@621 23150,0,@828 23195,0,@621 10933:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@15742| 10934:D4,152|483b65187305ff5558cd0d4889d649c7c5010000004d8d77f04c3b75107306ff5550ca49204d89f749c746f80100000041c646ff404d892e4156488b5608488b4e104c8b76184c8b6e204c8b66284c8b5e304c8b56384c8b4e404c8b4648488b7e50488b7658415641554154415341524151415057564989ca4989d14c8b442448ff15290000004c8b3424498b06488d642408c3f4000000|@1539,1,@15755,@10935| 10935:D63,15784|483b65187306ff5558ca09075053415041514152488b442420ff15793f00004989c64156488b442420ff15613f00004989c641564c8b7424084d8b364983fe0b75524c8b7424084d8b76184d8b76184d8b66084d89e54d8b24244983fc0375204d89ee4d8b76084c3b742410750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642438eb5e4c8b34244d8b364983fe0b755b4c8b34244d8b76184d8b76184d8b66084d89e54d8b24244983fc0375204d89ee4d8b76084c3b742410750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037402eb0f488d64243848c7c001000000c248004c8b7424084d8b364983fe01750f488d64243848c7c001000000c248004c8b34244d8b364983fe01750f488d64243848c7c001000000c248004c8b7424084d8b364983fe0d0f855a0a00004c8b34244d8b364983fe0d0f85490a00004c8b74240841ff76084c8b7424104d8b76104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b24244d89650041554c8b6c241041ff75084c8b6c24184d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d89650041554c8b6c24184d8b6d004c8b6424184c3b642408750f488d64245848c7c001000000c248004983e6054983fe010f8401010000ff3424ff742430ff742460ff742460ff742460ff356f3d00004c8b6424684c8b5c24604c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889442478488b44242848899c2480000000488b5c242048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424184c898c24b00000004c8b4c24104c899424b80000004c8b5424084c899c24c00000004c89a424c80000004c8b34244c89b424d00000004c896c24704883c470ff25843c0000488d6424384c8b7424084d8b364d8b65004d89e34983fc070f856e0200004d8b264983fc070f85610200004d8b65084d8b5d10498d47e8483b45107306ff5550ca00784989c748c740f8020000004c8958084c89204d8b66084d8b5e10498d5fe8483b5d107306ff5550ca01784989df48c743f8020000004c895b084c892349bca8946208000000004c8b5c24084d892349bca8946208000000004c8b5c24184d89234c8ba424a00000004c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478488b742470488b542468488b4c2460ff742440ff742440ff74244041544153415241514150575652514d89f14d89e849ba78cf620800000000ff156d3b00004889c34c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460ff35203b0000ff742440ff74244041564155415441534152415141505756488b4424604c8b8424b00000004c8b8c24a80000004c8b9424a0000000ff15dd3a0000488d642410ff3424ff742418ff742450ff742450ff742450ff35b73a00004c8b6424584c8b5c24504c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004c8b6c24784889442468488b44242848895c2470488b5c242048894c247848899424800000004889b424880000004889bc24900000004c898424980000004c8b4424184c898c24a00000004c8b4c24104c899424a80000004c8b5424084c899c24b00000004c89a424b80000004c8b34244c89b424c00000004c896c24604883c460ff25d5390000488d6424484d89dc4983fb090f85610300004d8b1e4983fb090f8554030000498b5d08498b4608ff15a03900004989c44983fc010f8593000000488d6424404d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be88cf6208000000004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c2480049bea8946208000000004c8b6c24084d89750049bea8946208000000004c8b6c24184d89750041f6c40175684d8b7424084983fe01750949c7c603000000eb0749c7c6010000004983fe0375474d8b2c244d8b7500498d5fd0483b5d107306ff5550ca00604989df48c743f80500000048c74320010000004c896b184c89731048c743080100000048c7030b000000e99100000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d34f5f9ffffff498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8973104c896b0848c7030d0000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849c706090000004d8975004c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460ff3591370000ff742440ff74244041564155415441534152415141505756488b4424604c8b8424b00000004c8b8c24a80000004c8b9424a0000000ff154e370000488d642408ff742408ff742420ff742458ff742458ff742458ff35273700004c8b6424604c8b5c24584c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004c8bac24800000004889442470488b44242848895c2478488b5c242048898c248000000048899424880000004889b424900000004889bc24980000004c898424a00000004c8b4424184c898c24a80000004c8b4c24104c899424b00000004c8b5424084c899c24b80000004c89a424c00000004c8b34244c89b424c80000004c896c24684883c468ff253f360000488d6424304d89e54983fd030f85fd000000488d642410ff3424ff742418ff742450ff742450ff742450ff35073600004c8b6424584c8b5c24504c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004c8b6c24784889442468488b44242848895c2470488b5c242048894c247848899424800000004889b424880000004889bc24900000004c898424980000004c8b4424184c898c24a00000004c8b4c24104c899424a80000004c8b5424084c899c24b00000004c89a424b80000004c8b34244c89b424c00000004c896c24604883c460ff2525350000488d6424384d8b364983fe030f8501010000ff3424ff742430ff742460ff742460ff742460ff35f23400004c8b6424684c8b5c24604c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889442478488b44242848899c2480000000488b5c242048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424184c898c24b00000004c8b4c24104c899424b80000004c8b5424084c899c24c00000004c89a424c80000004c8b34244c89b424d00000004c896c24704883c470ff2507340000488d642438488d6424404d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb8cf6208000000004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b7424084d8b364983fe0d0f85870700004c8b7424084d8b6e084c8b7424084d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4983e4054983fc017405e9130100004d8b6d004d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd030f84eb0000004156ff742408ff742440ff742440ff742440ff35d23200004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25fc310000488d6424384c8b2c244d8b6d004983fd0b0f85340500004c8b2c24498b5d084c8b2c244d8b6d184d8b65184d89e34d8b4c24084d89ca4d8b094983f903752a4d89d44d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc037505e9540100004d89dc4d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8426010000488d6424084d89e64d8b76084d8b2e4983fd050f85f8000000498b460841ff7610ff15363100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be70809409000000004c89336a016a01488b4424104989e0ff15ed30000058488d642410ff15d93000004989c6ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e959f1ffff488d642430488d64243048b818d0620800000000488b5d08ff234c8b2c244d8b6d004983fd0b0f85910200004c8b2c24498b5d084c8b2c244d8b6d184d8b65184d89e34d8b4c24084d89ca4d8b094983f903752a4d89d44d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc037505e9540100004d89dc4d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8426010000488d6424084d89e64d8b76084d8b2e4983fd050f85f8000000498b460841ff7610ff15662f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be30819409000000004c89336a016a01488b4424104989e0ff151d2f000058488d642410ff15092f00004989c6ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9a1efffff488d642430488d64243048b818d0620800000000488b5d08ff234156ff742408ff742440ff742440ff742440ff35372e00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25612d0000488d6424384156ff742408ff742440ff742440ff742440ff353c2d00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25662c0000488d6424384156ff742408ff742440ff742440ff742440ff35412c00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff256b2b0000488d6424384c8b34244d8b364983fe0d0f855c0700004c8b34244d8b76084c8b2c244d8b6d104983e5054983fd017405e9ef0100004d8b364d8b364983fe09750949c7c603000000eb0749c7c6010000004983fe030f84c90100004c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35af2a00004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff25df290000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e9aceaffff488d6424384c8b7424084d8b364983fe0b0f85730300004c8b742408498b5e084c8b7424084d8b76184d8b6e184d89ec4d8b55084d89d34d8b124983fa0375294d89dd4d8b6d084c3b6c2410750949c7c503000000eb0749c7c5010000004983fd037505e9580100004d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983f4024983fc030f84280100004d89ee4d8b76084d8b2e4983fd050f85ff000000498b460841ff7610ff15792800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef0819409000000004c89336a016a01488b4424104989e0ff153028000058488d642410ff151c2800004989c64156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e905e9ffff488d642418488d64243848b818d0620800000000488b5d08ff234c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35022700004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff2532260000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e927e7ffff488d6424384c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35292500004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff2559240000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e95ee5ffff488d6424384c8b7424084d8b364983fe0b0f85d00500004c8b34244d8b364983fe0b0f85bf0500004c8b7424084d8b76084c8b6c24084d8b65184c8b2c244d8b6d084c8b1c244d8b5b184d8b5424184d89d0498b7a084989f9488b3f4883ff03752e4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750a488d642438e94d0500004d8b53184d89d1498b72084889f7488b364883fe0375204989fa4d8b52084c3b542410750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84000500004d89c24d8b40084d8b004983f8050f85210100004d8b6a084d8b65004983fc050f85fa000000498b450841ff75104c89f3ff159f2200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb0829409000000004c89336a016a01488b4424104989e0ff1556220000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e96be3ffff488d642418488d64243848b818d0620800000000488b5d08ff234d89c84d8b49084d8b094983f9050f851e010000488d6424084d8b70084d8b264983fc050f85f3000000498b460841ff76104c89ebff15562100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be70839409000000004c89336a016a01488b4424104989e0ff150d210000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e939e2ffff488d642430488d64243048b818d0620800000000488b5d08ff234d89c14d8b40084d8b004983f8050f851e010000488d6424084d8b71084d8b264983fc050f85f3000000498b460841ff76104c89ebff15142000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be30849409000000004c89336a016a01488b4424104989e0ff15cb1f0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e907e1ffff488d642430488d64243048b818d0620800000000488b5d08ff23498b7a084989f8488b3f4883ff037556498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375304d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037572488d642410e9f80000004c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f848b0000004d8d6fd04c3b6d107306ff5550ca00184d89ef49c745f8050000004d895d204d896518415e4d897510415e4d89750849c74500030000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800488d64241041554156e93b1b0000488d64243848c7c001000000c248004c8b7424084d8b364983fe090f854d0300004c8b34244d8b364983fe0b0f853c0300004c8b7424084d8b76084c8b2c244d8b65084c8b2c244d8b6d184d8b55184d89d34d8b42084d89c14d8b004983f803752d4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750949c7c303000000eb214d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8422010000488d6424084d8b75184d8b76084d8b2e4983fd050f85f3000000498b460841ff76104c89e3ff15c11c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef0849409000000004c89336a016a01488b4424104989e0ff15781c0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9c4ddffff488d642430488d64243048b818d0620800000000488b5d08ff234d8b5d184d89da4d8b43084d89c14d8b004983f80375334d89cb4d8b5b084c3b5c2410750949c7c303000000eb0749c7c3010000004983fb03750f488d64243848c7c001000000c248004d89d34d8b52084d8b124983fa050f8521010000488d6424084d89de4d8b76084d8b2e4983fd050f85f3000000498b460841ff76104c89e3ff15321b00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb0859409000000004c89336a016a01488b4424104989e0ff15e91a0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e945dcffff488d642430488d64243048b818d0620800000000488b5d08ff2341f6c40174084d89f4e9b9160000e9801100004c8b7424084d8b364983fe0b0f85d10100004c8b34244d8b364983fe090f85c00100004c8b7424084d8b66084c8b7424084d8b76184c8b2c244d8b6d084d8b56184d89d34d8b42084d89c14d8b004983f803752d4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750949c7c303000000eb214d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f84240100004d8b76184d8b76084d8b2e4983fd050f85fa000000498b460841ff76104c89e3ff15461900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be70869409000000004c89336a016a01488b4424104989e0ff15fd180000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e962daffff488d642418488d64243848b818d0620800000000488b5d08ff2341f6c40174084d89ece9890e0000e9450900004c8b7424084d8b364983fe0975224c8b34244d8b364983fe097515488d64243848b8a8d0620800000000488b5d08ff234c8b7424084d8b364983fe0b0f85330200004c8b742408498b5e084c8b7424084d8b76184d8b66184d89e54d8b5424084d89d34d8b124983fa03752e4d89dc4d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb224d8b6d084d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983f5024983fd030f84210100004d8b76184d8b76084d8b2e4983fd050f85f7000000498b460841ff7610ff153c1700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be30879409000000004c89336a016a01488b4424104989e0ff15f3160000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e968d8ffff488d642418488d64243848b818d0620800000000488b5d08ff234d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb8cf6208000000004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b34244d8b364983fe0b0f85b50300004c8b3424498b5e084c8b34244d8b76184d8b66184d89e54d8b5424084d89d34d8b124983fa03752e4d89dc4d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb224d8b6d084d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983f5024983fd030f841f010000488d6424084d8b76184d8b76084d8b2e4983fd050f85f0000000498b460841ff7610ff15e51400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef0879409000000004c89336a016a01488b4424104989e0ff159c140000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e928d6ffff488d642430488d64243048b818d0620800000000488b5d08ff234d8b6e184d89ec4d8b55084d89d34d8b124983fa0375334d89dd4d8b6d084c3b6c2410750949c7c503000000eb0749c7c5010000004983fd03750f488d64243848c7c001000000c248004d89e54d8b6424084d8b24244983fc050f851e010000488d6424084d89ee4d8b76084d8b2e4983fd050f85f0000000498b460841ff7610ff15571300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb0889409000000004c89336a016a01488b4424104989e0ff150e130000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9aad4ffff488d642430488d64243048b818d0620800000000488b5d08ff234d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb8cf6208000000004d8975184c8b7424084d897510415e488d6424084d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b7424084d8b364983fe050f853e0100004c8b34244d8b364983fe050f852d0100004c8b742408498b46084c8b74240841ff76104c8b742408498b5e084c8b74240841ff76104c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450415641554154415341524151415057564c8b4424784c8b4c24704c8b542468e859d3ffffff742408ff742408488b4c2440488b5c2438488b4424304c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b5424604889542460488974246848897c24704c894424784989c84c898c24800000004989d9488b1c244c899424880000004989c2488b4424084c899c24900000004c89a424980000004c89ac24a00000004883c458e9afd2ffff488d6424484c8b7424084d8b364983fe03751c4c8b34244d8b364983fe03750f488d64243848c7c001000000c248004c8b7424084d8b364983fe070f85f00000004c8b34244d8b364983fe070f85df0000004c8b7424084d8b76084c8b6c24084d8b6d10498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b76084c8b2c244d8b6d10498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440ff742420ff742420ff742420415641554154415341524151415057564c8b4424684c8b4c246049ba78cf620800000000ff15510f0000488d64242848c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb8cf6208000000004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8ba424800000004d8b24244d89eb4983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc0375304c8bac24800000004d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e97a0200004d89ec4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375624d89ca4d8b4a084c8b5424784d3bd1750949c7c203000000eb0749c7c2010000004983fa03753b49c7c4030000004983fc0375294c8b6424704d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9ee0100004d89eceb144d89dc483b65187306ff5558ca0070e95effffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375624d89ca4d8b4a084c8b5424684d3bd1750949c7c203000000eb0749c7c2010000004983fa03753b49c7c4030000004983fc0375294c8b6424604d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e94c0100004d89eceb144d89dc483b65187306ff5558ca0070e95effffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803755f4d89ca4d8b4a084c8b5424584d3bd1750949c7c203000000eb0749c7c2010000004983fa03753849c7c4030000004983fc0375294c8b6424504d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9aa000000eb144d89dc483b65187306ff5558ca0070e961ffffff4983fd01750949c7c501000000eb524d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85d20100004d89d34d8b53084c8b5c24484d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a701000049c7c5030000004983fd0375264c8b6424404d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c50100000041f6c5010f85d5000000488d6424084d8b5d004d8b2b4d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420010000004d895c24184d896c241049c74424080100000049c704240b0000004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d8975184d896510415e4d89750849c74500030000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be38d16208000000004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d89e5483b65187306ff5558ca0060e9ebfdffff4983fc01750c49c7c401000000e9ee0000004d8b0c244d8b5c24084d8b56184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c4030000004983fc030f85b7f9ffff488d64243848c7c001000000c248004c8ba424800000004d8b24244d89f34983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc03752e4c8bb424800000004d8b264d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9750200004d89f44983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375614d89ca4d8b4a084c8b5424784d3bd1750949c7c203000000eb0749c7c2010000004983fa03753a49c7c4030000004983fc0375284c8b6424704d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9ea0100004d89f4eb144d89dc483b65187306ff5558ca0070e95fffffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375614d89ca4d8b4a084c8b5424684d3bd1750949c7c203000000eb0749c7c2010000004983fa03753a49c7c4030000004983fc0375284c8b6424604d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9490100004d89f4eb144d89dc483b65187306ff5558ca0070e95fffffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803755e4d89ca4d8b4a084c8b5424584d3bd1750949c7c203000000eb0749c7c2010000004983fa03753749c7c4030000004983fc0375284c8b6424504d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9a8000000eb144d89dc483b65187306ff5558ca0070e962ffffff4983fe01750949c7c601000000eb514d8b1e4d8b66084d8b5b184d8b4b084d89ca4d8b094983f9030f85cd0100004d89d34d8b53084c8b5c24484d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a201000049c7c6030000004983fe0375254c8b6424404d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb0749c7c60100000041f6c6010f85d10000004d8b1e4d8b334d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420010000004d895c24184d8974241049c74424080100000049c704240b0000004d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d896e204d895e18415d4d896e104d89660849c706030000004d89f54c8b7424184d8b3641f6c601750f488d64243048c7c001000000c24800488d6424184d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be38d16208000000004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d89e6483b65187306ff5558ca0060e9f1fdffff4983fc01750c49c7c401000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c4030000004983fc030f85c2f9ffff488d64243848c7c001000000c24800f60424010f85330100004c8b3424498b064c8b342441ff7608f6442410010f85860000004c8b742410498b1e4c8b74241041ff76084c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450415641554154415341524151415057564c8b4424784c8b4c24704c8b542468e8bcc3ffff415d415c4c8924244c896c2408483b65187303ff5558e956ffffff488d6424284d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be68d16208000000004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800488d642408415e4983fe01750f488d64242848c7c001000000c24800488d6424104d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be68d16208000000004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800f4000000000000|@1555,1,@15762,@10955,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10900,@10958,@10948,@1527,@10948,@1527,@10728,@10900,@10958,@10948,@1527,@10948,@1527,@10948,@1527,@10948,@1527,@10728,@10900,@10958,@10728,@10900,@10958,@10948,@1527,@10948,@1527,@10948,@1527,@10948,@1527,@10948,@1527,@10959,@10948,@1527,@10948,@1527,@10955,@10948,@1527,@10728,@10728|893,0,@1098 911,0,@1098 1021,0,@1527 1500,0,@1528 1618,0,@1098 1637,0,@1098 1766,0,@1098 2861,0,@1529 3558,0,@10936 3763,0,@1531 3998,0,@10937 4203,0,@1531 5683,0,@10938 5895,0,@1531 7125,0,@10939 7329,0,@1531 7438,0,@10940 7635,0,@1531 7744,0,@10941 7941,0,@1531 8579,0,@10942 8776,0,@1531 8962,0,@10943 9159,0,@1531 9438,0,@10944 9642,0,@1531 9709,0,@1534 9944,0,@10945 10148,0,@1531 10188,0,@1529 10527,0,@10946 10724,0,@1531 10909,0,@10947 11106,0,@1531 11146,0,@1529 11873,0,@1527 11932,0,@1529 13255,0,@1537 14868,0,@1537 15486,0,@1538 15661,0,@1538 10936:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15743| 10937:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15744| 10938:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15745| 10939:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15746| 10940:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15747| 10941:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15748| 10942:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15749| 10943:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15750| 10944:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15751| 10945:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15752| 10946:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15753| 10947:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15754| 10948:D8,1328|483b65187306ff5558ca090750534150415141524c8b7424204d8b3641ff36ff742420488b0424ff153b0500004989c64d8b2e4983fd0b0f85b4000000498b5e084d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15e50400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef08e9409000000004c89336a016a01488b4424104989e0ff159c040000415d488d6424104c892c24483b65187303ff5558e94effffff488d64243848b818d0620800000000488b5d08ff23488d642408eb05488d64240841564c8b34244d8b2e4983fd0d75274d89f64d8b76084c8b6c24304d8b6d004d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004156488b4424104c8b284d89ee4983fd09756f488b9424a0000000488b8c2498000000488b9c24900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448415641554154415341524151415057564989da4989c9488b5c24784c8b442460ff12eb784889c04983fe07756f488b9424a0000000488b8c2498000000488b9c24900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448415641554154415341524151415057564989da4989c9488b5c24784c8b442460ff12eb004c8b34244983fe03488d642408750f488d64243848c7c001000000c260004c8b4424304d8b70084983e6054983fe010f849e000000488d6424104d8d67d84c3b65107303ff55504d89e749c74424f80400000049bec8d16208000000004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c601750f488d64242848c7c001000000c260004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500488d64240848c7c0010000004883c420c26000ff74241048c7c001000000488b5c24084c8b4c24284c8b542420ff15300200004989c6488d6424084983fe030f859e000000488d6424084d8d67d84c3b65107303ff55504d89e749c74424f80400000049be08d26208000000004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c601750f488d64242848c7c001000000c260004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500488d64240848c7c0010000004883c420c26000488d6424084c8b7424204d8b76084983e6094983fe010f84bd000000488b942480000000488b44241848bb48d262080000000049b898d2620800000000ff124989c64983fe03750949c7c603000000eb0749c7c6010000004983fe03757b4d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef8d36208000000004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c6017502eb254d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500eb004c8b7424204d8b76084983e6034983fe01742848b820d4620800000000ff157c0000004889c2488b442418ff124889c248c7c001000000ff12eb004c8b34244d8b36488d64240841f6c601750f488d64242048c7c001000000c26000488d6424104c8b7424084d8b2e4c8b34244d897500488d64241048c7c001000000c26000f4000000000000|@1569,1,@15769,@10962,@10960,@10900,@10958,@10728|159,0,@10949 220,0,@1531 642,0,@1540 850,0,@1541 1019,0,@1542 1029,0,@1544 1097,0,@1551 1214,0,@1552 10949:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15756| 10950:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@1543,1,@15757| 10951:D5,552|483b65187305ff5558cd014989c34d8b6b084d89ee4983e5094983fd01740848c7c005000000c34c89f34983e6054983fe01740848c7c003000000c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1748b8f8546208000000004153ff15cd010000415b4989c641f6c6010f84880100004d8b6b084983e5034983fd01750949c7c503000000eb0749c7c5010000004983f50249baa8946208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89142441544e8d34f5f9ffffff4983ce094d0bf54d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d897424104c8b34244d89f54d8974240849c704240d0000004d8b334d89f24d8b364d89d34d89234d8b264983fc090f85c0000000498b4608ff15f80000004989c541f6c5010f859c0000004d8b65004d8b75084983fe0175534d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004c8b2c244d897500488d64240848c7c005000000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004c8b2c244d897500488d64240848c7c005000000c3488d64240848c7c003000000c34d89ed4d897500488d64240848c7c005000000c348b80855620800000000488b5d08ff23f40000000000|@1549,1,@15758,@10952,@10599|107,0,@651 174,0,@1098 532,0,@652 10952:D3,208|483b65187305ff5558cd01a8010f85ad000000ff30488b40084c8b34244d8b76184d8b76084d8b264d89e54983fc057515488d64240848b8a8d2620800000000488b5d08ff234983fd0175294d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b76084983fe037502eb1e488d642408eb124d8b76084d8b364983fe03740a488d642408e974ffffffe86fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@1550,1,@15759|56,0,@1545 10953:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb0939409000000004c8930c3f400000000|@1554,1,@15761|47,0,@10954 10954:D4,432|483b65187305ff5558cd054c8b72084d89f54d8b364983fe0d0f85850100004d89ee4d8b5d084d8b6e104d89ee4983e6034983fe01740848c7c001000000c34d8b334d8b264983fc09750848c7c001000000c34c89eb48c1eb034883cb01f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989daeb1f48b8f854620800000000415341554156ff152f010000415e415d415b4989c241f6c2010f84e80000004d89ec4983e4094983fc01750949c7c103000000eb0749c7c1010000004983f1024983e5054983fd01750949c7c403000000eb0749c7c4010000004983f40249b8a8946208000000004d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f80100000041c645ff404d8945004e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14983fc03750949c7c405000000eb0749c7c4010000004d0bd44983ca034d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d896c240849c704240d0000004d89234d89750048c7c001000000c348b80855620800000000488b5d08ff2348c7c001000000c3f4000000|@1553,1,@15760,@10599|133,0,@651 237,0,@1098 406,0,@652 10955:D5,1472|483b65187306ff5558ca0907415041514152ff30ff70084c8b33ff73084c8b68086a016a014d8b65004983fc01751f4d8b65084d8b6d104c8924244c896c2408ff7424084c8b6b086a016a01eb194d8b65084d8b24244d89e5483b65187306ff5558ca0860ebbe4d8b65004983fc0175424d8b65084d8b6d104c8924244c896c2408ff7424084c8b6c24184983fd0375204c8b2c244983fd03751149c7c5010000004c8b642440e9e4030000e9da030000eb194d8b65084d8b24244d89e5483b65187306ff5558ca0060eb9b488b9c24c0000000488b8424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c246841554154415341524151415057565251ff742450ffb424b0000000ffb424b0000000ffb424800000004989c24989d94c89f3488b8424b00000004c8b8424b8000000ff15750400004989c641564c8b7424204983fe03752a488d6424084c8b34244983fe03488d642408750a488d642450e9ee020000488d642428415ee9610200004c8b7424084983fe03750f488d6424384c8b742408e9be0100004c8b7424404d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64246848b808d5620800000000488b5d08ff2341ff364c8b7424404d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64247048b808d5620800000000488b5d08ff2341ff364c8b7424084c3b34247507488d642410eb7e488b442410ff150a0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706010000004c8b6424084d89e54d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c706030000004c8b2c244d897500488d642410498d47e0483b45107303ff55504989c748c740f8030000004c8b7424404c8970104c8b34244c897008488d64240848c700070000004883c460c260004d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64243048b808d5620800000000488b5d08ff234d8b2e4c8b34244d897500488d642420584883c408c260004d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64242848b808d5620800000000488b5d08ff234d8b2e4c8b34244d897500488d64242058c26000e93cfcffff41f6c40175374d8b5424084d89eb4983c3027115488d64246048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc349c7c4010000004d89f341f6c30175364d8b4b084d89e24983c2027115488d64246048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec750949c7c503000000eb0749c7c5010000004983f5024983fd030f8555ffffff4d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049bea0d56208000000004d8975184c8b7424504d8975104c8b7424584d89750849c74500010000004c8bb424c00000004d8b3641f6c6017502eb2a4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8bac24c00000004d89750049c7c601000000e9affbfffff4|@1563,1,@15763,@10957,@10956|551,0,@1556 672,0,@1556 992,0,@1556 1129,0,@1556 1195,0,@105 1265,0,@105 1360,0,@1560 10956:D3,3680|483b65187306ff5558ca09075053415041514152f6442420010f85700b00004c8b74242041ff364c8b74242841ff76084c8b7424084d8b364c8b6c2408498b4508f6442428010f85e20800004c8b6c242841ff75004c8b6c243041ff75084c8b6c24084d8b65004c8b6c2408498b5d084d8b1e4d89dd4e8d145d010000004d8b0c244d89cb4e8d0c4d010000004d3bd10f85b40000004d3bf47502eb304d89ea4d89d54e8d1455010000004c89d94e8d1c5d010000004d3bd3751b498d7608498d7c2408483bc9f3a67402eb0949c7c501000000eb724e8d1c6d010000004d8b2c244e8d146d010000004d3bda73054c89d9eb034c89d1498d7608498d7c240848d1e9483bc9f3a67214770949c7c501000000eb1049c7c503000000eb0749c7c5ffffffff4983fd0175074d3bda7308eb0f4983fd017c0949c7c503000000eb0749c7c5ffffffffeb254e8d2c6d010000004e8d1c5d010000004d3beb7d0949c7c5ffffffffeb0749c7c5030000004983fd010f8545010000488b542430488b8c24b80000004c8bb424b00000004c8bac24a80000004c8ba424a00000004c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478488b742470415641554154415341524151415057564989ca4c8b4424704c8b4c2468ff12ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350488b842488000000488b5c24784c8b8424a80000004c8b8c24a00000004c8b942498000000e878fdffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304883c440c270004983fd010f8d32030000488d6424104c8b6c24584983fd030f854b020000488d6424184d8b2e4e8d246d010000004983fc01750f49bdd0d5620800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15270b00000f87db0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd0d562080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe8d5620800000000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15500a00000f87f70000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde8d562080000000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642418eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c41058c27000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff34244156415541544153415241514150575652515350488b442478488b9c24a00000004c8b8424980000004c8b8c24900000004c8b942488000000e83efaffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424204c89304883c408c270004c8b7424504983fe030f8551020000488d6424284d8b34244e8d3475010000004983fe01750f49bdd0d5620800000000e9af0000004d89f34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15e90700000f87e00100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd0d562080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89f1498d742408498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe8d5620800000000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15110700000f87fb0000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde8d562080000000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642410eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c408584883c408c27000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350488b8424b8000000488b5c24784c8b8424a80000004c8b8c24a00000004c8b942498000000e805f7ffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304883c438c27000488d6424184c8b6c24404983fd030f85440200004d8b2e4e8d246d010000004983fc01750f49bdd0d5620800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15a60400000f87d90100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd0d562080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe8d5620800000000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15cf0300000f87f50000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde8d562080000000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642418eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c410eb2f488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64241858c27000488d642408f6442410010f856b0200004c8b7424104d8b364d8b364c8b6c24284983fd030f85440200004d8b2e4e8d246d010000004983fc01750f49bdd0d5620800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b151f0200000f87d90100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd0d562080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe8d5620800000000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15480100000f87f50000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde8d562080000000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642410eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c408eb2f488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d642410584883c408c27000488d64242048c7c001000000c27000f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@1564,1,@15765|756,0,@1561 894,0,@1561 963,0,@1562 1120,0,@1562 1284,0,@117 1305,0,@117 1570,0,@1561 1708,0,@1561 1778,0,@1562 1935,0,@1562 2103,0,@117 2124,0,@117 2389,0,@1561 2527,0,@1561 2596,0,@1562 2753,0,@1562 2915,0,@117 2936,0,@117 3020,0,@1561 3158,0,@1561 3227,0,@1562 3384,0,@1562 3546,0,@117 3567,0,@117 10957:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15764| 10958:D3,136|483b65187305ff5558cd09a801756bf6c30175664c8b28488b40084c8b23488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@1565,1,@15766| 10959:D3,368|483b65187305ff5558cd09a801750bff30488b40084989deeb0848c7c001000000c34983fe01750c49c7c601000000e9f30000004d8b1e4d8b6e084c8b24244d8b6424184d8b5b184d8b4c24084d89ca4d8b094983f903754e4d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f80375284d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037567eb794d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89ee483b65187306ff5558ca0940e902ffffff49c7c6030000004983fe037534e8cefeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e995fefffff400000000|@1566,1,@15767| 10960:D11,1288|483b65187306ff5558ca09074150415141524883f8010f85d90400004889d8ff15330500004989c64d8b264d89e54983fc07752f498b46084c8b4424104c8b4c2408415a488d6424104c8b6c240848bbf8d66208000000004c896c2408ff25ed0400004d89ec4983fd05756a498b5e0841ff76104c8b742428415648c7c0010000004c8b4424204c8b4c24184c8b542410e86affffff4989c64983fe03750f488d64242048c7c003000000c208005b4c8b4424104c8b4c2408415a488d6424104c8b6c240848c7c0010000004c896c2408e92affffff4d89e54983fc0b0f85f9000000498b46084d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f85ac0000004d89ee4d8b6e084d8b75004983fe050f85820000004d8b750841ff75104889c34c89f0ff151a0400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be48b29409000000004c89336a016a01488b4424104989e0ff15d10300005b488d6424104c8b4424104c8b4c2408415a488d6424104c8b6c240848c7c0010000004c896c2408e964feffff488d64241848b818d0620800000000488b5d08ff234c8b4424104c8b4c2408415a488d6424104c8b6c240848bbf8d66208000000004c896c2408ff255c0300004983fd0d0f85000300004d8b6e084d8b66104c8b742410498b5e0848c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f85462080000000041554154ff15f8020000415c415d4989c641f6c6010f84880200004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989daeb1f48b8f854620800000000415541544156ff1599020000415e415c415d4989c241f6c2010f841a0200004d3bf27d054d89f2eb004d8b75004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989dbeb2348b8f8546208000000004155415441524156ff1528020000415e415a415c415d4989c341f6c3010f849a0100004d3bda0f84530100004d89e34983e3054983fb01747f4d8d5fd84c3b5d107306ff5550ca00604d89df49c743f80400000049bc08d76208000000004d8963184c8b24244d8963104c8b6424084d89630849c703010000004c8b6424204d8b242441f6c4017502eb284d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c244c8b5c24204d8923e9c50000004d89e34983e3094983fb01750949c7c103000000eb0749c7c1010000004983f1024983e4034983fc01750949c7c403000000eb0749c7c4010000004983f40249b8a8946208000000004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d89034e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14d0bd44d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849c704240d0000004d89334d896500eb004c8b4424104d8b204d3bec750948c7c003000000eb0748c7c0010000004c89f34d89c04c8b4c2408415a488d6424104c8b6c24084c896c2408e959fbffff488d64241848b80855620800000000488b5d08ff23488d64241848b80855620800000000488b5d08ff23488d64241848b80855620800000000488b5d08ff23488d64241848c7c001000000c20800488d64241848c7c003000000c20800f4000000|@1576,1,@15776,@10599,@10599,@10599,@10969,@10900,@10958,@10968,@10728|80,0,@1567 338,0,@10961 419,0,@1531 457,0,@1567 550,0,@651 635,0,@651 738,0,@651 832,0,@1568 995,0,@1098 1198,0,@652 1219,0,@652 1240,0,@652 10961:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15768| 10962:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be70b39409000000004c8930c3f400000000|@1575,1,@15775|47,0,@10963 10963:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849bee0b39409000000004c8930c3f400000000|@1574,1,@15774|55,0,@10964 10964:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1571,1,@15770,@10965| 10965:D6,304|483b65187306ff5558ca09015041504889d8ff15400100004989c64156488b542408488b0424ff124889c2488b442410ff124c8b2c244d8b75004c8d25080000004f8d64b4fc41ffe4e933000000909090e931000000909090e92f000000909090e953000000909090e973000000909090e971000000909090e991000000909090488d642418c3488d642418c34d89ed4d89ee41ff75084d89f6498b5e104c8b442410e858ffffff5b488d64240841584883c408e947ffffff4d89ed4d8b6d08488d64240841584989c148bb88d76208000000004c89e84883c408ff256f000000488d642418c34d89ed4d8b6d08488d64240841584989c148bb88d76208000000004c89e84883c408ff25390000004d89ed4d8b7508488d642408498b1e41584883c408e9d7fefffff4000000000000|@1572,1,@15771,@10967,@10966,@10728|204,0,@1570 250,0,@1570 10966:D3,96|483b65187306ff5558ca09034989c64c89c853415041f6c601753741ff364d8b76084989c14c89f0488b5c24104c8b442408e8c9ffffff4c8b3424498b5e08488d642408488b5424084158488d642408ff22488d642410c3f400000000000000|@1573,1,@15773| 10967:D3,80|483b65187306ff5558ca09034989c64c89c853415041f6c601752b41ff364d8b76084989c14c89f0488b5c24104c8b442408e8c9ffffff488b5424105b4158488d642408ff22488d642410c3f4000000|@1573,1,@15772| 10968:D3,128|483b65187306ff5558ca090753415041514152a8017555ff30488b40084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8c3ffffff4c8b3424498b5e08488d642408488b5424184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408ff22488d64242048c7c001000000c20800f400000000|@1573,1,@15778| 10969:D3,112|483b65187306ff5558ca090753415041514152a8017549ff30488b40084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8c3ffffff488b5424205b4c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408ff22488d64242048c7c001000000c20800f4|@1573,1,@15777| 10970:D7,1400|483b65187306ff5558ca0d0152534150ff15920500004989c54d8b65004d89e64983fc03750d488d64241848c7c003000000c34d89f44983fe01750d488d64241848c7c003000000c34d89e64983fc097515488d64241848b8c8d8620800000000488b5d08ff234d89f44983fe077516498b4508ff15260500004989c641566a05e96e0400004d89e64983fc0b0f85b702000041ff75084d8b75184d8b66184d89e54d8b5424084d89d34d8b124983fa0375394d89dc4d8b6424084c8b5c24184d8b5b284d3be3750949c7c403000000eb0749c7c4010000004983fc03750d488d64242048c7c003000000c34d89ec4d8b6d084d8b6d004983fd050f85930000004d8b7424084d8b2e4983fd057570498b460841ff7610488b5c2408ff15760400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea0bd9409000000004c89336a016a01488b4424104989e0ff152d04000058488d642418488b542410488b5c24084158488d642410e981feffff488d64242048b818d0620800000000488b5d08ff234d89e54d8b5424084d89d34d8b124983fa0375324d8b5b084c8b5424184d8b52204d3bda750949c7c303000000eb0749c7c3010000004983fb03750a488d642420e9680100004d8b5424084d89d34d8b124983fa0375344d8b5b084c8b5424184d8b52184d3bda750949c7c303000000eb0749c7c3010000004983fb03750c49c7c403000000e9820000004d8b5424084d89d34d8b124983fa0375314d8b5b084c8b5424184d8b52104d3bda750949c7c303000000eb0749c7c3010000004983fb03750949c7c403000000eb404d8b5424084d89d34d8b124983fa0375284d89dc4d8b6424084c8b5c24184d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f84920000004c89e84d8b6d084d8b5d004d89dc4983fb057515488d64242048b8a8d2620800000000488b5d08ff234983fc0175244d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d084983fd037510eb354d8b6d084d8b6d004983fd037427488b542410ff124989c64983fe03750d488d64242048c7c003000000c3ff34244156e93e010000ff34246a05e9b1000000488d64242048c7c005000000c34983fe05750d488d64241848c7c003000000c34d8b75084d8b6d10498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304983e5094983fd01740d488d64241848c7c005000000c341ff364c8b34244d8b364983fe077534488b542408ff124989c64983fe03750d488d64242048c7c003000000c3488b54241858488b5c24084158488d642410e91efcffff488d6424085a4883c410ff22f64424080175764c8b742408498b064d89f641ff7608488b542430488b5c24284c8b442420e8e8fbffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243848c7c003000000c3584883c428c3f64424080175764c8b742408498b064d89f641ff7608488b542430488b5c24284c8b442420e865fbffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243848c7c003000000c3584883c428c3f64424080175764c8b742408498b064d89f641ff7608488b542428488b5c24204c8b442418e8e2faffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243048c7c003000000c3584883c420c3f4|@1580,1,@15780,@10900,@10958,@10972,@10728|89,0,@1577 326,0,@10971 390,0,@1531 710,0,@1545 10971:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@15779| 10972:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@15781| 10973:D3,80|483b65187306ff5558ca0d03498d47d0483b45107306ff5550ca0c034989c748c740f805000000488958204c8948184c8b72084c8970104c89400849be58bf9409000000004c8930c3f4000000000000|@1595,1,@15787|61,0,@10974 10974:D8,1824|483b65187305ff5558cd05524c8b304983fe030f85700300004c8b7008ff70104c8b4018ff70204c8b6c24104d8b65184d8b24244e8d1c65010000004983fb01750f49bcb0d9620800000000e9ba0000004d89da4983c20c4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d970600000f87ed0200004c89cf4c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449bab0d962080000000048c7c10d000000498d7208498d7c240848d1e9f3a44d89ed4d8b6d184c89d9498d7508498d7c240e48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d89650849c745000700000041554c8b6c2418498b5d204d89ed4d8b4d104c89f0ff150b0600004989c641564c8b7424204d8b6e184d89ec4c3b2deb0500007502eb374d89e54d8b24244e8d2465010000004983fc0b752e49bec8d9620800000000498d7508498d7e0848c7c105000000483bc9f3a67402eb0c49bd007a620800000000eb0a49bde0d96208000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b742428498b5e084d89f64d8b4e10488b4424204c8b442418ff154a0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8d96208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d64241848b8f807620800000000488b5d08ff23ff7008ff7010ff70184c8b7424184d8b6e184d8b6d004e8d246d010000004983fc01750f49bdb0d9620800000000e9b50000004d89e34983c30c4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15240300000f87060300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0d962080000000048c7c10d000000498d7308498d7d0848d1e9f3a44d89f64d8b76184c89e1498d7608498d7d0e48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff159a0200004989c04c8b742420498b56104d89f64d8b4e20488b44241848c7c3d107000049c7c201000000ff124989c6415648c7c001000000ff15580200004989c04c8b742428498b56104d89f64d8b4e08488b44241848c7c3d107000049c7c201000000ff124989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424104d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40da6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d64242048b8f807620800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@1590,1,@15782,@10815,@10815,@10975,@1584,@10975|68,0,@1583 208,0,@1583 384,0,@1584 418,0,@881 430,0,@1585 542,0,@1586 590,0,@866 678,0,@866 766,0,@866 891,0,@117 943,0,@1583 1081,0,@1583 1410,0,@866 1489,0,@866 1534,0,@1589 1578,0,@866 1666,0,@866 1791,0,@117 10975:D4,64|483b65187306ff5558ca09034989c24d8b70184d8b7610498b064d8b6e084d8b66104150ff7424084d89e048895c24104c89ebff251f000000f4000000000000|@1593,1,@15783,@10976| 10976:D9,1640|483b65187306ff5558ca0907505341504151415248c7c001000000ff15870600004989c0488b5424084c8b4c2438488b042448c7c3d107000049c7c201000000ff124989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41566a016a01488b4424284889e3ff151c060000ff7424084c8b742440498b066a016a014889e3ff15fb050000488d642408415d4c8b34244d89f44d3bf57507488d642418eb474d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375304d89e4498d742408488d642408498d7d08483bc9f3a67407488d642410eb16488d64241049c7c601000000e98e010000488d6424184d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4c8b6c24084d89ec4c3b2de90300007502eb3e4d89e44d8b2c244d89eb4e8d2c6d010000004983fd01753249bdd8086208000000004d89e4498d742408498d7d0848c7c100000000483bc9f3a67402eb0c48c7c301000000e9ba0200004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b6424084a8d0c5d010000004883f901750f49baa0da620800000000e99a0000004989cb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dc40200000f879a0200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca027a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a41c642082841c642092a4d89e4498d742408498d7a0a48d1e9f3a4418062ffbf4d8b224e8d2465010000004983fc01750f49bbb8da620800000000e9a70000004d89e14983c1044c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05020200000f87cb0100004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1e94d890b4c89e1498d7208498d7b0848d1e9f3a44983c4104d89e249d1ea43c604132a49d1ec43c644230129418063ffbf4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d896c241849c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0849bd40726208000000004c892b4883fb0175054c89f3eb0c4c89f0ff15c50000004889c34883fb017508415e4883c418eb12488b0424ff15a20000004989c6488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c21000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@1594,1,@15784,@10978,@10977,@123,@10737,@10737,@10815|564,0,@866 608,0,@1010 653,0,@866 709,0,@123 863,0,@1591 1049,0,@1592 1444,0,@866 1582,0,@117 1603,0,@117 10977:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15786| 10978:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15785| 10979:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@1621,1,@15795,@10980| 10980:D5,736|483b65187306ff5558ca0907415041514152ff30ff7008ff7010ff7018498d47e0483b45107303ff55504989c748c740f8030000004c8b7424284c8970104c8b7424304c89700849beb0d29409000000004c89306a016a016a014889e3ff159d020000ff3424488b5c2410ff7424184c8b7424484983c60241567115488d64246848b8d006620800000000488b5d08ff234c8bb424a00000004c8bac24980000006a01ff74246841564155ff742478488b4424684c8b44242849c7c10100000049baf8de620800000000ff15280200004989c641564c8bb424a00000004d8b6e304d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849bdf8d89409000000004d892e41564c8bb424a800000041ff76404c8bb424b000000041ff76204c8bb424b8000000498b5e684c8bb424b80000004d8b56284c8bb424b8000000498b56584c8bb424b8000000498b4e604c8bb424b80000004d8b66104c8bb424b80000004d8b5e184c8bb424b80000004d8b364c8bac24b8000000498b75504c8bac24b80000004d8b6d084c8b8c24b80000004d8b49384c8b8424b8000000498d7fe0483b7d107306ff5550ca4e7f4989ff48c747f803000000488b442430488947104c89470849b860d99409000000004c89074d8d47884c3b45107306ff5550cace7e4d89c749c740f80e0000004989586849894860498950584989705049897848488b7c2408498978404d8948384c8b4c24104d8948304d895028415a488d6424104d8950204d8958184d8960104d8968084d8930488b942498000000488b5c24784c8bb424900000004c8bac24880000004c8ba42480000000ff742468415641554154488b4424284c8b8c24800000004c8b542470ff124989c64c8b6c24384d8975004c8b2c244c8b6424404d892c24498d47e0483b45107306ff5550ca00404989c748c740f8030000004c897010415e488d6424184c89700848c700050000004883c450c23800f400000000|@1626,1,@15800,@10993,@10988|73,0,@10981 131,0,@105 194,0,@1617 267,0,@10984 473,0,@10985 10981:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba38de620800000000e9b60000004d89eb4983c34a4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc38de62080000000048c7c14b000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1615,1,@15788,@10982|70,0,@1613 98,0,@1614 256,0,@1614 316,0,@117 10982:D8,616|483b65187306ff5558ca0907505341514c8b7424104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d6f02000075204d8d77f04c3b75107306ff5550ca00154d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0045ebb549c7c6010000004983fe01750f49be2068620800000000e94b0100004d8b364d8b2e4c3b2d0b0200007506498b5e10eb15488d64241848b87850620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca08054d89f749c746f8020000004d89560849c706070000004d8d6fe84c3b6d107306ff5550ca08414d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca08214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c89c0ff15500100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca00154d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0045ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3b0000007509498b5e10e95afeffff488d64241848b87850620800000000488b5d08ff23f40000|@1616,1,@15789,@15134,@15134,@10811,@15134,@15134|115,0,@788 156,0,@621 554,0,@828 599,0,@621 10983:D3,480|483b65187305ff5558cd014c8b304c8b60084c8b581049c7c5ffffffff4d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49bd60c66208000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d89550849c745000500000049c7c2010000004d8d47f04c3b45107306ff5550ca007c4d89c749c740f80100000041c640ff404d891049c7c1010000004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d890a49c7c101000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c890f4d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890a49c7c1010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89084d8d4ff04c3b4d107306ff5550ca007d4d89cf49c741f8010000004d8901498d47c0483b45107306ff5550ca007e4989c748c740f8070000004c8948304c8950284c8958204c8960184c89681048c74008030000004c8930c3f4000000|@1618,1,@15790|66,0,@1469 10984:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15791| 10985:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be40da9409000000004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@1620,1,@15793,@10987|101,0,@10986 10986:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@15792| 10987:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15794| 10988:D3,216|483b65187305ff5558cd0949c7c6010000004d8d5ff04c3b5d107306ff5550ca09404d89df49c743f80100000041c643ff404d89334d8d67e84c3b65107306ff5550ca09084d89e749c74424f8020000004d895c240849be38dc9409000000004d8934244d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f8030000004d895d104989450849be20dd9409000000004d8975004d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849bb30de9409000000004d891e4c89234c896b084c89731048c7c001000000c3f4000000|@1918,1,@15899|88,0,@10989 137,0,@10991 182,0,@10992 10989:D4,32|483b65187305ff5558cd054889c34c8b7208498b06ff251d000000f400000000|@1622,1,@15796,@10990| 10990:D3,112|483b65187305ff5558cd0953a80175524c8b30488b400841ff3641ff7608488b5c2410e8d8ffffff488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22488d64240848c7c001000000c3f4|@1623,1,@15797| 10991:D3,232|483b65187305ff5558cd054c8b304c8b68084c8b62104d8b242441f6c40175634d8b14244d8b5c24084d8b0a498b5a084d3bce7502eb2f4d8b114e8d1455010000004d8b064c89c14e8d0445010000004d3bd0751d498d7108498d7e08483bc9f3a67402eb0c488b52084c89f04d89e8ff224d89dc483b65187306ff5558ca0470eb974d8d67e84c3b65107306ff5550ca04604d89e749c74424f8020000004d896c24084d8934244c8b72104d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400000000000000|@1624,1,@15798| 10992:D3,152|483b65187305ff5558cd054c8b72084d8b3641f6c60175764d8b264d8b6e084d8b14244d8b6424084c3bd07502eb2f4d8b1a4e8d1c5d010000004c8b084c89c94e8d0c4d010000004d3bd97530498d7208488d7808483bc9f3a67402eb1f498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d89ee483b65187306ff5558ca0140eb8448c7c001000000c3f400|@1625,1,@15799| 10993:D77,9000|483b65187306ff5558ca090750534150415141524c8b4424204d8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9f2000000909090e9f4000000909090e901060000909090e900060000909090e902060000909090e98a0a0000909090e9890a0000909090e9880a0000909090e9870a0000909090e9860a0000909090e9850a0000909090e9840a0000909090e9830a0000909090e9850a0000909090e97c0f0000909090e92f110000909090e930120000909090e90a140000909090e9be150000909090e9bd150000909090e9bc150000909090e9bb150000909090e90c160000909090e90b160000909090e90d160000909090e9df160000909090e9de160000909090e9e8160000909090e9e7160000909090e9f1160000909090488d642428eb05488d642428e91a0500004d89c04d8b68084d8b750041ff750841ff751041ff75204d8b2e4983fd1d0f85e90200004d8b760841ff3641ff760841ff761041ff76184d8b6e204c8b7424704d8b76484d8975004c8b7424704d8b76304c8b6c24704d8b6d68498d5fe8483b5d107306ff5550ca00614989df48c743f8020000004c896b084c89334c8bb424800000004d8d4fd84c3b4d107306ff5550ca08414d89cf49c741f8040000004c8b2c244d8969184d89c04d8941104d89710849be90049509000000004d893148b8a8e16208000000004c8b442418ff15802300004989c641564c8b34244d8b6e084983fd017505e98701000041f6c5010f847d0100004d89f64d8b2e488d6424084c3b2d442300007507488d642420eb394d8b75004e8d3475010000004983fe17752c49bec8e1620800000000498d7508498d7e0848c7c10b000000483bc9f3a67402eb0a488d642420e9000100004c8b6c24184d8b75004e8d3475010000004983fe01750f49bae8e1620800000000e9b70000004d89f44983c42a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d472000000f87b30000004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049bde8e162080000000048c7c12b000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b84248000000048c7c3030000004c8b4424584c8b0c24ff15fa210000488d64242049beb84b620800000000e9ad000000488d64246048b8f807620800000000488b5d08ff234d89f64d8b6e104d8b65004983fc0775354d8b6d084983fd11750949c7c503000000eb0749c7c5010000004983fd0375154c89f048c7c301000000ff15882100004989c6eb334d89f6498b46186a016a0148bb10e26208000000004989e0ff155d210000ff3424488b442410ff1547210000415e488d6424104c8b2c244c8b6424184d892c24488d6424084c8b6c24084d8975004883c420eb2a488b44246048c7c3030000004c8b0c2449ba20e2620800000000ff15f720000049beb84b62080000000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442440488b5c24604c8b4424584c8b4c24504c8b542448e852fbffff4989c64156488b442408ff15922000004c8b304983fe05757b4c8b7008ff701048bad8ce6208000000004c89f0488b5c2408ff15622000004989c641f6c601754e41ff3648ba98d9620800000000488b842480000000488b5c24784c8b44247849b9c8d9620800000000ff15222000004889c2488b0424ff124989c641564c8bb424880000004d8b7668e9231c0000e9141c000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad8ce620800000000ff154b1f00004989c641f6c601754e41ff3648ba98d9620800000000488b842480000000488b5c24784c8b44247849b9c8d9620800000000ff150b1f00004889c2488b0424ff124989c641564c8bb424880000004d8b7668e955190000e93c190000488d642428eb05488d642428e9950400004d89c04d89c541ff70084d89ed4d89ee41ff75104d89f641ff76184c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442430488b5c24584c8b4424504c8b4c24484c8b542440e84af9ffff4989c6415648ba60e26208000000004c8b7424684c8b6c2458498d5fd8483b5d107306ff5550ca04604989df48c743f8040000004c896b184c8b6c24404c896b104c89730849be30129509000000004c89334c8b442468488b442418ff15101e00004989c6415648bad8ce620800000000488b442408488b1c24ff15ea1d00004989c641f6c6010f85a203000041ff364c8b4c24784c8b54247048b880f0620800000000488b5c24204c8b442410ff15ae1d00004989c6415648c7c001000000ff15941d00004989c048ba80886208000000004c8b4c2478488b44241048c7c3214e000049c7c201000000ff15611d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba98d9620800000000488b842488000000488b9c24800000004c8b84248000000049b9c8d9620800000000ff15641c00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424784d8b7668e9ed120000e9e0120000488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428e9660b00004d89c04d8b700841ff3641ff760841ff761041ff761841ff76206a016a01488b4424304889e3ff15a7190000415d488d6424084c8b7424784983fe03750f49be20f1620800000000e9fb0000004c3b2d771900007502eb344d8b75004e8d3475010000004983fe01754f49bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb2d4c8b742460498b5630488b442420ff124989c64983fe01750c49be20f1620800000000eb034d8b36e98f0000004c8b7424604d8b76304c8b6c24604d8b6d68498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334c8b7424704d8d4fd84c3b4d107306ff5550ca08404d89cf49c741f8040000004c8b6c24084d8969184c8b6c24484d8969104d89710849be60589509000000004d893148b8a8e16208000000004c8b442420ff157e1800004989c641564c8b7424684d8b76484c8b6c24084d8975004c8b2c244d8b75084983fe017505e9ef01000041f6c6010f84e5010000488d6424104d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060100000041564c8b742470498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408488b54242049bea8946208000000004d8d67f04c3b65107306ff5550ca04604d89e749c74424f80100000041c64424ff404d8934244c8b7424304e8d1cf5f9ffffff4d8d77e04c3b75107306ff5550ca04384d89f749c746f8030000004d895e104d89660849c7060d000000498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c8970084c8b7424184c8930ff124989c64156488b5c2470488b4424204c8b442408ff15d0160000488b5c24584c8b442470488b4424204c8b4c240849c7c201000000ff15a7160000488b542440498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424204c8930ff124c8b2c244d89ee4c8b6424184d892c244d89f6498b4618488d642410e9920100004c8b7424384983fe03753e488d642410488b44246848c7c3030000004c8b4424404c8b0c2449ba60f1620800000000ff1518160000488d64240848b8b84b620800000000e9490100004d89ed4d89ee4c8b6424204d892c244d89f64d8b6e0841f6c50175064d8b7500eb624d89f6498b4618ff15cd1500004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe030f85820000004c8b34244d8b6e104d8b65004983fc0775374d8b6d084983fd11750949c7c503000000eb0749c7c5010000004983fd0375174c89f048c7c301000000ff1524150000488d642418eb374d89f6498b4618488d6424086a016a0148bba8f16208000000004989e0ff15f2140000ff3424488b442410ff15dc14000058488d642420eb39488d642410488b44246848c7c3030000004c8b4424404c8b0c2449bab8f1620800000000ff15a2140000488d64240848b8b84b6208000000004c8b3424498906488d642440c228004d89c04d89c541ff70084d89ed4d89ee41ff75104d89f6498b46184c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24604156ff742430ff742430ff742430ff742430415548bb00f2620800000000ff1524140000ff15161400004989c64156488b0424ff15ff1300004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24104d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd0375054c89f0eb6b49bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d8975004c8b3424498906488d642438c228004d89c0498b40084d89c04d89c641ff70104d89f641ff76184c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b44244849c7c1030000004c8b542438e8cbedffff4989c641564c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e885edffff4889c348bad8ce620800000000488b0424ff15f61100004989c641f6c601754841ff3648ba98d9620800000000488b442468488b5c24604c8b44246049b9c8d9620800000000ff15b91100004889c2488b0424ff124989c641564c8b7424704d8b7668e930090000e9230900004d89c04d89c541ff70084d89ed498b45104d89ed4d8b75184c8b5c24584c8b5424504c8b4c24484c8b442440488b7c24384d8d67a04c3b65107306ff5550ca816f4d89e749c74424f80b00000049897c24504d894424484d894c24404d895424384d895c24304c8b5c24084d895c24284c8b5c24104d895c24204c8b5c24184d895c24184c8b5c24204d895c241049bb00f26208000000004d895c240849bbf8589509000000004d891c244d8d47e04c3b45107306ff5550ca01704d89c749c740f80300000049bb70f26208000000004d89581049bbd8b76208000000004d8958084d8920498d5fd0483b5d107306ff5550ca01614989df48c743f8050000004d89ed4c896b204c89731849bed0186208000000004c89731049be48f36208000000004c89730849be60f36208000000004c89334c8b4c24504c8b542448ff154c1000004989c54d8b75004983fe01750c48b8b84b620800000000eb764d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d0483b45107306ff5550ca00404989c748c740f80500000049bd40996208000000004c89682049bd98f36208000000004c89681849bde0f36208000000004c8968104c89700848c7000b0000004c8b3424498906488d642430c22800488d6424204d89c04d89c541ff70084d89ed4d89ee41ff75184d89f6498b462048c7c303000000ff15790f0000ff156b0f00004c8b304983fe05757a4c8b7008ff701048bad8ce6208000000004c89f048bb7803630800000000ff15360f00004989c641f6c601754841ff3648ba98d9620800000000488b442448488b5c24404c8b44244049b9c8d9620800000000ff15f90e00004889c2488b0424ff124989c641564c8b7424504d8b7668e9d9040000e9ca04000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be78036308000000004c89730848c7030500000048bad8ce620800000000ff15200e00004989c641f6c601754841ff3648ba98d9620800000000488b442448488b5c24404c8b44244049b9c8d9620800000000ff15e30d00004889c2488b0424ff124989c641564c8b7424504d8b7668e912020000e9f9010000488d642428eb05488d642428eb05488d642428eb5e4d89c0498b4008488b5c24184c8b442410488b7c24085e488d6424204c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e90ce9ffff488d642428eb05488d642428e9df0000004d89c0498b40084d89c041ff70104c8b4424504c8b4c24484c8b5424404c8b7424384c8b6c24584156ff742428ff742428ff742428ff742428415548bb00f2620800000000ff15f00c000048c7c303000000ff15db0c00004989c64156488b0424ff15c40c00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c700070000004c8b3424498906488d642430c22800488d642428eb17488d64242848b8a803630800000000c22800488d642428eb05488d64242848b8b84b620800000000c22800488d64242849bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c22800584883c4084c8b3424498906488d642410c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1d7d0b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b60000004d8b364d8b2e4c3b2d190b00007506498b5e10eb15488d64243048b87850620800000000488b5d08ff23488b442428ff15e90a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424484d8b76184c8b6c2448498b556049c70603000000ff124883c408e9cffeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d480a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2dde0900007509498b5e10e9effeffff488d64243048b87850620800000000488b5d08ff23584883c408e930feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9409000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b60000004d8b364d8b2e4c3b2d300900007506498b5e10eb15488d64243048b87850620800000000488b5d08ff23488b442428ff15000900004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424484d8b76184c8b6c2448498b556049c70603000000ff124883c408e9d9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d5f08000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2df50700007509498b5e10e9effeffff488d64243048b87850620800000000488b5d08ff23584883c438c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dad07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b60000004d8b364d8b2e4c3b2d490700007506498b5e10eb15488d64245048b87850620800000000488b5d08ff23488b442448ff15190700004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424684d8b76184c8b6c2468498b556049c70603000000ff124883c408e9dbfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7806000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d0e0600007509498b5e10e9effeffff488d64245048b87850620800000000488b5d08ff23584883c448c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dc605000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b20000004d8b364d8b2e4c3b2d620500007506498b5e10eb15488d64245848b87850620800000000488b5d08ff23488b442450ff15320500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424704d8b76184c8b6c2470498b556049c70603000000ff12e9dffeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9504000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d2b0400007509498b5e10e9f3feffff488d64245848b87850620800000000488b5d08ff23584883c4184c8b3424498906488d642438c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dd703000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9bc0000004d8b364d8b2e4c3b2d730300007506498b5e10eb15488d64246848b87850620800000000488b5d08ff23488b442460ff15430300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424084c89700848c700030000004c8bb424800000004d8b76184c8bac2480000000498b556049c70603000000ff124883c408e9c9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9c02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d320200007509498b5e10e9e9feffff488d64246848b87850620800000000488b5d08ff23584883c418e92afeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1de801000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9bc0000004d8b364d8b2e4c3b2d840100007506498b5e10eb15488d64246848b87850620800000000488b5d08ff23488b442460ff15540100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424084c89700848c700030000004c8bb424800000004d8b76184c8bac2480000000498b556049c70603000000ff124883c408e9d3feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dad00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d430000007509498b5e10e9e9feffff488d64246848b87850620800000000488b5d08ff23f40000ffffffffffffff01|@1878,1,@15872,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@11066,@10822,@11067,@10973,@10934,@10973,@10934,@10728,@11068,@11073,@10973,@10934,@11077,@10825,@11078,@10982,@10905,@10900,@11068,@10728,@10982,@11079,@11080,@11065,@123,@10737,@10973,@10723,@10815,@11054,@10934,@10996,@10973,@10934,@10973,@10934,@10728,@10982,@10905,@10900,@11068,@10982,@1629,@11065|488,0,@10994 501,0,@1628 601,0,@1629 668,0,@1630 828,0,@1630 901,0,@578 921,0,@117 1018,0,@1631 1107,0,@1632 1123,0,@578 1232,0,@1525 1268,0,@1582 1296,0,@1584 1348,0,@1098 1503,0,@1525 1531,0,@1582 1559,0,@1584 1725,0,@1633 1789,0,@11004 1823,0,@1525 1874,0,@1719 1921,0,@1014 2034,0,@866 2078,0,@1720 2156,0,@1582 2190,0,@1584 2289,0,@1596 2333,0,@1597 2479,0,@866 2567,0,@866 2655,0,@866 2699,0,@1722 2917,0,@1724 2961,0,@123 3020,0,@1724 3146,0,@11049 3159,0,@1628 3428,0,@1098 3754,0,@1725 3775,0,@578 4021,0,@1726 4088,0,@1727 4109,0,@578 4206,0,@1728 4455,0,@1098 4736,0,@1525 4768,0,@1582 4793,0,@1584 4984,0,@1728 4999,0,@11051 5040,0,@1730 5054,0,@1372 5109,0,@199 5123,0,@1734 5137,0,@1735 5179,0,@578 5256,0,@1126 5270,0,@1736 5284,0,@1738 5391,0,@1525 5404,0,@1868 5432,0,@1582 5457,0,@1584 5506,0,@1098 5645,0,@1868 5666,0,@1525 5694,0,@1582 5719,0,@1584 5954,0,@1728 6125,0,@1869 6150,0,@578 6168,0,@1098 6381,0,@788 6422,0,@621 6671,0,@828 6716,0,@621 6830,0,@788 6871,0,@621 7120,0,@828 7165,0,@621 7277,0,@788 7318,0,@621 7567,0,@828 7612,0,@621 7724,0,@788 7765,0,@621 8010,0,@828 8055,0,@621 8179,0,@788 8220,0,@621 8475,0,@828 8520,0,@621 8634,0,@788 8675,0,@621 8930,0,@828 8975,0,@621 10994:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15801,@10982| 10995:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@15802| 10996:D4,32|483b65187306ff5558ca0d014d89c14c8b4208ff251f000000f4000000000000|@1638,1,@15803,@10997| 10997:D15,1888|483b65187306ff5558ca090353415041514c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e933000000909090e9e1000000909090e94c010000909090e980010000909090e904030000909090488d64241848b8b84b620800000000c34c8b700841ff3641ff760841ff762041ff76286a01488b542438488b442418488b5c24104989e0ff12ff34244c8b34244d8b66184d89e54d8b5424084d89d34d8b124983fa0375214d89dc4d8b6424084c3b642438750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03743b4d89ee4d8b76084d8b264d89e54983fc037509498b4610e9040400004983fd017509498b4608e9f50300004d8b760848c7c001000000e9a9030000e9e30200004c8b7008ff70184c89f0488b5c24184c8b4424104c8b4c2408e8c9feffff4989c64156488b442408488b5c24204c8b4424184c8b4c2410e8abfeffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64242848c70005000000c3488d6424184c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34c8b7008ff70104c89f048bb78e26208000000004c8b4424184c8b4c24104c8b542408ff15df050000ff15d10500004989c64156488b0424ff15ba0500004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24084d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd03488d6424087509488d6424184c89f0c3488d64241849bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500c3488b400848bb78e26208000000004c8b4424104c8b4c24084c8b1424ff1542040000488d64241848c7c303000000ff15280400004989c64156488b0424ff15110400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3488b44242848bb78e26208000000004c8b4424404c8b4c24384c8b542430ff15800300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24184d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b2c244c896818488d6424084c8b6c24184c8968104c89700848c7000b0000004883c440c341f6c60175364d8b66084989c54983c5027115488d64244848b8d006620800000000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc449c7c6010000004c8b6c242841f6c50175364d8b5d084d89f44983c4027115488d64244848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156483b04240f84f40100004c8b74240841ff3648bae85c62080000000048c7c303000000ff152c0200004989c6415648bae85c620800000000488b44241048c7c303000000ff15030200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e26208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8e26208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec8e26208000000004c8930ff15f000000048bb4870620800000000ff15d8000000ff15ca0000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c89701048c740080100000048c700030000004c8b6c24304d8b75184d89ed498b556049c70603000000ff12eb12488d6424084c8b34244c8b6c24104d897500e9a4fcfffff400000000000000|@1639,1,@15804,@10999,@10696,@10502,@10649,@10649,@11000,@11001,@10822,@11002,@11003,@10825,@10998|90,0,@578 468,0,@1634 746,0,@1098 858,0,@1634 1027,0,@1634 1239,0,@105 1311,0,@105 1367,0,@707 1395,0,@707 1495,0,@1635 1583,0,@1636 1671,0,@1637 1690,0,@851 10998:D4,224|483b65187306ff5558ca090753415041514152a8010f85b40000004c8b28ff70084d8b7500498b450841ff36488b542428488b5c24204c8b4424184c8b4c2410ff124989c64156488b442408ff15a60000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424104d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e860ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4000000|@742,1,@15810,@10828| 10999:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86072620800000000c3f400000000000000|@869,1,@15805|190,0,@866 247,0,@867 11000:D3,160|483b65187306ff5558ca09074989c65341504151415241f6c601756f498b0641ff7608488b542420488b5c24184c8b4424104c8b4c2408ff124989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000000000|@742,1,@15806| 11001:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15807| 11002:D3,160|483b65187306ff5558ca09074989c65341504151415241f6c601756f498b0641ff7608488b542420488b5c24184c8b4424104c8b4c2408ff124989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000000000|@742,1,@15808| 11003:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15809| 11004:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc08139509000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@15813,@11006|117,0,@11005 11005:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15811,@10982| 11006:D9,1816|483b65187306ff5558ca09014150ff30ff70086a016a014889d84889e3ff1535070000ff3424ff7424104c8b7424084d89f54c3b35170700007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e99601000048b860e3620800000000488b5c24204c8b4424084c8b4c2430ff159f0600004989c641f6c6010f856001000041ff364c8b34244d8b7610498b0648ba3891620800000000ff156c0600004989c6498b5640488b442408ff124989c64983fe017511488d64240849c7c601000000e9030100004d8b364c8b2c244d8b6510498b5c24204d89ed4d8b6500488d6424084d8b2c244e8d2c6d010000004983fd01750f49b80019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15a70500000f87920000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff155a0500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1f488d64243848b8f807620800000000488b5d08ff2349be80e36208000000004983fe010f85bb0400004c8b74243049c7c5090000004e8d0cad0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca00404d89cf49d1ed4d8969f841c641ff4149c741180000000049c7011200000049bde8e462080000000048c7c121000000498d7508498d790848d1e9f3a441c641182041c6411928418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3dfa0300000f87bc0300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08e5620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d1e0300000f87d30200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08e562080000000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2dba0200007507488d642430eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8086208000000004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243049bcd808620800000000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243049bc30e5620800000000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05d30100000f877b0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930e562080000000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4284d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05db000000777f4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248b890e3620800000000c348b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d642438498b06c3f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@1658,1,@15814,@123,@11009,@10742,@11008,@123,@10737|84,0,@123 140,0,@1640 198,0,@1078 300,0,@201 520,0,@117 536,0,@1641 629,0,@1653 933,0,@1654 1091,0,@1654 1176,0,@123 1218,0,@123 1256,0,@1655 1396,0,@1655 1677,0,@1642 1688,0,@117 1709,0,@117 1730,0,@117 1751,0,@117 11007:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@1199,1,@15812|13,0,@1138 11008:D8,1720|483b65187306ff5558ca0903505341516a016a014c89c04889e3ff15d0060000ff3424ff7424104c8b7424084d89f54c3b35b20600007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e9a600000048b860e3620800000000488b5c24284c8b4424084c8b4c2420e85bffffff4989c641f6c601757841ff364c8b34244d8b7610498b0648ba3891620800000000ff15140600004989c6498b5660488b442408ff124989c64983fe01750e488d64240849c7c601000000eb33498b06488b1c24ff15da0500004989c5488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe010f852d0500004c8b7424204c8b6424304d8b2c244e8d2c6d010000004983fd01750f49b980e5620800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b151e0500000f87b70400004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e94d89e4498d742408498d790848d1e9f3a44983c5104d89ec49d1ec43c604212049d1ed43c644290128418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d2d0400000f87b90300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08e5620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d510300000f87d00200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08e562080000000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2ded0200007507488d642430eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8086208000000004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243049bcd808620800000000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243049bc30e5620800000000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05060200000f87780100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930e562080000000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4284d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b050e010000777c4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248c7c001000000c348b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d6424384d8b36498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@1696,1,@15851,@123,@11044,@10742,@123,@10737|81,0,@123 137,0,@1640 190,0,@1078 341,0,@1657 786,0,@1654 944,0,@1654 1029,0,@123 1071,0,@123 1109,0,@1655 1249,0,@1655 1538,0,@117 1559,0,@117 1580,0,@117 1601,0,@117 1622,0,@117 11009:D7,336|483b65187306ff5558ca09015053415048c7c015000000ff15630100004989c6415648ba3891620800000000488b0424ff15420100004989c6498b56184c8b6c24184d8b75004d8b36498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff1249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bdb0239509000000004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f80300000049bdf8e56208000000004c896b104c89730849be88e66208000000004c8933ff35670000006a01488b4424184c8b44242849c7c1030000004c8b542420ff15410000004c8b34244d8b36488d6424284983fe01751048b808d5620800000000488b5d08ff23498b06c3f40000|@1669,1,@15818,@11014,@1691,@10742,@11013|36,0,@1078 190,0,@11010 230,0,@1660 248,0,@1664 315,0,@1556 11010:D3,64|483b65187305ff5558cd054c8b68084d8d77f04c3b75107306ff5550ca04204d89f749c746f8010000004d892e4c8b6a084d89750048c7c001000000c3f40000|@1659,1,@15815| 11011:D3,328|483b65187305ff5558cd014c8b284d8b75004e8d2475010000004983fc01750f49be08e6620800000000e9ad0000004d89e34983c3184c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e10000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb08e662080000000048c7c119000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1448d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd28e66208000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1659,1,@15816|34,0,@1661 171,0,@1661 249,0,@1662 267,0,@832 281,0,@15140 300,0,@117 11012:D3,328|483b65187305ff5558cd014c8b284d8b75004e8d2475010000004983fc01750f49be98e6620800000000e9ad0000004d89e34983c3124c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e10000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb98e662080000000048c7c113000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1148d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdb8e66208000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1659,1,@15817|34,0,@1665 171,0,@1665 249,0,@1666 267,0,@832 281,0,@15140 300,0,@117 11013:D4,768|483b65187305ff5558cd0150ff75084c8d356001000041564889650849c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004c8b7424104d89f44983fe017d05e90c0100004d89e44d89e64c3b25910200000f8df90000004d89f44c89e14e8d1ca50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02604d89df49d1ec4d8963f841c643ff404c89df48d1e948c7c001000000f348ab4d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89f64d89730849be80429209000000004d89334d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c700030000004883c408415e4c8975084883c408c348b8d055620800000000488b5d08ff23488b65084883c408415e4c8975084c8b304983fe090f854f01000048bae85c620800000000488b042448c7c303000000ff156c0100004989c5488d6424084d8b75004e8d2475010000004983fc01750f49bee8e6620800000000e9ad0000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15eb0000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbe8e662080000000048c7c121000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1848d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd08e76208000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff23488d642408488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@1695,1,@15849,@10649|251,0,@10699 360,0,@657 403,0,@707 456,0,@1667 593,0,@1667 671,0,@1668 689,0,@832 703,0,@15140 722,0,@117 11014:D6,296|483b65187306ff5558ca090750534150415141524c8b7424304156488b442428488b5c24084c8b44241849c7c10300000049c7c201000000ff15120100004989c24152488b442428488b5c24084c8b44241849c7c101000000ff15e90000004989c34d8d57d84c3b55107306ff5550ca00084d89d749c742f8040000004d895a184c8b34244d89f54d8972104c8b6424104d89e64d89620849bc902b9509000000004d89224c8b6424384d8d47b84c3b45107306ff5550ca007c4d89c749c740f8080000004d8950384c8b5424184d8950304d8958284d8960204d89ed4d896818488d6424084d89f64d8970104c8b34244d897008488d64241849be582e9509000000004d89305848c7c3010000004c8b34244c897424104883c410ff251e000000f40000000000|@1689,1,@15846,@10619,@11032,@11032|154,0,@11015 252,0,@11019 11015:D4,192|483b65187305ff5558cd05498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be802c9509000000004c89334d8d4fe84c3b4d107305ff5550cd0d4d89cf49c741f8020000004c8b72104d89710849bef82c9509000000004d89316a016a016a016a014c8b52185449b8e8e7620800000000ff1552000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000000000|@1673,1,@15822,@10770|47,0,@11016 94,0,@11017 120,0,@1672 11016:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@1670,1,@15819| 11017:D3,256|483b65187305ff5558cd054989d34989c54d8b73084c89f04d8b364e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc017501c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8a00000077734d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104d8b5b084c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff23f400000000ffffffffffffff01|@1671,1,@15820|229,0,@117 11018:D3,16|483b65187305ff5558cd01c3f4000000|@1671,1,@15821| 11019:D4,152|483b65187306ff5558ca0d015250534150f64424080175784c8b742408498b1e4d89f641ff76084c8b5424204d8b4a084d89d24d8b42104d89d24d8b72184d89d24d8b6a204d89d24d8b62284d89d24d8b5a304d89d24d8b5238415641554154415341524d89c2488b4424404c8b442430ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558eb81584883c418c3f400|@671,1,@15832,@11020| 11020:D12,2272|483b65187306ff5558ca09075041524c8b2b4d89ee4c3b2d1c0900000f85680600004c3b35070900000f85460600004c8b6b1041ff750041ff75084d8b751041ff751841ff3641ff760841ff761841ff762041ff76284983f9030f855b0100004d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424404d897424104c8b7424084d8974240849be70389509000000004d8934244c8b7424204d8b2e4983fd030f85b80000004d89f64d8b6e084d89f64d8b76184d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bb48c2620800000000eb554d89f24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab4c89f14c89df48d1e9f348a5418063ffbf4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70601000000eb034d89f64d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084d8965204c8b6424084d89651849c74510010000004c8b6424104d8965084d8975004883c420e90b04000048c7c015000000ff15600700004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b24244d89e64d89650849bcc0389509000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d89f34d8974240849beb03a9509000000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89db4d895e0849bba03c9509000000004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c89334d8d47e04c3b45107305ff5550cd084d89c749c740f8030000004c8b7424484d8970104c8b7424104d89700849be903e9509000000004d89304c8bb424800000004d8b364e8d3475010000004c8b6424504d8b2c244e8d1c6d010000004983fe0175084d89e5e9c50000004983fb01750d4c8bac2480000000e9b20000004f8d541eff4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0da40500000f87260300004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c8b9424800000004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d94d89e4498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49ba0019620800000000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc70400000f873c0200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca08794d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049d1ee43c604322e418062ffbf48ba68e86208000000004c8b7424784c8b6c247041564155488b44243849c7c101000000ff124c8b34244d8b2e4983fd030f85c00000004d89f64d8b6e084d89f64d8b7618488d6424084d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bc48c2620800000000eb584d89f34c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c89f14c89e748d1e9f348a541806424ffbf4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb084d89f6488d6424084c8b6424704d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084d8965204c8b6424084d89651849c74510010000004c8b6424104d8965084d8975004883c4204d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424084c89304c8b7424104c897424384883c438ff22488d64245848b8f807620800000000488b5d08ff23488d64245848b8f807620800000000488b5d08ff23488d64241048b87850620800000000488b5d08ff23488d6424084d89f54c3b35870200000f85ba0000004c3b2d720200000f85980000004c8b7310498b0641ff7608488b542418ff124989c64156488b5c2420488b442408ff153d0200004989c54c8b742428498b56084d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b34244c897424284883c428ff22488d64240848b87850620800000000488b5d08ff23488d6424084d89ee4c3b2da00100000f85510100004c3b358b0100000f8534010000ff73104c8b34244d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff76304c8b442448488b44241848bb78e8620800000000ff151d0100004989c54c3b6c2418750949c7c603000000eb0749c7c6010000004983fe0374664d8d77c04c3b75107306ff5550ca00204d89f749c746f8070000004c8b24244d896630488d6424084c8b24244d896628488d6424084c8b24244d896620488d6424084d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e4883c418eb0a488d6424304c8b7424084c8b6c2420498b5500498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b7424084c897424304883c430ff2248b87850620800000000488b5d08ff2348c7c001000000c22800f4000000000000ffffffffffffff01ffffffffffffff01|@1679,1,@15834,@10774,@15109,@15109,@11030,@15110,@15110,@11013,@15112,@15112|143,0,@11021 218,0,@1447 498,0,@11022 551,0,@11024 599,0,@11026 694,0,@11028 972,0,@201 1142,0,@1675 1245,0,@1447 1618,0,@117 1639,0,@117 1660,0,@621 1867,0,@621 1997,0,@1676 2225,0,@621 11021:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@15823,@10764| 11022:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd2801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@1674,1,@15824,@10597,@11023,@10580|59,0,@224 73,0,@15110 11023:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15825,@15110| 11024:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd4801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@1674,1,@15826,@10597,@11025,@10580|59,0,@224 73,0,@15112 11025:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15827,@15112| 11026:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd1801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@1674,1,@15828,@10597,@11027,@10580|59,0,@224 73,0,@15109 11027:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@15829,@15109| 11028:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@15830,@10764| 11029:D3,16|483b65187305ff5558cd01c3f4000000|@1677,1,@15831| 11030:D4,352|483b65187305ff5558cd0953a8010f8537010000ff30ff70084c8b7424084d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff7630488b44241848bbc0e86208000000004c8b442448ff15010100004989c54c3b6c2418750949c7c603000000eb0749c7c6010000004983fe0374664d8d77c04c3b75107306ff5550ca00204d89f749c746f8070000004c8b24244d896630488d6424084c8b24244d896628488d6424084c8b24244d896620488d6424084d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e4883c420eb0a488d6424384c8b7424084156488b442408488b5c2418e8e8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f400000000000000|@742,1,@15835,@10774|100,0,@1678 11031:D3,16|483b65187305ff5558cd01c3f4000000|@1677,1,@15833| 11032:D5,224|483b65187306ff5558ca090750534150415141524d8d47d04c3b45107303ff55504d89c749c740f8050000004c8b34244d8970204c8b7424084d8970184c8b7424104d8970104c8b7424184d89700849bef8419509000000004d8930488b5c2430488b442420ff15940000004889c34d8d47d04c3b45107305ff5550cd084d89c749c740f8050000004c8b34244d897020488d6424084c8b34244d897018488d6424084c8b34244d897010488d6424084c8b34244d897008488d64240849bea8459509000000004d8930584c8b34244c897424084883c408ff251a000000f400|@1690,1,@15847,@10619,@10619|81,0,@11033 191,0,@11036 11033:D4,128|483b65187306ff5558ca0d015250534150f644240801755a4c8b742408498b1e4d89f641ff76084c8b6c24204d8b4d084d89ed4d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b4424284c8b442418ff153f0000004989c4415d4c8924244c896c2408483b65187303ff5558eb9f584883c418c3f400000000000000|@671,1,@15837,@11034| 11034:D5,632|483b65187306ff5558ca09074c89cf4989c14c8b2b4d89ee4c3b2d790200000f853b0200004c3b35640200000f851e0200004c8b73104d8b6e104d8b75004d8b65204c8b2f4e8d2c6d010000004d8b194a8d1c5d010000004983fd0175084d89cbe9b20000004883fb0175084989fbe9a4000000498d741dff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15ce0100000f87980100004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cacc774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89e9488d7708498d7b0848d1e9f3a44983c5104889d9498d710849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d2c6d010000004983fd01750f48bb0019620800000000e9990000004d89e94983c1024c89c84883c01e48c7c71100000048d1e848d1ef4833d248f7f7488d3c4501000000483b3d000100000f87c20000004889fe488d1cb50400000048f7db4903df483b5d107205493bdf7206ff5550ca807f4989df48d1ee488973f8c643ff414883ef0248c744bbfc0000000049d1e94c890b4c89e9498d7308488d7b0848d1e9f3a44983c51049d1ed42c6042b2e8063ffbf4d8d6fe04c3b6d107306ff5550ca08554d89ef49c745f8030000004d8955104d89650849bc58459509000000004d89650048ba00e96208000000004c89f04c8b4c24104c8b5424084c894424104d89e84c8b34244c897424084883c408ff2248b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff2348b87850620800000000488b5d08ff234c89c0c21000f400ffffffffffffff01ffffffffffffff01|@1681,1,@15838,@15112,@15112|299,0,@201 502,0,@11035 516,0,@1680 562,0,@117 578,0,@117 594,0,@621 11035:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@15836,@10764| 11036:D4,128|483b65187306ff5558ca0d015250534150f644240801755a4c8b742408498b1e4d89f641ff76084c8b6c24204d8b4d084d89ed4d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b4424284c8b442418ff153f0000004989c4415d4c8924244c896c2408483b65187303ff5558eb9f584883c418c3f400000000000000|@671,1,@15844,@11037| 11037:D6,1264|483b65187306ff5558ca09074c89d2415041514c8b2b4d89ee4c3b2df80400000f85ae0400004c3b35e30400000f858c0400004c8b731041ff364d8d5fe84c3b5d107305ff5550cd044d89df49c743f8020000004c8b7424084d89730849be884b9509000000004d89334d8d67e84c3b65107306ff5550ca04084d89e749c74424f802000000498954240849beb04c9509000000004d8934244c8b34244d8b76184d8b56084d89d54d8b0a4983f9050f853d02000041ff7208498b421041ff3641ff76104c8b7424404983fe037509488d64242858c210004c8b7424384d8d47d84c3b45107306ff5550ca01584d89c749c740f8040000004d8970184d8958104d89600849be284d9509000000004d893048bbc0ea620800000000ff15e70300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24104d89ec4d896e0849c706050000004d8d57e04c3b55107306ff5550ca00504d89d749c742f8030000004c8b2c244d896a10488d6424084d8972084c8b34244d8932488d6424084c8b7424084d8b0e488b7c24104c8b2f4e8d1c6d010000004d8b294e8d046d010000004983fb0175084d89cde9b70000004983f80175084989fde9a90000004b8d7403ff4889f04883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d144501000000483b15ed0200000f87dc0000004889d14c8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac45f4d89ef48d1e949894df841c645ff414883ea0249c74495fc0000000048d1ee498975004c89d94889ff488d7708498d7d0848d1e9f3a44983c3104c89c1498d710849d1eb4b8d7c1d0048d1e9f3a4418065ffbf4d89f64d8b5e104d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d89e44d896608488d6424104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c21000488d64242048b8f807620800000000488b5d08ff234c8b6424284983fc037409488d64241058c210004d89ee4d8b2e4983fd017529498b4618ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f856a0100004d8b164c8b34244d8b1e4c8b4424084d8b284e8d246d010000004d8b2b4e8d0c6d010000004983fc0175084d89dde9b70000004983f90175084d89c5e9a90000004b8d7c0cff4889f84883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d344501000000483b35250100000f87e00000004889f24c8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac05f4d89ef48d1ea498955f841c645ff414883ee0249c744b5fc0000000048d1ef49897d004c89e14d89c0498d7008498d7d0848d1e9f3a44983c4104c89c9498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d89f64d8b66084d89f64d8b5e10488d6424084d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c21000488d64241848b8f807620800000000488b5d08ff23488d64241058c21000488d64241048b87850620800000000488b5d08ff23488d64240858c21000f40000ffffffffffffff01ffffffffffffff01|@1688,1,@15845,@10774,@15110,@15110|95,0,@11038 141,0,@11039 262,0,@11040 275,0,@1687 740,0,@117 1192,0,@117 1222,0,@621 11038:D3,256|483b65187305ff5558cd054989d34989c54d8b73084c89f04d8b364e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc017501c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8a00000077734d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104d8b5b084c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff23f400000000ffffffffffffff01|@1682,1,@15839|229,0,@117 11039:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@1683,1,@15840| 11040:D4,104|483b65187305ff5558cd056a016a016a016a01488b5a084c8b4a104c8b52185449b800ea620800000000ff1550000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400000000|@1686,1,@15842,@10770|34,0,@1684 11041:D3,16|483b65187305ff5558cd01c3f4000000|@1685,1,@15841| 11042:D3,16|483b65187305ff5558cd01c3f4000000|@1686,1,@15843| 11043:D3,32|483b65187305ff5558cd0148b890eb620800000000488b5d08ff23f400000000|@1694,1,@15848|13,0,@1692 11044:D5,888|483b65187305ff5558cd09ff304c8b70084c8b6810ff70184c8b6310498b7c2420498b5424284c8b63084d8b5d004d8b55084d8b4d184d8b6d204d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89680849bd28529509000000004d89284d8b2b4983fd030f85b50000004d8b6b084d8b5b184d8b6d00498b33488b5ef848c1e30848c1eb074883cb014883fb01750c48bf48c2620800000000eb584889df4889f94c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca4e774d89df48d1ef49897bf841c643ff404c89df48d1e948c7c001000000f348ab4889d94c89df48d1e9f348a5418063ffbf4c89df4d8d5fe04c3b5d107306ff5550ca84774d89df49c743f80300000049897b104d896b0849c70301000000eb004d8d6fc84c3b6d107306ff5550ca045f4d89ef49c745f806000000498955284d8945204d894d1849c74510010000004d8955084d895d0041554d8b2e4983fd010f85c20000004d8b6e084d8b34244983fe030f85840000004d8b6424084d8b34244983fe0d75184c89eb4c89e049c7c001000000ff15f20100004989c5eb354d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618010000004d896e104d89660849c706170000004d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70609000000eb0041564c8b74241041f6c60175424d8b264d8b6e084d8b1c244983fb0175204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb849c7c60100000041f6c601757b4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375554d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424104c89f34983fe0175054989c6eb09ff15650000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b7424084c89304883c410c3f400000000000000|@1716,1,@15852,@11047,@11046|95,0,@11045 158,0,@1447 11045:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@15850,@10764| 11046:D8,1024|483b65187306ff5558ca09014989c64d8b264d89e54983fc0d75104d8b66084d8b76104d89f5e9120100004983fd2975294d8b6e084d8b76104d3bf0750c49c7c6010000004d89eceb3f48b878ec620800000000488b5d08ff23498d47d8483b45107306ff5550ca08414989c748c740f8040000004c894018488958104c89700848c70017000000c341f6c40175324d8b5424084d89f34983c302711048b8d006620800000000488b5d08ff234d89d44d89de483b65187306ff5558ca0871ebc8493bde7d054d89eeeb214983f803750b48b858ed620800000000c348b8f0ed620800000000488b5d08ff2341f6c601753b498b064d8b6e084883fb017501c34989dc4983ec02711048b8d006620800000000488b5d08ff234c89e34d89ee483b65187306ff5558ca0840ebbf48b8c89d620800000000488b5d08ff2341f6c50175464d8b55004d8b5d084d8b0a4c3b0de302000075214d8d6ff04c3b6d107306ff5550ca08554d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0871ebb449c7c50100000041f6c501752d4d8b6d004d8b5d004c3b1d8b020000750c4d8b6d104989dbe9f301000048b87850620800000000488b5d08ff2349c7c50100000041f6c60175494d8b164d8b5e08498b3a4989f9483b3d4402000075224d89ce4c3b353002000075064d8b7210eb2b48b87850620800000000488b5d08ff234d89de483b65187306ff5558ca0871ebb149bea89b6208000000004d8b1e4983fb077572498b56104889d8ff124989c64d8b2e4d8b65004983fc01754941ff7508498b4510498b5e08ff15c10100004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c348b880ee620800000000488b5d08ff2341f6c4017405e9dc00000041f6c401741048b808ef620800000000488b5d08ff234d0fb67424ff4e8d3475010000004981e6ff0100004983e6074983fe01750949c7c603000000eb0749c7c6010000004983fe03740949c7c603000000eb3c41f6c401741048b808ef620800000000488b5d08ff234d8b7424f849c1e60849c1ee074983ce014c3bf3770949c7c603000000eb0749c7c6010000004983fe03744641f6c401741048b808ef620800000000488b5d08ff234d8b749cfc498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34983f803750b48b858ed620800000000c348b880ef620800000000488b5d08ff2341f6c50175434d8b4d004d8b55084983fb0175084d89cde908feffff4d89d94983e902711048b8d006620800000000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0879ebb748b8c89d620800000000488b5d08ff23f4|@1717,1,@15854,@11048,@15146,@15146,@15167,@15167|76,0,@1697 159,0,@105 211,0,@1701 222,0,@1705 267,0,@105 303,0,@1158 437,0,@621 506,0,@621 539,0,@1145 656,0,@1708 689,0,@1711 773,0,@1711 839,0,@1711 909,0,@1701 920,0,@1714 973,0,@105 1009,0,@1158 11047:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15853| 11048:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@15855,@15146|74,0,@224 88,0,@15146 11049:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15856,@10982| 11050:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@15857| 11051:D3,80|483b65187305ff5558cd054989d6498b5608498b5e104d8b4618498b7e20498b76284d8b6e304d8b66384d8b5e404d8b56484d8b4e504154415341524151ff7424204989f24989f94c896c2428ff22f4|@1729,1,@15858| 11052:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed8599509000000004c8930c3f400000000|@1733,1,@15861|47,0,@11053 11053:D4,48|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b6a084d89ee4d8b4d004d8b5608ff251a000000f400|@1731,1,@15859,@11054| 11054:D10,808|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d4403000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e90d0200004d8b364d8b2e4c3b2de002000075064d8b7610eb15488d64241048b87850620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004989450849c745000700000041554889d84c89f3ff15860200004989c6415648c7c001000000ff156c0200004989c048ba8088620800000000488b44241848c7c3214e00004c8b4c241049c7c201000000ff15390200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1da800000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3e00000075094d8b7610e998fdffff488d64241048b87850620800000000488b5d08ff23f40000000000|@1732,1,@15860,@15134,@15134,@10723,@10815,@10811,@15134,@15134|110,0,@788 151,0,@621 241,0,@1014 353,0,@866 398,0,@1358 442,0,@866 530,0,@866 743,0,@828 788,0,@621 11055:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be285e9509000000004c8930c3f400000000|@1749,1,@15863|47,0,@11056 11056:D3,184|483b65187305ff5558cd0d5250534c8b7424084d89f54c3b3424750d488d64241848c7c003000000c34d89ee41f6c5017573f604240175604d89f6498b064d89f641ff76084c8b742408498b1e4d89f641ff76084c8b7424204d8b7608498b16ff124989c64983fe0375204c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eb83488d64242848c7c001000000c3488d64241848c7c001000000c3488d64241848c7c001000000c3f40000000000|@1748,1,@15862| 11057:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be785f9509000000004c8930c3f400000000|@1764,1,@15865|55,0,@11058 11058:D3,912|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b84887620800000000c34c8b284d89ec4983fd017510488d64240848b838f5620800000000c34d89f54983fe037d10488d64240848b84887620800000000c34d8b342441ff7424084983ed0241557115488d64241848b8b0f5620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8f5620800000000e9c00100004c8b6424104d8b642408498b5424084d89ed4983ed027115488d64241848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c641564c8b6c24084983ed027115488d64242048b8b0f5620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e41564c8b6424204d8b742410498b164d89e44d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20f66208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@1763,1,@15864|32,0,@1003 60,0,@1751 85,0,@1003 118,0,@1755 152,0,@1756 196,0,@1755 269,0,@1755 461,0,@1031 509,0,@866 554,0,@1024 646,0,@1022 791,0,@866 836,0,@1759 11059:D3,24|483b65187305ff5558cd0148c7c007000000c3f400000000|@1766,1,@15866| 11060:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@1767,1,@15867| 11061:D3,40|483b65187305ff5558cd01a801740948c7c003000000eb0748c7c0010000004883f002c3f4000000|@1762,1,@15868| 11062:D3,56|483b65187305ff5558cd014c8b304c8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@1762,1,@15869| 11063:D3,56|483b65187305ff5558cd014c8b304c8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@1762,1,@15870| 11064:D3,40|483b65187305ff5558cd014883f801750848c7c003000000c348c7c001000000c3f4000000000000|@1754,1,@15871| 11065:D9,1704|483b65187306ff5558ca0903504151ff33ff73086a016a014c89c04889e3ff15c4060000ff3424ff7424104c8b7424084d89f54c3b35a60600007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e9aa00000048b860e3620800000000488b5c24204c8b4424084c8b4c2430ff152e0600004989c641f6c601757841ff364c8b34244d8b7610498b0648ba3891620800000000ff15ff0500004989c6498b5630488b442408ff124989c64983fe01750e488d64240849c7c601000000eb33498b06488b1c24ff15c50500004989c5488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0a49beb8046308000000004983fe010f85300500004c8b7424304c8b6424384d8b2c244e8d2c6d010000004983fd01750f49b980e5620800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15060500000f87ba0400004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e94d89e4498d742408498d790848d1e9f3a44983c5104d89ec49d1ec43c604212049d1ed43c644290128418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d150400000f87bc0300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08e5620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d390300000f87d30200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08e562080000000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2dd50200007507488d642438eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8086208000000004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243849bcd808620800000000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243849bc30e5620800000000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05ee0100000f877b0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930e562080000000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4304d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05f6000000777f4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248b820f1620800000000c348b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff23488d642440498b06c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@1915,1,@15894,@123,@11082,@10742,@11008,@123,@10737|85,0,@123 141,0,@1640 195,0,@1078 301,0,@1877 349,0,@1657 794,0,@1654 952,0,@1654 1037,0,@123 1079,0,@123 1117,0,@1655 1257,0,@1655 1538,0,@1724 1549,0,@117 1570,0,@117 1591,0,@117 1612,0,@117 1633,0,@117 11066:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15873| 11067:D3,240|483b65187306ff5558ca09074989c65341504151415241f6c6010f85ba000000498b0641ff7608488b542420488b5c24504c8b4424484c8b4c24404c8b5424384c8b7424304c8b6c24584156ff742420ff742420ff7424204155ff124989c641564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e857ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@742,1,@15874| 11068:D11,712|483b65187305ff5558cd09534c8b70104d8b2e4983fd070f85750200004d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe030f854a020000488b18ff701849bef804110a00000000498b06ff15be020000ff15b00200004989c641564c8b7424104983fe0375354c8b7424084d8b2e4983fd0575124d89f6498b4610ff157d0200004989c6eb7a488d64241848b81805630800000000488b5d08ff234c8b7424084d8b2e4983fd0575544d89f6498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15090200004989c6eb09ff15f60100004989c6eb034d89f64d8b2e4983fd0d0f855f0100004d8b6e08f604240175714c8b34244d8b66084983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4d89f64d8b1e488d6424084d8b234d8d77d04c3b75107306ff5550ca00384d89f749c746f80500000049c74620010000004d895e184d89661049c746080100000049c7060b000000e99b00000049bea8946208000000004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f80100000041c643ff404d893349c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d895e0849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849c70424090000004d8923498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849bed8709509000000004c89336a016a01488b4424104989e0ff158100000058488d642418c3488d64241848b8d805630800000000488b5d08ff23488d642408eb05488d642408488b40186a016a0148bb70066308000000004989e0ff1536000000ff3424488b442410ff152000000058488d642410c3f4|@1887,1,@15877,@10905,@10900,@10900,@10728,@10728,@10728,@11072,@11071|73,0,@15171 151,0,@1879 404,0,@1098 594,0,@11069 637,0,@1883 673,0,@1886 11069:D3,72|483b65187305ff5558cd054c8b304c8b6a104d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c348c7c001000000c3f4000000000000|@1882,1,@15875| 11070:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@15876| 11071:D3,200|483b65187305ff5558cd09a8010f85a50000004c8b30488b40084d8b1e4d8b6e084d8b6610493bdb7502eb2f4c8b334e8d3475010000004d8b134c89d14e8d1455010000004d3bf27569488d7308498d7b08483bc9f3a67402eb584d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e87cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3e948ffffff48c7c001000000c3f400000000000000|@1888,1,@15879| 11072:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15878| 11073:D4,368|483b65187306ff5558ca09075041514152f6442410010f85e10000004c8b742410498b064c8b74241041ff76084c8b34244983fe01750a488d642420498b10ff2241ff3041ff700841ff7010ff33ff7308ff7310ff7318ff7320488b542438ff124989c64156ff742448488b5c2448488b4424604c8b6424284c8b5c24684c8b5424204c8b4c24404c8b442458488b7c2438488b742430488b542410488b4c24184c8b6c247048894c24304889542438488974244048897c24484c894424504c8b04244c894c24584989d948c7c3030000004c895424604989c2488b4424084c895c24684c896424704c896c24284883c428ff2590000000488d642470488d64241849bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3f4000000000000|@1892,1,@15880,@11074|260,0,@1098 11074:D21,3872|483b65187306ff5558ca090750534151415241f6c0010f850b01000041ff3041ff7008488b542418488b442408ff124989c6415648bad8ce620800000000488b442430488b1c24ff15730f00004989c641f6c601751141ff364c8b7424204d8b7668e9c9000000488d6424084c8b7424204983c6027115488d64243048b8d006620800000000488b5d08ff23ff7424284156488b4c2410488b5c2428488b4424204c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9defeffff488d642418488d64241858c2480041f6c60175454d8b264d8b6e084d8b1c244c3b1d700e000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9c90c00004d8b364d8b2e4c3b2d0c0e000075064d8b7610eb15488d64244048b87850620800000000488b5d08ff2341564c8b6c24384d89ee4983fd030f85000100004c8bb424900000004d8b364e8d3475010000004983fe01750f49bd1007630800000000e9be0000004d89f44983c4064c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1deb0c00000f878d0000004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d8965004c8ba424900000004c89f1498d742408498d7d0848d1e9f3a44983c6104d89f449d1ec43c6442500204d89f449d1ec43c64425013149d1ee43c64435023a418065ffbfe9d7020000488d64244848b8f807620800000000488b5d08ff234c8bac24900000004d8b6d004e8d246d010000004983fc01750f49bd2807630800000000e9c90000004d89e34983c3084c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15e20b00000f87b50800004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c8b9c24900000004c89e1498d7308498d7d0848d1e9f3a44983c4104d89e349d1eb43c6441d00734d89e349d1eb43c6441d01204d89e349d1eb43c6441d023149d1ec43c64425032d418065ffbf415548bae85c6208000000004c89f048c7c303000000ff15c50b00004989c54c8b14244d8b324e8d3475010000004d8b65004e8d1c65010000004983fe01750d488d6424084d89ece9c40000004983fb01750d4d89d4488d642408e9b10000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05b30a00000f87790700004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208488d642408498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bd201a620800000000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15d70900000f87900600004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435003a418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b842490000000488b5c2440ff15ce090000488b9c24880000004c8b8c24800000004c8b442408ff15ab0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15530900004989c048ba80886208000000004c8b8c2480000000488b44245048c7c3214e000049c7c201000000ff151d0900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b66208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b5424684c8b742470498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424284c8930ff124989c64156488b4424404883c0027115488d64245048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15330700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc40076308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0176208000000004d8975004c8bb42498000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff159f0600004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24184c8968104c8b6c24284c8968084c8930488b1424ff124989c6415648ba98d9620800000000488b9c24800000004c8b842480000000488b44243849b9c8d9620800000000ff152a0600004889c2488b442418ff124989c44c8b6c24704d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdc8db6208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bce8db6208000000004d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d896c242049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d6424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668eb3f488d64244848b8f807620800000000488b5d08ff23488d64245048b8f807620800000000488b5d08ff23488d64244848b8f807620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d5203000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9610100004d8b364d8b2e4c3b2dee0200007506498b5e10eb15488d64243848b87850620800000000488b5d08ff23488b442448ff15be0200004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c2440498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff124c8b7424204983c6027115488d64243048b8d006620800000000488b5d08ff234156488b4c2408488b5c2420488b4424184c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b5424404889542440488974244848897c24504c894424584989c84c894c24604989d9488b1c244c895424684989c248b8b84b6208000000004c895c24704c896424784c89ac24800000004883c438e93ff2ffff488d64241041f6c60175454d8b264d8b6e084d8b1c244c3b1d7201000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d080100007509498b5e10e944feffff488d64243848b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc800000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d5e00000075094d8b7610e9dcf2ffff488d64244048b87850620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@1895,1,@15881,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@10973,@10502,@10649,@10723,@10815,@11076,@11075,@10649,@15134,@15134,@10934|54,0,@1525 126,0,@105 394,0,@788 435,0,@621 496,0,@1889 711,0,@117 753,0,@1890 971,0,@707 1260,0,@213 1602,0,@1014 1718,0,@866 1762,0,@1358 1807,0,@866 1895,0,@866 2088,0,@105 2104,0,@707 2157,0,@1891 2205,0,@187 2329,0,@1582 2360,0,@1584 2504,0,@1596 2549,0,@1597 2703,0,@866 2794,0,@866 2885,0,@866 3014,0,@117 3035,0,@117 3056,0,@117 3160,0,@788 3201,0,@621 3362,0,@105 3486,0,@578 3621,0,@828 3666,0,@621 3775,0,@828 3820,0,@621 11075:D3,136|483b65187305ff5558cd094883fb01750848c7c001000000c3a8017555ff30488b40084883eb027115488d64240848b8d006620800000000488b5d08ff23e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a807630800000000488b5d08ff23f40000000000|@1897,1,@15883|48,0,@105 116,0,@1893 11076:D6,928|483b65187306ff5558ca090353415041514c8b7424084d89f54983fe017f10488d64241848b86089620800000000c3a8010f85580300004c8b30ff70084c8b24244983fc017560488d6424085a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64c8b6c24184d89eb4c3b2de30200007502eb3c4d89db4d8b2b4d89ec4e8d2c6d010000004983fd03753149bdd0186208000000004d89db498d7308498d7d0848c7c101000000483bc9f3a67402eb0c49c7c403000000e9be0000004c8b6c24184d89eb4c3b2d800200007502eb3a4d89db4d89e54e8d2465010000004983fc03752f49bc381a6208000000004d89db498d7308498d7c240848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5c24184d89dc4c3b1d22020000750949c7c403000000eb4e4d89e44e8d2c6d010000004983fd01753649bdd8086208000000004d89e4498d742408498d7d0848c7c100000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184c89db4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424184983e8027115488d64242848b8d006620800000000488b5d08ff23488b4424084c8b4c2410e8d0fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c410c3488d64241848c7c001000000c3f4000000|@1896,1,@15882,@123,@214,@199|38,0,@1020 258,0,@199 346,0,@214 436,0,@123 787,0,@105 852,0,@866 11077:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@15884| 11078:D4,312|483b65187306ff5558ca090753415041514152a8010f850c0100004c8b30ff700841ff3641ff7608498b4618488b542430488b5c24604c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24684156ff742430ff742430ff7424304155ff124989c641564c8b34244c8b6c24084d897500488b442410ff15d20000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424184d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e80affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f400|@1898,1,@15885,@10828| 11079:D10,944|483b65187306ff5558ca09074989c54d89c64989d84c3b2ddc0300007502eb374d8b5d004d89dc4e8d1c5d010000004983fb09752749bb3009630800000000498d7508498d7b0848c7c104000000483bc9f3a67402eb05e9570100004c3b2d8d0300007502eb344d89e34e8d2465010000004983fc0b752849bc4809630800000000498d7508498d7c240848c7c105000000483bc9f3a67402eb05e9130100004c3b2d410300007502eb334d89dc4e8d1c5d010000004983fb07752749bb98f5620800000000498d7508498d7b0848c7c103000000483bc9f3a67402eb05e9d00000004c3b2df60200007502eb344d89e34e8d2465010000004983fc05752849bc80f6620800000000498d7508498d7c240848c7c102000000483bc9f3a67402eb05e98c0000004c3b2daa0200007502eb334d89dc4e8d1c5d010000004983fb07752449bb6009630800000000498d7508498d7b0848c7c103000000483bc9f3a67402eb02eb4c4983fa030f851f0200004c3b2d580200007502eb374e8d2465010000004983fc050f850002000049bc7809630800000000498d7508498d7c240848c7c102000000483bc9f3a60f85db0100004d8b65004e8d1c65010000004983fb01750f49bc9009630800000000e9b30000004d89da4983c2324c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3da40100000f87740100004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1ea4d89142449ba900963080000000048c7c133000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c242148d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49bac009630800000000e9b60000004d89eb4983c3184c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f2488d3c4501000000483b3dc80000000f87900000004889fe4c8d14b50400000049f7da4d03d74c3b551072054d3bd77206ff5550ca807b4d89d748d1ee498972f841c642ff414883ef0249c744bafc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bcc00963080000000048c7c119000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c89f048c7c303000000ff255a00000048b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23eb0048c7c001000000c3f400000000000000ffffffffffffff01ffffffffffffff01|@1905,1,@15886,@10982,@1902,@1901,@1762,@1754,@1900,@1899|55,0,@1899 122,0,@1900 190,0,@1754 257,0,@1762 325,0,@1901 400,0,@1902 455,0,@1903 595,0,@1903 667,0,@1904 825,0,@1904 880,0,@117 896,0,@117 11080:D4,32|483b65187306ff5558ca09014989d94889c348c7c003000000ff2519000000f4|@1908,1,@15887,@11081| 11081:D6,952|483b65187306ff5558ca0903415041514c8b334d89f44e8d347501000000493bc67e0d488d64241048c7c001000000c34989c54983ed027115488d64241048b8d006620800000000488b5d08ff234983fd017d0a488d642410e9390300004d89e64e8d2465010000004d3bec7c0949c7c403000000eb0749c7c4010000004983fc030f840a0300004983c51049d1ed4e0fb62c2b4e8d246d0100000049bd30096208000000004f8b64a5fc4c3b252e0300007502eb3c4d8b2c244e8d2c6d010000004983fd030f859a02000049bd0019620800000000498d742408498d7d0848c7c101000000483bc9f3a67405e9740200004e8d3475010000004983fe01750f49bd200a630800000000e9af0000004d89f44983c41e4c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d710200000f870c0200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650049bc200a63080000000048c7c11f000000498d742408498d7d0848d1e9f3a44c89f1488d7308498d7d1748d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8400a630800000000e9b20000004d89f44983c41a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d990100000f87270100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd400a63080000000048c7c11b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1537010000ff15290100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64241049c70603000000ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff234883c0027115488d64241048b8d006620800000000488b5d08ff234c8b4424084159488d642408e96efcffff488d64241048b8a838620800000000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@1909,1,@15888,@10999,@10696,@201|64,0,@105 158,0,@126 206,0,@201 258,0,@1906 396,0,@1906 466,0,@1907 622,0,@1907 659,0,@851 835,0,@117 856,0,@117 883,0,@105 921,0,@502 11082:D5,496|483b65187305ff5558cd094989c65341ff3641ff760841ff7610498b461841ff76204c8b7424204d8b6e104d8b65204d89f64d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bc68959509000000004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f8030000004d8968104d89700849bee0959509000000004d893048bba00b630800000000ff156e0100004989c64c8b2c2441f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb749c7c50100000041f6c501757c4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89e54d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004d8d47e84c3b45107306ff5550ca00604d89c749c740f80200000049c74008010000004d8928eb0749c7c001000000498d47c0483b45107306ff5550ca00414989c748c740f80700000048c740300100000048c74028010000004c8b2c244c896820488d6424084c8970184c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488d6424085bff251d000000f400000000|@1916,1,@15895,@11088,@10774|86,0,@11083 135,0,@11084 148,0,@1914 11083:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@1910,1,@15889| 11084:D4,152|483b65187305ff5558cd054d8d4fe84c3b4d107305ff5550cd054d89cf49c741f8020000004c8b72084d89710849bea8969509000000004d89316a016a016a016a01488b5a105449b8500b63080000000049c7c201000000ff1552000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000000000|@1913,1,@15892,@10770|47,0,@11085 73,0,@1912 11085:D3,472|483b65187305ff5558cd054989d44989c54d8b7424084d8b364e8d3475010000004983fe01750f49bb0019620800000000e9a10000004d89f24983c2024c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d6a0100000f87450100004d89c84e8d1c850400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00764d89df49d1e84d8943f841c643ff414983e9024bc7448bfc0000000049d1ea4d89134d8b6424084c89f1498d742408498d7b0848d1e9f3a44983c61049d1ee43c604332e418063ffbf4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d98000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@1911,1,@15890|41,0,@201 419,0,@117 435,0,@117 11086:D3,16|483b65187305ff5558cd01c3f4000000|@1911,1,@15891| 11087:D3,16|483b65187305ff5558cd01c3f4000000|@1913,1,@15893| 11088:D6,568|483b65187306ff5558ca090141504c8b70104d8b264d89e54983fc030f85b60000004d8b6e08ff30ff7008ff7018488b58204d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060300000041564883fb0175074c8b742420eb0e488b442420ff15ee0100004989c6498d47c0483b45107306ff5550ca00404989c748c740f80700000048c740300100000048c74028010000004c8970204c8b7424084c8970184c8b34244c897010488d6424104c8b34244c897008488d6424084c8b34244c8930488d6424084883c408c34983fd010f854f0100004d8b6e08ff30ff7008ff7018ff70204c8b63084d8b34244983fe030f85840000004d8b6424084d8b34244983fe0d75184c89eb4c89e049c7c001000000ff15330100004989c5eb354d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618010000004d896e104d89660849c706170000004d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060900000041564c8b7424084c89f34983fe0175074c8b742428eb0e488b442428ff157d0000004989c6498d47c0483b45107306ff5550ca00404989c748c740f80700000048c740300100000048c74028010000004c8970204c8b7424104c8970184c8b34244c897010488d6424084c8b7424104c8970084c8b7424184c89304883c428c3488d642408c3f4|@1917,1,@15896,@11090,@11046,@11089| 11089:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15898| 11090:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15897| 11091:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be089d9509000000004c8930c3f400000000|@1922,1,@15902|47,0,@11092 11092:D4,48|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b6a084d89ee4d8b4d004d8b5608ff251a000000f400|@1920,1,@15900,@11093| 11093:D11,1168|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1db404000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e9770300004d8b364d8b2e4c3b2d5004000075064d8b7610eb15488d64241048b87850620800000000488b5d08ff2341564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c706070000004156ff33488b4308488b5c24104883eb027115488d64242848b8d006620800000000488b5d08ff23ff15d60300004989c64156488b5c24184883eb027115488d64243048b8d006620800000000488b5d08ff23488b442408ff159e0300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90b56208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff156e0200004989c048ba8088620800000000488b44242048c7c3214e00004c8b4c241849c7c201000000ff153b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c341f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e92efcffff488d64241048b87850620800000000488b5d08ff23f4000000|@1921,1,@15901,@15134,@15134,@10723,@10815,@10811,@10811,@15134,@15134|110,0,@788 151,0,@621 230,0,@105 273,0,@105 373,0,@866 417,0,@1353 462,0,@866 599,0,@1014 711,0,@866 756,0,@1358 800,0,@866 888,0,@866 1105,0,@828 1150,0,@621 11094:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc38a39509000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@15904,@11006|117,0,@11095 11095:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15903,@10982| 11096:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15905,@10982| 11097:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15906,@10982| 11098:D4,288|483b65187306ff5558ca0d014989d64989c44d89c14d8b2c244e8d2c6d010000004983fd01750f49ba180e630800000000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b20000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc180e63080000000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253700000048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01|@1929,1,@15907,@10982|41,0,@1928 199,0,@1928 259,0,@117 11099:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@1621,1,@15908,@10980| 11100:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@1621,1,@15909,@10980| 11101:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@1199,1,@15910|13,0,@1138 11102:D3,112|483b65187305ff5558cd054989d641ff7608498b5e10498b7618498b5620498b4e284d8b6e304d8b66384d8b5e404d8b56484d8b4e504d8b4658498b7e60415341524151415057ff7424304989ca4989d14989f0488b5424304c896424304c896c2438ff22488d642408f40000000000|@1943,1,@15911| 11103:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15912| 11104:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15913| 11105:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@15914| 11106:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bea0a99509000000004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@1944,1,@15916,@11108|101,0,@11107 11107:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@15915| 11108:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@15917| 11109:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1944,1,@15918| 11110:D4,344|483b65187306ff5558ca0d014989d64989c44d8b681041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba180e630800000000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc180e63080000000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1929,1,@15919,@10982|70,0,@1613 98,0,@1928 256,0,@1928 316,0,@117 11111:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@15920,@10982| 11112:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@15921| 11113:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@1960,1,@15922| 11114:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@1960,1,@15923| 11115:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@1960,1,@15924| 11116:D3,112|483b65187305ff5558cd055250488b04244c8b58084c8b7424084d8b6e184d89ec4d8b55004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d8955084d895d004d89f64d892c244d89f6498b5610ff124c8b7424084d8b7608498b561058488d642408ff22f40000|@1963,1,@15925| 11117:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f4000000000000|@1963,1,@15926| 11118:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b565058488d642408ff22f4000000000000|@1963,1,@15927| 11119:D13,2072|488dbc2440ffffff483b7d187306ff5560ca0907504150415141524c8b7424684c8b6c2460498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bee8b79509000000004c89306a016a016a014889e3ff1514080000ff742408ff742418488b9c24800000004c8b4424784c8b8c2490000000488b4424384c8b542408ff15df0700004989c64156488b5c24784c8b8c24980000004c8b942490000000488b4424304c8b442408ff15ad0700004989c6ff7424304156f6442408010f85aa020000f60424010f85990200004c8b6c24084d8b75004d89ed41ff75084c8b6424084d89e541ff34244d89ed41ff750841ff3641ff760841ff762041ff76304d8d77e04c3b75107303ff55504d89f749c746f80300000049bdd8086208000000004d896e104c8b6424084d89e54d8966084c8b6424184d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c7060100000041564c8bb424f0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d8970084c8b7424104d8930488b9424d800000048c7c00100000048c7c3010000004c8b4c2408ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d6424104c8b34244d897508488d6424084c8b7424104c89f04d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e41564c8b34244c8b6c24104d897500488b9c24e00000004c8b442408ff1583050000488b542458498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424184c8930ff124c8bb424c0000000498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424184c8b34244c8930488d642408ff124c8b6c2410415c488d6424104c8924244c896c2408483b65187303ff5558e952fdffff488d642410eb05488d6424104c8bb424980000004c8bac2490000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be70b99509000000004c89306a016a016a014889e3ff158b040000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff1562040000ff742408ff7424184c8b8424f00000004c8b8c24d00000004c8bb424e80000004156ff742438ffb424a0000000ff742420488b8424b8000000488b5c24784c8b942480000000ff150e04000048ba5015630800000000488b9c24c8000000ff15ee0300004c8bb424900000004983fe03741d488d6424385a4c8bb42490000000498b4610ff124883c468e98d0300006a016a016a0148c7c0010000004889e3ff15a5030000415d415a415b4c8ba424d00000004d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849bc68999709000000004d892641564c8bb424d80000004d8b66304d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184c8b5c24304d895e104d89660849bcc8999709000000004d892641564c8bb424e0000000498d77d8483b75107306ff5550ca00604989f748c746f8040000004c896e184c8b6c24484c896e104c89760849be489a9709000000004c89364c8bb424e00000004d8d5fe04c3b5d107306ff5550ca40404d89df49c743f8030000004c8b6c24184d896b104d89730849bea89d9709000000004d89334c8bb424e00000004d8b7640498d7fe0483b7d107306ff5550ca40484989ff48c747f8030000004c8b6c24104c896f104c89770849be089e9709000000004c89374c8bb424e00000004d8b56204c8bb424e0000000498b46684c8bb424e00000004d8b4e284c8bb424e0000000498b4e584c8bb424e0000000498b5e604c8bb424e00000004d8b2e4c8bb424e0000000498b56504c8bb424e00000004d8b66084c8bb424e00000004d8b46384d8d77884c3b75107306ff5550cacf3f4d89f749c746f80e0000004989466849895e6049894e58498956504989764849897e404d8946384c8b04244d894630488d6424084d894e284d8956204d895e184c8b1c244d895e10488d6424184d8966084d892e4156ffb42498000000f604240175724c8b2c244d8b75004d89ed41ff75084d8b16488b9424c8000000488b8424b8000000488b9c24e80000004c8b8c24f00000004c8bb424f80000004c8bac24e00000004c8ba424d00000004c8b9c24c000000041564155415441534c8b442430ff12415d4c892c24483b65187303ff5558eb88488d642458488b0424ff15f80000004989c64c8bac24a00000004d897500415e4883c44841f6c6010f85b30000004d8b264d8b6e084d8b6424184d8b5c24084d89da4d8b0b4983f903752e4d8b5b184983fb03750949c7c303000000eb0749c7c3010000004983fb03750e4d8b620849c7042401000000eb444d89d34d8b0a4983f901754c4d8b52104d8b124983fa03750949c7c203000000eb0749c7c2010000004983fa0375294d89dc4d8b6424104d8b64240849c70424010000004d89ee483b65187306ff5558ca0040e953ffffff48b8e8b2630800000000488b5d08ff2348b8b84b620800000000c25000f4|@3393,1,@16131,@11322,@10906,@11122,@11323,@10906,@10988,@11080,@11332,@11321,@10988|74,0,@11120 293,0,@123 947,0,@11121 1084,0,@1971 1222,0,@11237 1293,0,@11238 1360,0,@11239 1421,0,@11244 1486,0,@11245 2044,0,@3281 2060,0,@578 11120:D4,344|483b65187306ff5558ca0d014989d64989c44d8b284d8b6d1041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba180e630800000000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05ae0000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc180e63080000000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253300000048b8f807620800000000488b5d08ff23f40000ffffffffffffff01|@1969,1,@15929,@10982|73,0,@1613 101,0,@1928 259,0,@1928 319,0,@117 11121:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba0815630800000000e9b60000004d89eb4983c3684c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc081563080000000048c7c169000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@1969,1,@15930,@10982|70,0,@1613 98,0,@1970 256,0,@1970 316,0,@117 11122:D5,624|483b65187305ff5558cd0d52505349c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8b6424104d89660849bca0bd9509000000004d89264d8975006a016a0148b8e0b06308000000004889e3ff1506020000ff3424ff7424104d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b2c244d896e204c8b6c24204d896e184c8b6c24304d8b6d084d896e104c8b6c24084d896e0849bdf08e9709000000004d892e4156ff742430f6042401752f4c8b3424498b064d89f641ff7608488b5c24184c8b442420ff1581010000415d4c892c24483b65187303ff5558ebcb488d642408ff742430f60424010f85330100004c8b2c244d8b75004d89ed41ff750841ff364c8b342441ff7618488b542420488b0424ff124989c64983fe03750a488d642410e9cb000000488b542430498d47e8483b45107305ff5550cd044989c748c740f80200000049bef0526208000000004c8970084c8b34244c8930488d642408ff124c8b34244d8b7618488d6424084d8b6e084d89ec4d8b5d004983fb03752e4d8b6d184983fd03750949c7c503000000eb0749c7c5010000004983fd03750e4d8b74240849c70603000000eb444d89e54d8b1c244983fb0175524d8b6424104d8b24244983fc03750949c7c403000000eb0749c7c4010000004983fc0375264d89ee4d8b76104d8b760849c70603000000415d4c892c24483b65187303ff5558e9dffeffff488d642450eb05488d64245048b8e8b2630800000000488b5d08ff23488d64244848c7c001000000c3f400000000|@3287,1,@16042,@11235,@11231|100,0,@11123 121,0,@3269 210,0,@11229 388,0,@639 592,0,@3281 11123:D9,1312|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f857a0200004d8b6e084983ec02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b85016630800000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b357a040000750949c7c603000000eb2b4c3b3560040000750949c7c603000000eb194c3b3546040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08af6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0af6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@3268,1,@16035,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 119,0,@15175 132,0,@1981 326,0,@2144 374,0,@1021 419,0,@1987 570,0,@866 615,0,@3254 700,0,@1044 721,0,@105 948,0,@2144 996,0,@1021 1041,0,@1987 1192,0,@866 1237,0,@3261 11124:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be80c39509000000004c8930c3f400000000|@122,1,@15934|47,0,@11125 11125:D5,176|483b65187305ff5558cd054989c6498b46084c8b6a084d8b4508498b1e4883f8017f0c48b88015630800000000eb06ff159b000000ff158d0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98156308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@1975,1,@15931,@11127,@11126|37,0,@1973 95,0,@1974 11126:D3,448|483b65187306ff5558ca0901504150f6c3010f85940100004c8b33ff73084c8b2c244983fd01757a488d6424084c8b6424084d89e54983fc017510488d64241048b88015630800000000c35a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b6424104d89e54983fc017510488d64241848b88015630800000000c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64156488b4424184883e8027115488d64242048b8d006620800000000488b5d08ff23488b5c24084c8b442410e8e0feffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70306208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3488d64241048c7c001000000c3f4000000000000|@1980,1,@15933|66,0,@1973 183,0,@1973 259,0,@105 324,0,@444 369,0,@445 11127:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c815630800000000c3f4000000|@1979,1,@15932|75,0,@1976 11128:D3,32|483b65187305ff5558cd0149be4805110a00000000498b16ff22f40000000000|@1995,1,@16034|13,0,@15176 11129:D3,896|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e9e70100004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b7424104d8b6e084c8b6424084983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bdc0ca9509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10176308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@1995,1,@15936|32,0,@1044 58,0,@105 92,0,@1756 129,0,@105 223,0,@105 275,0,@15175 327,0,@11130 440,0,@1985 488,0,@866 533,0,@1315 625,0,@1987 770,0,@866 815,0,@1988 11130:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@1984,1,@15935| 11131:D3,2936|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9de0900004c8b7424084d8b76104d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7620498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9830800004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b7424104d89f44983fe057d0f49bdb8af620800000000e92d0700004c8b7424184d8b6e304d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bda0d69509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f44983fe077d0f49beb8af620800000000e95c0500004c8b7424284d8b6e204d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d104d896e0849bdc0e29509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d89f54983fe097d0f49bdb8af620800000000e98c0300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424384d89f44983fe0b7d0f49beb8af620800000000e9350200004c8b7424404d8b6e284d89e44983ec027115488d64245048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b8b019630800000000ff124889c2488b0424ff124989c641564c8b7424504d8b76184c8b6c24484983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424584d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be281d6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd581d6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd901d6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec81d6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001e6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be301e6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd601e6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@1984,1,@15954|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 213,0,@1308 251,0,@105 334,0,@1308 372,0,@105 424,0,@15101 476,0,@11132 573,0,@1308 611,0,@105 663,0,@15175 715,0,@11140 812,0,@1308 849,0,@105 899,0,@15099 933,0,@1308 971,0,@105 1023,0,@15101 1036,0,@2008 1087,0,@105 1181,0,@1311 1230,0,@866 1274,0,@2041 1319,0,@866 1363,0,@1315 1451,0,@866 1496,0,@2043 1544,0,@866 1589,0,@1315 1677,0,@866 1721,0,@1313 1766,0,@866 1810,0,@1315 1898,0,@866 1943,0,@2045 1991,0,@866 2036,0,@1315 2124,0,@866 2168,0,@2047 2217,0,@866 2261,0,@1315 2349,0,@866 2394,0,@2049 2438,0,@866 2483,0,@1315 2571,0,@866 2615,0,@2051 2664,0,@1318 2809,0,@866 2854,0,@2053 11132:D3,144|483b65187305ff5558cd054989d55049be8805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bdc8e19509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@2006,1,@15944|17,0,@15180 65,0,@11138 11133:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b72084c89700849bec8d79509000000004c8930c3f400000000|@122,1,@15941|55,0,@11134 11134:D4,88|483b65187305ff5558cd054c8b40084c8b72104d8b7608488b00498d5fe8483b5d107306ff5550ca05414989df48c743f8020000004c89730849be50d89509000000004c89334c8b4a08ff2520000000f400000000000000|@1975,1,@15938,@11136|59,0,@11135 11135:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@1998,1,@15937| 11136:D4,1496|483b65187306ff5558ca09034989c64889da4c89c34151498b064883fb017f10488d64240848b82007620800000000c34c8b6d384d8b6d1041f6c501756b4d8b5d004d8b65084d8b1b4d8b0b4d89ca4c3b0c2475434d89d54c3b2c2475254d8b63104d8d6ff04c3b6d107306ff5550ca0d504d89ef49c745f8010000004d896500eb2d488d64240848b87850620800000000488b5d08ff234d89e5483b65187306ff5558ca0d60eb8f49c7c50100000041f6c50175064d8b6d00eb0749c7c50100000041554c8b2c2441f6c50175274d8b5d004d8b65084d3bde750949c7c503000000eb184d89e5483b65187306ff5558ca0d60ebd349c7c5010000004983fd037510488d64241048b82007620800000000c3ff75084c8d2d400000004155488965084d8d67e84c3b65107306ff5550ca0d404d89e749c74424f8020000004c8b6c24104d896c24084d8934244c8b75384d8b5e104d89dee977010000488b65084883c408415e4c8975084c8b75384d8b5e104d89de41f6c60175794d8b264d8b6e084d8b14244d8b124c3b54240875534d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c74618010000004c8b2c244d896e10488d64240849bd281b6208000000004d896e084c8b2c244d892e488d6424084d893424e9ab0000004d89ee483b65187306ff5558ca0148eb814c8b6d384d8d77d84c3b75107306ff5550ca01284d89f749c746f80400000049c74618010000004c8b24244d896610488d64240849bc281b6208000000004d8966084c8b24244d8926488d6424084d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d8975104c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb80186308000000004c8958184c8960104c8968084c8930488b5d08ff2341f6c601756a4d8b164d8b6e084d8b0a4d8b094c3b4c241875454d8d77d84c3b75107306ff5550ca0d144d89f749c746f80400000049c74618010000004d89661049bd281b6208000000004d896e084c8b6c24184d892e4d8932e99e0000004d89ee483b65187306ff5558ca0d58eb904c8b6d384d8d77d84c3b75107306ff5550ca0d384d89f749c746f80400000049c74618010000004d89661049bc281b6208000000004d8966084c8b6424184d89264d8d67f04c3b65107306ff5550ca0d684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca0d384d89f749c746f8020000004d895e084d89264d8975104883eb02711048b8d006620800000000488b5d08ff23ff12ff15010200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50306208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8186308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004c8b75384d8b5e104d89de41f6c60175714d8b264d8b6e084d8b14244d8b124c3b542418754b4d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c74618010000004c8b6c24104d896e1049bd281b6208000000004d896e084c8b6c24184d892e4d893424e9a30000004d89ee483b65187306ff5558ca0148eb894c8b6d384d8d77d84c3b75107306ff5550ca01284d89f749c746f80400000049c74618010000004c8b6424104d89661049bc281b6208000000004d8966084c8b6424184d89264d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d8975104883c408415e4c8975084883c410c3f40000000000|@2003,1,@15939,@11137|39,0,@108 138,0,@621 266,0,@108 451,0,@224 555,0,@224 695,0,@1999 791,0,@224 881,0,@224 985,0,@105 1081,0,@444 1126,0,@2001 1283,0,@224 1379,0,@224 11137:D6,720|483b65187305ff5558cd014c8b304983fe010f85b20200004c8b682041f6c5010f850d0200004d8b75004d8b6d084983fd017501c34d8b2e4983fd070f855a0100004d8b6e084c3b2dab0200007502eb374d8b75004d89f44e8d3475010000004983fe03752349be381d620800000000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34c3b2d600200007502eb344d89e64e8d2465010000004983fc03752449bc3820620800000000498d7508498d7c240848c7c101000000483bc9f3a67402eb01c34c3b2d180200007502eb304e8d3475010000004983fe03752349be7018620800000000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08316208000000004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38316208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3c3f400000000|@2004,1,@15940,@195,@278,@246|104,0,@246 167,0,@278 228,0,@195 289,0,@451 338,0,@453 440,0,@451 489,0,@453 591,0,@451 640,0,@453 11138:D3,144|483b65187305ff5558cd054989d55049be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd80e29509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@1763,1,@15943|17,0,@15175 65,0,@11139 11139:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2005,1,@15942| 11140:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@15945| 11141:D3,1128|483b65187305ff5558cd01504c8b34244d8b6e084d89ec4983fd017d14488d64240849bdb8af620800000000e9c60300004d89f64d8b2e4d8b6d084983ec027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8e819630800000000ff124889c2488b0424ff124989c641564c8b7424104d8b6e084d89ec4983fd037d0f49beb8af620800000000e9530200004d89f64d8b2e4d8b6d004983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8801a630800000000ff124889c2488b0424ff124989c641564c8b7424204d8b2e4d8b6d104d89f64d8b66084983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8101c630800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be801c6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb81c6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef01c6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@15953|36,0,@1308 72,0,@105 124,0,@15180 137,0,@2010 181,0,@1308 217,0,@105 269,0,@15180 282,0,@2016 338,0,@105 390,0,@15180 403,0,@2031 459,0,@1311 508,0,@866 552,0,@2035 597,0,@866 641,0,@1315 729,0,@866 774,0,@2037 822,0,@866 867,0,@1315 955,0,@866 999,0,@2039 1048,0,@1318 11142:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@15947|13,0,@15182 11143:D3,88|483b65187305ff5558cd014c8b304983fe03750c49be301a630800000000eb0a49be481a630800000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000000000|@122,1,@15946|22,0,@2013 34,0,@2014 11144:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8b81a630800000000ff124889c258ff22f400000000|@1763,1,@15950|14,0,@15175 27,0,@2018 11145:D3,1760|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb8af620800000000e9410600004d89ed4d8b75004d8b76084d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d8b75084d89f44983fe037d0f49beb8af620800000000e9df0400004d89ed4d8b75004d8b76184d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24104d8b75084d89f44983fe057d0f49bdb8af620800000000e9820300004d89ed4d8b75004d8b364d89e54983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24184d8b75084d89f44983fe077d0f49beb8af620800000000e9250200004d89ed4d8b75004d8b76104d89e54983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24204d8b75004d8b76204d89ed4d8b6d084983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@15949|36,0,@1308 76,0,@105 126,0,@15183 164,0,@1308 204,0,@105 254,0,@15183 292,0,@1308 331,0,@105 381,0,@15099 419,0,@1308 459,0,@105 509,0,@15183 560,0,@105 610,0,@15183 655,0,@1311 704,0,@866 748,0,@2021 793,0,@866 837,0,@1315 925,0,@866 970,0,@2023 1014,0,@866 1059,0,@1315 1147,0,@866 1191,0,@2025 1236,0,@866 1280,0,@1315 1368,0,@866 1413,0,@2027 1457,0,@866 1502,0,@1315 1590,0,@866 1634,0,@2029 1683,0,@1318 11146:D4,80|483b65187305ff5558cd01488b0048bae85c62080000000048c7c303000000ff15430000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@122,1,@15948,@10649|16,0,@707 11147:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8481c630800000000ff124889c258ff22f400000000|@1763,1,@15952|14,0,@15175 27,0,@2033 11148:D3,2200|483b65187305ff5558cd01504c8b34244d8b66084d89e54983fc017d14488d64240849bdd8f5620800000000e9f60700004d89f64d8b2641ff34244d89ee4983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@15951|36,0,@1756 77,0,@105 111,0,@1308 149,0,@105 199,0,@15183 233,0,@1308 271,0,@105 321,0,@15183 355,0,@1308 392,0,@105 442,0,@15099 476,0,@1308 514,0,@105 564,0,@15183 609,0,@105 659,0,@15183 704,0,@1311 752,0,@866 797,0,@2021 841,0,@866 886,0,@1315 974,0,@866 1018,0,@2023 1063,0,@866 1107,0,@1315 1195,0,@866 1240,0,@2025 1284,0,@866 1329,0,@1315 1417,0,@866 1461,0,@2027 1506,0,@866 1550,0,@1315 1638,0,@866 1683,0,@2029 1731,0,@1318 1840,0,@105 1890,0,@15099 1935,0,@1985 1983,0,@866 2028,0,@1315 2120,0,@1987 11149:D3,5728|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8708c620800000000c34c8b304d89f44d8b364983fe017510488d64240848b8681f630800000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc037510488d64240848b84020630800000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd050f85840300004d89f54d8b750841ff75104983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9120200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20216308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50216308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80216308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe070f85fe03000041ff7424084d8b7424104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e98d0200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bdd80f9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90226308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8226308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00236308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc090f857f0200004d8b6d084d89f44983ec027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24084d8b6d184d896e0849bdc8129609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08246308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40246308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd0b0f851f0700004d8b6e0841ff761041ff761841ff76204983ec0241547115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242849bdb8af620800000000e9a80500004d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd08139609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9e00300004d89f64983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7618498b16ff124989c641564c8b7424184d89f54983fe057d0f49bdb8af620800000000e98e0200004d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d204d896e0849bd48139609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284983ee027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424404c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be901d6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20256308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50256308000000004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80256308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c341ff76084d8b76104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e98e0200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd20159609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8266308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0266308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@2005,1,@15961|32,0,@1044 63,0,@2061 88,0,@1044 117,0,@2068 142,0,@1044 194,0,@105 228,0,@1308 257,0,@105 342,0,@105 441,0,@1311 489,0,@866 534,0,@2075 578,0,@866 623,0,@1315 711,0,@866 755,0,@2077 804,0,@1318 949,0,@866 994,0,@2079 1084,0,@1044 1134,0,@105 1168,0,@1308 1197,0,@105 1282,0,@105 1339,0,@15175 1391,0,@11150 1504,0,@1311 1552,0,@866 1597,0,@2088 1641,0,@866 1686,0,@1315 1774,0,@866 1818,0,@2090 1867,0,@1318 2012,0,@866 2057,0,@2092 2147,0,@1044 2193,0,@105 2245,0,@15175 2297,0,@11151 2410,0,@1311 2459,0,@866 2503,0,@2100 2548,0,@1318 2693,0,@866 2738,0,@2102 2828,0,@1044 2885,0,@105 2919,0,@1308 2948,0,@105 3000,0,@15175 3052,0,@11152 3149,0,@1308 3178,0,@105 3266,0,@1308 3295,0,@105 3352,0,@15175 3404,0,@11153 3503,0,@105 3558,0,@15099 3603,0,@1311 3651,0,@866 3696,0,@1313 3740,0,@866 3785,0,@1315 3873,0,@866 3917,0,@2045 3966,0,@866 4010,0,@1315 4098,0,@866 4143,0,@2109 4187,0,@866 4232,0,@1315 4320,0,@866 4364,0,@2111 4413,0,@1318 4558,0,@866 4603,0,@2113 4693,0,@1044 4725,0,@105 4759,0,@1308 4788,0,@105 4838,0,@15186 4874,0,@105 4931,0,@15180 4983,0,@11155 5096,0,@1311 5144,0,@866 5189,0,@2122 5233,0,@866 5278,0,@1315 5366,0,@866 5410,0,@2124 5459,0,@1318 5604,0,@866 5649,0,@2126 11150:D3,712|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb8af620800000000e9270200004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60226308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@15955|37,0,@1308 76,0,@105 126,0,@15099 177,0,@105 271,0,@1311 319,0,@866 364,0,@2086 408,0,@866 453,0,@1315 541,0,@866 585,0,@1313 634,0,@1318 11151:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2099,1,@15956| 11152:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2005,1,@15957| 11153:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@15958| 11154:D5,352|483b65187305ff5558cd01488b18f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153d01000048bae85c62080000000048c7c305000000ff151e0100004989c54d8b75004a8d0c75010000004883f901750f49be7026630800000000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1daa0000000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646083041c646097741c6460a78498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@122,1,@15959,@10649,@10599|53,0,@651 69,0,@707 113,0,@2121 322,0,@117 11155:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2005,1,@15960| 11156:D6,1552|483b65187305ff5558cd054989d54c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b184d89de4d8b1b4983fb010f85e60200004d8b6e0841ff76104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8f5620800000000e9770100004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b8e027630800000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18286308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e34983fc037d0b48b8708c620800000000c34d8b66084983eb02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be8805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bdf81b9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38296308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@2143,1,@15964,@435,@433,@427|29,0,@1044 80,0,@105 114,0,@1756 143,0,@105 195,0,@15175 208,0,@2134 250,0,@105 305,0,@15182 350,0,@1985 398,0,@866 443,0,@1315 535,0,@1987 680,0,@866 725,0,@2136 810,0,@1044 831,0,@105 883,0,@15180 931,0,@11158 1182,0,@2144 1230,0,@1021 1275,0,@1987 1426,0,@866 1471,0,@2145 11157:D3,32|483b65187305ff5558cd0149be7800110a00000000498b16ff22f40000000000|@727,1,@15962|13,0,@15099 11158:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2143,1,@15963| 11159:D6,6576|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284d89ec4d8b6d004983fd010f859307000041ff7424084983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd282a6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64d8b24244983fc030f859207000041ff76084983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd082b6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54d8b364983fe050f85600200004d8b75084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b359e090000750949c7c603000000eb2b4c3b3584090000750949c7c603000000eb194c3b356a090000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde02b6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8708c620800000000c341ff75084983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc02c6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@2007,1,@15965,@435,@433,@427|26,0,@1044 75,0,@105 109,0,@1308 147,0,@105 197,0,@15183 231,0,@1308 269,0,@105 319,0,@15183 353,0,@1308 390,0,@105 440,0,@15099 474,0,@1308 512,0,@105 562,0,@15183 607,0,@105 657,0,@15183 702,0,@1311 751,0,@866 795,0,@2021 840,0,@866 884,0,@1315 972,0,@866 1017,0,@2023 1061,0,@866 1106,0,@1315 1194,0,@866 1238,0,@2025 1283,0,@866 1327,0,@1315 1415,0,@866 1460,0,@2027 1504,0,@866 1549,0,@1315 1637,0,@866 1681,0,@2029 1730,0,@1318 1875,0,@866 1920,0,@2153 2005,0,@1044 2050,0,@105 2084,0,@1308 2122,0,@105 2172,0,@15183 2206,0,@1308 2244,0,@105 2294,0,@15183 2328,0,@1308 2365,0,@105 2415,0,@15099 2449,0,@1308 2487,0,@105 2537,0,@15183 2582,0,@105 2632,0,@15183 2677,0,@1311 2726,0,@866 2770,0,@2021 2815,0,@866 2859,0,@1315 2947,0,@866 2992,0,@2023 3036,0,@866 3081,0,@1315 3169,0,@866 3213,0,@2025 3258,0,@866 3302,0,@1315 3390,0,@866 3435,0,@2027 3479,0,@866 3524,0,@1315 3612,0,@866 3656,0,@2029 3705,0,@1318 3850,0,@866 3895,0,@2160 3980,0,@1044 4017,0,@105 4067,0,@15183 4250,0,@2144 4298,0,@1021 4343,0,@1987 4494,0,@866 4539,0,@2167 4624,0,@1044 4652,0,@105 4686,0,@1308 4724,0,@105 4774,0,@15183 4808,0,@1308 4846,0,@105 4896,0,@15183 4930,0,@1308 4967,0,@105 5017,0,@15099 5051,0,@1308 5089,0,@105 5139,0,@15183 5184,0,@105 5234,0,@15183 5279,0,@1311 5328,0,@866 5372,0,@2021 5417,0,@866 5461,0,@1315 5549,0,@866 5594,0,@2023 5638,0,@866 5683,0,@1315 5771,0,@866 5815,0,@2025 5860,0,@866 5904,0,@1315 5992,0,@866 6037,0,@2027 6081,0,@866 6126,0,@1315 6214,0,@866 6258,0,@2029 6307,0,@1318 6452,0,@866 6497,0,@2174 11160:D3,1064|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b204d89e641f6c4010f85870300004d89f44d8b342441ff7424084983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb8af620800000000e9140200004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb02d6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee82d6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd202e6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe01750b48b8e02e630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b8c02f630800000000c34983fe037d0b48b8708c620800000000c348b8a030630800000000c3f400000000|@2213,1,@15966|26,0,@1044 78,0,@105 112,0,@1308 141,0,@105 191,0,@15182 227,0,@105 282,0,@15183 327,0,@1311 375,0,@866 420,0,@2182 464,0,@866 509,0,@1315 597,0,@866 641,0,@2184 690,0,@1318 835,0,@866 880,0,@2186 965,0,@1044 985,0,@2192 1005,0,@1044 1022,0,@2199 1039,0,@1044 1050,0,@2206 11161:D12,3912|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c34c8b284d89ec4d8b6d004983fd010f8566020000488d6424084d8b6c24084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35c80e0000750949c7c603000000eb2b4c3b35ae0e0000750949c7c603000000eb194c3b35940e0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8316308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc030f8565020000488d6424084d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2806110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35210c0000750949c7c603000000eb2b4c3b35070c0000750949c7c603000000eb194c3b35ed0b0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18966308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe050f85ba030000488d6424084d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e9430200004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8f096630800000000ff124889c2488b0424ff124989c641564c8b6c24104983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be8805110a00000000498b1648b84897630800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd189b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8366308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd489b6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd070f85690200004d8b6c24084983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3593050000750949c7c603000000eb2b4c3b3579050000750949c7c603000000eb194c3b355f050000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd209c6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d8b74240841ff7424104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9130200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8366308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd009d6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@3110,1,@16020,@435,@433,@427,@435,@433,@427,@435,@433,@427|32,0,@1044 79,0,@105 129,0,@15183 312,0,@2144 360,0,@1021 405,0,@1987 556,0,@866 601,0,@2215 691,0,@1044 734,0,@105 784,0,@15190 967,0,@2144 1015,0,@1021 1060,0,@1987 1211,0,@866 1256,0,@3042 1346,0,@1044 1402,0,@105 1436,0,@1308 1465,0,@105 1517,0,@15180 1530,0,@3049 1572,0,@105 1629,0,@15180 1642,0,@3052 1698,0,@1311 1746,0,@866 1791,0,@3087 1835,0,@866 1880,0,@1315 1968,0,@866 2012,0,@2257 2061,0,@1318 2206,0,@866 2251,0,@3089 2341,0,@1044 2385,0,@105 2621,0,@2144 2669,0,@1021 2714,0,@1987 2865,0,@866 2910,0,@3096 3000,0,@1044 3034,0,@105 3068,0,@1308 3097,0,@105 3147,0,@15183 3183,0,@105 3282,0,@1311 3330,0,@866 3375,0,@2523 3419,0,@866 3464,0,@1315 3552,0,@866 3596,0,@2257 3645,0,@1318 3790,0,@866 3835,0,@3103 11162:D12,30616|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8708c620800000000c34c8b204d89e64d8b24244983fc010f85de0400004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9650300004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9130200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0326308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08336308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40336308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70336308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe030f858d07000041ff75084983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9220600004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9c80400004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9720300004c8b7424184d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91b0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7610498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98346308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0346308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00356308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38356308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68356308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98356308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd050f850404000041ff7424084d8b6c24104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9930200004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e04c3b75107305ff5550cd044d89f749c746f8030000004c8b6c24184d8b65184d8966104d89ed4d8b6d084d896e0849bd38c29609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38396308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68396308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0396308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc070f85df0400004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9660300004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be5806110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0346308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38356308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68356308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58566308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe090f85bf0e000041ff750841ff751041ff751841ff75204983ec0241547115488d64243048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64243049bdb8af620800000000e9480d00004d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9ef0300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb8af620800000000e9960200004c8b7424204d8b6e084d89e44983ec027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d084d896e0849bdc8eb9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d8b76104c8b6c24184983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be80576308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0576308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9ac0700004d89f64983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bea806110a00000000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb8af620800000000e9590600004d89f64983ee027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c89304c8b7424384d8b7608498b16ff124989c641564c8b7424184983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9f00300004c8b7424284d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e9960200004c8b7424304d8b6e084d89e44983ec027115488d64245848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d084d896e0849bda8ee9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424404d8b76104c8b6c24184983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50576308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80576308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0576308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf85a6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be305b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd605b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be905b6308000000004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc85b6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd0b0f85d00300004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdd8f5620800000000e95a0200004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8f5620800000000e9610100004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda85c6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc0d0f85f5020000488d6424084d89f44d8b74240841ff7424104983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e97c0100004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb806110a00000000498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be3805110a00000000498b1648b8a05e630800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd185f6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe0f0f85520500004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb8af620800000000e9dc0300004d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd20fb9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7608498b16ff124989c641564c8b7424184983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be4806110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef05f6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28606308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60606308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98606308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd110f85690200004d8b6c24084983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35a4450000750949c7c603000000eb2b4c3b358a450000750949c7c603000000eb194c3b3570450000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70616308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc137510488d64240848b84862630800000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe150f85d904000041ff750841ff75104d8b75184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9660300004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9130200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28636308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60636308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90636308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8636308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd170f85dd0400004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9670300004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9150200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bea805110a00000000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50576308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0646308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0576308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8646308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc190f85fd0c000041ff76084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9920b00004c8b7424084d8b6e204d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd58fd9609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9c10900004c8b7424184d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424184d89f44983fe057d0f49bdb8af620800000000e96c0800004c8b7424204d8b6e184d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d204d896e0849bd50009709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49beb8af620800000000e99b0600004c8b7424304d8b76284d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7628498b16ff124989c641564c8b7424304d89f54983fe097d0f49bdb8af620800000000e9450500004c8b7424384d8b76304d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d89f54983fe0b7d0f49beb8af620800000000e9ed0300004c8b7424404d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424404d89f44983fe0d7d0f49bdb8af620800000000e9960200004c8b7424484d8b6e104d89e44983ec027115488d64245848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d184d896e0849bd90009709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424584d8b76384c8b6c24504983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf05f6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0656308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00666308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38666308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70666308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8666308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8666308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10676308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe1b0f85cc07000041ff750841ff75104983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb8af620800000000e95d0600004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9ef0300004c8b7424104d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb8af620800000000e9960200004c8b7424184d8b6e084d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bdd0009709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d8b76104c8b6c24184983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be80576308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0576308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bed806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd605b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be48706308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80706308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd1d0f85e30200004d8b6c24084d89f44983ec027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdb8069709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424104d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3524230000750949c7c603000000eb2b4c3b350a230000750949c7c603000000eb194c3b35f0220000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60716308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc1f0f85450300004d8b660841ff76104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e9d60100004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d304d896e0849bdf0089709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60726308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe210f85680200004d8b75084983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b350c1d0000750949c7c603000000eb2b4c3b35f21c0000750949c7c603000000eb194c3b35d81c0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38736308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd230f85dc04000041ff74240841ff7424104d8b6c24184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9660300004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bee806110a00000000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10756308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40756308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70756308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8756308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc250f852309000041ff760841ff761041ff76184983ed0241557115488d64242848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242849bdb8af620800000000e9b00700004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9ef0300004c8b7424104d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb8af620800000000e9960200004c8b7424184d8b6e084d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bdb80c9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d8b76104c8b6c24184983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be80576308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0576308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed806110a00000000498b16ff124989c641564c8b7424104983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88266308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd605b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be48706308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88766308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe270f85da04000041ff750841ff75104d8b75184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9670300004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bee805110a00000000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8426308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68776308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98776308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8776308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd290f85fa0300004d8b6c240841ff7424104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9890200004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdf80c9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0646308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0786308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0786308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d8b74240841ff7424104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9130200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0346308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68356308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10866308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@2518,1,@15997,@435,@433,@427,@435,@433,@427,@435,@433,@427|32,0,@1044 94,0,@105 128,0,@1308 157,0,@105 240,0,@1308 269,0,@105 359,0,@105 458,0,@1311 507,0,@866 551,0,@2223 596,0,@866 640,0,@1315 728,0,@866 773,0,@2225 817,0,@866 862,0,@1315 950,0,@866 994,0,@2227 1043,0,@1318 1188,0,@866 1233,0,@2229 1323,0,@1044 1367,0,@105 1401,0,@1308 1438,0,@105 1521,0,@1308 1559,0,@105 1642,0,@1308 1680,0,@105 1763,0,@1308 1801,0,@105 1895,0,@105 1989,0,@1311 2038,0,@866 2082,0,@2237 2127,0,@866 2171,0,@1315 2259,0,@866 2304,0,@2239 2348,0,@866 2393,0,@1315 2481,0,@866 2525,0,@2241 2570,0,@866 2614,0,@1315 2702,0,@866 2747,0,@2243 2791,0,@866 2836,0,@1315 2924,0,@866 2968,0,@2245 3017,0,@1318 3162,0,@866 3207,0,@2247 3297,0,@1044 3348,0,@105 3382,0,@1308 3411,0,@105 3463,0,@15175 3526,0,@11163 3625,0,@105 3724,0,@1311 3772,0,@866 3817,0,@2276 3861,0,@866 3906,0,@1315 3994,0,@866 4038,0,@2278 4087,0,@1318 4232,0,@866 4277,0,@2280 4367,0,@1044 4426,0,@105 4460,0,@1308 4489,0,@105 4572,0,@1308 4601,0,@105 4691,0,@105 4746,0,@15193 4791,0,@1311 4840,0,@866 4884,0,@2239 4929,0,@866 4973,0,@1315 5061,0,@866 5106,0,@2243 5150,0,@866 5195,0,@1315 5283,0,@866 5327,0,@2245 5376,0,@1318 5521,0,@866 5566,0,@2511 5656,0,@1044 5712,0,@105 5746,0,@1308 5777,0,@105 5811,0,@1308 5848,0,@105 5931,0,@1308 5969,0,@105 6021,0,@15101 6073,0,@11171 6181,0,@105 6231,0,@15186 6276,0,@1311 6324,0,@866 6369,0,@2519 6413,0,@866 6458,0,@1315 6546,0,@866 6590,0,@2521 6639,0,@866 6683,0,@1315 6771,0,@866 6816,0,@2523 6864,0,@1318 6956,0,@1308 6985,0,@105 7040,0,@15198 7074,0,@1308 7103,0,@105 7195,0,@105 7229,0,@1308 7266,0,@105 7349,0,@1308 7387,0,@105 7439,0,@15101 7491,0,@11173 7599,0,@105 7649,0,@15186 7694,0,@1311 7743,0,@866 7787,0,@2519 7832,0,@866 7876,0,@1315 7964,0,@866 8009,0,@2521 8057,0,@866 8102,0,@1315 8190,0,@866 8234,0,@2523 8283,0,@1318 8386,0,@1311 8434,0,@866 8479,0,@2550 8523,0,@866 8568,0,@1315 8656,0,@866 8700,0,@2552 8745,0,@866 8789,0,@1315 8877,0,@866 8922,0,@2554 8966,0,@866 9011,0,@1315 9099,0,@866 9143,0,@2556 9192,0,@1318 9337,0,@866 9382,0,@2558 9472,0,@1044 9528,0,@105 9562,0,@1756 9591,0,@105 9674,0,@1756 9703,0,@105 9793,0,@105 9892,0,@1985 9941,0,@866 9985,0,@1315 10073,0,@866 10118,0,@1315 10210,0,@1987 10355,0,@866 10400,0,@2565 10490,0,@1044 10549,0,@105 10583,0,@1756 10612,0,@105 10662,0,@15199 10698,0,@105 10755,0,@15175 10768,0,@2582 10824,0,@1985 10872,0,@866 10917,0,@1315 11009,0,@1987 11154,0,@866 11199,0,@2586 11289,0,@1044 11344,0,@105 11378,0,@1308 11407,0,@105 11459,0,@15175 11511,0,@11179 11608,0,@1308 11637,0,@105 11727,0,@105 11782,0,@15192 11827,0,@1311 11876,0,@866 11920,0,@2593 11965,0,@866 12009,0,@1315 12097,0,@866 12142,0,@2595 12186,0,@866 12231,0,@1315 12319,0,@866 12363,0,@2597 12412,0,@1318 12557,0,@866 12602,0,@2599 12692,0,@1044 12736,0,@105 12972,0,@2144 13020,0,@1021 13065,0,@1987 13216,0,@866 13261,0,@2606 13351,0,@1044 13380,0,@2613 13405,0,@1044 13457,0,@105 13491,0,@1308 13520,0,@105 13570,0,@15183 13604,0,@1308 13633,0,@105 13723,0,@105 13822,0,@1311 13871,0,@866 13915,0,@2620 13960,0,@866 14004,0,@1315 14092,0,@866 14137,0,@2622 14181,0,@866 14226,0,@1315 14314,0,@866 14358,0,@2624 14407,0,@1318 14552,0,@866 14597,0,@2626 14687,0,@1044 14743,0,@105 14777,0,@1308 14806,0,@105 14889,0,@1308 14918,0,@105 14973,0,@15182 15009,0,@105 15064,0,@15183 15109,0,@1311 15158,0,@866 15202,0,@2519 15247,0,@866 15291,0,@1315 15379,0,@866 15424,0,@2633 15468,0,@866 15513,0,@1315 15601,0,@866 15645,0,@2523 15694,0,@1318 15839,0,@866 15884,0,@2635 15974,0,@1044 16019,0,@105 16053,0,@1308 16091,0,@105 16143,0,@15175 16195,0,@11180 16292,0,@1308 16329,0,@105 16412,0,@1308 16450,0,@105 16502,0,@15175 16554,0,@11182 16651,0,@1308 16689,0,@105 16772,0,@1308 16810,0,@105 16860,0,@15183 16894,0,@1308 16932,0,@105 16982,0,@15099 17016,0,@1308 17054,0,@105 17106,0,@15175 17158,0,@11183 17266,0,@105 17316,0,@15192 17361,0,@1311 17409,0,@866 17454,0,@2593 17498,0,@866 17543,0,@1315 17631,0,@866 17675,0,@2643 17724,0,@866 17768,0,@1315 17856,0,@866 17901,0,@1313 17945,0,@866 17990,0,@1315 18078,0,@866 18122,0,@2645 18167,0,@866 18211,0,@1315 18299,0,@866 18344,0,@2647 18388,0,@866 18433,0,@1315 18521,0,@866 18565,0,@2649 18614,0,@866 18658,0,@1315 18746,0,@866 18791,0,@2651 18835,0,@866 18880,0,@1315 18968,0,@866 19012,0,@2653 19061,0,@1318 19206,0,@866 19251,0,@2655 19341,0,@1044 19389,0,@105 19423,0,@1308 19454,0,@105 19488,0,@1308 19525,0,@105 19608,0,@1308 19646,0,@105 19698,0,@15101 19750,0,@11184 19858,0,@105 19908,0,@15186 19953,0,@1311 20001,0,@866 20046,0,@2519 20090,0,@866 20135,0,@1315 20223,0,@866 20267,0,@2521 20316,0,@866 20360,0,@1315 20448,0,@866 20493,0,@2523 20541,0,@1318 20635,0,@105 20690,0,@15201 20735,0,@1311 20783,0,@866 20828,0,@2554 20872,0,@866 20917,0,@1315 21005,0,@866 21049,0,@2729 21098,0,@1318 21243,0,@866 21288,0,@2731 21378,0,@1044 21425,0,@105 21477,0,@15175 21529,0,@11186 21780,0,@2144 21828,0,@1021 21873,0,@1987 22024,0,@866 22069,0,@2738 22159,0,@1044 22208,0,@105 22242,0,@1756 22271,0,@105 22323,0,@15175 22375,0,@11187 22474,0,@105 22573,0,@1985 22621,0,@866 22666,0,@1315 22758,0,@1987 22903,0,@866 22948,0,@2746 23038,0,@1044 23080,0,@105 23316,0,@2144 23364,0,@1021 23409,0,@1987 23560,0,@866 23605,0,@2753 23695,0,@1044 23751,0,@105 23785,0,@1308 23814,0,@105 23897,0,@1308 23926,0,@105 23981,0,@15202 24017,0,@105 24116,0,@1311 24165,0,@866 24209,0,@2770 24254,0,@866 24298,0,@1315 24386,0,@866 24431,0,@2772 24475,0,@866 24520,0,@1315 24608,0,@866 24652,0,@2774 24701,0,@1318 24846,0,@866 24891,0,@2776 24981,0,@1044 25034,0,@105 25068,0,@1308 25099,0,@105 25133,0,@1308 25170,0,@105 25253,0,@1308 25291,0,@105 25343,0,@15101 25395,0,@11190 25503,0,@105 25553,0,@15186 25598,0,@1311 25646,0,@866 25691,0,@2519 25735,0,@866 25780,0,@1315 25868,0,@866 25912,0,@2521 25961,0,@866 26005,0,@1315 26093,0,@866 26138,0,@2523 26186,0,@1318 26278,0,@1308 26307,0,@105 26362,0,@15201 26398,0,@105 26497,0,@1311 26546,0,@866 26590,0,@2122 26635,0,@866 26679,0,@1315 26767,0,@866 26812,0,@2554 26856,0,@866 26901,0,@1315 26989,0,@866 27033,0,@2729 27082,0,@1318 27227,0,@866 27272,0,@2783 27362,0,@1044 27414,0,@105 27448,0,@1308 27477,0,@105 27527,0,@15186 27561,0,@1308 27590,0,@105 27645,0,@15186 27681,0,@105 27780,0,@1311 27829,0,@866 27873,0,@2351 27918,0,@866 27962,0,@1315 28050,0,@866 28095,0,@2790 28139,0,@866 28184,0,@1315 28272,0,@866 28316,0,@2792 28365,0,@1318 28510,0,@866 28555,0,@2794 28645,0,@1044 28696,0,@105 28730,0,@1308 28759,0,@105 28811,0,@15175 28863,0,@11191 28962,0,@105 29017,0,@15182 29062,0,@1311 29110,0,@866 29155,0,@2633 29199,0,@866 29244,0,@1315 29332,0,@866 29376,0,@2801 29425,0,@1318 29570,0,@866 29615,0,@2803 29705,0,@1044 29739,0,@105 29773,0,@1308 29802,0,@105 29887,0,@105 29942,0,@15203 29987,0,@1311 30035,0,@866 30080,0,@2239 30124,0,@866 30169,0,@1315 30257,0,@866 30301,0,@2245 30350,0,@1318 30495,0,@866 30540,0,@2910 11163:D3,1632|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdd8f5620800000000e9bf0500004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9ef0300004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb8af620800000000e9940200004c8b7424104d8b2e4d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d104d896e0849bdc0c89609000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d8b76104c8b6c24184983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98366308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8366308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@15969|37,0,@1756 78,0,@105 112,0,@1308 150,0,@105 200,0,@15183 234,0,@1308 271,0,@105 323,0,@15175 375,0,@11164 483,0,@105 577,0,@1311 625,0,@866 670,0,@2122 714,0,@866 759,0,@1315 847,0,@866 891,0,@2255 940,0,@866 984,0,@1315 1072,0,@866 1117,0,@2257 1165,0,@1318 1274,0,@105 1324,0,@15192 1369,0,@1985 1417,0,@866 1462,0,@1315 1554,0,@1987 11164:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@15967| 11165:D3,88|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284983fd01750b48b80837630800000000c34983fe037d0b48b8708c620800000000c348b83038630800000000c3f400000000|@2275,1,@15968|26,0,@1044 46,0,@2260 63,0,@1044 74,0,@2268 11166:D33,7584|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c34c8b204d89e54d8b24244983fc017510488d64240848b8b03a630800000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd030f85680200004d8b76084983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35901d0000750949c7c603000000eb2b4c3b35761d0000750949c7c603000000eb194c3b355c1d0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd983b6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe050f85690200004d8b7424084983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e61a0000750949c7c603000000eb2b4c3b35cc1a0000750949c7c603000000eb194c3b35b21a0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd803c6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc070f85680200004d8b6d084983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b353c180000750949c7c603000000eb2b4c3b3522180000750949c7c603000000eb194c3b3508180000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd603d6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd090f85680200004d8b76084983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7618488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3592150000750949c7c603000000eb2b4c3b3578150000750949c7c603000000eb194c3b355e150000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd483e6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe0b0f85690200004d8b7424084983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e8120000750949c7c603000000eb2b4c3b35ce120000750949c7c603000000eb194c3b35b4120000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd283f6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc0d0f85680200004d8b6d084983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b353e100000750949c7c603000000eb2b4c3b3524100000750949c7c603000000eb194c3b350a100000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08406308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd0f0f85680200004d8b76084983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35940d0000750949c7c603000000eb2b4c3b357a0d0000750949c7c603000000eb194c3b35600d0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8406308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe110f85690200004d8b7424084983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35ea0a0000750949c7c603000000eb2b4c3b35d00a0000750949c7c603000000eb194c3b35b60a0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8416308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc130f858203000041ff75084d8b6d104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdb8af620800000000e9130200004d89f64983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8426308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8426308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10436308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd150f85680200004d8b76084983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7618488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3594040000750949c7c603000000eb2b4c3b357a040000750949c7c603000000eb194c3b3560040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0436308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d8b76084983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fb010000750949c7c603000000eb2b4c3b35e1010000750949c7c603000000eb194c3b35c7010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0446308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@2376,1,@15970,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427|32,0,@1044 64,0,@2288 89,0,@1044 132,0,@105 368,0,@2144 416,0,@1021 461,0,@1987 612,0,@866 657,0,@2295 747,0,@1044 790,0,@105 1026,0,@2144 1074,0,@1021 1119,0,@1987 1270,0,@866 1315,0,@2302 1405,0,@1044 1448,0,@105 1684,0,@2144 1732,0,@1021 1777,0,@1987 1928,0,@866 1973,0,@2309 2063,0,@1044 2106,0,@105 2342,0,@2144 2390,0,@1021 2435,0,@1987 2586,0,@866 2631,0,@2316 2721,0,@1044 2764,0,@105 3000,0,@2144 3048,0,@1021 3093,0,@1987 3244,0,@866 3289,0,@2323 3379,0,@1044 3422,0,@105 3658,0,@2144 3706,0,@1021 3751,0,@1987 3902,0,@866 3947,0,@2330 4037,0,@1044 4080,0,@105 4316,0,@2144 4364,0,@1021 4409,0,@1987 4560,0,@866 4605,0,@2337 4695,0,@1044 4738,0,@105 4974,0,@2144 5022,0,@1021 5067,0,@1987 5218,0,@866 5263,0,@2344 5353,0,@1044 5402,0,@105 5436,0,@1308 5465,0,@105 5515,0,@15182 5551,0,@105 5650,0,@1311 5698,0,@866 5743,0,@2351 5787,0,@866 5832,0,@1315 5920,0,@866 5964,0,@2353 6013,0,@1318 6158,0,@866 6203,0,@2355 6293,0,@1044 6336,0,@105 6572,0,@2144 6620,0,@1021 6665,0,@1987 6816,0,@866 6861,0,@2362 6951,0,@1044 6977,0,@105 7213,0,@2144 7261,0,@1021 7306,0,@1987 7457,0,@866 7502,0,@2369 11167:D3,288|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b204d89e64983fc01750b48b8e045630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe03750b48b8b846630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd05750b48b89047630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc07750b48b86848630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe09750b48b84849630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd0b750b48b8284a630800000000c34983fe037d0b48b8708c620800000000c348b8004b630800000000c3f400000000|@2427,1,@15971|26,0,@1044 49,0,@2378 69,0,@1044 89,0,@2385 109,0,@1044 129,0,@2392 149,0,@1044 169,0,@2399 189,0,@1044 209,0,@2406 229,0,@1044 246,0,@2413 263,0,@1044 274,0,@2420 11168:D3,208|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284d89ec4983fd01750b48b8184c630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc03750b48b8f84c630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe05750b48b8d84d630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd07750b48b8b84e630800000000c34983fe037d0b48b8708c620800000000c348b8904f630800000000c3f400000000|@2464,1,@15972|26,0,@1044 49,0,@2429 69,0,@1044 89,0,@2436 109,0,@1044 129,0,@2443 149,0,@1044 166,0,@2450 183,0,@1044 194,0,@2457 11169:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b8a850630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b88851630800000000c34983fe037d0b48b8708c620800000000c348b86852630800000000c3f400000000|@2487,1,@15973|26,0,@1044 49,0,@2466 69,0,@1044 86,0,@2473 103,0,@1044 114,0,@2480 11170:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b88053630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b86054630800000000c34983fe037d0b48b8708c620800000000c348b84855630800000000c3f400000000|@2510,1,@15974|26,0,@1044 49,0,@2489 69,0,@1044 86,0,@2496 103,0,@1044 114,0,@2503 11171:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@15975| 11172:D3,632|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54983fc01750b48b8f057630800000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4983fd03750b48b8d858630800000000c34d89e54983fc037d0b48b8708c620800000000c34d8b364983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8596308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0596308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@2549,1,@15976|26,0,@1044 49,0,@2526 69,0,@1044 89,0,@2533 109,0,@1044 129,0,@105 179,0,@15182 224,0,@1311 273,0,@866 317,0,@2540 362,0,@1318 507,0,@866 552,0,@2542 11173:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@15977| 11174:D4,80|483b65187305ff5558cd01488b0048ba905d630800000000ff154a0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@122,1,@15980,@11175|16,0,@2573 11175:D8,2672|483b65187305ff5558cd054989c641f6c6010f841201000041f6c60174084983fe017d15eb184d0fb66eff4e8d2c6d010000004983fd2374054c89f0eb134c89f348b8f854620800000000ff15570a000048bae85c62080000000048c7c305000000ff15380a00004989c64d8b2e4a8d0c6d010000004883f901750b48b8c05d630800000000c34989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b109000077614d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640084cc6400949c6400a54498d7608488d780b48d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2341f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30ef6208000000004c89701849be60ef6208000000004c89701049bed05f6208000000004c8970084c8b72104c8930488b5d08ff234d0fb66eff4d89ec4e8d2c6d010000004981e5ff0100004983e5074983fd050f85ad010000488b52084c89f0ff124989c64d8b2e4e8d246d010000004983fc01750f49bdd85d630800000000e9ae0000004d89e34983c30c4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b155e0800000f873b0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd85d63080000000048c7c10d000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0e48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e017620800000000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8b07000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430228060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234d89e54e8d2465010000004981e4ff0100004983e4074983fc030f8579010000498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f8546208000000004156ff15de060000415e4989c541f6c5010f84130100004983ed014d6bed08711048b8d006620800000000488b5d08ff234983c5014983fd217d02eb0749c7c5210000004983fd0375204d0fb6364e8d2c750100000049be30096208000000004b8b44aefce9fa0400004983fd01750f48b8d808620800000000e9e50400004983fd010f8c910000004c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dec05000077564d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004d89eb49d1eb4d891c2449c7c301000000e94804000048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2348b80855620800000000488b5d08ff2341f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30ef6208000000004c89701849be60ef6208000000004c89701049bed05f6208000000004c8970084c8b72104c8930488b5d08ff234e8d2c6d010000004981e5ff0100004983e5074983fd010f859903000041f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30ef6208000000004c89701849be60ef6208000000004c89701049bed05f6208000000004c8970084c8b72104c8930488b5d08ff23498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1948b8f854620800000000524156ff1591040000415e5a4989c541f6c5010f84da0200004983fd037c0949c7c503000000eb0749c7c5010000004983fd030f85ca02000041f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30ef6208000000004c89701849be60ef6208000000004c89701049bed05f6208000000004c8970084c8b72104c8930488b5d08ff23498b06a801740949c7c603000000eb0749c7c6010000004983fe030f8437020000a8017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30ef6208000000004c89701849be60ef6208000000004c89701049bed05f6208000000004c8970084c8b72104c8930488b5d08ff234c0fb670ff4e8d3475010000004981e6ff0100004983e6074983fe05750949c7c603000000eb0749c7c6010000004983fe030f85aa010000488b5208ff124989c64d8b2e4e8d246d010000004983fc01750f49bdf05d630800000000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15bb0200000f873b0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbf05d63080000000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e017620800000000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de801000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430228060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff2348b8085e630800000000c348b80855620800000000488b5d08ff2348b8085e630800000000c34d3beb0f87f100000041806424ffbf4c89e048bbb007620800000000ff15620100004989c64d8b2e4e8d2c6d010000004983fd01750b48b8305e630800000000c34d89ec4983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc300000077774d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc305e63080000000048c7c113000000498d742408488d780848d1e9f3a44c89e9498d7608488d781148d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234d89d94983c1104d89da49d1ea4f0fb6141649d1e94788140c4d89da4983c2024d89d3483b65187306ff5558ca0078e9d2fefffff40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@2580,1,@15978,@10501,@10599,@10599,@10649,@10599|67,0,@651 83,0,@707 126,0,@2575 284,0,@117 332,0,@1712 346,0,@1713 360,0,@728 453,0,@2576 591,0,@2576 660,0,@189 821,0,@117 837,0,@117 938,0,@651 981,0,@105 1034,0,@126 1060,0,@123 1214,0,@117 1230,0,@120 1246,0,@652 1294,0,@1712 1308,0,@1713 1322,0,@728 1410,0,@1712 1424,0,@1713 1438,0,@728 1518,0,@651 1617,0,@1712 1631,0,@1713 1645,0,@728 1735,0,@1712 1749,0,@1713 1763,0,@728 1872,0,@2577 2010,0,@2577 2079,0,@189 2240,0,@117 2256,0,@117 2272,0,@2578 2283,0,@652 2299,0,@2578 2328,0,@114 2364,0,@2579 2492,0,@2579 2544,0,@117 11176:D3,72|49bb4803b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@2581,1,@15979|2,0,@35 11177:D3,32|483b65187305ff5558cd0149bec806110a00000000498b16ff22f40000000000|@2585,1,@15982|13,0,@15200 11178:D3,24|483b65187305ff5558cd0148b86052620800000000c3f400|@636,1,@15981|13,0,@634 11179:D3,528|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9700100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@15983|36,0,@1756 75,0,@105 170,0,@105 220,0,@15192 265,0,@1985 313,0,@866 358,0,@1315 450,0,@1987 11180:D3,656|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9ef0100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd10009709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@15985|37,0,@1756 76,0,@105 126,0,@15192 176,0,@105 228,0,@15175 280,0,@11181 393,0,@1985 441,0,@866 486,0,@1315 578,0,@1987 11181:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@15984| 11182:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2642,1,@15986| 11183:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@15987| 11184:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@15988| 11185:D3,1408|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304d89f44d8b364983fe01750b48b8f867630800000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc03750b48b8d868630800000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd05750b48b8b869630800000000c34d89e54983fc037d0b48b8708c620800000000c34d89f44d8b364983fe07750b48b8986a630800000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc09750b48b8786b630800000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd0b750b48b8586c630800000000c34d89e54983fc037d0b48b8708c620800000000c34d89f44d8b364983fe0d0f85fe0100004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be386d6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd706d6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc0f0f85fd0100004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be386d6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd506e6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b8306f630800000000c3f400000000000000|@2728,1,@15989|26,0,@1044 52,0,@2663 72,0,@1044 96,0,@2670 116,0,@1044 140,0,@2677 160,0,@1044 183,0,@2684 203,0,@1044 227,0,@2691 247,0,@1044 271,0,@2698 291,0,@1044 329,0,@105 379,0,@15182 424,0,@1311 473,0,@866 517,0,@2705 562,0,@1318 707,0,@866 752,0,@2707 837,0,@1044 875,0,@105 925,0,@15182 970,0,@1311 1019,0,@866 1063,0,@2705 1108,0,@1318 1253,0,@866 1298,0,@2714 1380,0,@1044 1391,0,@2721 11186:D3,528|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9700100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@15990|36,0,@1756 75,0,@105 170,0,@105 220,0,@15192 265,0,@1985 313,0,@866 358,0,@1315 450,0,@1987 11187:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2745,1,@15991| 11188:D4,32|483b65187305ff5558cd014c8b4008488b0048c7c301000000ff2519000000f4|@122,1,@15992,@11189| 11189:D3,784|483b65187306ff5558ca09014d89c34c8b304d89f44983ee02711048b8d006620800000000488b5d08ff234983fb017f0c49bd2074630800000000eb504d2bde711048b8d006620800000000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849bb68746308000000004d895d004983fc01756f4d8b6d004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98746308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89e24983ea024d89e14983e9024c89e14883e9024c8b58084989c849c1e8034983c80149d1e84f0fb61c034e8d1c5d010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d84983fb01750949c7c003000000eb0749c7c0010000004983f002498b7d004d8b5d086a016a014983fb0175334983c3027115488d64241048b8d006620800000000488b5d08ff2349b920746308000000004c890c244c895c2408e91a0100004983fb017d2d4983c3027115488d64241048b8d006620800000000488b5d08ff2348c70424010000004c895c2408e9e70000004983f803750c48be301a630800000000eb0a48be481a6308000000004d8d47e84c3b45107306ff5550cac17e4d89c749c740f8020000004989700849c700070000004d3bce745a4d8d4fe84c3b4d107306ff5550ca817d4d89cf49c741f8020000004989790848bf5030620800000000498939498d7fe8483b7d107306ff5550ca017f4989ff48c747f8020000004c894f0849b9d0746308000000004c890feb004d8d4fe84c3b4d107306ff5550ca817d4d89cf49c741f802000000498979084d89014983c3027115488d64241048b8d006620800000000488b5d08ff234c890c244c895c2408415941584d8d5fe84c3b5d107306ff5550ca01774d89df49c743f8020000004d8943084d890b4d89d44d89dd483b65187306ff5558ca0170e97afdfffff4000000000000|@2769,1,@15993|29,0,@105 51,0,@2761 68,0,@105 119,0,@2764 174,0,@2766 396,0,@105 412,0,@2761 453,0,@105 493,0,@2013 505,0,@2014 589,0,@444 633,0,@2768 693,0,@105 11190:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@15994| 11191:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@15995| 11192:D3,568|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284d89ec4983fd01750b48b8b879630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc03750b48b8987a630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe05750b48b8787b630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd07750b48b8587c630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc09750b48b8387d630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe0b750b48b8187e630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd0d750b48b8f87e630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc0f750b48b8d87f630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe11750b48b8b880630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd13750b48b89881630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc15750b48b87882630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe17750b48b85083630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd19750b48b82884630800000000c34983fe037d0b48b8708c620800000000c348b80885630800000000c3f400000000|@2909,1,@15996|26,0,@1044 49,0,@2811 69,0,@1044 89,0,@2818 109,0,@1044 129,0,@2825 149,0,@1044 169,0,@2832 189,0,@1044 209,0,@2839 229,0,@1044 249,0,@2846 269,0,@1044 289,0,@2853 309,0,@1044 329,0,@2860 349,0,@1044 369,0,@2867 389,0,@1044 409,0,@2874 429,0,@1044 449,0,@2881 469,0,@1044 489,0,@2888 509,0,@1044 526,0,@2895 543,0,@1044 554,0,@2902 11193:D9,1296|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be7806110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3584040000750949c7c603000000eb2b4c3b356a040000750949c7c603000000eb194c3b3550040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8866308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be8806110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0876308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@2932,1,@15998,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15195 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@2918 674,0,@1044 695,0,@105 745,0,@15196 928,0,@2144 976,0,@1021 1021,0,@1987 1172,0,@866 1217,0,@2925 11194:D3,2000|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8708c620800000000c34c8b204d89e64d8b24244983fc010f85c00300004d8b660841ff76104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e9510200004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bdf81c9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd381d9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8886308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe037510488d64240848b8d089630800000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd050f854d0300004d8b6c240841ff7424104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdd8f5620800000000e9dc0100004d89f64983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bd781d9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb08a6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084983fe037d0b48b8708c620800000000c348b8888b630800000000c3f40000000000|@2254,1,@16002|32,0,@1044 84,0,@105 118,0,@1756 147,0,@105 199,0,@15175 251,0,@11195 350,0,@105 407,0,@15175 459,0,@11196 572,0,@1985 620,0,@866 665,0,@1315 757,0,@1987 902,0,@866 947,0,@2934 1037,0,@1044 1065,0,@2941 1090,0,@1044 1141,0,@105 1175,0,@1756 1204,0,@105 1254,0,@15183 1290,0,@105 1347,0,@15175 1399,0,@11197 1512,0,@1985 1560,0,@866 1605,0,@1315 1697,0,@1987 1842,0,@866 1887,0,@2948 1974,0,@1044 1985,0,@2955 11195:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@15999| 11196:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2518,1,@16000| 11197:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16001| 11198:D12,1984|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b354c070000750949c7c603000000eb2b4c3b3532070000750949c7c603000000eb194c3b3518070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd788c6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d89f44d8b364983fe030f85610200004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35af040000750949c7c603000000eb2b4c3b3595040000750949c7c603000000eb194c3b357b040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd588d6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc050f85600200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3512020000750949c7c603000000eb2b4c3b35f8010000750949c7c603000000eb194c3b35de010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd388e6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b8188f630800000000c3f40000|@2642,1,@16003,@435,@433,@427,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15183 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@2963 674,0,@1044 712,0,@105 762,0,@15183 945,0,@2144 993,0,@1021 1038,0,@1987 1189,0,@866 1234,0,@2970 1319,0,@1044 1357,0,@105 1407,0,@15183 1590,0,@2144 1638,0,@1021 1683,0,@1987 1834,0,@866 1879,0,@2977 1961,0,@1044 1972,0,@2984 11199:D3,88|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284983fd01750b48b80890630800000000c34983fe037d0b48b8708c620800000000c348b8e090630800000000c3f400000000|@3006,1,@16004|26,0,@1044 46,0,@2992 63,0,@1044 74,0,@2999 11200:D9,4632|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8708c620800000000c34c8b304d89f54d8b364983fe010f85ab06000041ff75084d8b751041ff751841ff75204983ec0241547115488d64242848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb8af620800000000e9340500004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9e10300004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424284d8b7610498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb8af620800000000e98f0200004d89f64983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049beb805110a00000000498b16ff124989c641564c8b6c24184983ed027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24304d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d084d896e0849bdd8389709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98366308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18926308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48926308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8366308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78926308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd030f855605000041ff7424084d8b6c241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9e00300004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e98d0200004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd18399709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7610498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88266308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98366308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8366308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58936308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc050f85680200004d8b76084983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b352a050000750949c7c603000000eb2b4c3b3510050000750949c7c603000000eb194c3b35f6040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30946308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d8b6e084983ec027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77d04c3b75107305ff5550cd044d89f749c746f8050000004c8b6c24084d8b65104d8966204d89ed4d8b65204d8966184d89ed4d8b65184d8966104d89ed4d8b6d084d896e0849bd58399709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180700000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424104d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40956308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@2745,1,@16013,@435,@433,@427,@435,@433,@427|32,0,@1044 91,0,@105 125,0,@1308 154,0,@105 204,0,@15183 238,0,@1308 267,0,@105 355,0,@1308 384,0,@105 439,0,@15183 475,0,@105 532,0,@15175 584,0,@11201 697,0,@1311 745,0,@866 790,0,@2255 834,0,@866 879,0,@1315 967,0,@866 1011,0,@3008 1056,0,@866 1100,0,@1315 1188,0,@866 1233,0,@3010 1277,0,@866 1322,0,@1315 1410,0,@866 1454,0,@2257 1503,0,@1318 1648,0,@866 1693,0,@3012 1783,0,@1044 1839,0,@105 1873,0,@1308 1902,0,@105 1952,0,@15183 1986,0,@1308 2015,0,@105 2072,0,@15175 2124,0,@11202 2223,0,@105 2322,0,@1311 2371,0,@866 2415,0,@2122 2460,0,@866 2504,0,@1315 2592,0,@866 2637,0,@2255 2685,0,@866 2730,0,@1315 2818,0,@866 2862,0,@2257 2911,0,@1318 3056,0,@866 3101,0,@3019 3191,0,@1044 3234,0,@105 3470,0,@2144 3518,0,@1021 3563,0,@1987 3714,0,@866 3759,0,@3026 3849,0,@1044 3875,0,@105 3927,0,@15175 4012,0,@11203 4263,0,@2144 4311,0,@1021 4356,0,@1987 4507,0,@866 4552,0,@3035 11201:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16005| 11202:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16006| 11203:D3,4240|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb8af620800000000e9ec0f00004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d8b66084d89e54983fc037d0f49beb8af620800000000e98a0e00004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb8af620800000000e9920b00004c8b7424084d8b6e204d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd104a9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49bdb8af620800000000e9c20900004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7620498b16ff124989c641564c8b7424184d89f44983fe057d0f49beb8af620800000000e96c0800004c8b7424204d8b6e184d89e44983ec027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d184d896e0849bd084d9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49bdb8af620800000000e99c0600004c8b7424304d8b76284d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7610498b16ff124989c641564c8b7424304d89f54983fe097d0f49beb8af620800000000e9450500004c8b7424384d8b76304d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d89f54983fe0b7d0f49bdb8af620800000000e9ee0300004c8b7424404d8b76084d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424404d89f44983fe0d7d0f49beb8af620800000000e9960200004c8b7424484d8b6e104d89e44983ec027115488d64246848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24684d8b6d084d896e0849bd484d9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424584d8b76384c8b6c24504983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef05f6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0656308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00666308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38666308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70666308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8666308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8666308000000004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104d8b2e4d8b6d004d89f64d8b66084983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd884d9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98366308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10956308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8366308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@466,1,@16012|37,0,@1308 77,0,@105 127,0,@15183 165,0,@1308 207,0,@105 241,0,@1308 279,0,@105 331,0,@15175 383,0,@11204 480,0,@1308 517,0,@105 600,0,@1308 638,0,@105 690,0,@15175 742,0,@11206 839,0,@1308 877,0,@105 960,0,@1308 998,0,@105 1048,0,@15183 1082,0,@1308 1120,0,@105 1170,0,@15099 1204,0,@1308 1242,0,@105 1294,0,@15175 1346,0,@11207 1454,0,@105 1504,0,@15192 1549,0,@1311 1598,0,@866 1642,0,@2593 1687,0,@866 1731,0,@1315 1819,0,@866 1864,0,@2643 1912,0,@866 1957,0,@1315 2045,0,@866 2089,0,@1313 2134,0,@866 2178,0,@1315 2266,0,@866 2311,0,@2645 2355,0,@866 2400,0,@1315 2488,0,@866 2532,0,@2647 2577,0,@866 2621,0,@1315 2709,0,@866 2754,0,@2649 2802,0,@866 2847,0,@1315 2935,0,@866 2979,0,@2651 3024,0,@866 3068,0,@1315 3156,0,@866 3201,0,@2653 3249,0,@1318 3357,0,@105 3409,0,@15175 3461,0,@11208 3574,0,@1311 3623,0,@866 3667,0,@2255 3712,0,@866 3756,0,@1315 3844,0,@866 3889,0,@3033 3933,0,@866 3978,0,@1315 4066,0,@866 4110,0,@2257 4159,0,@1318 11204:D3,656|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9ef0100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be4806110a00000000498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdc84c9709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@16008|37,0,@1756 76,0,@105 126,0,@15192 176,0,@105 228,0,@15175 280,0,@11205 393,0,@1985 441,0,@866 486,0,@1315 578,0,@1987 11205:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16007| 11206:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2642,1,@16009| 11207:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16010| 11208:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2254,1,@16011| 11209:D3,32|483b65187305ff5558cd0149beb805110a00000000498b16ff22f40000000000|@3051,1,@16014|13,0,@15183 11210:D3,32|483b65187305ff5558cd0149be4807110a00000000498b16ff22f40000000000|@3073,1,@16019|13,0,@15208 11211:D3,1000|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9550200004c8b7424084d8b76104d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9ff0000004c8b7424104d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc98976308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70986308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70666308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0986308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@3073,1,@16015|26,0,@1044 52,0,@105 86,0,@1308 124,0,@105 202,0,@1308 239,0,@105 289,0,@15183 323,0,@105 366,0,@3055 414,0,@866 459,0,@3064 503,0,@866 548,0,@1315 636,0,@866 680,0,@2649 729,0,@1318 874,0,@866 919,0,@3066 11212:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284983ec02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8a899630800000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd189a6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@3086,1,@16018,@435,@433,@427|26,0,@1044 46,0,@105 98,0,@15180 111,0,@3075 305,0,@2144 353,0,@1021 398,0,@1987 549,0,@866 594,0,@3079 11213:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8e099630800000000ff124889c258ff22f400000000|@1763,1,@16017|14,0,@15175 27,0,@3077 11214:D3,536|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9760100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2807110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16016|36,0,@1756 75,0,@105 125,0,@15206 176,0,@105 226,0,@15183 271,0,@1985 319,0,@866 364,0,@1315 456,0,@1987 11215:D3,368|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b8089e630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd03750b48b8e89e630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc05750b48b8c89f630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe07750b48b8a0a0630800000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4983fd09750b48b880a1630800000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64983fc0b750b48b860a2630800000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe0d750b48b840a3630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd0f750b48b818a4630800000000c34983fe037d0b48b8708c620800000000c348b8f0a4630800000000c3f400000000|@3175,1,@16021|26,0,@1044 49,0,@3112 69,0,@1044 89,0,@3119 109,0,@1044 129,0,@3126 149,0,@1044 169,0,@3133 189,0,@1044 209,0,@3140 229,0,@1044 249,0,@3147 269,0,@1044 289,0,@3154 309,0,@1044 326,0,@3161 343,0,@1044 354,0,@3168 11216:D3,1880|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9c10500004c8b7424084d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e9660400004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bdf8609709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb8af620800000000e9960200004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424284d8b6e084c8b6424204983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd38619709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18a66308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd901d6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50a66308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a66308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@2099,1,@16025|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 213,0,@1308 251,0,@105 303,0,@15175 355,0,@11217 452,0,@1308 489,0,@105 539,0,@15099 584,0,@105 636,0,@15175 688,0,@11218 801,0,@1311 849,0,@866 894,0,@3177 938,0,@866 983,0,@1315 1071,0,@866 1115,0,@1313 1160,0,@866 1204,0,@1315 1292,0,@866 1337,0,@2045 1385,0,@866 1430,0,@1315 1518,0,@866 1562,0,@3179 1611,0,@1318 1756,0,@866 1801,0,@3181 11217:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@16022| 11218:D3,832|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb8af620800000000e9a20200004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c641564c8b7424084d8b2e4d8b6d004d89f64d8b66084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda0649709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8266308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@466,1,@16024|37,0,@1308 77,0,@105 127,0,@15186 177,0,@105 229,0,@15180 281,0,@11219 394,0,@1311 442,0,@866 487,0,@2122 531,0,@866 576,0,@1315 664,0,@866 708,0,@2124 757,0,@1318 11219:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2005,1,@16023| 11220:D3,3936|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9c70d00004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e96d0c00004c8b6c241041ff75104d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9f70900004c8b7424084d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bdb8af620800000000e99c0800004c8b6c241041ff75084d89f64983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b364c8b6c24104983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0a76308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b76084c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be301e6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a86308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@3202,1,@16026|32,0,@1044 58,0,@105 92,0,@1308 129,0,@105 212,0,@1308 252,0,@105 286,0,@1308 324,0,@105 374,0,@15099 408,0,@1308 448,0,@105 482,0,@1308 520,0,@105 570,0,@15183 604,0,@1308 642,0,@105 692,0,@15183 726,0,@1308 763,0,@105 813,0,@15099 847,0,@1308 885,0,@105 935,0,@15183 980,0,@105 1030,0,@15183 1075,0,@1311 1123,0,@866 1168,0,@2021 1212,0,@866 1257,0,@1315 1345,0,@866 1389,0,@2023 1434,0,@866 1478,0,@1315 1566,0,@866 1611,0,@2025 1655,0,@866 1700,0,@1315 1788,0,@866 1832,0,@2027 1877,0,@866 1921,0,@1315 2009,0,@866 2054,0,@2029 2102,0,@1318 2204,0,@105 2254,0,@15099 2299,0,@1311 2347,0,@866 2392,0,@1313 2436,0,@866 2481,0,@1315 2569,0,@866 2613,0,@3189 2658,0,@866 2702,0,@1315 2790,0,@866 2835,0,@3191 2883,0,@1318 2986,0,@105 3080,0,@1311 3129,0,@866 3173,0,@3193 3218,0,@866 3262,0,@1315 3350,0,@866 3395,0,@3191 3439,0,@866 3484,0,@1315 3572,0,@866 3616,0,@2051 3665,0,@1318 3810,0,@866 3855,0,@3195 11221:D3,3864|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f854d0600004d89f54d8b750841ff751041ff751841ff75204983ec0241547115488d64242848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb8af620800000000e9d30400004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9800300004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e41564c8b7424304d8b7608498b1648b840a9630800000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e9150200004d89f64983ee027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bea805110a00000000498b16ff124989c641564c8b7424204983ee027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78a96308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0a96308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee0a96308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10aa6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe030f85fd040000488d64240841ff74240841ff7424104d8b7424184983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9820300004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e92f0200004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c641564c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b8e8aa630800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be20ab6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0a96308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50ab6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88ab6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d8b6c240841ff7424104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8f5620800000000e9d60100004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bd38849709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60ac6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@3239,1,@16031|32,0,@1044 95,0,@105 129,0,@1308 158,0,@105 208,0,@15183 242,0,@1308 271,0,@105 340,0,@3204 380,0,@1308 409,0,@105 464,0,@15182 500,0,@105 555,0,@15183 600,0,@1311 648,0,@866 693,0,@2519 737,0,@866 782,0,@1315 870,0,@866 914,0,@3206 959,0,@866 1003,0,@1315 1091,0,@866 1136,0,@3208 1184,0,@866 1229,0,@1315 1317,0,@866 1361,0,@3210 1410,0,@1318 1555,0,@866 1600,0,@3212 1690,0,@1044 1750,0,@105 1784,0,@1308 1813,0,@105 1863,0,@15182 1897,0,@1308 1926,0,@105 1981,0,@15183 2017,0,@105 2074,0,@15180 2087,0,@3219 2143,0,@1311 2192,0,@866 2236,0,@3221 2281,0,@866 2325,0,@1315 2413,0,@866 2458,0,@3210 2502,0,@866 2547,0,@1315 2635,0,@866 2679,0,@3223 2728,0,@1318 2873,0,@866 2918,0,@3225 3008,0,@1044 3042,0,@105 3076,0,@1756 3105,0,@105 3157,0,@15175 3209,0,@11224 3308,0,@105 3407,0,@1985 3455,0,@866 3500,0,@1315 3592,0,@1987 3737,0,@866 3782,0,@3232 11222:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16027|13,0,@15182 11223:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16028|13,0,@15182 11224:D3,832|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb8af620800000000e9a20200004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee805110a00000000498b16ff124989c641564c8b7424084d8b2e4d8b6d004d89f64d8b66084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda0879709000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8266308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@466,1,@16030|37,0,@1308 77,0,@105 127,0,@15186 177,0,@105 229,0,@15180 281,0,@11225 394,0,@1311 442,0,@866 487,0,@2122 531,0,@866 576,0,@1315 664,0,@866 708,0,@2124 757,0,@1318 11225:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2005,1,@16029| 11226:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be48889709000000004c8930c3f400000000|@3253,1,@16033|47,0,@11227 11227:D9,1384|483b65187305ff5558cd054989d44c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b184d89de4d8b1b4983fb010f855d0200004d8b642408498b5424084d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35dd040000750949c7c603000000eb2b4c3b35c3040000750949c7c603000000eb194c3b35a9040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68ad6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89eb4983fd037d0b48b8708c620800000000c34d8b6e084983eb02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e415649be8805110a00000000498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48ae6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@3252,1,@16032,@435,@433,@427,@435,@433,@427|29,0,@1044 79,0,@105 299,0,@2144 347,0,@1021 392,0,@1987 543,0,@866 588,0,@3241 673,0,@1044 694,0,@105 746,0,@15180 1016,0,@2144 1064,0,@1021 1109,0,@1987 1260,0,@866 1305,0,@3248 11228:D3,192|483b65187305ff5558cd094c8b70084d89f54d8b364983fe0375464c8b73084d89f44d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe0375204d8b75084d89e54d8b6d084d3bf5750848c7c003000000c348c7c001000000c34d89ee4d8b6d004983fd0175444c8b63084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751d4d8b76184d8b6d184d3bf5750848c7c003000000c348c7c001000000c348c7c001000000c3f40000000000|@3270,1,@16036| 11229:D3,752|483b65187305ff5558cd0552504c8b742408498b5620488b0424ff124989c64983fe01756d4c8b34244d8b76084d8b2e4983fd017550498b46184c8b742408498b5618ff124989c64983fe03750949c7c505000000eb0749c7c5030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb0a49be20b1630800000000eb034d8b3641564c8b34244d8b264d89e54983fc03752b4d89f64983fd03750d4d89f6498b4608488d642418c3488d64241848b838b1630800000000488b5d08ff234c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f80200000049be60fe6208000000004c8970084c8b7424084c8930ff124c8b34244d8b2e4983fd01750d4d89f64d8b760841566a05eb15488d64241848b890b1630800000000488b5d08ff23f64424080175344c8b6c24084d8b75004d89ed41ff75084c8b6424084d89e54983fc03750c49c7c403000000e9620100004d8b760841554156eb78ff34244c8b742428498b56084c8b34244d89f54983fe0175074c8b742418eb294d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d89ed4d896e0849c70603000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930ff12584883c428c3f60424010f85cf0000004c8b2c244d8b75004d89ed41ff75084d8b66184d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03741b4c8b6c2410415c4c8924244c896c2408483b65187303ff5558eba54d89ee4d8b2e4983fd05755d498b4608488b5c2440488b531049b8e8b1630800000000ff124989c64983fe03750e488d64241849c7c403000000eb494983fe01750949c7c501000000eb054c8b6c2410415c4c8924244c896c2408483b65187303ff5558e93cffffff488d64244848b848b2630800000000488b5d08ff23488d642408415c415d4c8924244c896c2408483b65187303ff5558e954fefffff400000000000000|@3280,1,@16038|136,0,@3271 196,0,@3272 247,0,@1823 302,0,@3274 613,0,@3276 698,0,@3278 11230:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@3277,1,@16037| 11231:D3,176|483b65187305ff5558cd0949c7c6010000004d8d67f04c3b65107306ff5550ca09404d89e749c74424f80100000041c64424ff404d8934244d8d6fe04c3b6d107306ff5550ca09104d89ef49c745f803000000498945104d89650849be20939709000000004d8975004d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104989460849bc00959709000000004d89264c892b4c89730848c7c001000000c3f400000000000000|@3289,1,@16044|93,0,@11232 142,0,@11234 11232:D4,248|483b65187305ff5558cd0552504c8b342441ff364c8b7424104d8b760841ff36ff3424f6042401754a4c8b2c244d8b75004d89ed41ff7508498b064c8b742428498b5610488b5c2418ff124989c64983fe03750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb0488d64240849c7c6010000004983fe0375224c8b742418498b5e10488b04244c8b442408ff15730000004989c5488d642410eb06415d4883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000000000|@3284,1,@16039,@11233| 11233:D3,144|483b65187306ff5558ca0901534150a801756fff30ff70084c8b742408498b06488b542418488b5c2410ff124989c64983fe037506584883c418c3488b0424488b5c24184c8b442410e8b2ffffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048c7c001000000c3f4|@3285,1,@16040| 11234:D3,160|483b65187305ff5558cd0552504c8b7424084d8b76104d8b364156f6042401756e4c8b2c244d8b75004d89ed41ff7508498b0641ff76084c8b742420498b5608488b5c2418ff124989c64983fe037529498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c420c3488d642408415d4c892c24483b65187303ff5558eb8c488d64241848c7c001000000c3f4000000|@3286,1,@16041| 11235:D3,720|483b65187306ff5558ca09014889da5041504c8b74240841ff364c8b3424498b4618ff124989c641f6c6010f85420100004d8b364d8b2e4983fd010f851d0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b6c24104d892c244c8b2c244d8b6d184d8b6d084d8b55004d89d34983fa057515488d64241848b8a8d2620800000000488b5d08ff234983fb0175274d8b6d104d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d084983fd037513e98c0000004d8b6d084d8b6d004983fd03747e41f6c60175634d8b364d8b364d8b76184d8b76084d8b1e4d89dd4983fb057515488d64241848b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364983fe03741ae984010000488d64241848b8508a620800000000488b5d08ff234d89e6e9a1000000488d64241848b890b1630800000000488b5d08ff234d8d67e84c3b65107303ff55504d89e749c74424f80200000049c7442408010000004c8b7424104d893424488b5424084c8b34244d8b7618488d6424104d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c7450001000000498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304883c408ff2241f6c6010f85bc0000004d8b1e4d8b6e084d8b1b4d8b5b184d8b53084d89d14d8b024983f803752d4d8b52184983fa03750949c7c203000000eb0749c7c2010000004983fa03750d4d8b590849c70303000000eb414d89ca4d8b014983f80175504d8b49104d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375264d89d34d8b5b104d8b5b0849c703030000004d89ee483b65187306ff5558ca0050e956ffffff488d642418eb05488d64241848b8e8b2630800000000488b5d08ff23e9d4fefffff40000000000|@3288,1,@16043|143,0,@1545 255,0,@1545 328,0,@1028 357,0,@3274 695,0,@3281 11236:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b8d0b4630800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b8a8b5630800000000c34983fe037d0b48b8708c620800000000c348b880b6630800000000c3f400000000|@3312,1,@16045|26,0,@1044 49,0,@3291 69,0,@1044 86,0,@3298 103,0,@1044 114,0,@3305 11237:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561058488d642408ff22f4000000000000|@3313,1,@16046| 11238:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16047| 11239:D5,312|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb89b9709000000004c8930ff124c8b342441ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be289c9709000000004c8930ff124c8b342441ff364c8b7424204d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15420000004889c3488d6424104883fb017506584883c410c3584883c410ff251b000000f40000|@3314,1,@16050,@11243,@11242|101,0,@11240 210,0,@11241 11240:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@16048| 11241:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@16049| 11242:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16052| 11243:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16051| 11244:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f4000000000000|@3315,1,@16053| 11245:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16054| 11246:D8,1816|483b65187306ff5558ca090753415041514152ff30ff70084c8b7010ff7020ff702841f6c6010f8591000000498b0648ba60e2620800000000498d5fd8483b5d107305ff5550cd054989df48c743f8040000004c8b7424384c8973184c8b7424284c8973104c8b7424304d89f04c89730849bed8a59709000000004c8933ff15cc0600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc280f6308000000004d8966104d896e0849c70605000000eb0a49be280f63080000000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424104d8b264d89e54983fc1d0f85b20300004d89f64d8b760841ff3641ff760841ff761041ff761841ff76204c8b6c24704d8b75304d89ed4d8b6d68498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334d8d4fd84c3b4d107305ff5550cd084d89cf49c741f8040000004c8b7424084d8971184c8b7424604d8971104c8b7424684d89710849be08a79709000000004d893148b8a02f6308000000004c8b442420ff150b0500004989c641564c8b2c244d89ee41ff75184d89f64d8b76084983fe017505e9ab0100004c8b7424304d8b2e4a8d0c6d010000004883f901750f49bd7018620800000000e9950000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d5c0400000f877a0200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c64508284d89f6498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49baf8b8630800000000e9b40000004d89f44983c42c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d9e0300000f87ac0100004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049bdf8b863080000000048c7c12d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b44247848c7c3030000004c8b4424704c8b4c2418ff15360300004c8b7424084c8b6c24284d8975004c8b34244d89f44c8b6c24204d8975004c8bb424800000004d8b76484c8b6c24104d89750049c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e49bd60c66208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c74628010000004c8b5c24384d895e204d89e44d896618488d6424184d896e1049c74608010000004c8b6c24484d892e4883c438e91f010000488da4248800000048b8f807620800000000488b5d08ff23488da4248800000048b8f807620800000000488b5d08ff234d89ee4983fe110f859701000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49bd60c66208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c74628010000004c8b24244d896620488d6424084c8b24244d896618488d6424084d896e1049c74608010000004c8b6c24184d892e4883c40841564c8b34244c8b6c24104d897500488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b7424184c8930ff12488b442418488b5c24304c8b442408ff15a7000000488b442418488b5c24284c8b4424304c8b4c240849c7c203000000ff157e0000004c8b742438498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424184c8b34244c8930488d642428ff22488d64245048b820b9630800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@3321,1,@16059,@11079,@11080,@10982,@11065,@10996|49,0,@1633 115,0,@11247 164,0,@1932 191,0,@1932 541,0,@11249 554,0,@2198 631,0,@195 813,0,@3317 970,0,@3317 1129,0,@1469 1318,0,@117 1342,0,@117 1413,0,@1469 1783,0,@3318 11247:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bcb0a69709000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16057,@11006|117,0,@11248 11248:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16056,@10982| 11249:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16058,@10982| 11250:D13,952|483b65187305ff5558cd094c8b736841f6c60175454d8b264d8b6e084d8b1c244c3b1df103000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750f49be2068620800000000e9aa0200004d8b364d8b2e4c3b2d8d03000075064d8b7610eb1048b87850620800000000488b5d08ff234983fe057510ff15610300004989c64156e9290100004983fe03750dff15430300004989c64156eb0848c7c001000000c34c8b34244d8b264d89e54983fc0b0f85c30000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15d20200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be90ab9709000000004c89336a016a01488b4424104989e0ff1589020000415d488d6424104c892c24483b65187303ff5558e94cffffff488d64240848b818d0620800000000488b5d08ff23488d64240849c7c601000000eb1e4d89ee488d6424084983fe05750949c7c603000000eb0749c7c6010000004983fe03750b48b818ba630800000000c348c7c001000000c34c8b34244d8b2e4d89ec4983fd0d7511488d64240849c7c603000000e90c0100004d89f64d89e54983fc0b0f85c30000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15970100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be50ac9709000000004c89336a016a01488b4424104989e0ff154e010000415d488d6424104c892c24483b65187303ff5558e92fffffff488d64240848b818d0620800000000488b5d08ff23488d64240849c7c601000000eb394d89f64983fd0775244d89f64d8b7608488d6424084983fe01750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c6010000004983fe03750848c7c001000000c348b860ba630800000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1da000000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3b00000075094d8b7610e9fbfcffff48b87850620800000000488b5d08ff23f400000000000000|@3326,1,@16062,@15139,@15139,@10900,@10958,@10900,@10958,@10728,@10728,@15139,@15139|105,0,@788 141,0,@621 330,0,@11251 391,0,@1531 457,0,@3322 629,0,@11252 690,0,@1531 791,0,@3324 890,0,@828 930,0,@621 11251:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@16060| 11252:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@16061| 11253:D4,848|483b65187306ff5558ca09074d89d54c8b204c8b70104c8b581841f6c3017541498b3b4d8b5308488b374883fe0175204d8d5ff04c3b5d107306ff5550ca89734d89df49c743f80100000049893beb184d89d3483b65187306ff5558ca097bebb949c7c30100000041f6c3010f85c6000000498b3b4989fa488b3f4883ff01750948c7c703000000eb0748c7c7010000004883ff030f859d0000004d89d34d8b53084d8d5fe84c3b5d107306ff5550ca09774d89df49c743f8020000004d89530849c70307000000498d7fe8483b7d107306ff5550ca097b4989ff48c747f80200000048895f0848c707030000004d8d57e84c3b55107306ff5550ca817b4d89d749c742f80200000049c742080100000049893a498d7fe8483b7d107306ff5550ca017f4989ff48c747f8020000004c8957084c891feb4c4d8d5fe84c3b5d107306ff5550ca09734d89df49c743f80200000049895b0849c70303000000498d7fe8483b7d107306ff5550ca017b4989ff48c747f80200000048c74708010000004c891f4d8d5fd04c3b5d107306ff5550ca81734d89df49c743f80500000049897b20498943184d8943104d894b0849ba90b09709000000004d89134d8d57d04c3b55107306ff5550ca817a4d89d749c742f80500000049897a20498942184d896a104d894a0849bd40b29709000000004d892a4c8b4424084d8d6fd04c3b6d107306ff5550ca815f4d89ef49c745f80500000049897d20498945184d8945104d894d0849b998b59709000000004d894d00498d5fe0483b5d107306ff5550ca007c4989df48c743f8030000004c8953104c895b084c892b4d8b2c244e8d2c6d010000004983fd01750f49ba0019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d9f0000000f87880000004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca087a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf498b064d8b462041506a0149c7c103000000ff153b00000048c7c001000000c2080048b8f807620800000000488b5d08ff23f4ffffffffffffff01|@3329,1,@16070,@11014|433,0,@11254 489,0,@11256 550,0,@11260 620,0,@201 825,0,@117 11254:D5,192|483b65187305ff5558cd0552ff304c8b700841ff36498b46084c8b742410498b5e184d89f64d8b4620ff15b10000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b742410498b4610488b5c24084c8b0424ff15610000004c8b7424104d8b7608498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4000000000000|@3327,1,@16063,@10597,@11255| 11255:D4,136|483b65187306ff5558ca09014989c653415041f6c601755f498b0641ff7608488b5c24104c8b442408ff15710000004989c64156488b442408488b5c24184c8b442410e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@742,1,@16064,@11088| 11256:D5,136|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e184d89f64d8b4620ff15800000004989c641564c8b742410498b4610488b5c24084c8b0424ff155b0000004c8b7424104d8b7608498b5650498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4|@3327,1,@16065,@10597,@11257| 11257:D5,336|483b65187306ff5558ca09014989deff304c8b6808ff7010488b58184d8b5d004d89dc4983fb030f85850000004d8b6d084d8d77e84c3b75107306ff5550ca08214d89f749c746f8020000004d896e0849c7060300000041564883fb0175054d89c6eb0c4c89c0ff15030100004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b34244c8930488d642408c34983fc010f858d0000004d8b6d084d8b66084d8d77e04c3b75107306ff5550ca08314d89f749c746f8030000004d8966104d896e0849c7060900000041564883fb0175054d89c6eb0c4c89c0ff15640000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b34244c8930488d642408c3488d642410c3f4|@3328,1,@16066,@11259,@11258| 11258:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16068| 11259:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16067| 11260:D5,136|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e184d89f64d8b4620ff15800000004989c641564c8b742410498b4610488b5c24084c8b0424ff155b0000004c8b7424104d8b7608498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4|@3327,1,@16069,@10597,@11088| 11261:D4,1200|483b65187306ff5558ca090753415041514152ff30ff7008ff7020ff7028ff70304d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424484d8b264d89e54983fc030f85c40000004d8d4fe04c3b4d107303ff55504d89cf49c741f80300000049bed8086208000000004d8971104c8b7424184d8971084c8b7424284d89314d8d47e84c3b45107306ff5550ca00024d89c749c740f80200000049bea8946208000000004d8970084c8b7424084d8930488b542438488b44241048c7c301000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424104c8b6c24104d892ee9360100004d89f64983fd0b75184d89f64d8b6e084d89f64d8b76184c8b642408e90202000049c7c6010000004983fe010f85bc0000004d8d4fe04c3b4d107303ff55504d89cf49c741f80300000049bed8086208000000004d8971104c8b7424184d8971084c8b7424284d89314d8d47e84c3b45107306ff5550ca00024d89c749c740f8020000004c8b7424484d8970084c8b7424084d8930488b542438488b44241048c7c301000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424104c8b6c24104d892eeb484d8b2e4d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424084c8b6c24184d892e4883c4084156488b442418488b5c24304c8b442408ff15c5010000488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424184c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b24244d89e54d89264c8b6424104d8934244c8b742448498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d89ed4d892e488d642418498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424104c8b7424184c897424204883c420ff224983fd0175184983fc01750949c7c503000000eb0749c7c501000000eb664d8b4d004d8b5d0841f6c40175514d8b04244d8b542408498b394883ff0d75364d8b49084d8b004d3bc8750949c7c103000000eb0749c7c1010000004983f90375144d89d44d89dd483b65187306ff5558ca0070eb8c49c7c501000000eb0749c7c5010000004983fd03740949c7c601000000eb384d8b6e184d8b75084d8b364983fe05750949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee935fdfffff4000000000000|@3330,1,@16071,@11080|268,0,@123 326,0,@1098 514,0,@123 11262:D9,976|488dbc2450ffffff483b7d187306ff5560ca09074d89ce5053415041524983c60241567115488d64242848b8d006620800000000488b5d08ff234c8b742418498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be60bf9709000000004c8930ff124c8b742410498b16498d47e0483b45107305ff5550cd044989c748c740f8030000004c8b7424084c8970104c8b34244c89700849bee0c09709000000004c8930ff124c8b7424684c8b6c2460498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be50c59709000000004c89306a016a016a014889e3ff1512030000ff3424ff7424106a016a016a0148c7c0010000004889e3ff15ed020000ff34244c8b442410ff7424184c8b8c24b80000004c8b9424a80000004c8bb424b0000000ff7424584156ff742460488b842488000000488b5c2440ff15a40200004989c64156ff3424ffb42480000000f6442408010f85d1000000f60424010f85c00000004c8b742408498b064d89f641ff76084c8b742408498b1e4d89f641ff76084c8bb424c80000004c8bac24e00000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424d0000000488bbc24d8000000ffb42488000000ff74243841564155415441534152ffb424b000000041514150574c8b8424d80000004c8b8c24800000004c8b9424e8000000ff15db0100004c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e92bffffff488d642410eb05488d642410ff3424ffb424800000004c8b7424084d89f54983fe0175714c8b34244983fe01488d642408754a488d642440498d47e8483b45107303ff55504989c748c740f8020000004c8b7424284c89700849bed8c69709000000004c89305a4c8b7424404c89b424800000004881c480000000ff22488da4248800000048b868bd630800000000488b5d08ff234d89ed4d89ee41ff75004d89f641ff7608f6442410010f85bf0000004c8b6c24104d8b75004d89ed41ff7508498b460841ff7610ff15e10000004989c04c8bac24e80000004c8ba424f00000004d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d8966104d896e0849bd68c79709000000004d892e48ba48be6308000000004c8b8c24f00000004c8bac24e000000041564155488b442428488b9c24980000004c8b542410ff1560000000488d6424084c8b6c2408415c488d6424104c8924244c896c2408483b65187303ff5558e9a6feffff488da424a000000048b868bd630800000000488b5d08ff23f400000000000000|@3353,1,@16087,@11269,@11279,@11281,@11276,@10906,@10988|44,0,@105 102,0,@11263 168,0,@11264 228,0,@11266 667,0,@11267 711,0,@3335 839,0,@11268 852,0,@3340 954,0,@3335 11263:D4,336|483b65187305ff5558cd05524c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15200100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba8946208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d0c3620800000000488b5d08ff23f4|@3331,1,@16072,@10728|161,0,@1098 321,0,@1456 11264:D5,400|483b65187305ff5558cd054989c652498b0641ff76084c8b7424084d8b7610498b5660ff124989c64983fe010f854b0100004c8b2c244d8b75004d89ed4d8b6d08488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff153a0100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba8946208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d0c3620800000000488b5d08ff23498b065b4883c408ff251d000000f400000000|@3331,1,@16073,@11265,@10728|207,0,@1098 367,0,@1456 11265:D7,608|483b65187305ff5558cd0950534c8b6c24084d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15430200004989c64d8b2e4983fd0d0f85ec01000041ff760841ff76104c8b6c24104d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15e30100004989c64d8b2e4983fd0d0f857f0100004d8b6e084d8b66105b48c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f85462080000000041554154ff1581010000415c415d4989c641f6c6010f840f0100004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dceb1b48b8f85462080000000041554156ff1524010000415e415d4989c441f6c4010f84a50000004d3bf47e524c8b7424084d8b2e4d89f64d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004c8b2c244d897500488d64241048c7c0010000004883c408c3488d6424104c8b34244d8b264d89f64d8b5e08488d6424084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64241848b80855620800000000488b5d08ff23488d64241848b80855620800000000488b5d08ff23488d64242048b8d0c3620800000000488b5d08ff23488d64241048b8d0c3620800000000488b5d08ff23f400|@3332,1,@16074,@10599,@10599,@10728,@10728|237,0,@651 322,0,@651 529,0,@652 550,0,@652 571,0,@1456 592,0,@1456 11266:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba180e630800000000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc180e63080000000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@3333,1,@16075,@10982|70,0,@1613 98,0,@1928 256,0,@1928 316,0,@117 11267:D3,104|483b65187305ff5558cd054c8b304c8b68084d8b65304983fc01751048b808d5620800000000488b5d08ff234d8b242449c70424010000004c8b6208498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff22f40000|@3334,1,@16076|30,0,@1556 11268:D8,312|483b65187305ff5558cd054c8b72104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d4501000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49be2068620800000000eb2f4d8b364d8b2e4c3b2de40000007506498b5e10eb1048b87850620800000000488b5d08ff23488b4208ff25ba00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9a00000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d350000007509498b5e10e976ffffff48b87850620800000000488b5d08ff23f400|@3339,1,@16077,@15134,@15134,@10811,@15134,@15134|109,0,@788 142,0,@621 256,0,@828 296,0,@621 11269:D8,512|483b65187306ff5558ca0d074989de4889d3504156415141524c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dfe01000075204d8d77f04c3b75107306ff5550ca08114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0841ebb549c7c6010000004983fe01750f49be2068620800000000e9d90000004d8b364d8b2e4c3b2d9a01000075064d8b7610eb15488d64242048b87850620800000000488b5d08ff234156498d47e8483b45107306ff5550ca08014989c748c740f8020000004c89400848c700030000006a016a014c8b73084c8b6c24404c8b6424484c8b5b104c8b53184c8b4b204c8b4328488b7b30488b7338488b5340488b4b48488b5b504156ff74243841554154ff742438ff74243841534152415141505756525153488b9c24a80000004c8d4424784c8b8c24a00000004c8b942498000000ff15d5000000488d64243848c7c001000000c2100041f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca08114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0841ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e9ccfeffff488d64242048b87850620800000000488b5d08ff23f4000000|@3348,1,@16079,@15137,@15137,@11270,@15137,@15137|124,0,@788 165,0,@621 449,0,@828 494,0,@621 11270:D13,4160|483b65187306ff5558ca0907504150415141524c8b6c24184d89ee41ff75004d89f641ff76084889d8ff15711000004989c64d8b264d89e54983fc070f85eb000000488d64241041ff7608ff742418ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff34244156415541544153415241514150575652515350ffb424a8000000488b84249000000048bba8be6308000000004c8b8424a00000004c8b8c24980000004c8b942480000000ff159a0f00004989c6488d6424104d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64243048c7c001000000c278004d89ec4983fd050f8519020000488d64241041ff760841ff76106a016a01ffb424b8000000ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff742408ff7424084156415541544153415241514150575652515350488b8424c0000000488b9c24980000004c8d8424880000004c8b8c24b00000004c8b9424a8000000e805feffff488d642410415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742428ff742428ff742428ffb424c8000000ffb424c8000000ffb424c80000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704889442470488b44243848895c2478488b5c243048898c248000000048899424880000004889b424900000004889bc24980000004c898424a00000004c8b4424284c898c24a80000004c8b4c24204c899424b00000004c8b5424184c899c24b80000004c89a424c00000004c89ac24c80000004c8b34244c89b424d00000004c8b7424084c89b424d80000004c8b7424104c89b424e00000004883c468e9b2fcffff488d6424684d89e54983fc0b0f855603000041ff76084d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f85480200004d89ee4d8b76084d8b2e4983fd050f851f020000498b460841ff7610488b5c2408ff15e70c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef8db9709000000004c89336a016a01488b4424104989e0ff159e0c0000ff34246a016a01ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742408ff7424084156415541544153415241514150575652515350488b8424e8000000488b9c24980000004c8d8424880000004c8b8c24d80000004c8b9424d0000000e850fbffff488d642410ff34246a016a01ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742408ff7424084156415541544153415241514150575652515350ffb42498000000488b8424d8000000488d9c249000000049b8a8be6308000000004c8b8c24f80000004c8b9424f0000000ff15fb0a0000488d642410415e488d6424484c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c428c27800488d64243848b818d0620800000000488b5d08ff23ff742428ffb424b8000000ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350ffb424b8000000488b84249000000048bba8be6308000000004c8b8424b00000004c8b8c24a80000004c8b942480000000ff15f50900004989c6488d6424104d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64241048c7c0010000004883c430c278004983fd0d0f85ed03000041ff760841ff7610488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f854620800000000ff15670900004989c641f6c6010f84820300004c3b7424280f8cce020000488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f854620800000000ff15060900004989c641f6c6010f846b0200004981fe1f4e000074274c8b7424084d8b364d8b364983fe09750949c7c603000000eb0749c7c6010000004983f602eb0749c7c6010000004983fe030f85230200004c8b7424104983f60241564c8b2c244d89ee4983fd0375224c8b6c24304983ed027115488d64244848b8d006620800000000488b5d08ff23eb0749c7c51f4e000041554c8b6c24104983e5054983fd01746c4d89f64983fe0375614c8b7424284983fe0375564c8b8c24c80000004c8b9424c00000004c8bb424b80000004c8bac24b00000004c8ba424a800000041564155415448b8b8be63080000000048bbd0be6308000000004c8b442448ff15fd07000049c7c501000000eb07eb004c8b6c24284c8b6424104d89e64983e4094983fc01750949c7c103000000eb0749c7c1010000004983f1024c8b6424084983fc0375234d89f64983e6054983fe01750949c7c303000000eb0749c7c3010000004983f302eb0749c7c3010000004c8b7424104983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bca8946208000000004d8d57f04c3b55107306ff5550ca007a4d89d749c742f80100000041c642ff404d89224c8b24244e8d24e5f9ffffff488d6424084983f903750e488d64241049c7c109000000eb0c488d64241049c7c1010000004d0be14983fb03750949c7c305000000eb0749c7c3010000004d0be34d0be64d8d77e04c3b75107306ff5550ca00344d89f749c746f8030000004d8966104d89560849c7060d0000004c8b24244d8b1c244d891a4d89e44d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892eeb26488d642408eb1a488d64244048b80855620800000000488b5d08ff23488d6424084c8b74243041564c8b7424084d8b364c8bac24900000004983fd030f85810000004d8b264d89e54983fc0975184d8b76084c8bac24880000004d8b6d004d89f4e9d90100004d89ee4983fe07754f4c8b8c24b80000004c8b9424b00000004c8bb424a80000004c8bac24a00000004c8ba4249800000041564155415448b8b8be63080000000048bb00bf6308000000004c8b442438ff15c9050000eb00e977010000eb37488d64244048b80855620800000000488b5d08ff23488d642420415d415e4d8b264d8965004d8b76084d89750848c7c001000000c278004c8b7424084d8b36ff34244156ff742440ff742440ff742440ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44243848899c2490000000488b5c243048898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424284c898c24c00000004c8b4c24204c899424c80000004c8b5424184c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004881c480000000e9f8f3ffff488d642450e9bdfeffff4983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752e4c8bb424880000004d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9780200004d89f54983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b9c24800000004d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284c8b6c24784d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9eb0100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b5c24704d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284c8b6c24684d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee94b0100004d89f5eb144d89e5483b65187306ff5558ca0060e960ffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f903755e4d89d34d8b53084c8b5c24604d3bda750949c7c303000000eb0749c7c3010000004983fb03753749c7c5030000004983fd0375284c8b6c24584d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9ab000000eb144d89e5483b65187306ff5558ca0060e963ffffff4983fe01750949c7c601000000eb544d8b264d8b6e084d8b6424184d8b5424084d89d34d8b124983fa030f85cf0000004d89dc4d8b5c24084c8b6424504d3be3750949c7c403000000eb0749c7c4010000004983fc030f85a300000049c7c6030000004983fe0375254c8b6c24484d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64244048b830bf630800000000488b5d08ff234d8b264d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004c8b6c24084d897500e9e5fbffff4d89ee483b65187306ff5558ca0040e9edfefffff4000000|@3349,1,@16080,@11273,@11273,@10599,@10599,@11274,@11275,@10900,@10958,@11272,@10728|216,0,@3341 973,0,@11271 1383,0,@3341 1468,0,@1531 1629,0,@3341 1787,0,@651 1876,0,@651 2010,0,@105 2118,0,@3342 2128,0,@3343 2291,0,@1098 2529,0,@652 2674,0,@3342 2684,0,@3344 2719,0,@652 4043,0,@3345 11271:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@16078| 11272:D3,480|483b65187306ff5558ca090753415041514152a8010f85b5010000ff30ff7008ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff742408ff7424084156415541544153415241514150575652515350488b842488000000488b9c24b00000004c8b8424a80000004c8b8c24a00000004c8b942498000000e836ffffff4989c641564c8b74242041ff76086a016a01ff742458ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742450ff7424084156415541544153415241514150575652515350488b942480000000488b8424a0000000488b9c24980000004c8d8424880000004c8b8c24d80000004c8b9424d0000000ff12488d642410415e415d488d642450498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c27800488d642420488b442408c27800f40000|@1573,1,@16084| 11273:D8,888|483b65187306ff5558ca0907505341504151415248c7c001000000ff158f0300004989c04c8b7424104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d6303000075204d8d77f04c3b75107306ff5550ca00114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0041ebb549c7c6010000004983fe01750f49be2068620800000000e9460200004d8b364d8b2e4c3b2dff0200007506498b5e10eb15488d64242848b87850620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004c8b6c24204d896e0849c706070000004156488b5424104c8b4c2448488b44240849c7c201000000ff124989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24204d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b54243048c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c2428498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b2c244d8b75184d89ed498b5560488d64241849c706030000004c8b34244c897424184883c418ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0041ebb549c7c6010000004983fe017515488d64242848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3c0000007509498b5e10e95ffdffff488d64242848b87850620800000000488b5d08ff23f4000000|@3350,1,@16081,@15134,@15134,@15134,@15134,@10815|135,0,@788 176,0,@621 382,0,@866 462,0,@866 825,0,@828 870,0,@621 11274:D3,472|483b65187306ff5558ca090753415041514152a8010f85a9010000ff30ff7008ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff742408ff7424084156415541544153415241514150575652515350488b842488000000488b9c24b00000004c8b8424a80000004c8b8c24a00000004c8b942498000000e836ffffff4989c641566a016a01ff742450ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478ff742448ff7424084156415541544153415241514150575652515350488b942480000000488b842498000000488b9c24b80000004c8d8424880000004c8b8c24d00000004c8b9424c8000000ff12488d642410415e415d488d642448498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c27800488d642420488b442408c27800f4000000000000|@1573,1,@16082| 11275:D3,632|483b65187306ff5558ca090753415041514152a8010f853b020000ff30ff70086a016a01ffb424c0000000ffb424c0000000ffb424c00000004c8bb424c00000004c8bac24b80000004c8ba424b00000004c8b9c24a80000004c8b9424a00000004c8b8c24980000004c8b842490000000488bbc2488000000488bb42480000000488b542478488b4c2470488b5c2468488b442460ff742410ff742410ff7424104156415541544153415241514150575652515350488b8424a8000000488d9c24980000004c8b8424c80000004c8b8c24c00000004c8b9424b8000000e81effffff488d642418415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eff7424184156ff742410ff742438ff742430ff742430ffb424d8000000ffb424d8000000ffb424d80000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004889842480000000488b44243848899c2488000000488b5c243048898c24900000004889942498000000488b5424404889b424a00000004889bc24a80000004c898424b00000004c8b4424284c898c24b80000004c8b4c24204c899424c00000004c8b5424184c899c24c80000004c89a424d00000004c89ac24d80000004c8b34244c89b424e00000004c8b7424084c89b424e80000004c8b7424104c89b424f00000004c8b7424704c897424784883c478ff22488d642470488d642418415e4c8b6c24084d892e49c746080300000048c7c001000000c28000f4|@1573,1,@16083| 11276:D4,288|483b65187306ff5558ca090753415041514152a8010f85f00000004c8b30ff7008498b064d8b6e184d8b7620498d5fd0483b5d107306ff5550ca01604989df48c743f8050000004c8b6424204c8963204c8973184c8b6424184c8963104c896b0849bd78e89709000000004c892b4c8b4424304c8b6c24404c8b6424384156ff742418ff7424184155415449c7c10100000049bad8c0630800000000ff15960000004989c641564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e826ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f40000000000|@742,1,@16096,@10993|99,0,@11277 148,0,@3352 11277:D3,144|483b65187305ff5558cd0552504c8b34244c89f041ff76084c8b742410498b5620ff124c8b7424104d8b6e184983fd0375104d89f6498b5610488b442408ff12eb004c8b6c24104d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d895e084c8b1c244d891e488d6424084d89e54d89750048c7c0010000004883c410c3f4|@3351,1,@16085| 11278:D3,480|483b65187305ff5558cd014c8b304c8b60084c8b581049c7c5ffffffff4d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49bd60c66208000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d89550849c745000500000049c7c2010000004d8d47f04c3b45107306ff5550ca007c4d89c749c740f80100000041c640ff404d891049c7c1010000004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d890a49c7c101000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c890f4d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890a49c7c1010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89084d8d4ff04c3b4d107306ff5550ca007d4d89cf49c741f8010000004d8901498d47c0483b45107306ff5550ca007e4989c748c740f8070000004c8948304c8950284c8958204c8960184c89681048c74008050000004c8930c3f4000000|@1618,1,@16086|66,0,@1469 11279:D4,688|483b65187305ff5558cd014c8b284d89ee4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9eb000000909090e9f9000000909090e9db000000909090e9d3000000909090e90e010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9cf000000909090e9cf000000909090e973000000909090e9cc000000909090e9dc000000909090e95b000000909090e953000000909090e94b000000909090e9c4000000909090e93b000000909090e9bd000000909090e9bd000000909090e923000000909090e9b7000000909090e913000000909090e90b000000909090e9030000009090904983fe17750848c7c003000000c348c7c001000000c34c8b7008498b0641ff7608ff15890100004989c64983fe03750658e9b2feffff488d64240848c7c001000000c3488b4010e99cfeffff48c7c003000000c34c8b701841566a03e9df0000004c8b70104983fe01750848c7c003000000c341566a03eb7948c7c003000000c3488b4008e95efeffff48c7c003000000c34c8b700841566a03eb0848c7c003000000c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750ae81efeffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750ae8d0fdffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175464c8b6c24084d8b75004d89ed41ff7508498b46184c8b7424084983fe03750ae87dfdffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb3584883c408c3f400000000|@3354,1,@16088,@11280| 11280:D6,240|483b65187305ff5558cd014c8b304d89f54983fe2d7509488b4008e9e0ffffff4d89ee4983fd0b7509488b4010e9ceffffff4983fe1d0f85aa0000004c8b70084d8b76084d8b364d8b6e084983fd017502eb0e41f6c501740848c7c001000000c3498b4618ff15ad0000004989c64d8b2e4983fd057563498b4610ff158f0000004989c64d8b2e4983fd0b75444d8b76184d8b76184d8b66084d89e54d8b24244983fc0375224d89ee4d8b76084c3b3554000000750948c7c003000000eb0748c7c001000000eb0748c7c001000000eb0748c7c001000000eb0748c7c0010000004883f002c348c7c001000000c3f400|@3355,1,@16089,@15162,@10728,@10728| 11281:D13,1840|483b65187306ff5558ca090750ff33ff7308ff7310ff73204c8b34244c89f74983fe0375364d8b68304d8d77e04c3b75107306ff5550ca80274d89f749c746f8030000004d894e104d896e0849bdf0f69709000000004d892eeb044d8b703041564d8b484041ff7020498b586841ff7028498b50584d8b62084c8bb424980000004d8b6e084d8b7060498d4fd8483b4d107306ff5550ca8c734989cf48c741f8040000004c8961184c8969104c89710849be58f79709000000004c89314d8b60104d8b58184d8b30498b70504d8b68084d8b50384889ff4883ff03753a488b842490000000498d7fe0483b7d107306ff5550ca4f7f4989ff48c747f803000000488947104c89470849b8d8f79709000000004c8907eb04498b78484d8d47884c3b45107306ff5550cace7e4d89c749c740f80e00000049895868498948604989505849897050498978484d8948404d8950384c8b5424104d8950304c8b14244d895028488d6424084c8b14244d895020488d6424104d8958184d8960104d8968084d8930488b542470488b442448488b5c24404c8b7424684c8b6c24604c8b6424584c8b5c245041564155415441534c8b4c24304c8b542430ff124989c6415648bad8ce620800000000488b442428488b1c24ff15b70500004989c641f6c6010f85cd02000041ff364c8b4c24784c8b54244848b850c2630800000000488b5c24284c8b442430ff157b0500004989c641564c8b8c24800000004c8b54245048b868c2630800000000488b5c24284c8b442410ff15470500004989c6415648ba98d9620800000000488b842488000000488b5c24584c8b44245849b9c8d9620800000000ff150e0500004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88c26308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424704d8b7668e9c4000000488d6424084c8b34244983fe03488d64240875074c8b742408eb0f488d64242048c7c001000000c258004d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc17750949c7c603000000eb224983fd0b75154d8b6e104d89ee483b65187306ff5558ca0040ebb249c7c6010000004983f6024983fe037531488b4424604c8b442428415949bae0c263080000000048c7c3030000004c8b7424184c897424704883c470ff2503020000488d642420e95cffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dd901000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9b20000004d8b364d8b2e4c3b2d750100007506498b5e10eb15488d64243048b87850620800000000488b5d08ff23488b442438ff15450100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424684d8b76184c8b6c2468498b556049c70603000000ff12e928feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da800000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3e0000007509498b5e10e9f3feffff488d64243048b87850620800000000488b5d08ff23f40000000000|@3362,1,@16095,@15134,@15134,@10811,@15134,@15134,@10982,@10973,@11054,@11054,@10934|78,0,@11282 178,0,@11283 266,0,@11284 450,0,@1525 501,0,@3357 545,0,@3358 576,0,@1582 604,0,@1584 703,0,@1596 747,0,@1597 893,0,@866 981,0,@866 1069,0,@866 1113,0,@3359 1354,0,@3361 1489,0,@788 1530,0,@621 1775,0,@828 1820,0,@621 11282:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16090| 11283:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16091| 11284:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb8f89709000000004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@3356,1,@16093,@11286|101,0,@11285 11285:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@16092| 11286:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16094| 11287:D4,232|483b65187306ff5558ca09035341504151a8010f85c10000004c8b30ff70084d8b761041f6c601755d498b0648ba60e2620800000000498d5fd8483b5d107305ff5550cd054989df48c743f8040000004c8b7424184c8973184c8b7424084c8973104c8b7424104d89f04c89730849bec8fa9709000000004c8933ff157f0000004989c6eb0a49bea8946208000000004156488b442408488b5c24204c8b4424184c8b4c2410e855ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f4|@742,1,@16099,@10996|46,0,@1633 112,0,@11288 136,0,@1098 11288:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bca0fb9709000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16098,@11006|117,0,@11289 11289:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16097,@10982| 11290:D3,272|483b65187306ff5558ca09074989c65341504151415241f6c6010f85de000000498b0641ff7608488b542420488b5c24304c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b44243841564155415441534152415141504c8b4424504c8b4c24484c8b542440ff124989c641564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b442448488b5c24684c8b4424604c8b4c24584c8b542450e833ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c24000488d64242048c7c001000000c24000f40000|@742,1,@16100| 11291:D4,368|483b65187306ff5558ca09035341504151a8010f85450100004c8b30ff70084d8b0641ff760841ff76104c8b742428498b5e684d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b34244d8971184c8b7424184d8971104c8b7424204d89710849bed0fe9709000000004d893148b860e3620800000000ff15030100004989c64c8b6c24084d8975004983fe01750e488d64241049c7c601000000eb514d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c4084983fe01751758488b5c24104c8b4424084159488d642410e9edfeffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e8d1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@3363,1,@16102,@11008|106,0,@11292 119,0,@1640 11292:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16101,@10982| 11293:D3,336|483b65187306ff5558ca090753415041514152a8010f851f0100004c8b30ff700841ff3641ff7608498b4618488b542430488b5c24404c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b44244841564155415441534152415141504c8b4424604c8b4c24584c8b542450ff124989c54c8b34244d892e488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8f7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c24000488d64242048c7c001000000c24000f4000000000000|@742,1,@16103| 11294:D7,920|483b65187306ff5558ca09074d89d6505341504983c60241567115488d64242048b8d006620800000000488b5d08ff234c8b742410498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be80049809000000004c8930ff124c8b742408498b164c8b742468498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b34244c89700849be00069809000000004c8930ff124c8b7424604c8b6c2458498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bec8079809000000004c89306a016a016a014889e3ff15d3020000ff3424ff742410ff742420ff742448f6042401753f4c8b3424498b064d89f641ff7608488b9c24a00000004c8b8c24980000004c8b4424404c8b542418ff1588020000415d4c892c24483b65187303ff5558ebbb488d642408ff742448f60424010f85a00000004c8b3424498b064d89f641ff7608488bb424a00000004c8bb424900000004c8bac24a80000004c8ba424980000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468415641554154ff742428ff742440415341524151415057ffb424a80000004989f1488b9c24a80000004c8b8424a00000004c8b942498000000ff15d0010000415d4c892c24483b65187303ff5558e956ffffff488d642438ff742418f6042401753b4c8b2c244d8b75004d89ed41ff750841ff76104c8b342441ff364c8b34244d89f541ff364d89ed498b45184d89ed4d8b75204d89ed41ff7530eb0f488d64242848c7c001000000c2480041f6c60175294d8b264d8b6e084d8b1c244983fb0175074d8b542408eb1b4d89ee483b65187306ff5558ca0140ebd149ba08de6208000000004c8bac24880000004c8ba424900000004d8d77e04c3b75107306ff5550ca01344d89f749c746f8030000004d8966104d896e0849bd50099809000000004d892e48ba48be6308000000004c8b8c24900000004c8bac248000000041564155488b5c244049c7c003000000ff15b20000004c8b2c244d89ee4983fd017515488d64245048b808d5620800000000488b5d08ff234d89f64d8b36488d64240849c706010000004c8bb42490000000498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b34244c8930488d642408ff124c8b34244c8b6c24084d897500488d642410415d4c892c24483b65187303ff5558e970fefffff40000|@3370,1,@16108,@11269,@11300,@11299,@10988|34,0,@105 92,0,@11295 159,0,@11296 219,0,@11297 646,0,@1613 707,0,@11298 720,0,@3340 786,0,@1556 11295:D4,336|483b65187305ff5558cd05524c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15200100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba8946208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d0c3620800000000488b5d08ff23f4|@3364,1,@16104,@10728|161,0,@1098 321,0,@1456 11296:D5,400|483b65187305ff5558cd054989c652498b0641ff76084c8b7424084d8b7610498b5660ff124989c64983fe010f854b0100004c8b2c244d8b75004d89ed4d8b6d08488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff153a0100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba8946208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d0c3620800000000488b5d08ff23498b065b4883c408ff251d000000f400000000|@3364,1,@16105,@11265,@10728|207,0,@1098 367,0,@1456 11297:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49ba180e630800000000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc180e63080000000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@3365,1,@16106,@10982|70,0,@1613 98,0,@1928 256,0,@1928 316,0,@117 11298:D8,312|483b65187305ff5558cd054c8b72104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d4501000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49be2068620800000000eb2f4d8b364d8b2e4c3b2de40000007506498b5e10eb1048b87850620800000000488b5d08ff23488b4208ff25ba00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9a00000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d350000007509498b5e10e976ffffff48b87850620800000000488b5d08ff23f400|@3339,1,@16107,@15134,@15134,@10811,@15134,@15134|109,0,@788 142,0,@621 256,0,@828 296,0,@621 11299:D6,1104|483b65187306ff5558ca0907534150415141524c8b700841f6c6010f851d0300004d8b3641ff3641ff7610ff7010ff70204c8b7424184d8b760841ff364d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d5fe84c3b5d107306ff5550ca00404d89df49c743f8020000004d8973084c8b34244d8933488d64240849bda8946208000000004d8d77f04c3b75107306ff5550ca00284d89f749c746f80100000041c646ff404d892e4c8b6c24384e8d2cedf9ffffff4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d8974240849c704240d00000049c7c5ffffffff4d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e49bd60c66208000000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d89750849c745000500000049c7c6010000004d8d4ff04c3b4d107306ff5550ca00784d89cf49c741f80100000041c641ff404d893149c7c6010000004d8d57f04c3b55107306ff5550ca007a4d89d749c742f80100000041c642ff404d893249c7c6010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89304d8d77e04c3b75107306ff5550ca003f4d89f749c746f8030000004d8946104d894e084d89164d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d893249c7c1010000004d8d77f04c3b75107306ff5550ca003e4d89f749c746f80100000041c646ff404d890e4d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f8010000004d89314d8d77c04c3b75107306ff5550ca003e4d89f749c746f8070000004d894e304d8956284d895e204d8966184d896e1049c74608050000004c8b2c244d892e41564c8b7424284d8b2e49c7c601000000eb15488d64242048b868c4630800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44c8b6c24104d8975004983fe017528488b44244848c7c3030000004c8b4424384c8b4c242049ba00c5630800000000ff15b4000000eb00488b442408488b5c24484c8b442420ff1595000000488b442408488b5c24384c8b4424484c8b4c242049c7c201000000ff156c0000004c8b2c244d89ee4c8b6424184d892c24488b542430498d47e8483b45107306ff5550ca04404989c748c740f8020000004d89f64c897008488d6424084c8b34244c8930488d6424084883c440ff22f40000000000|@3388,1,@16126,@11079,@11080,@10982|251,0,@1098 397,0,@1469 837,0,@3366 877,0,@105 950,0,@3369 11300:D15,2120|483b65187306ff5558ca090750534150415141524c8b7424204d8b6e1041ff75004d89f64d89f441ff364d89e44d8b7424084d89e44d89e541ff7424184d89ed41ff752849bda8946208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c2449c7c51f4e00004e8d1cedf9ffffff4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745000d00000041554156f60424010f85b30000004c8b3424498b064d89f641ff76084c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470ff742438415641554154ff7424484153415241514150575652ff742478ff742478488b9c24c00000004c8b8424b80000004c8b8c24a00000004c8b9424b0000000ff155d070000415d4c892c24483b65187303ff5558e943ffffff488d642408ff742458f60424010f85a40000004c8b2c244d8b75004d89ed41ff75084d8b76104d8b364d8b76284983fe017515488d64246048b808d5620800000000488b5d08ff234d8b3641ff364c8b2c24498b450041ff76104c8b742440498b1eff15d90600004c8b34244d8b364983fe0175054989c6eb0c4c89f3ff15b60600004989c64c8b2c244d897500488d6424084c8b342449c70601000000488d642408415d4c892c24483b65187303ff5558e952ffffff488d6424084c8b742420498b5e1848bad8ce620800000000488b0424ff15580600004989c641f6c6010f852104000041ff364d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424184d8966204c8b6424404d8966184c8b6424484d8966104d896e0849c7061900000041564c8b9424b800000048b870dc620800000000488b1c244c8b4424104c8b4c2440ff15ae0500004989c641564c8b7424384d8b2649bda8946208000000004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20f16208000000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bd98c56308000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204c8b4c24284d894d184d8955104d895d084d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0848c7031d0000004d89f64d8b46184c8b9424c000000048b818c66308000000004c8b4c2448ff15940400004989c6415648ba98d9620800000000488b9c24c80000004c8b8424c8000000488b44245049b9c8d9620800000000ff15580400004889c2488b442418ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38c66308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668eb0f488d64245048c7c001000000c2580041f6c60175454d8b264d8b6e084d8b1c244c3b1de301000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9bf0000004d8b364d8b2e4c3b2d7f0100007506498b5e10eb15488d64246848b87850620800000000488b5d08ff23488b442408ff154f0100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424104c89700848c700030000004c8b6c24384d8b75184d89ed498b556049c706030000004c8b7424584c89b424b00000004881c4b0000000ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3b0000007509498b5e10e9e6feffff488d64246848b87850620800000000488b5d08ff23f40000|@3386,1,@16120,@15134,@15134,@10811,@15134,@15134,@10973,@11054,@11054,@10934,@11313,@11314,@11302|70,0,@1098 425,0,@1556 566,0,@1525 718,0,@1601 761,0,@1098 806,0,@1724 851,0,@3371 1001,0,@3373 1027,0,@1582 1058,0,@1584 1157,0,@1596 1201,0,@1597 1347,0,@866 1435,0,@866 1523,0,@866 1567,0,@3374 1759,0,@788 1800,0,@621 2058,0,@828 2103,0,@621 11301:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@3372,1,@16109| 11302:D29,4328|488dbc2460ffffff483b7d187306ff5560ca090753415041524c8b28ff7008ff701041ff75004d8b750841ff75184d8d5fe84c3b5d107306ff5550ca01424d89df49c743f80200000049c743080100000049890349c7c5010000004d8d47f04c3b45107306ff5550ca006a4d89c749c740f80100000041c640ff404d892849bd20f16208000000004d8d57f04c3b55107306ff5550ca006b4d89d749c742f80100000041c642ff404d892a49bdb84b6208000000004d8d67f04c3b65107306ff5550ca006f4d89e749c74424f80100000041c64424ff404d892c2449bdb84b620800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fc84c3b6d107306ff5550ca805f4d89ef49c745f80600000049897d284d8945204c8b4424104d8945184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00624d89e749c74424f80200000049c7442408010000004d892c244d8d6fd04c3b6d107306ff5550ca00524d89ef49c745f8050000004c8b5c24104d895d204c8b5c24284d895d184c8b5c24304d895d104d89650849c745001900000041554d8b6e084d8b71184d897500498d47e0483b45107303ff55504989c748c740f8030000004c8b34244c8970104c8b7424284c89700849be582a9809000000004c89306a016a016a014889e3ff15cb0f0000ff34244c8b742410ff7424184c8bac24d80000004983c50241557115488d64247048b8d006620800000000488b5d08ff234c8b8424d80000004c8b8c24d00000004c8b9424c80000004156ff742408488b442450488b5c2468ff15640f00004989c64156f60424010f85970000004c8b34244d8b364c8b2c244d8b6d084983fd017502eb7e488b042448c7c303000000ff15250f00004989c64156488b0424ff150e0f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c70607000000eb0a49beb84b6208000000004c8bac24c80000004d8975004c8bb424d80000004d8b6e304c8ba424c00000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24104d895e184d8966104d896e0849bde02b9809000000004d892e41564c8bb424e000000041ff76404c8bb424e800000041ff76204c8bb424f0000000498b4e684c8bb424f000000041ff76284c8bb424f8000000498b76584c8bb424900000004d8b66084c8bb424880000004d8b6e084c8bb424f80000004d8b7660498d57d8483b55107306ff5550ca42704989d748c742f8040000004c8962184c896a104c89720849be602c9809000000004c89324c8bb424f80000004d8b66104c8bb424f80000004d8b5e184c8bb424f80000004d8b364c8bac24f8000000498b7d504c8bac24f80000004d8b6d084c8b9424f80000004d8b52384c8b8424f8000000488b9c24d80000004d8d4fd84c3b4d107306ff5550cace7d4d89cf49c741f804000000488b44243849894118498959104d89410849b8e02c9809000000004d89014d8d47884c3b45107306ff5550cac67e4d89c749c740f80e000000498948684989506049897058498978504d8948484c8b4c24104d8948404d8950384c8b5424184d8950304c8b14244d895028488d642408415a488d6424104d8950204d8958184d8960104d8968084d8930488b9424b0000000488b9c24900000004c8bb424a80000004c8bac24a00000004c8ba42498000000ff742460415641554154488b4424284c8b4c24784c8b542478ff124989c64156f6442448010f85350400004c8b742448498b0648ba60e26208000000004c8bb424d80000004c8bac24e0000000498d5fd8483b5d107306ff5550ca05604989df48c743f8040000004c896b184c8973104c8b7424684c89730849be40309809000000004c89334c8b442468ff15f80b00004989c6415648bad8ce620800000000488b442408488b1c24ff15d20b00004989c641f6c6010f859f03000041ff364c8b9424f800000048b868c2630800000000488b5c24704c8b4424104c8b4c2478ff15930b00004989c6415648c7c001000000ff15790b00004989c048ba80886208000000004c8b8c2400010000488b44241048c7c3214e000049c7c201000000ff15430b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba98d9620800000000488b9c24080100004c8b842408010000488b84248800000049b9c8d9620800000000ff15460a00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8c76308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424784d8b7668e9b3050000e9a40500005b4c8bb4248800000049891e488b0424ff15e30700004989c6488d642408415648bad8ce620800000000488b9c2480000000488b0424ff15b50700004989c641f6c6010f859c03000041ff364c8b9424e800000048b838c8630800000000488b5c24404c8b4424084c8b4c2468ff15760700004989c6415648c7c001000000ff155c0700004989c048ba8088620800000000488b8424900000004c8b8c24f000000048c7c3214e000049c7c201000000ff15230700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50c86308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba98d9620800000000488b9c24f80000004c8b8424f8000000488b44247849b9c8d9620800000000ff15290600004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8db6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88c86308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424604d8b7668eb0f488d64247848c7c001000000c2700041f6c60175454d8b264d8b6e084d8b1c244c3b1dbd03000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9af0000004d8b364d8b2e4c3b2d590300007506498b5e10eb15488d64247848b87850620800000000488b5d08ff23488b442438ff15290300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24504c896818415d4c8968104c89700848c700030000004c8b7424584d8b76184c8b6c2458498b556049c70603000000ff124883c470e9e0feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8f02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64247848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d250200007509498b5e10e9f6feffff488d64247848b87850620800000000488b5d08ff235b4883c408e953faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1ddb01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9ae0000004d8b364d8b2e4c3b2d770100007506498b5e10eb18488da4249000000048b87850620800000000488b5d08ff23488b442450ff15440100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24684c896818415d4c8968104c89700848c700030000004c8b7424704d8b76184c8b6c2470498b556049c70603000000ff12e9e1feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dae00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4249000000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d410000007509498b5e10e9f7feffff488da4249000000048b87850620800000000488b5d08ff23f40000000000|@3387,1,@16123,@15134,@15134,@10811,@15134,@15134,@15134,@15134,@10811,@15134,@15134,@10973,@10723,@10815,@11054,@10934,@11316,@10973,@10723,@10815,@11054,@10934,@10996,@11066,@10822,@11315,@10988|128,0,@1724 173,0,@578 221,0,@578 483,0,@11303 544,0,@105 772,0,@578 858,0,@11304 1008,0,@11305 1152,0,@11306 1364,0,@1633 1434,0,@11311 1463,0,@1525 1512,0,@3358 1564,0,@1014 1680,0,@866 1724,0,@1720 1802,0,@1582 1836,0,@1584 1935,0,@1596 1979,0,@1597 2125,0,@866 2206,0,@866 2292,0,@866 2336,0,@3379 2465,0,@1525 2517,0,@3381 2569,0,@1014 2688,0,@866 2732,0,@3382 2810,0,@1582 2841,0,@1584 2940,0,@1596 2984,0,@1597 3130,0,@866 3211,0,@866 3297,0,@866 3341,0,@3384 3533,0,@788 3574,0,@621 3816,0,@828 3861,0,@621 3975,0,@788 4019,0,@621 4260,0,@828 4308,0,@621 11303:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b908de6208000000004d8b2c244e8d2c6d010000004983fd01750f49baa0c6630800000000e9b60000004d89eb4983c34e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bca0c663080000000048c7c14f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@3377,1,@16110,@10982|70,0,@1613 98,0,@3376 256,0,@3376 316,0,@117 11304:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16111| 11305:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16112| 11306:D5,312|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be502e9809000000004c8930ff124c8b342441ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bec02e9809000000004c8930ff124c8b342441ff364c8b7424204d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15420000004889c3488d6424104883fb017506584883c410c3584883c410ff251b000000f40000|@3378,1,@16115,@11310,@11309|101,0,@11307 210,0,@11308 11307:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@16113| 11308:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1619,1,@16114| 11309:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16117| 11310:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16116| 11311:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc18319809000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16119,@11006|117,0,@11312 11312:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16118,@10982| 11313:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16121| 11314:D3,120|483b65187305ff5558cd09a801755f4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e4156e8c1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@16122| 11315:D4,208|483b65187306ff5558ca09074989c65341504151415241f6c6010f859c000000498b0641ff7608488b5c24384c8b4424306a01ff742428ff742428ff742428ff74242849c7c10100000049baf8de620800000000ff158e0000004989c641564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e875ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f400000000|@742,1,@16125,@10993|76,0,@1617 11316:D3,104|483b65187305ff5558cd094989c64889d841f6c601754941ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3c3f4000000000000|@1573,1,@16124| 11317:D4,160|483b65187306ff5558ca09074989c65341504151415241f6c6017573498b0641ff7608488b5c24204c8b4424184c8b4c24104c8b542408ff157b0000004989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4000000|@742,1,@16129,@11318| 11318:D4,304|483b65187306ff5558ca09074d89c641514152ff30ff7008ff7010488b40184d8d47e04c3b45107306ff5550ca09404d89c749c740f803000000498958104d89700849be58369809000000004d893048bba8ca630800000000ff15e90000004989c54c8b34244d8b264983fc01755a4d89f34d8b63084c8b5424204d89d64983fa01750a4d89de488d642408eb39488d6424084d89f64d8b364d8b5e084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70609000000eb084d89f6488d642408498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b6424104c8960204c8968184c8970104c8b34244c897008488d6424084c8b34244c8930488d6424104883c408c3f400000000|@3392,1,@16130,@10774|68,0,@11319 81,0,@3390 11319:D3,232|483b65187305ff5558cd054c8b70184d8b66084d89e54d8b24244983fc0375564c8b5a104d89dc4d8b5b084d8b1b4983fb03750949c7c303000000eb0749c7c3010000004983fb03752c4d8b75084d89e54d8b6d084d8b6d084d3bf5750949c7c603000000eb0749c7c6010000004983fe03756ceb6b4d89ec4d8b6d004983fd0175504c8b5a104d89dd4d8b5b084d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375264d89e64d8b76184d8b6d084d8b6d184d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037401c3488b4208c3f400|@3389,1,@16127| 11320:D3,16|483b65187305ff5558cd01c3f4000000|@3391,1,@16128| 11321:D4,1048|483b65187306ff5558ca090753415041514152a80175594c8b30ff700841ff3641ff760841ff762041ff76284d8d5fe04c3b5d107303ff55504d89df49c743f80300000049bed8086208000000004d8973104c8b7424084d8973084c8b7424184d893349c7c2010000004c8b3424eb0d488d64242048c7c001000000c341f6c60175364d8b66084d89d54983c5027115488d64244848b8d006620800000000488b5d08ff234d89e64d89ea483b65187306ff5558ca004cebc44c8b7424404983fe0175504d8d47e84c3b45107306ff5550ca00084d89c749c740f80200000049bea8946208000000004d8970084c8b34244d8930488b5424384d89d948c7c00100000048c7c303000000ff124989c6e90c01000049c7c5ffffffff4d8d77f04c3b75107306ff5550ca002c4d89f749c746f80100000041c646ff404d892e49bd60c66208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8965104d89750849c745000500000049c7c4010000004d8d77f04c3b75107306ff5550ca003c4d89f749c746f80100000041c646ff404d89264d8d67d84c3b65107306ff5550ca006c4d89e749c74424f80400000049c7442418030000004d895424104d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b6c24104c89e84d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f80200000049c74608010000004c8b24244d89e54d89264c8b6424104d8934244d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d89ed4d892e4156488b5c24384c8b442410ff159d000000488b542430498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b7424184c8930ff12488b442420488b5c24404c8b4424384c8b4c24304c8b542428e819fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642448c3f400|@742,1,@16146,@11080|70,0,@123 151,0,@105 225,0,@1098 320,0,@1469 11322:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8b76184d8b76084d8b264d89e54983fc05751048b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16132|48,0,@1545 11323:D4,248|483b65187306ff5558ca09074989c54989de41504151415241f6c5010f85c100000041f6c6010f85b0000000498b450041ff7508498b1e41ff76084c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4424404c8b4c24384c8b542430ff15a40000004989c641564c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b442430488b5c24284c8b4424484c8b4c24404c8b542438e855ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c22000488d642418eb05488d64241848c7c001000000c22000f40000000000|@3397,1,@16135,@11324| 11324:D6,728|483b65187306ff5558ca090753415041514152ff30ff7008ff7010ff7020488b402849c7c6010000004c8b6c240841f6c50175364d8b5d084d89f44983c4027115488d64244048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156ff158e0200004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24484d896e184c8b6c24284d896e104c8b2c244d896e08488d64240849c7060b0000004156488b44241848bbd8cb630800000000ff156a0100004c8b5424704c8b742468ff3424ff7424104156488b5c24504c8b4424484c8b4c2458ff153a0100004989c5488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e41564c8b7424484983fe030f858f000000488b542440498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124c8b742420498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff12eb354c8b742420498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124c8b34244c89f04c8b6c24084d8975004889c0488d642438c22000f40000|@3398,1,@16136,@11328,@10785,@11327|72,0,@105 384,0,@3394 11325:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60419809000000004c8930c3f400000000|@3396,1,@16134|47,0,@11326 11326:D3,160|483b65187305ff5558cd054c8b70184c8b6a084d8b5d184d8b2b4e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec730848c7c003000000c348c7c001000000c34983fe017d0848c7c003000000c348c7c001000000c3f400000000000000|@3395,1,@16133| 11327:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16141| 11328:D6,928|483b65187306ff5558ca090753415041514152a8010f85730300004c8b28ff700841ff75004d8b750841ff751041ff75186a016a0141f6c6010f85a2000000498b0648ba60e2620800000000498d5fd0483b5d107305ff5550cd054989df48c743f8050000004c8b7424484c8973204c8b7424304c8973184c8b7424384d89f04c8973104c8b7424404c89730849beb8469809000000004c8933ff15280300004989c54c8b6424684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004c89342448c744240801000000eb124c8b7424684c89342448c744240803000000ff3424ff7424104d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849c7060100000041564c8b742450498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d5fe84c3b5d107306ff5550ca00404d89df49c743f8020000004d8973084c8b34244d8933488d64240849c7c5ffffffff4d8d77f04c3b75107306ff5550ca00284d89f749c746f80100000041c646ff404d892e49bc60c66208000000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d8974240849c70424050000004c8b7424704d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77c04c3b75107306ff5550ca00384d89f749c746f80700000049c746300100000049c74628010000004d895e204c8b1c244d895e18488d6424184d8966104d896e084c8b2c244c89e84d892e4156488b5c24304c8b442418ff15f5000000488b442408488b5c24284c8b4424304c8b4c241849c7c203000000ff15cc000000488b542450498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff124c8b34244c8b6c24104d8975004c8b7424604c8b6c24584c8b642450415641554154488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8a3fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642448c21800488d64242048c7c001000000c21800f40000|@742,1,@16140,@11079,@11080,@10996|68,0,@1633 143,0,@11329 480,0,@1469 11329:D4,224|483b65187306ff5558ca0d014989c64d89c54c8b62204d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849bac8479809000000004d8914244d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62184d8960104c8b62104d89600849bc30489809000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16139,@11006|74,0,@11330 173,0,@11331 11330:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16137| 11331:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16138,@10982| 11332:D4,248|483b65187306ff5558ca090753415041514152a8010f85cf0000004c8b30ff70084d8b761041f6c6017566498b0648ba60e2620800000000498d5fd0483b5d107305ff5550cd054989df48c743f8050000004c8b7424204c8973204c8b7424084c8973184c8b7424104d89f04c8973104c8b7424184c89730849beb0499809000000004c8933ff15840000004989c6eb0a49bea8946208000000004156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e845ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4|@742,1,@16145,@10996|48,0,@1633 123,0,@11333 147,0,@1098 11333:D4,224|483b65187306ff5558ca0d014989c64d89c54c8b62204d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849bac04a9809000000004d8914244d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62184d8960104c8b62104d89600849bc284b9809000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16144,@11006|74,0,@11334 173,0,@11335 11334:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16142| 11335:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@1627,1,@16143,@10982| 11336:D63,9632|483b65187306ff5558ca0d0152505341504c8b742410498b064d89f6498b5e084d89f64d8b4610ff15632700004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849bd28739809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff15ca2600004989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b6c24104d89ee4d896c24184c8b6c24184c89e84d896c24104c8b5c24204d89dd4d895c240849bb78739809000000004d891c24415449c7c4010000004d8d5ff04c3b5d107306ff5550ca01704d89df49c743f80100000041c643ff404d89234d8d67d84c3b65107306ff5550ca01684d89e749c74424f8040000004d89ed4d8b55204d895424184d89ed4d8b55104d895424104d89ed4d8b55184d8954240849baf0739809000000004d8914244d89234d8d47e84c3b45107306ff5550ca01604d89c749c740f8020000004d89ed4d89eb4d89680849bd507d9809000000004d89284d8d67e84c3b65107306ff5550ca01494d89e749c74424f8020000004d89db4d89dd4d895c240849bb507e9809000000004d891c244154498d77e8483b75107306ff5550ca01614989f748c746f8020000004d89ed4d8b65084d89e34c89660849bc50bc9809000000004c89264d89f64d8b264c8d15080000004f8d54a2fc41ffe2e9f3000000909090e9f1010000909090e9db020000909090e9f2050000909090e9dc070000909090e982090000909090e9df0a0000909090e9090b0000909090e92f0b0000909090e9580b0000909090e91f0c0000909090e9b60c0000909090e9a90d0000909090e9750f0000909090e918110000909090e918120000909090e947130000909090e92e140000909090e925150000909090e9a0150000909090e955160000909090e9f5160000909090e9dc170000909090e9f2170000909090e9c6180000909090e93e190000909090e9351a0000909090e9d11a0000909090e9251b0000909090e9291d0000909090e98b1e00009090904d89f64d8b760841ff3641ff7608498b461041ff7620ff152a2400004989c64156488b442408ff15122400004989c64156488b442420ff15fa2300004889c34883fb0175035beb12488b0424ff15dc2300004889c3488d6424084883fb017507584883c408eb0f488b0424ff15b5230000488d6424104d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24184d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8973084c8b7424104c8933ff15592300004c8b6c24204d89ee4983fd0175054989c6eb0c4c89f3ff15352300004989c64c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c440c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084d89dd4c892b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15572200004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15332200004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b56084d8b62084d89e14d89ce4d8b014983f8330f85c60100004d8b490841f6c10175424d8b490841f6c101752f4d8b49084983f901751c4d8b4a184983f903750949c7c103000000eb0749c7c101000000eb0749c7c101000000eb0749c7c101000000eb0749c7c1010000004983f9030f85690100004d8b66084d8b34244d8b6424084d8b0c244d8b2241ff72204d8b52104d8b024d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d89420849c7021b00000041524d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004c8b4424104d8902498d5fe8483b5d107306ff5550ca007e4989df48c743f8020000004c8953084c891b4d8d5fe84c3b5d107306ff5550ca08524d89df49c743f80200000049c74308010000004d890b4d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15892000004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15652000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d8b3241ff72204d8b52104d8b0a4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7021b00000041524d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24104d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15431f00004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff151f1f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b7608498b0e498b7e0841ff76184d8b4e204d8b76104d8b1e4d8d67d04c3b65107306ff5550cac22a4d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d77c84c3b75107306ff5550cac23a4d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049baf0c39809000000004c89e2488b5c24084989d848895a204c89721848894a104d89ed4c896a084c891241806424ffbf49bdd0c49809000000004d89f24989722849897a204d89c04d8942184d8962104d894a084d892a418066ffbf4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d89660849c706090000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d895c240849c704241b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104c89f34983fe0175054989c6eb09ff15fa1c00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b76084d8b264d8b5e084d8b6e1041ff76184d8b56204d8b4e284d8d77f04c3b75107306ff5550ca003f4d89f749c746f801000000488b7c240849893e498d5fe8483b5d107306ff5550ca007f4989df48c743f8020000004c8973084c890349c7c6010000004d8d47f04c3b45107306ff5550ca087e4d89c749c740f80100000041c640ff404d89304d8d77e84c3b75107306ff5550ca083f4d89f749c746f8020000004d8946084d89264d8d67e84c3b65107306ff5550ca086e4d89e749c74424f8020000004d894c24084d892c244d8d6fe84c3b6d107306ff5550ca085c4d89ef49c745f8020000004d8955084d895d004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15601b00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff153c1b00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b76084d89f64d8b4e104d89f64d8b66184d8d47d84c3b45107306ff5550ca40324d89c749c740f80400000041c640ff4049c740180100000049c740100100000049c740080100000049c700010000004d8d77d04c3b75107306ff5550ca40334d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bba8c69809000000004d89c2488b14244889d7498952184d897210498972084d891a418060ffbf49bba0c79809000000004d89f24889ff49897a20488d6424084d8942184d894a104d89ed4d896a084d891a418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424104d89f64d8b76084d8b76204c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c3488d6424104d89f64d8b76184c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c3488d6424104c8b6c240849be08de6208000000004d8975004c8b34244d897508488d64241048c7c0010000004883c418c3488d6424084d89f6498b46084d89f641ff76104d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d896e0849bd80c89809000000004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff158b1800004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15671800004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01014d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c8973084c8903ff15dc1700004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15b81700004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f54d8b75084d89ed498b45104d89ed41ff75184d8b2e4d8d77e84c3b75107306ff5550ca41204d89f749c746f8020000004d896e0849c7061b00000041564d8d77f04c3b75107305ff5550cd414d89f749c746f8010000004c8b6c24104d892e498d5fe8483b5d107306ff5550ca41404989df48c743f8020000004c897308488933ff15fc1600004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15d81600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b46084d89f641ff762049c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d89ea4d8b6a104d896e104d89660849bd28e29809000000004d892e4d8934244d8d6fe84c3b6d107306ff5550ca01044d89ef49c745f80200000041c645ff4049c745080100000049c74500010000004d8d77e04c3b75107306ff5550ca01244d89f749c746f80300000041c646ff4049c746100100000049c746080100000049c7060100000049bc005c9909000000004d89eb4d8973084d8923418065ffbf49bc785c9909000000004d89f34d89d24d8953104d896b084d8923418066ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdd8639909000000004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15ed1400004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15c91400004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f4498b5424084d89e44d8b4424104d89e44d89e641ff7424184d89f64d8b56204d8d67d04c3b65107306ff5550ca44254d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d77c84c3b75107306ff5550ca44354d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bb80739909000000004c89e7488b4c24084989c948894f204c897718488957104d89ed4c896f084c891f41806424ffbf49bd60749909000000004d89f3498973284d8943204d89c94d894b184d8963104d8953084d892b418066ffbf4d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d89660849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424104c89f34983fe0175054989c6eb09ff15161300004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f64d8b6e084d8b751041ff3641ff75004d8b750841ff75184d8b6d204d8b364d8b1e6a016a016a014c3b1db31200007502eb3b4d8b234e8d2465010000004983fc170f85a900000049bcc8e1620800000000498d7308498d7c240848c7c10b000000483bc9f3a67405e983000000498b550048c7c001000000ff12488b5c2420ff15541200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e48c704240100000048c7442408010000004c89742410e9550f00004d8b6e2041ff76284d89eee9190d0000488d6424084d89f44d8b7424104d89e4498b4424184d89e441ff74242041ff364d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d896e0849bd38769909000000004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424104d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15361100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7061b00000041564c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15e21000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15dc0f00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15b80f00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f44d8b7424084d89e4498b4424104d89e441ff7424184d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7061b00000041564d8d77f04c3b75107306ff5550ca01284d89f749c746f8010000004c8b6424104d8926498d5fe8483b5d107306ff5550ca01684989df48c743f8020000004c8973084c891bff15f80e00004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15d40e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f54d8b75084d89ed4d8b65184d8b364d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f64d8b7608498b1e498b460841ff76184d8d6ff04c3b6d107306ff5550ca09014d89ef49c745f8010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e084d890641564883fb017502eb06ff158c0d0000488b1c24ff157a0d0000488d6424084c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15510d00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b7608498b0641ff76084d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be00ed6308000000004c8933ff15bd0c00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15990c00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15be0b00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff159a0b00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424184d89f6498b5e084c89ea4889c04158488d642418e90fe5ffff488d6424084d89f64d8b66084d89f641ff76104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24084d895e184d8966104d89ed4d896e0849bd30809909000000004d892e4d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424104c89f34983fe0175054989c6eb09ff15980a00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f54d8b75104d89ed4d8b65204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f4498b4424084d89e44d8b7424104d89e441ff7424184d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7061b00000041564d8d77f04c3b75107306ff5550ca01284d89f749c746f8010000004c8b6424104d8926498d5fe8483b5d107306ff5550ca01684989df48c743f8020000004c8973084c891bff15580900004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15340900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f6498b46084d89f641ff7610ff15c80800004d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24104d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8973084c8b7424084c8933ff15710800004c8b6c24184d89ee4983fd0175054989c6eb0c4c89f3ff154d0800004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424104d89f64d8b66084d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e08488d64240849bd98ed6308000000004d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f44d89e641ff7424084d89f641ff76204d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d895e0849bdf0809909000000004d892e4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b6424104d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933488b442408ff1530070000f6442408010f852f0100004c8b7424084d8b1e4d89dd4d89f64d8b66084d8b1b4d8b134983fa1d75664d8b5b084d8b134c3b15f10600007502eb334d8b1a4e8d1c5d010000004983fb05753a49bb7809630800000000498d7208498d7b0848c7c102000000483bc9f3a67402eb184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f859a0000004d89ee4d8b2e4d8b6d084d8b6d18498b5e084d8b75204d8b65184d3bf4753d4d8b75104d8b6d084d3bf5750949c7c603000000eb0749c7c6010000004983fe03751a488d642420488b542418488b44241041584883c418e924e0ffff4c8b7424184c89f34983fe0175054989c6eb09ff150b0600004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c34c8b7424184c89f34983fe0175054989c6eb09ff15c50500004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424084d89f34d8b6b084d89db4d8b63104d89db4d89de41ff73184d89f64d8b5e204d8d77f04c3b75107306ff5550ca00394d89f749c746f8010000004c8b5424084d8916498d5fe8483b5d107306ff5550ca00794989df48c743f8020000004c8973084c890349c7c6010000004d8d57f04c3b55107306ff5550ca08784d89d749c742f80100000041c642ff404d89324d8d77e84c3b75107306ff5550ca083c4d89f749c746f8020000004d8956084d89264d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff156f0400004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff154b0400004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f64d8b76084c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c341f6c6010f85070100004d8b1e4d8b66084d8b134983fa010f85df0000004d8b5308498b324c8b4c2420498b39483bf77502eb2f4c8b064e8d044501000000488b174889d1488d1455010000004c3bc2757e488d7608488d7f08483bc9f3a67402eb6d4d8b42084d89c9498b79084c3bc775544d8b42104d89c9498b79104c3bc7753b4d8b42184d89c9498b79184c3bc775224d8b52204d89c94d8b49204d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c201000000eb0749c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb1b4d89e6483b65187306ff5558ca0060e9effeffff49c7c6010000004983fe0175114c89e8ff15c90200004989c6e9e100000049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060e926ffffff4c897424084c8b34244c89742410488d64240848c744241001000000ff34244c8b742410ff74241841f6c6010f859a0000004d8b364d8b2e41ff75004d8b6e0841ff75004d8b7610498b06ff15870100004c8b7424084c89f34983fe0175054989c5eb09ff15660100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c70615000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408eb0748c7c0010000004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24384d896e0849c7061b00000041564c8b7424084c89f34983fe0175054889c3eb09ff15b00000004889c34883fb017507488b5c2448eb0e488b442448ff158d0000004889c34883fb0175074c8b6c2410eb0e488b442410ff156a0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24484c8b6424284d8965004d89750848c7c0010000004883c468c3f40000000000|@3595,1,@16300,@11491,@11492,@11493,@11494,@11495,@11383,@11496,@11369,@11497,@11498,@1902,@11369,@11499,@11369,@11500,@11501,@11369,@11502,@11503,@11369,@11504,@11369,@11505,@11369,@11506,@11507,@11369,@11508,@11369,@11509,@11369,@11510,@1629,@11511,@11512,@11369,@11513,@11369,@11514,@11369,@11515,@11369,@11516,@11369,@11517,@11518,@11369,@11519,@11369,@11520,@11369,@11521,@11369,@11522,@11523,@11524,@11525,@11526,@11490,@11349|82,0,@11337 261,0,@11338 383,0,@11339 437,0,@11343 489,0,@11344 546,0,@11405 2322,0,@11412 2371,0,@11413 3219,0,@11415 3259,0,@11416 3522,0,@1613 3614,0,@11417 4284,0,@11440 4404,0,@11448 4429,0,@11449 4492,0,@11456 4842,0,@11472 4891,0,@11473 5152,0,@1629 5403,0,@11475 6546,0,@3587 6965,0,@11485 7718,0,@3590 7812,0,@11486 7982,0,@1902 11337:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@3399,1,@16147,@10811| 11338:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@3400,1,@16148| 11339:D9,2064|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54d8b24244983fc010f855a0200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b358a070000750949c7c603000000eb2b4c3b3570070000750949c7c603000000eb194c3b3556070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8cd6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd030f85e80200004d89f54d8b750841ff75104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e9760100004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be8805110a00000000498b1648b8e8ce630800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0cf6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7218498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28d06308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@3424,1,@16152,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 294,0,@2144 342,0,@1021 387,0,@1987 538,0,@866 583,0,@3401 668,0,@1044 720,0,@105 754,0,@1756 783,0,@105 863,0,@105 920,0,@15180 933,0,@3409 989,0,@1985 1037,0,@866 1082,0,@1315 1174,0,@1987 1319,0,@866 1364,0,@3416 1449,0,@1044 1470,0,@105 1697,0,@2144 1745,0,@1021 1790,0,@1987 1941,0,@866 1986,0,@3420 11340:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b820cf630800000000ff124889c258ff22f400000000|@3415,1,@16151|14,0,@15101 27,0,@3411 11341:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b858cf630800000000ff124889c258ff22f400000000|@2006,1,@16150|14,0,@15180 27,0,@3413 11342:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16149|13,0,@15182 11343:D3,216|483b65187305ff5558cd054989c6498b064d8b76084d8b6e084d8b6d006a016a0141f6c501757741ff7500498b1e6a016a01488b52084989e0ff12415d415b4d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b34244d89742408488d64240849c70424010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264c892c244c89742408eb0c498b1e488b52084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3425,1,@16153| 11344:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3459,1,@16213,@11345| 11345:D6,1448|483b65187306ff5558ca09034989c64d89cd41504c8b1b4d89dc4983fb030f859b0000004c8b63084c8b5b104d8b1b41f6c301757d41ff336a016a014c89ea4c89e34c89f04989e0ff12415c415b4d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e415d4d8965004d89750848c7c001000000c34c89ea4c89f04c89e34158ff224983fc050f85000300004c8b63084d8b5c24104983fb010f852a0100004d8b1c2441ff7424184d8b5424204d8b6424084d8b24244d8b0c244d8d67d04c3b65107306ff5550ca086e4d89e749c74424f8050000004d896c242049895c24184d8974241049bd08d16308000000004d896c240849bdb8849809000000004d892c244d89e54d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849bd30859809000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15160400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3498b134d8b14244d8b5c24084d8b1b4d8b0341ff7424184d8b4c2420498d77d0483b75107306ff5550ca0c674989f748c746f8050000004c896e2048895e184c89761049bd08d16308000000004c896e0849bd988b9809000000004c892e498d7fd8483b7d107306ff5550ca44474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd108c9809000000004989fb498973184d896310498953084d892b8067ffbf49bd30ae9809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff154b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c34c8b63084d8b5c24084d8b1b4d8b034d8b1424498b54241041ff7424184d8b4c2420498d77d0483b75107306ff5550ca0c674989f748c746f8050000004c896e2048895e184c89761049bd08d16308000000004c896e0849bd18b29809000000004c892e498d7fd0483b7d107306ff5550ca44474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd90b29809000000004989fb49895320498973184d896310488b1424498953084d892b8067ffbf49bd68b89809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156a0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f40000000000|@3460,1,@16214,@11349,@11349,@11349|292,0,@3426 307,0,@11346 372,0,@11347 587,0,@3426 601,0,@11354 763,0,@11355 795,0,@11389 1044,0,@3426 1058,0,@11393 1228,0,@11394 1268,0,@11401 11346:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3427,1,@16154| 11347:D6,536|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b4d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca08784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca08784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0860e926ffffff415648c7c00100000049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd88879809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15720000004889c34883fb017504415eeb12488b0424ff15530000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f40000|@3429,1,@16156,@11350,@11351,@11349|346,0,@11348 11348:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16155| 11349:D5,344|483b65187306ff5558ca09014989c6f6c30175554c8b2b4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c704240f0000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d896500eb0749c7c501000000415541f6c00175524d8b204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450011000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8928eb0748c7c00100000041f6c60175514d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060b000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054889c3eb09ff15380000004889c34883fb01750258c358ff251e000000f40000000000|@3430,1,@16159,@11353,@11352| 11350:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16157| 11351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16158| 11352:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16161| 11353:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16160| 11354:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3427,1,@16162| 11355:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba38d2630800000000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3454,1,@16196,@11356|133,0,@3431 11356:D13,2168|483b65187306ff5558ca0d015250534150488b442408ff15bc0800004989c641564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b34244d89f54d897424104c8b7424204d8b76084d8974240849bef8959809000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7061300000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c7061b00000041564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15ff0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b6424184d89e64d8965184c8b6424204d8965104c8b5c24284d89dc4d895d0849bb70969809000000004d895d0041554d89f64d8b2e4c8d1d080000004f8d5cabfc41ffe3e92b000000909090e954000000909090e945040000909090e933050000909090e959050000909090e91b060000909090488d6424084c8b6c241049be08de6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c428c34d89f64d8b760841ff3641ff761041ff761841ff76206a016a014c8b6c24404d8b75004983fe0b0f858a0000004d89ed4d89ee41ff75104d89f64d8b76184d8b6e184d8b55084d89d34d8b124983fa0375434d89dd4d8b6d084d89e44d8b6424184d3bec750949c7c503000000eb0749c7c5010000004983fd0375194c8b34244c89742408488d64240848c744240801000000eb20498b4610ff153d0600004989c64c8b2c244c896c2408488d6424084c89742408eb1a49bef0d26308000000004d8b2e4c892c244d8b76084c89742408415858f6442418010f85dc0200004c8b4c24184d8b194d89c94d8b71084983fe010f85560100004d8d57c84c3b55107306ff5550ca01094d89d749c742f80600000041c642ff4049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d6fd04c3b6d107306ff5550ca010d4d89ef49c745f80500000041c645ff4049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bee8969809000000004d89d4488b7c24204989f949897c24284d896c24204989442418488b7c240849897c24104d894424084d893424418062ffbf49bee8999809000000004d89ec4d89c94d894c24204d895424184d895c24104c8b5c24504d895c24084d893424418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e96b0100004d8d5fc84c3b5d107306ff5550ca01034d89df49c743f80600000041c643ff4049c743280100000049c743200100000049c743180100000049c743100100000049c743080100000049c703010000004d8d6fc84c3b6d107306ff5550ca010b4d89ef49c745f80600000041c645ff4049c745280100000049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bec89a9809000000004d89dc488b7c24204989fa49897c24284d896c24204989442418488b7c240849897c24104d894424084d893424418063ffbf49bec89d9809000000004c8b6424504d8b4424104d89ec4d894424284d89c94d894c24204d89d24d895424184d895c24104c8b5c24104d895c24084d893424418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb004c8b7424284c89f34983fe0175054989c6eb09ff15000300004989c64c8b6c24384c8b24244d896500488d6424084d89750848c7c0010000004883c450c34d89f34d8b73084d89db4d89dd41ff73104d89ed4d8b5d184d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004c8b5424084d895500498d5fe8483b5d107306ff5550ca00784989df48c743f8020000004c896b084d89e44d8b6c24104c892b4d8d6fe84c3b6d107306ff5550ca08484d89ef49c745f80200000049c74508010000004d895d00498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff151e0200004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15fa0100004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424084d89f64d8b76104c8b6c24104d8975004c8b34244d897508488d64240848c7c0010000004883c428c34d89f6498b46084d89f641ff76184d8d77e84c3b75107306ff5550ca01104d89f749c746f8020000004d89e44d89660849bde8a29809000000004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15160100004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15f20000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01504989df48c743f8020000004c8973084d89e44d8b7424104c8933ff15640000004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15400000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3f40000|@3452,1,@16189,@11384,@11369,@11385,@11369,@11386,@11369,@11387,@11383,@11349,@10814|86,0,@11357 360,0,@11358 455,0,@1613 677,0,@3435 893,0,@11359 953,0,@11363 1243,0,@11364 1303,0,@11368 1851,0,@11375 11357:D4,72|483b65187305ff5558cd05525048c7c001000000ff15460000004989c04c8b742408498b56084d89f6498b46105b488d64240849c7c20100000049b9e088620800000000ff22f400|@3433,1,@16163,@10815|60,0,@1015 11358:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@3434,1,@16164| 11359:D6,336|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76204d893048c7c001000000ff15170100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd78989809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@3436,1,@16166,@11362,@11361,@11349|137,0,@11360 11360:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16165| 11361:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16168| 11362:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16167| 11363:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3437,1,@16169| 11364:D6,336|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76204d893048c7c001000000ff15170100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd589c9809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@3436,1,@16171,@11367,@11366,@11349|137,0,@11365 11365:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16170| 11366:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16173| 11367:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16172| 11368:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76104c893049c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@3444,1,@16178,@11374,@11349,@11369| 11369:D3,168|483b65187305ff5558cd094883f801750848c7c001000000c34c8b334c8b63084d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d8965184d8975104989450849bee89f9809000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f40000000000|@3445,1,@16180|73,0,@11370 11370:D4,40|483b65187305ff5558cd05488b5a084c8b4a104c8b521849c7c001000000ff251c000000f4000000|@3439,1,@16176,@11371| 11371:D3,344|483b65187306ff5558ca0907f6c3010f85300100004c8b2b4c8b63084c89ca4983fc01750c49c7c401000000e9ca0000004d8d77c84c3b75107306ff5550ca0c374d89f749c746f8060000004d8956284d894e204d89461849895e1049bb98d36308000000004d895e0849bbc0a19809000000004d891e4d8d5ff04c3b5d107306ff5550ca04774d89df49c743f8010000004d89334d8d77c84c3b75107306ff5550ca043f4d89f749c746f8060000004d8956284d894e204d895e184d89661049bc98d36308000000004d89660849bc10a29809000000004d89264d8d67f04c3b65107306ff5550ca04654d89e749c74424f8010000004d8934244d8d77e04c3b75107306ff5550ca04354d89f749c746f8030000004d8946104d8956084d8926498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff2248b8e0d3630800000000488b5d08ff23f40000|@3443,1,@16177|94,0,@3438 108,0,@11372 194,0,@3438 208,0,@11373 327,0,@3440 11372:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@3439,1,@16174| 11373:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@3439,1,@16175| 11374:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16179| 11375:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3450,1,@16187,@11376| 11376:D4,480|483b65187306ff5558ca09034989c64c89ca41504c8b2b4d8b55004d8b4d084c8b4308ff7310498d77d0483b75107306ff5550ca0c474989f748c746f8050000004889562048895e184c89761049bd20d56308000000004c896e0849bd78a59809000000004c892e498d7fd0483b7d107306ff5550ca44474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdf0a59809000000004989fb498973204d8963184d894310498953084d892b8067ffbf49bdd0a69809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156b0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f4000000000000|@3451,1,@16188,@11349|79,0,@3446 93,0,@11377 263,0,@11378 299,0,@11379 11377:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3447,1,@16181| 11378:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3448,1,@16182| 11379:D7,448|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66284d89650041554d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d89f64d8b66204d89650041554d89f6498b4618ff15890100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442408488b5c241049c7c001000000ff15180100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdd8a89809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb017508415e4883c410eb12488b0424ff15580000004989c6488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000000000|@3449,1,@16184,@11382,@11381,@11349,@10814|249,0,@11380 11380:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16183| 11381:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16186| 11382:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16185| 11383:D3,296|483b65187305ff5558cd01a8010f85090100004c8b30488b40084d8b2e4d89ec4983fd05752f4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70617000000e9910000004d89e54983fc07752c4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70619000000eb5c4983fd03752c4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e813ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@742,1,@16194| 11384:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16190| 11385:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16191| 11386:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16192| 11387:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16193| 11388:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3453,1,@16195| 11389:D6,568|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bda8b09809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@3429,1,@16198,@11392,@11391,@11349|376,0,@11390 11390:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16197| 11391:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16200| 11392:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16199| 11393:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3427,1,@16201| 11394:D6,280|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66184d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0849bd40d76308000000004c892b4d89f6498b4620ff15d70000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f400000000|@3458,1,@16207,@11400,@11349,@11369|81,0,@3455 11395:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@3456,1,@16203,@11396| 11396:D6,504|483b65187305ff5558cd094989c64c8b6b104d8b6d004d8b6520ff33ff731849c7c50100000041f6c4010f85d10000004d8b14244d8b5c24084d8b024d89c14983f805754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701070000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890aeb574983f901754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890aeb034d89ea4d89d54d89dc483b65187306ff5558ca0070e925ffffff4155498b06498b5e084d8b4610ff150c0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849bd70b69809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb017508415e4883c408eb12488b0424ff15500000004989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@3457,1,@16204,@11399,@11398,@11349|313,0,@11397 11397:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16202| 11398:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16206| 11399:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16205| 11400:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16208| 11401:D6,568|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bde0ba9809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@3429,1,@16210,@11404,@11403,@11349|376,0,@11402 11402:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16209| 11403:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16212| 11404:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16211| 11405:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3464,1,@16217,@11406| 11406:D8,760|483b65187306ff5558ca09035041504c8b73104d8b2e4c8b7318498b3e4c8b73284d8b164c8b234c8b7308ff73204d8d5fd04c3b5d107306ff5550ca88764d89df49c743f8050000004d894b2049895b184c8b4424104d89431049b808d96308000000004d89430849b818c09809000000004d890341f6c20175514d8b124d8d47e84c3b45107306ff5550ca887e4d89c749c740f8020000004d89500849c700010000004d8d57e84c3b55107306ff5550ca887b4d89d749c742f80200000049c74208010000004d8902eb0749c7c20100000041524d8d47e84c3b45107306ff5550ca887a4d89c749c740f8020000004989580849ba90c09809000000004d89104d8d57e84c3b55107306ff5550ca807b4d89d749c742f8020000004d89420849c702130000004d8d47e04c3b45107306ff5550ca807e4d89c749c740f803000000498978104d89680849c700050000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d89450849c745001b0000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89284d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d8945084d89550041554d8d6ff04c3b6d107306ff5550ca005a4d89ef49c745f8010000004d895d00498d5fe8483b5d107306ff5550ca00724989df48c743f8020000004c896b084c890b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15dd0000004989c641564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15b40000004c8b6c24104d89ee4983fd0175054889c3eb0c4c89f3ff15900000004889c34883fb0175035beb12488b0424ff15720000004889c3488d6424084883fb017508415e4883c408eb12488b0424ff154a0000004989c6488d6424104c8b6c24084c8b24244d896500488d6424104d89750848c7c0010000004883c408c3f400000000000000|@3465,1,@16218,@11410,@11411,@11409,@11349,@11369|92,0,@3461 106,0,@11407 246,0,@11408 11407:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3462,1,@16215| 11408:D5,400|483b65187305ff5558cd05504c8b6a084d89ee41ff7500498b4608488b5c24084883eb027115488d64241048b8d006620800000000488b5d08ff23ff156f0100004989c64156488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff23488b442408ff15370100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90b56208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3f400|@3463,1,@16216,@10811,@10811|45,0,@105 88,0,@105 187,0,@866 232,0,@1353 276,0,@866 11409:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16221| 11410:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16219| 11411:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16220| 11412:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3466,1,@16222| 11413:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@3467,1,@16223,@11414,@11349,@11369| 11414:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16224| 11415:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba38d2630800000000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3468,1,@16225,@11356|133,0,@3431 11416:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3466,1,@16226| 11417:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3475,1,@16246,@11418| 11418:D9,1952|483b65187306ff5558ca09034989c64c89ca41504c8b6b1041f6c5010f859b030000498b4500488b4b284c8b294983fd110f85bd0100004c8b134c8b6b084d8b6d004d8b4520ff73184c8b4b20498d77d0483b75107306ff5550ca0d474989f748c746f8050000004889562048895e184c89761049bd00db6308000000004c896e0849bdf8d09809000000004c892e498d7fd8483b7d107306ff5550ca41474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac1474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd70d19809000000004989fb498973184d896310498943084d892b8067ffbf49bd68d29809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15380600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c34c8b13ff73184c8b4b204c8b6b084d8b6d004d8b4520498d77d0483b75107306ff5550ca0e474989f748c746f8050000004889562048895e184c89761049bd00db6308000000004c896e0849bd48d69809000000004c892e498d7fd0483b7d107306ff5550ca46474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac6474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdc0d69809000000004989fb498973204d89631849894b10498953084d892b8067ffbf49bda0d79809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15670400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3488b4b284c8b294983fd11751d4c8b6b084d8b6d004d8b6d20ff33ff732049c7c401000000e9c90100004c8b13ff73184c8b4b204c8b6b084d8b6d004d8b4520498d77d0483b75107306ff5550ca0e474989f748c746f8050000004889562048895e184c89761049bd00db6308000000004c896e0849bd80db9809000000004c892e498d7fd0483b7d107306ff5550ca46474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac6474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdf8db9809000000004989fb498973204d89631849894b10498953084d892b8067ffbf49bdd8dc9809000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156c0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c341f6c5010f85d00000004d8b55004d8b5d084d8b024d89c14983f805754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701070000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890aeb574983f901754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890aeb034d89e24d89d44d89dd483b65187306ff5558ca0070e926ffffff4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc58dc6308000000004d8965004155498b06498b5e084d8b4610ff15fe0000004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24104d896e0849bdb8e09809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15650000004889c34883fb017504415eeb12488b0424ff15460000004989c6488d6424084c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c410c3f4000000|@3476,1,@16247,@11439,@11438,@11349,@11349,@11349,@11349|118,0,@3469 132,0,@11419 294,0,@11420 326,0,@11421 563,0,@3469 577,0,@11425 747,0,@11426 783,0,@11427 1062,0,@3469 1076,0,@11431 1246,0,@11432 1282,0,@11433 1707,0,@3474 1775,0,@11437 11419:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3470,1,@16227| 11420:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba38d2630800000000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3471,1,@16228,@11356|133,0,@3431 11421:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdd8d49809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@3472,1,@16230,@11424,@11423,@11349|372,0,@11422 11422:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16229| 11423:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16232| 11424:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16231| 11425:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3470,1,@16233| 11426:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3473,1,@16234| 11427:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd10da9809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@3472,1,@16236,@11430,@11429,@11349|372,0,@11428 11428:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16235| 11429:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16238| 11430:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16237| 11431:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3470,1,@16239| 11432:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3473,1,@16240| 11433:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd48df9809000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@3472,1,@16242,@11436,@11435,@11349|372,0,@11434 11434:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16241| 11435:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16244| 11436:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16243| 11437:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16245| 11438:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16249| 11439:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16248| 11440:D9,7248|483b65187305ff5558cd054c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304d89f44d8b364983fe010f85610200004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb807110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35c41b0000750949c7c603000000eb2b4c3b35aa1b0000750949c7c603000000eb194c3b35901b0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10e46308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc030f85370d000041ff750841ff75104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdd8f5620800000000e9c80b00004d89f64983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64240849beb8af620800000000e90c0a00004c8b7424184d8b6e084d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8f0e4630800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49bdb8af620800000000e99c0800004c8b6c242841ff75104d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d8b364c8b6c24184983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e56308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef807110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60e56308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd050f85c20900004d8b6e0841ff76104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8f5620800000000e9530800004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e415649be3805110a000000004d8b364d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b62084d89650849bcc05b9909000000004d896500498d47d8483b45107306ff5550ca00604989c748c740f80400000048c740180300000048c74010070000004c89680848c700010000004c89f2ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58e66308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fb010000750949c7c603000000eb2b4c3b35e1010000750949c7c603000000eb194c3b35c7010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38e76308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@3553,1,@16257,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15215 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@3535 674,0,@1044 723,0,@105 757,0,@1756 788,0,@105 822,0,@1308 860,0,@105 912,0,@15180 925,0,@3542 965,0,@1308 1005,0,@105 1039,0,@1308 1077,0,@105 1127,0,@15183 1161,0,@1308 1199,0,@105 1249,0,@15183 1283,0,@1308 1320,0,@105 1370,0,@15099 1404,0,@1308 1442,0,@105 1492,0,@15183 1537,0,@105 1587,0,@15183 1632,0,@1311 1680,0,@866 1725,0,@2021 1769,0,@866 1814,0,@1315 1902,0,@866 1946,0,@2023 1991,0,@866 2035,0,@1315 2123,0,@866 2168,0,@2025 2212,0,@866 2257,0,@1315 2345,0,@866 2389,0,@2027 2434,0,@866 2478,0,@1315 2566,0,@866 2611,0,@2029 2659,0,@1318 2761,0,@105 2811,0,@15099 2856,0,@1311 2904,0,@866 2949,0,@1313 2993,0,@866 3038,0,@1315 3126,0,@866 3170,0,@3189 3215,0,@866 3259,0,@1315 3347,0,@866 3392,0,@3544 3440,0,@1318 3534,0,@105 3589,0,@15219 3634,0,@1985 3682,0,@866 3727,0,@1315 3819,0,@1987 3964,0,@866 4009,0,@3546 4094,0,@1044 4143,0,@105 4177,0,@1756 4206,0,@105 4258,0,@15175 4306,0,@11447 4411,0,@105 4445,0,@1308 4483,0,@105 4533,0,@15183 4567,0,@1308 4605,0,@105 4655,0,@15183 4689,0,@1308 4726,0,@105 4776,0,@15099 4810,0,@1308 4848,0,@105 4898,0,@15183 4943,0,@105 4993,0,@15183 5038,0,@1311 5087,0,@866 5131,0,@2021 5176,0,@866 5220,0,@1315 5308,0,@866 5353,0,@2023 5397,0,@866 5442,0,@1315 5530,0,@866 5574,0,@2025 5619,0,@866 5663,0,@1315 5751,0,@866 5796,0,@2027 5840,0,@866 5885,0,@1315 5973,0,@866 6017,0,@2029 6066,0,@1318 6169,0,@1985 6217,0,@866 6262,0,@1315 6354,0,@1987 6499,0,@866 6544,0,@3554 6629,0,@1044 6650,0,@105 6877,0,@2144 6925,0,@1021 6970,0,@1987 7121,0,@866 7166,0,@3561 11441:D3,18864|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8708c620800000000c34c8b284d89ee4d8b6d004983fd017510488d64240848b818dd630800000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe030f85001d000041ff7424084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb8af620800000000e9941b00004c8b6c240841ff75104d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f44983fe037d0f49beb8af620800000000e9b81300004c8b7424104d8b2e4d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bda8489909000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f44983fe057d0f49bdb8af620800000000e9e91100004c8b7424204d8b6e284d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b820de630800000000ff124889c2488b0424ff124989c641564c8b6c24284d89ee4983fd077d0f49beb8af620800000000e9781000004c8b6c243041ff75204d89f64983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f54983fe097d0f49bdb8af620800000000e9a10800004c8b7424384d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b74244041ff76184c8b7424404983ee0241567115488d64246048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e92a0600004c8b7424084d8b76084d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9ce0400004c8b7424104d8b76184d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9770300004c8b7424184d8b364d89ed4983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e9200200004c8b7424204d8b76104d89ed4983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da4248000000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58de6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90de6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50256308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0de6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00df6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc050f855a0b00004d89ec4d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9e10900004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e98f0800004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef05f6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8df6308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20e06308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd070f85080a0000488d64240841ff760841ff76104983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb8af620800000000e9940800004d89f64983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be0804110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08e16308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38e16308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe090f85ce0b00004d89e64d8b660841ff761041ff76184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb8af620800000000e9580a00004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd30499909000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180700000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9900800004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bea805110a00000000498b16ff124989c641564c8b7424184983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18e26308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0786308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48e26308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d8b6c240841ff7424104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9050900004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd385b9909000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0786308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30e36308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@3485,1,@16254|32,0,@1044 64,0,@3478 89,0,@1044 134,0,@105 168,0,@1308 208,0,@105 242,0,@1308 280,0,@105 330,0,@15183 364,0,@1308 402,0,@105 452,0,@15183 486,0,@1308 523,0,@105 573,0,@15099 607,0,@1308 645,0,@105 695,0,@15183 740,0,@105 790,0,@15183 835,0,@1311 883,0,@866 928,0,@2021 972,0,@866 1017,0,@1315 1105,0,@866 1149,0,@2023 1194,0,@866 1238,0,@1315 1326,0,@866 1371,0,@2025 1415,0,@866 1460,0,@1315 1548,0,@866 1592,0,@2027 1637,0,@866 1681,0,@1315 1769,0,@866 1814,0,@2029 1862,0,@1318 1954,0,@1308 1991,0,@105 2043,0,@15175 2095,0,@11442 2192,0,@1308 2230,0,@105 2282,0,@15180 2295,0,@3486 2335,0,@1308 2375,0,@105 2409,0,@1308 2447,0,@105 2497,0,@15183 2531,0,@1308 2569,0,@105 2619,0,@15183 2653,0,@1308 2690,0,@105 2740,0,@15099 2774,0,@1308 2812,0,@105 2862,0,@15183 2907,0,@105 2957,0,@15183 3002,0,@1311 3050,0,@866 3095,0,@2021 3139,0,@866 3184,0,@1315 3272,0,@866 3316,0,@2023 3361,0,@866 3405,0,@1315 3493,0,@866 3538,0,@2025 3582,0,@866 3627,0,@1315 3715,0,@866 3759,0,@2027 3804,0,@866 3848,0,@1315 3936,0,@866 3981,0,@2029 4029,0,@1318 4121,0,@1308 4159,0,@105 4209,0,@15099 4256,0,@105 4290,0,@1308 4328,0,@105 4378,0,@15183 4412,0,@1308 4450,0,@105 4500,0,@15183 4534,0,@1308 4571,0,@105 4621,0,@15099 4655,0,@1308 4693,0,@105 4743,0,@15183 4791,0,@105 4841,0,@15183 4886,0,@1311 4935,0,@866 4979,0,@2021 5024,0,@866 5068,0,@1315 5156,0,@866 5201,0,@2023 5245,0,@866 5290,0,@1315 5378,0,@866 5422,0,@2025 5467,0,@866 5511,0,@1315 5599,0,@866 5644,0,@2027 5688,0,@866 5733,0,@1315 5821,0,@866 5865,0,@2029 5914,0,@1318 6017,0,@1311 6065,0,@866 6110,0,@3488 6154,0,@866 6199,0,@1315 6287,0,@866 6331,0,@1313 6376,0,@866 6420,0,@1315 6508,0,@866 6553,0,@3189 6597,0,@866 6642,0,@1315 6730,0,@866 6774,0,@3490 6823,0,@866 6867,0,@1315 6955,0,@866 7000,0,@2111 7048,0,@866 7093,0,@1315 7181,0,@866 7225,0,@3492 7274,0,@1318 7419,0,@866 7464,0,@3494 7554,0,@1044 7613,0,@105 7647,0,@1308 7676,0,@105 7759,0,@1308 7790,0,@105 7824,0,@1308 7862,0,@105 7912,0,@15183 7946,0,@1308 7984,0,@105 8034,0,@15183 8068,0,@1308 8105,0,@105 8155,0,@15099 8189,0,@1308 8227,0,@105 8277,0,@15183 8322,0,@105 8372,0,@15183 8417,0,@1311 8465,0,@866 8510,0,@2021 8554,0,@866 8599,0,@1315 8687,0,@866 8731,0,@2023 8776,0,@866 8820,0,@1315 8908,0,@866 8953,0,@2025 8997,0,@866 9042,0,@1315 9130,0,@866 9174,0,@2027 9219,0,@866 9263,0,@1315 9351,0,@866 9396,0,@2029 9444,0,@1318 9538,0,@105 9637,0,@1311 9686,0,@866 9730,0,@2593 9775,0,@866 9819,0,@1315 9907,0,@866 9952,0,@3189 9996,0,@866 10041,0,@1315 10129,0,@866 10173,0,@3501 10222,0,@1318 10367,0,@866 10412,0,@3503 10502,0,@1044 10556,0,@105 10590,0,@1308 10621,0,@105 10655,0,@1308 10693,0,@105 10743,0,@15183 10777,0,@1308 10815,0,@105 10865,0,@15183 10899,0,@1308 10936,0,@105 10986,0,@15099 11020,0,@1308 11058,0,@105 11108,0,@15183 11153,0,@105 11203,0,@15183 11248,0,@1311 11296,0,@866 11341,0,@2021 11385,0,@866 11430,0,@1315 11518,0,@866 11562,0,@2023 11607,0,@866 11651,0,@1315 11739,0,@866 11784,0,@2025 11828,0,@866 11873,0,@1315 11961,0,@866 12005,0,@2027 12050,0,@866 12094,0,@1315 12182,0,@866 12227,0,@2029 12275,0,@1318 12369,0,@105 12424,0,@15156 12469,0,@1311 12517,0,@866 12562,0,@3510 12606,0,@866 12651,0,@1315 12739,0,@866 12783,0,@3189 12832,0,@1318 12977,0,@866 13022,0,@3512 13112,0,@1044 13167,0,@105 13201,0,@1308 13230,0,@105 13282,0,@15175 13334,0,@11444 13431,0,@1308 13460,0,@105 13515,0,@15182 13553,0,@105 13587,0,@1308 13625,0,@105 13675,0,@15183 13709,0,@1308 13747,0,@105 13797,0,@15183 13831,0,@1308 13868,0,@105 13918,0,@15099 13952,0,@1308 13990,0,@105 14040,0,@15183 14085,0,@105 14135,0,@15183 14180,0,@1311 14228,0,@866 14273,0,@2021 14317,0,@866 14362,0,@1315 14450,0,@866 14494,0,@2023 14539,0,@866 14583,0,@1315 14671,0,@866 14716,0,@2025 14760,0,@866 14805,0,@1315 14893,0,@866 14937,0,@2027 14982,0,@866 15026,0,@1315 15114,0,@866 15159,0,@2029 15207,0,@1318 15310,0,@1311 15359,0,@866 15403,0,@3189 15448,0,@866 15492,0,@1315 15580,0,@866 15625,0,@3519 15669,0,@866 15714,0,@1315 15802,0,@866 15846,0,@2801 15895,0,@1318 16040,0,@866 16085,0,@3521 16175,0,@1044 16209,0,@105 16243,0,@1308 16272,0,@105 16324,0,@15175 16376,0,@11445 16477,0,@105 16511,0,@1308 16549,0,@105 16599,0,@15183 16633,0,@1308 16671,0,@105 16721,0,@15183 16755,0,@1308 16792,0,@105 16842,0,@15099 16876,0,@1308 16914,0,@105 16964,0,@15183 17009,0,@105 17059,0,@15183 17104,0,@1311 17153,0,@866 17197,0,@2021 17242,0,@866 17286,0,@1315 17374,0,@866 17419,0,@2023 17463,0,@866 17508,0,@1315 17596,0,@866 17640,0,@2025 17685,0,@866 17729,0,@1315 17817,0,@866 17862,0,@2027 17906,0,@866 17951,0,@1315 18039,0,@866 18083,0,@2029 18132,0,@1318 18235,0,@1311 18283,0,@866 18328,0,@3189 18372,0,@866 18417,0,@1315 18505,0,@866 18549,0,@2801 18598,0,@1318 18743,0,@866 18788,0,@3528 11442:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3485,1,@16250| 11443:D3,32|483b65187305ff5558cd0149bed807110a00000000498b16ff22f40000000000|@2099,1,@16251|13,0,@15217 11444:D3,4576|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdd8f5620800000000e9411100004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bed8f5620800000000e9ee0700004c8b7424084d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b74241041ff76084c8b7424104983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8166308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49bed8f5620800000000e9f10700004d89ed4d8b75004d8b76084d89e54983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424104d8b2e41ff75104d89f64d8b76084983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@466,1,@16252|37,0,@1756 78,0,@105 112,0,@1756 149,0,@105 199,0,@15099 246,0,@105 280,0,@1308 318,0,@105 368,0,@15183 402,0,@1308 440,0,@105 490,0,@15183 524,0,@1308 561,0,@105 611,0,@15099 645,0,@1308 683,0,@105 733,0,@15183 778,0,@105 828,0,@15183 873,0,@1311 921,0,@866 966,0,@2021 1010,0,@866 1055,0,@1315 1143,0,@866 1187,0,@2023 1232,0,@866 1276,0,@1315 1364,0,@866 1409,0,@2025 1453,0,@866 1498,0,@1315 1586,0,@866 1630,0,@2027 1675,0,@866 1719,0,@1315 1807,0,@866 1852,0,@2029 1900,0,@1318 2003,0,@1985 2052,0,@866 2096,0,@1315 2188,0,@1987 2284,0,@1756 2324,0,@105 2425,0,@105 2459,0,@1308 2497,0,@105 2547,0,@15183 2581,0,@1308 2619,0,@105 2669,0,@15183 2703,0,@1308 2740,0,@105 2790,0,@15099 2824,0,@1308 2862,0,@105 2912,0,@15183 2957,0,@105 3007,0,@15183 3052,0,@1311 3100,0,@866 3145,0,@2021 3189,0,@866 3234,0,@1315 3322,0,@866 3366,0,@2023 3411,0,@866 3455,0,@1315 3543,0,@866 3588,0,@2025 3632,0,@866 3677,0,@1315 3765,0,@866 3809,0,@2027 3854,0,@866 3898,0,@1315 3986,0,@866 4031,0,@2029 4079,0,@1318 4182,0,@1985 4231,0,@866 4275,0,@1315 4363,0,@866 4408,0,@1315 4500,0,@1987 11445:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3485,1,@16253| 11446:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16255|13,0,@15218 11447:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3553,1,@16256| 11448:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3568,1,@16258| 11449:D12,984|483b65187306ff5558ca0d015041504c8b334d89f54983fe050f85ec000000488b4308ff73104d8d6fd84c3b6d107305ff5550cd0d4d89ef49c745f80400000049895d184c8b7424104d8975104989550849bec0609909000000004d8975004d8d77f04c3b75107306ff5550ca05204d89f749c746f8010000004d892e498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004c8973084c8b72084c8933ff15870300004989c641564c8b742418498b064d89f6498b5e084d89f64d8b4610ff155e0300004889c34883fb017504415eeb12488b0424ff153f0300004989c6488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c0010000004883c408c34d89ee4983fd017520488b5b0848ba38d2630800000000488b4424084158488d642408ff25e40200004983fe077516488b5b08488b5210488b4424084158488d642408ff224c8b6b084c8b73104d8b650841ff342441ff751041ff76204d8b762841f6c6010f859b0000004d8b364d8b2e41ff75004d8b6e0841ff75004d8b7610498b06ff157b0200004c8b7424084c89f34983fe0175054989c6eb09ff155a0200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500150000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c408eb0749c7c60100000041564c8b6c240849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060e926ffffff41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7061b00000041564c8b742438498b064d89f6498b5e084d89f64d8b4610ff15b80000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175035beb12488b0424ff156f0000004889c3488d6424084883fb017508415e4883c408eb12488b0424ff15470000004989c6488d6424104c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c418c3f400000000|@3570,1,@16260,@11452,@11453,@11349,@11454,@11455,@11356,@11451,@11349,@11369|83,0,@11450 282,0,@3431 11450:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@3569,1,@16259| 11451:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16265| 11452:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16261| 11453:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16262| 11454:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16263| 11455:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16264| 11456:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3579,1,@16278,@11457| 11457:D9,672|483b65187306ff5558ca09035053415041514c8b6c24104d89ee41ff75084d89f64d8b66084d89e541f6c4010f850f0100004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ea000000488d6424084d89f641ff75004d89f64d8b6e1041ff75004d89f641ff76184c8b742430498b064d89f6498b5e084d89f64d8b4610ff154f0200004989c641564d8d47d04c3b45107303ff55504d89c749c740f8050000004c8b7424204d89f14d8970204c8b7424304d8970184c8b7424384d89701049bef0e86308000000004d89700849be50679909000000004d8930488b442418488b5c2410ff15e10100004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15b90100004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f64d8b6e1041ff75004d89f641ff76184c8b742430498b064d89f6498b5e084d89f64d8b4610ff15590100004989c641564d8d67d04c3b65107303ff55504d89e749c74424f8050000004c8b7424204d89f54d897424204c8b7424304d897424184c8b7424384d8974241049bef0e86308000000004d8974240849bec8679909000000004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24104d895e104d89ed4d896e0849bd40689909000000004d892e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933488b442418ff15710000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15490000004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3f4000000000000|@3580,1,@16279,@11471,@11369,@11349,@11470,@11463,@11349|206,0,@3571 220,0,@11458 432,0,@3571 447,0,@11459 504,0,@11460 11458:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3572,1,@16266| 11459:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3573,1,@16267| 11460:D4,88|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084c8b52104989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3576,1,@16269,@11461| 11461:D6,240|483b65187306ff5558ca090750534150415141524c8b74241841ff76104c8b742428498b064d89f6498b5e084d89f64d8b4610ff15df0000004989c641564d8d47c84c3b45107303ff55504d89c749c740f8060000004c8b7424104c89f34d8970284c8b7424184d89f14d8970204c8b7424284c89f04d8970184c8b7424304d89701049bea0e96308000000004d89700849bef8699909000000004d8930ff156c0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15440000004989c6488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f400|@3577,1,@16270,@11464,@11463,@11349|133,0,@3574 147,0,@11462 11462:D3,88|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@3575,1,@16268| 11463:D9,1072|483b65187306ff5558ca09034989c4415041514d8b74241841ff364d8b1c24498b034d8b6b084d8b731041ff731841ff7424084983fe030f85ca010000a8010f85c00100004c8b304d89f44d8b1e4983fb3375424d8b760841f6c601752f4d8b760841f6c601751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f855e010000488b40084d8b7424084d8b6424184d8b1e4d8b76084d8b164d8d77e84c3b75107306ff5550ca093c4d89f749c746f8020000004d895e0849c706070000004d8d5fe04c3b5d107306ff5550ca09744d89df49c743f80300000049895b104d896b0849c703030000004d89dd4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c703070000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d8975004d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706050000004156ff159b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb62eb004d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049895e104d896e0849c706030000004156ff152f0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156f64424100175564c8b7424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000f64424180175574c8b7424184d8b364d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564d8d6ff04c3b6d107305ff5550cd014d89ef49c745f8010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e084c8b6c24284d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff157f0000004889c34883fb017507488b442410eb0b488b442410ff155c000000488b1c24ff154a000000488d6424084c8b2c244d89ee4983fd017506488d642438c34c89f3488d642438ff251c000000f4000000|@3578,1,@16272,@11466,@11369,@11467,@11468,@11469,@11465| 11464:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16271| 11465:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16277| 11466:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16273| 11467:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16274| 11468:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16275| 11469:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16276| 11470:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16281| 11471:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16280| 11472:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3466,1,@16282| 11473:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@3467,1,@16283,@11474,@11349,@11369| 11474:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16284| 11475:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3585,1,@16291,@11476| 11476:D4,800|483b65187306ff5558ca09035053415041514c8b6c24104d8b750841ff364d89ed4d89ee41ff75004d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff76206a016a01488b542438488b442450488b5c24184989e0ff12415c415e4d8b0c244c8b1c244d8b134d3bca7502eb364d8b294e8d2c6d010000004d8b024c89c14e8d0445010000004d3be80f85a4000000498d7108498d7a08483bc9f3a67405e9900000004d8b6c24084d89db4d8b53084d3bea75574d8b6c24104d89db4d8b53104d3bea753d4d8b6c24184d89db4d8b53184d3bea75234d8b6c24204d89db4d8b5b204d3beb750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd03751b488d642430415d4d8965004d89750848c7c0010000004883c410c34d8d4fd04c3b4d107303ff55504d89cf49c741f8050000004c8b7424284d89f04d8971204c8b7424384d8971184c8b6c24404d89ee4d89691049bd70eb6308000000004d89690849bd087a9909000000004d89294d8d57d04c3b55107306ff5550ca00434d89d749c742f80500000041c642ff4049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d67c84c3b65107306ff5550ca00474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd807a9909000000004d89d34d894b204d896318488b7c240849897b104d89c04d8943084d892b418062ffbf49bd607b9909000000004d89e34d894b284d8953204c8b5424204d8953184c8b5424104d8953104c8b5424184d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000900000041554d89f6498b064d89f6498b5e084d89f64d8b4610ff15660000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24304c8b24244d896500488d6424484d89750848c7c001000000c3f400|@3586,1,@16292,@11349|370,0,@3581 384,0,@11477 555,0,@11478 600,0,@11479 11477:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3582,1,@16285| 11478:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3583,1,@16286| 11479:D6,416|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89f64d8b76184d89750849c745001b0000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049c74608010000004d892e415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd407d9909000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@3584,1,@16288,@11482,@11481,@11349|224,0,@11480 11480:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16287| 11481:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16290| 11482:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16289| 11483:D6,184|483b65187305ff5558cd01ff304c8b68084d8b750841ff75104d8b364983fe01750949c7c601000000eb104d8b36498b4618ff15a80000004989c641564c8b742410498b064d89f6498b5e084d89f64d8b4610ff157f0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15570000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3f4000000000000|@3588,1,@16293,@11484,@11349,@11383| 11484:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16294| 11485:D3,152|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d896500498d47e0483b45107306ff5550ca00604989c748c740f80300000048c74010010000004c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@3589,1,@16295| 11486:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@3593,1,@16297,@11487| 11487:D6,400|483b65187306ff5558ca09035053415041514c8b7424104d89f541ff364d89ed4d89ee41ff75084d89f641ff76104c8b742430498b064d89f6498b5e084d89f64d8b4610ff156e0100004989c641564d8d67d04c3b65107303ff55504d89e749c74424f8050000004c8b6c24204d89ee4d896c24204c8b6c24304d896c24184c8b6c24384d896c241049bdb0ed6308000000004d896c240849bd40839909000000004d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64c89334d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca08404989c748c740f8020000004c8970084c8b7424184c8930ff156f0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15470000004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3f400000000|@3594,1,@16298,@11489,@11369,@11349|139,0,@3591 154,0,@11488 11488:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@3592,1,@16296| 11489:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16299| 11490:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16337| 11491:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16301| 11492:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16302| 11493:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16303| 11494:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16304| 11495:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16305| 11496:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16306| 11497:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16307| 11498:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16308| 11499:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16309| 11500:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16310| 11501:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16311| 11502:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16312| 11503:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16313| 11504:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16314| 11505:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16315| 11506:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16316| 11507:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16317| 11508:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16318| 11509:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16319| 11510:D3,152|483b65187305ff5558cd09a801757dff30488b4008488b0b4c8d344d010000004c8b2c244d8b65004e8d2465010000004d3bf47f4d488d73084d89ed498d7d08483bc9f3a67534e8b4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb05488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@16320| 11511:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16321| 11512:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16322| 11513:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16323| 11514:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16324| 11515:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16325| 11516:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16326| 11517:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16327| 11518:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16328| 11519:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16329| 11520:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16330| 11521:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16331| 11522:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16332| 11523:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16333| 11524:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16334| 11525:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16335| 11526:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706010000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16336| 11527:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@3597,1,@16338| 11528:D3,102184|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c34c8b284d89ec4d8b6d004983fd010f85eb10000041ff7424084983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e97f0f00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd68289b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb8af620800000000e9af0d00004c8b7424184d8b6e284d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b808f0630800000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb8af620800000000e93f0c00004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb8af620800000000e9e70a00004c8b6c243041ff75084d89f64983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe097d0f49bdb8af620800000000e9100300004c8b7424384d8b6e104d89e44983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d104d896e0849bd502c9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424484d8b6e204c8b6424404983ec027115488d64245848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d084d896e0849bd902c9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0f06308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8f06308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30f16308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68f16308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0f16308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8f16308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc030f855a0b00004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9e10900004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e98f0800004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08f36308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38f36308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68f36308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe050f85290e000041ff75084983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9be0c00004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e9630b00004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b840f4630800000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb8af620800000000e9f30900004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7618498b16ff124989c641564c8b7424204d89f54983fe077d0f49beb8af620800000000e99d0800004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b74243041ff76204c8b7424304983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78f46308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0f46308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e56308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50216308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0f46308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd070f852015000041ff7424084983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9b41300004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8b8f5630800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9431200004c8b6c241841ff75204d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e96c0a00004c8b6c242041ff75184d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f44983fe077d0f49beb8af620800000000e9940200004c8b7424284d8b6e084d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d204d896e0849bd602d9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424384d8b364c8b6c24304983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424404d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8426308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10f66308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40f66308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78f66308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc090f85940f000041ff76084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9290e00004c8b7424084d8b6e204d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b850f7630800000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9b80c00004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e9620b00004c8b6c242041ff75184d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f54983fe077d0f49beb8af620800000000e98a0300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7618498b16ff124989c641564c8b7424284d89f44983fe097d0f49bdb8af620800000000e9350200004c8b7424304d8b6e284d89e44983ec027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8f8f7630800000000ff124889c2488b0424ff124989c641564c8b7424404d8b76104c8b6c24384983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7618498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0f86308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f86308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8426308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08f96308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38f96308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70f96308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe0b0f85550b00004d8b750841ff751041ff75184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e9e20900004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb807110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e98f0800004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88266308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00fa6308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30fa6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd0d0f85191b0000488d64240841ff7424084983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241049bdb8af620800000000e9a81900004c8b6c240841ff75204d89f64983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9cc1100004c8b6c241041ff75004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9f50900004c8b7424184d8b76104d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24184d89ee4983fd077d0f49beb8af620800000000e99d0800004c8b6c242041ff75084d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d8b76184c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10fb6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48fb6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78fb6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0fb6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0fb6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc0f0f857b0b0000488d6424084d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9fd0900004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2808110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9aa0800004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be3805110a00000000498b1648b880ff630800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8ff6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8ff6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18006408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe117510488d64240848b8f800640800000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd130f85c40900004d8b6c240841ff7424104983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8f5620800000000e9530800004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d284d896e0849bd70359b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8016408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc150f85c20900004d8b660841ff76104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e9530800004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bdb0359b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80036408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe170f85e80b00004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb8af620800000000e9720a00004d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b85804640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e90a0900004d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d204d896e0849bd40399b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90046408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8046408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd190f85330e00004d8b6c240841ff7424204983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9c20c00004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d304d896e0849bd80399b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9fa0a00004d89ed4d89ee4983ed027115488d64242848b8d006620800000000488b5d08ff234983fd017d0c49bdb8af620800000000eb434d89ec4983ec027115488d64242848b8d006620800000000488b5d08ff234983ed027115488d64242848b8d006620800000000488b5d08ff2349bdc0056408000000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda0b06208000000004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64d89f54983fe057d0f49bdb8af620800000000e91c0900004d89ed4d89ee4983ed027115488d64243048b8d006620800000000488b5d08ff234983fd017d0c49bdb8af620800000000eb434d89ec4983ec027115488d64243048b8d006620800000000488b5d08ff234983ed027115488d64243048b8d006620800000000488b5d08ff2349bdc0056408000000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda0b06208000000004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38066408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70066408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8066408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8066408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc1b0f85a81300004d89f44d8b74240841ff74241041ff74241841ff7424204983ed0241557115488d64242848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb8af620800000000e92a1200004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9d81000004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d204d896e0849bdc0399b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e90c0f00004d89f64983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424384d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424404d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424484d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424504d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424584d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40f66308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8076408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60636308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8076408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe1d0f855f0e0000488d64240841ff75084983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e9ef0c00004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8c808640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e97e0b00004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb8af620800000000e9a70300004c8b7424204d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424204d89f44983fe077d0f49beb8af620800000000e9500200004c8b7424284d8b6e204d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b80009640800000000ff124889c2488b0424ff124989c641564c8b7424384d8b6e084c8b6424304983ec027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b85809640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88266308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90096408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8096408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd1f0f85400d000041ff7424084d8b6c241041ff74241841ff7424204983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242849bdb8af620800000000e9c50b00004d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8a00a640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e95d0a00004d89f64983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bea805110a00000000498b16ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e90a0900004d89f64983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24304d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d184d896e0849bd183b9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90226308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18e26308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd800b6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc210f85590b000041ff760841ff761041ff76184983ed0241557115488d64242848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242849bdb8af620800000000e9e60900004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424204d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9130200004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7618498b16ff124989c641564c8b7424104983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c89304c8b7424304d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be580c6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd880c6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc00c6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe230f85e70b00004d89ee41ff76084d8b6e1041ff76184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb8af620800000000e9710a00004d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd784f9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9a90800004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b8b80d640800000000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e56308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef00d6408000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd280e6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd250f85d00c0000488d64240841ff74240841ff74241041ff7424184d8b6c24204983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9500b00004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bef807110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9fd0900004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b8000f640800000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e9910800004d89f64983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049be7800110a00000000498b16ff124989c641564c8b7424204983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be380f6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e56308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be700f6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda80f6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc270f851a0f000041ff76084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9af0d00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd48509b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb8af620800000000e9df0b00004c8b7424184d8b6e084d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d184d896e0849bd90539b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb8af620800000000e90f0a00004c8b7424284d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb8af620800000000e9b70800004c8b6c243041ff75184d89f64983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424384d8b6e204c8b6424304983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8d011640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40126408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78126408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0126408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8666308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0126408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe290f85780e0000488d64240841ff75084983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e9080d00004c8b7424084d8b2e4d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b8b813640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9980b00004c8b6c241841ff75084d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f44983fe057d0f49bdb8af620800000000e9c10300004c8b7424204d8b6e184d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8a01f640800000000ff124889c2488b0424ff124989c641564c8b7424284d89f44983fe077d0f49beb8af620800000000e9500200004c8b7424304d8b6e204d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b81020640800000000ff124889c2488b0424ff124989c641564c8b7424404d8b6e104c8b6424384983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b88020640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0206408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28216408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60216408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0126408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98216408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd2b0f85570b00004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9e10900004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7618498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e98f0800004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08f36308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38f36308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70226408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc2d0f85510900004d89f44d8b74240841ff7424104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8f5620800000000e9dd0700004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48236408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe2f0f854c0900004d8b750841ff75104983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8f5620800000000e9dd0700004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28246408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd310f85b60c0000488d64240841ff74240841ff7424104d8b6c241841ff7424204983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9360b00004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bee807110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9e30900004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104d89ee4983fd057d0f49bdb8af620800000000e9150200004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049be7800110a00000000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bee807110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60226308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8246408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0246408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc330f85e40b000041ff76084d8b661041ff76184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb8af620800000000e9710a00004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be8805110a00000000498b1648b8c825640800000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9090900004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d184d896e0849bd68929b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0786308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00266408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe350f85c50900004d89ee4d8b6e0841ff76104983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8f5620800000000e9530800004d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda8929b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0266408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd370f8598070000488d64240841ff7424084983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0276408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc390f85310e00004d8b660841ff76204983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9c20c00004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d384d896e0849bde8929b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9fa0a00004d89ed4d89ee4983ed027115488d64242848b8d006620800000000488b5d08ff234983fd017d0c49bdb8af620800000000eb434d89ec4983ec027115488d64242848b8d006620800000000488b5d08ff234983ed027115488d64242848b8d006620800000000488b5d08ff2349bdc0056408000000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda0b06208000000004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64d89f54983fe057d0f49bdb8af620800000000e91c0900004d89ed4d89ee4983ed027115488d64243048b8d006620800000000488b5d08ff234983fd017d0c49bdb8af620800000000eb434d89ec4983ec027115488d64243048b8d006620800000000488b5d08ff234983ed027115488d64243048b8d006620800000000488b5d08ff2349bdc0056408000000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda0b06208000000004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38066408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70066408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8066408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8286408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe3b0f85c40c00004d8b750841ff751041ff751841ff75204983ec0241547115488d64242848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb8af620800000000e94d0b00004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9fb0900004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be8805110a00000000498b1648b89829640800000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e98f0800004d89f64983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983ee027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c89304c8b7424404d8b7618498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8426308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd402a6408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8666308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd782a6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89e64983fc037d0b48b8708c620800000000c341ff75084983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd502b6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@3860,1,@16427|32,0,@1044 81,0,@105 115,0,@1308 152,0,@105 204,0,@15175 256,0,@11529 353,0,@1308 391,0,@105 443,0,@15180 456,0,@3605 496,0,@1308 534,0,@105 584,0,@15182 618,0,@1308 658,0,@105 692,0,@1308 730,0,@105 780,0,@15183 814,0,@1308 852,0,@105 902,0,@15183 936,0,@1308 973,0,@105 1023,0,@15099 1057,0,@1308 1095,0,@105 1145,0,@15183 1190,0,@105 1240,0,@15183 1285,0,@1311 1333,0,@866 1378,0,@2021 1422,0,@866 1467,0,@1315 1555,0,@866 1599,0,@2023 1644,0,@866 1688,0,@1315 1776,0,@866 1821,0,@2025 1865,0,@866 1910,0,@1315 1998,0,@866 2042,0,@2027 2087,0,@866 2131,0,@1315 2219,0,@866 2264,0,@2029 2312,0,@1318 2404,0,@1308 2442,0,@105 2494,0,@15175 2546,0,@11535 2654,0,@105 2706,0,@15175 2758,0,@11536 2871,0,@1311 2919,0,@866 2964,0,@3611 3008,0,@866 3053,0,@1315 3141,0,@866 3185,0,@3613 3234,0,@866 3278,0,@1315 3366,0,@866 3411,0,@3189 3455,0,@866 3500,0,@1315 3588,0,@866 3632,0,@3615 3677,0,@866 3721,0,@1315 3809,0,@866 3854,0,@3617 3902,0,@866 3947,0,@1315 4035,0,@866 4079,0,@3619 4128,0,@1318 4273,0,@866 4318,0,@3621 4408,0,@1044 4467,0,@105 4501,0,@1308 4530,0,@105 4613,0,@1308 4644,0,@105 4678,0,@1308 4716,0,@105 4766,0,@15183 4800,0,@1308 4838,0,@105 4888,0,@15183 4922,0,@1308 4959,0,@105 5009,0,@15099 5043,0,@1308 5081,0,@105 5131,0,@15183 5176,0,@105 5226,0,@15183 5271,0,@1311 5319,0,@866 5364,0,@2021 5408,0,@866 5453,0,@1315 5541,0,@866 5585,0,@2023 5630,0,@866 5674,0,@1315 5762,0,@866 5807,0,@2025 5851,0,@866 5896,0,@1315 5984,0,@866 6028,0,@2027 6073,0,@866 6117,0,@1315 6205,0,@866 6250,0,@2029 6298,0,@1318 6392,0,@105 6491,0,@1311 6540,0,@866 6584,0,@3629 6629,0,@866 6673,0,@1315 6761,0,@866 6806,0,@3189 6850,0,@866 6895,0,@1315 6983,0,@866 7027,0,@3631 7076,0,@1318 7221,0,@866 7266,0,@3633 7356,0,@1044 7400,0,@105 7434,0,@1308 7472,0,@105 7555,0,@1308 7593,0,@105 7645,0,@15180 7658,0,@3640 7698,0,@1308 7735,0,@105 7818,0,@1308 7856,0,@105 7906,0,@15182 7953,0,@105 7987,0,@1308 8025,0,@105 8075,0,@15183 8109,0,@1308 8147,0,@105 8197,0,@15183 8231,0,@1308 8268,0,@105 8318,0,@15099 8352,0,@1308 8390,0,@105 8440,0,@15183 8485,0,@105 8535,0,@15183 8580,0,@1311 8628,0,@866 8673,0,@2021 8717,0,@866 8762,0,@1315 8850,0,@866 8894,0,@2023 8939,0,@866 8983,0,@1315 9071,0,@866 9116,0,@2025 9160,0,@866 9205,0,@1315 9293,0,@866 9337,0,@2027 9382,0,@866 9426,0,@1315 9514,0,@866 9559,0,@2029 9607,0,@1318 9710,0,@1311 9759,0,@866 9803,0,@3189 9848,0,@866 9892,0,@1315 9980,0,@866 10025,0,@3642 10069,0,@866 10114,0,@1315 10202,0,@866 10246,0,@3644 10291,0,@866 10335,0,@1315 10423,0,@866 10468,0,@3544 10516,0,@866 10561,0,@1315 10649,0,@866 10693,0,@2077 10742,0,@1318 10887,0,@866 10932,0,@3646 11022,0,@1044 11068,0,@105 11102,0,@1308 11140,0,@105 11192,0,@15180 11205,0,@3653 11245,0,@1308 11285,0,@105 11319,0,@1308 11357,0,@105 11407,0,@15183 11441,0,@1308 11479,0,@105 11529,0,@15183 11563,0,@1308 11600,0,@105 11650,0,@15099 11684,0,@1308 11722,0,@105 11772,0,@15183 11817,0,@105 11867,0,@15183 11912,0,@1311 11960,0,@866 12005,0,@2021 12049,0,@866 12094,0,@1315 12182,0,@866 12226,0,@2023 12271,0,@866 12315,0,@1315 12403,0,@866 12448,0,@2025 12492,0,@866 12537,0,@1315 12625,0,@866 12669,0,@2027 12714,0,@866 12758,0,@1315 12846,0,@866 12891,0,@2029 12939,0,@1318 13031,0,@1308 13071,0,@105 13105,0,@1308 13143,0,@105 13193,0,@15183 13227,0,@1308 13265,0,@105 13315,0,@15183 13349,0,@1308 13386,0,@105 13436,0,@15099 13470,0,@1308 13508,0,@105 13558,0,@15183 13603,0,@105 13653,0,@15183 13698,0,@1311 13746,0,@866 13791,0,@2021 13835,0,@866 13880,0,@1315 13968,0,@866 14012,0,@2023 14057,0,@866 14101,0,@1315 14189,0,@866 14234,0,@2025 14278,0,@866 14323,0,@1315 14411,0,@866 14455,0,@2027 14500,0,@866 14544,0,@1315 14632,0,@866 14677,0,@2029 14725,0,@1318 14817,0,@1308 14855,0,@105 14907,0,@15175 14959,0,@11539 15066,0,@105 15160,0,@1311 15209,0,@866 15253,0,@2351 15298,0,@866 15342,0,@1315 15430,0,@866 15475,0,@3656 15523,0,@866 15568,0,@1315 15656,0,@866 15700,0,@3189 15745,0,@866 15789,0,@1315 15877,0,@866 15922,0,@3658 15966,0,@866 16011,0,@1315 16099,0,@866 16143,0,@3544 16192,0,@1318 16337,0,@866 16382,0,@3660 16472,0,@1044 16517,0,@105 16551,0,@1308 16589,0,@105 16641,0,@15180 16654,0,@3667 16694,0,@1308 16732,0,@105 16815,0,@1308 16855,0,@105 16889,0,@1308 16927,0,@105 16977,0,@15183 17011,0,@1308 17049,0,@105 17099,0,@15183 17133,0,@1308 17170,0,@105 17220,0,@15099 17254,0,@1308 17292,0,@105 17342,0,@15183 17387,0,@105 17437,0,@15183 17482,0,@1311 17530,0,@866 17575,0,@2021 17619,0,@866 17664,0,@1315 17752,0,@866 17796,0,@2023 17841,0,@866 17885,0,@1315 17973,0,@866 18018,0,@2025 18062,0,@866 18107,0,@1315 18195,0,@866 18239,0,@2027 18284,0,@866 18328,0,@1315 18416,0,@866 18461,0,@2029 18509,0,@1318 18601,0,@1308 18638,0,@105 18721,0,@1308 18759,0,@105 18811,0,@15180 18824,0,@3673 18875,0,@105 18969,0,@1311 19017,0,@866 19062,0,@3679 19106,0,@866 19151,0,@1315 19239,0,@866 19283,0,@3681 19332,0,@866 19376,0,@1315 19464,0,@866 19509,0,@2351 19553,0,@866 19598,0,@1315 19686,0,@866 19730,0,@3189 19775,0,@866 19819,0,@1315 19907,0,@866 19952,0,@3683 19996,0,@866 20041,0,@1315 20129,0,@866 20173,0,@3685 20222,0,@1318 20367,0,@866 20412,0,@3687 20502,0,@1044 20554,0,@105 20588,0,@1308 20617,0,@105 20667,0,@15215 20701,0,@1308 20732,0,@105 20766,0,@1308 20804,0,@105 20854,0,@15183 20888,0,@1308 20926,0,@105 20976,0,@15183 21010,0,@1308 21047,0,@105 21097,0,@15099 21131,0,@1308 21169,0,@105 21219,0,@15183 21264,0,@105 21314,0,@15183 21359,0,@1311 21407,0,@866 21452,0,@2021 21496,0,@866 21541,0,@1315 21629,0,@866 21673,0,@2023 21718,0,@866 21762,0,@1315 21850,0,@866 21895,0,@2025 21939,0,@866 21984,0,@1315 22072,0,@866 22116,0,@2027 22161,0,@866 22205,0,@1315 22293,0,@866 22338,0,@2029 22386,0,@1318 22480,0,@105 22579,0,@1311 22628,0,@866 22672,0,@2122 22717,0,@866 22761,0,@1315 22849,0,@866 22894,0,@3189 22938,0,@866 22983,0,@1315 23071,0,@866 23115,0,@3691 23164,0,@1318 23309,0,@866 23354,0,@3693 23444,0,@1044 23495,0,@105 23529,0,@1308 23569,0,@105 23603,0,@1308 23641,0,@105 23691,0,@15183 23725,0,@1308 23763,0,@105 23813,0,@15183 23847,0,@1308 23884,0,@105 23934,0,@15099 23968,0,@1308 24006,0,@105 24056,0,@15183 24101,0,@105 24151,0,@15183 24196,0,@1311 24244,0,@866 24289,0,@2021 24333,0,@866 24378,0,@1315 24466,0,@866 24510,0,@2023 24555,0,@866 24599,0,@1315 24687,0,@866 24732,0,@2025 24776,0,@866 24821,0,@1315 24909,0,@866 24953,0,@2027 24998,0,@866 25042,0,@1315 25130,0,@866 25175,0,@2029 25223,0,@1318 25315,0,@1308 25355,0,@105 25389,0,@1308 25427,0,@105 25477,0,@15183 25511,0,@1308 25549,0,@105 25599,0,@15183 25633,0,@1308 25670,0,@105 25720,0,@15099 25754,0,@1308 25792,0,@105 25842,0,@15183 25887,0,@105 25937,0,@15183 25982,0,@1311 26030,0,@866 26075,0,@2021 26119,0,@866 26164,0,@1315 26252,0,@866 26296,0,@2023 26341,0,@866 26385,0,@1315 26473,0,@866 26518,0,@2025 26562,0,@866 26607,0,@1315 26695,0,@866 26739,0,@2027 26784,0,@866 26828,0,@1315 26916,0,@866 26961,0,@2029 27009,0,@1318 27101,0,@1308 27139,0,@105 27189,0,@15099 27223,0,@1308 27263,0,@105 27297,0,@1308 27335,0,@105 27385,0,@15183 27419,0,@1308 27457,0,@105 27507,0,@15183 27541,0,@1308 27578,0,@105 27628,0,@15099 27662,0,@1308 27700,0,@105 27750,0,@15183 27795,0,@105 27845,0,@15183 27890,0,@1311 27938,0,@866 27983,0,@2021 28027,0,@866 28072,0,@1315 28160,0,@866 28204,0,@2023 28249,0,@866 28293,0,@1315 28381,0,@866 28426,0,@2025 28470,0,@866 28515,0,@1315 28603,0,@866 28647,0,@2027 28692,0,@866 28736,0,@1315 28824,0,@866 28869,0,@2029 28917,0,@1318 29020,0,@105 29070,0,@15099 29115,0,@1311 29164,0,@866 29208,0,@3700 29253,0,@866 29297,0,@1315 29385,0,@866 29430,0,@3702 29474,0,@866 29519,0,@1315 29607,0,@866 29651,0,@3704 29696,0,@866 29740,0,@1315 29828,0,@866 29873,0,@3706 29917,0,@866 29962,0,@1315 30050,0,@866 30094,0,@3189 30143,0,@1318 30288,0,@866 30333,0,@3708 30423,0,@1044 30487,0,@105 30521,0,@1308 30550,0,@105 30600,0,@15222 30634,0,@1308 30665,0,@105 30699,0,@1308 30737,0,@105 30787,0,@15183 30821,0,@1308 30859,0,@105 30909,0,@15183 30943,0,@1308 30980,0,@105 31030,0,@15099 31064,0,@1308 31102,0,@105 31152,0,@15183 31197,0,@105 31247,0,@15183 31292,0,@1311 31340,0,@866 31385,0,@2021 31429,0,@866 31474,0,@1315 31562,0,@866 31606,0,@2023 31651,0,@866 31695,0,@1315 31783,0,@866 31828,0,@2025 31872,0,@866 31917,0,@1315 32005,0,@866 32049,0,@2027 32094,0,@866 32138,0,@1315 32226,0,@866 32271,0,@2029 32319,0,@1318 32413,0,@105 32470,0,@15175 32483,0,@3738 32539,0,@1311 32588,0,@866 32632,0,@3740 32677,0,@866 32721,0,@1315 32809,0,@866 32854,0,@3189 32898,0,@866 32943,0,@1315 33031,0,@866 33075,0,@3742 33124,0,@1318 33269,0,@866 33314,0,@3744 33404,0,@1044 33432,0,@3751 33457,0,@1044 33508,0,@105 33542,0,@1756 33571,0,@105 33623,0,@15175 33675,0,@11548 33776,0,@105 33810,0,@1308 33848,0,@105 33898,0,@15183 33932,0,@1308 33970,0,@105 34020,0,@15183 34054,0,@1308 34091,0,@105 34141,0,@15099 34175,0,@1308 34213,0,@105 34263,0,@15183 34308,0,@105 34358,0,@15183 34403,0,@1311 34452,0,@866 34496,0,@2021 34541,0,@866 34585,0,@1315 34673,0,@866 34718,0,@2023 34762,0,@866 34807,0,@1315 34895,0,@866 34939,0,@2025 34984,0,@866 35028,0,@1315 35116,0,@866 35161,0,@2027 35205,0,@866 35250,0,@1315 35338,0,@866 35382,0,@2029 35431,0,@1318 35534,0,@1985 35582,0,@866 35627,0,@1315 35719,0,@1987 35864,0,@866 35909,0,@3759 35999,0,@1044 36048,0,@105 36082,0,@1756 36111,0,@105 36163,0,@15175 36215,0,@11549 36316,0,@105 36350,0,@1308 36388,0,@105 36438,0,@15183 36472,0,@1308 36510,0,@105 36560,0,@15183 36594,0,@1308 36631,0,@105 36681,0,@15099 36715,0,@1308 36753,0,@105 36803,0,@15183 36848,0,@105 36898,0,@15183 36943,0,@1311 36992,0,@866 37036,0,@2021 37081,0,@866 37125,0,@1315 37213,0,@866 37258,0,@2023 37302,0,@866 37347,0,@1315 37435,0,@866 37479,0,@2025 37524,0,@866 37568,0,@1315 37656,0,@866 37701,0,@2027 37745,0,@866 37790,0,@1315 37878,0,@866 37922,0,@2029 37971,0,@1318 38074,0,@1985 38122,0,@866 38167,0,@1315 38259,0,@1987 38404,0,@866 38449,0,@3772 38539,0,@1044 38594,0,@105 38628,0,@1308 38657,0,@105 38709,0,@15180 38722,0,@3779 38762,0,@1308 38793,0,@105 38827,0,@1308 38865,0,@105 38915,0,@15183 38949,0,@1308 38987,0,@105 39037,0,@15183 39071,0,@1308 39108,0,@105 39158,0,@15099 39192,0,@1308 39230,0,@105 39280,0,@15183 39325,0,@105 39375,0,@15183 39420,0,@1311 39468,0,@866 39513,0,@2021 39557,0,@866 39602,0,@1315 39690,0,@866 39734,0,@2023 39779,0,@866 39823,0,@1315 39911,0,@866 39956,0,@2025 40000,0,@866 40045,0,@1315 40133,0,@866 40177,0,@2027 40222,0,@866 40266,0,@1315 40354,0,@866 40399,0,@2029 40447,0,@1318 40541,0,@105 40598,0,@15175 40650,0,@11554 40763,0,@1311 40812,0,@866 40856,0,@3781 40901,0,@866 40945,0,@1315 41033,0,@866 41078,0,@3189 41122,0,@866 41167,0,@1315 41255,0,@866 41299,0,@3544 41348,0,@1318 41493,0,@866 41538,0,@3783 41628,0,@1044 41679,0,@105 41713,0,@1308 41742,0,@105 41794,0,@15175 41846,0,@11555 41943,0,@1308 41975,0,@105 41997,0,@1308 42023,0,@105 42050,0,@105 42066,0,@3791 42109,0,@1318 42200,0,@1308 42232,0,@105 42254,0,@1308 42280,0,@105 42307,0,@105 42323,0,@3791 42366,0,@1318 42461,0,@105 42495,0,@1308 42533,0,@105 42583,0,@15183 42617,0,@1308 42655,0,@105 42705,0,@15183 42739,0,@1308 42776,0,@105 42826,0,@15099 42860,0,@1308 42898,0,@105 42948,0,@15183 42993,0,@105 43043,0,@15183 43088,0,@1311 43137,0,@866 43181,0,@2021 43226,0,@866 43270,0,@1315 43358,0,@866 43403,0,@2023 43447,0,@866 43492,0,@1315 43580,0,@866 43624,0,@2025 43669,0,@866 43713,0,@1315 43801,0,@866 43846,0,@2027 43890,0,@866 43935,0,@1315 44023,0,@866 44067,0,@2029 44116,0,@1318 44219,0,@1311 44267,0,@866 44312,0,@3189 44356,0,@866 44401,0,@1315 44489,0,@866 44533,0,@3796 44578,0,@866 44622,0,@1315 44710,0,@866 44755,0,@3798 44799,0,@866 44844,0,@1315 44932,0,@866 44976,0,@3800 45025,0,@1318 45170,0,@866 45215,0,@3802 45305,0,@1044 45369,0,@105 45403,0,@1308 45432,0,@105 45515,0,@1308 45544,0,@105 45601,0,@15175 45653,0,@11556 45750,0,@1308 45781,0,@105 45815,0,@1308 45853,0,@105 45903,0,@15183 45937,0,@1308 45975,0,@105 46025,0,@15183 46059,0,@1308 46096,0,@105 46146,0,@15099 46180,0,@1308 46218,0,@105 46268,0,@15183 46313,0,@105 46363,0,@15183 46408,0,@1311 46456,0,@866 46501,0,@2021 46545,0,@866 46590,0,@1315 46678,0,@866 46722,0,@2023 46767,0,@866 46811,0,@1315 46899,0,@866 46944,0,@2025 46988,0,@866 47033,0,@1315 47121,0,@866 47165,0,@2027 47210,0,@866 47254,0,@1315 47342,0,@866 47387,0,@2029 47435,0,@1318 47531,0,@105 47565,0,@1308 47603,0,@105 47653,0,@15183 47687,0,@1308 47725,0,@105 47775,0,@15183 47809,0,@1308 47846,0,@105 47896,0,@15099 47930,0,@1308 47968,0,@105 48018,0,@15183 48063,0,@105 48113,0,@15183 48158,0,@1311 48207,0,@866 48251,0,@2021 48296,0,@866 48340,0,@1315 48428,0,@866 48473,0,@2023 48517,0,@866 48562,0,@1315 48650,0,@866 48694,0,@2025 48739,0,@866 48783,0,@1315 48871,0,@866 48916,0,@2027 48960,0,@866 49005,0,@1315 49093,0,@866 49137,0,@2029 49186,0,@1318 49289,0,@1311 49337,0,@866 49382,0,@3189 49426,0,@866 49471,0,@1315 49559,0,@866 49603,0,@3658 49648,0,@866 49692,0,@1315 49780,0,@866 49825,0,@3809 49873,0,@866 49918,0,@1315 50006,0,@866 50050,0,@2622 50099,0,@1318 50244,0,@866 50289,0,@3811 50379,0,@1044 50428,0,@105 50462,0,@1308 50500,0,@105 50552,0,@15180 50565,0,@3818 50605,0,@1308 50645,0,@105 50679,0,@1308 50717,0,@105 50767,0,@15183 50801,0,@1308 50839,0,@105 50889,0,@15183 50923,0,@1308 50960,0,@105 51010,0,@15099 51044,0,@1308 51082,0,@105 51132,0,@15183 51177,0,@105 51227,0,@15183 51272,0,@1311 51320,0,@866 51365,0,@2021 51409,0,@866 51454,0,@1315 51542,0,@866 51586,0,@2023 51631,0,@866 51675,0,@1315 51763,0,@866 51808,0,@2025 51852,0,@866 51897,0,@1315 51985,0,@866 52029,0,@2027 52074,0,@866 52118,0,@1315 52206,0,@866 52251,0,@2029 52299,0,@1318 52391,0,@1308 52428,0,@105 52478,0,@15099 52512,0,@1308 52550,0,@105 52602,0,@15180 52615,0,@3820 52666,0,@105 52718,0,@15180 52731,0,@3823 52787,0,@1311 52836,0,@866 52880,0,@2122 52925,0,@866 52969,0,@1315 53057,0,@866 53102,0,@3825 53150,0,@866 53195,0,@1315 53283,0,@866 53327,0,@1313 53372,0,@866 53416,0,@1315 53504,0,@866 53549,0,@3189 53593,0,@866 53638,0,@1315 53726,0,@866 53770,0,@3544 53819,0,@1318 53964,0,@866 54009,0,@3827 54099,0,@1044 54160,0,@105 54194,0,@1308 54223,0,@105 54275,0,@15180 54288,0,@3834 54328,0,@1308 54357,0,@105 54412,0,@15182 54446,0,@1308 54477,0,@105 54511,0,@1308 54549,0,@105 54599,0,@15183 54633,0,@1308 54671,0,@105 54721,0,@15183 54755,0,@1308 54792,0,@105 54842,0,@15099 54876,0,@1308 54914,0,@105 54964,0,@15183 55009,0,@105 55059,0,@15183 55104,0,@1311 55152,0,@866 55197,0,@2021 55241,0,@866 55286,0,@1315 55374,0,@866 55418,0,@2023 55463,0,@866 55507,0,@1315 55595,0,@866 55640,0,@2025 55684,0,@866 55729,0,@1315 55817,0,@866 55861,0,@2027 55906,0,@866 55950,0,@1315 56038,0,@866 56083,0,@2029 56131,0,@1318 56225,0,@105 56282,0,@15175 56334,0,@11561 56447,0,@1311 56495,0,@866 56540,0,@2088 56584,0,@866 56629,0,@1315 56717,0,@866 56761,0,@3189 56806,0,@866 56850,0,@1315 56938,0,@866 56983,0,@3519 57027,0,@866 57072,0,@1315 57160,0,@866 57204,0,@3544 57253,0,@1318 57398,0,@866 57443,0,@3842 57533,0,@1044 57586,0,@105 57620,0,@1308 57651,0,@105 57685,0,@1308 57723,0,@105 57773,0,@15183 57807,0,@1308 57845,0,@105 57895,0,@15183 57929,0,@1308 57966,0,@105 58016,0,@15099 58050,0,@1308 58088,0,@105 58138,0,@15183 58183,0,@105 58233,0,@15183 58278,0,@1311 58326,0,@866 58371,0,@2021 58415,0,@866 58460,0,@1315 58548,0,@866 58592,0,@2023 58637,0,@866 58681,0,@1315 58769,0,@866 58814,0,@2025 58858,0,@866 58903,0,@1315 58991,0,@866 59035,0,@2027 59080,0,@866 59124,0,@1315 59212,0,@866 59257,0,@2029 59305,0,@1318 59397,0,@1308 59426,0,@105 59516,0,@105 59615,0,@1311 59664,0,@866 59708,0,@3849 59753,0,@866 59797,0,@1315 59885,0,@866 59930,0,@3851 59974,0,@866 60019,0,@1315 60107,0,@866 60151,0,@3189 60200,0,@1318 60345,0,@866 60390,0,@3853 60480,0,@1044 60535,0,@105 60569,0,@1308 60598,0,@105 60650,0,@15175 60702,0,@11563 60799,0,@1308 60828,0,@105 60885,0,@15180 60898,0,@3861 60942,0,@105 60976,0,@1308 61014,0,@105 61064,0,@15183 61098,0,@1308 61136,0,@105 61186,0,@15183 61220,0,@1308 61257,0,@105 61307,0,@15099 61341,0,@1308 61379,0,@105 61429,0,@15183 61474,0,@105 61524,0,@15183 61569,0,@1311 61617,0,@866 61662,0,@2021 61706,0,@866 61751,0,@1315 61839,0,@866 61883,0,@2023 61928,0,@866 61972,0,@1315 62060,0,@866 62105,0,@2025 62149,0,@866 62194,0,@1315 62282,0,@866 62326,0,@2027 62371,0,@866 62415,0,@1315 62503,0,@866 62548,0,@2029 62596,0,@1318 62699,0,@1311 62748,0,@866 62792,0,@3189 62837,0,@866 62881,0,@1315 62969,0,@866 63014,0,@3544 63062,0,@866 63107,0,@1315 63195,0,@866 63239,0,@3863 63288,0,@1318 63433,0,@866 63478,0,@3865 63568,0,@1044 63634,0,@105 63668,0,@1308 63697,0,@105 63747,0,@15219 63781,0,@1308 63810,0,@105 63867,0,@15180 63880,0,@3872 63920,0,@1308 63949,0,@105 64004,0,@15099 64042,0,@105 64076,0,@1308 64114,0,@105 64164,0,@15183 64198,0,@1308 64236,0,@105 64286,0,@15183 64320,0,@1308 64357,0,@105 64407,0,@15099 64441,0,@1308 64479,0,@105 64529,0,@15183 64574,0,@105 64624,0,@15183 64669,0,@1311 64718,0,@866 64762,0,@2021 64807,0,@866 64851,0,@1315 64939,0,@866 64984,0,@2023 65028,0,@866 65073,0,@1315 65161,0,@866 65205,0,@2025 65250,0,@866 65294,0,@1315 65382,0,@866 65427,0,@2027 65471,0,@866 65516,0,@1315 65604,0,@866 65648,0,@2029 65697,0,@1318 65800,0,@1311 65848,0,@866 65893,0,@3189 65937,0,@866 65982,0,@1315 66070,0,@866 66114,0,@3874 66159,0,@866 66203,0,@1315 66291,0,@866 66336,0,@3544 66384,0,@866 66429,0,@1315 66517,0,@866 66561,0,@3876 66610,0,@1318 66755,0,@866 66800,0,@3878 66890,0,@1044 66935,0,@105 66969,0,@1308 67006,0,@105 67058,0,@15175 67110,0,@11566 67207,0,@1308 67245,0,@105 67297,0,@15175 67349,0,@11570 67446,0,@1308 67484,0,@105 67534,0,@15182 67568,0,@1308 67608,0,@105 67642,0,@1308 67680,0,@105 67730,0,@15183 67764,0,@1308 67802,0,@105 67852,0,@15183 67886,0,@1308 67923,0,@105 67973,0,@15099 68007,0,@1308 68045,0,@105 68095,0,@15183 68140,0,@105 68190,0,@15183 68235,0,@1311 68283,0,@866 68328,0,@2021 68372,0,@866 68417,0,@1315 68505,0,@866 68549,0,@2023 68594,0,@866 68638,0,@1315 68726,0,@866 68771,0,@2025 68815,0,@866 68860,0,@1315 68948,0,@866 68992,0,@2027 69037,0,@866 69081,0,@1315 69169,0,@866 69214,0,@2029 69262,0,@1318 69365,0,@105 69417,0,@15180 69430,0,@3897 69486,0,@1311 69535,0,@866 69579,0,@3901 69624,0,@866 69668,0,@1315 69756,0,@866 69801,0,@3189 69845,0,@866 69890,0,@1315 69978,0,@866 70022,0,@3903 70067,0,@866 70111,0,@1315 70199,0,@866 70244,0,@3905 70292,0,@866 70337,0,@1315 70425,0,@866 70469,0,@2651 70518,0,@1318 70663,0,@866 70708,0,@3907 70798,0,@1044 70847,0,@105 70881,0,@1308 70918,0,@105 70970,0,@15175 70983,0,@3914 71023,0,@1308 71063,0,@105 71097,0,@1308 71135,0,@105 71185,0,@15183 71219,0,@1308 71257,0,@105 71307,0,@15183 71341,0,@1308 71378,0,@105 71428,0,@15099 71462,0,@1308 71500,0,@105 71550,0,@15183 71595,0,@105 71645,0,@15183 71690,0,@1311 71738,0,@866 71783,0,@2021 71827,0,@866 71872,0,@1315 71960,0,@866 72004,0,@2023 72049,0,@866 72093,0,@1315 72181,0,@866 72226,0,@2025 72270,0,@866 72315,0,@1315 72403,0,@866 72447,0,@2027 72492,0,@866 72536,0,@1315 72624,0,@866 72669,0,@2029 72717,0,@1318 72809,0,@1308 72847,0,@105 72899,0,@15180 72912,0,@4017 72952,0,@1308 72990,0,@105 73042,0,@15180 73055,0,@4021 73106,0,@105 73158,0,@15180 73171,0,@4025 73227,0,@1311 73276,0,@866 73320,0,@4029 73365,0,@866 73409,0,@1315 73497,0,@866 73542,0,@4031 73590,0,@866 73635,0,@1315 73723,0,@866 73767,0,@4033 73816,0,@866 73860,0,@1315 73948,0,@866 73993,0,@3189 74037,0,@866 74082,0,@1315 74170,0,@866 74214,0,@3905 74263,0,@1318 74408,0,@866 74453,0,@4035 74543,0,@1044 74599,0,@105 74633,0,@1308 74662,0,@105 74745,0,@1308 74776,0,@105 74810,0,@1308 74848,0,@105 74898,0,@15183 74932,0,@1308 74970,0,@105 75020,0,@15183 75054,0,@1308 75091,0,@105 75141,0,@15099 75175,0,@1308 75213,0,@105 75263,0,@15183 75308,0,@105 75358,0,@15183 75403,0,@1311 75451,0,@866 75496,0,@2021 75540,0,@866 75585,0,@1315 75673,0,@866 75717,0,@2023 75762,0,@866 75806,0,@1315 75894,0,@866 75939,0,@2025 75983,0,@866 76028,0,@1315 76116,0,@866 76160,0,@2027 76205,0,@866 76249,0,@1315 76337,0,@866 76382,0,@2029 76430,0,@1318 76524,0,@105 76623,0,@1311 76672,0,@866 76716,0,@3629 76761,0,@866 76805,0,@1315 76893,0,@866 76938,0,@3189 76982,0,@866 77027,0,@1315 77115,0,@866 77159,0,@3631 77208,0,@1318 77353,0,@866 77398,0,@4042 77488,0,@1044 77542,0,@105 77576,0,@1756 77605,0,@105 77692,0,@105 77726,0,@1308 77764,0,@105 77814,0,@15183 77848,0,@1308 77886,0,@105 77936,0,@15183 77970,0,@1308 78007,0,@105 78057,0,@15099 78091,0,@1308 78129,0,@105 78179,0,@15183 78224,0,@105 78274,0,@15183 78319,0,@1311 78368,0,@866 78412,0,@2021 78457,0,@866 78501,0,@1315 78589,0,@866 78634,0,@2023 78678,0,@866 78723,0,@1315 78811,0,@866 78855,0,@2025 78900,0,@866 78944,0,@1315 79032,0,@866 79077,0,@2027 79121,0,@866 79166,0,@1315 79254,0,@866 79298,0,@2029 79347,0,@1318 79450,0,@1985 79498,0,@866 79543,0,@1315 79635,0,@1987 79780,0,@866 79825,0,@4049 79915,0,@1044 79963,0,@105 79997,0,@1756 80026,0,@105 80113,0,@105 80147,0,@1308 80185,0,@105 80235,0,@15183 80269,0,@1308 80307,0,@105 80357,0,@15183 80391,0,@1308 80428,0,@105 80478,0,@15099 80512,0,@1308 80550,0,@105 80600,0,@15183 80645,0,@105 80695,0,@15183 80740,0,@1311 80789,0,@866 80833,0,@2021 80878,0,@866 80922,0,@1315 81010,0,@866 81055,0,@2023 81099,0,@866 81144,0,@1315 81232,0,@866 81276,0,@2025 81321,0,@866 81365,0,@1315 81453,0,@866 81498,0,@2027 81542,0,@866 81587,0,@1315 81675,0,@866 81719,0,@2029 81768,0,@1318 81871,0,@1985 81919,0,@866 81964,0,@1315 82056,0,@1987 82201,0,@866 82246,0,@4056 82336,0,@1044 82402,0,@105 82436,0,@1308 82465,0,@105 82515,0,@15218 82549,0,@1308 82580,0,@105 82614,0,@1308 82652,0,@105 82702,0,@15183 82736,0,@1308 82774,0,@105 82824,0,@15183 82858,0,@1308 82895,0,@105 82945,0,@15099 82979,0,@1308 83017,0,@105 83067,0,@15183 83112,0,@105 83162,0,@15183 83207,0,@1311 83255,0,@866 83300,0,@2021 83344,0,@866 83389,0,@1315 83477,0,@866 83521,0,@2023 83566,0,@866 83610,0,@1315 83698,0,@866 83743,0,@2025 83787,0,@866 83832,0,@1315 83920,0,@866 83964,0,@2027 84009,0,@866 84053,0,@1315 84141,0,@866 84186,0,@2029 84234,0,@1318 84326,0,@1308 84355,0,@105 84410,0,@15099 84446,0,@105 84501,0,@15218 84546,0,@1311 84594,0,@866 84639,0,@2086 84683,0,@866 84728,0,@1315 84816,0,@866 84860,0,@1313 84905,0,@866 84949,0,@1315 85037,0,@866 85082,0,@3189 85126,0,@866 85171,0,@1315 85259,0,@866 85303,0,@4060 85352,0,@1318 85497,0,@866 85542,0,@4062 85632,0,@1044 85685,0,@105 85719,0,@1308 85748,0,@105 85800,0,@15180 85813,0,@4069 85853,0,@1308 85882,0,@105 85939,0,@15175 85991,0,@11611 86092,0,@105 86126,0,@1308 86164,0,@105 86214,0,@15183 86248,0,@1308 86286,0,@105 86336,0,@15183 86370,0,@1308 86407,0,@105 86457,0,@15099 86491,0,@1308 86529,0,@105 86579,0,@15183 86624,0,@105 86674,0,@15183 86719,0,@1311 86767,0,@866 86812,0,@2021 86856,0,@866 86901,0,@1315 86989,0,@866 87033,0,@2023 87078,0,@866 87122,0,@1315 87210,0,@866 87255,0,@2025 87299,0,@866 87344,0,@1315 87432,0,@866 87476,0,@2027 87521,0,@866 87565,0,@1315 87653,0,@866 87698,0,@2029 87746,0,@1318 87849,0,@1311 87898,0,@866 87942,0,@3189 87987,0,@866 88031,0,@1315 88119,0,@866 88164,0,@2801 88212,0,@866 88257,0,@1315 88345,0,@866 88389,0,@3544 88438,0,@1318 88583,0,@866 88628,0,@4071 88718,0,@1044 88769,0,@105 88803,0,@1756 88832,0,@105 88884,0,@15175 88936,0,@11612 89037,0,@105 89071,0,@1308 89109,0,@105 89159,0,@15183 89193,0,@1308 89231,0,@105 89281,0,@15183 89315,0,@1308 89352,0,@105 89402,0,@15099 89436,0,@1308 89474,0,@105 89524,0,@15183 89569,0,@105 89619,0,@15183 89664,0,@1311 89713,0,@866 89757,0,@2021 89802,0,@866 89846,0,@1315 89934,0,@866 89979,0,@2023 90023,0,@866 90068,0,@1315 90156,0,@866 90200,0,@2025 90245,0,@866 90289,0,@1315 90377,0,@866 90422,0,@2027 90466,0,@866 90511,0,@1315 90599,0,@866 90643,0,@2029 90692,0,@1318 90795,0,@1985 90843,0,@866 90888,0,@1315 90980,0,@1987 91125,0,@866 91170,0,@4078 91260,0,@1044 91311,0,@105 91345,0,@1308 91383,0,@105 91433,0,@15183 91467,0,@1308 91505,0,@105 91555,0,@15183 91589,0,@1308 91626,0,@105 91676,0,@15099 91710,0,@1308 91748,0,@105 91798,0,@15183 91843,0,@105 91893,0,@15183 91938,0,@1311 91987,0,@866 92031,0,@2021 92076,0,@866 92120,0,@1315 92208,0,@866 92253,0,@2023 92297,0,@866 92342,0,@1315 92430,0,@866 92474,0,@2025 92519,0,@866 92563,0,@1315 92651,0,@866 92696,0,@2027 92740,0,@866 92785,0,@1315 92873,0,@866 92917,0,@2029 92966,0,@1318 93111,0,@866 93156,0,@4085 93246,0,@1044 93295,0,@105 93329,0,@1308 93358,0,@105 93410,0,@15175 93462,0,@11613 93559,0,@1308 93591,0,@105 93613,0,@1308 93639,0,@105 93666,0,@105 93682,0,@3791 93725,0,@1318 93816,0,@1308 93848,0,@105 93870,0,@1308 93896,0,@105 93923,0,@105 93939,0,@3791 93982,0,@1318 94077,0,@105 94111,0,@1308 94149,0,@105 94199,0,@15183 94233,0,@1308 94271,0,@105 94321,0,@15183 94355,0,@1308 94392,0,@105 94442,0,@15099 94476,0,@1308 94514,0,@105 94564,0,@15183 94609,0,@105 94659,0,@15183 94704,0,@1311 94753,0,@866 94797,0,@2021 94842,0,@866 94886,0,@1315 94974,0,@866 95019,0,@2023 95063,0,@866 95108,0,@1315 95196,0,@866 95240,0,@2025 95285,0,@866 95329,0,@1315 95417,0,@866 95462,0,@2027 95506,0,@866 95551,0,@1315 95639,0,@866 95683,0,@2029 95732,0,@1318 95835,0,@1311 95883,0,@866 95928,0,@3189 95972,0,@866 96017,0,@1315 96105,0,@866 96149,0,@3796 96194,0,@866 96238,0,@1315 96326,0,@866 96371,0,@3798 96415,0,@866 96460,0,@1315 96548,0,@866 96592,0,@3800 96641,0,@1318 96786,0,@866 96831,0,@4093 96921,0,@1044 96977,0,@105 97011,0,@1308 97040,0,@105 97123,0,@1308 97152,0,@105 97209,0,@15180 97222,0,@4100 97262,0,@1308 97293,0,@105 97327,0,@1308 97365,0,@105 97415,0,@15183 97449,0,@1308 97487,0,@105 97537,0,@15183 97571,0,@1308 97608,0,@105 97658,0,@15099 97692,0,@1308 97730,0,@105 97780,0,@15183 97825,0,@105 97875,0,@15183 97920,0,@1311 97968,0,@866 98013,0,@2021 98057,0,@866 98102,0,@1315 98190,0,@866 98234,0,@2023 98279,0,@866 98323,0,@1315 98411,0,@866 98456,0,@2025 98500,0,@866 98545,0,@1315 98633,0,@866 98677,0,@2027 98722,0,@866 98766,0,@1315 98854,0,@866 98899,0,@2029 98947,0,@1318 99041,0,@105 99140,0,@1311 99188,0,@866 99233,0,@2351 99277,0,@866 99322,0,@1315 99410,0,@866 99454,0,@3189 99499,0,@866 99543,0,@1315 99631,0,@866 99676,0,@4106 99724,0,@866 99769,0,@1315 99857,0,@866 99901,0,@2651 99950,0,@1318 100095,0,@866 100140,0,@4108 100230,0,@1044 100258,0,@105 100292,0,@1308 100330,0,@105 100380,0,@15183 100414,0,@1308 100452,0,@105 100502,0,@15183 100536,0,@1308 100573,0,@105 100623,0,@15099 100657,0,@1308 100695,0,@105 100745,0,@15183 100790,0,@105 100840,0,@15183 100885,0,@1311 100934,0,@866 100978,0,@2021 101023,0,@866 101067,0,@1315 101155,0,@866 101200,0,@2023 101244,0,@866 101289,0,@1315 101377,0,@866 101421,0,@2025 101466,0,@866 101510,0,@1315 101598,0,@866 101643,0,@2027 101687,0,@866 101732,0,@1315 101820,0,@866 101864,0,@2029 101913,0,@1318 102058,0,@866 102103,0,@4115 11529:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b860ef630800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@16342|36,0,@1756 75,0,@105 169,0,@105 221,0,@15180 234,0,@3599 290,0,@1985 338,0,@866 383,0,@1315 475,0,@1987 11530:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b898ef630800000000ff124889c258ff22f400000000|@3415,1,@16341|14,0,@15101 27,0,@3601 11531:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b8d0ef630800000000ff124889c258ff22f400000000|@2006,1,@16340|14,0,@15180 27,0,@3603 11532:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16339|13,0,@15182 11533:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b840f0630800000000ff124889c258ff22f400000000|@1763,1,@16344|14,0,@15175 27,0,@3607 11534:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16343|13,0,@15182 11535:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3609,1,@16345| 11536:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3610,1,@16346| 11537:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16347|13,0,@15218 11538:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16348|13,0,@15218 11539:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3655,1,@16349| 11540:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b888f7630800000000ff124889c258ff22f400000000|@3415,1,@16352|14,0,@15101 27,0,@3669 11541:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b8c0f7630800000000ff124889c258ff22f400000000|@2006,1,@16351|14,0,@15180 27,0,@3671 11542:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16350|13,0,@15182 11543:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b830f8630800000000ff124889c258ff22f400000000|@3415,1,@16355|14,0,@15101 27,0,@3675 11544:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b868f8630800000000ff124889c258ff22f400000000|@2006,1,@16354|14,0,@15180 27,0,@3677 11545:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16353|13,0,@15182 11546:D9,1344|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304d89f44d8b364983fe010f85610200004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35b4040000750949c7c603000000eb2b4c3b359a040000750949c7c603000000eb194c3b3580040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8fc6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc030f85600200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3517020000750949c7c603000000eb2b4c3b35fd010000750949c7c603000000eb194c3b35e3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0fd6308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b888fe630800000000c3f400000000000000|@3737,1,@16356,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15183 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@3716 674,0,@1044 712,0,@105 762,0,@15183 945,0,@2144 993,0,@1021 1038,0,@1987 1189,0,@866 1234,0,@3723 1316,0,@1044 1327,0,@3730 11547:D3,32|483b65187305ff5558cd0149be7800110a00000000498b16ff22f40000000000|@727,1,@16357|13,0,@15099 11548:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3758,1,@16358| 11549:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8d802640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@16362|36,0,@1756 75,0,@105 169,0,@105 221,0,@15180 234,0,@3766 290,0,@1985 338,0,@866 383,0,@1315 475,0,@1987 11550:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b81003640800000000ff124889c258ff22f400000000|@3415,1,@16361|14,0,@15101 27,0,@3768 11551:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b84803640800000000ff124889c258ff22f400000000|@2006,1,@16360|14,0,@15180 27,0,@3770 11552:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16359|13,0,@15182 11553:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16363|13,0,@15218 11554:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3655,1,@16364| 11555:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3790,1,@16365| 11556:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3655,1,@16366| 11557:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16367|13,0,@15218 11558:D3,24|483b65187305ff5558cd0148b84098630800000000c3f400|@3822,1,@16368|13,0,@3062 11559:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16369|13,0,@15219 11560:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16370|13,0,@15218 11561:D3,5104|483b65187305ff5558cd0552504c8b34244d8b6e084d89ec4983fd017d14488d64241049bdb8af620800000000e9511300004d89f64d8b2e4d8b6d084983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8d80a640800000000ff124889c2488b0424ff124989c641564c8b7424104d8b66084d89e54983fc037d0f49beb8af620800000000e9de1100004d89f64d8b2641ff7424204d89ee4983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184d8b75084d89f44983fe057d0f49bdb8af620800000000e9010a00004d89ed4d8b75004d8b364d89e54983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424204d8b66084d89e54983fc077d0f49beb8af620800000000e9a40800004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24284d8b75004d8b76184d89ed4d8b6d084983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be100b6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58de6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd480b6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28e56308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@466,1,@16372|37,0,@1308 73,0,@105 125,0,@15180 138,0,@3836 182,0,@1308 224,0,@105 258,0,@1308 296,0,@105 346,0,@15183 380,0,@1308 418,0,@105 468,0,@15183 502,0,@1308 539,0,@105 589,0,@15099 623,0,@1308 661,0,@105 711,0,@15183 756,0,@105 806,0,@15183 851,0,@1311 899,0,@866 944,0,@2021 988,0,@866 1033,0,@1315 1121,0,@866 1165,0,@2023 1210,0,@866 1254,0,@1315 1342,0,@866 1387,0,@2025 1431,0,@866 1476,0,@1315 1564,0,@866 1608,0,@2027 1653,0,@866 1697,0,@1315 1785,0,@866 1830,0,@2029 1878,0,@1318 1974,0,@1308 2013,0,@105 2063,0,@15099 2101,0,@1308 2143,0,@105 2177,0,@1308 2215,0,@105 2265,0,@15183 2299,0,@1308 2337,0,@105 2387,0,@15183 2421,0,@1308 2458,0,@105 2508,0,@15099 2542,0,@1308 2580,0,@105 2630,0,@15183 2675,0,@105 2725,0,@15183 2770,0,@1311 2818,0,@866 2863,0,@2021 2907,0,@866 2952,0,@1315 3040,0,@866 3084,0,@2023 3129,0,@866 3173,0,@1315 3261,0,@866 3306,0,@2025 3350,0,@866 3395,0,@1315 3483,0,@866 3527,0,@2027 3572,0,@866 3616,0,@1315 3704,0,@866 3749,0,@2029 3797,0,@1318 3906,0,@105 4000,0,@1311 4049,0,@866 4093,0,@3838 4138,0,@866 4182,0,@1315 4270,0,@866 4315,0,@3488 4359,0,@866 4404,0,@1315 4492,0,@866 4536,0,@1313 4581,0,@866 4625,0,@1315 4713,0,@866 4758,0,@3840 4802,0,@866 4847,0,@1315 4935,0,@866 4979,0,@3544 5028,0,@1318 11562:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16371|13,0,@15218 11563:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3860,1,@16373| 11564:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16374|13,0,@15218 11565:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16375|13,0,@15218 11566:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b88010640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@16379|36,0,@1756 75,0,@105 169,0,@105 221,0,@15180 234,0,@3885 290,0,@1985 338,0,@866 383,0,@1315 475,0,@1987 11567:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b8b810640800000000ff124889c258ff22f400000000|@3415,1,@16378|14,0,@15101 27,0,@3887 11568:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b8f010640800000000ff124889c258ff22f400000000|@2006,1,@16377|14,0,@15180 27,0,@3889 11569:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16376|13,0,@15182 11570:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b82811640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@16383|36,0,@1756 75,0,@105 169,0,@105 221,0,@15180 234,0,@3891 290,0,@1985 338,0,@866 383,0,@1315 475,0,@1987 11571:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b86011640800000000ff124889c258ff22f400000000|@3415,1,@16382|14,0,@15101 27,0,@3893 11572:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b89811640800000000ff124889c258ff22f400000000|@2006,1,@16381|14,0,@15180 27,0,@3895 11573:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16380|13,0,@15182 11574:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b80812640800000000ff124889c258ff22f400000000|@1763,1,@16385|14,0,@15175 27,0,@3899 11575:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16384|13,0,@15219 11576:D3,2752|483b65187305ff5558cd01504c8b34244d8b66084d89e54983fc017d14488d64240849bdb8af620800000000e91f0a00004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49beb8af620800000000e93d0200004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424104d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8f013640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88266308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@466,1,@16413|36,0,@1308 78,0,@105 112,0,@1308 150,0,@105 200,0,@15183 234,0,@1308 272,0,@105 322,0,@15183 356,0,@1308 393,0,@105 443,0,@15099 477,0,@1308 515,0,@105 565,0,@15183 610,0,@105 660,0,@15183 705,0,@1311 753,0,@866 798,0,@2021 842,0,@866 887,0,@1315 975,0,@866 1019,0,@2023 1064,0,@866 1108,0,@1315 1196,0,@866 1241,0,@2025 1285,0,@866 1330,0,@1315 1418,0,@866 1462,0,@2027 1507,0,@866 1551,0,@1315 1639,0,@866 1684,0,@2029 1732,0,@1318 1828,0,@1308 1867,0,@105 1917,0,@15099 1967,0,@105 2019,0,@15180 2032,0,@3916 2088,0,@1311 2137,0,@866 2181,0,@2122 2226,0,@866 2270,0,@1315 2358,0,@866 2403,0,@1313 2447,0,@866 2492,0,@1315 2580,0,@866 2624,0,@3189 2673,0,@1318 11577:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b82814640800000000ff124889c258ff22f400000000|@3415,1,@16412|14,0,@15101 27,0,@3918 11578:D3,32|483b65187305ff5558cd0149be3808110a00000000498b16ff22f40000000000|@3930,1,@16411|13,0,@15223 11579:D3,1760|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9460500004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e9eb0300004c8b7424104d8b6e184d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bd086a9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb8af620800000000e91b0200004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424284d8b76104c8b6c24204983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88146408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd901d6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be301e6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8146408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@3930,1,@16387|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 213,0,@1308 251,0,@105 303,0,@15175 355,0,@11580 452,0,@1308 489,0,@105 539,0,@15099 584,0,@105 678,0,@1311 726,0,@866 771,0,@3921 815,0,@866 860,0,@1315 948,0,@866 992,0,@1313 1037,0,@866 1081,0,@1315 1169,0,@866 1214,0,@2045 1262,0,@866 1307,0,@1315 1395,0,@866 1439,0,@2051 1488,0,@1318 1633,0,@866 1678,0,@3923 11580:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@16386| 11581:D3,2280|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9500700004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bd58739b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e97f0500004c8b7424184d8b76284d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424184d89f44983fe057d0f49bdb8af620800000000e9280400004c8b7424204d8b6e184d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bd98739b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49beb8af620800000000e9570200004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424304d89f54983fe097d0f49bdb8af620800000000e9000100004c8b7424384d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5808110a00000000498b16ff124989c64c8b6c24304983ed027115488d64244848b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc781d6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef81d6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be901d6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd281e6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be681e6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01e6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@4016,1,@16410|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 182,0,@15175 234,0,@11582 331,0,@1308 369,0,@105 419,0,@15183 453,0,@1308 491,0,@105 543,0,@15175 595,0,@11583 692,0,@1308 730,0,@105 780,0,@15099 814,0,@1308 851,0,@105 901,0,@15225 935,0,@105 978,0,@3998 1027,0,@866 1071,0,@4003 1116,0,@866 1160,0,@1315 1248,0,@866 1293,0,@1313 1337,0,@866 1382,0,@1315 1470,0,@866 1514,0,@2045 1563,0,@866 1607,0,@1315 1695,0,@866 1740,0,@4005 1784,0,@866 1829,0,@1315 1917,0,@866 1961,0,@4007 2010,0,@1318 2155,0,@866 2200,0,@4009 11582:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3202,1,@16388| 11583:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@16389| 11584:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284983ec02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be6808110a00000000498b1648b8b81b640800000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd481c6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@3997,1,@16409,@435,@433,@427|26,0,@1044 46,0,@105 98,0,@15226 111,0,@3984 305,0,@2144 353,0,@1021 398,0,@1987 549,0,@866 594,0,@3989 11585:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be28779b09000000004c8930c3f400000000|@3970,1,@16404|55,0,@11586 11586:D3,2240|483b65187305ff5558cd054989d54c8b70084d89f34983fe037d0b48b8708c620800000000c34c8b304d89f44d8b364983fe010f85e10200004d8b6424104983eb0241537115488d64240848b8d006620800000000488b5d08ff234c8b34244d89f34983fe017d14488d64240849bdb8af620800000000e9750100004d89db4983eb027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be8808110a00000000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bdb8849b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084c8b2c244983ed02488d642408711048b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc78166408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0166408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28176408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89de4983fb037d0b48b8708c620800000000c341ff74240841ff7424104d8b6424184983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f34983fe017d14488d64241849bdb8af620800000000e9140400004d89db4983eb027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be8805110a00000000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bd50859b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9480200004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b87818640800000000ff124889c2488b0424ff124989c641564c8b6c24204983ed027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649be8805110a00000000498b1648b8b018640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8186408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0166408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0166408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18196408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@3969,1,@16403|29,0,@1044 77,0,@105 111,0,@1308 140,0,@105 192,0,@15228 248,0,@11591 349,0,@105 392,0,@3938 441,0,@866 485,0,@3943 530,0,@1318 675,0,@866 720,0,@3945 805,0,@1044 844,0,@105 878,0,@1308 907,0,@105 959,0,@15180 1015,0,@11592 1112,0,@1308 1141,0,@105 1198,0,@15180 1211,0,@3956 1253,0,@105 1310,0,@15180 1323,0,@3958 1379,0,@1311 1428,0,@866 1472,0,@3960 1517,0,@866 1561,0,@1315 1649,0,@866 1694,0,@3941 1742,0,@866 1787,0,@1315 1875,0,@866 1919,0,@3943 1968,0,@1318 2113,0,@866 2158,0,@3962 11587:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78809b09000000004c8930c3f400000000|@122,1,@16393|47,0,@11588 11588:D4,80|483b65187305ff5558cd054c8b40084c8b72084d8b7608488b00498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c89730849bef8809b09000000004c8933ff251c000000f4000000|@1975,1,@16391,@11590|59,0,@11589 11589:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@3935,1,@16390| 11590:D3,824|483b65187306ff5558ca09014d89c350534c8b7424084d8b6ef84d89ec49c1e50849c1ed074983cd014983ed0241557115488d64241848b8d006620800000000488b5d08ff234983fb017f11488d64241849bd2074630800000000eb7d4c2b1c247115488d64241848b8d006620800000000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849bb68746308000000004d895d004d89e649c1e60849c1ee074983ce01415541564c8b34244d89f54983fe01757c488d6424084c8b34244d8b2e488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98746308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ed4d89ee4983ed0241554d89f64d89f54983ee0241564d89ed4983ed024c8b7424304b8b44aefc4c8b6c24184d89ee41ff75004d89f641ff76086a016a014c8b6c24104d89ee4983fd0175364d89f64983c6027115488d64245848b8d006620800000000488b5d08ff2349bd20746308000000004c892c244c89742408e9240100004d89f64c89f34983fe017d304989de4983c6027115488d64245848b8d006620800000000488b5d08ff2348c70424010000004c89742408e9e80000004889db4883eb027115488d64245848b8d006620800000000488b5d08ff23488b542448ff124989c64c8b6c24204c3b6c244074634d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424184d89650849bc50306208000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd0746308000000004d892c24eb054c8b6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b7424104983c6027115488d64245848b8d006620800000000488b5d08ff234c892c244c89742408415e415c4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b6424184c896424204c896c2428483b65187303ff55584883c420e987fdfffff40000|@3936,1,@16392|56,0,@105 83,0,@2761 106,0,@105 157,0,@2764 251,0,@2766 419,0,@105 435,0,@2761 485,0,@105 533,0,@105 607,0,@444 654,0,@2768 726,0,@105 11591:D3,112|483b65187305ff5558cd054989d4504d8b742410498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c258ff22f400000000000000|@3937,1,@16394| 11592:D3,152|483b65187305ff5558cd054989d55049be9808110a00000000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bdb88a9b09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@3955,1,@16400|17,0,@15229 73,0,@11597 11593:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78869b09000000004c8930c3f400000000|@122,1,@16398|47,0,@11594 11594:D4,80|483b65187305ff5558cd054c8b40084c8b72084d8b7608488b00498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c89730849bef8869b09000000004c8933ff251c000000f4000000|@1975,1,@16396,@11596|59,0,@11595 11595:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@3953,1,@16395| 11596:D3,824|483b65187306ff5558ca09014d89c350534c8b7424084d8b6ef84d89ec49c1e50849c1ed074983cd014983ed0241557115488d64241848b8d006620800000000488b5d08ff234983fb017f11488d64241849bd2074630800000000eb7d4c2b1c247115488d64241848b8d006620800000000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849bb68746308000000004d895d004d89e649c1e60849c1ee074983ce01415541564c8b34244d89f54983fe01757c488d6424084c8b34244d8b2e488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98746308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ed4d89ee4983ed0241554d89f64d89f54983ee0241564d89ed4983ed024c8b7424304b8b44aefc4c8b6c24184d89ee41ff75004d89f641ff76086a016a014c8b6c24104d89ee4983fd0175364d89f64983c6027115488d64245848b8d006620800000000488b5d08ff2349bd20746308000000004c892c244c89742408e9240100004d89f64c89f34983fe017d304989de4983c6027115488d64245848b8d006620800000000488b5d08ff2348c70424010000004c89742408e9e80000004889db4883eb027115488d64245848b8d006620800000000488b5d08ff23488b542448ff124989c64c8b6c24204c3b6c244074634d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424184d89650849bc50306208000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd0746308000000004d892c24eb054c8b6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b7424104983c6027115488d64245848b8d006620800000000488b5d08ff234c892c244c89742408415e415c4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b6424184c896424204c896c2428483b65187303ff55584883c420e987fdfffff40000|@3954,1,@16397|56,0,@105 83,0,@2761 106,0,@105 157,0,@2764 251,0,@2766 419,0,@105 435,0,@2761 485,0,@105 533,0,@105 607,0,@444 654,0,@2768 726,0,@105 11597:D3,112|483b65187305ff5558cd054989d4504d8b742410498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c258ff22f400000000000000|@3937,1,@16399| 11598:D3,24|483b65187305ff5558cd0148b84098630800000000c3f400|@3822,1,@16401|13,0,@3062 11599:D3,32|483b65187305ff5558cd0149beb805110a00000000498b16ff22f40000000000|@3051,1,@16402|13,0,@15183 11600:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be408c9b09000000004c8930c3f400000000|@3983,1,@16406|47,0,@11601 11601:D3,824|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c34c8b284d89ec4983fd017510488d64240848b8401a640800000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d8b342441ff7424084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8f5620800000000e9620100004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d8b7608498b56084c8b7424084983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd181b6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@3937,1,@16405|32,0,@1044 60,0,@3972 85,0,@1044 118,0,@105 152,0,@1756 181,0,@105 231,0,@15099 280,0,@105 367,0,@1985 415,0,@866 460,0,@1315 552,0,@1987 697,0,@866 742,0,@3979 11602:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8f01b640800000000ff124889c258ff22f400000000|@1763,1,@16408|14,0,@15175 27,0,@3986 11603:D3,32|483b65187305ff5558cd0149bec806110a00000000498b16ff22f40000000000|@3988,1,@16407|13,0,@15200 11604:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8d81f640800000000ff124889c258ff22f400000000|@1763,1,@16415|14,0,@15175 27,0,@4019 11605:D3,32|483b65187305ff5558cd0149be3808110a00000000498b16ff22f40000000000|@3930,1,@16414|13,0,@15223 11606:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b84820640800000000ff124889c258ff22f400000000|@1763,1,@16417|14,0,@15175 27,0,@4023 11607:D3,32|483b65187305ff5558cd0149be4805110a00000000498b16ff22f40000000000|@1995,1,@16416|13,0,@15176 11608:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8b820640800000000ff124889c258ff22f400000000|@1763,1,@16419|14,0,@15175 27,0,@4027 11609:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16418|13,0,@15219 11610:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16420|13,0,@15218 11611:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3860,1,@16421| 11612:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3610,1,@16422| 11613:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4092,1,@16423| 11614:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b8d029640800000000ff124889c258ff22f400000000|@3415,1,@16426|14,0,@15101 27,0,@4102 11615:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b8082a640800000000ff124889c258ff22f400000000|@2006,1,@16425|14,0,@15180 27,0,@4104 11616:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16424|13,0,@15182 11617:D3,6064|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e91e1600004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b8382c640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9ad1400004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb8af620800000000e9d60c00004c8b7424204d8b76284d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b7424204d89f54983fe077d0f49beb8af620800000000e97e0b00004c8b7424284d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24284d89ee4983fd097d0f49bdb8af620800000000e9280a00004c8b6c243041ff75204d89f64983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe0b7d0f49beb8af620800000000e9500200004c8b7424384d8b6e084d89e44983ec027115488d64244048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8702c640800000000ff124889c2488b0424ff124989c641564c8b7424484d8b6e304c8b6424404983ec027115488d64245048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b8a82c640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18a66308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd082d6408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58de6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be382d6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd702d6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea82d6408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde02d6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@3610,1,@16431|26,0,@1044 52,0,@105 86,0,@1308 124,0,@105 176,0,@15101 189,0,@4123 229,0,@1308 269,0,@105 303,0,@1308 341,0,@105 391,0,@15183 425,0,@1308 463,0,@105 513,0,@15183 547,0,@1308 584,0,@105 634,0,@15099 668,0,@1308 706,0,@105 756,0,@15183 801,0,@105 851,0,@15183 896,0,@1311 944,0,@866 989,0,@2021 1033,0,@866 1078,0,@1315 1166,0,@866 1210,0,@2023 1255,0,@866 1299,0,@1315 1387,0,@866 1432,0,@2025 1476,0,@866 1521,0,@1315 1609,0,@866 1653,0,@2027 1698,0,@866 1742,0,@1315 1830,0,@866 1875,0,@2029 1923,0,@1318 2015,0,@1308 2053,0,@105 2103,0,@15182 2137,0,@1308 2174,0,@105 2224,0,@15099 2258,0,@1308 2298,0,@105 2332,0,@1308 2370,0,@105 2420,0,@15183 2454,0,@1308 2492,0,@105 2542,0,@15183 2576,0,@1308 2613,0,@105 2663,0,@15099 2697,0,@1308 2735,0,@105 2785,0,@15183 2830,0,@105 2880,0,@15183 2925,0,@1311 2973,0,@866 3018,0,@2021 3062,0,@866 3107,0,@1315 3195,0,@866 3239,0,@2023 3284,0,@866 3328,0,@1315 3416,0,@866 3461,0,@2025 3505,0,@866 3550,0,@1315 3638,0,@866 3682,0,@2027 3727,0,@866 3771,0,@1315 3859,0,@866 3904,0,@2029 3952,0,@1318 4044,0,@1308 4082,0,@105 4134,0,@15180 4147,0,@4125 4198,0,@105 4250,0,@15175 4263,0,@4127 4319,0,@1311 4368,0,@866 4412,0,@3177 4457,0,@866 4501,0,@1315 4589,0,@866 4634,0,@4130 4682,0,@866 4727,0,@1315 4815,0,@866 4859,0,@3488 4904,0,@866 4948,0,@1315 5036,0,@866 5081,0,@1313 5125,0,@866 5170,0,@1315 5258,0,@866 5302,0,@4132 5347,0,@866 5391,0,@1315 5479,0,@866 5524,0,@4134 5568,0,@866 5613,0,@1315 5701,0,@866 5745,0,@4136 5794,0,@1318 5939,0,@866 5984,0,@4138 11618:D3,32|483b65187305ff5558cd0149beb807110a00000000498b16ff22f40000000000|@3485,1,@16428|13,0,@15215 11619:D3,32|483b65187305ff5558cd0149be4805110a00000000498b16ff22f40000000000|@1995,1,@16429|13,0,@15176 11620:D3,32|483b65187305ff5558cd0149be0804110a00000000498b16ff22f40000000000|@4129,1,@16430|13,0,@15156 11621:D3,5720|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e9c61400004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b8c82e640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9551300004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb8af620800000000e97e0b00004c8b7424204d8b364d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24204d89ee4983fd077d0f49beb8af620800000000e9270a00004c8b6c242841ff75204d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d89f44983fe097d0f49bdb8af620800000000e9500200004c8b7424304d8b6e084d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b84830640800000000ff124889c2488b0424ff124989c641564c8b7424404d8b6e284c8b6424384983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b88030640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18a66308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be082d6408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58de6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd702d6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8306408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0306408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@3609,1,@16437|26,0,@1044 52,0,@105 86,0,@1308 124,0,@105 176,0,@15175 189,0,@4146 229,0,@1308 269,0,@105 303,0,@1308 341,0,@105 391,0,@15183 425,0,@1308 463,0,@105 513,0,@15183 547,0,@1308 584,0,@105 634,0,@15099 668,0,@1308 706,0,@105 756,0,@15183 801,0,@105 851,0,@15183 896,0,@1311 944,0,@866 989,0,@2021 1033,0,@866 1078,0,@1315 1166,0,@866 1210,0,@2023 1255,0,@866 1299,0,@1315 1387,0,@866 1432,0,@2025 1476,0,@866 1521,0,@1315 1609,0,@866 1653,0,@2027 1698,0,@866 1742,0,@1315 1830,0,@866 1875,0,@2029 1923,0,@1318 2015,0,@1308 2052,0,@105 2102,0,@15099 2136,0,@1308 2176,0,@105 2210,0,@1308 2248,0,@105 2298,0,@15183 2332,0,@1308 2370,0,@105 2420,0,@15183 2454,0,@1308 2491,0,@105 2541,0,@15099 2575,0,@1308 2613,0,@105 2663,0,@15183 2708,0,@105 2758,0,@15183 2803,0,@1311 2851,0,@866 2896,0,@2021 2940,0,@866 2985,0,@1315 3073,0,@866 3117,0,@2023 3162,0,@866 3206,0,@1315 3294,0,@866 3339,0,@2025 3383,0,@866 3428,0,@1315 3516,0,@866 3560,0,@2027 3605,0,@866 3649,0,@1315 3737,0,@866 3782,0,@2029 3830,0,@1318 3922,0,@1308 3960,0,@105 4012,0,@15180 4025,0,@4160 4076,0,@105 4128,0,@15175 4141,0,@4162 4197,0,@1311 4245,0,@866 4290,0,@3177 4334,0,@866 4379,0,@1315 4467,0,@866 4511,0,@4130 4560,0,@866 4604,0,@1315 4692,0,@866 4737,0,@3488 4781,0,@866 4826,0,@1315 4914,0,@866 4958,0,@1313 5003,0,@866 5047,0,@1315 5135,0,@866 5180,0,@4134 5224,0,@866 5269,0,@1315 5357,0,@866 5401,0,@4164 5450,0,@1318 5595,0,@866 5640,0,@4166 11622:D3,3112|483b65187305ff5558cd01504c8b34244d8b6e084d89ec4983fd017d14488d64240849bdb8af620800000000e98a0b00004d89f64d8b2e4d8b6d084983ec027115488d64240848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b8002f640800000000ff124889c2488b0424ff124989c641564c8b6c24104d8b75084d89f44983fe037d0f49beb8af620800000000e9170a00004d89ed4d8b75004d8b76184d89e54983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d8b6e084d89ec4983fd057d0f49bdb8af620800000000e9ba0800004d89f64d8b2e4d8b6d104983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8382f640800000000ff124889c2488b0424ff124989c641564c8b7424284d8b2e41ff75004d89f64d8b76084983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd702f6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea02f6408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd82f6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10306408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@466,1,@16434|36,0,@1308 72,0,@105 124,0,@15101 137,0,@4148 181,0,@1308 221,0,@105 271,0,@15099 309,0,@1308 345,0,@105 397,0,@15180 410,0,@4150 468,0,@105 502,0,@1308 540,0,@105 590,0,@15183 624,0,@1308 662,0,@105 712,0,@15183 746,0,@1308 783,0,@105 833,0,@15099 867,0,@1308 905,0,@105 955,0,@15183 1000,0,@105 1050,0,@15183 1095,0,@1311 1144,0,@866 1188,0,@2021 1233,0,@866 1277,0,@1315 1365,0,@866 1410,0,@2023 1454,0,@866 1499,0,@1315 1587,0,@866 1631,0,@2025 1676,0,@866 1720,0,@1315 1808,0,@866 1853,0,@2027 1897,0,@866 1942,0,@1315 2030,0,@866 2074,0,@2029 2123,0,@1318 2226,0,@1311 2274,0,@866 2319,0,@4152 2363,0,@866 2408,0,@1315 2496,0,@866 2540,0,@4154 2589,0,@866 2633,0,@1315 2721,0,@866 2766,0,@4156 2810,0,@866 2855,0,@1315 2943,0,@866 2987,0,@4158 3036,0,@1318 11623:D3,32|483b65187305ff5558cd0149beb807110a00000000498b16ff22f40000000000|@3485,1,@16432|13,0,@15215 11624:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16433|13,0,@15219 11625:D3,32|483b65187305ff5558cd0149be4805110a00000000498b16ff22f40000000000|@1995,1,@16435|13,0,@15176 11626:D3,32|483b65187305ff5558cd0149be0804110a00000000498b16ff22f40000000000|@4129,1,@16436|13,0,@15156 11627:D3,4056|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9430e00004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8e831640800000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb8af620800000000e9d20c00004c8b7424184d8b6e284d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b82032640800000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb8af620800000000e9620b00004c8b7424284d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb8af620800000000e90c0a00004c8b6c243041ff75204d89f64983ee0241567115488d64245048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe097d0f49bdb8af620800000000e9350200004c8b7424384d8b6e184d89e44983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8c832640800000000ff124889c2488b0424ff124989c641564c8b7424484d8b76084c8b6c24404983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424504d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00336408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30336408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60636308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd402a6408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8df6308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68336408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@3655,1,@16443|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 182,0,@15180 195,0,@4174 235,0,@1308 273,0,@105 325,0,@15180 338,0,@4176 378,0,@1308 415,0,@105 498,0,@1308 538,0,@105 572,0,@1308 610,0,@105 660,0,@15183 694,0,@1308 732,0,@105 782,0,@15183 816,0,@1308 853,0,@105 903,0,@15099 937,0,@1308 975,0,@105 1025,0,@15183 1070,0,@105 1120,0,@15183 1165,0,@1311 1213,0,@866 1258,0,@2021 1302,0,@866 1347,0,@1315 1435,0,@866 1479,0,@2023 1524,0,@866 1568,0,@1315 1656,0,@866 1701,0,@2025 1745,0,@866 1790,0,@1315 1878,0,@866 1922,0,@2027 1967,0,@866 2011,0,@1315 2099,0,@866 2144,0,@2029 2192,0,@1318 2284,0,@1308 2322,0,@105 2374,0,@15180 2387,0,@4182 2438,0,@105 2532,0,@1311 2580,0,@866 2625,0,@4184 2669,0,@866 2714,0,@1315 2802,0,@866 2846,0,@4186 2895,0,@866 2939,0,@1315 3027,0,@866 3072,0,@3189 3116,0,@866 3161,0,@1315 3249,0,@866 3293,0,@2622 3338,0,@866 3382,0,@1315 3470,0,@866 3515,0,@4106 3563,0,@866 3608,0,@1315 3696,0,@866 3740,0,@3501 3789,0,@1318 3934,0,@866 3979,0,@4188 11628:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16438|13,0,@15218 11629:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b85832640800000000ff124889c258ff22f400000000|@3415,1,@16441|14,0,@15101 27,0,@4178 11630:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b89032640800000000ff124889c258ff22f400000000|@2006,1,@16440|14,0,@15180 27,0,@4180 11631:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16439|13,0,@15182 11632:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16442|13,0,@15218 11633:D3,5704|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb8af620800000000e9b01400004c8b6c240841ff75184d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f54983fe037d0f49beb8af620800000000e9d40c00004c8b7424104d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb8af620800000000e97e0b00004c8b6c241841ff75204d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f44983fe077d0f49beb8af620800000000e9a60300004c8b7424204d8b6e104d89e44983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b86034640800000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe097d0f49bdb8af620800000000e9360200004c8b7424304d8b76284d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c641564c8b7424384d8b6e084c8b6424304983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b89834640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0346408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08356408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58de6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be702d6408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38356408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@3758,1,@16446|32,0,@1044 58,0,@105 92,0,@1308 132,0,@105 166,0,@1308 204,0,@105 254,0,@15183 288,0,@1308 326,0,@105 376,0,@15183 410,0,@1308 447,0,@105 497,0,@15099 531,0,@1308 569,0,@105 619,0,@15183 664,0,@105 714,0,@15183 759,0,@1311 807,0,@866 852,0,@2021 896,0,@866 941,0,@1315 1029,0,@866 1073,0,@2023 1118,0,@866 1162,0,@1315 1250,0,@866 1295,0,@2025 1339,0,@866 1384,0,@1315 1472,0,@866 1516,0,@2027 1561,0,@866 1605,0,@1315 1693,0,@866 1738,0,@2029 1786,0,@1318 1878,0,@1308 1915,0,@105 1965,0,@15099 1999,0,@1308 2039,0,@105 2073,0,@1308 2111,0,@105 2161,0,@15183 2195,0,@1308 2233,0,@105 2283,0,@15183 2317,0,@1308 2354,0,@105 2404,0,@15099 2438,0,@1308 2476,0,@105 2526,0,@15183 2571,0,@105 2621,0,@15183 2666,0,@1311 2714,0,@866 2759,0,@2021 2803,0,@866 2848,0,@1315 2936,0,@866 2980,0,@2023 3025,0,@866 3069,0,@1315 3157,0,@866 3202,0,@2025 3246,0,@866 3291,0,@1315 3379,0,@866 3423,0,@2027 3468,0,@866 3512,0,@1315 3600,0,@866 3645,0,@2029 3693,0,@1318 3785,0,@1308 3823,0,@105 3875,0,@15101 3888,0,@4196 3928,0,@1308 3966,0,@105 4060,0,@105 4112,0,@15180 4125,0,@4198 4181,0,@1311 4229,0,@866 4274,0,@2122 4318,0,@866 4363,0,@1315 4451,0,@866 4495,0,@4200 4540,0,@866 4584,0,@1315 4672,0,@866 4717,0,@4202 4765,0,@866 4810,0,@1315 4898,0,@866 4942,0,@3488 4987,0,@866 5031,0,@1315 5119,0,@866 5164,0,@1313 5208,0,@866 5253,0,@1315 5341,0,@866 5385,0,@4134 5434,0,@1318 5579,0,@866 5624,0,@4204 11634:D3,32|483b65187305ff5558cd0149beb807110a00000000498b16ff22f40000000000|@3485,1,@16444|13,0,@15215 11635:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16445|13,0,@15219 11636:D3,4208|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9d80e00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b82836640800000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb8af620800000000e9680d00004c8b7424184d8b6e084d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd280a9c09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f44983fe057d0f49bdb8af620800000000e9980b00004c8b7424284d8b6e104d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b88036640800000000ff124889c2488b0424ff124989c641564c8b6c24304d89ee4983fd077d0f49beb8af620800000000e9270a00004c8b6c243841ff75184d89f64983ee0241567115488d64245848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424384d89f44983fe097d0f49bdb8af620800000000e9500200004c8b7424404d8b6e204d89e44983ec027115488d64245048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8b836640800000000ff124889c2488b0424ff124989c641564c8b7424504d8b6e284c8b6424484983ec027115488d64246048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8f036640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf05f6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28376408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60376408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98376408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8df6308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0376408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@3790,1,@16452|32,0,@1044 58,0,@105 92,0,@1308 129,0,@105 181,0,@15180 194,0,@4212 234,0,@1308 272,0,@105 324,0,@15175 376,0,@11638 473,0,@1308 511,0,@105 563,0,@15180 576,0,@4215 616,0,@1308 656,0,@105 690,0,@1308 728,0,@105 778,0,@15183 812,0,@1308 850,0,@105 900,0,@15183 934,0,@1308 971,0,@105 1021,0,@15099 1055,0,@1308 1093,0,@105 1143,0,@15183 1188,0,@105 1238,0,@15183 1283,0,@1311 1331,0,@866 1376,0,@2021 1420,0,@866 1465,0,@1315 1553,0,@866 1597,0,@2023 1642,0,@866 1686,0,@1315 1774,0,@866 1819,0,@2025 1863,0,@866 1908,0,@1315 1996,0,@866 2040,0,@2027 2085,0,@866 2129,0,@1315 2217,0,@866 2262,0,@2029 2310,0,@1318 2402,0,@1308 2440,0,@105 2492,0,@15180 2505,0,@4217 2556,0,@105 2608,0,@15180 2621,0,@4219 2677,0,@1311 2725,0,@866 2770,0,@2593 2814,0,@866 2859,0,@1315 2947,0,@866 2991,0,@4221 3040,0,@866 3084,0,@1315 3172,0,@866 3217,0,@3189 3261,0,@866 3306,0,@1315 3394,0,@866 3438,0,@4223 3487,0,@866 3531,0,@1315 3619,0,@866 3664,0,@4225 3712,0,@866 3757,0,@1315 3845,0,@866 3889,0,@3501 3938,0,@1318 4083,0,@866 4128,0,@4227 11637:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16447|13,0,@15218 11638:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4214,1,@16448| 11639:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16449|13,0,@15219 11640:D3,32|483b65187305ff5558cd0149beb805110a00000000498b16ff22f40000000000|@3051,1,@16450|13,0,@15183 11641:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16451|13,0,@15218 11642:D3,7480|488dbc2458ffffff483b7d187305ff5560cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb8af620800000000e9971b00004c8b7424084d8b6e184d89e44983ec027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8c038640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9261a00004c8b6c241841ff75004d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb8af620800000000e9d80f00004c8b7424084d8b2e4d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd98299c09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49bdb8af620800000000e9090e00004c8b7424184d8b6e184d89e44983ec027115488d64244848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be9800110a00000000498b1648b86839640800000000ff124889c2488b0424ff124989c641564c8b6c24204d89ee4983fd057d0f49beb8af620800000000e9980c00004c8b6c242841ff75084d89f64983ee0241567115488d64246848b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb8af620800000000e9210a00004c8b7424084d8b6e084d89e44983ec027115488d64246848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8a039640800000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49bdb8af620800000000e9b10800004c8b6c241841ff75104d89f64983ee0241567118488da4248800000048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9350600004c8b7424084d8b76084d89ed4983ed027118488da4248800000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9d70400004c8b7424104d8b76184d89ed4983ed027118488da4249000000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e97c0300004c8b7424184d8b364d89ed4983ed027118488da4249800000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e9230200004c8b7424204d8b76104d89ed4983ed027118488da424a000000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da424a800000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d8b364c8b6c24184983ed027118488da4248000000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e56308000000004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d8b76104c8b6c24284983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78f46308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8396408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be083a6408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50256308000000004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb8af620800000000e99d0800004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7608498b16ff124989c641564c8b74242841ff76104c8b7424284983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd403a6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60636308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8066408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be402a6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd703a6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@4214,1,@16459|40,0,@1044 66,0,@105 100,0,@1308 138,0,@105 190,0,@15180 203,0,@4235 243,0,@1308 283,0,@105 317,0,@1308 354,0,@105 406,0,@15175 458,0,@11646 555,0,@1308 593,0,@105 645,0,@15101 658,0,@4241 698,0,@1308 738,0,@105 772,0,@1308 810,0,@105 862,0,@15180 875,0,@4243 915,0,@1308 958,0,@105 992,0,@1308 1033,0,@105 1083,0,@15183 1117,0,@1308 1158,0,@105 1208,0,@15183 1242,0,@1308 1282,0,@105 1332,0,@15099 1366,0,@1308 1407,0,@105 1457,0,@15183 1505,0,@105 1555,0,@15183 1600,0,@1311 1648,0,@866 1693,0,@2021 1737,0,@866 1782,0,@1315 1870,0,@866 1914,0,@2023 1959,0,@866 2003,0,@1315 2091,0,@866 2136,0,@2025 2180,0,@866 2225,0,@1315 2313,0,@866 2357,0,@2027 2402,0,@866 2446,0,@1315 2534,0,@866 2579,0,@2029 2627,0,@1318 2732,0,@105 2782,0,@15099 2827,0,@1311 2875,0,@866 2920,0,@1313 2964,0,@866 3009,0,@1315 3097,0,@866 3141,0,@3189 3186,0,@866 3230,0,@1315 3318,0,@866 3363,0,@3544 3411,0,@1318 3514,0,@105 3564,0,@15182 3609,0,@1311 3658,0,@866 3702,0,@3642 3747,0,@866 3791,0,@1315 3879,0,@866 3924,0,@4245 3968,0,@866 4013,0,@1315 4101,0,@866 4145,0,@4247 4194,0,@866 4238,0,@1315 4326,0,@866 4371,0,@2111 4419,0,@1318 4511,0,@1308 4549,0,@105 4645,0,@105 4679,0,@1308 4717,0,@105 4767,0,@15183 4801,0,@1308 4839,0,@105 4889,0,@15183 4923,0,@1308 4960,0,@105 5010,0,@15099 5044,0,@1308 5082,0,@105 5132,0,@15183 5177,0,@105 5227,0,@15183 5272,0,@1311 5321,0,@866 5365,0,@2021 5410,0,@866 5454,0,@1315 5542,0,@866 5587,0,@2023 5631,0,@866 5676,0,@1315 5764,0,@866 5808,0,@2025 5853,0,@866 5897,0,@1315 5985,0,@866 6030,0,@2027 6074,0,@866 6119,0,@1315 6207,0,@866 6251,0,@2029 6300,0,@1318 6403,0,@1311 6451,0,@866 6496,0,@4249 6540,0,@866 6585,0,@1315 6673,0,@866 6717,0,@2622 6762,0,@866 6806,0,@1315 6894,0,@866 6939,0,@3800 6983,0,@866 7028,0,@1315 7116,0,@866 7160,0,@4106 7209,0,@1318 7354,0,@866 7399,0,@4251 11643:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b8f838640800000000ff124889c258ff22f400000000|@3415,1,@16455|14,0,@15101 27,0,@4237 11644:D3,48|483b65187305ff5558cd015049be8805110a00000000498b1648b83039640800000000ff124889c258ff22f400000000|@2006,1,@16454|14,0,@15180 27,0,@4239 11645:D3,32|483b65187305ff5558cd0149bea805110a00000000498b16ff22f40000000000|@2015,1,@16453|13,0,@15182 11646:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@3860,1,@16456| 11647:D3,32|483b65187305ff5558cd0149beb807110a00000000498b16ff22f40000000000|@3485,1,@16457|13,0,@15215 11648:D3,32|483b65187305ff5558cd0149bee807110a00000000498b16ff22f40000000000|@2005,1,@16458|13,0,@15218 11649:D3,3672|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9bf0c00004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9650b00004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e90f0a00004c8b7424184d8b76204d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b6c24184d89ee4983fd077d0f49beb8af620800000000e9b70800004c8b6c242041ff75104d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d8b6e184c8b6424204983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8683b640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0206408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd403a6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed83b6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60636308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8066408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd103c6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@4092,1,@16462|32,0,@1044 58,0,@105 92,0,@1308 129,0,@105 212,0,@1308 250,0,@105 333,0,@1308 371,0,@105 421,0,@15182 455,0,@1308 495,0,@105 529,0,@1308 567,0,@105 617,0,@15183 651,0,@1308 689,0,@105 739,0,@15183 773,0,@1308 810,0,@105 860,0,@15099 894,0,@1308 932,0,@105 982,0,@15183 1027,0,@105 1077,0,@15183 1122,0,@1311 1170,0,@866 1215,0,@2021 1259,0,@866 1304,0,@1315 1392,0,@866 1436,0,@2023 1481,0,@866 1525,0,@1315 1613,0,@866 1658,0,@2025 1702,0,@866 1747,0,@1315 1835,0,@866 1879,0,@2027 1924,0,@866 1968,0,@1315 2056,0,@866 2101,0,@2029 2149,0,@1318 2252,0,@105 2304,0,@15180 2317,0,@4259 2373,0,@1311 2422,0,@866 2466,0,@4029 2511,0,@866 2555,0,@1315 2643,0,@866 2688,0,@4249 2732,0,@866 2777,0,@1315 2865,0,@866 2909,0,@4263 2954,0,@866 2998,0,@1315 3086,0,@866 3131,0,@2622 3175,0,@866 3220,0,@1315 3308,0,@866 3352,0,@3800 3401,0,@1318 3546,0,@866 3591,0,@4265 11650:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8a03b640800000000ff124889c258ff22f400000000|@1763,1,@16461|14,0,@15175 27,0,@4261 11651:D3,32|483b65187305ff5558cd0149bef807110a00000000498b16ff22f40000000000|@1984,1,@16460|13,0,@15219 11652:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4273,1,@16463| 11653:D5,344|483b65187306ff5558ca09074989c65341504151498d47d8483b45107306ff5550ca00444989c748c740f8040000004c8950184c8b2c244c8968104c89700849be583b9c09000000004c89306a016a016a014889e3ff151d010000ff3424ff7424104c8b6c24784d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e0849bdb8409c09000000004d892e4156ff742440f60424010f858a0000004c8b2c244d8b75004d89ed41ff7508498b06498b5e08498b7e10498b7618498b56204d8b76284c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b4424604156415541544153ff742430415241514150ffb42480000000ff7424604989d24989f14989f8ff154e000000415d4c892c24483b65187303ff5558e96cffffff488d6424185a4c8b742438498b46504c8b7424304c897424684883c468ff22f40000|@4280,1,@16469,@11658,@10988|65,0,@11654 145,0,@11657 11654:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc483e9c09000000004d89204d8b65004e8d2465010000004983fc01750f49bbc03d640800000000e9ad0000004d89e24983c2144c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349bac03d64080000000048c7c115000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1248d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd180e630800000000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb180e63080000000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@4277,1,@16466,@11656|55,0,@11655 86,0,@4276 223,0,@4276 291,0,@1928 449,0,@1928 651,0,@117 667,0,@117 11655:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4275,1,@16465,@10870| 11656:D7,472|483b65187306ff5558ca09074c89c25053415141524c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dd201000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750f49be2068620800000000e9b70000004d8b364d8b2e4c3b2d6e0100007506498b4610eb15488d64242048b87850620800000000488b5d08ff23ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da400000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3a0000007509498b4610e9eefeffff488d64242048b87850620800000000488b5d08ff23f400|@4278,1,@16467,@15134,@15134,@15134,@15134|120,0,@788 161,0,@621 411,0,@828 456,0,@621 11657:D3,88|483b65187305ff5558cd05524c8b3424498b5610ff124c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000|@4279,1,@16468| 11658:D4,1152|483b65187306ff5558ca09074989c55341514c8b7424584d8b364e8d3475010000004c8b6424084d8b1c244e8d145d010000004983fe0175084d89e3e9bd0000004983fa01750a4c8b5c2458e9ad0000004f8d4c16ff4c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d3c4501000000483b3df90300000f87ce0300004889fe4c8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca80774d89df48d1ee498973f841c643ff414883ef0249c744bbfc0000000049d1e94d890b4c8b4c24584c89f1498d7108498d7b0848d1e9f3a44983c6104c89d14d89e4498d74240849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bc0019620800000000e9a00000004d89f24983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d220300000f87ea0200004c89cf4c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c61049d1ee43c604342e41806424ffbf6a016a016a016a016a016a01488b942480000000488b5c24704c8b5424684c8b4c2460488b7c24584c8b7424504c8b5c247841564155415454488304241841534c89c04d89d04989faff12415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e4156488b0424ff15450200004c8b6c24684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8b742430498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d64240849c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be60c66208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b24244d896510488d6424084d8975084c8b6424084d89e64d8965004155488b542420498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b2c244c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084c8b2c244d897500488d64241048c7c001000000c25000488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01|@4283,1,@16472,@11659|273,0,@201 832,0,@1469 1093,0,@117 1114,0,@117 11659:D4,40|483b65187305ff5558cd01488b0049b8e83e64080000000048c7c301000000ff251b000000f40000|@4284,1,@16473,@10619|16,0,@4281 11660:D7,296|483b65187306ff5558ca0901534150f6442408010f85070100004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54c3b25210100000f85c40000004c3b2d0c0100000f85a20000004d8b76104d8b6e2841f6c50175124d8b6d004d8b6d0849c7450003000000eb004d8b6e3041f6c501756f41ff7500498b46186a016a0148bbf83e6408000000004989e0ff15b5000000ff3424488b442410ff159f0000004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424184c8b2c244d897500488d64240849c7c401000000eb0749c7c401000000eb1c488d64241848b87850620800000000488b5d08ff2349c7c401000000415d4c8924244c896c2408483b65187303ff5558e9eefeffff584883c408c3f4|@671,1,@16471,@10905,@10900,@15109,@15109|130,0,@4282 243,0,@621 11661:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@16470| 11662:D6,1056|483b65187306ff5558ca09075053415041514152ff352e04000048c7c015000000ff1519040000488b1424ff15070400004989c641564c8b34244d8b56304c8b6c24204d8b5d304d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849bb504c9c09000000004d891c2441544d89f64d8b56404d89ed4d8b5d404d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849bbb84c9c09000000004d891c2441544d89f64d89f241ff76204d89d24d8b5a604d89ed4d8b65604d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d895e104d89660849bc204d9c09000000004d892641564d89ed4d89ee41ff75284d89f64d89f141ff76584d89d24d8b6a104d89d24d8b62184d89d24d8b5a504d89d24d8b72084d89d24d89d041ff72384d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d89c04d8942104d89c94d894a0849b9884d9c09000000004d890a41524d8d57904c3b55107306ff5550ca00784d89d749c742f80d0000004c8b4c24204d894a604c8b4c24104d894a584d895a504c8b1c244d895a484c8b5c24304d895a404c8b5c24084d895a384c8b5c24384d895a304c8b5c24184d895a284c8b5c24284d895a204d8962184d896a104d89720849bee03f6408000000004d8932488b542458488b9c24a80000004c8b8424a00000004c8b8c24980000004c8bb424900000004c8bac24880000004c8ba42480000000415641554154ff742468488b842490000000ff124d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b6424404d89e64d8965104c8b6424604d89e34d89650849bcd84e9c09000000004d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d89f64d89f24d897424104d89db4d89de4d895c240849bb384f9c09000000004d891c244d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89d24d89d14d8953104d89f64d89f24d89730849be984f9c09000000004d89334d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d89c94d894e104d89d24d89560849baf84f9c09000000004d8916498d7f90483b7d107306ff5550ca00784989ff48c747f80d0000004c8b5424204c8957604c8b5424104c8957584c895f504c8b1c244c895f48488d6424084c8b5c24284c895f404c8b1c244c895f38488d6424104c8b5c24204c895f304c8b1c244c895f28488d6424104c8b1c244c895f20488d6424284c8967184c896f104c89770849bee03f6408000000004c8937488b542408488b442418488b5c24584c8b4424504c8b4c24484c8b6c24404c8b6424384c8b5c2430415a488d6424204c895424184989fa4c895c24204c896424284c896c24304c8b34244c897424104883c410ff22f40000000000|@4288,1,@16484,@10742,@11013,@1078|111,0,@11663 179,0,@11664 254,0,@11665 368,0,@11666 497,0,@4286 631,0,@11669 695,0,@11670 756,0,@11671 810,0,@11672 954,0,@4286 11663:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16474| 11664:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16475| 11665:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16476| 11666:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@4285,1,@16477,@11667| 11667:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16478| 11668:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4285,1,@16479| 11669:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5610488b0424ff124c8b7424084d8b7608498b561058488d642408ff22f40000|@4287,1,@16480| 11670:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5618488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f40000|@4287,1,@16481| 11671:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5650488b0424ff124c8b7424084d8b7608498b565058488d642408ff22f40000|@4287,1,@16482| 11672:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5608488b0424ff124c8b7424084d8b7608498b560858488d642408ff22f40000|@4287,1,@16483| 11673:D25,6832|488dbc2428ffffff483b7d187306ff5560ca0d075250534150415141524d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d8975104c8b7424084d89750849bee06b9c09000000004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b34244d897424104c8b7424084d8974240849bec06c9c09000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424284d8b364983fe050f85e40100004c8b7424284d8b760841ff3641ff760841ff761041ff761841ff762041ff762849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4156488b54245048c7c001000000ff124989c64156488b54245048c7c001000000ff124989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424684c8973104c8b7424104c89730849bea06d9c09000000004c89334d8d4fd84c3b4d107305ff5550cd084d89cf49c741f8040000004c8b7424084d8971184c8b7424104d8971104c8b34244d89710849be606e9c09000000004d89316a016a016a016a016a016a01488b9424a80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24b80000004156415541545448830424184153488b8424980000004c8b8424b80000004c8b9424a8000000e8f0fdffff415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e415648ba58426408000000004c8b9424b0000000ff742430488b442448488b5c24184c8b4424104c8b4c2460ff15f01800004989c641564c8b342441ff76284c8b7424084d8b66104c8b7424084d8b762849c7c501000000e9711100004c8b7424284d8b364983fe030f8557020000488d6424084c8b74242041ff76084c8b74242841ff76104c8b74243041ff7618ff358518000048c7c015000000ff1570180000488b1424ff155e1800004989c6488d6424084d8b5e304c8b6c24184d8b65304d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849bc10559d09000000004d89650041554d8b66404c8b6c24204d8b6d40498d7fe0483b7d107306ff5550ca00704989ff48c747f8030000004c8967104c896f0849bd78559d09000000004c892f4d8b56204d8b66604c8b6c24204d8b6d60498d5fe0483b5d107306ff5550ca80744989df48c743f8030000004c8963104c896b0849bde0559d09000000004c892b4c8b6c24204d8b4d284c8b6c2420498b4d584d8b66104d8b5e18498b56504d8b6e084d8b4638498d77e0483b75107306ff5550ca8e7f4989f748c746f8030000004c8976104c8b7424204c89760849be48569d09000000004c89364d8d77904c3b75107306ff5550cace3f4d89f749c746f80d00000049895e6049894e58498956504989764849897e404d8946384c8b04244d894630488d6424084d894e284d8956204d895e184d8966104d896e0849bda8676408000000004d892e41564c8b742448498b56084c8b7424784c8b6c24684c8b6424584156ff74241041554154488b442430488b5c24584c8b4424504c8b4c24484c8b542420ff12488b542448488b442418488b5c24384c8b442430488b7c24285e4c8b6c2470415c488d6424404c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e9ecfaffff4c8b7424284d8b364983fe070f857d040000488d6424084c8b74242041ff76084c8b74242841ff76104c8b74243041ff761848c7c015000000ff15fd1500004989c6415648ba3891620800000000488b0424ff15dc1500004989c24d8b6a184d8b7210498b72504d8b5a304c8b6424204d8b6424304d8d4fe04c3b4d107306ff5550ca407c4d89cf49c741f8030000004d8959104d89610849bc98579d09000000004d89214d8b5a404c8b6424204d8b6424404d8d47e04c3b45107306ff5550ca407e4d89c749c740f8030000004d8958104d89600849bc00589d09000000004d89204d8b5a604c8b6424204d8b642460498d4fe0483b4d107306ff5550ca407f4989cf48c741f8030000004c8959104c89610849bc68589d09000000004c89214c8b6424204d8b5c24284c8b642420498b5424584c8b6424204d8b642420498d7fe0483b7d107306ff5550ca467f4989ff48c747f8030000004c8957104c8b5424204c89570849bad0589d09000000004c89174d8d57904c3b55107306ff5550cac67b4d89d749c742f80d00000049894a60498952584989725049897a484d89424049b8f0676408000000004d8942384d894a304d895a284d8962204d896a184d89721049be80686408000000004d89720849be10696408000000004d89324c8b742448498b56084c8b7424784c8b6c24704c8b6424684c8b5c24584156415541544153488b442438488b5c24584c8b4424504c8b4c2448ff1248c7c015000000ff15041400004989c6415648ba3891620800000000488b0424ff15e31300004989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849beb05a9d09000000004d8930488b44240848bbb09f620800000000ff15971300004989c64d8b76084c8b6c24104d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060100000041564c8bb42488000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156488b54244048c7c001000000ff124989c64156488b54244048c7c001000000ff124989c64c8b6c24104d8b6d004983fd030f85c10000004c8b6c24104d8b6d084c8b6424104d8b6424184d8b6d00498b34244c8b5ef849c1e30849c1eb074983cb014983fb01750c49bc48c2620800000000eb584d89da4c89d14e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42684d89e749d1ea4d895424f841c64424ff404c89e748d1e948c7c001000000f348ab4c89d94c89e748d1e9f348a541806424ffbf4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c70301000000eb054c8b5c24104c8b6c247849bcd8086208000000004d895d004d89650849c74510010000004c8b6424084d8965184d897520415e488d6424084d89752848c7c0010000004883c458c228004c8b7424284d8b364983fe010f85100500004c8b7424284d8b760841ff3641ff760841ff761041ff761841ff762041ff762841ff763041ff76384c8b742448498b5658488b442430ff124989c641f6c6010f85c20100004d8b2e4d8b750041ff761041ff75184d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24284d8975006a016a016a016a016a016a01488b9424b00000004c8bb424e00000004c8bac24d00000004c8ba424c00000004156ff74245841555448830424184154488b8424a0000000488b9c24c80000004c8b8424c00000004c8b8c24b80000004c8b9424b0000000e867f5ffff415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849bde8679d09000000004d892e4156488b54247048c7c001000000ff124989c66a016a014c8b9424d00000004c8bac24b00000004156ff7424785448830424104155488b442438488b5c24484c8b4424304c8b4c2460ff15cf0f0000ff3424ff7424104c8b742438498b5e1048c7c001000000ff15aa0f00004889c34883fb017504415eeb12488b0424ff158b0f00004989c6488d6424084c8b6c24384d8975004c8b7424304d8b6e104c8b742430498b5e2849c7c601000000e92b040000488d6424084c8b7424284d8b364e8d3475010000004983fe01750f49bc386a640800000000e9b80000004d89f54983c5124c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d920e00000f87940200004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2449bd386a64080000000048c7c113000000498d7508498d7c240848d1e9f3a44c89f14c8b742428498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be08e5620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15b10d00000f87a60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc08e562080000000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24604d89680849bd38689d09000000004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84249800000048c7c3030000004c8b0c24ff15c60c0000488d6424084c8b6c247849be886a6408000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c0010000004883c468c22800488d64247048b8f807620800000000488b5d08ff23488d64247048b8f807620800000000488b5d08ff23488d6424084c8b7424204d8b46084c8b74242041ff76104c8b7424284d8b6e184c8b742408498b5e604c8b7424604d8d4fd84c3b4d107306ff5550ca08614d89cf49c741f8040000004d8969184d8971104c8b7424284d89710849be88689d09000000004d893148b860e3620800000000ff15cc0b00004989c6415d488d6424084d8975004983fe01754d488d6424284c8b6c241049be886a6408000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c22800488d6424284d8b364c8b6c24104d8b76104d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c2280041f6c50175394d8b5d084d89f44983c4027118488da424b000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0860ebc14983ee014903de7118488da424b000000048b8d006620800000000488b5d08ff234c8b7424304d8b4e28492bd97118488da424b000000048b8d006620800000000488b5d08ff234883c3014883fb017d18488da424b000000048b83060620800000000488b5d08ff2348c7c0010000004c8b0424ff15600a00004c8b742430498b5e10ff15490a00004989c64c8b6c24604d8975004c8b742428498b4610488b5c24684c8b4424484c8b8c2498000000ff15140a00004c8b742458498906ff15fe0900004989c44983fc01750f49be48c2620800000000e9c100000049c7c5010000004d89e641f6c60175394d8b56084d89eb4983c3027118488da424b000000048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc14c3b2d460900007c18488da424b000000048b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f8518020000418066ffbf41564c8b7424384d8b6e284c8b7424304d8b76284d3bee7d054d89eeeb004156488b94249800000048c7c001000000ff124989c54d8d77c04c3b75107306ff5550ca00204d89f749c746f807000000415c4d8966304c8b6424384d8966284c8b6424084d8966204c8b6424304d896618415c488d6424084d8966104d896e0849bde8699d09000000004d892e41564c8b74242841ff364c8b74243041ff76084c8b74243841ff7618488b9424a800000048c7c001000000ff124989c64c8b6c24404d8b6d204d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24184d895c24104d896c240849bdb06a9d09000000004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba48c2620800000000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24d80000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4b8000000c228004d8b1c244d8b5424084f895caefc4d89eb4983c3027118488da424b000000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e998fdffff41f6c401753a4d8b5424084d89eb4983c3027118488da4249800000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc04983ed014d03f541567118488da424a000000048b8d006620800000000488b5d08ff234d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424604d89700849be006b9d09000000004d89306a016a014c8b9424d80000004c8bb424b8000000ff742430ffb424800000005448830424104156488b442448488b5c24404c8b4c2478ff15f7050000ff34244c8b7424104c8b6c24504d8975004c8b7424684983fe030f85d0000000488b5c2418482b5c24207118488da424b800000048b8d006620800000000488b5d08ff234883c3014883fb017d18488da424b800000048b83060620800000000488b5d08ff2348c7c0010000004c8b04244c8b4c2420ff15730500004989c6488d64240841564c8b742428498b4610488b5c24604c8b8424a0000000ff15450500004989c64156488b442408488b1c24ff15290500004989c64c8b6c24604d8975004c8b34244983fe017514488d64242849be48c2620800000000e9a402000049c7c5010000004c8b3424e9d8010000488b94249000000048c7c001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424284d896618415c4d8966104d896e0849bd506b9d09000000004d892e41564c8b74242841ff364c8b74243041ff76084c8b74243841ff76184c8b74244041ff7620488b9424b800000048c7c001000000ff124989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c2410415d4d896c240849bda06b9d09000000004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba48c2620800000000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24e00000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4c0000000c2280041f6c60175394d8b5e084d89ec4983c4027118488da424c000000048b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc14c3b2d990200007c18488da424c000000048b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000415c4883c4204983fc010f85e1010000418066ffbf4156488b54247848c7c001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d896618415c488d6424084d8966104d896e0849bdf06b9d09000000004d892e41564c8b74240841ff364c8b74241041ff76084c8b74241841ff76184c8b74242041ff7620488b94249800000048c7c001000000ff124989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c2410415d4d896c240849bd886c9d09000000004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba48c2620800000000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24c00000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4a0000000c228004d8b1c244d8b5424084f895caefc4d89eb4983c3027118488da4249800000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9cffdfffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@4544,1,@16656,@11845,@11846,@11847,@11841,@11848,@11849,@11851,@11852,@11008,@11656,@11853,@11854,@11841,@10619,@10742,@11013,@10742,@11013,@10742,@11013,@1078,@11679|72,0,@11674 133,0,@11675 357,0,@11676 422,0,@11677 594,0,@4297 820,0,@11811 884,0,@11812 949,0,@11813 1040,0,@11814 1137,0,@4514 1370,0,@1078 1454,0,@11817 1516,0,@11818 1578,0,@11819 1661,0,@11820 1721,0,@4516 1755,0,@4520 1769,0,@4524 1859,0,@1078 1913,0,@11825 1931,0,@1172 2251,0,@1447 2405,0,@123 2815,0,@11830 3033,0,@4531 3173,0,@4531 3250,0,@1654 3408,0,@1654 3483,0,@11831 3670,0,@4533 3746,0,@117 3767,0,@117 3873,0,@11832 3886,0,@1640 3932,0,@4533 4100,0,@105 4153,0,@105 4191,0,@105 4225,0,@731 4341,0,@1447 4393,0,@105 4446,0,@1448 4676,0,@11834 4789,0,@11835 4869,0,@1447 5111,0,@105 5178,0,@105 5233,0,@105 5282,0,@11836 5407,0,@105 5441,0,@731 5564,0,@1447 5661,0,@11837 5776,0,@11838 5856,0,@1447 6094,0,@105 6147,0,@1448 6325,0,@11839 6440,0,@11840 6520,0,@1447 6762,0,@105 11674:D3,184|483b65187305ff5558cd05524c8b34244d8b7610498b5640ff124989c641f6c6010f858100000041ff364c8b742408498b560848c7c001000000ff124989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@4290,1,@16486| 11675:D3,184|483b65187305ff5558cd05524c8b34244d8b7610498b5660ff124989c641f6c6010f858100000041ff364c8b742408498b560848c7c001000000ff124989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@4290,1,@16487| 11676:D3,152|483b65187305ff5558cd05524c8b304c8b68084c8b60104c8b58184c8b50204c8b0c24498b5110498d47d0483b45107306ff5550ca047c4989c748c740f8050000004c8950204c8958184c8960104c8968084c8930ff124c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f4000000|@4291,1,@16488| 11677:D3,80|483b65187305ff5558cd05498d47d8483b45107305ff5550cd044989c748c740f8040000004c8b72184c8970184c8b72104c8970104c8b72084c89700849bed86e9c09000000004c8930c3f400000000|@4296,1,@16490|63,0,@11678 11678:D3,168|483b65187305ff5558cd054c8b7218493bc67d06488b5208ff224c8b72104d8b3641f6c601755f4d8b264d8b6e084d8b5c24084d8b134983fa01753a4d8b5b184c3bd875204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb284d89ee483b65187306ff5558ca0140ebab48b83841640800000000488b5d08ff2349c7c6010000004983fe01751048b808d5620800000000488b5d08ff23498b06c3f4|@4295,1,@16489|120,0,@4292 149,0,@1556 11679:D9,2184|483b65187306ff5558ca0d074989c6415253415049c7c5010000004d8d67f04c3b65107306ff5550ca04624d89e749c74424f80100000041c64424ff404d892c2449bd90426408000000004d892c244c8b6424084d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d896500415549c7c4150000004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca06424d89ef49d1ec4d8965f841c645ff404c89ef48d1e948b8a89b620800000000f348ab4d8d67e84c3b65107306ff5550ca04624d89e749c74424f8020000004d896c240849c70424030000004d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d89650041554d8d6fe84c3b6d107306ff5550ca04424d89ef49c745f80200000049bca89b6208000000004d8965084c8b24244d896500415549c7c4150000004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca06424d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4d8d67e84c3b65107306ff5550ca04624d89e749c74424f8020000004d896c240849c70424030000004d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d8965004d8d67e84c3b65107306ff5550ca04624d89e749c74424f80200000049c7442408010000004d892c246a016a016a016a014d8b164d89d34983fa010f85a5000000498b4608498b7e106a016a016a016a016a016a0149b810476408000000004c8b5a084c8b942488000000544156ffb42488000000ff742478ffb42490000000ff7424784154ffb424a0000000ffb4249800000041554151415341524c89cb4c89c24989f849c7c10100000049bad808620800000000ff1530060000415b415c488d642408415d415e488d6424084c891c244c896424084c896c24104c89742418e9160100004983fb050f858f0000004d8b5e08498b0b498b4308498b7b10498b5b18498b732049b828476408000000004c8b5a084c8b5424584151ff35c20500004156ff742460ff742450ff742468ff7424504154ff742478ff74247041554151415341524989ca4989f14c89c24989f8ff15840500004989c64d8b2e4c892c244d8b6e084c896c24084d8b6e184c896c24104d8b76204c89742418eb7d498b4608498b5e104d8b46186a016a016a016a016a016a014c8b6a085441514156ffb424900000004155ffb42488000000ffb424a0000000ffb424880000004154ffb424b000000049bad808620800000000ff15fd040000415b415c488d642408415d415e488d6424084c891c244c896424084c896c24104c89742418ff3424ff742410ff742420ff742430488b44241848c7c30100000049b82864640800000000ff15a50400004989c44c8b6c24604d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965006a016a01ff7424504156415548c7c001000000488d5c24184c8b4424784c8b8c24880000004c8b542470ff151e040000415e415b4983fb01750f49bd48c2620800000000e9b700000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64247048b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25980300007c15488d64247048b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017526418065ffbf4983fe01750f49bc48c2620800000000e90201000049c7c3010000004d89f4eb3e4d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64247048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078eb9641f6c40175374d8b4c24084d89da4983c2027115488d64247048b8d006620800000000488b5d08ff234d89cc4d89d3483b65187306ff5558ca0078ebc34c3b1d830200007c15488d64247048b850c2620800000000488b5d08ff234c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab49c7c3010000004d89f24983fa010f85d101000041806424ffbf4d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004c8b5424604d8953184d896b104c8b5424584d89530849ba00489d09000000004d89134d8b6df849c1e50849c1ed074983cd014d8b6424f849c1e40849c1ec074983cc014d3bec750949c7c503000000eb0749c7c5010000004983fd037504415ceb364d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d895c2410415d4d896c240849bd98489d09000000004d892c244c8b6c24104d8b6d004983fd030f85bd0000004c8b6c24104d8b5d084c8b6c24104d8b6d184d8b1b498b75004c8b6ef849c1e50849c1ed074983cd014983fd01750c49ba48c2620800000000eb554d89e94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89e94c89d748d1e9f348a5418062ffbf4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d0849c7450001000000eb054c8b6c2410498d47c8483b45107306ff5550ca00704989c748c740f8060000004c8b5c24584c8958284c896020415c4c8960184c897010415e4c8970084c89284883c458c208004d8b0a4d8b42084f894c9cfc4d89d94983c1027115488d64247048b8d006620800000000488b5d08ff234d89c24d89cb483b65187306ff5558ca007ce9e4fdfffff40000ffffffffffffff01ffffffffffffff01|@4509,1,@16620,@11804,@10619,@11749,@11787,@123,@11682|67,0,@4299 186,0,@1145 305,0,@1145 563,0,@4336 650,0,@123 741,0,@4337 933,0,@123 1013,0,@4493 1166,0,@1447 1215,0,@105 1265,0,@1448 1370,0,@1447 1423,0,@105 1484,0,@105 1534,0,@1448 1692,0,@11802 1809,0,@11803 1889,0,@1447 2128,0,@105 11680:D9,2304|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b204d89e64d8b24244983fc010f85600200004d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3574080000750949c7c603000000eb2b4c3b355a080000750949c7c603000000eb194c3b3540080000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0426408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54d8b364983fe030f85600200004d8b75084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35d8050000750949c7c603000000eb2b4c3b35be050000750949c7c603000000eb194c3b35a4050000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0436408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4d8b6d004983fd05750b48b89044640800000000c34d89f54983fe037d0b48b8708c620800000000c34d8b74240841ff7424104983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb8af620800000000e92e0200004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be3805110a00000000498b1648b86845640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0456408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8456408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10466408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@4335,1,@16492,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15238 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@4300 674,0,@1044 711,0,@105 761,0,@15183 944,0,@2144 992,0,@1021 1037,0,@1987 1188,0,@866 1233,0,@4308 1318,0,@1044 1342,0,@4315 1362,0,@1044 1396,0,@105 1430,0,@1308 1459,0,@105 1509,0,@15238 1545,0,@105 1602,0,@15175 1615,0,@4322 1671,0,@1311 1719,0,@866 1764,0,@4324 1808,0,@866 1853,0,@1315 1941,0,@866 1985,0,@4326 2034,0,@1318 2179,0,@866 2224,0,@4328 11681:D3,32|483b65187305ff5558cd0149be7800110a00000000498b16ff22f40000000000|@727,1,@16491|13,0,@15099 11682:D7,1488|488dbc2418ffffff483b7d187306ff5560ca0d0752505341504151415248c7c015000000ff15d60500004989c6415648ba3891620800000000488b0424ff15b50500004989c641ff763041ff764041ff762041ff766041ff762841ff765841ff761041ff76304c8ba424d80000004c8b9c24d00000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b5c24584d895d204d8965184c8b24244d8965104c8b6424084d89650849bc40889c09000000004d896500415541ff761841ff76404c8ba424f00000004c8b9c24e80000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b5c24704d895d204d8965184c8b24244d8965104c8b6424084d89650849bc88909c09000000004d896500415541ff765041ff76604c8ba424080100004c8b9c24000100004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b9c24880000004d895d204d8965184c8b24244d8965104c8b6424084d89650849bcd8919c09000000004d896500415541ff76484d8d77904c3b75107303ff55504d89f749c746f80d0000004c8b6c24604d896e604c8b6c24504d896e584c8b6c24084d896e504c8b2c244d896e484c8b6c24704d896e4049bd58496408000000004d896e384c8b6c24784d896e304c8b6c24584d896e284c8b6c24684d896e204c8b6c24204d896e184c8b6c24384d896e1049bdf0496408000000004d896e0849bd884a6408000000004d892e4156ffb424b0000000ffb424a0000000f6442408010f856c0100004c8b74240841ff364c8b74241041ff7608ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e0000000488b5b084156ffb42480000000ffb42480000000ffb424e8000000ffb424c0000000ffb424b8000000ffb424c8000000ffb424c0000000ffb424e8000000ff742478ffb42488000000ffb424d80000004155415441534152ffb4243801000041514150ffb424f8000000ffb424f800000057ffb424d8000000ffb42420010000ffb42410010000ffb424a801000056525153ffb42438010000ffb42438010000488b842410010000488b9c24180100004c8b8424c80100004c8b8c24000100004c8b9424c8010000ff15610200004989c4488d642408415d488d6424084c8924244c896c2408483b65187303ff5558e989feffff488da424980000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060100000041564c8bb42498000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e41564c8bb4249000000041ff36488b9c24980000004c8b8424900000004c8b4c24684c8b54247848c7c001000000ff15410100004989c64c8b6c24104d8b6d004983fd030f85c10000004c8b6c24104d8b6d084c8b6424104d8b6424184d8b6d00498b34244c8b5ef849c1e30849c1eb074983cb014983fb01750c49bc48c2620800000000eb584d89da4c89d14e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42684d89e749d1ea4d895424f841c64424ff404c89e748d1e948c7c001000000f348ab4c89d94c89e748d1e9f348a541806424ffbf4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c70301000000eb054c8b5c24104c8bac24b000000049bcd8086208000000004d895d004d89650849c74510010000004c8b6424084d8965184d897520415e488d6424084d89752848c7c0010000004883c438c26800f400000000|@4393,1,@16541,@11732,@11698,@10742,@11013|49,0,@1078 181,0,@11683 282,0,@11689 386,0,@11692 474,0,@4349 533,0,@4353 547,0,@4357 1264,0,@1447 1421,0,@123 11683:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849bef0889c09000000004d89304c8b4a1049bd88476408000000004c8b62184c8b5a204c8b5228415441534152ff74241849ba201f6308000000004c896c2420ff251b000000f40000|@4343,1,@16496,@11686|57,0,@11684 74,0,@4339 106,0,@2059 11684:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16493| 11685:D3,24|483b65187305ff5558cd01488b4020c3f400000000000000|@4340,1,@16494| 11686:D4,1112|483b65187306ff5558ca09074c89ca505341504152488b442418ff124989c64983fe017520488d6424085a488b4424085b488d6424084c8b34244c897424204883c420ff224c8b6c24384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd188e9c09000000004d892e4156488b542448488b442418ff124989c64983fe0175074c8b4c2438eb1a4d8b264d8b6e084d8b1c244983fb010f857c0300004d8b4c24084c8b6c24084d8b75004e8d3475010000004983fe01750f49ba80e5620800000000e9aa0000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d4c0300000f87060300004d89d84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c6104d89f549d1ed43c6042a2049d1ee43c644320128418062ffbf4d8b324e8d3475010000004c8b6c24204d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d441eff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d640200000f87110200004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89f1498d7208498d7c240848d1e9f3a44983c6104c89d94d89ed498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2848640800000000e9b60000004d89eb4983c34e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158d0100000f872d0100004d89d04e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc284864080000000048c7c14f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00224d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00424d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b442430415848c7c3030000004c8b7424204c897424404883c440ff258a000000488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234d89ee483b65187306ff5558ca0040e94efcfffff4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@4344,1,@16497,@11688|107,0,@11687 199,0,@1657 630,0,@4342 788,0,@4342 1005,0,@117 1026,0,@117 1047,0,@117 11687:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4341,1,@16495,@10716| 11688:D7,472|483b65187306ff5558ca09074c89c25053415141524c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dd201000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750f49be2068620800000000e9b70000004d8b364d8b2e4c3b2d6e0100007506498b4610eb15488d64242048b87850620800000000488b5d08ff23ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da400000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3a0000007509498b4610e9eefeffff488d64242048b87850620800000000488b5d08ff23f400|@4345,1,@16498,@15134,@15134,@15134,@15134|120,0,@788 161,0,@621 411,0,@828 456,0,@621 11689:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be38919c09000000004d89304c8b4a1049bd20496408000000004c8b62184c8b5a204c8b5228415441534152ff74241849bab8be6308000000004c896c2420ff251b000000f40000|@4343,1,@16501,@11686|57,0,@11690 74,0,@4346 106,0,@3342 11690:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16499| 11691:D3,24|483b65187305ff5558cd014c8b30498b4610c3f400000000|@4347,1,@16500| 11692:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be88929c09000000004d89304c8b4a1049bd48496408000000004c8b62184c8b5a204c8b5228415441534152ff74241849ba60e36208000000004c896c2420ff251b000000f40000|@4343,1,@16504,@11686|57,0,@11693 74,0,@4348 106,0,@1640 11693:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16502| 11694:D3,24|483b65187305ff5558cd01488b4018c3f400000000000000|@4340,1,@16503| 11695:D3,32|483b65187305ff5558cd0148b86849640800000000488b5d08ff23f400000000|@4340,1,@16505|13,0,@4350 11696:D3,32|483b65187305ff5558cd0148b8004a640800000000488b5d08ff23f400000000|@4340,1,@16506|13,0,@4354 11697:D3,32|483b65187305ff5558cd0148b8984a640800000000488b5d08ff23f400000000|@4340,1,@16507|13,0,@4358 11698:D28,5856|488dbc2430ffffff483b7d187306ff5560ca09074c89c25053415141524c8b7424184d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e957030000909090e9e00a0000909090e9ea0a0000909090e98c0b0000909090e9d30d00009090904d89f641ff76084c8b6c24184d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8bac24280100004c8ba424200100004c8b9c24300100004d8d77c04c3b75107306ff5550ca00384d89f749c746f8070000004c8b14244d8956304d895e284c8b5c24104d895e204c8b5c24184d895e184d8966104d896e0849bdd0ab9c09000000004d892e41566a016a016a0148c7c0010000004889e3ff15a5160000ff34244c8b7424104c8b5c24184c8bac24400100004d8b6d404c8ba424380100004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d895a184d8962104d896a0849bd88ad9c09000000004d892a4c8bac24400100004d8b6d604c8ba42430010000498d57e0483b55107306ff5550ca00744989d748c742f8030000004c8962104c896a0849bd08ae9c09000000004c892a4c8bac24280100004c8ba424200100004c8b9c24180100004c8b8c2410010000488bbc2408010000488bb424000100004d8d47904c3b45107306ff5550cac47e4d89c749c740f80d0000004989506049897058498978504d8948484d89504049ba58496408000000004d8950384d8958304d8960284d8968204d8970184c8b7424204d89701049bef0496408000000004d89700849be884a6408000000004d89304c8bb424d80000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e0000000498d5fc8483b5d107306ff5550ca007d4989df48c743f8060000004c8953284c895b204c8963184c896b104c89730849be70ae9c09000000004c89334c8bb424d00000004c8bac24c80000004c8ba424f00000004d8d57d84c3b55107306ff5550ca08714d89d749c742f8040000004d8962184d896a104d89720849be28b69c09000000004d893248ba38c96208000000004c8b8c2458010000488b442430ff15961400004c8bb424c00000004c8bac24b80000004c8ba42458010000498d47c0483b45107306ff5550ca00704989c748c740f8070000004c8b5c24284c8958304c8960284c8b6424384c8960204c8b6424404c8960184c8968104c89700849be20bb9c09000000004c89305a488d642420ff124c8b3424498b06488d642430c200014d89f64d89f541ff76084d89ed4d8b65104d89ed4d8b751841ff342441ff7424084c8b9c24380100004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004c8b5424104d895424184d895c24104d89ed4d896c240849bda8bd9c09000000004d892c2441f6c6010f85a4000000498b0648ba60e26208000000004c8bb424180100004c8bac24100100004c8b9c2420010000498d5fd0483b5d107306ff5550ca05784989df48c743f8050000004c895b204c8963184c896b104c89730849be08bf9c09000000004c89334c8b842438010000ff15311300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc280f6308000000004d8966104d896e0849c70605000000eb0a49be280f63080000000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060100000041564c8bb42448010000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424184d89f44c3b35161200007502eb3e4d89e44d8b2c244d89ee4e8d2c6d010000004983fd09752b49bd30096308000000004d89e4498d742408498d7d0848c7c104000000483bc9f3a67402eb05e9940100004c8b6c24184d89ec4c3b2db81100007502eb3a4d89e44d89f54e8d3475010000004983fe0b752b49be48096308000000004d89e4498d742408498d7e0848c7c105000000483bc9f3a67402eb05e9420100004c8b7424184d89f44c3b355e1100007502eb3a4d89e44d89ee4e8d2c6d010000004983fd07752b49bd98f56208000000004d89e4498d742408498d7d0848c7c103000000483bc9f3a67402eb05e9f00000004c8b6c24184d89ec4c3b2d041100007502eb3a4d89e44d89f54e8d3475010000004983fe05752b49be80f66208000000004d89e4498d742408498d7e0848c7c102000000483bc9f3a67402eb05e99e0000004c8b7424184d89f44c3b35aa1000007502eb3a4d89e44d89ee4e8d2c6d010000004983fd07752849bd60096308000000004d89e4498d742408498d7d0848c7c103000000483bc9f3a67402eb02eb4f4c8b6424184d89e54c3b25531000007502eb3c4d89ed4e8d3475010000004983fe050f85db02000049be78096308000000004d89ed498d7508498d7e0848c7c102000000483bc9f3a60f85b40200004c8b7424184d8b2e4e8d2c6d010000004983fd01750f49bcf04f640800000000e9b60000004d89eb4983c3184c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b151e0f00000f87440200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbf04f64080000000048c7c119000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c241448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be1050640800000000e9b60000004d89eb4983c31a4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153f0e00000f87580100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc105064080000000048c7c11b000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24404d89680849bde8c09c09000000004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84244801000048c7c3030000004c8b4c2420ff15830d0000eb2a488d64244848b8f807620800000000488b5d08ff23488d64244848b8f807620800000000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c70601000000498d5fc0483b5d107306ff5550ca00404989df48c743f80700000048c743300100000048c74328010000004c8b2c244c896b20488d6424084c8b2c244c896b18488d6424084c89731048c74308010000004c8b7424084c89f04c89334c8bb424300100004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849be38c19c09000000004d89304c8b8c24280100004c8bb42438010000ff35810c0000ff742428ff742428415649ba201f630800000000ff155f0c0000488b4424284883c0027115488d64243848b8d006620800000000488b5d08ff23488d642438c200014d89f64d8b76084156ff742418e9c2090000488d6424084d89f44d8b7424084d89e44d8b6c24104d89e44d8b642418498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930488b5c24684c8b8424180100004c8bb424b80000004c8bac24b00000004c8b6424704c8b9c24900000004c8b9424880000004c8b8c24a80000004156415541544153415241514d89c24c8b4424304c8b4c2430ff15810b0000488d64240858488d642408c200014d89f64d8b7608ff7424104156ffb42418010000ffb42418010000ffb42418010000ffb42400010000ffb42498000000ffb42498000000ffb42430010000ffb42430010000ffb42430010000ffb42428010000ffb42428010000ffb42408010000ffb424c8000000ffb42480000000ffb424a0010000ffb42448010000ffb42448010000ffb424480100004c8bac24480100004c8ba424380100004c8b9c24300100004c8b9424180100004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b8c24a0000000488b9c24d0000000488b8424c800000048898424f0000000488b84249800000048899c24f8000000488b9c249000000048898c240001000048899424080100004889b424100100004889bc24180100004c898424200100004c8b8424880000004c898c24280100004c8b8c24800000004c899424300100004c8b5424784c899c24380100004c89a424400100004c89ac24480100004c8b34244c89b424500100004c8b7424084c89b424580100004c8b7424104c89b424600100004c8b7424184c89b424680100004c8b7424204c89b424700100004c8b7424284c89b424780100004c8b7424304c89b424800100004c8b7424384c89b424880100004c8b7424404c89b424900100004c8b7424484c89b424980100004c8b7424504c89b424a00100004c8b7424584c89b424a80100004c8b7424604c89b424b00100004c8b7424684c89b424b80100004c8b7424704c89b424c00100004c8bb424c00000004c89b424e80000004881c4e8000000ff2524090000488da424c00000004d89f44d8b4c24084d89e44d8b7424104d89e44d89e541ff74241841ff3641ff76084c8b7424084d89f34c3b35e30800007502eb3c4d89db4d8b334d89f44e8d3475010000004983fe09752a49be30096308000000004d89db498d7308498d7e0848c7c104000000483bc9f3a67402eb05e9430100004c8b7424084d89f34c3b35870800007502eb3a4d89db4d89e64e8d2465010000004983fc0b752b49bc48096308000000004d89db498d7308498d7c240848c7c105000000483bc9f3a67402eb05e9f10000004c8b6424084d89e34c3b252d0800007502eb394d89db4d89f44e8d3475010000004983fe07752a49be98f56208000000004d89db498d7308498d7e0848c7c103000000483bc9f3a67402eb05e9a00000004c8b7424084d89f34c3b35d40700007502eb3a4d89db4d89e64e8d2465010000004983fc05752849bc80f66208000000004d89db498d7308498d7c240848c7c102000000483bc9f3a67402eb02eb514c8b5c24084d89dc4c3b1d7d0700007502eb3e4d89e44e8d3475010000004983fe070f85cd02000049be60096308000000004d89e4498d742408498d7e0848c7c103000000483bc9f3a67405e9a40200004c8b7424084d8b264e8d2465010000004983fc01750f49bbf04f640800000000e9b00000004d89e24983c2184c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05860600000f87340200004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1ea4d891349baf04f64080000000048c7c119000000498d7208498d7b0848d1e9f3a44c89e14d89f6498d7608498d7b1448d1e9f3a4418063ffbf4d8b334e8d2475010000004983fc01750f49be1050640800000000e9b40000004d89e24983c21a4c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ae0500000f874f0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049bb105064080000000048c7c11b000000498d730849d1ec4b8d3c2648d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00624d89c749c740f8020000004d89ed4d89680849bd98c19c09000000004d89284d8d6fe84c3b6d107306ff5550ca00434d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00234d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00434d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84243801000048c7c303000000ff15bb040000eb2a488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff2348ba60e26208000000004c8bb424180100004c8bac24100100004c8ba424380100004c8b9c2420010000498d5fc8483b5d107306ff5550ca04784989df48c743f8060000004c895b284c8963204c8b6424304c8963184c896b104c89730849bee8c19c09000000004c89334c8b842438010000488b442410ff15090400004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060100000041564c8bb42448010000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b44240848bb305064080000000049b88850640800000000ff151e0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d89660849c70601000000498d5fc0483b5d107306ff5550ca00604989df48c743f80700000048c743300100000048c74328010000004c8b24244c896320488d6424184c896b184c89731048c74308050000004c8b34244c89f04c89334c8bb424280100004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849bed0c59c09000000004d89304c8b8c24200100004c8bb42430010000ff354c020000ff742420ff742420415649ba201f630800000000ff152a020000488d642420488b04244883c002488d642410711048b8d006620800000000488b5d08ff23c20001f6442408010f85ae0100004c8b6c24084d89ee41ff75004d89f641ff7608ffb42428010000ffb42428010000ffb42428010000ffb424a0000000ffb424a0000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424d0000000ffb424a0010000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424400100004c8bb424400100004c8bac24280100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24500100004c8b8424e8000000488bbc2438010000488bb42430010000488b9424e0000000488b8c24d8000000488b9c24c8010000488b8424c0010000ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ffb42400010000ff742478ff742478ff742478ff742478ff742478ff7424784156415541544153415241514150ffb42468010000575652515350488b842488010000488b9c24900100004c8b8424780100004c8b8c24700100004c8b942468010000ff156b0000004989c4488da42490000000415d488d6424084c8924244c896c2408483b65187303ff5558e947feffff584883c428c20001f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@4403,1,@16548,@11739,@11686,@4339,@10774,@10996,@11688,@1901,@1762,@1754,@1900,@1899,@11758,@11734,@11686,@4339,@11688,@1902,@1901,@1762,@1754,@1900,@1899,@10996,@10927,@10906|240,0,@11699 349,0,@11701 417,0,@11702 525,0,@4349 564,0,@4353 578,0,@4357 678,0,@11703 754,0,@11706 767,0,@1486 886,0,@11713 1014,0,@11716 1041,0,@1633 1118,0,@11718 1175,0,@1932 1202,0,@1932 1448,0,@1899 1530,0,@1900 1612,0,@1754 1694,0,@1762 1776,0,@1901 1856,0,@1902 1917,0,@4388 2057,0,@4388 2132,0,@4389 2290,0,@4389 2365,0,@11721 2550,0,@117 2571,0,@117 2758,0,@11722 2803,0,@2059 2835,0,@105 3714,0,@1899 3795,0,@1900 3877,0,@1754 3958,0,@1762 4038,0,@1901 4101,0,@4388 4238,0,@4388 4309,0,@4389 4466,0,@4389 4538,0,@11723 4718,0,@117 4739,0,@117 4755,0,@1633 4849,0,@11724 5082,0,@4390 5092,0,@4392 5275,0,@11731 5320,0,@2059 5356,0,@105 11699:D4,296|483b65187305ff5558cd054989c6498b064d8b66084d8b34244d8b6c24084d8b5c24184d8b5424204c8b4a304d89cc4d8b094d89e04d8b24244983c402711048b8d006620800000000488b5d08ff234d89204d8d67e84c3b65107306ff5550ca056e4d89e749c74424f8020000004d894c240849c7042401000000498d5fc0483b5d107306ff5550ca057c4989df48c743f80700000048c743300100000048c74328010000004c8953204c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be28ad9c09000000004d89304c8b4a1049bd88476408000000004c8b62184c8b5a204c8b5228415441534152ff74241849ba201f6308000000004c896c2420ff251f000000f4000000000000|@4361,1,@16509,@11686|65,0,@105 221,0,@11700 238,0,@4339 270,0,@2059 11700:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16508| 11701:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16510| 11702:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16511| 11703:D4,560|483b65187306ff5558ca0d034889d74989de4889c34d8b58084d8b2b4983fd03750f4d8b2848c7c001000000e97f0100004d8b204d8b014d8b51084d8b49104c8b6f084d89ee4d8b6d004e8d2c6d01000000498b30488d1c75010000004983fd0175084d89c6e9b30000004883fb017505e9a8000000498d741dff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15840100000f87f60000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee498936488b7f084c89e9488d7708498d7e0848d1e9f3a44983c5104889d9498d700849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed8c86208000000004c8930c348b8f807620800000000488b5d08ff2341f6c50175314d8b5d084989c44983c402711048b8d006620800000000488b5d08ff234d89dd4c89e0483b65187306ff5558ca8962ebc94d89f04c89ce4c8b6f084c8b67104c8b5f184c8b57204c8b4f284154415341524151ff7424204989f249c7c1030000004c896c2428ff2526000000f40000000000ffffffffffffff01|@4362,1,@16512,@11704|404,0,@1484 418,0,@117 453,0,@105 11704:D7,784|483b65187306ff5558ca09074d89d64151504d8b164d8b6e084d8b66104c8b7424384d8b364e8d1c75010000004d8b324e8d0c75010000004983fb0175084d89d6e9b90000004983f901750a4c8b742438e9a90000004b8d7c0bff4889f84883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d344501000000483b35840200000f87670200004889f24c8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550cac83f4d89f748d1ea498956f841c646ff414883ee0249c744b6fc0000000048d1ef49893e488b7c24384c89d9488d7708498d7e0848d1e9f3a44983c3104c89c9498d720849d1eb4b8d3c1e48d1e9f3a4418066ffbf41564d8d77e04c3b75107306ff5550ca08314d89f749c746f8030000004d8966104d896e084c8b2c244d892e4c8b6c243841ff75004c8b6c24404d8b6d004983c5027115488d64242048b8d006620800000000488b5d08ff234c8b6424404d892c244c8b6c24184983fd037550498d47c8483b45107306ff5550ca08414989c748c740f8060000004c8970284c894020488958184c8b34244c89701049beb09f6208000000004c8970084c8b7424104c8930ff15890100004989c6eb4e498d47c8483b45107306ff5550ca08414989c748c740f8060000004c8970284c894020488958184c8b34244c89701049beb09f6208000000004c8970084c8b7424104c8930ff15310100004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e4d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d8970104c8b34244d89700849c700070000004c8b742440488b5c2408492bde7115488d64242848b8d006620800000000488b5d08ff234883c301488b442438ff159b0000004c8b742440488b5c2408492bde7115488d64242848b8d006620800000000488b5d08ff234883c3014d8d47f04c3b45107305ff5550cd084d89c749c740f8010000004c8b34244d8930488b442430ff153f000000584883c420c22800488d64241048b8f807620800000000488b5d08ff23f400ffffffffffffff01|@4369,1,@16513,@11705,@11705,@10915,@10914|330,0,@105 413,0,@1172 493,0,@1172 632,0,@105 683,0,@105 760,0,@117 11705:D3,472|483b65187306ff5558ca09014c8b204d8b34244d8b2e4983fd030f859a010000498b7608488b40084c8b6ef84d89ee49c1e50849c1ed074983cd01493bdd7d2e49c1e60849c1ee074983ce01493bde721048b80057620800000000488b5d08ff234c89449efc48c7c001000000c34d89f549c1e60849c1ee074983ce014983ee014d6bf603711048b8d006620800000000488b5d08ff234983c6014989db4983c302711048b8d006620800000000488b5d08ff234d3bf37e054d89f3eb004983fb017d05e9e10000004c3b1d000100000f8dd40000004c89d94e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4b314d89f749d1eb4d895ef841c646ff404c89f748d1e9f348ab4c89e948c1e10848c1e9074883c9014d8b6ef849c1e50849c1ed074983cd01493bcd7e1048b8c04b640800000000488b5d08ff234c89f748d1e9f348a54d8d6fe84c3b6d107306ff5550ca08514d89ef49c745f8020000004d89750849c74500030000004d892c244d8b6ef849c1e50849c1ed074983cd01493bdd721048b80057620800000000488b5d08ff234d89449efc48c7c001000000c348b8d055620800000000488b5d08ff2348b8184c640800000000488b5d08ff23f40000000000ffffffffffffff01|@4370,1,@16514|83,0,@664 137,0,@105 166,0,@105 310,0,@4363 399,0,@664 428,0,@657 444,0,@4365 11706:D6,824|483b65187305ff5558cd054989c54c8b62184d89e64d3bec0f8dab000000488b52084c89e8ff124989c64d8b66084d89e54d8b1c244983fb057547498b44241048ba40cf62080000000048bb404d64080000000049b8884d640800000000ff15fc0200004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a8d2620800000000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c34d2bee711048b8d006620800000000488b5d08ff234983c5014c8b72104d8b364d8b264983fc0175504d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234f8b74aefceb0a49bea89b620800000000eb4e4d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b81051620800000000488b5d08ff234f8b74aefceb0a49bea89b6208000000004d8b264983fc03752d4d8b76084d3bf57c1048b8984d640800000000488b5d08ff234d89f5483b65187306ff5558ca0420e91cffffff4d8b264d89e54983fc070f85a30000004d8b76084d8b66084d89e54d8b1c244983fb057547498b44241048ba40cf62080000000048bb184e64080000000049b8284e640800000000ff15440100004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a8d2620800000000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c34983fd010f85a30000004d8b76084d8b66084d89e54d8b1c244983fb057547498b44241048ba40cf62080000000048bb384e64080000000049b8484e640800000000ff158f0000004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a8d2620800000000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c348b8584e640800000000488b5d08ff23f400|@4384,1,@16521,@10970,@10970,@10970|66,0,@1526 76,0,@4371 86,0,@4373 147,0,@1545 208,0,@105 289,0,@628 312,0,@1145 369,0,@625 392,0,@1145 420,0,@4374 498,0,@1526 508,0,@4377 518,0,@4378 579,0,@1545 671,0,@1526 681,0,@4379 691,0,@4380 752,0,@1545 808,0,@4381 11707:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@4372,1,@16515| 11708:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@4372,1,@16516| 11709:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@4372,1,@16517| 11710:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@4372,1,@16518| 11711:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@4372,1,@16519| 11712:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@4372,1,@16520| 11713:D5,216|483b65187305ff5558cd0552ff304c8b700841ff36498b46084c8b742410498b5e30ff15d00000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408584d8d47e84c3b45107305ff5550cd094d89c749c740f8020000004c8b34244d8b6e084d89680849bd30bc9c09000000004d89284d89f64d8b4e1049bd20496408000000004d89f64d8b66184d89f64d8b5e204d89f64d8b5628488d642408415441534152ff74241849bab8be6308000000004c896c2420ff251c000000f4000000|@4385,1,@16523,@11686,@11715|127,0,@11714 147,0,@4346 193,0,@3342 11714:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16522| 11715:D3,240|483b65187305ff5558cd09a8010f85cf0000004c8b30488b40084d8b2e4d8b66084d8b56184d8b4e204c8b334d89f34983c302711048b8d006620800000000488b5d08ff234c891b4d8d5fe84c3b5d107306ff5550ca09764d89df49c743f8020000004d89730849c703010000004d8d77c04c3b75107306ff5550ca093e4d89f749c746f80700000049c746300100000049c74628010000004d894e204d8956184d895e104d8966084d892e4156e84dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16524|55,0,@105 11716:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849beb8be9c09000000004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@4387,1,@16526,@11688|47,0,@11717 11717:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4386,1,@16525,@10807| 11718:D4,224|483b65187306ff5558ca0d014989c64c8b6a204d89ec4d8b5d404d8d6fe04c3b6d107306ff5550ca04594d89ef49c745f8030000004c8b52084d8955104d895d0849bb18c09c09000000004d895d004d8b5c24604d8d67e04c3b65107306ff5550ca04694d89e749c74424f8030000004c8b52104d895424104d895c240849bb80c09c09000000004d891c24498d47e8483b45107306ff5550ca04714989c748c740f8020000004c8960084c892841504c8b42184c89f3ff153b0000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400000000000000|@1656,1,@16529,@11006|67,0,@11719 128,0,@11720 11719:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16527| 11720:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16528| 11721:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4386,1,@16530,@10807| 11722:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16531| 11723:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4386,1,@16532,@10807| 11724:D4,280|483b65187306ff5558ca0d014989c64d89c54c8b62284d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849ba30c39c09000000004d8914244d8b53604d8d5fe04c3b5d107306ff5550ca0c744d89df49c743f8030000004c8b4a104d894b104d89530849ba98c39c09000000004d8913498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62204d8960104c8b62184d89600849bc00c49c09000000004d892041554c89f3ff15390000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f40000000000|@1656,1,@16537,@11006|74,0,@11725 131,0,@11726 225,0,@11727 11725:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16533| 11726:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16534| 11727:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849be10c59c09000000004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@4387,1,@16536,@11688|47,0,@11728 11728:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4386,1,@16535,@10807| 11729:D3,16|483b65187305ff5558cd01c3f4000000|@4391,1,@16538| 11730:D3,16|483b65187305ff5558cd01c3f4000000|@4391,1,@16539| 11731:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16540| 11732:D3,480|483b65187306ff5558ca09074c8b334d2bf0711048b8d006620800000000488b5d08ff234983c6014983fe01750c49bd48c2620800000000eb764983fe017e564c3b35910100007d4d4d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02474d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000eb1048b8d050640800000000488b5d08ff234d3bf47f3a418065ffbf498d47d8483b45107306ff5550ca00254989c748c740f8040000004c8940184c8968104c89500849be38c89c09000000004c8930c34d8b19498b3b4883ff01754d4d8b5b08498b73f84889f748c1e60848c1ee074883ce014c3be67d2848c1e70848c1ef074883cf014c3be7721048b89051620800000000488b5d08ff234f8b5ca3fceb0749c7c301000000eb4b4d8b5b08498b73f84889f748c1e60848c1ee074883ce014c3be67d2848c1e70848c1ef074883cf014c3be7721048b81051620800000000488b5d08ff234f8b5ca3fceb0749c7c3010000004983fb01751048b808d5620800000000488b5d08ff234d8b1b4f895ca5fc4d89e34983c302711048b8d006620800000000488b5d08ff234d89dc483b65187306ff5558ca0077e9d2fefffff4000000ffffffffffffff01|@4397,1,@16543|22,0,@105 48,0,@1447 152,0,@4394 217,0,@11733 288,0,@628 365,0,@625 401,0,@1556 434,0,@105 11733:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4|@4396,1,@16542|42,0,@105 91,0,@628 11734:D11,776|483b65187306ff5558ca090753415041514152ff304c8b7008488b40104983fe030f8501010000a8010f85e40000004c8b30ff7008498b1e4d8b76084c8b6424284d8b6c24404d89e44d8b642460498d47e8483b45107306ff5550ca08704989c748c740f8020000004c8960084c89284d8d47d84c3b45107306ff5550ca09404d89c749c740f8040000004d8970184c8b7424104d8970104c8b7424184d89700849be40cc9c09000000004d8930ff15a40200004989c641564c8b34244d8b364d8b76184d8b66084d89e54d8b24244983fc0375354d89ee4d8b76084c3b356d020000750949c7c603000000eb0749c7c6010000004983fe03750f488d64243848c7c001000000c23000ff742408e986000000488d64242848b84052640800000000488b5d08ff23488b5c24204c8b4424104c8b4c2408ff150b0200005b4c8b4424105f488d642418488b7424284c8b6c24104c8b6424084c8b5c24304c8b5424204c8b4c24184c894c24104989f94c895424184989f24c895c24204c896424284c896c24304c8b34244c897424084883c408ff25a7010000f60424010f854e0100004c8b2c244d8b75004d89ed41ff7508498b1e4d8b76084c8b6424404d8b6c24404d89e44d8b642460498d47e8483b45107306ff5550ca08704989c748c740f8020000004c8960084c89284d8d47d84c3b45107306ff5550ca09404d89c749c740f8040000004d8970184c8b7424284d8970104c8b7424304d89700849be98ce9c09000000004d8930ff15070100004989c64156488b9c24800000004c8b4424784c8b4c24704c8b54246848c7c001000000ff15d60000004989c64156488b9c24880000004c8b8424800000004c8b4c24784c8b54247048c7c001000000ff15a20000004989c64c8bac24800000004c8b6424684c8b5c24604156ff742438ff742458ff742450415541544153488b44244048bbd8086208000000004c8b4424384c8b4c245849bad808620800000000ff1548000000488d642410415d4c892c24483b65187303ff5558e9a8feffff488d64244048c7c001000000c23000f400000000000000|@4428,1,@16576,@11767,@11732,@11732,@11006,@11775,@11764,@15143,@11006|163,0,@11735 282,0,@4401 544,0,@11737 694,0,@123 714,0,@123 11735:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9851640800000000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb985164080000000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc48ce9c09000000004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@4400,1,@16545,@11688|36,0,@4398 194,0,@4398 268,0,@11736 444,0,@117 11736:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16544,@10716| 11737:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9851640800000000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb985164080000000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bca0d09c09000000004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@4400,1,@16547,@11688|36,0,@4398 194,0,@4398 268,0,@11738 444,0,@117 11738:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16546,@10716| 11739:D5,1384|483b65187306ff5558ca09074989c64d8d6ff04c3b6d107306ff5550ca08474d89ef49c745f80100000041c645ff4049895d0041554d8b6840498d7fe0483b7d107306ff5550ca00674989ff48c747f8030000004c894f104c896f0849bd90d69c09000000004c892f4d8b6860498d5fe0483b5d107306ff5550ca80644989df48c743f8030000004c8953104c896b0849bdf8d69c09000000004c892b4c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bb424d0000000488b9424c8000000488b8c24c00000004d8d6f904c3b6d107306ff5550cace5f4d89ef49c745f80d00000049895d6049894d58498955504989754849897d4048bf584964080000000049897d384d8945304d894d284d8955204d895d184d89651049bcf0496408000000004d89650849bc884a6408000000004d89650041556a016a014d8b264d89e54983fc010f85e600000041ff760841ff76106a016a016a016a016a016a01ffb42410010000488b8424b00000004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000544883042408415641554154415341524151415057565251534989c2488b542468488b8424a8000000488b9c24c00000004c8b8424a000000049c7c101000000ff12488d642408415d488d642418415e488d6424184c892c244c89742408e9950100004983fd050f85e70000004d8b760841ff3641ff760841ff761041ff761841ff7620ffb424880000004c8bb424980000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff7424404156415541544153415241514150575652515350488b542470488b842490000000488b9c24800000004c8b8424880000004c8b4c24784c8b942498000000ff124989c6488d6424304d8b2e4c892c244d8b76204c89742408e9a4000000498b4608498b5e10498b56186a016a016a016a016a016a01488b8c24980000004c8bb424b00000004c8bac24f80000004c8ba424f00000004c8b9c24a80000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c800000054415641554154415341524151415057564989ca4989d04c8b8c2490000000ff15c4010000415d488d642418415e488d6424084c892c244c897424085841584c8b7424404c8b6424384c8b9c24b80000004c8b5424484c8b8c24b00000004d8d6fc04c3b6d107306ff5550ca015f4d89ef49c745f807000000488b7c24084889fe49897d304d894d284d8955204d895d184d8965104d89750849be60d79c09000000004d8975004c8b7424304c8b5c24284c8b9424b80000004c8b4c2448488bbc24b00000004d8d67c04c3b65107306ff5550cac16f4d89e749c74424f8070000004889f64889f2498974243049897c24284d894c24204d895424184d895c24104d8974240849be48da9c09000000004d8934244c8b5c24204c8b5424184c8b8c24b8000000488b7c2448488bb424b00000004d8d77c04c3b75107306ff5550cac53f4d89f749c746f8070000004889d2498956304989762849897e204d894e184d8956104d895e0849bb00dc9c09000000004d891e498d5fe0483b5d107306ff5550ca01714989df48c743f8030000004c8963104c896b084c893341506a0149c7c10300000049bad808620800000000ff152a0000004c8b742408498b064883c410c2f000f40000|@4413,1,@16561,@11014,@11749|94,0,@11740 146,0,@11741 270,0,@4349 304,0,@4353 318,0,@4357 1082,0,@11742 1191,0,@11745 1290,0,@11747 1352,0,@123 11740:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16549| 11741:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16550| 11742:D5,280|483b65187305ff5558cd0552ff30488b58084c8b33488b43084883f8017502eb784d8b2e4d8b66084d8b56184d8b5e104d8d77d84c3b75107306ff5550ca013c4d89f749c746f8040000004d8956184d895e104d8966084d892e41564c8b742410498b5e30ff15cd0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408584d8d47e84c3b45107305ff5550cd094d89c749c740f8020000004c8b34244d8b6e084d89680849bdb0d89c09000000004d89284d89f64d8b4e1049bd20496408000000004d89f64d8b66184d89f64d8b5e204d89f64d8b5628488d642408415441534152ff74241849bab8be6308000000004c896c2420ff2519000000f4|@4407,1,@16552,@11686,@11744|194,0,@11743 214,0,@4346 260,0,@3342 11743:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16551| 11744:D3,272|483b65187305ff5558cd09a8010f85f00000004c8b18488b40084d8b2b4d8b63084d8b73104d8b53184d8b4b204d8b364983fe010f85b90000004c8b334d89f34983c302711048b8d006620800000000488b5d08ff234c891b4d8d5fe84c3b5d107306ff5550ca09764d89df49c743f8020000004d89730849c703010000004d8d77c04c3b75107306ff5550ca093e4d89f749c746f80700000049c746300100000049c74628010000004d894e204d8956184d895e104d8966084d892e4156e83cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e052640800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@16553|72,0,@105 245,0,@4404 11745:D4,296|483b65187305ff5558cd054989c6498b064d8b5e084d8b334d8b6b084d8b63104d8b5b184d8b6d004983fd010f85e00000004c8b6a304d89e94d8b55004d89d54983c502711048b8d006620800000000488b5d08ff234d89294d8d6fe84c3b6d107306ff5550ca055c4d89ef49c745f8020000004d89550849c7450001000000498d5fd8483b5d107306ff5550ca05784989df48c743f8040000004c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849bea0db9c09000000004d89304c8b4a1049bd48496408000000004c8b62184c8b5a204c8b5228415441534152ff74241849ba60e36208000000004c896c2420ff252e00000048b8e052640800000000488b5d08ff23f40000000000|@4408,1,@16555,@11686|72,0,@105 206,0,@11746 223,0,@4348 255,0,@1640 276,0,@4404 11746:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16554| 11747:D4,320|483b65187305ff5558cd054989c6498b064d8b56084d8b324d8b6a084d8b62104d8b5a184d8b52204d8b24244983fc010f85f60000004c8b62304d89e04d8b0c244d89cc4983c402711048b8d006620800000000488b5d08ff234d89204d8d67e84c3b65107306ff5550ca056e4d89e749c74424f8020000004d894c240849c7042401000000498d5fc0483b5d107306ff5550ca057c4989df48c743f80700000048c743300100000048c74328010000004c8953204c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be70dd9c09000000004d89304c8b4a1049bd88476408000000004c8b62184c8b5a204c8b5228415441534152ff74241849ba201f6308000000004c896c2420ff252c00000048b8e052640800000000488b5d08ff23f4000000|@4409,1,@16557,@11686|76,0,@105 232,0,@11748 249,0,@4339 281,0,@2059 302,0,@4404 11748:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16556| 11749:D5,928|483b65187306ff5558ca0907415041526a016a016a016a016a016a014c8b8c24880000004c8b9424800000004c8b7424784c8b6c2470415641554c8d442410ff157b030000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424104c8b6c24684d8975004c8bb4249800000041ff364c8b8424a00000004c8b8c24980000004c8b9424900000004c8bb424880000004156ff742470488b44243048bb8054640800000000ff15080300004989c44983fc01750f49bc48c2620800000000e9be00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64247848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d830200007c15488d64247848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f85cf010000418066ffbf4d89f44c8b7424084d89f34c3b3424488d642408750a488d642408e990000000f6442418010f85800000004c8b6c24784d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d89db4d895e18488d6424084d8966104d896e0849bde8e19c09000000004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d897424104c8b34244d89742408488d64240849be80e29c09000000004d893424eb07488d642408415c4c8bb424880000004d8b364c8b5c24184d8b2b4983fd030f85b80000004d89db4d8b6b084d89db4d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba48c2620800000000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb034d89db4c8bac24b00000004d895d004c8b5c24104d895d0849c74510010000004c8b1c244d895d18488d6424084d8965204d89752848c7c0010000004883c458c250004d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64247848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9e4fdfffff400000000000000ffffffffffffff01|@4419,1,@16564,@11756,@11753|162,0,@4410 187,0,@1447 236,0,@105 286,0,@1448 484,0,@11751 544,0,@11752 639,0,@1447 875,0,@105 11750:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4411,1,@16558| 11751:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4|@4412,1,@16559|42,0,@105 91,0,@628 11752:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16560,@10764| 11753:D4,904|483b65187306ff5558ca0907505341504152498b5128488b442418ff124989c64983fe010f85040300004c8b7424184d8b2e4e8d2c6d010000004983fd01750f49bc8055640800000000e9b60000004d89eb4983c3164c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15010300000f87940200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb805564080000000048c7c117000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c241348d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be08e5620800000000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15220200000f87a80100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc08e562080000000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b2c244d896808488d64240849bd88e69c09000000004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b44242848c7c3030000004c8b4c2408ff15ed000000415e488d6424084c8b5c241049bcc8e162080000000049bda0556408000000004d891e4d89660849c746100100000049c74618010000004d896e2049c746280100000048c7c0010000004883c408c21000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d642408415d4d8b364d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c0010000004883c410c21000f40000ffffffffffffff01ffffffffffffff01|@4425,1,@16567,@11688|66,0,@4414 206,0,@4414 281,0,@1654 439,0,@1654 518,0,@11754 705,0,@1629 715,0,@4415 779,0,@117 800,0,@117 11754:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16562,@10716| 11755:D3,32|483b65187305ff5558cd0148b8b055640800000000488b5d08ff23f400000000|@4418,1,@16563|13,0,@4416 11756:D4,384|483b65187306ff5558ca090753415041514152a8010f85530100004c8b30ff70084d8b66084d89e54d8b1c244983fb010f8523010000498b44240841ff7424184d8b4424204d8b56104d89ee4d8b264d89e54983fc057515488d64243048b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b7608498b1eeb04498b5e08eb074d8b7608498b1e4c8b7424384c8b6c24404156ff742428ff742428ff742428415549c7c101000000ff15db0000004989c64156498d5fd8483b5d107303ff55504989df48c743f8040000004c8b7424084c8973184c8b7424304c8973104c8b34244c89730849bed0e89c09000000004c89334c8b7424484c8b6c244041564155488b4424204c8b4424384c8b4c24304c8b542428e8d8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c21000488d64242848b8d856640800000000488b5d08ff23488d64242048c7c001000000c21000f40000|@4424,1,@16566,@11704|95,0,@1545 246,0,@11757 352,0,@4421 11757:D3,88|483b65187305ff5558cd054c8b70084d8b2e4983fd0175354d8b76184c8b6a184d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c3488b5210ff2248c7c001000000c3f40000|@4420,1,@16565| 11758:D6,2400|488dbc2440ffffff483b7d187306ff5560ca090750415041514152f6c3010f851c0900004c8b33ff730841ff76084d8b76184d8b364c8b6c24204d8b6540498d7fe0483b7d107306ff5550ca00704989ff48c747f8030000004c8b5c24184c895f104c89670849bcf0f29c09000000004c89274d89ed4d8b6560498d5fe0483b5d107306ff5550ca80704989df48c743f8030000004c8b5c24104c895b104c89630849bc58f39c09000000004c89234c8ba42408010000498d77e0483b75107306ff5550ca88704989f748c746f8030000004c8966104d89ed4c896e0849bdc0f39c09000000004c892e4c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488b9424d8000000488b8c24d00000004d8d6f904c3b6d107306ff5550cace5f4d89ef49c745f80d00000049895d6049894d58498955504989754849897d4048bf584964080000000049897d384d8945304d894d284d8955204d895d184d89651049bcf0496408000000004d89650849bc884a6408000000004d89650041554c8bac24d00000004d8b6d004e8d2c6d010000004c8b6424084d8b1c244e8d145d010000004983fd0175084d89e3e9c30000004983fa01750d4c8b9c24d0000000e9b00000004f8d4c15ff4c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05530700000f87200700004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1e94d890b4c8b8c24d00000004c89e9498d7108498d7b0848d1e9f3a44983c5104c89d14d89e4498d74240849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd0019620800000000e99d0000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d790600000f87390600004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049d1ec43c64425002e418065ffbf41554d8b264d89e54983fc010f850401000041ff760841ff76106a016a016a016a016a016a01488b8424100100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b000000054415641554154415341524151415057565251534889c2488b8424a0000000488b9c24b00000004c8b84249800000049c7c1010000004c8b9424a8000000ff12415d415c415b415a41594158488d6424204d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892ee9a50100004983fd050f85ce0000004d8b760841ff3641ff760841ff761041ff761841ff7620488b8424900000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000ff742430ff742430415641554154415341524151415057565251534889c2488b842488000000488b5c24784c8b8424800000004c8b4c24704c8b942490000000ff124989c6488d642438e9cd000000498b4608498b5e10498b56186a016a016a016a016a016a014c8bb424b00000004c8bac24f80000004c8ba424f00000004c8b9c24a80000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c800000054415641554154415341524151415057564989d04c8b8c24880000004c8b942480000000ff15cc030000415d415c415b415a41594158488d6424104d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564c8b7424304983c60241567115488d64244048b8d006620800000000488b5d08ff23ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424684156415541544153415241514150575652515350488b842448010000488b9c24600100004c8b8424780100004c8b8c24700100004c8b942468010000e89af8ffff4989c641564c8bac24d80000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb42440010000498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424b00000004d89660849c70601000000498d5fd8483b5d107306ff5550ca00604989df48c743f8040000004c896b184c8bac24800000004c896b104c8973084c8bb424880000004c89f04c89334c8bb424c80000004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849bed0f49c09000000004d89304c8b8c24c00000004c8bb424400100004c8bac24d00000004c8ba42438010000ff358c00000041564155415449ba60e3620800000000ff156e00000058488da424b0000000c2d800488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d64241858c2d800f4000000000000ffffffffffffff01ffffffffffffff01|@4427,1,@16573,@11686,@4348,@11749|104,0,@11759 164,0,@11760 223,0,@11761 339,0,@4349 373,0,@4353 387,0,@4357 666,0,@201 1557,0,@105 2243,0,@11763 2300,0,@1640 2333,0,@117 2354,0,@117 11759:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16568| 11760:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16569| 11761:D4,88|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251e000000f40000000000|@4426,1,@16570,@11762| 11762:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16571| 11763:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@4338,1,@16572| 11764:D4,248|483b65187306ff5558ca09035341504151a8010f85cf0000004c8b30ff70084d8b064d8b76084c8b6c2418498b5d604d8d4fd84c3b4d107306ff5550ca08414d89cf49c741f8040000004d8971184c8b7424084d8971104c8b7424104d89710849be58f69c09000000004d893148b860e3620800000000ff15930000004989c64983fe01751758488b5c24104c8b4424084159488d642410e963ffffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f40000|@3363,1,@16597,@11008|98,0,@11765 111,0,@1640 11765:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9851640800000000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb985164080000000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc60f89c09000000004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@4400,1,@16575,@11688|36,0,@4398 194,0,@4398 268,0,@11766 444,0,@117 11766:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16574,@10716| 11767:D17,4464|483b65187306ff5558ca09074c89c25053415141524c8b74241841ff364c8b74241041ff364c8b7424084d8b66184d89e54d8b5424084d89d34d8b124983fa0375314d89dc4d8b6424084c3b259f110000750949c7c403000000eb0749c7c4010000004983fc03750a488d642430e9810000004c8b24244d8b6424184d8b5424084d89d34d8b124983fa0375234d89dc4d8b6424084c3b254c110000750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374324d89ee4d8b76084d8b264d89e54983fc0375064d8b7610eb644983fd0175064d8b7608eb584d8b6e0849c7c601000000eb0f488d64243048c7c001000000c2380041f6c50175364d8b5d084d89f44983c4027115488d64243048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0460ebc44c8b2c244d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb544983fc0175064d8b6d08eb484d8b650849c7c50100000041f6c40175374d8b5424084d89eb4983c3027115488d64243048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0470ebc34d3bf50f84ff010000488d6424104c8b6c24484d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb80a9d09000000004d892e4156488b442420488b5c2418ff15e20f00004989c64156488b442418488b5c2410ff15c50f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc10596408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0596408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd285a6408000000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424484158488d6424204c8b4c243048c7c3030000004c8b34244c897424384883c438ff251b0e00004c8b7424084d8b76184d8b6e084d8b65004983fc01750b498b4518ff124989c6eb0041564c8b742408498b5e184c8b73084d8b2e4983fd017510498b4618488b542470ff124889c3eb004c8b34244d8b76084d8b2e4983fd0175424d8b66184c8b7424504d3be67d0c49c7c601000000e9140d00004c8b7424504d2be67115488d64243848b8d006620800000000488b5d08ff234983c401e9d60b000049c7c6010000004983fe030f84020500004c8b7424104d8b264c8b5424284d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b80000004983fb0175084d89d5e9aa0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05970c00000f87790400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b7424084d8b7610498b06498b5e084d8b4610ff15390c00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be685a6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c7060100000041564c8b6c24604d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd080b9d09000000004d892e4156488b442438488b5c2430ff15d30a00004989c64156488b442430488b5c2428ff15b60a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424104d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc58596408000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be78896208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0596408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd285a6408000000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424604158488d6424084c8b4c246048c7c3030000004c8b7424304c897424684883c468ff2560080000488d64243848b8f807620800000000488b5d08ff234c8b73084d8b2e4983fd0175424d8b66184c8b7424504d3be67d0c49c7c601000000e9820600004c8b7424504d2be67115488d64243848b8d006620800000000488b5d08ff234983c401e94405000049c7c6010000004983fe030f840f050000488d6424084c8b34244d8b26488d6424084c8b5424084d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe01750d488d6424084d89e5e9bd000000488d6424084983fb0175084d89d5e9aa0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b051a0700000f87730400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060700000041564c8b7310498b06498b5e084d8b4610ff15a90600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be685a6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c7060100000041564c8b6c24504d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd580b9d09000000004d892e4156488b442428488b5c2420ff15430500004989c64156488b442420488b5c2418ff15260500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424104d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc58596408000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be78896208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0596408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd285a6408000000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424504158488d6424284c8b4c243048c7c3030000004c8b34244c897424384883c438ff25d1020000488d64242048b8f807620800000000488b5d08ff23584c8b4424484c8b4c24404c8b5424384c8b7424304c897424684883c468ff25900200004c8b7424484d8b364d8b2e4983fd0175554d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b89051620800000000488b5d08ff234f8b74a6fceb0a49bea89b620800000000eb534d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b81051620800000000488b5d08ff234f8b74a6fceb0a49bea89b6208000000004d8b1e4d89dd4983fb0375324d8b76084d3bf47c15488d64243848b8984d640800000000488b5d08ff234d89f4483b65187306ff5558ca0810e909ffffff4d89ee4983fe01750949c7c601000000eb0d4983fe07750c49c7c603000000e9a8f9ffff488d64243848b8a85a640800000000488b5d08ff234c8b7424484d8b364d8b2e4983fd0175554d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b89051620800000000488b5d08ff234f8b74a6fceb0a49bea89b620800000000eb534d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b81051620800000000488b5d08ff234f8b74a6fceb0a49bea89b6208000000004d8b1e4d89dd4983fb0375324d8b76084d3bf47c15488d64243848b8984d640800000000488b5d08ff234d89f4483b65187306ff5558ca0810e909ffffff4d89ee4983fe01750949c7c601000000eb0d4983fe07750c49c7c603000000e916f3ffff488d64243848b8a85a640800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01|@4446,1,@16580,@11772,@11688,@11771,@11771,@11774,@11688,@11771,@11771,@11774,@11688,@11771,@11771,@15143,@15143|280,0,@105 395,0,@105 481,0,@11768 563,0,@4430 611,0,@866 656,0,@4437 700,0,@866 788,0,@1008 833,0,@4439 1083,0,@105 1498,0,@866 1542,0,@4441 1587,0,@866 1744,0,@11769 1875,0,@866 1920,0,@4433 1966,0,@1021 2045,0,@866 2090,0,@4437 2134,0,@866 2222,0,@1008 2267,0,@4439 2391,0,@117 2461,0,@105 2890,0,@866 2934,0,@4441 2979,0,@866 3136,0,@11770 3267,0,@866 3312,0,@4433 3358,0,@1021 3437,0,@866 3482,0,@4437 3526,0,@866 3614,0,@1008 3659,0,@4439 3782,0,@117 3901,0,@628 3924,0,@1145 3986,0,@625 4009,0,@1145 4045,0,@4374 4122,0,@4443 4205,0,@628 4228,0,@1145 4290,0,@625 4313,0,@1145 4349,0,@4374 4426,0,@4443 11768:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4429,1,@16577,@10716| 11769:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4429,1,@16578,@10716| 11770:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4429,1,@16579,@10716| 11771:D3,624|483b65187305ff5558cd094c8b284d8b751041f6c60175414d8b1e4d8b66084d8b134983fa0175204d8d77f04c3b75107306ff5550ca08284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0860ebb949c7c60100000041f6c601757d4d8b1e4d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375584d89e64d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d8926eb0749c7c6010000004d8b5d004c8b2b4e8d246d010000004d8b2b4e8d146d010000004983fc0175084d89dde9b40000004983fa0175084989dde9a60000004f8d4c14ff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b051a0100000f87fd0000004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89e1488d7308498d7d0848d1e9f3a44983c4104c89d1498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01|@4458,1,@16584|595,0,@117 11772:D6,1408|483b65187306ff5558ca0907415041524c8b70084d89f54d8b364983fe0175584c8b63084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752a4d8b65184d8b6e184c2b6424087115488d64241048b8d006620800000000488b5d08ff234983c401eb1c488d642410eb05488d64241048b8505b640800000000488b5d08ff234d8b314d8b1e4983fb0175554d8b76084d8b56f84d89d349c1e20849c1ea074983ca014d3be27d2d49c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234f8b74a6fceb0a49bea89b620800000000eb534d8b76084d8b56f84d89d349c1e20849c1ea074983ca014d3be27d2d49c1e30849c1eb074983cb014d3be37215488d64241048b81051620800000000488b5d08ff234f8b74a6fceb0a49bea89b6208000000004d8b1e4983fb0375324d8b76084d3bf47c15488d64241048b8984d640800000000488b5d08ff234d89f4483b65187306ff5558ca0032e911ffffff4c2b6c24087115488d64241048b8d006620800000000488b5d08ff234983c5014d8b214d8b1c244983fb0175574d8b6424084d8b5424f84d89d349c1e20849c1ea074983ca014d3bea7d2d49c1e30849c1eb074983cb014d3beb7215488d64241048b89051620800000000488b5d08ff234f8b54acfceb0a49baa89b620800000000eb554d8b6424084d8b5424f84d89d349c1e20849c1ea074983ca014d3bea7d2d49c1e30849c1eb074983cb014d3beb7215488d64241048b81051620800000000488b5d08ff234f8b54acfceb0a49baa89b6208000000004d8b224983fc0375324d8b62084d3be57c15488d64241048b8984d640800000000488b5d08ff234d89e5483b65187306ff5558ca0062e90cffffff4d8b2e4983fd070f85c60200004d8b66084d89e54d8b6424084d8b24244983fc0175374d8b224983fc0775254d8b62084d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f8561020000498b46104d8b65084d8b7424084d8b5c2410498b7424184d8b4424204d8b65104d8b6a08498b5a104d8b55084d8b4a084d8b6a10498b7a184d8b5220483bf7750d488d64241048c7c001000000c3483bf77d054889f2eb034889fa52483bf77e054889f7eb00574983f803750949c7c203000000eb004d3bf10f85cd0100004d8b0b4983f903750f4d8b5b084d8b1b4983fb03750ceb244d8b5b084983fb03741a4d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d08eb0749c7c5030000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d896b0849c703010000004d8d6fd04c3b6d107306ff5550ca095c4d89ef49c745f8050000004d8955204c8b5424084d8955184d895d104d89750849c74500010000004d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849bdb09f6208000000004d892e41564883fb0175054989c6eb09ff154a0100004989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d8970104c8b34244d897008488d64240849c70007000000488b5c2408482b5c24187115488d64242048b8d006620800000000488b5d08ff234883c301488b442410ff15dc000000488b1c24482b5c2418488d6424087115488d64241848b8d006620800000000488b5d08ff234883c3014c8b34244c2b742410488d6424087115488d64241048b8d006620800000000488b5d08ff234983c6014d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849c70003000000584883c408ff2551000000488d64242048b8d85b640800000000488b5d08ff23488d642410eb05488d64241048b8685c640800000000488b5d08ff23f400000000000000|@4456,1,@16581,@11705,@11705,@11773|93,0,@105 127,0,@4447 205,0,@628 228,0,@1145 290,0,@625 313,0,@1145 346,0,@4374 394,0,@105 479,0,@628 502,0,@1145 566,0,@625 589,0,@1145 622,0,@4374 1088,0,@1172 1191,0,@105 1243,0,@105 1284,0,@105 1358,0,@4450 1386,0,@4453 11773:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16582| 11774:D4,1064|483b65187306ff5558ca09014c3b052d0400007502eb3d4d8b304d89f54e8d3475010000004983fe010f85fc00000049bed808620800000000498d7008498d7e0848c7c100000000483bc9f3a67405e9d70000004d8d6fe84c3b6d107305ff5550cd094d89ef49c745f80200000049895d0849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca01404d89e749c74424f802000000498944240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c34d8d67e84c3b65107306ff5550ca09014d89e749c74424f80200000049895c240849c70424010000004d8d77e84c3b75107306ff5550ca01114d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca01414d89e749c74424f802000000498944240849c70424070000004a8d0c6d010000004883f901750f49baa0da620800000000e9960000004989cd4983c5044c89e84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d300200000f87100200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca02794d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ed4d892a41c642082841c642092a498d7008498d7a0a48d1e9f3a4418062ffbf4d8b2a4e8d1c6d010000004983fb01750f49bdb8da620800000000e9a90000004d89d94983c1044c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05720100000f874a0100004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89d9498d7208498d7d0848d1e9f3a44983c3104d89da49d1ea43c64415002a49d1eb43c6441d0129418065ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd40726208000000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@4457,1,@16583,@123|49,0,@123 435,0,@1591 617,0,@1592 909,0,@866 1016,0,@117 1032,0,@117 11775:D5,112|483b65187306ff5558ca090753415041514152488b5c24384c8b4c24304c8b5424284c8b0424ff1564000000488b5c24084158488d6424084c8b4c24384c8b5424304c8b6c2408415c488d6424084c896424204c896c24284c8b34244c897424184883c418ff251d000000f400000000|@4459,1,@16585,@11777,@11776| 11776:D4,448|483b65187306ff5558ca090753415041514152a8010f8588010000ff30ff70084c8b7424084d8b264d8b34244e8d2c75010000004983fd01750f49be0019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153f0100000f870f0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e2e418066ffbf415648c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418ff15d00000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b6c24084d892e4156488b442408488b5c24304c8b4424284c8b4c24204c8b542418e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c3488d64243048b8f807620800000000488b5d08ff23488d64242048c7c001000000c3f400000000000000ffffffffffffff01|@742,1,@16596,@11732|60,0,@201 405,0,@117 11777:D10,560|483b65187306ff5558ca0907534150415141526a016a0150ff355a020000f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15310200004989c4415d4c8924244c896c2408483b65187303ff5558ebc64c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408ff74241048bbf85d640800000000ff15da01000048bbd80862080000000049c7c00100000049c7c101000000ff15b40100004989c64156488b44240848bba85e640800000000ff159201000048bbd80862080000000049c7c00100000049c7c101000000ff156c0100004989c64156ff742408f604240175414c8b2c244d8b75004d89ed41ff750841f6c60175174d8b2e4d8b760841ff750041ff750841ff75104156eb78488d64246048b8b85e640800000000488b5d08ff23488d642408ff3424f604240175464c8b3424498b064d89f641ff76084c8b7424704c8b6c246841564155488b5c24684c8b4424604c8b4c24584c8b542450e889feffff415d4c892c24483b65187303ff5558ebb4488d64245848c7c001000000c21000f604240175724c8b2c244d8b75004d89ed41ff75084d8b0e4d8b56084d8b76104c8bac24980000004c8ba42490000000415641554154ffb42498000000ffb42498000000ffb42498000000ffb42498000000488b442458488b5c24504c8b442448ff154a000000415d4c892c24483b65187303ff5558eb88488d642420415d4c892c24483b65187303ff5558e9c5fefffff400000000000000|@4467,1,@16593,@11767,@11786,@10785,@11786,@10785,@11782,@1172|128,0,@4460 144,0,@123 184,0,@4463 200,0,@123 294,0,@4464 11778:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be701e9d09000000004c8930c3f400000000|@4462,1,@16587|47,0,@11779 11779:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@4461,1,@16586| 11780:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be981f9d09000000004c8930c3f400000000|@4462,1,@16589|47,0,@11781 11781:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@4461,1,@16588| 11782:D4,144|483b65187305ff5558cd094989c54d8b75004d8b7610498b064d8b66204d8b75084d8b5d104d8d6fe04c3b6d107306ff5550ca09584d89ef49c745f8030000004d895d104d89650849bc18219d09000000004d8965004d8d47e04c3b45107306ff5550ca09604d89c749c740f8030000004d8968104d89700849be68219d09000000004d8930ff251c000000f4000000|@4469,1,@16595,@10619|74,0,@11783 123,0,@11784 11783:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16590,@10764| 11784:D4,152|483b65187306ff5558ca0d015250534150f64424080175794c8b742408498b1e4d89f641ff76086a016a014c8b7424304d8b56084d89f64d8b76104156488b4424304c8b4424204c8d4c2408ff155e000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb80584883c418c3f4|@671,1,@16591,@11785| 11785:D7,904|483b65187306ff5558ca0907504d8b284d8b70084c8b234d89e34c3b25970300000f85760200004c3b1d820300000f85540200004c8b5b104d8b224e8d2465010000004c8b04244d8b004a8d1c45010000004983fc0175094c8b0424e9b60000004883fb0175084d89d0e9a8000000498d7c1cff4889f84883c01e49c7c01100000048d1e849d1e84833d249f7f0488d344501000000483b35e30200000f87d00100004889f24c8d04950400000049f7d84d03c74c3b451072054d3bc77206ff5550cac87e4d89c748d1ea498950f841c640ff414883ee0249c744b0fc0000000048d1ef4989384c89e1498d7208498d780848d1e9f3a44983c4104889d94c8b1424498d720849d1ec4b8d3c2048d1e9f3a4418060ffbf4d8b204e8d2465010000004983fc01750f49ba0019620800000000e99b0000004c89e74883c7024889f84883c01e49c7c21100000048d1e849d1ea4833d249f7f2488d344501000000483b35110200000f87f10000004889f24c8d14950400000049f7da4d03d74c3b551072054d3bd77206ff5550cac07b4d89d748d1ea498952f841c642ff414883ee0249c744b2fc0000000048d1ef49893a4c89e1498d7008498d7a0848d1e9f3a44983c41049d1ec43c604222e418062ffbf4c8b4424104d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d895424084d891c244d8d5fe84c3b5d107306ff5550ca00724d89df49c743f8020000004d896308415c4d89234d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d897424084d891c244d89e64d89294d89710848c7c001000000c20800488d64240848b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff23488d64240848b87850620800000000488b5d08ff234d89dc4c3b1d010100000f85b20000004c3b25ec0000000f85900000004c8b5b104c8b4424104d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d895424084d891c244d8d5fe84c3b5d107306ff5550ca00724d89df49c743f8020000004d896308415c4d89234d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c24084d891c244d89e54d89294d89710848c7c001000000c20800488d64240848b87850620800000000488b5d08ff23488d6424084d89294d89710848c7c001000000c20800f40000ffffffffffffff01ffffffffffffff01|@4466,1,@16592,@15110,@15110,@15112,@15112|298,0,@201 613,0,@117 634,0,@117 655,0,@621 849,0,@621 11786:D3,424|483b65187306ff5558ca09034989c54989dc4c89c841f6c5010f85490100004d8b75004d8b6d08498b1e4d8b76084c3be37502eb314d8b1c244e8d1c5d010000004c8b134c89d14e8d1455010000004d3bda7545498d742408488d7b08483bc9f3a67402eb334d8d5fe84c3b5d107306ff5550ca01714d89df49c743f8020000004d8943084d89334d89d84c89e34989c14c89e8e967ffffff41f6c0010f85940000004d8b60084983fc0175314d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89304989c14c89e8e922ffffff4d8d67e84c3b65107306ff5550ca09614d89e749c74424f80200000049c7442408010000004d8934244d89e64d8d4fe84c3b4d107306ff5550ca09614d89cf49c741f802000000498941084d89014c89e84d89f0e9c9feffff4d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89304989c14c89e8e998feffff41f6c00175314d8b70084983fe017501c34d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3c3f400000000000000|@4468,1,@16594| 11787:D16,4392|483b65187306ff5558ca0d0750534150415141524c8b6c24204d8b65004d89e64983fc010f851b0100004d89ed4d89ee41ff75084d89f641ff76106a016a016a016a016a016a01ff7208ffb424e0000000488b8424e00000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042410415641554154415341524151415057565251534989c2488b542470488b8424b0000000488b5c24684c8b8424a800000049c7c101000000ff12488d642410415d415c415b415a41594158488d6424104d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892ee9c50100004d89ed4983fe050f85d70000004d89ed4d8b750841ff3641ff760841ff761041ff761841ff762052ffb424c80000004c8bb424c80000004c8bac24c00000004c8ba424b80000004c8b9c24b00000004c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b442468ff34244156415541544153415241514150575652515350488b542478488b842498000000488b9c24880000004c8b8424900000004c8b8c24800000004c8b9424a0000000e8e4fdffff4989c6488d642438e9e10000004d89ed4d89ee41ff75084d89f6498b5e104d89f6498b56186a016a016a016a016a016a01488b8c24d0000000488b8424c80000004c8b7424784c8bac24c00000004c8ba424b80000004c8b5c24704c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb4249000000054415641554154415341524151415057564989c24989c94989d0488b842480000000ff15d90e0000415d415c415b415a41594158488d6424084d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564c8b3424498b064d89f641ff762048ba3891620800000000ff156e0e00004989c54c8bb424980000004c8ba424900000004d8d47d84c3b45107306ff5550ca00704d89c749c740f8040000004c8b5c24104d8958184d8960104d89700849be88399d09000000004d89304d8b75404d8b6d60498d47e8483b45107306ff5550ca00614989c748c740f8020000004c8968084c8930488b5c2420ff15e50d00004989c6415648ba60e26208000000004c8bb424a00000004c8bac24980000004c8ba424b0000000498d5fd8483b5d107306ff5550ca04704989df48c743f8040000004c8963184c896b104c89730849bee03b9d09000000004c89334c8b842498000000488b442420ff156f0d00004989c641564c8b7424084d8b264d89e54d8b6424184d8b5424084d89d34d8b124983fa0375314d89dc4d8b6424084c3b25320d0000750949c7c403000000eb0749c7c4010000004983fc03750a488d642418e9970900004d89ee4d8b76184d8b66084d89e56a016a014d8b1c244983fb017522498b442418488b542420ff124989c64d8b6e084c892c244d8b76104c89742408eb0d4c892c244d8b76104c89742408415e415d4d8b264983fc0175484d8b56184c8ba424900000004d3bd47d0c49c7c401000000e9160c00004c8ba424900000004d2bd47115488d64244848b8d006620800000000488b5d08ff234983c201e9cd0a000049c7c4010000004983fc030f84bf030000488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849bc183e9d09000000004d892641564c8b7424204d8b264a8d0c65010000004883f901750f49bbd860640800000000e9990000004989cc4983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15720b00000f87170300004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d892341c643086041c64309604d89f6498d7608498d7b0a48d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bcb0b1620800000000e9ac0000004d89f24983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db10a00000f87490200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c6104d89f349d1eb43c6041c2749d1ee43c64434012741806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004156498b4500498b5d084d8b4510ff155b0a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0606408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30616408000000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b8424900000004c8b4c244048c7c3030000004c8b0424ff15c4080000488d642408e951050000488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff234d8b2e4983fd01752c4d8b6e184c8bb424900000004d2bee7115488d64244848b8d006620800000000488b5d08ff234983c501eb15488d64244848b87861640800000000488b5d08ff234c8b7424704d8b364d8b264983fc0175554d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64244848b89051620800000000488b5d08ff234f8b74aefceb0a49bea89b620800000000eb534d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64244848b81051620800000000488b5d08ff234f8b74aefceb0a49bea89b6208000000004d8b264983fc0375324d8b76084d3bf57c15488d64244848b8984d640800000000488b5d08ff234d89f5483b65187306ff5558ca0020e90cffffff4d8b2e4983fd070f85420100004d8b66084d89e54d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc030f850b01000041554c8b34244d8b6e084d8b751041ff751841ff75204d8b2e4983fd03750f4d8b76084d8b364983fe03750ceb0f4d8b76084983fe037405e99f00000048ba40cf620800000000488b44241848bbf06164080000000049b80062640800000000ff15a70600004989c64983fe03750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03754f488d6424184c8b8424b80000004c8bb424a00000004c8b6c2450ff34244156415548b8106264080000000048bb30626408000000004c8b4c24584c8b542448ff1533060000488d642418e9d00200004c8b7424184d8b2e4983fd0b75184d89f64d8b6e084d89f64d8b76184c8b642450e9b003000049c7c601000000eb1c488d642448eb05488d64244848b86062640800000000488b5d08ff234983fe010f85680100004c8b34244983fe03488d642408754f488d6424104c8b8424b80000004c8bb424a00000004c8b6c2450ff34244156415548b8b86264080000000048bbe0626408000000004c8b4c24584c8b542448ff1578050000488d642418e9050100004d8d67e04c3b65107303ff55504d89e749c74424f80300000049bed8086208000000004d897424104c8b7424304d897424084c8b7424404d8934244d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424104d8975104c8b7424484d89750849c74500050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c86208000000004d892e4c8bac24a0000000488b1c24492bdd488d6424087115488d64245048b8d006620800000000488b5d08ff23488d6424204883c3014d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849c70001000000488b442470ff1561040000e913010000488d642408498b064c8b70084d8b2e4983fd0175664d8b76184c8bac24a00000004d3bf57d2a4d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004989400849c70001000000e9c40100004c8bac24a00000004d2bf57115488d64245848b8d006620800000000488b5d08ff234983c601e9a00000004d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004989400849c700010000004d8b304983fe07752b488d6424084c8b8424980000004c8b4c24784c8b942490000000488b1c24ff1587030000488d642420eb3f4c8bb424a0000000488b1c24492bde488d6424087115488d64245048b8d006620800000000488b5d08ff23488d6424204883c301488b442470ff1539030000584883c428c270004c8bac24800000004d8b6d004d8b65004983fc0175554d8b6d084d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37d2d49c1e40849c1ec074983cc014d3bf47215488d64245848b89051620800000000488b5d08ff234f8b44b5fceb0a49b8a89b620800000000eb534d8b6d084d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37d2d49c1e40849c1ec074983cc014d3bf47215488d64245848b81051620800000000488b5d08ff234f8b44b5fceb0a49b8a89b6208000000004d8b284983fd0375324d8b68084d3bee7c15488d64245848b8984d640800000000488b5d08ff234d89ee483b65187306ff5558ca0140e907ffffffe987feffff4983fd0175184983fc01750949c7c503000000eb0749c7c501000000eb664d8b4d004d8b5d0841f6c40175514d8b04244d8b542408498b394883ff0d75364d8b49084d8b004d3bc8750949c7c103000000eb0749c7c1010000004983f90375144d89d44d89dd483b65187306ff5558ca0070eb8c49c7c501000000eb0749c7c5010000004983fd03740949c7c601000000eb384d8b6e184d8b75084d8b364983fe05750949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9a5fbffff4c8b6424704d8b24244d8b1c244983fb0175574d8b6424084d8b4c24f84d89cb49c1e10849c1e9074983c9014d3bd17d2d49c1e30849c1eb074983cb014d3bd37215488d64244848b89051620800000000488b5d08ff234f8b6494fceb0a49bca89b620800000000eb554d8b6424084d8b4c24f84d89cb49c1e10849c1e9074983c9014d3bd17d2d49c1e30849c1eb074983cb014d3bd37215488d64244848b81051620800000000488b5d08ff234f8b6494fceb0a49bca89b6208000000004d8b0c244d89cb4983f90375334d8b6424084d3be27c15488d64244848b8984d640800000000488b5d08ff234d89e2483b65187306ff5558ca0064e901ffffff4d89dc4983fc01750949c7c401000000eb0d4983fc07750c49c7c403000000e917f4ffff488d64244848b8a85a640800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@4491,1,@16609,@11705,@11772,@11705,@11796,@11796,@10970,@11688,@11774,@15143,@10996,@11006,@10742,@11749|796,0,@1078 875,0,@11788 946,0,@1633 1019,0,@11790 1273,0,@105 1356,0,@11793 1393,0,@4473 1578,0,@1327 1895,0,@866 1940,0,@4474 1984,0,@866 2072,0,@1008 2117,0,@4476 2237,0,@117 2258,0,@117 2305,0,@105 2332,0,@4478 2415,0,@628 2438,0,@1145 2500,0,@625 2523,0,@1145 2556,0,@4374 2714,0,@1526 2729,0,@4481 2739,0,@4482 2827,0,@4483 2837,0,@4484 2932,0,@4485 3006,0,@4487 3016,0,@4488 3077,0,@123 3199,0,@1484 3239,0,@105 3416,0,@105 3557,0,@105 3673,0,@628 3696,0,@1145 3758,0,@625 3781,0,@1145 3814,0,@4374 4134,0,@628 4157,0,@1145 4221,0,@625 4244,0,@1145 4282,0,@4374 4359,0,@4443 11788:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9851640800000000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb985164080000000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc903b9d09000000004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01|@4470,1,@16599,@11688|36,0,@4398 194,0,@4398 268,0,@11789 444,0,@117 11789:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16598,@10716| 11790:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b60498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bcb83c9d09000000004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@1656,1,@16602,@11006|117,0,@11791 11791:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849bec83d9d09000000004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@4471,1,@16601,@11688|47,0,@11792 11792:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4399,1,@16600,@10716| 11793:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4472,1,@16603,@10716| 11794:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@4372,1,@16604| 11795:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@4372,1,@16605| 11796:D6,1312|483b65187306ff5558ca09074989c5534d8d67e84c3b65107306ff5550ca00274d89e749c74424f8020000004d8944240849be48449d09000000004d8934244d8d5fe84c3b5d107306ff5550ca00374d89df49c743f8020000004d89430849bee0449d09000000004d89334d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d895e084d892641564d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849bc78459d09000000004d892641564d8b324a8d0c75010000004883f901750f49bbd860640800000000e9960000004989ce4983c6044c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b250b0400000f87e30300004d89e14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ec024bc744a3fc0000000049d1ee4d893341c643086041c6430960498d7208498d7b0a48d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bcb0b1620800000000e9ac0000004d89f24983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d4d0300000f87180300004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c6104d89f349d1eb43c6041c2749d1ee43c64434012741806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060700000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff15ac0200004989c048ba8088620800000000488b44244048c7c3d10700004c8b4c241849c7c201000000ff15790200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be78896208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30616408000000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424284158488d6424104c8b4c240848c7c3030000004c8b34244c897424184883c418ff2557000000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@4492,1,@16610,@11688,@10723,@10815|51,0,@11797 96,0,@11798 176,0,@11799 208,0,@4473 390,0,@1327 673,0,@1014 833,0,@1021 912,0,@866 1000,0,@866 1088,0,@1008 1133,0,@4476 1256,0,@117 1277,0,@117 11797:D3,112|483b65187305ff5558cd054c8b7208498b5640ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@4489,1,@16606| 11798:D3,112|483b65187305ff5558cd054c8b7208498b5660ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@4489,1,@16607| 11799:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4490,1,@16608,@10716| 11800:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@671,1,@16611,@11801| 11801:D9,344|483b65187306ff5558ca09014989c64c89c04c8b2b4d89ee4c3b2d79010000754f4c3b356801000075364c8b73104d8b76104d8b2e4983fd0175244d8b76084983c602711048b8d006620800000000488b5d08ff234c3bf07e044c89f0c3c3c348b87850620800000000488b5d08ff234d89f54c3b350e010000754f4c3b2dfd00000075364c8b73104d8b76084d8b2e4983fd0175244d8b76084983c602711048b8d006620800000000488b5d08ff234c3bf07e044c89f0c3c3c348b87850620800000000488b5d08ff234d89ee4c3b2da300000075234c3b3592000000750a4c8b73104d8b7608eb1148b87850620800000000488b5d08ff23c341f6c60175544d8b264d8b6e084d8b6424104d8b1c244983fb0175274d8b6424084983c402711048b8d006620800000000488b5d08ff234c3be07e02eb034989c4eb034989c44c89e04d89ee483b65187306ff5558ca0140eba6c3f400|@4494,1,@16612,@15110,@15110,@15112,@15112,@15109,@15109|71,0,@105 98,0,@621 162,0,@105 189,0,@621 236,0,@621 292,0,@105 11802:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4|@4495,1,@16613|42,0,@105 91,0,@628 11803:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16614,@10764| 11804:D8,2120|483b65187306ff5558ca090750534150415141524c8b7424104d8b264c2b6424087115488d64242848b8d006620800000000488b5d08ff234983c4014c8b7424204d89f54d3bf4752e488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c408c218004d89ed4c8b14244d8b324d8b264983fc0175554d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64242848b89051620800000000488b5d08ff234f8b74aefceb0a49bea89b620800000000eb534d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64242848b81051620800000000488b5d08ff234f8b74aefceb0a49bea89b6208000000004d8b264983fc0375324d8b76084d3bf57c15488d64242848b8984d640800000000488b5d08ff234d89f5483b65187306ff5558ca0020e90dffffff4d8b264d89e54983fc010f856f02000041ff76084c8b34244d8b6e084d8b65004983fc050f85c101000041ff7508498b45104d89f641ff76104d8d77e04c3b75107306ff5550ca01044d89f749c746f8030000004c8b6c24204d896e104d89d24d89560849bd80519d09000000004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849be20539d09000000004d893048bb1066640800000000ff15660600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424084d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424184d896e0849bdd8c86208000000004d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849c70001000000488b442448488b5c2428ff15b9050000488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff236a016a014c8b7424584c8b6c24504c8b642448415641554154488d5c24184c8b4424404c8b4c24384c8b542430e8effcffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c0010000004883c408c21800488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff236a016a014c8b7424584c8b6c24504c8b642448415641554154488d5c24184c8b4424404c8b4c2438e85bfcffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c0010000004883c408c218004983fd070f852f0400004d8b6e084d8b76104d8b65084d8b1c244983fb010f850004000041ff74240841ff74241041ff7424204d8b6d1041ff750041ff75084d8b6d1041f6c6010f85680100004d8b66084c89e041f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc030f853d01000041f6c601754c41ff364883f8017504415eeb3dff15f30300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15b70300004989c6eb0a49bed8086208000000004d8b2e4e8d246d010000004983fc01750f49bd2066640800000000e9aa0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b1530030000777a4d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb206664080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbfeb15488d64245048b8f807620800000000488b5d08ff234c8b7424604d8b164d89d64983c6027115488d64245048b8d006620800000000488b5d08ff234c8b6424604d8934244c8b7424584d8b364d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234c8b5c24584d89234d8d5fe04c3b5d107306ff5550ca00644d89df49c743f8030000004d896b104c8b2c244d896b08488d6424084c8b2c244d892b488d6424084d8d6fe84c3b6d107306ff5550ca004c4d89ef49c745f8020000004d89750849c74500010000004c8b7424084d8b264983fc03750c4d89f64d8b76084d8b26eb074d89f64d8b66084d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706010000004d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b0c244d894c2420488d6424084d895424184d897424104c8b7424084d8974240849c70424010000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849c70001000000488b442458488b5c2438ff1517010000488b4424384883c0027115488d64244048b8d006620800000000488b5d08ff236a016a014c8b7424684c8b6c24604c8b642458415641554154488d5c24184c8b4424504c8b4c24484c8b542440e865f8ffff415e415b4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084c8b34244d89f54d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24284d8965004d89750848c7c0010000004883c438c21800488d64242848b83866640800000000488b5d08ff23488d64242848b83866640800000000488b5d08ff23f40000000000ffffffffffffff01|@4510,1,@16621,@11705,@10502,@11810,@11705,@10774|42,0,@105 82,0,@1172 190,0,@628 213,0,@1145 275,0,@625 298,0,@1145 331,0,@4374 467,0,@11805 511,0,@11806 524,0,@4504 635,0,@1484 721,0,@105 874,0,@105 1208,0,@123 1235,0,@4505 1369,0,@4505 1427,0,@117 1465,0,@105 1512,0,@105 1883,0,@105 2071,0,@4506 2092,0,@4506 11805:D3,376|483b65187305ff5558cd054c8b70084d8b2e4983fd0175334d8b6e184c8b62104d89e64d3bec7d0848c7c001000000c34d2bee711048b8d006620800000000488b5d08ff234983c501eb0848c7c001000000c34c8b72084d8b364d8b264983fc0175504d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234f8b74aefceb0a49bea89b620800000000eb4e4d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b81051620800000000488b5d08ff234f8b74aefceb0a49bea89b6208000000004d8b264983fc03752d4d8b76084d3bf57c1048b8984d640800000000488b5d08ff234d89f5483b65187306ff5558ca0420e91cffffff4d8b2e4983fd0175234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8b064640800000000488b5d08ff23f400000000|@4499,1,@16615|55,0,@105 146,0,@628 169,0,@1145 226,0,@625 249,0,@1145 277,0,@4374 357,0,@4496 11806:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8686564080000000049b9c06564080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@4503,1,@16618,@10770|26,0,@4500 36,0,@4502 11807:D3,16|483b65187305ff5558cd01c3f4000000|@4501,1,@16616| 11808:D3,16|483b65187305ff5558cd01c3f4000000|@4501,1,@16617| 11809:D3,16|483b65187305ff5558cd01c3f4000000|@4503,1,@16619| 11810:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0186208000000004c8930c348c7c001000000c3f40000|@1073,1,@16622|105,0,@199 11811:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16623| 11812:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16624| 11813:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16625| 11814:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@4513,1,@16626,@11815| 11815:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16627| 11816:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4513,1,@16628| 11817:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16629| 11818:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16630| 11819:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@16631| 11820:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@4515,1,@16632,@11821| 11821:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16633| 11822:D3,32|483b65187305ff5558cd0148b80068640800000000488b5d08ff23f400000000|@4515,1,@16634|13,0,@4517 11823:D3,32|483b65187305ff5558cd0148b89068640800000000488b5d08ff23f400000000|@4515,1,@16635|13,0,@4521 11824:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4515,1,@16636| 11825:D4,144|483b65187306ff5558ca0d015250534150f644240801756e4c8b742408498b1e4d89f641ff76086a016a014c8b7424304d8b5608488b4424284c8b4424184989e1ff1561000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8b584883c418c3f4000000|@671,1,@16637,@11826| 11826:D10,2056|483b65187306ff5558ca0907504151415241ff3041ff70084c8b2b4d89ee4c3b2d2b0800000f85ed0000004c3b35160800000f85cb0000004c8b73104d8b2e4d8b660841f6c40174554c8b6c2410498b5518498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930ff124c8b6c24184c8b7424084d8975004c8b34244d897508488d64242848c7c001000000c34d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004c8b34244d897308488d6424084c8b34244d8933488d6424084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000006a016a014154e925040000488d64242848b87850620800000000488b5d08ff234d89f54c3b351e0700000f859e0100004c3b2d090700000f857c010000ff73104c8b2c244d89ee41ff75184d89f641ff7610488b0424ff15dc0600004989c641564c8b742430498b56504d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca04404d89ef49c745f8040000004c8b6424104d8965184c8b6424084d8965104d8975084c8b6424404d89e64d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6424284d89e64983c4027115488d64244848b8d006620800000000488b5d08ff234d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24184d896b104c8b2c244d896b08488d64240849c703010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d892e4c8b6c24304d8965004d89750848c7c0010000004883c440c3488d64242848b87850620800000000488b5d08ff234d89ee4c3b2d580500000f852b0200004c3b35430500000f8509020000ff73104c8b24244d8b7424104d8b364983fe07755d4c8b742418498b5610498d47e8483b45107306ff5550ca04104989c748c740f8020000004d89e44c896008488d6424084c8b7424204c8930ff124c8b6c24184c8b7424084d8975004c8b34244d897508488d64242848c7c001000000c34d89e44d8b7424084d89e44d89e541ff7424184d89ed4d8b5d204d89ed4d8b55284d89ed4d8b4d304d8d67e84c3b65107306ff5550ca004e4d89e749c74424f8020000004c8b6c24184d896c240849c70424010000004d8d6fc04c3b6d107306ff5550ca005e4d89ef49c745f8070000004d894d304d8955284d895d204c8b1c244d895d184d8965104d8975084c8b6424304d89e64d8965004c8b642420498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6424184d89e64983c4027115488d64243848b8d006620800000000488b5d08ff234d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24084d896b184c8b2c244d896b10488d64241049c743080500000049c703050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424104d892e4c8b6c24084d8965004d89750848c7c0010000004883c418c3488d64242848b87850620800000000488b5d08ff234c8b6c24184c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c418c3f60424010f85b00100004c8b2424498b34244d89e441ff742408ff364c8b66084c8b5e18488b4e20488b5e28488b4630498b3e4d8b56084d8b0a4d8b4208498d57e8483b55107306ff5550cacb7b4989d748c742f8020000004c894a0848c702010000004d8d57c04c3b55107306ff5550cacf7b4d89d749c742f8070000004989423049895a2849894a204d895a18498952104d8962084c8b24244d8922488d6424084d8d67e84c3b65107306ff5550cac06f4d89e749c74424f80200000049897c24084d8914244d89ca4983c2027115488d64243848b8d006620800000000488b5d08ff23498d7fd8483b7d107306ff5550ca407f4989ff48c747f804000000488977184c895f1048c747080500000048c707050000004d8d5fe84c3b5d107306ff5550ca80774d89df49c743f80200000049897b084d890b4d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89194d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a084d8922415b4d89d64c891c24483b65187306ff5558ca0060e946feffff488d6424084d8b264c8924244d8b76084c897424084c8b3424ff7424084d8b65004d8b5d084d8b4d184d8b55104d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d894d184d8955104d895d084d8965004c8b642418498b54241849c7c40100000041f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca047a4d89d749c742f8020000004d8962084d890a4d89d44d89de483b65187306ff5558ca0470ebbd4d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424284c8930ff124c8b6c24204c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c428c3f40000|@4528,1,@16640,@15109,@15109,@11827,@15112,@15112,@15110,@15110|266,0,@621 517,0,@105 696,0,@621 1076,0,@105 1267,0,@621 1536,0,@105 11827:D4,40|483b65187305ff5558cd01488b0049b8206964080000000048c7c301000000ff251b000000f40000|@4529,1,@16641,@10619|16,0,@4525 11828:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@671,1,@16638,@11829| 11829:D9,728|483b65187306ff5558ca090141504c8b2b4d89ee4c3b2dfd0200000f85e30000004c3b35e80200000f85c1000000ff73104c8b34244d8b6e084d8b65004983fc010f85a100000041ff750848ba30696408000000004d89f6498b4610ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3488d64240858c3488d64240848b87850620800000000488b5d08ff234d89f54c3b35fa0100000f85c60000004c3b2de50100000f85a40000004c8b5b104d8b73104d8b2e4983fd010f858d0000004d8b6e084d8b73184d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d8974241049c74424080500000049c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c358c3488d64240848b87850620800000000488b5d08ff234d89ee4c3b2d1401000075294c3b3503010000750b4c8b73104d8b760858eb17488d64240848b87850620800000000488b5d08ff2358c341f6c6010f85b70000004d8b0e4d8b6e084d8b61104d8b1c244983fb010f85840000004d8b6424084d8b59184d8d57d84c3b55107306ff5550ca017a4d89d749c742f8040000004d894a184d895a1049c742080500000049c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb034989c44c89e04d89ee483b65187306ff5558ca0140e93fffffffc3f400000000|@4527,1,@16639,@15110,@15110,@15109,@15109,@15112,@15112|77,0,@4526 246,0,@621 460,0,@621 513,0,@621 11830:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4530,1,@16642,@10868| 11831:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4532,1,@16643,@10868| 11832:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849be98699d09000000004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@4534,1,@16645,@11656|47,0,@11833 11833:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4532,1,@16644,@10868| 11834:D3,160|483b65187305ff5558cd054c8b7230493bc67d06488b5208ff224c8b6a184d89ee4d8b6d28493bc57c534d8b76284989c54d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34c8b6a284d89ee4d8b6d28493bc57c06488b5220ff22498b5620ff22f4000000000000|@4535,1,@16646|56,0,@105 105,0,@628 11835:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16647,@10764| 11836:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4530,1,@16648,@10868| 11837:D3,40|483b65187305ff5558cd054c8b72184d8b7628493bc67d06488b5208ff22488b5210ff22f4000000|@4536,1,@16649| 11838:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16650,@10764| 11839:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4|@4537,1,@16651|42,0,@105 91,0,@628 11840:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16652,@10764| 11841:D8,776|483b65187306ff5558ca0907534150415141524c8b7010488b58204c8b40284983fe010f85dc0000004c8b68084c3b2d0c0300007502eb344d8b75004e8d3475010000004983fe17752e49bec8e1620800000000498d7508498d7e0848c7c10b000000483bc9f3a67402eb0c49be886a640800000000eb154c8b54244049c7c101000000ff15ae0200004989c64156488b4424204c8b48104889c0488b58204889c04c8b40284c8b7424484d8d57d84c3b55107306ff5550ca09434d89d749c742f8040000004d8942184d894a104d89720849be30709d09000000004d8932ff154b0200004989c641564c8b2c244d8b75284d89f44d89ed4d8b5d1049c7c501000000eb15488d64242048b8f06b640800000000488b5d08ff2341f6c30175364d8b4b084d89ea4983c2027115488d64243048b8d006620800000000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0078ebc44983ed014d03e57115488d64243048b8d006620800000000488b5d08ff234d2be67115488d64243048b8d006620800000000488b5d08ff234983c4014983fc017d0a488d642430e94c0100004c3b25570100000f8d3a0100004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849bbf0709d09000000004d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849bb88719d09000000004d891c244154ff74242841564155488b442430488b5c242849b8d8086208000000004c8b4c24384c8b542448ff15a00000004c8b7424584c8b6c2448ff742430ff74243041564155488b442438488b5c243049b8d8086208000000004c8b4c24284c8b542440ff155e0000004989c64c8b6c24504c8b24244d896500488d6424384d89750848c7c0010000004883c408c22000488d64243048b8d055620800000000488b5d08ff23f400ffffffffffffff01|@4561,1,@16673,@11862,@11896,@11855,@11855,@1629|76,0,@1629 110,0,@4533 212,0,@11842 268,0,@4539 308,0,@105 358,0,@105 384,0,@105 536,0,@11843 590,0,@11844 624,0,@123 682,0,@123 752,0,@657 11842:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c89d620800000000488b5d08ff23f4000000000000|@4538,1,@16653|42,0,@105 95,0,@105 131,0,@1158 11843:D3,112|483b65187305ff5558cd054989c54c8b62104d89e64d3bec7d0848c7c001000000c34d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81051620800000000488b5d08ff234b8b44aefcc3f400|@4542,1,@16654|41,0,@105 90,0,@625 11844:D3,120|483b65187305ff5558cd054989c54c8b72104d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81051620800000000488b5d08ff234f8b74aefc4983fe01750b48b8d0e3620800000000c3498b06c3f40000000000|@4543,1,@16655|25,0,@105 74,0,@625 101,0,@1644 11845:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b20488b4008f6c301755f4c8b2b488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f40000000000|@4547,1,@16657|33,0,@4545 156,0,@4545 11846:D3,368|483b65187306ff5558ca0901534150a8010f85480100004c8b28ff70084d8b65084d89e24d8b34244983fe010f85180100004d8b7424084d8b6424204d8b5d104d8b0b4d8d5fe04c3b5d107306ff5550ca00764d89df49c743f80300000049b8a86d6408000000004d8943104c8b4424104d8943084d890b488b5424084d89d54d8b4d004d89ca4983f9057515488d64241848b8a8d2620800000000488b5d08ff234983fa01751e4d8b6d104d8b55004983fa03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d00498d47d0483b45107306ff5550ca04784989c748c740f8050000004c8958204c8960184c89681048c74008010000004c8930ff124989c64156488b442408488b5c24184c8b442410e8e5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241848b8d86d640800000000488b5d08ff23488d64241048c7c001000000c3f4000000|@742,1,@16658|96,0,@4548 148,0,@1545 337,0,@4549 11847:D3,200|483b65187306ff5558ca09035053415041514c8b7424184c89f04c3b742410750d488d64242048c7c001000000c3488b5424084c8b34244983ee014889c04903c67115488d64242048b8d006620800000000488b5d08ff23ff124989c64156488b4424204883c0027115488d64242848b8d006620800000000488b5d08ff23488b5c24184c8b4424104c8b4c2408e86dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400|@741,1,@16659|74,0,@105 113,0,@105 11848:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16660| 11849:D4,192|483b65187306ff5558ca09034989c6534150415141f6c6010f8593000000498b0641ff76086a016a014889e34c8b4424284c8b4c24204c8b542418ff1597000000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408488b5c24204c8b4424184c8b4c2410e87effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400|@742,1,@16661,@11850| 11850:D3,520|483b65187306ff5558ca09074d89c350534c8b7424084d8b6e084d8b75004983fe010f85c20100004d8b75084d8b65204c8b6c24084d8b6d104d8b6d004d8b034a8d1c45010000004883fb01750f49b8506e640800000000e9ad0000004889df4883c73c4889f84883c01e49c7c01100000048d1e849d1e84833d249f7f0488d344501000000483b35730100000f87420100004889f24c8d04950400000049f7d84d03c74c3b451072054d3bc77206ff5550cac87e4d89c748d1ea498950f841c640ff414883ee0249c744b0fc0000000048d1ef49893848bf506e64080000000048c7c13d000000488d7708498d780848d1e9f3a44889d9498d7308498d782648d1e9f3a4418060ffbf4d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8943104d894b084d892b4c89d24c8b6c24084d8b6d084d8b4d004d89ca4983f9057515488d64241048b8a8d2620800000000488b5d08ff234983fa01751e4d8b6d104d8b55004983fa03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d00498d47d0483b45107306ff5550ca04784989c748c740f8050000004c8958204c8960184c89681048c74008010000004c8930ff124989c6415d4d897500415e4d89750848c7c001000000c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8806e640800000000488b5d08ff23f4ffffffffffffff01|@4555,1,@16662|80,0,@4552 217,0,@4552 336,0,@1545 476,0,@117 497,0,@4553 11851:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b20488b4008f6c301755f4c8b2b488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f40000000000|@4547,1,@16663|33,0,@4545 156,0,@4545 11852:D3,200|483b65187306ff5558ca09035053415041514c8b7424184c89f04c3b742410750d488d64242048c7c001000000c3488b5424084c8b34244983ee014889c04903c67115488d64242048b8d006620800000000488b5d08ff23ff124989c64156488b4424204883c0027115488d64242848b8d006620800000000488b5d08ff23488b5c24184c8b4424104c8b4c2408e86dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400|@741,1,@16664|74,0,@105 113,0,@105 11853:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16665| 11854:D3,312|483b65187305ff5558cd09f6c3010f85160100004c8b33488b5b084d8b2e4d8b65004983fc010f85ee0000004d8b6d084d8b76084d8b1e4d89dc4983fb05751048b8a8d2620800000000488b5d08ff234983fc01751c4d8b76104d8b264983fc0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364d8d67e04c3b65107306ff5550ca09604d89e749c74424f80300000049894424104d8974240849c70424030000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e815ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8186f640800000000488b5d08ff2348c7c001000000c3f40000000000|@4559,1,@16666|66,0,@1545 216,0,@105 284,0,@4556 11855:D5,584|483b65187306ff5558ca090753415041514152ff30ff7008ff701848c7c015000000ff15400200004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b24244d89e64d89650849bc587f9d09000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d89f34d8974240849be48819d09000000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89db4d895e0849bb38839d09000000004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933ff7424206a01488b4424284c8b44244849c7c10100000049bad808620800000000ff15510100004c8b34244d8b2e4983fd030f85c00000004d89f64d8b6e084d89f64d8b7618488d6424084d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bc48c2620800000000eb584d89f34c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c89f14c89e748d1e9f348a541806424ffbf4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb084d89f6488d642408498d47c8483b45107306ff5550ca00404989c748c740f8060000004c8b6c24284c8968284c8b6c24184c8968204c8b2c244c896818488d6424084c8b6c24184c8968104c8b2c244c896808488d6424084c89304883c428c3f400000000000000|@4657,1,@16718,@11014,@11013|82,0,@11856 135,0,@11858 183,0,@11860 257,0,@123 338,0,@1447 11856:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd2801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@4560,1,@16667,@10597,@11857,@10580|59,0,@224 73,0,@15110 11857:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@16668,@15110| 11858:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd4801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@4560,1,@16669,@10597,@11859,@10580|59,0,@224 73,0,@15112 11859:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@16670,@15112| 11860:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd1801110a000000004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@4560,1,@16671,@10597,@11861,@10580|59,0,@224 73,0,@15109 11861:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@16672,@15109| 11862:D6,480|483b65187306ff5558ca090750534150415141524c8b7424204d8b66084c3b25e40100007507488d642428eb3a4d8b2c244e8d2c6d010000004983fd17753249bdc8e1620800000000498d742408498d7d0848c7c10b000000483bc9f3a67402eb0f488d64242848c7c001000000c220004c8b6c2418498b45004c8b6c24484c8b6424404c8b5c24384c8b5424304d8d47a84c3b45107306ff5550ca017c4d89c749c740f80a0000004d89504849ba28706408000000004d8950404c8b5424104d8950384d8958304d8960284d8968204c8b2c244d8968184c8b6c24084d8968104d89f64d89700849be48879d09000000004d893048c7c301000000ff15fe0000004889c34c8b7424384d8d5fe04c3b5d107306ff5550ca08404d89df49c743f8030000004c8b24244d89e54d8963104d89730849beb0b49d09000000004d89334c8b742418498b064c8b7424304c8b6424384c8b5424484c8b4c24404d8d47a84c3b45107306ff5550ca097e4d89c749c740f80a000000488b7c2410498978484d8948404d8950384d8958304d8960284d89ed4d896820488d6424084c8b2c244d896818488d6424184d8970104c8b34244d897008488d64240849be20c09d09000000004d89304c8b34244c897424204883c420ff251d000000f400000000|@4638,1,@16707,@10619,@10619,@1629|65,0,@1629 175,0,@4562 234,0,@11863 310,0,@11889 445,0,@11890 11863:D4,184|483b65187306ff5558ca0d015250534150f6442408010f85900000004c8b742408498b1e4d89f641ff76084c8b442420498b78084d89c0498b70104d89c04d8b70184d89c04d8b68204d89c04d8b60284d89c04d8b58304d89c04d8b50384d89c04d8b48404d89c04d8b404841564155415441534152415141504989f24989f9488b4424504c8b442440ff15400000004989c4415d4c8924244c896c2408483b65187303ff5558e965ffffff584883c418c3f40000000000|@671,1,@16674,@11864| 11864:D14,1528|483b65187306ff5558ca090750415041524c8b334d89f54c3b3542060000754c4c3b2d31060000752eff7310498b01488b5c2418ff15160600004989c641f6c60175084d8b36e91c05000049c7c601000000e9d7030000488d64241848b87850620800000000488b5d08ff234d89ee4c3b2dd205000075494c3b35c1050000752bff7310498b01488b5c2418ff15a60500004989c641f6c60175084d8b36e90b03000049c7c601000000eb22488d64241848b87850620800000000488b5d08ff23488d642408584883c408c238004983fe01750d488d642410584883c408c2380041ff364c8b34244d8b56104c8b742408498b5e104c8b7424404d8b364e8d3475010000004c8b6424204d8b2c244e8d1c6d010000004983fe0175084d89e5e9bf0000004983fb01750a4c8b6c2440e9af0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b058e0400000f87310200004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c8b4c24404c89f1498d7108498d7d0848d1e9f3a44983c6104c89d94d89e4498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49b80019620800000000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db40300000f874a0100004d89d94e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983eb024bc74498fc0000000049d1ec4d89204c89f1498d7508498d780848d1e9f3a44983c61049d1ee43c604302e418060ffbf488b5424384c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c243041564155415441534c89d04d89ca4c8b4c2430ff124989c64c8b6c24084d8b6d084d8b65004983fc010f858b0000004d8b6d084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b1c244d895c2410488d6424084d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24104c8968084c89304883c420c23800488d642418584883c408c23800488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff2341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b156702000075464d89de4c3b355302000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64242048b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e9a0fcffff4983fe01750d488d642410584883c408c2380041ff364c8b4c24604c8b5424584c8b7424504c8b6c24484c8b642440415641554154488b442418488b5c24204c8b442428ff15a80100004c8b34244d8b7608488d6424084c8b2c244d8b6d08488d642410584883c40841f6c6010f85c300000041f6c5010f85b9000000498b3e4d8b66084d8b55004d8b5d084c8b4f184d8b52104d8b024983f801757c4d8b52084d8d47d84c3b45107306ff5550ca817e4d89c749c740f804000000498978184d89481049c740080500000049c700050000004d8d4fe84c3b4d107306ff5550ca017d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca017a4d89d749c742f802000000498942084d890aeb034989c24c89d04d89dd4d89e6483b65187306ff5558ca0160e933ffffffc2380041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159600000075464d89de4c3b358200000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64242048b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e947fefffff4ffffffffffffff01ffffffffffffff01|@4586,1,@16689,@15110,@15110,@11865,@15112,@15112,@10580,@15112,@15112,@10580,@15110,@15110|94,0,@621 179,0,@621 503,0,@201 907,0,@117 928,0,@117 1027,0,@621 1468,0,@621 11865:D9,1408|483b65187306ff5558ca090750534150415141524c8b6c24204d89ee41ff75004d89f641ff76084c8b6c24284d89ee41ff75004d89f641ff76084c8b74241841ff364c8b6c24104d89ee41ff75004d89f6498b4608ff15650500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424384d89650849bc80949d09000000004d89650041554c8b6c24304d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb544983fc0175064d8b6d08eb484d8b650849c7c50100000041f6c40175374d8b5424084d89eb4983c3027115488d64246048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c8b6424204d8b6424184d8b6424084d8b14244d89d34983fa0375074d8b642410eb554983fb0175074d8b642408eb484d8b5c240849c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64246048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec740f488d64246048c7c001000000c21800498d47d0483b45107306ff5550ca00404989c748c740f80500000048c74020010000004c8b6c24304c8968184c8b6c24104c8968104c89700848c7000b000000498d5fd0483b5d107306ff5550ca01404989df48c743f80500000048c74320010000004c8b6c24204c896b184c8b6c24084c896b104c89730848c7030b0000004c8b4424484c8b4c2440ff15960300004989c64d8b2e4983fd037529488d642410f644240801740f488d64245048c7c001000000c2180049c7c6010000004c8b6c2418eb7741ff760848ba98d9620800000000488b5c24784c8b442478488b44244849b9f072640800000000ff152c0300004889c2488b0424ff124989c0488d642408488b442458488b5c245041594c8b5424384c8b6c24304c8b6424704c8b5c24604c895c24604c896424684c896c24704883c458ff25da02000041f6c50175364d8b5d084d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc449c7c5010000004c8b64240841f6c40175374d8b5424084d89eb4983c3027115488d64245048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d3bf57f0f488d64245048c7c001000000c21800ff742418f604240175194c8b2c244d8b75004d89ed41ff75084d8b2e4c8b742418eb0f488d64245848c7c001000000c2180041f6c601755b4d8b1e4d8b66084d8b134d3bd57502eb304d8b1a4e8d1c5d010000004d8b4d004c89c94e8d0c4d010000004d3bd9751a498d7208498d7d08483bc9f3a67402eb0949c7c603000000eb184d89e6483b65187306ff5558ca0060eb9f49c7c6010000004983fe037505e95c0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc08736408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68736408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be88736408000000004c8930ff15e20000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c702010000004c8b4c2478488b44244048c7c3030000004c8b442438ff1530000000415d4c892c24483b65187303ff5558e9effdfffff4000000|@4587,1,@16690,@11656,@10502,@11881,@10973,@11882,@11880|132,0,@11866 228,0,@105 348,0,@105 605,0,@1582 630,0,@4581 744,0,@105 817,0,@105 1065,0,@4582 1113,0,@4584 1197,0,@4585 11866:D8,336|483b65187305ff5558cd054c8b72084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d5d01000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49be2068620800000000eb464d8b364d8b2e4c3b2dfc0000007506498b5e10eb1048b87850620800000000488b5d08ff2348ba387064080000000049c7c10100000049b82872640800000000ff25bb00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9b00000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d360000007509498b5e10e95fffffff48b87850620800000000488b5d08ff23f40000|@4580,1,@16688,@15134,@15134,@11867,@15134,@15134|109,0,@788 142,0,@621 158,0,@4563 175,0,@4576 279,0,@828 319,0,@621 11867:D16,2160|483b65187306ff5558ca0d03525341504151ff70084c8b34244983fe010f85a0040000488d642408ff304c8b34244d8b66184d89e54d8b6424084d8b1c244983fb050f856d02000041ff74240841ff7424104d89f641ff364c8b7424304983fe017f10488d64244048b84887620800000000c348c7c001000000ff15680800004989c641564c8b742440498b5610488b442418488b5c24384c8b0424ff124989c641566a016a01488b4424204889e3ff152b080000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b5c24484883eb027115488d64245848b8d006620800000000488b5d08ff234c8b742450498b5608488b4424204c8b4424104c8b4c24404c8b542438ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c448eb12488b0424ff15c30600004989c6488d6424504d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48ad6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b6424184983fc017f10488d64242848b84887620800000000c34d89f64d8b6d084d8b5d004d89dc4983fb057515488d64242848b8a8d2620800000000488b5d08ff234983fc0175244d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d084983fd037510eb1a4d8b6d084d8b6d004983fd03740c49bc507e620800000000eb0a49bce07e6208000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554d89f641ff760848c7c001000000ff154c0500004989c04c8b742430498b5610488b0424488b5c2428ff124989c641564c8b742418498b066a016a014889e3ff1513050000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017508415e4883c408eb12488b0424ff15a00400004989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3ff304c8b2c244d89ee41ff75004d89f641ff76104c8b7424304983fe017f10488d64244048b84887620800000000c348c7c001000000ff15b90300004989c641564c8b74241841ff7608488b0424ff15990300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424104d8966204c8b6424204d8966184c8b6424184d8966104d896e0849c7060b00000041564c8b742450498b5610488b442408488b5c24484c8b442410ff124989c641564c8b742430498b066a016a014889e3ff1517030000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bd60706408000000004c896b084c89334883fb017504415deb12488b0424ff15a20200004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8876208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08b56208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b7424504983ee0241567115488d64246848b8d006620800000000488b5d08ff23f6442440010f85ff0000004c8b6c24404d8b75004d89ed41ff7508498b1e4d8b46184c8b7424684d8b56184d89f64d8b7608ff7424184156ff742438ff742470ff74247048c7c0030000004c8b4c2430ff15810100004989c64156488b5c24104883eb027115488d64247848b8d006620800000000488b5d08ff234c8b7424704d8b46184d89f64d8b5608ff742430ff742468ff742468488b4424204c8b4c2438ff15280100004889c34883fb017508415d4883c410eb12488b0424ff15050100004989c5488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c70601000000eb0f488d64240849be78726208000000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c458c3f4|@4566,1,@16675,@11869,@11870,@11871,@11875,@10737,@11876,@10815,@11877,@10737,@10815,@11868,@10737,@10815|106,0,@1003 246,0,@105 366,0,@866 410,0,@1010 455,0,@866 574,0,@866 619,0,@1285 711,0,@1003 747,0,@1545 819,0,@926 831,0,@932 1097,0,@866 1257,0,@1003 1499,0,@4564 1575,0,@1008 1619,0,@1347 1715,0,@105 1838,0,@105 2002,0,@868 11868:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16685| 11869:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16676| 11870:D5,256|483b65187306ff5558ca090753415041514152a8010f85d20000004c8b30ff70084c8b6c24204d89e94983fd017d0f488d64242848c7c001000000c21800498b1e4d8b46184c8b7424404c8b6c24384c8b642430ff742410ff74241041564155415448c7c0010000004c8b542440ff15ac0000004989c64156488b5c24284883eb027115488d64243048b8d006620800000000488b5d08ff234c8b7424484c8b6c24404c8b642438415641554154488b4424204c8b4424384c8b4c24304c8b542428e839ffffff4889c34883fb017508584883c428c21800584c8b7424284c897424404883c440ff252b000000488d64242048c7c001000000c21800f4000000|@4574,1,@16678,@11873,@11871|139,0,@105 11871:D5,1120|483b65187306ff5558ca09075053415141526a016a014c89c048bbc8706408000000004989e0ff1554040000ff3424488b442410ff153e0400004c8b6c24304d89ee4983fd03750949c7c405000000eb0749c7c4010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c745080300000049c745000300000041554c8b6c24084d8b65004983fc050f857e0200004d89ed4d89ee41ff75084d89f6498b4610488b542428488b5c2470ff124c8b7424404983fe03750c49bdd870640800000000eb0a49bdf8706408000000004c8b6424304d89e64983fc017f0c49bb6089620800000000eb5a4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24384d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba58716408000000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080100000049c745000100000041554d89f64c89f34983fe010f8e910000004889db4883eb027115488d64245048b8d006620800000000488b5d08ff23488b5424704c8b4424684c8b4c24604c8b542458488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70716408000000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c89304883c448c228004d89f64983fe03750c49bdd870640800000000eb0a49bdf8706408000000004c8b7424284983fe017f0c49bc6087620800000000eb054c8b6424304d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c22800f40000|@4575,1,@16680,@11874,@10900|27,0,@4567 198,0,@4568 210,0,@4569 234,0,@1020 319,0,@4572 468,0,@105 583,0,@4573 805,0,@4568 817,0,@4569 838,0,@1004 11872:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@16677| 11873:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16679| 11874:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@16681| 11875:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16682| 11876:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16683| 11877:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16684| 11878:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4579,1,@16686| 11879:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4579,1,@16687| 11880:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16699| 11881:D5,1648|483b65187306ff5558ca0907504150415141524c8b7424284c3b35710600007502eb3d4c8b7424284d8b364e8d3475010000004983fe0175364c8b6c242849bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb0f49be0019620800000000e9d70000004c8b7424284d8b364e8d2475010000004983fc01750f49be3874640800000000e9b20000004d89e54983c5244c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1da40500000f877a0500004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49bd387464080000000048c7c125000000498d7508498d7e0848d1e9f3a44c8b6c24284c89e1498d7508498d7e1a48d1e9f3a4418066ffbf4d8b2e4e8d246d010000004983fc01750f49bd6074640800000000e9ae0000004d89e34983c3444c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15ca0400000f87930400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb607464080000000048c7c145000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d2a48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c706070000004156488b5424104889d8ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98746408000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b542418488b442428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0746408000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424204d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bce8db6208000000004d89264d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d8974242049c74424180100000049c74424100100000049c74424080700000049c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100300000049c742080700000049c7020100000058488d6424184c8b4424184c8b4c241048c7c3030000004c8b34244c897424184883c418ff2559000000488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@4594,1,@16691,@11656,@123|64,0,@123 98,0,@201 135,0,@4588 272,0,@4588 345,0,@4589 483,0,@4589 657,0,@866 701,0,@4590 863,0,@866 908,0,@4592 1060,0,@866 1105,0,@1597 1257,0,@866 1336,0,@866 1424,0,@866 1590,0,@117 1611,0,@117 11882:D7,304|483b65187306ff5558ca0903504d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004d89460849bdd0b29d09000000004d892e4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849be28b39d09000000004d89304889d848bb1876640800000000ff15e80000004989c641566a016a01488b44241848bb68766408000000004989e0ff15bf000000ff3424488b442410ff15a900000048bad8ce620800000000488b0424488b5c2418ff15880000004989c6488d64241841f6c601752f488d6424104d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c700030000004883c408c3f400|@4603,1,@16698,@10934,@10905,@10900,@10774|46,0,@11883 90,0,@11884 106,0,@4600 136,0,@4602 169,0,@1525 11883:D3,48|483b65187305ff5558cd054c8b70084d8b2e4983fd01750a498b4618488b5208ff2248c7c001000000c3f40000000000|@4595,1,@16692| 11884:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8787564080000000049b9c87564080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@4599,1,@16695,@10770|26,0,@4596 36,0,@4598 11885:D3,16|483b65187305ff5558cd01c3f4000000|@4597,1,@16693| 11886:D3,16|483b65187305ff5558cd01c3f4000000|@4597,1,@16694| 11887:D3,16|483b65187305ff5558cd01c3f4000000|@4601,1,@16696| 11888:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@16697| 11889:D22,2736|483b65187305ff5558cd05524c8b20ff70184c8b702041f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca01184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0150ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c7060100000041564c8b70084983fe017569488b442408ff15cc0900004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c601751541ff364c8b7424184d8b76104d8b7668e9b206000049c7c501000000e9df05000041f6c60175124c8b7424104d8b76104d8b7668e9ea0200004c8b7424104d8b76104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d2909000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9dc0100004d8b364d8b2e4c3b2dc508000075064d8b7610eb15488d64241848b87850620800000000488b5d08ff23415648c7c001000000ff15910800004989c048ba80886208000000004c8b7424184d8b4e08488b442410488b1c2449c7c201000000ff155d0800004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10af6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1dc606000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d5c06000075094d8b7610e9c9fdffff488d64241848b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d1c06000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9dc0100004d8b364d8b2e4c3b2db805000075064d8b7610eb15488d64241848b87850620800000000488b5d08ff23415648c7c001000000ff15840500004989c048ba80886208000000004c8b7424184d8b4e08488b442410488b1c2449c7c201000000ff15500500004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b66208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8766408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1db903000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4f03000075094d8b7610e9c9fdffff488d64241848b87850620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ad6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c410c341f6c60175454d8b264d8b6e084d8b1c244c3b1d4802000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e91e0100004d8b364d8b2e4c3b2de401000075064d8b7610eb15488d64242048b87850620800000000488b5d08ff23415648c7c001000000ff15b00100004989c048ba80886208000000004c8b7424204d8b4e08488b442408488b1c2449c7c201000000ff157c0100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48af6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98ad6208000000004d897500e9b4fdffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da300000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3900000075094d8b7610e987feffff488d64242048b87850620800000000488b5d08ff23f4|@4606,1,@16700,@15134,@15134,@10723,@10815,@15134,@15134,@15134,@15134,@10723,@10815,@15134,@15134,@15134,@15134,@10723,@10815,@15134,@15134,@10728|617,0,@788 658,0,@621 692,0,@1014 810,0,@866 855,0,@1358 899,0,@1021 987,0,@1596 1032,0,@1302 1201,0,@828 1246,0,@621 1350,0,@788 1391,0,@621 1425,0,@1014 1543,0,@866 1588,0,@1358 1632,0,@1021 1720,0,@1596 1765,0,@4604 1934,0,@828 1979,0,@621 2069,0,@1596 2114,0,@1290 2282,0,@788 2323,0,@621 2357,0,@1014 2475,0,@1596 2520,0,@1305 2564,0,@1289 2676,0,@828 2721,0,@621 11890:D4,184|483b65187306ff5558ca0d015250534150f6442408010f85900000004c8b742408498b1e4d89f641ff76084c8b442420498b78084d89c0498b70104d89c04d8b70184d89c04d8b68204d89c04d8b60284d89c04d8b58304d89c04d8b50384d89c04d8b48404d89c04d8b404841564155415441534152415141504989f24989f9488b4424504c8b442440ff15400000004989c4415d4c8924244c896c2408483b65187303ff5558e965ffffff584883c418c3f40000000000|@671,1,@16704,@11891| 11891:D15,1160|483b65187306ff5558ca09074989c6415041524c8b234d89e54c3b25d804000075644c3b2dc70400007546ff73104c8b2c244d89ec41ff75084d89e44d89e541ff7424104d89ed41ff7518498b014c89f3ff15910400004989c641f6c60175084d8b36e99a03000049c7c601000000eb1e488d64241048b87850620800000000488b5d08ff23488d64240858c2380041f6c6010f853503000041ff36488b04244c8b70084889c04c8b681849c7c4010000004d8d5ff04c3b5d107306ff5550ca01704d89df49c743f80100000041c643ff404d89234d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004c8b5424284d8954240849ba18c69d09000000004d8914244d89234c8b5c24184d89dc4983fb01751e4983fe01750c49bea878640800000000eb0a49bec078640800000000eb5241f6c401751e41f6c601750c49bea878640800000000eb0a49be2079640800000000eb2e4983fe01750c49bee09f620800000000eb1c41f6c601750c49beb09f620800000000eb0a49bea8786408000000004d8b264983fc010f850002000041ff76084c8b4424784c8b4c24704c89e8488b5c2410ff152d0300004989c64d8b2e4983fd01757b488d64240841ff760848ba98d9620800000000488b442470488b5c24684c8b44246849b9f072640800000000ff15e70200004889c2488b0424ff124989c0488d6424084c8b4c24584c8b5424684c8b7424504c8b6c24484c8b642440415641554154488b442418488b5c2438ff159f020000488d64243058c2380041ff76084c8b7424104d8b6e2841f6c50175124d8b6d004d8b6d0849c7450003000000eb004d89f64d8b763041f6c601756f41ff366a016a01488b44241848bb80796408000000004989e0ff153d020000ff3424488b442410ff15270200004c8b6c24184d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424184d89ed4d897500488d642408eb004c8b7424204d8b2e4983fd010f85a10000004d89f64d8b6e084d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b7424104d897424184c8b34244d89742410488d6424084c8b34244d89742408488d64241049c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24284c8968084c89304883c430c23800488d64244058c238004d8b46084c8b4c24584c8b5424684c8b7424504c8b6c24484c8b642440415641554154488b5c2438ff15f3000000488d64243058c23800488d642418488b5c24384c8b4424484c8b4c24304c8b5424284c8b7424204156488b442408ff15b7000000488d64241058c2380041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158b00000075464d89de4c3b357700000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64243048b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e90dfcfffff40000000000|@4636,1,@16705,@15109,@15109,@11895,@11881,@10905,@10900,@11881,@10973,@11882,@10580,@15109,@15109|120,0,@621 253,0,@11892 290,0,@4620 302,0,@4621 326,0,@4620 338,0,@4624 356,0,@1174 374,0,@1172 386,0,@4620 458,0,@1582 483,0,@4581 634,0,@4627 1111,0,@621 11892:D9,1288|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f855a0200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3582040000750949c7c603000000eb2b4c3b3568040000750949c7c603000000eb194c3b354e040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28776408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be3809110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10786408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@4619,1,@16702,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 294,0,@2144 342,0,@1021 387,0,@1987 538,0,@866 583,0,@4607 668,0,@1044 689,0,@105 739,0,@15239 922,0,@2144 970,0,@1021 1015,0,@1987 1166,0,@866 1211,0,@4615 11893:D3,24|483b65187305ff5558cd0148b86052620800000000c3f400|@636,1,@16701|13,0,@634 11894:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@16703| 11895:D5,1088|483b65187306ff5558ca09074989c64150415141524c8b6c24204c3b2d3f0400007502eb3f4c8b6c24204d8b6d004e8d2c6d010000004983fd0175374c8b64242049bdd808620800000000498d742408498d7d0848c7c100000000483bc9f3a67402eb0f49bd0019620800000000e9db0000004c8b6c24204d8b6d004e8d1c6d010000004983fb01750f49bd3874640800000000e9b50000004d89dc4983c4244c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156f0300000f87470300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1ec4d89650049bc387464080000000048c7c125000000498d742408498d7d0848d1e9f3a44c8b6424204c89d9498d742408498d7d1a48d1e9f3a4418065ffbf4d8b65004e8d1c65010000004983fb01750f49bc6074640800000000e9b30000004d89da4983c2444c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d910200000f875c0200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba607464080000000048c7c145000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c242a48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889da4c89f0ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98746408000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc90796408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100300000049c742080700000049c70201000000488b4424104c8b4424084159488d64241048c7c3030000004c8b34244c897424084883c408ff2557000000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@4637,1,@16706,@11656,@123|67,0,@123 102,0,@201 140,0,@4588 278,0,@4588 354,0,@4589 494,0,@4589 669,0,@866 714,0,@4590 817,0,@4628 865,0,@866 1032,0,@117 1053,0,@117 11896:D5,224|483b65187306ff5558ca09074989c64d89c44d8b5e084c3b1de30000007502eb334d8b2b4e8d2c6d010000004983fd17752c49bdc8e1620800000000498d7308498d7d0848c7c10b000000483bc9f3a67402eb0a48c7c001000000c21800488b034c8b6c24184c8b5c2410488b7c24084d8d47b04c3b45107306ff5550ca817e4d89c749c740f80900000048be307b64080000000049897040498978384d8958304d8960284d8968204d8950184d8970104d89480849be88d19d09000000004d893048c7c3010000004c8b34244c897424184883c418ff251c000000f4000000|@4656,1,@16717,@10619,@1629|52,0,@1629 141,0,@4639 183,0,@11897 11897:D4,176|483b65187306ff5558ca0d015250534150f6442408010f85870000004c8b742408498b1e4d89f641ff76084c8b4c24204d8b41084d89c9498b79104d89c94d8b71184d89c94d8b69204d89c94d8b61284d89c94d8b59304d89c94d8b51384d89c94d8b49404156415541544153415241514989fa4d89c1488b4424484c8b442438ff15410000004989c4415d4c8924244c896c2408483b65187303ff5558e96effffff584883c418c3f4000000000000|@671,1,@16714,@11898| 11898:D21,2504|483b65187306ff5558ca09075041514c8b334d89f54c3b354c0a00000f85910000004c3b2d370a00007573ff73104c8b2c244d89ee41ff75004d89f641ff76084d8d77e84c3b75107306ff5550ca00044d89f749c746f8020000004c8b6c24184d896e0849bde8dc9d09000000004d892e4156498b02488b5c2428ff15d70900004989c641f6c60175084d8b36e9a108000049c7c601000000e95c030000488d64241048b87850620800000000488b5d08ff234d89ee4c3b2d9309000075494c3b3582090000752bff7310498b02488b5c2410ff15670900004989c641f6c60175084d8b36e99002000049c7c601000000eb24488d64241048b87850620800000000488b5d08ff23488d64241048c7c001000000c230004983fe0175355841584c8b4c24384c8b5424304c8b6c242848bb107c6408000000004c896c24384c8b7424084c897424304883c430ff25e60800004d8b364d8b76104c8b2c24498b5d10488d6424084c8b6c24304d8b6d004e8d2c6d010000004c8b5c24084d8b234e8d1465010000004983fd0175084d89dce9c10000004983fa01750a4c8b642430e9b10000004f8d4c15ff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05ed0700000f878c0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c8b4c24304c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d730849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b80019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15110700000f87a30000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf488b5424184c89f041594c8b5424384c8b6c24304c8b6424204c8b5c24184c895c24284c896424304c896c24384c8b7424084c897424204883c420ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff2341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159b06000075464d89de4c3b358706000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64241848b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e91dfdffff4983fe017533488b4424185b4c8b4424184c8b4c24584c8b5424504c8b6c24484c896c24584c8b7424284c897424504883c450ff25ed05000041ff364c8b2c244d89ee41ff75004d89f64d8b76084c8b6c24204d8b5d184d89dc4d8b4b084d89ca4d8b094983f90375224d89d34d8b5b084c3b1da6050000750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84e50000004d89ed4d8b6424084d8b1c244983fb010f85980000004d8b5424184c8b24244d8b5c24184c8b6424584d3bd47d02eb7c4c8b6424584d2bd47115488d64244048b8d006620800000000488b5d08ff234983c2014d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24504d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64244048b80057620800000000488b5d08ff234c8b5c24504f896493fceb004d89ed4d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb654983fc0175064d8b6d08eb594d8b650849c7c501000000eb0f488d64244048c7c001000000c2300041f6c40175374d8b5424084d89eb4983c3027115488d64244048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c8b24244d8b6424184d8b6424084d8b14244d89d34983fa0375074d8b642410eb554983fb0175074d8b642408eb484d8b5c240849c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64244048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec744e488d64240858488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8707c6408000000004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff257e030000f644241801740949c7c503000000eb0749c7c5010000004983f5024983f5024983fd03745441f6c601744e488d64240858488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8c87c6408000000004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff25fd0200004c8b7424204d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc030f84e40100004d89ee4d8b76084d8b264d89e54983fc057515488d64244048b8a8d2620800000000488b5d08ff234983fd0175294d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b76084983fe037502eb25488d642408eb124d8b76084d8b364983fe037411488d64240849c7c601000000e9190100004c8b34244d8b66184d89e54d8b6424084d8b24244983fc050f85a10000004d89f54d89ee41ff75004d89f6498b4608ff15160200004989c6498d47d0483b45107306ff5550ca00404989c748c740f80500000048c74020010000004c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c7000b00000048ba40cf62080000000048bb187d64080000000049b8287d640800000000ff15a30100004989c64983fe03750949c7c603000000eb0749c7c6010000004983f602eb564d89ee488d6424084d8b76084d8b264d89e54983fc057515488d64243848b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364983f6024983fe03754958488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8387d6408000000004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff25d3000000488d642438eb05488d64244048c7c001000000c2300041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159a00000075464d89de4c3b358600000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64243048b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e947fafffff400000000ffffffffffffff01ffffffffffffff01|@4655,1,@16715,@15110,@15110,@11881,@10970,@11905,@11881,@11881,@15143,@11895,@15112,@15112,@11895,@10580,@15112,@15112,@10580,@15110,@15110|102,0,@11899 165,0,@621 250,0,@621 305,0,@4645 618,0,@201 855,0,@117 876,0,@117 975,0,@621 1240,0,@105 1323,0,@664 1446,0,@105 1565,0,@105 1639,0,@4647 1760,0,@4649 1882,0,@1545 2099,0,@1526 2109,0,@4651 2119,0,@4652 2195,0,@1545 2290,0,@4653 2440,0,@621 11899:D8,336|483b65187305ff5558cd054c8b72084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d5d01000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49be2068620800000000eb464d8b364d8b2e4c3b2dfc0000007506498b5e10eb1048b87850620800000000488b5d08ff2348ba387064080000000049c7c10100000049b8407b640800000000ff25bb00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9b00000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d360000007509498b5e10e95fffffff48b87850620800000000488b5d08ff23f40000|@4644,1,@16710,@15134,@15134,@11867,@15134,@15134|109,0,@788 142,0,@621 158,0,@4563 175,0,@4640 279,0,@828 319,0,@621 11900:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4643,1,@16708| 11901:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4643,1,@16709| 11902:D3,248|483b65187305ff5558cd014c8b304d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8ae6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f400000000|@4646,1,@16711|124,0,@1596 169,0,@1301 11903:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@4372,1,@16712| 11904:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@4372,1,@16713| 11905:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@16716| 11906:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9307e640800000000ff251b000000f40000|@4679,1,@16727,@11910|31,0,@4658 11907:D5,400|483b65187305ff5558cd055248c7c001000000ff15970100004989c6415648c7c001000000ff157d0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd607e6408000000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bca0aa6208000000004d8966184c8b24244d8b642408488d6424084d89661049bc887e6408000000004d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bba87e6408000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000c3f4000000|@4667,1,@16719,@11909,@11908|124,0,@4660 138,0,@1262 217,0,@1262 249,0,@4661 298,0,@4662 11908:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@16721|89,0,@4664 11909:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@16720|33,0,@105 88,0,@1823 11910:D4,160|483b65187306ff5558ca09034989c55349c7c4010000004d8d77f04c3b75107306ff5550ca00334d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca00634989c748c740f8050000004c8968204c8948184c8940104c89700849be78e59d09000000004c8930ff15400000004889c2488b0424ff124889c2488d64240848c7c001000000ff1248c7c001000000c3f40000000000|@4680,1,@16728,@10962|103,0,@11911 11911:D3,96|483b65187305ff5558cd054989c6498d47c8483b45107306ff5550ca04404989c748c740f8060000004c8b6a204c8968284c8b6a184c8968204c8b6a104c8968184c8b6a084c8968104c89700849be00e69d09000000004c8930c3f400000000|@4678,1,@16726|79,0,@11912 11912:D4,48|483b65187305ff5558cd05488b5a084c8b42104c8b4a184c8b52204c8b6a28ff34244c896c2408ff251b000000f40000|@4675,1,@16722,@11913| 11913:D8,1488|483b65187306ff5558ca09074150415141524c8b334983fe0d0f8594050000ff7308ff73104c8b7424084d8b364d8b364983fe030f856a050000488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f854620800000000ff158d0500004989c641f6c6010f84070500004983fe03750949c7c603000000eb0749c7c6010000004983fe030f85e00400004c8b742420498b06ff154a0500004989c54d8b75004a8d0c75010000004883f901750f49be981d620800000000e9910000004989cc4983c4024c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbe0400000f87630400004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646085f498d7508498d7e0948d1e9f3a4418066ffbf41564c8b6c24284d8b75004983c6027115488d64243048b8d006620800000000488b5d08ff234d89ed4d8975004c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564d8d77e04c3b75107303ff55504d89f749c746f80300000049bd08806408000000004d896e104c8b2c244d896e084c8b6c24084d892e4156488b54242848c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24184983e5094983fd01750949c7c403000000eb0749c7c4010000004983f4024d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b1c244d895d10488d6424084d8965084d8975004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184d8974241049c7442408010000004c8b34244d89f54d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d89ed4d896e10488d64240849c746080100000049c7060b00000041564c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564c8b6c24404d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc40806408000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb0806408000000004c8930ff154201000048bb4870620800000000ff152a010000ff151c0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742420498b5660ff124c8b34244c8b6c24104d897500488d64240848c7c0010000004883c428c20800488d64242848b8f807620800000000488b5d08ff23488d642428eb1a488d64242848b80855620800000000488b5d08ff23488d64242848c7c001000000c20800488d64241848c7c001000000c20800f40000000000ffffffffffffff01|@4676,1,@16723,@11915,@10696,@10502,@11914,@10599|109,0,@651 205,0,@250 387,0,@105 532,0,@4671 1141,0,@4672 1189,0,@4674 1208,0,@851 1402,0,@117 1430,0,@652 11914:D3,632|483b65187305ff5558cd01504c8b34244d89f54983fe350f8cbc0000004c89e849c7c63500000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c53500000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64240848b8d006620800000000488b5d08ff23eb034c89f04883e8027115488d64240848b8d006620800000000488b5d08ff23e82cffffff4989c3eb0a49bbd8086208000000005849c7c63500000048d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb344983fd017d0949c7c603000000eb0749c7c6010000004983fe017502eb164983c534711048b8d006620800000000488b5d08ff234981c5c2000000711048b8d006620800000000488b5d08ff234983fd017d05e9f60000004981fdff0100000f8fe900000049be30096208000000004f8b6caefc4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d96000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b82812620800000000488b5d08ff23f400000000ffffffffffffff01|@4677,1,@16725|161,0,@105 193,0,@105 219,0,@123 307,0,@105 332,0,@105 372,0,@126 589,0,@117 605,0,@137 11915:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86072620800000000c3f400000000000000|@869,1,@16724|190,0,@866 247,0,@867 11916:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b80019620800000000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@4679,1,@16731,@11917|40,0,@201 218,0,@117 11917:D4,104|483b65187306ff5558ca09014989c64d89c5488b034d8d47d84c3b45107306ff5550ca01604d89c749c740f8040000004d89681849bd70826408000000004d8968104d89700849be10f29d09000000004d893048c7c301000000ff2520000000f400000000000000|@4683,1,@16732,@10619|54,0,@4681 72,0,@11918 11918:D4,112|483b65187306ff5558ca0d015250534150f64424080175514c8b742408498b1e4d89f641ff76084c8b7424204d8b4e084d89f64d8b56104d89f64d8b76184156488b4424204c8b442410ff15380000004989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c418c3f4|@671,1,@16729,@11919| 11919:D8,880|483b65187306ff5558ca09074989c54c8b234d89e64c3b258c0300000f85ef0100004d8b314e8d2475010000004d8b75004e8d1c75010000004983fc017505e9b80000004983fb0175084d89cde9aa0000004f8d441cff4c89c04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d3c4501000000483b3de80200000f877b0100004889fe4c8d34b50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca883f4d89f748d1ee498976f841c646ff414883ef0249c744befc0000000049d1e84d89064c89e1498d7108498d7e0848d1e9f3a44983c4104c89d9498d75084d89e549d1ed4b8d3c2e48d1e9f3a4418066ffbf4d89f54d8b75004e8d3475010000004983fe01750f48b80019620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d130200000f879e0000004d89d94a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca087c4989c749d1e94c8948f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4c8b334c3b35e0010000751f4c8b7310498b5e104c89d24c8b4424084c8b34244c897424084883c408ff2248b87850620800000000488b5d08ff2348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234c3b35800100000f852b0100004d8b314e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89c8e9a20000004f8d5c26ff4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15d90000000f87b40000004d89d04a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca087e4989c749d1e84c8940f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89f1498d7108488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf4c8b334c3b3593000000752a4c8b7310498b5e184c8b44240849b9307e6408000000004c8b34244c897424084883c408ff255f00000048b87850620800000000488b5d08ff2348b8f807620800000000488b5d08ff2348c7c001000000c20800f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@4682,1,@16730,@11910,@15109,@15109,@15112,@15112|272,0,@201 483,0,@621 499,0,@117 515,0,@117 782,0,@4658 811,0,@621 827,0,@117 11920:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9307e640800000000ff251b000000f40000|@4679,1,@16733,@11910|31,0,@4658 11921:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b80019620800000000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@4679,1,@16734,@11917|40,0,@201 218,0,@117 11922:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bce8fa9d09000000004d89204d8b65004e8d2465010000004983fc01750f49bb8083640800000000e9ad0000004d89e24983c2104c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349ba808364080000000048c7c111000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1048d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd180e630800000000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb180e63080000000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@4686,1,@16736,@11656|55,0,@11923 86,0,@4685 223,0,@4685 291,0,@1928 449,0,@1928 651,0,@117 667,0,@117 11923:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4684,1,@16735,@10713| 11924:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff23498b4486fcc3f40000|@1450,1,@16737|41,0,@628 11925:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9307e640800000000ff251b000000f40000|@4679,1,@16738,@11910|31,0,@4658 11926:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b80019620800000000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@4679,1,@16739,@11917|40,0,@201 218,0,@117 11927:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc18009e09000000004d89204d8b65004e8d2465010000004983fc01750f49bbe083640800000000e9ad0000004d89e24983c2144c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349bae08364080000000048c7c115000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1248d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd180e630800000000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb180e63080000000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@4686,1,@16741,@11656|55,0,@11928 86,0,@4687 223,0,@4687 291,0,@1928 449,0,@1928 651,0,@117 667,0,@117 11928:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4684,1,@16740,@10713| 11929:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff23498b4486fcc3f40000|@1450,1,@16742|41,0,@628 11930:D18,5464|488dbc2408ffffff483b7d187306ff5560ca090753415041514152ff30ff7008488b40104c8bac24e80000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e415648ba5842640800000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8b9424e0000000ff742430ff152f1500004989c641564c8bac24280100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb424f0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408415649c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049be60c66208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060500000041564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b6424104d89e64d8965104c8b24244d89e04d8965084c8b6424304c89e34d89650041554d89f6498b4610ff15831300004989c44983fc01750f49be48c2620800000000e9b700000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d961200007c15488d64246048b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017521418066ffbf41564c8b7424304d8b2e4c8b7424204d8b661049c7c601000000eb404d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eb9941f6c40175374d8b5424084d89f34983c3027115488d64246848b8d006620800000000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34983ee014d03ee7115488d64246848b8d006620800000000488b5d08ff234c8b6424304d89e64d892c244d89f641ff364c8b5c24284d8b334d89db4d8b6b084d89db4d8b63184d89db4d8b53204c8b9c24080100004c8b8424280100004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d8941184c8b4424084d8941104d89590849bbc8169e09000000004d89194d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d89530849ba90179e09000000004d891341534d8b1e4983fb030f85b10000004d8b5e084d8b76184d8b1b498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49ba48c2620800000000eb554d89f14c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89f14c89d748d1e9f348a5418062ffbf4d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e0849c70601000000eb0041564d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24104d895e284c8b5c24084d895e204d89661849c74610010000004d896e084c8b2c244d892e4156ff353f10000048c7c015000000ff152a100000488b1424ff15181000004989c641564c8b7424704d89f54c3b35fc0f00007502eb404d89ed4d8b75004e8d3475010000004983fe010f854a01000049bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a60f85230100004c8bb424580100004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b24244d89e64d89650849bce0179e09000000004d8965004c8b9c24600100004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004c8b5424384d89d14d895424184d895c24104d89f64d89f34d8974240849be80189e09000000004d8934244c8b9424700100004d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d89c94d894e184d8956104d89db4d895e0849bb50199e09000000004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933ff7424206a01488b4424284c8b44243049c7c10300000049bad808620800000000ff15920e0000e9a30000004d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424484d8975184c8b7424104d8975104c8b7424404d8975084c8b6424704d89e64d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244c8b9c24600100004d89234c8b2424498b542450498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b6c24384d892e4c8b6c24684d8975004c8b24244d8b5c24304c8bb424200100004c8bac24280100004d8d47d84c3b45107306ff5550ca00784d89c749c740f8040000004d8958184d8968104d89700849be201a9e09000000004d89304d89e44d8b5c24404c8bb424100100004c8bac2418010000498d77d8483b75107306ff5550ca00794989f748c746f8040000004c895e184c896e104c89760849bea01a9e09000000004c89364d89e44d8b5c24604c8bb424000100004c8bac2408010000498d47d8483b45107306ff5550ca40794989c748c740f8040000004c8958184c8968104c89700849be201b9e09000000004c89304c8bb424f00000004c8bac24f8000000498d57d8483b55107306ff5550ca41714989d748c742f8040000004d89e44c896218488d6424084c896a104c89720849bea01b9e09000000004c89324c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b8c24c0000000488bbc24b8000000488b8c24b0000000488b9c24a80000004d8d57904c3b55107306ff5550cacf7b4d89d749c742f80d0000004989426049895a5849894a50498952484989724049897a384d8942304d894a284d895a204d8962184d896a104d89720849be30856408000000004d8932498d5fe0483b5d107306ff5550ca00044989df48c743f8030000004c8b6c24584d89ee4c896b104c8b6c24504d89eb4c896b0849bd801e9e09000000004c892b4c8bac24280100004c8ba424480100004d8d4fc04c3b4d107306ff5550ca087c4d89cf49c741f8070000004d89db4d8959304d8961284c8b6424204d8961204c8b6424484d8961184c8b6424284d8961104d89690849bdd0209e09000000004d89294d8d47e84c3b45107306ff5550ca08464d89c749c740f8020000004d89f64d89700849bed8239e09000000004d89306a016a016a016a016a016a0148ba78c86208000000004c8bb424600100004c8bac24d00000004156ffb424b8000000ff35ea0a00005448830424184155488b8424e0000000ff15cc0a0000ff3424ff7424104c8b6c2420ff742428ff7424384c8b6424484d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d8966284c8b24244d8966204c8b6424084d8966184d896e104c8b6c24104d896e084c8b6c24184d892e41564c8bb424880100004d8b76184d8b364983fe037505e9ef0000004c8bac24d00000004d8b75004e8d3475010000004983fe01750f48b8c086640800000000e9b40000004d89f44983c4064c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da10900000f87d30000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428284d89f549d1ed42c64428012949d1ee42c64430022e8060ffbf4c8b842488010000488b1c24ff155b090000488b0424ff1549090000488d642408488b44241848c7c30100000049b8d886640800000000ff15200900004989c64c8bac24a00000004d8b6d0049c7c301000000eb18488da424e800000048b8f807620800000000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd48c2620800000000e9bd00000049c7c4010000004d89dd41f6c50175394d8b4d084d89e24983c2027118488da424e000000048b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25ff0700007c18488da424e000000048b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017577418065ffbf4d8b65f849c1e40849c1ec074983cc014983fc01750f49bb48c2620800000000e99b0000004d89e24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab49c7c201000000eb444d8b134d8b4b084f8954a5fc4d89e24983c2027118488da424e000000048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e93fffffff4d3bd47c21418063ffbf4d8b63f849c1e40849c1ec074983cc0149c7c601000000e97d0100004f8b4c95fc4d8b41084c89c7498b304883fe010f852a010000498b5008498b4818498b5820498b71104c89f04883e8014903c27118488da424e000000048b8d006620800000000488b5d08ff234d8d47e84c3b45107306ff5550cacf7e4d89c749c740f8020000004989400849c700010000004989f9498b014889c74883f8057518488da424e000000048b8a8d2620800000000488b5d08ff234883ff01751c4d8b4910498b394883ff0375094d8b4908498b39eb04498b7908eb074d8b4908498b394d8d4fe84c3b4d107306ff5550cace7d4d89cf49c741f8020000004989790849c70101000000498d7fd0483b7d107306ff5550ca4e7f4989ff48c747f80500000048895f2048894f184c894f104889570848c707010000004d8d4fe04c3b4d107306ff5550cac07d4d89cf49c741f80300000049897110498979084d8901eb004f894c93fc4d89d14983c1027118488da424e000000048b8d006620800000000488b5d08ff234d89ca483b65187306ff5558ca007ce95dfeffff4983fc01751b41564d8b65f849c1e40849c1ec074983cc0149c7c601000000eb494d89e14983e9024d89e24983ea024f8b4493fc4d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8972084d89024d89cc4d89d6483b65187306ff5558ca0078eb964983fc010f85160400004c8bac24c80000004d8975004c8bac24800100004c8ba424a00100004d8d77c04c3b75107306ff5550ca00384d89f749c746f8070000004d8966304c8b6424784d89e24d8966284d895e204c8ba424a00000004d8966184c8ba424800000004d8966104d896e0849bda0249e09000000004d892e4d8d67e04c3b65107306ff5550ca00444d89e749c74424f8030000004d897424104c8b7424084d8974240849bec0259e09000000004d8934244c8b6c24204d8b75004983fe030f85b90000004d89ed4d8b75084d89ed4d8b6d184d8b36498b75004c8b6ef849c1e50849c1ed074983cd014983fd01750c49bb48c2620800000000eb554d89e94c89c94e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42744d89df49d1e94d894bf841c643ff404c89df48d1e948c7c001000000f348ab4c89e94c89df48d1e9f348a5418063ffbf4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d895d104d89750849c7450001000000eb034d89ed4d8d77c84c3b75107306ff5550ca00344d89f749c746f8060000004d89d34d895e284d8966204c8b6424104d8966184c8b24244d8966104c8b6424184d8966084d892e4156488b0424ff153a0300004989c6415648c7c001000000488b5c2410ff151b0300004889c34883fb017504415eeb12488b0424ff15fc0200004989c6488d6424084c8bac24c00100004d8975004c8bac24d00100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb42498010000498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d64240849c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be60c66208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8965204c8b24244d896518488d6424084d8975104c8ba424d00000004d89e64d8965084c8ba424880000004d8965004155488b9424f8000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b2c244c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084c8bac24d80100004d89750048c7c0010000004881c4e8000000c2f0004d89e14983e9024d89e24983ea024d89e04983e8024b8b7c85fc4d8b43f849c1e00849c1e8074983c8014d3bd07218488da424e800000048b89051620800000000488b5d08ff234f8b5493fc4d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8972084d89024d89cc4d89d6483b65187306ff5558ca0078e939fbfffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@4700,1,@16764,@11952,@11854,@11827,@10619,@11659,@11917,@11673,@123,@11014,@123,@10742,@11013,@1078,@11951,@11679|127,0,@4297 424,0,@1469 608,0,@1447 657,0,@105 707,0,@1448 862,0,@105 923,0,@105 973,0,@105 1096,0,@11931 1144,0,@11932 1208,0,@1447 1499,0,@123 1588,0,@11933 1667,0,@11934 1734,0,@11935 1808,0,@123 2097,0,@11936 2173,0,@11937 2249,0,@11938 2325,0,@11939 2477,0,@4691 2541,0,@11944 2639,0,@11945 2686,0,@11947 2711,0,@1482 2922,0,@4696 3162,0,@4697 3210,0,@117 3300,0,@1447 3352,0,@105 3405,0,@1448 3526,0,@1447 3647,0,@105 3785,0,@105 3862,0,@1545 4069,0,@105 4324,0,@11949 4380,0,@11950 4456,0,@1447 4987,0,@1469 5322,0,@628 11931:D3,160|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4000000000000|@4688,1,@16743|57,0,@628 84,0,@105 133,0,@628 11932:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16744,@10764| 11933:D3,120|483b65187305ff5558cd054c8b304c8b68084c8b62104d89e34d8b14244d8d67e84c3b65107306ff5550ca046c4d89e749c74424f8020000004d895424084d892c244d89234c8b6208498b542418498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff22f40000000000|@4689,1,@16745| 11934:D4,160|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e1849c7c001000000ff15900000004989c64c8b6c24084d8b65104d89e34d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d8934244d89ed4d89234d89ed4d8b6d08498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642410ff22f400|@4689,1,@16746,@11257| 11935:D4,160|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e1849c7c001000000ff15900000004989c64c8b6c24084d8b65104d89e34d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d8934244d89ed4d89234d89ed4d8b6d08498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642410ff22f400|@4689,1,@16747,@11088| 11936:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16748| 11937:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16749| 11938:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@999,1,@16750| 11939:D5,232|483b65187305ff5558cd05524c8b34244d8b7618498b564848c7c001000000ff124989c6415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742410498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bec01c9e09000000004c8930ff124c8b342441ff364c8b7424184d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15450000004889c3488d6424104883fb017506584883c408c3584883c408ff251e000000f40000000000|@4690,1,@16752,@11942,@11941|127,0,@11940 11940:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@1442,1,@16751| 11941:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16754| 11942:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16753| 11943:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@4690,1,@16755| 11944:D5,536|483b65187305ff5558cd05524c8b304c8b68084c8b58104c8b50184c8b4820488b3c244c8b67104c89e64d8b24244d89e04983c0027115488d64240848b8d006620800000000488b5d08ff234889f74c89074983fd030f85be00000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd60c6620800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff1523010000e9b900000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd60c6620800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff155d0000004c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000000000|@4692,1,@16756,@10915,@10914|62,0,@105 136,0,@1469 326,0,@1469 11945:D3,448|483b65187305ff5558cd054c8b72304d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca04744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0450ebbd4983fc01750f49be48c2620800000000e9ad00000049c7c5010000004d89e641f6c60175314d8b56084d89eb4983c302711048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0470ebc94c3b2dff0000007c1048b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca06104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01755a418066ffbf498d47c0483b45107306ff5550ca04404989c748c740f8070000004c8b6a284c8968304c8b6a204c8968284c8970204c8b72184c8970184c8b72104c8970104c8b72084c89700849beb8229e09000000004c8930c34d8b1c244d8b5424084f895caefc4d89eb4983c302711048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0470e962fffffff4000000000000ffffffffffffff01|@4694,1,@16758|100,0,@1447 144,0,@105 189,0,@1448 359,0,@11946 396,0,@105 11946:D3,248|483b65187305ff5558cd054989c54c8b72304d3bee7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34c8b62284d89e64d3bec7d544c8b72184d8b76284d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62204d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f400|@4693,1,@16757|54,0,@628 101,0,@105 150,0,@628 177,0,@105 226,0,@628 11947:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@4695,1,@16759| 11948:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@671,1,@16760,@11801| 11949:D3,248|483b65187305ff5558cd054989c54c8b72304d3bee7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34c8b62284d89e64d3bec7d544c8b72184d8b76284d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62204d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f400|@4698,1,@16761|54,0,@628 101,0,@105 150,0,@628 177,0,@105 226,0,@628 11950:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@16762,@10764| 11951:D4,136|483b65187306ff5558ca09014989c653415041f6c601755f498b0641ff7608488b5c24104c8b442408ff15710000004989c64156488b442408488b5c24184c8b442410e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@742,1,@16766,@11953| 11952:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16765| 11953:D4,856|483b65187306ff5558ca090141504c8b304d8b364983fe010f85140300004c8b70084d89f54d8b364983fe01750949c7c603000000eb0749c7c6010000004983fe030f85e30200004c8b304d8b5e084d8b75084d8b6510498b7d18498b75204c8b68104d8b45004d8b55084d8b4d104d8d6fd04c3b6d107306ff5550cac85f4d89ef49c745f8050000004989752049897d184d8965104d89750849c7450001000000483b1dc70200007502eb374c8b234d89e64e8d2465010000004983fc01752b49bcd808620800000000488d7308498d7c240848c7c100000000483bc9f3a67402eb084d89c6e9910100004e8d2475010000004983fc01750f48bf0019620800000000e99e0000004c89e74883c7024889f84883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d344501000000483b35170200000f87d70100004889f24c8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550cac83f4d89f748d1ea498956f841c646ff414883ee0249c744b6fc0000000048d1ef49893e4c89e1488d7308498d7e0848d1e9f3a44983c41049d1ec43c604262e418066ffbf4c89f74c8b374e8d2475010000004d8b304a8d1c75010000004983fc0175084d89c6e9b20000004883fb0175084989fee9a4000000498d741cff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15410100000f87f40000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee4989364c89e1488d7708498d7e0848d1e9f3a44983c4104889d9498d700849d1ec4b8d3c2648d1e9f3a4418066ffbf4d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d8934244d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b14244d895610488d6424084d895e0849c70609000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3488d64240848b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff23488d642408eb05488d64240848b8d887640800000000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@4704,1,@16767,@123|195,0,@123 252,0,@201 776,0,@117 797,0,@117 825,0,@4701 11954:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b8f888640800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b8e089640800000000c34983fe037d0b48b8708c620800000000c348b8c08a640800000000c3f400000000|@4728,1,@16769|26,0,@1044 49,0,@4707 69,0,@1044 86,0,@4714 103,0,@1044 114,0,@4721 11955:D5,136|483b65187305ff5558cd0d4989c65253498b06498b5e084d8b4610ff15870000004989c16a016a014c8b742410498b064d89f6498b5e084c8b7424184d8b56084d89f64d8b761041564c8d442408ff154c000000415e415d488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4778,1,@16832,@11956,@11349| 11956:D4,264|483b65187306ff5558ca09075341504883f801751c415e4c8b2c244d892e488d6424084d894e0848c7c001000000c208004c8b7424184d8d6fc04c3b6d107306ff5550ca01464d89ef49c745f8070000004c8b6424084d8965304d8975284d8955204d894d1849be088c6408000000004d8975104989450849be782d9e09000000004d8975004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849c70609000000498d5fe8483b5d107306ff5550ca00424989df48c743f80200000048c74308010000004c89334883fb0175054d89ceeb0c4c89c8ff153a0000004989c6415d4c8b24244d896500488d6424084d89750848c7c001000000c20800f400|@4779,1,@16833,@12019|104,0,@4731 122,0,@11957 11957:D4,72|483b65187305ff5558cd05488b5a084989db4c8b4a104c8b42184c8b6a204c8b62284c8b5230415441534152ff7424184d89c249c7c0010000004c896c2420ff251b000000f40000|@4734,1,@16773,@11958| 11958:D4,592|483b65187306ff5558ca09074989db41f6c3010f8520020000498b1b4d8b73084c8b6c2410488b7c2408488b742420488b5424184d8d67c04c3b65107306ff5550cacc6f4d89e749c74424f807000000498954243049897424284d8954242049897c24184d896c24104d894c240849bd70309e09000000004d892c244d8d6ff04c3b6d107306ff5550ca085f4d89ef49c745f8010000004d8965004983fe01750c49c7c601000000e926010000488b7c2420488b742418488b542410488b4c24084d8d67a84c3b65107306ff5550cace6f4d89e749c74424f80a00000049894c24484989542440498974243849897c24304d895424284d894c24204d894424184d895c241049bb688c6408000000004d895c240849bbf8309e09000000004d891c244d8d5ff04c3b5d107306ff5550ca08774d89df49c743f8010000004d8923488b7c2420488b742418488b542410488b4c24084d8d67a84c3b65107306ff5550cace6f4d89e749c74424f80a00000049894c24484989542440498974243849897c24304d895424284d894c24204d895c24184d8974241049be688c6408000000004d8974240849be68319e09000000004d8934244d8d77f04c3b75107306ff5550ca08314d89f749c746f8010000004d8926498d47e0483b45107306ff5550ca08614989c748c740f8030000004c8940104c8968084c89306a016a014c8b4c24304c8b5424284989e0ff1558000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c2200048b8c88c640800000000488b5d08ff23f4000000000000|@4776,1,@16828,@11962|112,0,@11959 263,0,@4733 278,0,@11960 410,0,@4733 425,0,@11961 571,0,@4735 11959:D3,96|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284d8b763041564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@4732,1,@16770| 11960:D3,72|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e20498b7e284d8b6e304d8b66384d8b5e404d8b5648415441534152ff7424184989fa4c896c2420ff22f400|@4734,1,@16771| 11961:D3,72|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e20498b7e284d8b6e304d8b66384d8b5e404d8b5648415441534152ff7424184989fa4c896c2420ff22f400|@4734,1,@16772| 11962:D8,712|483b65187306ff5558ca090750534150415141524d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849bef0349e09000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15790200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d6fc84c3b6d107303ff55504d89ef49c745f8060000004c8b7424084c89f24d8975284c8b7424104d89f34d8975204c8b6424204d89e64d8965184c8b6424284c89e04d89651049bc608d6408000000004d89650849bc40359e09000000004d8965004d89f64d8b164d89d44983fa010f85c90000004d89f6498b46084d89f641ff76104d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d89dc4d89660849bcc0359e09000000004d89264d8d67f04c3b65107306ff5550ca01604d89e749c74424f8010000004d892c244d89e5498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15420100004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff151e0100004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f64983fc030f859f0000004d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be90936408000000004c8933ff15860000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15620000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b5e084889d2488d6424084889c04883c40841584883c410ff22f400|@4777,1,@16829,@12018,@11369,@12017,@11369,@11349|55,0,@11963 257,0,@4738 271,0,@11964 352,0,@11965 593,0,@4769 11963:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4737,1,@16774,@10713| 11964:D3,88|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@4739,1,@16775| 11965:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@4767,1,@16818,@11966| 11966:D4,1032|483b65187306ff5558ca09035053415041514c8b5c24104d8b73284d8b264d89db4d8b3341ff76104d89db4d8b73084d89db4d89dd41ff73104d89ed4d89eb41ff75184d89db4d8b6b304d89db41ff733841f6c401750b4d8b24244d8b642420eb0749c7c40100000041546a016a014983fd0375744d8b2e4983fd05756b4d8b66084d8b34244d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c892c244c89742408eb0d48c70424010000004c89742408ff3424ff7424104c8b742460498b064d89f6498b5e084d89f64d8b4610ff15070300004989c44d8d4fd04c3b4d107306ff5550ca00104d89cf49c741f8050000004c8b7424484c89f24d8971204c8b7424584d8971184c8b7424604d89711049beb08d6408000000004d89710849be783a9e09000000004d89314d8d47d04c3b45107306ff5550ca04124d89c749c740f80500000041c640ff4049c740200100000049c740180100000049c740100100000049c740080100000049c70001000000498d7fc0483b7d107306ff5550ca04134989ff48c747f807000000c647ff4048c747300100000048c747280100000048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d57c04c3b55107306ff5550ca84134d89d749c742f80700000041c642ff4049c742300100000049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d77c84c3b75107306ff5550ca84174d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bdf03a9e09000000004d89c34d894b204d89531849897b10488b7424084889f1498973084d892b418060ffbf49bd405b9e09000000004989fb4889c94889ce49894b304d8953284d8943204d894b18488b0c2449894b10488d6424084889d2498953084d892b8067ffbf49bd305c9e09000000004d89d34889f649897330488d64241849897b284d8943204d894b184d8973104c8b4424204d8943084d892b418062ffbf49bd485d9e09000000004d89f34d894b284d8953204c8b14244d895318488d6424084c8b14244d895310488d6424084c8b14244d895308488d6424084d892b418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c8b6c24184c8b24244d896500488d6424304d89750848c7c001000000c3f400000000|@4768,1,@16819,@11349|343,0,@4740 357,0,@11967 693,0,@11968 738,0,@12003 800,0,@12004 858,0,@12005 11967:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@4741,1,@16776| 11968:D4,248|483b65187305ff5558cd054d8d6ff04c3b6d107305ff5550cd044d89ef49c745f8010000004c8b72204d8975004d8d67f04c3b65107306ff5550ca04204d89e749c74424f8010000004c8b72184d8934244d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004c8b5a104d891e498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8960104c8968084c89304c8b6a084d89ee4983fd01751048b808d5620800000000488b5d08ff234d8b36498b1e6a016a014989e0ff1547000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4762,1,@16808,@11969|168,0,@1556 11969:D8,568|483b65187306ff5558ca0901505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bea03e9e09000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15ed0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424104d89f54d897424104c8b7424184d8974240849bef03e9e09000000004d8934244d89ed4d8b5d004d89de4983fb05752c4c8b6c240849be08de6208000000004d8975004c8b34244d897508488d64241048c7c0010000004883c410c34d89ed4983fe010f859f0000004d89ed498b45084d89ed41ff75104d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be988e6408000000004c8933ff15d00000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15ac0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34d89ed4d89ee41ff75104d89f64d8b7618498b06ff15650000004c8b7424084c89f34983fe0175054989c6eb09ff15440000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c3f4000000000000|@4763,1,@16809,@12002,@11383,@12001,@11369,@11349|51,0,@11970 229,0,@11971 264,0,@1613 391,0,@4745 11970:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4742,1,@16777,@10716| 11971:D3,88|483b65187305ff5558cd054989d66a016a0148ba508e640800000000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4744,1,@16778|20,0,@4743 11972:D3,80|483b65187305ff5558cd014989c66a016a0148baa88e640800000000498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@4761,1,@16807|20,0,@4746 11973:D9,1552|483b65187306ff5558ca0901505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849be50469e09000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15cd0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d57e04c3b55107303ff55504d89d749c742f8030000004c8b6c24104d89ee4d896a104c8b6c24184c89e84d896a0849bda0469e09000000004d892a4d89f64d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e949000000909090e938020000909090e9cf020000909090e9f3020000909090e98a030000909090488d6424084d89f6498b5e0848ba50c96208000000004889c04158488d642410ff25ed0400004d89f64d8b66084d89f64d8b5e104d89f64d8b76184d8b2b4d8b5b0841f6c6010f8535010000498b36498d7fd8483b7d107306ff5550ca403c4989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d77d04c3b75107306ff5550cac03c4d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049b920479e09000000004989f84d8950184d897010498970084d89088067ffbf49b918489e09000000004d89f04d895020498978184d8958104d8968084d8908418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d4d8965004d89750848c7c0010000004883c410c34d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d896e0849bd104b9e09000000004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d4d8965004d89750848c7c0010000004883c410c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01044d89f749c746f8010000004d8916498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bea88f6408000000004c8933ff15900200004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff156c0200004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34c8b6c240849be08de6208000000004d8975004c8b34244d897508488d64241048c7c0010000004883c410c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01044d89f749c746f8010000004d8916498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bee88f6408000000004c8933ff15b50100004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15910100004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34d89f54d8b65084d89ed4d8b75104d89ed498b75184d8b0e4d8b4608498d7fd8483b7d107306ff5550ca40174989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d77d04c3b75107306ff5550cac0174d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bd30559e09000000004989fb4d8953184d897310498973084d892b8067ffbf49bd28569e09000000004d89f34d89532049897b184d8943104d894b084d892b418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c408c3f4|@4760,1,@16804,@12000,@11369,@11999,@11369,@11336,@11349|51,0,@11974 229,0,@11975 323,0,@1487 523,0,@11976 555,0,@11977 735,0,@11981 927,0,@4751 1016,0,@1613 1130,0,@4753 1375,0,@11994 1407,0,@11995 11974:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4747,1,@16779,@10807| 11975:D3,88|483b65187305ff5558cd054989d66a016a0148baa88e640800000000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4748,1,@16780|20,0,@4746 11976:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba38d2630800000000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4749,1,@16781,@11356|133,0,@3431 11977:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bda0499e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@4750,1,@16783,@11980,@11979,@11349|137,0,@11978 11978:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16782| 11979:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16785| 11980:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16784| 11981:D6,304|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b76184c893348c7c00100000049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd804c9e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15790000004889c34883fb01750949c7c601000000eb1048c7c001000000ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@4750,1,@16787,@11984,@11983,@11349|107,0,@11982 11982:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16786| 11983:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16789| 11984:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16788| 11985:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4752,1,@16790,@11969| 11986:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4758,1,@16797,@11987| 11987:D4,432|483b65187306ff5558ca09014989c64150ff334c8b53084c8b4b104c8b6b18498b7500498d7fe0483b7d107306ff5550ca48464989ff48c747f80300000048895f104c89770849bdd0509e09000000004c892f4d8d47d84c3b45107306ff5550cac0464d89c749c740f80400000041c640ff4049c740180100000049c740100100000049c740080100000049c700010000004d8d67d04c3b65107306ff5550cac0474d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd50519e09000000004d89c349897b184d896310498973084d892b418060ffbf49bd38529e09000000004d89e349897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15670000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f40000|@4759,1,@16798,@11349|72,0,@11988 226,0,@11989 259,0,@11990 11988:D3,88|483b65187305ff5558cd054989d66a016a0148baf88f640800000000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4755,1,@16791|20,0,@4754 11989:D3,192|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba508e640800000000498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@4756,1,@16792|133,0,@4743 11990:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bdc0539e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@4757,1,@16794,@11993,@11992,@11349|137,0,@11991 11991:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16793| 11992:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16796| 11993:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16795| 11994:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba38d2630800000000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4749,1,@16799,@11356|133,0,@3431 11995:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bdb0579e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@4750,1,@16801,@11998,@11997,@11349|137,0,@11996 11996:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16800| 11997:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16803| 11998:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16802| 11999:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16806| 12000:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16805| 12001:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16811| 12002:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16810| 12003:D3,200|483b65187305ff5558cd054989d64d8b6e304983fd0174064d8b5e20eb044d8b5e284d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@4764,1,@16812| 12004:D4,232|483b65187305ff5558cd054c8b72304983fe0174064c8b5a20eb044c8b5a284d8d6ff04c3b6d107306ff5550ca04084d89ef49c745f8010000004c8b72184d8975004d8d67f04c3b65107306ff5550ca04284d89e749c74424f8010000004c8b72104d8934244d8d77f04c3b75107306ff5550ca04384d89f749c746f8010000004d891e498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8960104c8968084c89306a016a01488b5a084989e0ff1545000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@4765,1,@16813,@11969| 12005:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdb85f9e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@4766,1,@16815,@12008,@12007,@11349|372,0,@12006 12006:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16814| 12007:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16817| 12008:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16816| 12009:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4774,1,@16826,@12010| 12010:D4,456|483b65187306ff5558ca09014989c641504c8b6b104d8b6d004d8b4518ff334c8b53084c8b4b18488b5320498d77e0483b75107306ff5550ca0c474989f748c746f80300000048895e104c89760849bda0639e09000000004c892e498d7fd8483b7d107306ff5550ca44474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd20649e09000000004989fb498973184d896310498953084d892b8067ffbf49bd08659e09000000004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156c0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f400000000000000|@4775,1,@16827,@11349|80,0,@12011 242,0,@12012 274,0,@12013 12011:D3,88|483b65187305ff5558cd054989d66a016a0148baa093640800000000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@4771,1,@16820|20,0,@4770 12012:D4,184|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a184d892e4d8d6ff04c3b6d107306ff5550ca04404d89ef49c745f8010000004c8b62104d896500498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c700010000006a016a01488b5a084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4772,1,@16821,@11969| 12013:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd78679e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@4773,1,@16823,@12016,@12015,@11349|372,0,@12014 12014:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16822| 12015:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16825| 12016:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16824| 12017:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16831| 12018:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16830| 12019:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16834| 12020:D12,1752|483b65187306ff5558ca0d0152505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bec8719e09000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15ac0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424104d89f54d897424184c8b7424184d897424104c8b5c24204d89de4d895c240849bb18729e09000000004d891c244d89ed4d8b55004d89d34983fa050f854d0100004d89ed4d8b6d084d8b4500498b75084d8b5d18498d7fd8483b7d107306ff5550ca40594989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d57d04c3b55107306ff5550cac0594d89d749c742f80500000041c642ff4049c742200100000049c742180100000049c742100100000049c742080100000049c7020100000049bd90729e09000000004989f94d8961184d895110498971084d89298067ffbf49bd78739e09000000004d89d14d896120498979184d8941104d89f64d8971084d8929418062ffbf4d8d6fe84c3b6d107306ff5550ca000c4d89ef49c745f8020000004d89550849c74500090000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b24244d896608488d6424084d892e415d488d6424084d895d004d89750848c7c0010000004883c410c34d89ed4d89da4983fb030f85bf0100004d89eb4d89dd41ff73084d89ed498b45104d89ed41ff751849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d004d8d57e04c3b55107306ff5550ca01704d89d749c742f8030000004d89f34d8b73184d8972104d89db4d8b73104d89720849be58749e09000000004d89324d89d64d8975004d8d6fe04c3b6d107306ff5550ca01184d89ef49c745f8030000004d89db4d89de4d895d104d89f64d8b76084d89750849beb0799e09000000004d8975004d8d77f04c3b75107306ff5550ca01304d89f749c746f8010000004d89264d89f44d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156ff15a70300004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24104d896e0849c70603000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb017502eb06ff1541030000488b1c24ff152f030000488d6424084c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15060300004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89ed4d89d34983fa010f85830100004d89ed4d8b5508498b0a4d8b4a084d8b6a204d8b5a284d8b42304d8b6d004983fd01750948c7c701000000eb084d8b6d00498b7d20498d77d0483b75107306ff5550ca825b4989f748c746f805000000c646ff4048c746200100000048c746180100000048c746100100000048c746080100000048c706010000004d8d57c84c3b55107306ff5550cac25b4d89d749c742f80600000041c642ff4049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c7020100000049bd687a9e09000000004889f24c8962204c89521848894a104d89f64c8972084c892a8066ffbf49be487b9e09000000004d89d54d8965284989752049897d184d8945104d894d084d897500418062ffbf4d8d6fe84c3b6d107306ff5550ca000c4d89ef49c745f8020000004d89550849c74500090000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b24244d896608488d6424084d892e415d4d895d004d89750848c7c0010000004883c418c34d89ed4983fb070f859d0000004d89ed498b45084d89ed41ff75104d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084d89f64d8b76204c8933ff15dd0000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15b90000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c34d89ed4d8b75104d89ed41ff75184d8b364983fe01750948c7c001000000eb074d8b36498b4618ff155f0000004c8b7424084c89f34983fe0175054989c6eb09ff153e0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f4|@4798,1,@16846,@12033,@11383,@12034,@11369,@12035,@11369,@12036,@12032,@11349|52,0,@12021 243,0,@12022 429,0,@12023 461,0,@12024 742,0,@12025 810,0,@12026 1291,0,@12027 1330,0,@12028 12021:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@4782,1,@16835,@10868| 12022:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@4783,1,@16836| 12023:D4,184|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a184d892e4d8d6ff04c3b6d107306ff5550ca04404d89ef49c745f8010000004c8b62104d896500498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c700010000006a016a01488b5a084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@4784,1,@16837,@11969| 12024:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@4785,1,@16838| 12025:D9,1280|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f855a0200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b357a040000750949c7c603000000eb2b4c3b3560040000750949c7c603000000eb194c3b3546040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78976408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50986408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@4794,1,@16839,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 294,0,@2144 342,0,@1021 387,0,@1987 538,0,@866 583,0,@4786 668,0,@1044 689,0,@105 916,0,@2144 964,0,@1021 1009,0,@1987 1160,0,@866 1205,0,@4793 12026:D3,144|483b65187305ff5558cd054989c6498b064d8b76084d8b2e4983fd017538498b5e086a016a01488b52084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3498b5e086a016a01488b52104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@4795,1,@16840| 12027:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@4796,1,@16841| 12028:D7,368|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66284d89650041554d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d89f64d8b66204d89650041554d89f6498b4618ff15390100004989c64156488b442408488b5c241049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd007d9e09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15780000004889c34883fb017508415e4883c410eb12488b0424ff15550000004989c6488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@4797,1,@16843,@12031,@12030,@11349,@11383|172,0,@12029 12029:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16842| 12030:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16845| 12031:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16844| 12032:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706010000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16851| 12033:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16847| 12034:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16848| 12035:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16849| 12036:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16850| 12037:D3,9352|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f85d30b00004d89f54d8b750841ff751041ff75184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb8af620800000000e95d0a00004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be0808110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e90a0900004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bde8a59e09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00336408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8066408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd009a6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34d89f44d8b364983fe030f85470c00004d89e64d8b660841ff761041ff76184983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb8af620800000000e9d10a00004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bde0a69e09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb8af620800000000e9090900004d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d104d896e0849bd20a79e09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0126408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8666308000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf89a6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c341ff7424084d8b6c241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb8af620800000000e9720a00004d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd60a79e09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e9aa0800004d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b8609c640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed09c6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd403a6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be109d6408000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd489d6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@4808,1,@16861|32,0,@1044 91,0,@105 125,0,@1308 154,0,@105 204,0,@15220 238,0,@1308 269,0,@105 303,0,@1308 341,0,@105 391,0,@15183 425,0,@1308 463,0,@105 513,0,@15183 547,0,@1308 584,0,@105 634,0,@15099 668,0,@1308 706,0,@105 756,0,@15183 801,0,@105 851,0,@15183 896,0,@1311 944,0,@866 989,0,@2021 1033,0,@866 1078,0,@1315 1166,0,@866 1210,0,@2023 1255,0,@866 1299,0,@1315 1387,0,@866 1432,0,@2025 1476,0,@866 1521,0,@1315 1609,0,@866 1653,0,@2027 1698,0,@866 1742,0,@1315 1830,0,@866 1875,0,@2029 1923,0,@1318 2017,0,@105 2074,0,@15180 2126,0,@12038 2239,0,@1311 2288,0,@866 2332,0,@4184 2377,0,@866 2421,0,@1315 2509,0,@866 2554,0,@3189 2598,0,@866 2643,0,@1315 2731,0,@866 2775,0,@3800 2824,0,@1318 2969,0,@866 3014,0,@4801 3104,0,@1044 3159,0,@105 3193,0,@1308 3222,0,@105 3274,0,@15175 3326,0,@12040 3423,0,@1308 3452,0,@105 3509,0,@15175 3561,0,@12041 3662,0,@105 3696,0,@1308 3734,0,@105 3784,0,@15183 3818,0,@1308 3856,0,@105 3906,0,@15183 3940,0,@1308 3977,0,@105 4027,0,@15099 4061,0,@1308 4099,0,@105 4149,0,@15183 4194,0,@105 4244,0,@15183 4289,0,@1311 4337,0,@866 4382,0,@2021 4426,0,@866 4471,0,@1315 4559,0,@866 4603,0,@2023 4648,0,@866 4692,0,@1315 4780,0,@866 4825,0,@2025 4869,0,@866 4914,0,@1315 5002,0,@866 5046,0,@2027 5091,0,@866 5135,0,@1315 5223,0,@866 5268,0,@2029 5316,0,@1318 5419,0,@1311 5468,0,@866 5512,0,@4249 5557,0,@866 5601,0,@1315 5689,0,@866 5734,0,@3905 5782,0,@866 5827,0,@1315 5915,0,@866 5959,0,@2651 6008,0,@1318 6153,0,@866 6198,0,@4809 6288,0,@1044 6327,0,@105 6361,0,@1308 6390,0,@105 6442,0,@15175 6494,0,@12042 6591,0,@1308 6622,0,@105 6656,0,@1308 6694,0,@105 6744,0,@15183 6778,0,@1308 6816,0,@105 6866,0,@15183 6900,0,@1308 6937,0,@105 6987,0,@15099 7021,0,@1308 7059,0,@105 7109,0,@15183 7154,0,@105 7204,0,@15183 7249,0,@1311 7297,0,@866 7342,0,@2021 7386,0,@866 7431,0,@1315 7519,0,@866 7563,0,@2023 7608,0,@866 7652,0,@1315 7740,0,@866 7785,0,@2025 7829,0,@866 7874,0,@1315 7962,0,@866 8006,0,@2027 8051,0,@866 8095,0,@1315 8183,0,@866 8228,0,@2029 8276,0,@1318 8370,0,@105 8427,0,@15180 8440,0,@4821 8496,0,@1311 8545,0,@866 8589,0,@4825 8634,0,@866 8678,0,@1315 8766,0,@866 8811,0,@4249 8855,0,@866 8900,0,@1315 8988,0,@866 9032,0,@4827 9081,0,@1318 9226,0,@866 9271,0,@4829 12038:D3,144|483b65187305ff5558cd054989d55049be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bda0a69e09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@1763,1,@16853|17,0,@15175 65,0,@12039 12039:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4800,1,@16852| 12040:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4808,1,@16854| 12041:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4808,1,@16855| 12042:D3,5456|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb8af620800000000e9b21400004d89ed4d8b75004d8b76204d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b7424084d8b66084d89e54983fc037d0f49beb8af620800000000e9501300004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104d8b75084d89f44983fe057d0f49bdb8af620800000000e9740b00004d89ed4d8b75004d8b76084d89e54983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d8b66084d89e54983fc077d0f49beb8af620800000000e9160a00004d89f64d8b2641ff7424284d89ee4983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d8b6e084d89ec4983fd097d0f49bdb8af620800000000e9390200004d89f64d8b2e4d8b6d184983ec027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8889b640800000000ff124889c2488b0424ff124989c641564c8b6c24304d8b75004d8b76104d89ed4d8b6d084983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88266308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef89b6408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58de6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd403a6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be289c6408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@466,1,@16858|37,0,@1308 77,0,@105 127,0,@15182 165,0,@1308 206,0,@105 240,0,@1308 278,0,@105 328,0,@15183 362,0,@1308 400,0,@105 450,0,@15183 484,0,@1308 521,0,@105 571,0,@15099 605,0,@1308 643,0,@105 693,0,@15183 738,0,@105 788,0,@15183 833,0,@1311 881,0,@866 926,0,@2021 970,0,@866 1015,0,@1315 1103,0,@866 1147,0,@2023 1192,0,@866 1236,0,@1315 1324,0,@866 1369,0,@2025 1413,0,@866 1458,0,@1315 1546,0,@866 1590,0,@2027 1635,0,@866 1679,0,@1315 1767,0,@866 1812,0,@2029 1860,0,@1318 1956,0,@1308 1996,0,@105 2046,0,@15099 2084,0,@1308 2126,0,@105 2160,0,@1308 2198,0,@105 2248,0,@15183 2282,0,@1308 2320,0,@105 2370,0,@15183 2404,0,@1308 2441,0,@105 2491,0,@15099 2525,0,@1308 2563,0,@105 2613,0,@15183 2658,0,@105 2708,0,@15183 2753,0,@1311 2801,0,@866 2846,0,@2021 2890,0,@866 2935,0,@1315 3023,0,@866 3067,0,@2023 3112,0,@866 3156,0,@1315 3244,0,@866 3289,0,@2025 3333,0,@866 3378,0,@1315 3466,0,@866 3510,0,@2027 3555,0,@866 3599,0,@1315 3687,0,@866 3732,0,@2029 3780,0,@1318 3876,0,@1308 3912,0,@105 3964,0,@15180 3977,0,@4813 4034,0,@105 4128,0,@1311 4176,0,@866 4221,0,@2122 4265,0,@866 4310,0,@1315 4398,0,@866 4442,0,@4817 4491,0,@866 4535,0,@1315 4623,0,@866 4668,0,@3488 4712,0,@866 4757,0,@1315 4845,0,@866 4889,0,@1313 4934,0,@866 4978,0,@1315 5066,0,@866 5111,0,@4249 5155,0,@866 5200,0,@1315 5288,0,@866 5332,0,@4819 5381,0,@1318 12043:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b8c09b640800000000ff124889c258ff22f400000000|@3415,1,@16857|14,0,@15101 27,0,@4815 12044:D3,32|483b65187305ff5558cd0149be3808110a00000000498b16ff22f40000000000|@3930,1,@16856|13,0,@15223 12045:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8989c640800000000ff124889c258ff22f400000000|@1763,1,@16860|14,0,@15175 27,0,@4823 12046:D3,32|483b65187305ff5558cd0149be2809110a00000000498b16ff22f40000000000|@3202,1,@16859|13,0,@15238 12047:D12,2696|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304d89f44d8b364983fe010f85d30200004d8b74240841ff7424104983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e9620100004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be7809110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd509f6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc030f85600200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849be3808110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b351d070000750949c7c603000000eb2b4c3b3503070000750949c7c603000000eb194c3b35e9060000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a06408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd050f85600200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be4805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3580040000750949c7c603000000eb2b4c3b3566040000750949c7c603000000eb194c3b354c040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08a16408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef807110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0a16408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@4800,1,@16863,@435,@433,@427,@435,@433,@427,@435,@433,@427|26,0,@1044 79,0,@105 113,0,@1756 142,0,@105 192,0,@15099 228,0,@105 283,0,@15243 328,0,@1985 376,0,@866 421,0,@1315 513,0,@1987 658,0,@866 703,0,@4846 788,0,@1044 826,0,@105 876,0,@15223 1059,0,@2144 1107,0,@1021 1152,0,@1987 1303,0,@866 1348,0,@4853 1433,0,@1044 1471,0,@105 1521,0,@15176 1704,0,@2144 1752,0,@1021 1797,0,@1987 1948,0,@866 1993,0,@4860 2078,0,@1044 2099,0,@105 2149,0,@15219 2332,0,@2144 2380,0,@1021 2425,0,@1987 2576,0,@866 2621,0,@4867 12048:D3,768|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e96d0100004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd509e6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@4845,1,@16862|32,0,@1044 58,0,@105 92,0,@1756 129,0,@105 179,0,@15099 224,0,@105 318,0,@1985 366,0,@866 411,0,@1315 503,0,@1987 648,0,@866 693,0,@4838 12049:D3,19904|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8708c620800000000c34c8b304d89f54d8b364983fe010f855f19000041ff75084983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e9f41700004c8b7424084d8b364d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e99a1600004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8e8a2640800000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb8af620800000000e92a1500004c8b6c242041ff75284d89f64983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f44983fe077d0f49beb8af620800000000e9520d00004c8b7424284d8b6e384d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd681d9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d89f54983fe097d0f49bdb8af620800000000e9820b00004c8b7424384d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24384d89ee4983fd0b7d0f49beb8af620800000000e92a0a00004c8b6c244041ff75304d89f64983ee0241567115488d64246048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9290600004c8b7424084d8b76084d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9ce0400004c8b7424104d8b76184d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9760300004c8b7424184d8b364d89ed4983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e9200200004c8b7424204d8b76104d89ed4983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da4248000000048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424404d89f44983fe0d7d0f49bdb8af620800000000e9500200004c8b7424484d8b6e184d89e44983ec027115488d64245848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b8b8a3640800000000ff124889c2488b0424ff124989c641564c8b7424584d8b6e204c8b6424504983ec027115488d64246848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b828a4640800000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf89b6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0a56408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58de6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0a56408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be702d6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30a66408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50216308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60a66408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c34d89ec4d8b6d004983fd030f85d10b00004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e95b0a00004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7610498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9090900004d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d184d896e0849bde02c9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184983ee0241567115488d64244048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0126408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8666308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40a76408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8708c620800000000c34d89e64d8b24244983fc050f85fa0f000041ff76084983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e98f0e00004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bec809110a00000000498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb8af620800000000e9330d00004c8b7424104d8b6e284d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bde0c79f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb8af620800000000e9630b00004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b7424204d89f44983fe077d0f49beb8af620800000000e90b0a00004c8b7424284d8b6e204d89e44983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be8805110a00000000498b1648b850b2640800000000ff124889c2488b0424ff124989c641564c8b6c24304d89ee4983fd097d0f49bdb8af620800000000e99b0800004c8b6c243841ff75184d89f64983ee0241567115488d64245848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424404d8b364c8b6c24384983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0b26408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0b26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20b36408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b36408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88b36408000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8b36408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8b36408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe070f85480c00004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb8af620800000000e9d20a00004d89e44983ec027115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd20ce9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb8af620800000000e90a0900004d89f64983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd60ce9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8b46408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10b56408000000004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40b56408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89e64983fc037d0b48b8708c620800000000c341ff750841ff751041ff75184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb8af620800000000e9020a00004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424204d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e92f0200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be7800110a00000000498b16ff124989c641564c8b6c24104983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be8805110a00000000498b1648b820b6640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef89b6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a76308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90b66408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@5051,1,@16894|32,0,@1044 79,0,@105 113,0,@1308 150,0,@105 233,0,@1308 271,0,@105 323,0,@15180 336,0,@4875 376,0,@1308 416,0,@105 450,0,@1308 488,0,@105 538,0,@15183 572,0,@1308 610,0,@105 660,0,@15183 694,0,@1308 731,0,@105 781,0,@15099 815,0,@1308 853,0,@105 903,0,@15183 948,0,@105 998,0,@15183 1043,0,@1311 1091,0,@866 1136,0,@2021 1180,0,@866 1225,0,@1315 1313,0,@866 1357,0,@2023 1402,0,@866 1446,0,@1315 1534,0,@866 1579,0,@2025 1623,0,@866 1668,0,@1315 1756,0,@866 1800,0,@2027 1845,0,@866 1889,0,@1315 1977,0,@866 2022,0,@2029 2070,0,@1318 2162,0,@1308 2200,0,@105 2252,0,@15180 2304,0,@12052 2401,0,@1308 2439,0,@105 2489,0,@15099 2523,0,@1308 2563,0,@105 2597,0,@1308 2635,0,@105 2685,0,@15183 2719,0,@1308 2757,0,@105 2807,0,@15183 2841,0,@1308 2878,0,@105 2928,0,@15099 2962,0,@1308 3000,0,@105 3050,0,@15183 3098,0,@105 3148,0,@15183 3193,0,@1311 3241,0,@866 3286,0,@2021 3330,0,@866 3375,0,@1315 3463,0,@866 3507,0,@2023 3552,0,@866 3596,0,@1315 3684,0,@866 3729,0,@2025 3773,0,@866 3818,0,@1315 3906,0,@866 3950,0,@2027 3995,0,@866 4039,0,@1315 4127,0,@866 4172,0,@2029 4220,0,@1318 4312,0,@1308 4350,0,@105 4402,0,@15180 4415,0,@4883 4466,0,@105 4518,0,@15180 4531,0,@4887 4587,0,@1311 4635,0,@866 4680,0,@4817 4724,0,@866 4769,0,@1315 4857,0,@866 4901,0,@4900 4950,0,@866 4994,0,@1315 5082,0,@866 5127,0,@3488 5171,0,@866 5216,0,@1315 5304,0,@866 5348,0,@1313 5393,0,@866 5437,0,@1315 5525,0,@866 5570,0,@4902 5618,0,@866 5663,0,@1315 5751,0,@866 5795,0,@4134 5840,0,@866 5884,0,@1315 5972,0,@866 6017,0,@4904 6065,0,@866 6110,0,@1315 6198,0,@866 6242,0,@2077 6291,0,@1318 6436,0,@866 6481,0,@4906 6571,0,@1044 6627,0,@105 6661,0,@1308 6690,0,@105 6773,0,@1308 6802,0,@105 6859,0,@15175 6911,0,@12060 7012,0,@105 7046,0,@1308 7084,0,@105 7134,0,@15183 7168,0,@1308 7206,0,@105 7256,0,@15183 7290,0,@1308 7327,0,@105 7377,0,@15099 7411,0,@1308 7449,0,@105 7499,0,@15183 7544,0,@105 7594,0,@15183 7639,0,@1311 7687,0,@866 7732,0,@2021 7776,0,@866 7821,0,@1315 7909,0,@866 7953,0,@2023 7998,0,@866 8042,0,@1315 8130,0,@866 8175,0,@2025 8219,0,@866 8264,0,@1315 8352,0,@866 8396,0,@2027 8441,0,@866 8485,0,@1315 8573,0,@866 8618,0,@2029 8666,0,@1318 8769,0,@1311 8818,0,@866 8862,0,@4249 8907,0,@866 8951,0,@1315 9039,0,@866 9084,0,@3905 9132,0,@866 9177,0,@1315 9265,0,@866 9309,0,@2651 9358,0,@1318 9503,0,@866 9548,0,@4913 9638,0,@1044 9683,0,@105 9717,0,@1308 9755,0,@105 9805,0,@15248 9839,0,@1308 9877,0,@105 9929,0,@15180 9981,0,@12071 10078,0,@1308 10116,0,@105 10166,0,@15182 10200,0,@1308 10238,0,@105 10290,0,@15180 10303,0,@5006 10343,0,@1308 10383,0,@105 10417,0,@1308 10455,0,@105 10505,0,@15183 10539,0,@1308 10577,0,@105 10627,0,@15183 10661,0,@1308 10698,0,@105 10748,0,@15099 10782,0,@1308 10820,0,@105 10870,0,@15183 10915,0,@105 10965,0,@15183 11010,0,@1311 11058,0,@866 11103,0,@2021 11147,0,@866 11192,0,@1315 11280,0,@866 11324,0,@2023 11369,0,@866 11413,0,@1315 11501,0,@866 11546,0,@2025 11590,0,@866 11635,0,@1315 11723,0,@866 11767,0,@2027 11812,0,@866 11856,0,@1315 11944,0,@866 11989,0,@2029 12037,0,@1318 12139,0,@105 12233,0,@1311 12281,0,@866 12326,0,@5010 12370,0,@866 12415,0,@1315 12503,0,@866 12547,0,@5012 12592,0,@866 12636,0,@1315 12724,0,@866 12769,0,@5014 12817,0,@866 12862,0,@1315 12950,0,@866 12994,0,@5016 13039,0,@866 13083,0,@1315 13171,0,@866 13216,0,@5018 13264,0,@866 13309,0,@1315 13397,0,@866 13441,0,@5020 13490,0,@1318 13635,0,@866 13680,0,@5022 13770,0,@1044 13825,0,@105 13859,0,@1308 13888,0,@105 13940,0,@15175 13992,0,@12075 14089,0,@1308 14120,0,@105 14154,0,@1308 14192,0,@105 14242,0,@15183 14276,0,@1308 14314,0,@105 14364,0,@15183 14398,0,@1308 14435,0,@105 14485,0,@15099 14519,0,@1308 14557,0,@105 14607,0,@15183 14652,0,@105 14702,0,@15183 14747,0,@1311 14795,0,@866 14840,0,@2021 14884,0,@866 14929,0,@1315 15017,0,@866 15061,0,@2023 15106,0,@866 15150,0,@1315 15238,0,@866 15283,0,@2025 15327,0,@866 15372,0,@1315 15460,0,@866 15504,0,@2027 15549,0,@866 15593,0,@1315 15681,0,@866 15726,0,@2029 15774,0,@1318 15868,0,@105 15925,0,@15180 15977,0,@12076 16090,0,@1311 16139,0,@866 16183,0,@5029 16228,0,@866 16272,0,@1315 16360,0,@866 16405,0,@3189 16449,0,@866 16494,0,@1315 16582,0,@866 16626,0,@5031 16675,0,@1318 16820,0,@866 16865,0,@5033 16955,0,@1044 16991,0,@105 17025,0,@1308 17056,0,@105 17090,0,@1308 17128,0,@105 17178,0,@15183 17212,0,@1308 17250,0,@105 17300,0,@15183 17334,0,@1308 17371,0,@105 17421,0,@15099 17455,0,@1308 17493,0,@105 17543,0,@15183 17588,0,@105 17638,0,@15183 17683,0,@1311 17731,0,@866 17776,0,@2021 17820,0,@866 17865,0,@1315 17953,0,@866 17997,0,@2023 18042,0,@866 18086,0,@1315 18174,0,@866 18219,0,@2025 18263,0,@866 18308,0,@1315 18396,0,@866 18440,0,@2027 18485,0,@866 18529,0,@1315 18617,0,@866 18662,0,@2029 18710,0,@1318 18802,0,@1308 18831,0,@105 18886,0,@15099 18922,0,@105 18979,0,@15180 18992,0,@5040 19048,0,@1311 19097,0,@866 19141,0,@4817 19186,0,@866 19230,0,@1315 19318,0,@866 19363,0,@1313 19407,0,@866 19452,0,@1315 19540,0,@866 19584,0,@3189 19633,0,@1318 19778,0,@866 19823,0,@5044 12050:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b820a3640800000000ff124889c258ff22f400000000|@1763,1,@16865|14,0,@15175 27,0,@4877 12051:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb8af620800000000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a36408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a36408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@16864|36,0,@1308 75,0,@105 125,0,@15238 176,0,@105 226,0,@15238 271,0,@1311 319,0,@866 364,0,@4879 408,0,@866 453,0,@1315 541,0,@866 585,0,@4881 634,0,@1318 12052:D3,144|483b65187305ff5558cd054989d55049be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd201e9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@1763,1,@16867|17,0,@15175 65,0,@12053 12053:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16866|37,0,@1756 76,0,@105 126,0,@15183 177,0,@105 271,0,@1985 319,0,@866 364,0,@1315 456,0,@1987 12054:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b8f0a3640800000000ff124889c258ff22f400000000|@1763,1,@16869|14,0,@15175 27,0,@4885 12055:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb8af620800000000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a36408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a36408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@16868|36,0,@1308 75,0,@105 125,0,@15238 176,0,@105 226,0,@15238 271,0,@1311 319,0,@866 364,0,@4879 408,0,@866 453,0,@1315 541,0,@866 585,0,@4881 634,0,@1318 12056:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b860a4640800000000ff124889c258ff22f400000000|@3415,1,@16873|14,0,@15101 27,0,@4889 12057:D3,32|483b65187305ff5558cd0149bea809110a00000000498b16ff22f40000000000|@4899,1,@16872|13,0,@15246 12058:D3,2096|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8708c620800000000c3ff304983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb8af620800000000e99d0600004c8b7424084d8b76104d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7620498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9420500004c8b7424104d8b364d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b7424104d89f44983fe057d0f49bdb8af620800000000e9ed0300004c8b7424184d8b6e204d89e44983ec027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d104d896e0849bda02c9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe077d0f49beb8af620800000000e91c0200004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424304d8b76184c8b6c24284983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be20216308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be901d6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50216308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be301e6308000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8a46408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@4899,1,@16871|32,0,@1044 58,0,@105 92,0,@1308 130,0,@105 213,0,@1308 250,0,@105 333,0,@1308 371,0,@105 423,0,@15175 475,0,@12059 572,0,@1308 610,0,@105 660,0,@15099 705,0,@105 799,0,@1311 848,0,@866 892,0,@2075 937,0,@866 981,0,@1315 1069,0,@866 1114,0,@1313 1158,0,@866 1203,0,@1315 1291,0,@866 1335,0,@2045 1384,0,@866 1428,0,@1315 1516,0,@866 1561,0,@2077 1605,0,@866 1650,0,@1315 1738,0,@866 1782,0,@2051 1831,0,@1318 1976,0,@866 2021,0,@4892 12059:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@2007,1,@16870| 12060:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4808,1,@16874| 12061:D3,8920|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8708c620800000000c34c8b204d89e64d8b24244983fc010f85c20900004d8b660841ff76104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8f5620800000000e9530800004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be3805110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd20509f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a86408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8708c620800000000c34d89f54d8b364983fe030f856a0a0000488d6424084d8b750841ff751041ff75184983ec0241547115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8f5620800000000e9f20800004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8f5620800000000e9f80700004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be8805110a00000000498b1648b830a9640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0a96408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8708c620800000000c341ff75084983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb8af620800000000e9c10c00004c8b6c240841ff75004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f54983fe037d0f49beb8af620800000000e9e50400004c8b7424104d8b76204d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb807110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e98e0300004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7610498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e9370200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424284d8b6e184c8b6424204983ec027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b880aa640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18a66308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8aa6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0aa6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20ab6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58ab6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@4955,1,@16879|32,0,@1044 84,0,@105 118,0,@1756 147,0,@105 199,0,@15175 251,0,@12062 352,0,@105 386,0,@1308 424,0,@105 474,0,@15183 508,0,@1308 546,0,@105 596,0,@15183 630,0,@1308 667,0,@105 717,0,@15099 751,0,@1308 789,0,@105 839,0,@15183 884,0,@105 934,0,@15183 979,0,@1311 1028,0,@866 1072,0,@2021 1117,0,@866 1161,0,@1315 1249,0,@866 1294,0,@2023 1338,0,@866 1383,0,@1315 1471,0,@866 1515,0,@2025 1560,0,@866 1604,0,@1315 1692,0,@866 1737,0,@2027 1781,0,@866 1826,0,@1315 1914,0,@866 1958,0,@2029 2007,0,@1318 2110,0,@1985 2158,0,@866 2203,0,@1315 2295,0,@1987 2440,0,@866 2485,0,@4922 2575,0,@1044 2632,0,@105 2666,0,@1756 2695,0,@105 2745,0,@15099 2779,0,@1756 2810,0,@105 2844,0,@1308 2882,0,@105 2932,0,@15183 2966,0,@1308 3004,0,@105 3054,0,@15183 3088,0,@1308 3125,0,@105 3175,0,@15099 3209,0,@1308 3247,0,@105 3297,0,@15183 3342,0,@105 3392,0,@15183 3437,0,@1311 3485,0,@866 3530,0,@2021 3574,0,@866 3619,0,@1315 3707,0,@866 3751,0,@2023 3796,0,@866 3840,0,@1315 3928,0,@866 3973,0,@2025 4017,0,@866 4062,0,@1315 4150,0,@866 4194,0,@2027 4239,0,@866 4283,0,@1315 4371,0,@866 4416,0,@2029 4464,0,@1318 4558,0,@105 4615,0,@15180 4628,0,@4929 4684,0,@1985 4733,0,@866 4777,0,@1315 4865,0,@866 4910,0,@1315 5002,0,@1987 5147,0,@866 5192,0,@4933 5282,0,@1044 5310,0,@105 5344,0,@1308 5384,0,@105 5418,0,@1308 5456,0,@105 5506,0,@15183 5540,0,@1308 5578,0,@105 5628,0,@15183 5662,0,@1308 5699,0,@105 5749,0,@15099 5783,0,@1308 5821,0,@105 5871,0,@15183 5916,0,@105 5966,0,@15183 6011,0,@1311 6059,0,@866 6104,0,@2021 6148,0,@866 6193,0,@1315 6281,0,@866 6325,0,@2023 6370,0,@866 6414,0,@1315 6502,0,@866 6547,0,@2025 6591,0,@866 6636,0,@1315 6724,0,@866 6768,0,@2027 6813,0,@866 6857,0,@1315 6945,0,@866 6990,0,@2029 7038,0,@1318 7130,0,@1308 7168,0,@105 7218,0,@15215 7252,0,@1308 7290,0,@105 7373,0,@1308 7411,0,@105 7461,0,@15099 7506,0,@105 7558,0,@15175 7571,0,@4940 7627,0,@1311 7676,0,@866 7720,0,@3177 7765,0,@866 7809,0,@1315 7897,0,@866 7942,0,@4942 7986,0,@866 8031,0,@1315 8119,0,@866 8163,0,@4944 8208,0,@866 8252,0,@1315 8340,0,@866 8385,0,@4946 8429,0,@866 8474,0,@1315 8562,0,@866 8606,0,@4249 8655,0,@1318 8800,0,@866 8845,0,@4948 12062:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4921,1,@16875| 12063:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b868a9640800000000ff124889c258ff22f400000000|@1763,1,@16877|14,0,@15175 27,0,@4931 12064:D3,32|483b65187305ff5558cd0149bee809110a00000000498b16ff22f40000000000|@2007,1,@16876|13,0,@15250 12065:D3,32|483b65187305ff5558cd0149be0804110a00000000498b16ff22f40000000000|@4129,1,@16878|13,0,@15156 12066:D3,20792|483b65187305ff5558cd054989d34c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b204d89e64d8b24244983fc010f85040a00004d89f44d8b74240841ff7424104983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb8af620800000000e9900800004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be0808110a00000000498b16ff124989c641564c8b7424084983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88a76308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8066408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70ac6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54d8b364983fe030f85b813000041ff750841ff751041ff75184983ec0241547115488d64242048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb8af620800000000e9451200004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9720a00004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bed8f5620800000000e9ee0700004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b74242841ff76084c8b7424104983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8166308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64243048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be9800110a00000000498b1648b800ad640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60226308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38ad6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4d8b6d004983fd050f85c00900004d8b6c240841ff7424104983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8f5620800000000e94f0800004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04084d89f749c746f8020000004d8b6b084d896e0849bdf0a29f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10ae6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8708c620800000000c34d89e64d8b24244983fc070f85760b00004d89f441ff7424084d8b74241041ff7424184983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9fd0900004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9aa0800004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be3805110a00000000498b1648b8f0ae640800000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28af6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd403a6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58af6408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88af6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54d8b364983fe090f85c10900004d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8f5620800000000e94f0800004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04084d89f749c746f8020000004d8b6b084d896e0849bdf0ab9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180900000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb8af620800000000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98b06408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8708c620800000000c341ff750841ff751041ff75184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb8af620800000000e92b1200004d89f64983ee0241567115488d64242848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb8af620800000000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9580a00004d89f64983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bed8f5620800000000e9ee0700004c8b7424204d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b74242841ff76084c8b7424104983ee0241567115488d64244848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8166308000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049beb807110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60226308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78b16408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@4921,1,@16884|29,0,@1044 86,0,@105 120,0,@1308 149,0,@105 199,0,@15220 237,0,@105 271,0,@1308 309,0,@105 359,0,@15183 393,0,@1308 431,0,@105 481,0,@15183 515,0,@1308 552,0,@105 602,0,@15099 636,0,@1308 674,0,@105 724,0,@15183 769,0,@105 819,0,@15183 864,0,@1311 913,0,@866 957,0,@2021 1002,0,@866 1046,0,@1315 1134,0,@866 1179,0,@2023 1223,0,@866 1268,0,@1315 1356,0,@866 1400,0,@2025 1445,0,@866 1489,0,@1315 1577,0,@866 1622,0,@2027 1666,0,@866 1711,0,@1315 1799,0,@866 1843,0,@2029 1892,0,@1318 1995,0,@1311 2043,0,@866 2088,0,@3189 2132,0,@866 2177,0,@1315 2265,0,@866 2309,0,@3800 2358,0,@1318 2503,0,@866 2548,0,@4957 2633,0,@1044 2685,0,@105 2719,0,@1308 2750,0,@105 2784,0,@1308 2822,0,@105 2872,0,@15183 2906,0,@1308 2944,0,@105 2994,0,@15183 3028,0,@1308 3065,0,@105 3115,0,@15099 3149,0,@1308 3187,0,@105 3237,0,@15183 3282,0,@105 3332,0,@15183 3377,0,@1311 3425,0,@866 3470,0,@2021 3514,0,@866 3559,0,@1315 3647,0,@866 3691,0,@2023 3736,0,@866 3780,0,@1315 3868,0,@866 3913,0,@2025 3957,0,@866 4002,0,@1315 4090,0,@866 4134,0,@2027 4179,0,@866 4223,0,@1315 4311,0,@866 4356,0,@2029 4404,0,@1318 4496,0,@1308 4527,0,@105 4561,0,@1756 4598,0,@105 4648,0,@15099 4695,0,@105 4729,0,@1308 4767,0,@105 4817,0,@15183 4851,0,@1308 4889,0,@105 4939,0,@15183 4973,0,@1308 5010,0,@105 5060,0,@15099 5094,0,@1308 5132,0,@105 5182,0,@15183 5227,0,@105 5277,0,@15183 5322,0,@1311 5370,0,@866 5415,0,@2021 5459,0,@866 5504,0,@1315 5592,0,@866 5636,0,@2023 5681,0,@866 5725,0,@1315 5813,0,@866 5858,0,@2025 5902,0,@866 5947,0,@1315 6035,0,@866 6079,0,@2027 6124,0,@866 6168,0,@1315 6256,0,@866 6301,0,@2029 6349,0,@1318 6452,0,@1985 6501,0,@866 6545,0,@1315 6637,0,@1987 6731,0,@105 6788,0,@15101 6801,0,@4961 6857,0,@1311 6906,0,@866 6950,0,@2086 6995,0,@866 7039,0,@1315 7127,0,@866 7172,0,@1313 7216,0,@866 7261,0,@1315 7349,0,@866 7393,0,@4249 7442,0,@1318 7587,0,@866 7632,0,@4963 7717,0,@1044 7768,0,@105 7802,0,@1756 7831,0,@105 7883,0,@15175 7931,0,@12068 8032,0,@105 8066,0,@1308 8104,0,@105 8154,0,@15183 8188,0,@1308 8226,0,@105 8276,0,@15183 8310,0,@1308 8347,0,@105 8397,0,@15099 8431,0,@1308 8469,0,@105 8519,0,@15183 8564,0,@105 8614,0,@15183 8659,0,@1311 8708,0,@866 8752,0,@2021 8797,0,@866 8841,0,@1315 8929,0,@866 8974,0,@2023 9018,0,@866 9063,0,@1315 9151,0,@866 9195,0,@2025 9240,0,@866 9284,0,@1315 9372,0,@866 9417,0,@2027 9461,0,@866 9506,0,@1315 9594,0,@866 9638,0,@2029 9687,0,@1318 9790,0,@1985 9838,0,@866 9883,0,@1315 9975,0,@1987 10120,0,@866 10165,0,@4970 10250,0,@1044 10309,0,@105 10343,0,@1308 10372,0,@105 10422,0,@15182 10456,0,@1308 10487,0,@105 10521,0,@1308 10559,0,@105 10609,0,@15183 10643,0,@1308 10681,0,@105 10731,0,@15183 10765,0,@1308 10802,0,@105 10852,0,@15099 10886,0,@1308 10924,0,@105 10974,0,@15183 11019,0,@105 11069,0,@15183 11114,0,@1311 11162,0,@866 11207,0,@2021 11251,0,@866 11296,0,@1315 11384,0,@866 11428,0,@2023 11473,0,@866 11517,0,@1315 11605,0,@866 11650,0,@2025 11694,0,@866 11739,0,@1315 11827,0,@866 11871,0,@2027 11916,0,@866 11960,0,@1315 12048,0,@866 12093,0,@2029 12141,0,@1318 12235,0,@105 12292,0,@15175 12305,0,@4977 12361,0,@1311 12410,0,@866 12454,0,@4979 12499,0,@866 12543,0,@1315 12631,0,@866 12676,0,@4249 12720,0,@866 12765,0,@1315 12853,0,@866 12897,0,@4981 12946,0,@1318 13091,0,@866 13136,0,@4983 13221,0,@1044 13272,0,@105 13306,0,@1756 13335,0,@105 13387,0,@15175 13435,0,@12070 13536,0,@105 13570,0,@1308 13608,0,@105 13658,0,@15183 13692,0,@1308 13730,0,@105 13780,0,@15183 13814,0,@1308 13851,0,@105 13901,0,@15099 13935,0,@1308 13973,0,@105 14023,0,@15183 14068,0,@105 14118,0,@15183 14163,0,@1311 14212,0,@866 14256,0,@2021 14301,0,@866 14345,0,@1315 14433,0,@866 14478,0,@2023 14522,0,@866 14567,0,@1315 14655,0,@866 14699,0,@2025 14744,0,@866 14788,0,@1315 14876,0,@866 14921,0,@2027 14965,0,@866 15010,0,@1315 15098,0,@866 15142,0,@2029 15191,0,@1318 15294,0,@1985 15342,0,@866 15387,0,@1315 15479,0,@1987 15624,0,@866 15669,0,@4992 15754,0,@1044 15790,0,@105 15824,0,@1308 15855,0,@105 15889,0,@1308 15927,0,@105 15977,0,@15183 16011,0,@1308 16049,0,@105 16099,0,@15183 16133,0,@1308 16170,0,@105 16220,0,@15099 16254,0,@1308 16292,0,@105 16342,0,@15183 16387,0,@105 16437,0,@15183 16482,0,@1311 16530,0,@866 16575,0,@2021 16619,0,@866 16664,0,@1315 16752,0,@866 16796,0,@2023 16841,0,@866 16885,0,@1315 16973,0,@866 17018,0,@2025 17062,0,@866 17107,0,@1315 17195,0,@866 17239,0,@2027 17284,0,@866 17328,0,@1315 17416,0,@866 17461,0,@2029 17509,0,@1318 17601,0,@1308 17632,0,@105 17666,0,@1756 17703,0,@105 17753,0,@15099 17800,0,@105 17834,0,@1308 17872,0,@105 17922,0,@15183 17956,0,@1308 17994,0,@105 18044,0,@15183 18078,0,@1308 18115,0,@105 18165,0,@15099 18199,0,@1308 18237,0,@105 18287,0,@15183 18332,0,@105 18382,0,@15183 18427,0,@1311 18475,0,@866 18520,0,@2021 18564,0,@866 18609,0,@1315 18697,0,@866 18741,0,@2023 18786,0,@866 18830,0,@1315 18918,0,@866 18963,0,@2025 19007,0,@866 19052,0,@1315 19140,0,@866 19184,0,@2027 19229,0,@866 19273,0,@1315 19361,0,@866 19406,0,@2029 19454,0,@1318 19557,0,@1985 19606,0,@866 19650,0,@1315 19742,0,@1987 19836,0,@105 19891,0,@15215 19936,0,@1311 19985,0,@866 20029,0,@2086 20074,0,@866 20118,0,@1315 20206,0,@866 20251,0,@1313 20295,0,@866 20340,0,@1315 20428,0,@866 20472,0,@4249 20521,0,@1318 20666,0,@866 20711,0,@4999 12067:D3,32|483b65187305ff5558cd0149beb807110a00000000498b16ff22f40000000000|@3485,1,@16880|13,0,@15215 12068:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4955,1,@16881| 12069:D3,2200|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8f5620800000000e9f60700004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424084d8b2e41ff75084d89f64d8b76084983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16882|36,0,@1756 75,0,@105 125,0,@15099 177,0,@105 211,0,@1308 249,0,@105 299,0,@15183 333,0,@1308 371,0,@105 421,0,@15183 455,0,@1308 492,0,@105 542,0,@15099 576,0,@1308 614,0,@105 664,0,@15183 709,0,@105 759,0,@15183 804,0,@1311 853,0,@866 897,0,@2021 942,0,@866 986,0,@1315 1074,0,@866 1119,0,@2023 1163,0,@866 1208,0,@1315 1296,0,@866 1340,0,@2025 1385,0,@866 1429,0,@1315 1517,0,@866 1562,0,@2027 1606,0,@866 1651,0,@1315 1739,0,@866 1783,0,@2029 1832,0,@1318 1935,0,@1985 1983,0,@866 2028,0,@1315 2120,0,@1987 12070:D3,7112|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdb8af620800000000e9281b00004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49beb8af620800000000e9471300004d89ed4d8b75004d8b76084d89e54983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424104d8b66084d89e54983fc057d0f49bdb8af620800000000e9ea1100004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64243048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b2e41ff75184d89f64d8b76084983ee0241567115488d64243848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdd8f5620800000000e9ec0800004c8b7424084d8b364d89ed4983ed027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49bed8f5620800000000e9eb0700004c8b7424104d8b76084d89ed4983ed027115488d64244048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b74241841ff76104c8b7424184983ee0241567115488d64245848b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb8af620800000000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb8af620800000000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be7800110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd001b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be381b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd701b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea01b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd81b6308000000004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b06208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60b06408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58de6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be403a6408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@466,1,@16883|37,0,@1308 78,0,@105 112,0,@1308 150,0,@105 200,0,@15183 234,0,@1308 272,0,@105 322,0,@15183 356,0,@1308 393,0,@105 443,0,@15099 477,0,@1308 515,0,@105 565,0,@15183 610,0,@105 660,0,@15183 705,0,@1311 753,0,@866 798,0,@2021 842,0,@866 887,0,@1315 975,0,@866 1019,0,@2023 1064,0,@866 1108,0,@1315 1196,0,@866 1241,0,@2025 1285,0,@866 1330,0,@1315 1418,0,@866 1462,0,@2027 1507,0,@866 1551,0,@1315 1639,0,@866 1684,0,@2029 1732,0,@1318 1828,0,@1308 1868,0,@105 1918,0,@15099 1956,0,@1308 1998,0,@105 2032,0,@1308 2070,0,@105 2120,0,@15183 2154,0,@1308 2192,0,@105 2242,0,@15183 2276,0,@1308 2313,0,@105 2363,0,@15099 2397,0,@1308 2435,0,@105 2485,0,@15183 2530,0,@105 2580,0,@15183 2625,0,@1311 2673,0,@866 2718,0,@2021 2762,0,@866 2807,0,@1315 2895,0,@866 2939,0,@2023 2984,0,@866 3028,0,@1315 3116,0,@866 3161,0,@2025 3205,0,@866 3250,0,@1315 3338,0,@866 3382,0,@2027 3427,0,@866 3471,0,@1315 3559,0,@866 3604,0,@2029 3652,0,@1318 3762,0,@105 3796,0,@1756 3833,0,@105 3916,0,@1756 3954,0,@105 4004,0,@15182 4051,0,@105 4085,0,@1308 4123,0,@105 4173,0,@15183 4207,0,@1308 4245,0,@105 4295,0,@15183 4329,0,@1308 4366,0,@105 4416,0,@15099 4450,0,@1308 4488,0,@105 4538,0,@15183 4583,0,@105 4633,0,@15183 4678,0,@1311 4726,0,@866 4771,0,@2021 4815,0,@866 4860,0,@1315 4948,0,@866 4992,0,@2023 5037,0,@866 5081,0,@1315 5169,0,@866 5214,0,@2025 5258,0,@866 5303,0,@1315 5391,0,@866 5435,0,@2027 5480,0,@866 5524,0,@1315 5612,0,@866 5657,0,@2029 5705,0,@1318 5808,0,@1985 5857,0,@866 5901,0,@1315 5989,0,@866 6034,0,@1315 6126,0,@1987 6229,0,@1311 6277,0,@866 6322,0,@4990 6366,0,@866 6411,0,@1315 6499,0,@866 6543,0,@3488 6588,0,@866 6632,0,@1315 6720,0,@866 6765,0,@1313 6809,0,@866 6854,0,@1315 6942,0,@866 6986,0,@4249 7035,0,@1318 12071:D3,144|483b65187305ff5558cd054989d55049be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd98c89f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@1763,1,@16886|17,0,@15175 65,0,@12072 12072:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16885|37,0,@1756 76,0,@105 126,0,@15183 177,0,@105 271,0,@1985 319,0,@866 364,0,@1315 456,0,@1987 12073:D3,48|483b65187305ff5558cd015049be3805110a00000000498b1648b888b2640800000000ff124889c258ff22f400000000|@1763,1,@16888|14,0,@15175 27,0,@5008 12074:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb8af620800000000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be2809110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a36408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a36408000000004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@466,1,@16887|36,0,@1308 75,0,@105 125,0,@15238 176,0,@105 226,0,@15238 271,0,@1311 319,0,@866 364,0,@4879 408,0,@866 453,0,@1315 541,0,@866 585,0,@4881 634,0,@1318 12075:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@4808,1,@16889| 12076:D3,144|483b65187305ff5558cd054989d55049be3805110a00000000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd18cf9f09000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@1763,1,@16891|17,0,@15175 65,0,@12077 12077:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16890|37,0,@1756 76,0,@105 126,0,@15183 177,0,@105 271,0,@1985 319,0,@866 364,0,@1315 456,0,@1987 12078:D3,48|483b65187305ff5558cd015049be9800110a00000000498b1648b858b6640800000000ff124889c258ff22f400000000|@3415,1,@16893|14,0,@15101 27,0,@5042 12079:D3,32|483b65187305ff5558cd0149be3808110a00000000498b16ff22f40000000000|@3930,1,@16892|13,0,@15223 12080:D3,3272|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54d8b364983fe010f85fb0300004d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb8af620800000000e9890200004d89e44983ec027115488d64241048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e415649be3805110a000000004d8b364d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b62084d89650849bce8de9f09000000004d896500498d47d8483b45107306ff5550ca00604989c748c740f80400000048c740180500000048c74010050000004c89680848c700010000004c89f2ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be3808110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8b76408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8b76408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30b86408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8708c620800000000c34d89ec4d8b6d004983fd030f85850300004d8b6c240841ff7424104983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb8af620800000000e9140200004d89f64983ee027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10b96408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be48b96408000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80b96408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8708c620800000000c34d8b74240841ff74241041ff7424184983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9620300004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9150200004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef807110a00000000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bee807110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60ba6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98ba6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0ba6408000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08bb6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@5088,1,@16896|26,0,@1044 80,0,@105 114,0,@1308 143,0,@105 195,0,@15175 243,0,@12081 346,0,@105 401,0,@15223 446,0,@1311 494,0,@866 539,0,@5053 583,0,@866 628,0,@1315 716,0,@866 760,0,@5055 809,0,@1318 954,0,@866 999,0,@5057 1084,0,@1044 1135,0,@105 1169,0,@1308 1198,0,@105 1248,0,@15182 1284,0,@105 1339,0,@15183 1384,0,@1311 1432,0,@866 1477,0,@5064 1521,0,@866 1566,0,@1315 1654,0,@866 1698,0,@5066 1747,0,@1318 1892,0,@866 1937,0,@5068 2022,0,@1044 2061,0,@105 2095,0,@1308 2124,0,@105 2202,0,@1308 2231,0,@105 2286,0,@15219 2322,0,@105 2377,0,@15218 2422,0,@1311 2471,0,@866 2515,0,@5075 2560,0,@866 2604,0,@1315 2692,0,@866 2737,0,@5077 2781,0,@866 2826,0,@1315 2914,0,@866 2958,0,@5079 3007,0,@1318 3152,0,@866 3197,0,@5081 12081:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8f5620800000000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@466,1,@16895|37,0,@1756 76,0,@105 126,0,@15183 177,0,@105 271,0,@1985 319,0,@866 364,0,@1315 456,0,@1987 12082:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@5089,1,@16897| 12083:D10,720|483b65187306ff5558ca0d0152505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bed0e49f09000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15940200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424104d89f34d897424184c8b7424184c89f04d897424104c8b7424204d89f54d8974240849be20e59f09000000004d8934244d89db4d8b134d89d64983fa030f85bf0000004d89db498b5b084d89db498b43104d89db41ff73184d8d77f04c3b75107306ff5550ca09304d89f749c746f8010000004d89264d89f44d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d89ed4d8b6d084d892e41564883fb017502eb06ff158c010000488b1c24ff157a010000488d6424084c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15510100004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c34d89db4983fe017526488d6424084d89db498b5b0848ba50c96208000000004889c04158488d642418ff25f50000004d89db4d89de41ff73084d89f6498b46104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89ed4d8b6d104d896e0849bd98e59f09000000004d892e4d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15620000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff153e0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f4|@5099,1,@16909,@12096,@11369,@11336,@12097,@11369,@12095,@11349|52,0,@12084 246,0,@12085 491,0,@1487 572,0,@12086 12084:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@5090,1,@16898,@10870| 12085:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@5091,1,@16899| 12086:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@5097,1,@16907,@12087| 12087:D4,1040|483b65187306ff5558ca09034989c64989dc4c89cb41504d8b6c24184d8b6d0041ff3424498b7424084d8b5c24104d8b542420498b5424286a016a014983fa03756b4d8b134983fa0575624d8b4b084d8b194d8b51084d8b4110498b79184d8d4fe04c3b4d107306ff5550cacc7d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca4c7a4d89d749c742f8010000004d890a4c8914244c895c2408eb0d48c70424010000004c895c24084158584d8d4fd04c3b4d107306ff5550ca4d714d89cf49c741f805000000498959204d8961184d89711049bcc8bc6408000000004d89610849bc58ea9f09000000004d892141f6c50175144d8b6d004d8b6d1848c7c101000000e91702000048c7c101000000498d7fc0483b7d107306ff5550ca4f434989ff48c747f807000000c647ff4048c747300100000048c747280100000048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67b84c3b65107306ff5550cacf434d89e749c74424f80800000041c64424ff4049c74424380100000049c74424300100000049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fd04c3b6d107306ff5550cacf534d89ef49c745f80500000041c645ff4049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bbd0ea9f09000000004989fa4d8942304d8962284d896a204d894a184989421049895a084d891a8067ffbf49bbc0eb9f09000000004d89e24d8942384d896a3049897a284d894a2049894a1849895210498972084d891a41806424ffbf49bbd8ee9f09000000004d89ea49897a204d8942184d894a104d8962084d891a418065ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15440100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c341f6c5010f85d00000004d8b5d004d8b6508498b3b4989fa4883ff05754e4d8b5b084d8d57e84c3b55107306ff5550ca4f7b4d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca4f774d89df49c743f80200000049894b084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca4f7b4d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca4f774d89df49c743f80200000049894b084d8913eb034989cb4c89d94d89e5483b65187306ff5558ca4f63e926ffffffe911fdfffff4|@5098,1,@16908,@11349|230,0,@5092 244,0,@12088 553,0,@12089 597,0,@12090 647,0,@12094 12088:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@5093,1,@16900| 12089:D3,200|483b65187305ff5558cd054989d64d8b6e3041f6c50175064d8b5e20eb044d8b5e284d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@5094,1,@16901| 12090:D6,360|483b65187305ff5558cd05524c8b34244d8b6e384983fd0175094d89f64d8b7628eb074d89f64d8b7630498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c8b2c244d8b6d204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004c893049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd68ed9f09000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15790000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15500000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@5095,1,@16903,@12093,@12092,@11349|163,0,@12091 12091:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@3428,1,@16902| 12092:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16905| 12093:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16904| 12094:D4,248|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a204d892e4c8b62184d89e54983fc01751048b808d5620800000000488b5d08ff234d8b6d00498b5d004d8d6ff04c3b6d107306ff5550ca0c404d89ef49c745f8010000004c8b62104d8965004d8d67f04c3b65107306ff5550ca0c604d89e749c74424f8010000004c8b5a084d891c24498d47e0483b45107306ff5550ca08704989c748c740f8030000004c8960104c8968084c89306a016a014989e0ff1545000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@5096,1,@16906,@11969|59,0,@1556 12095:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16912| 12096:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16910| 12097:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16911| 12098:D19,1952|483b65187306ff5558ca0d0152505341504c8b74240841f6c60175454d8b264d8b6e084d8b1c244c3b1d0208000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9720600004d8b364d8b2e4c3b2d9e07000075064d8b7610eb15488d64242048b87850620800000000488b5d08ff2341564c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1d5a07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bef8be640800000000eb174d8b364d8b2e4c3b2df90600000f856a0300004d8b761041564c8b7424084983fe037525ff342448ba08bf640800000000488b442428ff15c2060000488b1424ff12488d642408eb006a016a016a016a014c8b6c24484d8b55104d89ed4d8b75184d89ed4d8b6d0841564155488b442450488b5c24484c8b4424404c8d4c2410ff1570060000ff3424488b442410ff742418ff742428ff15520600004989c641564c8b34244d8b2e4983fd050f85e2000000488d6424084c8b7424084d89f54983fe0175074c8b742410eb324d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d89ed4d896e0849c7061f00000041564c8b7424484983fe037526ff74244048ba08bf640800000000488b442408ff15c2050000488b1424ff12488d642408eb006a016a014c8b7424784d8b5608488b442410488b5c24184c8b4424684989e1ff1588050000415d415e488d642410498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be789da009000000004c89304883c460c349c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c2449bd10cb6408000000004d892c244c8b6424084d89e54983fc017d0a488d642470e9860100004d89ed4d89ec4c3b2d920400000f8d6e0100004d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab415548ba20cd6408000000004c89f0488b1c24ff157f040000488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64240849be48c2620800000000eb5d4d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf41564c8b6c24104d89ee4983fd017d07488d642478eb624d89f64d89f54c3b357b0300007d4e4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948b8c0aa620800000000f348ab4156ff742420eb3f488d64247848b8d055620800000000488b5d08ff23488d64247048b8d055620800000000488b5d08ff23488d64242848b87850620800000000488b5d08ff23f6042401752f4c8b3424498b064d89f641ff7608488b5c24184c8b442410ff1518030000415d4c892c24483b65187303ff5558ebcb488d6424084c8b34244d8b6ef849c1e50849c1ed074983cd0149c7c6010000004983fd017563488d6424084d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000eb534d89eb4983eb024d89ea4983ea024c8b24244f8b5494fc4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d8914244d89dd4d89e6483b65187306ff5558ca0060e944ffffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15dd0100004989c4eb004c8b7424184d89f54983fe0175054d89e6eb2d4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e0849c7061f00000041564c8b7424584983fe037526ff74245048ba08bf640800000000488b442408ff156a010000488b1424ff12488d642408eb006a016a014c8bb424880000004d8b5608488b442410488b5c24284c8b4424784989e1ff152d010000415d415e488d642408498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424084c8970104c8b34244c897008488d64241849be80a3a009000000004c89304883c460c341f6c60175454d8b264d8b6e084d8b1c244c3b1db900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4f00000075094d8b7610e933f9ffff488d64242048b87850620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@5242,1,@16974,@15124,@15124,@12161,@12100,@12170,@13214,@12151,@12161,@12100,@13216,@12160,@12100,@15128,@15128,@15124,@15124|112,0,@788 153,0,@621 264,0,@5102 315,0,@5103 547,0,@5103 662,0,@12149 725,0,@5215 852,0,@5232 906,0,@1447 1106,0,@1263 1132,0,@657 1153,0,@657 1174,0,@621 1619,0,@5103 1759,0,@12155 1870,0,@828 1915,0,@621 12099:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@16913| 12100:D55,18968|483b65187305ff5558cd05524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9c6020000909090e908060000909090e9ba070000909090e9ee090000909090e907130000909090e990160000909090e91b170000909090e991190000909090e9171d0000909090e9c21e0000909090e931210000909090e919230000909090e9002d0000909090e9ac320000909090e9b0330000909090e9f0350000909090e98d360000909090e9a8360000909090e9253d0000909090e9943f0000909090e92f4100009090904c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930488b1c24ff15794a0000488d642408ff15664a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58346308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b70084d8b1e4d8b66084d8b6e104d8b56184d8b76204d8b4d004983f90175754d8b6d084c8d0d080000004f8d4c29ff41ffe1eb0ceb16eb20eb2aeb34eb3eeb4849bd50bf640800000000eb4649bd68bf640800000000eb3a49bd80bf640800000000eb2e49bd98bf640800000000eb2249bdb0bf640800000000eb1649bdc8bf640800000000eb0a49bde0bf640800000000eb564d8b6d084983fd05750c49bdf8bf640800000000eb404983fd03750c49bd18c0640800000000eb2e4983fd09750c49bd30c0640800000000eb1c4983fd07750c49bd50c0640800000000eb0a49bd88a06308000000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff1519470000ff150b4700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c3ff7008488b40104c8b742408498b5e08ff1557450000ff15494500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68c06408000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542410488b442408e82af9ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008ff7010488b4018ff15934300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c8b34244c8930488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15fb420000ff15ed4200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b6808ff7010ff70184c8b70204983fd01750c49bba0c0640800000000eb324983fd03750c49bbc0c0640800000000eb204d8b6d004983fd03750c49bbe0c0640800000000eb0a49bbf8c06408000000004d8b2b4e8d2c6d010000004983fd01750f49bc7018620800000000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d3d3f00000f87640800004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542428e87ff4ffff4989c64156f64424100175174c8b742410498b06488b542430e861f4ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15883f000048bae85c62080000000048c7c305000000ff15693f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b6c2420498b45004d89ed4d89ee41ff75084d89f641ff7610488b542440e87cf1ffff4989c64156f64424100175174c8b742410498b06488b542448e85ef1ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15753c000048bae85c62080000000048c7c305000000ff15563c00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542448488b442440e88eeeffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc48c16408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c448c3488d64241848b8f807620800000000488b5d08ff234c8b7008ff7010ff7018488b5424104c89f0e897ecffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10b66208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004156488b542418488b442410e8c5ebffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8b56208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004156488b542420488b442410e8f3eaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0b56208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c34c8b70084c8b681041f6c601744341f6c60174284983fe01750949c7c403000000eb0749c7c4010000004983fc037505e94d310000488d642408eb1a488d64240848b8385f620800000000488b5d08ff23488d64240848ba905d6308000000004c89f0ff15143400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008488b40104c8b284d89ee4983fd0d7512488b542408e86de8ffff4989c6e9e90000004983fe117512488b542408e855e8ffff4989c6e9d1000000488b542408e843e8ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c706010000004156488b442408488b5c2410ff15c2320000ff15b43200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c3488d6424084c8b70084d8b2e4d89ec4983fd07750b48b860c1640800000000c34d89e54983fc030f8523010000498b460848bae85c62080000000048c7c303000000ff150c3100004989c54d8b75004e8d2475010000004983fc01750f49bed89a630800000000e9ad0000004d89e34983c30e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15782f00000f879e0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbd89a63080000000048c7c10f000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0f48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff234983fd050f8523010000498b460848bae85c62080000000048c7c303000000ff15d72f00004989c54d8b75004e8d2475010000004983fc01750f49be089c630800000000e9ad0000004d89e34983c30a4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15432e00000f879e0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb089c63080000000048c7c10b000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0d48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff23498b460848bae85c62080000000048c7c303000000ff15ac2e00004989c54d8b75004a8d0c75010000004883f901750f49be98c1640800000000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d182d00000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646084141c646097241c6460a67498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff2348c7c001000000488b1c24ff159d2d0000488d642408ff158a2d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0626308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b7008ff7010ff7018488b5424104c89f0e8b4e0ffff4989c6415648bae85c620800000000488b44240848c7c303000000ff15b32b00004989c64d8b2e4e8d246d010000004983fc01750f49bdb0c1640800000000e9ae0000004d89e34983c3144c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15302a00000f87d10100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0c164080000000048c7c115000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1248d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542420488b442418e88bdfffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0c16408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c3488d64242048b8f807620800000000488b5d08ff234c8b7008ff7010ff7018488b5424104c89f0e83ddeffff4989c6415648bae85c620800000000488b44241048c7c303000000ff15342900004989c54c8b7424084983fe03750c49bc00c2640800000000eb0a49bcd8086208000000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be681d6208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be381d6208000000004c8930ff155f2800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8706408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c700010000004883c418c34c8b680841ff750041ff750841ff751041ff7518498b5d204d8b752841ff75304983fe01750c49be18c2640800000000eb0a49bed808620800000000415648c7c001000000ff15212700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b7424284d8b2e4a8d0c6d010000004883f901750f49bce017620800000000e99a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d692500000f87f10800004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c6442408224d89f6498d7608498d7c240948d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bde017620800000000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15a62400000f87210800004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c644350022418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c70607000000415648bae85c620800000000488b44242048c7c303000000ff15ea2400004989c44d8b34244e8d3475010000004983fe01750f49bd30c2640800000000e9b80000004d89f34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156e2300000f87dc0600004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049bc30c264080000000048c7c111000000498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442430ff15d323000049c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000900000049be48c264080000000048c7c111000000498d7608498d7d0848d1e9f3a441c6451028418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2458ff152c230000ff151e2300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000415649c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7203ff55504d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000f00000049be60c264080000000048c7c11d000000498d7608498d7d0848d1e9f3a441c645165b418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442448ff150a220000ff15fc2100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc80c26408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8c26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08886208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee0c26408000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080900000049c706010000004156488b542438488b442430e878d3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080500000048c700010000004883c438c3488d64245048b8f807620800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff234c8b68084c8b70104d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd10c3640800000000e98a00000049bd28c3640800000000eb7e49bd40c3640800000000eb7249bd58c3640800000000eb6649bd70c3640800000000eb5a49bd88c3640800000000eb4e4d8b6d084983fd01750c49bda0c3640800000000eb0a49bdb8c3640800000000eb2c4d8b6d084983fd01750c49bdd8c3640800000000eb0a49bdf0c3640800000000eb0a49bd10c46408000000004d8b65004a8d0c65010000004883f901750f49bc30c4640800000000e9a90000004989cb4983c3084c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15f81a00000f874c0400004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084c41c64424096f41c644240a6141c644240b64498d7508498d7c240c48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542418e871d0ffff4989c64156f64424100175174c8b742410498b06488b542420e853d0ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15ca1a000048bae85c62080000000048c7c305000000ff15ab1a00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bce8bc6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28c16408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b96208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3488d64240848b8f807620800000000488b5d08ff23488b400849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000500000041c645084c41c645094f41c6450a4f41c6450b5041c6450c28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15e8160000ff15da1600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b7008ff70104c8b6c2408498b5d104c89f0ff154c1600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c706010000004156488b542410488b442408e84acbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca0bc6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18ba6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0bf6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3488b40085ae863c9ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48c46408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3ff70084c8b7010ff701841ff364d8b2e49c7c40100000049c7c301000000e9ca0d00004c8b6808ff70104c8b70184d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd10c3640800000000e98a00000049bd28c3640800000000eb7e49bd40c3640800000000eb7249bd58c3640800000000eb6649bd70c3640800000000eb5a49bd88c3640800000000eb4e4d8b6d084983fd01750c49bda0c3640800000000eb0a49bdb8c3640800000000eb2c4d8b6d084983fd01750c49bdd8c3640800000000eb0a49bdf0c3640800000000eb0a49bd10c46408000000004d8b65004e8d1c65010000004983fb01750f49bc78c4640800000000e9b30000004d89da4983c20a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d1d1100000f871a0500004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba78c464080000000048c7c10b000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c240d48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542420e894c6ffff4989c64156f64424100175174c8b742410498b06488b542428e876c6ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15c510000048bae85c62080000000048c7c305000000ff15a61000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542428488b442420e8a6c3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90c46408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3488d64241048b8f807620800000000488b5d08ff23488b5808ff7010ff7018f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15790c000048bae85c62080000000048c7c305000000ff155a0c00004989c64156f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15050c000048bae85c62080000000048c7c305000000ff15e60b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc0c46408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8c46408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0c46408000000004c8930ff15250b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542418488b442410e873c0ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c34c8b70084c8b68104983fd03750c49bb08c5640800000000eb0a49bb20c56408000000004d8b2b4e8d2c6d010000004983fd01750f49bc7018620800000000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0df50800000f87140100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554c89f0488b5c2408ff15fe080000ff15f00800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d64240848b8f807620800000000488b5d08ff234c8b70084c8b68104c8d25080000004f8d64acfc41ffe4e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bd787a630800000000e9a000000049bd587b630800000000e99100000049bd387c630800000000e98200000049bd187d630800000000eb7649bdf87d630800000000eb6a49bdd87e630800000000eb5e49bdb87f630800000000eb5249bd9880630800000000eb4649bd7881630800000000eb3a49bd5882630800000000eb2e49bd3883630800000000eb2249bd1084630800000000eb1649bde884630800000000eb0a49bdc885630800000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15d7060000ff15c90600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34d3bdd0f828d0200004c89e048bae85c62080000000048c7c303000000ff15080500004989c6415648bae85c620800000000488b44240848c7c303000000ff15df0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc38c56408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18196208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50c56408000000004c8930ff151e0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542418488b442408e8a4b9ffff4989c64156488b542420488b442418e890b9ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64242048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9c0fcffff41f6c501754a4d8b5d004d8b65084d8b134c8b0c244d8b49184d3bd175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb049c7c5010000004983fd017542488d64240848ba905d6308000000004c89f0ff155e0100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d8b6d004d8b6500488b14244c8b5a184d3be30f85870000004d8b6d104d8b65004983fc0375374d8b75084889d2488d642408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70019000000e99eb6ffff488d64240848ba905d6308000000004c89f0ff15b60000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3488d64240848b87850620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5166,1,@16914,@11175,@11175,@10502,@10649,@10649,@12102,@12103,@12104,@12105,@10502,@10649,@10599,@10649,@10599,@10649,@10599,@12106,@12107,@12108,@10649,@10599,@12109,@12110,@12118,@12119,@12120,@10649,@12121,@10502,@10649,@10649,@12126,@12127,@10649,@10649,@10649,@12128,@12129,@11175,@10649,@10599,@10649,@10599,@12130,@12131,@12132,@12133,@12134,@12135,@12136,@12137,@12101|382,0,@1022 485,0,@1070 634,0,@1008 679,0,@2235 821,0,@5105 833,0,@5106 845,0,@5107 857,0,@5108 869,0,@5109 881,0,@5110 893,0,@5111 915,0,@5112 933,0,@5113 951,0,@5114 969,0,@5115 981,0,@3132 1225,0,@1022 1328,0,@1070 1477,0,@1008 1659,0,@5116 1782,0,@1070 1830,0,@1021 1875,0,@1022 1919,0,@1021 2239,0,@1022 2342,0,@1070 2491,0,@1008 2631,0,@5118 2649,0,@5119 2671,0,@5120 2683,0,@5121 2710,0,@195 2982,0,@5122 3045,0,@651 3066,0,@707 3157,0,@1412 3206,0,@866 3250,0,@1024 3295,0,@1021 3383,0,@866 3427,0,@1024 3472,0,@1021 3560,0,@5123 3604,0,@1382 3753,0,@5122 3816,0,@651 3837,0,@707 3928,0,@1412 3977,0,@866 4021,0,@1024 4066,0,@1021 4154,0,@866 4198,0,@1024 4243,0,@1021 4331,0,@5123 4375,0,@1382 4498,0,@5124 4546,0,@1024 4591,0,@866 4679,0,@1024 4723,0,@866 4807,0,@866 4932,0,@117 5044,0,@866 5088,0,@1357 5254,0,@866 5298,0,@1356 5463,0,@866 5508,0,@1355 5653,0,@866 5741,0,@866 5926,0,@723 5947,0,@2573 6109,0,@1070 6158,0,@1021 6202,0,@1022 6336,0,@1021 6381,0,@1022 6526,0,@1008 6667,0,@5125 6695,0,@707 6739,0,@3085 6876,0,@3085 6966,0,@117 6996,0,@707 7040,0,@3095 7177,0,@3095 7267,0,@117 7287,0,@707 7331,0,@5127 7540,0,@117 7618,0,@1022 7721,0,@1070 7870,0,@1008 7915,0,@2618 8019,0,@707 8067,0,@5128 8205,0,@5128 8341,0,@1031 8389,0,@866 8521,0,@5129 8606,0,@117 8650,0,@707 8692,0,@5131 8704,0,@123 8785,0,@248 8864,0,@246 8994,0,@4568 9156,0,@5132 9168,0,@123 9282,0,@189 9469,0,@189 9724,0,@707 9773,0,@5133 9932,0,@5133 10091,0,@5134 10365,0,@5135 10598,0,@5136 10647,0,@866 10735,0,@866 10823,0,@866 10911,0,@866 10999,0,@866 11043,0,@5139 11088,0,@866 11132,0,@1011 11177,0,@866 11265,0,@866 11309,0,@5140 11474,0,@1008 11603,0,@117 11624,0,@117 11645,0,@117 11760,0,@5142 11775,0,@5143 11787,0,@5144 11799,0,@5145 11811,0,@5146 11823,0,@5147 11845,0,@5148 11857,0,@5149 11879,0,@5150 11891,0,@5151 11903,0,@5152 11931,0,@5153 12212,0,@5122 12275,0,@651 12296,0,@707 12388,0,@1412 12436,0,@866 12481,0,@1024 12525,0,@1021 12613,0,@866 12658,0,@1024 12702,0,@1021 12790,0,@5123 12835,0,@1382 12980,0,@866 13105,0,@117 13627,0,@1409 13675,0,@1008 13720,0,@1389 13764,0,@866 13852,0,@1008 13897,0,@1431 14013,0,@1070 14062,0,@5154 14275,0,@5142 14290,0,@5143 14302,0,@5144 14314,0,@5145 14326,0,@5146 14338,0,@5147 14360,0,@5148 14372,0,@5149 14394,0,@5150 14406,0,@5151 14418,0,@5152 14446,0,@5156 14586,0,@5156 14737,0,@5122 14800,0,@651 14821,0,@707 14912,0,@1412 14961,0,@866 15005,0,@1024 15050,0,@1021 15138,0,@866 15182,0,@1024 15227,0,@1021 15315,0,@5123 15359,0,@1382 15524,0,@866 15569,0,@5157 15613,0,@866 15701,0,@866 15826,0,@117 15889,0,@651 15905,0,@707 15984,0,@651 16005,0,@707 16058,0,@5159 16106,0,@5160 16194,0,@5161 16301,0,@1070 16349,0,@866 16487,0,@5162 16499,0,@5163 16526,0,@195 16876,0,@117 17027,0,@2817 17042,0,@2824 17057,0,@2831 17072,0,@2838 17084,0,@2845 17096,0,@2852 17108,0,@2859 17120,0,@2866 17132,0,@2873 17144,0,@2880 17156,0,@2887 17168,0,@2894 17180,0,@2901 17192,0,@2908 17331,0,@1022 17434,0,@1070 17583,0,@1008 17715,0,@707 17743,0,@707 17801,0,@5164 17849,0,@202 17937,0,@5165 18064,0,@1070 18113,0,@866 18157,0,@1024 18202,0,@1021 18496,0,@105 18633,0,@2573 18793,0,@2573 18859,0,@621 12101:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16951|131,0,@1114 262,0,@866 12102:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16915|75,0,@1070 12103:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16916|131,0,@1114 262,0,@866 12104:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16917|75,0,@1070 12105:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16918|131,0,@1114 262,0,@866 12106:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc0c56408000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16919|131,0,@5168 262,0,@866 12107:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16920|75,0,@1070 12108:D3,336|483b65187305ff5558cd0953a8010f85290100004c8b30ff70084c8b2c244983fd017535488d642408498b065aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b06488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16921|131,0,@1114 262,0,@866 12109:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16922|75,0,@1412 12110:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16923,@12111,@12111|132,0,@1114 258,0,@866 12111:D10,1136|483b65187305ff5558cd014c8b304d89f54983fe050f85860200004c8b7008ff701048bae85c6208000000004c89f048c7c303000000ff157c0400004989c64d8b2e4e8d2c6d010000004983fd01750f49bc708b630800000000e9b30000004d89eb4983c3104c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15d90300000f87f70100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb708b63080000000048c7c111000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241048d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bd381d620800000000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15fd0200000f870e0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435005b418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff15ac020000ff159e0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d64240848b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff234d89ee4983fd010f858f010000ff7008488b4010ff15e50100004989c64156488b442408ff15cd010000ff15bf0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea88b6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be08886208000000004c89334883fb017508415d4883c408eb12488b0424ff15be0000004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34983fe03750b48b808c6640800000000c348b830bb620800000000c3f4000000000000ffffffffffffff01ffffffffffffff01|@5174,1,@16924,@12113,@12114,@12115,@12116,@12117,@12112,@10649|36,0,@707 82,0,@2954 222,0,@2954 294,0,@246 638,0,@117 659,0,@117 757,0,@1022 802,0,@866 846,0,@1038 891,0,@866 935,0,@1011 1011,0,@1022 1093,0,@5171 1104,0,@1399 12112:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba38c6640800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba38c6640800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@5167,1,@16930|48,0,@5173 102,0,@5173 144,0,@1114 270,0,@866 12113:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16925| 12114:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16926|75,0,@1070 12115:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba38c6640800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba38c6640800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc78c66408000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@5167,1,@16927|48,0,@5173 102,0,@5173 144,0,@5175 270,0,@866 12116:D3,144|483b65187305ff5558cd01a8017576488b40084883f801750b48b8a8c6640800000000c3e8d7ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0c66408000000004c8930c348c7c001000000c3f40000|@5167,1,@16928|27,0,@5177 77,0,@866 121,0,@5178 12117:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16929|75,0,@1412 12118:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16931|75,0,@1070 12119:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16932|131,0,@1114 262,0,@866 12120:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@16933| 12121:D8,856|483b65187305ff5558cd09504883fb01750d488d64240848c7c001000000c34c8b33ff730841ff3641ff760848bae85c620800000000488b44241848c7c303000000ff15480300004989c64d8b2e4a8d0c6d010000004883f901750f49bd98c1640800000000e99c0000004989cc4983c4064c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1db50200000f87960200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645084141c645097241c6450a67498d7608498d7d0b48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff154e020000ff15400200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b96208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64241041564c8b7424084983fe01750c48b808c7640800000000eb0748c7c001000000f644241001740948c7c301000000eb0a48bb68c76408000000004883fb0175054889c3eb09ff15010100004889c34883fb017508415d4883c408eb12488b0424ff15de0000004989c5488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080900000049c706010000004156488b4424104883c0027115488d64241848b8d006620800000000488b5d08ff23488b5c2408e8fcfcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64242048b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5188,1,@16934,@12123,@12124,@12125,@12122,@10649|46,0,@707 94,0,@5127 356,0,@1382 501,0,@866 571,0,@5180 606,0,@5184 748,0,@105 830,0,@117 12122:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16938,@12111,@12111|132,0,@1114 258,0,@866 12123:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16935| 12124:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@16936| 12125:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16937|75,0,@1412 12126:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16939|75,0,@1070 12127:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16940|131,0,@1114 262,0,@866 12128:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16941|75,0,@1070 12129:D3,336|483b65187305ff5558cd0953a8010f85290100004c8b30ff70084c8b2c244983fd017535488d642408498b065aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b06488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16942|131,0,@1114 262,0,@866 12130:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16943|75,0,@1070 12131:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16944|131,0,@1114 262,0,@866 12132:D3,4320|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e95b000000909090e95e000000909090e9a5010000909090e9ec020000909090e9e7040000909090e9ed050000909090e9f3060000909090e949080000909090e9530a0000909090e9a90b0000909090e9c20d0000909090e9d70e000090909048b8703b630800000000c34c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd50bf640800000000eb4649bd68bf640800000000eb3a49bd80bf640800000000eb2e49bd98bf640800000000eb2249bdb0bf640800000000eb1649bdc8bf640800000000eb0a49bde0bf6408000000004d8b75004e8d3475010000004983fe01750b48b808c8640800000000c34d89f44983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d900f0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd08c864080000000048c7c10b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd50bf640800000000eb4649bd68bf640800000000eb3a49bd80bf640800000000eb2e49bd98bf640800000000eb2249bdb0bf640800000000eb1649bdc8bf640800000000eb0a49bde0bf6408000000004d8b75004e8d3475010000004983fe01750b48b820c8640800000000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d390e0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd20c864080000000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234c8b70084983fe05750c49bef8bf640800000000eb404983fe03750c49be18c0640800000000eb2e4983fe09750c49be30c0640800000000eb1c4983fe07750c49be50c0640800000000eb0a49be88a06308000000004d8b2e4a8d0c6d010000004883f901750f49bd40c8640800000000e9a10000004989cc4983c4084c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1dfc0c00000f87470100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085441c645096541c6450a7341c6450b74498d7608498d7d0c48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b820c8640800000000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d360c0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd20c864080000000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234c8b70084983fe05750c49bd58c8640800000000eb1c4983fe03750c49bd70c8640800000000eb0a49bd88c86408000000004d8b75004e8d3475010000004983fe01750b48b820c8640800000000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d100b0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd20c864080000000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234c8b70084983fe03750c49bda0c8640800000000eb1c4983fe05750c49bdc0c8640800000000eb0a49bde0c86408000000004d8b75004e8d3475010000004983fe01750b48b820c8640800000000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dfa090000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd20c864080000000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd50bf640800000000eb4649bd68bf640800000000eb3a49bd80bf640800000000eb2e49bd98bf640800000000eb2249bdb0bf640800000000eb1649bdc8bf640800000000eb0a49bde0bf6408000000004d8b75004e8d3475010000004983fe01750b48b8f8c8640800000000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da30800000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428524d89f549d1ed42c6442801654d89f549d1ed42c64428026149d1ee42c64430036c8060ffbfc348b8f807620800000000488b5d08ff234c8b70084983fe05750c49bef8bf640800000000eb404983fe03750c49be18c0640800000000eb2e4983fe09750c49be30c0640800000000eb1c4983fe07750c49be50c0640800000000eb0a49be88a06308000000004d8b2e4a8d0c6d010000004883f901750f49bd40c8640800000000e9a10000004989cc4983c4084c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d570700000f87560100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085441c645096541c6450a7341c6450b74498d7608498d7d0c48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8f8c8640800000000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d910600000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428524d89f549d1ed42c6442801654d89f549d1ed42c64428026149d1ee42c64430036c8060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd50bf640800000000eb4649bd68bf640800000000eb3a49bd80bf640800000000eb2e49bd98bf640800000000eb2249bdb0bf640800000000eb1649bdc8bf640800000000eb0a49bde0bf6408000000004d8b75004e8d3475010000004983fe01750b48b810c9640800000000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d1b0500000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f807620800000000488b5d08ff234c8b68084c8b70104983fd05750c49bdf8bf640800000000eb404983fd03750c49bd18c0640800000000eb2e4983fd09750c49bd30c0640800000000eb1c4983fd07750c49bd50c0640800000000eb0a49bd88a06308000000004d8b65004a8d0c65010000004883f901750f49bb40c8640800000000e9a00000004989cc4983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15ca0300000f87600100004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d892341c643085441c643096541c6430a7341c6430b74498d7508498d7b0c48d1e9f3a4418063ffbf4983fe03750c49bd28c9640800000000eb0a49bd40c96408000000004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0ddd020000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234c8b70084983fe05750c49bd58c8640800000000eb1c4983fe03750c49bd70c8640800000000eb0a49bd88c86408000000004d8b75004e8d3475010000004983fe01750b48b810c9640800000000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc50100000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f807620800000000488b5d08ff234c8b70084983fe03750c49bda0c8640800000000eb1c4983fe05750c49bdc0c8640800000000eb0a49bde0c86408000000004d8b75004e8d3475010000004983fe01750b48b810c9640800000000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da00000000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5202,1,@16945|127,0,@2294 171,0,@5105 183,0,@5106 195,0,@5107 207,0,@5108 219,0,@5109 231,0,@5110 243,0,@5111 271,0,@5189 419,0,@5189 457,0,@117 506,0,@5105 518,0,@5106 530,0,@5107 542,0,@5108 554,0,@5109 566,0,@5110 578,0,@5111 606,0,@5190 754,0,@5190 792,0,@117 818,0,@5112 836,0,@5113 854,0,@5114 872,0,@5115 884,0,@3132 911,0,@5191 1105,0,@5190 1253,0,@5190 1291,0,@117 1307,0,@117 1333,0,@5192 1351,0,@5193 1363,0,@5194 1391,0,@5190 1539,0,@5190 1577,0,@117 1603,0,@5195 1621,0,@5196 1633,0,@5197 1661,0,@5190 1809,0,@5190 1847,0,@117 1896,0,@5105 1908,0,@5106 1920,0,@5107 1932,0,@5108 1944,0,@5109 1956,0,@5110 1968,0,@5111 1996,0,@5198 2197,0,@117 2223,0,@5112 2241,0,@5113 2259,0,@5114 2277,0,@5115 2289,0,@3132 2316,0,@5191 2510,0,@5198 2711,0,@117 2727,0,@117 2776,0,@5105 2788,0,@5106 2800,0,@5107 2812,0,@5108 2824,0,@5109 2836,0,@5110 2848,0,@5111 2876,0,@5199 3077,0,@117 3107,0,@5112 3125,0,@5113 3143,0,@5114 3161,0,@5115 3173,0,@3132 3201,0,@5191 3382,0,@5200 3394,0,@5201 3606,0,@117 3622,0,@117 3648,0,@5192 3666,0,@5193 3678,0,@5194 3706,0,@5199 3907,0,@117 3933,0,@5195 3951,0,@5196 3963,0,@5197 3991,0,@5199 4192,0,@117 12133:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16946|75,0,@1070 12134:D3,360|483b65187305ff5558cd0953a8010f853f0100004c8b30ff70084c8b2c244983fd017540488d6424084d8b365a498b06498b5e084d8b4610ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8b36488b542408498b06498b5e084d8b4610ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e808ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f400000000000000|@5167,1,@16947|153,0,@1114 284,0,@866 12135:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16948|75,0,@1070 12136:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@5167,1,@16949|131,0,@1114 262,0,@866 12137:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@16950|75,0,@1070 12138:D6,1160|483b65187306ff5558ca0d015250415048bae85c6208000000004889d848c7c303000000ff15860400004989c64d8b2e4e8d246d010000004983fc01750f49bdb0c9640800000000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15030400000f87e60300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0c964080000000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff157a030000ff156c0300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b742420498b5608488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8876208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0c26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8c26408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d64241848b8f807620800000000488b5d08ff23f400ffffffffffffff01|@5205,1,@16952,@12140,@12139,@10649|18,0,@707 64,0,@5204 202,0,@5204 344,0,@1382 612,0,@1008 656,0,@1010 701,0,@866 745,0,@5138 790,0,@866 878,0,@866 922,0,@868 967,0,@5139 1011,0,@866 1136,0,@117 12139:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16954,@12111,@12111|132,0,@1114 258,0,@866 12140:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16953|75,0,@1412 12141:D8,1688|483b65187305ff5558cd054989c6524d8b2e4d89ec4983fd010f859c05000041ff7608498b461041ff761841ff762048bae85c62080000000048c7c303000000ff158a0600004989c64d8b2e4e8d246d010000004983fc01750f49bdb0c9640800000000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15f70500000f87070500004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0c964080000000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442418ff157e050000ff15700500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000415648bae85c620800000000488b44241848c7c303000000ff15dc0400004989c64d8b2e4e8d246d010000004983fc01750f49bd08ca640800000000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15590400000f875c0300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb08ca64080000000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b742430498b5608488b442418ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8b46208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0c26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8c26408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c700010000004883c418c3488d64243048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff234d89e54983fc057513498b46084c8b3424498b5608488d642408ff224983fd070f8585000000498b46084c8b3424498b5e08488d642408ff15b80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28ca6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3498b4608498b5e104d8b46184c8b3424498b5610488d642408ff22f4000000000000ffffffffffffff01ffffffffffffff01|@5209,1,@16955,@12143,@10649,@12148,@12142,@10649|49,0,@707 92,0,@5204 230,0,@5204 372,0,@1382 450,0,@707 498,0,@5206 636,0,@5206 816,0,@866 860,0,@1345 905,0,@866 993,0,@866 1037,0,@5138 1082,0,@866 1170,0,@866 1214,0,@868 1259,0,@5139 1303,0,@866 1432,0,@117 1453,0,@117 1564,0,@5207 12142:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16962,@12111,@12111|132,0,@1114 258,0,@866 12143:D9,2504|483b65187305ff5558cd0953a8010f85910900004c8b30ff70084c8b2c244983fd010f8569040000488d64240841ff36498b460841ff761048bae85c62080000000048c7c303000000ff15b90900004989c64d8b2e4e8d246d010000004983fc01750f49bd089c630800000000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b151e0900000f87d40300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb089c63080000000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff15ad080000ff159f0800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700848c70019000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0876208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0c26408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8c26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424204d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64241848b8f807620800000000488b5d08ff2341ff36498b460841ff761048bae85c62080000000048c7c303000000ff153d0500004989c64d8b2e4e8d246d010000004983fc01750f49bd089c630800000000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b20400000f87840400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb089c63080000000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff1531040000ff15230400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542428498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700848c70019000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0876208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0c26408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8c26408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88ca6408000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e8cbf6ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64242048b8f807620800000000488b5d08ff23488d64240848c7c001000000c3f40000000000ffffffffffffff01ffffffffffffff01|@5167,1,@16956,@12145,@12146,@10649,@12147,@12144,@10649|58,0,@707 101,0,@3095 239,0,@3095 381,0,@1382 681,0,@1008 726,0,@1010 770,0,@866 815,0,@5138 859,0,@866 947,0,@5139 992,0,@866 1155,0,@117 1182,0,@707 1225,0,@3095 1363,0,@3095 1505,0,@1382 1805,0,@1008 1850,0,@1010 1894,0,@866 1939,0,@5138 1983,0,@866 2071,0,@5139 2116,0,@866 2262,0,@5210 2393,0,@866 2455,0,@117 12144:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16960,@12111,@12111|132,0,@1114 258,0,@866 12145:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16957|75,0,@1412 12146:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@5167,1,@16958,@12111,@12111|132,0,@1114 258,0,@866 12147:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16959|75,0,@1412 12148:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e8bc620800000000c3f4000000|@1032,1,@16961|75,0,@1412 12149:D3,96|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244d8b6d08488d6424084c8968104c89700848c7000d000000c3f400000000000000|@5214,1,@16963| 12150:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b820cb640800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b800cc640800000000c34983fe037d0b48b8708c620800000000c348b880cc640800000000c3f400000000|@5231,1,@16964|26,0,@1044 49,0,@5216 69,0,@1044 86,0,@5223 103,0,@1044 114,0,@5227 12151:D5,424|483b65187305ff5558cd0d52534c8b284d89ee4983fd01750d488d64241048c7c001000000c34d89f54983fe09750d488d64241048c7c001000000c34d89ee4983fd0375184c8b70084c8b40104d8b761848c7c301000000e9940000004983fe077537488b58084c8b40104883fb017d15488d64241048b83060620800000000488b5d08ff2348c7c001000000ff15350100004989c64156eb0d488d64241048c7c001000000c3f604240175374c8b2c244d8b75004d89ed41ff75084c8b6c2418498b5508498b06498b5e084c8b442410ff12415d4c892c24483b65187303ff5558ebc3488d64241848c7c001000000c341f6c60175364d8b66084989dd4983c5027115488d64241048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb017d15488d64241048b83060620800000000488b5d08ff2348c7c001000000ff156b0000004989c64156f604240175374c8b2c244d8b75004d89ed41ff75084c8b6c2418498b5508498b06498b5e084c8b442410ff12415d4c892c24483b65187303ff5558ebc3488d64241848c7c001000000c3f4000000|@5234,1,@16965,@12153,@12152|120,0,@731 267,0,@105 314,0,@731 12152:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d006620800000000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@741,1,@16967|73,0,@105 12153:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d006620800000000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@741,1,@16966|73,0,@105 12154:D3,320|483b65187306ff5558ca0d014989c64889d84c89c34d8b2e4983fd01750848c7c001000000c34d8b76084d8b2e4983fd050f85f10000004d8b76084c8b63f84d89e549c1e40849c1ec074983cc014d3bf4721048b81051620800000000488b5d08ff234e8b64b3fc4983fc0375414c8b204983fc05750848c7c001000000c349c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc05000000488b5208ff224983fc05750848c7c001000000c34c8b204983fc05753249c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c349c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc05000000488b5208ff2248b880cd640800000000488b5d08ff23f400000000000000|@5238,1,@16968|85,0,@625 146,0,@664 217,0,@664 267,0,@664 298,0,@5235 12155:D6,840|483b65187305ff5558cd05524c8b3424498b562048c7c001000000ff124989c64156f60424017415488d64241048b850ce640800000000488b5d08ff23f60424017415488d64241048b808ef620800000000488b5d08ff234c8b342441ff364c8b7424104d8b761841f6c60175454d8b264d8b6e084d8b1c244c3b1df002000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750949c7c601000000eb354d8b364d8b2e4c3b2d920200000f85520200004d8b6e104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e41f6c60175314d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08a7a009000000004d892eeb0a49be609b6208000000004156488b142448c7c001000000ff124c8b5c24184d8b73104d89f54d8b364983fe017514488d64240848bba89b620800000000e9760100004d89db4d89ee4d8b6d004983fd097514488d64240848bba89b620800000000e9520100004d89db4d89f54d8b364983fe030f85910000004d89db4d89ee4d89f54d8b76084d89db4d8b65104d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b14244d895520488d6424084c8b5424084d8955184d89db4d8b5b084d895d104d89650849bc98a7a009000000004d896500498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c70303000000e9ae0000004d89db4d89ee4d8b6d004983fd070f858b0000004d89db4d89f54d8b76084d89db4d8b65104d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b14244d895520488d6424084c8b5424084d8955184d89db4d8b5b084d895d104d89650849bce0f59209000000004d896500498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c70307000000eb0f488d64240848bba89b620800000000ff156d0000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d0000004883c410c3488d64241848b87850620800000000488b5d08ff23f400000000|@5214,1,@16972,@12159,@15167,@15167|47,0,@5239 74,0,@1711 296,0,@12156 311,0,@1143 362,0,@1145 398,0,@1145 516,0,@12157 678,0,@10792 741,0,@1145 821,0,@621 12156:D3,104|483b65187305ff5558cd054c8b720841f6c601753e4d8b264d8b6e084883f80175044c89e0c34989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140ebbc48b8c89d620800000000488b5d08ff23f400000000|@1187,1,@16969|49,0,@105 85,0,@1158 12157:D4,128|483b65187305ff5558cd056a016a01498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be48a8a009000000004c89334c8b4a104c8b52184c8b722041564c8d442408ff1541000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@1147,1,@16971,@10794|51,0,@12158 12158:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@1144,1,@16970| 12159:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@16973,@15146|74,0,@224 88,0,@15146 12160:D4,104|483b65187306ff5558ca090741516a016a014c8b7424284c8b6c242041565341554c89c349c7c0030000004c8d4c2418ff154a000000415d415e4d8b55004d8b65084d8b5d10415d4d8955004d895d084d8965104d89751848c7c001000000c21000f40000000000|@7050,1,@18157,@13218| 12161:D9,736|483b65187306ff5558ca090750534150415141524c8b6c24184d89ee4983fd017d0a488d642428e99a0200004d89f64d89f54c3b359f0200000f8d820200004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d89ec4d896e0849bd90ada009000000004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89e44d89650849bc80aea009000000004d896500498d5fd0483b5d107306ff5550ca00604989df48c743f8050000004c8b6424084c8963204c896b184c8973104c8b7424184c89730849be18afa009000000004c8933488b442428ff15ef0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424204d89663049c746280300000049bc88016308000000004d89662049c746180100000049c746100100000049bc00cc6508000000004d8966084d892e49c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004155498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048bba0d365080000000049b8a0d365080000000049c7c101000000ff150d010000ff74241048bba0d365080000000049b8a0d365080000000049c7c1010000004c8b542428ff15db0000004989c64d8b2e4983fd19756b498b4608488b5c24204c8b04244c8b4c2410ff15af0000004989c64156488b442438488b5c2410ff159200000048bab0d3650800000000488b1c24ff15760000004989c6488d6424084c8b6c24184c8b24244d896500488d6424284d89750848c7c0010000004883c410c3488d64243848b8e0d4640800000000488b5d08ff23488d64242848b8d055620800000000488b5d08ff23f400ffffffffffffff01|@6948,1,@18025,@13206,@13212,@12197,@13157,@12177,@12181|169,0,@12162 216,0,@12163 283,0,@12164 362,0,@1853 392,0,@6912 492,0,@6943 502,0,@6943 529,0,@6943 539,0,@6943 624,0,@6944 691,0,@5272 712,0,@657 12162:D3,200|483b65187305ff5558cd054989c64d8b2e4983fd050f85990000004d8b66084c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234f8b6ca5fc41f6c50175374d8b6d004d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70001000000c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c348b800cf640800000000488b5d08ff23f4000000|@5247,1,@16975|61,0,@625 182,0,@5243 12163:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@5248,1,@16976|78,0,@664 12164:D4,48|483b65187305ff5558cd054989d648ba90d0640800000000498b5e084d8b46104d8b4e184d8b5620ff251a000000f400|@5251,1,@18017,@12165|16,0,@5249 12165:D11,1712|483b65187306ff5558ca0d0752534150415141524d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24084d89ec4d896e104c8b6c24104c89ea4d896e084c8b5c24184d89dd4d891e41564c8b184d89de4983fb290f8561010000488d6424084c8b70084c8b58104983fb030f85a5000000498d5fc8483b5d107306ff5550ca04704989df48c743f8060000004c8b1c244c895b28488d6424084d89e44c896320488d6424084889d248895318488d6424084d89ed4c896b10488d6424084c8b2c244c896b08488d64240849bd90b6a009000000004c892b4c89f0ff15170600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e93c050000498d5fc8483b5d107306ff5550ca04704989df48c743f8060000004c8b1c244c895b28488d6424084d89e44c896320488d6424084889d248895318488d6424084d89ed4c896b10488d6424084c8b2c244c896b08488d64240849bde0b6a009000000004c892b4c89f0ff156a0500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e92c0400004d89f54983fe1f0f85230100004c8b7008ff70104c89f0ff150f050000488b5c24304c8b7308ff7424184156ff7424184c8b4424284c8b4c24404c8b542438ff15df0400004989c64156498d5fc8483b5d107303ff55504989df48c743f8060000004c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849be30b7a009000000004c8933488b442408ff15750400004989c44c8b34244d89f54983fe017524488d642440498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c438c34d89ee4983fd190f8515020000ff70086a016a016a016a016a016a016a016a014c8b742470498b5608488b442448488b5c244049b808d16408000000004989e14c8b542450ff12415c415b415a415e415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8975184d8955104d895d084d8965004983fe010f853e01000049c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d47e04c3b45107303ff55504d89c749c740f80300000049c74010010000004c8b34244d89700849c700010000006a016a016a016a016a016a016a016a014c8b742478498b5608488b442450488b5c24484989e14c8b542458ff12415e415d415c415b415a415941585f498d47b8483b45107306ff5550ca807f4989c748c740f808000000488978384c8940304c8948284c8950204c8958184c8960104c8968084c8930488b5c24304c8b04244c8b4c2418ff15650200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c420c3488d6424384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d6424184983fe110f85be000000488b40084889d2488d642408ff124989c64d8b2e4983fd017556488d6424104d8b6e084d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d6424104d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15990000004989c6eb00498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15260000004989c6eb00eb93f4000000000000|@5253,1,@16980,@12170,@12170,@12175,@12181,@13190,@13196,@13200,@12169|213,0,@12166 378,0,@12167 597,0,@12168 809,0,@5252 12166:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@16977| 12167:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@16978| 12168:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@16979| 12169:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@18012,@12181| 12170:D6,848|483b65187305ff5558cd014c8b284d89ee4983fd2975214c8b70084983fe01750b48b8c0aa620800000000c349c7c5010000004d89f4eb174983fe0d7501c348b860d1640800000000488b5d08ff2341f6c40175324d8b5424084d89eb4983c302711048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc841554c8b2c244d89ec4c3b2db10200007215488d64240848b8e8d1640800000000488b5d08ff234d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554c89f0ff157b02000048c7c3010000004c8b0424ff15620200004989c641564c8b342441f6c60175274d8b264d8b6e0841f6c40174114d89ee483b65187306ff5558ca0040ebdc49c7c601000000eb0749c7c6030000004983fe037511488d64240849c7c501000000e99f010000488b0424ff15fc0100004989c54d89ee41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750c49c7c401000000e9d80000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d8966104d896e0849bdb8bba009000000004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bd6803110a000000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004d8934244d8d77d84c3b75107306ff5550ca00104d89f749c746f80400000049c74618010000004c8b2c244d896e10488d64240849bd281b6208000000004d896e0849bdb804110a000000004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b24244d89e641806424ffbf498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7000d0000004883c408c3f40000ffffffffffffff01|@5261,1,@16982,@12173,@12174,@12172|35,0,@1263 65,0,@5254 101,0,@105 160,0,@5257 493,0,@12171 593,0,@224 607,0,@15146 709,0,@224 723,0,@15167 12171:D3,288|483b65187305ff5558cd054c8b72184d8b7486fc4c8b6a104989c441f6c50175724d8b55004d8b5d084983fc0175374d89d44d8d6fe04c3b6d107306ff5550ca05504d89ef49c745f8030000004d8965104d89750849c74500010000004d89ee4c8b6a08eb3d4d89e24983ea02711048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0570eb8848b8c89d620800000000488b5d08ff2341f6c50175614d8b5d004d8b65084883f80175264d89dd498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34989c34983eb02711048b8d006620800000000488b5d08ff234c89d84d89e5483b65187306ff5558ca0160eb9948b8c89d620800000000488b5d08ff23f40000000000|@5259,1,@16981|113,0,@105 149,0,@1158 232,0,@105 268,0,@1158 12172:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848baa8d2640800000000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@16985|29,0,@5260 12173:D5,184|483b65187305ff5558cd01a80175094c8b30488b4008eb0848c7c001000000c341f6c601754b4d8b264d8b6e084d8b14244d89d34c3b159d00000075234d89de4c3b358900000075074d8b742410eb2b48b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0140ebaf49bea89b6208000000004156e87effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@742,1,@16983,@15146,@15146|82,0,@621 115,0,@1145 12174:D3,128|483b65187306ff5558ca0901a80175664c8b28488b40084d8b75004983fe0d75454d8b750841ff75104d897498fc4883c302e8c9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f8d2640800000000488b5d08ff2348c7c001000000c3f400|@5265,1,@16984|104,0,@5262 12175:D14,808|483b65187306ff5558ca09035053415041514c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1d6103000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9fe0100004d8b364d8b2e4c3b2dfd02000075104d8b76104983fe030f84d6000000eb15488d64242048b87850620800000000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89700848c7001900000048bbc0d364080000000049b8c0d364080000000049c7c101000000ff1585020000ff342448bbc0d364080000000049b8c0d364080000000049c7c1010000004c8b542418ff15540200004989c64d8b2e4983fd19752c498b4608488b5c24104c8b4424084c8b0c24ff1528020000488d6424084c8b3424418066ffbf488d642418c3488d64242048b8e0d4640800000000488b5d08ff234c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1dda01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01753c48ba08bf640800000000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700848c70019000000ff1558010000eb584d8b364d8b2e4c3b2d41010000754e41ff761048ba08bf640800000000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c89700848c70019000000ff15f9000000488b1424ff12488d642408e94bfeffff488d64242048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1db400000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4a00000075134d8b76104983fe030f85acfdffffe966feffff488d64242048b87850620800000000488b5d08ff23f400000000000000|@5297,1,@17006,@15125,@15125,@12100,@15128,@12100,@15128,@12197,@13157,@12177,@15125,@15125|113,0,@788 164,0,@621 220,0,@5266 230,0,@5266 256,0,@5266 266,0,@5266 355,0,@5272 464,0,@5103 543,0,@5103 622,0,@621 731,0,@828 786,0,@621 12176:D3,32|483b65187305ff5558cd0148b8d0d3640800000000488b5d08ff23f400000000|@5271,1,@16986|13,0,@5267 12177:D4,352|483b65187306ff5558ca09034989c64983f9017d02eb754c3b0d3a0100007f6c4c89c84883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08534d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb1e4d89e34983eb10eb1048b870d5640800000000488b5d08ff234d3bdc75184d89cc4983c40e49c1ec034983cc0149c7c301000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca087bebbf4d3bdc724a4d8d67d04c3b65107306ff5550ca08634d89e749c74424f8050000004d896c24204d894c24184d8944241049895c240849bdb0c4a009000000004d892c244c89e34c89f0ff254c0000004d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca087beb8df400000000000000ffffffffffffff01|@6930,1,@18000,@12181|142,0,@5275 276,0,@12178 12178:D6,1152|483b65187305ff5558cd0552504c8b34244d8b264d89e54983fc1f0f85a10000004d89f54d89ee41ff75084d89f6498b4610488b5c2410ff156b0400004989c64156488b5c24184c8b43084889db4c8b4b104889db4c8b53184889db4c8b73204156488b442410ff15330400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f64d89ec4983fd190f85cc0100004d89f64d8b7608488d642408498b0641ff760841ff761841ff762041ff763041ff763849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89700849be70c9a009000000004d8930498d5fc8483b5d107306ff5550ca01014989df48c743f8060000004c8b7424204c8973284c8b7424304d8b6e184c896b204d89f64d8b6e204c896b184d89f64d8b6e104c896b104d89f64d8b76084c89730849beb8c9a009000000004c893348baf0d66408000000004c8b4c2410ff124989c64c8b2c244d8b6d00488d6424084983fd03750c49bc28a0620800000000eb0749c7c4010000004d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424084c8b1c244d895d30488d64240849c74528030000004c8b1c244d895d20488d6424084c8b1c244d895d18488d6424084d8965104c8b24244d896508488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c34d89f64d89e54983fc0f0f85a40000004d89f5498b45084d89ed4d89ee41ff75104d89f641ff76184c8b7424084d8b364983fe117571488b5c2418ff15b90100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084c8b24244d896610488d6424084d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64242048c7c001000000c34d89f64983fd110f85130100004d89f64d8b76084d8b2e4d89ec4983fd017505e9bd0000004d89e54983fc037514498b46084c8b742408498b5608ff12e9a00000004983fd0775174c8b742408498b561048c7c001000000ff12e983000000498b4e084883f9017d0a488d642410e99d0000004c8b6c24084d8b7518493bce0f8d860000004989cc49c1ec034983cc014d89ed4d8b75204d89f34d89e249d1ea4f0fb634164e8d3475010000004883e10f4883f97f720949c7c201000000eb1149c7c20200000048d1e949d3e24983ca014d0bf24d89dd49d1ee49d1ec4788742500498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c408c3488d64241048b848d6640800000000488b5d08ff23488d64241048c7c001000000c3f4|@5283,1,@16989,@12182,@12183,@12181|325,0,@12179 420,0,@12180 433,0,@5282 472,0,@1177 1124,0,@5279 12179:D3,32|483b65187305ff5558cd054c8b720849c7060300000048c7c001000000c3f400|@5278,1,@16987| 12180:D3,304|483b65187305ff5558cd054c8b722841f6c6010f85020100004d8b264d8b6e084883f8010f85c10000004d89e64d8b2e4d89ec4983fd01750848c7c001000000c34d89e54983fc03750a498b4608488b5208ff224983fd07750d488b521048c7c001000000ff22498b4e084883f9017d02eb684c8b7220493bce7d5f4989cc49c1ec034983cc014c8b72184d89f54d89e349d1eb4f0fb6341e4e8d3475010000004883e10f4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bf349d1ee49d1ec478874250048c7c001000000c348b848d6640800000000488b5d08ff234989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0540e9f4feffff48b8c89d620800000000488b5d08ff23f400000000|@5281,1,@16988|221,0,@5279 246,0,@105 285,0,@1158 12181:D4,64|483b65187305ff5558cd095053488b1424488b442408ff124989c64983fe017511488b4424085b488d642408ff2526000000488d642410498b06c3f400000000|@5289,1,@16996,@12188| 12182:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@16990,@12181| 12183:D8,920|483b65187306ff5558ca090753415041514152a8010f85660300004c8b30488b40084d8b2e4d89ec4983fd010f85b200000041ff761041ff761841ff76204c8b7424404156488b5c24384c8b4424304c8b4c24284c8b542420e8a2ffffff4989c64156488b442408488b5c2438ff155d0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24104d896e184c8b6c24184d896e1049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424404c8930c208004d89e54983fc050f859000000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8ebfeffff4989c64156488b442408488b5c2428ff159e0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c208004983fd070f85af00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e851feffff4989c641564c8b542438488b442408488b5c24204c8b4424184c8b4c2410ff15ed0100004c8b442438488b5c2410ff15d50100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c2080041ff761041ff76184c8b7424384156488b5c24304c8b4424284c8b4c24204c8b542418e89efdffff4989c64156488b442408488b5c2430ff15390100004989c34c8b6c24104d89ee4983fd017d0a488d642438e9df0000004d89f64c89f14c3b7424180f8dc90000004989cd49c1ed034983cd014c8b74244049d1ed4f0fb6342e4e8d3475010000004889c94989cc4883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01740c49bd28a0620800000000eb0749c7c5010000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d89e44d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c430c20800488d64243848b840d7640800000000488b5d08ff23488d64242048c7c001000000c20800f400000000000000|@5286,1,@16993,@12181,@12187,@12184,@12181,@12181|760,0,@1177 883,0,@5284 12184:D3,552|483b65187306ff5558ca090753415041514152a8010f85fd0100004c8b30ff700841ff76084d8b7610498b0641ff760841ff761841ff762041ff763041ff763849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89700849be90d2a009000000004d8930498d5fc8483b5d107306ff5550ca01014989df48c743f8060000004c8b7424204c8973284c8b7424484c8973204c8b7424404c8973184c8b7424504c8973104c8b7424584c89730849bed8d2a009000000004c893348baf0d66408000000004c8b4c2410ff124989c64c8b2c244d8b6d00488d6424084983fd03750c49bc28a0620800000000eb0749c7c4010000004d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424084c8b1c244d895d30488d64240849c74528030000004c8b1c244d895d20488d6424084c8b1c244d895d18488d6424084d8965104c8b24244d896508488d6424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706010000004156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e817feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f40000|@742,1,@16995|144,0,@12185 229,0,@12186 242,0,@5282 281,0,@1177 12185:D3,32|483b65187305ff5558cd054c8b720849c7060300000048c7c001000000c3f400|@5278,1,@16991| 12186:D3,304|483b65187305ff5558cd054c8b722841f6c6010f85020100004d8b264d8b6e084883f8010f85c10000004d89e64d8b2e4d89ec4983fd01750848c7c001000000c34d89e54983fc03750a498b4608488b5208ff224983fd07750d488b521048c7c001000000ff22498b4e084883f9017d02eb684c8b7220493bce7d5f4989cc49c1ec034983cc014c8b72184d89f54d89e349d1eb4f0fb6341e4e8d3475010000004883e10f4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bf349d1ee49d1ec478874250048c7c001000000c348b848d6640800000000488b5d08ff234989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0540e9f4feffff48b8c89d620800000000488b5d08ff23f400000000|@5281,1,@16992|221,0,@5279 246,0,@105 285,0,@1158 12187:D3,272|483b65187306ff5558ca0901a8010f85ed0000004c8b30488b40084d8b66084d8b5e104983fc017d05e9c30000004c3be30f8dba0000004d89e649c1ee034983ce0149d1ee4f0fb634304e8d3475010000004c89e14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01740c49bd28a0620800000000eb0749c7c5010000004d8d77e04c3b75107306ff5550ca09394d89f749c746f8030000004d895e104d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b840d7640800000000488b5d08ff2348c7c001000000c3f4000000000000|@742,1,@16994|132,0,@1177 243,0,@5284 12188:D9,3480|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e934010000909090e919020000909090e978020000909090e9e9020000909090e96a050000909090e9fa050000909090e9f8050000909090e963060000909090e961060000909090e969060000909090e9da060000909090e934070000909090e900080000909090e936090000909090e96b090000909090e9ca090000909090e9050a0000909090e9770a0000909090e9d80b0000909090e9320c0000909090e9760c0000909090ff7008ff7010488b401848bae8d7640800000000488b5c2410ff124989c6415648bae8d7640800000000488b442410488b5c2418ff124989c6415648bae8d7640800000000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70001000000c34c8b700841ff3641ff760841ff761041ff7618498b462048bae8d7640800000000488b5c2420ff124989c6415648bae8d7640800000000488b442420488b5c2428ff124989c6415648bae8d7640800000000488b442420488b5c2430ff124989c6415648bae8d7640800000000488b442418488b5c2438ff124989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424104d8966204d896e184c8b6c24204d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642438498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34c8b7008ff701048bae8d76408000000004c89f0488b5c2408ff124989c64156488b442408488b5c2410ff155c0b00004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c70005000000c34c8b7008ff7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c6415648bae8d7640800000000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70007000000c3ff7008ff7010ff70184c8b7020498b0641ff760841ff761048bae8d7640800000000488b5c2428ff124989c64156f644241001753c4c8b742410498b0648bae8d7640800000000488b5c2430ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b6c2410498b45004d89ed4d89ee41ff75084d89f641ff761048bae8d7640800000000488b5c2438ff124989c64156f644241001753c4c8b742410498b0648bae8d7640800000000488b5c2440ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648bae8d7640800000000488b442428488b5c2438ff124989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24104c8968204c8b2c244c896818488d6424084c8970104c8b7424284c89700848c700090000004883c438c34c8b7008ff7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c6415648bae8d7640800000000488b442410488b5c2418ff124989c6415648bae8d7640800000000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64242048c7000b000000c3488d642408c3ff70084c8b7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c64156488b442410488b5c2418ff154a0700004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424204c89700848c7000f000000c3488d642408c3488d64240848b8f8d7640800000000c34c8b7008ff7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c6415648bae8d7640800000000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70015000000c34c8b7008ff7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c70017000000c34c8b7008498b0641ff760841ff761041ff761841ff762041ff762841ff763041ff763848bae8d7640800000000488b5c2438ff124989c64156488b442428488b5c2440ff15c80500004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f8080000004c8b6424084d8966384c8b6424104d8966304c8b6424184d8966284c8b6424204d8966204d896e184c8b6c24304d896e104c8b6c24384d896e084c8b2c244d892e488d642448498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3ff70084c8b7010498b0641ff760841ff761048bae8d7640800000000488b5c2418ff124989c64156f644241001753c4c8b742410498b0648bae8d7640800000000488b5c2420ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c89700848c7001b0000004883c418c3488b4008488b1c24ff15e90300004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c34c8b7008ff70104c89f0488b5c2408ff159d0300004989c6415648bae8d7640800000000488b442408488b5c2410ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c3488b400848bae8d7640800000000488b1c24ff124989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3ff7008ff7010488b401848bae8d7640800000000488b5c2410ff124989c6415648bae8d7640800000000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424184c89700848c70023000000c3ff7008ff70104c8b7018498b0641ff760841ff761048bae8d7640800000000488b5c2420ff124989c64156f644241001753c4c8b742410498b0648bae8d7640800000000488b5c2428ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648bae8d7640800000000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b7424104c89700848c700250000004883c420c3ff70084c8b7010ff701848bae8d76408000000004c89f0488b5c2410ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64241048c70027000000c34c8b7008ff70104c89f0488b5c2408ff15a60000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c70029000000c34c8b7008ff701048bae8d76408000000004c89f0488b5c2408ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c7002b000000c3f400000000|@5290,1,@16997,@12190,@12191,@12194,@12195,@12196,@12189|218,0,@5287 240,0,@5287 267,0,@5287 376,0,@5287 398,0,@5287 425,0,@5287 452,0,@5287 597,0,@5287 703,0,@5287 728,0,@5287 838,0,@5287 875,0,@5287 1114,0,@5287 1151,0,@5287 1364,0,@5287 1473,0,@5287 1498,0,@5287 1525,0,@5287 1631,0,@5287 1747,0,@5288 1768,0,@5287 1793,0,@5287 1889,0,@5287 2012,0,@5287 2207,0,@5287 2244,0,@5287 2594,0,@5287 2675,0,@5287 2748,0,@5287 2770,0,@5287 2881,0,@5287 2918,0,@5287 3131,0,@5287 3231,0,@5287 3402,0,@5287 12189:D3,248|483b65187305ff5558cd0953a8010f85d10000004c8b28ff70084d8b750041ff750841ff3641ff7608498b461048bae8d7640800000000488b5c2420ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e84affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@17005|47,0,@5287 12190:D3,128|483b65187305ff5558cd094989c65341f6c601755b498b0641ff760848bae8d7640800000000488b5c2408ff124989c64156488b442408488b5c2410e8bfffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@742,1,@16998|30,0,@5287 12191:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@16999,@12192| 12192:D4,352|483b65187305ff5558cd094c8b304d89f54983fe01756aff7008ff7010ff7018488b402048bae8d7640800000000ff124989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8970204c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d64240848c70001000000c34d89ee4983fd05753a488b400848bae8d7640800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe077534488b4008ff15a40000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008ff7010488b401848bae8d7640800000000ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c70003000000c3f400000000000000|@5294,1,@17000,@12193|38,0,@5287 144,0,@5287 266,0,@5287 12193:D3,264|483b65187305ff5558cd0953a8010f85e50000004c8b30ff700841ff3641ff76084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048bae8d7640800000000488b5c2418ff124989c64d8b2e4983fd19757c4d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e84bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64242048b870d8640800000000488b5d08ff23488d64240848c7c001000000c3f400|@742,1,@17001|77,0,@5287 235,0,@5291 12194:D3,176|483b65187305ff5558cd0953a8010f858c0000004c8b30ff7008498b0641ff760848bae8d7640800000000488b5c2410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@742,1,@17002|35,0,@5287 12195:D3,200|483b65187305ff5558cd0953a8010f85a00000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001100000048bae8d7640800000000488b5c2408ff124989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b820d9640800000000488b5d08ff23488d64240848c7c001000000c3f4000000000000|@742,1,@17003|66,0,@5287 166,0,@5295 12196:D3,176|483b65187305ff5558cd0953a8010f858c0000004c8b30ff7008498b0641ff760848bae8d7640800000000488b5c2410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@742,1,@17004|35,0,@5287 12197:D13,712|483b65187306ff5558ca09034989c6534150498d47e8483b45107306ff5550ca00424989c748c740f8020000004c89700848c700190000006a016a0148c7c3010000004989e0ff15dc020000ff3424ff7424104c8b74242841f6c60175454d8b264d8b6e084d8b1c244c3b1db002000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9600100004d8b364d8b2e4c3b2d4c02000075104d8b76104983fe030f8496000000eb15488d64243048b87850620800000000488b5d08ff234c8b7424084d8b2e4983fd1b755c4d89f6498b46084d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b7424204d893048bac8d9640800000000488b5c2428ff15d10100004989c54c8b6424204d89e64d892c244d89f6418066ffbf58488d642428c3488d64243048b848b1650800000000488b5d08ff234c8b74242841f6c60175454d8b264d8b6e084d8b1c244c3b1d7901000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750d488b442408ff1526010000eb294d8b364d8b2e4c3b2d0f010000751f41ff7610488b442410ff15f6000000488b1424ff12488d642408e9e9feffff488d64243048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1db100000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4700000075134d8b76104983fe030f854afeffffe9c4feffff488d64243048b87850620800000000488b5d08ff23f400000000|@6757,1,@17887,@15125,@15125,@13079,@15128,@13079,@15128,@12198,@15125,@15125,@13076|178,0,@788 229,0,@621 300,0,@5298 356,0,@6746 529,0,@621 638,0,@828 693,0,@621 12198:D10,3528|488dbc2430ffffff483b7d187306ff5560ca0d0152534150ff30ff7008ff70104c8b68184c8b602049c7c3010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e415649c7c3010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e415649c7c6010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b5424384d8b52604d8956104c8b5424384d8b52684d89560849ba90fca009000000004d89164d89334983fc017d0a488d642440e9500100004c3b25ba0c00000f8d3e0100004c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948b8a894620800000000f348ab415649c7c4030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d8926415649c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564c8b7424204d8b264c8b7424204d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8b5c24204d89334c8b7424184d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849bba8946208000000004d891e4c8b5c24184d89334d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608030000004d8926415649c7c601000000eb15488d64244048b8d055620800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415649c7c6010000004c8b6c24604d8b6d4041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441566a016a014c8b7424184c3b7424107c1549c7c5010000004c8b7424784d8b7640e9190a00004c8b742478498b4640488b5c2418ff15ec0a00004989c64c89342448c744240801000000ff3424ff7424104c8b34244983fe01750f49be48c2620800000000e9940000004c8b34244983fe017e644c8b34244c3b354f0a00007d4d4c8b2c244c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000eb22488da42490000000eb08488da4249000000048b8d050640800000000488b5d08ff234c8b24244d3be57f27418066ffbf41564c8b34244d8b6ef849c1e50849c1ed074983cd0149c7c601000000e9440100004c8b6424204983ec014d03e57118488da4249000000048b8d006620800000000488b5d08ff234c8b5424284d2bd47118488da4249000000048b8d006620800000000488b5d08ff234983c2014c8b6424584d8b24244c8b5c24584d8b1b4983c3027118488da4249000000048b8d006620800000000488b5d08ff234c8b4c24584d89194c8b5c24504d8b0b4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b0849b9a8946208000000004d890b4c8b4c24504d89194d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308030000004d89234d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244f8964aefc4d89ec4983c4027118488da4249000000048b8d006620800000000488b5d08ff234d89e5483b65187306ff5558ca0060e98cfeffff4983fd010f851905000041564c8b74246841ff364c8b7424704d8b364983c6027118488da424a800000048b8d006620800000000488b5d08ff234c8b6c24704d8975004c8b7424684d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24684d8975004c8b74247041ff364c8b7424784d8b364983c6027118488da424b000000048b8d006620800000000488b5d08ff234c8b6c24784d8975004c8b7424704d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24704d897500488b442428488b5c24784c8b442470ff15bd0700004989c641564c8bb424880000004983fe01750949c7c601000000eb554d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049bea89e6208000000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442408488b5c2438ff15320700004889c34883fb017504415deb12488b0424ff15130700004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000049c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b9c24b00000004d8b5b604d895d0849bb2803a109000000004d895d004d892c244d8d4fe84c3b4d107306ff5550ca00404d89cf49c741f8020000004c8b6c24104d89690849c701050000004d8d57e84c3b55107306ff5550ca00424d89d749c742f80200000049c74208010000004d89326a016a016a0148ba30e16408000000004c8bb424c80000004d8b76404c8bac24c80000004d8b6d484c8ba424c80000004d8b6424504c8b9c24c80000004d8b5b5854ffb424a0000000ffb424a0000000ffb42490000000ffb424a0000000ffb424b0000000ff742470ffb42400010000ffb42400010000ffb424e8000000ff742470ffb424100100004156ffb424d80000004155ffb42490000000ffb424b800000041544153488b84244801000048bbc08662080000000049c7c003000000ff155d050000415c488d642408415e488d6424104983fe03750a488d6424084d89e6eb7a4d8d77e04c3b75107306ff5550ca00104d89f749c746f8030000004c8b6c24184d896e10415d4d896e0849c706370000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c8b6c24504d8b65004983fc017d0d488da424a0000000e91a0100004c3b25620400000f8d050100004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948b888fc640800000000f348ab4155ff7424084c89f048c7c30100000049b8a89b6208000000004c8b4c24084c8b542450ff15260400004c8b34244d8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be48c2620800000000eb5a4d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e95e4c89f748d1e9f348a5418066ffbf4883c4104c8b6c24504d8b6d0049c7c301000000eb6f488da424a000000048b8d055620800000000488b5d08ff234d89eb4983eb024d89ea4983ea024c8b24244f8b6494fc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d8914244d89dd4d89e6483b65187306ff5558ca0060e986faffff41f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd48c2620800000000e9c100000049c7c4010000004d89dd41f6c50175394d8b4d084d89e24983c2027118488da4249000000048b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25370200007c18488da4249000000048b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f8508010000418065ffbff644246001740949c7c403000000eb0749c7c4010000004983f4024983f4024983f40241564155ff742418488b9c2480000000488b8424980000004c8b5c24184c8bb424a00000004d8b56084c8bb424a00000004d8b4e104c8bb424a00000004d8b46184c8bb424a0000000498b7e204c8bb424a0000000498b76284c8bb424a0000000498b56304c8bb424a0000000498b4e384c8bac24a800000048894c2468488954247048897424784889bc24800000004c898424880000004c8b04244c898c24900000004989d9488b5c24084c899424980000004989c2488b4424104c899c24a00000004c89a424a80000004c896c24604883c460ff2500010000488d6424284d8b134d8b4b084f8954a5fc4d89e24983c2027118488da4249000000048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9aafeffff41f6c60175394d8b5e084d89ec4983c4027118488da4248000000048b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc14c8b7424184d2bf57118488da4248000000048b8d006620800000000488b5d08ff234983c6014c8b6c24784d8b6d404c892c244c89742408e98ff5fffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5481,1,@17251,@12444,@13062,@12201,@13064,@10958,@12443,@11075|225,0,@12199 325,0,@1098 455,0,@105 518,0,@1098 593,0,@657 633,0,@105 711,0,@105 839,0,@1447 972,0,@4394 1058,0,@105 1092,0,@105 1143,0,@105 1206,0,@1098 1324,0,@105 1402,0,@105 1512,0,@105 1665,0,@1164 1901,0,@12200 2006,0,@5354 2174,0,@998 2445,0,@5480 2474,0,@1145 2531,0,@1447 2659,0,@657 2836,0,@1447 2888,0,@105 2941,0,@1448 3332,0,@105 3398,0,@105 3452,0,@105 12199:D6,1624|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54d8b24244983fc010f85820300004d89ec4d8b6c240841ff7424104983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb8af620800000000e90e0200004d89f64983ee027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40da6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70756308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78da6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd03750b48b8b0db640800000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90dc6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@5323,1,@17007,@435,@433,@427|26,0,@1044 83,0,@105 117,0,@1308 146,0,@105 226,0,@105 281,0,@15183 326,0,@1311 374,0,@866 419,0,@5299 463,0,@866 508,0,@1315 596,0,@866 640,0,@2774 689,0,@1318 834,0,@866 879,0,@5301 964,0,@1044 988,0,@5309 1008,0,@1044 1029,0,@105 1256,0,@2144 1304,0,@1021 1349,0,@1987 1500,0,@866 1545,0,@5316 12200:D6,2320|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54d8b24244983fc010f85390600004d89ec41ff74240841ff7424104d8b6c241841ff7424204983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9bb0400004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea805110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9680300004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea805110a00000000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb8af620800000000e9150200004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea805110a00000000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893049bea805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98dd6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0dd6408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08de6408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40de6408000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78de6408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd03750b48b850df640800000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e06408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@5353,1,@17008,@435,@433,@427|26,0,@1044 93,0,@105 127,0,@1308 156,0,@105 206,0,@15182 240,0,@1308 269,0,@105 324,0,@15182 358,0,@1308 387,0,@105 442,0,@15182 478,0,@105 533,0,@15182 578,0,@1311 626,0,@866 671,0,@5324 715,0,@866 760,0,@1315 848,0,@866 892,0,@5326 937,0,@866 981,0,@1315 1069,0,@866 1114,0,@5328 1158,0,@866 1203,0,@1315 1291,0,@866 1335,0,@5330 1384,0,@1318 1529,0,@866 1574,0,@5332 1659,0,@1044 1683,0,@5339 1703,0,@1044 1724,0,@105 1951,0,@2144 1999,0,@1021 2044,0,@1987 2195,0,@866 2240,0,@5346 12201:D41,37256|488dbc24f0feffff483b7d187306ff5560ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e9ef010000909090e998050000909090e9580a0000909090e9940b0000909090e9f00e0000909090e912150000909090e913260000909090e90f270000909090e9a6350000909090e9db3a0000909090e9573f0000909090e945410000909090e9f9510000909090e925550000909090e959560000909090e9f4570000909090e91b5f0000909090e9e8620000909090e9d9690000909090e9156b0000909090e9e16c0000909090e9a37000009090904c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7628ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9fa8e00004c8b700841ff3641ff760841ff761041ff761841ff76204c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8b7424404d8b364983fe010f85820000004c8bb424f00000004d8b364c8bac24f00000004d8b6d004983c5027115488d64246048b8d006620800000000488b5d08ff234c8ba424f00000004d892c244c8bac24e80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e80000004d892c24e9960000004c8b7424404d8b364983fe03757f4c8bb424f00000004d8b364c8bac24f00000004d8b6d004983c5027115488d64246048b8d006620800000000488b5d08ff234c8ba424f00000004d892c244c8bac24e80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e80000004d892c24eb094c8b7424404d8b760841564c8bb424f800000041ff364c8bb424000100004d8b364983c6027115488d64247048b8d006620800000000488b5d08ff234c8bac24000100004d8975004c8bb424f80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24f80000004d8975004c8bac24e80000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24184d896e0849bd589fa109000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a01ffb42490000000ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c245001000049c7c0010000004c8b8c24e000000049c7c201000000e83dfaffff488d642430415d488d64241849c7c601000000e9f4850000ff7008ff70104c8b74242841ff76084c8b74243041ff76104c8b7424284d8b364983fe010f85820000004c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8ba424d80000004d892c244c8bac24d00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d00000004d892c24e9960000004c8b7424284d8b364983fe03757f4c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8ba424d80000004d892c244c8bac24d00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d00000004d892c24eb094c8b7424284d8b760841566a016a01ffb424f0000000ffb424f0000000ffb424e0000000ffb424f8000000ffb424f80000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000ff742410ffb42488000000ff742418ff7424184156415541544153415241514150575652515350ffb42400010000488b8424e0000000488b9c24f00000004c8d8424b80000004c8b8c24b00000004c8b9424a8000000ff15be8a0000488d642428415b415c4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64245048b8d006620800000000488b5d08ff234c8b9424c80000004d892a4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b5424104d8955104d8975084d895d004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b5424084d8955104c8b5424104d8955084d895d0041554d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24084d895d0849c745000500000041554d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ff742478ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c24f00000004c8b8424300100004c8b8c24e80000004c8b9424e0000000e8c2f5ffff488d642430415b488d642408415e488d6424184d8d67e84c3b65107306ff5550ca00484d89e749c74424f802000000415d488d6424104d896c240849c70424090000004c8bac24d00000004d895d004d8965084d89751048c7c0010000004883c438c298004c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7638ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9867f00004c8b70084c8b60104c8b58184c8b50204d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084d89750041554983fe030f850d020000488d6424084d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d895d184d8965104d89750849c74500090000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8e16408000000004d89661849bc18e26408000000004d8966104d896e0849c7060d000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e9cdf1ffff488da424900000006a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9c07b00004c8b700841ff3641ff760841ff761041ff761841ff76204c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742478ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243801000049c7c0010000004c8b8c24e00000004c8b942420010000e88aeeffff488d642430415b488d6424186a016a014c8b7424284983fe0175134c891c244c8b7424104c89742408e91d0200004c8bb424000100004d8b364c8bac24000100004d8b6d004983c5027115488d64247048b8d006620800000000488b5d08ff234c8ba424000100004d892c244c8bac24f80000004d8b65004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004c8ba424f80000004d892c24f644242801740d4c8b6c24284983fd017d1aeb1f4c8b6c24284d0fb66dff4e8d2c6d010000004983fd237407488b5c2428eb2048b8f854620800000000488b5c242841534156ff1553800000415e415b4889c3f6c30174134989dd4983ed014d6bed0270064983c501eb1848c7c00500000041534156ff151b800000415e415b4989c54d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d896a0849c702050000004c8bac24f00000004d8b6d004c8ba424f00000004d8b24244983c4027115488d64247048b8d006620800000000488b5d08ff234c8b8c24f00000004d89214d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184c8b5424104d895424104d896c240849c70424090000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c892c244c897424084c8b0424ff7424084c8bb4240801000041ff364c8bb424100100004d8b364983c6027118488da4248000000048b8d006620800000000488b5d08ff234c8bac24100100004d8975004c8bb424080100004d8b2e4d8d77e84c3b75107306ff5550ca00214d89f749c746f8020000004d896e0849c706050000004c8bac24080100004d8975006a016a014c8b7424404983fe0375124c89042448c744240801000000e9787100004c8bb424080100004d8b264c8bb424080100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424200100004d8b164c8bb424200100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00354d89f749c746f8020000004d896e0849c706050000004c8bac24180100004d8975004c8bb42410010000498b3e4c8bb424100100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24100100004d89750048c7c3010000004c8b742458e9446d0000ff7008ff7010ff70184c8b7424204d8b364983fe030f853b0500004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8b74244841ff7620ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c240001000049c7c0010000004c8b8c24c80000004c8b9424e8000000ff124989c6488d64243041566a016a016a01ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24280100004c8b84242001000049b9a8946208000000004c8b9424e0000000e805e8ffff488d642430415b488d6424184d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424084d89750849c74500070000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b34244d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c24280100004c8b84242001000049b9a8946208000000004c8b9424e0000000e837e6ffff488d642430415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c488d6424284d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d89342448c7c0050000004883e801486bc000700b488d6424204883c001eb1d488d64242048c7c00500000048c7c3010000004154ff1552780000415ca801740b4989c64983c6027002eb1448c7c3030000004154ff152a780000415c4989c64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500050000004c8bb424980000004d89264d896e0849c746100100000048c7c001000000c298004c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975004c8b7424384983fe03757f4c8bb424e00000004d8b364c8bac24e00000004d8b6d004983c5027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d892c244c8bac24d80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d80000004d892c24eb044c8b342441564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8b74245841ff7620ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c241001000049c7c0010000004c8b8c24c00000004c8b9424f8000000ff124989c6488d64243041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c24400100004c8b8424380100004c8b8c24e00000004c8b9424e8000000e8a6e0ffff488d6424304c8b2424ff7424106a016a016a014c8b7424184983fe03751c4c89242448c7442408010000004c8b7424604c89742410e9780300004c8bb424900000004983fe030f85a70100004c8bb424980000004d8b5e084c8bb424100100004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d8975104c8b7424504d89750849c74500370000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706030000004983fb01747d4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d895d0849c74500350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c7030d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8965084d895d004d89eceb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8bb424380100004d8b364c8ba424380100004d8b24244983c4027118488da424a800000048b8d006620800000000488b5d08ff234c8b9c24380100004d89234c8ba424300100004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24300100004d89234c892c2448c7442408010000004c89742410e9bf0100004c8bb424200100004d8b1e4c8bb424200100004d8b364983c6027118488da424a800000048b8d006620800000000488b5d08ff234c8bac24200100004d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c745000b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8965084d8975004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424584d8974240849c70424090000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d89661849c746100b0000004c8b6424604d89660849c706210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264c892c244c897424084c8b7424584c897424104c8b2424ff742408ff7424184d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e0849c7060500000041564d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424604d89750849c74500070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ffb424d8000000ffb42478010000ffb42478010000ffb42478010000ffb42478010000ffb424780100004c8bb424780100004c8bac24700100004c8ba424680100004c8b9c24600100004c8b9424580100004c8b8c24500100004c8b842448010000488bbc2440010000488bb42438010000488b942430010000488b8c2428010000488b9c2420010000488b842418010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842468010000488b9c24980100004c8b8424900100004c8b8c24e80000004c8b9424e0000000e871dbffff488d642430488b1c24ff7424104c8bb424d00000004983fe030f85220100004c8b34244983fe030f84140100004c8bb424d80000004d8b66084c8bb424500100004d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f8030000004d8975104c8b7424304d89750849c74500370000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d896e0849c706030000004983fc01747d4d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049895d084d896500eb034989dd498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933eb004883fb0175074c8b5c2438eb0e488b442438ff15b86c00004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f8020000004c8bb424a00000004d8974240849c70424090000004c8bb424d00000004983fe037511488da424e800000049c7c603000000eb254c8b7424584983fe03750b415e4881c4e0000000eb0f488da424e800000049c7c6010000004c8bac24980000004d895d004d8965084d89751048c7c001000000c298004c8b700841f6c6010f848b00000041f6c601747041f6c60174134c89f04883e801486bc00270064883c001eb104c89f348c7c005000000ff15dd6b0000a801740b4989c64983c6027002eb1048c7c303000000ff15b96b00004989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70005000000eb3b488d64242848b8385f620800000000488b5d08ff234d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70001000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25066b0000ff7008ff70104c8b74242841ff76104c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975006a016a016a014c8b7424304d8b364983fe130f85680300004c8b7424304d8b76084d8b364983fe070f85860100004c8bb424b80000004983fe01752649be40a06208000000004c8b6c24404c892c2448c7442408010000004c89742410e94d0100004c8bac24b00000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba89e6208000000004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049be40a06208000000004c8924244c896c24084c89742410e9c70100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c0010000004c8b8c24e00000004c8b942428010000e8f1d3ffff488d642430415c488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba89e6208000000004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea89b6208000000004c8924244c896c24084c89742410e9fd0500004c8b7424304d8b364983fe0f0f85220400004c8b7424304d8b6e0841f6c5017415488d64246848b808ef620800000000488b5d08ff234c8bb424a80000004983fe01750949c7c601000000eb204c8bb424a80000004d8b364d3bf5750949c7c603000000eb0749c7c6010000004983fe03752649be40a06208000000004c8b6c24404c892c2448c7442408010000004c89742410e96c0300004d0fb675ff4e8d3475010000004981e6ff0100004983fe010f844a0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba89e6208000000004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea89b6208000000004c8924244c896c24084c89742410e9040200004d8b75f849c1e60849c1ee074983ce014983fe030f82040200004d8b5d0041f6c3017415488d64246848b808ef620800000000488b5d08ff234d0fb663ff4e8d2465010000004981e4ff0100004983e4074983fc050f85ae0100004983fe0375424d8d77e84c3b75107306ff5550ca00084d89f749c746f8020000004d895e0849c706010000004c8b6c24404c892c2448c7442408010000004c89742410e9610100004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049baa89e6208000000004d8956084d892e4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000004c8924244c896c24084c89742410e9f3010000488d64246848b838e2640800000000488b5d08ff23488d64246848b8b8e2640800000000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842420010000488b9c244801000049c7c0010000004c8b8c24e80000004c8b942430010000e8efcdffff488d642438415c488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba89e6208000000004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea89b6208000000004c8924244c896c24084c89742410ff3424ff742410ff7424204c8b6c24684983f5024c8b6424684983f4024d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100300000049c746080100000049c7060100000041564c8b6c24704983f5024d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180300000049c746100300000049c746080100000049c7060100000041566a016a016a01ffb424e0000000ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350ffb42458010000ffb424e8000000ffb424e8000000488b842450010000488b9c24d00000004c8b8424100100004c8d8c24d80000004c8b942478010000ff15275e0000488d642430ff3424ff742410ff7424204c8bb424a80000004983fe03751d4c8bb424b000000041ff760849c7c6010000004c8b6c2408e9794b00004c8b7424084983fe0175074c8b6c2448eb13488b442448488b5c2408ff15c25d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f805000000415c4d89662049c74618010000004c8b6424384d8966104d896e084c8b6c24704d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450017000000f6442478010f85a2000000488d6424084c8b7424704d8b1e4c8bb424280100004d8b264c8bb424280100004d8b364983c6027118488da424b000000048b8d006620800000000488b5d08ff234c8b9424280100004d89324d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb51488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9774900004c8b70084d8b2e4d89ec4983fd070f85cb0000004c8b7424784983fe0175504c8b7424684983fe017515488d64242848b808d5620800000000488b5d08ff234c8b7424684d8b364d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70001000000eb2b4c8b7424704d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25705b00004d89e54983fc0375154d8b6e0849c7c6010000004c8b642478e95b4700004983fd010f85d90200004d8b5e084c8b7424184d8b6e084c8b7424504d3bde7d0a4c8b742448e9614600004c8b7424084d8b364983fe010f85820000004c8bb424b80000004d8b364c8ba424b80000004d8b24244983c4027115488d64242848b8d006620800000000488b5d08ff234c8b9424b80000004d89224c8ba424b00000004d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004c8b9424b00000004d8922e9960000004c8b7424084d8b364983fe03757f4c8bb424b80000004d8b364c8ba424b80000004d8b24244983c4027115488d64242848b8d006620800000000488b5d08ff234c8b9424b80000004d89224c8ba424b00000004d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004c8b9424b00000004d8922eb094c8b7424084d8b76084c8b6424504d2bdc7115488d64242848b8d006620800000000488b5d08ff234983c3014c8b6424404d8b6424f849c1e40849c1ec074983cc014d3bdc7215488d64242848b89051620800000000488b5d08ff234c8b6424404f8b5c9cfc4d8b234d8b5b084983ed014d03dd7115488d64242848b8d006620800000000488b5d08ff234d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89651849c745100100000049c745080100000049c745000b0000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f802000000415b4d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c298004d8b6e084c8b7424184d8b5e084c8bb424980000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81051620800000000488b5d08ff234c8bb424980000004f8b74aefc4d8b264d89e54983fc01757b4d8b66084d8b6e104d89de4d2bf57115488d64242848b8d006620800000000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8975104d89650849c74500030000004c8bb424c0000000415c4d89264d896e0849c746100100000048c7c0010000004883c420c298004983fd05756f4d8b76084d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff251f570000488d64242848b830e3640800000000488b5d08ff23ff7008ff70104c8b74242841ff76086a016a016a01ff742450ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e36408000000004c8b9424f8000000e89ac3ffff488d6424305b415e488d6424084d8b264d89e54983fc030f85920200004d8b66084d8b6e104c8b7424204d8b364983fe01757d4c8bb424d00000004d8b364c8b9c24d00000004d8b1b4983c3027115488d64244048b8d006620800000000488b5d08ff234c8b9424d00000004d891a4c8b9c24c80000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424c80000004d891ae9910000004c8b7424204d8b364983fe03757a4c8bb424d00000004d8b364c8b9c24d00000004d8b1b4983c3027115488d64244048b8d006620800000000488b5d08ff234c8b9424d00000004d891a4c8b9c24c80000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424c80000004d891aeb094c8b7424204d8b7608415b4d2bdd7115488d64243848b8d006620800000000488b5d08ff234983c3014c8b2c244983ed014d03dd7115488d64243848b8d006620800000000488b5d08ff234983fb010f8c0d0100004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d896518415c4d89651049c745080100000049c745000b0000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24084d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424c80000004d89264d896e0849c746100100000048c7c0010000004883c430c29800488d64243848b8e8e3640800000000488b5d08ff23488d6424084983fd090f85a90000004d8b7608415d4983ed014d6bed087115488d64243048b8d006620800000000488b5d08ff23488d6424104983c5014d8d47d04c3b45107306ff5550ca08604d89c749c740f8050000004d89682049bd58e46408000000004d89681849c74010010000004d89700849c70007000000584c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff2593520000488d64243848b868e4640800000000488b5d08ff234c8b7424084d8b364983fe010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e9960000004c8b7424084d8b364983fe03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb094c8b7424084d8b76084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410710000004d8974240849c70424250000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f802000000415b4d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c29800ff7008ff7010ff70184c8b7424304d8b2e4c8b7424304d8b66084c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8b9c24d80000004d89334c8bb424d00000004d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706050000004c8b9c24d00000004d89334c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24c80000004d89334c8bb424c80000004d8b364c8b9c24c80000004d8b1b4983c3027115488d64245048b8d006620800000000488b5d08ff234c8b9424c80000004d891a6a016a014c8b5c24484983fb030f85fb0000004c8b9c24f00000004d8b134c8b9c24f00000004d8b1b4983c3027115488d64246048b8d006620800000000488b5d08ff234c8b8c24f00000004d89194c8b9c24e80000004d8b0b4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b0849c703050000004c8b8c24e80000004d89194c8b9c24f00000004d8b1b4c8b8c24f00000004d8b094983c1027115488d64246048b8d006620800000000488b5d08ff234c8b8424f00000004d89084c8b8c24e80000004d8b014d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004c8b8424e80000004d89084c8914244c895c2408eb134c8b5c24184c891c244c8b5c24184c895c2408ff3424ff7424104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703070000004d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d8972104c8b7424204d89720849c702090000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89560849c706050000004c8b9424000100004d8b124c8b8c24000100004d8b094983c1027115488d64247048b8d006620800000000488b5d08ff234c8b8424000100004d89084c8b8c24f80000004d8b014d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004c8b8424f80000004d89084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c7012d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b4424484d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564983c4047115488d64247848b8d006620800000000488b5d08ff234d8d5ff04c3b5d107306ff5550ca00304d89df49c743f8010000004c8b7424284d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42498000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c24e800000049c7c0010000004c8b8c24e00000004c8b9424f0000000e8c0b8ffff488d642430415e488d642408415d488d6424186a016a014c8b6424684983fc010f85e80100004983fd010f85cc0100004c8bac24f80000004d8b65004c8bac24f80000004d8b6d004983c5027118488da4248000000048b8d006620800000000488b5d08ff234c8b9c24f80000004d892b4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004c8bac24100100004d8b55004c8bac24100100004d8b6d004983c5027118488da4248000000048b8d006620800000000488b5d08ff234c8b8c24100100004d89294c8bac24080100004d8b4d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500050000004c8b8c24080100004d89294d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745002b0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c7020d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8975084d8955004d89ee4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084d895d004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264c892c244c89742408eb0d4c89342448c744240801000000e9260200004983fd010f850f0200004c8bac24100100004d8b6d004c8ba424100100004d8b24244983c4027118488da4248000000048b8d006620800000000488b5d08ff234c8b9c24100100004d89234c8ba424080100004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24080100004d89234d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704242b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d897424084d892c244c8b7424704d8b5e084c8bac24e80000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104c8b6c24184d896e0849c706370000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004983fb01747b4d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d895e0849c706350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e4d89f4eb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c89342448c744240801000000eb0d4c89342448c7442408010000004c8b1c24ff7424084c8bb424180100004d8b264c8bb424180100004d8b364983c6027118488da4248800000048b8d006620800000000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706050000004c8bac24100100004d8975004d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d89660849c706050000004c8bac24f80000004d8b55f849c1e20849c1ea074983ca014c8b6c24484d3bea7218488da4248800000048b80057620800000000488b5d08ff234c8bac24f80000004c8b5424484f897495fc4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004c8b6c24184d896e0849c7060500000041564c8bb424200100004d8b2e4c8bb424200100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8b9424200100004d89324c8bb424180100004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89560849c706050000004c8b9424180100004d89324d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b6424404d89660849c706070000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ffb424a8000000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000488b8424e8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842440010000488b9c24680100004c8b8424600100004c8b8c24e80000004c8b9424e0000000e82db1ffff488d642430415c488d642408415e488d6424104c8b6c24684d8b6d004983fd010f85810000004c8bac24180100004d8b6d004c8b9c24180100004d8b1b4983c3027118488da4248800000048b8d006620800000000488b5d08ff234c8b9424180100004d891a4c8b9c24100100004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424100100004d891ae9960000004c8b6c24684d8b6d004983fd03757e4c8bac24180100004d8b6d004c8b9c24180100004d8b1b4983c3027118488da4248800000048b8d006620800000000488b5d08ff234c8b9424180100004d891a4c8b9c24100100004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424100100004d891aeb094c8b6c24684d8b6d084c8b5c24704983fb017505e9180100004983fe010f850e0100004c8b7424784d8b56084c8bb424f00000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8973104c8b7424184d89730849c703370000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d895e0849c706030000004983fa0174784d8d5fe04c3b5d107306ff5550ca00744d89df49c743f80300000049c74310010000004d89530849c703350000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c7020d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d8913eb034d89e34d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d893424eb004c8b34244983fe01750a488d6424404d89e3eb51415e4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334883c4384d8d77e84c3b75107306ff5550ca00284d89f749c746f802000000415c4d89660849c706090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d8974241849c74424100b0000004d896c240849c70424210000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706090000004c8bac24d80000004d8965004d8975084c8b7424284d89751048c7c0010000004883c440c29800488b4008ff70104c8b34244983fe010f85e2000000488d64240849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b34244d8930488b942490000000488b9c2488000000ff124989c64c8b2c244d8975004c8b3424418066ffbf4d8d47e84c3b45107303ff55504d89c749c740f802000000415e4d89700849c70001000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25cd3e0000488b942490000000488b9c248800000049c7c001000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060f0000004156488b442408ff156e3e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062b000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e940aaffff488da424900000004c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e944260000ff70084c8b74242041ff76084c8b74242841ff76104c8b7424304d8b364983fe017515488d64244048b8e8e4640800000000488b5d08ff234d8b3641ff3641ff760841ff76104c8b7424384d8b364983fe010f85820000004c8bb424e80000004d8b364c8bac24e80000004d8b6d004983c5027115488d64245848b8d006620800000000488b5d08ff234c8ba424e80000004d892c244c8bac24e00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e00000004d892c24e9960000004c8b7424384d8b364983fe03757f4c8bb424e80000004d8b364c8bac24e80000004d8b6d004983c5027115488d64245848b8d006620800000000488b5d08ff234c8ba424e80000004d892c244c8bac24e00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e00000004d892c24eb094c8b7424384d8b76084156488b9c24f00000004c8b8424e8000000488b442430ff15b73900004989c64156ff742438ff742408ff742450e92f200000ff7008ff70104c8b74242841ff76086a016a01ffb424e0000000ffb424e0000000ffb424d0000000ffb424e8000000ffb424e80000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ffb42480000000ff742420ff7424204156415541544153415241514150575652515350488b8424d8000000488b9c24f80000004c8b8424e00000004c8d8c24b80000004c8b9424b0000000ff15a2380000488d642428ff3424ff7424104c8b342441ff76084c8b7424284c3b34240f847e0400004c8b34244c3b7424280f8c5a0400004c8bb424f80000004d8b2e4c8bb424f80000004d8b364983c6027115488d64246848b8d006620800000000488b5d08ff234c8ba424f80000004d8934244c8bb424f00000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424f00000004d8934244c8b7424484d8b364983fe010f85820000004c8bb424f80000004d8b364c8ba424f80000004d8b24244983c4027115488d64246848b8d006620800000000488b5d08ff234c8b9c24f80000004d89234c8ba424f00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24f00000004d8923e9960000004c8b7424484d8b364983fe03757f4c8bb424f80000004d8b364c8ba424f80000004d8b24244983c4027115488d64246848b8d006620800000000488b5d08ff234c8b9c24f80000004d89234c8ba424f00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24f00000004d8923eb094c8b7424484d8b760841564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a016a01ffb42488000000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c24f80000004c8b8424400100004c8b8c24e00000004c8b942400010000e867a3ffff488d642430415a415d415e488d6424084983fe0375084d89d3e9260100004d8d67d84c3b65107306ff5550ca00644d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f8020000004d89650849c745000d0000004c8b5c24084c2b5c24307115488d64247048b8d006620800000000488b5d08ff234983c3014d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c7442410010000004d895c240849c70424350000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d892b4d8d67e84c3b65107306ff5550ca00484d89e749c74424f802000000415d4d896c240849c70424090000004c8bac24000100004d895d004d8965084d89751048c7c0010000004883c468c29800488d64246848b870e5640800000000488b5d08ff23488d642408ff742458ff742430ff742410ff742460ff742460ff742430ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d000000048898424d0000000488b44245848899c24d8000000488b5c245048898c24e000000048899424e8000000488b5424604889b424f00000004889bc24f80000004c898424000100004c8b4424484c898c24080100004c8b4c24404c899424100100004c8b5424384c899c24180100004c89a424200100004c89ac24280100004c8b34244c89b424300100004c8b7424084c89b424380100004c8b7424104c89b424400100004c8b7424184c89b424480100004c8b7424204c89b424500100004c8b7424284c89b424580100004c8b7424304c89b424600100004881c4c8000000e92fa0ffff488d642478ff70084c8b74242041ff76104c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742458ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c0010000004c8b8c24e00000004c8b942400010000e8849effff488d642430415d488d6424184d8d67e84c3b65107306ff5550ca00204d89e749c74424f802000000415e4d8974240849c7042431000000f60424017535415e4d8b1e4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060b0000004883c410eb2b488d6424184d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b34244d8b364983fe010f8580000000488d6424204c8bb424900000004d8b364c8bac24900000004d8b6d004983c502711048b8d006620800000000488b5d08ff234c8b9c24900000004d892b4c8bac24880000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24880000004d892be9940000004c8b34244d8b364983fe03757d488d6424204c8bb424900000004d8b364c8bac24900000004d8b6d004983c502711048b8d006620800000000488b5d08ff234c8b9c24900000004d892b4c8bac24880000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24880000004d892beb0a415e4d8b76084883c4184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424980000004d89264d896e0849c746100300000048c7c001000000c29800ff7008ff7010488b40184c8b74242841ff76086a016a014c8b304983fe130f85290100004c8b68084d89ee4d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983fd030f85fe0000004d8b6e084c8bb424c00000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64245048b81051620800000000488b5d08ff234c8bb424c00000004f8b74aefc4d8b264d89e54983fc0175514d8b6e084d8b66104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424104d8966104d896e0849bd90a0a109000000004d892e4c8b6c24284c892c244c89742408eb444983fd0575434d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40a1a109000000004d892e4c8b6c24284c892c244c89742408e9ee010000488d64245048b8c8e6640800000000488b5d08ff234c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742470ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b9c243801000049c7c0010000004c8b8c24e80000004c8b942420010000e87299ffff488d642438415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c4d89660849bc08a2a109000000004d89264c892c244c89742408ff3424ff7424104c8b74242841ff364c8b7424384d8b364983fe2b75414c8b7424384d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d89660849c706010000006a016a0141554156e9080d00006a016a014c8b7424484d8b364983fe130f85330100004c8b7424484d8b76084d8b364983fe05750949c7c603000000eb0749c7c6010000004983fe030f85070100004c8b7424484d8b76084d8b6e084c8bb424e80000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64247848b81051620800000000488b5d08ff234c8bb424e80000004f8b74aefc4d8b264d89e54983fc0175514d8b6e084d8b66104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424384d8966104d896e0849bdd0a2a109000000004d892e4c8b6c24204c892c244c89742408eb444983fd0575434d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80a3a109000000004d892e4c8b6c24204c892c244c89742408e9f8010000488d64247848b8f8e7640800000000488b5d08ff234c8bb4240801000041ff364c8bb424100100004d8b364983c6027118488da4248000000048b8d006620800000000488b5d08ff234c8bac24100100004d8975004c8bb424080100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24080100004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb42498000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c245801000049c7c0010000004c8b8c24e00000004c8b942410010000e8e895ffff488d642430415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c4d89660849bc20a4a109000000004d89264c892c244c897424084158415c4c8bb424f80000004c8bac24f000000041564155ff742418415448c7c00100000048c7c3010000004c8b4c24204c8b542450ff15a12700004989c6488d642448e9dd0800004c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9370700004d8d77d84c3b75107305ff5550cd014d89f749c746f80400000049bdf8e16408000000004d896e1849bd18e26408000000004d896e104989460849c7060d000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e94c92ffff488da42490000000ff70084c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b760841564c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424084d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004156ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350ffb424e8000000ffb424c0000000488b8424d800000048c7c3010000004c8b8424e00000004c8b8c24000100004c8b9424b8000000ff155d2100004989c5488d6424284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849bec0e86408000000004d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424104d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c298004c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a014c8b74244041ff7640ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d64242041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff157a1e0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15521e0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000584c89f34c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25e11d0000f6442408010f85930100004c8b74240841ff364c8b74241041ff76084c8b74241041ff364c8b74241841ff76086a016a016a01ffb424b8000000ffb42458010000ffb42458010000ffb42458010000ffb42458010000ffb424580100004c8bb424580100004c8bac24500100004c8ba424480100004c8b9c24400100004c8b9424380100004c8b8c24300100004c8b842428010000488bbc2420010000488bb42418010000488b942410010000488b8c2408010000488b9c2400010000488b8424f8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c247801000049c7c00100000049b9e8e86408000000004c8b9424e0000000e8a08affff488d642430415d415c488d6424104d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d488d6424084c8924244c896c2408483b65187303ff5558e962feffff4c8b34244d8b364c89742410415e4d8b76084c897424104c8b7424084c8b64241049c7c5010000004883c41841f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89de483b65187306ff5558ca0070ebbd4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049c746080100000049c7060100000041554156f6442408010f85460200004c8b7424084d8b264c8b74240841ff76084c8b7424084d8b2e4c8b7424084d8b76084c8b5c240841ff73106a016a016a014c3b6c24380f8d880100004c8b5c24684d8b134c8b5c24684d8b5b084983fd017d0d488da424a0000000e9540100004d3bea0f8d430100004d89ea49c1ea034983ca0149d1ea4f0fb61c134e8d1c5d010000004c89e94883e10f4883f97f720949c7c201000000eb1149c7c20200000048d1e949d3e24983ca014d23da4983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb030f85f20000004983c50241557118488da424a800000048b8d006620800000000488b5d08ff234d89f54983c50241557118488da424b000000048b8d006620800000000488b5d08ff23488b542450498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8970084c8920ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d8966084d892e4c8b6c24084c896c2410415d488d6424084c896c24084c89742410eb49488da424a000000048b818e9640800000000488b5d08ff234983c5027118488da424a000000048b8d006620800000000488b5d08ff234c892c244c897424084c8b7424184c89742410415e415d415b4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c24084d8934244c8b6c24084c896424104c896c2418483b65187303ff55584883c410e9affdffff415e4d8b76104883c450e9abfaffff4c8b7424104983fe010f85c30200004c8b7424084983fe010f859c020000415e4883c4104156488b442408488b5c2428ff15041900004989c64c8b6c24184c3b6c2438750b415b4883c408e9a60000004c8b6c24384c2b6c24187115488d64247048b8d006620800000000488b5d08ff234983c5014d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c7442410010000004d896c240849c70424350000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f802000000415c4d8963084d892b4883c4084d8d6fd04c3b6d107306ff5550ca00484d89ef49c745f80500000049bcb84b6208000000004d89652049c745180100000049c74510010000004d89750849c745001f000000f64424200175654c8b7424204d8b264d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d8966184c8b6424104d8966104d896e0849c706090000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d895c24084d893424e9c50000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424104d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8bb424f00000004d89264d896e0849c746100300000048c7c0010000004883c458c29800488da4248000000048b870e9640800000000488b5d08ff234c8b7424104d8b364c8b6c241041ff7508f6442410010f856c0100004c8b6c24104d8b6d004c8b64241041ff74240841ff364d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a016a01ffb424b0000000ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c247001000049c7c0010000004c8b8c24e00000004c8b942400010000e80483ffff488d642430415b488d6424204c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e9a6fbffff488da4248800000048b870e9640800000000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c6010f85b00000004d8b264d8b6e084983fb01756e4d89e64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25d91300004d89dc4983ec027115488d64242848b8d006620800000000488b5d08ff234d89e34d89ee483b65187306ff5558ca0048e946ffffff488d64242848b8c89d620800000000488b5d08ff2341f6c40175374d8b5424084d89f34983c3027115488d64242848b8d006620800000000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34d3bee7c15488d64242848b8c8e9640800000000488b5d08ff234983c5027115488d64242848b8d006620800000000488b5d08ff234983ed014d6bed087115488d64242848b8d006620800000000488b5d08ff234983c5014c8b7424704d8d47d04c3b45107306ff5550ca00604d89c749c740f8050000004d89682049bd58e46408000000004d89681849c74010010000004d89700849c70007000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25681200004c8b34244983fe01750a488d6424684989c4eb12488b1c24ff15421200004989c4488d6424684d8d77e84c3b75107306ff5550ca00104d89f749c746f802000000415d4d896e0849c706090000004c8bac24d80000004d8965004d8975084c8b7424284d89751048c7c0010000004883c440c2980041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc14156488b9c2438010000488b442410ff158f1100004989c54c8bb424380100004c2b3424488d6424087118488da424c800000048b8d006620800000000488b5d08ff234983c60141564c8bb424000100004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24084d895c24204d8974241849c74424100100000049c74424080100000049c704240b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e084d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89306a016a014c8b9424700100004c8bb424680100004156488d5c24084c8b4424204c8b4c2418ff1593100000ff3424ff7424104c8b7424384983fe0175074c8b6c2478eb13488b442478488b5c2438ff15621000004989c54c8bb424800100004d8b264c8bb424800100004d8b364983c6027118488da424f000000048b8d006620800000000488b5d08ff234c8b9c24800100004d89334c8bb424780100004d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706050000004c8b9c24780100004d89334d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24284d895e284c8b5c24204d895e20415b4d895e184c8b5c24684d895e104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500470000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c430e9dffcffff41f6c60175394d8b5e084989dd4983c5027118488da4249000000048b8d006620800000000488b5d08ff234d89de4c89eb483b65187306ff5558ca8855ebc14c8bb424080100004d8b2e4c8bb424080100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8b9c24080100004d89334d8d77e84c3b75107306ff5550ca88354d89f749c746f8020000004d896e0849c706070000004d8d5fd04c3b5d107306ff5550ca88754d89df49c743f8050000004d896b2049c74318110000004d89631049897b0849c703010000004d8d6fe84c3b6d107306ff5550ca885d4d89ef49c745f8020000004d895d0849c7450005000000f6c30174134889d84883e801486bc00270064883c001eb2348c7c0050000004150415441525741564155ff15ee0d0000415d415e5f415a415c4158a801740b4989c14983c1027002eb2648c7c3030000004150415441525741564155ff15b40d0000415d415e5f415a415c41584989c14d8d5fe84c3b5d107306ff5550ca80774d89df49c743f8020000004d894b0849c703050000004d8d4fd84c3b4d107306ff5550ca807d4d89cf49c741f804000000498979184d8959104d89510849c7014d0000004d8d5fe84c3b5d107306ff5550ca00774d89df49c743f8020000004d894b0849c7030d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c8b4c24184c894f0848c707090000004d8d4fd84c3b4d107306ff5550ca807d4d89cf49c741f8040000004989791849c741100b0000004d89510849c701210000004d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d894a0849c7020d0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c892c244c89742408ff3424ff742410488b9c2418010000488b442468ff15cf0b00004989c641564c8bb424900000004983fe03750949c7c6ffffffffeb414c8bb424200100004d8b364c8bac24200100004d8b6d004983c5027118488da424a800000048b8d006620800000000488b5d08ff234c8ba424200100004d892c2441564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b7424304d897424104c8b7424384d8974240849c70424190000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000ffb424b0000000ffb424d8000000ff742438ff742438ffb424b0000000ffb42408010000ff742448ff742448ff742448ff74244841564155415441534152415141505756525153ffb42458010000ffb42490010000ffb424f8000000488b842478010000488b9c24080100004c8b8424f80000004c8b8c24100100004c8b942408010000ff15590900004989c2488d6424384c8bb424900000004d8b364983fe010f85820000004c8bb424400100004d8b2e4c8bb424400100004d8b364983c6027118488da424b000000048b8d006620800000000488b5d08ff234c8ba424400100004d8934244c8bb424380100004d8b264d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706050000004c8ba424380100004d893424e99c0000004c8bb424900000004d8b364983fe03757f4c8bb424400100004d8b2e4c8bb424400100004d8b364983c6027118488da424b000000048b8d006620800000000488b5d08ff234c8ba424400100004d8934244c8bb424380100004d8b264d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706050000004c8ba424380100004d893424eb0c4c8bb424900000004d8b6e084c8bb424980000004983fe037510488da424980000004d89d4e9010100004d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004c8b6424584d89660849c706090000004d8d67d84c3b65107306ff5550ca00644d89e749c74424f8040000004d8974241849c74424100b0000004d896c240849c70424210000004d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00644d89e749c74424f802000000415b4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244881c4900000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706090000004c8bac24b00000004d8965004d897508415e4d89751048c7c0010000004883c410c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b74247841ff7620ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c243001000049c7c0010000004c8b8c24e800000049c7c201000000ff124989c5488d64243049c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb4248000000041ff7630ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c24200100004c8b8424180100004c8b8c24400100004c8b9424e0000000ff124989c6488d64243041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c706070000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24284d896c240849c70424090000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004c8b6424304d89650849c74500210000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2418eb0e488b442418ff15840100004889c34883fb0175035beb12488b0424ff15660100004889c3488d6424084883fb0175035beb12488b0424ff15430100004889c3488d6424084883fb017508415e4883c418eb12488b0424ff151b0100004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f802000000415c4d89650849c74500090000004883c438415c4883c42041f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89de483b65187306ff5558ca0070ebbd4c8bb424980000004d89264d896e0849c746100100000048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c29800f400|@5401,1,@17016,@12210,@12211,@12212,@12213,@12214,@12217,@10599,@12218,@12219,@12220,@12221,@12222,@12223,@12223,@12225,@12223,@10599,@12218,@12226,@12227,@12228,@12244,@12245,@12223,@12223,@12223,@12223,@12246,@12247,@12223,@10599,@12218,@12248,@10599,@12218,@12218,@10599,@12209|612,0,@105 673,0,@105 753,0,@105 897,0,@105 1034,0,@105 1171,0,@12202 1577,0,@105 1721,0,@105 2103,0,@105 3203,0,@5357 3217,0,@5358 3973,0,@105 4095,0,@105 4552,0,@105 4694,0,@651 4847,0,@105 5103,0,@105 5261,0,@105 5325,0,@105 5450,0,@105 5555,0,@105 5616,0,@105 6118,0,@1098 6580,0,@1098 6913,0,@105 7057,0,@105 7194,0,@105 7328,0,@105 7460,0,@105 8413,0,@105 8563,0,@105 9993,0,@723 10183,0,@105 10327,0,@105 10464,0,@105 10613,0,@1178 10904,0,@1164 10960,0,@1178 11364,0,@1164 11420,0,@1145 11487,0,@1711 11564,0,@1178 11877,0,@1164 11933,0,@1145 12003,0,@1711 12370,0,@1164 12488,0,@5359 12509,0,@5362 12902,0,@1164 12958,0,@1145 13660,0,@105 13906,0,@1556 14207,0,@105 14351,0,@105 14468,0,@105 14520,0,@628 14567,0,@105 14898,0,@625 14960,0,@105 15184,0,@5365 15441,0,@5368 15548,0,@105 15687,0,@105 15797,0,@105 15835,0,@105 16135,0,@5369 16187,0,@105 16243,0,@5372 16340,0,@5373 16408,0,@105 16552,0,@105 16917,0,@105 17037,0,@105 17097,0,@105 17176,0,@105 17296,0,@105 17576,0,@105 17859,0,@105 18328,0,@105 18470,0,@105 18816,0,@105 19362,0,@105 19531,0,@664 19646,0,@105 20256,0,@105 20400,0,@105 22318,0,@5376 22400,0,@105 22544,0,@105 23027,0,@105 23168,0,@105 23312,0,@105 23852,0,@105 24113,0,@5379 24581,0,@105 25203,0,@105 25344,0,@105 25634,0,@625 25727,0,@12203 25797,0,@12204 25834,0,@5384 25883,0,@105 26301,0,@12205 26530,0,@625 26623,0,@12206 26693,0,@12207 26730,0,@5388 26782,0,@105 27207,0,@12208 27652,0,@5357 27666,0,@5358 28149,0,@105 28293,0,@105 28430,0,@105 28967,0,@5391 30027,0,@5393 30565,0,@105 30600,0,@105 30775,0,@5394 30805,0,@105 31033,0,@105 31209,0,@578 31642,0,@5396 32058,0,@5396 32319,0,@105 32363,0,@1158 32404,0,@105 32450,0,@5398 32477,0,@105 32508,0,@105 32564,0,@5372 32810,0,@105 32897,0,@105 33191,0,@105 33494,0,@105 33566,0,@105 34364,0,@105 34986,0,@105 35133,0,@105 12202:D3,272|483b65187305ff5558cd054c8b6a104d89ee4d8b6d004d89f44d8b364983c602711048b8d006620800000000488b5d08ff234d8934244d8d67d04c3b65107306ff5550ca05204d89e749c74424f8050000004d896c242049c7442418190000004c8b72084d89742410498944240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@5356,1,@17009|36,0,@105 12203:D3,136|483b65187305ff5558cd054c8b284c8b70084c8b62104c8b5a184d2be3711048b8d006620800000000488b5d08ff234983c4014d89f34983eb014d03e3711048b8d006620800000000488b5d08ff23498d47d0483b45107306ff5550ca04704989c748c740f8050000004c8960204c8b62084c8960184c8968104c89700848c70043000000c3f400|@5382,1,@17010|33,0,@105 65,0,@105 12204:D3,160|483b65187305ff5558cd054c8b204c8b68084983ed014d6bed08711048b8d006620800000000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca04304d89f749c746f80600000049c74628010000004d8966204d896e1849bd58e46408000000004d896e1049c746080b0000004c8b6a084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f4|@5383,1,@17011|30,0,@105 93,0,@5372 12205:D3,160|483b65187305ff5558cd054c8b204c8b68084983ed014d6bed08711048b8d006620800000000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca04304d89f749c746f80600000049c74628010000004d8966204d896e1849bd58e46408000000004d896e1049c746080b0000004c8b6a084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f4|@5383,1,@17012|30,0,@105 93,0,@5372 12206:D3,136|483b65187305ff5558cd054989c64c8b6a104c8b62184d2bec711048b8d006620800000000488b5d08ff234983c5014d89f44983ec014d03ec711048b8d006620800000000488b5d08ff23498d47d0483b45107306ff5550ca04604989c748c740f8050000004c8968204c8b6a084c8968184c89701048c740080100000048c7000b000000c3f400|@5386,1,@17013|29,0,@105 61,0,@105 12207:D3,120|483b65187305ff5558cd054989c64983ee014d6bf608711048b8d006620800000000488b5d08ff234983c601498d47d0483b45107306ff5550ca04404989c748c740f8050000004c89702049be58e46408000000004c89701848c74010010000004c8b72084c89700848c70007000000c3f4000000000000|@5387,1,@17014|26,0,@105 77,0,@5372 12208:D3,120|483b65187305ff5558cd054989c64983ee014d6bf608711048b8d006620800000000488b5d08ff234983c601498d47d0483b45107306ff5550ca04404989c748c740f8050000004c89702049be58e46408000000004c89701848c74010010000004c8b72084c89700848c70007000000c3f4000000000000|@5390,1,@17015|26,0,@105 77,0,@5372 12209:D3,888|483b65187306ff5558ca090753415041514152a8010f85390300004c8b30ff70084d8b364d8b2641ff76084c8b74241841ff364c8b7424204d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6c24204d8975004c8b7424184d8b2e4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706050000004c8b6c24184d8975004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e0849c706050000004c8bac24c80000004d8b6df849c1e50849c1ed074983cd014d3be57215488d64243848b80057620800000000488b5d08ff234c8bac24c80000004f8974a5fc4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb424e0000000ff742468ffb424e8000000ffb424e8000000ffb424080100004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742470ff742470ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24b000000049c7c0010000004c8b8c24d80000004c8b942410010000ff12488d642428ff34246a016a01ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b842400010000488b9c24c80000004c8d8424b80000004c8b8c24100100004c8b942408010000e8fffcffff488d642428415d415e488d6424284d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c2408415d488d6424204d892c24415d488d6424084d8965004d89750848c7c001000000c29000488d642410415d49c7450001000000415e4d89750848c7c001000000c29000f400000000|@5424,1,@17056|72,0,@105 228,0,@664 12210:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17017| 12211:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17018| 12212:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17019| 12213:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17020| 12214:D5,3232|488dbc2440ffffff483b7d187306ff5560ca09074150415141524883f80175554883fb01753a488b442408ff158f0c00004c8b7424104c89f34983fe0175054989c4eb09ff156e0c00004989c4415e4c8bac24d80000004883c410e95a080000488d64241848b898ea640800000000488b5d08ff234c8b30ff70084983fe010f8529020000f6c3010f850b0200004c8b7308ff34244156ff742428ff742428ff742428ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b800000048898424b8000000488b84248800000048899c24c0000000488b9c248000000048898c24c800000048899424d00000004889b424d80000004889bc24e00000004c898424e80000004c8b4424784c898c24f00000004c8b4c24704c899424f80000004c8b5424684c899c24000100004c89a424080100004c89ac24100100004c8b34244c89b424180100004c8b7424084c89b424200100004c8b7424104c89b424280100004c8b7424184c89b424300100004c8b7424204c89b424380100004c8b7424284c89b424400100004c8b7424304c89b424480100004c8b7424384c89b424500100004c8b7424404c89b424580100004c8b7424484c89b424600100004c8b7424504c89b424680100004c8b7424584c89b424700100004c8b7424604c89b424780100004881c4b0000000e96ffdffff488da424b0000000488d64242048b898ea640800000000488b5d08ff2341ff36f6c3010f85eb0500004c8b33ff73084c8bac24f00000004983fd030f85800000004c8bac24e80000004d8b6d004c8ba424e80000004d8b24244983c4027115488d64243048b8d006620800000000488b5d08ff234c8b9c24e80000004d89234c8ba424e00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24e00000004d8923eb084c8bac24d800000041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d89650849c745000500000041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d8966084d892e41566a016a016a01ffb42400010000ff742478ffb42430010000ffb42430010000ffb42430010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b842410010000488b9c24c80000004c8b8424c00000004c8b8c24f80000004c8b9424f0000000ff12488d642440415c488d642408415e488d6424104983fe03750d488d6424084d89e6e99b0100004c8bb424f80000004983fe030f85100100004c8b7424484d8b5e084c8bac24b80000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706370000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004983fb01747b4d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d895e0849c706350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e4d89f4eb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb79488d6424084c8b6c24384d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eff742410ff7424084156ff742438ff742438ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c800000048898424c8000000488b84248800000048899c24d0000000488b9c248000000048898c24d800000048899424e00000004889b424e80000004889bc24f00000004c898424f80000004c8b4424784c898c24000100004c8b4c24704c899424080100004c8b5424684c899c24100100004c89a424180100004c89ac24200100004c8b34244c89b424280100004c8b7424084c89b424300100004c8b7424104c89b424380100004c8b7424184c89b424400100004c8b7424204c89b424480100004c8b7424284c89b424500100004c8b7424304c89b424580100004c8b7424384c89b424600100004c8b7424404c89b424680100004c8b7424484c89b424700100004c8b7424504c89b424780100004c8b7424584c89b424800100004c8b7424604c89b424880100004881c4c0000000e963f7ffff488da42498000000488d64242848b898ea640800000000488b5d08ff234983fe010f85440300004983fd010f852a03000041544c8bb424c80000004983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64240848b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb084c8bb424b000000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb424d0000000ff742450ff742450ffb42408010000ffb42408010000ffb42408010000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042448ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d8000000488b8424d0000000488b9c24c80000004c8b8424c00000004c8b8c24f80000004c8b942408010000ff12488d64244858488d642408415e488d6424084c8bac24d00000004983fd030f85350100004983fe030f84240100004c8b7424204d8b66084c8bb424900000004d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500370000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c706030000004983fc010f8482000000488d6424084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f80300000049c74510010000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f802000000498945084d896500eb08488d6424084989c5498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c2c800488d642410eb05488d642410c2c80048b870e9640800000000488b5d08ff234d8b0e4d8b5e0841f6c50175754d8b45004d8b550841f6c00175054d89e1eb484d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849c700070000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d54d89de483b65187306ff5558ca0070e930fcffff48b870e9640800000000488b5d08ff23f40000000000|@5405,1,@17021,@12216,@12215|103,0,@5402 672,0,@5402 759,0,@105 2220,0,@5402 2306,0,@105 3066,0,@5396 3212,0,@5396 12215:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17023| 12216:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17022| 12217:D3,120|483b65187305ff5558cd09a801755b488b4008ff334c8b334983c6027115488d64240848b8d006620800000000488b5d08ff234c8933e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17024|37,0,@105 12218:D3,80|49bb7003b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@5406,1,@17025|2,0,@36 12219:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17026| 12220:D3,864|483b65187306ff5558ca090753415041514152a8010f8513030000ff30488b40086a016a014c8b7424404156488d5c24084c8b4424304c8b4c24284c8b542420e8bbffffff415c415b4c8b2c244d8b4d004d8b314983fe0b0f858b0200004d8b41204d89ed4d8b55084c8b7424184c89f74983ee014d03f27115488d64242848b8d006620800000000488b5d08ff234d3bc67505e90b0200004889ff4989fe4883ef014903fa7115488d64242848b8d006620800000000488b5d08ff234883ff017d0949c7c603000000eb5d4983e8014d89f64d03f07115488d64242848b8d006620800000000488b5d08ff2349c7c0010000004c2b4424107115488d64242848b8d006620800000000488b5d08ff234983c0014d3bf07e0949c7c603000000eb0749c7c6010000004983fe030f8471010000488d6424084c8b04244d8b284d89ee4d89c04983c6027115488d64242048b8d006620800000000488b5d08ff234d89c04d8930488d6424084c8b7424204d8b064d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d89460849c706050000004c8b4424204d89304d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d894e1849c746100b0000004d896e0849c706210000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89710849c7010d0000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d8966084d890e4d89f44d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d8975004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24104d8965004d89750848c7c0010000004883c418c208004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24184d8965004d89750848c7c0010000004883c420c208004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24184d8965004d89750848c7c0010000004883c420c20800488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c20800f400000000000000|@5407,1,@17027|129,0,@105 175,0,@105 223,0,@105 258,0,@105 338,0,@105 823,0,@1172 12221:D3,152|483b65187305ff5558cd09a801757a4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e41564883eb027115488d64240848b8d006620800000000488b5d08ff23e8a6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@5408,1,@17028|71,0,@105 12222:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17029| 12223:D5,2048|483b65187306ff5558ca09074989c64989db4d8b264d89e54983fc010f851f060000498b7e084989fc498b5610498b4e18498b76204883f9037522498b184883fb0175194d89194d89410849c741100100000048c7c001000000c208004883f9037522498b084883f90575194d89194d89410849c741100100000048c7c001000000c208004883fa030f8551020000498b084883f9050f85440200004d8b680848c7c001000000482b054a0700007002eb2c48c7c001000000488b1d30070000415641534150415141524155ff154e070000415d415a41594158415b415ea801740d41f6c5017407493bc57f2ceb2c4c89eb415641534150415141524155ff1514070000415d415a41594158415b415e4989c44983fc017e02eb2b41f6c501740e4c3b2dc00600007d1ce9980100004d0fb66dff4e8d2c6d010000004983fd230f84810100004d8b264d89e54983fc0175584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb624983fd0375584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb044d8b66084d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004d89194d89410849c741100100000048c7c001000000c208004883fa030f858a010000498b104883fa010f857d0100004c89ef4989fd4883ff0175584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb5e4983fd0375584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb004d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004883fe037522498b304883fe0975194d89194d89410849c741100100000048c7c001000000c208004883ff037522498b384883ff0775194d89194d89410849c741100100000048c7c001000000c208004c89ef4989fd4883ff0175584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb5e4983fd0375584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb004d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004d89ec4983fd0375194d89194d89410849c741100100000048c7c001000000c208004d89e54983fc0175584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb624983fd0375584d8b224d89e64983c602711048b8d006620800000000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb044d8b66084d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c20800f4000000000000010000000100000001000000010000000000000001000000|@5409,1,@17030,@12224,@10653|352,0,@105 446,0,@105 785,0,@105 879,0,@105 1246,0,@105 1340,0,@105 1658,0,@105 1752,0,@105 12224:D3,48|49bb9803b703000000004d8b1b4989e5488b65304881ecb00000004889c14889da41ffd34c89ecc3f400000000000000|@5410,1,@17031|2,0,@37 12225:D3,216|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b30488b4008f6c3010f85860000004c8b23488b5b084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f40000|@4547,1,@17032|33,0,@4545 199,0,@4545 12226:D4,1016|483b65187306ff5558ca090753415041514152a8010f853b030000ff30ff70086a016a016a01ff742430ff742460ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742460ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c24b800000049c7c00100000049b9d8ec6408000000004c8b942400010000ff12488d642430ff3424ff7424104c8b7424504983c60241567115488d64246048b8d006620800000000488b5d08ff23ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742428ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b8424f8000000488b9c24c80000004c8b8424d80000004c8b8c24100100004c8b942408010000e8d4fdffff4889c3488d6424386a016a016a014c8bb42408010000415648b8e8e86408000000004c8b4424204c8d4c24084c8b542458ff15ad010000415d415a488d6424184c8b5c24404983eb014d6bdb087115488d64244848b8d006620800000000488b5d08ff23488d6424484983c3014c8b6424084d8d77c84c3b75107306ff5550ca003c4d89f749c746f80600000049c74628010000004d8956204d895e1849bb58e46408000000004d895e1049c746080b0000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424410000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c29800488d6424104c8b7424184d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049c745200100000049c74518010000004c8b6424084d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424104c8930c29800f4000000|@5412,1,@17033,@12223|257,0,@5411 307,0,@105 582,0,@5393 642,0,@105 715,0,@5372 12227:D3,864|483b65187306ff5558ca090750534150415141524c8b7424204d89f34c3b742408750d488d642410584883c410c22000488b3c244c8b274889ff4c8b77084d89db4d89dd4983fb017d0a488d642428e9fa0200004d89ed4c89e94d3bec0f8de60200004989cd49c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c94889c84883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f842b0200004c8b74244841ff364c8b7424504d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8b6c24504d8975004c8b7424484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24484d897500488b5424404d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c70609000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b6c24204c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004156488b542440488b442430ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8b6c24084d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d8966084d892e4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d8970084c8b34244d8930488d642410488b4424204883c0027115488d64242848b8d006620800000000488b5d08ff23488b5c24184883c3027115488d64242848b8d006620800000000488b5d08ff234c8b4c24085f488d6424084c8b6c24384c8b6424304c8b5c24284c8b5424204c895424204989fa4c895c24284c896424304c896c24384883c418e920fdffff4889c04883c0027115488d64242848b8d006620800000000488b5d08ff23488b5c24184c8b4424104c8b4c24084889ff488d6424204c8b6c24284c8b6424204c8b5c24184c8b5424104c895424104989fa4c895c24184c896424204c896c24284883c408e9b7fcffff488d64242848b818e9640800000000488b5d08ff23f400|@5413,1,@17034|210,0,@105 627,0,@105 659,0,@105 752,0,@105 848,0,@5394 12228:D8,5136|488dbc2460ffffff483b7d187306ff5560ca090753415041514152a8010f85820f00004c8b30ff70084d8b2e4d89ec4983fd010f858b030000498b7e084d8b66104c8b7424204d8b364c8b6c24204d8b55084c8b6c24204d8b4d104c8b6c24084d8b6d004c8b5c24084d8b1b4983c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424084d89184d8d47f04c3b45107306ff5550ca80764d89c749c740f8010000004d89204c8b9c24b8000000498b334d8d5fe84c3b5d107306ff5550cac0774d89df49c743f802000000498973084d89034c8b8424b80000004d89184d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d8963084d892b4d89e04983e8014d03c27115488d64242848b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f8030000004d8945104d895d0849c74500010000004c8b8424b00000004d8b40f849c1e00849c1e8074983c801493bf87215488d64242848b80057620800000000488b5d08ff234c8b8424b00000004d896cb8fc4d89e54983ed014d03d57115488d64242848b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c706330000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d8926ff342441554156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e941fcffff488d6424784d89e54983fc050f857402000041ff76086a016a016a01ffb424c8000000ffb424e0000000ffb424d0000000ffb424d0000000ffb424f00000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042428ff742458ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c240001000049c7c00100000049b9a8946208000000004c8b9424f8000000ff12488d642428415e488d642418ff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9c3f9ffff488da424800000004983fd070f851704000041ff76084d8b66084d89e541f6c4010f85d70300004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85b2030000488d6424084d89ee4d8b3641ff364d8b6e084c8b74241041ff364c8b7424184d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6424184d8934244c8bb424c80000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424c80000004d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061b00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a01ffb424e0000000ffb424f8000000ffb424e8000000ffb424e8000000ffb424080100004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742470ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c241801000049c7c0010000004c8b8c24d80000004c8b942410010000ff12488d642428415e488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f802000000415c4d89650849c74500050000004c8ba424b80000004d8b5c24f849c1e30849c1eb074983cb014c8b24244d3be37215488d64243048b80057620800000000488b5d08ff234c8ba424b8000000415b4f896c9cfcff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9caf5ffff488d6424704c8b8424c0000000488b0424488b5c2410ff15f60900004989c64156ff742408ff7424086a01e95c05000041ff7608498b46104c8b304983fe130f852a0200004c8b68084d89ee4d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983fd030f85ff0100004d8b6e084c8bb424b80000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81051620800000000488b5d08ff234c8bb424b80000004f8b74aefc4c8bac24b80000004d8b65f849c1e40849c1ec074983cc014c8b2c244d3bec7215488d64243048b80057620800000000488b5d08ff234c8bac24b8000000415c4f8974a5fcff3424ff742428ff742428ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e963f3ffff488da424800000006a016a016a01ffb424c8000000ffb424e0000000ffb424d0000000ffb424d0000000ffb424f0000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042430ff742460ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c0000000488b9c240801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430415e415d488d6424084d8b65004983fc090f85e30100004d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d8b5c24f849c1e30849c1eb074983cb014c8b24244d3be37215488d64243048b80057620800000000488b5d08ff234c8ba424b8000000415b4f896c9cfcff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e975f0ffff488d642470488d64243048b8c0ed640800000000488b5d08ff23488d642408415d415e4d897500415e4d89750848c7c001000000c290004c8b7424104983fe0175374c8b7424084983fe017517415e4883c4104156ff742410ff7424106a01e991000000488d64245048b870e9640800000000488b5d08ff234c8b742410498b064c8b74241041ff7608f644241001754f4c8b742410498b1e4c8b74241041ff76084c8b8c24e80000004c8b442410ff15000400004989c34c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e957ffffff488d64245848b870e9640800000000488b5d08ff234c8b7424104983fe0175514c8b7424084983fe0175315b4883c4104883fb017508415e4883c410eb12488b0424ff15850300004989c6488d64241848c7c001000000e96e010000488d64245848b870e9640800000000488b5d08ff234c8b74241041ff364c8b74241841ff7608f6442418010f85280100004c8b74241841ff364c8b74242041ff7608ffb424d8000000ffb424d8000000ffb42418010000ffb42410010000ffb424100100004c8bb424100100004c8bac24280100004c8ba424080100004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ffb42480000000ff742418ff742418ff7424184156415541544153415241514150575652515350ffb42420010000488b8424d0000000488b9c24c00000004c8b8424d80000004c8b8c24b00000004c8b9424a8000000ff15400200004989c3488d6424284c8b6c2410415c488d6424184c891c244c896424084c896c2410483b65187303ff5558e960feffff488d64246848b870e9640800000000488b5d08ff2341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424184983fe0175054989c6eb0e488b5c2418ff15920100004989c6ff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9faebffff488d642470f400000000|@5417,1,@17035,@12230,@12231,@12238,@12239,@12229|121,0,@105 282,0,@105 375,0,@664 421,0,@105 1202,0,@1098 1720,0,@105 2220,0,@664 2766,0,@625 2833,0,@664 3455,0,@5368 3585,0,@664 3991,0,@5414 4086,0,@5396 4210,0,@5396 4302,0,@5396 4647,0,@5396 12229:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d006620800000000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@17050|42,0,@105 12230:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17036| 12231:D7,696|483b65187306ff5558ca090753415041514152488b4008ff7010488b542410488b5c240849c7c001000000ff124989c54c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d8934244c8bb424b80000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424b80000004d8934244d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060f0000004156488b442410ff15030200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156ffb424b8000000ffb424d0000000ffb424d0000000ffb424c8000000ffb424c80000004c8bb424c80000004c8bac24c00000004c8ba424b80000004c8b9c24b00000004c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b442468ff742408ff74240841564155ff742468ff74246841544153415241514150575652515350ffb424b8000000ffb424e8000000488b8424c000000048c7c3010000004c8b8424b80000004c8b8c24b00000004c8b9424a8000000ff15ea000000488d6424504d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849c706270000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15520000004889c34883fb017508584883c408c29000584c8b7424084c89b424980000004881c498000000ff251e000000f40000000000|@5418,1,@17037,@12233,@12234,@12235,@12232|83,0,@105 12232:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17043| 12233:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17038| 12234:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17039| 12235:D5,1120|483b65187306ff5558ca090753415041514152a8010f8509010000ff30ff70086a016a016a01ff742438ff742468ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742460ff742460ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c24b000000049c7c00100000049b9e8e864080000000049c7c201000000ff12488d6424284c8b2c24ff74240849c7c601000000e9ba000000488d6424204c8b7424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424090000004c8b7424104d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c2980041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424504983c60241567115488d64246048b8d006620800000000488b5d08ff23ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742428ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b8424f8000000488b9c24c80000004c8b8424180100004c8b8c24100100004c8b942408010000e8cffcffff488d6424384c8b6424504983ec014d6be4087115488d64245848b8d006620800000000488b5d08ff234983c4014c8b6c24684d8d77c84c3b75107306ff5550ca01304d89f749c746f80600000049c74628010000004c8b5c24084d895e204d89661849bc58e46408000000004d89661049c746080b0000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15500000004889c34883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff251c000000f4000000|@5419,1,@17040,@12237,@12236|250,0,@5393 568,0,@105 844,0,@105 917,0,@5372 12236:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17042| 12237:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17041| 12238:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17044| 12239:D6,256|483b65187306ff5558ca09034989de41504c8b184c8b68084d8b6d104d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d8974240849c70424050000004d8b51f849c1e20849c1ea074983ca014d3bda7215488d64240848b80057620800000000488b5d08ff234f896499fc48c7c30100000041f6c50175364d8b5d084989dc4983c4027115488d64240848b8d006620800000000488b5d08ff234d89dd4c89e3483b65187306ff5558ca0860ebc44883c3027115488d64240848b8d006620800000000488b5d08ff234d89f048c7c001000000ff1546000000ff15380000004889c34883fb01750258c358ff251e000000f40000000000|@5420,1,@17045,@12241,@12242,@12240|97,0,@664 149,0,@105 196,0,@105 12240:D6,616|483b65187306ff5558ca09015041504c8b7424084c89f04c3bf30f85940000004d8d6fd04c3b6d107305ff5550cd084d89ef49c745f80500000049c745200100000049c745188100000049895d104c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c34889c04883c0027115488d64241048b8d006620800000000488b5d08ff234c8b0424e825ffffff4989c649c7c5050000004983ed014d6bed0070094c89e84883c001eb1848c7c00500000048c7c3010000004156ff1582010000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff155a010000415e4989c54d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004d896b0849c703050000004c8b6424084983ec014d6be4087115488d64241048b8d006620800000000488b5d08ff234983c4014d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f80600000049c74528010000004d895d204d89651849bc58e46408000000004d89651049c745080b0000004c8b24244d896500488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424410000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb017509488d6424084c89f0c3488d6424084c89f0ff251e000000f40000000000|@5422,1,@17048,@12243,@10599,@12218|196,0,@105 367,0,@105 430,0,@5372 12241:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17046| 12242:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d8ef640800000000c3f4000000|@1032,1,@17047|75,0,@5421 12243:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17049| 12244:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d006620800000000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@17051|42,0,@105 12245:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17052| 12246:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17053| 12247:D3,1368|488dbc2448ffffff483b7d187306ff5560ca0907415041514152a8010f85060500004c8b30ff700841ff364883fb010f85610200006a016a016a01ff742428ff742460ff742460ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b8424f0000000488b9c24c800000049c7c0010000004c8b8c24c00000004c8b942410010000ff12488d642440ff3424ff7424106a016a016a01ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff7424384156415541544153415241514150575652515350488b84243001000048c7c3010000004c8b8424080100004c8d8c24e80000004c8b942438010000e8bdfdffff488d642440415b415c415d4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d642440415d488d6424084d895d004d8965084d89751048c7c001000000c2a800ff33ff73086a016a016a01ff742438ff742470ff742468ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b842400010000488b9c24c800000049c7c0010000004c8b8c24c00000004c8b942420010000ff12488d642440ff3424ff7424106a016a016a01ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff7424384156415541544153415241514150575652515350488b842440010000488b9c24280100004c8b8424080100004c8d8c24e80000004c8b942448010000e856fbffff488d642440415b415a415e4d8d6fe84c3b6d107306ff5550ca004c4d89ef49c745f8020000004c8b6424304d8965084c8b24244d896500488d6424504d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d892c24415d488d6424084d895d004d8965084d89751048c7c001000000c2a800488d642408415e4c8b2c244d892e488d64240849c746080100000049c746100100000048c7c001000000c2a800f40000|@5423,1,@17054| 12248:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17055| 12249:D27,7856|488dbc24b8feffff483b7d187306ff5560ca0d075253415141524c8b304983fe037515488d64242048b850f1640800000000488b5d08ff2341f6c6010f850503000041ff36ff7008ff7010ff70184c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e80000004d8975006a016a016a014c8b74247041ff7610ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f8000000488b9c24100100004c8b84242801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e91e130000ff7008ff7010ff70184c8b7424204d8b264d89e54983fc010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e98f0000004d89f64983fd03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb074d89f64d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7610ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f000000048c7c3030000004c8b84241801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8bb424a000000041ff7610ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84243801000048c7c3030000004c8b84245801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184c8bb4245001000041ff364c8bb424580100004d8b364983c6027118488da424d800000048b8d006620800000000488b5d08ff234c8bac24580100004d8975004c8bb4245001000041ff364c8bb424580100004d8b364983c6027118488da424e000000048b8d006620800000000488b5d08ff234c8bac24580100004d8975004c8bb4245801000041ff364c8bb424600100004d8b364983c6027118488da424e800000048b8d006620800000000488b5d08ff234c8bac24600100004d8975004c8bb4246001000041ff364c8bb424680100004d8b364983c6027118488da424f000000048b8d006620800000000488b5d08ff234c8bac24680100004d8975004c8bb4246801000041ff364c8bb424700100004d8b364983c6027118488da424f800000048b8d006620800000000488b5d08ff234c8bac24700100004d8975004c8bb4247001000041ff364c8bb424780100004d8b364983c6027118488da4240001000048b8d006620800000000488b5d08ff234c8bac24780100004d8975006a016a016a014c8bb4241001000041ff7618ffb424b0010000ffb424b0010000ffb424b0010000ffb424b0010000ffb424b00100004c8bb424b00100004c8bac24a80100004c8ba424a00100004c8b9c24980100004c8b9424900100004c8b8c24880100004c8b842480010000488bbc2478010000488bb42470010000488b942468010000488b8c2460010000488b9c2458010000488b842450010000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424b001000048c7c3010000004c8b8424c801000049c7c1010000004c8d9424c0000000ff12488d642430415b415e415d49c7c40100000041f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d3483b65187306ff5558ca0078ebbd41544c8b9424800000004d8b224983fc09757a4c8b6424784983fc01756f4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8ba424880000004d89630849c703090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b9c24c00000004d895c240849c7042421000000eb6e4d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004c8ba424880000004d89234d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b4c24784d894c24204d89d24d895424184c8b9424c00000004d895424104d895c240849c70424230000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544c8b5424484d8b224983fc0975774c8b6424404983fc01756c4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b6424504d89630849c703090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b9c24c00000004d895c240849c7042421000000eb6b4d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004c8b6424504d89234d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b4c24404d894c24204d89d24d895424184c8b9424c00000004d895424104d895c240849c70424230000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544d8d5fd04c3b5d107306ff5550ca00604d89df49c743f8050000004c8ba424c80000004d8963204c8ba424d00000004d8963184d896b104c8b6424404d89e54d89630849c703110000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d00000041544d8d57d04c3b55107306ff5550ca00604d89d749c742f8050000004c8b6424284d89e34d89622049c74218030000004c8b6424404d8962104d89ed4d89ec4d896a0849c702010000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000500000041554d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89db4d895d0849c74500070000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b4c24284d89ca4d894b2049c74318010000004c8b4c24404d894b104d89e44d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89d24d89530849c7030700000048c7c0050000004883e801486bc00070064883c001eb2448c7c00500000048c7c3010000004156415541544153ff1524100000415b415c415d415ea801740b4989c14983c1027002eb2048c7c3030000004156415541544153ff15f00f0000415b415c415d415e4989c14d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c702050000004d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f8040000004d89511849c741100b0000004c8b9424e80000004d89510849c701210000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004c8b4c24384d89480849c7000b0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f802000000488b7c24484989780849c7000700000048c7c0050000004883e801486bc0ff70064883c001eb3048c7c00500000048c7c3ffffffff4156415541544153415241514150ff15a20e000041584159415a415b415c415d415ea801740b4889c64883c6027002eb2c48c7c3030000004156415541544153415241514150ff15620e000041584159415a415b415c415d415e4889c6498d7fe8483b7d107306ff5550ca407f4989ff48c747f8020000004889770848c70705000000498d77d8483b75107306ff5550ca807f4989f748c746f80400000048897e1848c746100b000000488bbc24e800000048897e0848c70621000000498d7fe8483b7d107306ff5550ca407f4989ff48c747f8020000004889770848c7070d000000498d57e8483b55107306ff5550ca807f4989d748c742f802000000488b7424384889720848c7020b000000498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848c70605000000498d57e8483b55107306ff5550cac07f4989d748c742f802000000488b4c244048894a0848c7020700000048c7c0050000004883e801486bc00170064883c001eb3648c7c00500000048c7c3030000004156415541544153415241514150575652ff150b0d00005a5e5f41584159415a415b415c415d415ea801740b4889c34883c3027002eb3248c7c3030000004156415541544153415241514150575652ff15c50c00005a5e5f41584159415a415b415c415d415e4889c3498d4fe8483b4d107306ff5550cacc7f4989cf48c741f8020000004889590848c70105000000498d5fd8483b5d107306ff5550cac67f4989df48c743f80400000048894b1848c743100b000000488b8c24e800000048894b0848c70321000000498d4fe8483b4d107306ff5550cacc7f4989cf48c741f8020000004889590848c7010d000000498d5fe8483b5d107306ff5550cac67f4989df48c743f802000000488b4424384889430848c70307000000498d47e8483b45107306ff5550cace7f4989c748c740f80200000048c7400801000000488918498d5fe8483b5d107306ff5550cac77f4989df48c743f8020000004889430848890b498d4fe8483b4d107306ff5550cacc7f4989cf48c741f80200000048895908488911498d57e8483b55107306ff5550cac27f4989d748c742f80200000048894a08488932498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848893e498d7fe8483b7d107306ff5550ca407f4989ff48c747f802000000488977084c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d642408498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8b2c244c892b488d6424084883fb0175054c89f3eb0c4c89f0ff15100a00004889c34883fb0175035beb12488b0424ff15f20900004889c3488d6424084883fb017507488b5c2460eb0e488b442460ff15ca0900004889c34883fb0175035beb12488b0424ff15ac0900004889c3488d6424084883fb01750a488b9c2498000000eb11488b842498000000ff157e0900004889c34883fb0175075b4883c448eb12488b0424ff155c0900004889c3488d6424504883fb0175075b4883c438eb12488b0424ff15350900004889c3488d6424404883fb017508415c4883c430eb12488b0424ff150d0900004989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c438c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8bb424b000000041ff7610ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b842440010000488b9c24500100004c8b84246801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24980000004d896e0849c7060500000041566a016a016a014c8bb424f800000041ff7608ffb42498010000ffb42498010000ffb42498010000ffb42498010000ffb424980100004c8bb424980100004c8bac24900100004c8ba424880100004c8b9c24800100004c8b9424780100004c8b8c24700100004c8b842468010000488bbc2460010000488bb42458010000488b942450010000488b8c2448010000488b9c2440010000488b842438010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842498010000488b9c24b801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b6424504d8b34244983fe0975704c8b7424484983fe0175654d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500090000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8bac24980000004d896e0849c70621000000eb664d8d6ff04c3b6d107306ff5550ca00104d89ef49c745f8010000004c8b7424584d8975004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24484d895e204d89e44d8966184c8ba424980000004d8966104d896e0849c706230000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b6424184d8b34244983fe0975704c8b7424104983fe0175654d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8bb424980000004d89750849c7450021000000eb664d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004c8b6c24204d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24104d895d204d89e44d8965184c8ba424980000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520010000004c8bb424a80000004d89751849c74510010000004c8bb424900000004d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f8050000004c8b9c24c80000004d895d204c8b9c24980000004d895d184c8b9c24a00000004d895d104d89e44d89650849c745000d0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ce0100004889c34883fb017507488b5c2430eb0e488b442430ff15ab0100004889c34883fb0175035beb12488b0424ff158d0100004889c3488d6424084883fb017507488b5c2468eb0e488b442468ff15650100004889c34883fb0175075b4883c418eb12488b0424ff15430100004889c3488d6424204883fb0175075b4883c438eb12488b0424ff151c0100004889c3488d6424404883fb017508415e4883c460eb12488b0424ff15f40000004989c6488d64246848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15b7000000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff158f000000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff251b000000f40000|@5430,1,@17057,@12251,@10599,@12218,@12256,@12257,@12258,@12259,@12260,@12261,@12262,@12263,@12264,@12265,@12266,@12267,@12268,@12269,@12250,@10599,@12218,@10599,@12218,@10599,@12218|42,0,@5427 113,0,@105 235,0,@105 357,0,@105 479,0,@105 905,0,@105 1044,0,@105 1179,0,@105 1301,0,@105 2127,0,@105 2191,0,@105 2255,0,@105 2319,0,@105 2383,0,@105 2447,0,@105 12250:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17077| 12251:D9,2320|483b65187306ff5558ca09074989c54989de41514d8b5d004d89dc4983fb010f85ec0600004d8b4d084d89cb498b7510498b5518498b7d204883fa037525498b084883f901751c415d4d8975004d89450849c745100100000048c7c001000000c208004883fa037525498b104883fa05751c415d4d8975004d89450849c745100100000048c7c001000000c208004883fe030f858f020000498b104883fa050f85820200004d8b600848c7c001000000482b05510800007002eb2848c7c001000000488b1d3708000041554156415041524154ff1577080000415c415a4158415e415da801740d41f6c4017407493bc47f28eb284c89e341554156415041524154ff1541080000415c415a4158415e415d4989c34983fb017e02eb2c41f6c401740e4c3b25cf0700007d1de9db0100004d0fb66424ff4e8d2465010000004983fc230f84c30100004d8b5d004d89dc4983fb0175604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb6a4983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb044d8b6d0841554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15830600004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c20800415d4d8975004d89450849c745100100000048c7c001000000c208004883fe030f85c9010000498b304883fe010f85bc0100004d89e14d89cc4983f901755f4d8b1a4d89dd4983c5027115488d64240848b8d006620800000000488b5d08ff234d892a4c8b6c24104d8b65004d8d6fe84c3b6d107306ff5550ca00594d89ef49c745f8020000004d89650849c74500050000004c8b6424104d892c24eb654983fc03755f4d8b1a4d89dd4983c5027115488d64240848b8d006620800000000488b5d08ff234d892a4c8b6c24104d8b65004d8d6fe84c3b6d107306ff5550ca00594d89ef49c745f8020000004d89650849c74500050000004c8b6424104d892c24eb0041534d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff158c0400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c208004883ff037525498b384883ff09751c415d4d8975004d89450849c745100100000048c7c001000000c208004983f90375254d8b084983f907751c415d4d8975004d89450849c745100100000048c7c001000000c208004d89e14d89cc4983f90175604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb694983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb034d89dd41554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff156d0200004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c208004d89e34983fc03751c415d4d8975004d89450849c745100100000048c7c001000000c208004d89dc4983fb0175604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb6a4983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb044d8b6d0841554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15810000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c20800f40000010000000100000001000000010000000000000001000000|@5431,1,@17058,@12253,@12254,@12255,@12252,@12224,@10653|360,0,@105 462,0,@105 861,0,@105 962,0,@105 1391,0,@105 1493,0,@105 1874,0,@105 1976,0,@105 12252:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17062| 12253:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17059| 12254:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17060| 12255:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17061| 12256:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17063| 12257:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17064| 12258:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17065| 12259:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17066| 12260:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17067| 12261:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17068| 12262:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17069| 12263:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17070| 12264:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17071| 12265:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17072| 12266:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17073| 12267:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17074| 12268:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17075| 12269:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17076| 12270:D6,2560|488dbc2450ffffff483b7d187306ff5560ca0d07524150415141524c8b70084983fe010f85fc010000ff30ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9b8e36408000000004c8b9424f8000000ff12488d642430415c415e488d6424084d8b2e4983fd090f85cc0000004d8b6e08f6042401740c4c8b34244983fe017d19eb1f4c8b34244d0fb676ff4e8d3475010000004983fe237408415b4883c408eb2448b8f854620800000000488b1c2441544155ff1597080000415d415c4989c3488d64241041f6c30174584d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e1849bb58e46408000000004d895e1049c74608010000004d892e415d4d89650049c74508010000004d89751048c7c0010000004883c418c29000488d64242048b80855620800000000488b5d08ff23488d64243048b8c0ed640800000000488b5d08ff2341ff36ff30ff70104883fb010f856b0300006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f854102000041ff76086a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415c415e488d6424084d8b2e4983fd090f85120100004d8b7608f644242801740d4c8b6c24284983fd017d1aeb1f4c8b6c24284d0fb66dff4e8d2c6d010000004983fd2374074c8b5c2428eb2048b8f854620800000000488b5c242841544156ff156a050000415e415c4989c341f6c3010f849c0000004983eb087115488d64246048b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500050000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d896e1049c74608010000004c8b2c244d892e488d6424084c8b6c24384d89650049c74508010000004d89751048c7c0010000004883c458c29000488d64246048b80855620800000000488b5d08ff23488d64246048b8c0ed640800000000488b5d08ff23488d64245848b8c0ed640800000000488b5d08ff234c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e36408000000004c8b942408010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85b602000041ff76086a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c243801000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415b415e488d6424084d8b2e4983fd090f85870100004d8b76084d8d6fd04c3b6d107306ff5550ca00484d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b7424284d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d893424f644243001740d4c8b7424304983fe017d1aeb1f4c8b7424304d0fb676ff4e8d3475010000004983fe2374074c8b542430eb2048b8f854620800000000488b5c243041534154ff15ee000000415c415b4989c241f6c2010f84820000004d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424284d89750849c74500010000004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e1049c74608010000004c8b2c244d892e488d6424084c8b6c24404d895d004d8965084d89751048c7c0010000004883c460c29000488d64246848b80855620800000000488b5d08ff23488d64246848b8c0ed640800000000488b5d08ff23488d64246048b8c0ed640800000000488b5d08ff23f4000000|@5433,1,@17078,@10599,@10599,@10599|279,0,@5368 379,0,@651 452,0,@5372 514,0,@652 535,0,@5414 800,0,@5368 1081,0,@5368 1183,0,@651 1236,0,@105 1386,0,@652 1407,0,@5414 1428,0,@5414 1477,0,@105 1797,0,@5368 2078,0,@5368 2323,0,@651 2500,0,@652 2521,0,@5414 2542,0,@5414 12271:D4,1096|483b65187306ff5558ca0d07534150415141524c8b304983fe0f0f85c8010000488b58084c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d006620800000000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500070000004c8ba424a80000004d892c24f6c301741cf6c3017402eb1c488d64242048b8385f620800000000488b5d08ff2348c7c3010000004c8b6c24184983fd0375054989dceb3cf6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1748b8f8546208000000004156ff1550030000415e4989c44d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c410c290004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8bac24b80000004d8975004c8bb424b00000004d8b2e4d8d77e84c3b75107306ff5550ca05204d89f749c746f8020000004d896e0849c706070000004c8bac24b00000004d8975006a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b9c240001000049c7c00100000049b9b8e36408000000004c8b9424f8000000ff12488d642438415b415e488d6424084d8b2e4983fd090f85c30000004d8b76084d8d67d04c3b65107306ff5550ca00484d89e749c74424f8050000004c8b6c24204d896c24204d8974241849c7442410010000004c8b2c244d89ee4d896c240849c704244b0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c244c8b6c24084d895d004d8965084d89f64d897510488d64241048c7c0010000004883c418c29000488d64242848b8c0ed640800000000488b5d08ff23f4000000|@5434,1,@17079,@10599|72,0,@105 180,0,@723 256,0,@651 523,0,@105 831,0,@5368 1078,0,@5414 12272:D67,13840|488dbc2418ffffff483b7d187306ff5560ca0d075253415141524c8b304d8b364c8d2d080000004f8d6cb5fc41ffe5e943000000909090e95f020000909090e97b040000909090e98d050000909090e9ef080000909090e9890b0000909090e99d0e0000909090e9ab0f0000909090e9bc100000909090ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3050000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248000000041ff7620ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84242001000048c7c3010000004c8b84243801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e900310000ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3090000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248000000041ff7620ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84242001000048c7c3010000004c8b84243801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e9842c0000ff7008ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9bf260000ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3030000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8b7424604d8b364983fe0f0f85ad0000004c8b742460498b5e08f6c301741ff6c3017402eb1f488da4248800000048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff15b53000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9db2200004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975006a016a016a014c8bb424a000000041ff7608ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842448010000488b9c246001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000e930200000ff7008ff70104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a014c8b74244841ff7618ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424f80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c244801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9541a0000ff7008ff70104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7618ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424e000000048c7c3090000004c8b8424000100004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4249000000041ff7608ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c245001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e935130000ff7008ff70106a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d800000048c7c3030000004c8b8424f800000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e9540c0000ff7008ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9e8e864080000000049c7c201000000ff12488d6424304c8b2c24ff74240849c7c601000000e9e6070000ff7008ff70106a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d800000048c7c3010000004c8b8424f800000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184c8b7424484d8b364983fe0f0f85f00000004c8b7424484d8b6e0841f6c501740949c7c603000000eb0749c7c6010000004983fe03740c49c7c601000000e9a800000041f6c5010f84a000000048c7c001000000482b051a2300007002eb1848c7c001000000488b1d002300004155ff1510250000415da801740d41f6c5017407493bc57f18eb184c89eb4155ff15ea240000415d4989c64983fe017e02eb2441f6c501740b4c3b2db82200007d15eb1c4d0fb675ff4e8d3475010000004983fe23740949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64247048b8385f620800000000488b5d08ff2349c7c6010000006a016a014983fe010f85600200004c8bb4241001000041ff364c8bb424180100004d8b364983c6027118488da4248800000048b8d006620800000000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24100100004d8975004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060900000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060500000041566a016a016a014c8bb424b000000041ff7608ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842458010000488b9c247001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c001000000e90d0200004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c89342448c7442408010000004c8b2c24ff7424084d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24184d896e184c8b6c24204d896e1049c746080b0000004c8b6c24284d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2438eb0e488b442438ff15ec2000004889c34883fb0175075b4883c428eb12488b0424ff15ca2000004889c3488d6424304883fb017508415e4883c430eb12488b0424ff15a22000004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1565200000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff153d200000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25c91f000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520010000004c8b7424104d89751849c74510010000004c8b7424084d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15da1e00004989c6415d4c896c24104c897424184883c410e92afdffff41f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b74246841ff7610ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84240001000048c7c3010000004c8b84242001000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554d8b2e4d8b66104d8b5e184d8d77c84c3b75107306ff5550ca01384d89f749c746f80600000049c74628030000004c8b5424104d8956204d895e184d89661049c746080b0000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff155c1c00004889c34883fb017507488b5c2408eb0e488b442408ff15391c00004889c34883fb017508415e4883c438eb12488b0424ff15161c00004989c6488d64244048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15d91b0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15b11b0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff253d1b000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8b7424604d8b364983fe0f0f85ad0000004c8b742460498b5e08f6c301741ff6c3017402eb1f488da4248800000048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff15621a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a60200004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975006a016a016a014c8bb424a000000041ff7608ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842448010000488b9c246001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85bc0200004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff7424104c8b6c24204d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608050000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2448eb0e488b442448ff15901600004889c34883fb0175035beb12488b0424ff15721600004889c3488d6424084883fb0175075b4883c430eb12488b0424ff154b1600004889c3488d6424384883fb017508415e4883c430eb12488b0424ff15231600004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15e6150000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15be150000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff254a150000488da4249000000048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85970300004d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424504d89660849c706090000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24484d895c24204d897424184c8b7424504d8974241049c74424080900000049c704243b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c74510070000004c8b7424504d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d00000041564d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004c8b7424504d89750849c74500090000004d8d77c84c3b75107306ff5550ca01204d89f749c746f80600000049c74628030000004d896e204c8b6c24104d896e184c8b6c24184d896e1049c74608090000004c8b6c24204d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15791200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb017507488b5c2420eb0e488b442420ff15321200004889c34883fb0175075b4883c420eb12488b0424ff15101200004889c3488d6424284883fb017508415e4883c438eb12488b0424ff15e81100004989c6488d64244048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15ab110000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff1583110000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff250f110000488da4248800000048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85ce0200004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424484d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424484d89650849c74500090000004d8d67c84c3b65107306ff5550ca00604d89e749c74424f80600000049c7442428030000004d896c24204c8b6c24084d896c24184c8b6c24104d896c241049c7442408070000004c8b6c24184d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500410000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2420eb0e488b442420ff15c80e00004889c34883fb0175075b4883c420eb12488b0424ff15a60e00004889c3488d6424284883fb017508415e4883c430eb12488b0424ff157e0e00004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15410e0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15190e0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25a50d0000488da4248000000048b888f3640800000000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85bc0200004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff7424104c8b6c24204d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608050000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff158e0b00004889c34883fb0175035beb12488b0424ff15700b00004889c3488d6424084883fb0175075b4883c438eb12488b0424ff15490b00004889c3488d6424404883fb017508415e4883c428eb12488b0424ff15210b00004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15e40a0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15bc0a0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25480a0000488da4249000000048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f854204000041ff76084c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7618ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424e800000048c7c3110000004c8b8424080100004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184d8b2e4d8b5e104d8b56184d8d77d04c3b75107306ff5550ca012c4d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004c8b6424284d89660849c706070000004d8d67d84c3b65107306ff5550ca016c4d89e749c74424f8040000004d8974241849c74424100b0000004c8b7424204d8974240849c70424210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c7060d0000004d8d4fe84c3b4d107306ff5550ca016c4d89cf49c741f8020000004c8b6424204d89610849c701090000004d8d67c84c3b65107306ff5550ca016e4d89e749c74424f80600000049c7442428030000004d894c24204d895424184d895c241049c74424080b0000004d892c244d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500410000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15890600004889c34883fb017507488b5c2430eb0e488b442430ff15660600004889c34883fb017508415e4883c440eb12488b0424ff15430600004989c6488d64244848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1506060000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15de050000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff256a050000488d64243848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500090000004d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608030000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff150b0400004889c34883fb017507488b5c2408eb0e488b442408ff15e80300004889c34883fb0175075b4883c440eb12488b0424ff15c60300004889c3488d6424484883fb017508415e4883c428eb12488b0424ff159e0300004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1561030000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff1539030000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25c502000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500090000004d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608010000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff157b0100004889c34883fb017507488b5c2408eb0e488b442408ff15580100004889c34883fb0175075b4883c440eb12488b0424ff15360100004889c3488d6424484883fb017508415e4883c428eb12488b0424ff150e0100004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15d1000000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15a9000000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff2535000000f400000000010000000100000001000000010000000000000001000000|@5440,1,@17080,@12251,@10599,@12218,@12274,@12275,@12276,@12277,@12251,@10599,@12218,@12278,@12279,@12280,@12281,@12251,@10599,@12218,@12282,@12283,@12284,@12251,@10599,@12218,@12285,@12286,@12287,@12288,@12251,@10599,@12218,@12289,@12290,@12291,@12251,@10599,@12218,@12292,@12293,@12294,@12295,@12251,@10599,@12218,@12296,@12297,@12298,@12299,@10599,@12251,@10599,@12218,@12300,@12301,@12302,@12303,@12251,@10599,@12218,@12304,@12305,@12273,@12224,@10653,@10599|1454,0,@5368 1825,0,@723 1885,0,@651 2005,0,@105 2328,0,@5368 2412,0,@105 3002,0,@5368 3086,0,@105 3208,0,@105 3798,0,@5368 4358,0,@5393 4999,0,@723 5072,0,@105 5197,0,@105 7412,0,@723 7472,0,@651 7592,0,@105 7915,0,@5368 8744,0,@5437 9072,0,@5372 9771,0,@5437 9910,0,@5372 10597,0,@5437 11402,0,@5437 11539,0,@105 11931,0,@5372 12597,0,@5437 12273:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17113| 12274:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17081| 12275:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17082| 12276:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17083| 12277:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17084| 12278:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17085| 12279:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17086| 12280:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17087| 12281:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17088| 12282:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17089| 12283:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17090| 12284:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17091| 12285:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17092| 12286:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17093| 12287:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17094| 12288:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17095| 12289:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17096| 12290:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17097| 12291:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17098| 12292:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17099| 12293:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17100| 12294:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17101| 12295:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17102| 12296:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17103| 12297:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17104| 12298:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17105| 12299:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17106| 12300:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17107| 12301:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17108| 12302:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17109| 12303:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17110| 12304:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17111| 12305:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17112| 12306:D10,4496|488dbc2460ffffff483b7d187306ff5560ca0d0752534150415141524c8b70084983fe010f8583010000ff30ff70104c8b74241041ff364c8b7424184d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8b6c24184d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042428ff742460ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642428415d415e488d64240849c7c301000000e9e30d000041ff36ff30ff70104c8b7424304983fe030f85ef0100004c8b74241841ff364c8b7424204d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8b6c24204d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8b74242041ff364c8b7424284d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b6c24284d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042428ff742470ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642428415c415e488d64240849c7c501000000e97f0700004c8b74241841ff364c8b7424204d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8b6c24204d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742468ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642428415c415e488d64240849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f850e01000041ff76086a016a016a014c8b74246841ff7608ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042428ff742478ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b842400010000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642428415c415d488d64240849c7c601000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85270400004d8b6d084d8d5fd04c3b5d107306ff5550ca00604d89df49c743f80500000049c743200100000049bc58e46408000000004d89631849c7431001000000415c4d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b5c24084d895c240849c70424210000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544c8b6424484983fc110f85ec000000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f854620800000000488b5c241841564155ff15af090000415d415e4989c341f6c301747d4983eb087115488d64245848b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d896500e9f5010000488d64245848b80855620800000000488b5d08ff234c8b6424484983fc090f85ec000000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f854620800000000488b5c241841564155ff15ac080000415d415e4989c341f6c301747d4983eb047115488d64245848b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d896500e9fa000000488d64245848b80855620800000000488b5d08ff234c8b6424484983fc050f8536010000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f854620800000000488b5c241841564155ff15a9070000415d415e4989c341f6c3010f84c30000004983eb027115488d64245848b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424010000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d89650041554983fe0175074c8b742410eb114c89f3488b442410ff15fb0600004989c64c8b6c24404d8975004c8b7424084d897508415e488d6424084d89751048c7c0010000004883c450c28800488d64245848b80855620800000000488b5d08ff23488d64245848b850f4640800000000488b5d08ff23488d64245848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851101000041ff76086a016a016a014c8b74247041ff7608ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042428ffb42480000000ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b842408010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642428415c415d488d64240849c7c601000000eb15488d64245848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f857c0200004d8b6d084d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c74424200100000049bb58e46408000000004d895c241849c744241001000000415b4d895c240849c70424070000004d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004d89631849c743100b0000004c8b6424104d89630849c703210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f80500000049c74320010000004d896b1849c74310010000004c8b6c24084d896b0849c7034b0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004155f644242001740d4c8b6c24204983fd017d1aeb1f4c8b6c24204d0fb66dff4e8d2c6d010000004983fd2374074c8b5c2420eb1c48b8f854620800000000488b5c24204156ff150e030000415e4989c341f6c3010f84ad0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24104d896c240849c70424010000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424184d89650041554983fe0175074c8b742410eb114c89f3488b442410ff15780200004989c64c8b6c24484d8975004c8b7424084d897508415e488d6424084d89751048c7c0010000004883c458c28800488d64246048b80855620800000000488b5d08ff23488d64246048b888f3640800000000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4d8b2e4983fd090f85950100004d8b6e084d8d77d04c3b75107306ff5550ca00284d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d893424f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe2374074c8b6c2408eb2048b8f854620800000000488b5c240841534154ff15ad000000415c415b4989c541f6c50174594d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d896e1849bd58e46408000000004d896e1049c7460801000000415d4d892e4c8b6c24184d895d004d8965084d89751048c7c0010000004883c438c28800488d64244048b80855620800000000488b5d08ff23488d64244048b888f3640800000000488b5d08ff23f400000000|@5444,1,@17114,@10599,@12308,@10599,@12307,@10599,@10599,@10599|76,0,@105 386,0,@5368 481,0,@105 594,0,@105 904,0,@5368 976,0,@105 1286,0,@5368 1638,0,@5368 1685,0,@5437 1823,0,@5372 2066,0,@651 2115,0,@105 2234,0,@652 2317,0,@651 2366,0,@105 2485,0,@652 2568,0,@651 2621,0,@105 2810,0,@652 2831,0,@5441 2852,0,@5437 3183,0,@5368 3230,0,@5437 3370,0,@5372 3733,0,@651 3949,0,@652 3970,0,@5437 4106,0,@5372 4324,0,@651 4393,0,@5372 4456,0,@652 4477,0,@5437 12307:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17116| 12308:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17115| 12309:D21,10136|483b65187306ff5558ca0d075341524c8b304d8b364c8d2d080000004f8d6cb5fc41ffe5e943000000909090e996040000909090e9ea080000909090e9450d0000909090e998110000909090e9f3150000909090e94e1a0000909090e9621c0000909090e9761e0000909090ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3050000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510010000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e62300004889c34883fb017508415c4883c418eb12488b0424ff15c32300004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3090000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b5c24184c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244d8d6fd84c3b6d107306ff5550ca01484d89ef49c745f80400000049c74518010000004d8975104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c704240d0000004d8b2b4d8b53084d8b4b104d8b43184d8d5fd04c3b5d107306ff5550ca01774d89df49c743f8050000004d8943204d894b184d8953104d896b0849c703070000004d8d6fd84c3b6d107306ff5550ca01584d89ef49c745f8040000004d895d1849c74510030000004d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff157a1f00004889c34883fb017508415c4883c418eb12488b0424ff15571f00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15071b00004889c34883fb017508415c4883c418eb12488b0424ff15e41a00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3030000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510050000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff159c1600004889c34883fb017508415c4883c418eb12488b0424ff15791600004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510070000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518030000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15291200004889c34883fb017508415c4883c418eb12488b0424ff15061200004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3090000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510090000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518030000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15b60d00004889c34883fb017508415c4883c418eb12488b0424ff15930d00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3030000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c501000000e94a080000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3010000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c501000000e9a0040000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3010000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554c8bac24b80000004d8b65004c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8b9c24b80000004d892b4c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24b00000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424084d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ca0400004889c34883fb017504415ceb12488b0424ff15ab0400004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554d8b2e4d8b66084d8b5e104d8b56184d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b7424084d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff152c0300004889c34883fb017504415ceb12488b0424ff150d0300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554c8bac24b80000004d8b65004c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8b9c24b80000004d892b4c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24b00000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510050000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424084d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15930000004889c34883fb017504415ceb12488b0424ff15740000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000f400|@5446,1,@17117,@12311,@12312,@12313,@12314,@12315,@12316,@12317,@12318,@12319,@12320,@12321,@12322,@12323,@12324,@12325,@12326,@12327,@12310|163,0,@105 299,0,@105 678,0,@105 1278,0,@105 1414,0,@105 1792,0,@105 2394,0,@105 2530,0,@105 2909,0,@105 3517,0,@105 3653,0,@105 4032,0,@105 4632,0,@105 4768,0,@105 5147,0,@105 5755,0,@105 5891,0,@105 6270,0,@105 6878,0,@105 7014,0,@105 7418,0,@105 7554,0,@105 7958,0,@105 8094,0,@105 8546,0,@105 9593,0,@105 12310:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17135| 12311:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17118| 12312:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17119| 12313:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17120| 12314:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17121| 12315:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17122| 12316:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17123| 12317:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17124| 12318:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17125| 12319:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17126| 12320:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17127| 12321:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17128| 12322:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17129| 12323:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17130| 12324:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17131| 12325:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17132| 12326:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17133| 12327:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17134| 12328:D24,27592|488dbc24b8feffff483b7d187306ff5560ca0d075250534150415141524c8b7424204d8b364c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e9ab000000909090e9a3000000909090e940040000909090e94f480000909090e98b000000909090e949580000909090e9dd5d0000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e9485e0000909090e90b000000909090e9426200009090904c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842410010000488b9c240801000049c7c00100000049b9b8e36408000000004c8b9424f0000000ff12488d642438415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1526690000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff15f2680000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0ed640800000000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8b7424304d8b76184d8b2e4d89ec4983fd0f0f85762700004d8b76084983fe050f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b5e084c8bb424f00000004d8b164c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d89560849c706070000004c8b6c24584983fd03750949c7c411000000eb0749c7c4030000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d8955204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca005a4d89ef49c745f80500000049c745200100000049ba58e46408000000004d89551849c74510010000004d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00724d89df49c743f8040000004c8b5424304d8953184d896b104c8b6c24284d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00724d89df49c743f80500000049c743200100000049ba58e46408000000004d89531849c7431001000000415a4d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234983fe090f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b56084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d895e0849c706070000004c8b6c24584983fd03750949c7c411000000eb0749c7c4030000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca00664d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00564d89ef49c745f80500000049c745200100000049bb58e46408000000004d895d1849c7451001000000415b4d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f8040000004c8b4424284d8943184d896b104c8b6c24204d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f80500000049c743200100000049b858e46408000000004d89431849c74310010000004d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234983fe030f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b5e084c8bb424f00000004d8b164c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d89560849c706070000004c8b6c24584983fd03750949c7c401000000eb0749c7c40f0000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d8955204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca005a4d89ef49c745f80500000049c745200100000049ba58e46408000000004d89551849c74510010000004d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00724d89df49c743f8040000004c8b5424304d8953184d896b104c8b6c24284d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00724d89df49c743f80500000049c743200100000049ba58e46408000000004d89531849c7431001000000415a4d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234983fe070f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b56084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d895e0849c706070000004c8b6c24584983fd03750949c7c401000000eb0749c7c40f0000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca00664d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00564d89ef49c745f80500000049c745200100000049bb58e46408000000004d895d1849c7451001000000415b4d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f8040000004c8b4424284d8943184d896b104c8b6c24204d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f80500000049c743200100000049b858e46408000000004d89431849c74310010000004d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f856208000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d6424305f415e488d6424084d8b2e4983fd090f85310700004d8b4e084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004c8b7424584983fe010f85730300004c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca800b4d89f749c746f8020000004d895e0849c706070000004d8d6fd04c3b6d107306ff5550ca804b4d89ef49c745f8050000004d895d2049c74518130000004c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca80634d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca80534d89ef49c745f8020000004d89450849c74500070000004d8d57d04c3b55107306ff5550ca80734d89d749c742f8050000004d89422049c742181b0000004c8b5c24504d895a104c8b5c24304d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d89530849c703050000004d8d57d04c3b55107306ff5550ca807a4d89d749c742f80500000049c742200100000049b858e46408000000004d89421849c74210010000004d894a0849c702070000004d8d4fd84c3b4d107306ff5550ca807c4d89cf49c741f8040000004c8b4424304d8941184d8951104c8b5424284d89510849c701390000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fd04c3b4d107306ff5550ca807c4d89cf49c741f80500000049c741200100000049b858e46408000000004d89411849c741100100000041584d89410849c701070000004d8d47d84c3b45107306ff5550ca807e4d89c749c740f8040000004d89481849c74010070000004c8b4c24204d89480849c700210000004d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849c7010d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c290004c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca800b4d89f749c746f8020000004d895e0849c706070000004d8d6fd04c3b6d107306ff5550ca804b4d89ef49c745f8050000004d895d2049c74518050000004c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca806b4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca805b4d89ef49c745f8020000004d89450849c74500070000004d8d57d04c3b55107306ff5550ca807b4d89d749c742f8050000004d89422049c742181b0000004d895a104c8b5c24304d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d89530849c703050000004d8d57d04c3b55107306ff5550ca807a4d89d749c742f80500000049c742200100000049b858e46408000000004d89421849c74210010000004d894a0849c702070000004d8d4fd84c3b4d107306ff5550ca807c4d89cf49c741f8040000004c8b4424304d8941184d8951104c8b5424284d89510849c701390000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fd04c3b4d107306ff5550ca807c4d89cf49c741f80500000049c741200100000049b858e46408000000004d89411849c741100100000041584d89410849c701070000004d8d47d84c3b45107306ff5550ca807e4d89c749c740f8040000004d89481849c74010070000004c8b4c24204d89480849c700210000004d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849c7010d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234d89e54983fc070f851008000041ff76084c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24d00000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85a506000041ff76086a016a014c8b7424484d8b364983fe0f0f857b0100004c8b7424484d8b760841f6c6017418488da4248800000048b8b0f5640800000000488b5d08ff2341f6c6017418488da4248800000048b808ef620800000000488b5d08ff234d8b6ef849c1e50849c1ed074983cd014983fd03740d488da42488000000e9030100004d0fb66eff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84c30000004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb1448b8f8546208000000004156ff15df3d0000415e4d8b2e4c232d233d00004d89ee4983fe00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989dd4983ed014c03e87002eb09ff15923d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24184c892c244c89742408e984010000488da4248800000048b838f6640800000000488b5d08ff236a016a016a014c8bb4249800000041ff7608ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842430010000488b9c245801000049c7c00100000049b9b8e36408000000004c8b942400010000ff12488d642438415d415e488d6424084d8b264983fc090f85dd0300004d8b66084d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c746200100000049bb58e46408000000004d895e1849c74610010000004d89660849c706070000004c892c244c897424084159415d4c8bb424080100004d8b1e4c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8ba424080100004d8934244c8bb424000100004d8b264d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d89660849c706070000004c8ba424000100004d8934244c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8ba424f00000004d8934244d8d77e84c3b75107306ff5550ca002b4d89f749c746f8020000004d89460849c706070000004c8b6424304983fc0575204c8b6424584983fc01750949c7c403000000eb0749c7c411000000e9930000004c8b6424304983fc03751d4c8b6424584983fc01750949c7c40f000000eb0749c7c401000000eb6b4c8b6424304983fc09751d4c8b6424584983fc01750949c7c401000000eb0749c7c40f000000eb434c8b6424304983fc07751d4c8b6424584983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424584983fc01750949c7c413000000eb0749c7c4050000004d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8942204d8962184c8b6424504d8962104c8b6424284d89620849c702010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004c8b4424284d8942184d896a104d895a0849c7024d0000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47d04c3b45107306ff5550ca007a4d89c749c740f80500000049c740200100000049ba58e46408000000004d89501849c7401001000000415a4d89500849c700070000004d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d89421849c742100b0000004d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488da4248800000048b8c0ed640800000000488b5d08ff23488d64247048b8c0ed640800000000488b5d08ff234983fd130f85a710000041ff760841ff76104c8b7424104d8b364983fe0f0f853d0500004c8b74241041ff76084c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c00100000049b9b8e36408000000004c8b942410010000ff12488d642430415a415e488d6424084d8b2e4983fd090f85cc0300004d8b6e08f6442408010f84a5000000f6442408010f8485000000f6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841524155ff1545360000415d415aa801740b4989c64983c6027002eb1848c7c30300000041524155ff1519360000415d415a4989c64d8d4fe84c3b4d107306ff5550ca00644d89cf49c741f8020000004d89710849c70105000000eb40488d64246048b8385f620800000000488b5d08ff234d8d4fe84c3b4d107306ff5550ca00244d89cf49c741f8020000004c8b7424084d89710849c701010000004c8bb424d80000004d8b064c8bb424d80000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8ba424d80000004d8934244d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d89460849c706070000004c8b6424184983fc0575484c8b6424104983fc01751d4c8b6424404983fc01750949c7c403000000eb0749c7c411000000eb1b4c8b6424404983fc01750949c7c40b000000eb0749c7c409000000e90e0100004c8b6424184983fc0375484c8b6424104983fc01751d4c8b6424404983fc01750949c7c40f000000eb0749c7c401000000eb1b4c8b6424404983fc01750949c7c40d000000eb0749c7c407000000e9bb0000004c8b6424184983fc0975454c8b6424104983fc01751d4c8b6424404983fc01750949c7c401000000eb0749c7c40f000000eb1b4c8b6424404983fc01750949c7c407000000eb0749c7c40d000000eb6b4c8b6424184983fc0775454c8b6424104983fc01751d4c8b6424404983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424404983fc01750949c7c409000000eb0749c7c40b000000eb1b4c8b6424404983fc01750949c7c413000000eb0749c7c4050000004d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8943204d8963184c8b6424384d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c240849c70424050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c458c29000488d64246048b8c0ed640800000000488b5d08ff234c8b7424184d8b364983fe0f0f85800500004c8b74241841ff76084c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8e36408000000004c8b942410010000ff12488d642430415a415e488d6424084d8b2e4983fd090f850f0400004d8b6e08f6442408010f84a5000000f6442408010f8485000000f6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841524155ff15e6300000415d415aa801740b4989c64983c6027002eb1848c7c30300000041524155ff15ba300000415d415a4989c64d8d4fe84c3b4d107306ff5550ca00644d89cf49c741f8020000004d89710849c70105000000eb40488d64246048b8385f620800000000488b5d08ff234d8d4fe84c3b4d107306ff5550ca00244d89cf49c741f8020000004c8b7424084d89710849c701010000004c8bb424d80000004d8b064c8bb424d80000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8ba424d80000004d8934244d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d89460849c706070000004c8b6424184983fc05750949c7c409000000eb434c8b6424184983fc03750949c7c407000000eb2f4c8b6424184983fc09750949c7c405000000eb1b4c8b6424184983fc07750949c7c403000000eb0749c7c4010000004983fc0575484c8b6424104983fc01751d4c8b6424404983fc01750949c7c403000000eb0749c7c411000000eb1b4c8b6424404983fc01750949c7c40b000000eb0749c7c409000000e9ff0000004983fc0375484c8b6424104983fc01751d4c8b6424404983fc01750949c7c40f000000eb0749c7c401000000eb1b4c8b6424404983fc01750949c7c40d000000eb0749c7c407000000e9b10000004983fc0975454c8b6424104983fc01751d4c8b6424404983fc01750949c7c401000000eb0749c7c40f000000eb1b4c8b6424404983fc01750949c7c407000000eb0749c7c40d000000eb664983fc0775454c8b6424104983fc01751d4c8b6424404983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424404983fc01750949c7c409000000eb0749c7c40b000000eb1b4c8b6424404983fc01750949c7c413000000eb0749c7c4050000004d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8943204d8963184c8b6424384d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c240849c70424050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c458c29000488d64246048b8c0ed640800000000488b5d08ff234c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24d80000004d8975006a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e36408000000004c8b942408010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f855704000041ff76086a016a016a014c8bb4249000000041ff7608ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c244801000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85220300004d8b5e084c8bb424f80000004d8b0e4c8bb424f80000004d8b364983c6027118488da4248000000048b8d006620800000000488b5d08ff234c8bac24f80000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d894e0849c706070000004c8b6c24384983fd0575484c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c403000000eb0749c7c411000000eb1b4c8b6c24604983fd01750949c7c40b000000eb0749c7c409000000e90e0100004c8b6c24384983fd0375484c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c40f000000eb0749c7c401000000eb1b4c8b6c24604983fd01750949c7c40d000000eb0749c7c407000000e9bb0000004c8b6c24384983fd0975454c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c401000000eb0749c7c40f000000eb1b4c8b6c24604983fd01750949c7c407000000eb0749c7c40d000000eb6b4c8b6c24384983fd0775454c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c411000000eb0749c7c403000000eb1b4c8b6c24604983fd01750949c7c409000000eb0749c7c40b000000eb1b4c8b6c24604983fd01750949c7c413000000eb0749c7c4050000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8965184c8b6424584d8965104c8b6424284d89650849c74500010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500090000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004c8b4c24284d894b184d896b10415d4d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c478c29000488da4248000000048b8c0ed640800000000488b5d08ff23488d64247848b8c0ed640800000000488b5d08ff23488d6424104c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff15cf240000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff159b240000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0ed640800000000488b5d08ff234c8b7424204d8b76084c8b6c242041ff75104c8b6c242841ff75184c8b6c243041ff75204983fe030f85340c00004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7610ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f000000048c7c3030000004c8b8424200100004c8b8c24080100004c8d9424c0000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb424b000000041ff7610ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84243801000048c7c3030000004c8b8424600100004c8b8c24f80000004c8d9424c0000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb424c00000004d8b364983fe0f0f85b70100004c8bb424c0000000498b5e084c8bb424880100004d8b364c8bac24880100004d8b6d004983c5027118488da424f800000048b8d006620800000000488b5d08ff234c8ba424880100004d892c244c8bac24800100004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500070000004c8ba424800100004d892c24f6c301741ff6c3017402eb1f488da424f800000048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f8546208000000004156ff15ff1e0000415e4989c54d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004d89750849c74500210000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b6424384c8924244c896c24084c89742410e9380200004c8bb4248801000041ff364c8bb424900100004d8b364983c6027118488da4240001000048b8d006620800000000488b5d08ff234c8bac24900100004d8975004c8bb424880100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24880100004d8975006a016a016a014c8bb4241001000041ff7608ffb424b0010000ffb424b0010000ffb424b0010000ffb424b0010000ffb424b00100004c8bb424b00100004c8bac24a80100004c8ba424a00100004c8b9c24980100004c8b9424900100004c8b8c24880100004c8b842480010000488bbc2478010000488bb42470010000488b942468010000488b8c2460010000488b9c2458010000488b842450010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424a8010000488b9c24c801000049c7c00100000049b9b8e36408000000004c8b942420010000ff12488d642430415d415e488d6424084d8b264983fc090f85620500004d8b66084d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d89661849c74610010000004c8b24244d89660849c7064b0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c896c24084c89742410415e4c89742410488b1c24ff7424084c8b7424184c8bac24780100004d8b5d004c8bac24780100004d8b6d004983c5027118488da4240001000048b8d006620800000000488b5d08ff234c8ba424780100004d892c244d8d6fe84c3b6d107306ff5550ca08484d89ef49c745f8020000004d895d0849c745000700000041554c8bac24e80000004983fd03750949c7c505000000eb0749c7c5130000004d8d67d04c3b65107306ff5550ca08684d89e749c74424f8050000004d895c24204d896c24184c8bac24e00000004d896c24104c8bac24a80000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000500000041554d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8ba424b80000004d8965204c8ba424c00000004d8965184d8975104c8bb424b00000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564c8b7424404d8b364983fe0975724c8b7424384983fe0175674d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24484d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f8040000004d89751849c745100b0000004c8bb424c00000004d89750849c7450021000000eb674d8d77f04c3b75107305ff5550cd084d89f749c746f8010000004c8b6c24484d892e4d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8b6424384d8965204c8b6424404d8965184c8ba424c00000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564c8bb424880000004d8b364983fe0975784c8bb424800000004983fe01756a4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8bac24900000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f8040000004d89751849c745100b0000004c8bb424d00000004d89750849c7450021000000eb704d8d77f04c3b75107305ff5550cd084d89f749c746f8010000004c8bac24900000004d892e4d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8ba424800000004d8965204c8ba424880000004d8965184c8ba424d00000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564883fb01750a4c8bb424a0000000eb11488b8424a0000000ff152e1800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb0175074c8b742458eb0e488b442458ff15e71700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb0175074c8b742418eb0e488b442418ff15a01700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304881c400010000c29000488da4240001000048b8c0ed640800000000488b5d08ff23488d6424184c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1595140000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff1561140000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0ed640800000000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24d80000004d897500ff742458ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240801000049c7c0010000004c8b8c24d00000004c8b9424f0000000e891a5ffff4989c6488d6424304156ff742460ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24100100004c8b8424080100004c8b8c24d00000004c8b9424c0000000e89ba4ffff4989c3488d6424384c8b7424404983f60241564d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424184d89750849c74500070000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424084d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24180100004c8b8424c80000004c8b8c24d00000004c8b9424c0000000e8d3a2ffff4989c2488d6424404d8d77e84c3b75107306ff5550ca00044d89f749c746f802000000415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00444d89ef49c745f8020000004c8b6424304d89650849c745000b0000004d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f802000000415b488d6424404d895d0849c74500070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c290004c8b7424204d8b760841f6c6010f84ab0000004983fe01750949c7c503000000eb0749c7c5010000004983f5024c8b7424104d3bf5757f4d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d488d6424084c8968084c89304883c420c29000584883c428c29000488d64243048b8385f620800000000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24c80000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e36408000000004c8b9424f8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85900200004d8b6e084c8bb424c00000004d8b0e4c8bb424c00000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8ba424c00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424284983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424204d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c7042405000000f644241001740d4c8b5c24104983fb017d1aeb1f4c8b5c24104d0fb65bff4e8d1c5d010000004983fb237407488b5c2410eb2848b8f854620800000000488b5c24104152415541564154ff15440a0000415c415e415d415a4889c3f6c30174134889d84883e801486bc00270064883c001eb1d48c7c0050000004152415541564154ff15040a0000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff15d0090000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c440c29000488d64244848b8c0ed640800000000488b5d08ff234c8b74242041ff76084c8b7424284d8b76104983fe0b0f85370300004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24c00000004d8975006a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240801000049c7c00100000049b9b8e36408000000004c8b9424f0000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85cf0100004d8b5e084c8bb424b80000004d8b0e4c8bb424b80000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24b80000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d894e0849c706070000004c8b6c24204983fd03750949c7c413000000eb0749c7c4050000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8965184c8b6424184d8965104c8b24244d89650849c74500010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500090000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f80300000041594d894b104d896b0849c703490000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c438c29000488d64244048b8c0ed640800000000488b5d08ff234983fe130f85880100004c8b7424184983f602ff742430ff742408ff7424304156ff742430ff742430ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a000000048898424a0000000488b44245048899c24a8000000488b5c244848898c24b000000048899424b8000000488b5424584889b424c00000004889bc24c80000004c898424d00000004c8b4424404c898c24d80000004c8b4c24384c899424e00000004c8b5424304c899c24e80000004c89a424f00000004c89ac24f80000004c8b34244c89b424000100004c8b7424084c89b424080100004c8b7424104c89b424100100004c8b7424184c89b424180100004c8b7424204c89b424200100004c8b7424284c89b424280100004881c498000000e9f897ffff488da42488000000488d6424084c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8e36408000000004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1567010000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff1533010000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0ed640800000000488b5d08ff23f4000000000000000000000000000080|@5453,1,@17136,@10599,@12218,@10599,@12218,@10599,@10599,@12218,@12330,@12331,@12329,@10599,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@10599,@10599,@12218|271,0,@105 532,0,@5368 616,0,@105 1155,0,@5414 1261,0,@105 1311,0,@105 1372,0,@105 1483,0,@105 1594,0,@105 1914,0,@5368 2198,0,@5368 2282,0,@105 2512,0,@5372 2676,0,@5372 2953,0,@5414 2974,0,@5414 3033,0,@105 3083,0,@105 3144,0,@105 3255,0,@105 3366,0,@105 3686,0,@5368 3970,0,@5368 4054,0,@105 4284,0,@5372 4450,0,@5372 4725,0,@5414 4746,0,@5414 4805,0,@105 4855,0,@105 4916,0,@105 5027,0,@105 5138,0,@105 5458,0,@5368 5742,0,@5368 5826,0,@105 6056,0,@5372 6220,0,@5372 6497,0,@5414 6518,0,@5414 6577,0,@105 6627,0,@105 6688,0,@105 6799,0,@105 6910,0,@105 7230,0,@5368 7514,0,@5368 7598,0,@105 7828,0,@5372 7994,0,@5372 8269,0,@5414 8290,0,@5414 8339,0,@105 8389,0,@105 8450,0,@105 8561,0,@105 8672,0,@105 8783,0,@105 9103,0,@5368 9387,0,@5368 9470,0,@105 9546,0,@105 9894,0,@5372 10056,0,@5372 10429,0,@105 10772,0,@5372 10934,0,@5372 11279,0,@5414 11300,0,@5414 11366,0,@105 11625,0,@5368 11720,0,@5448 11750,0,@1711 11905,0,@651 11953,0,@651 12060,0,@5451 12312,0,@5368 12398,0,@5372 12477,0,@105 12599,0,@105 13081,0,@5372 13356,0,@5414 13377,0,@5414 13471,0,@105 13730,0,@5368 13941,0,@723 14033,0,@105 14754,0,@5414 14830,0,@105 15089,0,@5368 15300,0,@723 15392,0,@105 16180,0,@5414 16229,0,@105 16488,0,@5368 16772,0,@5368 16859,0,@105 17629,0,@5414 17650,0,@5414 17704,0,@105 17963,0,@5368 18047,0,@105 18586,0,@5414 18681,0,@105 18803,0,@105 18925,0,@105 19574,0,@105 19685,0,@723 19745,0,@651 20000,0,@105 20323,0,@5368 20583,0,@105 21756,0,@5414 21810,0,@105 22069,0,@5368 22153,0,@105 22692,0,@5414 22768,0,@105 22829,0,@105 22890,0,@105 24339,0,@723 24406,0,@105 24665,0,@5368 24749,0,@105 24993,0,@651 25373,0,@5414 25450,0,@105 25709,0,@5368 25793,0,@105 26224,0,@5414 26680,0,@105 26939,0,@5368 27023,0,@105 27562,0,@5414 12329:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17139| 12330:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17137| 12331:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17138| 12332:D8,2656|483b65187306ff5558ca0d075341524c8b284d89ee4d89f44d8b364983fe0f0f850f0600004c8b58104d89de4d8b1b4983fb0f750949c7c303000000eb0749c7c3010000004983fb030f85e50500004d8b642408498b5e08ff7008f6c3010f843404000041f6c4010f8428040000f6c3010f840a0400004883fb03750949c7c303000000eb0749c7c3010000004983fb030f85ff0300004d8b294d89ee4983fd010f85800000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8b9c24a80000004d892b4c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca0c584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24a00000004d892be9870000004983fe03757d4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d006620800000000488b5d08ff234c8b9c24a80000004d892b4c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca0c584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24a00000004d892beb044d8b71084156f6c3010f84b3020000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1948b8f854620800000000524154ff15a7080000415c5a4989c64156f60424010f845402000041f6c4010f84350200004d89e64981e6ff01000041564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e98e030000488d64242848b8385f620800000000488b5d08ff23488d64242848b80855620800000000488b5d08ff23488d64242048b8385f620800000000488b5d08ff23488d64241848b8385f620800000000488b5d08ff23eb00ff721041564155ff742418ff7424304151ff742438ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889842488000000488b44246048899c2490000000488b5c245848898c249800000048899424a0000000488b5424684889b424a80000004889bc24b00000004c898424b80000004c8b4424504c898c24c00000004c8b4c24484c899424c80000004c8b5424404c899c24d00000004c89a424d80000004c8b34244c89b424e00000004c8b7424084c89b424e80000004c8b7424104c89b424f00000004c8b7424184c89b424f80000004c8b7424204c89b424000100004c8b7424284c89b424080100004c8b7424304c89b424100100004c8b7424384c89b424180100004c89ac24800000004881c480000000ff22488da424880000004c8b70084c8b6010ff7210415441554156ff7424284151ff742430ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004c8bac24800000004889842480000000488b44246048899c2488000000488b5c245848898c24900000004889942498000000488b5424684889b424a00000004889bc24a80000004c898424b00000004c8b4424504c898c24b80000004c8b4c24484c899424c00000004c8b5424404c899c24c80000004c89a424d00000004c8b34244c89b424d80000004c8b7424084c89b424e00000004c8b7424104c89b424e80000004c8b7424184c89b424f00000004c8b7424204c89b424f80000004c8b7424284c89b424000100004c8b7424304c89b424080100004c8b7424384c89b424100100004c896c24784883c478ff22488da4248000000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b6c24184d896e184c8b6c24204d896e104c8b6c24104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424284983fe017d15488d64245048b83060620800000000488b5d08ff2348c7c001000000488b5c24284c8b4424104c8b4c2418ff15ad0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b7424304d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdc0e86408000000004d892e4983fe0175054889c3eb0c4c89f3ff15b60000004889c34883fb0175035beb12488b0424ff15980000004889c3488d6424084883fb017508415c4883c420eb12488b0424ff15700000004989c4488d6424284d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000f400000000|@5456,1,@17140,@12334,@12335,@12336,@12333,@10599|203,0,@105 337,0,@105 480,0,@651 572,0,@105 694,0,@105 1097,0,@723 1118,0,@652 1139,0,@723 1160,0,@723 2233,0,@731 2483,0,@5391 12333:D3,328|483b65187306ff5558ca0903483bc3750848c7c001000000c34d8d67e84c3b65107306ff5550ca09034d89e749c74424f8020000004d8944240849c70424090000004989c54983ed014d6bed08711048b8d006620800000000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca09334d89f749c746f80600000049c74628010000004d8966204d896e1849bd58e46408000000004d896e1049c746080b0000004d890e4d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7060d00000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8eafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@741,1,@17144|81,0,@105 144,0,@5372 259,0,@105 12334:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17141| 12335:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17142| 12336:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17143| 12337:D9,4216|488dbc2420ffffff483b7d187306ff5560ca0d07525053415041514d8b2a4d89ee4983fd010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e9890000004983fe03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb044d8b720841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b7424684d8b364983fe0f0f85ad0000004c8b742468498b5e08f6c301741ff6c3017402eb1f488da4248000000048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff15a80a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a60200004c8bb4241001000041ff364c8bb424180100004d8b364983c6027118488da4248800000048b8d006620800000000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24100100004d8975006a016a016a014c8bb4249800000041ff7608ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842450010000488b9c244001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85e50100004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff742410ff7424206a016a016a014c8bb424a800000041ff7608ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000488b8424e8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842458010000488b9c245001000049c7c00100000049b9d8ec64080000000049c7c201000000ff12488d642430415d415b488d64240849c7c601000000eb18488da4248800000048b888f3640800000000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89e5483b65187306ff5558ca0068ebbc41564d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424684d89750849c74500090000004d8d77d84c3b75107306ff5550ca00284d89f749c746f8040000004d896e1849c746100b0000004c8b6c24584d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c745000d0000004d8d67d84c3b65107306ff5550ca00284d89e749c74424f80400000049c7442418010000004c8b7424684d897424104c8b7424404d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e41564d8d77c84c3b75107306ff5550ca00084d89f749c746f80600000049c74628010000004c8b6c24104d896e2049c74618ffffffff49bd58e46408000000004d896e1049c74608050000004c8b6c24484d892e4d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24484d896c240849c70424090000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d89651849c745100b0000004c8b6424504d89650849c74500210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d57d04c3b55107306ff5550ca00584d89d749c742f80500000049c74220010000004c8b6c24604d896a1849c74210010000004c8b6c24584d896a0849c7024b0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d895a1849c742100b0000004c8b5c24684d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d4fd84c3b4d107306ff5550ca00784d89cf49c741f8040000004c8b5424584d8951184c8b5424684d8951104c8b5424504d89510849c7011d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004c8b4c24484d89480849c700090000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89411849c741100b0000004c8b4424784d89410849c701210000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849c7000d0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f80200000049c74108010000004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849b9c0e86408000000004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2418eb0e488b442418ff15050100004889c34883fb0175035beb12488b0424ff15e70000004889c3488d6424084883fb0175075b4883c410eb12488b0424ff15c00000004889c3488d6424184883fb0175075b4883c418eb12488b0424ff15990000004889c3488d6424204883fb017508415c4883c430eb12488b0424ff15710000004989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8bb424c00000004d89264d896e0849c746100100000048c7c0010000004883c428c29800f40000|@5457,1,@17145,@12339,@12340,@12341,@12342,@12338,@10599|79,0,@105 215,0,@105 347,0,@105 469,0,@105 591,0,@105 713,0,@105 835,0,@105 957,0,@105 1478,0,@723 1538,0,@651 1658,0,@105 1981,0,@5368 2545,0,@5411 2595,0,@5437 3051,0,@5372 3805,0,@5391 12338:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17150| 12339:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17146| 12340:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17147| 12341:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17148| 12342:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17149| 12343:D33,15936|488dbc2450ffffff483b7d187306ff5560ca0d0752534150415141524883f80b0f85160400004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e97d3500004883f8090f85160400004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9de2c00004883f8070f854d0a00004c8b7424104d8b364983fe0f0f85280300004c8b7424104d8b76084c8bac24b800000041ff75004c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c00000004d892c244c8bac24c800000041ff75004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8ba424c80000004d892c2441f6c601741d41f6c6017402eb1c488d64244848b8385f620800000000488b5d08ff2349c7c60100000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842428010000488b9c241801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9402600004c8b7424184d8b364983fe0f0f85280300004c8b7424184d8b76084c8bac24b800000041ff75004c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c00000004d892c244c8bac24c800000041ff75004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8ba424c80000004d892c2441f6c601741d41f6c6017402eb1c488d64244848b8385f620800000000488b5d08ff2349c7c60100000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c241801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9ac1f00004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e95a1600004883f80d0f85890300004c8b7424104d8b364983fe0f0f85ac0100004c8b742410498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15fc2b00004989c6eb1c488d64243048b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9ef1200004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9e00c00004883f8010f85440500004c8b7424104d8b364983fe0f0f85ac0100004c8b742410498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15612800004989c6eb1c488d64243048b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9750900004c8b7424184d8b364983fe0f0f85ac0100004c8b742418498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff159b2600004989c6eb1c488d64243048b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9140600004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64242848b8d8f7640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c240801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85500200004d8b66084c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64245048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24204d895d2049bb80f86408000000004d895d184d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424090000004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424084d8966104c8b6424184d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f0000000488b442420ff124889c34883fb0175035beb12488b0424ff15ad1f00004889c3488d6424084883fb0175075b4883c408eb12488b0424ff15861f00004889c3488d6424104883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff254d1f0000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15d31d00004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff259a1d0000488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15201c00004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff25e71b0000488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c240801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0200004d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d8965204d8975184c8b7424084d8975104c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424f0000000488b442420ff124c8bb424d80000004d8b2e4c8bb424d80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424304d89662049bc80f86408000000004d8966184c8b6424284d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15011800004889c34883fb0175035beb12488b0424ff15e31700004889c3488d6424084883fb0175075b4883c408eb12488b0424ff15bc1700004889c3488d6424104883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff2583170000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15091600004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff25d0150000488d64244048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620030000004c8b6c24384d896e1849c74610010000004c8b6c24284d896e0849c7064b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004c8bb424e80000004d8b264c8bb424e80000004d8b364983c6027115488d64246848b8d006620800000000488b5d08ff234c8b9c24e80000004d89334d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24204d895e2049bb80f86408000000004d895e184c8b5c24304d895e104d89660849c706090000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c240849c70424090000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b5424184d8953204d8963184c8b6424284d8963104c8b6424104d89630849c703290000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b942408010000488b442418ff124c8bb424f00000004d8b2e4c8bb424f00000004d8b364983c6027115488d64247048b8d006620800000000488b5d08ff234c8ba424f00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424484d89662049bc80f86408000000004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff159c1000004889c34883fb0175035beb12488b0424ff157e1000004889c3488d6424084883fb0175035beb12488b0424ff155b1000004889c3488d6424084883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff252210000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64245848b8d006620800000000488b5d08ff234c8ba424d80000004d892c244d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d89652049bc80f86408000000004d8965184c8b6424284d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89660849c706050000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24184d895c24204d897424184c8b7424204d897424104c8b7424104d8974240849c70424290000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f8000000488b442418ff124c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424384d89662049bc80f86408000000004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15070d00004889c34883fb0175035beb12488b0424ff15e90c00004889c3488d6424084883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff25b00c000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64245848b8d006620800000000488b5d08ff234c8ba424d80000004d892c244d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d89652049bc80f86408000000004d8965184c8b6424284d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89660849c706050000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24184d895c24204d897424184c8b7424204d897424104c8b7424104d8974240849c70424290000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f8000000488b442418ff124c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424384d89662049bc80f86408000000004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15950900004889c34883fb0175035beb12488b0424ff15770900004889c3488d6424084883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff253e09000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520030000004c8b7424304d89751849c74510010000004c8b7424204d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004c8b6424284d89651849c74510010000004c8b6424184d89650849c745004b0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca01504d89df49c743f8020000004c8b6c24184d896b0849c703090000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b5424084d8955204c8b5424104d89551849c74510030000004c8b5424204d8955084d895d004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703150000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d57d84c3b55107306ff5550ca01704d89d749c742f80400000049c74218030000004c8b5c24104d895a104c8b5c24384d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e30400004889c34883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff25af04000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520030000004c8b7424304d89751849c74510010000004c8b7424204d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004c8b6424284d89651849c74510010000004c8b6424184d89650849c745004b0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca01504d89df49c743f8020000004c8b6c24184d896b0849c703090000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b5424084d8955204c8b5424104d89551849c74510030000004c8b5424204d8955084d895d004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703150000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d57d84c3b55107306ff5550ca01704d89d749c742f80400000049c74218030000004c8b5c24084d895a104c8b5c24384d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15540000004889c34883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff2520000000f400000000000000|@5463,1,@17151,@12345,@12346,@12347,@12348,@12349,@12350,@12351,@12352,@12353,@12354,@12355,@12356,@12357,@12358,@12359,@12360,@12361,@12362,@12363,@12364,@12365,@12366,@12367,@12368,@12369,@12370,@12344,@12218,@12218,@12218|73,0,@105 195,0,@105 317,0,@105 439,0,@105 561,0,@105 683,0,@105 1129,0,@105 1251,0,@105 1373,0,@105 1495,0,@105 1617,0,@105 1739,0,@105 2214,0,@105 2340,0,@105 2466,0,@105 2592,0,@105 2639,0,@723 3040,0,@105 3166,0,@105 3292,0,@105 3418,0,@105 3465,0,@723 3837,0,@105 3959,0,@105 4081,0,@105 4203,0,@105 4325,0,@105 4447,0,@105 4859,0,@105 4944,0,@723 5200,0,@5368 5278,0,@105 5400,0,@105 5659,0,@5368 5774,0,@105 5859,0,@723 6115,0,@5368 6220,0,@105 6305,0,@723 6561,0,@5368 6639,0,@105 6761,0,@105 7020,0,@5368 7067,0,@5459 7402,0,@5368 7449,0,@5437 7587,0,@105 7650,0,@5462 8146,0,@5437 8565,0,@5437 8984,0,@5437 9319,0,@5368 9366,0,@5437 9739,0,@105 9803,0,@5462 10076,0,@5437 10495,0,@5437 11097,0,@105 11160,0,@5462 11584,0,@105 11648,0,@5462 12016,0,@105 12080,0,@5462 12469,0,@105 12533,0,@5462 12874,0,@105 12938,0,@5462 13327,0,@105 13391,0,@5462 12344:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17178| 12345:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17152| 12346:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17153| 12347:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17154| 12348:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17155| 12349:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17156| 12350:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17157| 12351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17158| 12352:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17159| 12353:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17160| 12354:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17161| 12355:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17162| 12356:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17163| 12357:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17164| 12358:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17165| 12359:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17166| 12360:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17167| 12361:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17168| 12362:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17169| 12363:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17170| 12364:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17171| 12365:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17172| 12366:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17173| 12367:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17174| 12368:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17175| 12369:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17176| 12370:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17177| 12371:D79,58864|488dbc2440ffffff483b7d187306ff5560ca0d0752534150415141524c8b70104d89f34d8b2e4c8d25080000004f8d64acfc41ffe4e95b000000909090e9b2030000909090e981060000909090e9a0190000909090e9271b0000909090e918220000909090e959240000909090e99a260000909090e921280000909090e9b63f0000909090e93d410000909090e9dd4c0000909090ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e91bdb000041ff7608ff30ff70084c8b7424304d8b6e104c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8ba424d00000004d8b24244983c4027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d89234c8ba424c80000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24c80000004d8923e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8ba424d00000004d8b24244983c4027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d89234c8ba424c80000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24c80000004d8923eb094c8b7424204d8b760841564c8ba424d00000004c8b9c24d80000004c8b9424c00000004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bd5094a409000000004d892e41564c8b74244841ff7618ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c24e00000004c8b8424d80000004c8b8c24080100004c8b9424d0000000ff124989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424184d89750849c7450009000000415e4d89264d896e0849c746100100000048c7c0010000004883c420c290004d8b76084983fe050f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9c6ce00004983fe030f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e94cc500004983fe070f85bf020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e946bd00004983fe0d0f859e040000ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e967b50000ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e95aad00004983fe010f85f5060000ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e97ba50000ff304c8b34244d8b364983fe0f0f8546020000415e41ff76084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9a99d00004c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e99e950000488d64242848b8a8f9640800000000488b5d08ff234c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8e16408000000004d89661849bc18e26408000000004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e99a93000041ff7608ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9968b0000ff304c8b34244d8b364983fe0f0f8546020000415e41ff76084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9998300004c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9637b000041ff7608ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e91571000041ff7608ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9fb6800004c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8e16408000000004d89661849bc18e26408000000004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e90c6700004d8b76084983fe050f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e91f5e00004983fe030f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9365500004983fe070f85c5050000ff70084c8b34244d8b364983fe0f0f85b0010000415e4d8b76084c8b2841f6c601741d41f6c6017402eb1c488d64242848b8385f620800000000488b5d08ff2349c7c6010000004c8b64242041ff7424104155ff742428ff7424204156ff742428ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004889842490000000488b44245048899c2498000000488b5c244848898c24a000000048899424a8000000488b5424584889b424b00000004889bc24b80000004c898424c00000004c8b4424404c898c24c80000004c8b4c24384c899424d00000004c8b5424304c899c24d80000004c89a424e00000004c89ac24e80000004c8b34244c89b424f00000004c8b7424084c89b424f80000004c8b7424104c89b424000100004c8b7424184c89b424080100004c8b7424204c89b424100100004c8b7424284c89b424180100004881c488000000ff22488d642470ff304c8b34244d8b364983fe0f0f85ae010000415e4d8b760841f6c601741d41f6c6017402eb1c488d64243048b8385f620800000000488b5d08ff2349c7c6010000004c8b6c242841ff7510ff742408ff742430ff7424284156ff742430ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245048899c24a0000000488b5c244848898c24a800000048899424b0000000488b5424584889b424b80000004889bc24c00000004c898424c80000004c8b4424404c898c24d00000004c8b4c24384c899424d80000004c8b5424304c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004881c490000000ff22488d6424784c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e94d4800004983fe0d0f856a050000ff70084c8b34244d8b364983fe0f0f859a020000415e498b5e08ff304c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15d3b300004989c6eb1c488d64243848b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e9bf430000ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e98e3c00004983fe010f8599070000ff70084c8b34244d8b364983fe0f0f859a020000415e498b5e08ff304c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff1557ae00004989c6eb1c488d64243848b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e900380000ff304c8b34244d8b364983fe0f0f8598020000415e498b5e084c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d006620800000000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15a4ab00004989c6eb1c488d64243848b8385f620800000000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e97f3300004c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e90b2e0000488d64242848b850fa640800000000488b5d08ff234c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8e16408000000004d89661849bc18e26408000000004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e9072c000041ff76084c8b68084d89ec4d8b6d004983fd0f0f854702000041ff742408ff304c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9ae2600004c8b184d89dd4d8b1b4983fb0f0f8546020000415441ff75084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e95c210000488d6424084d8b56084d89d34983fa030f8544020000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e98e1b00004d89de4983fe010f8544020000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9c9150000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d006620800000000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9a00e000041ff76084d8b76084983fe010f85fc0100004c8b68084d89ee4d8b6d004983fd0f750949c7c503000000eb0749c7c5010000004983fd030f85d1010000488d642408498b4e084c8b28f6c101743cf6c10174224883f97f720949c7c601000000eb1149c7c60200000048d1e949d3e64983ce01eb1c488d64242848b8385f620800000000488b5d08ff2349c7c6030000004c8b64242041ff7424104155ff742428ff7424204156ff742428ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004889842490000000488b44245048899c2498000000488b5c244848898c24a000000048899424a8000000488b5424584889b424b00000004889bc24b80000004c898424c00000004c8b4424404c898c24c80000004c8b4c24384c899424d00000004c8b5424304c899c24d80000004c89a424e00000004c89ac24e80000004c8b34244c89b424f00000004c8b7424084c89b424f80000004c8b7424104c89b424000100004c8b7424184c89b424080100004c8b7424204c89b424100100004c8b7424284c89b424180100004881c488000000ff22488d642470ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8b7424184d8b364983fe0f0f853d0100004c8b742418498b5e08f6c3017479f6c301745ff6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1348b8f854620800000000ff15c99600004889c3f6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15999600004989c6eb1c488d64245048b8385f620800000000488b5d08ff2349c7c6030000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8b2c244d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9d70200006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842400010000488b9c242801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642438415d415e488d64240848c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85c70300004d8b6e084c8b7424204983fe010f85a50000004c8bb424d00000004d8b264c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b1c244d895e2049bb80f86408000000004d895e184d896e104d89660849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c7450005000000eb5d4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15ed9200004989c641566a016a016a014c8b7424304d8b364983fe0f0f85aa0000004c8b742430498b5e08f6c301741cf6c3017402eb1c488d64247048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff15629200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9ba0200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85f40300004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b5424184c8bb424080100004d8b1e4c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004c8b7424484983fe03750949c7c401000000eb1b4c8b7424484983fe05750949c7c405000000eb0749c7c4030000004c8bb424f80000004d8b2e4c8bb424f80000004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8b8c24f80000004d89314d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184c8b5424284d8956104d8966084d892e4d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f8020000004d89750849c745003f0000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c7060d0000004c8bac24f80000004d8b6d004c8ba424f80000004d8b24244983c4027115488d64247848b8d006620800000000488b5d08ff234c8b9424f80000004d89224d8d67d04c3b65107306ff5550ca01684d89e749c74424f8050000004c8b5424304d8954242049ba80f86408000000004d895424184d895c24104d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15bb8c00004889c34883fb0175075b4883c418eb12488b0424ff15998c00004889c3488d6424204883fb017508415c4883c408eb12488b0424ff15718c00004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64247848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85010300004d8b76084c8bac24e00000004d8b5d004c8bac24e00000004d8b6d004983c5027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d892c244c8bac24d80000004d8b65004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c74500050000004c8ba424d80000004d892c244d8d67e84c3b65107306ff5550ca01484d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9424d00000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004d895e204d896618415c4d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c7060d0000004c8bac24c80000004d8b6d004c8ba424c80000004d8b24244983c4027115488d64244848b8d006620800000000488b5d08ff234c8b9424c80000004d89224d8d67d04c3b65107306ff5550ca01684d89e749c74424f8050000004c8b5424084d8954242049ba80f86408000000004d895424184d895c24104d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff159b8700004889c34883fb017504415ceb12488b0424ff157c8700004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85900100004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15178400004889c34883fb017504415ceb12488b0424ff15f88300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85900100004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15938000004889c34883fb017504415ceb12488b0424ff15748000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85910200004d8b5508f6442408010f84dd0000004c8b6c24184983fd057557f644240801743bf64424080174154c8b6c24084983ed014d6bed0270064983c501eb1d48c7c005000000488b5c240841564152ff155e7f0000415a415e4989c5eb79488d64244848b8385f620800000000488b5d08ff23f644240801745ff6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841564152ff15ff7e0000415a415ea801740b4989c54983c5027002eb1848c7c30300000041564152ff15d37e0000415a415e4989c5eb1c488d64244848b8385f620800000000488b5d08ff2349c7c5010000004c8b6424184983fc05750949c7c40b000000eb1b4c8b6424184983fc01750949c7c403000000eb0749c7c4070000004d8d4fe84c3b4d107306ff5550ca00744d89cf49c741f8020000004d89690849c701050000004c8bac24c80000004d8b5d004c8bac24c80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b8424c80000004d89284d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004c8b04244d8945204d894d184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15567d00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85910200004d8b5508f6442410010f84dd0000004c8b6c24184983fd057557f644241001743bf64424100174154c8b6c24104983ed014d6bed0270064983c501eb1d48c7c005000000488b5c241041564152ff15457c0000415a415e4989c5eb79488d64244848b8385f620800000000488b5d08ff23f644241001745ff6442410017415488b4424104883e801486bc00270064883c001eb1a48c7c005000000488b5c241041564152ff15e67b0000415a415ea801740b4989c54983c5027002eb1848c7c30300000041564152ff15ba7b0000415a415e4989c5eb1c488d64244848b8385f620800000000488b5d08ff2349c7c5010000004c8b6424184983fc05750949c7c40b000000eb1b4c8b6424184983fc01750949c7c403000000eb0749c7c4070000004d8d4fe84c3b4d107306ff5550ca00744d89cf49c741f8020000004d89690849c701050000004c8bac24c80000004d8b5d004c8bac24c80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b8424c80000004d89284d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004c8b04244d8945204d894d184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff153d7a00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85500100004d8b6e084d8d77f04c3b75107306ff5550ca01204d89f749c746f801000000415c4d89264d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c74520ffffffff4d8965184c8b6424084d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15bd7600004889c34883fb017504415ceb12488b0424ff159e7600004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff15bb7400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff15dd7200004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85910200004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d80000004d8b2e4c8bb424d80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004c8bac24d00000004d8b6d004c8ba424d00000004d8b24244983c4027115488d64245048b8d006620800000000488b5d08ff234c8b9c24d00000004d89234d8d67d04c3b65107306ff5550ca01604d89e749c74424f8050000004c8b5c24104d895c242049bb80f86408000000004d895c24184c8b5c24084d895c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15806e00004889c34883fb017508415c4883c408eb12488b0424ff155d6e00004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff157a6c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85360500004d8b46084c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01254d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca01354d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca01374d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d67d04c3b65107306ff5550ca01274d89e749c74424f80500000049c744242001000000415e4d8974241849c7442410010000004d8954240849c704244b0000004d8d77e84c3b75107306ff5550ca01374d89f749c746f8020000004d89660849c7060d0000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d006620800000000488b5d08ff23488bbc24c80000004c89274d8d67d04c3b65107306ff5550ca016f4d89e749c74424f8050000004d896c242048bf80f864080000000049897c24184d894424104d895c240849c70424090000004d8d5fe84c3b5d107306ff5550ca01764d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca016e4d89e749c74424f8020000004d895c240849c704240d0000004d8d47e84c3b45107306ff5550ca01764d89c749c740f8020000004d89680849c700090000004c8bac24c80000004d8b6d004c8b9c24c80000004d8b1b4983c3027115488d64244848b8d006620800000000488b5d08ff23488bbc24c80000004c891f4d8d5fd04c3b5d107306ff5550ca01774d89df49c743f8050000004d894b204d8943184d8953104d896b0849c703290000004d8d6fe84c3b6d107306ff5550ca015a4d89ef49c745f8020000004d895d0849c745000d0000004c8b9c24c80000004d8b134c8b9c24c80000004d8b1b4983c3027115488d64244848b8d006620800000000488b5d08ff234c8b8424c80000004d89184d8d5fd04c3b5d107306ff5550ca01764d89df49c743f8050000004c8b4424084d89432049b880f86408000000004d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15746500004889c34883fb017504415ceb12488b0424ff15556500004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85b60400004d8b66084c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324d8d57d04c3b55107306ff5550ca013b4d89d749c742f80500000049c7422001000000415e4d89721849c74210010000004d894a0849c7024b0000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c7060d0000004d8d57d04c3b55107306ff5550ca017b4d89d749c742f80500000049c74220010000004d89621849c74210010000004d896a0849c7024b0000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d8945204d895d1849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca01784d89d749c742f80400000049c74218010000004d895a104c8b5c24084d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ca5e00004889c34883fb017504415ceb12488b0424ff15ab5e00004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85b60400004d8b66084c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013b4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324d8d57d04c3b55107306ff5550ca013b4d89d749c742f80500000049c7422001000000415e4d89721849c74210010000004d894a0849c7024b0000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c7060d0000004d8d57d04c3b55107306ff5550ca017b4d89d749c742f80500000049c74220010000004d89621849c74210010000004d896a0849c7024b0000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d895d204d89451849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca01784d89d749c742f80400000049c74218010000004d895a104c8b5c24084d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15205800004889c34883fb017504415ceb12488b0424ff15015800004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85ed0300004d8b5e084c8bb424e80000004d8b164c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424e80000004d8b2e4c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8ba424e80000004d8934244c8bb424e00000004d8b264d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c706070000004c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca012c4d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016c4d89e749c74424f8040000004d8974241849c7442410070000004d8954240849c70424210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c7060d0000004c8b6424204983fc03750949c7c407000000eb3e4c8b6424204983fc07750949c7c40f000000eb2a4c8b6424204983fc0d750949c7c411000000eb164c8b6424204983fc010f85f201000049c7c4010000004d8d4fd04c3b4d107306ff5550ca017c4d89cf49c741f80500000049c741200100000049b858e46408000000004d89411849c74110010000004d89590849c701070000004d8d5fd04c3b5d107306ff5550ca01764d89df49c743f8050000004d896b204d894b184d8953104d89630849c7033b0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318030000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15f45100004889c34883fb017504415ceb12488b0424ff15d55100004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64245048b8f0fa640800000000488b5d08ff23488d64245848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855402000041ff76086a016a016a014c8b7424304d8b364983fe0f0f85aa0000004c8b742430498b5e08f6c301741cf6c3017402eb1c488d64247048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff157a5000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9ba0200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85e20400004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b4c24184c8bb424080100004d8b264c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004c8b7424484983fe03750949c7c301000000eb1b4c8b7424484983fe05750949c7c305000000eb0749c7c3030000004c8bb424080100004d8b164c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004d8d6fd04c3b6d107306ff5550ca011e4d89ef49c745f80500000049c745200100000049be58e46408000000004d89751849c74510010000004c8b7424204d89750849c74500070000004d8d77d84c3b75107306ff5550ca013e4d89f749c746f8040000004d896e1849c746100b0000004d89560849c706210000004d8d6fe84c3b6d107306ff5550ca015e4d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca013e4d89f749c746f80200000049c74608010000004d892e41564c8bb424000100004d8b2e4c8bb424000100004d8b364983c6027118488da4248000000048b8d006620800000000488b5d08ff234c8b8424000100004d89304d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8966184d8956104d895e084d892e4d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c745003f0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d8965104c8b6424384d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15fc4900004889c34883fb0175035beb12488b0424ff15de4900004889c3488d6424084883fb0175075b4883c420eb12488b0424ff15b74900004889c3488d6424284883fb017504415ceb12488b0424ff15934900004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64247848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85120400004d8b66084c8bb424e80000004d8b2e4c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8b9c24e80000004d89334c8bb424e00000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24e00000004d89334c8bb424e80000004d8b0e4c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8b9c24e80000004d89334c8bb424e00000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24e00000004d89334c8b7424284983fe05750949c7c30b000000eb1b4c8b7424284983fe01750949c7c303000000eb0749c7c3070000004d8d77d04c3b75107306ff5550ca013a4d89f749c746f80500000049c746200100000049ba58e46408000000004d89561849c7461001000000415a4d89560849c706070000004d8d57d84c3b55107306ff5550ca017a4d89d749c742f8040000004d89721849c742100b0000004d894a0849c702210000004d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d89560849c7060d0000004d8d47d04c3b45107306ff5550ca017a4d89c749c740f80500000049c740200100000049ba58e46408000000004d89501849c74010010000004d89600849c700070000004c8ba424d00000004d8b14244c8ba424d00000004d8b24244983c4027115488d64245048b8d006620800000000488b5d08ff23488bbc24d00000004c89274d8d67d04c3b65107306ff5550ca016f4d89e749c74424f8050000004d896c24204d894424184d894c24104d895424084d891c244d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ac4300004889c34883fb017504415ceb12488b0424ff158d4300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64245848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f853c0500004d8b4d084c8bac24d80000004d8b65004c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892b4c8bac24d80000004d8b45004c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005b4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892bf6442408017415488d64244848b8b0f5640800000000488b5d08ff23f6442408017415488d64244848b808ef620800000000488b5d08ff234c8b6c24084d8b6df849c1e50849c1ed074983cd014983fd03740a488d642448e9d30300004c8b6c24084d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84910300004c8b6c24084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f8546208000000004156415141544150ff15e64000004158415c4159415e4c8b6c24084d8b5d004c231dc63f00004d89dd4983fd00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989db4983eb014c03d87002eb194156415141544150ff15854000004158415c4159415e4989c34c8b6c24184983fd05750949c7c20b000000eb1b4c8b6c24184983fd01750949c7c203000000eb0749c7c2070000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f80500000049c745200100000048bf58e464080000000049897d1849c74510010000004d894d0849c74500070000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89691849c741100b0000004d89410849c701210000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d894d0849c745000d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c895f0848c707050000004c8b9c24c80000004d8b0b4c8b9c24c80000004d8b1b4983c3027115488d64244848b8d006620800000000488b5d08ff23488bb424c80000004c891e4d8d5fd04c3b5d107306ff5550ca80774d89df49c743f8050000004d89632049897b184d8943104d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15e13d00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b838f6640800000000488b5d08ff23488d64244848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f853c0500004d8b4d084c8bac24d80000004d8b65004c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892b4c8bac24d80000004d8b45004c8bac24d80000004d8b6d004983c5027115488d64244848b8d006620800000000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005b4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892bf6442410017415488d64244848b8b0f5640800000000488b5d08ff23f6442410017415488d64244848b808ef620800000000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642448e9d30300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84910300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f8546208000000004156415141544150ff152a3b00004158415c4159415e4c8b6c24104d8b5d004c231d1a3a00004d89dd4983fd00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989db4983eb014c03d87002eb194156415141544150ff15c93a00004158415c4159415e4989c34c8b6c24184983fd05750949c7c20b000000eb1b4c8b6c24184983fd01750949c7c203000000eb0749c7c2070000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f80500000049c745200100000048bf58e464080000000049897d1849c74510010000004d894d0849c74500070000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89691849c741100b0000004d89410849c701210000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d894d0849c745000d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c895f0848c707050000004c8b9c24c80000004d8b0b4c8b9c24c80000004d8b1b4983c3027115488d64244848b8d006620800000000488b5d08ff23488bb424c80000004c891e4d8d5fd04c3b5d107306ff5550ca80774d89df49c743f8050000004d89632049897b184d8943104d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15253800004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b838f6640800000000488b5d08ff23488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85e70300004d8b66084c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01344d89f749c746f80500000049c746200100000049bb58e46408000000004d895e1849c7461001000000415b4d895e0849c706070000004d8d5fd84c3b5d107306ff5550ca01744d89df49c743f8040000004d89731849c743100b0000004d89530849c703210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c7060d0000004d8d4fd04c3b4d107306ff5550ca01744d89cf49c741f80500000049c741200100000049bb58e46408000000004d89591849c74110010000004d89610849c701070000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d006620800000000488b5d08ff234c8b8424c80000004d89204d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849c70424010000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15f93100004889c34883fb017504415ceb12488b0424ff15da3100004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442408017415488d64244048b8b0f5640800000000488b5d08ff23f6442408017415488d64244048b808ef620800000000488b5d08ff234c8b6c24084d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24084d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f8546208000000004156415241544151ff15332f00004159415c415a415e4c8b6c24084d8b5d004c231d432e00004d89dd4983fd00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15d22e00004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858e46408000000004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d006620800000000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15592c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838f6640800000000488b5d08ff23488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442410017415488d64244048b8b0f5640800000000488b5d08ff23f6442410017415488d64244048b808ef620800000000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f8546208000000004156415241544151ff15a22900004159415c415a415e4c8b6c24104d8b5d004c231dc22800004d89dd4983fd00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15412900004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858e46408000000004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d006620800000000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15c82600004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838f6640800000000488b5d08ff23488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85e70300004d8b66084c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01344d89f749c746f80500000049c746200100000049bb58e46408000000004d895e1849c7461001000000415b4d895e0849c706070000004d8d5fd84c3b5d107306ff5550ca01744d89df49c743f8040000004d89731849c743100b0000004d89530849c703210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c7060d0000004d8d4fd04c3b4d107306ff5550ca01744d89cf49c741f80500000049c741200100000049bb58e46408000000004d89591849c74110010000004d89610849c701070000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d006620800000000488b5d08ff234c8b8424c80000004d89204d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849c70424090000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15fc2000004889c34883fb017504415ceb12488b0424ff15dd2000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d006620800000000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442410017415488d64244048b8b0f5640800000000488b5d08ff23f6442410017415488d64244048b808ef620800000000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f8546208000000004156415241544151ff15361e00004159415c415a415e4c8b6c24104d8b5d004c231d761d00004d89dd4983fd00750948c7c301000000eb0a48bbf854620800000000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15d51d00004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858e46408000000004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d006620800000000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff155c1b00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838f6640800000000488b5d08ff23488d64244048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85590300004d8b6e084c8bb424e80000004d8b1e4c8bb424e80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8ba424e80000004d8934244c8bb424e00000004d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c706070000004c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01284d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca01684d89e749c74424f8040000004d8974241849c74424100b0000004d895c240849c70424210000004d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7060d0000004d8d57d04c3b55107306ff5550ca01684d89d749c742f80500000049c742200100000049bc58e46408000000004d89621849c74210010000004d896a0849c702070000004c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64245048b8d006620800000000488b5d08ff234c8b8c24d00000004d89294d8d6fd04c3b6d107306ff5550ca015c4d89ef49c745f8050000004c8b4c24084d894d204d8955184d895d104d89650849c74500290000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01504d89df49c743f80500000049c743200100000049c74318010000004c8b6c24084d896b104c8b6c24104d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15221600004889c34883fb017508415c4883c408eb12488b0424ff15ff1500004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85470500004d8b56084c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012d4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012f4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca012f4d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016f4d89e749c74424f8040000004d8974241849c74424100b0000004d894c240849c70424210000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca016f4d89e749c74424f80500000049c74424200100000048bf58e464080000000049897c241849c7442410010000004d8954240849c70424070000004d8d57d84c3b55107306ff5550ca017b4d89d749c742f8040000004d89621849c742100b0000004d896a0849c702210000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d8945204d895d1849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d04c3b55107306ff5550ca01784d89d749c742f80500000049c742200100000049c74218010000004d895a104c8b5c24084d895a0849c7020f0000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e30e00004889c34883fb017504415ceb12488b0424ff15c40e00004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85470500004d8b56084c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01254d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012d4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012f4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca012f4d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016f4d89e749c74424f8040000004d8974241849c74424100b0000004d894c240849c70424210000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca016f4d89e749c74424f80500000049c74424200100000048bf58e464080000000049897c241849c7442410010000004d8954240849c70424070000004d8d57d84c3b55107306ff5550ca017b4d89d749c742f8040000004d89621849c742100b0000004d896a0849c702210000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d895d204d89451849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d04c3b55107306ff5550ca01784d89d749c742f80500000049c742200100000049c74218010000004d895a104c8b5c24084d895a0849c7020f0000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15a80700004889c34883fb017504415ceb12488b0424ff15890700004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b7424384d8b364983fe0f0f85aa0000004c8b742438498b5e08f6c301741cf6c3017402eb1c488d64247048b8385f620800000000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff15550600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a30200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d006620800000000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c244801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85ba0300004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b6c24184d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c74618010000004c8b6424304d8966104c8b6424284d89660849c706030000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f80200000049c74608010000004d892641564d8d77c84c3b75107306ff5550ca01204d89f749c746f80600000049c74628010000004d896e2049c74618ffffffff49bd58e46408000000004d896e1049c74608050000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424304d89650849c74500090000004d8d67d84c3b65107306ff5550ca01604d89e749c74424f8040000004d896c241849c74424100b0000004c8b6c24404d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bcc0e86408000000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff151a0100004889c34883fb0175035beb12488b0424ff15fc0000004889c3488d6424084883fb0175075b4883c418eb12488b0424ff15d50000004889c3488d6424204883fb017508415c4883c410eb12488b0424ff15ad0000004989c4488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64247848b888f3640800000000488b5d08ff23f40000000000000000000000800000000000000080000000000000008000000000000000800000000000000080|@5477,1,@17180,@12374,@12375,@12376,@12377,@10599,@12378,@12379,@12380,@12381,@12382,@12383,@12384,@10599,@10599,@12385,@12386,@12387,@10599,@10599,@12388,@10599,@10599,@12389,@12390,@12391,@10599,@10599,@12392,@10599,@10599,@12393,@12394,@12395,@12396,@12397,@12398,@10599,@12399,@12400,@12401,@12402,@12403,@12404,@12405,@12406,@12407,@12408,@12409,@12410,@12411,@12412,@12413,@12414,@10599,@12218,@12218,@12415,@10599,@12218,@12218,@12416,@12417,@12418,@12419,@12420,@12421,@12422,@12423,@12424,@10599,@12373,@12218,@10599,@12218,@12218,@12218|208,0,@105 352,0,@105 489,0,@105 611,0,@105 1084,0,@105 1228,0,@105 1399,0,@12372 1812,0,@105 1956,0,@105 2291,0,@5368 2403,0,@105 2547,0,@105 2882,0,@5368 2994,0,@105 3138,0,@105 3275,0,@105 3595,0,@5368 3730,0,@105 3874,0,@105 4209,0,@5368 4308,0,@105 4452,0,@105 4787,0,@5368 4922,0,@105 5066,0,@105 5401,0,@5368 5523,0,@105 5667,0,@105 6002,0,@5368 6099,0,@105 6243,0,@105 6578,0,@5368 6628,0,@5468 6725,0,@5357 6739,0,@5358 7127,0,@105 7271,0,@105 7606,0,@5368 7728,0,@105 7872,0,@105 8207,0,@5368 8304,0,@105 8448,0,@105 8783,0,@5368 8889,0,@105 9033,0,@105 9368,0,@5368 9474,0,@105 9618,0,@105 9953,0,@5368 10079,0,@5357 10093,0,@5358 10468,0,@105 10612,0,@105 10947,0,@5368 11059,0,@105 11203,0,@105 11538,0,@5368 11641,0,@723 12089,0,@723 12546,0,@105 12690,0,@105 13025,0,@5368 13160,0,@105 13304,0,@105 13465,0,@723 13721,0,@5368 13820,0,@105 13964,0,@105 14101,0,@105 14421,0,@5368 14556,0,@105 14700,0,@105 14861,0,@723 15117,0,@5368 15239,0,@105 15383,0,@105 15544,0,@723 15800,0,@5368 15897,0,@105 16041,0,@105 16376,0,@5368 16426,0,@5471 16523,0,@5357 16537,0,@5358 16925,0,@105 17069,0,@105 17404,0,@5368 17526,0,@105 17670,0,@105 18005,0,@5368 18128,0,@105 18272,0,@105 18607,0,@5368 18721,0,@105 18865,0,@105 19200,0,@5368 19301,0,@105 19445,0,@105 19780,0,@5368 19947,0,@723 20408,0,@105 20552,0,@105 20689,0,@105 20849,0,@651 20915,0,@723 21346,0,@5368 21519,0,@105 21581,0,@5462 21892,0,@723 21952,0,@651 22069,0,@105 22392,0,@5368 22439,0,@5437 22780,0,@105 22949,0,@105 23139,0,@105 23204,0,@5462 23553,0,@5437 23888,0,@5368 23935,0,@5437 24071,0,@105 24236,0,@105 24427,0,@105 24492,0,@5462 24806,0,@5437 25141,0,@5368 25188,0,@5437 25363,0,@105 25690,0,@5437 26025,0,@5368 26072,0,@5437 26247,0,@105 26574,0,@5437 26770,0,@723 26893,0,@723 27036,0,@105 27335,0,@5437 27531,0,@723 27654,0,@723 27797,0,@105 28096,0,@5437 28527,0,@5368 28574,0,@5437 29012,0,@5437 29186,0,@105 29482,0,@5437 29656,0,@105 29952,0,@5437 30287,0,@5368 30334,0,@5437 30509,0,@105 30705,0,@105 30770,0,@5462 31093,0,@5437 31267,0,@105 31563,0,@5437 31898,0,@5368 31945,0,@5437 32079,0,@105 32201,0,@105 32323,0,@105 32551,0,@105 32611,0,@5462 32795,0,@105 32944,0,@105 33007,0,@5462 33381,0,@5437 33716,0,@5368 33763,0,@5437 33897,0,@105 34019,0,@105 34139,0,@105 34259,0,@105 35071,0,@5437 35406,0,@5368 35453,0,@5437 35587,0,@105 35709,0,@105 35829,0,@105 35949,0,@105 36761,0,@5437 37192,0,@5368 37239,0,@5437 37373,0,@105 37495,0,@105 37619,0,@5372 37864,0,@5372 38325,0,@5474 38346,0,@5437 38500,0,@723 38560,0,@651 38677,0,@105 39000,0,@5368 39047,0,@5437 39388,0,@105 39557,0,@105 39681,0,@5372 39885,0,@105 40399,0,@5437 40734,0,@5368 40781,0,@5437 40915,0,@105 41035,0,@105 41204,0,@5372 41362,0,@5372 41430,0,@105 41925,0,@5437 42063,0,@105 42187,0,@105 42288,0,@5448 42316,0,@1711 42484,0,@651 42550,0,@651 42690,0,@5372 42884,0,@105 43348,0,@5451 43369,0,@5437 43507,0,@105 43631,0,@105 43732,0,@5448 43760,0,@1711 43928,0,@651 43994,0,@651 44134,0,@5372 44328,0,@105 44792,0,@5451 44813,0,@5437 45244,0,@5368 45291,0,@5437 45425,0,@105 45545,0,@105 45667,0,@5372 45825,0,@5372 45893,0,@105 46392,0,@5437 46530,0,@105 46654,0,@105 46755,0,@5448 46783,0,@1711 46951,0,@651 47017,0,@651 47110,0,@5372 47304,0,@105 47772,0,@5451 47793,0,@5437 47931,0,@105 48055,0,@105 48156,0,@5448 48184,0,@1711 48352,0,@651 48418,0,@651 48511,0,@5372 48705,0,@105 49173,0,@5451 49194,0,@5437 49529,0,@5368 49576,0,@5437 49710,0,@105 49830,0,@105 49952,0,@5372 50110,0,@5372 50178,0,@105 50677,0,@5437 50815,0,@105 50939,0,@105 51040,0,@5448 51068,0,@1711 51236,0,@651 51302,0,@651 51395,0,@5372 51589,0,@105 52057,0,@5451 52078,0,@5437 52413,0,@5368 52460,0,@5437 52594,0,@105 52718,0,@5372 52881,0,@5372 52949,0,@105 53419,0,@5437 53754,0,@5368 53801,0,@5437 53935,0,@105 54057,0,@105 54179,0,@105 54301,0,@105 54425,0,@5372 54590,0,@5372 55254,0,@5437 55589,0,@5368 55636,0,@5437 55770,0,@105 55892,0,@105 56014,0,@105 56136,0,@105 56260,0,@5372 56425,0,@5372 57089,0,@5437 57225,0,@723 57285,0,@651 57402,0,@105 57725,0,@5368 58245,0,@5372 58567,0,@5391 58805,0,@5437 12372:D3,784|483b65187305ff5558cd054c8b6a204d89ee4d8b5d004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d8975004c8b6a204d89ee4d8b4d004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d8975004c8b6a184d89ee4d8b6d004d89f44d8b364983c602711048b8d006620800000000488b5d08ff234d8934244c8b72104d89f44d8b164d8d77e84c3b75107306ff5550ca053e4d89f749c746f8020000004d89560849c706050000004d8934244d8d57e84c3b55107306ff5550ca052a4d89d749c742f8020000004d896a0849c702310000004d8d67d04c3b65107306ff5550ca052e4d89e749c74424f8050000004d895c242049c7442418150000004d894c2410498944240849c70424010000004d8d77e84c3b75107306ff5550ca043e4d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca046e4d89e749c74424f8020000004d895c240849c70424070000004d8d5fd84c3b5d107306ff5550ca04764d89df49c743f80400000049b830f96408000000004d89431849c743100b0000004d896b0849c703210000004d8d6fe84c3b6d107306ff5550ca045e4d89ef49c745f8020000004d895d0849c745000d0000004c8b42084d89c341f6c001752f4d8b034d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8943104d89530849c7030b000000eb264d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c703030000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c702070000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@5467,1,@17179|36,0,@105 79,0,@105 122,0,@105 398,0,@5466 12373:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17232| 12374:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17181| 12375:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17182| 12376:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17183| 12377:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17184| 12378:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17185| 12379:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17186| 12380:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17187| 12381:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17188| 12382:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17189| 12383:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17190| 12384:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17191| 12385:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17192| 12386:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17193| 12387:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17194| 12388:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17195| 12389:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17196| 12390:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17197| 12391:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17198| 12392:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17199| 12393:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17200| 12394:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17201| 12395:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17202| 12396:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17203| 12397:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17204| 12398:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17205| 12399:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17206| 12400:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17207| 12401:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17208| 12402:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17209| 12403:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17210| 12404:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17211| 12405:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17212| 12406:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17213| 12407:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17214| 12408:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17215| 12409:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17216| 12410:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17217| 12411:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17218| 12412:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17219| 12413:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17220| 12414:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17221| 12415:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17222| 12416:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17223| 12417:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17224| 12418:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17225| 12419:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17226| 12420:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17227| 12421:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17228| 12422:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17229| 12423:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17230| 12424:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17231| 12425:D8,3784|483b65187306ff5558ca0d075053415141524d8b284d89ee4983fd010f85820000004c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d006620800000000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a80000004d892c24e9890000004983fe03757f4c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d006620800000000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a80000004d892c24eb044d8b700841566a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24f800000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c60100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85d40700004d8b6d084c8b6424104d89e34983fb150f83a30600004c8d1d080000004f8d5ca3fc41ffe3e94b000000909090e9da000000909090e98b010000909090e95f020000909090e933030000909090e9ed030000909090e95f060000909090e957060000909090e9b1040000909090e96b0500009090904d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049bd80f86408000000004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9a10a00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424090000004d89e54d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9e80900004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424010000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420ffffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be90c0900004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420fdffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9300800004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d89e54d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c7442420fbffffff4d896c24184c8b2c244d896c241049c74424080100000049c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be96e0700004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420f9ffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9920600004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d89e54d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c7442420f3ffffff4d896c24184c8b2c244d896c241049c74424080100000049c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9d00500004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420f1ffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9f40400004c8ba424b80000004d8b24244c8b9c24b80000004d8b1b4983c3027115488d64242848b8d006620800000000488b5d08ff234c8b9424b80000004d891a4c8b9c24b00000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703070000004c8b9424b00000004d891af644241001740d4c8b5c24104983fb017d1aeb1f4c8b5c24104d0fb65bff4e8d1c5d010000004983fb237407488b442410eb2148b8f854620800000000488b5c2410415641554154ff15f8040000415c415d415ea801740b4989c34983eb027002eb1c48c7c303000000415641554154ff15c8040000415c415d415e4989c34c8b4c24104d89ca4983f901750949c7c201000000eb5f4d89d249c7c101000000eb15488d64242848b888f3640800000000488b5d08ff234983fa0375204d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890aeb184d89d04983e0034983f8030f85f303000049c7c2010000004983fa010f851b010000f644241001740d4c8b5424104983fa017d1aeb1f4c8b5424104d0fb652ff4e8d1455010000004983fa2374074c8b542410eb2848b8f854620800000000488b5c24104156415541544153ff15e7030000415b415c415d415e4989c24d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004d89500849c700050000004c8b9424a80000004d8b0a4c8b9424a80000004d8b124983c2027115488d64242848b8d006620800000000488b5d08ff23488bbc24a80000004c89174d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8962204d8942184d896a104d894a0849c702290000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d000000e92f010000498b1af6c30174084883fb017d15eb184c0fb653ff4e8d1455010000004983fa2374054989daeb2348b8f8546208000000004156415541544153ff15d4020000415b415c415d415e4989c24d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004d89500849c700050000004c8b9424a80000004d8b0a4c8b9424a80000004d8b124983c2027115488d64242848b8d006620800000000488b5d08ff23488bbc24a80000004c89174d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8942204d8962184d896a1049c74208030000004d890a4d89d54d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c7023f0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d0000004d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89590849c701050000004c8b9c24a80000004d8b134c8b9c24a80000004d8b1b4983c3027115488d64242848b8d006620800000000488b5d08ff234c8b8424a80000004d89184d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004c8b04244d8943204d894b184d8963104d89530849c703090000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15970000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c0010000004883c418c290004d89d049d1e84983c8014c89cf4883c7024989f94d89c2483b65187306ff5558ca007ee9aefbfffff400000000|@5478,1,@17233,@12426,@10599,@10599,@10653,@10599|70,0,@105 206,0,@105 527,0,@5368 795,0,@5462 2405,0,@105 2543,0,@651 2659,0,@5437 2798,0,@651 2909,0,@105 3070,0,@651 3176,0,@105 3404,0,@105 12426:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17234| 12427:D33,18480|488dbc2458ffffff483b7d187306ff5560ca0d07534150415141524c8b70084d89f44c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e915030000909090e9bf050000909090e9c4060000909090e9c9070000909090e9ed0a0000909090e9630c0000909090e90d0f0000909090e9b7110000909090e90c160000909090e979180000909090e9171c0000909090e9b51f0000909090e9b1210000909090ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e94b410000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e90b3b0000ff306a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c240001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64241049c7c601000000e986370000ff306a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c240001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64241048c7c001000000e9cf340000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a01ff7208ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e90e2f00004c8b304d8d6fe04c3b6d107306ff5550ca04504d89ef49c745f8030000004d8965104d89750849c745002d0000004d8d77d84c3b75107306ff5550ca04204d89f749c746f80400000049bcf8e16408000000004d89661849bc18e26408000000004d8966104d896e0849c7060d00000041566a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e9302d0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e959280000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e982230000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d006620800000000488b5d08ff234c8bac24e00000004d8975006a016a016a01ff7208ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243801000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e94a1b0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24b80000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9ed160000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9810f0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d006620800000000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e915080000ff304c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e908040000ff304c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d006620800000000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8e364080000000049c7c201000000ff12488d642430415d415e488d64240848c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85a30100004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff155b2300004889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b34244d897008488d64240849c70009000000488b4424104c8b4c24084c8b9424b80000004c8bac24b00000004c89ac24b80000004c8b7424284c89b424b00000004881c4b0000000ff25e6220000488d64243848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85a30100004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004d89751849c74510010000004c8b34244d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15422100004889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b34244d897008488d64240849c70009000000488b4424104c8b4c24084c8b9424b80000004c8bac24b00000004c89ac24b80000004c8b7424284c89b424b00000004881c4b0000000ff25cd200000488d64243848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0300004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424184d89f34d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d00000041564c8b6c24604d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d67d84c3b65107306ff5550ca00484d89e749c74424f8040000004d8974241849c7442410070000004c8b6c24104d89ee4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d89f64d89720849c702090000004d8d67d04c3b65107306ff5550ca002c4d89e749c74424f8050000004c8b4c24184d89ce4d894c24204d895424184d89db4d895c241049c74424081300000049c704243b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89284d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c745200100000049c74518030000004d89f64d8975104c8b7424284d89750849c745000f0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff159f1d00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415c4883c418eb12488b0424ff15511d00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0300004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424184d89f34d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d00000041564c8b6c24684d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d67d84c3b65107306ff5550ca00484d89e749c74424f8040000004d8974241849c7442410070000004c8b6c24104d89ee4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d89f64d89720849c702090000004d8d67d04c3b65107306ff5550ca002c4d89e749c74424f8050000004c8b4c24184d89ce4d894c24204d895424184d89db4d895c241049c74424080300000049c704243b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89284d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c745200100000049c74518030000004d89f64d8975104c8b7424284d89750849c745000f0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15c91900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415c4883c418eb12488b0424ff157b1900004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64245048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85800100004d8b650849c7c5050000004983ed014d6bed0170064983c501eb1f48c7c00500000048c7c30300000041564154ff157e180000415c415e4989c54d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424084d8955204d895d184d8965104c8b24244d896508488d64240849c745000b0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff157e1700004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85750300004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620f1ffffff49bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d67d84c3b65107306ff5550ca01404d89e749c74424f8040000004d8974241849c74424100b0000004c8b7424284d89f54d8974240849c70424210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca01604d89e749c74424f80500000049bb30fe6208000000004d895c24204c8b5424204d89d34d895424184d89ed4d896c241049c7442408030000004c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c745003f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f80500000049bad8fe6208000000004d8955204c8b4c24184d89ca4d894d184d89db4d895d1049c74508050000004c8b5c24084d895d004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d896b0849c7033f0000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca01744d89df49c743f8050000004c8b4c24304d894b2049b980f86408000000004d894b184d89d24d8953104c8b14244d895308488d64243049c703070000004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff159b1300004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64246048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85bf0100004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620ffffffff49bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c74510050000004c8b34244d89f44d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff156e1100004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85bf0100004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c746200100000049bc58e46408000000004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89f44d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff15410f00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888f3640800000000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c418c2900041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f852f0200004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004d89751849c74510010000004c8b7424084d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89e44d89650849c74500090000004d8d5fe04c3b5d107306ff5550ca01604d89df49c743f8030000004d896b104c8b24244d89e54d89630849c7033d0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318030000004d89ed4d896b10488d6424104c8b2c244d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff15440c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64244048b888f3640800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85440100004d8b76084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500270000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15f90a00004989c648c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15c10a0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15990a0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25250a0000488d64242048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85100200004d8b650848c7c0050000004883e801486bc00170064883c001eb1c48c7c00500000048c7c30300000041564154ff1582090000415c415ea801740b4989c54983c5027002eb1848c7c30300000041564154ff1556090000415c415e4989c54d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f80600000049c74528030000004d895d2049c745180100000049bb58e46408000000004d895d1049c745080b0000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424410000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb017502eb0c4c89f0ff15510800004989c648c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1519080000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15f1070000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff257d070000488d64242048b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85260300004d8b5d0849c7c4050000004983ec014d6be40170064983c401eb1f48c7c00500000048c7c30300000041564153ff15da060000415b415e4989c44d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d89d24d895424104d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d00000049c7c4050000004983ec014d6be40170064983c401eb2348c7c00500000048c7c303000000415641554153ff15b7050000415b415d415e4989c44d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89610849c701050000004c8ba424b80000004d8b14244c8ba424b80000004d8b24244983c4027115488d64243848b8d006620800000000488b5d08ff234c8b8424b80000004d89204d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004c8b4424084d894424204d894c24184c8b0c244d894c2410488d6424084d8954240849c70424010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849c702050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff152c0400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888f3640800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85260300004d8b5d0849c7c4050000004983ec014d6be4ff70064983c401eb1f48c7c00500000048c7c3ffffffff41564153ff1534030000415b415e4989c44d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d89d24d895424104d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d00000049c7c4050000004983ec014d6be40170064983c401eb2348c7c00500000048c7c303000000415641554153ff1511020000415b415d415e4989c44d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89610849c701050000004c8ba424b80000004d8b14244c8ba424b80000004d8b24244983c4027115488d64243848b8d006620800000000488b5d08ff234c8b8424b80000004d89204d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004c8b4424084d894424204d894c24184c8b0c244d894c2410488d6424084d8954240849c70424090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849c702050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15860000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888f3640800000000488b5d08ff23f4000000|@5479,1,@17235,@12429,@12218,@12218,@12430,@12218,@12218,@12251,@10599,@12218,@12431,@10599,@12218,@12251,@10599,@12218,@12432,@12433,@12434,@12435,@12436,@12437,@12218,@12438,@12439,@12440,@12441,@12251,@12442,@12251,@12428|220,0,@105 359,0,@105 494,0,@105 808,0,@5368 910,0,@105 1049,0,@105 1184,0,@105 1498,0,@5368 1767,0,@5368 2036,0,@5368 2138,0,@105 2277,0,@105 2412,0,@105 2534,0,@105 2848,0,@5368 2966,0,@5357 2980,0,@5358 3332,0,@105 3471,0,@105 3606,0,@105 3920,0,@5368 4022,0,@105 4161,0,@105 4296,0,@105 4610,0,@5368 4712,0,@105 4851,0,@105 4986,0,@105 5108,0,@105 5230,0,@105 5352,0,@105 5413,0,@105 5474,0,@105 5727,0,@5368 5829,0,@105 5968,0,@105 6103,0,@105 6356,0,@5368 6458,0,@105 6597,0,@105 6732,0,@105 6854,0,@105 6976,0,@105 7290,0,@5368 7392,0,@105 7531,0,@105 7666,0,@105 7788,0,@105 7910,0,@105 8224,0,@5368 8304,0,@105 8426,0,@105 8740,0,@5368 8820,0,@105 8942,0,@105 9256,0,@5368 9801,0,@5437 10322,0,@5437 10461,0,@5372 11288,0,@5437 11427,0,@5372 12254,0,@5437 12742,0,@5437 12878,0,@5372 13040,0,@1821 13201,0,@1828 13364,0,@5462 13729,0,@5437 13865,0,@5372 14278,0,@5437 14414,0,@5372 14827,0,@5437 15584,0,@5437 16010,0,@5437 16288,0,@5372 16642,0,@5437 17157,0,@105 17552,0,@5437 18067,0,@105 18462,0,@5437 12428:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17250| 12429:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17236| 12430:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17237| 12431:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17238| 12432:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17239| 12433:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17240| 12434:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17241| 12435:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17242| 12436:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17243| 12437:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17244| 12438:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17245| 12439:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17246| 12440:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17247| 12441:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17248| 12442:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17249| 12443:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d006620800000000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@17873|42,0,@105 12444:D8,464|483b65187306ff5558ca09074989dd4c89c34d89d641f6c60175444d8b1e4d8b66084d8b034c3b05dc01000075204d8d77f04c3b75107306ff5550ca092e4d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0966ebb649c7c6010000004983fe01750f49be2068620800000000e9c10000004d8b364d8b264c3b257801000075064d8b7610eb1048b87850620800000000488b5d08ff2350415541564c8b6424504c8b5c24484c8b442440488b7c2438488b742430488b542428488b4c2420488b4424604c8b6c24184c8b7424104987c64c8974241048895c2418488b5c240848894c24204889542428488974243048897c24384c8944244049c7c0010000004c895c24484c896424504c894c245849c7c1010000004c895424604c8b14244c896c24084883c408ff25c1000000488d64241841f6c60175444d8b1e4d8b66084d8b034c3b059d00000075204d8d77f04c3b75107306ff5550ca092e4d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0966ebb649c7c6010000004983fe01751048b8b86c620800000000488b5d08ff234d8b364d8b264c3b253800000075094d8b7610e9e5feffff48b87850620800000000488b5d08ff23f400000000|@5501,1,@17260,@15126,@15126,@12445,@15126,@15126|110,0,@788 146,0,@621 405,0,@828 445,0,@621 12445:D18,2584|483b65187306ff5558ca090750534150415141524c8b7424084983fe510f8d3e0100004c8b34244983fe030f852e01000048bae0fc640800000000488b84248000000048bb90fe640800000000ff154d0a00004989c641564c8b34244c8bac24800000004d8b6d004e8d2c6d010000004983fd01750f48b8a015620800000000e9a20000004d89ec4983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b0900000f878f0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c8ba424800000004c89e9498d742408488d780848d1e9f3a44983c51049d1ed42c604280a8060ffbf4c89f2ff124c8b7424284d8b76f849c1e60849c1ee074983ce0141566a01e953080000488d64243048b8f807620800000000488b5d08ff23eb15488d64242848b8d8fe640800000000488b5d08ff236a016a014c8b8c2480000000488b442430488b5c24284989e0ff1503090000ff3424ff7424104c8b842488000000488b442408488b1c24ff15dd0800004989c64d8b6ef849c1e50849c1ed074983cd0149c7c4010000004d3be5720949c7c501000000eb2e4f8b5ca6fc4983fb030f85070100004d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d004983fd01750949c7c503000000eb0749c7c5010000004983f5026a016a014983fd037505e9b40000004c8b6424384983fc010f85a50000004c8b7424484d8b76f849c1e60849c1ee074983ce014983fe01750f49bd48c2620800000000e9e80600004983fe017e604c3b35900700007d504d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000e97f060000488d642458eb05488d64245848b8d050640800000000488b5d08ff234c892c244c89742408eb1b4d89e34983c3024d89dc483b65187306ff5558ca0070e9c1feffff415e5b4983fe030f8526010000488d6424084c8b7424204983fe01750949c7c003000000eb0749c7c0010000006a016a016a01488b4424184c8b4c24484989e2ff1536070000415b415d415c488d6424084c8b7424184983c6027115488d64243848b8d006620800000000488b5d08ff23488d6424104153415441554156488b4424204c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c245048895c2450488b5c241048894c24584889542460488974246848897c24704c894424784c8b4424084c898c24800000004c8b0c244c899424880000004989c2488b4424184c899c24900000004c89a424980000004c89ac24a00000004883c448e9c6fbffff488d6424284c8b3424498b5ef848c1e30848c1eb074883cb01488b442408ff15220600004989c641564c8b7424284983fe030f85840000004c8b7424104d8b76f849c1e60849c1ee074983ce0141564c8b34244d89f54983fe017514488d64240849be48c2620800000000e9710200004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01e9fa0100004c8b8c24880000004c8b942480000000488b442410488b5c24404c8b0424ff155e0500004989c6488d6424084d8b2e4983fd010f8523010000498b4608488b1c24ff15330500004889c3488d6424086a016a016a01488b44241849c7c0010000004c8b4c24484989e2ff1503050000415b415d415c488d6424084c8b7424184983c6027115488d64243848b8d006620800000000488b5d08ff23488d6424104153415441554156488b4424204c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c245048895c2450488b5c241048894c24584889542460488974246848897c24704c894424784c8b4424084c898c24800000004c8b0c244c899424880000004989c2488b4424184c899c24900000004c89a424980000004c89ac24a00000004883c448e9b3f9ffff488d642428488d64240841ff76084c8b7424204983fe037514488b9c24a0000000488b0424ff15e8030000eb00488b442408488b5c24584c8b842498000000488bbc24a0000000488b7424304c8b6c2450415c488d6424084c8b5c24604c8b5424584c8b4c24504c894c24704989f94c895424784989f24c899c24800000004c89a424880000004c89ac24900000004c8b7424384c897424684883c468ff25680300004c8b34244d89f54c3b7424100f8c49010000488d6424084c8b2c244d89ee418065ffbf4d89f6488d642410415648bae0fc640800000000488b8424b000000048bb90fe640800000000ff15110300004989c641564c8b34244c8bac24b00000004d8b6d004e8d2c6d010000004983fd01750f48b8a015620800000000e9a20000004d89ec4983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5f0200000f878f0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c8ba424b00000004c89e9498d742408488d780848d1e9f3a44983c51049d1ed42c604280a8060ffbf4c89f2ff124c8b7424084d8b76f849c1e60849c1ee074983ce0141566a01e99e000000488d64246048b8f807620800000000488b5d08ff234d89ed4c8b7424284f8b74aefc41ff36498b4608ff15e30100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027115488d64246848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e91cfeffff4c8b34244c89f04c3b742408722e488d6424105a48b8a015620800000000ff12488b9c24b0000000488b442408ff15390100004883c408e9e6fbffff4889c04c8b742418498b5c86fc49b8a0ff6408000000004c8b4c2410ff15060100004c8b2c244983c5024c892c24483b65187303ff5558eb8b4d3bf47f17418065ffbf48c70424030000004c896c2408e9a7f9ffff4bc744a5fc010000004d89e34983c3027115488d64245848b8d006620800000000488b5d08ff234d89dc483b65187306ff5558ca0070ebac4c8b34244c89f04c3b7424087217488d6424105a48b8a015620800000000ff12e9b4f7ffff4889c04c8b742438498b5c86fc49b8e0ff6408000000004c8b4c2410ff154c0000004c8b2c244983c5024c892c24483b65187303ff5558eba2f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5538,1,@17264,@12458,@12458,@12463,@12465,@12446,@12466,@12737,@12739,@12966,@12969,@12988,@12739,@13025,@12454,@12446|51,0,@5482 69,0,@5491 120,0,@165 337,0,@117 360,0,@5494 606,0,@1447 728,0,@4394 879,0,@105 1181,0,@1447 1410,0,@105 1823,0,@5482 1841,0,@5491 1892,0,@165 2109,0,@117 2228,0,@105 2282,0,@165 2335,0,@5498 2430,0,@105 2483,0,@165 2513,0,@5500 12446:D3,248|483b65187305ff5558cd0da80175444c8b284c8b70084d8b65004c8b5a084d3be375204d8d77f04c3b75107306ff5550ca0c204d89f749c746f8010000004d892eeb174c89f0483b65187305ff5558cd0debb849c7c6010000004983fe01750c49bdf8fc640800000000eb134d8b364d8b2e4c8b62084d3bec75664d8b6e1049bcd8086208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d8483b45107306ff5550ca08604989c748c740f804000000488958184c8968104c89700849be1023a509000000004c8930c348b87850620800000000488b5d08ff23f4000000000000|@5490,1,@17257|98,0,@5483 129,0,@123 213,0,@12448 227,0,@621 12447:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@17252| 12448:D6,1504|483b65187305ff5558cd054989c5524c8b34244d8b76084d8b1e4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084d89eae9b20000004983fc0175084d89dae9a40000004f8d4c26ff4c89c84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b055d0500000f87880000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1e94d890a4c89f1498d7308498d7a0848d1e9f3a44983c6104c89e1498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d1c75010000006a016a0149c7c401000000eb15488d64240848b8f807620800000000488b5d08ff234d3be375634d8d6fe04c3b6d107306ff5550ca001c4d89ef49c745f8030000004d8955104d895d0849c74500010000004d8d77e04c3b75107306ff5550ca00344d89f749c746f8030000004d89561049c74608010000004d89264c892c244c89742408e9990000004d89e64983c61049d1ee4f0fb634324e8d3475010000004983fe15741b4d89e64983c6024d89f4483b65187306ff5558ca001ce960ffffff4d8d6fe04c3b6d107306ff5550ca001c4d89ef49c745f8030000004d8955104d89650849c74500010000004d2bdc4983c3014d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e084d89264c892c244c897424084c8b3424ff7424084c8b2c244d8b6d084983fd010f85fe000000488d6424184d8b26498b4e084d8b6e104d8b75004e8d3475010000004983fc01750d493bce75084d89eee9a10000004883f901750f49bed808620800000000e98c0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d2a030000777a4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4983c41049d1ec4b8d742500498d7e0848d1e9f3a4418066ffbf4c8b2c244d8b6d08488d6424084d89750048c7c001000000c3488d64240848b8f807620800000000488b5d08ff234d8b2e498b4e084d8b76104d8b264e8d2465010000004983fd01750d493bcc75084d89f1e9a40000004883f901750f49b9d808620800000000e98f0000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b252a0200000f87060200004d89e34e8d0c9d0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca02704d89cf49d1eb4d8959f841c641ff414983ec024bc744a1fc000000004989cc49d1ec4d89214983c51049d1ed4b8d342e498d790848d1e9f3a4418061ffbf4d8b314e8d04750100000048c7c00100000048c7c301000000ff15e50100004c8b6c24184d89ee41ff75104d89f6498b5e18ff15c4010000ff15b60100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000488b1424ff12488d6424084c8b6c24184d8b650849bed8086208000000004d8934244d89ed4c8b34244d8b264d89f6498b4e084d89f64d8b7610488d6424084883f9030f82e1000000488d6424184983c4024883e9024d8b1e4e8d1c5d010000004983fc01750d493bcb75084c89f0e99e0000004883f901750f48b8d808620800000000e9890000004889c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da300000077664d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca02784989c749d1ea4c8950f8c640ff414983eb024ac74498fc000000004989cb49d1eb4c89184983c41049d1ec4b8d3426488d780848d1e9f3a48060ffbf4c89eae97bfaffff48b8f807620800000000488b5d08ff23488d64241848b808fd640800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23f4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5486,1,@17253,@10502,@12450,@12449|272,0,@117 624,0,@123 809,0,@117 872,0,@123 1153,0,@123 1255,0,@123 1415,0,@117 1436,0,@5484 1457,0,@117 12449:D3,928|483b65187306ff5558ca09034989c6493bd80f85720100004889d9492bce711048b8d006620800000000488b5d08ff234883c1014d8b214d89e54e8d1c65010000004983fe010f8c2e0100004883f9010f8c140100004d8d640eff4d3be3761048b82086620800000000488b5d08ff234e8d2c6d010000004983fe01750d493bcd75084d89cee9a80000004883f901750f49bed808620800000000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25cf0200000f878b0000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02524d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004983c61049d1ee4b8d3431498d7d0848d1e9f3a4418065ffbf4d89ee498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348b8f807620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff234989dd4983c51049d1ed4f0fb62c294e8d2c6d010000004983fd130f85c00100004889d9492bce711048b8d006620800000000488b5d08ff234883c1014d8b214d89e54e8d1c65010000004983fe010f8c7c0100004883f9010f8c620100004d8d640eff4d3be3761048b82086620800000000488b5d08ff234e8d2c6d010000004983fe01750d493bcd75084d89cee9a80000004883f901750f49bed808620800000000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25340100000f87d90000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a534d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004983c61049d1ee4b8d3431498d7d0848d1e9f3a4418065ffbf4d89ee41564989de4983c6027115488d64240848b8d006620800000000488b5d08ff234889d84883c0027115488d64240848b8d006620800000000488b5d08ff234c89f3e8f4fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f807620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b8e002620800000000488b5d08ff234883c302711048b8d006620800000000488b5d08ff234c89f0e977fcfffff4000000000000ffffffffffffff01ffffffffffffff01|@5489,1,@17256|34,0,@105 98,0,@994 147,0,@123 348,0,@117 364,0,@76 380,0,@76 437,0,@105 501,0,@994 550,0,@123 728,0,@105 758,0,@105 829,0,@117 845,0,@76 861,0,@76 883,0,@105 12450:D4,472|483b65187305ff5558cd094883f801750848c7c001000000c3ff30ff70084c8b7424084d8b364a8d0475010000006a016a014989e0ff15b5010000415e415d4983fe017f0f49bcd808620800000000e9e70000004983fe03750f49bcb017620800000000e9d20000004983fe01750f49bcd808620800000000e9bd0000004983fe010f8c930000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d1f01000077534d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004d89f349d1eb4d891c2449c7c301000000eb2a488d64241048b8f807620800000000488b5d08ff23488d64241048b86808620800000000488b5d08ff234d3bf3776f41806424ffbf41544c89eb488b442408e8b6feffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34d89da4983c21049d1ea43c60414204d89da4983c2024d89d3483b65187306ff5558ca0078e962fffffff400ffffffffffffff01|@5487,1,@17254,@12451|71,0,@123 92,0,@187 113,0,@123 269,0,@117 290,0,@120 12451:D3,304|483b65187306ff5558ca0901504150f6c3010f85b50000004c8b234c8b73084c8b5c24084d89dd4d3bdc7c6d4c89e8492bc47115488d64241048b8d006620800000000488b5d08ff234883c0016a016a014c89f34989e0e8a4ffffff415c415e4c8b6c24084983ed014d03e57115488d64241048b8d006620800000000488b5d08ff23415d4d8965004d89750848c7c0010000004883c408c34d2be57115488d64241048b8d006620800000000488b5d08ff234983c401415d4d8965004d89750848c7c0010000004883c408c3488b44240849c7c61100000048d1f849d1fe489949f7fe4c8d34550100000049c7c5110000004d2bee7115488d64241048b8d006620800000000488b5d08ff234983c501415e4d892e49c746080100000048c7c0010000004883c408c3f40000000000|@5488,1,@17255|59,0,@105 117,0,@105 165,0,@105 255,0,@105 12452:D4,248|483b65187305ff5558cd095348bae85c62080000000048c7c303000000ff15ed0000004989c64d8b2e4a8d0c6d010000004883f901750f48b8601c620800000000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077604d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400852498d7608488d780948d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f40000ffffffffffffff01|@5499,1,@17258,@10649|14,0,@707 57,0,@237 223,0,@117 12453:D4,248|483b65187305ff5558cd095348bae85c62080000000048c7c303000000ff15ed0000004989c64d8b2e4a8d0c6d010000004883f901750f48b8601c620800000000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077604d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400852498d7608488d780948d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f40000ffffffffffffff01|@5499,1,@17259,@10649|14,0,@707 57,0,@237 223,0,@117 12454:D6,3392|488dbc2448ffffff483b7d187306ff5560ca09035053415041514c8b7424104d8b76f849c1e60849c1ee074983ce0141564c8b4424204d8b70f849c1e60849c1ee074983ce0141564c8b2c244d89ee4983fd017d0a488d642430e93f0900004d89f64d89f54c3b35cc0c00000f8d270900004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642438e9bb0800004d89f64d89f54c3b35550c00000f8da30800004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642440e9370800004d89f64d89f54c3b35de0b00000f8d1f0800004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642448e9b30700004d89f64d89f54c3b35670b00000f8d9b0700004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564c8b6424284d89e64983fc017d0a488d642450e92d0700004d89f64d89f44c3b35ee0a00000f8d150700004d89e34c89d94e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02314d89f749d1eb4d895ef841c646ff404c89f748d1e948c7c001000000f348ab41564d89e44d89e64983fc017d0a488d642458e9a90600004d89f64d89f44c3b35770a00000f8d910600004d89e44c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642460e9250600004d89f64d89f54c3b35000a00000f8d0d0600004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642468e9a10500004d89f64d89f54c3b35890900000f8d890500004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642470e91d0500004d89f64d89f54c3b35120900000f8d050500004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02014d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab4156ff742438ff742438ff742438ff742420ff74242048c7c001000000488b5c24384c8b4c24484c8b542468ff15060900004c8b6c24484d89ee4983fd017d0a488d642478e9670400004d89f64d89f54c3b35690800000f8d4f0400004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42480000000e9e00300004d89f64d89f54c3b35ef0700000f8dc50300004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42488000000e9560300004d89f64d89f54c3b35750700000f8d3b0300004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42490000000e9cc0200004d89f64d89f54c3b35fb0600000f8db10200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42498000000e9420200004d89f64c89f34c3b35810600000f8d270200004989dd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415649c7c6010000004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004c8ba424800000004d89660849bc2840a509000000004d89264d897500ff3424ff742418ff742430ff742420ff742438ffb42488000000ffb42480000000ff742460ff74247048c7c0010000004c8b8424e00000004c8b8c24b00000004c8b9424a0000000ff15150600004c8b6c24784d89ee4983fd017d0d488da424a0000000e9060100004d89f64d89f54c3b35550500000f8deb0000004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424784d89f54983fe01750f49be48c2620800000000e9fe0100004d89ed4d89ee4983fd017e654d89f64d89f54c3b35cc0400007d4c4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01e96c010000488da424a8000000eb08488da424a800000048b8d050640800000000488b5d08ff23488da424a000000048b8d055620800000000488b5d08ff23488da4249800000048b8d055620800000000488b5d08ff23488da4249000000048b8d055620800000000488b5d08ff23488da4248800000048b8d055620800000000488b5d08ff23488da4248000000048b8d055620800000000488b5d08ff23488d64247848b8d055620800000000488b5d08ff23488d64247048b8d055620800000000488b5d08ff23488d64246848b8d055620800000000488b5d08ff23488d64246048b8d055620800000000488b5d08ff23488d64245848b8d055620800000000488b5d08ff23488d64245048b8d055620800000000488b5d08ff23488d64244848b8d055620800000000488b5d08ff23488d64244048b8d055620800000000488b5d08ff23488d64243848b8d055620800000000488b5d08ff23488d64243048b8d055620800000000488b5d08ff234c8bb424880000004c3b34240f8fce000000488d6424084c8b2c244d89ee418065ffbf4d89f6488d6424084c8bac24800000004d89ec4983fd017517488da4249000000049bd48c2620800000000e94a0100004d89e44d89e54983fc017e694d89ed4d89ec4c3b2d9e0200007d504d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000e9c5000000488da424a8000000eb08488da424a800000048b8d050640800000000488b5d08ff23ff742428ff742438ff742478ff742438ff742470ff742438ffb424d8000000ffb42490000000ffb42488000000ff742460488b442450488b9c24000100004c8b8424d00000004c8b8c24c80000004c8b942488000000ff156e0200004989c64c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027118488da424b800000048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e97dfeffff4c8b9c24800000004d3bdc7f24488da42490000000418065ffbf415c4d8934244d896c240848c7c0010000004883c410c34c8b1c244d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81051620800000000488b5d08ff234d89db4f8b44a3fc4c8b5c24504d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81051620800000000488b5d08ff234d89db4f8b4ca3fc4c8b5c24484d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81051620800000000488b5d08ff234d89db4b8b7ca3fc4c8b9c24980000004d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b89051620800000000488b5d08ff234d89db4f8b54a3fc4d8d5fd84c3b5d107306ff5550ca80774d89df49c743f80400000049897b184d8943104d894b084d89134f895ca5fc4d89e34983c3027118488da424a800000048b8d006620800000000488b5d08ff234d89dc483b65187306ff5558ca0070e981fefffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6553,1,@17837,@13031,@13047,@13030|1774,0,@12455 1998,0,@1447 2134,0,@4394 2158,0,@657 2182,0,@657 2206,0,@657 2230,0,@657 2254,0,@657 2275,0,@657 2296,0,@657 2317,0,@657 2338,0,@657 2359,0,@657 2380,0,@657 2401,0,@657 2422,0,@657 2443,0,@657 2464,0,@657 2548,0,@1447 2688,0,@4394 2833,0,@105 2949,0,@625 3007,0,@625 3065,0,@625 3126,0,@628 3214,0,@105 12455:D3,1400|483b65187305ff5558cd054c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b204d89e641f6c4010f85da0400004d89f441ff34244d8b74240841ff7424104983ed0241557115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb8af620800000000e9620300004d89ed4983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9150200004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be180a110a00000000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be180a110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0016508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8016508000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18026508000000004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50026508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8708c620800000000c34d89f54983fe01750b48b88003650800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b8b003650800000000c34983fe037d0b48b8708c620800000000c348b83004650800000000c3f400|@5537,1,@17263|26,0,@1044 83,0,@105 117,0,@1308 146,0,@105 224,0,@1308 253,0,@105 308,0,@15253 344,0,@105 399,0,@15253 444,0,@1311 493,0,@866 537,0,@5514 582,0,@866 626,0,@1315 714,0,@866 759,0,@5516 803,0,@866 848,0,@1315 936,0,@866 980,0,@5518 1029,0,@1318 1174,0,@866 1219,0,@5520 1304,0,@1044 1324,0,@5528 1344,0,@1044 1361,0,@5529 1378,0,@1044 1389,0,@5533 12456:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284983ec02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be3805110a00000000498b1648b84000650800000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78006508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@5513,1,@17262,@435,@433,@427|26,0,@1044 46,0,@105 98,0,@15175 111,0,@5503 305,0,@2144 353,0,@1021 398,0,@1987 549,0,@866 594,0,@5505 12457:D3,32|483b65187305ff5558cd0149beb805110a00000000498b16ff22f40000000000|@3051,1,@17261|13,0,@15183 12458:D16,2968|483b65187306ff5558ca090341504151ff33ff73084883f8010f84bd010000ff74241048bae85c62080000000048c7c303000000ff15d60b00004989c64d8b2e4a8d0c6d010000004883f901750f49bdd01b620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d030b00000f87340100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645084c498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8201a620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d480a000077704d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604303a8060ffbf488b1424ff12488d642408eb2a488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23ff3424f604240175404c8b3424498b064d89f641ff7608488b5c24204c8b442428ff15050a0000488b54242048b8a015620800000000ff12415d4c892c24483b65187303ff5558ebba488d6424104c8b34244d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e9e5020000909090e9ef030000909090e9f4030000909090e9f9030000909090e92d050000909090e9080700009090904d89f64d89f541ff76104d89ed4d8b75184d89ed41ff75204c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e979000000909090e987000000909090e995000000909090e9a3000000909090e9b1000000909090e9bf000000909090e9cd000000909090e9d8000000909090e9e3000000909090e9ee000000909090e9f9000000909090e904010000909090e90f010000909090488b54241848b82005650800000000ff12e907010000488b54241848b84805650800000000ff12e9f1000000488b54241848b87005650800000000ff12e9db000000488b54241848b89005650800000000ff12e9c5000000488b54241848b8b005650800000000ff12e9af000000488b54241848b8d005650800000000ff12e999000000488b54241848b8f005650800000000ff12e983000000488b54241848b81006650800000000ff12eb70488b54241848b83806650800000000ff12eb5d488b54241848b86006650800000000ff12eb4a488b54241848b88006650800000000ff12eb37488b54241848b8a006650800000000ff12eb24488b54241848b8c806650800000000ff12eb11488b54241848b8e806650800000000ff12ff74241848bae85c620800000000488b44241048c7c303000000ff15b40700004989c6415648bae85c620800000000488b44241048c7c303000000ff158b0700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc385e6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08076508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed01b6208000000004c8930ff15ca0600005a4883c428ff22488d6424184d89f54d89ee41ff75084d89f6498b4610ff74241048bae85c62080000000048c7c303000000ff158a0600004989c6415648bae85c620800000000488b44241048c7c303000000ff15610600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc385e6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be20076508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38076508000000004c8930ff15a00500005a4883c420ff22488d642420488d64241848c7c001000000c3488d64241848c7c001000000c34d89f6498b46084d89f641ff7610ff74241048bae85c62080000000048c7c303000000ff15490500004989c6415648bae85c620800000000488b44241048c7c303000000ff15200500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc385e6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38076508000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0156208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50076508000000004c8930ff15320400005a4883c420ff22488d6424204d89f6498b4608488d642408ff342448bae85c62080000000048c7c303000000ff15f80300004989c64d8b2e4e8d246d010000004983fc01750f49bd3807650800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156d0300000f874f0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb380765080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a015620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d96020000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c410ff22488d642408488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff234d89f6498b4608488d642408ff342448bae85c62080000000048c7c303000000ff150d0200004989c64d8b2e4e8d246d010000004983fc01750f49bd7007650800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b157a0100000f874f0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb700765080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a015620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da3000000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c410ff22488d642408488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5673,1,@17265,@10649,@10649,@10502,@10649,@10649,@10502,@10649,@10649,@10502,@10649,@10649,@12459,@10649|37,0,@707 80,0,@231 259,0,@213 441,0,@117 462,0,@117 522,0,@165 790,0,@5539 812,0,@5540 834,0,@5541 856,0,@5542 878,0,@5543 900,0,@5544 922,0,@5545 944,0,@5546 963,0,@5547 982,0,@5548 1001,0,@5549 1020,0,@5550 1039,0,@5551 1058,0,@5552 1074,0,@707 1107,0,@707 1165,0,@715 1213,0,@5553 1301,0,@231 1353,0,@707 1381,0,@707 1439,0,@715 1487,0,@5554 1575,0,@5555 1650,0,@707 1678,0,@707 1736,0,@715 1785,0,@5555 1829,0,@165 1917,0,@5556 1963,0,@707 2006,0,@5555 2144,0,@5555 2213,0,@165 2394,0,@117 2415,0,@117 2446,0,@707 2489,0,@5557 2627,0,@5557 2696,0,@165 2877,0,@117 2898,0,@117 12459:D72,11680|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e9e2020000909090e951030000909090e93e040000909090e98e040000909090e9a6040000909090e9e9040000909090e978050000909090e9fe050000909090e966060000909090e950070000909090e910080000909090e9e8080000909090e938090000909090e942090000909090e9bf090000909090e9dd090000909090e9cb0a0000909090e95d0c0000909090e9b60c0000909090e9d00c0000909090e9380d0000909090e9630d0000909090e97d0d0000909090e9490e0000909090e9630e0000909090e94a0f0000909090e9b20f0000909090e9c0100000909090e909110000909090e988120000909090e9cf120000909090e978130000909090e976150000909090e9d2160000909090e915170000909090e9f1170000909090e910180000909090e9c1180000909090e90a190000909090e953190000909090e9961a0000909090e9b01a0000909090e9421b0000909090ff7008ff7010ff7018ff7020488b54242848b88807650800000000ff12ff74242848bae85c620800000000488b44241848c7c303000000ff151a2e00004989c64156f644241801740d4c8b7424184983fe017d1aeb1f4c8b7424184d0fb676ff4e8d3475010000004983fe237407488b442418eb1548b8f854620800000000488b5c2418ff15c52d000048bae85c62080000000048c7c305000000ff15a62d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca8076508000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8076508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0076508000000004c8930ff15e52c0000488b1424ff12488d642408488b542420488b442418488b5c2428ff12488b54242848b80808650800000000ff12ff3424e9d9290000ff7008ff7010ff7018488b54242048b88807650800000000ff12488b54242048b8f007650800000000ff12488b542418488b442408488b5c2420ff12488b54242048b8c007650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b80808650800000000ff12ff3424e9002900004c8b68084d8b750041ff751041ff751841ff75204c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b82008650800000000ff12eb5d488b54242048b83808650800000000ff12eb4a488b54242048b85808650800000000ff12eb37488b54242048b87808650800000000ff12eb24488b54242048b89008650800000000ff12eb11488b54242048b8b008650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b8d018620800000000ff12488b442408488b5c24204c8b442418ff155b2b0000488b54242048b8c007650800000000ff12488b54241858488d6424185bff22ff7008ff7010488b54241848b8d808650800000000ff12488b54241848b80009650800000000ff12488b542410488b442408488b5c2418ff12488b54241848b81809650800000000ff12488b54241058488d6424105bff22ff7008ff7010488b54241848b83009650800000000ff12ff742408e9de230000ff7008ff7010488b54241848b85009650800000000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b87009650800000000ff12488b54240858488d6424085bff22ff7008ff7010ff70184c8b7020488b5424204983fe03750c48b88809650800000000eb0a48b8a809650800000000ff12488b54242048b8c809650800000000ff12488b542418488b442408488b5c2420ff12488b54242048b8e009650800000000ff12488b542418488b0424488b5c2420ff12488d642410488b54241048b8f809650800000000ff12488b54240858488d6424085bff22ff7008ff70104c8b7018ff7020488b5424204983fe03750c48b8100a650800000000eb1c4983fe05750c48b8300a650800000000eb0a48b8480a650800000000ff12488b542418488b442408488b5c2420ff12488b54242048b8c007650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b80808650800000000ff12ff3424e90c220000ff7010ff7018ff7020488b54242048b8680a650800000000ff12488b542418488b442408488b5c2420ff12488b54242048b8d018620800000000ff12488b542418488b0424488b5c2420ff12488d642410488b54241048b8d018620800000000ff12488b54240858488d6424085bff22ff7008ff7010ff7018488b54242048b8900a650800000000ff124c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b8b00a650800000000ff12eb5d488b54242048b8c80a650800000000ff12eb4a488b54242048b8e00a650800000000ff12eb37488b54242048b8f80a650800000000ff12eb24488b54242048b8100b650800000000ff12eb11488b54242048b810c9640800000000ff12488b54242048b88815620800000000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b8c007650800000000ff12488b5424104883c408584883c4085bff224c8b700841ff3641ff760841ff761041ff761841ff7620488b54243048b8280b650800000000ff12488b5424304c8b7424104983fe03750c48b8480b650800000000eb0a48b8600b650800000000ff12488b542428488b442418488b5c2430ff12488b54243048b8800b650800000000ff12488b442420488b5c24304c8b442428ff1563270000488b54243048b8c007650800000000ff12488b542428488b442408488b5c2430ff12488b54243048b8980b650800000000ff12488b54242858488d6424285bff224c8b700841ff3641ff760841ff761041ff761841ff7620488b54243048b8b00b650800000000ff124c8b7424104d8b2e4d89ec4983fd03753d4d89f64d8b7608ff742430498b06498b5e0849c7c005000000ff15c2260000488b1424ff12488d642408488b54243048b8b017620800000000ff12eb614d89f64d89e54983fc057502eb534d89f64983fd0175394d89f6498b4608ff74243048ba905d630800000000ff156a260000488b1424ff12488d642408488b54243048b8b017620800000000ff12eb11488b54243048b8d00b650800000000ff12ff742418e9111b0000ff7008ff7010488b54241848b8f00b650800000000ff12488b54241848b8100c650800000000ff12488b542410488b442408488b5c2418ff12488b54241848b8280c650800000000ff12488b54241058488d6424105bff22488d6424085a48b8400c650800000000ff22ff7008ff7010ff7018488b54242048b8600c650800000000ff12488b54242048b8f007650800000000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b8800c650800000000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b8980c650800000000ff12488b54240858488d6424085bff22ff7008ff7010ff7018ff7020488b54242848b8b00c650800000000ff12ff742418e9b0160000ff7008ff7010ff7018488b54242048b8d00c650800000000ff124c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b8b00a650800000000ff12eb5d488b54242048b8c80a650800000000ff12eb4a488b54242048b8e00a650800000000ff12eb37488b54242048b8f80a650800000000ff12eb24488b54242048b8100b650800000000ff12eb11488b54242048b810c9640800000000ff12488b54242048b88815620800000000ff12488b0424488b5c24204c8b442418ff1546240000488d642408488b54241848b8c007650800000000ff12488b5424104883c408584883c4085bff22ff7008ff7010ff7018ff7020488b54242848b8e80c650800000000ff12ff74242848bae85c620800000000488b44240848c7c303000000ff15da2300004989c54d8b75004e8d3475010000004983fe01750f48b87018620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8e2100000f87ee0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408f644241801751b488d6424084c8b742410498b06488b542418488b5c2420ff12eb16488d642408488b54242048b8981d620800000000ff12488b54242048b88818620800000000ff12488b0424488b5c24204c8b442418ff15ad220000488d642408488b54241848b8c007650800000000ff12488b542410584883c4105bff22488d64243848b8f807620800000000488b5d08ff23ff7008ff7010488b54241848b8100d650800000000ff12ff74241848bae85c620800000000488b44240848c7c303000000ff1536220000488b1424ff12488d642410488b54241048b8c007650800000000ff12488b54240858488d6424085bff22ff7008488b54241048b8300d650800000000ff12488b54240858488d6424085bff22ff7010ff7018ff7020488b54242048b8500d650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b8d018620800000000ff12488b442408488b5c24204c8b442418ff1591210000488b54242048b8c007650800000000ff12488b54241858488d6424185bff22ff7008488b54241048b8700d650800000000ff12488b54241048b8980d650800000000ff12488b54240858488d6424085bff22ff7008488b54241048b8b00d650800000000ff12488b54240858488d6424085bff22ff7008ff7010488b54241848b8d80d650800000000ff12488b442408488b5c24184c8b442410ff15e9200000488b54241848b8c007650800000000ff124c8b2c244d89ee41ff75004d89f641ff7608488b54242848b8781c620800000000ff12ff74242848bae85c620800000000488b44241048c7c303000000ff158d200000488b1424ff12488d642408488b54242848b87018620800000000ff12ff74242848bae85c620800000000488b44240848c7c303000000ff1549200000488b1424ff12488d6424305a48b88818620800000000ff22ff7008488b54241048b8f80d650800000000ff12488b54240858488d6424085bff22488d642408ff7008ff7010488b54241048b8100e650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff15cb1f0000488b1424ff12488d642408488b54241048b8c007650800000000ff124c8b2c244d89ee41ff75004d89f641ff7608488b54242048b8781c620800000000ff12ff74242048bae85c620800000000488b44241048c7c303000000ff15641f0000488b1424ff12488d642408488b54242048b87018620800000000ff12ff74242048bae85c620800000000488b44240848c7c303000000ff15201f0000488b1424ff12488d6424285a48b88818620800000000ff22488d642408ff7008ff7010488b54241048b8380e650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff15c41e0000488b1424ff12488d6424084c8b34244983fe03488d642410750d5a48b8580e650800000000ff22488d64240848c7c001000000c3ff7008ff7010488b54241848b8780e650800000000ff12488b542410488b442408488b5c2418ff12ff74241848bae85c620800000000488b44240848c7c303000000ff15401e00004989c64d8b2e4a8d0c6d010000004883f901750f48b8d018620800000000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25451c000077644d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640082c498d7608488d780948d1e9f3a48060ffbf5a4883c420ff22488d642408488d64242848b8f807620800000000488b5d08ff23ff7008ff7010488b54241848b8a00e650800000000ff12488b542410488b442408488b5c2418ff12488b54241848b8d018620800000000ff1258488d642408488b5c24084158488d642408ff25191d00004c8b7008ff7010ff7018ff70204c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e959000000909090e967000000909090e975000000909090e980000000909090e98b000000909090e996000000909090e9a1000000909090e9ac000000909090e9b7000000909090488b54242048b8c00e650800000000ff12e9af000000488b54242048b8e00e650800000000ff12e999000000488b54242048b8000f650800000000ff12e983000000488b54242048b8200f650800000000ff12eb70488b54242048b8400f650800000000ff12eb5d488b54242048b8680f650800000000ff12eb4a488b54242048b8880f650800000000ff12eb37488b54242048b8b00f650800000000ff12eb24488b54242048b8d00f650800000000ff12eb11488b54242048b8f00f650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b8d018620800000000ff12488b442408488b5c24204c8b442418ff15a91b0000488b54242048b8c007650800000000ff12488b54241858488d6424185bff22ff7008ff7010488b54241848b81010650800000000ff12488b0424488b5c24184c8b442410ff15571b0000488d642408488b54241048b8c007650800000000ff12488b54240858488d6424085bff224c8b68084d8b750841ff751041ff751841ff75204983fe017513488b54242048b83010650800000000ff12eb2a4983fe057513488b54242048b85010650800000000ff12eb11488b54242048b87010650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b8d018620800000000ff12488b0424488b5c24204c8b442418ff159e1a0000488d642408488b54241848b8c007650800000000ff12488b54241058488d6424105bff224c8b680841ff75004d8b750841ff751041ff751841ff75204c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242848b89010650800000000ff12eb5d488b54242848b8b010650800000000ff12eb4a488b54242848b8d010650800000000ff12eb37488b54242848b8f010650800000000ff12eb24488b54242848b81011650800000000ff12eb11488b54242848b83011650800000000ff12488b0424488b5c24284c8b442420ff15bb190000488d642408488b54242048b8c007650800000000ff12ff74242048bae85c620800000000488b44240848c7c303000000ff157d1900004989c54d8b75004e8d3475010000004983fe01750f48b87018620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da91700000f87aa0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408488b542418488b442410488b5c2420ff12488b54242048b88818620800000000ff12488b442408488b5c24204883c41841584883c408ff2571180000488d64243048b8f807620800000000488b5d08ff23ff7008ff7010ff7018ff7020488b54242848b85011650800000000ff12488b442410488b5c24284c8b442420ff1522180000488b54242848b8c007650800000000ff124c8b6c24084d89ee41ff75004d89f641ff7608488b54243848b8781c620800000000ff12ff74243848bae85c620800000000488b44241048c7c303000000ff15c5170000488b1424ff12488d642408488b54243848b87018620800000000ff12ff74243848bae85c620800000000488b44240848c7c303000000ff1581170000488b1424ff12488d642418488b54242848b88818620800000000ff12488b54242848b8b818620800000000ff12ff74242848bae85c620800000000488b44242048c7c303000000ff152c170000488b1424ff12488d642408488b54242848b87018620800000000ff12ff74242848bae85c620800000000488b44240848c7c303000000ff15e8160000488b1424ff12488d6424305a48b88818620800000000ff22ff7008ff7010488b54241848b87011650800000000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b8c007650800000000ff12488b54240858488d6424085bff224c8b700841ff3641ff760841ff761041ff761841ff762041ff7628488b54243848b89011650800000000ff124c8b7424184d8b2e4d89ec4983fd03753d4d89f64d8b7608ff742438498b06498b5e0849c7c005000000ff1521160000488b1424ff12488d642408488b54243848b8b017620800000000ff12eb614d89f64d89e54983fc057502eb534d89f64983fd0175394d89f6498b4608ff74243848ba905d630800000000ff15c9150000488b1424ff12488d642408488b54243848b8b017620800000000ff12eb11488b54243848b8d00b650800000000ff12ff742428e9d8030000ff7008488b54241048b8b011650800000000ff1258488b5c24084158488d642408ff2562150000ff7008ff7010ff7018ff7020488b54242848b8d011650800000000ff12488b5424284c8b34244983fe03488d642408750c48b8480b650800000000eb0a48b8600b650800000000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b8c007650800000000ff12488b542410488b442408488b5c2418ff12f604240175264c8b342441ff36488b54242048b8e811650800000000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3ff7008ff7010488b54241848b80012650800000000ff12488b542410488b442408488b5c2418ff12488b54241848b8d018620800000000ff1258488d642408488b5c24084158488d642408ff2550140000ff7008ff7010488b54241848b82012650800000000ff12488b542410488b442408488b5c2418ff12488b54241848b8d018620800000000ff1258488d642408488b5c24084158488d642408ff25f71300004c8b7008ff7010ff7018ff70204c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e949000000909090e954000000909090e95f000000909090e96a000000909090e975000000909090e980000000909090e98b000000909090488b54242048b84012650800000000ff12e983000000488b54242048b86012650800000000ff12eb70488b54242048b88012650800000000ff12eb5d488b54242048b8a812650800000000ff12eb4a488b54242048b8c812650800000000ff12eb37488b54242048b8e812650800000000ff12eb24488b54242048b80813650800000000ff12eb11488b54242048b82813650800000000ff12488b542418488b442410488b5c2420ff12488b54242048b8d018620800000000ff12488b442408488b5c24204c8b442418ff15c3120000488b54242048b8c007650800000000ff12488b54241858488d6424185bff22ff7008488b54241048b84813650800000000ff12488b54240858488d6424085bff22ff70084c8b7010ff70184983fe077513488b54241848b87013650800000000ff12eb434983fe057513488b54241848b89013650800000000ff12eb2a4983fe037513488b54241848b8b013650800000000ff12eb11488b54241848b8d013650800000000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b8c007650800000000ff12488b54240858488d6424085bff22ff7008ff7010488b54241848b8f013650800000000ff12488b0424488b5c24184c8b442410ff15b5110000488d642408488b54241048b8c007650800000000ff12488b54240858488d6424085bff22f60424010f85dd0200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424504d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151c11000048bae85c62080000000048c7c305000000ff15fd1000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b259a0f000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64246048b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15e30f000048bae85c62080000000048c7c305000000ff15c40f00004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25690e0000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64246048b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15dc0e0000488b1424ff12488d642408488b54245048b8681a620800000000ff12488b0424488b5c24504c8b442448ff15a40e0000488d642408488b54244848b8b017620800000000ff12415d4c892c24483b65187303ff5558e919fdffff488d642408ff742410f60424010f858b0000004c8b2c244d8b75004d89ed41ff750841ff36498b4608ff74245048bae85c62080000000048c7c303000000ff152e0e0000488b1424ff12488d642408488b54245048b8a8c4640800000000ff12488b0424488b5c24504c8b442448ff15f60d0000488d642408488b54244848b8b017620800000000ff12415d4c892c24483b65187303ff5558e96bffffff488d642408488b54243848b84014650800000000ff12ff74243848bae85c620800000000488b44241048c7c303000000ff158e0d0000488b1424ff12488d642408488b54243848b85814650800000000ff12ff74243848bae85c620800000000488b44240848c7c303000000ff154a0d0000488b1424ff12488d642418488b54242848b87814650800000000ff12488b5424204883c410584883c4105bff22f6042401756e4c8b2c244d8b75004d89ed41ff750841ff36498b4608488b542438488b5c2440ff12488b54244048b8681a620800000000ff12488b0424488b5c24404c8b442438ff15c80c0000488d642408488b54243848b8b017620800000000ff12415d4c892c24483b65187303ff5558eb8c488d642408ff742408f60424010f85f60100004c8b2c244d8b75004d89ed41ff750841ff3641ff76084d8b761041ff3641ff7608488b54245848b8781c620800000000ff12ff74245848bae85c620800000000488b44241048c7c303000000ff15340c0000488b1424ff12488d642408488b54245848b87018620800000000ff12ff74245848bae85c620800000000488b44240848c7c303000000ff15f00b0000488b1424ff12488d642418488b54244848b88818620800000000ff12ff74244848bae85c620800000000488b44240848c7c303000000ff15ac0b00004989c64d8b2e4a8d0c6d010000004883f901750f48b89814650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25990a00000f87be0000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400828c6400973c6400a70498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8b014650800000000ff12488b442408488b5c24484c8b442440ff15ba0a0000488b54244848b8b017620800000000ff124c8b6c24104c896c2418483b65187303ff55584883c418e915feffff488d64245848b8f807620800000000488b5d08ff23488d642408f6042401751d4c8b342441ff36488b54243048b8c814650800000000ff12ff3424eb3e488d642410f604240175264c8b342441ff36488b54242048b87814650800000000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3f604240175594c8b3424498b064d89f641ff76084c8b34244983fe017513488d642428488b542410488b5c2418ff12eb33488b542438488b5c2440ff12488b54244048b8d018620800000000ff12415d4c892c24483b65187303ff5558eba1488d642420e95efffffff60424010f85dd0200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424484d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153409000048bae85c62080000000048c7c305000000ff15150900004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b251208000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64245848b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15fb07000048bae85c62080000000048c7c305000000ff15dc0700004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25e1060000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64245848b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15f4060000488b1424ff12488d642408488b54244848b8681a620800000000ff12488b0424488b5c24484c8b442440ff15bc060000488d642408488b54244048b8b017620800000000ff12415d4c892c24483b65187303ff5558e919fdffff488d642408ff3424f6042401755f4c8b2c244d89ee41ff75004d89f641ff7608488b54244848b8e814650800000000ff12488b442408488b5c24484c8b442440ff1544060000488b54244848b8b017620800000000ff12415d488d6424084c892c24483b65187303ff5558eb9b488d642410488b54242848b80015650800000000ff12488b542420488b442418488b5c2428ff12488b54242848b80808650800000000ff12ff3424f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424305a5bff22488b542430488b5c2438ff12488b54243848b8d018620800000000ff12415d4c892c24483b65187303ff5558ebab488d64243848c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424285a5bff22488b542428488b5c2430ff12488b54243048b8d018620800000000ff12415d4c892c24483b65187303ff5558ebab488d64243048c7c001000000c3f60424010f85d90200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424304d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15a904000048bae85c62080000000048c7c305000000ff158a0400004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af03000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64244048b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff157003000048bae85c62080000000048c7c305000000ff15510300004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257e020000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64244048b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff1569020000488b1424ff12488d642408488b54243048b8681a620800000000ff12488b542428488b0424488b5c2430ff12488d642408488b54242848b8b017620800000000ff12415d4c892c24483b65187303ff5558e91dfdffff488d642408ff3424f60424010f85b30000004c8b2c244d8b75004d89ed41ff750841ff3641ff7608488b54243848b8781c620800000000ff12ff74243848bae85c620800000000488b44241048c7c303000000ff15b2010000488b1424ff12488d642408488b54243848b87018620800000000ff12ff74243848bae85c620800000000488b44240848c7c303000000ff156e010000488b1424ff12488d642418488b54242848b88818620800000000ff12415d4c892c24483b65187303ff5558e943ffffff488d64242848c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424285a5bff22488b542428488b5c2430ff12488b54243048b8d018620800000000ff12415d4c892c24483b65187303ff5558ebab488d64243048c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424305a5bff22488b542430488b5c2438ff12488b54243848b8d018620800000000ff12415d4c892c24483b65187303ff5558ebab488d64243848c7c001000000c3f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5675,1,@17266,@10649,@10649,@12461,@10649,@10599,@10649,@10599,@12460,@12460,@12461,@10649,@10599,@10649,@10599,@12460,@10649,@10649,@10649,@12460,@10649,@10649,@12460,@10649,@12460,@12461,@10649,@10599,@10649,@10599,@12460,@12460,@12460,@12460,@12460,@11175,@12461,@10649,@10649,@10649,@10649,@12460,@12462,@10649,@12460,@12460,@12460,@12460,@12460,@10649,@10649,@10649,@10649,@10649,@10649,@10649,@12460,@12460,@10649,@12462,@10649,@12460,@11175,@12461,@12460,@12460,@10502,@10649,@10599,@10649|404,0,@5558 420,0,@707 504,0,@651 525,0,@707 578,0,@5559 626,0,@5561 714,0,@5562 766,0,@5563 800,0,@5558 817,0,@5562 851,0,@5560 885,0,@5563 957,0,@5564 976,0,@5565 995,0,@5566 1014,0,@5567 1033,0,@5568 1052,0,@5569 1086,0,@199 1124,0,@5560 1161,0,@5570 1178,0,@5571 1212,0,@5572 1249,0,@5573 1281,0,@5574 1319,0,@5575 1369,0,@5576 1381,0,@5577 1398,0,@5578 1432,0,@5579 1470,0,@5580 1520,0,@5581 1538,0,@5582 1550,0,@5583 1584,0,@5560 1618,0,@5563 1652,0,@5584 1686,0,@199 1724,0,@199 1764,0,@5585 1813,0,@5586 1832,0,@5587 1851,0,@5588 1870,0,@5589 1889,0,@5590 1908,0,@5199 1925,0,@164 1963,0,@5560 2020,0,@5591 2048,0,@5592 2060,0,@5593 2094,0,@5594 2132,0,@5560 2166,0,@5595 2220,0,@5596 2296,0,@187 2344,0,@2573 2376,0,@187 2395,0,@5597 2427,0,@5598 2444,0,@5599 2478,0,@5600 2510,0,@5601 2536,0,@5602 2553,0,@5562 2591,0,@5603 2629,0,@5604 2672,0,@5605 2707,0,@5606 2756,0,@5586 2775,0,@5587 2794,0,@5588 2813,0,@5589 2832,0,@5590 2851,0,@5199 2868,0,@164 2910,0,@5560 2956,0,@5607 2972,0,@707 3021,0,@195 3244,0,@250 3261,0,@196 3303,0,@5560 3333,0,@117 3360,0,@5608 3376,0,@707 3420,0,@5560 3454,0,@5609 3494,0,@5610 3528,0,@199 3566,0,@5560 3600,0,@5611 3617,0,@5612 3651,0,@5613 3688,0,@5614 3726,0,@5560 3761,0,@238 3777,0,@707 3821,0,@195 3837,0,@707 3877,0,@196 3897,0,@5615 3939,0,@5616 3955,0,@707 3999,0,@5560 4034,0,@238 4050,0,@707 4094,0,@195 4110,0,@707 4150,0,@196 4178,0,@5617 4194,0,@707 4249,0,@5618 4285,0,@5619 4318,0,@707 4366,0,@199 4536,0,@117 4563,0,@5620 4597,0,@199 4746,0,@5621 4768,0,@5622 4790,0,@5623 4812,0,@5624 4831,0,@5625 4850,0,@5626 4869,0,@5627 4888,0,@5628 4907,0,@5629 4926,0,@5630 4960,0,@199 4998,0,@5560 5035,0,@5631 5077,0,@5560 5134,0,@5632 5159,0,@5633 5178,0,@5634 5212,0,@199 5254,0,@5560 5336,0,@5635 5355,0,@5636 5374,0,@5637 5393,0,@5638 5412,0,@5639 5431,0,@5640 5473,0,@5560 5489,0,@707 5538,0,@195 5739,0,@196 5782,0,@117 5815,0,@5641 5853,0,@5560 5889,0,@238 5905,0,@707 5949,0,@195 5965,0,@707 6009,0,@196 6026,0,@198 6042,0,@707 6086,0,@195 6102,0,@707 6142,0,@196 6165,0,@5642 6203,0,@5560 6261,0,@5643 6337,0,@187 6385,0,@2573 6417,0,@187 6436,0,@5597 6465,0,@5644 6513,0,@5645 6545,0,@5592 6557,0,@5593 6595,0,@5560 6642,0,@5646 6692,0,@5647 6726,0,@199 6773,0,@5648 6807,0,@199 6940,0,@5649 6962,0,@5650 6981,0,@5651 7000,0,@5652 7019,0,@5653 7038,0,@5654 7057,0,@5655 7076,0,@5656 7110,0,@199 7148,0,@5560 7182,0,@5657 7229,0,@5658 7254,0,@5659 7279,0,@5660 7298,0,@5661 7336,0,@5560 7373,0,@5662 7415,0,@5560 7534,0,@651 7550,0,@707 7593,0,@5663 7764,0,@117 7831,0,@651 7847,0,@707 7890,0,@5664 8054,0,@117 8110,0,@216 8152,0,@187 8229,0,@707 8268,0,@5158 8310,0,@187 8352,0,@5665 8368,0,@707 8412,0,@5666 8428,0,@707 8472,0,@5667 8546,0,@216 8588,0,@187 8674,0,@238 8690,0,@707 8734,0,@195 8750,0,@707 8794,0,@196 8810,0,@707 8858,0,@5668 9039,0,@5669 9077,0,@187 9122,0,@117 9161,0,@5670 9201,0,@5667 9306,0,@199 9438,0,@651 9454,0,@707 9497,0,@5663 9668,0,@117 9735,0,@651 9751,0,@707 9794,0,@5664 9958,0,@117 10014,0,@216 10056,0,@187 10125,0,@5671 10163,0,@187 10207,0,@5672 10241,0,@5563 10312,0,@199 10410,0,@199 10545,0,@651 10561,0,@707 10604,0,@5663 10775,0,@117 10842,0,@651 10858,0,@707 10901,0,@5664 11065,0,@117 11121,0,@216 11159,0,@187 11236,0,@238 11252,0,@707 11296,0,@195 11312,0,@707 11356,0,@196 11457,0,@199 11555,0,@199 12460:D14,1176|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e94b000000909090e944010000909090e96b010000909090e9dc020000909090e9dc020000909090488d642408488b4008ff342448ba905d630800000000ff15930400005a4883c408ff22488d642410488d642408ff7008ff7010488b54241048b8b01a620800000000ff124c8b6c24084d89ee41ff75004d89f641ff7608488b54242048b8781c620800000000ff12ff74242048bae85c620800000000488b44241048c7c303000000ff151f040000488b1424ff12488d642408488b54242048b87018620800000000ff12ff74242048bae85c620800000000488b44240848c7c303000000ff15db030000488b1424ff12488d642418488b54241048b88818620800000000ff12488b54241048b880e5620800000000ff12ff74241048bae85c620800000000488b44240848c7c303000000ff1586030000488b1424ff12488d6424185a48b88818620800000000ff22488d642408488b4008ff342448bae85c62080000000048c7c303000000ff15430300005a4883c408ff22488d642410ff7008ff7010ff7018488b4020ff74242048bae85c62080000000048c7c303000000ff15070300004989c54d8b75004e8d3475010000004983fe01750f48b87018620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6b0200000f87e20000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408488b542418488b442410488b5c2420ff12488b54242048b88818620800000000ff12488b0424488b5c24204c8b442418ff1501020000488d642408f604240175264c8b342441ff36488b54242048b8e811650800000000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3488d64243048b8f807620800000000488b5d08ff23488b40085a5bff22ff7008ff70104c8b7018ff702041ff3641ff7608488b54243048b8781c620800000000ff12ff74243048bae85c620800000000488b44241048c7c303000000ff1559010000488b1424ff12488d642408488b54243048b87018620800000000ff12ff74243048bae85c620800000000488b44240848c7c303000000ff1515010000488b1424ff12488d642418488b54242048b88818620800000000ff12488b54242048b84015650800000000ff12ff74242048bae85c620800000000488b44241048c7c303000000ff15c0000000488b1424ff12488d642408488b54242048b880e5620800000000ff12ff74242048bae85c620800000000488b44240848c7c303000000ff157c000000488b1424ff12488d642418488b54241048b88818620800000000ff12f604240175264c8b342441ff36488b54241848b8e811650800000000ff12488b54241058488d6424105bff22488d64241848c7c001000000c3f4000000000000ffffffffffffff01|@5715,1,@17269,@10649,@10649,@10649,@10649,@12462,@10649,@10649,@10649,@10649,@10649,@11175|95,0,@2573 139,0,@219 175,0,@238 191,0,@707 235,0,@195 251,0,@707 295,0,@196 312,0,@1657 328,0,@707 368,0,@196 392,0,@707 444,0,@707 488,0,@195 689,0,@196 744,0,@5646 788,0,@117 837,0,@238 853,0,@707 897,0,@195 913,0,@707 957,0,@196 974,0,@5674 990,0,@707 1034,0,@1657 1050,0,@707 1094,0,@196 1124,0,@5646 12461:D7,2256|483b65187306ff5558ca09014883fb030f85240600004983f8070f85b50100004883c010711048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15b30800004989c64d8b2e4a8d0c6d010000004883f901750f49bd601f620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d280800000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8d81f620800000000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7107000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430778060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234983f8050f85e70000004883c010711048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15ec0600004989c64d8b2e4a8d0c6d010000004883f901750b48b8601f620800000000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b255d06000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400872498d7608488d780948d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff234983f8030f85b50100004883c010711048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15f30500004989c64d8b2e4a8d0c6d010000004883f901750f49bd601f620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d600500000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8101e620800000000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da904000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430648060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234883c010711048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15360400004989c64d8b2e4a8d0c6d010000004883f901750f49bd601f620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d9b0300000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e01d620800000000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de402000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430628060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234989c64983fe110f833f0200004c8d35080000004d8d7486fc41ffe6e93b000000909090e971000000909090e9a7000000909090e9dd000000909090e913010000909090e949010000909090e97f010000909090e9b50100009090904983f807750b48b88015650800000000c34983f805750b48b89815650800000000c34983f803750b48b8b015650800000000c348b8c815650800000000c34983f807750b48b8e015650800000000c34983f805750b48b8f815650800000000c34983f803750b48b81016650800000000c348b82816650800000000c34983f807750b48b84016650800000000c34983f805750b48b85816650800000000c34983f803750b48b87016650800000000c348b88816650800000000c34983f807750b48b8a016650800000000c34983f805750b48b8b816650800000000c34983f803750b48b8d016650800000000c348b8e816650800000000c34983f807750b48b80017650800000000c34983f805750b48b81817650800000000c34983f803750b48b83017650800000000c348b84817650800000000c34983f807750b48b86017650800000000c34983f805750b48b87817650800000000c34983f803750b48b89017650800000000c348b8a817650800000000c34983f807750b48b8c017650800000000c34983f805750b48b8d817650800000000c34983f803750b48b8f017650800000000c348b80818650800000000c34983f807750b48b82018650800000000c34983f805750b48b83818650800000000c34983f803750b48b85018650800000000c348b86818650800000000c348b88018650800000000c3f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5709,1,@17267,@10649,@10649,@10649,@10649|40,0,@105 56,0,@707 99,0,@269 278,0,@274 439,0,@117 455,0,@117 487,0,@105 503,0,@707 546,0,@269 696,0,@117 728,0,@105 744,0,@707 787,0,@269 966,0,@255 1127,0,@117 1143,0,@117 1165,0,@105 1181,0,@707 1224,0,@269 1403,0,@253 1564,0,@117 1580,0,@117 1694,0,@5676 1711,0,@5677 1728,0,@5678 1739,0,@5679 1756,0,@5680 1773,0,@5681 1790,0,@5682 1801,0,@5683 1818,0,@5684 1835,0,@5685 1852,0,@5686 1863,0,@5687 1880,0,@5688 1897,0,@5689 1914,0,@5690 1925,0,@5691 1942,0,@5692 1959,0,@5693 1976,0,@5694 1987,0,@5695 2004,0,@5696 2021,0,@5697 2038,0,@5698 2049,0,@5699 2066,0,@5700 2083,0,@5701 2100,0,@5702 2111,0,@5703 2128,0,@5704 2145,0,@5705 2162,0,@5706 2173,0,@5707 2184,0,@5708 12462:D3,288|483b65187306ff5558ca09015341504c8b284d89ee4983fd077536ff7008488b54241048b8381d620800000000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8c818650800000000ff224d89f54983fe057536ff7008488b54241048b8381d620800000000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8e018650800000000ff224d89ee4983fd037536ff7008488b54241048b8381d620800000000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8f818650800000000ff224983fe017536ff7008488b54241048b8381d620800000000ff12488b542408488b0424488b5c2410ff12488d6424105a48b81019650800000000ff22488d64241048c7c001000000c3f400000000000000|@5714,1,@17268|37,0,@246 71,0,@5710 100,0,@246 134,0,@5711 163,0,@246 197,0,@5712 223,0,@246 257,0,@5713 12463:D6,464|483b65187305ff5558cd095048bae0fc6408000000004889d848bb90fe640800000000ff15cf0100004989c641564c8b7424084d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b742408720d488d64242048c7c001000000c34889c04c8b7424184d8b7486fc41ff36ff74241848bae85c62080000000048c7c303000000ff15630100004989c54d8b75004e8d3475010000004983fe01750f48b88815620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de70000000f87c50000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430098060ffbf488b1424ff12488d642408488b54241848b87819650800000000ff12488b042448c7c3290000004c8b442418ff156c000000488d642408488b54241048b8a015620800000000ff124c8b2c244983c5024c892c24483b65187303ff5558e99bfeffff488d64243048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01|@5717,1,@17270,@12464,@10649,@12446|14,0,@5482 27,0,@5491 120,0,@707 164,0,@164 348,0,@5716 392,0,@165 435,0,@117 12464:D5,464|483b65187306ff5558ca09014989c653415041f6c6010f859d010000498b0641ff76084c8b34244983fe017547488d6424084c8b7424084983fe0175115a48b860876208000000004883c408ff22ff342448bae85c62080000000048c7c303000000ff15880100005a4883c410ff22488d6424104c8b7424104983fe017516488d6424085a48b860876208000000004883c408ff22ff74240848bae85c62080000000048c7c303000000ff15380100004989c54d8b75004e8d3475010000004983fe01750f48b8d018620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc40000000f879a0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604302c8060ffbf488b1424ff12488d642408488b5c24104883eb027115488d64241848b8d006620800000000488b5d08ff235841584883c408e95cfeffff488d64242048b8f807620800000000488b5d08ff23488d64241048c7c001000000c3f400ffffffffffffff01|@5718,1,@17271,@10649,@10649|64,0,@1004 83,0,@707 135,0,@1004 155,0,@707 199,0,@199 394,0,@105 427,0,@117 12465:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@17272| 12466:D15,2832|488dbc2458ffffff483b7d187306ff5560ca090750534150415141524c8b7424204d8b76f849c1e60849c1ee074983ce0141564c8b6c24504d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0a4a509000000004d892e41564c8b6c24584d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18a5a509000000004d892e41564c8b6c24604d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0a5a509000000004d892e41564c8b6c24684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a6a509000000004d892e415649c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004c8b6424604c8b5c24684d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849bcb0a6a509000000004d89264d89750049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d89ee4983fd017d0a488d642458e99a0000004d89f64d89f54c3b354f0900000f8d820000004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c0fffffffff348ab415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff41415649c7c611000000eb15488d64245848b8d055620800000000488b5d08ff234983fe0175074c8b742448eb2c4d89f44983ec0249d1ec4c8b2c2443c6442500004d89f54983ed024d89ee483b65187306ff5558ca0040ebc741f6c60175454d8b264d8b6e084d8b1c244c3b1dd908000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9500700004d8b364d8b2e4c3b2d7508000075064d8b7610eb15488d64246848b87850620800000000488b5d08ff234983fe03750949c7c603000000eb0749c7c60100000041564c8bb424900000004d8b6ef849c1e50849c1ed074983cd014983fd017d0a488d642470e9a20500004c3b2d990700000f8d900500004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424484d89f54983fe017d0a488d642478e9260500004d89ed4d89ee4c3b2d240700000f8d0e0500004d89f64c89f14a8d1cb50400000048f7db4903df483b5d107205493bdf7205ff5550cd024989df49d1ee4c8973f8c643ff404889df48d1e948c7c001000000f348ab48c7c0010000004c8b4424704c8b0c24ff153e0700004c8bb424a00000004983fe03750c48bb301e650800000000eb0748c7c3010000004883fb017507488b442468eb0b488b442468ff15fd060000ff15ef0600004989c44c8b7424504d89f54983fe290f8ce60100004d89ed4983ed014d6bedf87115488d64247848b8d006620800000000488b5d08ff234983c5014c8b5c24204d8b134d89d64d89db4983c6027115488d64247848b8d006620800000000488b5d08ff234d89db4d89334d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89560849c706310000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049c743080500000049c7030f0000004d8d67d84c3b65107306ff5550ca006c4d89e749c74424f80400000049c7442418050000004d8954241049c74424081100000049c70424110000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049b9481e6508000000004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89304d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049bcb01e6508000000004d8966204d896e1849bd58e46408000000004d896e1049bde01e6508000000004d896e0849c70637000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15f40400004989c6e9340100004c8b6c24204d8b5d004d89de4d89ed4983c6027115488d64247848b8d006620800000000488b5d08ff234d89ed4d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c74500310000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89661049c746080300000049c7060f0000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418050000004d895c241049c74424081100000049c70424110000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba081f6508000000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442468488b5c24184c8b442460ff15990300004989c641564c8b6c24584d89ee4983fd017d0d488da42488000000e9010100004d89f64d89f54c3b350c0300000f8de60000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488da42490000000eb7a4d89f64d89f54c3b35950200007d634d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8bb424900000004d8b76f849c1e60849c1ee074983ce0141566a01eb5a488da4249000000048b8d055620800000000488b5d08ff23488da4248800000048b8d055620800000000488b5d08ff23488d64247848b8d055620800000000488b5d08ff23488d64247048b8d055620800000000488b5d08ff234c8b34244c89f04c3b742408727d488d6424104c8bb424b8000000ff742438ff742448ffb424a00000004156ff742468ffb42480000000ffb42480000000ff742458ff742468ff742478ffb424b000000048b8b09f62080000000048bba89b6208000000004c8b4424704c8b4c24604c8b542458ff15bc0100004989c6488d64241048c7c001000000eb354889c04c8bb424a0000000498b5c86fc4c8b442410ff15880100004c8b2c244983c5024c892c24483b65187303ff5558e940ffffff41f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424304d8b065b4c8b8c24880000004c8bb424800000004c89b424a80000004881c4a8000000ff25f200000041f6c60175454d8b264d8b6e084d8b1c244c3b1dd200000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d6800000075094d8b7610e955f8ffff488d64246848b87850620800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5756,1,@17279,@15132,@15132,@12474,@12669,@12670,@12731,@12732,@12733,@12734,@12473,@15132,@15132|89,0,@12467 140,0,@12468 191,0,@12469 242,0,@12470 345,0,@12471 584,0,@657 745,0,@788 786,0,@621 1090,0,@5746 1178,0,@105 1223,0,@105 1415,0,@5747 1530,0,@5750 1548,0,@5372 1562,0,@5752 1672,0,@105 1866,0,@5754 2242,0,@657 2266,0,@657 2287,0,@657 2308,0,@657 2405,0,@1172 2415,0,@1145 2725,0,@828 2770,0,@621 12467:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff23498b4486fcc3f40000|@5719,1,@17273|41,0,@628 12468:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b7486fc4d8b2e4983fd037505498b4608c348b8901a650800000000488b5d08ff23f40000000000|@4347,1,@17274|41,0,@628 76,0,@5720 12469:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b7486fc4d8b2e4983fd017505498b4608c348b8501b650800000000488b5d08ff23f40000000000|@4347,1,@17275|41,0,@628 76,0,@5724 12470:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b7486fc4d8b2e4983fd057505498b4608c348b8c01b650800000000488b5d08ff23f40000000000|@4347,1,@17276|41,0,@628 76,0,@5727 12471:D9,1408|483b65187305ff5558cd054989d54c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b184d89de4d8b1b4983fb010f85d00200004d8b5e084983ec02711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e41564d8b7510498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd88aca509000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3582040000750949c7c603000000eb2b4c3b3568040000750949c7c603000000eb194c3b354e040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd501c6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd301d6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@5745,1,@17278,@435,@433,@427,@435,@433,@427|29,0,@1044 69,0,@105 163,0,@12472 414,0,@2144 462,0,@1021 507,0,@1987 658,0,@866 703,0,@5731 788,0,@1044 809,0,@105 859,0,@15183 1042,0,@2144 1090,0,@1021 1135,0,@1987 1286,0,@866 1331,0,@5738 12472:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@5730,1,@17277| 12473:D4,504|483b65187306ff5558ca090353415041514c8b7424104d8b66f84d89e549c1e40849c1ec074983cc01493bc47215488d64241848b81051620800000000488b5d08ff234d89f64d8b6486fc4983fc03750d488d64241848c7c001000000c34d89f649c1e50849c1ed074983cd01493bc57215488d64241848b80057620800000000488b5d08ff234d89f64c89f349c74486fc030000004c8b4424084d8b70f849c1e60849c1ee074983ce01493bc67215488d64241848b89051620800000000488b5d08ff234d89c04d8b6c80fc4d8b750041ff75084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e95c000000909090e964000000909090e95e000000909090e95e000000909090e987000000909090e98f000000909090498b461041ff76204c8b4c2410e8cffeffff488b0424488b5c24204c8b4424184c8b4c2410e8b7feffff488d642408eb5b498b46104c8b4c2408e8a2feffffeb4beb494d8b76084156eb4d498b460841ff76104c8b4c2410e884feffff488b0424488b5c24204c8b4424184c8b4c2410e86cfeffff488d642408eb10498b46084c8b4c2408e857feffffeb00585b4883c410ff2559000000f604240175334c8b3424498b064d89f641ff7608488b5c24284c8b4424204c8b4c2418e821feffff415d4c892c24483b65187303ff5558ebc7488d642408ebb4f4|@6401,1,@17541,@12735|53,0,@625 121,0,@664 183,0,@628 12474:D7,400|483b65187306ff5558ca09035053415041514c8b6c2410498b45004d89ed4d89ee41ff75084d89f64d8b76204983fe03756f483b05870100007502eb334c8b304e8d3475010000004983fe01753449bed808620800000000488d7008498d7e0848c7c100000000483bc9f3a67402eb12488b142448b8981a620800000000ff12eb06488b1424ff12488b142448b8801f650800000000ff12ff742420e9a7000000488d6424086a016a014c8b7424204d8b76184983fe03750a6a016a01ff742438eb274c8b7424284c8934244c8b7424184c89742408584158488b5c241041594883c418ff25ce0000006a016a01488b44241048c7c30100000049c7c0010000004989e1ff15a6000000415e415d4983fd0375124d89f54c892c24483b65187303ff5558ebc4488d6424084c8934244c8b7424284c89742408415d415e4c892c244c89742408eb8ef6042401752a4c8b3424498b064d89f641ff7608488b5c2410ff1541000000415d4c892c24483b65187303ff5558ebd0488d6424085a48b8a015620800000000ff12e917fffffff4|@5769,1,@17280,@12476,@12482,@12475,@123|80,0,@123 118,0,@218 142,0,@5757 384,0,@165 12475:D17,2544|488dbc2430ffffff483b7d187306ff5560ca09035341514c8b6c24084d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76206a016a014c89c34989e0ff15220a0000ff3424ff7424104c8b6c2448498b45004d89ed4d89ee41ff75084d89f64d8b76204983fe03756f483b05ec0900007502eb334c8b304e8d3475010000004983fe01753449bed808620800000000488d7008498d7e0848c7c100000000483bc9f3a67402eb12488b142448b8981a620800000000ff12eb06488b1424ff12488b142448b8801f650800000000ff12ff742410e9b8080000488d642408ff7424086a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15500900004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e48c7c3010000004883c40841f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca08684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0840ebba6a016a01488b4424184c8b4424104989e1ff15c5080000ff3424ff742410ff742428ff7424106a016a01f6442418010f85eb000000f6442410010f85e00000004c8b6c24184d8b75004d89ed41ff75084c8b6424184d8b2c244d89e441ff7424084d8b65004a8d1c6501000000f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dbeb1b48b8f85462080000000041564155ff152e080000415d415e4989c341f6c30174554c8b6424184d89e04f8d641cff41544c89eb4c89f04c8b4c2418ff15f90700004989c24c8b6c24104c8b642408415b488d6424104c8914244c895c24084c896424104c896c2418483b65187303ff5558e922ffffff488da424a000000048b80855620800000000488b5d08ff23ff34244c8b2c2449c7c60100000041f6c501754f4d8b5d004d8b65084d8b5b084d8b1b4983fb0175234d89f34983c3027118488da4249800000048b8d006620800000000488b5d08ff23eb034d89f34d89de4d89e5483b65187306ff5558ca0060ebab4156488b4424304883c01049c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c8b64240849c7c50100000041f6c401754b4d8b14244d8b5c24084d8b52084d8b024d89c14983f80775094d89ea4983c202eb154d89ca4983fa0975094d89ea4983c202eb034d89ea4d89d54d89dc483b65187306ff5558ca0070ebaf4f8d742eff41564c8b34244c8b6c24084f8d742eff4983c6084d89f44e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00404d89ef49d1ec4d8965f841c645ff4141554e8d34f5f9ffffff49c7c5010000004d3bee73274d89eb49d1eb4c8b242443c6041c004d89ec4983c4024d89e5483b65187306ff5558ca0060ebd449c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b74245041f6c601751f4d8b2e4d8b66084d8b5d004e8d1c5d0100000049c7c201000000e99e04000048b8981f65080000000048c7c301000000ff15ca0500004989c441f6c40175134d8b1c2449c7c5010000004d89e6e91f03000049bed8086208000000004d8b2e4e8d2c6d0100000049c7c4010000004d3be572204c8b2c244d8b75004983c60e4983e6f14d89ed4d897500ff742420e9850000004d89e34983c31049d1eb4f0fb61c1e4c8b14244d8b024c8b4c2408498b71f848c1e60848c1ee074883ce01488d34f5f9ffffff4c3bc6733549d1e84d89c947881c014d89d24d8b1a4983c3024d89d24d891a4d89e34983c3024d89dc483b65187306ff5558ca0070e96effffff488da424b800000048b8a81f650800000000488b5d08ff23f604240175374c8b2c244d8b75004d89ed41ff7508498b06498b5e084c8b4424104c8b4c2418ff15b4040000415d4c892c24483b65187303ff5558ebc3488d6424084c8b34244d8b36488d64240849c1ee034983ce014c3b7424080f85500100004c8b7424084983c6064c8b6c24104c89e84f8d742eff4a8d1cf5f9ffffff4889c04883c0067118488da424b000000048b8d006620800000000488b5d08ff2349c7c0110000004c8b0c24ff1527040000488b0424ff15150400004989c641564c8b1c244d8b73f849c1e60849c1ee074983ce014c3b7424107718488da424b800000048b84020650800000000488b5d08ff234c8ba424a00000004d89db4d89de4c8b5424104d89d54f896493fc4d89ed4d89eb4983c5024d89f64d8b66f849c1e40849c1ec074983cc014d3be57718488da424b800000048b84020650800000000488b5d08ff234d89f64d89f44bc744aefc030000004d89db4d89de4983c3044d89e44d8b6c24f849c1e50849c1ed074983cd014d3beb7718488da424b800000048b84020650800000000488b5d08ff234c8bac24900000004d89e44f896c9cfc4d89f64983c606ff7424204156eb18488da424b000000048b89820650800000000488b5d08ff23f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15d90200004989c4415d4c8924244c896c2408483b65187303ff5558ebc1488d6424104c8bb424880000004983fe037530488b8424b0000000488b1c244c8b8424a8000000ff158b020000488b94249800000048b85021650800000000ff12eb00584881c4b0000000ff255f02000041f6c60175394d8b4e084d89ea4983c2027118488da424b800000048b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc14983fd010f8caa0000004983fd03751449be30096208000000004f8b749efce9e40000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dab010000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb30488da424b800000048b8f807620800000000488b5d08ff23488da424b800000048b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe99ffbffff4d3bd372144d89e6483b65187306ff5558ca0040e924fbffff4d89d14983c11049d1e94f0fb64c0d004c8b0424498b30488b7c2408488b4ff848c1e10848c1e9074883c901488d0ccdf9ffffff483bf1733548d1ee4889ff44880c374d89c04d8b084983c1024d89c04d89084d89d14983c1024d89ca483b65187306ff5558ca007ce979ffffff488da424b800000048b8a81f650800000000488b5d08ff23f6042401752a4c8b3424498b064d89f641ff7608488b5c2410ff154d000000415d4c892c24483b65187303ff5558ebd0488d6424085a48b8a015620800000000ff12e906f7fffff400000000ffffffffffffff01|@5908,1,@17289,@12476,@12485,@12486,@12551,@12553,@12554,@12557,@12560,@12564,@10599,@12565,@12580,@123,@12484|147,0,@123 185,0,@218 209,0,@5757 528,0,@651 654,0,@652 728,0,@105 1121,0,@5758 1172,0,@123 1354,0,@5759 1514,0,@105 1597,0,@5762 1682,0,@5762 1756,0,@5762 1811,0,@5764 1943,0,@5768 1998,0,@105 2050,0,@126 2198,0,@117 2222,0,@120 2446,0,@5759 2516,0,@165 12476:D117,13064|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9bb010000909090e936020000909090e972020000909090e92a040000909090e9db050000909090e954080000909090e9cf080000909090e99f090000909090e9040a0000909090e9ca0b0000909090e9280c0000909090e98b0c0000909090e9370d0000909090e9f60d0000909090e9c30f0000909090e908110000909090e93d110000909090e9b4120000909090e92a130000909090e961130000909090e997130000909090e9f9140000909090e9a5150000909090e9ec150000909090e9c7160000909090e913170000909090e916170000909090e9e6170000909090e92b1a0000909090e9a61a0000909090e92b1b0000909090e9671b0000909090e99a1c0000909090e9da1d0000909090e9161e0000909090e9521e0000909090e93e1f0000909090e94b1f0000909090e9df1f0000909090e93f200000909090e97b200000909090e972210000909090e9f7210000909090e904220000909090e975220000909090e982220000909090e9ec220000909090e96e230000909090e9f0230000909090e961240000909090e91a250000909090e956250000909090e992250000909090e9bd260000909090e9872b0000909090e90f2d0000909090ff7008ff7010488b54241048b89821650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff1593340000488b1424ff12488d642408488b54241048b8c007650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff154f340000488b1424ff12488d642418e9aa2f0000ff7008488b54240848b8b821650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1503340000488b1424ff12488d642410e9662f00004c8b6808ff7010ff7018ff70204c8b7424184c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc50bf640800000000eb3a49bc88c8640800000000eb2e49bce021650800000000eb2249bc70c8640800000000eb1649bce0bf640800000000eb0a49bc58c86408000000004d8b2c244e8d2c6d010000004983fd01750f48b8f821650800000000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15972f00000f87e10000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c604204d4d89ec49d1ec42c64420014349d1ed42c6442802208060ffbf4c89f2ff12488b44241048bb58e46408000000004c8b4424084c8b4c2418ff1581320000488b54241848b8b017620800000000ff12ff74241848bae85c620800000000488b44240848c7c303000000ff1548320000488b1424ff12488d642420e9bb2d0000488d64242048b8f807620800000000488b5d08ff234c8b6808ff7010ff7018ff70204c8b7424184c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc50bf640800000000eb3a49bc88c8640800000000eb2e49bce021650800000000eb2249bc70c8640800000000eb1649bce0bf640800000000eb0a49bc58c86408000000004d8b2c244e8d2c6d010000004983fd01750f48b8f821650800000000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15cf2d00000f87da0000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c604204d4d89ec49d1ec42c64420014349d1ed42c6442802208060ffbf4c89f2ff12488b44241048bb58e46408000000004c8b4424084c8b4c2418ff15b1300000488b54241848b81022650800000000ff12ff74241848ba905d630800000000488b442408ff157f300000488b1424ff12488d642420e9022c0000488d64242048b8f807620800000000488b5d08ff234c8b6808ff7010ff70184c8b7424104c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc50bf640800000000eb3a49bc88c8640800000000eb2e49bce021650800000000eb2249bc70c8640800000000eb1649bce0bf640800000000eb0a49bc58c86408000000004d8b2c244e8d2c6d010000004983fd01750f48b82822650800000000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15112c00000f87a50100004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c60420524d89ec49d1ec42c64420015249d1ed42c6442802208060ffbf4c89f2ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff15ea2e0000488b1424ff12488d642408488b54241048b81022650800000000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba905d630800000000ff15962e0000488b1424ff12488d642410e9a30000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae85c62080000000048c7c303000000ff154b2e0000488b1424ff12488d642410eb634d89f64983fd03752b4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff15082e00004883c408eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff15d62d0000488b1424ff12488d642410e981290000488d64241848b8f807620800000000488b5d08ff23ff7008ff7010488b54241048b84022650800000000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff15722d0000488b1424ff12488d642408488b54241048b86022650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff152e2d0000488b1424ff12488d642418e9e9280000ff7008488b54240848b87822650800000000ff124c8b34244d8b2e4d89ec4983fd0375304d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15cf2c0000488b1424ff12488d642408eb7f4d89f64d89e54983fc057517488d642408488b142448b89822650800000000ff12eb5c4d89f64983fd01753e4d89f641ff7608488b54241048b8b822650800000000ff12ff74241048ba905d630800000000488b442408ff155d2c0000488b1424ff12488d642418eb15488d642408488b142448b878c1640800000000ff12e911280000ff7008488b54240848b8d022650800000000ff124c8b2c244d89ee4983fd057517488d642408488b142448b8e822650800000000ff12eb304d89f64983fe01488d6424087512488b142448b81023650800000000ff12eb10488b142448b83023650800000000ff12e9a42700004c8b7008ff7010ff7018488b5424104c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909048b85823650800000000e9a000000048b87823650800000000e99100000048b89823650800000000e98200000048b8b823650800000000eb7648b8d823650800000000eb6a48b80024650800000000eb5e48b81824650800000000eb5248b83824650800000000eb4648b85824650800000000eb3a48b87824650800000000eb2e48b89824650800000000eb2248b8b824650800000000eb1648b8d824650800000000eb0a48b8f824650800000000ff12488b54241048b81825650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff15512a0000488b1424ff12488d6424084c8b2c244d89ee4983fd037517488d642410488b142448b83025650800000000ff12eb2a4d89f64983fe05488d6424087517488d642408488b142448b85025650800000000ff12eb05488d642408e9d6250000ff7008ff70104c8b7018488b5424104983fe03750c48b87025650800000000eb0a48b89025650800000000ff12488b54241048b8b017620800000000ff12488b44240848bb58e46408000000004c8b04244c8b4c2410ff158f290000488d642410e970250000ff70084c8b7010488b5424084983fe03750c48b87025650800000000eb0a48b89025650800000000ff12488b54240848b8b017620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1522290000488b1424ff12488d642410e9052500004c8b7008ff7010488b5424084c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b025650800000000eb5248b8c825650800000000eb4648b8e825650800000000eb3a48b80826650800000000eb2e48b82026650800000000eb2248b84026650800000000eb1648b86026650800000000eb0a48b88026650800000000ff12ff74240848ba905d630800000000488b442408ff1566280000488b1424ff12488d642410e9512400004c8b7008ff7010ff7018488b5424104c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b025650800000000eb5248b8c825650800000000eb4648b8e825650800000000eb3a48b80826650800000000eb2e48b82026650800000000eb2248b84026650800000000eb1648b86026650800000000eb0a48b88026650800000000ff12488b54241048b8b017620800000000ff12488b44240848bb58e46408000000004c8b04244c8b4c2410ff1591270000488d642410e98a2300004c8b7008ff7010488b5424084c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b025650800000000eb5248b8c825650800000000eb4648b8e825650800000000eb3a48b80826650800000000eb2e48b82026650800000000eb2248b84026650800000000eb1648b86026650800000000eb0a48b88026650800000000ff12488b54240848b8b017620800000000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff159726000048bae85c62080000000048c7c305000000ff15782600004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2515230000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e9ca210000488d64241848b8f807620800000000488b5d08ff23ff7008488b54240848b8a826650800000000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff153a25000048bae85c62080000000048c7c305000000ff151b2500004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0210000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e97d200000488d64241848b8f807620800000000488b5d08ff23ff7008488b54240848b8c026650800000000ff12ff74240848bad826650800000000488b442408ff1510240000488b1424ff12488d642410e92b200000ff7008ff7010488b54241048b8c026650800000000ff12ff742410f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff159523000048bae85c62080000000048c7c305000000ff15762300004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e9920000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b252b2000000f87970000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d6424084c8b34244983fe03488d6424087517488d642408488b142448b82028650800000000ff12eb05488d642408e9c11e0000488d64242048b8f807620800000000488b5d08ff23ff70084c8b70104983fe037537488b54240848b83828650800000000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff1527220000eb35488b54240848b85828650800000000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff15e8210000e92e1e0000ff7008ff7010488b54241048b87828650800000000ff12488b44240848bb58e46408000000004c8b04244c8b4c2410ff15a6210000488d642410e9ef1d0000488b142448b89828650800000000ff12ff342448c7c00100000048c7c30100000049c7c005000000ff1566210000488b1424ff12488d642408e9b11d00004c8b7008ff70104983fe037513488b54240848b8b828650800000000ff12eb11488b54240848b8e028650800000000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15d120000048bae85c62080000000048c7c305000000ff15b22000004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258f1d0000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e95c1c0000488d64241848b8f807620800000000488b5d08ff234c8b7008ff70104c8b68184983fd0375504983fe037513488b54240848b80029650800000000ff12eb11488b54240848b82829650800000000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff15751f0000eb4e4983fe037513488b54240848b85029650800000000ff12eb11488b54240848b87829650800000000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff151d1f0000e9931b00004c8b7008488b14244983fe07750c48b8a029650800000000eb2e4983fe05750c48b8c029650800000000eb1c4983fe01750c48b8e029650800000000eb0a48b8f829650800000000ff12e9441b0000ff7008ff70104c8b701841ff36488b54241848b8182a650800000000ff12ff7424184c8b742418498b064d89f6498b5e0849c7c005000000ff15831e0000488b1424ff12488d642408488b54241848b8382a650800000000ff12ff7424184c8b742410498b064d89f6498b5e0849c7c005000000ff153f1e0000488b1424ff12488d6424084c8b34244983fe03488d642418750c48bb502a650800000000eb0a48bb682a65080000000049be1800b60300000000498b06ff15f41d000049be1800b60300000000498b064c8b402048bb7805620800000000ff15cb1d0000e9611a0000ff7008488b54240848b8d01b620800000000ff12ff74240848bae85c620800000000488b44240848c7c303000000ff158a1d0000488b1424ff12488d642410488b142448b8201a620800000000ff12e90d1a00004c8b70084156e90f1a0000ff7008488b54240848b8802a650800000000ff124c8b34244d8b2e4d89ec4983fd0375304d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15101d0000488b1424ff12488d642408eb7f4d89f64d89e54983fc057517488d642408488b142448b89822650800000000ff12eb5c4d89f64983fd01753e4d89f641ff7608488b54241048b8b822650800000000ff12ff74241048ba905d630800000000488b442408ff159e1c0000488b1424ff12488d642418eb15488d642408488b142448b878c1640800000000ff12e92a190000ff7008ff7010ff7018ff7020488b54242048b8a02a650800000000ff12f644241801753e4c8b7424184d8b36ff742420498b06498b5e0849c7c005000000ff152b1c0000488b1424ff12488d642408488b54242048b84015650800000000ff12eb00ff74242048bae85c620800000000488b44241048c7c303000000ff15e51b0000488b1424ff12488d6424084c8b7424104d8b264d89e54983fc0775594d89f641ff7608488b54242848b84015650800000000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15891b0000488b1424ff12488d642410488b54242048b8c02a650800000000ff12e9150100004d89f64d89ec4983fd0575594d89f641ff7608488b54242848b84015650800000000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff151c1b0000488b1424ff12488d642410488b54242048b8d82a650800000000ff12e9b00000004d89f64d89e54983fc0375564d89f641ff7608488b54242848b84015650800000000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15af1a0000488b1424ff12488d642410488b54242048b8f02a650800000000ff12eb4e4d89f64983fd0175454d89f641ff7608488b54242848b84015650800000000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15481a0000488b1424ff12488d642410eb00488b54242048b8c007650800000000ff12ff7424204c8b742408498b064d89f6498b5e0849c7c005000000ff15021a0000488b1424ff12488d642428e9dd160000ff7008ff7010488b54241048b8082b650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff15b3190000488b1424ff12488d642408488b54241048b8207e620800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff156f190000488b1424ff12488d642418e95a160000ff7010ff7018488b54241048b830c4640800000000ff12488b54241048b8b017620800000000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff150f190000488b1424ff12488d642408488b54241048b81022650800000000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424104c8b0c24ff15c7180000e9cd150000ff7008488b54240848b8302b650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1586180000488b1424ff12488d642410e989150000ff7008ff7010488b54241048b8582b650800000000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff1537180000488b1424ff12488d642408488b54241048b81022650800000000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba905d630800000000ff15e3170000488b1424ff12488d642410e9a30000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae85c62080000000048c7c303000000ff1598170000488b1424ff12488d642410eb634d89f64983fd03752b4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff15551700004883c408eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff1523170000488b1424ff12488d642410e94e140000ff7008ff7010488b54241048b8702b650800000000ff12488b54241048b8b017620800000000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba905d630800000000ff15b3160000488b1424ff12488d642408e99f0000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae85c62080000000048c7c303000000ff1568160000488b1424ff12488d642408eb5f4d89f64983fd0375274d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff1525160000eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff15f7150000488b1424ff12488d642408488b54240848b8902b650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15b3150000488b1424ff12488d642410e906130000ff7008488b54240848b8a82b650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1567150000488b1424ff12488d642410e9c2120000ff7008488b54240848b8c82b650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff151b150000488b1424ff12488d642410e97e120000ff7008488b54240848b8e02b650800000000ff124c8b34244d8b2e4d89ec4983fd01752f4d89f6498b4608488d642408ff342448ba905d630800000000ff15c0140000488b1424ff12488d642408e99c0000004d89f64d89e54983fc0575334d89f6498b4608488d642408ff342448bae85c62080000000048c7c303000000ff1576140000488b1424ff12488d642408eb5d4d89f64983fd0375264d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b0c24ff1534140000eb2e4d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff1507140000488b1424ff12488d642408e98a110000488b142448b8f82b650800000000ff12e975110000ff7008488b54240848b8182c650800000000ff12488b5424084c8b2c244d89ee4983fd097511488d64240848b8302c650800000000eb5e4d89f64d89f54983fe077511488d64240848b8502c650800000000eb414d89ed4d89ee4983fd057511488d64240848b8702c650800000000eb244d89f64983fe03488d642408750c48b8902c650800000000eb0a48b8b02c650800000000ff12e9d9100000ff7008ff7010488b54241048b8d02c650800000000ff12ff74241048bae85c620800000000488b44241048c7c303000000ff1507130000488b1424ff12488d6424084c8b34244983fe03488d6424107512488b142448b8580e650800000000ff12eb00e971100000ff7008488b54240848b8f02c650800000000ff12ff74240848bae85c620800000000488b44240848c7c303000000ff159a120000488b1424ff12488d642410e92d100000ff7008ff70104c8b7018488b5424104983fe01750c48b8182d650800000000eb1c4983fe05750c48b8402d650800000000eb0a48b8682d650800000000ff12488b54241048b8b017620800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff1512120000488b1424ff12488d642410488b54240848b8800b650800000000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15a211000048bae85c62080000000048c7c305000000ff1583110000488b1424ff12488d642410e92e0f0000ff70084c8b7010488b5424084983fe01750c48b8182d650800000000eb1c4983fe05750c48b8402d650800000000eb0a48b8682d650800000000ff12488b54240848b8b017620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15fe100000488b1424ff12488d642410488b142448b8902d650800000000ff12e9a10e0000488b142448b8a82d650800000000ff12e98c0e0000ff7008ff7010488b54241048b8d02d650800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff1589100000488b54241048b81022650800000000ff12ff74241048bae85c620800000000488b44240848c7c303000000ff1550100000488b1424ff12488d642418e9130e0000488b142448b8f82d650800000000ff12e9fe0d0000ff7008ff7010488b54241048b8182e650800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15eb0f0000488b54241048b81022650800000000ff12ff74241048ba905d630800000000488b442408ff15b90f0000488b1424ff12488d642418e98c0d0000ff7010ff7018488b54241048b878c4640800000000ff12488b54241048b8b017620800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15580f0000488b54241048b81022650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c001000000ff151f0f0000488b1424ff12488d642418e9020d0000ff7010ff7018488b54241048b8402e650800000000ff12488b54241048b8b017620800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15be0e0000488b54241048b81022650800000000ff12ff74241048bae85c620800000000488b44240848c7c303000000ff15850e0000488b1424ff12488d642418e9780c0000ff7008ff7010488b54241048b8602e650800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15350e0000488b54241048b81022650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff15fc0d0000488b1424ff12488d642418e9ff0b0000ff7008ff7010ff7018488b54241848b8882e650800000000ff12488b44241048bb58e46408000000004c8b04244c8b4c2418ff15ac0d0000488d642408488b54241048b8a82e650800000000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15420d000048bae85c62080000000048c7c305000000ff15230d0000488b1424ff12488d642418e93e0b0000ff7008488b54240848b8c02e650800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15d70c0000488b1424ff12488d642410e9fa0a0000ff7008488b54240848b8e02e650800000000ff12ff74240848bae85c620800000000488b44240848c7c303000000ff158b0c0000488b1424ff12488d642410e9b60a0000ff7008ff7010488b54241048b8002f650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff153c0c0000488b1424ff12488d642410488b54240848b8182f650800000000ff124c8b34244d8b2e4d89ec4983fd01752f4d89f6498b4608488d642408ff342448ba905d630800000000ff15e90b0000488b1424ff12488d642408e99c0000004d89f64d89e54983fc0575334d89f6498b4608488d642408ff342448bae85c62080000000048c7c303000000ff159f0b0000488b1424ff12488d642408eb5d4d89f64983fd0375264d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b0c24ff155d0b0000eb2e4d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15300b0000488b1424ff12488d642408e9830900004c8b6808ff7010ff70184c8b7424104c8d25080000004f8d642cff41ffe4eb12eb1ceb26eb30eb3aeb44eb4eeb58eb62eb6c49bc302f650800000000eb6a49bc482f650800000000eb5e49bc602f650800000000eb5249bc782f650800000000eb4649bc902f650800000000eb3a49bcb82f650800000000eb2e49bcd02f650800000000eb2249bcf02f650800000000eb1649bc0830650800000000eb0a49bc20306508000000004d8b2c244e8d2c6d010000004983fd01750f48b83830650800000000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15470900000f87be0300004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c60420524d89ec49d1ec42c64420014d49d1ed42c6442802208060ffbf4c89f2ff12ff742410f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff154c09000048bae85c62080000000048c7c305000000ff152d0900004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25020800000f876c0200004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b81022650800000000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba905d630800000000ff1520080000488b1424ff12488d642410e9960100004d89f64d89e54983fc0575374d89f6498b4608488d642408ff74240848bae85c62080000000048c7c303000000ff15d5070000488b1424ff12488d642410e9530100004d89f64983fd03752e4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff158f0700004883c408e91c0100004d89f6498b5e08488d642408ff742408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153907000048bae85c62080000000048c7c305000000ff151a0700004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b250f06000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642410e9f0040000488d64241848b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23ff7008ff7010488b54241048b85030650800000000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff15d7050000488b1424ff12488d642410488b54240848b8c007650800000000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff156705000048bae85c62080000000048c7c305000000ff15480500004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b254d04000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642410e936030000488d64241848b8f807620800000000488b5d08ff23ff7008ff70104c8b70184983fe030f8588010000488b54241048b87030650800000000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15f503000048bae85c62080000000048c7c305000000ff15d60300004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25e30200000f87a60000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b8c007650800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15d80200004883c410e983010000488d64242048b8f807620800000000488b5d08ff23488b54241048b89030650800000000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff155502000048bae85c62080000000048c7c305000000ff15360200004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25530100000f87a30000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b8c007650800000000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15380100004883c410eb15488d64242048b8f807620800000000488b5d08ff235a48b8a015620800000000ff22f604240175754c8b2c244d89ee41ff75004d89f641ff7608488b54241848b8e02e650800000000ff12ff74241848bae85c620800000000488b44241048c7c303000000ff15bf000000488b1424ff12488d642408488b54241848b8a015620800000000ff12415d488d6424084c892c24483b65187303ff5558eb85488d642408e96efffffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5897,1,@17285,@10649,@12481,@10649,@10599,@12481,@10649,@10599,@10649,@10599,@12461,@10649,@10599,@12481,@10649,@11175,@10649,@10599,@12461,@12481,@10649,@11175,@12461,@10649,@12461,@10649,@10599,@12481,@12461,@12481,@10649,@12481,@12461,@12481,@11175,@12481,@10649,@12481,@12461,@10649,@10599,@12461,@10649,@10649,@12461,@12481,@10649,@11175,@12461,@12461,@12461,@12461,@12481,@10649,@11175,@12461,@12481,@10649,@11175,@12461,@12461,@12481,@12461,@12461,@10649,@12461,@12461,@12461,@12461,@12461,@10649,@12461,@11175,@12461,@10649,@10512,@10517,@12461,@12461,@12481,@12481,@10649,@10599,@12461,@12481,@12481,@12481,@10649,@10599,@12477,@10649,@10599,@10649,@10599,@12481,@11175,@12461,@12481,@10649,@11175,@12461,@12461,@12461,@12461,@12481,@10649,@11175,@12461,@11175,@12481,@10649,@12481,@12461,@12461,@10649|491,0,@5770 507,0,@707 551,0,@5560 619,0,@5771 724,0,@5105 736,0,@5194 748,0,@5772 760,0,@5193 772,0,@5111 784,0,@5192 812,0,@5773 1015,0,@5372 1046,0,@187 1062,0,@707 1111,0,@117 1172,0,@5105 1184,0,@5194 1196,0,@5772 1208,0,@5193 1220,0,@5111 1232,0,@5192 1260,0,@5773 1463,0,@5372 1494,0,@5774 1510,0,@2573 1552,0,@117 1610,0,@5105 1622,0,@5194 1634,0,@5772 1646,0,@5193 1658,0,@5111 1670,0,@5192 1698,0,@5775 1944,0,@5774 1988,0,@2573 2048,0,@707 2193,0,@117 2220,0,@5776 2280,0,@5777 2348,0,@5778 2445,0,@5779 2480,0,@5780 2496,0,@2573 2539,0,@5126 2564,0,@5781 2598,0,@5782 2630,0,@5783 2648,0,@5784 2807,0,@5785 2822,0,@5786 2837,0,@5787 2852,0,@5788 2864,0,@5789 2876,0,@5790 2888,0,@5791 2900,0,@5792 2912,0,@5793 2924,0,@5794 2936,0,@5795 2948,0,@5796 2960,0,@5797 2972,0,@5798 2989,0,@5799 3005,0,@707 3066,0,@5800 3103,0,@5801 3148,0,@5802 3160,0,@5803 3177,0,@187 3194,0,@5372 3247,0,@5802 3259,0,@5803 3276,0,@187 3379,0,@5804 3391,0,@5805 3403,0,@5806 3415,0,@5807 3427,0,@5808 3439,0,@5809 3451,0,@5810 3463,0,@5811 3479,0,@2573 3562,0,@5804 3574,0,@5805 3586,0,@5806 3598,0,@5807 3610,0,@5808 3622,0,@5809 3634,0,@5810 3646,0,@5811 3663,0,@187 3680,0,@5372 3758,0,@5804 3770,0,@5805 3782,0,@5806 3794,0,@5807 3806,0,@5808 3818,0,@5809 3830,0,@5810 3842,0,@5811 3859,0,@187 3926,0,@651 3947,0,@707 3990,0,@5664 4168,0,@117 4192,0,@5812 4259,0,@651 4280,0,@707 4323,0,@5664 4501,0,@117 4525,0,@5813 4541,0,@5814 4589,0,@5813 4656,0,@651 4677,0,@707 4720,0,@5664 4916,0,@5826 4945,0,@117 4979,0,@5827 5034,0,@5828 5098,0,@5829 5115,0,@5372 5154,0,@5830 5230,0,@5831 5249,0,@5832 5316,0,@651 5337,0,@707 5380,0,@5664 5558,0,@117 5602,0,@5833 5621,0,@5834 5682,0,@5835 5701,0,@5836 5768,0,@5837 5786,0,@5838 5804,0,@5839 5816,0,@5840 5851,0,@5841 5911,0,@5842 5981,0,@5843 5993,0,@5844 6003,0,@1 6022,0,@1 6039,0,@93 6068,0,@231 6084,0,@707 6127,0,@213 6163,0,@5845 6260,0,@5779 6295,0,@5780 6311,0,@2573 6354,0,@5126 6388,0,@5846 6455,0,@5674 6473,0,@707 6541,0,@5674 6601,0,@5847 6642,0,@5674 6702,0,@5848 6743,0,@5674 6803,0,@5849 6838,0,@5674 6900,0,@5560 6971,0,@5850 6987,0,@707 7031,0,@924 7102,0,@5153 7119,0,@187 7179,0,@5774 7240,0,@5851 7311,0,@5852 7371,0,@5774 7415,0,@2573 7475,0,@707 7626,0,@5853 7643,0,@187 7687,0,@2573 7747,0,@707 7883,0,@5854 7951,0,@5855 8019,0,@5856 8087,0,@5857 8130,0,@2573 8189,0,@707 8327,0,@5858 8352,0,@5859 8387,0,@5860 8416,0,@5861 8445,0,@5862 8471,0,@5863 8483,0,@5864 8511,0,@5865 8527,0,@707 8585,0,@5618 8612,0,@5866 8628,0,@707 8693,0,@5867 8711,0,@5868 8723,0,@5869 8740,0,@187 8800,0,@5594 8867,0,@651 8888,0,@707 8945,0,@5867 8963,0,@5868 8975,0,@5869 8992,0,@187 9051,0,@5870 9072,0,@5871 9100,0,@5872 9150,0,@5774 9166,0,@707 9214,0,@5873 9242,0,@5874 9292,0,@5774 9308,0,@2573 9356,0,@5156 9373,0,@187 9423,0,@5774 9494,0,@5875 9511,0,@187 9561,0,@5774 9577,0,@707 9632,0,@5876 9682,0,@5774 9756,0,@5877 9773,0,@5372 9808,0,@5878 9875,0,@651 9896,0,@707 9943,0,@5879 10011,0,@5880 10027,0,@707 10082,0,@5881 10142,0,@5882 10185,0,@2573 10244,0,@707 10428,0,@5883 10440,0,@5884 10452,0,@5885 10464,0,@5886 10476,0,@5887 10488,0,@5888 10500,0,@5889 10512,0,@5890 10524,0,@5891 10536,0,@5892 10564,0,@5893 10817,0,@651 10838,0,@707 10881,0,@5663 11062,0,@5774 11106,0,@2573 11166,0,@707 11313,0,@651 11329,0,@707 11372,0,@5663 11554,0,@117 11575,0,@117 11596,0,@117 11623,0,@5894 11683,0,@5560 11750,0,@651 11771,0,@707 11814,0,@5663 11996,0,@117 12037,0,@5895 12104,0,@651 12125,0,@707 12168,0,@5663 12349,0,@5560 12408,0,@117 12429,0,@5896 12496,0,@651 12517,0,@707 12560,0,@5663 12741,0,@5560 12797,0,@117 12814,0,@165 12855,0,@5880 12871,0,@707 12915,0,@165 12477:D4,40|483b65187305ff5558cd054c8b42084c8b4a1048c7c319000000ff2520000000f400000000000000|@5821,1,@17281,@12478| 12478:D6,4128|483b65187306ff5558ca09034c89ca53f20f1028f20f10e5f20f10f4660f2eec7a0b750949c7c603000000eb0749c7c6010000004983fe037410488d64240848b80827650800000000c3f20f10eef2410f593066410f2e307a0b750949c7c603000000eb0749c7c6010000004983fe037426488d642408f2410f1030660f2ef5760b48b82027650800000000c348b83827650800000000c348c7c3050000004c8b0424ff124989c541ff75004d8b750841ff75104c8b6c24084d8b65004d89e24e8d1c65010000004c3b7424107e05e95d0800004983fef70f8c530800004983fe010f8fef01000048c7c001000000492bc67115488d64241848b8d006620800000000488b5d08ff234883c001ff15350f00004989c64d8b2e4a8d0c6d010000004883f901750f49ba5027650800000000e9960000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b20e00000f87560100004d89e34e8d149d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca02704d89d749d1eb4d895af841c642ff414983ec024bc744a2fc0000000049d1ed4d892a41c642083041c642092e498d7608498d7a0a48d1e9f3a4418062ffbf4d8b324e8d2c75010000004c8b6424084d8b34244e8d1c75010000004983fd0175084d89e6e9b20000004983fb0175084d89d6e9a40000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05de0d000077794c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfe9ec050000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff234d3bde0f8f020200004c89f0492bc37115488d64241848b8d006620800000000488b5d08ff234883c001ff15390d00004989c54c8b5424084d8b324e8d3475010000004d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05980c00000f87570100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be6827650800000000e9a40000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15c10b000077774d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262e49d1ed43c6442e0130418066ffbfe9e1030000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff234d89ed4d89d44e8d1455010000004983fe010f8c220400004d3bf27615488d64241848b82086620800000000488b5d08ff234d89ed4e8d2465010000004d3bf475084d89ece9a80000004983fe01750f49bcd808620800000000e9930000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b158e0a00000f87970300004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc000000004d89f249d1ea4d8914244c89f14d89ed498d7508498d7c240848d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba0019620800000000e99c0000004d89e94983c1024c89c84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05cb0900000f87c70200004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1e94d890a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf4c89d9492bce7115488d64241848b8d006620800000000488b5d08ff234883c1014c8b5c24084d8b234d89e54e8d0c65010000004983fe010f8c0e0200004883f9010f8cef0100004d8d640eff4d3be17615488d64241848b82086620800000000488b5d08ff234d89db4e8d2c6d010000004983fe01750d493bcd75084d89dce9af0000004883f901750f49bcd808620800000000e99a0000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2c45010000004c3b2d940800000f87590100004d89e94e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ed024bc744acfc000000004989cd49d1ed4d892c244d89f54983c51049d1ed4d89de4b8d342e498d7c240848d1e9f3a441806424ffbf4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9af0000004983fb0175084d89d6e9a10000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ba07000077764c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfe9b4050000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff234983fb0375084d89ebe92e0300004d89ed4d89d44e8d1455010000004983fa037315488d64241848b82086620800000000488b5d08ff234d89ed4e8d2465010000004983fc0375054d89eceb5b49c7c2050000004e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff4149c74424080000000049c70424010000004d89ed4d0fb66d0845886c240841806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b90019620800000000e99c0000004d89ea4983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0445010000004c3b05ae0500000f87630500004c89c74c8d0cbd0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007d4d89cf48d1ef498979f841c641ff414983e8024bc74481fc0000000049d1ea4d89114c89e9498d742408498d790848d1e9f3a44983c51049d1ed43c604292e418061ffbf4c89d94883e9027115488d64241848b8d006620800000000488b5d08ff234c8b6c24084d8b65004e8d1c65010000004883f9010f8caf0400004989cc4983c4024d3be37615488d64241848b82086620800000000488b5d08ff234883f901750f49bcd808620800000000e9900000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1da20400000f87350400004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026a4d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004989cb49d1eb4d891c244d89ed498d7509498d7c240848d1e9f3a441806424ffbf4d8b294e8d2c6d010000004d8b1c244e8d145d010000004983fd0175084d89e3e9b30000004983fa0175084d89cbe9a50000004f8d4415ff4c89c04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d3c4501000000483b3dd20300000f87580300004889fe4c8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca80774d89df48d1ee498973f841c643ff414883ef0249c744bbfc0000000049d1e84d89034c89e9498d7108498d7b0848d1e9f3a44983c5104c89d1498d74240849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd281b620800000000e99d0000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d030300000f877c0200004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049d1ec43c644250045418065ffbf41554c89f04883e8027115488d64242048b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15d70200004989c44c8b14244d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd01750d488d6424084d89e6e9c00000004983fb01750d4d89d6488d642408e9ad0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05e50100000f87510100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208488d642408498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c8b2c244983fd01488d6424080f84bc000000488d6424104d8b2e4a8d0c6d010000004883f901750b48b88020620800000000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25fa00000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640087e498d7608488d780948d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff23488d6424104c89f0c3488d64242048b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@5822,1,@17282,@10649,@12479,@12479|65,0,@5816 132,0,@5817 143,0,@5818 251,0,@105 297,0,@5819 692,0,@117 713,0,@117 751,0,@105 1026,0,@5820 1215,0,@117 1236,0,@117 1286,0,@994 1332,0,@123 1512,0,@201 1696,0,@105 1770,0,@994 1822,0,@123 2213,0,@117 2234,0,@117 2255,0,@76 2276,0,@76 2297,0,@117 2318,0,@117 2339,0,@76 2394,0,@994 2541,0,@201 2726,0,@105 2786,0,@994 2808,0,@123 3200,0,@224 3388,0,@105 3404,0,@707 3709,0,@281 3859,0,@117 3889,0,@117 3910,0,@117 3931,0,@117 3952,0,@117 3973,0,@76 3994,0,@117 12479:D3,256|483b65187305ff5558cd014883f8017f0b48b8d808620800000000c34883e802711048b8d006620800000000488b5d08ff23e8c9ffffff4989c64d8b2e4a8d0c6d010000004883f901750b48b83019620800000000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257200000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400830498d7608488d780948d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01|@5823,1,@17283|19,0,@123 36,0,@105 77,0,@203 227,0,@117 12480:D3,80|49bbc003b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@5825,1,@17284|2,0,@38 12481:D9,552|483b65187306ff5558ca090350534151ff342448bae85c6208000000004c89c048c7c303000000ff153b020000488b1424ff12488d642408488b142448b87018620800000000ff12ff34244c8b742418498b064d89f6498b5e0849c7c005000000ff15f9010000488b1424ff12488d642408488b142448b88818620800000000ff124c8b7424084d8b264d89e54983fc0775594d89f641ff7608488b54240848b8381d620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff158d010000488b1424ff12488d6424105a488d64240848b8c8186508000000004883c408ff224d89f64d89ec4983fd0575594d89f641ff7608488b54240848b8381d620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1520010000488b1424ff12488d6424105a488d64240848b8e0186508000000004883c408ff224d89f64d89e54983fc0375594d89f641ff7608488b54240848b8381d620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15b3000000488b1424ff12488d6424105a488d64240848b8f8186508000000004883c408ff224d89f64983fd0175594d89f641ff7608488b54240848b8381d620800000000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1549000000488b1424ff12488d6424105a488d64240848b8681d6208000000004883c408ff22488d64241848c7c001000000c3f40000|@5898,1,@17286,@12461,@12461,@12461,@12461,@12461,@10649|21,0,@707 62,0,@195 120,0,@196 161,0,@246 222,0,@5710 262,0,@246 323,0,@5711 363,0,@246 424,0,@5712 461,0,@246 522,0,@248 12482:D13,2584|483b65187306ff5558ca09034989dea8010f85ea0900004c8b28488b40084d8b65004d89e34983fc4d0f85cc000000a8010f85c20000004c8b204d89e24d8b24244983fc4d750949c7c403000000eb0749c7c4010000004983fc030f85980000004d8b5d084d8b6d104c8b60084d8b42084d8b52104983e8014d03d8711048b8d006620800000000488b5d08ff234983fd03750949c7c203000000eb004d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d8955104d895d0849c745004d000000498d47e8483b45107306ff5550ca00724989c748c740f8020000004c8960084c89284c89f349c7c003000000e907ffffffeb004d89dc4983fb090f855a0400004d8b5d184d89da4d8b1b4983fb057541a80175344c8b18498b3b4883ff09751f4d8b5b184d8b1b4983fb05750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f85f8030000498b75084d8b5d104d89d44d8b642408488b10ff7008488b7a08488b5a104c8b52184d8b52084c3bdb7502eb39498b0b488b03483bc8751f498b4b08488b5b08483bcb750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f9037402eb1e4883fe017502eb084883fe097402eb0e4883ff017502eb584883ff097452498d47e8483b45107306ff5550ca04634989c748c740f8020000004c8b24244c896008488d642408488910498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be9c0fdffff6a016a014883fe090f85330100004883ff09754741f6c401741441f6c201740e4d89d54983ed014d03ec7002eb1b4c89d34c89e0415641514153ff15f8070000415b4159415e4989c548c70424090000004c896c2408e9cc0000004883ff010f85c700000041f6c401740d41f6c20174074d3be27c2beb6d4c89d34c89e041564151415341544152ff15a2070000415a415c415b4159415e4989c54983fd017d4441f6c201741441f6c401740e4d89d54d2bec70064983c501eb1b4c89e34c89d0415641514153ff155b070000415b4159415e4989c548c70424010000004c896c2408eb4241f6c401741441f6c201740e4d89e54d2bea70064983c501eb1b4c89d34c89e0415641514153ff150f070000415b4159415e4989c548c70424090000004c896c2408e939010000488d64241848b83031650800000000488b5d08ff234883fe010f85c20100004883ff090f85c400000041f6c401740d41f6c20174074d3be27c2beb6d4c89d34c89e041564151415341544152ff159a060000415a415c415b4159415e4989c54983fd017d4441f6c201741441f6c401740e4d89d54d2bec70064983c501eb1b4c89e34c89d0415641514153ff1553060000415b4159415e4989c548c70424090000004c896c2408eb4241f6c401741441f6c201740e4d89e54d2bea70064983c501eb1b4c89d34c89e0415641514153ff1507060000415b4159415e4989c548c70424010000004c896c2408eb4c4883ff010f85d500000041f6c401741441f6c201740e4d89d54983ed014d03ec7002eb1b4c89d34c89e0415641514153ff15b1050000415b4159415e4989c548c70424010000004c896c2408415c415d4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a0849c702050000004d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d8955184d895d104d89650849c7450009000000498d47e8483b45107306ff5550ca00624989c748c740f8020000004c8b24244c896008488d6424084c89284c89f349c7c003000000e9c8faffff488d64241848b83031650800000000488b5d08ff23488d64241848b83031650800000000488b5d08ff234983fc3f0f856e0400004d8b5d104d89dc4d8b134983fa0375414d8b5b104d8b1b4983fb09752ba801751e4c8b184d8b1b4983fb4d750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f850c040000498b7508498b4c2408498b5c24184c8b204c8b5808498b7c24084d8b542410483b0d440400007502eb37488b114883fa09751c488b51084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa037405e9620300004889fa4883ea01486bd208711048b8d006620800000000488b5d08ff234883c201483bda7d0948c7c203000000eb0748c7c2010000004883fa030f85220300004889d849c7c51100000048d1f849d1fd489949f7fd4c8d2445010000004889d849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb4a4983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374184983ec02711048b8d006620800000000488b5d08ff23eb004c3be77d02eb034989fc4983fc010f85f50000004883fb010f85db000000492bfc711048b8d006620800000000488b5d08ff234989fc4983ec01711048b8d006620800000000488b5d08ff234983fc0175054c89d8eb4d4d8d6fe04c3b6d107306ff5550ca405e4d89ef49c745f8030000004d8955104d89650849c745004d000000498d47e8483b45107306ff5550ca406a4989c748c740f8020000004c8958084c89284d8d6fe84c3b6d107306ff5550ca41424d89ef49c745f8020000004989750849c7450045000000498d5fe8483b5d107306ff5550ca01624989df48c743f8020000004c8973084c892b49c7c003000000e90cf8ffff48b8f831650800000000488b5d08ff234d89e04983e8014d6bc008711048b8d006620800000000488b5d08ff234983c0014989dd4d2be8711048b8d006620800000000488b5d08ff234983c5014d8d47d84c3b45107306ff5550cac27e4d89c749c740f8040000004d89681849bd58e46408000000004d8968104989480849c700030000004d8d6fe04c3b6d107306ff5550cac05f4d89ef49c745f8030000004d8945104989750849c745003f000000493bfc7502eb6b4989f84d2bc4711048b8d006620800000000488b5d08ff234983c001498d7fe0483b7d107306ff5550ca007f4989ff48c747f8030000004c8957104c89470848c7074d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f8020000004d8958084989384d89c3498d47e8483b45107306ff5550ca007e4989c748c740f8020000004c8958084c89284d8d6fe04c3b6d107306ff5550ca01564d89ef49c745f8030000004d8955104d89650849c745004d000000498d5fe8483b5d107306ff5550ca01624989df48c743f8020000004c8973084c892b49c7c003000000e96ff6ffff498d47e8483b45107306ff5550ca007b4989c748c740f8020000004c8958084c8920498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be926f6ffff498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be9fff5ffff4c89f048c7c301000000ff251f000000f4000000000000|@5906,1,@17287,@12483,@5753,@10599,@10653,@10653,@12224,@10653,@10653,@12224,@10599|128,0,@105 883,0,@5899 1343,0,@5899 1364,0,@5899 1598,0,@105 1771,0,@105 1824,0,@105 1849,0,@105 2038,0,@5903 2067,0,@105 2095,0,@105 2146,0,@5372 2229,0,@105 12483:D3,392|483b65187306ff5558ca0903a8010f855e0100004c8b28488b40084d8b75004983fe210f851f010000a8010f85150100004c8b304d89f24d8b264983fc29751c4d8b76084983fe03750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f85d9000000498b7d084d8b75104c8b60084d8b5a10493bfb7502eb51493bfb744c498d47e8483b45107306ff5550ca08374989c748c740f8020000004c8960084c89104d8d77e84c3b75107306ff5550ca09234d89f749c746f80200000049895e084d892e4c89f3e92bffffff4983fe03750f4c89e049c7c003000000e916ffffff4d8d77e04c3b75107306ff5550ca081a4d89f749c746f8030000004d895e1049c746080100000049c70629000000498d47e8483b45107306ff5550ca08524989c748c740f8020000004c8960084c893049c7c003000000e9bafeffffeb004d8d77e84c3b75107306ff5550ca09234d89f749c746f80200000049895e084d892e4c89f3e98efeffff4989194d89410848c7c001000000c3f4000000000000|@5907,1,@17288| 12484:D4,184|483b65187306ff5558ca090141504d8d77f04c3b75107305ff5550cd094d89f749c746f80100000041c646ff4049891e415648c7c30100000049c7c0010000004c8b0c24ff15860000004989c649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4c8b34244d8b36488d642408415d4d8965004d89750848c7c001000000c3f40000|@6237,1,@17467,@12662| 12485:D3,72|49bbe803b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@5909,1,@17290|2,0,@39 12486:D366,50840|483b65187306ff5558ca09014989c6534150498b0641ff760849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e4156483b05b4d100007502eb334c8b304e8d3475010000004983fe01753549bed808620800000000488d7008498d7e0848c7c100000000483bc9f3a67402eb13488b54240848b8981a620800000000ff12eb07488b542408ff12488b54240848b8801f650800000000ff124c8b34244d8b264c89e34c8b6c24184d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be30f8330bd000049d1ec4d89ed4f0fb66c25004e8d2c6d010000004981fde90100000f84f9bc0000ff742408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15c0d0000048bae85c62080000000048c7c305000000ff15a1d00000488b1424ff12488d642408488b54240848b88815620800000000ff124c8b34244d8b2e4c8b7424184d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f834bbc000049d1ed4d89f64f0fb6342e4e8d3475010000004981fee10100007526488b54240848b84033650800000000ff124c8b2c244d8b75004983c6024d89ed4d897500eb004c8b1c244d8b234d89e54c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3be20f83c4bb000049d1ec4d89f64f0fb624264e8d2465010000004981fce50100007502eb144981fce70100007502eb094981fccd000000750f4d89db4983c5024d89db4d892beb0749c7c4010000004c8b14244d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f8339bb000049d1ed4d89f64f0fb62c2e4e8d2c6d010000004981fd8100000072184981fd9f000000770f4d89d24983c3024d89d24d891aeb0749c7c50100000041554c8b2c244d89eb4983e5114983fd01750949c7c503000000eb0749c7c5010000004983f50241554d89db4d89dd4983e3094983fb01750949c7c303000000eb0749c7c3010000004983f30241534d89ed4c89eb4983e5034983fd01750949c7c503000000eb0749c7c5010000004983f50241554c8b5424204d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f8345ba000049d1ed4d89f64b0fb6042e4c8d2c450100000041554d89d24983c3024d89d24d89d54d891a4c8b5424184d89d34983fa03750949c7c205000000eb194981fccd000000750949c7c207000000eb0749c7c20300000041524c8b5424084983ea064d89d14981f9fb0100000f8360b900004c8d0d080000004f8d4c91fc41ffe1e9e3070000909090e990090000909090e992090000909090e994090000909090e996090000909090e998090000909090e99a090000909090e99c090000909090e99e090000909090e94b0b0000909090e94d0b0000909090e94f0b0000909090e9510b0000909090e9d43b0000909090e9d63b0000909090e9d83b0000909090e9da3b0000909090e9873d0000909090e9893d0000909090e98b3d0000909090e98d3d0000909090e98f3d0000909090e9913d0000909090e9933d0000909090e9953d0000909090e9423f0000909090e9443f0000909090e9463f0000909090e9483f0000909090e94a3f0000909090e94c3f0000909090e94e3f0000909090e9503f0000909090e9fd400000909090e9ff400000909090e901410000909090e903410000909090e905410000909090e907410000909090e909410000909090e90b410000909090e9b8420000909090e9ba420000909090e9bc420000909090e9be420000909090e9c0420000909090e9c2420000909090e9c4420000909090e9c6420000909090e973440000909090e975440000909090e977440000909090e979440000909090e97b440000909090e97d440000909090e97f440000909090e981440000909090e92e460000909090e930460000909090e932460000909090e934460000909090e936460000909090e938460000909090e93a460000909090e93c460000909090e93e460000909090e940460000909090e942460000909090e944460000909090e946460000909090e948460000909090e94a460000909090e94c460000909090e94e460000909090e950460000909090e952460000909090e954460000909090e956460000909090e975470000909090e994480000909090e9b3490000909090e9d24a0000909090e9f14b0000909090e9104d0000909090e92f4e0000909090e94e4f0000909090e96d500000909090e98c510000909090e9ab520000909090e9ca530000909090e9e9540000909090e908560000909090e927570000909090e946580000909090e948580000909090e94a580000909090e94c580000909090e94e580000909090e950580000909090e952580000909090e954580000909090e956580000909090e94d590000909090e9395b0000909090e9b45c0000909090e9295f0000909090e92b5f0000909090e92d5f0000909090e92f5f0000909090e9315f0000909090e957600000909090e97d610000909090e9a3620000909090e9c9630000909090e9ef640000909090e915660000909090e93b670000909090e961680000909090e987690000909090e9ad6a0000909090e9d36b0000909090e9f96c0000909090e91f6e0000909090e9456f0000909090e96b700000909090e991710000909090e94c750000909090e97d780000909090e97f780000909090e9397c0000909090e93b7c0000909090e93d7c0000909090e93f7c0000909090e9307d0000909090e962830000909090e953840000909090e955840000909090e94b850000909090e94d850000909090e943860000909090e945860000909090e9ac860000909090e9bf860000909090e9c1860000909090e9c3860000909090e9c5860000909090e9c7860000909090e9c9860000909090e9cb860000909090e9cd860000909090e9cf860000909090e90d870000909090e90f870000909090e911870000909090e913870000909090e915870000909090e928870000909090e92a870000909090e92c870000909090e92e870000909090e930870000909090e932870000909090e961870000909090e990870000909090e9bf870000909090e9c1870000909090e93c890000909090e93e890000909090e96d890000909090e9c8890000909090e9ca890000909090e9cc890000909090e9ce890000909090e9d0890000909090e9d2890000909090e9d4890000909090e9d6890000909090e9d8890000909090e9da890000909090e9dc890000909090e9de890000909090e9e0890000909090e9508c0000909090e9c08e0000909090e930910000909090e9a0930000909090e910960000909090e980980000909090e9f09a0000909090e9609d0000909090e9629d0000909090e97e9d0000909090e9749f0000909090e9879f0000909090e9899f0000909090e98b9f0000909090e96ba10000909090e9c1a20000909090e9c3a20000909090e9c5a20000909090e9d8a30000909090e9daa30000909090e9dca30000909090e956a40000909090e958a40000909090e95aa40000909090e95ca40000909090e978a40000909090e97aa40000909090e996a40000909090e998a40000909090e99aa40000909090e99ca40000909090e99ea40000909090e9baa40000909090e9d6a40000909090e9f2a40000909090e90ea50000909090e92aa50000909090e946a50000909090e962a50000909090e97ea50000909090e980a50000909090e982a50000909090e984a50000909090e986a50000909090e988a50000909090e98aa50000909090e98ca50000909090e98ea50000909090e962a60000909090e936a70000909090e938a70000909090e95ea80000909090e960a80000909090e962a80000909090e964a80000909090e966a80000909090e968a80000909090e96aa80000909090e96ca80000909090e96ea80000909090e981a80000909090e983a80000909090e900ac0000909090e95caf0000909090e95eaf0000909090e960af0000909090e962af0000909090e964af0000909090e966af0000909090e968af0000909090e96aaf00009090904d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff15f5c40000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd98e6a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1584c40000488d642430e9bdb00000488d64245048b85834650800000000488b5d08ff23488d642408e9afaf0000488d642408e9a5af0000488d642408e99baf0000488d642408e991af0000488d642408e987af0000488d642408e97daf0000488d642408e973af00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff15eac20000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bde8e6a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1579c20000488d642430e9c2ae0000488d64245048b85834650800000000488b5d08ff23488d642408e9b4ad0000488d642408e9aaad0000488d642408e9a0ad00004d89ea4d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f834930000049d1ed4d89f64f0fb62c2e4e8d2c6d0100000041554d89d24983c3024d89d24d89d54d891a4981fccd0000000f85520600004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f831206000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b7424084d89f54981feaf0000000f85b6010000488b54244848b8b034650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1517c1000048bae85c62080000000048c7c305000000ff15f8c000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2575b500000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd38e7a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15ccbf00004883c440e936040000488d64246848b8f807620800000000488b5d08ff234d89ed4d89ee4981fda90000000f85b6010000488b54244848b8c834650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1536bf000048bae85c62080000000048c7c305000000ff1517bf00004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25a4b300000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bda8e8a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15ebbd00004883c440e96d020000488d64246848b8f807620800000000488b5d08ff234d89f64983fe5d0f85b6010000488b54244848b8e034650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff155bbd000048bae85c62080000000048c7c305000000ff153cbd00004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25d9b100000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd18eaa609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1510bc00004883c440e9aa000000488d64246848b8f807620800000000488b5d08ff23488d642408488b54244048b8f834650800000000ff12488b54244048b81035650800000000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1577bb000048bae85c62080000000048c7c305000000ff1558bb0000488b1424ff12488d642440e9d5290000488d64245848b85834650800000000488b5d08ff234981fce70100000f857f0400004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f833f04000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b6c24084d89ee4983fd230f85ae010000488b54244848b82835650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd88eba609000000004d89284156488b44244048c7c3030000004c8b4c24484c8b542460ff1560ba0000488b54244848b8d018620800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15fbb9000048bae85c62080000000048c7c305000000ff15dcb900004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25a1ae000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642448e96e020000488d64246848b8f807620800000000488b5d08ff234d89f64981feb50000000f85b4010000488b54244848b84035650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff158db8000048bae85c62080000000048c7c305000000ff156eb800004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b253bad00000f87d20000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdf8eca609000000004d89284156488b442440488b5c24184c8b4c24484c8b542460ff1544b700004883c440e9aa000000488d64246848b8f807620800000000488b5d08ff23488d642408488b54244048b86035650800000000ff12488b54244048b81035650800000000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15abb6000048bae85c62080000000048c7c305000000ff158cb60000488b1424ff12488d642440e949250000488d64245848b85834650800000000488b5d08ff234981fce50100000f852f0f00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83ef0e000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b6c24084d89ee4981fdbd0000000f85b6010000488b54244848b87835650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1594b5000048bae85c62080000000048c7c305000000ff1575b500004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2562aa00000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd48eda609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1549b400004883c440e9130d0000488d64246848b8f807620800000000488b5d08ff234d89f64d89f54981feb90000000f85b6010000488b54244848b89035650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15b3b3000048bae85c62080000000048c7c305000000ff1594b300004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2591a800000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdb8eea609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1568b200004883c440e94a0b0000488d64246848b8f807620800000000488b5d08ff234d89ed4d89ee4981fdb50000000f85b6010000488b54244848b8a835650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15d2b1000048bae85c62080000000048c7c305000000ff15b3b100004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0a600000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd28f0a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1587b000004883c440e981090000488d64246848b8f807620800000000488b5d08ff234d89f64d89f54981feb30000000f85b6010000488b54244848b8c835650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15f1af000048bae85c62080000000048c7c305000000ff15d2af00004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25efa400000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd98f1a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15a6ae00004883c440e9b8070000488d64246848b8f807620800000000488b5d08ff234d89ed4d89ee4981fdb10000000f85b6010000488b54244848b8e035650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1510ae000048bae85c62080000000048c7c305000000ff15f1ad00004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b251ea300000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd08f3a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15c5ac00004883c440e9ef050000488d64246848b8f807620800000000488b5d08ff234d89f64d89f54983fe550f85b4010000488b54244848b8f835650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1532ac000048bae85c62080000000048c7c305000000ff1513ac00004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2550a100000f87d20000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd78f4a609000000004d89284156488b442440488b5c24184c8b4c24484c8b542460ff15e9aa00004883c440e92b040000488d64246848b8f807620800000000488b5d08ff234d89ed4d89ee4983fd230f85ae010000488b54244848b81836650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdc8f4a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1553aa0000488b54244848b8d018620800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff15eea9000048bae85c62080000000048c7c305000000ff15cfa900004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25249f000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642448e96d020000488d64246848b8f807620800000000488b5d08ff234d89f64983fe210f85b6010000488b54244848b81836650800000000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff1583a8000048bae85c62080000000048c7c305000000ff1564a800004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c19d00000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd38f6a609000000004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1538a700004883c440e9aa000000488d64246848b8f807620800000000488b5d08ff23488d642408488b54244048b83036650800000000ff12488b54244048b81035650800000000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff159fa6000048bae85c62080000000048c7c305000000ff1580a60000488b1424ff12488d642440e90d160000488d64245848b85834650800000000488b5d08ff234983fc010f85231500004c8b1c244d89dc4981fb1f0100000f85ed000000488d6424384d89ed498b45004c89f3ff1520a600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b84836650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15b8a500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff155fa5000048bae85c62080000000048c7c305000000ff1540a50000488b1424ff12488d642410e91d1400004d89e44d89e34981fc1d0100000f85ed000000488d6424384d89ed498b45004c89f3ff1500a500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b86036650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1598a400004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153fa4000048bae85c62080000000048c7c305000000ff1520a40000488b1424ff12488d642410e91d1300004d89db4d89dc4981fb1b0100000f85ed000000488d6424384d89ed498b45004c89f3ff15e0a300004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b87836650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1578a300004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151fa3000048bae85c62080000000048c7c305000000ff1500a30000488b1424ff12488d642410e91d1200004d89e44d89e34981fc190100000f85ed000000488d6424384d89ed498b45004c89f3ff15c0a200004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b89036650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1558a200004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15ffa1000048bae85c62080000000048c7c305000000ff15e0a10000488b1424ff12488d642410e91d1100004d89db4d89dc4981fb170100000f85ed000000488d6424384d89ed498b45004c89f3ff15a0a100004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8a836650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1538a100004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15dfa0000048bae85c62080000000048c7c305000000ff15c0a00000488b1424ff12488d642410e91d1000004d89e44d89e34981fc150100000f85ed000000488d6424384d89ed498b45004c89f3ff1580a000004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8c036650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1518a000004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15bf9f000048bae85c62080000000048c7c305000000ff15a09f0000488b1424ff12488d642410e91d0f00004d89db4d89dc4981fb130100000f85ed000000488d6424384d89ed498b45004c89f3ff15609f00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8d836650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15f89e00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159f9e000048bae85c62080000000048c7c305000000ff15809e0000488b1424ff12488d642410e91d0e00004d89e44d89e34981fc110100000f85ed000000488d6424384d89ed498b45004c89f3ff15409e00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8f036650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15d89d00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff157f9d000048bae85c62080000000048c7c305000000ff15609d0000488b1424ff12488d642410e91d0d00004d89db4d89dc4981fb0f0100000f85ed000000488d6424384d89ed498b45004c89f3ff15209d00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b80837650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15b89c00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff155f9c000048bae85c62080000000048c7c305000000ff15409c0000488b1424ff12488d642410e91d0c00004d89e44d89e34981fc0d0100000f85ed000000488d6424384d89ed498b45004c89f3ff15009c00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b82037650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15989b00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153f9b000048bae85c62080000000048c7c305000000ff15209b0000488b1424ff12488d642410e91d0b00004d89db4d89dc4981fb0b0100000f85ed000000488d6424384d89ed498b45004c89f3ff15e09a00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b83837650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15789a00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151f9a000048bae85c62080000000048c7c305000000ff15009a0000488b1424ff12488d642410e91d0a00004d89e44d89e34981fc090100000f85ed000000488d6424384d89ed498b45004c89f3ff15c09900004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b85037650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15589900004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15ff98000048bae85c62080000000048c7c305000000ff15e0980000488b1424ff12488d642410e91d0900004d89db4d89dc4981fb070100000f85ed000000488d6424384d89ed498b45004c89f3ff15a09800004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b86837650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15389800004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15df97000048bae85c62080000000048c7c305000000ff15c0970000488b1424ff12488d642410e91d0800004d89e44d89e34981fc050100000f85ed000000488d6424384d89ed498b45004c89f3ff15809700004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b88037650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15189700004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15bf96000048bae85c62080000000048c7c305000000ff15a0960000488b1424ff12488d642410e91d0700004d89db4d89dc4981fb030100000f85ed000000488d6424384d89ed498b45004c89f3ff15609600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b89837650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15f89500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159f95000048bae85c62080000000048c7c305000000ff1580950000488b1424ff12488d642410e91d0600004d89e44d89e34981fc010100000f85ed000000488d6424384d89ed498b45004c89f3ff15409500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8b037650800000000ff12488b54241048b88815620800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15d89400004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff157f94000048bae85c62080000000048c7c305000000ff1560940000488b1424ff12488d642410e91d0500004d89db4d89dc4981fb5f0100000f8503010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c837650800000000ff12ff742440488b442408488b5c24284c8b442410ff15ba930000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bda8f7a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1549930000488d642430e91c040000488d64245048b85834650800000000488b5d08ff234d89e44d89e34981fc6f0100000f8504010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bf00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8e037650800000000ff12ff742440488b442408488b5c24284c8b442410ff1594920000488b1424ff12488d642418488b54243048b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24304d89ee4d89680849bdf8f7a609000000004d89284156488b44242848c7c3070000004c8b4c24304c8b542448ff15219200004883c428e905030000488d64245048b85834650800000000488b5d08ff234d89db4d89dc4981fb6d0100000f8504010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bf00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8e037650800000000ff12ff742440488b442408488b5c24284c8b442410ff156d910000488b1424ff12488d642418488b54243048b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24304d89ee4d89680849bd48f8a609000000004d89284156488b44242848c7c3010000004c8b4c24304c8b542448ff15fa9000004883c428e9ee010000488d64245048b85834650800000000488b5d08ff234d89e44981fc830100000f85fe000000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f837650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd98f8a609000000004d89284156488b442438488b5c24104c8b4c24404c8b542458ff1515900000488b54244048b8d018620800000000ff12ff742440488b442408488b5c24284c8b442410ff15e38f0000488b1424ff12488d642440e9e0000000488d64245048b85834650800000000488b5d08ff23488b54244048b81038650800000000ff12f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff155c8f0000488b1424ff12488d642440eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15058f000048bae85c62080000000048c7c303000000ff15e68e0000488b1424ff12488d642440e9cb000000488b54244048b81038650800000000ff12f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff15748e0000488b1424ff12488d642440eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151d8e000048bae85c62080000000048c7c303000000ff15fe8d0000488b1424ff12488d642440e9197e0000488d64245048b85834650800000000488b5d08ff23488d642408e90b7d0000488d642408e9017d0000488d642408e9f77c00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff15868c0000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bde8f8a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15158c0000488d642430e9467c0000488d64245048b85834650800000000488b5d08ff23488d642408e9387b0000488d642408e92e7b0000488d642408e9247b0000488d642408e91a7b0000488d642408e9107b0000488d642408e9067b0000488d642408e9fc7a00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff157b8a0000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd38f9a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff150a8a0000488d642430e94b7a0000488d64245048b85834650800000000488b5d08ff23488d642408e93d790000488d642408e933790000488d642408e929790000488d642408e91f790000488d642408e915790000488d642408e90b790000488d642408e9017900004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff1570880000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd88f9a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15ff870000488d642430e950780000488d64245048b85834650800000000488b5d08ff23488d642408e942770000488d642408e938770000488d642408e92e770000488d642408e924770000488d642408e91a770000488d642408e910770000488d642408e9067700004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff1565860000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdd8f9a609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15f4850000488d642430e955760000488d64245048b85834650800000000488b5d08ff23488d642408e947750000488d642408e93d750000488d642408e933750000488d642408e929750000488d642408e91f750000488d642408e915750000488d642408e90b7500004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff155a840000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd28faa609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15e9830000488d642430e95a740000488d64245048b85834650800000000488b5d08ff23488d642408e94c730000488d642408e942730000488d642408e938730000488d642408e92e730000488d642408e924730000488d642408e91a730000488d642408e9107300004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54244048b88815620800000000ff12ff742440488b442408488b5c24284c8b442410ff154f820000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd78faa609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15de810000488d642430e95f720000488d64245048b85834650800000000488b5d08ff23488d642408e951710000488d642408e947710000488d642408e93d710000488d642408e933710000488d642408e929710000488d642408e91f710000488d642408e915710000488d642408e90b710000488d642408e901710000488d642408e9f7700000488d642408e9ed700000488d642408e9e3700000488d642408e9d9700000488d642408e9cf700000488d642408e9c5700000488d642408e9bb700000488d642408e9b1700000488d642408e9a7700000488d642408e99d700000488d642408e993700000488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15bc8000004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d017900000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e970700000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff158d7f00004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd27700000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9496f0000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff155e7e00004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da37600000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9226e0000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff152f7d00004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d747500000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9fb6c0000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15007c00004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d457400000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9d46b0000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15d17a00004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d167300000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9ad6a0000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15a27900004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de77100000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e986690000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15737800004989c64d8b2e4e8d2c6d010000004983fd01750f48b82838650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db87000000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc283865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e95f680000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15447700004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d896f00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e938670000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15157600004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5a6e00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e911660000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15e67400004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2b6d00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9ea640000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15b77300004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dfc6b00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9c3630000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15887200004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dcd6a00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e99c620000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15597100004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d9e6900000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e975610000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff152a7000004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6f6800000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e94e600000488d64245048b8f807620800000000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15fb6e00004989c64d8b2e4e8d2c6d010000004983fd01750f48b84038650800000000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d406700000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc403865080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9275f0000488d64245048b8f807620800000000488b5d08ff23488d642408e9195e0000488d642408e90f5e0000488d642408e9055e0000488d642408e9fb5d0000488d642408e9f15d0000488d642408e9e75d0000488d642408e9dd5d0000488d642408e9d35d0000488d642430488b54240848b82838650800000000ff124c8b3424498b06488b5c2418ff15876d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15316d0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15da6c000048bae85c62080000000048c7c303000000ff15bb6c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500e9c35d00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b401000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c837650800000000ff12ff742440488b442408488b5c24284c8b442410ff151a6c0000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdc8faa609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15a96b0000488d642408488b54243048b8d018620800000000ff124c8b742428498b06488b5c2440ff15786b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae85c620800000000488b44240848c7c303000000ff15226b0000488b1424ff12488d642438eb64488b54243848b8e818620800000000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15cb6a000048bae85c62080000000048c7c303000000ff15ac6a0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e9e45b0000488d64245048b85834650800000000488b5d08ff23488d642430488b54240848b82838650800000000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff1574690000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151d69000048bae85c62080000000048c7c303000000ff15fe680000488b1424ff12488d642410e9615a0000488d64242048b85834650800000000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f833d02000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c837650800000000ff12ff742440488b442408488b5c24284c8b442410ff155b680000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd18fba609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15ea670000488d642408488b54243048b8d018620800000000ff124c8b6c24284d8b5d004d89de4c8b6424404d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832b010000488d64242849d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15e4660000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158d66000048bae85c62080000000048c7c303000000ff156e660000488b1424ff12488d642410e9f9570000488d64244848b85834650800000000488b5d08ff23488d64245048b85834650800000000488b5d08ff23488d642408e9d6560000488d642408e9cc560000488d642408e9c2560000488d642408e9b8560000488d642430488b54240848b85838650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151265000048bae85c62080000000048c7c305000000ff15f3640000488b1424ff12488d642408e98e560000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b87038650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15d463000048bae85c62080000000048c7c305000000ff15b5630000488b1424ff12488d642408e960550000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b88838650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159662000048bae85c62080000000048c7c305000000ff1577620000488b1424ff12488d642408e932540000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8a038650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff155861000048bae85c62080000000048c7c305000000ff1539610000488b1424ff12488d642408e904530000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8b838650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151a60000048bae85c62080000000048c7c305000000ff15fb5f0000488b1424ff12488d642408e9d6510000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8d038650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15dc5e000048bae85c62080000000048c7c305000000ff15bd5e0000488b1424ff12488d642408e9a8500000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8e838650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159e5d000048bae85c62080000000048c7c305000000ff157f5d0000488b1424ff12488d642408e97a4f0000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b80039650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15605c000048bae85c62080000000048c7c305000000ff15415c0000488b1424ff12488d642408e94c4e0000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b81839650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15225b000048bae85c62080000000048c7c305000000ff15035b0000488b1424ff12488d642408e91e4d0000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b83039650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15e459000048bae85c62080000000048c7c305000000ff15c5590000488b1424ff12488d642408e9f04b0000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b84839650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15a658000048bae85c62080000000048c7c305000000ff1587580000488b1424ff12488d642408e9c24a0000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b86039650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff156857000048bae85c62080000000048c7c305000000ff1549570000488b1424ff12488d642408e994490000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b87839650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff152a56000048bae85c62080000000048c7c305000000ff150b560000488b1424ff12488d642408e966480000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b89039650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15ec54000048bae85c62080000000048c7c305000000ff15cd540000488b1424ff12488d642408e938470000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8a839650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15ae53000048bae85c62080000000048c7c305000000ff158f530000488b1424ff12488d642408e90a460000488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8c039650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff157052000048bae85c62080000000048c7c305000000ff1551520000488b1424ff12488d642408e9dc440000488d64242048b85834650800000000488b5d08ff23488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837e03000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d006620800000000488b5d08ff23488b5424104983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54241048b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd68fba609000000004d89284156488b44240848c7c3010000004c8b4c24104c8b542428ff15f94f0000488d642408488b54240848b8d018620800000000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15f94e0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15a24e000048bae85c62080000000048c7c303000000ff15834e0000488b1424ff12488d642410e92e410000488d64242048b85834650800000000488b5d08ff23488d64242848b85834650800000000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f902000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d006620800000000488b5d08ff23488b5424384983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54243848b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdb8fba609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff151d4c0000488d642408488b54243048b8d018620800000000ff124c8b742428498b06488b5c2440ff15ec4b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae85c620800000000488b44240848c7c303000000ff15964b0000488b1424ff12488d642438eb64488b54243848b8e818620800000000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153f4b000048bae85c62080000000048c7c303000000ff15204b0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e9e03d0000488d64245048b85834650800000000488b5d08ff23488d642408e9d23c00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f838203000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d006620800000000488b5d08ff23488b5424384983fe0d750c48b85833650800000000eb764983fe0b750c48b87033650800000000eb644983fe09750c48b88833650800000000eb524983fe07750c48b8a033650800000000eb404983fe05750c48b8b833650800000000eb2e4983fe03750c48b8d033650800000000eb1c4983fe01750c48b8e833650800000000eb0a48b80034650800000000ff12488b54243848b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd08fca609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15b2480000488d642408488b54243048b8d018620800000000ff124c8b6c24284d8b5d004d89de4c8b6424404d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832b010000488d64242849d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ac470000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff155547000048bae85c62080000000048c7c303000000ff1536470000488b1424ff12488d642410e9293a0000488d64244848b85834650800000000488b5d08ff23488d64245048b85834650800000000488b5d08ff23488d642408e906390000488d642408e9fc380000488d642408e9f23800004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8d839650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd58fca609000000004d89284156488b442438488b5c24104c8b4c24404c8b542458ff152c460000488b54244048b8d018620800000000ff12ff742440488b442408488b5c24284c8b442410ff15fa450000488b1424ff12488d642440e9fd380000488d64245048b85834650800000000488b5d08ff23488d6424184d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f505000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64243848b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64243848b8d006620800000000488b5d08ff234156488b54242848b8f039650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24284d89ee4d89680849bda8fca609000000004d89284156488b44242048c7c3010000004c8b4c24284c8b542440ff152f440000488b54242848b8d018620800000000ff124c8b7424084983fe030f85e0010000ff742428488b4424084883c0107115488d64244848b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff15cc4300004989c64d8b2e4a8d0c6d010000004883f901750f49bd601f620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d213e00000f87370100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8e01a620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d663d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430428060ffbf488b1424ff12488d642428e997020000488d64244848b8f807620800000000488b5d08ff23488d64244848b8f807620800000000488b5d08ff234c8b34244d89f54983fd110f8384010000488d6424184c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e94e000000909090e961000000909090e974000000909090e987000000909090e9b0000000909090e9d9000000909090e902010000909090488d642408488b54240848b8c815650800000000ff12e9ed010000488d642408488b54240848b82816650800000000ff12e9d2010000488d642408488b54240848b88816650800000000ff12e9b7010000488d642408488b54240848b8e816650800000000ff12e99c010000488b5424104c8b34244983fe01488d642408750c48b84817650800000000eb0a48b8083a650800000000ff12e96b010000488b5424104c8b34244983fe01488d642408750c48b8a817650800000000eb0a48b8203a650800000000ff12e93a010000488b5424104c8b34244983fe01488d642408750c48b80818650800000000eb0a48b8383a650800000000ff12e909010000488b5424104c8b34244983fe01488d642408750c48b86818650800000000eb0a48b8503a650800000000ff12e9d8000000ff74242848bae85c620800000000488b44240848c7c303000000ff156a4000004989c64d8b2e4a8d0c6d010000004883f901750f48b8601f620800000000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b73a000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400872498d7608488d780948d1e9f3a48060ffbf488b1424ff12488d642428e9d8320000488d64244848b8f807620800000000488b5d08ff23488d64243848b85834650800000000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f039650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bdf8fca609000000004d89284156488b442438488b5c24104c8b4c24404c8b542458ff15d13e0000488b54244048b8d018620800000000ff12ff742440488b442408488b5c24284c8b442410ff159f3e0000488b1424ff12488d642440e9ca310000488d64245048b85834650800000000488b5d08ff23488d642408e9bc3000004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f039650800000000ff12ff742440488b442408488b5c24284c8b442410ff15f23d0000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd48fda609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15813d0000488d642430e9c2300000488d64245048b85834650800000000488b5d08ff23488d642408e9b42f00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8683a650800000000ff12ff742440488b442408488b5c24284c8b442410ff15da3c0000488b1424ff12488d642410488b54243848b8d018620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd98fda609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15693c0000488d642430e9ba2f0000488d64245048b85834650800000000488b5d08ff23488d642408e9ac2e0000488d642428488b54241048b84038650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bde8fda609000000004d89284156488b44240848c7c3050000004c8b4c24104c8b542428ff15d33b0000488d642408e92c2f0000488d642430488b54240848b8803a650800000000ff12e9112f0000488d642408e9182e0000488d642408e90e2e0000488d642408e9042e0000488d642408e9fa2d0000488d642408e9f02d0000488d642408e9e62d0000488d642408e9dc2d0000488d642408e9d22d0000488d6424204d89de4983fe03488d6424087518488d642408488b54240848b8983a650800000000ff12eb16488d642408488b54240848b8b03a650800000000ff12e97b2e0000488d642408e9822d0000488d642408e9782d0000488d642408e96e2d0000488d642408e9642d0000488d642430488b54240848b8c83a650800000000ff12e9382e0000488d642408e93f2d0000488d642408e9352d0000488d642408e92b2d0000488d642408e9212d0000488d642408e9172d0000488d6424304981fce70100007513488b54240848b8e03a650800000000ff12eb00488b54240848b8f83a650800000000ff12e9cf2d0000488d6424304981fce70100007513488b54240848b8e03a650800000000ff12eb00488b54240848b8103b650800000000ff12e9982d0000488d6424304981fce70100007513488b54240848b8283b650800000000ff12eb00488b54240848b8403b650800000000ff12e9612d0000488d642408e9682c0000488d642430488b54240848b8583b650800000000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15f4380000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159d38000048bae85c62080000000048c7c303000000ff157e380000488b1424ff12488d642410e9e92b0000488d64242048b85834650800000000488b5d08ff23488d642408e9db2a0000488d6424304981fce70100007513488b54240848b8e03a650800000000ff12eb00488b54240848b8703b650800000000ff12e9932b0000488d6424204981fce70100007513488b54241848b8e03a650800000000ff12eb004c8b34244983fe03488d6424087518488d642408488b54240848b8883b650800000000ff12eb16488d642408488b54240848b8a03b650800000000ff12e9302b0000488d642408e9372a0000488d642408e92d2a0000488d642408e9232a0000488d642408e9192a0000488d642408e90f2a0000488d642408e9052a0000488d642408e9fb290000488d642408e9f1290000488d642408e9e7290000488d642408e9dd290000488d642408e9d3290000488d642408e9c9290000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15f0360000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15a43600004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff154e360000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f735000048bae85c62080000000048c7c303000000ff15d8350000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15843500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff152e350000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d734000048bae85c62080000000048c7c303000000ff15b8340000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e940280000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1530340000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15e43300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff158e330000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153733000048bae85c62080000000048c7c303000000ff1518330000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15c43200004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff156e320000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151732000048bae85c62080000000048c7c303000000ff15f8310000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e9c8250000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1570310000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15243100004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ce300000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157730000048bae85c62080000000048c7c303000000ff1558300000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15043000004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ae2f0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15572f000048bae85c62080000000048c7c303000000ff15382f0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e950230000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15b02e0000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15642e00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff150e2e0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b72d000048bae85c62080000000048c7c303000000ff15982d0000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15442d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ee2c0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15972c000048bae85c62080000000048c7c303000000ff15782c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e9d8200000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15f02b0000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15a42b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff154e2b0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f72a000048bae85c62080000000048c7c303000000ff15d82a0000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15842a00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff152e2a0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d729000048bae85c62080000000048c7c303000000ff15b8290000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e9601e0000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1530290000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15e42800004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff158e280000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153728000048bae85c62080000000048c7c303000000ff1518280000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15c42700004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff156e270000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151727000048bae85c62080000000048c7c303000000ff15f8260000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e9e81b0000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1570260000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15242600004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ce250000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157725000048bae85c62080000000048c7c303000000ff1558250000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15042500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ae240000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff155724000048bae85c62080000000048c7c303000000ff1538240000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e970190000488b54243848b8f039650800000000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15b0230000488b1424ff12488d642408488b54243848b8d018620800000000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15642300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff150e230000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b722000048bae85c62080000000048c7c303000000ff1598220000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15442200004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15ee210000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159721000048bae85c62080000000048c7c303000000ff1578210000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b83b650800000000ff12e9f8160000488d642408e9ff150000ff7424384d89f24d89e9488b4424104c8b442408ff1511210000488d642430e9ca160000488d642430488b54240848b8d03b650800000000ff124c8b2c244d8b55004d89d64c8b6424184d8b5c24f84d89d949c1e30849c1eb074983cb014e8d1cddf9ffffff4d3bd30f839e0100004d89d349d1eb4d89e44f0fb61c1c4e8d1c5d010000004983c2024d89e449c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd10f834f01000049d1ea4d89e44f0fb624144e8d2465010000004981fc010100007c204981ec000200007115488d64242048b8d006620800000000488b5d08ff23eb004983ec014d69e4000100007115488d64242048b8d006620800000000488b5d08ff234983c4014983eb014d03e341547115488d64242848b8d006620800000000488b5d08ff234d89ed4983c6044d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15a11f0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff154a1f000048bae85c62080000000048c7c303000000ff152b1f0000488b1424ff12488d642410e9f6140000488d64242048b85834650800000000488b5d08ff23488d64242048b85834650800000000488b5d08ff23488d642430488b54240848b8e83b650800000000ff12e9b1140000488d642408e9b8130000488d642408e9ae130000488d642428488b54241048b8f039650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd38fea609000000004d89284156488b44240848c7c3010000004c8b4c24104c8b542428ff15551e0000488d642408488b54240848b8d018620800000000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15551d0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15fe1c000048bae85c62080000000048c7c303000000ff15df1c0000488b1424ff12488d642410e9ca120000488d64242048b85834650800000000488b5d08ff23488b54243848b8f039650800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd88fea609000000004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15541c0000488d642408488b54243048b8d018620800000000ff124c8b742428498b06488b5c2440ff15231c00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae85c620800000000488b44240848c7c303000000ff15cd1b0000488b1424ff12488d642438eb64488b54243848b8e818620800000000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15761b000048bae85c62080000000048c7c303000000ff15571b0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e957110000488d642408e95e100000488d642408e954100000488d6424304d89ed4d8b55004d89d44d89d04983c0024d89f34d8b73f84d89f149c1e60849c1ee074983ce014e8d34f5f9ffffff4d3bc60f83c90000004d89c649d1ee4d89db4f0fb634334e8d3475010000004983ee014d69f6000100007115488d64242048b8d006620800000000488b5d08ff234983c6014d89db49c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd1735c49d1ea4d89db4f0fb61c134e8d1c5d010000004983eb014d03f341567115488d64242848b8d006620800000000488b5d08ff234d89ed4d89e64983c6044d89ed4d897500488b54241048b8003c650800000000ff126a01e90a140000488d64242048b85834650800000000488b5d08ff23488d64242048b85834650800000000488b5d08ff23488d642408e92f0f0000488d642408e9250f0000488d6424304d89ed4d8b5d004d89dc4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda733e49d1eb4d89f64f0fb6341e4e8d34750100000041564d89ed4d89e64983c6024d89ed4d897500488b54241048b8003c650800000000ff126a01e9c60f0000488d64242048b85834650800000000488b5d08ff23488d642408e9990e0000488d642408e98f0e0000488d642408e9850e0000ff7424384d89f24d89e9488b4424104c8b442408ff152f190000488d642430e9500f0000488d642408e9570e0000ff7424384d89f24d89e9488b4424104c8b442408ff15f9180000488d642430e9220f0000488d642408e9290e0000488d642408e91f0e0000488d642408e9150e0000488d642408e90b0e0000488d6424084d89f14d89e8488b04244c8b542430ff15a5180000488d642428e9d60e0000488d6424084d89f14d89e8488b04244c8b542430ff1579180000488d642428e9b20e0000488d6424084d89f14d89e8488b04244c8b542430ff154d180000488d642428e98e0e0000488d6424084d89f14d89e8488b04244c8b542430ff1521180000488d642428e96a0e0000488d6424084d89f14d89e8488b04244c8b542430ff15f5170000488d642428e9460e0000488d6424084d89f14d89e8488b04244c8b542430ff15c9170000488d642428e9220e0000488d6424084d89f14d89e8488b04244c8b542430ff159d170000488d642428e9fe0d0000488d6424084d89f14d89e8488b04244c8b542430ff1571170000488d642428e9da0d0000488d642408e9e10c0000488d642408e9d70c0000488d642408e9cd0c0000488d642408e9c30c0000488d642408e9b90c0000488d642408e9af0c0000488d642408e9a50c0000488d642408e99b0c0000488d6424304d89ed498b45004c89f3ff15fa1600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8183c650800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15a31600004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff154a16000048bae85c62080000000048c7c305000000ff152b160000488b1424ff12488d642410e9ae0c0000488d6424304d89ed498b45004c89f3ff15fe1500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8303c650800000000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15a71500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff154e15000048bae85c62080000000048c7c305000000ff152f150000488b1424ff12488d642410e9d20b0000488d642408e9d90a0000488d642430488b54240848b8303c650800000000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d006620800000000488b5d08ff234983ee027115488d64242048b8d006620800000000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151b14000048bae85c62080000000048c7c305000000ff15fc130000488b1424ff12488d642408e9af0a0000488d64242048b85834650800000000488b5d08ff23488d642408e9a1090000488d642408e997090000488d642408e98d090000488d642408e983090000488d642408e979090000488d642408e96f090000488d642408e965090000488d642408e95b090000488d642430488b54240848b8483c650800000000ff12e92f0a0000488d642408e936090000488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f834003000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d006620800000000488b5d08ff234156488b5424184c8b2c244d89ee4983fd07750c48b8603c650800000000eb1f4d89f64983fe01750c48b8783c650800000000eb0a48b8b83b650800000000ff12488b54241848b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24184d89ee4d89680849bdd8fea609000000004d89284156488b44241048c7c3010000004c8b4c24184c8b542430ff157d1100004c8b34244983fe01488d6424100f857b010000488b54240848b8d018620800000000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff156f100000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151810000048bae85c62080000000048c7c303000000ff15f90f0000488b1424ff12488d642410eb15488d64242048b85834650800000000488b5d08ff23e9b5060000488d64242848b85834650800000000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f832403000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d006620800000000488b5d08ff234156488b5424404c8b2c244d89ee4983fd0f750c48b8903c650800000000eb7f4d89f64d89f54983fe0d750c48b8a83c650800000000eb674d89ed4d89ee4983fd0b750c48b8c03c650800000000eb4f4d89f64d89f54983fe09750c48b8d83c650800000000eb374d89ed4d89ee4983fd07750c48b8f03c650800000000eb1f4d89f64983fe01750c48b8783c650800000000eb0a48b8b83b650800000000ff12488b54244048b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd28ffa609000000004d89284156488b442438488b5c24104c8b4c24404c8b542458ff157f0d00004c8b34244983fe01488d6424100f85fc000000488d642428488b54240848b8d018620800000000ff124c8b3424498b06488b5c2418ff153c0d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae85c620800000000488b44240848c7c303000000ff15e60c0000488b1424ff12488d642410eb64488b54241048b8e818620800000000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158f0c000048bae85c62080000000048c7c303000000ff15700c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb05488d642428e951030000488d64245048b85834650800000000488b5d08ff23488d642408e943020000488d642408e939020000488d642408e92f020000488d642408e925020000488d642408e91b020000488d642408e911020000488d642408e907020000488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bd01000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d006620800000000488b5d08ff23488b5424104983fe0d750c48b8083d650800000000eb2e4983fe09750c48b8203d650800000000eb1c4983fe05750c48b8383d650800000000eb0a48b8b83b650800000000ff12488b54241048b88815620800000000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd78ffa609000000004d89284156488b44240848c7c3050000004c8b4c24104c8b542428ff15000a0000488d642408e909010000488d64242848b85834650800000000488b5d08ff23488d642408ff742430f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff158809000048bae85c62080000000048c7c305000000ff1569090000488b1424ff12488d642430eb7f488d64244048b85834650800000000488b5d08ff23488d64242048b85834650800000000488b5d08ff23488d64242048b85834650800000000488b5d08ff23488d64242048b85834650800000000488b5d08ff23488d6424085a48b8a0156208000000004883c410ff22488d64242048b85834650800000000488b5d08ff23488b54240848b8a015620800000000ff12483b65187303ff5558e96c42ffff4c8b2c244d89ee4983fd3d7507488d642410ebcd4d89f64c89f14983fe7f720949c7c501000000eb1449c7c5020000004889c948d1e949d3e54983cd014c8b7424084d23f54983fe010f8419030000ff742418ff75084c8d35d40200004156488965084c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be3721048b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4883c408415d4c896d084d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15c307000048bae85c62080000000048c7c305000000ff15a40700004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25f105000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64243848b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff158a06000048bae85c62080000000048c7c305000000ff156b0600004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0040000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64243848b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff1583050000488b1424ff12488d642408488b54241848b8b017620800000000ff12eb37488b65084883c408415e4c8975084c8b304983fe177515488d64243848b8503d650800000000488b5d08ff23488d642438488b5d08ff234c8b2c244983c5027115488d64243048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e967fcffff4c8b2c244d89ee4983fd3d750a488d642410e931fcffff4d89f64c89f14983fe7f720949c7c501000000eb1449c7c5020000004889c948d1e949d3e54983cd014c8b7424084d23f54983fe010f8419030000ff742418ff75084c8d35d40200004156488965084c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be3721048b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4883c408415d4c896d084d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15ff03000048bae85c62080000000048c7c305000000ff15e00300004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b254502000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64243848b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15c602000048bae85c62080000000048c7c305000000ff15a70200004989c64d8b2e4a8d0c6d010000004883f901750f48b82814650800000000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2514010000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64243848b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15bf010000488b1424ff12488d642408488b54241848b8b017620800000000ff12eb37488b65084883c408415e4c8975084c8b304983fe177515488d64243848b8503d650800000000488b5d08ff23488d642438488b5d08ff234c8b2c244983c5027115488d64243048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e964fcfffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6025,1,@17332,@12461,@10649,@10599,@10649,@10599,@12461,@10649,@10599,@10649,@10599,@10649,@10599,@12528,@10649,@10653,@10649,@12529,@12528,@10649,@10653,@10649,@12528,@10649,@10599,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@12531,@12531,@12531,@12531,@12531,@12531,@12531,@12531,@12547,@12547,@10649,@10653,@10649,@12529,@12528,@10649,@10653,@10649,@12528,@10649,@10653,@10649,@12547,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12550,@12461,@10649,@10653,@10649,@12528,@12528,@12461,@12528,@12461,@12461,@12528,@10649,@10649,@12528,@12461,@12528,@10649,@10653,@10649,@12528,@10649,@10653,@10649,@12529,@12528,@10649,@10653,@10649,@12528,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10653,@10649,@12528,@12461,@10649,@10653,@10649,@10649,@10653,@10649,@12529,@12528,@12461,@10649,@10653,@10649,@12529,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12461,@12528,@12461,@12528,@12461,@12528,@12461,@12528,@12461,@12528,@12461,@12528,@12461,@10649,@10653,@10649,@10649,@10653,@10649,@12461,@12528,@12528,@12461,@12528,@12461,@12528,@12461,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12530,@12529,@10649,@10599,@12528,@10649,@10599,@10649,@10599,@12528,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@10649,@10599,@12528,@10649,@10599,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@10649,@10599,@12528,@12461,@12528,@12461,@10649,@10599,@123|99,0,@123 138,0,@218 164,0,@5757 298,0,@651 314,0,@707 353,0,@164 443,0,@5910 3143,0,@5911 3161,0,@5912 3179,0,@5913 3197,0,@5914 3215,0,@5915 3233,0,@5916 3251,0,@5917 3263,0,@5918 3280,0,@164 3333,0,@199 3381,0,@12487 3437,0,@5920 3650,0,@5911 3668,0,@5912 3686,0,@5913 3704,0,@5914 3722,0,@5915 3740,0,@5916 3758,0,@5917 3770,0,@5918 3787,0,@164 3840,0,@199 3888,0,@12488 3944,0,@5920 4187,0,@5922 4254,0,@651 4275,0,@707 4318,0,@5663 4499,0,@199 4547,0,@12489 4604,0,@117 4644,0,@5923 4711,0,@651 4732,0,@707 4775,0,@5663 4956,0,@199 5004,0,@12490 5061,0,@117 5095,0,@5924 5162,0,@651 5183,0,@707 5226,0,@5663 5407,0,@199 5455,0,@12491 5512,0,@117 5538,0,@5925 5555,0,@5926 5622,0,@651 5643,0,@707 5687,0,@5920 5815,0,@5927 5863,0,@12492 5911,0,@199 5978,0,@651 5999,0,@707 6042,0,@5663 6224,0,@117 6261,0,@5928 6328,0,@651 6349,0,@707 6392,0,@5663 6573,0,@199 6621,0,@12493 6676,0,@117 6702,0,@5929 6719,0,@5926 6786,0,@651 6807,0,@707 6851,0,@5920 6982,0,@5930 7049,0,@651 7070,0,@707 7113,0,@5663 7294,0,@199 7342,0,@12494 7399,0,@117 7439,0,@5931 7506,0,@651 7527,0,@707 7570,0,@5663 7751,0,@199 7799,0,@12495 7856,0,@117 7896,0,@5932 7963,0,@651 7984,0,@707 8027,0,@5663 8208,0,@199 8256,0,@12496 8313,0,@117 8353,0,@5933 8420,0,@651 8441,0,@707 8484,0,@5663 8665,0,@199 8713,0,@12497 8770,0,@117 8810,0,@5934 8877,0,@651 8898,0,@707 8941,0,@5663 9122,0,@199 9170,0,@12498 9227,0,@117 9264,0,@5935 9331,0,@651 9352,0,@707 9395,0,@5663 9576,0,@199 9624,0,@12499 9679,0,@117 9716,0,@5936 9764,0,@12500 9812,0,@199 9879,0,@651 9900,0,@707 9943,0,@5663 10125,0,@117 10159,0,@5936 10226,0,@651 10247,0,@707 10290,0,@5663 10471,0,@199 10519,0,@12501 10576,0,@117 10602,0,@5937 10619,0,@5926 10686,0,@651 10707,0,@707 10751,0,@5920 10848,0,@5938 10865,0,@164 10979,0,@651 10995,0,@707 11104,0,@5939 11121,0,@164 11235,0,@651 11251,0,@707 11360,0,@5940 11377,0,@164 11491,0,@651 11507,0,@707 11616,0,@5941 11633,0,@164 11747,0,@651 11763,0,@707 11872,0,@5942 11889,0,@164 12003,0,@651 12019,0,@707 12128,0,@5943 12145,0,@164 12259,0,@651 12275,0,@707 12384,0,@5944 12401,0,@164 12515,0,@651 12531,0,@707 12640,0,@5945 12657,0,@164 12771,0,@651 12787,0,@707 12896,0,@5946 12913,0,@164 13027,0,@651 13043,0,@707 13152,0,@5947 13169,0,@164 13283,0,@651 13299,0,@707 13408,0,@5948 13425,0,@164 13539,0,@651 13555,0,@707 13664,0,@5949 13681,0,@164 13795,0,@651 13811,0,@707 13920,0,@5950 13937,0,@164 14051,0,@651 14067,0,@707 14176,0,@5951 14193,0,@164 14307,0,@651 14323,0,@707 14432,0,@5952 14449,0,@164 14563,0,@651 14579,0,@707 14688,0,@5953 14705,0,@164 14819,0,@651 14835,0,@707 14979,0,@5954 15032,0,@199 15080,0,@12502 15136,0,@5920 15257,0,@5955 15310,0,@199 15358,0,@12503 15415,0,@5920 15536,0,@5955 15589,0,@199 15637,0,@12504 15694,0,@5920 15812,0,@5956 15860,0,@12505 15906,0,@199 15964,0,@5920 15985,0,@5957 16042,0,@707 16088,0,@200 16149,0,@707 16193,0,@5957 16250,0,@707 16296,0,@200 16357,0,@707 16401,0,@5920 16574,0,@5911 16592,0,@5912 16610,0,@5913 16628,0,@5914 16646,0,@5915 16664,0,@5916 16682,0,@5917 16694,0,@5918 16711,0,@164 16764,0,@199 16812,0,@12506 16868,0,@5920 17081,0,@5911 17099,0,@5912 17117,0,@5913 17135,0,@5914 17153,0,@5915 17171,0,@5916 17189,0,@5917 17201,0,@5918 17218,0,@164 17271,0,@199 17319,0,@12507 17375,0,@5920 17588,0,@5911 17606,0,@5912 17624,0,@5913 17642,0,@5914 17660,0,@5915 17678,0,@5916 17696,0,@5917 17708,0,@5918 17725,0,@164 17778,0,@199 17826,0,@12508 17882,0,@5920 18095,0,@5911 18113,0,@5912 18131,0,@5913 18149,0,@5914 18167,0,@5915 18185,0,@5916 18203,0,@5917 18215,0,@5918 18232,0,@164 18285,0,@199 18333,0,@12509 18389,0,@5920 18602,0,@5911 18620,0,@5912 18638,0,@5913 18656,0,@5914 18674,0,@5915 18692,0,@5916 18710,0,@5917 18722,0,@5918 18739,0,@164 18792,0,@199 18840,0,@12510 18896,0,@5920 19109,0,@5911 19127,0,@5912 19145,0,@5913 19163,0,@5914 19181,0,@5915 19199,0,@5916 19217,0,@5917 19229,0,@5918 19246,0,@164 19299,0,@199 19347,0,@12511 19403,0,@5920 19690,0,@5958 19826,0,@5958 19898,0,@117 19985,0,@5958 20121,0,@5958 20193,0,@117 20280,0,@5958 20416,0,@5958 20488,0,@117 20575,0,@5958 20711,0,@5958 20783,0,@117 20870,0,@5958 21006,0,@5958 21078,0,@117 21165,0,@5958 21301,0,@5958 21373,0,@117 21460,0,@5958 21596,0,@5958 21668,0,@117 21755,0,@5958 21891,0,@5958 21963,0,@117 22050,0,@5959 22186,0,@5959 22258,0,@117 22345,0,@5959 22481,0,@5959 22553,0,@117 22640,0,@5959 22776,0,@5959 22848,0,@117 22935,0,@5959 23071,0,@5959 23143,0,@117 23230,0,@5959 23366,0,@5959 23438,0,@117 23525,0,@5959 23661,0,@5959 23733,0,@117 23820,0,@5959 23956,0,@5959 24028,0,@117 24115,0,@5959 24251,0,@5959 24323,0,@117 24429,0,@5958 24509,0,@707 24555,0,@200 24616,0,@707 24755,0,@5954 24808,0,@199 24856,0,@12512 24907,0,@199 24988,0,@707 25034,0,@200 25095,0,@707 25158,0,@5920 25184,0,@5958 25288,0,@105 25315,0,@105 25394,0,@707 25440,0,@200 25501,0,@707 25545,0,@5920 25642,0,@5954 25695,0,@199 25743,0,@12513 25794,0,@199 25904,0,@105 25931,0,@105 26010,0,@707 26056,0,@200 26117,0,@707 26161,0,@5920 26182,0,@5920 26248,0,@5960 26350,0,@105 26377,0,@105 26464,0,@651 26480,0,@707 26524,0,@5920 26550,0,@5961 26652,0,@105 26679,0,@105 26766,0,@651 26782,0,@707 26826,0,@5920 26852,0,@5962 26954,0,@105 26981,0,@105 27068,0,@651 27084,0,@707 27128,0,@5920 27154,0,@5963 27256,0,@105 27283,0,@105 27370,0,@651 27386,0,@707 27430,0,@5920 27456,0,@5964 27558,0,@105 27585,0,@105 27672,0,@651 27688,0,@707 27732,0,@5920 27758,0,@5965 27860,0,@105 27887,0,@105 27974,0,@651 27990,0,@707 28034,0,@5920 28060,0,@5966 28162,0,@105 28189,0,@105 28276,0,@651 28292,0,@707 28336,0,@5920 28362,0,@5967 28464,0,@105 28491,0,@105 28578,0,@651 28594,0,@707 28638,0,@5920 28664,0,@5968 28766,0,@105 28793,0,@105 28880,0,@651 28896,0,@707 28940,0,@5920 28966,0,@5969 29068,0,@105 29095,0,@105 29182,0,@651 29198,0,@707 29242,0,@5920 29268,0,@5970 29370,0,@105 29397,0,@105 29484,0,@651 29500,0,@707 29544,0,@5920 29570,0,@5971 29672,0,@105 29699,0,@105 29786,0,@651 29802,0,@707 29846,0,@5920 29872,0,@5972 29974,0,@105 30001,0,@105 30088,0,@651 30104,0,@707 30148,0,@5920 30174,0,@5973 30276,0,@105 30303,0,@105 30390,0,@651 30406,0,@707 30450,0,@5920 30476,0,@5974 30578,0,@105 30605,0,@105 30692,0,@651 30708,0,@707 30752,0,@5920 30778,0,@5975 30880,0,@105 30907,0,@105 30994,0,@651 31010,0,@707 31054,0,@5920 31267,0,@105 31370,0,@105 31397,0,@5911 31415,0,@5912 31433,0,@5913 31451,0,@5914 31469,0,@5915 31487,0,@5916 31505,0,@5917 31517,0,@5918 31534,0,@164 31582,0,@12514 31635,0,@199 31739,0,@105 31766,0,@105 31845,0,@707 31891,0,@200 31952,0,@707 31996,0,@5920 32017,0,@5920 32225,0,@105 32328,0,@105 32355,0,@5911 32373,0,@5912 32391,0,@5913 32409,0,@5914 32427,0,@5915 32445,0,@5916 32463,0,@5917 32475,0,@5918 32492,0,@164 32540,0,@12515 32591,0,@199 32672,0,@707 32718,0,@200 32779,0,@707 32842,0,@5920 33060,0,@105 33163,0,@105 33190,0,@5911 33208,0,@5912 33226,0,@5913 33244,0,@5914 33262,0,@5915 33280,0,@5916 33298,0,@5917 33310,0,@5918 33327,0,@164 33375,0,@12516 33426,0,@199 33536,0,@105 33563,0,@105 33642,0,@707 33688,0,@200 33749,0,@707 33793,0,@5920 33814,0,@5920 33941,0,@5976 33989,0,@12517 34035,0,@199 34093,0,@5920 34306,0,@105 34409,0,@105 34432,0,@5977 34480,0,@12518 34528,0,@199 34575,0,@105 34591,0,@707 34634,0,@269 34813,0,@221 34998,0,@117 35019,0,@117 35146,0,@5679 35173,0,@5683 35200,0,@5687 35227,0,@5691 35264,0,@5695 35276,0,@5978 35313,0,@5699 35325,0,@5979 35362,0,@5703 35374,0,@5980 35411,0,@5707 35423,0,@5981 35444,0,@707 35492,0,@269 35666,0,@117 35687,0,@5920 35784,0,@5977 35832,0,@12519 35878,0,@199 35936,0,@5920 36043,0,@5977 36096,0,@199 36144,0,@12520 36200,0,@5920 36307,0,@5982 36360,0,@199 36408,0,@12521 36464,0,@5920 36500,0,@5959 36548,0,@12522 36611,0,@5983 36737,0,@5984 36761,0,@5985 36828,0,@5986 36914,0,@5987 36933,0,@5988 36969,0,@5987 36988,0,@5989 37024,0,@5990 37043,0,@5991 37080,0,@5992 37184,0,@105 37211,0,@105 37290,0,@707 37336,0,@200 37397,0,@707 37441,0,@5920 37486,0,@5987 37505,0,@5993 37541,0,@5987 37580,0,@5994 37604,0,@5995 37746,0,@5977 37826,0,@199 37928,0,@707 37974,0,@200 38035,0,@707 38184,0,@707 38230,0,@200 38291,0,@707 38356,0,@5996 38378,0,@5977 38458,0,@199 38560,0,@707 38606,0,@200 38667,0,@707 38816,0,@707 38862,0,@200 38923,0,@707 38988,0,@5996 39010,0,@5977 39090,0,@199 39192,0,@707 39238,0,@200 39299,0,@707 39448,0,@707 39494,0,@200 39555,0,@707 39620,0,@5996 39642,0,@5977 39722,0,@199 39824,0,@707 39870,0,@200 39931,0,@707 40080,0,@707 40126,0,@200 40187,0,@707 40252,0,@5996 40274,0,@5977 40354,0,@199 40456,0,@707 40502,0,@200 40563,0,@707 40712,0,@707 40758,0,@200 40819,0,@707 40884,0,@5996 40906,0,@5977 40986,0,@199 41088,0,@707 41134,0,@200 41195,0,@707 41344,0,@707 41390,0,@200 41451,0,@707 41516,0,@5996 41538,0,@5977 41618,0,@199 41720,0,@707 41766,0,@200 41827,0,@707 41976,0,@707 42022,0,@200 42083,0,@707 42148,0,@5996 42170,0,@5977 42250,0,@199 42352,0,@707 42398,0,@200 42459,0,@707 42608,0,@707 42654,0,@200 42715,0,@707 42780,0,@5996 42853,0,@5997 43018,0,@105 43054,0,@105 43090,0,@105 43165,0,@707 43211,0,@200 43272,0,@707 43316,0,@5920 43337,0,@5920 43363,0,@5998 43410,0,@5977 43458,0,@12523 43511,0,@199 43615,0,@105 43642,0,@105 43721,0,@707 43767,0,@200 43828,0,@707 43872,0,@5920 43893,0,@5977 43941,0,@12524 43992,0,@199 44073,0,@707 44119,0,@200 44180,0,@707 44359,0,@105 44442,0,@105 44480,0,@5999 44504,0,@5920 44525,0,@5920 44651,0,@5999 44675,0,@5920 45262,0,@6000 45376,0,@651 45392,0,@707 45482,0,@6001 45596,0,@651 45612,0,@707 45671,0,@6001 45773,0,@105 45800,0,@105 45887,0,@651 45903,0,@707 45947,0,@5920 46053,0,@6002 46277,0,@105 46380,0,@105 46416,0,@6003 46437,0,@6004 46449,0,@5996 46466,0,@164 46514,0,@12525 46581,0,@199 46685,0,@105 46712,0,@105 46791,0,@707 46837,0,@200 46898,0,@707 46939,0,@5920 46965,0,@5920 47173,0,@105 47276,0,@105 47312,0,@6005 47336,0,@6006 47360,0,@6007 47384,0,@6008 47408,0,@6009 47429,0,@6004 47441,0,@5996 47458,0,@164 47506,0,@12526 47576,0,@199 47656,0,@707 47702,0,@200 47763,0,@707 47833,0,@5920 48116,0,@105 48219,0,@105 48246,0,@6010 48264,0,@6011 48282,0,@6012 48294,0,@5996 48311,0,@164 48359,0,@12527 48417,0,@5920 48493,0,@651 48514,0,@707 48555,0,@5920 48576,0,@5920 48597,0,@5920 48618,0,@5920 48640,0,@165 48661,0,@5920 48682,0,@165 48841,0,@628 48935,0,@651 48951,0,@707 48994,0,@5663 49165,0,@117 49232,0,@651 49248,0,@707 49291,0,@5664 49455,0,@117 49511,0,@187 49553,0,@6013 49595,0,@105 49765,0,@628 49859,0,@651 49875,0,@707 49918,0,@5663 50089,0,@117 50156,0,@651 50172,0,@707 50215,0,@5664 50379,0,@117 50435,0,@187 50477,0,@6013 50519,0,@105 12487:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17291,@12461| 12488:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17292,@12461| 12489:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17293,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12490:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17294,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12491:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17295,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12492:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17296,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12493:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17297,@12461| 12494:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17298,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12495:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17299,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12496:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17300,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12497:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17301,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12498:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17302,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12499:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17303,@12461| 12500:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17304,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12501:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f854620800000000ff151501000048bae85c62080000000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b81014650800000000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01|@5919,1,@17305,@10649,@10599|53,0,@651 69,0,@707 112,0,@5663 286,0,@117 12502:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17306,@12461| 12503:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17307,@12461| 12504:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17308,@12461| 12505:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17309,@12461| 12506:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17310,@12461| 12507:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17311,@12461| 12508:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17312,@12461| 12509:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17313,@12461| 12510:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17314,@12461| 12511:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17315,@12461| 12512:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17316,@12461| 12513:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17317,@12461| 12514:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17318,@12461| 12515:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17319,@12461| 12516:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17320,@12461| 12517:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17321,@12461| 12518:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17322,@12461| 12519:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17323,@12461| 12520:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17324,@12461| 12521:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17325,@12461| 12522:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17326,@12461| 12523:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17327,@12461| 12524:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17328,@12461| 12525:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17329,@12461| 12526:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17330,@12461| 12527:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17331,@12461| 12528:D49,6024|483b65187306ff5558ca09074989c34c89c24989d8415141524c8b4c24084d8b294d89ea4c8b34244d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f316000049d1ed4d89f64f0fb62c2e4e8d2c6d010000004d89c94983c2024d89c94d89cc4d89114d89da4983e2054983fa01750949c7c203000000eb0749c7c2010000004983f20241524983e3034983fb01750949c7c303000000eb0749c7c3010000004983f30241534983f805750c48b8d03d650800000000eb2e4983f803750c48b8f03d650800000000eb1c4983f807750c48b8103e650800000000eb0a48b8303e6508000000004d89eb49c1eb064983cb0141534983e50f41554c8b5c24084d89dd4983fb010f85910b00004c8b1c244d89dd4983fb0b0f8509010000488d642420488b542418ff12488b54241848b8503e650800000000ff124c8b742408498b06488b1c24ff15b41700004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74242048bae85c620800000000488b44240848c7c303000000ff155e170000488b1424ff12488d642418eb64488b54242048b8e818620800000000ff12ff742420f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150717000048bae85c62080000000048c7c303000000ff15e8160000488b1424ff12488d6424184c8b2c244d8b75004983c6084d89ed4d897500488d642408c208004d89ed4983fd090f8525060000488d6424084d89e44d8b1c244d89dd4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83dd05000049d1eb4d89f64f0fb6341e4e8d3475010000004d89e44983c5024d89e44d892c244d89f549c1ed064983cd0141554d89f549c1ed034983cd014983e50f41554983e60f4156488b542448ff124c8b7424184d89f54983fe010f85fb0000004c8b34244983fe0b0f85e80000004c8b742438498b06488b5c2430ff15fb1500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff15a5150000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff154e15000048bae85c62080000000048c7c303000000ff152f150000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500eb00e9730200004d89ed4d89ee4983fd050f85eb0000004c8b742438498b06488b5c2430ff15de1400004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff1588140000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153114000048bae85c62080000000048c7c303000000ff1512140000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500e9780100004d89f64983fe030f856b0100004c8b6c24384d8b5d004d89de4c8b6424304d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64244048b8d006620800000000488b5d08ff234983ec027115488d64244048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff15f6120000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159f12000048bae85c62080000000048c7c303000000ff1580120000488b1424ff12488d642410eb15488d64244048b85834650800000000488b5d08ff23488b54244848b8381d620800000000ff124c8b7424184983fe017402eb114c8b34244983fe0b7507488d642408eb43ff742448488b442408488b5c242849c7c005000000ff150c120000488b1424ff12488d6424104c8b34244983fe097502eb11488b54244048b8d018620800000000ff124c8b34244c89f04983fe0975154c8b7424204983fe03740a488d642438e94a010000ff742440488b5c242849c7c005000000ff15a41100004989c34c8b7424104d89f54983fe01750c49bd683e650800000000eb374d89ed4d89ee4983fd03750c49bd803e650800000000eb1f4d89f64983fe05750c49bd983e650800000000eb0a49bdb03e6508000000004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89d8e9a20000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0de70f00000f87970000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf488b1424ff12488d642440488b54240848b8681d6208000000004c8b34244c897424084883c408ff22488d64244048b8f807620800000000488b5d08ff23488d64242848b85834650800000000488b5d08ff23488b542438ff124c8b6c24084d89ee4983fd030f856e0100004c8b6c24284d8b5d004d89de4c8b6424204d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64243048b8d006620800000000488b5d08ff234983ec027115488d64243048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff15240f0000488b1424ff12488d642410eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15cd0e000048bae85c62080000000048c7c303000000ff15ae0e0000488b1424ff12488d642410e90a010000488d64243048b85834650800000000488b5d08ff234d89f64983fe050f85e80000004c8b742428498b06488b5c2420ff15610e00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff150b0e0000488b1424ff12488d642410eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b40d000048bae85c62080000000048c7c303000000ff15950d0000488b1424ff12488d6424104c8b6c24284d8b75004983c6084d89ed4d897500eb00ff742438488b442408488b5c241849c7c005000000ff15510d00004989c64d8b2e4a8d0c6d010000004883f901750f49bd381d620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d2e0c00000f87400100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085b498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8681d620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d730b0000777c4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604305d8060ffbf488b14244c8b7424384c897424404883c440ff22488d642408488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff234d89ed4983fd07751658488b5c24084c8b7424284c897424304883c430ff224c8b2c244983fd090f8525060000488d6424084d89e44d8b1c244d89dd4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83dd05000049d1eb4d89f64f0fb6341e4e8d3475010000004d89e44983c5024d89e44d892c244d89f549c1ed064983cd0141554d89f549c1ed034983cd014983e50f41554983e60f4156488b542448ff124c8b7424184d89f54983fe010f85fb0000004c8b34244983fe0b0f85e80000004c8b742438498b06488b5c2430ff15bc0a00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff15660a0000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150f0a000048bae85c62080000000048c7c303000000ff15f0090000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500eb00e9730200004d89ed4d89ee4983fd050f85eb0000004c8b742438498b06488b5c2430ff159f0900004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff1549090000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f208000048bae85c62080000000048c7c303000000ff15d3080000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500e9780100004d89f64983fe030f856b0100004c8b6c24384d8b5d004d89de4c8b6424304d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64244048b8d006620800000000488b5d08ff234983ec027115488d64244048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae85c620800000000488b44240848c7c303000000ff15b7070000488b1424ff12488d642410eb64488b54245048b8e818620800000000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff156007000048bae85c62080000000048c7c303000000ff1541070000488b1424ff12488d642410eb15488d64244048b85834650800000000488b5d08ff23488b54244848b8381d620800000000ff124c8b7424184983fe017402eb114c8b34244983fe0b7507488d642408eb43ff742448488b442408488b5c242849c7c005000000ff15cd060000488b1424ff12488d6424104c8b34244983fe097502eb11488b54244048b8d018620800000000ff124c8b34244c89f04983fe0975154c8b7424204983fe03740a488d642438e94a010000ff742440488b5c242849c7c005000000ff15650600004989c34c8b7424104d89f54983fe01750c49bd683e650800000000eb374d89ed4d89ee4983fd03750c49bd803e650800000000eb1f4d89f64983fe05750c49bd983e650800000000eb0a49bdb03e6508000000004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89d8e9a20000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d380500000f87970000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf488b1424ff12488d642440488b54240848b8681d6208000000004c8b34244c897424084883c408ff22488d64244048b8f807620800000000488b5d08ff23488d64242848b85834650800000000488b5d08ff23488b542438ff124c8b6c24084d89ee4983fd030f856e0100004c8b6c24284d8b5d004d89de4c8b6424204d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64243048b8d006620800000000488b5d08ff234983ec027115488d64243048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff15e5030000488b1424ff12488d642410eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158e03000048bae85c62080000000048c7c303000000ff156f030000488b1424ff12488d642410e90a010000488d64243048b85834650800000000488b5d08ff234d89f64983fe050f85e80000004c8b742428498b06488b5c2420ff15220300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae85c620800000000488b44240848c7c303000000ff15cc020000488b1424ff12488d642410eb64488b54244048b8e818620800000000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157502000048bae85c62080000000048c7c303000000ff1556020000488b1424ff12488d6424104c8b6c24284d8b75004983c6084d89ed4d897500eb00ff742438488b442408488b5c241849c7c005000000ff15120200004989c64d8b2e4a8d0c6d010000004883f901750f49bd381d620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d7f0100000f87400100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085b498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8681d620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc4000000777c4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604305d8060ffbf488b14244c8b7424384c897424404883c440ff22488d642408488d64243848b8f807620800000000488b5d08ff23488d64243848b8f807620800000000488b5d08ff23488d64241048b85834650800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6073,1,@17355,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12461,@12461,@10649,@10653,@10649,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12529,@12461,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12461,@12461,@10649,@10653,@10649,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12529,@10649,@10653,@10649,@12529|183,0,@6016 201,0,@6017 219,0,@6018 231,0,@6019 312,0,@6020 392,0,@707 438,0,@200 499,0,@707 801,0,@707 847,0,@200 908,0,@707 1054,0,@707 1100,0,@200 1161,0,@707 1326,0,@105 1353,0,@105 1432,0,@707 1478,0,@200 1539,0,@707 1580,0,@5920 1601,0,@246 1698,0,@199 1783,0,@6021 1807,0,@6022 1828,0,@6023 1840,0,@6024 2079,0,@248 2109,0,@117 2130,0,@5920 2264,0,@105 2291,0,@105 2370,0,@707 2416,0,@200 2477,0,@707 2521,0,@5920 2619,0,@707 2665,0,@200 2726,0,@707 2829,0,@246 3008,0,@248 3202,0,@117 3223,0,@117 3512,0,@707 3558,0,@200 3619,0,@707 3765,0,@707 3811,0,@200 3872,0,@707 4037,0,@105 4064,0,@105 4143,0,@707 4189,0,@200 4250,0,@707 4291,0,@5920 4312,0,@246 4409,0,@199 4494,0,@6021 4518,0,@6022 4539,0,@6023 4551,0,@6024 4790,0,@248 4820,0,@117 4841,0,@5920 4975,0,@105 5002,0,@105 5081,0,@707 5127,0,@200 5188,0,@707 5232,0,@5920 5330,0,@707 5376,0,@200 5437,0,@707 5540,0,@246 5719,0,@248 5913,0,@117 5934,0,@117 5955,0,@5920 12529:D10,672|483b65187305ff5558cd094989c64c8b6bf84d89eb49c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bf50f83560200004d89f549d1ed4e0fb62c2b4e8d246d010000004d89f54983c5024d89d949c1e30849c1eb074983cb014e8d1cddf9ffffff4d3beb0f830c02000049d1ed4e0fb62c2b4e8d2c6d010000004d89f34983c3044d89ca49c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd90f83c501000049d1eb4e0fb61c1b4e8d1c5d010000004983c60649c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bf20f838401000049d1ee4e0fb634334e8d34750100000041f6c601740b4981fe010100007c15eb184d0fb656ff4e8d1455010000004983fa0374054c89f0eb3041f6c601740e4c89f04881e8000200007002eb1c4c89f048c7c301020000415441554153ff15b1010000415b415d415ca80174194989c64983ee014d69f60001000070094c89f04883c001eb1948c7c301020000415441554153ff1573010000415b415d415ca801741441f6c301740e4d89de4983ee014c03f07002eb144c89db41544155ff1540010000415d415c4989c641f6c50174164c89e84883e8014869c00001000070064883c001eb184c89e848c7c30102000041544156ff1501010000415e415ca801741441f6c401740e4d89e54983ed014c03e87002eb104c89e34156ff15d2000000415e4989c541f6c60174194d89f44983ec014d69e40000010070094d89e64983c601eb174c89f048c7c3010002004155ff1594000000415d4989c641f6c601741441f6c501740e4c89e84883e8014903c67002eb0c4c89eb4c89f0ff1561000000c348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff23f400000000000000|@6026,1,@17333,@10599,@12218,@10599,@12218,@10599,@12218,@10653|602,0,@5920 618,0,@5920 634,0,@5920 650,0,@5920 12530:D3,72|49bb1004b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@6027,1,@17334|2,0,@40 12531:D132,15040|483b65187306ff5558ca090750534150415141524c8b7424104d8b2e4c8b7424084d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83a339000049d1ed4d89f64f0fb6342e4e8d34750100000041564c8b342449c1ee034983ce014983e60f4c8b6424284d89e54983e40f4c8b14244d89d34981e2810100004981fa810100000f85f62800004d89db4983e30f4983fc010f856f1000004983fe030f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15ee3d000048bae85c62080000000048c7c305000000ff15cf3d00004989c64d8b2e4e8d246d010000004983fc01750f49bd603f650800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15643900000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb603f65080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8d38000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9710e0000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15bb3b000048bae85c62080000000048c7c305000000ff159c3b00004989c64d8b2e4e8d246d010000004983fc01750f49bd803f650800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15313700000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb803f65080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5a36000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e94e0c0000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe070f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff158839000048bae85c62080000000048c7c305000000ff15693900004989c64d8b2e4e8d246d010000004983fc01750f49bda03f650800000000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15fe3400000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bba03f65080000000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2734000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e92b0a0000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe0f0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff155537000048bae85c62080000000048c7c305000000ff15363700004989c64d8b2e4e8d246d010000004983fc01750f49bdc03f650800000000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15cb3200000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbc03f65080000000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df431000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e908080000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe0d0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff152235000048bae85c62080000000048c7c305000000ff15033500004989c64d8b2e4e8d246d010000004983fc01750f49bde03f650800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15983000000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbe03f65080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc12f000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9e5050000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe0b0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15ef32000048bae85c62080000000048c7c305000000ff15d03200004989c64d8b2e4e8d246d010000004983fc01750f49bd0040650800000000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15652e00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb004065080000000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8e2d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9c2030000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe090f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15bc30000048bae85c62080000000048c7c305000000ff159d3000004989c64d8b2e4e8d246d010000004983fc01750f49bd2040650800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15322c00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb204065080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b2b000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e99f010000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff158a2e0000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15332e000048bae85c62080000000048c7c303000000ff15142e0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff15b82d0000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15612d000048bae85c62080000000048c7c303000000ff15422d0000488b1424ff12488d642420e9521800004983fc0b0f85e30700004983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15d52c000048bae85c62080000000048c7c305000000ff15b62c00004989c64d8b2e4e8d246d010000004983fc01750f49bd4040650800000000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b157b2800000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb404065080000000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da427000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9e5050000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe070f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15a22a000048bae85c62080000000048c7c305000000ff15832a00004989c64d8b2e4e8d246d010000004983fc01750f49bd6040650800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15482600000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb604065080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7125000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9c2030000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe050f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff156f28000048bae85c62080000000048c7c305000000ff15502800004989c64d8b2e4e8d246d010000004983fc01750f49bd7840650800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15152400000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb784065080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d3e23000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e99f010000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff153d260000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15e625000048bae85c62080000000048c7c303000000ff15c7250000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff156b250000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151425000048bae85c62080000000048c7c303000000ff15f5240000488b1424ff12488d642420e9651000004983fc0f0f85a10100004983fe0975214983fb01751b488d6424085a48b89040650800000000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff1562240000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150b24000048bae85c62080000000048c7c303000000ff15ec230000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff1590230000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153923000048bae85c62080000000048c7c303000000ff151a230000488b1424ff12488d642420e9ba0e00004983fc030f853b0d00004983fe030f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff15ad22000048bae85c62080000000048c7c305000000ff158e2200004989c64d8b2e4e8d246d010000004983fc01750f49bdb040650800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b31e00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb04065080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1ddc1d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e93d0b0000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f854620800000000ff157a20000048bae85c62080000000048c7c305000000ff155b2000004989c64d8b2e4e8d246d010000004983fc01750f49bdc840650800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15801c00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbc84065080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b88818620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da91b000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e91a090000488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff234983fe0f0f85dd0100004983fb0f751b488d6424085a48b8e040650800000000ff124883c408e9b70100004983fb05751b488d6424085a48b8f840650800000000ff124883c408e9960100004983fb0d751b488d6424085a48b81041650800000000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15db1d0000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15841d000048bae85c62080000000048c7c303000000ff15651d0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff15091d0000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b21c000048bae85c62080000000048c7c303000000ff15931c0000488b1424ff12488d642420e9090700004983fe0d0f85dd0100004983fb0f751b488d6424085a48b82841650800000000ff124883c408e9b70100004983fb07751b488d6424085a48b84041650800000000ff124883c408e9960100004983fb0d751b488d6424085a48b85841650800000000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15c41b0000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff156d1b000048bae85c62080000000048c7c303000000ff154e1b0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff15f21a0000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159b1a000048bae85c62080000000048c7c303000000ff157c1a0000488b1424ff12488d642420e9220500004983fe0b0f85dd0100004983fb0d751b488d6424085a48b87041650800000000ff124883c408e9b70100004983fb03751b488d6424085a48b88841650800000000ff124883c408e9960100004983fb01751b488d6424085a48b8a041650800000000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15ad190000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff155619000048bae85c62080000000048c7c303000000ff1537190000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff15db180000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158418000048bae85c62080000000048c7c303000000ff1565180000488b1424ff12488d642420e93b0300004983fe090f85bc0100004983fb03751b488d6424085a48b8b841650800000000ff124883c408e9960100004983fb01751b488d6424085a48b8d041650800000000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15b7170000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff156017000048bae85c62080000000048c7c303000000ff1541170000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff15e5160000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158e16000048bae85c62080000000048c7c303000000ff156f160000488b1424ff12488d642420e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff150d160000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15b615000048bae85c62080000000048c7c303000000ff1597150000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff153b150000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15e414000048bae85c62080000000048c7c303000000ff15c5140000488b1424ff12488d642420e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff1563140000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150c14000048bae85c62080000000048c7c303000000ff15ed130000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44240848c7c303000000ff1591130000488b1424ff12488d642420eb64488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153a13000048bae85c62080000000048c7c303000000ff151b130000488b1424ff12488d6424204c8b2c244d8b75004983c6024d89ed4d897500488d64240848c7c0010000004883c410c34983fc0b0f85f20200004983fe077579488d642408488b142448b8e841650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be485ba709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff255b1200004983fe057579488d642408488b142448b80042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be985ba709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25d41100004983fe017579488d642408488b142448b81842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bee85ba709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff254d1100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15fb100000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15a410000048bae85c62080000000048c7c303000000ff1585100000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff15291000005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d30f000048bae85c62080000000048c7c303000000ff15b40f00005a4883c430ff22488d6424084983fc090f85ee0400004983fe0f7579488d642408488b142448b83042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be385ca709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25170f00004983fe0d7579488d642408488b142448b84842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be885ca709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25900e00004983fe097579488d642408488b142448b86042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bed85ca709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25090e00004983fe037579488d642408488b142448b87842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be285da709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25820d00004983fe0b7579488d642408488b142448b89042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be785da709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25fb0c00004983fe077579488d642408488b142448b8a842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bec85da709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25740c00004983fe017579488d642408488b142448b8c042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be185ea709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25ed0b00004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff159b0b0000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15440b000048bae85c62080000000048c7c303000000ff15250b0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff15c90a00005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15730a000048bae85c62080000000048c7c303000000ff15540a00005a4883c430ff22488d6424084983fc0f0f85f40100004983fe0b7579488d642408488b142448b8d842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be685ea709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25b70900004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff1565090000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150e09000048bae85c62080000000048c7c303000000ff15ef080000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff15930800005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153d08000048bae85c62080000000048c7c303000000ff151e0800005a4883c430ff22488d6424084983fc070f85f40100004983fe017579488d642408488b142448b8f042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849beb85ea709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25810700004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff152f070000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15d806000048bae85c62080000000048c7c303000000ff15b9060000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff155d0600005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150706000048bae85c62080000000048c7c303000000ff15e80500005a4883c430ff22488d6424084983fc030f85f20200004983fe077579488d642408488b142448b8e841650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be085fa709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff254b0500004983fe057579488d642408488b142448b80042650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be585fa709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff25c40400004983fe017579488d642408488b142448b81842650800000000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bea85fa709000000004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff253d0400004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff15eb030000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff159403000048bae85c62080000000048c7c303000000ff1575030000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff15190300005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15c302000048bae85c62080000000048c7c303000000ff15a40200005a4883c430ff22488d6424084d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae85c620800000000488b44243048c7c303000000ff1546020000488b1424ff12488d642408eb64488b54240848b8e818620800000000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15ef01000048bae85c62080000000048c7c303000000ff15d0010000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae85c620800000000488b44240848c7c303000000ff15740100005a4883c430ff22488d642418488b54240848b8e818620800000000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151e01000048bae85c62080000000048c7c303000000ff15ff0000005a4883c430ff22488d642408488d64242848b85834650800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6064,1,@17350,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@12528,@12528,@12528,@10649,@10653,@10649,@10649,@10653,@10649,@12528,@10649,@10653,@10649,@10649,@10653,@10649,@12528,@10649,@10653,@10649,@10649,@10653,@10649,@12528,@12528,@12528,@12528,@12528,@12528,@12528,@10649,@10653,@10649,@10649,@10653,@10649,@12528,@12528,@12528,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10599,@10649,@10599,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10653,@10649,@10649,@10653,@10649,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599,@10649,@10599|220,0,@651 236,0,@707 279,0,@6028 417,0,@6028 486,0,@196 671,0,@117 692,0,@117 767,0,@651 783,0,@707 826,0,@6029 964,0,@6029 1033,0,@196 1218,0,@117 1239,0,@117 1314,0,@651 1330,0,@707 1373,0,@6030 1511,0,@6030 1580,0,@196 1765,0,@117 1786,0,@117 1861,0,@651 1877,0,@707 1920,0,@6031 2058,0,@6031 2127,0,@196 2312,0,@117 2333,0,@117 2408,0,@651 2424,0,@707 2467,0,@6032 2605,0,@6032 2674,0,@196 2859,0,@117 2880,0,@117 2955,0,@651 2971,0,@707 3014,0,@6033 3152,0,@6033 3221,0,@196 3406,0,@117 3427,0,@117 3502,0,@651 3518,0,@707 3561,0,@6034 3699,0,@6034 3768,0,@196 3953,0,@117 3974,0,@117 4036,0,@707 4082,0,@200 4143,0,@707 4222,0,@707 4268,0,@200 4329,0,@707 4437,0,@651 4453,0,@707 4496,0,@6035 4634,0,@6035 4703,0,@196 4888,0,@117 4909,0,@117 4984,0,@651 5000,0,@707 5043,0,@6036 5181,0,@6036 5250,0,@196 5435,0,@117 5456,0,@117 5531,0,@651 5547,0,@707 5590,0,@6037 5728,0,@6037 5797,0,@196 5982,0,@117 6003,0,@117 6065,0,@707 6111,0,@200 6172,0,@707 6251,0,@707 6297,0,@200 6358,0,@707 6425,0,@6038 6492,0,@707 6538,0,@200 6599,0,@707 6678,0,@707 6724,0,@200 6785,0,@707 6893,0,@651 6909,0,@707 6952,0,@6039 7090,0,@6039 7159,0,@196 7344,0,@117 7365,0,@117 7440,0,@651 7456,0,@707 7499,0,@6040 7637,0,@6040 7706,0,@196 7891,0,@117 7912,0,@117 7950,0,@6041 7983,0,@6042 8016,0,@6043 8083,0,@707 8129,0,@200 8190,0,@707 8269,0,@707 8315,0,@200 8376,0,@707 8437,0,@6044 8470,0,@6045 8503,0,@6046 8570,0,@707 8616,0,@200 8677,0,@707 8756,0,@707 8802,0,@200 8863,0,@707 8924,0,@6047 8957,0,@6048 8990,0,@6049 9057,0,@707 9103,0,@200 9164,0,@707 9243,0,@707 9289,0,@200 9350,0,@707 9411,0,@6050 9444,0,@6051 9511,0,@707 9557,0,@200 9618,0,@707 9697,0,@707 9743,0,@200 9804,0,@707 9889,0,@707 9935,0,@200 9996,0,@707 10075,0,@707 10121,0,@200 10182,0,@707 10267,0,@707 10313,0,@200 10374,0,@707 10453,0,@707 10499,0,@200 10560,0,@707 10655,0,@6052 10709,0,@12532 10782,0,@6053 10836,0,@12533 10909,0,@6054 10963,0,@12534 11067,0,@707 11113,0,@200 11174,0,@707 11253,0,@707 11298,0,@200 11359,0,@707 11419,0,@6055 11473,0,@12535 11546,0,@6056 11600,0,@12536 11673,0,@6057 11727,0,@12537 11800,0,@6058 11854,0,@12538 11927,0,@6059 11981,0,@12539 12054,0,@6060 12108,0,@12540 12181,0,@6061 12235,0,@12541 12339,0,@707 12385,0,@200 12446,0,@707 12525,0,@707 12570,0,@200 12631,0,@707 12691,0,@6062 12745,0,@12542 12849,0,@707 12895,0,@200 12956,0,@707 13035,0,@707 13080,0,@200 13141,0,@707 13201,0,@6063 13255,0,@12543 13359,0,@707 13405,0,@200 13466,0,@707 13545,0,@707 13590,0,@200 13651,0,@707 13711,0,@6052 13765,0,@12544 13838,0,@6053 13892,0,@12545 13965,0,@6054 14019,0,@12546 14123,0,@707 14169,0,@200 14230,0,@707 14309,0,@707 14354,0,@200 14415,0,@707 14496,0,@707 14542,0,@200 14603,0,@707 14682,0,@707 14727,0,@200 14788,0,@707 14828,0,@5920 12532:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17335,@12461| 12533:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17336,@12461| 12534:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17337,@12461| 12535:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17338,@12461| 12536:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17339,@12461| 12537:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17340,@12461| 12538:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17341,@12461| 12539:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17342,@12461| 12540:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17343,@12461| 12541:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17344,@12461| 12542:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17345,@12461| 12543:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17346,@12461| 12544:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17347,@12461| 12545:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17348,@12461| 12546:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17349,@12461| 12547:D9,1064|483b65187306ff5558ca090750534150415141524c8b7424084d8b2e4c8b34244d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83ce03000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d006620800000000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d006620800000000488b5d08ff23488b5424304983fe0f750c48b84843650800000000eb2e4983fe0b750c48b86043650800000000eb1c4983fe09750c48b87843650800000000eb0a48b8b83b650800000000ff12488b54243048b88815620800000000ff124c8b7424304d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849be7864a709000000004d89304c8b7424304156488b442420488b5c24184c8b4c24104c8b542408ff1571020000488b54243048b8d018620800000000ff1248b89043650800000000ff15480200004989c54c8b7424204d3bf57523488d642428488b54240848b848196208000000004c8b34244c897424084883c408ff2248b8a043650800000000ff15000200004989c54c8b7424204d3bf57523488d642428488b54240848b828166508000000004c8b34244c897424084883c408ff224c8b6c24084d8b5d004d89de4c8b24244d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f834001000049d1eb4d89e44f0fb6241c488d6424084e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d006620800000000488b5d08ff234983ec027115488d64242048b8d006620800000000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb504c8b34244d0fb676ff4e8d3475010000004983fe237439ff74243048bae85c620800000000488b44240848c7c303000000ff15e1000000488b14244c8b7424304c897424384883c438ff22488d642410488b54243048b8e818620800000000ff12ff742430f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157e00000048bae85c62080000000048c7c303000000ff155f000000488b14244c8b7424304c897424384883c438ff22488d642408488d64242848b85834650800000000488b5d08ff23488d64242848b85834650800000000488b5d08ff23f4000000|@6070,1,@17352,@10649,@10653,@10649,@12549,@12549,@12528|216,0,@105 319,0,@105 346,0,@6065 364,0,@6066 382,0,@6067 394,0,@5996 411,0,@164 459,0,@12548 510,0,@199 522,0,@6068 561,0,@204 586,0,@6069 625,0,@5683 747,0,@105 774,0,@105 853,0,@707 911,0,@200 972,0,@707 1025,0,@5920 1046,0,@5920 12548:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@5919,1,@17351,@12461| 12549:D3,1448|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e983010000909090e9f1010000909090e9f1010000909090e9f1010000909090e9f1010000909090e9ac020000909090e967030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e981030000909090e981030000909090e981030000909090e98c030000909090e98c030000909090e98c030000909090e98c030000909090e9fb030000909090e9fb030000909090e9fb030000909090e9fb0300009090904c8b70084c8b68104983fe05750949c7c60f000000eb434983fe0b750949c7c60d000000eb344983fe09750949c7c60b000000eb254983fe03750949c7c609000000eb164983fe07750949c7c603000000eb0749c7c6010000004e8d34f5f9ffffff4981e6ff0100004b8d442eff4881e0ff010000c348c7c0d1010000c348c7c033010000c348c7c055000000c34c8b70084d89f54c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb76eb5ceb7b48c7c00f000000eb7948c7c005000000eb7048c7c009000000eb6748c7c01f000000eb5e48c7c01b000000eb5548c7c019000000eb4c48c7c01d000000eb4348c7c00d000000eb3a48c7c007000000eb3148c7c00b000000eb284983fe15750948c7c003000000eb0748c7c001000000eb1048c7c017000000eb0748c7c0150000004881c0e00000004881e0ff010000c34c8b70084d89f54c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb76eb5ceb7b48c7c00f000000eb7948c7c005000000eb7048c7c009000000eb6748c7c01f000000eb5e48c7c01b000000eb5548c7c019000000eb4c48c7c01d000000eb4348c7c00d000000eb3a48c7c007000000eb3148c7c00b000000eb284983fe15750948c7c003000000eb0748c7c001000000eb1048c7c017000000eb0748c7c0150000004881c0000100004881e0ff010000c3488b40084881c8b1010000c348c7c003010000c348c7c007010000c348c7c001010000c348c7c0a3010000c348c7c083010000c348c7c0a7010000c348c7c0ef010000c348c7c0ed010000c348c7c0ff010000c348c7c0e9010000c348c7c05f010000c348c7c0d3000000c348c7c0d7000000c348c7c0d3010000c348c7c0d7010000c348c7c01b010000c348c7c083010000c348c7c08d010000c348c7c011010000c3488b40084881c0700100004881e0ff010000c348c7c08f010000c348c7c017010000c348c7c017010000c348c7c013010000c348c7c013010000c348c7c013010000c348c7c06d010000c348c7c06f010000c348c7c021010000c348c7c01f010000c3488b40084881c0b00000004881e0ff010000c348c7c0d1000000c348c7c0d5000000c3488b40084881c0a00000004881e0ff010000c348c7c0e7010000c348c7c087010000c348c7c085010000c34c8b70084c8d2d080000004f8d6c35ff41ffe5eb12eb18eb1eeb24eb2aeb30eb36eb3ceb42eb4848c7c0b1000000c348c7c0a9000000c348c7c05d000000c348c7c0bd000000c348c7c0b5000000c348c7c021000000c348c7c0b5000000c348c7c0b3000000c348c7c0b9000000c348c7c0af000000c348c7c023000000c348c7c023000000c348c7c051010000c348c7c00f010000c3f40000|@6071,1,@17353| 12550:D18,1440|483b65187305ff5558cd094989c64c8b6bf84d89eb49c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bf50f83580500004d89f549d1ed4e0fb62c2b4e8d2c6d010000004d89f44983c4024d89da49c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be30f830e05000049d1ec4e0fb624234e8d2465010000004d89f34983c3044d89d149c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83c704000049d1eb4e0fb61c1b4e8d1c5d010000004d89f24983c2064d89c849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd10f838004000049d1ea4e0fb614134e8d1455010000004d89f14983c1084c89c749c1e00849c1e8074983c8014e8d04c5f9ffffff4d3bc80f833904000049d1e94e0fb60c0b4e8d0c4d010000004d89f04983c00a4889fa48c1e70848c1ef074883cf01488d3cfdf9ffffff4c3bc70f83f203000049d1e84e0fb604034e8d0445010000004c89f74883c70c4889d648c1e20848c1ea074883ca01488d14d5f9ffffff483bfa0f83ab03000048d1ef480fb63c3b488d3c7d010000004983c60e48c1e60848c1ee074883ce01488d34f5f9ffffff4c3bf60f836a03000049d1ee4e0fb634334e8d34750100000041f6c601740b4981fe010100007c15eb18490fb676ff488d3475010000004883fe0374054c89f0eb3e41f6c601740e4c89f04881e8000200007002eb2a4c89f048c7c30102000041554154415341524151415057ff150e0400005f41584159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2a48c7c30102000041554154415341524151415057ff15c50300005f41584159415a415b415c415d4989c641f6c601741440f6c701740e4889f84883e8014903c67002eb244889fb4c89f0415541544153415241514150ff157b03000041584159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2848c7c301020000415541544153415241514150ff153403000041584159415a415b415c415d4989c641f6c601741441f6c001740e4c89c04883e8014903c67002eb204c89c34c89f041554154415341524151ff15ed0200004159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2448c7c30102000041554154415341524151ff15aa0200004159415a415b415c415d4989c641f6c601741441f6c101740e4c89c84883e8014903c67002eb1c4c89cb4c89f04155415441534152ff1567020000415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2048c7c3010200004155415441534152ff1528020000415a415b415c415d4989c641f6c601741441f6c201740e4c89d04883e8014903c67002eb184c89d34c89f0415541544153ff15e9010000415b415c415da80174164989c64983ee014d69f60001000070064983c601eb1c48c7c301020000415541544153ff15ae010000415b415c415d4989c641f6c601741441f6c301740e4c89d84883e8014903c67002eb144c89db4c89f041554154ff1573010000415c415da80174164989c64983ee014d69f60001000070064983c601eb1848c7c30102000041554154ff153c010000415c415d4989c641f6c601741441f6c401740e4c89e04883e8014903c67002eb104c89e34c89f04155ff1505010000415da80174164989c64983ee014d69f60001000070064983c601eb1448c7c3010200004155ff15d2000000415d4989c641f6c601741441f6c501740e4c89e84883e8014903c67002eb0c4c89eb4c89f0ff159f000000c348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff2348b85834650800000000488b5d08ff23f40000000000|@6072,1,@17354,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10653|1308,0,@5920 1324,0,@5920 1340,0,@5920 1356,0,@5920 1372,0,@5920 1388,0,@5920 1404,0,@5920 1420,0,@5920 12551:D6,520|483b65187306ff5558ca0901534c8b70084d8b264d89e54983fc01755c4d8b66084c8b284d8b70f849c1e60849c1ee074983ce014c3b34247715488d64240848b84020650800000000488b5d08ff234c8b1c244d89de4f896498fc4d89f64e8d34f5f9ffffff4d2bf54983ee0749c7c409000000e9000100004d89ec4983fd05754e4d8b7608488b184d8b68f849c1e50849c1ed074983cd014e8d2cedf9ffffff4c3beb7715488d64240848b89844650800000000488b5d08ff234c89c04d89f049c7c103000000ff156201000058c34d89e54983fc03754e4d8b7608488b184d8b68f849c1e50849c1ed074983cd014e8d2cedf9ffffff4c3beb7715488d64240848b89844650800000000488b5d08ff234c89c04d89f049c7c101000000ff150301000058c34d89ee4983fe0b7547488b184d8b70f849c1e60849c1ee074983ce014e8d34f5f9ffffff4c3bf37715488d64240848b89844650800000000488b5d08ff234c89c049c7c101000000ff15ab00000058c358c34983fc01750e488b04244883c002488d642408c34d89f34981e3ff0100004d8b50f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea733d49d1eb4d89ea49d1ea47881c104d89f349c1eb084983cb014d89ea4983c2024d89e14983e9024d89cc4d89d54d89de483b65187306ff5558ca0071eb88488d64240848b8a81f650800000000488b5d08ff23f400|@6076,1,@17356,@12552,@12552,@12552|65,0,@5762 173,0,@6074 260,0,@6074 343,0,@6074 504,0,@5759 12552:D3,48|49bb4004b703000000004d8b1b4989e5488b65304881ecb00000004889c14889da41ffd34c89ecc3f400000000000000|@6077,1,@17357|2,0,@41 12553:D3,72|49bb6804b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@6078,1,@17358|2,0,@42 12554:D9,760|483b65187306ff5558ca09035053415041514c8b7424084983fe01750d488d64242048c7c001000000c349c7c6010200004983fe017515488d64242048b88045650800000000488b5d08ff23f6442418017421488b44241849c7c60102000048d1f849d1fe489949f7fe488d045501000000eb12488b44241848c7c301020000ff15b20200004883f8017505e982000000a80174184883f8017c0949c7c603000000eb0749c7c601000000eb234c0fb670ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037427a801740e4989c64981c6000200007002eb1048c7c301020000ff15250200004989c64c89f0eb00a80174054989c6eb14ff15060200004989c64d8b364e8d3475010000004981e6ff0100004c8b2c244d8b65f849c1e40849c1ec074983cc014e8d14e5f9ffffff4c8b5c24104d89dc4d3bda0f837301000049d1ee4d89e449d1ec4d89ed4788742500f644241801741d4c8b7424184983fe017c0949c7c603000000eb0749c7c601000000eb284c8b7424184d0fb676ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037507488b442418eb4d48c7c3010200004883eb027002eb1748c7c00102000048c7c303000000ff152f0100004889c3f6442418017415f6c3017410488b442418482bc370064883c001eb0b488b442418ff15fd00000049c7c6010200004983fe017515488d64242048b8d845650800000000488b5d08ff23a801745549c7c6010200004983feff751b483b059b000000750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983f6024983fe03751c49c7c60102000048d1f849d1fe489949f7fe488d044501000000eb0d48c7c301020000ff156d000000488b5c24104883c3024c8b4424084983e8027115488d64242048b8d006620800000000488b5d08ff2341594883c418e929fdffff488d64242048b8a81f650800000000488b5d08ff23f40000000100000000000080|@6083,1,@17359,@12556,@10653,@10653,@12530,@10599,@12555|62,0,@6079 559,0,@6081 702,0,@105 734,0,@5759 12555:D3,80|49bb9004b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@6085,1,@17361|2,0,@43 12556:D3,80|49bbb804b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@6084,1,@17360|2,0,@44 12557:D9,1384|483b65187306ff5558ca09034d89c65041514c8b234d89e54983fc070f854f020000488b430841ff364d89f048c7c3010000004c8b4c2408ff156a050000488b1c24482b5c2410488d6424084883eb07f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff151b050000a801742848d1f84d8d67f04c3b65107303ff55504d89e749c74424f80100000041c64424ff0149890424eb09ff15e10400004989c44d8b2c244d89eb49c1ed184d89ee4e8d3475010000004981e6ff0100004d89d949c1eb104d89dd4e8d1c6d010000004981e3ff0100004d89ca49c1e9084d89cd4e8d2c6d010000004981e5ff0100004d89d44e8d1465010000004981e2ff0100004c8b0c244d8b61f849c1e40849c1ec074983cc014e8d04e5f9ffffff4c8b6424084c89e74d3be00f831401000049d1ea4889ff4989f848d1ef4d89c94d89cc458814394d89c04d89c14983c0024d89e44d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bc20f83ba00000049d1ed49d1e84d89e44d89e247882c044d89c94d89cc4983c1044d89d24d8b6af849c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bcd736b49d1eb49d1e94d89d24d89d547881c0a4d89e44983c4064d89ed4d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be3731f49d1ee49d1ec4d89ed4788742500488d64240848c7c0010000004883c408c3488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff234983fd090f85dc0200004c8b430841ff3641f6c0017415488d64241848b808ef620800000000488b5d08ff234d8b68f849c1e50849c1ed074983cd014a8d1cedf9ffffff4883fb110f85830200004d0fb668ff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983fd030f85480200004d89f148c7c0010000004c8b542408ff1588020000488b1c24482b5c2410488d6424084883eb07f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff1539020000a801742848d1f84d8d67f04c3b65107303ff55504d89e749c74424f80100000041c64424ff0149890424eb09ff15ff0100004989c44d8b2c244d89eb49c1ed184d89ee4e8d3475010000004981e6ff0100004d89d949c1eb104d89dd4e8d1c6d010000004981e3ff0100004d89ca49c1e9084d89cd4e8d2c6d010000004981e5ff0100004d89d44e8d1465010000004981e2ff0100004c8b0c244d8b61f849c1e40849c1ec074983cc014e8d04e5f9ffffff4c8b6424084c89e74d3be00f831401000049d1ea4889ff4989f848d1ef4d89c94d89cc458814394d89c04d89c14983c0024d89e44d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bc20f83ba00000049d1ed49d1e84d89e44d89e247882c044d89c94d89cc4983c1044d89d24d8b6af849c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bcd736b49d1eb49d1e94d89d24d89d547881c0a4d89e44983c4064d89ed4d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be3731f49d1ee49d1ec4d89ed4788742500488d64240848c7c0010000004883c408c3488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff23488d64241048b8a81f650800000000488b5d08ff23488d642418eb05488d64241848b8c046650800000000488b5d08ff23488d64241048c7c001000000c3f4000000|@6089,1,@17362,@12530,@10599,@12559,@12530,@10599,@12558|119,0,@651 548,0,@5759 569,0,@5759 590,0,@5759 611,0,@5759 655,0,@1711 833,0,@651 1262,0,@5759 1283,0,@5759 1304,0,@5759 1325,0,@5759 1353,0,@6086 12558:D9,1184|483b65187306ff5558ca09035053415041514c8b7424104983fe11750d488d64242048c7c001000000c349c7c6010200004983fe017515488d64242048b88045650800000000488b5d08ff23f6442418017421488b44241849c7c60102000048d1f849d1fe489949f7fe488d045501000000eb12488b44241848c7c301020000ff155a0400004883f8017505e982000000a80174184883f8017c0949c7c603000000eb0749c7c601000000eb234c0fb670ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037427a801740e4989c34981c3000200007002eb1048c7c301020000ff15cd0300004989c34c89d8eb00a80174054989c3eb14ff15ae0300004989c64d8b364e8d1c75010000004981e3ff0100004d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049c7442408010000004d891c2449c7c5010000004d89e641f6c60175364d8b4e084d89ea4983c2027115488d64242048b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1da5020000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64242048b8f807620800000000488b5d08ff23488d64242048b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4d8b2e4e8d2c6d0100000049c7c4010000004d3be50f8248010000f644241801741d4c8b7424184983fe017c0949c7c603000000eb0749c7c601000000eb284c8b7424184d0fb676ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037507488b442418eb4d48c7c3010200004883eb027002eb1748c7c00102000048c7c303000000ff15890100004889c3f6442418017415f6c3017410488b442418482bc370064883c001eb0b488b442418ff155701000049c7c6010200004983fe017515488d64242048b8d845650800000000488b5d08ff23a801745549c7c6010200004983feff751b483b05ed000000750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983f6024983fe03751c49c7c60102000048d1f849d1fe489949f7fe488d044501000000eb0d48c7c301020000ff15c7000000488b5c24104883c3024c8b4424084159488d642418e9f5fbffff4d89e34983c31049d1eb4f0fb61c1e4c8b5424084d8b024c8b0c24498b71f848c1e60848c1ee074883ce01488d34f5f9ffffff4c3bc6733549d1e84d89c947881c014d89d24d8b1a4983c3024d89d24d891a4d89e34983c3024d89dc483b65187306ff5558ca0070e942feffff488d64242048b8a81f650800000000488b5d08ff23f400000100000000000080ffffffffffffff01|@6091,1,@17364,@12556,@10653,@10653,@12530,@10599,@12555|62,0,@6079 388,0,@105 440,0,@126 585,0,@117 606,0,@120 893,0,@6081 1151,0,@5759 12559:D3,552|483b65187306ff5558ca09074989c64c3bf3750848c7c001000000c34d89f549d1ed4f0fb62c284a8d3c6d010000004d8d5fe84c3b5d107306ff5550ca88474d89df49c743f80200000049c743080100000049893b49c7c4010000004d89dd41f6c5017531498b55084c89e64883c602711048b8d006620800000000488b5d08ff234989d54989f4483b65187306ff5558ca887febc94983fc010f8ca30000004983fc03751449bd30096208000000004d8b6cbdfce9d40000004c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d3c4501000000483b3d3d010000774e4889fe4c8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca885f4d89ef48d1ee498975f841c645ff414883ef0249c744bdfc0000000049d1ec4d89650049c7c411000000eb2048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2341f6c3017530498b3b498b730848d1ef4c89e248d1ea41887c15004c89e74883c7024989f34989fc483b65187306ff5558ca087febca418065ffbf4d8b65004e8d24650100000049c7c3010000004d3bdc720c4c89f04883c002e94efeffff4c89df4883c71048d1ef490fb67c3d00498b31498b4af848c1e10848c1e9074883c901488d0ccdf9ffffff483bf1732948d1ee41883c32498b394883c7024989394c89df4883c7024989fb483b65187306ff5558ca087feb9648b8a81f650800000000488b5d08ff23f400000000ffffffffffffff01|@6090,1,@17363|116,0,@105 168,0,@126 309,0,@117 325,0,@120 525,0,@5759 12560:D7,1496|483b65187305ff5558cd09f6c3010f85900000004c8b234d8b34244d8b5c24084d8b6c24104d8b6424184983fd03750949c7c511000000eb0749c7c5010000004981cd810000004983fb03750949c7c309000000eb0749c7c3010000004d0beb4983fc03750949c7c405000000eb0749c7c4010000004d0bec4d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564c8b284d89ee4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a6000000909090e9aa000000909090e90b000000909090e90300000090909049c7c501000000e99500000049bd3848650800000000e98600000049bd5048650800000000eb7a49bd6848650800000000eb6e4c8b68084983fd0d750c49bd8048650800000000eb404983fd13750c49bd6848650800000000eb2e4983fd03750c49bd6848650800000000eb1c4983fd05750c49bd6848650800000000eb0a49bd3848650800000000eb1649bd3848650800000000eb0a49bd804865080000000041554c8d2d080000004f8d6cb5fc41ffe5e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d3000000909090e9d7000000909090e90b000000909090e90300000090909049c7c601000000e9c200000049be9848650800000000e9b300000049be9848650800000000e9a400000049be9848650800000000e99500000049be9848650800000000e98600000049be9848650800000000eb7a49be9848650800000000eb6e4c8b70084983fe0d750c49be9848650800000000eb404983fe13750c49be9848650800000000eb2e4983fe03750c49be9848650800000000eb1c4983fe05750c49be9848650800000000eb0a49be9848650800000000eb1649be9848650800000000eb0a49be98486508000000004156ff15ae0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175035beb12488b0424ff156a0000004889c3488d6424084883fb017507488b5c2408eb0e488b442408ff15420000004889c34883fb017506584883c408c3584883c408ff2520000000f400000000000000|@6097,1,@17365,@12562,@12563,@12561,@12549|600,0,@6092 615,0,@6093 627,0,@6094 649,0,@6095 667,0,@6094 685,0,@6094 703,0,@6094 715,0,@6092 727,0,@6092 739,0,@6095 1170,0,@6096 1185,0,@6096 1200,0,@6096 1215,0,@6096 1230,0,@6096 1242,0,@6096 1264,0,@6096 1282,0,@6096 1300,0,@6096 1318,0,@6096 1330,0,@6096 1342,0,@6096 1354,0,@6096 12561:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17368| 12562:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17366| 12563:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17367| 12564:D23,4536|483b65187306ff5558ca09034989dd4c8b304c8d25080000004f8d64b4fc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a7010000909090e980020000909090e993010000909090e9ee040000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9bc050000909090e95b010000909090e953010000909090e94b010000909090e97d060000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e957070000909090e9e3000000909090e93d080000909090e9d3000000909090e9cb000000909090e929080000909090e95a0a0000909090e9b3000000909090e9ab000000909090e9d20b0000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e9000e0000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e9a10e0000909090e90b000000909090e9030000009090904c89c8c34c8b70204d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff1538100000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c8b70184d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff153b0f0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234983fc050f857b0100004d8b760848c7c001000000482b05d90d00007002eb2448c7c001000000488b1dbf0d00004155415041514156ff15610e0000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff152f0e0000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b355f0d00007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15a20d0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c89c8c34c8b70084d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15a00c0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c8b70104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15b30b0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c8b700849bce048650800000000f2410f1036f20f10ee66410f2e34247a047502eb2e49bcf048650800000000f20f10f566410f2e2c247a047502eb1449bc004965080000000066410f2e34247a0675044c89c8c34d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15790a0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c8b70084d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff157f090000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c89c8c34c8b70104d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff157a080000415e415941584989c541f6c50174774f8d6c28ff4983ed104d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234983fc050f85360100004d8b760841f6c601740b4981fe010000807c15eb154d0fb666ff4e8d2465010000004983fc037402eb2b41f6c601740e4c3b351b0700007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff1536070000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c89c8c34c8b70104d8b264983fc050f857b0100004d8b760848c7c001000000482b05ed0500007002eb2448c7c001000000488b1dd30500004155415041514156ff154d060000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff151b060000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b35730500007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff158e050000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c89c8c34c8b70084d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff1589040000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234983fc050f857b0100004d8b760848c7c001000000482b05570300007002eb2448c7c001000000488b1d3d0300004155415041514156ff15af030000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff157d030000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b35dd0200007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15f0020000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c34c89c8c34c8b70104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff15ff010000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c8b70184d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f854620800000000415041514156ff1505010000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80855620800000000488b5d08ff234c89c8c3f400000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100008000000000010000000100000001000000010000000000000001000000|@6101,1,@17369,@10599,@10599,@10599,@12224,@10653,@10599,@10599,@12224,@10653,@10599,@10599,@10599,@10599,@10599,@10599,@10599,@12224,@10653,@10599,@10599|540,0,@651 696,0,@652 785,0,@651 941,0,@652 1170,0,@651 1326,0,@652 1420,0,@651 1576,0,@652 1649,0,@651 1805,0,@652 1825,0,@6098 1856,0,@6099 1882,0,@6100 1955,0,@651 2111,0,@652 2197,0,@651 2353,0,@652 2450,0,@651 2606,0,@652 2766,0,@651 2922,0,@652 3166,0,@651 3322,0,@652 3419,0,@651 3575,0,@652 3804,0,@651 3960,0,@652 4037,0,@651 4193,0,@652 4279,0,@651 4435,0,@652 12565:D7,1112|483b65187306ff5558ca09034989dd5041514983f8017d07488d642410eb624c3b052a0400007d544c89c14e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1e84d8946f841c646ff404c89f748d1e948c7c0fffffffff348ab41564c8b6424104d89eb49c7c601000000eb15488d64241048b8d055620800000000488b5d08ff2341f6c4010f85f400000041f6c3010f85ea000000498b3c244d8b5424084d8b034d8b4b08488b374883fe31753c488b7708488b3c24488b57f848c1e20848c1ea074883ca01483bf27215488d64241848b80057620800000000488b5d08ff234889ff4c8974b7fceb004d8b004a8d1c4501000000f6c30174084883fb017d15eb184c0fb643ff4e8d0445010000004983f82374054989d8eb2b48b8f854620800000000415541544153415641524151ff15420300004159415a415e415b415c415d4989c041f6c001741f4f8d4406ff4d89c64d89cb4d89d4483b65187306ff5558ca0078e917ffffff488d64241848b80855620800000000488b5d08ff2341554156ff742420ff7424106a016a01f6442418010f85ed000000f6442410010f85e20000004c8b6c24184d8b75004d89ed41ff75084c8b6424184d8b2c244d89e441ff7424084d8b65004a8d1c6501000000f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dbeb1b48b8f85462080000000041564155ff1565020000415d415e4989c341f6c301745a4c8b6424184d89e04f8d641cff41544c89eb4c89f04c8b4c24184c8b542448ff152b0200004989c24c8b6c24104c8b642408415b488d6424104c8914244c895c24084c896424104c896c2418483b65187303ff5558e91dffffff488d64245848b80855620800000000488b5d08ff23415e49c7c5010000004883c41841f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b7424204d89eb49c7c40100000041f6c6010f85f300000041f6c3010f85e9000000498b3e4d8b56084d8b034d8b4b08488b374883fe31753d488b7708488b7c2410488b57f848c1e20848c1ea074883ca01483bf27215488d64242848b80057620800000000488b5d08ff234889ff4c8964b7fceb004d8b004a8d1c4501000000f6c30174084883fb017d15eb184c0fb643ff4e8d0445010000004983f82374054989d8eb2b48b8f854620800000000415541564153415441524151ff15c60000004159415a415c415b415e415d4989c041f6c001741f4f8d4404ff4d89c44d89cb4d89d6483b65187306ff5558ca0078e918ffffff488d64242848b80855620800000000488b5d08ff234c3b242475234c8b6424184d892c244c8b34244d89742408488d64240848c7c0010000004883c420c34c3b24247615488d64242848b84049650800000000488b5d08ff234c8924244c896c2408483b65187303ff5558e945fdfffff400ffffffffffffff01|@6119,1,@17370,@10599,@12566,@10599,@10599|131,0,@657 226,0,@664 300,0,@651 385,0,@652 521,0,@651 649,0,@652 838,0,@664 912,0,@651 997,0,@652 1065,0,@6102 12566:D47,8832|483b65187306ff5558ca09074989de41514c8b284c8d25080000004f8d64acfc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b7010000909090e983010000909090e991040000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e9c0080000909090e9fb000000909090e985090000909090e9e6090000909090e9e3000000909090e9c00c0000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e9730c0000909090e91b000000909090e913000000909090e90b000000909090e903000000909090498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b6d004983fd070f85ac0200004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1b48b8f85462080000000041564150ff158b2100004158415e4989c441f6c4010f84420200004d89e34983eb087115488d64240848b8d006620800000000488b5d08ff234d8b2e4e8d2c6d010000004983fb010f8cfa0100004d3bdd0f87dc0100004d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d8975104d895d0849c7450001000000415541f6c00174084983f8017d15eb184d0fb670ff4e8d3475010000004983fe2374054d89c5eb1a4c89c348b8f8546208000000004154ff15ce200000415c4989c541f6c5010f84500100004d89e64983ee014d03ee7115488d64241048b8d006620800000000488b5d08ff2349c7c6010000004d2bf57115488d64241048b8d006620800000000488b5d08ff234983c60148c7c001000000482b05fb1e00007002eb1848c7c001000000488b1de11e00004156ff1549200000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff151c200000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b358d1e00007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff158f1f000048c7c309000000ff157a1f00004989c541f6c50175134d8b650049c7c6010000004d89ebe9261c000049bcd808620800000000e9541b0000488d64241048b80855620800000000488b5d08ff23488d64240848b8b832620800000000488b5d08ff23488d64240848b8e002620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084c8b60104d8b5af849c1e30849c1eb074983cb014d3be37215488d64240848b81051620800000000488b5d08ff234f8b64a2fc4d8b364a8d1c7501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1f48b8f854620800000000415041554154ff154a1e0000415c415d41584989c641f6c6010f840204000041f6c40174084983fc017d16eb164d0fb65c24ff4e8d1c5d010000004983fb237402eb224c89e348b8f854620800000000415041554156ff15f21d0000415e415d41584989c441f6c4010f849d03000041f6c00174084983f8017d15eb184d0fb658ff4e8d1c5d010000004983fb2374054d89c3eb224c89c348b8f854620800000000415541564154ff15981d0000415c415e415d4989c341f6c3010f84360300004d2be37115488d64240848b8d006620800000000488b5d08ff234983c4014d2be67115488d64240848b8d006620800000000488b5d08ff234983c40141544983fe050f85d3000000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c70009000000ff15091d00004989c34c8b2c244d89ee4981fd01ffffff7c7f4d89f64d89f54981fe010100007d694d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6e939170000488d642410eb05488d64241048b8504a650800000000488b5d08ff234983fe0d7415488d64241048b8d04a650800000000488b5d08ff234c8b24244d89e64981fcff0000007f7e4d89f64981fef9feffff7c72488d642408498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c70009000000ff15f21b00004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb09f6208000000004d897424084d891c2449c7c5010000004d89e6e90a150000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c7000b00000048c7c301000000ff15761b00004989c6415648c7c001000000482b052b1a00007002eb1448c7c001000000488b1d111a0000ff15431b0000a8017417f6442408017410483b4424087f02eb22488d642418eb19488b5c2408ff15151b00004989c64983fe017e07488d642418eb3bf64424080174174c8b7424084c3b35ba1900007d02eb34488d642418eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241848b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15771a000048c7c309000000ff15621a00004889c34883fb017508415c4883c408eb12488b0424ff153f1a00004989c4488d64241041f6c40175134d8b1c2449c7c5010000004d89e6e96412000049bed808620800000000e929120000488d64240848b80855620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff234c8b68084c8b60104c8b58184d8b1b4983fb010f85900000004d8d4fe84c3b4d107306ff5550ca00304d89cf49c741f8020000004d89610849c701010000004d8d47f04c3b45107306ff5550ca00224d89c749c740f8010000004d89284d8b55004d8b7508415648b8484b65080000000048c7c3ffffffffff154a1900004989c441f6c40175134d8b1c2449c7c5010000004d89e6e90d10000049bed808620800000000e9d20f0000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084c8b60104d8b1c244983fb0175484d89d14c89e848c7c301000000ff15c6180000ff15b81800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c349c7c3010000004d89e9e9d20d00004c8b68084d8b6d004983fd070f85ac0200004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1b48b8f85462080000000041564150ff151c1800004158415e4989c441f6c4010f84420200004d89e34983eb087115488d64240848b8d006620800000000488b5d08ff234d8b2e4e8d2c6d010000004983fb010f8cfa0100004d3bdd0f87dc0100004d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d8975104d895d0849c7450001000000415541f6c00174084983f8017d15eb184d0fb670ff4e8d3475010000004983fe2374054d89c5eb1a4c89c348b8f8546208000000004154ff155f170000415c4989c541f6c5010f84500100004d89e64983ee014d03ee7115488d64241048b8d006620800000000488b5d08ff2349c7c6010000004d2bf57115488d64241048b8d006620800000000488b5d08ff234983c60148c7c001000000482b05fc1500007002eb1848c7c001000000488b1de21500004156ff15da160000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15ad160000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b358e1500007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff152016000048c7c309000000ff150b1600004989c541f6c50175134d8b650049c7c6010000004d89ebe9310a000049bcd808620800000000e95f090000488d64241048b80855620800000000488b5d08ff23488d64240848b8b832620800000000488b5d08ff23488d64240848b8e002620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b62f849c1e40849c1ec074983cc014d3bec7215488d64240848b81051620800000000488b5d08ff234b8b44aafc4c89f3ff151c1500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b62f849c1e40849c1ec074983cc014d3bec7215488d64240848b81051620800000000488b5d08ff234f8b6caafc4d8b364a8d1c7501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f85462080000000041504155ff156e140000415d41584989c641f6c6010f848b03000041f6c50174084983fd017d15eb154d0fb665ff4e8d2465010000004983fc237402eb1e4c89eb48b8f85462080000000041504156ff151b140000415e41584989c541f6c5010f842b03000041f6c00174084983f8017d15eb184d0fb660ff4e8d2465010000004983fc2374054d89c4eb1e4c89c348b8f85462080000000041564155ff15c5130000415d415e4989c441f6c4010f84c80200004d2bec7115488d64240848b8d006620800000000488b5d08ff234983c5014d2bee7115488d64240848b8d006620800000000488b5d08ff234983c50141554983fe050f85b700000048b8584b650800000000ff15541300004989c34c8b2c244d89ee4981fd01ffffff7c7f4d89f64d89f54981fe010100007d694d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6e906050000488d642410eb05488d64241048b8504a650800000000488b5d08ff234983fe0b7415488d64241048b8684b650800000000488b5d08ff234c8b2c244d89ee4981fdff0000007f624d89f64981fefbfeffff7c56488d64240848b8584b650800000000ff15591200004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb09f6208000000004d897424084d891c2449c7c5010000004d89e6e9f302000048b8c04b650800000000ff15001200004989c6415648c7c001000000482b052d1100007002eb1448c7c001000000488b1d13110000ff15cd110000a8017417f6442408017410483b4424087f02eb22488d642418eb19488b5c2408ff159f1100004989c64983fe017e07488d642418eb3bf64424080174174c8b7424084c3b35bc1000007d02eb34488d642418eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241848b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff150111000048c7c309000000ff15ec1000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d89342449c7c5010000004d89e6eb3f488d64240848b80855620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff23488d64240848b80855620800000000488b5d08ff2341f6c60175364d8b56084d89eb4983c3027115488d64241848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44983fd010f8cb50000004983fd03751d49be30096208000000004c8b2c244f8b74aefc488d642410e9e3000000488d6424104c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d260f0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64241848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db40d0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d420c0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15930b0000ff15850b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c30175364d8b4b084d89f24983c2027115488d64241048b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30096208000000004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d0d0a000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64241048b8f807620800000000488b5d08ff23488d64241048b86808620800000000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe9f7fdffff41f6c1017536498b71084c89df4883c7027115488d64240848b8d006620800000000488b5d08ff234989f14989fb483b65187306ff5558ca007febc44983eb014d6bdb067115488d64240848b8d006620800000000488b5d08ff234983c3014f8d4c18ff4d89eb41f6c3010f858f000000498b33498b7b08498b52f848c1e20848c1ea074883ca01483bf27215488d64240848b81051620800000000488b5d08ff23498b74b2fc4c89ca4883c204483bf27644492bf14883ee034881feff000000730948c7c603000000eb0748c7c6010000004883fe03751e4c89ce4883c6044989f14989fb483b65187306ff5558ca007fe970ffffff49c7c301000000eb0749c7c3030000004983fb03751349c70424010000004c89e8ff15ea080000eb164d89d14d89f24c89e848c7c301000000ff15ca080000ff15bc0800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d28070000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991feffff498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db1050000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991feffff41f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d66040000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1df4020000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff1545020000ff15370200004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c30175364d8b4b084d89f24983c2027115488d64241048b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30096208000000004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dbf00000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64241048b8f807620800000000488b5d08ff23488d64241048b86808620800000000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe9f7fdfffff400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@6120,1,@17371,@10502,@12568,@10502,@12569,@12571,@10502,@12568,@12567,@12530,@12224,@10653,@12549,@12549,@12549,@10599,@10599,@10599,@12570,@12567,@12530,@12224,@10653,@10599,@10599,@10502,@12572,@12573,@12579,@12567,@12530,@12224,@10653,@12560,@12549,@12549,@10599,@10599,@10599,@12567,@12530,@12224,@10653,@10599,@10599|595,0,@651 646,0,@105 778,0,@651 828,0,@105 861,0,@105 1024,0,@6105 1132,0,@123 1152,0,@652 1173,0,@467 1194,0,@76 1215,0,@652 1309,0,@625 1378,0,@651 1458,0,@651 1540,0,@651 1591,0,@105 1621,0,@105 1848,0,@6108 1875,0,@6111 1999,0,@1172 2240,0,@6105 2388,0,@123 2408,0,@652 2429,0,@652 2450,0,@652 2569,0,@6114 2620,0,@123 2850,0,@651 2901,0,@105 3033,0,@651 3083,0,@105 3116,0,@105 3279,0,@6105 3387,0,@123 3407,0,@652 3428,0,@467 3449,0,@76 3470,0,@652 3560,0,@625 3667,0,@625 3736,0,@651 3811,0,@651 3889,0,@651 3936,0,@105 3966,0,@105 3998,0,@6115 4165,0,@6108 4192,0,@6116 4241,0,@6115 4288,0,@1172 4322,0,@6118 4494,0,@6105 4643,0,@652 4664,0,@652 4685,0,@652 4725,0,@105 4777,0,@126 4936,0,@117 4957,0,@120 5101,0,@105 5153,0,@126 5298,0,@117 5319,0,@120 5463,0,@105 5515,0,@126 5660,0,@117 5681,0,@120 6020,0,@105 6072,0,@126 6220,0,@117 6241,0,@120 6346,0,@105 6397,0,@105 6468,0,@625 6753,0,@105 6805,0,@126 6950,0,@117 6971,0,@120 7120,0,@105 7172,0,@126 7317,0,@117 7338,0,@120 7443,0,@105 7495,0,@126 7640,0,@117 7661,0,@120 7805,0,@105 7857,0,@126 8002,0,@117 8023,0,@120 8362,0,@105 8414,0,@126 8562,0,@117 8583,0,@120 12567:D3,168|483b65187305ff5558cd094883fb01750848c7c001000000c34c8b284d89ee4e8d2c6d010000004981e5ff010000415549c1ee08498d47f0483b45107305ff5550cd084989c748c740f801000000c640ff014c89304883eb027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@6133,1,@17384|98,0,@105 12568:D3,328|483b65187305ff5558cd01a8010f85200100004c8b284c8b70084d8b5d00498b4d084d8b65104d8b2c244e8d2c6d010000004983fb01750d493bcd75084d89e5e9a50000004883f901750f49bdd808620800000000e9900000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15bd0000000f879a0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4b8d341c498d7d0848d1e9f3a4418065ffbf41554c89f0e80cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f807620800000000488b5d08ff2348c7c001000000c3f400000000ffffffffffffff01|@742,1,@17372|77,0,@123 293,0,@117 12569:D4,800|483b65187306ff5558ca090753415041514152a8010f85f10200004c8b28ff70084c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242848b81051620800000000488b5d08ff234d89f64b8b44aefc4c8b7424084d8b264d89e54e8d1465010000004c8b5c24204d89dc4983fb010f8c7a0200004d89e44d89e34983c40a4d3be20f87520200004d89f64e8d246d010000004d89db4d89dd4983fb01750b4983fc0b75054c89f3eb6849c7c4050000004a8d1ca50400000048f7db4903df483b5d107205493bdf7206ff5550ca01604989df49d1ec4c8963f8c643ff4148c743080000000048c703050000004d89ed4983c51048c7c10b00000049d1ed4d89f64b8d342e488d7b0848d1e9f3a48063ffbf4c8b442418ff15130200004989c641564c8b6424284c89e34983c40a7115488d64243048b8d006620800000000488b5d08ff234c8b6c24104d8b5d004d89de4e8d145d010000004983fc010f8c620100004d89e34983c3064d3bda0f873d0100004d89ed4e8d3475010000004983fc01750e4983fe0775084d89eee98300000049c7c3050000004e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08304d89f749d1eb4d895ef841c646ff4149c746080000000049c706030000004983c4104d89e349d1eb4d89ed4f0fb65c1d0045885e084d89e349d1eb4d89ed4f0fb65c1d0145885e0949d1ec4d89ed4f0fb66c250245886e0a418066ffbf41564889db4883c3107115488d64243848b8d006620800000000488b5d08ff234c8b4424284983c010488b4424104c8b4c24204c8b542418e8a6fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c3488d64243048b8b832620800000000488b5d08ff23488d64243048b8e002620800000000488b5d08ff23488d64242848b8b832620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488d64242048c7c001000000c3f4000000000000|@6121,1,@17373,@12570|66,0,@625 319,0,@105 559,0,@105 703,0,@467 724,0,@76 745,0,@467 766,0,@76 12570:D12,1272|483b65187306ff5558ca09014989c64989db4d8b2b4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1f48b8f854620800000000415641534150ff15f80400004158415b415e4989c441f6c4010f847b02000041f6c60174084983fe017d15eb154d0fb66eff4e8d2c6d010000004983fd237402eb224c89f348b8f854620800000000415341504154ff15a1040000415c4158415b4989c641f6c6010f841c02000041f6c00174084983f8017d15eb184d0fb668ff4e8d2c6d010000004983fd2374054d89c5eb224c89c348b8f854620800000000415341544156ff1547040000415e415c415b4989c541f6c5010f84ba0100004d2bf5711048b8d006620800000000488b5d08ff234983c6014d2bf4711048b8d006620800000000488b5d08ff234983c6014983ec08711048b8d006620800000000488b5d08ff234d8b2b4e8d2c6d010000004983fc010f8c4d0100004d3be50f87340100004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c7450001000000415548c7c001000000482b05430300007002eb1848c7c001000000488b1d290300004156ff1571030000415ea801741441f6c601740e493bc67f02eb24488d642408eb1b4c89f34156ff1544030000415e4989c54983fd017e07488d642408eb3041f6c60174124c3b35d50200007d02eb2f488d642408eb184d0fb66eff4e8d2c6d010000004983fd237415488d64240848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b702000048c7c309000000ff15a20200004989c541f6c50175134d8b650049c7c6010000004d89ebe9f000000049bcd808620800000000eb5048b8b832620800000000488b5d08ff2348b8e002620800000000488b5d08ff2348b80855620800000000488b5d08ff2348b80855620800000000488b5d08ff2348b80855620800000000488b5d08ff234d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff1594010000ff258601000041f6c30175364d8b4b084d89f24983c2027115488d64240848b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30096208000000004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dc500000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe926fefffff400000000000000ffffffffffffff01010000000100000001000000010000000000000001000000|@6122,1,@17374,@10502,@12568,@12567,@12530,@12224,@10653,@10599,@10599,@10599|68,0,@651 147,0,@651 229,0,@651 275,0,@105 300,0,@105 326,0,@105 560,0,@6105 668,0,@123 680,0,@467 696,0,@76 712,0,@652 728,0,@652 744,0,@652 932,0,@105 984,0,@126 1132,0,@117 1153,0,@120 12571:D4,496|483b65187305ff5558cd01a8017551ff700848b8584b650800000000ff15e60100004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb09f6208000000004d897424084d891c2449c7c5010000004d89e6eb0848c7c001000000c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1df7000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4156488b442408e84efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3f4000000000000ffffffffffffff01|@742,1,@17375,@12549|20,0,@6115 67,0,@1172 130,0,@105 182,0,@126 327,0,@117 348,0,@120 12572:D6,968|483b65187306ff5558ca09035341504151a8010f85ed0100004c8b28ff70084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b81051620800000000488b5d08ff234d89f64b8b5caefcf6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f854620800000000ff15650300004989c641f6c6010f8459010000f644241001740d4c8b6c24104983fd017d1aeb1f4c8b6c24104d0fb66dff4e8d2c6d010000004983fd2374074c8b6c2410eb1c48b8f854620800000000488b5c24104156ff1506030000415e4989c541f6c5010f84eb0000004d2bf57115488d64242048b8d006620800000000488b5d08ff234983ee0341567115488d64242848b8d006620800000000488b5d08ff2348b8584b650800000000ff15a80200004989c34c8b2c244d89ee4981fd01ffffff7c7c4d89f64d89f54981fe010100007d664d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6eb53488d642428eb05488d64242848b8504a650800000000488b5d08ff23488d64242048b80855620800000000488b5d08ff23488d64242048b80855620800000000488b5d08ff23488d64241848c7c001000000c341f6c60175364d8b4e084d89ea4983c2027115488d64242048b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d24010000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64242048b8f807620800000000488b5d08ff23488d64242048b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4156488b5c24204883c3047115488d64242848b8d006620800000000488b5d08ff234c8b4424184983c004488b4424084c8b4c2410e875fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400ffffffffffffff01|@6121,1,@17376,@12549,@10599,@10599|64,0,@625 125,0,@651 205,0,@651 253,0,@105 282,0,@105 298,0,@6115 462,0,@6108 483,0,@652 504,0,@652 557,0,@105 609,0,@126 754,0,@117 775,0,@120 869,0,@105 12573:D20,2960|483b65187306ff5558ca09074989de506a016a016a0141f6c0010f85e20000004d8b284d8b65004d8b6d084983fe0175124983fc0b740c49c7c301000000e9af00000048c7c0010000004881e8000100007002eb2c48c7c00100000048c7c301010000415641504151415241544155ff15b30b0000415d415c415a41594158415ea801740d41f6c6017407493bc67f2ceb2c4c89f3415641504151415241544155ff15790b0000415d415c415a41594158415e4989c34983fb017e02eb2441f6c601740b4981fe010100007d15eb1c4d0fb65eff4e8d1c5d010000004983fb23740949c7c303000000eb0749c7c3050000004c891c244c896424084c896c2410eb2449bdc84c6508000000004d8b65004c8924244d8b65084c896424084d8b6d104c896c24104c8b2c244c8b642408ff7424106a016a01498b394989fb4883ff0775134d8b59084c891c2448c744240807000000eb6b4c89df4983fb0575134d8b59084c891c2448c744240805000000eb4f4989fb4883ff0375134d8b59084c891c2448c744240803000000eb334983fb0175134d8b59084c891c2448c744240801000000eb1a49bbe84c6508000000004d8b0b4c890c244d8b5b084c895c2408415b5f4d8b0b41ff73084983fc097502eb164983f9097402eb0e4c8b1c244983fb030f85eb0000004983fa0f7615488d64243048b8004d650800000000488b5d08ff234983fd07750949c7c307000000eb254983fd03750949c7c305000000eb164983fd05750949c7c303000000eb0749c7c30100000049c1e3064983eb3f4981e3ff0100004e8d14d5f9ffffff4981e2ff0100004d0bda4983cb094989fa49c1e2064983ea3f4981e2ff0100004e8d0ccdf9ffffff4981e1ff0100004d0bd14d0be24d8d57e84c3b55107306ff5550ca00794d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006d4d89e749c74424f8020000004d895424084d891c24e9b70000004983fa0f7615488d64243048b8004d650800000000488b5d08ff234983fc0f7615488d64243048b8784d650800000000488b5d08ff234983fd07750949c7c307000000eb254983fd03750949c7c305000000eb164983fd05750949c7c303000000eb0749c7c30100000049c1e3064983eb3f4981e3ff0100004e8d14d5f9ffffff4981e2ff0100004d0bda4d0bdc4d8d67e84c3b65107306ff5550ca00694d89e749c74424f80200000049c7442408010000004d891c2441544983fd030f85e700000048c7c001000000482b05e30700007002eb1848c7c001000000488b1dc90700004156ff1559080000415ea801741441f6c601740e493bc67f02eb24488d642438eb1b4c89f34156ff152c080000415e4989c54983fd017e07488d642438eb3041f6c60174124c3b35750700007d02eb2f488d642438eb184d0fb66eff4e8d2c6d010000004983fd237415488d64243848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff159f07000048c7c309000000ff158a0700004989c6e94f0100004983fd05755441f6c60174054d89f5eb174c89f0ff15600700004989c64d8b364e8d2c75010000004981e5ff0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9f50000004983f8010f85e400000048c7c001000000482b05800600007002eb1848c7c001000000488b1d660600004156ff15e6060000415ea801741441f6c601740e493bc67f02eb24488d642438eb1b4c89f34156ff15b9060000415e4989c54983fd017e07488d642438eb3041f6c60174124c3b35120600007d02eb2f488d642438eb184d0fb66eff4e8d2c6d010000004983fd237415488d64243848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff152c06000048c7c309000000ff15170600004989c6eb0749c7c60100000041564c8b7424384d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3848650800000000e98900000049be5048650800000000eb7d49be6848650800000000eb714d89f64d8b76084983fe0d750c49be8048650800000000eb404983fe13750c49be6848650800000000eb2e4983fe03750c49be6848650800000000eb1c4983fe05750c49be6848650800000000eb0a49be3848650800000000eb1649be3848650800000000eb0a49be80486508000000004156488b5c2450488b4424404c8b4424204c8b4c2418ff15a20300004989c641564c8b7424484d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d6000000909090e9da000000909090e90b000000909090e90300000090909049c7c601000000e9c500000049be9848650800000000e9b600000049be9848650800000000e9a700000049be9848650800000000e99800000049be9848650800000000e98900000049be9848650800000000eb7d49be9848650800000000eb714d89f64d8b76084983fe0d750c49be9848650800000000eb404983fe13750c49be9848650800000000eb2e4983fe03750c49be9848650800000000eb1c4983fe05750c49be9848650800000000eb0a49be9848650800000000eb1649be9848650800000000eb0a49be98486508000000004156488b442450ff15180100004989c641564c8b7424204c89f34983fe0175074c8b742428eb0e488b442428ff15eb0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175035beb12488b0424ff15a20000004889c3488d6424084883fb0175035beb12488b0424ff157f0000004889c3488d6424084883fb017508584883c440c20800584c8b7424404c897424484883c448ff254c000000f4000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@6131,1,@17377,@12575,@12576,@12577,@12578,@12549,@12574,@12567,@12530,@12224,@10653,@12530,@12567,@12530,@12224,@10653,@12224,@10653|260,0,@6123 425,0,@6124 502,0,@6125 737,0,@6125 764,0,@6128 1064,0,@6105 1395,0,@6105 1916,0,@6092 1931,0,@6093 1943,0,@6094 1968,0,@6095 1986,0,@6094 2004,0,@6094 2022,0,@6094 2034,0,@6092 2046,0,@6092 2058,0,@6095 2528,0,@6096 2543,0,@6096 2558,0,@6096 2573,0,@6096 2588,0,@6096 2600,0,@6096 2625,0,@6096 2643,0,@6096 2661,0,@6096 2679,0,@6096 2691,0,@6096 2703,0,@6096 2715,0,@6096 12574:D3,864|483b65187306ff5558ca09034d89c64c8b204d89e54c8d1d080000004f8d5ca3fc41ffe3e983010000909090e987010000909090e99a010000909090e99e010000909090e96f010000909090e967010000909090e95f010000909090e98a010000909090e94f010000909090e947010000909090e97e010000909090e982010000909090e983010000909090e984010000909090e91f010000909090e917010000909090e90f010000909090e96d010000909090e96e010000909090e96f010000909090e9ef000000909090e9e7000000909090e960010000909090e961010000909090e9cf000000909090e9c7000000909090e952010000909090e953010000909090e954010000909090e9a7000000909090e94d010000909090e997000000909090e98f000000909090e93e010000909090e93f010000909090e977000000909090e96f000000909090e967000000909090e95f000000909090e957000000909090e94f000000909090e947000000909090e93f000000909090e937000000909090e92f000000909090e927000000909090e91f000000909090e917000000909090e9d800000090909049c7c503000000e9d00000004983fd11750949c7c503000000eb0749c7c501000000e9b500000049c7c503000000e9a900000049c7c503000000e99d00000049c7c503000000e99100000049c7c503000000e98500000049c7c503000000eb7c49c7c503000000eb7349c7c503000000eb6a49c7c503000000eb6149c7c503000000eb5849c7c503000000eb4f49c7c503000000eb4649c7c503000000eb3d49c7c503000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004c8b204983fc33751c4c8b60084983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fd037502eb1e4883fb037502eb164983fe037502eb0e4983f9037502eb064983fc0375794983fd03750949c7c011000000eb0749c7c0010000004981c8810000004883fb03750949c7c509000000eb0749c7c5010000004d0bc54983f903750949c7c505000000eb0749c7c5010000004d0bc54d0bc6498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c348c7c001000000c3f400000000|@6132,1,@17382| 12575:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17378| 12576:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17379| 12577:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17380| 12578:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17381| 12579:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17383| 12580:D4,432|483b65187305ff5558cd0953ff15b60100004989c441f6c40175104d8b1c2449c7c5010000004d89e6eb3649bed808620800000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d006620800000000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30096208000000004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbe000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f807620800000000488b5d08ff23488d64240848b86808620800000000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991fefffff4000000ffffffffffffff01|@6211,1,@17385,@12581|45,0,@123 123,0,@105 175,0,@126 320,0,@117 341,0,@120 12581:D265,19312|483b65187305ff5558cd014c8b284d89ee4c8d25080000004f8d64acfc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9e8230000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9b7260000909090e910290000909090e9c6290000909090e9c62a0000909090e9462b0000909090e959300000909090e9e3300000909090e944310000909090e98f310000909090e9a4310000909090e94c320000909090e9bd320000909090e9cb330000909090e953340000909090e953340000909090e976340000909090e9e3000000909090e95d370000909090e9d3000000909090e9cb000000909090e9c3000000909090e9c7380000909090e9753e0000909090e9ab000000909090e9a3000000909090e9783e0000909090e993000000909090e9373f0000909090e9d23f0000909090e97b000000909090e973000000909090e992400000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e964400000909090e9b7400000909090e939410000909090e9b7450000909090e9154700009090904d89f54983fe59751048b8884e650800000000488b5d08ff234d89ee4983fd03751048b8084f650800000000488b5d08ff234d89f54983fe01751048b8884f650800000000488b5d08ff234d89ee4983fd5f0f85f60000004c8b68084c8b6010ff70184d8b34244d8b4c2408498b5c24104983fd037515488d64240848b80050650800000000488b5d08ff234983fd017515488d64240848b88050650800000000488b5d08ff234d8d47f04c3b45107306ff5550ca08424d89c749c740f8010000004d89306a0148b8005165080000000049c7c201000000ff15f25000004989c64156f64424080174074c8b742408eb19488b442408ff15cc5000004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff25725000004d89f54983fe5d0f850f0100004c8b60084c8b58104c8b70184d8b2b4d8b4b08498b5b104983fc03753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b810516508000000004c896c2408ff25035000004983fc01753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b820516508000000004c896c2408ff25b84f00004d8b264d89e24983fc09720949c7c403000000eb0749c7c401000000498d47e8483b45107306ff5550ca08764989c748c740f8020000004c89600848c700330000004d8d47f04c3b45107306ff5550ca09664d89c749c740f8010000004d89284d8b6e08ff34244c896c2408ff253e4f00004d89ee4983fd5b751048b83051650800000000488b5d08ff234d89f54c8d25080000004f8d64b4fc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e90a110000909090e98b010000909090e950110000909090e959110000909090e9b6110000909090e914120000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e982110000909090e9ca110000909090e99b000000909090e9e0180000909090e98b000000909090e983000000909090e9be190000909090e9781a0000909090e96b000000909090e9a51a0000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e9d51b0000909090e9201c0000909090e9aa1c0000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904d89ee4983fd07751048b8c051650800000000488b5d08ff234c8d2d080000004f8d6cb5fc41ffe5e9bb010000909090e9b3010000909090e9fd010000909090e9a3010000909090e930050000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9c4070000909090e9db000000909090e9e3070000909090e9cb000000909090e9ad080000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b70084d8d47f04c3b45107306ff5550ca00404d89c749c740f8010000004d89306a0148b8f8d764080000000048c7c3ffffffff49b958e464080000000049c7c209000000ff15174b0000ff25094b00004c8b60084c8b68104c8b7018ff702048c7c0010000004881e8000100007002eb2048c7c00100000048c7c301010000415441554156ff15c64a0000415e415d415ca801740ef60424017408483b04247f21eb21488b1c24415441554156ff15964a0000415e415d415c4989c34983fb017e02eb33f604240174124c8b1c244981fb010100007d20e9b80100004c8b1c244d0fb65bff4e8d1c5d010000004983fb230f849d0100004983fc05750949c7c20f000000eb434983fc0b750949c7c20d000000eb344983fc09750949c7c20b000000eb254983fc03750949c7c209000000eb164983fc07750949c7c203000000eb0749c7c2010000004d8d47f04c3b45107306ff5550ca00644d89c749c740f8010000004d89286a014c89f348b8485265080000000049b958e4640800000000ff15bb4900004989c6415648c7c001000000482b05b04100007002eb1448c7c001000000488b1d96410000ff1588490000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff155a4900004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b353f4100007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15bc48000048c7c309000000ff15a74800004889c34883fb017506584883c408c3584883c408ff25854800004983fc05750949c7c20f000000eb434983fc0b750949c7c20d000000eb344983fc09750949c7c20b000000eb254983fc03750949c7c209000000eb164983fc07750949c7c203000000eb0749c7c2010000004d8d47f04c3b45107306ff5550ca00644d89c749c740f8010000004d89286a014c89f348b868ab62080000000049b958e4640800000000ff15ee4700004989c64156f64424080174074c8b742408eb19488b442408ff15c84700004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff256e4700004c8b7008488b58104c8b68184d8b65004d89e34983fc0375704d8b5d084d8b4d104d8b6518498d47e0483b45107306ff5550ca085a4989c748c740f80300000048c74010070000004c89700848c700010000004d8d47f04c3b45107306ff5550ca091a4d89c749c740f8010000004d89184c8b134c8b6b08ff34244c89e34c896c2408ff25dd4600004d89dc4983fb010f856b020000ff334c8b6b08498d47e0483b45107306ff5550ca00604989c748c740f80300000048c74010070000004c89700848c700010000004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff153a4600004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1588450000a801740b4989c64983c6027002eb1048c7c303000000ff15644500004989c648c7c001000000482b05a33d00007002eb1848c7c001000000488b1d893d00004156ff1531450000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff1504450000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35353d00007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff157744000048c7c309000000ff15624400004889c34883fb0175035beb12488b0424ff15444400004889c3488d6424084883fb017506584883c408c3584883c408ff251d4400004983fc05750d4d8b45084c89f0ff25024400004d8b4508498d47e0483b45107306ff5550ca08414989c748c740f80300000048c74010070000004c89700848c70001000000ff25c24300004c8b40084c8b4810488b58184c8b70204d8b164d8b6e08ff342448b8484b6508000000004c896c2408ff258b4300004c8b60084c8b70104c8b58184d8b2b4d8b4b08498b5b104983fc03753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b858526508000000004c896c2408ff25294300004983fc01753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b868526508000000004c896c2408ff25de4200004d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b878526508000000004c896c2408ff25994200004c8b40084c8b70104d8b2e4d89ec4983fd03754e4d8b6e084d8b4e10498b5e184d8d67f04c3b65107306ff5550ca08234d89e749c74424f8010000004d892c244d8b104d8b6808ff34244d89e048b888526508000000004c896c2408ff252f4200004d89e54983fc010f852b0100004d8b304d8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89700848c700350000004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c746180100000049c746100300000049c74608010000004d892e498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff15934100004989c6415649c7c6050000004983ee014d6bf60070064983c601eb1748c7c00500000048c7c301000000ff155b4100004989c641f6c601740b4c89f04883c0027002eb104c89f048c7c303000000ff152f410000a80174274989c649d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb06ff15f640000048c7c311000000ff15e14000004889c34883fb01750258c358ff25c74000004983fd050f85ed03000041ff7608f604240174164c8b34244981fe010000807c02eb25488d642408eb1c4c8b34244d0fb676ff4e8d3475010000004983fe037407488d642408eb3ff604240174194c8b34244c3b353e3900007d05e96f020000488d642408eb204c8b34244d0fb676ff4e8d3475010000004983fe230f844d020000488d64240841ff304d8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b88852650800000000ff15cd3f00004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff151b3f0000a801740b4989c64983c6027002eb1048c7c303000000ff15f73e00004989c648c7c001000000482b05c63700007002eb1848c7c001000000488b1dac3700004156ff15c43e0000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15973e0000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35583700007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff150a3e000048c7c309000000ff15f53d00004889c34883fb0175035beb12488b0424ff15d73d00004889c3488d6424084883fb017506584883c408c3584883c408ff25b03d00004c89c348b8985265080000000049c7c001000000ff158e3d00004989c6415648c7c001000000482b057b3600007002eb1448c7c001000000488b1d61360000ff155b3d0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff152d3d00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b350a3600007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff158f3c000048c7c309000000ff157a3c00004889c34883fb017506584883c408c3584883c408ff25583c0000498b5e0848b8a852650800000000ff253c3c00004c8b68084c8b70104d8d47f04c3b45107306ff5550ca00604d89c749c740f8010000004d89284d8b164d8b6e08ff342449b958e464080000000048c7c30100000048b8b8526508000000004c896c2408ff25de3b00004c8b7008488b58104c89f0ff25c53b00004c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7000b00000048c7c301000000ff15863b00004989c6415648b8e04865080000000048c7c309000000ff15623b00004889c34883fb01750258c358ff25483b00004c8b7008488b58104c8b68184983fd03750949c7c20f000000eb0749c7c20d0000004d8d47f04c3b45107306ff5550ca08444d89c749c740f8010000004d8930ff342449b958e464080000000048b8d8e864080000000048c744240801000000ff25da3a0000488b58084c8b70104983fe03750949c7c00f000000eb0749c7c00d00000048b8d8e8640800000000ff25a43a00004c8b70084d8b2e4d8b7608498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89680848c7004b0000004983fe03750c48bbc852650800000000eb0748c7c301000000ff254c3a00004c8b70084d8b2e4d89ec4983fd010f85cd01000048b8005365080000000048c7c301000000ff15193a00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c60d0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1586390000a801740b4989c64983c6027002eb1048c7c303000000ff15623900004989c648c7c001000000482b05c13200007002eb1848c7c001000000488b1da73200004156ff152f390000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff1502390000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35533200007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff157538000048c7c309000000ff15603800004889c34883fb0175035beb12488b0424ff15423800004889c3488d6424084883fb01750258c358ff25233800004d89e54983fc050f859504000041ff760848c7c0010000004881e8000100007002eb1448c7c00100000048c7c301010000ff15e4370000a801740ef60424017408483b04247f15eb15488b1c24ff15c03700004989c64983fe017e02eb33f604240174124c8b34244981fe010100007d20e9a50300004c8b34244d0fb676ff4e8d3475010000004983fe230f848a03000048c7c001000000482b050c3100007002eb1448c7c001000000488b1df2300000ff1554370000a8017415f6042401740f483b04247f02eb21488d642408eb18488b1c24ff15293700004989c64983fe017e07488d642408eb3ff604240174194c8b34244c3b35a03000007d05e9f4010000488d642408eb204c8b34244d0fb676ff4e8d3475010000004983fe230f84d2010000488d64240848b8005365080000000048c7c301000000ff15bb3600004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c60d0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1528360000a801740b4989c64983c6027002eb1048c7c303000000ff15043600004989c648c7c001000000482b059b2f00007002eb1848c7c001000000488b1d812f00004156ff15d1350000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15a4350000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b352d2f00007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff151735000048c7c309000000ff15023500004889c34883fb0175035beb12488b0424ff15e43400004889c3488d6424084883fb01750258c358ff25c534000048b8105365080000000048c7c301000000ff15a63400004989c6415648c7c001000000482b055b2e00007002eb1448c7c001000000488b1d412e0000ff1573340000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15453400004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b35ea2d00007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15a733000048c7c309000000ff15923300004889c34883fb017506584883c408c3584883c408ff257033000048b8205365080000000048c7c301000000ff15513300004989c64156f64424080174074c8b742408eb19488b442408ff152b3300004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff25d13200004983fd03754d4d8b6e084d8b4e10498b5e184d8d47f04c3b45107306ff5550ca08224d89c749c740f8010000004d8928ff342449c7c20d00000048b8005365080000000048c744240801000000ff25763200004d8b76084d8b2e4d8b7608498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89680848c700510000004983fe03750c48bbc852650800000000eb0748c7c301000000ff251e320000ff700848b8305365080000000048c7c301000000ff15fc3100004989c641564c8b6c24084d89ee4983fd057502eb124d89f64983fe09740948c7c001000000eb0a48b840536508000000004c8b6c24084d89ee4983fd09750949c7c657010000eb434d89f64d89f54983fe07750949c7c655010000eb2e4d89ed4d89ee4983fd05750949c7c64b010000eb194d89f64983fe03750949c7c649010000eb0749c7c64d010000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15323100004889c34883fb017506584883c408c3584883c408ff2510310000ff7008488b58104c8b70184c8b2c244983fd03753a488d6424084983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b89043650800000000ff25b93000004983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b85853650800000000ff157c3000004d8d77e84c3b75107305ff5550cd014d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084983fe017501c34c89f3ff2536300000488b58084c8b70104983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b8a043650800000000ff25f12f00004c8b6808ff70104d8b75004d8b4d08498b5d104d8d47f04c3b45107306ff5550ca08424d89c749c740f8010000004d89306a0148b8985265080000000049c7c201000000ff159f2f00004989c6415648c7c001000000482b05cc2900007002eb1448c7c001000000488b1db2290000ff156c2f0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff153e2f00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b355b2900007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15a02e000048c7c309000000ff158b2e00004889c34883fb017506584883c408c3584883c408ff25692e00004c8b60084c8b70104d8b2c244d8b4c2408498b5c24104d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b8a8526508000000004c896c2408ff250e2e00004c8b7008ff7010488b58184d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89306a0148b8685365080000000049b958e464080000000049c7c201000000ff15ba2d00004c8b2c244981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff256c2d00004c8b700841ff364d8b6e084d89ec4c3b354f2d0000750a488d642408e94b0100004d8b1e4983fb01751b4d89e64983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f84110100004983fd037502eb134c8b34244983fe09730948c7c301000000eb544d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c746100100000049c74608010000004d892e498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b86853650800000000ff15872c00004c8b34244d89f54983fe0f7615488d64240848b8784d650800000000488b5d08ff2349c7c60700000049c1e6064983ee3f4981e6ff01000049c7c4010000004e8d24e5f9ffffff4981e4ff0100004d0bf44d0bf5488d642408498d5fe8483b5d107306ff5550ca01404989df48c743f80200000049bd60fe6208000000004c896b084c89334883fb017501c3ff25ed2b0000488d64240848b8785365080000000048c7c301000000ff15c92b0000ff25bb2b00004c8b70084d8b2e4d89ec4983fd03751b498b5e0849c7c00500000048b80053650800000000ff25882b00004d89e54983fc010f85cd01000048b8005365080000000048c7c301000000ff155c2b00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6050000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15c92a0000a801740b4989c64983c6027002eb1048c7c303000000ff15a52a00004989c648c7c001000000482b05442500007002eb1848c7c001000000488b1d2a2500004156ff15722a0000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15452a0000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35d62400007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b829000048c7c309000000ff15a32900004889c34883fb0175035beb12488b0424ff15852900004889c3488d6424084883fb01750258c358ff25662900004d89ee4983fe05753eff342449c7c20500000049b958e464080000000049b8885365080000000048c7c30100000048b8005365080000000048c744240801000000ff251729000048b8a89462080000000048c7c301000000ff15f82800004989c6415649c7c6010000004c2b35bd2300007002eb1748c7c001000000488b1da3230000ff15c52800004989c641f6c601740f4983fe017f02eb2f488d642408eb184d0fb676ff4e8d3475010000004983fe237415488d64240848b8c849650800000000488b5d08ff2348b8e04865080000000048c7c309000000ff15662800004889c34883fb01750258c358ff254c280000ff700848b8985365080000000048c7c301000000ff152a2800004989c641564c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0eeb29eb30eb37eb3eeb04eb43eb4a4c8b7424084983fe0b750949c7c603000000eb0749c7c601000000eb3449c7c605000000eb2b49c7c607000000eb2249c7c60d000000eb1949c7c60f000000eb1049c7c609000000eb0749c7c60b0000004983fe0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff150e270000a801740b4989c64983c6027002eb1048c7c303000000ff15ea2600004989c648c7c001000000482b05d12100007002eb1848c7c001000000488b1db72100004156ff15b7260000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff158a260000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35632100007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15fd25000048c7c309000000ff15e82500004889c34883fb0175035beb12488b0424ff15ca2500004889c3488d6424084883fb017506584883c408c3584883c408ff25a32500004c8b68084c8b7010488b58184d89ec4c8d1d080000004f8d5c23ff41ffe3eb0eeb24eb2beb32eb39eb04eb3eeb454983fd0b750949c7c203000000eb0749c7c201000000eb3449c7c205000000eb2b49c7c207000000eb2249c7c20d000000eb1949c7c20f000000eb1049c7c209000000eb0749c7c20b0000004d8d47f04c3b45107306ff5550ca08444d89c749c740f8010000004d8930ff342449b958e464080000000048b8985365080000000048c744240801000000ff25dd2400004c8b68084c8b70104d89ec4c8d1d080000004f8d5c23ff41ffe3eb0eeb24eb2beb32eb39eb04eb3eeb454983fd0b750949c7c503000000eb0749c7c501000000eb3449c7c505000000eb2b49c7c507000000eb2249c7c50d000000eb1949c7c50f000000eb1049c7c509000000eb0749c7c50b00000041554983c6024981e6ff010000415648b8b05365080000000048c7c301000000ff153924000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b7424084e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424104d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25c5230000ff700848b8c85365080000000048c7c301000000ff15a323000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff252d230000ff700849bee0486508000000004c8b2c24f2410f107500f20f10ee66410f2e360f8a510100000f854b01000048b8e05365080000000048c7c301000000ff15e222000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0d4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff156d2200004989c6415648c7c023000000488b5c2408ff154e2200004989c64983fe030f858500000048b8e05365080000000048c7c301000000ff152222000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15b12100004889c3eb0748c7c3010000004883fb017506584883c408c3584883c408ff258621000049bef048650800000000f20f10f566410f2e2e0f8a870000000f8581000000488d64240848b8e05365080000000048c7c301000000ff154321000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25d620000049be0049650800000000488d64240866410f2e360f8a1d0100000f851701000048b8e05365080000000048c7c301000000ff159720000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff15262000004989c6415648b8e05365080000000048c7c301000000ff150220000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15911f00004889c34883fb01750258c358ff25771f000048b8c85365080000000048c7c301000000ff15581f00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15c51e0000a801740b4989c64983c6027002eb1048c7c303000000ff15a11e00004989c648c7c001000000482b05481a00007002eb1848c7c001000000488b1d2e1a00004156ff156e1e0000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15411e0000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35da1900007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b41d000048c7c309000000ff159f1d00004889c34883fb0175035beb12488b0424ff15811d00004889c3488d6424084883fb01750258c358ff25621d00004c8b70084981e6ff010000415648b8e05365080000000048c7c301000000ff15361d000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25c01c00004c8b60084c8b68104d8b34244d8b4c2408498b5c24104983fd03750c48b8e053650800000000eb0a48b8c8536508000000004d8d47f04c3b45107306ff5550ca09424d89c749c740f8010000004d8930ff342449c7c20100000048c744240801000000ff254f1c00004c8b7008488b58104d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d8930ff342449c7c20b00000049b958e464080000000048b8f85365080000000048c744240801000000ff25f41b000048b8f85365080000000048c7c301000000ff15d51b0000ff25c71b00004c8b68084c8b70104983fd03750949c7c507000000eb0749c7c50500000041554983c6024981e6ff010000415648b8c85365080000000048c7c301000000ff157b1b000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b7424084e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424104d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25071b00004c8b68084c8b58104c8b60184d8b334d8b4b08498b5b104983fc03750c48b8e053650800000000eb0a48b8c8536508000000004983fd03750949c7c207000000eb0749c7c2050000004d8d47f04c3b45107306ff5550ca09464d89c749c740f8010000004d8930ff342448c744240801000000ff25861a00004c8b70086a016a014983fe07751c49bec8536508000000004d8b2e4c892c244d8b76084c89742408eb5e4983fe05751c49be10546508000000004d8b2e4c892c244d8b76084c89742408eb3c4983fe01751c49be28546508000000004d8b2e4c892c244d8b76084c89742408eb1a49be40546508000000004d8b2e4c892c244d8b76084c89742408ff3424ff74241048b8e05365080000000048c7c301000000ff15d819000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b34244e8d34f5f9ffffff488d6424084981e6ff0100004d0bee4c0b2c24488d6424184d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25601900004c8b70084c8b68104c8b60184d8b24244983fc03756a4d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d89690849c701050000004d8d47f04c3b45107306ff5550ca00424d89c749c740f8010000004d89304d8b164d8b6e08ff342448c7c3f9ffffff48b8484b6508000000004c896c2408ff25d818000048b85854650800000000488b5d08ff2348c7c001000000c34c8b70084c8b68104d8b6d004983fd03750941566a01e9fd13000048b8d854650800000000488b5d08ff234c8b70084d8b2e4d89ec4983fd03751b498b5e0849c7c00900000048b80053650800000000ff25621800004d89e54983fc010f85cd01000048b8005365080000000048c7c301000000ff15361800004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15a3170000a801740b4989c64983c6027002eb1048c7c303000000ff157f1700004989c648c7c001000000482b05be1300007002eb1848c7c001000000488b1da41300004156ff154c170000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff151f170000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35501300007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff159216000048c7c309000000ff157d1600004889c34883fb0175035beb12488b0424ff155f1600004889c3488d6424084883fb01750258c358ff25401600004d89ee4983fe05753eff342449c7c20900000049b958e464080000000049b8885365080000000048c7c30100000048b8005365080000000048c744240801000000ff25f115000048b8c04b65080000000048c7c301000000ff15d21500004989c6415649c7c6010000004c2b35371200007002eb1748c7c001000000488b1d1d120000ff159f1500004989c641f6c601740f4983fe017f02eb2f488d642408eb184d0fb676ff4e8d3475010000004983fe237415488d64240848b8c849650800000000488b5d08ff2348b8e04865080000000048c7c309000000ff15401500004889c34883fb01750258c358ff25261500004c8b701041ff364d8b6e084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b8484b650800000000ff15af1400004989c641564c8b7424084d89f54983fe0f7615488d64241048b8004d650800000000488b5d08ff2349c7c60100000049c1e6064983ee3f4981e6ff0100004d89ed4e8d2cedf9ffffff4981e5ff0100004d0bf54983ce0b415649c7c6010000004c2b35d01000007002eb1748c7c001000000488b1db6100000ff15281400004989c641f6c601740f4983fe017f02eb2f488d642418eb184d0fb676ff4e8d3475010000004983fe237415488d64241848b8c849650800000000488b5d08ff2348b8e04865080000000048c7c309000000ff15c91300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017506584883c408c3584883c408ff257c1300004c8b70084c8b68104d8b65004d89e34983fc01751048b85055650800000000488b5d08ff234d89dc4983fb050f851e05000041ff750848c7c0010000004881e8000100007002eb1848c7c00100000048c7c3010100004156ff1516130000415ea801740ef60424017408483b04247f19eb19488b1c244156ff15ee120000415e4989c54983fd017e02eb33f604240174124c8b2c244981fd010100007d20e9270400004c8b2c244d0fb66dff4e8d2c6d010000004983fd230f840c04000048c7c001000000482b05400f00007002eb1848c7c001000000488b1d260f00004156ff157e120000415ea8017415f6042401740f483b04247f02eb25488d642408eb1c488b1c244156ff154f120000415e4989c54983fd017e07488d642408eb3ff604240174194c8b2c244c3b2dcc0e00007d05e96f020000488d642408eb204c8b2c244d0fb66dff4e8d2c6d010000004983fd230f844d020000488d64240841ff364d8b6e084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b8d855650800000000ff158b1100004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15d9100000a801740b4989c64983c6027002eb1048c7c303000000ff15b51000004989c648c7c001000000482b05540d00007002eb1848c7c001000000488b1d3a0d00004156ff1582100000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff1555100000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35e60c00007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15c80f000048c7c309000000ff15b30f00004889c34883fb0175035beb12488b0424ff15950f00004889c3488d6424084883fb017506584883c408c3584883c408ff256e0f00004d89f04c89f348b8e855650800000000ff15500f00004989c6415648c7c001000000482b050d0c00007002eb1448c7c001000000488b1df30b0000ff151d0f0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15ef0e00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b359c0b00007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15510e000048c7c309000000ff153c0e00004889c34883fb017506584883c408c3584883c408ff251a0e00004d89f04c89f348b8f855650800000000ff15fc0d00004989c64156f64424080174074c8b742408eb19488b442408ff15d60d00004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff257c0d00004983fc0375494d8b65084d8b4d10498b5d184d8d47f04c3b45107306ff5550ca08524d89c749c740f8010000004d89204d8b164d8b6e08ff342448b8d8556508000000004c896c2408ff25250d00004d8b45084c89f348b8d855650800000000ff25060d0000488b580849c7c00700000048b8d8e8640800000000ff25e30c00006a0148b8885265080000000048c7c31100000049b8085665080000000049b958e464080000000049c7c207000000ff15a70c00004989c6415648b8005365080000000048c7c301000000ff15830c000049c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd074d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff150e0c00004889c34883fb01750258c358ff25f40b00004c8b68084c8b70104a8d1cedf9fffffff6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989d8eb1748b8f8546208000000004156ff15a50b0000415e4989c04983fe03753a4c89c3ff342449c7c20900000049b958e464080000000049b8e01e65080000000048b8484b65080000000048c744240801000000ff25580b000048bbf01e65080000000048c7c001000000ff25390b00004c8b70084983fe01751748c7c30100000048b81856650800000000ff25100b00004983ee014d6bf608711048b8d006620800000000488b5d08ff234983c601415648b8285665080000000048c7c301000000ff15d10a00004c8b2c244d89ee4981e5ff0100004d89f6488d64240849c1ee084983ce014981e6ff0100004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4983fe017501c34c89f3ff25490a000048bb385665080000000048b8a89b620800000000ff25270a000048b8c04b650800000000ff150f0a00004989c6415648b8e04865080000000048c7c309000000ff15eb0900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c8b7008488b58104d8b264d89e54983fc03754c4d8b6e084d8b4e104d8b66184d8d47f04c3b45107306ff5550ca08324d89c749c740f8010000004d89284c8b134c8b6b08ff34244c89e348b870566508000000004c896c2408ff25540900004983fd0775144d8b460848b87056650800000000ff253209000048b88056650800000000488b5d08ff234c8b6808ff70104c8b60184d8b34244d89f34983fe070f85cb01000041ff742408498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c700590000004983fd0d750c49be8048650800000000eb404983fd13750c49be6848650800000000eb2e4983fd03750c49be6848650800000000eb1c4983fd05750c49be6848650800000000eb0a49be384865080000000041564983fd0d750c49be9848650800000000eb404983fd13750c49be9848650800000000eb2e4983fd03750c49be9848650800000000eb1c4983fd05750c49be9848650800000000eb0a49be98486508000000004156ff15250800004989c64c8b6c24184d89eb4983fd0f7615488d64242048b8004d650800000000488b5d08ff234c8b6424104d89e54983fc0f7615488d64242048b8784d650800000000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff154a0700004889c3488d6424084883fb017506584883c410c3584883c410ff25230700004d89de4983fb010f8510020000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c7005900000048c7c301000000ff15db0600004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1529060000a801740b4989c64983c6027002eb1048c7c303000000ff15050600004989c648c7c001000000482b05ac0300007002eb1848c7c001000000488b1d920300004156ff15d2050000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15a5050000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b353e0300007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff151805000048c7c309000000ff15030500004889c34883fb0175035beb12488b0424ff15e50400004889c3488d6424084883fb017506584883c408c3584883c408ff25be0400004983fe0375674d8b7424084d8b4c2410498b5c2418498d47e8483b45107306ff5550ca08624989c748c740f8020000004c89680848c700590000004d8d47f04c3b45107306ff5550ca09424d89c749c740f8010000004d8930415aff342448c744240801000000ff2549040000488d64240848b8f856650800000000488b5d08ff23ff70084c8b701041ff364d8b460848b840a062080000000048c7c30100000049c7c101000000ff15000400004989c6415648b840a0620800000000ff15e30300004989c64c8b6c24104d89eb4983fd0f7615488d64241848b8004d650800000000488b5d08ff234c8b6424084d89e54983fc0f7615488d64241848b8784d650800000000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb01750c48bb9848650800000000eb1348b89848650800000000ff15f90200004889c34883fb0175075b4883c410eb12488b0424ff15d70200004889c3488d6424184883fb01750b48b83848650800000000c348b83848650800000000ff25a60200004c8b60084c8b50104c8b68184d8b34244d8b4c2408498b5c24104983fd03750c48b87057650800000000eb0a48b880576508000000004d8d47f04c3b45107306ff5550ca09464d89c749c740f8010000004d8930ff342448c744240801000000ff2538020000f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff150f0200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6584883c408c3f4000000000000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000000000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100008000000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@6212,1,@17386,@12583,@12573,@12586,@12587,@12588,@12549,@12574,@12573,@12589,@12590,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12591,@12592,@12549,@12593,@12573,@12567,@12549,@12560,@12597,@12560,@12560,@12598,@12573,@10599,@12606,@12607,@12560,@12573,@12601,@12593,@12573,@12608,@12530,@12593,@12609,@12567,@12530,@12224,@10653,@12593,@12610,@12611,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12224,@10653,@12224,@10653,@12612,@12567,@10653,@12560,@12613,@12567,@10653,@12560,@12573,@12614,@12615,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12601,@12573,@12616,@12560,@12573,@12617,@12560,@12618,@12560,@12573,@12573,@12619,@12560,@12620,@12621,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12622,@12623,@12560,@12624,@12560,@12625,@12560,@12626,@12627,@12560,@12628,@12629,@12560,@12630,@12560,@12631,@12560,@12573,@12632,@12633,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12634,@12567,@10653,@12560,@12573,@12635,@12636,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12601,@12637,@12560,@12638,@12560,@1172,@12639,@12573,@12573,@12640,@12567,@12530,@12224,@10653,@12573,@12601,@12641,@12601,@12601,@12642,@12643,@12560,@12560,@12573,@12644,@12530,@12560,@12645,@12567,@12530,@12224,@10653,@12560,@12646,@12647,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12224,@10653,@12224,@10653,@12648,@12649,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12560,@12601,@12573,@12650,@12567,@12560,@12651,@12573,@12593,@12653,@12567,@12530,@12224,@10653,@12601,@12654,@12655,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12656,@12567,@12530,@10599,@12218,@12560,@12573,@12573,@12573,@12573,@12573,@12593,@12598,@12657,@12658,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12573,@12659,@12530,@12573,@12660,@12567,@12530,@12224,@10653,@12573,@12224,@10653,@12661,@12573,@12573,@12573,@12573,@12582,@12530,@12573|491,0,@6134 516,0,@6137 541,0,@6140 606,0,@6143 633,0,@6146 681,0,@6149 898,0,@6150 965,0,@6151 1109,0,@6152 1600,0,@6155 2115,0,@5288 2132,0,@5372 2445,0,@6158 2455,0,@5372 2627,0,@6105 2858,0,@1268 2868,0,@5372 3312,0,@6125 3632,0,@6105 3866,0,@6114 3956,0,@6159 4023,0,@6160 4084,0,@6161 4182,0,@6162 4741,0,@6162 4781,0,@6125 5101,0,@6105 5237,0,@6163 5416,0,@6105 5534,0,@6164 5598,0,@5372 5615,0,@6165 5713,0,@6098 5821,0,@5372 5831,0,@5392 5886,0,@5392 5957,0,@6166 6002,0,@6168 6338,0,@6105 6760,0,@6168 7096,0,@6105 7221,0,@6169 7400,0,@6105 7514,0,@6170 7707,0,@6168 7787,0,@6166 7815,0,@6171 7877,0,@6172 8121,0,@6068 8174,0,@6173 8297,0,@6069 8364,0,@6163 8543,0,@6105 8719,0,@6164 8783,0,@6174 8793,0,@5372 9083,0,@6174 9117,0,@6128 9215,0,@1823 9250,0,@6175 9306,0,@6168 9335,0,@6168 9671,0,@6105 9815,0,@5372 9825,0,@6176 9842,0,@6168 9867,0,@1098 9981,0,@6105 9997,0,@6098 10041,0,@6177 10197,0,@6125 10514,0,@6105 10802,0,@5372 10812,0,@6177 10970,0,@6178 11104,0,@6179 11240,0,@6098 11281,0,@6180 11449,0,@6180 11612,0,@6099 11648,0,@6180 11772,0,@6100 11804,0,@6180 11937,0,@6180 12083,0,@6179 12419,0,@6105 12557,0,@6180 12718,0,@6180 12730,0,@6179 12843,0,@5372 12853,0,@6181 12878,0,@6181 12952,0,@6179 13112,0,@6180 13124,0,@6179 13218,0,@6179 13252,0,@6182 13286,0,@6183 13314,0,@6184 13347,0,@6180 13589,0,@6114 13610,0,@6185 13661,0,@6188 13704,0,@6168 13733,0,@6168 14069,0,@6105 14213,0,@5372 14223,0,@6176 14240,0,@6168 14265,0,@6118 14379,0,@6105 14395,0,@6098 14531,0,@6114 14571,0,@6125 14722,0,@6105 14738,0,@6098 14851,0,@6191 15271,0,@6194 15311,0,@6125 15631,0,@6105 15770,0,@6195 15942,0,@6105 16062,0,@6196 16248,0,@6194 16276,0,@6194 16303,0,@5392 16321,0,@6162 16338,0,@6197 16348,0,@5372 16376,0,@6168 16579,0,@651 16621,0,@5372 16631,0,@5752 16641,0,@6114 16666,0,@5753 16706,0,@6198 16732,0,@105 16754,0,@6199 16905,0,@6200 16915,0,@1145 16931,0,@6118 16952,0,@6098 17097,0,@6202 17128,0,@6202 17144,0,@6203 17237,0,@6095 17255,0,@6094 17273,0,@6094 17291,0,@6094 17303,0,@6092 17321,0,@6096 17339,0,@6096 17357,0,@6096 17375,0,@6096 17387,0,@6096 17427,0,@6125 17462,0,@6128 17735,0,@6125 18055,0,@6105 18302,0,@6206 18332,0,@1178 18367,0,@1178 18405,0,@6125 18440,0,@6128 18581,0,@6096 18593,0,@6096 18649,0,@6092 18660,0,@6092 18708,0,@6209 18720,0,@6210 12582:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17466| 12583:D10,352|483b65187305ff5558cd095348b8c04b650800000000ff158c0100004989c6415648b8e04865080000000048c7c309000000ff15680100004989c6415648b80058650800000000ff154b0100004989c6415648b80058650800000000ff152e0100004989c6415648b80058650800000000ff15110100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b7424104c89f34983fe0175054889c3eb09ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3f4|@6214,1,@17387,@12585,@12584,@12549,@12549,@12549,@12567,@12549|14,0,@6118 35,0,@6098 63,0,@6213 84,0,@6213 105,0,@6213 12584:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17389| 12585:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17388| 12586:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17390| 12587:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17391| 12588:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17392| 12589:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17393| 12590:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17394| 12591:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17395| 12592:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17396| 12593:D8,1544|483b65187306ff5558ca090150ff33488b5b0841ff304d8b40084c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3848650800000000e98900000049be5048650800000000eb7d49be6848650800000000eb714d89f64d8b76084983fe0d750c49be8048650800000000eb404983fe13750c49be6848650800000000eb2e4983fe03750c49be6848650800000000eb1c4983fe05750c49be6848650800000000eb0a49be3848650800000000eb1649be3848650800000000eb0a49be80486508000000004156488b44241849c7c101000000ff15cf0300004989c641564c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d6000000909090e9da000000909090e90b000000909090e90300000090909049c7c601000000e9c500000049be9848650800000000e9b600000049be9848650800000000e9a700000049be9848650800000000e99800000049be9848650800000000e98900000049be9848650800000000eb7d49be9848650800000000eb714d89f64d8b76084983fe0d750c49be9848650800000000eb404983fe13750c49be9848650800000000eb2e4983fe03750c49be9848650800000000eb1c4983fe05750c49be9848650800000000eb0a49be9848650800000000eb1649be9848650800000000eb0a49be98486508000000004156488b442428ff15450100004989c64c8b6c24204d89eb4983fd0f7615488d64243048b8004d650800000000488b5d08ff234c8b6424184d89e54983fc0f7615488d64243048b8784d650800000000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff156a0000004889c3488d6424084883fb0175035beb12488b0424ff15470000004889c3488d6424084883fb017506584883c418c3584883c418ff2520000000f400000000000000|@6215,1,@17397,@12595,@12596,@12594,@12549,@12574|455,0,@6092 470,0,@6093 482,0,@6094 507,0,@6095 525,0,@6094 543,0,@6094 561,0,@6094 573,0,@6092 585,0,@6092 597,0,@6095 1059,0,@6096 1074,0,@6096 1089,0,@6096 1104,0,@6096 1119,0,@6096 1131,0,@6096 1156,0,@6096 1174,0,@6096 1192,0,@6096 1210,0,@6096 1222,0,@6096 1234,0,@6096 1246,0,@6096 1291,0,@6125 1326,0,@6128 12594:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17400| 12595:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17398| 12596:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17399| 12597:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17401| 12598:D25,1616|483b65187306ff5558ca09014989c54989de415048c7c0010000004881e8000100007002eb1c48c7c00100000048c7c30101000041554156ff15d2060000415e415da801740ef60424017408483b04247f1deb1d488b1c2441554156ff15a6060000415e415d4989c44983fc017e02eb34f604240174124c8b24244981fc010100007d21e9a40400004c8b24244d0fb66424ff4e8d2465010000004983fc230f848804000048c7c001000000482b05950500007002eb1c48c7c001000000488b1d7b05000041554156ff1531060000415e415da8017415f6042401740f483b04247f02eb29488d642408eb20488b1c2441554156ff15fe050000415e415d4989c44983fc017e07488d642408eb40f604240174194c8b24244c3b25190500007d05e994020000488d642408eb214c8b24244d0fb66424ff4e8d2465010000004983fc230f8471020000488d64240841ff364d8b6608498d47e0483b45107306ff5550ca00304989c748c740f80300000048c74010070000004c89680848c700010000004d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c746180100000049c74610030000004d89660849c70601000000498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff15130500004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8004d650800000000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1561040000a801740b4989c64983c6027002eb1048c7c303000000ff153d0400004989c648c7c001000000482b057c0300007002eb1848c7c001000000488b1d620300004156ff150a040000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15dd030000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b350e0300007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c849650800000000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff155003000048c7c309000000ff153b0300004889c34883fb0175035beb12488b0424ff151d0300004889c3488d6424084883fb017506584883c408c3584883c408ff25f60200004983fd05750949c7c00f000000eb434983fd0b750949c7c00d000000eb344983fd09750949c7c00b000000eb254983fd03750949c7c009000000eb164983fd07750949c7c003000000eb0749c7c0010000004c89f348b84852650800000000ff15890200004989c6415648c7c001000000482b05e60100007002eb1448c7c001000000488b1dcc010000ff1556020000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15280200004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b35750100007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c849650800000000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff158a01000048c7c309000000ff15750100004889c34883fb017506584883c408c3584883c408ff25530100004983fd05750949c7c00f000000eb434983fd0b750949c7c00d000000eb344983fd09750949c7c00b000000eb254983fd03750949c7c009000000eb164983fd07750949c7c003000000eb0749c7c0010000004c89f348b868ab620800000000ff15e60000004989c64156f64424080174074c8b742408eb19488b442408ff15c00000004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff2566000000f40000000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@6216,1,@17402,@12600,@12530,@12601,@12604,@12567,@12530,@12224,@10653,@12601,@12605,@12599,@12567,@12530,@12224,@10653,@10599,@12218,@12560,@12224,@10653,@12224,@10653|503,0,@6125 823,0,@6105 1041,0,@6158 1213,0,@6105 1412,0,@1268 12599:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17409| 12600:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17403| 12601:D7,888|483b65187306ff5558ca0901504150ff334c8b43084c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3848650800000000e98900000049be5048650800000000eb7d49be6848650800000000eb714d89f64d8b76084983fe0d750c49be8048650800000000eb404983fe13750c49be6848650800000000eb2e4983fe03750c49be6848650800000000eb1c4983fe05750c49be6848650800000000eb0a49be3848650800000000eb1649be3848650800000000eb0a49be80486508000000004156488b44241848c7c30100000049c7c101000000ff15350100004989c64156488b442420ff151d0100004989c64c8b6c24184d89eb4983fd0f7615488d64242848b8004d650800000000488b5d08ff234c8b6424104d89e54983fc0f7615488d64242848b8784d650800000000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff15420000004889c3488d6424084883fb017506584883c418c3584883c418ff251b000000f40000|@6217,1,@17404,@12603,@12602,@12549,@12574|450,0,@6092 465,0,@6093 477,0,@6094 502,0,@6095 520,0,@6094 538,0,@6094 556,0,@6094 568,0,@6092 580,0,@6092 592,0,@6095 667,0,@6125 702,0,@6128 12602:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17406| 12603:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17405| 12604:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17407| 12605:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17408| 12606:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17410| 12607:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17411| 12608:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17412| 12609:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17413| 12610:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17414| 12611:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17415| 12612:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17416| 12613:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17417| 12614:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17418| 12615:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17419| 12616:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17420| 12617:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17421| 12618:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e858650800000000c3f4000000|@1032,1,@17422|75,0,@6218 12619:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17423| 12620:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17424| 12621:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17425| 12622:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17426| 12623:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17427| 12624:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17428| 12625:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17429| 12626:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17430| 12627:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17431| 12628:D3,80|49bbe004b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@6219,1,@17432|2,0,@45 12629:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17433| 12630:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17434| 12631:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17435| 12632:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17436| 12633:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17437| 12634:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17438| 12635:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17439| 12636:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17440| 12637:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b860fe620800000000c3f4000000|@1032,1,@17441|75,0,@1823 12638:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17442| 12639:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17443| 12640:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17444| 12641:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17445| 12642:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17446| 12643:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17447| 12644:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17448| 12645:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17449| 12646:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17450| 12647:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17451| 12648:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17452| 12649:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17453| 12650:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17454| 12651:D5,520|483b65187305ff5558cd094989dd4883f801750948c7c3a1000000eb164883f805750948c7c3c1000000eb0748c7c3b100000049c7c60100000041f6c50175674d8b5d004d8b65084d8b53084983fa03751b498b0b4883c110711048b8d006620800000000488b5d08ff23eb03498b0b4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bde4d89de4d89e5483b65187306ff5558ca0860eb9341566a0148b8005365080000000049b8085665080000000049b958e464080000000049c7c205000000ff15520100004c8b2c244d89ee4981fd010200000f82970000004d89f54d89ee4981e5ff0100004d89f6488d64240849c1ee084983ce014981e6ff0100004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730848c70395010000eb754d89f64d89f54983fe01745d4d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730848c7039b010000eb0c488d64240848c7c3010000004883fb017501c3ff251d000000f400000000|@6220,1,@17455,@12652,@12573|93,0,@105 173,0,@6168 183,0,@6197 193,0,@5372 12652:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17456| 12653:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17457| 12654:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17458| 12655:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17459| 12656:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17460| 12657:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17461| 12658:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17462| 12659:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17463| 12660:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17464| 12661:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b85059650800000000c3f4000000|@1032,1,@17465|75,0,@6221 12662:D9,2592|483b65187306ff5558ca0903534151a8010f85c50000004c8b30ff70084d8b2e4d89ec4983fd59751958488b5c24084159488d64240849c7c001000000e9beffffff4d89e54983fc03752b4d8b6e084d8b66104983f8037515488d64241848b86859650800000000488b5d08ff234d89e6e9830400004983fd01752c4d8b5e084d8b6e104d8b66184983f8037515488d64241848b8005a650800000000488b5d08ff234d89e6eb3b498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c8b6c24104c896b084c8933584159488d642408e924ffffff488d64240858c341f6c60175604d8b0e4d8b56084d3bcd7502eb494d8b01498b7d004c3bc7751f4d8b49084d8b45084d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374114d89d6483b65187306ff5558ca0078eba349c7c603000000eb0749c7c6010000004983fe037515488d64241848b8585a650800000000488b5d08ff234983c3027115488d64241848b8d006620800000000488b5d08ff234983eb014d6bdb087115488d64241848b8d006620800000000488b5d08ff234983c30149c7c6010000004d2bf37115488d64241848b8d006620800000000488b5d08ff234983c6014d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004d896b204d89731849be58e46408000000004d89731049bed85a6508000000004d89730849c703370000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e41564d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bb005b6508000000004d895e184d896e1049c746080500000049c7060900000041564c8b5424184d8b1a4d89de4d89d24983c6027115488d64242848b8d006620800000000488b5d08ff234d89d24d89324d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618050000004d895e1049c746081100000049c70611000000498d47e8483b45107306ff5550ca00784989c748c740f80200000048c74008010000004c89304d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89661049c746080100000049c7060f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424310000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703070000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d895d1049bbe85a6508000000004d895d0849c745003f0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c6eb09ff152d0600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff15e30500004989c6488d64240848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054889c3eb09ff156d0500004889c358415949c7c0030000004883c408e907fbffff41f6c60175604d8b164d8b5e084d3bd57502eb494d8b0a4d8b45004d3bc8751f4d8b52084d8b4d084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374114d89de483b65187306ff5558ca0070eba349c7c603000000eb0749c7c6010000004983fe037515488d64241848b8285b650800000000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004d896b0849c703430000004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049ba805b6508000000004d8956184d896e1049c746080100000049c706090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bb005b6508000000004d895e184d896e1049c746080500000049c7060900000041564c8b4c24184d8b194d89de4d89c94983c6027115488d64242848b8d006620800000000488b5d08ff234d89c94d89ca4d89314d89d2498b3a4989fe4d89d24983c6027115488d64242848b8d006620800000000488b5d08ff234d89d24d89324d8d77d84c3b75107306ff5550ca80384d89f749c746f80400000049c746180300000049897e1049c746080300000049c706110000004d8d4fd84c3b4d107306ff5550ca80784d89cf49c741f80400000049ba805b6508000000004d8951184d89691049c741080500000049c701090000004d8d57d84c3b55107306ff5550ca807a4d89d749c742f80400000049c74218050000004d895a1049c742080300000049c702110000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f8020000004989780849c70031000000498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8942084d890a498d47e8483b45107306ff5550ca007c4989c748c740f8020000004c8950084c89304d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89661049c746080100000049c7060f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424310000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703070000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d895d1049bbe85a6508000000004d895d0849c745003f0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c6eb09ff15f60000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff15ac0000004989c6488d64240848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054889c3eb09ff15360000004889c358415949c7c0030000004883c408e9e8f5fffff400000000000000|@6238,1,@17468,@12664,@12665,@12666,@12667,@12668,@12663|96,0,@6222 149,0,@6225 349,0,@6227 376,0,@105 407,0,@105 444,0,@105 499,0,@5372 513,0,@6230 601,0,@6232 661,0,@105 931,0,@6231 1395,0,@6233 1476,0,@6235 1610,0,@6232 1670,0,@105 1718,0,@105 1821,0,@6235 2242,0,@6231 12663:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17474| 12664:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17469| 12665:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17470| 12666:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17471| 12667:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17472| 12668:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17473| 12669:D3,552|483b65187306ff5558ca09014c8b334d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9aa000000909090e9ae000000909090e9af000000909090e9fc000000909090e9200100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca01614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01314d89f749c746f8020000004d8966084d892ee9cc0000004d8b6e104d8d77e84c3b75107306ff5550ca01214d89f749c746f80200000049c74608010000004d892ee99d00000049c7c601000000e9910000004d8b7608e9880000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca01614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01314d89f749c746f8020000004d8966084d892eeb334d8b6e084d8d77e84c3b75107306ff5550ca01214d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041f6c6010f85930000004d8b1e4d8b6e084d8b60f84d89e249c1e40849c1ec074983cc014d3bdc721048b81051620800000000488b5d08ff234f8b4c98fc4d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d894c24084989042449c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234f896498fc4d89ee483b65187306ff5558ca0141e963ffffff48c7c001000000c3f40000000000|@6239,1,@17475|424,0,@625 499,0,@664 12670:D9,7352|483b65187306ff5558ca090753415041514152488b5c2408ff15da1c00004989c64156f60424010f85100200004c8b34244d8b2e4c8b7424204d8b264c8d1d080000004f8d5ca3fc41ffe3e933000000909090e9b7000000909090e9bb000000909090e9b3000000909090e9b7000000909090e934010000909090e9b10100009090904d89f64d8b66104d89f64d8b5e204c8b7424104d8b56f849c1e20849c1ea074983ca014d3bda7215488d64242848b81051620800000000488b5d08ff234d89f64f8b749efc4983fe03743c4c8b7424084d8b56f849c1e20849c1ea074983ca014d3bda7215488d64242848b81051620800000000488b5d08ff234d89f64f8b749efce9101b0000e9f519000049c7c601000000e9e406000049c7c601000000e9d80600004d89f64d8b66104c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fc4983fe03743c4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fce9c9180000e9b81800004d89f64d8b66084c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fc4983fe03743c4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fce9a4170000e99317000049c7c601000000e9c2050000488d6424184c8b7424084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e949020000909090e946030000909090e93e030000909090e942030000909090e93f040000909090e9390500009090904d89f64d8b56104d89f64d8b6e184d89f64d8b5e204c8b7424684d8b76f849c1e60849c1ee074983ce014d3bde7215488d64241048b81051620800000000488b5d08ff234c8b7424684f8b649efc4983fcff756e4c8b7424604d8b264c8b7424604d8b364983c6027115488d64241048b8d006620800000000488b5d08ff234c8b4c24604d89314c8b7424684d8b76f849c1e60849c1ee074983ce014d3bde7215488d64241048b80057620800000000488b5d08ff234c8b7424684f89649efceb004d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706670000004c8b6424684d8b6424f849c1e40849c1ec074983cc014d3bd47215488d64241048b81051620800000000488b5d08ff234c8b6424684f8b5c94fc4983fbff75714c8b6424604d8b1c244c8b6424604d8b24244983c4027115488d64241048b8d006620800000000488b5d08ff234c8b4c24604d89214c8b6424684d8b6424f849c1e40849c1ec074983cc014d3bd47215488d64241048b80057620800000000488b5d08ff234c8b6424684f895c94fceb004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418010000004d895c24104d896c240849c70424110000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e91f0300004d89f64d8b66104c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81051620800000000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d006620800000000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80057620800000000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e91a02000048c7c001000000e90e0200004d89f64d8b66104c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81051620800000000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d006620800000000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80057620800000000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9090100004d89f64d8b66084c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81051620800000000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d006620800000000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80057620800000000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b34244c89f34983fe017508488d642410c258004889db488d6424084c8b7424084c897424604883c460ff25f11400004983fe0175094c8b3424e9b11000004d8b2e4c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242848b80057620800000000488b5d08ff234d89f64bc744aefc030000004c8b7424204d8b1e4d89dc4983fb010f85140500004d89f64d8b4e104d89f64d8b66184d89f64d8b56204d3bea0f85160100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bce7215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b5c8efc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bce7215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f895c8efceb004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618010000004d895e104d89660849c70611000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9db0300004d3be90f85bd0100004c8d35080000004f8d7426ff41ffe6eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb67eb6eeb7549c7c40f000000eb7349c7c411000000eb6a49c7c413000000eb6149c7c40d000000eb5849c7c40b000000eb4f49c7c409000000eb4649c7c407000000eb3d49c7c401000000eb3449c7c403000000eb2b49c7c405000000eb2249c7c419000000eb1949c7c41b000000eb1049c7c415000000eb0749c7c4170000004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b5c96fc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b4c24784d89314c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f895c96fceb004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618010000004d895e104d89660849c70611000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9150200004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b5c96fc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b4424784d89304c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f895c96fceb004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d895e0849c706670000004c8b9c24800000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64242848b81051620800000000488b5d08ff234c8b9c24800000004f8b548bfc4983faff75744c8b5c24784d8b134c8b5c24784d8b1b4983c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424784d89184c8b9c24800000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64242848b80057620800000000488b5d08ff234c8b9c24800000004f89548bfceb004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049c74318010000004d8953104d89630849c703110000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c8930e9970300004d89f64d89e34983fc090f85220100004d89f64d8b5e104d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9650200004d89f64d89dc4983fb030f85220100004d89f64d8b5e104d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9330100004d89f64983fc0b0f851f0100004d89f64d8b5e084d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80057620800000000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424204d8b264c8d1d080000004f8d5ca3fc41ffe3e933000000909090e965010000909090e9f5010000909090e908020000909090e90c020000909090e910020000909090e99d0200009090904d89f64d8b5e104d89f64d8b66204d3bdd7405e9880000004c8b7424084d8b56f849c1e20849c1ea074983ca014d3bea7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b56084983fa01750949c7c203000000eb0749c7c2010000004983fa03751a4d8b364d3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f848e0000004d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c603000000e9670100004d89f64d8b66104d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000e9cf0000004983fd01750949c7c603000000eb0749c7c601000000e9b400000049c7c601000000e9a800000049c7c601000000e99c0000004d89f64d8b66084d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe03750c49c7c601000000e90a0100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81051620800000000488b5d08ff234c8bb424800000004f8b74aefc4983feff75764c8b7424784d8b364c8b6424784d8b24244983c4027115488d64242848b8d006620800000000488b5d08ff234c8b5c24784d89234c8ba424800000004d8b6424f849c1e40849c1ec074983cc014d3bec7215488d64242848b80057620800000000488b5d08ff234c8ba424800000004f8974acfceb004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c70424310000004d8d77e84c3b75107306ff5550ca01304d89f749c746f80200000049c74608010000004d892641564c8b7424784d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b89051620800000000488b5d08ff234c8b7424784f8b74aefc41ff3641ff76084c8b7424304c89f34983fe0175054889c3eb09ff15750700004889c34883fb0175074c8b742410eb0e488b442410ff15520700004989c6ff34244156f6442408010f85940000004c8b742408498b064d89f641ff7608488bb42498000000488b9424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b8424b0000000488bbc24a80000004156415541544153415241514150574989d24989f1488b5c24484c8b442460ff15bf0600004989c4415d4c8924244c896c2408483b65187303ff5558e961ffffffff34244c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e987000000909090e9b1000000909090e9b5000000909090e9b9000000909090e90a010000909090e9310100009090904d89f64d8b66104d89f64d8b76204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e9d90000004d89f64d8b7610498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9a700000048c7c001000000e99b0000004d89f6498b4608e98f0000004d89f54d8b75084d89ed4d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb364d89f64d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424304c89f34983fe0175054989c6eb09ff15fb0400004989c64156ff742428ff742410ff742458488b4424584c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c248000000048899c2480000000488b5c241048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424084c898c24b00000004c8b0c244c899424b80000004989c2488b4424184c899c24c00000004c89a424c80000004c89ac24d00000004883c478e946e7ffff488d64242841f6c60175404d8b1e4d8b66084c8b5424084d8b4af849c1e10849c1e9074983c9014d3bd97215488d64242848b81051620800000000488b5d08ff234d89d24f8b549afceb1749c7c6010000004983fe017502eb034d8b2ee9f5eeffff41f6c201755e498b3a4d8b4a084c8b442410498b70f848c1e60848c1ee074883ce01483bfe7215488d64242848b81051620800000000488b5d08ff234d89c04d8b44b8fc4983f80375114d89ca483b65187306ff5558ca007ceba549c7c201000000eb0749c7c2030000004983fa0375234d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee95cffffff4d89e6483b65187306ff5558ca0060e9fbfeffff49c7c601000000e92feeffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81051620800000000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff49c7c601000000e98fedffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81051620800000000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff4c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fc4983fe0374394c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81051620800000000488b5d08ff234d89f64f8b74a6fceb0c49c7c601000000e979ecffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81051620800000000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff41f6c601755e4d8b064d8b56084c8b4c2410498b79f848c1e70848c1ef074883cf014c3bc77215488d64242848b81051620800000000488b5d08ff234d89c94f8b4c81fc4983f90375114d89d6483b65187306ff5558ca0078eba549c7c601000000eb0749c7c6030000004983fe030f8575feffff4d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee9cffefffff40000000000|@6240,1,@17476,@12672,@12673,@12728,@12729,@12730,@12671|178,0,@625 239,0,@625 335,0,@625 396,0,@625 468,0,@625 529,0,@625 711,0,@625 770,0,@105 825,0,@664 923,0,@625 984,0,@105 1040,0,@664 1239,0,@625 1298,0,@105 1353,0,@664 1512,0,@625 1571,0,@105 1626,0,@664 1773,0,@625 1832,0,@105 1887,0,@664 2098,0,@664 2211,0,@625 2273,0,@105 2331,0,@664 2665,0,@625 2727,0,@105 2785,0,@664 2943,0,@625 3005,0,@105 3063,0,@664 3166,0,@625 3228,0,@105 3286,0,@664 3521,0,@625 3583,0,@105 3641,0,@664 3827,0,@625 3889,0,@105 3947,0,@664 4130,0,@625 4192,0,@105 4250,0,@664 4500,0,@625 4650,0,@625 4811,0,@625 5014,0,@625 5170,0,@625 5233,0,@105 5292,0,@664 5435,0,@628 6381,0,@625 6474,0,@625 6654,0,@625 6814,0,@625 6949,0,@625 7010,0,@625 7092,0,@625 7240,0,@625 12671:D3,160|483b65187305ff5558cd09a8010f8583000000ff30488b40084c8b63f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64240848b81051620800000000488b5d08ff234d89f64e8b74b3fc4983fe037434e8a3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e96affffff48c7c001000000c3f400|@523,1,@17536|60,0,@625 12672:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17477| 12673:D121,27424|483b65187306ff5558ca09075341514c8b70084d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e912020000909090e939050000909090e9a20d0000909090e9b20e0000909090e9df0e0000909090e927110000909090e9fb140000909090e90b180000909090e9c91b0000909090e9f11d0000909090e91f220000909090e9c3220000909090e976270000909090e9a8270000909090e93a2b0000909090e9992d0000909090e9e1320000909090e9b2360000909090e96e370000909090e91b380000909090e9843d0000909090e9bb3e0000909090e90d410000909090e974410000909090e958420000909090e9b1420000909090e929430000909090e995440000909090e962450000909090e9b1470000909090e99e480000909090e9664f0000909090e943560000909090e9d2560000909090e966580000909090e9b2590000909090e9f45a0000909090e9eb5f0000909090e9ba600000909090e961620000909090e92f640000909090e947650000909090e9a266000090909041ff760841ff761041ff7618498b4620488b5c24584c8b442418ff153b6d00004989c54c8b7424184d8b56f849c1e20849c1ea074983ca014c8b5c24104d89dc4d3bda7215488d64242848b89051620800000000488b5d08ff234d89e44d89f64f8b74a6fc498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c8b2c244c896808488d6424184c89305b4c8b4424284c8b4c24204c8b34244c897424404883c440ff25946c000041ff760841ff7610498b4618488b5c24504c8b442410ff15706c00004989c24c8b7424104d8b5ef84d89d949c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242048b89051620800000000488b5d08ff234d89ed4d89f64f8b6caefc488d6424084d8b65004983fc030f85a40200004d8b5d084d89f649c1e10849c1e9074983c9014c8b24244d89e54d3be17215488d64241848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc488d6424104d8b2e4983fd030f853e0200004d8b4e084d3bd97507488d642408eb3c4d8b334d8b294d3bf5751f4d8b73084d8b69084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64240848b8c05c650800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca000e4d89ef49c745f80300000049c74510f1ffffff49be58e46408000000004d8975084d894d004d8d77e04c3b75107306ff5550ca002e4d89f749c746f8030000004d895e104d896e0849c706610000004d8d67d84c3b65107306ff5550ca004e4d89e749c74424f80400000049c7442418050000004d895c241049c74424080300000049c70424510000004d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d8955104d894d0849c74500030000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a0849c702050000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b2049c74318090000004d89531049c743080100000049c703370000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244c89f34983fe017508488d642408c240004889db488d6424084c8b34244c897424404883c440ff257f690000488d64240848b8901a650800000000488b5d08ff23488d64241848b8901a650800000000488b5d08ff234d8b760841ff364c8b2c244d89ec4983fd090f85d3020000488d642408498b46184d8b6e104d8b56204c8b1c244d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241048b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64241848b89051620800000000488b5d08ff234d89f64d89f043ff74aefc4c8b7424084d8b2e4983fd030f852b0200004d89f641ff7608488b5c2468ff15906800004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080900000049c7060900000041564c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cd0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb5a4d89f64983fd0575514c8b6c24104d8b65004983fc0575404d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742420eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2420ff15a46600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b8901a650800000000488b5d08ff23498b46184c8b284983fd090f85da0200004c8b50084d8b6e104d8b5e204c8b7424084d8b4ef84d89c849c1e10849c1e9074983c9014d3bd97215488d64241848b89051620800000000488b5d08ff234d89f64f8b5c9efc4d8b0b4983f9030f85720200004d8b5b084d89f64d89c149c1e00849c1e8074983c8014d3be87215488d64241848b89051620800000000488b5d08ff234d89f64f8b6caefc4d8b45004983f8030f85170200004d8b6d084d89f649c1e10849c1e9074983c9014d3bd17215488d64241848b89051620800000000488b5d08ff234d89f64f8b7496fc4d8b164983fa030f85c00100004d8b76086a016a014d3beb7505e9170100004d8b55004d8b034d89c14d3bd0751f4d8b55084d8b43084d3bd0750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84d80000004d3bf37505e9be0000004d8b164d3bd1751f4d8b56084d8b4b084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84860000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c702070000004d89d54d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d896a104d895a0849c7023f0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004c8b4c24204d894d084d8955004c8934244c896c2408eb0e4c892c244c8b7424204c89742408eb0e4c8934244c8b7424204c89742408415e415d4d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89720849c702070000004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d89e44d896608488d64240849c70609000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c24000488d64241848b8901a650800000000488b5d08ff23488d64241848b8901a650800000000488b5d08ff23488d64241848b8901a650800000000488b5d08ff234d8b6e104d8b56204c8b5c24084d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89051620800000000488b5d08ff234d89f64d89f043ff74aefc488b5c2468ff15e36200004989c24c8b4c24084d8b314d89f34983fe030f85ea0100004d89c94d8b69084d89ec4d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d8956184d896e104c8b6c24104d896e0849c7060900000041564c8b5424084d89d64d3bd17505e9f90000004d89f64d8b164d89d14983fa0175424983fb0175374d89f64d8b76084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb05e9ad000000e9b10000004d89f64d89ca4983f90375584983fb0375504d89f64d8b76084d3bf4750949c7c603000000eb334d8b2e4d8b1c244d3beb75204d8b76084d8b6c24084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb46eb4d4d89f64983fa0575444983fb05753c4d89f64d8b76084d89e54d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742428eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2428ff150e6100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c428c24000488d64242848b8901a650800000000488b5d08ff234d8b6e084d8b66104c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3bea7215488d64241048b89051620800000000488b5d08ff234d89f64f8b6caefc4d8b55004983fa030f85b40000004d8b6d084d89f649c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc03755c4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8901a650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff23498b4608488b1c24ff15965f0000488d642408ff15835f0000415848c7c3010000004c8b34244c897424404883c440ff255f5f00004d8b66084d8b76104c8b2c244d8b55f84d89d349c1e20849c1ea074983ca014d3bf27215488d64241048b89051620800000000488b5d08ff234d89ed4f8b74b5fc4d89ed49c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89ed4f8b6ca5fc488d6424084d8b65004983fc030f85b60100004d8b65084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bb505d6508000000004d895d0849c74500610000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703450000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849ba705d6508000000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bcb85d6508000000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4c3b35c15d00007502eb544d8b2e4983fd0375514d8b6e084c3b2da15d0000750949c7c503000000eb2d4d8b65004983fc01751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037402eb064889d8c24000498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdd85d6508000000004c89681048c740080b0000004c89304c8b34244c897424404883c440ff250c5d0000488d64240848b8901a650800000000488b5d08ff234d8b6e084d8b4e104d8b56184d8b76204983fe03750949c7c403000000eb0749c7c4050000004d8d77e84c3b75107306ff5550ca00364d89f749c746f8020000004d89660849c7064b00000041564c8b6424084d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241848b89051620800000000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64242048b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242848b89051620800000000488b5d08ff234d89f64f8b6caefc4c3b2df45b00007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35c85b0000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2420eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be085e6508000000004c8930488b5c2420ff15175b00004889c34c8b2c244d89ee4c3b2dfe5a00007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b35c55a0000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be205e6508000000004c8930ff15115a00004889c34c8b2c244d89ee4c3b2df85900007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b35bf590000750949c7c603000000eb2c4d8b2e4983fd0d751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424084989deeb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be505e6508000000004c8930ff15085900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c2400041ff760841ff761041ff7618498b46204c8b7424584d8b66f849c1e40849c1ec074983cc014c8b7424104d89f54d3bf47215488d64242848b81051620800000000488b5d08ff234c8b7424584d89ed4f8b74aefc4983fe037409488d64242058c24000488b5c24584c8b442418ff15585800004989c641566a016a016a014c8b6c24204d89ee4983fd03755d4c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c744241007000000e9bb0000004d89f64983fe05755a4c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c744241007000000eb584c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c74424100b0000004c8b3424ff742408488b5c24184c8b6c24404d8b55f849c1e20849c1ea074983ca014c8b5c24384d89dc4d3bda7215488d64245048b89051620800000000488b5d08ff234d89e44d89ed43ff74a5fc4d8d57e84c3b55107306ff5550ca08404d89d749c742f8020000004d89720849c702070000004c8b34244d8b2e4983fd030f85d90000004d89f6498b460849b858e464080000000049c7c101000000ff157b5600004989c64156498d47d8483b45107303ff55504989c748c740f8040000004c8b7424304c89701848c74010030000004c8b7424104c8970084c8b7424084c89304c8b8424880000004c8b8c2480000000488b5c2458ff15195600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be685e6508000000004c89304883c448c24000488d64245848b8901a650800000000488b5d08ff234d8b6e104d8b4e184d8b56204c8b24244d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241048b89051620800000000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89051620800000000488b5d08ff234d89f64f8b6caefc4c3b2de35400007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35b7540000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2418eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be085e6508000000004c8930488b5c2418ff15065400004889c34c8b2c244d89ee4c3b2ded5300007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b35b4530000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be205e6508000000004c8930ff15005300004889c34c8b2c244d89ee4c3b2de75200007507488d642418eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b35ae520000750949c7c603000000eb2c4d8b2e4983fd0d751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424184989ddeb6f4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be505e6508000000004c8930ff15f75100004989c54883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd785e6508000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb85e6508000000004c8930c240004d8b4e084d8b6e104d8b5e184c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81051620800000000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b24244d8b7424f84d89f249c1e60849c1ee074983ce014d3bce7215488d64241048b89051620800000000488b5d08ff234d89e44f8b748cfc4d89e449c1e20849c1ea074983ca014d3bda7215488d64241048b89051620800000000488b5d08ff234d89e44f8b5c9cfc488d6424084d3bde7505e9f90000004d8b234d89e24983fc0175464d8b264983fc0175384d8b63084d8b56084d3be2750949c7c403000000eb154d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb05e9ac000000e9ad0000004d89d44983fa03755c4d8b264983fc0375514d8b63084d8b56084d3be2750949c7c403000000eb334d8b0c244d8b024d3bc875204d8b6424084d8b52084d3be2750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037502eb44eb484983fc0575424d8b264983fc0575374d8b63084d8b56084d3be2750949c7c403000000eb154d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb0458c24000eb004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c7042407000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c89305b4c8b34244c897424404883c440ff255d4f00004d8b7608498b0641ff76104d8b4e084d8b56184d8b6e204c8b6424084d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241848b89051620800000000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64242048b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242848b89051620800000000488b5d08ff234d89f64d89f043ff74aefc488b5c2448ff158a4e00004989c64d8b2e4983fd070f85460300004d8b66084d89e54d8b24244983fc03750949c7c403000000eb0749c7c4010000004983fc030f85140300004d89ee4d8b6e084c3b2d394e00007507488d642430eb3b4d8b65004d89e64983fc01751c4d8b65084983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037507488d642430eb444c3b2de44d00007507488d642430eb344983fe05751c4d8b75084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64243048b8d05e650800000000488b5d08ff234c8b7424184d89f44983fe03750c49be1856650800000000eb0a49be505f65080000000041564d8d5fe84c3b5d107306ff5550ca00304d89df49c743f80200000049bef05d6508000000004d8973084c8b7424104d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049baa89e6208000000004d8956084c8b5424084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e0849c7061500000041564c8b6c24284d89ee4c3b2d7f4c00007502eb654d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b354b4c0000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375074c8b742440eb6a4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049bef05d6508000000004c8930488b5c2440ff15984b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408ff152d4b00004158488d64241048c7c3010000004c8b7424304c897424704883c470ff25034b0000488d642430eb05488d64243048b8905f650800000000488b5d08ff234d8b7608498b460841ff761041ff761841ff762041ff36ff15c24a00004989c64156488b442410ff15aa4a00004989c641564c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b89051620800000000488b5d08ff234d89ed4d89f64d89f143ff74aefc4c8b942488000000488b44240848c7c3010000004c8b442440ff15394a00004989c6415649c7c6010000004c8b6c2410e92e4600004d8b6e084d8b66104c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3bea7215488d64241048b89051620800000000488b5d08ff234d89f64f8b6caefc4d89f649c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d3bee750a488d642408e9070100004d8b65004d89e34983fc0175494d8b264983fc01753b4d8b65084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc03750a488d642408e9b6000000e9c30000004d89dc4983fb0375634d8b264983fc0375584d8b65084d8b5e084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037402eb07488d642408eb47eb574983fc0575514d8b264983fc0575464d8b65084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037515488d64240848b80860650800000000488b5d08ff23eb004d8b65004983fc030f85f902000041ff75084d8b2e4983fd030f85d302000041ff76084c8b6c24084d89ee4c3b2c247507488d642418eb4a4d89f64d8b264c8b2c244d8b5d004d3be375254d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64241848b89860650800000000488b5d08ff234d8b304983fe070f853e020000498b4008488b5c24284c8b442420ff15c94700004989c54c8b7424204d8b0e4c8b7424204d8b364983c6027115488d64241848b8d006620800000000488b5d08ff234c8b6424204d89342449c7c6030000004d8d47f04c3b45107306ff5550ca00624d89c749c740f80100000041c640ff404d89304d8d77e04c3b75107306ff5550ca00234d89f749c746f8030000004d8946104d896e0849c706330000004d8d67e84c3b65107306ff5550ca00434d89e749c74424f8020000004d894c240849c70424310000004d8d5fe84c3b5d107306ff5550ca00534d89df49c743f8020000004c8b2c244d89ea4d896b0849c703030000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500350000004d8d5fd84c3b5d107306ff5550ca00774d89df49c743f8040000004d8943184c8b4424084d8943104d89d24d89d04d89530849c7032f0000004d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d89c04d894210488d6424104d894a0849c702390000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b04244d894108488d6424084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c24000488d64241848b8f060650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff23488d64240848b8901a650800000000488b5d08ff23488d642408498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849be685e6508000000004c8930c240004d8b56084d8b4e104d8b6e184c8b24244d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241048b89051620800000000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89051620800000000488b5d08ff234d89f64f8b6caefc4c3b2d664400007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b353a440000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2418eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be085e6508000000004c8930488b5c2418ff15894300004889c34c8b2c244d89ee4c3b2d704300007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b3537430000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be205e6508000000004c8930ff15834200004889c34c8b2c244d89ee4c3b2d6a4200007507488d642418eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b3531420000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424184989deeb6f4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049bef05d6508000000004c8930ff157a4100004989c64883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be80616508000000004c8930c2400041ff76084d8b6e10498b461841ff76204983fd01750949c7c601000000eb594d8b6d004c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b89051620800000000488b5d08ff234d89f64f8b6caefc4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e41564c8b442440488b5c2418ff15b24000004989c641564c8b442448488b442418488b5c2420ff15904000004989c64156f6442418010f85540100004c8b742418498b06488b5c24684c8b442428ff15604000004989c44c8b7424404d8b1e4c8b7424404d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6c24404d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c74500310000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89661049c746080300000049c7060f0000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418050000004d895c241049c74424081100000049c70424110000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba081f6508000000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb0749c7c60100000041564c8b7424084c89f34983fe017507488b442410eb0b488b442410ff15f33e0000488b5c24184c8b442438ff15db3e00004889c34883fb017508584883c438c24000584c8b7424384c897424784883c478ff25ad3e00004d8b660841ff7610498b46184c8b7424484d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81051620800000000488b5d08ff234c8b7424484f8b74a6fc4983fe037409488d64241058c240004c8b7424084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37215488d64241848b89051620800000000488b5d08ff234d89f64d89f043ff74a6fc4c8b204d89e64983fc070f856d0200004c8b701041f6c6010f85090200004d8b264c8b5c24084d89de4983fb07750949c7c607000000eb194d89f64983fe09750949c7c607000000eb0749c7c60b0000004d89c049c1e50849c1ed074983cd014d3be57215488d64242048b89051620800000000488b5d08ff234d89c04f8b64a0fc4c3b2424750a488d642418e9200100004d8b2c244d89eb4983fd0175534c8b1c244d8b2b4983fd0175414d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb0a488d642418e9c5000000e9c60000004d89dd4983fb0375684c8b1c244d8b2b4983fd0375594d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037507488d642418eb51eb554983fd05754f4c8b1c244d8b2b4983fd0575404d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb09488d64241858c24000eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c8970084c8b34244c8930488d642408488b5c24104c8b7424184c897424584883c458ff25ed3b0000488b5c2438ff15da3b00004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d6424185b4c8b34244c897424404883c440ff25873b00004983fe090f85e20100004c8b70084d89c049c1e50849c1ed074983cd014d3bf57215488d64242048b89051620800000000488b5d08ff234d89c04f8b6cb0fc4c3b2c24750a488d642418e9240100004d8b75004d89f44983fe0175544c8b24244d8b34244983fe0175414d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb0a488d642418e9c8000000e9c90000004d89e64983fc03756a4c8b24244d8b34244983fe03755a4d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb334d8b1e4d8b14244d3bda75204d8b76084d8b6424084d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642418eb52eb564983fe0575504c8b24244d8b34244983fe0575404d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb09488d64241858c24000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d642410488b5c24084c8b7424104c897424504883c450ff2593390000488b5c2438ff15803900004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d6424185b4c8b34244c897424404883c440ff252d3900004d8b6e084d8b56104d8b66184d8b5e204c8b34244d8b46f84d89c149c1e00849c1e8074983c8014d3bd07215488d64241048b89051620800000000488b5d08ff234d89f64f8b5496fc4d8b024983f8030f856e0300004d8b52084983fd01750949c7c501000000eb654d8b6d004d89f649c1e10849c1e9074983c9014d3be97215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd030f85040300004d8b76084d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d8975004d8b0c244d89ce4983f9070f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042407000000e9f5010000488d64240848b8901a650800000000488b5d08ff234d89f14983fe050f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042405000000e958010000488d64240848b8901a650800000000488b5d08ff234d89ce4983f9030f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042403000000e9bb000000488d64240848b8901a650800000000488b5d08ff234983fe010f858d0000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc03752f4d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042401000000eb24488d64240848b8901a650800000000488b5d08ff23488d64240849bc58e46408000000004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c70637000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b8901a650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff234d8b66084d8b76104d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89751849be58e46408000000004d89751049bec81e6508000000004d89750849c74500030000004c8b34244d8b5ef849c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89f64f8b74a6fc488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c89305b4c8b34244c897424404883c440ff25883400004d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd0375584d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7063d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8901a650800000000488b5d08ff234d8b6e10498b46184d8b56204c8b304983fe090f85cf0200004c8b58084c8b34244d8b66f84d89e149c1e40849c1ec074983cc014d3bd47215488d64241048b89051620800000000488b5d08ff234d89f64f8b6496fc4d8b14244983fa030f856f0200004d8b6424084d89f64d89ca49c1e10849c1e9074983c9014d3be97215488d64241048b89051620800000000488b5d08ff234d89f64f8b6caefc4d8b4d004983f9030f85130200004d8b6d084d89f649c1e20849c1ea074983ca014d3bda7215488d64241048b89051620800000000488b5d08ff234d89f64f8b749efc488d6424084d8b1e4983fb030f85b70100004d8b76086a016a014d3bec7505e91a0100004d8b5d004d8b0c244d89ca4d3bd975204d8b5d084d8b4c24084d3bd9750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84d90000004d3bf47505e9bf0000004d8b1e4d3bda75204d8b5e084d8b5424084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84860000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004d89dd4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d896b104d89630849c7033f0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004c8b5424104d8955084d895d004c8934244c896c2408eb0e4c892c244c8b7424104c89742408eb0e4c8934244c8b7424104c89742408415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703070000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70641000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c408c24000488d64240848b8901a650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff234c8b1c244d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241048b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64241848b89051620800000000488b5d08ff234d89f64d89f043ff74aefc488b5c2460ff15683000004989c24c8b4c24084d8b314d89f34983fe030f85e10100004d89c94d8b69084d89ec4d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d8956104d896e0849c7064100000041564c8b5424084d89d64d3bd17505e9f90000004d89f64d8b164d89d14983fa0175424983fb0175374d89f64d8b76084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb05e9ad000000e9b10000004d89f64d89ca4983f90375584983fb0375504d89f64d8b76084d3bf4750949c7c603000000eb334d8b2e4d8b1c244d3beb75204d8b76084d8b6c24084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb46eb4d4d89f64983fa0575444983fb05753c4d89f64d8b76084d89e54d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742420eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2420ff159c2e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b8901a650800000000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85de0000004d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bc505d6508000000004d89660849c706610000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424450000004d8d5fe84c3b5d107306ff5550ca00504d89df49c743f8020000004c8b2c244d896b08488d64240849bdb85d6508000000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c24000488d64240848b8901a650800000000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85f90100004d8b5e084d8b304983fe090f85d30100004d8b68084c8b7424184d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b81051620800000000488b5d08ff234c8b7424184f8b64aefc4983fcff756e4c8b7424104d8b264c8b7424104d8b364983c6027115488d64240848b8d006620800000000488b5d08ff234c8b5424104d89324c8b7424184d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b80057620800000000488b5d08ff234c8b7424184f8964aefceb004d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d895e0849c706070000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500470000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c706390000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d64240849bc98616508000000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb0616508000000004c8930c24000488d64240848b8d061650800000000488b5d08ff23488d64240848b8901a650800000000488b5d08ff23498b4608488b5c24504c8b0424ff159e2a00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70647000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c240004d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f858b0000004d8b76084c3b35e32900007502eb474d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037415488d64240848b86062650800000000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849bef0626508000000004c8930c24000488d64240848b8901a650800000000488b5d08ff23488d642408498b5e084883fb017d15488d64240848b83060620800000000488b5d08ff2348c7c001000000ff15152900004c8b2c244d89ee4983fd017508488d642408c240004c89f3488d6424084c8b34244c897424404883c440ff25dd280000488d6424084d8b6e084d8b66104983fd017c584d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7064d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b80063650800000000488b5d08ff234d8b6e084d8b66104c8b34244d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64241048b89051620800000000488b5d08ff234d89f64f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7064f00000041564c3b2de32700007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35b7270000750949c7c603000000eb2c4d8b264983fc01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375074c8b742408eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049bef05d6508000000004c8930488b5c2408ff15062700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c240004d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89051620800000000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd05757941ff76084c89d3ff15752600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080500000049c7066b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b8c01b650800000000488b5d08ff2341ff76084d8b6e10498b46184d8b66204c8b4424084d8b58f84d89de49c1e30849c1eb074983cb014d3be37215488d64241848b89051620800000000488b5d08ff234d89c04f8b64a0fc4d8b1c244983fb050f85ea01000041ff7424084d89c049c1e60849c1ee074983ce014d3bee7215488d64242048b89051620800000000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd050f859201000041ff76084c89d3ff15442500004989c44c8b6c24104d89ee4983fd0375214d8b34244983fe077502eb3f488d64242848b89863650800000000488b5d08ff234d89f64983fe1375214d8b34244983fe077502eb15488d64242848b82864650800000000488b5d08ff234c8b6c24084d89ee4c3b2c24750a488d642408e9a30000004d89f64d89f54c3b34240f848e0000004d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004c8b34244d897308488d64240849c703070000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d89ed4d896e1049c746080b00000049c7066b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24184d895d084d897500eb0a488d6424084c8b6c24184d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b24244d896610488d6424084c8b24244d896608488d64240849c7066b000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c24000488d64242048b8c01b650800000000488b5d08ff23488d64241848b8c01b650800000000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89051620800000000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd050f859500000041ff7608488b5c2458ff15332300004989c64d8b2e4983fd0775654d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7066d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c24000488d64241848b8b864650800000000488b5d08ff23488d64241048b8c01b650800000000488b5d08ff234d8b76084d8b6e104d8b56184d8b66204d8b0c244d89cb4983f9090f85b00300004d8b6424084d8b5e084c8b04244d8b70f84d89f149c1e60849c1ee074983ce014d3bd67215488d64241048b89051620800000000488b5d08ff234d89c04d89c643ff7490fc4d89f64d89ca49c1e10849c1e9074983c9014d3be17215488d64241848b89051620800000000488b5d08ff234d89f64f8b64a6fc4d89f649c1e20849c1ea074983ca014d3bea7215488d64241848b89051620800000000488b5d08ff234d89f643ff74aefc4c8b7424084d8b2e4983fd030f85df0200004d89f64d8b6e084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c7065300000041564c3b25792100007502eb5e4d8b2c244d89ee4983fd017502eb564983fe0375504d8b7424084c3b354c210000750949c7c603000000eb2c4d8b2e4983fd03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2420eb684d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d89660849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be085e6508000000004c8930488b5c2420ff159b2000004889c34c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cb0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb584d89f64983fd05754f4c8b6c24104d8b65004983fc05753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb054989deeb64eb004d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930ff15f11e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b8901a650800000000488b5d08ff234983fb050f85e0020000498b44240841ff76084c8b5c24084d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89051620800000000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89051620800000000488b5d08ff234d89f643ff74aefc4c8b7424084d8b2e4983fd030f85420200004d89f641ff7608a80174054989c5eb14ff15f61d00004989c64d8b364e8d2c75010000004981e5ff0100004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184c8b24244d896610488d6424084d896e0849c7065100000041564c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cd0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb5a4d89f64983fd0575514c8b6c24104d8b65004983fc0575404d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742428eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2428ff15f71b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c428c24000488d64242848b8901a650800000000488b5d08ff23488d64241048b83865650800000000488b5d08ff234d8b760841ff3641ff760841ff761041ff7618498b46204c8b304d89f54983fe0b752d4c8b700841f6c601740949c7c603000000eb0749c7c6010000004983f6024983fe03750949c7c609000000eb364d89ee4983fd07752d4c8b681041f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd03750949c7c609000000eb004983fe090f85330300004c8b7424104983fe050f8524030000488b5c24484c8b442420ff15e11a00004989c24c8b7424204d8b4ef84d89cc49c1e10849c1e9074983c9014c8b5c24184d89dd4d3bd97215488d64243048b89051620800000000488b5d08ff234d89ed4d89f64f8b6caefc4d8b5d004983fb030f85a9020000498b45084c8b6c24084d8b4d004d89cb4983f9070f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70007000000e9d8010000488d64243048b8901a650800000000488b5d08ff234d89ed4d89d94983fb050f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70005000000e943010000488d64243048b8901a650800000000488b5d08ff234d89ed4d89cb4983f9030f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70003000000e9ae000000488d64243048b8901a650800000000488b5d08ff234d89ed4983fb010f85820000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752c4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70001000000eb1f488d64243048b8901a650800000000488b5d08ff2349b858e464080000000048c7c3050000004c8b0c24ff15101800004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24204c8968084c89304883c428c24000488d64243048b8901a650800000000488b5d08ff23488b5c24484c8b442420ff15ad1700004989c24c8b7424204d8b4ef84d89cc49c1e10849c1e9074983c9014c8b5c24184d89dd4d3bd97215488d64243048b89051620800000000488b5d08ff234d89ed4d89f64f8b6caefc4d8b5d004983fb030f85a7020000498b45084c8b6c24084d8b4d004d89cb4983f9070f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70007000000e9d8010000488d64243048b8901a650800000000488b5d08ff234d89ed4d89d94983fb050f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70005000000e943010000488d64243048b8901a650800000000488b5d08ff234d89ed4d89cb4983f9030f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70003000000e9ae000000488d64243048b8901a650800000000488b5d08ff234d89ed4983fb010f85820000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89051620800000000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752c4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70001000000eb1f488d64243048b8901a650800000000488b5d08ff2349b858e4640800000000488b5c24104c8b0c24ff15de1400004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24204c8968084c89304883c428c24000488d64243048b8901a650800000000488b5d08ff23498b461041ff7620488b5c24304c8b442408ff15731400004989c24159488d6424084983e9014d6bc9087115488d64240848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff151d1400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c240004d8b66084d8b6e104c8b7424404d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81051620800000000488b5d08ff234c8b7424404f8b74a6fc4983fe037409488d64240858c240004c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3be27215488d64241048b89051620800000000488b5d08ff234d89f64f8b64a6fc4d8b14244983fa030f85f00000004d8b6424084d89f649c1e30849c1eb074983cb014d3beb7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85930000004d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d89662049c74618030000004d896e1049c746080100000049c70637000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8901a650800000000488b5d08ff23488d64241048b8901a650800000000488b5d08ff234d8b7608498b0641ff761041ff761841ff762041ff762841ff7608ff15271200004989c64156488b442420ff150f1200004c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64244048b89051620800000000488b5d08ff234d89ed4d89f64d89f043ff74aefc4c8b4c2460488b5c2418ff15b21100004989c641564c8b442468488b442410488b5c2440ff15901100004889c34d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24384d896e0849c7063500000041564883fb017507488b442408eb0b488b442408ff15411100004c8b7424284983ee01488b5c24304903de7115488d64245848b8d006620800000000488b5d08ff234c8b4424504c8b4c2410ff15011100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c24000498b4608488b5c24284c8b0424ff15b11000004989c6488d6424084d8b264d89e54983fc030f858a0000004d8b6e084d8b5e104d8b66184d8b334983fe0975604d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89661849c74610030000004d896e0849c70663000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8c065650800000000488b5d08ff234983fd07757a4d8b76084d8b2e4983fd0375584d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70665000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8901a650800000000488b5d08ff23488d64240848b8c065650800000000488b5d08ff234d8b4e084d8b66104d8b5e184d8b6e2041f6c4010f852c0200004d8b24244c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81051620800000000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b34244d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89f64f8b64a6fc4d89f649c1e50849c1ed074983cd014d3bcd7215488d64241048b89051620800000000488b5d08ff234d89f64f8b748efc488d6424084d3be67505e9fc0000004d8b2c244d89eb4983fd0175474d8b2e4983fd0175394d8b6c24084d8b5e084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb05e9ad000000e9ae0000004d89dd4983fb03755c4d8b2e4983fd0375514d8b6c24084d8b5e084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037502eb45eb494983fd0575434d8b2e4983fd0575384d8b6c24084d8b5e084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb0458c24000eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c89305b4c8b34244c897424404883c440ff252c0d00004c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81051620800000000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b24244d8b7424f84d89f249c1e60849c1ee074983ce014d3bce7215488d64241048b89051620800000000488b5d08ff234d89e44f8b748cfc4d89e449c1e20849c1ea074983ca014d3bda7215488d64241048b89051620800000000488b5d08ff234d89e44f8b649cfc488d6424084983fd03750949c7c001000000eb0749c7c0050000004d8b1e4d89dd4983fb030f85c60100004d8b4e084d89cb4d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d8942184d894a1049c742080300000049c7025100000041524d3be67505e9e70000004d8b14244d89d14983fa0175404983fd0175354d8b6c24084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb05e99f000000e9a30000004d89ca4983f90375554983fd03754d4d8b6c24084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037502eb3eeb454983fa05753f4983fd0575374d8b6c24084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb074c8b742408eb61eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2408ff15b50a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c24000488d64240848b8901a650800000000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89051620800000000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd03757b41ff7608488b5c2458ff150d0a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080500000049c70609000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b8901a650800000000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89051620800000000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd010f854f0100004d8b76084983fe017502eb1b4983fe017415488d64241048b84066650800000000488b5d08ff23488b5c2448ff15070900004989c6488d6424084d8b264d89e54983fc030f858a0000004d8b6e084d8b5e104d8b66184d8b334983fe0975604d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049c746080500000049c70619000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8d066650800000000488b5d08ff234983fd0775604d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080500000049c7061b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8d066650800000000488b5d08ff23488d64241048b8501b650800000000488b5d08ff2341ff76084d8b6610498b46184d8b6e204c8b4424084d8b58f84d89de49c1e30849c1eb074983cb014d3beb7215488d64241848b89051620800000000488b5d08ff234d89c04f8b6ca8fc4d8b5d004983fb010f85690100004d8b6d084d89c049c1e60849c1ee074983ce014d3be67215488d64241848b89051620800000000488b5d08ff234d89c04f8b74a0fc4d8b264983fc010f85120100004d8b76084983fd017502eb1b4983fd017415488d64241848b86067650800000000488b5d08ff234983fe017502eb1b4983fe017415488d64241848b8f067650800000000488b5d08ff23488b5c2450ff15de0600004989c64d8b2e4983fd030f85980000004d8b6e104d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd03756d4d8b6e084d8b66184d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b2c244d896e08488d64240849c70619000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c24000488d642418eb05488d64241848b84868650800000000488b5d08ff23488d64241848b8501b650800000000488b5d08ff23488d64241848b8501b650800000000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89051620800000000488b5d08ff234d89f64f8b74aefc488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b2c244c896b08488d64240849bdf8556508000000004c892b4c3b35740500007502eb544d8b2e4983fd0375514d8b6e084c3b2d54050000750949c7c503000000eb2d4d8b65004983fc01751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037402eb064889d8c24000498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdd85d6508000000004c89681048c740080b0000004c89304c8b34244c897424404883c440ff25bf0400004d8b66084d8b6e104d8b5e184c8b34244d8b4ef84d89ca49c1e10849c1e9074983c9014d3be17215488d64241048b89051620800000000488b5d08ff234d89f64f8b64a6fc4d8b0c244983f9010f85fb0000004d8b6424084d89f649c1e20849c1ea074983ca014d3bda7215488d64241048b89051620800000000488b5d08ff234d89f64f8b749efc488d6424084d8b1e4983fb010f859e0000004d8b76084983fc017502eb1b4983fc017415488d64240848b8d068650800000000488b5d08ff234983fe017502eb1b4983fe017415488d64240848b86069650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8501b650800000000488b5d08ff23488d64241048b8501b650800000000488b5d08ff2341ff7608498b4610488b5c24584c8b442408ff153c0300004989c54c8b7424084d8b56f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64241848b89051620800000000488b5d08ff234d89e44d89f64f8b74a6fc488d6424104d8b264983fc010f85d40000004d8b76084983fe017502eb1b4983fe017415488d64240848b8b869650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486a6508000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb85d6508000000004c8930c24000488d64240848b8501b650800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b442420488b5c2448ff15a7010000ff159901000048c7c3010000004c8b442408ff157f0100004989c6ff7424204156f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15480100004989c4415d4c8924244c896c2408483b65187303ff5558ebc15b488b4424404c8b4424504c8b4c24284c8b542448ff150c0100004889c34c8b6c24184d89ee4c3b2df20000007507488d642460eb63488d6424184d89f64d8b2e4983fd0375584d89f64d8b76084c3b35c2000000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037402eb0b488d6424484889d8c24000498d47e0483b45107305ff5550cd084989c748c740f80300000049bed85d6508000000004c89701048c740080b0000004c8b34244c8930488d6424084c8b7424404c89b424800000004881c480000000ff251a000000f400|@6325,1,@17478,@12675,@1172,@6249,@12676,@12677,@12678,@12696,@12697,@12698,@12675,@1172,@6249,@12698,@12698,@12698,@12675,@12675,@12698,@12699,@12701,@12702,@12703,@12704,@12705,@12684,@12698,@12684,@12698,@12684,@12698,@12675,@12530,@12675,@12675,@1823,@6250,@12698,@12698,@12698,@12675,@1172,@6249,@12706,@12707,@1172,@12698,@12675,@12698,@12675,@12675,@12698,@12675,@12675,@12698,@12675,@12708,@12678,@12709,@12710,@12711,@12712,@12675,@1172,@6249,@12675,@5750,@6251,@12675,@1823,@6250,@12713,@12714,@12716,@12717,@12678,@12718,@12675,@1172,@6249,@1165,@1172,@12698,@12675,@12675,@6178,@6253,@12675,@5750,@6251,@12675,@1823,@6250,@12719,@12684,@12723,@12675,@6178,@6253,@12675,@5750,@6251,@12675,@1823,@6250,@12675,@1172,@6249,@12678,@12724,@12725,@12675,@12698,@12675,@12698,@12726,@12727,@12719,@12674|465,0,@628 654,0,@628 736,0,@628 857,0,@6241 908,0,@5372 1360,0,@5720 1381,0,@5720 1471,0,@628 1523,0,@628 2128,0,@5720 2207,0,@628 2276,0,@628 2343,0,@628 2833,0,@5720 2854,0,@5720 2875,0,@5720 2933,0,@628 2985,0,@628 3542,0,@5720 3599,0,@628 3666,0,@628 3801,0,@5720 3822,0,@5720 3932,0,@628 3981,0,@628 4059,0,@6244 4161,0,@6245 4206,0,@6247 4418,0,@6248 4467,0,@5720 4596,0,@628 4651,0,@628 4703,0,@628 4915,0,@6250 5158,0,@6251 5399,0,@6253 5526,0,@625 5650,0,@628 5752,0,@628 5842,0,@628 5943,0,@628 6032,0,@5372 6222,0,@6254 6247,0,@5720 6309,0,@628 6364,0,@628 6416,0,@628 6628,0,@6250 6871,0,@6251 7112,0,@6253 7169,0,@6255 7213,0,@6257 7272,0,@625 7347,0,@628 7396,0,@628 7847,0,@628 7902,0,@628 7954,0,@628 8203,0,@6258 8233,0,@6198 8245,0,@6261 8284,0,@6249 8333,0,@1164 8682,0,@6249 8851,0,@6263 8956,0,@628 9080,0,@628 9129,0,@628 9436,0,@6266 9584,0,@6269 9663,0,@105 10192,0,@6271 10213,0,@5720 10234,0,@5720 10292,0,@6254 10354,0,@628 10409,0,@628 10461,0,@628 10673,0,@6250 10916,0,@6251 11157,0,@6249 11214,0,@6274 11296,0,@628 11464,0,@105 11660,0,@5754 11888,0,@625 11963,0,@628 12096,0,@628 12666,0,@628 13254,0,@628 13339,0,@628 13463,0,@628 13556,0,@5720 13620,0,@628 13713,0,@5720 13777,0,@628 13870,0,@5720 13931,0,@628 14021,0,@5720 14042,0,@5372 14153,0,@5720 14174,0,@5720 14229,0,@5372 14243,0,@5751 14295,0,@628 14420,0,@628 14551,0,@5720 14629,0,@628 14700,0,@628 14767,0,@628 15253,0,@5720 15274,0,@5720 15295,0,@5720 15344,0,@628 15396,0,@628 15944,0,@5720 15994,0,@628 16071,0,@6244 16173,0,@6247 16263,0,@5720 16313,0,@628 16407,0,@625 16466,0,@105 16521,0,@664 16708,0,@6275 16823,0,@6276 16844,0,@6277 16865,0,@5720 17026,0,@628 17138,0,@6280 17191,0,@6283 17212,0,@5720 17248,0,@731 17437,0,@6284 17491,0,@628 17748,0,@6249 17863,0,@628 18022,0,@5727 18088,0,@628 18156,0,@628 18240,0,@6287 18282,0,@6290 18600,0,@5727 18621,0,@5727 18675,0,@628 18845,0,@6293 18866,0,@5727 18957,0,@628 19012,0,@628 19061,0,@628 19343,0,@6250 19843,0,@5720 19912,0,@628 19964,0,@628 20589,0,@5720 20610,0,@6296 20846,0,@628 20945,0,@628 21030,0,@5720 21094,0,@628 21179,0,@5720 21243,0,@628 21328,0,@5720 21389,0,@628 21471,0,@5720 21487,0,@5372 21573,0,@5720 21650,0,@628 21749,0,@628 21834,0,@5720 21898,0,@628 21983,0,@5720 22047,0,@628 22132,0,@5720 22193,0,@628 22275,0,@5720 22291,0,@5372 22375,0,@5720 22440,0,@105 22460,0,@5753 22477,0,@5372 22581,0,@625 22655,0,@628 22723,0,@628 22917,0,@5720 22938,0,@5720 23042,0,@628 23209,0,@105 23459,0,@6299 23587,0,@5720 23608,0,@6299 23685,0,@625 23759,0,@628 23808,0,@628 24237,0,@625 24312,0,@628 24361,0,@628 24887,0,@5720 24941,0,@628 25102,0,@5720 25156,0,@628 25216,0,@6302 25389,0,@6305 25512,0,@6305 25533,0,@5724 25599,0,@628 25666,0,@628 25726,0,@6308 25761,0,@6311 25961,0,@6313 25982,0,@5724 26003,0,@5724 26053,0,@628 26122,0,@6196 26263,0,@6248 26352,0,@628 26420,0,@628 26485,0,@6316 26520,0,@6319 26625,0,@5724 26646,0,@5724 26727,0,@628 26795,0,@6321 26924,0,@6324 26968,0,@6247 26989,0,@5724 27029,0,@105 27364,0,@6248 12674:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b8901a650800000000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3363,1,@17532|50,0,@625 98,0,@628 164,0,@5720 12675:D3,2624|483b65187305ff5558cd094c8b304d8b264d89e54983fc050f85fa0200004d8b6e084c8b70084983fe090f85670100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9c00000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9850000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3e4d8b76084d8b264983fc050f85820000004d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080d00000049c7066b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b06a650800000000488b5d08ff234983fe070f85670100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9c00000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9850000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3e4d8b76084d8b264983fc050f85820000004d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080b00000049c7066b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b06a650800000000488b5d08ff2348b8306b650800000000488b5d08ff234983fd010f85700300004d8b76084c8b68084d89ec4983fd070f851b0100004c8b58104d89dd4d8b1b4983fb03750949c7c303000000eb0749c7c3010000004983fb030f85f10000004d89ec4d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c7450023000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34d89e54983fc070f85000100004c8b58104d89dc4d8b134983fa07751f4d8b5b084d8b1b4983fb01750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f85c00000004d89e54d8b6d084d8b65084d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c7450021000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34983fd090f85190100004c8b68104d89ec4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd030f85ee0000004d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510030000004d89650849c7450023000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c348b8306b650800000000488b5d08ff234d8b6e084c8b70084983fe030f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080300000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8306b650800000000488b5d08ff234983fe010f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080100000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8306b650800000000488b5d08ff234983fe050f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080500000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8306b650800000000488b5d08ff234983fe0b0f855b0100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9bc0000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9810000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3a4d8b76084d8b264983fc03757a4d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77e04c3b75107306ff5550ca08304d89f749c746f8030000004d8966104d896e0849c7063f000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b86b650800000000488b5d08ff2348b8306b650800000000488b5d08ff23f40000|@6334,1,@17479|393,0,@6326 762,0,@6326 778,0,@6329 1668,0,@6329 1862,0,@6329 2048,0,@6329 2234,0,@6329 2591,0,@6332 2607,0,@6329 12676:D4,680|483b65187306ff5558ca0907a8010f85a10000004c8b30488b40084d8b68f849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234f8b74b0fc4d8b2e4983fd0375574d8b6e084c3b2d670200007502eb384d8b75004983fe01751c4d8b75084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0374054d89ceeb6948b8586c650800000000488b5d08ff2348b8901a650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca08044d89f749c746f8020000004d89560849c7060d000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c341f6c6010f85b30000004d8b1e4d8b66084d8b5b08498d7fe8483b7d107306ff5550ca097f4989ff48c747f8020000004c896f0848c707030000004c3bdf7502eb5e498b334889f74883fe017502eb594883ff0375534d8b5b084d3bdd750949c7c303000000eb32498b3b498b7500483bfe751f4d8b5b08498b7d084c3bdf750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb03750949c7c603000000eb1b4d89e6483b65187306ff5558ca0967e943ffffff49c7c6010000004983fe03751048b8e06c650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09274d89f749c746f8020000004d896e0849c7064500000041564d8d77e84c3b75107306ff5550ca09274d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca09474d89ef49c745f8020000004d89750849c74500470000004d8d77e84c3b75107306ff5550ca09274d89f749c746f80200000049895e084d892e4c89f3e889fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@6341,1,@17480,@1172|50,0,@628 151,0,@6335 167,0,@5720 458,0,@6338 12677:D7,768|483b65187306ff5558ca09014c8b304d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e982000000909090e99f010000909090e9f6010000909090e9f2010000909090e9ee0100009090904d8b66084c8b70084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c7450001000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff25800200004d8b6e104c8b70084d89c44983ec014d03e5711048b8d006620800000000488b5d08ff234983fc01753a498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdc06d6508000000004c89681048c740080b0000004c8930ff25140200004d8b264983fc030f85a40000004d8b66084983e8014d03e8711048b8d006620800000000488b5d08ff234983ed014d6bed08711048b8d006620800000000488b5d08ff234983c5014d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004d8966204d896e1849bd58e46408000000004d896e1049bde01e6508000000004d896e0849c70637000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8901a650800000000488b5d08ff234d8b66084c8b70084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c7450005000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff25ec0000004889d8c34889d8c34d8b6e084d8b662041f6c50175044889d8c34c8b70084983e8014d03e0711048b8d006620800000000488b5d08ff234983ec014d6be408711048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca08504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff251c000000f4000000|@6344,1,@17481,@12675,@12675,@12675,@12675|198,0,@105 247,0,@6342 304,0,@105 330,0,@105 385,0,@5372 399,0,@5752 455,0,@5720 605,0,@105 631,0,@105 682,0,@5372 696,0,@5753 12678:D4,144|483b65187306ff5558ca09014987d84989c641f6c601752f4d8b264d8b6e084d8b24244d8b24244983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebcb49c7c6010000004983fe0375344983f801750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03751048b8486e650800000000488b5d08ff23ff251a000000f400|@6354,1,@17484,@12679|122,0,@6345 12679:D5,80|483b65187306ff5558ca09015341504883f8017507488d64240858c348bbc06e650800000000ff1544000000488b5c24084158488d64240849b9806f650800000000ff2520000000f400000000000000|@6355,1,@17485,@12683,@12682|30,0,@6348 58,0,@6353 12680:D3,856|483b65187305ff5558cd014c8b70084d8b2e4983fd010f850a0300004d8b76084d8b264d89e54983fc030f85230200004d8b6e084d8b76104d8b1e4d89dc4983fb0775274d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e98b0000004d89e34983fc0575244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb5e4d89dc4983fb0375244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb314983fc0175244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb0749c7c60100000041f6c6010f85e20000004d8b264d8b75084983fe03751c4d8b6d004983c510711048b8d006620800000000488b5d08ff23eb044d8b6d0049c7c6ffffffff4d2bf5711048b8d006620800000000488b5d08ff234983c6014d8b6c24084983fd03751c4d8b2c244983c510711048b8d006620800000000488b5d08ff23eb044d8b2c2449c7c4ffffffff4d2be5711048b8d006620800000000488b5d08ff234983c4014d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34d8b75084983fe03751c4d8b6d004983c510711048b8d006620800000000488b5d08ff23eb044d8b6d0049c7c6ffffffff4d2bf5711048b8d006620800000000488b5d08ff234983c601498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fd070f85c10000004d8b76084d8b264d89e54983fc05751c4d8b6e084983c52e711048b8d006620800000000488b5d08ff23eb4e4983fd01751c4d8b6e084983c520711048b8d006620800000000488b5d08ff23eb2c4d8b76084d8b6e084983fd03751b4d8b2e4983c510711048b8d006620800000000488b5d08ff23eb034d8b2e49c7c6ffffffff4d2bf5711048b8d006620800000000488b5d08ff234983c601498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c34d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f4000000000000|@6351,1,@17482|281,0,@105 315,0,@105 356,0,@105 390,0,@105 504,0,@105 538,0,@105 633,0,@105 667,0,@105 708,0,@105 741,0,@105 12681:D3,184|483b65187305ff5558cd014c8b304d8b2e4983fd037505498b4608c34d8b76084d8b264d89e54983fc05751c4d8b76084983c62e711048b8d006620800000000488b5d08ff23eb4e4983fd01751c4d8b76084983c620711048b8d006620800000000488b5d08ff23eb2c4d8b76084d8b6e084983fd03751b4d8b364983c610711048b8d006620800000000488b5d08ff23eb034d8b3648c7c0ffffffff492bc6711048b8d006620800000000488b5d08ff234883c001c3f4|@6352,1,@17483|56,0,@105 90,0,@105 131,0,@105 164,0,@105 12682:D5,768|483b65187305ff5558cd0950f604240175434c8b3424498b06ff33ff7308488b1424ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084d892e6a016a01ff7424204156eb0d488d64240848c7c001000000c3f6442408010f85a90000004c8b742408498b064d89f641ff76084c8b6c24084d89ee41ff75004d89f641ff7608488b542438ff124989c54c3b6c24087d054d89eeeb054c8b7424084983c5027115488d64245048b8d006620800000000488b5d08ff234c3b2c247e07488d642410eb06415d4883c4084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e94cffffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410ff7424084c8b6c24184c2b2c247115488d64243848b8d006620800000000488b5d08ff234983c5014983fd017d07488d642438eb5c4c3b2d890100007d4e4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab4156ff742438ff3563010000eb15488d64243848b8d055620800000000488b5d08ff23f6442408010f85090100004c8b6c24084d89ee41ff75004d89f641ff7608488b542448488b442408ff124989c54c2b6c24287115488d64246048b8d006620800000000488b5d08ff234983c5014c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64246048b81051620800000000488b5d08ff234d89f64f8b6caefc4983fd0175676a016a016a01ff7424404156ffb42480000000488b442438488b5c24404c8d4424184c8b4c24784c8b942480000000ff1585000000415e415d415b4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c24084d893424eb054c8b642410415d4c896424084c896c2410483b65187303ff55584883c408e9ecfeffff4c8b3424498b4610488d642450c3f400ffffffffffffff01|@6382,1,@17497,@12694,@998|183,0,@105 329,0,@105 454,0,@657 527,0,@105 578,0,@625 12683:D33,10336|483b65187306ff5558ca09035341504151a8010f85b20600004c8b08ff70084983f9017515488d64242048b83870650800000000488b5d08ff234d8b014d8b61084d8b304d8b2e4983fd030f854a0300004d8b760841ff70084c8b2c244d8b55004d89d34983fa030f85df0100004d89ed4d8b6d0841f6c401750d488d6424084d89cee9a41c00004d3bf5751c488d64240858488b5c24104c8b4424084159488d642410e957ffffff4c8b6424184d89e54983fc017515488d64242848b808d5620800000000488b5d08ff234d89ed41ff75004d8d57e84c3b55107306ff5550ca00404d89d749c742f8020000004c8b2c244d896a0849c702070000004d89f14983e9014d6bc9087115488d64243048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff151c2800004989c641564c8b7424104d8b2e4983fd03756e4d89f64d8b6e084983ed014d6bed087115488d64243848b8d006620800000000488b5d08ff234983c5014d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd58e46408000000004d896e1049bdf01e6508000000004d896e0849c70603000000eb074d89f64d8b7608498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424084c8930488b5c2430ff15522700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642410488b4424084c8b4424184883c41041594883c410e9b3fdffff4d89ed498b7d084989fa488b3f4883ff037528488d64240841f6c40175084d89cee98c0f0000488d64242048b8c070650800000000488b5d08ff2341f6c401750d488d6424084d89cee9370400004d89dc4983fc03756f4d89d5488d6424084983ed014d6bed087115488d64242048b8d006620800000000488b5d08ff234983c5014d8d57d84c3b55107306ff5550ca00604d89d749c742f8040000004d896a1849bd58e46408000000004d896a1049bdf01e6508000000004d896a0849c70203000000eb05488d6424084d89f14983e9014d6bc9087115488d64242048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15f12500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24184c896b084c8933584c8b4424084159488d642410e965fcffff4d8b76084d8b68084d89ea4d89d3498b3a4883ff010f85270200004d8b52084d8b124983fa0775184983fc01750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f85f10100004d89dc4d8b6424084d8b6424084d3be67505e9fd0000004d8b1c244d89da4983fb0175474d8b1e4983fb0175394d8b6424084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037402eb05e9ae000000e9c20000004d89d34983fa03755d4d8b1e4983fb0375524d8b6424084d8b5e084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037502eb45eb5c4983fb0575564d8b1e4983fb05754b4d8b6424084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037402eb1758488b5c24104c8b4424084159488d642410e9e9faffffeb004d8b65004983fc03756c4d8b65084983ec014d6be4087115488d64242048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb044d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2418ff15802300004889c3584c8b4424084159488d642410e923faffff4983fc010f85c40000004d8b65004983fc03756c4d8b65084983ec014d6be4087115488d64242048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb044d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2418ff15aa2200004889c3584c8b4424084159488d642410e955f9ffff488b4424185b4c8b542408415d488d642410ff34244c896c2408ff256d220000488d64241058c341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15d62000004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15521f00004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d006620800000000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58e46408000000004d896c241049bdf01e6508000000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15e41d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15b01c00004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15721b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b86b650800000000488b5d08ff23488da4248000000048b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff150b1a00004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15b61800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b86b650800000000488b5d08ff23488d64247848b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff154b170000488b5424505b488d64245041584883c408ff22488d64246048b8b86b650800000000488b5d08ff23488d64246848b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff2341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15691500004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15e51300004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d006620800000000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58e46408000000004d896c241049bdf01e6508000000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15771200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15431100004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15051000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b86b650800000000488b5d08ff23488da4248000000048b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff159e0e00004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15490d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b86b650800000000488b5d08ff23488d64247848b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff15de0b0000488b5424505b488d64245041584883c408ff22488d64246048b8b86b650800000000488b5d08ff23488d64246848b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff2341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15fc0900004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15780800004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d006620800000000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58e46408000000004d896c241049bdf01e6508000000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff150a0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15d60500004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15980400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b86b650800000000488b5d08ff23488da4248000000048b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15310300004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15dc0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b86b650800000000488b5d08ff23488d64247848b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff1571000000488b5424505b488d64245041584883c408ff22488d64246048b8b86b650800000000488b5d08ff23488d64246848b8901a650800000000488b5d08ff23488d64246848b84871650800000000488b5d08ff23f4000000000000|@6373,1,@17486,@12685,@12675,@12684,@12675,@12684,@12675,@12684,@12686,@12687,@12675,@12684,@12675,@12684,@12675,@12684,@12688,@12689,@12675,@12684,@12675,@12684,@12675,@12684,@12690,@12691,@12675,@12675,@12684,@12675,@12684|44,0,@6356 190,0,@1556 273,0,@105 293,0,@5753 310,0,@5372 367,0,@105 418,0,@5372 432,0,@5753 634,0,@6359 701,0,@105 752,0,@5372 766,0,@5753 812,0,@105 832,0,@5753 849,0,@5372 1336,0,@105 1387,0,@5372 1401,0,@5753 1542,0,@105 1593,0,@5372 1607,0,@5753 2386,0,@1556 2467,0,@105 2487,0,@5753 2504,0,@5372 2548,0,@105 2626,0,@5372 2641,0,@5753 2732,0,@105 2783,0,@5372 2797,0,@5753 2985,0,@5720 3044,0,@1556 3125,0,@105 3145,0,@5753 3162,0,@5372 3342,0,@105 3393,0,@5372 3407,0,@5753 3595,0,@6332 3619,0,@5720 3640,0,@6362 3707,0,@1556 3786,0,@105 3806,0,@5753 3823,0,@5372 4020,0,@105 4071,0,@5372 4085,0,@5753 4276,0,@6332 4297,0,@5720 4551,0,@6332 4572,0,@5720 4593,0,@6362 5247,0,@1556 5328,0,@105 5348,0,@5753 5365,0,@5372 5409,0,@105 5487,0,@5372 5502,0,@5753 5593,0,@105 5644,0,@5372 5658,0,@5753 5846,0,@5720 5905,0,@1556 5986,0,@105 6006,0,@5753 6023,0,@5372 6203,0,@105 6254,0,@5372 6268,0,@5753 6456,0,@6332 6480,0,@5720 6501,0,@6362 6568,0,@1556 6647,0,@105 6667,0,@5753 6684,0,@5372 6881,0,@105 6932,0,@5372 6946,0,@5753 7137,0,@6332 7158,0,@5720 7412,0,@6332 7433,0,@5720 7454,0,@6362 8108,0,@1556 8189,0,@105 8209,0,@5753 8226,0,@5372 8270,0,@105 8348,0,@5372 8363,0,@5753 8454,0,@105 8505,0,@5372 8519,0,@5753 8707,0,@5720 8766,0,@1556 8847,0,@105 8867,0,@5753 8884,0,@5372 9064,0,@105 9115,0,@5372 9129,0,@5753 9317,0,@6332 9341,0,@5720 9362,0,@6362 9429,0,@1556 9508,0,@105 9528,0,@5753 9545,0,@5372 9742,0,@105 9793,0,@5372 9807,0,@5753 9998,0,@6332 10019,0,@5720 10273,0,@6332 10294,0,@5720 10315,0,@6362 12684:D3,1552|483b65187306ff5558ca09074c8d35080000004d8d749efc41ffe6e92b000000909090e9c4000000909090e95d010000909090e94e020000909090e965030000909090e97c0400009090904d8b324983fe070f85840000004d8b6a084d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080100000048c7005d000000c348b8c871650800000000488b5d08ff234d8b324983fe070f85840000004d8b6a084d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080300000048c7005d000000c348b8c871650800000000488b5d08ff234d8b2a4d89ee4983fd05755d4d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080500000048c7005f000000c34983fe07757a4d8b72084d8b2e4983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080500000048c7005d000000c348b8c871650800000000488b5d08ff2348b8c871650800000000488b5d08ff234d8b324983fe070f85020100004d8b72084d8b264d89e54983fc05755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c7006f000000c34983fd01757f4d8b76084983fe017502eb164983fe01741048b85072650800000000488b5d08ff234d8d77e04c3b75107306ff5550ca01034d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c89701048c740080300000048c7002b000000c348b8c871650800000000488b5d08ff2348b8c871650800000000488b5d08ff234d8b324983fe070f85020100004d8b72084d8b264d89e54983fc05755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018030000004c8968104c89700848c7006f000000c34983fd01757f4d8b76084983fe017502eb164983fe01741048b8e072650800000000488b5d08ff234d8d77e04c3b75107306ff5550ca01034d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080300000048c7002b000000c348b8c871650800000000488b5d08ff2348b8c871650800000000488b5d08ff234d8b324d89f54983fe0175554d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7005b000000c34d89ee4983fd0575554d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70057000000c34983fe0775724d8b72084d8b2e4983fd0375554d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70061000000c348b8c871650800000000488b5d08ff2348b8c871650800000000488b5d08ff23f400000000|@6377,1,@17496|222,0,@6365 383,0,@6365 616,0,@6365 632,0,@6365 794,0,@6368 903,0,@6365 919,0,@6365 1081,0,@6371 1190,0,@6365 1206,0,@6365 1517,0,@6365 1533,0,@6365 12685:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a073650800000000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a073650800000000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@17487|137,0,@6374 615,0,@6374 12686:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17488| 12687:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a073650800000000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a073650800000000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@17489|137,0,@6374 615,0,@6374 12688:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17490| 12689:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a073650800000000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a073650800000000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@17491|137,0,@6374 615,0,@6374 12690:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17492| 12691:D11,2864|483b65187306ff5558ca09075041524d89ce41f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca08134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0843eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca08134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0843ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca08024d89f749c746f80200000049895e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15eb0900004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85110500004d89f641ff76084c8b7424284d8b2e4983fd030f85750200004d89f641ff76084c8b6c24504d89ee4983fd017515488d64246048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64246848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15670800004989c641564c8b6c24104983ed014d6bed087115488d64247048b8d006620800000000488b5d08ff234983c5014c8b7424084d8b264983fc030f85810100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58e46408000000004d896c241049bdf01e6508000000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087115488d64247848b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2470ff15020700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e954020000488d64247048b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f855a02000041ff76084c8b6c24504d89ee4983fd017515488d64246048b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64246848b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15d10500004989c641564c8b7424104d8b2e4983fd030f85910100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85630100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087115488d64247848b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2470ff15990400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e98c030000488d64247048b8b86b650800000000488b5d08ff23488d64247048b8901a650800000000488b5d08ff23488d64245848b84871650800000000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85750200004d89f64d8b4e084c8b6c24484d89ee4983fd017515488d64245848b808d5620800000000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64246048b8d006620800000000488b5d08ff234983c10148b8f01e65080000000048c7c30b00000049b858e4640800000000ff15380300004989c641564c8b7424104d8b2e4983fd030f85ab0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f857d0100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc03756f4d89ed4d8b65084983ec014d6be4087115488d64247048b8d006620800000000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58e46408000000004d89651049bcf01e6508000000004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2468ff15e60100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64246848b8b86b650800000000488b5d08ff23488d64246848b8901a650800000000488b5d08ff234d89f64d8b76084d8b2e4983fd070f850c0100004d8b76084c8b2c244d8b65004983fc030f85e10000004d89ed4d8b6508488d6424084d8b2e4983fd030f85b30000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424484d8966084d892e4156488b442410488b5c24284c8b442408ff157b000000488b5424605b488d6424104c8b4424304c8b7424404c897424484883c448ff22488d64245048b8b86b650800000000488b5d08ff23488d64245848b8901a650800000000488b5d08ff23488d64245848b84871650800000000488b5d08ff23f4000000|@6376,1,@17493,@12693,@12675,@12684,@12675,@12684,@12675,@12684,@12692|653,0,@1556 734,0,@105 754,0,@5753 771,0,@5372 812,0,@105 890,0,@5372 905,0,@5753 993,0,@105 1044,0,@5372 1058,0,@5753 1240,0,@5720 1299,0,@1556 1380,0,@105 1400,0,@5753 1417,0,@5372 1594,0,@105 1645,0,@5372 1659,0,@5753 1841,0,@6332 1862,0,@5720 1883,0,@6362 1950,0,@1556 2029,0,@105 2049,0,@5753 2066,0,@5372 2260,0,@105 2311,0,@5372 2325,0,@5753 2516,0,@6332 2537,0,@5720 2804,0,@6332 2825,0,@5720 2846,0,@6362 12692:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17495| 12693:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a073650800000000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a073650800000000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@17494|137,0,@6374 615,0,@6374 12694:D5,1024|488dbc2458ffffff483b7d187306ff5560ca090750415041514152ff33ff7308ff7310488b542420488b442430ff124989c64156488b542420488b442438ff124989c54d8d5fe84c3b5d107306ff5550ca00204d89df49c743f8020000004c8b7424104d8973084c8b7424384d89334c8b6424584c8b34244d2bf47115488d64244048b8d006620800000000488b5d08ff234983c60141564d8d57e84c3b55107306ff5550ca00284d89d749c742f8020000004c8b6424204d89e64d8962084d89f64d89f44d89324d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d89164c8b5424584d8b42f849c1e00849c1e8074983c8014c8b14244d89d14d3bd07215488d64244848b80057620800000000488b5d08ff234c8b5424584d89c94f89748afc4d89e44983c4027115488d64244848b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b5424104d8956104d895e084d89266a016a016a0141554156f64424080175634c8b742408498b064d89f641ff76084c8b8c24800000004c8b9424900000004c8bb424880000004156ff742440ff356a020000ff742470488b5c24284c8b842480000000ff154b0200004989c4415d4c8924244c896c2408483b65187303ff5558eb964c8b34244d8b2e4c896c24104d89f64d8b6e084c896c24184d89f64d8b7610488d6424084c89742418ff7424084c8b742418ff7424204c8bac24880000004d8b5df849c1e30849c1eb074983cb014c8b6c24304d89ec4d3beb7215488d64247848b81051620800000000488b5d08ff234c8bac24880000004d89e44f8b6ca5fc4983fd017515488d64247848b808d5620800000000488b5d08ff234d8b6d004d8b6d084c3b6c2450750a6a016a0141566a01eb2d4c8b6c24684c8b6424084d8965004d8975084c8b34244d897510488d64241048c7c0010000004883c468c21800f6442408010f85110100004c8b6c24084d89ee41ff75004d89f641ff7608488b942490000000488b442408ff124989c64c3b7424680f85970000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e084c8b6c24084d892e4c8b2c244c896c2420488d6424184c897424104883c408415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e4c8b6c24604c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c468c218004d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424104d897424084c8b7424084d893424415d488d6424084c8924244c896c2408483b65187303ff5558e9e4feffff488da4249800000048b8b074650800000000488b5d08ff23f400000000|@6384,1,@17498,@12695,@6383|132,0,@105 270,0,@664 313,0,@105 584,0,@625 627,0,@1556 1005,0,@6378 12695:D3,1376|483b65187306ff5558ca090750534150415141524c8b74241841ff7608ff742410f604240175414c8b3424498b064d89f641ff7608488b542428ff124989c54c8b7424384d3bf5750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe03757f4c8b7424284c2b7424087115488d64243048b8d006620800000000488b5d08ff234983c60141564c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81051620800000000488b5d08ff234c8b7424584d89ed4f8b74aefc41f6c6017509ff742408e980020000ff742418eb0d488d642420584883c408c22000f6042401756d4c8b2c244d89ee41ff75004d89f641ff7608488b542438488b442408ff124989c64c3b742448752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb22415d4c896c2408483b65187303ff55584883c408eb8d488d64240849c7c6010000004983fe017515488d64243848b808d5620800000000488b5d08ff23498b066a016a016a01488b5424604c8b5424584c8b742470ff7424284156ff742440488b5c24584c8d4424184c8b4c2450ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c89304c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81051620800000000488b5d08ff234c8b7424584d89ed4f8b74aefc488d6424084983fe017515488d64243048b808d5620800000000488b5d08ff23488d6424084d8b364d8b5e084c8b6424404c2b2424488d6424087115488d64242048b8d006620800000000488b5d08ff23488d6424204983c4014c8b7424204d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424204f8b74a6fc4983fe01751048b808d5620800000000488b5d08ff234d8b2e4d8b75004d8b6d084d3beb7d054d89ebeb004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d8975004d8d77f04c3b75107306ff5550ca01304d89f749c746f8010000004d892e4c8b6c24204d8b6df849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234c8b6c24204f8974a5fcc22000f604240175414c8b3424498b064d89f641ff7608488b542430ff124989c54c8b7424404d3bf5750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe030f85810100004c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81051620800000000488b5d08ff234c8b7424584d89ed4f8b74aefc488d6424084983fe017515488d64243048b808d5620800000000488b5d08ff23488d6424084d8b364d8b1e4c8b6424404c2b2424488d6424087115488d64242048b8d006620800000000488b5d08ff23488d6424104983c4014c8b7424304d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81051620800000000488b5d08ff234c8b7424304f8b74a6fc4983fe017515488d64241048b808d5620800000000488b5d08ff234d8b2e4d8b75004d8b6d084d3beb7d054d89ebeb004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892e4c8b6c24304d8b6df849c1e50849c1ed074983cd014d3be57215488d64241048b80057620800000000488b5d08ff234c8b6c24304f8974a5fceb05488d642428584883c408c22000f400|@6385,1,@17499|141,0,@105 201,0,@625 402,0,@1556 551,0,@625 596,0,@1556 645,0,@105 696,0,@625 728,0,@1556 856,0,@664 1016,0,@625 1061,0,@1556 1109,0,@105 1165,0,@625 1202,0,@1556 1335,0,@664 12696:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17500| 12697:D3,408|483b65187305ff5558cd09a8010f857c0100004c8b30488b40084d8b2e4d8b76084d8b65004d89e34983fc07751048b87076650800000000488b5d08ff234d89dc4983fb0b0f85840000004d8b6d0841f6c50175714d8b6d004c8b63f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234e8b64abfc4d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c601000000eb7e4983fc0975714d8b6d084c8b63f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234e8b64abfc4d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e9a8feffff41ff36e8a0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@3363,1,@17501|48,0,@6386 112,0,@628 240,0,@628 12698:D3,1080|483b65187306ff5558ca09014889da4c8b304d89f54983fe03751048b8f876650800000000488b5d08ff234d89ee4983fd0b0f859f0000004c8b68084c8b702041f6c5017530498b4500ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34983ee014d6bf608711048b8d006620800000000488b5d08ff234983c601498d47d8483b45107306ff5550ca00404989c748c740f8040000004c89701849be58e46408000000004c89701049bef01e6508000000004c89700848c70003000000c34d89f54983fe070f85be0200004c8b70084c8b58104c8b68184c8b602041f6c301752f498b03ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d8b50f84d89d349c1e20849c1ea074983ca014d3bf2721048b89051620800000000488b5d08ff234f8b74b0fc4d8b164983fa030f852f0200004d8b76084d8b4d004d89ca4983f90775744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89051620800000000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450007000000e98b01000048b8901a650800000000488b5d08ff234d89d14983fa0575744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89051620800000000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450005000000e90e01000048b8901a650800000000488b5d08ff234d89ca4983f90375744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89051620800000000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450003000000e99100000048b8901a650800000000488b5d08ff234983fa0175714d8b6d0849c1e30849c1eb074983cb014d3beb721048b89051620800000000488b5d08ff234f8b6ca8fc4d8b5d004983fb03752d4d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450001000000eb1a48b8901a650800000000488b5d08ff2349bd58e4640800000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c70003000000c348b8901a650800000000488b5d08ff234d89ee4983fd05752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe01752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3488b4008ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@6392,1,@17502|29,0,@6389 130,0,@105 181,0,@5372 195,0,@5753 323,0,@628 395,0,@628 474,0,@5720 520,0,@628 599,0,@5720 645,0,@628 724,0,@5720 767,0,@628 843,0,@5720 859,0,@5372 916,0,@5720 12699:D5,888|483b65187306ff5558ca090353415041514c8b7424104983fe017d084989c6e9a7000000498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c8933488d6424084c8b0424ff15440300004989c5488d6424084c8b34244d89f44983fe017509488d6424084c89e8c34d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89e44d896608488d64240849c7064d000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c341f6c60175654d8b264d8b6e084d8b1c244d8b134983fa0375404d8b5b084983fbff750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140eb9549c7c6010000004983fe017515488d64241848b808d5620800000000488b5d08ff234d8b3641ff7608ff152b020000488b5c24184883c3027115488d64242048b8d006620800000000488b5d08ff234c8b34244d8b2e4983fd0375734d89f64d8b6e08488d6424084983ed014d6bed087115488d64241848b8d006620800000000488b5d08ff234983c5014d8d77d84c3b75107306ff5550ca09204d89f749c746f8040000004d896e1849bd58e46408000000004d896e1049bdf01e6508000000004d896e0849c70603000000eb0c4d89f64d8b7608488d6424084d8b2e4d89ec4983fd0175304d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c7450001000000e9b50000004d89e54983fc05752d4d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c7450005000000eb7f4983fd03753d4d8b66084d8b5e104d8b76184d8d6fd84c3b6d107306ff5550ca09584d89ef49c745f8040000004d8975184d895d104d89650849c7450003000000eb3c4d8b76084d8b2e4983fd030f85840000004d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004c8b6c24084d8968084d89304159488d642410e9a5fcffff488d64241848b8b86b650800000000488b5d08ff23f400000000000000|@6393,1,@17503,@12700,@12678|330,0,@1556 375,0,@105 431,0,@105 482,0,@5372 496,0,@5753 866,0,@6332 12700:D3,344|483b65187305ff5558cd01a8010f85360100004c8b30488b40084d8b2e4d89ec4d8b1c244983fb0375264d8b6424084983fcff750949c7c403000000eb0749c7c4010000004983fc037505e9b0ffffff4d8b66084d8b75004983fe0375434d8b75084983c602711048b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450003000000eb004d8b34244983fe0375464d8b7424084983c602711048b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c7042403000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8e6feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@6394,1,@17504|106,0,@105 184,0,@105 12701:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17505| 12702:D4,352|483b65187306ff5558ca0901534150a8010f85380100004c8b30ff7008498b0641ff76084c8b304983fe0b754f4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03752f4c8b70204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000eb3c488b5c24104c8b442418ff15ec0000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424010000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408488b5c24184c8b442410e8e0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@742,1,@17506,@12698| 12703:D4,392|483b65187306ff5558ca09035341504151a8010f855d0100004c8b30ff7008498b064d8b6e084c8b7424184983ee014d03ee7115488d64242048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060300000041564c8b304983fe0b754d4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03752d4c8b70204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450003000000eb3a488b5c24104c8b442418ff15c90000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c24204c8b4424184c8b4c2410e8b9feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@742,1,@17507,@12698|59,0,@105 12704:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17508| 12705:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17509| 12706:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17510| 12707:D5,288|483b65187305ff5558cd094989c54989de4d3bee750848c7c001000000c348c7c0050000004883e801486bc00070064883c001eb1c48c7c00500000048c7c30100000041554156ff15f3000000415e415da801740b4989c44983c4027002eb1848c7c30300000041554156ff15c7000000415e415d4989c44d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704244700000041544c89e84883c0027115488d64240848b8d006620800000000488b5d08ff234c89f3e811ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@17511,@10599,@12218|217,0,@105 12708:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17512| 12709:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17513| 12710:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b8901a650800000000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3363,1,@17514|50,0,@625 98,0,@628 164,0,@5720 12711:D4,376|483b65187306ff5558ca0901534150a8010f85500100004c8b30ff7008498b0641ff76084c8b304983fe0b752f4c8b70204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000eb3c488b5c24104c8b442418ff15240100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042401000000488b5c24184c8b5bf849c1e30849c1eb074983cb014c8b2c244d89ee4d3beb7215488d64242048b89051620800000000488b5d08ff234d89f64889db4e8b74b3fc488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e4156488b4424084c8b442410e8c8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@742,1,@17515,@12698|192,0,@628 12712:D4,320|483b65187306ff5558ca0901534150a8010f85150100004c8b30ff7008498b064d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060300000041564c8b304983fe0b752d4c8b70204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450003000000eb3a488b5c24104c8b442418ff15c60000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c24184c8b442410e803ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000000000|@742,1,@17516,@12698| 12713:D3,216|483b65187306ff5558ca0901a8010f85b80000004c8b28488b40084c8b73f849c1e60849c1ee074983ce014d3bee721048b81051620800000000488b5d08ff234e8b74abfc4983feff754b4d8b304d89f44983c402711048b8d006620800000000488b5d08ff234d89204c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234e8974abfceb004156e863ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@742,1,@17517|50,0,@625 89,0,@105 129,0,@664 12714:D6,840|483b65187306ff5558ca09074989c54989de41504151415241f6c5010f851a030000498b450041ff75084c8b204d89e54983fc0b0f851d0100004c8b68104c8b60184c8b58204d89f24983ea014d03da7115488d64242048b8d006620800000000488b5d08ff234d89f24983ea014d03ea7115488d64242048b8d006620800000000488b5d08ff23498d47d0483b45107306ff5550ca00784989c748c740f8050000004c8958204c8960184c89681048c740080100000048c7000b0000004983c60241567115488d64242848b8d006620800000000488b5d08ff23488b5c24104c8b442418ff15850200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424085b488d6424084c8b4c2408415a488d642410e9a9feffff4983fd030f85420100004c8b60104d89f54983ed014d03e57115488d64242048b8d006620800000000488b5d08ff234983fc01750c48c7c001000000e98e0000004983ec014d6be4087115488d64242048b8d006620800000000488b5d08ff234983c4014d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049bcf01e6508000000004d89651049c745080100000049c7450005000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89284983c60241567115488d64242848b8d006620800000000488b5d08ff23498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424204c89730849be88786508000000004c89334883fb0175054989c0eb09ff15e40000004989c0488b4424085b488d6424084c8b4c2408415a488d642410e95dfdffff4983c60241567115488d64242848b8d006620800000000488b5d08ff23488b5c24104c8b442418ff15900000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424085b488d6424084c8b4c2408415a488d642410e9c4fcffff488d64241058c3f400000000|@6397,1,@17518,@12698,@12715,@12698|89,0,@105 122,0,@105 205,0,@105 376,0,@105 425,0,@105 484,0,@5753 565,0,@105 616,0,@6395 690,0,@105 12715:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17519| 12716:D3,280|483b65187305ff5558cd01a8010f85f90000004c8b30488b40084d8b264d89e54983fc0b75554d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752e4d89e64d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb5b4983fd0775554d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03752e4d89ee4d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb004156e823ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@742,1,@17520| 12717:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17521| 12718:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17522| 12719:D11,1920|483b65187306ff5558ca0903534c8b204c8b68084c8b70104c8b50184d8b1c244983fb030f853b0700004d8b5c24084983f8030f85040400004d89e84983c0027115488d64240848b8d006620800000000488b5d08ff234983ce214983fe010f8475010000498d7fe0483b7d107306ff5550ca006f4989ff48c747f80300000048c74710ffffffff49bc58e46408000000004c8967084c891f4d8d67d84c3b65107306ff5550ca806f4d89e749c74424f8040000004d8974241849897c241049c74424080500000049c704245f0000004d89e64d8d67e04c3b65107306ff5550ca006f4d89e749c74424f80300000049c7442410f1ffffff48bf58e464080000000049897c24084d891c24498d7fe0483b7d107306ff5550ca007f4989ff48c747f8030000004c8947104c89670848c707570000004d8d67d84c3b65107306ff5550ca806f4d89e749c74424f8040000004d895424184d895c24104d8944240849c70424010000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca806e4d89e749c74424f8020000004d8954240849893c24498d47e8483b45107306ff5550ca007a4989c748c740f8020000004c8960084c8930e9a901000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb663ff4e8d2465010000004983fc237402eb2b48b8f854620800000000415141554152415341504156ff15a6050000415e4158415b415a415d41594889c341f6c6017421f6c301741c4d89f44889df49d1fc4883ef014c0fafe770094c89e34883c301eb204c89f041514155415241534150ff15550500004158415b415a415d41594889c34c89c041514155415241534150ff152d0500004158415b415a415d41594889c74d8d67e04c3b65107306ff5550ca802f4d89e749c74424f80300000049c7442410f1ffffff49be58e46408000000004d897424084d891c244d8d77e04c3b75107306ff5550ca803f4d89f749c746f80300000049897e104d89660849c706570000004d8d67d84c3b65107306ff5550ca006f4d89e749c74424f8040000004d895424184d895c24104d8944240849c70424010000004d89e24d8d67e84c3b65107306ff5550ca006e4d89e749c74424f80200000049c7442408010000004d891424498d47e8483b45107306ff5550ca007a4989c748c740f8020000004c8960084c89304d89ee4983ee014d6bf6087115488d64240848b8d006620800000000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca014a4d89ef49c745f8030000004d89751049be58e46408000000004d8975084d895d004d8d77e04c3b75107306ff5550ca01224d89f749c746f8030000004d894e104d896e0849c7065b000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb017502eb06ff1580030000e9070300004983fe010f84710100004d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110ffffffff49bc58e46408000000004d8961084d89194d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d897424184d894c241049c74424080500000049c704245f0000004d89e64d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110f1ffffff49bc58e46408000000004d8961084d89194d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d896c24104d894c240849c70424570000004d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f8040000004d8951184d8959104d89690849c701010000004d89cd4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e98c01000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb663ff4e8d2465010000004983fc237402eb2348b8f8546208000000004155415641524153ff15ac010000415b415a415e415d4889c341f6c6017421f6c301741c4d89f44989d949d1fc4983e9014d0fafe170094c89e34883c301eb184c89f0415541524153ff1563010000415b415a415d4889c34c89e8415541524153ff1543010000415b415a415d4989c14d8d67e04c3b65107306ff5550ca002e4d89e749c74424f80300000049c7442410f1ffffff49be58e46408000000004d897424084d891c244d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d894e104d89660849c706570000004d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244c89f34983fe017506488d642408c34889db488d642408ff2533000000488d64240848b8901a650800000000488b5d08ff23f40000000000|@6398,1,@17523,@12721,@12720,@12218,@10599,@12722,@12720,@12218,@10599|73,0,@105 138,0,@5372 250,0,@5372 528,0,@651 711,0,@5372 919,0,@105 970,0,@5372 1132,0,@5372 1242,0,@5372 1518,0,@651 1677,0,@5372 1900,0,@5720 12720:D3,80|49bb0005b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@6399,1,@17526|2,0,@46 12721:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17524| 12722:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17525| 12723:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b8901a650800000000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3363,1,@17527|50,0,@625 98,0,@628 164,0,@5720 12724:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17528| 12725:D3,176|483b65187305ff5558cd09a8010f85910000004c8b28488b40084d8b75004d8b65084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234e8b6cb3fc4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@742,1,@17529|57,0,@628 12726:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17530| 12727:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89051620800000000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b8901a650800000000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3363,1,@17531|50,0,@625 98,0,@628 164,0,@5720 12728:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17533| 12729:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17534| 12730:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17535| 12731:D12,728|483b65187306ff5558ca09015053415048bae0fc640800000000488b042448c7c301000000ff15050300004989c64c8b2c2441f6c50175464d8b5d004d8b65084d8b134c3b15de02000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2068620800000000e99d0100004d8b6d004d8b65004c3b257702000075064d8b6510eb15488d64241848b87850620800000000488b5d08ff23415d41f6c50175464d8b55004d8b5d084d8b0a4c3b0d3802000075214d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0070ebb449c7c5010000004983fd01750c49bd2068620800000000eb6d4d8b6d004d8b5d004c3b1dd401000075064d8b6d10eb15488d64241048b87850620800000000488b5d08ff23498d47d0483b45107306ff5550ca00704989c748c740f8050000004c8960204c8968184c8b2c244c896810488d6424084c8970084c8b34244c8930488d642408c341f6c50175464d8b55004d8b5d084d8b0a4c3b0d5601000075214d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0070ebb449c7c5010000004983fd017515488d64241048b8b86c620800000000488b5d08ff234d8b6d004d8b5d004c3b1de900000075094d8b6d10e937ffffff488d64241048b87850620800000000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15a900000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64241848b8b86c620800000000488b5d08ff234d8b6d004d8b65004c3b253c00000075094d8b6510e907feffff488d64241848b87850620800000000488b5d08ff23f4000000|@6400,1,@17537,@15127,@15127,@15133,@15133,@15133,@15133,@15127,@15127,@12446|18,0,@5482 141,0,@788 184,0,@621 291,0,@788 331,0,@621 506,0,@828 553,0,@621 663,0,@828 710,0,@621 12732:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17538| 12733:D3,152|483b65187305ff5558cd01a801757d4c8b30488b40084d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e9abffffff41ff36e8a3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@3363,1,@17539| 12734:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17540| 12735:D4,72|483b65187305ff5558cd0953a8017524ff30488b4008488b5c2408e8e0ffffff4c8b3424498b4608488d6424085bff252c000000488d64240848c7c001000000c3f4000000000000|@1573,1,@17542,@12736| 12736:D3,15832|483b65187305ff5558cd094c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95b010000909090e98d010000909090e9fd030000909090e961040000909090e961040000909090e961040000909090e9f7040000909090e964050000909090e9fa050000909090e967060000909090e9d7080000909090e9e0080000909090e912090000909090e912090000909090e9a8090000909090e9ad090000909090e91a0c0000909090e9680d0000909090e9680d0000909090e99a0d0000909090e906100000909090e906100000909090e906100000909090e940120000909090e972120000909090e972120000909090e972120000909090e9a4120000909090e910150000909090e97c170000909090e9b6190000909090e9261c0000909090e9831f0000909090e9bd210000909090e92a220000909090e932220000909090e96c240000909090e953250000909090e9bf270000909090e92b2a0000909090e9972c0000909090e9972c0000909090e9c92c000090909048c7c001000000c34c8b70104c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b70084d8b6e104d8b76184c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b60104c8b68184c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b60084c8b70104c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104c8b60184c8b68204c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b60084c8b70184c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084d8b75004d8b6d084c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b6e084d8b7620e9033000004c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b60184c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68084c8b7018e9a62a00004c8b60084c8b70184c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc030f852e0200004d8b264d89e34983fc0b75474d8b760841f6c60175354d8b3649c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89dc4983fb070f858a0100004d8b5e084d8b66104d8b76184983fc010f853e01000049c1e50849c1ed074983cd014d3bdd721048b80057620800000000488b5d08ff234ac7449bfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b342449c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fc0975364d8b760849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b68084c8b70184983fd017502eb324d8b6d004c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c348c7c001000000c34c8b70084d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b6e104d8b76204c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084d8b2c244d8b7424104d8b6424204d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb004c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084c8b70104c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b2e4d8b7618e9110d00004c8b70084d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084c8b70104c8b68184983fe01756d4c8b5bf84d89de49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc03753249c1e60849c1ee074983ce014d3bee721048b80057620800000000488b5d08ff234ac744abfc0300000048c7c001000000c348c7c001000000c34d8b364c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81051620800000000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80057620800000000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70184c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80057620800000000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80057620800000000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80057620800000000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f85300200004d8b264d8b6e084d8b24244d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9c6fdffff48c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80057620800000000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f85300200004d8b264d8b6e084d8b24244d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9c6fdffff48c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80057620800000000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80057620800000000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f852c0200004d8b264d8b6e084d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9cafdffff48c7c001000000c3f4000000000000|@6402,1,@17543|416,0,@664 482,0,@664 553,0,@664 650,0,@664 712,0,@664 779,0,@664 846,0,@664 910,0,@664 976,0,@664 1040,0,@664 1110,0,@664 1156,0,@664 1238,0,@664 1284,0,@664 1330,0,@664 1395,0,@625 1439,0,@664 1513,0,@664 1559,0,@664 1605,0,@664 1670,0,@625 1714,0,@664 1788,0,@664 1859,0,@664 1956,0,@664 2018,0,@664 2085,0,@664 2152,0,@664 2216,0,@664 2282,0,@664 2346,0,@664 2429,0,@664 2503,0,@664 2549,0,@664 2595,0,@664 2673,0,@625 2746,0,@664 2839,0,@664 2901,0,@664 2968,0,@664 3035,0,@664 3099,0,@664 3161,0,@664 3221,0,@664 3311,0,@664 3373,0,@664 3440,0,@664 3507,0,@664 3571,0,@664 3645,0,@664 3707,0,@664 3778,0,@664 3875,0,@664 3937,0,@664 4004,0,@664 4071,0,@664 4135,0,@664 4201,0,@664 4265,0,@664 4372,0,@664 4469,0,@664 4531,0,@664 4598,0,@664 4665,0,@664 4729,0,@664 4795,0,@664 4859,0,@664 4925,0,@664 4999,0,@664 5061,0,@664 5132,0,@664 5229,0,@664 5291,0,@664 5358,0,@664 5425,0,@664 5489,0,@664 5555,0,@664 5619,0,@664 5689,0,@664 5760,0,@664 5857,0,@664 5919,0,@664 5986,0,@664 6053,0,@664 6117,0,@664 6183,0,@664 6247,0,@664 6338,0,@664 6435,0,@664 6497,0,@664 6564,0,@664 6631,0,@664 6695,0,@664 6761,0,@664 6825,0,@664 6899,0,@664 6970,0,@664 7067,0,@664 7129,0,@664 7196,0,@664 7263,0,@664 7327,0,@664 7393,0,@664 7457,0,@664 7565,0,@664 7656,0,@664 7720,0,@664 7785,0,@664 7847,0,@664 7906,0,@664 7959,0,@664 8018,0,@664 8066,0,@664 8128,0,@664 8195,0,@664 8262,0,@664 8326,0,@664 8417,0,@664 8514,0,@664 8576,0,@664 8643,0,@664 8710,0,@664 8774,0,@664 8840,0,@664 8904,0,@664 8977,0,@625 9021,0,@664 9128,0,@664 9225,0,@664 9287,0,@664 9354,0,@664 9421,0,@664 9485,0,@664 9551,0,@664 9615,0,@664 9698,0,@625 9742,0,@664 9810,0,@625 9854,0,@664 9924,0,@664 9995,0,@664 10092,0,@664 10154,0,@664 10221,0,@664 10288,0,@664 10352,0,@664 10418,0,@664 10482,0,@664 10552,0,@664 10623,0,@664 10720,0,@664 10782,0,@664 10849,0,@664 10916,0,@664 10980,0,@664 11046,0,@664 11110,0,@664 11180,0,@664 11251,0,@664 11348,0,@664 11410,0,@664 11477,0,@664 11544,0,@664 11608,0,@664 11674,0,@664 11738,0,@664 11812,0,@664 11895,0,@664 11992,0,@664 12054,0,@664 12121,0,@664 12188,0,@664 12252,0,@664 12318,0,@664 12382,0,@664 12490,0,@664 12578,0,@664 12640,0,@664 12704,0,@664 12765,0,@664 12823,0,@664 12876,0,@664 12934,0,@664 13051,0,@664 13142,0,@664 13206,0,@664 13271,0,@664 13333,0,@664 13392,0,@664 13445,0,@664 13504,0,@664 13626,0,@664 13714,0,@664 13776,0,@664 13840,0,@664 13901,0,@664 13959,0,@664 14012,0,@664 14070,0,@664 14187,0,@664 14278,0,@664 14342,0,@664 14407,0,@664 14469,0,@664 14528,0,@664 14581,0,@664 14640,0,@664 14762,0,@664 14850,0,@664 14912,0,@664 14976,0,@664 15037,0,@664 15095,0,@664 15148,0,@664 15206,0,@664 15319,0,@664 15410,0,@664 15474,0,@664 15539,0,@664 15601,0,@664 15660,0,@664 15713,0,@664 15772,0,@664 12737:D5,152|483b65187305ff5558cd095048bae0fc6408000000004889d848bb90fe640800000000ff158f0000004989c641564c8b7424084d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b742408720d488d64242048c7c001000000c34889c04c8b742418498b5c86fc4c8b442410ff15360000004c8b2c244983c5024c892c24483b65187303ff5558ebb6f4000000000000|@6404,1,@17544,@12738,@12446|14,0,@5482 27,0,@5491 12738:D9,1472|483b65187306ff5558ca090153415048bae85c62080000000048c7c303000000ff15da0500004989c44d8b34244e8d2c75010000004983fd01750f49be487a650800000000e9c00000004d89eb4983c3084c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153e0500000f87fd0400004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426094d89ec49d1ec43c64426013d4d89ec49d1ec43c64426023e49d1ed43c6442e0320418066ffbf41564c8b7424104d8b264d89e54983fc050f852f0100004d89f6498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159b04000048bae85c62080000000048c7c305000000ff157c0400004989c64d8b2e4a8d0c6d010000004883f901750f49bc1014650800000000e99f0000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1de903000077724d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424087841c64424096d41c644240a6d498d7608498d7c240b48d1e9f3a441806424ffbfe966010000488d64241848b8f807620800000000488b5d08ff234d89f64983fd010f85260100004d89f6498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff154f03000048bae85c62080000000048c7c305000000ff15300300004989c64d8b2e4a8d0c6d010000004883f901750f49bc2814650800000000e9990000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1da502000077694d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086641c644240970498d7608498d7c240a48d1e9f3a441806424ffbfeb33488d64241848b8f807620800000000488b5d08ff234d89f64d8b7608498b06498b5e0849c7c005000000ff153a0200004989c44c8b14244d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe01750d488d6424084d89e5e9c20000004983fb01750d4d89d5488d642408e9af0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05900100000f87520100004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208488d642408498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a015620800000000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db6000000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c408ff22488d642408488d64241048b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6405,1,@17545,@12461,@10649,@10599,@10649,@10599,@10649|17,0,@707 61,0,@6403 335,0,@651 351,0,@707 394,0,@5663 578,0,@117 651,0,@651 667,0,@707 710,0,@5664 885,0,@117 1189,0,@165 1370,0,@117 1391,0,@117 1412,0,@117 12739:D6,2552|483b65187306ff5558ca090750534150415141524c8b7424084d8b6ef849c1e50849c1ed074983cd01488b5c24204c8b73f849c1e60849c1ee074983ce01415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564983fd017d0a488d642440e9cf0300004c3b2d410900000f8dbd0300004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948b8a89b620800000000f348ab415649c7c6010000004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d89750049be107b6508000000004d89750049c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d89ee4983fd017d0a488d642458e9bf0200004d89f64d89f54c3b35380800000f8da70200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642460e93b0200004d89f64d89f54c3b35c10700000f8d230200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a204d89f749d1ec4d8966f841c646ff404c89f748d1e948b8c086620800000000f348ab415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564d89ec4d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564d89ed4d89ee4983fd017d0a488d642478e9600100004d89f64d89f54c3b35f30600000f8d480100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415648c7c0010000004c8b0424ff15df060000ff742460ff742478ff742458ff742458ff742448ff742458ffb42498000000ff74245048b8587e650800000000488b5c24604c8b4424404c8b8c24b80000004c8b542478ff158d0600004c8b7424504d89f54983fe017514488d64241049be48c2620800000000e9fe0000004d89ed4d89ee4983fd017e624d89f64d89f54c3b350a0600007d494d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01eb76488da42480000000eb08488da4248000000048b8d050640800000000488b5d08ff23488d64247848b8d055620800000000488b5d08ff23488d64246048b8d055620800000000488b5d08ff23488d64245848b8d055620800000000488b5d08ff23488d64244048b8d055620800000000488b5d08ff234c8b7424604c3b34247f44488d6424084c8b2c244d89ee418065ffbf4d89f6488d6424184c8b2c244d8b6d00488d6424084983fd01750a488d642410e964030000488d64241049c7c301000000eb71ff742418ff742428488b442410488b5c24204c8b8424980000004c8b4c24384c8b542440ff15100500004989c64c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027118488da4249000000048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558e940ffffff41f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bc48c2620800000000e9ba00000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64245848b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25db0300007c15488d64245848b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb01756b418065ffbf4d89ec4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244983fd017505e97b01000049c7c5010000004d89e6eb414d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64245848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e94effffff41f6c60175494d8b1e4d8b56084d8b5bf849c1e30849c1eb074983cb014983eb014d03dd7115488d64245848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebb14983fd01750f49be48c2620800000000e9ca0000004c3b2d570200007c15488d64245848b8887e650800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c50100000041f6c4017559498b34244d8b5424084c8b5ef849c1e30849c1eb074983cb014c89d94b8d7caefc48d1e9f348a54983eb014d03dd7115488d64245848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eba1418066ffbf4c8b6c24184d8b6d0049c7c30100000041f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd48c2620800000000e9b700000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64245848b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25d60000007c15488d64245848b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017531418065ffbf4c8b24244d8b1c24488d6424084c8b6424284d8934244d895c24084d896c241048c7c0010000004883c450c34d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64245848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078eb8bf400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6436,1,@17547,@12742,@12744,@12741|237,0,@1145 295,0,@6406 609,0,@998 870,0,@6432 928,0,@1447 1061,0,@4394 1082,0,@657 1103,0,@657 1124,0,@657 1145,0,@657 1319,0,@105 1427,0,@1447 1476,0,@105 1526,0,@1448 1753,0,@105 1835,0,@105 1877,0,@1447 1906,0,@6434 2053,0,@105 2184,0,@1447 2233,0,@105 2283,0,@1448 2452,0,@105 12740:D3,2424|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54d8b24244983fc010f858303000041ff75084d8b6d104983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb8af620800000000e9140200004d89f64983ee027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd207b6508000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50576308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd507b6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd030f85fd0100004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be207b6508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd787c6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c341ff76084d8b76104983ed0241557115488d64241048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb8af620800000000e9140200004d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd207b6508000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8426308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd587d6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@6431,1,@17546|26,0,@1044 78,0,@105 112,0,@1308 141,0,@105 191,0,@15183 227,0,@105 282,0,@15183 327,0,@1311 375,0,@866 420,0,@6407 464,0,@866 509,0,@1315 597,0,@866 641,0,@2519 690,0,@1318 835,0,@866 880,0,@6409 965,0,@1044 1003,0,@105 1053,0,@15183 1098,0,@1311 1147,0,@866 1191,0,@6407 1236,0,@1318 1381,0,@866 1426,0,@6417 1511,0,@1044 1543,0,@105 1577,0,@1308 1606,0,@105 1656,0,@15182 1692,0,@105 1747,0,@15183 1792,0,@1311 1840,0,@866 1885,0,@6407 1929,0,@866 1974,0,@1315 2062,0,@866 2106,0,@2353 2155,0,@1318 2300,0,@866 2345,0,@6424 12741:D3,760|483b65187306ff5558ca0901505341504c8b7424084d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64241848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f60424010f85cb0000004c8b3424498b064d89f641ff76084c8b6424104d8b7424f84d89f349c1e60849c1ee074983ce01493bc67215488d64242848b81051620800000000488b5d08ff234d89e44d8b7484fc4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d8975084c8b5424204d8955004d89e449c1e30849c1eb074983cb01493bc37215488d64242848b80057620800000000488b5d08ff234d89e44d89e04d896c84fc41f6c601740c488b5c2418e830fdffffeb00415d4c892c24483b65187303ff5558e92bffffff488d64242048c7c001000000c3f400000000|@6509,1,@17772|57,0,@628 590,0,@625 679,0,@664 12742:D4,2880|483b65187306ff5558ca09074d89d64883f801745b4c8b6bf849c1e50849c1ed074983cd01493bc5721048b81051620800000000488b5d08ff234c8b6c83fc41f6c501740949c7c503000000eb0749c7c5010000004983f5024983f5024983fd03750d48b8187f650800000000c210004d8b68f849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b6c80fc4d8b65004d8b69f849c1e50849c1ed074983cd01493bc5721048b81051620800000000488b5d08ff234d8b6c81fc41ff75004d8b55106a016a014d8b2c244c8d1d080000004f8d5cabfc41ffe3e933000000909090e9c7030000909090e9a5040000909090e9ba040000909090e90c050000909090e996080000909090e9970900009090904d8b6c2408498b7c24104d8b5c24184d8b4c24204d8b66f849c1e40849c1ec074983cc01493bfc7215488d64241848b81051620800000000488b5d08ff234d8b64befc4983fc017515488d64241848b808d5620800000000488b5d08ff234d8b24244d8b6424084d3be275084989fce9330100004d3bd40f8e0a0300004d89d04d2bc47115488d64241848b8d006620800000000488b5d08ff234983c0014d8d67e04c3b65107306ff5550ca806f4d89e749c74424f80300000049c7442410030000004d8944240849c70424350000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f80200000049c74008010000004d89204d8d67e84c3b65107306ff5550ca806f4d89e749c74424f80200000049897c240849c704240b000000498d7fe8483b7d107306ff5550ca007f4989ff48c747f8020000004c8947084c89274c8b6424284d8b24244c8b4424284d8b004983c0027115488d64241848b8d006620800000000488b5d08ff23488b7424284c89064c8b442420498b304d8d47e84c3b45107306ff5550cac07e4d89c749c740f80200000049897008498938488b7c24204c89074d8b46f849c1e00849c1e8074983c8014d3bc87215488d64241848b81051620800000000488b5d08ff234f8b748efc4983fe017515488d64241848b808d5620800000000488b5d08ff234d8b364d8b76084d3bf275084d89cae9280100004d3bd60f8e640100004d2bd67115488d64241848b8d006620800000000488b5d08ff234983c2014d8d77e04c3b75107306ff5550ca003e4d89f749c746f80300000049c74610030000004d89560849c706350000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e0849c7060b0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d8951084d89314c8b7424284d8b164c8b7424284d8b364983c6027115488d64241848b8d006620800000000488b5d08ff234c8b4424284d89304c8b7424204d8b064d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4c8b4c24204d89314d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c706010000004c8b6c24104c892c244c89742408e930060000488d64241848b8307f650800000000488b5d08ff23488d64241848b8307f650800000000488b5d08ff234d8b6c24104d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64241848b81051620800000000488b5d08ff234f8b74aefc4983fe017515488d64241848b808d5620800000000488b5d08ff234d8b364d8b1e4d8b6e084d3bea75074c8b742410eb734d89d64d2bf57115488d64241848b8d006620800000000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849c74500350000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24104d895e084d892e4c8934244c89642408e92005000049bea89b6208000000004c8b6c24104c892c244c89742408e903050000498b4424084c8b4c24284c8b6c24204d89d04d89ea4c89f3ff157c0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24104c892c244c89742408e9a90400004d8b4c24084d8b5c24104d8b6ef849c1e50849c1ed074983cd014d3bcd7215488d64241848b81051620800000000488b5d08ff234f8b6c8efc4983fd017515488d64241848b808d5620800000000488b5d08ff234d8b6d004d8b6d084d3bea75084d89cde9360100004d3bd50f8e0b0300004d89d44d2be57115488d64241848b8d006620800000000488b5d08ff234983c4014d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f80300000049c74510030000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c745000b0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d8961084d89294c8b6c24284d8b6d004c8b6424284d8b24244983c4027115488d64241848b8d006620800000000488b5d08ff234c8b4424284d89204c8b6424204d8b04244d8d67e84c3b65107306ff5550ca006f4d89e749c74424f8020000004d894424084d890c244c8b4c24204d89214d8b66f849c1e40849c1ec074983cc014d3bdc7215488d64241848b81051620800000000488b5d08ff234f8b749efc4983fe017515488d64241848b808d5620800000000488b5d08ff234d8b364d8b76084d3bf275084d89dce92e0100004d3bd60f8e620100004d89d44d2be67115488d64241848b8d006620800000000488b5d08ff234983c4014d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610030000004d89660849c706350000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c7060b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334c8b7424284d8b264c8b7424284d8b364983c6027115488d64241848b8d006620800000000488b5d08ff234c8b5424284d89324c8b7424204d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b5c24204d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706090000004c8b6c24104c892c244c89742408e941010000488d64241848b8307f650800000000488b5d08ff23488d64241848b8307f650800000000488b5d08ff234d8b6424084d8b6ef849c1e50849c1ed074983cd014d3be57215488d64241848b81051620800000000488b5d08ff234f8b74a6fc4983fe017515488d64241848b808d5620800000000488b5d08ff234d8b364d8b1e4d8b76084d3bf275074c8b6c2410eb734d89d54d2bee7115488d64241848b8d006620800000000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706350000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060b0000004c892c244c89742408eb0e4c8b7424104c8934244c89642408415c415e49c7c5010000004883c40841f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c21000f40000000000|@6441,1,@17548,@12743|44,0,@625 101,0,@6437 135,0,@628 181,0,@625 335,0,@625 367,0,@1556 427,0,@105 638,0,@105 738,0,@625 770,0,@1556 825,0,@105 1028,0,@105 1176,0,@6438 1197,0,@6438 1244,0,@625 1276,0,@1556 1327,0,@105 1443,0,@1145 1598,0,@625 1630,0,@1556 1689,0,@105 1899,0,@105 2003,0,@625 2035,0,@1556 2093,0,@105 2299,0,@105 2439,0,@6438 2460,0,@6438 2507,0,@625 2539,0,@1556 2590,0,@105 12743:D3,464|483b65187306ff5558ca0907a8010f85ae0100004c8b20488b40084c8b73f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234e8b74a3fc4983fe01751048b808d5620800000000488b5d08ff234d8b364d8b76084d3bf075084d89e6e90d0100004d3bc60f8e3a0100004d89c54d2bee711048b8d006620800000000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca09374d89f749c746f80300000049c74610030000004d896e0849c706350000004d8d6fe84c3b6d107306ff5550ca09574d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca09374d89f749c746f8020000004d89660849c7060b0000004d8d67e84c3b65107306ff5550ca09674d89e749c74424f8020000004d896c24084d8934244d8b314d89f54983c502711048b8d006620800000000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca095f4d89ef49c745f8020000004d895d084d8965004d892a4156e87dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8307f650800000000488b5d08ff2348c7c001000000c3f40000000000|@742,1,@17549|50,0,@625 77,0,@1556 130,0,@105 322,0,@105 436,0,@6438 12744:D10,1816|483b65187306ff5558ca090753415041514152488b5c2418ff15420700004989c64156f6042401750c4c8b34244d8b2e4d89f6eb0f488d64242848c7c001000000c2400041f6c60175464d8b1e4d8b66084d8b0b4c8b5424184d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81051620800000000488b5d08ff234d89d24f8b548afce9dc05000049c7c6010000006a016a014983fe0175134d8b75004c8934244d8b75084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424488b4424104c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64244048b89051620800000000488b5d08ff234d89ed4d89f64f8b6caefc41ff750041ff75084d8b4d204d8b75284d8b55384d8b45404983fe01750949c7c603000000eb0749c7c6010000004983f60241566a016a014889e3ff1507060000415c415e4d89f34d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d896500415549c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424184d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24684d8b55f849c1e20849c1ea074983ca014c8b6424304d89e34d3be27215488d64247048b80057620800000000488b5d08ff234d89ed4d89db4d89dc4f89749dfc4c8b7424604d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64247048b81051620800000000488b5d08ff234d89ed4d89f64b8b44aefc488b5c2478ff15a9040000488b9c2488000000ff1593040000ff7424206a01f6442408010f858f0000004c8b742408498b064d89f641ff76084c8b8c24b80000004c8b8424b00000004c8bb424a00000004c8bac24c00000004c8ba424980000004c8b9c24c80000004c8b9424a80000004156ff742430415541544153ff7424484152ff7424504d89c2488b5c24484c8b8424a8000000ff15070400004989c4415d4c8924244c896c2408483b65187303ff5558e966ffffff415d4c8b7424184d8b264c8bb424900000004d8b1e4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d895e084d892e4c8b6c24104d8b6d00498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4c8bac24800000004d8b5df849c1e30849c1eb074983cb014c8b6c24384d89ec4d3beb7215488d64247848b80057620800000000488b5d08ff23488d6424304c8b6c24504d89e44f8974a5fc4c8b34244d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e990000000909090e9c3000000909090e9cc000000909090e9d5000000909090e92f010000909090e95f0100009090904d89f64d8b66104d89f64d8b7620488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c89304883c418e9030100004d89f64d8b7610488d642408498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883c418e9c8000000488d64242048c7c001000000e9b70000004d89f6498b4608488d642420e9a60000004d89f54d8b75084d89ed4d8b6510488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c89304883c418eb444d89f64d8b7608488d642408498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883c418eb0c488d64242048c7c001000000ff15750100004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff154d0100004989c6488d6424084156488b5c2420488b542418488b4c2410488b4424084c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438488b742430488974243048897c24384c894424404989d04c894c24484989c94c895424504989c2488b04244c895c24584c896424604c896c24684883c428e999f9ffff488d64242841f6c201755e498b3a4d8b4a084c8b442420498b70f848c1e60848c1ee074883ce01483bfe7215488d64242848b81051620800000000488b5d08ff234d89c04d8b44b8fc4983f80174114d89ca483b65187306ff5558ca007ceba549c7c201000000eb0749c7c2030000004983fa0375234d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee997f9ffff4d89e6483b65187306ff5558ca0060e930f9fffff4000000|@6442,1,@17550,@12746,@12747,@12748,@12963,@12964,@12965,@12745|117,0,@625 247,0,@628 576,0,@664 643,0,@625 999,0,@664 1690,0,@625 12745:D3,184|483b65187305ff5558cd09a8010f859a000000ff30488b40084c8b34244d8b364c8b6bf849c1e50849c1ed074983cd014d3bf57215488d64240848b81051620800000000488b5d08ff234e8b74b3fc4983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe037434e88cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e953ffffff48c7c001000000c3f40000|@523,1,@17771|60,0,@625 12746:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17551| 12747:D3,120|483b65187305ff5558cd09a801755f4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e4156e8c1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@17552| 12748:D7,1192|483b65187306ff5558ca09074c89cf4c89d64150ff304c8b7424504c8b6c24484c8b6424404c8b5c24384c8b5424304c8b4c24284c8b44242041564155415441534152415141504989f24989f94c8b442440ff15800400004989c641564c8b6c24084d89ee4983fd01750c48c7c001000000e9e70300004c8b6c245041ff75004d89f648c7c00100000041f6c6010f85520100004d8b1e4d8b6e084c8b6424184d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64242048b81051620800000000488b5d08ff234d89e44f8b549cfc4d8b224983fc030f85ca0000004d8b62084d8b52104d8b4a084983fc017d2a4d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24e98c0000004c8b5424584d8b124983e9014d03cc7115488d64242048b8d006620800000000488b5d08ff234d3bd1753c4c8b5c24384d8b1b41f6c30175194d8b5b084c8b5424384d891a4c8b5c24584d89234989c4eb3a488d64242048b8e089620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb254d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e9a4feffff4c8b7424584d8b364c3b3424752a4c8b742428498b1e4883fb0175054989c6eb09ff15c30200004989c64c8b6c24284d897500e99e0100004c8b742428498b1e4883fb0175054989c6eb09ff15910200004989c64c8b6c24584d8b5d004d89f449c7c50100000041f6c4010f854a0100004d8b04244d8b5424084c8b4c2418498b79f848c1e70848c1ef074883cf014c3bc77215488d64242048b81051620800000000488b5d08ff234d89c94b8b7c81fc4c8b0f4983f9030f85c40000004c8b4f08488b7f10488b77084983f9017d274d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d8901e989000000488b7c2458488b3f4883ee014903f17115488d64242048b8d006620800000000488b5d08ff23483bfe753c4c8b4424384d8b0041f6c00175194d8b4008488b7c24384c89074c8b4424584d89084d89e9eb37488d64242048b8e089620800000000488b5d08ff234d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d8901eb224d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d89014d89cd4d89d4483b65187306ff5558ca0078e9acfeffff4c8b6424584d8b24244d3be30f85dc0000004c8b6c24284d8975004c8b7424584d8b364c3b34247511488d64240848c7c001000000e9830000004c8b7424584d8b364c8b2c244d2bee488d6424087115488d64241848b8d006620800000000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70635000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b34244c89f34983fe017508488d642418c240004889db488d6424084c8b7424104c897424504883c450ff25310000004d89ee483b65187306ff5558ca0040e997fdfffff400000000|@6479,1,@17553,@12750,@12751,@12752,@12749|189,0,@625 308,0,@105 373,0,@1025 641,0,@625 757,0,@105 822,0,@1025 1016,0,@105 12749:D217,56976|488dbc2428ffffff483b7d187306ff5560ca0907534150415141524c8b70084d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e92c020000909090e943030000909090e96a040000909090e982050000909090e991050000909090e996080000909090e9b6090000909090e9d20a0000909090e9f20b0000909090e9f30b0000909090e91a0d0000909090e9210f0000909090e939100000909090e96b100000909090e986110000909090e9c7150000909090e9631e0000909090e9b31f0000909090e96b200000909090e97e210000909090e99e220000909090e971240000909090e90b270000909090e90b2a0000909090e91e2b0000909090e9992d0000909090e99a2d0000909090e9b22e0000909090e9ce2f0000909090e9ee300000909090e93d320000909090e964330000909090e9d9340000909090e99a360000909090e9b6370000909090e9073b0000909090e9df3b0000909090e9fb3c0000909090e9173e0000909090e9333f0000909090e953400000909090e90b410000909090e926420000909090498b460841ff761041ff76186a016a014c8b4c24584c8b5424684c8b7424704c8b6c24504c8b642448ff742428ff742428415641554154488d5c24284c8b442458ff1578e30000415d584d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620010000004c8b24244d896618488d6424084c8b24244d896610488d6424204d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff25dee2000041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9f8d700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9acd60000488d64244848b83880650800000000488b5d08ff234d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e95ad200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e936d00000488d64246048b83880650800000000488b5d08ff2341ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9f3cb00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97fc60000488d64244848b83880650800000000488b5d08ff2341ff7608498b461049c7c6010000004989c5e9e6c300004d8b5e08498b46104c8b74245849c706010000004c8b7424304d8b3641f6c6010f85d20200004d8b2e4d8b6d004983fd01750949c7c503000000eb0749c7c5010000004983fd030f85a40200004d8b76084c8b6c24304d8975004c8b7424504d8b364983ee047115488d64242048b8d006620800000000488b5d08ff234c8b6c24504d8975004c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81051620800000000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89051620800000000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b880650800000000488b5d08ff234d8b164d89d54983fa037515488d64242048b83881650800000000488b5d08ff234983fd0175094d8b7608e9f50000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89051620800000000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b324d89f54d89d24983c5027115488d64242048b8d006620800000000488b5d08ff234d89d24d892a4c8b14244d8b024d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89750849c74500010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64242048b80057620800000000488b5d08ff234d89e44f896c9cfc41566a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15dddc0000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7060b000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff2558dc0000488d642420eb05488d64242048b8b881650800000000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9a3bc00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e92cb20000488d64245848b83880650800000000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9e5ad00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e924aa0000488d64245048b83880650800000000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9d9a500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97f9b0000488d64245848b83880650800000000488b5d08ff23488d64241858c238004d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e9249700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e983940000488d64246048b83880650800000000488b5d08ff234d8b760841ff3641ff760841ff7610498b46206a016a014c8b4c24784c8b5424704c8bb424800000004c8b6c24684156ff742438ff7424384155488d5c24204c8b442458ff153ed70000ff3424ff7424106a016a014c8b8c24980000004c8b9424900000004c8bb424a00000004c8bac24880000004156ff742458ff7424584155488b442458488d5c24204c8b442478ff15ead60000ff3424ff7424106a016a014c8b8c24a00000004c8b9424b00000004c8bb424b80000004c8bac24980000004c8ba42490000000ff742470ff742470415641554154488b842488000000488d5c24284c8b8424a0000000ff1586d600004c8b3424ff7424084c8bac24c800000049c74500010000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424384d89652049c74518010000004c8b6424584d8965104c8b6424184d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061700000041564c8bb424900000004c89f34983fe017507488b5c2448eb0e488b442448ff15d9d500004889c34883fb0175074c8b742428eb0e488b442428ff15b6d500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c488000000c23800584c8bb424880000004c89b424c00000004881c4c0000000ff2551d5000041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9318e00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9978b0000488d64244848b83880650800000000488b5d08ff23488d642418498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849bed8e86408000000004c8930c2380041ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9178700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9d27c0000488d64245048b83880650800000000488b5d08ff23498b460841ff761041ff761841ff76206a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488d5c24204c8b442460ff1580d20000ff3424ff742410ff7424206a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff1525d20000ff3424488b442410f644244801750c49beb84b620800000000eb0749c7c60100000041564c8b6c24604d89ee4983fd010f85a40000004c8b7424284983fe01750c49c7c601000000e9880000004c8b6424704d8b2c244d89ee4d89e44983c6027118488da4248800000048b8d006620800000000488b5d08ff234d89e44d8934244c8b6424684d8b1c244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706050000004d89e44d8934244d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892ee9f50100004d89f64d8b1e4c8b6424784d8b7424f849c1e60849c1ee074983ce014d3bde7218488da4248800000048b81051620800000000488b5d08ff234d89e44f8b749cfc4c8bac24b00000004d8b6df849c1e50849c1ed074983cd014d3bdd7218488da4248800000048b89051620800000000488b5d08ff234c8bac24b00000004f8b6c9dfc4983fd037518488da4248800000048b8b880650800000000488b5d08ff234d8b164d89d54983fa037518488da4248800000048b83881650800000000488b5d08ff234983fd0175094d8b6e08e9030100004c8bb424a00000004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4248800000048b89051620800000000488b5d08ff234c8bb424a00000004f8b4c9efc4c8b5424704d8b2a4d89ee4d89d24983c6027118488da4248800000048b8d006620800000000488b5d08ff234d89d24d89324c8b5424684d8b024d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d8946084d890e4d89d24d89324d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7218488da4248800000048b80057620800000000488b5d08ff234d89e44f89749cfc4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e41564c8b7424304c89f34983fe0175054989c5eb09ff1533cf00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424084d8966204d896e184c8b2c244d896e10488d6424104c8b6c24284d896e0849c7061f00000041564c8bb424800000004c89f34983fe017507488b5c2408eb0e488b442408ff15bece00004889c34883fb0175074c8b742420eb0e488b442420ff159bce00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c480000000c2380041ff760841ff761041ff76184c8b7424604d8b66f849c1e40849c1ec074983cc014c8b7424104d89f54d3bf47215488d64243848b89051620800000000488b5d08ff234c8b7424604d89ed4f8b74aefc4983fe030f85060300006a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488b442438488d5c24204c8b442460ff15c0cd0000ff3424488b5c2410488b4424184883fb017502eb06ff159dcd00004c8b5c24484d8b63f849c1e40849c1ec074983cc014c8b6c24304d89ee4d3bec7215488d64245848b81051620800000000488b5d08ff234d89f64d89db4f8b6cb3fc4d8b6d004983fd050f85450200004c8b5424404d8b224d89e54d89d24983c5027115488d64245848b8d006620800000000488b5d08ff234d89d24d892a4c8b5424384d8b0a4d8d6fe84c3b6d107306ff5550ca015e4d89ef49c745f8020000004d894d0849b9a8946208000000004d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f80200000049c74508030000004d8965004c8ba424880000004d8b14244d8d67e04c3b65107306ff5550ca016c4d89e749c74424f8030000004d896c24104d8954240849c70424030000004d89db4d8b4bf849c1e10849c1e9074983c9014d89f64d89f24d3bf17215488d64245848b80057620800000000488b5d08ff234d89db4d89d24d89d64f896493fc4d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d89f64d8974240849c70424030000004c8bb424880000004d8b364983c6027115488d64245848b8d006620800000000488b5d08ff234c8b9c24880000004d89334c8b7424684d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264c8b6424684d8934244c8b7424604d8b264c8bb424880000004d8b364d3be67e054d89e6eb004c8b6424604d8934244d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062f00000041564c8b7424504c89f34983fe0175054989c6eb09ff1535cb00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c23800488d64245848b84082650800000000488b5d08ff236a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488b442438488d5c24204c8b442460ff15a2ca0000ff3424ff742410ff7424204c8bb424800000004d8b66f849c1e40849c1ec074983cc014c8b7424404d89f54d3bf47215488d64246848b89051620800000000488b5d08ff234c8bb424800000004d89ed4f8b74aefc4c8b5c24584d8b63f849c1e40849c1ec074983cc014d89ed4d89e94d3bec7215488d64246848b81051620800000000488b5d08ff234d89c94d89db4f8b6c8bfc4d8b55004d89d44983fa037515488d64246848b8c882650800000000488b5d08ff234983fc0175094d8b6d08e9c90000004c8b5424504d8b2a4d89ec4d89d24983c4027115488d64246848b8d006620800000000488b5d08ff234d89d24d89224c8b5424484d8b024d8d67e84c3b65107306ff5550ca006f4d89e749c74424f8020000004d894424084d8934244d89d24d89224d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424010000004d89db4d8b43f849c1e00849c1e8074983c8014d89c94d89ca4d3bc87215488d64246848b80057620800000000488b5d08ff234d89db4d89d24f896493fc41554c8b6424384d8b2c244983fd070f85880200004d89e44d8b6c24184d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd030f855c0200004d89e44d89e541ff7424084d89ed41ff75204c8b6424504d89e54983fc07750949c7c507000000eb194d89ed4983fd09750949c7c507000000eb0749c7c50b00000041556a016a014983fe07751c49be60fe6208000000004d8b2e4c892c244d8b76084c89742408eb244983fe050f85d001000049bee09f6208000000004d8b2e4c892c244d8b76084c897424084c8b2424ff7424084c8bb424880000004d89f541ff364d89ed4d8b75004983c6027118488da424a800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8bac24880000004d8b5d004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d89ed4d8975004c8bb424e0000000498b06488b5c24304c8b442428ff15aac700004989c64c8bac24e00000004d8975004d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424284d8975104c8b7424304d89750849c74500010000004d8d5fd84c3b5d107306ff5550ca00204d89df49c743f8040000004c8b7424084d8973184c8b24244d89e64d8963104d896b084c8b6c24204d89ec4d892b4c8bac24e00000004d8b55004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d895d004c8b9c24e00000004d892b4d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24384d895d184d89e44d8965104d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c428eb1f488da4249800000048b85083650800000000488b5d08ff2349c7c60100000041564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24204d896e184c8b6c24484d896e104c8b6c24084d896e0849c7062100000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff1501c600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2410eb0e488b442410ff15b3c500004889c34883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff257fc500004d8b6e0841ff761041ff761841ff76206a016a0141f6c5010f851b01000041ff75004c8b7424404d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64245048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24504d89eb41ff75004d89db4d8b2b4983c5027115488d64247048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24504d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a80000004d8b6d00e9866b00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9056b0000488d64246848b83880650800000000488b5d08ff2349beb09f6208000000004d8b2e4c892c244d8b76084c89742408e933690000498b460841ff76106a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15dcc30000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c70625000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff2557c3000041ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24284d89eb41ff75004d89db4d8b2b4983c5027115488d64244848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24284d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24800000004d8b6d00e94d6400004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98f630000488d64244048b83880650800000000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9445f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e94b5d0000488d64245848b83880650800000000488b5d08ff234d8b5e084c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81051620800000000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89051620800000000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b880650800000000488b5d08ff234d8b164d89d54983fa037515488d64242048b83881650800000000488b5d08ff234983fd01750e488d6424184d8b6e08e9fd0000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89051620800000000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b2a4d89ee4d89d24983c6027115488d64242048b8d006620800000000488b5d08ff234d89d24d89324c8b14244d8b024d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89d24d8932488d6424104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241048b80057620800000000488b5d08ff234d89e44f89749cfc488d6424084c8b7424184d8b1e4c8b7424384d8b366a016a01e9415900004d8b5e084c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81051620800000000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89051620800000000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b880650800000000488b5d08ff234d8b164d89d54983fa037515488d64242048b83881650800000000488b5d08ff234983fd01750e488d6424184d8b6e08e9fd0000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89051620800000000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b2a4d89ee4d89d24983c6027115488d64242048b8d006620800000000488b5d08ff234d89d24d89324c8b14244d8b024d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89d24d8932488d6424104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241048b80057620800000000488b5d08ff234d89e44f89749cfc488d6424084c8b7424384d8b364983c6047115488d64240848b8d006620800000000488b5d08ff234c8b6424384d8934244c8b7424184d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bcb84b6208000000004d89264c8b6424184d8934244c8b7424104d8b264c8b7424384d8b364d3be67e054d89e6eb004c8b6424104d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c23800498b460841ff76106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff1551bc0000ff3424488b5c2410488b4424184883fb017502eb06ff152ebc00004c8b7424784d8b0e4c8b5c24204d8b134d89db4d8b43084c8b6424384d8b7424f849c1e60849c1ee074983ce014d3bd67215488d64244848b81051620800000000488b5d08ff234d89e44f8b7494fc4d8b364983fe050f853e020000488b7c24304c8b374d89f54889ff4983c5027115488d64244848b8d006620800000000488b5d08ff234889ff4c892f498d77f0483b75107306ff5550ca015f4989f748c746f8010000004c8906488b7c2428488b174d8d6fe84c3b6d107306ff5550cac55f4d89ef49c745f80200000049895508498975004889ff4c892f4d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d8975004d8d77e04c3b75107306ff5550ca013e4d89f749c746f8030000004d896e104d894e0849c706030000004d89e44d8b4c24f849c1e10849c1e9074983c9014d3bd17215488d64244848b80057620800000000488b5d08ff234d89e44f897494fc4d8d67e84c3b65107306ff5550ca01284d89e749c74424f8020000004d89db4d89de4d895c240849c70424050000004d89f64d8b5e084c8b7424784d8b364983eb014d03f37115488d64244848b8d006620800000000488b5d08ff234c8b5c24784d89334c8b7424584d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264c8b6424584d8934244c8b7424504d8b264c8b7424784d8b364d3be67e054d89e6eb004c8b6424504d8934244d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062f00000041564c8b7424404c89f34983fe0175054989c6eb09ff15c1b900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c23800488d64244848b8c883650800000000488b5d08ff2341ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24284d89eb41ff75004d89db4d8b2b4983c5027115488d64244848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24284d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24800000004d8b6d00e9714f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9b34e0000488d64244048b83880650800000000488b5d08ff234d8b6e084d8b76104c8b6424504d8b04244d8b0e498b7e084c8b5424104d8b62f849c1e40849c1ec074983cc014d3bcc7215488d64242048b81051620800000000488b5d08ff234d89d24f8b648afc4d8b24244983fc050f8511020000488b7424084c8b1e4d89dc4889f64983c4027115488d64242048b8d006620800000000488b5d08ff234889f64c8926498d57f0483b55107306ff5550ca806f4989d748c742f80100000048893a488b3424488b0e4d8d67e84c3b65107306ff5550cac66f4d89e749c74424f80200000049894c2408498914244889f64c8926488d6424104d8d67e84c3b65107306ff5550ca806f4d89e749c74424f80200000049897c24084d891c244d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8963104d89430849c703030000004d89d24d8b42f849c1e00849c1e8074983c8014d3bc87215488d64241048b80057620800000000488b5d08ff234d89d24f895c8afc488d6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703050000004d8b56084c8b7424384d8b364983ea014d03f27115488d64240848b8d006620800000000488b5d08ff234c8b5424384d89324c8b7424184d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b5c24184d89334c8b7424104d8b1e4c8b7424384d8b364d3bde7e054d89deeb004c8b5c24104d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70633000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c23800488d64242048b8c883650800000000488b5d08ff23488d64241858c2380041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9e44700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98a460000488d64244848b83880650800000000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9434200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9dc400000488d64245048b83880650800000000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9913c00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9983a0000488d64245848b83880650800000000488b5d08ff2341ff7608498b46106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff151eb20000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15f8b100004989c641566a016a014c8b4c24784c8b9424880000004c8bb424900000004c8b6c24704c8b642468ff742448ff742448415641554154488b442460488d5c24284c8b442478ff15a5b100004c8b2c24ff7424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d896e0849c7063d00000041564c8b7424684c89f34983fe0175074c8b742420eb0e488b442420ff1544b100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c460c23800584c8b7424604c89b424980000004881c498000000ff25e5b000004d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e9ef3400004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9cb320000488d64246048b83880650800000000488b5d08ff234d8b760841ff3641ff760841ff761041ff7618498b462041ff76286a016a014c8b8c24880000004c8b9424800000004c8bb424900000004c8b6c24784156ff742448ff7424484155488d5c24204c8b442468ff1556af0000ff3424ff7424104c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424404d89e54d3be37215488d64246848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9252e00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e93e2c0000488da4248000000048b83880650800000000488b5d08ff2341ff7608498b461041ff76186a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff15e9ad0000415c584c8b34244d8b2e4d89f64d8b4e08488d6424084c8b7424184d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85fe0000004d8b6e084d8b5e104c8b7424584d8b164d89ce4983ee014d03f57115488d64242848b8d006620800000000488b5d08ff234d2bd67115488d64242848b8d006620800000000488b5d08ff234983c2014c8b34244d89f54983ee014d03d67115488d64242848b8d006620800000000488b5d08ff234d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d89ed4d896e08488d64240849c7064300000041564c8b7424204c89f34983fe0175054989c6eb09ff15bbac00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c23800488d6424284d89ee4983fe01751048b85084650800000000488b5d08ff2348b8d084650800000000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e92b2600004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e908240000488d64245048b83880650800000000488b5d08ff234d8b760841ff364d8b5e0841ff7610498b461841ff76204c8b6424284d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64243848b81051620800000000488b5d08ff234d89e44f8b749cfc4c8b6c24604d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64243848b89051620800000000488b5d08ff234c8b6c24604f8b6c9dfc4983fd037515488d64243848b8b880650800000000488b5d08ff234d8b164d89d54983fa037515488d64243848b83881650800000000488b5d08ff234983fd0175094d8b7608e9f60000004c8b7424504d8b76f849c1e60849c1ee074983ce014d3bde7215488d64243848b89051620800000000488b5d08ff234c8b7424504f8b4c9efc4c8b5424204d8b324d89f54d89d24983c5027115488d64243848b8d006620800000000488b5d08ff234d89d24d892a4c8b5424184d8b024d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89750849c74500010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64243848b80057620800000000488b5d08ff234d89e44f896c9cfc41564c8b74247041ff366a016a014c8b8c24880000004c8b9424800000004c8bb424900000004c8b6c24784156ff742448ff7424484155ff742430ff742448488d5c24304c8b442478ff1514a90000ff3424ff7424106a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442470488d5c24204c8b842488000000ff15bda80000ff34244c8b7424104d8d6fc84c3b6d107306ff5550ca00404d89ef49c745f8060000004c8b6424384d8965284c8b6424484d8965204c8b6424184d8965184c8b6424504d8965104c8b6424404d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064700000041564c8bb424800000004c89f34983fe017507488b5c2428eb0e488b442428ff1516a800004889c34883fb0175074c8b742408eb0e488b442408ff15f3a700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c480000000c23800498b460841ff76106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff1575a70000ff3424488b5c2410488b4424184883fb017502eb06ff1552a700004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24204d896e104c8b2c244d896e08488d64240849c7064900000041564c8b7424404c89f34983fe0175054989c6eb09ff15f8a600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041ff760841ff761841ff76204c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9881b00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e962190000488d64245048b83880650800000000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e91b1500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9b4130000488d64245048b83880650800000000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e96d0f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9060e0000488d64245048b83880650800000000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9bb0900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9c2070000488d64245848b83880650800000000488b5d08ff23498b460841ff76106a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15e4a10000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c70653000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff255fa1000041ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9bc0200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e96c010000488d64245048b83880650800000000488b5d08ff2341ff7608498b46106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff15f69f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15d09f00004989c641566a016a014c8b4c24784c8b9424880000004c8bb424900000004c8b6c24704c8b642468ff742448ff742448415641554154488b442460488d5c24284c8b442478ff157d9f00004c8b2c24ff7424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d896e0849c7065700000041564c8b7424684c89f34983fe0175074c8b742420eb0e488b442420ff151c9f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c460c23800584c8b7424604c89b424980000004881c498000000ff25bd9e0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15979e00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff153b9e00004c8b2c24ff7424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424204d8966184c8b6424484d8966104d896e0849c7065500000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff15d19d00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff25729d000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2430ff15c09b00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e98dfbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15fc9900004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff15a5990000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff157f9900004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15179900004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7065100000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff159e9800004889c34883fb0175074c8b742420eb0e488b442420ff157b9800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff251698000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15649600004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15a09400004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff1549940000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15239400004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7064f00000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15b79300004889c34883fb0175074c8b742408eb0e488b442408ff15949300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15aa9100004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15e68f00004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff158f8f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15698f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7064d00000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15fd8e00004889c34883fb0175074c8b742408eb0e488b442408ff15da8e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15f08c00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff152c8b00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff15d08a00004c8b2c24ff7424084c8bb424b00000004d8b3641f6c6010f85800000004d8b1e4d8b66084d8b4b084d8b114983fa0575584d8b51084d8b49104c3b542448751c4c8b5424404d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb1b4d89e6483b65187306ff5558ca0060e976ffffff49c7c6010000004983fe01750949c7c401000000eb274d8b364d8b76104d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24404d895e204c8b5c24204d895e184d8966104d896e0849c7064b00000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff15908900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff253189000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff157f8700004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b7faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15bb8500004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff155f850000ff3424ff7424104c8bb424b8000000498b06488b5c24584c8b442448ff15358500004989c64c8bac24b80000004d8975004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24484d89ec4d896e104c8b6c24584d896e0849c706050000004d8d5fd84c3b5d107306ff5550ca00504d89df49c743f80400000049c74318030000004c8b5424284d89d54d8953104d89730849c7030b0000004c8bb424b80000004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b9c24b80000004d89334d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89e44d8966184d89ed4d896e104c8b6c24084d896e0849c7064500000041564c8bb424800000004c89f34983fe0175074c8b742428eb0e488b442428ff151a8400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c478c23800584c8b7424784c89b424b00000004881c4b0000000ff25bb83000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff15098200004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9bafaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15458000004989c641566a016a016a014c8bb424e00000004c8bac24d800000041564155488b842480000000488d5c24104c8b8424a80000004c8b8c24a00000004c8b942498000000ff15f37f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15cd7f00004989c641564c8b7424704983fe0375224c8bb424f0000000498b06ff15a47f00004989c64c8bac24f00000004d897500eb004d8d6fc84c3b6d107303ff55504d89ef49c745f8060000004c8b7424704d8975284c8b7424584d8975204c8b7424784d8975184c8b7424084d8975104c8bb424880000004d8975084c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064100000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff15ef7e00004889c34883fb017507488b5c2430eb0e488b442430ff15cc7e00004889c34883fb0175074c8b742408eb0e488b442408ff15a97e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442460750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2470ff15b67c00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424704d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9edfaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15f27a00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b442460488d5c24204c8b842498000000ff159b7a0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15757a00004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842490000000488d5c24284c8b8424c0000000ff150d7a00004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d8965204d8975184c8b7424484d8975104c8bb424800000004d8975084c8bb424880000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7063f00000041564c8bb424b00000004c89f34983fe017507488b5c2448eb0e488b442448ff15697900004889c34883fb0175074c8b742420eb0e488b442420ff15467900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a8000000c23800584c8bb424a80000004c89b424e00000004881c4e0000000ff25e178000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2440ff152f7700004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b9faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff156b7500004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff1514750000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15ee7400004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15867400004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7063b00000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff150d7400004889c34883fb0175074c8b742420eb0e488b442420ff15ea7300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff258573000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15d37100004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff150f7000004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff15b86f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15926f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7063900000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15266f00004889c34883fb0175074c8b742408eb0e488b442408ff15036f00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15196d00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb017502eb06ff15586b00004c8bb424800000004d8b364983fe01750949c7c601000000eb604c8bb424800000004d8b364d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f80300000049c74510010000004d89750849c74500350000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e41564d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24284d896e104c8b6c24084d896e0849c7063700000041564c8b7424584c89f34983fe0175054889c3eb09ff15866a00004889c34883fb0175074c8b742408eb0e488b442408ff15636a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c458c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff157c6800004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e983fbffffff3424488b5c2410488b4424184883fb017502eb06ff15bb6600004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7063100000041564c8b7424404c89f34983fe0175054989c6eb09ff156a6600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24784d8b1b4d2bda7115488d64244848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64244848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424384d89f541ff364d89ed4d8b75004983c6027115488d64245848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24384d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42490000000498b06488b5c2430ff15866400004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e922fcffff41f6c3010f85fb0100004d8b134d8b63084d8b024d89c14983f80375324d89f24983ea027115488d64241848b8d006620800000000488b5d08ff234d89d64d89e3483b65187306ff5558ca0068ebb14983f90575404d8b52084d8b4a084d89f24d2bd17115488d64241848b8d006620800000000488b5d08ff234983c2014d89d64d89e3483b65187306ff5558ca0068e96bffffff4983ee047115488d64241848b8d006620800000000488b5d08ff234c8924244c89742408415c415e4c8b5c24184d89234c8b6424384d8b24244c8b5c24384d89334d89f34983c3047115488d64240848b8d006620800000000488b5d08ff234d3be30f848b0000004d2be67115488d64240848b8d006620800000000488b5d08ff234983ec037115488d64240848b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c70635000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7062b00000041564c8b7424084c89f34983fe0175054989c6eb09ff15106100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c23800488d64241848b85085650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15a06000004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff1549600000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15236000004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15bb5f00004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7062900000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff15425f00004889c34883fb0175074c8b742420eb0e488b442420ff151f5f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff25ba5e000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15085d00004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb017502eb06ff15475b00004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7062700000041564c8b7424404c89f34983fe0175054989c6eb09ff15f65a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24784d8b1b4d2bda7115488d64244848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64244848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424384d89f541ff364d89ed4d8b75004983c6027115488d64245848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24384d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42490000000498b06488b5c2430ff15125900004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e922fcffffff3424ff7424106a016a016a014c8bb424a80000004c8bac24a000000041564155488b442450488d5c24104c8b4424704c8b4c24684c8b542460ff152c570000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15065700004989c641566a016a014c8b8c24a80000004c8b9424b80000004c8bb424c00000004c8bac24a00000004c8ba42498000000ff742478ff742478415641554154488b842490000000488d5c24284c8b8424a8000000ff15a45600004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424604d8966204c8b6424204d8966184d896e104c8b6c24484d896e0849c7062300000041564c8bb424980000004c89f34983fe017507488b5c2448eb0e488b442448ff152e5600004889c34883fb0175074c8b742420eb0e488b442420ff150b5600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c490000000c23800584c8bb424900000004c89b424c80000004881c4c8000000ff25a6550000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15805500004989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d896500488d6424084c896c24204c897424284883c420e906feffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24a00000004d8b1b4d2bda7115488d64247048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64247048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424604d89f541ff364d89ed4d8b75004983c6027118488da4248000000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24604d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b8000000498b06488b5c2430ff158d5300004989c64c8bac24b80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e959fcffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15c95100004989c641564c8b7424504d8b5ef849c1e30849c1eb074983cb014c8b6424384d89e54d3be37215488d64246048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24604d89eb41ff75004d89db4d8b2b4983c5027118488da4248000000048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24604d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24b80000004d8b6d00e9cb0500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb15488d64247848b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15865000004989c641564c8b7424784d8b5ef849c1e30849c1eb074983cb014c8b6424584d89e54d3be37218488da4248800000048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24880000004d89eb41ff75004d89db4d8b2b4983c5027118488da424a800000048b8d006620800000000488b5d08ff234d89db4d892b4c8b9c24880000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e00000004d8b6d00e92a0100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a000000048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15374f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24584d896e184c8b6c24084d896e104c8b6c24304d896e0849c7061d00000041564c8bb424b00000004c89f34983fe017507488b5c2458eb0e488b442458ff15cb4e00004889c34883fb017507488b5c2430eb0e488b442430ff15a84e00004889c34883fb0175074c8b742408eb0e488b442408ff15854e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b0000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442478750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24d80000004d8b1b4d2bda7118488da424a800000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da424a800000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424980000004d89f541ff364d89ed4d8b75004983c6027118488da424b800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8bac24980000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f0000000498b06488b9c2488000000ff15894c00004989c64c8bac24f00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424880000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b3fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442458750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b00000004d8b1b4d2bda7118488da4248000000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da4248000000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424704d89f541ff364d89ed4d8b75004983c6027118488da4249000000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24704d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424c8000000498b06488b5c2468ff152d4900004989c64c8bac24c80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424684d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424c80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e91bf7ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2430ff15dd4500004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e998f2ffffff3424488b5c2410488b4424184883fb017502eb06ff151c4400004c8b6424404d8b6c24f849c1e50849c1ed074983cd014c8b7424204d89f34d3bf57215488d64245048b81051620800000000488b5d08ff234d89db4d89e44f8b6c9cfc4c8b7424784d8b56f849c1e20849c1ea074983ca014d89db4d89de4d3bda7215488d64245048b89051620800000000488b5d08ff234c8b5c24784d89f64f8b5cb3fc4983fb037515488d64245048b8b880650800000000488b5d08ff234d8b55004d89d34983fa037515488d64245048b83881650800000000488b5d08ff234983fb0175094d8b6d08e9060100004c8b6c24684d8b6df849c1e50849c1ed074983cd014d89f64d89f24d3bf57215488d64245048b89051620800000000488b5d08ff234c8b7424684d89d24f8b4c96fc4c8b5c24384d8b2b4d89ee4d89db4983c6027115488d64245048b8d006620800000000488b5d08ff234d89db4d89334c8b5c24304d8b034d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d8946084d890e4d89db4d89334d8d77e84c3b75107306ff5550ca01344d89f749c746f8020000004d896e0849c706010000004d89e44d8b4c24f849c1e10849c1e9074983c9014d89d24d89d34d3bd17215488d64245048b80057620800000000488b5d08ff234d89e44d89db4f89749cfc4d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7061900000041564c8b7424484c89f34983fe0175054989c6eb09ff15ef4100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c448c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff15084000004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e943faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15443e00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b842480000000488d5c24204c8b842498000000ff15ea3d0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15c43d00004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842490000000488d5c24284c8b8424c0000000ff155c3d0000ff3424ff7424106a016a014c8b8c24e00000004c8b9424f00000004c8bb424f80000004c8bac24d80000004c8ba424d0000000ffb424b0000000ffb424b0000000415641554154488b8424a8000000488d5c24284c8b8424e0000000ff15f23c00004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b7424204d8975184c8bb424980000004d8975104c8b7424684d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061500000041564c8bb424d00000004c89f34983fe017507488b5c2468eb0e488b442468ff15513c00004889c34883fb0175074c8b742440eb0e488b442440ff152e3c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2418eb0e488b442418ff15e03b00004889c34883fb01750b584881c4c8000000c23800584c8bb424c80000004c89b424000100004881c400010000ff25a63b000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2448ff15f43900004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e93cfaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15303800004989c641564c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64246848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9e00500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da4248000000048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15ea3600004989c641564c8bb424800000004d8b5ef849c1e30849c1eb074983cb014c8b6424604d89e54d3be37218488da4249000000048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24900000004d89eb41ff75004d89db4d8b2b4983c5027118488da424b000000048b8d006620800000000488b5d08ff234d89db4d892b4c8b9c24900000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e80000004d8b6d00e9360100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a800000048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15983500004989c641564d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24304d896e204c8b6c24584d896e184c8b6c24084d896e104c8bac24900000004d896e0849c7061100000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff15203500004889c34883fb017507488b5c2430eb0e488b442430ff15fd3400004889c34883fb0175074c8b742408eb0e488b442408ff15da3400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c501756b4d8b4d004d8b5d084d8b4108498b384883ff0375454d8b40084c3b842480000000750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb8f49c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24e00000004d8b1b4d2bda7118488da424b000000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da424b000000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424a00000004d89f541ff364d89ed4d8b75004983c6027118488da424c000000048b8d006620800000000488b5d08ff234d89ed4d8975004c8bac24a00000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f8000000498b06488b9c2490000000ff15db3200004989c64c8bac24f80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424900000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9a4fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442448750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2458ff157f2f00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e909f7ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2438ff152f2c00004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e983f2ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff156b2a00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff150f2a0000ff3424ff7424104c8bb424a80000004d8b6ef849c1e50849c1ed074983cd014c8b7424584c89f34d3bf57218488da4248000000048b89051620800000000488b5d08ff234c8bb424a80000004889db4d8b749efc4983fe037505e9e30100004c8b7424484d89f54983fe050f84d10100004c8b7424684d89f441ff364d89e44d8b34244983c6027118488da4248800000048b8d006620800000000488b5d08ff234d89e44d8934244c8b6424684d8b1c244d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849c706030000004d89e44d8934244d89ed4d89ee4983fd03750949c7c607000000eb194d89f64983fe05750949c7c607000000eb0749c7c60b00000041564c8bb424c8000000498b06ff15e82800004989c64c8bac24c80000004d8975004d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424684d89750849c74500010000004d8d5fd84c3b5d107306ff5550ca00204d89df49c743f80400000049c74318030000004c8b6424084d89e64d8963104d896b084c8b2c244d89ec4d892b4c8bac24c80000004d8b55004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d895d004c8b9c24c80000004d892b4d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24384d895d184d89e44d896510488d6424084d89f64d897508488d64240849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b6c24504d896e184c8b6c24304d896e104c8b6c24104d896e0849c7060f00000041564c8bb424880000004c89f34983fe0175074c8b742430eb0e488b442430ff154d2700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2408eb0e488b442408ff15ff2600004889c34883fb01750b584881c480000000c23800584c8bb424800000004c89b424b80000004881c4b8000000ff25c526000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff15132500004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e91cf9ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff154f2300004989c641564c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424304d89e54d3be37215488d64246848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9fd0500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da4248000000048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15092200004989c641564c8bb424800000004d8b5ef849c1e30849c1eb074983cb014c8b6424684d89e54d3be37218488da4249000000048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24900000004d89eb41ff75004d89db4d8b2b4983c5027118488da424b000000048b8d006620800000000488b5d08ff234d89db4d892b4c8b9c24900000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e80000004d8b6d00e9530100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a800000048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15b72000004989c641564c8bb424f0000000498b06ff15992000004989c64c8bac24f00000004d8975004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24784d896e204c8b6c24304d896e184c8b6c24584d896e104c8b6c24084d896e0849c7060d00000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff151a2000004889c34883fb017507488b5c2430eb0e488b442430ff15f71f00004889c34883fb0175074c8b742408eb0e488b442408ff15d41f00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c501756b4d8b4d004d8b5d084d8b4108498b384883ff0375454d8b40084c3b842488000000750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb8f49c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24e00000004d8b1b4d2bda7118488da424b000000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da424b000000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424a00000004d89f541ff364d89ed4d8b75004983c6027118488da424c000000048b8d006620800000000488b5d08ff234d89ed4d8975004c8bac24a00000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f8000000498b06488b9c2498000000ff15d51d00004989c64c8bac24f80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424980000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e987fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442450750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d2bde7118488da4248800000048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2460ff15791a00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424604d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9ecf6ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15291700004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e966f2ffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc448c7c301000000492bde7115488d64242848b8d006620800000000488b5d08ff234883c3014c8b4424184c8b4c24104c8b542408ff150d1500004989c641566a016a01ff742418ff35f2140000f6442408010f85360100004c8b6c24084d8b75004d89ed41ff7508498b0641ff76084c8b6c24104d89ee41ff75004d89f641ff76086a016a014c8b8c24980000004c8b9424a80000004c8bb424b00000004c8bac24900000004c8ba42488000000ff742468ff742468415641554154488d5c24284c8b842498000000ff1568140000415e584d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424104d8965084d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424084d8966084d892e41564c8b7424084c89f34983fe0175054989c6eb09ff15f31300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d6424084c8b6c24184c896424204c896c2428483b65187303ff55584883c420e9bffeffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6c2408488b4424104d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b6424184d8966104d896e0849c70609000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b6c24404c896b084c89334883fb017508488d642448c23800488d6424484c8b34244c897424384883c438ff25f6120000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15d01200004989c641564c8b7424484d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64245848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24584d89eb41ff75004d89db4d8b2b4983c5027115488d64247848b8d006620800000000488b5d08ff234d89db4d892b4c8b5c24584d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24b00000004d8b6d00e9030100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb15488d64247048b83880650800000000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15901100004989c64983fe010f858c0000004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424084c8b6c24204d896e0849c7060700000041564c8b7424704c89f34983fe0175074c8b742420eb0e488b442420ff15241100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c470c23800488d64247848b8d885650800000000488b5d08ff2341f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442448750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24a80000004d8b1b4d2bda7115488d64247848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64247848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424684d89f541ff364d89ed4d8b75004983c6027118488da4248800000048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24684d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424c0000000498b06488b5c2458ff15250f00004989c64c8bac24c00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24c00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424c00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e9fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff15d50b00004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e969f7ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15110a00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b442468488d5c24204c8b842498000000ff15ba090000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15940900004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842488000000488d5c24284c8b8424c0000000ff152c0900004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b7424204d8975184c8b7424484d8975104c8bb424800000004d8975084c8bb424880000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424b00000004c89f34983fe017507488b5c2448eb0e488b442448ff15880800004889c34883fb0175074c8b742420eb0e488b442420ff15650800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a8000000c23800584c8bb424a80000004c89b424e00000004881c4e0000000ff250008000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246848b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2440ff154e0600004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b9faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff158a0400004989c641566a016a014c8b8c24800000004c8b9424900000004c8bb424980000004c8b6c24784c8b642470ff742450ff742450415641554154488b442468488d5c24284c8b842480000000ff15310400004c8b2c24ff7424084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424204d8966104d896e0849c7060300000041564c8b7424704c89f34983fe0175074c8b742420eb0e488b442420ff15c80300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c468c23800584c8b7424684c89b424a00000004881c4a0000000ff256903000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64245048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d006620800000000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2430ff15b70100004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e991fbfffff4|@6486,1,@17557,@12754,@12755,@12756,@12753,@12757,@12758,@12759,@12760,@12761,@12753,@12762,@12763,@12779,@12780,@12781,@12782,@12783,@12784,@12785,@12786,@12753,@1172,@12787,@12788,@12789,@12790,@12791,@12792,@12793,@12794,@12795,@12796,@12797,@12798,@12799,@12800,@12801,@12802,@12753,@12803,@12804,@12805,@12806,@12807,@12808,@12809,@12810,@12811,@12812,@12813,@12814,@12815,@12816,@12817,@12753,@12753,@12818,@12763,@12819,@12820,@12821,@12822,@12823,@12824,@12825,@12826,@12827,@12828,@12829,@12830,@12831,@12832,@12833,@12834,@12835,@12836,@12753,@12837,@12772,@12838,@12839,@12840,@12841,@12842,@12843,@12844,@12753,@12845,@12763,@12846,@12847,@12848,@12849,@12850,@12851,@12852,@12853,@12854,@12855,@12856,@12857,@12858,@12763,@12859,@12860,@12861,@12862,@12863,@12753,@12864,@12763,@12865,@12866,@12867,@12868,@12869,@12753,@12870,@12763,@12871,@12872,@12873,@12874,@12875,@12876,@12877,@12772,@12878,@12879,@12880,@12881,@12882,@12753,@12883,@12884,@12885,@12886,@12753,@12887,@12888,@12889,@12890,@12891,@12763,@12892,@12893,@12894,@12895,@12896,@12763,@12897,@12898,@12899,@12900,@12901,@12753,@12902,@12763,@12903,@12904,@12905,@12906,@12753,@12907,@12908,@12909,@12753,@12910,@12763,@12911,@12753,@12912,@12913,@12763,@12914,@12915,@12916,@12919,@12923,@12924,@12924,@12929,@12930,@12753,@12931,@12763,@12932,@12933,@12763,@12934,@12753,@12935,@12936,@12937,@12938,@12763,@12939,@12940,@12763,@12941,@12942,@12943,@12944,@12947,@12952,@12953,@12954,@12753,@12955,@12958,@12961,@12753,@12962,@12753|666,0,@625 757,0,@105 891,0,@6443 969,0,@625 1060,0,@105 1194,0,@6443 1257,0,@625 1348,0,@105 1482,0,@6443 1630,0,@105 1687,0,@625 1742,0,@628 1779,0,@6446 1812,0,@6449 1874,0,@628 1925,0,@105 2064,0,@664 2286,0,@6452 2357,0,@625 2448,0,@105 2582,0,@6443 2649,0,@625 2740,0,@105 2874,0,@6443 2945,0,@625 3036,0,@105 3170,0,@6443 3257,0,@625 3348,0,@105 3482,0,@6443 4072,0,@625 4163,0,@105 4297,0,@6443 4355,0,@5392 4421,0,@625 4512,0,@105 4646,0,@6443 4836,0,@578 4927,0,@105 5080,0,@625 5141,0,@628 5184,0,@6446 5220,0,@6449 5288,0,@628 5345,0,@105 5486,0,@664 5810,0,@628 5980,0,@625 6046,0,@105 6107,0,@1098 6259,0,@664 6355,0,@105 6607,0,@6455 6741,0,@628 6810,0,@625 6855,0,@6458 6911,0,@105 7060,0,@664 7230,0,@1823 7268,0,@1174 7337,0,@105 7740,0,@6461 8043,0,@625 8134,0,@105 8268,0,@6443 8284,0,@1172 8549,0,@625 8640,0,@105 8774,0,@6443 8845,0,@625 8936,0,@105 9070,0,@6443 9122,0,@625 9177,0,@628 9214,0,@6446 9247,0,@6449 9314,0,@628 9365,0,@105 9507,0,@664 9597,0,@625 9652,0,@628 9689,0,@6446 9722,0,@6449 9789,0,@628 9840,0,@105 9982,0,@664 10030,0,@105 10094,0,@578 10379,0,@625 10441,0,@105 10649,0,@664 10749,0,@105 10995,0,@6464 11053,0,@625 11144,0,@105 11278,0,@6443 11349,0,@625 11412,0,@105 11627,0,@664 11720,0,@105 11921,0,@6464 11993,0,@625 12084,0,@105 12218,0,@6443 12285,0,@625 12376,0,@105 12510,0,@6443 12581,0,@625 12672,0,@105 12806,0,@6443 13227,0,@625 13318,0,@105 13452,0,@6443 13602,0,@625 13696,0,@105 13833,0,@6443 13966,0,@625 14039,0,@105 14065,0,@105 14106,0,@105 14274,0,@6467 14290,0,@6470 14357,0,@625 14448,0,@105 14582,0,@6443 14653,0,@625 14708,0,@628 14745,0,@6446 14778,0,@6449 14840,0,@628 14891,0,@105 15031,0,@664 15730,0,@625 15821,0,@105 15955,0,@6443 16022,0,@625 16113,0,@105 16247,0,@6443 16314,0,@625 16405,0,@105 16539,0,@6443 16610,0,@625 16701,0,@105 16835,0,@6443 17093,0,@625 17184,0,@105 17318,0,@6443 18168,0,@105 18198,0,@105 18303,0,@105 19476,0,@105 19506,0,@105 19611,0,@105 20638,0,@105 20668,0,@105 20773,0,@105 21800,0,@105 21830,0,@105 21935,0,@105 23153,0,@105 23183,0,@105 23288,0,@105 24503,0,@105 24533,0,@105 24638,0,@105 25796,0,@105 25829,0,@105 25937,0,@105 27153,0,@105 27183,0,@105 27288,0,@105 28461,0,@105 28491,0,@105 28596,0,@105 29623,0,@105 29653,0,@105 29758,0,@105 30772,0,@105 30802,0,@105 30907,0,@105 31762,0,@105 31792,0,@105 31897,0,@105 32453,0,@105 32516,0,@105 32570,0,@105 32638,0,@105 32673,0,@105 32700,0,@105 32932,0,@6473 33608,0,@105 33638,0,@105 33743,0,@105 34598,0,@105 34628,0,@105 34733,0,@105 35944,0,@105 35974,0,@105 36082,0,@105 36669,0,@625 36763,0,@105 36894,0,@6443 36987,0,@625 37084,0,@105 37221,0,@6443 37672,0,@105 37705,0,@105 37816,0,@105 38533,0,@105 38566,0,@105 38674,0,@105 39379,0,@105 39409,0,@105 39514,0,@105 40094,0,@625 40158,0,@628 40198,0,@6446 40232,0,@6449 40300,0,@628 40354,0,@105 40498,0,@664 40848,0,@105 40878,0,@105 40983,0,@105 42324,0,@105 42354,0,@105 42459,0,@105 43046,0,@625 43140,0,@105 43274,0,@6443 43370,0,@625 43467,0,@105 43604,0,@6443 44070,0,@105 44103,0,@105 44214,0,@105 44931,0,@105 44964,0,@105 45072,0,@105 45777,0,@105 45807,0,@105 45912,0,@105 46591,0,@628 46684,0,@105 47541,0,@105 47571,0,@105 47676,0,@105 48263,0,@625 48357,0,@105 48491,0,@6443 48587,0,@625 48684,0,@105 48821,0,@6443 49316,0,@105 49349,0,@105 49460,0,@105 50177,0,@105 50210,0,@105 50318,0,@105 51023,0,@105 51053,0,@105 51158,0,@105 51695,0,@105 51748,0,@105 52366,0,@625 52457,0,@105 52588,0,@6443 52792,0,@6476 53000,0,@105 53030,0,@105 53138,0,@105 53843,0,@105 53873,0,@105 53978,0,@105 55194,0,@105 55224,0,@105 55329,0,@105 56329,0,@105 56359,0,@105 56464,0,@105 12750:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17554| 12751:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17555| 12752:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17556| 12753:D3,1072|483b65187306ff5558ca09074d8b70f849c1e60849c1ee074983ce01493bc6721048b81051620800000000488b5d08ff234d8b7480fc4d8b69f849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b6481fc4d8b6af849c1e50849c1ed074983cd01493bc5721048b89051620800000000488b5d08ff234d8b6c82fc4983fd030f859f0200004d8b364983fe050f85820200004c8b7424284d8b2e4c8b7424284d8b364983c602711048b8d006620800000000488b5d08ff234c8b5c24284d89334c8b7424204d8b1e4d8d77e84c3b75107306ff5550ca09394d89f749c746f8020000004d895e084d89264c8b6424204d8934244c8b7424284d8b364c8b6424284d8b24244983c402711048b8d006620800000000488b5d08ff234c8b5c24284d89234c8b6424204d8b1c244d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d895c240849bba8946208000000004d891c244c8b5c24204d89234d8d5fe84c3b5d107306ff5550ca09614d89df49c743f80200000049c74308030000004d89334c8b7424184d8b264d8d77e04c3b75107306ff5550ca09394d89f749c746f8030000004d895e104d89660849c706030000004d8b60f849c1e40849c1ec074983cc01493bc4721048b80057620800000000488b5d08ff234d897480fc4d8d67e84c3b65107306ff5550ca09284d89e749c74424f802000000498944240849c70424030000004c8b7424184d8b364983c602711048b8d006620800000000488b5d08ff234c8b5424184d89324c8b7424104d8b164d8d77e84c3b75107306ff5550ca083c4d89f749c746f8020000004d8956084d89264c8b6424104d8934244c8b7424084d8b264c8b7424184d8b364d3be67e054d89e6eb004c8b6424084d8934244d8d77e84c3b75107306ff5550ca08284d89f749c746f8020000004d896e0849c706090000004d8d67e04c3b65107306ff5550ca08684d89e749c74424f8030000004d895c24104d8974240849c704242f0000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d89264c892b4c89730848c7c001000000c2280048b8b886650800000000488b5d08ff234d8b1e4d89dd4983fb03751048b83887650800000000488b5d08ff234983fd0175094d8b7608e9b50000004c8b7424284d8b364c8b6c24284d8b6d004983c502711048b8d006620800000000488b5d08ff234c8b5c24284d892b4c8b6c24204d8b5d004d8d6fe84c3b6d107306ff5550ca09594d89ef49c745f8020000004d895d084d8965004c8b6424204d892c244d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8b60f849c1e40849c1ec074983cc01493bc4721048b80057620800000000488b5d08ff234d896c80fc4c893348c743080100000048c7c001000000c22800f400000000000000|@6503,1,@17767|35,0,@625 77,0,@628 119,0,@628 185,0,@105 283,0,@105 349,0,@1098 480,0,@664 556,0,@105 805,0,@6480 833,0,@6483 887,0,@105 1024,0,@664 12754:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17558| 12755:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17559| 12756:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17560| 12757:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17561| 12758:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17562| 12759:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17563| 12760:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17564| 12761:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17565| 12762:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17566| 12763:D14,6400|488dbc2460ffffff483b7d187306ff5560ca0907534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e947000000909090e964010000909090e980010000909090e9d0030000909090e9a1040000909090488d642418415e49890649c746080100000049c746100100000048c7c001000000c22000488d6424084c8b70084d8b2e4d8b5e084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241848b81051620800000000488b5d08ff234d89f64f8b74aefc4d8b264d89e54983fc030f85a00000004d8b6e084d8b76104c8b24244d8b2424488d6424084983eb014d03eb7115488d64241048b8d006620800000000488b5d08ff23488d6424084d2be57115488d64240848b8d006620800000000488b5d08ff234983c4014d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c7450003000000415e4d892e49c746080100000049c746100100000048c7c001000000c22000488d6424184d89ee4983fe01751048b85084650800000000488b5d08ff2348b8d084650800000000488b5d08ff23488d642418415e49890649c746080100000049c746100100000048c7c001000000c22000ff7008ff7010ff7018ff70204c8b7424084d8b364983fe090f851d0100004c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858b0000004d8b56084d8b66104d8b7424084c8b6c247041ff75004c8b6c24784d8b6d004983c5027115488d64246048b8d006620800000000488b5d08ff234c8b5c24784d892b4c8b6c24704d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b5c24704d892b4c8bac24800000004d8b6d00e9de1200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98a0d0000488d64245848b83880650800000000488b5d08ff234c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858b0000004d8b56084d8b66104d8b7424084c8b6c247041ff75004c8b6c24784d8b6d004983c5027115488d64246048b8d006620800000000488b5d08ff234c8b5c24784d892b4c8b6c24704d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b5c24704d892b4c8bac24800000004d8b6d00e93d0900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e90f080000488d64245848b83880650800000000488b5d08ff23488d642408ff70084c8b7424104d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4d8b264d89e54983fc03751a4d8b56084d8b66104d8b6c24084c8b7424404d8b36e99a040000488d6424184983fd01754a4d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000415e4d892e49c746080100000049c746100100000048c7c001000000c22000488d64240848b81888650800000000488b5d08ff234c8b48084c8b60104c8b701841ff364d8b2e4d8b46084c8b7424184d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81051620800000000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85d80000004d8b6e084d8b5e104c8b7424104d8b164d89c64983ee014d03f57115488d64242848b8d006620800000000488b5d08ff234d2bd67115488d64242848b8d006620800000000488b5d08ff234983c2014d89e64983ee014d03d67115488d64242848b8d006620800000000488b5d08ff2341f6c10175594d8b294c8b7424084d8b4ef849c1e10849c1e9074983c9014d3be97215488d64242848b89051620800000000488b5d08ff234d89f64f8b74aefc4983fe03750c49c7c601000000e90c0300004c8b7424484d8b36e95902000049c7c601000000eb2e488d6424284d89ee4983fe01751048b85084650800000000488b5d08ff2348b8d084650800000000488b5d08ff234d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d895d184d8965104d89750849c745000b000000415541f6c6010f859101000041ff364c8b74245041ff364c8b7424584d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8b6c24584d8975004c8b7424504d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24504d8975004c8b742460498b06488b5c2418ff154a1200004989c64c8b6c24604d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24604d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424604d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424084d89651849c745100b0000004d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb264c8b742450498b06488b5c2408ff151f1100004989c64c8b6c24504d89750049c7c6010000004c8b6c24284c8b24244d896500488d64240849c74508010000004d89751048c7c0010000004883c428c2200041f6c60175654d8b0e4d8b6e084d8b4108498b384883ff0375404d8b40084c3b0424750949c7c003000000eb0749c7c0010000004983f80375204d8d77f04c3b75107306ff5550ca001e4d89f749c746f8010000004d890eeb184d89ee483b65187306ff5558ca005ceb9549c7c6010000004983fe01750949c7c601000000eb254d8b364d8b6e104d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d892ee933fdffff41f6c60175654d8b0e4d8b5e084d8b4108498b384883ff0375404d8b40084c3b0424750949c7c003000000eb0749c7c0010000004983f80375204d8d77f04c3b75107306ff5550ca00364d89f749c746f8010000004d890eeb184d89de483b65187306ff5558ca0074eb9549c7c6010000004983fe01750949c7c601000000eb254d8b364d8b5e104d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d891e4c8b5c24084d8b1b4d2bda7115488d64242048b8d006620800000000488b5d08ff234983c3014d2bdd7115488d64242048b8d006620800000000488b5d08ff234983c3014d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89651849c74510010000004d89750849c745000b000000415541f6c6010f859101000041ff364c8b74244841ff364c8b7424504d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6c24504d8975004c8b7424484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24484d8975004c8b742458498b06488b5c2418ff157f0e00004989c64c8b6c24584d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24584d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424584d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424084d89651849c745100b0000004d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb0749c7c6010000004c8b6c24204c8b24244d896500488d64240849c74508010000004d89751048c7c0010000004883c420c22000ff3424ff742410ff7424206a016a016a014c8b8c24a00000004c8b9424980000004c8bb424a80000004156ff742478488b442460488d5c24104c8b842488000000ff15ed0c00004c8b2c24488b5c2408ff7424104d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004c8b6424504d8966204d896e1849c74610010000004c8b6c24304d896e0849c7060700000041564883fb0175074c8b742430eb0e488b442430ff157e0c00004989c641564c8b7424104c89f34983fe0175074c8b742430eb0e488b442430ff15510c00004989c64c8bac24980000004c8b6424084d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c490000000c2200041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24484d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb4248000000041ff364c8bb424880000004d8b364983c6027115488d64247048b8d006620800000000488b5d08ff234c8bac24880000004d8975004c8bb424800000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8bac24800000004d8975004c8bb42490000000498b06488b5c2448ff155c0a00004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9a2fbffff4c8b2424ff742408ff742418f64424380175614c8b7424384d8b2e4c8b7424484d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64246848b89051620800000000488b5d08ff234d89f64f8b74aefc4983fe03750c49c7c601000000e9c60400004c8bb424880000004d8b36e9cc0300004c8b7424704983fe0375104c8bb424880000004d8b36e9c202000049c7c6010000004983fe01750949c7c301000000eb254d8b2e4d8b6d004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424284d89d04d89552049ba58e46408000000004d8955184d895d104d89650849c7450007000000415541f6c6010f85c20100004d8b3641ff3641ff760841ff76104c8b6c24084983f5024c8bb424a000000041ff364c8bb424a80000004d8b364983c6027118488da4249000000048b8d006620800000000488b5d08ff234c8ba424a80000004d8934244c8bb424a00000004d8b264d8d77e84c3b75107306ff5550ca00314d89f749c746f8020000004d8966084d892e4c8bac24a00000004d8975004c8bb424b0000000498b06488b5c2468ff15f50600004989c64c8bac24b00000004d8975004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24504d896e104c8b6c24684d896e0849c706010000004d8d5fd84c3b5d107306ff5550ca00404d89df49c743f8040000004c8b6c24104d896b184c8b24244d89e54d8963104d8973084c8b7424084d89f44d89334c8bb424b00000004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b9c24b00000004d89334d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24184d895e184d89e44d8966104d89ed4d896e08488d64242049c70613000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8933eb2c4c8bb42490000000498b06488b5c2448ff15bb0500004989c64c8bac24900000004d89750048c7c3010000004883fb0175074c8b742408eb0e488b442408ff15850500004989c64c8b6c24684c8b24244d896500488d6424084c8b6424084d8965084d89751048c7c0010000004883c468c2200041f6c601757a4d8b1e4d8b6e084d8b53084d8b0a4983f90175554d8b4a084d8b52104c3b4c244075194c3b542428750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050eb8049c7c6010000004983fe01750949c7c601000000eb544d8b2e4d8b55004d8b75104d8b5d184d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892ee956fcffff41f6c601757a4d8b1e4d8b6e084d8b53084d8b0a4983f90175554d8b4a084d8b52104c3b4c244075194c3b542428750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050eb8049c7c6010000004983fe01750949c7c601000000eb544d8b2e4d8b55004d8b75104d8b5d184d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892ee967fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24484d8b1b4d2bda7115488d64246048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64246048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb4248000000041ff364c8bb424880000004d8b364983c6027115488d64247048b8d006620800000000488b5d08ff234c8bac24880000004d8975004c8bb424800000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8bac24800000004d8975004c8bb42490000000498b06488b5c2448ff15b80100004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e97cf7fffff400|@6490,1,@17567,@12765,@12766,@12767,@12768,@12769,@12770,@12771,@12772,@12777,@12778,@12764|178,0,@625 253,0,@105 284,0,@105 392,0,@6467 408,0,@6470 529,0,@625 620,0,@105 759,0,@6443 814,0,@625 905,0,@105 1044,0,@6443 1106,0,@625 1261,0,@6487 1330,0,@625 1403,0,@105 1429,0,@105 1466,0,@105 1522,0,@628 1600,0,@6467 1616,0,@6470 1725,0,@105 2533,0,@105 2563,0,@105 2680,0,@105 3556,0,@105 3586,0,@105 3695,0,@105 4278,0,@628 4461,0,@5372 4562,0,@105 5736,0,@105 5766,0,@105 5875,0,@105 12764:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17582| 12765:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17568| 12766:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17569| 12767:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@523,1,@17570| 12768:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@523,1,@17571| 12769:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17572| 12770:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17573| 12771:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17574| 12772:D7,4584|483b65187306ff5558ca0907534c8b284d89ee4983fd070f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d006620800000000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9ed0d00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97d0d0000488d64242848b83880650800000000488b5d08ff234d89f54983fe050f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d006620800000000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9820900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e912090000488d64242848b83880650800000000488b5d08ff234d89ee4983fd030f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d006620800000000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9170500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9a7040000488d64242848b83880650800000000488b5d08ff234983fe010f85f1000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d006620800000000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9af0000004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb42488d64242848b83880650800000000488b5d08ff23415d49bef0886508000000004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c001000000c21000415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703010000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64243048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d006620800000000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15080c00004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703030000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64243048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d006620800000000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15960800004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64243048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d006620800000000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15240500004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d006620800000000488b5d08ff234983c3014d2bde7115488d64243048b8d006620800000000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d006620800000000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15b20100004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcfffff400000000|@6492,1,@17575,@12774,@12775,@12776,@12773|67,0,@625 139,0,@105 259,0,@6443 324,0,@625 396,0,@105 516,0,@6443 581,0,@625 653,0,@105 773,0,@6443 835,0,@625 907,0,@105 1024,0,@6443 1042,0,@6491 1349,0,@105 1379,0,@105 1472,0,@105 2223,0,@105 2253,0,@105 2346,0,@105 3097,0,@105 3127,0,@105 3220,0,@105 3971,0,@105 4001,0,@105 4094,0,@105 12773:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17579| 12774:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17576| 12775:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17577| 12776:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17578| 12777:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17580| 12778:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17581| 12779:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17583| 12780:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17584| 12781:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17585| 12782:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17586| 12783:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17587| 12784:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17588| 12785:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17589| 12786:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17590| 12787:D3,424|483b65187306ff5558ca0907a8010f858a0100004c8b30488b40084d8b2e4d8b5e084d8b70f849c1e60849c1ee074983ce014d3bee721048b81051620800000000488b5d08ff234f8b74a8fc4d8b364983fe050f85350100004d8b214d89e64983c602711048b8d006620800000000488b5d08ff234d8931498d7ff0483b7d107306ff5550ca093f4989ff48c747f8010000004c891f498b324d8d77e84c3b75107306ff5550cac93f4d89f749c746f8020000004989760849893e4d89324d8d77e84c3b75107306ff5550ca093f4d89f749c746f8020000004d895e084d892641564d8d77e04c3b75107306ff5550ca09274d89f749c746f8030000004c8b24244d89661049895e0849c706030000004d8b60f849c1e40849c1ec074983cc014d3bec7215488d64240848b80057620800000000488b5d08ff234f8974a8fc4883c3027115488d64240848b8d006620800000000488b5d08ff23e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c883650800000000488b5d08ff2348c7c001000000c3f400|@6493,1,@17591|57,0,@625 103,0,@105 300,0,@664 332,0,@105 400,0,@6464 12788:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17592| 12789:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17593| 12790:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17594| 12791:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17595| 12792:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17596| 12793:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17597| 12794:D3,112|483b65187305ff5558cd01a8017555ff30488b40084c8b34244d8b76084d8b364983fe017434e8d5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99cffffff48c7c001000000c3f4000000|@523,1,@17598| 12795:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17599| 12796:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17600| 12797:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17601| 12798:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17602| 12799:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17603| 12800:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17604| 12801:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17605| 12802:D3,176|483b65187305ff5558cd09a8010f8590000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752e4d8b6e084d8b76104c3beb75184983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@523,1,@17606| 12803:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17607| 12804:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17608| 12805:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17609| 12806:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17610| 12807:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17611| 12808:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17612| 12809:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17613| 12810:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17614| 12811:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17615| 12812:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17616| 12813:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17617| 12814:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17618| 12815:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17619| 12816:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17620| 12817:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17621| 12818:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17622| 12819:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17623| 12820:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17624| 12821:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17625| 12822:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17626| 12823:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17627| 12824:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17628| 12825:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17629| 12826:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17630| 12827:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17631| 12828:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17632| 12829:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17633| 12830:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17634| 12831:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17635| 12832:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17636| 12833:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17637| 12834:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17638| 12835:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17639| 12836:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17640| 12837:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17641| 12838:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17642| 12839:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17643| 12840:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17644| 12841:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17645| 12842:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17646| 12843:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17647| 12844:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17648| 12845:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17649| 12846:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17650| 12847:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17651| 12848:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17652| 12849:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17653| 12850:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17654| 12851:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17655| 12852:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17656| 12853:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17657| 12854:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17658| 12855:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17659| 12856:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17660| 12857:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17661| 12858:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17662| 12859:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17663| 12860:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17664| 12861:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17665| 12862:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17666| 12863:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17667| 12864:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17668| 12865:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17669| 12866:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17670| 12867:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17671| 12868:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17672| 12869:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17673| 12870:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17674| 12871:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17675| 12872:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17676| 12873:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17677| 12874:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17678| 12875:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17679| 12876:D3,112|483b65187305ff5558cd01a8017555ff30488b40084c8b34244d8b76084d8b364983fe017434e8d5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99cffffff48c7c001000000c3f4000000|@523,1,@17680| 12877:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17681| 12878:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17682| 12879:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17683| 12880:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17684| 12881:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17685| 12882:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd05752d4d8b6e084d8b76104c3beb75174d3bc6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@523,1,@17686| 12883:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17687| 12884:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17688| 12885:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17689| 12886:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17690| 12887:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17691| 12888:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17692| 12889:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17693| 12890:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17694| 12891:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17695| 12892:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17696| 12893:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17697| 12894:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17698| 12895:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17699| 12896:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17700| 12897:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17701| 12898:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17702| 12899:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17703| 12900:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17704| 12901:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17705| 12902:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17706| 12903:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17707| 12904:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17708| 12905:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17709| 12906:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17710| 12907:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17711| 12908:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17712| 12909:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17713| 12910:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17714| 12911:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17715| 12912:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17716| 12913:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17717| 12914:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17718| 12915:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17719| 12916:D6,392|483b65187306ff5558ca090753415041514152a8010f8541010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76086a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15fe000000ff3424488b5c2410488b4424184883fb017502eb06ff15db0000004c8b7424304c89f34983fe0175054989c4eb09ff15ba0000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c22000f400|@1573,1,@17720,@12918,@12917,@12763|357,0,@1172 12917:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17722| 12918:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17721| 12919:D4,296|483b65187306ff5558ca090753415041514152a8010f85dd000000ff30488b40086a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c2440415641554154415341524151488d5c24304c8b4424584c8b4c24504c8b542448e898ffffff415e415d498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c893358488b742418488b542410488b4c2408415d488d6424184c8b6424304c8b5c24284c8b5424204c8b4c24184c8b442410488b7c2408ff342448897c24084c894424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438ff2548000000488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c23000f40000000000|@1573,1,@17723,@12920|257,0,@1172 12920:D6,800|483b65187306ff5558ca09074989c64150498b0641ff7608ff33ff73086a016a016a014c8b4424704c8b7424684c8b6c24604c8b6424584c8b5c245041564155415441534d87c14d87ca488d5c2420ff15f3020000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15cd0200004989c66a016a014c8b6c24104d8b65004983fc0b0f85e90100004d89ed4d8b5d204c8b4c24604983e9014c8b5424404d89d44d03d17115488d64245048b8d006620800000000488b5d08ff234d3bda7505e99f0100004c8b5424604983ea014d89e44d03e27115488d64245048b8d006620800000000488b5d08ff234983fc017d0949c7c403000000eb624c8b6424604d2be37115488d64245048b8d006620800000000488b5d08ff234983c40149c7c3010000004c8b5424584d2bda7115488d64245048b8d006620800000000488b5d08ff234983c3014d3be37e0949c7c403000000eb0749c7c4010000004983fc030f84fe0000004c8b6424784d8b14244c8b6424784d8b24244983c4027115488d64245048b8d006620800000000488b5d08ff234c8b5c24784d89234c8b6424704d8b1c244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424050000004c8b5c24704d89234d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004d8954240849c70424090000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d89ed4d896b1849c743100b0000004d89530849c703210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084d895d004d89ee4c8924244c89742408eb0c4d89ed4c892c244c89742408eb0c4d89ed4c892c244c89742408ff3424488b4424104c8b7424404c89f34983fe0175054989c4eb09ff15950000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424484d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24304d895e084d892e4c8b6c24484d8965004d89750848c7c0010000004883c450c23800f4000000000000|@6494,1,@17724,@12922,@12921,@12763|177,0,@105 225,0,@105 271,0,@105 313,0,@105 393,0,@105 12921:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17726| 12922:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17725| 12923:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17727| 12924:D9,1064|483b65187306ff5558ca0907534c8b304d89f54983fe077515488d64240848b8388a650800000000488b5d08ff234d89ee4983fd0b7515488d64240848b8c08a650800000000488b5d08ff234983fe090f855b030000ff70086a016a016a014c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488d5c2420ff15e2030000ff3424ff742410ff7424204c8b7424104d8b364983fe0b0f85c20200004c8b74245841ff364c8b7424604d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8b6c24604d8975004c8b7424584d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24584d8975004c8b74246041ff364c8b7424684d8b364983c6027115488d64245048b8d006620800000000488b5d08ff234c8b6c24684d8975004c8b7424604d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24604d8975004c8b742470498b06488b5c2440ff15d40200004989c64c8b6c24704d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24404d896e0849c706030000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b1c244d89dc4d895d104d89750849c745000b0000004c8b7424704d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24704d8975004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24084d89eb4d896e0849c7060900000041564d8d77d84c3b75107306ff5550ca00184d89f749c746f8040000004d89db4d89dd4d895e1849c746100b0000004d89e44d89660849c7061300000041564d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d89661849c746100b0000004d89ed4d896e0849c70621000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24284c896b084c89334883fb0175074c8b6c2420eb0e488b442420ff15450100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24504c8b24244d896500488d6424084d89750848c7c0010000004883c450c220004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15cb0000004989c6488d6424104c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c428c220006a016a016a014c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488d5c2420ff156a000000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15440000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c420c22000f400000000|@6501,1,@17728,@12926,@12763,@12927,@12928,@12925,@12763|32,0,@6495 62,0,@6498 192,0,@105 299,0,@105 12925:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@523,1,@17732| 12926:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17729| 12927:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17730| 12928:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17731| 12929:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17733| 12930:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17734| 12931:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17735| 12932:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17736| 12933:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17737| 12934:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17738| 12935:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17739| 12936:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17740| 12937:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17741| 12938:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@523,1,@17742| 12939:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17743| 12940:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17744| 12941:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17745| 12942:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17746| 12943:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17747| 12944:D6,616|483b65187306ff5558ca090753415041514152a8010f8520020000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76106a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15de010000ff3424488b5c2410488b4424184883fb017502eb06ff15bb0100004c8b7424204d8b2e4d89f64d8b66084c8b7424604d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64247048b81051620800000000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85ea0000004d8b6e0841ff76104c8b7424604d8b364983ec014d03ec7115488d64247848b8d006620800000000488b5d08ff234d2bf57115488d64247848b8d006620800000000488b5d08ff234983c60141564c8b7424404c89f34983fe0175054989c4eb09ff15f60000004989c44d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424084d8975104c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d6424704d89ee4983fe01751048b85084650800000000488b5d08ff2348b8d084650800000000488b5d08ff23488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c22000f40000|@1573,1,@17748,@12946,@12945,@12763|253,0,@625 323,0,@105 349,0,@105 541,0,@6467 557,0,@6470 580,0,@1172 12945:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17750| 12946:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17749| 12947:D9,960|483b65187306ff5558ca090753415041514152a8010f856d0300004c8b30488b400841ff3641ff76086a016a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488d5c24204c8b4424584c8b4c24504c8b542448e89cffffffff3424ff742410ff7424204c8b4424504d8b60f849c1e40849c1ec074983cc014c8b6c24304d89ee4d3bec7215488d64246048b81051620800000000488b5d08ff234d89f64d89c04f8b74b0fc4d8b264d89e54983fc0575324c8b6c24584c8b7424104d8975004c8b7424084d8975084c8b34244d897510488d64241848c7c0010000004883c448c220004983fd030f857a01000041ff760841ff76104c8b342441ff76086a016a016a014c8bb424b00000004c8bac24a80000004c8ba424a00000004c8b9c24980000004156415541544153488b842488000000488d5c24204c8b8c24980000004c8b942490000000ff15a6020000ff3424488b5c2410488b4424184883fb017502eb06ff15830200004c8bb424800000004d8b364c2b7424307118488da4249800000048b8d006620800000000488b5d08ff234983c6014c2b7424207118488da4249800000048b8d006620800000000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004c8b6424284d8965104d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424384d8966084d892e41564c8b7424384c89f34983fe0175054989c6eb09ff15b30100004989c64c8bac24900000004c8b6424484d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c2200041ff76086a016a016a014c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004156415541544153488b442478488d5c24204c8b8c24880000004c8b942480000000ff1523010000ff3424488b5c2410488b4424184883fb017502eb06ff15000100004d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424304d8966084d892e41564c8b7424284c89f34983fe0175054989c6eb09ff15860000004989c64c8bac24800000004c8b24244d896500488d6424084c8b6424284d8965084d89751048c7c0010000004881c480000000c22000488d642418415d49bec0866208000000004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c001000000c22000f40000000000|@6502,1,@17751,@12949,@12950,@12763,@12951,@12948,@12763|152,0,@625 401,0,@105 436,0,@105 913,0,@998 12948:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17755| 12949:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17752| 12950:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17753| 12951:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17754| 12952:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17756| 12953:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17757| 12954:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17758| 12955:D6,392|483b65187306ff5558ca090753415041514152a8010f8541010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76086a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15fe000000ff3424488b5c2410488b4424184883fb017502eb06ff15db0000004c8b7424304c89f34983fe0175054989c4eb09ff15ba0000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c22000f400|@1573,1,@17759,@12957,@12956,@12763|357,0,@1172 12956:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17761| 12957:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17760| 12958:D6,344|483b65187306ff5558ca090753415041514152a8010f850c010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424106a016a016a014c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b442458488d5c24204c8b4424704c8b4c24684c8b542460ff15db000000ff3424488b5c2410488b4424184883fb017502eb06ff15b80000004c8b7424284c89f34983fe0175054989c4eb09ff15970000004989c44d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d6424084c8b6c24584d8965004d89750848c7c0010000004883c460c22000488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c22000f4000000000000|@1573,1,@17762,@12960,@12959,@12763|304,0,@1172 12959:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17764| 12960:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17763| 12961:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17765| 12962:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17766| 12963:D3,800|483b65187305ff5558cd09a80175244c8b284c8b60084983fc01750b4c892b48c7c001000000c349c7c6010000004d89ebeb0f48c7030100000048c7c001000000c341f6c30175314d8b4b084d89f24983c202711048b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0978ebc94983fd01750949c7c501000000eb1e41f6c40175184d8b14244d8b4c240849c7c3010000004d89d0e90102000049c7c60100000041f6c501750d4d8b650041ff75084989c3eb0b4c893348c7c001000000c341f6c30175094d8b1341ff7308eb4a49c7c3030000004983fb0375244d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8973084d8923eb034d89f3415c4d89de4d89e5483b65187306ff5558ca0960eb894983fa01750c49c7c201000000e92e0100004d8b024d8b4a08498b7808498b742408483bfe7505e9e8000000488b174889d14883fa01754e488b164883fa017540488b5708488b7f10488b4e08488b7610483bd17517483bfe750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff037402eb05e993000000e9e90000004889ca4883f9037533488b164883fa037525488b7f08488b7608483bfe750948c7c703000000eb0748c7c7010000004883ff037502eb57e9ad0000004883fa050f85a3000000488b164883fa050f8594000000488b5708488b7f10488b4e08488b7610483bd17517483bfe750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff037402eb594d8b50104d8b4c24104d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037516415a4d89d3483b65187306ff5558ca0978e94bfeffff488d64240849c7c301000000e950feffffeb004d89ca483b65187306ff5558ca097ce97dfeffff41f6c0017531498b70084c89df4883c702711048b8d006620800000000488b5d08ff234989f04989fb483b65187306ff5558ca097febc94d3bde7d1a4d89cc4d89d54d89de483b65187306ff5558ca0970e97cfdffff4d89f34d89ea4d89cc4d89d54d89de483b65187306ff5558ca0970e95cfdfffff40000|@6504,1,@17768|87,0,@105 700,0,@105 12964:D3,136|483b65187305ff5558cd09a80175694c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b74b3fc41ff7608e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@742,1,@17769|45,0,@625 12965:D3,504|483b65187306ff5558ca09074c8b3041f6c60175554d8b2e4d8b76084d8b5d004d89dc4983fb0575184d8b6d084d8b5d004d8b65084c8b68084c89c7e9230100004983fc03750d4d8b65084c8b68084d89cbeb464c8b304c89334c8b70084c89730848c7c001000000c34c8b70084983fe0175164c8b304c89334c8b70084c89730848c7c001000000c348b8b08c650800000000488b5d08ff2341f6c3017526498b33498b7b08493bf4750949c7c303000000eb184989fb483b65187306ff5558ca097febd449c7c3010000004983fb037502eb794d89d341f6c3017526498b33498b7b08493bf4750949c7c403000000eb184989fb483b65187306ff5558ca097febd449c7c4010000004983fc03743d4983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca08674989c748c740f8020000004c8968084c8930e9b2feffff4c8b304c89334c8b70084c89730848c7c001000000c340f6c7017526488b17488b7708493bd3750949c7c303000000eb184889f7483b65187306ff5558ca897febd449c7c3010000004983fb0375164c8b304c89334c8b70084c89730848c7c001000000c34d2bec711048b8d006620800000000488b5d08ff234983c501498d47e8483b45107306ff5550ca08674989c748c740f8020000004c8968084c8930e90dfefffff400000000|@6508,1,@17770|140,0,@6505 281,0,@105 442,0,@105 12966:D4,360|483b65187305ff5558cd094989c6534c8b2c244d8b65f849c1e40849c1ec074983cc014983fc017d07488d642408eb554c3b25290100007d474c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554156eb15488d64240848b8d055620800000000488b5d08ff23f6042401752f4c8b3424498b064d89f641ff7608488b5c24104c8b442418ff15c7000000415d4c892c24483b65187303ff5558ebcb488d642408488b34244c8b76f849c1e60849c1ee074983ce014983fe017510488d64241048b848c2620800000000c34d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca42404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c89e84c89f14889f6488d6424084889c748d1e9f348a58060ffbf4883c408c3f40000ffffffffffffff01|@6513,1,@17773,@12967|135,0,@657 240,0,@1447 12967:D4,272|483b65187306ff5558ca0901534989c641f6c601755e4d8b1e4d8b6e084c8b24244d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64240848b81051620800000000488b5d08ff234d89e44f8b649cfc4983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0141eb9c49c7c6010000004983fe03750d488d64240848c7c001000000c34d89c148c7c3ffffffff49c7c001000000ff15830000004989c54983fd017c474c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64240848b80057620800000000488b5d08ff234d89f64bc744aefc03000000488d64240848c7c001000000c3488d64240848b8d08d650800000000488b5d08ff23f40000000000|@6514,1,@17774,@12968|62,0,@625 206,0,@664 252,0,@6510 12968:D3,248|483b65187306ff5558ca0903a8010f85d40000004c8b204c8b70084d8b69f849c1e50849c1ed074983cd014d3be5721048b89051620800000000488b5d08ff234f8b6ca1fc4d8b55004d8b5d084d8b6d104983fb01750949c7c301000000eb4b4983fb01751048b8d812620800000000488b5d08ff234983fbff75194c3b2d6d000000751048b87013620800000000488b5d08ff234c89e848d1f849d1fb489949f7fb4c8d1c45010000004983fa0175044c89e0c34983fa0375044c89e0c341f6c20175084c89f0e933ffffff4d3bd87c0e4c89f04c89e34d89e8e920ffffff4c89f0e918ffffff4889d8c3f40000000100000000000080|@6515,1,@17775|50,0,@628 104,0,@142 135,0,@146 12969:D4,1248|483b65187306ff5558ca09074989c34d8b70f849c1e60849c1ee074983ce0141564d8b63f849c1e40849c1ec074983cc014c8b34244d89f54983fe017d0a488d642408e9970300004d89ed4d89ee4c3b2d830400000f8d7f0300004c89f74889f94c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a5f4d89ef48d1ef49897df841c645ff404c89ef48d1e948c7c001000000f348ab4c89f74989fe4883ff017d0a488d642408e9150300004d89f64c89f64c3b350e0400000f8dfd0200004889f74889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4a3f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889f64889f74883fe017d0a488d642408e9930200004889ff4889fa483b3d990300000f8d7b0200004889d74889f9488d34bd0400000048f7de4903f7483b75107205493bf77206ff5550ca0e7f4989f748d1ef48897ef8c646ff404889f748d1e948c7c001000000f348ab4889d74889fa4883ff017d0a488d642408e9120200004889d24889d7483b15250300000f8dfa0100004889ff4889f9488d14bd0400000048f7da4903d7483b55107205493bd77206ff5550ca4a7f4989d748d1ef48897af8c642ff404889d748d1e948c7c001000000f348ab5248c7c201000000498d7ff0483b7d107306ff5550ca4c7f4989ff48c747f801000000c647ff40488917574983fc017d0a488d642418e96c0100004c3b25920200000f8d5a0100004c89e74889f94c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca4a6f4d89e748d1ef49897c24f841c64424ff404c89e748d1e948c7c001000000f348ab4156415553ff742420ff742420415241514989f24d89c14d89d84c89e348c7c001000000ff155c0200004c8b34244d8b36488d6424084983fe010f85a80000004c8b7424084d89f54983fe017514488d64241049be48c2620800000000e92f0100004d89ed4d89ee4983fd017e654d89f64d89f54c3b35c30100007d4f4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000e9b1000000488d642410eb05488d64241048b8d050640800000000488b5d08ff23488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3488d64241848b8d055620800000000488b5d08ff23488d64240848b8d055620800000000488b5d08ff23488d64240848b8d055620800000000488b5d08ff23488d64240848b8d055620800000000488b5d08ff23488d64240848b8d055620800000000488b5d08ff234c8b6424084d3be57f31488d642410418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34c8b24244d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64241048b81051620800000000488b5d08ff234d89e44f8b64acfc4983fc01750c49bcf05d650800000000eb044d8b24244f8964aefc4d89ec4983c4027115488d64241048b8d006620800000000488b5d08ff234d89e5483b65187306ff5558ca0060e941fffffff400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6516,1,@17776,@12970|711,0,@1447 844,0,@4394 909,0,@657 930,0,@657 951,0,@657 972,0,@657 993,0,@657 1099,0,@625 1129,0,@6249 1164,0,@105 12970:D7,1376|483b65187306ff5558ca0907534150415141524c8b7424184d8b66f84d89e549c1e40849c1ec074983cc01493bc47215488d64242048b81051620800000000488b5d08ff234d89f64d8b6486fc4983fc03750f488d64242048c7c001000000c238004d89f649c1e50849c1ed074983cd01493bc57215488d64242048b80057620800000000488b5d08ff234d89f649c74486fc030000004c8b7424104d8b6ef849c1e50849c1ed074983cd01493bc57215488d64242048b89051620800000000488b5d08ff234d89f64d8b7486fc41ff3641ff760841ff761841ff7638ff742410f604240175524c8b2c244d8b75004d89ed41ff7508498b06498b5e084d8b46104d8b4e184c8bb424880000004c8bac2480000000ff742430415641554c8b542450ff1568040000415d4c892c24483b65187303ff5558eba8488d6424084c8b7424184d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e9e2000000909090e930010000909090e92d010000909090e933010000909090e9df010000909090e92a0200009090904d89f6498b46104d89f641ff76204c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b5c24784c8b4424704c8b4c24684c8b542460e818feffff4c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442438488b5c24784c8b4424704c8b4c24684c8b542460e8c6fdffff488d642408e9700100004d89f6498b46104c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b5c24704c8b4424684c8b4c24604c8b542458e86bfdffffe91a010000e9150100004d89f64d8b76084156e92c0200004d89f6498b46084d89f641ff76104c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b5c24784c8b4424704c8b4c24684c8b542460e8f8fcffff4c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442438488b5c24784c8b4424704c8b4c24684c8b542460e8a6fcffff488d642408eb534d89f6498b46084c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b5c24704c8b4424684c8b4c24604c8b542458e84efcffffeb004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15b40100004989c6488d6424104156f60424010f85980000004c8b3424498b064d89f641ff76084c8b7424684d8b76f849c1e60849c1ee074983ce01493bc67215488d64244048b89051620800000000488b5d08ff234c8b7424684d8b7486fc41f6c6017502eb354c8b4424504c8b4c24604c8b7424704c8b6c24784c8b6424584156ff7424284155415448c7c3010000004c8b542448ff1514010000415d4c892c24483b65187303ff5558e95effffff488d64240858488b5c24484c8b4424104c8b4c2458488b7c24084c8b6c24604c8b6424404c8b5c24304c8b5424384c895424484989fa4c895c24504c896424584c896c24604c8b7424284c897424404883c440ff259f000000f604240175724c8b3424498b064d89f641ff76084c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b9c24800000004c8b4424784c8b4c24704c8b542468e8c0faffff415d4c892c24483b65187303ff5558eb88488d642408e959fefffff400000000|@6523,1,@17777,@12972,@12974,@12986,@12971|55,0,@625 125,0,@664 184,0,@628 1047,0,@628 12971:D16,4904|483b65187306ff5558ca090741524c8b334c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95a010000909090e95c010000909090e9ed010000909090e9ef010000909090e9f5010000909090e982020000909090e90b040000909090e90d040000909090e996050000909090e9b5050000909090e942070000909090e94c070000909090e94b070000909090e94d070000909090e9d6080000909090e9d8080000909090e9cf090000909090e9ce090000909090e9cd090000909090e9cc090000909090e9330a0000909090e9320a0000909090e9310a0000909090e9330a0000909090e9c00a0000909090e9bf0a0000909090e9c10a0000909090e94e0b0000909090e94d0b0000909090e96f0b0000909090e9710b0000909090e9900c0000909090e9970c0000909090e9960c0000909090e9950c0000909090e99e0c0000909090e99d0c0000909090e9bc0c0000909090e9bb0c0000909090e9bd0c0000909090e9df0c0000909090e96c0d0000909090e98b0d0000909090488d642408eb05488d642408e99e0000004c8b7308498b5e1041ff76204d8b2e4983fd0975205841584c8b4c24184c8b5424104c8b34244c897424184883c418ff25da1100004d8b76184d8b2e4983fd09754841ff76084c8b4c24304c8b542428488b4424084c8b442410ff15a7110000488b4424085b488d64240841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2575110000488d64241048c7c001000000c21800488d642408e939020000488d6424084c8b7308e91b100000488d6424084c8b63104c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f8974a5fc48c7c001000000c21800488d6424084c8b63084c8b53104c8b5b184c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81051620800000000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80057620800000000488b5d08ff234c8b6c240849be08906508000000004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81051620800000000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80057620800000000488b5d08ff234c8b6c240849be18906508000000004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849be40906508000000004f8974a5fc48c7c001000000c21800488d642408e964030000488d6424084c8b63104c8b53184c8b5b204c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81051620800000000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80057620800000000488b5d08ff234c8b6c240849be08906508000000004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81051620800000000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80057620800000000488b5d08ff234c8b6c240849be18906508000000004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849be40906508000000004f8974a5fc48c7c001000000c21800488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff255e0d0000488d6424084c8b73084d8b56084d8b5e184d8b66204c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81051620800000000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81051620800000000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849be50906508000000004f8974a5fc48c7c001000000c21800488d6424084c8b73084d8b7608e9e9080000488d642408eb05488d642408e996010000488d6424084c8b53084c8b5b104c8b63184c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81051620800000000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80057620800000000488b5d08ff234c8b6c240849be18906508000000004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81051620800000000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849be40906508000000004f8974a5fc48c7c001000000c21800488d642408e904010000488b43084c8b73184d8b264d89e54983fc0b75554d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752e4d89e64d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb5b4983fd0775554d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03752e4d89ee4d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb004d8b2e4983fd097523498b5e0841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2513090000488d64240848c7c001000000c21800488d642408eb05488d642408eb05488d642408eb744c8b73104c8b6b18ff73204d8b65004983fc09754b41ff75084c8b4c24304c8b5424284c89f3488b4424084c8b442410ff15b1080000488b4424085b488d64240841584c8b4c24184c8b5424104c8b34244c897424184883c418ff257f080000488d64241048c7c001000000c21800488d642408eb05488d642408eb05488d642408e99a000000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f8974a5fc48c7c001000000c21800488d642408eb05488d642408e99a000000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f8974a5fc48c7c001000000c21800488d642408eb2f4c8b7310488b43204c89f341584c8b4c24184c8b5424104c8b34244c897424184883c418ff25e4060000488d642408e93b0100004c8b7308498b5e10498b46184d8b76204d8b264d89e54983fc090f85d000000041ff76084c8b4c24284c8b5424204c8b442408ff15990600004c8b7424184d8b66f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234c8b6c24184d89f64f8b6cb5fc41f6c501750f488d64241048c7c001000000c218004c8b6c24184d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64241048b80057620800000000488b5d08ff234c8b6c241849be40906508000000004d89e44f8974a5fc488d64240848c7c0010000004883c408c218004d89ee4983fe05751f41584c8b4c24184c8b5424104c8b34244c897424184883c418ff25b2050000488d64240848c7c001000000c21800488d64240848c7c001000000c21800488d642408eb05488d642408eb16488d6424084c8b73084d8b36e934010000488d642408eb2c488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff253f050000488d642408eb05488d642408e9eb0000004c8b7310488b43204c89f341584c8b4c24184c8b5424104c8b34244c897424184883c418ff25fc040000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80057620800000000488b5d08ff234c8b6c240849bef88f6508000000004f8974a5fc48c7c001000000c21800488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2538040000488d64240848c7c001000000c2180041f6c6010f858f0100004d8b1e4d8b6e084d8b234d8b5b084d8b0c244d89ca4983f90b755a4d8b4424084d89c141f6c001740949c7c003000000eb0749c7c0010000004983f0024983f80375324d89cc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb604983fa07755a4d8b4c24104d89ca41f6c101740949c7c103000000eb0749c7c1010000004983f1024983f90375324d89d44d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb004d8b14244983fa090f85980000004d8b5424084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81051620800000000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234c8b5c24084f896493fceb004d89ee483b65187306ff5558ca0040e967feffff48c7c001000000c2180041f6c6010f858f0100004d8b1e4d8b6e084d8b234d8b5b084d8b0c244d89ca4983f90b755a4d8b4424084d89c141f6c001740949c7c003000000eb0749c7c0010000004983f0024983f80375324d89cc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb604983fa07755a4d8b4c24104d89ca41f6c101740949c7c103000000eb0749c7c1010000004983f1024983f90375324d89d44d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb004d8b14244983fa090f85980000004d8b5424084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81051620800000000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234c8b5c24084f896493fceb004d89ee483b65187306ff5558ca0040e967feffff48c7c001000000c2180041f6c6010f85b50000004d8b264d8b6e084d8b14244d8b5c24084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81051620800000000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234c8b5c24084f896493fc4d89ee483b65187306ff5558ca0040e941ffffff48c7c001000000c21800f400|@6531,1,@17793,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987,@12987|615,0,@625 683,0,@664 704,0,@6517 772,0,@625 832,0,@664 853,0,@6518 894,0,@625 954,0,@664 975,0,@6519 1016,0,@625 1084,0,@664 1105,0,@6521 1183,0,@625 1243,0,@664 1264,0,@6518 1305,0,@625 1365,0,@664 1386,0,@6519 1427,0,@625 1495,0,@664 1516,0,@6521 1627,0,@625 1687,0,@664 1708,0,@6517 1749,0,@625 1809,0,@664 1830,0,@6517 1871,0,@625 1939,0,@664 1960,0,@6522 2063,0,@625 2123,0,@664 2144,0,@6519 2185,0,@625 2245,0,@664 2266,0,@6517 2307,0,@625 2375,0,@664 2396,0,@6521 2877,0,@625 2945,0,@664 2966,0,@6517 3043,0,@625 3111,0,@664 3132,0,@6517 3311,0,@625 3398,0,@664 3419,0,@6521 3697,0,@625 3765,0,@664 3786,0,@6517 4134,0,@625 4226,0,@664 4553,0,@625 4645,0,@664 4756,0,@625 4848,0,@664 12972:D4,224|483b65187306ff5558ca090753415041514152a8010f85b5000000ff30488b40084c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b5c24404c8b4424384c8b4c24304c8b542428e8aaffffff4c8b3424498b064d89f6498b5e084d89f6498b76104d89f6498b5618488d642408488b4c24184c8b6c24104c8b642408415b488d6424184c8b5424204c8b4c24184c8b442410488b7c2408415057ff7424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438ff2528000000488d64242048c7c001000000c22000f4|@1573,1,@17778,@12973| 12973:D403,35424|483b65187306ff5558ca090741524c8b334c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e961010000909090e96a010000909090e9070d0000909090e98a0d0000909090e98d0d0000909090e9130e0000909090e9e40e0000909090e9f00e0000909090e9c10f0000909090e983100000909090e9ea150000909090e96b160000909090e9ee160000909090e9f5160000909090e9c1170000909090e912180000909090e98e1e0000909090e99e200000909090e9e1200000909090e924210000909090e968270000909090e9ab270000909090e9ee270000909090e9682c0000909090e9ae2c0000909090e9b52c0000909090e9bc2c0000909090e9022d0000909090e9d5310000909090e906370000909090e95d3b0000909090e91f3d0000909090e9444a0000909090e9be4e0000909090e9414f0000909090e9fa4f0000909090e974540000909090e988550000909090e95b5a0000909090e92e5f0000909090e95f640000909090e9a5640000909090e942650000909090ff73084c8b73204156e91f880000ff7308ff73104c8b73184156e9238700004c8b73084d8b2e4983fd090f853c05000041ff761841ff7610498b46204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fc9400004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff159d940000488d6424084c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1533940000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15a39300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff154b930000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15f3920000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff159b920000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1549920000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1502920000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15af9100004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff155391000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ed90000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff158790000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff152490000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b28f0000488d64240848c7c001000000c23800488d64241048c7c001000000c2380041ff76184c8b2c244d8b65004983fc090f850a0100004d89ed41ff750841ff7610498b46204c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff152f8f00004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c89334c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b4424284c8b4c2440ff15cd8e0000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424104c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff156b8e0000488d64241848c7c001000000c2380041ff7610498b46204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15148e00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff15b58d0000488d6424084c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff154b8d0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15bb8c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15638c0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff150b8c0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b38b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15618b0000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff151a8b0000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c78a00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156b8a000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15058a000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159f89000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153c89000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ca880000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7308488b43104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15658800004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1520880000488d64241048c7c001000000c238004c8b73084156e95d7a0000ff7308488b43104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348bbf88f6508000000004c8b4c2428ff15bc8700004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1577870000488d64241048c7c001000000c23800ff7308488b4310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb08906508000000004c8b4c2430ff151b8700004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb18906508000000004c8b4c2430ff15d3860000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048bb40906508000000004c8b4c2428ff1586860000488d64241048c7c001000000c23800ff7308ff7310ff73184c8b73204156e947770000ff7310488b4318ff73204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb08906508000000004c8b4c2430ff15168600004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb18906508000000004c8b4c2430ff15ce850000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048bb40906508000000004c8b4c2428ff1581850000488d64241048c7c001000000c23800488b43084c8b7310ff73184983fe0775074c8b742420eb124983fe0975074c8b742420eb054c8b74241841564c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15068500004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4424204c8b4c2430ff15a7840000488d64241848c7c001000000c238004c8b730841ff36498b460841ff761841ff76204c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348bbf88f6508000000004c8b4c2438ff15428400004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242848bbf88f6508000000004c8b4c2438ff15fa8300004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048bb50906508000000004c8b4c2438ff15b2830000488d6424104c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1548830000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b88200004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1560820000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1508820000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b0810000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155e810000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1517810000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c48000004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156880000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff150280000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159c7f000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15397f000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15c77e0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004c8b7308498b460841ff761841ff762041ff364c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24384c8b642428415641554154488b5c2430ff155f7e00004989c641564c8b4424604c8b4c24584c8b5424504c8b7424484c8b6c24404c8b642430415641554154488b442428488b5c2438ff151e7e00004989c64156ff742420e942660000488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15c97d00004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff15847d0000488d64241048c7c001000000c23800488d64240848c7c001000000c23800488b4308ff7310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb18906508000000004c8b4c2430ff15197d00004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242848bbf88f6508000000004c8b4c2430ff15d17c00004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb40906508000000004c8b4c2430ff15897c0000488d64241848c7c001000000c23800ff73084c8b7310ff7318ff73204983fe017502eb3b498b064c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15227c0000ff742408e9085b0000488b43084c8b7310ff73184983fe0775074c8b742420eb124983fe0975074c8b742420eb054c8b74241841564c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15ad7b00004989c641564c8b7424104d8b264d89e54983fc0b755b4d89f64d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375314d89e64d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000e9b10000004c8b7424104983fd070f859d0000004d89f64d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375734d89f6498b46084d89ee41ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15b67a00004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70609000000eb054c8b7424104d8b264d89e54983fc09756e498b4608498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c8933488d6424084c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4424204c8b4c2430ff15147a0000488d64240848c7c0010000004883c410c23800488d6424084d89ec4983fd0b75674d8b760841f6c601754e498b064c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15a6790000488d64240848c7c0010000004883c410c23800488d64241848c7c001000000c238004d89e54983fc070f859e030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff151d7900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15c5780000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff156d780000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff1515780000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15c3770000eb004c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4424304c8b4c2440ff157c770000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15297700004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15cd76000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff156776000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff150176000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff159e75000048c7c0010000004883c418c23800488d64242048c7c001000000c238004983fd09754f498b46084c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff1537750000488d64240848c7c0010000004883c410c23800488d64241848c7c001000000c23800ff7308488b4310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15cb7400004c8b6c24084d89ee4983fd017502eb3e4d89f6498b064c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15757400004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff151974000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b373000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff154d73000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ea72000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1589720000488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1536720000488d64240848c7c001000000c23800ff7310ff7318488b43204c8b34244d8b2e4983fd090f85020100004d89f641ff76084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15c57100004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c89334c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b4424384c8b4c2440ff1563710000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b4424204c8b4c2438ff1501710000488d64242048c7c001000000c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15b27000004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15537000004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15e96f0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15596f00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15016f0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15a96e0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15516e0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ff6d0000eb004c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15b86d0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15656d00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15096d000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a36c000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff153d6c000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15da6b000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15686b000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15076b0000488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b46a0000488d64240848c7c001000000c238004c8b73084d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15486a0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c36900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff156b690000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff1513690000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15bb680000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff1569680000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1522680000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15cf6700004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1573670000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff150c670000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15a5660000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1541660000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15d9650000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf88f6508000000004c8b4c2420ff1574650000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf88f6508000000004c8b4c2420ff1500650000488d64240848c7c001000000c23800488b4308ff73104c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15aa6400004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1545640000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b56300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155d630000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1505630000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15ad620000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155b620000eb004c8b4424304c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1514620000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c16100004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156561000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ff60000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159960000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153660000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15c45f0000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7310ff7318488b43204c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff155c5f00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15fd5e00004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15935e0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15035e00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ab5d0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15535d0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15fb5c0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15a95c0000eb004c8b4424384c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15625c0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff150f5c00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15b35b000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d5b000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15e75a000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15845a000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15125a000048c7c0010000004883c410c23800488d64241848c7c001000000c23800ff73084c8b73104d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1595590000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15275900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cf580000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1577580000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff151f580000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cd570000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1586570000488d642410e98c0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff153c5700004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15e0560000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1583560000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1526560000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15cf550000eb05488d642408eb444983fd09753e498b46084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157c550000eb004c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1535550000488d64241048c7c001000000c238004c8b730841ff7610498b46184d8b76204d8b264d89e54983fc090f85ea00000041ff76084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c25400004989c641564c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242848bb40906508000000004c8b4c2438ff1575540000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1513540000488d64241048c7c001000000c238004d89ee4983fe050f859e0000004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b75300004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1558530000488d64241048c7c001000000c23800488d64241048b8b090650800000000488b5d08ff234c8b730841ff3641ff760841ff761041ff76204c8b34244d8b2e4d89ec4983fd0b75304d89f64d8b760841f6c601740949c7c603000000eb0749c7c6010000004983f6024983fe03750949c7c609000000eb7f4c8b34244d89e54983fc07756f4d89f64d8b661041f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375484d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff156652000049c7c609000000eb034d89ee4983fe090f85170600004c8b7424104983fe050f85080600004c8b34244d8b2e4d89ec4983fd0b75544d89f64d8b7608488d64240841f6c601753d498b064c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15dc510000eb00e9df0300004d89f64d89e54983fc070f857b0300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85be01000041ff364c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15635100004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff150b510000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15b3500000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff155b500000eb4a4d89f64983fd0175414d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1509500000eb004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b44242048c7c3010000004c8b4c2450ff15c24f0000488d642418e99c0100004c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15784f00004c8b34244d8b264d89e54983fc07754d4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff151c4f00004883c408e9070100004d89f64d89ec4983fd05754d4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15bb4e00004883c408e9ae0000004d89f64d89e54983fc03754a4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff155a4e00004883c408eb584d89f64983fd01754a4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ff4d00004883c408eb05488d642410eb544d89f64983fd0975464d89f6498b4608488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff159d4d0000eb05488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44243048c7c3010000004c8b4c2438ff15514d00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15f54c000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff158f4c000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15294c000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c64b000048c7c0010000004883c418c23800488d64242048c7c001000000c238004c8b6c24104d89ee4983fd0775074c8b742438eb154d89f64983fe0975074c8b742438eb054c8b74243041564c8b7424084d8b2e4d89ec4983fd0b75594d89f64d8b760841f6c6017542498b064c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4424204c8b4c2448ff151c4b0000488d642410eb05488d642410e9df0300004d89f64d89e54983fc070f857b0300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85be01000041ff364c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15994a00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15414a0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15e9490000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1591490000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff153f490000eb004c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4424304c8b4c2458ff15f8480000488d642420e99c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ae4800004c8b34244d8b264d89e54983fc07754d4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15524800004883c410e9070100004d89f64d89ec4983fd05754d4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15f14700004883c410e9ae0000004d89f64d89e54983fc03754a4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15904700004883c410eb584d89f64983fd01754a4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15354700004883c410eb05488d642418eb544d89f64983fd0975464d89f6498b46084c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4424204c8b4c2448ff15d8460000488d642410eb05488d6424104c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44243048c7c3010000004c8b4c2438ff15874600004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff152b46000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c545000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff155f45000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fc44000048c7c0010000004883c418c23800488d64242048c7c001000000c238004c8b73104d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1582440000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fd4300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a5430000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d430000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15f5420000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a3420000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff155c420000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15094200004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ad410000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1546410000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15df400000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff157b400000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1513400000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ae3f00004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff15693f0000488d64241048c7c001000000c238004c8b7308498b0641ff761841ff76084c8b4424504c8b4c24484c8b5424404c8b7424384c8b6c24304c8b642420415641554154488b5c2428ff15143f00004989c641564c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24384c8b642428415641554154488b442428488b5c2430ff15d33e00004989c641564c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44243048c7c3010000004c8b4c2440ff15893e0000ff3424e9df1900004c8b73084d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15243e0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff159f3d00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15473d0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15ef3c0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15973c0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15453c0000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15fe3b0000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ab3b00004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff154f3b0000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15e83a0000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15813a0000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff151d3a0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b5390000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b4308ff7310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d3900004989c641564c8b6c24104d89ee4983fd017502eb584d89f6498b06498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c89334c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c243841564155415441534c8b4c2438ff15d8380000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff1576380000488d64240848c7c0010000004883c410c23800488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff151c3800004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b7370000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15273700004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cf360000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1577360000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff151f360000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cd350000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1586350000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15333500004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15d734000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157134000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff150b34000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15a833000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1536330000488d64240848c7c001000000c23800488d64241048c7c001000000c23800488b4308ff73104c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15d13200004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff156c320000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15dc3100004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1584310000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff152c310000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15d4300000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1582300000eb004c8b4424304c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff153b300000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15e82f00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff158c2f000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15262f000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15c02e000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff155d2e000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15eb2d0000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7310ff7318488b43204c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15832d00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15242d00004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ba2c0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff152a2c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15d22b0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff157a2b0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15222b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15d02a0000eb004c8b4424384c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15892a0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15362a00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15da29000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff157429000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff150e29000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15ab28000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153928000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf88f6508000000004c8b4c2420ff15d5270000488d64240848c7c001000000c23800488b4308ff73184c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157f2700004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1520270000488d64241048c7c001000000c23800ff73084c8b73104d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b1260000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15432600004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15eb250000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1593250000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff153b250000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15e9240000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff15a2240000488d642410e98c0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15582400004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15fc230000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159f230000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1542230000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15eb220000eb05488d642408eb444983fd09753e498b46084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1598220000eb004c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1551220000488d64241048c7c001000000c23800f60424010f85440400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15cd210000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff155c2100004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1501210000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15a6200000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff154b200000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15f61f0000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff15ac1f0000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15621f00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15061f0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15a91e0000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff154c1e0000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15f51d0000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15a21d0000eb00415d4c892c24483b65187303ff5558e9b2fbffff488d642410ff3424f60424010f85320400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff150f1d0000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15a11c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15491c0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15f11b0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15991b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15471b0000eb004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4c2458ff15001b0000488d642410e98c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15b61a00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff155a1a0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15fd190000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15a0190000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1549190000eb05488d642408eb444983fd09753e498b46084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15f6180000eb00415d4c892c24483b65187303ff5558e9c4fbffff488d64242848c7c001000000c23800f60424010f85320400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff155c180000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15ee1700004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1596170000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff153e170000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15e6160000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1594160000eb004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4c2458ff154d160000488d642410e98c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15031600004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15a7150000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff154a150000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15ed140000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1596140000eb05488d642408eb444983fd09753e498b46084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1543140000eb00415d4c892c24483b65187303ff5558e9c4fbffff488d642408ff742410f60424010f858a0400004c8b34244d8b2e4d89f641ff76084d8b750041ff75084d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ab130000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff153a1300004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15df120000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1584120000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1529120000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15d4110000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff158a110000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15401100004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15e4100000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1587100000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff152a100000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15d30f0000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15800f0000eb004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b44242048c7c3010000004c8b4c2450ff15390f0000488d642408415d4c892c24483b65187303ff5558e96cfbffff488d6424084c8b2c244d89ee4983fd01750f488d64242048c7c001000000c238004d89f64d8b36488d6424084156f604240175574c8b3424498b064d89f641ff76084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff159e0e0000415d4c892c24483b65187303ff5558eba3488d64242048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff152a0e0000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488b44243048bbf88f6508000000004c8b4c2448ff15cc0d0000ff3424f60424010f85560400004c8b2c244d8b75004d89ed41ff75084d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15570d0000eb00e9db0300004d89e54983fc070f858a030000498b46084d8b6e1041ff761841f6c5010f85e301000041ff75004c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15e30c00004c8b7424084d8b264d89e54983fc07754a4d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15850c0000e9f90000004d89f64d89ec4983fd05754a4d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15270c0000e9a30000004d89f64d89e54983fc0375474d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15c90b0000eb504d89f64983fd0175474d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15710b0000eb004c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b44242048c7c3010000004c8b4c2468ff15240b0000488d642410e98f0100004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15d70a00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff157b0a0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff151e0a0000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15c1090000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff156a090000eb05488d642408eb444983fd09753e498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1517090000eb00415d4c892c24483b65187303ff5558e9a0fbffff488d642410ff3424f60424010f85440400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1584080000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15130800004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15b8070000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff155d070000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1502070000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15ad060000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff1563060000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15190600004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15bd050000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1560050000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1503050000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ac040000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1559040000eb00415d4c892c24483b65187303ff5558e9b2fbffff488d64243048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15e0030000415d4c892c24483b65187303ff5558eba3488d6424084c8b2c244d89ee4983fd03754c488d6424084c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1573030000488d642408e9940000004d89f64983fe05488d64240875444c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1516030000488d642408eb424c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15ca020000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1580020000488d64241048c7c001000000c23800f604240175764c8b2c244d8b75004d89ed41ff7508498b064d8b7608498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4c2430ff15fe010000415d4c892c24483b65187303ff5558eb84488d64241048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff158a010000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242848c7c3010000004c8b4c2430ff152f0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15ea000000488d64241848c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1587000000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff152c000000488d64241048c7c001000000c23800f400000000|@6528,1,@17779,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12975,@12976,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12977,@12978,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974,@12974|3593,0,@6517 3738,0,@6518 3802,0,@6519 3871,0,@6521 3975,0,@6518 4039,0,@6519 4108,0,@6521 4403,0,@6517 4467,0,@6517 4531,0,@6522 6076,0,@6519 6140,0,@6517 6204,0,@6521 11641,0,@6517 11749,0,@6517 15624,0,@6521 15926,0,@6524 26104,0,@6517 32193,0,@6517 12974:D6,1992|483b65187306ff5558ca0907505341504151488b1c244c8b63f849c1e40849c1ec074983cc014c8b7424184d89f54d3bf47215488d64242048b81051620800000000488b5d08ff234d89ed4889db4e8b74abfc4983fe010f85950000004d8b62f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64242048b89051620800000000488b5d08ff234d89f64f8b74b2fc41ff3641ff7608488b442408ff15490700004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15210700004989c6488d6424084156f64424200175114c8b7424204d8b364c8b2c24e93e05000049c7c601000000eb0b488d642420498b06c220004983fe01755f4c8b7424504d8b66f849c1e40849c1ec074983cc014c8b7424284d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424504d89ed4f8b74aefc41f6c601750c4d8b2e4c8b2424e93b03000049c7c601000000eb0b488d642430498b06c220004983fe010f85cf0000004c8b7424484d8b66f849c1e40849c1ec074983cc014c8b7424284d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424484d89ed4b8b44aefc4c8b7424404d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64243048b81051620800000000488b5d08ff234c8b6c24404d89f64b8b5cb5fc4c8b5424504c8b6c24484c8b642440ff342441564155ff742420415449c7c0010000004c8b4c2438ff15b50500004989c64983fe0175074c8b742418eb16488d642430498b06c22000488d642430498b06c2200041f6c601750d498b064d8b6e084c8b2424eb71488d6424084c8b7424304d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24284d897500f6442408017514488d6424084c8b3424498b06488d642418c22000488d64242048b8508a620800000000488b5d08ff2341f6c4010f85290100004d8b14244d8b5c24084c3bd07505e9f70000004d8b0a4d89c84983f90175464c8b084983f90175384d8b52084c8b48084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb05e9aa000000e9b00000004d89c14983f803755a4c8b084983f903754f4d8b52084c8b48084d3bd1750949c7c203000000eb314d8b02498b394c3bc7751f4d8b52084d8b49084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa037502eb44eb4d4983f90575474c8b084983f905753c4d8b52084c8b48084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb0949c7c403000000eb1deb004d89dc483b65187306ff5558ca0170e9cdfeffff49c7c4010000004983fc03746b488d6424104d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c8b2c244d8b55f849c1e20849c1ea074983ca014c8b5c24184d89dc4d3bda7215488d64242048b80057620800000000488b5d08ff234d89ed4d89e44f8974a5fc488d642420c220004d89ee483b65187306ff5558ca0040e9bdfdffff41f6c4010f852c0100004d8b14244d8b5c24084d3bd57505e9fa0000004d8b0a4d89c84983f90175474d8b4d004983f90175384d8b52084d8b4d084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb05e9ac000000e9b20000004d89c14983f803755b4d8b4d004983f903754f4d8b52084d8b4d084d3bd1750949c7c203000000eb314d8b02498b394c3bc7751f4d8b52084d8b49084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa037502eb45eb4e4983f90575484d8b4d004983f905753c4d8b52084d8b4d084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb0949c7c503000000eb1deb004d89dc483b65187306ff5558ca0070e9cafeffff49c7c5010000004983fd0374444c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b5c24284d89dc4d3bda7215488d64243048b80057620800000000488b5d08ff234d89ed4d89e44f8974a5fceb0749c7c601000000e946fbffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0060e9cefeffff49c7c6010000004983fe0374504c8b6424104d8b6c24f849c1e50849c1ed074983cd014c8b7424284d89f34d3bf57215488d64243048b80057620800000000488b5d08ff234c8b6c24204d89ee4d89e44d89db4f896c9cfc4d89f6eb0749c7c601000000e93bf9fffff40000000000|@6529,1,@17784,@12980,@12985,@12979|58,0,@625 127,0,@628 300,0,@625 416,0,@625 482,0,@625 711,0,@1028 1119,0,@664 1536,0,@664 1936,0,@664 12975:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@742,1,@17780,@12974| 12976:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@742,1,@17781,@12974| 12977:D4,408|483b65187306ff5558ca090753415041514152a8010f856b0100004c8b30ff70084d8b264d89e54983fc0b75584d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375314d89e64d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000e99b0000004983fd070f85910000004d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03756a498b46084d89ee41ff364c8b4424384c8b7424484c8b6c2440ff742418ff7424184156415548c7c3010000004c8b4c24484c8b542440ff15be0000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70609000000eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8abfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f40000|@742,1,@17782,@12974| 12978:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@742,1,@17783,@12974| 12979:D3,144|483b65187305ff5558cd09a80175734c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b74b3fc4983fe017505e9b5ffffff41ff36e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@3363,1,@17791|45,0,@625 12980:D7,2584|483b65187306ff5558ca090753415041514152a8010f85c7000000ff30ff70084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b6c24084d89ec4d3beb7215488d64243048b81051620800000000488b5d08ff234d89e44d89f64b8b44a6fc4883f801755d4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64b8b44aefca801750d4c8b304c8b6c2458e9cc07000048c7c001000000e9bb070000a801750d4c8b304c8b6c2458e91c06000048c7c001000000e913050000f6442418010f85d20000004c8b6c24184d89ee41ff75004d89f641ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b6c24084d89ec4d3beb7215488d64243048b81051620800000000488b5d08ff234d89e44d89f64b8b44a6fc4883f801755d4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64243048b81051620800000000488b5d08ff234d89ed4d89f64b8b44aefca801750d4c8b304c8b6c2458e9ce02000048c7c001000000e9bd020000a801750d4c8b304c8b6c2458e91e01000048c7c001000000eb0f488d64242048c7c001000000c228004883f8010f85f40000004c8b7424384d8b66f849c1e40849c1ec074983cc014c8b7424084d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424384d89ed4b8b44aefc4c8b442440488b5c2420ff151c0800004889c34883fb0175035beb12488b0424ff15fe0700004889c3488d6424084d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b7424184d8970084c8b34244d8930488d642408488b7c24085e488d6424104c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c0010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e934fdffff488d642430c2280041f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80057620800000000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96cfdffffe967fdffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80057620800000000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96dfeffff4883f8010f85eb0000004c8b7424484d8b66f849c1e40849c1ec074983cc014c8b7424084d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424484d89ed4b8b44aefc4c8b442440488b5c2420ff15e50300004889c34883fb01750358eb0f488b0424ff15c7030000488d6424084d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424184d8970084c8b34244d8930488d642408488b5c2418488b7c24085e488d6424184c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e916f9ffff488d642430c2280041f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80057620800000000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e975fdffffe970fdffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80057620800000000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96dfefffff400000000|@6530,1,@17785,@12982,@12983,@12984,@12981|73,0,@625 143,0,@625 297,0,@625 367,0,@625 513,0,@625 1081,0,@664 1484,0,@664 1576,0,@625 2135,0,@664 2538,0,@664 12981:D3,232|483b65187306ff5558ca0901a801750bff30488b40084989deeb0848c7c001000000c341f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983fe0374054d89c6eb0a488d642408e994ffffff41f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983f6024983fe037534e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb82f40000|@523,1,@17789| 12982:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17786| 12983:D3,232|483b65187306ff5558ca0901a801750bff30488b40084989deeb0848c7c001000000c341f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983fe0374054d89c6eb0a488d642408e994ffffff41f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983f6024983fe037534e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb82f40000|@523,1,@17787| 12984:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17788| 12985:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17790| 12986:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17792| 12987:D3,504|483b65187306ff5558ca09074d8b70f849c1e60849c1ee074983ce01493bde721048b89051620800000000488b5d08ff234d8b7498fc4d8b3641f6c60175264d8b264d8b6e084c3be0750949c7c603000000eb184d89ee483b65187306ff5558ca0946ebd449c7c6010000004983fe03750848c7c001000000c34d8b71f849c1e60849c1ee074983ce01493bde721048b81051620800000000488b5d08ff234d8b6499fc4d8b72f849c1e60849c1ee074983ce01493bc6721048b81051620800000000488b5d08ff234d8b6c82fc4d89e641f6c60175264d8b064d8b5e084c3bc0750949c7c603000000eb184d89de483b65187306ff5558ca0976ebd449c7c6010000004983fe037502eb4c4d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d8966084989064d8b61f849c1e40849c1ec074983cc01493bdc721048b80057620800000000488b5d08ff234d897499fc4d89ee41f6c60175264d8b1e4d8b66084c3bdb750949c7c603000000eb184d89e6483b65187306ff5558ca0964ebd449c7c6010000004983fe03750848c7c001000000c34d8d77e84c3b75107306ff5550ca09244d89f749c746f8020000004d896e0849891e4d8b6af849c1e50849c1ed074983cd01493bc5721048b80057620800000000488b5d08ff234d897482fc48c7c001000000c3f400000000000000|@6532,1,@17794|35,0,@628 145,0,@625 187,0,@625 325,0,@664 469,0,@664 12988:D6,1112|483b65187305ff5558cd0950534c8b2c244d89ee4983fd017d0a488d642410e9f50000004d89f64d89f54c3b351f0400000f8ddd0000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d07488d642418eb744d89f64d89f54c3b35ab0300007d604d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424184d8b76f849c1e60849c1ee074983ce0141566a01eb2a488d64241848b8d055620800000000488b5d08ff23488d64241048b8d055620800000000488b5d08ff234c8b34244d89f54c3b7424080f82a9000000488d6424104c8b7424104d89f54983fe017510488d64242048b848c2620800000000c34d89ed4d89ee4983fd017e654d89f64d89f54c3b35c90200007d4f4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000e98f010000488d642420eb05488d64242048b8d050640800000000488b5d08ff234d89ed4c8b7424284f8b74aefc41ff7608498b461841ff76386a016a01488b5c24104989e0ff1571020000ff3424ff3424f60424010f85c80000004c8b2c244d89ee41ff75004d89f641ff76084c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64247048b81051620800000000488b5d08ff234d89ed4d89f64b8b44aefc6a016a01488b5c24284989e0ff15f3010000415e488d6424084c8b6c24584d8b55f849c1e20849c1ea074983ca014c8b5c24084d89dc4d3bda7215488d64247048b80057620800000000488b5d08ff234d89ed4d89e44f8974a5fc415d488d6424084c892c24483b65187303ff5558e92effffff488d642420ff742408f604240175424c8b2c244d8b75004d89ed41ff7508498b06498b5e084d8b46104d8b4e18ff742438ff7424384c8b542420ff1549010000415d4c892c24483b65187303ff5558ebb8488d6424184c8b2c244983c5024c892c24483b65187303ff5558e9d2fdffff4c8b6424104d3be57f0e488d642420418066ffbf4c89f0c34c8b6424084d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64242048b81051620800000000488b5d08ff234d89e44f8b5cacfc4c8b24244d8b5424f849c1e20849c1ea074983ca014d3bea7215488d64242048b81051620800000000488b5d08ff234d89e44f8b54acfc4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244f8964aefc4d89ec4983c4027115488d64242048b8d006620800000000488b5d08ff234d89e5483b65187306ff5558ca0060e91dfffffff40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6533,1,@17795,@12990,@12989,@12989|262,0,@657 283,0,@657 341,0,@1447 470,0,@4394 602,0,@625 693,0,@664 913,0,@625 968,0,@625 1048,0,@105 12989:D3,744|483b65187306ff5558ca0901505341504c8b7424104d89f54983fe0175564c8b7424084d89f54983fe017527415d49bee09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c410c3415e4d89ed4d892e488d64240849c746080100000048c7c0010000004883c408c34d89ed4d89ee41ff75004d89f64c89f041ff76084c8b7424184d89f54983fe017521488d642410415e4889c049890649c746080100000048c7c0010000004883c410c34d89ed4d89ee41ff75004d89f64c89f341ff76084c8b6c24184d89ee4c3b6c24080f85be0000006a016a01488b442420488b5c24104989e0e80cffffff415e415d4c8b6424104d3be6751f488d642420415e4c8b6424084d89264d896e0848c7c0010000004883c410c34c8b24244d3be6488d6424087523488d642418415e4c8b24244d8926488d6424084d896e0848c7c0010000004883c408c3488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408415e4d892e49c746080100000048c7c0010000004883c410c34d89f64c3b7424080f8d9a000000488d6424106a016a01488b4424104989e0e840feffff415e415d4c3b3424488d6424087507488d642408eb504983fd0374454d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408415e4d892e49c746080100000048c7c0010000004883c410c3488d642408415e4c8b6c24084d892e49c746080100000048c7c0010000004883c410c36a016a01488b5c24104989e0e8abfdffff415e415d4c3b3424488d6424087507488d642418eb534983fd0374484d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b7424104d892e49c746080100000048c7c0010000004883c428c3488d642418415e4c8b2c244d892e488d64240849c746080100000048c7c0010000004883c408c3f400000000000000|@6544,1,@17831|48,0,@1174 12990:D67,16928|488dbc2448ffffff483b7d187306ff5560ca090753415141526a016a016a016a016a016a01488b4424404889e3ff15fd430000488b442410ff742428ff15e64300004989c64156488b442408ff15ce4300004989c64156ff7424086a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff15984300004989c4415d4c8924244c896c2408483b65187303ff5558ebc45b488b442458ff156b4300004989c641564c8b7424684d8b364c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95d010000909090e97f010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e98b070000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e98d070000909090e9f3000000909090e9eb000000909090e99f070000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9a1070000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9440a0000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b742418e91c0a00004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15bb4100004989c6e9f20900004c8b7424684d8b76084d8b2e4983fd090f85050300004d8b76184d8b2e4d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15b33e00004889c34883fb0175074c8b742418eb0e488b442418ff15903e00004989c6e9140300004d8b76184d8b264d89e54983fc070f85fb0200004d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15913b00004889c34883fb0175074c8b742418eb0e488b442418ff156e3b00004989c6eb054c8b742418e9be0300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15353b00004989c6e9940300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15033b00004989c6e96a0300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15d13a00004989c6e9400300004c8b7424684d8b76184d8b264d89e54983fc070f85fb0200004d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15cd3700004889c34883fb0175074c8b742418eb0e488b442418ff15aa3700004989c6eb054c8b742418eb254c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15743700004989c64156ff34246a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff153f3700004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742418f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424b80000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da424a800000048b81051620800000000488b5d08ff234c8bb424b80000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff159f360000415e488d6424084c8bac24b80000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da424a800000048b80057620800000000488b5d08ff234c8bac24b80000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424a00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249000000048b81051620800000000488b5d08ff234c8bb424a00000004c8b6c24084b8b44aefc6a016a01488b9c24900000004989e0ff15a8350000415e488d6424084c8bac24a00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249000000048b80057620800000000488b5d08ff234c8bac24a00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642408ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424a00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249000000048b81051620800000000488b5d08ff234c8bb424a00000004c8b6c24084b8b44aefc6a016a01488b9c24880000004989e0ff15b1340000415e488d6424084c8bac24a00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249000000048b80057620800000000488b5d08ff234c8bac24a00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642410ff7424106a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff150f3400004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742428f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424b00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da424a000000048b81051620800000000488b5d08ff234c8bb424b00000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff156f330000415e488d6424084c8bac24b00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da424a000000048b80057620800000000488b5d08ff234c8bac24b00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff742410f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424980000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248800000048b81051620800000000488b5d08ff234c8bb424980000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff157a320000415e488d6424084c8bac24980000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248800000048b80057620800000000488b5d08ff234c8bac24980000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642418ff3424f60424010f85d40000004c8b342441ff364c8b74240841ff76084c8bb424880000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64247848b81051620800000000488b5d08ff234c8bb424880000004c8b6c24084b8b44aefc6a016a01488b5c24704989e0ff1589310000415e488d6424084c8bac24880000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7215488d64247848b80057620800000000488b5d08ff234c8bac24880000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e922ffffff488d6424084c8b7424584d8b364983fe1f75154c8b7424584d8b6e0849c7c601000000e93e2c00004c8b7424584d8b364c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95a010000909090e959010000909090e958010000909090e957010000909090e959010000909090e98a010000909090e9cf010000909090e9ce010000909090e913020000909090e915020000909090e972020000909090e9af020000909090e9ae020000909090e9ad020000909090e9ee020000909090e9ed020000909090e9ec020000909090e9eb020000909090e9ea020000909090e9e9020000909090e9e8020000909090e9e7020000909090e9e6020000909090e9e5020000909090e916030000909090e915030000909090e914030000909090e913030000909090e912030000909090e911030000909090e910030000909090e95f030000909090e95e030000909090e95d030000909090e95c030000909090e95b030000909090e95a030000909090e959030000909090e958030000909090e957030000909090e956030000909090e984030000909090e983030000909090488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460e98b000000488d642458415e4d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e96f280000488d6424584c8b342441ff76084c8b7424084d8b66104c8b7424084d8b6e184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9ba210000488d642460eb52488d6424584c8b342441ff76104c8b7424084d8b66184c8b7424084d8b6e204d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9fe1a0000488d642460e9af0000004c8b7424584d8b6e084d8b75084d8b65184d8b6d204d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d89f4e9fc140000488d642458415e4d8b760841ff364d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b24244d8965004d89ece9ab0f0000488d642460eb05488d642460eb4e488d6424584c8b34244d8b66084c8b34244d8b6e10415e41ff76184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9f0080000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb3e488d642458415e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e97f060000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb5c488d6424084c8b7424504d8b76084d8b76204d8b2e4983fd0975324d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e990020000488d642458e981020000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb3b488d642458415e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5eb16488d642460eb05488d64246048c7c001000000c2100041f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb02ebb041f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9741f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15f42a00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15c92a0000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f05d6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffffe9fbfdffff41f6c50175464d8b55004d8b65084c8b5c24684d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64245848b81051620800000000488b5d08ff234c8b5c24684f8b5c93fce96f010000415e4883c45041f6c60175414d8b164d8b6e084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81051620800000000488b5d08ff234c8b6424084f8b5c94fc4d89dceb05e95dffffff41f6c4010f858d0000004d8b04244d8b4c24084c3b05272900007502eb5c498b304889f74883fe017502eb574883ff0375514d8b40084c3b05fc280000750949c7c003000000eb2c498b384883ff03751c4d8b40084983f801750949c7c003000000eb0749c7c001000000eb0749c7c0010000004983f803750949c7c403000000eb1b4d89cc483b65187306ff5558ca007ce969ffffff49c7c4010000004983fc037502eb634d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849bb085e6508000000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80057620800000000488b5d08ff234c8b5c24084f896493fc4d89ee483b65187306ff5558ca0040e997feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e91ffeffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24604d8b49f849c1e10849c1e9074983c901493bf97215488d64245848b81051620800000000488b5d08ff234c8b4c24604d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b155c2700007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1531270000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8085e6508000000004d89014c8b4424604d8b40f849c1e00849c1e8074983c801493bf87215488d64245848b80057620800000000488b5d08ff234c8b4424604d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e93afaffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b154e2500007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1523250000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f05d6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c40175474d8b0c244d8b5c24084c8b5424184d8b52f849c1e20849c1ea074983ca014d3bca7215488d64240848b81051620800000000488b5d08ff234c8b5424184f8b548afce95a0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24184d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64240848b81051620800000000488b5d08ff234c8b5c24184f8b5c93fce9280200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f541f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e950f7ffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15542200007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1529220000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8085e6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e966fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24104d8b49f849c1e10849c1e9074983c901493bf97215488d64240848b81051620800000000488b5d08ff234c8b4c24104d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b158c2000007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1561200000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f05d6508000000004d89014c8b4424104d8b40f849c1e00849c1e8074983c801493bf87215488d64240848b80057620800000000488b5d08ff234c8b4424104d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e933fbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424104d8b40f849c1e00849c1e8074983c801493bf07215488d64240848b81051620800000000488b5d08ff234c8b442410498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0dbf1e00007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d941e0000750948c7c103000000eb2c488b194883fb0f751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf2890650800000000498938488b7c2410488b7ff848c1e70848c1ef074883cf01483bf77215488d64240848b80057620800000000488b5d08ff23488b7c24104c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424184d8b52f849c1e20849c1ea074983ca014d3bca7215488d64240848b81051620800000000488b5d08ff234c8b5424184f8b548afce90203000041f6c601753e4d8b2e41ff76084d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004c8b5c24084d891c244d89e3eb0a488d642408e98bf1ffff41f6c30175424d8b0b41ff73084c8b5424284d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241848b81051620800000000488b5d08ff234c8b5424284f8b548afceb16415d4d89ee483b65187306ff5558ca0040e954ffffff41f6c201750c498b3a41ff72084d89e1eb16415a4d89d3483b65187306ff5558ca0078e97affffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9da0100004c8b4c24284d8b49f849c1e10849c1e9074983c901493bf97215488d64242048b81051620800000000488b5d08ff234c8b4c24284d8b44b9fc4d89c141f6c1010f852a010000498b11498b7108493bd57505e9fa000000488b0a4889cb4883f9017547498b4d004883f9017538488b5208498b4d08483bd1750948c7c203000000eb15483bd1750948c7c203000000eb0748c7c2010000004883fa037402eb05e9ac000000e9b20000004889d94883fb03755b498b4d004883f903754f488b5208498b4d08483bd1750948c7c203000000eb31488b1a488b01483bd8751f488b5208488b4908483bd1750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa037502eb45eb4e4883f9057548498b4d004883f905753c488b5208498b4d08483bd1750948c7c203000000eb15483bd1750948c7c203000000eb0748c7c2010000004883fa037402eb0949c7c103000000eb1deb004989f1483b65187306ff5558ca807fe9ccfeffff49c7c1010000004983f9037502eb5b4d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d8941084d89294c8b4424284d8b40f849c1e00849c1e8074983c801493bf87215488d64242048b80057620800000000488b5d08ff234c8b4424284d894cb8fc41594d89ca483b65187306ff5558ca007ce9aafdffff41f6c201750c498b324d8b4a084d89e8eb144d89dc483b65187306ff5558ca0070e98bfcffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424104d8b40f849c1e00849c1e8074983c801493bf07215488d64240848b81051620800000000488b5d08ff234c8b442410498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0da31900007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d78190000750948c7c103000000eb2c488b194883fb01751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bff05d650800000000498938488b7c2410488b7ff848c1e70848c1ef074883cf01483bf77215488d64240848b80057620800000000488b5d08ff23488b7c24104c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424704d8b52f849c1e20849c1ea074983ca014d3bca7215488d64246048b81051620800000000488b5d08ff234c8b5424704f8b548afce989030000415e4883c45841f6c60175434d8b0e4d8b66084c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bcb721048b81051620800000000488b5d08ff234c8b5c24084f8b548bfc4d89d3e9220200004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e90cecffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15d01600007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15a5160000750948c7c203000000eb2c488b0a4883f905751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8a89e6208000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c3010f858b000000498b3b4d8b4308483b3da81500007502eb5c488b174889d64883fa017502eb574883fe037551488b7f08483b3d7d150000750948c7c703000000eb2c488b374883fe05751c488b7f084883ff01750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff03750949c7c303000000eb1b4d89c3483b65187306ff5558ca007ee96bffffff49c7c3010000004983fb037502eb604d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849baa89e6208000000004d89134c8b5424084d8b52f849c1e20849c1ea074983ca014d3bca721048b80057620800000000488b5d08ff234c8b5424084f895c8afc4d89e6483b65187306ff5558ca0060e97dfcffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e904fcffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424684d8b40f849c1e00849c1e8074983c801493bf07215488d64246048b81051620800000000488b5d08ff234c8b442468498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0de01300007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0db5130000750948c7c103000000eb2c488b194883fb01751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bff05d650800000000498938488b7c2468488b7ff848c1e70848c1ef074883cf01483bf77215488d64246048b80057620800000000488b5d08ff23488b7c24684c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424204d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241048b81051620800000000488b5d08ff234c8b5424204f8b548afce95e0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24204d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64241048b81051620800000000488b5d08ff234c8b5c24204f8b5c93fce92c0200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f54883c40841f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e949e6ffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15dd1000007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15b2100000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8085e6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e962fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24184d8b49f849c1e10849c1e9074983c901493bf97215488d64241048b81051620800000000488b5d08ff234c8b4c24184d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15150f00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15ea0e0000750948c7c203000000eb2c488b0a4883f90f751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b828906508000000004d89014c8b4424184d8b40f849c1e00849c1e8074983c801493bf87215488d64241048b80057620800000000488b5d08ff234c8b4424184d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e92ffbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424184d8b40f849c1e00849c1e8074983c801493bf07215488d64241048b81051620800000000488b5d08ff234c8b442418498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0d480d00007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d1d0d0000750948c7c103000000eb2c488b194883fb0d751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf505e650800000000498938488b7c2418488b7ff848c1e70848c1ef074883cf01483bf77215488d64241048b80057620800000000488b5d08ff23488b7c24184c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424204d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241048b81051620800000000488b5d08ff234c8b5424204f8b548afce95e0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24204d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64241048b81051620800000000488b5d08ff234c8b5c24204f8b5c93fce92c0200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f54883c40841f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e9e1dfffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15450a00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b151a0a0000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8085e6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e962fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24184d8b49f849c1e10849c1e9074983c901493bf97215488d64241048b81051620800000000488b5d08ff234c8b4c24184d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b157d0800007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1552080000750948c7c203000000eb2c488b0a4883f90f751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b828906508000000004d89014c8b4424184d8b40f849c1e00849c1e8074983c801493bf87215488d64241048b80057620800000000488b5d08ff234c8b4424184d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e92ffbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424184d8b40f849c1e00849c1e8074983c801493bf07215488d64241048b81051620800000000488b5d08ff234c8b442418498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0db00600007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d85060000750948c7c103000000eb2c488b194883fb0d751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf505e650800000000498938488b7c2418488b7ff848c1e70848c1ef074883cf01483bf77215488d64241048b80057620800000000488b5d08ff23488b7c24184c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81051620800000000488b5d08ff234c8b5c24104f8b5c93fceb05e96edaffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81051620800000000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15a20400007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1577040000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f05d6508000000004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80057620800000000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c50175424d8b5d004d8b65084d8b53084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb84156ff34246a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff15200300004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742418f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424a80000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249800000048b81051620800000000488b5d08ff234c8bb424a80000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff1580020000415e488d6424084c8bac24a80000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249800000048b80057620800000000488b5d08ff234c8bac24a80000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424900000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424900000004c8b6c24084b8b44aefc6a016a01488b9c24800000004989e0ff1589010000415e488d6424084c8bac24900000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24900000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642408ff3424f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424900000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424900000004c8b6c24084b8b44aefc6a016a01488b5c24784989e0ff1595000000415e488d6424084c8bac24900000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24900000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642410e967d0fffff4000000000000|@6539,1,@17798,@12989,@12989,@12989,@12994,@1172,@6249,@6178,@6253,@5750,@6520,@1823,@6250,@6178,@6253,@5750,@6520,@1823,@6250,@1172,@6249,@1165,@1164,@1165,@1164,@1172,@6249,@5750,@6520,@1172,@6249,@1823,@6250,@1172,@6249,@1823,@6250,@1823,@6250,@1172,@6249,@12989,@12989,@12989,@12995,@12989,@12989,@12989,@12996,@12997,@12998,@12999,@13000,@13001,@13002,@13003,@13004,@13005,@13006,@13007,@13008,@13009,@13010,@13011,@12991|3287,0,@625 3388,0,@664 3523,0,@625 3627,0,@664 3762,0,@625 3866,0,@664 4071,0,@625 4172,0,@664 4308,0,@625 4409,0,@664 4541,0,@625 4639,0,@664 6064,0,@625 6217,0,@625 6441,0,@6249 6480,0,@664 6576,0,@625 6653,0,@625 6888,0,@6250 6928,0,@664 7105,0,@625 7329,0,@6250 7373,0,@664 7459,0,@625 7615,0,@625 7839,0,@6249 7878,0,@664 7970,0,@625 8087,0,@625 8205,0,@625 8361,0,@625 8585,0,@6250 8624,0,@664 8801,0,@625 9025,0,@6249 9069,0,@664 9246,0,@625 9470,0,@6520 9514,0,@664 9606,0,@625 9759,0,@625 9942,0,@625 10359,0,@664 10538,0,@625 10762,0,@6249 10806,0,@664 10898,0,@625 10974,0,@625 11089,0,@625 11245,0,@625 11469,0,@1164 11508,0,@664 11749,0,@1164 11788,0,@664 11965,0,@625 12189,0,@6249 12233,0,@664 12325,0,@625 12442,0,@625 12564,0,@625 12720,0,@625 12944,0,@6250 12983,0,@664 13160,0,@625 13384,0,@6520 13428,0,@664 13605,0,@625 13829,0,@6253 13873,0,@664 13965,0,@625 14082,0,@625 14204,0,@625 14360,0,@625 14584,0,@6250 14623,0,@664 14800,0,@625 15024,0,@6520 15068,0,@664 15245,0,@625 15469,0,@6253 15513,0,@664 15599,0,@625 15755,0,@625 15979,0,@6249 16018,0,@664 16278,0,@625 16379,0,@664 16514,0,@625 16618,0,@664 16753,0,@625 16854,0,@664 12991:D13,20248|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e9b3010000909090e934020000909090e928060000909090e9a9060000909090e9f1060000909090e972070000909090e919080000909090e99a080000909090e95e090000909090e9df090000909090e9d30d0000909090e9820e0000909090e9030f0000909090e93e0f0000909090e9e50f0000909090e99c100000909090e941140000909090e9d3150000909090e92b160000909090e983160000909090e9731a0000909090e9cb1a0000909090e9231b0000909090e9cf1e0000909090e9271f0000909090e97f1f0000909090e9b01f0000909090e908200000909090e9d2230000909090e99d270000909090e9422b0000909090e9352f0000909090e939340000909090e9e2370000909090e963380000909090e912390000909090e9b63c0000909090e9913d0000909090e95b410000909090e925450000909090e9f0480000909090e968490000909090e9e94900009090904c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8b6e084d8b5e104d8b66184d8b56204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b70104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b7008ff70104c89f0ff157c4800004989c54c8b74240849c7060100000049c74608010000004d896e104c8b2c244d896e18488d64241049c746200100000049c746280100000048c7c001000000c34c8b68084c8b70104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b58104c8b60184c8b70204d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24415d49c74500010000004d89650849c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b60184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508030000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8b2e4d8b56084d8b66184d8b5e204d8b75004d89f14983fe0b75414d8b750841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98b0200004d89ce4983f9070f85450200004d8b4d084d8b75104d8b45184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb394983fe09752c4d8b75084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b700841ff3641ff760841ff762048b87093650800000000488b1c244c8b442408ff15fa4000004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24184d892e415648b8b893650800000000488b5c24104c8b442418ff15a94000004989c64c8b6c242849c745000100000049c74508010000004c8b24244d896510488d64240849c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c3415d49be08946508000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c34c8b70084c8b60104c8b68184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080300000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c3ff70084c8b7010ff70184983fe01750949c7c601000000eb294d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648b87093650800000000488b5c24104c8b442408ff15823e00004989c6415648b8b893650800000000488b5c24184c8b442410ff155b3e00004989c64c8b6c242049c745000100000049c74508010000004c8b6424084d89651049c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68184d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508030000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b6808ff70104c8b701841f6c501752c4d8b6d00498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8928eb0748c7c0010000004d8b264d89e54983fc07752f4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933e9a30000004d89ec4983fd05752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb6e4d89e54983fc03752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb394983fd01752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054989c6eb09ff15313900004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b2c244d892c24488d642408415d49c745000100000049c74508030000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608030000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b58104c8b60184c8b50204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b60084c8b68104d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b415d49c745000100000049c745080300000049c74510010000004d895d184d8965204d89752848c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b70104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c746080300000049c74610010000004d896e1849c746200100000049c746280100000048c7c001000000c34c8b6810415e49c706010000004d896e0849c746100100000049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58104c8b68184c8b60204d8b75004d89f24983fe0b75414d8b750841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98b0200004d89d64983fa070f85450200004d8b55084d8b75104d8b4d184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb394983fe09752c4d8b75084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084c8b68104d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b70084d8b2e4d8b5e104d8b56184d8b66204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084d8b2c244d8b74241041ff7424204c8b24244d8b1c244d89da4983fb0b75494d89e44d8b64240841f6c401752f4d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c401000000e9a40200004d89e44d89d34983fa070f85510200004d89e24d8b62084d89d24d8b5a104d89d24d8b52184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d89dce9280100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24eb434d89e44983fb0975334d89e44d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004154498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89284d8b264d89e54983fc07752f4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933e9a30000004d89ec4983fd05752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb6e4d89e54983fc03752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb394983fd01752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054889c3eb09ff15c91a00004889c34883fb017504415eeb12488b0424ff15aa1a00004989c6488d6424084c8b2c244d8b5d004d89dc4983fb0375374d89ed4d8b6d08488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24eb4c4d89ed4983fc0b75374d89ed4d8b6d18488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24eb0c488d64240849c7c401000000415d49c745000100000049c745080300000049c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b60104c8b68184d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa03752d4d8b6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d8923eb3a4983fb0b752d4d8b6424184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d8923eb0749c7c3010000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d49c745000100000049c745080300000049c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b700841ff3641ff760841ff761848b87093650800000000488b1c244c8b442410ff15721500004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e415648b8b893650800000000488b5c24104c8b442420ff15211500004989c64c8b6c242849c745000100000049c74508010000004c8b24244d896510488d64240849c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68104d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b70104c8b601841f6c60175504d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d89264d89f44d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891eeb264d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58104c8b68184c8b60204d8b75004d89f24983fe0b75414d8b750841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98b0200004d89d64983fa070f85450200004d8b55084d8b75104d8b4d184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb394983fe09752c4d8b75084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084c8b70104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d893424415e4d892649c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084c8b60184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b60084c8b68104d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c3f4000000000000|@6542,1,@17817,@13013,@13013,@13016,@13017,@13018,@13019,@13019,@13022,@13022,@13012|3679,0,@6534 3751,0,@6536 3986,0,@6538 4294,0,@6534 4325,0,@6536 14767,0,@6534 14839,0,@6536 12992:D3,736|483b65187305ff5558cd014c8b304d89f54983fe0b753c4c8b700841f6c601752a4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c34d89ee4983fd070f85400200004c8b60084c8b70104c8b68184983fe010f85020100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920c34d8b364d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34983fe09752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c3f4000000000000|@6535,1,@17796| 12993:D3,128|483b65187305ff5558cd014c8b284d89ee4983fd03752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe0b752b4c8b7018498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c3f400000000|@6537,1,@17797| 12994:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17799| 12995:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17800| 12996:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17801| 12997:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17802| 12998:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17803| 12999:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17804| 13000:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17805| 13001:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17806| 13002:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17807| 13003:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17808| 13004:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17809| 13005:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17810| 13006:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17811| 13007:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17812| 13008:D3,152|483b65187305ff5558cd094989dd41f6c501757f4d8b5d00498b5d08a801756bff304c8b70084c8b14244d89d44d3bd3750d488d6424084c89f0e9c1ffffff4d89e44d3be37d3a4c89eb4c89f0e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e975ffffff48c7c001000000c3c3f4000000|@6541,1,@17813| 13009:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17814| 13010:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17815| 13011:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17816| 13012:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17830| 13013:D5,200|483b65187306ff5558ca0901504150536a01f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff159c0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f400|@6543,1,@17818,@13015,@13014| 13014:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17820| 13015:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17819| 13016:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17821| 13017:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17822| 13018:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17823| 13019:D5,200|483b65187306ff5558ca0901504150536a01f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff159c0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f400|@6543,1,@17824,@13021,@13020| 13020:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17826| 13021:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17825| 13022:D5,200|483b65187306ff5558ca0901504150536a01f64424080175484c8b742408498b064d89f641ff7608488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff15a00000004989c4415d4c8924244c896c2408483b65187303ff5558ebb1415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff153d0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f40000000000|@6543,1,@17827,@13024,@13023| 13023:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17829| 13024:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17828| 13025:D5,1448|483b65187306ff5558ca0901505341504c8b7424084d8b66f84d89e549c1e40849c1ec074983cc0141544c8b1c244d89dc4983fb017d07488d642420eb744d89e44d89e34c3b25550500007d604d89db4c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02204d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab41544d89ee49c1e60849c1ee074983ce0149c7c501000000eb15488d64242048b8d055620800000000488b5d08ff234d3bee721d4c8b7424204d8b76f849c1e60849c1ee074983ce0141566a016a01eb6d4c8b6424184f8b64acfc4d8b6424184983fc03753d4c8b24244d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64242848b80057620800000000488b5d08ff234d89e44bc744acfc03000000eb004d89ec4983c4024d89e5483b65187306ff5558ca0060e971ffffff4c8b2c244d89ee4c3b6c24100f829d000000488d642408415e4883c40841f6c6017405e9d10200004c8b6424084d89e54983fc017d07488d642428eb624d89ed4d89ec4c3b2dfd0300007d4e4d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554d89f5e906020000488d64242848b8d055620800000000488b5d08ff234d89f64d89f54983c60241564d89ed4c8b7424404f8b6caefc4d8b750841ff75384156ff742420f64424080175364c8b6c24084d8b75004d89ed41ff7508498b46106a016a01488b5c24284989e0ff1574030000415d488d64240849c7c601000000eb23415d4c8b6424104c896424184c896c2420483b65187303ff55584883c418e9cafeffff41f6c5010f85c80000004d8b55004d8b65084c8b5c24584d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64246848b89051620800000000488b5d08ff234d89db4f8b5c93fc4d8b1b41f6c30175054d89f3eb644c8b5c24404d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64246848b81051620800000000488b5d08ff234d89db4f8b5c93fc4983fb0375054d89f3eb224d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060e92effffff49c7c5010000004d89f441f6c40175374d8b5424084d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c3b6c24507e2c4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424eb054c8b642408415d4c8924244c896c2408483b65187303ff5558e936feffff41f6c501750d4d8b5d004d8b6508e9d40000004156f604240175394c8b3424498b064d89f641ff7608488b5c24304c8b4424184c8b4c24104c8b542428ff158c010000415d4c892c24483b65187303ff5558ebc1488d642410488b34244c8b76f849c1e60849c1ee074983ce014983fe017510488d64242848b848c2620800000000c34d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca42404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c89e84c89f14889f6488d6424084889c748d1e9f348a58060ffbf4883c420c341f6c3010f85a0000000498b3b4d8b53084c8b04244d8b48f84c89ce49c1e10849c1e9074983c901493bf97215488d64243048b81051620800000000488b5d08ff234d89c04d8b4cb8fc4983c1027115488d64243048b8d006620800000000488b5d08ff234d89c048c1e60848c1ee074883ce01483bfe7215488d64243048b80057620800000000488b5d08ff234d89c04d894cb8fc4d89d3483b65187306ff5558ca0078e956ffffff4d89e5483b65187306ff5558ca0060e95bfefffff400ffffffffffffff01ffffffffffffff01|@6551,1,@17834,@13026,@12989|180,0,@657 282,0,@664 498,0,@657 698,0,@628 767,0,@625 894,0,@105 1131,0,@1447 1292,0,@625 1327,0,@105 1368,0,@664 13026:D5,640|483b65187306ff5558ca09074989c6534150415248c7c00100000041f6c6010f85cd0000004d8b1e4d8b6e084c8b6424104d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241848b89051620800000000488b5d08ff234d89e44f8b649cfc4d8b242441f6c40175054989c4eb684c8b6424084d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241848b81051620800000000488b5d08ff234d89e44f8b649cfc4983fc0375054989c4eb254d8d67e84c3b65107306ff5550ca016a4d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0142e929ffffff49c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64241848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0162ebc441564d89c8488b5c2418ff155801000048bba895650800000000ff15400100004989c64c8b2c244c2b6c2408488d6424107115488d64241048b8d006620800000000488b5d08ff234983c50141f6c6010f85e10000004d8b1e4d8b66084d8b134983fd017f0d488d64241048c7c001000000c34c8b5c24084d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b89051620800000000488b5d08ff234d89db4f8b5c93fc4d8b1b41f6c3017515488d64241048b86096650800000000488b5d08ff234c8b1c244d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b80057620800000000488b5d08ff234d89db4bc74493fc030000004d89eb4983eb027115488d64241048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e915ffffff488d64241048c7c001000000c3f4000000|@6552,1,@17835,@10785,@13029|78,0,@628 149,0,@625 278,0,@105 330,0,@6545 370,0,@105 460,0,@628 498,0,@6548 544,0,@664 586,0,@105 13027:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be4080ad09000000004c8930c3f400000000|@6547,1,@17833|47,0,@13028 13028:D3,88|483b65187305ff5558cd054c8b58084c8b68104c8b62084d89e64d8b6424084d8b76104d3be37e0848c7c003000000c34d3be37d0848c7c001000000c34d3bf57e0848c7c003000000c348c7c001000000c3f40000000000|@6546,1,@17832| 13029:D3,432|483b65187306ff5558ca0901a8010f85880100004c8b184c8b70084c8b6bf849c1e50849c1ed074983cd014d3bdd721048b89051620800000000488b5d08ff234e8b549bfc4d8b224d8b6a08498b42106a016a016a0141f6c401751b4c891c2448c7442408ffffffff48c7442410ffffffffe9bf0000004983fc07751b4c891c2448c7442408ffffffff48c7442410ffffffffe99e0000004d8b60f849c1e40849c1ec074983cc014d3bdc7215488d64241848b81051620800000000488b5d08ff234f8b6498fc4983fd01750949c7c501000000eb524983fd017515488d64241848b8d812620800000000488b5d08ff234983fdff751e483b05aa0000007515488d64241848b87013620800000000488b5d08ff2348d1f849d1fd489949f7fd4c8d2c45010000004c891c244c896424084c896c2410415c415b415a4d8d6fe04c3b6d107306ff5550ca085d4d89ef49c745f8030000004d8955104d895d084d89650041554c89f0e893feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000100000000000080|@742,1,@17836|50,0,@628 180,0,@625 227,0,@142 263,0,@146 13030:D6,1568|483b65187306ff5558ca090750534150415141524c8b6c24184d8b55f84d89d449c1e20849c1ea074983ca014c8b5c24204d89de4d3bda7215488d64242848b81051620800000000488b5d08ff234d89f64d89ed4f8b5cb5fc4983fb01740f488d64242848c7c001000000c228004d89ed49c1e40849c1ec074983cc014d89f64d89f34d3bf47215488d64242848b80057620800000000488b5d08ff2349beb84b6208000000004d89ed4d89db4d89dc4f89749dfc4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64242848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc41ff3641ff76084d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f6042401755b4c8b3424498b064d89f641ff76084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e8f5fcffff415d4c892c24483b65187303ff5558eb9f488d6424084c8b7424084d8b2e4983fd0175274d89f64d8b76084d8d4ff04c3b4d107306ff5550ca00404d89cf49c741f8010000004d8931eb0749c7c1010000006a016a016a016a016a016a016a01488b4424384889e34c8b442450ff15ca020000ff3424488b5c2410488b442418ff742420ff742430ff742440ff7424504c8b7424704d8b5ef849c1e30849c1eb074983cb014c8ba424900000004d89e54d3be37218488da4249800000048b80057620800000000488b5d08ff234d89f64d89ed4b895caefcff15570200004989c54c8bb424c00000004d8b66f849c1e40849c1ec074983cc014c8bb424900000004d89f34d3bf47218488da4249800000048b80057620800000000488b5d08ff234c8ba424c00000004d89db4d89de4f896c9cfc4c8bac24b80000004d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57218488da4249800000048b80057620800000000488b5d08ff234c8bac24b80000004c8b7424104c89f34d89e44f8974a5fc488b442408ff159b0100004989c54c8bb424b00000004d8b66f849c1e40849c1ec074983cc014c8bb424900000004d89f34d3bf47218488da4249800000048b80057620800000000488b5d08ff234c8ba424b00000004d89db4d89de4f896c9cfc4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b6424204d8965004c8ba424880000004d8b5424f849c1e20849c1ea074983ca014d89f64d89f34d3bf27218488da4249800000048b80057620800000000488b5d08ff234d89e44d89db4d89de4f896c9cfc4c8bac24a80000004d8b6df849c1e50849c1ed074983cd014d89f64d89f34d3bf57218488da4249800000048b80057620800000000488b5d08ff234c8ba424a80000004c8b6c24184d89db4d89de4f896c9cfc4c8bac24a00000004d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57218488da4249800000048b80057620800000000488b5d08ff234c8bac24a00000004c8b34244d89e44f8974a5fc488d64240848c7c0010000004881c490000000c22800f4000000000000|@6580,1,@17859,@13008,@13008,@13052|64,0,@625 143,0,@664 159,0,@578 220,0,@628 970,0,@664 1054,0,@664 1132,0,@664 1234,0,@664 1349,0,@664 1422,0,@664 1505,0,@664 13031:D6,1352|483b65187306ff5558ca0907504c8b63f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64240848b89051620800000000488b5d08ff234d89f64e8b6cb3fc41ff75004d8b60f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241048b81051620800000000488b5d08ff234d89ed4d89ee43ff74a8fc4d8b61f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81051620800000000488b5d08ff234d89ed4d89ee43ff74a9fc4d8b62f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64242048b81051620800000000488b5d08ff234d89ed4d89ee43ff74aafc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64242848b81051620800000000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64243048b81051620800000000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64243848b81051620800000000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64244048b81051620800000000488b5d08ff234c8b7424784d89ed4f8b74aefc4c8b6424704d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64244048b81051620800000000488b5d08ff234c8b6c24704d89e44f8b6ca5fc4983fd01750949c7c501000000eb044d8b6d0041556a016a016a014c8b8424880000004c8b8c24800000004c8b542478ff742438ff742430ff7424404156488b442438488d5c2420ff15d3020000ff342449c7c6010000004c8b6c242041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44c8b6c244041f6c5010f85bb0000004d8b4d004d8b65084c8b9c24900000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64246848b81051620800000000488b5d08ff234c8b9c24900000004f8b5c8bfc4d89f24983ea014d03da7115488d64246848b8d006620800000000488b5d08ff234c8b9424900000004d8b52f849c1e20849c1ea074983ca014d3bca7215488d64246848b80057620800000000488b5d08ff234c8b9424900000004f895c8afc4d89e5483b65187306ff5558ca0060e93bffffff4c8b7424784d8b66f849c1e40849c1ec074983cc014c8b6c24604d89ee4d3bec7215488d64246848b81051620800000000488b5d08ff234c8b6c24784d89f64f8b6cb5fc4983fd01750949c7c501000000eb234d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d89650041554c8b6c24784d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64247048b81051620800000000488b5d08ff234c8b7424784d89ed4f8b74aefc4983fe01750949c7c601000000eb214d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4156488b442460488b5c2448ff15ba0000004989c641566a016a01488b442458488b5c24504989e0ff1596000000415e488d642408498d47b0483b45107306ff5550ca00404989c748c740f8090000004c8970404c8b7424584c8970384c8b7424084c8970304c8b7424104c8970284c8b7424604c8970204c8b7424504c8970184c8b34244c897010488d6424184c8b34244c897008488d6424084c8b7424504c89304883c460c25000f400|@6554,1,@17838,@12989,@13008,@13032|48,0,@628 108,0,@625 167,0,@625 226,0,@625 290,0,@625 359,0,@625 428,0,@625 497,0,@625 564,0,@625 710,0,@105 803,0,@625 849,0,@105 899,0,@664 987,0,@625 1105,0,@625 13032:D4,248|483b65187306ff5558ca090753415041514152a8010f85b0000000ff30488b40086a016a016a014c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488d5c24204c8b4424504c8b4c24484c8b542440e8a4ffffff415e415d415c498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933584c8b4424404c8b4c24384c8b5424184c8b6c24104c8b642408415b488d6424184c895c24104c896424184c896c24204c8b34244c897424084883c408ff2545000000488d642418415d4c8b6424104c8b74240849c74500010000004d8965084d89751048c7c001000000c22000f400|@1573,1,@17839,@13033| 13033:D42,4448|488dbc2498feffff483b7d187306ff5560ca090750415041514152ff33ff7308ff73106a016a016a016a016a016a01488b4424604889e3ff156b120000488b442410ff742418ff742428ff742438ff154c1200004989c64156488b442408ff15341200004989c64156ff7424086a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15001200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6ff3424ff7424186a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15b51100004989c4415d4c8924244c896c2408483b65187303ff5558ebc658488b9c24a0000000ff15851100004989c64156488b442448ff156d1100004989c64156488b442448ff15551100004989c64156ff7424086a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15211100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6ff3424ff7424186a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15d61000004989c4415d4c8924244c896c2408483b65187303ff5558ebc658488b9c24d0000000ff15a61000004989c64156488b8424c0000000488b5c2448ff15861000004989c64156488b8424c0000000488b5c2418ff15661000004989c641566a016a01488b442458488b5c24184989e0ff1542100000ff34246a016a01488b442438488b5c24284989e0ff1520100000ff34244c8bb424280100004d8b264d89e54983fc0f75446a016a01488b842488000000488b9c24980000004989e0ff15e40f00005b488d6424086a016a01488b8424100100004989e0ff15c10f0000415e488d642408e9ad0000004d89ec4983fd0375416a016a01488b842488000000488b9c24980000004989e0ff15870f00005b488d6424086a016a01488b8424100100004989e0ff15640f0000415e488d642408eb634d89e54983fc4775266a016a01488b842488000000488b9c24980000004989e0ff152d0f0000415e488d642408eb344d89ee4983fe1775074c8b742478eb246a016a01488b842410010000488b9c24980000004989e0ff15ef0e0000415e488d64240841564c8b342441f6c6010f85be0000004d8b164d8b6e084c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bd47218488da4243801000048b81051620800000000488b5d08ff234c8ba424500100004f8b6494fc4983c4027118488da4243801000048b8d006620800000000488b5d08ff234c8b9c24500100004d8b5bf849c1e30849c1eb074983cb014d3bd37218488da4243801000048b80057620800000000488b5d08ff234c8b9c24500100004f896493fc4d89ee483b65187306ff5558ca0040e938ffffff4c8bb424300100004d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e9f9010000909090e980020000909090e978020000909090e970020000909090e968020000909090e960020000909090e960020000909090e950020000909090e948020000909090e940020000909090e9e6020000909090e930020000909090e928020000909090e920020000909090e94e030000909090e910020000909090e908020000909090e900020000909090e9f8010000909090e9f0010000909090e9e8010000909090e9e0010000909090e9d8010000909090e9d0010000909090e9c8010000909090e9c0010000909090e9b8010000909090e9b0010000909090e9a8010000909090e9a0010000909090e998010000909090e990010000909090e988010000909090e980010000909090e978010000909090e970010000909090e968010000909090e960010000909090e958010000909090e950010000909090e948010000909090e940010000909090e9380100009090904d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76186a016a01488b842430010000488b9c24500100004989e0ff15600c000058488d6424084c8b842460010000488b5c2410ff153f0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70601000000e99e0200004d89f54d89ee41ff75084d89f641ff76106a016a01488b842428010000488b9c24480100004989e0ff15b40b000058488d6424084c8b842458010000488b5c2408ff15930b00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70603000000e90f0200004d89f6e9070200004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76186a016a01488b842430010000488b9c24500100004989e0ff15030b000058488d6424084c8b842460010000488b5c2410ff15e20a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060f000000e9610100004d89f64d8b6e0841ff75104d8b5d104d89dc4d8b1b4983fb0175604d8b5d204983fb01750949c7c303000000eb0749c7c3010000004983fb0375394d89e6498b460841ff750041ff750848ba905d630800000000ff152b0a00004989c64d8b2e4e8d2c6d0100000049c7c401000000e956080000488d642408eb05488d6424084d89f6e93d0800004d89f54d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff76206a016a01488b842438010000488b9c24580100004989e0ff15b309000058488d642408f6042401488d6424087532488b9c2460010000ff158c0900004989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d897500eb0749c7c5010000004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7061f00000041564c8bb424380100004d8b2e4d89ec4983fd130f853f0100004d89f64d8b6e084d89f64d8b5e184c8bb424500100004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4244001000048b89051620800000000488b5d08ff234c8bb424500100004f8b649efc4c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4244001000048b81051620800000000488b5d08ff234c8bb424480100004f8b749efc4983fc01754e4983fe0375484c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bee7218488da4244001000048b80057620800000000488b5d08ff234c8bb424480100004bc744aefc03000000eb544983fc03754e4983fe0375484c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bee7218488da4244001000048b80057620800000000488b5d08ff234c8bb424480100004bc744aefc03000000eb00e9d40000004d89f64d89e54983fc0b75296a016a01488b842420010000488b9c24400100004989e0ff158a070000415e488d642408e9a00400004d89f64983fd170f85920000004d89f64d8b76084d8b66104d89e54d8b24244983fc0175514d8b66204983fc01750949c7c403000000eb0749c7c4010000004983fc0375314d89ee498b460848ba905d630800000000ff151a0700004989c64d8b2e4e8d2c6d0100000049c7c401000000e9470200006a016a01488b842420010000488b9c24400100004989e0ff15db060000415e488d642408e9e8000000488b442450488b9c2408010000ff15b40600004989c64156488b842490000000488b9c2418010000ff15910600004889c36a016a01488b4424104989e0ff1574060000415e488d6424104d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8ba424100100004d8965184c8b6424084d8965104c8b24244d896508488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424080100004d8966084d892e4c8bac24100100004d8975004c8b7424184d8975084c8b34244d897510488d64240848c7c0010000004881c428010000c2180041f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e9fcfeffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89051620800000000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f097650800000000488b5d08ff234983fc017518488da4244001000048b87098650800000000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80057620800000000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffff4983fd157d0949c7c601000000eb314d89e34983c31049bac898650800000000498d720849d1eb4b8d3c1e48c7c10a000000483bc9f3a6753549c7c6030000004983fe037502eb7c6a016a01488b842420010000488b9c24400100004989e0ff152c040000415e488d642408eb3f4d89e24983c2024d89eb4983eb027118488da4244001000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e953ffffff41f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e918feffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89051620800000000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f097650800000000488b5d08ff234983fc017518488da4244001000048b87098650800000000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80057620800000000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffff41f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e9e3fbffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89051620800000000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f097650800000000488b5d08ff234983fc017518488da4244001000048b87098650800000000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80057620800000000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffffe997f8ffff4983fd157d0949c7c601000000eb354d89e34983c31049bac898650800000000498d720849d1eb4b8d3c1e48c7c10a000000483bc9f3a60f85ce00000049c7c6030000004983fe030f85ab0000006a016a01488b842430010000488b9c24500100004989e0ff150001000058488d6424084c8b842460010000488b5c2408ff15df0000004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049c74520010000004d8975184c8b7424104d8975104c8b34244d897508488d6424084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70617000000eb0d488d6424184c8bb42430010000e9f0feffff4d89e24983c2024d89eb4983eb027118488da4245001000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9b6fefffff4|@6561,1,@17840,@13035,@12989,@12989,@12989,@13008,@13008,@12989,@11175,@12989,@13036,@12989,@11175,@13037,@12989,@13038,@12989,@13039,@12989,@12989,@12989,@12989,@12989,@12989,@12989,@12989,@12989,@13008,@13008,@13008,@13040,@13041,@13042,@13043,@13008,@13044,@13045,@13046,@13034,@12991|863,0,@625 906,0,@105 959,0,@664 1943,0,@2573 2299,0,@628 2365,0,@625 2443,0,@664 2527,0,@664 2696,0,@2573 3141,0,@628 3184,0,@6555 3214,0,@6558 3268,0,@664 3343,0,@6560 3455,0,@105 3624,0,@628 3667,0,@6555 3697,0,@6558 3751,0,@664 3934,0,@628 3977,0,@6555 4007,0,@6558 4061,0,@664 4141,0,@6560 4410,0,@105 13034:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17853| 13035:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89051620800000000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@3363,1,@17841|64,0,@628 13036:D3,232|483b65187305ff5558cd09a8010f85c60000004c8b28488b40084c8b73f849c1e60849c1ee074983ce014d3bee721048b89051620800000000488b5d08ff234e8b74abfc4983fe0175204d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e95effffff41ff36e856ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@3363,1,@17842|49,0,@628 13037:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89051620800000000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@3363,1,@17843|64,0,@628 13038:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89051620800000000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@3363,1,@17844|64,0,@628 13039:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89051620800000000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@3363,1,@17845|64,0,@628 13040:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17846| 13041:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17847| 13042:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17848| 13043:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17849| 13044:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17850| 13045:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17851| 13046:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17852| 13047:D4,520|483b65187306ff5558ca09075341504151415249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24204d89ee4983fd017d0a488d642428e9980100004d89f64d89f54c3b359c0100000f8d800100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c005000000f348ab4c89f14c8b34244c89f249c706010000006a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448ff74242041564155415441534152415141505756524989c848c7c001000000488d5c24584c8b8c24880000004c8b942480000000ff15ef000000488d6424184c8b34244d8b36488d6424084983fe030f858f000000ff742418488b4c2418488b5c2410488b4424084c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b5424304889542430488974243848897c24404c894424484989c84c894c24504989d9488b1c244c895424584989c248c7c0010000004c895c24604c896424684c896c24704883c428e92afeffff488d642428488d64242048c7c001000000c24800488d64242848b8d055620800000000488b5d08ff23f4ffffffffffffff01|@6573,1,@17854,@13048|497,0,@657 13048:D10,3312|483b65187306ff5558ca090750534150415141524c8b6424104d8b5424f84d89d349c1e20849c1ea074983ca014c8b7424204d89f54d3bf27215488d64242848b81051620800000000488b5d08ff234d89ed4d89e44f8b74acfc4983fe050f85d10200004d89e649c1e30849c1eb074983cb014d89ec4d89e54d3be37215488d64242848b80057620800000000488b5d08ff234d89f64d89ed4d89ec4bc744aefc030000004c8b7424084d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64242848b89051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4c8b24244d8b5424f849c1e20849c1ea074983ca014d89ed4d89eb4d3bea7215488d64242848b81051620800000000488b5d08ff234d89db4d89e44d89dd43ff749cfc4c8ba424880000004d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64243048b81051620800000000488b5d08ff234c8bac24880000004d89e443ff74a5fc4d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156e9e2030000488d6424104983fe030f85070200004c8b7424584d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64241848b81051620800000000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24404d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81051620800000000488b5d08ff234c8b7424404d89ed4b8b5caefc6a016a014989e0ff1563090000ff34244c8b7424604d8b66f849c1e40849c1ec074983cc014c8b6c24284d89ee4d3bec7215488d64243048b81051620800000000488b5d08ff234c8b6c24604d89f64b8b44b5fc4c8b6c24504d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424504d89ed4b8b5caefc6a016a014989e0ff15c5080000415e488d6424084c8b6c24404d8b65f849c1e40849c1ec074983cc014c8b6c24284d89e84d3bec7215488d64243048b81051620800000000488b5d08ff234c8b6c24404d89c04f8b6485fc4d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d8975104d8965084c8b14244d89d34d8955004c8b542418498b7af848c1e70848c1ef074883cf014d89c04d89c14c3bc77215488d64243048b80057620800000000488b5d08ff234d89d24d89c94f896c8afc4c8b6c24204d89db4d895d00488d6424084d8965084d89751048c7c0010000004883c428c25800488d64240841f6c60175274d8b1e4d8b66084d8b7610415d4d895d004d8965084d89751048c7c0010000004883c408c258004c8b7424504d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64241048b81051620800000000488b5d08ff234c8b6c24504d89f64b8b44b5fc4c8b6c24384d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241048b81051620800000000488b5d08ff234c8b7424384d89ed4b8b5caefc6a016a014989e0ff151a070000ff34244c8b7424584d8b66f849c1e40849c1ec074983cc014c8b6c24204d89ee4d3bec7215488d64242848b81051620800000000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24484d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64242848b81051620800000000488b5d08ff234c8b7424484d89ed4b8b5caefc6a016a014989e0ff157c060000415e488d6424084c8b6c24384d8b5df849c1e30849c1eb074983cb014c8b6c24204d89ec4d3beb7215488d64242848b81051620800000000488b5d08ff234c8b6c24384d89e44f8b64a5fc4c8b6c24184c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c420c25800f60424010f85b10000004c8b3424498b064d89f641ff76084c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488b542458488b4c2450415641554154415341524151415057565251ff742470ff742470ffb424a800000048bb40996508000000004c8b8424a00000004c8b8c24980000004c8b942490000000ff155a050000415d4c892c24483b65187303ff5558e945ffffff488d6424284c8b7424584d8b66f849c1e40849c1ec074983cc014c8b6c24104d89ee4d3bec7215488d64241848b81051620800000000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24404d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81051620800000000488b5d08ff234c8b7424404d89ed4b8b5caefc6a016a014989e0ff15a6040000ff34244c8b7424604d8b66f849c1e40849c1ec074983cc014c8b6c24284d89ee4d3bec7215488d64243048b81051620800000000488b5d08ff234c8b6c24604d89f64b8b44b5fc4c8b6c24504d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424504d89ed4b8b5caefc6a016a014989e0ff1508040000415e488d6424084c8bac24800000004d8b5df849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64243048b81051620800000000488b5d08ff234c8ba424800000004d89ed4f8b5cacfc4c8b6424484d8b6424f849c1e40849c1ec074983cc014d89ed4d89ea4d3bec7215488d64243048b81051620800000000488b5d08ff234c8b6c24484d89d24f8b6495fc41f6c3010f85020100004d8b2b4983fc030f85b30000004c8b6424404d8b4c24f849c1e10849c1e9074983c9014d89d24d89d44d3bd17215488d64243048b81051620800000000488b5d08ff234c8b5424404d89e44f8b54a2fc41f6c20175264d8b224d3bec7502eb1a4d3bec7415488d64243048b85099650800000000488b5d08ff23eb424c8b6c24404d8b55f849c1e20849c1ea074983ca014d89e54d89ec4d3bea7215488d64243048b80057620800000000488b5d08ff234c8b6c24404d89e44f895ca5fceb404983fc017515488d64243048b8d099650800000000488b5d08ff234d8b24244d3bec7502eb1a4d3bec7415488d64243048b8289a650800000000488b5d08ff23eb004c8b6c24184d8b55f849c1e20849c1ea074983ca014c8b6424284d89e34d3be27215488d64243048b81051620800000000488b5d08ff234d89db4d89ed4f8b6c9dfc41f6c501756e4d8b65004d8b6d104c8b5424404d8b4af849c1e10849c1e9074983c9014d89db4d89da4d3bd97215488d64243048b81051620800000000488b5d08ff234c8b5c24404d89d24f8b5c93fc41f6c3017515488d64243048b8809a650800000000488b5d08ff234c8b1c24e9b50000004c8b6424184d8b5424f849c1e20849c1ea074983ca014c8b6c24284d89eb4d3bea7215488d64243048b80057620800000000488b5d08ff234d89e44d89db4d89dd4bc7449cfc010000004c8b6424404d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64243048b81051620800000000488b5d08ff234c8b6c24404d89e44f8b64a5fc4c8b6c24204c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c428c258004d3be3750949c7c403000000eb4e41f6c401754141f6c30175324d8b04244d8b542408498b3b4d8b4b084c3bc775144d89cb4d89d4483b65187306ff5558ca0078ebbd49c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc0375054d89f4eb124c8b6c243849c7450003000000e9d2feffff4d3bec750949c7c503000000eb4f41f6c501754241f6c40175334d8b4d004d8b5d084d8b04244d8b5424084d3bc875144d89d44d89dd483b65187306ff5558ca0070ebbc49c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd03758beb96f4000000000000|@6577,1,@17855,@12989,@12989,@13049,@12989,@12989,@12989,@12989|65,0,@625 133,0,@664 204,0,@628 268,0,@625 339,0,@625 875,0,@625 941,0,@625 1025,0,@625 1091,0,@625 1179,0,@625 1291,0,@664 1444,0,@625 1510,0,@625 1594,0,@625 1660,0,@625 1748,0,@625 1944,0,@6562 2048,0,@625 2114,0,@625 2198,0,@625 2264,0,@625 2355,0,@625 2425,0,@625 2515,0,@625 2570,0,@6563 2625,0,@664 2667,0,@6566 2704,0,@6568 2761,0,@625 2839,0,@625 2879,0,@6570 2944,0,@664 3016,0,@625 13049:D9,1216|483b65187306ff5558ca09074150415141526a016a016a014c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488b542458488b4c24504156415541544153415241514150575652514889da488d5c24584c8b8424800000004c8b4c24784c8b542470ff12488b0424ff742408ff7424186a016a014c8b4424684889e3ff1556040000ff3424ff7424106a016a014c8b842480000000488b4424304889e3ff152d040000ff3424ff7424104c8bb424e80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424e80000004c8bac24880000004f8b64aefcf6442448010f858f0000004c8b7424484d8b2e41f6c401752a4d8b34244d3bee7502eb1d4d3bee7418488da4248000000048b8589b650800000000488b5d08ff23eb554c8bac24e80000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24e80000004c8ba424880000004d89f64f8974a5fceb004c8bb424e00000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424e00000004c8bac24880000004b8b44aefc6a016a01488b5c24384989e0ff15ce020000415e488d6424084c8bac24e00000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24e00000004c8ba424880000004f8974a5fc4c8bb424d80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424d80000004c8bac24880000004b8b44aefc6a016a01488b5c24304989e0ff1509020000415e488d6424084c8bac24d80000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24d80000004c8ba424880000004f8974a5fc4c8bb424d00000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424d00000004c8bac24880000004b8b44aefc6a016a01488b5c24184989e0ff1544010000415e488d6424084c8bac24d00000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80057620800000000488b5d08ff234c8bac24d00000004c8ba424880000004f8974a5fc4c8bb424c80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81051620800000000488b5d08ff234c8bb424c80000004c8bac24880000004b8b44aefc6a016a01488b5c24104989e0ff157f000000415e488d6424104c8bac24c00000004d8b65f849c1e40849c1ec074983cc014c8bac24800000004d3bec7215488d64247848b80057620800000000488b5d08ff23488d6424784c8b6c24484c8b6424084f8974a5fc48c7c001000000c27000f400000000000000|@6578,1,@17856,@12989,@12989,@12989,@12989,@13051,@13050|257,0,@625 343,0,@6574 406,0,@664 493,0,@625 600,0,@664 682,0,@625 789,0,@664 871,0,@625 978,0,@664 1060,0,@625 1164,0,@664 13050:D3,392|483b65187306ff5558ca090150534150f644241001752f4c8b6c24104d89ee41ff75004d89f6498b46086a016a014889e34c8b442418e8c5ffffff415c415d4c8b742408eb2c488d642408415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c408c341f6c60175274d8b164d8b5e084c3b1424750949c7c603000000eb184d89de483b65187306ff5558ca0070ebd349c7c6010000004983fe03756f4983fd017523488d642410415e4c8b2c244d892e488d64240849c746080100000048c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c418c34983fc017520488d642410415d4d8965004c8b34244d897508488d64240848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3f40000|@6579,1,@17858|79,0,@1172 13051:D3,392|483b65187306ff5558ca090150534150f644241001752f4c8b6c24104d89ee41ff75004d89f6498b46086a016a014889e34c8b442418e8c5ffffff415c415d4c8b742408eb2c488d642408415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c0010000004883c408c341f6c60175274d8b164d8b5e084c3b1424750949c7c603000000eb184d89de483b65187306ff5558ca0070ebd349c7c6010000004983fe03756f4983fd017523488d642410415e4c8b2c244d892e488d64240849c746080100000048c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c418c34983fc017520488d642410415d4d8965004c8b34244d897508488d64240848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3f40000|@6579,1,@17857|79,0,@1172 13052:D4,208|483b65187306ff5558ca0903534150a8017578ff30488b40086a016a016a016a016a016a016a014889e34c8b442440e8ccffffff415e415d415c415b415a41594158498d5fc0483b5d107306ff5550ca007f4989df48c743f8070000004c8943304c894b284c8953204c895b184c8963104c896b084c8933584c8b4424084159488d642408ff255d000000488d642408415e49c7060100000049c746080100000049c74610010000004d894e1849c746200100000049c746280100000049c746300300000048c7c001000000c3f40000|@1573,1,@17860,@13053| 13053:D16,1760|488dbc2498feffff483b7d187306ff5560ca09035053415041514c8b7424104d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff76306a016a016a016a016a016a01488b8424800000004889e3ff15dd060000ff3424ff742410488b442420ff742428ff742438ff7424484c8bb424a80000004d8b264d89e54c8d1d080000004f8d5ca3fc41ffe3e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e93e010000909090e91b010000909090e937010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e900010000909090e901010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e98a000000909090e943000000909090e93b000000909090e97b000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904d89ee4983fe21750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004156ff15e90400004989c64156488b442410ff15d10400004989c64156488b442428ff15b90400004989c64156488b442428ff15a10400004989c641564c8b7424404d89f54983fe03750d4c8bb42498000000e9800000004d89ed4d89ee4983fd017529f6842498000000017518488da424d800000048b8309d650800000000488b5d08ff234c8b742448eb4b4d89f64d8b2ef68424980000000175364c8bb424980000004d8b364d3bf57502eb1d4d3bf57418488da424d800000048b8a89d650800000000488b5d08ff234c8b742448eb054c8b74244841564c8bac24880000004d89ee4983fd0375074c8b742448eb034d89f641564c8b7424304983fe03750a4c8b742428e9a60200004c8b74242041f6c6010f85ad0000004d8b164d8b6e084c8b9c24c80000004d8b63f84d89e149c1e40849c1ec074983cc014d3bd47218488da424e800000048b81051620800000000488b5d08ff234d89db4f8b6493fc4983c4027118488da424e800000048b8d006620800000000488b5d08ff234d89db49c1e10849c1e9074983c9014d3bd17218488da424e800000048b80057620800000000488b5d08ff234d89db4f896493fc4d89ee483b65187306ff5558ca0040e949ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24c00000004d896e084c8bac24e00000004d892e4156ff7424306a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15b10200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24d80000004989e0ff157a020000ff3424ff7424486a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15480200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24f00000004989e0ff1511020000ff3424ff7424606a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15df0100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24000100004989e0ff15a8010000ff3424ff7424786a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15760100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24180100004989e0ff153f010000415e488d6424084c8bac24400100004c8b6424684d8965004c8b6424484d8965084c8b6424284d8965104c8b6424784d8965184c8b6424084d8965204d8975284c8b7424704d89753048c7c0010000004881c458010000c341f6c60175654d8b1e4d8b6e084c8ba424c80000004d8b5424f849c1e20849c1ea074983ca014d3bda7218488da424e800000048b81051620800000000488b5d08ff234d89e44f8b649cfc4983fc0175114d89ee483b65187306ff5558ca0040eb9e49c7c601000000eb0749c7c6030000004983fe030f85defcffff488da424d0000000415d415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b66284d8965284d8b76304d89753048c7c0010000004883c408c3f4000000|@6586,1,@17861,@12989,@13055,@12989,@13056,@12989,@13057,@12989,@13058,@13059,@13060,@13061,@13054,@12991|727,0,@6581 797,0,@6584 939,0,@625 977,0,@105 1021,0,@664 1606,0,@625 13054:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17869| 13055:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17862| 13056:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17863| 13057:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17864| 13058:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@6540,1,@17865| 13059:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17866| 13060:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17867| 13061:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@17868| 13062:D4,1080|483b65187306ff5558ca09075341504151a8010f85080400004c8b30488b40084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e93b010000909090e97c010000909090e994010000909090e93f020000909090e913030000909090e97403000090909041ff7608498d5fe8483b5d107306ff5550ca00044989df48c743f80200000048c74308010000004c89134883fb0175074c8b6c2428eb0e488b442428ff15a40300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706090000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e4c8b2c244d8b65f849c1e40849c1ec074983cc014983fc017715488d64241848b80057620800000000488b5d08ff234d89ed4d897500488d64240848c7c0010000004883c410c208004d8b7608498d5fe8483b5d107306ff5550ca01444989df48c743f80200000048c74308010000004c893341594c8b6c241849b8a89b6208000000004c896c24184883c410e93dfeffff4d8b460841594c8b6c241848c7c3010000004c896c24184883c410e91dfeffff4d8b76084d8d6fe84c3b6d107306ff5550ca01444d89ef49c745f8020000004c8b6424104d8965084c8b6424084d8965004c8b24244d8b5c24f849c1e30849c1eb074983cb014d3bf37215488d64241848b80057620800000000488b5d08ff234d89e44d89e14f896cb4fc4d8d47e84c3b45107306ff5550ca01464d89c749c740f8020000004d89700849c7000b0000004d89c9488d6424084c8b6c241848c7c3010000004c896c24184883c410e96afdffff4d8b66084d8b6e104d8b76184d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004c8b4c24104d894b084c8b4c24084d890b4c8b04244d8b48f849c1e10849c1e9074983c9014d3be97215488d64241848b80057620800000000488b5d08ff234d89c04d89c14f895ca8fc498d5fe8483b5d107306ff5550ca01764989df48c743f80200000048c74308010000004c89234d8d47e04c3b45107306ff5550ca09664d89c749c740f8030000004d8968104d89700849c700030000004d89c9488d6424084c8b6c24184c896c24184883c410e98efcffff4d8b6e084d8b7610498d5fe8483b5d107306ff5550ca01644989df48c743f80200000048c74308010000004c892b4d8d47e84c3b45107306ff5550ca09444d89c749c740f8020000004d89700849c7000d00000041594c8b6c24184c896c24184883c410e925fcffff4d8b7608498d5fe8483b5d107306ff5550ca01444989df48c743f8020000004c8b6c24104c896b084c89334c8b4424084159488d6424104c8b6c24084c896c2408e9dffbffff488d64241848b8589e650800000000488b5d08ff23f400|@6590,1,@17870,@13063|338,0,@664 429,0,@1145 565,0,@664 750,0,@664 1064,0,@6587 13063:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17871| 13064:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17872| 13065:D6,688|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e541f6c4010f855a0200004d8b6d004983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3516020000750949c7c603000000eb2b4c3b35fc010000750949c7c603000000eb194c3b35e2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd389f6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b810a0650800000000c3f4000000000000|@6603,1,@17874,@435,@433,@427|26,0,@1044 63,0,@105 290,0,@2144 338,0,@1021 383,0,@1987 534,0,@866 579,0,@6592 661,0,@1044 672,0,@6599 13066:D6,648|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8a06508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@6613,1,@17875,@435,@433,@427|26,0,@1044 46,0,@105 96,0,@15183 279,0,@2144 327,0,@1021 372,0,@1987 523,0,@866 568,0,@6605 13067:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f8040000004c8970184c8b72104c8970104c8b72084c89700849be50e1ad09000000004c8930c3f400000000|@6679,1,@17878|63,0,@13068 13068:D12,3264|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8708c620800000000c34c8b304d89f44d8b364983fe010f8566020000488d6424084d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb806110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35410c0000750949c7c603000000eb2b4c3b35270c0000750949c7c603000000eb194c3b350d0c0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40a56508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8708c620800000000c34d89e54d8b24244983fc030f85df0400004d89ec4d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb8af620800000000e9660300004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7610498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb8af620800000000e9140200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049beb805110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf8af6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50576308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80576308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0576308000000004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20a66508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8708c620800000000c34d89ee4d8b6d004983fd050f8565020000488d6424084d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be680a110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3591040000750949c7c603000000eb2b4c3b3577040000750949c7c603000000eb194c3b355d040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10a76508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8708c620800000000c34c8b24244d8b642418488d642408498b5424084d8b76084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8a76508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@6678,1,@17877,@435,@433,@427,@435,@433,@427,@435,@433,@427|32,0,@1044 78,0,@105 128,0,@15199 311,0,@2144 359,0,@1021 404,0,@1987 555,0,@866 600,0,@6649 690,0,@1044 749,0,@105 783,0,@1308 812,0,@105 895,0,@1308 924,0,@105 1014,0,@105 1069,0,@15183 1114,0,@1311 1163,0,@866 1207,0,@2519 1252,0,@866 1296,0,@1315 1384,0,@866 1429,0,@2521 1473,0,@866 1518,0,@1315 1606,0,@866 1650,0,@2523 1699,0,@1318 1844,0,@866 1889,0,@6656 1979,0,@1044 2022,0,@105 2072,0,@15258 2255,0,@2144 2303,0,@1021 2348,0,@1987 2499,0,@866 2544,0,@6664 2634,0,@1044 2674,0,@105 2894,0,@2144 2942,0,@1021 2987,0,@1987 3138,0,@866 3183,0,@6671 13069:D4,80|483b65187305ff5558cd01488b0048bae85c62080000000048c7c303000000ff15430000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@122,1,@17876,@10649|16,0,@707 13070:D15,2608|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b204d89e54d8b24244983fc010f855a0200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35da090000750949c7c603000000eb2b4c3b35c0090000750949c7c603000000eb194c3b35a6090000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40a96508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8708c620800000000c34d89ee4d8b6d004983fd030f855a0200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3543070000750949c7c603000000eb2b4c3b3529070000750949c7c603000000eb194c3b350f070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18aa6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d89f44d8b364983fe050f855b0200004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35ac040000750949c7c603000000eb2b4c3b3592040000750949c7c603000000eb194c3b3578040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90aa6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc070f855a0200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3515020000750949c7c603000000eb2b4c3b35fb010000750949c7c603000000eb194c3b35e1010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08ab6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b880ab650800000000c3f40000000000|@6704,1,@17879,@435,@433,@427,@435,@433,@427,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 294,0,@2144 342,0,@1021 387,0,@1987 538,0,@866 583,0,@6681 668,0,@1044 706,0,@105 933,0,@2144 981,0,@1021 1026,0,@1987 1177,0,@866 1222,0,@6688 1307,0,@1044 1345,0,@105 1572,0,@2144 1620,0,@1021 1665,0,@1987 1816,0,@866 1861,0,@6692 1946,0,@1044 1984,0,@105 2211,0,@2144 2259,0,@1021 2304,0,@1987 2455,0,@866 2500,0,@6696 2582,0,@1044 2593,0,@6700 13071:D3,768|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdd8f5620800000000e96e0100004c8b7424084d8b364d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be880a110a00000000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38ac6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@6714,1,@17881|26,0,@1044 52,0,@105 86,0,@1756 123,0,@105 173,0,@15260 218,0,@105 268,0,@15182 313,0,@1985 361,0,@866 406,0,@1315 498,0,@1987 643,0,@866 688,0,@6707 13072:D5,352|483b65187305ff5558cd01488b18f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff153d01000048bae85c62080000000048c7c305000000ff151e0100004989c54d8b75004a8d0c75010000004883f901750f49be7026630800000000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1daa0000000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646083041c646097741c6460a78498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@122,1,@17880,@10649,@10599|53,0,@651 69,0,@707 113,0,@2121 322,0,@117 13073:D8,696|483b65187305ff5558cd014c8b304d8b264d89e54983fc050f8520010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff159902000048bae85c62080000000048c7c305000000ff157a0200004989c54d8b75004a8d0c75010000004883f901750f49be1014650800000000e9970000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dee010000776a4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646087841c646096d41c6460a6d498d7508498d7e0b48d1e9f3a4418066ffbfe94d01000048b8f807620800000000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff155f01000048bae85c62080000000048c7c305000000ff15400100004989c54d8b75004a8d0c75010000004883f901750f49be2814650800000000e9920000004989cc4983c4044c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbc00000077624d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646086641c6460970498d7508498d7e0a48d1e9f3a4418066ffbfeb2b48b8f807620800000000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15580000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000000000ffffffffffffff01ffffffffffffff01|@122,1,@17882,@12461,@10649,@10599,@10649,@10599|73,0,@651 89,0,@707 133,0,@5663 304,0,@117 371,0,@651 387,0,@707 431,0,@5664 594,0,@117 13074:D6,648|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8708c620800000000c34c8b304983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48af6508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@6736,1,@17883,@435,@433,@427|26,0,@1044 46,0,@105 96,0,@15183 279,0,@2144 327,0,@1021 372,0,@1987 523,0,@866 568,0,@6729 13075:D3,944|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c3ff304983ee0241567115488d64241048b8d006620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9200200004c8b7424084d8b364d89ed4983ed027115488d64241048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf8af6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18926308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be207b6508000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b06208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50b06508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@6745,1,@17884|26,0,@1044 52,0,@105 86,0,@1308 123,0,@105 173,0,@15183 218,0,@105 268,0,@15183 313,0,@1311 361,0,@866 406,0,@3008 450,0,@866 495,0,@1315 583,0,@866 627,0,@6407 676,0,@1318 821,0,@866 866,0,@6738 13076:D5,128|483b65187306ff5558ca0903415049c7c6010000004d8d57f04c3b55107306ff5550ca09424d89d749c742f80100000041c642ff404d89326a016a01ff355e00000054488304240841514989d948bb10b265080000000049b800b3650800000000ff1531000000415c415e415d4d8965004d89750848c7c001000000c3f40000|@6808,1,@17916,@13107,@6807|79,0,@6750 89,0,@6755 13077:D3,32|483b65187306ff5558ca090148b820b2650800000000488b5d08ff23f4000000|@6754,1,@17885|14,0,@6751 13078:D3,32|483b65187305ff5558cd0148b820b2650800000000488b5d08ff23f400000000|@6756,1,@17886|13,0,@6751 13079:D57,17472|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e95a020000909090e9c4040000909090e968060000909090e921080000909090e921110000909090e9d5170000909090e9a1190000909090e9d7190000909090e9971b0000909090e9e21d0000909090e98f200000909090e992200000909090e9f7220000909090e9552a0000909090e9f22f0000909090e9f1300000909090e989320000909090e925330000909090e940330000909090e9ae390000909090e9183c0000909090e9213d00009090904c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff15ae440000ff15a04400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58346308000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b70084d8b264d8b6e084d8b56104d8b5e184d8b76204c8d0d080000004f8d4c11ff41ffe1eb0ceb16eb20eb2aeb34eb3eeb4849b950bf640800000000eb4649b968bf640800000000eb3a49b980bf640800000000eb2e49b998bf640800000000eb2249b9b0bf640800000000eb1649b9c8bf640800000000eb0a49b9e0bf6408000000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020700000041524d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff152b420000ff151d4200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008488b4010ff15dd400000ff15cf4000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68c06408000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442408e87dfaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008ff7010488b4018ff151e3f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff15963e0000ff15883e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b6808ff7010ff70184c8b70204983fd01750c49bba0c0640800000000eb324983fd03750c49bbc0c0640800000000eb204d8b6d004983fd03750c49bbe0c0640800000000eb0a49bbf8c06408000000004d8b2b4e8d2c6d010000004983fd01750f49bc7018620800000000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d333b00000f874b0800004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e852f6ffff4989c64156f64424100175124c8b742410498b06e839f6ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15983b000048bae85c62080000000048c7c305000000ff15793b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b6c2420498b45004d89ed4d89ee41ff75084d89f641ff7610e859f3ffff4989c64156f64424100175124c8b742410498b06e840f3ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff158f38000048bae85c62080000000048c7c305000000ff15703800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442440e875f0ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc48c16408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c440c3488d64241048b8f807620800000000488b5d08ff234c8b7008498b0641ff760841ff761041ff761841ff7620e879eeffff4989c64156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15c433000048bae85c62080000000048c7c305000000ff15a53300004989c64d8b2e4e8d2c6d010000004983fd01750f49baa8b3650800000000e9ae0000004d89ec4983c40e4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df23100000f87ce0500004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d892249bca8b365080000000048c7c10f000000498d742408498d7a0848d1e9f3a44c89e9498d7608498d7a0f48d1e9f3a4418062ffbf4c8b7424084983fe03750c49bcc0b3650800000000eb0a49bcd8086208000000004d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05ea3000000f87b90400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442428ff159e3100004989c64156488b442428e807ecffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0b36508000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c745000100000049c7c6050000004e8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00204d89df49d1ee4d8973f841c643ff4149c743080000000049c7030700000041c643082941c643092041c6430a7b41c6430b4341c6430c4141c6430d5341c6430e45418063ffbf4d8b334e8d2475010000004983fc01750f49be6820620800000000e99b0000004d89e24983c2024c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0c45010000004c3b0daa2e00000f876c0200004d89c84e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983e9024bc7448efc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049d1ec43c604267d418066ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017504415deb12488b0424ff15bf2e00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10b46508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c420c3488d64243848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234c8b7008ff7010ff70184c89f0e8c7e7ffff4989c64156488b442410e8b8e7ffff4989c64156488b442410e8a9e7ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40b46508000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40b46508000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b46508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488b400848ba905d630800000000ff15692b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34c8b7008ff7010ff70184c89f0ff15242b0000ff15162b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88b46508000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442410e834e5ffff4989c54c8b7424084983fe01750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004c8b1c244d891e488d6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be40726208000000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c34c8b70084d8b2e4d89ec4983fd07753a48b8e8b4650800000000ff153f2900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d89e54983fc030f85a6000000498b460848bae85c62080000000048c7c303000000ff15e52800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc00b56508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38b56508000000004c8930ff157c2800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34983fd010f85a6000000498b460848bae85c62080000000048c7c303000000ff15252800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc00b56508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50b56508000000004c8930ff15bc2700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3498b460848bae85c62080000000048c7c303000000ff156f2700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc00b56508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be68b56508000000004c8930ff15062700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008488b401048bae85c62080000000048c7c303000000ff15b62600004989c64d8b2e4e8d2c6d010000004983fd01750f49bc80b5650800000000e9b30000004d89eb4983c3124c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15532500000f87290200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb80b565080000000048c7c113000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bdd8c4640800000000e9aa0000004d89f34983c3044c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15772400000f87400100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c6104d89f449d1ec43c64425002c49d1ee43c644350120418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408e8bbdfffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd88a6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488d64240848b8f807620800000000488b5d08ff23488d64240848b8f807620800000000488b5d08ff2348b8f062630800000000c34c8b7008ff7010ff70184c89f0e8dadeffff4989c6415648bae85c620800000000488b44240848c7c303000000ff15d92300004989c64d8b2e4e8d246d010000004983fc01750f49bdb0c1640800000000e9ae0000004d89e34983c3144c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156e2200000f87cc0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0c164080000000048c7c115000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1248d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442418e8b6ddffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0c16408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c3488d64241848b8f807620800000000488b5d08ff234c8b680841ff75004d8b5d0841ff751041ff75184d8b752041ff75284d8b6d304d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240700000041544983fd01750c49bd481a630800000000eb0a49bd301a6308000000004d8b65004a8d0c65010000004883f901750f49bca0b5650800000000e9a30000004989cb4983c3064c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15c71f00000f87930600004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084341c64424094c41c644240a3d498d7508498d7c240b48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415548bae85c6208000000004c89f048c7c303000000ff15292000004989c64d8b2e4e8d246d010000004983fc01750f49bdb8b5650800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b61e00000f87750500004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb8b565080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442420ff151d1f00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0b56508000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983fe01750c49bdb8b4650800000000eb0a49bdd0b46508000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00b66508000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004156488b442438ff15e61d000049c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000700000049be30b665080000000048c7c10d000000498d7608498d7d0848d1e9f3a441c6450e28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff15441d0000ff15361d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442448e8c5d7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc48b66508000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98b66508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c420c3488d64243048b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234c8b68084c8b70104d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd10c3640800000000e98a00000049bd28c3640800000000eb7e49bd40c3640800000000eb7249bd58c3640800000000eb6649bd70c3640800000000eb5a49bd88c3640800000000eb4e4d8b6d084983fd01750c49bda0c3640800000000eb0a49bdb8c3640800000000eb2c4d8b6d084983fd01750c49bdd8c3640800000000eb0a49bdf0c3640800000000eb0a49bd10c46408000000004d8b65004a8d0c65010000004883f901750f49bc30c4640800000000e9a90000004989cb4983c3084c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15bc1700000f87420400004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084c41c64424096f41c644240a6141c644240b64498d7508498d7c240c48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e81ad3ffff4989c64156f64424100175124c8b742410498b06e801d3ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff159817000048bae85c62080000000048c7c305000000ff15791700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bce8bc6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28c16408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b96208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c348b8f807620800000000488b5d08ff23488b400849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000500000041c645084c41c645094f41c6450a4f41c6450b5041c6450c28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff15c0130000ff15b21300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b7008ff701049c7c5050000004e8d24ad0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00404d89e749d1ed4d896c24f841c64424ff4149c74424080000000049c704240600000049bdc8b665080000000048c7c10b000000498d7508498d7c240848d1e9f3a441c644240d2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554c89f0ff15911200004989c64156488b442410e8b2cdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017504415deb12488b0424ff150b1200004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c408c3488b4008e8c4ccffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48c46408000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3ff70084c8b7010ff701841ff364d8b2e49c7c40100000049c7c301000000e9b50c00004c8b6808ff70104c8b70184d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd10c3640800000000e98a00000049bd28c3640800000000eb7e49bd40c3640800000000eb7249bd58c3640800000000eb6649bd70c3640800000000eb5a49bd88c3640800000000eb4e4d8b6d084983fd01750c49bda0c3640800000000eb0a49bdb8c3640800000000eb2c4d8b6d084983fd01750c49bdd8c3640800000000eb0a49bdf0c3640800000000eb0a49bd10c46408000000004d8b65004e8d1c65010000004983fb01750f49bc78c4640800000000e9b30000004d89da4983c20a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d9e0e00000f870b0500004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba78c464080000000048c7c10b000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c240d48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e8fac9ffff4989c64156f64424100175124c8b742410498b06e8e1c9ffff4989c6eb0a49be10c16408000000004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f854620800000000488b5c2410ff15480e000048bae85c62080000000048c7c305000000ff15290e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8bc6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28c16408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68b96208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442420e816c7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90c46408000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3488d64240848b8f807620800000000488b5d08ff23488b5808ff7010ff7018f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f854620800000000ff15010a000048bae85c62080000000048c7c305000000ff15e20900004989c64156f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f854620800000000488b5c2408ff158d09000048bae85c62080000000048c7c305000000ff156e0900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc0c46408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8c46408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0c46408000000004c8930ff15ad0800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410e8e8c3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c3488b400849c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000a00000049bee0b665080000000048c7c113000000498d7608498d7d0848d1e9f3a441c6451128418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff1508070000ff15fa0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b70084c8b68104c8d25080000004f8d64acfc41ffe4e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bc787a630800000000e9a000000049bc587b630800000000e99100000049bc387c630800000000e98200000049bc187d630800000000eb7649bcf87d630800000000eb6a49bcd87e630800000000eb5e49bcb87f630800000000eb5249bc9880630800000000eb4649bc7881630800000000eb3a49bc5882630800000000eb2e49bc3883630800000000eb2249bc1084630800000000eb1649bce884630800000000eb0a49bcc8856308000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15fa040000ff15ec0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d3bdd0f82830200004c89e048bae85c62080000000048c7c303000000ff15960300004989c6415648bae85c620800000000488b44240848c7c303000000ff156d0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc38c56408000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18196208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50c56408000000004c8930ff15ac0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408e81fbeffff4989c64156488b442418e810beffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc08f6208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9cafcfffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6793,1,@17888,@10502,@10649,@10649,@13081,@13082,@13083,@13084,@10502,@10649,@10599,@10649,@10599,@10649,@10599,@13085,@13086,@13090,@13091,@10649,@10599,@13092,@13093,@13094,@13095,@10649,@10649,@10649,@10502,@10649,@10502,@10649,@10502,@10649,@10502,@13096,@13097,@11175,@13098,@13099,@10649,@10599,@10649,@10599,@10649,@10599,@13100,@13101,@12132,@13102,@13103,@13104,@13105,@13106,@13080|380,0,@1022 525,0,@866 570,0,@2235 698,0,@5105 710,0,@5106 722,0,@5107 734,0,@5108 746,0,@5109 758,0,@5110 770,0,@5111 1007,0,@1022 1152,0,@866 1325,0,@5116 1443,0,@1070 1491,0,@1021 1536,0,@1022 1580,0,@1021 1884,0,@1022 2029,0,@866 2169,0,@5118 2187,0,@5119 2209,0,@5120 2221,0,@5121 2248,0,@195 2510,0,@5122 2573,0,@651 2594,0,@707 2685,0,@1412 2734,0,@866 2778,0,@1024 2823,0,@1021 2911,0,@866 2955,0,@1024 3000,0,@1021 3088,0,@5123 3132,0,@1382 3271,0,@5122 3334,0,@651 3355,0,@707 3446,0,@1412 3495,0,@866 3539,0,@1024 3584,0,@1021 3672,0,@866 3716,0,@1024 3761,0,@1021 3849,0,@5123 3893,0,@1382 4011,0,@5124 4059,0,@1024 4104,0,@866 4192,0,@1024 4236,0,@866 4320,0,@866 4445,0,@117 4545,0,@651 4566,0,@707 4609,0,@6758 4746,0,@6758 4809,0,@6759 4821,0,@123 5187,0,@866 5232,0,@6760 5433,0,@280 5715,0,@866 5794,0,@866 5866,0,@866 5954,0,@866 6042,0,@6762 6127,0,@117 6148,0,@117 6169,0,@117 6263,0,@1070 6312,0,@1021 6356,0,@6764 6444,0,@1021 6489,0,@6764 6577,0,@6765 6657,0,@2573 6774,0,@6767 6876,0,@6769 6888,0,@6770 6976,0,@866 7056,0,@866 7187,0,@6771 7262,0,@707 7315,0,@6772 7363,0,@6774 7438,0,@707 7491,0,@6772 7539,0,@6775 7604,0,@707 7657,0,@6772 7705,0,@6776 7773,0,@707 7816,0,@6777 7956,0,@6777 8028,0,@5160 8293,0,@1031 8422,0,@117 8443,0,@117 8459,0,@2618 8493,0,@707 8541,0,@5128 8679,0,@5128 8810,0,@1031 8858,0,@866 8990,0,@5129 9075,0,@117 9172,0,@2014 9184,0,@2013 9212,0,@6778 9431,0,@707 9477,0,@6779 9615,0,@6779 9751,0,@6780 9840,0,@6769 9852,0,@6770 9931,0,@6782 10088,0,@6784 10331,0,@6785 10379,0,@866 10511,0,@866 10599,0,@866 10730,0,@866 10818,0,@866 10863,0,@6788 10948,0,@117 10969,0,@117 11084,0,@5142 11099,0,@5143 11111,0,@5144 11123,0,@5145 11135,0,@5146 11147,0,@5147 11169,0,@5148 11181,0,@5149 11203,0,@5150 11215,0,@5151 11227,0,@5152 11255,0,@5153 11526,0,@5122 11589,0,@651 11610,0,@707 11702,0,@1412 11750,0,@866 11795,0,@1024 11839,0,@1021 11927,0,@866 11972,0,@1024 12016,0,@1021 12104,0,@5123 12149,0,@1382 12294,0,@866 12414,0,@117 12772,0,@6790 12910,0,@1070 12958,0,@866 13148,0,@1070 13197,0,@5154 13410,0,@5142 13425,0,@5143 13437,0,@5144 13449,0,@5145 13461,0,@5146 13473,0,@5147 13495,0,@5148 13507,0,@5149 13529,0,@5150 13541,0,@5151 13553,0,@5152 13581,0,@5156 13721,0,@5156 13862,0,@5122 13925,0,@651 13946,0,@707 14037,0,@1412 14086,0,@866 14130,0,@1024 14175,0,@1021 14263,0,@866 14307,0,@1024 14352,0,@1021 14440,0,@5123 14484,0,@1382 14644,0,@866 14689,0,@5157 14733,0,@866 14821,0,@866 14946,0,@117 15009,0,@651 15025,0,@707 15104,0,@651 15125,0,@707 15178,0,@5159 15226,0,@5160 15314,0,@5161 15416,0,@1070 15464,0,@866 15660,0,@6791 15996,0,@2817 16011,0,@2824 16026,0,@2831 16041,0,@2838 16053,0,@2845 16065,0,@2852 16077,0,@2859 16089,0,@2866 16101,0,@2873 16113,0,@2880 16125,0,@2887 16137,0,@2894 16149,0,@2901 16161,0,@2908 16296,0,@1022 16441,0,@866 16573,0,@707 16601,0,@707 16659,0,@5164 16707,0,@202 16795,0,@5165 16912,0,@1070 16961,0,@866 17005,0,@1024 17050,0,@1021 17344,0,@105 13080:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17915|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13081:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17889|75,0,@1070 13082:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17890|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13083:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17891|75,0,@1070 13084:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17892|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13085:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17893| 13086:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc0c56408000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@6794,1,@17894,@13087,@13087|132,0,@5168 258,0,@866 13087:D10,1008|483b65187305ff5558cd014989c64d8b2e4d89ec4983fd010f851d010000498b460841ff761048bae85c62080000000048c7c303000000ff15fb0300004989c6415648bae85c620800000000488b44240848c7c303000000ff15d20300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be681a6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be80b76508000000004c8930ff15170300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d89e54983fc057510498b460848ba00b7650800000000ff224983fd070f8511010000498b460849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000700000049bea0b765080000000048c7c10d000000498d7608498d7d0848d1e9f3a441c6450e28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff1524020000ff15160200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3498b460841ff761048bae85c62080000000048c7c303000000ff15820100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb8b76508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b76508000000004c8930ff15190100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba00b7650800000000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@6803,1,@17895,@10502,@10649,@13089,@13088,@10502,@10649,@10649|40,0,@707 68,0,@707 168,0,@216 256,0,@6795 330,0,@6792 424,0,@6796 633,0,@707 686,0,@6797 734,0,@6798 796,0,@6792 885,0,@866 13088:D7,1136|483b65187305ff5558cd01a8010f85520400004c8b30ff70084c8b2c244983fd010f85cc010000488d642408498b0641ff760848bae85c62080000000048c7c303000000ff15560400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb8b76508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b76508000000004c8930ff15ed0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba00b7650800000000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700848c7001b000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848bae85c62080000000048c7c303000000ff157f0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb8b76508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b76508000000004c8930ff15160200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba00b7650800000000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700848c7001b000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce8b76508000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e8f6fbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17897,@10502,@10649,@10502,@10649|53,0,@707 106,0,@6797 154,0,@6798 216,0,@6792 343,0,@866 508,0,@707 561,0,@6797 609,0,@6798 671,0,@6792 798,0,@866 944,0,@6799 1070,0,@866 13089:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17896|75,0,@1070 13090:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17898|75,0,@1070 13091:D3,792|483b65187305ff5558cd01a8010f85f60200004c8b30ff70084c8b2c244983fd010f851e010000488d642408498b0641ff760848ba00b7650800000000ff124989c64c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848ba00b7650800000000ff124989c64c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e852fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@6794,1,@17899|53,0,@6792 83,0,@6769 95,0,@6770 177,0,@866 334,0,@6792 364,0,@6769 376,0,@6770 458,0,@866 596,0,@1114 722,0,@866 13092:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17900|75,0,@1070 13093:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17901|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13094:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17902| 13095:D3,240|483b65187305ff5558cd01a8010f85ce0000004c8b30488b40084883f80175434983fe01750c49beb8b4650800000000eb0a49bed0b4650800000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe01750c49beb8b4650800000000eb0a49bed0b46508000000004156e87affffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@6804,1,@17903|40,0,@6769 52,0,@6770 107,0,@6769 119,0,@6770 170,0,@866 13096:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17904|75,0,@1070 13097:D3,792|483b65187305ff5558cd01a8010f85f60200004c8b30ff70084c8b2c244983fd010f851e010000488d642408498b0641ff760848ba00b7650800000000ff124989c64c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848ba00b7650800000000ff124989c64c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e852fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@6794,1,@17905|53,0,@6792 83,0,@6769 95,0,@6770 177,0,@866 334,0,@6792 364,0,@6769 376,0,@6770 458,0,@866 596,0,@1114 722,0,@866 13098:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17906| 13099:D3,760|483b65187305ff5558cd01a8010f85dc0200004c8b30ff70084c8b2c244983fd010f8511010000488d6424084983fe01750f49bec8b8650800000000e9d0000000498b0648ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90b56208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe01750f49bec8b8650800000000e9d0000000498b0648ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90b56208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e86cfdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@6794,1,@17907|52,0,@6805 70,0,@6792 155,0,@866 199,0,@1353 320,0,@6805 338,0,@6792 423,0,@866 467,0,@1353 570,0,@1114 696,0,@866 13100:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17908|75,0,@1070 13101:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17909|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13102:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17910|75,0,@1070 13103:D7,1520|483b65187305ff5558cd01a8010f85d00500004c8b28ff70084c8b34244983fe010f858b020000488d6424084d8b750041ff7508498b0641ff760848bae85c62080000000048c7c303000000ff15ce0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb8b76508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b76508000000004c8930ff15650500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba00b7650800000000488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8b750041ff7508498b0641ff760848bae85c62080000000048c7c303000000ff15380300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb8b76508000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0b76508000000004c8930ff15cf0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba00b7650800000000488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004c8b2c244983fd01488d642408750c49bcb8b4650800000000eb0a49bcd0b46508000000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd40726208000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e878faffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@6794,1,@17911,@10502,@10649,@10502,@10649|61,0,@707 114,0,@6797 162,0,@6798 224,0,@6792 314,0,@866 448,0,@6769 460,0,@6770 542,0,@866 707,0,@707 760,0,@6797 808,0,@6798 870,0,@6792 960,0,@866 1094,0,@6769 1106,0,@6770 1188,0,@866 1326,0,@1114 1452,0,@866 13104:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17912|75,0,@1070 13105:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba00b7650800000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba00b7650800000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc88976208000000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@6794,1,@17913|48,0,@6792 102,0,@6792 144,0,@1114 270,0,@866 13106:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c08f620800000000c3f4000000|@1032,1,@17914|75,0,@1070 13107:D13,1096|483b65187306ff5558ca09074989c45341504983f9017d0a488d642410e9f70300004c3b0d170400000f8de50300004d89cd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02164d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564983f9017d0a488d642418e97f0300004c3b0dac0300000f8d6d0300004d89cd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02164d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564983f9017d0a488d642420e9070300004c3b0d410300000f8df50200004c89c94e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02144d89f749d1e94d894ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8b34244d89f54983fe0d756941ff74241048ba58b96508000000004c8b7424484c8b6c2438ff742428ff7424284156ff353a03000041554c89d34c89e04c8b4424404c8b4c24384c8b542430ff15150300004989c64c8b6c24404d8975004c8b34244d897508488d64243048c7c001000000c218004d89ee4983fd1f0f858300000041ff74241048ba58b96508000000004c8b7424484c8b6c2438ff742428ff7424284156ff35b402000041554c89d34c89e04c8b4424404c8b4c24384c8b542430ff158f0200004989c641564c8b442440488b442408488b5c2410ff156d0200004989c64c8b6c24484c8b24244d896500488d6424384d89750848c7c001000000c218004983fe190f853f0100004d8b6424086a016a016a016a01498b0424498b5c24084d8b4424104d8b4c2418498b7c24204d8b7424284d8b6c24304d8b6424384c8b5c24604c8b542450415641554154544883042418ff742460ff7424604153ff742468ff742460ff35d601000041524989faff15c3010000488b0424488b5c2408ff7424184c8b7424684156ff742440ff74244049c7c0030000004c8b4c24604c8b542458ff15880100004989c4f6042401740e488d64245049c7c601000000eb714c8b7424584d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b1c244d895d10488d64240849bb281b6208000000004d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892e4883c4484c8b6c24104d8965004d89750848c7c001000000c2180048ba58b96508000000004c8b7424404c8b6c2430ff742420ff7424204156ff35bd00000041554c89d34c89e04c8b4424384c8b4c24304c8b542428ff15980000004989c5488d6424284c8b7424104d892e49c746080100000048c7c001000000c21800488d64242048b8d055620800000000488b5d08ff23488d64241848b8d055620800000000488b5d08ff23488d64241048b8d055620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@6904,1,@17963,@13108,@6903,@13117,@13111,@6903,@13154,@13108,@6903,@13108,@6903|332,0,@6809 450,0,@6809 822,0,@224 905,0,@6809 1009,0,@657 1030,0,@657 1051,0,@657 13108:D19,7960|483b65187306ff5558ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9c6010000909090e9d4050000909090e9c3060000909090e996070000909090e9680a0000909090e9c70a0000909090e9f90a0000909090e9b3100000909090e92d120000909090e937120000909090e9ef130000909090e96b140000909090e927150000909090e961160000909090e9ce160000909090e988170000909090e9f6170000909090e9ca180000909090e95f1a0000909090e9eb1a0000909090e9581b0000909090ff7008ff7010488b4018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438e8dffeffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e894feffff4989c64156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e849feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244848c70001000000c228004c8b7008498b0641ff760841ff761841ff76204d8b76104d8b2e4983fd010f85a901000041ff7608488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e89efdffff4989c64156488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b442448488b5c24684c8b4424604c8b4c24584c8b542450e853fdffff4989c64156488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458e805fdffff4989c64156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442448488b5c24784c8b4424704c8b4c24684c8b542460e8b4fcffff4989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642450498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c2280041ff7608488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e8f5fbffff4989c64156488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8aafbffff4989c64156488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458e85cfbffff4989c64156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442448488b5c24784c8b4424704c8b4c24684c8b542460e80bfbffff4989c64d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049c74310030000004c8b6c24184d89ec4d896b0849c703130000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184c8b5c24084d895d104c8b5c24104d895d0849c74500070000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049c74310030000004d89e44d89630849c703130000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849bbf8e16408000000004d895c24104c8b1c244d895c2408488d64246049c7042407000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c7000d000000c22800ff7008ff7010488b0424488b5c24284c8b4424204c8b4c24184c8b542410ff15751900004989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e882f9ffff4989c641564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b542450ff742428ff74242841564155415441534152488b442448488b5c24404c8b4424784c8b4c24704c8b542468ff15d31800004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64244848c70005000000c228004c8b4808ff7010ff7018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524c89c8488b5c24504c8b4424484c8b4c24404c8b542438e8acf8ffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e861f8ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244048c70007000000c22800ff7008ff7010ff70184c8b7020498b0641ff760841ff7610488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b5c24684c8b4424604c8b4c24584c8b542450e8c6f7ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb6c4d89f6498b06488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b5c24704c8b4424684c8b4c24604c8b542458e860f7ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d64241041564c8b6c2410498b45004d89ed4d89ee41ff75084d89f641ff7610488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b5c24784c8b4424704c8b4c24684c8b542460e8a7f6ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb754d89f6498b06488b5424604c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b54247041564155415441534152488b9c24800000004c8b4424784c8b4c24704c8b542468e838f6ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d6424104156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442450488b5c24784c8b4424704c8b4c24684c8b542460e894f5ffff4989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24104c8968204c8b2c244c896818488d6424084c8970104c8b7424284c89700848c700090000004883c458c228004c8b4808488b58104c8b40184c8b742420498b56084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff742408ff742408415641554154415341524c89c84c8b4c24504c8b542448ff12488d6424284c8b34244c897424284883c428ff2576140000488d6424284c8b70084c8b6810498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000f000000c22800ff7008ff7010ff70184c8b7424084d8b2e4d89ec4983fd190f855c0100004d89f641ff76084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b542450ff74242041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458ff15c91300004989c641566a016a016a016a014c8b642428498b04244d89e4498b5c24084d89e4498b7424104d89e4498b5424184d89e4498b4c24204d89e44d8b7424284d89e44d8b6c24304d89e44d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418415341524151ffb42490000000ffb424880000004150574989ca4989d14989f0ff151c130000585b4158488d6424084c8b4c24784c8b5424704c8b7424684156ff742440ff742440ff15ec1200004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8970104c8b34244c897008488d64245048c70011000000c228004d89f64d89e54983fc0d751a4d89f54d89ee41ff75084d89f641ff76104c8b3424e9ca1000004d89f64983fd110f85420300004d89f641ff76084c8b34244d8b264d89e54983fc070f85c7000000488d6424084c8b4424684c8b4c24604c8b5424584c8b7424504c8b6c2448ff742428ff742428ff742448ff742448ff7424384156415548c7c001000000488b5c2448ff150c1200004989c64156488b54246848c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70613000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64241048c700110000004883c438c228004d89f64d89ec4983fd0375284d89f6498b46086a016a01488b94248000000048c7c3010000004989e0ff12488d6424084158eb654d89f64d89e54983fc07750949c7c001000000eb504d89f64983fd01750949c7c001000000eb3e4d89f64d8b6e084c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64244848b81051620800000000488b5d08ff234d89f64f8b44aefc4c8b4c24704c8b5424684c8b7424604c8b6c24584c8b6424504156ff742438ff74243041554154ff742450ff742470ff74247048c7c001000000488b5c2458ff15a71000004989c641564c8b7424084d8b2e4d89ec4983fd03752b4d89f6498b46086a016a01488b94248800000048c7c3010000004989e0ff12415d488d642408e9d80000004d89f64d89e54983fc077516488b54247048c7c001000000ff124989c5e9b60000004d89f64983fd0175484d89f641ff7608488b542470488b042448c7c301000000ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450001000000eb654d89f64d8b6e084c8b7424304d8b66f849c1e40849c1ec074983cc014d3bec7215488d64245048b81051620800000000488b5d08ff234d89f64f8b74aefc4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70613000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8970104c8b34244c897008488d64240848c700110000004883c448c228004c8b7424684c8b6c24604c8b6424584c8b5c24504c8b542448ff74241841564155415441534152488b442440488b5c24684c8b4424604c8b4c24584c8b542450ff15d70e00004989c64156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e824efffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244848c70011000000c22800488d6424084c8b70084d8b2e4d89ec4983fd03752a488d642420498b46086a016a01488b54243848c7c3030000004989e0ff12415e488d642408e91a0100004d89e54983fc07751b488d642420488b54242048c7c003000000ff124989c6e9f60000004983fd01754c488d64242041ff7608488b542420488b042448c7c303000000ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a40000004d8b6e084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b80057620800000000488b5d08ff234d89f64bc744aefc030000004c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b81051620800000000488b5d08ff234d89f64f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004883c418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70013000000c22800488d64242848b85853650800000000c22800ff70084c8b48104c8b68184c8b7424204d89f441ff364d89e44d8b34244983c6027115488d64243848b8d006620800000000488b5d08ff234d89e44c89e34d8934244c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64243848b80057620800000000488b5d08ff234d89f64d89f04bc744aefc010000004c8b6424184d8b7424f849c1e60849c1ee074983ce014d3bee7215488d64243848b80057620800000000488b5d08ff234c8b34244d89e44c89e74f8974acfc4c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64243848b80057620800000000488b5d08ff234d89f64c89f64bc744aefc01000000488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524989f24c89c84989f9e81becffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8d0ebffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424404c89700848c70019000000c228004c8b4808ff7010488b5424284c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524c89c8488b5c24484c8b4424404c8b4c24384c8b542430e843ebffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424304c89700848c70015000000c228004c8b60086a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450415641554154544883042418415341524151ff742468ff7424604150574989ca4989d14989f0ff15f2090000585b488d6424184c8b4c24484c8b5424404c8b6c24384c8b642408415b488d64240849c7c0030000004c895c24284c896424304c896c24384c8b7424104c897424204883c420ff259e090000ff70084c8b7010498b0641ff760841ff7610488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b5c24584c8b4424504c8b4c24484c8b542440e8f3e9ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb694d89f6498b06488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e890e9ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d642410498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c89700848c7001d0000004883c438c22800488b40084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff342441564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438ff15100800004989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001f000000c228004c8b70084c8b60104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450005000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054c89f0eb094c89f0ff156e0700004c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff74242041564155415441534152488b5c24484c8b4424404c8b4c24384c8b542430ff15250700004989c6488d6424286a016a0149c7c501000000e97c040000488b4008488b5424204c8b7424504c8b6c24484c8b6424404c8b5c24384c8b54243041564155415441534152488b5c24404c8b4424384c8b4c24304c8b542428e888e7ffff4989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70023000000c22800ff7008ff7010488b4018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438e80ce7ffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8c1e6ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424384c89700848c70025000000c22800ff7008ff70104c8b7018498b0641ff760841ff7610488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e825e6ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb694d89f6498b06488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b5c24684c8b4424604c8b4c24584c8b542450e8c2e5ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d6424104156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e824e5ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b7424104c89700848c700270000004883c440c22800ff70084c8b4810ff7018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524c89c8488b5c24504c8b4424484c8b4c24404c8b542438e890e4ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64243048c70029000000c22800488b40084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff342441564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438ff153e0300004989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7002b000000c228004c8b4808ff7010488b5424284c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524c89c8488b5c24484c8b4424404c8b4c24384c8b542430e88ae3ffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424304c89700848c7002d000000c2280041f6c60175714d8b164d8b66084983fc01752e4d8b324983fe0575104d8b72084d89ec49c7c501000000eb60488d64241048b888b9650800000000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060eb89488d64241048b820ba650800000000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb4c892c244c89742408415e415d4983fe0175064c89e8c22800498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70021000000c2280041f6c60175464d8b264d8b6e084d8b1c244c8b5424584d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb449c7c60100000041f6c601752b4d8b364d8b2e4c8b6424584d3bec75064d8b4610eb1c488d64245048b87850620800000000488b5d08ff2349c7c0010000004c8b4c24784c8b5424704c8b7424684c8b6c24604c8b6424584156ff742440ff74243841554154ff742458ff742478ff74247848c7c001000000488b5c2460ff159a0000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424084c8b24244d896508488d64240849c745000f000000498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b24244c896018488d6424084c8968104c89700848c700110000004883c438c22800f4000000|@6817,1,@17917,@13110,@13120,@13121,@13133,@13134,@13117,@13111,@13135,@13136,@13137,@13117,@13111,@13138,@13139,@13148,@13109|1467,0,@5357 3694,0,@625 4005,0,@625 4600,0,@664 4658,0,@625 4775,0,@6173 4828,0,@105 4885,0,@664 4948,0,@664 5010,0,@664 7394,0,@6811 7469,0,@6814 7740,0,@621 13109:D3,288|483b65187306ff5558ca0907a8010f85fe0000004c8b30488b40084d8b364d8b7608ff334c8b2b4983c5027115488d64240848b8d006620800000000488b5d08ff234c892b4d8b68f849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234bc744b0fc010000004d8b69f849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234c8b2c244f896cb1fc4d8b6af849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234bc744b2fc01000000e81dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17957|52,0,@105 97,0,@664 148,0,@664 199,0,@664 13110:D5,1456|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c240004c8b33ff7308498b064c8b204d89e54983fc1975124c8b600841ff76084c8b742420e9950300004983fd1175124c8b680841ff76084c8b742420e91101000041ff7608488b542440488b5c24384c8b4424684c8b4c24484c8b5424604c8b7424704c8b6c24584c8b642450ff742418ff742418415641554154ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e8bdfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b66084c3b5c2428750949c7c603000000eb184d89e6483b65187306ff5558ca0060ebd249c7c6010000004983f6024d8b65004d89e34983fc037521498b45086a016a01488b5424284c89f34989e0ff12415e488d642408e90c0100004d89dc4983fb077512488b5424104c89f0ff124989c6e9f10000004983fc01754341ff7508488b5424784c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a80000004d8b6d084983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80057620800000000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424484d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81051620800000000488b5d08ff234c8b7424484f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e851fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b6e084c3b5c2428750949c7c603000000eb184d89ee483b65187306ff5558ca0050ebd249c7c6010000004983f60241566a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418ff742460ff7424604153415241514150574989ca4989d14989f0ff1531010000585b488d6424104c8b7424784c8b6c24704c8b6424504156415541544c8b4424184c8b4c24384c8b542430ff15f80000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e88bfaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c24000f40000000000|@6837,1,@17923,@13117,@13111|229,0,@105 622,0,@664 685,0,@625 849,0,@105 1303,0,@105 13111:D4,1056|483b65187306ff5558ca09074989c44c89cf53415249c7c5010000004d8d77f04c3b75107306ff5550ca80304d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca80304d89f749c746f80100000041c646ff404d892e49c7c3010000004d8d6ff04c3b6d107306ff5550ca80584d89ef49c745f80100000041c645ff404d895d0041554c8b6c24584c8b5c24504c8b5424484c8b4c24384c8b442440498d5fb0483b5d107306ff5550ca807f4989df48c743f80900000048897b404c8943384c894b304c8953284c895b204c896b184c8973104c8b7424084c89730849be80aaae09000000004c89334d8d47e84c3b45107306ff5550ca08104d89c749c740f8020000004c8b34244d89700849be60aeae09000000004d893049c7c6010000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d89750049be50bc6508000000004d89750049c7c5010000004c8b74241041f6c60175364d8b56084d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0871ebc44983fd017d0a488d642420e9050100004c3b2d520200000f8df30000004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a114d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c005000000f348ab415649c7c5010000004d8d77f04c3b75107306ff5550ca08314d89f749c746f80100000041c646ff404d892e41566a016a01488b5424504c8b8c24900000004d8d77e84c3b75107306ff5550ca0c134d89f749c746f8020000004c8b6c24184d896e0849bd60afae09000000004d892e4c8b6c2448415654488304240841554c89e04c8b542428ff12ff34244c8b74243041ff364c8b7424284d8b6ef849c1e50849c1ed074983cd0149c7c601000000eb15488d64242048b8d055620800000000488b5d08ff234983fd010f85cd0000004156488b442448ff154d0100004989c54c8b7424284d8b264c8b9c24a00000004d8d77c04c3b75107306ff5550ca00384d89f749c746f80700000049c74630010000004d895e284d8966204d896e1849c74610010000004c8b6c24504d896e084c8b6c24104d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241b0000004c8b7424384d8b364c8bac24980000004d8965004c8b6424084d8965084d8975104c8b34244d897518488d64241848c7c0010000004883c440c258004d89eb4983eb024d89ea4983ea024d89e94983e9024c8b6424284f8b648cfc4983fc0175274d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d891424eb034d89f44d89dd4d89e6483b65187306ff5558ca0060e9c3fefffff4000000000000ffffffffffffff01|@6839,1,@17926,@13119|243,0,@13112 291,0,@13114 347,0,@6821 397,0,@105 626,0,@13116 710,0,@657 13112:D4,520|483b65187306ff5558ca0d015241504c8b7424084d8b764041f6c6010f85ce0100004d8b264d8b6e084883f8010f85880100004d89e641564c8b34244d8b2e4d89ec4983fd0375254d89f6498b46086a016a014c8b742420498b56184989e0ff12488d642408415ee9dc0000004d89f64d89e54983fc07751a4c8b742410498b56204889d8ff1249c7c601000000e9b60000004d89f64983fd01751e4d89f6498b46084c8b742410498b5628ff1249c7c601000000e98f0000004d89f64d8b6e084883fb0375444c8b7424104d8b5e384d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64241848b80057620800000000488b5d08ff234d89e64bc744aefc03000000eb004c8b7424104d8b5e304d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64241848b81051620800000000488b5d08ff234d89e64f8b74aefc41564c8b7424184d8b6e084d89e9498b45004d89f64d8b6e104d89ea498b5d004c8b442408ff15ac0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8975004c8b34244d897508488d64242048c7c001000000c34989c44983ec027115488d64241048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0940e928feffff488d64241048b8c89d620800000000488b5d08ff23f40000|@6818,1,@17918,@13113|239,0,@664 307,0,@625 459,0,@105 503,0,@1158 13113:D3,384|483b65187306ff5558ca0907a8010f85100100004c8b30488b40084d3bf07505e9ca0000004d8b264d89e54983fc0175384d8b284983fd01752a4d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e98b000000e9a00000004d89ec4983fd0375304d8b284983fd0375254d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037502eb4feb674d89e54983fc0575324d8b284983fd0575274d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb02eb14eb2c4d89ee4983fe0775234d8b304983fe07751a4889d84883e802711048b8d006620800000000488b5d08ff23c34883eb02711048b8d006620800000000488b5d08ff23e9dcfeffff4d8b294d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d896e084d89064d8931498b024883c002711048b8d006620800000000488b5d08ff234989024883e802711048b8d006620800000000488b5d08ff23c3f4|@6819,1,@17919|250,0,@105 273,0,@105 343,0,@105 368,0,@105 13114:D3,48|483b65187305ff5558cd054883f803750d4c8b720849c70603000000eb0048b840a0620800000000c3f4000000000000|@6820,1,@17920|32,0,@1178 13115:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b304d89f54983fe01750b48b860bc650800000000c34d89e64983fc037d0b48b8708c620800000000c34983fd03750b48b838bd650800000000c34983fe037d0b48b8708c620800000000c348b8b8bd650800000000c3f400000000|@3312,1,@17921|26,0,@1044 49,0,@6822 69,0,@1044 86,0,@6829 103,0,@1044 114,0,@6833 13116:D3,160|483b65187305ff5558cd0d4883fb03750949c7c603000000eb474c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b81051620800000000488b5d08ff234d8b7486fc4983fe03750949c7c603000000eb0749c7c6010000004c8b62084d89e54d8b6424f849c1e40849c1ec074983cc01493bc4721048b80057620800000000488b5d08ff234d897485fc48c7c001000000c3f400000000|@6754,1,@17922|56,0,@625 128,0,@664 13117:D4,376|483b65187306ff5558ca090741504c8b304983fe1b754d4c8b700841ff3641ff760841ff761841ff762041ff76284c8b6424484c8b7424404c8b6c2438415641554889d84c89cb4d89d14d89e24c8b442438ff15380100004989c649c7c501000000eb08488d642408c2180041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b7424284983fe03750949c7c403000000eb1e41f6c501740949c7c403000000eb0749c7c4010000004983f4024983f4024d8d77c04c3b75107306ff5550ca00304d89f749c746f8070000004d8966304c8b24244d896628488d6424084c8b24244d896620488d6424084c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001b0000004883c408c21800f4000000000000|@6838,1,@17924,@13118| 13118:D3,472|483b65187306ff5558ca090753415041514152a8010f85a90100004c8b30ff70084d8b2e4d89ec4983fd037523498b46086a016a01488b542430488b5c24284989e0ff12415e488d642408e9150100004d89e54983fc077514488b542410488b442418ff124989c6e9f80000004983fd01754541ff7608488b542410488b0424488b5c2420ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9ad0000004d8b6e084c8b7424184983fe03753f4c8b7424384d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b80057620800000000488b5d08ff234c8b7424384bc744aefc03000000eb004c8b7424304d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81051620800000000488b5d08ff234c8b7424304f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f400000000|@742,1,@17925|232,0,@664 295,0,@625 13119:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17927| 13120:D3,248|483b65187306ff5558ca09074989c65341504151415241f6c6010f85c6000000498b0641ff7608488b5424204c8b4c24584c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430415641554154415341524d89ca488b5c24404c8b4424384c8b4c2430ff124989c641564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e84bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f40000|@742,1,@17928| 13121:D15,2784|483b65187306ff5558ca090753415041514152a8010f85b10a00004c8b30ff70084d8b2e4d89ec4983fd010f85360200004d8b6e1041ff761841ff76204c8b74243041ff364c8b7424384d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8b6424384d8934244c8b7424304d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80057620800000000488b5d08ff234c8b7424304bc744aefc010000004c8b7424284d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80057620800000000488b5d08ff234c8b34244c8b6424284f8974acfc4c8b7424204d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80057620800000000488b5d08ff234c8b7424204bc744aefc010000004c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448415641554154415341524151488b442448488b5c24684c8b4424604c8b4c24584c8b542450e890feffff4989c64156488b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24684c8b4424604c8b4c24584c8b542450ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424184d8966104c8b6424084d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f802000000415b488d6424404d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c230004d89e54983fc050f856a01000041ff76084c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e840fdffff4989c64156488b5424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b442430488b5c24584c8b4424504c8b4c24484c8b542440ff124989c54d8b75004983fe217578498b45084d8b6d104d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f802000000415d4c896b084c89334883fb017508488d642430c23000488d6424304c8b34244c897424304883c430ff25c30700004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c430c230004983fd070f85aa01000041ff7608488b0424488b5c24284c8b4424204c8b4c24184c8b542410ff153e0700004c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8aefbffff4989c64156488b5c24604c8b4424584c8b4c24504c8b7424484c8b6c2440ff74241841564155488b4424204c8b542440ff15b80600004c8b5424604c8b7424584c8b6c245041564155ff74243048c7c30100000049c7c0010000004c8b4c2440ff15800600006a016a014889e3ff156b060000488b0424ff742408a801743c488b0424ff154d060000488d6424084c8b7424104983fe017508488d642448c23000488d6424105b4c8b7424304c897424604883c460ff2513060000ff15050600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff15c70500004c8b7424204983fe0175054989c6eb0e488b5c2420ff15a40500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304883c450c2300041ff761041ff76184c8b34244d8b364983fe190f852a030000415e4d8b66084c8b74242841ff364c8b7424304d8b364983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6c24304d8975004c8b7424284d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80057620800000000488b5d08ff234c8b7424284c8b6c24084bc744aefc010000004c8b7424204d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80057620800000000488b5d08ff234c8b34244c8b6c24204c8b5c24084f89749dfc4c8b7424184d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80057620800000000488b5d08ff234c8b7424184c8b6c24084bc744aefc010000006a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460415641554154544883042418415341524151ffb42480000000ff7424784150574989ca4989d14989f0ff15cc030000ff3424ff742410ff7424204c8b7424304c8b6c24504d8b65f849c1e40849c1ec074983cc014c8b6c24404d3bec7215488d64247048b80057620800000000488b5d08ff234c8b6c24504c8b6424404f8974a5fc4c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c2478415641554154415341524151488b442478488b9c24980000004c8b8424900000004c8b8c24880000004c8b942480000000e816f8ffff4989c641564c8b7424084983fe03750949c7c003000000eb434c8b7424684d8b6ef849c1e50849c1ed074983cd014c8b7424484d3bf57215488d64247848b81051620800000000488b5d08ff234c8b6c24484c8b7424684f8b44aefc4c8b8c24a00000004c8b9424980000004c8bb424900000004156ff742470ff742470488b442430488b5c2428ff15800200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24404d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c470c230004c8b74243041ff364c8b7424384d8b364983c6027115488d64244048b8d006620800000000488b5d08ff234c8b6c24384d8975004c8b7424304d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80057620800000000488b5d08ff234c8b7424304c8b6c24104bc744aefc010000004c8b7424284d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80057620800000000488b5d08ff234c8b34244c8b6c24284c8b6424104f8974a5fc4c8b7424204d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80057620800000000488b5d08ff234c8b7424204c8b6c24104bc744aefc010000004c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448415641554154415341524151488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8daf5ffff4989c64156488b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24684c8b4424604c8b4c24584c8b542450ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24084d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d488d6424404c8968084c8930c23000488d64242048c7c001000000c23000f400000000|@6840,1,@17929,@13117,@13111,@13123,@13124,@13125,@13126,@13127,@13128,@13129,@13131,@13132,@13122|90,0,@105 146,0,@664 207,0,@664 268,0,@664 1486,0,@105 1547,0,@664 1618,0,@664 1689,0,@664 1898,0,@664 2089,0,@625 2290,0,@105 2351,0,@664 2422,0,@664 2493,0,@664 13122:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17940| 13123:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17930| 13124:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17931| 13125:D3,160|483b65187305ff5558cd01a8010f85830000004c8b30488b40084d8b2e4d8b76084d8b264983fc1b755c4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8a9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d0bf650800000000488b5d08ff2348c7c001000000c3f400|@742,1,@17932|136,0,@6841 13126:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17933| 13127:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17934| 13128:D3,256|483b65187305ff5558cd0953a8010f85c4000000ff30488b40084c8b34244d8b76084d8b364983fe1b750949c7c603000000eb0749c7c60100000041566a016a014889e3e8b7ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000|@1120,1,@17935|220,0,@1118 13129:D5,584|483b65187306ff5558ca09075341514152a8010f85b20100004c8b30ff700841ff36498b4608498b5e104c8b4c24184d8b59f849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81051620800000000488b5d08ff234d89ed4d89c94f8b6ca9fc4983fd030f85fc0000004c8b5424404c8b7424384c8b6c243041564151415549c7c0030000004c8b4c2428ff15cc0100004989c44c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b34244d89f54d3bf37215488d64242848b81051620800000000488b5d08ff234c8b7424304d89ed4f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424404c8b6c24384c8b642430415641554154488b442420488b5c243849c7c0030000004c8b4c24304c8b542428e8c0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21800488d642408498d5fe8483b5d107306ff5550ca00434989df48c743f8020000004c8b6c24184c896b084c8933584d89c9415a488d6424104c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e935feffff4983f8017534488b4424105b4c8b4424284c8b4c2420415a488d6424084c8b6c24084c896c24184c8b34244c897424104883c410ff255b000000488b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c8b5c240849c7c00100000048c7c3010000004c895c24084c896424104c896c2418e9b9fdfffff4|@6844,1,@17936,@13130,@13117|82,0,@625 199,0,@625 13130:D4,296|483b65187306ff5558ca090753415041514152a8010f85fc0000004c8b30ff700841ff36498b4608498b5e104c8b742438ff742418ff742418415649c7c0010000004c8b4c24404c8b542438ff15ee0000004989c44c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b34244d89f54d3bf37215488d64243048b81051620800000000488b5d08ff234c8b7424384d89ed4f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e81affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f400|@742,1,@17937,@13117|125,0,@625 13131:D4,472|483b65187306ff5558ca090753415041514152a8010f85a90100004c8b30ff700841ff76084d8b66106a016a016a016a01498b0424498b5c24084d8b442410498b7c2418498b7424204d8b7424284d8b6c24304d8b6424384c8b5c24684c8b5424604c8b4c2458415641554154544883042418ff742468ff742468ff742468ff7424684153415241514989f24989f9ff155b010000415c415b415d415e4983fd0375474c8b6c24104d8b45f849c1e00849c1e8074983c8014c8b0c244d89ca4d3bc87215488d64243048b80057620800000000488b5d08ff234d89ed4d89d24bc74495fc03000000eb004c8b6c24484d8b55f849c1e20849c1ea074983ca014c8b2c244d89e94d3bea7215488d64243048b80057620800000000488b5d08ff234c8b5424484d89c94d89cd4f89748afc4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d89ed4d892e488d64240841564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f400000000|@742,1,@17938,@13111|203,0,@664 274,0,@664 13132:D3,280|483b65187306ff5558ca0907a8010f85fb0000004c8b30488b40084d8b7608ff334c8b2b4983c5027115488d64240848b8d006620800000000488b5d08ff234c892b4d8b68f849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234bc744b0fc010000004d8b69f849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234c8b2c244f896cb1fc4d8b6af849c1e50849c1ed074983cd014d3bf57215488d64240848b80057620800000000488b5d08ff234bc744b2fc01000000e820ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@17939|49,0,@105 94,0,@664 145,0,@664 196,0,@664 13133:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17941| 13134:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@742,1,@17942| 13135:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@742,1,@17943| 13136:D5,1456|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c240004c8b33ff7308498b064c8b204d89e54983fc1975124c8b600841ff76084c8b742420e9950300004983fd1175124c8b680841ff76084c8b742420e91101000041ff7608488b542440488b5c24384c8b4424684c8b4c24484c8b5424604c8b7424704c8b6c24584c8b642450ff742418ff742418415641554154ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e8bdfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b66084c3b5c2428750949c7c603000000eb184d89e6483b65187306ff5558ca0060ebd249c7c6010000004983f6024d8b65004d89e34983fc037521498b45086a016a01488b5424284c89f34989e0ff12415e488d642408e90c0100004d89dc4983fb077512488b5424104c89f0ff124989c6e9f10000004983fc01754341ff7508488b5424784c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a80000004d8b6d084983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80057620800000000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424484d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81051620800000000488b5d08ff234c8b7424484f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e851fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b6e084c3b5c2428750949c7c603000000eb184d89ee483b65187306ff5558ca0050ebd249c7c6010000004983f60241566a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418ff742460ff7424604153415241514150574989ca4989d14989f0ff1531010000585b488d6424104c8b7424784c8b6c24704c8b6424504156415541544c8b4424184c8b4c24384c8b542430ff15f80000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e88bfaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c24000f40000000000|@6837,1,@17944,@13117,@13111|229,0,@105 622,0,@664 685,0,@625 849,0,@105 1303,0,@105 13137:D3,976|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c238004c8b33ff7308498b064989c44d89e54d8b1c244983fb110f857f0200004d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc030f85560200004d8b6d084d8b5d084d89dc41ff76084c8b7424284d3bf3750949c7c603000000eb0749c7c6010000004983f6024d8b5d004d89da4983fb0375204c89e06a016a01488b5424304c89f34989e0ff12415e488d642408e9090100004d89d34983fa077512488b5424184c89f0ff124989c6e9ee0000004983fb0175414154488b5424184c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a70000004d89e54983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80057620800000000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424604d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81051620800000000488b5d08ff234c8b7424604f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b5c24404c8b4424584c8b4c24504c8b542448e871fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2380041ff7608488b542458488b5c24504c8b4424684c8b4c24604c8b5424484c8b7424404c8b6c2438ff742420ff742420ff74242041564155ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b5c24404c8b4424584c8b4c24504c8b542448e869fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c23800f4000000|@6837,1,@17945|340,0,@664 403,0,@625 567,0,@105 831,0,@105 13138:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@742,1,@17946| 13139:D10,1224|483b65187305ff5558cd014c8b304983fe037505488b4008c3ff7008ff7010ff7018ff7020f6042401751149c7c6010000004c8b6c2410e92d040000f64424100175384c8b6c24104d8b75004d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d89266a016a014d89edeb15488d64242048b8508a620800000000488b5d08ff2341f6c501755d4d8b5d004d8b65084d8b5b084d8b164d8b4e084d3bda73054d89daeb004d3bd976054d89d9eb004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b084d89134d89de4d89e5483b65187306ff5558ca0060eb9d4d8b2e4c892c244d8b76084c89742408415d5849c7c6010000004c8b64241041f6c40175374d8b5424084d89f34983c3027115488d64242048b8d006620800000000488b5d08ff234d89d44d89de483b65187306ff5558ca0170ebc34983fe0f7e39492bc54883c00149c7c50700000048d1e849d1ed4833d249f7f54c8d2c45010000004d3bf5720949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750e48c7c3010000004c8b742410eb18488b4424105b4c8b4424104159488d642410ff254f03000041f6c60175364d8b66084989dd4983c5027115488d64242048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff15e30200004889c348bac0c0650800000000488b442410ff15c302000048bb30c1650800000000ff15ab020000ff159d020000ff158f0200004889c36a016a016a01f64424180175234c8b7424184d8b3648c704240300000048c7442408010000004c89742410e9d5000000f6c30175324c8b334d8b6e084d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e084d892e6a016a014989ddeb15488d64243848b8508a620800000000488b5d08ff2341f6c501755d4d8b5d004d8b65084d8b5b084d8b164d8b4e084d3bda73054d89daeb004d3bd976054d89d9eb004d8d5fe84c3b5d107306ff5550ca08764d89df49c743f8020000004d894b084d89134d89de4d89e5483b65187306ff5558ca0860eb9d4d8b2e4c892c244d8b76084c89742408415d415e48c70424010000004c896c24084c89742410ff3424ff742410ff74242048c7c0010000004c8b04244c8b4c2408ff155e0100004989c549c7c6010000004d89ec41f6c40175374d8b5424084d89f34983c3027115488d64245048b8d006620800000000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34c8b24244c2b642408488d6424084983c4034d3bf475714d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424084d8966204c8b24244d896618488d6424104c8b6424204d8966104d896e084c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7000b0000004883c438c3488d64244848b818c2650800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe097e0949c7c603000000eb0749c7c601000000e9d5fcfffff400000000000000|@6854,1,@17950,@13144,@13145,@13146,@10785,@13140,@13147,@13143|130,0,@1028 301,0,@105 475,0,@105 522,0,@731 554,0,@6845 575,0,@6848 714,0,@1028 938,0,@105 1115,0,@6851 1155,0,@105 13140:D3,296|483b65187305ff5558cd0d4883f80175594883fb01750848c7c001000000c3498d47d8483b45107305ff5550cd044989c748c740f80400000049bed8c06508000000004c89701848c740100100000049bec0bd6308000000004c8970084c8b72084c8930488b5d08ff234c8b28488b4008f6c301755f4c8b23488b5b084d8d77e84c3b75107306ff5550ca0d304d89f749c746f8020000004d8966084d892e4156e85affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47d8483b45107305ff5550cd044989c748c740f80400000049bed8c06508000000004c89701848c740100100000049bec0bd6308000000004c8970084c8b72084c8930488b5d08ff23f400000000000000|@6847,1,@17947|59,0,@6846 81,0,@3337 241,0,@6846 263,0,@3337 13141:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be18e2ae09000000004c8930c3f400000000|@6850,1,@17949|47,0,@13142 13142:D3,96|483b65187305ff5558cd054c8b284c8b58084c8b72084d89f44d8b364d8b6424084d8b76084d8b6d084d3bf575154d3be37f0848c7c003000000c348c7c001000000c34d3bf5730848c7c003000000c348c7c001000000c3f400000000000000|@6849,1,@17948| 13143:D3,296|483b65187306ff5558ca09034989c64c89c841f6c6010f85070100004d8b2e4d8b760841ff75004d8b6d08f6c301753b4c8b1b4d8d67d84c3b65107306ff5550ca09694d89e749c74424f8040000004d895c24184d894424104d896c240849c70424290000004d89e5eb6b4d8d67e04c3b65107306ff5550ca09614d89e749c74424f80300000049c7442410010000004d896c240849c704240f0000004d8d6fd84c3b6d107306ff5550ca09514d89ef49c745f80400000049bb789f6208000000004d895d184d8965104d89450849c745000700000041554989c14c89f0e81dffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d64241048c7000d000000c3c3f4000000|@6857,1,@17955|186,0,@1170 13144:D3,272|483b65187306ff5558ca09034883fb0175514d89c64d2bf14983c601493bc6760848c7c001000000c34883c00248c7c301000000e8c7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34c8b2b4c8b73084d8b65004d8b5d084e8d6c08ff4d3beb755c4d8d6ff04c3b6d107306ff5550ca01534d89ef49c745f8010000004d89650041554883c0024c89f3e857ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3f400000000|@6855,1,@17951| 13145:D3,256|483b65187305ff5558cd01a8010f85e4000000ff304c8b680841f6c5010f85a70000004d8b75004d8b6d084d8b5e084c8b24244d8b6424084d3be375374c89e8e8bbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e865ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d642408c348c7c001000000c3f4|@6856,1,@17952| 13146:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17953| 13147:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@17954|53,0,@105 13148:D3,368|483b65187306ff5558ca0907415041514152a8010f853f010000f6c3010f852f0100004c8b30ff7008ff33ff73084d8b2e498b451041ff7608488b5424304c8b4c24704c8b4424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524d89c2488b5c24504c8b442448ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442450488b5c24404c8b4424684c8b4c24604c8b542458e8dffeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c23800488d642418eb05488d64241848c7c001000000c23800f400000000000000|@3397,1,@17956| 13149:D7,1864|483b65187306ff5558ca0d0752504150415141524c8b742420498b56084c8b4c24604c8b4424584c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430415641554154415341524d89c24889d8488b5c24304c8b442428ff124989c64156488b4424184c8b304983fe0b75624989c6498b46084d89f6498b5e104d89f6498b7e18488b5424284c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b44243841564155415441534152415141504989f84c8b4c24484c8b542440e834ffffff4989c6eb6e4c8b742428498b56084c8b4c24684c8b4424604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89c2488b5c24384c8b442430ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564c8b742430498b56084c8b4c24704c8b4424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524d89c2488b442450488b5c24404c8b442438ff124989c6415649c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049be40c46508000000004d8975004c8b2c244d8b65004d89e64983fc29757d4d89ed4d8b75084d89ed4d8b65104d89ed4d8b6d184d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9760100004d89ed4983fe070f85620100004d89ed4d8b65084d89ed4d8b75104d89ed4d8b6d184d8b5d004983fb130f85360100004d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd030f85120100004d8b2c244983fd0f757d4d8b64240841f6c401746641f6c401744b4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d8975084d8965004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64244048b8385f620800000000488b5d08ff2349c7c601000000e9890000004d8b2e4983fd0f75794d8b760841f6c601746641f6c601744b4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64244048b8385f620800000000488b5d08ff2349c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000041f6c6010f85f8020000488d6424084d8b3641ff3641ff760841ff76104c8b6c24184d8b75004983fe030f85a70000004d89ed4d8b6d084d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424104d897424084c8b7424204d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d8926498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8b24244c896020488d6424084c8968184c8970104c8b34244c897008488d64242048c700010000004883c428c238004d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff7620488b442418488b5c2428ff159f0200004989c54c8b7424204d89f44c3b3424750e488d64240849c7c603000000eb534d89e641f6c401753ef6042401752a4d89f64d8b364c8b24244d8b2424488d6424084d3bf4750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c601000000eb0c488d64240849c7c60100000041f6c5010f85c50000004983fe030f85b40000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e084c8b6c24384d892e4156488b442410ff15db0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24184c8968204c8b2c244c896818488d6424104c8970104c8b34244c897008488d64241048c700010000004883c448c23800488d642418eb05488d6424184d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424104d8975084c8b7424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442420ff15ec0000004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24084c8968204c8970184c8b34244c897010488d6424104c8b34244c897008488d64242048c700010000004883c428c23800488b442408ff15860000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24104d896e104c8b2c244d896e08488d64241849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700030000004883c428c23800f400|@6901,1,@17960,@13139,@13139,@13153,@13152|445,0,@6858 792,0,@723 925,0,@723 13150:D6,688|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4983fd01750b48b850c4650800000000c34d89e54983fc037d0b48b8708c620800000000c34d8b364983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb80a110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8c86508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@6900,1,@17959,@435,@433,@427|26,0,@1044 49,0,@6859 69,0,@1044 89,0,@105 139,0,@15263 322,0,@2144 370,0,@1021 415,0,@1987 566,0,@866 611,0,@6896 13151:D12,1984|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8708c620800000000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b354c070000750949c7c603000000eb2b4c3b3532070000750949c7c603000000eb194c3b3518070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40c56508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8708c620800000000c34d89f44d8b364983fe030f85610200004d8b7424084983ed02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35af040000750949c7c603000000eb2b4c3b3595040000750949c7c603000000eb194c3b357b040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20c66508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8708c620800000000c34d89e54d8b24244983fc050f85600200004d8b6d084983ee02711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb805110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3512020000750949c7c603000000eb2b4c3b35f8010000750949c7c603000000eb194c3b35de010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20296308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00c76508000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8708c620800000000c348b8e0c7650800000000c3f40000|@6895,1,@17958,@435,@433,@427,@435,@433,@427,@435,@433,@427|26,0,@1044 67,0,@105 117,0,@15183 300,0,@2144 348,0,@1021 393,0,@1987 544,0,@866 589,0,@6867 674,0,@1044 712,0,@105 762,0,@15183 945,0,@2144 993,0,@1021 1038,0,@1987 1189,0,@866 1234,0,@6874 1319,0,@1044 1357,0,@105 1407,0,@15183 1590,0,@2144 1638,0,@1021 1683,0,@1987 1834,0,@866 1879,0,@6881 1961,0,@1044 1972,0,@6888 13152:D3,368|483b65187305ff5558cd094989c64989dd4d8b1e4d89dc4983fb130f85120100004d8b5d004983fb130f85040100004d8b76084d8b6d084d3bf57505e9cb0000004d8b1e4d89dc4983fb0175394d8b65004983fc01752a4d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037402eb05e98b000000e9a50000004d89e34983fc0375314d8b65004983fc0375254d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037502eb4eeb6b4d89dc4983fb0575334d8b65004983fc0575274d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037402eb02eb12eb2f4983fc0775294d8b6d004983fd07751f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34983fc15752c4d8b65004983fc157522498b46084d8b7610498b5d084d8b6d104d3bf5740848c7c001000000c3e99bfeffff48c7c001000000c3f40000|@6902,1,@17962| 13153:D3,128|483b65187305ff5558cd01a80175664c8b30488b40084d8b2e4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17961| 13154:D4,432|483b65187306ff5558ca09014c8b284d89ee4983fd297525488b40084d89c14989d848bbb0ca650800000000ff15960100004989c54d89eee9c60000004983fe110f85b40000004c8b70084d8b2e4983fd050f859b0000004d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81051620800000000488b5d08ff234e8b6cb3fc41f6c501740848c7c001000000c34d8d77d84c3b75107306ff5550ca00214d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e084d8906498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c348c7c001000000c341f6c60175274d8b1e4d8b660841f6c30174114d89e6483b65187306ff5558ca0060ebdc49c7c601000000eb0749c7c6030000004983fe03750848c7c001000000c34d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bdb804110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@6906,1,@17964,@13155|36,0,@6905 115,0,@625 189,0,@224 366,0,@224 380,0,@15167 13155:D3,144|483b65187306ff5558ca09034989c6534150415141f6c6017565498b0641ff7608488b542418488b5c24104c8b442408ff124989c64156488b442408488b5c24204c8b4424184c8b4c2410e8b0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f4000000|@742,1,@17965| 13156:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@6754,1,@17966| 13157:D4,240|483b65187306ff5558ca09074989c64989dd4983f9017d05e9b50000004c3b0dc40000000f8da80000004c89c94e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02654d89e749d1e94d894c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c8b5c2408498d5fc0483b5d107306ff5550ca007d4989df48c743f8070000004c8953304c895b2849bb20cb6508000000004c895b204c8963184c8943104c896b0849bdf001af09000000004c892b4c89f04c8b34244c897424084883c408ff253600000048b8d055620800000000488b5d08ff23f40000000000ffffffffffffff01|@6929,1,@17999,@12181|151,0,@6907 177,0,@13158 212,0,@657 13158:D13,2056|483b65187305ff5558cd05524c8b284d89ee4983fd1f0f85ac0000004c8b5808ff7010488b5c24084c8b43084889db4c8b4b104889db4c8b53184889db4c8b73204889db4c8b6b284889db4c8b63304156415541544c89d8ff150a0800004989c64156488b442408488b5c2410ff15ed0700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f54983fe190f85290100004c8b60086a016a016a016a016a016a016a016a0141ff3424498b5c2408498b542410498b4c2418498b4424204d8b7424284d8b6c24304d8b642438488b7424484c8b5e084889f64c8b56104889f64c8b4e184889f64c8b46204889f6488b7e284889f6488b7630415641554154544883042420415341524151415057564989c24989c94989d0488b442450ff15f2060000488d642408415e415c415b415a415941585f5e488d6424084d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89ee4983fd110f85dd0100004c8b68086a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e91a0100004d89e64983fc037527498b45084c8b742410498b5608ff124989c64d8b2e4c892c244d8b76084c89742408e9ea0000004983fe07752d4c8b742410498b561048c7c001000000ff124989c649bd08d16408000000004c892c244c89742408e9b70000004d8b65084c8b7424104d8b56184d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64241848b81051620800000000488b5d08ff234d89de4f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c89742408415e415d4d8b264983fc037554488d6424084983fd01754e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b830cb650800000000488b5d08ff234983fe0f0f8505040000ff70084c8b7010ff70184d8b264d89e54983fc190f856f0100004d8b6e084d8b75104983fe010f85500100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b6c2410498b5d084d89ed4d8b45104d89ed4d8b4d184d89ed4d8b55204d89ed4d8b75284d89ed4d8b6d3041564155ff15b00300004989c641f6c6010f85ac0000004d8b3641ff3641ff7608488b442418488b5c2420ff15810300004989c64156488b442408ff15690300004889c34883fb017508415d4883c408eb12488b0424ff15460300004989c5488d6424104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d896610488d6424104d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b8508a620800000000488b5d08ff23488d64241848c7c001000000c34983fd110f85650200004d8b6e086a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e91a0100004d89e64983fc037527498b45084c8b742420498b5608ff124989c64d8b2e4c892c244d8b76084c89742408e9ea0000004983fe07752d4c8b742420498b561048c7c001000000ff124989c649bd08d16408000000004c892c244c89742408e9b70000004d8b65084c8b7424204d8b56184d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64242848b81051620800000000488b5d08ff234d89de4f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c89742408415d415e6a016a014d8b65004983fc0375364d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500110000004c892c244c89742408eb0d4d8b6d084c892c244c89742408ff3424ff742410488b442428488b5c2430ff15d80000004989c64156488b442408ff15c00000004889c34883fb017508415d4883c408eb12488b0424ff159d0000004989c5488d6424104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184c8b24244d896610488d6424084d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64241848c7c001000000c3488d64240848c7c001000000c3f4000000|@6911,1,@17967,@13160,@13161,@13162,@13163,@13164,@13165,@13166,@13183,@12181,@13159|677,0,@5252 743,0,@625 986,0,@6908 1376,0,@1028 1567,0,@5252 1633,0,@625 13159:D10,1672|483b65187306ff5558ca090753415041514152a8010f85fe0300004c8b28ff70084d8b75004d89f44983fe010f85c800000041ff751041ff7518498b4520488b5c2430ff15870600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d64240849c746080100000049c7060100000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e837ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004d89e64983fc050f859e000000498b4508488b5c2420ff15b20500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e88cfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004983fe07751441ff75084c8b2c2449c7c603000000e9690200004d8b750841ff7510498b45184983fe010f85950100004c8b304983fe190f85860100004c8b70084d89f54d8b76104983fe01750949c7c603000000eb0749c7c6010000004983fe030f855b0100004d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b5424484c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c2420ff151f0400004989c641f6c6010f85a50000004d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64243048b80057620800000000488b5d08ff234d89ed4d89ea4d89e44f8974a5fc488d64240858488b5c24184c8b4424104c8b4c24084d89d2488d6424204c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e9adfcffff488d64243048b8508a620800000000488b5d08ff23eb00488b5c2428ff15430300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c7060300000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e818fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c2180041f6c501755b4d8b5d004d8b65084d8b134983fa01752f4d8b5b104d8b5b104983fb0175184983fe03750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004d89de4d89e5483b65187306ff5558ca0060eb9f4983fe03753c488b0424ff15170200004c8b5424484c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c2420ff15e70100004989c6415de9c10000004c8b5424484c8b7424404c8b6c243841564155488b442410488b5c24304c8b4424284c8b4c2420ff15a80100004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8a5faffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004983fe0175554983fd01753a58488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e92efaffff488d64242848b868bd630800000000488b5d08ff234d8b0e4d8b660841f6c50175784d8b55004d8b5d084d8b42084d8d57f04c3b55107306ff5550ca007b4d89d749c742f8010000004d890a4c8b4c2408498b79f848c1e70848c1ef074883cf014c3bc77215488d64242848b80057620800000000488b5d08ff234d89c94f895481fc4d89dd4d89e6483b65187306ff5558ca0060e920ffffff488d64242848b868bd630800000000488b5d08ff23f4000000000000|@6928,1,@17996,@13189,@13166,@13188,@12181,@13166,@12181,@12181|759,0,@664 858,0,@1028 1497,0,@3335 1599,0,@664 1651,0,@3335 13160:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17968| 13161:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17969| 13162:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@17970,@12181| 13163:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17971| 13164:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17972| 13165:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@17973,@12181| 13166:D13,1584|483b65187306ff5558ca0907505341504151415249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4156488b442428ff15450600004989c64156ff742430f6042401751d4c8b2c244d8b75004d89ed41ff75084d8b364d8b76184156e969030000488d6424084c8b7424084d8b2e49c7c60100000041f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb94156488b0424ff15aa0500004989c448c7c3010000004c8b342441f6c60175364d8b5e084989dd4983c5027115488d64244048b8d006620800000000488b5d08ff234d89de4c89eb483b65187306ff5558ca0850ebc44c8b7424504c8b6c2448ff742420ff742418ff742428415641554154488b4424684c8b4424384c8b4c24604c8b542458ff15220500004989c64156488b442440ff150a0500004989c549c7c60100000041f6c50175264d8b5d004d8b65084d3bde7e02eb034d89f34d89de4d89e5483b65187306ff5558ca0160ebd44156ff15c40400004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15ed0300004989c5eb004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7061f00000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554c8b6c24084983c5027115488d64245848b8d006620800000000488b5d08ff23498d47b8483b45107306ff5550ca00604989c748c740f80800000048c74038030000004c89683048c740280300000049bd88016308000000004c89682048c740180100000048c740100100000049bd00cc6508000000004c8968084c8930488b5c24604c8b4c24684c8b0424ff15ee0200004989c64156488b54240848c7c001000000ff124989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004c8b2c244d896810488d6424104d89700849c7000d000000488b4424484c8b4c241048c7c3010000004c8b7424504c897424604883c460ff2578020000f604240175284c8b34244d8b2e4d89f641ff76084d8b75004983fe05750e4d8b75084c8b642420e9e2010000eb19488d642408415d4c892c24483b65187303ff5558e92dfcffff6a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e90b0100004d89e64983fc037523498b4508488b542458ff124989c64d8b2e4c892c244d8b76084c89742408e9df0000004983fe077529488b54245048c7c001000000ff124989c649bd08d16408000000004c892c244c89742408e9b00000004d8b65084c8b7424484d8b5ef849c1e30849c1eb074983cb014d3be37215488d64246848b81051620800000000488b5d08ff234d89f64f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2440ff15b30000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000488b0424488b5c2440ff1573000000488d642418415d4c892c24483b65187303ff5558e9f2fdffff41f6c40175284d8b14244d8b5c24084d3bd6750949c7c603000000eb184d89dc483b65187306ff5558ca0070ebd249c7c6010000004983fe030f85fafdffffebabf4|@6913,1,@17974,@13168,@13169,@13170,@12197,@12170,@13171,@13172,@13173,@13182,@13167|262,0,@105 754,0,@105 817,0,@1853 847,0,@6912 1205,0,@5252 1264,0,@625 13167:D3,104|483b65187305ff5558cd01a801754d4c8b30488b40084d8b76084983fe017505e9dbffffff41ff36e8d3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@3363,1,@17990| 13168:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@17975,@13169| 13169:D3,640|483b65187305ff5558cd094c8b3341f6c6010f85130100004d8b264d8b6e084d8b1c244c3bd87505e9ca0000004d8b0b4d89ca4983f90175384c8b104983fa01752a4d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e98b000000e9a60000004d89d14983fa0375304c8b104983fa0375254d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037502eb4feb6d4d89ca4983f90575324c8b104983fa0575274d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb02eb14eb324d89d34983fb0775294c8b184983fb0775204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb1b4d89ee483b65187306ff5558ca0940e9e3feffff49c7c6010000004c8b1b4983fe010f850c01000041f6c3010f85a80000004d8b334d8b76084d89f54983c502711048b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca09684d89e749c74424f8020000004d896c2408498904244d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d8965004c892b4983c602711048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34d8d6fe84c3b6d107305ff5550cd094d89ef49c745f80200000049c7450801000000498945004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e4c893348b860fe620800000000c34d8b364d8b7608498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f4000000000000|@6914,1,@17976|347,0,@105 444,0,@105 578,0,@1823 13170:D4,216|483b65187306ff5558ca09035341504151a8010f85ab000000ff7008488b442410488b5c241849c7c001000000ff15bd0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89e14d8966084d892e4156488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff23488b4424084c8b442418e86fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3488d64241848c7c001000000c3f4000000000000|@6915,1,@17977,@11046|116,0,@105 13171:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@17978| 13172:D3,112|483b65187305ff5558cd01a80175534c8b30488b40084d8b76084983fe01750949c7c601000000eb034d8b364156e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17979| 13173:D4,304|483b65187306ff5558ca090753415041514152a8010f85010100004c8b30ff70086a016a016a01498b06498b5e084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448ff742428ff7424284156415541544153415241514c8d4424404c8b4c24784c8b542470ff15d3000000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e815ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f400000000|@742,1,@17985,@13174| 13174:D5,712|483b65187306ff5558ca09075341504152ff30ff7008ff7018ff7020ff7030ff703849c7c6010000004c8b6c241041f6c50175364d8b5d084d89f44983c4027115488d64244848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0062ebc441564983f9017d15488d64245048b83060620800000000488b5d08ff234c89cb48c7c0010000004c8b0424ff154d0200004989c649c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554c8bac24980000004c8ba424900000004c8b9c24880000004c8b942480000000498d5fa8483b5d107306ff5550ca007c4989df48c743f80a0000004c8b4c24084c894b484c8953404c895b384c8963304c896b284c8973204c8b2c244c896b184c8b6c24404c896b104c8b6c24284c896b0849bd1027af09000000004c892b4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849be382daf09000000004d8930488b5424784c8b5424684c8b7424704156488b4424404c8b4c2420ff124989c641564c8b7424084d8b2e49c7c60100000041f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb941564c8b7424704983fe0175074c8b6c2430eb13488b5c2470488b442430ff15ce0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f8080000004c8b6424204d8966384c8b6424284d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b6c24384d896e084c8b2c244d892e488d6424084c8b6424504d89e54983fc01750e488d64244849c7c401000000eb0c488d6424484d89ed4d8b6500415d49c74500010000004d8965084d89751048c7c0010000004883c408c24000f400000000000000|@6922,1,@17986,@13181,@13180|72,0,@105 121,0,@731 319,0,@13175 363,0,@13179 13175:D4,120|483b65187305ff5558cd056a016a014c8b4208488b7a10488b72184c8b72204c8b6a284c8b62304c8b5a384c8b52404c8b4a484156415541544153415241514989f24989f9488d5c2430ff1540000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@6919,1,@17980,@13176| 13176:D7,944|483b65187306ff5558ca09075341f6c00175544d8b284d8b70084883f80175154d8b75004983fe0575094d8b7508e9ed020000eb474989c54983ed027115488d64240848b8d006620800000000488b5d08ff234c89e84d89f0483b65187306ff5558ca0107eba6488d64240848b8c89d620800000000488b5d08ff236a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e90d0100004d89e64983fc037523498b4508488b542440ff124989c64d8b2e4c892c244d8b76084c89742408e9e10000004983fe077529488b54243848c7c001000000ff124989c649bd08d16408000000004c892c244c89742408e9b20000004d8b65084c8b7424304d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81051620800000000488b5d08ff234c8b7424304f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2430ff15ec0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004156488b5c2438488b442408ff15a90100004c8b34244d8b2e4983fd01750d4d89f6488d642420e9920000004d89f64d8b7608488d6424084d8b2e4983fd030f85a9000000488d6424184d8b76084c8b6c24104983ed014d03f57115488d64240848b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706030000004156488b5c2418ff15e80000004989c64c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c23000488d64242048b8f0cc650800000000488b5d08ff2341f6c10175264d8b194d8b61084d3bde750949c7c603000000eb184d89e1483b65187306ff5558ca0066ebd449c7c6010000004983fe030f851ffdffff4c89d34c89e8ff155f0000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000415d4c8b7424304d8965004d89750848c7c001000000c23000f400|@6920,1,@17981,@13169,@13178,@13177,@13169|69,0,@105 110,0,@1158 266,0,@5252 325,0,@625 640,0,@105 786,0,@6916 13177:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@17983,@13169| 13178:D3,184|483b65187305ff5558cd09a8010f859c0000004c8b30488b40084d8b2e4983fd03757c4d8b6e084989de4983ee014d03ee711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706010000004156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f0cc650800000000488b5d08ff2348c7c001000000c3f4|@742,1,@17982|53,0,@105 161,0,@6916 13179:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@6921,1,@17984| 13180:D3,176|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c54983ed014c03e8711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7060100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e883ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@17988|39,0,@105 106,0,@105 13181:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@17987| 13182:D3,88|483b65187305ff5558cd01a8017539488b4008e8e8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c348c7c001000000c3f400000000000000|@742,1,@17989|60,0,@1823 13183:D3,352|483b65187306ff5558ca090753415249c7c5010000004d8d77f04c3b75107306ff5550ca01224d89f749c746f80100000041c646ff404d892e41564c8b7424484c8b6c24404c8b642438498d5fc8483b5d107306ff5550ca01724989df48c743f8060000004c8b1c244c895b284c8963204c896b184c8973104c894b0849bee030af09000000004c8933488b5424304c8b4c24604c8b5424204c8b742428415649b8b0cf650800000000ff124989c24c8b34244d8b36488d64240849c7c30100000041f6c60175444d8b264d8b6e084d8b0c244d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c24084d890c244d89e34d89ee483b65187306ff5558ca004cebb64c8b6c24484c8b6424584c8b7424504d8955004c8b5424084d89550849c74510010000004d895d184c8b1c244d895d20488d64241049c74528030000004d8965304d89753848c7c001000000c25000f400000000|@6927,1,@17995|127,0,@13184 162,0,@6925 13184:D4,96|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a2841564155488d5c2410ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@6923,1,@17991,@13185| 13185:D5,592|483b65187306ff5558ca09075341f6c0010f851c0200004d8b284d8b70084883f8010f85d60100006a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e9090100004d89e64983fc037521498b45084c89caff124989c64d8b2e4c892c244d8b76084c89742408e9df0000004983fe0775274c89d248c7c001000000ff124989c649bd08d16408000000004c892c244c89742408e9b20000004d8b65084c8b7424284d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81051620800000000488b5d08ff234c8b7424284f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2428ff15d40000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004156488b5c2430488b442408ff15910000004989c64c8b6c24204c8b24244d896500488d6424104d89750848c7c0010000004883c418c210004989c54983ed027115488d64240848b8d006620800000000488b5d08ff234c89e84d89f0483b65187306ff5558ca0107e9dafdffff488d64240848b8c89d620800000000488b5d08ff23f400000000000000|@6924,1,@17992,@13186,@13169|178,0,@5252 237,0,@625 526,0,@105 570,0,@1158 13186:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@17993,@13169| 13187:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@6926,1,@17994| 13188:D3,168|483b65187305ff5558cd01a8010f85870000004c8b28488b40084d8b75084d8b6d104d8d67f04c3b65107306ff5550ca01604d89e749c74424f8010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@17998| 13189:D4,400|483b65187306ff5558ca090753415041514152a8010f85620100004c8b30ff700841ff76084d8b66106a016a016a016a016a016a016a016a01498b0424498b5c24084d8b4424104d8b4c2418498b7c24204d8b7424284d8b6c24304d8b6424384c8b9c24800000004c8b542478415641554154544883042418ffb42488000000ffb42488000000ffb42488000000ffb42488000000415341524989faff1506010000415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060100000041564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e8b4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f4000000|@742,1,@17997,@13183| 13190:D9,2248|488dbc2460ffffff483b7d187306ff5560ca0907534150415141524883f801750f488d64242048c7c001000000c218004c8b30ff70084d8b2e4d89ec4983fd010f852101000041ff760841ff761041ff7618498b46204c8b742458498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24304c896b284c8973204c8b7424204c8973184c8b7424284c8973104c8b7424384c89730849be9040af09000000004c8933ff15570800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060100000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8cafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004d89e54983fc070f8525010000498b46084989c44d89e541f6c4010f85ee0000004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85c90000004d89ee4d8b364d8b2e4d8b66084d8b76104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703190000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e98afdffff488b5c24384c8b4c24304c8b442418ff15750600004989c641564c8b3424e9b20200004983fd050f85ee000000498b46084c8b742440498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24184c896b284c8973204c8b7424084c8973184c8b7424104c8973104c8b7424204c89730849bee040af09000000004c8933ff15f60500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8a0fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c2180041ff760841ff7610498b46184c8b742450498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24284c896b284c8973204c8b7424184c8973184c8b7424204c8973104c8b7424304c89730849be3041af09000000004c8933ff15f80400004989c54d8b75004983fe0d0f859c0000004d8b65084d8b6d104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926488b542450498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642408ff12488b442408488b5c24284c8b4424204c8b4c24184c8b5424104c8b6c24484c8b6424404c8b5c24384c895c24384c896424404c896c24484883c430e95bfbffff4d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060300000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8e6faffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c2180041f6c60175164d8b264d8b6e084d8b6424104d8b642418e9b102000049c7c6030000004983fe03751c488b5c2448488b0424ff15650300004989c6ff34244156e9920000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c7060700000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e80ffaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004c8b7424084d89f54983fe0175634c8b34244983fe01488d642408753f488d64241058488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e982f9ffff488d64243848b868bd630800000000488b5d08ff234d89ed4d8b75004d89ed41ff7508f6442408010f85570100004c8b6424084d89e541ff34244d89ed41ff750841ff7608498b5e104d8d47e04c3b45107305ff5550cd084d89c749c740f80300000049c74010010000004c8b7424104d89700849c700010000006a016a016a016a016a016a016a016a01488b9424b0000000488b8424a80000004989e14c8b942490000000ff12415e415d415c415b415a415941585f498d47b8483b45107306ff5550ca807f4989c748c740f808000000488978384c8940304c8948284c8950204c8958184c8960104c8968084c8930488b5c24484c8b4424104c8b4c2450ff155c0100004989c5488b5424784d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642408ff124c8b6c2410415c488d6424104c8924244c896c2408483b65187303ff5558e91ffeffff488d64244848b868bd630800000000488b5d08ff2341f6c401751e4d8b14244d8b5c24084d8b0a4983f905750a4d8b52084c8b0c24eb38eb2d49c7c4030000004983fc0375144d89ee483b65187306ff5558ca0040e9eefcffff49c7c601000000e905fdffff49c7c401000000ebd141f6c101752a498b394d8b4108488b7f084c3bd7750949c7c203000000eb184d89c1483b65187306ff5558ca007eebd049c7c2010000004983fa0375ba4d89dc483b65187306ff5558ca0070e955fffffff400000000|@6931,1,@18004,@12175,@13195,@12181,@12181,@13194,@12181|160,0,@13191 753,0,@13192 999,0,@13193 1669,0,@3335 2058,0,@3335 13191:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@18001| 13192:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@18002| 13193:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@18003| 13194:D3,312|483b65187306ff5558ca09035341504151a8010f850a0100004c8b30ff700841ff3641ff7608498b5e106a016a016a016a016a016a016a016a01488b542468488b44245849b808d16408000000004989e14c8b542460ff12415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c24204c8b4424184c8b4c2410e80cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000000000|@742,1,@18006|70,0,@5252 13195:D3,240|483b65187305ff5558cd0953a8010f85c90000004c8b30ff70084d8b760849c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004155488b5424104d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f80200000049c74508010000004c8b24244d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12488b442408488b5c2410e852ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@18005| 13196:D5,472|483b65187305ff5558cd01a801756cff30488b4008e8e6ffffff4989c641564c8b7424084d8b2e4983fd0775234d89f6498b460848bb98d1650800000000ff15b40100004989c648c7c001000000eb54498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004d89f64c8930eb0848c7c001000000c34c8b34244c89f34983fe017506488d642410c34889db488d642410ff254c01000041f6c6010f85210100004d8b264d8b6e0841f6c4010f85fb0000004d8b1c244d8b5424084983fa010f85860000004d8b234d8b53084d8b5b104d8d4fe84c3b4d107306ff5550ca017c4d89cf49c741f8020000004d89590849c701190000004d8d5fd84c3b5d107306ff5550ca01764d89df49c743f8040000004d894b184d8953104d89630849c703030000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb4b4d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703070000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e9eafeffff488d64241048b838d2650800000000488b5d08ff23e9affefffff4000000|@1573,1,@18009,@13199,@12682|54,0,@6932 449,0,@6937 13197:D3,120|483b65187305ff5558cd014c8b70104d8b761848c7c00100000041f6c60175544d8b264d8b6e084d8b1c244983fb05752c4d8b5c24084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb034989c44c89e04d89ee483b65187306ff5558ca0140eba6c3f40000|@6935,1,@18007| 13198:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@6936,1,@18008| 13199:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18010| 13200:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@18011,@12181| 13201:D4,600|483b65187306ff5558ca0d0741514c8b284c8b58084c8b33ff7308ff7310488b7318ff7320ff7328ff7330ff73384c8b6424084d89e14983fc017d0a488d642438e95f0100004d89c94d89cc4c3b0dfd0100000f8d470100004d89e44c89e14e8d0ca50400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca466d4d89cf49d1ec4d8961f841c641ff404c89cf48d1e948c7c001000000f348ab48c7c7010000004d8d67f04c3b65107306ff5550cac46f4d89e749c74424f80100000041c64424ff4049893c2441544d8d67c84c3b65107306ff5550ca446f4d89e749c74424f8060000004d894c242849897424204d895c24184c8b1c244d895c24104d8944240849bba04aaf09000000004d891c244d8d5fe84c3b5d107306ff5550ca04764d89df49c743f8020000004d894b0849b9b84caf09000000004d890b498d5fc8483b5d107306ff5550ca047c4989df48c743f8060000004c8953284c895b204c8963184c896b104c8b6a084c896b0849bd504daf09000000004c892b4c89f0ff15e80000004989c44c8b34244d8b2e488d64240849c7c601000000eb15488d64243848b8d055620800000000488b5d08ff2341f6c50175414d8b55004d8b5d084d8b0a4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dd483b65187306ff5558ca0070ebb94c8b6c24304d8965004c8b6424284d8965084c8b6424204d8965104d8975184c8b7424184d8975204c8b7424104d8975284c8b7424084d8975304c8b34244d897538488d64243848c7c001000000c3f400000000ffffffffffffff01|@6942,1,@18016,@12181|263,0,@13202 308,0,@13203 372,0,@13204 423,0,@657 13202:D4,488|483b65187305ff5558cd054989c6524d8b2e4d89ec4983fd07750e4c8b3424498b4608488d642408c34d89e54983fc0375184d8b66084c8b2c244d8b75184d89ed4d8b6d20e9e00000004983fd050f85aa0000004d8b66084c8b2c244d8b55284d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64240848b81051620800000000488b5d08ff234d89dd488d6424084f8b6ca5fc41f6c50175374d8b6d004d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70001000000c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c341f6c5010f859e000000498b45004d8b5d084983fc01755b4c89f2ff124989c64d8b2e4983fd017509488d6424084c89f0c3498b46084c8b3424498b5e10488d642408ff158d0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34d89e24983ea027115488d64240848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e958ffffff488d64240848b8c89d620800000000488b5d08ff23f4|@6940,1,@18013,@13169|127,0,@625 429,0,@105 473,0,@1158 13203:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@6941,1,@18014|78,0,@664 13204:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@5251,1,@18015| 13205:D3,32|483b65187305ff5558cd0148b8d0d3640800000000488b5d08ff23f400000000|@5271,1,@18018|13,0,@5267 13206:D8,464|483b65187305ff5558cd0d5250534c8b2c244d89ee4983fd01750b488d642408584883c408c34c8b6c24084c89e84983fd0175094c89f0488d642418c36a016a014c8b7424204d8b46084889e3ff15b5010000ff3424ff7424106a016a014c8b7424404d8b4608488b4424304889e3ff158b0100004c8b3424ff742408f6442420010f851601000041f6c6010f85050100004c8b6c24204d8b6d004d8b364d8b5d004c8b4424484d8b50084d89d44d3bda0f85cb000000498b45104d8b2e4d89c04d3bec0f85a3000000498b5e10ff15240100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e084c8b6c24484d8b6d084d892e41564c8b7424084c89f34983fe0175074c8b742420eb0e488b442420ff15b60000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c3488d64245048b87850620800000000488b5d08ff23488d64245048b87850620800000000488b5d08ff23488d642438eb05488d6424384c8b34244c89f34983fe01750b488d642408584883c408c3488b4424084889db488d642418ff251a000000f400|@6945,1,@18019,@13208,@13209,@13210,@13211,@13207|256,0,@224 372,0,@621 393,0,@621 13207:D3,208|483b65187306ff5558ca090153a8010f8597000000ff30488b40084c8b34244d8b2e4d3be875384d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004d89f64d897500488d642408415e4d892e4989460848c7c001000000c36a016a014889e3e895ffffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@6946,1,@18024|176,0,@1172 13208:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18020| 13209:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18021| 13210:D3,184|483b65187306ff5558ca09014989c54989de41504983fd017523488d6424084983fe01750848c7c001000000c348b8286d640800000000488b5d08ff23498b450041ff750841f6c6017556498b1e41ff7608488b542410ff124989c64156488b442410488b5c24084c8b442418e88effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048b8286d640800000000488b5d08ff23f400|@4547,1,@18022|47,0,@4545 168,0,@4545 13211:D3,208|483b65187306ff5558ca090153a8010f8597000000ff30488b40084c8b34244d8b2e4d3be875384d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004d89f64d897500488d642408415e4d892e4989460848c7c001000000c36a016a014889e3e895ffffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@6946,1,@18023|176,0,@1172 13212:D4,480|483b65187305ff5558cd094c8b284d89ee4983fd1f7509488b4010e9e0ffffff4d89f54983fe297522488b40084989d848bb50d4650800000000ff15b80100004989c54d89eee9e80000004d89ee4983fd110f85c80000004c8b68084d8b75004983fe050f85a60000004d8b75084c8b63f849c1e40849c1ec074983cc014d3bf4721048b81051620800000000488b5d08ff234e8b74b3fc41f6c60175364d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb264d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8b2e4983fd017505498b4610c348c7c001000000c348b800cf640800000000488b5d08ff234983fe0d7505488b4010c348c7c001000000c341f6c60175274d8b1e4d8b660841f6c30174114d89e6483b65187306ff5558ca0060ebdc49c7c601000000eb0749c7c6030000004983fe03750848c7c001000000c34d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd281b6208000000004d896e0849bdb804110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@6949,1,@18026,@13213|50,0,@6947 133,0,@625 274,0,@5243 414,0,@224 428,0,@15167 13213:D3,136|483b65187306ff5558ca09014989c653415041f6c601755b498b0641ff7608488b542410488b5c2408ff124989c64156488b442408488b5c24184c8b442410e8bcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f400000000000000|@742,1,@18027| 13214:D4,872|483b65187306ff5558ca09015341504c8b304d89f54983fe010f8509010000ff7010488b58184883fb017d15488d64241848b83060620800000000488b5d08ff2348c7c0010000004c8b0424ff152e0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b24244d89e34d3be27215488d64241848b89051620800000000488b5d08ff234d89db4d89ed4f8b6c9dfc4983fd0174514c8b6c24084d8b55f849c1e20849c1ea074983ca014d89db4d89dc4d3bda7215488d64241848b80057620800000000488b5d08ff234d89ed4d89e44f8974a5fc488d64241048c7c0010000004883c408c3488d64241848c7c001000000c34d89ee4983fd05750d488d64241048c7c001000000c34983fe0775094c8b7008e9fd0000004c8b60104983fc017d15488d64241048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004d89650849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706110000004c8b6c24084d8b5df849c1e30849c1eb074983cb014d3be37215488d64241048b89051620800000000488b5d08ff234d89ed4f8b6ca5fc4983fd0174474c8b2c244d8b5df849c1e30849c1eb074983cb014d3be37215488d64241048b80057620800000000488b5d08ff234d89ed4f8974a5fc488d64240848c7c0010000004883c408c3488d64241048c7c001000000c341f6c6010f85ff0000004d8b264d8b6e084d8b5424084983fa017d15488d64241048b800d5650800000000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00644d89df49c743f8020000004d89530849c703050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424110000004c8b5c24084d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b89051620800000000488b5d08ff234d89db4f8b5c93fc4983fb0174384c8b1c244d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b80057620800000000488b5d08ff234d89db4f896493fceb004d89ee483b65187306ff5558ca0040e9f7feffff488d64241048c7c001000000c3f400000000000000|@6953,1,@18028,@13215|51,0,@731 171,0,@628 241,0,@664 350,0,@6950 474,0,@628 534,0,@664 621,0,@6950 747,0,@628 807,0,@664 13215:D3,256|483b65187306ff5558ca0901483bc3750848c7c001000000c34983f8017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09014d89f749c746f8020000004d89460849c706050000004d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09214d89f749c746f80400000049c7461801000000498946104d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@18029|33,0,@6950 189,0,@105 13216:D4,264|483b65187305ff5558cd014c8b304983fe07753eff70084c8b40104c8b34244c89f34983fe017d15488d64240848b83060620800000000488b5d08ff2348c7c001000000ff15d60000004989c54d89eeeb01c341f6c601752e4d8b1e4d8b66084d8b5b084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd549c7c601000000eb0749c7c6030000004983fe037510488d64240848b8a89b620800000000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50fc9209000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3f4000000|@6955,1,@18030,@13217|47,0,@731 155,0,@1145 197,0,@10799 13217:D3,224|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c641ff36498b460848bab8d5650800000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b4424184883c0027115488d64242048b8d006620800000000488b5d08ff23488b5c24104c8b442408e859ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f40000000000|@741,1,@18031|62,0,@6954 138,0,@105 13218:D18,1352|488dbc2460ffffff483b7d187306ff5560ca09074150415141526a016a016a014c8b5424484989e04c8b4c2418ff159d0500004c8b3424ff7424084c8b6c24184c8b6424304983fc037502eb2a4983fd0374244c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c430c218004c8b6c244841f6c50175464d8b5d004d8b65084d8b134c3b153405000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2068620800000000e9bf0300004d8b6d004d8b65004c3b25cd04000075064d8b6d10eb15488d64243848b87850620800000000488b5d08ff2341554c8b6c245041f6c50175464d8b5d004d8b65084d8b134c3b158904000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750c49bd00d6650800000000eb194d8b6d004d8b65004c3b25250400000f85fd0200004d8b6d104155498b1e498b46084d8b4610ff15000400004989c641564c8b7424104983fe037513488b54240848b810d6650800000000ff12eb004c8b7424104983fe037526ff74240848ba08bf640800000000488b442408ff15b1030000488b1424ff12488d642408eb00ff3596030000488b44240848bb50d665080000000049b868d665080000000049b988d76508000000004c8b542420ff15600300004989c641564c8b7424184983fe037513488b54241048b8d8d7650800000000ff12eb004c8b7424184983fe037526ff74241048ba08bf640800000000488b442408ff1511030000488b1424ff12488d642408eb0049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849be5864af09000000004d8975004c8b6424784d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24084d895e104d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb864af09000000004c8933488b442410ff15110200006a016a016a014c8b7424204d8b2e4d89ec4983fd03751c4c8b6c24184d8b6d004d89e6488904244c896c24084c89742410eb3b4c8b7424184d8b066a016a016a01488b9c24a80000004c8b9424a00000004989e1ff15af010000415c415d415e4c8924244c896c24084c89742410ff3424ff742410ff7424204c8b7424584983fe037513488b54245048b828e9650800000000ff12eb004c8b7424584983fe037526ff74245048ba08bf640800000000488b442418ff1546010000488b1424ff12488d642408eb00488b442410488b5c24084158488d6424104c8b4c24704c8b5424684c8bac24980000004c8ba424900000004c8b9c24880000004c899c24880000004c89a424900000004c89ac24980000004881c480000000e972fbffff488d64244048b87850620800000000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15ad00000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64243848b8b86c620800000000488b5d08ff234d8b6d004d8b65004c3b254000000075094d8b6d10e9e5fbffff488d64243848b87850620800000000488b5d08ff23f400000000000000|@7176,1,@18310,@15124,@15124,@12100,@13497,@12181,@12100,@13409,@7188,@12100,@13509,@15128,@15128,@15124,@15124,@13344|215,0,@788 258,0,@621 370,0,@6956 447,0,@6957 476,0,@5103 521,0,@6959 531,0,@6960 541,0,@6966 583,0,@6968 612,0,@5103 764,0,@13222 857,0,@13223 1018,0,@7048 1047,0,@5103 1173,0,@621 1283,0,@828 1330,0,@621 13219:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@18032| 13220:D3,32|483b65187305ff5558cd0948b878d6650800000000488b5d08ff23f400000000|@6965,1,@18033|13,0,@6961 13221:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@6967,1,@18034| 13222:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d897500c3f4|@6970,1,@18035|36,0,@105 13223:D4,32|483b65187305ff5558cd05488b5a0849b850d6650800000000ff2519000000f4|@6972,1,@18129,@13224|17,0,@6959 13224:D17,2448|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9aa000000909090e9a9000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a9000000909090e9ab000000909090e905050000909090e904050000909090e903050000909090e905050000909090e918060000909090e90b070000909090e90a070000909090e90c070000909090e9b5070000909090e9b4070000909090e9b3070000909090e9b2070000909090e9b1070000909090e9b0070000909090488d642410eb05488d642410eb0e4c8b3424e924080000488d642410eb05488d642410eb0e4c8b3424e98c070000488d642410e967040000ff7008ff7010ff70184c8b7424084d8b264d89e54983fc0b0f857f0100004d89f64d89f541ff76084d89ed4d8b75104d89ed41ff75184c8b6c24304d8b651049c7042403000000498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c8b6424284c8963104d89ed4c896b0849bd306faf09000000004c892b498d47d8483b45107306ff5550ca08404989c748c740f8040000004c8b6c24104c8968184c8970104c8b7424204c89700848c7000f000000ff154a0800004989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424304c8973104c8b7424384c89730849be806faf09000000004c8933498d47d8483b45107305ff5550cd084989c748c740f8040000004c8b7424184c8970184c8b7424084c8970104c8b7424284c89700848c7000f000000ff15c40700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424104c8b2c244d896e08488d64243049c7060b000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f64983fd190f85a20100004d89f641ff7608488b442418488b5c2428ff15360700004989c64156488b0424ff151f0700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849c70601000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89336a016a0148bab8d8650800000000488b4424404c8b44241849c7c1010000004989e2ff1258415d4d8d77d84c3b75107306ff5550ca01204d89f749c746f8040000004c8b6424104d8966184d896e104c8b2c244d896e08488d64243849c7060f00000041564883f8017507415ee993000000ff15470600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017504415eeb334d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b442410488b5c2420ff15830500004989c64156488b0424ff156c0500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424204d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424284c89730849be8837b009000000004c8933488b442410ff15cb0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b2c244d896e08488d64243049c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410eb05488d642410e91b0200004c8b7008ff70104c8b68184983fd010f85f90000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b2c244d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24104c896b0849bdd837b009000000004c892b4c89f0ff159c0300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424184d896e0849c70617000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c34c8b40086a016a0148bab8d8650800000000488b442418488b5c241049c7c1030000004989e2ff12488b0424ff7424084883f801750b415e4883c420e99b000000ff15e30200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017508415e4883c420eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c420498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410e9b60000004c8b7008ff70104c89f0488b5c2410ff15010200004989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424104c8973104c8b7424184c89730849be2838b009000000004c8933488b442408ff15b20100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410eb05488d642410eb05488d642410eb05488d642410eb05488d64241048c7c001000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0575114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037536488b5c24084c8b0424ff15d80000004989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0575114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037536488b5c24084c8b0424ff154f0000004989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f40000|@7036,1,@18131,@13320,@13320,@12181,@13330,@13338,@12181,@12181,@13339,@13340,@13342,@13343,@13318,@12181,@12181|381,0,@13225 503,0,@13226 823,0,@6973 1271,0,@13315 1568,0,@13316 1704,0,@6973 2032,0,@13317 13225:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18036|16,0,@6971 13226:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18037|16,0,@6971 13227:D23,4488|488dbc2400ffffff483b7d187306ff5560ca090741514152ff30ff7008ff701041ff3041ff700841ff701041ff701841ff702041ff702841ff703041ff70384c8b6c24284d89ee4983fd0175054989deeb0f4889d84c89f3ff15da1100004989c641564c8b7424684983fe05750949c7c503000000eb0749c7c5010000004c8b7424404d8b264983fc0f752a4983fd0175244d89f64d8b66084d89f64d8b6e104d89f64d8b76184d89e349c7c201000000e96a0e000049c7c6010000004983fe0175164c8b7424184983fe0175094c8b3424e97f0c0000eb22488d6424604d8b36415d49c74500010000004d89750848c7c0010000004883c408c34c8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849be2082af09000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424504d8966104c8b6424584d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be8082af09000000004c8933488b442448ff15761000004989c641564c8b74246041f6c60175454d8b264d8b6e084d8b1c244c3b1d4c10000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e98b0a00004d8b364d8b2e4c3b2de80f000075064d8b4610eb18488da4248000000048b87850620800000000488b5d08ff2348c7c3010000004c8b74243041f6c60175394d8b66084989dd4983c5027118488da4248000000048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc14983f80174144c8b7424784983fe01750949c7c0d1070000eb00488b0424ff15510f00004989c66a016a016a014d8b2e4d89ec4983fd0775244c8b7424204d8b3648c70424030000004c8b6c24184c896c24084c89742410e9860000004d89e54983fc0375204d8b76084d8b6ef849c1e50849c1ed074983cd0149c7c401000000e97c0800004983fd0575384d8b4608488b442418488b5c24484c8b4c2420ff15c80e00004989c54c8b7424204d8b3648c70424010000004c896c24084c89742410eb1f4c8b7424204d8b3648c70424010000004c8b6c24184c896c24084c897424104c8b2c24ff7424084c8b6424184d8d77b84c3b75107306ff5550ca00304d89f749c746f8080000004c8b5c24384d895e384d8966304d896e284c8b6c24504d896e204c8b6c24584d896e184c8b6c24604d896e104c8b6c24684d896e084c8b2c244d892e41566a016a014c8b7424604983fe030f85f1010000488b44244848c7c303000000ff15f70d00004989c64d8b2e4983fd010f85480100004d8b66084d89e541f6c40175214d8b64240841f6c401740949c7c403000000eb0749c7c4010000004983f402eb0749c7c4010000004983fc030f85090100004d8b66104d8b75004d8b5d084d8b2b4d8b5b084c8b5424184d8b124983fa190f85870000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d892a4d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d89750041f6c3017402eb0a49bca8946208000000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb5b4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8946208000000004d8966104d896e0849c70601000000eb004156488b442470ff158a0c00004989c641566a016a014c8b6c24184d8b75004983fe0175434d89ed4d8b65084d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375194d89ed4d89ed41ff751041ff7608ff7424786a01e9a503000049be08d96508000000004d8b2e4c892c244d8b76084c89742408e9f00000004c8b7424104c89342448c744240801000000415d415c4d8b75284983fe010f8588000000488d6424384c8b7424184983fe037571f604240175544c8b34244d8b1e4d89f64d8b7608488d6424084d8b1b4983fb03751d488d6424404983fe01750949c7c603000000eb0749c7c601000000eb0c488d64244049c7c6010000004983fe037402eb0c488d642418eb1c488d6424484c8b342449c70603000000488d642418eb0f488d642460eb08488da424980000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c70619000000415d4d8965004d89750848c7c0010000004883c408c3415d415e41f6c5010f859b000000488d642410498b5d004d8b6d0841f6c501753b4c8bb4249000000049c706030000006a016a01488b442420488b9c24b00000004989e0ff15ce0a0000415d415e4c892c244c89742408e9b50100004d8b2e4983fd05753f498b5e084c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff157e0a0000415d415e4c892c244c89742408e96d0100004989deeb61488d6424104d8b2e4983fd05753c498b5e084c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff15240a0000415d415e4c892c244c89742408eb124c8b7424104c89342448c744240801000000e918feffff41f6c6010f85a60000004d8b264d8b6e084d8b14244d89d34983fa0175654d8b5424084d8b5c241041f6c20175494d8b224d8b52084983fa0175374d8b134983fa05752c4d8b5b104983fb01750949c7c303000000eb0749c7c3010000004983fb03750c49c7c403000000e91a010000eb00e9ba00000049c7c401000000e9a60000004983fb0575254d8b6424104983fc01750949c7c403000000eb0749c7c4010000004983fc037402eb02eb72eb5c49c7c6010000004983fe0375384c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff1510090000415d415e4c892c244c89742408eb124c8b7424104c89342448c744240801000000e9effeffff4d89ee483b65187306ff5558ca0840e9e0feffff49c7c603000000eb8e4983fc0375ddebef41f6c401754c4d8b14244d8b5c24084d8b0a4983f90575294d8b52104983fa01750949c7c203000000eb0749c7c2010000004983fa03750949c7c403000000eb184d89dc483b65187306ff5558ca0870ebae49c7c401000000eb9df644240801756d4c8b6c24084d8b75004d89ed41ff75084d8b2e4983fd017539498b4610ff15380800004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb8c415e4156f60424010f85d30000004c8b3424498b064d89f64d8b760841f6c601754b498b1e41ff7608ff15b70700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004c892c24483b65187303ff5558eb97488d642410488b5c2420ff15610700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442448ff151e0700004989c64d8b2e4983fd0575164c8b6c24084d8b6d004983fd0375074c8b6c2478eb3b4c8b742408eb18488da424f800000048b820d9650800000000488b5d08ff234c8b2c244c896c2410488d6424084c897424104883c408e9e1fbffff4983fd01750949c7c501000000eb6c4d8b5d004d8b65084d8b134983fa0175064d8b5b08eb114d89e5483b65187306ff5558ca0060ebc941f6c301752a4d8b0b4d8b53084d8b094983f905750949c7c303000000eb184d89d3483b65187306ff5558ca0078ebd049c7c3010000004983fb03751e49c7c5030000004983fd037502eb0a49bea894620800000000e952ffffff4d89e5483b65187306ff5558ca0060e95affffff4d3be5720949c7c501000000eb2a4f8b5ca6fc4983fb0375544d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d004983fd01740e49c7c1010000004c8b6c2450eb414c8b7424204d8b3648c70424030000004c8b6c24184c896c24084c89742410eb1b4d89e34983c3024d89dc483b65187306ff5558ca0070e978ffffffe954f7ffff41f6c50175394d8b5d084d89cc4983c4027118488da4249800000048b8d006620800000000488b5d08ff234d89dd4d89e1483b65187306ff5558ca0062ebc14c8b6c24204d8b6d00ff74243041554d89f0488b442428488b5c24584c8b542470ff15200500004989c648c70424010000004c8974240848c744241001000000e977ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1de204000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4248000000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d7504000075094d8b4610e91af5ffff488da4248000000048b87850620800000000488b5d08ff2341f6c601752b4d8b264d8b6e084d8b24244983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebcf49c7c6010000004983fe030f8563f3ffff488d6424084c8b6c24084d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849bed082af09000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104c8b6424504d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be3083af09000000004c8933488b442440ff15440300004989c64c8b2c244d8b6500488d6424084d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424104d8965304c8b24244d896528488d6424084c8b24244d896520488d6424084c8b24244d896518488d6424084c8b24244d896510488d6424084c8b24244d896508488d6424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8b6c240849c74500010000004d89750848c7c0010000004883c418c34983fb01750c49c7c303000000e98e0000004d8b034d8b4b08498b304889f7488b164883fa117571488b7608488b364883fe01750948c7c603000000eb0748c7c6010000004883fe03754e4989f84d8b40084d8b40084d3bc275354d89d04983c0027115488d64247048b8d006620800000000488b5d08ff234d89c24d89cb483b65187306ff5558ca007ce970ffffff49c7c301000000eb0749c7c3010000004983fb03750a4c8b5c2420e92301000049c7c6010000004983fe03740949c7c601000000eb5b4d8b65004d89e64983fc1175214d8b75084d8b2e4983fd03750b4d8b6e084c8b742428eb3d49c7c601000000eb324983fe0d75204d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000e977f0ffffebf941f6c6010f858c0000004d8b1e4d8b66084983fd01754a4d89de4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb9d4d89eb4983eb027115488d64247048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e96affffff488d64247048b8c89d620800000000488b5d08ff234983fc0175184983fb01750949c7c403000000eb0749c7c401000000eb464d8b04244d8b54240841f6c3017530498b3b4d8b4b084d8b4008488b3f4c3bc775144d89cb4d89d4483b65187306ff5558ca0078ebac49c7c401000000eb0749c7c4010000004983fc0375194c3b742408750949c7c603000000eb0749c7c601000000eb0749c7c601000000e955fefffff40000000000|@6978,1,@18042,@12181,@15118,@15118,@13233,@13247,@13248,@13249,@13250,@13253,@13283,@13283,@13292,@13303,@13304,@13310,@13313,@15118,@15118,@12181,@13232|327,0,@13228 420,0,@13229 542,0,@788 586,0,@621 641,0,@105 1240,0,@1098 1360,0,@1098 1491,0,@6975 2773,0,@6976 2948,0,@1098 3151,0,@105 3352,0,@828 3400,0,@621 3561,0,@13230 3654,0,@13231 3979,0,@105 4281,0,@105 4325,0,@1158 13228:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d897500c3f4|@6974,1,@18038|36,0,@105 13229:D4,32|483b65187305ff5558cd05488b5a0849b828a0620800000000ff2519000000f4|@6972,1,@18039,@13224|17,0,@1177 13230:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d897500c3f4|@6974,1,@18040|36,0,@105 13231:D4,32|483b65187305ff5558cd05488b5a0849b828a0620800000000ff2519000000f4|@6972,1,@18041,@13224|17,0,@1177 13232:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18125| 13233:D9,976|483b65187306ff5558ca0907504150415141526a016a016a016a016a01544883042410ff7424404889d848c7c3010000004c8b44244049c7c10100000049c7c201000000ff15c6030000ff3424ff7424104c8b6424204983fc01750f48bb48c2620800000000e9be00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64244848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d100300007c15488d64244848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f8555020000418066ffbf4c89f3488b4424404c8b44243849b9b0d9650800000000ff15c50200004989c641564c8b6424304d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15220200000f87bd0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424404c89f34983fe017d15488d64245848b83060620800000000488b5d08ff2348c7c001000000ff15b50100004c8b6c24184d89ee4983fd0175054989c6eb0c4c89f3ff15910100004989c64156488b442418ff15790100004989c64c8b6424684c8b5c24704d8d6fb84c3b6d107306ff5550ca00584d89ef49c745f8080000004d895d384d89653049c74528030000004d8975204c8b34244d897518488d64240849be28a06208000000004d8975104c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15cd0000004989c64c8b6c2460498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424104c89700848c7000f0000004883c440c21000488d64245048b8f807620800000000488b5d08ff234d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64244848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e95efdfffff4000000000000ffffffffffffff01ffffffffffffff01|@6982,1,@18044,@13236,@13237,@13238,@13239,@13240,@13235|94,0,@1447 143,0,@105 193,0,@1448 309,0,@6979 353,0,@1396 560,0,@731 706,0,@1177 872,0,@117 916,0,@105 13234:D3,72|483b65187305ff5558cd094989c6498d47d8483b45107306ff5550ca08404989c748c740f8040000004889581849bdc0d96508000000004c8968104c89700848c7000f000000c3f4|@6981,1,@18043|47,0,@6980 13235:D3,904|483b65187306ff5558ca09074d89cc4c89d74883f801750c49c7c301000000e9610200004c8b30488b40084d8b1e4d8b56084d8d77e84c3b75107306ff5550ca891d4d89f749c746f80200000049895e0849c706010000004c8b6c24084d8b6df849c1e50849c1ed074983cd01493bdd721048b89051620800000000488b5d08ff234c8b6c24084d8b6c9dfc4983fd030f85d50000004883c302711048b8d006620800000000488b5d08ff234d89c54983c502711048b8d006620800000000488b5d08ff234d8d5fe84c3b5d107306ff5550ca89714d89df49c743f80200000049897b084d89334c89df4d8d5fe84c3b5d107306ff5550ca89314d89df49c743f8020000004d89430849c703030000004c8b5424184d8d77e84c3b75107306ff5550ca893c4d89f749c746f8020000004d8956084d891e4d89e84d89e14c8b6c24204d89f44c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e995feffff4883c302711048b8d006620800000000488b5d08ff234d89e14983c102711048b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca895f4d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca893f4d89f749c746f8030000004d8956104d895e084d892e4c8b5c24204d8d6fe84c3b6d107306ff5550ca895b4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca89334d89f749c746f8020000004d89660849c706010000004c8b5c24184d8d67e84c3b65107306ff5550ca896b4d89e749c74424f8020000004d895c24084d8934244c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e97bfdffff40f6c701753e4c8b274c8b77084d8d6fe84c3b6d107306ff5550ca80584d89ef49c745f8020000004d895d084d8965004d89eb4c89f7483b65187306ff5558ca8008ebbc4c8b74242049c7c40100000041f6c601753d4d8b0e4d8b6e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89ee483b65187306ff5558ca0058ebbd4c8b6c241849c7c60100000041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8971084d89014d89ce4d89d5483b65187306ff5558ca0078ebbc4c8b6c24104d895d004d8965084d89751048c7c001000000c22000f400000000|@6989,1,@18056|116,0,@628 158,0,@105 183,0,@105 371,0,@105 396,0,@105 13236:D3,128|483b65187305ff5558cd01a80175664c8b30488b40084d8b2e4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18045| 13237:D3,128|483b65187305ff5558cd01a80175674c8b30488b40084d8b6e084d8b66104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8b9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@18046| 13238:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18047| 13239:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060300000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18048|76,0,@105 13240:D4,120|483b65187306ff5558ca09034d8d77d84c3b75107306ff5550ca09034d89f749c746f8040000004d8946184d894e1049895e0849bd888faf09000000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be2095af09000000004c8933ff251e000000f40000000000|@6988,1,@18055,@12181|53,0,@13241 97,0,@13245 13241:D4,392|483b65187305ff5558cd054989c6524d8b264d89e54983fc110f85b80000004d8b5e084d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb030f858e0000004d89e64d8b6e084c8b34244d8b5e084d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64240848b89051620800000000488b5d08ff234d89e6488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd0f0f85960000004d8b6e104d8b65004983fc1175204d8b6d084d8b6d004983fd07750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037554498b460841ff76184c8b4c24084d8b411848c7c301000000ff15660000004c8b742408498b5610488b1c24ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642408eb05488d64240848c7c001000000c3f4000000|@6986,1,@18051,@13242|119,0,@628 13242:D4,384|483b65187306ff5558ca090353415041514883f801750d488d64241848c7c001000000c34c8b30ff7008498b0641ff76084c8b4424184d8b68f849c1e50849c1ed074983cd014c8b7424204c89f34d3bf57215488d64242848b89051620800000000488b5d08ff234889db4d89c04d8b7498fc4983fe037533488d6424084889db4883c3027115488d64242048b8d006620800000000488b5d08ff23584d89c04159488d642410e954ffffff498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849bef092af09000000004c8933ff15b60000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff23488b4424084c8b4424184c8b4c2410e8bafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f4000000000000|@6987,1,@18052,@12181|90,0,@628 142,0,@105 209,0,@13243 292,0,@105 13243:D4,272|483b65187305ff5558cd054c8b304983fe190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15e30000004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b5208ff22f40000|@6985,1,@18049,@13244| 13244:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b860da650800000000488b5d08ff23488d64240848c7c001000000c3f400000000|@742,1,@18050,@12181|160,0,@6983 13245:D4,272|483b65187305ff5558cd054c8b304983fe190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15e30000004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b5208ff22f40000|@6985,1,@18053,@13246| 13246:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b860da650800000000488b5d08ff23488d64240848c7c001000000c3f400000000|@742,1,@18054,@12181|160,0,@6983 13247:D3,728|483b65187305ff5558cd014c8b304d89f54983fe1f7509488b4010e9e0ffffff4d89ee4983fd0b75244c8b7010ff70184c89f0e8c8ffffff4c8b304983fe057506488d642408c358e9b3ffffff4983fe2975224c8b68084c8b70104983fe01750949c7c601000000eb1648b8a894620800000000c348b8a894620800000000c341f6c50175314d8b5d084d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc94983fe010f8c8d0000004983fe017d02eb754c3b35000200007f6c4c89f04883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb2e4d89e34983eb10eb2048b870d5640800000000488b5d08ff2348b828dc650800000000488b5d08ff234d3bdc751e49c7c40100000049c7c20300000049c7c30100000049c7c101000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca0078ebb94d3bce0f8da30000004d89d04d0bc44981fa01010000755649d1e84c89df48d1ef4588443d004c89ca4883c202711048b8d006620800000000488b5d08ff234c89de4883c60249c7c00100000048c7c7030000004989d14989f34989fa4d89c4483b65187306ff5558ca007eeb924c89ca4883c202711048b8d006620800000000488b5d08ff234b8d7c12ff4c89de4989d14989f34989fa4d89c4483b65187306ff5558ca007ee954ffffff4983fc017502eb0b49d1ec49d1eb4788641d00418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244d89e6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70005000000c3f400000000000000ffffffffffffff01|@6992,1,@18057|108,0,@1098 119,0,@1098 149,0,@105 320,0,@5275 336,0,@6990 470,0,@105 542,0,@105 13248:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b28488b4008f6c301755e4c8b33488b5b084d8b264983fc0575184d8b6d004983fd057502eb0a49bea894620800000000eb004156e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f4000000000000|@4547,1,@18058|33,0,@4545 89,0,@1098 155,0,@4545 13249:D3,152|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b28488b4008f6c301754c4c8b33488b5b084d8b65004983fc0575054d89eeeb004156e8a8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f4|@4547,1,@18059|33,0,@4545 137,0,@4545 13250:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@742,1,@18060,@13251| 13251:D4,576|483b65187305ff5558cd016a016a014889e3ff1540020000415e415d4983fe037f0b48b8a894620800000000c34983fe010f8c8f0000004983fe017d02eb774c3b35f20100007f6e4c89f04883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b870d5640800000000488b5d08ff2348b828dc650800000000488b5d08ff234d3bd3751e49c7c30100000049c7c10300000049c7c20100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc60f8da20000004c89cf490bfb4981f901010000755548d1ef4c89d648d1ee41883c344c89c14883c102711048b8d006620800000000488b5d08ff234c89d24883c20248c7c70100000048c7c6030000004989c84989d24989f14989fb483b65187306ff5558ca007feb934c89c14883c102711048b8d006620800000000488b5d08ff234b8d7409ff4c89d24989c84989d24989f14989fb483b65187306ff5558ca007fe955ffffff4983fb017502eb0a49d1eb49d1ea47881c1441806424ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334d89de498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c70005000000c3f4ffffffffffffff01|@6993,1,@18061,@13252|36,0,@1098 184,0,@5275 200,0,@6990 332,0,@105 404,0,@105 13252:D4,872|483b65187305ff5558cd094989c6534d8b2e4c8d25080000004f8d64acfc41ffe4e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9a6000000909090e93c010000909090e973000000909090e944020000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e92f020000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e911020000909090e903000000909090415d49be60fe6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3498b461041ff76186a016a014889e3e8f8feffffff3424ff7424106a016a01488b4424304889e3e8e0feffff415b415e4c8b6c24084d89ec4d3beb75394c8b2c244983fd03488d6424087502eb0749c7c6010000004c8b6c24204d89e44d896500488d6424084d89750848c7c0010000004883c420c3488d642428415d49be60fe6208000000004d8b264d8965004d8b76084d89750848c7c001000000c34d8b760841f6c6017405e9e600000041f6c6017415488d64240848b808ef620800000000488b5d08ff234d0fb66eff4e8d2c6d010000004981e5ff0100004983fd01750949c7c503000000eb0749c7c5010000004983f5024983fd030f849300000041f6c6017415488d64240848b808ef620800000000488b5d08ff23498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f854620800000000ff152c0100004989c541f6c5017415415e4d892e49c746080300000048c7c001000000c3488d64240848b80855620800000000488b5d08ff23415d49be60fe6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3415d49be60fe6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3498b46105be929fdffff4d8b66084d8b76104983fe01750c49c7c5010000004d89e6eb23415d49be60fe6208000000004d8b264d8965004d8b76084d89750848c7c001000000c341f6c60175364d8b5e084d89ec4983c4027115488d64240848b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc4415e4d892e49c746080100000048c7c001000000c3f40000|@6994,1,@18062,@10599|213,0,@1823 371,0,@1823 430,0,@1711 513,0,@1711 582,0,@651 633,0,@652 651,0,@1823 686,0,@1823 757,0,@1823 814,0,@105 13253:D8,1464|488dbc2458ffffff483b7d187306ff5560ca09035341504151ff30ff7008ff7018ff7020ff70284c8b6830ff70384d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41566a016a016a01ff742440488b44246848c7c30100000049c7c0010000004c8d4c24084c8b542420ff1570050000ff3424ff7424104c8b6424204983fc01750f49bc48c2620800000000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64247848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2dc20400007c15488d64247848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017516418066ffbf4d89f449c7c6010000004c8b6c2448eb404d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64247848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eba441f6c50175364d8b55084d89f34983c3027115488d64247848b8d006620800000000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc44d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bb90a8af09000000004d891e498d5fd8483b5d107306ff5550ca00704989df48c743f8040000004c8963184c896b104c89730849bec0a9af09000000004c8933488b442458ff156d0300004989c64156488b442478488b5c2448ff15500300004989c64156488b442410488b1c24ff15340300004989c64156488b94248000000048c7c001000000ff124989c64156488b94248800000048c7c001000000ff124989c641564c8b7424304d89f54983fe0175074c8b742420eb324d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d89ed4d896e0849c7061f00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b6c2478eb0e488b442478ff154c0200004989c54c8b7424584d8b1e4d8d77b84c3b75107306ff5550ca00284d89f749c746f8080000004c8b5424604d89d44d8956384d895e304c8b5c24684d895e284c8b5c24204d895e204d896e1849bd28a06208000000004d896e104c8bac24800000004d89eb4d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084c8b7424084d89f24d8975004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d89e44d89e14d89661849bc48fe6208000000004d8966104c8b6424104d89660849c7060f0000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d89d24d8954240849c70424050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f80200000049c74208010000004d89224d8d67b84c3b65107306ff5550ca006e4d89e749c74424f8080000004d89c94d894c243849c74424300100000049c7442428010000004c8b4c24684d894c24204d8954241849ba28a06208000000004d895424104d89db4d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b1c244d891e488d6424204d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24684d8965004d89750848c7c0010000004881c480000000c3f400000000000000ffffffffffffff01|@6996,1,@18066,@13258,@13259,@13260,@12181,@13257|148,0,@1447 197,0,@105 247,0,@1448 391,0,@105 451,0,@105 561,0,@13254 613,0,@13255 978,0,@1177 1099,0,@1822 1280,0,@1177 13254:D3,264|483b65187305ff5558cd054c8b304983fe110f85e10000004c8b70084d8b264d89e54983fc0775484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd01757b4d8b6e084c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f4000000000000|@6995,1,@18063|153,0,@628 13255:D4,512|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15d00100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe110f85e10000004c8b70084d8b264d89e54983fc0775484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd01757b4d8b6e084c8b62184d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f40000|@6985,1,@18064,@13256|405,0,@628 13256:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b860da650800000000488b5d08ff23488d64240848c7c001000000c3f400000000|@742,1,@18065,@12181|160,0,@6983 13257:D9,3656|483b65187306ff5558ca0907534150415141524883f8017536488d642408415d49bec0866208000000004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c410c208004c8b30ff70084d8b264d89e54983fc010f8599030000498b46084d8b6e10a8010f85390200004c8b304c8b60084983fc010f85230200004d8b65004983fc050f85130200004d8b65104983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ef0100004d8b75084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424184d89650849c7450001000000498d5fe8483b5d107306ff5550ca01604989df48c743f80200000048c74308010000004c892b4d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004c8b6424204d89650849c74500010000004d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89284d8d4ff04c3b4d107306ff5550ca09414d89cf49c741f8010000004d89316a016a016a014c8b742448ff74242041564c8d542410ff15ee0c0000ff3424ff742410ff742420488b5c24504883c3027115488d64245848b8d006620800000000488b5d08ff234c8b4424484983c0027115488d64245848b8d006620800000000488b5d08ff236a016a016a014c8b7424784156488b4424504c8d4c24084c8b542458e8fafdffff415c415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084c8b6424104d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d6424184c8b6c24284d895d004d8965084d89751048c7c0010000004883c440c20800eb00e916080000488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424184983c0027115488d64242848b8d006620800000000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e8f1fcffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c208004983fd050f857601000041ff76084d8b76104983fe0175134c8b34244d8b2e49c7c601000000e9a5020000488d642408488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424184983c0027115488d64242848b8d006620800000000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e871fbffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c20800488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424184983c0027115488d64242848b8d006620800000000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e821faffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c208004983fd01753e41564c8b7424304983c6027115488d64243848b8d006620800000000488b5d08ff234c8b6c24084d8b6d0049c7c40100000049c7c301000000e9c10000004d89eb4983eb024d89ea4983ea024c89e94883e9024c8b24244d8b6424084989c949c1e9034983c90149d1e94f0fb6240c4e8d2465010000004883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23e14983fc01750949c7c403000000eb0749c7c4010000004983f4024983fc0375274d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d891424eb034d89f44d89dd4d89e6483b65187306ff5558ca0060e9fbfeffff4d3bdd0f82db0000004983ec014c8b4424284d03c47115488d64243848b8d006620800000000488b5d08ff236a016a016a014c8b6c245841554c89f3488b4424304c8d4c24084c8b542438e8ddf7ffffff3424ff742410ff7424204c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d006620800000000488b5d08ff234d89ed4d89750048c7c00100000048c7c3010000004c8b4424404c8b4c2460ff15000600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9af0000004d89d94983c1024c8b5424084d8b52084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64243848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e96dfeffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15cc0400004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e1049c746080100000049c706030000004156488b442440488b5c2470ff15770400004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d64240841564c8b6c24184d89ee4983fd0175054989c4eb0c4c89f3ff15220400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424084d89750849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24104d895e084d892e4c8b6c24604c8b1c244d895d00488d6424184d8965084d89751048c7c0010000004883c460c2080041f6c601754c4d8b264d8b6e084d8b1c244983fb05752a4d8b6424104983fc01750949c7c403000000eb0749c7c4010000004983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0140ebae49c7c6010000004983fe030f85d00100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004c8b6c24204d896e0849c706010000004d8d47e84c3b45107306ff5550ca09404d89c749c740f80200000049c74008010000004d89306a016a016a014c8b742448ff742420415649c7c1010000004c8d542410ff1576020000ff3424ff742410ff742420488b5c24504883c3027115488d64245848b8d006620800000000488b5d08ff234c8b4424484983c0027115488d64245848b8d006620800000000488b5d08ff236a016a016a014c8b7424784156488b4424504c8d4c24084c8b542458e8aaf3ffff415c415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084c8b6424104d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d6424184c8b6c24284d895d004d8965084d89751048c7c0010000004883c440c20800488b5c24204883c3027115488d64242848b8d006620800000000488b5d08ff234c8b4424184983c0027115488d64242848b8d006620800000000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e8a8f2ffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c20800f4|@7001,1,@18072,@13263,@13264,@13265,@12170,@13266,@13263|34,0,@998 439,0,@105 471,0,@105 704,0,@105 736,0,@105 1088,0,@105 1120,0,@105 1424,0,@105 1456,0,@105 1768,0,@105 2033,0,@105 2125,0,@105 2369,0,@105 3079,0,@105 3111,0,@105 3337,0,@105 3369,0,@105 13258:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18067| 13259:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b28488b4008f6c30175624c8b33488b5b084d8b264d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f40000|@4547,1,@18068|33,0,@4545 159,0,@4545 13260:D5,480|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8a8dd650800000000488b5d08ff23ff30488b4008f6c3010f8591000000ff33488b5b08e8b7ffffff4989c641564c8b7424104d8b2e4983fd05753d4d89f64d8b6e104983fd01750949c7c503000000eb0749c7c5010000004983fd03751a4d89f64d8b76084d8b2e49c7c40100000049c7c301000000eb4b498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d6424084883c408c3488d64240848b8a8dd650800000000488b5d08ff234d3bdd724c4c89e34883fb017d15488d64241848b83060620800000000488b5d08ff2348c7c001000000ff15ec0000004c8b2c244d89ee4983fd017506488d642418c34c89f3488d642418ff25c30000004d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e905fffffff4|@6999,1,@18069,@13262,@13261|33,0,@6997 214,0,@6997 249,0,@731 442,0,@105 13261:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18071|32,0,@105 87,0,@1823 13262:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18070| 13263:D7,1464|483b65187306ff5558ca0907415041514152a8010f85e10000004c8b284d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e41564c8b74243041ff364c8b7424384d8b364983c6027115488d64242848b8d006620800000000488b5d08ff234c8b6c24384d8975004c8b4c2430488b4424084c8b4424184c8b542408ff15550500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e1049c746080100000049c706030000004156488b44241048c7c30100000049b848fe620800000000ff15f60400004989c64c8b64241049c7c501000000eb15488d64241848b8508a620800000000488b5d08ff2341f6c40175154d8b1c2441ff74240849c7c201000000e9e5020000f644242001740949c7c403000000eb0749c7c4010000004983f4024983ec014d03ec41557115488d64243848b8d006620800000000488b5d08ff23f6442428010f859e0000004c8b6c2428498b5d004c8b24244983ec027115488d64243848b8d006620800000000488b5d08ff234983fc017d15488d64243848b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500010000004d8d47e84c3b45107306ff5550ca08604d89c749c740f8020000004d89680849c700110000004c89f0ff15ce0300004989c6eb0041564c8b7424484d8b364e8d2c75010000004983fd01750f49be28de650800000000e9ad0000004d89ec4983c4044c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d4a0300000f878f0100004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d89264c8b6424484c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262d49d1ed43c6442e0145418066ffbf41564c8b7424104c89f34983fe017d15488d64244848b83060620800000000488b5d08ff2348c7c001000000ff15bb0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b6c24404d896e1849bd28a06208000000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424104d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24084d896e0849c706050000004c8b6c24184c8b1c244d895d00488d6424104d8965084d89751048c7c0010000004883c420c21000488d64244048b8f807620800000000488b5d08ff2341f6c30175674d8b0b41ff73084d8b014983f80575374d8b41104983f801750949c7c003000000eb0749c7c0010000004983f80375174d8b49084d8b0148c7c70100000048c7c601000000eb704d89d04983c0027115488d64244048b8d006620800000000488b5d08ff23eb374983ea014d03d57115488d64243848b8d006620800000000488b5d08ff23415b4d89d54d89dc483b65187306ff5558ca0070e95cfcffff41594d89c24d89cb483b65187306ff5558ca007ce943ffffff493bf072264989f84d89d14983e9014d03c17115488d64244048b8d006620800000000488b5d08ff23ebbc4889f34883c302498b51084889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c00200000048d1e948d3e04889c14883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f2024883fa0175054889faeb1e4889fa4883c2027115488d64244048b8d006620800000000488b5d08ff234889d94889ce4889d7483b65187306ff5558cac07fe925fffffff400000000000000ffffffffffffff01|@7004,1,@18076,@13268,@13269,@13270,@13267|98,0,@105 220,0,@1822 258,0,@1028 344,0,@105 395,0,@105 422,0,@6950 553,0,@7000 762,0,@731 858,0,@1177 1026,0,@117 1133,0,@105 1165,0,@105 1256,0,@105 1408,0,@105 13264:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18073| 13265:D3,240|483b65187305ff5558cd09a8010f85d20000004c8b20488b40084883fb017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09304d89f749c746f80400000049c74618010000004d8966104d896e0849c706170000004156e84affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18074|34,0,@6950 13266:D3,464|483b65187306ff5558ca09034d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e98e010000493bc50f8d850100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84eb0000004989de4983ee014d03f1711048b8d006620800000000488b5d08ff234983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff234883c3027115488d64240848b8d006620800000000488b5d08ff23e8befeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d006620800000000488b5d08ff23e874feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0aa6208000000004c8930c348b818e9640800000000488b5d08ff23f4000000|@7002,1,@18075|148,0,@105 170,0,@6950 276,0,@105 303,0,@105 377,0,@105 432,0,@1263 446,0,@5394 13267:D11,1744|483b65187306ff5558ca090753415041514152a80175124c8b28ff700849c7c601000000e99d030000f6442418010f85d10000004c8b742418498b5e08488b0424ff15d90600004989c6488d642408f6442408017528488d6424084c8b2c2441ff75004c8b2c244d8b6d0049c7c40100000049c7c301000000e99c000000488d642410f604240175674c8b2c244d8b6500488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450011000000498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018030000004c8968104c89700848c7000f000000c3488d64240848b8508a620800000000488b5d08ff23488d64242048b8e089620800000000488b5d08ff234d3bdd0f825d0100004154f6442418010f853b0100004c8b6c24184d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745001100000041554c89f0ff15ad0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b34244d897518488d64240849c745100100000049be28a06208000000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c00100000048c7c3010000004c8b442408ff15dc0400004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9c3000000488d64242048b8508a620800000000488b5d08ff234d89d94983c1024c8b14244d8b52084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9ecfdffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15940300004989c5eb004c8b24244d89e64983fc017509488d6424204c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c418c341f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424084983fe01751df644242001740949c7c603000000eb0749c7c6010000004983f602eb0749c7c60100000041564c8b6424204d8b34244e8d2c75010000004983fd01750f49bed0de650800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153d0200000f87ba0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262d49d1ed43c6442e0150418066ffbf41564c8b7424104c89f34983fe017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15c80100004989c6415648c7c3010000004c8b742440eb15488d64243848b8f807620800000000488b5d08ff2341f6c60175364d8b66084989dd4983c5027115488d64244848b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244848b83060620800000000488b5d08ff2348c7c001000000ff15340100004989c641564c8b7424204c89f34983fe017d15488d64245048b83060620800000000488b5d08ff2348c7c001000000ff15f70000004889c34883fb0175035beb12488b0424ff15d90000004889c3488d642408488b4424204c8b4424384c8b4c24304c8b542428e8d0f9ffff4989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004c8b24244d896620488d6424084c8b6424384d89661849c74610010000004c8b24244d896608488d6424104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c430c3f400000000000000ffffffffffffff01|@7008,1,@18082,@13274,@13275,@13276,@13277,@12170,@13278,@13279,@13273|247,0,@1028 268,0,@1025 479,0,@1177 626,0,@1028 777,0,@105 992,0,@105 1102,0,@7003 1309,0,@731 1362,0,@117 1402,0,@105 1449,0,@731 1502,0,@731 13268:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10a06208000000004c8930c3f400000000|@741,1,@18077|32,0,@105 87,0,@1176 13269:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@7005,1,@18078| 13270:D4,520|483b65187306ff5558ca09015341504883f8017506584883c408c3ff30ff7008488b442418488b5c2408ff15f00100004989c64c8b64240849c7c50100000041f6c401756c4d8b14244d8b5c24084d8b0a4983f905753a4d8b4a104983f901750949c7c103000000eb0749c7c1010000004983f903751a4d8b52084d8b0a49c7c00100000048c7c701000000e99b0000004d89ea4983c2027115488d64242048b8d006620800000000488b5d08ff23eb644983ed01488b5c24184903dd7115488d64242048b8d006620800000000488b5d08ff234d8d47d84c3b45107306ff5550ca08404d89c749c740f80400000049c74018030000004c8b6c24104d8968104d89700849c7000f000000584883c418e9ebfeffff4d89d54d89dc483b65187306ff5558ca0070e913ffffff493bf972264d89c24d89e94983e9014d03d17115488d64242048b8d006620800000000488b5d08ff23ebbe4889fa4883c202498b72084889f948c1e9034883c90148d1e9480fb6340e488d3475010000004889f94883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823f14883fe01750948c7c603000000eb0748c7c6010000004883f6024883fe0175054c89c6eb1e4c89c64883c6027115488d64242048b8d006620800000000488b5d08ff234889d74989f0483b65187306ff5558ca807fe928fffffff4000000|@7006,1,@18079,@13271|161,0,@105 198,0,@105 327,0,@105 479,0,@105 13271:D5,832|483b65187305ff5558cd0950f6c3010f85800100004c8b33ff73084d8b2e4983fd0575784d8b6e104983fd01750949c7c503000000eb0749c7c5010000004983fd03755841ff760848c7c00100000048c7c3010000004c8b04244c8b4c2410ff15fb0200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9060100004c8b7424084d89f54983fe017d15488d64241048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4c89e84d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e41564889c04883c0027115488d64241848b8d006620800000000488b5d08ff23488b5c2408e89efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64240848c7c001000000c341f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15700100004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608030000004d892e41564c8b7424084d8b3649c7c50100000049c7c4010000004d3be672604983ed01488b4424184903c57115488d64242048b8d006620800000000488b5d08ff23488b5c2410e8a3fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c418c34d89e24983c2024c8b5c24084d8b5b084d89e149c1e9034983c90149d1e94f0fb61c0b4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0175054d89ebeb1e4d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9ecfefffff4|@7007,1,@18080,@12170,@13272|177,0,@6950 330,0,@105 581,0,@105 794,0,@105 13272:D3,464|483b65187306ff5558ca09034d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e98e010000493bc50f8d850100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84eb0000004d89ce4983ee014c03f3711048b8d006620800000000488b5d08ff234983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff234883c3027115488d64240848b8d006620800000000488b5d08ff23e8befeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d006620800000000488b5d08ff23e874feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0aa6208000000004c8930c348b818e9640800000000488b5d08ff23f4000000|@7002,1,@18081|148,0,@105 170,0,@6950 276,0,@105 303,0,@105 377,0,@105 432,0,@1263 446,0,@5394 13273:D4,48|483b65187305ff5558cd094989c641f6c601750d498b064d8b4608ff252700000048c7c001000000c3f4000000000000|@7016,1,@18089,@13280| 13274:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18083| 13275:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18084|76,0,@105 13276:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060300000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18085|76,0,@105 13277:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10a06208000000004c8930c3f400000000|@741,1,@18086|32,0,@105 87,0,@1176 13278:D3,400|483b65187306ff5558ca09014d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e94b010000493bc50f8d420100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84a80000004d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c746180100000049895e1049bdc8e06508000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff234883c3027115488d64240848b8d006620800000000488b5d08ff23e801ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d006620800000000488b5d08ff23e8b7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0aa6208000000004c8930c348b818e9640800000000488b5d08ff23f4000000000000|@7002,1,@18087|175,0,@7009 209,0,@105 236,0,@105 310,0,@105 365,0,@1263 379,0,@5394 13279:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0e0650800000000c3f4000000|@1032,1,@18088|75,0,@7010 13280:D5,560|483b65187306ff5558ca09014150a8010f850c0100004c8b30ff70084d8b2e4983fd05754b4d8b6e104983fd01751bf6c301740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd0375194d8b76084c8b2bff73084d8b1e49c7c401000000e9bf000000f6c3010f85940000004c8b33488b5b084d8d6fe84c3b6d107306ff5550ca08404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608030000004d892e4156488b4424084c8b442410e822ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b810e1650800000000488b5d08ff2348ba90e165080000000058ff224983fb01753f4c89e04c89ebff150f0100004989c64156488b442410488b5c24084c8b442418e8a6feffff4889c34883fb017506584883c418c3584883c418ff25d40000004d89d94983e9024d89d84983e8024c89d94883e9024d8b56084889cf48c1ef034883cf0148d1ef4d0fb6143a4e8d1455010000004883e10f4883f97f720948c7c701000000eb1148c7c70200000048d1e948d3e74883cf014c23d74983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0375244d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8962084d8902eb034d89e24d89cb4d89d4483b65187306ff5558ca0078e902fffffff40000|@7017,1,@18090,@13282,@13281|276,0,@7012 292,0,@7015 13281:D3,216|483b65187305ff5558cd09a8010f85bc0000004c8b20488b40084d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706110000004d8d6fd84c3b6d107306ff5550ca09504d89ef49c745f80400000049c74518010000004d8965104d89750849c74500170000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049c74608030000004d892e4156e860ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@18092| 13282:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18091| 13283:D10,1760|483b65187306ff5558ca09035341504151ff30ff7008ff7018ff7020ff7028ff7030ff7038488b54244048c7c001000000ff124989c64156488b54244848c7c001000000ff124989c6415649c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bc50ebaf09000000004d8926498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849be00ecaf09000000004c8933488b442440ff15070600004989c549c7c4010000004c8b74242841f6c60175364d8b56084d89e34983c3027115488d64246048b8d006620800000000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebc44d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424110000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424584d8966104d896e0849c706230000004156488b442430ff15250500004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742440eb0e488b442440ff15b20400004989c64c8b6424284983c4027115488d64247048b8d006620800000000488b5d08ff234d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f80800000049c74538030000004d8965304c8b6424304d8965284c8b24244d896520488d6424084d89751849be28a06208000000004d8975104c8b7424404d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e41564c8b7424604d8b3649c7c50100000049c7c4010000004d3be60f82180100004155488b44243848c7c301000000ff15c6030000ff15b80300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48fe6208000000004d8966104d896e0849c7060f0000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b34244d897518488d64240849c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c00100000048c7c3010000004c8b442468ff15ec0200004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000e9af0000004d89e24983c2024c8b5c24604d8b5b084d89e149c1e9034983c90149d1e94f0fb61c0b4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0175054d89ebeb1e4d89eb4983c3027115488d64246848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e930feffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15b50100004989c4eb004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24104d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67b84c3b65107306ff5550ca00604d89e749c74424f8080000004c8b5c24184d895c243849c74424300300000049c7442428010000004c8b5c24304d895c24204d896c241849bd28a06208000000004d896c24104c8b6c24404d896c24084d8934244d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d8966084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424204c8b6c24304d8965004d89750848c7c0010000004883c448c3f4000000|@7019,1,@18096,@12170,@13288,@13289,@13290,@13291,@13287,@12181|113,0,@105 219,0,@13284 267,0,@13285 330,0,@105 635,0,@105 716,0,@1177 888,0,@1822 1240,0,@105 1583,0,@1177 13284:D3,136|483b65187305ff5558cd054c8b304983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@7018,1,@18093| 13285:D4,392|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15580100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@6985,1,@18094,@13286| 13286:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b860da650800000000488b5d08ff23488d64240848c7c001000000c3f400000000|@742,1,@18095,@12181|160,0,@6983 13287:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b88801630800000000c3f4000000|@1032,1,@18101|75,0,@1853 13288:D3,400|483b65187306ff5558ca09014d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e94b010000493bc50f8d420100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84a80000004d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c746180100000049895e1049bdc8e06508000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff234883c3027115488d64240848b8d006620800000000488b5d08ff23e801ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d006620800000000488b5d08ff23e8b7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0aa6208000000004c8930c348b818e9640800000000488b5d08ff23f4000000000000|@7002,1,@18097|175,0,@7009 209,0,@105 236,0,@105 310,0,@105 365,0,@1263 379,0,@5394 13289:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0e0650800000000c3f4000000|@1032,1,@18098|75,0,@7010 13290:D3,232|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d006620800000000488b5d08ff23e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@7020,1,@18099|161,0,@105 13291:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18100| 13292:D11,1728|483b65187306ff5558ca0901534150ff304c8b34244d8b2e4983fd1975554d89f64d8b760841ff762041ff7638ff7008ff7018ff7020ff7028ff7030ff7038488b54245048c7c001000000ff124989c64156488b54245848c7c001000000ff124989c6415649c7c6010000004c8b6c2430eb15488d64241848b840e3650800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bc20faaf09000000004d8926498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849bed0faaf09000000004c8933488b442450ff15be0500004989c6415649c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64247048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b44245848c7c3010000004c8b0424ff15510500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424504d8966184c8b6424084d8966104d896e0849c7060f00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742448eb0e488b442448ff15a60400004989c641564c8b7424684c89f34983fe0175074c8b742448eb0e488b442448ff15790400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b6424604d8965384c8b6424384d8965304c8b6424404d8965284d8975204c8b34244d897518488d64240849be28a06208000000004d8975104c8b7424504d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e41564c8b7424084c89f34983fe017d18488da4248000000048b83060620800000000488b5d08ff2348c7c001000000ff15a70300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60fe6208000000004d892e4156488b44244848c7c301000000ff155c0300004989c64156488b44247048c7c301000000ff153d0300004889c34883fb017504415deb12488b0424ff151e0300004989c5488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d89e34d89661849bc48fe6208000000004d8966104d896e0849c7060f0000004c8b5424584d8b2a4e8d2c6d010000004983fd01750f49bce818620800000000e9a30000004d89e94983c1024c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05610200000f873c0200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89e94d89d2498d7208498d7c240848d1e9f3a44983c51049d1ed43c6042c2d41806424ffbf4d8d6fb84c3b6d107306ff5550ca00584d89ef49c745f8080000004c8b5424604d89553849c745300100000049c74528010000004c8b5424684d8955204c8b14244d895518488d64240849ba28a06208000000004d8955104d8965084d8975004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706190000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24204d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d8965004d8d67b84c3b65107306ff5550ca00684d89e749c74424f8080000004d89db4d895c243849c74424300100000049c7442428010000004c8b5c24404d895c24204d896c241849bd28a06208000000004d896c24104c8b6c24504d896c24084d8934244d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d8966084c8b6c24184d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24684d8965004d89750848c7c0010000004883c478c3488da4248800000048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01|@7025,1,@18105,@13297,@13298,@13299,@13300,@13301,@13302,@13296,@12181|122,0,@7021 162,0,@105 268,0,@13293 316,0,@13294 381,0,@105 715,0,@1177 814,0,@731 877,0,@1823 1003,0,@1822 1050,0,@200 1302,0,@1177 1516,0,@1177 1699,0,@117 13293:D3,136|483b65187305ff5558cd054c8b304983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@7024,1,@18102| 13294:D4,392|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15580100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@6985,1,@18103,@13295| 13295:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b860da650800000000488b5d08ff23488d64240848c7c001000000c3f400000000|@742,1,@18104,@12181|160,0,@6983 13296:D3,264|483b65187306ff5558ca09014883f801750848c7c001000000c34c8b30488b40084d8b264d89c54983ed014c03eb711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09514d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d006620800000000488b5d08ff23e82fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@7026,1,@18112|50,0,@105 190,0,@105 13297:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18106| 13298:D3,232|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d006620800000000488b5d08ff23e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@7026,1,@18107|161,0,@105 13299:D3,256|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264989dd4983c502711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d006620800000000488b5d08ff23e833ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@7026,1,@18108|46,0,@105 186,0,@105 13300:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18109|76,0,@105 13301:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18110| 13302:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18111| 13303:D4,112|483b65187305ff5558cd01a80175554c8b30ff7008498b460848c7c301000000ff15620000004989c64156488b442408e8cbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000|@742,1,@18113,@13304| 13304:D6,1128|483b65187305ff5558cd0953a8010f85930100004c8b30ff70084d8b264d89e54983fc050f85e30000004d8b76084d89f54983c5027115488d64241048b8d006620800000000488b5d08ff234983fd010f8ca20000004983fd017d0a488d642410e9820000004c3b2df30300007f744c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017505e9030200004d89da4983ea10e9f2010000488d64241048b870d5640800000000488b5d08ff23488d64241048b828dc650800000000488b5d08ff234983fd010f8584000000498b460841ff76104c8b7424104c89f34983fe01750948c7c305000000eb034889dbe8c2feffff4989c66a016a014d8b2e4983fd0175134d8b6e084d8b76104c892c244c89742408eb0d48c70424010000004c89742408ff3424ff742410488b442420ff15100300004989c641564c8b7424384983fe057509ff742428e9b7000000eb4b49bea894620800000000eb10488d64240848b8a894620800000000c341564c8b7424084c89f04983fe017506584883c410c3488b5c2410e829feffff4889c358488d642410ff25a20200004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424104d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424104d896e0849c706010000004883c418e967fffffff604240175554c8b3424498b064d89f641ff7608ff15160200004989c64c3b35e4010000750949c7c603000000eb0749c7c6010000004983fe03740e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558eba5488d64240849c7c6010000004983fe030f8525ffffff488d64243049bea894620800000000e976ffffff4d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8db60000004d3bc675084c89cf490bfaeb034c89d74981f901010000755a48d1ef4c89de48d1ee41883c344c89c14883c1027115488d64241048b8d006620800000000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca007feb844c89c14883c1027115488d64241048b8d006620800000000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca007fe941ffffff4983fa017502eb0d4d89d649d1ee49d1eb4788341c41806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d89f54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049c74610010000004d896e0849c70605000000e962fdfffff40000010000e000000000ffffffffffffff01|@7027,1,@18114,@13306,@13307,@13305|62,0,@105 234,0,@5275 255,0,@6990 413,0,@1098 430,0,@1098 712,0,@1098 858,0,@105 935,0,@105 13305:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@742,1,@18119,@13251| 13306:D3,2024|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9ee000000909090e949010000909090e949010000909090e911020000909090e9ec020000909090e92b030000909090e92b030000909090e91b030000909090e923030000909090e923030000909090e950030000909090e9fb020000909090e949030000909090e9fe030000909090e9fe030000909090e90f040000909090e918040000909090e918040000909090e977040000909090e978040000909090e981040000909090ff7008ff7010488b4018e824ffffff4989c64c2335fa0600004156488b442410e80effffff4989c54c8b34244d23f54156488b442410e8f8feffff4989c6488b04244923c6488d642420c34c8b700841ff3641ff760841ff7618498b4620e8d0feffff4989c64156488b442418e8c1feffff4989c54c8b34244d23f54156488b442418e8abfeffff4989c54c8b34244d23f54156488b442418e895feffff4989c6488b04244923c6488d642430c348c7c001000000c34c8b7008ff70104c8b68184d8b6d004c8d25080000004f8d642cff41ffe4eb16eb1deb24eb2beb32eb39eb40eb47eb4eeb55eb5ceb634c8b2d18060000eb614c8b2d07060000eb584c8b2df6050000eb4f4c8b2de5050000eb464c8b2dd4050000eb3d4c8b2dc3050000eb344c8b2db2050000eb2b4c8b2da1050000eb224c8b2d90050000eb194c8b2d7f050000eb104c8b2d6e050000eb074c8b2d5d05000041554c89f0e8d3fdffff4989c54c8b34244d23f54156488b442410e8bdfdffff4989c6488b04244923c6488d642418c34c8b6808ff7010ff70184c8b70204983fd0175094c8b2d0a050000eb164983fd0375094c8b2df3040000eb074c8b2de20400004155498b064d8b760841f6c601752841ff36e863fdffff4989c64156488b442408e854fdffff4989c64c8b2c244d23ee488d642410eb08e83efdffff4989c54c8b34244d23f541564c8b742410498b064d89f64d8b760841f6c601752841ff36e815fdffff4989c64156488b442408e806fdffff4989c64c8b2c244d23ee488d642410eb08e8f0fcffff4989c54c8b34244d23f54156488b442420e8dafcffff4989c6488b04244923c6488d642428c34c8b7008ff7010ff70184c89f0e8b8fcffff4989c64156488b442410e8a9fcffff4989c54c8b34244d23f54156488b442410e893fcffff4989c6488b04244923c6488d642420c3488b05dc030000c348c7c001000000c3488b05c4030000c34c8b7008ff70104c89f0e85cfcffff4989c64c0b35a20300004156488b442408e846fcffff4989c6488b04244923c6488d642410c3488b4008e92dfcffff4c8b68084c8b70104d8b5d004d89dc4983fb0f75294d8b5d084983fb03750949c7c303000000eb0749c7c3010000004983fb0375094c8b2d39030000eb364983fc0d75294d8b6d084983fd03750949c7c503000000eb0749c7c5010000004983fd0375094c8b2d02030000eb074c8b2df10200004155498b064d8b760841f6c601752541ff36e8a2fbffff4989c64156488b442408e893fbffff4c8b34244c23f0488d642410eb08e880fbffff4989c6488b04244923c6488d642408c348c7c001000000c3ff7008488b4010e85cfbffff4989c6ff34244156e987010000488b4008e846fbffff4823056f020000c348c7c001000000c3ff70104c8b7018498b064d8b760841f6c601752841ff36e81afbffff4989c64156488b442408e80bfbffff4989c54c8b34244d23f5488d642410eb08e8f5faffff4989c64c2335130200004156488b442408e8dffaffff4989c6488b04244923c6488d642410c3488b4010e9c6faffff4c8b70084156ff35da010000e9ae0000004c8b70084c8b68104c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb39eb37eb35eb45eb4ceb53eb5a4c8b2d93010000eb584c8b2d82010000eb4f4c8b2d71010000eb464c8b2d60010000eb3d4c8b2d4f010000eb344c8b2d3e010000eb2b4c8b2d2d010000eb224c8b2d1c010000eb194c8b2d0b010000eb104c8b2dfa000000eb074c8b2de900000041554c89f0e817faffff4989c6488b04244923c6488d642408c3f64424080175324c8b742408498b064d89f641ff7608e8ecf9ffff4989c44c23642408415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175774c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd01750e498b4620e89cf9ffff4989c4eb324d89e54983fc05750e498b4608e885f9ffff4989c4eb1b4983fd0775094c8b2533000000eb0c498b4618e868f9ffff4989c44c23642408415d4c8924244c896c2408483b65187303ff5558eb82584883c410c3f4000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000c000000000010000a000000000010000a00000000001000080000000000100008000000000010000e000000000010000a000000000ffffff7fffffffff010000c000000000010000e000000000010000e0000000000100008000000000010000c000000000010000e0000000000100008000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000c000000000010000e000000000010000e000000000010000e000000000010000e0000000000100006000000000010000c000000000010000c000000000|@7028,1,@18115| 13307:D4,1832|483b65187305ff5558cd094c8b284d89ee4983fd010f85840000004c8b2b4983fd01757b4c8b7008ff70104c8b6b08ff73104c89eb4c89f0ff15020700004989c64156f60424017410488d64241848b8a894620800000000c3488b442410488b5c2408e898ffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c70001000000c34983fe05752a4c8b334983fe0575214c8b7008ff70104c8b68184c8b6308ff7310ff73184d8b1649c7c301000000eb0b48b8a894620800000000c34983fa0175104d8b0c2449c7c201000000e9b90000004d89d04983e8024c89d74883ef024c89d14883e9024d8b4e084889ce48c1ee034883ce0148d1ee4d0fb60c314e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c23ce4983f901750949c7c103000000eb0749c7c1010000004983f1024983f90375244d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d895908498939eb034d89d94d89c24d89cb483b65187306ff5558ca007ce931ffffff4983f9017505e9ba0000004c89cf4883ef024c89ce4883ee024c89c94883e9024d8b4424084889ca48c1ea034883ca0148d1ea4d0fb604104e8d0445010000004883e10f4883f97f720948c7c201000000eb1148c7c20200000048d1e948d3e24883ca014c23c24983f801750949c7c003000000eb0749c7c0010000004983f0024983f80375244d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004d895008498930eb034d89d04989f94d89c2483b65187306ff5558ca007ee93bffffff4d3bda750949c7c303000000eb4c41f6c301753f41f6c2017530498b3b4d8b4b08498b324d8b4208483bfe75144d89c24d89cb483b65187306ff5558ca007cebbf49c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb0375624c8b6424104983fc0375074c8b642408eb0749c7c4010000004983fd037508415d4883c410eb0c488d64241849c7c501000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8968184c8960104c89700848c70005000000c34983fd030f85dc0000004c8b1c244983fb030f85c70000004d8b164d8b1c244d3bd37e054d89d3eb004983fb010f8c970000004983fb017d07488d642418eb7a4c3b1da90300007f6c4c89d84883c07e49c7c28100000048d1e849d1ea4833d249f7f24c8d0c45010000004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414e8d0ccdf9ffffff4983f9017502eb4f4d89c84983e810eb41488d64241848b870d5640800000000488b5d08ff23488d64241848b828dc650800000000488b5d08ff23488d642418eb05488d64241848b8a894620800000000c34d3bc1751e49c7c00100000048c7c70300000049c7c10100000048c7c601000000eb234c89c748d1ef41c6043a004c89c74883c7024989f8483b65187306ff5558ca007febba493bf30f8d08020000498b164889d1483bf20f8d98000000498b56084883fe017d07488d642418eb77483bf17d6d4889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f2024883fa03751ae9c7000000488d64241848b818e9640800000000488b5d08ff23498b14244889d1483bf20f8d90000000498b5424084883fe017d07488d642418eb6e483bf17d644889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f202eb1c488d64241848b818e9640800000000488b5d08ff2348c7c2010000004883fa0374054c89c2eb064889fa490bd04881ff01010000755d48d1ea4c89c948d1e94188140a4889f04883c0027115488d64241848b8d006620800000000488b5d08ff234c89cb4883c30248c7c20100000048c7c1030000004889c64989d94889cf4989d0483b65187306ff5558cac07fe932feffff4889f04883c0027115488d64241848b8d006620800000000488b5d08ff23488d4c3fff4c89cb4889c64989d94889cf4989d0483b65187306ff5558cac07fe9effdffff4983f8017502eb104d89c649d1ee4d89cc49d1ec47883422418062ffbf4d8d77e84c3b75107306ff5550ca002c4d89f749c746f8020000004d8956084d891e4c8b6424104983fc0375074c8b642408eb0749c7c4010000004983fd037508415d4883c410eb0c488d64241849c7c501000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8968184c8960104c89700848c70005000000c3f400ffffffffffffff01|@7029,1,@18116,@13308|80,0,@1098 209,0,@1098 1004,0,@5275 1025,0,@6990 1053,0,@1098 1294,0,@5394 1454,0,@5394 1530,0,@105 1610,0,@105 13308:D4,128|483b65187305ff5558cd094989c54989de41f6c501755e41f6c6017558498b450041ff7508498b1e41ff7608ff15660000004989c64156488b442410488b5c2408e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c348c7c001000000c3f40000|@3397,1,@18117,@13309| 13309:D3,176|483b65187305ff5558cd094989c54989de4983fd01751e4983fe01750848c7c001000000c348b8286d640800000000488b5d08ff23498b450041ff750841f6c6017556498b1e41ff760848ba30e5650800000000ff124989c64156488b442410488b5c2408e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848b8286d640800000000488b5d08ff23f400|@4547,1,@18118|39,0,@4545 76,0,@7030 160,0,@4545 13310:D5,440|483b65187306ff5558ca09035041506a016a01ff74241041514889d848c7c30100000049c7c00100000049c7c1010000004c8d542410ff159c010000ff34244c8b6424104983fc01750f48bb48c2620800000000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64242848b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d0a0100007c15488d64242848b850c2620800000000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01755d418066ffbf4c89f3488b4424204c8b44241849b940e5650800000000ff15a30000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c700050000004883c420c34d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64242848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e95afffffff400000000ffffffffffffff01|@7032,1,@18121,@13240,@13312|76,0,@1447 125,0,@105 175,0,@1448 287,0,@7031 390,0,@105 13311:D3,56|483b65187305ff5558cd094989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3f40000|@6981,1,@18120| 13312:D3,776|483b65187306ff5558ca09074889df4d89c34d89cd4883f801750c49c7c401000000e93b0200004c8b30488b40084d8b064d8b76084c8b6424104d8b6424f849c1e40849c1ec074983cc01493bfc721048b89051620800000000488b5d08ff234c8b6424104d8b64bcfc4983fc03757d4889fb4883c302711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca892c4d89f749c746f80200000049897e0849c706010000004d8d4fe84c3b4d107306ff5550ca096c4d89cf49c741f8020000004d8969084d89314d89d84c8b6c24104c8b6424084c896424084c896c2410e913ffffff4c8b6424084d8b24244c8b4c24084d8b094983c102711048b8d006620800000000488b5d08ff23488b7424084c890e4889fb4883c302711048b8d006620800000000488b5d08ff234883ff017d1048b800d5650800000000488b5d08ff234d8d4fe84c3b4d107306ff5550ca897d4d89cf49c741f8020000004989790849c70101000000498d7fe8483b7d107306ff5550ca097f4989ff48c747f8020000004c894f0848c707110000004d8d4fe04c3b4d107306ff5550ca897d4d89cf49c741f803000000498979104d8961084d89314d8d77e84c3b75107306ff5550ca093f4d89f749c746f8020000004d8946084d890e4d8d47e84c3b45107306ff5550ca097c4d89c749c740f8020000004d8958084d89304d8d77e84c3b75107306ff5550ca09354d89f749c746f8020000004d89660849c706050000004d8d4fe84c3b4d107306ff5550ca09654d89cf49c741f8020000004d8969084d89314c8b6c24104c8b6424084c896424084c896c2410e99efdffff41f6c301753d4d8b034d8b73084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89f3483b65187306ff5558ca003cebbd49c7c60100000041f6c501753e4d8b45004d8b5d084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8971084d89014d89ce4d89dd483b65187306ff5558ca0074ebbc4d89224d89720848c7c001000000c21000f4000000000000|@7033,1,@18122|82,0,@628 123,0,@105 262,0,@105 295,0,@105 317,0,@6950 13313:D4,704|483b65187306ff5558ca09014989c649c7c4010000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d896500415549c7c4030000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d89650041554883fb017d0a488d642410e92b020000483b1d380200000f8d190200004889d94c8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02414d89ef48d1eb49895df841c645ff404c89ef48d1e948c7c003000000f348ab4155ff742410ff7424104c89c34c89f049c7c00300000049c7c1030000004c8b542410ff15e80100004989c64983fe017510488d64241848b840a0620800000000c34c8b7424104d8b364983fe037410488d64241848b8b84b620800000000c34c8b7424084d8b364983fe030f85b3000000488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be48c2620800000000eb614d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf4883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be48c2620800000000eb614d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf4883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3488d64241048b8d055620800000000488b5d08ff23f4000000ffffffffffffff01|@7034,1,@18123,@13314|256,0,@1178 286,0,@578 346,0,@1447 525,0,@1447 678,0,@657 13314:D3,5360|483b65187306ff5558ca09074989de4150415141524983fe01750f488d64241848c7c001000000c210004c8b284c8d25080000004f8d64acfc41ffe4e9ab000000909090e94d010000909090e9cd010000909090e9d5010000909090e951020000909090e914030000909090e9c4030000909090e9fd030000909090e98d040000909090e9ee040000909090e917050000909090e96b050000909090e9c4050000909090e9d4050000909090e995060000909090e99a060000909090e9a2060000909090e9fb060000909090e9a4070000909090e964080000909090e9bd080000909090e9bf0800009090904c8b68084c8b58104c8b60184d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe037c1d4983ee027115488d64241848b8d006620800000000488b5d08ff23eb0749c7c60100000041554156e9f61200004c8b68084d8b65004d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe097c1d4983ee087115488d64241848b8d006620800000000488b5d08ff23eb0749c7c60100000041554156e90e120000ff70084c8b681041554156e96a1100004c8b60084c8b68104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe037c1d4983ee027115488d64241848b8d006620800000000488b5d08ff23eb0749c7c60100000041554156e986100000ff7010ff70184c8b68204983fe037c204c89f34883eb027115488d64242848b8d006620800000000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e9890f0000498b45004c8b7424384c8b6c24304156415549c7c0010000004c8b4c24284c8b542420e88bfcffff4889c3e9270e0000ff7008ff7010488b40184983fe057c204c89f34883eb047115488d64242848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b7424384c8b6c2430415641554c8b4424304c8b4c24284c8b542420e82afcffff4889c34c8b7424384c8b6c243041564155488b4424104c8b4424304c8b4c24284c8b542420e800fcffff4889c3488d642408584c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c0010000004c896424084c896c2410e9cbfbffff488d6424184c8b680841f6c50174064c89f0c210004983fe037c1c4c89f04883e802711048b8d006620800000000488b5d08ff23c2100048c7c001000000c210004c8b6808ff70104c8b24244d8b1c244983fb1175504d89e44d8b6424084d8b24244983fc07751d4c8b6424104983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037514488d6424084d89ec49c7c301000000e9360b00004983fe057c1d4983ee047115488d64242048b8d006620800000000488b5d08ff23eb0749c7c60100000041554156e9730a0000488d6424084c8b68084d8b6d004983fd0775254c8b2c244983fd03488d642408750f488d64240848c7c001000000c21000488d642408eb05488d6424104983fe037c1c4c89f04883e802711048b8d006620800000000488b5d08ff23c2100048c7c001000000c21000488d6424184983fe037c1c4c89f04883e802711048b8d006620800000000488b5d08ff23c2100048c7c001000000c21000ff7008488b40104c8b6c24304c8b642428415541544c89f34c8b4424284c8b4c24204c8b542418e82cfaffff4889c3584c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c0010000004c896424084c896c2410e9fcf9ffff488b40084983fe037c204c89f34883eb027115488d64241848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e99bf9ffff4c8b6808498b45004d8b5d184d8b65204d89dde9b60700004c8b68104983fe037c204c89f34883eb027115488d64241848b8d006620800000000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e9c1060000498b45004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e9baf8ffff4c8b680841554156e91c0600004c8b6808ff701041554156e925040000488b40084983fe037c204c89f34883eb027115488d64241848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e93cf8ffff4c8b60084c8b6810ff70184d8b1c244983fb29750e4d8b6c240841554156e9150300004d8b6d004d3bf57c234c89f3492bdd7115488d64242048b8d006620800000000488b5d08ff234883c301eb0748c7c3010000004c8b7424304c8b6c2428415641554c89e049c7c0010000004c8b4c24204c8b542418e8bff7ffff4889c3584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e98bf7ffffff70104c8b68184983fe037c204c89f34883eb027115488d64242048b8d006620800000000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e98d010000498b45004c8b7424304c8b6c24284156415549c7c0010000004c8b4c24204c8b542418e8cbf6ffff4889c3e92c010000488b40104983fe037c204c89f34883eb027115488d64241848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e962f6ffff4c8b680841554156eb61488b40084983fe037c204c89f34883eb027115488d64241848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e9f7f5fffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e8b8f5ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e966f5fffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e827f5ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96dfffffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e8c5f4ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e978f4fffff6442408010f85000100004c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd017565498b46204c8b7424084c89f34983fe037c204889db4883eb027115488d64243848b8d006620800000000488b5d08ff23eb0748c7c3010000004c8b7424484c8b6c24404156415549c7c0010000004c8b4c24384c8b542430e8f4f3ffff4989c4e9b10000004d89e54983fc057532498b46084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e8b6f3ffff4989c4eb764983fd07750c4d8b76084156ff742410eb7d498b46184c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e872f3ffff4989c4eb325b488b4424084c8b4424204c8b4c24184c8b5424104c8b6c24384c8b6424304c896424304c896c24384883c428e93bf3ffff415d4c8924244c896c2408483b65187303ff5558e9aafefffff644240801757f4c8b6c24084d8b75004d89ed41ff75084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004c8b7424604c8b6c245841564155488b5c241849c7c0010000004c8b4c24504c8b542448e8b8f2ffff4989c4415d4c8924244c896c2408483b65187303ff5558e97affffff415c4883c408e956fffffff64424080175554c8b6c24084d8b75004d89ed41ff7508498b064c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e84ef2ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba4584883c420c21000f64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e8eef1ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c2100041f6c501752b4d8b4d004d8b55084d8b094983f907750949c7c503000000eb184d89d5483b65187306ff5558ca0178ebcf49c7c5010000004983fd03750f488d64241848c7c001000000c2100049c7c50100000041f6c40175374d8b4c24084d89ea4983c2027115488d64241848b8d006620800000000488b5d08ff234d89cc4d89d5483b65187306ff5558ca0178ebc349c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64241848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0178ebc44983ec014d03ec7115488d64241848b8d006620800000000488b5d08ff234d3bf57c234c89f3492bdd7115488d64241848b8d006620800000000488b5d08ff234883c301eb0748c7c301000000415a4c8b6c24204c8b64241849c7c10100000049c7c0010000004c896424184c896c24204883c410e97ff0fffff64424080175554c8b6c24084d8b75004d89ed41ff7508498b064c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e83cf0ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba45b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e9efefffff41f6c4010f85ce0000004d8b0c244d8b5424084d8b094d8b014983f811754a498b79084989f8488b3f4883ff01750948c7c703000000eb0748c7c7010000004883ff0375244d89c14d8b49084d3bd9750949c7c103000000eb0749c7c1010000004983f9037502eb3a4c8b0c244d8b41f849c1e00849c1e8074983c8014d3bd87215488d64241848b80057620800000000488b5d08ff234d89c94bc74499fc010000004d89d94983c1027115488d64241848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e928ffffff4c8b64242849c70424030000004c8b6424104983fc037502eb0d4c8b64242049c70424010000004983fe077c1d4983ee067115488d64241848b8d006620800000000488b5d08ff23eb0749c7c60100000041554156f64424080175574c8b6c24084d8b75004d89ed41ff7508498b064c8b7424404c8b6c243841564155488b5c241849c7c00100000049c7c1030000004c8b542428e87deeffff4989c4415d4c8924244c896c2408483b65187303ff5558eba2584883c420c210004c8b34244d8b6e0841f6c501755f4d8b5d004d89f64d8b2e488d6424084d8d67e84c3b65107306ff5550ca08284d89e749c74424f80200000049c7442408010000004d891c244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653eb634d89f6498b06488d6424084c8b7424304c8b6c24284156415549c7c0010000004c8b4c24204c8b542418e8c0edffff4889c3584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e98cedfffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e84dedffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96dfffffff64424080175514c8b742408498b064d89f641ff76084c8b7424504c8b6c244841564155488b5c241849c7c0010000004c8b4c24404c8b542438e8ebecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96cfefffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e889ecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f64424080175594c8b6c24084d8b75004d89ed41ff75084d8b36498b46104c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e821ecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba05b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e9d4ebfffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e895ebffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e835ebffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f4000000|@7035,1,@18124|374,0,@105 510,0,@105 658,0,@105 722,0,@105 925,0,@105 1115,0,@105 1262,0,@105 1372,0,@105 1421,0,@105 1566,0,@105 1687,0,@105 1917,0,@105 2047,0,@105 2194,0,@105 2391,0,@105 2498,0,@105 3025,0,@105 3746,0,@105 3813,0,@105 3863,0,@105 3897,0,@105 4250,0,@664 4292,0,@105 4387,0,@105 13315:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18126|16,0,@6971 13316:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18127|16,0,@6971 13317:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18128|16,0,@6971 13318:D4,216|483b65187305ff5558cd0953a8010f85b10000004c8b30ff7008498b0641ff7608498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849be8039b009000000004c8933ff15990000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@18156,@12181|70,0,@13319 13319:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18130|16,0,@6971 30,0,@1177 13320:D10,1784|483b65187306ff5558ca090150534c8b2c244d8b75004d89ed4d8b6d104d89c349c7c40100000041f6c30175374d8b0b4d8b5308498b394883ff0575104d8b49084d3bcc7e02eb034d89e1eb034d89e14d89cc4d89d3483b65187306ff5558ca0079ebc341544c8b24244983c4027115488d64241848b8d006620800000000488b5d08ff234983fc017d07488d642418eb7a4c3b25570600007f6c4c89e04883c07e49c7c38100000048d1e849d1eb4833d249f7f34c8d1445010000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00754d89df49d1e94d894bf841c643ff414e8d14d5f9ffffff4983fa017502eb234d89d14983e910eb15488d64241848b870d5640800000000488b5d08ff234d3bca75184d89e24983c20e49c1ea034983ca0149c7c101000000eb234c89cf48d1ef41c6043b004c89cf4883c7024989f9483b65187306ff5558ca007febc04d3bca7202eb234c89cf48d1ef41c6043b004c89cf4883c7024989f9483b65187306ff5558ca007febd641f6c0010f85a00000004d8b084d8b5008498b394883ff05757c498b49084883f9017d07488d642418eb5b493bcc7d514889cf48c1ef034883cf014989f949d1e94f0fb60c0b4e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c0bce49d1e948d1ef45880c3beb15488d64241848b848d6640800000000488b5d08ff234d89d0483b65187306ff5558ca0079e956ffffff49c7c2010000004983fc010f855d010000415249c7450003000000f60424010f85270100004c8b2c244d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ff0000004d89ee41ff36498d5fe8483b5d107303ff55504989df48c743f8020000004c8b34244c89730849be3041b009000000004c8933488b442420ff1585040000498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424184c89730849bec841b009000000004c8933ff15470400004989c14c8b34244d89f04983c6027115488d64242848b8d006620800000000488b5d08ff234983fe017d15488d64242848b83060620800000000488b5d08ff234c89f348c7c001000000ff15ef0300004989c6488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c420c34c89f248c7c001000000ff124989c6415649c7c6010000004c8b6c2408e9b50000004d89e04983e8024c89e74883ef024c89e14883e9024989c949c1e9034983c90149d1e94f0fb60c0b4e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c23ce4983f901750949c7c103000000eb0749c7c1010000004983f1024983f90375244d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d895108498939eb034d89d14d89c44d89ca483b65187306ff5558ca007ce9e4fdffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424184c8973104c8b34244c89730849be2042b009000000004c8933488b442430ff1505020000498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424284c89730849be0047b009000000004c8933ff15c70100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6424084d89e54d8966184c8b6424104d89e04d89661049c746080100000049c7060100000041564c8b6424284983c4027115488d64244048b8d006620800000000488b5d08ff234d89ed4d89ee4d3bec75624d89f64c89f34983fe017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff151b0100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000eb5048c7c00100000048c7c3010000004c8b4424204c8b4c2408ff15c10000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084983fe017509488d6424384c89e8c3488d642438498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c3f4ffffffffffffff01|@7040,1,@18137,@13327,@13328,@12181,@13326,@13329,@12181,@13326|119,0,@105 270,0,@5275 526,0,@5279 677,0,@13321 736,0,@13322 776,0,@105 803,0,@731 1133,0,@105 1293,0,@13323 1352,0,@13325 1462,0,@105 1506,0,@731 13321:D4,104|483b65187305ff5558cd054989c64d8b2e4983fd0d75144c89f0488b5a0849c7c001000000ff2555000000498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c8b6a084c8968104c89700848c70017000000c3f40000000000|@7037,1,@18132,@11046| 13322:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18133|16,0,@6971 30,0,@1177 13323:D4,104|483b65187305ff5558cd0552504c8b742408498b4610ff15640000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084d8b6d084c8968184c8970104c8b34244c897008488d64241048c70023000000c3f400000000000000|@7038,1,@18134,@13324| 13324:D3,1056|483b65187305ff5558cd014989c64d89f449c7c5ffffffff41f6c40175274d8b14244d8b5c24084d3bd57e02eb034d89ea4d89d54d89dc483b65187306ff5558ca0070ebd34983c502711048b8d006620800000000488b5d08ff234983fd017d02eb774c3b2dae0300007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb1e4d89da4983ea10eb1048b870d5640800000000488b5d08ff234d3bd375184d89eb4983c30e49c1eb034983cb0149c7c201000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebc04d3bd37202eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebd641f6c6010f8584000000498b0e4d8b5e084883f9017d02eb65493bcd7d604989c949c1e9034983c9014d89ca49d1ea4f0fb614144e8d1455010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d0bd049d1ea49d1e94788140c4d89de483b65187306ff5558ca0070eb8248b848d6640800000000488b5d08ff234983fd010f8c8d0000004983fd017d02eb754c3b2d150200007f6c4c89e84883c07e49c7c68100000048d1e849d1ee4833d249f7f64c8d1c45010000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b870d5640800000000488b5d08ff2348b828dc650800000000488b5d08ff234d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040e004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8df50000004c89c748c1ef034883cf0148d1ef490fb63c3c488d3c7d010000004c89c14883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014823fe4883ff0174084c89cf490bfaeb034c89d74981f901010000755848d1ef4c89de48d1ee41883c364c89c14883c102711048b8d006620800000000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca007fe940ffffff4c89c14883c102711048b8d006620800000000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca007fe902ffffff4983fa017502eb0d4d89d449d1ec49d1eb4788241e418066ffbf498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c8928c3f40000000000ffffffffffffff01ffffffffffffff01|@7039,1,@18135|77,0,@105 220,0,@5275 468,0,@5279 619,0,@5275 635,0,@6990 847,0,@105 922,0,@105 13325:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18136|16,0,@6971 30,0,@1177 13326:D3,584|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9a3000000909090e99e000000909090e993000000909090e98b000000909090e9d1000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e918010000909090e953000000909090e94b000000909090e943000000909090e963010000909090e961010000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090905aff224c8b7008ff70104c89f0488b5c2408e81bffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c70005000000c3ff70084c8b7010ff70184c89f0488b5c2410e8cdfeffff4989c64156488b442408488b5c2418e8b9feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241048c7000b000000c34c8b7008ff7010ff70184c89f0488b5c2410e85efeffff4989c64156488b442410488b5c2418e84afeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70015000000c3488d642408c3ff7008488b4010488b5c2408e8f3fdffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c7001f000000c3f4000000|@7042,1,@18141| 13327:D3,320|483b65187306ff5558ca090341f6c0010f851e0100004d8b304d8b6808493bc60f85a10000004d8d77d84c3b75107306ff5550ca09224d89f749c746f80400000049c746180100000049895e104d894e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff234883c3027115488d64240848b8d006620800000000488b5d08ff234d89e8e868ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d006620800000000488b5d08ff234d8d47e84c3b45107306ff5550ca09624d89c749c740f8020000004d8968084d8930e8fcfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec0aa6208000000004c8930c348c7c001000000c3f4000000|@7041,1,@18138|103,0,@105 130,0,@105 207,0,@105 296,0,@1263 13328:D3,256|483b65187306ff5558ca0901483bc3750848c7c001000000c34983f8017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09014d89f749c746f8020000004d89460849c706050000004d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09214d89f749c746f80400000049c7461801000000498946104d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@18139|33,0,@6950 189,0,@105 13329:D3,128|483b65187306ff5558ca0903483bc3750848c7c001000000c3493bc075054d89ceeb0a49bec0aa62080000000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e8b1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18140|37,0,@1263 60,0,@105 13330:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@18145,@13331| 13331:D7,560|483b65187305ff5558cd09534c8b304d89f54983fe010f8594000000ff7008ff7010ff7018488b4020498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424184c89730849be2050b009000000004c8933ff15010200004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8970204c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d64241048c70001000000c34d89ee4983fd057568488b4008498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b34244c897308488d64240849be7850b009000000004c8933ff15610100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe07750d4c8b700841566a01e98d000000ff7008ff7010488b4018498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b7424084c8973104c8b7424104c89730849bed050b009000000004c8933ff15d30000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64241048c70003000000c3f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15610000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700070000004883c410c3f40000|@7046,1,@18146,@13335,@12181,@12181,@12181|78,0,@13332 230,0,@13333 364,0,@13334 13332:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18142|16,0,@6971 30,0,@1177 13333:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18143|16,0,@6971 30,0,@1177 13334:D3,40|483b65187305ff5558cd054989d648ba70d8650800000000498b5e084d8b4610ff22f40000000000|@6972,1,@18144|16,0,@6971 13335:D5,248|483b65187306ff5558ca090153ff30ff70084c8b70106a016a0148bab8d86508000000004c89c04d89f0488b5c241849c7c1050000004989e2ff1258415e4d8b2e4983fd190f85910000004d8b6e084d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244c89eb4d892e4156ff158b0000004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15670000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c3488d64241848b818e8650800000000488b5d08ff23f4000000000000|@7047,1,@18147,@13337,@13336|28,0,@6973 227,0,@7043 13336:D3,136|483b65187305ff5558cd09a801756a4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849891e4156e8b6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18149| 13337:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18148| 13338:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18150| 13339:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18151| 13340:D4,216|483b65187305ff5558cd0953a8010f85b10000004c8b30ff7008498b0641ff7608498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849bec055b009000000004c8933ff15990000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@18153,@12181|70,0,@13341 13341:D3,48|483b65187305ff5558cd054989d648ba70d8650800000000498b5e0849b828a0620800000000ff22f400000000000000|@6972,1,@18152|16,0,@6971 30,0,@1177 13342:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18154| 13343:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18155| 13344:D4,624|483b65187306ff5558ca09074989c6415049c7c4010000004d8d6ff04c3b6d107306ff5550ca08564d89ef49c745f80100000041c645ff404d89650041554883fb017d0a488d642410e972010000483b1d130200000f8d600100004889d94c8d1c9d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02464d89df48d1eb49895bf841c643ff404c89df48d1e948c7c001000000f348ab4d8d67e84c3b65107306ff5550ca004e4d89e749c74424f8020000004d895c240849bde859b009000000004d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849bb585bb009000000004d895d004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004c8b04244d89430849b8f05bb009000000004d890348c7c7010000004d8d47f04c3b45107306ff5550ca807e4d89c749c740f80100000041c640ff404989384150498d5fd8483b5d107306ff5550ca007e4989df48c743f8040000004c895b184c8963104c8b24244c8963084c892b6a016a016a0148ba38eb65080000000041524d89ca4c89f049c7c0010000004c8d4c2408ff15dc000000415e415b415c49c7c501000000eb15488d64241048b8d055620800000000488b5d08ff2341f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d89014d89cd4d89d3483b65187306ff5558ca0078ebbd4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b084d89334c8b7424084d8b264c8b34244d8b36488d642410415d4d895d004d8965084d89751048c7c001000000c3f400000000ffffffffffffff01|@7189,1,@18325,@13348|191,0,@13345 236,0,@13346 285,0,@13347 394,0,@7058 450,0,@657 13345:D3,328|483b65187305ff5558cd054c8b304d89f54983fe03751048b8a8e9650800000000488b5d08ff236a016a014d89ee4983fd07753e4d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004989450849c745000300000049bea89b6208000000004c892c244c89742408e9aa0000004983fe01753b4d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004989450849c745000300000049bea89b6208000000004c892c244c89742408eb694c8b68084c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec7215488d64241048b81051620800000000488b5d08ff234f8b74aefc4983fe017515488d64241048b808d5620800000000488b5d08ff234d8b364d8b2e4c892c244d8b76084c89742408415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@7055,1,@18158|25,0,@7051 92,0,@1145 160,0,@1145 219,0,@625 251,0,@1556 13346:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@7056,1,@18159|78,0,@664 13347:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d897500c3f4|@7057,1,@18160|36,0,@105 13348:D7,2032|483b65187306ff5558ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9b3010000909090e963020000909090e9d4020000909090e953020000909090e906030000909090e943020000909090e93b030000909090e978030000909090e92b020000909090e923020000909090e912040000909090e906060000909090e90b020000909090e903020000909090e977060000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9a4060000909090e9da060000909090ff7008ff7010488b40186a016a016a01488b5424484c8b7424584156488b5c24484c8b4424404c8d4c24084c8b542430e8f5feffffff34244c8b4424106a016a016a01488b5424684c8b7424784156488b442448488b5c24684c8d4c24084c8b542450e8c2feffffff34244c8b4424106a016a016a01488b9424880000004c8bb424980000004156488b442460488b9c24880000004c8d4c24084c8b542470e886feffff415e415c488d6424084d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24204d896b184d8973104c8b34244d897308488d64245849c70301000000415d488d64241849bea89b6208000000004d895d004d8965084d89751048c7c001000000c208004c8b70084d8b6e104d8b65004983fc017553498b45084d8b06498b7e08498b7618498b5e204c8b742420498b56184c8b6c24184c8b6424104c8b5c2408415a488d6424204c8b4c2408415341524151ff7424184989f24989f94c896424204c896c2428ff22498b45084d8b06498b7e08498b7618498b5e204c8b742420498b56204c8b6c24184c8b6424104c8b5c2408415a488d6424204c8b4c2408415341524151ff7424184989f24989f94c896424204c896c2428ff224c8b742430498d5fd0483b5d107306ff5550ca01404989df48c743f8050000004c8973204c8b34244c897318488d6424084c8b7424104c8973104c8b7424184d8b76504c89730849be8864b009000000004c8933ff1528050000488b5c24084158488d6424184c8b34244c897424084883c408ff2501050000488b58084c8b4010488b40184c8b742420498b56284c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff224c8b7008488b58104c8b40184c8b6c2420498b55104c89f04c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff22488b58084c8b70104c8b40184c8b6c2420498b55384c89f04c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff22488d642408488b40084c8b742410498b5610ff124989c64d8b2e4d8b76084d8b65004983fc0175384d8b5d084d8b6d104d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d895c240849c704240d000000eb2d4d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042411000000415d4d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c410c208004c8b6808ff7010ff70186a016a016a01488b5424484c8b74245841564c89e8488b5c24484c8b4424404c8d4c24084c8b542430e833fbffff4c8b3424ff7424084c8b6c24184d8b65004983fc070f85ac000000498b5510488b442428ff124989c64d8b2e4d8b76084d8b65004983fc0175384d8b5d084d8b6d104d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d895c240849c704240d000000eb2d4d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424110000004c8b6c24384d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c450c208004c8b6c24204983fd0375614d8b2e4983fd0d751a4c89f0488b5c242849c7c003000000ff15530200004989c4eb3c4d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b6c24284d896c24104d8974240849c7042417000000eb5f4d8b2e4983fd0d751a4c89f0488b5c242849c7c001000000ff15ea0100004989c4eb3c4d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418010000004c8b6c24284d896c24104d8974240849c70424170000004c8b6c243849bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c450c20800488b40086a016a014c8b742430498b56404c8b742440ff7424104156488b5c243849c7c00100000049c7c1010000004c8d542410ff12415d415e488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042419000000415d4d8965004c8b24244d896508488d6424184d89751048c7c001000000c208004c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b742420498b5648488b5c24184c8b4424104c8b4c2408415a488d6424204c8b6c24084c896c2408ff224c8b7008488b58104c8b6c2420498b55084c89f04c8b4424184c8b4c24104c8b542408415d488d6424204c8b642408ff34244c896424084c896c2410ff22488b5808488b40104c8b742420498b56304c8b4424184c8b4c24104c8b542408415d488d6424204c8b642408ff34244c896424084c896c2410ff22f400000000000000|@7061,1,@18162,@11046,@11046,@13350,@12181|456,0,@1145 743,0,@13349 1638,0,@1145 13349:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18161| 13350:D6,360|483b65187306ff5558ca090141504c8b284d89ee4983fd0d753b4c8b68084c8b70104d8d67e04c3b65107306ff5550ca08604d89e749c74424f8030000004d897424104d896c240849c704240d000000e9980000004983fe1f75104c8b7008ff701048c7c001000000eb20415d49bea89b6208000000004989450049895d084d89751048c7c001000000c341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebba4883fb0175054889c3eb09ff15ae0000004889c3584158e913ffffff41f6c601754e4d8b1e4d8b6e084d8b0b4d89ca4c3b0d8100000075274d89d64c3b356d00000075064d8b7310eb30488d64240848b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0850ebac49bea89b620800000000415d4d89650049895d084d89751048c7c001000000c3f4000000000000|@7062,1,@18163,@15146,@15146,@13351|111,0,@1145 290,0,@621 323,0,@1145 13351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18164| 13352:D6,480|483b65187306ff5558ca0d0753415249c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64241048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0563ebc441566a016a014c8b6a084c8b5424384c8b742430415641504c89cb4d89e94c8d442410ff158a010000ff3424ff742410488b442408ff15700100004989c64d89f541f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03753a498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24304c8968104c89700848c70029000000ff15ef0000004989c4eb334d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24304d896c24104d8974240849c70424290000004d8d5fd84c3b5d107306ff5550ca00104d89df49c743f8040000004c8b7424204d89f54d8973184c8b7424304d8973104c8b7424084d89730849be4869b009000000004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89ed4d896e0849c706070000004c8b6c24284d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c428c21000f4000000|@7069,1,@18166,@12170,@13355,@13354|51,0,@105 380,0,@13353 13353:D3,240|483b65187305ff5558cd056a016a014c8b7218493bc67d064c8b7208eb624c8b72104983fe03751c49bec8ec6508000000004d8b2e4c892c244d8b76084c89742408eb15488d64241048b8e0ec650800000000488b5d08ff23415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c341f6c60175534d8b264d8b6e084883f80175144d8b34244c8934244d8b7424084c89742408ebb24989c44983ec027115488d64241048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140eba7488d64241048b8c89d620800000000488b5d08ff23f400|@7068,1,@18165|42,0,@7064 75,0,@7065 183,0,@105 224,0,@1158 13354:D3,752|483b65187306ff5558ca09074989c641504151415241f6c6010f85b4020000498b0641ff76086a016a016a01488b5424284c8b6c24404c8b74244841564989d84c89eb4c8d4c24084c8b542428ff12ff3424ff742410ff7424206a016a014c8b6c24204d8b65004d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9750100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9f90000004c8b742468498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c89742408ff3424488b5c24106a016a014c8bb424880000004c8bac248000000041564155488b4424684c8d4424104c8b4c24784c8b542470e87afdffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184c8b6c24484d8965004d89750848c7c0010000004883c450c21000488d642410415e49c7060100000049895e0848c7c001000000c21000f4|@7070,1,@18169| 13355:D4,224|483b65187305ff5558cd01a8010f85c20000004c8b28ff70084d8b7500498b5d084d8b2e4983fd01754641ff7608498b4610ff15c00000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408e85affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@742,1,@18167,@13356| 13356:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18168,@15146|74,0,@224 88,0,@15146 13357:D14,2016|488dbc2450ffffff483b7d187306ff5560ca0d075253415041516a016a016a014c8b742430498b56084c8b6c24484c8b74244041564d89d04d89ea488b5c24204c8d4c2408ff12ff3424ff7424104c8b7424084d8b2e4983fd0d754d4d89f64d8b76084983fe017507488b442430eb05488b4424384c8b742440498b5608488b5c242841584c8b4c24584c8b5424504c8b6c24484c896c24584c8b7424404c897424504883c450ff226a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442458488b5c244849c7c0010000004c8d4c2408ff12ff3424ff742410ff7424206a016a016a014c8bb42488000000498b56084c8b9424a00000004c8bb424980000004156488b842480000000488b5c247849c7c0010000004c8d4c2408ff12ff3424ff742410ff742420488b5c24404c8b2b4d89ee4983fd210f85ec000000488b4424384c8b442430ff15f20600004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc0aa6208000000004d8965184d8975104c8b7424684d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24604c896b084c89334883fb0175074c8b742408eb0e488b442408ff15440600004989c64c8bac24c00000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004881c4a0000000c218004889db4983fe0d0f85e10300004889db4c8b63084c8b7424384c89f04983fe010f851f0200004c8b7424104d8b2e4983fd0d0f850b0200004c8b6c24084983fd010f85fc010000488d6424104d89f64d8b6e084d3be50f85b1000000488d642430488b442428ff159a0500004989c64c2335300500004c3b352105000075074c8b642420eb524d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c706050000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24204d896c24084d8934244c8bac248000000049bea89b6208000000004c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c460c218004983fc0375424983fd01753c488d6424504c8b6c246049bea89b6208000000004c8b6424084d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c438c218004983fc0175714983fd03756b488d6424504d8d67e04c3b65107303ff55504d89e749c74424f80300000049c7442410130000004c8b7424084d8974240849c704242b0000004c8b6c246049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c438c218004d8d67d84c3b65107306ff5550ca08404d89e749c74424f8040000004d89f64d89742418488d6424084889db49895c24104c8b7424504d8974240849c704240b0000004c8bac24a800000049bea89b6208000000004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c21800eb004c8b7424104d8b2e4983fd210f85fa0000004c89f3488b4424084c8b0424ff15950300004989c6488d6424184d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec0aa6208000000004d8975104c8b7424504d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24484c896b084c89334883fb01750c488d6424184c8b742408eb13488d642418488b442408ff15d80200004989c64c8bac24900000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004883c470c218004c8b442430ff15920200004989c64156488b442410488b5c24184c8b442408ff15700200004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b34244d89742410488d6424204c8b7424504d8974240849c704240b0000004c8bac24a800000049bea89b6208000000004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c218004c8b7424104d8b2e4983fd210f85fa0000004c89f3488b4424084c8b0424ff15cc0100004989c6488d6424184d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec0aa6208000000004d8975104c8b7424504d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24484c896b084c89334883fb01750c488d6424184c8b742408eb13488d642418488b442408ff150f0100004989c64c8bac24900000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004883c470c21800488b4424384c8b442430ff15c40000004989c64156488b442410488b5c24184c8b442408ff15a20000004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b34244d89742410488d6424204c8b7424504d8974240849c704240b0000004c8bac24a800000049bea89b6208000000004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c21800f400010000c000000000010000c000000000|@7072,1,@18170,@13359,@13362,@13364,@13365,@13367,@13369,@13371,@13372,@13306,@13374,@13358|374,0,@1263 788,0,@1145 855,0,@1145 979,0,@1145 1099,0,@1145 1220,0,@1263 1526,0,@1145 1645,0,@1263 1956,0,@1145 13358:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18187,@13361,@13375| 13359:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18171,@13361,@13360| 13360:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18173,@15146|74,0,@224 88,0,@15146 13361:D4,424|483b65187305ff5558cd094989c64983fe0175044889d8c34c8b2b4983fd1175304c8b63084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc0375094d8b6d084d89f4eb2b498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c341f6c4010f85a70000004d8b14244d8b5c24084983fb010f85800000004d89d34d8b234983fc0375494d8b631041ff73184d3bec750c48c7c3010000004d89f5eb7f488d642408498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c3498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c34d89dc483b65187306ff5558ca0870e94fffffff48b8b0ee650800000000488b5d08ff2341f6c50175364d8b5d084989dc4983c4027115488d64240848b8d006620800000000488b5d08ff234d89dd4c89e3483b65187306ff5558ca0860ebc44883eb027115488d64240848b8d006620800000000488b5d08ff234c89f0ff15230000005be95dfefffff400000000|@7076,1,@18172,@11075|303,0,@7074 343,0,@105 390,0,@105 13362:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18174,@13361,@13363| 13363:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18175,@15146|74,0,@224 88,0,@15146 13364:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18176| 13365:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18177,@13361,@13366| 13366:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18178,@15146|74,0,@224 88,0,@15146 13367:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18179,@13361,@13368| 13368:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18180,@15146|74,0,@224 88,0,@15146 13369:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18181,@13361,@13370| 13370:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18182,@15146|74,0,@224 88,0,@15146 13371:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18183| 13372:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18184,@13361,@13373| 13373:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18185,@15146|74,0,@224 88,0,@15146 13374:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18186| 13375:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18188,@15146|74,0,@224 88,0,@15146 13376:D6,1096|483b65187306ff5558ca0d0752504150415141526a016a016a014c8b742438498b56104c8b6c24684c8b4424604c8b5424504c8b74244841564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b5610488b9c24880000004c8b5424704c8b7424684156488b4424504c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742478498b5610488b9c24a80000004c8b9424900000004c8bb424880000004156488b4424684c8d4c2408ff12ff3424ff7424104c8b7424484d8b2e4983fd0d0f85330200004d89f64d8b760841f6c6010f84e400000041f6c6010f84c20000004983fe01750949c7c603000000eb0749c7c6010000004983fe030f85ba0000004c8bb424b80000004c8bac24a00000004c8ba42498000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424880000004d8b76084c89730849be988eb009000000004c8933488b442468ff15fb0200004989c44c8bac24a800000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c488000000c22800488da4249000000048b8385f620800000000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849c7060100000041564c8bb424c00000004c8bac24a80000004c8ba424a0000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424900000004d8b76084c89730849be088fb009000000004c8933488b442470ff150c0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c480000000c228004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849c7060100000041564c8bb424c00000004c8bac24a80000004c8ba424a0000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424900000004d8b76084c89730849be788fb009000000004c8933488b442470ff15c60000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c480000000c22800f4000000|@7078,1,@18192,@12181,@12181,@12181|351,0,@13377 386,0,@1145 442,0,@723 582,0,@13378 728,0,@1145 900,0,@13379 1046,0,@1145 13377:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18189| 13378:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18190| 13379:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18191| 13380:D6,2608|488dbc2460ffffff483b7d187306ff5560ca0d0752504150415141524c8b7424184983fe010f85bf0100006a016a016a014c8b742438498b56104c8b6c24684c8b4424604c8b5424504c8b74244841564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b5610488b9c24880000004c8b5424704c8b7424684156488b4424504c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742478498b5610488b9c24a80000004c8b9424900000004c8bb424880000004156488b4424684c8d4c2408ff12ff3424ff7424104c8bb424b80000004c8bac24a00000004c8ba42498000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424880000004d8b76084c89730849be589ab009000000004c8933488b442468ff15190900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204d896e1849bd60fe6208000000004d896e104c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea89b6208000000004d8965004c8b24244d896508488da424800000004d89751048c7c0010000004883c410c228004c8b74245041ff76086a016a016a014c8b742440498b56104c8b6c24704c8b4424684c8b5424584c8b74245041564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742460498b5610488b9c24900000004c8b5424784c8b7424704156488b4424584c8d4c2408ff12ff34244c8b4424106a016a016a014c8bb42480000000498b5610488b9c24b00000004c8b9424980000004c8bb424900000004156488b4424704c8d4c2408ff12ff3424ff7424104c8b7424484d8b2e4983fd0d0f85240200004d89f64d8b760841f6c6010f845f01000041f6c6010f843d0100004983fe01750949c7c603000000eb0749c7c6010000004983fe030f85350100004d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610030000004c8bac24880000004d896e0849c7061300000041564c8bb424c80000004c8bac24b00000004c8ba424a8000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424980000004d8b76084c89730849bec89ab009000000004c8933488b442478ff15c40600004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b2c244d896c2418488d64240849bdc0aa6208000000004d896c24104d8974240849c70424070000004c8bac24b000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c22800488da4249800000048b8385f620800000000488b5d08ff234d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610030000004c8bac24880000004d896e0849c706130000004d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b7424084d897424104c8b7424284d8974240849c70424070000004c8b74246849c706030000004c8bac24b000000049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c488000000c228004c8b6c24084d8b75004983fe0d0f85fa0100004c8ba424880000004d89e64983fc09750949c7c303000000eb194d89f64983fe07750949c7c303000000eb0749c7c3010000004d8d77e04c3b75107306ff5550ca00284d89f749c746f80300000049c746100b0000004c8b6424284d89e24d89660849c7062b0000004d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110030000004c8ba424880000004d89610849c701130000004d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d894c24184d89ed4d896c24104d89d54d89ea4d896c240849c70424070000004d89e54d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c74424100f0000004d89d24d8954240849c704242b0000004983fb03750949c7c323000000eb0749c7c3030000004d8d57e04c3b55107306ff5550ca00784d89d749c742f80300000049c74210010000004d895a0849c7020d0000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049b9789f6208000000004d894b184d8953104d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d896c24104d8974240849c704240b0000004c8bac24b000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c228004c8b6424284d8b34244983fe0d0f85f10100004c8b9c24880000004d89de4983fb09750949c7c303000000eb194d89f64983fe07750949c7c303000000eb0749c7c3010000004d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c746100b0000004d89ed4d89e94d896e0849c7062b0000004d8d57e04c3b55107306ff5550ca005a4d89d749c742f80300000049c74210030000004c8bac24880000004d896a0849c702130000004d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d8955184d89c94d89ca4d894d104d89e44d89650849c74500070000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c74424100f0000004d89d24d8954240849c704242b0000004983fb03750949c7c303000000eb0749c7c3230000004d8d57e04c3b55107306ff5550ca00784d89d749c742f80300000049c74210010000004d895a0849c7020d0000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049b9789f6208000000004d894b184d8953104d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d896c24104d8974240849c704240b0000004c8bac24b000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c228004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24880000004d896e0849c7060300000041564c8bb424c80000004c8bac24b00000004c8ba424a8000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424980000004d8b76084c89730849be389bb009000000004c8933488b442478ff15ca0000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24b000000049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c488000000c22800f400000000000000|@7080,1,@18196,@12181,@12181,@12181|297,0,@13381 364,0,@1823 444,0,@1145 886,0,@13382 955,0,@1263 991,0,@1145 1047,0,@723 1195,0,@1145 1632,0,@1170 1720,0,@1145 2148,0,@1170 2236,0,@1145 2408,0,@13383 2554,0,@1145 13381:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18193| 13382:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18194| 13383:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18195| 13384:D3,7256|483b65187306ff5558ca0d075250415041514c8b34244d89f541ff76086a016a016a014c8b742438498b56084c8b6424504c8b74244841564d89d04d89e24889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442450488b5c24484c8d4c2408ff124c8b3424ff7424084c8b6c24584d8b5d004d89dc4983fb150f857e0400004d89eb4d8b63084d8b2e4983fd0d0f85f40200004d8b56084c8b6c24204d8b4d004983f90d0f85ef0100004d89ed4d8b4d0841f6c101740949c7c003000000eb0749c7c0010000004983f8037405e95901000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f84350100004c8b74244049c7060300000041f6c1010f840a01000041f6c2010f84eb0000004983fc05753e4d89ce4d33f24983ce014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb724983fc0375374d0bd14d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d000000eb354d23d14d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d0000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c2180041f6c201747a41f6c201745f4983fa01750949c7c203000000eb0749c7c2010000004983fa0375584983fc0175054d89f4eb034d89ec4c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004c8b6c24204d8b55004983fa0d0f85f50000004d89ed4d8b550841f6c201747a41f6c201745f4983fa01750949c7c203000000eb0749c7c2010000004983fa0375584983fc0175054d89f4eb034d89f44c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e34983fc110f85c30600004d89ed4d8b4d084d89cc4c8b5c24204d8b034d89c24983f80d0f85250300004d8b064983f80d0f85180300004d89db4d8b63084d8b560841f6c401740949c7c003000000eb0749c7c0010000004983f8037405e97e02000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f845a0200004c8b74244049c7060300000041f6c4010f842f02000041f6c2010f84100200004983f90575694983fa017515488d64246848b8a054620800000000488b5d08ff234c89e048d1e849d1ea4833d249f7f24c8d3455010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000e96c0100004983f90375694983fa017515488d64246848b810f0650800000000488b5d08ff234c89e048d1e849d1ea4833d249f7f24c8d3445010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000e9fd0000004983f90b7515488d64246848b868f0650800000000488b5d08ff234983f9097515488d64246848b8e8f0650800000000488b5d08ff234983f90775464d89e649d1ee4983ea014d0faff24983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb7b4983f90d753e4d89e64d2bf24983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb374f8d7414ff4d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e14983fc010f85f40000004d8b264983fc0d0f85e70000004d8b660841f6c401746f41f6c40174544983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4c8bac248000000049bea89b6208000000004d89db4d895d004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89cc4983f9010f85f60000004d89db4983fa0d0f85e90000004d89db4d8b630841f6c401746e41f6c40174534983fc01750949c7c403000000eb0749c7c4010000004983fc03754c4c8ba4248000000049bda89b6208000000004d8934244c8b34244d89742408488d6424084d896c241048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89de4d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc0d0f85f80000004d8b264983fc0d0f85eb0000004d8b660841f6c401747141f6c40174564983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4c8bac248000000049bea89b6208000000004c8b6424204d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89dc4983fb030f853e0b00004d89ed4d8b4d084d89cc4c8b5c24204d8b034d89c24983f80d0f85a00700004d8b064983f80d0f85930700004d89db4d8b63084d8b560841f6c401740949c7c003000000eb0749c7c0010000004983f8037405e9f906000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f84d50600004c8b74244049c7060300000041f6c4010f84aa06000041f6c2010f848b0600004d89ce4c8d2d080000004f8d6cb5fc41ffe5e933000000909090e9c6000000909090e936020000909090e94f030000909090e9ea030000909090e9c1040000909090e979050000909090ff75084c8d35600000004156488965084d89d64983ee014d03f4711048b8d006620800000000488b5d08ff234d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b750f49bc68f1650800000000e971050000488d642468488b5d08ff23ff75084c8d35280100004156488965084983fa01751048b8d812620800000000488b5d08ff234983faff75194c3b259e0e0000751048b87013620800000000488b5d08ff234c89e04d89d648d1f849d1fe489949f7fe4c8d3445010000004983fa01751048b8e013620800000000488b5d08ff234c89e04d89d548d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb5f4983fd017d0949c7c503000000eb0749c7c5010000004983fa017d0949c7c403000000eb0749c7c4010000004d3bec750949c7c503000000eb0749c7c5010000004983fd0374184983ee02711048b8d006620800000000488b5d08ff23eb004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0f1650800000000eb104983fe0b750f49bc68f1650800000000e9f9030000488d642468488b5d08ff23ff75084c8d35d10000004156488965084983fa01751048b8e013620800000000488b5d08ff234c89e04d89d648d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c201000000eb4f4983fe017d0949c7c503000000eb0749c7c5010000004983fa017d0949c7c403000000eb0749c7c4010000004d3bec75054d89f2eb194983ea014d03d6711048b8d006620800000000488b5d08ff234d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0f1650800000000eb104983fe0b750f49bc68f1650800000000e9d8020000488d642468488b5d08ff23ff75084c8d35680000004156488965084d89e649d1fe4983ea014d0faff2711048b8d006620800000000488b5d08ff234983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b750f49bc68f1650800000000e935020000488d642468488b5d08ff23ff75084c8d358f0000004156488965084983fa01751048b8d812620800000000488b5d08ff234983faff75194c3b255a0b0000751048b87013620800000000488b5d08ff234c89e048d1f849d1fa489949f7fa4c8d3445010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0f1650800000000eb104983fe0b750f49bc68f1650800000000e956010000488d642468488b5d08ff23ff75084c8d35700000004156488965084983fa01751048b8e013620800000000488b5d08ff234c89e048d1f849d1fa489949f7fa4c8d3455010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0f1650800000000eb104983fe0b750f49bc68f1650800000000e996000000488d642468488b5d08ff23ff75084c8d35600000004156488965084d89e64d2bf2711048b8d006620800000000488b5d08ff234983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b753f49bc68f16508000000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d642468488b5d08ff23488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e14983fc010f85f40000004d8b264983fc0d0f85e70000004d8b660841f6c401746f41f6c40174544983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4c8bac248000000049bea89b6208000000004d89db4d895d004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89cc4983f9010f85f60000004d89db4983fa0d0f85e90000004d89db4d8b630841f6c401746e41f6c40174534983fc01750949c7c403000000eb0749c7c4010000004983fc03754c4c8ba4248000000049bda89b6208000000004d8934244c8b34244d89742408488d6424084d896c241048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89de4d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc0d0f85f80000004d8b264983fc0d0f85eb0000004d8b660841f6c401747141f6c40174564983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4c8bac248000000049bea89b6208000000004c8b6424204d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8385f620800000000488b5d08ff234d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc130f85890400004d89eb4d8b43084d89db4d8b4b104c8b6c24204d8b65004983fc0d0f85fa0300004d8b264983fc0d0f85ed0300004d89ed4d8b65084d8b56084983f8017502eb4941f6c401740948c7c703000000eb0748c7c7010000004883ff03740948c7c703000000eb1a41f6c201740948c7c703000000eb0748c7c7010000004883f7024883ff030f84230300004c8b74244049c706030000004983f8050f85a30000004983f903754d41f6c401743241f6c20174174d3be27c0949c7c603000000eb0749c7c601000000eb4b488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff2341f6c401743541f6c201741a4d3be2720949c7c603000000eb0749c7c601000000e943020000488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234983f8030f85a30000004983f903754d41f6c401743241f6c20174174d3be27e0949c7c603000000eb0749c7c601000000eb4b488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff2341f6c401743541f6c201741a4d3be2760949c7c603000000eb0749c7c601000000e996010000488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234983f8090f85a30000004983f903754d41f6c401743241f6c20174174d3be27f0949c7c603000000eb0749c7c601000000eb4b488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff2341f6c401743541f6c201741a4d3be2770949c7c603000000eb0749c7c601000000e9e9000000488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234983f8070f85a00000004983f903754d41f6c401743241f6c20174174d3be27d0949c7c603000000eb0749c7c601000000eb4b488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff2341f6c401743241f6c20174174d3be2730949c7c603000000eb0749c7c601000000eb3f488d64246848b8385f620800000000488b5d08ff23488d64246848b8385f620800000000488b5d08ff234d3be2750949c7c603000000eb0749c7c6010000004983fe03750c49bca0aa620800000000eb0a49bcc0aa6208000000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea89b6208000000004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800f4000000000001000000000000800100000000000080|@7095,1,@18197|500,0,@1145 550,0,@723 571,0,@723 652,0,@1145 759,0,@1145 809,0,@723 890,0,@1145 1023,0,@1145 1073,0,@723 1154,0,@1145 1264,0,@1145 1498,0,@649 1609,0,@7082 1714,0,@7084 1741,0,@7087 1964,0,@1145 2014,0,@723 2035,0,@723 2116,0,@1145 2242,0,@1145 2295,0,@723 2376,0,@1145 2505,0,@1145 2557,0,@723 2638,0,@1145 2761,0,@1145 2816,0,@723 2899,0,@1145 3011,0,@1145 3330,0,@105 3431,0,@7090 3479,0,@142 3510,0,@146 3557,0,@149 3683,0,@105 3789,0,@7092 3807,0,@7090 3855,0,@149 3974,0,@105 4078,0,@7092 4096,0,@7090 4154,0,@105 4259,0,@7090 4307,0,@142 4338,0,@146 4464,0,@7092 4482,0,@7090 4530,0,@149 4656,0,@7092 4674,0,@7090 4724,0,@105 4829,0,@7090 4847,0,@1145 4908,0,@723 4929,0,@723 5010,0,@1145 5136,0,@1145 5189,0,@723 5270,0,@1145 5399,0,@1145 5451,0,@723 5532,0,@1145 5655,0,@1145 5710,0,@723 5793,0,@1145 5905,0,@1145 6169,0,@723 6190,0,@723 6249,0,@723 6270,0,@723 6342,0,@723 6363,0,@723 6422,0,@723 6443,0,@723 6515,0,@723 6536,0,@723 6595,0,@723 6616,0,@723 6688,0,@723 6709,0,@723 6765,0,@723 6786,0,@723 6829,0,@1262 6841,0,@1263 6859,0,@1145 6969,0,@1145 7079,0,@1145 7191,0,@1145 13385:D3,2312|483b65187306ff5558ca0d0750415241ff70086a016a016a01488b52084c8b5424404c8b74243841564889d84c89c34d89c84c8d4c2408ff12415e415c415d4c8b5c24104c8d15080000004f8d549afc41ffe2e96b000000909090e96a000000909090e969000000909090e968000000909090e967000000909090e969000000909090e9b2010000909090e9eb020000909090e9f5030000909090e9fb040000909090e9e9050000909090e9e8050000909090e93b060000909090e929070000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e9ad0500004d8b1e4983fb0d75574d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bba0aa620800000000eb0a49bbc0aa620800000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c210004d8b55004d89d34983fa0375404c8b342449c70603000000488d642408415d49bbc0aa62080000000049bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c210004d89dd4983fd0775404c8b342449c70603000000488d642408415d49bbc0aa62080000000049bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c210004d8b1e4983fb0d75744d8b76084c8b2c2449c7450003000000488d6424084d8b364e8d3475010000004d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c210004d8b5d004983fb0975614d8b5d084983fb1b750949c7c303000000eb0749c7c3010000004983fb03753a4d8b5d104c8b342449c70603000000488d642408415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d642408eb05488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c743100d0000004d89730849c7032b000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c210004d8b2e4983fd0d0f85aa0000004d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bbc0aa620800000000eb5d41f6c6017415488d64241048b808ef620800000000488b5d08ff234d0fb676ff4e8d3475010000004981e6ff0100004d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f85a60000004d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bbc0aa620800000000eb5941f6c6017415488d64241048b808ef620800000000488b5d08ff234d8b76f849c1e60849c1ee074983ce014d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b76084c8b2c2449c7450003000000488d64240841f6c601744341f6c60174284983fe01750949c7c603000000eb0749c7c6010000004983fe03752149bba0aa620800000000eb1f488d64241048b8385f620800000000488b5d08ff2349bbc0aa620800000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c21000488d642408eb05488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b6e084c8b342449c70603000000488d64240849d1fd4d8d77f04c3b75107306ff5550ca00104d89f749c746f80100000041c646ff014d892e4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea89b6208000000004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b6e084c8b342449c70603000000488d64240849d1ed4d8d77f04c3b75107306ff5550ca00104d89f749c746f80100000041c646ff014d892e4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea89b6208000000004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b0000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89751049c745081b00000049c74500090000004d89ee415d488d6424084d895d004d8965084d89751048c7c001000000c21000f4|@7097,1,@18198|271,0,@1262 283,0,@1263 295,0,@1145 362,0,@1263 372,0,@1145 435,0,@1263 445,0,@1145 540,0,@1145 661,0,@1145 761,0,@1145 857,0,@1145 933,0,@1263 956,0,@1711 1040,0,@1145 1135,0,@1145 1207,0,@1263 1230,0,@1711 1310,0,@1145 1405,0,@1145 1511,0,@1262 1528,0,@723 1544,0,@1263 1556,0,@1145 1651,0,@1145 1749,0,@1145 1900,0,@1145 1995,0,@1145 2146,0,@1145 13386:D7,1760|483b65187306ff5558ca0d07525053415041514c8b34244c89f341ff76086a016a016a014c8b742440498b56084c8b6c24584c8b74245041564d89d04d89ea488b4424404c8d4c2408ff12ff3424ff742410ff7424204c8b7424504d8b2e4983fd110f85c70000004d89f64d8b56084d8d77e84c3b75107306ff5550ca00044d89f749c746f80200000041c646ff4041564c8b2c244d89ee49c74508010000004d89f64d89f549c706010000004d8d77e04c3b75107306ff5550ca00244d89f749c746f80300000041c646ff4049c746100100000049c746080100000049c7060100000049bc80c8b009000000004d89eb4d8973084d89234d89ed4d89eb418065ffbf49bdf8c8b009000000004d89f44d895424104d89db4d895c24084d892c24418066ffbfff742450e93605000049c7c6010000004c8b2c244d8b65004983fc0375324983fe0175254d89ed4d8b75084d89ed41ff751041ff364d8b6e204d8b663049c7c601000000e948010000488d642408eb05488d6424084c8b7424084d8b364983fe0d0f85950000004c8b742450498b5e104c8b4424684c8b4c2460488b4424404c8b542430ff15600500004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24384d896c24184c8b6c24084d896c24104d8974240849c704240f0000004c8b6c247049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c448c218004c8b742450498b5e104c8b4424684c8b4c2460488b4424404c8b542430ff15c30400004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24384d896c24184c8b6c24084d896c24104d8974240849c704240f0000004c8b6c247049bea89b6208000000004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c448c2180041f6c50175364d8b55084d89f34983c3027115488d64247048b8d006620800000000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc449c7c5010000004c8b5c245841f6c30175364d8b4b084d89ea4983c2027115488d64247048b8d006620800000000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0078ebc44d3bf50f85fe0000004c8b74244049c706030000004c8b6c24484d89ee41ff75084d89f64d89f541ff76184983fc017d0d488da42480000000e9b90000004c3b25580300000f8da40000004c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41566a016a014c8bb424900000004d8b4e084c8b9424a80000004c8bb424a000000041564155488b842490000000488b5c24504c8d442410ff15fb020000415b415e4983fb01750f49bd48c2620800000000e9f000000049c7c4010000004d89ddeb2d488da4248000000048b8d055620800000000488b5d08ff23488d64247048b8d0f3650800000000488b5d08ff2341f6c50175394d8b4d084d89e24983c2027118488da4248800000048b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25330200007c18488da4248800000048b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f8518010000418065ffbf4d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b14244d89d34d895424184d896c24104c8b6c24204d896c240849bdf0d3b009000000004d892c244d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89db4d895d08488d64240849bbe0d4b009000000004d895d00498d5fd8483b5d107306ff5550ca00704989df48c743f8040000004c8b1c244c895b18488d6424084c8963104c8b24244c896308488d6424084c892b6a016a016a014c8bac2480000000498b55084c8b9424980000004c8bac249000000041554d89f0488b4424204c8d4c2408ff12415b415c415e488d6424104c8b6c24784d895d004d8965084d89751048c7c0010000004883c460c218004d8b134d8b4b084f8954a5fc4d89e24983c2027118488da4248800000048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e99afefffff6042401754c4c8b2c244d8b75004d89ed41ff7508498b0648c7c3010000004c8b442410ff15690000004989c64983fe03750e488d64241849c7c603000000eb1d415d4c892c24483b65187303ff5558ebae488d64241049c7c601000000e96efafffff400000000000000ffffffffffffff01ffffffffffffff01|@7112,1,@18206,@13389,@13395,@13396,@13393|230,0,@13387 261,0,@13388 503,0,@1145 652,0,@1145 721,0,@105 793,0,@105 1041,0,@1447 1076,0,@657 1097,0,@7104 1140,0,@105 1193,0,@1448 1351,0,@13391 1404,0,@13392 1600,0,@105 13387:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@7099,1,@18199| 13388:D4,584|483b65187306ff5558ca0d015241504c8b304d89f54983fe0f7519415e49891e49c746080300000048c7c0010000004883c408c34d89ee4983fd1975104c8b70084d8b7618415653e9700100004983fe110f854d0100004c8b60084883fb03750c49c7c503000000e91e0100004c8b7424084d8b5e104d89dd4d3be3750c49c7c503000000e9010100004d8b14244d89d34983fa01753e4d89ee4d89f34d8b364983fe0175234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000e9b60000004d89da4983fb03753b4d89ee4d89f34d8b364983fe0375234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb724d89d34983fa05753b4d89ee4d89f34d8b364983fe0575234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb2e4d89dc4983fc07751e4d89ee4d8b364983fe07750949c7c503000000eb0749c7c501000000eb0749c7c501000000415e4d892e49c746080100000048c7c0010000004883c408c3415e49891e49c746080100000048c7c0010000004883c408c3f64424080175634c8b6c24084d8b75004d89ed41ff7508498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700110000004c8b7424204d8b4608488b5c2408ff15520000004989c4415d4c8924244c896c2408483b65187303ff5558eb96415d4c8b7424084d892e49c746080300000048c7c0010000004883c418c3f40000|@7100,1,@18200,@13389| 13389:D4,104|483b65187306ff5558ca0901504150488b1424498d47e8483b45107305ff5550cd0c4989c748c740f802000000488958084c8b7424084c8930ff124989c64d8b6e084983fd017515498b1e488b4424084158488d642408ff2523000000488d642410498b06c3f400|@7102,1,@18201,@13390| 13390:D3,1984|483b65187306ff5558ca090141504c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9ee000000909090e953010000909090e95a010000909090e97f010000909090e94a020000909090e990020000909090e991020000909090e9ae020000909090e9af020000909090e9b0020000909090e9d5020000909090e9df020000909090e9ea020000909090e927030000909090e92b030000909090e932030000909090e93c030000909090e95e030000909090e9c3030000909090e9cd030000909090e9ce030000909090ff7008ff7010488b401848ba68f36508000000004c8b442410ff124889c348ba68f3650800000000488b4424084c8b442410ff124889c348ba68f365080000000058488d6424084158ff224c8b700841ff3641ff760841ff7618498b462048ba68f36508000000004c8b442418ff124889c348ba68f3650800000000488b4424104c8b442418ff124889c348ba68f3650800000000488b4424084c8b442418ff124889c348ba68f365080000000058488d6424104158ff22ff70084c8b7010415653e9c60500004c8b7008ff701048ba68f36508000000004c89f04c8b442408ff124889c348ba68f3650800000000584158ff22ff70104c8b7018ff7020498b064d8b760841f6c601753641ff3648ba68f36508000000004c8b442418ff124889c348ba68f3650800000000488b04244c8b442418ff124889c3488d642408eb1448ba68f36508000000004c8b442410ff124889c34c8b3424498b064d89f64d8b7608488d64240841f6c601753641ff3648ba68f36508000000004c8b442410ff124889c348ba68f3650800000000488b04244c8b442410ff124889c3488d642408eb1448ba68f36508000000004c8b442408ff124889c348ba68f3650800000000584158ff224c8b7008ff7010ff701848ba68f36508000000004c89f04c8b442410ff124889c348ba68f3650800000000488b4424084c8b442410ff124889c348ba68f365080000000058488d6424084158ff22488d6424084889d8c3ff7008488b401048ba68f36508000000004c8b442408ff124989c6ff34244156e9fb030000488d6424084889d8c3488d6424084889d8c34c8b7008ff701048ba68f36508000000004c89f04c8b442408ff124889c348ba68f3650800000000584158ff22488b400848ba68f36508000000004158ff224c8b700841ff364d8b7618415653e9170300004c8b7010498b064d8b760841f6c601752641ff3648ba68f36508000000004c8b442408ff124889c348ba68f3650800000000584158ff2248ba68f36508000000004158ff224c8b7008415653e9770200004c8b7008ff7010415653e921010000488b400848ba68f36508000000004158ff22ff7008488b401848ba68f36508000000004c8b442408ff124889c348ba68f3650800000000584158ff22ff70104c8b7018498b064d8b760841f6c601753641ff3648ba68f36508000000004c8b442410ff124889c348ba68f3650800000000488b04244c8b442410ff124889c3488d642408eb1448ba68f36508000000004c8b442408ff124889c348ba68f3650800000000584158ff22488b401048ba68f36508000000004158ff224c8b7008415653eb12488b400848ba68f36508000000004158ff22f644240801753e4c8b742408498b064d89f641ff760848ba68f3650800000000488b5c24084c8b442418ff124989c4415d4c8924244c896c2408483b65187303ff5558ebbb584883c410c3f6442408010f85940000004c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd01751f498b462048ba68f3650800000000488b5c24084c8b442420ff124989c4eb6d4d89e54983fc05751f498b460848ba68f3650800000000488b5c24084c8b442420ff124989c4eb454983fd07750c4d8b76084156ff742410eb4c498b461848ba68f3650800000000488b5c24084c8b442420ff124989c4eb145b48ba68f36508000000004883c408584158ff22415d4c8924244c896c2408483b65187303ff5558e934fffffff64424080175694c8b6c24084d8b75004d89ed41ff75084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048ba68f3650800000000488b5c24084c8b442438ff124989c4415d4c8924244c896c2408483b65187303ff5558eb90415c4883c408e96cfffffff64424080175424c8b6c24084d8b75004d89ed41ff7508498b0648ba68f3650800000000488b5c24084c8b442418ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb7584883c410c3f64424080175654c8b6c24084d8b75004d89ed41ff7508498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001100000048ba68f3650800000000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558eb945b48ba68f36508000000004883c408584158ff22f64424080175424c8b6c24084d8b75004d89ed41ff7508498b0648ba68f3650800000000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb7584883c418c3f64424080175464c8b6c24084d8b75004d89ed41ff75084d8b36498b461048ba68f3650800000000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb35b48ba68f36508000000004883c408584158ff22f400|@7103,1,@18202|220,0,@7101 240,0,@7101 265,0,@7101 304,0,@7101 324,0,@7101 349,0,@7101 374,0,@7101 416,0,@7101 439,0,@7101 480,0,@7101 500,0,@7101 531,0,@7101 579,0,@7101 599,0,@7101 630,0,@7101 650,0,@7101 675,0,@7101 698,0,@7101 723,0,@7101 759,0,@7101 814,0,@7101 837,0,@7101 856,0,@7101 909,0,@7101 929,0,@7101 944,0,@7101 989,0,@7101 1010,0,@7101 1030,0,@7101 1068,0,@7101 1088,0,@7101 1119,0,@7101 1139,0,@7101 1158,0,@7101 1185,0,@7101 1221,0,@7101 1317,0,@7101 1357,0,@7101 1406,0,@7101 1434,0,@7101 1543,0,@7101 1627,0,@7101 1741,0,@7101 1789,0,@7101 1834,0,@7101 1917,0,@7101 1965,0,@7101 13391:D3,200|483b65187305ff5558cd054c8b304d89f54983fe07751048b860f4650800000000488b5d08ff234d89ee4983fd03750a488b4008488b5208ff224983fe0175374c8b68084c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc34c8b68084c8b62184d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81051620800000000488b5d08ff234f8b74aefc4983fe01751048b808d5620800000000488b5d08ff23498b06c3f4|@7110,1,@18203|25,0,@7107 99,0,@628 154,0,@625 181,0,@1556 13392:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@7111,1,@18204|78,0,@664 13393:D4,264|483b65187306ff5558ca090753415041514152a8010f85db0000004c8b30ff7008498b0641ff7608498d5fd0483b5d107305ff5550cd014989df48c743f8050000004c8b7424184c8973204c8b7424204c8973184c8b7424104c8973104c8b7424284c89730849beb0d6b009000000004c8933ff15a70000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e839ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000|@742,1,@18210,@12181|104,0,@13394 13394:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18205| 13395:D3,752|483b65187306ff5558ca0907415041514152a8010f85b60200004c8b30ff7008498b066a016a016a01488b5424284c8b6c24404c8b74244841564989d84c89eb4c8d4c24084c8b542428ff12ff3424ff742410ff7424206a016a014c8b6c24204d8b65004d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9750100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9f90000004c8b742468498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c89742408ff3424488b5c24106a016a014c8bb424880000004c8bac248000000041564155488b4424684c8d4424104c8b4c24784c8b542470e87dfdffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184c8b6c24484d8965004d89750848c7c0010000004883c450c21000488d642410415e49c7060100000049895e0848c7c001000000c21000f4000000|@7113,1,@18207| 13396:D4,264|483b65187306ff5558ca090753415041514152a8010f85db0000004c8b30ff7008498b0641ff7608498d5fd0483b5d107305ff5550cd014989df48c743f8050000004c8b7424184c8973204c8b7424204c8973184c8b7424104c8973104c8b7424284c89730849be70dbb009000000004c8933ff15a70000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e839ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000|@742,1,@18209,@12181|104,0,@13397 13397:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@7060,1,@18208| 13398:D6,1016|483b65187306ff5558ca0d074c89ce41524c8b30ff70084c8b6818ff7020ff70284c8b5830ff70384c8b63084c8b4b104983fb017d0a488d642428e9ed0100004c3b1da90300000f8ddb0100004c89d94e8d149d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca46734d89d749d1eb4d895af841c642ff404c89d748d1e948c7c001000000f348ab48c7c7010000004d8d5ff04c3b5d107306ff5550cac4774d89df49c743f80100000041c643ff4049893b415348c7c7010000004d8d5ff04c3b5d107306ff5550cac4774d89df49c743f80100000041c643ff4049893b41534d8d5fb84c3b5d107306ff5550ca44774d89df49c743f8080000004d895338488b7c240849897b30498973284d894b204c8b0c244d894b184d8943104d896b0849bd18e0b009000000004d892b4d8d6fe84c3b6d107306ff5550ca045c4d89ef49c745f8020000004d89550849ba90e7b009000000004d89550049c7c1010000004d8d57f04c3b55107306ff5550ca047a4d89d749c742f80100000041c642ff404d890a41524d8d57e84c3b55107306ff5550ca04784d89d749c742f8020000004c8b0c244d894a0849b928e8b009000000004d890a4c8b4c24504c8b442448498d5fb8483b5d107306ff5550ca047f4989df48c743f8080000004c8943384c894b304c8953284c895b204c8963184c896b104c8b6a084c896b0849bd88e8b009000000004c892b4c89f0ff15090200004c8b7424104d8b2e49c7c601000000eb15488d64242848b8d055620800000000488b5d08ff2341f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0160ebb941564c8b74240841ff364c8b7424304983fe03750949c7c603000000eb084c8b7424184d8b3641564c8b34244983fe0375054989c3eb32ff355701000048bb50d665080000000049b818f865080000000049b928f86508000000004c8b542410ff15260100004989c34d8d67b84c3b65107306ff5550ca00084d89e749c74424f8080000004c8b7424304d897424384c8b7424084d897424304c8b34244d89f54d897424284c8b7424404d897424204c8b5424104d89d64d8954241849c7442410010000004c8b5424484d895424084d891c244d89ed4983fd03488d6424107511488d64244049bea89b620800000000eb634d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89f64d897508488d64240849bee0fc9209000000004d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104d89660849c706030000004883c438415d4d8965004d89750848c7c001000000c21000f40000ffffffffffffff01|@7126,1,@18221,@13409,@7125,@12181|296,0,@13399 340,0,@13404 433,0,@13405 515,0,@13406 559,0,@657 707,0,@6959 717,0,@7123 727,0,@7124 876,0,@1145 927,0,@10800 13399:D4,104|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a284c8b62304c8b5a384156415541544153488d5c2420ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@7116,1,@18211,@13400| 13400:D4,584|483b65187306ff5558ca09075341524c8b304d89f54983fe0375094c8b7008e916010000488d6424084d89ee4983fd0775464d8d67e84c3b65107305ff5550cd014d89e749c74424f802000000498944240849c7042403000000415d49bea89b6208000000004d8965004d89750848c7c001000000c220004983fe0175464d8d67e84c3b65107305ff5550cd014d89e749c74424f802000000498944240849c7042403000000415d49bea89b6208000000004d8965004d89750848c7c001000000c220004c8b68084c8b7424104d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b81051620800000000488b5d08ff234c8b7424104f8b74aefc4983fe017515488d64240848b808d5620800000000488b5d08ff23415d4d8b364d8b264d8965004d8b76084d89750848c7c001000000c2200041f6c0010f85eb000000498b004d8b68084983fe010f85a50000004c8b304983fe05755d41f6c10175574c8b70084d8b294d3bf575144c8b342449c7060300000049c7c603000000eb0749c7c6010000004983fe03752a488d642408415d49be20f66508000000004d8b264d8965004d8b76084d89750848c7c001000000c22000488b542430ff124989c6498b06498b5e084c8b4424084c8b4c2428415a488d6424084c8b6c24104c896c24204c8b34244c897424184883c418ff25660000004d89f44983ec027115488d64241048b8d006620800000000488b5d08ff234d89e64d89e8483b65187306ff5558ca0043e90bffffff488d64241048b8c89d620800000000488b5d08ff23f4000000|@7119,1,@18214,@13401|94,0,@1145 170,0,@1145 233,0,@625 270,0,@1556 410,0,@7115 522,0,@105 566,0,@1158 13401:D4,760|483b65187306ff5558ca0907534150415141524c8b304983fe030f859c0000004c8b68084d89ee4d8b6d004983fd05751df644240801740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd0375614d8b76084c8b6c24084d8b6d004d3bf575144c8b342449c7060300000049c7c603000000eb0749c7c6010000004983fe03752e488d642410415d49be20f66508000000004d8b264d8965004d8b76084d89750848c7c0010000004883c408c208004c8b304983fe0175384c8b70084c8b68104d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d8974240849c7042401000000eb3b488b4008488b5c2428ff15040200004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8b7424184d8b1e4d89dd4983fb057514488d64241049bea89b620800000000e97c0100004d89f64d89eb4983fd017514488d64241049bea89b620800000000e95c0100004d89f64d89dd4983fb097514488d64241049bea89b620800000000e93c0100004d89f64983fd030f859a0000004d89f64d8b6e084d89f64d8b56104c8b7424284d8d5fc84c3b5d107306ff5550ca00744d89df49c743f8060000004d8953284d8973204c8b34244d897318488d6424084c8b34244d897310488d64240849be80f66508000000004d89730849be50e6b009000000004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70603000000e9950000004d89f64d8b6e084d89f64d8b56104c8b7424284d8d5fc84c3b5d107306ff5550ca00744d89df49c743f8060000004d8953284d8973204c8b34244d897318488d6424084c8b34244d897310488d64240849be80f66508000000004d89730849bef0e6b009000000004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70607000000415d4d8965004d89750848c7c0010000004883c408c20800f4000000000000|@7120,1,@18215,@13169|151,0,@7115 336,0,@1145 368,0,@1145 400,0,@1145 508,0,@7117 522,0,@13402 662,0,@7117 676,0,@13403 13402:D3,120|483b65187305ff5558cd05524c8b3424498b5628ff124989c6498b06498b5e086a016a014c8b742410498b56084d89f64d8b4e104d89f64d8b56184d89f64d8b762041564c8d442408ff12415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@7118,1,@18212| 13403:D3,120|483b65187305ff5558cd05524c8b3424498b5628ff124989c6498b06498b5e086a016a014c8b742410498b56084d89f64d8b4e104d89f64d8b56184d89f64d8b762041564c8d442408ff12415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@7118,1,@18213| 13404:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80057620800000000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@7121,1,@18216|78,0,@664 13405:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d006620800000000488b5d08ff234d897500c3f4|@7122,1,@18217|36,0,@105 13406:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18218| 13407:D3,56|483b65187305ff5558cd094989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@6965,1,@18219| 13408:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@6967,1,@18220| 13409:D4,144|483b65187306ff5558ca09074989c64d87c14983fa017d02eb5d4c3b15670000007d544c89d14e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a434d89ef49d1ea4d8955f841c645ff404c89ef48d1e948c7c001000000f348ab4c89f04c8b5424084c896c2408ff253100000048b8d055620800000000488b5d08ff23f4ffffffffffffff01|@7152,1,@18246,@13410|121,0,@657 13410:D5,208|483b65187306ff5558ca0907504150415141524c8b742428ff34244156488b44242849b880f86508000000004c8b4c24204c8b542418ff15b40000004989c64983fe01757a4c8b742428498d5fc8483b5d107306ff5550ca00404989df48c743f8060000004c8973284c8b34244c897320488d6424084c8b34244c897318488d6424084c8b34244c897310488d64240849be80f86508000000004c89730849be50ebb009000000004c8933584c8b34244c897424084883c408ff2529000000488d642420498b06c20800f40000000000|@7153,1,@18247,@12181,@13412|36,0,@7127 146,0,@7127 160,0,@13411 13411:D4,64|483b65187305ff5558cd054c8b42084c8b4a104c8b52184c8b6a204c8b62284154ff74240848bb28a06208000000004c896c2410ff251e000000f40000000000|@7137,1,@18224,@13412|39,0,@1177 13412:D11,2528|483b65187306ff5558ca09074989c6534150415141524d8b2e4c8d25080000004f8d64acfc41ffe4e9ab000000909090e9aa000000909090e9ac000000909090e956020000909090e955020000909090e957020000909090e93e030000909090e940030000909090e94e040000909090e9e3050000909090e9e2050000909090e9e4050000909090e9d5060000909090e9a2070000909090e9a1070000909090e9a3070000909090e959080000909090e958080000909090e957080000909090e956080000909090e958080000909090e9f5080000909090488d642420eb05488d642420e9b7010000498b460841ff7610488b5424184c8b5424384c8b7424304156488b5c24284c8b4424184c8b4c2410ff124989c641566a016a014c8b7424504c8b6c244841564155488b442428488d5c24104c8b4424404c8b4c24384c8b542430ff15e7080000ff3424ff742410f6042401740949c7c603000000eb0749c7c6010000004983f6024983f6024983fe030f84c4000000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424284c89730849be08f6b009000000004c8933488b442420ff15770800004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241049c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c440c21000488d6424084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424084c8b6c24104d896e0849c70605000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c440c21000488d642420eb05488d642420e9f4000000498b460841ff761041ff7618488b5424204c8b5424404c8b742438415648bb28a06208000000004c8b4424204c8b4c2418ff124989c64156488b5424284c8b5424484c8b7424404156488b442418488b5c24384c8b4424284c8b4c2420ff124989c64156488b5424304c8b5424504c8b7424484156488b442418488b5c24404c8b4424304c8b4c2428ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64243849c7060b000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420e9b8020000498b460841ff761041ff76184c8b5424404c8b7424384156488b5c24284c8b4424204c8b4c2418ff154e0600004989c64156488b0424ff15370600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e0849c70601000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8933488b5424284c8b5424484c8b7424404156488b4424184c8b4424284c8b4c2420ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b2c244d896e08488d64243849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041ff76084c8b34244d8b2e4d89ec4983fd077520488d6424105a488b442408ff1249bd40a06208000000004883c410e9220100004d89f64d89e54983fc0375204d89f6498b4608488d6424085a488b5c2410ff124989c54883c418e9f60000004d89f64983fd01751e4d89f6498b4608488b542438488b5c2420ff12415d4883c420e9cf0000004d89f641ff7608f6442428017415488d64243048b818fa650800000000488b5d08ff234c8b7424384d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243048b81051620800000000488b5d08ff234c8b7424384d89ed4b8b5caefc4883fb0175074c8b742428eb0e488b442428ff15500400004989c64c8b6c24384d8b5df849c1e30849c1eb074983cb014c8b2c244d89ec4d3beb7215488d64243048b80057620800000000488b5d08ff234c8b6c24384d89e44f8974a5fc488d642408415d4883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420eb05488d642420e9d3010000498b460841ff76104d8b76184983fe010f85d40000004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24204d896e104c8b2c244d896e0849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933488b5424184c8b5424384c8b74243041564c8b4424184c8b4c2410ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424284d896e0849c70617000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d64242848c7c001000000c21000498b46086a016a016a016a016a016a016a016a014c8b7424704c8b6c246841564155488b5c24684c8d4424104c8b4c24584c8b542450ff156a020000415e415c415b415a415941585f5e488d6424104d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c21000488d642420eb05488d642420e9c300000041ff7608498b4610488b5424184c8b5424384c8b7424304156488b5c24284c8b4424184c8b4c2410ff124989c64156488b5c24384c8b7424404156488b4424104c8b4424284c8b4c24204c8b542418ff15630100004989c54983fd017508415e4883c428eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c428498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420eb05488d642420eb05488d642420eb05488d642420e9aa000000498b46084d8b76104983fe010f85840000004c8b7424304c8b6c2428ff34244156415548c7c3010000004c8b4424304c8b4c24284c8b542420ff15940000004989c5488d6424204d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d64242048c7c001000000c21000488d64242048c7c001000000c21000f4000000000000|@7138,1,@18225,@13416,@13418,@13420,@13432,@13433,@13434,@12181,@13415|411,0,@13413 715,0,@1177 1246,0,@1178 1367,0,@7134 1421,0,@625 1515,0,@664 13413:D4,256|483b65187305ff5558cd054c8b304d89f54983fe0575214d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c89f0c34d89ee4983fd1975214d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c89f0c34983fe1d0f858b000000488b40086a016a01488b5a084989e0ff1597000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704241d0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@7132,1,@18222,@13414| 13414:D3,360|483b65187306ff5558ca09014150a8010f850e010000ff30488b40084c8b342441ff36f6c3010f85e30000004c8b33488b5b084d8b364d8b364983fe01757b6a016a014989e0e8b5ffffff415c415b4d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b34244d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24084d8965004d89750848c7c0010000004883c410c3488d6424086a016a014989e0e835ffffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642408415d4d8965004d89750848c7c001000000c3488d64241848b890f8650800000000488b5d08ff234883fb017523415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3488d64240848b890f8650800000000488b5d08ff23f40000000000|@7133,1,@18223|278,0,@7128 302,0,@1172 340,0,@7128 13415:D3,584|483b65187306ff5558ca090753415041514152a8010f85ff0100004c8b30488b40084d8b2e41ff75004c8b24244983fc010f85dc000000488d64240841ff75106a016a014c8b7424484c8b6c244041564155488d5c24104c8b4424384c8b4c24304c8b542428e895ffffffff3424ff742410488b5424384c8b5424584c8b7424504156488b44242848bb28a06208000000004c8b4424384c8b4c2430ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4c8b6c24384c8b24244d896500488d6424404d89750848c7c001000000c2100041ff750841ff751041ff76086a016a014c8b7424604c8b6c245841564155488d5c24104c8b4424504c8b4c24484c8b542440e8b6feffffff3424ff742410488b5424504c8b5424704c8b7424684156488b442430488b5c24404c8b4424504c8b4c2448ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e084c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424204d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4c8b6c24584d8975004c8b34244d897508488d64246048c7c001000000c21000488d642418415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c21000f4000000|@7151,1,@18245|138,0,@1177 547,0,@1172 13416:D4,416|483b65187306ff5558ca090753415041514152a801750dff30ff7008ff7424206a01eb0f488d64242048c7c001000000c21800f6442408010f85930000004c8b6c24084d8b75004d89ed41ff75084d8b2e4983fd0575374d8b6e08498b46104c8b7424404d3bf5751e4c8b7424084c89f34983fe0175054989c4eb09ff15360100004989c4eb054c8b642408eb2a4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e962ffffff5b4883fb017511488d64240848bb28a0620800000000eb05488d642408488b5424184c8b4c24484c8b5424404c8b7424384156488b4424104c8b442418ff124989c64156488b5c24304883c3027115488d64243848b8d006620800000000488b5d08ff234c8b7424504c8b6c24484c8b642440415641554154488b4424204c8b4424404c8b4c24384c8b542430e89dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c428c21800f400000000000000|@7139,1,@18226,@13417|223,0,@1177 295,0,@105 13417:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18227| 13418:D9,1432|483b65187306ff5558ca090753415041514152a8010f853a0500004c8b30488b40084d8b2e4d89ec4983fd010f856001000041ff761041ff761841ff76204c8b7424404156488b5c24384c8b4424304c8b4c24284c8b542420e8a2ffffff4989c641564c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4983fe017533488b442408ff15220500004989c64c2335d00400004c3b35c1040000750949c7c601000000eb0a49be28a0620800000000eb004156f6042401740d488d642408584883c438c20800488b5424384c8b542450ff742440488b44241848bb28a06208000000004c8b4424384c8b4c2430ff124989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24184d896e184c8b6c24204d896e104c8b2c244d896e08488d64240849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424404c8930c208004d89e54983fc050f85cf00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e83dfeffff4989c64156488b442408ff15fd0300004989c64c2335a30300004c3b35940300007508584883c428c20800488b5424204c8b542438ff742428488b44241048bb28a06208000000004c8b4424204c8b4c2418ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c208004983fd070f85cb00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e864fdffff4989c641564c8b742438ff7424104156488b44241848c7c30100000049c7c0010000004c8b4c24384c8b542428ff15f9020000488b5c2428ff15e60200004989c541f6c5017408584883c428c208004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c428c2080041ff761041ff76184c8b7424384156488b5c24304c8b4424284c8b4c24204c8b542418e895fcffff4989c641564c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81051620800000000488b5d08ff234d89ed4d89f64f8b74aefc4983fe017533488b442408ff15f50100004989c64c2335a30100004c3b3594010000750949c7c601000000eb0a49be28a0620800000000eb004156f6042401740d488d642408584883c430c20800488b4424104c8b304983fe190f85b30000004889c0488b40086a016a016a016a016a016a016a016a014c8bb424880000004156ffb42480000000488b5c24504c8d4424104c8b4c24784c8b542470ff155c010000415d415c415b415a415941585f5e4d8d77b84c3b75107306ff5550cac03f4d89f749c746f8080000004989763849897e304d8946284d894e204d8956184d895e104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450019000000eb22488b5424304c8b542448ff742438488b5c24084c8b4424304c8b4c2428ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24184d896e104c8b2c244d896e08488d64240849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c430c20800488d64242048c7c001000000c20800f4000000010000c000000000010000c000000000010000c000000000010000c000000000010000c000000000010000c000000000|@7140,1,@18228,@13420,@13306,@13431,@13419,@13306,@13306|140,0,@625 212,0,@1177 264,0,@1177 515,0,@1177 921,0,@625 993,0,@1177 13419:D4,576|483b65187306ff5558ca09075341514152a8010f85d60100004c8b20ff700841ff742408498b4424104c8b6c24184d8b55f849c1e20849c1ea074983ca014c8b1c244d89de4d3bda7215488d64242848b81051620800000000488b5d08ff234d89f64d89ed4f8b74b5fc4983fe017550488d642408498d5fe8483b5d107306ff5550ca00314989df48c743f8020000004c8b7424184c8973084c8923584d89e9415a488d6424104c8b6c24104c8b6424084c896424084c896c2410e940ffffff498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c89730849be40a06208000000004c89336a016a016a016a016a016a016a016a014c8b5424784c8b742470415641554c8d4424104c8b4c2460ff153e010000415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424384c8b6c243041564155488b442418488b5c243049c7c0030000004c8b4c24284c8b542420e842feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c210004983f801750f488d64241848c7c001000000c21000488b4424104c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c00100000048c7c3010000004c896424084c896c2410e9c4fdfffff4000000|@7150,1,@18241,@13420|81,0,@625 225,0,@1178 13420:D8,1984|488dbc2440ffffff483b7d187306ff5560ca090750534150415141524c8b7424204d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76184d89ed4d89ee41ff75204d89f64d89f541ff76284d89ed4d89ee41ff75304d89f641ff763849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e415649c7c5010000004c8b74242041f6c60175364d8b5e084d89ec4983c4027115488d64246848b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc44983fd017d0a488d642468e9b70000004c3b2dcd0600000f8da50000004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd000eb109000000004d892e4156ff7424706a01eb15488d64246848b8d055620800000000488b5d08ff23f6442408010f85c10000004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54983fc0375334d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849bea8946208000000004d893424eb594983fd017522498b46084c8b7424084c89f34983fe0175054989c4eb09ff15d00500004989c4eb314d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849be40a06208000000004d893424415d4c8924244c896c2408483b65187303ff5558e934ffffffff342448ba58fc6508000000004c8bb424a80000004c8bac24a00000004d8d47c04c3b45107306ff5550ca04604d89c749c740f8070000004c8b6424584d8960304d8968284d8970204c8b7424704d8970184c8b7424784d8970104c8b7424304d89700849be000fb109000000004d89304d8d77e84c3b75107306ff5550ca04014d89f749c746f8020000004c8b6c24284d896e0849bda011b109000000004d892e4156488b442470488b5c24084c8b4c24204c8b542448ff124989c641564c8b74242841ff36ff34246a01f6442408010f85c10000004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54983fc0375334d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849bea8946208000000004d893424eb594983fd017522498b46084c8b7424084c89f34983fe0175054989c4eb09ff15300400004989c4eb314d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849be40a06208000000004d893424415d4c8924244c896c2408483b65187303ff5558e934ffffff415df6442408017407488d642408eb5f488d6424084c8b74241041f6c60175384d8b1e4d8b66084d8b0b4d89ca4983f9037502eb1a4d89d34983fb0774114d89e6483b65187306ff5558ca0060ebcb49c7c603000000eb0749c7c6010000004983fe03740a4c8b742410e9b001000049c7c6010000004983fe0175114c8b7424404d8b2e49c7c601000000eb59488da42480000000498b1e4883fb017507488b5c2418eb0e488b442418ff15290300004889c3488b4424204c8b4424104c8b4c2408415a488d6424104c8b6c24204c8b6424184c896424184c896c24204883c410e90bfbffff41f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb94156488b442468ff15970200004989c64c8b6c24404d8b65f849c1e40849c1ec074983cc0149c7c5010000004983fc01756f4c89eb4c89f0ff155e0200004989c64c8bac24980000004c8b6424104d8965004c8b6424784d8965084c8b6424084d8965104c8b24244d896518488d6424184d8975204c8b7424484d8975284c8b7424404d8975304c8b7424384d89753848c7c0010000004881c498000000c210004d89e24983ea024d89e14983e9024c8b5c24404f8b4c8bfc4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d896b084d890b4d89d44d89dd483b65187306ff5558ca0070e93affffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe0375054d89eeeb0f49be68fc650800000000e906feffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe0375b449c7c60100000041f6c50175464d8b5d004d8b65084983fe03750c49c7c303000000e9b70000004d8b134983fa05750b4d8b5b084c8b542410eb4b488da424a800000048b878fc650800000000488b5d08ff234983fe0375214d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892eeb0749c7c601000000e938ffffff41f6c201754b4d8b024d8b4a08498b384883ff0575234d8b40084d3bc374114d89ca483b65187306ff5558ca007cebd049c7c301000000eb1f488da424a800000048b8f0fc650800000000488b5d08ff2349c7c3030000004d89de4d89e5483b65187306ff5558ca0060e912fffffff4000000000000ffffffffffffff01|@7149,1,@18235,@10958,@13428,@13429,@13430,@13427|178,0,@105 385,0,@13421 413,0,@657 503,0,@1098 594,0,@1178 636,0,@7142 733,0,@13423 782,0,@13425 911,0,@1098 1002,0,@1178 1650,0,@7143 1793,0,@7144 1925,0,@7147 13421:D4,72|483b65187305ff5558cd05524c8b34244d8b7608498b1e4883fb0175054989c6eb09ff15380000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000|@7141,1,@18229,@13422| 13422:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18230| 13423:D5,480|483b65187305ff5558cd0d524c8b34244d8b763041f6c6010f85a90100004d8b264d8b6e084883f8010f85630100004d89e641564c8b34244d8b2e4d89ec4983fd077521488d6424084c8b3424498b56104889d8ff1248b840a0620800000000e91a0100004d89f64d89e54983fc03751b4d89f6498b4608488d6424084c8b3424498b5618ff12e9f30000004d89f64983fd0175184d89f6498b46084c8b742408498b5620ff1258e9d20000004d89f641ff7608f6c3017415488d64241848b818fa650800000000488b5d08ff234c8b7424104d8b6e284d89ec4d8b55f849c1e20849c1ea074983ca014c8b1c244d89dd4d3bda7215488d64241848b81051620800000000488b5d08ff234d89e64d89ed4f8b74aefc4983fe0175054989deeb0f4889d84c89f3ff15d30000004989c64c8b6c24104d8b65284d89e34d8b4c24f849c1e10849c1e9074983c9014c8b14244d89d44d3bd17215488d64241848b80057620800000000488b5d08ff234d89dd4d89e44f8974a5fc488d642408584c8b3424498b5e08488d642408ff25660000004989c44983ec027115488d64240848b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0940e94dfeffff488d64240848b8c89d620800000000488b5d08ff23f4000000|@6965,1,@18231,@13169,@13424|88,0,@1178 192,0,@7134 253,0,@625 352,0,@664 418,0,@105 462,0,@1158 13424:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18232| 13425:D4,200|483b65187305ff5558cd0d52504c8b7424084d8b6e084d89ec4d8b55f849c1e20849c1ea074983ca014c8b1c244d89dd4d3bda7215488d64241048b81051620800000000488b5d08ff234d89e64d89ed4f8b74aefc4983fe0175054989deeb0f4889d84c89f3ff15740000004989c64c8b6c24084d8b65084d89e34d8b4c24f849c1e10849c1e9074983c9014c8b14244d89d44d3bd17215488d64241048b80057620800000000488b5d08ff234d89dd4d89e44f8974a5fc488d64241048c7c001000000c3f40000|@6965,1,@18233,@13426|60,0,@625 159,0,@664 13426:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18234| 13427:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18239| 13428:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18236| 13429:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18237| 13430:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18238| 13431:D3,176|483b65187305ff5558cd09a8010f85940000004c8b30488b40084d8b264d8b5e084c8b73f849c1e60849c1ee074983ce014d3be6721048b81051620800000000488b5d08ff234e8b6ca3fc4d8d77e04c3b75107306ff5550ca09384d89f749c746f8030000004d895e104d8966084d892e4156e888ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@18240|56,0,@625 13432:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18242| 13433:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18243| 13434:D3,232|483b65187306ff5558ca090753415041514152a8010f85ba0000004c8b30ff7008498b0641ff7608488b5424284c8b742438415648bb28a06208000000004c8b4424284c8b4c24204c8b542418ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e85cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f4000000|@742,1,@18244|54,0,@1177 13435:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@6965,1,@18248| 13436:D4,104|483b65187306ff5558ca0d074989d64989c54c89c74c89ce498b45004d8b4508488b0b4c8b5b08488b53184d8b6e084c8b6424084d8b4e10415453415341514150ff7424284989d14989f04889fb4c895424304989ca4c896c2438ff251f000000f4000000000000|@7161,1,@18249,@13437| 13437:D12,3792|483b65187306ff5558ca090753415041514152a8010f85400900004c8b30ff70084d8b2e4d89ec4983fd010f854b04000041ff761041ff761841ff7620488b54242848c7c001000000ff124989c64156488b5424284d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca89b6208000000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424184c8930ff126a016a016a01488b942498000000488b9c24800000004c8b9424900000004c8bb424880000004156488b44242849c7c0010000004c8d4c2408ff124c8b2c24ff7424084d8b75004983fe230f851702000041ff750841ff75104d8b75184d8b2e4983fd110f85e90100004d8b66084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc030f85b70100004d89ee4d8b76084c3b742430750949c7c603000000eb0749c7c6010000004983fe030f8588010000488b54246048c7c001000000ff124989c64156488b5424604d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca89b6208000000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424504c8930ff12488b54246848c7c001000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424104d8965184d89751049c745080100000049c745000300000041554983fe017d18488da4248800000048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004c8b6c24104d8b650049c7c501000000e950080000488d642478eb0c488d642478eb05488d64247848b800ff650800000000488b5d08ff234d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24304d896e184c8b6c24204d896e1049c746080100000049c7060100000041564c8b7424684c89f34983fe0175074c8b742408eb0e488b442408ff15640b00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408488b442440488b742458488b542450488b4c24484c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c247048897c24704c894424784989f04c898c24800000004989d14c899424880000004989ca4c899c24900000004c89a424980000004c89ac24a00000004883c468e984fbffff4d89e54983fc070f8589000000498b46086a016a014889e3ff15860a0000585b4883fb0175054989c6eb09ff156b0a00004989c64156488b0424488b5c24184c8b442410ff154a0a00004889c34c8b4424404c8b4c24604c8b5424584c8b7424504156ff742418488b442410ff151a0a0000488d64240848bb98d1650800000000ff15fd0900004989c549c7c601000000e9870400004983fd050f850d010000498b46086a016a016a01488b542478488b5c24604c8b5424704c8b74246841564c8b4424404c8d4c2408ff12415c415d415e4d8b1c244983fb217520488d642418415b4d89234d896b084d89731048c7c0010000004883c408c238004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70605000000498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c893358488b742410488b54240859488d6424104c8b6c24404c8b6424384c8b5c24304c8b5424284c8b4c24204c8b442418488b7c241048897c24104c894424184989f04c894c24204989d14c895424284989ca4c895c24304c896424384c896c24404883c408e9d7f9ffff41ff7610498b46186a016a016a01488b942480000000488b5c24684c8b5424784c8b74247041564c8b4424484c8d4c2408ff12ff3424ff742410ff7424204c8b6c24104d8b75004d89f44983fe2175324c8b6424504d89ed4d892c244c8b7424084d897424084c8b34244d89742410488d64241848c7c0010000004883c448c238006a016a014d89ed4d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9780100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9fc0000004c8bb42490000000498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c897424084c8b3424ff742408488b542458498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424484c8930ff12488b4424505b488d642410488b742450488b542448488b4c24404c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c246848897c24684c894424704989f04c894c24784989d14c899424800000004989ca4c899c24880000004c89a424900000004c89ac24980000004883c460e9a5f6ffff488d642410488b542448488b442418488b5c24304c8b4424084159488d6424084c8b5424304c8b6c24284c896c24384c8b34244c897424304883c430ff2241f6c5010f851a0100004d8b5d004d8b650841f6c3010f85f30000004d8b134d8b4b084983f9010f85830000004d8b1a4d8b4a084d8b52104d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89500849c700190000004d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d8942184d894a104d895a0849c702030000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb484d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060e9f1feffff488d64242848b838d2650800000000488b5d08ff2348c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424204c89f34983fe0175054889c3eb09ff15d50300004889c358488b742410488b54240859488d6424104c8b6c24404c8b6424384c8b5c24304c8b5424284c8b4c24204c8b442418488b7c241048897c24104c894424184989f04c894c24204989d14c895424284989ca4c895c24304c896424384c896c24404883c408e971f4ffff4983fc0175124d89ee49c7c5010000004d89f4e9f00000004d89e24983ea024d89e34983eb024c89e14883e9024c8b4c24104d8b49084989c849c1e8034983c80149d1e84f0fb60c014e8d0c4d010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23c84983f901750949c7c103000000eb0749c7c1010000004983f1024983f90175054d89ebeb544d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f80400000049c74118010000004d8959104d89710849c701170000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d896b084d890b4d89d44d89dd483b65187306ff5558ca0070e9f8feffff41f6c401753a4d8b5424084d89eb4983c3027118488da4248800000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc04c3b6c245075314d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000eb18488da4248800000048b888ff650800000000488b5d08ff2341f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15830100004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c7060300000041564c8bb424a800000049c706030000004c8bb424880000004c89f34983fe0175074c8b6c2428eb0e488b442428ff150b0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642410488b442458488b742470488b542468488b4c24604c8bac24b80000004c8ba424b00000004c8b9c24a80000004c8b9424a00000004c8b8c24980000004c8b842490000000488bbc24880000004889bc24880000004c898424900000004989f04c898c24980000004989d14c899424a00000004989ca4c899c24a80000004c89a424b00000004c89ac24b80000004881c480000000e935f1fffff400000000|@7162,1,@18250,@13439,@12170,@13440,@12682,@13441,@13442,@13443,@13444,@13438|194,0,@1145 572,0,@1145 719,0,@6950 852,0,@7155 1269,0,@6932 2735,0,@6937 3253,0,@105 3353,0,@7158 13438:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18257| 13439:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18251| 13440:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18252| 13441:D3,496|483b65187306ff5558ca0907415041514152a8010f85c2010000f6c3010f85b20100004c8b30ff7008ff33ff730841ff7608498b46104d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b34244d89304d8d4ff04c3b4d107306ff5550ca01014d89cf49c741f8010000004c8b7424104d89316a016a01488b542440488b5c2458ff742438ff7424384c8d542410ff12ff34244c8b642410488b5424584d8d77e84c3b75107306ff5550ca04104d89f749c746f8020000004c8b6c24284d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424184c8930ff124d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424204c8b6c24084d896e0849c7060100000041564c8b7424484c8b6c244041564155488b442428488b5c24184c8b4424404c8b4c24384c8b542430e85cfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c21000488d642418eb05488d64241848c7c001000000c21000f400000000|@3397,1,@18253| 13442:D3,304|483b65187306ff5558ca0901534150a8010f850a0100004c8b30ff700841ff7608488b54241848c7c001000000ff124989c64156488b5424184d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca89b6208000000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424084c8930ff12488b442410488b5c24204c8b442418e80effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241048c7c001000000c3f400|@742,1,@18254|166,0,@1145 13443:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18255| 13444:D3,256|483b65187305ff5558cd0953a8010f85c5000000ff30488b40084c8b34244d8b76104d8b76284983fe01750949c7c603000000eb0749c7c60100000041566a016a014889e3e8b6ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f4000000|@1120,1,@18256|221,0,@1118 13445:D43,7808|488dbc2440ffffff483b7d187306ff5560ca0d0752534150415141524d8d6fd84c3b6d107305ff5550cd014d89ef49c745f8040000004c8b34244d89f34d8975184c8b7424084c89f24d8975104c8b6424104d89e64d8965084c8b5424184d89d44d89550041554c8b284c8d15080000004f8d54aafc41ffe2e9ab000000909090e9c4010000909090e9b8020000909090e97b040000909090e9e2040000909090e971060000909090e9db060000909090e9dd060000909090e947070000909090e9ff070000909090e901080000909090e9080a0000909090e9050c0000909090e9880c0000909090e9b3120000909090e9b5120000909090e93c130000909090e943130000909090e9df140000909090e9e5150000909090e93a170000909090e9a4170000909090ff7008ff7010488b40186a016a016a014c8b742450498b56084c8b5424684c8b7424604156488b5c243049c7c0010000004c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742470498b56084c8b9424880000004c8bb424800000004156488b442448488b5c24504c8d4c2408ff12ff34244c8b4424106a016a016a014c8bb42490000000498b56084c8b9424a80000004c8bb424a00000004156488b442460488b5c24704c8d4c2408ff12415e58488d642408498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24204c896b184c8973104c8b34244c897308488d64245848c70301000000ff15ae1d00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c210004c8b70084d8b6e104d8b65004983fc017575498b45084d8b064d8b4e084d8b5618498b5e206a016a016a014c8b742440498b56284c8b7424584c8b6c2450ff7424186a0154488304241041564155ff125b584158488d642408ff151f1d00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000498b45084d8b064d8b4e084d8b5618498b5e206a016a016a014c8b742440498b56304c8b7424584c8b6c2450ff7424186a0154488304241041564155ff125b584158488d642408ff15a21c00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642408ff7008ff70104d89f641ff36488b442408ff15561c0000488b5c2410ff15431c00004c8b7424504c8b6c2448498d5fb8483b5d107306ff5550ca01604989df48c743f8080000004c896b384c8973304c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849bee04eb109000000004c8933ff15ce1b00004989c64156488b042448c7c301000000ff15b01b00004989c64983fe03742b498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c440c21000488d6424084c8b34244c8b6424284d89e54d893424488d6424084c8b5424484c8b74244041564155ff742428488b442418488b5c24284c8b4424404c8b4c2448ff152e1b00004989c641564c8b7424504c8b6c2448498d5fb8483b5d107306ff5550ca00604989df48c743f8080000004c896b384c8973304c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849be404fb109000000004c8933488b442410ff15af1a00004989c64156488b442410ff15971a00004889c3488b04244c8b442408ff157d1a00004989c641564c8b3424e9b7170000488b58084c8b4010488b40186a016a016a014c8b742440498b56384c8b7424584c8b6c245054415641554c8b4c243049c7c201000000ff125b584158488d642408ff15201a00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000ff7008ff7010ff7018488b40204c8b7424104d89f54983fe01750949c7c603000000eb314d89ed4d89ee4983fd03750949c7c603000000eb1c4d89f64d8b364983fe03750949c7c603000000eb0749c7c61100000041566a016a014c8b742458498b56104c8b5424704c8b7424684156488b5c24184c8b4424384c8d4c2408ff12ff3424ff7424106a016a014c8b742478498b56104c8b9424900000004c8bb424880000004156488b442440488b5c24384c8b4424584c8d4c2408ff12ff3424ff7424106a016a016a014c8bb424a0000000498b56084c8b9424b80000004c8bb424b00000004156488b442470488b9c248000000049c7c0010000004c8d4c2408ff12ff34244c8b7424104c8b2c244d8b65004983fc0d75644d89ed4d8b650841f6c401744e41f6c40174304983fc0977214d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c501000000eb1f488da424b000000048b8385f620800000000488b5d08ff2349c7c501000000eb0749c7c50100000041554c8b64244849c7c501000000e9401300004c8b6008488b58104c8b40186a016a016a014c8b742440498b56204c8b7424584c8b6c245054415641554c89e04c8b4c243049c7c201000000ff125b584158488d642408ff150f1800004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642430e937010000488b58084c8b60104c8b40186a016a016a014c8b742440498b56484c8b7424584c8b6c245054415641554c89e04c8b4c243049c7c201000000ff125b584158488d642408ff158b1700004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642410488b40084889d2488d642408ff124989c54d8b75004d8b45084d8b2e4983fd017539488d6424184d8b6e084d8b7610498d5fe0483b5d107306ff5550ca00614989df48c743f8030000004c8973104c896b0848c7030d000000eb2f488d6424184d8b7608498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c89730848c7031100000048c7c001000000ff15bf1600004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642430e9d70a0000488d6424084c8b6808ff7010ff70184c8b5424484c8b4c2440498d5fb8483b5d107306ff5550ca047e4989df48c743f8080000004c894b384c8953304d89db4c895b284889d2488953204d89f64c8973184d89e64c8973104c8b7424304c89730849bea04fb109000000004c89334c89e8ff15121600004989c64156488b54241848c7c001000000ff124989c64156488b5424384d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca89b6208000000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124c8b7424584c8b6c2450498d5fb8483b5d107306ff5550ca00604989df48c743f8080000004c896b384c8973304c8b7424204c8973284c8b7424284c8973204c8b7424304c8973184c8b7424384c8973104c8b7424404c89730849be0050b109000000004c8933488b442418ff15d61400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d64244049c70615000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c210004c8b6808ff7010ff70186a016a016a014c8b742450498b56084c8b5424684c8b74246041564c89e8488b5c243049c7c0010000004c8d4c2408ff124c8b3424ff7424084c8b6c24186a016a016a014d8b65004983fc070f8597000000498b5510488b442440ff124989c64d8b2e4d8b76084d8b65004983fc0175354d8b65084d8b5d104d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745000d000000eb2b4d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500110000004c892c244c8b6c24184c896c24084c89742410e9e00000004c8b6c24384983fd03755d4d8b2e4983fd0d751a4c89f0488b5c244049c7c003000000ff154e1300004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b6424404d8965104d89750849c7450017000000eb5b4d8b2e4983fd0d751a4c89f0488b5c244049c7c001000000ff15e91200004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424404d8965104d89750849c745001700000049bea89b6208000000004c892c244c8b6c24184c896c24084c897424105b584158ff157d1200004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000488b40086a016a014c8b742438498b56504c8b7424504c8b6c244841564155488b5c242049c7c00100000049c7c1010000004c8d542410ff12415d488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000ff7008ff70104c8b7424084d8b364c8d2d080000004f8d6c35ff41ffe5eb10eb17eb1eeb25eb2ceb3deb4eeb55eb5c48c7c305000000eb5a48c7c309000000eb5148c7c311000000eb4848c7c303000000eb3f488b54245048c7c001000000ff124889c3eb2c488b54244848c7c001000000ff124889c3eb1948c7c303000000eb1048c7c311000000eb0748c7c3110000006a016a014c8b742448498b56104c8b5424604c8b7424584156488b4424184c8b4424284c8d4c2408ff12415d415e488d6424084d8b65004d8b1c244983fb0d0f85190500004d8b5c24084d8b65084983fc010f85cd0400004d8b4d104c8b24244d8b14244d89d04983fa110f855b01000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e91501000041f6c3017415488d64243848b808ef620800000000488b5d08ff234d0fb643ff4d89c24e8d0445010000004981e0ff0100004981e0810000004981f8810000007505e9980000004e8d1455010000004981e2ff0100004983e2074983fa03750949c7c203000000eb0749c7c2010000004983fa03740949c7c203000000eb1a4983f901750949c7c203000000eb0749c7c2010000004983f2024983fa037440488d6424384d8b2b4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e9570300004d89e44d89c24983f80d0f858901000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e94301000041f6c3017415488d64243848b808ef620800000000488b5d08ff2349c7c2110000004c89c848d1e849d1ea4833d249f7f24c8d144501000000490fb67bff4989f8488d3c7d010000004881e7ff0100004881e7810000004881ff810000007505e9a80000004e8d0445010000004981e0ff0100004983e0074983f803750949c7c003000000eb0749c7c0010000004983f803740949c7c203000000eb254d8b43f849c1e00849c1e8074983c8014d3bd0720949c7c203000000eb0749c7c2010000004983fa037445488d64243849d1e94f0fb62c0b4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e9be0100004d89e44983fa0f0f857b01000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e93801000041f6c3017415488d64243848b808ef620800000000488b5d08ff2349c7c2110000004c89c848d1e849d1ea4833d249f7f24c8d1445010000004d0fb643ff4d89c14e8d0445010000004981e0ff0100004981e0810000004981f8810000007505e99d0000004e8d0c4d010000004981e1ff0100004983e1074983f901750949c7c103000000eb0749c7c1010000004983f903740949c7c103000000eb254d8b4bf849c1e10849c1e9074983c9014d3bd1720949c7c103000000eb0749c7c1010000004983f903743a488d6424384f8b6c93fc498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e54c896b08488d64240848c7031b0000004883c430eb37498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b2c244c896b08488d64240848c7031b0000004883c430eb37498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b2c244c896b08488d64240848c7031b0000004883c43048c7c001000000e946060000488d642430e9940000004c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89306a016a016a014c8b742440498b56584c8b5424584c8b7424504156488b5c242049c7c0010000004c8d4c2408ff125b584158488d642408ff151e0b00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d64243048c7c001000000c21000ff7008ff7010488b40184c8b6c24504c8b542448498d5fb8483b5d107306ff5550ca057c4989df48c743f8080000004c8953384c896b304d89db4c895b284889d2488953204d89f64c8973184d89e44c8963104c8b7424384c89730849be6050b109000000004c8933ff15700a00004989c641566a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442430488b5c243849c7c0010000004c8d4c2408ff12488b1c24ff7424084c8b7424184d8b2e4983fd070f85a2000000498b5e084d8b46104883fb017d15488d64246848b83060620800000000488b5d08ff2348c7c001000000ff15e60900004989c6498d5fe0483b5d107306ff5550ca00404989df48c743f80300000048c74310010000004c89730848c70329000000488b4424204c8b04244c8b4c2428ff15990900004989c6488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000488b4424204c8b04244c8b4c2428ff15500900004989c6488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000ff7008ff7010ff70184c8b7424104d8b364c8d2d080000004f8d6c35ff41ffe5eb10eb17eb1eeb25eb2ceb3deb4eeb55eb5c48c7c305000000eb5a48c7c309000000eb5148c7c311000000eb4848c7c303000000eb3f488b54245848c7c001000000ff124889c3eb2c488b54245048c7c001000000ff124889c3eb1948c7c303000000eb1048c7c311000000eb0748c7c3110000006a016a014c8b742450498b56104c8b5424684c8b7424604156488b4424184c8b4424304c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742470498b56084c8b9424880000004c8bb424800000004156488b442440488b5c24504c8d4c2408ff12415e415d488d64240848c7c001000000e93e020000488d642408ff70084c8b6810ff70184c8b5424484c8b4c2440498d5fb8483b5d107306ff5550ca047e4989df48c743f8080000004c894b384c8953304d89db4c895b284889d2488953204d89f64c8973184d89e44c8963104c8b7424304c89730849bec050b109000000004c89334c89e8ff15960700004989c54d8b75004983fe0d7574488d6424084d8b750841f6c601745341f6c60174384c3b3424488d642408750e488d64242849c7c603000000eb0c488d64242849c7c6010000004983fe03752748b8a800660800000000c21000488d64243048b8385f620800000000488b5d08ff23488d64243048b8b800660800000000c210004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d64240849c70627000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c210004c8b6008488b58106a016a016a014c8b742440498b56184c8b7424584c8b6c2450415641554c89e04c8b44242849c7c1010000004c8d542410ff125b584158488d642408ff155e0600004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488b5808488b40106a016a016a014c8b742440498b56404c8b7424584c8b6c2450415641554c8b44242849c7c1010000004c8d542410ff125b584158488d642408ff15e70500004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c2100041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b2c244c896b18488d6424084c8973104c8b7424204c89730848c70325000000ff15310500004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c458c2100041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff15b50400004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c8b6c243048c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc48c7c30100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0940ebba4883fb0175054889c3eb09ff15940300004889c34883fb017504415eeb12488b0424ff15750300004989c6488d6424084156f6442408010f85d4000000f6842488000000010f85c60000004c8b742408498b1e4c8bb424880000004d8b164c8bb424a800000049c706030000004c8b7424584d8b264d89f64d8b5e084d89f64d8b6e104c8b4c24384d8b014d89c94d8b71084d89c94d8b49104983fa03750c49bab053650800000000eb0a49bab01e650800000000415641554154415341524d89c248c7c0010000004c8b842498000000ff15be0200004889c34883fb01750a584881c4b8000000eb12488b0424ff1599020000488da424c000000048bbc0aa620800000000ff15790200004989c6eb5b498d5fd0483b5d107303ff55504989df48c743f8050000004c8b7424584c8973204c8b7424384c8973184c8b7424104c8973104c8bb424880000004c89730848c70309000000488b0424ff151c0200004989c6488da424c0000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041f6c60175274d8b264d8b6e084983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebd349c7c6010000004983fe030f85180100006a016a01488b442410488b5c24204989e0ff1593010000ff3424ff742410488b442440488b5c2420ff15740100004c8bb424800000004c8b6c2478498d5fb8483b5d107306ff5550ca01604989df48c743f8080000004c896b384c8973304c8b7424484c8973284c8b7424504c8973204c8b7424584c8973184c8b7424604c8973104c8b7424684c89730849be2051b109000000004c8933ff15fc0000004989c64c8b6c245849c7450003000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b2c244c896b10488d6424084c89730848c70305000000488b0424ff15a70000004989c6488d642420498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c21000488d6424084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e104c8b2c244d896e08488d64241049c70605000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c438c21000f40000|@7166,1,@18265,@13361,@12181,@13454,@13456,@13361,@13361,@13457,@13458,@13459,@13460,@13361,@13361,@13461,@13463,@12181,@13465,@13465,@13471,@12181,@13472,@13474,@11046,@11046,@12181,@12181,@13476,@13478,@13480,@13482,@13484,@13486,@12181,@13487,@13489,@12181,@13361,@13490,@13491,@13493,@13453|969,0,@13446 1227,0,@13447 1766,0,@723 2354,0,@13448 2512,0,@1145 2660,0,@13449 3222,0,@1145 3775,0,@1711 4138,0,@1711 4544,0,@1711 5287,0,@13450 5407,0,@731 5982,0,@13451 6081,0,@7164 6099,0,@723 6120,0,@7165 7132,0,@6178 7144,0,@5750 7225,0,@1263 7571,0,@13452 13446:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18258| 13447:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18259| 13448:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18260| 13449:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18261| 13450:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18262| 13451:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18263| 13452:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18264| 13453:D4,128|483b65187305ff5558cd094883f80175044889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09684d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0940ebbc415648c7c001000000e892ffffff4889c358ff2520000000f400000000000000|@7073,1,@18307,@13361| 13454:D4,760|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a7000000909090e9a6000000909090e90d010000909090e90c010000909090e90b010000909090e90a010000909090e909010000909090e95c010000909090e95b010000909090e95a010000909090e95c010000909090e991010000909090e9d1010000909090e9d0010000909090e923020000909090e922020000909090e921020000909090e920020000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb74ff70084c8b7010ff70184c89f0488b5c2410e8f8feffff4989c64156488b442408488b5c2418e8e4feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241048c7000b000000c3488d642408eb05488d642408eb05488d642408eb05488d642408eb60ff70084c8b7010ff70184c89f0488b5c2410e86dfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64241048c70015000000c3488d642408eb05488d642408eb05488d642408e98a000000488b5808488b0424ff15130100004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3ff7008488b4010488b5c2408e8c3fdffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c7001f000000c3488d642408eb604c8b7008ff7010ff70184c89f0488b5c2410e86efdffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c70023000000c3488d642408eb05488d642408eb05488d642408eb05488d642408c3f4000000000000|@7167,1,@18266,@13455| 13455:D3,168|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8a8dd650800000000488b5d08ff23ff30488b4008f6c3017552ff33488b5b08e8bbffffff4989c64c8b6c24084983fd037509488d6424104c89f0c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3488d64240848b8a8dd650800000000488b5d08ff23f4000000000000|@6999,1,@18267|33,0,@6997 147,0,@6997 13456:D3,360|483b65187306ff5558ca090141504883f801753e4883fb017523415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c3488d64240848b8a8dd650800000000488b5d08ff23ff30488b4008f6c3010f85ef000000ff33488b5b086a016a014989e0e88dffffff415b415e4c8b6c24084983fd0175484d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d89ee4c8b6c24084d895d004d89750848c7c0010000004883c410c34c8b2c244d8b6d00488d6424084d8b65004d8b55084d8b4d104d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d894d184d8955104d89650849c74500030000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244c8b6c24084d8965004d89750848c7c0010000004883c410c3488d64241048b8a8dd650800000000488b5d08ff23f40000|@6999,1,@18268|30,0,@1172 68,0,@6997 343,0,@6997 13457:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18269| 13458:D3,424|483b65187306ff5558ca09074c89d7483bc3750a48c7c001000000c228004989c649d1ee4d89c54983ed014d0faff54983c6014f8d6c31ff4c8b7424284d8d5fe04c3b5d107306ff5550ca89634d89df49c743f8030000004d896b104d89730849893b4989c549d1ed4d89c64983ee014d0fafee4983c5014c8b7424204f8d542eff4c8b7424184c8b6424104d8d6fe04c3b6d107306ff5550ca895f4d89ef49c745f8030000004d8955104d8965084d8975004c8b7424084d8d67e04c3b65107306ff5550ca896b4d89e749c74424f8030000004d896c24104d8974240849c704241b0000004c8b7424084d8d6fd84c3b6d107306ff5550ca895b4d89ef49c745f8040000004d895d184d8965104d89750849c74500250000004d8d77e84c3b75107306ff5550ca89234d89f749c746f8020000004d896e0849c7060500000041564883c0024c8b7424304c8b6c24284c8b6424204c8b5c24184c8b542410415641554154415341524989fae88ffeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c22800f40000000000|@7168,1,@18270| 13459:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18271| 13460:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18272| 13461:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18273,@13361,@13462| 13462:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18274,@15146|74,0,@224 88,0,@15146 13463:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18275,@13361,@13464| 13464:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18276,@15146|74,0,@224 88,0,@15146 13465:D19,3304|483b65187306ff5558ca090350415041514c8b334c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9a3000000909090e9ac000000909090e993000000909090e98b000000909090e9ac000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e99f000000909090e953000000909090e94b000000909090e943000000909090e99a000000909090e9a9000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e994000000909090e9030000009090904c8b6c240849c7c601000000e97f0b00004c8b7308ff73104c8b64241049c7c501000000e9c90a0000ff73084c8b7310ff73184c8b64241849c7c501000000e9e30900004c8b7308ff7310ff73184c8b64241849c7c501000000e9fd080000488d642408415e48c7c0010000004883c408e99a0800004c8b7308ff731048c7c001000000e914080000488b5b0848c7c0010000004c8b0424ff15070c00004989c6415648c7c001000000488b1c244c8b442410ff15e40b00004989c64983fe0175114c8b6c241049c7c601000000e98b040000488d6424104d8b3641ff36498b46086a016a014889e3ff15a60b0000ff34244c8b7424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b24244d89650041554c8b6c24204d8b65004983fc05751a4d89ed41ff750849c7c50300000049c7c401000000e9c20000004c8b74242848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e0849c70611000000498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24304c896b184c8b2c244c896b10488d6424084c89730848c703230000004883c430ff25820a00004c3b642410720b4155ff742438e98f0000004d89e24983c2024d89e349c1eb034983cb0149d1eb4f0fb61c1e4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0375054d89ebeb0749c7c3010000004d89d44d89dd483b65187306ff5558ca0070e95ffffffff60424010f85060100004c8b2c244d8b75004d89ed41ff75084d8b264d89e54983fc010f85940000004d8b5e104d8b6e184d8b76204c8b6424184d3be375704c3b6c242875624c8b6c24104983fd0375504d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c410eb1a488d642418eb05488d642418eb05488d64241849c7c601000000eb514983fd03753f498b4618ff150c0900004989c64c23358a0800004c3b357b0800007514415d4c892c24483b65187303ff5558e90cffffff488d64241849c7c601000000eb0c488d64241849c7c601000000eb0c488d64241049c7c6010000004983fe017516488d6424084c8b74242848c7c001000000e9c40000004d8b36498b1e4d8b66084d8d6fd84c3b6d107306ff5550ca08104d89ef49c745f8040000004c8b7424384d8975184c8b34244d897510488d64240849c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e48c7c0010000004883c43841f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff25d507000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e0849c70611000000498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24304c896b184c8b2c244c896b10488d6424084c89730848c703230000004883c430ff251707000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6424084d89e54d89660849c706290000004d89ed41f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff154c0600004989c6eb0049c7c5010000004c8b64240841f6c40175374d8b5424084d89eb4983c3027115488d64242848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34983fd010f8c990000004983fd017d07488d642428eb7c4c3b2d700500007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb384d89da4983ea10eb2a488d64242848b870d5640800000000488b5d08ff23488d64242848b828dc650800000000488b5d08ff234d3bd3751e49c7c30100000049c7c10300000049c7c20100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8dac0000004c89cf490bfb4981f901010000755a48d1ef4c89d648d1ee41883c344c89c14883c1027115488d64242848b8d006620800000000488b5d08ff234c89d24883c20248c7c70100000048c7c6030000004989c84989d24989f14989fb483b65187306ff5558ca007feb8e4c89c14883c1027115488d64242848b8d006620800000000488b5d08ff234b8d7409ff4c89d24989c84989d24989f14989fb483b65187306ff5558ca007fe94bffffff4983fb017502eb0a49d1eb49d1ea47881c1441806424ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d892b4d89dd498d5fd8483b5d107306ff5550ca00604989df48c743f8040000004c8b6424204c8963184c896b104c89730848c70323000000584883c420ff25c803000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054989c0eb09ff15610300004989c0488b4424185b41594883c410e91df6ffff41f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff25f902000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242849c7c0010000004c8b4c2418e871f5ffff4989c64156488b442430488b5c241849c7c0010000004c8b4c2420e851f5ffff4989c6498d5fd8483b5d107306ff5550ca00404989df48c743f8040000004c8b6c24104c896b184c8973104c8b34244c897308488d64240848c7031500000058488d642428ff252602000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242849c7c0010000004c8b4c2418e8a6f4ffff4989c64156488b442430488b5c241049c7c0010000004c8b4c2420e886f4ffff4989c6498d5fd8483b5d107306ff5550ca00404989df48c743f8040000004c8973184c8b34244c897310488d6424084c8b7424104c89730848c7030b00000058488d642428ff255301000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242049c7c0010000004c8b4c2410e8dbf3ffff4989c6498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24084c896b104c89730848c7030500000058488d642420ff25ad00000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0860ebbc41564889d8488b5c24084c8b442418ff154c0000004889c358488d642418ff2535000000f400000000ffffffffffffff01010000c000000000010000c000000000|@7169,1,@18277,@13361,@13467,@13361,@13361,@13361,@13361,@13468,@13361,@12170,@13361,@13361,@13306,@13361,@13469,@13470,@13466|1824,0,@105 2007,0,@5275 2028,0,@6990 2165,0,@105 2242,0,@105 13466:D3,296|483b65187306ff5558ca09014883fb01750848c7c001000000c3ff33488b5b084d8b304d89f5493bc67c0d488d64240848c7c001000000c34d8b70084883f8017d0a488d642408e9c8000000493bc50f8dba0000004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01744f4883c0027115488d64240848b8d006620800000000488b5d08ff23e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d6424084883c002711048b8d006620800000000488b5d08ff23e9f1feffff488d64240848b818e9640800000000488b5d08ff23f4000000|@7172,1,@18282|173,0,@105 252,0,@105 278,0,@5394 13467:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@7005,1,@18278| 13468:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18279| 13469:D3,1032|483b65187305ff5558cd094989c64d89f449c7c5ffffffff41f6c40175274d8b14244d8b5c24084d3bd57e02eb034d89ea4d89d54d89dc483b65187306ff5558ca0870ebd34983c502711048b8d006620800000000488b5d08ff234983fd017d02eb774c3b2d960300007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca08684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb1e4d89da4983ea10eb1048b870d5640800000000488b5d08ff234d3bd375184d89eb4983c30e49c1eb034983cb0149c7c201000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca087cebc04d3bd37202eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca087cebd641f6c6010f8584000000498b0e4d8b5e084883f9017d02eb65493bcd7d604989c949c1e9034983c9014d89ca49d1ea4f0fb614144e8d1455010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d0bd049d1ea49d1e94788140c4d89de483b65187306ff5558ca0870eb8248b848d6640800000000488b5d08ff234983fd010f8c8d0000004983fd017d02eb754c3b2dfd0100007f6c4c89e84883c07e49c7c68100000048d1e849d1ee4833d249f7f64c8d1c45010000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08384d89f749d1ea4d8956f841c646ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b870d5640800000000488b5d08ff2348b828dc650800000000488b5d08ff234d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040e004d89d14983c1024d89ca483b65187306ff5558ca087cebba4d3bc50f8df50000004c89c748c1ef034883cf0148d1ef490fb63c3c488d3c7d010000004c89c14883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014823fe4883ff0174084c89cf490bfaeb034c89d74981f901010000755848d1ef4c89de48d1ee41883c364c89c14883c102711048b8d006620800000000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca087fe940ffffff4c89c14883c102711048b8d006620800000000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca087fe902ffffff4983fa017502eb0d4d89d449d1ec49d1eb4788241e418066ffbf4c892b4c89730848c7c001000000c3f400ffffffffffffff01ffffffffffffff01|@7170,1,@18280|77,0,@105 220,0,@5275 468,0,@5279 619,0,@5275 635,0,@6990 847,0,@105 922,0,@105 13470:D3,888|483b65187306ff5558ca09014883fb017501c34c8b33488b5b084d8b2e4983fd1175334d8b66084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03750c4d89ee4d8b76084d89c5eb0848c7c001000000c341f6c50175614d8b5d004d8b65084d8b134983fa03753f4d8b53104d3bd6750949c7c203000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca09094d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0961eb9949c7c60100000041f6c6010f85940200004d8b264d89e54d8b1c244983fb03754c4d8b6424184d8b1c244983fb1775344d8b5c24084d8b6424184d8b1b4983fb1175184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f85270200004d89ee4d8b76184d8b6e084d8b76104d8b6d08a8010f859e0100004c8b184d8b234d8b5b084d3be57505e9e00000004d8b0c244d89ca4983f901753a4d8b55004983fa01752b4d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb05e99e000000e93b0100004d89d14983fa0375354d8b55004983fa0375264d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037502eb60e9fd0000004d89ca4983f90575374d8b55004983fa0575284d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb02eb20e9bd0000004d89d44983fc070f85b00000004d8b65004983fc070f85a200000041f6c3010f85880000004d8b234d3bf47e0949c7c403000000eb0749c7c4010000004983fc03757a4d8d67e84c3b65107306ff5550ca08694d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca08314d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca08414989c748c740f8010000004c8930e91cfdffff48b8508a620800000000488b5d08ff2348c7c001000000c34d8d67e84c3b65107306ff5550ca08614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08314d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca08414989c748c740f8010000004c8930e996fcffff48c7c001000000c3f40000000000|@7171,1,@18281|742,0,@1028 13471:D3,264|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64d8b364d8b2e4983fd0175344d8b6e084d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424184883c0027115488d64242048b8d006620800000000488b5d08ff23488b5c24104c8b442408e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f400000000|@741,1,@18283|179,0,@105 13472:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18284,@13361,@13473| 13473:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18285,@15146|74,0,@224 88,0,@15146 13474:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18286,@13361,@13475| 13475:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18287,@15146|74,0,@224 88,0,@15146 13476:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18288,@13361,@13477| 13477:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18289,@15146|74,0,@224 88,0,@15146 13478:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18290,@13361,@13479| 13479:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18291,@15146|74,0,@224 88,0,@15146 13480:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18292,@13361,@13481| 13481:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18293,@15146|74,0,@224 88,0,@15146 13482:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18294,@13361,@13483| 13483:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18295,@15146|74,0,@224 88,0,@15146 13484:D4,440|483b65187306ff5558ca09014989c54889d841504d8b75004c8d25080000004f8d64b4fc41ffe4e9ab000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a7000000909090e9a6000000909090e9c1000000909090e9c0000000909090e9bf000000909090e9be000000909090e9bd000000909090e9c6000000909090e9c5000000909090e9c4000000909090e9c3000000909090e9cc000000909090e9d5000000909090e9d4000000909090e9dd000000909090e9dc000000909090e9db000000909090e9da000000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb284d8b751041ff75184889c34c89f04c8b442408e8eefeffff4889c3584158e9e3feffff488d642408eb05488d642408eb05488d642408eb05488d642408eb164d8b6d104889c341584c89e8e9b6feffff488d642408eb05488d642408eb05488d642408eb274d8b6d085b4989c04c89e8ff25600000004d8b6d104889c341584c89e8e97ffeffff488d642408eb164d8b6d084889c341584c89e8e967feffff488d642408eb05488d642408eb05488d642408eb05488d642408c3f4000000|@7173,1,@18296,@13485| 13485:D3,232|483b65187306ff5558ca0901a8010f85cb000000f6c3010f85c000000041f6c0010f85b60000004c8b28488b40084c8b23488b5b084d8b304d8b40084d8b55004d89d34d8b0a4983f91175544d8b52084d8b124983fa05750949c7c203000000eb0749c7c2010000004983fa0375314d89dd4d8b6d084d8b6d084d8b24244d8b6424084d3bec750949c7c503000000eb0749c7c5010000004983fd037502eb0749c7c6010000004156e852ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3eb0048c7c001000000c3f4|@7174,1,@18297| 13486:D3,80|483b65187305ff5558cd01a8017533488b4008e8e8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c348c7c001000000c3f40000000000|@742,1,@18298| 13487:D4,576|483b65187306ff5558ca090753415041514152a8010f85150200004c8b28ff70084d8b750041ff750841ff3641ff760841ff7610488b54244048c7c001000000ff124989c64156488b5424404d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca89b6208000000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124c8b7424604c8b6c24584c8b642468498d5fb8483b5d107306ff5550ca00704989df48c743f8080000004c8963384c8b6424304c8963304c8b6424484c8963284c896b204c8973184c8b7424404c8973104c8b7424384c89730849be108cb109000000004c8933488b442408ff15f50000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d6424184c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e801feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@742,1,@18300,@12181|185,0,@1145 333,0,@13488 13488:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@7060,1,@18299| 13489:D3,296|483b65187305ff5558cd094989c54889d84d8b75004c8d25080000004f8d64b4fc41ffe4e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e984000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e978000000909090e953000000909090e94b000000909090e943000000909090e967000000909090e967000000909090e92b000000909090e966000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c34d8b751041ff75184889c34c89f0e818ffffff4889c358e90fffffff4d8b6d104889c34c89e8e900ffffff48c7c003000000c34d8b6d104889c34c89e8e9e9feffff4d8b6d084889c34c89e8e9dafefffff400|@7173,1,@18301| 13490:D3,152|483b65187305ff5558cd01a80175794c8b30488b40084d8b364d8b2e4d8b66084d8b5e104d8d77d84c3b75107306ff5550ca01384d89f749c746f8040000004d895e184d8966104d896e0849c706030000004156e8a7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@742,1,@18302| 13491:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18303,@13361,@13492| 13492:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18304,@15146|74,0,@224 88,0,@15146 13493:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@7073,1,@18305,@13361,@13494| 13494:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18306,@15146|74,0,@224 88,0,@15146 13495:D4,616|483b65187306ff5558ca0d074989c652534150415141524d8b6e0841f6c5010f85b001000041ff7500498b0641ff76106a016a016a014c8b742448498b56084c8b7424584156488b5c244049c7c0010000004c8d4c24084c8b542430ff12ff3424ff7424106a016a016a014c8b742470498b56084c8bb424800000004156488b442450488b5c246849c7c0010000004c8d4c24084c8b542458ff12415d58488d6424086a016a014d8b75004983fe0d0f85830000004d8b750841f6c601744b41f6c60174304d89f549d1ed4c8b7424604983ee014d0fafee4983c5014c8b7424384f8d742eff48c70424010000004c89742408eb41488d64247048b8385f620800000000488b5d08ff234d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e4c8934244c8b7424384c89742408eb2c4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e4c8934244c8b7424384c89742408415d415c4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e084c8b6c24084d892e41564c8b7424084c89f34983fe0175054989c6eb09ff15d20000004989c64c8b6c24484c8b24244d896500488d6424084d89750848c7c0010000004883c460c20800498b0641ff76106a016a016a014c8b742440498b56084c8b7424504156488b5c243849c7c0010000004c8d4c24084c8b542428ff12415d415e488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b1c244d895c2410488d64241049c7442408010000004d892c24415d488d6424084d8965004d89750848c7c0010000004883c410c20800f4|@7175,1,@18308,@13496|252,0,@723 13496:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18309| 13497:D4,312|483b65187306ff5558ca09074989db4150415149c7c5010000004d8d77f04c3b75107306ff5550ca012c4d89f749c746f80100000041c646ff404d892e41564d8d67d04c3b65107306ff5550ca010c4d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c7042401000000498d5fe8483b5d107306ff5550ca011c4989df48c743f802000000c643ff4048c743080100000048c7030100000049be3897b109000000004d89e549895d204d8955184d895d104c8b1c244d895d084d89750041806424ffbf49bed89eb109000000004989dd4d8965084d8975008063ffbfff154b0000004989c44c8b34244d8b36488d642408415d4d8965004c8b24244d896508488d6424084d89751048c7c001000000c3f400000000|@7187,1,@18321,@12181|189,0,@13498 232,0,@13502 13498:D8,976|483b65187305ff5558cd0d5250534c8b7424104d8b66084d89e541ff34244d89f649c74500010000004d89f6498b5e20488b442410ff15cd0300004989c641564c8b6c24204d8b75084d89f44d8b364c8b5c24084983fb03750d4d89e549c7450003000000eb004983fe037502eb794c8b74241841f6c60175314d8b264d8b6e084d8b6424104d8b6424284983fc01750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebc949c7c6010000004983fe037502eb2e4c8b74241841f6c60175164d8b264d8b6e084d8b6424104d8b642418e94102000049c7c6010000004983fe0375254c8b7424104c8b2c244d892e488d64240849c746080100000048c7c0010000004883c420c3488b0424ff15e90200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892641564d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15140200004989c6eb00498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7001f0000004c8b342448c7c30100000041f6c601752a4d8b264d8b6e084d8b6424084c3be37e02eb034989dc4c89e34d89ee483b65187306ff5558ca0940ebd04883c3027115488d64242848b8d006620800000000488b5d08ff236a016a014c8b7424304d8b46104d89f64d8b56184989e1ff1561010000488b1424ff74240848c7c001000000ff124989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004c8b2c244d896810488d6424184d89700849c7000d0000004c8b7424204d8b760849c70603000000488b042448c7c301000000ff15f10000004989c6488d6424084c8b6c240849c74500010000004d89750848c7c0010000004883c420c341f6c401751f4d8b14244d8b5c24084d8b0a4983f905750b4d8b52084c8b4c2418eb38eb2d49c7c4010000004983fc03750c49c7c603000000e988fdffff4d89ee483b65187306ff5558ca0040e951fdffff49c7c403000000ebd141f6c101752a498b394d8b4108488b7f08493bfa750949c7c203000000eb184d89c1483b65187306ff5558ca007eebd049c7c2010000004983f2024983fa037502ebb44d89dc483b65187306ff5558ca0070e94efffffff400|@7177,1,@18311,@13500,@12161,@12170,@13501,@13499|612,0,@105 13499:D4,344|483b65187305ff5558cd0953a8010f85300100004c8b30ff700841ff3641ff76084d8b7610498b0641ff760841ff761041ff761841ff762041ff762841ff763041ff7638488b5c2450ff15210100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084c8b24244d896518488d6424084c8b24244d896510488d6424084c8b24244d896508488d6424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e8ebfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@742,1,@18314,@12181| 13500:D4,240|483b65187306ff5558ca0901534150a8010f85cb0000004c8b30ff700841ff3641ff7608488b442418488b5c242049c7c001000000ff15cd0000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c706030000004156488b5c24184883c3027115488d64242048b8d006620800000000488b5d08ff23488b4424084c8b442410e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3488d64241048c7c001000000c3f4|@7178,1,@18312,@11046|146,0,@105 13501:D3,176|483b65187305ff5558cd01a8010f858e0000004c8b30488b40084d8b76084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e88effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18313| 13502:D5,600|483b65187305ff5558cd05524c8b284d89ee4983fd1f0f85830000004c8b7008ff7010488b5c24084c8b43084c89f0ff15430200004989c64156488b442408488b5c2410ff15260200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe190f859f0100004c8b68084d8b75184983fe010f85800100004d8b75284983fe03750949c7c603000000eb0749c7c6010000004983fe030f85550100004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89306a016a014c8b742410498b56084889e3ff12415c415d488d6424084983fc01757241f6c501755c4d8b5d004d89de4d8b65084d8b1b4983fb0375184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0375234d8b7618498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b89804660800000000488b5d08ff234d8b34244d8b6424084983fc01754f4983fd0175494d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b89804660800000000488b5d08ff23488d642408eb05488d64240848c7c001000000c3488d64240848c7c001000000c3f40000|@7182,1,@18315,@12181,@13503|440,0,@7179 550,0,@7179 13503:D4,80|483b65187306ff5558ca0901534150a801752bff30488b4008488b5c24104c8b442408e8d8ffffff4889c3584c8b4424084159488d642408ff252a000000488d64241048c7c001000000c3f400000000|@1573,1,@18316,@13504| 13504:D9,960|483b65187306ff5558ca09034c89ca534c8b304d89f54983fe010f8592000000ff7008ff7010ff7018488b40204c89c3ff15ca0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d89ee4983fd057562488b40084c89c3ff15300300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34983fe070f85a3000000488b40086a016a014889e3ff124c8b2c24ff74240841f6c501740948c7c001000000eb4c4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424184c89f34983fe0175054889c3eb09ff15400200004889c34883fb017506584883c418c3584883c418ff251e020000ff7008ff7010488b40184c8b304983fe190f85600100004c8b68084d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca04404989c748c740f80200000048c74008010000004c89306a016a014889e3ff12415c415d4983fc0175274c8b34244c89f34983fe017509488d6424084c89e8c34c89e84889db488d642408ff25630100004d8b34244d8b6424084983fc010f859c0000004983fd010f858b0000004d8b2e4d8b66084d8b76104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703190000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3488d642408eb05488d64240848b86805660800000000488b5d08ff234c89c3ff158e0000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3f4000000000000|@7186,1,@18317,@12181,@13506,@13507,@13505,@12181,@12181|819,0,@7183 13505:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18320| 13506:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18318| 13507:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18319| 13508:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@6965,1,@18322| 13509:D5,136|483b65187306ff5558ca0901504c8b34244983fe017559488d6424084c8b334983fe0d7547ff7308488b43104c89c3ff15730000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c348c7c001000000e884ffffff4889c358ff251a000000f400|@7073,1,@18323,@13361,@13510| 13510:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@1718,1,@18324,@15146|74,0,@224 88,0,@15146 13511:D3,40|49bb2005b703000000004d8b1b4989e5488b65304881ecb00000004889c141ffd34c89ecc3f40000|@7191,1,@18326|2,0,@47 13512:D3,40|49bb4005b703000000004d8b1b4989e5488b65304881ecb00000004889c141ffd34c89ecc3f40000|@7192,1,@18327|2,0,@48 13513:D4,128|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff126a016a016a016a016a016a014c8b742430498b5e084989e0ff155d000000415e415d415c415b415a4159488d642408498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930c3f4|@7193,1,@18328,@13514| 13514:D11,1072|488dbc2400ffffff483b7d187306ff5560ca09015041504c8b336a016a016a016a016a016a014156ff3552040000f64424080175774c8b742408498b064d89f641ff76086a016a016a016a01488b5c24284989e04c8b4c2470ff1519040000415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb824c8b34244d8b7608488d6424084d8b2e4c896c24084d8b6e084c896c24104d8b6e104c896c24184d8b6e184c896c24204d8b6e204c896c24284d8b76284c897424304c8b742408ff742410ff742420ff742430ff742440ff74245041566a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff153e0300004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424306a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15bc0200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424306a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff153a0200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424586a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15b80100004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ffb424800000006a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15330100004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ffb424800000006a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15ae0000004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8f415e4c8bac24e00000004c8b6424684d8965004c8b6424084d8965084c8b6424504d8965104c8b6424204d8965184d8975204c8b7424384d89752848c7c0010000004881c4f0000000c3f400|@7195,1,@18329,@13515,@13516,@13517,@13518,@13519,@13520,@13521,@7194| 13515:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18330| 13516:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18331| 13517:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18332| 13518:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18333| 13519:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18334| 13520:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@523,1,@18335| 13521:D8,1824|488dbc2448ffffff483b7d187306ff5560ca090341504151ff33ff73084c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d89f541ff76184d89ed4d89ee41ff75204d89f641ff7628ff7310ff73184c8b284d89ee4983fd030f85ac000000488b4008488b1c24ff15dd0600004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15b90600004989c54d8d77c84c3b75107306ff5550ca00204d89f749c746f8060000004c8b6424104d8966284d896e204c8b6c24204d896e184c8b6c24284d896e104c8b6c24304d896e084c8b6c24384d892e4c8b6c24584c8b6424484d8965004d8975084c8b7424084d8975104c8b34244d897518488d64241848c7c0010000004883c448c34983fe01753d4c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d8966084c8b6424484d89266a016a0141554156e9a4040000ff70084c8b70104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424504d89266a016a0141554156f6442408010f852a0200004c8b6c24084d8b75004d89ed41ff75084d8b6e084d8b65004983fc010f85f001000041ff750841ff751041ff76104c8b6c24204d89ee41ff75004d89f641ff76084c8bb424a80000004d8b2e4983fd0d751a4c89f0488b5c240849c7c001000000ff153d0500004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424084d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24184d8b65004983fc03750d4d89ed4d8b6d084d8b6d00eb074d89ed4d8b6d084d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24204d895d104d89650849c74500030000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24104d895c24104d896c24084d8934244c8b7424084983c6027118488da424b800000048b8d006620800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b6c24204c896424284c896c2430483b65187303ff55584883c428e9e3fdffff488da4249000000048b8c007660800000000488b5d08ff234c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b7424084c8b5c24104983fb017514488d64241849bd48c2620800000000e9c0000000488d64241849c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64246848b8d006620800000000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25b70200007c15488d64246848b850c2620800000000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f85f5000000418065ffbf41554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424184d8965184c8b24244d8965104c8b6424104d89650849bce0bbb109000000004d89650041554d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24584d8968084d89306a016a01488b442420488b5c24104989e14c8b542478ff15e7010000415b415c4c8b7424084d8b6ef849c1e50849c1ed074983cd014983ed014c8b7424204d03f57115488d64247848b8d006620800000000488b5d08ff234c8b6c24704d895d004d8965084d8975104c8b34244d897518488d64240848c7c0010000004883c470c34d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64246848b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9c0fefffff644240801756d4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b8c24880000004c8b542438ff1503010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8c4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6424084c8b6c24104d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24284d895e284c8b5c24304d895e204d896e184c8b6c24404d896e104c8b6c24484d896e084c8b6c24504d892e4c8b6c24704d8965004d8975084c8b7424204d8975104c8b7424184d89751848c7c0010000004883c478c3f4000000000000ffffffffffffff01|@7199,1,@18337,@13524,@13529,@11046,@13540,@13523|822,0,@105 960,0,@7196 1026,0,@1447 1080,0,@105 1130,0,@1448 1288,0,@13522 1415,0,@105 1499,0,@105 13522:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89051620800000000488b5d08ff234b8b44aefcc3f4|@7198,1,@18336|42,0,@105 91,0,@628 13523:D4,176|483b65187305ff5558cd0953a8010f858a0000004c8b30ff700841ff76084d8b7610498b06488b5c2410ff15980000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e891ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f400000000|@742,1,@18357,@13541| 13524:D4,1256|483b65187306ff5558ca090741504152ff7018ff7028ff33ff73084d8b314983fe0d751a4c89c8488b5c240849c7c001000000ff15c70400004989c6eb374d8d77d84c3b75107306ff5550ca00024d89f749c746f80400000049c74618010000004c8b6c24084d896e104d894e0849c7061700000041564c8b7424184d8b364983fe017515488d64243848b808d5620800000000488b5d08ff234d8b364d8b2e41ff75004d8b551041ff7608498b561841ff76204d8b3241ff720841ff72104d8b5a184d8b62204d8b42284d8d4fd84c3b4d107306ff5550ca04794d89cf49c741f8040000004d8941184c8b14244d8951104c8b5424504d89510849ba70c2b109000000004d89114d8d57e04c3b55107306ff5550ca047b4d89d749c742f8030000004d894a104d89620849bc30c3b109000000004d89224d8b264983fc030f85b20000004d8b66084d8b76184d8b2424498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49b948c2620800000000eb554c89f74889f94c8d0cbd0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca467d4d89cf48d1ef498979f841c641ff404c89cf48d1e948c7c001000000f348ab4c89f14c89cf48d1e9f348a5418061ffbf4d8d77e04c3b75107306ff5550ca043f4d89f749c746f8030000004d894e104d89660849c70601000000eb004d8d67c84c3b65107306ff5550ca046d4d89e749c74424f8060000004d894424284d895424204d895c24184c8b1c244d895c24104c8b5c24084d895c24084d8934244d8b75084d8b5d184d8d6fd84c3b6d107306ff5550ca04594d89ef49c745f8040000004d895d184d8965104d8975084c8b7424204d8975004c8b324c8b62084c8b52104c8b4a184c8b5a20488b5228498d7fc0483b7d107306ff5550ca047f4989ff48c747f807000000488b742450488977304c8947284158488d6424084c8947204c8b4424104c894718488957104c89570849b880c3b109000000004c89074d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89580849bb78c7b109000000004d89184d8b1e4983fb030f85b40000004d8b5e084d8b76184d8b1b498b36488b5ef848c1e30848c1eb074883cb014883fb01750c48bf48c2620800000000eb584889df4889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4e3f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889d94c89f748d1e9f348a5418066ffbf4c89f74d8d77e04c3b75107306ff5550ca843f4d89f749c746f80300000049897e104d895e0849c70601000000eb004d8d5fc84c3b5d107306ff5550ca04774d89df49c743f806000000498953284d8943204d894b184d8953104d8963084d89334d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424184d8974240849c70424030000004d8d77d04c3b75107306ff5550ca00384d89f749c746f805000000415a4d8956204d895e184d896610415c4d8966084d892e4c8b6424184983c4027115488d64244048b8d006620800000000488b5d08ff23488d6424104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8975084c8b7424184d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e084d892e4c8b6c24204d8965004d89750848c7c0010000004883c428c3f400|@7201,1,@18342,@11046|140,0,@1556 253,0,@13525 301,0,@13526 364,0,@1447 718,0,@13527 766,0,@13528 828,0,@1447 1134,0,@105 13525:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c89d620800000000488b5d08ff23f4000000000000|@7200,1,@18338|42,0,@105 95,0,@105 131,0,@1158 13526:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@18339,@10764| 13527:D4,968|483b65187305ff5558cd054989d64d8b6e104d89ec493bc57c254989c54d2bec711048b8d006620800000000488b5d08ff234983c5014d8b7608e9260300004d8b66284d89e5493bc47c284989c44d2be5711048b8d006620800000000488b5d08ff234983c4016a016a016a014d8b6e20eb06498b5630ff2241f6c5010f85cd0200004d8b55004d8b5d084983fc010f85860200004d8b2a4c892c244d8b6a084c896c24084d8b6a104c896c2410415d415c415b4d8b034d8b53084d8b4b10498b7e184989fb483b3d130300007502eb364c89df4d8b1b4e8d1c5d010000004983fb01752a49bbd808620800000000488d7708498d7b0848c7c100000000483bc9f3a67402eb084d89c3e99f0100004d8b5e184d8b1b4a8d1c5d010000004883fb01750f48bf0019620800000000e9a50000004889df4883c7024889f84883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d344501000000483b355d0200000f87a20100004889f24c8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cac8774d89df48d1ea498953f841c643ff414883ee0249c744b3fc0000000048d1ef49893b4d8b76184889d9498d7608498d7b0848d1e9f3a44989de4983c61049d1ee43c604332e418063ffbf4c89df4c8b374e8d3475010000004d8b184a8d1c5d010000004983fe0175084d89c3e9b20000004883fb0175084989fbe9a4000000498d741eff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15800100000f87bd0000004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cacc774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89f1488d7708498d7b0848d1e9f3a44983c6104889d9498d700849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d894e104d8956084d891e498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8970104c8960084c8928c348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234d89e24983ea027115488d64241848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e929fdffff488d64241848b8c89d620800000000488b5d08ff2341f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c89d620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@7200,1,@18340,@123|36,0,@105 85,0,@105 231,0,@123 294,0,@201 765,0,@117 781,0,@117 811,0,@105 855,0,@1158 900,0,@105 936,0,@1158 13528:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@18341,@10764| 13529:D5,720|483b65187306ff5558ca090753415141524d8b204d8b700841ff3641ff760841ff761041ff761841ff76204d8b5e284c8b284d89ee4983fd017515488d6424284c8b70104d8b3641564150e9de0100004983fe037512488d6424284c8b700841564150e92a0100004c8b68104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89266a016a0141554156f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24604c8b542470ff1528020000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6424084c8b6c24104d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d896e284c8b6c24184d896e204c8b6c24204d896e184c8b6c24284d896e104c8b6c24304d896e084c8b6c24384d892e4c8b6c24484d8965004d89750848c7c0010000004883c458c3f64424080175694c8b742408498b064d89f641ff76086a016a01488b5c24384c8b4424184989e14c8b542428e83dfeffff415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb904c8b6c24184c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c420c3f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24284c8b542438ff1588000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b6c24184c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c420c3f400000000|@7202,1,@18344,@13532,@13530| 13530:D4,792|483b65187306ff5558ca090741504152ff30ff7008ff7018ff33ff73084d8b314983fe0d751a4c89c8488b5c240849c7c001000000ff15f50200004989c3eb374d8d5fd84c3b5d107306ff5550ca00024d89df49c743f80400000049c74318010000004c8b7424084d8973104d894b0849c703170000004c8b7424104d8b364983fe017515488d64243848b808d5620800000000488b5d08ff234d8b364d8b6e104d8b75004d8b65084d8b55184d8b6d204d8d4fe04c3b4d107306ff5550ca007c4d89cf49c741f8030000004c8b4424284d8941104d89690849bd18ceb109000000004d89294d8b2e4983fd030f85b20000004d8b6e084d8b76184d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49b848c2620800000000eb554c89f74889f94c8d04bd0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca427e4d89c748d1ef498978f841c640ff404c89c748d1e948c7c001000000f348ab4c89f14c89c748d1e9f348a5418060ffbf4d8d77e04c3b75107306ff5550ca003f4d89f749c746f8030000004d8946104d896e0849c70601000000eb004d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f80600000049c74528010000004d894d204d89551849c74510010000004d8965084d8975004c8b6424084983c4027115488d64243848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004c8b5424204d89560849c706010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d895e0849c706030000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d896b104d8973084c8b6c24184d89ee4d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e4c8b6c24284d8965004d89750848c7c0010000004883c430c3f400000000|@7211,1,@18353,@11046|140,0,@1556 219,0,@13531 282,0,@1447 498,0,@105 13531:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@18343,@10764| 13532:D10,2552|488dbc2450ffffff483b7d187306ff5560ca09074150415141524c8b304d89f54983fe05755c4c8b700841ff364d8b6e084c8b234c8b730841ff3641ff760841ff761041ff761841ff762041ff76284d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89266a016a0141554156e9610600004d89ee4983fd010f85b5000000488d6424104c8b68084c8b60104d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e4c8b234c8b6b08498b75004d8b5d084d8b55104d8b4d184d8b4520498b7d284d8d6fe84c3b6d107306ff5550cac05f4d89ef49c745f802000000498975084d8975004d8d77c84c3b75107306ff5550ca803f4d89f749c746f80600000049897e284d8946204d894e184d8956104d895e084d892e415d4d8965004d89750848c7c001000000c34983fe030f8516030000ff7008ff334c8b730841ff3641ff760841ff761041ff761841ff762041ff76284c8b7424384d8b6e104d8b65004d8b5d084d8b55184d8b6d204d8d4fe04c3b4d107306ff5550ca007c4d89cf49c741f8030000004c8b4424404d8941104d89690849bdc0d8b109000000004d89294d8b2c244983fd030f85b90000004d8b6c24084d8b6424184d8b6d00498b34244c8b66f849c1e40849c1ec074983cc014983fc01750c49b848c2620800000000eb554c89e74889f94c8d04bd0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca427e4d89c748d1ef498978f841c640ff404c89c748d1e948c7c001000000f348ab4c89e14c89c748d1e9f348a5418060ffbf4d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d896c240849c7042401000000eb004d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f80600000049c74528010000004d894d204d89551849c74510010000004d895d084d89650041554d89f641ff364c8b7424584d8b2e4983fd0d751a4c89f0488b5c244049c7c001000000ff15570700004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424404d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24484d8b6d184d8d5fd84c3b5d107306ff5550ca00604d89df49c743f8040000004d896b184c8b6c24084d896b104d8973084c8b34244d89f54d89334c8b6424404983c4027115488d64246848b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24084d895d084d8975004d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d896e284c8b6c24104d896e204c8b6c24184d896e184c8b6c24204d896e104c8b6c24284d896e084c8b6c24304d892e4c8b6c24584d8965004d89750848c7c0010000004883c460c34c8b680841ff750041ff75084d8b751041ff751841ff7520ff334c8b6b0841ff750041ff750841ff751041ff751841ff752041ff75284d8b2e4983fd077505e9890000004c8b7424604d8b2e4983fd0d751a4c89f0488b5c243049c7c001000000ff156d0500004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424304d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24604d896e0849bd10d9b109000000004d892e4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849be88d9b109000000004d8930488b44244848bbe80a660800000000ff158e0400004989c64d8d5fc04c3b5d107306ff5550ca00404d89df49c743f80700000049c743300100000049c74328010000004c8b6c24404d896b204d8973184c8b34244d897310488d6424084c8b7424484d8973084c8b7424504d89f54d89334c8b6424304983c4027115488d64247048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24184d895d084d8975004d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b1c244d895e28488d6424084c8b1c244d895e20488d6424084c8b1c244d895e18488d6424104d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084c8b6c24384d8965004d89750848c7c0010000004883c440c3f6442408010f85c60100004c8b6c24084d8b75004d89ed41ff750841ff3641ff760841ff761841ff76204c8b6c24284d89ee41ff75004d89f641ff76084c8bac24980000004d8b75004983fe0d751a4c89e8488b5c240849c7c001000000ff15e10200004989c6eb3a4d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424084d8966104d89ed4d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c74628010000004c8b6424104d8966204c8b6424184d8966184d896e104c8b6c24204d896e084c8b6c24284d892e4c8b6c24084983c50241557118488da424b000000048b8d006620800000000488b5d08ff23498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742408eb0e488b442408ff15be0100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d6424084c8b6c24304c896424384c896c2440483b65187303ff55584883c438e92ffeffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410ff7424084c8b742418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424504c8930488b5c245849b8d808620800000000ff15020100004989c641564c8b742458498b066a016a014889e3ff15e0000000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424404d8965084d8975004d8d77c84c3b75107306ff5550ca00204d89f749c746f8060000004c8b6424204d8966284c8b6424284d8966204c8b6424304d8966184c8b6424384d8966104d896e084c8b6c24484d892e4c8b6c24684c8b24244d896500488d6424084d89750848c7c0010000004883c468c3f4|@7210,1,@18351,@10737,@11009,@13539,@11046,@10774,@11046,@11046|433,0,@13533 500,0,@1447 928,0,@105 1366,0,@13534 1410,0,@13535 1428,0,@7208 1552,0,@105 2070,0,@105 2312,0,@123 13533:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@18345,@10764| 13534:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@7203,1,@18346| 13535:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8f80966080000000049b9700a66080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@7207,1,@18349,@10770|26,0,@7204 36,0,@7206 13536:D3,16|483b65187305ff5558cd01c3f4000000|@7205,1,@18347| 13537:D3,16|483b65187305ff5558cd01c3f4000000|@7205,1,@18348| 13538:D3,16|483b65187305ff5558cd01c3f4000000|@7209,1,@18350| 13539:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18352| 13540:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18354| 13541:D3,384|483b65187305ff5558cd094c8b304c8b68084c8b60104c8b58184c8b40204c8b4828498d7fd8483b7d107306ff5550ca087b4989ff48c747f8040000004c894f184c89671048895f0849ba88ddb109000000004c89174d8d57e04c3b55107306ff5550ca807b4d89d749c742f80300000049897a104d89420849b848deb109000000004d89024d8b064983f8030f85b40000004d8b46084d8b76184d8b00498b36488b56f848c1e20848c1ea074883ca014883fa01750c48bf48c2620800000000eb584889d74889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca463f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889d14c89f748d1e9f348a5418066ffbf4c89f74d8d77e04c3b75107306ff5550ca803f4d89f749c746f80300000049897e104d89460849c70601000000eb00498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930c3f40000000000|@7213,1,@18358|75,0,@13542 123,0,@13543 185,0,@1447 13542:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d006620800000000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c89d620800000000488b5d08ff23f4000000000000|@7212,1,@18355|42,0,@105 95,0,@105 131,0,@1158 13543:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@18356,@10764| 13544:D3,32|483b65187305ff5558cd0148b8a00c660800000000488b5d08ff23f400000000|@7217,1,@18359|13,0,@7215 13545:D3,24|483b65187305ff5558cd0148b80894650800000000c3f400|@7220,1,@18360|13,0,@6538 13546:D9,720|483b65187306ff5558ca0901534150ff30ff3424f604240175404c8b2c244d8b75004d89ed41ff75084d8b264d89e54983fc037505e9430200004983fd01750b4d8b76084156e946020000498b4608ff15bb020000e923020000488d64240849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849be48e2b109000000004d89326a016a0148b8200e660800000000488b5c24184989e04c8b4c2428ff152f020000ff3424ff7424206a01f64424080175474c8b742408498b064d89f641ff7608ff15020200004c8b7424084c89f34983fe0175054989c4eb09ff15e10100004989c4415d4c8924244c896c2408483b65187303ff5558ebb2415d49c7c6010000004883c40841f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15fa0000004989c5eb004c8b24244d89e64983fc01750a488d6424184d89eceb3a4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d89f64d89742408488d64240849c704241f0000004883c4104c8b1c244d8b334d89f54d89db4d89db4d892b488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3415d4c892c24483b65187303ff5558e983fdfffff6042401752a4c8b2c244d8b75004d89ed41ff7508498b4608ff1538000000415d4c892c24483b65187303ff5558ebd0488d642408ebb5f400000000000000|@7227,1,@18365,@13550,@12170,@13553,@13554,@13706,@13549|173,0,@13547 190,0,@7224 13547:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@7223,1,@18363|42,0,@105 13548:D3,24|483b65187305ff5558cd0148b8c0aa620800000000c3f400|@7226,1,@18364|13,0,@1263 13549:D7,136|483b65187305ff5558cd014c8b284d89ee4983fd0375174c8b7008ff70104c89f0ff159100000058ff25820000004983fe01750a488b4008ff256a0000004c8b70104156f6042401752a4c8b2c244d8b75004d89ed41ff7508498b4610ff153d000000415d4c892c24483b65187303ff5558ebd0488d64240848c7c001000000c3f4000000000000|@8616,1,@19094,@13550,@14279,@14311,@14278| 13550:D5,112|483b65187305ff5558cd014c8b284d89ee4983fd05750c4c8b7008498b06e9ddffffff4d89f54983fe0375164c8b7008ff70104c89f0e8c5ffffff58ff254e0000004d89ee4983fd01750c4c8b7008498b06e9a9ffffff4983fe07750a488b4008ff252100000048c7c001000000c3f4|@7229,1,@18366,@13552,@13551| 13551:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab80e66080000000058ff2248c7c001000000c3f4|@1573,1,@18368|28,0,@7228 13552:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab80e66080000000058ff2248c7c001000000c3f4|@1573,1,@18367|28,0,@7228 13553:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18369| 13554:D7,288|483b65187305ff5558cd014989c64d8b264d89e54983fc03750848c7c001000000c34983fd017519498b4608ff151e0100004989c648c7c001000000e992000000498b46084d8b761041ff3648bb60c6620800000000ff15ec0000004989c64156488b442408ff15d40000004989c648c7c30100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca08684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0840ebba4883fb017506584883c408c3584883c408ff256500000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebbac3f40000000000|@7232,1,@18370,@13556,@13557,@13559,@13555|78,0,@1469 13555:D3,264|483b65187305ff5558cd01a8010f85e80000004c8b30488b40084d8b76284d8b364983fe01751048b808d5620800000000488b5d08ff234d8b364d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8100f660800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@18521|41,0,@1556 90,0,@6950 237,0,@7230 13556:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18371| 13557:D4,104|483b65187305ff5558cd01a801754d4c8b30ff7008498b06ff15620000004989c64156488b442408e8d3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000|@742,1,@18372,@13558| 13558:D4,336|483b65187305ff5558cd014c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2528010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85ab0000004c8b68084c8b70104d8b6d004d8b364d8b2649c7c6010000004d2bf4711048b8d006620800000000488b5d08ff234983c6014983fe0175634983fd017d1048b890c6620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c348b808c7620800000000488b5d08ff234983fe037505488b4008c348b8a80f660800000000488b5d08ff23f4|@7237,1,@18373,@11046|169,0,@105 201,0,@1471 294,0,@1474 321,0,@7233 13559:D5,664|483b65187305ff5558cd09534c8b284d89ee4983fd010f85ab0000004c8b70104d8b3649c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049bbb09f6208000000004d895c241849bb88106608000000004d895c24104c8b1c244d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500415541566a01e9800100004983fe03750d4c8b700841566a01e912010000488d6424084c8b701048c7c00100000041f6c6010f85f70000004d8b264d8b6e084d8b6424184d8b24244983fc01751048b808d5620800000000488b5d08ff234d8b24244d8b6424084d8b1c244983fb050f85aa0000004d8b6424084d8b1c244983fb017d1048b800d5650800000000488b5d08ff234d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703110000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e90fffffff48b8100f660800000000488b5d08ff23c3f644240801754e4c8b742408498b064d89f641ff7608488b5c2418e8f4fdffff4c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15900000004989c4415d4c8924244c896c2408483b65187303ff5558ebab584883c410c3f644240801753d4c8b742408498b064d89f641ff7608488b5c24084c8b4424204c8b4c2418ff153e0000004989c4415d4c8924244c896c2408483b65187303ff5558ebbc584883c418c3f4000000000000|@7243,1,@18375,@13562,@13561|108,0,@1172 123,0,@7238 268,0,@1556 322,0,@6950 477,0,@7230 13560:D3,32|483b65187305ff5558cd0148b89810660800000000488b5d08ff23f400000000|@7242,1,@18374|13,0,@7239 13561:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18520| 13562:D7,440|483b65187306ff5558ca0903534c8b304d89f54983fe0575234c8b7008498b46084c89c34d89c8ff15bb0100004989c648c7c001000000e9130100004d89ee4983fd0375404c8b7008498b46084c89c3ff158a0100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34983fe070f85be000000488b400849bee80a110a000000004d8b2649bef80a110a000000004d8b2e49be080b110a000000004d8b1649be180b110a000000004d8b1e4d8d77d04c3b75107306ff5550ca013f4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8086208000000004d892e41564c89c34d89c849c7c10100000049baa811660800000000ff15ba0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c358c341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b34244c89f34983fe017506488d642408c34889db488d642408ff251a000000f400|@7247,1,@18377,@13565,@13566,@13705,@13564|149,0,@15266 162,0,@15267 175,0,@15268 188,0,@15269 244,0,@123 272,0,@7244 13563:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@7246,1,@18376| 13564:D4,264|483b65187306ff5558ca09014989c653415041f6c6010f85de000000498b0641ff760849bee80a110a000000004d8b2649bef80a110a000000004d8b2e49be080b110a000000004d8b1649be180b110a000000004d8b1e4d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8086208000000004d892e4156488b5c24184c8b44241049c7c10100000049baa811660800000000ff156e0000004989c64156488b442408488b5c24184c8b442410e835ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4|@742,1,@18519,@13566|37,0,@15266 50,0,@15267 63,0,@15268 76,0,@15269 132,0,@123 164,0,@7244 13565:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18378| 13566:D88,9296|483b65187306ff5558ca09074989c653415041524d8b6e104d8b5d004d89dc4983fb070f85ae0d00004d8b6d084c8d25080000004f8d64acfc41ffe4e943000000909090e93f010000909090e933000000909090e996080000909090e9a0080000909090e9e2090000909090e913000000909090e9140d0000909090e9030000009090904c8b6424104d8b2c244d89e44d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca006e4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca006a4d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba9819b209000000004d8914244983c5027115488d64242048b8d006620800000000488b5d08ff234d8d47e04c3b45107306ff5550ca007a4d89c749c740f8030000004d89db4d8958104d8960084d892848bae0136608000000004c8b6c2428ff74240841554d89ca4c89f048bb989f6208000000004c8b4c2420ff124989c641564c8b7424084d8b3648c7c001000000e9c621000041f6c1010f85a60600004d8b314d8b690841f6c5010f85800600004d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85550600004d8b6d0041ff750041ff3649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156488b442408ff15c22400004989c64156f60424010f85580300004c8b34244d8b3641ff7608498b5e104883fb017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15742400004989c64156f60424010f8587010000488b04244c8b304889c04c8b68084983fd010f85e1000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc0576608000000004c8968084c893048c7c303000000ff150c2400004989c64156488b0424ff15f52300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424184d8966104d896e0849c70605000000e98c000000488b5c2418ff154923000048c7c303000000ff15342300004989c64156488b0424ff151d2300004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c70607000000eb0a49bea8036308000000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424184d89e34d8965104c8b6424204d89650849c7450005000000498d47e0483b45107306ff5550ca00684989c748c740f8030000004c8968104c8b6c24284c89680848c700050000004c8b5424084d8b2a4c8b4c24504d8d67e84c3b65107306ff5550ca016e4d89e749c74424f8020000004d894c240849c70424010000004d8d4fe84c3b4d107306ff5550ca017c4d89cf49c741f80200000049c74108010000004d89214d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d894c24204d89d24d895424184d896c24104c8b2c244d896c2408488d64241049c704240b0000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d89db4d895d104d89650849c7450005000000498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c703050000004c8b542440ff353a21000049b808586608000000004c8b4c2428ff151d210000eb004c8b2c244d89ee4983fd017512488d64243848b82858660800000000c208004d89f64d8b36488d64240841ff3641ff76104c8b34244d89f54983fe010f85ad010000488d64240848b83859660800000000ff15bc2000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48fe6208000000004d8966104d896e0849c7060f000000415648b8f04b660800000000ff15632000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b89059660800000000ff150b2000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b8d059660800000000ff15b31f00004989c6415648c7c001000000ff15991f00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bee8596608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000e9681900004d89ed4d89ee4983fd03750f49be005a660800000000e9811600004d89f64c89f34983fe017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15b31e00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9ab150000488d642418eb05488d64241848b8585a660800000000488b5d08ff23488d64241848c7c001000000ff15461e00004989c6415648c7c001000000ff152c1e00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf05a6608000000004d896e0849bd105b6608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c20800488d64241848b8985b660800000000c20800488d64240841f6c101754e4d8b314d8b69084983fd01752c498b0648ba6814660800000000488b5c24084158488d6424084c8b34244c897424084883c408ff253b1d0000488d64241048b8a85c660800000000488b5d08ff234c8b6c24084d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb28cfb209000000004d895d004983c6027115488d64241848b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004d89e44c8963104c896b084c893348ba681466080000000048b8b84b6208000000004c8b442408ff15461c00004989c641564c8b7424084d8b3648c7c001000000e97e120000488d64240841f6c1010f85cb0100004d8b314d8b69084983fd010f85a5010000498b064c8b6c24084d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb78d0b209000000004d895d004983c6027115488d64241848b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca01704989df48c743f8030000004d89e44c8963104c896b084c893348ba68146608000000004c8b442408ff15341b00004989c6415648b8405d660800000000ff15171b00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15a51a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcc85d6608000000004d8966104d896e0849c7060f00000041564c8b7424084d8b3648c7c001000000e9bb0f0000488d64241048b8e85d660800000000488b5d08ff23488d64241048c7c001000000ff15211a00004989c6415648c7c001000000ff15071a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049be805e6608000000004d89750849bea05e6608000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff155f1900004989c6415648c7c001000000ff15451900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc05e6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080041f6c10175324d8b314d8b69084983fd017510498b064c8b34244d8b7668e9d1070000488d64241848b8e05e660800000000488b5d08ff234c8b34244d8b7668488d642418e9a9040000488d6424084d89e34983fc017515488d64241048b8705f660800000000488b5d08ff234d89dc4983fb090f85b901000041ff7508498b45104d8b76084d8d6fe04c3b6d107306ff5550ca01424d89ef49c745f803000000498945104c8b24244d89650849bcc8d1b209000000004d89650041554983fe01757d488d642408488b5c2410ff15d81700004989c64d8b2e4983fd0d751f4c89f05b49c7c0010000004c8b7424104c897424184883c418ff25a5170000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c208004983fe03757d488d642408488b5c2410ff15451700004989c64d8b2e4983fd0d751f4c89f05b49c7c0010000004c8b7424104c897424184883c418ff2512170000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c2080041f6c601753748c7c001000000ff15b516000048ba2814660800000000488b5c24184c8b44241041594c8b7424184c897424204883c420ff25831600004c89c8ff157216000048ba2814660800000000488b5c24184c8b44241041594c8b7424184c897424204883c420ff25401600004983fc050f85eb0100004d8b5d084d8b65104d8b2b4d8b24244d8b76084d8d5fe04c3b5d107306ff5550ca00724d89df49c743f8030000004d8963104d896b0849baf0d3b209000000004d891341534983fe010f858d000000488d6424104c8b1c244d8b334d89db498b5308488d6424084d8b24244d2bf4711048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c208004983fe030f858d000000488d6424104c8b1c244d8b334d89db498b5308488d6424084d8b24244d2bf4711048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c2080041f6c601753b48c7c001000000ff15a814000048ba2814660800000000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff25721400004c89c8ff156114000048ba2814660800000000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff252b140000498b45084d8b76084d8d6fe84c3b6d107306ff5550ca01424d89ef49c745f8020000004989450849bcb0d4b209000000004d89650041554983fe017508488d642418c208004983fe037508488d642418c2080041f6c601753b48c7c001000000ff15bd13000048ba2814660800000000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff25871300004c89c8ff157613000048ba2814660800000000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff254013000041f6c60175454d8b264d8b6e084d8b1c244c3b1d2013000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bda060660800000000eb174d8b364d8b2e4c3b2dbf1200000f857a0200004d8b6e104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648b8b060660800000000ff156d1200004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd01750c49be989f620800000000eb344d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc989f6208000000004d8966104d896e0849c7061f000000415648c7c001000000ff15841100004989c6415648c7c001000000ff156a1100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bec8606608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15c31000004989c6415648c7c001000000ff15a91000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bde0606608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080048b87850620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1de70f000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750f49be2068620800000000e9490500004d8b364d8b2e4c3b2d830f000075064d8b7610eb15488d64241848b87850620800000000488b5d08ff2341564c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d3b0f000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49bdf860660800000000eb174d8b364d8b2e4c3b2dda0e00000f858a0300004d8b6e104c8b6424184d8b34244d89e44d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca016c4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca01684d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba70d5b209000000004d8914244983c6027115488d64242848b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca01784989df48c743f8030000004d89db4c895b104c8963084c89334d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648ba68146608000000004c8b442420ff15c40d00004989c641564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24184d896e0849c7060d000000415648b8f04b660800000000ff15750d00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be989f6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15810c00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff150f0c00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd01750c49be989f620800000000eb344d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc989f6208000000004d8966104d896e0849c7061f00000041564c8b7424084d8b3648c7c001000000eb15488d64242048b87850620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15bd0a0000ff15af0a00004989c6415648c7c001000000ff15950a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc8606608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c428c2080041f6c60175454d8b264d8b6e084d8b1c244c3b1ddf09000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d7509000075094d8b7610e95cfaffff488d64241848b87850620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15fd080000ff15ef0800004989c6415648c7c001000000ff15d50800004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd805e6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15e7070000ff15d90700004989c6415648c7c001000000ff15bf0700004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd08616608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c2080041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15db0600004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648b83859660800000000ff15960600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48fe6208000000004d8966104d896e0849c7060f0000004156488b442408ff15420600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424104d896e0849c7060f000000415648b89059660800000000ff15ea0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424084c89f34983fe017d15488d64244848b83060620800000000488b5d08ff2348c7c001000000ff15720500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be48fe6208000000004c8930ff15350500004989c6415648c7c001000000ff151b0500004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049be28616608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8d059660800000000ff15710400004989c641564c8b7424104c89f34983fe017d15488d64245048b83060620800000000488b5d08ff2348c7c001000000ff15340400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bee8596608000000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8b742438498b1e4d89f64d8b460849c7c5010000004d8d77f04c3b75107306ff5550ca08214d89f749c746f80100000041c646ff404d892e41564883c3027115488d64244848b8d006620800000000488b5d08ff234c8b742410498b064c8b0c24ff15320300004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff15060300004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcb8006608000000004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049bdb01e6508000000004d896e0849c7062500000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15f0010000ff15e20100004989c6415648c7c001000000ff15c80100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd40616608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c448c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15da000000ff15cc0000004989c6415648c7c001000000ff15b20000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc04a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c20800f4000000|@7803,1,@18494,@13683,@11908,@13601,@13684,@11908,@13601,@11046,@13685,@13686,@11908,@13687,@11908,@13688,@13572,@13572,@13572,@12170,@13689,@11908,@13601,@13690,@11908,@13601,@15122,@15122,@13691,@11908,@13601,@13572,@13572,@13572,@13624,@15121,@15121,@15122,@15122,@13692,@11908,@13693,@11908,@13572,@15121,@15121,@13570,@13668,@13570,@13668,@13570,@13668,@13570,@13668,@13570,@13668,@13570,@13668,@11046,@13694,@11046,@13695,@13696,@13655,@13697,@11908,@13572,@13572,@13624,@13624,@13624,@13698,@11908,@13699,@13700,@11908,@13572,@13572,@13572,@13701,@7810,@11066,@10822,@13703,@11066,@10822,@13704,@13681|243,0,@13567 268,0,@105 325,0,@7254 352,0,@1171 468,0,@1098 625,0,@731 720,0,@7737 1060,0,@1869 1432,0,@7739 1473,0,@7740 1526,0,@7746 1580,0,@1822 1607,0,@7660 1687,0,@7749 1767,0,@7751 1880,0,@7752 1962,0,@7753 1994,0,@731 2090,0,@7756 2221,0,@7759 2235,0,@7760 2294,0,@7764 2334,0,@7257 2380,0,@7770 2499,0,@13672 2524,0,@105 2581,0,@7257 2591,0,@578 2775,0,@13673 2800,0,@105 2857,0,@7257 2883,0,@7773 3043,0,@7778 3095,0,@7779 3226,0,@7782 3240,0,@7783 3404,0,@7784 3511,0,@7785 3564,0,@7788 3644,0,@13674 3941,0,@7256 3992,0,@7256 4098,0,@13676 4156,0,@105 4307,0,@105 4434,0,@7256 4489,0,@7256 4574,0,@13677 4637,0,@7256 4692,0,@7256 4826,0,@7795 4909,0,@7796 5071,0,@1171 5110,0,@1171 5247,0,@7797 5424,0,@7798 5491,0,@621 5595,0,@788 5636,0,@621 5751,0,@7799 5895,0,@13680 5920,0,@105 6025,0,@7257 6101,0,@7660 6249,0,@1171 6605,0,@1171 6644,0,@1171 6693,0,@621 6892,0,@7797 7056,0,@828 7101,0,@621 7300,0,@7782 7554,0,@7800 7740,0,@7746 7794,0,@1822 7896,0,@7749 7995,0,@731 8058,0,@1822 8174,0,@7801 8241,0,@7751 8281,0,@731 8389,0,@7752 8526,0,@105 8690,0,@7165 8748,0,@5750 8969,0,@7802 9223,0,@7652 13567:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18379,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13568:D20,2512|483b65187306ff5558ca0907505341504151488b4424184c8b700841f6c6010f85ea0000004c8b6c24304c8b6424284d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e184c8b2c244d896e104889c04989460849bd6825b209000000004d892e415648c7c001000000ff15eb09000048ba2814660800000000488b5c24104c8b4424084c8b0c24ff15c50900004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff158a0900004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424304c89700848c7000f000000c210004983fe010f850f0100004c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff15150900004989c5488d6424104c8b7424084d8b264d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049bcf04b6608000000004d8963084c8b24244d8923488d6424104d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000e9510700004889c04c8b70104d8b2e4983fd070f85c60400004d8b76084989c54c89e841ff75004c8d2d080000004f8d6cb5fc41ffe5e943000000909090e9b1000000909090e9b3000000909090e991010000909090e9c4010000909090e9c3010000909090e9c5010000909090e9d1020000909090e964030000909090488d6424186a016a0141f6c20175484d8b6a084d89ee41f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd0375124d8b2a4d8b364d8b364d8b6d00e92e06000049beb0506608000000004d8b2e4c892c244d8b76084c89742408e981040000488d642408e926010000488d64240841f6c2010f85c20000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85970000004d8b32498b0648bac850660800000000488b5c24084c8b0424ff15d50600004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff159a0600004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424204c89700848c7000f0000004883c408c21000488d642420eb05488d64242048b8b851660800000000488b5d08ff23488d6424284c8b742408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c21000488d642408eb05488d642408e919010000488d64240841f6c2010f85f00000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85c50000004d8b32498b0648bac850660800000000488b5c24084c8b0424ff15930500004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15580500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424204d896e0849c7060f000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b0000004883c408c21000488d642420eb05488d64242048b86052660800000000488b5d08ff23488d6424084c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff159a0400004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff155f0400004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c2100041f6c2010f85e10000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85b60000004d8b32498b0648ba901666080000000048c7c301000000ff15cb0300004889c348bae052660800000000488b042449b86853660800000000ff15a20300004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff15670300004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f0000004883c420c21000488d642428eb05488d64242848b83854660800000000488b5d08ff234c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff15dc0200004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15a10200004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c21000415d415c4d8d5fe04c3b5d107306ff5550ca00304d89df49c743f8030000004d8963104d896b0849bef8c5b209000000004d89334c8b34244d8b164983fa0d75274d89f64d8b56084d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d8916eb0749c7c6010000004983fe010f85a30000004d8d77e04c3b75107306ff5550ca00084d89f749c746f80300000049c74610010000004d895e0849c7060d0000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15810100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f0000004883c408c210004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b2c244d896e08488d64240849bd68cdb209000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d0000004883c408c210004d8b65004983fc0d75194d8b65084d8b24244d89e5483b65187306ff5558ca0060ebdd4d8b264983fc0d75194d8b66084d8b24244d89e6483b65187306ff5558ca0060ebde4c892c244c89742408e91ffeffff41f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424104883c410ff251e000000c21000f40000|@7736,1,@18479,@12170,@13572,@13572,@13566,@13572,@13657,@13585,@13572,@13566,@13572,@13651,@13572,@13651,@13566,@13572,@13570,@13668|99,0,@13569 127,0,@7256 406,0,@7660 762,0,@7696 860,0,@7697 1017,0,@7704 1166,0,@7697 1369,0,@7708 1592,0,@7268 1618,0,@7711 1632,0,@7714 1780,0,@7719 1985,0,@13660 2278,0,@13667 13569:D5,144|483b65187305ff5558cd054989c5488b42084c8b42104c8b52184c8b722041564c89eb49c7c101000000ff15800000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2555000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000000000|@7255,1,@18380,@11046,@13566| 13570:D5,208|483b65187306ff5558ca0d034989d64c89ca4156505341504c8b7424104983fe01750c488d642408584883c410ff22488b442408ff124989c641564c8b642420498b5c24084d89e44d8b4424104d89e44d8b4c24184d89e44d8b7424204d89e44d8b6c24284d89e44d8b642430ff742408415641554154488b4424384c8b542430ff1569000000ff155b0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c3f4000000|@7258,1,@18381,@13572,@13571| 13571:D4,224|483b65187306ff5558ca090753415041514152a8010f85b50000004c8b30ff7008498b06498b5e084d8b46104c8b7424484c8b6c24404c8b6424384c8b5c2430ff742410ff74241041564155415441534c8b4c24504c8b542448ff15980000004989c641564c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b442428488b5c24484c8b4424404c8b4c24384c8b542430e861ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c22000488d64242048c7c001000000c22000f4|@742,1,@18391,@13573| 13572:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18382| 13573:D11,1576|483b65187306ff5558ca0907504150415141524883fb037505e9910000004c8b7424104983fe030f8482000000488b4424404c8b542450488b5c24184c8b4424084c8b0c24ff152d0600004989c64983fe01753c4c8b4424404c8b7424504156488b44242048c7c3030000004c8b4c24104c8b542408ff15f40500004989c649c7c5010000004c8b642440e91d020000488d6424204d8b36498b16488b4424284c8b34244c897424304883c430ff224883fb037533488b5c24484c8b4c24404c8b742450ff34244156488b44242849b8c0146608000000004c8b542418ff15850500004989c6eb054c8b7424384156488b5c24504c8b4c24484c8b742458ff7424084156488b44243049b820156608000000004c8b542420ff15420500004989c641564c8b7424204983fe03751b488b542440488b5c24584c8b442450488b442428ff124989c6eb054c8b7424384156488b5c24604c8b4c24584c8b742468ff7424184156488b44244049b820156608000000004c8b542430ff15d90400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c41041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424304883c430ff25a6030000c2300041f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d2bee7115488d64242048b8d006620800000000488b5d08ff234983c5016a016a016a014c8b74245841f6c6010f85ee0200004d8b1e4d8b66084983fd010f85a80200004d8b334c8934244d8b73084c897424084d8b73104c89742410ff3424ff742410ff7424204c8b4c24704c8bb42480000000ff7424304156488b442458488b5c241849b888156608000000004c8b542448ff15c40200004989c641564c8b4c24784c8bb42488000000ff7424384156488b442460488b5c242049b8f0156608000000004c8b542450ff15850200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b7424584d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b7424684d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b54240848c7c003000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424104d896e1049c746080100000049c706030000004d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004d8973104d896b084c8b7424404d89334c8b6424084d8b14244d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d89e44d8934244c8b7424704d8b264c8b7424704d8b76084c8b1c244d8b1b488d6424384d2be37115488d64241048b8d006620800000000488b5d08ff23488d6424104983c401498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89284c89f2ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c230004d89eb4983eb027115488d64243848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e908fdffff488d64243848b8c89d620800000000488b5d08ff23f400000000000000|@7277,1,@18397,@13588,@13592,@12170,@13588,@13592,@13596,@13605,@13582|208,0,@7259 267,0,@7261 364,0,@7261 712,0,@105 758,0,@105 881,0,@7263 936,0,@7265 1380,0,@105 1510,0,@105 1554,0,@1158 13574:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7260,1,@18383,@13575| 13575:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18384,@11046|170,0,@105 287,0,@7233 13576:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7262,1,@18385,@13577| 13577:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18386,@11046|170,0,@105 287,0,@7233 13578:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7264,1,@18387,@13579| 13579:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18388,@11046|170,0,@105 287,0,@7233 13580:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7266,1,@18389,@13581| 13581:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18390,@11046|170,0,@105 287,0,@7233 13582:D10,1160|483b65187306ff5558ca0907504150415141524c8b334d89f54983fe050f8581000000488d6424104d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849be283bb209000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608ffffffff4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c34d89ee4983fd0b0f85da0000004c8b6b084c8b73184d8b5e184d89dc4d8b5b084d8b1b4983fb050f85980000004d89e64d8b76084d8b264983fc057573498b460841ff76104c89ebff15de0300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be683bb209000000004c89336a016a01488b4424104989e0ff15950300005b488d642410488b4424184c8b4424104c8b4c2408415a488d642418e9acfeffff488d64242048b818d0620800000000488b5d08ff23488d64240841f6c501740b415c4883c408e95e010000488d64241058ff25350300004983fe0d0f853c0100004c8b73084c8b63104d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8b364d8b1e4d89dc4983fb09757648ba90166608000000004889d848c7c301000000ff15cf0200004989c54d8b7500498d5fd0483b5d107306ff5550ca00604989df48c743f80500000048c74320010000004c896b184c89731048c743080100000048c7030b000000488b4424184c8b4424104c8b4c2408415a488d642418e9bbfdffff4983fc0375686a016a014c89eb488b4424284989e04c8b4c2410ff154b020000415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488b4424184c89f34c8b4424104c8b4c2408415a488d642418e92ffdffff488d64241858ff25cb01000041f6c4010f850e0100004d8b2c244d8b5c24084d8b55004d8b52184d8b4e18498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb7b4c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374174d89dd4d89ec483b65187306ff5558ca0850e908ffffff4d8d77f04c3b75107306ff5550ca08204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750758ff2597000000488d6424084d8b364d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5043b209000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608ffffffff4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@7318,1,@18419,@13608,@13608,@13610,@13585,@13608,@10900,@10958|79,0,@13583 278,0,@13584 347,0,@1531 465,0,@7268 1078,0,@13587 13583:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7267,1,@18392| 13584:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18393| 13585:D8,1560|483b65187305ff5558cd0d52ff153e0600004989c64d8b2e4983fd057551498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15e90500004989c6eb09ff15d60500004989c6eb0041564c8b34244d8b264d89e54983fc0b0f85d00000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc037409488d6424104c89f0c34d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15520500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be9042b209000000004c89336a016a01488b4424104989e0ff1509050000415d488d6424104c892c24483b65187303ff5558e931ffffff488d64241048b818d0620800000000488b5d08ff234d89f64983fd0d75444d89f64d8b7608488d6424084d8b2e4d8b65004983fc0975164d8b6d084c8b24244d8b6424084d8b24244d89ebeb2a488d64240848b8e816660800000000488b5d08ff23488d64241048b87817660800000000488b5d08ff234983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc0375354c8b2c244d8b6d08488d6424084d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9af0200004d89ec4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756e4d89ca4d8b4a084c8b14244d8b52484d3bd1750949c7c203000000eb0749c7c2010000004983fa03754449c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642410488d6424084d896500e9170200004d89eceb144d89dc483b65187306ff5558ca0070e952ffffff4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756e4d89ca4d8b4a084c8b14244d8b52404d3bd1750949c7c203000000eb0749c7c2010000004983fa03754449c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642418488d6424084d896500e9690100004d89eceb144d89dc483b65187306ff5558ca0070e952ffffff4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756b4d89ca4d8b4a084c8b14244d8b52384d3bd1750949c7c203000000eb0749c7c2010000004983fa03754149c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642420488d6424084d896500e9bb000000eb144d89dc483b65187306ff5558ca0070e955ffffff4983fd01750949c7c501000000eb554d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85d20000004d89d34d8b53084c8b1c244d8b5b304d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a400000049c7c5030000004983fd03752f4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642428488d6424084d896500eb0c488d64240849c7c5010000004983fd01751048b8d017660800000000488b5d08ff23498b45004c8b204d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c7452001000000498945184d89651049c745080100000049c745000b0000004d892ec34d89e5483b65187306ff5558ca0060e9ebfefffff400000000000000|@7276,1,@18395,@10900,@10958,@10728,@10728,@10728|266,0,@13586 327,0,@1531 404,0,@7269 425,0,@7272 1448,0,@7274 13586:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18394| 13587:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7267,1,@18396| 13588:D10,1008|483b65187306ff5558ca090750534150415141524c8b4c24384c8b542430488b442408488b5c24204c8b0424ff15060400004989c64983fe010f85a90200004c8b7424204d8b2e4d89ec4983fd070f85800000004d89f64d8b6e0841f6c50175624d8b75084983fe01750949c7c603000000eb0749c7c6010000004983fe03753b4d8b7500498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e944ffffff488d642428eb05488d64242849c7c601000000e99d0200004d89f64d89e54983fc0b0f851a0100004d89f6498b5e084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85ae0000004d8b76084d8b2e4983fd050f8588000000498b460841ff7610ff15060300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee047b209000000004c89336a016a01488b4424104989e0ff15bd02000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e95cfeffff488d64242848b818d0620800000000488b5d08ff234c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d642410ff7424084c8954240849baa8186608000000004c895c24104c896424184c896c2420ff25220200004d89f64983fd0d0f85c80000004d89f64d8b6e08498b45004c8b204d89e54983fc037515488d64242848b8b818660800000000488b5d08ff234983fd09756348ba90166608000000004c89f048c7c301000000ff15c10100004c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d6424184152ff74240849baa81866080000000048c7c3010000004c895c24104c896424184c896c2420ff2570010000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e92dfdffff488d64242848b84819660800000000488b5d08ff23488d6424184d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d7529488d6424084c89f049c7c00100000048c7c3070000004c8b34244c897424104883c410ff25d5000000488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010070000004c89700848c70017000000c2100041f6c50175314d8b5d084d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc94983fe097f31498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c2100048b8a0aa620800000000c21000f4000000|@7285,1,@18399,@11046,@13590,@13585,@13590,@10900,@10958,@13582|334,0,@13589 427,0,@1531 481,0,@7278 553,0,@7279 575,0,@7268 636,0,@7278 730,0,@7282 902,0,@105 993,0,@1262 13589:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18398| 13590:D6,312|483b65187306ff5558ca090753415041514152488b5424104c8b7018498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6c24084c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30700000049c7c001000000ff15ee0000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610070000004d896e0849c706170000004156f6442420017408584883c420c220004c8b4424484c8b4c24404c8b5424384c8b742430ff742410ff7424204156488b442438488b5c2420ff156c000000ff155e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000f400000000|@7286,1,@18400,@13572,@13591,@11046| 13591:D4,496|483b65187306ff5558ca09074989c65341504151415241f6c6010f8509010000498b0641ff7608488b542420488b5c24404c8b4424384c8b4c2430ff742410ff7424104c8b542428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2180041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15890000004989c6eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e847feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800f40000000000|@742,1,@18401,@12170|148,0,@1263 193,0,@1263 237,0,@1263 13592:D10,888|483b65187306ff5558ca090750534150415141524c8b4c24384c8b542430488b442408488b5c24204c8b0424ff158e0300004989c64983fe010f85a90200004c8b7424204d8b2e4d89ec4983fd070f85800000004d89f64d8b760841f6c60175614d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd03753a4d8b36498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e945ffffff488d642428eb05488d64242848b8481a660800000000c210004d89f64d89e54983fc0b0f851a0100004d89f6498b5e084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85ae0000004d8b76084d8b2e4983fd050f8588000000498b460841ff7610ff158e0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be1050b209000000004c89336a016a01488b4424104989e0ff154502000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e95cfeffff488d64242848b818d0620800000000488b5d08ff234c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d642410ff7424084c8954240849ba681a6608000000004c895c24104c896424184c896c2420ff25aa0100004d89f64983fd0d0f85c80000004d89f64d8b6e08498b45004c8b204d89e54983fc037515488d64242848b8781a660800000000488b5d08ff234983fd09756348ba90166608000000004c89f048c7c301000000ff15490100004c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d6424184152ff74240849ba681a66080000000048c7c3010000004c895c24104c896424184c896c2420ff25f8000000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e92dfdffff488d64242848b8101b660800000000488b5d08ff23488d6424184d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d7529488d6424084c89f049c7c00100000048c7c3050000004c8b34244c897424104883c410ff255d000000488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010050000004c89700848c70017000000c21000f4000000000000|@7295,1,@18403,@11046,@13594,@13585,@13594,@10900,@10958,@13582|201,0,@7287 334,0,@13593 427,0,@1531 481,0,@7288 553,0,@7289 575,0,@7268 636,0,@7288 730,0,@7292 13593:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18402| 13594:D6,312|483b65187306ff5558ca090753415041514152488b5424104c8b7018498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6c24084c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15ee0000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c706170000004156f6442420017408584883c420c220004c8b4424484c8b4c24404c8b5424384c8b742430ff742410ff7424204156488b442438488b5c2420ff156c000000ff155e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000f400000000|@7296,1,@18404,@13572,@13595,@11046| 13595:D4,456|483b65187306ff5558ca09074989c65341504151415241f6c6010f85e3000000498b0641ff7608488b542420488b5c24404c8b4424384c8b4c2430ff742410ff7424104c8b542428ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc07e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2180041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15870000004989c6eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800f4000000|@742,1,@18405,@12170|106,0,@4663 155,0,@1263 199,0,@1263 13596:D14,1336|483b65187306ff5558ca09074989c6534150415141524d8b2e4d89ec4983fd070f8568010000498b4608a80175564c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe0375364c8b30498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e97cffffff4c8b6c24184d8b75004d89ed4d8b6d0849c7c3010000004d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca01604d89e749c74424f8030000004d896c24104c8b2c244d89eb4d896c240849bdf859b209000000004d892c244983c6027115488d64242848b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d89db4d895d104d8965084d8975004c8b5424384c8b74243041564155ff742428ff74242848c7c30100000049b8181c6608000000004c8b4c2428ff152b0400004989c641564c8b7424084d8b3648c7c001000000e9a70200004d89e54983fc0b0f850d010000498b5e08498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85aa0000004d8b76084d8b2e4983fd050f8584000000498b460841ff7610ff15bd0300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be485bb209000000004c89336a016a01488b4424104989e0ff157403000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e9affdffff488d64242048b818d0620800000000488b5d08ff2341584c8b4c2428488b7c2420415d4c8b64240849bb181c660800000000415a488d6424084152ff7424084989fa4c895c24104c896424184c896c2420ff25e00200004983fd0d0f856e0100004d8b6e08498b45004c8b204d89e54983fc030f85be0000004c8b4c24304c8b5424284c89f3488b4424084c8b0424ff159a0200004989c6488d6424104983fe017515488d64241048b8281c660800000000488b5d08ff23488d6424084d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d75244c89f049c7c00100000048c7c3010000004c8b34244c897424104883c410ff2529020000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70017000000c210004983fd09756348ba90166608000000004c89f048c7c301000000ff15c801000041584c8b4c2428488b7c2420415d4c8b64240849bb181c660800000000415a488d6424084152ff7424084989fa48c7c3010000004c895c24104c896424184c896c2420ff2577010000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e9e0fbffff488d64242048b8b81c660800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15db000000ff15cd0000004989c6415648c7c001000000ff15b30000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd381d6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c428c21000f400000000|@7305,1,@18408,@13600,@11908,@13601,@13602,@13585,@11046,@13582,@13602,@10900,@10958,@13599|242,0,@13597 267,0,@105 354,0,@7297 511,0,@13598 600,0,@1531 635,0,@7297 763,0,@7298 912,0,@7268 957,0,@7297 1063,0,@7301 1262,0,@7304 13597:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18406,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13598:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18407| 13599:D4,536|483b65187306ff5558ca090753415041514152a8010f85e90100004c8b30ff7008498b4608488b542418488b5c24404c8b4424384c8b4c24304c8b742448ff74240841564c8b542420ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6424284d89e54d89661049bc989f6208000000004d89660849c706170000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c7442418010000004d89ed4d896c241049bdc89f6208000000004d896c240849c70424170000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff150c0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004156488b5c24284883c3027115488d64243048b8d006620800000000488b5d08ff234c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b4424284c8b4424404c8b4c24384c8b542430e847feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdc0aa6208000000004c8968184c8970104c8b34244c897008488d64242848c7000b0000004883c408c22000488d64242048b8a0aa620800000000c22000f400|@7314,1,@18414,@13572|126,0,@1171 192,0,@1173 374,0,@105 473,0,@1263 523,0,@1262 13600:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18409|33,0,@105 88,0,@1823 13601:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18410| 13602:D10,592|483b65187306ff5558ca0907534150415141524c8b68184d89ee4d8b5d084d89dc4d8b1b4983fb03752e4d8b6424084c3b2562020000750949c7c403000000eb0749c7c4010000004983fc03750a488d642420e9e40100004d8b5d084d89dc4d8b1b4983fb03752d4d8b6424084c3b251c020000750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb764d8b5d084d89dc4d8b1b4983fb03752d4d8b6424084c3b25d7010000750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb394d8b5d084d89dc4d8b1b4983fb0375224d89e54d8b6d084c3b2d90010000750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f8422010000488b5424284c8b6c2438498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15080100004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d896e0849c706170000004156f6442420017408584883c420c220004c8b5424484c8b7424404c8b6c24384c8b642430415641554154488b442438488b5c24304c8b4424284c8b4c2420ff1580000000ff15720000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000488d64242048b8801d660800000000c22000f4000000000000|@7309,1,@18411,@13572,@13603,@11046,@15163,@15164,@15165,@15162|574,0,@7306 13603:D4,208|483b65187306ff5558ca09074989c65341504151415241f6c6010f859f000000498b0641ff76084c8b7424404c8b6c24384c8b642430415641554154488b5c24384c8b4424304c8b4c24284c8b542420ff15920000004989c641564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e872ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f400|@742,1,@18412,@13604| 13604:D7,592|483b65187306ff5558ca09075053415041514152488b5c24204c8b334983fe0d757a4889db4c8b73084d8b364d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe037551488b04244c8b4424184c8b4c24104c8b542408ff151c0200004989c6488d6424284983fe01751048b8381e660800000000488b5d08ff234d8b36498b16488b4424184c8b34244c897424184883c418ff22488b542438488b5c24404c8b442430ff742410ff742410488b4424304c8b4c24104c8b542428ff124989c64156488b5c24484c8b442438ff742418ff742418488b4424384c8b4c24184c8b542430ff15880100004989c64156488b5c24504c8b442440ff742420ff742420488b4424404c8b4c24204c8b542438ff15540100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642430498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424184883c418ff2520000000c21800f400000000|@7313,1,@18413,@12170,@13588,@13592,@13582|116,0,@7310 402,0,@1263 13605:D7,704|483b65187306ff5558ca090750534150415141524c8b542430488b442410488b5c24204c8b4424084c8b0c24ff15be0200004989c64983fe010f85a50100004c8b7424204d8b2e4d89ec4983fd0775124d89f64d8b76084156ff742420e9fb0100004d89f64d89e54983fc0b0f85fd0000004d89f54d89ee41ff75084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85a90000004d8b76084d8b2e4983fd050f8583000000498b460841ff7610488b5c2408ff15280200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bed868b209000000004c89336a016a01488b4424104989e0ff15df01000058488d642418488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c896c24104883c408e9d0feffff488d64243048b818d0620800000000488b5d08ff23488b5c2418ff15880100004989c64c8b6424204d89e54d3be67e054d89eeeb00ff34244156e9970000004d89f64983fd0d755f4d89f64d8b7608498b064c8b284d89ee4983fd03750d488d642418584883c408c208004983fe09750d488d642418584883c408c20800488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c896c24104883c408e929feffff488d642418584883c408c20800488d6424184d8b36498b4608483b04247e08488d642410c20800584883c408c20800f64424080175484c8b742408498b064d89f641ff76084c8b7424504156488b5c24104c8b4424384c8b4c24304c8b542428e8c4fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb1584883c438c20800f644240801754d4c8b6c24084d8b75004d89ed41ff7508498b46084c8b7424484156488b5c24104c8b4424304c8b4c24284c8b542420e868fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebac584883c430c20800f4000000000000|@7315,1,@18416,@13607,@10900,@10958,@13582|228,0,@13606 311,0,@1531 13606:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18415| 13607:D3,416|483b65187305ff5558cd09f6c301751f4c8b33488b5b084d8b76184d8b2e4983fd0175064d8b7608eb0de9d1ffffff48c7c0ffffffffc341f6c6010f85f10000004d8b264d8b6e084d8b6424184c8b58184d8b4c24084d89ca4d8b094983f903754e4d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f80375284d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037567eb794d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89ee483b65187306ff5558ca0940e90effffff49c7c603000000eb0749c7c6010000004983fe03750948c7c001000000eb05e9b3fefffff6c30175304c8b6b084989c64983c602711048b8d006620800000000488b5d08ff234c89eb4c89f0483b65187305ff5558cd09ebcb4883c002711048b8d006620800000000488b5d08ff23c3f4000000000000|@7316,1,@18417|353,0,@105 394,0,@105 13608:D4,424|483b65187305ff5558cd0953a80175154c8b28ff70084d8b75004d8b3641ff75084156eb0d488d64240848c7c001000000c3f604240175734c8b2c244d89ee41ff75004d89f641ff76084c8b742408498b06488b5c2428ff15630100004989c64983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb22415d4c896c2408483b65187303ff55584883c408eb87488d64240849c7c60100000041f6c60175504d8b364d8b76084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424084d89750849be386db209000000004d89750049c7c401000000415e4883c408eb0c488d642408585be9e7feffff41f6c60175314d8b56084d89e34983c302711048b8d006620800000000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebc94983c402711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@7321,1,@18422,@13612|242,0,@13609 302,0,@105 344,0,@105 13609:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7317,1,@18418|36,0,@105 13610:D3,312|483b65187306ff5558ca0903a801751f4c8b30488b40084d8b76184d8b2e4983fd0375064d8b7608eb44e9d1ffffff4d8d77e84c3b75107306ff5550ca00034d89f749c746f8020000004d894e0849bd586fb209000000004d892e4d893049c740080100000048c7c001000000c341f6c60175474d8b264d8b6e084d8b1c244d8b1b4c8b134d3bda75204d8d77f04c3b75107306ff5550ca09134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0943ebb349c7c6010000004983fe017505e933ffffff4d8b364d8b6e0849c7c601000000a80175314c8b58084d89f44983c402711048b8d006620800000000488b5d08ff234c89d84d89e6483b65187306ff5558ca0161ebcb4983c602711048b8d006620800000000488b5d08ff234d89284d89700848c7c001000000c3f40000|@7320,1,@18421|80,0,@13611 238,0,@105 280,0,@105 13611:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7319,1,@18420| 13612:D5,1000|483b65187305ff5558cd0953ff15f60300004989c64156488b442408ff15de0300004989c34c8b34244d8b264d89e54983fc0d755a4d8b234983fc0d75514d89f64d8b7608488d6424084d8b6b084d8b1e4d8b65004d8b1b4983fb037524488d6424084d8b24244983fc03751a4d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c34d89f64d89ec4983fd05754a4d8b2b4983fd0575414d89f6498b46084d89f641ff7610498b5b0841ff7310e841ffffff4989c64983fe037510488b4424085b488d642418e928ffffff488d64242048c7c001000000c34d89f64d89e54983fc0775224d8b234983fc0775194d89f64d8b6e08488d6424084d8b730841554156e9d30100004d89f64983fd0b0f85140100004d8b2b4983fd0b0f85000100004d89f64d8b6e084d89f64d8b6618488d6424084d8b73084d8b5b184d8b6424184d8b5b184d8b4c24084d89ca4d8b094983f9037553488d6424084d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f803752d4d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc03756ceb72488d6424084d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03740848c7c001000000c341554156eb14488d642410eb05488d64241048c7c001000000c34c8b6c24084d89ee4983fd0175294c8b34244983fe01488d642408750d488d64240848c7c003000000c3488d64240848c7c001000000c34d89f6498b064d89f641ff7608f644240801754d4c8b742408498b1e4d89f641ff7608e860fdffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e975ffffff488d64242048c7c001000000c3488d64241848c7c001000000c34c8b6c24084d89ee4983fd0175294c8b34244983fe01488d642408750d488d64241048c7c003000000c3488d64241048c7c001000000c34d89f64d8b2e4d89f641ff7608f6442408010f85a30000004c8b6424084d8b34244d89e441ff7424084d8b6500498b45084d8b2e498b5e084d3be57502eb374d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf3754f498d742408498d7d08483bc9f3a67407488d642428eb3de868fcffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e922ffffff488d642428eb05488d64242848c7c001000000c3488d64242048c7c001000000c3f40000|@7322,1,@18423,@10728,@10728| 13613:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@7328,1,@18424| 13614:D3,24|483b65187305ff5558cd0148b8a0b7620800000000c3f400|@7329,1,@18425|13,0,@1369 13615:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@7328,1,@18426| 13616:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@4669,1,@18427|13,0,@1138 13617:D3,32|483b65187305ff5558cd0149be5803110a00000000498b16ff22f40000000000|@3051,1,@18428|13,0,@15145 13618:D4,48|483b65187305ff5558cd09483bc3750848c7c003000000c3a801750bf6c3017506ff252100000048c7c001000000c3f4|@7362,1,@18429,@13619| 13619:D3,136|483b65187305ff5558cd094889c64889df4c0fb676ff4e8d3475010000004c0fb66fff4e8d2c6d010000004d3bf5754f4c8b77f849c1e60849c1ee074983ce014c8b6ef849c1e50849c1ed074983cd014d3bee75224a8d0cf5f9ffffff48d1e9483bc9f3a6750848c7c003000000c348c7c001000000c348c7c001000000c348c7c001000000c3f4|@7363,1,@18430| 13620:D3,32|483b65187305ff5558cd0149be880b110a00000000498b16ff22f40000000000|@3051,1,@18431|13,0,@15276 13621:D3,32|483b65187305ff5558cd0149be3804110a00000000498b16ff22f40000000000|@2015,1,@18432|13,0,@15159 13622:D3,32|483b65187305ff5558cd0149bef803110a00000000498b16ff22f40000000000|@727,1,@18433|13,0,@15155 13623:D3,32|483b65187305ff5558cd0149bed803110a00000000498b16ff22f40000000000|@7368,1,@18434|13,0,@15153 13624:D4,48|483b65187306ff5558ca0d014c8b6a084c8b4a104c8b5218ff34244c894424084d89e8ff251f000000f4000000000000|@7672,1,@18441,@13625| 13625:D53,7720|483b65187306ff5558ca09074989c5534150415141524d8b65004d89e64983fc057514488d64242049bea048660800000000e9c71c00004d89f44983fe070f851a03000041ff75084d8b7510f60424010f85f40200004c8b24244d8b2c244d89e44d8b6424084983fc010f85d1020000488d64240841ff7500498b45084c8b6c24204d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb7097b209000000004d895d004983c6027115488d64243048b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca01704989df48c743f8030000004d89e44c8963104c896b084c89334c8b74243841564c8b4424284c8b4c24204c8b542418e8affeffff4989c6415648b8f048660800000000ff15621e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6424104d8b34244e8d2c75010000004983fd01750f49be30bd620800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15241c00000f872a0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e96d140000488d64243848b8f807620800000000488b5d08ff236a016a01e9ad0c0000488d64242849be0849660800000000e9890b00004d89e64983fc0b0f850706000041ff750841ff75104d8b75184d8b66184d89e54d8b6424084d8b24244983fc050f85a6000000488d6424084d8b75084d8b2e4983fd05757f498b460841ff7610488b5c2408ff150a1c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec098b209000000004c89336a016a01488b4424104989e0ff15c11b000058488d642418488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9defbffff488d64242848b818d0620800000000488b5d08ff234c8b642428498b1c244d89e44d8b44240849c7c3010000004d8d67f04c3b65107306ff5550ca08694d89e749c74424f80100000041c64424ff404d891c2441544d8d5fe04c3b5d107306ff5550ca08614d89df49c743f8030000004d8943104c8b24244d89e24d89630849bc8099b209000000004d89234883c3027115488d64243848b8d006620800000000488b5d08ff234d8d67e04c3b65107306ff5550ca086d4d89e749c74424f8030000004d89d24d89d14d895424104d895c240849891c2441544d89ee498b06ff15a91a00004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff157d1a00004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c7061700000041564c8b7424504156ff742410488b44243048bb58496608000000004c8b4424484c8b4c24404c8b542438ff15091a00004c8b7424204983fe010f85c20100004d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c745100100000049beb8006608000000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b000000415648b8f048660800000000ff15711900004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24184d8b75004e8d2475010000004983fc01750f49be6849660800000000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b155b1700000f87900000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb684966080000000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b3648c7c001000000e931060000488d64244848b8f807620800000000488b5d08ff234d8d6fe04c3b6d107305ff5550cd014d89ef49c745f80300000049c745100100000049beb8006608000000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b0000004156ff15af1700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b8f048660800000000ff15571700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24184d8b75004e8d2475010000004983fc01750f49be6849660800000000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15491500000f87900000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb684966080000000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b3648c7c001000000e9c4020000488d64244848b8f807620800000000488b5d08ff234983fe0d0f85860100004d8b75084d8b264c89e04d8b14244d89d34983fa090f858000000048ba90166608000000004c89e848c7c301000000ff15cf1500004989c54d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b000000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9e9f5ffff4d89dc4983fc030f85b9000000488b4424284c89eb4c8b4424104c8b4c24084c8b1424ff15381500004989c6488d6424184983fe017515488d64240848b88049660800000000488b5d08ff234d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d75244c89f049c7c00100000048c7c3030000004c8b34244c897424084883c408ff25cc140000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c20800488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9fef4ffff488d64242049be184a66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8804a660800000000ff15091400004989c6eb0a49be804a660800000000415648c7c001000000ff15e31300004989c6415648c7c001000000ff15c91300004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bda04a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15df1200004c8b34244d89f54c3b35c91200007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15631200004989c6415648c7c001000000ff15491200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff155c1100004c8b34244d89f54c3b35461100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15e01000004989c6415648c7c001000000ff15c61000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c2080041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d84a660800000000ff15db0f00004989c6eb0a49bed84a660800000000415648c7c001000000ff15b50f00004989c6415648c7c001000000ff159b0f00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf84a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c208004d8b2e4983fd0175314d8b6e084d8b76104c892c244c89742408488d642408415e4983fe03750aff34246a03e91906000049c7c601000000eb194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040ebad41564c8b7424284d8b2e4d89f64d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849bed09ab209000000004d8934244983c5027115488d64243848b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e415648c7c3010000004c8b74241841f6c60175364d8b66084989dd4983c5027115488d64244048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff157d0d00004889c348bac0c0650800000000488b442418ff155d0d00004c8b7424104983fe0375054989c6eb1348bb184b660800000000ff15350d00004989c641564c8b7424184983fe03750c49be7018620800000000eb0a49be38206208000000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15100c00004989c6eb0041564c8b742458ff7424304156ff742420ff742438488b44242848c7c30100000049b858496608000000004c8b4c24604c8b542458ff15c80b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f60a00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff159b0900004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff152d090000ff151f0900004989c6415648c7c001000000ff15050900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf84a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f6442408010f85ce0000004c8b6c24084d8b75004d89ed41ff750841ff3648bae85c620800000000488b44241048c7c303000000ff152d0800004989c54c8b34244d89f44d3bf57507488d642408eb424d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375584d89e4498d742408488d642408498d7d08483bc9f3a67407488d642418eb3e4c8b6424084983c4027115488d64244048b8d006620800000000488b5d08ff23415d4c8924244c896c2408483b65187303ff5558e935ffffff488d64242049c7c601000000eb0c488d64241049c7c6030000004983fe03750d49c7c6010000004c8b2c24eb0c49c7c601000000e905f9ffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe057c0949c7c603000000eb0749c7c601000000eba741f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15c00600004989c6eb00415649bec04b66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8084c660800000000ff15590600004989c6eb0a49be084c660800000000415649be404c66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8904c660800000000ff15e80500004989c5eb0a49bd904c6608000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410ff15270500004989c6415649beb04c66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8004d660800000000ff15c20400004989c6eb0a49be004d6608000000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b2c244d892c24488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e10300004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15860200004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff1518020000ff150a0200004989c6415648c7c001000000ff15f00100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf84a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c430c2080041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8204d660800000000ff15040100004989c6eb0a49be204d660800000000415648c7c001000000ff15de0000004989c6415648c7c001000000ff15c40000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd28226608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c20800f400ffffffffffffff01ffffffffffffff01ffffffffffffff01|@7673,1,@18442,@13633,@11908,@12170,@13634,@11908,@13601,@12170,@12170,@12170,@13635,@12170,@12170,@12170,@10649,@13636,@11908,@13601,@12170,@12170,@13637,@12170,@10785,@13140,@13643,@13644,@11908,@12170,@13645,@11908,@123,@13601,@13646,@11908,@123,@13601,@13647,@11908,@12170,@11046,@13582,@13585,@13572,@13572,@13572,@13648,@11046,@13632,@10900,@10958,@13572|42,0,@7634 230,0,@13626 255,0,@105 344,0,@7637 447,0,@1415 749,0,@1854 819,0,@117 849,0,@7638 986,0,@13627 1065,0,@1531 1187,0,@13628 1211,0,@105 1402,0,@7641 1480,0,@7165 1538,0,@5750 1561,0,@7637 1664,0,@7642 1801,0,@7642 1882,0,@117 1932,0,@7165 1990,0,@5750 2083,0,@7637 2186,0,@7642 2323,0,@7642 2404,0,@117 2457,0,@7268 2645,0,@7643 2825,0,@7646 2897,0,@7650 2918,0,@7650 3040,0,@7651 3231,0,@123 3273,0,@7652 3586,0,@123 3628,0,@7652 3879,0,@7653 3900,0,@7653 4022,0,@7654 4281,0,@13629 4306,0,@105 4401,0,@105 4448,0,@731 4480,0,@6845 4517,0,@7655 4549,0,@195 4561,0,@278 4687,0,@1854 4856,0,@7641 5159,0,@1263 5203,0,@1263 5248,0,@1262 5292,0,@1263 5628,0,@7654 5729,0,@707 5861,0,@105 5983,0,@105 6121,0,@7658 6193,0,@7661 6214,0,@7661 6226,0,@7663 6298,0,@7666 6319,0,@7666 6504,0,@7667 6576,0,@7670 6597,0,@7670 6884,0,@1263 6928,0,@1263 6973,0,@1262 7017,0,@1263 7353,0,@7654 7486,0,@7671 7507,0,@7671 7629,0,@7329 13626:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18435,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13627:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18436| 13628:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18437,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13629:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18438,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13630:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be889cb209000000004c8930c3f400|@7657,1,@18440|50,0,@13631 13631:D3,160|483b65187305ff5558cd054c8b304d8b364c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f40000000000|@7656,1,@18439| 13632:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64240848b8c012660800000000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a80f660800000000488b5d08ff23f400|@7237,1,@18461,@13169,@11046|192,0,@105 223,0,@7248 256,0,@105 347,0,@7251 456,0,@7233 13633:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18443|33,0,@105 88,0,@1823 13634:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18444|33,0,@105 88,0,@1823 13635:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c0aa620800000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@1573,1,@18445,@12170|165,0,@1263 13636:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18446|33,0,@105 88,0,@1823 13637:D18,3760|483b65187306ff5558ca090753415041514152a8010f85ea0400004c8b30ff70084c8b2c244983fd010f8509030000488d6424084d8b2e41ff7500498b450841ff7608488b542420488b5c24404c8b5424504c8b74244841564c8b4424204c8b4c2418ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6c24084d896e1049bdb04d6608000000004d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd84d6608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15090e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424104d896e0849c7060f00000041566a016a014c8b7424484983fe03751f49be584e6608000000004d8b2e4c892c244d8b76084c89742408e97a0b00004c8b6424184d8b34244e8d2c75010000004983fd01750f49be30bd620800000000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15b50c00000f872a0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e9da080000488d64244048b8f807620800000000488b5d08ff234d8b2e4d8b650041ff750841ff76086a016a014c8b7424504983fe03751f49be584e6608000000004d8b2e4c892c244d8b76084c89742408e9bf0200004d8b34244e8d2c75010000004983fd01750f49be30bd620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15da0a00000f87240100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb2a488d64244848b8f807620800000000488b5d08ff23488d64242048b8704e660800000000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cf0900004989c6eb00415649bec04b66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8c84e660800000000ff15680900004989c5eb0a49bdc84e6608000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d64240849be68206208000000004c892c244c89742408ff3424ff742410488b542448488b5c24684c8b5424784c8b7424704156488b4424304c8b4424484c8b4c2440ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6c24284d896e1049bdb04d6608000000004d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd84d6608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15f40700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415649be004f66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8504f660800000000ff15540700004989c6eb0a49be504f660800000000415649bec04b66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8704f660800000000ff15e30600004989c6eb0a49be704f6608000000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175074c8b742408eb0e488b442408ff15370600004989c64156488b5c24584883c3027115488d64246048b8d006620800000000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b4424584c8b4424704c8b4c24684c8b542460e8d2f6ffff4889c3488b0424ff15c50500004989c641564c8b6c24104d8b75004a8d0c75010000004883f901750f49be6087620800000000e99e0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d020500000f871a0100004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646082e41c646092e41c6460a2e4d89ed498d7508498d7e0b48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb15488d64246848b8f807620800000000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e60300004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15ad0300004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b7424604d8974240849c704240d0000004d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bba84f6608000000004d895e184d89661049bc304e6608000000004d89660849c70607000000498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b24244c896018488d6424084c8968104c89700848c7000b0000004883c460c2200041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15a40200004989c6eb00415649bec04b66080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8c84f660800000000ff153d0200004989c5eb0a49bdc84f6608000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d64240849be68206208000000004c892c244c89742408ff34244c8b6c24104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0016308000000004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15c30000004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b7424184c89334883fb017507584883c440eb0f488b0424ff1552000000488d6424484c8b34244c897424204883c420ff2532000000f400ffffffffffffff01ffffffffffffff01ffffffffffffff01|@7693,1,@18447,@13639,@13640,@12170,@12170,@12170,@13641,@12170,@13642,@13638,@12170,@12170,@13572,@12170,@12170,@13572|149,0,@7674 197,0,@7675 384,0,@7679 438,0,@1415 740,0,@1854 810,0,@117 856,0,@7679 905,0,@1415 1204,0,@1854 1271,0,@117 1292,0,@7680 1386,0,@7658 1458,0,@7682 1479,0,@7682 1571,0,@280 1682,0,@7674 1730,0,@7675 1902,0,@7684 1974,0,@7687 1995,0,@7687 2007,0,@7658 2079,0,@7688 2100,0,@7688 2280,0,@105 2393,0,@1004 2682,0,@1854 2749,0,@117 2970,0,@7690 2988,0,@7678 3149,0,@7658 3221,0,@7691 3242,0,@7691 3334,0,@280 3477,0,@1854 13638:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18452| 13639:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c0aa620800000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@1573,1,@18448,@12170|165,0,@1263 13640:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18449| 13641:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c0aa620800000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@1573,1,@18450,@12170|165,0,@1263 13642:D4,256|483b65187305ff5558cd094989c64889d841f6c6010f859700000041ff364d8b76084889c34c89f0e8d3ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb01c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2521000000c3f400000000000000|@1573,1,@18451,@12170| 13643:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@18453|53,0,@105 13644:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18454|33,0,@105 88,0,@1823 13645:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18455|33,0,@105 88,0,@1823 13646:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18456|33,0,@105 88,0,@1823 13647:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18457|33,0,@105 88,0,@1823 13648:D6,584|483b65187306ff5558ca090753415041514152a8010f856b010000ff30ff7008488b542428488b5c24384c8b7424404156488b4424104c8b4424284c8b4c24204c8b542418ff124989c64156488b5c24404c8b4c2448ff742420ff742420488b44242049b848506608000000004c8b542438ff15f80100004989c64156488b5c24484c8b4c2450ff742428ff742428488b44242849b848506608000000004c8b542440ff15bf0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2100041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15840000004989c6eb0041564c8b7424484c8b6c244041564155488b442418488b5c24404c8b4424384c8b4c24304c8b542428e8f1fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c428c21000f4000000|@742,1,@18460,@12170,@13588,@13592|101,0,@7694 150,0,@7694 330,0,@1263 13649:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7695,1,@18458,@13650| 13650:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18459,@11046|170,0,@105 287,0,@7233 13651:D8,576|483b65187306ff5558ca0d014c8b334c8b630849c7c3010000004d8d6ff04c3b6d107306ff5550ca05594d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca05514d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bbc0bfb209000000004d895d004983c6027115488d64240848b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca05714989df48c743f8030000004d89e44c8963104c896b084c89334c8b52084c8b72104c8b6a18415641554d89c149b8f050660800000000ff15990100004989c6415648b84051660800000000ff157c0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d5000000ff15c70000004989c6415648c7c001000000ff15ad0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bd70516608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c408c3f4|@7703,1,@18465,@13656,@13655,@13601,@13572,@13596|108,0,@13652 133,0,@105 209,0,@7698 230,0,@7700 508,0,@7702 13652:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18462,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13653:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@7699,1,@18463,@13654| 13654:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18464,@11046|170,0,@105 287,0,@7233 13655:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@18467|89,0,@4664 13656:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18466|33,0,@105 88,0,@1823 13657:D4,40|483b65187306ff5558ca0d014d89c14989d84889c34c8b7208498b06ff251e000000f40000000000|@7712,1,@18468,@13658| 13658:D3,328|483b65187306ff5558ca09034c89caa8010f85240100004c8b30488b40084d8b1e4d8b66084d8b7610493bdb7502eb364c8b2b4e8d2c6d010000004d8b134c89d14e8d1455010000004d3bea0f85e1000000488d7308498d7b08483bc9f3a67405e9cd0000004d8b68184d8b6424184d8b55084d89d34d8b124983fa03754a4d8b4c24084d89ca4d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375234d8b6b084d89d44d8b6424084d3bec750949c7c503000000eb0749c7c501000000eb604d89da4d8b1b4983fb01754d4d8b4c24084d89cb4d8b094983f901750949c7c103000000eb0749c7c1010000004983f90375264d89d54d8b6d184d89dc4d8b6424184d3bec750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd0375044c89f0c34989d1e9c5feffff48c7c001000000ff22f4000000|@7713,1,@18469| 13659:D3,32|483b65187305ff5558cd0148b87853660800000000488b5d08ff23f400000000|@7718,1,@18470|13,0,@7715 13660:D3,120|483b65187305ff5558cd054d8d77e04c3b75107305ff5550cd054d89f749c746f80300000049c74610010000004989460849c7060d000000498d47d8483b45107306ff5550ca04404989c748c740f8040000004c8b6a104c8968184c8b6a084c8968104c89700849be98c6b209000000004c8930c3f40000|@7735,1,@18477|105,0,@13661 13661:D4,32|483b65187305ff5558cd05488b5a084c8b42104c8b4a18ff251b000000f40000|@7726,1,@18473,@13662| 13662:D6,504|483b65187306ff5558ca09034989c64c89c84156534c8b7424084d8b2e4d89ec4e8d2c6d010000004983fd090f8e210100004d89f64d89e54e8d2465010000004983fc097315488d64241048b82086620800000000488b5d08ff234d89f64e8d2c6d010000004983fd0975054d89f5eb7a49c7c4050000004e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca01414d89ef49d1ec4d8965f841c645ff4149c745080000000049c74500040000004d89f64d0fb66608458865084d89f64d0fb66609458865094d89f64d0fb6660a4588650a4d89f64d0fb6760b4588750b418065ffbf4c3b2d2e010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe09753249beb054660800000000498d7508498d7e0848c7c104000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375054c89c0eb5b4c8b304983fe0775524c8b68084d89ee41f6c501752f4d8b6d0841f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd0375094d8b36498b4608eb25ff15640000004889c348bac854660800000000488b4424084158488d642408ff253d0000004c8b304983fe0d75174c8b70084d8b364c89f0483b65187305ff5558cd01ebe0ebb9f40000|@7733,1,@18475,@13663,@13665,@7722|77,0,@994 273,0,@7722 441,0,@7723 13663:D4,160|483b65187306ff5558ca0d014989c6524d8d6fe04c3b6d107306ff5550ca08414d89ef49c745f8030000004d89451049895d084d89750041554c8b6c24084d8b6d08498b45004989d84c89f3ff15660000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000000000|@7724,1,@18471,@13664| 13664:D3,376|483b65187306ff5558ca0901a8010f8557010000ff30488b40084c8b34244d8b264d89f64d8b6e084c3be37502eb384d8b34244e8d3475010000004c8b1b4c89d94e8d1c5d010000004d3bf30f85e5000000498d742408488d7b08483bc9f3a67405e9d00000004d8b70184d8b6d184d8b5e084d89dc4d8b1b4983fb0375494d8b55084d89d34d8b124983fa03750949c7c203000000eb0749c7c2010000004983fa0375234d8b7424084d89dd4d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb5f4d89e34d8b24244983fc01754b4d8b55084d89d44d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375254d89de4d8b76184d89e54d8b6d184d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d642408e9c9feffffe8c4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@7725,1,@18472| 13665:D5,224|483b65187305ff5558cd014c8b304983fe0b0f85b1000000488b5808488b40184c8b68184d89ee4d8b6d084d8b5d004d89dc4983fb01751048b88855660800000000488b5d08ff234d89e54983fd0575774d8b76084d8b2e4983fd05755a498b460841ff7610ff15940000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea8ccb209000000004c89336a016a01488b4424104989e0ff154b00000058488d642410e948ffffff48b818d0620800000000488b5d08ff23c348b82856660800000000488b5d08ff23f4000000000000|@7734,1,@18476,@10900,@10958|58,0,@7727 144,0,@13666 186,0,@1531 203,0,@7730 13666:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18474| 13667:D4,32|483b65187305ff5558cd05488b5a084c8b42104c8b4a18ff251b000000f40000|@7726,1,@18478,@13662| 13668:D3,112|483b65187305ff5558cd01a8017552ff30488b40084c8b34244d8b76084983fe037534e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99fffffff48c7c001000000c3f4000000000000|@523,1,@18480| 13669:D3,32|483b65187305ff5558cd0148b85858660800000000488b5d08ff23f400000000|@7745,1,@18481|13,0,@7742 13670:D3,32|483b65187305ff5558cd0148b8405b660800000000488b5d08ff23f400000000|@7745,1,@18482|13,0,@7762 13671:D3,32|483b65187305ff5558cd0148b8c85b660800000000488b5d08ff23f400000000|@7769,1,@18483|13,0,@7766 13672:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18484,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13673:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18485,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13674:D5,144|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15900000004989c64d8b2e4983fd0d751d4c89f04c8b3424498b5e08488d64240849c7c001000000ff255f000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244d8b6d08488d6424084c8968104c89700848c70017000000c3f4000000000000|@7745,1,@18486,@11046,@13675| 13675:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@18487,@11046|170,0,@105 287,0,@7791 13676:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7794,1,@18488|36,0,@105 13677:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7745,1,@18489| 13678:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@18490| 13679:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@837,1,@18491| 13680:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18492,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13681:D5,392|483b65187305ff5558cd014c8b284d89ee4983fd0d751d4c8b7008498b064c8b304983fe03750848c7c001000000c3e9ccffffff4983fe0b0f85bd000000488b58084c8b70184d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03740f4d89ec49c7c301000000e9820000004d89ee4d8b76084d8b2e4983fd05755a498b460841ff7610ff15090100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be80d8b209000000004c89336a016a01488b4424104989e0ff15c000000058488d642410e915ffffff48b818d0620800000000488b5d08ff2348c7c001000000c3f6c30175314c8b53084d89dd4983c502711048b8d006620800000000488b5d08ff234c89d34d89eb483b65187306ff5558ca0858ebca4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8975084d8965004d89ee498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f40000000000|@7814,1,@18517,@10900,@10958|195,0,@13682 237,0,@1531 279,0,@105 13682:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18493| 13683:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18495|33,0,@105 88,0,@1823 13684:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18496|33,0,@105 88,0,@1823 13685:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64240848b8c012660800000000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8e85f660800000000488b5d08ff23f400|@7793,1,@18497,@13169,@11046|192,0,@105 223,0,@7248 256,0,@105 347,0,@7251 456,0,@7791 13686:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18498|32,0,@105 87,0,@1823 13687:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18499|33,0,@105 88,0,@1823 13688:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@741,1,@18500|32,0,@6950 137,0,@105 13689:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18501|33,0,@105 88,0,@1823 13690:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18502|33,0,@105 88,0,@1823 13691:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18503|33,0,@105 88,0,@1823 13692:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18504|33,0,@105 88,0,@1823 13693:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18505|33,0,@105 88,0,@1823 13694:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@18506,@11046|170,0,@105 287,0,@7791 13695:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@18507,@11046|170,0,@105 287,0,@7791 13696:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18508|33,0,@105 88,0,@1823 13697:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18509|33,0,@105 88,0,@1823 13698:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18510|33,0,@105 88,0,@1823 13699:D3,288|483b65187305ff5558cd09483bc3750848c7c001000000c34989c54983c502711048b8d006620800000000488b5d08ff234983fd017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e814ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@741,1,@18511|35,0,@105 57,0,@6950 217,0,@105 13700:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18512|33,0,@105 88,0,@1823 13701:D13,1760|483b65187306ff5558ca0907505341504151415248bad8ce620800000000488b442420488b5c2418ff15120700004989c641f6c601750e41ff364c8b7424104d8b7668eb0f488d64242848c7c001000000c2080041f6c60175454d8b264d8b6e084d8b1c244c3b1dcc06000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9800500004d8b364d8b2e4c3b2d6806000075064d8b7610eb15488d64243048b87850620800000000488b5d08ff2341564c8b7424204d8b2e4e8d246d010000004983fc01750f49bd8061660800000000e9b10000004d89e34983c31a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b159c0500000f87e40400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb806166080000000048c7c11b000000498d7308498d7d0848d1e9f3a44c89e14d89f6498d7608498d7d1548d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff15360500004989c048ba8088620800000000488b442430488b5c240849b9e08862080000000049c7c201000000ff15000500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0616608000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15280400004989c048ba8088620800000000488b442440488b5c241049b9e08862080000000049c7c201000000ff15f20300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8616608000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba98d9620800000000488b44243048bbe08862080000000049b8e08862080000000049b9c8d9620800000000ff15f40200004889c2488b442420ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8db6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080100000049c706010000004156488b54243848c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c706030000004c8b7424184c897424204883c420ff22488d64243848b8f807620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dad00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4300000075094d8b7610e925faffff488d64243048b87850620800000000488b5d08ff23f40000ffffffffffffff01|@7809,1,@18513,@15134,@15134,@10973,@10723,@10815,@10723,@10815,@15134,@15134,@10934|22,0,@1525 174,0,@788 215,0,@621 255,0,@7804 393,0,@7804 503,0,@1014 523,0,@1015 619,0,@866 663,0,@7805 757,0,@1014 777,0,@1015 873,0,@866 917,0,@7807 995,0,@1582 1010,0,@1015 1020,0,@1015 1030,0,@1584 1129,0,@1596 1217,0,@1596 1305,0,@1596 1581,0,@117 1690,0,@828 1735,0,@621 13702:D3,24|483b65187305ff5558cd0148b85062660800000000c3f400|@7813,1,@18514|13,0,@7811 13703:D5,328|483b65187305ff5558cd0953a8010f85200100004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc0576608000000004c8968084c893048c7c303000000ff15150100004989c64156488b0424ff15fe0000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084c89e34d8966104d896e0849c706050000004156488b442408e8fbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@742,1,@18515,@11066,@10822|55,0,@7737 13704:D3,216|483b65187305ff5558cd09483bc3750848c7c001000000c349bea8946208000000004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c6010000004e8d24f5f9ffffff4983cc054d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849c7060d00000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18516|26,0,@1098 146,0,@105 13705:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@18518,@11046|170,0,@105 287,0,@7791 13706:D5,200|483b65187306ff5558ca0907415041514152f6c3010f858b0000004c8b33ff73086a016a014889c34c89f04c8b4424184989e14c8b542420ff15aa000000ff3424488b4424106a016a01488b5c24284989e04c8b4c24384c8b542430e89fffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff155f0000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d642410415e49c706010000004989460848c7c001000000c3f400000000000000|@8518,1,@19069,@14255,@13707| 13707:D8,504|483b65187306ff5558ca09074989dd41514c8b204d89e64983fc037515415e49c706010000004d896e0848c7c001000000c34983fe017518488b58084c89e8415d4d89d14d89c24d89e8ff25e00100004c8b600849c7c3010000004d8d77f04c3b75107306ff5550ca003d4d89f749c746f80100000041c646ff404d891e41564d8d5fd84c3b5d107306ff5550ca00354d89df49c743f80400000049beb09f6208000000004d8973184d89431049be60c66208000000004d8973084c8b34244d89334d8d77e84c3b75107306ff5550ca003d4d89f749c746f80200000049c74608010000004d891e498d5fe8483b5d107306ff5550ca00754989df48c743f80200000048c74308010000004c89236a016a0148ba686366080000000041566a01ff350201000054488304241841524d89c14d89e848b8d80862080000000049ba60c6620800000000ff15d2000000ff3424ff7424104c8b742420498b06ff15b50000004989c648c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c6eb09ff15440000004989c64c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c428c3f4000000000000|@8605,1,@19071,@14257,@13789,@13708,@8606,@14256|157,0,@1172 175,0,@1469 276,0,@7815 310,0,@123 320,0,@1469 13708:D12,1488|483b65187306ff5558ca0d07525041514152f6c3010f854c0400004c8b33ff73084d8b264d89e54983fc010f85da0100004d8b6e0849c7c6010000004d8d67f04c3b65107306ff5550ca00614d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca00314d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00414989c748c740f80200000048c74008010000004c893049c7c6010000004d8d6ff04c3b6d107306ff5550ca01414d89ef49c745f80100000041c645ff404d8975004c8b5424304c8b7424504d8d5fb84c3b5d107306ff5550ca01654d89df49c743f8080000004d896b3849c74330030000004d8973284d8943204c8b6c24184d89ee4d896b184c8b6424104d89e54d8963104c8b4c24084d89cc4d894b084d89134d89d84c8b5c24404c8b5424304d8d4fb84c3b4d107306ff5550ca017d4d89cf49c741f8080000004d8951384d8959304d89e44d8961284d89ed4d8969204c8b2c244d896918488d6424184d89f64d897110488d6424084c8b34244d897108488d64240849bea0fcb209000000004d89316a016a0148bad06366080000000048c7c3010000004989e2ff1564040000488b1c24ff7424084883fb0175074c8b742438eb0e488b442438ff153c0400004989c64c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c410c228004983fd030f85ef0000004d8b6e08498b5e104c8b7424404c8b5c24304d8d67d04c3b65107306ff5550ca08694d89e749c74424f8050000004d895c24204d897424184c8b34244d89742410488d6424084c8b5c24184d89de4d895c240849bba051b609000000004d891c244c8b5424284d8d5fd04c3b5d107306ff5550ca08754d89df49c743f8050000004d8953204d8963184d896b104d89f64c89f24d89730849be4052b609000000004d89334889d2488b442410488b7c24085e488d6424184c8b6c24284c8b6424204c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e9fcfcffff498b5e104d8b761841ff366a016a014c8b7424384d8b56084c8b7424484156ff742430ff74243041504c89c04c8d4424204c8b4c2450ff15d8020000ff3424488b5c24106a016a014c8b4c246054488b4424304c8b4424404c8b542448ff15a9020000ff34244c8b44241049c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca00014d89ef49c745f80400000049beb09f6208000000004d8975184c8b7424504d89f14d8975104c8b7424484d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00274d89f749c746f80200000049c74608010000004d892e6a016a01488b5424704c8bac24900000004c8ba4248000000041566a0141555448830424184154488b842490000000488b5c2478e8bdfbffffff3424ff7424104c8b742420498b06ff15b00100004989c648c7c001000000e984000000ff742430488b5424404c8b7424484c8b6c2450498d47c8483b45107306ff5550ca04614989c748c740f8060000004c8968284c8b6c24084c8968204c8b6c24104c8968184c8940104c8b6c24184c8968084c8930ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64242048c7c0010000004883c408c2280041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054889c3eb09ff15b60000004889c34883fb017507488b5c2428eb0e488b442428ff15930000004889c34883fb017507488b5c2440eb0e488b442440ff15700000004889c34883fb01750a4c8bb424a8000000eb11488b8424a8000000ff15470000004989c64c8bac24980000004d8975004c8b34244d897508488d64240848c7c0010000004881c480000000c22800f400|@8515,1,@18973,@14161,@14162,@14163,@14164,@13789,@14165,@14171,@14160,@13710|411,0,@13709 428,0,@7818 618,0,@14158 686,0,@14159 952,0,@1172 13709:D3,120|483b65187305ff5558cd054989d34c8b284c8b70084d8b46204d8b76286a016a01498b5308498b4310498b5b184d8b4b204d8b53284d8b63304d8b5b384156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@7817,1,@18522| 13710:D53,5488|488dbc2498feffff483b7d187306ff5560ca0d075253415041514152a8010f856f0800004c8b28ff700841ff75004c8b34244d8b264c8d1d080000004f8d5ca3fc41ffe3e9f3000000909090e9c9010000909090e9c8010000909090e9c7010000909090e9c6010000909090e9c5010000909090e9c4010000909090e9c3010000909090e9c2010000909090e9c4010000909090e901030000909090e900030000909090e902030000909090e9ce030000909090e9cd030000909090e9cc030000909090e9cb030000909090e9ca030000909090e9c9030000909090e9cb030000909090e95e040000909090e913060000909090e912060000909090e911060000909090e910060000909090e90f060000909090e911060000909090e917070000909090e916070000909090e935070000909090e9340700009090904d89f64d8b7608488d6424084d8b6e2841ff750041ff3641ff761041ff761841ff76204c8b7424404d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75204d89f641ff7628488b442438ff15761500004989c641564c8b7424384983fe037507488b5c2450eb0d488b0424ff154d1500004889c3488b442440ff15371500006a016a014889e3ff1522150000ff34244c8b6c24104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849c706010000006a016a01ff74246841554156e9110b0000488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e94a0100004d89f641ff76084c8b7424284d8b164d89f64d8b46084d89f6498b5e104d89f64d8b4e28488b0424ff156d1400004989c64156488b442408ff15551400004c8b7424304d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408ff1517140000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15ef1300004889c34883fb017507488b5c2450eb0e488b442450ff15cc1300004889c34c8b4424484d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542450488b4424284c8b4c24384883c430415a4883c420e966fcffff488d642408eb05488d642408e9d90000004c89f3488b43086a016a014c8b742440498b56084c8b4424304989e1ff12488b1c24ff7424084883fb017507488b5c2440eb0e488b442440ff15df1200004889c34c8b4424384d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542440488b4424184c8b4c24284883c420415a4883c420e981fbffff488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e95d0200004d89f64d8b7608488d6424084d8b6e204d8b6d00498b1e498b46084d8d77c84c3b75107306ff5550ca09204d89f749c746f8060000004c8b6424104d8966284c8b24244d896620488d6424084c8b6424204d8966184d896e104c8b6c24104d896e0849bd6814b309000000004d892e41564883fb017502eb06ff1595110000488b542428488b5c24204c8b4424184159415a4883c420e9b9faffff4d89f64d8b7608488d6424084d8b6e10498b45004d8b6e1841ff75004d8b762041ff364c8b6c24284d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408ff15fa100000ff3424488b5c24106a016a0154488b4424484c8b4424384c8b4c24404c8b542430ff15cb100000ff3424488b5c24106a016a0154488b4424684c8b4424504c8b4c24584c8b542448ff159c100000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15741000004889c34883fb017507488b5c2430eb0e488b442430ff15511000004889c34883fb01750a488b9c2490000000eb11488b842490000000ff15281000004889c34c8b8424880000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b942490000000488b4424684c8b4c24784883c470415a4883c420e9fcf8ffff488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e9130100004d89f6498b4608488d6424084c8b6c24184d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff7620ff15250f00006a016a0154488b5c24184c8b4424284c8b4c24304c8b542420ff15fe0e0000488b1c24ff7424084883fb017507488b5c2458eb0e488b442458ff15d60e00004889c34c8b4424504d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542458488b4424304c8b4c24404883c438415a4883c420e9c8f7ffff488d642408eb2c4d89f44d89e641ff7424084d89f641ff762041ff75084c8b74243841ff36ff742418e98e000000488d642408eb05488d642408488b54242858488b5c24184c8b4424104c8b4c2408415a488d642420e96df7ffffff3424488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c8970084c8b7424204c8930ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64242848c7c0010000004883c408c3f604240175204c8b34244d8b2e4d89f641ff76084d8b75184d8b3641ff75104156e986030000488d6424104c8b6c24384d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f6498b46206a016a01488b5c24304c8b4424204989e1ff15130d0000ff3424ff74241048ba0866660800000000488b442438488b5c24404c8b4424284c8b4c24304c8b542420ff15db0c00004889c34883fb0175074c8b742408eb0e488b442408ff15b80c00004989c641564c8b7424784d89f541ff364d89ed4d89ee41ff75084d89f64d89f441ff76104d89e44d8b6c24184d89e44d89e641ff7424284d89f64d8b66304d89f64d8b5e384d8d77b84c3b75107306ff5550ca00384d89f749c746f8080000004d895e384d8966304c8b24244d8966284c8b6424284d8966204d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e41566a016a01488b8424880000004889e3ff15020c0000ff3424488b4424104c8bb424c8000000498b5610488b9c24980000004c8b442418ff124989c641564c8b6c24084d89ee4983fd01750949c7c601000000eb6841566a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15960b00004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a014c8bb424e8000000498b5608488b9c24b80000004c8b4424384989e1ff12415e488d6424104156ffb424a00000006a01f64424080175494c8b6c24084d8b75004d89ed41ff75084d8b7618498b064c8b7424084c89f34983fe0175054989c4eb09ff15090b00004989c4415d4c8924244c896c2408483b65187303ff5558ebb0586a016a01ff742448544883042408488b9c24800000004c8b4424684c8b4c24704c8b542460ff15bc0a0000488b1c24ff7424084883fb017507488b5c2420eb0e488b442420ff15940a00004889c34883fb017507488b5c2428eb0e488b442428ff15710a00004889c34883fb017507488b5c2470eb0e488b442470ff154e0a00004889c34883fb01750a488b9c24f0000000eb11488b8424f0000000ff15250a00004889c34c8b8424e80000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b9424f0000000488b8424c80000004c8b8c24d80000004881c4d0000000415a4883c420e960f3fffff6042401756c4c8b2c244d8b75004d89ed41ff7508498b4618498d5fd8483b5d107305ff5550cd014989df48c743f8040000004c8b7424104c8973184c8b7424484c8973104c8b7424284c89730849be502bb309000000004c8933ff1517090000415d4c892c24483b65187303ff5558eb8e488d642410415d4c892c24483b65187303ff5558e9c9fbfffff6442410010f85a1000000f6442408010f85960000004c8b742410498b064d89f641ff76084c8b742410498b1e4d89f641ff76086a016a01ffb42480000000ffb424d80000004c8b4424304c8d4c24104c8b942488000000ff1587080000415e415d4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004d896b084d89334c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e954ffffff4c8b34244d8b2e4c896c24184d89f64d8b7608488d6424084c89742418ff742410ff7424204c8b7424704d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1deb07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9610600004d8b364d8b2e4c3b2d8707000075064d8b5610eb18488da424d000000048b87850620800000000488b5d08ff2348baf866660800000000488b442430488b5c24604c8b4424684c8b4c2450ff153b0700004989c641566a016a0154488b442468488b5c24204c8b8424880000004c8b8c24900000004c8b942480000000ff1501070000ff3424ff742410488b8424a0000000ff15e40600006a016a0154488b5c24184c8b8424a80000004c8b8c24b00000004c8b9424a0000000ff15b4060000488b1c24ff7424084883fb0175074c8b742420eb0e488b442420ff158c0600004989c64156488b842490000000ff15710600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8bb424b00000004d8975104c8bb424b80000004d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424a00000004d8966084d892e41564c8bb424d80000004983fe0375154c8bb424a00000004c8bac24f0000000e97a0300004c8b8c24100100004d8b314d89c94d8b69084d89c94d8b61104d89c94d8b59184d89c94d8b51304d89c94d8b49384d8d47b84c3b45107306ff5550ca007e4d89c749c740f8080000004d8948384d8950304c8b14244d8950284c8b5424184d8950204d8958184d8960104d8968084d89306a016a01488b942430010000488b8424f800000048c7c30100000049b9e0756608000000004989e2e81fefffffff34244c8b5424104c8bb424f00000004983fe03750d4c8bb424b8000000e9e10100004c8b8424280100004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca807e4d89c749c740f808000000498978384d8948304c8b4c24184d8948284d8950204d8958184d8960104d8968084d89306a016a01488b942448010000488b84242001000048c7c3010000004c8b8c24300100004989e2e864eeffffff3424ff7424104c8b742440498b06ff15170400004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424104c89f34983fe017507488b5c2428eb0e488b442428ff159f0300004889c34883fb0175035beb12488b0424ff15810300004889c3488d6424084883fb017507488b5c2448eb0e488b442448ff15590300004889c34883fb01750a488b9c2488000000eb11488b842488000000ff15300300004889c34883fb01750a488b9c2498000000eb11488b842498000000ff15070300004889c34883fb01750a4c8bb42450010000eb11488b842450010000ff15de0200004989c64c8bac24380100004d8975004c8b34244d897508488d64240848c7c0010000004881c458010000c341f6c6010f85c90000004d8b264d8b6e084d8b24244d8b6424184d8b5c24084d89d94d8b034983f803752e4d8b5b184983fb03750949c7c303000000eb0749c7c3010000004983fb03750e4d8b610849c7042401000000eb444d89cb4d8b014983f80175564d8b49104d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375294d89dc4d8b6424104d8b64240849c70424010000004d89ee483b65187306ff5558ca0044e94fffffff488da42440010000eb08488da4244001000048b8e8b2630800000000488b5d08ff23e947fdffff4983fe0175234983fd017505e975fcffff488da4242801000048b868bd630800000000488b5d08ff234d8b0e4d8b660841f6c5010f85be0000004d8b55004d8b5d084d8b094d8b49184d8b41084c89c7498b304883fe0375294d8b40184983f803750949c7c003000000eb0749c7c0010000004983f80375094c8b4f084d8911eb3d4989f8488b374883fe017552488b7f10488b3f4883ff03750948c7c703000000eb0748c7c7010000004883ff0375254d89c14d8b49104d8b49084d89114d89dd4d89e6483b65187306ff5558ca0060e92affffff488da42428010000eb08488da4242801000048b8e8b2630800000000488b5d08ff23488da4242801000048b868bd630800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dab00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da424d000000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3e00000075094d8b5610e944f9ffff488da424d000000048b87850620800000000488b5d08ff23f40000|@7926,1,@18594,@15138,@15138,@13783,@13784,@13785,@13786,@13787,@13788,@13789,@13790,@13791,@13792,@13798,@13792,@13725,@15138,@15138,@13799,@13803,@13808,@13809,@13810,@13811,@13713,@13812,@13813,@13817,@13818,@13722,@13819,@13820,@13792,@13821,@13822,@13823,@13824,@13825,@13792,@13713,@13831,@13832,@13833,@13834,@13713,@13835,@13836,@13868,@13869,@13900,@13782|1296,0,@13711 2406,0,@7831 3312,0,@13724 3679,0,@788 3723,0,@621 3739,0,@7837 4305,0,@7924 5034,0,@3281 5080,0,@3335 5287,0,@3281 5311,0,@3335 5423,0,@828 5471,0,@621 13711:D4,64|483b65187305ff5558cd054989c6498b06498b5e084c8b42084c8b4a104c8b52184c8b6a204c8b62284154ff7424084c896c2410ff251e000000f40000000000|@7820,1,@18523,@13712| 13712:D5,288|483b65187306ff5558ca09074d89c6505341524d8b2e4d8b46084d8b5610498b5e204d8b76286a016a0141565448830424084c89c84d89e9ff1502010000488b1c24ff7424084883fb017507488b5c2428eb0e488b442428ff15da0000004889c34c8b4424204d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d89306a016a01488b542420488b4424484c8b4c24404989e2ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c428c21000f400000000|@7821,1,@18524,@13714,@13713| 13713:D9,624|483b65187306ff5558ca09074150415141524c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d7d02000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e9400100004d8b364d8b2e4c3b2d1902000075114d8b76104983fe037436488d642418eb15488d64241848b87850620800000000488b5d08ff234c8b74240849c7060100000049895e0848c7c001000000c210004d8d77e84c3b75107305ff5550cd094d89f749c746f80200000049895e0849c706010000006a016a01504156f64424080175744c8b742408498b064d89f641ff76086a016a014c8b542460ff742440ff742440488b5c24284c8d4424104c8b4c2458ff1567010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb854c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408488b5c24104c8b4424284c8b4c24184c8b5424384c8b7424304c897424404883c440ff25d600000041f6c60175454d8b264d8b6e084d8b1c244c3b1db600000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4c00000075194d8b76104983fe037505e984feffff488d642418e960feffff488d64241848b87850620800000000488b5d08ff23f4000000|@7824,1,@18528,@15136,@15136,@13718,@13715,@15136,@15136|117,0,@788 169,0,@621 545,0,@828 606,0,@621 13714:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18525| 13715:D7,1008|483b65187306ff5558ca09075041504151ff334c8b730841ff3641ff760841ff76104c8b742448ff35f30300004d89d04d89f2488b442438488b5c242849c7c101000000ff15ce0300004989c64156488b542418488b442428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15eb0200004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdb81db309000000004d892e48c70424010000004c89742408e9b2000000488b54245848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bcf81db309000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408488b1c24ff7424084c8b7424504d8b6e0841f6c50175774d8b5d004d8b55084d89f54d8b75004d89ed4d8b65184d89ed4d8b4d204d8d6fd04c3b6d107306ff5550ca085e4d89ef49c745f8050000004d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d000000e98c0000004983fd0175444d89f64d8b2e4d89f64d8b66184d89f64d8b5e204d8d77d84c3b75107306ff5550ca08384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000eb424d89f64d8b2e4d89f64d8b66184d89f64d8b5e204d8d77d84c3b75107306ff5550ca08384d89f749c746f8040000004d895e184d8966104d896e0849c7060f00000041564883fb0175074c8b642440eb0e488b442440ff15a20000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424284d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104c8b6c24284d896e084c8b2c244d892e488d6424084c8b6c24404d8965004d89750848c7c0010000004883c450c21000f4000000000000|@7830,1,@18532,@13721,@12170,@13566,@1613|355,0,@13716 443,0,@13717 13716:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18526| 13717:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18527|36,0,@105 13718:D5,1008|483b65187306ff5558ca09074c89ca5053415041524c8b6c24104d89ee41ff75004d89f641ff761048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef8d76408000000004d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424104d89650849c745000d00000041554c8b6424304d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64244848b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc38656608000000004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004156488b542420488b442430ff124989c641564c8b6c24384d8b75004d89f44d89ed498b55084d89e54d2bf57115488d64245048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424184c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc68656608000000004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849bdb01e6508000000004d896e0849c706250000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175075b4883c418eb12488b0424ff15660000004889c3488d6424204883fb0175074c8b742418eb0e488b442418ff153e0000004989c6415d4d8975004c8b7424084d89750848c7c0010000004883c418c3f400000000000000|@7829,1,@18529,@13720,@13719|81,0,@5288 253,0,@105 397,0,@7825 458,0,@5750 569,0,@105 714,0,@7827 776,0,@5750 13719:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18531| 13720:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18530| 13721:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18533| 13722:D10,1520|483b65187306ff5558ca0d074989d64c89d241565341504d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d0506000075204d8d77f04c3b75107306ff5550ca05104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0540ebb549c7c6010000004983fe01750f49be2068620800000000e9d10400004d8b364d8b2e4c3b2da105000075064d8b7610eb15488d64241848b87850620800000000488b5d08ff234983fe03740d488d64241848c7c001000000c34c8b304983fe01754e49c7c5010000004d8d77f04c3b75107306ff5550ca05204d89f749c746f80100000041c646ff404d892e4d8d6ff04c3b6d107306ff5550ca05404d89ef49c745f8010000004d8975004c8928eb034d8b36415648c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424204d8b76084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b6424184d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64243048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049c745080100000049c74500270000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610130000004d896e0849c7062b00000041564c8b6c24204d8b75004d89f44d89ed498b55084d89e54d2bf57115488d64243848b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24304d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424204d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e90100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15b00100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc0aa6208000000004d8965184d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c428c3584883c428ff25c500000041f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca05104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0540ebb549c7c6010000004983fe017515488d64241848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3b00000075094d8b7610e9d4faffff488d64241848b87850620800000000488b5d08ff23f40000|@7833,1,@18534,@15136,@15136,@13723,@13572,@12170,@15136,@15136|117,0,@788 158,0,@621 441,0,@105 684,0,@105 1227,0,@1263 1458,0,@828 1503,0,@621 13723:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18535| 13724:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@7836,1,@18536,@10982| 13725:D9,328|483b65187306ff5558ca0d07525053415041514152488b442420488b5c2418ff15630100004989c641564c8b6c24304d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b442438488b5c24104c8b4424284c8b4c2420ff15210100004883f8017515488d64243848b83067660800000000488b5d08ff23ff15f80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442430488b5c24084c8b4424284c8b4c2420ff15ab0000004989c641564c8b7424404d8b46084d89f64d8b76104156488b442440488b5c24204c8b4c24304c8b542428ff15720000004889c34883fb017504415eeb12488b0424ff15530000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c3f40000|@7841,1,@18537,@13727,@13728,@13754,@13755,@13756,@13726|108,0,@7838 13726:D3,256|483b65187305ff5558cd0953a80175454c8b30ff70084d8b76184d8b36488b5424084d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb624983fd0175064d8b7608eb564d8b6e0849c7c601000000eb0d488d64240848c7c001000000c341f6c50175364d8b5d084d89f44983c4027115488d64241048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0460ebc44983fe01750948c7c003000000eb0748c7c005000000ff124989c64156488b442408488b5c2410e836ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3f4000000000000|@742,1,@18592|124,0,@105 13727:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18538| 13728:D4,192|483b65187306ff5558ca090753415041514152a8010f858e0000004c8b30ff7008498b06498b5e084d8b46104d8b4e184c8b742430ff742418ff742418ff74241841564c8b542440ff158a0000004989c641564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e888ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f400000000000000|@742,1,@18539,@13729| 13729:D8,688|483b65187306ff5558ca09074d8b3141ff76184d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb534983fd0175064d8b7608eb474d8b6e0849c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64240848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0066ebc441564983fa037528488d642408488b5c24204c8b4424184c8b7424284c89c84d89f1ff15400200004989c6e9e70000004c8b34244983fe01750f488d6424084c8b742410e9ce00000048c7c001000000ff150a0200004989c641564c8b7424084c89f34983fe017d15488d64241848b83060620800000000488b5d08ff2348c7c001000000ff15cd0100004989c44c8b7424204d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8965204c8b24244d896518488d64241049c745100100000049bcf8676608000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8b742408498b06488b5c2428ff15240100004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff15f80000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcb8006608000000004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849bdb01e6508000000004d896e0849c70625000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700050000004883c408c22000f400|@7889,1,@18543,@11046,@13734,@13735,@11908,@13730|94,0,@105 240,0,@731 353,0,@7842 560,0,@7165 622,0,@5750 13730:D30,5336|483b65187306ff5558ca0903415041514c8b3041ff36ff70084c8b2bff730849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24084d895c24104c8b14244d89d34d8954240849bac048b309000000004d8914244983c50241557115488d64243848b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89db4d895d104d8965084c8b24244d89650041554d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb534983fd0175064d8b7608eb474d8b6e0849c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64244048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b34244c89f34983fe017d15488d64244848b83060620800000000488b5d08ff2348c7c001000000ff15471400004989c641566a016a014c8b7424184983fe0175184c8b7424204c8934244c8b7424584c89742408e9ec01000049c7c6010000004d8d5ff04c3b5d107306ff5550ca00404d89df49c743f80100000041c643ff404d89334d8d67d84c3b65107306ff5550ca00084d89e749c74424f8040000004c8b7424384d897424184c8b7424304d897424104d895c240849be104ab309000000004d8934244c8b6c24284983c5027115488d64246048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a01488b442428488b5c24104c8b4424384989e1ff1542130000415e488d64240849c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd484cb309000000004d892c244d8d5fe84c3b5d107306ff5550ca00504d89df49c743f8020000004d89730849c7030300000049c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104c8b6424284d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424604d8966084d892e4c8b2c244c896c2408488d6424084c89742408ff3424ff74241049be886866080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d868660800000000ff15c01100004989c6eb0a49bed868660800000000415649bef86866080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b82869660800000000ff154f1100004989c6eb0a49be2869660800000000415649bef86866080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b86069660800000000ff15de1000004989c6eb0a49be6069660800000000415649be806966080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d069660800000000ff156d1000004989c5eb0a49bdd0696608000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf04b6608000000004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15b50f00004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e10e00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd989f6208000000004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff158b0d00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15b70c00004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff155d0b00004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc989f6208000000004d8966184d896e1049bdf0696608000000004d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be306d6608000000004d89750849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc989f6208000000004d8966184d896e1049bd986d6608000000004d896e0849c7060b000000415648c7c001000000ff15880a00004989c6415648c7c001000000ff156e0a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300500000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bec06d6608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000ff34244156488b442460488b5c24684c8b4424184c8b4c24304c8b542470ff15b20900004989c641564c8b7424304983fe010f85050100004c8b6c24604d8b75004e8d2475010000004983fc01750f49be6849660800000000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15c00800000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb684966080000000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b76104d8b3648c7c001000000e9ab060000488d64247848b8f807620800000000488b5d08ff23f64424080175204c8b7424084d8b364d8b36498b06ff15760800004989c549c7c601000000eb15488d64247848b8e06d660800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b6c24684d8b75004e8d2475010000004983fc01750f49be6849660800000000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15310700000f87910000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb684966080000000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424204d8b76104d8b3648c7c001000000eb18488da4248000000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15b20600004c8b34244d89f54c3b359c0600007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15360600004989c6415648c7c001000000ff151c0600004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b6c24084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004c8b34244d89f54983fe01750a488d6424384d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c43041564c8b7424384d8b2e4e8d2c6d010000004983fd01750f49bc606e660800000000e9b60000004d89eb4983c30a4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b157b0400000f87710100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb606e66080000000048c7c10b000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c240d48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b159c0300000f87850000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424284d8b3648c7c001000000eb2a488d64245048b8f807620800000000488b5d08ff23488d64245048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15070300004c8b34244d89f54c3b35f10200007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff158b0200004989c641564c8b7424184c89f34983fe017d15488d64246048b83060620800000000488b5d08ff2348c7c001000000ff154e0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15630100004c8b34244d89f54c3b354d0100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15e70000004989c6415648c7c001000000ff15cd0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c470c3f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@7890,1,@18546,@13737,@11908,@123,@13601,@13738,@11908,@123,@13601,@13739,@11908,@123,@13601,@13740,@13741,@13748,@11908,@12170,@12170,@12170,@12170,@12170,@12170,@12170,@12170,@12170,@13749,@13736|130,0,@13731 157,0,@105 294,0,@105 350,0,@731 518,0,@13732 548,0,@105 715,0,@13733 922,0,@7844 994,0,@7847 1015,0,@7847 1027,0,@7848 1099,0,@7850 1120,0,@7850 1132,0,@7848 1204,0,@7852 1225,0,@7852 1237,0,@7853 1309,0,@7856 1330,0,@7856 1367,0,@7660 1780,0,@1171 2317,0,@1263 2362,0,@1262 2406,0,@1854 2451,0,@1263 2613,0,@1171 2631,0,@7857 2683,0,@7880 2732,0,@1171 2750,0,@7883 2883,0,@7884 3027,0,@7642 3164,0,@7642 3249,0,@117 3309,0,@7885 3418,0,@7642 3555,0,@7642 3640,0,@117 3780,0,@123 3822,0,@7652 4104,0,@7888 4244,0,@7888 4319,0,@1396 4526,0,@117 4547,0,@117 4687,0,@123 4729,0,@7652 4775,0,@731 5075,0,@123 5117,0,@7652 13731:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18540,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13732:D5,512|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc010f8e370100004983ec027115488d64240848b8d006620800000000488b5d08ff234983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53184983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e10ff154f010000e98a0000004983fd0375434983fe017d15488d64240848b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000eb414983fe017d15488d64240848b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700050000004c8b3424498b5e08488d642408ff25a5000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000000000|@7253,1,@18541,@13169,@13169|36,0,@7248 73,0,@105 100,0,@7248 141,0,@105 233,0,@7251 300,0,@7251 390,0,@7251 451,0,@7251 13733:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@7843,1,@18542|42,0,@105 13734:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18544,@11046|170,0,@105 287,0,@7233 13735:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18545|32,0,@105 87,0,@1823 13736:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c349bea8946208000000004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e867ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@741,1,@18564|26,0,@1098 134,0,@105 13737:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18547|33,0,@105 88,0,@1823 13738:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18548|32,0,@105 87,0,@1823 13739:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18549|33,0,@105 88,0,@1823 13740:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@18550| 13741:D21,3104|483b65187306ff5558ca090753415041514152a801756c4c8b284d89ee4d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd03753bff70084d8b6e0841ff750041ff36498b461041ff761841ff7620488b5c2438ff155a0c00004989c641564c8b6c240849c7c601000000e94e010000488d642418eb05488d6424184c8b2c244d8b75004e8d2475010000004983fc017514488d64240849bef86e660800000000e9b50000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15360b00000f87cd0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbf86e66080000000048c7c121000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508488d642408498d7e1848d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd186f6608000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff23488d64240848b8f807620800000000488b5d08ff2341f6c501757a4d8b5d004d8b65084d8b134983fa0175524d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060eb8041564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424204d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0016308000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15730900004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff153a0900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b10700004989c6eb0041564c8b7424284983fe037507415ee91c050000488b442440ff15850700004989c641564c8b6424204d8b34244983fe050f855b0100004d89e44d8b7424104d89f54d8b364983fe0b750949c7c603000000eb0749c7c6010000004983fe030f85260100004d89e441ff7424084d89ee498b4608ff1522070000488b5c2408ff150f0700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea05eb309000000004c89336a016a01488b4424104989e0ff15c6060000ff34244c8b6c24304d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15950600004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d89ed4d896e0849c70617000000415648b8886f660800000000ff153d0600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415649bec04b660800000000eb1c488d642460eb05488d64246048b8a06f660800000000488b5d08ff2341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b82070660800000000ff157f0500004989c6eb0a49be20706608000000004156488b5424704c8b8424a0000000488b442410488b9c2480000000ff124989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049bed84d6608000000004d8975084c8b7424104d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15bc0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff154a0400004989c54c8ba424980000004d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618030000004d8966104d896e0849c7060f0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c8930ff15860300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706290000004883c42841f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15290200004989c6eb004156f644243001740b415e4883c450e9250100004c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15e20100004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8886f660800000000ff158a0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424704c8b6c246841564155488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8def4ffff4989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e104c8b2c244d896e08488d64241049c7060b0000004883c450415649be407066080000000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b89070660800000000ff15790000004989c6eb0a49be9070660800000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701049beb0706608000000004c89700848c7000b000000c21000f40000000000ffffffffffffff01|@7904,1,@18552,@12170,@13572,@11046,@12170,@13744,@13572,@13572,@12170,@13572,@11046,@10900,@10958,@13745,@13746,@12170,@13747,@12170,@13743|165,0,@7891 302,0,@7891 388,0,@7892 406,0,@832 420,0,@15140 444,0,@117 708,0,@1854 1053,0,@1263 1098,0,@1263 1142,0,@1263 1445,0,@13742 1581,0,@7894 1661,0,@7658 1685,0,@7895 1763,0,@7898 1784,0,@7898 1853,0,@7675 2333,0,@1263 2377,0,@1263 2422,0,@1262 2466,0,@1263 2728,0,@7894 2921,0,@7899 2993,0,@7902 3014,0,@7902 3068,0,@7903 13742:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@7893,1,@18551| 13743:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18557,@11046|170,0,@105 287,0,@7233 13744:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c0aa620800000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@1573,1,@18553,@12170|165,0,@1263 13745:D3,160|483b65187305ff5558cd01a8010f85800000004c8b30488b40084d8b2e4983fd0d75604d8b6e084d8b66104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d0c3620800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@18554|133,0,@1456 13746:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18555| 13747:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c0aa620800000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@1573,1,@18556,@12170|165,0,@1263 13748:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18558|33,0,@105 88,0,@1823 13749:D7,240|483b65187306ff5558ca090350534150415148c7c3010000004c8b74241841f6c60175364d8b66084989dd4983c5027115488d64242048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff159e0000004989c64156488b0424488b5c2410ff15820000004889c348bac0c0650800000000488b442420ff15620000004989c64156488b442408488b5c24204c8b442418ff15400000004989c64c8b6c24104c8b24244d896500488d6424304d89750848c7c001000000c3f4000000000000|@7905,1,@18559,@13751,@13140,@13752,@13750|56,0,@105 103,0,@731 155,0,@6845 13750:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@18563|53,0,@105 13751:D3,256|483b65187306ff5558ca0901534150a8010f85d80000004c8b30ff70084c8b6424104d8b2c244d89e4498b5424084c8b6424084d8b24244d2bec7115488d64241848b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408488b5c24184c8b442410e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@742,1,@18560|67,0,@105 13752:D3,136|483b65187305ff5558cd09a801756d4c8b28488b40084d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049895e104d896e0849bdc868b309000000004d892e4156e8b3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@742,1,@18562|59,0,@13753 13753:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7906,1,@18561|36,0,@105 13754:D3,624|483b65187306ff5558ca090341504151a8010f8546020000f6c3010f85360200004c8b30ff7008ff33ff730841ff760841ff76104d8b76184d8b364d8b76184d8b364d8b2e4983fd050f85f301000041ff760841ff7610488b54244048c7c003000000ff124989c54c8b7424284d89f44983fe017d15488d64244848b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d89660849c706050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424110000004d8d5fe84c3b5d107306ff5550ca00304d89df49c743f80200000049c74308010000004c8b7424184d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084c8b5c24104d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be00726608000000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b7424084d892e4c8b7424384d89f14c8b1c244d8933488d6424204d8d77d84c3b75107306ff5550ca00324d89f749c746f8040000004d8966184d896e1049c746080100000049c706030000004156488b442418488b5c24084c8b442428e8edfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64243848b8100f660800000000488b5d08ff23488d642410eb05488d64241048c7c001000000c3f400000000|@3397,1,@18565|125,0,@6950 336,0,@7907 585,0,@7230 13755:D3,168|483b65187305ff5558cd01a8010f858b0000004c8b30488b40084d8b2e4d8b76084d8b264983fc1975644d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b82872660800000000488b5d08ff2348c7c001000000c3f400|@742,1,@18566|144,0,@7908 13756:D5,144|483b65187306ff5558ca090741504151415248bac0c0650800000000ff158e0000004989c64156ff34246a01f64424080175544c8b742408498b064d89f641ff76084c8b7424484c8b6c2440ff74242041564155488b5c24204c8b4424484c8b4c24404c8b542430ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558eba5584883c428c21000f4|@7920,1,@18572,@13757,@13140|20,0,@6845 13757:D32,6352|488dbc2428ffffff483b7d187306ff5560ca0907534150415141524c8b304d8b6e1841ff750041ff75084d8b36ff70084983fe0375414c8b7424104d8b76184d8b76084d8b264d89e54983fc0375094d8b7610e9640100004983fd0175094d8b7608e9550100004d8b6e0849c7c601000000e90901000048c7c001000000ff15441900004989c6415648c7c001000000ff152a1900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc8726608000000004d896e0849bdc0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24284c8968084c89304883c430c2180041f6c50175364d8b5d084d89f44983c4027115488d64243848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424184d8b76184d8b76084d8b264d89e54983fc037506498b5e10eb534983fd017506498b5e08eb474d8b760848c7c30100000041f6c60175364d8b66084989dd4983c5027115488d64244048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15601700004989c641564c8b6c24384d8b75004d89ed41ff750849c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104c8b1c244d89dc4d895d0849bb9887b309000000004d895d004983c60241567115488d64246048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e084c8b2c244d89e84d892e41564c8b7424204983fe01750a4c8b742450e9940100004c8b7424284c89f34983fe017d15488d64246848b83060620800000000488b5d08ff2348c7c001000000ff15451600004889c348bac0c0650800000000488b442420ff15251600004989c641564c8b7424304c89f34983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c0010000004c8b4424104c8b4c24204c8b542418ff15d915000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849bee888b309000000004d8934244d8d5fe84c3b5d107306ff5550ca00104d89df49c743f8020000004c8b34244d897308488d64240849c7030300000049c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104c8b24244d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424504d8966084d892e41564d8d5fe04c3b5d107303ff55504d89df49c743f8030000004c8b7424604d8973104c8b7424504d89730849be5089b309000000004d89334c8bb424880000004c8bac24800000004c8b642478415641554154ff7424204153ff742428488b442470488b5c24404c8b4424504c8b4c24484c8b542458ff154c1400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda0aa6208000000004d896e1049bd509f6208000000004d896e0849c7060b0000004156f6442430010f84e00100004c8b7424504d8b364d8b2e4a8d0c6d010000004883f901750f49bc1074660800000000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dd21200000f876d0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2874660800000000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15061200000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013249d1ed43c6442e0229418066ffbf41564c8b7424284d8b3648c7c001000000e9820f0000488d64247848b8f807620800000000488b5d08ff23488d64247848b8f807620800000000488b5d08ff2349c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64247848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424704d8b0e4d89f641ff760849c7c5010000004d8d77f04c3b75107306ff5550ca00224d89f749c746f80100000041c646ff404d892e41564983c1027118488da4249000000048b8d006620800000000488b5d08ff2349c7c5010000004d8d77f04c3b75107306ff5550ca00224d89f749c746f80100000041c646ff404d892e41564d89ce4983c60241567118488da424a000000048b8d006620800000000488b5d08ff234c8b7424204c89f34983fe017d18488da424a000000048b83060620800000000488b5d08ff23ff742410ff74241048c7c0010000004c8b4424104c8b542428ff15db1000004989c641564c8b7424704983c6027118488da424a800000048b8d006620800000000488b5d08ff234c8bac24980000004d8b65004c8b6c24084d2bec7118488da424a800000048b8d006620800000000488b5d08ff234983c5014983fd017d18488da424a800000048b8c012660800000000488b5d08ff234983fd010f8ef20000004983ed027118488da424a800000048b8d006620800000000488b5d08ff234983fd017d18488da424a800000048b8c012660800000000488b5d08ff234983fd017e5c488b5424204983ed027118488da424a800000048b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff12488b5c2418ff15b50f0000eb444983fe017d18488da424a800000048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000488b5c2410ff155c0f00004989c5eb454983fe017d18488da424a800000048b85013660800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424084c89f34983fe01750c48b84074660800000000eb1048b84074660800000000ff15b80e0000ff15aa0e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8bb424880000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1074660800000000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d570d00000f876d0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2874660800000000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158b0c00000f87910000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013249d1ed43c6442e0229418066ffbf41564c8b7424204d8b3648c7c001000000eb30488da424b000000048b8f807620800000000488b5d08ff23488da424b000000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff152c0c00004c8b34244d89f54c3b35160c00007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15b00b00004989c6415648c7c001000000ff15960b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8bb424880000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1074660800000000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d020a00000f876f0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be7074660800000000e9b60000004d89eb4983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15360900000f87930000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc707466080000000048c7c10d000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424284d8b3648c7c001000000eb30488da424b000000048b8f807620800000000488b5d08ff23488da424b000000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15c50800004c8b34244d89f54c3b35af0800007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15490800004989c641564c8b7424404c89f34983fe017d18488da424c000000048b83060620800000000488b5d08ff2348c7c001000000ff15090800004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b6424704d89e64d89650041554d89f64983c60241567118488da424b800000048b8d006620800000000488b5d08ff23f64424480175204c8b7424484d8b364d8b36498b06ff15070700004989c649c7c501000000eb18488da424b800000048b8e06d660800000000488b5d08ff2341f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd0175074c8b742440eb2f4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424404d8966104d896e0849c7061f00000041564c8bb424800000004983c60441567118488da424c800000048b8d006620800000000488b5d08ff234c8bb424a00000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1074660800000000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d4f0500000f87610100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15830400000f87850000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424784d8b3648c7c001000000eb30488da424c800000048b8f807620800000000488b5d08ff23488da424c800000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15080400004c8b34244d89f54c3b35f20300007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff158c0300004989c641564c8b7424104c89f34983fe017d18488da424d800000048b83060620800000000488b5d08ff2348c7c001000000ff154c0300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424a80000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4a8000000c2180041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15da0100004c8b34244d89f54c3b35c40100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff155e0100004989c6415648c7c001000000ff15440100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24684c8968084c89304883c470c21800f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@7921,1,@18573,@13764,@11908,@123,@13601,@13765,@11908,@123,@13601,@13766,@13767,@13655,@123,@13601,@13768,@13655,@123,@13601,@13572,@13769,@13169,@13169,@13770,@13771,@13777,@13140,@13778,@13780,@13763,@11908|231,0,@7911 245,0,@1263 410,0,@105 526,0,@105 573,0,@731 715,0,@13758 742,0,@105 848,0,@731 880,0,@6845 925,0,@731 1044,0,@13759 1277,0,@13760 1392,0,@1262 1406,0,@1169 1465,0,@7915 1661,0,@7916 1883,0,@117 1904,0,@117 1956,0,@105 2067,0,@105 2146,0,@105 2184,0,@731 2255,0,@105 2301,0,@105 2335,0,@7248 2375,0,@105 2405,0,@7248 2446,0,@105 2533,0,@7251 2617,0,@7251 2726,0,@7917 2738,0,@7917 2852,0,@7915 3048,0,@7916 3270,0,@117 3294,0,@117 3434,0,@123 3476,0,@7652 3689,0,@7915 3885,0,@7919 4043,0,@7919 4109,0,@117 4133,0,@117 4273,0,@123 4315,0,@7652 4364,0,@731 4600,0,@105 4663,0,@7885 4832,0,@105 4876,0,@7915 5072,0,@1396 5282,0,@117 5306,0,@117 5446,0,@123 5488,0,@7652 5537,0,@731 5972,0,@123 6014,0,@7652 13758:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18567,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13759:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@7912,1,@18568|42,0,@105 13760:D4,40|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b4a084c8b5210ff2519000000f4|@7913,1,@18569,@13761| 13761:D4,680|483b65187306ff5558ca090741f6c1010f850e0100004d8b294d8b71084d8b65004d8b6424184d8b24244d8b642418498b7c24084989fb488b3f4883ff03754e488b70084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b63084989fb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037564eb764c89df4d8b1b4983fb017549488b70084989f3488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375234989fc4d8b6424184d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89f1483b65187306ff5558ca0107e908ffffff4d8d77f04c3b75107306ff5550ca01254d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750c488b004c89c3ff25830100004d8b364d8b2e41ff750841ff75104d8b76084d8b28498b50084d8b224d2bec7115488d64241048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8b7424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849bec0aa6208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000c3f400|@7914,1,@18570,@13762|357,0,@105 585,0,@1263 13762:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18571,@11046|170,0,@105 287,0,@7233 13763:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18591|33,0,@105 88,0,@1823 13764:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18574|33,0,@105 88,0,@1823 13765:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18575|32,0,@105 87,0,@1823 13766:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@18576| 13767:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18577|32,0,@105 87,0,@1823 13768:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18578|33,0,@105 88,0,@1823 13769:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18579| 13770:D5,608|483b65187306ff5558ca090750534150415141524c8b7424204d89f54c3b742418750f488d64242848c7c001000000c210004c8b7424104c2b7424087115488d64242848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64242848b8c012660800000000488b5d08ff234983fe010f8ef10000004983ee027115488d64242848b8d006620800000000488b5d08ff234983fe017d15488d64242848b8c012660800000000488b5d08ff234983fe017e5b488b14244983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8970084d89ed4c8928ff12488b5c2438ff156f010000eb4a4d89ed4d89ee4983fd017d15488d64242848b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004d89f64c89700848c70001000000488b5c2430ff15100100004989c5eb4b4d89ed4d89ee4983fd017d15488d64242848b85013660800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff234c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c24204c8b542418e8d9fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c21000f4000000|@741,1,@18580,@13169,@13169|69,0,@105 100,0,@7248 137,0,@105 164,0,@7248 201,0,@105 294,0,@7251 384,0,@7251 498,0,@105 13771:D27,2768|483b65187306ff5558ca090753415041514152a8010f859e0a00004c8b30ff700841ff760841ff761041ff7618488b442408488b5c24384c8b4424304c8b4c2428ff15590b00004989c64156f6442418010f85040300004c8b7424184d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe030f85dc0200004c8b34244d8b2e4983fd0d751c4c89f048c7c30300000049c7c001000000ff15f50a00004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510030000004d89f64d89750849c74500170000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100b0000004d896e0849c7062b00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15580a00004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8f048660800000000ff15000a00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bdc0aa6208000000004d896e104c8b2c244d896e08488d64240849c7060b00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15500900004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b85874660800000000ff15f80800004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c2460415641554154415341524151488b442460488b9c24800000004c8b4424784c8b4c24704c8b542468e8effcffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c7000b0000004883c448c23000488b442428ff150a0800004989c641564c8b6424104d8b34244983fe050f85260700004d89e44d8b7424104d89f54d8b364983fe0b750949c7c603000000eb0749c7c6010000004983fe030f85f10600004d89e441ff7424084d89ee498b4608ff15a7070000488b5c2408ff15940700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be08a0b309000000004c89336a016a01488b4424104989e0ff154b07000058488d642418488b5c24604c8b4424584c8b4c24504c8b5424784c8b7424704c8b6c246841564155ff15150700004989c64156488b442418488b5c24484c8b4424404c8b4c2438ff15ee0600004989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15c20600004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c7061700000041564c8b7424504d89f54d2bf57115488d64245848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64245848b8c012660800000000488b5d08ff234983fe017e60488b5424484983ee027115488d64245848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70001000000ff12488b5c2440ff15db0500004989c5eb0a49bdb09f6208000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15720500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004156488b442420488b5c24504c8b4424484c8b4c2440ff15100500004989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15e40400004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c7061700000041564c8b7424584d89f54d2bf57115488d64246048b8d006620800000000488b5d08ff234983c6014983fe017d15488d64246048b8c012660800000000488b5d08ff234983fe017e60488b5424504983ee027115488d64246048b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70003000000ff12488b5c2448ff15fd0300004989c5eb0a49bde09f6208000000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15940300004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15f60200004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15880200004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8f048660800000000ff15300200004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24104d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15c20100004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b85874660800000000ff156a0100004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc0aa6208000000004d8966184c8b6424084d8966104d896e0849c7060b00000041564c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c2468415641554154415341524151488b442468488b9c24880000004c8b8424800000004c8b4c24784c8b542470e8adf5ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64241048c7000b0000004883c448c23000488d642450eb05488d64245048b8a06f660800000000488b5d08ff23488d64242048b8c0aa620800000000c23000f400000000|@7922,1,@18582,@13572,@11046,@13572,@11046,@13572,@13572,@13169,@11046,@13774,@13572,@13169,@11046,@13775,@13596,@10900,@10958,@13745,@13776,@13572,@11046,@13572,@11046,@11046,@13773|378,0,@7637 488,0,@1263 626,0,@7918 1008,0,@13772 1231,0,@105 1262,0,@7248 1300,0,@105 1380,0,@1172 1677,0,@105 1708,0,@7248 1746,0,@105 1826,0,@1174 2234,0,@7637 2416,0,@7918 2522,0,@1263 2731,0,@7895 2752,0,@1263 13772:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@7893,1,@18581| 13773:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64240848b8c012660800000000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a80f660800000000488b5d08ff23f400|@7237,1,@18586,@13169,@11046|192,0,@105 223,0,@7248 256,0,@105 347,0,@7251 456,0,@7233 13774:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64240848b8c012660800000000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a80f660800000000488b5d08ff23f400|@7237,1,@18583,@13169,@11046|192,0,@105 223,0,@7248 256,0,@105 347,0,@7251 456,0,@7233 13775:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64240848b8c012660800000000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a80f660800000000488b5d08ff23f400|@7237,1,@18584,@13169,@11046|192,0,@105 223,0,@7248 256,0,@105 347,0,@7251 456,0,@7233 13776:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18585| 13777:D4,456|483b65187306ff5558ca090750534150415141524c8b6c24204d89ee4c3b6c2418750d488d64242848c7c001000000c34d89f64983c6047115488d64242848b8d006620800000000488b5d08ff234c8b6c24104d89ec4d2bec7115488d64242848b8d006620800000000488b5d08ff234983c5014983fd017d15488d64242848b8c012660800000000488b5d08ff234983fd017e5b488b5424084983ed027115488d64242848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff12488b1c24ff15f50000004989c5eb424983fe017d15488d64242848b85013660800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424284883c0027115488d64243048b8d006620800000000488b5d08ff23488b5c24204c8b4424184c8b4c24104c8b542408e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c3f400|@741,1,@18587,@13169|64,0,@105 98,0,@105 129,0,@7248 167,0,@105 253,0,@7251 364,0,@105 13778:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f803000000498946104d89460849bd68aab309000000004d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@741,1,@18589|62,0,@13779 88,0,@105 13779:D3,168|483b65187305ff5558cd054989d44d8b7424104983c604711048b8d006620800000000488b5d08ff234c8b28488b50084d8b6424084d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@7923,1,@18588|27,0,@105 60,0,@105 13780:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c349bea8946208000000004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e867ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@741,1,@18590|26,0,@1098 134,0,@105 13781:D3,64|483b65187305ff5558cd014c8b304c8b68084d8b6d20498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@7925,1,@18593| 13782:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18713| 13783:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18595| 13784:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18596| 13785:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18597| 13786:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18598| 13787:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18599| 13788:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18600| 13789:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@18601| 13790:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18602| 13791:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18603| 13792:D9,424|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1dbc01000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e98c0000004d8b364d8b2e4c3b2d5801000075064d8b7610eb15488d64241048b87850620800000000488b5d08ff234983fe03741f488d6424104c8b74240849c7060100000049895e0848c7c001000000c208006a016a014989e04c8b4c24184c8b542410ff15f7000000585b4c8b4424084159488d6424084c8b5424084c8b34244c897424084883c408ff25c900000041f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3f00000075094d8b7610e919ffffff488d64241048b87850620800000000488b5d08ff23f4000000000000|@7927,1,@18606,@15136,@15136,@13718,@13793,@15136,@15136|110,0,@788 151,0,@621 358,0,@828 403,0,@621 13793:D7,1448|483b65187306ff5558ca09074150415141524883f801751a488d642410415e49c7060100000049895e0848c7c001000000c3ff30ff7008ff33ff7308ff73104c8b7424204d8b3641ff7618498b066a016a014889e3ff157d050000ff7424084c8b7424404d8b2e4d8b6d184d8b6d084d8b6d004983fd050f85ac0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89f64d8975104c8b34244d897508488d64240849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d8966084d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424204c8973084c8b7424284c8933488b4424304c8b4424504c8b4c24484883c440415a4883c410e9d7feffff4c8b742418498b06488b5c2450ff15940400004989c64156488b542438488b442458ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b10300004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdc8b9b309000000004d892e48c70424010000004c89742408e9b2000000488b54246048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424684d8966104d896e0849bc08bab309000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b7424104d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24604d896c24104c8b6c24204d896c240849c70424090000004c8b5424384d8b5a084d89dd4d8b0b4983f9010f85150100004d8b43084d89d24d8b4a104d89d2498b7d004989fb4883ff057518488da4248000000048b8a8d2620800000000488b5d08ff234983fb01751e4d8b6d104d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca005f4d89ef49c745f80400000049c74518010000004d8945104d895d0849c74500030000004d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d896b0849bdd8c86208000000004d892b4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d89d24d8955104d895d0849c745000b000000eb344d8d6fe04c3b6d107306ff5550ca00544d89ef49c745f8030000004d89d24d89d34d8955104d89db4d895d0849c745000b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424404d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24484c896b084c89336a016a01488b4424684989e04c8b8c24800000004c8b542478e8a7faffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15470000004989c64c8bac24900000004d8975004c8b34244d897508488d64240848c7c0010000004881c490000000c3f4000000|@7928,1,@18607,@13797,@12170,@13796,@10737|597,0,@13794 685,0,@13795 930,0,@1545 1111,0,@1484 13794:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18604| 13795:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18605|36,0,@105 13796:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18609,@11046|170,0,@105 287,0,@7233 13797:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18608| 13798:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18610| 13799:D7,224|483b65187306ff5558ca090741514c8b70084d8b3641ff760841ff3041ff70084c8b4c24304d89d0488b442410ff15dd0000004989c641564c8b7424304d8b0e4c8b7424304d8b46084c8b7424304d8b56104c8b7424304d8b76286a016a014156544883042408488b442438488b5c2428ff1591000000488b1c24ff7424084883fb017507488b5c2428eb0e488b442428ff15690000004889c34883fb0175074c8b742418eb0e488b442418ff15460000004989c64c8b6c24384d8975004c8b34244d897508488d64240848c7c0010000004883c438c21000f4000000000000|@7933,1,@18611,@13801,@13802,@13713,@13800| 13800:D3,288|483b65187306ff5558ca090341504151a8010f85f3000000f6c3010f85e30000004c8b30ff7008ff33ff73084d8b76104d8b2e4983fd050f85b200000041ff760841ff7610488b54243048c7c003000000ff124989c54c8b7424084d892e4c8b7424284d89f14c8b24244d893424488d6424104d8d77d84c3b75107306ff5550ca00224d89f749c746f8040000004c8b6424084d8966184d896e1049c746080100000049c706030000004156488b442418488b5c24084c8b442428e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242848b80077660800000000488b5d08ff23488d642410eb05488d64241048c7c001000000c3f400000000000000|@3397,1,@18614|246,0,@7929 13801:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18612| 13802:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18613| 13803:D4,216|483b65187305ff5558cd09504d8d67e04c3b65107305ff5550cd084d89e749c74424f80300000041c64424ff4049c74424100100000049c74424080100000049c7042401000000498d47e8483b45107306ff5550ca08104989c748c740f802000000c640ff4048c740080100000048c7000100000049bec0c1b309000000004d89e549895d10498945084d89750041806424ffbf49be00c6b309000000004989c54d8965084d8975008060ffbfff153d0000004889c2488b0424ff124889c2488d64240848c7c003000000ff1248c7c001000000c3f40000|@7939,1,@18619,@10962|119,0,@13804 150,0,@13806 13804:D6,832|483b65187305ff5558cd0d504c8b334983fe0b0f8513030000ff7308ff73184c8b2c244d8b65184d89e64d8b6424084d8b24244983fc050f85a5000000488b4208ff15210300004989c641564c8b7424084d8b76184d8b76084d8b2e4983fd05756b498b460841ff7610488b5c2418ff15eb0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40c5b309000000004c89336a016a01488b4424104989e0ff15a202000058488d642410488b1424ff124889c2488d64241858ff22488d64242048b818d0620800000000488b5d08ff234c8b6424104983fc030f852e0200004d89ed4d8b364d8b264983fc050f850e0200004d8b76084d8b364983fe010f8df00100004c8b72104d89ed4d8b6d00488d6424084d8b65004e8d1c65010000004983fb017514488d64241049bc0878660800000000e9b8000000488d6424104d89da4983c2584c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db80100000f876f0100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba087866080000000048c7c159000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c243448d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f48b84878660800000000e9b40000004d89eb4983c3324c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15dc0000000f878b0000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c51049bc487866080000000048c7c133000000498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248c7c001000000c348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff23488d64241848c7c003000000c3488d64241848c7c003000000c3488d64241848c7c001000000c358c3f400ffffffffffffff01ffffffffffffff01|@7936,1,@18616,@10900,@10958,@10962|153,0,@13805 212,0,@1531 318,0,@7934 463,0,@7934 535,0,@7935 692,0,@7935 743,0,@117 759,0,@117 13805:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18615| 13806:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b72084c89700849be70c6b309000000004c8930c3f400000000|@7938,1,@18618|55,0,@13807 13807:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@7937,1,@18617| 13808:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18620| 13809:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18621| 13810:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18622| 13811:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18623| 13812:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18624| 13813:D6,168|483b65187305ff5558cd09534c8b701841ff364c8b7008ff70104d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc0b75154d8b6e104d89ee483b65187306ff5558ca0040ebc14983fd177533498b4610ff15670000004889c3488b4424084c8b0424ff154d0000004889c3488d6424104883fb01750258c358ff252e000000488d64241848b88879660800000000488b5d08ff23f4|@7943,1,@18625,@13815,@13816,@13814|153,0,@7940 13814:D3,328|483b65187305ff5558cd01a8010f852c0100004c8b30488b40084d8b264d8b6e084d8b5e204d8b562849b9a8946208000000004d8d77f04c3b75107306ff5550ca013e4d89f749c746f80100000041c646ff404d890e4d8d4fe04c3b4d107306ff5550ca017c4d89cf49c741f8030000004d8959104d89710849bed8086208000000004d89314d8d77e84c3b75107306ff5550ca013e4d89f749c746f80200000049c74608010000004d892e4d8d6fd84c3b6d107306ff5550ca015e4d89ef49c745f80400000049c745180100000049c74510010000004d894d084d8975004d8d77d84c3b75107306ff5550ca013c4d89f749c746f8040000004d8956184d895e104d8966084d892e4156e8f0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@18628|43,0,@1098 123,0,@123 13815:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18626| 13816:D4,656|483b65187306ff5558ca0901534150a8010f8565020000ff30ff70084c8b742408498b461849bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad8ce620800000000ff156f0100004989c64983fe017415488d64243048b8507a660800000000488b5d08ff2349c7c6030000004d8d5ff04c3b5d107306ff5550ca00404d89df49c743f80100000041c643ff404d89334c8b7424184d8d67f04c3b65107306ff5550ca00484d89e749c74424f80100000041c64424ff404d8934244c8b7424084d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d897500415e488d6424084d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d895e204c8b5c24104d89d84d895e184d8966104c8b6424184c89e34d8966084d892e4156488b442408e8b3fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241048c7c001000000c3f4000000000000|@742,1,@18627,@10934|39,0,@1098 144,0,@1098 299,0,@1525 329,0,@7944 13817:D3,232|483b65187305ff5558cd0953a8010f85a9000000ff30488b40084c8b342441ff76206a016a014889e3e8d2ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000000000|@1120,1,@18629|193,0,@1118 13818:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18630| 13819:D7,768|483b65187306ff5558ca09034c8b204c8b70084c8b58104d8b686841f6c50175464d8b45004d8b5508498b38483b3dfd02000075214d8d6ff04c3b6d107306ff5550ca095b4d89ef49c745f8010000004d894500eb184d89d5483b65187306ff5558ca097aebb449c7c5010000004983fd01750f49bd2068620800000000e9e60100004d8b6d004d8b55004c3b159602000075064d8b6d10eb1048b87850620800000000488b5d08ff234983fd037405e9a10100004d8b064c8b134d3bc27502eb2f4d8b284e8d2c6d01000000498b3a4889f9488d3c7d010000004c3bef7572498d7008498d7a08483bc9f3a67402eb614d8b6e084c8b53084d3bea754b4d8b6e104c8b53104d3bea75354d8b6e184c8b53184d3bea751f4d8b76204c8b6b204d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f84f30000004d8d77e04c3b75107306ff5550ca081a4d89f749c746f80300000049c746100100000049895e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca085a4d89ef49c745f80400000049bac87a6608000000004d8955184d89751049beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca083a4d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca085a4d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca083a4d89f749c746f8030000004d895e1049895e084d89264d89294d89710848c7c001000000c349c701010000004989410848c7c001000000c341f6c50175464d8b45004d8b5508498b38483b3d9f00000075214d8d6ff04c3b6d107306ff5550ca095b4d89ef49c745f8010000004d894500eb184d89d5483b65187306ff5558ca097aebb449c7c5010000004983fd01751048b8b86c620800000000488b5d08ff234d8b6d004d8b55004c3b153700000075094d8b6d10e9befdffff48b87850620800000000488b5d08ff23f4000000|@7950,1,@18631,@15136,@15136,@15136,@15136|118,0,@788 156,0,@621 430,0,@7947 448,0,@5750 708,0,@828 750,0,@621 13820:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18632| 13821:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18633| 13822:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18634| 13823:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18635| 13824:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18636| 13825:D9,608|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d7402000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e9360100004d8b364d8b2e4c3b2d1002000075114d8b76104983fe037436488d642410eb15488d64241048b87850620800000000488b5d08ff234c8b74240849c7060100000049895e0848c7c001000000c208004d8d77e84c3b75107305ff5550cd094d89f749c746f80200000049895e0849c706010000006a016a01504156f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24404c8b542438ff1568010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408488b5c24104c8b4424204c8b4c24184c8b5424304c8b7424284c897424304883c430ff25d700000041f6c60175454d8b264d8b6e084d8b1c244c3b1db700000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4d00000075194d8b76104983fe037505e98efeffff488d642410e96afeffff488d64241048b87850620800000000488b5d08ff23f400000000|@7951,1,@18639,@15136,@15136,@13718,@13826,@15136,@15136|110,0,@788 162,0,@621 528,0,@828 589,0,@621 13826:D6,776|483b65187306ff5558ca0907415041514152ff30ff7010ff7018ff334c8b730841ff3641ff760841ff7610488b4008488b5c2440ff15f60200004989c64156488b542418488b442448ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15130200004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd88dcb309000000004d892e48c70424010000004c89742408e9b2000000488b54245048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424584d8966104d896e0849bcc8dcb309000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408488b1c24ff7424084d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24404d896e184c8b6c24484d896e104c8b6c24504d896e0849c7060700000041564883fb0175074c8b642440eb0e488b442440ff15a00000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424284d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104c8b6c24284d896e084c8b2c244d892e488d6424084c8b6c24604d8965004d89750848c7c0010000004883c468c3f4000000000000|@7952,1,@18640,@13830,@12170,@13829|339,0,@13827 427,0,@13828 13827:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18637| 13828:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18638|36,0,@105 13829:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@18642,@11046|170,0,@105 287,0,@7791 13830:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18641| 13831:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18643| 13832:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18644| 13833:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18645| 13834:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18646| 13835:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18647| 13836:D5,432|483b65187306ff5558ca090753415041514152a8010f85870100004c8b28ff70084d8b75084d8b3641ff75284d8b6e104d8b65004983fc050f854f01000041ff750841ff751041ff7618488b54244048c7c003000000ff124989c54c8b6424104d89e64d892c244c8b6c24384c89eb4c8b6424084d892c244d89f641ff364c8b7424204d8b264d89e54983fc1d75314d89f64d8b76084d8b6e08498b45004d8b761841564c8b44244049c7c1010000004c8b542438ff15150100004989c5eb2a4d89ee4983fe110f85ab00000048bad07b660800000000488b4424084c8b442438ff15e10000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c706030000004156488b442428488b5c24484c8b4424404c8b4c24384c8b542430e8bbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c448c3488d64245048b89097660800000000488b5d08ff23488d64243048b80098660800000000488b5d08ff23488d64242048c7c001000000c3f4|@742,1,@18679,@13837,@13566|207,0,@7953 383,0,@8166 404,0,@8169 13837:D9,632|483b65187306ff5558ca0d0152505341504d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049c74608010000004c8b6c24184d8b65184d8926498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d8b6d084d896e0849bdd0e6b309000000004d892e4156ff151202000048ba2814660800000000488b5c24104c8b4424084c8b0c24ff15ec0100004989c641564d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049c74608010000004c8b6c24284d8b65184d8926498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d8b6d104d896e0849bd88e7b309000000004d892e4156ff154a01000048ba2814660800000000488b5c24204c8b4424184c8b0c24ff15240100004989c6488d6424084c8b6c24204d8b65004983fc050f85940000004d89ee498b460848ba6814660800000000488b5c24184c8b442410ff15e00000004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15a90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004883c428eb05488d642430498d47d8483b45107306ff5550ca00404989c748c740f80400000049bda0aa6208000000004c8968184c89701049be887e6408000000004c89700848c70001000000c3f400000000|@7959,1,@18650,@13572,@13624,@13570,@13668,@13570,@13668|147,0,@13838 168,0,@7256 331,0,@13839 352,0,@7256 416,0,@7257 589,0,@1262 607,0,@4661 13838:D4,136|483b65187305ff5558cd054c8b72084d8b76104d8b2e4983fd03755b4d8b76084d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2560000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c348b8287c660800000000488b5d08ff23f4|@7957,1,@18648,@11046|121,0,@7955 13839:D4,136|483b65187305ff5558cd054c8b72084d8b76104d8b2e4983fd03755b4d8b76084d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2560000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c348b8287c660800000000488b5d08ff23f4|@7958,1,@18649,@11046|121,0,@7955 13840:D3,40|483b65187305ff5558cd01a801740948c7c003000000eb0748c7c0010000004883f002c3f4000000|@7962,1,@18651| 13841:D3,48|483b65187305ff5558cd014989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f40000|@7962,1,@18652| 13842:D3,16|483b65187305ff5558cd01488b00c3f4|@7962,1,@18653| 13843:D3,40|483b65187305ff5558cd014883f801750848c7c003000000c348c7c001000000c3f4000000000000|@7994,1,@18654| 13844:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed8e9b309000000004c8930c3f400000000|@7997,1,@18656|47,0,@13845 13845:D3,72|483b65187305ff5558cd0d483bc3750848c7c003000000c3a801751cf6c301750f4c8b7208498b16488b00488b1bff2248c7c001000000c348c7c001000000c3f400000000000000|@7996,1,@18655| 13846:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb0eab309000000004c8930c3f400000000|@8005,1,@18658|47,0,@13847 13847:D6,688|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b84887620800000000c34c8b284d89ee4983fd01750b48b84882660800000000c34d89e54983fc037d0b48b84887620800000000c34c8b6208498b5424084d8b364983ed02711048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8826608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@3415,1,@18657,@246,@278,@195|26,0,@1003 49,0,@7999 69,0,@1003 98,0,@1755 318,0,@1070 366,0,@1021 411,0,@1022 562,0,@866 607,0,@8002 13848:D3,24|483b65187305ff5558cd0148c7c007000000c3f400000000|@8007,1,@18659| 13849:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@8009,1,@18660| 13850:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@7911,1,@18661| 13851:D6,3648|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b84887620800000000c34c8b284d89ec4d8b6d004983fd010f85650500004d8b6c240841ff74241041ff74241841ff7424204983ee0241567115488d64242848b8b0f5620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64242849bdd8f5620800000000e9ea0300004d89f64983ee027115488d64242848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849be5803110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8f5620800000000e9f00200004d89f64983ee027115488d64243048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be3804110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdd8f5620800000000e9f60100004d89ed4983ed027115488d64243848b8b0f5620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649bed804110a00000000498b1648b8708e660800000000ff124889c2488b0424ff124989c641564c8b6c24204983ed027115488d64244848b8b0f5620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649bed804110a00000000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d084d896e0849bd0808b409000000004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf88f6608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89f54983fe037d0b48b84887620800000000c34d89e64d8b24244983fc030f85d60200004d89f44d8b74240841ff7424104983ed0241557115488d64241048b8b0f5620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e9620100004d89ed4983ed027115488d64241048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5803110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be5803110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78906608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b84887620800000000c34d89f54d8b364983fe05750b48b8f890660800000000c34d89e64983fc037d0b48b84887620800000000c34d89ec4d8b6d004983fd070f85610200004d8b6c24084983ee02711048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bef803110a00000000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e0040000750949c7c603000000eb2b4c3b35c6040000750949c7c603000000eb194c3b35ac040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc08f6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78916608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b84887620800000000c34d8b74240841ff7424104983ed0241557115488d64241048b8b0f5620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e9620100004d89ed4983ed027115488d64241048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef803110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be5803110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8916608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@8108,1,@18665,@246,@278,@195|32,0,@1003 96,0,@1755 130,0,@1756 159,0,@1755 209,0,@15145 243,0,@1756 272,0,@1755 327,0,@15159 361,0,@1756 390,0,@1755 447,0,@15169 460,0,@8096 502,0,@1755 559,0,@15169 611,0,@13854 724,0,@1031 772,0,@866 817,0,@1024 909,0,@866 953,0,@1024 1041,0,@866 1086,0,@1024 1178,0,@1022 1323,0,@866 1368,0,@8109 1458,0,@1003 1512,0,@1755 1546,0,@1756 1575,0,@1755 1625,0,@15145 1661,0,@1755 1716,0,@15145 1761,0,@1031 1809,0,@866 1854,0,@1024 1946,0,@1022 2091,0,@866 2136,0,@8113 2221,0,@1003 2244,0,@8117 2264,0,@1003 2303,0,@1755 2353,0,@15155 2536,0,@1070 2584,0,@1021 2629,0,@1022 2780,0,@866 2825,0,@8121 2910,0,@1003 2944,0,@1755 2978,0,@1756 3007,0,@1755 3057,0,@15155 3093,0,@1755 3148,0,@15145 3193,0,@1031 3241,0,@866 3286,0,@1024 3378,0,@1022 3523,0,@866 3568,0,@8125 13852:D3,32|483b65187305ff5558cd0149bef80b110a00000000498b16ff22f40000000000|@8107,1,@18663|13,0,@15283 13853:D3,2744|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b84887620800000000c34c8b284d89ec4d8b6d004983fd010f859307000041ff7424084983ee0241567115488d64241048b8b0f5620800000000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb8af620800000000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5803110a00000000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb8af620800000000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5803110a00000000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb8af620800000000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef803110a00000000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb8af620800000000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5803110a00000000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be5803110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc20b96208000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be001b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd381b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be701b6308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8896208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda01b6308000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed81b6308000000004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf88e6208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb88e6608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b84887620800000000c34d8b74240841ff7424104983ed0241557115488d64241048b8b0f5620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8f5620800000000e9620100004d89ed4983ed027115488d64241048b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef803110a00000000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0f5620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef803110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd88a6208000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8896208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98896208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd388f6608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@8107,1,@18662|26,0,@1003 75,0,@1755 109,0,@1308 147,0,@1755 197,0,@15145 231,0,@1308 269,0,@1755 319,0,@15145 353,0,@1308 390,0,@1755 440,0,@15155 474,0,@1308 512,0,@1755 562,0,@15145 607,0,@1755 657,0,@15145 702,0,@1379 751,0,@866 795,0,@2021 840,0,@866 884,0,@1024 972,0,@866 1017,0,@2023 1061,0,@866 1106,0,@1024 1194,0,@866 1238,0,@2025 1283,0,@866 1327,0,@1024 1415,0,@866 1460,0,@2027 1504,0,@866 1549,0,@1024 1637,0,@866 1681,0,@2029 1730,0,@1065 1875,0,@866 1920,0,@8099 2005,0,@1003 2039,0,@1755 2073,0,@1756 2102,0,@1755 2152,0,@15155 2188,0,@1755 2243,0,@15155 2288,0,@1031 2336,0,@866 2381,0,@1024 2473,0,@1022 2618,0,@866 2663,0,@8103 13854:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@8108,1,@18664| 13855:D3,40|483b65187305ff5558cd014c8b304983fe01750848c7c003000000c348c7c001000000c3f4000000|@8112,1,@18666| 13856:D3,80|483b65187305ff5558cd014c8b304c8b68084c8b60104c8b5818498d47d0483b45107306ff5550ca00784989c748c740f8050000004c8958204c8960184c8968104c89700848c70001000000c3f40000|@8112,1,@18667| 13857:D3,72|483b65187305ff5558cd014c8b70084c8b68104c8b60184c8b5820498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400|@8112,1,@18668| 13858:D3,40|483b65187305ff5558cd014c8b304983fe03750848c7c003000000c348c7c001000000c3f4000000|@8116,1,@18669| 13859:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70003000000c3f40000|@8116,1,@18670| 13860:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@8116,1,@18671| 13861:D3,40|483b65187305ff5558cd014c8b304983fe05750848c7c003000000c348c7c001000000c3f4000000|@8120,1,@18672| 13862:D3,40|483b65187305ff5558cd014c8b304983fe07750848c7c003000000c348c7c001000000c3f4000000|@8124,1,@18673| 13863:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@8124,1,@18674| 13864:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@8124,1,@18675| 13865:D3,40|483b65187305ff5558cd014c8b304983fe09750848c7c003000000c348c7c001000000c3f4000000|@8128,1,@18676| 13866:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70009000000c3f40000|@8128,1,@18677| 13867:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@8128,1,@18678| 13868:D3,192|483b65187305ff5558cd09534883f8017523415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c34c8b30488b400841ff3641ff76086a016a014889e3e8b1ffffff415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642410415d4d8965004d89750848c7c001000000c3f40000000000|@8172,1,@18680|22,0,@1118 13869:D6,408|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b30ff7008f6c3010f853f010000ff33ff73084d8b6e0841ff75004c8b2c24498b450841ff7628ff15630100004989c64156488b442408ff154b0100004889c36a016a016a01488b4424184989e0ff152c010000415d415b415c488d6424104d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004c8b14244d895618488d6424084d895e104d896e084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442418488b5c2408e8b2feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64240848b8286d640800000000488b5d08ff23f40000000000|@4547,1,@18681,@13871,@13899,@13870|33,0,@4545 388,0,@4545 13870:D3,192|483b65187305ff5558cd01a8010f859d0000004c8b30488b40084d8b6e186a016a014d8b65004983fc0575124d8b6d084d8b364c8934244c896c2408eb164d8b2e49bea8946208000000004c892c244c89742408415d415c4d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e87fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@742,1,@18711|67,0,@1098 13871:D9,736|483b65187306ff5558ca0901534150ff150b0300004989c641566a016a014c8b7424204d89f54983fe01751f49be98986608000000004d8b2e4c892c244d8b76084c89742408e94d02000049c7c6010000004d89ed41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15780200004989c641564c8b7424084c89f34983fe017d15488d64243848b83060620800000000488b5d08ff2348c7c001000000ff153b0200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049beb0986608000000004d89750849bea0016308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649c7c6010000004c8b6c242841f6c50175364d8b5d084d89f44983c4027115488d64243048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15490100004989c641564c8b7424084c89f34983fe017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff150c0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049beb0986608000000004d89750849bea0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8b2c244c896c2408488d6424084c89742408ff3424ff742410488b442420488b5c2430ff15490000004989c64c8b6c24284c8b24244d896500488d6424084c8b24244d896508488d6424304d89751048c7c001000000c3f40000|@8175,1,@18682,@13873,@13895,@13655,@13896,@13655,@13872|46,0,@8173 111,0,@105 186,0,@731 294,0,@8174 308,0,@1854 398,0,@105 473,0,@731 581,0,@8174 595,0,@1262 13872:D4,200|483b65187305ff5558cd01a8010f85aa0000004c8b30ff700841ff36498b46086a016a014c8b304983fe03751448c70424010000004c8b7424104c89742408eb17ff15990000004989c64c8934244c8b7424104c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442410e876ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c348c7c001000000c3f40000|@742,1,@18708,@13897| 13873:D14,1248|483b65187305ff5558cd094989c041f6c0010f85380200004d8b204d89e64d8b68084d8b24244983fc0175184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f85fb01000041ff760848b8f8d764080000000048bb989f620800000000ff15d50400004989c641564c8b7424084d89f54c3b35b90400007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742408415648c7c001000000ff15530400004989c6415648c7c001000000ff15390400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f8d764080000000048bbc0aa620800000000ff15860300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c341f6c00175774d8b204d89e64d8b68084d8b24244983fc0575184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b840a0620800000000ff157d0200004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c341f6c00175774d8b204d89e64d8b68084d8b24244983fc0375184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b840a0620800000000ff15f80100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c341f6c00175774d8b204d89e64d8b68084d8b242441f6c40175184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b840a0620800000000ff15730100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d89c549c7c60100000041f6c50175434d8b5d004d8b65084d8b1b4983fb0175054d89f3eb194d89f34983c302711048b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0861ebb74983fe03750d48c7c001000000ff25db0000004983fe01750c49c7c6010000004d89c5eb5249c7c1010000004d89c641f6c60175314d8b66084d89cd4983c502711048b8d006620800000000488b5d08ff234d89e64d89e9483b65187306ff5558ca0843ebc94983e90248c7c001000000ff256f00000041f6c50175314d8b5d084d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0061ebc94983ee024c89c34d89f048c7c001000000ff2519000000f4|@8176,1,@18683,@13875,@13882,@13892,@13883,@13883,@13883,@13877,@13894,@13655,@123,@13874|91,0,@5288 101,0,@1171 162,0,@123 199,0,@7652 394,0,@5288 404,0,@1263 661,0,@1178 786,0,@1178 911,0,@1178 1016,0,@105 1118,0,@105 1190,0,@105 13874:D6,1032|483b65187305ff5558cd094c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e99f000000909090e972010000909090e9a1010000909090e9a4010000909090e9a7010000909090e90a020000909090e9a3020000909090e93c030000909090e9900300009090904d8d77e04c3b75107305ff5550cd084d89f749c746f80300000049c746100b00000049895e0849c7062b000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b000000c34c8b7008ff701041f6c6017415488d64240848b808ef620800000000488b5d08ff2341ff36f60424010f84970000004c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15180300004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64241048c70027000000c3488d64241048b8385f620800000000488b5d08ff234c8b70084c8b6810498d47d8483b45107306ff5550ca08604989c748c740f8040000004c896818488958104c89700848c70027000000c348b8a0aa620800000000c348b8a0aa620800000000c34c8b68084d8d77e04c3b75107306ff5550ca08204d89f749c746f80300000049c74610010000004d896e0849c7060d000000498d47d8483b45107306ff5550ca08404989c748c740f80400000049bd789f6208000000004c896818488958104c89700848c70007000000c3ff7008ff70104c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15a60100004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64240848c70027000000c3ff7008ff70184c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15fd0000004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64240848c70027000000c34d8d77e04c3b75107305ff5550cd084d89f749c746f80300000049c746100b00000049895e0849c7062b000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b000000c348b8a0aa620800000000c3f40000|@8184,1,@18704,@11046,@11046,@11046|221,0,@1711 406,0,@723 477,0,@1262 488,0,@1262 576,0,@1170 1020,0,@1262 13875:D8,632|483b65187306ff5558ca0901504150f6c3010f854b0200004c8b33ff730841ff76084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24184d896e0849c706050000004156488b042448bb989f620800000000ff15470200004989c641564c8b7424104d89f54c3b352b0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742410415648c7c001000000ff15c50100004989c6415648c7c001000000ff15ab0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc0aa620800000000ff15fd0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b4424204883c002488b5c24104c8b442418e8d0fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c3488d64241048c7c001000000c3f400000000000000|@8177,1,@18684,@13877,@13876,@13655,@123,@13874|91,0,@1171 152,0,@123 189,0,@7652 389,0,@1263 13876:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18690|33,0,@105 88,0,@1823 13877:D15,1816|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e9a2000000909090e9d2000000909090e902010000909090e9fc000000909090e93d010000909090e96d010000909090e91f020000909090e9d9020000909090e9380300009090904d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010030000004c89700848c70029000000e903060000488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c3488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c358c3498d47d8483b45107303ff55504989c748c740f80400000049bea0aa6208000000004c8970184c8b34244c897010488d64240849be887e6408000000004c89700848c70001000000c3488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c34c8b70084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8b34244d893424488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010030000004c89700848c70029000000e9110400004c8b6808488b58104d8d77e04c3b75107306ff5550ca08204d89f749c746f80300000049c74610010000004d896e0849c7060d00000041564883fb017d15488d64241048b83060620800000000488b5d08ff2348c7c001000000ff15ae0400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e9e3010000488b58084883fb01750258c34883fb017d15488d64240848b83060620800000000488b5d08ff2348c7c001000000ff15100400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb10488d64240848b8c0aa620800000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff157e0300004989c6eb00415648c7c001000000ff15620300004989c6415648c7c001000000ff15480300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec04a6608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15800200004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f20100004989c6eb00415648c7c001000000ff15d60100004989c6415648c7c001000000ff15bc0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec04a6608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15f40000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2569000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251c000000c3f40000|@8178,1,@18685,@12170,@12170,@13572,@13879,@13655,@12170,@13572,@13880,@13655,@12170,@13881,@13878|345,0,@1262 372,0,@4661 703,0,@731 853,0,@731 938,0,@1263 1137,0,@7652 1501,0,@7652 13878:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18689|64,0,@1171 98,0,@105 13879:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18686|33,0,@105 88,0,@1823 13880:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18687|33,0,@105 88,0,@1823 13881:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18688|64,0,@1171 98,0,@105 13882:D11,1032|483b65187306ff5558ca09035053415141f6c0010f85dc0300004d8b3041ff70084d8b2e41f6c5010f858f0000004d8b6d004d8b46084983fd097f3a498d47d8483b45107306ff5550ca00214989c748c740f8040000004c8b7424084c8970184c8968104c8b7424184c89700848c7000f000000eb34498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff15a30300004989c6e9eb0200004983fd03754b4d8b4608498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff154a0300004989c6e99a0200004983fd05754b4d8b4608498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff15f10200004989c6e94902000041ff76084c8b7424204d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d0fb675ff4e8d3475010000004981e6ff0100004981e6810000004981fe810000007507418065ffbfeb004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c706030000004156488b042448bb989f620800000000ff15490200004989c641564c8b7424104d89f54c3b352d0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742410415648c7c001000000ff15c70100004989c6415648c7c001000000ff15ad0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc0aa620800000000ff15ff0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004883c4084156488b4424204883c002488b5c24184c8b4424084c8b4c2410e839fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@8179,1,@18691,@13877,@13884,@13655,@123,@13874,@13883,@13883,@13883|489,0,@1171 550,0,@123 587,0,@7652 787,0,@1263 13883:D15,1088|483b65187306ff5558ca0901504150488b44240848bb989f620800000000ff158c0400004989c641564c8b7424084d89f54c3b35700400007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742408415648c7c001000000ff150a0400004989c6415648c7c001000000ff15f00300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44241048bb989f620800000000ff15420300004989c641564c8b7424104d89f54c3b35260300007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742410415648c7c001000000ff15c00200004989c6415648c7c001000000ff15a60200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44241848bb989f620800000000ff15f80100004989c641564c8b7424184d89f54c3b35dc0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742418415648c7c001000000ff15760100004989c6415648c7c001000000ff155c0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c410c3f400000000|@8180,1,@18693,@13886,@13655,@123,@13887,@13891,@13655,@123,@13877,@13885,@13655,@123,@13874|22,0,@1171 83,0,@123 120,0,@7652 320,0,@1171 381,0,@123 418,0,@7652 618,0,@1171 679,0,@123 716,0,@7652 13884:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18692|33,0,@105 88,0,@1823 13885:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18700|33,0,@105 88,0,@1823 13886:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18694|33,0,@105 88,0,@1823 13887:D15,1432|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e9ab000000909090e9b3000000909090e9bb000000909090e9b5000000909090e91c010000909090e924010000909090e984010000909090e9de010000909090e93d0200009090904c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c301000000ff2571050000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010010000004d89f64c897008488d64240848c70017000000c3488d64240848b8c0aa620800000000c3488d64240848b8c0aa620800000000c358c34d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049bdb8006608000000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701049beb01e6508000000004c89700848c7001b000000c3488d64240848b8c0aa620800000000c34c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c303000000ff2560040000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010030000004d89f64c897008488d64240848c70017000000c3488b58104883fb017d15488d64240848b83060620800000000488b5d08ff2348c7c001000000ff15ed0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9e3010000488b58084883fb01750258c34883fb017d15488d64240848b83060620800000000488b5d08ff2348c7c001000000ff157b0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb10488d64240848b8c0aa620800000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e90200004989c6eb00415648c7c001000000ff15cd0200004989c6415648c7c001000000ff15b30200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec04a6608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15eb0100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155d0100004989c6eb00415648c7c001000000ff15410100004989c6415648c7c001000000ff15270100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec04a6608000000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff155f0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c3f400000000000000|@8181,1,@18695,@13572,@13889,@13655,@12170,@13572,@13889,@13655,@12170,@13890,@13888,@11046,@11046|221,0,@1263 237,0,@1263 282,0,@7165 339,0,@5750 366,0,@1263 496,0,@731 602,0,@731 687,0,@1263 886,0,@7652 1250,0,@7652 13888:D3,192|483b65187305ff5558cd09483bc3750848c7c001000000c34989c54983c502711048b8d006620800000000488b5d08ff234d8d77d84c3b75107306ff5550ca09204d89f749c746f80400000049c74618030000004d896e1049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e871ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18698|35,0,@105 90,0,@1171 124,0,@105 13889:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18696|33,0,@105 88,0,@1823 13890:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618030000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18697|64,0,@1171 98,0,@105 13891:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18699|33,0,@105 88,0,@1823 13892:D12,1072|483b65187306ff5558ca0901505341f6c0010f85060400004d8b3041ff70084d8b2e41f6c5010f85e80000004d8b6d004983fd0175614d8b460848b8b84b620800000000488b5c2408ff15390400004989c64156488b442418488b5c24104c8b442408e898ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34d8b4608498d47e8483b45107306ff5550ca00214989c748c740f8020000004c89680848c70011000000488b5c2408ff15b40300004989c64156488b442418488b5c24104c8b442408e81bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fd0375614d8b460848b8889a660800000000488b5c2408ff15450300004989c64156488b442418488b5c24104c8b442408e8b4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fd0575614d8b460848b8b84b620800000000488b5c2408ff15d60200004989c64156488b442418488b5c24104c8b442408e84dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c341ff76084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060b0000004156488b042448bb989f620800000000ff15440200004989c641564c8b7424104d89f54c3b35280200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742410415648c7c001000000ff15c20100004989c6415648c7c001000000ff15a80100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc0aa620800000000ff15fa0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b4424204883c002488b5c24184c8b442410e815fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c3488d64241048c7c001000000c3f400000000|@8183,1,@18701,@13877,@13893,@13655,@123,@13874,@13883,@13883,@13883,@13883|60,0,@578 288,0,@8182 391,0,@578 534,0,@1171 595,0,@123 632,0,@7652 832,0,@1263 13893:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18702|33,0,@105 88,0,@1823 13894:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18703|33,0,@105 88,0,@1823 13895:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18705|32,0,@105 87,0,@1823 13896:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18706|32,0,@105 87,0,@1823 13897:D5,376|483b65187305ff5558cd014c8b304d89f54983fe0b0f85a0000000488b58084c8b70184d8b66184d89e54d8b6424084d8b24244983fc05757a4d89ee4d8b76084d8b2e4983fd05755a498b460841ff7610ff15410100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be9848b409000000004c89336a016a01488b4424104989e0ff15f800000058488d642410e95dffffff48b818d0620800000000488b5d08ff2348c7c005000000c34d89ee4983fd05750848c7c003000000c34983fe0775404c8b680841f6c501752d4d8b75084983fe01750949c7c603000000eb0749c7c6010000004983fe03750d4d8b7500498b4608e9f7feffff49c7c601000000eb0848c7c005000000c341f6c50175314d8b5d084d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc9498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@8185,1,@18709,@10900,@10958|123,0,@13898 165,0,@1531 303,0,@105 13898:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@18707| 13899:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18710| 13900:D3,176|483b65187305ff5558cd01a8010f858d0000004c8b30488b40084d8b364d8b76184d8b76084d8b264d89e54983fc05751048b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364156e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@742,1,@18712|51,0,@1545 13901:D16,1320|483b65187306ff5558ca0d03525053415041514c8b7424084d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff7628488b442440ff15520500004989c64156ff742448f604240175744c8b2c244d8b75004d89ed41ff75084d8b6e104d8b6d004d8b7618498b4518498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8973184c8b7424504c8973104c8b7424384c89730849be9850b409000000004c8933ff15d8040000415d4c892c24483b65187303ff5558eb86488d642408488b442448488b5c2418ff15aa0400004989c641564c8b7424504c8b2c244983fe010f858a0000004983fd01756f488b442450488b5c2410ff15740400004889c34c8b7424584d8b7608ff74242853ff742420ff742458ff742470ff742428ff7424384156ffb42488000000488b8424980000004c8b4424484c8b4c24604c8b542478ff15210400004989c641564c8b7424584c8b6c2408e992000000488d64246048b868bd630800000000488b5d08ff234d8b0e4d8b660841f6c501755b4d8b55004d8b5d084d8b49104d8b094d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424284d89114d89dd4d89e6483b65187306ff5558ca0060e919ffffff488d64246048b8d89b660800000000488b5d08ff23488d64246048b868bd630800000000488b5d08ff234983fe01756b4983fd0175504c8b7424484d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408488b442430ff152c030000ff3424ff7424104c8b7424584d8b7668e992000000488d64246848b868bd630800000000488b5d08ff234d8b0e4d8b660841f6c501755b4d8b55004d8b5d084d8b49104d8b094d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424304d89114d89dd4d89e6483b65187306ff5558ca0060e93cffffff488d64246848b8d89b660800000000488b5d08ff23488d64246848b868bd630800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d6502000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e91f0100004d8b364d8b2e4c3b2d0102000075104d8b76104983fe030f84b9000000eb18488da4248800000048b87850620800000000488b5d08ff234c8b7424204c89f04983fe017518488da4248800000048b83067660800000000488b5d08ff23ff15a30100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4c8b6c24604d8975004c8b34244d897508488d64241048c7c0010000004883c478c3488b442430ff151d010000ff742430f6042401752a4c8b3424498b064d89f641ff7608488b5c2468ff15f2000000415d4c892c24483b65187303ff5558ebd0488d642408e918ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1db700000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4248800000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4a00000075134d8b76104983fe030f858bfeffffe925ffffff488da4248800000048b87850620800000000488b5d08ff23f400000000|@8192,1,@18715,@15119,@15119,@13904,@13905,@13755,@15119,@15119,@13713,@13911,@13979,@13984,@13803,@13903|175,0,@13902 378,0,@3335 482,0,@8189 503,0,@3335 616,0,@3335 720,0,@8189 741,0,@3335 845,0,@788 899,0,@621 937,0,@7838 1243,0,@828 1301,0,@621 13902:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@8188,1,@18714,@10982| 13903:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b761041ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18797| 13904:D5,816|483b65187305ff5558cd09534c8b702841f6c601754c4d8b364d8b2e4d8b6d004983fd01751f4d8b76084d8b364983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375094c8b304c8b6820eb14488d642408eb05488d64240848c7c001000000c34983fd01750c49bd08de620800000000eb194d8b5d004d8b65084d8b134983fa010f85720200004d8b6b0841554d8b2e4e8d246d010000004983fc01750f49bd889c660800000000e9ae0000004d89e34983c3244c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153c0200000f87010200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb889c66080000000048c7c125000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1a48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8b09c660800000000e9b20000004d89f44983c4344c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d650100000f871d0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bdb09c66080000000048c7c135000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1503010000ff15f50000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b3424498b5660488d642408ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff234d89e5483b65187306ff5558ca0060e953fdfffff4000000ffffffffffffff01ffffffffffffff01|@8195,1,@18716,@11915,@10696|119,0,@1613 175,0,@8193 313,0,@8193 382,0,@8194 538,0,@8194 575,0,@851 741,0,@117 762,0,@117 13905:D5,144|483b65187305ff5558cd016a016a014889e3ff1598000000ff3424ff742410ff7424086a01f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff155d0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e4983fe03750f488d642410584883c410e985ffffff488d64242848c7c001000000c3f400000000000000|@8196,1,@18717,@13907,@13906| 13906:D3,296|483b65187305ff5558cd0953a8010f85f0000000ff30488b40084c8b34244d8b762841f6c60175384d8b364d8b2e4d8b6d004983fd01751f4d8b76084d8b364983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000041566a016a014889e3e88bffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@1120,1,@18722|264,0,@1118 13907:D6,152|483b65187306ff5558ca0901534c8b702841f6c601757a4d8b3641ff3641ff76104c8b3424498b066a016a014889e3ff158b000000488b0424ff742408a8017407488d64242858c3ff156a0000004c8b742420498b1e4883fb0175054989c6eb09ff15490000004989c64c8b6c24204d8975004c8b34244c8b6c24184d897500488d64240848c7c0030000004883c428c358c3f400000000|@8197,1,@18718,@13909,@13910,@13908| 13908:D3,336|483b65187306ff5558ca090153a8017513ff30488b40084c8b34244d8b76084d89c5eb23415d49be18986208000000004d8b264d8965004d8b76084d89750848c7c001000000c341f6c501755b4d8b5d004d8b65084d8b134d3bd67502eb2f4d8b1a4e8d1c5d010000004d8b0e4c89c94e8d0c4d010000004d3bd9751a498d7208498d7e08483bc9f3a67402eb0949c7c603000000eb184d89e5483b65187306ff5558ca0161eb9f49c7c60100000041566a016a014889e3e843ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3f4000000|@1120,1,@18721|40,0,@1118 13909:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18719| 13910:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18720| 13911:D35,6504|488dbc24b0feffff483b7d187306ff5560ca090741514152a8010f8575010000f6c3010f856501000041f6c0010f8554010000ff30ff70084c8b6c24084d8b750041ff364d89ed4d8b75104d8b364d8b264d89ed4d8b752041ff364d89ed4d8b752841ff364d89ed4d89ee41ff75084d89f641ff7618ff33ff730841ff3041ff70084c8b5424604d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05781800000f87840000004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf415649c7c6010000004c8b6c2420eb32488d64246848b8f807620800000000488b5d08ff23488d642410eb05488d642410eb05488d64241048c7c001000000c2480041f6c50175364d8b5d084d89f44983c4027115488d64247048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156f64424380175254c8b7424384d8b364d8b36498b06ff157b1800004989c64156ff742440ff3564180000eb15488d64247848b8c89d660800000000488b5d08ff23f64424080175664c8b6c24084d8b75004d89ed41ff7508f64424080175344c8b6c24084d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd03750f498b4608ff15f81700004989c4eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb93415e4c8b6c24784d8b6d684883c40841f6c50175464d8b5d004d8b65084d8b134c3b15a917000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2068620800000000e9a11500004d8b6d004d8b65004c3b254217000075104d8b6d104983fd030f8473150000eb18488da4248000000048b87850620800000000488b5d08ff2349c7c5010000004d89f441f6c401753a4d8b5424084d89eb4983c3027118488da4248000000048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc041556a016a0141f6c60175324d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd0375124d8b364c89342448c744240801000000eb1a49be20b16308000000004d8b2e4c892c244d8b76084c89742408ff3424ff7424104c8b6c24304983ed014c8b34244d03f541567118488da424b000000048b8d006620800000000488b5d08ff23488b442430ff15301600004989c5415e41f6c50175404d8b5d004d8b65084d89f24983ea014d03da7118488da424a800000048b8d006620800000000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebba41564c8bb424800000004983fe03752a4c8b34244983fe0375144c8b74243049bd8801630800000000e91413000049c7c601000000e90313000049c7c6010000004156488b442478488b9c2488000000ff15871500004989c6415648c7c001000000488b5c24404c8b4424484c8b4c2438ff155e1500004989c6415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8bb424180100004d8b364c8bac241801000041ff750849c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104c8b1c244d89dc4d895d0849bbe074b409000000004d895d004983c60241567118488da424e800000048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e084c8b2c244d892e41564c8bb424c00000004983fe030f85680100004c8b4424204c2b4424407118488da424f000000048b8d006620800000000488b5d08ff234983c001488b5c2440482b5c24487118488da424f000000048b8d006620800000000488b5d08ff234883c301482b5c24787118488da424f000000048b8d006620800000000488b5d08ff234883c3014883fb0375704983f8017d18488da424f000000048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00014d89ef49c745f8020000004d89450849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000e9a51000004883fb017f18488da424f000000048b8489e660800000000488b5d08ff234883fb017d18488da424f000000048b83060620800000000488b5d08ff2348c7c001000000ff15f11200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9da0f00004c8b7424784983ee01488b5c24484903de7118488da424f000000048b8d006620800000000488b5d08ff23488b4424704c8b442420ff15781200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f81100004989c6eb00415649c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd3076b409000000004d892e415648bae85c620800000000488b44245848c7c303000000ff15721100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc00b56508000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70186208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424980000004c8930ff15de1000004989c641564c8bb424880000004983fe03750949c7c103000000eb0749c7c1010000004983f1024c8bb424980000004c89f34983fe017d18488da4241001000048b83060620800000000488b5d08ff2348c7c0010000004c8b4424404c8b542428ff156f1000004889c348bac0c0650800000000488b8424c0000000ff154c1000004c8bac245001000049c7c60100000041f6c50175104d8b55004d8b65084d89f3e90f0c00004c89f34883fb0175054989c6eb09ff150b1000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d5fd84c3b5d107306ff5550ca00604d89df49c743f8040000004d896b184c8b6c24104d896b104c8b6424284d89e54d8963084c8b24244d89234c8b9424500100004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544c8ba4245001000041ff34244c8ba4245801000041ff7424204c8ba4246001000041ff7424384c8ba424800000004983fc03750949c7c601000000eb4a488b842460010000488b9c24580100004c8b8424780100004c8b94248001000041564155ff742448ff742468ffb42480000000ffb4248000000049c7c101000000ff15bc0e00004989c641564c8b9c24500100004c8b9424480100004c8bb42458010000498d8770ffffff483b45107306ff5550ca004c4989c748c740f8110000004c89b0800000004c8b7424084c8970784c8b7424204c8970704c8b7424304c8970684c8b7424384d89f44c8970604c8b6c24504d89ee4c8968584c8b4c24184d89cd4c8948504c8b4c24484d89c84c8948484c8b8c24800000004c8948404c8950384c8958304c8b5c24704c8958284c8b5c24584c8958204c8b5c24684c8958184c8b5c24604c8958104c8b9c24b80000004c89580849bb9876b409000000004c891848ba909f660800000000ffb424f8000000ff742418415641554154488b9c24f80000004c8b8c24400100004c8b942430010000ff159d0d00004989c6415649c7c6010000004c8bac248000000041f6c50175394d8b5d084d89f44983c4027118488da4244801000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc14c3bb42498000000751a4c8b742430498b06ff152a0d00004989c648c7c001000000eb18488da4244801000048b8e8a1660800000000488b5d08ff2341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c5eb09ff159f0c00004989c54983fd017508415e4883c430eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c43041564c8b7424384d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15ee0b00004c8b7424184d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424104d89f54c3b35be0b00007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424104156ff155f0b00004989c64156488b442468ff15470b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b9c24900000004d89dc4d895d384c8b5c24104d895d3049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706190000004156f68424c800000001740d4c8bb42460010000e9b50000004c8bb424600100004d8b2e4c8bb424600100004d8b760849c7c3010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d891a4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8973104d89530849bee0b7b409000000004d89334983c5027118488da4241801000048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e084d892e41564c8bb424080100004d8b76104d8b364d8b76104d8b2e4983fd050f859a0100004d8b56084d8b5e104c8bac24c00000004d89ee4d892a4c8bac24680100004d892b4c8b6c24684983fd030f85f3000000488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d89750041554c8bb424600100004c8bac24580100004c8ba424500100004c8b9c24480100004c8b9424400100004c8b8c24380100004c8b842430010000488bbc2428010000488bb4242001000041564155415441534152415141505756488b842440010000488b9c24080100004c8b8424f80000004c8b8c24580100004c8b942450010000e815efffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c410010000c248006a016a014c8bac247801000041564155ffb424c8000000ff742428ffb424c80000004154488b442440488b9c24f000000049b868a26608000000004c8b8c24e00000004c8d542430ff1547080000ff3424f68424e800000001740b415c4883c418e90203000049c7c6010000004c8bac24e8000000eb18488da4242001000048b8d89b660800000000488b5d08ff2341f6c50175394d8b5d084d89f44983c4027118488da4243801000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8ba424d00000004d8b34244e8d2c75010000004983fd01750f49bec8a2660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b150c0700000f87980000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424284d8b76104d8b3648c7c001000000eb18488da4244001000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff155e0600004c8b34244d89f54c3b35480600007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15e20500004989c641564c8b7424104c89f34983fe017d18488da4245001000048b83060620800000000488b5d08ff2348c7c001000000ff15a20500004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004883c4184c8b9c24b80000004d89dd4983c3027118488da4241801000048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004c8b14244d895608488d6424084d891e41564d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d89ed4d892e41564c8bb424680100004c8bac24600100004c8ba424580100004c8b9c24500100004c8b9424480100004c8b8c24400100004c8b842438010000488bbc2430010000488bb4242801000041564155415441534152415141505756488b842448010000488b9c24100100004c8b8424000100004c8b8c24600100004c8b942458010000e873eaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c410010000c2480041f6c201750c4d8b024d8b4a084889c7eb174d89de4d89e5483b65187306ff5558ca0160e9b2f3ffff40f6c7017546488b17488b7708488b0a488b09498b18483bcb7520498d7ff0483b7d107306ff5550ca057f4989ff48c747f801000000488917eb184889f7483b65187306ff5558ca817febb448c7c7010000004883ff017405e9c60000004c89df40f6c7017546488b17488b7708488b0a488b09498b18483bcb7520498d7ff0483b7d107306ff5550ca057f4989ff48c747f801000000488917eb184889f7483b65187306ff5558ca817febb448c7c7010000004883ff01750948c7c703000000eb0748c7c7010000004883f7024883ff037450498d7fe8483b7d107306ff5550ca017f4989ff48c747f80200000048bee0a2660800000000488977084c89074d8d47e84c3b45107306ff5550ca817e4d89c749c740f8020000004d895808498938eb034d89d84d89c34d89ca483b65187306ff5558ca017ce999feffff41f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f20100004989c6eb00e98df0ffffe9ffecffff4d3bf5750949c7c603000000eb2d41f6c601752041f6c50175114d8b164d8b66084d8b4d004d8b5d08eb3e49c7c601000000eb3349c7c6010000004983fe03751d4c8b7424104983fe03750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb94ebd24d3bd1750949c7c203000000eb4c41f6c201753f41f6c1017530498b324d8b4208498b11498b7908483bf275144989f94d89c2483b65187306ff5558ca007eebbf49c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375174d89dd4d89e6483b65187306ff5558ca0060e920ffffff49c7c601000000e97bffffff49be60fe620800000000e998eaffff41f6c50175464d8b5d004d8b65084d8b134c3b15c800000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017518488da4248000000048b8b86c620800000000488b5d08ff234d8b6d004d8b65004c3b255800000075134d8b6d104983fd030f8508eaffffe95cffffff488da4248000000048b87850620800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@8231,1,@18754,@15136,@15136,@12170,@13944,@13655,@123,@13601,@13945,@13956,@13957,@123,@13601,@13958,@13789,@13917,@13959,@13961,@13140,@13962,@10502,@10649,@12170,@13964,@13966,@13967,@13973,@13974,@15136,@15136,@13975,@1823,@13943|377,0,@117 446,0,@105 533,0,@8198 762,0,@788 818,0,@621 872,0,@105 970,0,@3271 1031,0,@105 1097,0,@105 1164,0,@1853 1295,0,@105 1448,0,@13912 1478,0,@105 1579,0,@105 1619,0,@105 1654,0,@105 1694,0,@6950 1806,0,@8201 1836,0,@731 1946,0,@105 2181,0,@13913 2196,0,@707 2254,0,@6772 2303,0,@195 2428,0,@731 2470,0,@6845 3087,0,@13914 3100,0,@8207 3204,0,@105 3284,0,@8223 3629,0,@123 3666,0,@7652 3983,0,@13940 4010,0,@105 4438,0,@8226 4516,0,@8189 4559,0,@105 4623,0,@8228 4852,0,@117 4992,0,@123 5034,0,@7652 5083,0,@731 5286,0,@105 5898,0,@8229 6299,0,@1823 6411,0,@828 6471,0,@621 13912:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18723,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13913:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8204,1,@18724|42,0,@105 13914:D6,672|483b65187305ff5558cd054989c5526a016a014c8b742410498b86800000004d89f64d8b46584d89f64d8b4e504d89f64d8b56604d89f64d8b767041565448830424084c89ebff157c020000ff34244c8b6c24104d8d57b84c3b55107306ff5550ca00204d89d749c742f8080000004c8b7424184d8b66784d89623849c74230010000004d89f64d8b66704d8962284d896a204d89f64d8b6e684d896a184d89f64d8b6e604d896a104d89f64d8b6e584d896a084d89f64d8b6e504d892a4d89f6498b56304d89f6498b46384d89f6498b5e404d89f64d8b464849c7c101000000ff124989c44c8b34244d89f54983fe01750a488d6424184d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c41041564c8b6424084d8b7424084983fe037506584883c408c34d89e44d8b6c24284983ed027115488d64241048b8d006620800000000488b5d08ff234d89e44d8b7424204d89f34d89e44d2bf37115488d64241048b8d006620800000000488b5d08ff234983c6014983fe017d15488d64241048b8c012660800000000488b5d08ff234983fe017e634d89e4498b5424184983ee027115488d64241048b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8970084c8928ff124c8b742408498b5e10ff15a70000004989c6eb414983fd017d15488d64241048b85013660800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700110000005b4c8b34244d8b4608488d642408ff251f000000f4000000000000|@8205,1,@18725,@13915,@13169,@13713|352,0,@105 392,0,@105 423,0,@7248 464,0,@105 555,0,@7251 13915:D4,520|483b65187306ff5558ca09014989c64983f8010f8c8d0000004983f8017d02eb754c3b05d80100007f6c4c89c04883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08514d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb2e4d89e34983eb10eb2048b870d5640800000000488b5d08ff2348b828dc650800000000488b5d08ff234d3bdc751e49c7c40100000049c7c20300000049c7c30100000049c7c101000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca0879ebb94d3bc80f8da30000004c89d7490bfc4981fa01010000755648d1ef4c89de48d1ee41887c35004c89c94883c102711048b8d006620800000000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c94989d34989f24989fc483b65187306ff5558ca087feb924c89c94883c102711048b8d006620800000000488b5d08ff234b8d7412ff4c89da4989c94989d34989f24989fc483b65187306ff5558ca087fe954ffffff4983fc017502eb0b49d1ec49d1eb4788641d00418065ffbf4d8d67e84c3b65107306ff5550ca08614d89e749c74424f8020000004d896c24084d8904244d89e54889d84c89eb4d89f0ff2528000000f400000000000000ffffffffffffff01|@8206,1,@18726,@13916|152,0,@5275 168,0,@6990 302,0,@105 374,0,@105 13916:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@7005,1,@18727| 13917:D30,11160|488dbc24b0feffff483b7d187306ff5560ca0d075250534150415141524c8b7424404d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d422c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e96d2a00004d8b364d8b2e4c3b2dde2b000075064d8b7610eb15488d64243048b87850620800000000488b5d08ff234983fe03741b488d6424205a488b4424284c8b7424084c897424304883c430ff224c8b6c24584d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b54244048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef8d76408000000004d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b6c24604d8b6d004c8b642460498b5424084c8b6424604d8b24244d2bec7115488d64244848b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc38656608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b0000004156488b54245848c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424784d8b364c8b6c2478498b55084c8b6c24784d8b6d004d2bf57115488d64246048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424204c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc68656608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b0000004156488b54247048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424900000004d8b364c8bac2490000000498b55084c8bac24900000004d8b6d004d2bf57115488d64247848b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424384c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bce87a6608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b0000004156488b94248800000048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424a80000004d8b364c8bac24a8000000498b55084c8bac24a80000004d8b6d004d2bf57118488da4249000000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424504c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcd89f6608000000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb01e6508000000004d896e0849c7061b0000004156488b9424a000000048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424c00000004d8b364c8bac24c0000000498b55084c8bac24c00000004d8b6d004d2bf57118488da424a800000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424684c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424c80000004d8b364c8bac24c8000000498b55084c8bac24c80000004d8b6d004d2bf57118488da424b000000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424584c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424d00000004d8b364c8bac24d0000000498b55084c8bac24d00000004d8b6d004d2bf57118488da424b800000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424484c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424d80000004d8b364c8bac24d8000000498b55084c8bac24d80000004d8b6d004d2bf57118488da424c000000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424384c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424e00000004d8b364c8bac24e0000000498b55084c8bac24e00000004d8b6d004d2bf57118488da424c800000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424284c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706290000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c74424100100000049bdd89f6608000000004d896c24084c8b2c244d892c24488d6424084d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184d89751049beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175035beb12488b0424ff15e61f00004889c3488d6424084883fb017507488b5c2410eb0e488b442410ff15be1f00004889c34883fb017507488b5c2428eb0e488b442428ff159b1f00004889c34883fb017507488b5c2440eb0e488b442440ff15781f00004889c34883fb0175074c8b742458eb0e488b442458ff15551f00004989c641564c8bb424c8000000498b164c8bb424c800000041ff76084c8bb424d000000041ff7610488b8424d0000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8bb424980000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15521e00004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd30aab409000000004d892e48c70424010000004c89742408e9b8000000488b9424d800000048c7c003000000ff124989c54c8ba424e80000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bc70aab409000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff7424104c8bb424080100004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8ba424b80000004d8965184d8975104c8bb424c80000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d8966084d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e104c8b6c24384d896e084c8b6c24084d892e41564c8bb424080100004d8b364c8bac2408010000498b55084c8bac24080100004d8b6d004d2bf57118488da424f000000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424b00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424084d89650849c745000d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c74424100100000049bb38656608000000004d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb01e6508000000004d896e0849c7062500000041564c8bb424100100004d8b364c8bac2410010000498b55084c8bac24100100004d8b6d004d2bf57118488da424f800000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424b80000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b542420488b842418010000ff124989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c74424100100000049be68656608000000004d897424084c8b34244d893424488d6424084d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb01e6508000000004d896e0849c7062500000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004c8ba424280100004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c74424100100000049bbe87a6608000000004d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb01e6508000000004d896e0849c706250000004156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424080100004d8b76184d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424380100004d8b364c8bac2438010000498b55084c8bac24380100004d8b6d004d2bf57118488da4242001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b8424f0000000ff15c11600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec0aa6208000000004d8975104c8b34244d897508488d64240849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e0849c706050000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424104d89530849c703050000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2408eb0e488b442408ff15e51400004889c34883fb0175075b4883c428eb12488b0424ff15c31400004889c3488d6424304883fb0175074c8b742418eb0e488b442418ff159b1400004989c641564c8bb424100100004d8b364c8bac2410010000498b55084c8bac24100100004d8b6d004d2bf57118488da424f800000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424a00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c00000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc38656608000000004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424900000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424200100004d8b364c8bac2420010000498b55084c8bac24200100004d8b6d004d2bf57118488da4240801000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c80000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc68656608000000004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424200100004d8b364c8bac2420010000498b55084c8bac24200100004d8b6d004d2bf57118488da4240801000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424800000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424280100004d8b364c8bac2428010000498b55084c8bac24280100004d8b6d004d2bf57118488da4241001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424d00000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bce87a6608000000004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424280100004d8b364c8bac2428010000498b55084c8bac24280100004d8b6d004d2bf57118488da4241001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424704c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424300100004d8b364c8bac2430010000498b55084c8bac24300100004d8b6d004d2bf57118488da4241801000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424d80000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bcd89f6608000000004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb01e6508000000004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b94240801000048c7c003000000ff124989c64156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424080100004d8b76104d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424380100004d8b364c8bac2438010000498b55084c8bac24380100004d8b6d004d2bf57118488da4242001000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b8424f0000000ff153b0a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24204d89ee4983fd017d18488da4242801000048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15510900004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec0aa6208000000004d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424184c89f34983fe0175054889c3eb09ff15640800004889c34883fb017508415d4883c408eb12488b0424ff15410800004989c5488d6424104c8b24244d89e64983fc017d18488da4240801000048b800d5650800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424210000004983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f0000004156488b942400010000488b442420ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d896610488d6424104d896e0849c706150000004156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730848c703110000006a016a01488b8424480100004c8bb424400100004c8bac24300100004c8ba4245001000041564155ffb4242001000041544c8b84241801000049b908a06608000000004c8d542420ff159f050000585b6a016a014c8b8424400100004c8b8c24300100004989e2ff1578050000ff3424488b94243801000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424300100004d8b76084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24580100004d8b6d004c8ba42458010000498b5424084c8ba424580100004d8b24244d2bec7118488da4244001000048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424600100004d8b364c8bac2460010000498b55084c8bac24600100004d8b6d004d2bf57118488da4244801000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b842418010000ff15620300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec0aa6208000000004d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175075b4883c408eb12488b0424ff15770200004889c3488d6424104883fb017507584883c410eb0f488b0424ff1550020000488d6424184c8b7424184c89f34983fe0175054889c3eb09ff152a0200004889c34883fb0175035beb12488b0424ff150c0200004889c3488d6424084883fb017507488b5c2418eb0e488b442418ff15e40100004889c34883fb0175074c8b742468eb0e488b442468ff15c10100004989c641564c8bb424300100004d8b364c8bac2430010000498b55084c8bac24300100004d8b6d004d2bf57118488da4241801000048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424084c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004c8b24244d89e64983fc01750e488da424180100004c89e8c22800498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c410010000c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e938d5ffff488d64243048b87850620800000000488b5d08ff23f4000000|@8213,1,@18731,@15136,@15136,@13922,@13923,@13924,@13925,@13926,@13927,@13572,@13718,@13928,@13931,@13932,@13572,@13572,@13933,@13934,@13935,@13572,@12170,@13936,@13937,@13938,@13939,@13921,@15136,@15136|128,0,@788 169,0,@621 393,0,@5288 516,0,@105 659,0,@7825 708,0,@5750 883,0,@105 1028,0,@7827 1077,0,@5750 1261,0,@105 1406,0,@7948 1455,0,@5750 1645,0,@105 1790,0,@8209 1839,0,@5750 2029,0,@105 2189,0,@105 2349,0,@105 2509,0,@105 2669,0,@105 3032,0,@8209 3095,0,@5750 3636,0,@13918 3730,0,@13919 4069,0,@105 4271,0,@7825 4325,0,@5750 4396,0,@105 4566,0,@7827 4629,0,@5750 4700,0,@105 4905,0,@7948 4959,0,@5750 5166,0,@105 5379,0,@105 5598,0,@1263 6084,0,@105 6247,0,@105 6396,0,@7825 6457,0,@5750 6567,0,@105 6730,0,@105 6879,0,@7827 6940,0,@5750 7050,0,@105 7213,0,@105 7362,0,@7948 7423,0,@5750 7533,0,@105 7693,0,@105 7842,0,@8209 7903,0,@5750 8340,0,@105 8553,0,@105 8765,0,@6950 8998,0,@1263 9190,0,@6950 9641,0,@105 9806,0,@8211 10045,0,@105 10258,0,@105 10477,0,@1263 10806,0,@105 11097,0,@828 11142,0,@621 13918:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18728| 13919:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18729|36,0,@105 13920:D3,64|483b65187306ff5558ca09014989c6498d47d8483b45107306ff5550ca08414989c748c740f8040000004c894018488958104c89700848c70001000000c3f400|@8212,1,@18730| 13921:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18750| 13922:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18732| 13923:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18733| 13924:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18734| 13925:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18735| 13926:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18736| 13927:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18737| 13928:D4,664|483b65187306ff5558ca090753415041514152488b10ff7008ff7010488b442450ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424284d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15c70100004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd18b2b409000000004d892e48c70424010000004c89742408e9b2000000488b54246048c7c003000000ff124989c54c8b6424684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bc58b2b409000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b542440488b442468488b5c24604c8b442448ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424284d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e084c8b2c244d892e488d6424084c8b6c24304c8b24244d896500488d6424184d89750848c7c0010000004883c438c22000f400|@8214,1,@18740,@12170|295,0,@13929 383,0,@13930 13929:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18738| 13930:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18739|36,0,@105 13931:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18741| 13932:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18742| 13933:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18743| 13934:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18744| 13935:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18745| 13936:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18746| 13937:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18747| 13938:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18748| 13939:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18749| 13940:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18751,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13941:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8227,1,@18752| 13942:D3,24|483b65187305ff5558cd0148b88846660800000000c3f400|@8230,1,@18753|13,0,@7619 13943:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@742,1,@18790,@13975| 13944:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18755|32,0,@105 87,0,@1823 13945:D12,1832|483b65187306ff5558ca09074d89d64989da504150415641f6c1010f854f0200004d8b31498b59084c8b6424104d8b2c244d89e44d8b5c240849c7c1010000004d8d67f04c3b65107306ff5550ca086e4d89e749c74424f80100000041c64424ff404d890c2441544d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895c24104c8b0c244d89cb4d894c240849b970c2b409000000004d890c244983c5027115488d64242048b8d006620800000000488b5d08ff234d8d47e04c3b45107306ff5550ca087c4d89c749c740f8030000004d89db4d8958104d8960084d89284d8b224e8d1c65010000004983fb01750f49bca0a3660800000000e9b80000004d89d94983c1064c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3de90500000f871e0100004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca886f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e94d890c244c89d9498d7208498d7c240848d1e9f3a44983c3104d89da49d1ea43c60414284d89da49d1ea43c64414013149d1eb43c6441c022941806424ffbf4154498d7fd8483b7d107306ff5550ca08614989ff48c747f8040000004c896f184c8977104c8b7424184c89770849bec0c3b409000000004c89376a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404156415541544153415241514989d94c89c04989f8488b5c24404c8d542430e8c0fdffffff3424ff7424104c8b7424284d8b3648c7c001000000e947030000488d64242048b8f807620800000000488b5d08ff234c8b7424484983c6027115488d64241848b8d006620800000000488b5d08ff234c8b6424104d8b2c244d89e4498b5424084c8b6424404d8b24244d2bec7115488d64241848b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424404983fe017d15488d64242048b83060620800000000488b5d08ff23488b5c24404c8b4c243848c7c0010000004c8b442418ff15250400004989c64156488b542418488b442420ff124989c641564c8b7424404983fe030f85800000004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15d80300004989c6488d6424104c8b6424284d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b24244d896510488d6424084d89750849c745000f000000415e4d892e49c746080100000048c7c0010000004883c410c23000488b442408ff15650300004889c34883fb017508415e4883c408eb12488b0424ff15420300004989c6488d6424104d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b2c244d896c2410488d6424084d8974240849c704240f0000004c8b7424284d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8965204d89751849c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424304983fe017d15488d64242048b83060620800000000488b5d08ff23488b5c243048c7c001000000ff15580200004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f000000415e4d892e49c746080300000048c7c0010000004883c410c2300041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15660100004c8b7424204d89f54c3b354f0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424204156ff15f00000004989c6415648c7c001000000ff15d60000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004c8b7424204d892e49c746080100000048c7c0010000004883c438c23000f400000000000000ffffffffffffff01|@8234,1,@18760,@13951,@13655,@123,@13601,@13952,@13953,@13954,@13955,@13950|151,0,@13946 176,0,@105 250,0,@8232 495,0,@13947 610,0,@117 642,0,@105 694,0,@105 817,0,@731 1256,0,@731 1564,0,@123 1601,0,@7652 13946:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18756,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 13947:D6,480|483b65187305ff5558cd0552504c8b2c244d8b75004d89ed498b55084c8b6c24084d8b6d184d2bf57115488d64241048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70001000000ff124989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c700110000004c8b7424084d8b6e104d89ec41f6c50175784d89e54d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc0375544d89ee4d8b364d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d8975084d8945004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee98600000048c7c3010000004c8b7424084d8b761041f6c60175364d8b66084989dd4983c5027115488d64241048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb017d15488d64241048b83060620800000000488b5d08ff2348c7c001000000ff156e0000004c8b742408498b5e10ff15570000004989c641564c8b742410498b5608488b442408ff124889c34883fb017506584883c410c3584883c410ff2520000000f400000000000000|@8233,1,@18757,@13949,@10958,@13948|49,0,@105 336,0,@105 383,0,@731 13948:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c7461801000000498946104d89460849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e893ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18759|90,0,@105 13949:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18758| 13950:D3,336|483b65187306ff5558ca09035053415041514c8b6c24184d89ee4c3b6c2410750d488d64242048c7c001000000c34c8b6424084d8b2c244d89e4498b5424084c8b24244d8b24244d2bec7115488d64242048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608030000004d892e4156488b4424204883c0027115488d64242848b8d006620800000000488b5d08ff23488b5c24184c8b4424104c8b4c2408e8e6feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f40000|@741,1,@18766|83,0,@105 248,0,@105 13951:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18761|33,0,@105 88,0,@1823 13952:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bdc8e06508000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18762|64,0,@7009 98,0,@105 13953:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18763| 13954:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0e0650800000000c3f4000000|@1032,1,@18764|75,0,@7010 13955:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18765| 13956:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18767| 13957:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@18768|89,0,@4664 13958:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18769| 13959:D6,1032|483b65187306ff5558ca090741514152a8010f85e5000000f6c3010f85da00000041f6c0010f85ce0000004d8b304983fe01750949c7c603000000eb0749c7c6010000004983fe030f85ab0000004c8b28488b40084c8b33488b5b08498b78084d8b6d104d8b6d004d8b6d104d8b65004983fc05756e4d8b65084d8b6d104d8934244c8b34244c89f24d897500488b7424084889d2488d6424104c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c24104c8b4424084c894424084989f84c894c24104989f14c895424184989d24c895c24204c896424284c896c2430e91cffffff488d64241048b8d89b660800000000488b5d08ff23eb00eb00a8010f85f8020000f6c3010f85e802000041f6c0010f85d7020000ff30ff7008ff33ff7308498b0041ff7008488b5c24684c8b442460ff15f70200004989c641564c8b74246041ff364c8b7424684d8b364983c6027115488d64244848b8d006620800000000488b5d08ff234c8b6c24684d8975004c8b7424384d8b2e4c8b7424604d2bf57115488d64244848b8d006620800000000488b5d08ff234983c6014983fe017d15488d64244848b8c012660800000000488b5d08ff234983fe017e61488b5424584983ee027115488d64244848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424204c8930ff12488b5c2450ff150e0200004989c5eb4d4c8b6c24204d89ee4983fd017d15488d64244848b85013660800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424384d8b76104d8b364d8b76104d8b2e4983fd050f85290100004d8b66084d8b6e104c8b7424084d8934244c8b7424784d897500488b442410ff154a0100004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080100000049c70603000000498d77e8483b75107306ff5550ca00404989f748c746f8020000004c8b6c24304c896e084c8936488b442418488b5c24085f488d642408488b5424184c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c24384c8b4424304c894424304989f84c894c24384989f14c895424404989d24c895c24484c896424504c896c24584883c428e926fcffff488d64245048b8d89b660800000000488b5d08ff23488d642408eb05488d642408eb05488d64240858c23000f400|@8238,1,@18770,@13572,@13169,@13960|235,0,@8189 347,0,@105 395,0,@105 426,0,@7248 464,0,@105 564,0,@7251 993,0,@8189 13960:D3,248|483b65187306ff5558ca0901534150a801750d4c8b30ff70084c8b6c2410eb0d488d64241048c7c001000000c341f6c50175474d8b5d004d8b65084d8b134d8b124d8b0e4d3bd175204d8d77f04c3b75107306ff5550ca00084d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0060ebb349c7c6010000004983fe017515488d64241848b868a4660800000000488b5d08ff234d8b36498b5608488b442408ff124989c64156488b442408488b5c24184c8b442410e83dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f40000000000|@742,1,@18771|142,0,@8235 13961:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18772| 13962:D3,168|483b65187306ff5558ca0907483bc3750848c7c001000000c34d8d77c84c3b75107306ff5550ca09074d89f749c746f8060000004d8946284989462049895e184d894e104d89560849bd20d4b409000000004d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e889ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@741,1,@18774|74,0,@13963 100,0,@105 13963:D3,240|483b65187305ff5558cd054989d44d8b7424204d8b6c24284983ed014d03f5711048b8d006620800000000488b5d08ff234d8b6c24184d2bf5711048b8d006620800000000488b5d08ff234983c6014d8b6c24104d2bf5711048b8d006620800000000488b5d08ff234983c6014c8b28488b50084d8b6424084d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@8239,1,@18773|35,0,@105 61,0,@105 91,0,@105 128,0,@105 13964:D5,736|483b65187306ff5558ca0901534150a8017538ff30ff70084c8b4424104c2b4424187115488d64242048b8d006620800000000488b5d08ff234983c00149c7c6010000004c8b6c2408eb0d488d64241048c7c001000000c341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0061ebc44d2bc67115488d64242048b8d006620800000000488b5d08ff234983c00148c7c3010000004c8b74240841f6c60175364d8b66084989dd4983c5027115488d64242048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb03756d4983f8017d15488d64242048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00014d89ef49c745f8020000004d89450849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000e9c00000004883fb017f15488d64242048b8489e660800000000488b5d08ff234883fb017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff15500100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15d00000004989c6eb00415649c7c6010000004c8b6c241041f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983ee01488b5c24204903de7115488d64242848b8d006620800000000488b5d08ff23488b4424084c8b442418e857fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3f4000000|@8240,1,@18775,@12170,@13965|43,0,@105 114,0,@105 160,0,@105 216,0,@105 269,0,@6950 378,0,@8201 405,0,@731 597,0,@105 652,0,@105 13965:D3,240|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c64983ee014c03f0711048b8d006620800000000488b5d08ff234983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e846ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@741,1,@18776|39,0,@105 61,0,@6950 167,0,@105 13966:D3,240|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c64983ee014c03f0711048b8d006620800000000488b5d08ff234983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e846ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@741,1,@18777|39,0,@105 61,0,@6950 167,0,@105 13967:D8,184|483b65187306ff5558ca09035041504151f6c301752e488b03ff73084c8b7424184c89f34983fe017502eb06ff15be0000005b4c8b4424084159488d642410e9bcffffff4c8b7424084c89f34983fe017d15488d64241848b83060620800000000488b5d08ff2348c7c001000000ff15740000004c8b34244983fe03488d64241075164883f801750258c3415d4889c34c89e8ff2547000000ff15390000004889c34883fb01750258c358ff251f000000f4000000000000|@8241,1,@18778,@13969,@13970,@13971,@13972,@13968|89,0,@731 13968:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18783| 13969:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18779| 13970:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b860fe620800000000c3f4000000|@1032,1,@18780|75,0,@1823 13971:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18781| 13972:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@741,1,@18782|32,0,@105 13973:D3,384|483b65187305ff5558cd09a8010f85600100004c8b20488b40084d8b34244d8b364d8b6c24084d8b4c24104d8b4424184883fb03751b41f6c60175054d8b26eb7048b8508a620800000000488b5d08ff2349bca8946208000000004d8d5ff04c3b5d107306ff5550ca09734d89df49c743f80100000041c643ff404d89234d8d67d84c3b65107306ff5550ca096b4d89e749c74424f8040000004d894c24184d895c24104d8974240849c704243300000049beb84b6208000000004d8d5ff04c3b5d107306ff5550ca09734d89df49c743f80100000041c643ff404d893349beb84b6208000000004d8d57f04c3b55107306ff5550ca097b4d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca093f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e4156e8bcfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@18784|67,0,@1028 83,0,@1098 179,0,@578 224,0,@578 13974:D3,152|483b65187305ff5558cd01a80175104c8b28488b400849c7c601000000eb0848c7c001000000c341f6c50175314d8b5d084d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc94156e89bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@742,1,@18785|60,0,@105 13975:D9,1352|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9eb000000909090e9ee000000909090e92f010000909090e93c010000909090e97c010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e95d010000909090e99b000000909090e993000000909090e94e010000909090e94f010000909090e990010000909090e973000000909090e96b000000909090e987010000909090e9c4010000909090e953000000909090e94b000000909090e9ce010000909090e93b000000909090e933000000909090e9bf010000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909048b860fe620800000000c34c8b70084d8b7610498b0648ba50a6660800000000ff154d0400004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70084d8b76084156ff3507040000e9530300004c8b700841ff7608498b4610e871feffffa801752d4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03750658e947feffff488d642408eb05488d642408c3488b4010e931feffff4c8b7008e9bc020000488b4008e91ffeffff4c8b70084d8b7610498b0648ba50a6660800000000ff157c0300004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70104d8b364d89f5e93d0100004c8b7008498b0648ba50a6660800000000ff15200300004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70084d8b364983fe01751048b8d8a6660800000000488b5d08ff23e999000000488b4008e957fdffff4c8b70104d8b364d8b2e4d89ec4983fd0b753b4d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc948b860a7660800000000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb974983fd07750a498b4608ff253f02000048b8f0a7660800000000488b5d08ff2341f6c60175274d8b264d8b6e084983fd017509498b0424e9abfcffff4d89ee483b65187306ff5558ca0040ebd348b8b0ee650800000000488b5d08ff234d8b5d004d89dc4983fb07750d4d8b6d106a016a01e9c00000004983fc0d75194d8b65084d8b24244d89e5483b65187306ff5558ca0060ebc749c7c5010000004983fd03750b48b860fe620800000000c34d8b2e4d89ec4983fd0b753b4d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc948b860a7660800000000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb974983fd07750a498b4608ff252001000048b8f0a7660800000000488b5d08ff234d8b65004983fc0175214d8b65084d8b6d104c8924244c896c2408488d642408415d4983f502e93bffffff4d8b65084d8b24244d89e5483b65187306ff5558ca0060ebbc41f6c60175274d8b264d8b6e084983fd017509498b0424e950fbffff4d89ee483b65187306ff5558ca0040ebd348b8b0ee650800000000488b5d08ff23f64424080175644c8b6c24084d8b75004d89ed41ff7508f64424080175324c8b6c24084d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd03750d498b06e8e4faffff4989c4eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb95584883c408c3f40000000000|@8253,1,@18787,@13978,@13977,@13976,@13976,@1823,@13976|279,0,@1823 301,0,@8242 494,0,@8242 578,0,@8242 653,0,@8244 745,0,@8247 811,0,@8250 872,0,@7074 958,0,@1823 1024,0,@8247 1090,0,@8250 1219,0,@7074 13976:D4,1248|483b65187305ff5558cd0552ff15e60400004989c64d8b264d89e54983fc0975154d8b76084c8b2c244d8b6d104d8b6d004d89f4eb794983fd0b75664d8b6e084d8b76184983fd01754b4d8b76184d8b66084d89e54d8b24244983fc0375294d89ee4d8b76084c8b2c244d8b6d08488d6424084d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c34983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752e4c8b34244d8b76104d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9820200004d89f54983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b1c244d8b5b084d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d184d892ee9f50100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b1c244d8b5b484d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d204d892ee9520100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b1c244d8b5b404d3bda750949c7c303000000eb0749c7c3010000004983fb03753749c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d284d892ee9af000000eb144d89e5483b65187306ff5558ca0060e960ffffff4983fe01750949c7c601000000eb584d8b264d8b6e084d8b6424184d8b5424084d89d34d8b124983fa030f85ca0000004d89dc4d8b5c24084c8b24244d8b6424384d3be3750949c7c403000000eb0749c7c4010000004983fc030f859a00000049c7c6030000004983fe0375254d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d304d892eeb0749c7c6010000004983fe01750d488d64240848c7c001000000c34d8b364d8b76184d8b66084d89e54d8b24244983fc0375294d89ee4d8b76084c8b2c244d8b6d08488d6424084d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c34d89ee483b65187306ff5558ca0040e9f2fefffff40000000000|@8243,1,@18786,@10728| 13977:D4,120|483b65187305ff5558cd01a801755c4c8b30ff7008498b460848ba50a6660800000000ff15670000004989c64983f6024156488b442408e8c4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@742,1,@18789,@13976|27,0,@8242 13978:D4,120|483b65187305ff5558cd01a801755c4c8b30ff7008498b460848ba50a6660800000000ff15670000004989c64983f6024156488b442408e8c4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@742,1,@18788,@13976|27,0,@8242 13979:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@18792,@13980| 13980:D6,104|483b65187305ff5558cd094989de4c8b68104d8b6d00498b4518498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bee0edb409000000004c89336a016a014989e0ff153d000000488d64240858ff1529000000ff251b000000f40000|@8255,1,@18793,@13983,@13982,@10900|59,0,@13981 13981:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@8254,1,@18791| 13982:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@18795| 13983:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@523,1,@18794| 13984:D3,120|483b65187305ff5558cd0953a8017554ff7008488b54240848c7c005000000ff124989c64156488b442408488b5c2410e8cbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@742,1,@18796| 13985:D19,2064|488dbc2448ffffff483b7d187306ff5560ca0d075250534150415141524c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff762849c7c6010000004c8b6c243841f6c50175364d8b5d084d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424204d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1df207000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9620600004d8b364d8b2e4c3b2d8e07000075104d8b76104983fe030f84c2050000eb15488d64245848b87850620800000000488b5d08ff23f6442440010f85f40200004c8b7424404d8b3641ff76206a016a014c8b6c24504d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd90f9b409000000004d892e48c70424010000004c89742408e9b2000000488b54242848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849bcd0f9b409000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24504d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442438ff124989c64156488b542438488b442428ff124989c641564c8b6c24304d89ee4983fd017d0d488da42488000000e9920100004d89f64d89f54c3b356d0500000f8d770100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8d57c04c3b55107303ff55504d89d749c742f8070000004c8b34244d8972304c8b7424784c89f04d8972284c8b7424084d8972204c8bb424880000004d8b6e104d896a184c8b6c24604d896a104d89f64d8b76084d89720849be90fab409000000004d89324d8d77d84c3b75107306ff5550ca01044d89f749c746f8040000004c8b6c24404d896e184c8b6c24484d896e104c8b6c24504d896e084c8b6c24584d892e6a016a014156544883042408488b5c24304c8b8424880000004c8b4c2450ff15e2040000ff34244c8b7424104983fe0375214c8bb424800000004983fe03750e4c8b7424704d8b7668e99b010000e9910100004c8bb424800000004983fe037502eb29488b44247048c7c3010000004c8b8424980000004c8b4c244849ba58aa660800000000ff1572040000eb2d488da4248800000048b8d055620800000000488b5d08ff23488d64245848b888aa660800000000488b5d08ff234c8b7424184d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b7424080f82b9000000488d6424104c8bac24a00000004d8b75104d89ed4d8b6d08ffb42498000000ffb4248000000041564155488b8424b0000000488b5c244049c7c0030000004c8b4c24384c8b942490000000ff15bf0300004889c34883fb0175074c8b742430eb0e488b442430ff159c0300004989c64983fe017509584881c4a0000000c3498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c7001f0000004881c4a0000000c34889c04c8b742428498b5c86fc4c8b8424a00000004c8b8c24800000004c8b9424a8000000ff151c0300004c8b2c244983c5024c892c24483b65187303ff5558e9f0feffffe9d2feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1ddd02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49be2068620800000000eb654d8b364d8b2e4c3b2d7c02000075064d8b7610eb18488da424a800000048b87850620800000000488b5d08ff234983fe030f8560ffffff488b44247048c7c3010000004c8b8424980000004c8b4c244849bae0aa660800000000ff1521020000e932ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dfc01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da424a800000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d8f01000075094d8b7610e940ffffff488da424a800000048b87850620800000000488b5d08ff23ff7424406a01f64424080175384c8b6c24084d8b75004d89ed41ff7508498b4608488b5c2408ff15380100004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e4156f6042401752a4c8b3424498b064d89f641ff7608488b5c2438ff15f4000000415d4c892c24483b65187303ff5558ebd0488d642410e9d2f9ffff41f6c60175454d8b264d8b6e084d8b1c244c3b1db900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4f00000075134d8b76104983fe030f8548f9ffffe9eefeffff488d64245848b87850620800000000488b5d08ff23f400000000ffffffffffffff01|@8276,1,@18807,@15119,@15119,@13904,@13989,@15120,@15120,@10982,@15120,@15120,@13996,@13997,@13998,@10982,@13993,@15119,@15119|105,0,@105 240,0,@788 291,0,@621 383,0,@13986 471,0,@13987 833,0,@13988 1032,0,@8262 1058,0,@657 1079,0,@8263 1485,0,@788 1526,0,@621 1577,0,@8265 1694,0,@828 1742,0,@621 1982,0,@828 2037,0,@621 13986:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18798| 13987:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18799|36,0,@105 13988:D12,1136|488dbc2440ffffff483b7d187305ff5560cd0552504c8b6c24084d8b65304d89e64d8b5424f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64241048b81051620800000000488b5d08ff234d89ed4d89f24d89e44f8b74a6fc4983c6027115488d64241048b8d006620800000000488b5d08ff234d89ed4d89d34d8b4af849c1e10849c1e9074983c9014d89e44d89e24d3be17215488d64241048b80057620800000000488b5d08ff234d89ed4d89d24d89d44f897493fc6a016a016a014d89ed4d8b6d284d89e441f6c5010f857f0300004d8b55004d8b5d084983fc010f85380300004d8b2a4c892c244d8b6a084c896c24084d8b6a284c896c2410ff3424488b442410ff7424184983fe070f8f1c02000048c7c301000000ff15a00300004c8b7424304d8b6e104d89ec4d8b4d004d89e54d8b4424084d89ec4d8b55104d89e5498b5c24204d89ee4d8b76286a016a014156544883042408ff1558030000ff3424ff7424106a016a014c8b742460498b561848b8c086620800000000488b5c24384989e0ff12ff34244c8b7424684d8b6e104d89ec41ff75004d89e541ff7424084d89ee41ff76106a016a01488b442440488b5c24284c8b4424204989e1ff15ea020000ff3424ff74241048ba0866660800000000488b442470488b5c24384c8b4424284c8b4c24304c8b542420ff15b20200004889c34883fb017507488b5c2408eb0e488b442408ff158f0200004889c34883fb0175074c8b742458eb0e488b442458ff156c0200004989c641564c8bb424a80000004d8b6e104d89ec4d8b6d004d89f64d89e34d8b6424084d89f64d89da4d8b5b104d89f64d89d14d8b52184d89f64d89c84d8b49284d89f64c89c74d8b40304d89f6488b7f38498d5fb8483b5d107306ff5550ca807f4989df48c743f80800000048897b384c8943304c894b284c8b4c24084c894b204c8953184c895b104c8963084c892b6a016a014d89f6498b5608488b8424900000004989e0ff12415d488d6424084c8b24244d89e64983fc01750c488da424b00000004c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c4a8000000c3488d64242848c7c301000000ff154f010000ff15410100004c8b7424084d8b76204c8b2c244983ed01488d6424104d03f5711048b8d006620800000000488b5d08ff234983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156ff15a30000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424084c89700848c7000f000000c34d89e24983ea027115488d64242848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e977fcffff488d64242848b8c89d620800000000488b5d08ff23f400|@8257,1,@18800,@13572,@13990,@13989,@13991,@13992,@13722,@13819,@13713,@13989|69,0,@625 110,0,@105 164,0,@664 382,0,@998 471,0,@7831 876,0,@105 898,0,@6950 1076,0,@105 1120,0,@1158 13989:D3,656|483b65187305ff5558cd094989c64889d84d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9eb000000909090e9e4000000909090e9db000000909090e9d3000000909090e9df000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9a6000000909090e9e2000000909090e9e6000000909090e9fa000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9db000000909090e93b000000909090e933000000909090e9d2000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c34d8b76084d8b6e084889c34c89e8e9d1feffff4d8b6e104889c34c89e8e9c2feffff4d8b76084d8b76084d8b2e4d8b75084983fe017502eb2c41f6c60174264d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34d8b7618415650e9b90000004d8b6e0841ff76104889c34c89e8e85ffeffff4889c358e956feffff4d8b7610415650eb554d8b6e084889c34c89e8e93efeffff4d8b7608415650f64424080175324c8b742408498b064d89f641ff7608488b5c2408e817feffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175324c8b742408498b064d89f641ff7608488b5c2408e8d8fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175374c8b6c24084d8b75004d89ed41ff7508498b4618488b5c2408e894fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc2584883c408c3f400000000|@8261,1,@18804| 13990:D3,232|483b65187305ff5558cd01a8010f85c80000004c8b30488b40084d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a8a9660800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@18801|58,0,@6950 205,0,@8258 13991:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18802| 13992:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18803| 13993:D14,1160|483b65187306ff5558ca0907534150415141524c8b74243041ff3649c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156ff35870400006a0350f60424010f85a30000004c8b2c244d8b75004d89ed41ff7508498b46084d8b4e204c8b7424104d89f04983c60241567115488d64245848b8d006620800000000488b5d08ff236a016a016a014c8b94248000000054488b5c2440ff151c040000415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d897500415c415b4c891c244c896424084c896c2410483b65187303ff5558e953ffffff488d642410ff3424488b0424ff15b50300004989c64983fe03750c49c7c603000000e99a0000004c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d7703000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e9360200004d8b364d8b2e4c3b2d1303000075064d8b7610eb15488d64244048b87850620800000000488b5d08ff23415648c7c003000000488b5c2418ff15da0200004889c36a016a016a016a01488b44242849b810ab66080000000049c7c1010000004989e2ff15a8020000415b415c415d415e498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8970184c8968104c8960084c89186a016a016a016a014c8b5424204983fa03750b4889e3ff1552020000eb134c891c244c896424084c896c24104c89742418415c415b415d415a4d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e104d895e084d89264883c4284983fd01750949c7c501000000eb3b41f6c5010f85070100004d8b5d004d89dc4983fb01750949c7c503000000eb1b41f6c5010f85d20000004983fc010f8e9500000049c7c5010000004983f50241554d8d47c84c3b45107306ff5550ca00404d89c749c740f8060000004c8b6c24084d8968284c8b2c244d8968204c8b6c24184d8968184c8b6c24104d8968104c8b6c24204c89eb4d89680849bd180ab509000000004d89284c8b4c24384c89f0ff154a0100004989c64c8b6c24304d8975004c8b34244d897508488d64242848c7c001000000c2100041f6c50175184d8b65084d89e5483b65187306ff5558ca0060e90affffff488d64242048b8e089620800000000488b5d08ff23488d64242048b8508a620800000000488b5d08ff23488d64242048b8508a620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1daa00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d4000000075094d8b7610e96ffdffff488d64244048b87850620800000000488b5d08ff23f400000000000000|@8286,1,@18820,@15136,@15136,@14008,@14019,@14024,@14033,@15136,@15136,@14034,@14035,@8285|63,0,@105 164,0,@105 419,0,@788 460,0,@621 512,0,@8266 845,0,@13995 942,0,@1025 963,0,@1028 984,0,@1028 1093,0,@828 1138,0,@621 13994:D3,160|483b65187305ff5558cd014c8b304983fe01750949c7c501000000eb0941f6c60175664d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080100000049bea89b6208000000004c8930c348b8508a620800000000488b5d08ff23f4000000000000|@8267,1,@18805|125,0,@1145 139,0,@1028 13995:D5,688|483b65187305ff5558cd054883f8010f85040200004c8b72204983fe03751048b860ab660800000000488b5d08ff234c8b72184983fe03752a498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70021000000c34c8b72104d89f44d8b2e4d89e64d8b5424084d89f34d8b66104d89de4d8b4b184d8b5e204c3b2d420200007502eb344d8b75004e8d3475010000004983fe01753c49bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb1a4983fc0175124983fb01750c49bdc0aa620800000000eb5feb004d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30ac6608000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68ac6608000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb1c488b52284883e802711048b8d006620800000000488b5d08ff23ff2241f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff154c0000004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3f400000000000000|@8275,1,@18806,@12170,@123|33,0,@8268 166,0,@123 212,0,@1263 388,0,@1263 433,0,@8272 477,0,@8274 549,0,@105 13996:D5,712|483b65187306ff5558ca0907415141524883fb0175054989c6eb0d488d64241048c7c001000000c341f6c0010f856d0200004d8b204d8b68084983fe010f85270200004d8b74242041564883c0027115488d64241848b8d006620800000000488b5d08ff2348bae85c62080000000048c7c303000000ff156c0200004989c64d8b2e4e8d246d010000004983fc01750f49bdf8ac660800000000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15f10100000f87800100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbf8ac66080000000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49ba10ad660800000000e9b40000004d89f44983c41c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d1a0100000f879c0000004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049bd10ad66080000000048c7c11d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b4424104c8b4424084159488d64241048c7c301000000ff25a0000000488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff234d89f44983ec027115488d64241048b8d006620800000000488b5d08ff234d89e64d89e8483b65187306ff5558ca0141e989fdffff488d64241048b8c89d620800000000488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01|@8279,1,@18808,@10982,@10649|87,0,@105 103,0,@707 146,0,@8277 284,0,@8277 353,0,@8278 510,0,@8278 583,0,@117 604,0,@117 634,0,@105 678,0,@1158 13997:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18809| 13998:D18,2736|488dbc24e8feffff483b7d187306ff5560ca090753415041514152a8010f85480200004c8b30ff700841ff36498b460841ff76284c8b7424504d8b76084c8b6c245041ff75184c8b6c24304d89e84983ed027115488d64244048b8d006620800000000488b5d08ff234c8b4c24284d8b61f849c1e40849c1ec074983cc014d3bec7215488d64244048b81051620800000000488b5d08ff234d89c94f8b6ca9fc4983fd077f66488d6424184d89c04983c0027115488d64242848b8d006620800000000488b5d08ff2358488b5c24184d89c95f488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c895424184989fa4c895c24204c896424284c896c24304883c410e9f4feffff4d8b2e4d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca01604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849bed81bb509000000004d8934244983c5027115488d64244848b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89db4d895e104d8966084d892e415649c7c5030000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e0849bd281db509000000004d892e41564c8b74247841ff364c8bb4248000000041ff76204c8bb4248800000041ff76284c8bb4249000000041ff763848c7c301000000ff15df0800004989c6415649c7c6010000004c8b2c24eb0f488d64242048c7c001000000c2200041f6c50175394d8b5d084d89f44983c4027118488da4248800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b34244c89f34983fe017d18488da4249000000048b83060620800000000488b5d08ff2348c7c001000000ff15430800004989c64156488b442410488b5c2440ff15260800004989c64156488b0424488b5c2408ff150a0800004989c641564c8b7424204c8b6c24084983fe010f85780400004983fd010f85560400006a016a01ff742440544883042408488b442440488b5c24584c8b4424784c8b4c24604c8b542468ff15b2070000ff3424ff7424106a016a01488b9424e800000048b8c086620800000000488b9c24a80000004989e0ff12ff34246a016a01488b442428488b5c24104c8b8424880000004989e1ff155e070000ff3424ff74241048ba0866660800000000488b8424c8000000488b5c24204c8b8424b00000004c8b8c24980000004c8b9424a0000000ff151a0700004889c34883fb017507488b5c2408eb0e488b442408ff15f70600004889c34883fb017507488b5c2440eb0e488b442440ff15d40600004889c34883fb0175074c8b742458eb0e488b442458ff15b10600004989c64156498d5fb8483b5d107303ff55504989df48c743f8080000004c8bb424880000004c89733848c74330010000004c8bb424900000004c8973284c8b7424084c8973204c8bb424c80000004c8973184c8bb424a80000004c8973104c8bb424b80000004c8973084c8bb424a00000004c89336a016a01488b942420010000488b8424e80000004989e0ff12415c488d6424084c8b34244d89f54983fe01750a488d6424784d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c47041564c8ba424880000004d89e64983ec027118488da4249800000048b8d006620800000000488b5d08ff234983ec014c8bac24900000004d03ec41557118488da424a000000048b8d006620800000000488b5d08ff234c8b5c24604d8b2b4e8d246d010000004983fc01750f49bd1819620800000000e9a00000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0ddc0400000f87a50100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e14d89db498d7308498d7d0848d1e9f3a44983c41049d1ec43c64425002f418065ffbf415548bae85c6208000000004c89f048c7c303000000ff15900400004989c44c8b14244d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd01750d488d6424084d89e6e9c00000004983fb01750d4d89d6488d642408e9ad0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05d60300000f878f0000004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208488d642408498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424604d8b3648c7c001000000e9c4000000488da424a800000048b8f807620800000000488b5d08ff23488da424a000000048b8f807620800000000488b5d08ff23488da424a800000048b868bd630800000000488b5d08ff234d8b0e4d8b660841f6c50175574d8b55004d8b5d084d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424584d89114d89dd4d89e6483b65187306ff5558ca0060e932fbffff488da424a800000048b8c0ad660800000000488b5d08ff23488da424a800000048b868bd630800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff156d0200004c8b7424504d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424084d89f54c3b353d0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424084156ff15de0100004989c641564c8b7424304c89f34983fe017d18488da424c000000048b83060620800000000488b5d08ff2348c7c001000000ff159e0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c7060300000041564c8b8424a00000004983c0027118488da424b000000048b8d006620800000000488b5d08ff234c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004156415541544153488b8424a8000000488b9c24c80000004c8b8c24b80000004c8b9424b0000000e89ef5ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4a8000000c22000f40000000000ffffffffffffff01ffffffffffffff01|@8284,1,@18812,@14002,@11908,@123,@13601,@10649,@14003,@14004,@14005,@13722,@13819,@13713,@14006,@14007,@14001,@13989|91,0,@105 138,0,@625 187,0,@105 369,0,@13999 394,0,@105 531,0,@14000 663,0,@105 722,0,@731 891,0,@998 955,0,@7831 1342,0,@105 1385,0,@105 1423,0,@202 1600,0,@707 1897,0,@117 1921,0,@117 1945,0,@3335 2045,0,@8281 2069,0,@3335 2230,0,@123 2267,0,@7652 2319,0,@731 2567,0,@105 13999:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18810,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14000:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8280,1,@18811|42,0,@105 14001:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@741,1,@18819|32,0,@6950 137,0,@105 14002:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18813|32,0,@105 87,0,@1823 14003:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18814| 14004:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18815| 14005:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18816| 14006:D3,192|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8286d640800000000488b5d08ff234c8b28488b4008f6c301756f4c8b23488b5b084d8d77d84c3b75107306ff5550ca09304d89f749c746f8040000004d8966184d896e1049c746080100000049c706030000004156e885ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8286d640800000000488b5d08ff23f40000000000|@4547,1,@18817|33,0,@4545 172,0,@4545 14007:D3,120|483b65187305ff5558cd09a801755b488b4008ff334c8b334983c6027115488d64240848b8d006620800000000488b5d08ff234c8933e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18818|37,0,@105 14008:D4,48|483b65187306ff5558ca09034d89c24d8b69084d8b61184154ff74240849c7c0010000004c896c2410ff2519000000f4|@8290,1,@18821,@14009| 14009:D6,1056|483b65187306ff5558ca090753415041514152ff30ff7008ff70104c8b6c24204d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424384d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244848b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424110000004c8b6c241841f6c501754e4d8b55004d8b5d084d8b4a104d8b114983fa0575244d8b51084d8b49104d89324c8b5424084d89114d89dd483b65187306ff5558ca0070ebc1488d64244848b8c8ae660800000000488b5d08ff234c8b7424204d8b1e4d89dd4983fb0775294d89f6498b4608488b5c24404c8b4424384c8b4c24304c8b542428ff15de0200004989c5e9420100004d89f64d89eb4983fd0375514d89f64d8b5e084d89f6498b5e104d89f6498b46184c8b7424584c8b6c2450415641554153ff742458ff742458415449b820af6608000000004c8b4c24604c8b542458ff15790200004989c5e9e50000004d89f64d89dd4983fb0975224d89f64d89f541ff76084d89ed4d8b75104d89ed4d8b6d184c8b642440e9290100004d89f64983fd01757e4d89f6498b46084d89f64d8b6e104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004c8b6c24384d8968084d89304c8b7424584c8b6c245041564155488b5c24504c8b4c24404c8b542438e881fdffff4989c5eb19488b542428f644241001750f4c8b742410498b06ff124989c5eb15488d64244848b8508a620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084983fe01750b488d6424404c89e8c21000488d642440498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c2100041f6c40175424d8b14244d8b5c24084d8b0a4d3bf175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89dc483b65187306ff5558ca0070ebb849c7c6010000004983fe017515488d64245048b808d5620800000000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15850000004889c3eb32498d5fd8483b5d107306ff5550ca00604989df48c743f80400000048c74318010000004c896b104c89730848c703170000004c8b7424604c8b6c245841564155488b4424104c8b4424504c8b4c24484c8b542440e8effbffff4989c5488d642408e996fefffff400|@8294,1,@18822,@11046,@14011,@14010|129,0,@6950 298,0,@8287 431,0,@8289 678,0,@1028 898,0,@1556 14010:D5,336|483b65187306ff5558ca090753415041514152a8010f85180100004c8b30ff700841ff3641ff7608488b442408488b1c244c8b4424304c8b4c24284c8b542420ff152a0100004989c64156488b542420488b442408ff124989c44c8b34244d89f54983fe01750a488d6424104d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c4084156f6442410017406584883c430c3488b442408488b5c24304c8b4424284c8b4c2420ff15980000004989c64156488b442418488b5c24384c8b4424304c8b4c24284c8b542420e80dffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d64244048c7000b000000c3488d64242048b868af660800000000488b5d08ff23f400000000000000|@8310,1,@18829,@14018,@14017|314,0,@8291 14011:D5,512|483b65187306ff5558ca0907534150415141524883f8017544488b542410488b442440488b5c24384c8b4424304c8b4c2408415a488d6424104c8b6c24384c8b6424304c896424304c896c24384c8b7424084c897424284883c428ff224c8b30ff7008498b064989c44d89e54d8b24244983fc010f85840000004c8b6424204983fc037579498b4508498b5d1041ff7608f64424080174514c8b4424384c8b4c24604c8b542458ff15730100004889c3488b542420584c8b4424384c8b4c24104c8b5424084c8b6c24584c8b6424504c896424504c896c24584c8b7424284c897424484883c448ff22488d64243048b828b0660800000000488b5d08ff2341ff76086a016a01488b5c24484c8b4424284989e1ff15ff000000ff3424488b5c2410488b5424384c8b4424584c8b7424784c8b6c247041564155488b4424284c8b4c24404c8b542438ff124989c64156488b5c24484883eb027115488d64245048b8d006620800000000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c2458415641554154415341524151488b4424584c8b4424704c8b4c24684c8b542460e84bfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c7000b0000004883c440c23000f4|@8302,1,@18824,@14014,@14012|240,0,@8295 353,0,@105 14012:D7,408|483b65187306ff5558ca09074150415141524c8b70084983fe01756d488d6424104c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c305000000ff257e010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010050000004d89f64c897008488d64240848c70017000000c341f6c6010f85eb0000004d8b364983fe037510488d64241848b8c0aa620800000000c34d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b2c244d896e104989460849bd982cb509000000004d892e415648c7c001000000ff15d200000048ba2814660800000000488b5c24104c8b4424084c8b0c24ff15ac0000004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff15710000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c3488d64241848b8e0b0660800000000488b5d08ff23f400000000|@8309,1,@18828,@13572,@13570,@13668,@11046|163,0,@1263 212,0,@14013 240,0,@7256 389,0,@8299 14013:D5,256|483b65187305ff5558cd054989c549bee80a110a000000004d8b1e49bef80a110a000000004d8b2649be080b110a000000004d8b0e49be180b110a000000004d8b164d8d77d04c3b75107306ff5550ca043e4d89f749c746f8050000004d894e204d8956184d895e104d89660849bcd8086208000000004d8926488b42084c8b421041564c89eb49c7c10100000049baa811660800000000ff15820000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c305000000ff2557000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010050000004c89700848c70017000000c3f400000000000000|@8298,1,@18823,@11046,@13566|16,0,@15266 29,0,@15267 42,0,@15268 55,0,@15269 111,0,@123 144,0,@7244 14014:D9,688|483b65187306ff5558ca09035341514c8b284d89ee4983fd050f85cc000000ff70084c8b70104983fe01750c49bdc0aa620800000000eb324d8b364d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9e90000004983fe037572ff700841ff700841ff7018488b44241048c7c3010000004c8b4424204c8b4c24084c8b1424ff15d40100004989c64156488b44241848c7c3010000004c8b4424284c8b4c24104c8b542408ff15a60100004989c64c8b6c24204c8b24244d896500488d6424304d89750848c7c001000000c3ff7008ff701041ff700841ff7018488b442418488b5c24104c8b4424284c8b4c24084c8b1424ff15510100004989c64156488b442420488b5c24184c8b4424304c8b4c24104c8b542408ff15250100004989c64c8b6c24284c8b24244d896500488d6424384d89750848c7c001000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b50000004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff157c0000004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b2c244d896c2410488d6424084d8974240849c704240f000000415d49bec0aa6208000000004d8965004d89750848c7c0010000004883c408c3f4|@8307,1,@18826,@13572,@12170,@14012,@14015,@14012,@14015|46,0,@1263 659,0,@1263 14015:D8,608|483b65187306ff5558ca0907504150415141524c8b6c24184d8b75084983fe010f85430100004c8b6c24104d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff154c0200004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415649bee80a110a000000004d8b2649bef80a110a000000004d8b2e49be080b110a000000004d8b1649be180b110a000000004d8b1e4d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8086208000000004d892e4156488b442428488b5c24184c8b44241049c7c10100000049baa811660800000000ff15700100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd789f6208000000004c8968184c8970104c8b34244c897008488d64241848c700070000004883c410c341f6c6010f85d60000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d89ed4d896e0849bd8833b509000000004d892e415648c7c001000000ff15cf00000048ba2814660800000000488b5c24104c8b4424084c8b0c24ff15a90000004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff156e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424304c89700848c7000f000000c3488d64242048b8e8b1660800000000488b5d08ff23f400|@8308,1,@18827,@13572,@13570,@13668,@13566,@11046|142,0,@15266 155,0,@15267 168,0,@15268 181,0,@15269 237,0,@123 274,0,@7244 320,0,@1170 415,0,@14016 443,0,@7256 592,0,@8304 14016:D5,256|483b65187305ff5558cd054989c549bee80a110a000000004d8b1e49bef80a110a000000004d8b2649be080b110a000000004d8b0e49be180b110a000000004d8b164d8d77d04c3b75107306ff5550ca043e4d89f749c746f8050000004d894e204d8956184d895e104d89660849bcd8086208000000004d8926488b42084c8b421041564c89eb49c7c10100000049baa811660800000000ff15820000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c301000000ff2557000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70017000000c3f400000000000000|@8303,1,@18825,@11046,@13566|16,0,@15266 29,0,@15267 42,0,@15268 55,0,@15269 111,0,@123 144,0,@7244 14017:D5,880|483b65187306ff5558ca090753415041514152a8010f85d50000004c8b30ff700841ff3641ff76084c8b6c24184d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424304d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244848b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c700110000004c8b6c2410eb0d488d64242048c7c001000000c341f6c501754e4d8b5d004d8b65084d8b53104d8b1a4983fb0575244d8b5a084d8b52104d89334c8b5c24084d891a4d89e5483b65187306ff5558ca0061ebc1488d64244848b8c8ae660800000000488b5d08ff234c8b7424184d8b2e4d89ec4983fd0375444d89f6498b46086a016a014c89c34c8b4424384989e1ff1512020000488d6424084158488b442420488b5c24404c8b4c24304c8b542428e862feffff4989c6e9b20000004d89f64d89e54983fc0575184d89f54d8b75084d89ed4d8b6d104c8b642430e9be0000004d89f64983fd0175694d89f64d8b6e084d8d77e84c3b75107306ff5550ca00214d89f749c746f8020000004d8946084d892e4d8d4fe84c3b4d107306ff5550ca00414d89cf49c741f8020000004c8b6c24304d8969084d8931488b442420488b5c24404c8b542428e8c9fdffff4989c6eb1c488b442420488b5c24404c8b4c24304c8b542428e8abfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c341f6c40175424d8b14244d8b5c24084d8b0a4d3bf175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89dc483b65187306ff5558ca0070ebb849c7c6010000004983fe017515488d64244848b808d5620800000000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15730000004989c0eb324d8d47d84c3b45107306ff5550ca00604d89c749c740f80400000049c74018010000004d8968104d89700849c70017000000488b442420488b5c24404c8b4c24304c8b542428e89bfcffff4989c6e9ebfefffff40000|@8312,1,@18831,@11046,@14014|142,0,@6950 323,0,@8287 740,0,@1556 14018:D5,1168|483b65187306ff5558ca09035341504151a8010f85900300004c8b30ff70084d8b364d8b2e4d89ec4983fd030f85a601000041ff76084c8b742410498b561048c7c003000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424204d8966184d896e1049c746080100000049c7060300000041564983fd017d15488d64243048b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730848c703110000006a016a01488b4424184c8b4424284989e1ff15ae030000ff3424488b5c24104d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b6c24184d892e4156488b4424304c8b4424404c8b4c2438e8b6feffff4989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc0aa6208000000004d8965184d8975104c8b7424084d89750849c745000b0000004c8b24244d89e64983fc017509488d6424504c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c448c34d89e54983fc0575124d8b66084d8b6e104c8b742410e9c60100004983fd010f859501000041ff76084c8b742410498b561048c7c003000000ff124989c54d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b7424204c89f34d897424184d896c241049c74424080100000049c70424030000004983fd017d15488d64242848b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d892641564d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e084c8b6c24084d892e4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424104c8b4c2418e8befcffff4989c54c8b24244d89e64983fc017509488d6424304c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c428c358488b5c24104c8b4424084159488d642410e957fcffff488d64241848b8a0aa620800000000c341f6c60175404d8b164d8b5e084d8b0a4d3be175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89de483b65187306ff5558ca0070ebba49c7c6010000004983fe017515488d64242048b808d5620800000000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15640000004889c3eb32498d5fd8483b5d107306ff5550ca00604989df48c743f80400000048c74318010000004c896b104c89730848c70317000000584c8b4424084159488d642410e973fbfffff40000|@8311,1,@18830,@11046,@14014|145,0,@6950 362,0,@1263 610,0,@6950 944,0,@1262 1043,0,@1556 14019:D4,192|483b65187305ff5558cd0953ff7008ff70104889c3488b0424ff15b90000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704240700000049c7c6010000004c8b2c2441f6c50175364d8b55084d89f34983c3027115488d64241848b8d006620800000000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc44c8b6c24104d8965004c8b6424084d8965084c8b24244d896510488d6424184d89751848c7c001000000c3f40000|@8313,1,@18832,@14020|112,0,@105 14020:D6,344|483b65187305ff5558cd0950534c8b7424084d89f54983fe01750d488d64241048c7c001000000c34d89ee41f6c5010f850c0100004d89f641ff36488b0424488b5c2408ff15360100004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b1c244d89de4d895d084d8965004155498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004d89f64c8933488b442418ff15cb000000488b5c2410e849ffffff4989c64c8b6c24084983fd01754c498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8b2c244c892b488d6424084883fb017509488d6424184c89f0c3488d6424184c89f0ff255f000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c418c3488d64241048b8508a620800000000488b5d08ff23f400|@8314,1,@18833,@14022,@14023,@14021|328,0,@1028 14021:D3,1320|483b65187305ff5558cd094c8b2b4d8b65004d89e64983fc07750d4d8b75084c8b6308e9460400004d89f44983fe0375154d8b75084d8b6d184c8b63084d8b5e10e9990100004d89e64983fc090f859a0000004d8b75084d8b55104d8b6d184c8b5b084d8d67e04c3b65107306ff5550ca016c4d89e749c74424f8030000004d896c24104d8954240849c70424050000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d89650041554c89f3e842ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fe010f85910000004d8b75084d8b6d104c8b5b084d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d89650041554c89f3e8a7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c8b6b084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40a06208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fb01750949c7c301000000eb3441f6c3010f85d60000004d8b0b4d89ca493bc1750949c7c303000000eb1641f6c3010f85a8000000493bc27d7549c7c3010000004983fb0375664d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bc40a06208000000004d89650041554c89f3e8a1fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3eb4e41f6c30175184d8b53084d89d3483b65187306ff5558ca0178e931ffffff48b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2341f6c50175154d8b75004d8b5d084d8b56084d8b5210e9a700000049c7c6010000004983fe01751048b808d5620800000000488b5d08ff234d8b2e4d8b7500498b5d084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e88ffcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fa01750949c7c201000000eb3041f6c2010f85a50000004d8b024d89c1493bc0750949c7c203000000eb1241f6c201757b493bc17d4849c7c2010000004983fa0375274d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d8975004d89eee9f4feffff4d89dd483b65187306ff5558ca0130e9befeffff41f6c20175184d8b4a084d89ca483b65187306ff5558ca017ce962ffffff48b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2341f6c60175414d8b1e4d8b6e084d8b5308493bc275204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0150ebb949c7c6010000004983fe01751048b808d5620800000000488b5d08ff234d8b364d8b2e4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc40a06208000000004d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@8316,1,@18836|429,0,@1178 585,0,@1178 688,0,@1025 704,0,@1028 720,0,@1028 776,0,@1556 1088,0,@1025 1104,0,@1028 1120,0,@1028 1220,0,@1556 1273,0,@1178 14022:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18834| 14023:D3,344|483b65187305ff5558cd094883f801750848c7c001000000c34883fb017501c3a8010f851e0100004c8b304d89f5f6c3010f85ff0000004c8b1b4d89dc4d3bf37536a8017522488b4008f6c3017509488b5b08e9a8ffffff48b8e089620800000000488b5d08ff2348b8e089620800000000488b5d08ff23a8010f85a60000004d89eef6c3010f858a0000004d3bec7d67a80175534156a8017538488b4008e85cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff23f6c3017509488b5b08e9fafeffff48b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff23f400|@8315,1,@18835|90,0,@1025 106,0,@1025 218,0,@1025 234,0,@1028 264,0,@1025 280,0,@1028 296,0,@1028 312,0,@1028 328,0,@1028 14024:D16,2296|488dbc2450ffffff483b7d187306ff5560ca090753415041514152ff30ff7008488b4010488b5c2428ff15410900004989c641566a016a016a016a014c8b6c24504d89ee4983fd017505e9eb0100004d89f64c8b6c24204d3bf5750949c7c603000000eb4d41f6c601754041f6c50175314d8b164d8b66084d8b4d004d8b5d084d3bd175144d89dd4d89e6483b65187306ff5558ca0060ebbe49c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f847e0100004c8b6c24284d8b65004d89e64983fc09755c488b542448498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c8970084c8b7424204c8930ff124989c64d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418e9eb0200004d89ed4d89f44983fe0575104d89ed4d8b750841566a01e91c0600004d89ed4d89e64983fc0375104d89ed4d8b750841566a01e9630400004d89ed4983fe0175174d89ed4d8b75084d89ed41ff751041566a01e9980200004d89ed4d89ee41ff75084d89f64d8b66084d89e541f6c401756b4d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc03754a488d6424084d89ee498b066a016a016a016a01488b5c24704c8b4424684c8b4c24604989e2e819feffff415b415c415d415e4c891c244c896424084c896c24104c89742418e90e0200004c8b7424484983c60241567115488d64246848b8d006620800000000488b5d08ff2349c7c6010000004c8b6c2408e9b6000000488b542448498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c8970084c8b7424504c8930ff124989c64d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418ff3424488b5c2410ff742418ff7424284883fb0175074c8b742448eb0e488b442448ff15af0600004989c64c8b6c24504c8b6424104d8965004d8975084c8b7424084d8975104c8b34244d897518488d64241848c7c0010000004883c458c341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b1c244883eb027115488d64247048b8d006620800000000488b5d08ff2348c7c001000000ff15060600004989c06a016a016a016a01ff742420ff742438ffb42488000000488b8424a0000000488b5c24404c8d4c24184c8b942498000000ff15c4050000415c415a415d415e488d6424184d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8973184d896b104d8953084d89234d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004c8b5424404d895424104d895c240849c70424010000004c89242448c7442408010000004c896c24104c89742418e977fefffff6442408010f854a0100004c8b6c24084d8b75004d89ed41ff7508498b0641ff760841ff761041ff7618488b9c2488000000ff15fe0400004883f801750f488d6424184c8b642408e9ef000000488b5c2458ff15d60400004889c36a016a016a016a01488b4424284c8b8424a00000004c8b8c24980000004989e2e866fbffff415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d8934244d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424104d8975104c8b34244d897508488d64241849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9abfeffffff3424488b542468498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424604c8970084c8b7424404c8930ff124889c3488b04244c8b4424184c8d4c2420ff1585030000488d642420e950fefffff6442408010f853a0100004c8b6c24084d8b75004d89ed41ff7508498b0641ff761041ff7618488b5c2478ff15420300004883f801750f488d6424104c8b642408e9e6000000488b5c2448ff151a0300004889c36a016a016a016a01488b4424284c8b8424900000004c8b8c24880000004989e2e8c2f9ffff415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64241049c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9bbfeffffff3424488b542460498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c8970084c8b7424384c8930ff124889c3488b042449c7c0010000004c8d4c2418ff15d0010000488d642418e9b3fcfffff6442408010f852d0100004c8b6c24084d8b75004d89ed41ff750841ff36498b460841ff7610488b5c2478ff158d0100004883f801750f488d6424104c8b642408e9d90000004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c706050000004156ff742468488b5c2448ff15240100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24684c8968084c8930488b1424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9c8feffffff3424488b542460498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c8970084c8b7424384c8930ff124889c3488b042449c7c0010000004c8d4c2418ff1528000000488d642418e923fbfffff40000000000|@8317,1,@18837,@14026,@14027,@14025,@14026,@14027,@14025,@14026,@14027,@14025,@14028,@14031,@14032,@14025|539,0,@105 778,0,@105 831,0,@105 14025:D3,352|483b65187305ff5558cd094883f8017505e93e0100004883fb010f8434010000a8010f851c0100004c8b204d89e6f6c3010f85fd0000004c8b1b4d89dd4d3be30f8585000000a80175714156a8017556488b4008f6c3017538488b5b08e89effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e089620800000000488b5d08ff23488d64240848b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff23a8017555f6c30175404d3bf57d1da8017509488b4008e91affffff48b8e089620800000000488b5d08ff23f6c3017509488b5b08e9fcfeffff48b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348c7c001000000c3f4000000|@8326,1,@18845|152,0,@1025 173,0,@1025 189,0,@1028 232,0,@1025 262,0,@1025 278,0,@1028 294,0,@1028 310,0,@1028 326,0,@1028 14026:D5,888|483b65187306ff5558ca090350534150415149c7c6010000004c8b6c241841f6c50175364d8b5d084d89f44983c4027115488d64242048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc46a016a014c3b742418751c49beb09f6208000000004d8b2e4c892c244d8b76084c89742408eb194c8b7424204d8b6e104d89f64d8b76184c892c244c897424084c8b3424ff7424084c8b6c24284d8b6d104c8b64243041f6c40175194d8b14244d8b5c24084d8b52084d8b52104d89e9e92502000049c7c5030000004983fd037537488d642418415d4c8b7424084d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c418c3ff7424304156f644240801753c4c8b6c24084d8b75004d89ed41ff75084d8b7608498b5e10488b442408ff15550200004989c4415d4c8924244c896c2408483b65187303ff5558ebbd415c4c8b6c24384883c408415e4883c41041f6c50175424d8b55004d8b5d084d8b52084d8b52184983ea014d03d67115488d64242048b8d006620800000000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebb84d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24184d896b184c8b6c24084d896b104c8b6c24104d896b0849c70303000000498d47d8483b45107306ff5550ca00584989c748c740f8040000004c8970184c89601048c74008010000004c89184983fe037e0c49c7c5010000004d89e2eb22415d4d895d0049c74508010000004d8965104d89751848c7c0010000004883c418c341f6c20175364d8b42084d89e94983c1027115488d64242048b8d006620800000000488b5d08ff234d89c24d89cd483b65187306ff5558ca017cebc44983ed014d6bed027115488d64242048b8d006620800000000488b5d08ff234983ed017115488d64242048b8d006620800000000488b5d08ff234d3bf57c0949c7c503000000eb0749c7c5010000004983fd030f8549ffffff5b4883c418ff259c0000004d3bd1750949c7c203000000eb4c41f6c201753f41f6c1017530498b324d8b4208498b11498b7908483bf275144989f94d89c2483b65187306ff5558ca007eebbf49c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375144d89dc483b65187306ff5558ca0070e948fdffff49c7c501000000e962fdfffff4000000|@8318,1,@18838,@14019,@14027|56,0,@105 103,0,@1172 403,0,@105 622,0,@105 673,0,@105 700,0,@105 14027:D3,504|483b65187305ff5558cd094883f80175044889d8c34883fb017501c3a8010f85bf0100004c8b304d89f4f6c3010f85a00100004c8b2b4d89eb4d3bf50f8585000000a80175714154a8017556488b4008f6c3017538488b5b08e8a2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e089620800000000488b5d08ff23488d64240848b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff23a8010f85f40000004d89e5f6c3010f85d80000004d89de4d3be37d67a80175534155a8017538488b4008e80affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff23f6c30175544156f6c3017538488b5b08e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e089620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff2348b8508a620800000000488b5d08ff23f400000000|@8319,1,@18839|148,0,@1025 169,0,@1025 185,0,@1028 300,0,@1025 316,0,@1028 405,0,@1025 421,0,@1028 437,0,@1028 453,0,@1028 469,0,@1028 485,0,@1028 14028:D5,1200|483b65187306ff5558ca090750534150415141524c8b7424104983fe017502eb164c8b7424204983fe01740b6a016a016a01e981000000ff742408488b542408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c8970084c8b7424284c8930ff124989c64d8b2e4c8b1c244d89dc4d892b4d8b6e084d89e44d89e34d896c24084d8b66104d89db4d89dd4d8963104d8b76184d89ed4d897518488d64241848c7c0010000004883c418c218004c8b6c24584c8b7424104d3bf5751b488d642408415e4883c40841564c8b7424404c8b2c24e90a0200004c8b7424284983fe01750949c7c601000000eb3f41f6c6010f85d70000004d8b164d89d44c8b5c24104d89dd4d3bda750949c7c603000000eb1941f6c6010f859c0000004d89ed4d3bec7d6149c7c6010000004983fe03750f4c8b7424504c8b6c2410e9a20000004c8b6c24104983c5027115488d64244048b8d006620800000000488b5d08ff234c8b6424084c8b1c244c891c244c896424084c896c2410483b65187303ff5558e929ffffff41f6c60175184d8b6e084d89ee483b65187306ff5558ca0040e93affffff488d64244048b8e089620800000000488b5d08ff23488d64244048b8508a620800000000488b5d08ff23488d64244048b8508a620800000000488b5d08ff2341f6c6010f85e1000000498b064d8b66084983fd010f859b000000488b5c2438ff15be0200004989c34c3b1c247e424c8b6c24104d89ec4983c5027115488d64244048b8d006620800000000488b5d08ff234d89e44c891c244c896424084c896c2410483b65187303ff5558e95bfeffff4c8b6c24104983c5027115488d64244048b8d006620800000000488b5d08ff234c8b6424084c8b1c244c891c244c896424084c896c2410483b65187303ff5558e916feffff4d89eb4983eb027115488d64244048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e915ffffff488d64244048b8c89d620800000000488b5d08ff2341f6c6010f859e0100004d8b1e4d8b66084983fd010f85580100004d89de4156498d5fe8483b5d107303ff55504989df48c743f80200000048c74308010000004c8b7424084c8933488b442420ff15890100004989c64c8b6c24504c8b6424484c8b5c24404d8d47c04c3b45107306ff5550ca00784d89c749c740f8070000004d8958304d8960284d8968204c8b6c24104d8968184d89701049be28b56608000000004d89700849bed85cb509000000004d89306a016a016a016a0148ba80b5660800000000488b442420488b5c24504c8b4c24484989e2ff12415b415a415c415e488d6424084d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8975184d8965104d8955084d895d004c8b5424384d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004c8b0c244d894b18488d6424104d8953104d896b0849c70309000000415d488d6424184d895d0049c74508010000004d8965104d89751848c7c001000000c218004d89eb4983eb027115488d64243048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e958feffff488d64243048b8c89d620800000000488b5d08ff23f4000000000000|@8323,1,@18841,@14023,@14030|348,0,@105 436,0,@1025 457,0,@1028 478,0,@1028 560,0,@105 623,0,@105 690,0,@105 734,0,@1158 903,0,@8320 917,0,@14029 938,0,@8322 1135,0,@105 1179,0,@1158 14029:D3,128|483b65187305ff5558cd054989d44989c66a016a016a016a01498b542408498b06498b5e084d8b4424104d8b5424184d8b7424204d8b6c24284d8b6424304156415541544c8d4c2418ff12415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400|@8321,1,@18840| 14030:D4,568|483b65187305ff5558cd0953ff70084c8b34244d8b2e4983fd0775154d89f64d8b7608488d64240841566a01e9b7010000488b4010488b5c2408ff15100200004989c64983fe01750949c7c503000000eb0749c7c5010000004983fd03741f488d64241041f6c6017504498b06c348b8508a620800000000488b5d08ff234c8b34244d8b2e4d89ec4983fd05751c4d89f64d8b7608488d64240848c7c0010000004883c408e9f00000004d89f64d89e54983fc0375194d89f64d8b7608488d64240848c7c0010000004883c408eb7d4d89f64983fd0175194d89f64d8b7608488d64240848c7c0010000004883c408eb0d488d64241048c7c001000000c341f6c60175314d8b66084989c54983c502711048b8d006620800000000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d006620800000000488b5d08ff23c341f6c60175314d8b66084989c54983c502711048b8d006620800000000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d006620800000000488b5d08ff23c341f6c60175314d8b66084989c54983c502711048b8d006620800000000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d006620800000000488b5d08ff23c3f64424080175404c8b742408498b064d89f641ff7608488b5c2418e8f8fdffff4989c44c3b6424087e02eb054c8b642408415d4c8924244c896c2408483b65187303ff5558ebb9584883c410c3f40000|@8324,1,@18842,@14025|112,0,@1028 275,0,@105 317,0,@105 353,0,@105 395,0,@105 431,0,@105 473,0,@105 14031:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf37e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@8325,1,@18843|53,0,@105 14032:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18844| 14033:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf37e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@8325,1,@18846|53,0,@105 14034:D3,376|483b65187305ff5558cd014c8b70084d8b2e4d89ec4983fd03750d4d8b760841566a01e9cc0000004d89e54983fc01750a4d8b760841566a01eb664983fd07750a4d8b760841566a01eb0848c7c001000000c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750949c7c403000000eb08e87effffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175464c8b6c24084d8b75004d89ed41ff7508498b46104c8b7424084983fe03750949c7c403000000eb08e82bffffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb3584883c408c3f64424080175724c8b7424084d8b2e4d89f641ff76084d8b7508498b45104c8b6c24084983fd03750949c7c403000000eb314983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe03740949c7c403000000eb08e8acfeffff4989c4415d4c8924244c896c2408483b65187303ff5558eb87584883c408c3f400000000|@8327,1,@18847| 14035:D26,3648|483b65187306ff5558ca090750534150415141524c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9f2000000909090e9f4000000909090e9b5020000909090e9b4020000909090e9b3020000909090e9d8020000909090e9d7020000909090e9d6020000909090e9d5020000909090e9d4020000909090e9d3020000909090e9d2020000909090e9d1020000909090e9d3020000909090e96c040000909090e992040000909090e9cf040000909090e964060000909090e957080000909090e956080000909090e955080000909090e954080000909090e979080000909090e978080000909090e97a080000909090e9b1090000909090e9b0090000909090e9c8090000909090e9c7090000909090e9f0090000909090488d642418eb05488d642418e9ce0100004d89f64d8b76084d8b2e4d8b65004983fc1d0f85800100004d8b6d084d8b650841ff34244d8b6d10498b5d0041ff760841ff76204c8b7424184d8b4618488b442410ff158c0d0000ff157e0d00004989c64d8d47d04c3b45107306ff5550ca00404d89c749c740f8050000004c8b6c24184d8968204c8b2c244d896818488d6424084c8b6c24204d89ea4d8968104c8b2c244d896808488d64240849bd7072b509000000004d89284c8b2c244d8b65084983fc017555ff7424384d89d14c89c34c89e84c8b442428ff15f60c00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c2080041f6c4017556498b5c2408ff74243841564c89e84c8b4c2430ff15920c00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c20800488d6424204c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d6424184c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d642418eb05488d642418eb324d89f6498b46104d89f64d8b4e18488b5c24184c8b442410415a4c8b6c24284c896c24284883c420e9c8fcffff488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9b10500004d89f64d8b76084d8b6e0841ff75004d8b7610498b1e4c8b7424084d8b4618488b0424ff154c0b0000ff153e0b00004989c54d8d47d84c3b45107306ff5550ca00204d89c749c740f8040000004c8b7424084d8970184c8b7424104d8970104c8b6424184d89e64d89600849bc0073b509000000004d89204c8b24244d8b5c24084983fb017555ff7424384d89f14c89c34c89e04c8b442428ff15c60a00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c2080041f6c3017558498b5b08ff74243841554d89f24c89e04c8b4c2430ff15600a00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c208006a016a016a014c89f0488b5c24384989e0ff15040a0000415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b084c8b2c244d892b488d6424084c8b6c24304d895d004d8965084d89751048c7c0010000004883c428c208004d89f44d8b7424104d89e44d89e541ff7424184d89ed41ff752041ff364c8b742418498b064c8b3424e96b0600004d89f54d89ee41ff75084d89f6498b46104d89f64d8b4e186a016a016a0154488b5c24404c8b4424384c8b542428e88bfaffff415a415c415e415d488d642428e9a90500004d89f44d8b7424084d89e44d89e541ff7424104d89ed41ff7518498b1e49bea8946208000000004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca08304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b2c244d892e498d47d0483b45107306ff5550ca08404989c748c740f80500000049bd40996208000000004c89682049bd98f36208000000004c89681849bde0f36208000000004c8968104c89700848c7000b00000048bad8ce620800000000ff152a0800004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d642408ff7424404156488b442438488b5c24184c8b4424304c8b4c24104c8b542420ff15d10700004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64242048c7c0010000004883c420c208004d89f54d8b75084d89ed4d89ec41ff75104d89e44d89e541ff7424184d89ed41ff752041ff364c8b6c24204d89ee41ff75004d89f641ff760848ba9016660800000000488b44241048c7c303000000ff15370700004989c54d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b00000049c7c6010000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d8975004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049bcb09f6208000000004d89661849bc00b76608000000004d89661049bc60c66208000000004d8966084d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f80200000049c74008010000004d893048bac850660800000000488b1c24ff15410600004989c641564d8d4fd84c3b4d107303ff55504d89cf49c741f8040000004c8b7424284d8971184c8b7424584d8971104c8b7424104d89710849bed873b509000000004d8931488b442420488b5c24304c8b442418ff15df0500004889c3ff742468488b4424084c8b4424584c8b4c24504c8b542418ff15b60500004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64244848c7c0010000004883c420c20800488d642418eb05488d642418eb05488d642418eb324d89f6498b46084d89f64d8b4e10488b5c24184c8b442410415a4c8b6c24284c896c24284883c420e99ff6ffff488d642418eb05488d642418e9440100004d89f6498b46084d89f64d8b4e184c8b6c24184d8b75084d8b1e4d89dc4983fb070f8580000000498b5e084d89ed4d89ee41ff75004d89f641ff76104c8b4424204c8b4c24184c8b542410ff15cd0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24404c8b6424084d8965004d8975084c8b34244d897510488d64243048c7c0010000004883c408c208004d89e64983fe09757a4d89ed4d89ee41ff75004d89f64c89f341ff76104c8b4424204c8b542410ff15420400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24404c8b6424084d8965004d8975084c8b34244d897510488d64241848c7c0010000004883c420c20800488d64242848b8f8b7660800000000488b5d08ff23488d642418eb25488d642410585b4c8b4424104c8b7424084c897424104883c410ff25a8030000488d642418eb05488d6424184c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d642410585b4c8b4424104c8b7424084c897424104883c410ff25480300004d8b4d004d89cb4983f90b75154d8b5d104d89dd483b65187306ff5558ca0074ebde4983fb1d750e4d8b6d084d8b6d084d8b6d00eb0a49bd20f16208000000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4c8b6c24084d895d004d8965084d89751048c7c001000000c208004d8b264d89e54983fc07750d4d8b76106a016a01e9320200004983fd0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebc849c7c6010000004983fe03752348c7c3030000004c8b4424384c8b4c240849ba80b8660800000000ff155d020000eb004c8b34244d8b2e4d89ec4983fd0b75404d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc9488d64244048b860a7660800000000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb924983fd07750d4d8b760848c7c301000000eb15488d64244048b8b0b8660800000000488b5d08ff2341f6c60175364d8b66084989dd4983c5027115488d64244048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15550100004989c6ff7424104156f644240801754f4c8b6c24084d8b75004d89ed41ff7508498b0641ff7618488b5c2420ff151b010000488b5c24104c8b0424ff15040100004989c4488d642408415d4c8924244c896c2408483b65187303ff5558ebaa415e4c8b6424084d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d896500498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b6424104d89e14c8960184c8968104c89700848c70033000000488b5c24384c8b4424304d89c94c8b5424204c8b6c24504c896c24504883c448e908f2ffff4d8b2e4983fd0175214d8b6e084d8b76104c892c244c89742408488d642408415e4983f602e9cafdffff4d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebbdf400000000|@8343,1,@18854,@14043,@14044,@14045,@10982,@14046,@14046,@14050,@14051,@14052,@14054,@13651,@13585,@14056,@10934,@14046,@14059,@14061,@14064,@14040,@14059,@14061,@14065,@14040|465,0,@14036 992,0,@14037 1446,0,@1098 1619,0,@1126 1633,0,@1736 1647,0,@1738 1672,0,@1525 1887,0,@7268 2050,0,@1172 2064,0,@8331 2078,0,@1469 2133,0,@7697 2209,0,@14039 2723,0,@8337 2920,0,@1724 3077,0,@8340 3159,0,@8247 3233,0,@8341 3273,0,@105 3320,0,@731 14036:D3,104|483b65187305ff5558cd054989d54989c66a016a016a0148baa0b6660800000000498b45084d8b45104d8b4d184d8b5520544c89f3ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4000000|@8329,1,@18848|25,0,@8328 14037:D3,104|483b65187305ff5558cd054989d66a016a016a0148baa0b66608000000004d8b46084d8b4e104d8b5618544889c348b8e8b6660800000000ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4|@8329,1,@18849|22,0,@8328 48,0,@8330 14038:D3,32|483b65187305ff5558cd0148b810b7660800000000488b5d08ff23f400000000|@8335,1,@18850|13,0,@8332 14039:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@8336,1,@18851,@10982| 14040:D12,808|483b65187306ff5558ca090153488b184c8b7010ff70186a016a014d8b2e4983fd070f85730200004d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe030f854f02000049bef804110a00000000498b06ff1521030000ff15130300004989c641564c8b7424184d8b2e4983fd0575544d89f6498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15b40200004989c6eb09ff15a10200004989c6eb034d89f64d8b2e4983fd0d0f85aa0100004d8b7608f604240175734c8b2c244d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4d89ed4d8b5d00488d6424084d8b234d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f80500000049c74520010000004d895d184d89651049c745080100000049c745000b000000e99c00000049bda8946208000000004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f80100000041c643ff404d892b49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d8965104d895d0849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849c70424090000004d89234155498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b34244c89730849bec877b509000000004c89336a016a01488b4424284989e0ff1523010000ff3424498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15ea0000004989c64c8b2c244c896c2420488d6424204c89742408eb77488d64242848b8d805630800000000488b5d08ff23498d5fe8483b5d107306ff5550ca00014989df48c743f8020000004c89430849be3878b509000000004c89336a016a01488b4424204989e0ff1577000000ff3424488b442410ff15610000004989c64c8b2c244c896c2418488d6424184c89742408488b0424ff74240848bad8ce620800000000488b5c2420ff152600000058488d642420c3f4000000000000|@8451,1,@18878,@10934,@14067,@10900,@14068,@10900,@10728,@10728,@14069,@14066|78,0,@15171 347,0,@1098 544,0,@14041 653,0,@1883 700,0,@14042 775,0,@1525 14041:D3,72|483b65187305ff5558cd054c8b304c8b6a104d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c348c7c001000000c3f4000000000000|@1882,1,@18852| 14042:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@8254,1,@18853| 14043:D3,168|483b65187306ff5558ca09014883fb01751048b838b9660800000000488b5d08ff23ff33488b5b084883f8017528488d642408498d47e8483b45107306ff5550ca08014989c748c740f802000000488958084c8900c34883e8027115488d64240848b8d006620800000000488b5d08ff23e88affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@8347,1,@18855|20,0,@8344 99,0,@105 14044:D3,272|483b65187305ff5558cd094c8b334d89f54983fe0b752e4c8b73184d8b76184d8b76084d8b2e4983fd057509498b5e10e9cbffffff48b860a7660800000000488b5d08ff234d89ee4983fd0d750c4c8b7308498b1ee9a6ffffff4983fe07750d4c8b6b0849c7c601000000eb1048b8e0b9660800000000488b5d08ff234983fd01751048b838ba660800000000488b5d08ff234d8b65004d8b5d084d8b14244c3bd07502eb2f4d8b224e8d2465010000004c8b084c89c94e8d0c4d010000004d3be17515498d7208488d7808483bc9f3a67402eb044c89f0c34d89f44983c402711048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160e974fffffff4000000000000|@8352,1,@18856|55,0,@8247 111,0,@8348 133,0,@8350 228,0,@105 14045:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee8b66608000000004c8930c3f400000000|@741,1,@18857|32,0,@105 87,0,@8330 14046:D7,344|483b65187306ff5558ca0901504150ff334c8b7308ff73104d8b2e4d89ec4983fd03753d498b4608488b5c2418ff15550100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000e9940000004d89e54983fc01754b498b460841ff7610488b5c2420ff15030100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c70601000000eb404983fd07753a498b4608488b5c2418ff15ae0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000eb004156498d5fe8483b5d107303ff55504989df48c743f80200000048c74308010000004c8b7424204c8933488b442408ff15460000004989c64c8b6c24184c8b6424104d8965004c8b24244d896508488d6424284d89751048c7c001000000c3f4000000|@8354,1,@18858,@14027,@14048,@14049,@14047| 14047:D3,264|483b65187305ff5558cd0953a8010f85e10000004c8b30ff700841ff3641ff7608498b5e1041ff76186a016a016a0148bac0ba660800000000488b4424384989e0ff12415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e83affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@18861|49,0,@8353 14048:D3,176|483b65187305ff5558cd0953a8010f858c000000488b18ff70086a016a016a0148bac0ba660800000000488b4424204989e0ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@742,1,@18859|34,0,@8353 14049:D3,264|483b65187305ff5558cd0953a8010f85e10000004c8b30ff700841ff3641ff7608498b5e1041ff76186a016a016a0148bac0ba660800000000488b4424384989e0ff12415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e83affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@742,1,@18860|49,0,@8353 14050:D3,272|483b65187306ff5558ca09074989c65341504151415241f6c6010f85e1000000498b0641ff76084c8b7424204d8b7610498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c89731049be58e46408000000004c89730848c703010000006a016a016a0148baa0b6660800000000544c8b4424384c8b4c24304c8b542428ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e82effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400|@742,1,@18862|81,0,@5372 108,0,@8328 14051:D3,272|483b65187306ff5558ca09074989c54989de4150415141524983fd017523488d6424184983fe01750848c7c001000000c348b8286d640800000000488b5d08ff23498b450041ff750841f6c6010f85a4000000498b1e41ff76086a016a016a0148baa0b6660800000000544c8b4424404c8b4c24384c8b542430ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442410488b5c24084c8b4424284c8b4c24204c8b542418e838ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048b8286d640800000000488b5d08ff23f4000000|@4547,1,@18863|51,0,@4545 98,0,@8328 254,0,@4545 14052:D4,384|483b65187306ff5558ca09074d8b70084d8b264d89e54983fc05757c4d8b760841ff3041ff70104d87ca4989c04c89f0ff15620100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642408c34d89ee4983fe090f85c80000004d8b304d8b60104d8d5fe84c3b5d107306ff5550ca09524d89df49c743f80200000049c74308010000004d890b4d8d6fe04c3b6d107306ff5550ca09584d89ef49c745f80300000049895d104d895d08498945004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450005000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c348b800bb660800000000488b5d08ff23f40000|@8358,1,@18864,@14053|367,0,@8355 14053:D7,1024|483b65187306ff5558ca090753415041514152a8010f8526010000ff30ff70084c8b6c24084d89ee41ff75084d89f64d8b7610f6442430010f85f900000041f6c6010f85e80000004c8b6c24304d8b6d004d8b264d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9ea000000488d642408eb05488d642408e9880000004d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c418c3488b0424488b5c24284c8b4424204c8b4c24184c8b542410e81afeffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cf0100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15960100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b6c24284c8968104c89700848c7000f0000004c8b742420498b5e6848bac0be64080000000049c7c001000000ff15340100004889c248c7c001000000ff124989c64d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64243848b808d5620800000000488b5d08ff234d8b364983fe030f859a000000498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930488b1c24ff158f0000004989c5488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c428c3488d642408e9cefdfffff400000000|@8359,1,@18865,@14027,@12098,@13572,@12170|727,0,@5100 828,0,@1556 14054:D5,3208|483b65187306ff5558ca0903534151ff3048ba90166608000000004c89c048c7c303000000ff157d0c00004989c6415648bae052660800000000488b442408488b1c2449b800bc660800000000ff154d0c00004989c64c8b2c2441ff7500ff75084c8d2d8a0000004155488965084d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01751048b808d5620800000000488b5d08ff23498b16488b442430ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408415e4c8975084883c428c3488b65084883c408415e4c8975084c8b284d89ee4981fdcb000000750d488d64242848c7c001000000c34d89f54983fe110f85de0400004c8b68104c8b7424184d8b65004e8d1c65010000004983fb01750f49bc10bc660800000000e9b30000004d89da4983c22c4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0dfd0a00000f87690400004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba10bc66080000000048c7c12d000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c241e48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b938bc660800000000e9b60000004d89eb4983c3344c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15210a00000f87800300004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e9498d742408498d790848d1e9f3a44983c51049bc38bc66080000000048c7c135000000498d74240849d1ed4b8d3c2948d1e9f3a4418061ffbf4d8b294e8d2c6d010000004c8b5c24204d8b234e8d1465010000004983fd0175084d89dce9ba0000004983fa0175084d89cce9ac0000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d2e0900000f87800200004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d730849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba68bc660800000000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d570800000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05500700000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234d89ee4983fd0b0f85fe0200004c8b7424184c8b6c24204d8b65004e8d1c65010000004983fb01750f49bc80bc660800000000e9b60000004d89da4983c2564c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0de90500000f87880200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba80bc66080000000048c7c157000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508498d7c243348d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba68bc660800000000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d0a0500000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05030400000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff234983fe037515488d64242848b8c0bc660800000000488b5d08ff234c8b7424184c8b6c24204d8b65004e8d1c65010000004983fb01750f49bc18bd660800000000e9b60000004d89da4983c2444c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db80200000f87880200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba18bd66080000000048c7c145000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508498d7c242a48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba68bc660800000000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dd90100000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05d20000000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@8368,1,@18867,@13657,@13585|19,0,@7268 50,0,@7711 69,0,@8360 170,0,@1556 326,0,@8361 466,0,@8361 538,0,@8362 696,0,@8362 980,0,@8363 1445,0,@117 1466,0,@117 1487,0,@117 1508,0,@117 1529,0,@117 1586,0,@8364 1726,0,@8364 1801,0,@8363 2266,0,@117 2287,0,@117 2308,0,@117 2335,0,@8365 2379,0,@8367 2519,0,@8367 2594,0,@8363 3059,0,@117 3080,0,@117 3101,0,@117 14055:D3,32|483b65187305ff5558cd0148b87853660800000000488b5d08ff23f400000000|@7718,1,@18866|13,0,@7715 14056:D5,240|483b65187306ff5558ca09074d89ce4989c14d89d54d89c2f6c301757b488b3b4c8b63084c8b5c24084d8d47b84c3b45107306ff5550ca807e4d89c749c740f808000000498978384d8958304d8968284d8970204d8950184d89601049be80bd6608000000004d89700849be8097b509000000004d89304c8b6c240848c7c30500000048b868be6608000000004c896c2408ff25780000004d8d47d84c3b45107306ff5550ca00664d89c749c740f8040000004d8968184d8970104d89500849be689bb509000000004d89304c8b6c240848c7c30500000048b848c56608000000004c896c2408ff251b000000f40000|@8442,1,@18870,@14059,@14059|94,0,@8369 108,0,@14057 133,0,@8374 193,0,@14058 218,0,@8427 14057:D3,960|483b65187305ff5558cd05524c8b70084d8b264d89e54983fc090f85be010000ff30ff70104c8b70104d89f5498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c89731049be58e46408000000004c89730848c703010000004d8d77e04c3b75107306ff5550ca08204d89f749c746f8030000004d896e1049bd58e46408000000004d896e0849c7060100000041566a016a016a0148baa0b66608000000004c8b742430498b46384d89f64d8b46184d89f64d8b4e204d89f64d8b562854ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b742420498b56084d89f6498b5e104d89f64d8b46184d89f64d8b4e204d89f64d8b56284d89f64d8b76304156488b442410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642410c34983fd070f85c00100004d8b66084d89e541f6c4010f859a0100004d8b64240841f6c401751d4d8b6424084983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f855a0100004d89ee498b1e4d8b760841ff36ff30ff70106a016a016a0148baa0b66608000000004c8b742430498b46384d89f64d8b46184d89f64d8b4e204d89f64d8b562854ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b742420498b56084d89f6498b5e104d89f64d8b46184d89f64d8b4e204d89f64d8b56284d89f64d8b76304156488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c3488d642408eb05488d64240848b890bd660800000000488b5d08ff23488d64240848b890bd660800000000488b5d08ff23f40000|@8373,1,@18868|77,0,@5372 129,0,@5372 158,0,@8328 588,0,@8328 922,0,@8370 943,0,@8370 14058:D3,104|483b65187305ff5558cd054989d66a016a016a0148baa0b66608000000004d8b46084d8b4e104d8b5618544889c348b8e8b6660800000000ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4|@8426,1,@18869|22,0,@8328 48,0,@8330 14059:D4,544|483b65187306ff5558ca09074c89c250534d8b71084d8b264d89e54983fc010f859c000000488d642408498b460841ff761041ff3141ff71104c8b74242841514989d14d89d04d89f2488b5c2420ff15e40100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c208004d89ee4983fe090f853a01000041ff3141ff71104d8d77e84c3b75107306ff5550ca04064d89f749c746f80200000049c74608010000004d891641564d8b7110498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58e46408000000004c89700848c70001000000ff124989c44c8b6c24304d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24204d895e184d8966104d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c20800488d64241048b808c7660800000000488b5d08ff23f40000|@8443,1,@18871,@14060|290,0,@5372 527,0,@8439 14060:D4,616|483b65187306ff5558ca09075341514152a8010f8578010000ff30ff70084c8b6424084d8b34244d89e44d89e541ff7424104d89ed4d8b6d184d8b5d00488b5c24284c8b234d3bdc7502eb3d4d8b2b4e8d2c6d010000004d8b14244c89d14e8d1455010000004d3bea0f85cc000000498d7308498d7c2408483bc9f3a6740a488d642408e9b7000000498d47e8483b45107306ff5550ca00414989c748c740f80200000048c74008010000004c89004c89f3ff15c80100004989c64156488b542428488b442408ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d8966184d896e104c8b6c24204d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c420c20800488d6424084c8b7424304156488b4424084c8b4c24204c8b542418e8a5feffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c208004d8d77e84c3b75107306ff5550ca00014d89f749c746f80200000049c74608010000004d89064156488b5424104c8b7424284d8b7610498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58e46408000000004c89700848c70001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184d896e104c8b6c24084d896e084c8b2c244d892e488d642420498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c20800f400|@8444,1,@18872,@14027|488,0,@5372 14061:D6,600|483b65187306ff5558ca09035053415041514c8b7424084d8b6e084d8b5d004d89dc4983fb030f85a700000041ff75084d89f54d89ee41ff75004d89f641ff76104c8b742430498b4610ff15300200004889c3ff742430488b4424184c8b4424204c8b4c24304c8b542428ff15070200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642430c34d89e54983fd090f85610100004d89f64d89f541ff364d89ed4d89ee41ff75104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424104d8965004155488b5424284d89f64d8b7610498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58e46408000000004c89700848c70001000000ff124989c641564c8b742438498b4610ff15f90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424384d8966184c8b24244d896610488d6424084d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642428c3488d64242048b840c8660800000000488b5d08ff23f400|@8448,1,@18873,@14062,@14063,@14062|334,0,@5372 584,0,@8445 14062:D4,264|483b65187305ff5558cd014c8b284d89ee4983fd090f85a0000000ff7008488b4010e8d9ffffff4989c641f6c601757e4d8b36498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000488b1c2449c7c001000000ff15ae0000004989c6488d6424084d8b2e4983fd0d75234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488d64240848c7c001000000c34983fe0375384c8b70084d8b2e4983fd0d75234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f4000000000000|@8450,1,@18875,@11046| 14063:D4,624|483b65187306ff5558ca0907534151a8010f8581010000ff30ff70084c8b742408498b1e4d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff7618f6442430010f85f8000000f6442410010f85e60000004c8b7424304d8b364c8b6c24104d8b6d004d3bf5750949c7c603000000eb0749c7c6010000004983fe030f85af000000498d47e8483b45107306ff5550ca08014989c748c740f80200000048c74008010000004c8900ff15d70100004989c64156488b542430488b442410ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b6c24184d896e084c8b2c244d892e488d642420498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c418c20800488d642418eb0c488d642418eb05488d6424184c8b7424284156488b442408488b5c24204c8b4c2418e89efeffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c208004d8d77e84c3b75107306ff5550ca00054d89f749c746f80200000049c74608010000004d89064156488b5424084d8b7210498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58e46408000000004c89700848c70001000000ff124989c54c8b6424204d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b6c24104d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c20800f400000000000000|@8449,1,@18874,@14027|490,0,@5372 14064:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18876| 14065:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18877| 14066:D3,200|483b65187305ff5558cd09a8010f85a50000004c8b30488b40084d8b1e4d8b6e084d8b6610493bdb7502eb2f4c8b334e8d3475010000004d8b134c89d14e8d1455010000004d3bf27569488d7308498d7b08483bc9f3a67402eb584d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e87cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3e948ffffff48c7c001000000c3f400000000000000|@1888,1,@18882| 14067:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@742,1,@18879| 14068:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18880| 14069:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18881| 14070:D53,10848|488dbc24c8feffff483b7d187306ff5560ca0d0152505341504c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e919010000909090e924020000909090e91d040000909090e989040000909090e93d080000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e932080000909090e9ab080000909090e993000000909090e948090000909090e97d0a0000909090e9500c0000909090e973000000909090e9b90c0000909090e9b90e0000909090e9a40f0000909090e953000000909090e916100000909090e921110000909090e936110000909090e974150000909090e9be150000909090e923000000909090e93b160000909090e913000000909090e959160000909090e9030000009090904c8b7424084d8b7620415d488d64240849bcc0aa6208000000004d8965004d89750848c7c0010000004883c410c34d89f6498b46084d89f641ff76106a016a01488b542430488b5c24204989e0e886feffffff3424ff7424104c8b4424304d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b14244c8953204c895b184c8963104c896b084c89336a016a01488b542450488b4424304989e0e8f9fdffff415d488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc0aa6208000000004d8966184d896e104c8b6c24084d896e0849c7060b0000004c8b6c24284d8975004c8b34244d897508488d64244848c7c001000000c34d89f64d8b7608498b064c8b284983fd1d0f85b60000004c8b68084d8b650841ff34244d8b6d10498b5d0041ff760841ff76204c8b7424204d89f541ff364d89ed4d89ee41ff75084d89f641ff7628488b4424284c8b0424ff15392900004989c641566a016a01488b542460488b442438488b5c24504989e0e819fdffff488b1c24ff742408ff742430ff742440488b4424584c8b4424384c8b4c24304c8b542428ff15e72800004989c64c8b6c24504d8975004c8b34244d897508488d64246048c7c0010000004883c410c341ff76086a016a01488b542430488b5c24204989e0e8b0fcffffff34244c8b542410488b7c24284c8b374889ff4c8b6f084889ff4c8b67104889ff4c8b5f184889ff4c8b4f284889ff4c8b47304889ff488b7f38498d5fb8483b5d107306ff5550ca807f4989df48c743f80800000048897b384c8943304c894b284c8953204c895b184c8963104c896b084c89336a016a01488b542448488b4424284989e0e826fcffff4c8b3424ff742408498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15e22700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b6424184d8966104d896e0849c7060f0000004c8b6c24384d8975004c8b34244d897508488d64244848c7c0010000004883c410c34d89f64d8b7608498b0641ff76084c8b7424104c89f341ff76206a016a01488b5424384989e0e86bfbffff4158488d6424084c8b742428498b5608488b442420488b5c240849c7c1010000004c8b542418ff124989c64c8b6c24104d8975004c8b34244d897508488d64243048c7c001000000c34d89f64d8b7608498b0641ff760841ff761041ff762041ff76286a016a01488b542448488b5c24384989e0e8f2faffffff3424ff7424106a016a014c8b742468498b561048b8c086620800000000488b5c24404989e0ff12ff34244c8b7424604d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442440488b5c24284c8b4424204989e1ff1577260000ff3424ff74241048ba0866660800000000488b442470488b5c24384c8b4424284c8b4c24304c8b542420ff153f2600004889c34883fb0175074c8b742408eb0e488b442408ff151c2600004989c641564c8b8424a00000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424c0000000488b8424980000004989e0e8aff9ffffff34246a016a014c8bb424d8000000498b561048b8c086620800000000488b9c24b80000004989e0ff12ff34244c8bb424d00000004d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b8424b0000000488b5c24284c8b4424204989e1ff1514250000ff3424ff74241048ba0866660800000000488b8424e8000000488b5c24384c8b4424284c8b4c24304c8b542420ff15d92400004889c34883fb0175074c8b742408eb0e488b442408ff15b62400004989c641564c8b8424100100004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b942430010000488b8424100100004989e0e861f8ffff415b488d6424084c8b6c24704d89ee4983fd0175074c8b6c2458eb334d8d6fe04c3b6d107306ff5550ca00484d89ef49c745f8030000004c8b6424584d8965104d89f64d89750849c745001f0000004c8b24244d89e64983fc01750d488da424c80000004d89dceb3d4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d89f64d89742408488d64240849c704241f0000004881c4c00000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b6c24084d896e0849c7060b0000004c8b6c24404d8975004c8b34244d897508488d64241048c7c0010000004883c450c34d89f6498b4610488b542418488b5c24084158488d642418e949f7ffff4d89f6498b46084c8b542408498b5a206a016a016a014c8b7424304d8b4e1041564c8d442408ff15d5220000415d415b415e4983fd0175054d89dceb2e4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c704241f000000415d4d8965004d89750848c7c0010000004883c418c34d89f54d8b75084d89ed41ff7518498b064c8b6c24104d89ee41ff75204d89f64d8b7628498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be80d7b509000000004c89336a016a014989e0ff151b220000488d64240858ff1507220000ff15f92100004989c04c8b742428498b5620488b442420488b5c24084c8b4c2418ff124989c64c8b6c24104d8975004c8b34244d897508488d64243048c7c001000000c34d89f54d89ee41ff75084d89f641ff76104c8b742418498b56104d89f641ff762048c7c003000000ff124989c641566a016a01488b542448488b442428488b5c24384989e0e8d1f5ffffff34244c8b7424184d89f54983fe017d15488d64245848b800d5650800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c706050000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c700110000004c8b742450498b5608488b442448488b5c242849c7c1030000004c8b542440ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184d896e104c8b2c244d896e08488d64240849c706150000004c8b6c24304d8975004c8b7424184d89750848c7c0010000004883c450c34d89f64d8b76084d8b6e0841ff7500488b04244c8b680841f6c5010f85d10000004d8b6e10498b5d004d8b66184c8b7424104d8b2e4d89f64d89f341ff76084d89db4d89de41ff73204d89f641ff76284d8d77d04c3b75107306ff5550ca09304d89f749c746f8050000004d8966204d896e184c8b2c244d89e84d896e104989c54c89e84d896e0849bdc0d8b509000000004d892e4156ff15d91f000048c7c001000000ff15c41f000048ba2814660800000000488b5c24184c8b4424084c8b0c24ff159e1f00004989c6488d6424104c8b6c24184d8975004c8b34244d897508488d64242848c7c0010000004883c410c34983fd01755b4d8b76184c8b6424104d8b14244d89e4498b5c24084d89e44d89e541ff7424204d89ed4d8b4528415649c7c101000000ff15301f00004989c64c8b6c24104d8975004c8b34244d897508488d64242048c7c0010000004883c410c34d8b6e10498b5d0041ff76184c8b6c24184d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75204d89f641ff76284c8b0424ff15c61e00004989c1ff742420488b442430488b5c24184c8b4424084c8b542420ff159d1e00004989c6488d6424084c8b6c24284d8975004c8b34244d897508488d64243848c7c0010000004883c410c34d89f54d8b75104d89ed498b5d18f6c301753d4c8b6b084983fd01750949c7c503000000eb0749c7c5010000004983fd03751d4c8b33498b4618488b542418488b5c24084158488d642418e9b3f2ffff4d8b264c8b5c24084d8b6b084d89db4d8b73104d89db41ff732049c7c3010000004989dae9ec1b00004d89f44d8b7424084d89e44d89e541ff7424104d89ed41ff751841ff364c8b6c24204d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75204d89f641ff76284c8b6424204d8b34244983fe0b0f859c0100004d89e44d8b6c24084d89ee41f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f85570100004d89e44d8b364d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89e44d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15fe1c00004989c64156488b0424ff15e71c00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d4fe04c3b4d107306ff5550ca00204d89cf49c741f8030000004c8b6424204d89e64d8961104d89690849c70105000000ff742410ff742420ff7424384156488b442450488b5c24704c8b4424604c8b542420ff15201c00004989c6488d6424084c8b6c24304d8975004c8b34244d897508488d64244048c7c0010000004883c410c3488d642458eb05488d64245848b8f8c9660800000000488b5d08ff234d89f54d8b75084d89ed498b5d104d89ed4d8b65184d89ed498b45204d8b064c8b5c24084d8b334d89db41ff73204d8d4fd84c3b4d107306ff5550ca09714d89cf49c741f8040000004d8961184d89ed4d8969104d89710849be88d9b509000000004d8931ff15671b00004989c64983fe01752c4c8b6c240849bec0aa6208000000004d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d89f64d8b6e084d8b7500498b45084d8d4fd84c3b4d107306ff5550ca01404d89cf49c741f8040000004d8971184c8b6c24184d89ee4d8969104d89f64d8b6e104d89690849bde0d9b509000000004d89296a016a014d89f6498b561848c7c3010000004c8b4424184989e2ff12415d415e6a016a0149c7c401000000e9431700004d89f6498b46084d89f641ff76106a016a01488b542430488b5c24204989e0e8e9eeffffff3424ff7424104c8b4424304d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b14244c8953204c895b184c8963104c896b084c89336a016a01488b542450488b4424304989e0e85ceeffff415d488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda0aa6208000000004d896e104c8b6c24084d896e0849c7060b0000004c8b6c24284d8975004c8b34244d897508488d64244848c7c001000000c34d89f6498b4608488b542418488b5c24084158488d642418e9ddedffff4d89f6498b46084d89f641ff76104c8b6c24104d89ee41ff75084d89f64c89f341ff76106a016a01488b5424404989e0e8a8edffffff3424ff7424106a016a014c8b6c24184d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd08e0b509000000004d892e48c70424010000004c89742408e9b2000000488b54243048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bc48e0b509000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24184d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442440ff124989c641564c8b2c244d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15aa1700004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c7061700000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff153c1700004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d89ed4d896e0849c7061700000041564c8b7424104d8b2e4983fd0d751c4c89f048c7c30500000049c7c001000000ff15cf1600004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510050000004d89f64d89750849c74500170000004c8b6424604d8b34244d89e44d8b4c24084d89e44d8b5c24104d89e44d8b4424184d89e44d8b5424204c3b35581600007502eb344d8b264e8d2465010000004983fc01753d49bcd808620800000000498d7608498d7c240848c7c100000000483bc9f3a67402eb1a4983fb0175124983fa01750c49bec0aa620800000000eb64eb004d8d67d04c3b65107306ff5550ca006f4d89e749c74424f8050000004d894424204d894c24184d895424104d895c24084d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004883c408e9ec1000004d89f54d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d8b4e204c8b742420498b064d89f64d89f541ff76184d89ed4d89ee41ff75204d89f641ff76284c8b742418e96b0400004d89f6498b4608a80175354c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe037515488d64242048b890cb660800000000488b5d08ff234c8b7424084d89f041ff7620488b5c2420ff15161400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9700300004c8b7424084d8b7620415d488d64240849bcc0aa6208000000004d8965004d89750848c7c0010000004883c410c34d89f54d89ee41ff75084d89f6498b46104d89f641ff76204c8b7424184c89f341ff76206a016a01488b5424404989e0e855e8ffffff3424ff7424106a016a014c8b742460498b561048b8c086620800000000488b5c24404989e0ff12ff34244c8b7424584d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442440488b5c24284c8b4424204989e1ff1512130000ff3424ff74241048ba0866660800000000488b442478488b5c24384c8b4424284c8b4c24304c8b542420ff15da1200004889c34883fb0175074c8b742408eb0e488b442408ff15b71200004989c641564c8b8424980000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424b8000000488b8424980000004989e0e812e7ffff415c488d6424084c8b34244d89f54983fe01750a488d6424604d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c4584d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff156a1100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc0aa6208000000004d8966184d896e104c8b2c244d896e08488d64240849c7060b000000415648c7c001000000ff159c1000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706050000004c8b6c24284d8975004c8b7424104d89750848c7c0010000004883c448c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f90f00004989c6eb004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d8b264d89e54983fc07750d4d8b76106a016a01e9d30b00004983fd0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0142ebc849c7c6010000004983fe03751e48c7c3030000004c8b44244049ba80b8660800000000ff15690f0000eb004c8b7424184d8b2e4d89ec4983fd0b75404d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc9488d64245048b860a7660800000000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb924983fd07750d4d8b6e0849c7c601000000eb15488d64245048b8b0b8660800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe03750c49be989f620800000000eb4f488b442428488b5c2418ff15660e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd989f6208000000004d896e0849c706170000004156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424084c89730849be08e1b509000000004c89336a016a01488b4424384989e0ff15dd0d0000488d64240858ff15c90d0000ff15bb0d00004989c641564c8b34244983fe010f85d6020000488d6424084c8b6c24184d8b75004e8d3475010000004983fe01750f49baf817620800000000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd50c00000f87600200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d2c75010000004c8b6424304d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05f90b00000f87770100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c3b35f00b00007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15960b00004989c6415648c7c001000000ff157c0b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c408e9dd060000488d64245848b8f807620800000000488b5d08ff23488d64245848b8f807620800000000488b5d08ff234c8b6c24204d8b75004e8d3475010000004983fe01750f49baf817620800000000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df40900000f87630200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d2c75010000004c8b6424384d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05180900000f877a0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c3b35070900007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15ad0800004989c6415648c7c001000000ff15930800004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649c7c6010000004c8b6c2408eb2a488d64246048b8f807620800000000488b5d08ff23488d64246048b8f807620800000000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b6c24304d8b75004e8d3475010000004983fe01750f49baf817620800000000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd20600000f87910300004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d3475010000004c8b6c24484d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05f60500000f87a80200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f1498d7208498d7c240848d1e9f3a44983c6104c89d94d89ed498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bec8a2660800000000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b151f0500000f87c40100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf4c3b35040500007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15aa0400004989c641564c8b7424104c89f34983fe017d18488da4248000000048b83060620800000000488b5d08ff2348c7c001000000ff156a0400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4184c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c440c3488d64247048b8f807620800000000488b5d08ff23488d64247048b8f807620800000000488b5d08ff23488d64247048b8f807620800000000488b5d08ff234d8b2e4983fd0175214d8b6e084d8b76104c892c244c89742408488d642408415e4983f602e929f4ffff4d8b6e084d8b6d004d89ee483b65187306ff5558ca0142ebbd41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15e50200004989c4eb004c8b2c244d89ee4983fd01750a488d6424184d89e5eb374d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706210000004c8b6c24384d8975004c8b34244d897508488d64240848c7c0010000004883c450c341f6c50175724d8b4d004d8b5d084983fb01752e4d8b294983fd0575104d8b69084d89e349c7c401000000eb60488d64243048b810cc660800000000488b5d08ff234d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070eb88488d64243048b868cc660800000000488b5d08ff2341f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d3483b65187306ff5558ca0078ebbd4c8924244c896c2408415d415b4983fd0175054d89dceb2e4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c704241f000000415d4d8965004d89750848c7c0010000004883c418c341f6c20175364d8b42084d89d94983c1027115488d64242848b8d006620800000000488b5d08ff234d89c24d89cb483b65187306ff5558ca087cebc46a016a01415641554154415348b8c0cc6608000000004c8d4424204c8b4c24504c8b542440ff15af000000415d415c4983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f0000004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c3f4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@8472,1,@18897,@14086,@12170,@14092,@13655,@123,@14093,@13655,@123,@14094,@13655,@123,@14095,@13982,@10900,@14044,@10982,@12170,@14096,@14097,@14098,@13722,@13819,@14099,@123,@11046,@11046,@11046,@14054,@14100,@11066,@10822,@13566,@14040,@14102,@13570,@13668,@14040,@14107,@13982,@10900,@14108,@14111,@13722,@13819,@14085,@13722,@13819,@13572,@13568,@14040|314,0,@1263 555,0,@1263 1316,0,@998 1402,0,@7831 1638,0,@998 1733,0,@7831 2429,0,@14071 2631,0,@6950 2988,0,@14072 3022,0,@7256 3952,0,@8454 4056,0,@14073 4089,0,@1263 4280,0,@14074 4556,0,@1262 4758,0,@14081 4846,0,@14082 5359,0,@123 5406,0,@1263 5869,0,@8461 5978,0,@1263 6081,0,@998 6167,0,@7831 6705,0,@1263 7033,0,@8340 7116,0,@8247 7190,0,@8341 7230,0,@105 7272,0,@1171 7342,0,@1171 7398,0,@14083 7494,0,@190 7919,0,@123 7953,0,@7652 8155,0,@117 8176,0,@117 8215,0,@190 8640,0,@123 8674,0,@7652 8879,0,@117 8900,0,@117 8940,0,@105 9001,0,@190 9420,0,@8228 9643,0,@123 9677,0,@7652 9731,0,@731 9946,0,@117 9967,0,@117 9988,0,@117 10346,0,@8464 10421,0,@8466 10620,0,@105 10668,0,@8468 14071:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@8254,1,@18883| 14072:D5,144|483b65187305ff5558cd054989c5488b42084c8b42104c8b52184c8b722041564c89eb49c7c101000000ff15800000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2555000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000000000|@8453,1,@18884,@11046,@13566| 14073:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@8457,1,@18885,@10982| 14074:D4,96|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084c8b52104c8b721841564c8d442408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8458,1,@18886,@14075| 14075:D5,120|483b65187306ff5558ca09074989de504150498b5e206a016a01488b44242841524d89f24c8d442408ff1569000000488b1c24ff7424084883fb0175074c8b742420eb0e488b442420ff15410000004989c64c8b6c24184d8975004c8b34244d897508488d64240848c7c0010000004883c420c20800f400|@8459,1,@18887,@14077,@14076| 14076:D8,632|488dbc2450ffffff483b7d187306ff5560ca090753415041514152a8010f852b0200004c8b30ff700841ff3641ff76086a016a01488b54243048b8c086620800000000488b5c24184989e0ff12ff34244c8b7424304d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442470488b5c24284c8b4424204989e1ff1528020000ff3424ff74241048ba0866660800000000488b442450488b5c24384c8b4424284c8b4c24304c8b542420ff15f00100004889c34883fb0175074c8b742408eb0e488b442408ff15cd0100004989c641564c8b4424704d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424a8000000488b4424704989e0ff12415d488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a014c8bb424b00000004156488b842488000000488b5c24284c8d4424084c8b8c24980000004c8b942490000000e83dfeffff488b1c24ff742408498d47e8483b45107305ff5550cd084989c748c740f80200000048c74008010000004c8b7424184c89304883fb0175054889c3eb09ff15920000004889c34883fb0175074c8b742420eb0e488b442420ff156f0000004989c64c8bac24a00000004d8975004c8b34244d897508488d64240848c7c0010000004881c4a8000000c20800488d642410415d49c74500010000004c8b34244d897508488d64240848c7c001000000c20800f4000000|@8460,1,@18889,@14079,@14080,@14078,@13722,@13819|59,0,@998 145,0,@7831 14077:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18888| 14078:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18892| 14079:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18890| 14080:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18891| 14081:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18893| 14082:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18894|36,0,@105 14083:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@8254,1,@18895| 14084:D3,32|483b65187305ff5558cd0148b8d0cc660800000000488b5d08ff23f400000000|@8457,1,@18896|13,0,@8469 14085:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18924| 14086:D7,784|483b65187306ff5558ca090750415041514152f6c3010f851a0200004c8b33ff730841ff36498b46186a016a01488b542428488b5c24204989e0ff12ff34246a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd70e6b509000000004d892e48c70424010000004c89742408e9b2000000488b54247848c7c003000000ff124989c54c8b6424704d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bcb0e6b509000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b5c2478488b442438ff15e40100004989c54c8bb42480000000498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b6c24604c8968184c8970104c8b34244c897008488d64240849be70e7b509000000004c89306a016a014c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784156415541544153488b5c24684c8d4424204c8b4c24784c8b542470e811feffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15290100004989c64c8b6c24684d8975004c8b34244d897508488d64240848c7c0010000004883c470c22000488d6424104c8b7424184983fe017d15488d64241048b83060620800000000488b5d08ff23488b5c241848c7c0010000004c8b442408ff15be0000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff153e0000004989c6eb00415d49c74500010000004d89750848c7c0010000004883c408c22000f400000000|@8474,1,@18901,@12170,@14091,@14090,@14044|118,0,@14087 206,0,@14088 418,0,@14089 589,0,@731 14087:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18898| 14088:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18899|36,0,@105 14089:D3,40|483b65187305ff5558cd054c8b7220493bc6750d4c8b6a08488b42104c89eaff22488b5218ff22f4|@8473,1,@18900| 14090:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18903| 14091:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d006620800000000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@741,1,@18902|73,0,@105 14092:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18904|32,0,@105 87,0,@1823 14093:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18905|33,0,@105 88,0,@1823 14094:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18906|33,0,@105 88,0,@1823 14095:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@523,1,@18907| 14096:D3,184|483b65187305ff5558cd01a8010f85960000004c8b28488b40084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e886ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@18908| 14097:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18909| 14098:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18910| 14099:D3,136|483b65187306ff5558ca09014989c653415041f6c6017560498b0641ff76086a016a01488b542420488b5c24184989e0ff12ff3424488b442418488b5c24284c8b442420e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64241048c7c001000000c3f40000|@742,1,@18911| 14100:D9,576|483b65187306ff5558ca09074989c65341504151415241f6c6010f85fe000000498b0641ff76086a016a01488b542430488b5c24284989e0ff12ff34244c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488b442438488b5c24584c8b4424504c8b4c24484c8b542440e889ffffff4989c6415648b868be660800000000488b5c24304c8b442428ff15ea0100004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d5fe0483b5d107306ff5550ca00404989df48c743f80300000048c74310010000004c89730848c70329000000e992000000488b5c242848b848c56608000000004c8b0424ff15410100004c8b6c24384c8b6424304d8d77d84c3b75107306ff5550ca01304d89f749c746f8040000004d8966184d896e104c8b2c244d896e0849bdb0f0b509000000004d892e4156ff15ef00000048ba2814660800000000488b5c24484c8b4424084159488d6424084c8b7424184c897424384883c438ff25b800000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0840ebd849c7c601000000eb0749c7c6030000004983fe03750e4889d8ff15690000004889c3eb004c8b4424704c8b4c2430415a4c8b6c24604c8b64245848b868be6608000000004c896424604c896c24684c8b7424484c897424584883c458ff251e000000f40000000000|@8476,1,@18913,@13568,@12170,@13570,@13668,@14040,@14040|126,0,@8374 293,0,@8427 366,0,@14101 387,0,@7256 532,0,@8374 14101:D5,144|483b65187305ff5558cd054c8b42084c8b52104c8b721841564889c348b848c566080000000049c7c101000000ff157d0000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2552000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000|@8475,1,@18912,@11046,@13566|30,0,@8427 14102:D11,696|483b65187306ff5558ca090750534150415141524c8b742420498b4618ff15e50200004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f850d0100004c8b7424184d8b2e4d89f64d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849be98f4b509000000004d8934244983c5027115488d64243048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e4156488b442418ff15d20100004989c24c8b742440ff7424104156488b44244048bb989f6208000000004c8b4424104c8b4c2430ff159d0100004989c641564c8b7424104d8b3648c7c001000000eb46488b442408ff15740100004989c2488b4424204c8b4424184c8b4c2410415d488d6424204c8b642408ff342448bbc0aa6208000000004c896424084c896c2410ff253101000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d9000000ff15cb0000004989c6415648c7c001000000ff15b10000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc04a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f40000|@8477,1,@18915,@14105,@11908,@13601,@13568,@14106,@13568,@14104,@10728|209,0,@14103 234,0,@105 323,0,@1171 415,0,@1263 624,0,@7652 14103:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18914,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14104:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18918| 14105:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18916|33,0,@105 88,0,@1823 14106:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@18917| 14107:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@523,1,@18919| 14108:D7,664|488dbc2430ffffff483b7d187306ff5560ca090753415041514152a8010f85580200004c8b30ff700841ff3641ff76086a016a01488b54243048b8c086620800000000488b5c24184989e0ff12ff34244c8b7424304d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442470488b5c24284c8b4424204989e1ff1540020000ff3424ff74241048ba0866660800000000488b442450488b5c24384c8b4424284c8b4c24304c8b542420ff15080200004889c34883fb0175074c8b742408eb0e488b442408ff15e50100004989c641564c8b4424704d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424a8000000488b4424704989e0ff12ff3424488b5c24104c8bb424800000004c89f04983fe0175324c8bb424980000004c8b6c24184d892e4c8b2c244d896e08488d64240849895e1048c7c0010000004881c4a0000000c208006a016a016a014c8bb424c800000041564c8d4424084c8b8c24b00000004c8b9424a8000000e82cfeffff4c8b2c24ff742408ff7424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849c70605000000498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175074c8b742440eb0e488b442440ff156b0000004989c64c8bac24c00000004d8975004c8b7424084d8975084c8b34244d897510488d64241048c7c0010000004881c4c0000000c20800488d64242048b8d0ce660800000000488b5d08ff23f400000000000000|@8481,1,@18920,@14110,@14109,@13722,@13819|59,0,@998 145,0,@7831 642,0,@8478 14109:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18922| 14110:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18921| 14111:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18923| 14112:D31,5880|488dbc2420ffffff483b7d187306ff5560ca0d03525053415041514c8b34244d89f541ff76084d89ed4d89ee41ff75104d89f641ff76184c8b7424304d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc170f85820100004d8b761041566a016a016a01f64424400174294c8b7424304d8b2e4c892c244d89f64d8b6e084c896c24084d89f64d8b76104c89742410e9930000004c8b7424304d8b264d89f64d8b5e0849c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849bbe814b609000000004d895d004983c4027115488d64246048b8d006620800000000488b5d08ff234c8924244c896c24084c89742410ff3424ff742410ff74242049c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd3816b609000000004d892e4156f644244001752e4c8b7424404d8b364d8b6e1041ff75004d8b6e1841ff7500498b4608ff15201600004989c549c7c601000000eb4b488da4248800000048b8d0cf660800000000488b5d08ff234983fd0b75184d8b6e104d89ee483b65187306ff5558ca0040e932feffff488d64244048b868d0660800000000488b5d08ff2341f6c50175394d8b5d084d89f44983c4027118488da4249800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b2c244d89ee4983fd030f8451040000f6842480000000010f843c0400004c8b5c24604d8b2b4e8d246d010000004983fc01750f49bd7018620800000000e9a00000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d1c1400000f87c90300004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e14d89db498d7308498d7d0848d1e9f3a44983c41049d1ec43c644250028418065ffbf415548bae85c6208000000004c89f048c7c303000000ff15801400004989c54c8b14244d8b324e8d3475010000004d8b65004e8d1c65010000004983fe01750d488d6424084d89ece9c40000004983fb01750d4d89d4488d642408e9b10000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05161300000f87b30200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208488d642408498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be8818620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153a1200000f87c70100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e29418066ffbf415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424404d897424104c8b34244d89f34d8974240849bea016b609000000004d8934244c8b6c24484983c5027118488da424b000000048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e41564c8b7424184d89f54983fe03750f49b8989f620800000000e91e0800004d89ed4d89ee4983fd017f18488da424b800000048b8489e660800000000488b5d08ff234d89f64c89f34983fe017d18488da424b800000048b83060620800000000488b5d08ff2348c7c001000000ff159b1100004989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f80300000049c74010010000004d89700849c70029000000e947070000488da424a000000048b8f807620800000000488b5d08ff23488da424a800000048b8f807620800000000488b5d08ff23488da424a000000048b8f807620800000000488b5d08ff23488d642408eb05488d6424084c8b6424584d8b34244e8d2c75010000004983fd01750f49bea0a3660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15bb0f00000f87170200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424384d897424104c8b34244d89f34d8974240849bef017b609000000004d8934244c8b7424404983c6027118488da424a800000048b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89db4d895d104d8965084d8975004c8b9424800000004d8b224d89d24d8b72204d89d24d8b5a284d89d24d8b5238498d47a8483b45107306ff5550ca007c4989c748c740f80a0000004c8950484c8958404c8b5c24084c89db4c8958384c8b5424204d89d34c8950304c8968284c8960204c8b5424604c8950184c8b9424980000004c8950104c8b9424a00000004d8b52084c89500849ba4019b609000000004c891048ba909f660800000000ffb42490000000415641554154415349b8989f6208000000004c8b4c24404c8b542438ff15ac0e00004989c641564c8b7424084d8b3648c7c001000000eb18488da4249800000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15260e00004c8b7424304d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424184d89f54c3b35f60d00007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424184156ff15970d00004989c6415648c7c001000000ff157d0d00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156f6842490000000017409584881c4a8000000c349c7c6010000004c8bac249000000041f6c50175394d8b5d084d89f44983c4027118488da424b000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b6424184d8b34244e8d2c75010000004983fd01750f49bec8a2660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15520b00000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424484d8b3648c7c001000000eb18488da424b800000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15280b00004c8b34244d89f54c3b35120b00007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15ac0a00004989c641564c8b7424104c89f34983fe017d18488da424c800000048b83060620800000000488b5d08ff2348c7c001000000ff156c0a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004881c4a8000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0041ebd849c7c601000000eb0749c7c6030000004983fe03750e4c89c0ff15870900004989c0eb004c8b9c24900000004d8b234d89db4d8b73204d89db4d8b6b284d89db4d8b5b38498d47a0483b45107306ff5550ca00794989c748c740f80b0000004c8958504c8968484c8b6c24104c89eb4c8968404c8b6c24304d89eb4c8968384c8b14244d89d54c8950304c8960284c8940204c8b5424704c8950184c8b9424a80000004c8950104c8b9424b00000004d8b52084c89500849baf019b609000000004c891048ba909f660800000000ffb424a000000041564155415441534c8b4c24504c8b542448ff15b10800004989c641564c8b7424104d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15450800004c8b7424404d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424204d89f54c3b35150800007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424204156ff15b60700004989c641564c8b7424384c89f34983fe017d18488da424d800000048b83060620800000000488b5d08ff2348c7c001000000ff15760700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b94248800000048c7c003000000ff124989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b2c244d896c2418488d6424084d8974241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b9c24900000004d8b2b4d89ea4d89db4d8b630849c7c0010000004d8d4ff04c3b4d107306ff5550ca00754d89cf49c741f80100000041c641ff404d890141514983c5027118488da424c800000048b8d006620800000000488b5d08ff234d89d34d2beb7118488da424c800000048b8d006620800000000488b5d08ff234983c5014983fd017d18488da424c800000048b8c012660800000000488b5d08ff234983fd017e5c4c89e24983ed027118488da424c800000048b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff12488b1c24ff15610500004989c5eb454983fe017d18488da424c800000048b85013660800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424304c89f34983fe017d18488da424d000000048b83060620800000000488b5d08ff2348c7c001000000ff15b40400004989c64156f60424010f85860000004c8b34244d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd0375624d89f64d8b2e488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd989f6208000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e98400000048c7c3010000004c8b342441f6c60175394d8b66084989dd4983c5027118488da424d800000048b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc14883fb017d18488da424d800000048b83060620800000000488b5d08ff2348c7c001000000ff15a2030000488b1c24ff1590030000488d642408ff157d030000ff156f0300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8ba424900000004d8b34244e8d2c75010000004983fd01750f49bea0a3660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b156e0200000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf41564c8b7424104d8b3648c7c001000000eb18488da424d000000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15cc0100004c8b34244d89f54c3b35b60100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec04a660800000000eb02415e4156ff15500100004989c6415648c7c001000000ff15360100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004c8b6424084d89e64983fc01750c488da424c80000004c89e8c3488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c4b8000000c3f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@8490,1,@18931,@14120,@13655,@123,@13601,@13572,@14121,@10958,@14122,@14123,@13169,@14124,@11908,@123,@13601,@13917,@12170,@14125,@11908,@123,@13601,@14126,@11908,@123,@13601,@13917,@14119,@10649,@13975|260,0,@14113 285,0,@105 402,0,@14114 478,0,@8483 529,0,@8486 572,0,@105 663,0,@195 840,0,@707 1129,0,@196 1393,0,@14115 1426,0,@105 1499,0,@1171 1534,0,@8201 1570,0,@731 1661,0,@117 1685,0,@117 1709,0,@117 1760,0,@8232 2051,0,@14116 2084,0,@105 2278,0,@14117 2291,0,@8207 2316,0,@1171 2372,0,@117 2533,0,@123 2570,0,@7652 2820,0,@105 2881,0,@8228 3106,0,@117 3246,0,@123 3288,0,@7652 3337,0,@731 3739,0,@14118 3752,0,@8207 3958,0,@123 3995,0,@7652 4047,0,@731 4426,0,@105 4458,0,@105 4492,0,@7248 4531,0,@105 4620,0,@7251 4737,0,@731 4859,0,@1171 4953,0,@105 5003,0,@731 5149,0,@8232 5374,0,@117 5514,0,@123 5556,0,@7652 14113:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18925,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14114:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8482,1,@18926|42,0,@105 14115:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18927,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14116:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18928,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14117:D3,136|483b65187305ff5558cd054989d64d8d57b84c3b55107306ff5550ca01404d89d749c742f8080000004d8b6e484d896a3849c74230010000004d8b6e404d896a28498942204d8b6e384d896a184d8b6e304d896a104d8b6e284d896a084d8b6e204d892a498b5608498b4610498b5e1849c7c10100000049b8989f620800000000ff22f400000000|@8489,1,@18929|121,0,@1171 14118:D3,128|483b65187305ff5558cd054989d64d8d57b84c3b55107306ff5550ca01404d89d749c742f8080000004d8b6e504d896a3849c74230010000004d8b6e484d896a28498942204d8b6e404d896a184d8b6e384d896a104d8b6e304d896a084d8b6e284d892a498b5608498b4610498b5e184d8b462049c7c101000000ff22f40000|@8489,1,@18930| 14119:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@741,1,@18939|32,0,@6950 137,0,@105 14120:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18932|33,0,@105 88,0,@1823 14121:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18933| 14122:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@18934|64,0,@1171 98,0,@105 14123:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@741,1,@18935|32,0,@105 14124:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18936|32,0,@105 87,0,@1823 14125:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18937|32,0,@105 87,0,@1823 14126:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@18938|33,0,@105 88,0,@1823 14127:D4,160|483b65187306ff5558ca0d01525341504c8b2c244d89ee41ff75004d89f64d89f541ff76184d89ed4d89ee41ff75284d89f641ff7630506a01f64424080175594c8b742408498b064d89f641ff76084c8b7424484d8b76084156ff742438ff742428ff742458488b5c24284c8b4424404c8b4c24584c8b542448ff15380000004989c4415d4c8924244c896c2408483b65187303ff5558eba0584883c440c3f4|@8494,1,@18945,@14128| 14128:D34,4208|488dbc24b8feffff483b7d187306ff5560ca0907534150415141524c8b701841ff36ff30ff7008ff70104c8b7424184c89f04983fe01750c49be981d620800000000eb69ff152e1100004989c641f6c601755041ff36498b46084883f8017504415eeb3dff15061100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15ca1000004989c6eb0a49bed8086208000000004156488b442420488b5c2438ff15a11000004989c64156ff34246a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15601000004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff342449c7c6010000004c8b2c2441f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441566a016a016a016a016a016a016a014c8b6c24384d89ee4983fd01754a4c8bb424900000004d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b6e204c896c24184d8b6e284c896c24204d8b6e304c896c24284d8b76384c89742430e96a02000049c7c5030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc0832b609000000004d89650041554c8bac24980000004d8b6d084d8b45004d8b6d0849c7c4010000004d8d5ff04c3b5d107306ff5550ca00714d89df49c743f80100000041c643ff404d89234d8d67e04c3b65107306ff5550ca00694d89e749c74424f8030000004d896c24104d895c240849bd7032b609000000004d892c244983c0027118488da424b000000048b8d006620800000000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d895d104d8965084d89450041554d89f64c89f34983fe017d18488da424b800000048b83060620800000000488b5d08ff2348c7c001000000ff15470e00004889c348bac0c0650800000000488b442450ff15270e00004989c54c8bb424a00000004d8b4e284d8d5fe84c3b5d107306ff5550ca00624d89df49c743f8020000004d896b0849c7030300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca005a4d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca006a4d89e749c74424f8040000004d895c24184c8b5424084d89d34d895424104c8b04244d89c24d894424084d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d084d8965004d89f64d8b0e4d89f64d8b66204d89f64d8b76384c894c24104d89d24c89542418488d6424084d89db4c895c2418488d6424084c896424184c896c242048c7442428010000004c897424304c8b3424ff742408ff7424184c8b642428ff7424304c8b5c24404c8b542448488bbc24a00000004c8b2f4e8d2c6d010000004c8b4c24784d8b014a8d1c45010000004983fd0175084d89c8e9b80000004883fb0175084989f8e9aa000000498d741dff4889f04883c01e49c7c01100000048d1e849d1e84833d249f7f0488d144501000000483b15af0b00000f871e0400004889d14c8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550cacc7e4d89c748d1e9498948f841c640ff414883ea0249c74490fc0000000048d1ee4989304c89e94889ff488d7708498d780848d1e9f3a44983c5104889d94d89c9498d710849d1ed4b8d3c2848d1e9f3a4418060ffbf4d8b284e8d0c6d010000004983f901750f49bde818620800000000e99d0000004c89cf4883c7024889f84883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d344501000000483b35db0a00000f873a0300004889f24c8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac05f4d89ef48d1ea498955f841c645ff414883ee0249c744b5fc0000000048d1ef49897d004c89c9498d7008498d7d0848d1e9f3a44983c11049d1e943c6440d002d418065ffbf498d5fb8483b5d107306ff5550ca007c4989df48c743f8080000004c8953384c895b304c8b1c244c895b284c8963204c896b184c8b6c24084c896b104c8b6c24104c896b084c89336a016a01488b9424f0000000488b8424980000004989e0ff12ff34246a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdc033b609000000004d892e48c70424010000004c89742408e9b2000000488b54243048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bc0034b609000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b5424104c8bac24080100004d8d77d84c3b75107306ff5550ca04204d89f749c746f8040000004c8b6424304d8966184c8b6424384d8966104c8b6424404c89e04d8966084d892e4156ff124989c641566a016a016a0154488b8424f000000048bb70ae66080000000049c7c0030000004c8b8c24e00000004c8b542428ff155c090000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648c7c003000000ff15190900004889c36a016a016a016a01488b44242049b8f8d166080000000049c7c1010000004989e2ff15e7080000415e415d415c415b488d642408498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c89306a016a016a016a014889e3ff1597080000415c415b415d415a4d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e104d895e084d8926eb30488da424c000000048b8f807620800000000488b5d08ff23488da424c000000048b8f807620800000000488b5d08ff234983fd01750949c7c501000000eb3b41f6c5010f85fd0000004d8b5d004d89dc4983fb01750949c7c503000000eb1b41f6c5010f85c50000004983fc010f8e8500000049c7c5010000004983f50241554c89f0488b5c24084c8b8424c80000004c8b4c2410ff15c00700004989c641564c8b7424084983fe03743f4c8bb424200100004983fe037431488b8424280100004c8b84241801000048c7c3010000004c8b8c24d000000049ba08d2660800000000ff156b070000eb004c8bb424280100004d8b7668eb6641f6c50175184d8b65084d89e5483b65187306ff5558ca0060e91affffff488da4240001000048b8e089620800000000488b5d08ff23488da4240001000048b8508a620800000000488b5d08ff23488da4240001000048b8508a620800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dd506000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e92a0500004d8b364d8b2e4c3b2d7106000075104d8b76104983fe030f84b6040000eb18488da4241001000048b87850620800000000488b5d08ff234c8bb424a00000004983fe0175374c8b34244c89f34983fe01750f488d6424205b4881c4e0000000eb16488b442420ff150a0600004889c3488da42408010000e9390400004c8bac24f80000004d89ee41ff75104d89f641ff7608488b54240848c7c003000000ff124989c64156f64424680175204c8b7424684d8b364d8b36498b06ff15ae0500004989c549c7c601000000eb18488da4242801000048b8e06d660800000000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424204c89f34983fe017507488b5c2440eb0e488b442440ff151c0500004889c34883fb017504415eeb12488b0424ff15fd0400004989c6488d6424084156488b842408010000ff15dd0400004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704242900000041f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff155a0400004989c4eb004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f00000041564c8bb424800000004d8b76104d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff159c0300004989c64156488b94248000000048c7c001000000ff124989c64156488b442408ff156e0300004989c641564c8bb424d80000004c89f34983fe017d18488da4244801000048b83060620800000000488b5d08ff2348c7c001000000ff152b0300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424084d89653049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049bec8a26608000000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b6424104d89e64d89651049c745080100000049c745000300000041554156ffb424e0000000488b842428010000488b9c240001000049c7c0010000004c8b4c24384c8b542430ff15290200004989c6415648c7c001000000488b5c24284c8b4424284c8b4c24204c8b9424e0000000ff15f80100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084881c4300100004883fb01750458c22000584c8b34244c897424204883c420ff254b010000488b8424e000000048c7c301000000ff152e0100004989c64156f6042401752d4c8b3424498b064d89f641ff7608488b9c2438010000ff15ff000000415d4c892c24483b65187303ff5558ebcd488d642408e90dfbffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dc400000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4241001000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d5700000075134d8b76104983fe030f8580faffffe917ffffff488da4241001000048b87850620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@8495,1,@18946,@15119,@15119,@13904,@13989,@14135,@14136,@14139,@14142,@13655,@13601,@12170,@14143,@14144,@14145,@13789,@14146,@15119,@15119,@10982,@14147,@14019,@14024,@14149,@14035,@13140,@14150,@14152,@14153,@10502,@14157,@14134|58,0,@250 165,0,@123 313,0,@105 529,0,@14129 645,0,@14130 673,0,@105 750,0,@731 782,0,@6845 1352,0,@200 1677,0,@14131 1765,0,@14132 1986,0,@8285 2097,0,@8492 2255,0,@117 2279,0,@117 2463,0,@8493 2533,0,@1025 2557,0,@1028 2581,0,@1028 2685,0,@788 2739,0,@621 2912,0,@7885 3450,0,@731 3559,0,@8228 4118,0,@828 4176,0,@621 14129:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8491,1,@18940|42,0,@105 14130:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18941,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14131:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18942| 14132:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18943|36,0,@105 14133:D3,160|483b65187305ff5558cd014c8b304983fe01750949c7c501000000eb0941f6c60175664d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080100000049bea89b6208000000004c8930c348b8508a620800000000488b5d08ff23f4000000000000|@8267,1,@18944|125,0,@1145 139,0,@1028 14134:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@18970| 14135:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18947| 14136:D7,408|483b65187306ff5558ca0907505341504151415248c7c3010000004c8b74242041f6c60175364d8b66084989dd4983c5027115488d64242848b8d006620800000000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242848b83060620800000000488b5d08ff2348c7c001000000ff15440100004889c348bac0c0650800000000488b442420ff15240100004989c641564c8b6c24204d8b75004d89ed498b55084c8b6c24184d8b6d004d2bf57115488d64243048b8d006620800000000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442410488b5c24084c8b442428ff156f000000ff15610000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424204c89700848c7000f0000004883c418c3f40000000000|@8496,1,@18948,@13572,@14138,@13140,@14137|58,0,@105 105,0,@731 137,0,@6845 198,0,@105 14137:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@741,1,@18950|53,0,@105 14138:D3,368|483b65187306ff5558ca0901534150a801750d4c8b30ff70084c8b6c2410eb0d488d64241048c7c001000000c341f6c50175474d8b5d004d8b65084d8b134d8b124d8b0e4d3bd175204d8d77f04c3b75107306ff5550ca00084d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0060ebb349c7c6010000004983fe01750f49be8846660800000000e9910000004d8b364d8b76084c8b6424084d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64241848b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408488b5c24184c8b442410e8c3feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f4000000|@742,1,@18949|137,0,@7619 192,0,@105 14139:D10,1160|483b65187306ff5558ca0907415041514152a8010f850b010000f6c3010f85fb000000ff30ff7008ff33ff7308488b54242848c7c003000000ff124989c641564c8b7424204d8b76104d8b2e4983fd050f85b30000004d8b66084d8b6e104c8b34244d8934244c8b7424284d89f04d8975004c8b7424104d89f54983fe01757d4c8b4c24504c8b5424484c89c348c7c001000000ff15360400004989c64d8b2e4983fd0d751a4c89f0488b5c243849c7c001000000ff150d0400004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424384d8965104d89750849c7450017000000e9d002000049c7c6010000004d89edeb2b488d64244048b830d3660800000000488b5d08ff23488d642418eb05488d64241848c7c001000000c2100041f6c50175364d8b5d084d89f44983c4027115488d64244048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b4424304d8b304d89c04d8b600849c7c3010000004d8d6ff04c3b6d107306ff5550ca00594d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb903fb609000000004d895d004983c6027115488d64245048b8d006620800000000488b5d08ff23498d5fe0483b5d107306ff5550ca00714989df48c743f8030000004d89e44c8963104c896b084c89334c8b4c24604c8b542458488b442420ff15810200004989c54d8b75004983fe0d751a4c89e8488b5c244849c7c001000000ff15570200004989c6eb374d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424484d8966104d896e0849c7061700000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15b2010000ff15a40100004989c641564c8b7424184c89f34983fe017d15488d64246048b83060620800000000488b5d08ff2348c7c001000000ff15670100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc8a26608000000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004883c4104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c7060300000041564c8b4424384983c0027115488d64244048b8d006620800000000488b5d08ff234c8b7424504c8b6c244841564155488b442428488b5c24184c8b4c24404c8b542438e8affbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c430c21000f400|@8500,1,@18952,@14141,@13655,@13601,@11046,@14136,@11046,@14136|272,0,@8497 334,0,@105 474,0,@14140 499,0,@105 798,0,@731 906,0,@8228 1052,0,@105 14140:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@18951,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14141:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18953|32,0,@105 87,0,@1823 14142:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@18954|32,0,@105 87,0,@1823 14143:D3,232|483b65187305ff5558cd01a8010f85c80000004c8b30488b40084d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b810d4660800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@18955|58,0,@6950 205,0,@8501 14144:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18956| 14145:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18957| 14146:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18958| 14147:D8,1448|483b65187306ff5558ca090353415041514c8b284d89ee4d8b65004983fc070f850c0100004d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd030f85dd0000004d8b76084d8b3641ff36ff7008ff70104c8b6c24184d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424304d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244048b800d5650800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745001100000041554c8b6c2420eb1c488d642418eb05488d64241848b880d4660800000000488b5d08ff2341f6c501754e4d8b5d004d8b65084d8b53104d8b1a4983fb0575244d8b5a084d8b52104d89334c8b5c24104d891a4d89e5483b65187306ff5558ca0060ebc1488d64244848b8c8ae660800000000488b5d08ff234c8b7424184983fe01750949c7c601000000eb3a41f6c6010f85600200004d8b264d89e54983fc01750949c7c603000000eb1b41f6c6010f852c0200004983fd010f8eef01000049c7c6010000004983fe03740c49c7c601000000e934030000488b442428488b1c2449c7c0010000004c8b4c2430ff15cb0300004989c641564c8b7424404d8b2e4d89f64d8b56084d89f64d8b66104d89f64d8b4e184d89f64d8b5e204c3b2d930300007502eb344d8b75004e8d3475010000004983fe01753c49bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb1a4983fc0175124983fb01750c49bdc0aa620800000000eb5feb004d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18d56608000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50d56608000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb5d41f6c60175184d8b6e084d89ee483b65187306ff5558ca0040e9b1fdffff488d64244848b8e089620800000000488b5d08ff23488d64244848b8508a620800000000488b5d08ff23488d64244848b8508a620800000000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155c0100004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500210000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bdc0aa6208000000004d896e104c8b2c244d896e08488d64240849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b44243048c7c3030000004c8b44240849c7c1010000004c8b542438ff15750000004889c34883fb017508415e4883c408eb12488b0424ff15520000004989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c3f400|@8510,1,@18959,@14148,@14017,@12170,@123,@14018|195,0,@6950 312,0,@8504 396,0,@8287 605,0,@123 651,0,@1263 827,0,@1263 872,0,@8507 916,0,@8509 1013,0,@1025 1034,0,@1028 1055,0,@1028 1217,0,@1263 14148:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18960| 14149:D3,128|483b65187305ff5558cd01504c8b34244c89f04983fe037e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d006620800000000488b5d08ff23e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@8325,1,@18961|54,0,@105 14150:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd984cb609000000004d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@741,1,@18963|62,0,@14151 88,0,@105 14151:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@8511,1,@18962|32,0,@105 14152:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18964| 14153:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@18966,@14154| 14154:D6,96|483b65187305ff5558cd094989de488b4018498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be204fb609000000004c89336a016a014989e0ff153d000000488d64240858ff1529000000ff251b000000f40000|@8512,1,@18967,@14156,@13982,@10900|51,0,@14155 14155:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@8254,1,@18965| 14156:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@523,1,@18968| 14157:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50206208000000004c8930c348c7c001000000c3f40000|@1073,1,@18969|105,0,@279 14158:D3,120|483b65187305ff5558cd054989d34989c64d8b2e498b46084d8b46104d8b4e184d8b56204d8b76286a016a01498b5308498b5b104d8b63184d8b5b204156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@8513,1,@18971| 14159:D3,120|483b65187305ff5558cd054989d34989c64d8b2e498b46084d8b46104d8b4e184d8b56204d8b76286a016a01498b5308498b5b104d8b63184d8b5b204156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@8514,1,@18972| 14160:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18989| 14161:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18974| 14162:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18975| 14163:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18976| 14164:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18977| 14165:D9,424|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1dbc01000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2068620800000000e98c0000004d8b364d8b2e4c3b2d5801000075064d8b7610eb15488d64241048b87850620800000000488b5d08ff234983fe03741f488d6424104c8b74240849c7060100000049895e0848c7c001000000c208006a016a014989e04c8b4c24184c8b542410ff15f7000000585b4c8b4424084159488d6424084c8b5424084c8b34244c897424084883c408ff25c900000041f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d3f00000075094d8b7610e919ffffff488d64241048b87850620800000000488b5d08ff23f4000000000000|@8516,1,@18980,@15136,@15136,@13718,@14166,@15136,@15136|110,0,@788 151,0,@621 358,0,@828 403,0,@621 14166:D6,1208|483b65187306ff5558ca09074150415141524883f801751a488d642410415e49c7060100000049895e0848c7c001000000c3ff30ff7008ff33ff7308ff73104c8b7424204d8b2e4c89e84d8b65004983fc0175424d8b6d084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd989f6208000000004d896e0849c70617000000eb0e488b5c2430ff153f0400004989c64156488b542418488b442438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155c0300004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd805cb609000000004d892e48c70424010000004c89742408e9b2000000488b54244048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104d896e0849bcc05cb609000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b7424104c8b5c24404d8b63084d89e54d8b14244983fa010f851c0100004d8b4c24084d89db4d8b53104d89db4d8b45004d89c44983f8057515488d64246048b8a8d2620800000000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6500eb044d8b6508eb084d8b6d084d8b65004d8d6ff04c3b6d107306ff5550ca005e4d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca006e4d89e749c74424f80400000049c7442418010000004d894c24104d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d89650849bcd8c86208000000004d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d89db4d895c24104d896c240849c704240b000000eb374d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d89db4d89dd4d895c24104d89ed4d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24204d895d084d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24284c896b084c89336a016a01488b4424484989e04c8b4c24604c8b542458e894fbffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15440000004989c64c8b6c24704d8975004c8b34244d897508488d64240848c7c0010000004883c470c3f4000000000000|@8517,1,@18981,@14170,@12170,@14169|129,0,@1171 442,0,@14167 530,0,@14168 718,0,@1545 904,0,@1484 14167:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18978| 14168:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18979|36,0,@105 14169:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18983,@11046|170,0,@105 287,0,@7233 14170:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18982| 14171:D5,264|483b65187306ff5558ca0907415041514152f6c3010f85c90000004c8b13ff73086a016a014c8b7424504c8b6c24484c8b6424404c8b5c243841564155415441534889c34c89d04c8d4424204c8b4c24404c8b542438ff15cc000000ff3424488b4424106a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b5c24484c8d4424204c8b4c24584c8b542450e863ffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15630000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c22000488d642410415e49c706010000004989460848c7c001000000c22000f400000000000000|@8518,1,@18984,@14173,@14172| 14172:D6,912|483b65187306ff5558ca09074989dc4c89cf41504c8b48084c8b68104c8b70184d8b364983fe017515488d64240848b808d5620800000000488b5d08ff2341ff364c8b374e8d3475010000004d8b194e8d045d010000004983fe0175084d89cbe9b20000004983f80175084989fbe9a40000004b8d7406ff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15e70200000f87c10200004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cac4774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89f1488d7708498d7b0848d1e9f3a44983c6104c89c1498d710849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f48bb0019620800000000e9990000004d89f14983c1024c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05190200000f87e60100004c89c7488d1cbd0400000048f7db4903df483b5d107205493bdf7206ff5550ca007f4989df48d1ef48897bf8c643ff414983e8024ac74483fc0000000049d1e94c890b4c89f1498d7308488d7b0848d1e9f3a44983c61049d1ee42c604332e8063ffbf6a016a014c89d24c8b4c24384c8b5424304c8b7424405441564d89e04c89e8ff12ff3424ff742410488b54244848c7c003000000ff124989c641564c8b7424284d8b6e084d8b65004983fc050f851c0100004d8b5d084d8b65104c8b2c244d892b4c8b6c24484d892c24498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004d89f64c89306a016a01488b5c24504c8b4424584c8b4c24684c8b54246054ff1536010000488b1c24ff7424084d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24204d896e184c8b6c24184d896e1049c746080100000049c70603000000498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883fb0175054889c3eb09ff15b40000004889c34883fb0175074c8b742428eb0e488b442428ff15910000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c22000488d64243848b8100f660800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@8519,1,@18986,@14175,@14174,@13825|48,0,@1556 298,0,@201 837,0,@7230 858,0,@117 879,0,@117 14173:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18985| 14174:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18988| 14175:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@18987| 14176:D25,2672|483b65187306ff5558ca0d075253415141524c8b284d89ee4983fd050f85fe0100004c8b7008498b064d8b6e2041ff75004d8b762841ff366a016a01488b5424384c8b742448544156488b5c24404c8b4c24384c8b542430e8a3ffffffff3424ff7424106a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd5871b609000000004d892e48c70424010000004c89742408e9b2000000488b54244848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424404d8966104d896e0849bc9871b609000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b442448488b5c24584c8b442450ff15aa0900004889c34883fb017507488b5c2408eb0e488b442408ff15870900004889c34883fb0175074c8b742428eb0e488b442428ff15640900004989c64156488b542408488b442458ff124c8bb424800000004156488b5c245049b870d86608000000004c8b4c24684c8b542460ff15220900004989c64c8bac24880000004c8b24244d896500488d6424104d89750848c7c0010000004883c468c210004d89f54983fe070f85e3000000ff70084c8b701841ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca00014d89ef49c745f80400000049beb09f6208000000004d8975184c8b7424204d89f14d8975104c8b7424184d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00274d89f749c746f80200000049c74608010000004d892e6a016a014c8b6c2440498b55084c8b6c245041566a01ff35220800005448830424184155488b442460488b5c2448ff12ff3424ff7424286a01e96e0500004d89ee4983fd030f8523010000ff7008488b581049c7c5010000004d8d77f04c3b75107306ff5550ca08214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca08014d89ef49c745f80400000049beb09f6208000000004d8975184c8b7424184d89f14d8975104c8b7424104d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca08274d89f749c746f80200000049c74608010000004d892e6a016a014c8b6c2438498b55084c8b6c244841566a01ff352d0700005448830424184155488b442458ff12ff34244c8b4424106a016a01488b5424504c8b742460544156488b442440488b5c24584c8b4c24504c8b542448e8e4fbffffff3424ff7424104c8b742438498b06ff15cf0600004989c549c7c601000000e9950300004983fe09755a4c8b70104d8b364983fe017515488d64242048b808d5620800000000488b5d08ff234d8b36498b4608488b1c24ff157f0600004989c6488d6424084c8b6c242849c74500010000004d89750848c7c0010000004883c418c210004c8b70084d8b6e1041ff75004d8b6e1841ff75004d8b6e2041ff75004d8b6e3841ff7500498b066a016a01488b5424484c8b742458544156488b5c24504c8b4c24484c8b542440e814fbffffff3424488b4424104d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8b7424304d8970184c8b7424404d89f14d8970104c8b7424384d89f24d89700849bea072b609000000004d89304c8b7424604156488b5c2420ff15a20500004989c64156488b54244848c7c003000000ff124989c6415649c7c6ffffffff4d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d89342449be60c66208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d897500498d5fe0483b5d107306ff5550ca00304989df48c743f8030000004c896b104c89630848c703050000004c8b34244d8934244c8b7424484d897500488b442438ff15e1040000488b5c24504c8b442448ff15c90400004989c641564c8b6c24384d89ee4983fd017515488d64247048b860dd660800000000488b5d08ff234d89f64d8b36498b4610488b5c2450ff15840400004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15490400004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c70603000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb0175074c8b642410eb0e488b442410ff15880300004989c44c8b2c244d89ee4983fd017d15488d64246848b800d5650800000000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89f64d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706110000004c8b6c24704d8965004d89750848c7c0010000004883c460c2100041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424104c89f34983fe017507488b5c2428eb0e488b442428ff15850200004889c34883fb017504415eeb12488b0424ff15660200004989c6488d6424084c8b6c24784d8975004c8b34244d897508488d64240848c7c0010000004883c460c21000f644240801754f4c8b742408498b064d89f641ff7608488b5c2448ff15110200004c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15ed0100004989c4415d4c8924244c896c2408483b65187303ff5558ebaa415d49c7c6010000004883c40841f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b742420498b06ff156b0100004989c648c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c6eb09ff15fa0000004989c64156498d47e0483b45107303ff55504989c748c740f80300000048c74010010000004c8b6c24084d89ee4c89680848c700290000004d89f641f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1573000000eb004c8b7424684156488b5c243849b8e0dd6608000000004c8b4c24504c8b542448ff15430000004989c64c8b6c24704c8b24244d896500488d6424084d89750848c7c0010000004883c458c21000f4000000|@8555,1,@19025,@14213,@12170,@14242,@13789,@14243,@13559,@14244,@14245,@14246,@13572,@14247,@14212,@14248,@14213,@14249,@13789,@8601,@8603,@14213,@14252,@14253,@14212|155,0,@14177 243,0,@14178 478,0,@8520 640,0,@1172 877,0,@1172 1114,0,@1556 1329,0,@14180 1429,0,@1469 1585,0,@8549 1879,0,@6950 2605,0,@8552 14177:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18990| 14178:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@18991|36,0,@105 14179:D3,32|483b65187305ff5558cd0948b880d8660800000000488b5d08ff23f400000000|@8523,1,@18992|13,0,@8521 14180:D4,216|483b65187305ff5558cd0d4c8b721841f6c6010f85a90000004d8b264d8b6e084883f801756c4d8b7424084d8b6e084d8b6d004983fd05755549bd20d96608000000004c8b62084c8b42104d89f14889d84c89e34c89ea49c7c201000000ff158c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3498b06c34989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0d40e94dffffff48b8c89d620800000000488b5d08ff23f40000000000|@8523,1,@19023,@14181|59,0,@8524 157,0,@105 196,0,@1158 14181:D22,3768|483b65187306ff5558ca0d075250534150415141524c8b7424084d8b6e084d8b65004983fc050f854c020000488d64241041ff750841ff75104c8b7424084d89f54983fe010f858301000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb09f6208000000004d8975184c8b7424184d8975104c8b7424204c89f34d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e41564c8b7424304983fe03740c49bec0aa620800000000eb384c8b6c24384d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b44242049b850d96608000000004c8b4c2410ff15320e00004989c641564c8b6c24404d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b442428488b5c244049b8a0d96608000000004c8b4c2418ff15eb0d00004989c641564c8b6c24484d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b442430488b5c244849b8f0d96608000000004c8b4c2420ff15a40d00004989c641564c8b742420498b06ff15890d00004989c549c7c601000000e9f10a000049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049beb09f6208000000004d897424184c8b7424184d897424104c8b7424204d897424084c8b34244d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d8926415649c7c6010000004d89ede9240600004d89f6498b06488b5c2418ff15b70c00004989c641566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd3088b609000000004d892e48c70424010000004c89742408e9b2000000488b54242848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849bc7088b609000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442438ff124989c641564c8b7424304d8b76084d8b264d89e54983fc057515488d64245848b840da660800000000488b5d08ff234983fd0375064d8b7610eb044d8b760841564c8b7424304983fe030f85d6000000488d6424084c8b34244d8b2e4983fd0d751c4c89f048c7c30300000049c7c001000000ff151c0b00004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510030000004d89f64d89750849c74500170000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bcb8006608000000004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049beb01e6508000000004d89750849c745001b000000e9ef0000004c8b34244983fe017513488d6424084c8b7424504d8b6e08e9d200000048c7c001000000ff153d0a00004989c641564c8b7424084c89f34983fe017d15488d64246848b83060620800000000488b5d08ff2348c7c001000000ff15000a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64241049c746100100000049bdb8da6608000000004d896e084c8b6c24504d8b6d084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bca0aa6208000000004d8966184d896e1049bd887e6408000000004d896e0849c7060100000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15fe0800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c7061700000041564c8b6c24104d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15900800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d89ed4d896e0849c7061700000041564c8b6c24184d8b75004983fe0d751c4c89e848c7c30700000049c7c001000000ff15220800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610070000004d89ed4d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004883c40841f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15be0600004989c5eb004c8b24244d89e64983fc017509488d6424504c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c448c341f6c50175364d8b5d084d89f44983c4027115488d64244048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156498d47e8483b45107303ff55504989c748c740f8020000004c8b7424404d8b76084c89700849be3089b609000000004c8930ff74240848bbb8da6608000000004c8b4424384c8b4c24084c8b542428ff15d10500004989c641564c8b7424404983fe03740c49bec0aa620800000000eb77498d47d0483b45107303ff55504989c748c740f8050000004c8b7424484d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424204c89700849be7089b609000000004c8930ff74241048bb68db6608000000004c8b4424404c8b4c24104c8b542430ff15390500004989c64156498d47d0483b45107303ff55504989c748c740f8050000004c8b7424504d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424284c89700849be908bb609000000004c8930ff74241848bbd8db6608000000004c8b4424484c8b4c24184c8b542438ff15b80400004989c64156498d47d0483b45107303ff55504989c748c740f8050000004c8b7424584d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424304c89700849beb08db609000000004c8930ff74242048bb48dc6608000000004c8b4424504c8b4c24204c8b542440ff15370400004989c641564c8b742430498b06ff151c0400004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d84c3b75107303ff55504d89f749c746f80400000049bda0aa6208000000004d896e184c8b6c24204d896e1049bd887e6408000000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff156b0200004989c5eb004c8b24244d89e64983fc017509488d6424704c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c468c341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d84c3b75107303ff55504d89f749c746f80400000049bda0aa6208000000004d896e184c8b6c24584d8b6d084d896e1049bd887e6408000000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff156e0000004989c5eb004c8b24244d89e64983fc017509488d6424604c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c458c3f4000000|@8545,1,@19011,@12170,@12170,@14201,@14202,@14202,@14202,@14202,@12170,@11046,@11046,@11046,@14209,@11908,@11046,@14210,@14200,@13588,@13592,@13596|145,0,@1172 239,0,@1263 283,0,@8525 346,0,@8527 409,0,@8529 536,0,@1172 709,0,@14188 797,0,@14189 964,0,@8531 1152,0,@7165 1200,0,@5750 1293,0,@731 1401,0,@8534 1493,0,@1262 1511,0,@4661 2230,0,@105 2305,0,@14190 2322,0,@8534 2369,0,@1263 2449,0,@14191 2466,0,@8538 2570,0,@14194 2587,0,@8541 2691,0,@14197 2708,0,@8544 2862,0,@1262 2885,0,@4661 3359,0,@1262 3386,0,@4661 14182:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8526,1,@18993,@14183| 14183:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18994,@11046|170,0,@105 287,0,@7233 14184:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8528,1,@18995,@14185| 14185:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18996,@11046|170,0,@105 287,0,@7233 14186:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8530,1,@18997,@14187| 14187:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@18998,@11046|170,0,@105 287,0,@7233 14188:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@18999| 14189:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@19000|36,0,@105 14190:D3,24|483b65187305ff5558cd0d488b4208c3f400000000000000|@8535,1,@19001| 14191:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b818db6608000000004c896c2410ff251c000000f4000000|@8535,1,@19004,@13596|41,0,@8536 14192:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8537,1,@19002,@14193| 14193:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@19003,@11046|170,0,@105 287,0,@7233 14194:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b888db6608000000004c896c2410ff251c000000f4000000|@8535,1,@19007,@13592|41,0,@8539 14195:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8540,1,@19005,@14196| 14196:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@19006,@11046|170,0,@105 287,0,@7233 14197:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b8f8db6608000000004c896c2410ff251c000000f4000000|@8535,1,@19010,@13588|41,0,@8542 14198:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@8543,1,@19008,@14199| 14199:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@19009,@11046|170,0,@105 287,0,@7233 14200:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19022| 14201:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19012| 14202:D10,1136|483b65187306ff5558ca09074d89c65053415141524d8b064d8b760849c7c4010000004d8d6ff04c3b6d107306ff5550ca00514d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00414d89ef49c745f8030000004d8975104c8b34244d89f44d89750849bea095b609000000004d8975004983c0027115488d64242848b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d89e44d8966104d896e084d8906415649c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107306ff5550ca00014d89f749c746f8020000004c8b2c244d896e0849bdf096b609000000004d892e41564c8b7424284c89f34983fe017d15488d64244048b83060620800000000488b5d08ff2348c7c001000000ff15630300004889c348bac0c0650800000000488b442420ff15430300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e104c8b6c24184c89e84d896e084c8b2c244d892e4c8b6c2450498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933488b542440ff124989c641564c8b742408498b06ff15690200004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd017508415e4883c410eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c41041564c8b7424184d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff156e0100004c8b74240841ff364c8b7424384d89f54c3b354f0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424384156ff15f00000004989c641564c8b7424404c89f34983fe017d15488d64245848b83060620800000000488b5d08ff2348c7c001000000ff15b30000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f400000000|@8548,1,@19016,@14207,@11908,@123,@13601,@14208,@13140,@14205|117,0,@14203 142,0,@105 280,0,@14204 314,0,@731 346,0,@6845 868,0,@123 905,0,@7652 954,0,@731 14203:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@19013,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14204:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8546,1,@19014|42,0,@105 14205:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd2098b609000000004d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@741,1,@19019|62,0,@14206 88,0,@105 14206:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@8547,1,@19015|32,0,@105 14207:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19017|32,0,@105 87,0,@1823 14208:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19018| 14209:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19020|32,0,@105 87,0,@1823 14210:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a80f660800000000488b5d08ff23f40000|@7237,1,@19021,@11046|170,0,@105 287,0,@7233 14211:D3,32|483b65187305ff5558cd0948b8f0dd660800000000488b5d08ff23f400000000|@8523,1,@19024|13,0,@8553 14212:D4,24|483b65187306ff5558ca0901ff251e000000f40000000000|@8604,1,@19067,@14254| 14213:D4,48|483b65187306ff5558ca09076a016a014c8b742418415041564c8d442410ff152400000058488d642408c20800f40000|@8556,1,@19028,@14214| 14214:D6,1112|483b65187306ff5558ca090750534150415141526a016a014c8b6c24304d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd60a1b609000000004d892e48c70424010000004c89742408e9b2000000488b54241848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849bca0a1b609000000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24304d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b74241049c7c4010000004c8b6c243041f6c50175364d8b55084d89e34983c3027115488d64244048b8d006620800000000488b5d08ff234d89d54d89dc483b65187306ff5558ca0070ebc44983fc017d07488d642440eb564c3b25d20200007d484c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c8b642430eb15488d64244048b8d055620800000000488b5d08ff2341f6c401756e4d8b14244d8b5c24084d8b0a4d8b42084d8d57f04c3b55107306ff5550ca007b4d89d749c742f8010000004d89024d8b45f849c1e00849c1e8074983c8014d3bc87215488d64244048b80057620800000000488b5d08ff234f89548dfc4d89dc483b65187306ff5558ca0070eb8c4d8b5df849c1e30849c1eb074983cb0149c7c4010000004983fb010f85960000004c89e06a016a014c8b4424604c8b6c245841564155ff35f3010000488d5c24184c8b4c24404c8b542448ff15d6010000415e415d4983fd037525488d642428415e4c8b6c24084d892e49c746080300000048c7c0010000004883c410c210004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000e9930000004d89d94983e9024d89da4983ea024d89d84983e8024f8b4485fc4983f8017515488d64244048b808d5620800000000488b5d08ff23498b384d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8962084d89024d89cb4d89d4483b65187306ff5558ca0078e9cdfeffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff158f0000004989c4eb004c8b2c244d89ee4983fd01750a488d6424284d89e5eb374d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004883c420415e4d892e49c746080100000048c7c0010000004883c410c21000f4ffffffffffffff01|@8558,1,@19029,@12170,@14217,@8557|75,0,@14215 163,0,@14216 328,0,@105 463,0,@657 557,0,@664 815,0,@1556 14215:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@7822,1,@19026| 14216:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@7823,1,@19027|36,0,@105 14217:D4,240|483b65187306ff5558ca090753415041514152a8010f85a4000000ff30488b40086a016a014c8b7424504c8b6c24484c8b642440415641554154488d5c24184c8b4424404c8b4c24384c8b542430e8adffffff415e415d498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933584c8b4424184c8b4c2410488b7c2408415d488d6424184c8b6424184c8b5c24104c8b542408ff34244c895424084989fa4c895c24104c896424184c896c2420ff2549000000488d642418415d49bee09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c21800f4000000000000|@1573,1,@19039,@14218|200,0,@1174 14218:D31,3656|488dbc2418ffffff483b7d187306ff5560ca09074150415141524c8b70084d8b264d89e54983fc0375654d8b6e08498b4610ff33488b5424104c89ebff12488b5c2408ff15ef0e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424184d897500415e4d892e49c746080100000048c7c001000000c220004983fd050f855f03000041ff760841ff761041ff76184c8b34244d89f241ff364d89d24d8b7218ff30ff33ff730849c7c4010000004d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f80100000041c645ff404d89650041554c8b6c24784d8d67d84c3b65107306ff5550ca00644d89e749c74424f80400000049bbb09f6208000000004d895c24184d896c24104c8b6c24404d89eb4d896c24084c8b2c244d892c244d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f80200000049c74508010000004d89650041554c8b6424784c8b4c24704d8d6fb04c3b6d107306ff5550ca005e4d89ef49c745f8090000004d894d404c8b0c244d894d384d89d24d8955304c8b5424404d8955284d8975204d89db4d895d184c8b5c24284d895d104d89650849bcd0b2b609000000004d89650041556a016a014c89f048bbc0df6608000000004989e0ff15500d0000ff3424488b442410ff153a0d0000ff152c0d00004989c6415648bad8ce620800000000488b442408488b5c2460ff15050d00004989c641f6c6010f8594010000488d64245041ff364c8b6c24084d8b75004e8d3475010000004983fe01750f48bb801f650800000000e9a80000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc20b00000f871b0100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f14d89ed498d7508488d7b0848d1e9f3a44983c6104d89f549d1ed42c6042b3a49d1ee42c64433010a8063ffbf49be1800b60300000000498b06ff15070c000049be1800b60300000000498b064c8b402048bb7805620800000000ff15de0b0000ff35d00b000048bad0df66080000000048c7c001000000ff15b10b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893049be580c110a00000000498b16ff12488b1424ff15660b0000488d64241048b818e2660800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff236a016a01488b44247048bba0e26608000000004989e0ff15180b0000488d64240858ff15040b0000ff15f60a00004989c641566a016a01ff742418ff742418e98c01000041ff76084d8b7610ff30ff33ff73084d8b6e084c89e86a016a014d8b65004983fc010f859700000041ff7508488b542468488b442438ff124989c64d8b2e4983fd0d75194c89f0488b1c2449c7c001000000ff15800a00004989c5eb374d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b24244d8965104d89750849c74500170000004c8b34244c3b742428488d642408750949c7c603000000eb0749c7c6010000004c892c244c89742408eb1b488b5c2430ff15060a00004989c64c89342448c744240801000000488b0424ff7424086a016a01488b5424684c8b8c24800000004c8b742470ff7424504156488b5c24504c8d4424104c8b542458ff12415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c24084d892c244c8b6c24184983fd0375244c8b2c244983fd03488d6424087507488d642440eb0c488d64244049c7c601000000eb0c488d64244849c7c601000000415d4d8965004d89750848c7c001000000c220004c8b7424084d89f54983fe01752e4c8b34244983fe01488d642408750e488d64240849c7c603000000eb0c488d64240849c7c601000000e9ad0000004d89ed4d8b75004d89ed41ff7508f6442408010f85880000004c8b6424084d89e541ff34244d89ed41ff7508498b06ff15cb0800004989c64d8b2e4983fd0d75524d8b76084c8b6c24084d8b6d004d3bf5750949c7c603000000eb0749c7c6010000004983fe0375234c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e938ffffff488d642428eb05488d64242849c7c601000000eb0c488d64241849c7c6010000004983fe037559488b542438488b842488000000ff124989c54c8b7424704d8b76104d8b264983fc0175204d8b66084c8b7424604d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c6010000004c892c244c89742408e922060000f6442410017442488b442418ff15da07000048ba2814660800000000488b9c24880000004c8b4424404c8b4c2438ff15b00700004989c64c89342448c744240801000000e9d905000049c7c6010000004c8b6c241041f6c50175394d8b5d084d89f44983c4027118488da424a000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8bb424900000004d8b064d89f64d8b760849c7c4010000004d8d6ff04c3b6d107306ff5550ca00514d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00414d89ef49c745f8030000004d8975104c8b34244d89f44d89750849be20c8b609000000004d8975004983c0027118488da424b000000048b8d006620800000000488b5d08ff234d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d89e44d8966104d896e084d890641564c8b7424104c89f34983fe017d18488da424b800000048b83060620800000000488b5d08ff2348c7c001000000ff15530600004889c348bac0c0650800000000488b442428ff15330600004989c549c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d89660849bc70c9b609000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240300000049c7c3010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184d8975104c8b7424104d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424684d8966084d892e4156488b442448ff150e05000048ba2814660800000000488b5c24184c8b04244c8b4c2468ff15e80400004989c641564c8b742410498b06ff15cd0400004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd017508415e4883c410eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c41041564c8ba424900000004d8b34244e8d2c75010000004983fd01750f49bec8a2660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15900300000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424204d8b3648c7c001000000eb18488da424c800000048b8f807620800000000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d60200004c8b74241041ff364c8b7424084d89f54c3b35b70200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424084156ff15580200004989c641564c8b7424404c89f34983fe017d18488da424e800000048b83060620800000000488b5d08ff2348c7c001000000ff15180200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8974243048c7442438010000004883c430ff3424ff7424104c8b742458498b06ff155d0100004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd0175074c8b742408eb2f4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e0849c7061f0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24684d896c24084d8934244c8b7424604983fe0375534c8b34244983fe03488d6424087533488da424880000004c8b34244983fe05488d642408750e488d64241049c7c603000000eb0c488d64241049c7c601000000eb0f488da424a000000049c7c601000000eb0f488da424a800000049c7c601000000415d4d8965004d89750848c7c001000000c22000f4ffffffffffffff01ffffffffffffff01|@8586,1,@19040,@13789,@14229,@11908,@123,@13601,@13789,@13570,@13668,@13140,@14230,@13570,@13668,@10728,@14232,@11046,@14233,@13982,@10900,@14234,@14223,@8597,@10512,@10517,@10934,@14241,@10905,@10900,@14228|269,0,@1172 440,0,@14219 463,0,@8561 507,0,@1525 577,0,@5757 760,0,@1 779,0,@1 796,0,@93 818,0,@8562 883,0,@15289 913,0,@8580 934,0,@117 959,0,@8583 1760,0,@7256 1854,0,@105 1997,0,@14226 2025,0,@105 2106,0,@731 2138,0,@6845 2241,0,@14227 2444,0,@7256 2667,0,@8228 2892,0,@117 3036,0,@123 3073,0,@7652 3125,0,@731 14219:D18,2288|483b65187305ff5558cd0552504c8b7424084d8b6e304c89e84d8b6d104d8b65004983fc010f85d604000041ff75084d89f64d8b66284d89e54983fc010f85cf0000004d89f6498b5608488b442408ff124989c54d8b75004983fe0d751e4c89e8488b1c2449c7c001000000ff15060900004989c6488d642418eb3f4d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424084d896e0849c706170000004883c4104d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2595080000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c34d89f64983fd030f85730300004d89f6498b4620ff153c0800004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85eb0100004c8b7424104d8b6e184d89ec4d8b6d004d89f64d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba60bcb609000000004d8914244983c5027115488d64242048b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca00784989c748c740f8030000004d89db4c8958104c8960084c89284d89f6498b5608ff124989c54d8b75004983fe0d751a4c89e8488b5c240849c7c001000000ff15020700004989c6eb374d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424084d8966104d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424184d8b6424104d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb38df6608000000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e93e0400004c8b742410498b5608488b442408ff124989c64d8b2e4983fd0d751e4c89f0488b1c2449c7c001000000ff15d00500004989c5488d642410eb404d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b24244d896510488d6424084d89750849c74500170000004883c4084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004c8b24244d8b642410488d6424084d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb10696608000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000e9bf0200004d89f6498b5608488b442408ff124989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c410ff258f040000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c34d89f64d8b66284d89e54983fc010f85f500000049bde80a110a000000004d8b5d0049bdf80a110a000000004d8b650049bd080b110a000000004d8b4d0049bd180b110a000000004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8086208000000004d8965004d89f64d89f64d8b46384d89f64d8b56404155488b5c240849c7c101000000ff159d0300004989c6488d6424104d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff256d030000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c34d89f64983fd030f859d00000049bde80a110a000000004d8b5d0049bdf80a110a000000004d8b650049bd080b110a000000004d8b4d0049bd180b110a000000004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8086208000000004d8965004d89f65b4d89f64d8b46384d89f64d8b5640488d642408ff342449c7c1010000004c896c2408ff258402000049bde80a110a000000004d8b5d0049bdf80a110a000000004d8b650049bd080b110a000000004d8b4d0049bd180b110a000000004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8086208000000004d8965004d89f65b4d89f64d8b46384d89f64d8b5640488d642408ff342449c7c1010000004c896c2408ff25df01000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2593010000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15430100004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d5000000ff15c70000004989c6415648c7c001000000ff15ad0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc04a6608000000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c3f4|@8560,1,@19031,@14221,@11908,@13601,@12170,@12170,@13566,@14102,@11046,@13566,@11046,@11046,@11046,@10728,@11046,@11046|483,0,@14220 508,0,@105 753,0,@8559 1068,0,@7849 1303,0,@15266 1317,0,@15267 1331,0,@15268 1345,0,@15269 1402,0,@123 1561,0,@15266 1575,0,@15267 1589,0,@15268 1603,0,@15269 1660,0,@123 1718,0,@15266 1732,0,@15267 1746,0,@15268 1760,0,@15269 1817,0,@123 2220,0,@7652 14220:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@19030,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14221:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19032|33,0,@105 88,0,@1823 14222:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@19033| 14223:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@8563,1,@19034| 14224:D3,2296|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8708c620800000000c34c8b284d89ec4d8b6d004983fd010f85d30300004d8b6c240841ff74241041ff7424184983ee0241567115488d64241848b8d006620800000000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdd8f5620800000000e95d0200004d89f64983ee027115488d64241848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bee807110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8f5620800000000e9630100004d89f64983ee027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bee807110a00000000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be7800110a00000000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8166308000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e06608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8708c620800000000c34d8b74240841ff74241041ff74241841ff7424204983ed0241557115488d64242048b8d006620800000000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdd8f5620800000000e9570300004d89ed4983ed027115488d64242048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee807110a00000000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8f5620800000000e95d0200004d89f64983ee027115488d64242848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bee807110a00000000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdd8f5620800000000e9630100004d89f64983ee027115488d64243048b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed807110a00000000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d006620800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed807110a00000000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8166308000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58b06208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b06208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8166308000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08e16608000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@8579,1,@19035|26,0,@1044 85,0,@105 119,0,@1756 148,0,@105 198,0,@15218 232,0,@1756 261,0,@105 316,0,@15218 352,0,@105 407,0,@15099 452,0,@1985 501,0,@866 545,0,@1315 633,0,@866 678,0,@1315 770,0,@1987 915,0,@866 960,0,@8565 1045,0,@1044 1089,0,@105 1123,0,@1756 1152,0,@105 1202,0,@15218 1236,0,@1756 1265,0,@105 1320,0,@15218 1354,0,@1756 1383,0,@105 1438,0,@15217 1474,0,@105 1529,0,@15217 1574,0,@1985 1622,0,@866 1667,0,@1315 1755,0,@866 1799,0,@1315 1887,0,@866 1932,0,@1315 2024,0,@1987 2169,0,@866 2214,0,@8572 14225:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8584,1,@19036| 14226:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c012660800000000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d006620800000000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@7253,1,@19037,@13169|36,0,@7248 77,0,@105 169,0,@7251 230,0,@7251 14227:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8585,1,@19038|42,0,@105 14228:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@19054,@11046|170,0,@105 287,0,@7791 14229:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19041|32,0,@105 87,0,@1823 14230:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd90ccb609000000004d892e41564883c0027115488d64240848b8d006620800000000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@741,1,@19043|62,0,@14231 88,0,@105 14231:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@8587,1,@19042|32,0,@105 14232:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@19044,@11046|170,0,@105 287,0,@7791 14233:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@523,1,@19045| 14234:D4,48|483b65187305ff5558cd05488b5a084c8b421049baa0e466080000000049b9d8e4660800000000ff251b000000f40000|@8591,1,@19048,@14237|21,0,@8588 31,0,@8590 14235:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8589,1,@19046| 14236:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8589,1,@19047| 14237:D4,88|483b65187306ff5558ca09075341504151415248c7c3010000004c8b4424104c8b4c24184c8b542410ff15410000004989c64c3b3424488d642408740d5a48b8a015620800000000ff22488d64240848c7c001000000c3f4|@8592,1,@19049,@14238|64,0,@165 14238:D6,696|483b65187306ff5558ca09074150415141524c8b284d89ee4983fd057509488d64241058c210004d89f54983fe09754d488d6424084c8b7008ff7010488b5424084c89f0ff12488b442410482b0424488d642418711048b8d006620800000000488b5d08ff234883c0014883f8017e03c2100048c7c001000000c210004d89ee4983fd07755c488d642408ff7008488b542408488b0424ff124c8b34244d8b36488d6424104e8d347501000000488b0424492bc6488d642408711048b8d006620800000000488b5d08ff234883c0014883f8017e03c2100048c7c001000000c210004983fe037510488d642408ff7008ff3424e9290100004c8b7008ff7010ff7018ff70204983ee014903de537115488d64243848b8d006620800000000488b5d08ff23488b5c2430ff15b10100004989c64983fe017563488b542448488b442410ff124c8b7424484c8b6c2440ff742420ff358001000041564155ff742438488b44243048c7c3010000004c8b4424584c8b4c24504c8b542428ff154f0100004989c64156488b542448488b442418ff1258488d642438c2100041ff36488b542450488b442418ff12ff742410ff742440f644240801754f4c8b742408498b064d89f641ff76084c8b7424684c8b6c246041564155488b5c24304c8b4424184c8b4c24584c8b542450e811feffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaa488d642410488b542448488b442418ff12584883c438c210004c8b34244983fe017e3f488b54241048b8b017620800000000ff124c8b2c244983ed027115488d64242048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b442410482b0424488d6424087115488d64241048b8d006620800000000488b5d08ff23488d6424104883c0014883f8017e03c2100048c7c001000000c21000f400000000000000|@8593,1,@19050,@14240,@8595,@14239|88,0,@105 189,0,@105 278,0,@105 562,0,@187 589,0,@105 646,0,@105 14239:D3,424|483b65187305ff5558cd094c8b284d89ee4983fd05750848c7c001000000c34d89f54983fe09754c4c8b68104c3beb7f3b4989de4d2bf5711048b8d006620800000000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34d89ee4983fd0775574c8b70084d8b364e8d2c75010000004c3beb7f3b4989de4d2bf5711048b8d006620800000000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34983fe03754c4c8b68084c3beb7f3b4989de4d2bf5711048b8d006620800000000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34c8b68204d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000049891e41554156f644240801754a4c8b742408498b064d89f641ff76084c8b6c24084d89ee4983fd01750949c7c401000000eb0e4d89f6498b1ee87cfeffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaf584883c408c3f400000000|@8596,1,@19052|59,0,@105 155,0,@105 237,0,@105 14240:D4,1576|483b65187306ff5558ca09074989dd415041514152a8010f85a80200004c8b30ff70084d8b264d89e34983fc05751a488b54241048b8a015620800000000ff12ff742408e9120500004d89dc4983fb010f859d0000004983ed01488b5c24084903dd7115488d64242048b8d006620800000000488b5d08ff23488b5424404c8b5424484c8b6c24384c8b642430415541544c89f04c8b4424284c8b4c2420ff124989c058488b7c24085e488d6424104c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c240848c7c3010000004c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e90dffffff4d89e54983fc090f858c000000498b460841ff7610488b542418ff124c8b4424204c2b0424488d6424087115488d64242048b8d006620800000000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e974feffff4983fd070f859a00000041ff7608488b542418488b0424ff124c8b34244d8b36488d6424084e8d3475010000004c8b4424184d2bc67115488d64242048b8d006620800000000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e9d0fdffff41ff760841ff76104c8b7424104d89f54983fe017509488d64242858c228004c8b24244983ec014c8b7424184d03f441567115488d64243848b8d006620800000000488b5d08ff234c8b7424404983fe037505e91f0100004c8b6424304d89e64c3b6424107f05e90b0100004d89f64c2b7424107115488d64243848b8d006620800000000488b5d08ff234983c60141554156eb09488d64241058c22800f6442408010f85820000004c8b742408498b064d89f641ff76084c8b304983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb39488b5c2408ff15150300004989c641f6c60175194d8b26415d4c8924244c896c2408483b65187303ff5558eb81488d64241849c7c601000000eb284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c4084983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe037519488b54242848b8a015620800000000ff12ff3424e9d3000000488d642410ff34244c8b34244983fe017e3f488b54242048b8b017620800000000ff124c8b2c244983ed027115488d64243048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424204c2b0424488d6424087115488d64242048b8d006620800000000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e96dfbffff4c8b34244983fe017e3f488b54243048b8b017620800000000ff124c8b2c244983ed027115488d64244048b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424604c2b0424488d6424087115488d64243048b8d006620800000000488b5d08ff234983c001488b4424105b488b7c2418488b7424104c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c24304c894c24304989f94c895424384989f24c895c24404c896424484c896c24504883c428e9a5faffff4c8b34244983fe017e3f488b54241848b8b017620800000000ff124c8b2c244983ed027115488d64242848b8d006620800000000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424484c2b4424087115488d64242048b8d006620800000000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e9def9fffff40000000000|@8594,1,@19051,@14239|54,0,@165 107,0,@105 294,0,@105 458,0,@105 618,0,@105 685,0,@105 942,0,@165 985,0,@187 1012,0,@105 1069,0,@105 1188,0,@187 1215,0,@105 1272,0,@105 1388,0,@187 1415,0,@105 1468,0,@105 14241:D3,112|483b65187305ff5558cd01a8017552ff30488b40084c8b34244d8b76084983fe037534e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99fffffff48c7c001000000c3f4000000000000|@523,1,@19053| 14242:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19055| 14243:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19056| 14244:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19057| 14245:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19058| 14246:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19059| 14247:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@19060,@11046|170,0,@105 287,0,@7791 14248:D3,264|483b65187305ff5558cd09a8010f85e80000004c8b30488b40084d8b2e4d8b76084d8b264d8b1c244983fb010f85b90000004d8b6424084d8b5e084d8b56104d8d77e04c3b75107306ff5550ca093c4d89f749c746f80300000049895e104d89660849c706090000004d8d67e04c3b65107306ff5550ca096c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b810e6660800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@19061|237,0,@8598 14249:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d006620800000000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e85f660800000000488b5d08ff23f40000|@7793,1,@19062,@11046|170,0,@105 287,0,@7791 14250:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@8602,1,@19063| 14251:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@8602,1,@19064| 14252:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19065| 14253:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19066| 14254:D4,440|483b65187306ff5558ca0901534150a8010f858c0100004c8b30ff700841ff3641ff76084c8b6c24084d89ee41ff75084d89f64d8b364d8b2e4983fd050f854b01000041ff760841ff7610488b54243848c7c003000000ff124989c641564c8b34244c8b6c24104d8975004c8b7424384c89f34c8b6c24084d8975004c8b7424184d8b2e4983fd0175094d89f64d8b5620eb0749c7c2010000004c8b7424284d8b76084d8b264d89e54983fc057515488d64244848b8a8d2620800000000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b7608498b06eb04498b4608eb074d8b7608498b0648ba20d96608000000004c8b4424404c8b4c2420ff15c90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c706030000004156488b442430488b5c24404c8b442438e8a5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c3488d64243048b8100f660800000000488b5d08ff23488d64241048c7c001000000c3f400000000000000|@742,1,@19068,@14181|182,0,@1545 239,0,@8524 405,0,@7230 14255:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19070| 14256:D5,200|483b65187306ff5558ca0907415041514152f6c3010f858b0000004c8b33ff73086a016a014889c34c89f04989e04c8b4c24204c8b542418ff15aa000000ff3424488b4424106a016a01488b5c24284989e04c8b4c24384c8b542430e89fffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff155f0000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d642410415e49c706010000004989460848c7c001000000c3f400000000000000|@8518,1,@19077,@14263,@14259| 14257:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19072| 14258:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@8607,1,@19073| 14259:D22,2744|488dbc24e8feffff483b7d187306ff5560ca0907534150415141524c8b702041ff364c8b704841ff364c8b304d8b7608ff7008ff70184c8b6828ff7040ff7050ff70584d8b364983fe017515488d64245848b808d5620800000000488b5d08ff234d8b3649c7c3030000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b14244d89d44d89530849ba98f4b609000000004d8913415349c7c2010000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d891341534d8d57e84c3b55107306ff5550ca00704d89d749c742f8020000004c8b1c244d89d94d895a0849bb00f5b609000000004d891a4d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d89c94d894b104d89530849c7030300000041534d8b5e084d8b134983fa050f85c30300004d8b53084d8b5b104d89e44d89e141ff34244d89c94d8b214983c4027118488da4248000000048b8d006620800000000488b5d08ff234d89c94d89214c8b24244d89224c8b6424084d89e04d89234d8b6d004983fd017518488da4248000000048b808d5620800000000488b5d08ff2341ff75004d8b7610498b46106a016a0154488b9c24980000004c8b8c24880000004c8b542438ff155d090000ff3424488b5c24104c8b742450498b066a016a01544c8b4424404c8b8c24a00000004c8b542450ff1528090000ff3424488b5c241049c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f80400000049bcb09f6208000000004d8965184c8b6424504d89e24d8965104c8b6424404d89e04d8965084d8975004d8d77e84c3b75107306ff5550ca08254d89f749c746f80200000049c74608010000004d892e4c8b6c2470498b45006a016a0141565448830424084c8b8c24c0000000ff1560080000ff3424488b5c24104c8b742478498b066a016a01544c8b4424704c8b8c24d00000004c8b942480000000ff1528080000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15000800004889c34883fb017507488b5c2430eb0e488b442430ff15dd0700004889c34883fb0175074c8b742448eb0e488b442448ff15ba0700004989c641564c8bac24b00000004d8b75004e8d3475010000004983fe01750f48bbc086640800000000e9b40000004d89f44983c4064c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1ddc0600000f87380100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f14d89ed498d7508488d7b0848d1e9f3a44983c6104d89f549d1ed42c6042b284d89f549d1ed42c6442b012949d1ee42c64433022e8063ffbf6a016a0148ba806366080000000054ffb424f0000000488b8424d80000004c8b4424284c8b8c24a80000004c8b942498000000ff1597060000ff3424488b4424104d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8bb424e00000004d8970184c8bb424a00000004d89f14d8970104c8bb424900000004d89f24d89700849be60f6b609000000004d8930ffb424f0000000488b9c24e0000000ff15210600004989c641564c8bb424f80000004d8b7668eb2d488da424f000000048b8f807620800000000488b5d08ff23488d64247848b8100f660800000000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc105000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2068620800000000e95c0400004d8b364d8b2e4c3b2d5d05000075104d8b76104983fe030f849c020000eb18488da4241001000048b87850620800000000488b5d08ff234d8d77d84c3b75107303ff55504d89f749c746f80400000049bd989f6208000000004d896e184c8bac24900000004d896e1049c746080100000049c7060300000041564c8b7424104c89f34983fe0175074c8b742428eb0e488b442428ff15c80400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084983fd01750b415e4881c480000000eb3a4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004881c48000000041564c8b7424204d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15e50300004989c64c8b5c24304d8b2b4d89ec4d89db4d89db4d8923498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424504c89701048c74008030000004c8b34244c8930488d642408ff15800300004989c64156488b54247048c7c003000000ff124989c64c8b6c24084d8b65104d8b2c244983fd050f85a20000004d8b6c24084d8b6424104d89750049bd60c66208000000004d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b24244d896518488d6424084d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4c8b6c24784d8975004c8bb424800000004d89750848c7c0010000004881c488000000c3488da4249000000048b8100f660800000000488b5d08ff234d8d77d84c3b75107303ff55504d89f749c746f80400000049bd989f6208000000004d896e184c8bac24900000004d896e1049c746080100000049c7060300000041564c8b7424104c89f34983fe0175074c8b742428eb0e488b442428ff152e0200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084983fd01750b415e4881c480000000eb3a4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004881c48000000041564c8b7424204d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff154b0100004989c64c8b5c24304d8b2b4d89ec4d89db4d89db4d8923498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424504c89701048c74008030000004c8b34244c8930488d642408ff15e60000004989c6e979fdffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dbe00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4241001000048b8b86c620800000000488b5d08ff234d8b364d8b2e4c3b2d5100000075134d8b76104983fe030f854efbffffe9cbfdffff488da4241001000048b87850620800000000488b5d08ff23f4000000ffffffffffffff01|@8609,1,@19079,@15131,@15131,@14265,@13601,@14272,@14273,@13601,@14275,@15131,@15131,@14213,@14176,@14276,@14277,@14264,@13792,@13713,@13825,@14165|83,0,@1556 187,0,@14260 284,0,@14261 399,0,@105 457,0,@1556 639,0,@1172 919,0,@4696 1118,0,@7816 1247,0,@14262 1308,0,@117 1329,0,@7230 1433,0,@788 1487,0,@621 1527,0,@1171 1973,0,@1469 2129,0,@7230 2169,0,@1171 2660,0,@828 2718,0,@621 14260:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@8608,1,@19074|42,0,@105 14261:D4,304|483b65187305ff5558cd054c8b304c8b60084c8b68104983fc017d1048b8c012660800000000488b5d08ff234983fc017e784983ec02711048b8d006620800000000488b5d08ff234983fc01754c4983fd0175464983fe017d1048b890c6620800000000488b5d08ff23498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70005000000488b5a08ff25ae00000048b808c7620800000000488b5d08ff234983fd03753d4983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b85013660800000000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f40000000000|@7253,1,@19075,@13169|30,0,@7248 58,0,@105 92,0,@1471 156,0,@1474 184,0,@7251 245,0,@7251 14262:D4,216|483b65187305ff5558cd0d4c8b721841f6c6010f85a90000004d8b264d8b6e084883f801756c4d8b7424084d8b6e084d8b6d004983fd05755549bd20d96608000000004c8b62084c8b42104d89f14889d84c89e34c89ea49c7c201000000ff158c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3498b06c34989c44983ec02711048b8d006620800000000488b5d08ff234c89e04d89ee483b65187306ff5558ca0d40e94dffffff48b8c89d620800000000488b5d08ff23f40000000000|@8523,1,@19076,@14181|59,0,@8524 157,0,@105 196,0,@1158 14263:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19078| 14264:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19093| 14265:D10,704|483b65187305ff5558cd014989c54d8b75184c89f04983fe010f857301000041ff750041ff75084d8b751041ff75204c3b35d20200007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb004156ff157f0200004989c641564c8b7424184c89f34983fe017d15488d64242848b83060620800000000488b5d08ff2348c7c001000000ff15420200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d5fe0483b5d107306ff5550ca00404989df48c743f80300000049bd98e86608000000004c896b104c89730848c7030300000048c7c001000000ff15900100004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080100000048c7000d000000c341ff750041ff75084d8b751041ff75204c3b353f0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb004156ff15ec0000004989c641564c8b7424184c89f34983fe017d15488d64242848b83060620800000000488b5d08ff2348c7c001000000ff15af0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3f4000000000000|@8615,1,@19081,@14268,@14269,@123,@14270,@14271,@14267,@123|77,0,@123 111,0,@7652 155,0,@731 316,0,@8610 448,0,@123 482,0,@7652 526,0,@731 14266:D3,32|483b65187305ff5558cd0148b8a8e8660800000000488b5d08ff23f400000000|@8614,1,@19080|13,0,@8611 14267:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19086|89,0,@4664 14268:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19082|32,0,@105 87,0,@1823 14269:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19083|89,0,@4664 14270:D4,208|483b65187305ff5558cd094883f80175684d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd281b6208000000004d896e0849bd6803110a000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355b000000750a488d642408e967ffffffe862ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@1718,1,@19084,@15146|57,0,@224 71,0,@15146 14271:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19085|32,0,@105 87,0,@1823 14272:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19087| 14273:D6,320|483b65187305ff5558cd014989c541ff750041ff75084d8b7510498b451841ff75204c3b353f0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb004156ff15ec0000004989c641564c8b7424184c89f34983fe017d15488d64242848b83060620800000000488b5d08ff2348c7c001000000ff15af0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3f4000000000000|@4347,1,@19088,@14274,@11908,@123|64,0,@123 98,0,@7652 142,0,@731 14274:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19089|32,0,@105 87,0,@1823 14275:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19090| 14276:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19091| 14277:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19092| 14278:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab80e66080000000058ff2248c7c001000000c3f4|@1573,1,@19128|28,0,@7228 14279:D17,1840|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9f8000000909090e905010000909090e913010000909090e923010000909090e943010000909090e944010000909090e93c010000909090e934010000909090e92c010000909090e92c010000909090e92f010000909090e932010000909090e943010000909090e904010000909090e94a010000909090e9f4000000909090e945010000909090e9e4000000909090e940010000909090e9d4000000909090e943010000909090e950010000909090e9bc000000909090e9b4000000909090e941010000909090e9a4000000909090e99c000000909090e934010000909090e936010000909090e9840000009090904c8b7008498b06ff258e0600004c8b7008ff70104c89f0e8cffeffff58e9c9feffff4c8b7008498b0641ff7608e8b9feffff58e9b3feffff4c8b7008498b0641ff7608e8a3feffffff3424e98f0500004c8b7008498b0641ff760841ff7610e887feffff488b0424e87efeffff488d64240858e973feffff488b4010e96afeffff48c7c001000000c34c8b70084156e9100500004c8b70104156e9ca040000ff7008488b0424ff15e70500004989c641566a01e93c0300004c8b7008ff70104c89f0e824feffffff3424e9ea0200004c8b70184156e9a30200004c8b70104156e9610200004c8b68084d8b750041ff75084156e9140200004c8b7008ff70104c89f0e8e4fdffff58e9defdffff488b4008e9d5fdffff4c8b70084156e9b4010000ff7008ff34246a01eb12ff7008488b4010e8b4fdffff58e9aefdfffff64424080175494c8b6c24084d8b75004d89ed41ff75084d8b7618498b064c8b7424084c89f34983fe0175054989c4eb09ff15170500004989c4415d4c8924244c896c2408483b65187303ff5558ebb0415e41566a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15cf0400004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e4156f60424010f85b60000004c8b34244d8b2e4d89f641ff76084d8b75004d8b6d08498b45004d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156ff354d040000ff153f040000488b1424ff152d0400004889c3488d64240848bad8ce620800000000488b0424ff15090400004989c6488d6424084983fe017415488d64242848b8d0e9660800000000488b5d08ff23415d4c892c24483b65187303ff5558e940ffffff488d642418ff3424f604240175294c8b2c244d8b75004d89ed41ff7508498b4608e834fcffff415d4c892c24483b65187303ff5558ebd1488d64241048c7c001000000c3f604240175244c8b3424498b064d89f641ff7608e8fdfbffff415d4c892c24483b65187303ff5558ebd6488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e8c2fbffff415d4c892c24483b65187303ff5558ebd2488d64240858ff2515030000f604240175244c8b3424498b064d89f641ff7608e88cfbffff415d4c892c24483b65187303ff5558ebd6488d64240848c7c001000000c3f604240175294c8b2c244d8b75004d89ed41ff7508498b4618e850fbffff415d4c892c24483b65187303ff5558ebd1488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e815fbffff415d4c892c24483b65187303ff5558ebd2488d64241048c7c001000000c3f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff153e0200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e4156f60424010f85b60000004c8b34244d8b2e4d89f641ff76084d8b75004d8b6d08498b45004d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156ff35bc010000ff15ae010000488b1424ff159c0100004889c3488d64240848bad8ce620800000000488b0424ff15780100004989c6488d6424084983fe017415488d64242048b8d0e9660800000000488b5d08ff23415d4c892c24483b65187303ff5558e940ffffff488d642410ff3424f604240175174c8b2c244d8b75004d89ed41ff75084d8b76084156eb0d488d64241048c7c001000000c3f604240175294c8b2c244d8b75004d89ed41ff7508498b4608e8a9f9ffff415d4c892c24483b65187303ff5558ebd1488d642408415d4c892c24483b65187303ff5558eb91f604240175284c8b2c244d8b75004d89ed41ff7508498b06e865f9ffff415d4c892c24483b65187303ff5558ebd2488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e82af9ffff415d4c892c24483b65187303ff5558ebd2488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e8eff8ffff415d4c892c24483b65187303ff5558ebd2488d64241048c7c001000000c3f4|@8621,1,@19095,@10934,@14281,@14296,@8627,@14297,@14308,@10934,@14281,@14296,@8627,@14297,@14309,@14310,@14280|861,0,@1525 900,0,@8617 1470,0,@1525 1509,0,@8617 14280:D3,64|483b65187305ff5558cd01a8017523ff30488b4008e8e6ffffff4c8b3424498b06488d64240848ba60ea660800000000ff2248c7c001000000c3f40000000000|@1573,1,@19126|40,0,@8620 14281:D13,2440|483b65187305ff5558cd0552a801750a4c8b30ff70084156eb10488d64240848b8a894620800000000c34c8b34244d8b264d89e54983fc0b0f85c00000004d89f6498b5e084d89f64d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15660900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee815b709000000004c89336a016a01488b4424104989e0ff151d090000415d488d6424104c892c24483b65187303ff5558e94effffff488d64241848b818d0620800000000488b5d08ff234d89f6488d642408e9ac0000004d89f64983fd0d0f85970000004d89f64d8b6e084d8b6d004d8b5d004d89dc4983fb09755d4c8b6c2410498b55084c89f048c7c301000000ff124989c4488d6424084d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b000000eb0e4983fc03750a4d89f6488d642408eb1a4c892c24483b65187303ff5558e988feffff4d89f6488d6424084d8b264d89e54983fc07751641ff760841ff76106a016a014c8b742410e9520500004d89ec4983fd05752b41ff760841ff76104c8b742418498b5e08488b442410ff15e707000049c7c6010000004989c5e9690300004d89e54983fc0b0f85a200000041ff760841ff761041ff761841ff76204c8b742408498b5e184c8b334d8b364983fe03751149c7c0010000004c8b742418e948010000488d64243049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3488d6424104d89ee4983fe0d756749bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c349bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c341f6c60175364d8b66084d89c54983c5027115488d64243048b8d006620800000000488b5d08ff234d89e64d89e8483b65187306ff5558ca0841ebc44c8b7424284d8b4e08488b442420ff15f50500004989c649c7c5010000004d89f441f6c40175374d8b5424084d89eb4983c3027115488d64243048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc349c7c4010000004c8b5c242041f6c30175364d8b4b084d89e24983c2027115488d64243048b8d006620800000000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec0f8587000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c8930488b5c2428ff15200500004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b2c244c896820488d6424084c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c7000b0000004883c410c3488d64243049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc449c7c5010000004c8b64241041f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0170ebc34d3bf50f85bb0000006a016a014889e3ff15bc0300004c8b3424ff742408488b542430498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930e8c3f9ffff4989c64156488b542438498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b7424204c8930e889f9ffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64243048c700050000004883c410c3488d64242049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34d8b2e4983fd010f85b80000004d8b6e084d8b76104c892c244c89742408488d642408415e4983fe03752e4c8b742418498b5e08488b4424104c8b442408ff15560200004989c6415649c7c6010000004c8b2c24e988000000488d64242049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34d8b6e084d8b6d004d89ee483b65187306ff5558ca0040e91fffffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc449c7c5010000004c8b64241841f6c40175374d8b5424084d89eb4983c3027115488d64242848b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d3bf50f858d000000488b442410ff15180100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930488b5c2418ff15d70000004889c3488b442408ff15c10000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c700070000004883c410c3488d64242849bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3f400|@8622,1,@19098,@14285,@14286,@14289,@14290,@13868,@14286,@14293,@14283,@10900,@10958|33,0,@1098 166,0,@14282 227,0,@1531 586,0,@1098 703,0,@1098 806,0,@1098 933,0,@105 1027,0,@105 1099,0,@105 1284,0,@1098 1411,0,@105 1484,0,@105 1721,0,@1098 1918,0,@1098 2073,0,@105 2146,0,@105 2337,0,@1098 14282:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@19096| 14283:D5,592|483b65187305ff5558cd0953a801750a4c8b30ff70084156eb0d488d64240848c7c001000000c34c8b2c244d8b65004d89e64983fc0b0f85c00000004d89ed498b5d084d89ed4d8b75184d8b5e184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15f00100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be3019b709000000004c89336a016a01488b4424104989e0ff15a7010000415d488d6424104c892c24483b65187303ff5558e94dffffff488d64241848b818d0620800000000488b5d08ff234d89ed488d642408e9a90000004d89ed4983fe0d0f85940000004d89ee4d8b6e084d8b6d004d8b5d004d89dc4983fb09755a488b5424104c89f048c7c301000000ff124989c4488d6424084d8b34244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d8965184d89751049c745080100000049c745000b000000eb0e4983fc03750a4d89f5488d642408eb1a4c892c24483b65187303ff5558e98afeffff4d89ed488d6424084d8b75004983fe05754b4d8b75084d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017507585be9f2fdffff41ff36488b442408488b5c2410e8e0fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3f4|@3363,1,@19110,@10900,@10958|164,0,@14284 225,0,@1531 14284:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@19097| 14285:D3,136|483b65187305ff5558cd09a801756ef6c30175694c8b30488b40084c8b23488b5b084d8b2e4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@3397,1,@19099| 14286:D5,160|483b65187305ff5558cd095053f6442408017573488b4424084c8b304983fe01750d488d64241048c7c001000000c3ff3424ff1588000000488b1424ff124989c64156488b442418ff156a000000488b5c2410e8a8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048b8f0ea660800000000488b5d08ff23f4000000|@8625,1,@19100,@14288,@14287|142,0,@8623 14287:D3,112|483b65187305ff5558cd01a80175544c8b30488b400841f6c601753741ff36e8dcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8508a620800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@19102|85,0,@1028 14288:D3,112|483b65187305ff5558cd01a80175554c8b30488b400841f6c601753841ff7608e8dbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e089620800000000488b5d08ff2348c7c001000000c3f4000000|@742,1,@19101|86,0,@1025 14289:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19103| 14290:D6,760|483b65187306ff5558ca0901534150a801750a4c8b30ff70084156eb0d488d64241048c7c001000000c34c8b34244d8b264d89e54983fc0b0f85c00000004d89f6498b5e084d89f64d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff159e0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be6020b709000000004c89336a016a01488b4424104989e0ff1555020000415d488d6424104c892c24483b65187303ff5558e94effffff488d64242048b818d0620800000000488b5d08ff234d89f6488d642408e9a80000004d89f64983fd0d0f85930000004d89f64d8b6e084d8b6d004d8b5d004d89dc4983fb097559488b5424184c89f048c7c301000000ff124989c4488d6424084d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b000000eb0e4983fc03750a4d89f6488d642408eb1a4c892c24483b65187303ff5558e98cfeffff4d89f6488d6424084d8b2e4983fd07750e498b46084c8b7424084989c5eb6549c7c6010000004983fe01751258488b5c24084158488d642408e924feffff41ff36488b442408488b5c24184c8b442410e80dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fe0175184983fd01750949c7c603000000eb0749c7c601000000eb784d8b0e4d8b660841f6c50175644d8b55004d8b5d084d8b014d8b0a4d3bc17502eb2f4d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd77528498d7008498d7908483bc9f3a67402eb174d89dd4d89e6483b65187306ff5558ca0160e97affffff49c7c601000000eb0749c7c6010000004983fe037529ff154c0000004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000e9d1fefffff400000000|@3363,1,@19105,@14292,@10900,@10958|166,0,@14291 227,0,@1531 14291:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@19104| 14292:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19106| 14293:D6,552|483b65187306ff5558ca09035341504151a801750a4c8b30ff70084156eb0d488d64241848c7c001000000c3488b04244c8b284d89ee4983fd0b0f85c20000004889c0488b58084889c04c8b70184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15ca0100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be0824b709000000004c89336a016a01488b4424104989e0ff1581010000415d488d6424104c892c24483b65187303ff5558e94cffffff488d64242848b818d0620800000000488b5d08ff234889c0488d642408e9a40000004889c04983fe0d0f858f0000004889c04c8b70084d8b2e4d8b65004d89e64983fc097556488b54241048c7c301000000ff124989c5488d6424084d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b000000eb0e4983fe03750a4889c0488d642408eb1a4c892c24483b65187303ff5558e98efeffff4889c0488d642408488b5c24184c8b442410ff158a0000004989c64983fe01751758488b5c24104c8b4424084159488d642410e92afeffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e80efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3f4000000000000|@3363,1,@19108,@14295,@10900,@10958|170,0,@14294 231,0,@1531 14294:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@1530,1,@19107| 14295:D3,384|483b65187306ff5558ca09014c8b304983fe0b0f85e20000004c8b70084c8b68184d8b65184c8b6b084d89eb4d8b6d004983fd0375514d8b6c24084d89ea4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd0375294d8b6b084d89d44d8b6424084d3bec750949c7c503000000eb0749c7c5010000004983fd037565eb684d89dd4d8b1b4983fb01754a4d8b5424084d89d34d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375234d8b6d184d89dc4d8b6424184d3bec750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037405e98600000049c7c5010000004d89f4eb0848c7c001000000c341f6c40175324d8b5424084d89eb4983c302711048b8d006620800000000488b5d08ff234d89d44d89dd483b65187306ff5558ca0071ebc84d3be8750949c7c503000000eb0749c7c5010000004983fd03751f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f40000|@8626,1,@19109|281,0,@105 14296:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@19111| 14297:D9,168|483b65187305ff5558cd0953ff70184c8b70304983fe017515488d64241048b808d5620800000000488b5d08ff234d8b36498b06488b1c24ff15aa000000ff159c0000004989c641566a016a01488b44241848bbd8eb6608000000004989e0ff1573000000488d64240858ff155f000000488b1c244c8b442410ff1548000000488d6424104c8b2c244d89ee4983fd017506488d642408c34c89f3488d642408ff251a000000f400|@8632,1,@19115,@14302,@14303,@13982,@10900,@14305,@14299|32,0,@1556 84,0,@8628 14298:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8629,1,@19112| 14299:D8,248|483b65187305ff5558cd0953a8010f85d3000000ff30ff70086a016a01488b44242048bb68ec6608000000004989e0ff15fb000000ff3424488b442410ff15e50000004989c6415648bad8ce620800000000488b442408488b5c2428ff15be0000004989c64983fe017432488d6424206a016a01488b44242048bb78ec6608000000004989e0ff158c000000488d64240858ff15780000004989c6eb06415e4883c4184156488b442408488b5c2418e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f4000000|@742,1,@19122,@10905,@10900,@10934,@10905,@10900|36,0,@8630 74,0,@1525 123,0,@8631 14300:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@19113| 14301:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@1453,1,@19114| 14302:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19116| 14303:D4,400|483b65187306ff5558ca09014150a801751ff6c30175134c8b28ff70084c8b23ff73084c8b742410eb14488d642408eb05488d64240848c7c001000000c341f6c60175474d8b164d8b5e084d8b0a4d8b094d8b45004d3bc875204d8d77f04c3b75107306ff5550ca00344d89f749c746f8010000004d8916eb184d89de483b65187306ff5558ca0070ebb349c7c6010000006a016a0141f6c601755541ff364c8b342441ff76084c8b3424498b1e4883fb0175054d89e6eb0c4c89e0ff15e60000004989c64c8b2c244d897500488d6424084c8b34244d8b2e4c896c24084d89f64d8b7608488d6424084c89742408eb2c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264c892c244c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442410488b5c24084c8b442418e8a7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f400000000000000|@3397,1,@19117,@14304| 14304:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19118| 14305:D5,144|483b65187305ff5558cd01504c8b34244c89f04983fe01750d488d64240848c7c001000000c34889c04c8b304983fe01750d488d64240848c7c001000000c3ff156b0000004989c64156488b442408ff1553000000e8a6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3f4000000000000|@8633,1,@19119,@14307,@14306| 14306:D3,112|483b65187305ff5558cd01a80175544c8b30488b400841f6c601753741ff36e8dcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8508a620800000000488b5d08ff2348c7c001000000c3f400000000|@742,1,@19121|85,0,@1028 14307:D3,112|483b65187305ff5558cd01a80175554c8b30488b400841f6c601753841ff7608e8dbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e089620800000000488b5d08ff2348c7c001000000c3f4000000|@742,1,@19120|86,0,@1025 14308:D3,64|483b65187305ff5558cd01a8017523ff30488b4008e8e6ffffff4c8b3424498b06488d64240848ba60ea660800000000ff2248c7c001000000c3f40000000000|@1573,1,@19123|40,0,@8620 14309:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19124| 14310:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b761041ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@19125| 14311:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab80e66080000000058ff2248c7c001000000c3f4|@1573,1,@19127|28,0,@7228 14312:D6,1528|483b65187306ff5558ca0901534d8b304d8b68084d8d5fe84c3b5d107306ff5550ca01604d89df49c743f8020000004c8b14244d89d44d89530849bac836b709000000004d89134d8d4fe04c3b4d107306ff5550ca01784d89cf49c741f8030000004d8959104d8969084d89314d8d6fe84c3b6d107306ff5550ca01124d89ef49c745f8020000004989450849be9838b709000000004d8975004d89e44d8b7424104d89e44d8b5c24484d8b364d8b1b4983fb5374054d89deeb004d89f34c8d15080000004f8d549afc41ffe2e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c303000000eb0749c7c301000000eb5849c7c303000000eb4f49c7c303000000eb4649c7c303000000eb3d49c7c303000000eb3449c7c303000000eb2b49c7c303000000eb2249c7c303000000eb1949c7c303000000eb1049c7c303000000eb0749c7c3030000004983fb037502eb0e4983fe477502eb064983fe6d7502eb0e4983fe677502eb064983fe2b75506a016a0141554d89ca4989c14d89e048b8d8ed660800000000488d5c2408ff1579020000415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34d89e44d89e641ff7424304d89f64d8b5e504d89f64d8b667841ff3341ff34246a016a014c89f35041564c89e849c7c0010000004c8d542410ff1506020000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c706010000004156488b5c24204c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc61744a4889db4889db4d8b364d8b6d004983fd5374054d89eeeb004983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe03751248b8381a620800000000ff1527010000eb0049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4c8b6c24184d8b65284d89ed4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b14244d895520488d6424084d895d184c8b1c244d895d10488d6424084d8965084c8b24244d896500488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@8849,1,@19358,@14327,@14422,@14316|60,0,@14313 142,0,@14314 916,0,@8636 1243,0,@214 14313:D5,408|483b65187305ff5558cd05524c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b870ed66080000000048bb4870620800000000ff152a010000ff151c0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1249bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd05498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@8635,1,@19129,@10999,@10696|118,0,@8634 128,0,@851 310,0,@1098 14314:D3,1536|483b65187305ff5558cd054883f82f7505e9dd0500004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037505e9540300004883f8237502eb0e4883f80d7502eb064883f8317505e9390300004883f8417505e92e0300004883f8437505e9230300004883f83f7505e9180300004883f84d7505e90d0300004883f8450f84030300004883f8277505e9f60200004883f80f7505e9eb0200004881f8810000007505e9dd0200004883f8337505e9d20200004883f8550f84c80200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb164883f8677502eb0e4883f82b7502eb064883f86d7502eb08488b5208ff22eb0048c7c003000000c3f400000000|@1001,1,@19130| 14315:D3,752|483b65187305ff5558cd014989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb0e4883f8477502eb064883f86d750848c7c003000000c34883f867750848c7c003000000c34883f82b750848c7c003000000c348c7c001000000c3f4|@1001,1,@19131| 14316:D9,1928|483b65187306ff5558ca0907534150415141524c8b6c24104d8b75104d89ed4d8b65484d8b364d8b24244983fc5374054d89e6eb004d89ed4d8b65284d89ed4c89eb41ff75304889db4c8b53504889db4c8b6b704889db4c8b5b7841ff324d8b242441ff334d8b5d004d8d6fd04c3b6d107306ff5550ca08584d89ef49c745f8050000004c8b14244d8955204d895d184c8b5c24084d895d104d8965084c8b6424104d89650041554983fe617505e9a60600004983fe010f849c0600004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c503000000eb0749c7c501000000eb5849c7c503000000eb4f49c7c503000000eb4649c7c503000000eb3d49c7c503000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004983fd037507488d642408eb184983fe477507488d642408eb0b4983fe6d7507488d642408eb1c4983fe677507488d642408eb0f4983fe2b0f8584030000488d6424086a016a014983fe470f859b00000048bae8ed6608000000004c8b4424504989de4989d94c89f3488b4424284c8b542430ff15f00300004989c649c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48146708000000004c892c244c89742408e9130200004983fe6d0f859b00000048bae8ed6608000000004c8b4424504989de4989d94c89f3488b4424284c8b542430ff15430300004989c649c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48146708000000004c892c244c89742408e96e0100004983fe6775344c8b4424504989de4989d94c89f3488b442428ff15a90200004989c549be58146708000000004c892c244c89742408e9340100004983fe2b75394c8b4424504989de4989d94c89f3488b4424284c8b542430ff15620200004989c549be90146708000000004c892c244c89742408e9f50000006a016a01488b4424604989deff742440534c89f349c7c0030000004c8b4c24484c8d542410ff1514020000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c7060100000049c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48146708000000004c892c244c89742408ff3424488b4424106a016a014c8b7424684156488d5c24084c8b4424584c8b4c24504c8b542448e876f9ffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c001000000c2080048b8381a620800000000ff156f0000004c8b6c243849c74500010000004c8b34244d897508488d64240848c7c0010000004883c438c208004c8b6c243849c74500010000004c8b34244d897508488d64240848c7c0010000004883c438c20800f4000000000000|@8850,1,@19360,@14327,@14422,@14545,@14543,@14317,@14317|946,0,@8637 1077,0,@8844 1111,0,@8637 1242,0,@8844 1300,0,@8845 1363,0,@8847 1613,0,@8844 1827,0,@214 14317:D12,2024|488dbc2458ffffff483b7d187306ff5560ca0d075250534150415141524c8b74242041ff364c8b7424204c89f341ff76304889db4c8b63504d89e34889db4c8b73784d89f541ff342441ff364889db4c8b53104d89d64889db4c8b4b484d89cc4d8b124d8b094983f95374054d89caeb004983fa6d0f858c0200004889d84889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424384889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff152b060000ff151d0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15550500004c8b6c24384d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e99d020000488d64241848c7c047000000ff150f0500004c8b6c24204d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff364c8b6c24404d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff15bd040000ff7424084c8b6c24184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849bd1052b709000000004d892e4156498d47e0483b45107303ff55504989c748c740f8030000004c8b7424284c8970104c8b34244c8970084c8b7424084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424684d89700849be7852b709000000004d89304c8bb42480000000498b5610488b5c24704c8b4c24604c8b542458ff124989c6415648c7c035000000488b5c2478ff15e00300004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24584d896e0849bdc852b709000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24304c8968104c8b6c24084c8968084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424704d89700849be2053b709000000004d89304c8bb42488000000498b5610488b5c24784c8b4c24684c8b542460ff124989c64156488b9c24800000004c8b6b284889db4c8b737041ff750041ff3648c7c01f000000ff15f80200004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24584d896e204c8b2c244d896e18488d6424084c8b6c24584d896e104c8b2c244d896e08488d6424084c8b6c24584d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488da4249800000048c70003000000c36a016a014c8bb424880000004d8b7608ffb424800000004156ff74247048c7c001000000488d5c24184c8b8424880000004c8b8c24900000004c8b942480000000ff151d020000ff3424ff74241048c7c00500000048bb58ee6608000000004c8b842488000000ff15ef0100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b6c24204c8b7424284d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424484d8956204d895e184c8b5c24504d895e104d8966084c8b6424584d892649c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c24498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c700050000004881c498000000c3f4000000|@8642,1,@19137,@14324,@14328,@14323,@14323,@10906,@14323,@10693,@10697,@10696|509,0,@850 519,0,@851 694,0,@853 717,0,@856 918,0,@14318 1017,0,@14319 1124,0,@14320 1220,0,@14321 1531,0,@8640 14318:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19132| 14319:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8357406488b5208ff2248c7c003000000c3f4|@1001,1,@19133| 14320:D3,48|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b742408498b560858488d642408ff22f40000|@8639,1,@19134| 14321:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@1001,1,@19135| 14322:D3,40|483b65187305ff5558cd014883f86b750848c7c003000000c348c7c001000000c3f4000000000000|@8641,1,@19136| 14323:D8,704|483b65187305ff5558cd09534c8b24244d8b5c24104d89de4d89e44d8b5424484d89d54d8b1b4d8b124983fa5374054d89d3eb004c3bd80f85720200004c89e04889c04d8b65004983fc537415488d64240849c745005300000048c7c001000000c34d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1517010000ff15090100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf0706208000000004889c0488d642408ff2539000000ff152b0000005bff251c000000f4000000|@8723,1,@19221,@14327,@14326,@10693,@10697,@10696|457,0,@850 467,0,@851 642,0,@853 665,0,@856 14324:D7,776|483b65187306ff5558ca09014889da5041504c8b34244d8b5e104d89dd4d89f64d8b56484d89d44d8b1b4d8b124983fa5374054d89d3eb004c3b5c24080f85760200004c89f04889c04d8b34244983fe537412488d64241049c7042453000000e94c0200004d8b75004983fe010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf070620800000000ff157c000000488d64241048c7c003000000c34d89e6498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe03751c488b442408488b1c24ff1538000000488d64241048c7c003000000c3488d64241048c7c001000000c3f40000000000|@8643,1,@19138,@14325,@10693,@10697,@10696|461,0,@850 471,0,@851 646,0,@853 670,0,@856 14325:D8,664|483b65187305ff5558cd0953ff15be020000488b1c24ff15ac020000488b04244c8b70104889c04c8b68484d8b65004983fc537415488d64240849c745005300000048c7c001000000c34d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f7000000ff15e90000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf0706208000000004889c0488d642408ff2519000000f4|@8652,1,@19139,@10693,@10697,@10696,@14327,@14326|433,0,@850 443,0,@851 618,0,@853 641,0,@856 14326:D3,1320|483b65187305ff5558cd014c8d35080000004d8d7486fc41ffe6e91b020000909090e91e020000909090e921020000909090e924020000909090e927020000909090e92a020000909090e92d020000909090e930020000909090e933020000909090e936020000909090e939020000909090e93c020000909090e93f020000909090e942020000909090e945020000909090e948020000909090e94b020000909090e94e020000909090e951020000909090e954020000909090e957020000909090e95a020000909090e95d020000909090e960020000909090e963020000909090e966020000909090e969020000909090e96c020000909090e96f020000909090e972020000909090e975020000909090e978020000909090e97b020000909090e97e020000909090e981020000909090e984020000909090e987020000909090e98a020000909090e98d020000909090e990020000909090e993020000909090e996020000909090e999020000909090e99c020000909090e99f020000909090e9a2020000909090e9a5020000909090e9a8020000909090e9ab020000909090e9ae020000909090e9b1020000909090e9b4020000909090e9b7020000909090e9ba020000909090e9bd020000909090e9c0020000909090e9c3020000909090e9c6020000909090e9c9020000909090e9cc020000909090e9cf020000909090e9d2020000909090e9d5020000909090e9d8020000909090e9db020000909090e9de020000909090e9e1020000909090e9e402000090909048b85815620800000000c348b8687b620800000000c348b86881620800000000c348b8f881620800000000c348b8a87c620800000000c348b8407f620800000000c348b8a018620800000000c348b8207b620800000000c348b8f0ee660800000000c348b8201a620800000000c348b8f07d620800000000c348b8d018620800000000c348b8c07a620800000000c348b8787c620800000000c348b87880620800000000c348b89881620800000000c348b8e07e620800000000c348b8681a620800000000c348b8087d620800000000c348b8187c620800000000c348b8a07f620800000000c348b80881620800000000c348b8407d620800000000c348b8f817620800000000c348b810ef660800000000c348b8307a620800000000c348b8487c620800000000c348b8a880620800000000c348b8d079620800000000c348b87079620800000000c348b830ef660800000000c348b8381d620800000000c348b83820620800000000c348b87018620800000000c348b8107f620800000000c348b8d07f620800000000c348b8a079620800000000c348b8907a620800000000c348b8807e620800000000c348b8c881620800000000c348b84880620800000000c348b858ef660800000000c348b8d87c620800000000c348b878ef660800000000c348b8e87b620800000000c348b8681d620800000000c348b86820620800000000c348b88818620800000000c348b8381a620800000000c348b8607a620800000000c348b8b07e620800000000c348b8b07b620800000000c348b898ef660800000000c348b83881620800000000c348b8b87d620800000000c348b81880620800000000c348b8207e620800000000c348b86087620800000000c348b8c0ef660800000000c348b8507e620800000000c348b8981d620800000000c348b8707d620800000000c348b85020620800000000c348b81082620800000000c348b8d880620800000000c348b8007a620800000000c348b8707f620800000000c348b8e8ef660800000000c3f400|@8656,1,@19141|572,0,@162 583,0,@896 594,0,@959 605,0,@965 616,0,@909 627,0,@936 638,0,@197 649,0,@893 660,0,@8644 671,0,@213 682,0,@922 693,0,@199 704,0,@889 715,0,@907 726,0,@949 737,0,@961 748,0,@932 759,0,@216 770,0,@913 781,0,@903 792,0,@940 803,0,@955 814,0,@915 825,0,@190 836,0,@8645 847,0,@883 858,0,@905 869,0,@951 880,0,@879 891,0,@875 902,0,@8646 913,0,@246 924,0,@278 935,0,@195 946,0,@934 957,0,@942 968,0,@877 979,0,@887 990,0,@928 1001,0,@963 1012,0,@947 1023,0,@8647 1034,0,@911 1045,0,@8648 1056,0,@901 1067,0,@248 1078,0,@280 1089,0,@196 1100,0,@214 1111,0,@885 1122,0,@930 1133,0,@899 1144,0,@8649 1155,0,@957 1166,0,@920 1177,0,@945 1188,0,@924 1199,0,@1004 1210,0,@8650 1221,0,@926 1232,0,@250 1243,0,@917 1254,0,@279 1265,0,@966 1276,0,@953 1287,0,@881 1298,0,@938 1309,0,@8651 14327:D6,1624|483b65187305ff5558cd0950534c8b34244d8b6e104d89eb4d89f64d8b66484d89e24d8b6d004d8b24244983fc5374054d89e5eb004983fd690f85a80100004d89f64d8b76084d8b364d8b2e4a8d0c6d010000004883f901750f49bde017620800000000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1db70500000f87330100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450822498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bce017620800000000e99c0000004d89f34983c3024c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15fc040000776f4d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c244c89f1498d7508498d7c240848d1e9f3a44983c61049d1ee43c604342241806424ffbfe98f000000488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff234d89f64d89dd4d89f64d89d44d8b1b4d8b124983fa5374054d89d3eb004983fb577502eb364983fb3d7502eb2e4983fb757502eb264983fb3174204d89e6498b45004d8b364983fe5374054c89f0eb00ff15430400004989c4eb0a4d89f64d8b76084d8b264c8b0c244d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e41564c8b6c24104d8b75004e8d3475010000004983fe01750f49ba30f0660800000000e9b70000004d89f34983c31c4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d3e0300000f870b0300004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049bd30f066080000000048c7c11d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b054e0200000f870e0200004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b850f0660800000000e9b20000004d89f44983c4144c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7c0100000f872f0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd50f066080000000048c7c115000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1532010000ff15240100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c706030000004883c408ff22488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@8655,1,@19140,@10999,@10696,@14326|92,0,@189 271,0,@189 452,0,@117 473,0,@117 709,0,@8653 869,0,@8653 1143,0,@8654 1299,0,@8654 1336,0,@851 1520,0,@117 1541,0,@117 1562,0,@117 14328:D14,2280|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be5072b709000000004c89336a016a0148b8b8f06608000000004c8b4424184989e1ff15f3080000ff3424ff742410488b442408488b5c24284c8b0424ff15d0080000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f850d0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f5060000ff15e70600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff151f0600004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be0073b709000000004d89306a016a0148bac8f0660800000000488b442468488b5c24384989e14c8b542430ff15c3050000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508030000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee91b0300004983fc130f850a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15be030000ff15b00300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15e80200004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be4857b809000000004d89306a016a0148bac8f0660800000000488b442468488b5c24384989e14c8b542430ff158c020000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508010000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000415648c7c023000000488b5c2430ff151a0200006a016a01488b542468488b4424704c8b7424604156488b5c24484c8b4424504c8d4c24084c8b542440ff12415d415e4c8b4c24084d8b214d89c94d8b51104d89c9498b79204d8b5e084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d8956104d895e084d8926f60424010f85ca0000004c8b24244d8b24244d8b1c244d8b5424084d8b44241049c7c401000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892749c7c401000000498d77f0483b75107306ff5550ca807f4989f748c746f801000000c646ff404c89264d8d67c84c3b65107306ff5550cac06f4d89e749c74424f806000000498974242849897c24204d894424184d895424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d89650849c7450005000000eb004c8b24244983fc01488d642408750949c7c203000000eb0749c7c2010000004983f20249c7c4010000004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f80100000041c643ff404d89234d8d67c84c3b65107306ff5550ca006e4d89e749c74424f8060000004d89c94d894c2428488d6424084d895424204d895c24184d896c24104c8b2c244d896c2408488d6424084d8934244c8b6c24284d8965004d89750848c7c0010000004883c430c21800f4|@8722,1,@19220,@14323,@14332,@10693,@10697,@10696,@14332,@10693,@10697,@10696,@11080,@14354|54,0,@14329 71,0,@8657 563,0,@850 573,0,@851 748,0,@853 771,0,@856 820,0,@14331 837,0,@8658 1354,0,@850 1364,0,@851 1539,0,@853 1562,0,@856 1611,0,@14406 1628,0,@8658 14329:D3,48|483b65187305ff5558cd054883f8237502eb0e4883f8157502eb064883f813750848c7c003000000c3488b5208ff22f4|@1001,1,@19142| 14330:D3,48|483b65187305ff5558cd014883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f4|@1001,1,@19143| 14331:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19144| 14332:D14,2392|483b65187306ff5558ca0d0752505341504151415248b8f8f0660800000000488b5c241049b808f16608000000004c8b4c2418ff15870900004c8b7424184d89f141ff76304d89c94d8b69504c89ea4d89c94d8b71784c89f141ff750041ff364d89c94d8b61104d89e64d89c94d8b59484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc310f85ff000000488d642418498d5fe8483b5d107306ff5550ca00024989df48c743f8020000004c8b7424104c89730849be887db709000000004c89336a016a014d89c848b8b8f06608000000004989e1ff15d8080000ff3424ff742410488b442408488b5c24384c8b0424ff15b508000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d89f44d8975104c8b7424084d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424204d892ee9ac0400004983fc650f85740300004c89c84889c04d8b65004983fc53740d49c7450053000000e9440200004d8b2e4983fd010f8520020000488d6424304889c04989c4ff70284d89e44d8b7424384d89e44d89e541ff7424404d89ed4d89ec524d89e441ff742470514c89f248c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1574060000ff15660600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff159e0500004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424284d89700849bed07db709000000004d89304c8b742440498b5608488b442438488b5c24304c8b4c2418ff124989c64156488b5c24384c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24084d895e204d8966184c8b6424104d8966104d896e084c8b6c24184d892e415648c7c01f000000ff15e60400004d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d89f44d8975104c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424284d892ee92e010000488d6424184d89c9498b71284989f34d89c94d8b69304d89ee4d89c94989d24d89c9498b79704989fc4989c8488b12488b36488b19488b0f498d7fd0483b7d107306ff5550ca4e7d4989ff48c747f80500000048895f2048894f1848895710488977084c892f49c7c501000000498d77f0483b75107306ff5550ca807d4989f748c746f801000000c646ff404c892e4d8d6fd84c3b6d107306ff5550cac05d4d89ef49c745f8040000004989751849897d1048bf30f166080000000049897d0849c74500030000004d89c14d8b124d8b1b4d8b014d8b0c244d8d67d04c3b65107306ff5550ca006f4d89e749c74424f8050000004d894424204d894c24184d895424104d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b4424204c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc7f0f85bb0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1578010000ff156a0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15a2000000ff7424104c8b742408498b064d89f6498b5e084c8b4424284c8b4c24104c8b542420ff15720000004989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64243048c7c0010000004883c410c34c8b6c24104c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c430c3f400|@8663,1,@19148,@14337,@10693,@10697,@10696,@14323,@10693,@10697,@10696,@11080,@14354,@14336|23,0,@8660 38,0,@8661 187,0,@14334 207,0,@8657 796,0,@850 806,0,@851 981,0,@853 1004,0,@856 1053,0,@14335 1473,0,@8662 2040,0,@850 2050,0,@851 2225,0,@853 2248,0,@856 14333:D3,64|483b65187305ff5558cd014883f865750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@1001,1,@19145| 14334:D3,32|483b65187305ff5558cd054883f87f750848c7c003000000c3488b5208ff22f4|@1001,1,@19146| 14335:D3,64|483b65187305ff5558cd054883f861750848c7c003000000c34883f87f750848c7c003000000c34883f81f750848c7c003000000c3488b5208ff22f400000000|@1001,1,@19147| 14336:D7,848|483b65187306ff5558ca09035053415041514c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542418ff124989c64983fe037411488b442408488b1c24ff152e030000eb0d488d64242048c7c001000000c34c8b2c244d8b75104d89ed4d8b6d484d8b364d8b6d004983fd5374054d89eeeb004156488b542418488b0424ff124989c64983fe03750e488d64240849c7c603000000eb13488b542420488b0424ff124989c6488d6424084983fe030f8479020000488b04244c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e9450200004d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1510010000ff15020100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff153a000000483b65187303ff5558e925fdffff488d64242048c7c001000000c3f4000000000000|@8700,1,@19177,@10693,@10697,@10696,@14327|592,0,@850 602,0,@851 777,0,@853 800,0,@856 14337:D17,2096|483b65187306ff5558ca0907505341504151415248c7c077000000488b5c2410ff158a0800006a016a016a0148c7c0010000004889e3ff156c080000ff3424ff742410ff742420498d5fe0483b5d107303ff55504989df48c743f8030000004c8b34244c8973104c8b7424084c8973084c8b7424104c893348c7c0010000004c8b442438ff15160800004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be988ab709000000004c89336a016a0148b880f16608000000004c8b4424584989e1ff15bf070000ff3424ff742410488b442438488b5c24304c8b4424284c8b4c2460ff15960700004989c6415648c7c023000000488b5c2470ff157707000048b8b0f1660800000000488b5c246049b8507e6208000000004c8b4c2470ff154b070000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424604c89700849bea88bb709000000004c89306a016a01488b9c24800000004c8b4424104989e1ff15fb060000415d415e488d6424084d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d896c24204c8b6c24204d896c24184c8b6c24084d896c24104c8b6c24784d896c24084c8b2c244d892c24488d6424584d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000500000041554c8b6424204d8b2c244d89e44d8b5c24104d89e44d8b4c24204d8b66084d8b56184d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e084c8b6c24084d892e4156488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc050f85e40200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1527040000ff15190400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15510300004c8b7424284d8b66104d89f64d8b5e484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc777524488d642408488b4424085b488d6424084d89f04c8b4c2408415a488d642420e9a2faffff4d89ee4d8b2e4983fd537415488d64244048b8c0f1660800000000488b5d08ff2349c70605000000584883c438c34983fc7f0f858d020000488d6424084889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff151c010000ff150e0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1546000000488b4424085b488d6424084c8b4424104c8b4c2408415a488d642420e9ddf7ffff584883c438c3f4000000000000|@8672,1,@19154,@10693,@10697,@10696,@10693,@10697,@10696,@14344,@14336,@14323,@14360,@14354,@14342,@10906,@14323|178,0,@14338 195,0,@8664 275,0,@8666 290,0,@926 344,0,@14341 1073,0,@850 1083,0,@851 1258,0,@853 1281,0,@856 1393,0,@8667 1828,0,@850 1838,0,@851 2013,0,@853 2036,0,@856 14338:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19149| 14339:D3,40|483b65187305ff5558cd014883f831750848c7c003000000c348c7c001000000c3f4000000000000|@8665,1,@19150| 14340:D3,80|483b65187305ff5558cd014883f841750848c7c003000000c34883f843750848c7c003000000c34883f831750848c7c003000000c34883f875750848c7c003000000c348c7c001000000c3f400000000|@1001,1,@19151| 14341:D3,48|483b65187305ff5558cd054883f805750848c7c003000000c34883f87f750848c7c003000000c3488b5208ff22f40000|@1001,1,@19152| 14342:D10,1336|483b65187306ff5558ca0901504150ff33ff73084c8b4424104d8b70104d89f44d89c04d8b58484d89dd4d8b364d8b1b4983fb5374054d89deeb004983fe430f85fe0200004c89c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1597030000ff15890300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15c10200004c8b7424104d8b66104d89f64d8b5e484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc75752a4d89f54d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9a4000000488d6424104d89ee488d6424084d8b2e4983fd537415488d64240848b8c0f1660800000000488b5d08ff23488d64240849c7064300000048c7c001000000c34983fe7575526a016a01ff74241048c7c001000000488d5c24084c8b4c24204c8b542430ff15fb010000415e488d642428498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048c7c001000000c36a016a01ff74244048c7c001000000488d5c24084c8b4424584c8b4c24504c8b542460ff158f010000ff3424ff74241048c7c01700000048bb48f26608000000004c8b442460ff15640100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e961ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c89742428ff74242048c7c05f000000488b5c2460ff1525000000584883c468c3f4000000000000|@8698,1,@19175,@14323,@14324,@14362,@14362,@10693,@10697,@10696|465,0,@850 475,0,@851 650,0,@853 673,0,@856 801,0,@8667 993,0,@8670 14343:D3,40|483b65187305ff5558cd014883f875750848c7c003000000c348c7c001000000c3f4000000000000|@8671,1,@19153| 14344:D8,1032|483b65187306ff5558ca0903505341504151498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89700849be4096b709000000004c89306a016a014889e34c8b4424204c8b4c2418ff15e9030000ff3424ff7424104c8b4c24304d8b61104d89e64d89c94d8b59484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc090f852b0300004c89c84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1507020000ff15f90100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15310100006a016a01488b442448488b5c24404c8b4424384989e1e8eefcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184d897424104c8b2c244d896c2408488d64240849c70424050000004c8b6c24104d8965004d89750848c7c0010000004883c430c3488b44243848bbc8f266080000000049b8f8f2660800000000ff15460000004c8b6c24204c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c430c3f4000000000000|@8676,1,@19157,@14336,@10693,@10697,@10696,@14347|53,0,@14345 537,0,@850 547,0,@851 722,0,@853 745,0,@856 962,0,@8673 972,0,@8675 14345:D3,32|483b65187305ff5558cd054883f809750848c7c003000000c3488b5208ff22f4|@1001,1,@19155| 14346:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8674,1,@19156| 14347:D4,176|483b65187306ff5558ca0903536a016a014d89ca4d89c14989c048c7c0010000004889e3ff159e000000415d415e41f6c50175364d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc0375164d8b6500415d4d8965004d89750848c7c001000000c34d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c704240b000000415d4d8965004d89750848c7c001000000c3f40000000000|@8677,1,@19159,@14348| 14348:D7,1024|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c89700849bef09bb709000000004c89306a016a014889e34c8b4424184c8b4c2410ff15d8030000ff3424ff742410488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc0d0f85200300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f6010000ff15e80100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15200100006a016a0148c7c0010000004889e34c8b4424404c8b4c24384c8b542430e8e6fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424104d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24284d8965004d89750848c7c0010000004883c430c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24384d8975004c8b34244d897508488d64241048c7c0010000004883c430c3f400000000|@8682,1,@19163,@10693,@10697,@10696,@14350|54,0,@14349 538,0,@850 548,0,@851 723,0,@853 746,0,@856 14349:D3,32|483b65187305ff5558cd054883f80d750848c7c003000000c3488b5208ff22f4|@1001,1,@19158| 14350:D24,4176|488dbc2428ffffff483b7d187306ff5560ca09035053415041514c8b6c24084d8b55104d89d64d89ed4d8b5d484d89dc4d8b024d8b1b4983fb5374054d89d8eb004d89ed498b75284989f14d89ed4c89eb41ff75304889db488b4b504989ca4889db488b7b704989fb4889db488b53784989d5ff31488b36ff32488b17498d7fd0483b7d107306ff5550ca4c7f4989ff48c747f805000000488b0c2448894f2048895718488b5424084889571048897708488b742410488937576a016a014983f8310f85e50000006a016a014989d848b880f1660800000000488b5c24584989e1ff1521100000415c415e49bda8e36208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284d8975204d8975184d8975104d89650849c74500010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408e9010a00004983f8750f859c000000488b5424304889db4c8b7308498b06ff124989c6415648c7c075000000488b5c2440ff15210f00004d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b6c24184d89ee4d896c24104c8b2c244d896c2408488d64240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244d89f64c89742408e95b0900004983f8410f85320600004889d84889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15110d0000ff15030d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff153b0c00004c8b7424384d8b56284d89d34d89f64d8b6e704d89ec41ff3241ff75004d89f64d8b4e104d89ca4d89f64d8b46484d89c54d8b094d8b004983f85374054d89c1eb004983f95d0f85230300004c89f04d89d64889c04d8b55004983fa53740d49c7450053000000e9470200004d8b2e4983fd010f8523020000488d6424484889c04989c541534d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41544d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15460a0000ff15380a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15700900004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24284d896e204c8b2c244d896e18488d6424084c8b6c24284d896e104c8b2c244d896e08488d6424084c8b6c24284d892e4d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d8974241849c74424100300000049c74424080100000049c70424090000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408e929080000488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004d89f64c89700849be58adb709000000004c89306a016a016a014889e3ff1569080000ff7424084c8b6c24584d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e90c0400004983f8430f85f60200004889d84889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff159d060000ff158f0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15c705000048c7c001000000488b5c24384c8b4424484c8b4c2430ff15a30500004989c64156488b5c24404c8b6b284889db4c8b737041ff750041ff3648c7c05f000000ff15720500004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24304d896e204c8b2c244d896e18488d6424084c8b6c24304d896e104c8b2c244d896e08488d6424084c8b6c24304d892e4c8b2c244c896c2408488d6424084c89742408eb1f48c7c031000000ff15fc04000048c70424010000004c8b7424104c897424084c8b3424ff742408488b5c24404c8b6b104889db4c8b63484d8b6d004d8b24244983fc5374054d89e5eb004983fd31751a4c89f0415d4c8b4424404989d94c89eb4883c450ff259704000041f6c601757041ff364d8b76084983fe01752b4c8b6c24504c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c450c348c7c031000000ff15440400004c8b6c24504c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c450c34c8b6c244849beb84b6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c450c3498d47e8483b45107303ff55504989c748c740f8020000004c8bb424980000004c89700849be38b0b709000000004c89306a016a01488b9c24980000004989e0ff159f0300004c8b2c24ff7424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e4156488b542450488b0424ff1248c7c013000000488b9c24a8000000ff1547030000498d47e8483b45107303ff55504989c748c740f8020000004c8bb424b80000004c89700849be80b0b709000000004c89306a016a0148ba28f4660800000000488b9c24b80000004c8b8424b00000004989e1ff12415d415c4c8b5424084d8b324d89d24d8b5a104d89d24d8b522041ff74240841ff7424184d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d895424204c8b14244d895424184d895c24104c8b5c24084d895c24084d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e084c8b6c24104d892e415648c7c01700000048bbc8f26608000000004c8b8424c0000000ff153e0200004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d8975084c8b34244d897500488d6424084c896c2430483b65187303ff55584883c430e91bfeffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204c8b24244d896618488d6424084c8b6424484d8966104c8b24244d896608488d6424084c8b6424484d89264c896c24284c89742430ff742428488b9c24b00000004c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b9c24900000004d895e204d8966184c8ba424980000004d8966104d896e084c8bac24a00000004d892e415648c7c05d000000ff15a50000004d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b2c244d89ee4d896c241849c7442410030000004c8b6c24084d896c240849c70424090000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c89ac24800000004d89f64c89b42488000000488da42480000000e964fbfffff40000000000|@8685,1,@19164,@14323,@14324,@14323,@14355,@14325,@14356,@14325,@14323,@14357,@10693,@10697,@10696,@10988,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14354|209,0,@8664 237,0,@1643 975,0,@850 985,0,@851 1160,0,@853 1183,0,@856 1666,0,@850 1676,0,@851 1851,0,@853 1874,0,@856 2117,0,@14351 2571,0,@850 2581,0,@851 2756,0,@853 2779,0,@856 3190,0,@578 3265,0,@14352 3415,0,@14353 3432,0,@8681 3612,0,@8673 14351:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80f3660800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80f366080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898f3660800000000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98f366080000000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@8680,1,@19160,@10999,@10696|36,0,@8678 174,0,@8678 243,0,@8679 399,0,@8679 436,0,@851 623,0,@117 644,0,@117 14352:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@1001,1,@19161| 14353:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19162| 14354:D10,1584|483b65187306ff5558ca09034889c253415041514c8b7424084d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe030f85f6020000488b4424084c8b700841ff364889c04c8b40284d89c14889c04c8b60304889c0488b78504989fa4889c04c8b70704d89f34889c0488b70784989f5488b3f4d8b00488b16498b364d8d77d04c3b75107306ff5550cac53f4d89f749c746f805000000498956204989761849897e104d8946084d892641564889c04c8b70104889c04c8b60484d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424184889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff152a040000ff151c0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15540300004c8b6c24104c8b7424084d8975004c8b34244d897508488d64241848c7c0010000004883c410c348b880f4660800000000488b5c2408ff15100300004c8b7424084d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542410ff124989c64983fe030f847f020000488b4424084c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1527010000ff15190100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1551000000483b65187303ff5558e94bfdffff415d49bea0f46608000000004d8b264d8965004d8b76084d89750848c7c0010000004883c410c3f4000000|@8691,1,@19170,@10693,@10697,@10696,@14327,@10693,@10697,@10696|566,0,@850 576,0,@851 751,0,@853 774,0,@856 829,0,@8683 1305,0,@850 1315,0,@851 1490,0,@853 1513,0,@856 1545,0,@8684 14355:D11,1392|483b65187306ff5558ca09014989de4889c3415641504c8b4424084d8b68104d89ee4d89c04d8b58484d89dc4d8b6d004d8b1b4983fb5374054d89ddeb004983fd3d0f85090500004c89c04c8b680841ff75004889c0488b70284989f14889c0488b78304889c0488b50504989d24889c04c8b40704d89c34889c0488b48784989cd488b12488b36488b19498b084d8d47d04c3b45107306ff5550cacf7e4d89c749c740f8050000004989582049894818498950104989700849893841504c8b442408498b38488d3c7d010000004883ff017f15488d64242048b8a838620800000000488b5d08ff234d89c04d0fb640084a8d3c450100000049b8300962080000000041ff74b8fc4889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424204889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff152e030000ff15200300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15580200004c8b34244d89f44c3b35420200007507488d642408eb434d89e44d8b2c244d89ee4e8d2c6d010000004983fd03752d49bd80206208000000004d89e4498d742408498d7d0848c7c101000000483bc9f3a67402eb07488d642408eb584c8b24244d89e54c3b25de0100007507488d642408eb414d89ed4e8d3475010000004983fe030f854501000049be30196208000000004d89ed498d7508488d642408498d7e0848c7c101000000483bc9f3a60f851e0100004c8b5424184d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b800f566080000000048bb4870620800000000ff1510010000ff15020100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12eb05488d6424084c8b6c24104c8b7424084d8975004c8b34244d897508488d64241848c7c0010000004883c408c34d89c04159488d64240848b8b8f0660800000000ff251d000000f400000000|@8687,1,@19165,@14354,@10999,@10696,@203,@281,@10693,@10697,@10696|219,0,@502 251,0,@126 634,0,@850 644,0,@851 819,0,@853 842,0,@856 905,0,@281 994,0,@203 1136,0,@8686 1146,0,@851 1373,0,@8657 14356:D6,1064|483b65187306ff5558ca0903415041514c8b34244d8b76084d8b364c8b2c244d8b55284c8b2c244d8b6d304c8b24244d8b5c24504c8b24244d8b6424704c8b0c244d8b49784d8b1b4d8b124d8b094d8b04244d8d67d04c3b65107306ff5550ca096f4d89e749c74424f8050000004d894c24204d894424184d895c24104d895424084d892c244c8b1b4c8b4b10488b7b204d8d6fd04c3b6d107306ff5550ca895f4d89ef49c745f80500000049897d204d8945184d894d104d8955084d895d00415549bda8e36208000000004d8d5ff04c3b5d107306ff5550ca09704d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca09584d89ef49c745f8060000004d895d284c8b1c244d895d204d89651849895d104d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564c8b7424104d8b76104c8b6c24104d8b6d484d8b65004983fc53740d49c7450053000000e9320200004d8b2e4983fd010f8509020000488d6424104c8b342441ff76284c8b742408498b56384c8b74240841ff76404c8b74241041ff76504c8b74241841ff76704c8b74242041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6c24284d8b6d004c8b6424184d892c24415d4c8b6424204d892c244c8b6c24084d8b6d00415c4d892c24415d488d6424184d8975004c8b342441ff76284c8b742408498b56384c8b74240841ff76404c8b74241041ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c6415d4c8b6424104d892c24415d488d6424104d8975004c8b34244d8b66284c8b34244d8b6e304c8b34244d8b5e504c8b34244d8b76704c8b14244d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1565010000ff15570100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f804000000415d4c8968184c89701048c740080100000048c700030000004c8b34244d8b7618415d498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442410ff15970000004c8b7424104d8b76104c8b6c24104d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe317537498d47e8483b45107303ff55504989c748c740f80200000048c7400801000000415e4c89305b4c8b4424084159488d642408e9f6fbffff4c8b6c2418415e4d897500415e4d89750848c7c0010000004883c410c3f4|@8688,1,@19166,@10693,@10697,@10696|196,0,@1643 723,0,@850 733,0,@851 895,0,@853 918,0,@856 14357:D5,352|483b65187306ff5558ca09035341504151488b5c24104c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe417502eb2f4983fe437502eb274983fe317502eb1f4983fe75741948c7c075000000ff152201000049beb84b620800000000eb4f498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424084c89700849be38c3b709000000004c89306a016a0148ba28f46608000000004c8b4424104989e1ff12415e488d642408415648c7c01700000048bbb0f16608000000004c8b442418ff15a10000004989c64983fe03754a48c7c001000000488b5c24184c8b4424104c8b4c2408e805ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c418c3f400000000|@8689,1,@19168,@14359,@14325|96,0,@578 143,0,@14358 160,0,@8681 196,0,@8666 14358:D3,40|483b65187305ff5558cd054883f85f7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19167| 14359:D7,776|483b65187306ff5558ca09014889da5041504c8b34244d8b5e104d89dd4d89f64d8b56484d89d44d8b1b4d8b124983fa5374054d89d3eb004c3b5c24080f85760200004c89f04889c04d8b34244983fe537412488d64241049c7042453000000e94c0200004d8b75004983fe010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf070620800000000ff157c000000488d64241048c7c003000000c34d89e6498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe03751c488b442408488b1c24ff1538000000488d64241048c7c003000000c3488d64241048c7c001000000c3f40000000000|@8690,1,@19169,@14325,@10693,@10697,@10696|461,0,@850 471,0,@851 646,0,@853 670,0,@856 14360:D3,64|483b65187306ff5558ca0903498d47e0483b45107306ff5550ca00034989c748c740f8030000004c8940104c89480849be40c7b709000000004c8930c3f40000|@8694,1,@19172|49,0,@14361 14361:D5,688|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85720200004c8b5424084d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564c8b6c24084d8b75004e8d3475010000004983fe01750f48b898f6660800000000e9b50000004d89f44983c4544c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc00100000f87980100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d780848d1e9f3a44983c61049bd98f666080000000048c7c155000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75084d89f44d8b76184d89e5498b556049c70603000000ff1249bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd05498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c3488d64241848b8f807620800000000488b5d08ff23488d642410498b06c3f4000000ffffffffffffff01|@8693,1,@19171,@10999,@10696|171,0,@8692 330,0,@8692 367,0,@851 545,0,@1098 653,0,@117 14362:D8,1544|483b65187306ff5558ca09074c89ca5341504152488b5c24084c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe750f85d00400004889db4c8b730841ff364889db4c8b63284889db4c8b6b304889db4c8b5b504889db4c8b73704889db4c8b53784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca0c3e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156498d47e0483b45107305ff5550cd0c4989c748c740f8030000004889db488958104c8b7424084c89700849be80d0b709000000004c8930ff124c8b7424104983fe030f85ca0000004c8b7424084d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64242848b8a838620800000000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30096208000000004f8b6caefc4c3b2de5040000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b542438498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff12488b4424204c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff151b020000ff150d0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15450100004c8b6c24284c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c420c20800488d64240848c7c075000000ff15fe00000049bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd094983cd054d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b0c244d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b4978488d6424084d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e415d4d8965004d89750848c7c001000000c20800f40000000000|@8699,1,@19176,@14325,@10693,@10697,@10696,@194|214,0,@14363 295,0,@502 327,0,@126 378,0,@194 453,0,@1098 1029,0,@850 1039,0,@851 1214,0,@853 1237,0,@856 1316,0,@1098 14363:D4,40|483b65187305ff5558cd054989c6498b06498b5e084c8b42084c8b4a10ff251d000000f400000000|@8696,1,@19173,@14364| 14364:D5,616|483b65187306ff5558ca09034989c541514d3be87502eb3c4d8b75004e8d3475010000004d8b204c89e14e8d2465010000004d3bf40f8510020000498d7508498d7808483bc9f3a6740a488d642408e9fc0100004c8b0c244d8b59284d89c94d8b61304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892641564d8b75004e8d3475010000004983fe01750f48b850f7660800000000e9b20000004d89f44983c42e4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b0100000f872b0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd50f766080000000048c7c12f000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff15f1000000ff15e30000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d64241048b8f807620800000000488b5d08ff23488d64240848c7c001000000c3f400000000000000ffffffffffffff01|@8697,1,@19174,@10999,@10696|200,0,@8695 356,0,@8695 393,0,@851 573,0,@117 14365:D5,176|483b65187306ff5558ca0d03525053415041514c8b74241841ff76106a016a016a0148c7c0010000004889e3ff159e000000488d642408415e415d4d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004d896b104d89730849be60d4b709000000004d8933488b5c24104c8b4424184c8b7424284d8b4e084c8b5424084c8b6c2420415c488d64242841544153ff74241048c7c0010000004c896c2418ff251f000000f4000000000000|@8707,1,@19192,@14367,@10906|96,0,@14366 14366:D4,440|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30096208000000004f8b6caefc4c3b2d3f010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3f400000000|@8701,1,@19178,@194|93,0,@502 125,0,@126 176,0,@194 242,0,@1098 14367:D47,11232|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89f34c89700849beb003b809000000004c893049b8f0f86608000000004c8b4c2410ff15f72c00004c8b6424104d8b5424104d89d64d89e44d8b5c24484d89dd4d8b124d8b1b4983fb5374054d89daeb004d89e44d89e341ff7424304d89db498b7b504989fc4d89db4d8b43784d89c1ff3741ff304c8d05080000004f8d4490fc41ffe0e91b020000909090e91a020000909090e919020000909090e918020000909090e917020000909090e916020000909090e915020000909090e914020000909090e913020000909090e912020000909090e911020000909090e910020000909090e912020000909090e974030000909090e973030000909090e972030000909090e974030000909090e92d070000909090e92f070000909090e9b5090000909090e9b4090000909090e9b3090000909090e9b2090000909090e9b1090000909090e9b0090000909090e9af090000909090e9ae090000909090e9b0090000909090e9710d0000909090e9700d0000909090e96f0d0000909090e96e0d0000909090e96d0d0000909090e96c0d0000909090e96b0d0000909090e96a0d0000909090e9690d0000909090e9680d0000909090e9670d0000909090e9660d0000909090e9650d0000909090e9640d0000909090e9630d0000909090e9620d0000909090e9610d0000909090e9600d0000909090e95f0d0000909090e95e0d0000909090e95d0d0000909090e95f0d0000909090e933130000909090e932130000909090e931130000909090e930130000909090e932130000909090e9b8150000909090e9b7150000909090e9b6150000909090e9b5150000909090e9b7150000909090e970190000909090e972190000909090e9f81b0000909090e9f71b0000909090e9f61b0000909090e9f51b0000909090e9f41b0000909090e9f31b0000909090488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e96f010000488d6424184d89db4d8b6b284d89db4d8b73304d89db4d89db4d8b53704d89db4d8b24244d8b6d004d8b014d8b124d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f8050000004d8941204d8951184d8961104d8969084d8931498d47e8483b45107306ff5550ca000a4989c748c740f8020000004c8b7424184c89700849be8806b809000000004c89304c8b7424384d8b364c8b6c24384d8b6d084d8d67e84c3b65107306ff5550ca016a4d89e749c74424f8020000004d89db4d895c240849bb6009b809000000004d891c24498d5fe0483b5d107306ff5550ca01724989df48c743f8030000004c8963104c896b084c89336a016a01ff74241049c7c0030000004c8d542408ff150c290000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee93b1a0000488d642418eb05488d642418eb05488d642418e9c60300004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004c8b4424304d89420849b8c80bb809000000004d890241524c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15c8260000ff15ba2600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15f22500004c8b742458498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24204d89e94c896b104c89730849bea00eb809000000004c89336a016a01488b4424104989e0ff159b250000415d415c488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706350000004d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee962160000488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff150b230000ff15fd2200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15352200004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9601f0000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9ce0300004c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff152f200000ff15212000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15591f000048b8e0f9660800000000488b5c243049b808f16608000000004c8b4c2428ff152d1f00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be5813b809000000004d89306a016a01488b542430488b442460488b5c24384989e14c8b542428ff12ff3424488b4424106a016a014889e34c8b4424504c8b4c2458ff15bb1e0000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9c60f0000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9e1050000488d6424184d89db4c89d841ff73304889c04d89e24d89d34889c04d89cc41ff3241ff314889c04889c04d8b55004983fa53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15841b0000ff15761b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15ae1a0000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc770f85700200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15d3180000ff15c51800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15fd17000049c7c603000000eb0749c7c6010000004156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be5016b809000000004c89336a016a0148b8b8f06608000000004c8b4424404989e1ff1599170000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415648c7c023000000488b5c2438ff15571700004c8b6c24384d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e955120000488d642418eb05488d642418eb05488d642418eb05488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1568150000ff155a1500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15921400004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9d00d0000488d642418eb05488d642418eb05488d642418eb05488d642418e9c60300004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004c8b4424304d89420849b8a016b809000000004d890241524c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1575120000ff15671200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff159f1100004c8b742458498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24204d89e94c896b104c89730849be7819b809000000004c89336a016a01488b4424104989e0ff1548110000415d415c488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706350000004d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9c7020000488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15b80e0000ff15aa0e00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15e20d00004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9e2050000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d64241849c7c6010000004156488b4424184c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc610f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424184889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15aa0b0000ff159c0b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15d40a0000eb004c8b4424184d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9ce000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe19750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe0375564c8b7424404c8b6c24384c8b64243041564155415448c7c001000000488b5c24384c8b4c24284c8b542420e8aadbffff4889c34883fb017508584883c420c21800584c8b7424204c897424384883c438ff25bc070000584883c420c218006a016a014c8b54246848c7c0010000004889e34c8b4424584c8b4c2450ff1589070000ff3424ff74241048c7c00500000048bbc8f26608000000004c8b442460ff155e0700004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e967ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c420e9d7f8ffff6a016a014c8b742478ff742440415648c7c001000000488d5c24104c8b4424604c8b4c24684c8b542458ff15f6050000ff3424ff74241048c7c00500000048bbc8f26608000000004c8b442460ff15cb0500004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e95affffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204c8b6424284d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c448e9fff6ffff498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424704c89730849be081ab809000000004c89336a016a0148b8b8f06608000000004c8b4424784989e1ff15f40300004c8b2c24ff7424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e415648c7c02300000048bb80f16608000000004c8b842488000000ff159d0300004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084c896c2418483b65187303ff55584883c418e919ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424284d8956204d895e184c8b5c24304d895e104d8966084c8b6424384d89264c896c24184c897424204c8b6c24184c8b7424204d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424504d8956204d895e184c8b5c24584d895e104d8966084c8b6424604d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b6424484d8965104d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c468e96af4ffff6a016a014c8b54247048c7c0010000004889e34c8b4424584c8b4c2450ff1576010000ff3424ff74241048c7c00500000048bbc8f26608000000004c8b442460ff154b0100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e967ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c420e9f4f2fffff40000|@8714,1,@19204,@14324,@14393,@14324,@14354,@14324,@14397,@14324,@14399,@14402,@10693,@10697,@10696,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14354,@10693,@10697,@10696,@10693,@10697,@10696,@14405,@14336,@10693,@10697,@10696,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@14381,@14336|57,0,@14368 70,0,@8702 942,0,@14369 1008,0,@14370 1236,0,@14371 1632,0,@850 1642,0,@851 1817,0,@853 1840,0,@856 1904,0,@14372 2557,0,@850 2567,0,@851 2742,0,@853 2765,0,@856 3265,0,@850 3275,0,@851 3450,0,@853 3473,0,@856 3489,0,@8706 3504,0,@8661 3558,0,@14376 4420,0,@850 4430,0,@851 4605,0,@853 4628,0,@856 5085,0,@850 5095,0,@851 5270,0,@853 5293,0,@856 5360,0,@14377 5377,0,@8657 5920,0,@850 5930,0,@851 6105,0,@853 6128,0,@856 6255,0,@14378 6651,0,@850 6661,0,@851 6836,0,@853 6859,0,@856 6923,0,@14379 7576,0,@850 7586,0,@851 7761,0,@853 7784,0,@856 8334,0,@850 8344,0,@851 8519,0,@853 8542,0,@856 9399,0,@8673 9786,0,@8673 10229,0,@14380 10246,0,@8657 10325,0,@8664 10906,0,@8673 14368:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9ce000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@1001,1,@19179| 14369:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@1001,1,@19180| 14370:D5,560|483b65187305ff5558cd054989c5524c8b0c244d8b61084d89e64d8b5c24284d89f24d8b66304d89d64d8b52504d89f04d8b76704d89c14d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892641564d8b75004e8d3475010000004983fe01750f48b898f6660800000000e9b20000004d89f44983c4544c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d600100000f873d0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98f666080000000048c7c155000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff15f6000000ff15e80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b8b84b620800000000c3488d64241048b8f807620800000000488b5d08ff23f400000000000000ffffffffffffff01|@8703,1,@19181,@10999,@10696|139,0,@8692 295,0,@8692 332,0,@851 514,0,@578 530,0,@117 14371:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@1001,1,@19182| 14372:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30300000049c7c0030000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8704,1,@19184,@14373| 14373:D11,784|488dbc2460ffffff483b7d187306ff5560ca09075053415041526a016a016a0148c7c0010000004889e3ff1530030000ff3424ff742410ff742420498d5fe0483b5d107303ff55504989df48c743f8030000004c8b34244c8973104c8b7424084c8973084c8b7424104c89334c8b44245848c7c001000000ff15da0200004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424504c89730849bea812b809000000004c89336a016a014c8b44247048b880f16608000000004989e1ff1583020000ff3424ff742410488b9c2480000000488b4424084c8b0424ff155d0200004c8b8c2480000000488b442438488b5c24304c8b442428ff15380200004989c641566a016a014c8bb424800000004983fe03754f4c8bb424980000004d8b76104c8bac24980000004d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe23750949c7c603000000eb0749c7c6010000004983f6024983fe037505e99e0000004c8b7424784983fe030f848f000000488b9c249800000048c7c023000000ff15a60100004c8b8c249800000048b8b0f1660800000000488b9c248800000049b8507e620800000000ff15740100006a016a01488b9c24a8000000488b8424980000004c8b4424204989e1ff154a010000415c415e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c892c244c89742408eb1248c70424010000004c8b7424184c89742408415b415e4c8b5424084d8b2a4d89d24d8b4a104d89d2498b7a204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bc90e36208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c04c3b65107306ff5550ca006c4d89e749c74424f8070000004c8b4c24284d894c24304c8b4c24684d894c24284d89d24d895424204d897424184d895c24104d896c24084c8b6c24104d892c244c8b6c24604d8965004d89750848c7c0010000004881c480000000c20800f40000000000|@8705,1,@19185,@14344,@14336,@14323,@14360,@11080,@14354,@14342,@10906|166,0,@14374 188,0,@8664 412,0,@8666 430,0,@926 624,0,@1642 14374:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19183| 14375:D3,64|483b65187305ff5558cd014883f865750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@1001,1,@19186| 14376:D3,720|483b65187305ff5558cd054883f80d7505e9ae0200004883f8310f84a40200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff2248c7c003000000c3f4000000|@1001,1,@19187| 14377:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19188| 14378:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@1001,1,@19189| 14379:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30300000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8704,1,@19190,@14373| 14380:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19191| 14381:D26,4232|488dbc2458ffffff483b7d187306ff5560ca090750534150415141524c8b7424304d8b76104c8b6c24304d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424284c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff157c0f0000ff156e0f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442430ff15a30e00006a016a016a0148c7c0010000004889e3ff15850e0000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b44243848c7c003000000488b1c24ff15390e00004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849bec02bb809000000004c89336a016a014c8b44245048b880f16608000000004989e1ff15e20d0000ff3424ff742410488b5c2460488b4424084c8b0424ff15bf0d0000488b5c246048c7c023000000ff15a50d00004c8b7424604d8b76104c8b6c24604d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe190f85a60400004c8b7424204983fe017505e9210100004c8b7424604d8b66284c8b7424604d8b6e304c8b7424604d8b5e504c8b7424604d8b76704c8b5424604d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b828fa66080000000048bb4870620800000000ff15db0c0000ff15cd0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424604d8b76184c8b6c2460498b556049c70603000000ff124c8b7424604d8b76104c8b6c24604d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424584c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15760a0000ff15680a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442460ff159d0900006a016a014c8b44247048b880f1660800000000488b5c24604989e1ff1574090000415b415c4c8b7424384d8b2e4d89f64d8b4e104d89f6498b7e204d8b5424084d8b4424184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8956084d892e4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d8975204d895d184c8b5c24084d895d104d8965084c8b24244d896500488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004c8b6c24204d8965004d89750848c7c0010000004883c448c20800498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849be082cb809000000004c89306a016a014c8b742470ff7424505448830424084156488b5c24304c8b4424484c8b4c24504c8b542428ff153c080000ff34244c8b7424104c8b6c24784d8b6d104c8b6424784d8b6424484d8b6d004d8b24244983fc5374054d89e5eb006a016a014983fd050f851c0300004c8bb424880000004d8b76104c8bac24880000004d8b6d484d8b65004983fc53740d49c7450053000000e95e0200004d8b2e4983fd010f8532020000488da424800000004c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1537060000ff15290600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b842488000000ff155b050000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424784c89700849be682cb809000000004c89304c8bb42488000000498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b7424684c89730849beb82cb809000000004c89336a016a014c8b8c24980000004989e0ff15d3040000415d415e4c892c244c89742408eb0d48c70424010000004c89742408ff34244c8b7424104c8bac24900000004d8b6d104c8ba424900000004d8b6424484d8b6d004d8b24244983fc5374054d89e5eb006a016a014981fd850000000f85f90200004c8bb424a00000004d8b76104c8bac24a00000004d8b6d484d8b65004983fc53740d49c7450053000000e95e0200004d8b2e4983fd010f8532020000488da424980000004c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15a9020000ff159b0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b8424a0000000ff15cd0100004c8bb424a0000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8bb424880000004c89730849be283eb809000000004c89336a016a014c8b8c24b0000000488b8424a00000004989e0ff1568010000415d415e4c892c244c89742408eb0d48c70424010000004c89742408415b415e4c8b6424684d8b2c244d89e44d8b5424104d89e44d8b4424204d8b66084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d8966084d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c2408488d6424084c8b6c24104d892c2449c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fc84c3b6d107306ff5550ca005c4d89ef49c745f8060000004d8955284d895d2049c74518010000004d8965104d89750849c74500010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004c8b6c24584d8965004d89750848c7c0010000004881c480000000c20800f400|@8721,1,@19218,@14403,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@14387,@14354,@10693,@10697,@10696,@10999,@10696,@14323,@11080,@14354,@14342,@10906,@10693,@10697,@10696|444,0,@850 454,0,@851 627,0,@853 650,0,@856 799,0,@14382 821,0,@8664 1053,0,@8708 1063,0,@851 1650,0,@850 1660,0,@851 1833,0,@853 1856,0,@856 1886,0,@8664 2154,0,@14383 2697,0,@850 2707,0,@851 2880,0,@853 2903,0,@856 2960,0,@14384 3021,0,@14385 3575,0,@850 3585,0,@851 3758,0,@853 3781,0,@856 3856,0,@14392 14382:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19193| 14383:D3,56|483b65187305ff5558cd054883f805750848c7c003000000c34881f885000000750848c7c003000000c3488b5208ff22f400000000000000|@1001,1,@19194| 14384:D3,40|483b65187305ff5558cd054881f885000000750848c7c003000000c3488b5208ff22f40000000000|@1001,1,@19195| 14385:D9,352|483b65187305ff5558cd0552506a016a016a0148c7c0010000004889e3ff157d010000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424104d8b461048c7c003000000488b1c24ff152d0100004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be702eb809000000004c89336a016a014c8b7424284d8b461048b880f16608000000004989e1ff15d2000000ff3424ff7424104c8b742438498b5e10488b4424084c8b0424ff15ab0000004c8b742438498b5e1048c7c023000000ff158d0000006a016a014c8b6c24484d8b75084d89ed4d8b6d1041565448830424084155488b442458488b5c24304c8b4424484c8b4c24504c8b542428ff1548000000415e415d488d642440498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@8710,1,@19198,@14387,@14323,@11080,@14354,@14342,@10906|147,0,@14386 173,0,@8664 14386:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19196| 14387:D6,352|483b65187306ff5558ca090750534150415141524c8b4c243048b870fa660800000000488b5c242049b8507e620800000000ff15500100004c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2430ff15270100004989c26a016a014c8b4424404c8b4c2450488b4424304889e3ff1500010000415b415e4c8b14244d8b2a4d89d24d8b4a104d89d2498b7a204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bc90e36208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f8060000004c8b4c24104d894c24284d89d24d89542420488d6424184d897424184d895c24104d896c24084c8b2c244d892c24488d6424104c8b6c24104d8965004d89750848c7c001000000c21800f400000000|@8712,1,@19201,@14389,@14360,@14336|27,0,@8709 42,0,@926 201,0,@1642 14388:D3,112|483b65187305ff5558cd014883f84d7502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f841750848c7c003000000c34883f843750848c7c003000000c34883f831750848c7c003000000c34883f875750848c7c003000000c348c7c001000000c3f4000000000000|@1001,1,@19197| 14389:D17,3080|483b65187306ff5558ca090750534150415141524c8b5424104d8b72104d89d24d8b6a484d8b364d8b6d004983fd5374054d89eeeb004983fe4d0f858b0300004c8b7424084983fe030f85090100004d89d24d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8c0fa66080000000048bb4870620800000000ff15bf0b0000ff15b10b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742410498b5660ff12eb00488b4424104c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1575090000ff15670900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff159f080000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424204c89730849be903db809000000004c89336a016a0148b8b8f06608000000004c8b4424204989e1ff154b080000ff3424ff742410488b442408488b5c24304c8b0424ff1528080000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc4b0f858a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424404889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1549060000ff153b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1573050000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849bee03db809000000004c89306a016a01488b5c24504c8b4424404989e1ff1526050000415d415e4d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c2449bd20f16208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004c8b5424184d8955184d895d104d8965084c8b6424104d89e34d8965004d89db4d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264c892c244c89742408eb7549bd20f16208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424184d8965184d89751049c74508010000004c8b6424104d89e64d8965004c892c244d89f64c89742408ff3424ff742410488b4424504c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc7d0f851e0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f1010000ff15e30100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff151b0100006a016a01488b4424704889e34c8b4424604c8b4c24584c8b542450e8dbf4ffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424104d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24484d8965004d89750848c7c0010000004883c458c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24584d8975004c8b34244d897508488d64241048c7c0010000004883c458c3f400|@8713,1,@19202,@10693,@10697,@10696,@14344,@10693,@10697,@10696,@11080,@14354,@10693,@10697,@10696,@11915,@10696|177,0,@8711 187,0,@851 747,0,@850 757,0,@851 932,0,@853 955,0,@856 1006,0,@14390 1023,0,@8657 1519,0,@850 1529,0,@851 1704,0,@853 1727,0,@856 1776,0,@14391 1848,0,@1724 2034,0,@1724 2599,0,@850 2609,0,@851 2784,0,@853 2807,0,@856 14390:D3,40|483b65187305ff5558cd054883f87d7502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@1001,1,@19199| 14391:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@1001,1,@19200| 14392:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8704,1,@19203,@14373| 14393:D9,1128|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be7843b809000000004c89336a016a0148b8d8fb6608000000004c8b4424184989e1ff154b040000488b0424ff7424084d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d89e84d896e084989064156488b5c2428ff1506040000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc4b0f85260300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424384889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1527020000ff15190200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1551010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424404c89700849be2844b809000000004c89306a016a01488b5c24484c8b4424404989e1ff1504010000415c415e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c8b5c24184d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264c892c244c89742408eb1248c70424010000004c8b7424184c89742408415d415e4d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184c8b2c244d896c2410488d6424084d8974240849c70424030000004c8b6c24304d8965004d89750848c7c0010000004883c438c3f4000000000000|@8716,1,@19208,@14344,@10693,@10697,@10696,@11080,@14354|54,0,@14394 71,0,@8715 601,0,@850 611,0,@851 786,0,@853 809,0,@856 858,0,@14396 14394:D3,32|483b65187305ff5558cd054883f84b750848c7c003000000c3488b5208ff22f4|@1001,1,@19205| 14395:D3,64|483b65187305ff5558cd014883f823750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@1001,1,@19206| 14396:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@1001,1,@19207| 14397:D6,384|483b65187306ff5558ca0907534150415141526a016a0148b8d8fb66080000000048bbc8f26608000000004c8b4424204989e1ff156f010000ff3424ff742410488b442408488b5c24304c8b0424ff154c01000048c7c013000000488b5c2430ff15320100004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424284d89700849bed048b809000000004d89306a016a01488b542430488b4424584c8b542460488b5c24404989e1ff12415c415a4c8b2c244d8b5d004d89ed4d8b45104d89ed498b75204d8b4a08498b7a184d8d77d04c3b75107306ff5550cac03f4d89f749c746f8050000004989762049897e184d8946104d894e084d891e4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049c74308010000004d89234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d89ed4d896c2410488d6424084c8b2c244d896c2408488d6424304d893424415d4d8965004d89750848c7c001000000c21000f4|@8717,1,@19210,@14323,@11080,@14354|25,0,@8715 35,0,@8673 137,0,@14398 14398:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@1001,1,@19209| 14399:D7,400|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be904db809000000004c89336a016a0148b8b8f06608000000004c8b4424184989e1ff1563010000488b0424ff7424084d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d89e84d896e084989064156488b5c2428ff151e01000048c7c013000000488b5c2428ff1504010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424304c89700849bed84db809000000004c89306a016a01488b5c24384c8b4424304989e1ff15b7000000415d415e4c8b5c24084d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184c8b2c244d896c2410488d6424384d8974240849c704240b000000415d4d8965004d89750848c7c001000000c3f4|@8718,1,@19213,@14344,@14323,@11080,@14354|54,0,@14400 71,0,@8657 207,0,@14401 14400:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@1001,1,@19211| 14401:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@1001,1,@19212| 14402:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19214| 14403:D6,1000|483b65187306ff5558ca0903505341504151488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be7055b809000000004c8930ff124989c641ff3641ff7608488b4424104c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc050f85170300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15ea010000ff15dc0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15140100006a016a01488b442438488b5c24304989e04c8b4c2420e8f9fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424184d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e415d488d6424104d8965004d89750848c7c001000000c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24184d8975004c8b34244d897508488d64241048c7c0010000004883c420c3f400|@8719,1,@19216,@10693,@10697,@10696|60,0,@14404 526,0,@850 536,0,@851 711,0,@853 734,0,@856 14404:D3,32|483b65187305ff5558cd054883f805750848c7c003000000c3488b5208ff22f4|@1001,1,@19215| 14405:D5,344|483b65187306ff5558ca090353415041514c8b4424084d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe310f85fb0000006a016a0148b8b8f0660800000000488b5c24104989e1ff151f010000ff3424ff742410488b442408488b5c24284c8b0424ff15fc0000006a016a01488b4424104889e34c8b4424384c8b4c2430e871ffffff415b415e49c7c5010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d8965184c8b24244d896510488d6424084c8b24244d896508488d64242849c74500030000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d642410415e49c706010000004989460848c7c001000000c3f40000000000|@8720,1,@19217,@11080,@14354|67,0,@8657 14406:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19219| 14407:D23,5320|488dbc2438ffffff483b7d187306ff5560ca0d0752505341504151415248b860fe660800000000488b5c241049b870fe6608000000004c8b4c2418ff15371500004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b6424104d89e64d89650849bc886db809000000004d89650041554c8b6c24204d89e841ff75304d89c04d8b50504d89d34d89c04d8b60784d89e541ff3241ff34244d89c04d8b48104d89ca4d89c0498b78484989fc4d8b09488b3f4883ff5374054989f9eb006a016a014983f9450f85770400004c89c04889c04d8b34244983fe53740d49c7042453000000e9430200004d8b324983fe010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1507130000ff15f91200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7025300000048baf070620800000000ff15311200004c8b6c24504d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff1500120000488d642408415d415e4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b7424084d8974240849bee06db809000000004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b1c244d895e10488d6424104d8966084d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424484d89700849be486eb809000000004d89304c8b742460498b56084c8b542470488b0424488b5c24504c8b4c2438ff124989c6415648c7c035000000488b5c2458ff15221100004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424504d89700849beb86eb809000000004d89306a016a01488b5424784c8bb424880000004156488b442420488b5c24704c8d4c24084c8b542458e878fbffffff3424488b5c24704c8b6b284889db4c8b737041ff750041ff3648c7c01f000000ff15991000004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24484d896e204c8b2c244d896e18488d6424084c8b6c24484d896e104c8b2c244d896e08488d6424084c8b6c24484d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b6424184d8965104c8b24244d896508488d64242849c74500030000004c892c244c89742408e9440f00004983f96b0f85280400004c89c04d89d64889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15530e0000ff15450e00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff157d0d00004c8b6c24504d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff154c0d0000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424084d89650849bc206fb809000000004d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424404d89700849be886fb809000000004d89304c8b742458498b56084c8b542468488b5c24484c8b4c2430ff124989c64156488b5c24504c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24184d895e204d8966184c8b6424204d8966104d896e084c8b6c24284d892e415648c7c01f000000ff15240c000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b24244d89e64d8965104c8b6424084d89650849c74500070000004c896c24104d89f64c89742418488d642410e9120b0000498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004d89f64c89730849bef06fb809000000004c89336a016a0148b8b8f06608000000004989e1ff155a0b0000ff3424ff7424104c8b7424684c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b50104d89d64889c04c8b48484d89cc4d8b124d8b094983f95374054d89caeb004983fa430f85f00900004889c04889c04d8b14244983fa53740d49c7042453000000e9460200004d8b264983fc010f8522020000488da424800000004889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1558090000ff154a0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1582080000488b442420488b9c24800000004c8b442418ff1562080000488b9c24800000004c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc5f0f85c30000004889db4c8b73284889db4c8b6b704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d20488d6424084d8965184c8b24244d896510488d6424084d8975084c8b34244d897500488d64240849c7c6010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049c746080100000049c70607000000e9cd0400004d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004c8b5c24784d895c240849bb5870b809000000004d891c2441544889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9d4000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9b5000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb6149c7c603000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f858e0100004c8bac24900000004d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff1533040000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424084d89650849bcc870b809000000004d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304c8bb42498000000498b56084c8b9424a8000000488b9c24880000004c8b04244c8b4c2470ff124989c5488d6424084c8ba424800000004d8b7424284d89e44d8b6424704d8b364d8b1c244d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d897424084c8b34244d893424488d64240849c7c6010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70607000000eb3c6a016a01488b9424a80000004c8bb424b80000004156488b8424a80000004c8b4424184c8d4c24084c8b942488000000e8acedffff415e488d6424284156488b5c24704c8b6b284889db4c8b737041ff750041ff3648c7c05f000000ff15670200004c8b4c24184d8b294d89c94d8b61104d89c94d8b59204d8d77d04c3b75107306ff5550ca003a4d89f749c746f8050000004d895e204c8b1c244d895e18488d6424084d8966104c8b24244d896608488d6424084d892e49c7c5010000004d8d57f04c3b55107306ff5550ca00624d89d749c742f80100000041c642ff404d892a49c7c4010000004d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f80100000041c645ff404d89650049c7c4010000004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f80100000041c643ff404d892349c7c4010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89204d8d67b84c3b65107306ff5550ca006f4d89e749c74424f8080000004d894424384d89c94d894c24304d897424284d895424204d895c24184d896c24104c8b6c24104d896c24084c8b2c244d892c24488d6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c896c24104c897424184883c410eb7f488d64241849c7c6010000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d8934244d8d6fd84c3b6d107306ff5550ca00104d89ef49c745f8040000004c8b1c244d89de4d895d184d8965104c8b6424084d89650849c74500090000004c896c24204d89f64c89742428488d642420585b4c8b4424284c8b4c24384c8b5424204c8b6424404c8b5c24184c8b6c24504c895c24504c896424584c896c24484883c448ff251d000000f400000000|@8727,1,@19232,@14418,@14323,@10906,@11080,@10693,@10697,@10696,@14354,@14323,@10906,@10693,@10697,@10696,@14323,@14323,@10906,@10693,@10697,@10696,@14336|31,0,@8725 46,0,@8726 103,0,@14409 593,0,@850 603,0,@851 778,0,@853 801,0,@856 910,0,@14410 1006,0,@14411 1105,0,@14412 1749,0,@850 1759,0,@851 1934,0,@853 1957,0,@856 2063,0,@14413 2159,0,@14414 2460,0,@14415 2477,0,@8657 2976,0,@850 2986,0,@851 3161,0,@853 3184,0,@856 3510,0,@14416 4336,0,@14417 14408:D3,64|483b65187305ff5558cd014883f8457502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f86b750848c7c003000000c348c7c001000000c3f4|@1001,1,@19222| 14409:D3,48|483b65187305ff5558cd054883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f40000|@1001,1,@19223| 14410:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19224| 14411:D3,72|483b65187305ff5558cd054883f81f7502eb284883f83574224883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff2248c7c003000000c3f400000000|@1001,1,@19225| 14412:D3,64|483b65187305ff5558cd054883f81f750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@1001,1,@19226| 14413:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19227| 14414:D3,64|483b65187305ff5558cd054883f81f750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@1001,1,@19228| 14415:D3,64|483b65187305ff5558cd054883f843750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@1001,1,@19229| 14416:D3,72|483b65187305ff5558cd054883f8177502eb284883f85f74224883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff2248c7c003000000c3f400000000|@1001,1,@19230| 14417:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19231| 14418:D11,2056|483b65187306ff5558ca09075053415041514152488b4424084c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f85c50300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1571060000ff15630600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff159b0500006a016a0148bac8f0660800000000488b4424484c8b442440488b5c24184989e14c8b542410ff1568050000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d89342449c7c6010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d8966204d895e1849c74610030000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00484989c748c740f8020000004c89700848c700050000004c8b6c24184d8b75004d89ed4d8b65104d89ed4d8b55204d8b6b084d8b5b18498d5fd0483b5d107306ff5550ca017c4989df48c743f8050000004c8953204c895b184c8963104c896b084c89334c8b4424104c8b4c2408415a488d6424204c8b6c24104c8b6424084c896424084c896c2410e9f5fbffff4983fc130f85c50300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1582020000ff15740200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15ac0100006a016a0148bac8f0660800000000488b4424484c8b442440488b5c24184989e14c8b542410ff1579010000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d89342449c7c6010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d8966204d895e1849c74610010000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00484989c748c740f8020000004c89700848c700050000004c8b6c24184d8b75004d89ed4d8b65104d89ed4d8b55204d8b6b084d8b5b18498d5fd0483b5d107306ff5550ca017c4989df48c743f8050000004c8953204c895b184c8963104c896b084c89334c8b4424104c8b4c2408415a488d6424204c8b6c24104c8b6424084c896424084c896c2410e926f8ffff488d642410415d4c8b7424084d8975004c8b34244d897508488d64241048c7c001000000c21000f4000000000000|@8728,1,@19233,@14332,@10693,@10697,@10696,@14332,@10693,@10697,@10696|463,0,@850 473,0,@851 648,0,@853 671,0,@856 691,0,@8658 1438,0,@850 1448,0,@851 1623,0,@853 1646,0,@856 1666,0,@8658 14419:D4,56|483b65187306ff5558ca0d074987d84d89cd4c8b4a0850ff74240848c7c0010000004c895424104d89eaff2520000000f400000000000000|@8729,1,@19235,@14420| 14420:D7,1920|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849bed081b809000000004d8930488b5c24104c8b73104d89f44889db4c8b6b484d89eb4d8b364d8b6d004983fd5374054d89eeeb004983fe610f859d0200004889d84889c04d8b334983fe53740c49c70353000000e94c0200004d8b34244983fe010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff159d050000ff158f0500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c704245300000048baf070620800000000ff15c6040000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b64240848c7c0010000004c896424084c896c2410e9f0fcffff4889db4d89e64889db4d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc477505e9c60300004983fc6d0f84bc0300004889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f85e90000006a016a014c8b4c24384c8b7424404156ff7424184c89c049c7c0030000004c8d542410ff1568010000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c7060100000041564c8b7424384c8b6c24304156415548c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418e841f9ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21000488d64242048c7c001000000c21000488b542408488b4424284c8b5424304c8b0c24ff124989c641564c8b7424384c8b6c24304156415548c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418e8b9f8ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21000f400000000000000|@8824,1,@19343,@14422,@10693,@10697,@10696|54,0,@14421 507,0,@850 517,0,@851 692,0,@853 716,0,@856 14421:D3,728|483b65187305ff5558cd054883f86d7505e9b00200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb064883f861750848c7c003000000c3488b5208ff22f4000000|@1001,1,@19234| 14422:D60,11064|488dbc2450ffffff483b7d187306ff5560ca09075053415141524c8b7424084c89f341ff364983f8037505e9fd0500004c8b6c24184d8b75104d89ed4d8b6d484d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f842f030000488d6424086a016a016a0148c7c0010000004889e3ff15f7290000ff34244c8b6c2410ff7424184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849bdf8b1b809000000004d892e41566a016a016a0148c7c0010000004889e3ff1597290000ff3424ff7424184c8b6c24604d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b6424284c8960104c8968084c89306a016a014c8bb424980000004c8bac249000000041564155488b9c24900000004c8d4424104c8b8c248800000049ba50ff660800000000ff1510290000415b415e49bda8946208000000004d8d57f04c3b55107306ff5550ca00684d89d749c742f80100000041c642ff404d892a49bc20f16208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d89650049bc60ff6608000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89214d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c242049b908de6208000000004d894c24184d895424104d896c240849bd78096308000000004d892c244d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745001d00000049c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89224d8d67d04c3b65107306ff5550ca006c4d89e749c74424f80500000049c7442420010000004d895424184d897424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424284d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424084c8b24244d8922488d6424204d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c7042439000000415d488d6424184d8965004d89750848c7c001000000c210004c8b6c24184d8b55104d89d64d89ed4d8b5d484d89dc4d8b024d8b1b4983fb5374054d89d8eb004d89ed498b75284989f14d89ed4c89e841ff75304889c0488b48504989ca4889c0488b78704989fb4889c0488b50784989d5ff31488b36ff32488b17498d7fd0483b7d107306ff5550ca4d7f4989ff48c747f805000000488b0c2448894f2048895718488b5424084889571048897708488b74241048893757488d3d070000004a8d7c87fcffe7e91b020000909090e941020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e974090000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e978090000909090e983010000909090e9a90c0000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e950110000909090e973110000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e96e110000909090e9c0160000909090e9f3000000909090e9eb000000909090e9d3160000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e95f1a0000909090e93b000000909090e9931d0000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b6c242849be68ab6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c440c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1540220000ff15322200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff156a210000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849be20b4b809000000004c89304c8b742448498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be78b4b809000000004c89336a016a014c8b4c24584989e0ff15f1200000ff3424488b4424484c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004981fc850000000f85ea0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424484889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15101f0000ff15021f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff153a1e0000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849be70b6b809000000004c89304c8b742460498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b7424404c89730849bec0b6b809000000004c89336a016a014c8b4c24704989e0ff15b81d0000415e488d642408eb0749c7c601000000415648c7c083000000488b5c2450ff158c1d0000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424584c89700849be50b7b809000000004c89304c8b5424704c8b7424684156488b5c24504c8b44245849b950ff660800000000ff15301d00004989c64156488b5c24584c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424304d8966104d896e084c8b6c24384d892e415648c7c01f000000ff15c01c0000488b442408ff15ad1c00004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004d8975284c8b7424104d89752049c74518030000004c8b7424184d8975104c8b1c244d89de4d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004c8b6c24504d8965004d89f64d897508488d64242048c7c0010000004883c450c21000488b4424404889db41594c8b5424204c8b6c244849c7c0010000004c896c24504c8b7424404c897424484883c448ff25b01b0000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15191a0000ff150b1a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1543190000498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424284c8973104c8b7424304c89730849be98b7b809000000004c89336a016a014c8b4c2458488b4424484989e0ff15ed180000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c70424130000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15b8160000ff15aa1600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15e21500006a016a016a0148c7c0010000004889e3ff15c4150000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff159b150000ff34244c8b742410ff7424184c8bac24800000004d8b5d004d89ed4d8b55084d8d4fd84c3b4d107306ff5550ca004c4d89cf49c741f8040000004c8b24244d89e54d8961184c8b6424284d8961104c8b6424304d89610849bc28c8b809000000004d89214d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d891c244154498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004d89ed4c896b104c8973084c8b7424104c89334c8b8424a800000048c7c003000000ff15c01400004c8bb424b00000004c8bac24a8000000498d5fc8483b5d107306ff5550ca00604989df48c743f8060000004c896b284c89732049be50ff6608000000004c8973184c8b34244c897310488d6424084c8bb424880000004c89730849be38cab809000000004c89336a016a014c8b8c24b0000000488b8424a00000004989e0ff1534140000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424584d8956204d895e184c8b5c24604d895e104d8966084c8b6424684d89264d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424204d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424104c8b24244d8922488d6424384d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c70424190000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25fd120000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25ca120000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1533110000ff15251100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff155d1000004c8b6c24284d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff152c100000ff7424084c8b6c24184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849bd40ffb909000000004d892e4156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424284c8973104c8b34244c8973084c8b7424084c8933498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424704c89700849bea8ffb909000000004c89304c8b9424880000004c8bb4248000000041564c8b44247049b950ff660800000000ff155c0f00004989c6415648c7c035000000488b5c2470ff153d0f00004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24584d896e0849bdf8ffb909000000004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24304c896b104c8b6c24084c896b084c8933498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424784c89700849be5000ba09000000004c89304c8b9424900000004c8bb4248800000041564c8b44247849b950ff660800000000ff15770e00004989c64156488b5c24784c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24484d895e204d8966184c8b6424504d8966104d896e084c8b6c24584d892e415648c7c01f000000ff15070e0000488b442410ff15f40d00004989c64156488b442410ff15dc0d00004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8975204c8b5c24084d89de4d895d1849c74510030000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424270000004c8b6c24704d8965004d89f64d897508488da4249000000048c7c001000000c21000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25ed0c00004889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff155b0b0000ff154d0b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15850a0000488b5c24384c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f85650100006a016a014989d8488b4424104889e34c8b4c2450ff15270a0000415c415e488d6424084d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d64240849c7c5010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b49c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8955184d895d104d8975084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424290000004c8b6c24084d8965004d89750848c7c0010000004883c428c2100048c7c031000000ff15c70800004c8b6c242849be68ab6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c440c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1502070000ff15f40600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff152c0600004c8b742448498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424284c89730849be9800ba09000000004c89336a016a014c8b4c2458488b4424484989e0ff15d3050000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c70424350000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff159e030000ff15900300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15c80200006a016a016a0148c7c0010000004889e3ff15aa020000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff1581020000ff34244c8b742410ff7424184c8bac24800000004d8b5d004d89ed4d8b55084d8d4fd84c3b4d107306ff5550ca004c4d89cf49c741f8040000004c8b24244d89e54d8961184c8b6424284d8961104c8b6424304d89610849bc2801ba09000000004d89214d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d891c244154498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004d89ed4c896b104c8973084c8b7424104c89334c8b8424a800000048c7c003000000ff15a6010000498d47e8483b45107303ff55504989c748c740f8020000004c8bb424980000004c89700849be3803ba09000000004c89306a016a014c8bb424c00000004c8bac24b8000000ff35530100004156415548c7c3010000004c8d4424184c8b8c24b80000004c8b542428ff1528010000415d415e488d6424084d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424584d8956204d895e184c8b5c24604d895e104d8966084c8b6424684d89264d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424204d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424104c8b24244d8922488d6424384d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c70424390000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000f4000000000000|@8825,1,@19344,@14531,@8730,@14342,@10906,@10906,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@14325,@14533,@10693,@10697,@10696,@14534,@14486,@14487,@14323,@14484,@14323,@14484,@10906,@10693,@10697,@10696,@14534,@14534,@14403,@14342,@10906,@10906,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@14381,@14530,@14323,@14484,@14323,@14403,@10693,@10697,@10696,@14403,@10693,@10697,@10696,@14468,@10906,@10906|846,0,@14423 994,0,@8730 1014,0,@1098 1059,0,@1724 1105,0,@8731 1183,0,@1613 1208,0,@1902 2306,0,@1268 2720,0,@850 2730,0,@851 2905,0,@853 2928,0,@856 2977,0,@14425 3026,0,@14426 3504,0,@850 3514,0,@851 3689,0,@853 3712,0,@856 3761,0,@14428 3819,0,@14429 3919,0,@14430 3954,0,@8730 4703,0,@850 4713,0,@851 4888,0,@853 4911,0,@856 4969,0,@14431 5536,0,@850 5546,0,@851 5721,0,@853 5744,0,@856 5902,0,@14436 6077,0,@8730 6116,0,@14437 6877,0,@850 6887,0,@851 7062,0,@853 7085,0,@856 7191,0,@14523 7290,0,@14524 7326,0,@8730 7407,0,@14525 7503,0,@14526 7539,0,@8730 8285,0,@850 8295,0,@851 8470,0,@853 8493,0,@856 8944,0,@1268 9358,0,@850 9368,0,@851 9543,0,@853 9566,0,@856 9627,0,@14527 10194,0,@850 10204,0,@851 10379,0,@853 10402,0,@856 10560,0,@14528 10720,0,@14529 14423:D4,440|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30096208000000004f8b6caefc4c3b2d3f010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3f400000000|@8701,1,@19236,@194|93,0,@502 125,0,@126 176,0,@194 242,0,@1098 14424:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19237| 14425:D3,48|483b65187305ff5558cd054881f8830000007502eb0f4881f8850000007406488b5208ff2248c7c003000000c3f40000|@1001,1,@19238| 14426:D9,344|483b65187305ff5558cd0552506a016a016a0148c7c0010000004889e3ff1575010000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424104d8b460848c7c003000000488b1c24ff15250100004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be28b6b809000000004c89336a016a014c8b7424284d8b460848b880f16608000000004989e1ff15ca000000ff3424ff7424104c8b742438498b5e08488b4424084c8b0424ff15a30000004c8b742438498b5e0848c7c023000000ff15850000006a016a014c8b7424484d8b76086a015448830424084156488b442458488b5c24304c8b4424484c8b4c24504c8b542428ff1547000000415e415d488d642440498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@8710,1,@19240,@14387,@14323,@11080,@14354,@14342,@10906|147,0,@14427 173,0,@8664 14427:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19239| 14428:D3,40|483b65187305ff5558cd054881f883000000750848c7c003000000c3488b5208ff22f40000000000|@1001,1,@19241| 14429:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8704,1,@19242,@14373| 14430:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@1001,1,@19243| 14431:D4,72|483b65187305ff5558cd056a016a014c8b42084c8b4a104889e3ff1540000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@8734,1,@19247,@14432| 14432:D19,3736|483b65187306ff5558ca0903505341504151488b4424084c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc4d0f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15430d0000ff15350d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff156d0c0000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424184c89730849be50c7b809000000004c89336a016a0148b8d8fb6608000000004c8b4424184989e1ff15190c0000ff3424ff742410488b442408488b5c24284c8b0424ff15f60b0000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f85e20600004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff151b0a0000ff150d0a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1545090000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc4d0f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff156a070000ff155c0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1594060000eb006a016a0148b8d8fb660800000000488b5c24484c8b4424384989e1ff1569060000415c41584c8b1c244d8b2b4d89db4d8b4b104d89db498b73204d8b5008498b78184d8d77d04c3b75107306ff5550cac03f4d89f749c746f8050000004989762049897e184d894e104d8956084d892e49bda8946208000000004d8d4ff04c3b4d107306ff5550ca00794d89cf49c741f80100000041c641ff404d892949bd20f16208000000004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d892a49bda0ff660800000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fd04c3b6d107306ff5550ca805f4d89ef49c745f80500000049897d204d8945184d894d104d8955084d8965004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d896a0849c7021d00000049bc20f16208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f8060000004d895424284d89db4d895c2420488d6424084d8974241849c7442410010000004d896c24084c8b2c244d892c24488d6424084c8b6c24204d8965004d89750848c7c0010000004883c430c34983fc4b0f85b80300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f7020000ff15e90200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1521020000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849bee0c7b809000000004c89304c8b7424204d8b46106a016a01488b5c24384989e1ff15d0010000415d415e4c8b14244d8b224d89d24d8b4a104d89d2498b7a204d8b5e084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d895e084d89264d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004d892b49bc20f16208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f80600000049b968ab6208000000004d894c24284d89d24d89542420488d6424084d897424184d895c24104d896c24084c8b2c244d892c24488d6424084c8b6c24204d8965004d89750848c7c0010000004883c430c349be20f16208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67c84c3b65107306ff5550ca00204d89e749c74424f80600000049be68ab6208000000004d897424284c8b34244d89f34d897424204d89db4d89de4d895c241849c7442410010000004d896c24084c8b6c24084d892c244c8b6c24304d8965004d89f64d897508488d64241048c7c0010000004883c430c3f400000000000000|@8735,1,@19248,@14344,@10693,@10697,@10696,@14354,@10693,@10697,@10696,@10693,@10697,@10696,@11080,@14354,@10693,@10697,@10696|461,0,@850 471,0,@851 646,0,@853 669,0,@856 720,0,@14433 737,0,@8715 1229,0,@850 1239,0,@851 1414,0,@853 1437,0,@856 1894,0,@850 1904,0,@851 2079,0,@853 2102,0,@856 2124,0,@8715 2232,0,@1098 2277,0,@1724 2322,0,@8733 2451,0,@1724 3001,0,@850 3011,0,@851 3186,0,@853 3209,0,@856 3258,0,@14435 3407,0,@1724 3481,0,@1268 3562,0,@1724 3636,0,@1268 14433:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@1001,1,@19244| 14434:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19245| 14435:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19246| 14436:D4,480|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c64983fe010f85a60100004c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30096208000000004f8b6caefc4c3b2d4b010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3488d642410498b06c3f400000000000000|@8736,1,@19249,@194|121,0,@502 153,0,@126 204,0,@194 270,0,@1098 14437:D4,96|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a2841564155488d5c2410ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8737,1,@19250,@14438| 14438:D4,320|483b65187306ff5558ca0907536a016a014c8b7424284c8b6c24204152415641554d89ca4d89c14989c048c7c001000000488d5c2418ff151c010000415b415e49c7c5010000004d8d4ff04c3b4d107306ff5550ca00684d89cf49c741f80100000041c641ff404d892949bd20f16208000000004d8d57f04c3b55107306ff5550ca006a4d89d749c742f80100000041c642ff404d892a49bcb84b6208000000004d8d6ff04c3b6d107306ff5550ca005e4d89ef49c745f80100000041c645ff404d89650049bcb84b6208000000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89204d8d67c84c3b65107306ff5550ca006f4d89e749c74424f8060000004d894424284d894c24204d897424184d895424104d895c24084d892c24415d4d8965004d89750848c7c001000000c21000f4|@8742,1,@19253,@14439|108,0,@1724 153,0,@578 199,0,@578 14439:D22,5216|483b65187306ff5558ca090750534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424104d89700849be58e1b809000000004d89306a016a01488b442410488b5c24184989e14c8b542418ff15aa140000488b0424ff7424086a016a016a01488b5c24384989e0ff1586140000ff3424ff742410ff7424204c8b6c24684d89ee4983fd017505e9aa0800004d89f64d8b364d8b2641ff76084c3b6424107502eb3d4d8b34244e8d3475010000004c8b6c24104d8b5d004c89d94e8d1c5d010000004d3bf3751d4d89ed498d7424084d89ed498d7d08483bc9f3a67402eb05e9570400004c8b4c24584d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e41564c8b7424184d8b2e4e8d1c6d010000004983fb01750f49bda000670800000000e9b10000004d89da4983c23e4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0db21200000f875d1200004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d89550049baa00067080000000048c7c13f000000498d7208498d7d0848d1e9f3a44c89d94d89f6498d7608498d7d2748d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bad000670800000000e9b40000004d89f34983c3484c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dd81100000f87731100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89f1498d7508498d7a0848d1e9f3a44983c61049bdd00067080000000048c7c149000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05eb1000000f87761000004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8b0b1620800000000e9a50000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d191000000f87940f00004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c604282749d1ee42c6443001278060ffbf48bb4870620800000000ff154c100000ff153e1000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24584d8b75184d89ed498b556049c70603000000ff124c8b34244c3b742408750a488d642408e9e60300004c8b5424584d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648bae85c620800000000488b44241048c7c303000000ff150e0f00004989c64d8b2e4e8d2c6d010000004983fd01750f49bc0801670800000000e9b30000004d89eb4983c3204c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b150b0e00000f87760d00004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb080167080000000048c7c121000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241848d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2801670800000000e9b60000004d89eb4983c34c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b152f0d00000f878a0c00004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc280167080000000048c7c14d000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf415648bae85c620800000000488b44241048c7c303000000ff153b0d00004989c54c8b1c244d8b334e8d3475010000004d8b65004e8d2465010000004983fe01750d488d6424084c89e8e9bd0000004983fc01750d4c89d8488d642408e9aa0000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d110c00000f875c0b00004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f14d89db498d7308488d642408488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff15350c0000ff15270c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24584d8b75184d89ed498b556049c70603000000ff124883c408488b5c24504c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f856c0200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15b3090000ff15a50900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15dd080000e9ab02000048b8681a620800000000ff15c0080000488b4424504c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc710f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15e5060000ff15d70600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff150f060000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424584c89730849bea0e1b809000000004c89336a016a014c8b9424980000004c8bb424900000004c8bac248800000041564155488b4424684c8d4424104c8b4c2470ff15a2050000415c415e4c8b5c24304d8b2b4d89db4d8b4b104d89db498b7b204d8b56084d8b46184d8d5fd04c3b5d107306ff5550ca80774d89df49c743f80500000049897b204d8943184d894b104d8953084d892b49c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084c8b6424104d8965004155488b4424584c8b58104d89dc4889c04c8b50484d89d54d8b1b4d8b124983fa5374054d89d3eb006a016a014983fb7d0f85040300004889c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424684889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1515030000ff15070300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff153f0200004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e084c8b6c24204d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89306a016a014c8bb424b00000004c8bac24a80000004c8ba424a0000000415641554154488d5c24184c8b8424980000004c8b8c24900000004c8b942488000000e83cedffff415d415e4c892c244c89742408eb0d48c70424010000004c89742408415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424084c8b5c24304d8b2b4d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c470c21800488da4248800000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23488da4248000000048b8f807620800000000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@8779,1,@19279,@10693,@10697,@10696,@14468,@10693,@10697,@10696,@14327,@10693,@10697,@10696,@10999,@10696,@10649,@10649,@10999,@10696,@14520,@14442|55,0,@14440 361,0,@8738 499,0,@8738 571,0,@8739 728,0,@8739 1002,0,@1327 1182,0,@851 1472,0,@707 1520,0,@8740 1660,0,@8740 1732,0,@8741 1890,0,@8741 1931,0,@707 2197,0,@851 2813,0,@850 2823,0,@851 2998,0,@853 3021,0,@856 3042,0,@216 3499,0,@850 3509,0,@851 3684,0,@853 3707,0,@856 3758,0,@14441 4443,0,@850 4453,0,@851 4628,0,@853 4651,0,@856 4995,0,@117 5019,0,@117 5043,0,@117 5067,0,@117 5091,0,@117 5115,0,@117 5139,0,@117 14440:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19251| 14441:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@1001,1,@19252| 14442:D9,368|483b65187306ff5558ca090750534150415141524d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24204d896e2049bd98016708000000004d896e184c8b6c24184d89e94d896e104c8b2c244d896e0849bdb0e3b809000000004d892e415648b8e807670800000000488b5c241849b8b801670800000000ff152b0100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849bd6839b909000000004d892e4c8b6c2428498b45004d89ed498b5d084d89ed4d8b45106a016a01ff35d40000004156544883042410ff7424304c8b4c243049bae807670800000000ff15ab0000005b4158488d6424086a016a01ff742430ff742430ff3589000000488b4424384c8d4c24184c8b542428ff156c000000488b44242048bbc8f266080000000049b8f8076708000000004c8b4c2428ff15400000004c8b6c24184c8b34244d897500488d642408415e488d6424284d89750848c7c001000000c3f40000|@8823,1,@19335,@14336,@14460,@8743,@14511,@8657,@14336|55,0,@8743 89,0,@14443 104,0,@8777 119,0,@8745 168,0,@14467 231,0,@8777 299,0,@8673 309,0,@8778 14443:D41,8472|483b65187305ff5558cd0d5250534c8b7424104d8b66104d89e54d8b6424104d89f64d89eb4d8b6d484d8b24244d8b6d004983fd5374054d89eceb004d89f64d89dd4d8b53284d89f64d89eb41ff75304d89f64d89dd4d8b43504d89f64d89e94d8b5d704d89f64d89cd4d8b497841ff304d8b1241ff314d8b0b4d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004c8b04244d8943204d894b184c8b4c24084d894b104d8953084c8b5424104d891341534c8d1d080000004f8d5ca3fc41ffe3e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9e2060000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e96e060000909090e9a2060000909090e98b0a0000909090e90d120000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9481a0000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e95a1b0000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e9561b0000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9f11d00009090904d89f64d89ec4d8b6d104d89f64d89e14d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd4d7507488d642408eb1c4983fd0d7507488d642408eb0f4983fd310f8570040000488d6424084d89f64d89cb4d8b61104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc4d750949c7c403000000eb0749c7c40100000041544c8b24244983fc030f85870200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15241d0000ff15161d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff153f1c0000eb004c8b7424304d8b6e204d89ec498b45004d89f64d89e5498b5c24084d89f64d8b45106a016a014d89f64d8b4e10ff35021c0000ff7424185448830424104c8b542450ff15e51b0000415c415e488d64240849bda8946208000000004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20f16208000000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bda8016708000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8975184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704241d0000004d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642408415d488d6424104d8965004d89750848c7c001000000c348b8c8f2660800000000488b5c242849b8b801670800000000ff156e1a00004c8b6c242049be68ab6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b8d001670800000000ff15231a00004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b8b802670800000000ff15df1900004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15fd170000ff15ef1700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff15181700004c8b7424284d8b6e104d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5b750949c7c601000000eb2f4d89f64d8b46184d89f64d8b4e084d89f64d8b56204d89ee415648c7c001000000488b5c2428ff15a91600004989c641564c8b7424304d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05b000000ff152f16000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b1c244d89de4d895c24184c8b5c24084d895c24104d896c240849c70424230000004c8b6c24284d8965004d89f64d897508488d64243048c7c0010000004883c410c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15e4130000ff15d61300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff15ff1200004c8b7424284d8b6e104d89ec4d8b5d284d89f64d89e54d8b64247041ff3341ff34244d89f64d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5d0f85140300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424384d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f5100000ff15e71000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff15101000004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004d89ee4c89700849beb007b909000000004c89306a016a016a014889e3ff15360f0000488d642408415a488d6424086a016a014c8b6424384d8b4424104d89e44d8b7424184d89e44d8b6c24084d89e44d8b64242041564155415448c7c001000000488d5c24184c8b4c2448ff15df0e0000ff3424ff7424104c8b7424484d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424204d8955204d895d184c8b5c24284d895d104d8965084c8b6424304d896500415548c7c05d000000ff15630e000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d04c3b65107306ff5550ca00204d89e749c74424f8050000004c8b1c244d89de4d895c24204c8b5c24084d895c24184d896c24104c8b6c24104d896c240849c704241f0000004c8b6c24404d8965004d89f64d897508488d64245848c7c001000000c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15120c0000ff15040c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff152d0b00004c8b7424284d8b6e104d89ec4d8b6d104d89f64c89e34d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd5f757d4989dc4c8b73284d89e54d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d204d8965184c8b6424084d8965104d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70637000000e9ba0400004d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004c8b6c24204d89680849bd900ab909000000004d89286a016a014d89f6498b56184d89f6498b46204d89f64d89f64d8b56084989e1ff12ff34244c8b6c24404d8b75104d89f34d8b66104d89ed4d89de4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc170f85a50300004d89ed4d89f34d8b76104d89ed4d89dc4d8b5b484d8b134983fa53740c49c70353000000e9570200004d8b1e4983fb010f852c020000488d6424404d89e641ff7424284d89f4498b56384d89e641ff7424404d89f441ff76504d89e641ff74247041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff153d080000ff152f0800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf0706208000000004d89ed498b4510ff15590700004c8b7424404d8b46184d89f64d8b4e084d89f64d8b56204d89f64d8b7610415648c7c001000000488b5c2440ff151f0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b6424384d8b7424104d89f34d8b76284d89dc4d8b6424704d8b364d8b24244d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b5424104d8953204d8963184c8b6424184d8963104d8973084c8b7424204d893349bea8946208000000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c706330000004883c410e98a0000004d89f44d8b76284d89e54d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184c8b6424204d8965104d8975084c8b7424284d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062d0000004883c41041564c8b7424304d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05f000000ff152b0500004c8b6c24284c8b7424084d8975004c8b34244d897508488d64243048c7c0010000004883c410c34d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8780367080000000048bb4870620800000000ff1582040000ff15740400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24304d8b75104d89f44d8b76184d89e5498b556049c70603000000ff124c8b742430498b5e0848b8b003670800000000ff15b70300004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b81804670800000000ff15730300004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1596010000ff15880100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4610ff15b10000004d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b2c244d89ee4d896c240849c704243d0000004c8b6c24204d8965004d89f64d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b86804670800000000ff15440000004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c3f4000000000000|@8766,1,@19262,@14453,@10693,@10697,@10696,@14453,@14453,@10999,@10696,@14323,@14454,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14456,@10988,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14464,@10693,@10697,@10696,@14453,@14453,@14336,@14452,@8657,@10693,@10697,@10696|1308,0,@850 1318,0,@851 1500,0,@853 1524,0,@856 1630,0,@1098 1675,0,@1724 1720,0,@8744 1957,0,@8673 1972,0,@8745 1993,0,@1268 2039,0,@8746 2099,0,@8752 2563,0,@850 2573,0,@851 2755,0,@853 2779,0,@856 3019,0,@1098 3572,0,@850 3582,0,@851 3764,0,@853 3788,0,@856 4299,0,@850 4309,0,@851 4491,0,@853 4515,0,@856 4720,0,@14447 4943,0,@1098 5502,0,@850 5512,0,@851 5694,0,@853 5718,0,@856 5954,0,@14448 6459,0,@850 6469,0,@851 6651,0,@853 6674,0,@856 6887,0,@1098 7374,0,@8756 7384,0,@851 7571,0,@8757 7631,0,@8760 8090,0,@850 8100,0,@851 8282,0,@853 8306,0,@856 8414,0,@8762 14444:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19254| 14445:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bce0016708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19255|16,0,@1098 88,0,@8747 14446:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc8026708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19256|16,0,@1098 88,0,@8753 14447:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80f3660800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80f366080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898f3660800000000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98f366080000000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@8755,1,@19257,@10999,@10696|36,0,@8678 174,0,@8678 243,0,@8679 399,0,@8679 436,0,@851 623,0,@117 644,0,@117 14448:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19258| 14449:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc0036708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19259|16,0,@1098 88,0,@8758 14450:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc28046708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19260|16,0,@1098 88,0,@8761 14451:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc78046708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19261|16,0,@1098 88,0,@8763 14452:D6,832|483b65187306ff5558ca09075341516a016a01488b4424384c89d34c8b4424104989e1ff153f030000ff3424ff742410488b542428488b442408ff124989c641f6c60175374d8b364d8b76084d8b264d89e54983fc03750949c7c603000000eb194d89ee4983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f85700200004c8b7424404983fe030f845a0200004c8b7424084d8b2e4a8d0c6d010000004883f901750f49bd7018620800000000e9950000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d470200000f87ea0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c64508284d89f6498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8d004670800000000e9b20000004d89f44983c45c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d890100000f871f0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bdd00467080000000048c7c15d000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1527010000ff15190100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742418498b5660ff124883c408eb36488d64243048b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d642410eb05488d6424104c8b6c24284c8b34244d897500488d642408415e4d89750848c7c0010000004883c410c21800f400000000000000ffffffffffffff01ffffffffffffff01|@8776,1,@19276,@11915,@10696,@14354|180,0,@195 362,0,@8765 518,0,@8765 555,0,@851 723,0,@117 744,0,@117 14453:D6,752|483b65187305ff5558cd095053488b04244c8b700841ff364889c04c8b40284d89c14889c04c8b60304889c0488b78504989fa4889c04c8b70704d89f34889c0488b70784989f5488b3f4d8b00488b16498b364d8d77d04c3b75107306ff5550cac53f4d89f749c746f805000000498956204989761849897e104d8946084d892641564889c04c8b70104889c04c8b60484d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424104889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1503010000ff15f50000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff152d000000488b542418488b4424085b488d642418ff22f40000|@8767,1,@19263,@10693,@10697,@10696|509,0,@850 519,0,@851 694,0,@853 717,0,@856 14454:D6,928|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849be6817b909000000004d89306a016a01488b542420488b5c2438488b4424104989e14c8b542418ff12ff34244c8b7424404d8b76104c8b6c24404d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe170f85dd0200004c8b7424404d8b76104c8b6c24404d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424384c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1581010000ff15730100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442440ff15a80000004c8b742440415648c7c001000000488b5c24384c8b4424304c8b4c24284c8b542420e8c9fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c430c20800498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c430c20800f4|@8768,1,@19265,@10693,@10697,@10696|54,0,@14455 559,0,@850 569,0,@851 742,0,@853 765,0,@856 14455:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19264| 14456:D16,3680|483b65187306ff5558ca090753415041514152488b5c24104c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc730f8596020000488d6424104889d84889c04d8b65004983fc537412488d64240849c7450053000000e94a0200004d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15ed0c0000ff15df0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15170c0000488d642408415d49beb09f6208000000004d8b264d8965004d8b76084d89750848c7c001000000c218004d8d6fe84c3b6d107305ff5550cd084d89ef49c745f8020000004c8b6424084d89e64d89650849bca826b909000000004d8965004155498d47e8483b45107306ff5550ca08404989c748c740f8020000004d89f64c89700849bef826b909000000004c89306a016a014989e0ff15730b0000ff3424ff742410488b542428498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff124c8b5424384d8b62104d89e64d89d24d8b5a484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc230f858a0200004c89d04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424484889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff155c090000ff154e0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1586080000488b542470488b4424604c8b542468488b5c24484c8b4424304989e1ff12e9eb0300004c8b7424184d8b264d89e54e8d2465010000004983fc010f8ea70200004d89f64d89ec4e8d2c6d010000004983fd017f15488d64245848b8a838620800000000488b5d08ff234d89f64d0fb65e084d89dd4e8d0c5d0100000049bb30096208000000004f8b448bfc4d8b184e8d0c5d010000004983f90373054c89c9eb0748c7c10300000049bb4819620800000000498d7008498d7b0848d1e9483bc9f3a67214770949c7c301000000eb1049c7c303000000eb0749c7c3ffffffff4983fb0175084983f9037208eb124983fb017d0c49c7c601000000e9c70000004e8d2465010000004983fc017f15488d64245848b8a838620800000000488b5d08ff234d89ee4e8d2c750100000049be30096208000000004f8b64aefc4d8b34244e8d2c75010000004983fd0373054c89e9eb0748c7c10300000049be081a620800000000498d742408498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175184983fd03770949c7c603000000eb0749c7c601000000eb164983fe017f0949c7c603000000eb0749c7c6010000004983fe030f85170100004d89d24d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8f00567080000000048bb4870620800000000ff1534060000ff15260600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24484d8b75184d89ed498b556049c70603000000ff12eb0049bea8946208000000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d89342449be20f16208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be28066708000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204c8b5c24104d89d84d895e184d8966104d896e084c8b6c24184d892e498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c89730848c7031d0000006a016a014c8b5424784c8b7424704c8bac24800000004156ff7424604155488b4424584c8d4c2418ff156d040000415d415e4c892c244c89742408415b415a4c8b24244d8b34244d89e44d8b4c24104d89e4498b7c24204d8b6a084d8b42184d8d57d04c3b55107306ff5550ca807b4d89d749c742f80500000049897a204d8942184d894a104d896a084d893249bea8946208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8975004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d89e44d896610488d6424084d896e084c8b2c244d892e488d6424084156488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc170f85ea0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15c4010000ff15b60100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15ee0000006a016a014c8b7424684c8b6c24604c8b64245841564155415448c7c001000000488d5c24184c8b4424584c8b4c24504c8b542448e83df2ffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24304d8965004d89750848c7c0010000004883c438c218004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084c8b6c243049c74500030000004d89750848c7c0010000004883c438c21800f400000000000000|@8772,1,@19270,@10693,@10697,@10696,@14460,@10999,@10696,@10693,@10697,@10696,@14355,@10693,@10697,@10696|467,0,@850 477,0,@851 652,0,@853 675,0,@856 698,0,@1172 771,0,@14457 821,0,@14458 1348,0,@850 1358,0,@851 1533,0,@853 1556,0,@856 1661,0,@502 1696,0,@126 1740,0,@204 1846,0,@502 1873,0,@126 1918,0,@212 2132,0,@8769 2142,0,@851 2315,0,@1098 2363,0,@1724 2409,0,@8770 2692,0,@1098 3244,0,@850 3254,0,@851 3429,0,@853 3452,0,@856 14457:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19266| 14458:D3,56|483b65187305ff5558cd054883f823750848c7c003000000c34883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f40000|@1001,1,@19267| 14459:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19268| 14460:D9,1376|483b65187306ff5558ca09074989de504150415141524d8b2e4983fd1d750949c7c503000000eb0749c7c5010000004155498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24204c896b0849bd502db909000000004c892b6a016a01488b442450ff7424184d89f04c8b4c24304c8d542408ff151e050000ff34244c8b7424104c8b6c24504d8b6d104c8b6424504d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd0b0f857c0400004c8b7424504d8b76104c8b6c24504d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424404c8b74241041ff76284c8b742418498b56384c8b74241841ff76404c8b74242041ff76504c8b74242841ff76704c8b74243041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74241041ff76284c8b742418498b56384c8b74241841ff76404c8b74242041ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424104d8b66284c8b7424104d8b6e304c8b7424104d8b5e504c8b7424104d8b76704c8b5424104d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1526030000ff15180300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424104d8b76184c8b6c2410498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442450ff154d0200004c8b7424184983fe030f84230100004c8b7424504d8b66284c8b7424504d8b6e304c8b7424504d8b5e504c8b7424504d8b76704c8b5424504d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8380667080000000048bb4870620800000000ff15b2010000ff15a40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424504d8b76184c8b6c2450498b556049c70603000000ff12eb006a016a01488b542458488b442468488b5c24604c8b4424484989e14c8b542430ff12415d415e4c8b5c24304d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c70424210000004c8b6c24204d8965004d89750848c7c0010000004883c438c218004c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c438c21800f40000000000|@8773,1,@19272,@10999,@10696,@10693,@10697,@10696,@14462|87,0,@14461 602,0,@850 612,0,@851 785,0,@853 808,0,@856 950,0,@8771 960,0,@851 14461:D3,32|483b65187305ff5558cd054883f80b750848c7c003000000c3488b5208ff22f4|@1001,1,@19269| 14462:D7,1000|483b65187306ff5558ca090750534150415141524c8b74242041ff76104c8b7424384d8b76104c8b6c24384d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe130f85710300004c8b7424384d8b76104c8b6c24384d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424304c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1515020000ff15070200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442438ff153c010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849bec831b909000000004c89306a016a01488b5c24484c8b4424104989e1ff15ef000000415e415a488d6424084c8b6424084d8b2c244d89e44d8b5c24104d89e44d8b4424204d8b62084d8b52184d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f8050000004d8941204d8951184d8959104d8961084d89294d8d47d84c3b45107306ff5550ca00424d89c749c740f8040000004d8948184c8b6c24104d8968104d89700849c7000b000000488b442420488b5c2418415a488d6424204c8b6c24084c896c2408e944fcffff488d642408415d4c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c410c20800f4|@8774,1,@19273,@14344,@10693,@10697,@10696|491,0,@850 501,0,@851 674,0,@853 697,0,@856 751,0,@14463 14463:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@1001,1,@19271| 14464:D6,928|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849bef035b909000000004d89306a016a01488b542420488b5c2438488b4424104989e14c8b542418ff12ff34244c8b7424404d8b76104c8b6c24404d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe170f85dd0200004c8b7424404d8b76104c8b6c24404d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424384c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1581010000ff15730100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000488b442440ff15a80000004c8b742440415648c7c001000000488b5c24384c8b4424304c8b4c24284c8b542420e8c9fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c430c20800498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c430c20800f4|@8775,1,@19275,@10693,@10697,@10696|54,0,@14465 559,0,@850 569,0,@851 742,0,@853 765,0,@856 14465:D3,40|483b65187305ff5558cd054883f85b7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19274| 14466:D3,768|483b65187305ff5558cd014883f84d750848c7c003000000c34883f841750848c7c003000000c34883f83f750848c7c003000000c34883f843750848c7c003000000c34989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f80d7502eb1c4883f83174164883f879750848c7c003000000c348c7c001000000c348c7c003000000c3f400000000|@1001,1,@19277| 14467:D3,40|483b65187305ff5558cd054883f80b7502eb0c4883f8137406488b5208ff2248c7c003000000c3f4|@1001,1,@19278| 14468:D9,2176|483b65187306ff5558ca090750534150415141524c8b6c24384c8b6424304d8d77c04c3b75107306ff5550ca00304d89f749c746f8070000004c8b5c24204d895e304d8966284d896e204c8b2c244d896e1849bd58086708000000004d896e104c8b6c24084d89e94d896e0849bd9042b909000000004d892e415648b8380a670800000000488b5c242049b8480a670800000000ff15260800004c8b4424104d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe2f7505e99f0300004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904983fe31750949c7c503000000eb0749c7c501000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004983fd037505e9160100004983fe237502eb0e4983fe0d7502eb064983fe317505e9fb0000004983fe417505e9f00000004983fe437505e9e50000004983fe3f7505e9da0000004983fe4d7505e9cf0000004983fe450f84c50000004983fe277505e9b80000004983fe0f7505e9ad0000004981fe810000007505e99f0000004983fe337505e9940000004983fe550f848a000000488d6424104d89c04d8b60284d89c04d8b68304d89c04d8b58504d89c04d8b70704d89c04d8b5078488d6424084d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415d49bc68ab6208000000004d8965004d89750848c7c0010000004883c410c21000eb00498d47e8483b45107306ff5550ca00014989c748c740f8020000004c8b7424204c89700849be6097b909000000004c89306a016a014c8b7424504c8b6c2448ff74241841564155ff742428488d5c24204c8b4c245849ba5808670800000000ff15ed030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc2d0f85510300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff150b020000ff15fd0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15350100006a016a014c8b7424704c8b6c2468ff74243841564155488b442468488d5c24184c8b4424584c8b4c247049ba5808670800000000ff15f3000000415d415b4c8b34244d8b264d89f64d8b4e104d89f6498b7e20488d6424084d8b53084d8b43184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8956084d89264d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d897424184d896c24104c8b2c244d896c2408488d64240849c704241b0000004c8b6c24284d8965004d89750848c7c0010000004883c440c210004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c440c21000f400|@8794,1,@19306,@14496,@10693,@10697,@10696,@14494,@14336|84,0,@8780 110,0,@14469 125,0,@8792 140,0,@8793 1094,0,@1268 1164,0,@14493 1213,0,@8780 1677,0,@850 1687,0,@851 1862,0,@853 1885,0,@856 1943,0,@8780 14469:D62,14360|488dbc2450ffffff483b7d187305ff5560cd0d5250534c8b7424104d8b66084d89e54d8b6424104d89f64d89eb4d8b6d484d8b24244d8b6d004983fd5374054d89eceb004d89f64d89dd41ff73304d89f64d89eb4d8b55504d89f64d89dd4d8b5b7841ff3241ff334983fc450f85fb0300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15de370000ff15d03700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15f93600004c8b7424284d8b66304d89e541ff7424084d89ee41ff76106a016a016a0148c7c0010000004889e3ff15c3360000488d642408415d415e4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b7424084d8974240849bea87cb909000000004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b1c244d895e10488d6424104d8966084d892e4156498d47e8483b45107303ff55504989c748c740f8020000004c8b7424284c89700849be107db909000000004c89304c8b7424304d8b46084d89f64d8b4e184d89f64d8b56204d89f64d8b76284156488b5c2408ff15ef3500004989c641564c8b742438498b5e0848c7c035000000ff15cc3500004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849bd587db909000000004d892e41564c8b7424404d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e99a3000004983fc410f85630600004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15a9330000ff159b3300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15c43200004c8b7424284d8b6e084d89ec4d8b5d284d89f64d89e54d8b64247041ff3341ff34244d89f64d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5d0f85140300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424384d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15ba300000ff15ac3000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15d52f00004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004d89ee4c89700849bea87db909000000004c89306a016a016a014889e3ff15fb2e0000ff7424084c8b7424484d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9732700004983fc430f85f50c00004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15042d0000ff15f62c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff151f2c00004c8b6c24284d8b75084d89f44d8b5e284d89ed4d89e64d8b64247041ff3341ff34244d89ed4d89f44d8b76104d89ed4d89e14d8b6424484d8b364d8b24244983fc5374054d89e6eb004983fe5f0f850f0300004d89ed4d89cb4d8b71104d89ed4d89dc4d8b5b484d8b134983fa53740c49c70353000000e9570200004d8b1e4983fb010f852c020000488d6424384d89e641ff7424284d89f4498b56384d89e641ff7424404d89f441ff76504d89e641ff74247041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15182a0000ff150a2a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf0706208000000004d89ed498b4508ff15342900004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d5fe8483b5d107306ff5550ca00224989df48c743f8020000004c8b7424204c89730849be8880b909000000004c89336a016a014d89ed498b55104d89ed498b45304d89ed4d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d28415641554c8d442410ff12ff34244c8b7424404d8b6e084d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc610f85e60200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424504d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1545260000ff15372600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15602500004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24484d896e0849bde080b909000000004d892e41564c8b7424584d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9821b00004983fc170f85e60200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424504d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff153d230000ff152f2300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15582200004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24484d896e0849bd3081b909000000004d892e41564c8b7424584d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9021600004d89ec4d8b6d284d89e64d8b76704d8b6d004d8b264d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424304d8966104d896e084c8b6c24384d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b6424104d89650849c745002d0000004c892c244c89742408e92e1500004983fc3f0f851c0300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15a51f0000ff15971f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15c01e00004c8b7424284d8b6e084d89eb4d8b6d104d89dc4d8b5b484d8b6d004d8b1b4983fb5374054d89ddeb004983fd5b745c4d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b5c24204d895d0849bb8081b909000000004d895d0041554d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e97a10000049c7c601000000e9710f00004983fc4d750949c7c403000000eb0749c7c40100000041544c8b24244983fc030f85870200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff154b1c0000ff153d1c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15661b0000eb004c8b7424304d8b6e084d89ec4d8b6d104d89f64d89e34d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004d89f64d89dc4d8b43284d89f64d89e24d8b5c24304d89f64d89d44d8b52504d89f64d89e14d8b6424704d89f64c89cb4d8b49784d8b1241ff304d8b0941ff34244d8d67d04c3b65107306ff5550ca086e4d89e749c74424f8050000004d894c24204c8b0c244d894c24184d895424104c8b5424084d895424084d891c2441544d89ec4c8d1d080000004f8d5ca3fc41ffe3e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9cc030000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9d4030000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e90f090000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e927090000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e95f090000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9670900009090904983fd237507488d642418eb1c4983fd0d7507488d642418eb0f4983fd310f8594010000488d6424184d89f54d8b65304d89e6498b04244d89f44d8b76084d8b4424106a016a014989d9ff352c180000ff7424185448830424104c89f34c8b542450ff150c180000415c415e488d64240849bda8946208000000004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20f16208000000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bdc8086708000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8975184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704241d0000004d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642408415d488d6424104d8965004d89750848c7c001000000c348c7c031000000ff15a71600004c8b6c243849be68ab6208000000004d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d64240848b8d808670800000000ff155e1600004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d6424204d89f64989db4c8b6b104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1536140000ff15281400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87870620800000000488b5d08ff2349c745005300000048baf0706208000000004d89f6498b4608ff15511300006a016a014c8b742438498b5e08488b4424304989e0ff152e130000ff34244c8b7424104d8b6e084d8b66184d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24184d895e204d8966184c8b6424204d8966104d896e084c8b6c24284d892e415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156488b442410ff15631200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b0424ff15ff1100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060700000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c7030d0000004d8975004d8d6fe04c3b6d107306ff5550ca00084d89ef49c745f8030000004c8b34244d897510488d6424084d895d0849c74500050000004d8d67d04c3b65107306ff5550ca00284d89e749c74424f8050000004c8b14244d89d64d895424204d895c24184d896c24104c8b6c24084d896c240849c70424310000004c8b6c24384d8965004d89f64d897508488d64245048c7c001000000c3488d64240848b8e808670800000000ff15331000004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b8f808670800000000ff15ab0f00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b80809670800000000ff15230f00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b81809670800000000ff159b0e00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c341564c8b7424304d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05b000000ff15b90d000049bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b1c244d89de4d895c24184c8b5c24084d895c24104d896c240849c70424230000004c8b6c24284d8965004d89f64d897508488d64243048c7c0010000004883c410c36a016a014c8b6c2470498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424800000004d8b460848c7c01700000048bbc8f2660800000000ff15b90c00004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e943ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c428e969fdffffff3424ff7424104c8b742460498b5e0848c7c05f000000ff15640b00004c8b6c24504c8b7424084d8975004c8b34244d897508488d64242048c7c0010000004883c448c36a016a014c8bac2498000000498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424a80000004d8b460848c7c01700000048bbc8f2660800000000ff15c80a00004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b7424604d8934244c8bb424a00000004d8b6e084d89eb4d8b6d284d89de4d8b76704d8b6d004d8b1e4d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424784d8956204d895e184c8b9c24800000004d895e104d896e084c8bac24880000004d892e49bda8946208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d8975184d895d104d89650849c74500330000004c896c24504c897424584883c450e92cfdffff6a016a014c8bac2498000000498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424a80000004d8b460848c7c06100000048bbc8f2660800000000ff15300800004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b742420498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c89304c8bb424a00000004d8b6e084d89ec4d8b6d284d89e64d8b76704d8b6d004d8b264d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24784d895e204d8966184c8ba424800000004d8966104d896e084c8bac24880000004d892e4156ff156f0600004989c44d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b1c244d89de4d895d104d89650849c74500150000004c896c24584d89f64c89742460488d642458e9bafaffff6a016a014c8b9424880000004d8b4a084d89d24d8b72104d89d24d8b6a184d89d24d8b62204d89d24d8b5a284d89d24d8b52304156415541544153415248c7c001000000488d5c24284c8b8424a80000004c8b542468ff15bf050000ff3424ff7424104c8bb424980000004d8b460848c7c01700000048bbc8f2660800000000ff158d0500004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e927ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b5c24204c8bb424900000004d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b55004d8d6fd04c3b6d107306ff5550ca081c4d89ef49c745f8050000004c8b4c24684d894d204d8955184c8b5424704d8955104d8965084c8b6424784d896500415549bda8946208000000004d8d67f04c3b65107306ff5550ca08284d89e749c74424f80100000041c64424ff404d892c244d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b14244d8955204d895d184d89651049c745080300000049c745001f000000415548c7c05d000000ff15820300004c8bac24900000004c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004881c498000000c36a016a014c8bac2480000000498b55104d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b442460488b5c24504c8d442410ff12ff3424ff7424104c8bb424900000004d8b460848c7c06100000048bbc8f2660800000000ff15de0200004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e942ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c89742428ff7424204c8bb424900000004d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424684d8955204d895d184c8b5c24704d895d104d8965084c8b6424784d896500415548c7c01f000000ff15410100004c8bb424980000004d8b4e08488b84249000000048bbc8f266080000000049b82809670800000000ff150b010000488b442460ff15f80000004989c64156488b442410ff15e00000004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8975204c8b5c24084d89de4d895d1849c74510010000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424270000004c8bac24880000004d8965004d89f64d897508488d64241048c7c0010000004881c490000000c3f4000000000000|@8789,1,@19295,@14486,@14487,@14336,@14323,@14324,@14323,@14324,@14488,@14491,@14324,@14324,@14323,@14324,@14323,@14453,@14453,@14453,@14453,@11077,@10828,@14355,@10693,@10697,@10696,@14453,@14325,@14452,@8715,@10693,@10697,@10696,@10693,@10697,@10696,@10693,@10697,@10696,@10693,@10697,@10696,@10693,@10697,@10696,@10693,@10697,@10696,@10988,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14484,@10906,@10693,@10697,@10696|522,0,@850 532,0,@851 714,0,@853 738,0,@856 859,0,@14470 955,0,@14471 1071,0,@14472 1551,0,@850 1561,0,@851 1743,0,@853 1767,0,@856 2278,0,@850 2288,0,@851 2470,0,@853 2494,0,@856 2699,0,@14473 3196,0,@850 3206,0,@851 3388,0,@853 3412,0,@856 3920,0,@850 3930,0,@851 4112,0,@853 4135,0,@856 4342,0,@14474 4875,0,@850 4885,0,@851 5067,0,@853 5091,0,@856 5147,0,@14475 5627,0,@850 5637,0,@851 5819,0,@853 5843,0,@856 5899,0,@14476 6523,0,@850 6533,0,@851 6715,0,@853 6739,0,@856 6845,0,@14477 7357,0,@850 7367,0,@851 7549,0,@853 7573,0,@856 8447,0,@1098 8492,0,@1724 8537,0,@8782 8792,0,@1268 8836,0,@8783 9370,0,@850 9380,0,@851 9562,0,@853 9586,0,@856 9715,0,@1098 10098,0,@1098 10359,0,@8784 10487,0,@8785 10615,0,@8786 10743,0,@8787 10977,0,@1098 11209,0,@8673 11690,0,@8673 12142,0,@1098 12346,0,@8673 12997,0,@8673 13406,0,@1098 13668,0,@8673 14109,0,@8673 14119,0,@8788 14470:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19280| 14471:D3,32|483b65187305ff5558cd054883f835750848c7c003000000c3488b5208ff22f4|@1001,1,@19281| 14472:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8617406488b5208ff2248c7c003000000c3f4|@1001,1,@19282| 14473:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80f3660800000000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80f366080000000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898f3660800000000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98f366080000000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@8781,1,@19283,@10999,@10696|36,0,@8678 174,0,@8678 243,0,@8679 399,0,@8679 436,0,@851 623,0,@117 644,0,@117 14474:D3,48|483b65187305ff5558cd054883f8177502eb0e4883f8617502eb064883f85f750848c7c003000000c3488b5208ff22f4|@1001,1,@19284| 14475:D3,40|483b65187305ff5558cd054883f8617502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19285| 14476:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19286| 14477:D3,40|483b65187305ff5558cd054883f85b7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19287| 14478:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19288| 14479:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bce0016708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19289|16,0,@1098 88,0,@8747 14480:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc8026708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19290|16,0,@1098 88,0,@8753 14481:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc0036708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19291|16,0,@1098 88,0,@8758 14482:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc28046708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19292|16,0,@1098 88,0,@8761 14483:D3,128|483b65187305ff5558cd094989c549bca8946208000000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc78046708000000004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@8751,1,@19293|16,0,@1098 88,0,@8763 14484:D6,1632|483b65187306ff5558ca09075053415041514152488b5c24104c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc610f85910200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15a1040000ff15930400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15cb030000488b442420488b5c24184c8b4424104c8b4c2408415a488d6424204c8b6c24084c896c2408e929fdffff4889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f85b0000000498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424204c89700849bef88bb909000000004c89306a016a01488b5424184c8b742440ff742410415649c7c0030000004c8b4c24384c8d542410ff12ff34244c8b7424484156488b442440488b5c24384c8b4424304c8b4c24284c8b542420e8e6f9ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642440c20800488d64242848c7c001000000c20800f40000000000|@8791,1,@19302,@10693,@10697,@10696|463,0,@850 473,0,@851 648,0,@853 671,0,@856 1472,0,@14485 14485:D3,720|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb0c4883f8617406488b5208ff2248c7c003000000c3f4000000000000|@1001,1,@19294| 14486:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@19296| 14487:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@19297| 14488:D5,464|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c89700849be9892b909000000004c89306a016a01488b5c24184989e0ff159d010000ff3424ff742410488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1248c7c023000000488b5c2428ff154b010000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849bee092b909000000004c89336a016a01488b542478488b4424584c8b5424704c8b7424684c8b6c2460415641554c8d4424104c8b4c2448ff12415a415e4c8b1c244d8b2b4d89db4d8b4b104d89db498b7b204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bca8946208000000004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d89db4d895c2410488d6424084d896c24084c8b2c244d892c24488d642430415d4d8965004d89750848c7c001000000c22800f400|@8790,1,@19300,@14323,@14355|54,0,@14489 192,0,@14490 329,0,@1098 14489:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19298| 14490:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@1001,1,@19299| 14491:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@19301| 14492:D3,824|483b65187305ff5558cd014883f82f7505e9180300004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037505e98f0000004883f8237502eb0e4883f80d7502eb064883f8317502eb774883f8417502eb6f4883f8437502eb674883f83f7502eb5f4883f84d7502eb574883f84574514883f827750848c7c003000000c34883f80f750848c7c003000000c34881f881000000750848c7c003000000c34883f833750848c7c003000000c34883f855750848c7c003000000c348c7c001000000c348c7c003000000c3f400|@1001,1,@19303| 14493:D3,32|483b65187305ff5558cd054883f82d750848c7c003000000c3488b5208ff22f4|@1001,1,@19304| 14494:D7,1072|483b65187306ff5558ca09075053415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849be209cb909000000004c89306a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424404c8b4c24384c8b542430ff15e4030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc510f85500300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1502020000ff15f40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff152c0100006a016a014c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b442470488d5c24204c8b4424604c8b4c24584c8b542450e8a6fcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c704242b0000004c8b6c24284d8965004d89750848c7c0010000004883c438c220004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c438c22000f400|@8797,1,@19311,@10693,@10697,@10696,@14499|55,0,@14495 574,0,@850 584,0,@851 759,0,@853 782,0,@856 14495:D3,32|483b65187305ff5558cd054883f851750848c7c003000000c3488b5208ff22f4|@1001,1,@19305| 14496:D16,2872|483b65187306ff5558ca0907505341504151415248b8e807670800000000488b5c242049b850ac6608000000004c8b4c2410ff15780b00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424204d89700849be30a8b909000000004d89306a016a01488b442418488b5c24204989e14c8b542420ff15260b0000ff3424ff742410488b5c24304c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc710f856c0200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1544090000ff15360900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff156e080000e9ab02000048b8207e620800000000ff1551080000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1576060000ff15680600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15a0050000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424404c89730849be78a8b909000000004c89336a016a01488b5424304c8b5424704c8b7424684c8b6c246041564155488b4424484c8d4424104c8b4c2450ff12415c415e4c8b2c244d89eb41ff75004d89db4d89dd41ff73104d89ed41ff75204d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d8956204d895e184c8b5c24084d895e104d896e084c8b6c24104d892e49bdb84b6208000000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b49bdb84b6208000000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f8060000004d894d284d8975204d8955184d895d104c8b5c24204d895d084d8965004155488b4424504c8b58104d89dc4889c04c8b50484d89d54d8b1b4d8b124983fa5374054d89d3eb006a016a014983fb7d0f852f0300004889c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424604889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1540020000ff15320200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff156a0100006a016a014c8bb424a00000004c8bac24980000004c8ba42490000000415641554154488b842498000000488d5c24184c8b8424880000004c8b8c24800000004c8b542478e8c9f5ffff415c415e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b6424104d8965004d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424184d8956204d895e184c8b5c24204d895e104d8966084c8b6424284d89264c892c244c89742408eb354d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424104d8965004c892c244c89742408488b44247048bbc8f266080000000049b8a80a6708000000004c8b4c2460ff15440000004c8b6c24684c8b34244d897500488d642408415e4d89750848c7c0010000004883c468c21800f40000000000|@8796,1,@19309,@14336,@10693,@10697,@10696,@10693,@10697,@10696,@14327,@10693,@10697,@10696,@14442,@14336|22,0,@8777 37,0,@8273 91,0,@14497 580,0,@850 590,0,@851 765,0,@853 788,0,@856 809,0,@924 1266,0,@850 1276,0,@851 1451,0,@853 1474,0,@856 1525,0,@14498 1683,0,@578 1728,0,@578 2320,0,@850 2330,0,@851 2505,0,@853 2528,0,@856 2799,0,@8673 2809,0,@8795 14497:D3,32|483b65187305ff5558cd054883f871750848c7c003000000c3488b5208ff22f4|@1001,1,@19307| 14498:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@1001,1,@19308| 14499:D7,1072|483b65187306ff5558ca09075053415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849be38adb909000000004c89306a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424404c8b4c24384c8b542430ff15e4030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc070f85500300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1502020000ff15f40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff152c0100006a016a014c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b442470488d5c24204c8b4424604c8b4c24584c8b542450e8a6fcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c70424030000004c8b6c24284d8965004d89750848c7c0010000004883c438c220004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c438c22000f400|@8799,1,@19321,@10693,@10697,@10696,@14501|55,0,@14500 574,0,@850 584,0,@851 759,0,@853 782,0,@856 14500:D3,32|483b65187305ff5558cd054883f807750848c7c003000000c3488b5208ff22f4|@1001,1,@19310| 14501:D30,6976|483b65187306ff5558ca090750534150415141524c8b6424104d8b5c24104d89de4d89e44d8b6c24484d89ea4d8b0b4d8b6d004983fd5374054d89e9eb004d89e44d89e541ff7424304d89ed498b7d504989fb4d89ed4d8b45784d89c4ff3741ff304c8d05080000004f8d4488fc41ffe0e91b020000909090e91a020000909090e919020000909090e918020000909090e917020000909090e916020000909090e915020000909090e917020000909090e936060000909090e935060000909090e934060000909090e933060000909090e932060000909090e931060000909090e930060000909090e92f060000909090e92e060000909090e92d060000909090e92c060000909090e92e060000909090e9b1090000909090e9b0090000909090e9af090000909090e9ae090000909090e9ad090000909090e9af090000909090e94a0e0000909090e9490e0000909090e9480e0000909090e9470e0000909090e9460e0000909090e9450e0000909090e9440e0000909090e9430e0000909090e9420e0000909090e9410e0000909090e9400e0000909090e93f0e0000909090e93e0e0000909090e93d0e0000909090e93c0e0000909090e93b0e0000909090e93d0e0000909090e95e110000909090e95d110000909090e95c110000909090e95b110000909090e95a110000909090e959110000909090e958110000909090e957110000909090e956110000909090e955110000909090e954110000909090e953110000909090e952110000909090e951110000909090e950110000909090e94f110000909090e94e110000909090e94d110000909090e94c110000909090e94b110000909090e94a110000909090e94c110000909090e9dc170000909090e9db170000909090e9da170000909090488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e92c0400004c89e84889c04d89d54d8b55004983fa53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15c9170000ff15bb1700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15f3160000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849bec0c9b909000000004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff342448c7c04b000000488b5c2440ff157b160000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849bed0ccb909000000004c89306a016a014c8bb424880000004c8bac24800000004c8b642478415641554154488d5c24184c8b4424684c8b4c24604c8b542458ff150c160000415c415a4d8b6a084d8b5a184d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004c8b4c24184d894e204d895e184c8b5c24204d895e104d896e084c8b6c24284d892e49bda8946208000000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d8975184d895d104d8965084c8b24244d896500488d6424484d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042407000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e9900300004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff152f130000ff15211300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1559120000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849be18cdb909000000004c89306a016a014c8b7424704c8b6c24684c8b642460415641554154488d5c24184c8b4424504c8b4c24484c8b542440ff15f0110000415b415e4d8b6e084d8b66184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d8966184c8b24244d896610488d6424084d896e084c8b2c244d892e488d64242049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d897424184d895c24104d896c240849c7042417000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e9a80400004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff155e0f0000ff15500f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15880e0000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be60cdb909000000004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff342448c7c06f000000488b5c2440ff15100e0000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424504c89730849bea8d0b909000000004c89336a016a01488b5424404c8b9424880000004c8bb424800000004c8b6c247841564155488b4424584c8d4424104c8b4c2460ff12ff342448c7c01d000000488b5c2458ff15920d00006a016a01488b5424584c8b9424a00000004c8bb424980000004c8bac249000000041564155488b442470488b9c24880000004c8d4424104c8b4c2478ff12415c415e4d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d896e084c8b6c24404d892e49c7c5010000004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca005c4d89ef49c745f8060000004d8955284d895d204d8975184c8b1c244d895d10488d6424184d8965084c8b24244d896500488d6424484d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042409000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e92e0300004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15200a0000ff15120a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff154a0900006a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b442440488b5c24584c8d4424104c8b4c2448ff12415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424204d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c704242f000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e99d0600004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1549060000ff153b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1573050000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849bef0d3b909000000004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff3424ff742410488b5c24484c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc1b0f8573030000488d6424084889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424404889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1531030000ff15230300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff155b0200006a016a01488b5424404c8b9424880000004c8bb424800000004c8b6c247841564155488b442458488b5c24704c8d4424104c8b4c2460ff12415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424184d8956204d895e184c8b5c24204d895e104d8966084c8b6424284d892649c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d897424184c8b1c244d895c2410488d6424084d896c240849c704243b0000004c8b6c24404d8965004d89750848c7c0010000004883c450c2200048c7c01b000000ff153f0100004c8b6c24504c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c450c22000488d642420eb05488d642420eb05488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d89660849bc38d4b909000000004d89264c8b2424498b04244d89e4498b5c24084d89e44d8b4424106a016a014c8b4c2438ff35a30000004156544883042410415549ba580b670800000000ff158100000041584159498d5fe8483b5d107306ff5550ca00034989df48c743f8020000004c8b7424184c89730849bec8d7b909000000004c8933584c8b542408415d488d6424104c896c24204c8b34244c897424184883c418ff251f000000f4000000000000|@8800,1,@19322,@14462,@14511,@8715,@14325,@10693,@10697,@10696,@10693,@10697,@10696,@10693,@10697,@10696,@14323,@14323,@10693,@10697,@10696,@14496,@10693,@10697,@10696,@14496,@14323,@10693,@10697,@10696|1095,0,@850 1105,0,@851 1280,0,@853 1303,0,@856 1352,0,@14502 1464,0,@14503 1607,0,@1098 2233,0,@850 2243,0,@851 2418,0,@853 2441,0,@856 2490,0,@14504 2639,0,@1098 3178,0,@850 3188,0,@851 3363,0,@853 3386,0,@856 3435,0,@14505 3547,0,@14506 4480,0,@850 4490,0,@851 4665,0,@853 4688,0,@856 5439,0,@850 5449,0,@851 5624,0,@853 5647,0,@856 5696,0,@14507 6207,0,@850 6217,0,@851 6392,0,@853 6415,0,@856 6803,0,@14508 6865,0,@8798 6921,0,@14510 14502:D3,744|483b65187305ff5558cd054883f84d7505e9c90200004883f8417505e9be0200004883f83f7505e9b30200004883f8437505e9a80200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb224883f80d7502eb1a4883f83174144883f8797502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@1001,1,@19312| 14503:D3,32|483b65187305ff5558cd054883f861750848c7c003000000c3488b5208ff22f4|@1001,1,@19313| 14504:D3,32|483b65187305ff5558cd054883f861750848c7c003000000c3488b5208ff22f4|@1001,1,@19314| 14505:D3,800|483b65187305ff5558cd054883f82f7505e9fb0200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb754883f8237502eb0e4883f80d7502eb064883f8317502eb5d4883f8417502eb554883f8437502eb4d4883f83f7502eb454883f84d7502eb3d4883f84574374883f8277502eb2d4883f80f7502eb254881f8810000007502eb1a4883f8337502eb124883f855740c4883f86f7408488b5208ff22eb0048c7c003000000c3f4000000000000|@1001,1,@19315| 14506:D3,800|483b65187305ff5558cd054883f82f7505e9fb0200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb754883f8237502eb0e4883f80d7502eb064883f8317502eb5d4883f8417502eb554883f8437502eb4d4883f83f7502eb454883f84d7502eb3d4883f84574374883f8277502eb2d4883f80f7502eb254881f8810000007502eb1a4883f8337502eb124883f855740c4883f81d7408488b5208ff22eb0048c7c003000000c3f4000000000000|@1001,1,@19316| 14507:D3,32|483b65187305ff5558cd054883f81b750848c7c003000000c3488b5208ff22f4|@1001,1,@19317| 14508:D3,40|483b65187305ff5558cd054883f8137502eb0c4883f8077406488b5208ff2248c7c003000000c3f4|@1001,1,@19318| 14509:D3,792|483b65187305ff5558cd014883f82f750848c7c003000000c34989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f8237502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f841750848c7c003000000c34883f843750848c7c003000000c34883f83f750848c7c003000000c34883f84d750848c7c003000000c34883f845750848c7c003000000c348c7c001000000c3f4000000000000|@1001,1,@19319| 14510:D3,32|483b65187305ff5558cd054883f807750848c7c003000000c3488b5208ff22f4|@1001,1,@19320| 14511:D5,240|483b65187306ff5558ca090753415141526a016a016a016a014c8b4424584c8b4c24504c8b742440ff7424284156ff74244048c7c001000000488d5c24184c8b542438ff15c700000041594158415e415d4983fd017d23488d6424184c8b6c24104d8b304d8975004d8b70084d89750848c7c001000000c220004c8b6424384c8b5c24304c8b5424204156415541544153ff742420ff7424304152ff7424484d89c248c7c0ffffffff48c7c30100000049b8a0f4660800000000ff15480000004989c6488d6424184c8b6c24104d8b76084d8b264d8965004d8b76084d89750848c7c001000000c22000f40000000000|@8803,1,@19325,@14515,@14512|178,0,@8684 14512:D5,640|483b65187306ff5558ca0907534150415141524d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424104d8975104c8b6424084d89e64d89650849bcf0dbb909000000004d8965004155498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24084c8968104d89f64c89700849be60dcb909000000004c89306a016a01488b5424504889e3ff12585b6a016a014c8b5424484c8b7424404c8b6c2450ff742418ff742430415641554c8b4424304c8d4c2420ff15d9010000415d415c488d6424104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424304d8b6e104c8b7424304d8b7648498b45004d8b364983fe5374054c89f0eb006a016a016a01488b542428ff124989c64983fe0375776a016a014c8b442458488b442438488b5c24304989e1ff154e010000ff3424ff742410488b542460488b442408ff124989c64983fe017515488d64245848b808d5620800000000488b5d08ff234d8b364d8b76084c8b6c24084c896c24204c8b2c244c896c2428488d6424104c897424204883c410eb2349be000c6708000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410415d415a415e6a016a014d8b1e4d89dc4983fb05751c49be200c6708000000004d8b264c8924244d8b76084c89742408eb2a4983fc0375134d8b76084c89342448c744240803000000eb114d8b76084c89342448c744240801000000415e415b4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d892c244c8b6c24184d895d004c8b1c244d895d08488d6424084d8965104d89751848c7c0010000004883c418c21800f4000000000000|@8816,1,@19330,@14354,@14518|66,0,@14513 125,0,@14514 365,0,@1556 423,0,@8801 480,0,@8802 14513:D3,72|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe03750d488d64241048c7c003000000c34c8b742408498b560858488d642408ff22f400000000|@1001,1,@19323| 14514:D3,96|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe037507488d642410eb254c8b34244c89f04983fe4d74134c8b742408498b56084889c0488d642410ff22488d64241048c7c003000000c3f4000000000000|@1001,1,@19324| 14515:D6,1480|483b65187306ff5558ca090750534150415141526a016a016a016a014c8b4424784c8b4c24704c8b5424684c8b7424604c8b6c24584c8b64245041564155415448c7c001000000488d5c2418ff159e050000ff3424ff742410ff742420ff7424304d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b2c244d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e41564c8bb424b00000004c8bac24a8000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c8970084c8b7424504c89304c8b842480000000488b1c24ff15fe0400004c8ba424a80000004c8b6c24084d89ee4d3bec7e07488d642408eb264c8b6c24504983fd030f85860000004c8bac24a80000004d89f64d3bf57402eb74488d642408488b8424a00000004c8b8424a80000004c8bb424980000004c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c2470ff742408ff742408415641554154415341524151488b9c24880000004c8b4c24584c8b542450e86ffeffff4989c6488d642440eb06415e4883c44041564c8b7424704d8b2e4c8b7424704d8b560849bea8946208000000004d8d5ff04c3b5d107306ff5550ca00644d89df49c743f80100000041c643ff404d893349be20f16208000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89342449be780c6708000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89314d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b5424084d8b42084c8b34244d8b5e084d89dd4d8b5b084d8b08498b7810498b50204d8b4308498b73184d8d5fd04c3b5d107306ff5550cac4774d89df49c743f805000000498953204989731849897b104d8943084d890b4d89d24d8b124d89f64d8b6d004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89294d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d084d89550049baa8946208000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89114d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a184d894a104d896a0849c7023300000049bda8946208000000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d2049c74518030000004d894d104d8955084d8965004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89650041554d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64c89f341ff364d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24084d896e184c8b6c24104d896e104c8b6c24184d896e084c8b2c244d892e4156498d47e0483b45107305ff5550cd084989c748c740f8030000004c8b7424504c8970104c8b7424404c8970084c8b7424484c89304c8b442468ff15f90000004c8b7424284d8b66184d89e54c3b6424507e07488d642408eb2b4d89ee4c3b74245075074c8b742448eb0749c7c6010000004983fe037408584883c450c24000488d642408ff742448488b5c2448488b542440488b4c2408488b4424204c8b6c24184c8b6424104c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488974246048897c24684c894424704989d04c894c24784989c94c899424800000004989c2488b04244c899c24880000004c89a424900000004c89ac24980000004883c458e944faffff488d642428f4000000000000|@8814,1,@19327,@14517,@14517,@14512|438,0,@1098 483,0,@1724 531,0,@8804 838,0,@1098 929,0,@1098 14516:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@8732,1,@19326| 14517:D6,944|483b65187306ff5558ca090141504c8b70104c8b6b184d3bf50f85820300004c8b284d89ea4c8b234d89e64d3bec750949c7c503000000eb0749c7c5010000004983f5024983fd030f854c0300004c8b04244d8b58284d89c04d8b60304d89c04d8b48504d89c04d8b68704d89c04d8b40784d8b094d8b1b498b384d8b45004d8d6fd04c3b6d107306ff5550ca895f4d89ef49c745f80500000049897d204d8945184d894d104d895d084d89650041554c8b68084d89eb4d8b6d004c8b63104d89e14d8b24244d8b1b4983fa03750c49ba880c670800000000eb0a49baa00c6708000000004d8b094983fe03750c49b8880c670800000000eb0a49b8a00c6708000000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f80200000048bfb80c67080000000049897e084d89064d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89700849bef00c6708000000004d89304d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89710849be080d6708000000004d89314d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89720849bef00c6708000000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be300d6708000000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be600d6708000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be780d6708000000004c8930ff15ed00000048bb4870620800000000ff15d5000000ff15c70000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d642408eb05488d64240848c7c001000000c3f400|@8815,1,@19328,@10999,@10696,@10502|209,0,@8805 221,0,@8806 240,0,@8805 252,0,@8806 289,0,@8807 337,0,@8809 415,0,@8810 493,0,@8809 571,0,@8811 651,0,@8812 730,0,@8813 749,0,@851 14518:D3,664|483b65187306ff5558ca090750534150415141524c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542448ff124989c64983fe030f85230200004c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542440ff124989c64983fe030f8586000000488b5424384c8b34244d8b7608498b06ff124989c641f6c60175374d8b364d8b76084d8b264d89e54983fc03750949c7c603000000eb194d89ee4983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037527488d642408415d4c8b7424104d8975004c8b7424084d89750848c7c0010000004883c418c220004c8b742448498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424104c89700849bee0e9b909000000004c89306a016a01488b5424404889e3ff12415d415a4c8b6424184d8b34244d89e44d8b5c24104d89e44d8b4c24204d8b62084d8b5218498d5fd0483b5d107306ff5550ca007e4989df48c743f8050000004c894b204c8953184c895b104c8963084c893349bea8946208000000004d8d67f04c3b65107306ff5550ca08604d89e749c74424f80100000041c64424ff404d8934244d8d77d04c3b75107306ff5550ca08304d89f749c746f80500000049895e2049c74618010000004d8966104d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700848c700050000004c8b4424104c8b4c24085f488d6424204c8b6c24204c8b6424184c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e994fdffff488d642408415d4c8b7424104d8975004c8b7424084d89750848c7c0010000004883c418c22000f400000000|@8817,1,@19331|307,0,@14519 417,0,@1098 14519:D3,72|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe03750d488d64241048c7c003000000c34c8b742408498b560858488d642408ff22f400000000|@1001,1,@19329| 14520:D15,2864|483b65187306ff5558ca09015341504c8b304d89f54983fe05754d6a016a016a016a014889e34c8b442428ff156f0b0000415e415d415c415a4d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e95c0a00004d89ee4983fd2d0f85710200004c8b70084d8b364983fe05754d6a016a016a016a014889e34c8b442428ff15000b0000415e415d415c415a4d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e9120200004c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d80e67080000000048bb4870620800000000ff15450a0000ff15370a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8086208000000004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9de0700004983fe0b0f8550050000ff7008488b40104c8b284d89ee4983fd2d0f85a00200004c8b70084d8b364983fe0575776a016a016a016a014889e34c8b442430ff1556080000415e415d415c488d6424084d8d57f04c3b55107306ff5550ca00704d89d749c742f8010000004c8b1c244d891a488d6424084d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e917020000488d6424084c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d80e67080000000048bb4870620800000000ff156c070000ff155e0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8086208000000004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9940200004983fe0575776a016a016a016a014889e34c8b442430ff15a5050000415e415d415c488d6424084d8d57f04c3b55107306ff5550ca00704d89d749c742f8010000004c8b1c244d891a488d6424084d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e917020000488d6424084c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d80e67080000000048bb4870620800000000ff15bb040000ff15ad0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8086208000000004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9840200004c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d80e67080000000048bb4870620800000000ff1594020000ff15860200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bda8946208000000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849bed8086208000000004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d896e0849c706010000004d8d5fd84c3b5d107306ff5550ca00404d89df49c743f8040000004d8b6e184d896b184d8b6e104d896b104d8b6e084d896b084d8b364d89334d8b334d8b6b084d8b63104d8b53184d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d89334d8b2b4d8b73084d8b2649c7c60100000041f6c50175364d8b4d084d89f24983c2027115488d64241048b8d006620800000000488b5d08ff234d89cd4d89d6483b65187306ff5558ca0078ebc4415d4d895d004d8965084d89751048c7c0010000004883c408c3f400000000|@8821,1,@19332,@10999,@10696,@10999,@10696,@14521,@10999,@10696,@14521,@10999,@10696,@14521,@14521|307,0,@8818 317,0,@851 591,0,@1098 672,0,@123 1012,0,@8818 1022,0,@851 1296,0,@1098 1377,0,@123 1677,0,@8818 1687,0,@851 1961,0,@1098 2042,0,@123 2212,0,@8818 2222,0,@851 2496,0,@1098 2576,0,@123 2799,0,@105 14521:D12,2112|483b65187306ff5558ca09015341504c8b304d89f54983fe2d0f854b0200004c8b7008ff70104d8b2e4983fd050f85fb0000004d8b66084d89e54d8b1c244d8b1b4983fb1d751d4d8b6424184983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85b9000000488d6424104d89ee4d8b2e4d8b6d084d8b65004d8b55184d8b760849bda8946208000000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d893424415e4d89264d896e0849c746100300000049c746180100000048c7c001000000c348b8380f67080000000048bb4870620800000000ff1550070000ff15420700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c8968184c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff1249bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424104d89750849bed8086208000000004d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c34d89ee4983fd1d0f858d000000488d6424084c8b68084d8b75004d8b5d1849bda8946208000000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c34983fe050f85270300004c8b700841ff3641ff76084d8b76184983fe030f85380100004c8b2c244d8b65004983fc330f85240100004d89ed4d8b5d0841f6c30175454d8b234d8b5b0841f6c301752f4d8b5b084983fb01751c4d8b24244983fc05750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f85c10000004d89ee41ff761848b8900f67080000000048bb4870620800000000ff15cb040000ff15bd0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff12e942010000eb004983fe030f85360100004c8b34244d8b2e4983fd330f85230100004d89f64d8b6e0841f6c50175474d8b650841f6c40175344d8b2c244d8b6424084983fc01751c4d8b6d004983fd05750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd030f85be0000004d89f641ff761848b8900f67080000000048bb4870620800000000ff1578030000ff156a0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff12eb02eb006a016a016a016a01488b4424284889e34c8b442430e847faffff488b0424ff742408ff742418498d5fe8483b5d107305ff5550cd014989df48c743f80200000048c74308010000004c8b7424304c89334883fb0175054989c5eb09ff15680200004989c54c8b7424484d892e4c8b6c24084d896e084c8b2c244d896e10488d64241049c746180100000048c7c0010000004883c440c34c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d80e67080000000048bb4870620800000000ff15b0010000ff15a20100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b556049c70603000000ff124c8b14244d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b5278488d6424084d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bda8946208000000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849bed8086208000000004d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c3f400000000000000|@8822,1,@19333,@10999,@10696,@14522,@10999,@10696,@10999,@10696,@10999,@10696|146,0,@1098 304,0,@8819 314,0,@851 480,0,@1098 569,0,@123 650,0,@1098 933,0,@8820 943,0,@851 1256,0,@8820 1266,0,@851 1688,0,@8818 1698,0,@851 1975,0,@1098 2055,0,@123 14522:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19334| 14523:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@999,1,@19336| 14524:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8357406488b5208ff2248c7c003000000c3f4|@1001,1,@19337| 14525:D3,48|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b742408498b560858488d642408ff22f40000|@8639,1,@19338| 14526:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@1001,1,@19339| 14527:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@8704,1,@19340,@14373| 14528:D4,480|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c64983fe010f85a60100004c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30096208000000004f8b6caefc4c3b2d4b010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be5818620800000000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3488d642410498b06c3f400000000000000|@8736,1,@19341,@194|121,0,@502 153,0,@126 204,0,@194 270,0,@1098 14529:D3,32|483b65187305ff5558cd054883f805750848c7c003000000c3488b5208ff22f4|@1001,1,@19342| 14530:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@742,1,@19354| 14531:D12,1960|483b65187306ff5558ca090750534150415141524c8b5424084d8b62104d89e64d89d24d8b5a484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc590f85ab0200004c89d04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1519060000ff150b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff1543050000488b4424204c8b4424104c8b4c2408415a488d6424104c8b6c24284c8b6424204c8b5c241848c7c3030000004c895c24184c896424204c896c24284883c410e90ffdffff4d8d47e84c3b45107306ff5550ca00044d89c749c740f8020000004c8b7424204d89700849be680cba09000000004d89306a016a014c89d3488b4424104989e1ff15b1040000ff3424ff74241048c7c023000000488b5c2428ff15900400006a016a014c8b5424704c8b7424684c8b6c246041564155488b442440488b5c24604c8d4424104c8b4c2448ff1557040000ff3424ff742410488b4424484c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc050f85bf0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424584889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1571020000ff15630200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff159b0100006a016a014c8bb424a00000004c8bac24980000004c8ba42490000000415641554154488b842498000000488b9c24900000004c8d4424184c8b8c24800000004c8b542478e892f9ffff415d415e4c892c244c89742408eb1248c70424010000004c8b7424104c89742408415b415e4c8b6424204d8b2c244d89e44d8b4c24104d89e4498b7c24204c8b24244d8b5424084d89e44d8b442418488d6424084d8d67d04c3b65107306ff5550ca806f4d89e749c74424f80500000049897c24204d894424184d894c24104d895424084d892c2449c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004c8b4c24504d894d204d8955184d8965104c8b24244d896508488d6424084c8b6424184d8965004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244c8b6c24404d8965004d89750848c7c0010000004883c458c21800f40000000000|@8826,1,@19346,@10693,@10697,@10696,@14468,@14323,@14442,@10693,@10697,@10696|463,0,@850 473,0,@851 648,0,@853 671,0,@856 791,0,@14532 1351,0,@850 1361,0,@851 1536,0,@853 1559,0,@856 14532:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19345| 14533:D4,328|483b65187306ff5558ca090353415041514c8b4424084d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f85df0000006a016a0148b8d8fb660800000000488b5c24104989e1ff15f7000000ff3424ff7424106a016a01488b4424104889e34c8b4424384c8b4c2430e875ffffff415b415e49c7c5010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b14244d895510488d6424084d8965084c8b24244d896500488d6424284d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d642410415e49c706010000004989460848c7c001000000c3f400|@8827,1,@19347,@14354|83,0,@8715 14534:D10,1208|483b65187306ff5558ca09035053415041514c8b6c24184d8b5d104d89de4d89ed4d8b55484d89d44d8b1b4d8b124983fa5374054d89d3eb0041534d89ed498b7d284989f94d89ed4c89e841ff75304889c0488b50504989d24889c04c8b40704d89c34889c0488b70784989f5ff32488b3fff36498b304d8d47d04c3b45107306ff5550cac17e4d89c749c740f805000000488b14244989502049897018488b7424084989701049897808488b7c241049893841504889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424404889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15c1020000ff15b30200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15eb0100004c8b7424204d89f54983fe3b753d48c7c001000000488b5c2440ff15c30100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb604d89ed4d89ee4983fd39753d48c7c001000000488b5c2440ff15720100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000eb174d89f64983fe490f85f500000049bea89b620800000000415648b8d8fb660800000000488b5c243049b860116708000000004c8b4c2448ff15020100006a016a01ff742410488b442420488d5c24084c8b4424604c8b4c24484c8b542458ff15d3000000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424104d8956204d895e184c8b5c24184d895e104d8966084c8b6424204d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64242849c704240f0000004c8b6c24104d8965004d89750848c7c0010000004883c428c3488d64244848b87811670800000000488b5d08ff23f400000000000000|@8841,1,@19351,@14539,@14336,@14535,@14535,@10693,@10697,@10696|551,0,@850 561,0,@851 736,0,@853 759,0,@856 936,0,@1145 948,0,@8715 963,0,@8828 1186,0,@8829 14535:D9,1792|483b65187305ff5558cd09534c8b34244d8b6e104d89f64d8b66484d8b6d004d8b24244983fc5374054d89e5eb004983fd3d0f85a40600004d89f64d8b76084d8b364d8b2e4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849be981aba09000000004c893348ba481267080000000048c7c00100000049c7c003000000ff15a50600004989c641f6c60175694d8b2e4d8b75004d8b650841f6c60174434d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64240848b8f012670800000000488b5d08ff2349c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64240848b808d5620800000000488b5d08ff2341ff364c8b2c244d89ee4983fd017d02eb0e4d89f64983fe137f05e9b90200004c8b7424084d8b5e284d89f64d8b66304d89f64d8b56504d89f64d8b6e704d89f64d8b4e784d8b124d8b1b4d8b014d8b4d004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d89650041554d89f64d8b76084d8b364d8b2e4e8d246d010000004983fc01750f49bd4813670800000000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b90400000f87820400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb481367080000000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b86813670800000000e9b20000004d89f44983c44a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de20300000f879e0300004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd681367080000000048c7c14b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4870620800000000ff1598030000ff158a0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12488b4424084c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1542010000ff15340100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff156c000000584883c408c3488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64240848c7c001000000c3f4000000000000ffffffffffffff01ffffffffffffff01|@8843,1,@19353,@10693,@10697,@10696,@10999,@10696,@14537|114,0,@14536 127,0,@8834 255,0,@8837 340,0,@1556 514,0,@8839 652,0,@8839 721,0,@8840 877,0,@8840 914,0,@851 1486,0,@850 1496,0,@851 1671,0,@853 1694,0,@856 1721,0,@117 1742,0,@117 14536:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@8833,1,@19348| 14537:D19,3224|483b65187306ff5558ca0d0152505341506a016a016a014c8b7424184d89f54983fe0575244c8b7424304d8b6e084d89f64d8b761048c70424210000004c896c24084c89742410eb7f4d89ed4d89ee4983fd0375244c8b7424304d8b6e184d89f64d8b762048c70424150000004c896c24084c89742410eb4f4d89f64983fe0775244c8b7424304d8b6e284d89f64d8b763048c70424110000004c896c24084c89742410eb224c8b7424304d8b6e384d89f64d8b764048c70424050000004c896c24084c89742410ff3424488b542428488b442430ff124989c641f6c6010f854d0500004d8b2e4d8b750041ff75084983fe13720b4983fe1b7705e9170500004983fe410f840d0500004983fe570f85940100004c8b7424084983fe210f8578010000488b542430488b0424ff124989c641f6c6010f85530100004d8b2e4d8b750041ff75084983fe617424488d64240841584c8b4c242848c7c30100000048c7c0010000004883c440ff25b80b0000488b542438488b0424ff124989c641f6c6010f85b70000004d8b2e4d8b75004d8b45084981fef10000007502eb2d4981feb10000007424488d64240841584c8b4c242848c7c30100000048c7c0010000004883c440ff25550b000048c7c00100000048c7c3010000004c8b4c2438ff15340b00004883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d642450c34d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64244848c7c001000000c36a016a01ff742410e9fa0700004983fe5b7505e9b40100004981fefd0000000f84a7010000488d6424084c8b34244983fe210f8587010000488d642428488b1424488b442408ff124989c641f6c6010f855d0100004d8b2e4d8b750041ff75084983fe617429488d6424084c8b4424084159488d64240848c7c30100000048c7c0010000004883c408ff25e6090000488b542408488b0424ff124989c641f6c6010f85bc0000004d8b2e4d8b75004d8b45084981fef10000007502eb324981feb10000007429488d6424084c8b4424084159488d64240848c7c30100000048c7c0010000004883c408ff257e09000048c7c00100000048c7c3010000004c8b4c2408ff155d0900004883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d642420c34d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d64241848c7c001000000c36a016a01ff742440e94d0400004c8b7424084983fe210f8597010000488b542430488b0424ff124989c641f6c6010f856e0100004d8b2e4d8b750041ff75084983fe61742f488d64240848c7c00100000048c7c3010000004c8b04244c8b4c2430ff15370800004989c6488d642448e92c010000488b542438488b0424ff124989c641f6c6010f85c50000004d8b2e4d8b75004d8b45084981fef10000007502eb354981feb1000000742c488d64240848c7c00100000048c7c3010000004c8b04244c8b4c2430ff15c90700004989c6488d642448eb7848c7c00100000048c7c3010000004c8b4c2438ff159e0700004989c64983fe0175514d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c448eb05488d642450eb4f4d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c448eb0c488d64244849c7c601000000e9230200006a016a01ff742410eb27488b54244058488b5c24284883c42041584883c418e9cff9ffff488d64244048c7c001000000c3488b542448488b0424ff124989c641f6c6010f856d0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424204d89f54983c6607115488d64246048b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15f5050000415b415c4c89e34883eb607115488d64246048b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15ac050000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c450eb0c488d64246049c7c601000000eb6d4c8b7424104983fe0375564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c450eb0c488d64246049c7c60100000041f6c60175764d8b36498b1e4d8b6608f6c301741249c7c5010000004c2beb70064983c501eb1448c7c0010000004154ff156a040000415c4989c54d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488b542440488b0424ff124989c641f6c6010f856a0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424184d89f54983c6607115488d64245848b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c241841544153ff1567030000415b415c4c89e34883eb607115488d64245848b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff151e030000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64245848c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64245848c7c001000000c3488b542448488b0424ff124989c641f6c6010f856a0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424204d89f54983c6607115488d64246048b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff1569010000415b415c4c89e34883eb607115488d64246048b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff1520010000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c450c3488d64246048c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c450c3488d64246048c7c001000000c3f400000000000000|@8835,1,@19349,@10599,@12218,@10599,@12218,@10653,@10599,@12218,@14538,@14538,@14538,@14538,@14538,@14538,@14538,@14538,@14538|1663,0,@105 1791,0,@105 2293,0,@105 2421,0,@105 2787,0,@105 2915,0,@105 14538:D9,840|483b65187306ff5558ca0903505341504151488b1424488b442408ff124989c641f6c6010f85a80200004d8b2e4d8b75004d8b45084983fe610f8c950000004983fe730f8f8b000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff150d0300004158415e4983ee607115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15c302000041584889c3415948c7c0030000004883c418e92cffffff4981fe830000000f8cb60000004981fe8d0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15580200004158415e4981ee820000007115488d64242048b8d006620800000000488b5d08ff234983c6147115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15f001000041584889c3415948c7c0030000004883c418e969feffff4981fec30000000f8cbd0000004981fecd0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15850100004158415e4981eec20000007115488d64242048b8d006620800000000488b5d08ff234983c6147115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff151d01000041584889c3415948c7c0030000004883c418e9a6fdffff488d642408eb05488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3f400000000|@8836,1,@19350,@10599,@12218,@10599,@12218,@10599,@12218|140,0,@105 308,0,@105 335,0,@105 503,0,@105 530,0,@105 14539:D5,376|483b65187306ff5558ca0907534150415141524c8b4424104d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f850a0100006a016a0148b8d8fb660800000000488b5c24184989e1ff152d010000ff3424ff742410488b442408488b5c24304c8b0424ff150a0100004c8b742420498b164c8b7424484d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d8975084c8b6424084d89e64d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff126a016a014c8b7424584156488b442418488d5c24084c8b4424484c8b4c24404c8b542438e8f2feffff415d415e488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642430415d4d8965004d89750848c7c001000000c20800488d642418415e49c706010000004989460848c7c001000000c20800f40000|@8842,1,@19352,@11080,@14354|85,0,@8715 14540:D3,736|483b65187305ff5558cd014989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f847750848c7c003000000c34883f86d750848c7c003000000c348c7c001000000c3f4|@1001,1,@19355| 14541:D3,40|483b65187305ff5558cd014883f867750848c7c003000000c348c7c001000000c3f4000000000000|@8846,1,@19356| 14542:D3,40|483b65187305ff5558cd014883f82b750848c7c003000000c348c7c001000000c3f4000000000000|@8848,1,@19357| 14543:D11,1536|488dbc2460ffffff483b7d187306ff5560ca09035053415041514c8b7424104c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b70104889c04c8b60484d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424284889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff156d040000ff155f0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15970300004c8b6c24284d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a016a016a0148b8d8fb66080000000048bbc8f26608000000004c8b4424684989e1ff1542030000ff3424ff742410488b442408488b5c24784c8b0424ff151f03000048c7c023000000488b5c2478ff15050300004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424704d89700849bee037ba09000000004d89306a016a0148bac8f0660800000000488b842490000000488b9c24880000004989e14c8b542478ff15a3020000415a415d4c8b1c244d8b334d89db4d8b63104d89db4d8b4b2041ff750841ff75184d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204c8b0c244d894d184d8965104c8b6424084d8965084d89750049be886a6408000000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d8934244d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d89db4d895e184d8966104c8b6424184d8966084d892e415648c7c00500000048bbc8f26608000000004c8b842490000000ff15bb0100004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d8975084c8b34244d897500488d6424084c896c2430483b65187303ff55584883c430e925feffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204c8b24244d896618488d6424084c8b6424484d8966104c8b24244d896608488d6424084c8b6424484d89264c896c24284c897424304c8b7424284c8b6c24304d8b65084d8b5d184d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424504d8955204d895d184c8b5c24584d895d104d8965084c8b6424604d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c700030000004881c488000000c3f40000|@8853,1,@19369,@14324,@14332,@14323,@11080,@14354,@10693,@10697,@10696|459,0,@850 469,0,@851 644,0,@853 667,0,@856 726,0,@8715 736,0,@8673 838,0,@14544 855,0,@8658 984,0,@4533 1095,0,@8673 14544:D3,40|483b65187305ff5558cd054883f8057502eb0c4883f81f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19359| 14545:D8,1224|483b65187306ff5558ca090750534150415141524c8b7424184c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b70104889c04c8b60484d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424304889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff1523030000ff15150300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff154d0200004c8b6c24304d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a016a016a01ff742478ff74246048c7c001000000488d5c24104c8b4424784c8b8c24800000004c8b542470ff15ee010000ff3424ff74241048c7c00500000048bb58ee6608000000004c8b842480000000ff15c00100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e957ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204c8b6c24284d8b65084d8b5d184d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424484d8955204d895d184c8b5c24504d895d104d8965084c8b6424584d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c700010000004881c488000000c3f400000000|@8851,1,@19367,@14324,@14546,@10693,@10697,@10696|453,0,@850 463,0,@851 638,0,@853 661,0,@856 778,0,@8640 14546:D22,4184|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be604eba09000000004c89336a016a0148b8b8f06608000000004c8b4424184989e1ff15a3100000ff3424ff742410488b442408488b5c24284c8b0424ff158010000048c7c043000000488b5c2428ff15661000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b6424304d89e64d89650849bcb84eba09000000004d8965004c8b4424284d8b50104d89d44d89c04d8b48484d89cb4d8b124d8b094983f95374054d89caeb004983fa5f0f85f00000004d89c04d8b60284d89c04d8b68304d89c04d8b58504d89c04d8b70704d89c04d8b50784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d8974241049c74424080100000049c704240100000049c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8086208000000004d892ee9fc0400004d89c04d89c04d8b24244d8b1b4983fb5374054d89dceb004d89e34c8d15080000004f8d549afc41ffe2e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c6000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a7000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e988000000909090e93b000000909090e981000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fc19750949c7c403000000eb0749c7c401000000eb3d49c7c403000000eb3449c7c403000000eb2b49c7c403000000eb2249c7c403000000eb1949c7c403000000eb1049c7c403000000eb0749c7c4030000004983fc030f852f0100004d89c04c89c341ff70304889db4c8b63504889db4c8b737841ff342441ff3648bae0f0660800000000488b4424684d89e84c8b4c2438ff15260c00004989c64c8b6c24404d8b65284d89ed4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b14244d895520488d6424084d895d184c8b1c244d895d10488d6424084d8965084c8b24244d896500488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d8974240849c704240100000049c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8086208000000004d892ee924010000498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004d89f64c89730849be084fba09000000004c89336a016a0148b8b8f06608000000004989e1ff15e50a0000ff34244c8b442410488b0424488b5c2440ff15c60a000048c7c013000000488b5c2440ff15ac0a00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424484d89700849be684fba09000000004d89306a016a0148bac8f0660800000000488b442478488b5c24504989e14c8b542448ff15500a0000415c488d64240849c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e084c8b2c244d892e488d642418415648c7c05f000000488b5c2430ff15d3090000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f850d0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15f8070000ff15ea0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15220700004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d89700849bec84fba09000000004d89306a016a0148bac8f0660800000000488b442468488b5c24404989e14c8b542438ff15c6060000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508030000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee91b0300004983fc130f850a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8107062080000000048bb4870620800000000ff15c1040000ff15b30400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87870620800000000488b5d08ff2349c7065300000048baf070620800000000ff15eb0300004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d89700849be1050ba09000000004d89306a016a0148bac8f0660800000000488b442468488b5c24404989e14c8b542438ff158f030000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508010000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000415648c7c023000000488b5c2438ff151d0300006a016a0148ba48fe660800000000488b4424704c8b7424684156488b5c24504c8b4424584c8d4c24084c8b542448ff15e1020000415d415e4c8b4424104d8b204d89c04d8b50104d89c0498b78204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d894e184d8956104d895e084d8926f60424010f85ca0000004c8b24244d8b24244d8b1c244d8b5424084d8b4c241049c7c401000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892749c7c401000000498d77f0483b75107306ff5550ca807f4989f748c746f801000000c646ff404c89264d8d67c84c3b65107306ff5550cac06f4d89e749c74424f806000000498974242849897c24204d894c24184d895424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d89650849c7450005000000eb004c8b24244983fc01488d642408750949c7c103000000eb0749c7c1010000004983f10249c7c4010000004d8d57f04c3b55107306ff5550ca00734d89d749c742f80100000041c642ff404d892249c7c4010000004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d892349c7c401000000498d77f0483b75107306ff5550ca007f4989f748c746f801000000c646ff404c892649c7c401000000498d7ff0483b7d107306ff5550ca407f4989ff48c747f801000000c647ff404c892749c7c401000000498d57f0483b55107306ff5550cac07f4989d748c742f801000000c642ff404c892249c7c401000000498d4ff0483b4d107306ff5550cac47f4989cf48c741f801000000c641ff404c89214d8d67984c3b65107306ff5550cac66f4d89e749c74424f80c00000049894c24584989542450498974244849897c24404d89c04d894424384d894c24304d895424284d895c24204c8b5c24104d895c24184d897424104d896c24084c8b2c244d892c24488d6424184c8b6c24284d8965004d89750848c7c0010000004883c430c21000f4000000000000|@8852,1,@19368,@14407,@14323,@14332,@10693,@10697,@10696,@14332,@10693,@10697,@10696,@14323,@14332,@14323,@11080,@14354,@14365,@14323,@11080,@14354|54,0,@14547 71,0,@8657 176,0,@14548 461,0,@123 1191,0,@8659 1445,0,@123 1497,0,@14549 1514,0,@8657 1607,0,@14550 1624,0,@8658 2216,0,@850 2226,0,@851 2401,0,@853 2424,0,@856 2473,0,@14551 2490,0,@8658 3007,0,@850 3017,0,@851 3192,0,@853 3215,0,@856 3264,0,@14552 3281,0,@8658 3425,0,@8724 14547:D3,48|483b65187305ff5558cd054883f8237502eb0e4883f8157502eb064883f813750848c7c003000000c3488b5208ff22f4|@1001,1,@19361| 14548:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@1001,1,@19362| 14549:D3,56|483b65187305ff5558cd054883f813750848c7c003000000c34883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f40000|@1001,1,@19363| 14550:D3,56|483b65187305ff5558cd054883f863750848c7c003000000c34883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f40000|@1001,1,@19364| 14551:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19365| 14552:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@1001,1,@19366| 14553:D613,132968|488dbc2418feffff483b7d187305ff5560cd095053488b442408ff15681a02004989c641564c8b342441ff76104c8b74240841ff76184c8b7424184983fe03750c49be1016670800000000eb0a49bed85766080000000041564c8b7424204983fe03750c49bef839660800000000eb0a49bee09862080000000049bd4803110a000000004d897500488b54240848b84016670800000000ff1248b8701667080000000048bb989f620800000000ff15cd1902004989c6415648c7c001000000ff15b31902004989c6415648c7c001000000ff15991902004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be48096308000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8701667080000000048bbc0aa620800000000ff15f31802004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc68cc6208000000004d8966184d896e1049bdf0526208000000004d896e0849bd48096308000000004d892e415648b8901667080000000048bb989f620800000000ff15c61702004989c6415648c7c001000000ff15ac1702004989c6415648c7c001000000ff15921702004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30096308000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8901667080000000048bbc0aa620800000000ff15ec1602004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc68cc6208000000004d8966184d896e1049bdf0526208000000004d896e0849bd30096308000000004d892e415648c7c015000000ff15cc1502004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049beb0166708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd50176708000000004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50176708000000004c8930ff1248ba3891620800000000488b0424ff15d21402004989c6488d642408415648c7c013000000ff15b31402004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc68176708000000004d8966184d896e1049c746080500000049bd88176708000000004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24184d892e4d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd98cc6208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec0cc6208000000004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be30096308000000004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be48096308000000004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424184c89700849be88176708000000004c8930ff12488b5424084c8b7424204983fe03750c49bdf839660800000000eb0a49bde0986208000000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be28996208000000004c8930ff12488b54240848b8a017670800000000ff12488b54240848b8d017670800000000ff12488b54240848b80018670800000000ff12ff3504120200f6042401754d4c8b34244d8b2e4c8b342441ff76084d8b7500488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558ebad488d642408488b54240848b83018670800000000ff12ff358d110200f6042401754d4c8b34244d8b2e4c8b342441ff76084d8b7500488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558ebad488d642408488b54240848b89018670800000000ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb40996208000000004d895c242049bbf0186708000000004d895c241849bb60096308000000004d895c24104d896c240849c704240b0000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004155498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c893348b858e464080000000049b86009630800000000ff15cb0f02004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049bde09f6208000000004d896e0849bd60096308000000004d892e4156488b5424104d8d6fe84c3b6d107305ff5550cd044d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bdf0186708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60096308000000004c8930ff12488b542418498d47e8483b45107305ff5550cd044989c748c740f802000000415e4c89700849be60096308000000004c8930ff1248c7c001000000ff156f0e02004989c6415648c7c001000000ff15550e02004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e20415d4d896e1849c746100100000049bd601e6708000000004d896e0849bd801e6708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001900000049bea81e6708000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbf81e6708000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac0be64080000000048c7c30100000049c7c001000000ff15c80c02004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb98a36208000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd80a36208000000004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e204c8b2c244d896e1849bd101f6708000000004d896e1049c746080100000049c7060b0000004156488b54241848b8301f670800000000ff12488b54241848b8601f670800000000ff1248c7c015000000ff15340b02004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be901f6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bda01f6708000000004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea01f6708000000004c8930ff1248ba3891620800000000488b0424ff153a0a02004989c6488d642408415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415648c7c001000000ff15490902004989c6415648c7c001000000ff152f0902004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb81f6708000000004d89750849be989f6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff15460802004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15dc0702004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff159d0702004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f803000000415d4d896c2410415d4d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdd81f6708000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed81f6708000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c00b000000ff15200502004989c64156488b442408ff15080502004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff159a0402004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff155b0402004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd68cc6208000000004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdf81f6708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef81f6708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648b8789f620800000000ff159d0202004989c64156488b442408ff15850202004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15170202004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15d80102004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff15e70002004989c64156488b0424ff15d00002004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd68cc6208000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd10206708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be10206708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff151eff01004989c6415648c7c001000000ff1504ff01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be50206708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1565fe01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15f7fd01004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15b8fd01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0206708000000004c8970084c8b7424104c893048c7c303000000ff15e8fc01004989c64156488b0424ff15d1fc01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bde8206708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8206708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1524fb01004989c6415648c7c001000000ff150afb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be00216708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff156bfa01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15fdf901004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15bef901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0206708000000004c8970084c8b7424104c893048c7c303000000ff15eef801004989c64156488b0424ff15d7f801004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd20216708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20216708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff152af701004989c6415648c7c001000000ff1510f701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be48216708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1571f601004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1503f601004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15c4f501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0206708000000004c8970084c8b7424104c893048c7c303000000ff15f4f401004989c64156488b0424ff15ddf401004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd68216708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68216708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1530f301004989c6415648c7c001000000ff1516f301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be80216708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1577f201004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1509f201004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15caf101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0206708000000004c8970084c8b7424104c893048c7c303000000ff15faf001004989c64156488b0424ff15e3f001004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bda0216708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0216708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c011000000ff155def01004989c64156488b442408ff1545ef01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15d7ee01004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1598ee01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8206708000000004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdc8216708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec8216708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c00f000000ff15ddec01004989c64156488b442408ff15c5ec01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1557ec01004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1518ec01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8206708000000004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bde8216708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8216708000000004c8930ff124c8b742410498b561048b80822670800000000ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1521ea01004989c6415648c7c001000000ff1507ea01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849bed0226708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1568e901004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15fae801004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15bbe801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff159de701004989c64156488b0424ff1586e701004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd20236708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20236708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff15d4e501004989c6415648c7c001000000ff15bae501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be40236708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff151be501004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15ade401004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff156ee401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff1550e301004989c64156488b0424ff1539e301004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd68236708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68236708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c007000000ff15aee101004989c64156488b442408ff1596e101004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1528e101004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15e9e001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd88236708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88236708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648b8b84b620800000000ff152bdf01004989c64156488b442408ff1513df01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15a5de01004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1566de01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c408415648b8a82367080000000048c7c303000000ff15badd01004989c64156488b0424ff15a3dd01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24104d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdd8236708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed8236708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c8930ff1500dc01004989c541f6c501740f49be0024670800000000e91801000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64245848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff158edb01004989c641564c8b7424084983fe017d15488d64246848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff154fdb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d89750849be00246708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8206708000000004c893048c7c303000000ff1528da01004989c64156488b0424ff1511da01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdb0246708000000004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb0246708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1587d801004989c6415648c7c001000000ff156dd801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8246708000000004d89750849bef8246708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15ced701004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1560d701004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1521d701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8256708000000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff152ad601004989c64156488b0424ff1513d601004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd68cc6208000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdf0256708000000004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef0256708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1589d401004989c6415648c7c001000000ff156fd401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8246708000000004d89750849be10266708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d0d301004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1562d301004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1523d301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8256708000000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff152cd201004989c64156488b0424ff1515d201004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24284d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd40266708000000004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40266708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1590d001004989c6415648c7c001000000ff1576d001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8246708000000004d89750849be68266708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d7cf01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1569cf01004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff152acf01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8256708000000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff1533ce01004989c64156488b0424ff151cce01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd98266708000000004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be98266708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1592cc01004989c6415648c7c001000000ff1578cc01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8246708000000004d89750849beb8266708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d9cb01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff156bcb01004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff152ccb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8256708000000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff1535ca01004989c64156488b0424ff151eca01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bde8266708000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8266708000000004c8930ff1248c7c001000000ff15b9c801004989c6415648c7c001000000ff159fc801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be08276708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8282767080000000048c7c303000000ff15f4c701004989c64156488b0424ff15ddc701004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8206708000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bd40276708000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40276708000000004c8930ff1248c7c001000000ff157dc601004989c6415648c7c001000000ff1563c601004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be60276708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8882767080000000048c7c303000000ff15b8c501004989c64156488b0424ff15a1c501004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8036308000000004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bda0276708000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0276708000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415648b8f048660800000000ff156cc301004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcc0276708000000004d8966104d896e0849c7060f000000415648c7c001000000ff1516c301004989c6415648c7c001000000ff15fcc201004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be90316708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff151bc201004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15b1c101004989c641564c8b7424084983fe017d15488d64247048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1572c101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f048660800000000ff15d1c001004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcb0316708000000004d8966104d896e0849c7060f000000415648c7c001000000ff157bc001004989c6415648c7c001000000ff1561c001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be90356708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c8930ff1580bf01004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1516bf01004989c641564c8b7424084983fe017d15488d64247848b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15d7be01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e415648c7c00100000048bbb035670800000000ff15f8bb01004989c64156488b442408ff15e0bb01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424a000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff156fbb01004989c641564c8b7424084983fe017d18488da424b000000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff152dbb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e415648c7c00100000048bbc035670800000000ff1557ba01004989c64156488b442408ff153fba01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424a800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15ceb901004989c641564c8b7424084983fe017d18488da424b800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff158cb901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424304d89751049bea8036308000000004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78036308000000004d896e0849c7060500000041564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424304d8975104c8b7424384d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78036308000000004d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424384d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24404d892e415648c7c00500000048bbd035670800000000ff1592b701004989c64156488b442408ff157ab701004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1509b701004989c641564c8b7424084983fe017d18488da424d000000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15c7b601004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24484d892e415648c7c00500000048bbe035670800000000ff15a2b501004989c64156488b442408ff158ab501004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1519b501004989c641564c8b7424084983fe017d18488da424d800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15d7b401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24484d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424504c893048c7c303000000ff15e6b301004989c64156488b0424ff15cfb301004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424404d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78036308000000004d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24484d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24584d892e415648c7c00700000048bbf035670800000000ff154bb201004989c64156488b442408ff1533b201004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424d800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15c2b101004989c641564c8b7424084983fe017d18488da424e800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1580b101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24504d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e415648c7c00700000048bb0036670800000000ff1533b001004989c64156488b442408ff151bb001004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424e000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15aaaf01004989c641564c8b7424084983fe017d18488da424f000000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff1568af01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424684c893048c7c303000000ff154fae01004989c64156488b0424ff1538ae01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424504d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78036308000000004d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24504d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e415648c7c00900000048bb1036670800000000ff158dac01004989c64156488b442408ff1575ac01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424f000000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1504ac01004989c641564c8b7424084983fe017d18488da4240001000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15c2ab01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24604d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff1582aa01004989c64156488b0424ff156baa01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424584d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78036308000000004d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424484d8966184d896e1049c746080500000049bd20366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424504d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424484d8966184d896e1049c746080500000049bd40366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424900000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424404d8966184d896e1049c746080500000049bd90316708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90316708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424880000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424404d8966184d896e1049c746080500000049bd90356708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90356708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424284d8966184d896e1049c746080500000049bd60366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424284d8966184d896e1049c746080500000049bd80366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bda0366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bdc0366708000000004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec0366708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c488da424900000004d8966184d896e1049c746080500000049bde0366708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee0366708000000004c8930ff1248c7c00500000048c7c30500000049b80037670800000000ff15cba201004989c64156ff35b8a20100f60424010f85080100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00504d89ef49c745f80700000049c745300100000049c745280100000049bb40996208000000004d895d2049bb280f6308000000004d895d184d89651049c74508010000004d8975004c8b642428498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9eefeffff488d6424084d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bcd8836608000000004d89651849bc18846608000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15c1a001004989c64156488b0424ff15aaa001004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080500000049bd10376708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28376708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60376708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98376708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0376708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10386708000000004d892e4156f60424010f85360100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b6d104d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049ba280f6308000000004d8953104d896b0849c703050000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508010000004d8975004c8b642428498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9c0feffff488d64240848c7c015000000ff15b79d01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be48386708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd58386708000000004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58386708000000004c8930ff1248ba3891620800000000488b0424ff15bd9c01004989c6488d642408415648b8703867080000000048c7c303000000ff15949c01004989c64156488b0424ff157d9c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcd8576608000000004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10166708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10166708000000004c893048c7c303000000ff15579b01004989c64156488b0424ff15409b01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8703867080000000048c7c303000000ff158d9a01004989c64156488b0424ff15769a01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc10166708000000004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10166708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10166708000000004c893048c7c303000000ff15509901004989c64156488b0424ff15399901004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc10166708000000004d8966104d896e0849c70605000000415648b8703867080000000048c7c303000000ff15869801004989c64156488b0424ff156f9801004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c70607000000415648b8703867080000000048c7c303000000ff15f09701004989c64156488b0424ff15d99701004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706050000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d8974241049be78036308000000004d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bda0386708000000004d892e41564c8b742418498b561848b8c038670800000000ff1248b8f038670800000000ff15669601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd08396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be08396708000000004c8930ff1248b820b1630800000000ff15929501004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd20396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20396708000000004c8930ff1248b82854650800000000ff15be9401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd38396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be38396708000000004c8930ff1248b8f052620800000000ff15ea9301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd50396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50396708000000004c8930ff1248b8b09f620800000000ff15169301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd70396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70396708000000004c8930ff1248b840ae650800000000ff15429201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd88396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88396708000000004c8930ff1248b888ae650800000000ff156e9101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bda0396708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0396708000000004c8930ff124c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424204c89700849bea0386708000000004c8930ff1248c7c015000000ff15609001004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049beb8396708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bdc8396708000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec8396708000000004c8930ff1248ba3891620800000000488b0424ff15668f01004989c6488d642408415648b8e03967080000000048c7c303000000ff153d8f01004989c64156488b0424ff15268f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8e03967080000000048c7c303000000ff15738e01004989c64156488b0424ff155c8e01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcd8576608000000004d8966104d896e0849c7060500000041564c8b742410498b561848b8f839670800000000ff1248b8a84f660800000000ff159b8d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd501a6208000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff1248b8283a670800000000ff15c78c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bda8c46408000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff1248b8483a670800000000ff15f38b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd801a6208000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff1248b8683a670800000000ff151f8b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd883a6708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff1248b860fe620800000000ff154b8a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bdb8186208000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8186208000000004c8930ff1248b8184e660800000000ff15788901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bde8186208000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8186208000000004c8930ff1248b8f038670800000000ff15a58801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bda0186208000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0186208000000004c8930ff1248b82854650800000000ff15d28701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bda03a6708000000004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea03a6708000000004c8930ff1248b8b83a670800000000ff15ff8601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c488d6424084d8966184d896e1049c746080500000049bdd03a6708000000004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed03a6708000000004c8930ff1248c7c015000000ff152f8601004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bee83a6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd20c86408000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20c86408000000004c8930ff1248ba3891620800000000488b0424ff15358501004989c6488d64240841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893048c7c303000000ff15c78401004989c64156488b0424ff15b08401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893048c7c303000000ff15b88301004989c64156488b0424ff15a18301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424304c893048c7c303000000ff15cf8201004989c64156488b0424ff15b88201004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849c7060500000041564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80a36208000000004c8930ff1248b8f83a670800000000ff15b08101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd501a6208000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff1248b8103b670800000000ff15dc8001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bda8c46408000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff1248b8d0a3650800000000ff15088001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd801a6208000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff1248b8283b670800000000ff15347f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424104d8966184d896e1049c746080500000049bd883a6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff1248b8c09e620800000000ff15607e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bdb8186208000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8186208000000004c8930ff1248b8a8f8620800000000ff158c7d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bde8186208000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8186208000000004c8930ff1248b868a2650800000000ff15b87c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bda0186208000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0186208000000004c8930ff1248b880f8640800000000ff15e47b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd403b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be403b6708000000004c8930ff1248b898a2650800000000ff15107b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd583b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be583b6708000000004c8930ff1248b888a3650800000000ff153c7a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd703b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be703b6708000000004c8930ff1248b8f01e650800000000ff15687901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd883b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883b6708000000004c8930ff1248b8a03b670800000000ff15947801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bdb83b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb83b6708000000004c8930ff1248b8c81e650800000000ff15c07701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bdd03b6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed03b6708000000004c8930ff1248b8e83b670800000000ff15ed7601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bd003c6708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be003c6708000000004c8930ff1248b840a3650800000000ff151a7601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c488d6424104d8966184d896e1049c746080500000049bd183c6708000000004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be183c6708000000004c8930ff1248c7c015000000ff154a7501004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be303c6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd10c96408000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be10c96408000000004c8930ff1248ba3891620800000000488b0424ff15507401004989c6488d642408415648b8a82367080000000048c7c303000000ff15277401004989c64156488b0424ff15107401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8a82367080000000048c7c303000000ff155d7301004989c64156488b0424ff15467301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcb8206708000000004d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24304d896e1049bdb8206708000000004d896e0849c70605000000415648c7c01b000000ff15657201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd403c6708000000004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24384d896e1049bdb8206708000000004d896e0849c70605000000415648c7c019000000ff15947101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd603c6708000000004d892e41564d8d77e04c3b75107303ff55504d89f749c746f80300000049bdb8206708000000004d896e104c8b6c24404d896e0849c70605000000415648c7c00d000000ff15c37001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd803c6708000000004d892e41564c8b742428498b561848b8601f670800000000ff1248b8a03c670800000000ff15127001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424204d8966184d896e1049c746080500000049bd501a6208000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff1248b8c03c670800000000ff153e6f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424204d8966184d896e1049c746080500000049bda8c46408000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff1248b8e03c670800000000ff156a6e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424204d8966184d896e1049c746080500000049bd801a6208000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff1248b8003d670800000000ff15966d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424204d8966184d896e1049c746080500000049bd883a6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff1248b8889a660800000000ff15c26c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bdb8186208000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8186208000000004c8930ff1248b8203d670800000000ff15ee6b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bde8186208000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8186208000000004c8930ff1248b8383d670800000000ff151a6b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bda0186208000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0186208000000004c8930ff1248b8503d670800000000ff15466a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd403b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be403b6708000000004c8930ff1248b8683d670800000000ff15726901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd583b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be583b6708000000004c8930ff1248b8803d670800000000ff159e6801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd703b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be703b6708000000004c8930ff1248b8983d670800000000ff15ca6701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd883b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883b6708000000004c8930ff1248b8b03d670800000000ff15f66601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bdb83b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb83b6708000000004c8930ff1248b8c83d670800000000ff15226601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bdd03b6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed03b6708000000004c8930ff1248b8e03d670800000000ff154e6501004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd003c6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be003c6708000000004c8930ff1248b8f83d670800000000ff157a6401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424184d8966184d896e1049c746080500000049bd183c6708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be183c6708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be403c6708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849be603c6708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424284c89700849be803c6708000000004c8930ff1248c7c015000000ff15f66201004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be103e6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd203e6708000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be203e6708000000004c8930ff1248ba3891620800000000488b0424ff15fc6101004989c6488d64240841564c8b3424498b561848b8a017670800000000ff1248b8383e67080000000048c7c303000000ff15bf6101004989c64156488b0424ff15a86101004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8a03c670800000000ff15fc6001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd501a6208000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff1248b8383e67080000000048c7c303000000ff15256001004989c64156488b0424ff150e6001004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8c03c670800000000ff15625f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bda8c46408000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff1248b8383e67080000000048c7c303000000ff158b5e01004989c64156488b0424ff15745e01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8e03c670800000000ff15c85d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd801a6208000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff1248b8383e67080000000048c7c303000000ff15f15c01004989c64156488b0424ff15da5c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8003d670800000000ff152e5c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd883a6708000000004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff1248c7c015000000ff15635b01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be983e6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bda83e6708000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea83e6708000000004c8930ff1248ba3891620800000000488b0424ff15695a01004989c6488d642408498b561848b8d017670800000000ff1248c7c015000000ff153c5a01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bec03e6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bdf8c86408000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef8c86408000000004c8930ff1248ba3891620800000000488b0424ff15425901004989c6488d642408415648b8f048660800000000ff15205901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcd03e6708000000004d8966104d896e0849c7060f000000415648c7c001000000ff15ca5801004989c6415648c7c001000000ff15b05801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed0426708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f048660800000000ff15145801004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcf8426708000000004d8966104d896e0849c7060f000000415648c7c001000000ff15be5701004989c6415648c7c001000000ff15a45701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8436708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f802000000415d4d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00504d89ef49c745f80700000049c745300100000049c745280100000049bb40996208000000004d895d2049bb00446708000000004d895d184d89651049c745080500000049bc70446708000000004d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc90446708000000004d8966184d896e1049c746080500000049bdd0446708000000004d892e415648b8f04467080000000048c7c303000000ff15ec5501004989c64156488b0424ff15d55501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c70605000000415648b8f04467080000000048c7c303000000ff15225501004989c64156488b0424ff150b5501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc40446708000000004d8966104d896e0849c7060500000041564c8b742420498b561848b80018670800000000ff124c8b742420498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be70446708000000004c8930ff124c8b742420498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bed0446708000000004c8930ff1248b82045670800000000ff15d45301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd501a6208000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff1248b83845670800000000ff15005301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bda8c46408000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff1248b8e85a650800000000ff152c5201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd801a6208000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff1248b85045670800000000ff15585101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd883a6708000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff1248b8b01e650800000000ff15845001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424084d8966184d896e1049c746080500000049bd68456708000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68456708000000004c8930ff1248b8b053650800000000ff15b04f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bdb8186208000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8186208000000004c8930ff1248b88045670800000000ff15dd4e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bde8186208000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8186208000000004c8930ff1248b89845670800000000ff150a4e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b24244d8966184d896e1049c746080500000049bda0186208000000004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0186208000000004c8930ff1248b8e053650800000000ff15374d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c488d6424184d8966184d896e1049c746080500000049bd18196208000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18196208000000004c8930ff1248c7c017000000ff15654c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bcb0456708000000004d8966184d896e1049c746080500000049bd80206208000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80206208000000004c8930ff1248c7c015000000ff15904b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bcb0456708000000004d8966184d896e1049c746080500000049bdd0456708000000004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0456708000000004c8930ff1248c7c009000000ff15bb4a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bce8456708000000004d8966184d896e1049c746080500000049bd08466708000000004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be08466708000000004c8930ff1248c7c015000000ff15e84901004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be28466708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd38466708000000004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be38466708000000004c8930ff1248ba3891620800000000488b0424ff15ee4801004989c6488d642408415648c7c015000000ff15cf4801004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be58466708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd48376708000000004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be48376708000000004c8930ff1248ba3891620800000000488b0424ff15d54701004989c6488d642408415649be68466708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc78466708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd801d6608000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac0be64080000000048c7c30100000049c7c001000000ff15c24601004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb90466708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdb0466708000000004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b2c244d896e1849bdb0466708000000004d896e1049c746080100000049c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049bea8036308000000004d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bdc8466708000000004d896e1049c746080500000049bd60476708000000004d892e415648c7c003000000ff15c14401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc78476708000000004d8966184d896e1049c746080500000049bdc8476708000000004d892e415648c7c001000000ff15204401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc78476708000000004d8966184d896e1049c746080500000049bde8476708000000004d892e415648c7c005000000ff157f4301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc08486708000000004d8966184d896e1049c746080500000049bd28486708000000004d892e41564c8b742428498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24204d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb0466708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be60476708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bec8476708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849bee8476708000000004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424284c89700849be28486708000000004c8930ff1248c7c015000000ff158f4101004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be48486708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd58486708000000004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58486708000000004c8930ff1248ba3891620800000000488b0424ff15954001004989c6488d642408415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424304c893048c7c303000000ff15df3f01004989c64156488b0424ff15c83f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c001000000ff15fb3e01004989c6415648c7c001000000ff15e13e01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be78486708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15423e01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4248800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15d13d01004989c641564c8b7424084983fe017d18488da4249800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff158f3d01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd98486708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424384c893048c7c303000000ff15403c01004989c64156488b0424ff15293c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcb8206708000000004d8966104d896e0849c70605000000415648c7c001000000ff15803b01004989c6415648c7c001000000ff15663b01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849beb0486708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bdd0486708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424404c893048c7c303000000ff15183a01004989c64156488b0424ff15013a01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24184d892e415648c7c001000000ff15333901004989c6415648c7c001000000ff15193901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849bee8486708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff157a3801004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4249800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15093801004989c641564c8b7424084983fe017d18488da424a800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15c73701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd08496708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424484c893048c7c303000000ff15783601004989c64156488b0424ff15613601004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104d896e0849c70605000000415648c7c001000000ff15bd3501004989c6415648c7c001000000ff15a33501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be20496708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd40496708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424504c893048c7c303000000ff15553401004989c64156488b0424ff153e3401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc40446708000000004d8966104d896e0849c70605000000415648c7c001000000ff15953301004989c6415648c7c001000000ff157b3301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849be58496708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd88496708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0236708000000004c8970084c8b7424584c893048c7c303000000ff152d3201004989c64156488b0424ff15163201004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc40446708000000004d8966104d896e0849c70605000000415648c7c001000000ff156d3101004989c6415648c7c001000000ff15533101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30206708000000004d89750849bea0496708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bdc0496708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c893048c7c303000000ff15b72f01004989c64156488b0424ff15a02f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e415648c7c001000000ff15cd2e01004989c6415648c7c001000000ff15b32e01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849bee0496708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15142e01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424b800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15a32d01004989c641564c8b7424084983fe017d18488da424c800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15612d01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd084a6708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bea8236708000000004c8970084c8b7424684c893048c7c303000000ff15122c01004989c64156488b0424ff15fb2b01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c70605000000415648c7c001000000ff15522b01004989c6415648c7c001000000ff15382b01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be204a6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd484a6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424704c893048c7c303000000ff159c2901004989c64156488b0424ff15852901004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24484d892e415648c7c001000000ff15b22801004989c6415648c7c001000000ff15982801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be604a6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15f92701004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15882701004989c641564c8b7424084983fe017d18488da424d800000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15462701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd884a6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424784d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8206708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15a92501004989c64156488b0424ff15922501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c70605000000415648c7c001000000ff15e92401004989c6415648c7c001000000ff15cf2401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849bea04a6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bdc84a6708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bee04a6708000000004c8970084c8bb424800000004c893048c7c303000000ff157e2301004989c64156488b0424ff15672301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c70605000000415648c7c001000000ff15be2201004989c6415648c7c001000000ff15a42201004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be104b6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd384b6708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bee04a6708000000004c8970084c8bb424880000004c893048c7c303000000ff15532101004989c64156488b0424ff153c2101004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c70605000000415648c7c001000000ff15932001004989c6415648c7c001000000ff15792001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0226708000000004d89750849be504b6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd784b6708000000004d892e41564c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c89700849be98486708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424504c89700849bed0486708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849be08496708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849be40496708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424384c89700849be88496708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424304c89700849bec0496708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424284c89700849be084a6708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c89700849be484a6708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be884a6708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bec84a6708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849be384b6708000000004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424584c89700849be784b6708000000004c8930ff1248bac0be64080000000048b8984b67080000000048c7c30100000049c7c001000000ff15781c01004889c248c7c001000000ff124989c6415648bac0be64080000000048b8084e67080000000048c7c30100000049c7c001000000ff15371c01004889c248c7c001000000ff124989c6415648bac0be64080000000048b8484f67080000000048c7c30100000049c7c001000000ff15f61b01004889c248c7c001000000ff124989c641564c8b742428498b561048b81851670800000000ff124c8b742428498b561048b8c851670800000000ff124c8b742428498b561048b85852670800000000ff124c8b742428498b561048b8e852670800000000ff124d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24784d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc68cc6208000000004d8966184d896e1049c746080500000049bd78536708000000004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be78536708000000004c8930ff1248bac85466080000000048b880b962080000000048bbb8a76208000000004c8b442410ff15721a010048bac85466080000000048b8080367080000000048bbe0986208000000004c8b442408ff15411a010048bac85466080000000048b8080367080000000048bbf8396608000000004c8b442408ff15101a010048bac85466080000000048b8b80467080000000048bb38a36208000000004c8b0424ff15e0190100488d64241848b8a053670800000000ff15c31901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc90546708000000004d8966104d896e0849c7060f000000415648b8d054670800000000ff156a1901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc405a6608000000004d8966104d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc0aa6208000000004d8965184d897510415e4d89750849c745000b0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda0aa6208000000004d896e1049bd10556708000000004d896e0849c7060b000000415648b83855670800000000ff15941801004989c6415648c7c001000000ff157a1801004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e20415d4d896e1849c746100100000049bd98556708000000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883f8017515488d64247048b83067660800000000488b5d08ff23488d642410ff157e1701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8556708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00566708000000004d892e415648b8f04b660800000000ff15bb1601004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc80556708000000004d8966104d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc0aa6208000000004d8965184d89751049be48566708000000004d89750849c745000b0000004c8b34244983fe01750a488d6424084d89eeeb2c4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7061f000000415648b8f048660800000000ff15df1501004989c6415648c7c001000000ff15c51501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300700000049c74528030000004d897520415e4d89751849c745100100000049be70566708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff152c1501004989c6415648c7c001000000ff15121501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be90566708000000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649beb0566708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648c7c001000000ff151b1401004989c6415648c7c001000000ff15011401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be58576708000000004d89750849be481a6608000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15601301004989c6415648c7c001000000ff15461301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be78576708000000004d89750849bea0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac0be64080000000048c7c30100000049c7c001000000ff15d41101004889c248c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049bca8946208000000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892649c7c41f4e00004e8d1ce5f9ffffff4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892649c7c3030000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fd84c3b5d107306ff5550ca00704d89df49c743f80400000049c743180100000049c74310030000004d89630849c703030000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f80300000049ba98576708000000004d895424104d895c24084d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc40996208000000004d8965104d89750849beb8576708000000004d897500488b5424384d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8576708000000004c8930ff1248c7c001000000ff15d30f01004989c6415648c7c001000000ff15b90f01004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300700000049c74628030000004d896e20415d4d896e1849c746100100000049bdd0576708000000004d896e0849bdf0576708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001900000049be60596708000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb78466708000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac0be64080000000048c7c30100000049c7c001000000ff152c0e01004889c248c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c4030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049bb70596708000000004d895e104d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849be40996208000000004d89751049c745080100000049be90596708000000004d8975004c8b3424498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90596708000000004c8930ff12488b54243848b8b059670800000000ff124c8b3424498b561848b8b05c670800000000ff124c8b3424498b561848b8985f670800000000ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc094d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15c00b01004989c64156488b0424ff15a90b01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc68cc6208000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd283b6708000000004d896e1049c746080500000049bd681a6208000000004d892e488b542440498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be681a6208000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc094d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15ba0901004989c64156488b0424ff15a30901004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc68cc6208000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd10626708000000004d896e1049c746080500000049bd28626708000000004d892e488b542440498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be28626708000000004c8930ff1248c7c015000000ff15680801004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be40626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd50626708000000004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50626708000000004c8930ff1248ba3891620800000000488b0424ff156e0701004989c6488d64240841564c8b342441ff761048c7c015000000ff15470701004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be68626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd78626708000000004d892e4c8b6c2410498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be78626708000000004c8930ff1248ba3891620800000000488b0424ff154d0601004989c6488d642408415648c7c015000000ff152e0601004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be98626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bda8626708000000004d892e4c8b6c2408498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8626708000000004c8930ff1248ba3891620800000000488b0424ff15340501004989c6488d642408415648c7c015000000ff15150501004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bec0626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd48a76308000000004d892e4c8b6c2410498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be48a76308000000004c8930ff1248ba3891620800000000488b0424ff151b0401004989c6488d642408415648c7c015000000ff15fc0301004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bed0626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bde0626708000000004d892e4c8b6c2418498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee0626708000000004c8930ff1248ba3891620800000000488b0424ff15020301004989c6488d642408415648c7c015000000ff15e30201004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bef8626708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd08636708000000004d892e4c8b6c2420498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be08636708000000004c8930ff1248ba3891620800000000488b0424ff15e90101004989c6488d642408415648c7c015000000ff15ca0101004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be28636708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd601f6408000000004d892e4c8b6c2428498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be601f6408000000004c8930ff1248ba3891620800000000488b0424ff15d00001004989c6488d642408415648c7c015000000ff15b10001004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be38636708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd48636708000000004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be48636708000000004c8930ff1248ba3891620800000000488b0424ff15b7ff00004989c6488d642408415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff157efe0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1556fe00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbb0636708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd00646708000000004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be00646708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd00646708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff156cfb0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1544fb00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb18646708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd70646708000000004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70646708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd70646708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff155af80000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1532f800004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb90646708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bde8646708000000004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8646708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bde8646708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1548f50000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1520f500004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb08656708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdd0116708000000004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0116708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdd0116708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1536f20000eb0048bac0be64080000000048c7c30100000049c7c001000000ff150ef200004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb58656708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdb0656708000000004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb0656708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdb0656708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1524ef0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15fcee00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbd0656708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd28666708000000004d892e41564c8b742440498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be28666708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd28666708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1512ec0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15eaeb00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb48666708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bda0666708000000004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0666708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bda0666708000000004d896e1049c746080100000049c7060b00000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849bec0666708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d89660849bcb8be6308000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184d895c240849bbd8666708000000004d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424084d89530849ba78156408000000004d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004c8b4c24104d894a0849b9f0666708000000004d890a4d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b04244d89410849b808676708000000004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a01f64424080175524c8b7424084d8b364c8b6c240841ff7508498b06498b5e08ff1505e800004c8b7424084983fe0175054989c4eb0e488b5c2408ff15e2e700004989c4415d4c8924244c896c2408483b65187303ff5558eba758ff15bae700004989c64156488b0424ff15a3e700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc20676708000000004d8965104d89750849bed8c86208000000004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd70676708000000004d892e41564c8b742478498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70676708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15cfe500004989c64156488b0424ff15b8e500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90676708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff154ce400004989c64156488b0424ff1535e400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8676708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15c9e200004989c64156488b0424ff15b2e200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0676708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1546e100004989c64156488b0424ff152fe100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8676708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15c3df00004989c64156488b0424ff15acdf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8676708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1540de00004989c64156488b0424ff1529de00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18686708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c8930ff153ddc00004d8d77d04c3b75107305ff5550cd014d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd70676708000000004d896e1049c746080100000049c7060b0000004156ff15e2db00004989c64156488b0424ff15cbdb00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060700000041564c8bb42490000000498b561848b83068670800000000ff1248c7c015000000ff153edb00004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be586b6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd686b6708000000004d892e4c8bac2498000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be686b6708000000004c8930ff1248ba3891620800000000488b0424ff1541da00004989c6488d642408415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1508d90000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15e0d800004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb906b6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdf06b6708000000004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef06b6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdf06b6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15f6d50000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15ced500004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb106c6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd606c6708000000004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be606c6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd606c6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15e4d20000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15bcd200004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb786c6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdd06c6708000000004d892e41564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed06c6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdd06c6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15d2cf0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15aacf00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbf06c6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd486d6708000000004d892e41564c8b742420498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be486d6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd486d6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15c0cc0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1598cc00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb686d6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdc06d6708000000004d892e41564c8b742428498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec06d6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdc06d6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15aec90000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1586c900004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbe06d6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd386e6708000000004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be386e6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd386e6708000000004d896e1049c746080100000049c7060b000000415649be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff159cc60000eb0048bac0be64080000000048c7c30100000049c7c001000000ff1574c600004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb506e6708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bda86e6708000000004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e204c8b2c244d896e1849bda86e6708000000004d896e1049c746080100000049c7060b00000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc86e6708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1581c400004989c64156488b0424ff156ac400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf86e6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff154dc300004989c64156488b0424ff1536c300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd186f6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc86e6708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1514c200004989c64156488b0424ff15fdc100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd386f6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15e0c000004989c64156488b0424ff15c9c000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd586f6708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15d4bf00004989c64156488b0424ff15bdbf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd786f6708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24584d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424584c893048c7c303000000ff15cdbe00004989c64156488b0424ff15b6be00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd986f6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24400100004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68cc6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24504d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1542bd00004989c64156488b0424ff152bbd00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86f6708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424704d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24584d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff150ebc00004989c64156488b0424ff15f7bb00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd86f6708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da4244801000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141566a016a016a01488b44242048c7c3010000004989e0ff15d6b90000488d6424105b488b4424084c8b4424104c8b0c24ff15b4b900004989c6488d6424104156ff3424f604240175514c8b34244d8b2e4c8b342441ff76084c8b742458498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba9488d6424084c8b742448498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f802000000415d4d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea86e6708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c7450801000000415e488d6424084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424184d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb40996208000000004d895c242049bb98f36208000000004d895c241849bbe0f36208000000004d895c24104d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049bbf06f6708000000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff158bb700004989c64156488b0424ff1574b700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc38706708000000004d8965104d89750849bed8c86208000000004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd90706708000000004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90706708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd90706708000000004d896e1049c746080100000049c7060b00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff1506b500004989c64156488b0424ff15efb400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424880000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0706708000000004d896e0849bd70736708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424384d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff153cb300004989c64156488b0424ff1525b300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424900000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424084d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd90736708000000004d896e0849bd30746708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24180100004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68cc6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff151ab100004989c64156488b0424ff1503b100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424980000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd50746708000000004d896e0849bdf8746708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893048c7c303000000ff15a3af00004989c64156488b0424ff158caf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424a00000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424184d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd18756708000000004d896e0849bdc8756708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15d8ad00004989c64156488b0424ff15c1ad00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424800000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424204d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf0756708000000004d896e0849bdb8766708000000004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8bac24a00000004d896e104c8b6c24384d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424284d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdd8766708000000004d896e0849bd48776708000000004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8bac24b80000004d896e1049bd68776708000000004d896e0849bda8776708000000004d892e415648b8c87767080000000048c7c303000000ff15c5ab00004989c64156488b0424ff15aeab00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8036308000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bde0776708000000004d896e0849bd78786708000000004d892e415648b8c87767080000000048c7c303000000ff1515aa00004989c64156488b0424ff15fea900004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8036308000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd98786708000000004d896e0849bdd8786708000000004d892e415648b8c87767080000000048c7c303000000ff1565a800004989c64156488b0424ff154ea800004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcf8786708000000004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8036308000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd18796708000000004d896e0849bda0796708000000004d892e415648b8c87967080000000048c7c303000000ff15b5a600004989c64156488b0424ff159ea600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8036308000000004d8965104d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bcd8836608000000004d89651849bc18846608000000004d8965104d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be287a6708000000004d89750849be707a6708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424284d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2420498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488d6424204c8bb42490000000498b561848b8907a670800000000ff12ff3555a20000f604240175554c8b34244d8b2e4c8b342441ff76084d8b75004c8ba424a0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba5488d6424084c8bb42490000000498b561848b89887670800000000ff12ff35cfa10000f604240175554c8b34244d8b2e4c8b342441ff76084d8b75004c8ba424a0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba5488d64240849bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd689e6708000000004d896e1049c746080500000049bd606e6608000000004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be606e6608000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc78036308000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd809e6708000000004d896e1049c746080500000049bd989e6708000000004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be989e6708000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc0576608000000004c8968084c893048c7c303000000ff15619e00004989c64156488b0424ff154a9e00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd103b6708000000004d896e1049c746080500000049bdb89e6708000000004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb89e6708000000004c8930ff1249bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000d00000049bea8946208000000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d89342449c7c61f4e00004e8d1cf5f9ffffff4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049bb208c6608000000004d895c24104d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdd8576608000000004d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8036308000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bdd0a36508000000004d896e1049c746080500000049bde09e6708000000004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee09e6708000000004c8930ff1249bda8946208000000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000d00000049bca8946208000000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892649c7c41f4e00004e8d1ce5f9ffffff4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d8974240849c704240d0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc009f6708000000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204d896e1849bd08a56508000000004d896e1049c746080500000049bd209f6708000000004d892e4c8bac24b0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be209f6708000000004c8930ff124c8bb424b0000000498b561048b8409f670800000000ff12488b94248800000048b868a0670800000000ff1248c7c015000000ff15e49800004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be00a16708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bd10a16708000000004d892e4c8bac24a0000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be10a16708000000004c8930ff1248ba3891620800000000488b0424ff15e79700004989c6488d642408415649be30a16708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648c7c001000000ff156a9700004989c6415648c7c001000000ff15509700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be50a16708000000004d89750849bea0016308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15af9600004989c6415648c7c001000000ff15959600004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be70a16708000000004d89750849bea0aa6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15f5940000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15cd9400004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049bca8946208000000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d1ce5f9ffffff4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650049c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fd84c3b5d107306ff5550ca00704d89df49c743f80400000049c743180100000049c74310030000004d89630849c703030000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f80300000049ba88a16708000000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89661849bc40996208000000004d8966104d896e0849bda8a16708000000004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8a16708000000004c8930ff1249be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15a9910000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15819100004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbc0a16708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bde0a16708000000004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee0a16708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bde0a16708000000004d896e1049c746080100000049c7060b000000415649bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d8965204c8b6424104d89651849bca8a16708000000004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b7424084d897424104c8b34244d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15518e00004989c541f6c501740f49be00a2670800000000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15dc8d00004989c641564c8b7424084983fe017d18488da4243001000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff159a8d00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d89750849be00a26708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd60a26708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60a26708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d8965204c8b6424104d89651849bca8a16708000000004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b34244d897424104c8b7424084d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15498b00004989c541f6c501740f49be80a2670800000000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15d48a00004989c641564c8b7424084983fe017d18488da4243001000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15928a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d89750849be80a26708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bde0a26708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee0a26708000000004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d8965204c8b6424104d89651849bca8a16708000000004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049be68cc6208000000004d897424104c8b7424084d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff153b8800004989c541f6c501740f49be00a3670800000000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15c68700004989c641564c8b7424084983fe017d18488da4243001000048b83060620800000000488b5d08ff2348c7c001000000488b5c2408ff15848700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec04a6608000000004d89750849be00a36708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d896620415c4d8966184d896e1049c746080500000049bd58a36708000000004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58a36708000000004c8930ff1249be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c40841f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff150c850000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15e48400004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb70a36708000000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdb8a36708000000004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e204c8b2c244d896e1849bdb8a36708000000004d896e1049c746080100000049c7060b00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec86e6708000000004c893048c7c303000000ff15a88200004989c64156488b0424ff15918200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049c745080100000049c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcd8a36708000000004d8966104d896e0849bdd8c86208000000004d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849be40996208000000004d89751049c745080100000049be18a46708000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d8966204d896e1849bc18a46708000000004d89661049c746080100000049c7060b00000041564c8bb424c0000000498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18a46708000000004c8930ff124d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d89751049bea8036308000000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38a46708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424084d89751049bea8036308000000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a46708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424104d89751049bea8036308000000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78a46708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424184d89751049bea8036308000000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90a46708000000004d892e415648b8b8a467080000000048c7c303000000ff15297f00004989c64156488b0424ff15127f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18a56708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424900000004d89660849bc38a56708000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc50a56708000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be88a56708000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8a56708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08a66708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40a66708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70a66708000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8a66708000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a76708000000004d892e415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da4243001000048b8d006620800000000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141566a016a016a01488b44242048c7c3010000004989e0ff159f7b0000488d6424105b488b4424084c8b4424184c8b0c24ff157d7b00004989c6488d6424104156ff3424f604240175544c8b34244d8b2e4c8b342441ff76084c8bb424d8000000498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba6488d6424084c8bb424c8000000498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f802000000415d4d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8a36708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424184d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60a76708000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c893048c7c303000000ff15a77900004989c64156488b0424ff15907900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060700000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24384d896c241049bda8036308000000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb40996208000000004d895c242049bbd8836608000000004d895c241849bb18846608000000004d895c24104d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff159f7700004989c64156488b0424ff15887700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424280100004d89750849be28fabc09000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d89662049bc009f6708000000004d8966184d896e1049c746080500000049bd98ae6708000000004d892e4c8bac24d0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be98ae6708000000004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424280100004d89750849bec03abd09000000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24204d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb40996208000000004d895d2049bb98f36208000000004d895d1849bbe0f36208000000004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049bb009f6708000000004d895c24104d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb40996208000000004d895e204d8966184d896e1049c746080500000049bdd8ae6708000000004d892e4c8bac24d0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed8ae6708000000004c8930ff12488b9424c00000004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e20415d4d896e1849bdf8ae6708000000004d896e1049c746080500000049bd70af6708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70af6708000000004c8930ff126a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a01488b8424b00100004889e3ff1539730000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424604c8b6424684c8b5c24704c8b5424784c8b8c24800000004c8b842488000000488bbc2490000000488bb42498000000488b9424a0000000488b8c24a8000000488b9c24b0000000488b8424b80000004d8daf68ffffff4c3b6d107306ff5550cacf5f4d89ef49c745f8120000004989858800000049899d8000000049894d78498955704989756849897d604d8945584d894d504d8955484d895d404d8965384d897530415e4d897528415e4d897520415e4d897518415e4d897510415e4d897508415e488da424900000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc40996208000000004d8966204c8b6424384d8966184d896e1049c746080500000049bd88af6708000000004d892e4c8bac24c8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88af6708000000004c8930ff1249bea8946208000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bef01e6508000000004d8975004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c893048c7c303000000ff158b7000004989c64156488b0424ff15747000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e104c8b6c24084d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff154f6f00004989c64156488b0424ff15386f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc68cc6208000000004d8966104d896e0849c706050000004156488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b6c24104d896e1849bd40026708000000004d896e1049c746080500000049bdb8186208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8186208000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b6c24104d896e1849bd40026708000000004d896e1049c746080500000049bde8186208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8186208000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b6c24104d896e1849bd40026708000000004d896e1049c746080500000049bda0186208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0186208000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b6c24084d896e1849bd40026708000000004d896e1049c746080500000049bd80206208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80206208000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b6c24084d896e1849bd40026708000000004d896e1049c746080500000049bdd0456708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0456708000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b2c244d896e1849bd40026708000000004d896e1049c746080500000049bd883a6708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be883a6708000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b2c244d896e1849bd40026708000000004d896e1049c746080500000049bda8c46408000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8c46408000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b2c244d896e1849bd40026708000000004d896e1049c746080500000049bd801a6208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be801a6208000000004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e20415d488d6424084d896e1849bd40026708000000004d896e1049c746080500000049bd501a6208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be501a6208000000004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b2c244d896e1849bd40026708000000004d896e1049c746080500000049bd403b6708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be403b6708000000004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e204c8b2c244d896e1849bd40026708000000004d896e1049c746080500000049bd583b6708000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be583b6708000000004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd40996208000000004d896e20415d488d6424084d896e1849bd40026708000000004d896e1049c746080500000049bd18196208000000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18196208000000004c8930ff1248b86068670800000000ff15556700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc86e6708000000004d8966084d892e415648b8a8af670800000000ff150c6700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc68cc6208000000004d8966084d892e415648b8c0af670800000000ff15c36600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc208c6608000000004d8966084d892e415648b8c07a670800000000ff157a6600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd8af6708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c8930ff15a96500004989c64156488b0424ff15926500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e1049bda8036308000000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b000000415648b820b0670800000000ff15376400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e415648b838b0670800000000ff15f46300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e415648b850b0670800000000ff15b06300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424084c8930ff15046300004989c64156488b0424ff15ed6200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d897010415e4d89700849c700070000004d8d77e04c3b75107306ff5550ca00014d89f749c746f8030000004c8bac24000100004d896e1049c746087704000049bd68b06708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424304d89751849bea8a16708000000004d89751049be90b06708000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdc8b06708000000004d896e0849bd58b16708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424384d89751849bea8a16708000000004d89751049be90b06708000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd78b16708000000004d896e0849bde0b16708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424404d89751849bea8a16708000000004d89751049be10a76708000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd00b26708000000004d896e0849bd68b26708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424484d89751849bea8a16708000000004d89751049be90b06708000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd88b26708000000004d896e0849bdf0b26708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424504d89751849bea8a16708000000004d89751049bec0576608000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd18b36708000000004d896e0849bd80b36708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424584d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bda0b36708000000004d896e0849bd08b46708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424604d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd28b46708000000004d896e0849bd90b46708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424684d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdb0b46708000000004d896e0849bd18b56708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424704d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd38b56708000000004d896e0849bda0b56708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8b7424784d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdb8b56708000000004d896e0849bd20b66708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424800000004d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd48b66708000000004d896e0849bdb0b66708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424880000004d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdd8b66708000000004d896e0849bd40b76708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424900000004d89751849bea8a16708000000004d89751049be50cc6208000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd68b76708000000004d896e0849bdd0b76708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424980000004d89751849bea8a16708000000004d89751049be90b06708000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bde8b76708000000004d896e0849bd50b86708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424a00000004d89751849bea8a16708000000004d89751049bec0576608000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd70b86708000000004d896e0849bdd8b86708000000004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be40996208000000004d8975204c8bb424a80000004d89751849bea8a16708000000004d89751049bec0576608000000004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdf8b86708000000004d896e0849bd60b96708000000004d892e4d8d67d04c3b65107306ff5550ca00414d89e749c74424f80500000049bd40996208000000004d896c24204c8bac24a80000004d896c241849bda8a16708000000004d896c241049bdc0576608000000004d896c240849c704240b0000004d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d89651049bc80b96708000000004d89650849bce8b96708000000004d8965004d8d5fd04c3b5d107306ff5550ca00614d89df49c743f80500000049bc40996208000000004d8963204c8ba424a80000004d89631849bca8a16708000000004d89631049bc10ba6708000000004d89630849c7030b0000004d8d67e04c3b65107306ff5550ca00694d89e749c74424f8030000004d895c241049bb48ba6708000000004d895c240849bbb0ba6708000000004d891c244d8d57d04c3b55107306ff5550ca00714d89d749c742f80500000049bb40996208000000004d895a204c8b9c24a80000004d895a1849bba8a16708000000004d895a1049bb10ba6708000000004d895a0849c7020b0000004d8d5fe04c3b5d107306ff5550ca00754d89df49c743f8030000004d89531049bad0ba6708000000004d89530849ba38bb6708000000004d89134d8d57e84c3b55107306ff5550ca00794d89d749c742f80200000049c74208010000004c8b8c24800000004d890a4d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f80500000048bf409962080000000049897920488bbc24a80000004989791848bfa8a1670800000000498979104d89510849c7010b0000004d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d894a1049b960bb6708000000004d894a0849b9c8bb6708000000004d890a4d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f80200000049c74108010000004d89014d8d47d04c3b45107306ff5550ca007e4d89c749c740f80500000048bf409962080000000049897820488bbc24a80000004989781848bfa8a1670800000000498978104d89480849c7000b0000004d8d4fe04c3b4d107306ff5550ca007d4d89cf49c741f8030000004d89411049b8f0bb6708000000004d89410849b858bc6708000000004d8901498d7fd0483b7d107306ff5550ca007e4989ff48c747f80500000049b840996208000000004c8947204c8b8424a80000004c89471849b8a8a16708000000004c89471049b850cc6208000000004c89470848c7070b0000004d8d47e04c3b45107306ff5550ca807e4d89c749c740f8030000004989781048bf78bc6708000000004989780848bfe0bc670800000000498938498d77d0483b75107306ff5550ca007f4989f748c746f80500000048bf409962080000000048897e20488bbc24a800000048897e1848bfa8a167080000000048897e1048bf50cc62080000000048897e0848c7060b000000498d7fe0483b7d107306ff5550ca407f4989ff48c747f8030000004889771048be08bd6708000000004889770848be70bd670800000000488937498d57d0483b55107306ff5550ca807f4989d748c742f80500000048be409962080000000048897220488bb424a80000004889721848bea8a16708000000004889721048be50cc6208000000004889720848c7020b000000498d77e0483b75107306ff5550ca847f4989f748c746f8030000004889561048baa0bd6708000000004889560848ba08be670800000000488916498d4fd0483b4d107306ff5550cac07f4989cf48c741f80500000048ba409962080000000048895120488b9424a80000004889511848baa8a16708000000004889511048ba50cc6208000000004889510848c7010b000000498d57e0483b55107306ff5550cac27f4989d748c742f80300000048894a1048b938be67080000000048894a0848b9a0be67080000000048890a498d5fd0483b5d107306ff5550cac47f4989df48c743f80500000048b9409962080000000048894b20488b8c24a800000048894b1848b9a8a167080000000048894b1048b9c05766080000000048894b0848c7030b000000498d4fe0483b4d107306ff5550cacc7f4989cf48c741f8030000004889591048bbc8be6708000000004889590848bb30bf670800000000488919498d5fe8483b5d107306ff5550cac67f4989df48c743f80200000048c743080100000048890b498d4fe8483b4d107306ff5550cacc7f4989cf48c741f80200000048895908488911498d57e8483b55107306ff5550cac27f4989d748c742f80200000048894a08488932498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848893e498d7fe8483b7d107306ff5550ca407f4989ff48c747f802000000488977084c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58bf6708000000004d892e4156f60424010f85050100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d8975004c8ba424d0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f1feffff488d64240848c7c015000000ff15fa4d00004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049beb8bf6708000000004d89752049be40996208000000004d89751849c745100100000049bed8086208000000004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc40996208000000004d8966184d896e1049bdd8c86208000000004d896e0849bdc8bf6708000000004d892e4c8bac24c0000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec8bf6708000000004c8930ff1248ba3891620800000000488b0424ff15fd4c00004989c6488d642408415649c7c5090000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74618000000004c8b342449c7061800000049bee0bf67080000000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449be00c067080000000048c7c111000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff152c4b0000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15044b00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb0a16208000000004d896b1049bd70996208000000004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd00c06708000000004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be00c06708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd00c06708000000004d896e1049c746080100000049c7060b000000415649c7c50b0000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74620000000004c8b342449c7061b00000049bee0bf67080000000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449bed06c67080000000048c7c117000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1550470000eb0048bac0be64080000000048c7c30100000049c7c001000000ff15284700004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb0a16208000000004d896b1049bd70996208000000004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bdd06c6708000000004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed06c6708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bdd06c6708000000004d896e1049c746080100000049c7060b000000415649c7c50b0000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74620000000004c8b342449c7061b00000049bee0bf67080000000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449be18c067080000000048c7c117000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be60636708000000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca87e6408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0aa6208000000004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1574430000eb0048bac0be64080000000048c7c30100000049c7c001000000ff154c4300004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb0a16208000000004d896b1049bd70996208000000004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd40996208000000004d896e1049c746080100000049bd18c06708000000004d892e41564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18c06708000000004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd40996208000000004d896e20415d4d896e1849bd18c06708000000004d896e1049c746080100000049c7060b00000041564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be208c6608000000004d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd08bf6408000000004d896e0849bd788d6608000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424184d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd38c06708000000004d896e0849bd70c06708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424200100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893048c7c303000000ff15763f00004989c64156488b0424ff155f3f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c241049bda8036308000000004d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd90c06708000000004d896e0849bdd0c06708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424204d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424284d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bde8c06708000000004d896e0849bd28c16708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424300100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78036308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24300100004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893048c7c303000000ff15193c00004989c64156488b0424ff15023c00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424304d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd40c16708000000004d896e0849bd90c16708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424380100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78036308000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24380100004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c893048c7c303000000ff15d93900004989c64156488b0424ff15c23900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424384d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0c16708000000004d896e0849bd00c26708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424404c893048c7c303000000ff151d3800004989c64156488b0424ff15063800004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424404d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd20c26708000000004d896e0849bd70c26708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424484d8975104c8bb424480100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd88c26708000000004d896e0849bd98c26708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424504d8975104c8bb424500100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb8c26708000000004d896e0849bdc8c26708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424584d8975104c8bb424580100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bde8c26708000000004d896e0849bdf8c26708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24604d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424600100004c893048c7c303000000ff15823500004989c64156488b0424ff156b3500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424504d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd18c36708000000004d896e0849bd50c36708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24684d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424680100004c893048c7c303000000ff153a3400004989c64156488b0424ff15233400004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424684d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd68c36708000000004d896e0849bdb0c36708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424704d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424704c893048c7c303000000ff15cd3200004989c64156488b0424ff15b63200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424704d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc8c36708000000004d896e0849bdd8c36708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24784d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15883100004989c64156488b0424ff15713100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424784d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf0c36708000000004d896e0849bd28c46708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424800000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424800000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd40c46708000000004d896e0849bd78c46708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8bac24880000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424880100004c893048c7c303000000ff15522f00004989c64156488b0424ff153b2f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424880000004c893048c7c303000000ff15012e00004989c64156488b0424ff15ea2d00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424880000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd90c46708000000004d896e0849bdd0c46708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424800000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8ba424900000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff153b2c00004989c64156488b0424ff15242c00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424900000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf0c46708000000004d896e0849bd30c56708000000004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8bac24980000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424980100004c893048c7c303000000ff15ed2a00004989c64156488b0424ff15d62a00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424880000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd48c56708000000004d896e0849bd88c56708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424a00000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bc98f36208000000004d89661849bce0f36208000000004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424a00000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda8c56708000000004d896e0849bdf0c56708000000004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8bb424a80000004d8975104c8bb424a80000004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd08c66708000000004d896e0849bd18c66708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424b00100004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24b00000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424b00000004c893048c7c303000000ff159e2700004989c64156488b0424ff15872700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424b00000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be30c66708000000004d89750849be68c66708000000004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8bb424a00000004d897424104c8bb424b00000004d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bc80c66708000000004d89660849bc90c66708000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424104d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2418498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78036308000000004d8975104c8bb424800000004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0c66708000000004d896e0849bde8c66708000000004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0576608000000004c8970084c8bb424880000004c893048c7c303000000ff154c2100004989c64156488b0424ff15352100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd00c76708000000004d896e0849bd606e6608000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424900000004c893048c7c303000000ff155b1f00004989c64156488b0424ff15441f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd40c86708000000004d896e0849bd58c96708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424584d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424900000004c893048c7c303000000ff156a1d00004989c64156488b0424ff15531d00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c96708000000004d896e0849bd08ca6708000000004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8bac24900000004d896c24104c8bac24980000004d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc28ca6708000000004d89650849bc68ca6708000000004d8965004d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004c8b6424184d8963104c8ba424980000004d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bb80ca6708000000004d895c240849bb50cb6708000000004d891c244d8d57e84c3b55107306ff5550ca00704d89d749c742f80200000049c74208010000004c8b5c24284d891a4d8d5fd04c3b5d107306ff5550ca00744d89df49c743f80500000049b940996208000000004d894b2049b998f36208000000004d894b1849b9e0f36208000000004d894b104d89530849c7030b0000004d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d895a104c8b9c24980000004d895a0849c702050000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049ba68cb6708000000004d89530849bab8cb6708000000004d89134d8d4fe04c3b4d107306ff5550ca00784d89cf49c741f80300000049ba68cc6208000000004d8951104c8b9424980000004d89510849c701050000004d8d57e04c3b55107306ff5550ca007a4d89d749c742f8030000004d894a1049b9d8cb6708000000004d894a0849b928cc6708000000004d890a4d8d47e04c3b45107306ff5550ca007c4d89c749c740f80300000049b968cc6208000000004d8948104c8b8c24980000004d89480849c700050000004d8d4fe04c3b4d107306ff5550ca007d4d89cf49c741f8030000004d89411049b848cc6708000000004d89410849b898cc6708000000004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24c0000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78036308000000004d8975104c8b7424704d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb8cc6708000000004d896e0849bde8c66708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15f41500004989c64156488b0424ff15dd1500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd08cd6708000000004d896e0849bd606e6608000000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24184d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb40996208000000004d895d2049bb98f36208000000004d895d1849bbe0f36208000000004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104c8b6c24784d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bca0cd6708000000004d89650849bcb8cb6708000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24b8000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78036308000000004d8975104c8b7424584d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf8cd6708000000004d896e0849bde8c66708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c893048c7c303000000ff15231100004989c64156488b0424ff150c1100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd48ce6708000000004d896e0849bd606e6608000000004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b6c24604d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc88d06708000000004d89650849bc50cb6708000000004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049c74308010000004c8b6424184d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049ba40996208000000004d8954242049ba98f36208000000004d8954241849bae0f36208000000004d895424104d895c240849c704240b0000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104c8b6424604d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bb58d16708000000004d895c240849bbb8cb6708000000004d891c244d8d57e04c3b55107306ff5550ca00704d89d749c742f8030000004c8b5c24484d895a104c8b5c24604d895a0849c702050000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049baa8d16708000000004d89530849ba00d66708000000004d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24a8000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78036308000000004d8975104c8b7424604d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd18d66708000000004d896e0849bde8c66708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424684c893048c7c303000000ff152c0b00004989c64156488b0424ff15150b00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd68d66708000000004d896e0849bd606e6608000000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24184d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb40996208000000004d895d2049bb98f36208000000004d895d1849bbe0f36208000000004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104c8b6c24684d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bcf8d66708000000004d89650849bcb8cb6708000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24a0000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78036308000000004d8975104c8b7424504d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd48d76708000000004d896e0849bde8c66708000000004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc40996208000000004d89662049bcd8836608000000004d89661849bc18846608000000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8576608000000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424584c893048c7c303000000ff155b0600004989c64156488b0424ff15440600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc208c6608000000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd98d76708000000004d896e0849bd606e6608000000004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b6c24584d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc20d96708000000004d89650849bc50cb6708000000004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049c74308010000004c8b6424184d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049ba40996208000000004d8954242049ba98f36208000000004d8954241849bae0f36208000000004d895424104d895c240849c704240b0000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104c8b6424584d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bbf0d96708000000004d895c240849bbb8cb6708000000004d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424084d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac2490000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424684d8d77e04c3b75107303ff55504d89f749c746f80300000049bd78036308000000004d896e104c8b2c244d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be40da6708000000004d89750849bee8c66708000000004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049be208c6608000000004d89742410415e4d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bc90da6708000000004d89660849bc606e6608000000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2440498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba40996208000000004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488da424c800000048c7c001000000c3f40000000000|@10438,1,@19779,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@12098,@12170,@12098,@12170,@12098,@12170,@10742,@11013,@11077,@10825,@10828,@10828,@10828,@11077,@10825,@10828,@10828,@10828,@10828,@11066,@10822,@11066,@10822,@14962,@11066,@10822,@11066,@10822,@15011,@13871,@11066,@10822,@11066,@10822,@12098,@12170,@15012,@13655,@15013,@15014,@13655,@15013,@15015,@13655,@15013,@12098,@12170,@12098,@12170,@15016,@13655,@15017,@13655,@10742,@11013,@11066,@10822,@9784,@9686,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@15018,@13871,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@10742,@11013,@11077,@10825,@15019,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11077,@10825,@15020,@15021,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@12098,@12170,@10742,@11013,@10742,@11013,@10742,@11013,@10742,@11013,@10742,@11013,@10742,@11013,@10742,@11013,@10742,@11013,@11066,@10822,@11066,@10822,@12098,@15022,@11908,@12098,@15023,@13655,@15024,@13655,@15025,@13655,@15026,@11908,@13572,@13755,@15027,@11908,@13572,@13572,@13663,@13663,@13663,@13663,@12098,@12098,@12098,@15028,@15029,@11066,@10822,@15028,@15029,@11066,@10822,@15028,@15029,@11066,@10822,@15030,@13655,@15013,@15028,@15029,@11066,@10822,@15028,@15029,@11066,@10822,@15031,@13655,@15013,@15028,@15029,@11066,@10822,@15032,@15033,@11066,@10822,@15032,@15033,@11066,@10822,@15032,@15033,@11066,@10822,@15034,@13655,@15013,@15032,@15033,@11066,@10822,@15032,@15033,@11066,@10822,@15035,@13655,@15013,@15032,@15033,@11066,@10822,@10742,@11013,@15036,@15036,@15036,@12098,@10742,@11013,@10742,@11013,@15036,@15036,@15036,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@11066,@10822,@11066,@10822,@15042,@13655,@13572,@15043,@13655,@13572,@10742,@11013,@10742,@11013,@15039,@11066,@10822,@15039,@11066,@10822,@15039,@11066,@10822,@15039,@11066,@10822,@10742,@11013,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15036,@15036,@15036,@11066,@10822,@11066,@10822,@10742,@11013,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@11066,@10822,@11066,@10822,@11066,@10822,@10742,@11013,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@15039,@11066,@10822,@11066,@10822,@10742,@11013,@15044,@15044,@15044,@15044,@15044,@15044,@15044,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@11066,@10822,@10742,@11013,@11066,@10822,@10458,@15048,@11066,@10822,@15054,@13655,@15013,@15055,@11066,@10822,@15059,@13655,@15013,@15055,@15060,@13655,@15013,@15055,@11066,@10822,@15061,@13655,@15013,@15055,@15062,@13655,@15013,@15055,@15063,@13655,@15013,@15055,@15064,@13655,@15013,@15055,@15065,@13655,@15013,@15066,@13655,@13572,@15067,@13655,@15013,@15068,@13655,@13572,@11066,@10822,@15028,@15029,@11066,@10822,@15032,@15033,@11066,@10822,@15069,@13655,@15013,@15070,@15071,@11066,@10822,@15072,@13655,@15013,@15070,@15071,@11066,@10822,@15073,@13655,@15013,@15070,@15071,@11066,@10822,@15074,@13655,@15013,@15070,@15071,@11066,@10822,@15075,@13655,@15013,@11066,@10822,@15076,@13655,@15013,@15039,@15077,@13655,@15013,@15036,@11066,@10822,@15078,@13655,@15013,@15028,@15029,@11066,@10822,@15079,@13655,@15013,@15028,@15029,@15080,@13655,@15013,@15036,@15081,@13655,@15013,@15036,@11066,@10822,@15082,@13655,@15013,@15032,@15033,@11066,@10822,@15083,@13655,@15013,@15032,@15033,@11066,@10822,@15084,@13655,@15013,@15032,@15033,@11066,@10822,@15085,@13655,@15013,@15032,@15033,@11066,@10822,@15086,@13655,@15013,@15039,@15087,@13655,@15013,@15036,@15088,@13655,@15013,@15089,@13655,@10742,@11013,@12098,@15090,@13655,@13883,@8879,@8875,@15036,@10742,@11013,@13877,@15091,@13655,@13874,@13877,@15091,@13655,@13874,@14927|67,0,@8855 79,0,@7738 102,0,@7518 114,0,@1123 124,0,@15144 143,0,@8856 155,0,@8858 165,0,@1171 289,0,@1900 349,0,@8858 359,0,@1263 581,0,@1126 595,0,@1505 613,0,@639 627,0,@1900 642,0,@8859 652,0,@1171 776,0,@1899 836,0,@8859 846,0,@1263 1068,0,@1126 1082,0,@1505 1100,0,@639 1114,0,@1899 1179,0,@8860 1193,0,@1126 1215,0,@123 1264,0,@1126 1282,0,@1484 1296,0,@8864 1349,0,@8864 1364,0,@1078 1492,0,@1126 1506,0,@8865 1532,0,@8866 1669,0,@1506 1713,0,@1507 1772,0,@1899 1831,0,@1900 1892,0,@8866 1923,0,@7518 1935,0,@1123 2014,0,@1125 2034,0,@8867 2051,0,@8869 2068,0,@8871 2179,0,@8873 2290,0,@8877 2302,0,@1098 2472,0,@1126 2487,0,@8881 2502,0,@1901 2613,0,@5372 2623,0,@1901 2724,0,@1126 2748,0,@1174 2762,0,@1901 2855,0,@8881 2899,0,@1901 2951,0,@1901 3069,0,@8924 3083,0,@8925 3135,0,@8926 3257,0,@8928 3356,0,@5100 3568,0,@1204 3621,0,@1126 3643,0,@1203 3682,0,@1126 3704,0,@8929 3740,0,@8930 3757,0,@8932 3819,0,@8934 3833,0,@1126 3855,0,@123 3904,0,@1126 3922,0,@1484 3936,0,@8935 3989,0,@8935 4004,0,@1078 4034,0,@1098 4139,0,@1098 4347,0,@8936 4361,0,@1171 4547,0,@105 4619,0,@731 4730,0,@7652 4920,0,@1126 4950,0,@8937 5002,0,@8937 5017,0,@1098 5122,0,@1098 5349,0,@105 5421,0,@731 5532,0,@7652 5622,0,@1505 5737,0,@1126 5767,0,@8938 5820,0,@8938 5877,0,@1170 5960,0,@105 6032,0,@731 6143,0,@7652 6436,0,@1505 6548,0,@1126 6578,0,@8939 6631,0,@8939 6830,0,@8940 6844,0,@8941 6960,0,@105 7032,0,@731 7143,0,@7652 7231,0,@8944 7510,0,@1126 7540,0,@8946 7593,0,@8946 7792,0,@8940 7806,0,@8947 7922,0,@105 7994,0,@731 8105,0,@7652 8193,0,@8944 8472,0,@1126 8502,0,@8948 8555,0,@8948 8754,0,@8940 8768,0,@8949 8884,0,@105 8956,0,@731 9067,0,@7652 9155,0,@8944 9434,0,@1126 9464,0,@8950 9517,0,@8950 9716,0,@8940 9730,0,@8951 9846,0,@105 9918,0,@731 10029,0,@7652 10117,0,@8944 10396,0,@1126 10426,0,@8952 10479,0,@8952 10616,0,@105 10688,0,@731 10799,0,@7652 10889,0,@8945 11004,0,@1126 11034,0,@8953 11087,0,@8953 11224,0,@105 11296,0,@731 11407,0,@7652 11497,0,@8945 11612,0,@1126 11642,0,@8954 11695,0,@8954 11719,0,@8955 11915,0,@8960 11929,0,@8961 12045,0,@105 12117,0,@731 12228,0,@7652 12364,0,@8945 12566,0,@1869 12678,0,@1126 12708,0,@8963 12761,0,@8963 12960,0,@8960 12974,0,@8964 13090,0,@105 13162,0,@731 13273,0,@7652 13409,0,@8945 13611,0,@1869 13723,0,@1126 13753,0,@8965 13806,0,@8965 13943,0,@105 14015,0,@731 14126,0,@7652 14216,0,@1869 14331,0,@1126 14361,0,@8966 14414,0,@8966 14471,0,@578 14554,0,@105 14626,0,@731 14737,0,@7652 14801,0,@8967 15068,0,@1126 15098,0,@8969 15151,0,@8969 15259,0,@8970 15305,0,@105 15377,0,@731 15488,0,@7652 15502,0,@8970 15628,0,@8945 15672,0,@8945 15947,0,@1126 15977,0,@8974 16030,0,@8974 16189,0,@8975 16203,0,@8976 16319,0,@105 16391,0,@731 16502,0,@7652 16590,0,@8983 16801,0,@1505 16913,0,@1126 16943,0,@8984 16996,0,@8984 17155,0,@8975 17169,0,@8985 17285,0,@105 17357,0,@731 17468,0,@7652 17556,0,@8983 17874,0,@1126 17904,0,@8986 17957,0,@8986 18116,0,@8975 18130,0,@8987 18246,0,@105 18318,0,@731 18429,0,@7652 18517,0,@8983 18728,0,@1869 18840,0,@1126 18870,0,@8988 18923,0,@8988 19082,0,@8975 19096,0,@8989 19212,0,@105 19284,0,@731 19395,0,@7652 19483,0,@8983 19694,0,@1869 19811,0,@1126 19841,0,@8990 19893,0,@8990 20011,0,@8940 20025,0,@8991 20079,0,@8992 20239,0,@8945 20351,0,@1126 20381,0,@8993 20433,0,@8993 20551,0,@8960 20565,0,@8994 20619,0,@8995 20779,0,@1869 20891,0,@1126 20921,0,@8996 20973,0,@8996 20988,0,@1098 21093,0,@1098 21198,0,@7637 21252,0,@8997 21382,0,@9079 21574,0,@105 21646,0,@731 21757,0,@7652 21817,0,@7637 21871,0,@9080 22001,0,@9115 22193,0,@105 22265,0,@731 22376,0,@7652 22436,0,@1098 22541,0,@1098 22646,0,@1098 22751,0,@1098 22856,0,@1098 23010,0,@9116 23096,0,@105 23171,0,@731 23282,0,@7652 23395,0,@9117 23481,0,@105 23556,0,@731 23667,0,@7652 23764,0,@1869 23817,0,@1868 23921,0,@1868 24072,0,@9118 24158,0,@105 24233,0,@731 24344,0,@7652 24536,0,@9119 24622,0,@105 24697,0,@731 24808,0,@7652 25152,0,@1868 25343,0,@9120 25429,0,@105 25504,0,@731 25615,0,@7652 25847,0,@9121 25933,0,@105 26008,0,@731 26119,0,@7652 26503,0,@1868 26733,0,@9122 26819,0,@105 26894,0,@731 27005,0,@7652 27428,0,@1868 27535,0,@1126 27570,0,@9123 27626,0,@9123 27725,0,@1126 27760,0,@9124 27816,0,@9124 27918,0,@1126 27953,0,@9079 28009,0,@9079 28111,0,@1126 28146,0,@9115 28202,0,@9115 28301,0,@1126 28336,0,@9125 28392,0,@9125 28491,0,@1126 28526,0,@9126 28582,0,@9126 28681,0,@1126 28716,0,@9127 28772,0,@9127 28871,0,@1126 28906,0,@9128 28962,0,@9128 29061,0,@1126 29101,0,@9129 29154,0,@9129 29183,0,@9130 29374,0,@1126 29388,0,@1932 29556,0,@1126 29570,0,@8012 29584,0,@8014 29679,0,@1868 29853,0,@9131 29936,0,@9132 29980,0,@9134 30025,0,@9136 30069,0,@9138 30114,0,@9140 30193,0,@1932 30349,0,@1126 30504,0,@9142 30518,0,@1126 30540,0,@123 30589,0,@1126 30607,0,@1484 30621,0,@9143 30674,0,@9143 30689,0,@1078 30719,0,@9144 30878,0,@7738 30973,0,@8855 31017,0,@8855 31179,0,@1505 31206,0,@9144 31365,0,@8855 31460,0,@8855 31504,0,@8855 31666,0,@8855 31693,0,@9144 31827,0,@9144 32036,0,@1868 32146,0,@1126 32176,0,@9146 32200,0,@9147 32212,0,@9149 32313,0,@1126 32348,0,@9150 32401,0,@9150 32416,0,@3271 32517,0,@1126 32552,0,@9151 32605,0,@9151 32620,0,@6183 32721,0,@1126 32756,0,@9152 32809,0,@9152 32824,0,@639 32925,0,@1126 32960,0,@9153 33013,0,@9153 33028,0,@1172 33129,0,@1126 33164,0,@9154 33217,0,@9154 33232,0,@6717 33333,0,@1126 33368,0,@9155 33421,0,@9155 33436,0,@6720 33537,0,@1126 33572,0,@9156 33625,0,@9156 33686,0,@9146 33751,0,@9157 33765,0,@1126 33787,0,@123 33836,0,@1126 33854,0,@1484 33868,0,@9158 33921,0,@9158 33936,0,@1078 33966,0,@9159 34125,0,@1505 34152,0,@9159 34311,0,@7738 34347,0,@9160 34359,0,@7690 34460,0,@1126 34495,0,@215 34548,0,@215 34563,0,@9162 34664,0,@1126 34699,0,@5158 34752,0,@5158 34767,0,@9163 34868,0,@1126 34903,0,@217 34956,0,@217 34971,0,@9164 35072,0,@1126 35107,0,@9165 35160,0,@9165 35175,0,@1823 35276,0,@1126 35310,0,@198 35363,0,@198 35378,0,@7677 35479,0,@1126 35513,0,@200 35566,0,@200 35581,0,@9149 35682,0,@1126 35716,0,@197 35769,0,@197 35784,0,@6183 35885,0,@1126 35919,0,@9166 35972,0,@9166 35987,0,@9167 36088,0,@1126 36125,0,@9168 36175,0,@9168 36240,0,@9169 36254,0,@1126 36276,0,@123 36325,0,@1126 36343,0,@1484 36357,0,@5190 36410,0,@5190 36425,0,@1078 36683,0,@1505 36984,0,@8968 37259,0,@1203 37274,0,@9170 37375,0,@1126 37410,0,@215 37463,0,@215 37478,0,@9171 37579,0,@1126 37614,0,@5158 37667,0,@5158 37682,0,@6634 37783,0,@1126 37818,0,@217 37871,0,@217 37886,0,@9172 37987,0,@1126 38022,0,@9165 38075,0,@9165 38090,0,@1165 38191,0,@1126 38226,0,@198 38279,0,@198 38294,0,@1778 38395,0,@1126 38430,0,@200 38483,0,@200 38498,0,@6619 38599,0,@1126 38634,0,@197 38687,0,@197 38702,0,@5462 38803,0,@1126 38838,0,@9173 38891,0,@9173 38906,0,@6621 39007,0,@1126 39042,0,@9174 39095,0,@9174 39110,0,@6631 39211,0,@1126 39246,0,@9175 39299,0,@9175 39314,0,@5753 39415,0,@1126 39450,0,@9176 39503,0,@9176 39518,0,@9177 39619,0,@1126 39654,0,@9178 39707,0,@9178 39722,0,@5751 39823,0,@1126 39857,0,@9179 39910,0,@9179 39925,0,@9180 40026,0,@1126 40060,0,@9181 40113,0,@9181 40128,0,@6628 40229,0,@1126 40266,0,@9182 40316,0,@9182 40381,0,@9183 40395,0,@1126 40417,0,@123 40466,0,@1126 40484,0,@1484 40498,0,@5199 40551,0,@5199 40566,0,@1078 40596,0,@8967 40755,0,@1505 40782,0,@8967 40941,0,@8945 41001,0,@8945 41122,0,@1126 41154,0,@9184 41202,0,@8945 41323,0,@1126 41355,0,@9185 41394,0,@8945 41524,0,@1126 41556,0,@9186 41580,0,@8932 41592,0,@9187 41693,0,@1126 41728,0,@215 41781,0,@215 41796,0,@9188 41897,0,@1126 41932,0,@5158 41985,0,@5158 42000,0,@9189 42101,0,@1126 42136,0,@217 42189,0,@217 42204,0,@9190 42305,0,@1126 42340,0,@9165 42393,0,@9165 42408,0,@8182 42509,0,@1126 42544,0,@198 42597,0,@198 42612,0,@9191 42713,0,@1126 42748,0,@200 42801,0,@200 42816,0,@9192 42917,0,@1126 42952,0,@197 43005,0,@197 43020,0,@9193 43121,0,@1126 43156,0,@9173 43209,0,@9173 43224,0,@9194 43325,0,@1126 43360,0,@9174 43413,0,@9174 43428,0,@9195 43529,0,@1126 43564,0,@9175 43617,0,@9175 43632,0,@9196 43733,0,@1126 43768,0,@9176 43821,0,@9176 43836,0,@9197 43937,0,@1126 43972,0,@9178 44025,0,@9178 44040,0,@9198 44141,0,@1126 44176,0,@9179 44229,0,@9179 44244,0,@9199 44345,0,@1126 44380,0,@9181 44433,0,@9181 44448,0,@9200 44549,0,@1126 44584,0,@9182 44637,0,@9182 44696,0,@9184 44755,0,@9185 44816,0,@9186 44881,0,@9201 44895,0,@1126 44917,0,@123 44966,0,@1126 44984,0,@1484 44998,0,@9202 45051,0,@9202 45066,0,@1078 45104,0,@8867 45116,0,@9203 45275,0,@1505 45302,0,@9187 45403,0,@1126 45435,0,@215 45487,0,@215 45502,0,@9203 45661,0,@1505 45688,0,@9188 45789,0,@1126 45821,0,@5158 45873,0,@5158 45888,0,@9203 46047,0,@1505 46074,0,@9189 46175,0,@1126 46207,0,@217 46259,0,@217 46274,0,@9203 46433,0,@1505 46460,0,@9190 46561,0,@1126 46593,0,@9165 46643,0,@9165 46708,0,@9206 46722,0,@1126 46744,0,@123 46793,0,@1126 46811,0,@1484 46825,0,@9207 46878,0,@9207 46893,0,@1078 46925,0,@8869 46987,0,@9208 47001,0,@1126 47023,0,@123 47072,0,@1126 47090,0,@1484 47104,0,@5198 47157,0,@5198 47172,0,@1078 47202,0,@7637 47256,0,@9209 47386,0,@9240 47446,0,@7637 47500,0,@9241 47630,0,@9246 47774,0,@1126 47788,0,@9247 47814,0,@9250 47912,0,@1126 47926,0,@9251 47952,0,@9253 47967,0,@9254 48126,0,@1505 48153,0,@9254 48312,0,@9249 48348,0,@8871 48404,0,@9250 48463,0,@9253 48478,0,@9256 48579,0,@1126 48614,0,@215 48667,0,@215 48682,0,@9257 48783,0,@1126 48818,0,@5158 48871,0,@5158 48886,0,@6231 48987,0,@1126 49022,0,@217 49075,0,@217 49090,0,@9258 49191,0,@1126 49226,0,@9165 49279,0,@9165 49294,0,@5750 49395,0,@1126 49430,0,@9259 49483,0,@9259 49498,0,@6178 49599,0,@1126 49633,0,@198 49686,0,@198 49701,0,@9260 49802,0,@1126 49836,0,@200 49889,0,@200 49904,0,@9261 50005,0,@1126 50039,0,@197 50092,0,@197 50107,0,@6180 50208,0,@1126 50245,0,@202 50297,0,@202 50410,0,@1126 50424,0,@9262 50450,0,@281 50502,0,@281 50615,0,@1126 50629,0,@9262 50655,0,@9263 50707,0,@9263 50820,0,@1126 50834,0,@9264 50860,0,@9265 50910,0,@9265 50975,0,@9266 50989,0,@1126 51011,0,@123 51060,0,@1126 51078,0,@1484 51092,0,@9267 51145,0,@9267 51160,0,@1078 51240,0,@9268 51254,0,@1126 51276,0,@123 51325,0,@1126 51343,0,@1484 51357,0,@9133 51410,0,@9133 51425,0,@1078 51455,0,@9269 51574,0,@9270 51623,0,@7306 51682,0,@5100 51894,0,@9271 51947,0,@1126 51969,0,@9272 52024,0,@9272 52084,0,@1869 52149,0,@1126 52167,0,@9273 52189,0,@9277 52302,0,@1126 52316,0,@9278 52342,0,@9280 52455,0,@1126 52469,0,@9278 52495,0,@9281 52608,0,@1126 52622,0,@9282 52648,0,@9283 52745,0,@9272 52804,0,@9277 52863,0,@9280 52922,0,@9281 52983,0,@9283 53048,0,@9284 53062,0,@1126 53084,0,@123 53133,0,@1126 53151,0,@1484 53165,0,@9285 53218,0,@9285 53233,0,@1078 53263,0,@1098 53392,0,@8968 53729,0,@8940 53743,0,@9286 53862,0,@105 53937,0,@731 54048,0,@7652 54192,0,@1126 54224,0,@9287 54263,0,@8968 54434,0,@8945 54564,0,@8940 54578,0,@9288 54712,0,@1126 54744,0,@9289 54783,0,@8968 55121,0,@8940 55135,0,@9290 55254,0,@105 55329,0,@731 55440,0,@7652 55584,0,@1126 55616,0,@9291 55655,0,@8968 55951,0,@8940 55965,0,@9292 56099,0,@1126 56131,0,@9293 56170,0,@8968 56341,0,@9249 56471,0,@8940 56485,0,@9294 56619,0,@1126 56651,0,@9296 56690,0,@8968 56861,0,@9249 56991,0,@8940 57005,0,@9297 57139,0,@1126 57171,0,@9298 57258,0,@8945 57459,0,@1869 57631,0,@8960 57645,0,@9299 57764,0,@105 57839,0,@731 57950,0,@7652 58094,0,@1126 58126,0,@9300 58165,0,@8967 58336,0,@1869 58466,0,@8960 58480,0,@9301 58614,0,@1126 58646,0,@9302 58733,0,@8945 58934,0,@1869 59106,0,@8960 59120,0,@9303 59239,0,@105 59314,0,@731 59425,0,@7652 59569,0,@1126 59601,0,@9304 59688,0,@8945 59889,0,@1869 60019,0,@8960 60033,0,@9305 60167,0,@1126 60199,0,@9306 60238,0,@9307 60412,0,@1869 60542,0,@8960 60556,0,@9309 60690,0,@1126 60722,0,@9310 60761,0,@9307 60935,0,@1869 61065,0,@8960 61079,0,@9311 61213,0,@1126 61245,0,@9312 61304,0,@9287 61363,0,@9289 61422,0,@9291 61481,0,@9293 61540,0,@9296 61599,0,@9298 61658,0,@9300 61717,0,@9302 61776,0,@9304 61835,0,@9306 61894,0,@9310 61955,0,@9312 61970,0,@5100 61980,0,@9313 62027,0,@5100 62037,0,@9332 62084,0,@5100 62094,0,@9340 62150,0,@9352 62171,0,@9357 62192,0,@9361 62213,0,@9365 62355,0,@1126 62369,0,@1505 62395,0,@9369 62448,0,@9369 62463,0,@7723 62473,0,@1383 62483,0,@1239 62504,0,@7723 62514,0,@8754 62524,0,@1123 62545,0,@7723 62555,0,@8754 62565,0,@7518 62586,0,@7723 62596,0,@8764 62606,0,@1201 62631,0,@9370 62685,0,@9379 62712,0,@9381 62766,0,@7755 62818,0,@1263 62881,0,@1262 62895,0,@9383 62918,0,@9384 63024,0,@9388 63169,0,@7838 63307,0,@9389 63352,0,@9391 63367,0,@7660 63421,0,@9387 63473,0,@1263 63491,0,@9393 63579,0,@7637 63685,0,@9394 63848,0,@9395 63908,0,@9396 64105,0,@9400 64119,0,@7287 64276,0,@9401 64290,0,@1262 64536,0,@5100 64620,0,@1098 64882,0,@9402 64937,0,@1126 64955,0,@9403 65043,0,@9403 65161,0,@9404 65175,0,@9405 65227,0,@9416 65349,0,@9270 65448,0,@5100 65660,0,@9417 65712,0,@1126 65734,0,@9418 65825,0,@9418 65845,0,@9419 65865,0,@9446 65885,0,@9472 65897,0,@1098 66226,0,@1505 66295,0,@1126 66313,0,@9172 66335,0,@216 66384,0,@216 66399,0,@1098 66728,0,@1505 66797,0,@1126 66815,0,@9493 66837,0,@9494 66886,0,@9494 66951,0,@9495 66965,0,@1126 66987,0,@123 67036,0,@1126 67054,0,@1484 67068,0,@9496 67121,0,@9496 67136,0,@1078 67224,0,@9497 67238,0,@1126 67260,0,@123 67309,0,@1126 67327,0,@1484 67341,0,@9498 67394,0,@9498 67409,0,@1078 67489,0,@9499 67503,0,@1126 67525,0,@123 67574,0,@1126 67592,0,@1484 67606,0,@9500 67659,0,@9500 67674,0,@1078 67754,0,@9501 67768,0,@1126 67790,0,@123 67839,0,@1126 67857,0,@1484 67871,0,@3187 67924,0,@3187 67939,0,@1078 68019,0,@9502 68033,0,@1126 68055,0,@123 68104,0,@1126 68122,0,@1484 68136,0,@9503 68189,0,@9503 68204,0,@1078 68284,0,@9504 68298,0,@1126 68320,0,@123 68369,0,@1126 68387,0,@1484 68401,0,@9505 68454,0,@9505 68469,0,@1078 68549,0,@9506 68563,0,@1126 68585,0,@123 68634,0,@1126 68652,0,@1484 68666,0,@4015 68719,0,@4015 68734,0,@1078 68814,0,@9507 68828,0,@1126 68850,0,@123 68899,0,@1126 68917,0,@1484 68931,0,@9508 68984,0,@9508 68999,0,@1078 69029,0,@9509 69148,0,@4662 69197,0,@1263 69326,0,@5100 69538,0,@9511 69591,0,@1126 69613,0,@9513 69709,0,@9513 69748,0,@1126 69768,0,@9513 69799,0,@9509 69918,0,@4662 69967,0,@1263 70096,0,@5100 70308,0,@9514 70361,0,@1126 70383,0,@9516 70479,0,@9516 70518,0,@1126 70538,0,@9516 70569,0,@9509 70688,0,@4662 70737,0,@1263 70866,0,@5100 71078,0,@9517 71131,0,@1126 71153,0,@9519 71249,0,@9519 71288,0,@1126 71308,0,@9519 71339,0,@9509 71458,0,@4662 71507,0,@1263 71636,0,@5100 71848,0,@9520 71901,0,@1126 71923,0,@8831 72019,0,@8831 72058,0,@1126 72078,0,@8831 72109,0,@9509 72228,0,@4662 72277,0,@1263 72406,0,@5100 72618,0,@9522 72671,0,@1126 72693,0,@9524 72789,0,@9524 72828,0,@1126 72848,0,@9524 72879,0,@9509 72998,0,@4662 73047,0,@1263 73176,0,@5100 73388,0,@9525 73441,0,@1126 73463,0,@9527 73559,0,@9527 73598,0,@1126 73618,0,@9527 73649,0,@9509 73768,0,@4662 73817,0,@1263 73946,0,@5100 74158,0,@9528 74211,0,@1126 74233,0,@9530 74329,0,@9530 74368,0,@1126 74388,0,@9530 74452,0,@9531 74502,0,@3342 74553,0,@9532 74603,0,@3929 74652,0,@9533 74700,0,@9534 75206,0,@9535 75224,0,@1484 75269,0,@1126 75291,0,@9537 75387,0,@9537 75473,0,@1868 75673,0,@1126 75687,0,@1736 75701,0,@1738 75758,0,@9538 75844,0,@1868 76044,0,@1126 76058,0,@1736 76072,0,@1738 76129,0,@9539 76215,0,@1868 76415,0,@1126 76429,0,@1736 76443,0,@1738 76500,0,@9540 76586,0,@1868 76786,0,@1126 76800,0,@1736 76814,0,@1738 76871,0,@9541 76957,0,@1868 77157,0,@1126 77171,0,@1736 77185,0,@1738 77242,0,@9542 77328,0,@1868 77529,0,@1126 77543,0,@1736 77557,0,@1738 77613,0,@9543 77879,0,@1126 77899,0,@9537 78059,0,@9544 78121,0,@9574 78135,0,@1126 78157,0,@123 78206,0,@1126 78224,0,@1484 78238,0,@9575 78294,0,@9575 78309,0,@1078 78339,0,@9509 78458,0,@4662 78507,0,@1263 78636,0,@5100 78848,0,@9576 78901,0,@1126 78923,0,@9578 79019,0,@9578 79058,0,@1126 79078,0,@9578 79109,0,@9509 79228,0,@4662 79277,0,@1263 79406,0,@5100 79618,0,@9579 79671,0,@1126 79693,0,@9581 79789,0,@9581 79828,0,@1126 79848,0,@9581 79879,0,@9509 79998,0,@4662 80047,0,@1263 80176,0,@5100 80388,0,@9582 80441,0,@1126 80463,0,@9584 80559,0,@9584 80598,0,@1126 80618,0,@9584 80649,0,@9509 80768,0,@4662 80817,0,@1263 80946,0,@5100 81158,0,@9585 81211,0,@1126 81233,0,@9587 81329,0,@9587 81368,0,@1126 81388,0,@9587 81419,0,@9509 81538,0,@4662 81587,0,@1263 81716,0,@5100 81928,0,@9588 81981,0,@1126 82003,0,@9590 82099,0,@9590 82138,0,@1126 82158,0,@9590 82189,0,@9509 82308,0,@4662 82357,0,@1263 82486,0,@5100 82698,0,@9591 82751,0,@1126 82773,0,@9593 82869,0,@9593 82908,0,@1126 82928,0,@9593 82959,0,@9509 83078,0,@4662 83127,0,@1263 83256,0,@5100 83468,0,@9594 83521,0,@1126 83543,0,@9596 83582,0,@1126 83604,0,@9596 83707,0,@9597 83751,0,@1868 83917,0,@9598 84043,0,@1868 84209,0,@9599 84296,0,@9597 84340,0,@1868 84506,0,@9600 84632,0,@1868 84798,0,@9601 84884,0,@1868 85050,0,@9602 85297,0,@9603 85426,0,@1505 85510,0,@1868 85676,0,@9604 85802,0,@1868 85968,0,@9605 86315,0,@105 86591,0,@9596 86676,0,@1126 86690,0,@1736 86704,0,@1738 86801,0,@1126 86816,0,@1736 86831,0,@1738 86886,0,@9606 87133,0,@9608 87151,0,@1484 87196,0,@1126 87218,0,@9610 87314,0,@9610 87353,0,@1126 87373,0,@9610 87554,0,@1868 87817,0,@9611 87831,0,@9629 87996,0,@1868 88260,0,@9630 88274,0,@9636 88442,0,@1505 88526,0,@1868 88790,0,@9637 88804,0,@9643 89149,0,@9644 89163,0,@9650 89328,0,@1868 89592,0,@9651 89606,0,@9656 89752,0,@9657 89766,0,@9660 89817,0,@9661 89831,0,@9662 89846,0,@9663 90005,0,@1869 90096,0,@1126 90110,0,@8012 90124,0,@8014 90176,0,@1869 90233,0,@9664 90247,0,@9668 90262,0,@9663 90421,0,@1869 90512,0,@1126 90526,0,@8012 90540,0,@8014 90592,0,@1869 90649,0,@9669 90663,0,@9671 90678,0,@9663 90837,0,@9672 90928,0,@1126 90942,0,@8012 90956,0,@8014 91008,0,@1869 91065,0,@9673 91079,0,@9676 91094,0,@9677 91253,0,@1869 91344,0,@1126 91358,0,@8012 91372,0,@8014 91425,0,@1869 91481,0,@9680 91495,0,@9682 92096,0,@1126 92203,0,@9683 92329,0,@9782 92443,0,@1098 92636,0,@1126 92654,0,@9959 92676,0,@7888 92728,0,@7888 92743,0,@1098 92877,0,@1868 92946,0,@1126 92964,0,@9960 92986,0,@9961 93038,0,@9961 93053,0,@1098 93187,0,@7737 93353,0,@8075 93422,0,@1126 93440,0,@9171 93462,0,@9962 93514,0,@9962 93529,0,@1098 93632,0,@1098 93765,0,@8075 93867,0,@7738 93915,0,@1869 93984,0,@1126 94002,0,@6634 94024,0,@9963 94076,0,@9963 94091,0,@1098 94194,0,@1098 94369,0,@9964 94438,0,@1126 94456,0,@6647 94478,0,@9965 94534,0,@9965 94561,0,@9966 94581,0,@9974 94643,0,@9978 94657,0,@1126 94679,0,@123 94728,0,@1126 94746,0,@1484 94760,0,@9979 94816,0,@9979 94831,0,@1078 94861,0,@9980 95058,0,@9982 95072,0,@1854 95229,0,@9983 95243,0,@1262 95438,0,@1263 95567,0,@5100 95650,0,@1098 95914,0,@9984 95969,0,@1126 95987,0,@9985 96083,0,@9985 96098,0,@9509 96217,0,@4662 96266,0,@1263 96395,0,@5100 96607,0,@9986 96660,0,@1126 96682,0,@9987 96778,0,@9987 96817,0,@1126 96837,0,@9987 96868,0,@1098 97039,0,@1126 97062,0,@9985 97242,0,@9988 97291,0,@105 97366,0,@731 97477,0,@7652 97491,0,@9988 97625,0,@1126 97657,0,@9991 97710,0,@9991 97791,0,@1126 97814,0,@9985 97994,0,@9992 98043,0,@105 98118,0,@731 98229,0,@7652 98243,0,@9992 98377,0,@1126 98409,0,@9995 98462,0,@9995 98543,0,@1126 98566,0,@9985 98620,0,@1505 98752,0,@9996 98801,0,@105 98876,0,@731 98987,0,@7652 99001,0,@9996 99135,0,@1126 99167,0,@9999 99220,0,@9999 99235,0,@9509 99354,0,@4662 99403,0,@1263 99536,0,@5100 99748,0,@10000 99801,0,@1126 99823,0,@10002 99862,0,@1126 99884,0,@10002 99981,0,@1126 99995,0,@1736 100009,0,@1738 100104,0,@9597 100313,0,@10003 100331,0,@1484 100375,0,@1126 100397,0,@10005 100438,0,@1126 100456,0,@10005 100568,0,@10005 100615,0,@1869 100668,0,@10006 100716,0,@1869 100769,0,@10007 100817,0,@1869 100870,0,@10008 100918,0,@1869 100971,0,@10009 100986,0,@10010 101149,0,@10013 101202,0,@10014 101287,0,@10015 101333,0,@10017 101412,0,@10019 101530,0,@10022 101647,0,@10024 101692,0,@10026 101736,0,@10028 101781,0,@10032 101834,0,@105 102116,0,@10002 102199,0,@1126 102213,0,@1736 102227,0,@1738 102322,0,@10034 102566,0,@1126 102580,0,@8012 102594,0,@8014 102657,0,@1869 102747,0,@1126 102762,0,@8012 102777,0,@8014 103082,0,@14702 103224,0,@1126 103238,0,@9964 103264,0,@10083 103320,0,@10083 103371,0,@14724 103504,0,@1126 103518,0,@1736 103532,0,@1738 103586,0,@9964 103696,0,@1126 103726,0,@10085 103782,0,@10085 103847,0,@1126 103867,0,@10086 103889,0,@10090 103933,0,@10090 104364,0,@1126 104399,0,@10091 104455,0,@10091 104470,0,@1098 104575,0,@5753 105115,0,@1505 105192,0,@1126 105215,0,@8749 105237,0,@198 105281,0,@198 105346,0,@1126 105369,0,@8749 105391,0,@200 105435,0,@200 105500,0,@1126 105523,0,@8749 105545,0,@197 105589,0,@197 105654,0,@1126 105677,0,@8749 105699,0,@281 105743,0,@281 105808,0,@1126 105831,0,@8749 105853,0,@9263 105897,0,@9263 105962,0,@1126 105984,0,@8749 106006,0,@9165 106050,0,@9165 106115,0,@1126 106137,0,@8749 106159,0,@5158 106203,0,@5158 106268,0,@1126 106290,0,@8749 106312,0,@217 106356,0,@217 106421,0,@1126 106446,0,@8749 106468,0,@215 106512,0,@215 106577,0,@1126 106599,0,@8749 106621,0,@9173 106665,0,@9173 106730,0,@1126 106752,0,@8749 106774,0,@9174 106818,0,@9174 106883,0,@1126 106908,0,@8749 106930,0,@202 106974,0,@202 106989,0,@9546 107035,0,@9597 107054,0,@10092 107100,0,@1505 107119,0,@10093 107165,0,@8075 107184,0,@9685 107230,0,@10094 107537,0,@1869 107597,0,@1869 107684,0,@1126 107698,0,@8012 107712,0,@8014 107739,0,@10096 107798,0,@10097 107858,0,@10098 108193,0,@10099 108235,0,@1126 108258,0,@9985 108272,0,@10100 108325,0,@10102 108339,0,@10107 108381,0,@1126 108404,0,@9985 108418,0,@10100 108471,0,@10108 108485,0,@10112 108527,0,@1126 108550,0,@9985 108564,0,@10031 108617,0,@10113 108631,0,@10117 108673,0,@1126 108696,0,@9985 108710,0,@10100 108763,0,@10118 108777,0,@10122 108819,0,@1126 108842,0,@9985 108856,0,@7737 108909,0,@10123 108923,0,@10127 108965,0,@1126 108988,0,@9985 109002,0,@1504 109055,0,@10128 109069,0,@10132 109111,0,@1126 109134,0,@9985 109148,0,@1504 109201,0,@10133 109215,0,@10137 109257,0,@1126 109280,0,@9985 109294,0,@1504 109347,0,@10138 109361,0,@10142 109403,0,@1126 109426,0,@9985 109440,0,@1504 109493,0,@10143 109507,0,@10147 109549,0,@1126 109572,0,@9985 109586,0,@1504 109639,0,@10148 109653,0,@10152 109695,0,@1126 109721,0,@9985 109735,0,@1504 109788,0,@10153 109802,0,@10157 109844,0,@1126 109870,0,@9985 109884,0,@1504 109937,0,@10158 109951,0,@10162 109993,0,@1126 110019,0,@9985 110033,0,@1504 110086,0,@10163 110100,0,@10167 110142,0,@1126 110168,0,@9985 110182,0,@10100 110235,0,@10168 110249,0,@10172 110291,0,@1126 110317,0,@9985 110331,0,@7737 110384,0,@10173 110398,0,@10177 110440,0,@1126 110466,0,@9985 110480,0,@7737 110533,0,@10178 110547,0,@10182 110588,0,@1126 110616,0,@9985 110631,0,@7737 110685,0,@10183 110699,0,@10187 110740,0,@1126 110766,0,@9985 110780,0,@10188 110834,0,@10190 110849,0,@10194 110890,0,@1126 110916,0,@9985 110930,0,@10188 110982,0,@10195 110996,0,@10199 111082,0,@1126 111108,0,@9985 111164,0,@10200 111178,0,@10204 111256,0,@1126 111282,0,@9985 111338,0,@10205 111352,0,@10209 111392,0,@1126 111418,0,@9985 111432,0,@1504 111484,0,@10210 111498,0,@10214 111538,0,@1126 111564,0,@9985 111578,0,@1504 111630,0,@10215 111644,0,@10219 111684,0,@1126 111710,0,@9985 111724,0,@1504 111776,0,@10220 111790,0,@10224 111830,0,@1126 111856,0,@9985 111870,0,@1504 111922,0,@10225 111936,0,@10229 111976,0,@1126 112002,0,@9985 112016,0,@7737 112068,0,@10230 112082,0,@10234 113104,0,@10235 113287,0,@1126 113445,0,@10238 113459,0,@1126 113481,0,@123 113530,0,@1126 113548,0,@1484 113562,0,@10239 113618,0,@10239 113633,0,@1078 113738,0,@10240 113772,0,@10241 113815,0,@9509 113934,0,@4662 113983,0,@1263 114112,0,@5100 114222,0,@1189 114236,0,@1128 114427,0,@1126 114449,0,@10241 114545,0,@10241 114584,0,@1126 114604,0,@10241 114710,0,@10240 114744,0,@9584 114787,0,@9509 114906,0,@4662 114955,0,@1263 115084,0,@5100 115194,0,@1189 115208,0,@1128 115399,0,@1126 115421,0,@9584 115517,0,@9584 115556,0,@1126 115576,0,@9584 115682,0,@10240 115716,0,@10242 115759,0,@9509 115878,0,@4662 115927,0,@1263 116056,0,@5100 116166,0,@1189 116180,0,@1128 116371,0,@1126 116393,0,@10242 116489,0,@10242 116528,0,@1126 116548,0,@10242 116603,0,@8075 116665,0,@5103 116679,0,@8087 116775,0,@10243 116789,0,@10245 116871,0,@1126 116885,0,@1736 116899,0,@1738 117207,0,@1869 117304,0,@10246 117318,0,@10248 117401,0,@1126 117415,0,@8012 117429,0,@8014 117533,0,@10249 117547,0,@10251 117629,0,@1126 117643,0,@1736 117657,0,@1738 117797,0,@1868 118093,0,@10252 118107,0,@10254 118189,0,@1126 118203,0,@1736 118217,0,@1738 118357,0,@1868 118653,0,@10255 118667,0,@10257 118749,0,@1126 118763,0,@1736 118777,0,@1738 119081,0,@10258 119095,0,@10260 119194,0,@10261 119208,0,@10262 119307,0,@10263 119321,0,@10264 119420,0,@10265 119434,0,@10266 119732,0,@10267 119746,0,@10269 120044,0,@10270 120058,0,@10272 120393,0,@10273 120407,0,@10274 120702,0,@10275 120716,0,@10277 120802,0,@1126 120816,0,@1736 120830,0,@1738 120937,0,@10278 120951,0,@10280 121238,0,@1126 121252,0,@1736 121266,0,@1738 121576,0,@10281 121590,0,@10283 121676,0,@1126 121690,0,@1736 121704,0,@1738 122014,0,@10284 122028,0,@10286 122316,0,@1126 122330,0,@1736 122344,0,@1738 122451,0,@10287 122465,0,@10289 122551,0,@1126 122565,0,@1736 122579,0,@1738 122686,0,@10290 122700,0,@10292 122802,0,@10293 122816,0,@10294 123162,0,@10295 123176,0,@10297 123283,0,@10298 123297,0,@10299 124299,0,@1126 124418,0,@1868 124483,0,@10300 124497,0,@10302 124536,0,@7737 124710,0,@8075 124767,0,@10303 124781,0,@7888 124864,0,@1126 124878,0,@8012 124892,0,@8014 124987,0,@7738 125191,0,@8075 125248,0,@10310 125262,0,@10318 125345,0,@1126 125359,0,@8012 125373,0,@8014 125468,0,@7738 125672,0,@8075 125729,0,@10319 125743,0,@10324 125849,0,@10325 125863,0,@10327 125965,0,@10328 125980,0,@10333 126064,0,@1126 126078,0,@1736 126092,0,@1738 126198,0,@10334 126212,0,@10336 126252,0,@1505 126316,0,@10337 126330,0,@10339 126370,0,@1505 126434,0,@10340 126448,0,@10342 126964,0,@1126 127083,0,@1868 127145,0,@10343 127159,0,@10302 127242,0,@1126 127256,0,@8012 127270,0,@8014 127365,0,@7738 127566,0,@8075 127623,0,@10345 127637,0,@7888 127723,0,@1126 127737,0,@1736 127751,0,@1738 127859,0,@10350 127873,0,@10336 128181,0,@1126 128300,0,@1868 128362,0,@10352 128376,0,@10302 128459,0,@1126 128473,0,@8012 128487,0,@8014 128582,0,@7738 128783,0,@8075 128840,0,@10354 128854,0,@7888 128954,0,@10369 128968,0,@10333 129053,0,@1126 129068,0,@1736 129083,0,@1738 129191,0,@10374 129206,0,@10336 129303,0,@10376 129317,0,@10400 129692,0,@1126 129811,0,@1868 129873,0,@10401 129887,0,@10302 129970,0,@1126 129984,0,@8012 129998,0,@8014 130093,0,@7738 130294,0,@8075 130351,0,@10403 130365,0,@7888 130451,0,@1126 130465,0,@1736 130479,0,@1738 130587,0,@10408 130601,0,@10336 130909,0,@1126 131028,0,@1868 131090,0,@10410 131104,0,@10302 131187,0,@1126 131201,0,@8012 131215,0,@8014 131310,0,@7738 131511,0,@8075 131568,0,@10412 131582,0,@7888 131682,0,@10425 131696,0,@10333 131781,0,@1126 131796,0,@1736 131811,0,@1738 131919,0,@10430 131934,0,@10336 132281,0,@1126 132400,0,@1868 132460,0,@10432 132474,0,@10302 132516,0,@8075 132577,0,@10434 132591,0,@7888 132858,0,@1126 14554:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19372|13,0,@8861 14555:D3,24|483b65187305ff5558cd0148b8201a670800000000c3f400|@8893,1,@19374|13,0,@8892 14556:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@19373| 14557:D3,24|483b65187305ff5558cd0148b8601a670800000000c3f400|@8897,1,@19376|13,0,@8895 14558:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@8896,1,@19375|13,0,@1138 14559:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@8899,1,@19377| 14560:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@8900,1,@19378| 14561:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@8927,1,@19379|13,0,@1138 14562:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19380|13,0,@8861 14563:D4,48|483b65187305ff5558cd0148baf02767080000000049c7c00100000048c7c303000000ff251f000000f4000000000000|@9078,1,@19390,@14564|13,0,@8999 14564:D12,2160|483b65187306ff5558ca0d0152505341504c8b742418498b5618488b442410ff124989c641564c8b742420498b5610ff124883f805750949c7c603000000eb204883f803750949c7c601000000eb114883f8010f852506000049c7c6050000004983fe050f85db000000488b4424104883c0027115488d64242848b8d006620800000000488b5d08ff234883e801486bc0047115488d64242848b8d006620800000000488b5d08ff234883c00149c7c52100000048d1f849d1fd489949f7fd4c8d2455010000004983fc01750949c7c401000000eb394983fc017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c4207115488d64242848b8d006620800000000488b5d08ff234983fc01750949c7c521010000eb2549c7c5410100004d2bec7115488d64242848b8d006620800000000488b5d08ff234983c501eb164983fe03750949c7c561010000eb0749c7c5210100004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d89631049bcd0a36508000000004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049ba28286708000000004d895424084d891c2441544d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bcf01e6508000000004d89651049c745080900000049c74500090000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc88286708000000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd0286708000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc10296708000000004d89650041554983fe0575774c8b6424184d89e54983fc07750c49bd3029670800000000eb434d89ed4d89ec4983fd05750c49bd4829670800000000eb2b4d89e44d89e54983fc03750c49bda029670800000000eb134d89ed4983fd01750f49bde829670800000000e9f0000000488d64243048b8702a670800000000488b5d08ff234983fe0375744c8b6424184d89e54983fc07750c49bd502b670800000000eb434d89ed4d89ec4983fd05750c49bd482c670800000000eb2b4d89e44d89e54983fc03750c49bd782c670800000000eb134d89ed4983fd01750c49bda82c670800000000eb76488d64243048b8702a670800000000488b5d08ff234c8b6424184d89e54983fc07750c49bdc02c670800000000eb474d89ed4d89ec4983fd05750c49bda02d670800000000eb2f4d89e44d89e54983fc03750c49bde82d670800000000eb174d89ed4983fd010f850f02000049bd182e67080000000041554983fe0575224c8b6c24204983ed047115488d64243848b8d006620800000000488b5d08ff23eb204c8b6c24204983ed0a7115488d64243848b8d006620800000000488b5d08ff234983fd017e02eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064f0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc302e6708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd82e6708000000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be002f6708000000004c89334883fb01750c48bb302f670800000000eb1348b8302f670800000000ff153e0300004889c34883fb01750c48bb902f670800000000eb1348b8902f670800000000ff15110300004889c34883fb0175035beb12488b0424ff15f30200004889c3488d6424084883fb0175035beb12488b0424ff15d00200004889c3488d6424084883fb01750c48bb1030670800000000eb1348b81030670800000000ff159e0200004889c34883fb017504415eeb12488b0424ff157f0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e960010000488d64243048b8702a670800000000488b5d08ff23488d64242848bae85c62080000000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be6830670800000000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb683067080000000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90306708000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff234983fd01756d4c89f3488b4424184c8b442408ff15ae0000004889c34c8b7424204d8b4e08488b042449c7c003000000ff15890000004989c6488d64241049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbf4883c418c34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e963fffffff400ffffffffffffff01|@9074,1,@19381,@12474,@12731,@10649,@14566,@14567,@14568,@14569,@14570,@14565|124,0,@105 155,0,@105 257,0,@105 305,0,@105 430,0,@6634 479,0,@9001 572,0,@5753 674,0,@9004 721,0,@9006 766,0,@9008 802,0,@9009 826,0,@9010 850,0,@9013 871,0,@9016 891,0,@9021 927,0,@9025 951,0,@9034 975,0,@9036 996,0,@9038 1013,0,@9021 1043,0,@9039 1067,0,@9047 1091,0,@9050 1116,0,@9052 1150,0,@105 1184,0,@105 1280,0,@9053 1329,0,@9059 1373,0,@9060 1392,0,@9061 1404,0,@9061 1429,0,@9064 1441,0,@9064 1520,0,@9069 1532,0,@9069 1648,0,@9021 1669,0,@707 1713,0,@9072 1850,0,@9072 1928,0,@9073 1946,0,@832 1960,0,@15140 1979,0,@117 14565:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19387| 14566:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19382| 14567:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19383| 14568:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19384| 14569:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19385| 14570:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19386| 14571:D3,40|49bb6005b703000000004d8b1b4989e5488b65304881ecb000000041ffd34c89ecc3f40000000000|@9076,1,@19388|2,0,@49 14572:D3,72|49bb8005b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c241ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@9077,1,@19389|2,0,@50 14573:D4,48|483b65187305ff5558cd0148bae03167080000000049c7c00100000048c7c303000000ff251f000000f4000000000000|@9078,1,@19394,@14574|13,0,@9082 14574:D8,1888|483b65187306ff5558ca0d0152505341504c8b742418498b5618488b442410ff124989c641564c8b742420498b5610ff124883f805750949c7c603000000eb204883f803750949c7c601000000eb114883f8010f851005000049c7c6050000004983fe050f85c0000000488b4424104883e801486bc0047115488d64242848b8d006620800000000488b5d08ff234883c00149c7c52100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd01750949c7c501000000eb394983fd017d0949c7c403000000eb0749c7c4010000004983fc017502eb1b4983c5207115488d64242848b8d006620800000000488b5d08ff234983fd01750949c7c321010000eb2549c7c3410100004d2bdd7115488d64242848b8d006620800000000488b5d08ff234983c301eb164983fe03750949c7c361010000eb0749c7c3210100004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004c8b24244d896508488d64240849c74500010000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c241049bdd0a36508000000004d896c240849c704243f0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004d896b1849bdf01e6508000000004d896b1049c743080900000049c703090000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd88286708000000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849bb10296708000000004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd40286708000000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89650041554c8b6c24104d89ec4983fd0975334983fe05750c48b80832670800000000eb1c4983fe03750c48b81833670800000000eb0a48b85033670800000000e9cb0000004d89e44d89e54983fc0775334983fe05750c48b84834670800000000eb1c4983fe03750c48b81833670800000000eb0a48b86034670800000000e98c0000004d89ed4d89ec4983fd0575304983fe05750c48b8e832670800000000eb1c4983fe03750c48b81833670800000000eb0a48b8a834670800000000eb504d89e44d89e54983fc0375304983fe05750c48b80033670800000000eb1c4983fe03750c48b8d834670800000000eb0a48b8f034670800000000eb144d89ed4983fd010f857301000048c7c0010000004983fe0575224c8b6c24104983ed047115488d64242848b8d006620800000000488b5d08ff23eb204c8b6c24104983ed0a7115488d64242848b8d006620800000000488b5d08ff234983fd017e02eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7064f0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdd82f6708000000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bec02f6708000000004c89334883fb0175054889c3eb09ff15a30200004889c34883fb017504415eeb12488b0424ff15840200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e960010000488d64242848b80835670800000000488b5d08ff23488d64242848bae85c62080000000048c7c303000000ff15030200004989c54d8b75004e8d2475010000004983fc01750f49be6830670800000000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157f0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb683067080000000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90306708000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff234983fd01756d4c89f3488b4424184c8b442408ff15b30000004889c34c8b7424204d8b4e08488b042449c7c001000000ff158e0000004989c6488d64241049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbf4883c418c34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e963fffffff4000000000000ffffffffffffff01|@9114,1,@19391,@12474,@12731,@10649,@14576,@14575|128,0,@105 230,0,@105 278,0,@105 403,0,@6634 496,0,@5753 595,0,@9004 639,0,@9008 684,0,@9002 754,0,@9083 772,0,@9093 784,0,@9095 817,0,@9104 835,0,@9093 847,0,@9105 880,0,@9091 898,0,@9093 910,0,@9108 940,0,@9092 958,0,@9110 970,0,@9111 1024,0,@105 1058,0,@105 1197,0,@9067 1241,0,@9066 1371,0,@9112 1392,0,@707 1436,0,@9072 1573,0,@9072 1651,0,@9073 1669,0,@832 1683,0,@15140 1702,0,@117 14575:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19393| 14576:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19392| 14577:D4,48|483b65187305ff5558cd0148baf02767080000000049c7c00100000048c7c301000000ff251f000000f4000000000000|@9078,1,@19395,@14564|13,0,@8999 14578:D4,48|483b65187305ff5558cd0148bae03167080000000049c7c00100000048c7c301000000ff251f000000f4000000000000|@9078,1,@19396,@14574|13,0,@9082 14579:D4,48|483b65187305ff5558cd0148baf02767080000000049c7c00100000048c7c305000000ff251f000000f4000000000000|@9078,1,@19397,@14564|13,0,@8999 14580:D4,48|483b65187305ff5558cd0148bae03167080000000049c7c00100000048c7c305000000ff251f000000f4000000000000|@9078,1,@19398,@14574|13,0,@9082 14581:D4,48|483b65187305ff5558cd0148baf02767080000000049c7c00100000048c7c307000000ff251f000000f4000000000000|@9078,1,@19399,@14564|13,0,@8999 14582:D4,48|483b65187305ff5558cd0148bae03167080000000049c7c00100000048c7c307000000ff251f000000f4000000000000|@9078,1,@19400,@14574|13,0,@9082 14583:D4,48|483b65187305ff5558cd0148bae03167080000000049c7c00100000048c7c309000000ff251f000000f4000000000000|@9078,1,@19401,@14574|13,0,@9082 14584:D4,48|483b65187305ff5558cd0148baf02767080000000049c7c00100000048c7c307000000ff251f000000f4000000000000|@9078,1,@19402,@14564|13,0,@8999 14585:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19403|13,0,@8861 14586:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19404|13,0,@8861 14587:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19405|13,0,@8861 14588:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19406|13,0,@8861 14589:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19407|13,0,@8861 14590:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19408|13,0,@8861 14591:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19409|13,0,@8861 14592:D4,40|483b65187305ff5558cd0148ba003f67080000000048c7c301000000ff251e000000f40000000000|@9239,1,@19415,@14593|13,0,@9211 14593:D13,1576|483b65187305ff5558cd0d5250534c8b742410498b5618488b442408ff124989c641564c8b742418498b5610ff124883f805750949c7c503000000eb204883f803750949c7c501000000eb114883f8010f85e003000049c7c5050000004983fd05750949c7c231010000eb164983fd03750949c7c261010000eb0749c7c22101000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1b48b8f85462080000000041554152ff15be050000415a415d4889c3f6c30174164989de4983ee014d6bf60170094c89f34883c301eb1848c7c00300000041554152ff1583050000415a415d4889c348c7c00300000041554152ff1563050000415a415d4989c64d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049bcd0a36508000000004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d89621849bcf01e6508000000004d89621049c742080900000049c702090000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc88286708000000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849ba10296708000000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc40286708000000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544983fd05750c49bc283f670800000000eb1c4983fd03750c49bc2040670800000000eb0a49bc204067080000000041544983fd050f858f0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be88406708000000004d89750849c74500570000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca8406708000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be00416708000000004c8930eb0a48b82841670800000000ff15d90200004889c34883fb01750c48bb902f670800000000eb1348b8902f670800000000ff15ac0200004889c34883fb0175035beb12488b0424ff158e0200004889c3488d6424084883fb017504415eeb12488b0424ff156a0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e94b010000488d64242048bae85c62080000000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be6830670800000000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb683067080000000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90306708000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff234983fd0175694c89f3488b4424104c8b442408ff15ae0000004889c34c8b7424184d8b4e08488b042449c7c001000000ff15890000004989c6488d64242049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbfc34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e967fffffff40000000000ffffffffffffff01|@9238,1,@19410,@12474,@12731,@10649,@14595,@14596,@14597,@14594,@12720,@12218,@10599|184,0,@651 367,0,@6634 460,0,@5753 561,0,@9004 607,0,@9008 652,0,@9002 710,0,@9212 728,0,@9220 740,0,@9220 793,0,@9223 842,0,@9224 890,0,@9227 905,0,@9228 930,0,@9064 942,0,@9064 1085,0,@707 1129,0,@9072 1266,0,@9072 1344,0,@9073 1362,0,@832 1376,0,@15140 1395,0,@117 14594:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b81842670800000000c3f4000000|@1032,1,@19414|75,0,@9236 14595:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19411| 14596:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19412| 14597:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19413| 14598:D4,40|483b65187305ff5558cd0148ba284367080000000048c7c301000000ff251e000000f40000000000|@9245,1,@19421,@14599|13,0,@9243 14599:D13,1576|483b65187305ff5558cd0d5250534c8b742410498b5618488b442408ff124989c641564c8b742418498b5610ff124883f805750949c7c503000000eb204883f803750949c7c501000000eb114883f8010f85e003000049c7c5050000004983fd05750949c7c231010000eb164983fd03750949c7c261010000eb0749c7c22101000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1b48b8f85462080000000041554152ff15be050000415a415d4889c3f6c30174164989de4983ee014d6bf60170094c89f34883c301eb1848c7c00300000041554152ff1583050000415a415d4889c348c7c00300000041554152ff1563050000415a415d4989c64d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049bcd0a36508000000004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d89621849bcf01e6508000000004d89621049c742080900000049c702090000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc88286708000000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849ba10296708000000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc40286708000000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544983fd05750c49bc0033670800000000eb1c4983fd03750c49bcd834670800000000eb0a49bcf03467080000000041544983fd050f858f0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be88406708000000004d89750849c74500570000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca8406708000000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be00416708000000004c8930eb0a48b82841670800000000ff15d90200004889c34883fb01750c48bb902f670800000000eb1348b8902f670800000000ff15ac0200004889c34883fb0175035beb12488b0424ff158e0200004889c3488d6424084883fb017504415eeb12488b0424ff156a0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e94b010000488d64242048bae85c62080000000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be6830670800000000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb683067080000000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90306708000000004c8968184c89701049be306d6208000000004c89700849be0803110a000000004c8930488b5d08ff2348b8f807620800000000488b5d08ff234983fd0175694c89f3488b4424104c8b442408ff15ae0000004889c34c8b7424184d8b4e08488b042449c7c001000000ff15890000004989c6488d64242049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbfc34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e967fffffff40000000000ffffffffffffff01|@9244,1,@19416,@12474,@12731,@10649,@14601,@14602,@14603,@14600,@12720,@12218,@10599|184,0,@651 367,0,@6634 460,0,@5753 561,0,@9004 607,0,@9008 652,0,@9002 710,0,@9092 728,0,@9110 740,0,@9111 793,0,@9223 842,0,@9224 890,0,@9227 905,0,@9228 930,0,@9064 942,0,@9064 1085,0,@707 1129,0,@9072 1266,0,@9072 1344,0,@9073 1362,0,@832 1376,0,@15140 1395,0,@117 14600:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b81842670800000000c3f4000000|@1032,1,@19420|75,0,@9236 14601:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19417| 14602:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19418| 14603:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19419| 14604:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19422|13,0,@8861 14605:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19423|13,0,@8861 14606:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@8927,1,@19424|13,0,@1138 14607:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19425|13,0,@8861 14608:D4,432|483b65187305ff5558cd014c8b304a8d1c75010000004d8d47e04c3b45107305ff5550cd094d89c749c740f803000000498958104989400849beb89dbc09000000004d89304989c148c7c001000000ff15730100004989c541f6c50175104d8b650049c7c6010000004d89ebeb0b48b8d808620800000000c341f6c30175314d8b4b084d89f24983c202711048b8d006620800000000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc94983fe010f8c9d0000004983fe03751049be30096208000000004b8b44a6fcc34c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f807620800000000488b5d08ff2348b86808620800000000488b5d08ff2341f6c50175304d8b65004d8b5d0849d1ec4d89f249d1ea468824104d89f44983c4024d89dd4d89e6483b65187306ff5558ca0160ebca8060ffbfc3f40000000000ffffffffffffff01|@9330,1,@19429,@14610|58,0,@14609 112,0,@123 142,0,@105 194,0,@126 329,0,@117 345,0,@120 14609:D3,216|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34983fc017d05e99c0000004c8b6a084d89ee4d8b6d004e8d2c6d010000004d3be57c0949c7c503000000eb0749c7c5010000004983fd03746e4d89e54983c51049d1ed4f0fb6342e4e8d2c75010000004983c402711048b8d006620800000000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8a838620800000000488b5d08ff23f400|@9315,1,@19426|119,0,@105 200,0,@502 14610:D5,632|483b65187306ff5558ca09035341504151483b442410750d488d64241848c7c001000000c35048baf84b670800000000488b0424488b5c2410ff15590200004989c641f6c6010f85b70100004d8b2e4d8b75004c3b35360200007502eb404d8b264e8d2465010000004983fc010f853701000049bcd808620800000000498d7608498d7c240848c7c100000000483bc9f3a6740a488d642408e9110100004d8b6d084c3b6c2418750c49c7c601000000e9ba0000004983fd017d0a488d642420e9d50000004c8b7424084d8b264e8d2465010000004d3bec7c0949c7c403000000eb0749c7c4010000004983fc030f84a10000004d89ec4983c41049d1ec4d89f64f0fb634264e8d3475010000004d89eb4983c3027115488d64242048b8d006620800000000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264983fe01750e488d64240849c7c601000000eb7e4c892c24483b65187303ff5558e991feffff488d64242048b8a838620800000000488b5d08ff23488d6424084d8b65084d0fb676084e8d3475010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0c488d64240849c7c60100000041f6c601754d4d8b3641ff36498b4608488b5c24184c8b4424104c8b4c2408e8cdfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241848b8f84c670800000000488b5d08ff23f4|@9331,1,@19430,@123,@14611|40,0,@9316 117,0,@123 286,0,@105 412,0,@502 617,0,@9326 14611:D4,2632|483b65187305ff5558cd0d525053488b1424488b442408ff124989c641f6c6010f851a0600004d8b364d8b2e41ff76084983fd41730a488d642420e9f80500004981fdfd0000000f87e60500004981fdb90000000f857d050000488b542408488b0424ff124989c641f6c6010f85580500004d8b364d8b2e4981fdeb0000000f859e000000488d6424084d8b460848c7c00100000048c7c3090000004c8b0c24ff15ba0900004989c6488d64240841f6c6017562488d6424084d8b364d8b2e4d8b66084c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c34981fdbd0000000f85ff000000488d642408498b46085aff124989c641f6c6010f85d9000000488d6424084d8b364d8b2e4d8b66084981fd810000000f8cb00000004981fdbf0000000f8f9c0000004981ed800000007115488d64240848b8d006620800000000488b5d08ff234983fd017d07488d642408eb614981fdff0100007f534c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b82812620800000000488b5d08ff23488d642408eb05488d64240848c7c001000000c3488d64241048c7c001000000c34983fd457554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0076208000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdb90000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0126208000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fde50000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd104c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdcd0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd284c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fded0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd404c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fddd0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd584c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fde90000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd704c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdc50000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd884c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdc30000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda04c6708000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d8b76084983fd13720d4983fd1b7707488d642408eb384983fd41742d4983fd61721a4983fd65770d6a016a07ff742410e9c6010000488d642420eb05488d64242048c7c001000000c3488d642408ff34244156e9d0000000488d64242048c7c001000000c34c8b7424184d8b76084f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d64242048c7c001000000c3488d6424084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bdd8086208000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488b542410488b0424ff124989c641f6c60175314d8b2e4d8b75004d8b6d084983fe1372084983fe1b7702eb094983fe41740358eb104c892c24483b65187303ff5558ebbb58488b1424ff124989c6488d64240841f6c601756c488d6424184d8b2e4d8b75004d8b6d084981feb9000000740848c7c001000000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8086208000000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c34c8b7424084983fe010f85ac0000004c8b6c24104d89ee4981fdff0100007e0e488d64243049c7c601000000eb734d89f64d89f54983fe017d07488d642438eb6a4d89ed4d89ee4981fdff0100007f564d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c428e9c1010000488d64243848b82812620800000000488b5d08ff23488b542420488b0424ff124989c641f6c6010f85d40000004d8b2e4d8b75004d8b5d084983fe610f82ae0000004983fe730f8f9d0000004c8b6424084983ec027115488d64243848b8d006620800000000488b5d08ff234c8b6c24104983ed014d6bed0a7115488d64243848b8d006620800000000488b5d08ff234983c5014983ee014d03ee7115488d64243848b8d006620800000000488b5d08ff234983ed607115488d64243848b8d006620800000000488b5d08ff234c891c244c896424084c896c2410483b65187303ff5558e971feffff488d642430eb05488d64243049c7c601000000e9c00000004c8b6c24104d89ee4981fdff0100007e0a488d642430e99e0000004c8b6c24084983fd010f8f8a0000004d89f64d89f54983fe017d07488d642438eb674d89ed4d89ee4981fdff0100007f534d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c428eb21488d64243848b82812620800000000488b5d08ff23488d64243049c7c60100000041f6c601755d4d8b364d8b2e4d8b66084c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f4000000|@9324,1,@19427,@14612|386,0,@105 512,0,@137 607,0,@116 700,0,@141 793,0,@9317 886,0,@9318 979,0,@9319 1072,0,@9320 1165,0,@9321 1258,0,@9322 1351,0,@9323 1644,0,@123 1846,0,@123 2074,0,@137 2161,0,@105 2197,0,@105 2231,0,@105 2258,0,@105 2490,0,@137 14612:D3,1192|483b65187306ff5558ca09035053415041514c8b7424104983fe010f85ab000000488d6424084c8b7424104d89f54981feff0100007e0d488d64241848c7c001000000c34d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b82812620800000000488b5d08ff23488b1424488b442408ff124989c641f6c6010f85fe0200004d8b2e4d8b75004d8b45084983fe610f82960000004983fe730f878c000000488b5c24104883eb027115488d64242048b8d006620800000000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d006620800000000488b5d08ff234883c0014983ee014903c67115488d64242048b8d006620800000000488b5d08ff234883e8607115488d64242048b8d006620800000000488b5d08ff2341594883c418e971feffff4981fec30000000f82b70000004981fecd0000000f87aa000000488b5c24104883eb027115488d64242048b8d006620800000000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d006620800000000488b5d08ff234883c0014983ee014903c67115488d64242048b8d006620800000000488b5d08ff234881e8c20000007115488d64242048b8d006620800000000488b5d08ff234883c0147115488d64242048b8d006620800000000488b5d08ff2341594883c418e9adfdffff4981fe830000000f82be0000004981fe8d0000000f87aa000000488b5c24104883eb027115488d64242048b8d006620800000000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d006620800000000488b5d08ff234883c0014983ee014903c67115488d64242048b8d006620800000000488b5d08ff234881e8820000007115488d64242048b8d006620800000000488b5d08ff234883c0147115488d64242048b8d006620800000000488b5d08ff2341594883c418e9e9fcffff488d642408eb05488d6424084c8b7424084983feff7c0a488d642418e9a20000004c8b7424104d89f54981feff0100000f8f880000004d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b82812620800000000488b5d08ff23488d64241848c7c001000000c3488d6424084c8b7424084983feff7c0a488d642418e9a20000004c8b7424104d89f54981feff0100000f8f880000004d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b82812620800000000488b5d08ff23488d64241848c7c001000000c3f400|@9325,1,@19428|190,0,@137 277,0,@105 313,0,@105 347,0,@105 374,0,@105 443,0,@105 479,0,@105 513,0,@105 543,0,@105 570,0,@105 639,0,@105 675,0,@105 709,0,@105 739,0,@105 766,0,@105 967,0,@137 1163,0,@137 14613:D6,864|483b65187305ff5558cd014c8b304d89f54e8d3475010000004983fe070f8cf70000004d89ee4e8d2c6d010000004983fd05731048b82086620800000000488b5d08ff234e8d3475010000004983fe0575054989c5eb5b49c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c74500020000004c0fb67008458875084c0fb6700945887509418065ffbf4c3b2dcf020000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe05753249be6883620800000000498d7508498d7e0848c7c102000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037505e9250100004c8b304d89f54e8d3475010000004983fe090f8cf70000004d89ee4e8d2c6d010000004983fd07731048b82086620800000000488b5d08ff234e8d3475010000004983fe0775054989c5eb6449c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c74500030000004c0fb67008458875084c0fb67009458875094c0fb6700a4588750a418065ffbf4c3b2daf010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe07753249be384e670800000000498d7508498d7e0848c7c103000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe03740949c7c003000000eb0749c7c0050000004c8b304e8d347501000000498d5fe0483b5d107306ff5550ca01414989df48c743f8030000004c8973104889430849be50b4bc09000000004c893348ba481267080000000048c7c001000000ff15e00000004989c641f6c60175644d8b2e4d8b75004d8b650841f6c60174434d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1748b8f012670800000000488b5d08ff2349c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6017504498b06c348b8504e670800000000488b5d08ff23f4000000000000|@9339,1,@19432,@14537,@9334,@977|54,0,@994 216,0,@977 325,0,@994 496,0,@9334 630,0,@14614 643,0,@8834 759,0,@8837 843,0,@9335 14614:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@8833,1,@19431| 14615:D6,464|483b65187305ff5558cd014c8b284d89ee4e8d2c6d010000004983fd057e534e8d3475010000004983fe057f1048b8a838620800000000488b5d08ff234c0fb6700a4e8d3475010000004981fef1000000750949c7c603000000eb0749c7c6010000004983fe03750949c7c005000000eb0749c7c0030000004c8b304e8d347501000000498d5fe0483b5d107306ff5550ca01414989df48c743f8030000004c8973104889430849be08b7bc09000000004c893348c7c001000000ff15370100004989c641f6c6010f85ab0000004d8b2e4d8b750041ff75084c89f048bb784f6708000000004156ff1502010000415e4989c54983fd017e15488d64240848b8884f670800000000488b5d08ff2341f6c6017402eb174c89f0ff15c90000004989c64d8b364e8d3475010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6017504498b06c348b80850670800000000488b5d08ff23f40000|@9349,1,@19434,@12530,@12224,@14617|47,0,@502 169,0,@14616 222,0,@9342 256,0,@9343 447,0,@9346 14616:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@8833,1,@19433| 14617:D21,4048|483b65187306ff5558ca0901505341504c8b34244d89f54983fe05750949c7c621000000eb2e4d89ed4d89ee4983fd03750949c7c615000000eb194d89f64983fe07750949c7c611000000eb0749c7c6050000004156488b542410488b442418ff124989c641f6c6010f857a0200004d8b2e4d8b75004983fe610f85fc01000041ff7508488b542418488b0424ff124989c641f6c6010f85d40100004d8b2e4d8b750041ff75084981feef0000000f85160100004c8b6c24184d89ee4983fd050f85c7000000488b542420488b0424ff124989c641f6c6010f859e0000004d8b364d8b2e4d8b76084981fdf10000007507488d642408eb4d4981fdb1000000743f4c8b7424184983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff15470f0000488d642408e9920e00006a016a01ff742410e9750c0000488d6424084c8b6c24104983fd0575214d89f048c7c00100000048c7c3010000004c8b4c2418ff15fc0e0000e93f0c00006a016a014156e9240a0000488d64240848c7c001000000e9110a00004d89f64983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff15ad0e0000488d642408e9dc0900006a016a01ff742410e9bf0700004981fef10000007502eb104981feb10000007407488d642408eb504c8b6c24184d89ee4983fd05753d4d89f64983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff153f0e0000488d642408e9610700006a016a01ff742410e944050000488d6424084c8b7424104983fe05752348c7c00100000048c7c3010000004c8b4424204c8b4c2418ff15f20d0000e90c0500006a016a01ff742430e9ef02000048c7c001000000e988020000498b45084983fe13720d4983fe1b7707488d642408eb454983fe41743a4c8b7424084983fe057525488d6424104c8b4424084159488d64240848c7c30100000048c7c001000000ff257f0d00006a016a01ff742428eb23488d642408488b5c24084158488d642410e917fdffff488d64242048c7c001000000c3488b542428488b0424ff124989c641f6c6010f858a0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442418010f84ea0000004c8b7424184d89f54983c6607115488d64243848b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c241841544153ff15920c0000415b415c4c89e34883eb607115488d64243848b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15490c0000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64243848b80855620800000000488b5d08ff234c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64243848c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64243848c7c001000000c34883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c420c3488d642428c3488b542430488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442420010f84ea0000004c8b7424204d89f54983c6607115488d64244048b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15190a0000415b415c4c89e34883eb607115488d64244048b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15d0090000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244048b80855620800000000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000e990fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff15f4070000415b415c4c89e34883eb607115488d64244848b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15ab070000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80855620800000000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9e6fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff15cf050000415b415c4c89e34883eb607115488d64244848b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff1586050000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80855620800000000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9d1fbffffebf9488b542430488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442420010f84ea0000004c8b7424204d89f54983c6607115488d64244048b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15a8030000415b415c4c89e34883eb607115488d64244048b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff155f030000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244048b80855620800000000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000e9e9fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d006620800000000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff1583010000415b415c4c89e34883eb607115488d64244848b8d006620800000000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff153a010000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80855620800000000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9e6fdfffff40000000000|@9350,1,@19435,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@10599,@12218,@14618,@14618,@14618,@14618,@14618,@14618|834,0,@105 962,0,@105 1054,0,@652 1451,0,@105 1579,0,@105 1671,0,@652 1984,0,@105 2112,0,@105 2204,0,@652 2517,0,@105 2645,0,@105 2737,0,@652 3052,0,@105 3180,0,@105 3272,0,@652 3585,0,@105 3713,0,@105 3805,0,@652 14618:D9,840|483b65187306ff5558ca0903505341504151488b1424488b442408ff124989c641f6c6010f85a80200004d8b2e4d8b75004d8b45084983fe610f8c950000004983fe730f8f8b000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff150d0300004158415e4983ee607115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15c302000041584889c3415948c7c0030000004883c418e92cffffff4981fe830000000f8cb60000004981fe8d0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15580200004158415e4981ee820000007115488d64242048b8d006620800000000488b5d08ff234983c6147115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15f001000041584889c3415948c7c0030000004883c418e969feffff4981fec30000000f8cbd0000004981fecd0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15850100004158415e4981eec20000007115488d64242048b8d006620800000000488b5d08ff234983c6147115488d64242048b8d006620800000000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff151d01000041584889c3415948c7c0030000004883c418e9a6fdffff488d642408eb05488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3f400000000|@9351,1,@19436,@10599,@12218,@10599,@12218,@10599,@12218|140,0,@105 308,0,@105 335,0,@105 503,0,@105 530,0,@105 14619:D3,24|483b65187305ff5558cd0148b8c056670800000000c3f400|@9399,1,@19438|13,0,@9397 14620:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@9398,1,@19437|13,0,@1138 14621:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@8927,1,@19439|13,0,@1138 14622:D3,24|483b65187305ff5558cd0148b8285b670800000000c3f400|@8893,1,@19441|13,0,@9433 14623:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@19440| 14624:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@8899,1,@19442| 14625:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@8900,1,@19443| 14626:D3,24|483b65187305ff5558cd0148b8105e670800000000c3f400|@8893,1,@19445|13,0,@9459 14627:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@19444| 14628:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@8899,1,@19446| 14629:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@8900,1,@19447| 14630:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@1136,1,@19448| 14631:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19449|13,0,@8861 14632:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19450|13,0,@8861 14633:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19451|13,0,@8861 14634:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19452|13,0,@8861 14635:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19453|13,0,@8861 14636:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19454|13,0,@8861 14637:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19455|13,0,@8861 14638:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19456|13,0,@8861 14639:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@9510,1,@19457|13,0,@1138 14640:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19458|13,0,@8861 14641:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38d2bc09000000004c8930c3f400000000|@9628,1,@19468|47,0,@14642 14642:D4,328|483b65187305ff5558cd054989c641ff36498b460841ff761041ff76184d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdb0d3bc09000000004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bed0ddbc09000000004d893048bb0873670800000000ff15d80000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b24244c896020488d6424084c8968184c89701048c74008050000004c8b34244c8930488d642408c3f4000000000000|@9627,1,@19467,@10774|65,0,@14643 109,0,@14647 122,0,@9626 14643:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@9619,1,@19460,@14644| 14644:D8,1344|483b65187306ff5558ca0903504d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004c8b2c244d896e0849bdf0d9bc09000000004d892e4889d84c89c34d89f0ff152c0500004989c64983fe010f85dc0400004c8b34244d8b6e084d8b5d004d89dc4983fb030f852502000041ff75104d89f641ff761048c7c001000000ff15e60400004989c6415648c7c001000000ff15cc0400004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd607e6408000000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb0716708000000004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8b6d084d8b5d004d89dc4983fb057515488d64241848b8a8d2620800000000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24084d895d104d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304883c408c34983fc010f852502000041ff75084d89f641ff761048c7c001000000ff15a70200004989c6415648c7c001000000ff158d0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd607e6408000000004d896e0849bda0aa6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb0716708000000004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8b6d084d8b5d004d89dc4983fb057515488d64241848b8a8d2620800000000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24084d895d104d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304883c408c34d8b65084d8b5d104d89f64d8b6e10488d6424084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed8c86208000000004c8930c3488d642408498b06c3f400|@9620,1,@19461,@11909,@11908,@11909,@11908,@14646|50,0,@14645 237,0,@4660 251,0,@1262 330,0,@9617 459,0,@1545 796,0,@4660 810,0,@1262 889,0,@9617 1018,0,@1545 1321,0,@1484 14645:D3,464|483b65187305ff5558cd054c8b204c8b68084d8b34244983fe0b0f85a30100004d8b7424084d8b6424104d8b5424084d89d34d8b124983fa0375564c8b4a084d89ca4d8b49084d8b094983f903750949c7c103000000eb0749c7c1010000004983f903752c4d8b63084d89d34d8b5b084d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc03756ceb724d89da4d8b1b4983fb0175514c8b4a084d89cb4d8b49084d8b094983f901750949c7c103000000eb0749c7c1010000004983f90375274d89d44d8b6424184d8b5b084d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03740848c7c001000000c34d8b66084d8b1c244983fb030f859e0000004d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8c070670800000000488b5d08ff2348c7c001000000c3f400000000|@9616,1,@19459|437,0,@9612 14646:D3,448|483b65187306ff5558ca0901534150a8010f8594010000f6442408010f8582010000ff30ff70084c8b6c24184d8b75004d89ed41ff7508488b542418498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124989c64983fe010f850b0100004c8b7424104d8b364c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e949000000909090e957000000909090e965000000909090e973000000909090e985000000909090e993000000909090e9a1000000909090488b4424085b488d64241041584883c408e921ffffff488b4424085b488d64241041584883c408e90bffffff488b4424085b488d64241041584883c408e9f5feffff488b4424085b488d64241041584883c408e9dffeffff488d64240858488b5c24104883c40841584883c408e9c5feffff488b4424085b488d64241041584883c408e9affeffff488b4424085b488d64241041584883c408e999feffff488b4424085b488d64241041584883c408e983feffff488d6424284d8b36498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d64241048c7c001000000c3f400000000000000|@9621,1,@19462| 14647:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8887267080000000049b9c87267080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@9625,1,@19465,@10770|26,0,@9622 36,0,@9624 14648:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19463| 14649:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19464| 14650:D3,16|483b65187305ff5558cd01c3f4000000|@9625,1,@19466| 14651:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be80dfbc09000000004c8930c3f400000000|@9635,1,@19475|47,0,@14652 14652:D4,328|483b65187305ff5558cd054989c641ff36498b460841ff761041ff76184d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdf8e0bc09000000004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bea8e1bc09000000004d893048bbc073670800000000ff15d80000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b24244c896020488d6424084c8968184c89701048c74008010000004c8b34244c8930488d642408c3f4000000000000|@9634,1,@19474,@10774|65,0,@14653 109,0,@14654 122,0,@9633 14653:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@9619,1,@19469,@14644| 14654:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8a07367080000000049b9b07367080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@9625,1,@19472,@10770|26,0,@9631 36,0,@9632 14655:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19470| 14656:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19471| 14657:D3,16|483b65187305ff5558cd01c3f4000000|@9625,1,@19473| 14658:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be58e3bc09000000004c8930c3f400000000|@9642,1,@19482|47,0,@14659 14659:D4,368|483b65187305ff5558cd054989c641ff36498b460841ff761041ff761841ff762041ff76284d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdf8e4bc09000000004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bea8e5bc09000000004d893048bb8074670800000000ff15f80000004989c44d8d77e04c3b75107306ff5550ca00104d89f749c746f80300000049c74610010000004c8b2c244d896e08488d64240849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24084d895e084c8b5c24104d891e498d47c0483b45107306ff5550ca00704989c748c740f80700000048c740300100000048c74028010000004c8b1c244c895820488d6424184c8960184c8968104c8970084c8b34244c8930488d642408c3f400|@9641,1,@19481,@10774|73,0,@14660 117,0,@14661 130,0,@9640 14660:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@9619,1,@19476,@14644| 14661:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8607467080000000049b9707467080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@9625,1,@19479,@10770|26,0,@9638 36,0,@9639 14662:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19477| 14663:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19478| 14664:D3,16|483b65187305ff5558cd01c3f4000000|@9625,1,@19480| 14665:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be58e7bc09000000004c8930c3f400000000|@9649,1,@19489|47,0,@14666 14666:D4,312|483b65187305ff5558cd054989c6498b0641ff76084d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdc0e8bc09000000004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849be70e9bc09000000004d893048bb4875670800000000ff15d00000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c740280100000048c74020010000004c8968184c89701048c740080500000049bed8086208000000004c8930c3f40000|@9648,1,@19488,@10774|57,0,@14667 101,0,@14668 114,0,@9647 297,0,@123 14667:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@9619,1,@19483,@14644| 14668:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8287567080000000049b9387567080000000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@9625,1,@19486,@10770|26,0,@9645 36,0,@9646 14669:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19484| 14670:D3,16|483b65187305ff5558cd01c3f4000000|@9623,1,@19485| 14671:D3,16|483b65187305ff5558cd01c3f4000000|@9625,1,@19487| 14672:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be20ebbc09000000004c8930c3f400000000|@9655,1,@19493|47,0,@14673 14673:D3,536|483b65187305ff5558cd054989d0ff30488b78084c8b60104c8b70184c8b1f4c8b57084c8b4f184c8b6f20488b5728498d7fe8483b7d107306ff5550ca047f4989ff48c747f8020000004d8b40084c89470849b860edbc09000000004c89074d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89680849bd38eebc09000000004d89284d8b2b4983fd030f85b50000004d8b6b084d8b5b184d8b6d00498b33488b5ef848c1e30848c1eb074883cb014883fb01750c48bf48c2620800000000eb584889df4889f94c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca4e774d89df48d1ef49897bf841c643ff404c89df48d1e948c7c001000000f348ab4889d94c89df48d1e9f348a5418063ffbf4c89df4d8d5fe04c3b5d107306ff5550ca84774d89df49c743f80300000049897b104d896b0849c70301000000eb004d8d6fc84c3b6d107306ff5550ca045f4d89ef49c745f806000000498955284d8945204d894d1849c74510010000004d8955084d895d004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049c74310010000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c70603000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c8970084c8b34244c8930488d642408c3f400000000000000|@9654,1,@19492|84,0,@14674 132,0,@14675 195,0,@1447 14674:D4,168|483b65187305ff5558cd054d8d77d04c3b75107305ff5550cd054d89f749c746f80500000049c74620010000004989461849bdb09f6208000000004d896e1049c746080100000049c70601000000498d47e0483b45107306ff5550ca04404989c748c740f80300000049bd00766708000000004c8968104c89700849bed8c86208000000004c89304c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff251d000000f400000000|@9653,1,@19490,@14644|51,0,@1172 107,0,@9652 125,0,@1484 14675:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@19491,@10764| 14676:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0eebc09000000004c8930c3f400000000|@9659,1,@19495|47,0,@14677 14677:D4,160|483b65187305ff5558cd05ff304c8b3424498b46184c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff15880000004989c24c8b34244d8b2e4d89f64d8b66084d89f64d8b5e10488d6424084d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@9658,1,@19494,@14644| 14678:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd50f0bc09000000004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@9667,1,@19498|51,0,@14679 14679:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9665,1,@19496,@14680| 14680:D4,568|483b65187305ff5558cd094889da4c8b753841564c8b2c244d89ee41ff75284d89f64d89f541ff76304d89ed4d89ee41ff75384d89f641ff7640ff75084c8d3517000000415648896508ff124883c408415e4c897508e947010000488b65084883c408415e4c8975084c8b7424184c8b6424204d89e54d897424284c8b7424104d89ed4d89ec4d8975304c8b7424084d89e44d89e54d897424384c8b34244d89ed4d8975404c8b681841f6c50175634d8b75004d8b5d084d8b4d104d8b65184d8b55204d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d8965084d8975004d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85c80000004d8b364d8b16498b7e084d8b4e10498b76184d8b46204c8b304c8b68084c8b60104d8d5fd04c3b5d107306ff5550cac0774d89df49c743f8050000004989732049897b184d8943104d894b084d8913498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930ff15ae0000004c8b7424184c8b6424204d89e54d897424284c8b7424104d89ed4d89ec4d8975304c8b7424084d89e44d89e54d897424384c8b34244d89ed4d897540488d64242848c7c001000000c3488d6424284c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbf0346208000000004c8958184c8960104c8968084c8930488b5d08ff23f40000|@9666,1,@19497,@10516|536,0,@480 14681:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd90f3bc09000000004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@9670,1,@19500|51,0,@14682 14682:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9665,1,@19499,@14680| 14683:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd68f4bc09000000004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@9675,1,@19503|51,0,@14684 14684:D3,72|483b65187305ff5558cd05488b5208ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed8f4bc09000000004c8930c3f4000000000000|@9674,1,@19502|53,0,@14685 14685:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9665,1,@19501,@14680| 14686:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bdb0f5bc09000000004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@9681,1,@19505|51,0,@14687 14687:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9665,1,@19504,@14680| 14688:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@7911,1,@19506| 14689:D3,40|483b65187305ff5558cd014c8b304983fe01750848c7c003000000c348c7c001000000c3f4000000|@8102,1,@19507| 14690:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3f40000|@8102,1,@19508| 14691:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@8102,1,@19509| 14692:D3,40|483b65187305ff5558cd014c8b304983fe03750848c7c003000000c348c7c001000000c3f4000000|@8106,1,@19510| 14693:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70003000000c3f40000|@8106,1,@19511| 14694:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@8106,1,@19512| 14695:D3,64|483b65187305ff5558cd014883f803750c49bef839660800000000eb0a49bee09862080000000049bd4803110a000000004d89750048c7c001000000c3f40000|@9973,1,@19513|19,0,@7518 31,0,@1123 41,0,@15144 14696:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19514|13,0,@8861 14697:D3,24|483b65187305ff5558cd0148b840a1670800000000c3f400|@9399,1,@19516|13,0,@9981 14698:D3,24|483b65187305ff5558cd0148b8989a620800000000c3f400|@9398,1,@19515|13,0,@1138 14699:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@9990,1,@19517| 14700:D3,24|483b65187305ff5558cd01488b4010c3f400000000000000|@9994,1,@19518| 14701:D3,16|483b65187305ff5558cd01488b00c3f4|@9998,1,@19519| 14702:D4,32|483b65187305ff5558cd054c8b420848c7c301000000ff251c000000f4000000|@10080,1,@19537,@14703| 14703:D20,2272|483b65187306ff5558ca0901505341504c8b7424104d8b2e4e8d246d010000004983fc01750f49bdb0a7670800000000e9b10000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15730800000f87970100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb0a767080000000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e14d89f6498d7608498d7d0d48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48bba015620800000000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d990700000f87b00000004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f1498d7508488d7b0848d1e9f3a44983c61049d1ee42c604330a8063ffbf49be1800b60300000000498b06ff15c507000049be1800b60300000000498b064c8b402048bb7805620800000000ff159c07000048c7c00300000048c7c301000000ff15800700004989c6eb2a488d64241848b8f807620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff2341f6c60175634d8b1e4d8b6e084c3b1d350700007502eb344d8b234e8d2465010000004983fc05752f49bcc8a7670800000000498d7308498d7c240848c7c102000000483bc9f3a67402eb0c41f6c5017506498b4500eb1b4d89ee483b65187306ff5558ca0040eb9748b8001962080000000048bae0a7670800000000488b5c2410ff15b90600004989c641566a016a0148bad8ac670800000000488b4424104889e3ff1590060000ff3424488b5c241048b848ad670800000000ff15700600004889c3488b0424ff155b0600004989c64156ff75084c8d35a5020000415648896508ff75084c8d359601000041564889650848c7c00700000048c7c3010000004c8b442420ff15150600004883c408415e4c89750848ba503c620800000000488b5c241049c7c003000000ff15e70500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706030000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff484d89342449c7c5030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff484d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4883c408415d4c896d084883c428e9b2020000488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d6d040000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be70ad6708000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd90ad6708000000004d896e10498946084c8b6c24284d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbb0ad6708000000004c8958184c8960104c8968084c8930488b5d08ff23488b65084883c408415e4c8975084c8b304c3b356f0300000f850a030000488d642420ff75084c8d35fc01000041564889650848c7c00700000048c7c3010000004c8b442410ff15330300004883c408415e4c89750848ba503c620800000000488b1c2449c7c003000000ff15060300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706030000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff484d89342449c7c5030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff484d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41ff3641ff7608488b442410ff15aa0100004889c2498d47e0483b45107305ff5550cd044989c748c740f8030000004c8b7424184c8970104c8b7424084c8970084c8b34244c8930488d642408ff124c8b34244d8b064d89f6498b4608488d64241848bb08ae6708000000004883c408ff253e010000488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d15010000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be70ad6708000000004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd90ad6708000000004d896e10498946084c8b6c24184d892e49bc5800110a0000000049bd50066208000000004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbb0ad6708000000004c8958184c8960104c8968084c8930488b5d08ff23488d642440488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01|@10081,1,@19538,@15097,@10512,@10577,@10539,@14722,@15097,@15097,@10539,@14722,@14723,@14723,@14718,@14704,@10037,@14721,@10512,@10517|40,0,@10036 178,0,@10036 250,0,@165 418,0,@1 437,0,@1 454,0,@93 500,0,@117 521,0,@117 578,0,@10037 642,0,@201 652,0,@10038 682,0,@10070 714,0,@10073 815,0,@526 1248,0,@10075 1311,0,@10076 1337,0,@15097 1347,0,@99 1404,0,@10077 1521,0,@526 1968,0,@10079 2056,0,@10075 2119,0,@10076 2145,0,@15097 2155,0,@99 2212,0,@10077 14704:D6,744|483b65187305ff5558cd0d52536a016a016a014c8b742420498b56284889e3ff12ff3424ff742410ff7424206a016a016a014c8b742450498b5628488b4424484889e3ff12ff3424ff7424104c8b7424204983fe037557488d642460498d47d8483b45107303ff55504989c748c740f80400000049be38a86708000000004c89701848c740100100000049be88a86708000000004c8970084c8b34244d8b7618488d6424084c8930488b5d08ff234c8b7424084d89f54c3b35530200007502eb384d89ed4d8b75004e8d3475010000004983fe01752849bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67505e9fc0000004c8b742460498b5620488b442438ff124989c641564c8b742468498b5620488b442410ff124989c54c8b34244d89f44d3bf5750e488d64240849c7c603000000eb594d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf3752a4d89e4498d742408488d642408498d7d08483bc9f3a6750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c6010000004983f6024983fe037557488d642460498d47d8483b45107303ff55504989c748c740f80400000049bea0a86708000000004c89701848c740100100000049be88a86708000000004c8970084c8b34244d8b7618488d6424084c8930488b5d08ff234c8b742460498b5610488b442458ff124989c64d8b76104983fe030f859a000000f604240175794c8b34244d8b264c3b25d9000000750949c7c503000000eb4c4d8b2c244e8d2c6d010000004983fd01753349bdd808620800000000498d742408498d7d0848c7c100000000483bc9f3a6750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03750e4d89f6498b5e08488d642428eb055b4883c4204c8b742438498b5608488b44241041584883c438ff22488b442430488b1c24ff153c0000004889c3488d6424084c8b742458498b5608488b4424304883c42041584883c438ff22f400|@10044,1,@19520,@14705,@123,@123|118,0,@10040 140,0,@10042 216,0,@123 450,0,@10043 472,0,@10042 590,0,@123 14705:D4,240|483b65187305ff5558cd094989c64889d841f6c6010f85d000000041ff364d8b76084983fe010f85850000004c8b34244d89f54c3b35ce0000007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01752b49bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb06488d642408c34d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c34889c34c89f0e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000|@10045,1,@19521,@123|90,0,@123 14706:D5,840|483b65187306ff5558ca0d0152505341504c8b742418498b5630498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124989c64983fe037457488d642418498d47d8483b45107303ff55504989c748c740f80400000049be80a96708000000004c89701848c740100100000049be88a86708000000004c8970084c8b34244d8b7608488d6424084c8930488b5d08ff23ff742408f604240175414c8b3424498b064d89f641ff76084c8b742428498b5628ff124989c64983fe03740e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe037557488d642418498d47d8483b45107303ff55504989c748c740f80400000049beb0a96708000000004c89701848c740100100000049bee0a96708000000004c8970084c8b34244d8b7620488d6424084c8930488b5d08ff234c8b34244983fe030f85040100004c8b5424104d8b324e8d2c75010000004c8b6424184d8b5c24184d89de4d8b1b4e8d1c5d010000004983fd017505e9ba0000004983fb0175084d89d6e9ac0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b0569010000777e4c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208498d7e0848d1e9f3a44983c5104d89e44d8b6424184c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfeb1a488d64242048b8f807620800000000488b5d08ff234c8b74241041564c8b742420498b5e18488b442410ff15e10000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15a50000004989c641564c8b742420498b5610488b0424ff124989c64d8b364c3b7424087457488d642420498d47d8483b45107303ff55504989c748c740f80400000049be00aa6708000000004c89701848c740100100000049be88a86708000000004c8970084c8b34244d8b7608488d6424084c8930488b5d08ff23584883c420c3f4000000000000ffffffffffffff01|@10052,1,@19522,@10502,@14707|110,0,@10048 132,0,@10042 290,0,@10049 312,0,@10050 606,0,@117 763,0,@10051 785,0,@10042 14707:D3,192|483b65187305ff5558cd0953a8010f859d000000ff30488b40084883f8017531498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c408c3488b5c2408e8a5ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3488d64240848c7c001000000c3f400|@10053,1,@19523| 14708:D4,88|483b65187305ff5558cd056a016a016a016a014c8b42084c8b4a104889e3ff154c000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4|@10060,1,@19524,@14709| 14709:D3,3912|483b65187306ff5558ca09035053415041514c8b6c24184d8b75004d89f34e8d3475010000004983fe01753c488d642410415d49bec0aa6708000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c408c34983fe050f8ccb0200004d89ed4d89dc4e8d1c5d010000004983fb037f15488d64242048b8a838620800000000488b5d08ff234d89ed4d0fb65d094e8d1c5d010000004983fb75757e4d89ed4e8d2465010000004983fc017f15488d64242048b8a838620800000000488b5d08ff234d89ed4d0fb66d084e8d2c6d010000004981fd8300000072124981fdb5000000770949c7c503000000eb2b4981fdc3000000721b4981fdf5000000770949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd030f85fd010000488d6424084983fe050f8e1a0100005a4c8b7424084d8b2e4e8d2c6d010000004983fd057f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb6760a4a8d047501000000ff124989c64983fe030f85d40000004c8b7424084d8b264d89e54e8d2465010000004983fc057315488d64241048b82086620800000000488b5d08ff234d89f64e8d2c6d010000004983fd0575054d89f5eb6249c7c4050000004e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00404d89ef49d1ec4d8965f841c645ff4149c745080000000049c74500020000004d89f64d0fb66608458865084d89f64d0fb6760945887509418065ffbf415e49c706030000004d896e0849c746100300000049c746180700000048c7c0010000004883c408c3488d6424084c8b7424084d8b264d89e54e8d2465010000004983fc057315488d64241048b82086620800000000488b5d08ff234d89f64e8d2c6d010000004983fd0575054d89f5eb6249c7c4050000004e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00404d89ef49d1ec4d8965f841c645ff4149c745080000000049c74500020000004d89f64d0fb66608458865084d89f64d0fb6760945887509418065ffbf415e49c706010000004d896e0849c746100100000049c746180500000048c7c0010000004883c408c34983fe050f8e54010000488b5424084c8b7424184d8b2e4e8d2c6d010000004983fd017f15488d64242048b8a838620800000000488b5d08ff234d89f64d0fb676084a8d047501000000ff124989c64983fe030f85fe000000488b5424084c8b7424184d8b2e4e8d2c6d010000004983fd037f15488d64242048b8a838620800000000488b5d08ff234d89f64d0fb676094a8d047501000000ff124989c64983fe030f85a80000004c8b7424184d8b2e4d89ec4e8d2c6d010000004983ed0441557115488d64242848b8d006620800000000488b5d08ff234c8b1c244d89dd4983fb017d07488d642428eb544d89e64e8d3475010000004d89ed4983c5047115488d64242848b8d006620800000000488b5d08ff234d3bf57d0949c7c603000000eb0749c7c6010000004983fe03740b6a016a016a05e9dd000000488d64242848b8e8aa670800000000488b5d08ff23488d642408eb05488d642408eb05488d6424085a4c8b7424084d8b2e4e8d2c6d010000004983fd017f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676084a8d047501000000ff124989c64983fe037537415d49be40ab6708000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c408c3415d49bec0aa6708000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c408c34c8b5c24184d89de4983c3044c8b24244d89e54d3be3757c4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5424384d89d34d895424104d89f64d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e1049c74608010000004d89ed4d892e488d6424084c8924244c89742408e9d10000004d89ed4983c51049d1ed4c8b7424384f0fb6342e4a8d047501000000488b542428ff124989c64983fe03741a4c8b2c244983c5024c892c24483b65187303ff5558e926ffffff4c8b24244d89e64983ec044d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24384d89da4d895d104d89650849c74500050000004c8b5c24184983c3044d89f44d2bde4983c3014d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d89d24d8956104d895e084d89e44d8926488d6424084c892c244c89742408ff34244c8b7424104d8b66084d89e54983fc01753c488d642430415d49bec0aa6708000000004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c408c34d8b264d8b76106a016a016a014983fd037d194f8d6c2cff4c892c2448c7442408010000004c89742410eb164983c4024983ed024c8924244c896c24084c89742410ff3424ff742410ff7424206a016a01ff7424204c8b6c24284d89ee4c8b6424204d89e24f8d5c25ff4c8b24244d89e54d3be3757b4d8d67e04c3b65107306ff5550ca00644d89e749c74424f8030000004c8b4c24184d89cb4d894c24104d89d24d895424084d89f64d8934244d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e1049c74608010000004d89ed4d892e488d6424084c8924244c89742408e9de0000004d89ed4983c51049d1ed4c8b7424184f0fb6342e4a8d047501000000488b542470ff124989c64983fe03741a4c8b2c244983c5024c892c24483b65187303ff5558e91effffff4c8b24244d89e64c2b6424284983c4014d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24184d89da4d895d104d8965084c8b6424284d89e34d8965004c8b6424204d89db4f8d5c1cff4d89f44d2bde4983c3014d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d89d24d8956104d895e084d89e44d8926488d6424084c892c244c89742408415d488d6424084c8b6424304d8b7424084d8b5d084983eb014d03f37115488d64247048b8d006620800000000488b5d08ff23488d6424304983c6087115488d64244048b8d006620800000000488b5d08ff23488b7c24204c8b1f4d89da4e8d1c5d010000004889ff4e8d0455010000004983fb0175084989f9e9bb0000004983f80175084989f9e9ad0000004f8d5403ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f1488d344501000000483b35ab0500000f87620500004889f24c8d0c950400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550cac07d4d89cf48d1ea498951f841c641ff414883ee0249c744b1fc0000000049d1ea4d89114c89d94889ff4989fa488d7708498d790848d1e9f3a44983c3104c89c14d89d2498d720849d1eb4b8d3c1948d1e9f3a4418061ffbf4d89e44d8b14244d89e4498b4c24084d89e44d8b642410488d6424084d8b1c244e8d1c5d010000004983fa017512488d642418493bcb750d4d89e3e9a9000000488d6424184883f901750f49bbd808620800000000e98f0000004889c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05a10400000f874b0400004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02774d89df48d1ef49897bf841c643ff414983e8024bc74483fc000000004989c849d1e84d89034983c21049d1ea4b8d3414498d7b0848d1e9f3a4418063ffbf4d8b214e8d2465010000004d8b134e8d1455010000004983fc0175084d89d8e9b20000004983fa0175084d89c8e9a40000004b8d7c14ff4889f84883c01e49c7c01100000048d1e849d1e84833d249f7f0488d344501000000483b35d30300000f87700300004889f24c8d04950400000049f7d84d03c74c3b451072054d3bc77206ff5550cac07e4d89c748d1ea498950f841c640ff414883ee0249c744b0fc0000000048d1ef4989384c89e1498d7108498d780848d1e9f3a44983c4104c89d1498d730849d1ec4b8d3c2048d1e9f3a4418060ffbf4d8b204e8d2465010000004c8b1c244d8b134e8d1455010000004983fc01750d4d89d9488d642410e9c30000004983fa01750d488d6424104d89c1e9b00000004b8d7c14ff4889f84883c01e49c7c11100000048d1e849d1e94833d249f7f1488d344501000000483b35e70200000f87770200004889f24c8d0c950400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550cac07d4d89cf48d1ea498951f841c641ff414883ee0249c744b1fc0000000048d1ef4989394c89e1498d7008498d790848d1e9f3a44983c4104c89d14d89db498d7308488d64240849d1ec4b8d3c2148d1e9f3a4418061ffbf4883c4084d8b6500498b4d084d8b6d104d8b5d004e8d1c5d010000004983fc01750d493bcb75084d89ebe9a50000004883f901750f49bbd808620800000000e9900000004889c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15f40100000f87770100004d89d04e8d1c850400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02764d89df49d1e84d8943f841c643ff414983ea024bc74493fc000000004989ca49d1ea4d89134983c41049d1ec4b8d742500498d7b0848d1e9f3a4418063ffbf4d8b294e8d2c6d010000004d8b234e8d1465010000004983fd0175084d89dce9b70000004983fa0175084d89cce9a90000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d250100000f879b0000004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d1498d730849d1ed4b8d3c2c48d1e9f3a441806424ffbf415d49c74500030000004d89650849c74510030000004d89751848c7c0010000004883c408c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64242048b8f807620800000000488b5d08ff23488d64244048b8f807620800000000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10061,1,@19525|53,0,@10056 141,0,@502 201,0,@502 365,0,@502 442,0,@994 654,0,@994 873,0,@502 952,0,@502 1031,0,@105 1092,0,@105 1151,0,@10057 1214,0,@502 1259,0,@10059 1314,0,@10056 1752,0,@10056 2303,0,@105 2335,0,@105 2657,0,@123 3318,0,@123 3739,0,@117 3760,0,@117 3781,0,@117 3802,0,@117 3823,0,@117 3844,0,@117 14710:D3,56|483b65187305ff5558cd014881f8b9000000750848c7c003000000c34883f85f750848c7c003000000c348c7c001000000c3f40000000000|@10062,1,@19526| 14711:D3,248|483b65187305ff5558cd014c8b304e8d34750100000049c7c4010000004d3be6720c49c7c601000000e9a40000004d89e54983c51049d1ed4e0fb62c284e8d2c6d010000004983fd557502eb674983fd7f7502eb5f4981fdf90000007502eb544983fd5f7502eb4c4981fdb90000007502eb414983fd457502eb394983fd757502eb314983fd7d7502eb294983fd797502eb214983fd01741b4d89e54983c5024d89ec483b65187306ff5558ca0150e969ffffff4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe01750948c7c003000000eb0748c7c0010000004883f0024883f002c3f4000000000000|@4347,1,@19527| 14712:D4,32|483b65187305ff5558cd054989c6498b06498b5e084c8b4208ff2519000000f4|@10064,1,@19528,@14713| 14713:D9,992|483b65187306ff5558ca09014989c64889d8415641504c8b7424084d89f44c3b35fb0300007507488d642410eb434d89e44d8b34244d89f54e8d3475010000004983fe01753049bed8086208000000004d89e4498d742408498d7e0848c7c100000000483bc9f3a67402eb0a488d6424104883f002c34c8b7424084d89ec4e8d2c6d010000004983fd050f85d70000004d89f64d89e54e8d2465010000004983fc037f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb666094e8d2465010000004983fc75757e4d89f64e8d2c6d010000004983fd017f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676084e8d3475010000004981fe8300000072124981feb5000000770949c7c603000000eb2b4981fec3000000721b4981fef5000000770949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe03750d488d64241048c7c003000000c34c8b7424084d8b264d89e54e8d2465010000004983fc050f8e4e020000488b14244d89f64e8d2c6d010000004983fd017f15488d64241048b8a838620800000000488b5d08ff234d89f64d0fb676084a8d047501000000ff124989c64983fe030f85fe0100004c8b4c24084d8b314e8d04750100000048c7c00100000048c7c3010000004c8b1424ff15230200004989c6488d64241041f6c6010f85bc0100004d8b164d8b66084d89e54c3b15f80100007502eb3a4d8b1a4e8d1c5d010000004983fb010f85c800000049bbd808620800000000498d7208498d7b0848c7c100000000483bc9f3a67405e9a300000041f6c4010f85900000004d8b14244d8b6424084c3b15980100007502eb334d8b1a4e8d1c5d010000004983fb01756249bbd808620800000000498d7208498d7b0848c7c100000000483bc9f3a67402eb4041f6c40175314d8b64240841f6c401751d4d8b6424084983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f85b90000004d89ee4d8b76084d8b264d8b76084d8b2e4c3b25de0000007502eb334d8b34244e8d3475010000004983fe01752949bed808620800000000498d742408498d7e0848c7c100000000483bc9f3a6750848c7c001000000c34c3b2d90000000750948c7c003000000eb4b4d8b75004e8d3475010000004983fe01753249bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a6750948c7c003000000eb0748c7c001000000eb0748c7c0010000004883f002c348c7c001000000c3488d642410eb05488d64241048c7c001000000c3f4|@10065,1,@19529,@123,@123,@123,@123,@14714,@123|72,0,@123 171,0,@502 231,0,@502 416,0,@502 563,0,@123 647,0,@123 826,0,@123 903,0,@123 14714:D3,1152|483b65187306ff5558ca090750534150415141524c8b7424184d89f54c3b7424100f85c4010000488d6424084c89e9482b4c24187115488d64242048b8d006620800000000488b5d08ff234883c1014c8b2c244d8b65004d89e64e8d1465010000004c8b5c24184d89dc4983fb010f8c620100004883f9010f8c430100004d89e44d89e34d8d640cff4d3be27615488d64242048b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb017512493bce750d4d89ee488d642420e9b90000004883f9017514488d64242049bed808620800000000e99f0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d690300000f87970000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500488d642408498d7e0848d1e9f3a4418066ffbf4883c418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048b8f807620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488b14244d89ed4983c51049d1ed4c8b7424084f0fb6342e4a8d047501000000ff124989c64983fe030f8513020000488b4c24184889cb482b4c24207115488d64242848b8d006620800000000488b5d08ff234883c1014c8b6c24084d8b65004d89e64e8d1465010000004c8b5c24204d89dc4983fb010f8cb00100004883f9010f8c910100004d89e44d89e34d8d640cff4d3be27615488d64242848b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb01750d493bce75084d89eee9ab0000004883f901750f49bed808620800000000e9960000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d770100000f87ef0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500498d7e0848d1e9f3a4418066ffbf41564889db4889d84883c3027115488d64243048b8d006620800000000488b5d08ff234889c04883c0027115488d64243048b8d006620800000000488b5d08ff234c8b4424184c8b4c24104c8b542408e845fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c410c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488b5c24184883c3027115488d64242848b8d006620800000000488b5d08ff23488b4424204c8b4424104c8b4c2408415a488d642420e998fbfffff400000000000000ffffffffffffff01ffffffffffffff01|@5489,1,@19530|61,0,@105 149,0,@994 217,0,@123 435,0,@117 456,0,@76 477,0,@76 560,0,@105 649,0,@994 707,0,@123 891,0,@105 921,0,@105 1013,0,@117 1034,0,@76 1055,0,@76 1087,0,@105 14715:D3,344|483b65187305ff5558cd014989c64d8b2e4e8d246d010000004983fc01750b48b8d808620800000000c34c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1dfd00000077554d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc000000004d89e349d1eb4d895d004983c41049c7c311000000eb1048b8f807620800000000488b5d08ff234d3bdc7209418065ffbf4c89e8c34d89da49d1ea4f0fb614164e8d1455010000004981fa8300000072424981fab500000077394983c240711048b8d006620800000000488b5d08ff234983fa017d02eb0b4981faff0100007f02eb1048b82812620800000000488b5d08ff2349d1ea4d89d949d1e94788540d004d89da4983c2024d89d3483b65187306ff5558ca0078e96bfffffff4ffffffffffffff01|@10067,1,@19531|33,0,@123 172,0,@117 245,0,@105 280,0,@137 14716:D5,728|483b65187305ff5558cd0d5250534c8b7424084d89f54c3b35db0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01755449bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb2f415d49be90ac6708000000004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c410c34c8b742410498b5610488b442408ff124989c641ff3641ff760841ff76104d8b6e184c8b7424204d8b264d89e34a8d0c6501000000492bcd7115488d64243048b8d006620800000000488b5d08ff234883c1014d89f64d89dc4e8d145d010000004983fd010f8cbe0100004883f9010f8c9f0100004d8d5c0dff4d3bda7615488d64243048b82086620800000000488b5d08ff234d89f64e8d2465010000004983fd01750d493bcc75084d89f1e9a70000004883f901750f49b9d808620800000000e9920000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25560100000f87090100004d89e34e8d0c9d0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca02704d89cf49d1eb4d8959f841c641ff414983ec024bc744a1fc000000004989cc49d1ec4d89214983c51049d1ed4d89f64b8d342e498d790848d1e9f3a4418061ffbf4d8b314e8d0475010000004c8b7424284d8b560848c7c00100000048c7c301000000ff15e50000004989c64c8b2c244983fd03488d642408753d4c8b6c24084983fd0374324d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8086208000000004d8975004d89eeeb004c8b6c24104c8b24244d896500488d6424084d8975084c8b34244d897510488d64241048c7c0010000004883c410c3488d64243048b8f807620800000000488b5d08ff23488d64243048b8e002620800000000488b5d08ff23488d64243048b8e002620800000000488b5d08ff23f400000000000000ffffffffffffff01|@10069,1,@19532,@14717,@123|56,0,@123 95,0,@10068 203,0,@105 272,0,@994 324,0,@123 585,0,@123 656,0,@117 677,0,@76 698,0,@76 14717:D3,1152|483b65187306ff5558ca090750534150415141524c8b7424184d89f54c3b7424100f85c4010000488d6424084c89e9482b4c24187115488d64242048b8d006620800000000488b5d08ff234883c1014c8b2c244d8b65004d89e64e8d1465010000004c8b5c24184d89dc4983fb010f8c620100004883f9010f8c430100004d89e44d89e34d8d640cff4d3be27615488d64242048b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb017512493bce750d4d89ee488d642420e9b90000004883f9017514488d64242049bed808620800000000e99f0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d690300000f87970000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500488d642408498d7e0848d1e9f3a4418066ffbf4883c418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048b8f807620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488d64242048b8e002620800000000488b5d08ff23488b14244d89ed4983c51049d1ed4c8b7424084f0fb6342e4a8d047501000000ff124989c64983fe030f8513020000488b4c24184889cb482b4c24207115488d64242848b8d006620800000000488b5d08ff234883c1014c8b6c24084d8b65004d89e64e8d1465010000004c8b5c24204d89dc4983fb010f8cb00100004883f9010f8c910100004d89e44d89e34d8d640cff4d3be27615488d64242848b82086620800000000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb01750d493bce75084d89eee9ab0000004883f901750f49bed808620800000000e9960000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d770100000f87ef0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500498d7e0848d1e9f3a4418066ffbf41564889db4889d84883c3027115488d64243048b8d006620800000000488b5d08ff234889c04883c0027115488d64243048b8d006620800000000488b5d08ff234c8b4424184c8b4c24104c8b542408e845fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c410c3488d64242848b8f807620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488d64242848b8e002620800000000488b5d08ff23488b5c24184883c3027115488d64242848b8d006620800000000488b5d08ff23488b4424204c8b4424104c8b4c2408415a488d642420e998fbfffff400000000000000ffffffffffffff01ffffffffffffff01|@5489,1,@19533|61,0,@105 149,0,@994 217,0,@123 435,0,@117 456,0,@76 477,0,@76 560,0,@105 649,0,@994 707,0,@123 891,0,@105 921,0,@105 1013,0,@117 1034,0,@76 1055,0,@76 1087,0,@105 14718:D4,912|483b65187305ff5558cd0d50534c8b4424084d8b304e8d3475010000004156488b04244989c14883e8027115488d64241848b8d006620800000000488b5d08ff23488b5a08ff155d0300004989c641f6c6010f85ff0200004d8b2e4c8b6424104d8b1c244d89de4e8d1c5d010000004983fd010f8cc90200004d3beb7615488d64241848b82086620800000000488b5d08ff234d89e44e8d3475010000004d3bee75084d89e6e9a40000004983fd01750f49bed808620800000000e98f0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d9f0200000f873e0200004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004d89eb49d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a4418066ffbf4d89eb4983c3027115488d64241848b8d006620800000000488b5d08ff23488b0c24492bcd488d6424087115488d64241048b8d006620800000000488b5d08ff234883e9017115488d64241048b8d006620800000000488b5d08ff234c8b6424084d8b14244d89d54e8d0c55010000004983fb010f8c4f0100004883f9010f8c300100004d8d540bff4d3bd17615488d64241048b82086620800000000488b5d08ff234d89e44e8d2c6d010000004983fb01750d493bcd75084d89e5e9a80000004883f901750f49bdd808620800000000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15320100000f879a0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4d89e44b8d341c498d7d0848d1e9f3a4418065ffbf4d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24415d4d8965004d89750848c7c0010000004883c408c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8e002620800000000488b5d08ff23488d64241048b8e002620800000000488b5d08ff23488d64241848b8f807620800000000488b5d08ff23488d64241848b8e002620800000000488b5d08ff23488d642408415d49c74500010000004c8b34244d897508488d64240848c7c001000000c3f400000000ffffffffffffff01ffffffffffffff01|@10071,1,@19534,@14719|51,0,@105 133,0,@994 179,0,@123 351,0,@105 386,0,@105 413,0,@105 484,0,@994 536,0,@123 757,0,@117 778,0,@76 799,0,@76 820,0,@117 841,0,@76 14719:D3,656|483b65187306ff5558ca09035053415041514c8b6c24184d89ee4983fd017f0d488d64242048c7c001000000c3488b5424104d89f64d89f44983fe017d0a488d642420e9320200004c8b7424084d8b2e4e8d1c6d010000004d89e44d89e54d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84f80100004d89ed4983c51049d1ed4d89f64f0fb6342e4a8d047501000000ff124989c64983fe03750d488d64242048c7c001000000c34c8b7424184d89f44983fe017d0a488d642420e99e0100004c8b4424084d8b304d89f54e8d1c75010000004d89e44d89e64d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84610100004d89f64c89f04983c61049d1ee4d89c04f0fb634304e8d3475010000004983fe5d0f85080100004c8b24244983ec02488d6424087115488d64241848b8d006620800000000488b5d08ff234889c04989c6493bc4750d488d64241848c7c001000000c3488b5424084d89f64983ee027115488d64241848b8d006620800000000488b5d08ff234983fe017d0a488d642418e9890000004d89c04e8d2c6d010000004d3bf57c0949c7c503000000eb0749c7c5010000004983fd03745e4983c61049d1ee4d89c04f0fb63430488d6424084a8d047501000000ff124989c64983fe03750d488d64241048c7c001000000c3488d642408498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d642408c3488d64241848b8a838620800000000488b5d08ff234889c04883e8027115488d64242048b8d006620800000000488b5d08ff23488b5c24104d89c04159488d642418e9a0fdffff488d64242048b8a838620800000000488b5d08ff23488d64242048b8a838620800000000488b5d08ff23f40000000000|@10072,1,@19535|316,0,@105 375,0,@105 544,0,@502 574,0,@105 615,0,@502 636,0,@502 14720:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf85a620800000000ff251c000000f4000000|@694,1,@19536,@10512|54,0,@692 14721:D3,80|49bbb005b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@518,1,@19541|2,0,@51 14722:D3,80|49bbd805b703000000004d8b1b4c897d004989e548896540488b65304881ecb0000000488b4d384889c24d89c14989d841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@70,1,@19539|2,0,@52 14723:D4,536|483b65187305ff5558cd09a8010f85eb0100004c8b284c3b2d130200007502eb344d8b75004e8d3475010000004983fe01752649bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb044889d8c34c8b334e8d3475010000004983fe01750f49bb0019620800000000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15670100000f873f0100004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca08744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1488d7308498d7b0848d1e9f3a44983c61049d1ee43c604332e418063ffbf4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d9b000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f807620800000000488b5d08ff2348b8f807620800000000488b5d08ff234889d8c3f40000000000ffffffffffffff01ffffffffffffff01|@10082,1,@19540,@123|53,0,@123 108,0,@201 480,0,@117 496,0,@117 14724:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be303bbd09000000004c8930c3f400000000|@10084,1,@19543|55,0,@14725 14725:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10080,1,@19542,@14703| 14726:D4,32|483b65187305ff5558cd014989c6498b06498b5e084d8b4610ff2519000000f4|@10089,1,@19544,@10679| 14727:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19545| 14728:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19546|55,0,@224 14729:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19547|30,0,@621 14730:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19548| 14731:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19549|55,0,@224 14732:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19550|30,0,@621 14733:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19551| 14734:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19552|55,0,@224 14735:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19553|30,0,@621 14736:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19554| 14737:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19555|55,0,@224 14738:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19556|30,0,@621 14739:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19557| 14740:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19558|55,0,@224 14741:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19559|30,0,@621 14742:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19560| 14743:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19561|55,0,@224 14744:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19562|30,0,@621 14745:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19563| 14746:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19564|55,0,@224 14747:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19565|30,0,@621 14748:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19566| 14749:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19567|55,0,@224 14750:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19568|30,0,@621 14751:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19569| 14752:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19570|55,0,@224 14753:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19571|30,0,@621 14754:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19572| 14755:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19573|55,0,@224 14756:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19574|30,0,@621 14757:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19575| 14758:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19576|55,0,@224 14759:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19577|30,0,@621 14760:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19578| 14761:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19579|55,0,@224 14762:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19580|30,0,@621 14763:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19581| 14764:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19582|55,0,@224 14765:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19583|30,0,@621 14766:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19584| 14767:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19585|55,0,@224 14768:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19586|30,0,@621 14769:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19587| 14770:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19588|55,0,@224 14771:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19589|30,0,@621 14772:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19590| 14773:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19591|55,0,@224 14774:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19592|30,0,@621 14775:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19593| 14776:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19594|55,0,@224 14777:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19595|30,0,@621 14778:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19596| 14779:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19597|55,0,@224 14780:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19598|30,0,@621 14781:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19599| 14782:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19600|55,0,@224 14783:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19601|30,0,@621 14784:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19602| 14785:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19603|55,0,@224 14786:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19604|30,0,@621 14787:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19605| 14788:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19606|55,0,@224 14789:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19607|30,0,@621 14790:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19608| 14791:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19609|55,0,@224 14792:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19610|30,0,@621 14793:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19611| 14794:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19612|55,0,@224 14795:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19613|30,0,@621 14796:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19614| 14797:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19615|55,0,@224 14798:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19616|30,0,@621 14799:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19617| 14800:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19618|55,0,@224 14801:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19619|30,0,@621 14802:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@10105,1,@19620| 14803:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be281b6208000000004c8970084c8b72084c8930c3f400000000|@10105,1,@19621|55,0,@224 14804:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87850620800000000488b5d08ff23f4000000|@10105,1,@19622|30,0,@621 14805:D3,32|483b65187305ff5558cd0148b8c016670800000000488b5d08ff23f400000000|@8863,1,@19623|13,0,@8861 14806:D3,64|483b65187305ff5558cd014989c6498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c3f40000|@10244,1,@19624| 14807:D3,32|483b65187305ff5558cd054989c6488b5208498b06498b5e084d8b4610ff22f4|@10247,1,@19625| 14808:D3,64|483b65187305ff5558cd014c8b304983fe0d75234c8b7008498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@10250,1,@19626| 14809:D7,344|483b65187305ff5558cd01ff30488b5808ff7010ff7018ff70204883fb017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff15460100004989c641564c8b7424184d89f54c3b352a0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424184156488b442418ff15c60000004989c64156488b442410ff15ae0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424184d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424204c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c410c3f40000000000|@10253,1,@19627,@13956,@13957,@123,@14810|39,0,@731 113,0,@123 150,0,@7652 14810:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@741,1,@19628|32,0,@105 14811:D7,344|483b65187305ff5558cd01ff30488b5808ff7010ff7018ff70204883fb017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff15460100004989c641564c8b7424184d89f54c3b352a0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b7424184156488b442418ff15c60000004989c64156488b442410ff15ae0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424184d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424204c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c410c3f40000000000|@10256,1,@19629,@14813,@14814,@123,@14812|39,0,@731 113,0,@123 150,0,@7652 14812:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@741,1,@19632|32,0,@105 14813:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@19630| 14814:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19631|89,0,@4664 14815:D4,88|483b65187305ff5558cd01ff30488b4008ff15590000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424084c89700848c7000f000000c3f400|@10259,1,@19633,@14816| 14816:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@19634| 14817:D3,112|483b65187305ff5558cd014883f8017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@4347,1,@19635|19,0,@6950 14818:D3,112|483b65187305ff5558cd014883f8017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@4347,1,@19636|19,0,@6950 14819:D3,112|483b65187305ff5558cd014883f8017d1048b800d5650800000000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@4347,1,@19637|19,0,@6950 14820:D3,72|483b65187305ff5558cd014c8b304c8b6808498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080100000048c70003000000c3f40000|@10268,1,@19638| 14821:D4,104|483b65187305ff5558cd014c8b284c8b70084d8b264983fc0d75134c89f04c89eb49c7c001000000ff2552000000498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c70017000000c3f4000000000000|@10271,1,@19639,@11046| 14822:D3,72|483b65187305ff5558cd014c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c7000b000000c3f40000|@2571,1,@19640| 14823:D5,368|483b65187305ff5558cd01ff304c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff15230100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc0aa6208000000004d8966184d896e104c8b2c244d896e08488d64240849c7060b000000415648c7c001000000ff15550000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3f40000000000|@10276,1,@19641,@14096,@14097|256,0,@1263 14824:D4,64|483b65187305ff5558cd01ff15470000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3f400000000|@10279,1,@19642,@14825| 14825:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@19643| 14826:D4,80|483b65187305ff5558cd01ff30488b4008ff15510000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3f400|@10282,1,@19644,@14827| 14827:D3,184|483b65187305ff5558cd01a8010f85960000004c8b28488b40084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e886ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@742,1,@19645| 14828:D3,72|483b65187305ff5558cd014c8b304c8b68084983fe0175044c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c3f4|@10285,1,@19646| 14829:D4,88|483b65187305ff5558cd014883f801751048b83067660800000000488b5d08ff23ff15490000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000000000|@10288,1,@19647,@13755|19,0,@7838 14830:D4,136|483b65187305ff5558cd014989c6498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2520000000c3f4000000000000|@10291,1,@19648,@12170| 14831:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3f40000|@2759,1,@19649| 14832:D3,72|483b65187305ff5558cd014c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c70015000000c3f40000|@10296,1,@19650| 14833:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f40000|@3032,1,@19651| 14834:D3,16|483b65187305ff5558cd01488b00c3f4|@10301,1,@19652| 14835:D4,152|483b65187305ff5558cd014c8b204c8b40084d8b6c24084d8b742410498b5c24184983fd0575604d8b2e4983fd0375574d8b76084d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca08214d89f749c746f8010000004d892eeb0749c7c6010000004983fe01751048b808d5620800000000488b5d08ff23498b06ff252900000048b87872620800000000c3f40000000000|@10308,1,@19656,@14836|112,0,@1556 137,0,@868 14836:D13,1096|483b65187306ff5558ca09015053415049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd3071bd09000000004d892e49c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcb09f6208000000004d8965184d89751049be60c66208000000004d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41566a016a01488b44243048bb50c76708000000004989e0ff158b030000488d64240858ff1577030000ff15690300004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24284d896e0849bdd871bd09000000004d892e4156ff152903000048ba281466080000000048bb60c66208000000004c8b4424084c8b0c24ff15fe0200004989c6415648ba6814660800000000488b44243048bb60c66208000000004c8b442410ff15cd0200004989c641564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424304d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cc0100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15930100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b742420498b06ff153d0100004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc4983fe017507584883c420eb37498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c7001f0000004883c4204c8b34244d8b06488d64240848bac0be64080000000048c7c301000000ff15800000004889c248c7c001000000ff124989c64d8b2e4983fd0d7529488d6424184d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0c488d64241849c7c6010000004983fe01751048b808d5620800000000488b5d08ff23498b06c3f4|@10309,1,@19657,@12098,@13789,@13572,@12170,@13624,@13570,@13668,@14840,@13982,@10900|94,0,@14837 179,0,@1172 197,0,@1469 268,0,@10305 340,0,@14839 361,0,@7256 371,0,@1469 401,0,@7257 416,0,@1469 971,0,@5100 1077,0,@1556 14837:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d006620800000000488b5d08ff234d897500c3f40000|@10304,1,@19653|42,0,@105 14838:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10306,1,@19654| 14839:D3,64|483b65187305ff5558cd05498d47e0483b45107305ff5550cd044989c748c740f80300000048c74010010000004c8b72084c89700848c7000d000000c3f40000|@10307,1,@19655| 14840:D3,176|483b65187305ff5558cd01a8010f85930000004c8b30488b40084d8b76084983e6094983fe01750949c7c503000000eb0749c7c5010000004983f5024d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c74610010000004d896e0849bda8036308000000004d892e4156e889ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@742,1,@19658|101,0,@1869 14841:D4,216|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849be2074bd09000000004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bcb874bd09000000004d89264c892c244c89742408eb1a49be90c86708000000004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d893049c7c101000000ff2519000000f4|@10316,1,@19663,@14846|71,0,@14842 116,0,@14843 140,0,@10312 14842:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19659| 14843:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19660| 14844:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19661| 14845:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19662| 14846:D14,4984|483b65187306ff5558ca09035341514c8b184c8b60084c8b6810ff70184c8b70204d8b084d8b40084d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8942084d890a41524c8b5424184983fa017f10488d64242048b84887620800000000c34983fc030f85830000004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a838620800000000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f402e9180f000041f6c4010f85830000004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a838620800000000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f402e9210b00004983fc017505e9480700004d8b65004983fc03753c4d8b6d084d8b65004983fc0d75254d8b65084d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d896500eb0749c7c501000000eb0749c7c50100000041f6c501752f498b45004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a838620800000000488b5d08ff23e9030400004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a838620800000000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f40241f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b76084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d892eeb0749c7c6010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89751849c745100100000049c745080100000049c74500010000004d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c706030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbc8c86708000000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10af6208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff15aa0e00004989c048ba8088620800000000488b442410488b5c24204c8b4c24084c8b542418ff157b0e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be40726208000000004c89334883fb017508415e4883c420eb12488b0424ff15060e00004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175424d8b264d8b6e084d8b14244983fa0175204d8d77f04c3b75107306ff5550ca01184d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0148ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d895e0849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049bc60706408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849be10af6208000000004d8975004d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104c8b442420ff15800b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8c86708000000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408e953fcffff41f6c60175424d8b264d8b6e084d8b14244983fa0175204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0048ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d895e0849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8ad6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442410ff15c00800004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85ec00000041ff3648c7c001000000ff15670800004989c048ba8088620800000000488b0424488b5c24284c8b4c24104c8b542420ff15390800004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8db6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48af6208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98ad6208000000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c420c341f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d896e1849c746100100000049c746080100000049c706010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbc8c86708000000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8766408000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15830400004989c048ba8088620800000000488b442410488b5c24204c8b4c24084c8b542418ff15540400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d896e1849c746100100000049c746080100000049c706010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbc8c86708000000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10af6208000000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15090100004989c048ba8088620800000000488b442410488b5c24204c8b4c24084c8b542418ff15da0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f400|@10317,1,@19664,@10723,@10815,@10723,@10815,@10723,@10815,@10728,@14836,@14847,@10723,@10815|94,0,@1003 137,0,@502 278,0,@502 507,0,@502 550,0,@502 1078,0,@10315 1162,0,@866 1207,0,@1302 1339,0,@1014 1447,0,@866 1935,0,@4564 1984,0,@866 2028,0,@1302 2152,0,@10315 2200,0,@866 2685,0,@866 2729,0,@1290 2902,0,@1014 3014,0,@1596 3059,0,@1305 3103,0,@1289 3659,0,@10315 3744,0,@866 3788,0,@4604 3882,0,@1014 3990,0,@866 4533,0,@10315 4618,0,@866 4662,0,@1302 4756,0,@1014 4864,0,@866 14847:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19665| 14848:D5,256|483b65187305ff5558cd01ff30ff70084c8b70106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004d89650849be908bbd09000000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc288cbd09000000004d89264c892c244c89742408eb1a49be88c96708000000004d8b2e4c892c244d8b76084c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415648c7c001000000ff154c0000004989c048ba8088620800000000488b442410488b5c24084159488d64241049c7c201000000ff2519000000f4|@10323,1,@19670,@10723,@10815|66,0,@14849 111,0,@14850 135,0,@10320 217,0,@1014 14849:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19666| 14850:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19667| 14851:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19668| 14852:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19669| 14853:D3,24|483b65187305ff5558cd01488b4018c3f400000000000000|@10326,1,@19671| 14854:D3,88|483b65187305ff5558cd014c8b70084983fe05752c4c8b68104d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd037505498b4608c348b890ca670800000000488b5d08ff23f4000000000000|@10332,1,@19672|67,0,@10329 14855:D4,120|483b65187305ff5558cd014c8b6818488b40204d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7061b0000004156ff154f0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@10335,1,@19673,@11383| 14856:D3,56|483b65187305ff5558cd014c8b700841f6c601750848c7c003000000c34983fe01750848c7c003000000c348c7c001000000c3f400000000|@10338,1,@19674| 14857:D3,40|483b65187305ff5558cd014c8b70084983fe01750848c7c003000000c348c7c001000000c3f40000|@10341,1,@19675| 14858:D3,24|483b65187305ff5558cd014c8b30498b06c3f40000000000|@10344,1,@19676| 14859:D4,232|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849beb890bd09000000004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc5091bd09000000004d89264c892c244c89742408eb1a49be18cd6708000000004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d893048ba387064080000000049c7c101000000ff251f000000f4000000000000|@10349,1,@19681,@11867|71,0,@14860 116,0,@14861 140,0,@10346 204,0,@4563 14860:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19677| 14861:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19678| 14862:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19679| 14863:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19680| 14864:D4,32|483b65187305ff5558cd014c8b30498b4610ff2520000000f400000000000000|@10351,1,@19682,@11383| 14865:D3,16|483b65187305ff5558cd01488b00c3f4|@10353,1,@19683| 14866:D4,32|483b65187305ff5558cd014989c6498b06498b5e084d8b4610ff2519000000f4|@10359,1,@19688,@14867| 14867:D5,1120|483b65187306ff5558ca09014989c66a016a0141f6c001756a4d8b184d8d67e84c3b65107306ff5550ca08484d89e749c74424f8020000004d895c240849bde097bd09000000004d892c244d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d0849bb7898bd09000000004d895d004c8924244c896c2408eb1b49bd58ce6708000000004d8b65004c8924244d8b6d084c896c2408415d415c4d8d4fe84c3b4d107306ff5550ca08704d89cf49c741f8020000004d8961084d89294d8b26498b46104d8b76184883fb017f0b48b84887620800000000c341f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bc90ce6708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849bef8ae6208000000004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564883eb027115488d64240848b8d006620800000000488b5d08ff234c8b70084c3b35550100007502eb334d8b2e4e8d2c6d010000004983fd01753b49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb1949c7c00300000049c7c201000000ff15020100004989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f4|@10365,1,@19695,@14872,@123|63,0,@14868 108,0,@14869 133,0,@10355 215,0,@1003 604,0,@10358 653,0,@866 697,0,@1301 786,0,@105 834,0,@123 1001,0,@1008 14868:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19684| 14869:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19685| 14870:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19686| 14871:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19687| 14872:D9,808|483b65187306ff5558ca0907534152ff30ff702041ff3141ff710848ba3891620800000000488b442418ff15380300004989c54d8b75404d8b5d60f64424200175634c8b6c24204d8b6d004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104c8b6c24104d896c240849bd189dbd09000000004d892c244d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d896500eb244d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004c8b6424104d89650041554d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d8975184c8b7424104d8975104c8b24244d89e64d89650849bc689dbd09000000004d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184c8b5c24084d895c24104d89f64d8974240849be209ebd09000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424404983fe037f14488d64244848b830cf670800000000e9ff00000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849bed89ebd09000000004d8930488b44243848c7c301000000ff15410100004c8b3424498b06488d64240848bb48cf670800000000ff151d0100004989c641566a01f64424080175654c8b6c24084d8b75004d89ed41ff7508498b06498b5e08ff7424184c8b4424604c8b4c24284c8b542430ff15d70000004c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15b30000004989c4415d4c8924244c896c2408483b65187303ff5558eb94584883c450ff15870000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0bd6208000000004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3f4|@10367,1,@19696,@14880,@14881,@14879,@10785,@10619,@10742|29,0,@1078 120,0,@14873 256,0,@14874 321,0,@14875 423,0,@10361 514,0,@14876 557,0,@10362 733,0,@1418 14873:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@1083,1,@19689,@10764| 14874:D3,144|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c641f6c6017557488d6424084d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8b642408488d6424084d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b742408498b561058488d642408ff22f40000|@10360,1,@19690| 14875:D3,144|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c641f6c6017557488d6424084d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8b642408488d6424084d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b742408498b561058488d642408ff22f40000|@10360,1,@19691| 14876:D3,144|483b65187306ff5558ca0d014989c64c89c0f6c30175774c8b234c8b6b084d8d57e84c3b55107306ff5550ca0d704d89d749c742f8020000004d8962084d89324c8b62084d89e34d8b0c244d8d67e84c3b65107306ff5550ca0d6e4d89e749c74424f8020000004d894c24084d8914244d892349c7c4010000004c89e04c89eb483b65187306ff5558ca0d40eb84c3f4|@671,1,@19692| 14877:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef89fbd09000000004c8930c3f400000000|@10364,1,@19694|47,0,@14878 14878:D3,152|483b65187305ff5558cd054c8b304c8b6a084d8b5d004d8b2b4e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec760848c7c003000000c348c7c001000000c34983fe017e0848c7c003000000c348c7c001000000c3f4|@10363,1,@19693| 14879:D18,3328|483b65187306ff5558ca09074c8b2b4d89ee4c3b2d6f0d000075584c3b355e0d0000753f488b43104c89c34883eb02711048b8d006620800000000488b5d08ff234c8b60084c8b70184883fb017f0f49bd4887620800000000e9490c0000e94509000048b87850620800000000488b5d08ff234d89f54c3b35fb0c0000755b4c3b2dea0c000075424c8b73104c89c34883eb02711048b8d006620800000000488b5d08ff234d8b26498b46104d8b76184883fb017f0f49bd4887620800000000e98e080000e90b05000048b87850620800000000488b5d08ff234d89ee4c3b2d840c00000f85930000004c3b356f0c0000757a488b431048ba38706408000000004c8b7424084d89d14c89c34d89f0ff15430c00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8876208000000004c8930c2080048b87850620800000000488b5d08ff234d89f54c3b35c90b00000f85980000004c3b2db40b0000757f488b43104c8b700841f6c601750a48c7c001000000c208004c89c34d89c84d89d1ff15830b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8876208000000004c8930c2080048b87850620800000000488b5d08ff234d89ee4c3b2d090b00000f85960300004c3b35f40a00000f85790300004c8b731041ff364d8b76084d8b264d89e54983fc030f8508010000498b460848bae85c62080000000048c7c303000000ff15b00a00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40b66208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000e9190100004983fd010f8505010000498b460848bae85c62080000000048c7c303000000ff15960900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b66208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000eb0a49bd70b66208000000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8876208000000004c8930c2080048b87850620800000000488b5d08ff2348c7c001000000c2080041f6c60175414d8b1e4d8b6e084d8b034983f80175204d8d77f04c3b75107306ff5550ca091e4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0956ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09564d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09664d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09364d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09464d89ef49c745f80200000049bc90ce6708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca09264d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca09464d89ef49c745f8020000004d89750849bef8ae6208000000004d8975004d8d77d04c3b75107306ff5550ca09264d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564883eb027115488d64240848b8d006620800000000488b5d08ff234c8b70084c3b35f80400007502eb334d8b2e4e8d2c6d010000004983fd01753a49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb1848ba10d067080000000049c7c003000000ff124989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8876208000000004c8930c2080041f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bc60706408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849beb0c06208000000004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba10d067080000000049c7c00300000049c7c201000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8876208000000004c8930c20800f4000000|@10368,1,@19699,@123,@10649,@10649,@15108,@15108,@14846,@15109,@15109,@11867,@15110,@15110,@15112,@15112,@15111,@15111|51,0,@105 81,0,@1003 101,0,@621 151,0,@105 184,0,@1003 204,0,@621 249,0,@4563 351,0,@1008 367,0,@621 519,0,@1008 535,0,@621 611,0,@707 745,0,@866 790,0,@1359 885,0,@707 1019,0,@866 1064,0,@1360 1142,0,@1361 1273,0,@866 1453,0,@1008 1469,0,@621 1873,0,@10358 1922,0,@866 1966,0,@1301 2055,0,@105 2103,0,@123 2137,0,@10366 2269,0,@1008 2458,0,@1008 2852,0,@4564 2901,0,@866 2945,0,@1438 3023,0,@10366 3121,0,@1008 3310,0,@1008 14880:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a0bc620800000000c3f4000000|@1032,1,@19697|75,0,@1409 14881:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19698| 14882:D3,48|483b65187305ff5558cd014c8b70084d8b2e4983fd037505498b4608c348b898d0670800000000488b5d08ff23f40000|@10373,1,@19700|31,0,@10370 14883:D4,24|483b65187305ff5558cd01488b4018ff251b000000f40000|@10375,1,@19701,@11383| 14884:D4,344|488dbc2440ffffff483b7d187305ff5560cd016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a014889e3ff1530010000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424604c8b6c24684c8b6424704c8b5c24784c8b9424800000004c8b8c24880000004c8b842490000000488bbc2498000000488bb424a0000000488b9424a8000000488b8c24b0000000488b9c24b8000000498d8768ffffff483b45107306ff5550cace7f4989c748c740f81200000048899888000000488988800000004889507848897070488978684c8940604c8948584c8950504c8958484c8960404c8968384c8970304c8b34244c897028488d6424084c8b34244c897020488d6424084c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488da42498000000c3f400000000000000|@10398,1,@19721,@14885| 14885:D5,552|483b65187305ff5558cd094c8b70104d8b2e4d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bce8b3bd09000000004d892641564d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bc38b5bd09000000004d892641564d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bc78b7bd09000000004d89264156498d57e0483b55107306ff5550ca09204989d748c742f8030000004c896a104889420849bec8b8bd09000000004c8932498d77e0483b75107306ff5550ca0d204989f748c746f8030000004c896e104889460849be08bbbd09000000004c89364d8d77e04c3b75107306ff5550ca4d204d89f749c746f8030000004d896e104989460849bd38bebd09000000004d892e415648b8d0d367080000000048b928d467080000000048bf38d467080000000049b848d467080000000049b948d4670800000000ff35d6000000ff35c800000049ba40d567080000000049bb50d567080000000049bc48d467080000000049bd48d467080000000049be60d567080000000048890348894b08488953104889731848897b204c8943284c894b304c8b4c24084c894b384c8b4c24104c894b404c8b0c244c894b48488d6424184c8953504c895b584c8b5c24104c895b604c8963684c8b6424084c8963704c896b784c89b3800000004c8b34244c89b388000000488d64241848c7c001000000c3f40000|@10399,1,@19722,@10390,@10390|55,0,@14886 105,0,@14887 155,0,@14888 205,0,@14889 253,0,@14892 301,0,@14895 316,0,@10386 326,0,@10388 336,0,@10389 346,0,@10390 356,0,@10390 378,0,@10395 388,0,@10396 398,0,@10390 408,0,@10390 418,0,@10397 14886:D7,264|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15180100004989c641f6c60175054d8b36eb5249c7c60100000041f6c6017538498b064c8b3424498b5e08488d642408ff15df0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158d00000075464d89de4c3b357900000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e935fffffff400000000000000|@10377,1,@19702,@15109,@15109,@11082,@10580|213,0,@621 14887:D7,504|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15080200004989c641f6c60175084d8b36e93801000049c7c60100000041f6c6010f851a0100004d8b364c8b2c244d8b5d084d89dc4d8b5b10498b5b204d89e5488d6424084d8b65004d8b2c244e8d2c6d010000004983fd01750f49b80019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b153b0100000f87910000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff15f60000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8f807620800000000488b5d08ff23488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159400000075464d89de4c3b358000000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e94ffefffff4000000000000ffffffffffffff01|@10378,1,@19703,@15110,@15110,@11009,@10580|120,0,@201 334,0,@117 446,0,@621 14888:D7,264|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15180100004989c641f6c60175054d8b36eb5249c7c60100000041f6c6017538498b064c8b3424498b5e08488d642408ff15df0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158d00000075464d89de4c3b357900000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e935fffffff400000000000000|@10379,1,@19704,@15112,@15112,@11044,@10580|213,0,@621 14889:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b8b0d2670800000000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@10381,1,@19706,@14891,@10619|29,0,@10380 14890:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19705,@15109,@15109|139,0,@621 14891:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff700841ff36498b4608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@19707,@11082| 14892:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b810d3670800000000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@10383,1,@19709,@14894,@10619|29,0,@10382 14893:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19708,@15110,@15110|139,0,@621 14894:D4,408|483b65187305ff5558cd0953a8010f856b0100004c8b30ff700841ff364d8b76084c8b6c24104d8b6510498b5c24204d89ed4d8b65004d8b2c244e8d2c6d010000004983fd01750f49b80019620800000000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15090100000f87dd0000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff15b40000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e8c5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241848b8f807620800000000488b5d08ff23488d64240848c7c001000000c3f4000000ffffffffffffff01|@742,1,@19710,@11009|74,0,@201 369,0,@117 14895:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b870d3670800000000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@10385,1,@19712,@14897,@10619|29,0,@10384 14896:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19711,@15112,@15112|139,0,@621 14897:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff700841ff36498b4608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@742,1,@19713,@11044| 14898:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19714| 14899:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19715| 14900:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19716| 14901:D3,32|483b65187305ff5558cd0148b858d4670800000000488b5d08ff23f400000000|@10394,1,@19717|13,0,@10391 14902:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19718| 14903:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19719| 14904:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10387,1,@19720| 14905:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@10402,1,@19723| 14906:D4,992|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849be90c6bd09000000004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc28c7bd09000000004d89264c892c244c89742408eb1a49be78d66708000000004d8b2e4c892c244d8b76084c89742408415e415d4d8d4fe84c3b4d107306ff5550ca09604d89cf49c741f8020000004d8969084d89314c8b60084c8b70184883fb017f0b48b84887620800000000c341f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bc60706408000000004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849beb0c06208000000004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415649c7c00300000049c7c201000000ff15dc0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8876208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f4000000|@10407,1,@19728,@14872|71,0,@14907 116,0,@14908 140,0,@10404 218,0,@1003 607,0,@4564 656,0,@866 700,0,@1438 870,0,@1008 14907:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19724| 14908:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19725| 14909:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19726| 14910:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19727| 14911:D4,24|483b65187305ff5558cd01488b4018ff251b000000f40000|@10409,1,@19729,@11383| 14912:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@10411,1,@19730| 14913:D4,216|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849bed8c9bd09000000004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc70cabd09000000004d89264c892c244c89742408eb1a49bea8d76708000000004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d8930ff2520000000f400000000000000|@10423,1,@19738,@14918|71,0,@14914 116,0,@14915 140,0,@10413 14914:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10311,1,@19731| 14915:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@10311,1,@19732| 14916:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19733| 14917:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10311,1,@19734| 14918:D11,2144|483b65187306ff5558ca0901534150ff30ff7008ff7018ff70204c8b7424284c89f34983fe017f10488d64243048b84887620800000000c34c8b742418498b4610ff304d89f641ff364c8b34244d89f54c3b35590800007502eb384d89ed4d8b75004e8d3475010000004983fe01752f49bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a6750c49c7c601000000e9c10000004d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004c8b34244d89750849c74500070000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049bc90ce6708000000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca09404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049bca0876208000000004d8966084d892e41564889db4883eb027115488d64244848b8d006620800000000488b5d08ff234c8b68084c3b2d1d0700007502eb344d8b75004e8d3475010000004983fe01754049bed808620800000000498d7508498d7e0848c7c100000000483bc9f3a67402eb1e49c7c0010000004c8b4c243849c7c201000000ff15c40600004989c6eb264d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bde0d76708000000004c896b084c89334883fb017504415eeb12488b0424ff15510600004989c6488d64240841564c8b7424084d89f54c3b35300600007502eb414d89ed4d8b75004e8d3475010000004983fe010f85d800000049bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67405e9b000000048ba3891620800000000488b442410ff15ce0500004989c64d8b6e404d8b5e604d8d77e04c3b75107306ff5550ca00284d89f749c746f8030000004d896e104c8b6c24384d89ec4d896e0849bd58d4bd09000000004d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89e44d89650849bc08d5bd09000000004d8965004d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d8969084d8931eb6d4c8b6424384d8b34244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24084d895d184d89e44d8965104c8b6424304d89650849bcb8d5bd09000000004d8965004d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d8969084d89314c8b74241841f6c60175424d8b264d8b6e084d8b1c244983fb0175204d8d77f04c3b75107306ff5550ca00124d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0042ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004c8b6424284d89660849c706070000004d8d67e84c3b65107306ff5550ca00624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f80200000049bc78d86708000000004d8965084d8975004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849bd40726208000000004d892e4d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f8020000004d89750849be48c06208000000004d8975004d8d77d04c3b75107306ff5550ca00224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d67d04c3b65107306ff5550ca00424d89e749c74424f8050000004c8b2c244d896c2420488d64240849c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d896c240849bdd8706408000000004d892c244d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24404883eb027115488d64244848b8d006620800000000488b5d08ff23488b4424204c8b70084c3b35590100007502eb334d8b2e4e8d2c6d010000004983fd01753b49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb1949c7c00300000049c7c201000000ff15060100004989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8706408000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c440c3f4|@10424,1,@19739,@14872,@123,@10742,@123,@14922,@14872,@123,@123|47,0,@1003 114,0,@123 230,0,@10358 337,0,@1007 370,0,@105 419,0,@123 548,0,@10416 639,0,@123 679,0,@1078 754,0,@14919 805,0,@14920 916,0,@14921 1354,0,@10421 1403,0,@866 1447,0,@1435 1672,0,@4568 1801,0,@105 1854,0,@123 2021,0,@4568 14919:D3,136|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c641f6c601754d488d6424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7424084d8b7608498b1658488d642408ff22f400|@10420,1,@19735| 14920:D3,136|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c641f6c601754d488d6424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7424084d8b7608498b560858488d642408ff22f4|@10420,1,@19736| 14921:D3,168|483b65187305ff5558cd054c8b72184d89f4493bc67502eb364c8b304e8d3475010000004d89e54d8b24244e8d2465010000004d3bf4755f4d89ee498b0e488d7008498d7d08483bc9f3a67402eb484d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6a084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7210498b5608ff22f4000000000000|@10420,1,@19737| 14922:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19740| 14923:D3,48|483b65187305ff5558cd014c8b70104d8b2e4983fd037505498b4608c348b830d9670800000000488b5d08ff23f40000|@10429,1,@19741|31,0,@10426 14924:D4,24|483b65187305ff5558cd01488b4020ff251b000000f40000|@10431,1,@19742,@11383| 14925:D3,16|483b65187305ff5558cd01488b00c3f4|@10433,1,@19743| 14926:D5,816|483b65187305ff5558cd01ff304c8b70084d8b264d89e54983fc030f8508010000498b460848bae85c62080000000048c7c303000000ff15140300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40b66208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000e9190100004983fd010f8505010000498b460848bae85c62080000000048c7c303000000ff15fa0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40726208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58b66208000000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000eb0a49bd70b66208000000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be40726208000000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f40000000000|@10435,1,@19744,@10649,@10649|39,0,@707 173,0,@866 218,0,@1359 313,0,@707 447,0,@866 492,0,@1360 570,0,@1361 701,0,@866 14927:D3,680|483b65187305ff5558cd014d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849bd20debd09000000004d892e41564d8d4fe84c3b4d107305ff5550cd014d89cf49c741f8020000004989410849be90dfbd09000000004d8931498d7fe8483b7d107306ff5550ca01024989ff48c747f8020000004889470849be00e1bd09000000004c89374d8d57e84c3b55107306ff5550ca81024d89d749c742f8020000004989420849be70e2bd09000000004d8932498d5fe8483b5d107306ff5550ca81064989df48c743f8020000004889430849bee0e3bd09000000004c8933498d4fe8483b4d107306ff5550ca89064989cf48c741f8020000004889410849be50e5bd09000000004c89314d8d77e84c3b75107306ff5550ca8b064d89f749c746f8020000004989460849bdc0e6bd09000000004d892e4d8d67e84c3b65107306ff5550ca8b464d89e749c74424f802000000498944240849bd48e9bd09000000004d892c244d8d5fe84c3b5d107306ff5550ca8b564d89df49c743f8020000004989430849bdd0ebbd09000000004d892b4d8d6fe84c3b6d107306ff5550ca8b5e4d89ef49c745f8020000004989450849b858eebd09000000004d894500498d57e8483b55107306ff5550ca8b7e4989d748c742f8020000004889420849b8e0f0bd09000000004c89024d8d47e84c3b45107306ff5550ca8f7e4d89c749c740f8020000004989400848be68f3bd0900000000498930498d77e8483b75107306ff5550ca8f7f4989f748c746f8020000004889460848b8f0f5bd0900000000488906498d4790483b45107306ff5550cace7f4989c748c740f80d00000048895860488948584889505048897048488978404c8940384c8948304c8950284c8b14244c895020488d6424084c8958184c8960104c8968084c8930c3f400000000|@10481,1,@19910|43,0,@14928 88,0,@14930 132,0,@14932 176,0,@14934 220,0,@14936 264,0,@14938 308,0,@14940 354,0,@14943 399,0,@14946 443,0,@14949 488,0,@14952 532,0,@14955 576,0,@14958 14928:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bea8debd09000000004c8930ff251d000000f400000000|@645,1,@19746,@10582|66,0,@14929 14929:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19745,@15108,@15108,@10580|126,0,@621 14930:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be18e0bd09000000004c8930ff251d000000f400000000|@645,1,@19748,@10582|66,0,@14931 14931:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19747,@15109,@15109,@10580|126,0,@621 14932:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be88e1bd09000000004c8930ff251d000000f400000000|@645,1,@19750,@10582|66,0,@14933 14933:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19749,@15110,@15110,@10580|126,0,@621 14934:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bef8e2bd09000000004c8930ff251d000000f400000000|@645,1,@19752,@10582|66,0,@14935 14935:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19751,@15111,@15111,@10580|126,0,@621 14936:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be68e4bd09000000004c8930ff251d000000f400000000|@645,1,@19754,@10582|66,0,@14937 14937:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19753,@15112,@15112,@10580|126,0,@621 14938:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bed8e5bd09000000004c8930ff251d000000f400000000|@645,1,@19756,@10582|66,0,@14939 14939:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19755,@15113,@15113,@10580|126,0,@621 14940:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be50e7bd09000000004c8930ff251e000000f40000000000|@669,1,@19759,@10582|73,0,@14941 14941:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc0801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19757,@10597,@14942,@10580|58,0,@224 72,0,@15108 14942:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19758,@15108| 14943:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bed8e9bd09000000004c8930ff251e000000f40000000000|@669,1,@19762,@10582|73,0,@14944 14944:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc1801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19760,@10597,@14945,@10580|58,0,@224 72,0,@15109 14945:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19761,@15109| 14946:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be60ecbd09000000004c8930ff251e000000f40000000000|@669,1,@19765,@10582|73,0,@14947 14947:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc2801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19763,@10597,@14948,@10580|58,0,@224 72,0,@15110 14948:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19764,@15110| 14949:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bee8eebd09000000004c8930ff251e000000f40000000000|@669,1,@19768,@10582|73,0,@14950 14950:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc3801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19766,@10597,@14951,@10580|58,0,@224 72,0,@15111 14951:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19767,@15111| 14952:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be70f1bd09000000004c8930ff251e000000f40000000000|@669,1,@19771,@10582|73,0,@14953 14953:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc4801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19769,@10597,@14954,@10580|58,0,@224 72,0,@15112 14954:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19770,@15112| 14955:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef8f3bd09000000004c8930ff251e000000f40000000000|@669,1,@19774,@10582|73,0,@14956 14956:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc5801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19772,@10597,@14957,@10580|58,0,@224 72,0,@15113 14957:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19773,@15113| 14958:D5,88|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be80f6bd09000000004c8930ff152c000000ff251e000000f40000000000|@10437,1,@19777,@14961,@10582|59,0,@14959 14959:D4,40|483b65187305ff5558cd05488b420849b8d0da67080000000048c7c301000000ff251a000000f400|@673,1,@19776,@10619|17,0,@10436 14960:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19775,@15109,@15109|139,0,@621 14961:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@742,1,@19778| 14962:D3,952|483b65187305ff5558cd094d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd28fcbd09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd98fdbd09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd08ffbd09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd7800be09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bde801be09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd5803be09000000004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bdc804be09000000004d892e41564d8d57e84c3b55107305ff5550cd094d89d749c742f8020000004989420849be5007be09000000004d89324d8d67e84c3b65107306ff5550ca09044d89e749c74424f802000000498944240849bed809be09000000004d8934244d8d4fe84c3b4d107306ff5550ca09144d89cf49c741f8020000004989410849be600cbe09000000004d89314d8d77e84c3b75107306ff5550ca09164d89f749c746f8020000004989460849bde80ebe09000000004d892e4d8d6fe84c3b6d107306ff5550ca09564d89ef49c745f8020000004989450849bb7011be09000000004d895d00498d4fe8483b4d107306ff5550ca09764989cf48c741f8020000004889410849bbf813be09000000004c8919498d77e8483b75107306ff5550ca0b764989f748c746f8020000004889460849bbc015be09000000004c891e498d7fe8483b7d107306ff5550ca4b764989ff48c747f8020000004889470849bb8817be09000000004c891f498d57e8483b55107306ff5550cacb764989d748c742f8020000004889420849bb5019be09000000004c891a4d8d5fe84c3b5d107306ff5550cacf764d89df49c743f8020000004989430849b8181bbe09000000004d89034d8d47e84c3b45107306ff5550cacf7e4d89c749c740f8020000004989400848b8e01cbe090000000049890048890b488953084889731048897b184c8943204c8b04244c894328488d6424084c894b304c8953384c895b404c8963484c8b6424284c8963504c8b6424104c8963584c8b6424204c8963604c896b684c8b6c24184c896b704c8973784c8b34244c89b380000000488d6424084c8b34244c89b388000000488d64242848c7c001000000c3f4000000000000|@10445,1,@19828|43,0,@14963 88,0,@14965 133,0,@14967 178,0,@14969 223,0,@14971 268,0,@14973 313,0,@14975 358,0,@14978 404,0,@14981 449,0,@14984 493,0,@14987 537,0,@14990 582,0,@14993 626,0,@14996 670,0,@14999 714,0,@15002 758,0,@15005 802,0,@15008 14963:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849beb0fcbd09000000004c8930ff251d000000f400000000|@645,1,@19781,@10582|66,0,@14964 14964:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19780,@15108,@15108,@10580|126,0,@621 14965:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be20febd09000000004c8930ff251d000000f400000000|@645,1,@19783,@10582|66,0,@14966 14966:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19782,@15109,@15109,@10580|126,0,@621 14967:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be90ffbd09000000004c8930ff251d000000f400000000|@645,1,@19785,@10582|66,0,@14968 14968:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19784,@15110,@15110,@10580|126,0,@621 14969:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be0001be09000000004c8930ff251d000000f400000000|@645,1,@19787,@10582|66,0,@14970 14970:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19786,@15111,@15111,@10580|126,0,@621 14971:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be7002be09000000004c8930ff251d000000f400000000|@645,1,@19789,@10582|66,0,@14972 14972:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19788,@15112,@15112,@10580|126,0,@621 14973:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bee003be09000000004c8930ff251d000000f400000000|@645,1,@19791,@10582|66,0,@14974 14974:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87850620800000000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@631,1,@19790,@15113,@15113,@10580|126,0,@621 14975:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be5805be09000000004c8930ff251e000000f40000000000|@669,1,@19794,@10582|73,0,@14976 14976:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc0801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19792,@10597,@14977,@10580|58,0,@224 72,0,@15108 14977:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19793,@15108| 14978:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bee007be09000000004c8930ff251e000000f40000000000|@669,1,@19797,@10582|73,0,@14979 14979:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc1801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19795,@10597,@14980,@10580|58,0,@224 72,0,@15109 14980:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19796,@15109| 14981:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be680abe09000000004c8930ff251e000000f40000000000|@669,1,@19800,@10582|73,0,@14982 14982:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc2801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19798,@10597,@14983,@10580|58,0,@224 72,0,@15110 14983:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19799,@15110| 14984:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef00cbe09000000004c8930ff251e000000f40000000000|@669,1,@19803,@10582|73,0,@14985 14985:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc3801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19801,@10597,@14986,@10580|58,0,@224 72,0,@15111 14986:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19802,@15111| 14987:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be780fbe09000000004c8930ff251e000000f40000000000|@669,1,@19806,@10582|73,0,@14988 14988:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc4801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19804,@10597,@14989,@10580|58,0,@224 72,0,@15112 14989:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19805,@15112| 14990:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be0012be09000000004c8930ff251e000000f40000000000|@669,1,@19809,@10582|73,0,@14991 14991:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc281b6208000000004d89650849bc5801110a000000004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@648,1,@19807,@10597,@14992,@10580|58,0,@224 72,0,@15113 14992:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@668,1,@19808,@15113| 14993:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be7814be09000000004c8930ff251c000000f4000000|@675,1,@19812,@10582|59,0,@14994 14994:D4,40|483b65187305ff5558cd05488b420849b838db67080000000048c7c301000000ff251a000000f400|@673,1,@19811,@10619|17,0,@10439 14995:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19810,@15108,@15108|139,0,@621 14996:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be4016be09000000004c8930ff251c000000f4000000|@675,1,@19815,@10582|59,0,@14997 14997:D4,40|483b65187305ff5558cd05488b420849b848db67080000000048c7c301000000ff251a000000f400|@673,1,@19814,@10619|17,0,@10440 14998:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19813,@15109,@15109|139,0,@621 14999:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be0818be09000000004c8930ff251c000000f4000000|@675,1,@19818,@10582|59,0,@15000 15000:D4,40|483b65187305ff5558cd05488b420849b858db67080000000048c7c301000000ff251a000000f400|@673,1,@19817,@10619|17,0,@10441 15001:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19816,@15110,@15110|139,0,@621 15002:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bed019be09000000004c8930ff251c000000f4000000|@675,1,@19821,@10582|59,0,@15003 15003:D4,40|483b65187305ff5558cd05488b420849b868db67080000000048c7c301000000ff251a000000f400|@673,1,@19820,@10619|17,0,@10442 15004:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19819,@15111,@15111|139,0,@621 15005:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be981bbe09000000004c8930ff251c000000f4000000|@675,1,@19824,@10582|59,0,@15006 15006:D4,40|483b65187305ff5558cd05488b420849b878db67080000000048c7c301000000ff251a000000f400|@673,1,@19823,@10619|17,0,@10443 15007:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19822,@15112,@15112|139,0,@621 15008:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be601dbe09000000004c8930ff251c000000f4000000|@675,1,@19827,@10582|59,0,@15009 15009:D4,40|483b65187305ff5558cd05488b420849b888db67080000000048c7c301000000ff251a000000f400|@673,1,@19826,@10619|17,0,@10444 15010:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87850620800000000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@671,1,@19825,@15113,@15113|139,0,@621 15011:D3,312|483b65187306ff5558ca0903a8010f8517010000f6c3010f850e0100004c8b20488b40084c8b33488b5b084d8b2c244d8b6424084d8d57e04c3b55107306ff5550ca09734d89d749c742f8030000004d8942104d89620849c702050000004d8d5fe84c3b5d107306ff5550ca09674d89df49c743f8020000004d89730849c703030000004d8d67e84c3b65107306ff5550ca092f4d89e749c74424f8020000004d894c240849c70424010000004d8d77c04c3b75107306ff5550ca093f4d89f749c746f80700000049c746300100000049c746280100000048bf409962080000000049897e204d8956184d895e104d8966084d892e4156e804ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3397,1,@19829|218,0,@1126 15012:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19830|32,0,@105 87,0,@1823 15013:D3,160|483b65187305ff5558cd01a8010f8583000000ff30488b40084c8b34244d8b2e4983fd0d75664d89f64d8b76104983e6094983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe037534e8aaffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb05488d642408e96affffff48c7c001000000c3f400|@523,1,@19831| 15014:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19832|32,0,@105 87,0,@1823 15015:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19833|32,0,@105 87,0,@1823 15016:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19834|33,0,@105 88,0,@1823 15017:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19835|33,0,@105 88,0,@1823 15018:D3,312|483b65187306ff5558ca0903a8010f8517010000f6c3010f850e0100004c8b20488b40084c8b33488b5b084d8b2c244d8b6424084d8d57e04c3b55107306ff5550ca09734d89d749c742f8030000004d8942104d89620849c702050000004d8d5fe84c3b5d107306ff5550ca09674d89df49c743f8020000004d89730849c703030000004d8d67e84c3b65107306ff5550ca092f4d89e749c74424f8020000004d894c240849c70424010000004d8d77c04c3b75107306ff5550ca093f4d89f749c746f80700000049c746300100000049c746280100000048bf409962080000000049897e204d8956184d895e104d8966084d892e4156e804ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@3397,1,@19836|218,0,@1126 15019:D4,152|483b65187305ff5558cd01a801757c4c8b30ff7008498b0641ff7608ff158e0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@742,1,@19837,@10828| 15020:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@1032,1,@19838| 15021:D10,1832|483b65187305ff5558cd0950534d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15030700004989c64156488b0424ff15ec0600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8036308000000004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6424084d89e54d89264d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb40996208000000004d895c242049bbd8836608000000004d895c241849bb18846608000000004d895c24104d8974240849c704240b0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bc78036308000000004d89660849c7060500000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d89ed4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78036308000000004c893048c7c303000000ff15300500004989c64156488b0424ff15190500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc40996208000000004d89652049bc98f36208000000004d89651849bce0f36208000000004d8965104d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda8036308000000004d896e0849c7060500000041564c8b7424204d8b2e4e8d2c6d010000004983fd01750f48b8c8db670800000000e9af0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7a0300000f874b0300004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bcc8db67080000000048c7c10b000000498d742408488d780848d1e9f3a44c89e94d89f6498d7608488d780d48d1e9f3a48060ffbfff15250300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e41564c8b7424284d8b2e4e8d2c6d010000004983fd01750f48b8e0db670800000000e9af0000004d89ec4983c40c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6c0200000f87300200004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bce0db67080000000048c7c10d000000498d742408488d780848d1e9f3a44c89e94d89f6498d7608488d780e48d1e9f3a48060ffbfff15170200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e41564c8b7424304d8b2e4a8d0c6d010000004883f901750f48b8f8db670800000000e9990000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b255e0100000f87150100004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400861c640096cc6400a6c4d89f6498d7608488d780b48d1e9f3a48060ffbfff151f0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c420c3488d64243848b8f807620800000000488b5d08ff23488d64243048b8f807620800000000488b5d08ff23488d64242848b8f807620800000000488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10449,1,@19839,@10828,@10828,@10828,@11066,@10822,@11066,@10822|85,0,@1868 254,0,@1869 352,0,@1126 367,0,@8012 382,0,@8014 441,0,@1868 536,0,@1868 743,0,@1126 757,0,@1736 771,0,@1738 828,0,@1869 873,0,@10446 1009,0,@10446 1135,0,@10447 1271,0,@10447 1397,0,@10448 1748,0,@117 1769,0,@117 1790,0,@117 15022:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19840|33,0,@105 88,0,@1823 15023:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19841|33,0,@105 88,0,@1823 15024:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19842|33,0,@105 88,0,@1823 15025:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19843|33,0,@105 88,0,@1823 15026:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19844|33,0,@105 88,0,@1823 15027:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19845|33,0,@105 88,0,@1823 15028:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19846|33,0,@105 88,0,@1823 15029:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19847|89,0,@4664 15030:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19848|32,0,@105 87,0,@1823 15031:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19849|32,0,@105 87,0,@1823 15032:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19850|33,0,@105 88,0,@1823 15033:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19851|89,0,@4664 15034:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19852|32,0,@105 87,0,@1823 15035:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19853|32,0,@105 87,0,@1823 15036:D6,848|483b65187305ff5558cd014d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004989461049bd989f6208000000004d896e0849c7062b00000041564c8d35080000004d8d7486fc41ffe6e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bc787a630800000000e9a000000049bc587b630800000000e99100000049bc387c630800000000e98200000049bc187d630800000000eb7649bcf87d630800000000eb6a49bcd87e630800000000eb5e49bcb87f630800000000eb5249bc9880630800000000eb4649bc7881630800000000eb3a49bc5882630800000000eb2e49bc3883630800000000eb2249bc1084630800000000eb1649bce884630800000000eb0a49bcc8856308000000004d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15890100000f876c0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b353a0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15e00000004989c6415648c7c001000000ff15c60000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3488d64240848b8f807620800000000488b5d08ff23f400ffffffffffffff01|@10450,1,@19854,@15038,@15037,@123|43,0,@1171 193,0,@2817 208,0,@2824 223,0,@2831 238,0,@2838 250,0,@2845 262,0,@2852 274,0,@2859 286,0,@2866 298,0,@2873 310,0,@2880 322,0,@2887 334,0,@2894 346,0,@2901 358,0,@2908 386,0,@1396 597,0,@123 631,0,@7652 824,0,@117 15037:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19856|89,0,@4664 15038:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19855|33,0,@105 88,0,@1823 15039:D7,568|483b65187305ff5558cd014d8d77d84c3b75107305ff5550cd014d89f749c746f8040000004989461849bd304e6608000000004d896e1049bdb04d6608000000004d896e0849c706070000004156ff15140200004989c44d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15880100000f876c0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b35390100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15df0000004989c6415648c7c001000000ff15c50000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3488d64240848b8f807620800000000488b5d08ff23f4ffffffffffffff01|@10451,1,@19857,@15041,@15040,@123,@12132|43,0,@7678 57,0,@7674 107,0,@1396 318,0,@123 352,0,@7652 545,0,@117 15040:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19859|89,0,@4664 15041:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19858|33,0,@105 88,0,@1823 15042:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19860|33,0,@105 88,0,@1823 15043:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19861|33,0,@105 88,0,@1823 15044:D7,1168|483b65187305ff5558cd015048b8a0dc670800000000ff15a40400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcf8226708000000004d8966104d896e0849c7060f0000004d8d67d04c3b65107306ff5550ca00404d89e749c74424f80500000049bdd8dc6708000000004d896c24204d897424184c8b2c244d89ee4d896c241049bd304e6608000000004d896c240849bdb04d6608000000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000300000041554d89f64d8b2e4983fd0175784d89f64d8b76084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849be50bf640800000000eb4649be68bf640800000000eb3a49be80bf640800000000eb2e49be98bf640800000000eb2249beb0bf640800000000eb1649bec8bf640800000000eb0a49bee0bf640800000000eb594d89f64d8b76084983fe05750c49bef8bf640800000000eb404983fe03750c49be18c0640800000000eb2e4983fe09750c49be30c0640800000000eb1c4983fe07750c49be50c0640800000000eb0a49be88a06308000000004d8b2e4e8d2c6d010000004983fd01750f49bc5836630800000000e9b30000004d89eb4983c3124c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b157e0200000f87590200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb583663080000000048c7c113000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee8ba620800000000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15a20100000f87700100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b355b0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648c7c001000000ff15010100004989c6415648c7c001000000ff15e70000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c408c3488d64241048b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@10457,1,@19862,@15046,@15047,@123,@15045|14,0,@10452 68,0,@8962 121,0,@10454 153,0,@7678 168,0,@7674 271,0,@5105 283,0,@5106 295,0,@5107 307,0,@5108 319,0,@5109 331,0,@5110 343,0,@5111 368,0,@5112 386,0,@5113 404,0,@5114 422,0,@5115 434,0,@3132 461,0,@2253 601,0,@2253 673,0,@1396 884,0,@123 918,0,@7652 1115,0,@117 1136,0,@117 15045:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@742,1,@19865| 15046:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19863|33,0,@105 88,0,@1823 15047:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19864|89,0,@4664 15048:D17,1736|483b65187306ff5558ca09015053415048bae85c620800000000488b44241048c7c303000000ff151c0700004989c6415648bae85c620800000000488b44241048c7c303000000ff15f30600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef81a6208000000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be30df6708000000004c8930ff15380600004989c641564c8b7424184c89f34983fe017d15488d64242048b83060620800000000488b5d08ff2348c7c001000000ff15fb050000ff15ed050000ff15df0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48fe6208000000004d8966104d896e0849c7060f0000004d8d67d04c3b65107306ff5550ca00404d89e749c74424f8050000004d897424204c8b6c24104d89ee4d896c241849c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d89f64c89f34983fe017d15488d64242848b83060620800000000488b5d08ff2348c7c001000000ff15f90400004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f00000041564c8b6424084d8b34244e8d2c75010000004983fd01750f49bea0a3660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15cb0300000f87af0300004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf4c3b358d0300007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648b848df670800000000ff15300300004989c6415648c7c001000000ff15160300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300300000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24104d896e0849c7060d000000415648b8f048660800000000ff153b0200004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100100000049c746080100000049c706030000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017504415eeb334d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f00000041564c8b7424084d89f54c3b35490100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742408415648c7c001000000ff15e30000004989c6415648c7c001000000ff15c90000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300300000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c3488d64242848b8f807620800000000488b5d08ff23f4ffffffffffffff01|@10478,1,@19866,@15050,@13655,@123,@13572,@15051,@13655,@123,@15052,@13572,@15053,@15049,@10502,@10649,@10649|18,0,@707 51,0,@707 151,0,@222 239,0,@10476 282,0,@731 361,0,@1822 516,0,@731 696,0,@8232 922,0,@123 956,0,@7652 970,0,@10477 1199,0,@7637 1474,0,@123 1511,0,@7652 1713,0,@117 15049:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@19871|64,0,@1171 98,0,@105 15050:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19867|33,0,@105 88,0,@1823 15051:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19868|33,0,@105 88,0,@1823 15052:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bdc8e06508000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@19869|64,0,@7009 98,0,@105 15053:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b848df670800000000c3f4000000|@1032,1,@19870|75,0,@10477 15054:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19872|32,0,@105 87,0,@1823 15055:D13,1464|483b65187305ff5558cd09505348bae85c620800000000488b44240848c7c303000000ff15ef0500004989c54d8b75004e8d2475010000004983fc01750f49beb0df670800000000e9ad0000004d89e34983c30e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15330500000f870e0500004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbb0df67080000000048c7c10f000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0f48d1e9f3a4418066ffbf41564c8b7424104c89f34983fe017d15488d64241848b83060620800000000488b5d08ff2348c7c001000000ff15e4040000ff15d60400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48fe6208000000004d8966104d896e0849c7060f00000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24104d896e0849c7060d000000415648b8f048660800000000ff154b0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6424104d8b34244e8d2c75010000004983fd01750f49bea0a3660800000000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b155d0300000f872b0300004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf4c3b351f0300007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd808620800000000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb00415648b848df670800000000ff15c20200004989c6415648c7c001000000ff15a80200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b6c24084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004d8d77d84c3b75107306ff5550ca00104d89f749c746f8040000004c8b2c244d896e18488d64241049c746100100000049c746080100000049c706030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f00000041564c8b7424084d89f54c3b35670100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8086208000000004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec04a660800000000eb054c8b742408415648c7c001000000ff15010100004989c6415648c7c001000000ff15e70000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300300000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c3488d64242848b8f807620800000000488b5d08ff23488d64241048b8f807620800000000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@10480,1,@19873,@15057,@13655,@123,@15058,@13655,@123,@13572,@13572,@15056,@10649|15,0,@707 64,0,@10479 201,0,@10479 273,0,@731 346,0,@1822 423,0,@7637 526,0,@8232 752,0,@123 786,0,@7652 800,0,@10477 1172,0,@123 1209,0,@7652 1411,0,@117 1432,0,@117 15056:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd989f6208000000004d896e0849c7061700000041564883c0027115488d64240848b8d006620800000000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@741,1,@19876|64,0,@1171 98,0,@105 15057:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19874|33,0,@105 88,0,@1823 15058:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19875|33,0,@105 88,0,@1823 15059:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19877|32,0,@105 87,0,@1823 15060:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19878|32,0,@105 87,0,@1823 15061:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19879|32,0,@105 87,0,@1823 15062:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19880|32,0,@105 87,0,@1823 15063:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19881|32,0,@105 87,0,@1823 15064:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19882|32,0,@105 87,0,@1823 15065:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19883|32,0,@105 87,0,@1823 15066:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19884|33,0,@105 88,0,@1823 15067:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19885|32,0,@105 87,0,@1823 15068:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19886|33,0,@105 88,0,@1823 15069:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19887|32,0,@105 87,0,@1823 15070:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19888|33,0,@105 88,0,@1823 15071:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d87e640800000000488b5d08ff2348c7c001000000c3f4|@742,1,@19889|89,0,@4664 15072:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19890|32,0,@105 87,0,@1823 15073:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19891|32,0,@105 87,0,@1823 15074:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19892|32,0,@105 87,0,@1823 15075:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19893|32,0,@105 87,0,@1823 15076:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19894|32,0,@105 87,0,@1823 15077:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19895|32,0,@105 87,0,@1823 15078:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19896|32,0,@105 87,0,@1823 15079:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19897|32,0,@105 87,0,@1823 15080:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19898|32,0,@105 87,0,@1823 15081:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19899|32,0,@105 87,0,@1823 15082:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19900|32,0,@105 87,0,@1823 15083:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19901|32,0,@105 87,0,@1823 15084:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19902|32,0,@105 87,0,@1823 15085:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19903|32,0,@105 87,0,@1823 15086:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19904|32,0,@105 87,0,@1823 15087:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19905|32,0,@105 87,0,@1823 15088:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f400000000|@741,1,@19906|32,0,@105 87,0,@1823 15089:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19907|33,0,@105 88,0,@1823 15090:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19908|33,0,@105 88,0,@1823 15091:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d006620800000000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60fe6208000000004c8930c3f4000000|@741,1,@19909|33,0,@105 88,0,@1823 15092:MO1|@54 15093:MO1|1 15094:MO1|0 15095:MO1|0 15096:MO1|0 15097:MO1|@100 15098:MO1|@107 15099:MO1|@113 15100:MO1|0 15101:MO1|@410 15102:MO1|@439 15103:MO1|0 15104:MO1|@571 15105:MO1|2 15106:MO1|0 15107:MO1|0 15108:MO1|@632 15109:MO1|@632 15110:MO1|@632 15111:MO1|@632 15112:MO1|@632 15113:MO1|@632 15114:MO1|@632 15115:MO1|@632 15116:MO1|@632 15117:MO1|@725 15118:MO1|@632 15119:MO1|@632 15120:MO1|@632 15121:MO1|@632 15122:MO1|@632 15123:MO1|@632 15124:MO1|@632 15125:MO1|@632 15126:MO1|@632 15127:MO1|@632 15128:MO1|@632 15129:MO1|@632 15130:MO1|@632 15131:MO1|@632 15132:MO1|@632 15133:MO1|@632 15134:MO1|@632 15135:MO1|@632 15136:MO1|@632 15137:MO1|@632 15138:MO1|@632 15139:MO1|@632 15140:MO1|@830 15141:MO1|0 15142:MO1|0 15143:MO1|0 15144:MO1|@1123 15145:MO1|@1137 15146:MO1|@632 15147:MO1|1 15148:MO1|0 15149:MO1|@1198 15150:MO1|1 15151:MO1|@1137 15152:MO1|1 15153:MO1|@1137 15154:MO1|1 15155:MO1|@1137 15156:MO1|@1310 15157:MO1|@4706 15158:MO1|0 15159:MO1|@1137 15160:MO1|1 15161:MO1|0 15162:MO1|1 15163:MO1|1 15164:MO1|1 15165:MO1|1 15166:MO1|@1650 15167:MO1|@632 15168:MO1|@1098 15169:MO1|@1750 15170:MO1|1 15171:MO1|0 15172:MO1|@1940 15173:MO1|0 15174:MO1|@3290 15175:MO1|@1972 15176:MO1|@1983 15177:MO1|@3176 15178:MO1|@1996 15179:MO1|@2214 15180:MO1|@1997 15181:MO1|@632 15182:MO1|@2012 15183:MO1|@2020 15184:MO1|@2060 15185:MO1|@2152 15186:MO1|@2120 15187:MO1|@2133 15188:MO1|@2181 15189:MO1|@3111 15190:MO1|@2222 15191:MO1|@3007 15192:MO1|@2259 15193:MO1|@2287 15194:MO1|@2488 15195:MO1|@2377 15196:MO1|@2428 15197:MO1|@2465 15198:MO1|@2525 15199:MO1|@2572 15200:MO1|@2584 15201:MO1|@2662 15202:MO1|@2760 15203:MO1|@2810 15204:MO1|@2917 15205:MO1|@2933 15206:MO1|@2962 15207:MO1|@2991 15208:MO1|@3054 15209:MO1|@3074 15210:MO1|@3188 15211:MO1|@3203 15212:MO1|@3240 15213:MO1|0 15214:MO1|@4122 15215:MO1|@3477 15216:MO1|@3477 15217:MO1|@3176 15218:MO1|@2060 15219:MO1|@1996 15220:MO1|@3598 15221:MO1|@4258 15222:MO1|@3715 15223:MO1|@3920 15224:MO1|@3931 15225:MO1|@3932 15226:MO1|@3933 15227:MO1|@3971 15228:MO1|@3934 15229:MO1|@3952 15230:MO1|@4122 15231:MO1|@4145 15232:MO1|@3598 15233:MO1|@4173 15234:MO1|@4195 15235:MO1|@4211 15236:MO1|@4234 15237:MO1|@4145 15238:MO1|@3188 15239:MO1|@4614 15240:MO1|@4799 15241:MO1|@4874 15242:MO1|@4836 15243:MO1|@4837 15244:MO1|@3715 15245:MO1|@5052 15246:MO1|@4891 15247:MO1|@3920 15248:MO1|@4920 15249:MO1|@4920 15250:MO1|@2152 15251:MO1|@4956 15252:MO1|@6737 15253:MO1|@5502 15254:MO1|@6591 15255:MO1|@6604 15256:MO1|@6648 15257:MO1|@6705 15258:MO1|@6663 15259:MO1|@6680 15260:MO1|@6706 15261:MO1|@6715 15262:MO1|@6728 15263:MO1|@6866 15264:MO1|@632 15265:MO1|@632 15266:MO1|0 15267:MO1|0 15268:MO1|0 15269:MO1|0 15270:MO1|0 15271:MO1|32 15272:MO1|@123 15273:MO1|48 15274:MO1|0 15275:MO1|41 15276:MO1|@1137 15277:MO1|1 15278:MO1|0 15279:MO1|@7998 15280:MO1|@1098 15281:MO1|1 15282:MO1|@8095 15283:MO1|@8098 15284:MO1|0 15285:MO1|0 15286:MO1|0 15287:MO1|0 15288:MO1|0 15289:MO1|@8564 15290:MO1|@5753 15291:MO1|@1098 15292:MO1|@8894 15293:MO1|@1098 15294:MO1|@8894 15295:MO1|@1098 15296:MO1|@8894 15297:MO1|@1137 15298:MO1|0 15299:MO1|0 15300:MO1|0 0:MVO1|0 1:MVO1|@61 2:MVO1|1 3:MVO1|1 4:MVO1|1 5:MVO1|0 6:MVO1|0 7:MVO1|1 8:MVO1|1 9:MVO1|@568 10:MVO1|1 11:MVO1|@591 12:MVO1|1 13:MVO1|1 15301:MB8|0000000000000000 15302:MB4096|4372656174656420737472756374757265204d4c436f6d70696c65720a73696f6e0a0a69670a670a540a46554e4354494f4e530a290a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 15303:MB8|0000000000000000 15304:MB8|0000000000000000 15305:MB8|0000000000000000 15306:MB8|0000000000000000 15307:MB8|0000000000000000 15308:MB8|0000000000000000 15309:MB8|0000000000000000 15310:MB8|0000000000000000 15311:MB8|0000000000000000 15312:MB8|0000000000000000 15313:MB8|0000000000000000 15314:MB8|0000000000000000 15315:MB8|0000000000000000 15316:MB8|0000000000000000 15317:MB8|0000000000000000 15318:MB8|0000000000000000 15319:MB8|0000000000000000 15320:MB8|0000000000000000 15321:MB8|0000000000000000 15322:MB8|0000000000000000 15323:MB8|0000000000000000 15324:MB8|0000000000000000 15325:MB8|0000000000000000 15326:MB8|0000000000000000 15327:MB8|0000000000000000 15328:MB8|0000000000000000 15329:MB8|0000000000000000 15330:MB8|0000000000000000 15331:MB8|0000000000000000 15332:MB8|0000000000000000 15333:MB8|0000000000000000 15334:MB8|0000000000000000 15335:MB8|0000000000000000 15336:MB8|0000000000000000 15337:MB8|0000000000000000 15338:MB8|0000000000000000 15339:MB8|0000000000000000 15340:MB8|0000000000000000 15341:MB8|0000000000000000 15342:MB8|0000000000000000 15343:MB8|0000000000000000 15344:MB8|0000000000000000 15345:MB8|0000000000000000 15346:MB8|0000000000000000 15347:MB8|0000000000000000 15348:MB8|0000000000000000 15349:MB8|0000000000000000 15350:MB8|0000000000000000 15351:MB8|0000000000000000 15352:MB8|0000000000000000 15353:MB8|0000000000000000 15354:MB8|0000000000000000 15355:MB8|0000000000000000 15356:MB8|0000000000000000 15357:MB8|0000000000000000 15358:MB8|0000000000000000 15359:MB8|0000000000000000 15360:MB8|0000000000000000 15361:MB8|0000000000000000 15362:MB8|0000000000000000 15363:MB8|0000000000000000 15364:MB8|0000000000000000 15365:MB8|0000000000000000 15366:MB8|0000000000000000 15367:MB8|0000000000000000 15368:MB8|0000000000000000 15369:MB8|0000000000000000 15370:MB8|0000000000000000 15371:MB8|0000000000000000 15372:MB8|0000000000000000 15373:MB8|0000000000000000 15374:MB8|0000000000000000 15375:MB8|0000000000000000 15376:MB8|0000000000000000 15377:MB8|0000000000000000 15378:MB8|0000000000000000 15379:MB8|0000000000000000 15380:MB8|0000000000000000 15381:MB8|0000000000000000 15382:MB8|0000000000000000 15383:MB8|0000000000000000 15384:MB8|0000000000000000 15385:MB8|0000000000000000 15386:MB8|0000000000000000 15387:MB8|0000000000000000 15388:MB8|0000000000000000 15389:MB4096|20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 15390:MB8|0000000000000000 15391:MB8|0000000000000000 15392:MB8|0000000000000000 15393:MB8|0000000000000000 15394:MB8|0000000000000000 15395:MB8|0000000000000000 15396:MB8|0000000000000000 15397:MB8|0000000000000000 15398:MB8|0000000000000000 15399:MB8|0000000000000000 15400:MB8|0000000000000000 15401:MB8|0000000000000000 15402:MB8|0000000000000000 15403:MB8|0000000000000000 15404:MB8|0000000000000000 15405:MB8|0000000000000000 15406:MB8|0000000000000000 15407:MB8|0000000000000000 15408:MB8|0000000000000000 15409:MB8|0000000000000000 15410:MB8|0000000000000000 15411:MB8|0000000000000000 15412:MB8|0000000000000000 15413:MB8|0000000000000000 15414:MB8|0000000000000000 15415:MB8|0000000000000000 15416:MB8|0000000000000000 15417:MB8|0000000000000000 15418:MB8|0000000000000000 15419:MB8|0000000000000000 15420:MB8|0000000000000000 15421:MB8|0000000000000000 15422:MB8|0000000000000000 15423:MB8|0000000000000000 15424:MB8|0000000000000000 15425:MB8|0000000000000000 15426:MB8|0000000000000000 15427:MB8|0000000000000000 15428:MB8|0000000000000000 15429:MB8|0000000000000000 15430:MB8|0000000000000000 15431:MB8|0000000000000000 15432:MB8|0000000000000000 15433:MB8|0000000000000000 15434:MB8|0000000000000000 15435:MB8|0000000000000000 15436:MB8|0000000000000000 15437:MB8|0000000000000000 15438:MB8|0000000000000000 15439:MB8|0000000000000000 15440:MB8|0000000000000000 15441:MB8|0000000000000000 15442:MB8|0000000000000000 15443:MB8|0000000000000000 15444:MB8|0000000000000000 15445:MB8|0000000000000000 15446:MB8|0000000000000000 15447:MB8|0000000000000000 15448:MB8|0000000000000000 15449:MB8|0000000000000000 15450:MB8|0000000000000000 15451:MB8|0000000000000000 15452:MB8|0000000000000000 15453:MB8|0000000000000000 15454:MB8|0000000000000000 15455:MB8|0000000000000000 15456:MB8|0000000000000000 15457:MB8|0000000000000000 15458:MB8|0000000000000000 15459:MB8|0000000000000000 15460:MB8|0000000000000000 15461:MB8|0000000000000000 15462:MB8|0000000000000000 15463:MB8|0000000000000000 15464:MB8|0000000000000000 15465:MB8|0000000000000000 15466:MB8|0000000000000000 15467:MB8|0000000000000000 15468:MB8|0000000000000000 15469:MB8|0000000000000000 15470:MB8|0000000000000000 15471:MB8|0000000000000000 15472:MB8|0000000000000000 15473:MB8|0000000000000000 15474:MB8|0000000000000000 15475:MB8|0000000000000000 15476:MB8|0000000000000000 15477:MB8|0000000000000000 15478:MB8|0000000000000000 15479:MB8|0000000000000000 15480:MB8|0000000000000000 15481:MB8|0000000000000000 15482:MB8|0000000000000000 15483:MB8|0000000000000000 15484:MB8|0000000000000000 15485:MB8|0000000000000000 15486:MB8|0000000000000000 15487:MB8|0000000000000000 15488:MB8|0000000000000000 15489:MB8|0000000000000000 15490:MB8|0000000000000000 15491:MB8|0000000000000000 15492:MB8|0000000000000000 15493:MB8|0000000000000000 15494:MB8|0000000000000000 15495:MB8|0000000000000000 15496:MB8|0000000000000000 15497:MB8|0000000000000000 15498:MB8|0000000000000000 15499:MB8|0000000000000000 15500:MB8|0000000000000000 15501:MB8|0000000000000000 15502:MB8|0000000000000000 15503:MB8|0000000000000000 15504:MB8|0000000000000000 15505:MB8|0000000000000000 15506:MB8|0000000000000000 15507:MB8|0000000000000000 15508:MB8|0000000000000000 15509:MB8|0000000000000000 15510:MB8|0000000000000000 15511:MB8|0000000000000000 15512:MB8|0000000000000000 15513:MB8|0000000000000000 15514:MB8|0000000000000000 15515:MB8|0000000000000000 15516:MB8|0000000000000000 15517:MB8|0000000000000000 15518:MB8|0000000000000000 15519:MB8|0000000000000000 15520:MB8|0000000000000000 15521:MB8|0000000000000000 15522:MB8|0000000000000000 15523:MB8|0000000000000000 15524:MB8|0000000000000000 15525:MB8|0000000000000000 15526:MB8|0000000000000000 15527:MB8|0000000000000000 15528:MB8|0000000000000000 15529:MB8|0000000000000000 15530:MB8|0000000000000000 15531:MB8|0000000000000000 15532:MB8|0000000000000000 15533:MB8|0000000000000000 15534:MB8|0000000000000000 15535:MB8|0000000000000000 15536:MB8|0000000000000000 15537:MB8|0000000000000000 15538:MB8|0000000000000000 15539:MB8|0000000000000000 15540:MB8|0000000000000000 15541:MB8|0000000000000000 15542:MB8|0000000000000000 15543:MB8|0000000000000000 15544:MB8|0000000000000000 15545:MB8|0000000000000000 15546:MB8|0000000000000000 15547:MB8|0000000000000000 15548:MB8|0000000000000000 15549:MB8|0000000000000000 15550:MB8|0000000000000000 15551:MB8|0000000000000000 15552:MB8|0000000000000000 15553:MB8|0000000000000000 15554:MB8|0000000000000000 15555:MB8|0000000000000000 15556:MB8|0000000000000000 15557:MB8|0000000000000000 15558:MB8|0000000000000000 15559:MB8|0000000000000000 15560:MB8|0000000000000000 15561:MB8|0000000000000000 15562:MB8|0000000000000000 15563:MB8|0000000000000000 15564:MB8|0000000000000000 15565:MB8|0000000000000000 15566:MB8|0000000000000000 15567:MB8|0000000000000000 15568:MB8|0000000000000000 15569:MB8|0000000000000000 15570:MB8|0000000000000000 15571:MB8|0000000000000000 15572:MB8|0000000000000000 15573:MB8|0000000000000000 15574:MB8|0000000000000000 15575:MB8|0000000000000000 15576:MB8|0000000000000000 15577:MB8|0000000000000000 15578:MB8|0000000000000000 15579:MB8|0000000000000000 15580:MB8|0000000000000000 15581:MB8|0000000000000000 15582:MB8|0000000000000000 15583:MB8|0000000000000000 15584:MB8|0000000000000000 15585:MB8|0000000000000000 15586:MB8|0000000000000000 15587:MB8|0000000000000000 15588:MB8|0000000000000000 15589:MB8|0000000000000000 15590:MB8|0000000000000000 15591:MB8|0000000000000000 15592:MB8|0000000000000000 15593:MB8|0000000000000000 15594:MB8|0000000000000000 15595:MB8|0000000000000000 15596:MB8|0000000000000000 15597:MB8|0000000000000000 15598:MB8|0000000000000000 15599:MB8|0000000000000000 15600:MB8|0000000000000000 15601:MB8|0000000000000000 15602:MB8|0000000000000000 15603:MB8|0000000000000000 15604:MB8|0000000000000000 15605:MB8|0000000000000000 15606:MB8|0000000000000000 15607:MB8|0000000000000000 15608:MB8|0000000000000000 15609:MB8|0000000000000000 15610:MB8|0000000000000000 15611:MB8|0000000000000000 15612:MB8|0000000000000000 15613:MB8|0000000000000000 15614:MB8|0000000000000000 15615:MB8|0000000000000000 15616:MB8|0000000000000000 15617:MB8|0000000000000000 15618:MB8|0000000000000000 15619:MB8|0000000000000000 15620:MB8|0000000000000000 15621:MB8|0000000000000000 15622:MB8|0000000000000000 15623:MB8|0000000000000000 15624:MB8|0000000000000000 15625:MB8|0000000000000000 15626:MB8|0000000000000000 15627:MB8|0000000000000000 15628:MB8|0000000000000000 15629:MB8|0000000000000000 15630:MB8|0000000000000000 15631:MB8|0000000000000000 15632:MB8|0000000000000000 15633:MB8|0000000000000000 15634:MB8|0000000000000000 15635:MB8|0000000000000000 15636:MB8|0000000000000000 15637:MB8|0000000000000000 15638:MB8|0000000000000000 15639:MB8|0000000000000000 15640:MB8|0000000000000000 15641:MB8|0000000000000000 15642:MB8|0000000000000000 15643:MB8|0000000000000000 15644:MB8|0000000000000000 15645:MB8|0000000000000000 15646:MB8|0000000000000000 15647:MB8|0000000000000000 15648:MB8|0000000000000000 15649:MB8|0000000000000000 15650:MB8|0000000000000000 15651:MB8|0000000000000000 15652:MB8|0000000000000000 15653:MB8|0000000000000000 15654:MB8|0000000000000000 15655:MB8|0000000000000000 15656:MB8|0000000000000000 15657:MB8|0000000000000000 15658:MB8|0000000000000000 15659:MB8|0000000000000000 15660:MB8|0000000000000000 15661:MB8|0000000000000000 15662:MB8|0000000000000000 15663:MB8|0000000000000000 15664:MB8|0000000000000000 15665:MB8|0000000000000000 15666:MB8|0000000000000000 15667:MB8|0000000000000000 15668:MB8|0000000000000000 15669:MB8|0000000000000000 15670:MB8|0000000000000000 15671:MB8|0000000000000000 15672:MB8|0000000000000000 15673:MB8|0000000000000000 15674:MB8|0000000000000000 15675:MB8|0000000000000000 15676:MB8|0000000000000000 15677:MB8|0000000000000000 15678:MB8|0000000000000000 15679:MB8|0000000000000000 15680:MB8|0000000000000000 15681:MB8|0000000000000000 15682:MB8|0000000000000000 15683:MB8|0000000000000000 15684:MB8|0000000000000000 15685:MB8|0000000000000000 15686:MB8|0000000000000000 15687:MB8|0000000000000000 15688:MB8|0000000000000000 15689:MB8|0000000000000000 15690:MB8|0000000000000000 15691:MB8|0000000000000000 15692:MB8|0000000000000000 15693:MB8|0000000000000000 15694:MB8|0000000000000000 15695:MB8|0000000000000000 15696:MB8|0000000000000000 15697:MB8|0000000000000000 15698:MB8|0000000000000000 15699:MB8|0000000000000000 15700:MB8|0000000000000000 15701:MB8|0000000000000000 15702:MB8|0000000000000000 15703:MB8|0000000000000000 15704:MB8|0000000000000000 15705:MB8|0000000000000000 15706:MB8|0000000000000000 15707:MB8|0000000000000000 15708:MB8|0000000000000000 15709:MB8|0000000000000000 15710:MB8|0000000000000000 15711:MB8|0000000000000000 15712:MB8|0000000000000000 15713:MB8|0000000000000000 15714:MB8|0000000000000000 15715:MB8|0000000000000000 15716:MB8|0000000000000000 15717:MB8|0000000000000000 15718:MB8|0000000000000000 15719:MB8|0000000000000000 15720:MB8|0000000000000000 15721:MB8|0000000000000000 15722:MB8|0000000000000000 15723:MB8|0000000000000000 15724:MB8|0000000000000000 15725:MB8|0000000000000000 15726:MB8|0000000000000000 15727:MB8|0000000000000000 15728:MB8|0000000000000000 15729:MB8|0000000000000000 15730:MB8|0000000000000000 15731:MB8|0000000000000000 15732:MB8|0000000000000000 15733:MB8|0000000000000000 15734:MB8|0000000000000000 15735:MB8|0000000000000000 15736:MB8|0000000000000000 15737:MB8|0000000000000000 15738:MB8|0000000000000000 15739:MB8|0000000000000000 15740:MB8|0000000000000000 15741:MB8|0000000000000000 15742:MB8|0000000000000000 15743:MB8|0000000000000000 15744:MB8|0000000000000000 15745:MB8|0000000000000000 15746:MB8|0000000000000000 15747:MB8|0000000000000000 15748:MB8|0000000000000000 15749:MB8|0000000000000000 15750:MB8|0000000000000000 15751:MB8|0000000000000000 15752:MB8|0000000000000000 15753:MB8|0000000000000000 15754:MB8|0000000000000000 15755:MB8|0000000000000000 15756:MB8|0000000000000000 15757:MB8|0000000000000000 15758:MB8|0000000000000000 15759:MB8|0000000000000000 15760:MB8|0000000000000000 15761:MB8|0000000000000000 15762:MB8|0000000000000000 15763:MB8|0000000000000000 15764:MB8|0000000000000000 15765:MB8|0000000000000000 15766:MB8|0000000000000000 15767:MB8|0000000000000000 15768:MB8|0000000000000000 15769:MB8|0000000000000000 15770:MB8|0000000000000000 15771:MB8|0000000000000000 15772:MB8|0000000000000000 15773:MB8|0000000000000000 15774:MB8|0000000000000000 15775:MB8|0000000000000000 15776:MB8|0000000000000000 15777:MB8|0000000000000000 15778:MB8|0000000000000000 15779:MB8|0000000000000000 15780:MB8|0000000000000000 15781:MB8|0000000000000000 15782:MB8|0000000000000000 15783:MB8|0000000000000000 15784:MB8|0000000000000000 15785:MB8|0000000000000000 15786:MB8|0000000000000000 15787:MB8|0000000000000000 15788:MB8|0000000000000000 15789:MB8|0000000000000000 15790:MB8|0000000000000000 15791:MB8|0000000000000000 15792:MB8|0000000000000000 15793:MB8|0000000000000000 15794:MB8|0000000000000000 15795:MB8|0000000000000000 15796:MB8|0000000000000000 15797:MB8|0000000000000000 15798:MB8|0000000000000000 15799:MB8|0000000000000000 15800:MB8|0000000000000000 15801:MB8|0000000000000000 15802:MB8|0000000000000000 15803:MB8|0000000000000000 15804:MB8|0000000000000000 15805:MB8|0000000000000000 15806:MB8|0000000000000000 15807:MB8|0000000000000000 15808:MB8|0000000000000000 15809:MB8|0000000000000000 15810:MB8|0000000000000000 15811:MB8|0000000000000000 15812:MB8|0000000000000000 15813:MB8|0000000000000000 15814:MB8|0000000000000000 15815:MB8|0000000000000000 15816:MB8|0000000000000000 15817:MB8|0000000000000000 15818:MB8|0000000000000000 15819:MB8|0000000000000000 15820:MB8|0000000000000000 15821:MB8|0000000000000000 15822:MB8|0000000000000000 15823:MB8|0000000000000000 15824:MB8|0000000000000000 15825:MB8|0000000000000000 15826:MB8|0000000000000000 15827:MB8|0000000000000000 15828:MB8|0000000000000000 15829:MB8|0000000000000000 15830:MB8|0000000000000000 15831:MB8|0000000000000000 15832:MB8|0000000000000000 15833:MB8|0000000000000000 15834:MB8|0000000000000000 15835:MB8|0000000000000000 15836:MB8|0000000000000000 15837:MB8|0000000000000000 15838:MB8|0000000000000000 15839:MB8|0000000000000000 15840:MB8|0000000000000000 15841:MB8|0000000000000000 15842:MB8|0000000000000000 15843:MB8|0000000000000000 15844:MB8|0000000000000000 15845:MB8|0000000000000000 15846:MB8|0000000000000000 15847:MB8|0000000000000000 15848:MB8|0000000000000000 15849:MB8|0000000000000000 15850:MB8|0000000000000000 15851:MB8|0000000000000000 15852:MB8|0000000000000000 15853:MB8|0000000000000000 15854:MB8|0000000000000000 15855:MB8|0000000000000000 15856:MB8|0000000000000000 15857:MB8|0000000000000000 15858:MB8|0000000000000000 15859:MB8|0000000000000000 15860:MB8|0000000000000000 15861:MB8|0000000000000000 15862:MB8|0000000000000000 15863:MB8|0000000000000000 15864:MB8|0000000000000000 15865:MB8|0000000000000000 15866:MB8|0000000000000000 15867:MB8|0000000000000000 15868:MB8|0000000000000000 15869:MB8|0000000000000000 15870:MB8|0000000000000000 15871:MB8|0000000000000000 15872:MB8|0000000000000000 15873:MB8|0000000000000000 15874:MB8|0000000000000000 15875:MB8|0000000000000000 15876:MB8|0000000000000000 15877:MB8|0000000000000000 15878:MB8|0000000000000000 15879:MB8|0000000000000000 15880:MB8|0000000000000000 15881:MB8|0000000000000000 15882:MB8|0000000000000000 15883:MB8|0000000000000000 15884:MB8|0000000000000000 15885:MB8|0000000000000000 15886:MB8|0000000000000000 15887:MB8|0000000000000000 15888:MB8|0000000000000000 15889:MB8|0000000000000000 15890:MB8|0000000000000000 15891:MB8|0000000000000000 15892:MB8|0000000000000000 15893:MB8|0000000000000000 15894:MB8|0000000000000000 15895:MB8|0000000000000000 15896:MB8|0000000000000000 15897:MB8|0000000000000000 15898:MB8|0000000000000000 15899:MB8|0000000000000000 15900:MB8|0000000000000000 15901:MB8|0000000000000000 15902:MB8|0000000000000000 15903:MB8|0000000000000000 15904:MB8|0000000000000000 15905:MB8|0000000000000000 15906:MB8|0000000000000000 15907:MB8|0000000000000000 15908:MB8|0000000000000000 15909:MB8|0000000000000000 15910:MB8|0000000000000000 15911:MB8|0000000000000000 15912:MB8|0000000000000000 15913:MB8|0000000000000000 15914:MB8|0000000000000000 15915:MB8|0000000000000000 15916:MB8|0000000000000000 15917:MB8|0000000000000000 15918:MB8|0000000000000000 15919:MB8|0000000000000000 15920:MB8|0000000000000000 15921:MB8|0000000000000000 15922:MB8|0000000000000000 15923:MB8|0000000000000000 15924:MB8|0000000000000000 15925:MB8|0000000000000000 15926:MB8|0000000000000000 15927:MB8|0000000000000000 15928:MB8|0000000000000000 15929:MB8|0000000000000000 15930:MB8|0000000000000000 15931:MB8|0000000000000000 15932:MB8|0000000000000000 15933:MB8|0000000000000000 15934:MB8|0000000000000000 15935:MB8|0000000000000000 15936:MB8|0000000000000000 15937:MB8|0000000000000000 15938:MB8|0000000000000000 15939:MB8|0000000000000000 15940:MB8|0000000000000000 15941:MB8|0000000000000000 15942:MB8|0000000000000000 15943:MB8|0000000000000000 15944:MB8|0000000000000000 15945:MB8|0000000000000000 15946:MB8|0000000000000000 15947:MB8|0000000000000000 15948:MB8|0000000000000000 15949:MB8|0000000000000000 15950:MB8|0000000000000000 15951:MB8|0000000000000000 15952:MB8|0000000000000000 15953:MB8|0000000000000000 15954:MB8|0000000000000000 15955:MB8|0000000000000000 15956:MB8|0000000000000000 15957:MB8|0000000000000000 15958:MB8|0000000000000000 15959:MB8|0000000000000000 15960:MB8|0000000000000000 15961:MB8|0000000000000000 15962:MB8|0000000000000000 15963:MB8|0000000000000000 15964:MB8|0000000000000000 15965:MB8|0000000000000000 15966:MB8|0000000000000000 15967:MB8|0000000000000000 15968:MB8|0000000000000000 15969:MB8|0000000000000000 15970:MB8|0000000000000000 15971:MB8|0000000000000000 15972:MB8|0000000000000000 15973:MB8|0000000000000000 15974:MB8|0000000000000000 15975:MB8|0000000000000000 15976:MB8|0000000000000000 15977:MB8|0000000000000000 15978:MB8|0000000000000000 15979:MB8|0000000000000000 15980:MB8|0000000000000000 15981:MB8|0000000000000000 15982:MB8|0000000000000000 15983:MB8|0000000000000000 15984:MB8|0000000000000000 15985:MB8|0000000000000000 15986:MB8|0000000000000000 15987:MB8|0000000000000000 15988:MB8|0000000000000000 15989:MB8|0000000000000000 15990:MB8|0000000000000000 15991:MB8|0000000000000000 15992:MB8|0000000000000000 15993:MB8|0000000000000000 15994:MB8|0000000000000000 15995:MB8|0000000000000000 15996:MB8|0000000000000000 15997:MB8|0000000000000000 15998:MB8|0000000000000000 15999:MB8|0000000000000000 16000:MB8|0000000000000000 16001:MB8|0000000000000000 16002:MB8|0000000000000000 16003:MB8|0000000000000000 16004:MB8|0000000000000000 16005:MB8|0000000000000000 16006:MB8|0000000000000000 16007:MB8|0000000000000000 16008:MB8|0000000000000000 16009:MB8|0000000000000000 16010:MB8|0000000000000000 16011:MB8|0000000000000000 16012:MB8|0000000000000000 16013:MB8|0000000000000000 16014:MB8|0000000000000000 16015:MB8|0000000000000000 16016:MB8|0000000000000000 16017:MB8|0000000000000000 16018:MB8|0000000000000000 16019:MB8|0000000000000000 16020:MB8|0000000000000000 16021:MB8|0000000000000000 16022:MB8|0000000000000000 16023:MB8|0000000000000000 16024:MB8|0000000000000000 16025:MB8|0000000000000000 16026:MB8|0000000000000000 16027:MB8|0000000000000000 16028:MB8|0000000000000000 16029:MB8|0000000000000000 16030:MB8|0000000000000000 16031:MB8|0000000000000000 16032:MB8|0000000000000000 16033:MB8|0000000000000000 16034:MB8|0000000000000000 16035:MB8|0000000000000000 16036:MB8|0000000000000000 16037:MB8|0000000000000000 16038:MB8|0000000000000000 16039:MB8|0000000000000000 16040:MB8|0000000000000000 16041:MB8|0000000000000000 16042:MB8|0000000000000000 16043:MB8|0000000000000000 16044:MB8|0000000000000000 16045:MB8|0000000000000000 16046:MB8|0000000000000000 16047:MB8|0000000000000000 16048:MB8|0000000000000000 16049:MB8|0000000000000000 16050:MB8|0000000000000000 16051:MB8|0000000000000000 16052:MB8|0000000000000000 16053:MB8|0000000000000000 16054:MB8|0000000000000000 16055:MB8|0000000000000000 16056:MB8|0000000000000000 16057:MB8|0000000000000000 16058:MB8|0000000000000000 16059:MB8|0000000000000000 16060:MB8|0000000000000000 16061:MB8|0000000000000000 16062:MB8|0000000000000000 16063:MB8|0000000000000000 16064:MB8|0000000000000000 16065:MB8|0000000000000000 16066:MB8|0000000000000000 16067:MB8|0000000000000000 16068:MB8|0000000000000000 16069:MB8|0000000000000000 16070:MB8|0000000000000000 16071:MB8|0000000000000000 16072:MB8|0000000000000000 16073:MB8|0000000000000000 16074:MB8|0000000000000000 16075:MB8|0000000000000000 16076:MB8|0000000000000000 16077:MB8|0000000000000000 16078:MB8|0000000000000000 16079:MB8|0000000000000000 16080:MB8|0000000000000000 16081:MB8|0000000000000000 16082:MB8|0000000000000000 16083:MB8|0000000000000000 16084:MB8|0000000000000000 16085:MB8|0000000000000000 16086:MB8|0000000000000000 16087:MB8|0000000000000000 16088:MB8|0000000000000000 16089:MB8|0000000000000000 16090:MB8|0000000000000000 16091:MB8|0000000000000000 16092:MB8|0000000000000000 16093:MB8|0000000000000000 16094:MB8|0000000000000000 16095:MB8|0000000000000000 16096:MB8|0000000000000000 16097:MB8|0000000000000000 16098:MB8|0000000000000000 16099:MB8|0000000000000000 16100:MB8|0000000000000000 16101:MB8|0000000000000000 16102:MB8|0000000000000000 16103:MB8|0000000000000000 16104:MB8|0000000000000000 16105:MB8|0000000000000000 16106:MB8|0000000000000000 16107:MB8|0000000000000000 16108:MB8|0000000000000000 16109:MB8|0000000000000000 16110:MB8|0000000000000000 16111:MB8|0000000000000000 16112:MB8|0000000000000000 16113:MB8|0000000000000000 16114:MB8|0000000000000000 16115:MB8|0000000000000000 16116:MB8|0000000000000000 16117:MB8|0000000000000000 16118:MB8|0000000000000000 16119:MB8|0000000000000000 16120:MB8|0000000000000000 16121:MB8|0000000000000000 16122:MB8|0000000000000000 16123:MB8|0000000000000000 16124:MB8|0000000000000000 16125:MB8|0000000000000000 16126:MB8|0000000000000000 16127:MB8|0000000000000000 16128:MB8|0000000000000000 16129:MB8|0000000000000000 16130:MB8|0000000000000000 16131:MB8|0000000000000000 16132:MB8|0000000000000000 16133:MB8|0000000000000000 16134:MB8|0000000000000000 16135:MB8|0000000000000000 16136:MB8|0000000000000000 16137:MB8|0000000000000000 16138:MB8|0000000000000000 16139:MB8|0000000000000000 16140:MB8|0000000000000000 16141:MB8|0000000000000000 16142:MB8|0000000000000000 16143:MB8|0000000000000000 16144:MB8|0000000000000000 16145:MB8|0000000000000000 16146:MB8|0000000000000000 16147:MB8|0000000000000000 16148:MB8|0000000000000000 16149:MB8|0000000000000000 16150:MB8|0000000000000000 16151:MB8|0000000000000000 16152:MB8|0000000000000000 16153:MB8|0000000000000000 16154:MB8|0000000000000000 16155:MB8|0000000000000000 16156:MB8|0000000000000000 16157:MB8|0000000000000000 16158:MB8|0000000000000000 16159:MB8|0000000000000000 16160:MB8|0000000000000000 16161:MB8|0000000000000000 16162:MB8|0000000000000000 16163:MB8|0000000000000000 16164:MB8|0000000000000000 16165:MB8|0000000000000000 16166:MB8|0000000000000000 16167:MB8|0000000000000000 16168:MB8|0000000000000000 16169:MB8|0000000000000000 16170:MB8|0000000000000000 16171:MB8|0000000000000000 16172:MB8|0000000000000000 16173:MB8|0000000000000000 16174:MB8|0000000000000000 16175:MB8|0000000000000000 16176:MB8|0000000000000000 16177:MB8|0000000000000000 16178:MB8|0000000000000000 16179:MB8|0000000000000000 16180:MB8|0000000000000000 16181:MB8|0000000000000000 16182:MB8|0000000000000000 16183:MB8|0000000000000000 16184:MB8|0000000000000000 16185:MB8|0000000000000000 16186:MB8|0000000000000000 16187:MB8|0000000000000000 16188:MB8|0000000000000000 16189:MB8|0000000000000000 16190:MB8|0000000000000000 16191:MB8|0000000000000000 16192:MB8|0000000000000000 16193:MB8|0000000000000000 16194:MB8|0000000000000000 16195:MB8|0000000000000000 16196:MB8|0000000000000000 16197:MB8|0000000000000000 16198:MB8|0000000000000000 16199:MB8|0000000000000000 16200:MB8|0000000000000000 16201:MB8|0000000000000000 16202:MB8|0000000000000000 16203:MB8|0000000000000000 16204:MB8|0000000000000000 16205:MB8|0000000000000000 16206:MB8|0000000000000000 16207:MB8|0000000000000000 16208:MB8|0000000000000000 16209:MB8|0000000000000000 16210:MB8|0000000000000000 16211:MB8|0000000000000000 16212:MB8|0000000000000000 16213:MB8|0000000000000000 16214:MB8|0000000000000000 16215:MB8|0000000000000000 16216:MB8|0000000000000000 16217:MB8|0000000000000000 16218:MB8|0000000000000000 16219:MB8|0000000000000000 16220:MB8|0000000000000000 16221:MB8|0000000000000000 16222:MB8|0000000000000000 16223:MB8|0000000000000000 16224:MB8|0000000000000000 16225:MB8|0000000000000000 16226:MB8|0000000000000000 16227:MB8|0000000000000000 16228:MB8|0000000000000000 16229:MB8|0000000000000000 16230:MB8|0000000000000000 16231:MB8|0000000000000000 16232:MB8|0000000000000000 16233:MB8|0000000000000000 16234:MB8|0000000000000000 16235:MB8|0000000000000000 16236:MB8|0000000000000000 16237:MB8|0000000000000000 16238:MB8|0000000000000000 16239:MB8|0000000000000000 16240:MB8|0000000000000000 16241:MB8|0000000000000000 16242:MB8|0000000000000000 16243:MB8|0000000000000000 16244:MB8|0000000000000000 16245:MB8|0000000000000000 16246:MB8|0000000000000000 16247:MB8|0000000000000000 16248:MB8|0000000000000000 16249:MB8|0000000000000000 16250:MB8|0000000000000000 16251:MB8|0000000000000000 16252:MB8|0000000000000000 16253:MB8|0000000000000000 16254:MB8|0000000000000000 16255:MB8|0000000000000000 16256:MB8|0000000000000000 16257:MB8|0000000000000000 16258:MB8|0000000000000000 16259:MB8|0000000000000000 16260:MB8|0000000000000000 16261:MB8|0000000000000000 16262:MB8|0000000000000000 16263:MB8|0000000000000000 16264:MB8|0000000000000000 16265:MB8|0000000000000000 16266:MB8|0000000000000000 16267:MB8|0000000000000000 16268:MB8|0000000000000000 16269:MB8|0000000000000000 16270:MB8|0000000000000000 16271:MB8|0000000000000000 16272:MB8|0000000000000000 16273:MB8|0000000000000000 16274:MB8|0000000000000000 16275:MB8|0000000000000000 16276:MB8|0000000000000000 16277:MB8|0000000000000000 16278:MB8|0000000000000000 16279:MB8|0000000000000000 16280:MB8|0000000000000000 16281:MB8|0000000000000000 16282:MB8|0000000000000000 16283:MB8|0000000000000000 16284:MB8|0000000000000000 16285:MB8|0000000000000000 16286:MB8|0000000000000000 16287:MB8|0000000000000000 16288:MB8|0000000000000000 16289:MB8|0000000000000000 16290:MB8|0000000000000000 16291:MB8|0000000000000000 16292:MB8|0000000000000000 16293:MB8|0000000000000000 16294:MB8|0000000000000000 16295:MB8|0000000000000000 16296:MB8|0000000000000000 16297:MB8|0000000000000000 16298:MB8|0000000000000000 16299:MB8|0000000000000000 16300:MB8|0000000000000000 16301:MB8|0000000000000000 16302:MB8|0000000000000000 16303:MB8|0000000000000000 16304:MB8|0000000000000000 16305:MB8|0000000000000000 16306:MB8|0000000000000000 16307:MB8|0000000000000000 16308:MB8|0000000000000000 16309:MB8|0000000000000000 16310:MB8|0000000000000000 16311:MB8|0000000000000000 16312:MB8|0000000000000000 16313:MB8|0000000000000000 16314:MB8|0000000000000000 16315:MB8|0000000000000000 16316:MB8|0000000000000000 16317:MB8|0000000000000000 16318:MB8|0000000000000000 16319:MB8|0000000000000000 16320:MB8|0000000000000000 16321:MB8|0000000000000000 16322:MB8|0000000000000000 16323:MB8|0000000000000000 16324:MB8|0000000000000000 16325:MB8|0000000000000000 16326:MB8|0000000000000000 16327:MB8|0000000000000000 16328:MB8|0000000000000000 16329:MB8|0000000000000000 16330:MB8|0000000000000000 16331:MB8|0000000000000000 16332:MB8|0000000000000000 16333:MB8|0000000000000000 16334:MB8|0000000000000000 16335:MB8|0000000000000000 16336:MB8|0000000000000000 16337:MB8|0000000000000000 16338:MB8|0000000000000000 16339:MB8|0000000000000000 16340:MB8|0000000000000000 16341:MB8|0000000000000000 16342:MB8|0000000000000000 16343:MB8|0000000000000000 16344:MB8|0000000000000000 16345:MB8|0000000000000000 16346:MB8|0000000000000000 16347:MB8|0000000000000000 16348:MB8|0000000000000000 16349:MB8|0000000000000000 16350:MB8|0000000000000000 16351:MB8|0000000000000000 16352:MB8|0000000000000000 16353:MB8|0000000000000000 16354:MB8|0000000000000000 16355:MB8|0000000000000000 16356:MB8|0000000000000000 16357:MB8|0000000000000000 16358:MB8|0000000000000000 16359:MB8|0000000000000000 16360:MB8|0000000000000000 16361:MB8|0000000000000000 16362:MB8|0000000000000000 16363:MB8|0000000000000000 16364:MB8|0000000000000000 16365:MB8|0000000000000000 16366:MB8|0000000000000000 16367:MB8|0000000000000000 16368:MB8|0000000000000000 16369:MB8|0000000000000000 16370:MB8|0000000000000000 16371:MB8|0000000000000000 16372:MB8|0000000000000000 16373:MB8|0000000000000000 16374:MB8|0000000000000000 16375:MB8|0000000000000000 16376:MB8|0000000000000000 16377:MB8|0000000000000000 16378:MB8|0000000000000000 16379:MB8|0000000000000000 16380:MB8|0000000000000000 16381:MB8|0000000000000000 16382:MB8|0000000000000000 16383:MB8|0000000000000000 16384:MB8|0000000000000000 16385:MB8|0000000000000000 16386:MB8|0000000000000000 16387:MB8|0000000000000000 16388:MB8|0000000000000000 16389:MB8|0000000000000000 16390:MB8|0000000000000000 16391:MB8|0000000000000000 16392:MB8|0000000000000000 16393:MB8|0000000000000000 16394:MB8|0000000000000000 16395:MB8|0000000000000000 16396:MB8|0000000000000000 16397:MB8|0000000000000000 16398:MB8|0000000000000000 16399:MB8|0000000000000000 16400:MB8|0000000000000000 16401:MB8|0000000000000000 16402:MB8|0000000000000000 16403:MB8|0000000000000000 16404:MB8|0000000000000000 16405:MB8|0000000000000000 16406:MB8|0000000000000000 16407:MB8|0000000000000000 16408:MB8|0000000000000000 16409:MB8|0000000000000000 16410:MB8|0000000000000000 16411:MB8|0000000000000000 16412:MB8|0000000000000000 16413:MB8|0000000000000000 16414:MB8|0000000000000000 16415:MB8|0000000000000000 16416:MB8|0000000000000000 16417:MB8|0000000000000000 16418:MB8|0000000000000000 16419:MB8|0000000000000000 16420:MB8|0000000000000000 16421:MB8|0000000000000000 16422:MB8|0000000000000000 16423:MB8|0000000000000000 16424:MB8|0000000000000000 16425:MB8|0000000000000000 16426:MB8|0000000000000000 16427:MB8|0000000000000000 16428:MB8|0000000000000000 16429:MB8|0000000000000000 16430:MB8|0000000000000000 16431:MB8|0000000000000000 16432:MB8|0000000000000000 16433:MB8|0000000000000000 16434:MB8|0000000000000000 16435:MB8|0000000000000000 16436:MB8|0000000000000000 16437:MB8|0000000000000000 16438:MB8|0000000000000000 16439:MB8|0000000000000000 16440:MB8|0000000000000000 16441:MB8|0000000000000000 16442:MB8|0000000000000000 16443:MB8|0000000000000000 16444:MB8|0000000000000000 16445:MB8|0000000000000000 16446:MB8|0000000000000000 16447:MB8|0000000000000000 16448:MB8|0000000000000000 16449:MB8|0000000000000000 16450:MB8|0000000000000000 16451:MB8|0000000000000000 16452:MB8|0000000000000000 16453:MB8|0000000000000000 16454:MB8|0000000000000000 16455:MB8|0000000000000000 16456:MB8|0000000000000000 16457:MB8|0000000000000000 16458:MB8|0000000000000000 16459:MB8|0000000000000000 16460:MB8|0000000000000000 16461:MB8|0000000000000000 16462:MB8|0000000000000000 16463:MB8|0000000000000000 16464:MB8|0000000000000000 16465:MB8|0000000000000000 16466:MB8|0000000000000000 16467:MB8|0000000000000000 16468:MB8|0000000000000000 16469:MB8|0000000000000000 16470:MB8|0000000000000000 16471:MB8|0000000000000000 16472:MB8|0000000000000000 16473:MB8|0000000000000000 16474:MB8|0000000000000000 16475:MB8|0000000000000000 16476:MB8|0000000000000000 16477:MB8|0000000000000000 16478:MB8|0000000000000000 16479:MB8|0000000000000000 16480:MB8|0000000000000000 16481:MB8|0000000000000000 16482:MB8|0000000000000000 16483:MB8|0000000000000000 16484:MB8|0000000000000000 16485:MB8|0000000000000000 16486:MB8|0000000000000000 16487:MB8|0000000000000000 16488:MB8|0000000000000000 16489:MB8|0000000000000000 16490:MB8|0000000000000000 16491:MB8|0000000000000000 16492:MB8|0000000000000000 16493:MB8|0000000000000000 16494:MB8|0000000000000000 16495:MB8|0000000000000000 16496:MB8|0000000000000000 16497:MB8|0000000000000000 16498:MB8|0000000000000000 16499:MB8|0000000000000000 16500:MB8|0000000000000000 16501:MB8|0000000000000000 16502:MB8|0000000000000000 16503:MB8|0000000000000000 16504:MB8|0000000000000000 16505:MB8|0000000000000000 16506:MB8|0000000000000000 16507:MB8|0000000000000000 16508:MB8|0000000000000000 16509:MB8|0000000000000000 16510:MB8|0000000000000000 16511:MB8|0000000000000000 16512:MB8|0000000000000000 16513:MB8|0000000000000000 16514:MB8|0000000000000000 16515:MB8|0000000000000000 16516:MB8|0000000000000000 16517:MB8|0000000000000000 16518:MB8|0000000000000000 16519:MB8|0000000000000000 16520:MB8|0000000000000000 16521:MB8|0000000000000000 16522:MB8|0000000000000000 16523:MB8|0000000000000000 16524:MB8|0000000000000000 16525:MB8|0000000000000000 16526:MB8|0000000000000000 16527:MB8|0000000000000000 16528:MB8|0000000000000000 16529:MB8|0000000000000000 16530:MB8|0000000000000000 16531:MB8|0000000000000000 16532:MB8|0000000000000000 16533:MB8|0000000000000000 16534:MB8|0000000000000000 16535:MB8|0000000000000000 16536:MB8|0000000000000000 16537:MB8|0000000000000000 16538:MB8|0000000000000000 16539:MB8|0000000000000000 16540:MB8|0000000000000000 16541:MB8|0000000000000000 16542:MB8|0000000000000000 16543:MB8|0000000000000000 16544:MB8|0000000000000000 16545:MB8|0000000000000000 16546:MB8|0000000000000000 16547:MB8|0000000000000000 16548:MB8|0000000000000000 16549:MB8|0000000000000000 16550:MB8|0000000000000000 16551:MB8|0000000000000000 16552:MB8|0000000000000000 16553:MB8|0000000000000000 16554:MB8|0000000000000000 16555:MB8|0000000000000000 16556:MB8|0000000000000000 16557:MB8|0000000000000000 16558:MB8|0000000000000000 16559:MB8|0000000000000000 16560:MB8|0000000000000000 16561:MB8|0000000000000000 16562:MB8|0000000000000000 16563:MB8|0000000000000000 16564:MB8|0000000000000000 16565:MB8|0000000000000000 16566:MB8|0000000000000000 16567:MB8|0000000000000000 16568:MB8|0000000000000000 16569:MB8|0000000000000000 16570:MB8|0000000000000000 16571:MB8|0000000000000000 16572:MB8|0000000000000000 16573:MB8|0000000000000000 16574:MB8|0000000000000000 16575:MB8|0000000000000000 16576:MB8|0000000000000000 16577:MB8|0000000000000000 16578:MB8|0000000000000000 16579:MB8|0000000000000000 16580:MB8|0000000000000000 16581:MB8|0000000000000000 16582:MB8|0000000000000000 16583:MB8|0000000000000000 16584:MB8|0000000000000000 16585:MB8|0000000000000000 16586:MB8|0000000000000000 16587:MB8|0000000000000000 16588:MB8|0000000000000000 16589:MB8|0000000000000000 16590:MB8|0000000000000000 16591:MB8|0000000000000000 16592:MB8|0000000000000000 16593:MB8|0000000000000000 16594:MB8|0000000000000000 16595:MB8|0000000000000000 16596:MB8|0000000000000000 16597:MB8|0000000000000000 16598:MB8|0000000000000000 16599:MB8|0000000000000000 16600:MB8|0000000000000000 16601:MB8|0000000000000000 16602:MB8|0000000000000000 16603:MB8|0000000000000000 16604:MB8|0000000000000000 16605:MB8|0000000000000000 16606:MB8|0000000000000000 16607:MB8|0000000000000000 16608:MB8|0000000000000000 16609:MB8|0000000000000000 16610:MB8|0000000000000000 16611:MB8|0000000000000000 16612:MB8|0000000000000000 16613:MB8|0000000000000000 16614:MB8|0000000000000000 16615:MB8|0000000000000000 16616:MB8|0000000000000000 16617:MB8|0000000000000000 16618:MB8|0000000000000000 16619:MB8|0000000000000000 16620:MB8|0000000000000000 16621:MB8|0000000000000000 16622:MB8|0000000000000000 16623:MB8|0000000000000000 16624:MB8|0000000000000000 16625:MB8|0000000000000000 16626:MB8|0000000000000000 16627:MB8|0000000000000000 16628:MB8|0000000000000000 16629:MB8|0000000000000000 16630:MB8|0000000000000000 16631:MB8|0000000000000000 16632:MB8|0000000000000000 16633:MB8|0000000000000000 16634:MB8|0000000000000000 16635:MB8|0000000000000000 16636:MB8|0000000000000000 16637:MB8|0000000000000000 16638:MB8|0000000000000000 16639:MB8|0000000000000000 16640:MB8|0000000000000000 16641:MB8|0000000000000000 16642:MB8|0000000000000000 16643:MB8|0000000000000000 16644:MB8|0000000000000000 16645:MB8|0000000000000000 16646:MB8|0000000000000000 16647:MB8|0000000000000000 16648:MB8|0000000000000000 16649:MB8|0000000000000000 16650:MB8|0000000000000000 16651:MB8|0000000000000000 16652:MB8|0000000000000000 16653:MB8|0000000000000000 16654:MB8|0000000000000000 16655:MB8|0000000000000000 16656:MB8|0000000000000000 16657:MB8|0000000000000000 16658:MB8|0000000000000000 16659:MB8|0000000000000000 16660:MB8|0000000000000000 16661:MB8|0000000000000000 16662:MB8|0000000000000000 16663:MB8|0000000000000000 16664:MB8|0000000000000000 16665:MB8|0000000000000000 16666:MB8|0000000000000000 16667:MB8|0000000000000000 16668:MB8|0000000000000000 16669:MB8|0000000000000000 16670:MB8|0000000000000000 16671:MB8|0000000000000000 16672:MB8|0000000000000000 16673:MB8|0000000000000000 16674:MB8|0000000000000000 16675:MB8|0000000000000000 16676:MB8|0000000000000000 16677:MB8|0000000000000000 16678:MB8|0000000000000000 16679:MB8|0000000000000000 16680:MB8|0000000000000000 16681:MB8|0000000000000000 16682:MB8|0000000000000000 16683:MB8|0000000000000000 16684:MB8|0000000000000000 16685:MB8|0000000000000000 16686:MB8|0000000000000000 16687:MB8|0000000000000000 16688:MB8|0000000000000000 16689:MB8|0000000000000000 16690:MB8|0000000000000000 16691:MB8|0000000000000000 16692:MB8|0000000000000000 16693:MB8|0000000000000000 16694:MB8|0000000000000000 16695:MB8|0000000000000000 16696:MB8|0000000000000000 16697:MB8|0000000000000000 16698:MB8|0000000000000000 16699:MB8|0000000000000000 16700:MB8|0000000000000000 16701:MB8|0000000000000000 16702:MB8|0000000000000000 16703:MB8|0000000000000000 16704:MB8|0000000000000000 16705:MB8|0000000000000000 16706:MB8|0000000000000000 16707:MB8|0000000000000000 16708:MB8|0000000000000000 16709:MB8|0000000000000000 16710:MB8|0000000000000000 16711:MB8|0000000000000000 16712:MB8|0000000000000000 16713:MB8|0000000000000000 16714:MB8|0000000000000000 16715:MB8|0000000000000000 16716:MB8|0000000000000000 16717:MB8|0000000000000000 16718:MB8|0000000000000000 16719:MB8|0000000000000000 16720:MB8|0000000000000000 16721:MB8|0000000000000000 16722:MB8|0000000000000000 16723:MB8|0000000000000000 16724:MB8|0000000000000000 16725:MB8|0000000000000000 16726:MB8|0000000000000000 16727:MB8|0000000000000000 16728:MB8|0000000000000000 16729:MB8|0000000000000000 16730:MB8|0000000000000000 16731:MB8|0000000000000000 16732:MB8|0000000000000000 16733:MB8|0000000000000000 16734:MB8|0000000000000000 16735:MB8|0000000000000000 16736:MB8|0000000000000000 16737:MB8|0000000000000000 16738:MB8|0000000000000000 16739:MB8|0000000000000000 16740:MB8|0000000000000000 16741:MB8|0000000000000000 16742:MB8|0000000000000000 16743:MB8|0000000000000000 16744:MB8|0000000000000000 16745:MB8|0000000000000000 16746:MB8|0000000000000000 16747:MB8|0000000000000000 16748:MB8|0000000000000000 16749:MB8|0000000000000000 16750:MB8|0000000000000000 16751:MB8|0000000000000000 16752:MB8|0000000000000000 16753:MB8|0000000000000000 16754:MB8|0000000000000000 16755:MB8|0000000000000000 16756:MB8|0000000000000000 16757:MB8|0000000000000000 16758:MB8|0000000000000000 16759:MB8|0000000000000000 16760:MB8|0000000000000000 16761:MB8|0000000000000000 16762:MB8|0000000000000000 16763:MB8|0000000000000000 16764:MB8|0000000000000000 16765:MB8|0000000000000000 16766:MB8|0000000000000000 16767:MB8|0000000000000000 16768:MB8|0000000000000000 16769:MB8|0000000000000000 16770:MB8|0000000000000000 16771:MB8|0000000000000000 16772:MB8|0000000000000000 16773:MB8|0000000000000000 16774:MB8|0000000000000000 16775:MB8|0000000000000000 16776:MB8|0000000000000000 16777:MB8|0000000000000000 16778:MB8|0000000000000000 16779:MB8|0000000000000000 16780:MB8|0000000000000000 16781:MB8|0000000000000000 16782:MB8|0000000000000000 16783:MB8|0000000000000000 16784:MB8|0000000000000000 16785:MB8|0000000000000000 16786:MB8|0000000000000000 16787:MB8|0000000000000000 16788:MB8|0000000000000000 16789:MB8|0000000000000000 16790:MB8|0000000000000000 16791:MB8|0000000000000000 16792:MB8|0000000000000000 16793:MB8|0000000000000000 16794:MB8|0000000000000000 16795:MB8|0000000000000000 16796:MB8|0000000000000000 16797:MB8|0000000000000000 16798:MB8|0000000000000000 16799:MB8|0000000000000000 16800:MB8|0000000000000000 16801:MB8|0000000000000000 16802:MB8|0000000000000000 16803:MB8|0000000000000000 16804:MB8|0000000000000000 16805:MB8|0000000000000000 16806:MB8|0000000000000000 16807:MB8|0000000000000000 16808:MB8|0000000000000000 16809:MB8|0000000000000000 16810:MB8|0000000000000000 16811:MB8|0000000000000000 16812:MB8|0000000000000000 16813:MB8|0000000000000000 16814:MB8|0000000000000000 16815:MB8|0000000000000000 16816:MB8|0000000000000000 16817:MB8|0000000000000000 16818:MB8|0000000000000000 16819:MB8|0000000000000000 16820:MB8|0000000000000000 16821:MB8|0000000000000000 16822:MB8|0000000000000000 16823:MB8|0000000000000000 16824:MB8|0000000000000000 16825:MB8|0000000000000000 16826:MB8|0000000000000000 16827:MB8|0000000000000000 16828:MB8|0000000000000000 16829:MB8|0000000000000000 16830:MB8|0000000000000000 16831:MB8|0000000000000000 16832:MB8|0000000000000000 16833:MB8|0000000000000000 16834:MB8|0000000000000000 16835:MB8|0000000000000000 16836:MB8|0000000000000000 16837:MB8|0000000000000000 16838:MB8|0000000000000000 16839:MB8|0000000000000000 16840:MB8|0000000000000000 16841:MB8|0000000000000000 16842:MB8|0000000000000000 16843:MB8|0000000000000000 16844:MB8|0000000000000000 16845:MB8|0000000000000000 16846:MB8|0000000000000000 16847:MB8|0000000000000000 16848:MB8|0000000000000000 16849:MB8|0000000000000000 16850:MB8|0000000000000000 16851:MB8|0000000000000000 16852:MB8|0000000000000000 16853:MB8|0000000000000000 16854:MB8|0000000000000000 16855:MB8|0000000000000000 16856:MB8|0000000000000000 16857:MB8|0000000000000000 16858:MB8|0000000000000000 16859:MB8|0000000000000000 16860:MB8|0000000000000000 16861:MB8|0000000000000000 16862:MB8|0000000000000000 16863:MB8|0000000000000000 16864:MB8|0000000000000000 16865:MB8|0000000000000000 16866:MB8|0000000000000000 16867:MB8|0000000000000000 16868:MB8|0000000000000000 16869:MB8|0000000000000000 16870:MB8|0000000000000000 16871:MB8|0000000000000000 16872:MB8|0000000000000000 16873:MB8|0000000000000000 16874:MB8|0000000000000000 16875:MB8|0000000000000000 16876:MB8|0000000000000000 16877:MB8|0000000000000000 16878:MB8|0000000000000000 16879:MB8|0000000000000000 16880:MB8|0000000000000000 16881:MB8|0000000000000000 16882:MB8|0000000000000000 16883:MB8|0000000000000000 16884:MB8|0000000000000000 16885:MB8|0000000000000000 16886:MB8|0000000000000000 16887:MB8|0000000000000000 16888:MB8|0000000000000000 16889:MB8|0000000000000000 16890:MB8|0000000000000000 16891:MB8|0000000000000000 16892:MB8|0000000000000000 16893:MB8|0000000000000000 16894:MB8|0000000000000000 16895:MB8|0000000000000000 16896:MB8|0000000000000000 16897:MB8|0000000000000000 16898:MB8|0000000000000000 16899:MB8|0000000000000000 16900:MB8|0000000000000000 16901:MB8|0000000000000000 16902:MB8|0000000000000000 16903:MB8|0000000000000000 16904:MB8|0000000000000000 16905:MB8|0000000000000000 16906:MB8|0000000000000000 16907:MB8|0000000000000000 16908:MB8|0000000000000000 16909:MB8|0000000000000000 16910:MB8|0000000000000000 16911:MB8|0000000000000000 16912:MB8|0000000000000000 16913:MB8|0000000000000000 16914:MB8|0000000000000000 16915:MB8|0000000000000000 16916:MB8|0000000000000000 16917:MB8|0000000000000000 16918:MB8|0000000000000000 16919:MB8|0000000000000000 16920:MB8|0000000000000000 16921:MB8|0000000000000000 16922:MB8|0000000000000000 16923:MB8|0000000000000000 16924:MB8|0000000000000000 16925:MB8|0000000000000000 16926:MB8|0000000000000000 16927:MB8|0000000000000000 16928:MB8|0000000000000000 16929:MB8|0000000000000000 16930:MB8|0000000000000000 16931:MB8|0000000000000000 16932:MB8|0000000000000000 16933:MB8|0000000000000000 16934:MB8|0000000000000000 16935:MB8|0000000000000000 16936:MB8|0000000000000000 16937:MB8|0000000000000000 16938:MB8|0000000000000000 16939:MB8|0000000000000000 16940:MB8|0000000000000000 16941:MB8|0000000000000000 16942:MB8|0000000000000000 16943:MB8|0000000000000000 16944:MB8|0000000000000000 16945:MB8|0000000000000000 16946:MB8|0000000000000000 16947:MB8|0000000000000000 16948:MB8|0000000000000000 16949:MB8|0000000000000000 16950:MB8|0000000000000000 16951:MB8|0000000000000000 16952:MB8|0000000000000000 16953:MB8|0000000000000000 16954:MB8|0000000000000000 16955:MB8|0000000000000000 16956:MB8|0000000000000000 16957:MB8|0000000000000000 16958:MB8|0000000000000000 16959:MB8|0000000000000000 16960:MB8|0000000000000000 16961:MB8|0000000000000000 16962:MB8|0000000000000000 16963:MB8|0000000000000000 16964:MB8|0000000000000000 16965:MB8|0000000000000000 16966:MB8|0000000000000000 16967:MB8|0000000000000000 16968:MB8|0000000000000000 16969:MB8|0000000000000000 16970:MB8|0000000000000000 16971:MB8|0000000000000000 16972:MB8|0000000000000000 16973:MB8|0000000000000000 16974:MB8|0000000000000000 16975:MB8|0000000000000000 16976:MB8|0000000000000000 16977:MB8|0000000000000000 16978:MB8|0000000000000000 16979:MB8|0000000000000000 16980:MB8|0000000000000000 16981:MB8|0000000000000000 16982:MB8|0000000000000000 16983:MB8|0000000000000000 16984:MB8|0000000000000000 16985:MB8|0000000000000000 16986:MB8|0000000000000000 16987:MB8|0000000000000000 16988:MB8|0000000000000000 16989:MB8|0000000000000000 16990:MB8|0000000000000000 16991:MB8|0000000000000000 16992:MB8|0000000000000000 16993:MB8|0000000000000000 16994:MB8|0000000000000000 16995:MB8|0000000000000000 16996:MB8|0000000000000000 16997:MB8|0000000000000000 16998:MB8|0000000000000000 16999:MB8|0000000000000000 17000:MB8|0000000000000000 17001:MB8|0000000000000000 17002:MB8|0000000000000000 17003:MB8|0000000000000000 17004:MB8|0000000000000000 17005:MB8|0000000000000000 17006:MB8|0000000000000000 17007:MB8|0000000000000000 17008:MB8|0000000000000000 17009:MB8|0000000000000000 17010:MB8|0000000000000000 17011:MB8|0000000000000000 17012:MB8|0000000000000000 17013:MB8|0000000000000000 17014:MB8|0000000000000000 17015:MB8|0000000000000000 17016:MB8|0000000000000000 17017:MB8|0000000000000000 17018:MB8|0000000000000000 17019:MB8|0000000000000000 17020:MB8|0000000000000000 17021:MB8|0000000000000000 17022:MB8|0000000000000000 17023:MB8|0000000000000000 17024:MB8|0000000000000000 17025:MB8|0000000000000000 17026:MB8|0000000000000000 17027:MB8|0000000000000000 17028:MB8|0000000000000000 17029:MB8|0000000000000000 17030:MB8|0000000000000000 17031:MB8|0000000000000000 17032:MB8|0000000000000000 17033:MB8|0000000000000000 17034:MB8|0000000000000000 17035:MB8|0000000000000000 17036:MB8|0000000000000000 17037:MB8|0000000000000000 17038:MB8|0000000000000000 17039:MB8|0000000000000000 17040:MB8|0000000000000000 17041:MB8|0000000000000000 17042:MB8|0000000000000000 17043:MB8|0000000000000000 17044:MB8|0000000000000000 17045:MB8|0000000000000000 17046:MB8|0000000000000000 17047:MB8|0000000000000000 17048:MB8|0000000000000000 17049:MB8|0000000000000000 17050:MB8|0000000000000000 17051:MB8|0000000000000000 17052:MB8|0000000000000000 17053:MB8|0000000000000000 17054:MB8|0000000000000000 17055:MB8|0000000000000000 17056:MB8|0000000000000000 17057:MB8|0000000000000000 17058:MB8|0000000000000000 17059:MB8|0000000000000000 17060:MB8|0000000000000000 17061:MB8|0000000000000000 17062:MB8|0000000000000000 17063:MB8|0000000000000000 17064:MB8|0000000000000000 17065:MB8|0000000000000000 17066:MB8|0000000000000000 17067:MB8|0000000000000000 17068:MB8|0000000000000000 17069:MB8|0000000000000000 17070:MB8|0000000000000000 17071:MB8|0000000000000000 17072:MB8|0000000000000000 17073:MB8|0000000000000000 17074:MB8|0000000000000000 17075:MB8|0000000000000000 17076:MB8|0000000000000000 17077:MB8|0000000000000000 17078:MB8|0000000000000000 17079:MB8|0000000000000000 17080:MB8|0000000000000000 17081:MB8|0000000000000000 17082:MB8|0000000000000000 17083:MB8|0000000000000000 17084:MB8|0000000000000000 17085:MB8|0000000000000000 17086:MB8|0000000000000000 17087:MB8|0000000000000000 17088:MB8|0000000000000000 17089:MB8|0000000000000000 17090:MB8|0000000000000000 17091:MB8|0000000000000000 17092:MB8|0000000000000000 17093:MB8|0000000000000000 17094:MB8|0000000000000000 17095:MB8|0000000000000000 17096:MB8|0000000000000000 17097:MB8|0000000000000000 17098:MB8|0000000000000000 17099:MB8|0000000000000000 17100:MB8|0000000000000000 17101:MB8|0000000000000000 17102:MB8|0000000000000000 17103:MB8|0000000000000000 17104:MB8|0000000000000000 17105:MB8|0000000000000000 17106:MB8|0000000000000000 17107:MB8|0000000000000000 17108:MB8|0000000000000000 17109:MB8|0000000000000000 17110:MB8|0000000000000000 17111:MB8|0000000000000000 17112:MB8|0000000000000000 17113:MB8|0000000000000000 17114:MB8|0000000000000000 17115:MB8|0000000000000000 17116:MB8|0000000000000000 17117:MB8|0000000000000000 17118:MB8|0000000000000000 17119:MB8|0000000000000000 17120:MB8|0000000000000000 17121:MB8|0000000000000000 17122:MB8|0000000000000000 17123:MB8|0000000000000000 17124:MB8|0000000000000000 17125:MB8|0000000000000000 17126:MB8|0000000000000000 17127:MB8|0000000000000000 17128:MB8|0000000000000000 17129:MB8|0000000000000000 17130:MB8|0000000000000000 17131:MB8|0000000000000000 17132:MB8|0000000000000000 17133:MB8|0000000000000000 17134:MB8|0000000000000000 17135:MB8|0000000000000000 17136:MB8|0000000000000000 17137:MB8|0000000000000000 17138:MB8|0000000000000000 17139:MB8|0000000000000000 17140:MB8|0000000000000000 17141:MB8|0000000000000000 17142:MB8|0000000000000000 17143:MB8|0000000000000000 17144:MB8|0000000000000000 17145:MB8|0000000000000000 17146:MB8|0000000000000000 17147:MB8|0000000000000000 17148:MB8|0000000000000000 17149:MB8|0000000000000000 17150:MB8|0000000000000000 17151:MB8|0000000000000000 17152:MB8|0000000000000000 17153:MB8|0000000000000000 17154:MB8|0000000000000000 17155:MB8|0000000000000000 17156:MB8|0000000000000000 17157:MB8|0000000000000000 17158:MB8|0000000000000000 17159:MB8|0000000000000000 17160:MB8|0000000000000000 17161:MB8|0000000000000000 17162:MB8|0000000000000000 17163:MB8|0000000000000000 17164:MB8|0000000000000000 17165:MB8|0000000000000000 17166:MB8|0000000000000000 17167:MB8|0000000000000000 17168:MB8|0000000000000000 17169:MB8|0000000000000000 17170:MB8|0000000000000000 17171:MB8|0000000000000000 17172:MB8|0000000000000000 17173:MB8|0000000000000000 17174:MB8|0000000000000000 17175:MB8|0000000000000000 17176:MB8|0000000000000000 17177:MB8|0000000000000000 17178:MB8|0000000000000000 17179:MB8|0000000000000000 17180:MB8|0000000000000000 17181:MB8|0000000000000000 17182:MB8|0000000000000000 17183:MB8|0000000000000000 17184:MB8|0000000000000000 17185:MB8|0000000000000000 17186:MB8|0000000000000000 17187:MB8|0000000000000000 17188:MB8|0000000000000000 17189:MB8|0000000000000000 17190:MB8|0000000000000000 17191:MB8|0000000000000000 17192:MB8|0000000000000000 17193:MB8|0000000000000000 17194:MB8|0000000000000000 17195:MB8|0000000000000000 17196:MB8|0000000000000000 17197:MB8|0000000000000000 17198:MB8|0000000000000000 17199:MB8|0000000000000000 17200:MB8|0000000000000000 17201:MB8|0000000000000000 17202:MB8|0000000000000000 17203:MB8|0000000000000000 17204:MB8|0000000000000000 17205:MB8|0000000000000000 17206:MB8|0000000000000000 17207:MB8|0000000000000000 17208:MB8|0000000000000000 17209:MB8|0000000000000000 17210:MB8|0000000000000000 17211:MB8|0000000000000000 17212:MB8|0000000000000000 17213:MB8|0000000000000000 17214:MB8|0000000000000000 17215:MB8|0000000000000000 17216:MB8|0000000000000000 17217:MB8|0000000000000000 17218:MB8|0000000000000000 17219:MB8|0000000000000000 17220:MB8|0000000000000000 17221:MB8|0000000000000000 17222:MB8|0000000000000000 17223:MB8|0000000000000000 17224:MB8|0000000000000000 17225:MB8|0000000000000000 17226:MB8|0000000000000000 17227:MB8|0000000000000000 17228:MB8|0000000000000000 17229:MB8|0000000000000000 17230:MB8|0000000000000000 17231:MB8|0000000000000000 17232:MB8|0000000000000000 17233:MB8|0000000000000000 17234:MB8|0000000000000000 17235:MB8|0000000000000000 17236:MB8|0000000000000000 17237:MB8|0000000000000000 17238:MB8|0000000000000000 17239:MB8|0000000000000000 17240:MB8|0000000000000000 17241:MB8|0000000000000000 17242:MB8|0000000000000000 17243:MB8|0000000000000000 17244:MB8|0000000000000000 17245:MB8|0000000000000000 17246:MB8|0000000000000000 17247:MB8|0000000000000000 17248:MB8|0000000000000000 17249:MB8|0000000000000000 17250:MB8|0000000000000000 17251:MB8|0000000000000000 17252:MB8|0000000000000000 17253:MB8|0000000000000000 17254:MB8|0000000000000000 17255:MB8|0000000000000000 17256:MB8|0000000000000000 17257:MB8|0000000000000000 17258:MB8|0000000000000000 17259:MB8|0000000000000000 17260:MB8|0000000000000000 17261:MB8|0000000000000000 17262:MB8|0000000000000000 17263:MB8|0000000000000000 17264:MB8|0000000000000000 17265:MB8|0000000000000000 17266:MB8|0000000000000000 17267:MB8|0000000000000000 17268:MB8|0000000000000000 17269:MB8|0000000000000000 17270:MB8|0000000000000000 17271:MB8|0000000000000000 17272:MB8|0000000000000000 17273:MB8|0000000000000000 17274:MB8|0000000000000000 17275:MB8|0000000000000000 17276:MB8|0000000000000000 17277:MB8|0000000000000000 17278:MB8|0000000000000000 17279:MB8|0000000000000000 17280:MB8|0000000000000000 17281:MB8|0000000000000000 17282:MB8|0000000000000000 17283:MB8|0000000000000000 17284:MB8|0000000000000000 17285:MB8|0000000000000000 17286:MB8|0000000000000000 17287:MB8|0000000000000000 17288:MB8|0000000000000000 17289:MB8|0000000000000000 17290:MB8|0000000000000000 17291:MB8|0000000000000000 17292:MB8|0000000000000000 17293:MB8|0000000000000000 17294:MB8|0000000000000000 17295:MB8|0000000000000000 17296:MB8|0000000000000000 17297:MB8|0000000000000000 17298:MB8|0000000000000000 17299:MB8|0000000000000000 17300:MB8|0000000000000000 17301:MB8|0000000000000000 17302:MB8|0000000000000000 17303:MB8|0000000000000000 17304:MB8|0000000000000000 17305:MB8|0000000000000000 17306:MB8|0000000000000000 17307:MB8|0000000000000000 17308:MB8|0000000000000000 17309:MB8|0000000000000000 17310:MB8|0000000000000000 17311:MB8|0000000000000000 17312:MB8|0000000000000000 17313:MB8|0000000000000000 17314:MB8|0000000000000000 17315:MB8|0000000000000000 17316:MB8|0000000000000000 17317:MB8|0000000000000000 17318:MB8|0000000000000000 17319:MB8|0000000000000000 17320:MB8|0000000000000000 17321:MB8|0000000000000000 17322:MB8|0000000000000000 17323:MB8|0000000000000000 17324:MB8|0000000000000000 17325:MB8|0000000000000000 17326:MB8|0000000000000000 17327:MB8|0000000000000000 17328:MB8|0000000000000000 17329:MB8|0000000000000000 17330:MB8|0000000000000000 17331:MB8|0000000000000000 17332:MB8|0000000000000000 17333:MB8|0000000000000000 17334:MB8|0000000000000000 17335:MB8|0000000000000000 17336:MB8|0000000000000000 17337:MB8|0000000000000000 17338:MB8|0000000000000000 17339:MB8|0000000000000000 17340:MB8|0000000000000000 17341:MB8|0000000000000000 17342:MB8|0000000000000000 17343:MB8|0000000000000000 17344:MB8|0000000000000000 17345:MB8|0000000000000000 17346:MB8|0000000000000000 17347:MB8|0000000000000000 17348:MB8|0000000000000000 17349:MB8|0000000000000000 17350:MB8|0000000000000000 17351:MB8|0000000000000000 17352:MB8|0000000000000000 17353:MB8|0000000000000000 17354:MB8|0000000000000000 17355:MB8|0000000000000000 17356:MB8|0000000000000000 17357:MB8|0000000000000000 17358:MB8|0000000000000000 17359:MB8|0000000000000000 17360:MB8|0000000000000000 17361:MB8|0000000000000000 17362:MB8|0000000000000000 17363:MB8|0000000000000000 17364:MB8|0000000000000000 17365:MB8|0000000000000000 17366:MB8|0000000000000000 17367:MB8|0000000000000000 17368:MB8|0000000000000000 17369:MB8|0000000000000000 17370:MB8|0000000000000000 17371:MB8|0000000000000000 17372:MB8|0000000000000000 17373:MB8|0000000000000000 17374:MB8|0000000000000000 17375:MB8|0000000000000000 17376:MB8|0000000000000000 17377:MB8|0000000000000000 17378:MB8|0000000000000000 17379:MB8|0000000000000000 17380:MB8|0000000000000000 17381:MB8|0000000000000000 17382:MB8|0000000000000000 17383:MB8|0000000000000000 17384:MB8|0000000000000000 17385:MB8|0000000000000000 17386:MB8|0000000000000000 17387:MB8|0000000000000000 17388:MB8|0000000000000000 17389:MB8|0000000000000000 17390:MB8|0000000000000000 17391:MB8|0000000000000000 17392:MB8|0000000000000000 17393:MB8|0000000000000000 17394:MB8|0000000000000000 17395:MB8|0000000000000000 17396:MB8|0000000000000000 17397:MB8|0000000000000000 17398:MB8|0000000000000000 17399:MB8|0000000000000000 17400:MB8|0000000000000000 17401:MB8|0000000000000000 17402:MB8|0000000000000000 17403:MB8|0000000000000000 17404:MB8|0000000000000000 17405:MB8|0000000000000000 17406:MB8|0000000000000000 17407:MB8|0000000000000000 17408:MB8|0000000000000000 17409:MB8|0000000000000000 17410:MB8|0000000000000000 17411:MB8|0000000000000000 17412:MB8|0000000000000000 17413:MB8|0000000000000000 17414:MB8|0000000000000000 17415:MB8|0000000000000000 17416:MB8|0000000000000000 17417:MB8|0000000000000000 17418:MB8|0000000000000000 17419:MB8|0000000000000000 17420:MB8|0000000000000000 17421:MB8|0000000000000000 17422:MB8|0000000000000000 17423:MB8|0000000000000000 17424:MB8|0000000000000000 17425:MB8|0000000000000000 17426:MB8|0000000000000000 17427:MB8|0000000000000000 17428:MB8|0000000000000000 17429:MB8|0000000000000000 17430:MB8|0000000000000000 17431:MB8|0000000000000000 17432:MB8|0000000000000000 17433:MB8|0000000000000000 17434:MB8|0000000000000000 17435:MB8|0000000000000000 17436:MB8|0000000000000000 17437:MB8|0000000000000000 17438:MB8|0000000000000000 17439:MB8|0000000000000000 17440:MB8|0000000000000000 17441:MB8|0000000000000000 17442:MB8|0000000000000000 17443:MB8|0000000000000000 17444:MB8|0000000000000000 17445:MB8|0000000000000000 17446:MB8|0000000000000000 17447:MB8|0000000000000000 17448:MB8|0000000000000000 17449:MB8|0000000000000000 17450:MB8|0000000000000000 17451:MB8|0000000000000000 17452:MB8|0000000000000000 17453:MB8|0000000000000000 17454:MB8|0000000000000000 17455:MB8|0000000000000000 17456:MB8|0000000000000000 17457:MB8|0000000000000000 17458:MB8|0000000000000000 17459:MB8|0000000000000000 17460:MB8|0000000000000000 17461:MB8|0000000000000000 17462:MB8|0000000000000000 17463:MB8|0000000000000000 17464:MB8|0000000000000000 17465:MB8|0000000000000000 17466:MB8|0000000000000000 17467:MB8|0000000000000000 17468:MB8|0000000000000000 17469:MB8|0000000000000000 17470:MB8|0000000000000000 17471:MB8|0000000000000000 17472:MB8|0000000000000000 17473:MB8|0000000000000000 17474:MB8|0000000000000000 17475:MB8|0000000000000000 17476:MB8|0000000000000000 17477:MB8|0000000000000000 17478:MB8|0000000000000000 17479:MB8|0000000000000000 17480:MB8|0000000000000000 17481:MB8|0000000000000000 17482:MB8|0000000000000000 17483:MB8|0000000000000000 17484:MB8|0000000000000000 17485:MB8|0000000000000000 17486:MB8|0000000000000000 17487:MB8|0000000000000000 17488:MB8|0000000000000000 17489:MB8|0000000000000000 17490:MB8|0000000000000000 17491:MB8|0000000000000000 17492:MB8|0000000000000000 17493:MB8|0000000000000000 17494:MB8|0000000000000000 17495:MB8|0000000000000000 17496:MB8|0000000000000000 17497:MB8|0000000000000000 17498:MB8|0000000000000000 17499:MB8|0000000000000000 17500:MB8|0000000000000000 17501:MB8|0000000000000000 17502:MB8|0000000000000000 17503:MB8|0000000000000000 17504:MB8|0000000000000000 17505:MB8|0000000000000000 17506:MB8|0000000000000000 17507:MB8|0000000000000000 17508:MB8|0000000000000000 17509:MB8|0000000000000000 17510:MB8|0000000000000000 17511:MB8|0000000000000000 17512:MB8|0000000000000000 17513:MB8|0000000000000000 17514:MB8|0000000000000000 17515:MB8|0000000000000000 17516:MB8|0000000000000000 17517:MB8|0000000000000000 17518:MB8|0000000000000000 17519:MB8|0000000000000000 17520:MB8|0000000000000000 17521:MB8|0000000000000000 17522:MB8|0000000000000000 17523:MB8|0000000000000000 17524:MB8|0000000000000000 17525:MB8|0000000000000000 17526:MB8|0000000000000000 17527:MB8|0000000000000000 17528:MB8|0000000000000000 17529:MB8|0000000000000000 17530:MB8|0000000000000000 17531:MB8|0000000000000000 17532:MB8|0000000000000000 17533:MB8|0000000000000000 17534:MB8|0000000000000000 17535:MB8|0000000000000000 17536:MB8|0000000000000000 17537:MB8|0000000000000000 17538:MB8|0000000000000000 17539:MB8|0000000000000000 17540:MB8|0000000000000000 17541:MB8|0000000000000000 17542:MB8|0000000000000000 17543:MB8|0000000000000000 17544:MB8|0000000000000000 17545:MB8|0000000000000000 17546:MB8|0000000000000000 17547:MB8|0000000000000000 17548:MB8|0000000000000000 17549:MB8|0000000000000000 17550:MB8|0000000000000000 17551:MB8|0000000000000000 17552:MB8|0000000000000000 17553:MB8|0000000000000000 17554:MB8|0000000000000000 17555:MB8|0000000000000000 17556:MB8|0000000000000000 17557:MB8|0000000000000000 17558:MB8|0000000000000000 17559:MB8|0000000000000000 17560:MB8|0000000000000000 17561:MB8|0000000000000000 17562:MB8|0000000000000000 17563:MB8|0000000000000000 17564:MB8|0000000000000000 17565:MB8|0000000000000000 17566:MB8|0000000000000000 17567:MB8|0000000000000000 17568:MB8|0000000000000000 17569:MB8|0000000000000000 17570:MB8|0000000000000000 17571:MB8|0000000000000000 17572:MB8|0000000000000000 17573:MB8|0000000000000000 17574:MB8|0000000000000000 17575:MB8|0000000000000000 17576:MB8|0000000000000000 17577:MB8|0000000000000000 17578:MB8|0000000000000000 17579:MB8|0000000000000000 17580:MB8|0000000000000000 17581:MB8|0000000000000000 17582:MB8|0000000000000000 17583:MB8|0000000000000000 17584:MB8|0000000000000000 17585:MB8|0000000000000000 17586:MB8|0000000000000000 17587:MB8|0000000000000000 17588:MB8|0000000000000000 17589:MB8|0000000000000000 17590:MB8|0000000000000000 17591:MB8|0000000000000000 17592:MB8|0000000000000000 17593:MB8|0000000000000000 17594:MB8|0000000000000000 17595:MB8|0000000000000000 17596:MB8|0000000000000000 17597:MB8|0000000000000000 17598:MB8|0000000000000000 17599:MB8|0000000000000000 17600:MB8|0000000000000000 17601:MB8|0000000000000000 17602:MB8|0000000000000000 17603:MB8|0000000000000000 17604:MB8|0000000000000000 17605:MB8|0000000000000000 17606:MB8|0000000000000000 17607:MB8|0000000000000000 17608:MB8|0000000000000000 17609:MB8|0000000000000000 17610:MB8|0000000000000000 17611:MB8|0000000000000000 17612:MB8|0000000000000000 17613:MB8|0000000000000000 17614:MB8|0000000000000000 17615:MB8|0000000000000000 17616:MB8|0000000000000000 17617:MB8|0000000000000000 17618:MB8|0000000000000000 17619:MB8|0000000000000000 17620:MB8|0000000000000000 17621:MB8|0000000000000000 17622:MB8|0000000000000000 17623:MB8|0000000000000000 17624:MB8|0000000000000000 17625:MB8|0000000000000000 17626:MB8|0000000000000000 17627:MB8|0000000000000000 17628:MB8|0000000000000000 17629:MB8|0000000000000000 17630:MB8|0000000000000000 17631:MB8|0000000000000000 17632:MB8|0000000000000000 17633:MB8|0000000000000000 17634:MB8|0000000000000000 17635:MB8|0000000000000000 17636:MB8|0000000000000000 17637:MB8|0000000000000000 17638:MB8|0000000000000000 17639:MB8|0000000000000000 17640:MB8|0000000000000000 17641:MB8|0000000000000000 17642:MB8|0000000000000000 17643:MB8|0000000000000000 17644:MB8|0000000000000000 17645:MB8|0000000000000000 17646:MB8|0000000000000000 17647:MB8|0000000000000000 17648:MB8|0000000000000000 17649:MB8|0000000000000000 17650:MB8|0000000000000000 17651:MB8|0000000000000000 17652:MB8|0000000000000000 17653:MB8|0000000000000000 17654:MB8|0000000000000000 17655:MB8|0000000000000000 17656:MB8|0000000000000000 17657:MB8|0000000000000000 17658:MB8|0000000000000000 17659:MB8|0000000000000000 17660:MB8|0000000000000000 17661:MB8|0000000000000000 17662:MB8|0000000000000000 17663:MB8|0000000000000000 17664:MB8|0000000000000000 17665:MB8|0000000000000000 17666:MB8|0000000000000000 17667:MB8|0000000000000000 17668:MB8|0000000000000000 17669:MB8|0000000000000000 17670:MB8|0000000000000000 17671:MB8|0000000000000000 17672:MB8|0000000000000000 17673:MB8|0000000000000000 17674:MB8|0000000000000000 17675:MB8|0000000000000000 17676:MB8|0000000000000000 17677:MB8|0000000000000000 17678:MB8|0000000000000000 17679:MB8|0000000000000000 17680:MB8|0000000000000000 17681:MB8|0000000000000000 17682:MB8|0000000000000000 17683:MB8|0000000000000000 17684:MB8|0000000000000000 17685:MB8|0000000000000000 17686:MB8|0000000000000000 17687:MB8|0000000000000000 17688:MB8|0000000000000000 17689:MB8|0000000000000000 17690:MB8|0000000000000000 17691:MB8|0000000000000000 17692:MB8|0000000000000000 17693:MB8|0000000000000000 17694:MB8|0000000000000000 17695:MB8|0000000000000000 17696:MB8|0000000000000000 17697:MB8|0000000000000000 17698:MB8|0000000000000000 17699:MB8|0000000000000000 17700:MB8|0000000000000000 17701:MB8|0000000000000000 17702:MB8|0000000000000000 17703:MB8|0000000000000000 17704:MB8|0000000000000000 17705:MB8|0000000000000000 17706:MB8|0000000000000000 17707:MB8|0000000000000000 17708:MB8|0000000000000000 17709:MB8|0000000000000000 17710:MB8|0000000000000000 17711:MB8|0000000000000000 17712:MB8|0000000000000000 17713:MB8|0000000000000000 17714:MB8|0000000000000000 17715:MB8|0000000000000000 17716:MB8|0000000000000000 17717:MB8|0000000000000000 17718:MB8|0000000000000000 17719:MB8|0000000000000000 17720:MB8|0000000000000000 17721:MB8|0000000000000000 17722:MB8|0000000000000000 17723:MB8|0000000000000000 17724:MB8|0000000000000000 17725:MB8|0000000000000000 17726:MB8|0000000000000000 17727:MB8|0000000000000000 17728:MB8|0000000000000000 17729:MB8|0000000000000000 17730:MB8|0000000000000000 17731:MB8|0000000000000000 17732:MB8|0000000000000000 17733:MB8|0000000000000000 17734:MB8|0000000000000000 17735:MB8|0000000000000000 17736:MB8|0000000000000000 17737:MB8|0000000000000000 17738:MB8|0000000000000000 17739:MB8|0000000000000000 17740:MB8|0000000000000000 17741:MB8|0000000000000000 17742:MB8|0000000000000000 17743:MB8|0000000000000000 17744:MB8|0000000000000000 17745:MB8|0000000000000000 17746:MB8|0000000000000000 17747:MB8|0000000000000000 17748:MB8|0000000000000000 17749:MB8|0000000000000000 17750:MB8|0000000000000000 17751:MB8|0000000000000000 17752:MB8|0000000000000000 17753:MB8|0000000000000000 17754:MB8|0000000000000000 17755:MB8|0000000000000000 17756:MB8|0000000000000000 17757:MB8|0000000000000000 17758:MB8|0000000000000000 17759:MB8|0000000000000000 17760:MB8|0000000000000000 17761:MB8|0000000000000000 17762:MB8|0000000000000000 17763:MB8|0000000000000000 17764:MB8|0000000000000000 17765:MB8|0000000000000000 17766:MB8|0000000000000000 17767:MB8|0000000000000000 17768:MB8|0000000000000000 17769:MB8|0000000000000000 17770:MB8|0000000000000000 17771:MB8|0000000000000000 17772:MB8|0000000000000000 17773:MB8|0000000000000000 17774:MB8|0000000000000000 17775:MB8|0000000000000000 17776:MB8|0000000000000000 17777:MB8|0000000000000000 17778:MB8|0000000000000000 17779:MB8|0000000000000000 17780:MB8|0000000000000000 17781:MB8|0000000000000000 17782:MB8|0000000000000000 17783:MB8|0000000000000000 17784:MB8|0000000000000000 17785:MB8|0000000000000000 17786:MB8|0000000000000000 17787:MB8|0000000000000000 17788:MB8|0000000000000000 17789:MB8|0000000000000000 17790:MB8|0000000000000000 17791:MB8|0000000000000000 17792:MB8|0000000000000000 17793:MB8|0000000000000000 17794:MB8|0000000000000000 17795:MB8|0000000000000000 17796:MB8|0000000000000000 17797:MB8|0000000000000000 17798:MB8|0000000000000000 17799:MB8|0000000000000000 17800:MB8|0000000000000000 17801:MB8|0000000000000000 17802:MB8|0000000000000000 17803:MB8|0000000000000000 17804:MB8|0000000000000000 17805:MB8|0000000000000000 17806:MB8|0000000000000000 17807:MB8|0000000000000000 17808:MB8|0000000000000000 17809:MB8|0000000000000000 17810:MB8|0000000000000000 17811:MB8|0000000000000000 17812:MB8|0000000000000000 17813:MB8|0000000000000000 17814:MB8|0000000000000000 17815:MB8|0000000000000000 17816:MB8|0000000000000000 17817:MB8|0000000000000000 17818:MB8|0000000000000000 17819:MB8|0000000000000000 17820:MB8|0000000000000000 17821:MB8|0000000000000000 17822:MB8|0000000000000000 17823:MB8|0000000000000000 17824:MB8|0000000000000000 17825:MB8|0000000000000000 17826:MB8|0000000000000000 17827:MB8|0000000000000000 17828:MB8|0000000000000000 17829:MB8|0000000000000000 17830:MB8|0000000000000000 17831:MB8|0000000000000000 17832:MB8|0000000000000000 17833:MB8|0000000000000000 17834:MB8|0000000000000000 17835:MB8|0000000000000000 17836:MB8|0000000000000000 17837:MB8|0000000000000000 17838:MB8|0000000000000000 17839:MB8|0000000000000000 17840:MB8|0000000000000000 17841:MB8|0000000000000000 17842:MB8|0000000000000000 17843:MB8|0000000000000000 17844:MB8|0000000000000000 17845:MB8|0000000000000000 17846:MB8|0000000000000000 17847:MB8|0000000000000000 17848:MB8|0000000000000000 17849:MB8|0000000000000000 17850:MB8|0000000000000000 17851:MB8|0000000000000000 17852:MB8|0000000000000000 17853:MB8|0000000000000000 17854:MB8|0000000000000000 17855:MB8|0000000000000000 17856:MB8|0000000000000000 17857:MB8|0000000000000000 17858:MB8|0000000000000000 17859:MB8|0000000000000000 17860:MB8|0000000000000000 17861:MB8|0000000000000000 17862:MB8|0000000000000000 17863:MB8|0000000000000000 17864:MB8|0000000000000000 17865:MB8|0000000000000000 17866:MB8|0000000000000000 17867:MB8|0000000000000000 17868:MB8|0000000000000000 17869:MB8|0000000000000000 17870:MB8|0000000000000000 17871:MB8|0000000000000000 17872:MB8|0000000000000000 17873:MB8|0000000000000000 17874:MB8|0000000000000000 17875:MB8|0000000000000000 17876:MB8|0000000000000000 17877:MB8|0000000000000000 17878:MB8|0000000000000000 17879:MB8|0000000000000000 17880:MB8|0000000000000000 17881:MB8|0000000000000000 17882:MB8|0000000000000000 17883:MB8|0000000000000000 17884:MB8|0000000000000000 17885:MB8|0000000000000000 17886:MB8|0000000000000000 17887:MB8|0000000000000000 17888:MB8|0000000000000000 17889:MB8|0000000000000000 17890:MB8|0000000000000000 17891:MB8|0000000000000000 17892:MB8|0000000000000000 17893:MB8|0000000000000000 17894:MB8|0000000000000000 17895:MB8|0000000000000000 17896:MB8|0000000000000000 17897:MB8|0000000000000000 17898:MB8|0000000000000000 17899:MB8|0000000000000000 17900:MB8|0000000000000000 17901:MB8|0000000000000000 17902:MB8|0000000000000000 17903:MB8|0000000000000000 17904:MB8|0000000000000000 17905:MB8|0000000000000000 17906:MB8|0000000000000000 17907:MB8|0000000000000000 17908:MB8|0000000000000000 17909:MB8|0000000000000000 17910:MB8|0000000000000000 17911:MB8|0000000000000000 17912:MB8|0000000000000000 17913:MB8|0000000000000000 17914:MB8|0000000000000000 17915:MB8|0000000000000000 17916:MB8|0000000000000000 17917:MB8|0000000000000000 17918:MB8|0000000000000000 17919:MB8|0000000000000000 17920:MB8|0000000000000000 17921:MB8|0000000000000000 17922:MB8|0000000000000000 17923:MB8|0000000000000000 17924:MB8|0000000000000000 17925:MB8|0000000000000000 17926:MB8|0000000000000000 17927:MB8|0000000000000000 17928:MB8|0000000000000000 17929:MB8|0000000000000000 17930:MB8|0000000000000000 17931:MB8|0000000000000000 17932:MB8|0000000000000000 17933:MB8|0000000000000000 17934:MB8|0000000000000000 17935:MB8|0000000000000000 17936:MB8|0000000000000000 17937:MB8|0000000000000000 17938:MB8|0000000000000000 17939:MB8|0000000000000000 17940:MB8|0000000000000000 17941:MB8|0000000000000000 17942:MB8|0000000000000000 17943:MB8|0000000000000000 17944:MB8|0000000000000000 17945:MB8|0000000000000000 17946:MB8|0000000000000000 17947:MB8|0000000000000000 17948:MB8|0000000000000000 17949:MB8|0000000000000000 17950:MB8|0000000000000000 17951:MB8|0000000000000000 17952:MB8|0000000000000000 17953:MB8|0000000000000000 17954:MB8|0000000000000000 17955:MB8|0000000000000000 17956:MB8|0000000000000000 17957:MB8|0000000000000000 17958:MB8|0000000000000000 17959:MB8|0000000000000000 17960:MB8|0000000000000000 17961:MB8|0000000000000000 17962:MB8|0000000000000000 17963:MB8|0000000000000000 17964:MB8|0000000000000000 17965:MB8|0000000000000000 17966:MB8|0000000000000000 17967:MB8|0000000000000000 17968:MB8|0000000000000000 17969:MB8|0000000000000000 17970:MB8|0000000000000000 17971:MB8|0000000000000000 17972:MB8|0000000000000000 17973:MB8|0000000000000000 17974:MB8|0000000000000000 17975:MB8|0000000000000000 17976:MB8|0000000000000000 17977:MB8|0000000000000000 17978:MB8|0000000000000000 17979:MB8|0000000000000000 17980:MB8|0000000000000000 17981:MB8|0000000000000000 17982:MB8|0000000000000000 17983:MB8|0000000000000000 17984:MB8|0000000000000000 17985:MB8|0000000000000000 17986:MB8|0000000000000000 17987:MB8|0000000000000000 17988:MB8|0000000000000000 17989:MB8|0000000000000000 17990:MB8|0000000000000000 17991:MB8|0000000000000000 17992:MB8|0000000000000000 17993:MB8|0000000000000000 17994:MB8|0000000000000000 17995:MB8|0000000000000000 17996:MB8|0000000000000000 17997:MB8|0000000000000000 17998:MB8|0000000000000000 17999:MB8|0000000000000000 18000:MB8|0000000000000000 18001:MB8|0000000000000000 18002:MB8|0000000000000000 18003:MB8|0000000000000000 18004:MB8|0000000000000000 18005:MB8|0000000000000000 18006:MB8|0000000000000000 18007:MB8|0000000000000000 18008:MB8|0000000000000000 18009:MB8|0000000000000000 18010:MB8|0000000000000000 18011:MB8|0000000000000000 18012:MB8|0000000000000000 18013:MB8|0000000000000000 18014:MB8|0000000000000000 18015:MB8|0000000000000000 18016:MB8|0000000000000000 18017:MB8|0000000000000000 18018:MB8|0000000000000000 18019:MB8|0000000000000000 18020:MB8|0000000000000000 18021:MB8|0000000000000000 18022:MB8|0000000000000000 18023:MB8|0000000000000000 18024:MB8|0000000000000000 18025:MB8|0000000000000000 18026:MB8|0000000000000000 18027:MB8|0000000000000000 18028:MB8|0000000000000000 18029:MB8|0000000000000000 18030:MB8|0000000000000000 18031:MB8|0000000000000000 18032:MB8|0000000000000000 18033:MB8|0000000000000000 18034:MB8|0000000000000000 18035:MB8|0000000000000000 18036:MB8|0000000000000000 18037:MB8|0000000000000000 18038:MB8|0000000000000000 18039:MB8|0000000000000000 18040:MB8|0000000000000000 18041:MB8|0000000000000000 18042:MB8|0000000000000000 18043:MB8|0000000000000000 18044:MB8|0000000000000000 18045:MB8|0000000000000000 18046:MB8|0000000000000000 18047:MB8|0000000000000000 18048:MB8|0000000000000000 18049:MB8|0000000000000000 18050:MB8|0000000000000000 18051:MB8|0000000000000000 18052:MB8|0000000000000000 18053:MB8|0000000000000000 18054:MB8|0000000000000000 18055:MB8|0000000000000000 18056:MB8|0000000000000000 18057:MB8|0000000000000000 18058:MB8|0000000000000000 18059:MB8|0000000000000000 18060:MB8|0000000000000000 18061:MB8|0000000000000000 18062:MB8|0000000000000000 18063:MB8|0000000000000000 18064:MB8|0000000000000000 18065:MB8|0000000000000000 18066:MB8|0000000000000000 18067:MB8|0000000000000000 18068:MB8|0000000000000000 18069:MB8|0000000000000000 18070:MB8|0000000000000000 18071:MB8|0000000000000000 18072:MB8|0000000000000000 18073:MB8|0000000000000000 18074:MB8|0000000000000000 18075:MB8|0000000000000000 18076:MB8|0000000000000000 18077:MB8|0000000000000000 18078:MB8|0000000000000000 18079:MB8|0000000000000000 18080:MB8|0000000000000000 18081:MB8|0000000000000000 18082:MB8|0000000000000000 18083:MB8|0000000000000000 18084:MB8|0000000000000000 18085:MB8|0000000000000000 18086:MB8|0000000000000000 18087:MB8|0000000000000000 18088:MB8|0000000000000000 18089:MB8|0000000000000000 18090:MB8|0000000000000000 18091:MB8|0000000000000000 18092:MB8|0000000000000000 18093:MB8|0000000000000000 18094:MB8|0000000000000000 18095:MB8|0000000000000000 18096:MB8|0000000000000000 18097:MB8|0000000000000000 18098:MB8|0000000000000000 18099:MB8|0000000000000000 18100:MB8|0000000000000000 18101:MB8|0000000000000000 18102:MB8|0000000000000000 18103:MB8|0000000000000000 18104:MB8|0000000000000000 18105:MB8|0000000000000000 18106:MB8|0000000000000000 18107:MB8|0000000000000000 18108:MB8|0000000000000000 18109:MB8|0000000000000000 18110:MB8|0000000000000000 18111:MB8|0000000000000000 18112:MB8|0000000000000000 18113:MB8|0000000000000000 18114:MB8|0000000000000000 18115:MB8|0000000000000000 18116:MB8|0000000000000000 18117:MB8|0000000000000000 18118:MB8|0000000000000000 18119:MB8|0000000000000000 18120:MB8|0000000000000000 18121:MB8|0000000000000000 18122:MB8|0000000000000000 18123:MB8|0000000000000000 18124:MB8|0000000000000000 18125:MB8|0000000000000000 18126:MB8|0000000000000000 18127:MB8|0000000000000000 18128:MB8|0000000000000000 18129:MB8|0000000000000000 18130:MB8|0000000000000000 18131:MB8|0000000000000000 18132:MB8|0000000000000000 18133:MB8|0000000000000000 18134:MB8|0000000000000000 18135:MB8|0000000000000000 18136:MB8|0000000000000000 18137:MB8|0000000000000000 18138:MB8|0000000000000000 18139:MB8|0000000000000000 18140:MB8|0000000000000000 18141:MB8|0000000000000000 18142:MB8|0000000000000000 18143:MB8|0000000000000000 18144:MB8|0000000000000000 18145:MB8|0000000000000000 18146:MB8|0000000000000000 18147:MB8|0000000000000000 18148:MB8|0000000000000000 18149:MB8|0000000000000000 18150:MB8|0000000000000000 18151:MB8|0000000000000000 18152:MB8|0000000000000000 18153:MB8|0000000000000000 18154:MB8|0000000000000000 18155:MB8|0000000000000000 18156:MB8|0000000000000000 18157:MB8|0000000000000000 18158:MB8|0000000000000000 18159:MB8|0000000000000000 18160:MB8|0000000000000000 18161:MB8|0000000000000000 18162:MB8|0000000000000000 18163:MB8|0000000000000000 18164:MB8|0000000000000000 18165:MB8|0000000000000000 18166:MB8|0000000000000000 18167:MB8|0000000000000000 18168:MB8|0000000000000000 18169:MB8|0000000000000000 18170:MB8|0000000000000000 18171:MB8|0000000000000000 18172:MB8|0000000000000000 18173:MB8|0000000000000000 18174:MB8|0000000000000000 18175:MB8|0000000000000000 18176:MB8|0000000000000000 18177:MB8|0000000000000000 18178:MB8|0000000000000000 18179:MB8|0000000000000000 18180:MB8|0000000000000000 18181:MB8|0000000000000000 18182:MB8|0000000000000000 18183:MB8|0000000000000000 18184:MB8|0000000000000000 18185:MB8|0000000000000000 18186:MB8|0000000000000000 18187:MB8|0000000000000000 18188:MB8|0000000000000000 18189:MB8|0000000000000000 18190:MB8|0000000000000000 18191:MB8|0000000000000000 18192:MB8|0000000000000000 18193:MB8|0000000000000000 18194:MB8|0000000000000000 18195:MB8|0000000000000000 18196:MB8|0000000000000000 18197:MB8|0000000000000000 18198:MB8|0000000000000000 18199:MB8|0000000000000000 18200:MB8|0000000000000000 18201:MB8|0000000000000000 18202:MB8|0000000000000000 18203:MB8|0000000000000000 18204:MB8|0000000000000000 18205:MB8|0000000000000000 18206:MB8|0000000000000000 18207:MB8|0000000000000000 18208:MB8|0000000000000000 18209:MB8|0000000000000000 18210:MB8|0000000000000000 18211:MB8|0000000000000000 18212:MB8|0000000000000000 18213:MB8|0000000000000000 18214:MB8|0000000000000000 18215:MB8|0000000000000000 18216:MB8|0000000000000000 18217:MB8|0000000000000000 18218:MB8|0000000000000000 18219:MB8|0000000000000000 18220:MB8|0000000000000000 18221:MB8|0000000000000000 18222:MB8|0000000000000000 18223:MB8|0000000000000000 18224:MB8|0000000000000000 18225:MB8|0000000000000000 18226:MB8|0000000000000000 18227:MB8|0000000000000000 18228:MB8|0000000000000000 18229:MB8|0000000000000000 18230:MB8|0000000000000000 18231:MB8|0000000000000000 18232:MB8|0000000000000000 18233:MB8|0000000000000000 18234:MB8|0000000000000000 18235:MB8|0000000000000000 18236:MB8|0000000000000000 18237:MB8|0000000000000000 18238:MB8|0000000000000000 18239:MB8|0000000000000000 18240:MB8|0000000000000000 18241:MB8|0000000000000000 18242:MB8|0000000000000000 18243:MB8|0000000000000000 18244:MB8|0000000000000000 18245:MB8|0000000000000000 18246:MB8|0000000000000000 18247:MB8|0000000000000000 18248:MB8|0000000000000000 18249:MB8|0000000000000000 18250:MB8|0000000000000000 18251:MB8|0000000000000000 18252:MB8|0000000000000000 18253:MB8|0000000000000000 18254:MB8|0000000000000000 18255:MB8|0000000000000000 18256:MB8|0000000000000000 18257:MB8|0000000000000000 18258:MB8|0000000000000000 18259:MB8|0000000000000000 18260:MB8|0000000000000000 18261:MB8|0000000000000000 18262:MB8|0000000000000000 18263:MB8|0000000000000000 18264:MB8|0000000000000000 18265:MB8|0000000000000000 18266:MB8|0000000000000000 18267:MB8|0000000000000000 18268:MB8|0000000000000000 18269:MB8|0000000000000000 18270:MB8|0000000000000000 18271:MB8|0000000000000000 18272:MB8|0000000000000000 18273:MB8|0000000000000000 18274:MB8|0000000000000000 18275:MB8|0000000000000000 18276:MB8|0000000000000000 18277:MB8|0000000000000000 18278:MB8|0000000000000000 18279:MB8|0000000000000000 18280:MB8|0000000000000000 18281:MB8|0000000000000000 18282:MB8|0000000000000000 18283:MB8|0000000000000000 18284:MB8|0000000000000000 18285:MB8|0000000000000000 18286:MB8|0000000000000000 18287:MB8|0000000000000000 18288:MB8|0000000000000000 18289:MB8|0000000000000000 18290:MB8|0000000000000000 18291:MB8|0000000000000000 18292:MB8|0000000000000000 18293:MB8|0000000000000000 18294:MB8|0000000000000000 18295:MB8|0000000000000000 18296:MB8|0000000000000000 18297:MB8|0000000000000000 18298:MB8|0000000000000000 18299:MB8|0000000000000000 18300:MB8|0000000000000000 18301:MB8|0000000000000000 18302:MB8|0000000000000000 18303:MB8|0000000000000000 18304:MB8|0000000000000000 18305:MB8|0000000000000000 18306:MB8|0000000000000000 18307:MB8|0000000000000000 18308:MB8|0000000000000000 18309:MB8|0000000000000000 18310:MB8|0000000000000000 18311:MB8|0000000000000000 18312:MB8|0000000000000000 18313:MB8|0000000000000000 18314:MB8|0000000000000000 18315:MB8|0000000000000000 18316:MB8|0000000000000000 18317:MB8|0000000000000000 18318:MB8|0000000000000000 18319:MB8|0000000000000000 18320:MB8|0000000000000000 18321:MB8|0000000000000000 18322:MB8|0000000000000000 18323:MB8|0000000000000000 18324:MB8|0000000000000000 18325:MB8|0000000000000000 18326:MB8|0000000000000000 18327:MB8|0000000000000000 18328:MB8|0000000000000000 18329:MB8|0000000000000000 18330:MB8|0000000000000000 18331:MB8|0000000000000000 18332:MB8|0000000000000000 18333:MB8|0000000000000000 18334:MB8|0000000000000000 18335:MB8|0000000000000000 18336:MB8|0000000000000000 18337:MB8|0000000000000000 18338:MB8|0000000000000000 18339:MB8|0000000000000000 18340:MB8|0000000000000000 18341:MB8|0000000000000000 18342:MB8|0000000000000000 18343:MB8|0000000000000000 18344:MB8|0000000000000000 18345:MB8|0000000000000000 18346:MB8|0000000000000000 18347:MB8|0000000000000000 18348:MB8|0000000000000000 18349:MB8|0000000000000000 18350:MB8|0000000000000000 18351:MB8|0000000000000000 18352:MB8|0000000000000000 18353:MB8|0000000000000000 18354:MB8|0000000000000000 18355:MB8|0000000000000000 18356:MB8|0000000000000000 18357:MB8|0000000000000000 18358:MB8|0000000000000000 18359:MB8|0000000000000000 18360:MB8|0000000000000000 18361:MB8|0000000000000000 18362:MB8|0000000000000000 18363:MB8|0000000000000000 18364:MB8|0000000000000000 18365:MB8|0000000000000000 18366:MB8|0000000000000000 18367:MB8|0000000000000000 18368:MB8|0000000000000000 18369:MB8|0000000000000000 18370:MB8|0000000000000000 18371:MB8|0000000000000000 18372:MB8|0000000000000000 18373:MB8|0000000000000000 18374:MB8|0000000000000000 18375:MB8|0000000000000000 18376:MB8|0000000000000000 18377:MB8|0000000000000000 18378:MB8|0000000000000000 18379:MB8|0000000000000000 18380:MB8|0000000000000000 18381:MB8|0000000000000000 18382:MB8|0000000000000000 18383:MB8|0000000000000000 18384:MB8|0000000000000000 18385:MB8|0000000000000000 18386:MB8|0000000000000000 18387:MB8|0000000000000000 18388:MB8|0000000000000000 18389:MB8|0000000000000000 18390:MB8|0000000000000000 18391:MB8|0000000000000000 18392:MB8|0000000000000000 18393:MB8|0000000000000000 18394:MB8|0000000000000000 18395:MB8|0000000000000000 18396:MB8|0000000000000000 18397:MB8|0000000000000000 18398:MB8|0000000000000000 18399:MB8|0000000000000000 18400:MB8|0000000000000000 18401:MB8|0000000000000000 18402:MB8|0000000000000000 18403:MB8|0000000000000000 18404:MB8|0000000000000000 18405:MB8|0000000000000000 18406:MB8|0000000000000000 18407:MB8|0000000000000000 18408:MB8|0000000000000000 18409:MB8|0000000000000000 18410:MB8|0000000000000000 18411:MB8|0000000000000000 18412:MB8|0000000000000000 18413:MB8|0000000000000000 18414:MB8|0000000000000000 18415:MB8|0000000000000000 18416:MB8|0000000000000000 18417:MB8|0000000000000000 18418:MB8|0000000000000000 18419:MB8|0000000000000000 18420:MB8|0000000000000000 18421:MB8|0000000000000000 18422:MB8|0000000000000000 18423:MB8|0000000000000000 18424:MB8|0000000000000000 18425:MB8|0000000000000000 18426:MB8|0000000000000000 18427:MB8|0000000000000000 18428:MB8|0000000000000000 18429:MB8|0000000000000000 18430:MB8|0000000000000000 18431:MB8|0000000000000000 18432:MB8|0000000000000000 18433:MB8|0000000000000000 18434:MB8|0000000000000000 18435:MB8|0000000000000000 18436:MB8|0000000000000000 18437:MB8|0000000000000000 18438:MB8|0000000000000000 18439:MB8|0000000000000000 18440:MB8|0000000000000000 18441:MB8|0000000000000000 18442:MB8|0000000000000000 18443:MB8|0000000000000000 18444:MB8|0000000000000000 18445:MB8|0000000000000000 18446:MB8|0000000000000000 18447:MB8|0000000000000000 18448:MB8|0000000000000000 18449:MB8|0000000000000000 18450:MB8|0000000000000000 18451:MB8|0000000000000000 18452:MB8|0000000000000000 18453:MB8|0000000000000000 18454:MB8|0000000000000000 18455:MB8|0000000000000000 18456:MB8|0000000000000000 18457:MB8|0000000000000000 18458:MB8|0000000000000000 18459:MB8|0000000000000000 18460:MB8|0000000000000000 18461:MB8|0000000000000000 18462:MB8|0000000000000000 18463:MB8|0000000000000000 18464:MB8|0000000000000000 18465:MB8|0000000000000000 18466:MB8|0000000000000000 18467:MB8|0000000000000000 18468:MB8|0000000000000000 18469:MB8|0000000000000000 18470:MB8|0000000000000000 18471:MB8|0000000000000000 18472:MB8|0000000000000000 18473:MB8|0000000000000000 18474:MB8|0000000000000000 18475:MB8|0000000000000000 18476:MB8|0000000000000000 18477:MB8|0000000000000000 18478:MB8|0000000000000000 18479:MB8|0000000000000000 18480:MB8|0000000000000000 18481:MB8|0000000000000000 18482:MB8|0000000000000000 18483:MB8|0000000000000000 18484:MB8|0000000000000000 18485:MB8|0000000000000000 18486:MB8|0000000000000000 18487:MB8|0000000000000000 18488:MB8|0000000000000000 18489:MB8|0000000000000000 18490:MB8|0000000000000000 18491:MB8|0000000000000000 18492:MB8|0000000000000000 18493:MB8|0000000000000000 18494:MB8|0000000000000000 18495:MB8|0000000000000000 18496:MB8|0000000000000000 18497:MB8|0000000000000000 18498:MB8|0000000000000000 18499:MB8|0000000000000000 18500:MB8|0000000000000000 18501:MB8|0000000000000000 18502:MB8|0000000000000000 18503:MB8|0000000000000000 18504:MB8|0000000000000000 18505:MB8|0000000000000000 18506:MB8|0000000000000000 18507:MB8|0000000000000000 18508:MB8|0000000000000000 18509:MB8|0000000000000000 18510:MB8|0000000000000000 18511:MB8|0000000000000000 18512:MB8|0000000000000000 18513:MB8|0000000000000000 18514:MB8|0000000000000000 18515:MB8|0000000000000000 18516:MB8|0000000000000000 18517:MB8|0000000000000000 18518:MB8|0000000000000000 18519:MB8|0000000000000000 18520:MB8|0000000000000000 18521:MB8|0000000000000000 18522:MB8|0000000000000000 18523:MB8|0000000000000000 18524:MB8|0000000000000000 18525:MB8|0000000000000000 18526:MB8|0000000000000000 18527:MB8|0000000000000000 18528:MB8|0000000000000000 18529:MB8|0000000000000000 18530:MB8|0000000000000000 18531:MB8|0000000000000000 18532:MB8|0000000000000000 18533:MB8|0000000000000000 18534:MB8|0000000000000000 18535:MB8|0000000000000000 18536:MB8|0000000000000000 18537:MB8|0000000000000000 18538:MB8|0000000000000000 18539:MB8|0000000000000000 18540:MB8|0000000000000000 18541:MB8|0000000000000000 18542:MB8|0000000000000000 18543:MB8|0000000000000000 18544:MB8|0000000000000000 18545:MB8|0000000000000000 18546:MB8|0000000000000000 18547:MB8|0000000000000000 18548:MB8|0000000000000000 18549:MB8|0000000000000000 18550:MB8|0000000000000000 18551:MB8|0000000000000000 18552:MB8|0000000000000000 18553:MB8|0000000000000000 18554:MB8|0000000000000000 18555:MB8|0000000000000000 18556:MB8|0000000000000000 18557:MB8|0000000000000000 18558:MB8|0000000000000000 18559:MB8|0000000000000000 18560:MB8|0000000000000000 18561:MB8|0000000000000000 18562:MB8|0000000000000000 18563:MB8|0000000000000000 18564:MB8|0000000000000000 18565:MB8|0000000000000000 18566:MB8|0000000000000000 18567:MB8|0000000000000000 18568:MB8|0000000000000000 18569:MB8|0000000000000000 18570:MB8|0000000000000000 18571:MB8|0000000000000000 18572:MB8|0000000000000000 18573:MB8|0000000000000000 18574:MB8|0000000000000000 18575:MB8|0000000000000000 18576:MB8|0000000000000000 18577:MB8|0000000000000000 18578:MB8|0000000000000000 18579:MB8|0000000000000000 18580:MB8|0000000000000000 18581:MB8|0000000000000000 18582:MB8|0000000000000000 18583:MB8|0000000000000000 18584:MB8|0000000000000000 18585:MB8|0000000000000000 18586:MB8|0000000000000000 18587:MB8|0000000000000000 18588:MB8|0000000000000000 18589:MB8|0000000000000000 18590:MB8|0000000000000000 18591:MB8|0000000000000000 18592:MB8|0000000000000000 18593:MB8|0000000000000000 18594:MB8|0000000000000000 18595:MB8|0000000000000000 18596:MB8|0000000000000000 18597:MB8|0000000000000000 18598:MB8|0000000000000000 18599:MB8|0000000000000000 18600:MB8|0000000000000000 18601:MB8|0000000000000000 18602:MB8|0000000000000000 18603:MB8|0000000000000000 18604:MB8|0000000000000000 18605:MB8|0000000000000000 18606:MB8|0000000000000000 18607:MB8|0000000000000000 18608:MB8|0000000000000000 18609:MB8|0000000000000000 18610:MB8|0000000000000000 18611:MB8|0000000000000000 18612:MB8|0000000000000000 18613:MB8|0000000000000000 18614:MB8|0000000000000000 18615:MB8|0000000000000000 18616:MB8|0000000000000000 18617:MB8|0000000000000000 18618:MB8|0000000000000000 18619:MB8|0000000000000000 18620:MB8|0000000000000000 18621:MB8|0000000000000000 18622:MB8|0000000000000000 18623:MB8|0000000000000000 18624:MB8|0000000000000000 18625:MB8|0000000000000000 18626:MB8|0000000000000000 18627:MB8|0000000000000000 18628:MB8|0000000000000000 18629:MB8|0000000000000000 18630:MB8|0000000000000000 18631:MB8|0000000000000000 18632:MB8|0000000000000000 18633:MB8|0000000000000000 18634:MB8|0000000000000000 18635:MB8|0000000000000000 18636:MB8|0000000000000000 18637:MB8|0000000000000000 18638:MB8|0000000000000000 18639:MB8|0000000000000000 18640:MB8|0000000000000000 18641:MB8|0000000000000000 18642:MB8|0000000000000000 18643:MB8|0000000000000000 18644:MB8|0000000000000000 18645:MB8|0000000000000000 18646:MB8|0000000000000000 18647:MB8|0000000000000000 18648:MB8|0000000000000000 18649:MB8|0000000000000000 18650:MB8|0000000000000000 18651:MB8|0000000000000000 18652:MB8|0000000000000000 18653:MB8|0000000000000000 18654:MB8|0000000000000000 18655:MB8|0000000000000000 18656:MB8|0000000000000000 18657:MB8|0000000000000000 18658:MB8|0000000000000000 18659:MB8|0000000000000000 18660:MB8|0000000000000000 18661:MB8|0000000000000000 18662:MB8|0000000000000000 18663:MB8|0000000000000000 18664:MB8|0000000000000000 18665:MB8|0000000000000000 18666:MB8|0000000000000000 18667:MB8|0000000000000000 18668:MB8|0000000000000000 18669:MB8|0000000000000000 18670:MB8|0000000000000000 18671:MB8|0000000000000000 18672:MB8|0000000000000000 18673:MB8|0000000000000000 18674:MB8|0000000000000000 18675:MB8|0000000000000000 18676:MB8|0000000000000000 18677:MB8|0000000000000000 18678:MB8|0000000000000000 18679:MB8|0000000000000000 18680:MB8|0000000000000000 18681:MB8|0000000000000000 18682:MB8|0000000000000000 18683:MB8|0000000000000000 18684:MB8|0000000000000000 18685:MB8|0000000000000000 18686:MB8|0000000000000000 18687:MB8|0000000000000000 18688:MB8|0000000000000000 18689:MB8|0000000000000000 18690:MB8|0000000000000000 18691:MB8|0000000000000000 18692:MB8|0000000000000000 18693:MB8|0000000000000000 18694:MB8|0000000000000000 18695:MB8|0000000000000000 18696:MB8|0000000000000000 18697:MB8|0000000000000000 18698:MB8|0000000000000000 18699:MB8|0000000000000000 18700:MB8|0000000000000000 18701:MB8|0000000000000000 18702:MB8|0000000000000000 18703:MB8|0000000000000000 18704:MB8|0000000000000000 18705:MB8|0000000000000000 18706:MB8|0000000000000000 18707:MB8|0000000000000000 18708:MB8|0000000000000000 18709:MB8|0000000000000000 18710:MB8|0000000000000000 18711:MB8|0000000000000000 18712:MB8|0000000000000000 18713:MB8|0000000000000000 18714:MB8|0000000000000000 18715:MB8|0000000000000000 18716:MB8|0000000000000000 18717:MB8|0000000000000000 18718:MB8|0000000000000000 18719:MB8|0000000000000000 18720:MB8|0000000000000000 18721:MB8|0000000000000000 18722:MB8|0000000000000000 18723:MB8|0000000000000000 18724:MB8|0000000000000000 18725:MB8|0000000000000000 18726:MB8|0000000000000000 18727:MB8|0000000000000000 18728:MB8|0000000000000000 18729:MB8|0000000000000000 18730:MB8|0000000000000000 18731:MB8|0000000000000000 18732:MB8|0000000000000000 18733:MB8|0000000000000000 18734:MB8|0000000000000000 18735:MB8|0000000000000000 18736:MB8|0000000000000000 18737:MB8|0000000000000000 18738:MB8|0000000000000000 18739:MB8|0000000000000000 18740:MB8|0000000000000000 18741:MB8|0000000000000000 18742:MB8|0000000000000000 18743:MB8|0000000000000000 18744:MB8|0000000000000000 18745:MB8|0000000000000000 18746:MB8|0000000000000000 18747:MB8|0000000000000000 18748:MB8|0000000000000000 18749:MB8|0000000000000000 18750:MB8|0000000000000000 18751:MB8|0000000000000000 18752:MB8|0000000000000000 18753:MB8|0000000000000000 18754:MB8|0000000000000000 18755:MB8|0000000000000000 18756:MB8|0000000000000000 18757:MB8|0000000000000000 18758:MB8|0000000000000000 18759:MB8|0000000000000000 18760:MB8|0000000000000000 18761:MB8|0000000000000000 18762:MB8|0000000000000000 18763:MB8|0000000000000000 18764:MB8|0000000000000000 18765:MB8|0000000000000000 18766:MB8|0000000000000000 18767:MB8|0000000000000000 18768:MB8|0000000000000000 18769:MB8|0000000000000000 18770:MB8|0000000000000000 18771:MB8|0000000000000000 18772:MB8|0000000000000000 18773:MB8|0000000000000000 18774:MB8|0000000000000000 18775:MB8|0000000000000000 18776:MB8|0000000000000000 18777:MB8|0000000000000000 18778:MB8|0000000000000000 18779:MB8|0000000000000000 18780:MB8|0000000000000000 18781:MB8|0000000000000000 18782:MB8|0000000000000000 18783:MB8|0000000000000000 18784:MB8|0000000000000000 18785:MB8|0000000000000000 18786:MB8|0000000000000000 18787:MB8|0000000000000000 18788:MB8|0000000000000000 18789:MB8|0000000000000000 18790:MB8|0000000000000000 18791:MB8|0000000000000000 18792:MB8|0000000000000000 18793:MB8|0000000000000000 18794:MB8|0000000000000000 18795:MB8|0000000000000000 18796:MB8|0000000000000000 18797:MB8|0000000000000000 18798:MB8|0000000000000000 18799:MB8|0000000000000000 18800:MB8|0000000000000000 18801:MB8|0000000000000000 18802:MB8|0000000000000000 18803:MB8|0000000000000000 18804:MB8|0000000000000000 18805:MB8|0000000000000000 18806:MB8|0000000000000000 18807:MB8|0000000000000000 18808:MB8|0000000000000000 18809:MB8|0000000000000000 18810:MB8|0000000000000000 18811:MB8|0000000000000000 18812:MB8|0000000000000000 18813:MB8|0000000000000000 18814:MB8|0000000000000000 18815:MB8|0000000000000000 18816:MB8|0000000000000000 18817:MB8|0000000000000000 18818:MB8|0000000000000000 18819:MB8|0000000000000000 18820:MB8|0000000000000000 18821:MB8|0000000000000000 18822:MB8|0000000000000000 18823:MB8|0000000000000000 18824:MB8|0000000000000000 18825:MB8|0000000000000000 18826:MB8|0000000000000000 18827:MB8|0000000000000000 18828:MB8|0000000000000000 18829:MB8|0000000000000000 18830:MB8|0000000000000000 18831:MB8|0000000000000000 18832:MB8|0000000000000000 18833:MB8|0000000000000000 18834:MB8|0000000000000000 18835:MB8|0000000000000000 18836:MB8|0000000000000000 18837:MB8|0000000000000000 18838:MB8|0000000000000000 18839:MB8|0000000000000000 18840:MB8|0000000000000000 18841:MB8|0000000000000000 18842:MB8|0000000000000000 18843:MB8|0000000000000000 18844:MB8|0000000000000000 18845:MB8|0000000000000000 18846:MB8|0000000000000000 18847:MB8|0000000000000000 18848:MB8|0000000000000000 18849:MB8|0000000000000000 18850:MB8|0000000000000000 18851:MB8|0000000000000000 18852:MB8|0000000000000000 18853:MB8|0000000000000000 18854:MB8|0000000000000000 18855:MB8|0000000000000000 18856:MB8|0000000000000000 18857:MB8|0000000000000000 18858:MB8|0000000000000000 18859:MB8|0000000000000000 18860:MB8|0000000000000000 18861:MB8|0000000000000000 18862:MB8|0000000000000000 18863:MB8|0000000000000000 18864:MB8|0000000000000000 18865:MB8|0000000000000000 18866:MB8|0000000000000000 18867:MB8|0000000000000000 18868:MB8|0000000000000000 18869:MB8|0000000000000000 18870:MB8|0000000000000000 18871:MB8|0000000000000000 18872:MB8|0000000000000000 18873:MB8|0000000000000000 18874:MB8|0000000000000000 18875:MB8|0000000000000000 18876:MB8|0000000000000000 18877:MB8|0000000000000000 18878:MB8|0000000000000000 18879:MB8|0000000000000000 18880:MB8|0000000000000000 18881:MB8|0000000000000000 18882:MB8|0000000000000000 18883:MB8|0000000000000000 18884:MB8|0000000000000000 18885:MB8|0000000000000000 18886:MB8|0000000000000000 18887:MB8|0000000000000000 18888:MB8|0000000000000000 18889:MB8|0000000000000000 18890:MB8|0000000000000000 18891:MB8|0000000000000000 18892:MB8|0000000000000000 18893:MB8|0000000000000000 18894:MB8|0000000000000000 18895:MB8|0000000000000000 18896:MB8|0000000000000000 18897:MB8|0000000000000000 18898:MB8|0000000000000000 18899:MB8|0000000000000000 18900:MB8|0000000000000000 18901:MB8|0000000000000000 18902:MB8|0000000000000000 18903:MB8|0000000000000000 18904:MB8|0000000000000000 18905:MB8|0000000000000000 18906:MB8|0000000000000000 18907:MB8|0000000000000000 18908:MB8|0000000000000000 18909:MB8|0000000000000000 18910:MB8|0000000000000000 18911:MB8|0000000000000000 18912:MB8|0000000000000000 18913:MB8|0000000000000000 18914:MB8|0000000000000000 18915:MB8|0000000000000000 18916:MB8|0000000000000000 18917:MB8|0000000000000000 18918:MB8|0000000000000000 18919:MB8|0000000000000000 18920:MB8|0000000000000000 18921:MB8|0000000000000000 18922:MB8|0000000000000000 18923:MB8|0000000000000000 18924:MB8|0000000000000000 18925:MB8|0000000000000000 18926:MB8|0000000000000000 18927:MB8|0000000000000000 18928:MB8|0000000000000000 18929:MB8|0000000000000000 18930:MB8|0000000000000000 18931:MB8|0000000000000000 18932:MB8|0000000000000000 18933:MB8|0000000000000000 18934:MB8|0000000000000000 18935:MB8|0000000000000000 18936:MB8|0000000000000000 18937:MB8|0000000000000000 18938:MB8|0000000000000000 18939:MB8|0000000000000000 18940:MB8|0000000000000000 18941:MB8|0000000000000000 18942:MB8|0000000000000000 18943:MB8|0000000000000000 18944:MB8|0000000000000000 18945:MB8|0000000000000000 18946:MB8|0000000000000000 18947:MB8|0000000000000000 18948:MB8|0000000000000000 18949:MB8|0000000000000000 18950:MB8|0000000000000000 18951:MB8|0000000000000000 18952:MB8|0000000000000000 18953:MB8|0000000000000000 18954:MB8|0000000000000000 18955:MB8|0000000000000000 18956:MB8|0000000000000000 18957:MB8|0000000000000000 18958:MB8|0000000000000000 18959:MB8|0000000000000000 18960:MB8|0000000000000000 18961:MB8|0000000000000000 18962:MB8|0000000000000000 18963:MB8|0000000000000000 18964:MB8|0000000000000000 18965:MB8|0000000000000000 18966:MB8|0000000000000000 18967:MB8|0000000000000000 18968:MB8|0000000000000000 18969:MB8|0000000000000000 18970:MB8|0000000000000000 18971:MB8|0000000000000000 18972:MB8|0000000000000000 18973:MB8|0000000000000000 18974:MB8|0000000000000000 18975:MB8|0000000000000000 18976:MB8|0000000000000000 18977:MB8|0000000000000000 18978:MB8|0000000000000000 18979:MB8|0000000000000000 18980:MB8|0000000000000000 18981:MB8|0000000000000000 18982:MB8|0000000000000000 18983:MB8|0000000000000000 18984:MB8|0000000000000000 18985:MB8|0000000000000000 18986:MB8|0000000000000000 18987:MB8|0000000000000000 18988:MB8|0000000000000000 18989:MB8|0000000000000000 18990:MB8|0000000000000000 18991:MB8|0000000000000000 18992:MB8|0000000000000000 18993:MB8|0000000000000000 18994:MB8|0000000000000000 18995:MB8|0000000000000000 18996:MB8|0000000000000000 18997:MB8|0000000000000000 18998:MB8|0000000000000000 18999:MB8|0000000000000000 19000:MB8|0000000000000000 19001:MB8|0000000000000000 19002:MB8|0000000000000000 19003:MB8|0000000000000000 19004:MB8|0000000000000000 19005:MB8|0000000000000000 19006:MB8|0000000000000000 19007:MB8|0000000000000000 19008:MB8|0000000000000000 19009:MB8|0000000000000000 19010:MB8|0000000000000000 19011:MB8|0000000000000000 19012:MB8|0000000000000000 19013:MB8|0000000000000000 19014:MB8|0000000000000000 19015:MB8|0000000000000000 19016:MB8|0000000000000000 19017:MB8|0000000000000000 19018:MB8|0000000000000000 19019:MB8|0000000000000000 19020:MB8|0000000000000000 19021:MB8|0000000000000000 19022:MB8|0000000000000000 19023:MB8|0000000000000000 19024:MB8|0000000000000000 19025:MB8|0000000000000000 19026:MB8|0000000000000000 19027:MB8|0000000000000000 19028:MB8|0000000000000000 19029:MB8|0000000000000000 19030:MB8|0000000000000000 19031:MB8|0000000000000000 19032:MB8|0000000000000000 19033:MB8|0000000000000000 19034:MB8|0000000000000000 19035:MB8|0000000000000000 19036:MB8|0000000000000000 19037:MB8|0000000000000000 19038:MB8|0000000000000000 19039:MB8|0000000000000000 19040:MB8|0000000000000000 19041:MB8|0000000000000000 19042:MB8|0000000000000000 19043:MB8|0000000000000000 19044:MB8|0000000000000000 19045:MB8|0000000000000000 19046:MB8|0000000000000000 19047:MB8|0000000000000000 19048:MB8|0000000000000000 19049:MB8|0000000000000000 19050:MB8|0000000000000000 19051:MB8|0000000000000000 19052:MB8|0000000000000000 19053:MB8|0000000000000000 19054:MB8|0000000000000000 19055:MB8|0000000000000000 19056:MB8|0000000000000000 19057:MB8|0000000000000000 19058:MB8|0000000000000000 19059:MB8|0000000000000000 19060:MB8|0000000000000000 19061:MB8|0000000000000000 19062:MB8|0000000000000000 19063:MB8|0000000000000000 19064:MB8|0000000000000000 19065:MB8|0000000000000000 19066:MB8|0000000000000000 19067:MB8|0000000000000000 19068:MB8|0000000000000000 19069:MB8|0000000000000000 19070:MB8|0000000000000000 19071:MB8|0000000000000000 19072:MB8|0000000000000000 19073:MB8|0000000000000000 19074:MB8|0000000000000000 19075:MB8|0000000000000000 19076:MB8|0000000000000000 19077:MB8|0000000000000000 19078:MB8|0000000000000000 19079:MB8|0000000000000000 19080:MB8|0000000000000000 19081:MB8|0000000000000000 19082:MB8|0000000000000000 19083:MB8|0000000000000000 19084:MB8|0000000000000000 19085:MB8|0000000000000000 19086:MB8|0000000000000000 19087:MB8|0000000000000000 19088:MB8|0000000000000000 19089:MB8|0000000000000000 19090:MB8|0000000000000000 19091:MB8|0000000000000000 19092:MB8|0000000000000000 19093:MB8|0000000000000000 19094:MB8|0000000000000000 19095:MB8|0000000000000000 19096:MB8|0000000000000000 19097:MB8|0000000000000000 19098:MB8|0000000000000000 19099:MB8|0000000000000000 19100:MB8|0000000000000000 19101:MB8|0000000000000000 19102:MB8|0000000000000000 19103:MB8|0000000000000000 19104:MB8|0000000000000000 19105:MB8|0000000000000000 19106:MB8|0000000000000000 19107:MB8|0000000000000000 19108:MB8|0000000000000000 19109:MB8|0000000000000000 19110:MB8|0000000000000000 19111:MB8|0000000000000000 19112:MB8|0000000000000000 19113:MB8|0000000000000000 19114:MB8|0000000000000000 19115:MB8|0000000000000000 19116:MB8|0000000000000000 19117:MB8|0000000000000000 19118:MB8|0000000000000000 19119:MB8|0000000000000000 19120:MB8|0000000000000000 19121:MB8|0000000000000000 19122:MB8|0000000000000000 19123:MB8|0000000000000000 19124:MB8|0000000000000000 19125:MB8|0000000000000000 19126:MB8|0000000000000000 19127:MB8|0000000000000000 19128:MB8|0000000000000000 19129:MB8|0000000000000000 19130:MB8|0000000000000000 19131:MB8|0000000000000000 19132:MB8|0000000000000000 19133:MB8|0000000000000000 19134:MB8|0000000000000000 19135:MB8|0000000000000000 19136:MB8|0000000000000000 19137:MB8|0000000000000000 19138:MB8|0000000000000000 19139:MB8|0000000000000000 19140:MB8|0000000000000000 19141:MB8|0000000000000000 19142:MB8|0000000000000000 19143:MB8|0000000000000000 19144:MB8|0000000000000000 19145:MB8|0000000000000000 19146:MB8|0000000000000000 19147:MB8|0000000000000000 19148:MB8|0000000000000000 19149:MB8|0000000000000000 19150:MB8|0000000000000000 19151:MB8|0000000000000000 19152:MB8|0000000000000000 19153:MB8|0000000000000000 19154:MB8|0000000000000000 19155:MB8|0000000000000000 19156:MB8|0000000000000000 19157:MB8|0000000000000000 19158:MB8|0000000000000000 19159:MB8|0000000000000000 19160:MB8|0000000000000000 19161:MB8|0000000000000000 19162:MB8|0000000000000000 19163:MB8|0000000000000000 19164:MB8|0000000000000000 19165:MB8|0000000000000000 19166:MB8|0000000000000000 19167:MB8|0000000000000000 19168:MB8|0000000000000000 19169:MB8|0000000000000000 19170:MB8|0000000000000000 19171:MB8|0000000000000000 19172:MB8|0000000000000000 19173:MB8|0000000000000000 19174:MB8|0000000000000000 19175:MB8|0000000000000000 19176:MB8|0000000000000000 19177:MB8|0000000000000000 19178:MB8|0000000000000000 19179:MB8|0000000000000000 19180:MB8|0000000000000000 19181:MB8|0000000000000000 19182:MB8|0000000000000000 19183:MB8|0000000000000000 19184:MB8|0000000000000000 19185:MB8|0000000000000000 19186:MB8|0000000000000000 19187:MB8|0000000000000000 19188:MB8|0000000000000000 19189:MB8|0000000000000000 19190:MB8|0000000000000000 19191:MB8|0000000000000000 19192:MB8|0000000000000000 19193:MB8|0000000000000000 19194:MB8|0000000000000000 19195:MB8|0000000000000000 19196:MB8|0000000000000000 19197:MB8|0000000000000000 19198:MB8|0000000000000000 19199:MB8|0000000000000000 19200:MB8|0000000000000000 19201:MB8|0000000000000000 19202:MB8|0000000000000000 19203:MB8|0000000000000000 19204:MB8|0000000000000000 19205:MB8|0000000000000000 19206:MB8|0000000000000000 19207:MB8|0000000000000000 19208:MB8|0000000000000000 19209:MB8|0000000000000000 19210:MB8|0000000000000000 19211:MB8|0000000000000000 19212:MB8|0000000000000000 19213:MB8|0000000000000000 19214:MB8|0000000000000000 19215:MB8|0000000000000000 19216:MB8|0000000000000000 19217:MB8|0000000000000000 19218:MB8|0000000000000000 19219:MB8|0000000000000000 19220:MB8|0000000000000000 19221:MB8|0000000000000000 19222:MB8|0000000000000000 19223:MB8|0000000000000000 19224:MB8|0000000000000000 19225:MB8|0000000000000000 19226:MB8|0000000000000000 19227:MB8|0000000000000000 19228:MB8|0000000000000000 19229:MB8|0000000000000000 19230:MB8|0000000000000000 19231:MB8|0000000000000000 19232:MB8|0000000000000000 19233:MB8|0000000000000000 19234:MB8|0000000000000000 19235:MB8|0000000000000000 19236:MB8|0000000000000000 19237:MB8|0000000000000000 19238:MB8|0000000000000000 19239:MB8|0000000000000000 19240:MB8|0000000000000000 19241:MB8|0000000000000000 19242:MB8|0000000000000000 19243:MB8|0000000000000000 19244:MB8|0000000000000000 19245:MB8|0000000000000000 19246:MB8|0000000000000000 19247:MB8|0000000000000000 19248:MB8|0000000000000000 19249:MB8|0000000000000000 19250:MB8|0000000000000000 19251:MB8|0000000000000000 19252:MB8|0000000000000000 19253:MB8|0000000000000000 19254:MB8|0000000000000000 19255:MB8|0000000000000000 19256:MB8|0000000000000000 19257:MB8|0000000000000000 19258:MB8|0000000000000000 19259:MB8|0000000000000000 19260:MB8|0000000000000000 19261:MB8|0000000000000000 19262:MB8|0000000000000000 19263:MB8|0000000000000000 19264:MB8|0000000000000000 19265:MB8|0000000000000000 19266:MB8|0000000000000000 19267:MB8|0000000000000000 19268:MB8|0000000000000000 19269:MB8|0000000000000000 19270:MB8|0000000000000000 19271:MB8|0000000000000000 19272:MB8|0000000000000000 19273:MB8|0000000000000000 19274:MB8|0000000000000000 19275:MB8|0000000000000000 19276:MB8|0000000000000000 19277:MB8|0000000000000000 19278:MB8|0000000000000000 19279:MB8|0000000000000000 19280:MB8|0000000000000000 19281:MB8|0000000000000000 19282:MB8|0000000000000000 19283:MB8|0000000000000000 19284:MB8|0000000000000000 19285:MB8|0000000000000000 19286:MB8|0000000000000000 19287:MB8|0000000000000000 19288:MB8|0000000000000000 19289:MB8|0000000000000000 19290:MB8|0000000000000000 19291:MB8|0000000000000000 19292:MB8|0000000000000000 19293:MB8|0000000000000000 19294:MB8|0000000000000000 19295:MB8|0000000000000000 19296:MB8|0000000000000000 19297:MB8|0000000000000000 19298:MB8|0000000000000000 19299:MB8|0000000000000000 19300:MB8|0000000000000000 19301:MB8|0000000000000000 19302:MB8|0000000000000000 19303:MB8|0000000000000000 19304:MB8|0000000000000000 19305:MB8|0000000000000000 19306:MB8|0000000000000000 19307:MB8|0000000000000000 19308:MB8|0000000000000000 19309:MB8|0000000000000000 19310:MB8|0000000000000000 19311:MB8|0000000000000000 19312:MB8|0000000000000000 19313:MB8|0000000000000000 19314:MB8|0000000000000000 19315:MB8|0000000000000000 19316:MB8|0000000000000000 19317:MB8|0000000000000000 19318:MB8|0000000000000000 19319:MB8|0000000000000000 19320:MB8|0000000000000000 19321:MB8|0000000000000000 19322:MB8|0000000000000000 19323:MB8|0000000000000000 19324:MB8|0000000000000000 19325:MB8|0000000000000000 19326:MB8|0000000000000000 19327:MB8|0000000000000000 19328:MB8|0000000000000000 19329:MB8|0000000000000000 19330:MB8|0000000000000000 19331:MB8|0000000000000000 19332:MB8|0000000000000000 19333:MB8|0000000000000000 19334:MB8|0000000000000000 19335:MB8|0000000000000000 19336:MB8|0000000000000000 19337:MB8|0000000000000000 19338:MB8|0000000000000000 19339:MB8|0000000000000000 19340:MB8|0000000000000000 19341:MB8|0000000000000000 19342:MB8|0000000000000000 19343:MB8|0000000000000000 19344:MB8|0000000000000000 19345:MB8|0000000000000000 19346:MB8|0000000000000000 19347:MB8|0000000000000000 19348:MB8|0000000000000000 19349:MB8|0000000000000000 19350:MB8|0000000000000000 19351:MB8|0000000000000000 19352:MB8|0000000000000000 19353:MB8|0000000000000000 19354:MB8|0000000000000000 19355:MB8|0000000000000000 19356:MB8|0000000000000000 19357:MB8|0000000000000000 19358:MB8|0000000000000000 19359:MB8|0000000000000000 19360:MB8|0000000000000000 19361:MB8|0000000000000000 19362:MB8|0000000000000000 19363:MB8|0000000000000000 19364:MB8|0000000000000000 19365:MB8|0000000000000000 19366:MB8|0000000000000000 19367:MB8|0000000000000000 19368:MB8|0000000000000000 19369:MB8|0000000000000000 19370:MB8|0000000000000000 19371:MB8|0000000000000000 19372:MB8|0000000000000000 19373:MB8|0000000000000000 19374:MB8|0000000000000000 19375:MB8|0000000000000000 19376:MB8|0000000000000000 19377:MB8|0000000000000000 19378:MB8|0000000000000000 19379:MB8|0000000000000000 19380:MB8|0000000000000000 19381:MB8|0000000000000000 19382:MB8|0000000000000000 19383:MB8|0000000000000000 19384:MB8|0000000000000000 19385:MB8|0000000000000000 19386:MB8|0000000000000000 19387:MB8|0000000000000000 19388:MB8|0000000000000000 19389:MB8|0000000000000000 19390:MB8|0000000000000000 19391:MB8|0000000000000000 19392:MB8|0000000000000000 19393:MB8|0000000000000000 19394:MB8|0000000000000000 19395:MB8|0000000000000000 19396:MB8|0000000000000000 19397:MB8|0000000000000000 19398:MB8|0000000000000000 19399:MB8|0000000000000000 19400:MB8|0000000000000000 19401:MB8|0000000000000000 19402:MB8|0000000000000000 19403:MB8|0000000000000000 19404:MB8|0000000000000000 19405:MB8|0000000000000000 19406:MB8|0000000000000000 19407:MB8|0000000000000000 19408:MB8|0000000000000000 19409:MB8|0000000000000000 19410:MB8|0000000000000000 19411:MB8|0000000000000000 19412:MB8|0000000000000000 19413:MB8|0000000000000000 19414:MB8|0000000000000000 19415:MB8|0000000000000000 19416:MB8|0000000000000000 19417:MB8|0000000000000000 19418:MB8|0000000000000000 19419:MB8|0000000000000000 19420:MB8|0000000000000000 19421:MB8|0000000000000000 19422:MB8|0000000000000000 19423:MB8|0000000000000000 19424:MB8|0000000000000000 19425:MB8|0000000000000000 19426:MB8|0000000000000000 19427:MB8|0000000000000000 19428:MB8|0000000000000000 19429:MB8|0000000000000000 19430:MB8|0000000000000000 19431:MB8|0000000000000000 19432:MB8|0000000000000000 19433:MB8|0000000000000000 19434:MB8|0000000000000000 19435:MB8|0000000000000000 19436:MB8|0000000000000000 19437:MB8|0000000000000000 19438:MB8|0000000000000000 19439:MB8|0000000000000000 19440:MB8|0000000000000000 19441:MB8|0000000000000000 19442:MB8|0000000000000000 19443:MB8|0000000000000000 19444:MB8|0000000000000000 19445:MB8|0000000000000000 19446:MB8|0000000000000000 19447:MB8|0000000000000000 19448:MB8|0000000000000000 19449:MB8|0000000000000000 19450:MB8|0000000000000000 19451:MB8|0000000000000000 19452:MB8|0000000000000000 19453:MB8|0000000000000000 19454:MB8|0000000000000000 19455:MB8|0000000000000000 19456:MB8|0000000000000000 19457:MB8|0000000000000000 19458:MB8|0000000000000000 19459:MB8|0000000000000000 19460:MB8|0000000000000000 19461:MB8|0000000000000000 19462:MB8|0000000000000000 19463:MB8|0000000000000000 19464:MB8|0000000000000000 19465:MB8|0000000000000000 19466:MB8|0000000000000000 19467:MB8|0000000000000000 19468:MB8|0000000000000000 19469:MB8|0000000000000000 19470:MB8|0000000000000000 19471:MB8|0000000000000000 19472:MB8|0000000000000000 19473:MB8|0000000000000000 19474:MB8|0000000000000000 19475:MB8|0000000000000000 19476:MB8|0000000000000000 19477:MB8|0000000000000000 19478:MB8|0000000000000000 19479:MB8|0000000000000000 19480:MB8|0000000000000000 19481:MB8|0000000000000000 19482:MB8|0000000000000000 19483:MB8|0000000000000000 19484:MB8|0000000000000000 19485:MB8|0000000000000000 19486:MB8|0000000000000000 19487:MB8|0000000000000000 19488:MB8|0000000000000000 19489:MB8|0000000000000000 19490:MB8|0000000000000000 19491:MB8|0000000000000000 19492:MB8|0000000000000000 19493:MB8|0000000000000000 19494:MB8|0000000000000000 19495:MB8|0000000000000000 19496:MB8|0000000000000000 19497:MB8|0000000000000000 19498:MB8|0000000000000000 19499:MB8|0000000000000000 19500:MB8|0000000000000000 19501:MB8|0000000000000000 19502:MB8|0000000000000000 19503:MB8|0000000000000000 19504:MB8|0000000000000000 19505:MB8|0000000000000000 19506:MB8|0000000000000000 19507:MB8|0000000000000000 19508:MB8|0000000000000000 19509:MB8|0000000000000000 19510:MB8|0000000000000000 19511:MB8|0000000000000000 19512:MB8|0000000000000000 19513:MB8|0000000000000000 19514:MB8|0000000000000000 19515:MB8|0000000000000000 19516:MB8|0000000000000000 19517:MB8|0000000000000000 19518:MB8|0000000000000000 19519:MB8|0000000000000000 19520:MB8|0000000000000000 19521:MB8|0000000000000000 19522:MB8|0000000000000000 19523:MB8|0000000000000000 19524:MB8|0000000000000000 19525:MB8|0000000000000000 19526:MB8|0000000000000000 19527:MB8|0000000000000000 19528:MB8|0000000000000000 19529:MB8|0000000000000000 19530:MB8|0000000000000000 19531:MB8|0000000000000000 19532:MB8|0000000000000000 19533:MB8|0000000000000000 19534:MB8|0000000000000000 19535:MB8|0000000000000000 19536:MB8|0000000000000000 19537:MB8|0000000000000000 19538:MB8|0000000000000000 19539:MB8|0000000000000000 19540:MB8|0000000000000000 19541:MB8|0000000000000000 19542:MB8|0000000000000000 19543:MB8|0000000000000000 19544:MB8|0000000000000000 19545:MB8|0000000000000000 19546:MB8|0000000000000000 19547:MB8|0000000000000000 19548:MB8|0000000000000000 19549:MB8|0000000000000000 19550:MB8|0000000000000000 19551:MB8|0000000000000000 19552:MB8|0000000000000000 19553:MB8|0000000000000000 19554:MB8|0000000000000000 19555:MB8|0000000000000000 19556:MB8|0000000000000000 19557:MB8|0000000000000000 19558:MB8|0000000000000000 19559:MB8|0000000000000000 19560:MB8|0000000000000000 19561:MB8|0000000000000000 19562:MB8|0000000000000000 19563:MB8|0000000000000000 19564:MB8|0000000000000000 19565:MB8|0000000000000000 19566:MB8|0000000000000000 19567:MB8|0000000000000000 19568:MB8|0000000000000000 19569:MB8|0000000000000000 19570:MB8|0000000000000000 19571:MB8|0000000000000000 19572:MB8|0000000000000000 19573:MB8|0000000000000000 19574:MB8|0000000000000000 19575:MB8|0000000000000000 19576:MB8|0000000000000000 19577:MB8|0000000000000000 19578:MB8|0000000000000000 19579:MB8|0000000000000000 19580:MB8|0000000000000000 19581:MB8|0000000000000000 19582:MB8|0000000000000000 19583:MB8|0000000000000000 19584:MB8|0000000000000000 19585:MB8|0000000000000000 19586:MB8|0000000000000000 19587:MB8|0000000000000000 19588:MB8|0000000000000000 19589:MB8|0000000000000000 19590:MB8|0000000000000000 19591:MB8|0000000000000000 19592:MB8|0000000000000000 19593:MB8|0000000000000000 19594:MB8|0000000000000000 19595:MB8|0000000000000000 19596:MB8|0000000000000000 19597:MB8|0000000000000000 19598:MB8|0000000000000000 19599:MB8|0000000000000000 19600:MB8|0000000000000000 19601:MB8|0000000000000000 19602:MB8|0000000000000000 19603:MB8|0000000000000000 19604:MB8|0000000000000000 19605:MB8|0000000000000000 19606:MB8|0000000000000000 19607:MB8|0000000000000000 19608:MB8|0000000000000000 19609:MB8|0000000000000000 19610:MB8|0000000000000000 19611:MB8|0000000000000000 19612:MB8|0000000000000000 19613:MB8|0000000000000000 19614:MB8|0000000000000000 19615:MB8|0000000000000000 19616:MB8|0000000000000000 19617:MB8|0000000000000000 19618:MB8|0000000000000000 19619:MB8|0000000000000000 19620:MB8|0000000000000000 19621:MB8|0000000000000000 19622:MB8|0000000000000000 19623:MB8|0000000000000000 19624:MB8|0000000000000000 19625:MB8|0000000000000000 19626:MB8|0000000000000000 19627:MB8|0000000000000000 19628:MB8|0000000000000000 19629:MB8|0000000000000000 19630:MB8|0000000000000000 19631:MB8|0000000000000000 19632:MB8|0000000000000000 19633:MB8|0000000000000000 19634:MB8|0000000000000000 19635:MB8|0000000000000000 19636:MB8|0000000000000000 19637:MB8|0000000000000000 19638:MB8|0000000000000000 19639:MB8|0000000000000000 19640:MB8|0000000000000000 19641:MB8|0000000000000000 19642:MB8|0000000000000000 19643:MB8|0000000000000000 19644:MB8|0000000000000000 19645:MB8|0000000000000000 19646:MB8|0000000000000000 19647:MB8|0000000000000000 19648:MB8|0000000000000000 19649:MB8|0000000000000000 19650:MB8|0000000000000000 19651:MB8|0000000000000000 19652:MB8|0000000000000000 19653:MB8|0000000000000000 19654:MB8|0000000000000000 19655:MB8|0000000000000000 19656:MB8|0000000000000000 19657:MB8|0000000000000000 19658:MB8|0000000000000000 19659:MB8|0000000000000000 19660:MB8|0000000000000000 19661:MB8|0000000000000000 19662:MB8|0000000000000000 19663:MB8|0000000000000000 19664:MB8|0000000000000000 19665:MB8|0000000000000000 19666:MB8|0000000000000000 19667:MB8|0000000000000000 19668:MB8|0000000000000000 19669:MB8|0000000000000000 19670:MB8|0000000000000000 19671:MB8|0000000000000000 19672:MB8|0000000000000000 19673:MB8|0000000000000000 19674:MB8|0000000000000000 19675:MB8|0000000000000000 19676:MB8|0000000000000000 19677:MB8|0000000000000000 19678:MB8|0000000000000000 19679:MB8|0000000000000000 19680:MB8|0000000000000000 19681:MB8|0000000000000000 19682:MB8|0000000000000000 19683:MB8|0000000000000000 19684:MB8|0000000000000000 19685:MB8|0000000000000000 19686:MB8|0000000000000000 19687:MB8|0000000000000000 19688:MB8|0000000000000000 19689:MB8|0000000000000000 19690:MB8|0000000000000000 19691:MB8|0000000000000000 19692:MB8|0000000000000000 19693:MB8|0000000000000000 19694:MB8|0000000000000000 19695:MB8|0000000000000000 19696:MB8|0000000000000000 19697:MB8|0000000000000000 19698:MB8|0000000000000000 19699:MB8|0000000000000000 19700:MB8|0000000000000000 19701:MB8|0000000000000000 19702:MB8|0000000000000000 19703:MB8|0000000000000000 19704:MB8|0000000000000000 19705:MB8|0000000000000000 19706:MB8|0000000000000000 19707:MB8|0000000000000000 19708:MB8|0000000000000000 19709:MB8|0000000000000000 19710:MB8|0000000000000000 19711:MB8|0000000000000000 19712:MB8|0000000000000000 19713:MB8|0000000000000000 19714:MB8|0000000000000000 19715:MB8|0000000000000000 19716:MB8|0000000000000000 19717:MB8|0000000000000000 19718:MB8|0000000000000000 19719:MB8|0000000000000000 19720:MB8|0000000000000000 19721:MB8|0000000000000000 19722:MB8|0000000000000000 19723:MB8|0000000000000000 19724:MB8|0000000000000000 19725:MB8|0000000000000000 19726:MB8|0000000000000000 19727:MB8|0000000000000000 19728:MB8|0000000000000000 19729:MB8|0000000000000000 19730:MB8|0000000000000000 19731:MB8|0000000000000000 19732:MB8|0000000000000000 19733:MB8|0000000000000000 19734:MB8|0000000000000000 19735:MB8|0000000000000000 19736:MB8|0000000000000000 19737:MB8|0000000000000000 19738:MB8|0000000000000000 19739:MB8|0000000000000000 19740:MB8|0000000000000000 19741:MB8|0000000000000000 19742:MB8|0000000000000000 19743:MB8|0000000000000000 19744:MB8|0000000000000000 19745:MB8|0000000000000000 19746:MB8|0000000000000000 19747:MB8|0000000000000000 19748:MB8|0000000000000000 19749:MB8|0000000000000000 19750:MB8|0000000000000000 19751:MB8|0000000000000000 19752:MB8|0000000000000000 19753:MB8|0000000000000000 19754:MB8|0000000000000000 19755:MB8|0000000000000000 19756:MB8|0000000000000000 19757:MB8|0000000000000000 19758:MB8|0000000000000000 19759:MB8|0000000000000000 19760:MB8|0000000000000000 19761:MB8|0000000000000000 19762:MB8|0000000000000000 19763:MB8|0000000000000000 19764:MB8|0000000000000000 19765:MB8|0000000000000000 19766:MB8|0000000000000000 19767:MB8|0000000000000000 19768:MB8|0000000000000000 19769:MB8|0000000000000000 19770:MB8|0000000000000000 19771:MB8|0000000000000000 19772:MB8|0000000000000000 19773:MB8|0000000000000000 19774:MB8|0000000000000000 19775:MB8|0000000000000000 19776:MB8|0000000000000000 19777:MB8|0000000000000000 19778:MB8|0000000000000000 19779:MB8|0000000000000000 19780:MB8|0000000000000000 19781:MB8|0000000000000000 19782:MB8|0000000000000000 19783:MB8|0000000000000000 19784:MB8|0000000000000000 19785:MB8|0000000000000000 19786:MB8|0000000000000000 19787:MB8|0000000000000000 19788:MB8|0000000000000000 19789:MB8|0000000000000000 19790:MB8|0000000000000000 19791:MB8|0000000000000000 19792:MB8|0000000000000000 19793:MB8|0000000000000000 19794:MB8|0000000000000000 19795:MB8|0000000000000000 19796:MB8|0000000000000000 19797:MB8|0000000000000000 19798:MB8|0000000000000000 19799:MB8|0000000000000000 19800:MB8|0000000000000000 19801:MB8|0000000000000000 19802:MB8|0000000000000000 19803:MB8|0000000000000000 19804:MB8|0000000000000000 19805:MB8|0000000000000000 19806:MB8|0000000000000000 19807:MB8|0000000000000000 19808:MB8|0000000000000000 19809:MB8|0000000000000000 19810:MB8|0000000000000000 19811:MB8|0000000000000000 19812:MB8|0000000000000000 19813:MB8|0000000000000000 19814:MB8|0000000000000000 19815:MB8|0000000000000000 19816:MB8|0000000000000000 19817:MB8|0000000000000000 19818:MB8|0000000000000000 19819:MB8|0000000000000000 19820:MB8|0000000000000000 19821:MB8|0000000000000000 19822:MB8|0000000000000000 19823:MB8|0000000000000000 19824:MB8|0000000000000000 19825:MB8|0000000000000000 19826:MB8|0000000000000000 19827:MB8|0000000000000000 19828:MB8|0000000000000000 19829:MB8|0000000000000000 19830:MB8|0000000000000000 19831:MB8|0000000000000000 19832:MB8|0000000000000000 19833:MB8|0000000000000000 19834:MB8|0000000000000000 19835:MB8|0000000000000000 19836:MB8|0000000000000000 19837:MB8|0000000000000000 19838:MB8|0000000000000000 19839:MB8|0000000000000000 19840:MB8|0000000000000000 19841:MB8|0000000000000000 19842:MB8|0000000000000000 19843:MB8|0000000000000000 19844:MB8|0000000000000000 19845:MB8|0000000000000000 19846:MB8|0000000000000000 19847:MB8|0000000000000000 19848:MB8|0000000000000000 19849:MB8|0000000000000000 19850:MB8|0000000000000000 19851:MB8|0000000000000000 19852:MB8|0000000000000000 19853:MB8|0000000000000000 19854:MB8|0000000000000000 19855:MB8|0000000000000000 19856:MB8|0000000000000000 19857:MB8|0000000000000000 19858:MB8|0000000000000000 19859:MB8|0000000000000000 19860:MB8|0000000000000000 19861:MB8|0000000000000000 19862:MB8|0000000000000000 19863:MB8|0000000000000000 19864:MB8|0000000000000000 19865:MB8|0000000000000000 19866:MB8|0000000000000000 19867:MB8|0000000000000000 19868:MB8|0000000000000000 19869:MB8|0000000000000000 19870:MB8|0000000000000000 19871:MB8|0000000000000000 19872:MB8|0000000000000000 19873:MB8|0000000000000000 19874:MB8|0000000000000000 19875:MB8|0000000000000000 19876:MB8|0000000000000000 19877:MB8|0000000000000000 19878:MB8|0000000000000000 19879:MB8|0000000000000000 19880:MB8|0000000000000000 19881:MB8|0000000000000000 19882:MB8|0000000000000000 19883:MB8|0000000000000000 19884:MB8|0000000000000000 19885:MB8|0000000000000000 19886:MB8|0000000000000000 19887:MB8|0000000000000000 19888:MB8|0000000000000000 19889:MB8|0000000000000000 19890:MB8|0000000000000000 19891:MB8|0000000000000000 19892:MB8|0000000000000000 19893:MB8|0000000000000000 19894:MB8|0000000000000000 19895:MB8|0000000000000000 19896:MB8|0000000000000000 19897:MB8|0000000000000000 19898:MB8|0000000000000000 19899:MB8|0000000000000000 19900:MB8|0000000000000000 19901:MB8|0000000000000000 19902:MB8|0000000000000000 19903:MB8|0000000000000000 19904:MB8|0000000000000000 19905:MB8|0000000000000000 19906:MB8|0000000000000000 19907:MB8|0000000000000000 19908:MB8|0000000000000000 19909:MB8|0000000000000000 19910:MB8|0000000000000000 19911:MB8|0000000000000000 14:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 15:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 16:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 17:MWVB32|0000000000000000506f6c7950726f63657373456e764572726f724e616d6500 18:MWVB32|0000000000000000506f6c795468726561644d75746578556e6c6f636b000000 19:MWVB32|0000000000000000506f6c795468726561644d75746578426c6f636b00000000 20:MWVB32|0000000000000000506f6c7954687265616454657374496e7465727275707400 21:MWVB32|0000000000000000506f6c79546872656164466f726b54687265616400000000 22:MWVB32|0000000000000000506f6c79546872656164436f6e6456617257616b65000000 23:MWVB32|0000000000000000506f6c7957616974466f725369676e616c00000000000000 24:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 25:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 26:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 27:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 28:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 29:MWVB24|0000000000000000506f6c7946696e697368000000000000 30:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 31:MWVB32|0000000000000000506f6c795468726561644d6178537461636b53697a650000 32:MWVB32|0000000000000000506f6c794164644172626974726172790000000000000000 33:MWVB32|0000000000000000506f6c7951756f7452656d41726269747261727900000000 34:MWVB32|0000000000000000506f6c795375627472616374417262697472617279000000 35:MWVB32|0000000000000000506f6c7947657446756e6374696f6e4e616d650000000000 36:MWVB32|0000000000000000506f6c794d756c7469706c79417262697472617279000000 37:MWVB32|0000000000000000506f6c79436f6d7061726541726269747261727900000000 38:MWVB32|0000000000000000506f6c795265616c426f786564546f537472696e67000000 39:MWVB32|0000000000000000506f6c794c6f636b4d757461626c65436f64650000000000 40:MWVB40|0000000000000000506f6c794765744c6f774f7264657241734c61726765576f7264000000000000 41:MWVB32|0000000000000000506f6c79536574436f6465436f6e7374616e740000000000 42:MWVB32|0000000000000000506f6c79436f707942797465566563546f436f6465000000 43:MWVB32|0000000000000000506f6c7952656d61696e6465724172626974726172790000 44:MWVB32|0000000000000000506f6c794469766964654172626974726172790000000000 45:MWVB24|0000000000000000506f6c795265616c47656e6572616c00 46:MWVB24|0000000000000000506f6c794f7241726269747261727900 47:MWVB24|0000000000000000506f6c7953697a65446f75626c650000 48:MWVB24|0000000000000000506f6c7953697a65466c6f6174000000 49:MWVB24|0000000000000000506f6c79476574414249000000000000 50:MWVB40|0000000000000000506f6c79437265617465456e747279506f696e744f626a656374000000000000 51:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 52:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 polyml-5.7.1/imports/polymlx86_64sysv.txt0000644000175000017500003060574113204034553017375 0ustar daviddavidObjects 19901 Root 9423 9423:O1|@4817 9424:O2|@9426,@9425 9425:O2|@9429,@9428 9426:O2|@4818,@19887 9427:S19|466f726569676e4d656d6f72792e5f2d283129 9428:O2|@9885,@9884 9429:O2|@4819,@9430 9430:O2|@4860,@9877 9431:O6|@9432,@4610,@9433,@4611,@19889,@4609 9432:O2|4096,@1 9433:O14|@9435,@9436,@9441,0,0,@9442,0,@9443,@9451,@9454,4096,0,@9457,@9434 9434:O1|@9460 9435:S6|7374644f7574 9436:O1|@9437 9437:O3|@4820,@9438,1 9438:O1|@4821 9439:S50|4c696272617279494f537570706f72742e777261704f757446696c654465736372283529746578745072696d57722d283129 9440:S18|506f6c794261736963494f47656e6572616c 9441:O3|@4822,@9438,1 9442:O1|1 9443:O1|@9444 9444:O3|@4823,@9445,1 9445:O1|@4824 9446:O4|11,@9448,0,@9447 9447:O5|@9449,143,0,143,0 9448:S9|537562736372697074 9449:S26|2e2f62617369732f4c696272617279537570706f72742e736d6c 9450:S49|4c696272617279494f537570706f72742e777261704f757446696c65446573637228352977726974654172726179283129 9451:O1|@9452 9452:O3|@4825,@9445,1 9453:S50|4c696272617279494f537570706f72742e777261704f757446696c6544657363722835297772697465566563746f72283129 9454:O1|@9455 9455:O3|@4826,@9456,1 9456:O1|@4827 9457:O1|@9458 9458:O3|@4828,@9444,@9455 9459:S40|5072696d494f28292e6175676d656e7457726974657228312977726974654172724e42272d283129 9460:O3|@4829,@9452,@9455 9461:S40|5072696d494f28292e6175676d656e7457726974657228312977726974655665634e42272d283129 9462:S31|556e61626c6520746f20637265617465207369676e616c207468726561640a 9463:O1|@4830 9464:S8|666c7573684f7574 9465:O4|@4612,@9466,0,0 9466:S20|426c6f636b696e674e6f74537570706f72746564 9467:O5|@9468,514,0,515,0 9468:S25|2e2f62617369732f426173696353747265616d494f2e736d6c 9469:S2|496f 9470:O1|@9471 9471:O1|@4831 9472:O2|@9473,0 9473:O2|3,@9474 9474:S4|2e2e2e7d 9475:O4|5,@9476,0,0 9476:S8|4f766572666c6f77 9477:O1|@4832 9478:O2|3,@9479 9479:S3|2e2e2e 9480:O2|@9481,0 9481:O2|3,@9482 9482:S4|2e2e2e29 9483:O2|@4834,@9484 9484:O2|@4837,@9496 9485:O2|@9486,0 9486:S1|22 9487:O4|4,@9489,0,@9488 9488:O5|@9449,169,0,169,0 9489:S4|53697a65 9490:O4|4,@9489,0,@9491 9491:O5|@9449,138,0,138,0 9492:S7|61646450502d31 9493:B8|0000000000000000 9494:S16|537472696e672e636f6e636174283129 9495:S19|537472696e672e746f537472696e6773283229 9496:O256|@9525,@9526,@9527,@9528,@9529,@9530,@9531,@9532,@9533,@9534,@9535,@9536,@9537,@9538,@9539,@9540,@9541,@9542,@9543,@9544,@9545,@9546,@9547,@9548,@9549,@9550,@9551,@9552,@9553,@9554,@9555,@9556,@9557,@9558,@9559,@9560,@9561,@9562,@9563,@9564,@9565,@9566,@9567,@9568,@9569,@9570,@9571,@9572,@9573,@9574,@9575,@9576,@9577,@9578,@9579,@9580,@9581,@9582,@9583,@9584,@9585,@9586,@9587,@9588,@9589,@9590,@9591,@9592,@9593,@9594,@9595,@9596,@9597,@9598,@9599,@9600,@9601,@9602,@9603,@9604,@9605,@9606,@9607,@9608,@9609,@9610,@9611,@9612,@9613,@9614,@9615,@9616,@9617,@9618,@9619,@9620,@9621,@9622,@9623,@9624,@9625,@9626,@9627,@9628,@9629,@9630,@9631,@9632,@9633,@9634,@9635,@9636,@9637,@9638,@9639,@9640,@9641,@9642,@9643,@9644,@9645,@9646,@9647,@9648,@9649,@9650,@9651,@9652,@9653,@9654,@9655,@9656,@9657,@9658,@9659,@9660,@9661,@9662,@9663,@9664,@9665,@9666,@9667,@9668,@9669,@9670,@9671,@9672,@9673,@9674,@9675,@9676,@9677,@9678,@9679,@9680,@9681,@9682,@9683,@9684,@9685,@9686,@9687,@9688,@9689,@9690,@9691,@9692,@9693,@9694,@9695,@9696,@9697,@9698,@9699,@9700,@9701,@9702,@9703,@9704,@9705,@9706,@9707,@9708,@9709,@9710,@9711,@9712,@9713,@9714,@9715,@9716,@9717,@9718,@9719,@9720,@9721,@9722,@9723,@9724,@9725,@9726,@9727,@9728,@9729,@9730,@9731,@9732,@9733,@9734,@9735,@9736,@9737,@9738,@9739,@9740,@9741,@9742,@9743,@9744,@9745,@9746,@9747,@9748,@9749,@9750,@9751,@9752,@9753,@9754,@9755,@9756,@9757,@9758,@9759,@9760,@9761,@9762,@9763,@9764,@9765,@9766,@9767,@9768,@9769,@9770,@9771,@9772,@9773,@9774,@9775,@9776,@9777,@9778,@9779,@9524 9497:S2|5c5c 9498:S2|5c22 9499:S2|5c61 9500:S2|5c62 9501:S2|5c74 9502:S2|5c6e 9503:S2|5c76 9504:S2|5c66 9505:S2|5c72 9506:S2|5c5e 9507:O4|@4616,@9509,0,@9508 9508:O5|@9510,126,0,126,0 9509:S3|436872 9510:S18|2e2f62617369732f537472696e672e736d6c 9511:S1|5c 9512:O4|7,@9514,0,@9513 9513:O5|@9515,125,0,125,0 9514:S3|446976 9515:S23|2e2f62617369732f496e697469616c42617369732e4d4c 9516:O4|5,@9518,0,@9517 9517:O5|@9515,128,0,128,0 9518:S8|4f766572666c6f77 9519:O4|7,@9521,0,@9520 9520:O5|@9515,134,0,134,0 9521:S3|446976 9522:S16|436861722e746f537472696e67283129 9523:S18|436861722e6f6374496e7452657072283329 9524:S1|ff 9525:S1|00 9526:S1|01 9527:S1|02 9528:S1|03 9529:S1|04 9530:S1|05 9531:S1|06 9532:S1|07 9533:S1|08 9534:S1|09 9535:S1|0a 9536:S1|0b 9537:S1|0c 9538:S1|0d 9539:S1|0e 9540:S1|0f 9541:S1|10 9542:S1|11 9543:S1|12 9544:S1|13 9545:S1|14 9546:S1|15 9547:S1|16 9548:S1|17 9549:S1|18 9550:S1|19 9551:S1|1a 9552:S1|1b 9553:S1|1c 9554:S1|1d 9555:S1|1e 9556:S1|1f 9557:S1|20 9558:S1|21 9559:S1|22 9560:S1|23 9561:S1|24 9562:S1|25 9563:S1|26 9564:S1|27 9565:S1|28 9566:S1|29 9567:S1|2a 9568:S1|2b 9569:S1|2c 9570:S1|2d 9571:S1|2e 9572:S1|2f 9573:S1|30 9574:S1|31 9575:S1|32 9576:S1|33 9577:S1|34 9578:S1|35 9579:S1|36 9580:S1|37 9581:S1|38 9582:S1|39 9583:S1|3a 9584:S1|3b 9585:S1|3c 9586:S1|3d 9587:S1|3e 9588:S1|3f 9589:S1|40 9590:S1|41 9591:S1|42 9592:S1|43 9593:S1|44 9594:S1|45 9595:S1|46 9596:S1|47 9597:S1|48 9598:S1|49 9599:S1|4a 9600:S1|4b 9601:S1|4c 9602:S1|4d 9603:S1|4e 9604:S1|4f 9605:S1|50 9606:S1|51 9607:S1|52 9608:S1|53 9609:S1|54 9610:S1|55 9611:S1|56 9612:S1|57 9613:S1|58 9614:S1|59 9615:S1|5a 9616:S1|5b 9617:S1|5c 9618:S1|5d 9619:S1|5e 9620:S1|5f 9621:S1|60 9622:S1|61 9623:S1|62 9624:S1|63 9625:S1|64 9626:S1|65 9627:S1|66 9628:S1|67 9629:S1|68 9630:S1|69 9631:S1|6a 9632:S1|6b 9633:S1|6c 9634:S1|6d 9635:S1|6e 9636:S1|6f 9637:S1|70 9638:S1|71 9639:S1|72 9640:S1|73 9641:S1|74 9642:S1|75 9643:S1|76 9644:S1|77 9645:S1|78 9646:S1|79 9647:S1|7a 9648:S1|7b 9649:S1|7c 9650:S1|7d 9651:S1|7e 9652:S1|7f 9653:S1|80 9654:S1|81 9655:S1|82 9656:S1|83 9657:S1|84 9658:S1|85 9659:S1|86 9660:S1|87 9661:S1|88 9662:S1|89 9663:S1|8a 9664:S1|8b 9665:S1|8c 9666:S1|8d 9667:S1|8e 9668:S1|8f 9669:S1|90 9670:S1|91 9671:S1|92 9672:S1|93 9673:S1|94 9674:S1|95 9675:S1|96 9676:S1|97 9677:S1|98 9678:S1|99 9679:S1|9a 9680:S1|9b 9681:S1|9c 9682:S1|9d 9683:S1|9e 9684:S1|9f 9685:S1|a0 9686:S1|a1 9687:S1|a2 9688:S1|a3 9689:S1|a4 9690:S1|a5 9691:S1|a6 9692:S1|a7 9693:S1|a8 9694:S1|a9 9695:S1|aa 9696:S1|ab 9697:S1|ac 9698:S1|ad 9699:S1|ae 9700:S1|af 9701:S1|b0 9702:S1|b1 9703:S1|b2 9704:S1|b3 9705:S1|b4 9706:S1|b5 9707:S1|b6 9708:S1|b7 9709:S1|b8 9710:S1|b9 9711:S1|ba 9712:S1|bb 9713:S1|bc 9714:S1|bd 9715:S1|be 9716:S1|bf 9717:S1|c0 9718:S1|c1 9719:S1|c2 9720:S1|c3 9721:S1|c4 9722:S1|c5 9723:S1|c6 9724:S1|c7 9725:S1|c8 9726:S1|c9 9727:S1|ca 9728:S1|cb 9729:S1|cc 9730:S1|cd 9731:S1|ce 9732:S1|cf 9733:S1|d0 9734:S1|d1 9735:S1|d2 9736:S1|d3 9737:S1|d4 9738:S1|d5 9739:S1|d6 9740:S1|d7 9741:S1|d8 9742:S1|d9 9743:S1|da 9744:S1|db 9745:S1|dc 9746:S1|dd 9747:S1|de 9748:S1|df 9749:S1|e0 9750:S1|e1 9751:S1|e2 9752:S1|e3 9753:S1|e4 9754:S1|e5 9755:S1|e6 9756:S1|e7 9757:S1|e8 9758:S1|e9 9759:S1|ea 9760:S1|eb 9761:S1|ec 9762:S1|ed 9763:S1|ee 9764:S1|ef 9765:S1|f0 9766:S1|f1 9767:S1|f2 9768:S1|f3 9769:S1|f4 9770:S1|f5 9771:S1|f6 9772:S1|f7 9773:S1|f8 9774:S1|f9 9775:S1|fa 9776:S1|fb 9777:S1|fc 9778:S1|fd 9779:S1|fe 9780:O1|@4839 9781:O2|3,@9782 9782:S3|2e2e2e 9783:O5|0,0,0,@9785,@9784 9784:O2|@9789,0 9785:O2|@9786,0 9786:O2|0,@9787 9787:O5|@9788,0,0,0,0 9788:S14|5374616e64617264204261736973 9789:O2|3,@9790 9790:S4|4e4f4e45 9791:O2|@9793,@9792 9792:O2|@9794,0 9793:O3|1,0,0 9794:O2|3,@9795 9795:S1|29 9796:O2|3,@9797 9797:S1|28 9798:O3|1,1,0 9799:O5|0,0,0,@9785,@9800 9800:O2|@9801,0 9801:O2|3,@9802 9802:S4|534f4d45 9803:S1|7b 9804:S12|7072696e742d6f7074696f6e 9805:S1|5b 9806:S13|7072696e746f7074696f6e2829 9807:O4|0,@9808,1,1 9808:O1|@4841 9809:O1|@4842 9810:S23|506f6c7950726f63657373456e764572726f724e616d65 9811:S17|7072696e742d4f532e7379736572726f72 9812:O2|@9813,0 9813:O2|3,@9795 9814:O3|1,1,0 9815:O2|3,@9816 9816:S1|2c 9817:O2|3,@9797 9818:O3|1,1,1 9819:O2|3,@9820 9820:S6|537973457272 9821:O2|@9822,0 9822:O2|3,@9566 9823:O2|3,@9565 9824:S11|65786e5072696e74283329 9825:S26|65786e5072696e74283329706172656e74686573697365283129 9826:O2|@9827,0 9827:O2|3,@9828 9828:S1|7d 9829:O2|3,@9830 9830:S6|6e616d65203d 9831:O2|3,@9832 9832:S10|66756e6374696f6e203d 9833:O2|3,@9834 9834:S7|6361757365203d 9835:O2|3,@9803 9836:S14|7072696e742d6c6162656c6c6564 9837:O4|11,@9448,0,@9838 9838:O5|@9839,111,0,111,0 9839:S33|2e2f62617369732f566563746f72536c6963654f7065726174696f6e732e736d6c 9840:O3|1,@9841,0 9841:S9|496e74657272757074 9842:O5|@9468,501,0,501,0 9843:S28|426173696353747265616d494f28292e666c7573684f757427283129 9844:O4|12,@9846,@9847,@9845 9845:O5|@9848,218,0,218,0 9846:S6|546872656164 9847:S53|5468652073616d65206174747269627574652061707065617273206d6f7265207468616e206f6e636520696e20746865206c697374 9848:S18|2e2f62617369732f5468726561642e736d6c 9849:S20|5369676e616c2e666f726b546872656164283129 9850:O5|@9851,77,0,77,0 9851:S27|2e2f62617369732f506f6c794d4c457863657074696f6e2e736d6c 9852:S20|5468726561644c69622e70726f74656374283329 9853:S20|506f6c795468726561644d75746578426c6f636b 9854:S23|506f6c7954687265616454657374496e74657272757074 9855:S7|7261697365466e 9856:S21|506f6c795468726561644d75746578556e6c6f636b 9857:S6|6f7574707574 9858:O4|@4619,@9859,0,0 9859:S12|436c6f73656453747265616d 9860:O5|@9468,610,0,610,0 9861:O4|11,@9448,0,@9862 9862:O5|@9510,1646,0,1646,0 9863:S34|426173696353747265616d494f28292e6f7574707574566563746f72283129283129 9864:O5|@9468,604,0,605,0 9865:O5|@9468,577,0,577,0 9866:S31|426173696353747265616d494f28292e6f7574707574566563746f72283229 9867:O5|@9468,595,0,595,0 9868:S27|426173696353747265616d494f28292e7772697465566563283429 9869:S38|426173696353747265616d494f28292e7772697465566563283429666f7263654f7574283129 9870:O4|11,@9448,0,@9871 9871:O5|@9839,101,0,101,0 9872:O4|11,@9448,0,@9873 9873:O5|@9510,267,0,267,0 9874:S29|54657874494f2e5465787453747265616d494f2e6f7574707574283229 9875:S20|506f6c79546872656164466f726b546872656164 9876:S38|5468726561642e5468726561642e6174747273546f576f7264283129636f6e76657274283429 9877:O1|@4864 9878:O1|@4861 9879:S38|5369676e616c2e73696754687265616428312962726f6164436173745765616b283129283129 9880:S35|5369676e616c2e73696754687265616428312962726f6164436173745765616b283229 9881:S21|506f6c79546872656164436f6e6456617257616b65 9882:S19|5369676e616c2e736967546872656164283129 9883:S17|506f6c7957616974466f725369676e616c 9884:O2|@9895,@9894 9885:O2|@4865,@9886 9886:O3|@4867,@9890,@19893 9887:S28|426173696353747265616d494f28292e646f4f6e456e747279283129 9888:S21|506f6c7950726f63657373456e7647656e6572616c 9889:S27|426173696353747265616d494f28292e636c6f7365416c6c283129 9890:O3|@4868,@19894,@19893 9891:S28|426173696353747265616d494f28292e636c6f73654f757427283129 9892:S35|426173696353747265616d494f28292e7465726d696e61746553747265616d27283129 9893:S16|4c6973742e66696c7465722832292829 9894:O2|@9958,0 9895:O3|@4872,@19896,@19895 9896:O9|@4873,@9445,@9924,@9456,@9438,@9925,@9926,@9927,@9897 9897:O6|@4898,0,0,@9932,@9928,@9928 9898:S47|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329726561644172726179283129 9899:S48|4c696272617279494f537570706f72742e77726170496e46696c65446573637228332972656164566563746f72283129 9900:S34|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283129283129 9901:O3|0,0,0 9902:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229676574506f732d283129 9903:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229736574506f732d283129 9904:S46|4c696272617279494f537570706f72742e67657452616e64416363657373466e73283229656e64506f732d283129 9905:S43|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329617661696c283129 9906:S49|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329746578745072696d52642d283129 9907:O4|4,@9489,0,@9908 9908:O5|@9449,149,0,149,0 9909:S37|5072696d494f28292e6175676d656e7452656164657228312972656164566563272d283129 9910:O4|11,@9448,0,@9911 9911:O5|@9510,1211,0,1211,0 9912:S37|5072696d494f28292e6175676d656e7452656164657228312972656164417272272d283129 9913:S39|5072696d494f28292e6175676d656e74526561646572283129726561645665634e42272d283129 9914:S39|5072696d494f28292e6175676d656e74526561646572283129726561644172724e42272d283129 9915:S7|72656164566563 9916:O5|@9917,239,0,242,0 9917:S18|2e2f62617369732f5072696d494f2e736d6c 9918:S38|5072696d494f28292e6175676d656e745265616465722831297265616456656327272d283129 9919:S7|72656164417272 9920:O5|@9917,262,0,265,0 9921:S38|5072696d494f28292e6175676d656e745265616465722831297265616441727227272d283129 9922:S35|4c696272617279494f537570706f72742e77726170496e46696c654465736372283329 9923:S25|5072696d494f28292e6175676d656e74526561646572283129 9924:O1|@4894 9925:O1|@4895 9926:O1|@4896 9927:O1|@4897 9928:O1|@9934 9929:O5|@9930,135,0,135,0 9930:S28|2e2f62617369732f4c696272617279494f537570706f72742e736d6c 9931:S31|4c696272617279494f537570706f72742e6e6f6e426c6f636b696e67283229 9932:O1|@9933 9933:B8|7300000000000000 9934:B8|0b00000000000000 9935:S5|737464496e 9936:S37|4261736963496d7065726174697665494f28292e736574496e73747265616d283229283129 9937:S19|54657874494f2e6f6e53746172745570283129 9938:O5|0,@9940,@9939,1693,0 9939:O3|1,@4620,@19897 9940:S1694|282a0a20202020436f707972696768742028632920323030362d31302c20323031352d31362020446176696420432e204a2e204d617474686577730a0a2020202054686973206c696272617279206973206672656520736f6674776172653b20796f752063616e2072656469737472696275746520697420616e642f6f720a202020206d6f6469667920697420756e64657220746865207465726d73206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e73652076657273696f6e20322e31206173207075626c697368656420627920746865204672656520536f66747761726520466f756e646174696f6e2e0a202020200a2020202054686973206c69627261727920697320646973747269627574656420696e2074686520686f706520746861742069742077696c6c2062652075736566756c2c0a2020202062757420574954484f555420414e592057415252414e54593b20776974686f7574206576656e2074686520696d706c6965642077617272616e7479206f660a202020204d45524348414e544142494c495459206f72204649544e45535320464f52204120504152544943554c415220505552504f53452e20205365652074686520474e550a202020204c65737365722047656e6572616c205075626c6963204c6963656e736520666f72206d6f72652064657461696c732e0a202020200a20202020596f752073686f756c642068617665207265636569766564206120636f7079206f662074686520474e55204c65737365722047656e6572616c205075626c69630a202020204c6963656e736520616c6f6e6720776974682074686973206c6962726172793b206966206e6f742c20777269746520746f20746865204672656520536f6674776172650a20202020466f756e646174696f6e2c20496e632e2c203531204672616e6b6c696e2053742c20466966746820466c6f6f722c20426f73746f6e2c204d41202030323131302d3133303120205553410a2a290a0a282a20436f6d70696c65722074686520636f6d70696c657220616e64206578706f7274206974206173206120706f727461626c652066696c652e20205468652072657374206f66207468650a202020626f6f7473747261702070726f63657373206973207468656e20646f6e65207768656e2074686520706f727461626c652066696c6520697320696d706f727465642e202a290a0a506f6c794d4c2e7072696e745f646570746820303b0a0a506f6c794d4c2e6d616b6520226d6c736f757263652f4d4c436f6d70696c6572223b0a0a66756e20636f6d70696c654261736973416e644578706f72742829203d0a6c65740a20202020282a20546869732066756e6374696f6e2069732074686520726f6f74206f662074686520227072652d6275696c742220636f6d70696c6572732e2020497420636f6d70696c657320696e0a20202020202020746865206261736973206c69627261727920616e64206578706f7274732074686520636f6d70696c657220616c6f6e67207769746820746865206261736973206c6962726172790a20202020202020617320616e206f7065726174696e672d73797374656d207370656369666963206f626a6563742066696c652e202a290a2020202076616c20676c6f62616c5461626c65203a204d616b652e67456e76203d204d616b652e6d616b6547456e762028290a2020202076616c2074657374203d204c6973742e6578697374732028666e20222d2d696e744973496e74496e6622203d3e2074727565207c205f203d3e2066616c7365292028436f6d6d616e644c696e652e617267756d656e74732829290a2020202076616c202829203d20496e697469616c6973652e696e6974476c6f62616c456e767b676c6f62616c5461626c653d676c6f62616c5461626c652c20696e744973417262697472617279507265636973696f6e3d746573747d0a696e0a202020204d616b652e7368656c6c50726f6320676c6f62616c5461626c6528290a656e643b0a0a506f6c794d4c2e7368617265436f6d6d6f6e4461746120636f6d70696c654261736973416e644578706f72743b0a0a506f6c794d4c2e6578706f7274506f727461626c652822706f6c7974656d70222c0a20202020666e202829203d3e2028636f6d70696c654261736973416e644578706f72742028293b204f532e50726f636573732e65786974204f532e50726f636573732e73756363657373292068616e646c65205f203d3e204f532e50726f636573732e65786974204f532e50726f636573732e6661696c757265293b0a 9941:O2|1,@9942 9942:O15|@9935,@9944,@9945,@9947,0,0,@9948,0,@9949,@9951,@9953,4096,@9955,@9943,0 9943:O1|@9957 9944:O3|@4881,@9456,0 9945:O1|@9946 9946:O3|@4882,@9438,0 9947:O3|@4884,@9438,0 9948:O1|0 9949:O1|@9950 9950:O3|@4874,@9445,0 9951:O1|@9952 9952:O3|@4875,@9924,0 9953:O1|@9954 9954:O3|@4883,@9456,0 9955:O1|@9956 9956:O3|@4890,@9950,@9954 9957:O3|@4888,@9952,@9954 9958:O2|@4900,@9959 9959:O3|@4901,@9960,@19898 9960:O3|@4902,@19899,@19898 9961:O2|@9963,@9962 9962:O2|@9431,0 9963:O6|@9964,@4622,@9965,@4623,@19900,@4621 9964:O2|4096,@88 9965:O14|@9967,@9968,@9970,0,0,@9971,0,@9972,@9974,@9976,4096,0,@9978,@9966 9966:O1|@9980 9967:S6|737464457272 9968:O1|@9969 9969:O3|@4820,@9438,2 9970:O3|@4822,@9438,2 9971:O1|2 9972:O1|@9973 9973:O3|@4823,@9445,2 9974:O1|@9975 9975:O3|@4825,@9445,2 9976:O1|@9977 9977:O3|@4826,@9456,2 9978:O1|@9979 9979:O3|@4828,@9973,@9977 9980:O3|@4829,@9975,@9977 9981:O1|@4905 9982:S29|4f532e50726f636573732e657869742831296578697446756e2d283129 9983:O1|@4906 9984:S13|2d2d696e744973496e74496e66 9985:O3|@9987,@9986,0 9986:O2|@19895,@19896 9987:S7|3c737464696e3e 9988:O1|@4907 9989:S24|506f6c794d4c2e72756e46756e6374696f6e283129283129 9990:S10|506f6c7946696e697368 9991:O4|101,@9993,0,@9992 9992:O5|@9994,56,0,56,0 9993:S5|4d61746368 9994:S20|2e2f62617369732f556e6976657273616c2e4d4c 9995:O4|11,@9448,0,@9996 9996:O5|@9997,81,0,81,0 9997:S17|2e2f62617369732f41727261792e736d6c 9998:O4|11,@9448,0,@9999 9999:O5|@10000,68,0,68,0 10000:S18|2e2f62617369732f566563746f722e736d6c 10001:S25|4d414b455f28292e6462456e764c6f6f6b7570283329283129 10002:O1|@10003 10003:O1|@4915 10004:O2|3,@10005 10005:S1|3f 10006:S13|7072696e742d64656661756c74 10007:S20|486173685461626c652e68617368537562283229 10008:O2|@10009,0 10009:O2|1,2 10010:O4|12,@9846,@10012,@10011 10011:O5|@9848,336,0,336,0 10012:S40|54686520737461636b2073697a65206d7573742062652067726561746572207468616e207a65726f 10013:O5|@10014,94,0,94,0 10014:S28|6d6c736f757263652f4d4c436f6d70696c65722f4d414b455f2e4d4c 10015:S28|4d414b455f28292e6462456e764c6f6f6b7570283129283129283129 10016:S18|4d414b455f28292e70726f74656374283229 10017:S22|506f6c795468726561644d6178537461636b53697a65 10018:S24|4d414b455f28292e6462456e76456e746572283429283129 10019:O4|7,@9514,0,@10020 10020:O5|@9515,253,0,253,0 10021:B8|0000000000000080 10022:O4|5,@9518,0,@10023 10023:O5|@10024,74,0,74,0 10024:S15|2e2f62617369732f496e742e736d6c 10025:S25|486173685461626c652e6861736856616c7565283129283129 10026:S16|506f6c79416464417262697472617279 10027:O4|4,@9489,0,@10028 10028:O5|@9997,70,0,70,0 10029:S34|417474656d707420746f2073657420612076616c75652077697468206e616d652028 10030:S24|2920696e20612066726f7a656e2068617368207461626c65 10031:O5|@10032,128,0,128,0 10032:S32|6d6c736f757263652f4d4c436f6d70696c65722f486173685461626c652e4d4c 10033:S4|4661696c 10034:O4|11,@9448,0,@10035 10035:O5|@9997,86,0,86,0 10036:S20|486173685461626c652e68617368536574283329 10037:S31|486173685461626c652e68617368536574283329656e746572546162283329 10038:S36|556e6976657273616c5461626c652e756e6976456e746572283429736561726368283129 10039:S27|4d414b455f28292e6462456e76456e746572283129283129283129 10040:O1|@4952 10041:S38|556e6976657273616c5461626c652e666f6c64283329666f6c6448617368456e747279283329 10042:S35|486173685461626c652e666f6c642833296765744974656d7c6c656e6774682d283129 10043:S22|4d414b455f28292e6462456e76416c6c283329283129 10044:S17|486173685461626c652e666f6c64283329 10045:S25|4d414b455f28292e6462456e76416c6c283129283129283129 10046:O1|@4958 10047:O1|@4961 10048:O1|@4964 10049:O1|@4967 10050:O1|@4970 10051:O1|@4974 10052:O1|@4976 10053:O2|@9493,0 10054:S5|696e707574 10055:O5|@9468,140,0,140,0 10056:S30|426173696353747265616d494f28292e696e7075744e4c69737427283129 10057:S30|426173696353747265616d494f28292e696e7075744e4c69737427283429 10058:S32|4261736963496d7065726174697665494f28292e696e70757431283129283129 10059:S29|426173696353747265616d494f28292e696e7075744e4c697374283329 10060:S41|4d414b455f28292e636f6d70696c65496e746f456e7628312975736528332967657443686172283129 10061:O1|@4978 10062:O1|@4979 10063:S26|426173696353747265616d494f28292e646f436c6f7365283129 10064:S33|4261736963496d7065726174697665494f28292e636c6f7365496e283129283129 10065:O5|@10014,258,0,258,0 10066:S11|457863657074696f6e2d20 10067:S8|207261697365640a 10068:O1|@4980 10069:O5|@10014,264,0,264,0 10070:S39|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329636f64652d283129 10071:O2|@10073,@10072 10072:O2|@10114,@10113 10073:O4|@4632,@9594,@10074,0 10074:O1|@4982 10075:S6|4572726f722d 10076:S8|5761726e696e672d 10077:O9|@4983,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 10078:O2|@4984,@10079 10079:O2|@4986,@10078 10080:S29|4c61726765496e742e666d74283229746f4368617247726f7570283229 10081:S20|506f6c7951756f7452656d417262697472617279 10082:S25|4c61726765496e742e666d74283229746f4368617273283529 10083:S15|4c61726765496e742e666d74283229 10084:S21|506f6c795375627472616374417262697472617279 10085:O2|@9535,0 10086:S2|2e0a 10087:S8|272c206c696e6520 10088:S5|20696e2027 10089:O4|101,@10091,0,@10090 10090:O5|@10092,98,0,98,0 10091:S5|4d61746368 10092:S30|6d6c736f757263652f4d4c436f6d70696c65722f5072657474792e736d6c 10093:O4|@4633,@10098,@10099,@10094 10094:O5|@10100,105,0,105,0 10095:O1|@10096 10096:O1|@4989 10097:S12|7072696e742d737472696e67 10098:S4|43617374 10099:S7|746f53686f7274 10100:S30|6d6c736f757263652f4d4c436f6d70696c65722f416464726573732e4d4c 10101:O4|4,@9489,0,@10102 10102:O5|@10103,136,0,136,0 10103:S16|2e2f62617369732f4c6973742e736d6c 10104:O4|101,@10091,0,@10105 10105:O5|@10092,108,0,108,0 10106:O4|101,@10091,0,@10107 10107:O5|@10092,118,0,118,0 10108:S43|4d414b455f28292e636f6d70696c65496e746f456e762831297573652833296572726f7250726f63283129 10109:O1|@4988 10110:S19|5072657474792e75676c795072696e74283129 10111:S14|4c6973742e746162462833292829 10112:S13|4c6973742e6d61702832292829 10113:O2|@10116,@10115 10114:O4|@4634,@9594,80,0 10115:O2|@10118,@10117 10116:O4|@4635,@9594,1,0 10117:O2|@10120,@10119 10118:O4|@4636,@9594,0,0 10119:O2|@10131,@10130 10120:O4|@4637,@9594,@10121,0 10121:O1|@4992 10122:O2|@4993,@19888 10123:S15|54657874494f2e7072696e74283129 10124:S24|5072657474792e7072657474795072696e74283129283129 10125:O1|@4995 10126:S21|5072657474792e7072657474795072696e74283329 10127:S30|5072657474792e7072657474795072696e742833296c61794f7574283329 10128:S40|5072657474792e7072657474795072696e742833296c61794f7574283329646f5072696e74283229 10129:S31|5072657474792e7072657474795072696e7428332967657453697a65283229 10130:O2|@10134,@10133 10131:O4|@4638,@9594,@10132,0 10132:O1|@4998 10133:O2|@10136,@10135 10134:O4|@4639,@9594,0,0 10135:O2|@10138,@10137 10136:O4|@4640,@9594,0,0 10137:O2|@10140,@10139 10138:O4|@4641,@9594,0,0 10139:O2|@10141,0 10140:O4|@4642,@9594,0,0 10141:O4|@4643,@9594,0,0 10142:O4|@4644,@9594,@10143,0 10143:O1|@4999 10144:O4|103,@10033,@10146,@10145 10145:O5|@10014,241,0,241,0 10146:S13|537461746963204572726f7273 10147:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283129 10148:S31|4d414b455f28292e636f6d70696c65496e746f456e76283129757365283329 10149:O2|@5014,@4632 10150:O1|@5015 10151:O4|103,@10033,@10153,@10152 10152:O5|@10154,99,0,99,0 10153:S20|4572726f7220696e20736f7572636520636f6465 10154:S27|6d6c736f757263652f4d4c436f6d70696c65722f4c45585f2e4d4c 10155:S37|4c45585f28292e696e697469616c2833296572726f724d65737361676550726f632d283129 10156:O1|@5016 10157:S18|44656275672e64656661756c74732d283129 10158:O2|@10160,@10159 10159:O2|@10162,@10161 10160:O4|@4630,@9594,@10156,0 10161:O2|@10165,@10164 10162:O4|@4645,@9594,@10163,0 10163:O1|@5017 10164:O2|@10167,@10166 10165:O4|@4631,@9594,@9493,0 10166:O2|@10170,@10169 10167:O4|@4646,@9594,@10168,0 10168:O1|@5018 10169:O2|@10114,@10171 10170:O4|@4647,@9594,1,0 10171:O2|@10173,@10172 10172:O2|@10134,@10174 10173:O4|@4648,@9594,0,0 10174:O2|@10136,@10175 10175:O2|@10140,@10176 10176:O2|@10178,@10177 10177:O2|@10141,@10179 10178:O4|@4649,@9594,1,0 10179:O2|@10138,@10180 10180:O2|@10182,@10181 10181:O2|@10184,@10183 10182:O4|@4650,@9594,6,0 10183:O2|@10187,@10186 10184:O4|@4638,@9594,@10185,0 10185:O1|@5019 10186:O2|@10189,@10188 10187:O4|@4651,@9594,77,0 10188:O2|@10191,@10190 10189:O4|@4652,@9594,0,0 10190:O2|@10118,@10192 10191:O4|@4635,@9594,0,0 10192:O2|@10194,@10193 10193:O2|@10196,@10195 10194:O4|@4653,@9594,0,0 10195:O2|@10197,0 10196:O4|@4654,@9594,1,0 10197:O4|@4655,@9594,1,0 10198:O4|@4656,@10202,@10203,@10199 10199:O5|@10204,123,0,123,0 10200:O1|@10201 10201:O1|@5020 10202:S13|496e7465726e616c4572726f72 10203:S11|746167206d697373696e67 10204:S28|6d6c736f757263652f4d4c436f6d70696c65722f44656275672e4d4c 10205:S17|4c45585f28292e696e697469616c283329 10206:O1|@5021 10207:S19|5072657474792e676574546167283229283129 10208:O2|3,@10209 10209:S24|436f6d70696c6174696f6e20696e7465727275707465640a 10210:O4|1,@9841,0,@10211 10211:O5|@10212,237,0,237,0 10212:S36|6d6c736f757263652f4d4c436f6d70696c65722f434f4d50494c45525f424f44592e4d4c 10213:S26|457863657074696f6e2d20496e7465726e616c4572726f723a20 10214:S23|20726169736564207768696c6520636f6d70696c696e67 10215:O5|@10212,246,0,246,0 10216:S36|20756e65787065637465646c7920726169736564207768696c6520636f6d70696c696e67 10217:O5|@10212,255,0,255,0 10218:O1|@5023 10219:S42|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429676c6f62616c732d283129 10220:S34|756e657870656374656420656e64206f662066696c6520656e636f756e7465726564 10221:O1|@5026 10222:S15|436861722e69735370616365283129 10223:O4|@4656,@10202,@10225,@10224 10224:O5|@10154,600,0,600,0 10225:S11|656e64206f662066696c65 10226:O2|@5027,@4657 10227:S16|756e6b6e6f776e2073796d626f6c202e 10228:S17|756e6b6e6f776e2073796d626f6c202e2e 10229:O1|@5028 10230:S20|3a3d3c3e2b2a215e2f7c26257e2d3f60405c2423 10231:S27|436861722e636f6e7461696e732831296d61746368283129283129 10232:O1|@5029 10233:S24|4c45585f28292e6973416c7068614e756d65726963283129 10234:S19|756e6b6e6f776e206368617261637465722022 10235:S20|4c45585f28292e7061727365546f6b656e283129 10236:O3|1,1,0 10237:O2|@10238,0 10238:O2|3,@9493 10239:S32|4c45585f28292e627265616b576f726473283129616464427265616b73283129 10240:O3|0,@10242,@10241 10241:O200|0,0,0,0,0,0,@10244,@10246,@10248,0,@10250,0,0,0,0,0,0,0,0,@10252,@10254,0,0,0,0,@10256,0,0,@10258,0,0,0,0,0,0,@10260,0,0,0,0,0,0,@10261,0,0,0,0,0,0,0,0,0,0,0,0,0,@10262,0,@10264,0,@10265,@10267,0,0,0,0,0,0,0,0,@10268,@10270,@10272,0,0,@10274,0,@10276,0,@10278,0,0,0,0,@10280,0,0,@10282,@10284,@10286,@10288,@10289,@10291,@10293,@10295,@10297,0,@10299,@10301,@10303,0,0,@10305,0,@10307,0,0,0,0,0,0,@10309,0,0,0,@10311,0,0,0,0,0,0,@10313,@10314,@10316,0,0,0,0,0,0,0,0,0,0,@10318,@10320,@10322,0,0,0,0,0,0,0,0,0,@10324,0,0,0,0,0,0,0,@10326,0,0,0,0,0,0,0,0,0,0,0,@10328,0,0,0,@10330,0,0,@10332,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@10334,0,0,0,0,0,0,0,0,@10243 10242:O2|@5033,200 10243:O2|@10336,63 10244:O2|@10245,29 10245:S6|696e66697872 10246:O2|@10247,36 10247:S6|6e6f6e666978 10248:O2|@10249,28 10249:S5|696e666978 10250:O2|@10251,65 10251:S4|77697468 10252:O2|@10253,25 10253:S2|6966 10254:O2|@10255,49 10255:S7|73686172696e67 10256:O2|@10257,37 10257:S2|6f66 10258:O2|@10259,12 10259:S8|6461746174797065 10260:O2|@9560,23 10261:O2|@9567,6 10262:O2|@10263,7 10263:S4|63617365 10264:O2|@9583,9 10265:O2|@10266,1 10266:S7|61627374797065 10267:O2|@9586,17 10268:O2|@10269,51 10269:S9|7369676e6174757265 10270:O2|@10271,44 10271:S3|726563 10272:O2|@10273,19 10273:S2|666e 10274:O2|@10275,26 10275:S2|696e 10276:O2|@10277,13 10277:S2|646f 10278:O2|@10279,4 10279:S2|2d3e 10280:O2|@10281,42 10281:S5|7261697365 10282:O2|@10283,18 10283:S9|657863657074696f6e 10284:O2|@10285,22 10285:S6|68616e646c65 10286:O2|@10287,61 10287:S3|76616c 10288:O2|@9620,60 10289:O2|@10290,54 10290:S9|737472756374757265 10291:O2|@10292,10 10292:S2|3a3e 10293:O2|@10294,56 10294:S2|3d3e 10295:O2|@10296,59 10296:S4|74797065 10297:O2|@10298,38 10298:S2|6f70 10299:O2|@10300,50 10300:S3|736967 10301:O2|@10302,16 10302:S6|657174797065 10303:O2|@10304,34 10304:S3|6c6574 10305:O2|@10306,5 10306:S2|6173 10307:O2|@10308,66 10308:S8|7769746874797065 10309:O2|@10310,20 10310:S3|66756e 10311:O2|@10312,35 10312:S5|6c6f63616c 10313:O2|@9649,62 10314:O2|@10315,55 10315:S4|7468656e 10316:O2|@10317,40 10317:S6|6f72656c7365 10318:O2|@10319,14 10319:S4|656c7365 10320:O2|@10321,27 10321:S7|696e636c756465 10322:O2|@10323,64 10323:S5|7768696c65 10324:O2|@10325,21 10325:S7|66756e63746f72 10326:O2|@10327,53 10327:S6|737472756374 10328:O2|@10329,2 10329:S3|616e64 10330:O2|@10331,15 10331:S3|656e64 10332:O2|@10333,39 10333:S4|6f70656e 10334:O2|@10335,3 10335:S7|616e64616c736f 10336:S5|7768657265 10337:S21|696e76616c6964206964656e746966696572202d20 10338:S20|4c45585f28292e70617273654964656e74283329 10339:S19|4c45585f28292e726561644368617273283329 10340:S26|4c45585f28292e7265616443686172732833296c6f6f70283129 10341:O1|@5037 10342:S15|436861722e69734469676974283129 10343:S3|307778 10344:O1|@5038 10345:S18|436861722e69734865784469676974283129 10346:S2|3077 10347:S2|3078 10348:S23|6d616c666f726d6564207265616c206e756d6265723a20 10349:S2|457e 10350:S21|4c45585f28292e70617273654e756d626572283229 10351:S36|6e6f206d61746368696e672071756f746520666f756e64206f6e2074686973206c696e65 10352:O5|@10154,350,0,350,0 10353:S9|456e644f664c696e65 10354:O5|@10154,389,0,389,0 10355:S22|756e7072696e7461626c652063686172616374657220 10356:S16|20666f756e6420696e20737472696e67 10357:S21|756e65787065637465642063686172616374657220 10358:S11|20696e205c202e2e2e205c 10359:S21|4c45585f28292e7061727365537472696e67283129 10360:S33|4c45585f28292e7061727365537472696e67283129676574537472696e67283129 10361:S28|656e64206f662066696c6520666f756e6420696e20636f6d6d656e74 10362:S22|4c45585f28292e7061727365436f6d6d656e74283129 10363:S36|4c45585f28292e7061727365436f6d6d656e74283129736b6970436f6d6d656e74283129 10364:O4|11,@9448,0,@10365 10365:O5|@9510,305,0,305,0 10366:S16|537472696e672e746f6b656e73283229 10367:S23|537472696e672e746f6b656e73283229746f6b27283229 10368:O3|0,0,0 10369:S24|4d6973632e6c6f6f6b757044656661756c74283229283129 10370:O1|@5045 10371:S15|53796d5365742e2b2b283229283129 10372:O1|@5046 10373:O2|3,@10374 10374:S3|2e2e2e 10375:O1|@5048 10376:S2|203a 10377:O2|@10378,0 10378:O3|1,1,2 10379:S3|203a3e 10380:O2|3,@9586 10381:O2|3,@9566 10382:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283129 10383:O2|@5051,@10384 10384:O11|@5057,@4660,@4664,@10561,@4666,@10571,@4668,@10590,@4670,@10609,@4659 10385:O2|@10387,@10386 10386:O1|@5053 10387:O1|@5052 10388:S28|545950455f5452454528292e656d70747954797065456e762d283129 10389:O2|@10236,0 10390:O2|@10373,0 10391:O3|1,0,0 10392:O2|3,@9565 10393:O2|@10391,0 10394:O2|3,@9569 10395:O4|@4658,@10397,0,@10396 10396:O5|@10103,48,0,48,0 10397:S5|456d707479 10398:O4|@4658,@10397,0,@10399 10399:O5|@10103,47,0,47,0 10400:S28|545950455f5452454528292e7072696e745479706556617273283329 10401:O2|@10381,0 10402:S15|4c6973742e40283229617070283129 10403:S36|545950455f5452454528292e7072696e7454797065566172732833297056617273283229 10404:O2|3,@10405 10405:S3|626164 10406:O2|3,@10407 10407:S7|6e6f2074797065 10408:O2|3,@10279 10409:O1|@5058 10410:O1|@5059 10411:S48|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283229283129 10412:S45|545950455f5452454528292e74446973702835296469737050283229736f727465645265634c6973742d283129 10413:O1|@5061 10414:O2|3,@9782 10415:O5|0,0,0,@10417,@10416 10416:O2|@10421,0 10417:O2|@10418,0 10418:O2|0,@10419 10419:O5|@10420,961,961,0,0 10420:S32|6d6c736f757263652f4d4c436f6d70696c65722f545950455f545245452e4d4c 10421:O2|3,@10422 10422:S10|466f756e644d61746368 10423:O5|0,0,0,@10417,@10424 10424:O2|@10425,0 10425:O2|3,@10426 10426:S13|466f756e644e6f744d61746368 10427:O5|0,0,0,@10417,@10428 10428:O2|@10429,0 10429:O2|3,@10430 10430:S8|4e6f74466f756e64 10431:S13|7072696e742d6973466f756e64 10432:O2|@10392,@10393 10433:S4|2e2e2e7d 10434:S6|2c202e2e2e7d 10435:O2|3,@9648 10436:S20|545950455f5452454528292e7444697370283529 10437:S28|545950455f5452454528292e74446973702835296469737050283229 10438:O2|3,@9572 10439:S42|545950455f5452454528292e744469737028352964697370502832297072696e745443636f6e73283129 10440:O2|@10391,@10401 10441:S41|545950455f5452454528292e744469737028352964697370502832297072657474794c697374283329 10442:S28|545950455f5452454528292e697350726f6475637454797065283129 10443:S25|537472696e672e636f6e636174576974682832296d6b283129 10444:S41|545950455f5452454528292e744469737028352964697370502832296e616d65546f4c697374283329 10445:S40|545950455f5452454528292e657154797065436f6e73747273283429636f70794964283129283129 10446:O1|@5074 10447:S33|545950455f5452454528292e657154797065436f6e737472732834296964283129 10448:O7|@5076,@4625,@4626,@4624,@4628,@4627,@4629 10449:S31|5354525543545f56414c5328292e6d616b654c6f6f6b283129283129283129 10450:S32|5354525543545f56414c5328292e6d616b65456e746572283129283129283129 10451:S35|5354525543545f56414c5328292e6d616b65416c6c4e616d6573283129283129283129 10452:S24|5354525543545f56414c5328292e6d616b65456e76283129 10453:S29|545950455f5452454528292e636f6d706f73654d617073283129283129 10454:O1|@5099 10455:S42|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f70794964283129 10456:O1|@5102 10457:S51|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129283129 10458:O1|@5103 10459:O1|@5104 10460:O1|@5106 10461:S56|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129283129 10462:S53|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529636f7069656445717569762d283129 10463:O1|@5107 10464:S48|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129636f7069656445717569762d283129 10465:O4|@4656,@10202,@10467,@10466 10466:O5|@10420,776,0,776,0 10467:S27|636f7079547970653a204f7665726c6f616453657420666f756e64 10468:O1|1 10469:S38|545950455f5452454528292e636f707954797065436f6e737472576974684361636865283529 10470:O1|@5109 10471:S27|545950455f5452454528292e657175616c54797065496473283229 10472:S40|545950455f5452454528292e657175616c54797065496473283229657175616c5479706573283229 10473:O1|@5108 10474:S23|545950455f5452454528292e636f707954797065283329 10475:S34|545950455f5452454528292e636f707954797065283329636f70794c697374283129 10476:S40|545950455f5452454528292e636f707954797065283329636f70795265636f72644c697374283129 10477:O1|@5113 10478:S26|545950455f5452454528292e636f6d706f73654d617073283329 10479:S33|545950455f5452454528292e636f6d706f73654d6170732833296d617032283129 10480:S55|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b757054797065283129 10481:S57|545950455f5452454528292e7444697370283529646973705028322966696e64547970652832297375624c6f6f6b7570537472756374283129 10482:S39|545950455f5452454528292e7444697370283529646973705028322966696e6454797065283229 10483:S27|5554494c49544945535f28292e73706c6974537472696e67283229 10484:O2|@10391,@10485 10485:O2|@10394,0 10486:S35|545950455f5452454528292e7444697370283529646973705028322970526563283229 10487:S17|4d6973632e717569636b536f7274283229 10488:O2|0,0 10489:S22|4d6973632e717569636b536f72742832297173283229 10490:S19|4c6973742e706172746974696f6e2833292829 10491:S23|545950455f5452454528292e6576656e7475616c283129 10492:S39|545950455f5452454528292e6576656e7475616c283129616464546f496e7374616e6365283229 10493:O4|@10495,0,@10496,@10494 10494:O3|@10501,@10558,@10500 10495:S3|696e74 10496:O2|@10497,0 10497:O2|0,@10498 10498:O5|@10499,0,0,0,0 10499:S14|5374616e64617264204261736973 10500:O3|@10560,@10498,@10559 10501:O2|1,@10502 10502:O3|6,@10504,@10503 10503:O2|@10510,0 10504:O4|@10505,@4661,1,1 10505:O1|@5124 10506:S11|457175616c576f72642829 10507:O1|@5125 10508:O2|3,@9588 10509:S37|545950455f5452454528292e64656661756c744d6f6e6f547970655072696e746572283129 10510:O4|@4662,@9594,@10511,0 10511:O3|3,4,@10512 10512:O5|@5126,@10526,@10515,@10556,@10513 10513:O1|@5135 10514:S39|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e2833292d45 10515:O1|2 10516:O1|@5128 10517:S40|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283129283129 10518:O4|@4656,@10202,@10520,@10519 10519:O5|@10521,302,0,302,0 10520:S33|5265666572656e636520746f206e6f6e2d6578697374656e742062696e64696e67 10521:S40|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245452e4d4c 10522:O4|@4656,@10202,@10524,@10523 10523:O5|@10521,306,0,306,0 10524:S43|636f646574726565206e6577456e7669726f6e3a204e6f742045787472616374206f7220436f6e73746e74 10525:S37|434f44455452454528292e67656e436f64652833292831296e6577456e7669726f6e283329 10526:O2|@5133,@10527 10527:O2|@10532,@10531 10528:O4|11,@9448,0,@10529 10529:O5|@10103,60,0,60,0 10530:S39|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129283129 10531:O2|@10551,@10550 10532:O2|@10534,@10533 10533:O3|1,@10537,@10536 10534:O2|1,@10535 10535:O2|2,0 10536:O2|@5134,0 10537:O8|@10539,@10506,0,0,@10538,0,0,1 10538:O2|@10546,@10545 10539:O4|3,@10541,@10543,@10540 10540:O3|9,0,0 10541:O2|8,@10542 10542:O2|0,0 10543:O2|8,@10544 10544:O2|0,1 10545:O2|@10546,0 10546:O2|1,@10547 10547:O2|@10548,0 10548:O1|3 10549:S49|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529696e6c696e65436f64652d283129 10550:O2|@10554,@10553 10551:O2|@10552,@10515 10552:O3|0,@4661,0 10553:O2|@10554,0 10554:O2|@10555,@10515 10555:O3|0,1,0 10556:O2|@10504,@10505 10557:S38|434f44455452454528292e67656e436f64652833292831296669656c6450726f70732d283129 10558:O4|1,@4663,0,0 10559:S8|496e204261736973 10560:S12|4669786564496e742e696e74 10561:O4|@10563,0,@10496,@10562 10562:O3|@10565,@10570,@10564 10563:S4|7265616c 10564:O3|@10563,@10498,@10559 10565:O2|1,@10566 10566:O3|6,@10567,0 10567:O4|0,@4665,2,1 10568:O1|@5136 10569:S40|545950455f5452454528292e6d616b655479706528332964656661756c745072696e746572283129 10570:O4|1,@4664,0,0 10571:O4|@10573,0,@10496,@10572 10572:O3|@10575,@10589,@10574 10573:S4|776f7264 10574:O3|@10573,@10498,@10559 10575:O2|1,@10576 10576:O3|6,@10578,@10577 10577:O2|@10580,0 10578:O4|@10579,@4667,1,1 10579:O1|@5137 10580:O4|@4662,@9594,@10581,0 10581:O3|3,4,@10582 10582:O5|@5126,@10584,@10515,@10583,@10513 10583:O2|@10578,@10579 10584:O2|@5133,@10585 10585:O2|@10532,@10586 10586:O2|@10587,@10550 10587:O2|@10588,@10515 10588:O3|0,@4667,0 10589:O4|1,@4666,0,0 10590:O4|@10592,0,@10496,@10591 10591:O3|@10594,@10608,@10593 10592:S4|63686172 10593:O3|@10592,@10498,@10559 10594:O2|1,@10595 10595:O3|6,@10597,@10596 10596:O2|@10599,0 10597:O4|@10598,@4669,1,1 10598:O1|@5138 10599:O4|@4662,@9594,@10600,0 10600:O3|3,4,@10601 10601:O5|@5126,@10603,@10515,@10602,@10513 10602:O2|@10597,@10598 10603:O2|@5133,@10604 10604:O2|@10532,@10605 10605:O2|@10606,@10550 10606:O2|@10607,@10515 10607:O3|0,@4669,0 10608:O4|1,@4668,0,0 10609:O4|@10611,0,@10496,@10610 10610:O3|@10613,@10654,@10612 10611:S6|737472696e67 10612:O3|@10611,@10498,@10559 10613:O2|1,@10614 10614:O3|6,@10616,@10615 10615:O2|@10619,0 10616:O4|@10617,@4671,3,1 10617:O1|@5139 10618:S14|737472696e67457175616c697479 10619:O4|@4662,@9594,@10620,0 10620:O3|3,4,@10621 10621:O5|@5126,@10623,@10515,@10622,@10513 10622:O2|@10616,@10617 10623:O2|@5133,@10624 10624:O2|@10626,@10625 10625:O2|@10650,@10649 10626:O2|@10534,@10627 10627:O3|1,@10628,@10536 10628:O8|@10630,@10618,0,0,@10629,0,0,1 10629:O2|@10644,@10643 10630:O4|5,@10539,@10632,@10631 10631:O4|5,@10634,@10640,@10633 10632:O3|6,1,0 10633:O3|6,0,0 10634:O4|3,@10636,@10635,@10540 10635:O3|13,@10638,@10639 10636:O3|13,@10638,@10637 10637:O3|@10541,0,0 10638:O1|8 10639:O3|@10543,0,0 10640:O5|4,1,@10635,@10642,@10641 10641:O3|@10541,0,8 10642:O3|@10543,0,8 10643:O2|@10647,0 10644:O2|1,@10645 10645:O2|@10548,@10646 10646:O2|@10548,@10547 10647:O2|1,@10648 10648:O2|@10548,@10645 10649:O2|@10652,@10553 10650:O2|@10651,@10515 10651:O3|0,@4671,0 10652:O2|@10653,@10515 10653:O3|0,3,0 10654:O4|1,@4670,0,0 10655:O2|3,@10296 10656:O2|3,@10336 10657:O1|@5140 10658:O1|@5141 10659:O3|1,1,1 10660:O2|3,@10283 10661:O1|@5142 10662:S27|5349474e41545552455328292e646973706c617953696773283129 10663:O2|3,@10321 10664:O2|@10655,@10389 10665:O1|@5143 10666:S31|5349474e41545552455328292e646973706c61795370656373283229283129 10667:O2|3,@10255 10668:O1|@5144 10669:O1|@5050 10670:S46|5349474e41545552455328292e646973706c61795370656373283229646973706c61795369677342696e64283129 10671:O2|3,@10290 10672:O2|3,@10287 10673:O1|@5146 10674:O1|@5147 10675:O2|3,@10257 10676:S56|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436f6e7374727563746f72283129 10677:O1|@5150 10678:O2|@10679,0 10679:O2|3,@10433 10680:O1|@5151 10681:O2|@10682,0 10682:O2|3,@9828 10683:O2|3,@10684 10684:S6|6e616d65203d 10685:O2|3,@9816 10686:O2|3,@10687 10687:S7|656e747279203d 10688:O2|3,@9803 10689:O5|0,0,0,@10691,@10690 10690:O2|@10694,0 10691:O2|@10692,0 10692:O2|0,@10693 10693:O5|@10420,1192,1192,0,0 10694:O2|3,@10695 10695:S5|4e616d6573 10696:S11|7072696e742d6e616d6573 10697:S2|2727 10698:S33|545950455f5452454528292e7661724e616d6553657175656e6365283129283129 10699:S40|545950455f5452454528292e7661724e616d6553657175656e63652831292831296e616d65283129 10700:S30|545950455f5452454528292e7661724e616d6553657175656e6365283129 10701:O1|@5148 10702:S32|545950455f5452454528292e7479706546726f6d547970655061727365283129 10703:S26|545950455f5452454528292e6d6170746f5265636f7264283229 10704:S25|545950455f5452454528292e736f72744c6162656c73283129 10705:S35|545950455f5452454528292e736f72744c6162656c73283129656e7465722833292829 10706:S40|545950455f5452454528292e6d6b4c6162656c456e74727928332973747269705a65726f73283129 10707:S57|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446174617479706542696e64283129 10708:S30|5052494e545f50415253455452454528292e7072696e744c697374283429 10709:O1|@5165 10710:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745479706542696e64283129 10711:O2|3,@10308 10712:O1|@5167 10713:O1|@5145 10714:S60|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61794c69737457697468427074732d283129 10715:O2|3,@10251 10716:O2|3,@10266 10717:O2|3,@10259 10718:O2|3,@10335 10719:O2|@10236,@10720 10720:O2|@10675,0 10721:O2|3,@10263 10722:O1|@5168 10723:O2|3,@10294 10724:S33|5052494e545f50415253455452454528292e646973706c61794d61746368283129 10725:O2|3,@10319 10726:O2|3,@10315 10727:O2|3,@10253 10728:O2|3,@9583 10729:O2|3,@10245 10730:O2|3,@10249 10731:O2|3,@10247 10732:O1|@5169 10733:S40|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229283129 10734:O2|3,@10735 10735:S7|3c456d7074793e 10736:O1|@5170 10737:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283129 10738:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74457842696e64283229 10739:O2|3,@10273 10740:O1|@5173 10741:O1|@5174 10742:O1|@5176 10743:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283129 10744:S51|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74436c61757365283129 10745:S48|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e74446563283229 10746:S53|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e746676616c62696e64283129 10747:O2|3,@10310 10748:O2|3,@10285 10749:O2|@10750,0 10750:O2|3,@9650 10751:O2|3,@10306 10752:O2|3,@9616 10753:S10|636f6e76537472696e67 10754:O2|@9559,0 10755:S8|636f6e7643686172 10756:S2|2322 10757:O2|@10236,@10758 10758:O2|@10759,@10389 10759:O2|3,@10275 10760:O1|@5182 10761:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e745374724e616d65283129 10762:O2|3,@10333 10763:O2|3,@10317 10764:O2|3,@10281 10765:O2|3,@10766 10766:S2|2829 10767:O2|3,@10277 10768:O2|3,@10323 10769:O2|3,@9620 10770:S28|5349474e41545552455328292e646973706c61795370656373283229 10771:S27|5349474e41545552455328292e646973706c61794c697374283429 10772:S37|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229 10773:O2|@10774,@10389 10774:O2|3,@10271 10775:O2|@10236,@10776 10776:O2|@10777,0 10777:O2|3,@10329 10778:S52|5052494e545f50415253455452454528292e646973706c61795061727365747265652832297072696e7456616c42696e64283229 10779:O2|@10236,@10780 10780:O2|@10781,0 10781:O2|3,@10331 10782:O2|@10391,@10783 10783:O2|@10784,0 10784:O2|3,@9618 10785:S2|203d 10786:S54|5052494e545f50415253455452454528292e646973706c6179506172736574726565283229646973706c61795265634c697374283229 10787:S28|5349474e41545552455328292e646973706c61795370656373283129 10788:O2|3,@10300 10789:S49|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617946756e637442696e64283229 10790:O1|@5203 10791:O1|@5204 10792:O2|3,@10312 10793:O1|@5205 10794:O1|@5202 10795:O2|3,@10785 10796:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283129 10797:S50|535452554354555245535f28292e646973706c6179537472756374283229646973706c617953747275637442696e64283229 10798:S30|535452554354555245535f28292e646973706c6179537472756374283229 10799:S28|535452554354555245535f28292e646973706c61794c697374283429 10800:S30|535452554354555245535f28292e646973706c6179537472756374283129 10801:O2|3,@10304 10802:O2|3,@10327 10803:S35|535452554354555245535f28292e646973706c617953747275637456616c7565283229 10804:S27|5349474e41545552455328292e646973706c617953696773283229 10805:O2|3,@10325 10806:O1|@5218 10807:S47|535452554354555245535f28292e646973706c6179546f70446563283229646973706c617953696742696e64283129 10808:O2|3,@10269 10809:S30|535452554354555245535f28292e646973706c6179546f70446563283129 10810:S30|535452554354555245535f28292e646973706c6179546f70446563283229 10811:O2|@5219,@4673 10812:S48|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d65732831295f2d283129 10813:S43|535452554354555245535f28292e706173733253747275637473283329616c6c56616c4e616d6573283129 10814:O1|@5228 10815:S36|535452554354555245535f28292e706173733253747275637473283329656e762d283129 10816:S48|535452554354555245535f28292e706173733253747275637473283329746f704c6576656c49644e756d626572283129 10817:O0| 10818:O4|4,@9489,0,@10819 10819:O5|@10000,78,0,78,0 10820:S52|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129283129 10821:S49|535452554354555245535f28292e7061737332537472756374732833296d616b65546f704c6576656c4964456e76283129 10822:O1|@5233 10823:S39|545950455f5452454528292e67656e6572616c6973652832296e65774d617463687c742d283129 10824:O1|@5236 10825:S47|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129283129 10826:O4|101,@10091,0,@10827 10827:O5|@10420,90,0,90,0 10828:S44|545950455f5452454528292e67656e6572616c6973655479706573283329636f707954797065566172283129 10829:S36|545950455f5452454528292e67656e6572616c6973655479706573283329747673283129 10830:O1|@5238 10831:S40|545950455f5452454528292e67656e6572616c6973655479706573283329636f706965642d283129 10832:S32|535452554354555245535f28292e706173733253747275637473283329283129 10833:S30|545950455f5452454528292e67656e6572616c6973655479706573283329 10834:S34|5554494c49544945535f28292e7365617263684c6973742832296170706c79283129 10835:S41|5554494c49544945535f28292e7365617263684c6973742832296170706c792831296170706c283129 10836:S34|5554494c49544945535f28292e7365617263684c697374283229656e746572283129 10837:S35|5554494c49544945535f28292e7365617263684c6973742832296c6f6f6b7570283129 10838:S29|535452554354555245535f28292e706173733253747275637473283329 10839:O3|0,@10840,@4674 10840:O1|@5247 10841:O4|@4656,@10202,@10843,@10842 10842:O5|@10521,76,0,76,0 10843:S14|6c6f61643a206e65676174697665 10844:O4|@4656,@10202,@10846,@10845 10845:O5|@10521,79,0,79,0 10846:S12|626f74746f6d206c6576656c 10847:S25|434f44455452454528292e626f74746f6d4c6576656c283129 10848:S52|535452554354555245535f28292e7061737332537472756374732833297061737332546f704465632832296d616b654964283129 10849:S28|5354525543545f56414c5328292e6d616b65426f756e644964283129 10850:S40|5354525543545f56414c5328292e6d616b65426f756e644964576974684571557064617465283129 10851:O2|@5250,@10852 10852:O2|@6007,@10851 10853:S55|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296e6577456e762d283129 10854:O2|1,@10633 10855:S54|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832296d616b654964283429 10856:O2|@5261,@10857 10857:O5|@5670,@12966,@4736,@4753,@4730 10858:O1|@5262 10859:S37|54595045434845434b5f50415253455452454528292e7061737332283529656e762d283129 10860:S56|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352974797065456e762d283129 10861:O1|@5263 10862:S30|54595045434845434b5f50415253455452454528292e7061737332283529 10863:O4|@4656,@10202,@10865,@10864 10864:O5|@10866,1414,0,1414,0 10865:S28|61737369676e54797065733a20656d7074797472656520666f756e64 10866:S53|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f54595045434845434b5f5041525345545245452e736d6c 10867:O4|@4656,@10202,@10869,@10868 10868:O5|@10866,1411,0,1411,0 10869:S34|61737369676e54797065733a206c617965726564207061747465726e20666f756e64 10870:O4|@4656,@10202,@10872,@10871 10871:O5|@10866,1408,0,1408,0 10872:S27|61737369676e54797065733a2077696c646361726420666f756e64 10873:O2|@10875,@10874 10874:O2|@10875,0 10875:O5|5,0,@10877,@10876,0 10876:O4|@10877,0,@10496,@10878 10877:S4|626f6f6c 10878:O3|@10880,@10894,@10879 10879:O3|@10877,@10498,@10559 10880:O2|1,@10881 10881:O3|6,@10883,@10882 10882:O2|@10885,0 10883:O4|@10884,@4675,1,1 10884:O1|@5267 10885:O4|@4662,@9594,@10886,0 10886:O3|3,4,@10887 10887:O5|@5126,@10889,@10515,@10888,@10513 10888:O2|@10883,@10884 10889:O2|@5133,@10890 10890:O2|@10532,@10891 10891:O2|@10892,@10550 10892:O2|@10893,@10515 10893:O3|0,@4675,0 10894:O4|1,@4676,0,0 10895:O12|@5268,@10896,@4659,@4660,@4664,@10561,@4666,@10571,@4668,@10590,@4670,@10609 10896:O6|@5304,@4679,@4680,@4681,@4678,@4659 10897:O1|@5269 10898:S27|28496e636f6d70617469626c65206f7665726c6f6164696e677329 10899:S20|28496e636f6d70617469626c6520747970657329 10900:S38|545950455f5452454528292e6d616b654571756976616c656e74283229676574417267283129 10901:O4|@4656,@10202,@10903,@10902 10902:O5|@10420,1594,0,1594,0 10903:S35|6d616b654571756976616c656e743a204e6f74206120747970652066756e6374696f6e 10904:O4|@4656,@10202,@10906,@10905 10905:O5|@10420,2443,0,2443,0 10906:S36|556e696669636174696f6e3a204f7665726c6f61645365742f4f7665726c6f6164536574 10907:S29|28446966666572656e74207479706520636f6e7374727563746f727329 10908:S32|28446966666572656e74206e756d62657273206f6620617267756d656e747329 10909:S25|545950455f5452454528292e756e6966795479706573283229 10910:S42|2843616e6e6f7420756e6966792077697468206578706c696369742074797065207661726961626c6529 10911:S44|2854797065207661726961626c6520746f20626520756e6966696564206f636375727320696e207479706529 10912:O1|@5284 10913:S45|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229283129 10914:O1|@5285 10915:O4|@4656,@10202,@10917,@10916 10916:O5|@10918,347,0,347,0 10917:S18|6973457175616c6974793a2054797065466e 10918:S34|6d6c736f757263652f4d4c436f6d70696c65722f5354525543545f56414c532e4d4c 10919:S54|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b45715476283129 10920:S63|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e28322963616e4d6b4571547628312966696c746572283129 10921:S24|28526571756972657320657175616c697479207479706529 10922:O1|@5287 10923:S60|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129283129 10924:S57|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296d616b655072696e74697479283129 10925:S33|545950455f5452454528292e756e69667954797065732832296d61746368283229 10926:O4|@4677,@10928,0,@10927 10927:O5|@10929,52,0,52,0 10928:S6|4f7074696f6e 10929:S18|2e2f62617369732f4f7074696f6e2e736d6c 10930:S28|28446966666572656e74206e756d626572206f66206669656c647329 10931:S7|284669656c6420 10932:S9|206d697373696e6729 10933:S48|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f726473283429 10934:S64|545950455f5452454528292e756e69667954797065732832296d61746368283229756e6966795265636f7264732834296d617463684c6162656c6c6564283229 10935:S15|4c697374506169722e7a6970283229 10936:S47|545950455f5452454528292e756e69667954797065732832296d61746368283229696e746572736563742832292829 10937:O1|@5294 10938:S44|2854797065207661726961626c65206973206672656520696e20737572726f756e64696e672073636f706529 10939:S42|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e283229 10940:O1|@5299 10941:S34|545950455f5452454528292e666f6c6454797065283129666f6c6454283129283129 10942:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283229 10943:S15|4c6973742e666f6c64722833292829 10944:S31|545950455f5452454528292e666f6c6454797065283129666f6c6454283129 10945:S23|545950455f5452454528292e666f6c6454797065283129 10946:S61|545950455f5452454528292e756e69667954797065732832296d6174636828322961737369676e2832296f6363757273436865636b4661696c73283229 10947:O4|@4656,@10202,@10949,@10948 10948:O5|@10420,1725,0,1725,0 10949:S28|657175616c697479202d204f7665726c6f616473657420666f756e64 10950:S23|545950455f5452454528292e657175616c697479283329 10951:S10|417267756d656e74733a 10952:O2|@5307,@10384 10953:S6|43616e277420 10954:S5|756e696679 10955:S2|746f 10956:O2|@10236,@10957 10957:O2|@10958,0 10958:O2|3,@10907 10959:O2|3,@10955 10960:S50|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129 10961:S2|282a 10962:S2|2a29 10963:S71|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e737472283329 10964:S87|545950455f5452454528292e756e69667954797065734572726f725265706f72742834297265706f72744572726f72283129657870616e64656454797065436f6e7374722833297072696e745769746844657363283329 10965:S36|545950455f5452454528292e756e69667954797065734572726f725265706f7274283429 10966:O3|1,1,3 10967:O2|3,@10968 10968:S7|526561736f6e3a 10969:O2|3,@10970 10970:S46|417267756d656e7473206f6620616e64616c736f206d7573742068617665207479706520626f6f6c2a626f6f6c2e 10971:S9|46756e6374696f6e3a 10972:S9|417267756d656e743a 10973:O2|@10236,@10974 10974:O2|@10975,0 10975:O5|0,0,0,0,@10976 10976:O2|@10967,@10977 10977:O2|@10966,@10978 10978:O2|@10979,0 10979:O2|3,@10980 10980:S49|56616c7565206265696e67206170706c69656420646f6573206e6f74206861766520612066756e6374696f6e2074797065 10981:O2|3,@10982 10982:S35|54797065206572726f7220696e2066756e6374696f6e206170706c69636174696f6e2e 10983:O5|@9493,0,0,0,0 10984:S37|2068617320616c7265616479206265656e20626f756e6420696e2074686973206d61746368 10985:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d61746368547265652832296d657373466e283329 10986:S30|5052494e545f50415253455452454528292e6572726f724e656172283529 10987:O1|@5317 10988:S28|56414c55455f4f505328292e6d616b654c6f63616c56283129283129 10989:S57|54595045434845434b5f50415253455452454528292e7061737332283529737472696e67734f665365617263684c6973742834295f2d283129 10990:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229626f6479456e762d283129 10991:S63|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283129283129 10992:S36|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c79283129 10993:S43|5554494c49544945535f28292e6e6f4475706c6963617465732832296170706c792831296170706c283129 10994:S36|5554494c49544945535f28292e6e6f4475706c696361746573283229656e746572283129 10995:S37|5554494c49544945535f28292e6e6f4475706c6963617465732832296c6f6f6b7570283129 10996:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734d6174636854726565283229 10997:S45|54595045434845434b5f50415253455452454528292e7061737332283529676976654572726f72283329283129 10998:S11|436f6e7374727563746f72 10999:S11|3c756e646566696e65643e 11000:S21|206973206e6f74206120636f6e7374727563746f72 11001:O1|@5329 11002:S46|436f6e7374727563746f7220696e2061207061747465726e20776173206e6f7420616e206964656e746966696572 11003:O2|@5330,@4659 11004:O1|@5331 11005:S13|2074797065287329206e6f7420 11006:S11|2920726571756972657320 11007:S18|5479706520636f6e7374727563746f722028 11008:S26|545950455f5452454528292e61737369676e5479706573283329 11009:S46|545950455f5452454528292e61737369676e54797065732833297479706546726f6d547970655061727365283129 11010:S9|537472756374757265 11011:O1|@11012 11012:O2|@11013,0 11013:O4|@11015,0,@10496,@11014 11014:O3|@11017,@11021,@11016 11015:S9|756e646566696e6564 11016:O3|@11015,@10498,@11022 11017:O2|1,@11018 11018:O3|6,@11019,0 11019:O4|0,@4682,3,1 11020:O1|@5341 11021:O4|1,@4659,0,0 11022:S9|556e646566696e6564 11023:S16|5479706520636f6e7374727563746f72 11024:S23|2920686173206e6f74206265656e206465636c61726564 11025:S14|20696e2073747275637475726520 11026:S28|545950455f5452454528292e61737369676e54797065732833292d45 11027:S2|2028 11028:S24|56414c55455f4f505328292e6c6f6f6b7570547970283329 11029:S38|434f5049455228292e66756c6c436f70794461746174797065283329726573456e762d283129 11030:O1|@5345 11031:S12|656e74657253747275637420 11032:O5|@11033,258,0,258,0 11033:S30|6d6c736f757263652f4d4c436f6d70696c65722f434f504945522e736d6c 11034:O1|@5346 11035:S9|656e74657256616c20 11036:O5|@11033,259,0,259,0 11037:S16|486173685461626c652e686173683a20 11038:O5|@10032,88,0,88,0 11039:S28|434f5049455228292e66756c6c436f70794461746174797065283329 11040:S48|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129636f70794964283129 11041:S42|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129283129 11042:O1|@5352 11043:S39|434f5049455228292e6c6f63616c436f7079536967283729636f707954797065436f6e73283129 11044:S39|434f5049455228292e6c6f63616c436f70795369672837292833296e65775369672d5f2d283129 11045:O1|@5348 11046:O1|@5363 11047:S37|434f5049455228292e6c6f63616c436f7079536967283729636f7079547970283129283129 11048:O1|@5365 11049:S27|434f5049455228292e6c6f63616c436f7079536967283729283329 11050:O1|@5366 11051:S58|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6453756253747275637473283329 11052:S64|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c6454797065732833296d616b654e616d65283129 11053:S62|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f70794964283129 11054:O1|@5375 11055:S71|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129283129 11056:S68|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329636f7069656445717569762d283129 11057:O1|@5376 11058:S53|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629666f6c645479706573283329 11059:S24|434f5049455228292e6c6f63616c436f7079536967283729 11060:S41|434f5049455228292e6c6f63616c436f70795369672837296275696c64547970654361636865283629 11061:O1|@5377 11062:O4|11,@9448,0,@11063 11063:O5|@11033,261,0,261,0 11064:S33|434f5049455228292e66756c6c436f707944617461747970652833295f2d283129 11065:S21|486173685461626c652e686173684d616b65283129 11066:S30|56414c55455f4f505328292e6c6f6f6b7570537472756374757265283429 11067:O4|@4656,@10202,@11069,@11068 11068:O5|@11070,345,0,345,0 11069:S41|66696e64456e747279496e426c6f636b3a207475706c652f6461746174797065206d69736d61746368 11070:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f46554e4354494f4e532e736d6c 11071:O2|16,@11072 11072:O3|6,@11073,0 11073:O4|@4656,@10202,@11074,0 11074:S36|496e76616c6964206c6f616420656e636f756e746572656420696e20636f6d70696c6572 11075:O4|@4656,@10202,@11077,@11076 11076:O5|@11070,352,0,352,0 11077:S33|66696e64456e747279496e426c6f636b3a20696e76616c69642061646472657373 11078:O4|@4656,@10202,@11080,@11079 11079:O5|@11070,373,0,373,0 11080:S30|66696e64456e747279496e426c6f636b3a206e6f7420636f6e7374616e74 11081:O4|@4633,@10098,@11083,@11082 11082:O5|@10100,102,0,102,0 11083:S9|746f41646472657373 11084:O4|@4656,@10202,@11077,@11085 11085:O5|@11070,387,0,387,0 11086:S36|56414c55455f4f505328292e6d616b6553656c6563746564537472756374757265283229 11087:S40|434f4445545245455f46554e4354494f4e5328292e66696e64456e747279496e426c6f636b283329 11088:S35|434f4445545245455f46554e4354494f4e5328292e736574496e6c696e652832292829 11089:S6|56616c75653a 11090:O2|3,@11091 11091:S11|436f6e73747261696e743a 11092:O2|3,@11093 11093:S33|54797065206d69736d6174636820696e207479706520636f6e73747261696e742e 11094:O7|@10999,2,@10854,@9948,@10496,0,0 11095:S49|4964656e746966696572206265666f72652060617327206d757374206e6f74206265206120636f6e7374727563746f722e 11096:O1|@5384 11097:S51|436f6e7374727563746f72206d757374206265206170706c69656420746f20616e20617267756d656e74207061747465726e2e 11098:O1|@5327 11099:S79|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e28362970726f63657373456c656d656e74283129 11100:O1|@5386 11101:S50|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129283129 11102:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283529 11103:S47|54595045434845434b5f50415253455452454528292e706173733228352976616c547970654d657373616765283129 11104:S4|4974656d 11105:S40|456c656d656e747320696e2061206c697374206861766520646966666572656e742074797065732e 11106:O4|@11108,@11109,@10496,@11107 11107:O3|@11112,@11237,@11111 11108:S4|6c697374 11109:O2|@11110,0 11110:O2|@4684,79992 11111:O3|@11108,@10498,@10559 11112:O2|1,@11113 11113:O3|6,@11115,@11114 11114:O2|@11138,0 11115:O4|@11117,@4685,@11135,@11116 11116:O1|@5394 11117:O1|@5389 11118:S10|65712d6c697374283229 11119:S13|65712d6c697374283229285029 11120:O2|@5391,@4685 11121:O5|0,0,0,@10496,@11122 11122:O2|@11123,0 11123:O2|3,@11124 11124:S3|6e696c 11125:O4|5,@9518,0,0 11126:O2|@11127,0 11127:O2|3,@11128 11128:S4|2e2e2e29 11129:O5|0,0,0,@10496,@11130 11130:O2|@11131,0 11131:O2|3,@11132 11132:S2|3a3a 11133:S10|7072696e742d6c697374 11134:S11|7072696e746c6973742829 11135:O1|@5393 11136:S10|626f7865642d6c697374 11137:S9|73697a652d6c697374 11138:O4|@4662,@9594,@11139,0 11139:O3|3,4,@11140 11140:O6|@5131,@10516,@11142,@11229,@11141,@10513 11141:O12|@11231,@11234,@11235,@11233,@11232,@11236,@11230,@11117,@4685,@11135,@11116,@11115 11142:O2|@5133,@11143 11143:O2|@11145,@11144 11144:O2|@11216,@11215 11145:O2|@11147,@11146 11146:O3|1,@11149,@10536 11147:O2|1,@11148 11148:O2|2,6 11149:O8|@11151,@11119,0,0,@11150,0,0,1 11150:O2|@11208,0 11151:O2|12,@11152 11152:O8|@11154,@11118,0,@11207,@11153,0,10,1 11153:O2|@10647,@10643 11154:O3|2,@11156,@11155 11155:O2|@11203,@11202 11156:O4|5,@11158,@10632,@11157 11157:O4|5,@11164,@11163,@10633 11158:O4|3,@11160,@11159,@10540 11159:O2|8,@11162 11160:O2|8,@11161 11161:O2|2,4 11162:O2|2,5 11163:O4|5,@11167,@11166,@10633 11164:O3|21,@11165,9 11165:O3|21,@11160,5 11166:O3|15,@11170,@11169 11167:O3|21,@11168,9 11168:O3|21,@11159,5 11169:O4|5,@11183,@11182,@10633 11170:O2|@11172,@11171 11171:O2|@11175,@11174 11172:O4|1,@10547,6,@11173 11173:O4|11,@11160,0,1 11174:O2|@11178,@11177 11175:O4|1,@10547,7,@11176 11176:O4|11,@11160,1,1 11177:O2|@11180,0 11178:O4|1,@10547,8,@11179 11179:O4|11,@11159,0,1 11180:O4|1,@10547,9,@11181 11181:O4|11,@11159,1,1 11182:O2|14,@11194 11183:O4|7,@11185,@11184,1 11184:O4|11,@11192,0,0 11185:O2|@11187,@11186 11186:O2|@11189,0 11187:O2|@11188,1 11188:O2|8,@11148 11189:O2|@11190,1 11190:O2|8,@11191 11191:O2|2,8 11192:O2|8,@11193 11193:O2|1,0 11194:O2|@11196,@11195 11195:O2|@11199,0 11196:O2|@11197,1 11197:O2|8,@11198 11198:O2|2,7 11199:O2|@11200,1 11200:O2|8,@11201 11201:O2|2,9 11202:O2|@11205,0 11203:O2|@11204,1 11204:O3|@10648,4,@10541 11205:O2|@11206,1 11206:O3|@10648,5,@10543 11207:O2|@10542,0 11208:O2|1,@11209 11209:O2|@11210,0 11210:O3|2,0,@11211 11211:O2|@11212,0 11212:O3|0,@10547,@11213 11213:O2|@11188,@11214 11214:O2|@11190,0 11215:O2|@11219,@11218 11216:O2|@11217,@10515 11217:O2|1,@11198 11218:O2|@11225,0 11219:O2|@11221,@11220 11220:O3|1,@11222,@10536 11221:O2|1,@11191 11222:O8|@11224,@11136,0,0,@11223,0,0,1 11223:O2|@11193,0 11224:O3|6,3,0 11225:O2|@11227,@11226 11226:O3|1,@11228,@10536 11227:O2|1,@11201 11228:O8|@10632,@11137,0,0,@11223,0,0,1 11229:O11|2,2,2,2,2,2,2,1,2,2,2 11230:O2|@11236,0 11231:O3|@11115,@11232,@11230 11232:O3|@11234,@11235,@11233 11233:O1|@5397 11234:O1|@5395 11235:O1|@5396 11236:O1|@5398 11237:O4|1,@4686,1,0 11238:O5|5,0,@10611,@10609,0 11239:O5|5,0,@11241,@11240,0 11240:O4|@11241,0,@10496,@11242 11241:S4|756e6974 11242:O3|@10854,@11244,@11243 11243:O3|@11241,@10498,@11241 11244:O3|2,0,@11245 11245:O3|3,0,@11246 11246:O3|0,0,1 11247:O1|@11094 11248:S62|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e283629 11249:O4|@4656,@10202,@11251,@11250 11250:O5|@10420,2584,0,2584,0 11251:S26|676574526573756c74202d206e6f7420612066756e6374696f6e 11252:S38|545950455f5452454528292e67656e6572616c6973654f7665726c6f6164283429742d283129 11253:O4|@4656,@10202,@11255,@11254 11254:O5|@10420,2599,0,2599,0 11255:S42|67656e6572616c6973654f7665726c6f6164202d20617267206973206e6f742061207479706520766172 11256:O1|@5404 11257:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296f7665726c6f616454797065283229 11258:S42|5052494e545f5441424c4528292e6765744f7665726c6f6164732831297365617263684c697374283129 11259:S3|20313a 11260:S4|7320312d 11261:O2|@9583,0 11262:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c697374283329 11263:O4|11,@9448,0,@11264 11264:O5|@10103,71,0,71,0 11265:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833296170706c794c697374283329 11266:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737369676e4c6973742833297072696e744c697374283429 11267:S12|4c6973742e74616b65283229 11268:S74|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352970726f636573735061747465726e2836296d61704c6162656c73283129 11269:S4|74727565 11270:S5|66616c7365 11271:S3|726566 11272:S2|6974 11273:S25|526562696e64696e67206f722073706563696679696e672022 11274:S12|2220697320696c6c6567616c 11275:S48|54595045434845434b5f50415253455452454528292e7061737332283529636865636b466f724275696c74496e283529 11276:S15|7175616c6966696564206e616d6520 11277:S13|20696c6c6567616c2068657265 11278:S28|5554494c49544945535f28292e636865636b466f72446f7473283329 11279:S36|5554494c49544945535f28292e636865636b466f72446f7473283329636865636b283129 11280:S41|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70794964283129 11281:S49|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129283129 11282:O1|@5420 11283:S46|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229636f70696564547970652d283129 11284:O1|@5421 11285:S26|56414c55455f4f505328292e6c6f6f6b757056616c7565283429 11286:S32|56414c55455f4f505328292e6d616b6553656c656374656456616c7565283229 11287:S28|56414c55455f4f505328292e6d6b53656c6563746564566172283329 11288:S28|5554494c49544945535f28292e6e6f4475706c696361746573283229 11289:O1|@5425 11290:S52|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129283129 11291:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283529 11292:S49|54595045434845434b5f50415253455452454528292e70617373322835296d61746368547970654d657373616765283129 11293:S6|436c61757365 11294:S37|436c617573657320696e2063617365206861766520646966666572656e742074797065732e 11295:S3|49663a 11296:O2|3,@11297 11297:S46|436f6e646974696f6e20696e2069662d73746174656d656e74206d7573742068617665207479706520626f6f6c2e 11298:S43|2068617320616c7265616479206265656e20626f756e6420696e2074686973206465636c61726174696f6e 11299:S66|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296d657373466e283329 11300:S46|436c617573657320696e20666e2065787072657373696f6e206861766520646966666572656e742074797065732e 11301:S40|436c617573657320696e2068616e646c6572206861766520646966666572656e742074797065732e 11302:O5|5,0,@11304,@11303,0 11303:O4|@11304,0,@10496,@11305 11304:S3|65786e 11305:O3|@11307,@11311,@11306 11306:O3|@11304,@10498,@10559 11307:O2|1,@11308 11308:O3|6,@11309,0 11309:O4|0,@4688,2,1 11310:O1|@5435 11311:O4|1,@4689,0,0 11312:O1|@5266 11313:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283129283129 11314:S69|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c7565732832296c6f63616c456e762d283129 11315:O1|@5443 11316:O2|@11318,@11317 11317:O2|@11318,0 11318:O5|5,0,@10877,@10876,0 11319:O2|3,@11320 11320:S45|417267756d656e7473206f66206f72656c7365206d7573742068617665207479706520626f6f6c2a626f6f6c2e 11321:S6|52616973653a 11322:O2|3,@11323 11323:S42|457863657074696f6e20746f20626520726169736564206d757374206861766520747970652065786e2e 11324:S6|5768696c653a 11325:O2|3,@11326 11326:S55|4c6f6f7020636f6e646974696f6e206f66207768696c652d65787072657373696f6e206d7573742068617665207479706520626f6f6c2e 11327:S20|56616c7565206f7220636f6e7374727563746f72 11328:O1|@5446 11329:O1|@5447 11330:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229283329 11331:O1|@5448 11332:O1|@5449 11333:S68|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229626f6479456e762d283129 11334:S5|5468656e3a 11335:S5|456c73653a 11336:O2|3,@11337 11337:S46|54797065206d69736d61746368206265747765656e207468656e2d7061727420616e6420656c73652d706172742e 11338:S45|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529 11339:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836296d657373466e283329 11340:S52|2068617320616c7265616479206265656e2075736564206173206120636f6e7374727563746f7220696e20746869732074797065 11341:O3|@5456,@10896,@4690 11342:O1|@5458 11343:O2|@9478,0 11344:O2|3,@9805 11345:S7|61646450502d32 11346:O2|@11347,0 11347:O2|3,@11348 11348:S1|5d 11349:S6|402832292829 11350:S21|7072696e745f6c697374283329706c697374283229 11351:O4|0,@11352,3,1 11352:O1|@5462 11353:O3|@5463,@4694,@4693 11354:S12|7072696e742d76616c756573 11355:O2|@11356,0 11356:O2|3,@9795 11357:O2|3,@9797 11358:O5|0,0,0,@11360,@11359 11359:O2|@11363,0 11360:O2|@11361,0 11361:O2|0,@11362 11362:O5|@10918,159,159,0,0 11363:O2|3,@11364 11364:S13|54797065436f6e737472536574 11365:S19|7072696e742d74797065436f6e737472536574 11366:O5|@5465,@4700,@4701,@4704,@4695 11367:O2|@5467,@4697 11368:S14|7072696e745f7265662833292d45 11369:O5|@11370,115,0,115,0 11370:S22|2e2f62617369732f45786e5072696e7465722e736d6c 11371:O2|3,@11372 11372:S3|726566 11373:S12|7072696e745f726566283329 11374:S15|706172656e74686573697365283129 11375:S11|7072696e742d7479706573 11376:S9|7072696e742d726566 11377:S18|7072696e742d6c6f636174696f6e50726f70 11378:O4|0,@11379,2,3 11379:O1|@5475 11380:O4|0,@11381,1,1 11381:O1|@5476 11382:O1|@5477 11383:S4|74727565 11384:S5|66616c7365 11385:S10|7072696e742d626f6f6c 11386:O4|0,@11387,3,1 11387:O1|@5478 11388:O4|0,@11389,2,1 11389:O1|@5479 11390:O1|@5480 11391:O2|3,@11392 11392:S15|7374617274506f736974696f6e203d 11393:O2|3,@11394 11394:S11|73746172744c696e65203d 11395:O2|3,@11396 11396:S6|66696c65203d 11397:O2|3,@11398 11398:S13|656e64506f736974696f6e203d 11399:O2|3,@11400 11400:S9|656e644c696e65203d 11401:O4|0,@11402,3,1 11402:O1|@5481 11403:O4|0,@11404,2,2 11404:O1|@5482 11405:O2|3,@11406 11406:S14|726563757273697665526566203d 11407:O2|3,@11408 11408:S10|6c6f63616c526566203d 11409:O2|3,@11410 11410:S13|6578706f72746564526566203d 11411:O2|3,@11412 11412:S8|747970654f66203d 11413:O2|3,@11414 11414:S12|7265666572656e636573203d 11415:O2|3,@11416 11416:S11|6c6f636174696f6e73203d 11417:O2|3,@11418 11418:S15|696e7374616e63655479706573203d 11419:O2|3,@11420 11420:S7|636c617373203d 11421:O2|3,@11422 11422:S8|616363657373203d 11423:O5|0,0,0,@11425,@11424 11424:O2|@11428,0 11425:O2|@11426,0 11426:O2|0,@11427 11427:O5|@10918,244,244,0,0 11428:O2|3,@11429 11429:S5|56616c7565 11430:O5|@5483,@4700,@4703,@4693,@4701 11431:O5|0,0,0,@11433,@11432 11432:O2|@11436,0 11433:O2|@11434,0 11434:O2|0,@11435 11435:O5|@10918,145,145,0,0 11436:O2|3,@11437 11437:S7|42616454797065 11438:O5|0,0,0,@11440,@11439 11439:O2|@11443,0 11440:O2|@11441,0 11441:O2|0,@11442 11442:O5|@10918,147,147,0,0 11443:O2|3,@11444 11444:S9|456d70747954797065 11445:O2|3,@11446 11446:S8|726573756c74203d 11447:O2|3,@11448 11448:S5|617267203d 11449:O5|0,0,0,@11451,@11450 11450:O2|@11454,0 11451:O2|@11452,0 11452:O2|0,@11453 11453:O5|@10918,132,132,0,0 11454:O2|3,@11455 11455:S12|46756e6374696f6e54797065 11456:O2|3,@11457 11457:S8|747970656f66203d 11458:O2|3,@11459 11459:S9|7265634c697374203d 11460:O2|3,@11461 11461:S10|66756c6c4c697374203d 11462:O5|0,0,0,@11464,@11463 11463:O2|@11467,0 11464:O2|@11465,0 11465:O2|0,@11466 11466:O5|@10918,138,138,0,0 11467:O2|3,@11468 11468:S12|4c6162656c6c656454797065 11469:S17|7072696e742d74797065436f6e73747273 11470:O2|3,@11471 11471:S9|74797065736574203d 11472:O5|0,0,0,@11474,@11473 11473:O2|@11477,0 11474:O2|@11475,0 11475:O2|0,@11476 11476:O5|@10918,140,140,0,0 11477:O2|3,@11478 11478:S11|4f7665726c6f6164536574 11479:O2|3,@11480 11480:S8|636f6e737472203d 11481:O2|3,@11482 11482:S6|61726773203d 11483:O5|0,0,0,@11485,@11484 11484:O2|@11488,0 11485:O2|@11486,0 11486:O2|0,@11487 11487:O5|@10918,124,124,0,0 11488:O2|3,@11489 11489:S16|54797065436f6e737472756374696f6e 11490:O1|@5488 11491:S3|307778 11492:O2|3,@11493 11493:S7|76616c7565203d 11494:O2|3,@11495 11495:S10|656e636f64696e67203d 11496:O5|0,0,0,@11498,@11497 11497:O2|@11501,0 11498:O2|@11499,0 11499:O2|0,@11500 11500:O5|@10918,122,122,0,0 11501:O2|3,@11502 11502:S7|54797065566172 11503:O2|@5490,@4703 11504:O4|0,@11505,3,1 11505:O1|@5491 11506:O5|0,0,0,@11508,@11507 11507:O2|@11511,0 11508:O2|@11509,0 11509:O2|0,@11510 11510:O5|@10918,162,162,0,0 11511:O2|3,@11512 11512:S9|4669656c644c697374 11513:S20|7072696e742d6c6162656c4669656c644c697374 11514:O2|@10391,@11355 11515:O5|0,0,0,@11517,@11516 11516:O2|@11520,0 11517:O2|@11518,0 11518:O2|0,@11519 11519:O5|@10918,163,163,0,0 11520:O2|3,@11521 11521:S12|466c657869626c654c697374 11522:O1|@5493 11523:O5|0,0,0,@11525,@11524 11524:O2|@11528,0 11525:O2|@11526,0 11526:O2|0,@11527 11527:O5|@10918,267,267,0,0 11528:O2|3,@11529 11529:S10|4465636c617265644174 11530:O5|0,0,0,@11532,@11531 11531:O2|@11535,0 11532:O2|@11533,0 11533:O2|0,@11534 11534:O5|@10918,268,268,0,0 11535:O2|3,@11536 11536:S8|4f70656e65644174 11537:O5|0,0,0,@11539,@11538 11538:O2|@11542,0 11539:O2|@11540,0 11540:O2|0,@11541 11541:O5|@10918,270,270,0,0 11542:O2|3,@11543 11543:S10|53657175656e63654e6f 11544:O5|0,0,0,@11546,@11545 11545:O2|@11549,0 11546:O2|@11547,0 11547:O2|0,@11548 11548:O5|@10918,269,269,0,0 11549:O2|3,@11550 11550:S11|5374727563747572654174 11551:O1|@5494 11552:O2|3,@11553 11553:S11|6f66436f6e73747273203d 11554:O2|3,@11555 11555:S9|6e756c6c617279203d 11556:O5|0,0,0,@11558,@11557 11557:O2|@11561,0 11558:O2|@11559,0 11559:O2|0,@11560 11560:O5|@10918,260,260,0,0 11561:O2|3,@10998 11562:O5|0,0,0,@11564,@11563 11563:O2|@11567,0 11564:O2|@11565,0 11565:O2|0,@11566 11566:O5|@10918,259,259,0,0 11567:O2|3,@11568 11568:S9|457863657074696f6e 11569:O5|0,0,0,@11571,@11570 11570:O2|@11574,0 11571:O2|@11572,0 11572:O2|0,@11573 11573:O5|@10918,258,258,0,0 11574:O2|3,@11575 11575:S9|50617474426f756e64 11576:O5|0,0,0,@11578,@11577 11577:O2|@11581,0 11578:O2|@11579,0 11579:O2|0,@11580 11580:O5|@10918,257,257,0,0 11581:O2|3,@11582 11582:S8|56616c426f756e64 11583:S16|7072696e742d76616c7565436c617373 11584:O3|@5495,@4705,@4695 11585:O5|0,0,0,@11587,@11586 11586:O2|@11590,0 11587:O2|@11588,0 11588:O2|0,@11589 11589:O5|@10918,170,170,0,0 11590:O2|3,@11591 11591:S6|466f726d616c 11592:O7|@5496,@4706,@4720,@4721,@4722,@4723,@4707 11593:O2|3,@11594 11594:S10|6e756d576f726473203d 11595:O2|3,@11596 11596:S9|696e697469616c203d 11597:O2|3,@11598 11598:S7|666c616773203d 11599:O5|0,0,0,@11601,@11600 11600:O2|@11605,0 11601:O2|@11602,0 11602:O2|0,@11603 11603:O5|@11604,112,112,0,0 11604:S45|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f42617365436f6465547265652e736d6c 11605:O2|3,@11606 11606:S18|416c6c6f63617465576f72644d656d6f7279 11607:O2|3,@11608 11608:S11|73686f7274436f6e64203d 11609:O2|3,@11610 11610:S6|6f706572203d 11611:O2|3,@11612 11612:S10|6c6f6e6743616c6c203d 11613:O2|3,@11614 11614:S6|61726732203d 11615:O2|3,@11616 11616:S6|61726731203d 11617:O5|0,0,0,@11619,@11618 11618:O2|@11622,0 11619:O2|@11620,0 11620:O2|0,@11621 11621:O5|@11604,76,76,0,0 11622:O2|3,@11623 11623:S9|417262697472617279 11624:S13|7072696e742d636f6465557365 11625:O2|3,@11626 11626:S5|757365203d 11627:O2|3,@11628 11628:S6|61646472203d 11629:O1|@5499 11630:O5|0,0,0,@11632,@11631 11631:O2|@11636,0 11632:O2|@11633,0 11633:O2|0,@11634 11634:O5|@11635,137,137,0,0 11635:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f4261636b656e64496e7465726d656469617465436f64652e736d6c 11636:O2|3,@11637 11637:S14|466c6f6174696e67507454797065 11638:O5|0,0,0,@11640,@11639 11639:O2|@11643,0 11640:O2|@11641,0 11641:O2|0,@11642 11642:O5|@11635,136,136,0,0 11643:O2|3,@11644 11644:S11|47656e6572616c54797065 11645:S18|7072696e742d617267756d656e7454797065 11646:O2|3,@11647 11647:S6|6c6f6f70203d 11648:O2|3,@11649 11649:S11|617267756d656e7473203d 11650:O5|0,0,0,@11652,@11651 11651:O2|@11655,0 11652:O2|@11653,0 11653:O2|0,@11654 11654:O5|@11604,83,83,0,0 11655:O2|3,@11656 11656:S9|426567696e4c6f6f70 11657:O5|@5500,@4711,@4712,@4713,@4710 11658:O5|0,0,0,@11660,@11659 11659:O2|@11663,0 11660:O2|@11661,0 11661:O2|0,@11662 11662:O5|@11635,74,74,0,0 11663:O2|3,@11664 11664:S18|416c6c6f63617465427974654d656d6f7279 11665:O5|0,0,0,@11667,@11666 11666:O2|@11670,0 11667:O2|@11668,0 11668:O2|0,@11669 11669:O5|@11635,70,70,0,0 11670:O2|3,@11671 11671:S19|4669786564507265636973696f6e4172697468 11672:O5|0,0,0,@11674,@11673 11673:O2|@11677,0 11674:O2|@11675,0 11675:O2|0,@11676 11676:O5|@11635,76,76,0,0 11677:O2|3,@11678 11678:S14|4c61726765576f72644172697468 11679:O5|0,0,0,@11681,@11680 11680:O2|@11684,0 11681:O2|@11682,0 11682:O2|0,@11683 11683:O5|@11635,75,75,0,0 11684:O2|3,@11685 11685:S19|4c61726765576f7264436f6d70617269736f6e 11686:O5|0,0,0,@11688,@11687 11687:O2|@11691,0 11688:O2|@11689,0 11689:O2|0,@11690 11690:O5|@11635,77,77,0,0 11691:O2|3,@11692 11692:S16|4c61726765576f72644c6f676963616c 11693:O5|0,0,0,@11695,@11694 11694:O2|@11698,0 11695:O2|@11696,0 11696:O2|0,@11697 11697:O5|@11635,78,78,0,0 11698:O2|3,@11699 11699:S14|4c61726765576f72645368696674 11700:O5|0,0,0,@11702,@11701 11701:O2|@11705,0 11702:O2|@11703,0 11703:O2|0,@11704 11704:O5|@11635,80,80,0,0 11705:O2|3,@11706 11706:S9|5265616c4172697468 11707:O5|0,0,0,@11709,@11708 11708:O2|@11712,0 11709:O2|@11710,0 11710:O2|0,@11711 11711:O5|@11635,79,79,0,0 11712:O2|3,@11713 11713:S14|5265616c436f6d70617269736f6e 11714:O5|0,0,0,@11716,@11715 11715:O2|@11719,0 11716:O2|@11717,0 11717:O2|0,@11718 11718:O5|@11635,71,71,0,0 11719:O2|3,@11720 11720:S9|576f72644172697468 11721:O2|3,@11722 11722:S6|74657374203d 11723:O2|3,@11724 11724:S10|69735369676e6564203d 11725:O5|0,0,0,@11727,@11726 11726:O2|@11730,0 11727:O2|@11728,0 11728:O2|0,@11729 11729:O5|@11635,69,69,0,0 11730:O2|3,@11731 11731:S14|576f7264436f6d70617269736f6e 11732:O5|0,0,0,@11734,@11733 11733:O2|@11737,0 11734:O2|@11735,0 11735:O2|0,@11736 11736:O5|@11635,72,72,0,0 11737:O2|3,@11738 11738:S11|576f72644c6f676963616c 11739:O5|0,0,0,@11741,@11740 11740:O2|@11744,0 11741:O2|@11742,0 11742:O2|0,@11743 11743:O5|@11635,73,73,0,0 11744:O2|3,@11745 11745:S9|576f72645368696674 11746:S15|7072696e742d62696e6172794f7073 11747:O1|@5501 11748:O5|0,0,0,@11750,@11749 11749:O2|@11753,0 11750:O2|@11751,0 11751:O2|0,@11752 11752:O5|@11635,34,34,0,0 11753:O2|3,@11754 11754:S8|4172697468416464 11755:O5|0,0,0,@11757,@11756 11756:O2|@11760,0 11757:O2|@11758,0 11758:O2|0,@11759 11759:O5|@11635,39,39,0,0 11760:O2|3,@11761 11761:S8|4172697468446976 11762:O5|0,0,0,@11764,@11763 11763:O2|@11767,0 11764:O2|@11765,0 11765:O2|0,@11766 11766:O5|@11635,40,40,0,0 11767:O2|3,@11768 11768:S8|41726974684d6f64 11769:O5|0,0,0,@11771,@11770 11770:O2|@11774,0 11771:O2|@11772,0 11772:O2|0,@11773 11773:O5|@11635,36,36,0,0 11774:O2|3,@11775 11775:S9|41726974684d756c74 11776:O5|0,0,0,@11778,@11777 11777:O2|@11781,0 11778:O2|@11779,0 11779:O2|0,@11780 11780:O5|@11635,37,37,0,0 11781:O2|3,@11782 11782:S9|417269746851756f74 11783:O5|0,0,0,@11785,@11784 11784:O2|@11788,0 11785:O2|@11786,0 11786:O2|0,@11787 11787:O5|@11635,38,38,0,0 11788:O2|3,@11789 11789:S8|417269746852656d 11790:O5|0,0,0,@11792,@11791 11791:O2|@11795,0 11792:O2|@11793,0 11793:O2|0,@11794 11794:O5|@11635,35,35,0,0 11795:O2|3,@11796 11796:S8|4172697468537562 11797:S26|7072696e742d61726974686d657469634f7065726174696f6e73 11798:O1|@5502 11799:O5|0,0,0,@11801,@11800 11800:O2|@11804,0 11801:O2|@11802,0 11802:O2|0,@11803 11803:O5|@11635,27,27,0,0 11804:O2|3,@11805 11805:S9|54657374457175616c 11806:O5|0,0,0,@11808,@11807 11807:O2|@11811,0 11808:O2|@11809,0 11809:O2|0,@11810 11810:O5|@11635,30,30,0,0 11811:O2|3,@11812 11812:S11|5465737447726561746572 11813:O5|0,0,0,@11815,@11814 11814:O2|@11818,0 11815:O2|@11816,0 11816:O2|0,@11817 11817:O5|@11635,31,31,0,0 11818:O2|3,@11819 11819:S16|5465737447726561746572457175616c 11820:O5|0,0,0,@11822,@11821 11821:O2|@11825,0 11822:O2|@11823,0 11823:O2|0,@11824 11824:O5|@11635,28,28,0,0 11825:O2|3,@11826 11826:S8|546573744c657373 11827:O5|0,0,0,@11829,@11828 11828:O2|@11832,0 11829:O2|@11830,0 11830:O2|0,@11831 11831:O5|@11635,29,29,0,0 11832:O2|3,@11833 11833:S13|546573744c657373457175616c 11834:S20|7072696e742d74657374436f6e646974696f6e73 11835:O1|@5503 11836:O5|0,0,0,@11838,@11837 11837:O2|@11841,0 11838:O2|@11839,0 11839:O2|0,@11840 11840:O5|@11635,43,43,0,0 11841:O2|3,@11842 11842:S10|4c6f676963616c416e64 11843:O5|0,0,0,@11845,@11844 11844:O2|@11848,0 11845:O2|@11846,0 11846:O2|0,@11847 11847:O5|@11635,44,44,0,0 11848:O2|3,@11849 11849:S9|4c6f676963616c4f72 11850:O5|0,0,0,@11852,@11851 11851:O2|@11855,0 11852:O2|@11853,0 11853:O2|0,@11854 11854:O5|@11635,45,45,0,0 11855:O2|3,@11856 11856:S10|4c6f676963616c586f72 11857:S23|7072696e742d6c6f676963616c4f7065726174696f6e73 11858:O1|@5504 11859:O5|0,0,0,@11861,@11860 11860:O2|@11864,0 11861:O2|@11862,0 11862:O2|0,@11863 11863:O5|@11635,48,48,0,0 11864:O2|3,@11865 11865:S9|53686966744c656674 11866:O5|0,0,0,@11868,@11867 11867:O2|@11871,0 11868:O2|@11869,0 11869:O2|0,@11870 11870:O5|@11635,50,50,0,0 11871:O2|3,@11872 11872:S20|5368696674526967687441726974686d65746963 11873:O5|0,0,0,@11875,@11874 11874:O2|@11878,0 11875:O2|@11876,0 11876:O2|0,@11877 11877:O5|@11635,49,49,0,0 11878:O2|3,@11879 11879:S17|536869667452696768744c6f676963616c 11880:S21|7072696e742d73686966744f7065726174696f6e73 11881:O5|0,0,0,@11883,@11882 11882:O2|@11886,0 11883:O2|@11884,0 11884:O2|0,@11885 11885:O5|@11604,70,70,0,0 11886:O2|3,@11887 11887:S6|42696e617279 11888:S14|7072696e742d636f646574726565 11889:O2|3,@11890 11890:S8|6f6666736574203d 11891:O2|3,@11892 11892:S7|696e646578203d 11893:O2|3,@11894 11894:S6|62617365203d 11895:O1|@5506 11896:O5|0,0,0,@11898,@11897 11897:O2|@11901,0 11898:O2|@11899,0 11899:O2|0,@11900 11900:O5|@11635,237,237,0,0 11901:O2|3,@11902 11902:S18|426c6f636b4f70436f6d7061726542797465 11903:O5|0,0,0,@11905,@11904 11904:O2|@11908,0 11905:O2|@11906,0 11906:O2|0,@11907 11907:O5|@11635,236,236,0,0 11908:O2|3,@11909 11909:S16|426c6f636b4f70457175616c42797465 11910:O2|3,@11911 11911:S12|6973427974654d6f7665203d 11912:O5|0,0,0,@11914,@11913 11913:O2|@11917,0 11914:O2|@11915,0 11915:O2|0,@11916 11916:O5|@11635,235,235,0,0 11917:O2|3,@11918 11918:S11|426c6f636b4f704d6f7665 11919:S17|7072696e742d626c6f636b4f704b696e64 11920:O2|3,@11921 11921:S12|736f757263654c656674203d 11922:O2|3,@11923 11923:S8|6c656e677468203d 11924:O2|3,@11925 11925:S6|6b696e64203d 11926:O2|3,@11927 11927:S11|646573745269676874203d 11928:O5|0,0,0,@11930,@11929 11929:O2|@11933,0 11930:O2|@11931,0 11931:O2|0,@11932 11932:O5|@11604,107,107,0,0 11933:O2|3,@11934 11934:S14|426c6f636b4f7065726174696f6e 11935:O5|0,0,0,@11937,@11936 11936:O2|@11940,0 11937:O2|@11938,0 11938:O2|0,@11939 11939:O5|@11604,81,81,0,0 11940:O2|3,@11941 11941:S4|436f6e64 11942:O1|@5508 11943:O3|@5509,@11944,@4633 11944:O1|@5510 11945:S3|4c4954 11946:S6|434f44452022 11947:S5|46554e2022 11948:S20|4c4954203c6c6f6e6720776f726420646174613e 11949:S9|425954452064617461 11950:S23|416464726573732e737472696e674f66576f7264283129 11951:S19|506f6c7947657446756e6374696f6e4e616d65 11952:O4|0,@11953,2,1 11953:O1|@5511 11954:O1|@5512 11955:S25|7072696e742d556e6976657273616c2e756e6976657273616c 11956:O5|0,0,0,@11958,@11957 11957:O2|@11961,0 11958:O2|@11959,0 11959:O2|0,@11960 11960:O5|@11604,54,54,0,0 11961:O2|3,@11962 11962:S7|436f6e73746e74 11963:O2|3,@11964 11964:S12|726573756c7454797065203d 11965:O2|3,@11966 11966:S10|66756e6374696f6e203d 11967:O2|3,@11968 11968:S9|6172674c697374203d 11969:O5|0,0,0,@11971,@11970 11970:O2|@11974,0 11971:O2|@11972,0 11972:O2|0,@11973 11973:O5|@11604,61,61,0,0 11974:O2|3,@11975 11975:S4|4576616c 11976:O5|0,0,0,@11978,@11977 11977:O2|@11981,0 11978:O2|@11979,0 11979:O2|0,@11980 11980:O5|@11604,56,56,0,0 11981:O2|3,@11982 11982:S7|45787472616374 11983:O5|0,0,0,@11985,@11984 11984:O2|@11988,0 11985:O2|@11986,0 11986:O2|0,@11987 11987:O5|@11604,110,110,0,0 11988:O2|3,@11989 11989:S11|4765745468726561644964 11990:O2|3,@11991 11991:S9|68616e646c6572203d 11992:O2|3,@11993 11993:S5|657870203d 11994:O2|3,@11995 11995:S14|65785061636b657441646472203d 11996:O5|0,0,0,@11998,@11997 11997:O2|@12001,0 11998:O2|@11999,0 11999:O2|0,@12000 12000:O5|@11604,90,90,0,0 12001:O2|3,@12002 12002:S6|48616e646c65 12003:O2|3,@12004 12004:S11|697356617269616e74203d 12005:O5|0,0,0,@12007,@12006 12006:O2|@12010,0 12007:O2|@12008,0 12008:O2|0,@12009 12009:O5|@11604,58,58,0,0 12010:O2|3,@12011 12011:S8|496e646972656374 12012:S14|7072696e742d6c6f6164466f726d 12013:O2|3,@12014 12014:S8|726563557365203d 12015:O2|3,@12016 12016:S12|6c6f63616c436f756e74203d 12017:O2|3,@12018 12018:S10|6973496e6c696e65203d 12019:O2|3,@12020 12020:S9|636c6f73757265203d 12021:O2|3,@12022 12022:S6|626f6479203d 12023:O2|3,@12024 12024:S10|6172675479706573203d 12025:O5|0,0,0,@12027,@12026 12026:O2|@12030,0 12027:O2|@12028,0 12028:O2|0,@12029 12029:O5|@11604,79,79,0,0 12030:O2|3,@12031 12031:S6|4c616d626461 12032:O1|@5519 12033:O5|0,0,0,@12035,@12034 12034:O2|@12038,0 12035:O2|@12036,0 12036:O2|0,@12037 12037:O5|@11635,227,227,0,0 12038:O2|3,@12039 12039:S12|4c6f616453746f7265433136 12040:O5|0,0,0,@12042,@12041 12041:O2|@12045,0 12042:O2|@12043,0 12043:O2|0,@12044 12044:O5|@11635,228,228,0,0 12045:O2|3,@12046 12046:S12|4c6f616453746f7265433332 12047:O5|0,0,0,@12049,@12048 12048:O2|@12052,0 12049:O2|@12050,0 12050:O2|0,@12051 12051:O5|@11635,229,229,0,0 12052:O2|3,@12053 12053:S12|4c6f616453746f7265433634 12054:O5|0,0,0,@12056,@12055 12055:O2|@12059,0 12056:O2|@12057,0 12057:O2|0,@12058 12058:O5|@11635,226,226,0,0 12059:O2|3,@12060 12060:S11|4c6f616453746f72654338 12061:O5|0,0,0,@12063,@12062 12062:O2|@12066,0 12063:O2|@12064,0 12064:O2|0,@12065 12065:O5|@11635,231,231,0,0 12066:O2|3,@12067 12067:S16|4c6f616453746f726543446f75626c65 12068:O5|0,0,0,@12070,@12069 12069:O2|@12073,0 12070:O2|@12071,0 12071:O2|0,@12072 12072:O5|@11635,230,230,0,0 12073:O2|3,@12074 12074:S15|4c6f616453746f726543466c6f6174 12075:O2|3,@12076 12076:S13|6973496d6d757461626c65203d 12077:O5|0,0,0,@12079,@12078 12078:O2|@12082,0 12079:O2|@12080,0 12080:O2|0,@12081 12081:O5|@11635,225,225,0,0 12082:O2|3,@12083 12083:S15|4c6f616453746f72654d4c42797465 12084:O5|0,0,0,@12086,@12085 12085:O2|@12089,0 12086:O2|@12087,0 12087:O2|0,@12088 12088:O5|@11635,224,224,0,0 12089:O2|3,@12090 12090:S15|4c6f616453746f72654d4c576f7264 12091:O5|0,0,0,@12093,@12092 12092:O2|@12096,0 12093:O2|@12094,0 12094:O2|0,@12095 12095:O5|@11635,232,232,0,0 12096:O2|3,@12097 12097:S25|4c6f616453746f7265556e746167676564556e7369676e6564 12098:S19|7072696e742d6c6f616453746f72654b696e64 12099:O2|3,@12100 12100:S9|61646472657373203d 12101:O5|0,0,0,@12103,@12102 12102:O2|@12106,0 12103:O2|@12104,0 12104:O2|0,@12105 12105:O5|@11604,103,103,0,0 12106:O2|3,@12107 12107:S13|4c6f61644f7065726174696f6e 12108:O5|0,0,0,@12110,@12109 12109:O2|@12113,0 12110:O2|@12111,0 12111:O2|0,@12112 12112:O5|@11604,86,86,0,0 12113:O2|3,@12114 12114:S4|4c6f6f70 12115:S17|7072696e742d636f646542696e64696e67 12116:O5|0,0,0,@12118,@12117 12117:O2|@12121,0 12118:O2|@12119,0 12119:O2|0,@12120 12120:O5|@11604,52,52,0,0 12121:O2|3,@12122 12122:S6|4e6577656e76 12123:O5|0,0,0,@12125,@12124 12124:O2|@12128,0 12125:O2|@12126,0 12126:O2|0,@12127 12127:O5|@11604,88,88,0,0 12128:O2|3,@12129 12129:S5|5261697365 12130:O1|@5522 12131:O2|@12132,0 12132:O2|3,@12133 12133:S4|2e2e2e5d 12134:O2|@12135,0 12135:O2|3,@9618 12136:O2|3,@12137 12137:S9|66726f6d4c6973745b 12138:O2|3,@9569 12139:S20|426f6f6c566563746f722e707265747479283329 12140:O2|3,@12141 12141:S7|7475706c65203d 12142:O2|3,@12143 12143:S8|66696c746572203d 12144:O2|3,@12145 12145:S11|636f6e7461696e6572203d 12146:O5|0,0,0,@12148,@12147 12147:O2|@12151,0 12148:O2|@12149,0 12149:O2|0,@12150 12150:O5|@11604,94,94,0,0 12151:O2|3,@12152 12152:S12|536574436f6e7461696e6572 12153:O5|0,0,0,@12155,@12154 12154:O2|@12158,0 12155:O2|@12156,0 12156:O2|0,@12157 12157:O5|@11604,105,105,0,0 12158:O2|3,@12159 12159:S14|53746f72654f7065726174696f6e 12160:O2|3,@12161 12161:S5|746167203d 12162:O2|3,@12163 12163:S8|6d6178546167203d 12164:O5|0,0,0,@12166,@12165 12165:O2|@12169,0 12166:O2|@12167,0 12167:O2|0,@12168 12168:O5|@11604,101,101,0,0 12169:O2|3,@12170 12170:S7|54616754657374 12171:O2|3,@12172 12172:S8|6669656c6473203d 12173:O5|0,0,0,@12175,@12174 12174:O2|@12178,0 12175:O2|@12176,0 12176:O2|0,@12177 12177:O5|@11604,92,92,0,0 12178:O2|3,@12179 12179:S5|5475706c65 12180:O1|@5526 12181:O5|0,0,0,@12183,@12182 12182:O2|@12186,0 12183:O2|@12184,0 12184:O2|0,@12185 12185:O5|@11635,59,59,0,0 12186:O2|3,@12187 12187:S15|41746f6d696344656372656d656e74 12188:O5|0,0,0,@12190,@12189 12189:O2|@12193,0 12190:O2|@12191,0 12191:O2|0,@12192 12192:O5|@11635,58,58,0,0 12193:O2|3,@12194 12194:S15|41746f6d6963496e6372656d656e74 12195:O5|0,0,0,@12197,@12196 12196:O2|@12200,0 12197:O2|@12198,0 12198:O2|0,@12199 12199:O5|@11635,60,60,0,0 12200:O2|3,@12201 12201:S11|41746f6d69635265736574 12202:O5|0,0,0,@12204,@12203 12203:O2|@12207,0 12204:O2|@12205,0 12205:O2|0,@12206 12206:O5|@11635,57,57,0,0 12207:O2|3,@12208 12208:S16|436c6561724d757461626c65466c6167 12209:O5|0,0,0,@12211,@12210 12210:O2|@12214,0 12211:O2|@12212,0 12212:O2|0,@12213 12213:O5|@11635,66,66,0,0 12214:O2|3,@12215 12215:S13|466c6f61744669786564496e74 12216:O5|0,0,0,@12218,@12217 12217:O2|@12221,0 12218:O2|@12219,0 12219:O2|0,@12220 12220:O5|@11635,54,54,0,0 12221:O2|3,@12222 12222:S13|497354616767656456616c7565 12223:O5|0,0,0,@12225,@12224 12224:O2|@12228,0 12225:O2|@12226,0 12226:O2|0,@12227 12227:O5|@11635,61,61,0,0 12228:O2|3,@12229 12229:S16|4c6f6e67576f7264546f546167676564 12230:O5|0,0,0,@12232,@12231 12231:O2|@12235,0 12232:O2|@12233,0 12233:O2|0,@12234 12234:O5|@11635,56,56,0,0 12235:O2|3,@12236 12236:S15|4d656d6f727943656c6c466c616773 12237:O5|0,0,0,@12239,@12238 12238:O2|@12242,0 12239:O2|@12240,0 12240:O2|0,@12241 12241:O5|@11635,55,55,0,0 12242:O2|3,@12243 12243:S16|4d656d6f727943656c6c4c656e677468 12244:O5|0,0,0,@12246,@12245 12245:O2|@12249,0 12246:O2|@12247,0 12247:O2|0,@12248 12248:O5|@11635,53,53,0,0 12249:O2|3,@12250 12250:S10|4e6f74426f6f6c65616e 12251:O5|0,0,0,@12253,@12252 12252:O2|@12256,0 12253:O2|@12254,0 12254:O2|0,@12255 12255:O5|@11635,64,64,0,0 12256:O2|3,@12257 12257:S7|5265616c416273 12258:O5|0,0,0,@12260,@12259 12259:O2|@12263,0 12260:O2|@12261,0 12261:O2|0,@12262 12262:O5|@11635,65,65,0,0 12263:O2|3,@12264 12264:S7|5265616c4e6567 12265:O5|0,0,0,@12267,@12266 12266:O2|@12270,0 12267:O2|@12268,0 12268:O2|0,@12269 12269:O5|@11635,62,62,0,0 12270:O2|3,@12271 12271:S16|5369676e6564546f4c6f6e67576f7264 12272:O5|0,0,0,@12274,@12273 12273:O2|@12277,0 12274:O2|@12275,0 12275:O2|0,@12276 12276:O5|@11635,63,63,0,0 12277:O2|3,@12278 12278:S18|556e7369676e6564546f4c6f6e67576f7264 12279:S14|7072696e742d756e6172794f7073 12280:O5|0,0,0,@12282,@12281 12281:O2|@12285,0 12282:O2|@12283,0 12283:O2|0,@12284 12284:O5|@11604,69,69,0,0 12285:O2|3,@12286 12286:S5|556e617279 12287:O1|@5527 12288:O5|0,0,0,@12290,@12289 12289:O2|@12293,0 12290:O2|@12291,0 12291:O2|0,@12292 12292:O5|@11604,36,36,0,0 12293:O2|3,@12294 12294:S8|4172624172697468 12295:O5|0,0,0,@12297,@12296 12296:O2|@12300,0 12297:O2|@12298,0 12298:O2|0,@12299 12299:O5|@11604,35,35,0,0 12300:O2|3,@12301 12301:S10|417262436f6d70617265 12302:S21|7072696e742d617262507265636973696f6e4f7073 12303:O3|@5528,@4706,@4721 12304:O5|0,0,0,@12306,@12305 12305:O2|@12309,0 12306:O2|@12307,0 12307:O2|0,@12308 12308:O5|@11604,46,46,0,0 12309:O2|3,@12310 12310:S8|5573654170706c79 12311:O5|0,0,0,@12313,@12312 12312:O2|@12316,0 12313:O2|@12314,0 12314:O2|0,@12315 12315:O5|@11604,45,45,0,0 12316:O2|3,@12317 12317:S9|5573654578706f7274 12318:O5|0,0,0,@12320,@12319 12319:O2|@12323,0 12320:O2|@12321,0 12321:O2|0,@12322 12322:O5|@11604,49,49,0,0 12323:O2|3,@12324 12324:S8|5573654669656c64 12325:O5|0,0,0,@12327,@12326 12326:O2|@12330,0 12327:O2|@12328,0 12328:O2|0,@12329 12329:O5|@11604,44,44,0,0 12330:O2|3,@12331 12331:S10|55736547656e6572616c 12332:O1|@5532 12333:O5|0,0,0,@12335,@12334 12334:O2|@12338,0 12335:O2|@12336,0 12336:O2|0,@12337 12337:O5|@11604,123,123,0,0 12338:O2|3,@12339 12339:S12|4c6f6164417267756d656e74 12340:O5|0,0,0,@12342,@12341 12341:O2|@12345,0 12342:O2|@12343,0 12343:O2|0,@12344 12344:O5|@11604,125,125,0,0 12345:O2|3,@12346 12346:S11|4c6f6164436c6f73757265 12347:O5|0,0,0,@12349,@12348 12348:O2|@12352,0 12349:O2|@12350,0 12350:O2|0,@12351 12351:O5|@11604,124,124,0,0 12352:O2|3,@12353 12353:S9|4c6f61644c6f63616c 12354:O5|0,0,0,@12356,@12355 12355:O2|@12359,0 12356:O2|@12357,0 12357:O2|0,@12358 12358:O5|@11604,126,126,0,0 12359:O2|3,@12360 12360:S13|4c6f6164526563757273697665 12361:O1|@5533 12362:O5|0,0,0,@12364,@12363 12363:O2|@12367,0 12364:O2|@12365,0 12365:O2|0,@12366 12366:O5|@11604,40,40,0,0 12367:O2|3,@12368 12368:S6|496e6c696e65 12369:O5|0,0,0,@12371,@12370 12370:O2|@12374,0 12371:O2|@12372,0 12372:O2|0,@12373 12373:O5|@11604,39,39,0,0 12374:O2|3,@12375 12375:S9|4e6f6e496e6c696e65 12376:S18|7072696e742d696e6c696e65537461747573 12377:O5|@5534,@4721,@4706,@4723,@4722 12378:O2|3,@12379 12379:S6|73697a65203d 12380:O2|3,@12381 12381:S8|736574746572203d 12382:O5|0,0,0,@12384,@12383 12383:O2|@12387,0 12384:O2|@12385,0 12385:O2|0,@12386 12386:O5|@11604,118,118,0,0 12387:O2|3,@12388 12388:S9|436f6e7461696e6572 12389:O5|0,0,0,@12391,@12390 12390:O2|@12394,0 12391:O2|@12392,0 12392:O2|0,@12393 12393:O5|@11604,115,115,0,0 12394:O2|3,@12395 12395:S6|4465636c6172 12396:O5|0,0,0,@12398,@12397 12397:O2|@12401,0 12398:O2|@12399,0 12399:O2|0,@12400 12400:O5|@11604,117,117,0,0 12401:O2|3,@12402 12402:S11|4e756c6c42696e64696e67 12403:O2|3,@12404 12404:S8|6c616d626461203d 12405:O5|0,0,0,@12407,@12406 12406:O2|@12410,0 12407:O2|@12408,0 12408:O2|0,@12409 12409:O5|@11604,116,116,0,0 12410:O2|3,@12411 12411:S7|52656344656373 12412:O5|0,0,0,@12414,@12413 12413:O2|@12417,0 12414:O2|@12415,0 12415:O2|0,@12416 12416:O5|@10918,167,167,0,0 12417:O2|3,@12418 12418:S6|476c6f62616c 12419:O4|0,@12420,1,1 12420:O1|@5543 12421:S9|7072696e742d696e74 12422:O4|0,@12423,3,1 12423:O1|@5544 12424:O2|@5545,@4725 12425:O2|@10685,@12426 12426:O2|@10236,@12427 12427:O2|@12429,@12428 12428:O2|@10236,@12431 12429:O2|3,@12430 12430:S8|6c6f6f6b7570203d 12431:O2|@12432,@10681 12432:O2|3,@12433 12433:S2|666e 12434:O2|3,@12435 12435:S5|6c6576203d 12436:O5|0,0,0,@12438,@12437 12437:O2|@12441,0 12438:O2|@12439,0 12439:O2|0,@12440 12440:O5|@10521,71,71,0,0 12441:O2|3,@12442 12442:S5|4c6576656c 12443:S11|7072696e742d6c6576656c 12444:O1|@5546 12445:O4|0,@12446,3,1 12446:O1|@5547 12447:O4|0,@12448,2,2 12448:O1|@5548 12449:O5|0,0,0,@12451,@12450 12450:O2|@12454,0 12451:O2|@12452,0 12452:O2|0,@12453 12453:O5|@11070,460,460,0,0 12454:O2|3,@12455 12455:S7|436c6f73757265 12456:S19|7072696e742d637265617465436c6f73757265 12457:O2|3,@12458 12458:S7|6c6576656c203d 12459:O5|0,0,0,@12461,@12460 12460:O2|@12464,0 12461:O2|@12462,0 12462:O2|0,@12463 12463:O5|@10918,168,168,0,0 12464:O2|3,@12465 12465:S5|4c6f63616c 12466:O5|0,0,0,@12468,@12467 12467:O2|@12471,0 12468:O2|@12469,0 12469:O2|0,@12470 12470:O5|@10918,171,171,0,0 12471:O2|3,@12472 12472:S10|4f7665726c6f61646564 12473:O5|0,0,0,@12475,@12474 12474:O2|@12478,0 12475:O2|@12476,0 12476:O2|0,@12477 12477:O5|@10918,169,169,0,0 12478:O2|3,@12479 12479:S8|53656c6563746564 12480:S15|7072696e742d76616c416363657373 12481:O1|@5549 12482:O5|0,0,0,@12484,@12483 12483:O2|@12487,0 12484:O2|@12485,0 12485:O2|0,@12486 12486:O5|@10918,239,239,0,0 12487:O2|3,@12488 12488:S11|4164644f7665726c6f6164 12489:O5|0,0,0,@12491,@12490 12490:O2|@12494,0 12491:O2|@12492,0 12492:O2|0,@12493 12493:O5|@10918,236,236,0,0 12494:O2|3,@12495 12495:S9|416464507265747479 12496:O5|0,0,0,@12498,@12497 12497:O2|@12501,0 12498:O2|@12499,0 12499:O2|0,@12500 12500:O5|@10918,237,237,0,0 12501:O2|3,@12502 12502:S5|457175616c 12503:O5|0,0,0,@12505,@12504 12504:O2|@12508,0 12505:O2|@12506,0 12506:O2|0,@12507 12507:O5|@10918,241,241,0,0 12508:O2|3,@12509 12509:S11|4765744c6f636174696f6e 12510:O5|0,0,0,@12512,@12511 12511:O2|@12515,0 12512:O2|@12513,0 12513:O2|0,@12514 12514:O5|@10918,234,234,0,0 12515:O2|3,@12516 12516:S9|476574507265747479 12517:O5|0,0,0,@12519,@12518 12518:O2|@12522,0 12519:O2|@12520,0 12520:O2|0,@12521 12521:O5|@10918,235,235,0,0 12522:O2|3,@12523 12523:S10|4d616b65537472696e67 12524:O5|0,0,0,@12526,@12525 12525:O2|@12529,0 12526:O2|@12527,0 12527:O2|0,@12528 12528:O5|@10918,238,238,0,0 12529:O2|3,@12530 12530:S8|4e6f74457175616c 12531:O5|0,0,0,@12533,@12532 12532:O2|@12536,0 12533:O2|@12534,0 12534:O2|0,@12535 12535:O5|@10918,233,233,0,0 12536:O2|3,@12537 12537:S5|5072696e74 12538:O5|0,0,0,@12540,@12539 12539:O2|@12543,0 12540:O2|@12541,0 12541:O2|0,@12542 12542:O5|@10918,240,240,0,0 12543:O2|3,@12544 12544:S7|54797065446570 12545:S19|7072696e742d74797065446570656e64656e74 12546:O4|@5550,@4700,@4701,@4726 12547:O2|3,@12548 12548:S10|7479706556617273203d 12549:O2|3,@12550 12550:S12|6964656e746966696572203d 12551:O5|0,0,0,@12553,@12552 12552:O2|@12556,0 12553:O2|@12554,0 12554:O2|0,@12555 12555:O5|@10918,150,150,0,0 12556:O2|3,@12557 12557:S11|54797065436f6e73747273 12558:O3|@5554,@4727,@4695 12559:O2|3,@12560 12560:S10|6c6f636174696f6e203d 12561:O2|3,@12562 12562:S13|6465736372697074696f6e203d 12563:O2|3,@12564 12564:S8|69644b696e64203d 12565:O5|0,0,0,@12567,@12566 12566:O2|@12570,0 12567:O2|@12568,0 12568:O2|0,@12569 12569:O5|@10918,113,113,0,0 12570:O2|3,@12571 12571:S6|547970654964 12572:S12|7072696e742d747970654964 12573:O3|@5555,@4728,@4700 12574:O4|0,@12575,1,1 12575:O1|@5556 12576:O2|3,@12577 12577:S12|69734461746174797065203d 12578:O2|3,@12579 12579:S8|657154797065203d 12580:O2|3,@12581 12581:S7|6172697479203d 12582:O5|0,0,0,@12584,@12583 12583:O2|@12587,0 12584:O2|@12585,0 12585:O2|0,@12586 12586:O5|@10918,117,117,0,0 12587:O2|3,@12588 12588:S5|426f756e64 12589:O4|0,@12590,1,1 12590:O1|@5557 12591:O2|3,@12592 12592:S5|756964203d 12593:O2|3,@12594 12594:S13|616c6c6f77557064617465203d 12595:O5|0,0,0,@12597,@12596 12596:O2|@12600,0 12597:O2|@12598,0 12598:O2|0,@12599 12599:O5|@10918,116,116,0,0 12600:O2|3,@12601 12601:S4|46726565 12602:O5|0,0,0,@12604,@12603 12603:O2|@12607,0 12604:O2|@12605,0 12605:O2|0,@12606 12606:O5|@10918,118,118,0,0 12607:O2|3,@12608 12608:S6|54797065466e 12609:S16|7072696e742d7479706549644b696e64 12610:O1|@5560 12611:O5|0,0,0,@12613,@12612 12612:O2|@12616,0 12613:O2|@12614,0 12614:O2|0,@12615 12615:O5|@10918,77,77,0,0 12616:O2|3,@12617 12617:S9|46726f7a656e526566 12618:O5|0,0,0,@12613,@12619 12619:O2|@12620,0 12620:O2|3,@12621 12621:S11|5661726961626c65526566 12622:S13|7072696e742d706f7373526566 12623:S14|7072696e74706f73735265662829 12624:O5|0,0,0,@12626,@12625 12625:O2|@12629,0 12626:O2|@12627,0 12627:O2|0,@12628 12628:O5|@10420,1740,1740,0,0 12629:O2|3,@12630 12630:S7|4e6f745365656e 12631:O5|0,0,0,@12633,@12632 12632:O2|@12636,0 12633:O2|@12634,0 12634:O2|0,@12635 12635:O5|@10420,1739,1739,0,0 12636:O2|3,@12637 12637:S9|50726f636573736564 12638:S11|7072696e742d7374617465 12639:O1|@5562 12640:S26|5554494c49544945535f28292e6d61705461626c652832292d45 12641:O2|1,1 12642:O4|101,@10091,0,@12643 12643:O5|@10420,1748,0,1748,0 12644:O4|101,@10091,0,@12645 12645:O5|@10420,1749,0,1749,0 12646:O1|@5564 12647:S57|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229636f6e737472457128332965712d283129 12648:O4|101,@10091,0,@12649 12649:O5|@10420,93,0,93,0 12650:S54|545950455f5452454528292e636f6d707574654461746174797065457175616c697469657328322967656e457175616c697479283129 12651:O4|@4656,@10202,@12653,@12652 12652:O5|@10918,354,0,354,0 12653:S41|736574457175616c6974793a2063616e27742073657420657175616c69747920617474726962757465 12654:S32|5554494c49544945535f28292e6d61705461626c65283229656e746572283129 12655:S35|5554494c49544945535f28292e6d61705461626c6528322964656c6574652832292829 12656:S33|5554494c49544945535f28292e6d61705461626c652832296c6f6f6b7570283129 12657:S40|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229 12658:S43|545950455f5452454528292e636f6d707574654461746174797065457175616c6974696573283229283129 12659:S24|5554494c49544945535f28292e6d61705461626c65283229 12660:O1|@5570 12661:O5|0,0,0,@12663,@12662 12662:O2|@12666,0 12663:O2|@12664,0 12664:O2|0,@12665 12665:O5|@10420,1638,1638,0,0 12666:O2|3,@12667 12667:S5|4d61796265 12668:O5|0,0,0,@12670,@12669 12669:O2|@12673,0 12670:O2|@12671,0 12671:O2|0,@12672 12672:O5|@10420,1637,1637,0,0 12673:O2|3,@12674 12674:S2|4e6f 12675:O5|0,0,0,@12677,@12676 12676:O2|@12680,0 12677:O2|@12678,0 12678:O2|0,@12679 12679:O5|@10420,1636,1636,0,0 12680:O2|3,@12681 12681:S3|596573 12682:S9|7072696e742d747269 12683:S80|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657256616c466e283129 12684:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d616c6c56616c4e616d6573283129 12685:S81|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c756573283529617373416273446174612836295f2d646563456e762d656e74657254797065466e283129 12686:S57|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229 12687:S22|29206973206e6f7420616e20657863657074696f6e2e 12688:O4|@4656,@10202,@12690,@12689 12689:O5|@10866,1279,0,1279,0 12690:S41|70726f63657373457863657074696f6e3a206261646c792d666f726d65642070617273652d74726565 12691:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f63657373457863657074696f6e283129 12692:O1|@12693 12693:S36|412066756e6374696f6e2076616c7565206973206265696e67206469736361726465642e 12694:O1|@12695 12695:S36|41206e6f6e20756e69742076616c7565206973206265696e67206469736361726465642e 12696:S27|545950455f5452454528292e636865636b44697363617264283229 12697:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e74726965732832295f2d283129 12698:S35|5354525543545f56414c5328292e6d616b6553656c6563746564537472756374283329 12699:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f7079456e7472696573283229 12700:S71|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c75657328322970726f6365737354797065283229 12701:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833295f2d283129 12702:S27|545950455f5452454528292e6c696e6b5479706556617273283229 12703:S75|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e2833296e6577456e762d283329 12704:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329656e746572446563283129 12705:O4|@4729,@12707,0,@12706 12706:O5|@12708,75,0,75,0 12707:S14|556e657175616c4c656e67746873 12708:S20|2e2f62617369732f4c697374506169722e736d6c 12709:S45|54595045434845434b5f50415253455452454528292e7061737332283529666f756e644e656172283129283129 12710:O11|@5603,@10384,@4660,@4664,@10561,@4666,@10571,@4668,@10590,@4670,@10609 12711:O1|@5604 12712:S4|54797065 12713:S29|696e636c75646573206120667265652074797065207661726961626c65 12714:S32|697320616e20756e7265736f6c76656420666c657869626c65207265636f7264 12715:O4|@4656,@10202,@12717,@12716 12716:O5|@10420,2889,0,2889,0 12717:S25|67656e6572616c3a204e6f206d61746368696e672074797065 12718:S34|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729 12719:S44|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e28372967656e6572616c283329 12720:S46|545950455f5452454528292e616c6c6f7747656e6572616c69736174696f6e283729676976654572726f72283229 12721:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329646f56616c283129656e74657256616c73283129 12722:O1|@5612 12723:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329 12724:S60|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296e6f6e457870616e73697665283129 12725:S67|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352969734e6f6e526566436f6e7374727563746f72283129 12726:S88|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b54797065732832296e6577456e762d283129 12727:S8|5061747465726e3a 12728:S11|45787072657373696f6e3a 12729:O2|3,@12730 12730:S47|5061747465726e20616e642065787072657373696f6e206861766520696e636f6d70617469626c652074797065732e 12731:S51|526563757273697665206465636c61726174696f6e206973206e6f74206f662074686520666f726d2060666e206d6174636827 12732:S78|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c4465636c61726174696f6e283329636865636b5479706573283229 12733:S20|4c6973742e6d61705061727469616c2832292829 12734:S70|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834295f2d283129 12735:S73|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e2834296d7367466e283329 12736:O4|@4656,@10202,@12738,@12737 12737:O5|@10866,1676,0,1676,0 12738:S41|66696e644e616d65416e6450617474733a206261646c792d666f726d65642070617273652d74726565 12739:S46|436c617573616c2066756e6374696f6e20646f6573206e6f74206861766520616e7920706172616d65746572732e 12740:S65|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e283429 12741:O1|@5635 12742:S95|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e672831296d6b4964656e74283229283129 12743:S9|5661726961626c653a 12744:O2|3,@12745 12745:S62|54797065206f662066756e6374696f6e20646f6573206e6f74206d617463682074797065206f6620726563757273697665206170706c69636174696f6e2e 12746:S39|2068617320616c7265616479206265656e20626f756e6420696e207468697320636c617573652e 12747:S107|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c617573652831296d657373466e283329 12748:S109|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129626f6479456e762d283129 12749:O2|3,@12750 12750:S51|426f6479206f662066756e2062696e64696e6720646f6573206e6f74206d61746368207479706520636f6e73747261696e742e 12751:S7|436c617573653a 12752:O2|3,@12753 12753:S14|4f7468657220636c61757365733a 12754:O2|3,@12755 12755:S59|54797065206f6620636c6175736520646f6573206e6f74206d61746368207468652074797065206f662070726576696f757320636c61757365732e 12756:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e67283129 12757:S98|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342970726f6365737342696e64696e6728312970726f63657373436c61757365283129 12758:S84|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737346756e4465636c61726174696f6e28342966696e644e616d65416e645061747473283129 12759:S91|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f707954797065436f6e73283129 12760:O1|@5654 12761:S89|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129636f7079547970283129283129 12762:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737356616c756573283229636f707941436f6e7374727563746f72283129 12763:S58|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c75657328352961737341627344617461283629 12764:O1|@5659 12765:S85|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129283129 12766:S82|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e737472732832296c6571283129 12767:S17|4c697374506169722e6d61702833292829 12768:S76|54595045434845434b5f50415253455452454528292e706173733228352961737369676e56616c7565732835296173734162734461746128362967656e56616c7565436f6e73747273283229 12769:S50|4558504f52545f50415253455452454528292e6765744578706f727454726565283329636f6d6d6f6e50726f70732d283129 12770:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296173506172656e74283129 12771:O5|0,0,0,@12773,@12772 12772:O2|@12777,0 12773:O2|@12774,0 12774:O2|0,@12775 12775:O5|@12776,66,66,0,0 12776:S50|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4558504f52545f5041525345545245452e736d6c 12777:O2|3,@12778 12778:S5|4461746154 12779:O4|0,@12780,3,1 12780:O1|@5674 12781:O4|0,@12782,2,1 12782:O1|@5675 12783:O4|0,@12784,1,1 12784:O1|@5676 12785:S12|7072696e742d6f7074696f6e 12786:O5|0,0,0,@12773,@12787 12787:O2|@12788,0 12788:O2|3,@12789 12789:S4|4465636c 12790:O5|0,0,0,@12773,@12791 12791:O2|@12792,0 12792:O2|3,@12793 12793:S5|5479706542 12794:S11|7072696e742d6c54797065 12795:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745472656557697468427074283129 12796:O1|@5679 12797:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296173506172656e74283129 12798:S34|4578706f72745472656528292e676574537472696e67417354726565283529283129 12799:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e672833296765744e616d65283129 12800:S37|4578706f72745472656528292e6578706f72744e617669676174696f6e50726f7073283329 12801:O4|@5690,@10384,@12802,@4659 12802:O2|@5722,@12801 12803:S44|545950455f5452454528292e747970654578706f727454726565283329636f6d6d6f6e50726f70732d283129 12804:S40|545950455f5452454528292e747970654578706f7274547265652833296173506172656e74283129 12805:O2|@9493,0 12806:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d6765744e616d65283129 12807:S53|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d676574417267283129 12808:O1|@5705 12809:S40|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283129283129 12810:O4|@4658,@10397,0,@12811 12811:O5|@12812,88,0,88,0 12812:S34|6d6c736f757263652f4d4c436f6d70696c65722f4578706f7274547265652e736d6c 12813:S37|4578706f72745472656528292e6578706f72744c697374283229676574456e747279283329 12814:S54|545950455f5452454528292e747970654578706f7274547265652833296e61764e616d65416e64417267732d67657441726773283129 12815:S26|4578706f72745472656528292e6578706f72744c697374283229 12816:O1|@5710 12817:S54|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 12818:S53|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c6428332967657454797065283129 12819:S52|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c642833296765744c6162283129 12820:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283129 12821:S43|545950455f5452454528292e747970654578706f7274547265652833296578706f72744669656c64283329 12822:S29|545950455f5452454528292e747970654578706f727454726565283329 12823:S29|545950455f5452454528292e747970654578706f727454726565283129 12824:S65|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e6728332967657454797065283129 12825:O1|@5729 12826:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283129 12827:S84|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e737472732832296578706f7274436f6e73747273283229 12828:S68|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329676574436f6e73747273283129 12829:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283129 12830:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745479706542696e64696e67283329 12831:O1|@5740 12832:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d617463682833296173506172656e74283129 12833:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329283129 12834:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283129 12835:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744d61746368283329 12836:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657445787072283129 12837:S48|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296765744d617463686573283129 12838:S45|4558504f52545f50415253455452454528292e6765744578706f72745472656528332967657454797065283129 12839:O1|@5752 12840:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296173506172656e74283129 12841:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744f6654797065283129 12842:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727445786465632833296765744e616d65283129 12843:S66|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274457864656328332967657450726576696f7573457863283129 12844:O2|13,@11302 12845:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283129 12846:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744578646563283329 12847:O2|@5775,@4732 12848:O5|0,0,0,@12850,@12849 12849:O2|@12853,0 12850:O2|@12851,0 12851:O2|0,@12852 12852:O5|@10420,1279,1279,0,0 12853:O2|3,@12854 12854:S12|506172736554797065426164 12855:S19|7072696e742d74797065506172736574726565 12856:O4|0,@12857,3,1 12857:O1|@5777 12858:O2|3,@12859 12859:S9|6e616d654c6f63203d 12860:O2|3,@12861 12861:S18|666f756e64436f6e7374727563746f72203d 12862:O2|3,@12863 12863:S8|6172674c6f63203d 12864:O5|0,0,0,@12866,@12865 12865:O2|@12869,0 12866:O2|@12867,0 12867:O2|0,@12868 12868:O5|@10420,1264,1264,0,0 12869:O2|3,@12870 12870:S21|506172736554797065436f6e737472756374696f6e 12871:O2|3,@12872 12872:S9|61726754797065203d 12873:O5|0,0,0,@12875,@12874 12874:O2|@12878,0 12875:O2|@12876,0 12876:O2|0,@12877 12877:O5|@10420,1273,1273,0,0 12878:O2|3,@12879 12879:S17|50617273655479706546756e6374696f6e 12880:O2|3,@12881 12881:S7|7479706573203d 12882:O5|0,0,0,@12884,@12883 12883:O2|@12887,0 12884:O2|@12885,0 12885:O2|0,@12886 12886:O5|@10420,1278,1278,0,0 12887:O2|3,@12888 12888:S11|5061727365547970654964 12889:O2|3,@12890 12890:S8|66726f7a656e203d 12891:O5|0,0,0,@12893,@12892 12892:O2|@12896,0 12893:O2|@12894,0 12894:O2|0,@12895 12895:O5|@10420,1275,1275,0,0 12896:O2|3,@12897 12897:S17|5061727365547970654c6162656c6c6564 12898:O5|0,0,0,@12900,@12899 12899:O2|@12903,0 12900:O2|@12901,0 12901:O2|0,@12902 12902:O5|@10420,1271,1271,0,0 12903:O2|3,@12904 12904:S16|50617273655479706550726f64756374 12905:O5|0,0,0,@12907,@12906 12906:O2|@12910,0 12907:O2|@12908,0 12908:O2|0,@12909 12909:O5|@12776,235,235,0,0 12910:O2|3,@12911 12911:S13|46756e436f6e73747261696e74 12912:O4|0,@12913,3,1 12913:O1|@5780 12914:O2|3,@12915 12915:S9|65787054797065203d 12916:O5|0,0,0,@12918,@12917 12917:O2|@12921,0 12918:O2|@12919,0 12919:O2|0,@12920 12920:O5|@12776,233,233,0,0 12921:O2|3,@12922 12922:S8|46756e4964656e74 12923:S14|7072696e742d66756e456e747279 12924:O5|0,0,0,@12926,@12925 12925:O2|@12929,0 12926:O2|@12927,0 12927:O2|0,@12928 12928:O5|@12776,236,236,0,0 12929:O2|3,@12930 12930:S10|46756e496e6669786564 12931:O5|0,0,0,@12933,@12932 12932:O2|@12936,0 12933:O2|@12934,0 12934:O2|0,@12935 12935:O5|@12776,234,234,0,0 12936:O2|3,@12937 12937:S8|46756e5074726565 12938:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283129 12939:S63|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e7472792833296173506172656e74283129 12940:S52|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446756e456e747279283329 12941:O1|@5791 12942:S57|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f7274464228332961734368696c642d283129 12943:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f727454686973283129 12944:O1|@5795 12945:S72|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c6175736528332961734368696c642d283129 12946:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283129 12947:S61|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727446422833296578706f7274436c61757365283329 12948:S51|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727441436c61757365283329 12949:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283129 12950:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744642283329 12951:O1|@5810 12952:S60|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296173506172656e74283129 12953:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329676574457870283129 12954:S58|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c642833296765744c6162283129 12955:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283129 12956:S49|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72744669656c64283329 12957:O1|@5817 12958:S55|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745374727563744964656e74283129 12959:S44|4558504f52545f50415253455452454528292e6765744578706f727454726565283329676574457870283129 12960:O2|13,@11239 12961:O1|@5821 12962:S59|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f727456422833296578706f727454686973283129 12963:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283129 12964:S46|4558504f52545f50415253455452454528292e6765744578706f7274547265652833296578706f72745642283329 12965:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283329 12966:O2|@5861,@10857 12967:S35|4558504f52545f50415253455452454528292e6765744578706f727454726565283129 12968:O8|@5862,@4746,@4747,@4748,@4749,@4750,@4751,@4737 12969:O4|0,@12970,3,1 12970:O1|@5864 12971:O4|0,@12972,2,1 12972:O1|@5865 12973:O4|0,@12974,1,1 12974:O1|@5866 12975:O4|0,@12976,3,1 12976:O1|@5867 12977:O4|0,@12978,1,1 12978:O1|@5868 12979:S18|7072696e742d646174617479706562696e64 12980:S14|7072696e742d7479706562696e64 12981:O2|3,@12982 12982:S11|776974687479706573203d 12983:O2|3,@12984 12984:S10|747970656c697374203d 12985:O2|3,@12986 12986:S11|697341627354797065203d 12987:O2|3,@12988 12988:S16|657175616c697479537461747573203d 12989:O2|3,@12990 12990:S9|6465636c697374203d 12991:O5|0,0,0,@12993,@12992 12992:O2|@12997,0 12993:O2|@12994,0 12994:O2|0,@12995 12995:O5|@12996,144,144,0,0 12996:S49|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f424153455f50415253455f545245452e736d6c 12997:O2|3,@12998 12998:S22|41627344617461747970654465636c61726174696f6e 12999:O2|3,@13000 13000:S8|7365636f6e64203d 13001:O2|3,@13002 13002:S7|6669727374203d 13003:O5|0,0,0,@13005,@13004 13004:O2|@13008,0 13005:O2|@13006,0 13006:O2|0,@13007 13007:O5|@12996,186,186,0,0 13008:O2|3,@13009 13009:S7|416e64616c736f 13010:O4|0,@13011,3,1 13011:O1|@5871 13012:O2|3,@13013 13013:S9|6973496e666978203d 13014:O2|3,@13015 13015:S3|66203d 13016:O5|0,0,0,@13018,@13017 13017:O2|@13021,0 13018:O2|@13019,0 13019:O2|0,@13020 13020:O5|@12996,70,70,0,0 13021:O2|3,@13022 13022:S6|4170706c6963 13023:O4|0,@13024,3,1 13024:O1|@5872 13025:S15|7072696e742d6d6174636874726565 13026:O2|3,@13027 13027:S7|6d61746368203d 13028:O2|3,@13029 13029:S14|6c6973744c6f636174696f6e203d 13030:O5|0,0,0,@13032,@13031 13031:O2|@13035,0 13032:O2|@13033,0 13033:O2|0,@13034 13034:O5|@12996,182,182,0,0 13035:O2|3,@13036 13036:S4|43617365 13037:O4|0,@13038,3,1 13038:O1|@5874 13039:O4|0,@13040,2,1 13040:O1|@5875 13041:O4|0,@13042,1,1 13042:O1|@5876 13043:O4|0,@13044,3,1 13044:O1|@5877 13045:O4|0,@13046,2,1 13046:O1|@5878 13047:O4|0,@13048,1,1 13048:O1|@5879 13049:O2|3,@13050 13050:S8|7468656e7074203d 13051:O2|3,@13052 13052:S11|7468656e427265616b203d 13053:O2|3,@13054 13054:S8|656c73657074203d 13055:O2|3,@13056 13056:S11|656c7365427265616b203d 13057:O5|0,0,0,@13058,@11936 13058:O2|@13059,0 13059:O2|0,@13060 13060:O5|@12996,74,74,0,0 13061:O2|3,@13062 13062:S7|676976656e203d 13063:O5|0,0,0,@13065,@13064 13064:O2|@13068,0 13065:O2|@13066,0 13066:O2|0,@13067 13067:O5|@12996,118,118,0,0 13068:O2|3,@13069 13069:S10|436f6e73747261696e74 13070:O2|3,@13071 13071:S9|6f6c6454797065203d 13072:O2|3,@13073 13073:S8|6f6c644c6f63203d 13074:O2|3,@13075 13075:S9|6e657754797065203d 13076:O2|3,@13077 13077:S8|6e65774c6f63203d 13078:O5|0,0,0,@13080,@13079 13079:O2|@13083,0 13080:O2|@13081,0 13081:O2|0,@13082 13082:O5|@12996,154,154,0,0 13083:O2|3,@13084 13084:S19|44617461747970655265706c69636174696f6e 13085:O1|@5880 13086:O5|0,0,0,@13088,@13087 13087:O2|@13091,0 13088:O2|@13089,0 13089:O2|0,@13090 13090:O5|@10918,502,502,0,0 13091:O2|3,@13092 13092:S5|496e666978 13093:O5|0,0,0,@13095,@13094 13094:O2|@13098,0 13095:O2|@13096,0 13096:O2|0,@13097 13097:O5|@10918,503,503,0,0 13098:O2|3,@13099 13099:S6|496e66697852 13100:O5|0,0,0,@13102,@13101 13101:O2|@13105,0 13102:O2|@13103,0 13103:O2|0,@13104 13104:O5|@10918,504,504,0,0 13105:O2|3,@13106 13106:S6|4e6f6e666978 13107:S14|7072696e742d696e666978697479 13108:O4|0,@13109,3,1 13109:O1|@5881 13110:O2|3,@13111 13111:S7|746c697374203d 13112:O2|3,@13113 13113:S5|666978203d 13114:O5|0,0,0,@13116,@13115 13115:O2|@13119,0 13116:O2|@13117,0 13117:O2|0,@13118 13118:O5|@12996,165,165,0,0 13119:O2|3,@13120 13120:S9|446972656374697665 13121:O5|0,0,0,@13123,@13122 13122:O2|@13126,0 13123:O2|@13124,0 13124:O2|0,@13125 13125:O5|@12996,200,200,0,0 13126:O2|3,@13127 13127:S9|456d70747954726565 13128:S12|7072696e742d657862696e64 13129:O5|0,0,0,@13131,@13130 13130:O2|@13134,0 13131:O2|@13132,0 13132:O2|0,@13133 13133:O5|@12996,170,170,0,0 13134:O2|3,@13135 13135:S13|45784465636c61726174696f6e 13136:O4|0,@13137,3,1 13137:O1|@5884 13138:O4|0,@13139,2,1 13139:O1|@5885 13140:O4|0,@13141,1,1 13141:O1|@5886 13142:O5|0,0,0,@13144,@13143 13143:O2|@13147,0 13144:O2|@13145,0 13145:O2|0,@13146 13146:O5|@12996,163,163,0,0 13147:O2|3,@13148 13148:S6|457870536571 13149:O4|0,@13150,3,1 13150:O1|@5887 13151:O2|3,@13152 13152:S9|6d617463686573203d 13153:O5|0,0,0,@13155,@13154 13154:O2|@13158,0 13155:O2|@13156,0 13156:O2|0,@13157 13157:O5|@12996,129,129,0,0 13158:O2|3,@13159 13159:S2|466e 13160:S14|7072696e742d6676616c62696e64 13161:O2|@13163,@13162 13162:O2|@10236,@13165 13163:O2|3,@13164 13164:S7|6170706c79203d 13165:O2|@12432,@12425 13166:O2|3,@13167 13167:S10|696d706c69636974203d 13168:O2|3,@13169 13169:S10|6578706c69636974203d 13170:O2|3,@13171 13171:S5|646563203d 13172:O5|0,0,0,@13174,@13173 13173:O2|@13177,0 13174:O2|@13175,0 13175:O2|0,@13176 13176:O5|@12996,97,97,0,0 13177:O2|3,@13178 13178:S14|46756e4465636c61726174696f6e 13179:O2|3,@13180 13180:S8|6872756c6573203d 13181:O5|0,0,0,@13183,@13182 13182:O2|@13186,0 13183:O2|@13184,0 13184:O2|0,@13185 13185:O5|@12996,174,174,0,0 13186:O2|3,@13187 13187:S10|48616e646c6554726565 13188:O4|0,@13189,3,1 13189:O1|@5891 13190:O4|0,@13191,2,1 13191:O1|@5892 13192:S14|7072696e742d66756e6374696f6e 13193:O4|0,@13194,3,1 13194:O1|@5893 13195:O2|3,@13196 13196:S10|706f737369626c65203d 13197:O5|0,0,0,@13199,@13198 13198:O2|@13202,0 13199:O2|@13200,0 13200:O2|0,@13201 13201:O5|@12996,48,48,0,0 13202:O2|3,@13203 13203:S5|4964656e74 13204:O4|0,@13205,3,1 13205:O1|@5894 13206:O4|0,@13207,3,1 13207:O1|@5896 13208:O2|3,@13209 13209:S10|76616c4f72506174203d 13210:O2|3,@13211 13211:S14|66756c6c4c6f636174696f6e203d 13212:O5|0,0,0,@13214,@13213 13213:O2|@13217,0 13214:O2|@13215,0 13215:O2|0,@13216 13216:O5|@12996,190,190,0,0 13217:O2|3,@13218 13218:S8|4c6162656c6c6564 13219:O2|3,@13220 13220:S5|766172203d 13221:O2|3,@13222 13222:S9|7061747465726e203d 13223:O5|0,0,0,@13225,@13224 13224:O2|@13228,0 13225:O2|@13226,0 13226:O2|0,@13227 13227:O5|@12996,124,124,0,0 13228:O2|3,@13229 13229:S7|4c617965726564 13230:S15|7072696e742d706172736574726565 13231:O4|0,@13232,3,1 13232:O1|@5898 13233:O2|3,@13234 13234:S10|656c656d656e7473203d 13235:O5|0,0,0,@13237,@13236 13236:O2|@13240,0 13237:O2|@13238,0 13238:O2|0,@13239 13239:O5|@12996,198,198,0,0 13240:O2|3,@13241 13241:S4|4c697374 13242:O4|0,@13243,3,1 13243:O1|@5899 13244:O2|3,@13245 13245:S9|6c69746572616c203d 13246:O2|3,@13247 13247:S11|636f6e766572746572203d 13248:O5|0,0,0,@13250,@13249 13249:O2|@13253,0 13250:O2|@13251,0 13251:O2|0,@13252 13252:O5|@12996,64,64,0,0 13253:O2|3,@13254 13254:S7|4c69746572616c 13255:O4|0,@13256,3,1 13256:O1|@5901 13257:O4|0,@13258,2,1 13258:O1|@5902 13259:O4|0,@13260,1,1 13260:O1|@5903 13261:O4|0,@13262,3,1 13262:O1|@5905 13263:O4|0,@13264,2,1 13264:O1|@5906 13265:O4|0,@13266,1,1 13266:O1|@5907 13267:O4|0,@13268,3,1 13268:O1|@5908 13269:O4|0,@13270,3,1 13270:O1|@5909 13271:O2|3,@13272 13272:S12|76617273496e426f6479203d 13273:O2|3,@13274 13274:S9|69734c6f63616c203d 13275:O2|3,@13276 13276:S6|64656373203d 13277:O5|0,0,0,@13279,@13278 13278:O2|@13282,0 13279:O2|@13280,0 13280:O2|0,@13281 13281:O5|@12996,132,132,0,0 13282:O2|3,@13283 13283:S8|4c6f63616c646563 13284:O4|0,@13285,2,3 13285:O1|@5910 13286:O4|0,@13287,3,1 13287:O1|@5911 13288:O4|0,@13289,3,1 13289:O1|@5912 13290:O4|@5913,@4740,@4701,@4695 13291:O2|3,@13292 13292:S8|7369676e6174203d 13293:O5|0,0,0,@13295,@13294 13294:O2|@13298,0 13295:O2|@13296,0 13296:O2|0,@13297 13297:O5|@10918,175,175,0,0 13298:O2|3,@13299 13299:S6|537472756374 13300:S16|7072696e742d73747275637456616c73 13301:O3|@5915,@4701,@4726 13302:O1|@5918 13303:O2|@5919,@4743 13304:O1|@5921 13305:S18|566563746f722e7072657474792833292d45 13306:S16|566563746f722e707265747479283329 13307:S17|7072696e742d6e616d65644f7074696f6e 13308:O2|@10685,@13309 13309:O2|@10236,@13310 13310:O2|@13311,@12428 13311:O2|3,@13312 13312:S6|68617368203d 13313:O2|3,@13314 13314:S9|656e7472696573203d 13315:O5|0,0,0,@13317,@13316 13316:O2|@13320,0 13317:O2|@13318,0 13318:O2|0,@13319 13319:O5|@10032,74,74,0,0 13320:O2|3,@13321 13321:S6|46726f7a656e 13322:O1|@5927 13323:S17|41727261792e7072657474792833292d45 13324:S15|41727261792e707265747479283329 13325:S11|7072696e742d6172726179 13326:O4|0,@13327,2,1 13327:O1|@5932 13328:O4|0,@13329,1,1 13329:O1|@5933 13330:O2|3,@13331 13331:S6|75736564203d 13332:O5|0,0,0,@13334,@13333 13333:O2|@13337,0 13334:O2|@13335,0 13335:O2|0,@13336 13336:O5|@10032,68,68,0,0 13337:O2|3,@13338 13338:S4|48617368 13339:S10|7072696e742d68617368 13340:S11|7072696e74686173682829 13341:O1|@5934 13342:O5|0,0,0,@13344,@13343 13343:O2|@13347,0 13344:O2|@13345,0 13345:O2|0,@13346 13346:O5|@10032,52,52,0,0 13347:O2|3,@13348 13348:S4|4e6f6e65 13349:O5|0,0,0,@13344,@13350 13350:O2|@13351,0 13351:O2|3,@13352 13352:S4|536f6d65 13353:S18|7072696e746e616d65644f7074696f6e2829 13354:O4|0,@13355,3,1 13355:O1|@5936 13356:O4|0,@13357,2,1 13357:O1|@5937 13358:S15|7072696e742d756e6976657273616c 13359:O5|0,0,0,@13361,@13360 13360:O2|@13365,0 13361:O2|@13362,0 13362:O2|0,@13363 13363:O5|@13364,49,49,0,0 13364:S37|6d6c736f757263652f4d4c436f6d70696c65722f556e6976657273616c5461626c652e4d4c 13365:O2|3,@13366 13366:S5|5461626c65 13367:S15|7072696e742d756e69765461626c65 13368:O2|@10685,@13369 13369:O2|@10236,@13370 13370:O2|@13371,@12428 13371:O2|3,@13372 13372:S11|7479706549644d6170203d 13373:O2|3,@13374 13374:S5|746162203d 13375:O2|3,@13376 13376:S17|6669727374426f756e64496e646578203d 13377:O2|3,@13378 13378:S10|626f756e64496473203d 13379:O5|0,0,0,@13381,@13380 13380:O2|@13384,0 13381:O2|@13382,0 13382:O2|0,@13383 13383:O5|@10918,208,208,0,0 13384:O2|3,@13385 13385:S10|5369676e617475726573 13386:S16|7072696e742d7369676e617475726573 13387:O4|0,@13388,3,1 13388:O1|@5938 13389:O4|0,@13390,3,1 13390:O1|@5939 13391:O4|0,@13392,3,1 13392:O1|@5940 13393:O4|0,@13394,3,1 13394:O1|@5941 13395:O4|0,@13396,3,1 13396:O1|@5942 13397:O4|0,@13398,3,1 13398:O1|@5943 13399:O2|3,@13400 13400:S11|7661726961626c6573203d 13401:O2|3,@13402 13402:S13|74797065636f6e73747273203d 13403:O2|3,@13404 13404:S12|73747275637475726573203d 13405:O5|0,0,0,@13407,@13406 13406:O2|@13410,0 13407:O2|@13408,0 13408:O2|0,@13409 13409:O5|@12996,107,107,0,0 13410:O2|3,@13411 13411:S7|4f70656e446563 13412:O5|0,0,0,@13414,@13413 13413:O2|@13417,0 13414:O2|@13415,0 13415:O2|0,@13416 13416:O5|@12996,188,188,0,0 13417:O2|3,@13418 13418:S6|4f72656c7365 13419:O5|0,0,0,@13421,@13420 13420:O2|@13424,0 13421:O2|@13422,0 13422:O2|0,@13423 13423:O5|@12996,203,203,0,0 13424:O2|3,@13425 13425:S13|506172656e7468657369736564 13426:O5|0,0,0,@13427,@12124 13427:O2|@13428,0 13428:O2|0,@13429 13429:O5|@12996,172,172,0,0 13430:O2|3,@13431 13431:S9|6c616254797065203d 13432:O5|0,0,0,@13434,@13433 13433:O2|@13437,0 13434:O2|@13435,0 13435:O2|0,@13436 13436:O5|@12996,195,195,0,0 13437:O2|3,@13438 13438:S8|53656c6563746f72 13439:O4|0,@13440,3,1 13440:O1|@5944 13441:O5|0,0,0,@13443,@13442 13442:O2|@13446,0 13443:O2|@13444,0 13444:O2|0,@13445 13445:O5|@12996,85,85,0,0 13446:O2|3,@13447 13447:S9|5475706c6554726565 13448:O5|0,0,0,@13450,@13449 13449:O2|@13453,0 13450:O2|@13451,0 13451:O2|0,@13452 13452:O5|@12996,142,142,0,0 13453:O2|3,@13454 13454:S15|547970654465636c61726174696f6e 13455:O5|0,0,0,@13457,@13456 13456:O2|@13460,0 13457:O2|@13458,0 13458:O2|0,@13459 13459:O5|@12996,202,202,0,0 13460:O2|3,@13461 13461:S4|556e6974 13462:S13|7072696e742d76616c62696e64 13463:O5|0,0,0,@13465,@13464 13464:O2|@13468,0 13465:O2|@13466,0 13466:O2|0,@13467 13467:O5|@12996,87,87,0,0 13468:O2|3,@13469 13469:S14|56616c4465636c61726174696f6e 13470:O4|0,@13471,3,1 13471:O1|@5948 13472:O4|0,@13473,2,1 13473:O1|@5949 13474:O4|0,@13475,1,1 13475:O1|@5950 13476:O2|3,@13477 13477:S12|627265616b506f696e74203d 13478:O5|0,0,0,@13480,@13479 13479:O2|@13483,0 13480:O2|@13481,0 13481:O2|0,@13482 13482:O5|@12996,178,178,0,0 13483:O2|3,@13484 13484:S5|5768696c65 13485:O5|0,0,0,@13487,@13486 13486:O2|@13490,0 13487:O2|@13488,0 13488:O2|0,@13489 13489:O5|@12996,201,201,0,0 13490:O2|3,@13491 13491:S8|57696c6443617264 13492:O1|@5951 13493:O4|0,@13494,3,1 13494:O1|@5952 13495:O4|0,@13496,3,1 13496:O1|@5953 13497:O4|0,@13498,2,2 13498:O1|@5954 13499:S17|7072696e742d74797065566172466f726d 13500:O2|3,@13501 13501:S6|74636f6e203d 13502:O2|3,@13503 13503:S10|6973457174797065203d 13504:O2|3,@13505 13505:S9|66756c6c4c6f63203d 13506:O2|3,@13507 13507:S9|64656354797065203d 13508:O5|0,0,0,@13510,@13509 13509:O2|@13513,0 13510:O2|@13511,0 13511:O2|0,@13512 13512:O5|@12996,242,242,0,0 13513:O2|3,@13514 13514:S8|5479706542696e64 13515:O1|@5955 13516:O4|0,@13517,2,4 13517:O1|@5956 13518:O4|0,@13519,3,1 13519:O1|@5957 13520:O4|0,@13521,3,1 13521:O1|@5958 13522:O2|3,@13523 13523:S8|69644c6f636e203d 13524:O2|3,@13525 13525:S11|636f6e73747256616c203d 13526:O2|3,@13527 13527:S12|636f6e7374724e616d65203d 13528:O2|3,@13529 13529:S11|636f6e737472417267203d 13530:O4|0,@13531,3,1 13531:O1|@5959 13532:O4|0,@13533,2,2 13533:O1|@5960 13534:O2|3,@13535 13535:S9|636f6e73747273203d 13536:O5|0,0,0,@13538,@13537 13537:O2|@13541,0 13538:O2|@13539,0 13539:O2|0,@13540 13540:O5|@12996,254,254,0,0 13541:O2|3,@13542 13542:S12|446174617479706542696e64 13543:O2|@5961,@4748 13544:O4|0,@13545,3,1 13545:O1|@5962 13546:O4|0,@13547,3,1 13547:O1|@5963 13548:O4|0,@13549,2,1 13549:O1|@5964 13550:O4|0,@13551,1,1 13551:O1|@5965 13552:O4|0,@13553,3,1 13553:O1|@5966 13554:O2|3,@13555 13555:S6|76617273203d 13556:O2|3,@13557 13557:S9|72657354797065203d 13558:O5|0,0,0,@13560,@13559 13559:O2|@13563,0 13560:O2|@13561,0 13561:O2|0,@13562 13562:O5|@12996,279,279,0,0 13563:O2|3,@13564 13564:S9|4d6174636854726565 13565:O2|@5967,@4748 13566:O4|0,@13567,3,1 13567:O1|@5968 13568:O4|0,@13569,3,1 13569:O1|@5969 13570:O2|3,@13571 13571:S10|70726576696f7573203d 13572:O2|3,@13573 13573:S8|6f6654797065203d 13574:O5|0,0,0,@13576,@13575 13575:O2|@13579,0 13576:O2|@13577,0 13577:O2|0,@13578 13578:O5|@12996,266,266,0,0 13579:O2|3,@13580 13580:S6|457842696e64 13581:O2|@5970,@4752 13582:O4|0,@13583,3,1 13583:O1|@5971 13584:S16|7072696e742d6676616c636c61757365 13585:O4|0,@13586,3,1 13586:O1|@5973 13587:O4|0,@13588,1,1 13588:O1|@5974 13589:O4|0,@13590,3,1 13590:O1|@5975 13591:O2|3,@13592 13592:S12|6e756d4f665061747473203d 13593:O2|3,@13594 13594:S10|66756e6374566172203d 13595:O2|3,@13596 13596:S9|636c6175736573203d 13597:O5|0,0,0,@13599,@13598 13598:O2|@13602,0 13599:O2|@13600,0 13600:O2|0,@13601 13601:O5|@12996,222,222,0,0 13602:O2|3,@13603 13603:S8|4656616c42696e64 13604:O2|@5976,@4748 13605:O4|0,@13606,3,1 13606:O1|@5977 13607:O4|0,@13608,2,1 13608:O1|@5978 13609:O4|0,@13610,1,1 13610:O1|@5979 13611:O4|0,@13612,3,1 13612:O1|@5981 13613:O4|0,@13614,3,1 13614:O1|@5982 13615:O2|3,@13616 13616:S7|6964656e74203d 13617:O2|3,@13618 13618:S12|636f6e73747261696e74203d 13619:O2|3,@13620 13620:S6|6c696e65203d 13621:O5|0,0,0,@13623,@13622 13622:O2|@13626,0 13623:O2|@13624,0 13624:O2|0,@13625 13625:O5|@12996,233,233,0,0 13626:O2|3,@13627 13627:S10|4656616c436c61757365 13628:O2|@5983,@4748 13629:O4|0,@13630,3,1 13630:O1|@5984 13631:O4|0,@13632,3,1 13632:O1|@5985 13633:O2|3,@13634 13634:S13|6973526563757273697665203d 13635:O5|0,0,0,@13637,@13636 13636:O2|@13640,0 13637:O2|@13638,0 13638:O2|0,@13639 13639:O5|@12996,206,206,0,0 13640:O2|3,@13641 13641:S7|56616c42696e64 13642:O1|@5986 13643:S50|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e2832295f2d283129 13644:S28|535452554354555245535f28292e7061737332537472756374283829 13645:S59|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329283129 13646:S10|53747275637475726520 13647:S56|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332973456e762d283329 13648:S29|535452554354555245535f28292e6572726f724d73674e656172283529 13649:S61|535452554354555245535f28292e7061737332537472756374283829706173733253747275637475726544656328332963617074757265496473283129 13650:S48|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329 13651:O1|@5994 13652:O1|@5995 13653:S69|535452554354555245535f28292e70617373325374727563742838297061737332537472756374757265446563283329706173733253747275637475726542696e64283629 13654:S35|535452554354555245535f28292e6d61726b56616c7341734578706f72746564283129 13655:S56|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c6465632832296c6f63616c456e762d283129 13656:O1|@6002 13657:S55|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229626f6479456e762d283129 13658:S44|535452554354555245535f28292e706173733253747275637428382970617373324c6f63616c646563283229 13659:S45|535452554354555245535f28292e7061737332537472756374283829706173733253696e676c65746f6e283229 13660:S39|535452554354555245535f28292e73747275637456616c756528382974797065456e762d283129 13661:S52|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e744d616b65547970654964283129 13662:O4|11,@9448,0,@13663 13663:O5|@13664,1743,0,1743,0 13664:S34|6d6c736f757263652f4d4c436f6d70696c65722f535452554354555245535f2e4d4c 13665:S54|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129283129 13666:S51|535452554354555245535f28292e73747275637456616c756528382973636f6e73747261696e74547970654964456e76283129 13667:O2|@6013,@13668 13668:O3|0,@13882,@13881 13669:O1|@6014 13670:O5|0,0,0,@13672,@13671 13671:O2|@13676,0 13672:O2|@13673,0 13673:O2|0,@13674 13674:O5|@13675,463,463,0,0 13675:S34|6d6c736f757263652f4d4c436f6d70696c65722f5349474e4154555245532e736d6c 13676:O2|3,@13677 13677:S8|46726565536c6f74 13678:O5|0,0,0,@13680,@13679 13679:O2|@13683,0 13680:O2|@13681,0 13681:O2|0,@13682 13682:O5|@13675,461,461,0,0 13683:O2|3,@13684 13684:S10|53686172656457697468 13685:O5|0,0,0,@13687,@13686 13686:O2|@13690,0 13687:O2|@13688,0 13688:O2|0,@13689 13689:O5|@13675,464,464,0,0 13690:O2|3,@13691 13691:S5|556e736574 13692:O4|0,@13693,3,1 13693:O1|@6015 13694:O2|3,@13695 13695:S14|6465736372697074696f6e73203d 13696:O2|3,@13697 13697:S9|626f756e644964203d 13698:O5|0,0,0,@13700,@13699 13699:O2|@13703,0 13700:O2|@13701,0 13701:O2|0,@13702 13702:O5|@13675,462,462,0,0 13703:O2|3,@13704 13704:S12|5661726961626c65536c6f74 13705:S11|7072696e742d7661724964 13706:O2|@6016,@13707 13707:O2|@6121,@13706 13708:S54|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e7465722836292d45 13709:O1|@6019 13710:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529737472756374456e762d283129 13711:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629283129 13712:S39|2920697320616c72656164792070726573656e7420696e2074686973207369676e61747572652e 13713:S55|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283129283129 13714:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529636865636b416e64456e746572283629 13715:S28|5349474e41545552455328292e6572726f724d73674e656172283529 13716:O1|@6025 13717:S7|6f283229283129 13718:O1|@6028 13719:O1|@6029 13720:O4|@4656,@10202,@13722,@13721 13721:O5|@13675,991,0,991,0 13722:S29|456e746572696e672066756e63746f7220696e207369676e6174757265 13723:O1|@6030 13724:O4|@4656,@10202,@13726,@13725 13725:O5|@13675,990,0,990,0 13726:S31|456e746572696e67207369676e617475726520696e207369676e6174757265 13727:O1|@6031 13728:O4|@4656,@10202,@13730,@13729 13729:O5|@13675,989,0,989,0 13730:S28|456e746572696e672066697869747920696e207369676e6174757265 13731:S60|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657256616c283129 13732:S58|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f636573735369672833296d616b654964283429 13733:O4|11,@9448,0,@13734 13734:O5|@9997,138,0,138,0 13735:O4|103,@10033,@13737,@13736 13736:O5|@13738,93,0,93,0 13737:S39|417474656d707420746f207570646174652061206c6f636b656420737472657463684172726179 13738:S35|6d6c736f757263652f4d4c436f6d70696c65722f5374726574636841727261792e4d4c 13739:S39|5349474e41545552455328292e73696756616c2836296d616b655661726961626c654964283629 13740:S22|5374726574636841727261792e757064617465283329 13741:O1|@6041 13742:S37|545950455f5452454528292e747970655065726d697473457175616c697479283129283129 13743:O1|@6042 13744:O4|@4656,@10202,@13746,@13745 13745:O5|@13675,493,0,493,0 13746:S20|7265616c49643a2053686172696e67206c6f6f70 13747:O1|@6043 13748:O1|@6044 13749:O1|@6045 13750:O1|@6046 13751:O4|@4656,@10202,@13753,@13752 13752:O5|@13675,1261,0,1261,0 13753:S30|696e7465726e616c4d61703a204e6f7420626f756e64206f722046726565 13754:S64|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332966696e64457175616c697479283129 13755:S66|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329656e74657246696e616c54797065283129 13756:S35|5349474e41545552455328292e67697665537065634572726f72283329283129283129 13757:S32|5349474e41545552455328292e67697665537065634572726f72283329283129 13758:S12|53706563696679696e672022 13759:S13|2220697320696c6c6567616c2e 13760:O1|@6063 13761:S52|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329283129 13762:O1|@6064 13763:S36|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f283529 13764:O4|4,@9489,0,@13765 13765:O5|@10000,101,0,101,0 13766:S37|5349474e41545552455328292e73696756616c283629747970654964456e76283129283129 13767:S34|5349474e41545552455328292e73696756616c283629747970654964456e76283129 13768:S14|20696e207369676e61747572652e 13769:S31|5349474e41545552455328292e676976654572726f72283329283129283129 13770:S66|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e742833296c6f6f6b75704661696c757265283129283129 13771:O4|@4658,@10397,0,@13772 13772:O5|@13675,709,0,709,0 13773:S49|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329 13774:O4|@4656,@10202,@13776,@13775 13775:O5|@13675,1141,0,1141,0 13776:S21|6e65774163636573733a204e6f7420466f726d616c 13777:S77|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657254797065283129 13778:S79|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e746572537472756374283129 13779:S76|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229656e74657256616c283129 13780:O1|@6084 13781:S49|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529762d283129 13782:S59|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d61704964732d6d61704964283129 13783:S65|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329696e636c756465536967457870283229 13784:S11|5369676e61747572652028 13785:O1|@6089 13786:O4|11,@9448,0,@13787 13787:O5|@13675,177,0,177,0 13788:S35|5349474e41545552455328292e756e646566696e65645369676e61747572652d283129 13789:S44|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c7565283529 13790:S66|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e65774964732832296e65774d6170283129 13791:O4|@4656,@10202,@13793,@13792 13792:O5|@13675,778,0,778,0 13793:S28|4d617020646f6573206e6f742072657475726e20426f756e64204964 13794:S57|5349474e41545552455328292e73696756616c2836297369676e61747572654964656e7456616c75652835296d616b654e6577496473283229 13795:S32|5349474e41545552455328292e73696756616c2836296c6f6f6b536967283229 13796:S69|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f63657373536967283329705374727563742832296e6577456e762d283129 13797:S59|5349474e41545552455328292e73696756616c2836296d616b65536967496e746f28352970726f6365737353696728332970537472756374283229 13798:S47|5349474e41545552455328292e73696756616c2836296170706c7953686172696e67436f6e73747261696e74283329 13799:S50|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e745368617265283129283129 13800:O2|@10391,@13801 13801:O2|@13803,@13802 13802:O2|@10236,@13804 13803:O2|3,@9571 13804:O2|@13805,0 13805:O2|3,@13806 13806:S58|546865207479706520636f6e7374727563746f72732074616b6520646966666572656e74206e756d62657273206f6620617267756d656e74732e 13807:O2|3,@13808 13808:S9|776974682074797065 13809:O2|3,@13810 13810:S17|43616e6e6f742073686172652074797065 13811:O2|3,@13812 13812:S21|697320616c726561647920646566696e6564206173 13813:O4|@4656,@10202,@13815,@13814 13814:O5|@13675,504,0,504,0 13815:S5|6973566172 13816:S35|5349474e41545552455328292e73696756616c28362973686172655479706573283829 13817:O4|@4656,@10202,@13819,@13818 13818:O5|@13675,552,0,552,0 13819:S30|6c696e6b466c657869626c65547970654964733a206e6f7420626f756e64 13820:O4|@4656,@10202,@13822,@13821 13821:O5|@13675,540,0,540,0 13822:S38|6c696e6b466c657869626c65547970654964733a20646966666572656e742061726974696573 13823:O4|@4656,@10202,@13825,@13824 13824:O5|@13675,550,0,550,0 13825:S33|6c696e6b466c657869626c65547970654964733a206e6f74207661726961626c65 13826:S44|5349474e41545552455328292e73696756616c2836296c696e6b466c657869626c6554797065496473283229 13827:S25|5349474e41545552455328292e7072696e7444657363283329 13828:S62|5349474e41545552455328292e73696756616c2836297368617265547970657328382963616e74536861726528312973686f7754797065436f6e73283229 13829:S41|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329 13830:O1|@6112 13831:S62|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283229283129 13832:S59|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129736f72746564456e74726965732d283129 13833:O1|@6114 13834:O4|@4658,@10397,0,@13835 13835:O5|@13675,676,0,676,0 13836:S46|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229676574283429 13837:S56|5349474e41545552455328292e73696756616c28362973747275637475726553686172696e67283329736861726553747275637473283129 13838:S54|5349474e41545552455328292e73696756616c2836296765744d617463686564456e7472696573283129676574457175616c73283429 13839:S40|5349474e41545552455328292e73696756616c28362973747275637473416e645479706573283229 13840:S59|5349474e41545552455328292e73696756616c2836297369676e61747572655768657265547970652837296c6f6f6b75704661696c757265283129 13841:S28|5349474e41545552455328292e676976654572726f72283329283129 13842:S46|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729283129 13843:S2|6060 13844:O2|3,@13845 13845:S24|2068617320616c7265616479206265656e2073657420746f 13846:O2|3,@13847 13847:S30|43616e6e6f74206170706c792074797065207265616c69736174696f6e2e 13848:O4|@4656,@10202,@13850,@13849 13849:O5|@13675,937,0,937,0 13850:S12|736574576865726554797065 13851:O1|@6128 13852:O1|@6129 13853:S16|697320616e2065717479706520627574 13854:S25|646f6573206e6f74207065726d697420657175616c6974792e 13855:O4|@4656,@10202,@13850,@13856 13856:O5|@13675,935,0,935,0 13857:S17|6973206120646174617479706520627574 13858:S21|6973206e6f7420612073696d706c6520747970652e 13859:S64|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e7453657428322974797065456e762d283129 13860:S56|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229283129 13861:S43|5349474e41545552455328292e73696756616c2836297369676e6174757265576865726554797065283729 13862:S53|5349474e41545552455328292e73696756616c2836297369676e617475726557686572655479706528372963616e74536574283229 13863:O1|@6134 13864:S44|434f5049455228292e6765744e65787452756e74696d654f66667365742831296765744f6666736574283329 13865:S36|5349474e41545552455328292e73696756616c2836296d617046756e6374696f6e283129 13866:O4|@4656,@10202,@13868,@13867 13867:O5|@13675,1350,0,1350,0 13868:S21|6d61704964733a636f707954797065436f6e737472 13869:S40|5349474e41545552455328292e73696756616c2836296d6170496473283229636f70794964283129 13870:O1|@6141 13871:S49|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129283129 13872:O1|@6142 13873:S46|5349474e41545552455328292e73696756616c2836296d6170496473283229636f7069656445717569762d283129 13874:O1|@6143 13875:S8|73686172696e6720 13876:O4|@4656,@10202,@13878,@13877 13877:O5|@13675,1376,0,1376,0 13878:S6|6d6170496473 13879:S22|5349474e41545552455328292e73696756616c283629 13880:S31|5349474e41545552455328292e73696756616c2836296d6170496473283229 13881:O10|0,0,0,0,0,0,0,0,0,0 13882:O2|@5033,10 13883:S40|535452554354555245535f28292e73747275637456616c75652838296c6f63616c456e762d283129 13884:O1|@6150 13885:S38|535452554354555245535f28292e73747275637456616c75652838296e6577456e762d283129 13886:O1|@6156 13887:O4|@4656,@10202,@13889,@13888 13888:O5|@13664,1574,0,1574,0 13889:S21|46756e63746f7220696e2053747275637420456e64 13890:O1|@6157 13891:O4|@4656,@10202,@13893,@13892 13892:O5|@13664,1573,0,1573,0 13893:S23|5369676e617475726520696e2053747275637420456e64 13894:O1|@6158 13895:O1|@6162 13896:O1|@6161 13897:S45|535452554354555245535f28292e6d616b65436f7079416374696f6e732831296d61746368456e747279283329 13898:S40|535452554354555245535f28292e73747275637456616c7565283829656e7465724974656d283429 13899:S32|535452554354555245535f28292e6d616b65436f7079416374696f6e73283129 13900:S57|535452554354555245535f28292e73747275637456616c75652838296d61746368416374696f6e737c6d61746368526573756c74732d283129 13901:S9|46756e63746f722028 13902:S32|535452554354555245535f28292e676976654572726f72283329283129283129 13903:O6|@13668,@10999,0,0,@13785,0 13904:S29|535452554354555245535f28292e676976654572726f72283329283129 13905:S48|535452554354555245535f28292e73747275637456616c7565283829676574436f6d62696e6564547970654964283129 13906:S46|535452554354555245535f28292e73747275637456616c7565283829725369672d6d617463686564496473283129 13907:S42|535452554354555245535f28292e73747275637456616c7565283829725369672d6f6c644d6170283129 13908:S42|535452554354555245535f28292e6d61746368536967732838297461726765742d6e65774d6170283129 13909:O4|@4656,@10202,@13911,@13910 13910:O5|@13664,1035,0,1035,0 13911:S48|43616e646964617465207374727563747572652077697468206e6f6e2d656d70747920626f756e64204944206c697374 13912:S39|535452554354555245535f28292e6d61746368536967732838296c6f6f6b757054797065283129 13913:S39|535452554354555245535f28292e6d6174636853696773283829726573756c7454797065283129 13914:S28|535452554354555245535f28292e73747275637456616c7565283829 13915:O4|@4729,@12707,0,@13916 13916:O5|@12708,68,0,68,0 13917:S19|4c697374506169722e6d617045712833292829 13918:S29|437265617465642066726f6d206f7061717565207369676e6174757265 13919:O4|@4656,@10202,@13921,@13920 13920:O5|@13664,1770,0,1770,0 13921:S9|4e6f7420426f756e64 13922:S30|437265617465642066726f6d206170706c79696e672066756e63746f7220 13923:O4|@4656,@10202,@13921,@13924 13924:O5|@13664,1513,0,1513,0 13925:S44|535452554354555245535f28292e73747275637456616c75652838296d616b654e6577547970654964283229 13926:O4|@4656,@10202,@13928,@13927 13927:O5|@13664,1408,0,1408,0 13928:S24|6d61746368547970654964733a204e6f7420466f726d616c 13929:S29|535452554354555245535f28292e6d6174636854797065496473283229 13930:S32|434f5049455228292e7265706c6163654d6170283529747376456e762d283129 13931:S26|535452554354555245535f28292e6d6174636853696773283829 13932:O1|@6196 13933:O4|@6201,@10384,@10383,@10895 13934:O2|@10236,@13935 13935:O2|@10380,0 13936:S40|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d6170283429 13937:O1|@6206 13938:O3|1,0,2 13939:O5|0,0,0,0,@13940 13940:O2|@13941,@10377 13941:O2|3,@9649 13942:O2|@13943,@10720 13943:O3|1,1,4 13944:S57|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e73747252657374283229 13945:S53|545950455f5452454528292e646973706c617954797065436f6e73747273576974684d61702834297056616c436f6e737472283429 13946:O2|@13948,@13947 13947:O1|@6213 13948:O1|@6212 13949:S49|535452554354555245535f28292e636865636b54797065436f6e737472732838297072696e7454797065456e762d283129 13950:S52|535452554354555245535f28292e636865636b54797065436f6e737472732838296572726f72496e44617461747970652d283129 13951:S5|6d61746368 13952:O2|@13953,0 13953:S55|207761732070726573656e7420696e207468652073747275637475726520627574206e6f7420696e20746865207369676e61747572652e 13954:S14|3a20636f6e7374727563746f7220 13955:S30|4572726f72207768696c65206d61746368696e6720646174617479706520 13956:S56|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d6174636853747275637475726573283329 13957:S33|535452554354555245535f28292e636865636b54797065436f6e73747273283829 13958:S18|20696e207375622d73747275637475726520 13959:S34|53747275637475726520646f6573206e6f74206d61746368207369676e6174757265 13960:O2|3,@13961 13961:S10|5369676e61747572653a 13962:O2|3,@13963 13963:S10|5374727563747572653a 13964:S34|535452554354555245535f28292e7369675374727563744d617463684d7367283829 13965:S36|535452554354555245535f28292e6d617463685479706573283429636f70794964283129 13966:O1|@6219 13967:S48|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129283129 13968:O1|@6220 13969:S45|535452554354555245535f28292e6d617463685479706573283429636f70794154797065436f6e737472283129 13970:O1|@6221 13971:S43|535452554354555245535f28292e6d617463685479706573283429636f7079546172676574283129283129 13972:O1|@6222 13973:S27|535452554354555245535f28292e6d617463685479706573283429 13974:O2|3,@13975 13975:S11|636f6e7374727563746f72 13976:S53|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329646973706c617956616c7565283129 13977:O5|0,0,0,@13979,@13978 13978:O2|@13982,0 13979:O2|@13980,0 13980:O2|0,@13981 13981:O5|@13664,1266,1266,0,0 13982:O2|3,@13983 13983:S4|49734f4b 13984:O1|@6227 13985:O5|0,0,0,@13979,@13986 13986:O2|@13987,0 13987:O2|3,@13988 13988:S7|497357726f6e67 13989:S15|7072696e742d6d6174636854797065 13990:O2|0,2 13991:O2|1,@13992 13992:O2|3,@13993 13993:S25|56616c7565206973206e6f7420616e20657863657074696f6e 13994:O2|1,@13995 13995:O2|3,@13996 13996:S26|56616c7565206973206e6f74206120636f6e7374727563746f72 13997:O1|@6228 13998:O2|@10236,@13999 13999:O2|@14000,0 14000:O5|0,3,0,0,@14001 14001:O2|@13962,@14002 14002:O2|@10236,@14003 14003:O2|@14004,0 14004:O2|3,@14005 14005:S11|4e6f742070726573656e74 14006:S57|535452554354555245535f28292e6d61746368536967732838296d6174636856616c732833296d617463684c6f63616c56616c756573283329 14007:S36|535452554354555245535f28292e7369675374727563744d697373696e674d7367283629 14008:S38|535452554354555245535f28292e6d61746368536967732838296d6174636856616c73283329 14009:O1|@6230 14010:O2|@14012,@14011 14011:O1|@6235 14012:O1|@6234 14013:S58|535452554354555245535f28292e6d61746368536967732838296d617463684e616d65732833292833297072696e7454797065456e762d283129 14014:S56|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c617954797065283129 14015:O1|@6236 14016:S61|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329646973706c6179537472756374757265283129 14017:O2|3,@14018 14018:S47|54797065732074616b6520646966666572656e74206e756d62657273206f66207479706520617267756d656e74732e 14019:O2|3,@14020 14020:S35|5479706520696e20737472756374757265206973206e6f742061206461746174797065 14021:O1|@6237 14022:O1|@6238 14023:O2|3,@14024 14024:S41|5479706520696e20737472756374757265206973206e6f7420616e20657175616c6974792074797065 14025:S42|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329283329 14026:S39|535452554354555245535f28292e6d61746368536967732838296d617463684e616d6573283329 14027:S22|434f5049455228292e7265706c6163654d6170283529 14028:O2|@6241,@14029 14029:O2|12,@14038 14030:S21|636f6465466f72556e6971756549642d657175616c 14031:O3|6,64,0 14032:O2|@11224,@14033 14033:O2|@10632,0 14034:O4|@4656,@10202,@14036,@14035 14035:O5|@10521,68,0,68,0 14036:S9|646545787472616374 14037:S31|545950454944434f444528292e636f6465466f72556e697175654964283129 14038:O8|@14040,@14039,0,0,@11223,1,0,1 14039:S13|7072696e742d64656661756c74 14040:O3|6,@10508,0 14041:S38|436f6e73747275637465642066726f6d206120667265652074797065207661726961626c652e 14042:O2|@14043,0 14043:S65|2920636f6e7461696e73206120667265652074797065207661726961626c652e2053657474696e6720697420746f206120756e69717565206d6f6e6f747970652e 14044:S13|5468652074797065206f662028 14045:S56|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129283129 14046:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283229 14047:S50|545950455f5452454528292e636865636b466f7246726565547970655661726961626c657328342967656e4e616d65283129 14048:S53|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429636865636b5479706573283129 14049:S49|535452554354555245535f28292e706173733253747275637473283329636865636b5661726961626c6573283229283129 14050:S40|545950455f5452454528292e636865636b466f7246726565547970655661726961626c6573283429 14051:O1|@6251 14052:S79|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229636865636b456e747279283329 14053:S66|535452554354555245535f28292e706173733253747275637473283329636865636b537472756374536967466f7246726565547970655661726961626c6573283229 14054:S54|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329283129 14055:S8|46756e63746f7220 14056:S51|535452554354555245535f28292e7061737332537472756374732833297061737332546f7044656328322973456e762d283329 14057:S10|5369676e617475726520 14058:S98|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296172675369675769746853656c65637465642d6d6170546f53656c6563746564283129 14059:S68|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132295f2d283129 14060:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229656e7657697468417267732d283129 14061:O1|@6277 14062:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296e6577547970654964283129 14063:S78|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129283129 14064:S75|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229747970654964456e76283129 14065:S73|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132297265735369672d283129 14066:S3|28292e 14067:O1|@6282 14068:S76|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229726573547970654d6170283129 14069:S43|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229 14070:S63|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e6428313229 14071:O4|@4656,@10202,@14073,@14072 14072:O5|@13664,2191,0,2191,0 14073:S29|6d6b49643a204e6f7420426f756e64206f72206e6f7420466f726d616c 14074:S70|535452554354555245535f28292e7061737332537472756374732833297061737332546f70446563283229706173733246756e63746f7242696e64283132296d6b4964283129 14075:S26|5554494c49544945535f28292e7365617263684c697374283229 14076:O1|@6288 14077:O5|0,0,0,@14079,@14078 14078:O2|@14082,0 14079:O2|@14080,0 14080:O2|0,@14081 14081:O5|@13664,129,129,0,0 14082:O2|3,@14083 14083:S18|436f6e7374727563746f72546f56616c7565 14084:O5|0,0,0,@14086,@14085 14085:O2|@14089,0 14086:O2|@14087,0 14087:O2|0,@14088 14088:O5|@13664,128,128,0,0 14089:O2|3,@14090 14090:S16|457863657074696f6e546f56616c7565 14091:O5|0,0,0,@14093,@14092 14092:O2|@14096,0 14093:O2|@14094,0 14094:O2|0,@14095 14095:O5|@13664,127,127,0,0 14096:O2|3,@14097 14097:S10|4e6f436f657263696f6e 14098:S20|7072696e742d76616c7565436f657263696f6e73 14099:O3|@6289,@14150,@14100 14100:O3|@6417,@14151,@14150 14101:O1|@6290 14102:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329283129 14103:O1|@6292 14104:S61|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283129283129 14105:O4|@4658,@10397,0,@14106 14106:O5|@13664,835,0,835,0 14107:S48|535452554354555245535f28292e746f704465634578706f727454726565283329636f6d6d6f6e50726f70732d283129 14108:O1|@6296 14109:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296173506172656e74283129 14110:O1|@6300 14111:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296578706f727454686973283129 14112:S44|5349474e41545552455328292e7369674578706f727454726565283329636f6d6d6f6e50726f70732d283129 14113:O1|@6303 14114:S40|5349474e41545552455328292e7369674578706f7274547265652833296173506172656e74283129 14115:O1|@6306 14116:O1|@6307 14117:S45|5349474e41545552455328292e737065634578706f727454726565283329636f6d6d6f6e50726f70732d283129 14118:S41|5349474e41545552455328292e737065634578706f7274547265652833296173506172656e74283129 14119:S40|5349474e41545552455328292e737065634578706f72745472656528332967657454797065283129 14120:S40|5349474e41545552455328292e737065634578706f7274547265652833296765744e616d65283129 14121:O1|@6319 14122:S29|5349474e41545552455328292e7369674578706f727454726565283129 14123:O1|@6320 14124:O1|@6321 14125:S54|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296578706f727454686973283129 14126:S56|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329676574536967537472756374283129 14127:S51|5349474e41545552455328292e737065634578706f7274547265652833296578706f727453422833296765744e616d65283129 14128:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283129 14129:S41|5349474e41545552455328292e737065634578706f7274547265652833296578706f72745342283329 14130:S30|5349474e41545552455328292e737065634578706f727454726565283329 14131:S30|5349474e41545552455328292e737065634578706f727454726565283129 14132:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574536967283129 14133:S29|5349474e41545552455328292e7369674578706f727454726565283329 14134:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574426f6479283129 14135:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329676574417267283129 14136:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727446422833296765744e616d65283129 14137:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283129 14138:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72744642283329 14139:O1|@6343 14140:O1|@6344 14141:S57|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296578706f727454686973283129 14142:S53|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329676574536967283129 14143:S54|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f727453422833296765744e616d65283129 14144:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283129 14145:S44|535452554354555245535f28292e746f704465634578706f7274547265652833296578706f72745342283329 14146:S58|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329676574456e747279283329 14147:S33|535452554354555245535f28292e746f704465634578706f727454726565283329 14148:S34|535452554354555245535f28292e737472756374734578706f727454726565283229 14149:S47|535452554354555245535f28292e737472756374734578706f7274547265652832296578706f727454726565283329 14150:O5|@6354,@14100,@4756,@4757,@14151 14151:O2|@6416,@14100 14152:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329636f6d6d6f6e50726f70732d283129 14153:S49|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296173506172656e74283129 14154:S53|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296765745369676e6174757265283129 14155:S53|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329676574537472756374757265283129 14156:O5|0,0,0,@14158,@14157 14157:O2|@14161,0 14158:O2|@14159,0 14159:O2|0,@14160 14160:O5|@13664,714,714,0,0 14161:O2|3,@14162 14162:S3|446563 14163:O5|0,0,0,@14158,@11424 14164:S16|7072696e742d616c6c456e7472696573 14165:S54|535452554354555245535f28292e73747275637456616c75654578706f7274547265652833296578706f7274456e7472696573283129 14166:S54|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f72417267283129 14167:S55|535452554354555245535f28292e73747275637456616c75654578706f72745472656528332967657446756e63746f724e616d65283129 14168:S38|535452554354555245535f28292e73747275637456616c75654578706f727454726565283329 14169:O4|@6371,@4758,@4756,@4757 14170:S21|7072696e742d636f72654465636c61726174696f6e 14171:O5|0,0,0,@14173,@14172 14172:O2|@14176,0 14173:O2|@14174,0 14174:O2|0,@14175 14175:O5|@13664,187,187,0,0 14176:O2|3,@14177 14177:S8|436f72654c616e67 14178:S15|7072696e742d737472756374446563 14179:O5|0,0,0,@14180,@13278 14180:O2|@14181,0 14181:O2|0,@14182 14182:O5|@13664,194,194,0,0 14183:O4|0,@14184,3,1 14184:O1|@6377 14185:O4|0,@14186,3,1 14186:O1|@6378 14187:O2|3,@14188 14188:S8|76616c526566203d 14189:O2|3,@14190 14190:S9|68617665536967203d 14191:O4|0,@14192,3,1 14192:O1|@6379 14193:O4|0,@14194,3,1 14194:O1|@6380 14195:O2|3,@14196 14196:S17|74797065496473466f724465627567203d 14197:O2|3,@14198 14198:S10|62696e64696e6773203d 14199:O5|0,0,0,@14201,@14200 14200:O2|@14204,0 14201:O2|@14202,0 14202:O2|0,@14203 14203:O5|@13664,180,180,0,0 14204:O2|3,@14205 14205:S12|537472756374757265446563 14206:O1|@6381 14207:O2|@6382,@4760 14208:O5|0,0,0,@14210,@14209 14209:O2|@14213,0 14210:O2|@14211,0 14211:O2|0,@14212 14212:O5|@10918,506,506,0,0 14213:O2|3,@14214 14214:S9|466978537461747573 14215:S15|7072696e742d666978537461747573 14216:O5|0,0,0,@14218,@14217 14217:O2|@14221,0 14218:O2|@14219,0 14219:O2|0,@14220 14220:O5|@13664,114,114,0,0 14221:O2|3,@14222 14222:S7|436f7265466978 14223:O5|0,0,0,@14225,@14224 14224:O2|@14228,0 14225:O2|@14226,0 14226:O2|0,@14227 14227:O5|@13664,115,115,0,0 14228:O2|3,@14229 14229:S10|436f7265537472756374 14230:O5|0,0,0,@14232,@14231 14231:O2|@14235,0 14232:O2|@14233,0 14233:O2|0,@14234 14234:O5|@13664,113,113,0,0 14235:O2|3,@14236 14236:S8|436f726554797065 14237:O5|0,0,0,@14239,@14238 14238:O2|@14242,0 14239:O2|@14240,0 14240:O2|0,@14241 14241:O5|@13664,112,112,0,0 14242:O2|3,@14243 14243:S9|436f726556616c7565 14244:O4|@6383,@4761,@4757,@4756 14245:O4|0,@14246,3,1 14246:O1|@6384 14247:O4|0,@14248,2,2 14248:O1|@6385 14249:O2|3,@14250 14250:S8|736f75726365203d 14251:O2|3,@14252 14252:S6|64657374203d 14253:O4|0,@14254,3,1 14254:O1|@6388 14255:O4|0,@14256,2,2 14256:O1|@6389 14257:O4|0,@14258,3,1 14258:O1|@6390 14259:O4|0,@14260,3,1 14260:O1|@6391 14261:O5|@6392,@4740,@4701,@4763,@4695 14262:O5|0,0,0,@14264,@14263 14263:O2|@14267,0 14264:O2|@14265,0 14265:O2|0,@14266 14266:O5|@10918,219,219,0,0 14267:O2|3,@14268 14268:S7|46756e63746f72 14269:S14|7072696e742d66756e63746f7273 14270:O2|3,@14271 14271:S8|726573496473203d 14272:O2|3,@14273 14273:S17|6d61746368546f417267756d656e74203d 14274:O2|3,@14275 14275:S8|617267496473203d 14276:O5|0,0,0,@14278,@14277 14277:O2|@14281,0 14278:O2|@14279,0 14279:O2|0,@14280 14280:O5|@13664,150,150,0,0 14281:O2|3,@14282 14282:S11|46756e63746f724170706c 14283:O5|0,0,0,@14285,@14284 14284:O2|@14288,0 14285:O2|@14286,0 14286:O2|0,@14287 14287:O5|@13664,162,162,0,0 14288:O2|3,@14289 14289:S6|4c6574446563 14290:O3|@6395,@4767,@4765 14291:S11|7072696e742d7370656373 14292:O5|0,0,0,@14294,@14293 14293:O2|@14297,0 14294:O2|@14295,0 14295:O2|0,@14296 14296:O5|@13675,78,78,0,0 14297:O2|3,@14298 14298:S6|536967446563 14299:O4|0,@14300,3,1 14300:O1|@6397 14301:O4|0,@14302,3,1 14302:O1|@6398 14303:O5|0,0,0,@14305,@14304 14304:O2|@14308,0 14305:O2|@14306,0 14306:O2|0,@14307 14307:O5|@13675,76,76,0,0 14308:O2|3,@14309 14309:S14|5369676e61747572654964656e74 14310:O4|0,@14311,2,2 14311:O1|@6399 14312:O2|3,@14313 14313:S10|747970654e616d65203d 14314:O2|3,@14315 14315:S8|736967457870203d 14316:O2|3,@14317 14317:S13|7265616c69736174696f6e203d 14318:O5|0,0,0,@14320,@14319 14319:O2|@14323,0 14320:O2|@14321,0 14321:O2|0,@14322 14322:O5|@13675,80,80,0,0 14323:O2|3,@14324 14324:S9|576865726554797065 14325:S10|7072696e742d73696773 14326:O2|@6400,@4765 14327:O5|0,0,0,@14328,@14231 14328:O2|@14329,0 14329:O2|0,@14330 14330:O5|@13675,91,91,0,0 14331:O4|0,@14332,3,1 14332:O1|@6401 14333:O5|0,0,0,@14335,@14334 14334:O2|@14338,0 14335:O2|@14336,0 14336:O2|0,@14337 14337:O5|@13675,88,88,0,0 14338:O2|3,@14339 14339:S5|4578536967 14340:O5|0,0,0,@14342,@14341 14341:O2|@14345,0 14342:O2|@14343,0 14343:O2|0,@14344 14344:O5|@13675,99,99,0,0 14345:O2|3,@14346 14346:S10|496e636c756465536967 14347:O4|0,@14348,2,2 14348:O1|@6403 14349:O2|3,@14350 14350:S8|736861726573203d 14351:O2|3,@14352 14352:S8|697354797065203d 14353:O5|0,0,0,@14355,@14354 14354:O2|@14358,0 14355:O2|@14356,0 14356:O2|0,@14357 14357:O5|@13675,97,97,0,0 14358:O2|3,@14359 14359:S7|53686172696e67 14360:O2|3,@14361 14361:S11|736967537472756374203d 14362:O5|0,0,0,@14364,@14363 14363:O2|@14367,0 14364:O2|@14365,0 14365:O2|0,@14366 14366:O5|@13675,83,83,0,0 14367:O2|3,@14368 14368:S12|537472756374757265536967 14369:O5|0,0,0,@14371,@14370 14370:O2|@14374,0 14371:O2|@14372,0 14372:O2|0,@14373 14373:O5|@13675,85,85,0,0 14374:O2|3,@14375 14375:S6|56616c536967 14376:O4|0,@14377,3,1 14377:O1|@6407 14378:O4|0,@14379,2,2 14379:O1|@6408 14380:O2|3,@14381 14381:S5|737472203d 14382:O2|3,@14383 14383:S8|7369674c6f63203d 14384:O2|3,@14385 14385:S11|6f7061717565496473203d 14386:O2|3,@14387 14387:S8|6f7061717565203d 14388:O2|3,@14389 14389:S19|6d61746368546f436f6e73747261696e74203d 14390:O2|3,@14391 14391:S6|63736967203d 14392:O5|0,0,0,@14394,@14393 14393:O2|@14397,0 14394:O2|@14395,0 14395:O2|0,@14396 14396:O5|@13664,169,169,0,0 14397:O2|3,@14398 14398:S13|536967436f6e73747261696e74 14399:O2|3,@14400 14400:S15|6d61746368546f526573756c74203d 14401:O2|3,@14402 14402:S7|616c697374203d 14403:O5|0,0,0,@14405,@14404 14404:O2|@14408,0 14405:O2|@14406,0 14406:O2|0,@14407 14407:O5|@13664,143,143,0,0 14408:O2|3,@14409 14409:S9|537472756374446563 14410:O4|0,@14411,3,1 14411:O1|@6412 14412:O4|0,@14413,3,1 14413:O1|@6413 14414:O5|0,0,0,@14416,@14415 14415:O2|@14419,0 14416:O2|@14417,0 14417:O2|0,@14418 14418:O5|@13664,136,136,0,0 14419:O2|3,@14420 14420:S14|5374727563747572654964656e74 14421:S17|7072696e742d73747275637456616c7565 14422:O3|@6414,@4761,@4673 14423:O2|3,@14424 14424:S17|736f75726365537472756374757265203d 14425:O2|3,@14426 14426:S15|636f6e74656e74734d61746368203d 14427:O5|0,0,0,@14429,@14428 14428:O2|@14432,0 14429:O2|@14430,0 14430:O2|0,@14431 14431:O5|@13664,121,121,0,0 14432:O2|3,@14433 14433:S14|5374727563747572654d61746368 14434:O2|3,@14435 14435:S12|736f7572636549644e6f203d 14436:O2|3,@14437 14437:S12|6973457175616c697479203d 14438:O5|0,0,0,@14440,@14439 14439:O2|@14443,0 14440:O2|@14441,0 14441:O2|0,@14442 14442:O5|@13664,123,123,0,0 14443:O2|3,@14444 14444:S11|5479706549644d61746368 14445:O2|3,@14446 14446:S12|74617267657454797065203d 14447:O2|3,@14448 14448:S13|736f7572636556616c7565203d 14449:O2|3,@14450 14450:S10|636f657263696f6e203d 14451:O5|0,0,0,@14453,@14452 14452:O2|@14456,0 14453:O2|@14454,0 14454:O2|0,@14455 14455:O5|@13664,119,119,0,0 14456:O2|3,@14457 14457:S10|56616c75654d61746368 14458:S19|7072696e742d76616c75654d61746368696e67 14459:S33|535452554354555245535f28292e7374727563744578706f727454726565283129 14460:S48|535452554354555245535f28292e7374727563744578706f727454726565283329636f6d6d6f6e50726f70732d283129 14461:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296173506172656e74283129 14462:O1|@6421 14463:S57|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296578706f727454686973283129 14464:S55|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f7274534228332967657456616c7565283129 14465:S54|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f727453422833296765744e616d65283129 14466:S59|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329676574536967537472756374283129 14467:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283129 14468:S44|535452554354555245535f28292e7374727563744578706f7274547265652833296578706f72745342283329 14469:S33|535452554354555245535f28292e7374727563744578706f727454726565283329 14470:O4|@6432,@4780,@16560,@14471 14471:O1|@7846 14472:O1|@6433 14473:O4|@6434,@14573,@14474,@4662 14474:O3|@6475,@14473,@14573 14475:S3|416464 14476:S3|446976 14477:S3|4d6f64 14478:S4|4d756c74 14479:S4|51756f74 14480:S3|52656d 14481:S3|537562 14482:S12|47726561746572457175616c 14483:S7|47726561746572 14484:S9|4c657373457175616c 14485:S4|4c657373 14486:O2|3,@14487 14487:S10|424547494e4c4f4f5028 14488:S11|436f6d7061726542797465 14489:S9|457175616c42797465 14490:S8|4d6f766542797465 14491:S8|4d6f7665576f7264 14492:O2|3,@9570 14493:O3|1,0,3 14494:O2|@10236,@10401 14495:O2|3,@14496 14496:S9|526563757273697665 14497:S3|417267 14498:S10|5749544820657869643d 14499:O2|3,@14500 14500:S7|48414e444c4528 14501:S5|282a562a29 14502:S7|696e6c696e652c 14503:S8|206c6f63616c732c 14504:S8|636c6f737572653d 14505:S14|726563757273697665207573653d 14506:O2|@10236,@14507 14507:O2|@14508,0 14508:O2|3,@10962 14509:O2|3,@10961 14510:O2|3,@14511 14511:S3|666e28 14512:S6|433136426974 14513:S6|433332426974 14514:S6|433634426974 14515:S5|4338426974 14516:S7|43446f75626c65 14517:S6|43466c6f6174 14518:S6|4d4c42797465 14519:S15|4d4c42797465496d6d757461626c65 14520:S6|4d4c576f7264 14521:S15|4d4c576f7264496d6d757461626c65 14522:S14|4d4c576f7264556e746167676564 14523:S4|4c6f6164 14524:O2|3,@14525 14525:S6|524149534528 14526:S5|53746f7265 14527:O2|3,@14528 14528:S2|3c3d 14529:O2|@9569,0 14530:S2|2c20 14531:S8|5441475445535428 14532:S8|4441544154595045 14533:S5|5455504c45 14534:O2|@14530,0 14535:S13|534554434f4e5441494e455228 14536:S22|42617365436f6465547265652e707265747479283129 14537:S23|42617365436f6465547265652e704c6973742833292829 14538:O2|@10391,@14539 14539:O2|@14540,0 14540:O2|3,@9584 14541:O2|3,@14542 14542:S6|4578706f7274 14543:O1|@6445 14544:S27|42617365436f6465547265652e7072657474795573616765283129 14545:O2|@10391,@14546 14546:O2|@13941,0 14547:O2|@14492,0 14548:O5|0,0,0,0,@14549 14549:O2|@14492,@14545 14550:O2|@10236,@14551 14551:O2|@14552,0 14552:O2|3,@14553 14553:S5|3a7265616c 14554:O2|@10391,@14555 14555:O2|@10394,@14556 14556:O2|@14557,0 14557:O3|1,1,0 14558:S34|42617365436f6465547265652e7072657474792831297072696e7441726773283229 14559:S5|4669786564 14560:S9|4c61726765576f7264 14561:S4|54657374 14562:S3|586f72 14563:S2|4f72 14564:S3|416e64 14565:S15|526967687441726974686d65746963 14566:S12|52696768744c6f676963616c 14567:S4|4c656674 14568:S4|5265616c 14569:S4|576f7264 14570:S6|5369676e6564 14571:S8|556e7369676e6564 14572:S46|4261636b656e64496e7465726d656469617465436f64652e4275696c74496e732e62696e61727952657072283129 14573:O2|@6472,@14473 14574:S9|76616c204c6f63616c 14575:S35|42617365436f6465547265652e70726574747953696d706c6542696e64696e67283329 14576:S12|3d20436f6e7461696e657220 14577:O2|3,@14578 14578:S8|76616c2072656320 14579:S29|42617365436f6465547265652e70726574747942696e64696e67283129 14580:O2|@10391,@14581 14581:O2|@14582,0 14582:O2|3,@14583 14583:S5|20616e6420 14584:S24|434f44455452454528292e67656e436f6465283329283129 14585:O1|@6484 14586:O5|0,0,0,@14588,@14587 14587:O2|@14591,0 14588:O2|@14589,0 14589:O2|0,@14590 14590:O5|@10521,186,186,0,0 14591:O2|3,@14592 14592:S9|556e56697369746564 14593:O5|0,0,0,@14588,@14594 14594:O2|@14595,0 14595:O2|3,@14596 14596:S14|5669736974656447656e6572616c 14597:O5|0,0,0,@14588,@14598 14598:O2|@14599,0 14599:O2|3,@14600 14600:S14|566973697465645370656369616c 14601:S11|7072696e742d7669736974 14602:O2|@6485,@14603 14603:O2|@6488,@14602 14604:S32|434f44455452454528292e67656e436f646528332966696e6444656373283129 14605:O4|@4656,@10202,@14607,@14606 14606:O5|@10521,234,0,234,0 14607:S36|646f47656e6572616c3a206e6f74204c6f61644c6f63616c206f7220436f6e7374616e74 14608:S41|434f44455452454528292e67656e436f646528332970726f6365737347656e416e6453706563283229 14609:O4|@4656,@10202,@14611,@14610 14610:O5|@10521,274,0,274,0 14611:S31|526573756c7420766563746f72206973206e6f7420616e2061646472657373 14612:S21|434f44455452454528292e67656e436f6465283329 14613:O4|@4656,@10202,@14615,@14614 14614:O5|@14616,261,0,261,0 14615:S33|6c6f6f6b7570436f6e7374616e743a20746f702d6c6576656c2072656163686564 14616:S68|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e532e736d6c 14617:S66|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296c6f6f6b757041646472283129 14618:S64|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429636f6e746578742d283129 14619:O2|@6499,@14620 14620:O2|@7535,@14619 14621:S50|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283129283129 14622:O2|1,@10548 14623:S47|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e73283429 14624:O4|@4656,@10202,@14626,@14625 14625:O5|@11070,273,0,273,0 14626:S31|6d616b6556616c202d206e6f7420636f6e7374616e74206f72207475706c65 14627:O4|4,@9489,0,@14628 14628:O5|@10100,149,0,149,0 14629:S81|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c2831297475706c6550726f70732d696e6c696e6550726f702d7475706c65456e747279283129 14630:O1|@6504 14631:S46|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129 14632:O4|@4656,@10202,@14634,@14633 14633:O5|@11070,242,0,242,0 14634:S12|6e6f7420636f6e7374616e74 14635:S58|434f4445545245455f46554e4354494f4e5328292e6d616b65436f6e737456616c2831296d616b6556616c283129636f7079546f566563283229 14636:O1|@6510 14637:O4|@4656,@10202,@14639,@14638 14638:O5|@14640,476,0,476,0 14639:S17|546f70206c6576656c2072656163686564 14640:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4c414d4244415f4c4946542e736d6c 14641:S49|434f4445545245455f4c414d4244415f4c49465428292e636f646547656e6572617465283329746f706c6576656c283129 14642:O4|@4656,@10202,@14644,@14643 14643:O5|@14640,481,0,481,0 14644:S33|434f4445545245455f4c414d4244415f4c4946543a636f646547656e6572617465 14645:O4|4,@9489,0,@14646 14646:O5|@14647,47,0,47,0 14647:S21|2e2f62617369732f426f6f6c41727261792e736d6c 14648:S66|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f526563757273697665283129 14649:O4|11,@9448,0,@14650 14650:O5|@14647,402,0,402,0 14651:S64|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b4c616d626461283929726566546f436c6f73757265283129 14652:O1|@6511 14653:S47|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f6465283129 14654:O4|11,@9448,0,@14655 14655:O5|@14647,396,0,396,0 14656:S61|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429636865636b436f646528312970726f6365737344656373283129 14657:O1|@6515 14658:O1|9 14659:S27|42617365436f6465547265652e6d6170436f646574726565283229 14660:S34|42617365436f6465547265652e6d6170436f6465747265652832296d617074283129 14661:O4|@4656,@10202,@14663,@14662 14662:O5|@11604,617,0,617,0 14663:S8|64654c616d626461 14664:S47|42617365436f6465547265652e6d6170436f6465747265652832296d6170742831296d617062696e64696e67283129 14665:O4|@4656,@10202,@14036,@14666 14666:O5|@11604,616,0,616,0 14667:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465546f436f6e7374616e74283329 14668:O14|@6532,@4770,13,@15984,@15993,@4772,@4777,@16086,@16091,5,@16096,@16097,@4778,@4768 14669:O2|3,@14670 14670:S13|737461636b4f6666736574203d 14671:O5|0,0,0,@14673,@14672 14672:O2|@14677,0 14673:O2|@14674,0 14674:O2|0,@14675 14675:O5|@14676,123,123,0,0 14676:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836436f646574726565546f49436f64652e4d4c 14677:O2|3,@14678 14678:S17|436f6e7461696e65724c6f636174696f6e 14679:O5|0,0,0,@14681,@14680 14680:O2|@14684,0 14681:O2|@14682,0 14682:O2|0,@14683 14683:O5|@14676,121,121,0,0 14684:O2|3,@14685 14685:S10|4e6f4c6f636174696f6e 14686:O5|0,0,0,@14688,@14687 14687:O2|@14691,0 14688:O2|@14689,0 14689:O2|0,@14690 14690:O5|@14676,122,122,0,0 14691:O2|3,@14692 14692:S12|507265674c6f636174696f6e 14693:S19|7072696e742d6c6f636174696f6e56616c7565 14694:O2|3,@14695 14695:S9|6d656d41646472203d 14696:O2|3,@14697 14697:S14|6578697374696e6750726567203d 14698:O2|3,@14699 14699:S10|636f6e7374333273203d 14700:O2|3,@14701 14701:S13|616e79436f6e7374616e74203d 14702:O5|0,0,0,@14704,@14703 14703:O2|@14707,0 14704:O2|@14705,0 14705:O2|0,@14706 14706:O5|@14676,237,237,0,0 14707:O2|3,@14708 14708:S7|416c6c6f776564 14709:O5|0,0,0,@14711,@14710 14710:O2|@14714,0 14711:O2|@14712,0 14712:O2|0,@14713 14713:O5|@14676,236,236,0,0 14714:O2|3,@14715 14715:S8|4e6f526573756c74 14716:O5|0,0,0,@14718,@14717 14717:O2|@14721,0 14718:O2|@14719,0 14719:O2|0,@14720 14720:O5|@14676,235,235,0,0 14721:O2|3,@14722 14722:S12|537065636966696350526567 14723:S17|7072696e742d64657374696e6174696f6e 14724:O9|@6535,@14795,@14805,@14815,@14817,@14824,@14828,@14834,@14725 14725:O2|@6761,@14724 14726:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296a756d704f6e4f766572666c6f77283129 14727:O3|7,0,0 14728:O3|7,1,0 14729:O4|@4656,@10202,@14731,@14730 14730:O5|@14676,577,0,577,0 14731:S24|4249434576616c2061646472657373206e6f7420636f6465 14732:O4|@4656,@10202,@14734,@14733 14733:O5|@14676,575,0,575,0 14734:S15|4249434576616c2061646472657373 14735:O4|@4656,@10202,@14737,@14736 14736:O5|@14676,485,0,485,0 14737:S28|636f6465546f49436f6465526576202d206c6f63616c20756e736574 14738:O5|0,0,0,0,1 14739:O4|@4656,@10202,@14741,@14740 14740:O5|@14676,535,0,535,0 14741:S6|6f6666736574 14742:O1|4 14743:O4|@4656,@10202,@14745,@14744 14744:O5|@14676,542,0,542,0 14745:S23|636f6465546f49436f64655265762d4249434669656c64 14746:O4|@4656,@10202,@14748,@14747 14747:O5|@14676,1009,0,1009,0 14748:S28|4249434c6f6f7020776974686f757420424943426567696e4c6f6f70 14749:O4|@4656,@10202,@14751,@14750 14750:O5|@14676,463,0,463,0 14751:S23|636f6465546f49436f6465202d20737461636b20707472 14752:S98|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362973746f7265496e7374727c636f6465436f6e7461696e65722d73746f7265546f537461636b283129 14753:S75|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963726561746553746f7265283129283129 14754:O4|@4656,@10202,@14737,@14755 14755:O5|@14676,1135,0,1135,0 14756:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d67657441646472283129 14757:S86|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d283129 14758:O4|@4656,@10202,@14737,@14759 14759:O5|@14676,1197,0,1197,0 14760:S95|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d6c6f61644669656c647c636f64655475706c652d6c6f61644669656c64283129 14761:O2|6,@14762 14762:O1|13 14763:O5|0,0,1,0,1 14764:O4|11,@9448,0,@14765 14765:O5|@14647,199,0,199,0 14766:O4|@4729,@12707,0,@14767 14767:O5|@12708,85,0,85,0 14768:O4|@4656,@10202,@14770,@14769 14769:O5|@14676,509,0,509,0 14770:S19|424943457874726163743a20636c6f73757265 14771:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629 14772:O4|@4656,@10202,@14774,@14773 14773:O5|@14676,940,0,940,0 14774:S19|636f646543617365733a206d69736d61746368 14775:S70|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64654361736573283329 14776:S21|506f6c794d756c7469706c79417262697472617279 14777:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6c6f616441726773283229 14778:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646552657628362963616c6c496e7374722d6d616b65537461636b41726773283229 14779:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564526576283429 14780:S20|506f6c79436f6d70617265417262697472617279 14781:O5|0,1,1,1,1 14782:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f61644669656c6473283329 14783:S79|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f64652d636f7079436f6e7461696e6572283329 14784:O4|@4656,@10202,@14786,@14785 14785:O5|@14676,333,0,333,0 14786:S13|636f6465546f50526567526576 14787:S71|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429 14788:S84|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f73757265283329 14789:S97|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e6773283429736574436c6f737572652833296c6f61644669656c6473283229 14790:S85|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329 14791:O2|@14761,0 14792:S93|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629646f42696e64696e67732834296d616b65436c6f73757265283329636c656172283129 14793:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64655265762836296c6f616441726773283429 14794:S69|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465526576283629636f646541726773283329 14795:O4|@6583,@14724,@14802,@14796 14796:O2|@6605,@14724 14797:O4|@4656,@10202,@14799,@14798 14798:O5|@14676,2386,0,2386,0 14799:S35|636f6465546f49436f6465426c6f636b202d20426c6f636b4f70457175616c42797465 14800:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465426c6f636b283529 14801:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f5838362833296d6f766549664e6f74416c6c6f776564283429 14802:O2|@6604,@14724 14803:S58|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f646541646472657373526576283529 14804:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654173556e746167676564546f526567526576283529 14805:O5|@6606,@14724,@14802,@14806,@14796 14806:O2|@6640,@14724 14807:O4|@4656,@10202,@14809,@14808 14808:O5|@14676,324,0,324,0 14809:S10|636f6465546f50526567 14810:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646553746f7265283429 14811:O4|@4656,@10202,@14813,@14812 14812:O5|@14676,2979,0,2979,0 14813:S26|636f646543416464726573733a20756e6b6e6f776e2073697a65 14814:S56|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654341646472657373283429 14815:O3|@6643,@14802,@14806 14816:S59|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f64654c6f6164283529 14817:O3|@6662,@14724,@14802 14818:O4|@4656,@10202,@14820,@14819 14819:O5|@14676,79,0,79,0 14820:S26|6c61726765576f7264436f6e7374616e743a20696e76616c6964 14821:O4|@4656,@10202,@14820,@14822 14822:O5|@14676,85,0,85,0 14823:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465436f6e646974696f6e526576283529 14824:O3|@6666,@14724,@14825 14825:O2|@6671,@14724 14826:S63|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465416c6c6f63617465283529 14827:S66|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329616c6c6f636174654d656d6f72795661726961626c65283629 14828:O2|@6677,@14724 14829:O4|@4656,@10202,@14831,@14830 14830:O5|@14676,2906,0,2906,0 14831:S58|636f6465546f49436f64653a204669786564507265636973696f6e4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 14832:O2|2,1 14833:S67|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654669786564507265636973696f6e4172697468283629 14834:O4|@6705,@14724,@14835,@14828 14835:O2|@6759,@14724 14836:O2|0,@11125 14837:S77|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529636865636b4f766572666c6f77283129 14838:O4|@4656,@10202,@14840,@14839 14839:O5|@14676,1867,0,1867,0 14840:S59|636f6465546f49436f64654e6f6e5265763a204c61726765576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 14841:O4|@4656,@10202,@14843,@14842 14842:O5|@14676,1612,0,1612,0 14843:S54|636f6465546f49436f64654e6f6e5265763a20576f72644172697468202d20756e696d706c656d656e746564206f7065726174696f6e 14844:O4|@4656,@10202,@14846,@14845 14845:O5|@14676,1961,0,1961,0 14846:S54|636f6465546f49436f64654e6f6e5265763a205265616c4172697468202d20756e696d706c656d656e746564206f7065726174696f6e 14847:S61|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f646542696e617279283529 14848:S68|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f64654d756c7469706c79436f6e7374616e74576f7264283529 14849:S60|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329636f6465546f49436f6465556e617279283529 14850:O2|@10515,0 14851:S41|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f583836283329 14852:O2|@6780,@4644 14853:O1|@6781 14854:O4|11,@9448,0,@14855 14855:O5|@9839,121,0,121,0 14856:S40|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d283129 14857:S50|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c64283229 14858:S60|5072657474792e67657453696d706c655072696e7465722832297072696e7453747265616d28312972656275696c6428322966696e64546162283329 14859:S25|537472696e672e6669656c64732832296669656c6427283229 14860:S26|5072657474792e67657453696d706c655072696e746572283229 14861:O2|8,@14862 14862:O2|20,@14863 14863:O2|60,0 14864:O4|@4656,@10202,@14866,@14865 14865:O5|@14867,192,0,192,0 14866:S15|546f6f206d616e7920706173736573 14867:S57|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64655472616e73666f726d2e4d4c 14868:O1|@6786 14869:S26|58383649436f646528292e7072696e74426c6f636b2834292d45 14870:O1|@6787 14871:S45|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f583836283729 14872:O1|@6790 14873:O4|0,@14874,1,1 14874:O1|@6791 14875:O5|0,0,0,@14877,@14876 14876:O2|@14881,0 14877:O2|@14878,0 14878:O2|0,@14879 14879:O5|@14880,22,22,0,0 14880:S47|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f496e745365742e736d6c 14881:O2|3,@14882 14882:S6|496e74536574 14883:S12|7072696e742d696e74536574 14884:O2|3,@14885 14885:S10|737461636b536574203d 14886:O2|3,@14887 14887:S8|726567536574203d 14888:O2|3,@14889 14889:S9|63635374617465203d 14890:O5|0,0,0,@14892,@14891 14891:O2|@14896,0 14892:O2|@14893,0 14893:O2|0,@14894 14894:O5|@14895,396,396,0,0 14895:S66|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64654964656e746966795265666572656e6365732e4d4c 14896:O2|3,@14897 14897:S6|4c6f6f706564 14898:O5|0,0,0,@14892,@12632 14899:O5|0,0,0,@14892,@14900 14900:O2|@14901,0 14901:O2|3,@14902 14902:S10|50726f63657373696e67 14903:O5|0,0,0,@14892,@14904 14904:O2|@14905,0 14905:O2|3,@14906 14906:S11|556e70726f636573736564 14907:S14|7072696e742d6c6f6f7044617461 14908:S59|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f6465283429 14909:S17|094a756d70477274556e7369676e656409 14910:S18|094a756d704c657373556e7369676e656409 14911:S11|094a756d70457175616c09 14912:S15|094a756d704772745369676e656409 14913:S15|094a756d704765715369676e656409 14914:S16|094a756d704c6573735369676e656409 14915:S15|094a756d704c65715369676e656409 14916:S17|094a756d704c6571556e7369676e656409 14917:S17|094a756d70476571556e7369676e656409 14918:S14|094a756d704e6f74457175616c09 14919:S16|094a756d704e6f4f766572666c6f7709 14920:S17|094a756d70506172697479436c65617209 14921:S14|094a756d704f766572666c6f7709 14922:S14|094a756d70506172697479536574 14923:S7|20656c7365204c 14924:S5|206f722048 14925:S7|094a756d70094c 14926:S13|0953657448616e646c65720948 14927:S7|094a756d700948 14928:S16|09416c6c6f636174654d656d6f727909 14929:O2|@14930,0 14930:S4|203d3e20 14931:S3|2c663d 14932:S2|733d 14933:S6|20736176653d 14934:S5|0941646409 14935:S9|09416e644269747309 14936:S9|09436f6d7061726509 14937:S8|094f724269747309 14938:S10|09537562747261637409 14939:S17|094578636c75736976654f724269747309 14940:S22|0941746f6d696345786368616e6765416e6441646409 14941:S7|616464723d3028 14942:S7|292c776974683d 14943:S15|09426567696e46756e6374696f6e09 14944:S14|09426567696e48616e646c657209 14945:S6|207769746820 14946:S15|09426c6f636b427974654d6f766509 14947:S15|09426c6f636b576f72644d6f766509 14948:S4|7372633d 14949:S6|2c646573743d 14950:S5|2c6c656e3d 14951:S9|09426f785353453209 14952:S8|09426f7858383709 14953:S10|09426f784c6172676509 14954:S20|09436f6d7061726542797465566563746f727309 14955:S12|09436f7079546f4361636865 14956:S5|3136426974 14957:S5|3332426974 14958:S4|42797465 14959:S6|446f75626c65 14960:S5|466c6f6174 14961:S9|094469766973696f6e 14962:S7|5369676e656409 14963:S9|556e7369676e656409 14964:S4|20627920 14965:S5|2072656d20 14966:S14|0946756e6374696f6e43616c6c09 14967:S10|72656375727369766520 14968:S13|09496e64657865644361736509 14969:S5|746573743d 14970:S5|776f726b3d 14971:S13|09496e6974436f6d706c657465 14972:S15|09496e697469616c6973654d656d09 14973:S3|2c693d 14974:S3|2c613d 14975:S10|094a756d704c6f6f7009 14976:S5|094c6f6164 14977:S19|094c6f61644566666563746976654164647209 14978:S12|094c6f61644d656d52656709 14979:S13|094c6f636b4d757461626c6509 14980:S16|094d756c7469706c69636174696f6e09 14981:S21|09506f70457863657074696f6e48616e646c657209 14982:S5|7769746820 14983:S21|095075736845786348616e646c6572097769746820 14984:S11|095075736856616c756509 14985:S7|09526169736509 14986:S18|0952657365727665436f6e7461696e657209 14987:S15|095265736574537461636b50747209 14988:S12|207072657365727665204343 14989:S20|0952657475726e46726f6d46756e6374696f6e09 14990:S13|0953534532436f6d7061726509 14991:S11|0953534532465041646409 14992:S11|09535345324650416e6409 14993:S12|09535345324650436f6d7009 14994:S11|0953534532465044697609 14995:S21|09535345324650446f75626c65546f466c6f617409 14996:S12|095353453246504d6f766509 14997:S18|095353453246504d6f766553696e676c6509 14998:S11|095353453246504d756c09 14999:S11|0953534532465053756209 15000:S11|09535345324650586f7209 15001:S11|0953534532466c6f617409 15002:S13|09536869667452417269746809 15003:S15|095368696674524c6f676963616c09 15004:S11|0953686966744c65667409 15005:S12|0953746f7265313642697409 15006:S12|0953746f7265333242697409 15007:S11|0953746f72654279746509 15008:S13|0953746f7265446f75626c6509 15009:S12|0953746f7265466c6f617409 15010:S11|0953746f7265576f726409 15011:S14|0953746f7265546f537461636b09 15012:S10|0954616756616c756509 15013:S10|095461696c43616c6c09 15014:S12|095465737454616742697409 15015:S6|09556e746167 15016:S7|20636163686520 15017:S16|09576f7264436f6d70617269736f6e09 15018:S12|09583837436f6d7061726509 15019:S10|09583837465041646409 15020:S14|095838374650436f6d7061726509 15021:S17|095838374650436f6d70617265506f7009 15022:S10|09583837465044697609 15023:S13|09583837465052657644697609 15024:S10|0958383746504d756c09 15025:S10|09583837465053756209 15026:S13|09583837465052657653756209 15027:S22|095838374650476574436f6e646974696f6e093d3e20 15028:S12|0958383746504c6f61643009 15029:S12|0958383746504c6f61643109 15030:S13|0958383746504e656761746509 15031:S10|09583837465041627309 15032:S10|09583837466c6f617409 15033:S3|786d6d 15034:S2|6670 15035:S7|61646a7573743d 15036:S10|737461636b53697a653d 15037:S10|20776f726b207265673d 15038:S3|287370 15039:S2|293d 15040:S12|20436865636b3a736176653d 15041:S2|703d 15042:S3|3d3e20 15043:S24|58383649436f646528292e7072696e74426c6f636b283429 15044:S3|202b20 15045:S24|58383649436f646528292e7072696e7449436f6465283329 15046:S2|6178 15047:S3|726178 15048:S3|656178 15049:S2|616c 15050:S2|6378 15051:S3|726378 15052:S3|656378 15053:S2|636c 15054:S2|6478 15055:S3|726478 15056:S3|656478 15057:S2|646c 15058:S2|6278 15059:S3|726278 15060:S3|656278 15061:S2|626c 15062:S2|7370 15063:S3|727370 15064:S3|657370 15065:S2|6168 15066:S2|6270 15067:S3|726270 15068:S3|656270 15069:S2|6368 15070:S2|7369 15071:S3|727369 15072:S3|657369 15073:S2|6468 15074:S2|6469 15075:S3|726469 15076:S3|656469 15077:S2|6268 15078:S7|756e6b6e6f776e 15079:S29|5838364f5554505554434f444528292e67656e52656752657072283229 15080:S3|2a385d 15081:S3|2a345d 15082:S3|2a325d 15083:S3|2a315d 15084:S24|58383649436f646528292e7072696e74496e646578283329 15085:S22|58383649436f646528292e7072696e74417267283329 15086:S10|436f6e666c696374733d 15087:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c69637473283129 15088:S74|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74436f6e666c696374732831297072696e7452656773283229 15089:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729676574416c6c6f6361746564526567283129 15090:O4|@4656,@10202,@15092,@15091 15091:O5|@15093,63,0,63,0 15092:S8|617347656e526567 15093:S57|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f6465546f583836436f64652e4d4c 15094:O4|@4656,@10202,@15096,@15095 15095:O5|@15093,66,0,66,0 15096:S7|61734650526567 15097:O4|@4656,@10202,@15099,@15098 15098:O5|@15093,69,0,69,0 15099:S8|6173584d4d526567 15100:S9|7072696e742d726567 15101:O5|0,0,0,@15103,@15102 15102:O2|@15106,0 15103:O2|@15104,0 15104:O2|0,@15105 15105:O5|@15093,231,231,0,0 15106:O2|3,@15107 15107:S11|4f74686572536f75726365 15108:O5|0,0,0,@15110,@15109 15109:O2|@15113,0 15110:O2|@15111,0 15111:O2|0,@15112 15112:O5|@15093,230,230,0,0 15113:O2|3,@15114 15114:S11|537461636b536f75726365 15115:S14|7072696e742d6c6c736f75726365 15116:O2|@10534,0 15117:O2|@15118,0 15118:O4|4,2,@15120,@15119 15119:O4|1,@15121,@14742,24 15120:O2|7,0 15121:O2|5,0 15122:O1|@15123 15123:O2|4,0 15124:O2|@15125,0 15125:O4|4,2,@15123,@15119 15126:S37|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729 15127:S2|3a0a 15128:O1|16 15129:O4|11,@9448,0,@15130 15130:O5|@15131,99,0,99,0 15131:S42|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f44455f41525241592e4d4c 15132:O4|11,@9448,0,@15133 15133:O5|@15131,112,0,112,0 15134:O4|@4656,@10202,@15136,@15135 15135:O5|@15137,3139,0,3139,0 15136:S8|6d69736d61746368 15137:S53|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f5838364f5554505554434f44452e4d4c 15138:S2|0a0a 15139:S29|5838364f5054494d49534528292e67656e6572617465436f6465283329 15140:S11|416c6c6f6353746f726520 15141:S19|416c6c6f6353746f72655661726961626c6520 15142:S3|436d70 15143:S3|4d4320 15144:S4|203c3d20 15145:S3|525220 15146:S12|4c6f636b6564584164642028 15147:S6|29203c3d3e20 15148:S13|43616c6c46756e6374696f6e20 15149:S14|76696120436c6f73757265526567 15150:S5|636f64653d 15151:S8|43616c6c52545320 15152:S19|537461636b4f766572666c6f7743616c6c4578 15153:S12|486561704f766572666c6f77 15154:S17|537461636b4f766572666c6f7743616c6c 15155:S9|4a756d704166746572 15156:S10|4a756d704265666f7265 15157:S9|4a756d70457175616c 15158:S11|4a756d7047726561746572 15159:S18|4a756d70477265617465724f72457175616c 15160:S8|4a756d704c657373 15161:S15|4a756d704c6573734f72457175616c 15162:S12|4a756d704e6f744166746572 15163:S13|4a756d704e6f744265666f7265 15164:S12|4a756d704e6f74457175616c 15165:S15|4a756d704e6f744f766572666c6f77 15166:S12|4a756d704e6f506172697479 15167:S12|4a756d704f766572666c6f77 15168:S10|4a756d70506172697479 15169:S2|204c 15170:S16|20507265646963744e6f7454616b656e 15171:S13|205072656469637454616b656e 15172:S12|4469766964655369676e6564 15173:S14|446976696465556e7369676e6564 15174:S5|4650416464 15175:S9|4650436f6d70617265 15176:S15|4650436f6d70617265416e64506f70 15177:S8|4650446976696465 15178:S15|465052657665727365446976696465 15179:S10|46504d756c7469706c79 15180:S10|46505375627472616374 15181:S17|4650526576657273655375627472616374 15182:S7|46504672656520 15183:S7|46504c6f616420 15184:O3|@6811,@15194,@15185 15185:O1|@6814 15186:S3|6e616e 15187:S4|7e696e66 15188:S3|696e66 15189:S2|302e 15190:S2|2e30 15191:S17|5265616c2e67656e466d74283129283129 15192:S14|5265616c2e67656e466d74283229 15193:S16|5265616c2e6164645a65726f73283129 15194:B8|0000000000000000 15195:S21|506f6c795265616c426f786564546f537472696e67 15196:S7|20284c41535429 15197:S13|46504c6f616453696e676c6520 15198:S13|46504c6f6164446f75626c6520 15199:S10|46504c6f6164496e7420 15200:S9|465053746174757320 15201:S17|465053746f7265416e64506f70203d3e20 15202:S11|465053746f7265203d3e20 15203:S23|465053746f726553696e676c65416e64506f70203d3e20 15204:S17|465053746f726553696e676c65203d3e20 15205:S23|465053746f7265446f75626c65416e64506f70203d3e20 15206:S17|465053746f7265446f75626c65203d3e20 15207:S10|46504c6f61645a65726f 15208:S9|46504c6f61644f6e65 15209:S5|4650416273 15210:S12|46504368616e67655369676e 15211:S16|496e64657865644a756d7043616c6320 15212:S4|202b3d20 15213:S5|202a203820 15214:S4|202a2032 15215:S15|4a756d70546f46756e6374696f6e20 15216:S12|4c6f61644164647265737320 15217:S3|2a3820 15218:S3|2a3420 15219:S3|2a3220 15220:S18|4c6f61644c6162656c41646472657373204c 15221:S19|4c6f636b4d757461626c655365676d656e7420 15222:S7|4d6f7665525220 15223:S9|4d756c7469706c7952 15224:S4|202a3d3e 15225:S9|4e6567617469766520 15226:S5|506f705220 15227:S5|5075736820 15228:S14|5261697365457863657074696f6e 15229:S7|52657065617420 15230:S10|53746f7265576f726473 15231:S10|53746f72654279746573 15232:S9|4d6f7665576f726473 15233:S9|4d6f76654279746573 15234:S12|436f6d706172654279746573 15235:S11|5265736574537461636b20 15236:S19|52657475726e46726f6d46756e6374696f6e20 15237:S23|5368696674205269676874204172697468656d65746963 15238:S19|5368696674205269676874204c6f676963616c 15239:S18|5368696674204c656674204c6f676963616c 15240:S7|20627920454358 15241:S19|5369676e457874656e64466f72446976696465 15242:S19|53746f7265436f6e7374546f4d656d6f727920 15243:S16|53746f7265496e697469616c69736564 15244:S23|53746f72654c6f6e67436f6e7374546f4d656d6f727920 15245:S10|53746f7265436f6e7374 15246:S17|53746f7265526567546f4d656d6f727920 15247:S12|54657374427974654d656d20 15248:S3|203078 15249:S9|546573745461675220 15250:S14|556e636f6e644272616e6368204c 15251:S6|5843686e6720 15252:S5|203c3d3e20 15253:S7|53534532416464 15254:S7|53534532416e64 15255:S8|53534532436f6d70 15256:S7|53534532446976 15257:S17|53534532446f75626c65546f466c6f6174 15258:S8|535345324d6f7665 15259:S14|535345324d6f766553696e676c65 15260:S7|535345324d756c 15261:S7|53534532537562 15262:S7|53534532586f72 15263:S3|524d20 15264:S15|436f6e7665727446726f6d496e7420 15265:S11|4d6f766553696e676c6520 15266:S11|4d6f7665446f75626c6520 15267:S33|5838364f5554505554434f444528292e7072696e744f7065726174696f6e283229 15268:S51|5838364f5554505554434f444528292e7072696e744f7065726174696f6e2832297072696e74426173654f6666736574283329 15269:O4|@4656,@10202,@15271,@15270 15270:O5|@15272,70,0,70,0 15271:S20|666f72776172643a20417269746852436f6e7374 15272:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f5838364f5054494d4953452e4d4c 15273:O4|@4656,@10202,@15275,@15274 15274:O5|@15272,90,0,90,0 15275:S24|666f72776172643a206f6666736574206e6f6e2d7a65726f 15276:S39|5838364f5054494d49534528292e67656e6572617465436f6465283329666f7277617264283329 15277:S39|5838364f5054494d49534528292e67656e6572617465436f646528332972657665727365283429 15278:S31|5838364f5554505554434f444528292e67656e6572617465436f6465283329 15279:S19|506f6c794c6f636b4d757461626c65436f6465 15280:S5|6c6f636b20 15281:S4|786f7220 15282:S4|73756220 15283:S4|616e6420 15284:S4|73626220 15285:S4|61646320 15286:S4|6f722020 15287:S4|61646420 15288:S4|636d7020 15289:S47|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c2833292d45 15290:O4|11,@9448,0,@15291 15291:O5|@15131,89,0,89,0 15292:S6|786f72706409 15293:S6|616e64706409 15294:S8|75636f6d69736409 15295:S3|36360a 15296:S3|30460a 15297:S6|6d6f76737309 15298:S9|637674737332736409 15299:S3|46330a 15300:S6|646976736409 15301:S6|737562736409 15302:S9|637674736432737309 15303:S6|6d756c736409 15304:S6|616464736409 15305:S9|637674736932736409 15306:S6|6d6f76736409 15307:S3|46320a 15308:S4|6a672020 15309:S4|6a6c6520 15310:S4|6a676520 15311:S4|6a6c2020 15312:S4|6a6e7020 15313:S4|6a702020 15314:S4|6a6e7320 15315:S4|6a732020 15316:S4|6a612020 15317:S4|6a6e6120 15318:S4|6a6e6520 15319:S4|6a652020 15320:S4|6a6e6220 15321:S4|6a622020 15322:S4|6a6e6f20 15323:S4|6a6f2020 15324:S5|696d756c09 15325:S6|6d6f767a7809 15326:S5|7861646409 15327:S4|65736309 15328:S5|7075736809 15329:S5|706f702009 15330:S5|6a6f202009 15331:S5|6a6e6f2009 15332:S5|6a62202009 15333:S5|6a6e622009 15334:S5|6a65202009 15335:S5|6a6e652009 15336:S5|6a6e612009 15337:S5|6a61202009 15338:S5|6a73202009 15339:S5|6a6e732009 15340:S5|6a70202009 15341:S5|6a6e702009 15342:S5|6a6c202009 15343:S5|6a67652009 15344:S5|6a6c652009 15345:S5|6a67202009 15346:S7|7863686e672009 15347:S5|6d6f762009 15348:S3|73696c 15349:S3|64696c 15350:S3|62706c 15351:S3|73706c 15352:S5|6c65612009 15353:S3|6e6f70 15354:S3|63716f 15355:S3|636471 15356:S5|736168660a 15357:S4|72657020 15358:S5|6d6f767362 15359:S5|6d6f76736c 15360:S5|7265706520 15361:S5|636d707362 15362:S8|7465737409616c2c 15363:S5|73746f7362 15364:S5|73746f7371 15365:S5|73746f736c 15366:S3|3f3f3f 15367:S5|7265742009 15368:S3|726574 15369:S5|5341564509 15370:S5|63616c6c09 15371:S5|6a6d702009 15372:S3|686c74 15373:S3|6e6567 15374:S4|74657374 15375:S4|69646976 15376:S4|64697620 15377:S4|696d756c 15378:S4|6d756c20 15379:S4|6e656720 15380:S4|70757368 15381:S4|6a6d7020 15382:S4|63616c6c 15383:O4|@4656,@10202,@15385,@15384 15384:O5|@15137,280,0,280,0 15385:S19|426164207265676973746572206e756d626572 15386:S10|71776f72642070747220 15387:S10|64776f72642070747220 15388:S9|776f72642070747220 15389:S9|627974652070747220 15390:S2|2e2b 15391:S2|2a31 15392:S2|2a32 15393:S2|2a34 15394:S2|2a38 15395:S28|5838364f5554505554434f444528292e7072696e74436f6465283229 15396:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574333273283229 15397:S26|506f6c794765744c6f774f7264657241734c61726765576f7264 15398:S11|666d756c0973742c737428 15399:S11|666164640973742c737428 15400:S9|66636f6d7009737428 15401:S12|66646976720973742c737428 15402:S11|666469760973742c737428 15403:S12|66737562720973742c737428 15404:S11|667375620973742c737428 15405:S9|666672656509737428 15406:S8|6673747009737428 15407:S8|6673742009737428 15408:S9|666e73747377096178 15409:S8|6678636809737428 15410:S8|666c642009737428 15411:S4|66636f73 15412:S5|6673717274 15413:S4|6673696e 15414:S7|66696e63737470 15415:S6|66706174616e 15416:S7|66646563737470 15417:S4|666c647a 15418:S4|666c6631 15419:S4|666c6431 15420:S4|66616273 15421:S4|66636873 15422:S5|6673747009 15423:S4|66737409 15424:S5|666c642009 15425:S6|666469767209 15426:S5|6664697609 15427:S5|6673756209 15428:S5|666d756c09 15429:S6|667375627209 15430:S6|66636f6d7009 15431:S5|6661646409 15432:S6|66696c647109 15433:S6|66696c646c09 15434:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74466c6f6174283229 15435:S4|73617220 15436:S4|73687220 15437:S4|73686c20 15438:O1|10 15439:O1|12 15440:S41|5838364f5554505554434f444528292e7072696e74436f64652832297072696e745368696674283329 15441:S26|5838364f5554505554434f444528292e6f70546f496e74283129 15442:S37|5838364f5554505554434f444528292e7072696e74436f6465283229676574363473283229 15443:S45|5838364f5554505554434f444528292e7072696e74436f64652832297072696e74454147656e6572616c283329 15444:O4|11,@9448,0,@15445 15445:O5|@15131,131,0,131,0 15446:S42|5838364f5554505554434f444528292e67656e6572617465436f6465283329707574436f6e7374283229 15447:S19|506f6c79536574436f6465436f6e7374616e74 15448:S21|506f6c79436f707942797465566563546f436f6465 15449:O4|7,@9514,0,@15450 15450:O5|@9515,196,0,196,0 15451:O4|7,@9514,0,@15452 15452:O5|@9515,185,0,185,0 15453:S42|5838364f5554505554434f444528292e67656e6572617465436f64652833297365744279746573283329 15454:S19|506f6c79446976696465417262697472617279 15455:S22|506f6c7952656d61696e646572417262697472617279 15456:O4|@4656,@10202,@15458,@15457 15457:O5|@15137,3109,0,3109,0 15458:S34|7075744e6f6e41646472436f6e73743a204e6f742061207265616c206e756d626572 15459:S49|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229 15460:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e7374283229646f436f7079283129 15461:S58|5838364f5554505554434f444528292e67656e6572617465436f64652833297075744e6f6e41646472436f6e73742832297365744d656d283229 15462:O2|242,0 15463:O2|240,0 15464:O2|102,0 15465:O2|243,0 15466:O2|15,0 15467:S30|5838364f5554505554434f444528292e6f70436f64654279746573283229 15468:B8|0000000000000000 15469:B8|000000000000f03f 15470:B8|000000000000f0bf 15471:S30|5838364f5554505554434f444528292e676574436f6e7374616e74283429 15472:O4|@4656,@10202,@15474,@15473 15473:O5|@15137,2051,0,2051,0 15474:S26|726570726f63657373202d2073697a6520696e63726561736564 15475:O4|@4656,@10202,@15477,@15476 15476:O5|@15137,198,0,198,0 15477:S25|696e7433325369676e65643a20696e76616c696420776f7264 15478:O4|@4656,@10202,@15480,@15479 15479:O5|@15137,186,0,186,0 15480:S24|627974655369676e65643a20696e76616c69642062797465 15481:O4|@4656,@10202,@15483,@15482 15482:O5|@15137,1941,0,1941,0 15483:S12|666978757041646472657373 15484:O1|22 15485:O1|21 15486:O4|@4656,@10202,@15483,@15487 15487:O5|@15137,1921,0,1921,0 15488:O1|20 15489:S30|5838364f5554505554434f444528292e66697875704c6162656c73283329 15490:S45|5838364f5554505554434f444528292e66697875704c6162656c73283329666978757041646472657373283429 15491:S59|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875704164647265737328342970726f6365737343617365283329 15492:S40|5838364f5554505554434f444528292e66697875704c6162656c7328332966697875703332283329 15493:O3|0,5,0 15494:O2|@15123,0 15495:O4|@4656,@10202,@15497,@15496 15496:O5|@15137,664,0,664,0 15497:S13|6d6f64726d3a20626164207267 15498:O4|@4656,@10202,@15500,@15499 15499:O5|@15137,665,0,665,0 15500:S13|6d6f64726d3a2062616420726d 15501:S31|5838364f5554505554434f444528292e6f70496e646578656447656e283529 15502:S26|5838364f5554505554434f444528292e72657842797465283429 15503:S35|5838364f5554505554434f444528292e6c61726765576f7264546f4279746573283229 15504:O4|@4656,@10202,@15506,@15505 15505:O5|@15137,1554,0,1554,0 15506:S22|63674f703a2053746f7265496e697469616c69736564 15507:O4|@4656,@10202,@15509,@15508 15508:O5|@15137,1552,0,1552,0 15509:S24|63674f703a20416c6c6f6353746f72655661726961626c65 15510:O4|@4656,@10202,@15512,@15511 15511:O5|@15137,1550,0,1550,0 15512:S16|63674f703a20416c6c6f6353746f7265 15513:O4|@4656,@10202,@15515,@15514 15514:O5|@15137,1547,0,1547,0 15515:S24|53746f72654e6f6e576f7264436f6e73743a203332426974 15516:O4|@4656,@10202,@15518,@15517 15517:O5|@15137,1544,0,1544,0 15518:S24|53746f72654e6f6e576f7264436f6e73743a203136426974 15519:O1|24 15520:O1|32 15521:O1|31 15522:O4|@4656,@10202,@15524,@15523 15523:O5|@15137,1519,0,1519,0 15524:S37|53746f72654c6f6e67436f6e7374546f4d656d6f727920696e2036342d626974206d6f6465 15525:O4|@4656,@10202,@15527,@15526 15526:O5|@15137,1374,0,1374,0 15527:S32|41726974684d656d4c6f6e67436f6e737420696e2036342d626974206d6f6465 15528:O1|7 15529:O1|29 15530:O1|34 15531:O1|33 15532:O1|28 15533:O1|27 15534:O1|30 15535:O1|23 15536:O1|@15537 15537:O4|1,0,0,0 15538:O1|15 15539:O1|38 15540:O1|39 15541:O1|41 15542:O2|72,0 15543:O1|11 15544:O1|14 15545:O1|47 15546:O1|@10535 15547:O2|6,4 15548:O2|6,0 15549:O2|6,5 15550:O2|6,1 15551:O2|6,7 15552:O2|0,5 15553:O2|1,4 15554:O2|0,4 15555:O4|@4656,@10202,@15557,@15556 15556:O5|@15137,1858,0,1858,0 15557:S21|63674f703a20496e64657865644a756d7043616c63 15558:O4|@4656,@10202,@15560,@15559 15559:O5|@15137,1849,0,1849,0 15560:S15|63674f703a204a756d705461626c65 15561:O4|@4656,@10202,@15563,@15562 15562:O5|@15137,1782,0,1782,0 15563:S27|4d756c7469706c79202d206164647265737320636f6e7374616e74 15564:O1|17 15565:O1|18 15566:O1|19 15567:O1|@15121 15568:O1|42 15569:O1|43 15570:O1|@15571 15571:O4|0,0,1,0 15572:O1|48 15573:O4|@4656,@10202,@15575,@15574 15574:O5|@15137,1842,0,1842,0 15575:S11|63674f703a205843686e67 15576:O4|@4656,@10202,@15578,@15577 15577:O5|@15137,1811,0,1811,0 15578:S14|63674f703a20584d4d4172697468 15579:O1|46 15580:O1|45 15581:S34|5838364f5554505554434f444528292e636f646547656e6572617465283129283229 15582:S38|5838364f5554505554434f444528292e636f646547656e657261746528312963674f70283129 15583:O1|35 15584:S49|5838364f5554505554434f444528292e636f646547656e657261746528312963674f702831296d616b654a756d70283229 15585:S24|5838364f5554505554434f444528292e6f70526567283329 15586:S35|5838364f5554505554434f444528292e696d6d6564696174654f706572616e64283329 15587:S29|5838364f5554505554434f444528292e6f70526567506c757332283329 15588:O2|224,0 15589:S15|506f6c795265616c47656e6572616c 15590:S26|5838364f5554505554434f444528292e72747343616c6c283229 15591:O2|191,0 15592:O4|@4656,@10202,@15594,@15593 15593:O5|@15137,2227,0,2227,0 15594:S48|646f457870616e73696f6e3a20416c6c6f636174696f6e207374617274656420627574206e6f7420636f6d706c657465 15595:O4|@4656,@10202,@15594,@15596 15596:O5|@15137,2209,0,2209,0 15597:O4|@4656,@10202,@15599,@15598 15598:O5|@15137,2210,0,2210,0 15599:S18|416c6c6f6353746f72653a20696e20736574 15600:O1|@15601 15601:O2|7,1 15602:O4|1,@15121,@14742,16 15603:O4|@4656,@10202,@15599,@15604 15604:O5|@15137,2228,0,2228,0 15605:O2|3,@15606 15606:O2|7,1 15607:S42|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329 15608:S56|5838364f5554505554434f444528292e657870616e64436f6d706c65784f7065726174696f6e73283329646f457870616e73696f6e283329 15609:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837297365745265666572656e636573283229 15610:S47|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372967656e436f6465283329 15611:O4|@4656,@10202,@15613,@15612 15612:O5|@15093,841,0,841,0 15613:S35|636f646547656e49436f64652d416c6c6f636174654d656d6f72795661726961626c65 15614:O3|@15121,@14742,8 15615:O3|31,@15123,@15616 15616:O4|1,@15121,@14742,8 15617:O3|38,1,0 15618:O2|3,@15619 15619:O2|1,@10542 15620:O2|1,@11193 15621:O2|1,@15622 15622:O2|7,0 15623:O2|1,@15548 15624:O1|44 15625:O4|4,2,@11193,@15626 15626:O2|3,@11193 15627:O2|37,0 15628:O4|@4656,@10202,@15630,@15629 15629:O5|@15093,1188,0,1188,0 15630:S22|636f646547656e49436f64653a204469766973696f6e 15631:O4|4,5,@10535,@15632 15632:O2|3,@10535 15633:O4|@4656,@10202,@15635,@15634 15634:O5|@15093,83,0,83,0 15635:S11|617267417347656e526567 15636:O4|@4656,@10202,@15638,@15637 15637:O5|@15093,907,0,907,0 15638:S37|496e6465786564436173654f7065726174696f6e202d2073616d6520726567697374657273 15639:O4|@4656,@10202,@15638,@15640 15640:O5|@15093,909,0,909,0 15641:O4|@4656,@10202,@15643,@15642 15642:O5|@15093,912,0,912,0 15643:S34|636f646547656e49436f64653a20496e6465786564436173654f7065726174696f6e 15644:O2|37,4 15645:O2|35,@15616 15646:O3|48,@15614,@15123 15647:O4|@4656,@10202,@15649,@15648 15648:O5|@15093,944,0,944,0 15649:S34|636f646547656e49436f64653a2050757368457863657074696f6e48616e646c6572 15650:O4|@4656,@10202,@15652,@15651 15651:O5|@15093,894,0,894,0 15652:S34|636f6465457874656e6465643a205261697365457863657074696f6e5061636b6574 15653:O1|36 15654:O4|@4656,@10202,@15656,@15655 15655:O5|@15093,1074,0,1074,0 15656:S45|636f646547656e49436f64653a205265736574537461636b507472202d206e65676174697665206f6666736574 15657:O4|@4656,@10202,@15659,@15658 15658:O5|@15093,1330,0,1330,0 15659:S38|636f646547656e49436f6465202d2053534532416e64206e6f7420696e207265676973746572 15660:O4|@4656,@10202,@15662,@15661 15661:O5|@15093,1328,0,1328,0 15662:S38|636f646547656e49436f6465202d2053534532586f72206e6f7420696e207265676973746572 15663:O4|@4656,@10202,@15665,@15664 15664:O5|@15093,1314,0,1314,0 15665:S22|466c6f61744669786564496e743a206e6f7420726567 15666:O4|@4656,@10202,@15668,@15667 15667:O5|@15093,1143,0,1143,0 15668:S29|636f6465457874656e646564202d2053686966744f7065726174696f6e 15669:O4|@4656,@10202,@15671,@15670 15670:O5|@15093,1054,0,1054,0 15671:S24|636f646547656e49436f64653a2054657374546167426974 15672:O4|@4656,@10202,@15674,@15673 15673:O5|@15093,1254,0,1254,0 15674:S39|636f646547656e49436f64653a20436f6d70617265466c6f6174696e675074206e6f7420667030 15675:O4|@4656,@10202,@15677,@15676 15676:O5|@15093,1260,0,1260,0 15677:S37|636f646547656e49436f64653a20436f6d70617265466c6f6174696e6750743a20544f444f 15678:O4|@4656,@10202,@15680,@15679 15679:O5|@15093,1279,0,1279,0 15680:S40|636f646547656e49436f64653a20466c6f6174696e67506f696e744172697468206e6f7420667030 15681:O4|@4656,@10202,@15680,@15682 15682:O5|@15093,1280,0,1280,0 15683:O4|@4656,@10202,@15685,@15684 15684:O5|@15093,1286,0,1286,0 15685:S30|636f646547656e49436f64653a20583837465041726974683a20544f444f 15686:O4|@4656,@10202,@15688,@15687 15687:O5|@15093,1293,0,1293,0 15688:S35|636f646547656e49436f64653a205838374650556e6172794f7073206e6f7420667030 15689:O4|@4656,@10202,@15688,@15690 15690:O5|@15093,1294,0,1294,0 15691:O4|@4656,@10202,@15693,@15692 15692:O5|@15093,1303,0,1303,0 15693:S35|636f646547656e49436f64653a20466c6f61744669786564496e74206e6f7420667030 15694:O3|18,@15123,0 15695:S52|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329 15696:O4|@4656,@10202,@15698,@15697 15697:O5|@15093,97,0,97,0 15698:S19|736f75726365417347656e5265674f724d656d 15699:O4|@4656,@10202,@15701,@15700 15700:O5|@15093,137,0,137,0 15701:S26|636f646547656e49436f64653a204c6f6164417267756d656e74 15702:O4|@4656,@10202,@15698,@15703 15703:O5|@15093,90,0,90,0 15704:S54|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c4c6f6164417267756d656e74283229 15705:O4|@4656,@10202,@15707,@15706 15706:O5|@15093,818,0,818,0 15707:S30|636f6465457874656e6465643a2065617820696e20736176652072656773 15708:O4|@4656,@10202,@15710,@15709 15709:O5|@15093,819,0,819,0 15710:S34|636f6465457874656e6465643a206172672072656720696e20736176652072656773 15711:S64|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e6465642833296d616b655361766573283229 15712:O2|3,@15713 15713:O2|1,@15123 15714:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329676574436f6e737441726773283229 15715:O4|@4656,@10202,@15717,@15716 15716:O5|@15093,265,0,265,0 15717:S11|6e6f20776f726b20726567 15718:O2|@15720,@15719 15719:O1|@7015 15720:O1|@7014 15721:S44|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372961726373283129 15722:S51|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296e6f646541646472657373283129 15723:O1|@7013 15724:S58|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c756573283329 15725:S71|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c756573283229 15726:O4|@4656,@10202,@15728,@15727 15727:O5|@15093,412,0,412,0 15728:S25|6d6f76654561636856616c7565202d20656d70747920736574 15729:O4|@4656,@10202,@15731,@15730 15730:O5|@15093,292,0,292,0 15731:S30|6d6f76654561636856616c7565202d204d656d6f7279417267756d656e74 15732:O4|@4656,@10202,@15734,@15733 15733:O5|@15093,405,0,405,0 15734:S20|6d6f76654561636856616c75653a206379636c65 15735:O4|@4656,@10202,@15737,@15736 15736:O5|@15093,190,0,190,0 15737:S30|6c6c53746f7265417267756d656e743a2053746f7265417267756d656e74 15738:O4|@4656,@10202,@15740,@15739 15739:O5|@15093,171,0,171,0 15740:S35|6c6c53746f7265417267756d656e743a2053746f7265204650526567203c3e20667030 15741:O4|@4656,@10202,@15740,@15742 15742:O5|@15093,182,0,182,0 15743:S87|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c7565283229 15744:O4|@4656,@10202,@15734,@15745 15745:O5|@15093,347,0,347,0 15746:S89|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296d6f76654d756c7469706c6556616c7565732833296d6f766556616c7565732832296d6f76654561636856616c75652832292f37 15747:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c53746f7265417267756d656e74283529 15748:O4|103,@10033,@15750,@15749 15749:O5|@15751,91,0,91,0 15750:S11|737461636b20656d707479 15751:S41|6d6c736f757263652f4d4c436f6d70696c65722f5374726f6e676c79436f6e6e65637465642e736d6c 15752:S48|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e7473283229 15753:O1|@7028 15754:S66|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e74283329 15755:S80|5374726f6e676c79436f6e6e65637465642e7374726f6e676c79436f6e6e6563746564436f6d706f6e656e74732832297374726f6e67636f6d706f6e656e7428332970726f636573734c696e6b283229 15756:O4|@4656,@10202,@15758,@15757 15757:O5|@15093,789,0,789,0 15758:S29|46756e6374696f6e43616c6c202d204d656d6f72794c6f636174696f6e 15759:O4|@4656,@10202,@15761,@15760 15760:O5|@15093,216,0,216,0 15761:S31|636f6465457874417267756d656e74202d20436f6e7461696e657241646472 15762:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874417267756d656e74283229 15763:S67|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c283329 15764:S82|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e646564283329636f64655461696c43616c6c28332972656e756d62657241726773283129 15765:O2|35,@15766 15766:O2|3,@15123 15767:S68|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729636f6465457874656e64656428332970757368537461636b41726773283329 15768:S65|58383649436f6465546f583836436f646528292e69636f6465546f583836436f64652837296c6c416c6c6f636174654d656d6f72794f7065726174696f6e283229 15769:S15|506f6c794f72417262697472617279 15770:S29|5838364f5554505554434f444528292e636f6465437265617465283329 15771:S53|58383649436f6465546f583836436f646528292e69636f6465546f583836436f646528372970726f63657373426c6f636b73283129 15772:S55|58383649436f6465546f583836436f646528292e69636f6465546f583836436f6465283729696e737472756374696f6e55736573283129 15773:S4|093d3e20 15774:S62|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e74526567697374657273283129 15775:S78|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f5838362837297072696e745265676973746572732831297072696e74526567416c6c6f63283229 15776:O1|@7074 15777:O2|3,@15778 15778:S5|726e6f203d 15779:O5|0,0,0,@15781,@15780 15780:O2|@15785,0 15781:O2|@15782,0 15782:O2|0,@15783 15783:O5|@15784,59,59,0,0 15784:S56|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836507573685265676973746572732e4d4c 15785:O2|3,@15786 15786:S11|43616368654d656d6f7279 15787:O5|0,0,0,@15789,@15788 15788:O2|@15792,0 15789:O2|@15790,0 15790:O2|0,@15791 15791:O5|@15784,58,58,0,0 15792:O2|3,@15793 15793:S10|4361636865537461636b 15794:O5|0,0,0,@15796,@15795 15795:O2|@15799,0 15796:O2|@15797,0 15797:O2|0,@15798 15798:O5|@15784,62,62,0,0 15799:O2|3,@15800 15800:S11|4361636865546167676564 15801:S15|7072696e742d636163686554797065 15802:O2|@15803,0 15803:O2|0,@10542 15804:O4|4,@9489,0,@15805 15805:O5|@10000,124,0,124,0 15806:S39|5838365075736852656769737465727328292e6164645265676973746572507573686573283529 15807:O2|@10515,0 15808:O4|@4656,@10202,@15810,@15809 15809:O5|@15784,1243,0,1243,0 15810:S11|61646a757374537461636b 15811:S53|5838365075736852656769737465727328292e6164645265676973746572507573686573283529637265617465426c6f636b283129 15812:S55|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129 15813:O4|@4656,@10202,@15815,@15814 15814:O5|@15784,288,0,288,0 15815:S17|6d6170537263526567202d20756e736574 15816:O4|@4656,@10202,@15818,@15817 15817:O5|@15784,356,0,356,0 15818:S21|6d6170576f726b526567202d204d75737450757368 15819:O4|@4656,@10202,@15821,@15820 15820:O5|@15784,368,0,368,0 15821:S21|6d6170576f726b526567202d206f6e20737461636b 15822:O4|@4656,@10202,@15824,@15823 15823:O5|@15784,895,0,895,0 15824:S27|707573685265676973746572733a20426567696e48616e646c6572 15825:O4|@4656,@10202,@15827,@15826 15826:O5|@15784,561,0,561,0 15827:S26|4c6f6164417267756d656e74202d20616c726561647920736574 15828:O4|@4656,@10202,@15830,@15829 15829:O5|@15784,582,0,582,0 15830:S31|4c6f6164417267756d656e74202d20616c7265616479206f6e20737461636b 15831:O4|@4656,@10202,@15833,@15832 15832:O5|@15784,605,0,605,0 15833:S9|63616368654b696e64 15834:O4|@4656,@10202,@15836,@15835 15835:O5|@15784,414,0,414,0 15836:S29|6d617044657374436f6e7461696e65723a20616c726561647920736574 15837:O4|@4656,@10202,@15839,@15838 15838:O5|@15784,395,0,395,0 15839:S21|6d6170436f6e7461696e6572202d20546f50526567 15840:O4|@4656,@10202,@15842,@15841 15841:O5|@15784,394,0,394,0 15842:S20|6d6170436f6e7461696e6572202d20756e736574 15843:O4|@4656,@10202,@15845,@15844 15844:O5|@15784,869,0,869,0 15845:S27|70757368526567697374657273202d20706f702068616e646c6572 15846:O4|@4656,@10202,@15848,@15847 15847:O5|@15784,1024,0,1024,0 15848:S36|70757368526567697374657273202d2041746f6d696345786368616e6765416e64416464 15849:S64|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129646f50757368283229 15850:O4|@4656,@10202,@15852,@15851 15851:O5|@15784,323,0,323,0 15852:S24|6d617044657374526567202d20616c726561647920736574 15853:O4|@4656,@10202,@15855,@15854 15854:O5|@15784,346,0,346,0 15855:S29|6d617044657374526567202d20616c7265616479206f6e20737461636b 15856:S71|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312970757368526567697374657273283229 15857:O4|@4656,@10202,@15859,@15858 15858:O5|@15784,420,0,420,0 15859:S17|6d6170536f75726365202d20756e736574 15860:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170536f757263654578283229 15861:O3|@14742,0,0 15862:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170496e6465784578283229 15863:S87|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296e6577436f6e7461696e657273283229 15864:S86|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b73283129707573685265676973746572732832296c6f6164537461636b417267283329 15865:O4|@4656,@10202,@15867,@15866 15866:O5|@15784,550,0,550,0 15867:S30|6d6170416e644c6f6164202d20616c72656164792061206d656d206c6f63 15868:O4|@4656,@10202,@15870,@15869 15869:O5|@15784,549,0,549,0 15870:S32|6d6170416e644c6f6164202d20616c7265616479206120737461636b206c6f63 15871:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d6170416e644c6f6164283229 15872:S83|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831297075736852656769737465727328322967657456616c756573283229 15873:S68|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b732831296d617044657374526567283229 15874:S61|5838365075736852656769737465727328292e6164645265676973746572507573686573283529736574436f6d6d6f6e43616368655374617465283129 15875:O4|@4656,@10202,@15877,@15876 15876:O5|@15784,226,0,226,0 15877:S24|72656d6f76654974656d73202d20737461636b2073697a65 15878:S69|5838365075736852656769737465727328292e616464526567697374657250757368657328352970726f63657373426c6f636b7328312972656d6f76654974656d73283129 15879:S55|5838365075736852656769737465727328292e61646452656769737465725075736865732835297365745265666572656e636573283129 15880:O4|@4656,@10202,@15882,@15881 15881:O5|@14867,256,0,256,0 15882:S9|63686f6f7365526567 15883:S83|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c69637453657473283129 15884:S108|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c283129 15885:S120|58383649436f64655472616e73666f726d28292e636f646549436f646546756e6374696f6e546f58383628372970726f63657373436f64652834297370696c6c46726f6d436f6e666c6963745365747328312973656c656374415265676973746572546f5370696c6c28312963686f6f7365526567283329 15886:S43|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329 15887:O1|@15619 15888:O1|@15623 15889:O1|@15890 15890:O2|1,@15120 15891:O1|@15620 15892:O1|@10534 15893:S59|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332970726f63657373426c6f636b73283129 15894:O4|@4656,@10202,@15896,@15895 15895:O5|@15897,600,0,600,0 15896:S33|7265676973746572416c6c6f63617465202d2053686966744f7065726174696f6e 15897:S60|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836416c6c6f636174655265676973746572732e4d4c 15898:S62|583836416c6c6f6361746552656769737465727328292e616c6c6f636174655265676973746572732833297265676973746572416c6c6f63617465283429 15899:S58|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e645265676973746572283329 15900:S72|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332966696e64526567697374657228332966696e6441467269656e64283329 15901:S54|583836416c6c6f6361746552656769737465727328292e616c6c6f6361746552656769737465727328332961646448696e7473283429 15902:S73|583836416c6c6f6361746552656769737465727328292e616c6c6f63617465526567697374657273283329616464536f75726365416e6444657374696e6174696f6e48696e74283229 15903:S46|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229 15904:O1|@7326 15905:S39|58383649436f64654964656e746966795265666572656e63657328292e61726752656773283129 15906:O1|@7327 15907:S41|58383649436f64654964656e746966795265666572656e63657328292e617267537461636b73283129 15908:O6|0,0,0,0,0,0 15909:S66|58383649436f6465476574436f6e666c6963745365747328292e676574436f6e666c696374537461746573283229636f6e666c69637473466f72496e737472283529 15910:S19|496e745365742e6164644974656d2832292829 15911:S20|496e745365742e6d696e75734c69737473283229 15912:S51|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229 15913:S64|58383649436f64654964656e746966795265666572656e63657328292e676574496e737472756374696f6e5374617465283229676574536f7572636573283129 15914:S20|496e745365742e6d657267654c69737473283329 15915:O1|@7361 15916:S66|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129283129 15917:S63|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129636f6d70617265283129 15918:O4|@4656,@10202,@15920,@15919 15919:O5|@14867,129,0,129,0 15920:S10|6d61726b417350757368 15921:S37|58383649436f64655472616e73666f726d28292e7370696c6c526567697374657273283229 15922:S53|58383649436f64655472616e73666f726d28292e7370696c6c5265676973746572732832297370696c6c536f6d6552656773283129 15923:S49|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329 15924:S64|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74283129 15925:O4|@4656,@10202,@15927,@15926 15926:O5|@14895,644,0,644,0 15927:S24|707573685265676973746572733a20636163686520726567 15928:O4|@4656,@10202,@15927,@15929 15929:O5|@14895,643,0,643,0 15930:S10|41726269747261727922 15931:S70|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329637265617465526573756c74496e73747273283529 15932:O1|@7382 15933:O4|@4656,@10202,@15935,@15934 15934:O5|@14895,479,0,479,0 15935:S20|4d69736d61746368656420636320737461746573 15936:O4|@4656,@10202,@15935,@15937 15937:O5|@14895,470,0,470,0 15938:O4|@4656,@10202,@15935,@15939 15939:O5|@14895,469,0,469,0 15940:O4|@4656,@10202,@15942,@15941 15941:O5|@14895,487,0,487,0 15942:S21|4c6f6f706564207374617465206e65656473206363 15943:S65|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f70283129 15944:O4|@4656,@10202,@15946,@15945 15945:O5|@14895,447,0,447,0 15946:S17|4d69736d61746368656420737461746573 15947:S81|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229 15948:S96|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329726570726f636573734c6f6f7028312970726f63657373426c6f636b73283229616464537563636573736f72283129 15949:S26|496e745365742e706172746974696f6e28312970617274283229 15950:S61|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e283129 15951:O4|@4656,@10202,@15953,@15952 15952:O5|@14895,336,0,336,0 15953:S14|4343436865636b206661696c6564 15954:O4|@4656,@10202,@15953,@15955 15955:O5|@14895,335,0,335,0 15956:S72|58383649436f64654964656e746966795265666572656e63657328292e6964656e74696679526567697374657273283329626c6f636b5363616e2831297363616e436f6465283329 15957:O4|@4656,@10202,@15959,@15958 15958:O5|@14676,3095,0,3095,0 15959:S20|73706c6974436f6465202d206e6f20626567696e 15960:S53|583836436f646574726565546f49436f646528292e636f646546756e6374696f6e546f58383628332973706c6974436f6465283329 15961:O2|@7399,@4771 15962:O5|0,0,0,@15964,@15963 15963:O2|@15967,0 15964:O2|@15965,0 15965:O2|0,@15966 15966:O5|@14895,44,44,0,0 15967:O2|3,@15968 15968:S8|43434e6565646564 15969:O5|0,0,0,@15964,@15970 15970:O2|@15971,0 15971:O2|3,@15972 15972:S8|4343556e75736564 15973:S15|7072696e742d696e43435374617465 15974:O1|@7400 15975:O5|0,0,0,@15977,@15976 15976:O2|@15981,0 15977:O2|@15978,0 15978:O2|0,@15979 15979:O5|@15980,72,72,0,0 15980:S48|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f58383649436f64652e4d4c 15981:O2|3,@15982 15982:S5|4363526566 15983:S11|7072696e742d6363526566 15984:O2|@11148,@15985 15985:O2|@11162,@15986 15986:O2|@11161,@15987 15987:O2|@15989,@15988 15988:O2|@15991,@15990 15989:O2|2,3 15990:O2|@14832,@15992 15991:O2|2,2 15992:O2|@10535,0 15993:O2|@15995,@15994 15994:O2|@15997,@15996 15995:O2|1,@15550 15996:O2|@16000,@15999 15997:O2|1,@15998 15998:O2|5,1 15999:O2|@16003,@16002 16000:O2|1,@16001 16001:O2|4,1 16002:O2|@16006,@16005 16003:O2|1,@16004 16004:O2|3,1 16005:O2|@16008,@16007 16006:O2|1,@14832 16007:O2|@16010,@16009 16008:O2|1,@12641 16009:O2|@15890,@16011 16010:O2|1,@10544 16011:O2|@15623,@16012 16012:O2|@10534,@16013 16013:O2|@15620,@16014 16014:O2|@16016,@16015 16015:O2|@15619,0 16016:O2|1,@16017 16017:O2|3,0 16018:O3|@7401,@4775,@4773 16019:O5|0,0,0,@16021,@16020 16020:O2|@16024,0 16021:O2|@16022,0 16022:O2|0,@16023 16023:O5|@15137,935,935,0,0 16024:O2|3,@16025 16025:S15|41646472657373436f6e7374417267 16026:O5|0,0,0,@16028,@16027 16027:O2|@16031,0 16028:O2|@16029,0 16029:O2|0,@16030 16030:O5|@15137,933,933,0,0 16031:O2|3,@16032 16032:S9|4d656d6f7279417267 16033:O1|@7403 16034:O5|0,0,0,@16036,@16035 16035:O2|@16039,0 16036:O2|@16037,0 16037:O2|0,@16038 16038:O5|@15137,934,934,0,0 16039:O2|3,@16040 16040:S18|4e6f6e41646472657373436f6e7374417267 16041:O5|0,0,0,@16043,@16042 16042:O2|@16046,0 16043:O2|@16044,0 16044:O2|0,@16045 16045:O5|@15137,932,932,0,0 16046:O2|3,@16047 16047:S11|5265676973746572417267 16048:S20|7072696e742d7265674f724d656d6f7279417267 16049:S21|7072696e747265674f724d656d6f72794172672829 16050:O2|@7404,@4773 16051:O5|0,0,0,@16053,@16052 16052:O2|@16056,0 16053:O2|@16054,0 16054:O2|0,@16055 16055:O5|@15137,683,683,0,0 16056:O2|3,@16057 16057:S6|496e64657831 16058:O5|0,0,0,@16053,@16059 16059:O2|@16060,0 16060:O2|3,@16061 16061:S6|496e64657832 16062:O5|0,0,0,@16053,@16063 16063:O2|@16064,0 16064:O2|3,@16065 16065:S6|496e64657834 16066:O5|0,0,0,@16053,@16067 16067:O2|@16068,0 16068:O2|3,@16069 16069:S6|496e64657838 16070:O5|0,0,0,@16053,@16071 16071:O2|@16072,0 16072:O2|3,@16073 16073:S7|4e6f496e646578 16074:S15|7072696e742d696e64657854797065 16075:O1|@7405 16076:O1|@7406 16077:O5|0,0,0,@16079,@16078 16078:O2|@16082,0 16079:O2|@16080,0 16080:O2|0,@16081 16081:O5|@15137,204,204,0,0 16082:O2|3,@16083 16083:S10|47656e6572616c526567 16084:S12|7072696e742d67656e526567 16085:O1|@7407 16086:O30|@15619,@15620,@10534,@16016,@15713,@16088,@15623,@15890,@16010,@16008,@16006,@16003,@16000,@15997,@15995,@16089,@10542,@10544,@13990,@16090,@15554,@15552,@16087,@10535,@14832,@15991,@15989,@11161,@11162,@11148 16087:O2|0,6 16088:O2|1,@15121 16089:O2|1,@15601 16090:O2|0,3 16091:O2|@15619,@16092 16092:O2|@16016,@16093 16093:O2|@16010,@16094 16094:O2|@16008,@16095 16095:O2|@16006,0 16096:B8|ffffffffffffff7f 16097:B8|0000000000000080 16098:O1|@7408 16099:O5|0,0,0,@16101,@16100 16100:O2|@16104,0 16101:O2|@16102,0 16102:O2|0,@16103 16103:O5|@15980,34,34,0,0 16104:O2|3,@16105 16105:S4|50526567 16106:S10|7072696e742d70726567 16107:O1|@7409 16108:O5|0,0,0,@16110,@16109 16109:O2|@16113,0 16110:O2|@16111,0 16111:O2|0,@16112 16112:O5|@15980,37,37,0,0 16113:O2|3,@16114 16114:S8|537461636b4c6f63 16115:S15|7072696e742d737461636b4c6f636e 16116:O4|@4656,@10202,@16118,@16117 16117:O5|@16119,861,0,861,0 16118:S13|4e6f74204249434c616d626461 16119:S63|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f5354415449435f4c494e4b5f414e445f43415345532e736d6c 16120:O1|@7411 16121:O4|@4656,@10202,@16123,@16122 16122:O5|@16119,847,0,847,0 16123:S31|6f75746572206c6576656c207265616368656420696e20636f7079436f6465 16124:S67|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837292d45 16125:O1|@7412 16126:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329746f704c6576656c283129 16127:S48|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e636f646547656e6572617465283329 16128:S7|282066726f6d20 16129:S11|2065786861757374697665 16130:O2|3,@16131 16131:S5|454c53453a 16132:O2|3,@16133 16133:S6|434153452028 16134:O2|3,@14530 16135:O2|3,@16136 16136:S3|494628 16137:O2|3,@16138 16138:S2|2428 16139:O2|3,@9595 16140:O2|3,@9596 16141:O2|@16143,@16142 16142:O2|@9566,0 16143:S10|52454355525349564528 16144:S5|434c4f5328 16145:S6|504152414d28 16146:S6|4c4f43414c28 16147:S9|494e44495245435428 16148:S3|434c3d 16149:S8|204c4f43414c533d 16150:O2|3,@16151 16151:S5|415247533d 16152:O2|3,@16153 16153:S4|5245533d 16154:S6|20434c4f533d 16155:O2|@16156,0 16156:O2|3,@16157 16157:S9|297b4c414d4244417d 16158:O2|3,@16159 16159:S7|4c414d42444128 16160:S5|424c4f434b 16161:S9|524543434f4e535452 16162:O1|@7413 16163:S33|4261636b656e64496e7465726d656469617465436f64652e707265747479283129 16164:S34|4261636b656e64496e7465726d656469617465436f64652e704c6973742833292829 16165:S11|434f4e5441494e45522023 16166:S6|4d555455414c 16167:O2|@9586,0 16168:S6|4445434c2023 16169:O2|@10391,@16170 16170:O2|@16171,0 16171:O2|3,@16172 16172:S5|20414e4420 16173:S40|4261636b656e64496e7465726d656469617465436f64652e70726574747942696e64696e67283129 16174:S50|4261636b656e64496e7465726d656469617465436f64652e7072657474792831297072657474794172675479706573283129 16175:O2|3,@16176 16176:S10|3d3e2064656661756c74 16177:O1|@7490 16178:S54|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329 16179:O2|@7442,@16180 16180:O2|@7483,@16179 16181:O4|@4656,@10202,@16183,@16182 16182:O5|@16119,421,0,421,0 16183:S46|64656353657175656e63655769746846696e616c4578703a206c617374206973206e6f742061204e756c6c446563 16184:O4|@4656,@10202,@16186,@16185 16185:O5|@16119,419,0,419,0 16186:S30|64656353657175656e63655769746846696e616c4578703a20656d707479 16187:S74|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129 16188:S85|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392970726576283329 16189:S104|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929707265762833296d616b65436c6f73757265456e747279283229 16190:S88|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d62646128392972656343616c6c283129 16191:O1|@7449 16192:O5|0,0,0,@16194,@16193 16193:O2|@16197,0 16194:O2|@16195,0 16195:O2|0,@16196 16196:O5|@16119,745,745,0,0 16197:O2|3,@16198 16198:S7|54726943616c6c 16199:O5|0,0,0,@16194,@16200 16200:O2|@16201,0 16201:O2|3,@16202 16202:S10|547269436c6f73757265 16203:O5|0,0,0,@16194,@16204 16204:O2|@16205,0 16205:O2|3,@16206 16206:S8|547269556e726566 16207:S84|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e736572742831296d617041726773283229 16208:S83|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f707950726f63436c6f73757265283329 16209:S78|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f70794c616d626461283929 16210:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e73283129 16211:O4|@4656,@10202,@16213,@16212 16212:O5|@16119,381,0,381,0 16213:S8|61734d757475616c 16214:S111|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729696e73657274283129636f70794465636c61726174696f6e7328312970726f63657373436c6f7375726573283329 16215:O2|@7474,@4729 16216:O5|@12708,51,0,51,0 16217:S17|4c697374506169722e7a69704571283229 16218:O1|@7475 16219:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129283129 16220:S87|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831296c6571283129 16221:O4|@4656,@10202,@16223,@16222 16222:O5|@16119,659,0,659,0 16223:S5|4361736573 16224:S81|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129 16225:S94|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e7665727443617365283129657874656e6443617365283229 16226:S90|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e766572744361736528312966696c746572283129 16227:S93|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f64652837297265636f6e76657274436173652831297265636f6e76657274283129 16228:O1|@7484 16229:O5|0,0,0,@16231,@16230 16230:O2|@16234,0 16231:O2|@16232,0 16232:O2|0,@16233 16233:O5|@16119,495,495,0,0 16234:O2|3,@16235 16235:S9|446966666572656e74 16236:O1|@7485 16237:O5|0,0,0,@16239,@16238 16238:O2|@16242,0 16239:O2|@16240,0 16240:O2|0,@16241 16241:O5|@11635,219,219,0,0 16242:O2|3,@16243 16243:S15|4249434c6f6164417267756d656e74 16244:O5|0,0,0,@16246,@16245 16245:O2|@16249,0 16246:O2|@16247,0 16247:O2|0,@16248 16248:O5|@11635,220,220,0,0 16249:O2|3,@16250 16250:S14|4249434c6f6164436c6f73757265 16251:O5|0,0,0,@16253,@16252 16252:O2|@16256,0 16253:O2|@16254,0 16254:O2|0,@16255 16255:O5|@11635,218,218,0,0 16256:O2|3,@16257 16257:S12|4249434c6f61644c6f63616c 16258:O5|0,0,0,@16260,@16259 16259:O2|@16263,0 16260:O2|@16261,0 16261:O2|0,@16262 16262:O5|@11635,221,221,0,0 16263:O2|3,@16264 16264:S16|4249434c6f6164526563757273697665 16265:S17|7072696e742d6269634c6f6164466f726d 16266:O5|0,0,0,@16231,@16267 16267:O2|@16268,0 16268:O2|3,@16269 16269:S7|53696d696c6172 16270:S16|7072696e742d73696d696c6172697479 16271:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e64283329 16272:S86|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729636f7079436f6e6428332973696d696c6172283229 16273:O1|@7441 16274:S65|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f6465283729 16275:O1|@7488 16276:S76|434f4445545245455f5354415449435f4c494e4b5f414e445f434153455328292e7374617469634c696e6b416e644361736573283329636f7079436f646528372967657450726f7073283129 16277:O1|@7491 16278:O4|@4656,@10202,@16280,@16279 16279:O5|@14640,207,0,207,0 16280:S30|4c69667465642066756e6374696f6e206f7574206f6620636f6e74657874 16281:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f6465283129 16282:S11|3c746f70206c6576656c3e 16283:S51|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d62646173283129 16284:S36|434f4445545245455f46554e4354494f4e5328292e616464546f436c6f73757265283229 16285:S61|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831296765744974656d283229 16286:O4|@4656,@10202,@16288,@16287 16287:O5|@14640,400,0,400,0 16288:S8|6d6170546f417267 16289:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283129 16290:S82|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329636c6f73757265526566283229 16291:S84|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329726563757273697665526566283129 16292:S69|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f64792835296c6966744c616d626461732831297472616e73666f726d4c616d626461283329 16293:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283129 16294:S77|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929636c6f73757265526566283229 16295:O1|@7521 16296:S81|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f7375726528392970726f636573736564426f64792d283129 16297:S64|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f636573734c616d62646157697468436c6f73757265283929 16298:S65|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f647928352970726f63657373436f646528312970726f6365737344656373283129 16299:S37|434f4445545245455f4c414d4244415f4c49465428292e70726f63657373426f6479283529 16300:S35|434f4445545245455f4c414d4244415f4c49465428292e636865636b426f6479283429 16301:S65|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636746756e7328342970726f6365737342696e64696e6773283129 16302:O2|@16304,@16303 16303:O1|@7532 16304:O1|@7531 16305:S28|434f4445545245455f46554e4354494f4e5328292e61726373283129 16306:S35|434f4445545245455f46554e4354494f4e5328292e6e6f646541646472657373283129 16307:O4|@4656,@10202,@16309,@16308 16308:O5|@11070,449,0,449,0 16309:S24|706172746974696f6e4d757461626c6542696e64696e6773 16310:S63|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d6264612834296c6f6f6b75704c6f63616c283129 16311:S60|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429636f6e746578742d283129 16312:S49|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e63674c616d626461283429 16313:O1|@7539 16314:O2|@7540,@4683 16315:S51|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e6d657267655475706c6550726f7073283229 16316:S48|4261636b656e64496e7465726d656469617465436f64652e436f6465546167732e73706c697450726f70732833292829 16317:O1|@7546 16318:S53|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e6572617465283429 16319:S68|434f4445545245455f434f444547454e5f434f4e5354414e545f46554e4354494f4e5328292e636f646547656e65726174652834296578747261637450726f7073283129 16320:O4|@4656,@10202,@16322,@16321 16321:O5|@11070,310,0,310,0 16322:S27|6d6b4c6f616478783a20617267756d656e74206e65676174697665 16323:S31|434f44455452454528292e67656e436f646528332961646444656373283129 16324:O1|@7550 16325:S36|434f44455452454528292e67656e436f646528332973696d706c69667953706563283129 16326:O1|@7553 16327:O2|3,@16328 16328:S20|4f7574707574206f662073696d706c6966696572 16329:O2|@10468,0 16330:O1|@7554 16331:O4|@4656,@10202,@16333,@16332 16332:O5|@16334,1476,0,1476,0 16333:S30|746f70206c6576656c207265616368656420696e206f7074696d69736572 16334:S51|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f4f5054494d495345522e736d6c 16335:S42|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632836292d45 16336:O1|@7555 16337:S44|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f632d283429283129 16338:O2|3,@16339 16339:S17|4f7574707574206f6620636c65616e6572 16340:S66|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f63657373547265652834296d616b6541646472283129 16341:O1|@7558 16342:S35|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283129283129 16343:O1|@7561 16344:S47|434f4445545245455f4f5054494d4953455228292e6f70744c616d6264612835296f7074436f6e746578742d283129 16345:O2|0,@10468 16346:O4|@4658,@10397,0,@16347 16347:O5|@16334,522,0,522,0 16348:S33|434f4445545245455f4f5054494d4953455228292e6f70744c616d626461283529 16349:O1|@7568 16350:O2|8,@10548 16351:S53|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e672834292d45 16352:S45|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e283729 16353:O4|@4656,@10202,@14036,@16354 16354:O5|@16334,248,0,248,0 16355:S39|434f4445545245455f4f5054494d4953455228292e6f6e6c7946756e6374696f6e283129283129 16356:S62|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e747279283129 16357:S71|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429726570456e7472792831296d6170417267283229 16358:S51|434f4445545245455f4f5054494d4953455228292e6d6170436f6465466f7246756e6374696f6e526577726974696e67283429 16359:S55|434f4445545245455f4f5054494d4953455228292e6c69667452656375727369766546756e6374696f6e28372967657441726773283829 16360:O4|4,@9489,0,@16361 16361:O5|@14647,104,0,104,0 16362:S40|434f4445545245455f4f5054494d4953455228292e626f647952657475726e735475706c65283129 16363:S30|434f4445545245455f4f5054494d4953455228292e6d6170417267283129 16364:S33|434f4445545245455f4f5054494d4953455228292e66696e645475706c65283229 16365:S53|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429646f4d6170283129 16366:S45|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e41726773283429 16367:O4|@4729,@12707,0,@16368 16368:O5|@12708,89,0,89,0 16369:S21|4c697374506169722e666f6c647245712834292829 16370:S2|2d45 16371:S58|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834296d61705061747465726e283429 16372:S47|434f4445545245455f4f5054494d4953455228292e6275696c6446756c6c5475706c65283229657874417267283229 16373:S2|2d50 16374:S73|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e74283529 16375:S40|434f4445545245455f46554e4354494f4e5328292e6d6b536574436f6e7461696e65722833292829 16376:S86|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c79283329 16377:S97|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272794170706c792833296d616b6541726773283229 16378:S85|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b283229 16379:O2|8,@10535 16380:O2|@16381,0 16381:O2|@16379,1 16382:O4|@4656,@10202,@16384,@16383 16383:O5|@16334,731,0,731,0 16384:S17|6d6170417267733a206d69736d61746368 16385:O1|@7607 16386:S95|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d617041726773283229 16387:S104|434f4445545245455f4f5054494d4953455228292e7472616e73666f726d46756e6374696f6e417267732834297472616e73666f726d46756e6374696f6e417267756d656e7428352963757272795061636b2832296d6170417267732832296d6170417267283229 16388:S45|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429646f4d6170283129 16389:S37|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c74283429 16390:S48|434f4445545245455f4f5054494d4953455228292e64657475706c65526573756c742834296d61704172672833292829 16391:O4|@4656,@10202,@16393,@16392 16392:O5|@16334,936,0,936,0 16393:S15|6465637572727946756e6374696f6e 16394:S47|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329646f4d6170283129 16395:S39|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e283329 16396:S50|434f4445545245455f4f5054494d4953455228292e6465637572727946756e6374696f6e2833296d61704172672833292829 16397:S36|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e283229 16398:S33|434f4445545245455f46554e4354494f4e5328292e636f646550726f7073283129 16399:S51|434f4445545245455f4f5054494d4953455228292e757365546f5061747465726e2832296d657267655061747465726e283229 16400:O1|@7641 16401:O1|@7645 16402:S52|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f70283429 16403:S62|434f4445545245455f4f5054494d4953455228292e7265706c6163655461696c526563757273697665576974684c6f6f702834296d617041726773283529 16404:S40|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329 16405:S51|434f4445545245455f4f5054494d4953455228292e6576616c75617465496e6c696e696e67283329636865636b557365283429 16406:S32|434f4445545245455f4f5054494d4953455228292e6f7074696d697365283329 16407:S42|434f4445545245455f4f5054494d4953455228292e6f70744669656c64732833296669656c642d283129 16408:S48|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329736574436f6e7461696e6572283129 16409:S38|434f4445545245455f4f5054494d4953455228292e6669656c6473546f46696c746572283129 16410:S33|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329 16411:S53|434f4445545245455f4f5054494d4953455228292e6f70744669656c6473283329636f6e7461696e65722d6d6b4669656c64283329 16412:S49|434f4445545245455f4f5054494d4953455228292e6f70744669656c647328332970757368436f6e7461696e6572283229 16413:O4|@4656,@10202,@16415,@16414 16414:O5|@16334,963,0,963,0 16415:S22|6d617062696e64696e673a206e6f74206c616d626461 16416:S45|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e67283129 16417:S57|434f4445545245455f4f5054494d4953455228292e6f7074696d6973652833296d617062696e64696e672831296d6170526563446563283229 16418:O2|3,@16419 16419:S19|4f7574707574206f66206f7074696d69736572 16420:S41|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d69736572283429 16421:O4|@4656,@10202,@16423,@16422 16422:O5|@16424,1602,0,1602,0 16423:S31|746f70206c6576656c207265616368656420696e2073696d706c6966696572 16424:S52|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f53494d504c49464945522e736d6c 16425:S48|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296c6f6f6b757041646472283129 16426:S47|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329656e74657241646472283129 16427:S44|434f4445545245455f53494d504c494649455228292e73696d706c69666965722833296d6b41646472283129 16428:O11|@7682,@16433,@16441,@16447,@16449,@16451,@16466,@16468,@16484,@16524,@16429 16429:O12|@7779,@16428,@16533,@16433,@16441,@16447,@16449,@16451,@16466,@16468,@16484,@16524 16430:S39|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283129283129 16431:S36|434f4445545245455f53494d504c494649455228292e73696d705370656369616c283429 16432:S44|434f4445545245455f53494d504c494649455228292e73696d705370656369616c28342973706c6974283329 16433:O2|@7686,@16428 16434:O2|@10368,@10515 16435:O4|@4656,@10202,@16437,@16436 16436:O5|@16424,1441,0,1441,0 16437:S24|6765744669656c64202d20696e76616c696420696e646578 16438:S45|434f4445545245455f53494d504c494649455228292e73696d705475706c652835296765744669656c64283129 16439:S34|434f4445545245455f53494d504c494649455228292e73696d705475706c65283529 16440:S50|434f4445545245455f53494d504c494649455228292e73696d705475706c6528352970726f636573734669656c6473283329 16441:O2|@7691,@16428 16442:S39|434f4445545245455f53494d504c494649455228292e73696d7049665468656e456c7365283629 16443:S43|434f4445545245455f53494d504c494649455228292e7370656369616c546f47656e6572616c2833292829 16444:O4|@4658,@10397,0,@16445 16445:O5|@10103,51,0,51,0 16446:S30|434f4445545245455f53494d504c494649455228292e6d6b456e76283229 16447:O3|@7710,@16429,@16428 16448:S43|434f4445545245455f53494d504c494649455228292e73696d704172626974726172794172697468283829 16449:O3|@7714,@16429,@16428 16450:S45|434f4445545245455f53494d504c494649455228292e73696d70417262697472617279436f6d70617265283829 16451:O2|@7718,@16428 16452:O4|7,@9514,0,@16453 16453:O5|@9515,252,0,252,0 16454:O4|@4656,@10202,@16456,@16455 16455:O5|@16424,1022,0,1022,0 16456:S19|576f726441726974683a20417269746852656d 16457:O4|@4656,@10202,@16459,@16458 16458:O5|@16424,1021,0,1021,0 16459:S20|576f726441726974683a20417269746851756f74 16460:O2|16,@16461 16461:O3|6,@11125,0 16462:O2|16,@16463 16463:O3|6,@16464,0 16464:O4|7,@9521,0,0 16465:S35|434f4445545245455f53494d504c494649455228292e73696d7042696e617279283629 16466:O2|@7719,@16428 16467:S34|434f4445545245455f53494d504c494649455228292e73696d70556e617279283529 16468:O3|@7720,@16428,@16429 16469:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283129 16470:S75|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362969735265637572736976654172672d636f6e7461696e7346756e6374696f6e283329 16471:O1|@7723 16472:S24|42617365436f6465547265652e666f6c6474726565283329 16473:S32|42617365436f6465547265652e666f6c64747265652833296674726565283229 16474:O4|@4656,@10202,@16476,@16475 16475:O5|@16424,783,0,783,0 16476:S35|73696d7046756e6374696f6e43616c6c3a20617267756d656e74206d69736d61746368 16477:O4|@4656,@10202,@16479,@16478 16478:O5|@16424,818,0,818,0 16479:S27|6c6f63616c4f6c64416464723a204c6f6164526563757273697665 16480:S56|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c2836296c6f63616c4f6c6441646472283129 16481:S59|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629736574546162466f72496e6c696e65283129 16482:S41|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c283629 16483:S55|434f4445545245455f53494d504c494649455228292e73696d7046756e6374696f6e43616c6c28362970726f6365737341726773283329 16484:O2|@7732,@16429 16485:O2|@14622,@10515 16486:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283129 16487:O1|@7735 16488:S82|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329636f6e76657274456e76283129283129 16489:S50|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229 16490:S66|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296c6f63616c4f6c6441646472283229636f6e76657274526573756c74283329 16491:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529736574546162283129 16492:S44|434f4445545245455f53494d504c494649455228292e73696d704c616d6264612835296d6b41646472283129 16493:O1|@7741 16494:O1|@7742 16495:O1|@7769 16496:S35|434f4445545245455f53494d504c494649455228292e73696d704c616d626461283529 16497:O1|@7744 16498:O4|@4656,@10202,@16500,@16499 16499:O5|@16501,337,0,337,0 16500:S9|73706c697441726773 16501:S58|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f434f4445545245455f52454d4f56455f524544554e44414e542e736d6c 16502:S79|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c7465724c6f6f7041726773283129 16503:S74|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322973706c697441726773283329 16504:O4|@4656,@10202,@16506,@16505 16505:O5|@16501,126,0,126,0 16506:S25|636c65616e457874726163743a20656d707479207573616765 16507:S65|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283129283129 16508:S62|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e283229 16509:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734669656c64283229 16510:S76|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f6365737344656373283129 16511:S63|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329616464526566283129 16512:O1|@7743 16513:O1|@10547 16514:O4|@4656,@10202,@16516,@16515 16515:O5|@16501,101,0,101,0 16516:S12|6e6f74205573654669656c64 16517:O4|@4656,@10202,@16516,@16518 16518:O5|@16501,98,0,98,0 16519:S54|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e4c616d626461283329 16520:S93|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322970726f636573734465637328312970726f636573734d757475616c73283329 16521:S77|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229646f436c65616e28322966696c746572556e75736564283229 16522:S40|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629 16523:S52|434f4445545245455f52454d4f56455f524544554e44414e5428292e636c65616e50726f63283629636c65616e436f6465283229 16524:O3|@7770,@16428,@16484 16525:O4|@4656,@10202,@16527,@16526 16526:O5|@16424,590,0,590,0 16527:S32|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e6572 16528:O4|@4656,@10202,@16530,@16529 16529:O5|@16424,599,0,599,0 16530:S37|636f7079446563733a20436f6e7461696e65722f536574436f6e7461696e65722073697a65 16531:S35|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329 16532:S46|434f4445545245455f53494d504c494649455228292e73696d704e6577656e76283329636f707944656373283229 16533:O2|@7829,@16428 16534:O1|@10632 16535:O1|@10633 16536:S36|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529 16537:S50|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296368616e67654c6f6f7073283129 16538:S58|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c2835296f7065726174696f6e2d6d616b654d6f766573283129 16539:S45|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429 16540:S62|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e65722834296669656c6473546f46696c746572283129 16541:S59|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e6572283429636865636b4669656c6473283229 16542:S54|434f4445545245455f53494d504c494649455228292e73696d70506f7374536574436f6e7461696e657228342973656c656374283229 16543:S49|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529666f6c644c6f6f702833292829 16544:S59|434f4445545245455f53494d504c494649455228292e73696d7047656e6572616c283529636865636b4c6f6f70417267732832296d617033283329 16545:S36|434f4445545245455f53494d504c494649455228292e73696d7041646472657373283429 16546:S55|434f4445545245455f4f5054494d4953455228292e636f6465747265654f7074696d6973657228342970726f6365737354726565283429 16547:S70|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229 16548:S83|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342970726f636573734c616d62646173283229676574526573756c7473283229 16549:O4|@4656,@10202,@16551,@16550 16550:O5|@16334,1428,0,1428,0 16551:S14|70726f636573734c616d62646173 16552:S65|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129 16553:O4|@4656,@10202,@16555,@16554 16554:O5|@16334,1441,0,1441,0 16555:S13|636865636b42696e64696e6773 16556:S81|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e28342972756e436865636b73283129636865636b42696e64696e6773283229 16557:S53|434f4445545245455f4f5054494d4953455228292e6c616d6264614c696674416e64436f6e7374616e7446756e6374696f6e283429 16558:O1|@7842 16559:S35|434f4445545245455f53494d504c494649455228292e73696d706c6966696572283329 16560:O1|@7845 16561:S14|506f6c7953697a65446f75626c65 16562:S13|506f6c7953697a65466c6f6174 16563:S45|434f4d50494c45525f424f445928292e62617365436f6d70696c657228342965786563757465436f6465283129 16564:O4|0,@15908,0,@16584 16565:S29|535452554354555245535f28292e706173733453747275637473283329 16566:O4|@4656,@10202,@13921,@16567 16567:O5|@13664,3171,0,3171,0 16568:S58|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296d617054797065496473283129 16569:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329 16570:S75|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e642833296e65774d6170283129 16571:S66|535452554354555245535f28292e70617373345374727563747328332965787472616374546f704465632833296578747261637446756e63746f7242696e64283329 16572:S45|535452554354555245535f28292e70617373345374727563747328332965787472616374537472756374283429 16573:S69|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129636f70794964283129 16574:O1|@7870 16575:S84|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129283129 16576:O1|@7871 16577:S81|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c61636554797065732831297265706c61636554797065436f6e73747273283129 16578:O1|@7872 16579:S63|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834297265706c6163655479706573283129283129 16580:S56|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296d616b6544656373283329 16581:S68|535452554354555245535f28292e706173733453747275637473283329657874726163745374727563742834296578747261637453747275637475726542696e64283329 16582:S70|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e61747572652831296d6170494473283129 16583:S61|535452554354555245535f28292e70617373345374727563747328332965787472616374546f70446563283329636f70795369676e6174757265283129 16584:O1|@7878 16585:O4|11,@9448,0,@16586 16586:O5|@13664,3264,0,3264,0 16587:S39|535452554354555245535f28292e706173733453747275637473283329726573756c742d283129 16588:O1|@16589 16589:O1|@7879 16590:S34|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429283129 16591:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283329 16592:S31|434f4d50494c45525f424f445928292e62617365436f6d70696c6572283429 16593:S40|535452554354555245535f28292e67656e636f6465537472756374732833296d6b41646472283129 16594:O3|@16595,@10983,0 16595:O1|@7882 16596:S37|44454255474745525f28292e696e697469616c44656275676765725374617475732d283129 16597:S31|535452554354555245535f28292e67656e636f646553747275637473283329 16598:O1|@7883 16599:S53|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e53747275637456616c7565283129 16600:O4|101,@10091,0,@16601 16601:O5|@10918,509,0,509,0 16602:S45|535452554354555245535f28292e67656e636f6465537472756374732833296c6f6164546f7064656373283129 16603:O4|@4656,@10202,@16605,@16604 16604:O5|@16606,80,0,80,0 16605:S9|4e6f20616363657373 16606:S34|6d6c736f757263652f4d4c436f6d70696c65722f545950454944434f44452e736d6c 16607:S28|545950454944434f444528292e636f64654163636573732832292829 16608:O1|@7894 16609:O4|@4656,@10202,@16611,@16610 16610:O5|@13664,2898,0,2898,0 16611:S10|747970655661724d6170 16612:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229747970655661724d61702d283129 16613:S49|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f616453747264656373283229 16614:O17|@4787,@4788,@4789,@4790,@16615,@4783,@9493,@10156,@10163,@4791,@4782,@4786,@10150,0,@4785,@4784,@10168 16615:O1|@7897 16616:S18|4c45585f28292e6e756c6c4c65782d283129 16617:S60|535452554354555245535f28292e67656e636f646553747275637473283329636f64654c6f6164537472646563732832296c6f616456616c73283229 16618:O4|@4656,@10202,@16620,@16619 16619:O5|@10521,93,0,93,0 16620:S34|6d6b4c6f61643a206c6576656c206d757374206265206e6f6e2d6e65676174697665 16621:O4|@4656,@10202,@10843,@16622 16622:O5|@10521,90,0,90,0 16623:S34|434f44455452454528292e6e65774c6576656c283129746869734c6576656c283129 16624:O1|@7902 16625:S40|56414c55455f4f505328292e6170706c7946756e6374696f6e283729676574436f6e737472283129 16626:O7|@7904,@16693,@16863,@16989,@17001,@16627,@14029 16627:O4|@7958,@16693,@16863,@16989 16628:S32|545950454944434f444528292e6170706c79546f496e7374616e636527283429 16629:O1|@7908 16630:S62|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296571436f64652d283129 16631:O1|@7910 16632:S72|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d657465722833296765745479706556616c7565466f724944283129 16633:O1|@7912 16634:S65|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329626f786564436f64652d283129 16635:O1|@7914 16636:S64|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d6574657228332973697a65436f64652d283129 16637:S48|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229283129 16638:O10|@7919,@4660,@10561,@10571,@10590,@10609,@4670,@4668,@4666,@4664 16639:O4|@4656,@10202,@16641,@16640 16640:O5|@10420,2764,0,2764,0 16641:S40|74797065436f6e73747246726f6d4f7665726c6f61643a204e6f206d61746368696e672074797065 16642:O4|@4656,@10202,@16641,@16643 16643:O5|@10420,2772,0,2772,0 16644:O4|@4656,@10202,@16641,@16645 16645:O5|@10420,2762,0,2762,0 16646:S37|545950455f5452454528292e74797065436f6e73747246726f6d4f7665726c6f6164283229 16647:S52|545950454944434f444528292e6170706c79546f496e7374616e6365272834296d616b65506f6c79506172616d65746572283329 16648:O1|@7922 16649:O4|@4656,@10202,@16651,@16650 16650:O5|@16606,429,0,429,0 16651:S38|73697a653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 16652:O4|@4656,@10202,@16654,@16653 16653:O5|@16606,455,0,455,0 16654:S25|73697a65466f72547970653a20556e6b6e6f776e2074797065 16655:S27|545950454944434f444528292e73697a65466f7254797065283429 16656:S49|545950454944434f444528292e73697a65466f725479706528342973697a65466f72436f6e737472756374696f6e283229 16657:O3|6,2,0 16658:O1|@7926 16659:O4|@4656,@10202,@16661,@16660 16660:O5|@16606,377,0,377,0 16661:S43|626f7865646e6573733a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 16662:O4|@4656,@10202,@16664,@16663 16663:O5|@16606,393,0,393,0 16664:S30|626f7865646e657373466f72547970653a20556e6b6e6f776e2074797065 16665:S32|545950454944434f444528292e626f7865646e657373466f7254797065283429 16666:S59|545950454944434f444528292e626f7865646e657373466f7254797065283429626f7865646e657373466f72436f6e737472756374696f6e283229 16667:O1|@7930 16668:O4|@4656,@10202,@16670,@16669 16669:O5|@16606,683,0,683,0 16670:S40|6d616b6545713a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 16671:O4|@4656,@10202,@16673,@16672 16672:O5|@16606,719,0,719,0 16673:S21|457175616c69747920666f722066756e6374696f6e 16674:S10|65717b2e2e2e7d283229 16675:S22|545950454944434f444528292e6d616b654571283429 16676:O2|12,@16677 16677:O8|@10539,@10506,0,0,@16678,0,0,1 16678:O2|@11193,@11223 16679:S48|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229 16680:O4|@4656,@10202,@16682,@16681 16681:O5|@16606,631,0,631,0 16682:S6|676574417267 16683:S57|545950454944434f444528292e6d616b654571283429657175616c697479466f72436f6e737472756374696f6e283229676574417267283129 16684:S39|545950454944434f444528292e6d616b654571283429636f6d62696e65456e7472696573283229 16685:S27|545950454944434f444528292e6765744d61784465707468283329 16686:S47|545950454944434f444528292e547970655661724d61702e636865636b54797065436f6e7374727563746f72283229 16687:S68|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229283129 16688:S45|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f6465283229 16689:S70|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329283129 16690:S67|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d54797065566172283329 16691:S65|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322966696e64436f646546726f6d4361636865283229 16692:S56|545950454944434f444528292e547970655661724d61702e66696e6443616368656454797065436f646528322973616d6554797065283229 16693:O3|6,@16695,@16694 16694:O2|@16700,0 16695:O4|@16697,@16696,2,1 16696:O1|@7948 16697:O1|@7947 16698:S10|6572726f72436f646532 16699:S14|7072696e742d66756e6374696f6e 16700:O4|@4662,@9594,@16701,0 16701:O3|3,4,@16702 16702:O6|@5131,@10516,@16704,@16719,@16720,@16703 16703:O2|@6490,@16739 16704:O2|@5133,@16705 16705:O2|@16707,@16706 16706:O2|@16712,@16711 16707:O2|@16709,@16708 16708:O3|1,@16710,@10536 16709:O2|1,@15989 16710:O8|@10633,@16698,0,0,@16678,0,0,1 16711:O2|@16717,@10553 16712:O2|@16714,@16713 16713:O3|1,@16715,@10536 16714:O2|1,@11161 16715:O8|@16716,@16699,0,0,@11223,0,0,1 16716:O3|6,@10739,0 16717:O2|@16718,@10515 16718:O3|0,2,0 16719:O16|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 16720:O17|@16722,@16726,@16725,@16724,@16697,@16696,@16695,@16728,@16727,@16730,@16729,@16735,@16734,@16736,@16723,@16737,@16721 16721:O4|@10598,@16737,1,1 16722:O7|@16724,@16695,@16727,@16729,@16734,@16723,@16721 16723:O4|@10617,@16736,3,1 16724:O4|@16726,@16725,3,1 16725:O1|@7950 16726:O1|@7949 16727:O4|@10505,@16728,1,1 16728:O1|@7951 16729:O4|@16731,@16730,3,1 16730:O1|@7954 16731:O1|@7952 16732:S14|696e74496e66457175616c697479 16733:S26|617262697472617279507265636973696f6e457175616c697479 16734:O4|@10884,@16735,1,1 16735:O1|@7955 16736:O1|@7956 16737:O1|@7957 16738:S10|7072696e742d63686172 16739:O2|@16741,@16740 16740:O2|0,@16849 16741:O2|@16742,0 16742:O4|@4683,@9594,@16743,0 16743:O2|0,@16744 16744:O2|0,@16745 16745:O2|@16747,@16746 16746:O2|@16763,@16762 16747:O2|@16749,@16748 16748:O2|@16756,0 16749:O4|@4683,@9594,@16750,0 16750:O2|@16752,@16751 16751:O2|0,@15803 16752:O2|@16753,0 16753:O4|@4662,@9594,@16754,0 16754:O3|1,@10537,@16755 16755:O6|@5129,@10516,@10536,@10515,@10556,@10513 16756:O4|@4662,@9594,@16757,0 16757:O3|3,4,@16758 16758:O4|@6505,@16759,@16750,@16727 16759:O2|@16754,@16760 16760:O2|@10515,@16761 16761:O2|@10515,@14850 16762:O2|@16812,@16811 16763:O2|@16765,@16764 16764:O2|@16807,0 16765:O4|@4683,@9594,@16766,0 16766:O2|@16767,@16751 16767:O2|@16768,0 16768:O4|@4662,@9594,@16769,0 16769:O3|1,@16771,@16770 16770:O6|@5129,@10516,@16791,@10817,@16793,@16790 16771:O8|@16773,@16732,0,0,@16772,0,0,1 16772:O2|@10644,@16789 16773:O4|5,@16775,@10632,@16774 16774:O4|5,@16778,@16777,@10633 16775:O2|1,@16776 16776:O5|@10541,@10543,@11193,@10633,@10632 16777:O4|7,@16784,@16783,1 16778:O4|5,@16780,@16779,@10633 16779:O3|21,@16782,9 16780:O3|21,@16781,9 16781:O3|21,@10541,5 16782:O3|21,@10543,5 16783:O3|6,@16788,0 16784:O2|@16786,@16785 16785:O2|@16787,0 16786:O2|@10541,1 16787:O2|@10543,1 16788:O1|@7953 16789:O2|@10644,0 16790:O2|@6490,@16795 16791:O5|@6491,@10536,@10817,@16792,@10513 16792:O1|@16731 16793:O1|@16794 16794:O4|@16731,@4792,3,1 16795:O2|@16796,0 16796:O2|@16798,@16797 16797:O2|@16803,0 16798:O4|@4683,@9594,@16799,0 16799:O2|@16800,@16751 16800:O2|@16801,0 16801:O4|@4662,@9594,@16802,0 16802:O3|1,@16771,@16791 16803:O4|@4662,@9594,@16804,0 16804:O3|3,4,@16805 16805:O4|@6505,@16806,@16799,@16794 16806:O2|@16802,@16760 16807:O4|@4662,@9594,@16808,0 16808:O3|3,4,@16809 16809:O4|@6505,@16810,@16766,@16729 16810:O2|@16769,@16760 16811:O2|@16825,@16824 16812:O2|@16814,@16813 16813:O2|@16820,0 16814:O4|@4683,@9594,@16815,0 16815:O2|@16816,@16751 16816:O2|@16817,0 16817:O4|@4662,@9594,@16818,0 16818:O3|1,@10537,@16819 16819:O6|@5129,@10516,@10536,@10515,@10888,@10513 16820:O4|@4662,@9594,@16821,0 16821:O3|3,4,@16822 16822:O4|@6505,@16823,@16815,@16734 16823:O2|@16818,@16760 16824:O2|@16837,0 16825:O2|@16827,@16826 16826:O2|@16833,0 16827:O4|@4683,@9594,@16828,0 16828:O2|@16829,@16751 16829:O2|@16830,0 16830:O4|@4662,@9594,@16831,0 16831:O3|1,@10628,@16832 16832:O6|@5129,@10516,@10536,@10515,@10622,@10513 16833:O4|@4662,@9594,@16834,0 16834:O3|3,4,@16835 16835:O4|@6505,@16836,@16828,@16723 16836:O2|@16831,@16760 16837:O2|@16839,@16838 16838:O2|@16845,0 16839:O4|@4683,@9594,@16840,0 16840:O2|@16841,@16751 16841:O2|@16842,0 16842:O4|@4662,@9594,@16843,0 16843:O3|1,@10537,@16844 16844:O6|@5129,@10516,@10536,@10515,@10602,@10513 16845:O4|@4662,@9594,@16846,0 16846:O3|3,4,@16847 16847:O4|@6505,@16848,@16840,@16721 16848:O2|@16843,@16760 16849:O2|0,@16850 16850:O2|0,@16851 16851:O2|0,@16852 16852:O2|0,@16853 16853:O2|0,@16854 16854:O2|0,@16855 16855:O2|@16747,@16856 16856:O2|0,@16857 16857:O2|@16763,@16858 16858:O2|0,@16859 16859:O2|@16812,@16860 16860:O2|0,@16861 16861:O2|@16825,@16862 16862:O2|0,@16824 16863:O2|@16865,@16864 16864:O2|@16886,@16885 16865:O2|@10493,@16866 16866:O3|6,@16727,@16867 16867:O2|@16749,@16868 16868:O2|@16869,0 16869:O4|@4662,@9594,@16870,0 16870:O3|3,4,@16871 16871:O6|@5131,@10516,@16872,@16719,@16720,@16703 16872:O2|@5133,@16873 16873:O2|@16875,@16874 16874:O2|@16877,@10550 16875:O2|@16876,@16754 16876:O3|0,@10505,@16752 16877:O2|@11147,@16878 16878:O3|1,@16879,@10536 16879:O8|@16880,@12421,0,0,@10545,0,0,1 16880:O4|7,@16882,@16881,1 16881:O3|13,@15120,@16883 16882:O2|@16786,0 16883:O3|@16884,0,0 16884:O3|6,@4661,0 16885:O2|@16925,@16924 16886:O2|@16888,@16887 16887:O3|6,@16729,@16907 16888:O4|@10495,0,@10496,@16889 16889:O3|@16891,@16905,@16890 16890:O3|@16906,@10498,@10559 16891:O2|1,@16892 16892:O3|6,@16794,@16893 16893:O2|@16798,@16894 16894:O2|@16895,0 16895:O4|@4662,@9594,@16896,0 16896:O3|3,4,@16897 16897:O5|@5126,@16898,@10817,@16793,@16790 16898:O2|@5133,@16899 16899:O2|@16901,@16900 16900:O2|@16903,@10649 16901:O2|@16902,@16802 16902:O3|0,@16731,@16800 16903:O2|@16904,@10515 16904:O3|0,@4792,0 16905:O4|1,@4793,0,0 16906:S10|496e74496e662e696e74 16907:O2|@16765,@16908 16908:O2|@16909,0 16909:O4|@4662,@9594,@16910,0 16910:O3|3,4,@16911 16911:O6|@5131,@10516,@16912,@16719,@16720,@16703 16912:O2|@5133,@16913 16913:O2|@16915,@16914 16914:O2|@16917,@10649 16915:O2|@16916,@16769 16916:O3|0,@16731,@16767 16917:O2|@11221,@16918 16918:O3|1,@16919,@10536 16919:O8|@16920,@12421,0,0,@10545,0,0,1 16920:O4|7,@16882,@16921,1 16921:O3|13,@15120,@16922 16922:O3|@16923,0,0 16923:O3|6,@4792,0 16924:O2|@16947,@16946 16925:O2|@10876,@16926 16926:O3|6,@16734,@16927 16927:O2|@16814,@16928 16928:O2|@16929,0 16929:O4|@4662,@9594,@16930,0 16930:O3|3,4,@16931 16931:O6|@5131,@10516,@16932,@16719,@16720,@16703 16932:O2|@5133,@16933 16933:O2|@16935,@16934 16934:O2|@16937,@10550 16935:O2|@16936,@16818 16936:O3|0,@10884,@16816 16937:O2|@16939,@16938 16938:O3|1,@16941,@10536 16939:O2|1,@16940 16940:O2|2,10 16941:O8|@16942,@11385,0,0,@10545,0,0,1 16942:O4|7,@16882,@16943,1 16943:O3|13,@15120,@16944 16944:O3|@16945,0,0 16945:O3|6,@4675,0 16946:O2|@16968,0 16947:O2|@10609,@16948 16948:O3|6,@16723,@16949 16949:O2|@16827,@16950 16950:O2|@16951,0 16951:O4|@4662,@9594,@16952,0 16952:O3|3,4,@16953 16953:O6|@5131,@10516,@16954,@16719,@16720,@16703 16954:O2|@5133,@16955 16955:O2|@16957,@16956 16956:O2|@16959,@10649 16957:O2|@16958,@16831 16958:O3|0,@10617,@16829 16959:O2|@16961,@16960 16960:O3|1,@16963,@10536 16961:O2|1,@16962 16962:O2|2,12 16963:O8|@16964,@10097,0,0,@10545,0,0,1 16964:O4|7,@16882,@16965,1 16965:O3|13,@15120,@16966 16966:O3|@16967,0,0 16967:O3|6,@4671,0 16968:O2|@10590,@16969 16969:O3|6,@16721,@16970 16970:O2|@16839,@16971 16971:O2|@16972,0 16972:O4|@4662,@9594,@16973,0 16973:O3|3,4,@16974 16974:O6|@5131,@10516,@16975,@16719,@16720,@16703 16975:O2|@5133,@16976 16976:O2|@16978,@16977 16977:O2|@16980,@10550 16978:O2|@16979,@16843 16979:O3|0,@10598,@16841 16980:O2|@16982,@16981 16981:O3|1,@16984,@10536 16982:O2|1,@16983 16983:O2|2,14 16984:O8|@16985,@16738,0,0,@10545,0,0,1 16985:O4|7,@16882,@16986,1 16986:O3|13,@15120,@16987 16987:O3|@16988,0,0 16988:O3|6,@4669,0 16989:O3|6,@16724,@16990 16990:O2|@16991,0 16991:O4|@4662,@9594,@16992,0 16992:O3|3,4,@16993 16993:O6|@5131,@10516,@16994,@16719,@16720,@16703 16994:O2|@5133,@16995 16995:O2|@16997,@16996 16996:O2|@16998,@10649 16997:O2|@10534,@16708 16998:O2|@16006,@16999 16999:O3|1,@17000,@10536 17000:O8|@14040,@14039,0,0,@11223,0,0,1 17001:O2|12,@17002 17002:O8|@10633,@17003,0,0,@16678,1,0,1 17003:S10|6e6f457175616c697479 17004:O2|@11224,@17005 17005:O2|@17006,0 17006:O3|6,@10273,0 17007:O2|@10541,0 17008:O2|@11224,@17009 17009:O2|@17010,0 17010:O3|6,@10766,0 17011:O1|@7959 17012:S6|7072696e742d 17013:O4|@4656,@10202,@17015,@17014 17014:O5|@16606,470,0,470,0 17015:S48|7072696e746572466f72547970653a2073686f756c6420616c72656164792068617665206265656e2068616e646c6564 17016:O2|@11224,@17017 17017:O2|@17018,0 17018:O3|6,@17019,0 17019:S7|3c656d7074793e 17020:O3|20,@17016,1 17021:S11|7072696e742d656d707479 17022:S6|3c616e6f6e3e 17023:O3|20,@17008,1 17024:S14|7072696e742d6c6162656c6c6564 17025:O1|@7964 17026:S59|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283229283129 17027:S56|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832297072696e744974656d732d283129 17028:O2|@10632,@17029 17029:O2|@10632,@17030 17030:O2|@10633,0 17031:O3|20,@17032,1 17032:O2|@10632,@17029 17033:O2|@11224,@17034 17034:O2|@17035,0 17035:O3|6,@9650,0 17036:O3|20,@17033,1 17037:O2|@11224,@17038 17038:O2|@17039,0 17039:O3|6,@9648,0 17040:O3|20,@17037,1 17041:O3|20,@17004,1 17042:S30|545950454944434f444528292e7072696e746572466f7254797065283329 17043:S42|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f6465283229 17044:O4|11,@10541,0,0 17045:O2|@17046,0 17046:O4|3,@17048,@10632,@17047 17047:O2|1,6 17048:O4|11,@10541,1,0 17049:O2|0,@9566 17050:O4|@4658,@10397,0,@17051 17051:O5|@16606,565,0,565,0 17052:O3|20,@17053,1 17053:O2|@10632,@17029 17054:O2|@11224,@17055 17055:O2|@17056,0 17056:O3|6,@9569,0 17057:O3|20,@17054,1 17058:O3|20,@17059,1 17059:O2|@10632,@17029 17060:O3|9,3,1 17061:O3|20,@17062,1 17062:O2|@10632,@17029 17063:S53|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f646528322961735265636f7264283229 17064:O1|@7983 17065:S70|545950454944434f444528292e7072696e746572466f72547970652833297072696e74436f64652832296d616b655072696e7465724964283129636f6465466f724964283129 17066:O2|@9948,@9948 17067:O4|@7985,@16693,@16863,@16989 17068:O1|@7987 17069:S45|545950454944434f444528292e657175616c697479466f7254797065283329726573756c74436f64652d283129 17070:O2|@17044,@17071 17071:O2|@17048,0 17072:S8|657175616c697479 17073:S31|545950454944434f444528292e657175616c697479466f7254797065283329 17074:O4|@4656,@10202,@17076,@17075 17075:O5|@17077,1060,0,1060,0 17076:S14|4f7665726c6f616420457175616c 17077:S32|6d6c736f757263652f4d4c436f6d70696c65722f56414c55455f4f50532e4d4c 17078:O4|@4656,@10202,@17080,@17079 17079:O5|@17077,1073,0,1073,0 17080:S17|4f7665726c6f6164204e6f74457175616c 17081:O2|@7991,@4687 17082:S28|5052494e545f5441424c4528292e6765744f7665726c6f6164283329 17083:S41|5052494e545f5441424c4528292e6765744f7665726c6f61642833297365617263684c697374283129 17084:O1|@7993 17085:O4|@4656,@10202,@17087,@17086 17086:O5|@17077,683,0,683,0 17087:S28|6765744f7665726c6f6164496e7374616e63653a204d697373696e67 17088:S37|56414c55455f4f505328292e6765744f7665726c6f6164496e7374616e6365283429283129 17089:O4|@4656,@10202,@17091,@17090 17090:O5|@17077,1086,0,1086,0 17091:S16|4f7665726c6f61642054797065446570 17092:S4|636f6e76 17093:O2|@7997,@4687 17094:S28|5052494e545f5441424c4528292e6164644f7665726c6f6164283329 17095:S37|5052494e545f5441424c4528292e6164644f7665726c6f616428332966696c746572283129 17096:S48|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283129283129 17097:O4|103,@10033,@17099,@17098 17098:O5|@17077,1113,0,1113,0 17099:S56|43616e6e6f7420696e7374616c6c20616e206f7665726c6f61642077697468696e206120737472756374757265206f722066756e63746f72 17100:O4|103,@10033,@17102,@17101 17101:O5|@17077,1115,0,1115,0 17102:S52|496e76616c6964207479706520286e6f742061207479706520636f6e737472756374696f6e2920286164644f7665726c6f616429 17103:S45|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f6164696e67283229 17104:S42|56414c55455f4f505328292e6170706c7946756e6374696f6e283729666f6c6c6f775479706573283129 17105:S49|56414c55455f4f505328292e6170706c7946756e6374696f6e2837296164644f7665726c6f616447656e6572616c283129 17106:S28|56414c55455f4f505328292e6170706c7946756e6374696f6e283729 17107:O2|@17108,0 17108:O5|5,0,@10495,@10493,0 17109:S14|6164645072657474795072696e74 17110:O3|6,@17111,0 17111:O1|@8003 17112:O4|103,@10033,@17114,@17113 17113:O5|@17077,999,0,999,0 17114:S68|6164645072657474795072696e743a2054686520617267756d656e74207479706520776173206e6f7420612073696d706c65207479706520636f6e737472756374696f6e 17115:S25|56414c55455f4f505328292e636f646556616c283629283129 17116:O2|@17117,0 17117:O4|11,@17118,1,0 17118:O2|8,@10542 17119:O2|@17120,0 17120:O4|11,@17118,0,0 17121:O2|@17118,0 17122:S7|61646450502d31 17123:O2|@17124,0 17124:O4|11,@17125,1,0 17125:O2|8,@12641 17126:O4|@4656,@10202,@17128,@17127 17127:O5|@17077,1003,0,1003,0 17128:S42|4f7665726c6f6164656420416464507265747479202d2077726f6e6720696e7374616e63652074797065 17129:S12|416464507265747479285029 17130:O3|6,@17131,0 17131:O1|@8004 17132:O4|103,@10033,@17114,@17133 17133:O5|@17077,870,0,870,0 17134:O3|6,@17135,0 17135:O1|@8005 17136:O4|103,@10033,@17138,@17137 17137:O5|@17077,1009,0,1009,0 17138:S68|546865207370656369616c2066756e6374696f6e20506f6c794d4c2e736f757263654c6f636174696f6e2063616e6e6f74206265207573656420617320612076616c7565 17139:S31|56414c55455f4f505328292e636f646556616c2836296765744c6f63283129 17140:O4|@4656,@10202,@17142,@17141 17141:O5|@17077,864,0,864,0 17142:S42|4f7665726c6f6164656420476574507265747479202d2077726f6e6720696e7374616e63652074797065 17143:O2|@17144,0 17144:O3|20,@17145,0 17145:O2|@10541,@17146 17146:O2|@17147,0 17147:O3|6,10000,0 17148:O3|6,@10109,0 17149:O4|@4656,@10202,@17151,@17150 17150:O5|@17077,849,0,849,0 17151:S43|4f7665726c6f61646564204d616b65537472696e67202d2077726f6e6720696e7374616e63652074797065 17152:S12|6d616b65737472696e672829 17153:O3|6,@9588,0 17154:S13|6d616b65737472696e67285029 17155:O4|@4656,@10202,@17157,@17156 17156:O5|@17077,822,0,822,0 17157:S38|4f7665726c6f61646564205072696e74202d2077726f6e6720696e7374616e63652074797065 17158:O4|@4656,@10202,@17160,@17159 17159:O5|@17077,758,0,758,0 17160:S16|636f646556616c202d20466f726d616c 17161:O4|@4656,@10202,@16605,@17162 17162:O5|@17077,668,0,668,0 17163:S27|56414c55455f4f505328292e636f64654163636573732832292829 17164:S32|56414c55455f4f505328292e636f646556616c2836296c6f6164566172283129 17165:O1|@8012 17166:O2|@14040,0 17167:S7|7072696e742829 17168:S8|7072696e74285029 17169:O1|@8013 17170:S9|676574507265747479 17171:S7|61646450502d32 17172:S5|6164645050 17173:S22|56414c55455f4f505328292e636f646556616c283629 17174:S13|417267756d656e7420666f7220 17175:O2|3,@17176 17176:S14|526571756972656420747970653a 17177:O2|3,@17178 17178:S14|417267756d656e7420747970653a 17179:S26|56414c55455f4f505328292e636865636b505054797065283629 17180:O1|@8036 17181:O2|3,@17182 17182:S133|6164645072657474795072696e7420656c656d656e742066756e6374696f6e73206d75737420686176652074797065202761202a20696e74202d3e207072657474792c202762202a20696e74202d3e207072657474792c202e2e2e2077697468206f6e652066756e6374696f6e20666f722065616368207479706520706172616d65746572 17183:S27|56414c55455f4f505328292e636f646556616c2836295f2d283129 17184:S36|56414c55455f4f505328292e636f646556616c283629666f6c6c6f775479706573283129 17185:O2|@8042,@17186 17186:O2|@8510,@17185 17187:S33|434f444547454e5f50415253455452454528292e67656e636f6465283829283129 17188:O3|@8044,@17556,@17189 17189:O2|@8461,@17626 17190:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283129 17191:S49|434f444547454e5f50415253455452454528292e636f646553657175656e636528352970726f636573735461696c283229 17192:S29|434f44455452454528292e6d756c7469706c6555736573283429283129 17193:S35|434f44455452454528292e6d756c7469706c65557365732834296c6f6164466e283129 17194:S34|44454255474745525f28292e6d616b6556616c4465627567456e7472696573283729 17195:O1|@17196 17196:O3|6,6,0 17197:O1|@17198 17198:O3|6,7,0 17199:S26|44454255474745525f28292e7570646174655374617465283529 17200:S44|44454255474745525f28292e6d616b6556616c4465627567456e74726965732837296c6f6164566172283329 17201:O2|@8056,@17202 17202:O3|13,@15120,@17204 17203:S29|44454255474745525f28292e627265616b506f696e74436f6465283529 17204:O3|@17205,@16535,0 17205:O3|6,@4794,0 17206:S53|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529636865636b56617273283129283129283129 17207:O6|@8059,@16627,@14029,@16693,@16863,@16989 17208:O4|@4656,@10202,@17210,@17209 17209:O5|@10521,520,0,520,0 17210:S36|6d6b4d757475616c446563733a20656d707479206465636c61726174696f6e206c697374 17211:S39|545950454944434f444528292e637265617465446174617479706546756e6374696f6e73283529 17212:S18|7072696e742d7072696e7464656661756c74 17213:S81|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b41646472283129 17214:O2|@11224,@17215 17215:O2|@17216,0 17216:O3|6,@9565,0 17217:O3|20,@17214,1 17218:O2|@10632,@17219 17219:O2|@10633,@17030 17220:O3|20,@17218,1 17221:O3|20,@17222,1 17222:O2|@10632,@17219 17223:O2|@11224,@17224 17224:O2|@17225,0 17225:O3|6,@9566,0 17226:O3|20,@17223,1 17227:O4|5,@17229,@17228,@10633 17228:O4|5,@17232,@17231,@10633 17229:O3|21,@17230,9 17230:O3|21,@16379,5 17231:O3|21,@17235,9 17232:O3|21,@17233,9 17233:O3|21,@17234,5 17234:O4|11,@16379,1,1 17235:O4|5,@17237,@17236,@10633 17236:O3|15,@17241,@17240 17237:O4|19,3,@17238,4 17238:O4|11,@17239,0,0 17239:O4|11,@16379,0,1 17240:O4|5,@17245,@10632,@17244 17241:O2|@17242,0 17242:O4|1,0,1,@17243 17243:O4|11,@17239,1,1 17244:O4|5,@17248,@10632,@17247 17245:O4|3,@17246,@17216,@10540 17246:O2|8,@14832 17247:O4|3,@17246,@17249,@10540 17248:O4|3,@17246,@17039,@10540 17249:O3|6,@9616,0 17250:O2|@17251,0 17251:O4|1,0,0,@17252 17252:O4|11,@10541,4,1 17253:O4|19,0,@17044,4 17254:S12|706172656e74686573697365 17255:O4|@4656,@10202,@17257,@17256 17256:O5|@16606,138,0,138,0 17257:S19|6765744361636865645479706556616c756573 17258:S5|7072696e74 17259:S52|545950454944434f444528292e637265617465446174617479706546756e6374696f6e732835297365745072696e746572283429 17260:S34|545950454944434f444528292e7072696e746572466f724461746174797065283329 17261:S16|4e6f20636f6e7374727563746f72733a 17262:O5|@16606,1053,0,1053,0 17263:S41|545950455f5452454528292e636f6e7374727563746f72526573756c74283229676574417267283129 17264:O2|@17044,0 17265:O4|@4656,@10202,@17267,@17266 17266:O5|@10420,1576,0,1576,0 17267:S19|4e6f7420612066756e6374696f6e2074797065 17268:O3|20,@17028,1 17269:O2|@11224,@17270 17270:O2|@17271,0 17271:O3|6,@10374,0 17272:O3|20,@17269,1 17273:O4|3,@17048,@10632,@17060 17274:S59|545950454944434f444528292e7072696e746572466f7244617461747970652833297072696e746572466f72436f6e7374727563746f7273283129 17275:S85|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429 17276:S96|545950454944434f444528292e7072696e746572466f7244617461747970652833296e6577547970655661724d61707c696e6e65724c6576656c7c6c6f63616c4172674c6973742d6d6b54634172674d6170283429617267732d283129283129 17277:O4|0,@14031,@10633,@10632 17278:O4|@4656,@10202,@17280,@17279 17279:O5|@10521,524,0,524,0 17280:S53|6d6b4d757475616c446563733a20526563757273697665206465636c61726174696f6e206973206e6f7420612066756e6374696f6e 17281:S5|6e6f2d6571 17282:S91|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d6d6b41646472283129 17283:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283129 17284:S73|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f7244617461747970652832296765744571466e466f724944283329 17285:S3|65712d 17286:S3|283229 17287:O2|@10541,@17288 17288:O2|@10543,0 17289:S6|283229285029 17290:S36|545950454944434f444528292e657175616c697479466f72446174617479706573283429 17291:S58|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229 17292:S75|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f72446174617479706528322970726f63657373436f6e73747273283129 17293:S93|545950454944434f444528292e657175616c697479466f72446174617479706573283429657175616c697479466f724461746174797065283229617267547970654d61707c6c6f63616c4172674c6973742d617267732d283129283129 17294:O1|@8115 17295:S57|434f444547454e5f50415253455452454528292e636f646553657175656e63652835296e657744656275677c6c6f63616c446563732d283129 17296:S35|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529 17297:S41|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629 17298:S51|44454255474745525f28292e6d616b6554797065436f6e7374724465627567456e7472696573283629666f6c64496473283329 17299:O4|@4656,@10202,@17301,@17300 17300:O5|@17302,1034,0,1034,0 17301:S18|646563436f6e733a204e6f74206c6f63616c 17302:S51|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f434f444547454e5f5041525345545245452e736d6c 17303:S48|434f444547454e5f50415253455452454528292e636f646553657175656e6365283529646563436f6e73747273283429 17304:S44|54797065206f662065787072657373696f6e20636f6e7461696e73206c6f63616c2064617461747970652028 17305:S25|29206f7574736964652069747320646566696e6974696f6e2e 17306:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283229 17307:S56|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129283129 17308:S53|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229636865636b5479706573283129 17309:S40|545950455f5452454528292e636865636b466f724573636170696e67446174617479706573283229 17310:O4|@4656,@10202,@17312,@17311 17311:O5|@17302,1535,0,1535,0 17312:S10|6765744d617463686573 17313:S61|434f444547454e5f50415253455452454528292e636f646552656356616c42696e64696e677328332976616c42696e64546f4676616c42696e64283229 17314:O4|@4656,@10202,@17316,@17315 17315:O5|@17302,1554,0,1554,0 17316:S10|6d6b4656616c42696e64 17317:O3|@14658,@17318,0 17318:O1|@17319 17319:O3|6,8,0 17320:S34|44454255474745525f28292e75706461746544656275674c6f636174696f6e283429 17321:S37|44454255474745525f28292e6d616b655374727563744465627567456e7472696573283629 17322:S50|44454255474745525f28292e6d616b655374727563744465627567456e74726965732836296c6f6164537472756374283329 17323:O4|@8171,@17330,@17429,@17324 17324:O5|5,@17443,@17384,@17382,@10496 17325:O4|101,@10091,0,@17326 17326:O5|@10918,508,0,508,0 17327:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b65536f6d652d283129 17328:S38|44415441545950455f52455028292e6d6b45784964656e2833296d616b654e6f6e652d283129 17329:S26|44415441545950455f52455028292e6d6b45784964656e283329 17330:O7|@17332,@13990,@17333,@17331,@10496,0,0 17331:O3|2,@17381,@17380 17332:S4|534f4d45 17333:O2|1,@17334 17334:O3|6,@17336,@17335 17335:O2|@17340,0 17336:O3|@17338,@17339,@17337 17337:O1|@8176 17338:O1|@8174 17339:O1|@8175 17340:O4|@4662,@9594,@17341,0 17341:O3|3,3,@17342 17342:O6|@5131,@10516,@17344,@11229,@17343,@10513 17343:O12|@17361,@17363,@17362,@17338,@17339,@17337,@17336,@17365,@4795,@17376,@17378,@17360 17344:O2|@5133,@17345 17345:O2|@17347,@17346 17346:O2|@17352,@17351 17347:O2|@17349,@17348 17348:O3|1,@17350,@10536 17349:O2|1,@15991 17350:O8|@16780,@17332,0,0,@10545,0,0,1 17351:O2|@17356,0 17352:O2|@16709,@17353 17353:O3|1,@17354,@10536 17354:O8|@17355,@17332,0,0,@10545,0,0,1 17355:O3|20,@17007,1 17356:O2|@16714,@17357 17357:O3|1,@17358,@10536 17358:O8|@17359,@17332,0,0,@10545,0,0,1 17359:O4|11,@10541,0,1 17360:O4|@17365,@4795,@17376,@17378 17361:O3|@17360,@17362,@17336 17362:O2|@17363,0 17363:O1|@8177 17364:S4|4e4f4e45 17365:O1|@8178 17366:S12|65712d6f7074696f6e283229 17367:S15|65712d6f7074696f6e283229285029 17368:O1|@8180 17369:O5|0,0,0,@10496,@17370 17370:O2|@17371,0 17371:O2|3,@17364 17372:O5|0,0,0,@10496,@17373 17373:O2|@17374,0 17374:O2|3,@17332 17375:S13|7072696e746f7074696f6e2829 17376:O1|@8182 17377:S12|626f7865642d6f7074696f6e 17378:O1|@8183 17379:S11|73697a652d6f7074696f6e 17380:O5|5,@17383,@17384,@17382,@10496 17381:O3|6,@4796,79992 17382:O4|@17384,@17386,@10496,@17385 17383:O2|@17381,0 17384:S6|6f7074696f6e 17385:O3|@17389,@17428,@17388 17386:O2|@17387,0 17387:O2|@4796,79992 17388:O3|@17384,@10498,@10559 17389:O2|1,@17390 17390:O3|6,@17360,@17391 17391:O2|@17392,0 17392:O4|@4662,@9594,@17393,0 17393:O3|3,4,@17394 17394:O6|@5131,@10516,@17395,@11229,@17343,@10513 17395:O2|@5133,@17396 17396:O2|@17398,@17397 17397:O2|@11216,@17420 17398:O2|@11147,@17399 17399:O3|1,@17400,@10536 17400:O8|@17402,@17367,0,0,@17401,0,0,1 17401:O2|@17413,0 17402:O2|12,@17403 17403:O8|@17404,@17366,0,@11207,@16772,0,0,1 17404:O4|5,@10539,@10632,@17405 17405:O4|5,@16780,@17406,@10633 17406:O4|5,@16779,@17407,@10633 17407:O4|7,@17408,@11184,1 17408:O2|@17410,@17409 17409:O2|@17411,0 17410:O2|@17359,1 17411:O2|@17412,1 17412:O4|11,@10543,0,1 17413:O2|1,@17414 17414:O2|@17415,0 17415:O3|2,0,@17416 17416:O2|@17417,0 17417:O3|0,@16329,@17418 17418:O2|@17359,@17419 17419:O2|@17412,0 17420:O2|@17422,@17421 17421:O2|@17425,0 17422:O2|@11221,@17423 17423:O3|1,@17424,@10536 17424:O8|@11224,@17377,0,0,@11223,0,0,1 17425:O2|@11227,@17426 17426:O3|1,@17427,@10536 17427:O8|@10632,@17379,0,0,@11223,0,0,1 17428:O4|1,@4797,1,0 17429:O7|@17364,@10009,@17430,@17380,@10496,0,0 17430:O2|1,@17431 17431:O3|6,@17362,@17432 17432:O2|@17433,0 17433:O4|@4662,@9594,@17434,0 17434:O3|3,2,@17435 17435:O6|@5131,@10516,@17436,@11229,@17343,@10513 17436:O2|@5133,@17437 17437:O2|@17439,@17438 17438:O2|@16434,0 17439:O2|@10534,@17440 17440:O3|1,@17441,@10536 17441:O8|@17442,@17364,0,0,@10545,0,0,1 17442:O4|19,0,@10541,0 17443:O2|@17444,0 17444:O3|2,@17446,@17445 17445:O5|5,0,@17457,@17456,@10496 17446:O3|3,@17448,@17447 17447:O3|0,@17454,1 17448:O2|@17450,@17449 17449:O2|@17452,0 17450:O2|@17451,@11302 17451:S1|31 17452:O2|@17453,@17108 17453:S1|32 17454:O2|@17451,@17455 17455:O2|@17453,0 17456:O4|@17457,0,@10496,@17458 17457:S6|707265747479 17458:O3|@17460,@17534,@17459 17459:O3|@17535,@10498,@10559 17460:O2|1,@17461 17461:O3|6,@17463,@17462 17462:O2|@17499,0 17463:O4|@17464,@4798,3,1 17464:O1|@8184 17465:O2|@8185,@4798 17466:O4|0,@17467,3,1 17467:O1|@8186 17468:O1|@8187 17469:O5|0,0,0,@10496,@17470 17470:O2|@17471,0 17471:O2|3,@17472 17472:S15|436f6e746578744c6f636174696f6e 17473:O5|0,0,0,@10496,@17474 17474:O2|@17475,0 17475:O2|3,@17476 17476:S15|436f6e7465787450726f7065727479 17477:S13|7072696e742d636f6e74657874 17478:S12|7072696e742d707265747479 17479:O5|0,0,0,@10496,@17480 17480:O2|@17481,0 17481:O2|3,@17482 17482:S11|507265747479426c6f636b 17483:O5|0,0,0,@10496,@17484 17484:O2|@17485,0 17485:O2|3,@17486 17486:S11|507265747479427265616b 17487:O5|0,0,0,@10496,@17488 17488:O2|@17489,0 17489:O2|3,@17490 17490:S15|5072657474794c696e65427265616b 17491:O5|0,0,0,@10496,@17492 17492:O2|@17493,0 17493:O2|3,@17494 17494:S12|507265747479537472696e67 17495:O5|0,0,0,@10496,@17496 17496:O2|@17497,0 17497:O2|3,@17498 17498:S21|507265747479537472696e67576974685769647468 17499:O4|@4662,@9594,@17500,0 17500:O3|3,4,@17501 17501:O6|@5131,@10516,@17503,@17514,@17502,@10513 17502:O22|@17516,@17520,@17521,@17519,@17518,@17524,@17525,@17523,@17522,@17527,@17526,@17529,@17530,@17528,@17517,@17531,@17532,@17533,@17515,@17464,@4798,@17463 17503:O2|@5133,@17504 17504:O2|@17506,@17505 17505:O2|@17511,@10649 17506:O2|@17508,@17507 17507:O3|1,@17510,@10536 17508:O2|1,@17509 17509:O2|2,18 17510:O8|@10633,@17281,0,0,@16678,0,0,1 17511:O2|@17512,@10515 17512:O2|1,@17513 17513:O2|2,19 17514:O21|2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2 17515:O3|@17531,@17532,@17533 17516:O6|@17463,@17518,@17522,@17526,@17517,@17515 17517:O3|@17529,@17530,@17528 17518:O3|@17520,@17521,@17519 17519:O1|@8191 17520:O1|@8189 17521:O1|@8190 17522:O3|@17524,@17525,@17523 17523:O1|@8194 17524:O1|@8192 17525:O1|@8193 17526:O2|@17527,@10515 17527:O1|@8195 17528:O1|@8198 17529:O1|@8196 17530:O1|@8197 17531:O1|@8199 17532:O1|@8200 17533:O1|@8201 17534:O4|1,@4800,0,0 17535:S13|506f6c794d4c2e707265747479 17536:O4|@4656,@10202,@17538,@17537 17537:O5|@17302,982,0,982,0 17538:S6|636f64654578 17539:O4|@4656,@10202,@17541,@17540 17540:O5|@17302,962,0,962,0 17541:S6|6c7641646472 17542:S17|4c697374506169722e756e7a6970283229 17543:O2|@11224,@10632 17544:S10|626f7865642f73697a65 17545:S34|44415441545950455f52455028292e63686f6f7365436f6e73747252657072283329 17546:S47|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f736552657072283129 17547:S60|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963726561746552657072283229 17548:S29|44415441545950455f52455028292e636f6e7374724170706c79283229 17549:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707232283329 17550:S40|44415441545950455f52455028292e637265617465556e617279436f6e7374727563746f72283329 17551:S32|44415441545950455f52455028292e636f6e7374724465737472756374283229 17552:O2|8,0 17553:S70|44415441545950455f52455028292e63686f6f7365436f6e7374725265707228332963686f6f73655265707228312963686f6f73654f7074696d697365645265707231283329 17554:S29|44415441545950455f52455028292e636f6e7374724d61746368283229 17555:S30|44415441545950455f52455028292e6765745475706c654b696e64283129 17556:O2|@8235,@17557 17557:O3|@8319,@17626,@10857 17558:S53|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429636865636b56617273283129283129 17559:O4|@4656,@10202,@17561,@17560 17560:O5|@17302,1149,0,1149,0 17561:S15|73657456616c756541646472657373 17562:S38|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429 17563:S18|56616c7565206964656e7469666965722028 17564:S26|2920686173206e6f74206265656e207265666572656e6365642e 17565:S46|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c7565283229 17566:S59|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129 17567:S68|434f444547454e5f50415253455452454528292e7265706f7274556e7265666572656e63656456616c756573283229636865636b52656673283129757064617465283229 17568:O4|@4656,@10202,@17570,@17569 17569:O5|@17302,1204,0,1204,0 17570:S23|6261646c7920666f726d65642070617273652074726565 17571:O4|@4656,@10202,@17573,@17572 17572:O5|@17302,125,0,125,0 17573:S10|6d6b4172675475706c65 17574:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329666e4d6b41646472283129 17575:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329636f6465426f6479283129 17576:S29|434f44455452454528292e6d6b536574436f6e7461696e65722d283329 17577:O4|@8251,@17585,@17588,@17578 17578:O3|13,@15120,@17591 17579:O1|@17580 17580:O3|6,5,0 17581:O1|@8254 17582:S57|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e7472792835292d45 17583:S35|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029 17584:S55|44454255474745525f28292e7772617046756e6374696f6e496e446562756728313029616464537461727445786974456e747279283529 17585:O3|13,@15120,@17586 17586:O3|@17587,@16535,0 17587:O3|6,@4801,0 17588:O3|13,@15120,@17589 17589:O3|@17590,@16535,0 17590:O3|6,@4802,0 17591:O3|@17592,@16535,0 17592:O3|6,@4803,0 17593:O4|@4656,@10202,@17595,@17594 17594:O5|@17302,1425,0,1425,0 17595:S23|417267756d656e74206c656e6774682070726f626c656d 17596:O1|@8275 17597:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296261736546756e2d283129 17598:S3|285029 17599:O1|@8276 17600:S87|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329616464457874726173283229636865636b506f6c796d6f72706869736d283229283129 17601:S52|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e44656373283329 17602:S3|283129 17603:S75|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e732835296e6578745061726d73283129 17604:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6546756e73283529 17605:O4|@4656,@10202,@17607,@17606 17606:O5|@17302,1368,0,1368,0 17607:S31|6372656174654d6174636865733a204d697373696e67207479706520766172 17608:S73|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296372656174654170706c69636174696f6e73283429 17609:S67|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e4465637328332961726741646472732d283129283129 17610:S71|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296172674c6973742d6d616b6541726773283229 17611:S63|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e67732834296c6f616446756e446563732833296d616b6541726773283229 17612:O10|@8310,@4664,@4660,@10561,@10571,@10590,@10609,@4670,@4668,@4666 17613:S27|545950455f5452454528292e6973466c6f6174696e675074283129 17614:O4|@4656,@10202,@17616,@17615 17615:O5|@17302,176,0,176,0 17616:S26|7475706c6557696474683a20656d707479206c6f63616c646563 17617:O4|@4656,@10202,@17619,@17618 17618:O5|@10420,97,0,97,0 17619:S33|74634571756976616c656e743a204e6f74206120747970652066756e6374696f6e 17620:O4|@4656,@10202,@17622,@17621 17621:O5|@10420,3042,0,3042,0 17622:S26|656e7472794e756d626572202d206e6f742061207265636f7264 17623:S33|434f444547454e5f50415253455452454528292e7475706c655769647468283129 17624:S41|545950454944434f444528292e547970655661724d61702e6d61705479706556617273283129283129 17625:S48|434f444547454e5f50415253455452454528292e636f646546756e42696e64696e6773283429676574506f6c79283129 17626:O5|@8404,@17557,@10857,@17188,@17822 17627:S56|434f444547454e5f50415253455452454528292e636f64654d61746368283529636f64655061747465726e45787072657373696f6e283129 17628:O4|@4656,@10202,@17630,@17629 17629:O5|@17302,374,0,374,0 17630:S7|6d616b65417267 17631:S41|434f444547454e5f50415253455452454528292e6765745661726961626c6573496e50617474283229 17632:S27|4d61746368657320617265206e6f7420657868617573746976652e 17633:O4|101,@10091,0,@17634 17634:O5|@17302,322,0,322,0 17635:S31|48616e646c6572206361746368657320616c6c20657863657074696f6e732e 17636:O1|@8328 17637:S47|4d415443485f434f4d50494c455228292e6275696c645061747465726e436f64652833296669726550617474283129 17638:O4|@4656,@10202,@17640,@17639 17639:O5|@17641,1179,0,1179,0 17640:S33|636f646544656661756c742063616c6c6564206275742065786861757374697665 17641:S48|6d6c736f757263652f4d4c436f6d70696c65722f5061727365547265652f4d415443485f434f4d50494c45522e736d6c 17642:O3|6,@17643,0 17643:S5|4d61746368 17644:O3|6,101,0 17645:S48|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e732837296669726550617474283129 17646:S32|434f444547454e5f50415253455452454528292e636f64654d61746368283529 17647:S8|5061747465726e20 17648:S14|20697320726564756e64616e742e 17649:S50|434f444547454e5f50415253455452454528292e636f64654d617463682835297265706f7274526564756e64616e74283229 17650:S53|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729666e4d6b4164647273283129 17651:O4|@4656,@10202,@17653,@17652 17652:O5|@17302,449,0,449,0 17653:S7|73657441646472 17654:S41|434f444547454e5f50415253455452454528292e636f64654d61746368283529636745787073283729 17655:O3|0,@14742,0 17656:S37|4d415443485f434f4d50494c455228292e636f64654d617463685061747465726e73283729 17657:O4|@4656,@10202,@17653,@17658 17658:O5|@17641,609,0,609,0 17659:O1|@8343 17660:S37|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429 17661:O4|@4656,@10202,@17663,@17662 17662:O5|@17641,1083,0,1083,0 17663:S16|6d616b6554657374733a20656d707479 17664:S49|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d61746368283329 17665:O4|@4656,@10202,@17667,@17666 17666:O5|@17641,1060,0,1060,0 17667:S21|646f5061747465726e3a206e6f7420617420656e64 17668:S39|56414c55455f4f505328292e6d616b65496e7665727365283529676574496e7665727365283129 17669:O4|@4656,@10202,@17671,@17670 17670:O5|@17077,1234,0,1234,0 17671:S11|6d616b65496e7665727365 17672:S70|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d646f5061747465726e283229 17673:S33|56414c55455f4f505328292e6d616b654775617264283529746573746572283129 17674:O4|@4656,@10202,@17676,@17675 17675:O5|@17077,1207,0,1207,0 17676:S9|6d616b654775617264 17677:S35|4d415443485f434f4d50494c455228292e636f6e7374727563746f72436f6465283429 17678:S24|56414c55455f4f505328292e6d616b654775617264283529 17679:S26|56414c55455f4f505328292e6d616b65496e7665727365283529 17680:S73|4d415443485f434f4d50494c455228292e636f646547656e65726174654d61746368283429636f64654d6174636828332970617474436f64652d6d616b655061747465726e73283129 17681:S34|4d415443485f434f4d50494c455228292e6d616b654e616976655465737473283429 17682:S29|4d415443485f434f4d50494c455228292e6d616b654c6f616473283529 17683:S29|4d415443485f434f4d50494c455228292e6d616b654e61697665283229 17684:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655061747473283129 17685:S24|4d415443485f434f4d50494c455228292e64696666283229 17686:S43|4d415443485f434f4d50494c455228292e6d616b654e616976652832296372656174655465737473283229 17687:S28|4d415443485f434f4d50494c455228292e70617474436f6465283529 17688:S43|4d415443485f434f4d50494c455228292e70617474436f64652835296d616b655061747454657374283329 17689:S24|4d415443485f434f4d50494c455228292e706c7573283229 17690:O1|@8362 17691:S51|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283129283129 17692:O1|@8358 17693:S48|4d415443485f434f4d50494c455228292e70617474436f6465283529636f6465506174742d6465737061746368283429 17694:S29|4d415443485f434f4d50494c455228292e706174744465707468283229 17695:S26|4d415443485f434f4d50494c455228292e66726f6d2832292829 17696:S29|4d415443485f434f4d50494c455228292e696e74657273656374283229 17697:S45|4d415443485f434f4d50494c455228292e636f6e7461696e734e6f6e436f6e7374457863657074696f6e283129 17698:O1|@8369 17699:S36|4d415443485f434f4d50494c455228292e6275696c64416f74283529646f417267283129 17700:O2|30,@10983 17701:O1|@8372 17702:O4|@4656,@10202,@17704,@17703 17703:O5|@17641,559,0,559,0 17704:S15|657175616c697479466f7254797065 17705:S40|4d415443485f434f4d50494c455228292e6275696c64416f74283529657175616c6974792d283129 17706:S40|4d415443485f434f4d50494c455228292e6275696c64416f742835296c697456616c75652d283129 17707:O4|@4656,@10202,@17709,@17708 17708:O5|@17641,446,0,446,0 17709:S31|7061747465726e206973206e6f742061207475706c6520696e20612d6f2d74 17710:S31|43616e27742066696e642061206669786564207265636f726420747970652e 17711:O4|@4656,@10202,@17622,@17712 17712:O5|@10420,3037,0,3037,0 17713:S28|4d415443485f434f4d50494c455228292e6275696c64416f74283529 17714:O4|@4656,@10202,@17716,@17715 17715:O5|@17641,472,0,472,0 17716:S6|6d657267656e 17717:S39|4d415443485f434f4d50494c455228292e6275696c64416f742835296d657267656e2833292829 17718:O4|@4656,@10202,@17622,@17719 17719:O5|@10420,3023,0,3023,0 17720:O4|101,@10091,0,@17721 17721:O5|@10420,3011,0,3011,0 17722:S26|545950455f5452454528292e656e7472794e756d626572283229 17723:O1|@8380 17724:S30|4d415443485f434f4d50494c455228292e61646444656661756c74283229 17725:O4|@4656,@10202,@17727,@17726 17726:O5|@17641,349,0,349,0 17727:S36|61646453636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 17728:S30|4d415443485f434f4d50494c455228292e61646453636f6e737472283529 17729:S41|4d415443485f434f4d50494c455228292e61646453636f6e737472283529616464436c697374283129 17730:O1|@8389 17731:S22|436f6e76657273696f6e20657863657074696f6e2028 17732:S26|2920726169736564207768696c6520636f6e76657274696e6720 17733:S4|20746f20 17734:S43|4f766572666c6f7720657863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 17735:O4|1,@9841,0,@17736 17736:O5|@17077,1286,0,1286,0 17737:S34|457863657074696f6e20726169736564207768696c6520636f6e76657274696e6720 17738:S30|56414c55455f4f505328292e6765744c69746572616c56616c7565283429 17739:O1|@8390 17740:O4|@4656,@10202,@17742,@17741 17741:O5|@17641,539,0,539,0 17742:S34|6d6b436f6e735061743a206261646c792d666f726d65642070617273652d74726565 17743:S54|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c6973742832296d6b436f6e73506174283129 17744:O7|@11132,@13990,@17746,@17745,@10496,0,0 17745:O3|2,@17789,@17788 17746:O2|1,@17747 17747:O3|6,@11232,@17748 17748:O2|@17749,0 17749:O4|@4662,@9594,@17750,0 17750:O3|3,3,@17751 17751:O6|@5131,@10516,@17752,@11229,@11141,@10513 17752:O2|@5133,@17753 17753:O2|@17755,@17754 17754:O2|@17759,@17758 17755:O2|@10534,@17756 17756:O3|1,@17757,@10536 17757:O8|@16780,@11132,0,0,@10545,0,0,1 17758:O2|@17776,0 17759:O2|@16006,@17760 17760:O3|1,@17761,@10536 17761:O8|@17763,@11132,0,0,@17762,0,2,1 17762:O2|@17771,0 17763:O3|15,@17765,@17764 17764:O3|20,@17769,1 17765:O2|@17767,@17766 17766:O2|@17768,0 17767:O4|1,@10547,0,@17044 17768:O4|1,@10547,1,@17048 17769:O2|@16379,@17770 17770:O2|@17246,0 17771:O2|1,@17772 17772:O2|@17774,@17773 17773:O2|@17775,0 17774:O3|2,0,@10547 17775:O3|2,1,@10547 17776:O2|@17349,@17777 17777:O3|1,@17778,@10536 17778:O8|@17780,@11132,0,0,@17779,0,2,1 17779:O2|@17787,0 17780:O3|15,@17782,@17781 17781:O3|20,@17769,0 17782:O2|@17784,@17783 17783:O2|@17785,0 17784:O4|1,@16329,0,@17359 17785:O4|1,@16329,1,@17786 17786:O4|11,@10541,1,1 17787:O2|1,@10646 17788:O5|5,@17795,@11108,@11106,@10496 17789:O3|3,@17790,@17447 17790:O2|@17792,@17791 17791:O2|@17794,0 17792:O2|@17451,@17793 17793:O3|6,@4684,79992 17794:O2|@17453,@17788 17795:O2|@17793,0 17796:S45|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229283129 17797:O7|@11124,@10009,@17798,@17788,@10496,0,0 17798:O2|1,@17799 17799:O3|6,@11230,@17800 17800:O2|@17801,0 17801:O4|@4662,@9594,@17802,0 17802:O3|3,2,@17803 17803:O6|@5131,@10516,@17804,@11229,@11141,@10513 17804:O2|@5133,@17805 17805:O2|@17806,@17438 17806:O2|@16714,@17807 17807:O3|1,@17808,@10536 17808:O8|@17442,@11124,0,0,@10545,0,0,1 17809:O4|@4656,@10202,@17811,@17810 17810:O5|@17641,316,0,316,0 17811:S35|616464436f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 17812:S42|4d415443485f434f4d50494c455228292e6275696c64416f7428352970726f636573734c697374283229 17813:S29|4d415443485f434f4d50494c455228292e616464436f6e737472283629 17814:S40|4d415443485f434f4d50494c455228292e616464436f6e737472283629616464436c697374283129 17815:O4|@4656,@10202,@17817,@17816 17816:O5|@17641,401,0,401,0 17817:S37|6164644578636f6e7374723a206261646c792d666f726d656420616e642d6f722074726565 17818:S31|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429 17819:S42|4d415443485f434f4d50494c455228292e6164644578636f6e737472283429616464436c697374283129 17820:S30|4d415443485f434f4d50494c455228292e74657374416363657373283129 17821:S30|56414c55455f4f505328292e676574506f6c796d6f72706869736d283329 17822:O2|@8446,@17557 17823:S47|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329676574436f6e737472283129 17824:O4|@4656,@10202,@17826,@17825 17825:O5|@17302,630,0,630,0 17826:S22|4c6973743a2062616420656c656d656e742074797065 17827:S38|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329283129 17828:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283129 17829:S49|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329 17830:S60|434f444547454e5f50415253455452454528292e636f646547656e657261746528332970726f63657373426f6479283329636f64654c697374283329 17831:O4|@4656,@10202,@17833,@17832 17832:O5|@17302,555,0,555,0 17833:S20|636f646567656e3a20556e617279207475706c65 17834:O4|@4656,@10202,@16183,@17835 17835:O5|@11070,423,0,423,0 17836:O4|@4656,@10202,@16186,@17837 17837:O5|@11070,421,0,421,0 17838:O1|@8418 17839:O4|@4656,@10202,@17841,@17840 17840:O5|@17302,591,0,591,0 17841:S17|6d697373696e6720696e207265636f7264 17842:S35|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329 17843:S54|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c6973742833296c6f6f6b466e283129 17844:S45|434f444547454e5f50415253455452454528292e636f646547656e65726174652833296465636c697374283329 17845:S58|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129676574436f6e737472283129 17846:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f6e734c697374283129 17847:S29|56414c55455f4f505328292e636f6465457846756e6374696f6e283629 17848:O4|@4656,@10202,@17850,@17849 17849:O5|@17302,695,0,695,0 17850:S22|4578705365713a20656d7074792073657175656e6365 17851:S46|434f444547454e5f50415253455452454528292e636f646547656e6572617465283329636f64654c697374283329 17852:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429666e4d6b41646472283129 17853:O4|@4656,@10202,@17855,@17854 17854:O5|@17302,813,0,813,0 17855:S43|636f64654c616d6264613a20626f6479206f6620666e206973206e6f74206120636c61757365206c697374 17856:O4|@4656,@10202,@17858,@17857 17857:O5|@17302,797,0,797,0 17858:S42|676574466e426f64793a206e6f74206120636f6e73747261696e656420666e2d65787072657373696f6e 17859:S44|434f444547454e5f50415253455452454528292e636f64654c616d626461283429636f6465416c7473283129 17860:S33|434f444547454e5f50415253455452454528292e636f64654c616d626461283429 17861:S106|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d666e4d6b41646472283129 17862:O1|@8467 17863:S26|5061747465726e206973206e6f7420657868617573746976652e 17864:S44|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329 17865:S58|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229 17866:S83|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6170706c69636174696f6e283229 17867:O4|@4656,@10202,@17869,@17868 17868:O5|@17302,1681,0,1681,0 17869:S13|6c6f616446756e6374696f6e73 17870:S85|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229726573756c74436f64652d6c6f616446756e6374696f6e73283329 17871:O4|@4656,@10202,@17873,@17872 17872:O5|@17302,1642,0,1642,0 17873:S7|6c6f616456616c 17874:O4|@4656,@10202,@17876,@17875 17875:O5|@17641,1124,0,1124,0 17876:S42|636f646542696e64696e673a2073686f756c64206265206e61697665207061747465726e206d61746368 17877:O3|6,@17878,0 17878:S4|42696e64 17879:O3|6,100,0 17880:S31|4d415443485f434f4d50494c455228292e636f646542696e64696e67283429 17881:S110|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229747970655661724d61707c6d6b416464727c6c6576656c7c6c6f63616c436f6e746578742d61726741646472732d283129283129 17882:S77|434f444547454e5f50415253455452454528292e636f64654e6f6e52656356616c42696e64696e6773283329636f646542696e64696e67283229706f6c7956617273466f7256616c732d283129 17883:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f636573735461696c283129 17884:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f64655374726465637328392970726f63657373426f6479283129 17885:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929 17886:S37|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629 17887:S47|44454255474745525f28292e6d616b655479706549644465627567456e7472696573283629666f6c64496473283329 17888:S43|535452554354555245535f28292e67656e636f6465537472756374732833296d6170506169722834292829 17889:S65|535452554354555245535f28292e67656e636f646553747275637473283329636f646553747264656373283929636f646553747275637475726542696e64283329 17890:O1|@8513 17891:O4|11,@9448,0,@17892 17892:O5|@13664,2792,0,2792,0 17893:S53|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835292d45 17894:O5|@8515,@14029,@16693,@16863,@16989 17895:O1|@8516 17896:S42|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283129 17897:O1|@8518 17898:S45|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283129 17899:O1|@8520 17900:S44|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283129 17901:O4|@4656,@10202,@17903,@17902 17902:O5|@16606,1164,0,1164,0 17903:S15|416c726561647920636865636b6564 17904:S14|7072696e742d68656c7065722829 17905:S47|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832292d45 17906:O1|@8526 17907:S45|545950454944434f444528292e636f646547656e6572617469766549642835296571436f64652d283229283129 17908:S10|657175616c6974792829 17909:O1|@8529 17910:S48|545950454944434f444528292e636f646547656e657261746976654964283529626f786564436f64652d283229283129 17911:S11|626f7865646e6573732829 17912:O1|@8532 17913:S47|545950454944434f444528292e636f646547656e65726174697665496428352973697a65436f64652d283229283129 17914:S6|73697a652829 17915:S32|545950454944434f444528292e636f646547656e657261746976654964283529 17916:S54|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f64652832296d6b41646472283129 17917:S56|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229617267732d283129283129 17918:S45|545950454944434f444528292e636f646547656e657261746976654964283529637265617465436f6465283229 17919:O4|@4656,@10202,@17921,@17920 17920:O5|@13664,2735,0,2735,0 17921:S22|46756e63746f724170706c3a20756e646566696e6564 17922:O1|@8545 17923:O4|11,@9448,0,@17924 17924:O5|@13664,2780,0,2780,0 17925:S47|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f6465283629 17926:S51|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e73283529 17927:O1|@8548 17928:S71|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d61746368537562537472756374757265283329 17929:O2|@10541,@17030 17930:S96|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296c6f6164436f6465283129 17931:O1|@8556 17932:O2|@8557,@4804 17933:S29|706f6c79436f6d70696c65722832297072696e7444657074682d283129 17934:O1|@8558 17935:O5|0,0,0,@17937,@17936 17936:O2|@17940,0 17937:O2|@17938,0 17938:O2|0,@17939 17939:O5|@10420,1869,1869,0,0 17940:O2|3,@17941 17941:S11|53696d706c654572726f72 17942:O5|0,0,0,@17944,@17943 17943:O2|@17947,0 17944:O2|@17945,0 17945:O2|0,@17946 17946:O5|@10420,1870,1870,0,0 17947:O2|3,@17948 17948:S20|54797065436f6e7374727563746f724572726f72 17949:S17|7072696e742d6d61746368526573756c74 17950:O4|@4656,@10202,@17952,@17951 17951:O5|@13664,2608,0,2608,0 17952:S27|756e6966795479706573206661696c656420696e20706173732033 17953:O1|@8559 17954:S97|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e28332964657374566172732d283129 17955:S113|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d6d6b4164647273283129 17956:S85|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e283329 17957:S118|535452554354555245535f28292e67656e636f6465537472756374732833296170706c794d61746368416374696f6e732835296d617463685375625374727563747572652833296170706c79416374696f6e2833296a757374436f70797c706f6c79436f64652d61726741646472732d283129283129 17958:O1|@8569 17959:S22|506f6c794d4c2e7072657474795072696e742d283129 17960:O1|@8570 17961:S28|506f6c794d4c2e7072657474794d61726b7570283129283129283129 17962:S22|506f6c794d4c2e7072657474794d61726b7570283529 17963:S31|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329 17964:S41|506f6c794d4c2e7072657474794d61726b75702835296c61794f7574283329646f5072696e74283329 17965:O1|@8572 17966:S32|506f6c794d4c2e7072657474794d61726b757028352967657453697a65283229 17967:O3|@8568,@10122,77 17968:O4|@4656,@10202,@17970,@17969 17969:O5|@13664,2726,0,2726,0 17970:S37|6d616b6553656c65637465643a204e6f7420426f756e64206f72206e6f7420466f726d616c 17971:O1|@8584 17972:S61|535452554354555245535f28292e67656e636f646553747275637473283329737472756374757265436f646528362970726f63657373426f6479283129 17973:O1|@8585 17974:S47|535452554354555245535f28292e67656e636f6465537472756374732833296c6f61644f7061717565496473283329 17975:S45|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429 17976:O1|@8592 17977:S59|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f706465637328342964656275677c636f64652d283129 17978:S72|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e642833296d6b41646472283129 17979:S63|535452554354555245535f28292e67656e636f646553747275637473283329636f6465546f7064656373283429636f646546756e63746f7242696e64283329 17980:O1|@8600 17981:O4|@4656,@10202,@17983,@17982 17982:O5|@10521,356,0,356,0 17983:S20|6d6b4d6163726f50726f633a20636c6f73757265 17984:S28|434f44455452454528292e6d6b4d6163726f50726f63283129283129 17985:S25|434f44455452454528292e6d6b4d6163726f50726f63283129 17986:S51|535452554354555245535f28292e67656e636f6465537472756374732833296c6561737447656e537472756374446563283129 17987:O4|@4656,@10202,@17989,@17988 17988:O5|@10866,2217,0,2217,0 17989:S36|72656475636554797065733a20556e61626c6520746f2073657420747970652076617273 17990:O1|@8613 17991:S59|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c54797065732832296c6561737447656e457870283129 17992:S27|545950455f5452454528292e6c6561737447656e6572616c283129 17993:O4|@4658,@10397,0,@17994 17994:O5|@10420,3105,0,3105,0 17995:S39|545950455f5452454528292e6c6561737447656e6572616c2831296c6561737441726773283129 17996:S44|545950455f5452454528292e6c6561737447656e6572616c28312967657454797065436f6e73747273283129 17997:O2|@8615,@16638 17998:O1|@8632 17999:S107|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832296f726967696e616c566172732d283129 18000:O1|@8634 18001:O1|@8635 18002:S91|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e6365283229 18003:S103|54595045434845434b5f50415253455452454528292e7365744c6561737447656e6572616c547970657328322970726f636573735661726961626c655365742831296765745479706556617273416e64496e7374616e63652832297472616e73706f7365283129 18004:S31|467265652074797065207661726961626c6573206e6f7420616c6c6f776564 18005:S36|50415253455f44454328292e7061727365446563283329676c6f62616c456e762d283129 18006:O1|@8649 18007:O3|@8651,@18094,@18008 18008:O2|@8753,@18007 18009:S35|50415253455f44454328292e6d6b4c6f63616c426f6479466978456e76283529283129 18010:O1|@8656 18011:S19|53796d5365742e73747275637453792d283129 18012:S38|50415253455f44454328292e7061727365446563283329737472756374757265446563283329 18013:S19|534b4950535f28292e74657374666f72283329 18014:S15|3c6368617220636f6e7374616e743e 18015:S12|3c6964656e7469666965723e 18016:S18|3c696e746567657220636f6e7374616e743e 18017:S14|756e6b6e6f776e2073796d626f6c 18018:S15|3c7265616c20636f6e7374616e743e 18019:S17|3c737472696e6720636f6e7374616e743e 18020:S17|3c74797065206964656e7469666965723e 18021:S15|3c776f726420636f6e7374616e743e 18022:S19|534b4950535f28292e62616473796d73283229 18023:S14|2065787065637465642062757420 18024:S10|2077617320666f756e64 18025:S20|534b4950535f28292e6e6f74666f756e64283229 18026:S15|53796d626f6c732e72657072283129 18027:O1|@8664 18028:O2|@8666,@18029 18029:O2|@8699,@18028 18030:O1|@8667 18031:S18|5374617274206f66207369676e6174757265 18032:S5|6572726f72 18033:S40|50415253455f44454328292e706172736544656328332970617273655369676e6174757265283329 18034:O1|@8673 18035:S16|53796d5365742e6964656e742d283129 18036:O1|@8674 18037:O4|@4656,@10202,@18039,@18038 18038:O5|@10154,612,0,612,0 18039:S31|417474656d707420746f20707573682074776f20706172656e746865736573 18040:O1|@8677 18041:S20|53796d5365742e747970654964656e742d283129 18042:S56|50415253455f44454328292e706172736544656328332970617273655369676e617475726528332967657457686572655479706573283229 18043:O1|@8680 18044:S16|53796d5365742e656d7074792d283129 18045:S11|456e64206f662074797065 18046:S25|50415253455f5459504528292e706172736554797065283429 18047:S37|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229 18048:S7|4c6162656c2028 18049:S25|292061707065617273206d6f7265207468616e206f6e63652e 18050:S75|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d7265706f7274447570283329 18051:O1|@8678 18052:S50|50415253455f5459504528292e7061727365547970652834297475706c655479706528322967657450726f64756374283229 18053:S10|4964656e746966696572 18054:O2|@9493,@10983 18055:S49|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229 18056:S25|4c6162656c73206d75737420626520312c322c332c2e2e2e2e 18057:S20|534b4950535f28292e6765744c6162656c283329 18058:S64|50415253455f5459504528292e7061727365547970652834297475706c6554797065283229626173696354797065283229636f6e7374727563746f7273283329 18059:S77|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c697374283129 18060:S87|50415253455f5459504528292e7061727365547970652834297475706c65547970652832296261736963547970652832297365714c6f636e7c74795365712d70726f636573734c69737428312974657374666f72283329 18061:S17|534b4950535f28292e6765746964283429 18062:S42|20686173206e6f74206265656e206465636c6172656420696e2074797065206465636c61726174696f6e 18063:S42|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329283129 18064:S39|50415253455f44454328292e706172736544656328332967656e54797065566172456e76283329 18065:S23|2068617320616c7265616479206265656e20757365642e 18066:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283129 18067:S55|50415253455f44454328292e70617273654465632833296765745479706556617273283229676574547970655661722832295f2d283229 18068:S37|50415253455f44454328292e70617273654465632833296765745479706556617273283229 18069:S50|50415253455f44454328292e7061727365446563283329676574547970655661727328322967657454797065566172283229 18070:S18|534b4950535f28292e736b69706f6e283429 18071:S43|50415253455f44454328292e70617273654465632833296d616b6554797065566172456e76283229283129 18072:S9|5369676e6174757265 18073:S75|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d6e6577656e762d283129 18074:S40|50415253455f44454328292e70617273654465632833297479706542696e64696e67283129283129 18075:S37|50415253455f44454328292e70617273654465632833297479706542696e64696e67283529 18076:O1|@8709 18077:S39|50415253455f44454328292e70617273654465632833297369676e617475726553706563283329 18078:S52|4461746174797065207265706c69636174696f6e206d757374206e6f7420636f6e7461696e2074797065207661726961626c6573 18079:O1|@8722 18080:S44|50415253455f44454328292e7061727365446563283329646174617479706542696e64696e67283129283129 18081:S62|60606f702727206d6179206e6f7420617070656172206265666f7265206120636f6e7374727563746f7220696e20612073706563696669636174696f6e2e 18082:S38|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729 18083:S48|50415253455f44454328292e7061727365446563283329646174617479706542696e64283729636f6e73747273283229 18084:S57|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129 18085:O1|@8729 18086:S72|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f4578283229 18087:S79|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f537472756374757265283229 18088:S73|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d646f56616c283229 18089:S37|50415253455f44454328292e7061727365446563283329616e6442696e64696e6773283329 18090:S74|50415253455f44454328292e70617273654465632833297369676e6174757265537065632833297061727365536967456e7472696573283129746869735369672d736967696473283229 18091:S43|50415253455f44454328292e706172736544656328332964617461747970654465634f725265706c283529 18092:S49|50415253455f44454328292e7061727365446563283329737472756374757265446563283329646f537472446563283229 18093:S18|534b4950535f28292e67657473796d283229 18094:O2|@8741,@18008 18095:O1|@8742 18096:S29|737472756374206f722066756e63746f72206170706c69636174696f6e 18097:S35|50415253455f44454328292e706172736544656328332973747275637456616c283329 18098:S51|50415253455f44454328292e706172736544656328332973747275637456616c283329646f436f6e73747261696e7473283329 18099:S32|50415253455f44454328292e7061727365446563283329737472446563283329 18100:O1|@8756 18101:O1|@8758 18102:S26|50415253455f5452454528292e6d6b4964656e74283229283129 18103:O1|@8768 18104:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283129 18105:S48|50415253455f44454328292e7061727365446563283329646563283529657863657074696f6e42696e64696e67283229 18106:S39|50415253455f44454328292e70617273654465632833296465632835296e6577456e762d283129 18107:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283129 18108:S31|5468697320636c6175736520646566696e65732066756e6374696f6e206060 18109:S36|2727206275742070726576696f757320636c6175736528732920646566696e6564206060 18110:S16|5468697320636c617573652068617320 18111:S38|20617267756d656e7473206275742070726576696f757320636c617573652873292068616420 18112:S36|50415253455f44454328292e706172736544656328332964656328352966756e42283229 18113:O1|@8776 18114:O1|@8778 18115:S7|5061747465726e 18116:O1|@8779 18117:O7|@10755,2,@18119,@18118,@10496,0,0 18118:O3|2,@11238,@18120 18119:O2|3,8 18120:O3|6,@4806,79992 18121:S45|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e742831292d45 18122:O1|@8780 18123:O7|@18124,2,@18119,@18118,@10496,0,0 18124:S7|636f6e76496e74 18125:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832297265706f7274447570283329 18126:S38|5265616c20636f6e7374616e7473206e6f7420616c6c6f77656420696e207061747465726e73 18127:O1|@8783 18128:O7|@18129,2,@18119,@18118,@10496,0,0 18129:S8|636f6e765265616c 18130:O1|@8784 18131:O7|@10753,2,@18119,@18118,@10496,0,0 18132:O1|@8785 18133:O7|@18134,2,@18119,@18118,@10496,0,0 18134:S8|636f6e76576f7264 18135:S46|292068617320696e666978207374617475732062757420776173206e6f74207072656365646564206279206f702e 18136:S55|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229 18137:S43|50415253455f44454328292e7061727365446563283329646563283529676574436f6e7374616e74283129 18138:S66|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d7475706c6573283129 18139:S35|203d20706174206578706563746564206166746572206e756d65726963206c6162656c 18140:O1|@8793 18141:S32|4578706563746564206964206f722069643a7479206265666f72652060617327 18142:S67|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e2832296765744c6162656c73283229 18143:S61|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329636f6e73747261696e744f724c617965726564283429 18144:S42|50415253455f44454328292e7061727365446563283329646563283529636f6e73747261696e74283529 18145:S68|50415253455f44454328292e70617273654465632833296465632835297061747465726e28332961746f6d69635061747465726e283229702d766172734c697374283129 18146:S41|50415253455f44454328292e70617273654465632833296765744c6f6e674e6f6e496e666978283729 18147:O1|@8800 18148:S14|456e64206f66207061747465726e 18149:S47|50415253455f44454328292e706172736544656328332964656328352966756e4228322962696e64696e6773283229 18150:O1|@8802 18151:S73|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e2832297265706f7274447570283329 18152:O1|@8812 18153:O1|@8813 18154:O1|@8814 18155:O1|@8815 18156:O1|@8816 18157:O1|@8817 18158:S21|456e64206f66206c65742065787072657373696f6e 18159:S61|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229 18160:S72|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332961746f6d696345787072657373696f6e283229676574456e747279283229 18161:S43|50415253455f44454328292e706172736544656328332964656328352964656353657175656e6365283229 18162:O1|@8826 18163:S10|45787072657373696f6e 18164:S42|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e283329 18165:S12|456e64206f66206d61746368 18166:S50|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296d61746368283129 18167:S56|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e28332970617273654f72656c7365283229 18168:O1|@8843 18169:S57|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833297061727365416e64616c736f283229 18170:S55|50415253455f44454328292e706172736544656328332964656328352965787072657373696f6e2833296b6579576f7264457870283229 18171:O3|@9493,@10983,@10515 18172:O2|-1,0 18173:S42|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729 18174:O1|@8850 18175:S5|7269676874 18176:S4|6c656674 18177:O2|@18178,0 18178:S13|2d6173736f636961746976652e 18179:S5|2220697320 18180:S20|2d6173736f63696174697665207768696c652022 18181:S32|222068617665207468652073616d6520707265636564656e6365206275742022 18182:S7|2220616e642022 18183:S11|4f70657261746f72732022 18184:S54|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729 18185:S75|50415253455f44454328292e70617273654465632833296465632835297061727365496e6669782837296e6578744c6576656c283729636865636b4173736f636961746976697479283229 18186:S56|50415253455f44454328292e70617273654465632833296465632835297061727365496e666978283729726561644e6578744f7073283229 18187:S61|50415253455f44454328292e70617273654465632833296465632835297061727365496e66697828372970617273654170706c69636174696f6e283429 18188:S79|53796e746178206572726f723a2066756e2062696e64696e67206973206e6f7420616e206964656e746966696572206170706c69656420746f206f6e65206f72206d6f7265207061747465726e732e 18189:S70|506172656e74686573657320617265206f6e6c7920616c6c6f77656420666f7220696e6669786564206170706c69636174696f6e7320696e2066756e2062696e64696e67732e 18190:S63|436f6e7374727563746f72206170706c69636174696f6e7320696e2066756e2062696e64696e6773206d75737420626520706172656e74686573697365642e 18191:S28|50415253455f5452454528292e6d6b46756e5061747465726e283329 18192:S37|50415253455f5452454528292e6d6b46756e5061747465726e283329756e7069636b283229 18193:S39|50415253455f44454328292e70617273654465632833296465632835297061747465726e283329 18194:S42|50415253455f44454328292e706172736544656328332973747244656328332967657444656373283129 18195:S29|50415253455f44454328292e7061727365446563283329646563283529 18196:S36|50415253455f44454328292e706172736544656328332964656328352976616c42283329 18197:S36|50415253455f44454328292e706172736544656328332964656328352976617273283229 18198:S8|5661726961626c65 18199:O4|@4656,@10202,@18201,@18200 18200:O5|@18202,558,0,558,0 18201:S6|666978697479 18202:S32|6d6c736f757263652f4d4c436f6d70696c65722f50415253455f4445432e4d4c 18203:S29|537472696e674376742e7363616e537472696e67283229726472283129 18204:O9|@8871,1152921504606846976,15,1000000000000000000,18,1152921504606846976,20,2305843009213693952,61 18205:S16|4c61726765496e742e7363616e283329 18206:S34|4c61726765496e742e7363616e283329726561645f6865785f646967697473283329 18207:O4|5,@9518,0,@18208 18208:O5|@10024,352,0,352,0 18209:S11|507265636564656e636520 18210:S37|206e6f7420616c6c6f7765642c206d757374206265206265747765656e203020616e642039 18211:S32|50415253455f44454328292e7061727365446563283329666978697479283329 18212:S39|50415253455f44454328292e706172736544656328332966697869747928332976617273283229 18213:S48|50415253455f44454328292e7061727365446563283329666978697479283329676574507265636564656e6365283129 18214:O1|@8874 18215:O1|@8875 18216:S22|53796d5365742e7369676e617475726553792d283129 18217:O1|@8876 18218:S20|53796d5365742e66756e63746f7253792d283129 18219:S23|50415253455f44454328292e7061727365446563283329 18220:S38|50415253455f44454328292e70617273654465632833297061727365546f7044656373283229 18221:S36|50415253455f44454328292e706172736544656328332966756e63746f72446563283329 18222:S49|50415253455f44454328292e706172736544656328332966756e63746f72446563283329646f46756e6374446563283229 18223:S38|50415253455f44454328292e70617273654465632833297369676e6174757265446563283329 18224:S25|4d414b455f28292e636f6d70696c65496e746f456e76283129 18225:O5|5,0,@10495,@16888,0 18226:O2|@11241,@18227 18227:O2|@11240,0 18228:O3|2,0,1 18229:O3|2,1,1 18230:O1|@8888 18231:O4|11,@9448,0,@18232 18232:O5|@10918,530,0,530,0 18233:S35|5354525543545f56414c5328292e6d616b65456d707479476c6f62616c283129283129 18234:S4|426f6f6c 18235:O3|2,@10875,@10875 18236:S3|6e6f74 18237:O2|@10592,@18238 18238:O2|@10590,0 18239:O2|@10611,@18240 18240:O2|@10609,0 18241:O2|@10563,@18242 18242:O2|@10561,0 18243:O2|@11108,@18244 18244:O2|@11106,@18245 18245:O2|@17744,@18246 18246:O2|@17797,0 18247:O2|@17384,@18248 18248:O2|@17382,@18249 18249:O2|@17429,@18250 18250:O2|@17330,0 18251:O4|@11271,@18253,@10496,@18252 18252:O3|@18256,@18293,@18255 18253:O2|@18254,0 18254:O2|@4807,79992 18255:O3|@11271,@10498,@10559 18256:O2|1,@18257 18257:O3|6,@18259,@18258 18258:O2|@18271,0 18259:O4|@18261,@4808,@18268,@18260 18260:O1|@8894 18261:O1|@8889 18262:O1|@8890 18263:S11|65712d68656c7065722829 18264:O1|@8891 18265:O1|@8892 18266:S40|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129283129 18267:S37|545950455f5452454528292e64656661756c74506f6c79547970655072696e746572283129 18268:O1|@8893 18269:S14|626f7865642d68656c7065722829 18270:S13|73697a652d68656c7065722829 18271:O4|@4662,@9594,@18272,0 18272:O3|3,4,@18273 18273:O5|@5126,@18275,@18292,@18274,@10513 18274:O4|@18259,@18261,@18268,@18260 18275:O2|@5133,@18276 18276:O2|@18278,@18277 18277:O2|@18283,@18282 18278:O2|@10534,@18279 18279:O3|1,@18280,@10536 18280:O8|@18281,@18263,0,0,@11223,0,0,1 18281:O2|12,@10537 18282:O2|@18286,@18285 18283:O2|@18284,@10515 18284:O3|0,@4808,0 18285:O2|@18289,0 18286:O2|@16006,@18287 18287:O3|1,@18288,@10536 18288:O8|@16657,@18269,0,0,@11223,0,0,1 18289:O2|@17349,@18290 18290:O3|1,@18291,@10536 18291:O8|@10632,@18270,0,0,@11223,0,0,1 18292:O3|2,2,2 18293:O4|1,@4678,1,0 18294:S16|457175616c4c61726765576f72642829 18295:O4|3,@10541,@10543,@16017 18296:O1|@8895 18297:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f547970655072696e746572283129 18298:O2|@10632,@14033 18299:S14|4c61726765576f72642e776f7264 18300:O2|@11304,@18301 18301:O2|@11303,0 18302:O2|@10573,@18303 18303:O2|@10571,0 18304:O1|@8896 18305:S7|52756e43616c6c 18306:S13|756e7361666543617374283129 18307:S10|756e7361666543617374 18308:S7|697353686f7274 18309:S9|706f696e7465724571 18310:S15|6c6f61644f7065726174696f6e2829 18311:O3|13,@15120,@18312 18312:O3|@17044,@18313,0 18313:O1|@17048 18314:O2|@18315,0 18315:O5|5,0,@10573,@10571,0 18316:S8|6c6f6164576f7264 18317:O3|13,@15601,@18312 18318:S21|6c6f6164576f726446726f6d496d6d757461626c65 18319:O3|13,@15548,@18312 18320:S8|6c6f616442797465 18321:O3|13,@15550,@18312 18322:S21|6c6f61644279746546726f6d496d6d757461626c65 18323:S16|6d656d6f727943656c6c4c656e677468 18324:S15|6d656d6f727943656c6c466c616773 18325:O2|@18327,@18326 18326:O7|@18327,2,@18329,@18315,@18328,0,0 18327:S12|6279746573506572576f7264 18328:O2|@10497,0 18329:O2|1,@17319 18330:S16|73746f72654f7065726174696f6e2829 18331:O4|18,@15120,@18332,@18312 18332:O4|11,@10541,2,0 18333:S9|73746f7265576f7264 18334:O4|18,@15548,@18332,@18312 18335:S9|73746f726542797465 18336:S15|636c6561724d757461626c65426974 18337:O2|@18315,@18338 18338:O2|@18315,0 18339:S18|616c6c6f63617465427974654d656d6f7279 18340:O2|12,@18341 18341:O8|@18343,@18342,0,0,@11223,0,0,1 18342:S20|416c6c6f63617465576f72644d656d6f72792829 18343:O4|0,@17048,@18332,@17044 18344:S18|616c6c6f63617465576f72644d656d6f7279 18345:S16|626c6f636b4f7065726174696f6e2829 18346:O5|4,1,@18348,@18349,@18347 18347:O3|@17044,@18352,0 18348:O4|11,@10541,4,0 18349:O3|@17048,@18350,0 18350:O1|@18351 18351:O4|11,@10541,3,0 18352:O1|@18332 18353:O2|@18315,@18337 18354:S15|62797465566563746f72457175616c 18355:O5|4,0,@18348,@18349,@18347 18356:S17|62797465566563746f72436f6d70617265 18357:O5|4,@10468,@18348,@18349,@18347 18358:S9|6d6f76654279746573 18359:O5|4,@9948,@18348,@18349,@18347 18360:S9|6d6f7665576f726473 18361:O3|13,@10638,@18312 18362:O2|@11238,@18338 18363:S12|6c6f6164556e746167676564 18364:O4|18,@10638,@18332,@18312 18365:O2|@11238,@18337 18366:S13|73746f7265556e746167676564 18367:O3|6,@18368,0 18368:O1|@8897 18369:O4|@8898,@16086,@18445,@18370 18370:O1|@8906 18371:O2|@18372,0 18372:O3|31,@16004,@18373 18373:O4|1,@16004,@14742,0 18374:O3|31,@15123,@18375 18375:O4|1,@15121,@14742,48 18376:O3|48,@18377,@15123 18377:O3|@15121,@14742,64 18378:O3|31,@15998,@15766 18379:O2|@18381,@18380 18380:O2|@18384,@18383 18381:O2|35,@18382 18382:O4|1,@15998,@14742,4 18383:O2|@18387,@18386 18384:O2|35,@18385 18385:O2|3,@16017 18386:O2|@18389,0 18387:O2|35,@18388 18388:O2|3,@10542 18389:O2|35,@18390 18390:O4|1,@15121,@14742,56 18391:O4|@4656,@10202,@18393,@18392 18392:O5|@18394,182,0,182,0 18393:S43|72747343616c6c3a204162692f617267756d656e7420636f756e74206e6f7420696d706c656d656e746564 18394:S55|6d6c736f757263652f4d4c436f6d70696c65722f436f6465547265652f583836436f64652f583836464f524549474e43414c4c2e736d6c 18395:O2|@18397,@18396 18396:O2|@18399,@18398 18397:O3|31,@11193,@18390 18398:O2|@18401,@18400 18399:O3|31,@10535,@18388 18400:O2|@18403,0 18401:O3|31,@12641,@18402 18402:O2|3,@10544 18403:O3|31,@10544,@18385 18404:O2|@18397,@18405 18405:O2|@18399,@18400 18406:O2|@18397,@18407 18407:O2|@18399,0 18408:O2|@18397,0 18409:O2|@18411,@18410 18410:O2|@18413,@18412 18411:O3|31,@15120,@18390 18412:O2|@18415,@18414 18413:O3|31,@15548,@18388 18414:O2|@18416,0 18415:O3|31,@10535,@18385 18416:O3|31,@11193,@18402 18417:O2|@18411,@18418 18418:O2|@18413,@18419 18419:O2|@18415,0 18420:O2|@18411,@18421 18421:O2|@18413,0 18422:O2|@18411,0 18423:O2|@18425,@18424 18424:O2|@18427,@18426 18425:O2|24,0 18426:O2|@15653,0 18427:O3|31,@10542,@18428 18428:O4|1,@15121,@14742,32 18429:O4|8,9,0,1 18430:O5|2,2,@15121,32,1 18431:O2|@18432,0 18432:O3|31,@15601,@18433 18433:O4|1,@15121,@14742,0 18434:O2|@18436,@18435 18435:O2|@18437,0 18436:O2|6,@16003 18437:O3|31,@15123,@18438 18438:O2|3,@15998 18439:O2|@18440,0 18440:O3|48,@18441,@15601 18441:O3|@15121,@14742,0 18442:S17|556e6b6e6f776e20414249207479706520 18443:O5|@18394,84,0,84,0 18444:S31|583836464f524549474e43414c4c28292e72747343616c6c46756c6c283329 18445:O1|@8905 18446:S10|506f6c79476574414249 18447:S26|506f6c79437265617465456e747279506f696e744f626a656374 18448:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6543616c6c283129283129283129 18449:S12|72747343616c6c46756c6c31 18450:O3|6,@18451,0 18451:O1|@8907 18452:O4|@8908,@16086,@18445,@18370 18453:O2|@18455,@18454 18454:O2|@18457,@18456 18455:O3|31,@10535,@18382 18456:O2|@18459,@18458 18457:O2|35,@15632 18458:O2|@18457,@18461 18459:O3|31,@10535,@18460 18460:O4|1,@15998,@14742,8 18461:O2|@18384,@18462 18462:O2|@18387,0 18463:O2|@18464,@18419 18464:O3|31,@11193,@18388 18465:O2|@18467,@18466 18466:O2|@18469,@18468 18467:O3|31,@15120,@18388 18468:O2|@18471,@18470 18469:O3|31,@15548,@18385 18470:O2|@18472,0 18471:O3|31,@10535,@18402 18472:O3|31,@11193,@18473 18473:O2|3,@12641 18474:O2|@18455,@18458 18475:O2|@18467,@18476 18476:O2|@18469,@18477 18477:O2|@18471,0 18478:O2|@18467,@18479 18479:O2|@18469,0 18480:O2|@18464,0 18481:O2|@18467,0 18482:O4|@4656,@10202,@18393,@18483 18483:O5|@18394,281,0,281,0 18484:S31|583836464f524549474e43414c4c28292e72747343616c6c46617374283329 18485:S12|72747343616c6c4661737431 18486:O1|@8911 18487:O1|@8912 18488:O1|@8913 18489:O1|@8914 18490:O1|@8915 18491:O1|@8916 18492:O1|@8917 18493:S12|72747343616c6c46756c6c30 18494:S12|72747343616c6c4661737430 18495:S12|72747343616c6c46756c6c32 18496:S12|72747343616c6c4661737432 18497:S12|72747343616c6c46756c6c33 18498:S12|72747343616c6c4661737433 18499:S12|72747343616c6c4661737434 18500:O1|@8918 18501:S6|537973457272 18502:O3|@18503,12,@11238 18503:S6|546872656164 18504:O3|@18505,23,@11238 18505:S7|466f726569676e 18506:O3|@18507,10,@11238 18507:S8|5857696e646f7773 18508:O3|@18509,8,@11238 18509:S10|436f6e76657273696f6e 18510:O3|@18511,103,@11238 18511:S4|4661696c 18512:O1|@8919 18513:S8|4c61726765496e74 18514:O2|@18225,@18515 18515:O2|@18225,0 18516:S11|63616c6c51756f7452656d 18517:O2|@10495,@18518 18518:O2|@16888,0 18519:O2|1,3 18520:S4|6c657373 18521:S7|67726561746572 18522:S6|6c6573734571 18523:S9|677265617465724571 18524:S3|616464 18525:S8|7375627472616374 18526:S8|6d756c7469706c79 18527:O1|@8920 18528:S8|4669786564496e74 18529:O2|@17108,@17107 18530:O2|@10495,@18531 18531:O2|@10493,0 18532:O3|9,4,1 18533:O3|9,1,1 18534:O3|9,2,1 18535:S2|3e3d 18536:S4|71756f74 18537:O2|1,5 18538:S3|72656d 18539:O1|@8921 18540:O2|3,3 18541:O2|3,4 18542:O2|3,2 18543:S3|646976 18544:S3|6d6f64 18545:S3|6f7262 18546:S4|616e6462 18547:O2|4,2 18548:S4|786f7262 18549:S2|3c3c 18550:O2|5,2 18551:S2|3e3e 18552:S3|7e3e3e 18553:O1|@8922 18554:S11|746f4c61726765576f7264 18555:S12|746f4c61726765576f726458 18556:S13|66726f6d4c61726765576f7264 18557:O3|9,3,0 18558:O3|9,4,0 18559:O3|9,1,0 18560:O3|9,2,0 18561:O2|8,6 18562:O2|8,3 18563:O2|8,1 18564:O2|8,2 18565:O2|10,1 18566:O2|10,0 18567:O2|10,2 18568:O2|11,0 18569:O2|11,2 18570:O2|11,1 18571:O1|@8923 18572:S4|43686172 18573:O2|@18575,@18574 18574:O2|@18575,0 18575:O5|5,0,@10592,@10590,0 18576:O1|@8924 18577:S6|537472696e67 18578:O1|@8925 18579:O3|6,@18580,0 18580:O1|@8926 18581:O4|@8927,@16086,@18445,@18370 18582:O2|@18584,@18583 18583:O2|@18587,@18586 18584:O3|17,@18585,0 18585:O3|@10542,@14742,0 18586:O2|@18588,0 18587:O4|4,4,@15123,@11191 18588:O4|21,1,@18589,0 18589:O3|@15123,@14742,0 18590:O2|@18591,0 18591:O4|53,5,0,@18592 18592:O4|1,@10542,@14742,0 18593:O3|@10542,@14742,-8 18594:O2|@18596,@18595 18595:O2|@15624,0 18596:O4|21,1,@18585,0 18597:O4|0,1,@10542,0 18598:O2|@18597,@18599 18599:O2|@18601,@18600 18600:O2|@18603,@18602 18601:O3|43,@18593,1 18602:O2|@18605,@18595 18603:O4|47,2,@18604,1 18604:O3|@10542,@14742,-1 18605:O4|55,@18585,0,0 18606:O2|@18607,0 18607:O2|39,0 18608:S43|583836464f524549474e43414c4c28292e72747343616c6c46617374466c6f6174746f466c6f6174283229 18609:S53|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b65466173745265616c5265616c43616c6c283129 18610:S19|72747343616c6c466173745265616c5265616c 18611:O3|6,@18612,0 18612:O1|@8932 18613:O4|@8933,@16086,@18445,@18370 18614:S45|583836464f524549474e43414c4c28292e72747343616c6c4661737447656e6572616c746f466c6f6174283229 18615:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6546617374496e74496e665265616c43616c6c283129 18616:S21|72747343616c6c46617374496e74496e665265616c 18617:O3|2,@11238,@18618 18618:O3|2,@18619,@18619 18619:O5|5,0,@10563,@10561,0 18620:S14|72747343616c6c46617374465f46 18621:O3|2,@11238,@18622 18622:O3|2,@18225,@18619 18623:S14|72747343616c6c46617374495f46 18624:O2|@18619,@18625 18625:O2|@18619,0 18626:O2|7,3 18627:O2|7,4 18628:O2|7,2 18629:S2|3d3d 18630:O2|6,6 18631:O2|6,3 18632:O3|2,@18619,@18619 18633:S3|616273 18634:O3|2,@17108,@18619 18635:S12|66726f6d4669786564496e74 18636:O1|@8938 18637:S9|426f6f747374726170 18638:O1|@8939 18639:O1|@8940 18640:O2|@16657,@14033 18641:O3|@18642,@10498,@10559 18642:S6|746872656164 18643:O2|1,@18644 18644:O2|12,@18645 18645:O8|@14658,@18646,0,0,@11223,0,0,1 18646:S13|47657454687265616449642829 18647:S4|73656c66 18648:O3|2,@18649,@18315 18649:O5|5,@18338,@11271,@18251,@18328 18650:S10|61746f6d6963496e6372 18651:S10|61746f6d696344656372 18652:O3|2,@18649,@11239 18653:S11|61746f6d69635265736574 18654:O1|@8941 18655:S13|466f726569676e4d656d6f7279 18656:O3|13,@10548,@18312 18657:S4|67657438 18658:O3|13,@9948,@18312 18659:S5|6765743136 18660:O3|13,@10468,@18312 18661:S5|6765743332 18662:O3|13,@10515,@18312 18663:S5|6765743634 18664:O3|13,@18665,@18312 18665:O1|5 18666:S8|676574466c6f6174 18667:O3|13,@14742,@18312 18668:S9|676574446f75626c65 18669:O4|18,@10548,@18332,@18312 18670:S4|73657438 18671:O4|18,@9948,@18332,@18312 18672:S5|7365743136 18673:O4|18,@10468,@18332,@18312 18674:S5|7365743332 18675:O4|18,@10515,@18332,@18312 18676:S5|7365743634 18677:O2|@18315,@18678 18678:O2|@18619,0 18679:O4|18,@18665,@18332,@18312 18680:S8|736574466c6f6174 18681:O4|18,@14742,@18332,@18312 18682:S9|736574446f75626c65 18683:O3|6,@18684,0 18684:O1|@8942 18685:S28|4d6973632e756e657363617065537472696e67283129726472283129 18686:O2|@8945,@9496 18687:S1|0d 18688:S1|0c 18689:S1|0b 18690:S1|0a 18691:S1|09 18692:S1|08 18693:S1|07 18694:S11|7363616e42617365283229 18695:S11|7265616448657827283429 18696:O4|8,@18509,@18698,@18697 18697:O5|@18699,91,0,91,0 18698:S23|496e76616c696420737472696e6720636f6e7374616e74 18699:S27|6d6c736f757263652f4d4c436f6d70696c65722f4d6973632e4d4c 18700:S22|4d6973632e756e657363617065537472696e67283129 18701:S34|4d6973632e756e657363617065537472696e67283129636f6e764368617273283129 18702:O3|6,@18703,0 18703:O1|@8947 18704:S3|7e3078 18705:O4|8,@18509,@18707,@18706 18706:O5|@18708,910,0,910,0 18707:S24|496e76616c696420696e746567657220636f6e7374616e74 18708:S34|6d6c736f757263652f4d4c436f6d70696c65722f494e495449414c4953455f2e4d4c 18709:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229696e744f66537472696e67283129 18710:O3|6,@18711,0 18711:O1|@8949 18712:B8|ffffffffffffff7f 18713:O4|5,@9518,0,@18714 18714:O5|@18715,201,0,201,0 18715:S21|2e2f62617369732f4c61726765576f72642e736d6c 18716:O4|8,@18509,@18718,@18717 18717:O5|@18708,921,0,921,0 18718:S21|496e76616c696420776f726420636f6e7374616e74 18719:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229776f72644f66537472696e67283129 18720:S11|7363616e576f7264283329 18721:S29|7363616e576f7264283329726561645f6865785f646967697473283329 18722:O2|@18724,@18723 18723:O7|@18724,2,@18725,@11238,@10496,0,0 18724:S14|636f6e76537472696e674e616d65 18725:O2|1,@18726 18726:O3|6,@10753,0 18727:O2|@18124,@18728 18728:O7|@18124,2,@18730,@18729,@10496,0,0 18729:O3|2,@11238,@18225 18730:O2|1,@18702 18731:O2|@18134,@18732 18732:O7|@18134,2,@18734,@18733,@10496,0,0 18733:O3|2,@11238,@18315 18734:O2|1,@18710 18735:O2|@10753,@18736 18736:O7|@10753,2,@18738,@18737,@10496,0,0 18737:O3|2,@11238,@11238 18738:O2|1,@18683 18739:S23|696e744973417262697472617279507265636973696f6e 18740:O2|@18742,@18741 18741:O2|@18746,0 18742:O3|13,@15601,@18743 18743:O3|@18745,@18744,0 18744:O1|@10541 18745:O2|8,@18519 18746:O3|13,@15601,@18747 18747:O3|@18748,@18744,0 18748:O2|8,@15553 18749:O4|11,@18750,0,0 18750:O2|8,@10009 18751:O2|@18752,0 18752:O4|3,@10541,@10632,@17552 18753:O4|3,@11192,@10541,@10540 18754:O2|@16379,@18755 18755:O2|@18757,@18756 18756:O2|@11192,@17287 18757:O2|8,@15991 18758:S11|766563746f722d6c6f6f70 18759:O4|1,0,1,@18760 18760:O3|21,@10543,8 18761:O4|1,0,0,@18762 18762:O3|21,@10541,8 18763:O4|3,@16379,@17246,@10540 18764:S9|766563746f722d6571 18765:S11|766563746f722d65712829 18766:O1|@8953 18767:O1|@8954 18768:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129283129 18769:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229706f6c79547970655072696e746572283129 18770:S12|626f7865642d766563746f72 18771:S11|73697a652d766563746f72 18772:O3|@18773,@10498,@10559 18773:S6|766563746f72 18774:S13|62797465566563746f722d6571 18775:O3|15,@18777,@18776 18776:O4|5,@18763,@18779,@10633 18777:O2|@18761,@18778 18778:O2|@18759,0 18779:O3|15,@18781,@18780 18780:O5|4,1,@18757,@18785,@18784 18781:O2|@18782,0 18782:O4|1,0,2,@18783 18783:O4|3,@17319,@16379,@18562 18784:O3|@10541,@16535,0 18785:O3|@10543,@16535,0 18786:O1|@8955 18787:O3|@18788,@10498,@10559 18788:S10|62797465566563746f72 18789:O2|@18791,@18790 18790:O2|@18792,0 18791:S5|6172726179 18792:O4|@18791,@18794,@10496,@18793 18793:O3|@18797,@18814,@18796 18794:O2|@18795,0 18795:O2|@4809,79992 18796:O3|@18815,@10498,@10559 18797:O2|1,@18798 18798:O3|6,@18800,@18799 18799:O2|@18805,0 18800:O4|@18802,@4810,@18804,@18801 18801:O1|@8959 18802:O1|@8956 18803:O1|@8957 18804:O1|@8958 18805:O4|@4662,@9594,@18806,0 18806:O3|3,4,@18807 18807:O5|@5126,@18809,@18292,@18808,@10513 18808:O4|@18800,@18802,@18804,@18801 18809:O2|@5133,@18810 18810:O2|@18278,@18811 18811:O2|@18812,@18282 18812:O2|@18813,@10515 18813:O3|0,@4810,0 18814:O4|1,@4681,1,0 18815:S11|41727261792e6172726179 18816:O2|@18791,@18817 18817:O2|@18818,0 18818:O4|@18791,@18820,@10496,@18819 18819:O3|@18823,@18840,@18822 18820:O2|@18821,0 18821:O2|@4811,79992 18822:O3|@18841,@10498,@10559 18823:O2|1,@18824 18824:O3|6,@18826,@18825 18825:O2|@18831,0 18826:O4|@18828,@4812,@18830,@18827 18827:O1|@8963 18828:O1|@8960 18829:O1|@8961 18830:O1|@8962 18831:O4|@4662,@9594,@18832,0 18832:O3|3,4,@18833 18833:O5|@5126,@18835,@18292,@18834,@10513 18834:O4|@18826,@18828,@18830,@18827 18835:O2|@5133,@18836 18836:O2|@18278,@18837 18837:O2|@18838,@18282 18838:O2|@18839,@10515 18839:O3|0,@4812,0 18840:O4|1,@4680,1,0 18841:S12|4172726179322e6172726179 18842:O2|@18844,@18843 18843:O2|@18845,0 18844:S9|627974654172726179 18845:O4|@18844,0,@10496,@18846 18846:O3|@18848,@18862,@18847 18847:O3|@18844,@10498,@10559 18848:O2|1,@18849 18849:O3|6,@18851,@18850 18850:O2|@18853,0 18851:O4|@18852,@4813,2,1 18852:O1|@8964 18853:O4|@4662,@9594,@18854,0 18854:O3|3,4,@18855 18855:O5|@5126,@18857,@10515,@18856,@10513 18856:O2|@18851,@18852 18857:O2|@5133,@18858 18858:O2|@10532,@18859 18859:O2|@18860,@16711 18860:O2|@18861,@10515 18861:O3|0,@4813,0 18862:O4|1,@4679,0,0 18863:O2|3,6 18864:S2|3c3e 18865:O1|@8965 18866:S6|506f6c794d4c 18867:O1|@8966 18868:S9|4e616d655370616365 18869:O1|@8967 18870:S6|56616c756573 18871:O1|@8968 18872:O1|@8969 18873:S7|496e6669786573 18874:O1|@8970 18875:S10|53747275637475726573 18876:O1|@8971 18877:O1|@8972 18878:S8|46756e63746f7273 18879:O1|@8973 18880:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d6f6e6f747970655072696e746572283129 18881:O3|@18882,@10498,@10559 18882:S29|506f6c794d4c2e4e616d6553706163652e56616c7565732e76616c7565 18883:S5|76616c7565 18884:O3|@18885,@10498,@10559 18885:S38|506f6c794d4c2e4e616d6553706163652e56616c7565732e7479706545787072657373696f6e 18886:S14|7479706545787072657373696f6e 18887:O3|@18888,@10498,@10559 18888:S39|506f6c794d4c2e4e616d6553706163652e54797065436f6e737472732e74797065436f6e737472 18889:S10|74797065436f6e737472 18890:O3|@18891,@10498,@10559 18891:S31|506f6c794d4c2e4e616d6553706163652e496e66697865732e666978697479 18892:O3|@18893,@10498,@10559 18893:S40|506f6c794d4c2e4e616d6553706163652e5369676e6174757265732e7369676e617475726556616c 18894:S12|7369676e617475726556616c 18895:O3|@18896,@10498,@10559 18896:S40|506f6c794d4c2e4e616d6553706163652e537472756374757265732e73747275637475726556616c 18897:S12|73747275637475726556616c 18898:O3|@18899,@10498,@10559 18899:S36|506f6c794d4c2e4e616d6553706163652e46756e63746f72732e66756e63746f7256616c 18900:S10|66756e63746f7256616c 18901:S3|56616c 18902:S3|466978 18903:S3|536967 18904:S5|46756e6374 18905:O3|@18906,@10498,@10559 18906:S26|506f6c794d4c2e4e616d6553706163652e6e616d655370616365 18907:S9|6e616d655370616365 18908:S6|76616c756573 18909:S5|6669786573 18910:S5|7479706573 18911:S10|73747275637475726573 18912:S10|7369676e617475726573 18913:S8|66756e63746f7273 18914:O2|@18916,@18915 18915:O2|@18917,0 18916:S8|6c6f636174696f6e 18917:O4|@18916,0,@10496,@18918 18918:O3|@10854,@18920,@18919 18919:O3|@18943,@10498,@10559 18920:O3|2,0,@18921 18921:O3|3,@18923,@18922 18922:O3|0,@18938,1 18923:O2|@18925,@18924 18924:O2|@18928,@18927 18925:O2|@18926,@11238 18926:S4|66696c65 18927:O2|@18931,@18930 18928:O2|@18929,@17108 18929:S7|656e644c696e65 18930:O2|@18934,@18933 18931:O2|@18932,@17108 18932:S9|73746172744c696e65 18933:O2|@18936,0 18934:O2|@18935,@17108 18935:S11|656e64506f736974696f6e 18936:O2|@18937,@17108 18937:S13|7374617274506f736974696f6e 18938:O2|@18926,@18939 18939:O2|@18929,@18940 18940:O2|@18932,@18941 18941:O2|@18935,@18942 18942:O2|@18937,0 18943:S15|506f6c794d4c2e6c6f636174696f6e 18944:O1|@8974 18945:S17|4465627567676572496e74657266616365 18946:O3|@18947,@10498,@10559 18947:S41|506f6c794d4c2e4465627567676572496e746572666163652e6c6f636174696f6e50726f704c697374 18948:S16|6c6f636174696f6e50726f704c697374 18949:O3|@18950,@10498,@10559 18950:S31|506f6c794d4c2e4465627567676572496e746572666163652e747970654964 18951:S6|747970654964 18952:O3|@18953,@10498,@10559 18953:S36|506f6c794d4c2e4465627567676572496e746572666163652e6d616368696e65576f7264 18954:S11|6d616368696e65576f7264 18955:O3|@18956,@10498,@10559 18956:S34|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065 18957:S9|6c6f63616c54797065 18958:O3|@18959,@10498,@10559 18959:S40|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c54797065436f6e737472 18960:S15|6c6f63616c54797065436f6e737472 18961:O3|@18962,@10498,@10559 18962:S33|506f6c794d4c2e4465627567676572496e746572666163652e6c6f63616c536967 18963:S8|6c6f63616c536967 18964:O3|@18965,@10498,@10559 18965:S37|506f6c794d4c2e4465627567676572496e746572666163652e656e7669726f6e456e747279 18966:S12|656e7669726f6e456e747279 18967:O5|5,0,@18916,@18917,@10496 18968:S14|456e76456e6446756e6374696f6e 18969:S12|456e76457863657074696f6e 18970:S16|456e76537461727446756e6374696f6e 18971:S12|456e76537472756374757265 18972:S10|456e7654436f6e737472 18973:S9|456e76547970656964 18974:S10|456e7656436f6e737472 18975:S8|456e7656616c7565 18976:O2|@18967,0 18977:O3|@18978,@10498,@10559 18978:S35|506f6c794d4c2e4465627567676572496e746572666163652e64656275675374617465 18979:S10|64656275675374617465 18980:O1|@8975 18981:O4|@4656,@10202,@18983,@18982 18982:O5|@18984,160,0,160,0 18983:S24|736561726368547970653a205479706546756e6374696f6e 18984:S33|6d6c736f757263652f4d4c436f6d70696c65722f44454255474745525f2e736d6c 18985:S33|44454255474745525f28292e736561726368547970652834296d61746368283129 18986:O2|@18987,@14032 18987:O4|0,@14031,@14029,@10632 18988:S35|44454255474745525f28292e72756e54696d6554797065283229636f70794964283129 18989:S25|44454255474745525f28292e73656172636854797065283429 18990:S25|44454255474745525f28292e736561726368456e7673283329 18991:O1|@8982 18992:S32|44454255474745525f28292e72756e54696d6554797065283229283129283129 18993:O1|@8983 18994:S29|44454255474745525f28292e72756e54696d6554797065283229283129 18995:O1|@8984 18996:S27|44454255474745525f28292e6d616b6556616c7565283129283129 18997:S24|44454255474745525f28292e6d616b6556616c7565283129 18998:S9|6d616b6556616c7565 18999:O1|@8985 19000:O1|@8989 19001:O1|@8990 19002:O1|@8991 19003:S31|44454255474745525f28292e6d616b65457863657074696f6e283129283129 19004:S28|44454255474745525f28292e6d616b65457863657074696f6e283129 19005:S13|6d616b65457863657074696f6e 19006:O1|@8992 19007:O1|@8996 19008:O1|@8997 19009:O1|@8998 19010:S33|44454255474745525f28292e6d616b65436f6e7374727563746f72283129283129 19011:S30|44454255474745525f28292e6d616b65436f6e7374727563746f72283129 19012:S15|6d616b65436f6e7374727563746f72 19013:O1|@8999 19014:O1|@9003 19015:O1|@9004 19016:O1|@9005 19017:S36|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129283129 19018:S33|44454255474745525f28292e6d616b65416e6f6e796d6f757356616c7565283129 19019:S18|6d616b65416e6f6e796d6f757356616c7565 19020:O1|@9006 19021:O3|@9493,@10498,@10559 19022:S40|44454255474745525f28292e6d616b65537472756374757265283529676574467265654964283129 19023:S31|44454255474745525f28292e6d616b65537472756374757265283129283129 19024:S28|44454255474745525f28292e6d616b65537472756374757265283129 19025:S13|6d616b65537472756374757265 19026:O1|@9010 19027:S32|44454255474745525f28292e6d616b6554797065436f6e737472283129283129 19028:S29|44454255474745525f28292e6d616b6554797065436f6e737472283129 19029:S14|6d616b6554797065436f6e737472 19030:O7|@9493,2,@10854,@11239,0,0,0 19031:S9|756e697456616c7565 19032:O2|@11238,@18976 19033:O2|@9012,@4803 19034:S22|44454255474745525f28292e77726170283129283129 19035:S19|44454255474745525f28292e77726170283229 19036:S25|44454255474745525f28292e7365744f6e456e747279283129 19037:S10|7365744f6e456e747279 19038:O2|@9015,@4801 19039:S24|44454255474745525f28292e7365744f6e45786974283129 19040:S9|7365744f6e45786974 19041:O3|2,@11302,@11239 19042:O2|@9017,@4802 19043:S36|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129283129 19044:S33|44454255474745525f28292e7365744f6e45786974457863657074696f6e283129 19045:S18|7365744f6e45786974457863657074696f6e 19046:O2|@18967,@19047 19047:O2|@19048,0 19048:O5|5,@10874,@11271,@18251,@10496 19049:O2|@9020,@4794 19050:S30|44454255474745525f28292e7365744f6e427265616b506f696e74283129 19051:S15|7365744f6e427265616b506f696e74 19052:O2|@19054,@19053 19053:O2|@19056,@19055 19054:S7|636f6e74657874 19055:O2|@19086,@19085 19056:O4|@19054,0,@10496,@19057 19057:O3|@19059,@19083,@19058 19058:O3|@19084,@10498,@10559 19059:O2|1,@19060 19060:O3|6,@19062,@19061 19061:O2|@19064,0 19062:O4|@19063,@4799,3,1 19063:O1|@9022 19064:O4|@4662,@9594,@19065,0 19065:O3|3,4,@19066 19066:O6|@5131,@10516,@19068,@19073,@19067,@10513 19067:O12|@19075,@19078,@19079,@19077,@19076,@19080,@19081,@19082,@19074,@19063,@4799,@19062 19068:O2|@5133,@19069 19069:O2|@19071,@19070 19070:O2|@19072,@10649 19071:O2|@11221,@17507 19072:O2|@11227,@10515 19073:O11|2,2,2,2,2,2,2,2,2,1,2 19074:O3|@19080,@19081,@19082 19075:O3|@19062,@19076,@19074 19076:O3|@19078,@19079,@19077 19077:O1|@9025 19078:O1|@9023 19079:O1|@9024 19080:O1|@9026 19081:O1|@9027 19082:O1|@9028 19083:O4|1,@4814,0,0 19084:S14|506f6c794d4c2e636f6e74657874 19085:O2|@19114,0 19086:O7|@17472,@13990,@19088,@19087,@10496,0,0 19087:O3|2,@18967,@19113 19088:O2|1,@19089 19089:O3|6,@19076,@19090 19090:O2|@19091,0 19091:O4|@4662,@9594,@19092,0 19092:O3|3,3,@19093 19093:O6|@5131,@10516,@19094,@19073,@19067,@10513 19094:O2|@5133,@19095 19095:O2|@19097,@19096 19096:O2|@19105,@19104 19097:O2|@10534,@19098 19098:O3|1,@19099,@10536 19099:O8|@19101,@17472,0,0,@19100,0,0,1 19100:O2|@19102,0 19101:O4|19,0,@17044,1 19102:O2|1,@19103 19103:O2|@17774,0 19104:O2|@19110,0 19105:O2|@16006,@19106 19106:O3|1,@19107,@10536 19107:O8|@19108,@17472,0,0,@10545,0,0,1 19108:O3|20,@19109,1 19109:O2|@10633,@17007 19110:O2|@17349,@19111 19111:O3|1,@19112,@10536 19112:O8|@17786,@17472,0,0,@10545,0,0,1 19113:O5|5,0,@19054,@19056,@10496 19114:O7|@17476,@13990,@19116,@19115,@10496,0,0 19115:O3|2,@19146,@19113 19116:O2|1,@19117 19117:O3|6,@19074,@19118 19118:O2|@19119,0 19119:O4|@4662,@9594,@19120,0 19120:O3|3,3,@19121 19121:O6|@5131,@10516,@19122,@19073,@19067,@10513 19122:O2|@5133,@19123 19123:O2|@19125,@19124 19124:O2|@19130,@19129 19125:O2|@16714,@19126 19126:O3|1,@19127,@10536 19127:O8|@19128,@17476,0,0,@19100,0,0,1 19128:O4|19,1,@17044,1 19129:O2|@19137,0 19130:O2|@19132,@19131 19131:O3|1,@19133,@10536 19132:O2|1,@11162 19133:O8|@19134,@17476,0,0,@17762,0,2,1 19134:O3|15,@17765,@19135 19135:O3|20,@19136,1 19136:O2|@10632,@17769 19137:O2|@11147,@19138 19138:O3|1,@19139,@10536 19139:O8|@19140,@17476,0,0,@17779,0,2,1 19140:O3|15,@19141,@17781 19141:O2|@19143,@19142 19142:O2|@19144,0 19143:O4|1,@16329,0,@17786 19144:O4|1,@16329,1,@19145 19145:O4|11,@10541,2,1 19146:O3|3,@19147,@17447 19147:O2|@19149,@19148 19148:O2|@19150,0 19149:O2|@17451,@11238 19150:O2|@17453,@11238 19151:O2|@17457,@19152 19152:O2|@17456,@19153 19153:O2|@19155,@19154 19154:O2|@19228,@19227 19155:O7|@17482,@15552,@19157,@19156,@10496,0,0 19156:O3|2,@19207,@17445 19157:O2|1,@19158 19158:O3|6,@17518,@19159 19159:O2|@19160,0 19160:O4|@4662,@9594,@19161,0 19161:O3|3,3,@19162 19162:O6|@5131,@10516,@19163,@17514,@17502,@10513 19163:O2|@5133,@19164 19164:O2|@19166,@19165 19165:O2|@19170,@19169 19166:O2|@10534,@19167 19167:O3|1,@19168,@10536 19168:O8|@17253,@17482,0,0,@19100,0,0,1 19169:O2|@19195,0 19170:O2|@16006,@19171 19171:O3|1,@19172,@10536 19172:O8|@19174,@17482,0,0,@19173,0,4,1 19173:O2|@19188,0 19174:O3|15,@19176,@19175 19175:O3|20,@19182,1 19176:O2|@17767,@19177 19177:O2|@17768,@19178 19178:O2|@19180,@19179 19179:O2|@19181,0 19180:O4|1,@10547,2,@18332 19181:O4|1,@10547,3,@18351 19182:O2|@10633,@19183 19183:O2|@16379,@19184 19184:O2|@17246,@19185 19185:O2|@18757,@19186 19186:O2|@19187,0 19187:O2|8,@15989 19188:O2|1,@19189 19189:O2|@17774,@19190 19190:O2|@17775,@19191 19191:O2|@19193,@19192 19192:O2|@19194,0 19193:O3|2,2,@10547 19194:O3|2,3,@10547 19195:O2|@17349,@19196 19196:O3|1,@19197,@10536 19197:O8|@19198,@17482,0,0,@10643,0,4,1 19198:O3|15,@19200,@19199 19199:O3|20,@19183,0 19200:O2|@19143,@19201 19201:O2|@19144,@19202 19202:O2|@19204,@19203 19203:O2|@19206,0 19204:O4|1,@16329,2,@19205 19205:O4|11,@10541,3,1 19206:O4|1,@16329,3,@17252 19207:O3|3,@19209,@19208 19208:O3|0,@19223,1 19209:O2|@19211,@19210 19210:O2|@19213,@19212 19211:O2|@17451,@17108 19212:O2|@19215,@19214 19213:O2|@17453,@10875 19214:O2|@19219,0 19215:O2|@19217,@19216 19216:O5|5,@19218,@11108,@11106,@10496 19217:S1|33 19218:O2|@19113,0 19219:O2|@19221,@19220 19220:O5|5,@19222,@11108,@11106,@10496 19221:S1|34 19222:O2|@17445,0 19223:O2|@17451,@19224 19224:O2|@17453,@19225 19225:O2|@19217,@19226 19226:O2|@19221,0 19227:O2|@19253,@19252 19228:O7|@17486,@15552,@19230,@19229,@10496,0,0 19229:O3|2,@19250,@17445 19230:O2|1,@19231 19231:O3|6,@17522,@19232 19232:O2|@19233,0 19233:O4|@4662,@9594,@19234,0 19234:O3|3,3,@19235 19235:O6|@5131,@10516,@19236,@17514,@17502,@10513 19236:O2|@5133,@19237 19237:O2|@19239,@19238 19238:O2|@19244,@19243 19239:O2|@16714,@19240 19240:O3|1,@19241,@10536 19241:O8|@19242,@17486,0,0,@19100,0,0,1 19242:O4|19,1,@17044,4 19243:O2|@19247,0 19244:O2|@19132,@19245 19245:O3|1,@19246,@10536 19246:O8|@19134,@17486,0,0,@17762,0,2,1 19247:O2|@11147,@19248 19248:O3|1,@19249,@10536 19249:O8|@19140,@17486,0,0,@17779,0,2,1 19250:O3|3,@19251,@17447 19251:O2|@19211,@17449 19252:O2|@19270,@19269 19253:O7|@17490,@18537,@19254,@17445,@10496,0,0 19254:O2|1,@19255 19255:O3|6,@17526,@19256 19256:O2|@19257,0 19257:O4|@4662,@9594,@19258,0 19258:O3|3,2,@19259 19259:O6|@5131,@10516,@19260,@17514,@17502,@10513 19260:O2|@5133,@19261 19261:O2|@19263,@19262 19262:O2|@19267,0 19263:O2|@11221,@19264 19264:O3|1,@19265,@10536 19265:O8|@19266,@17490,0,0,@19100,0,0,1 19266:O4|19,2,@17044,4 19267:O2|@19268,@10515 19268:O3|0,@10515,0 19269:O2|@19296,0 19270:O7|@17494,@15552,@19272,@19271,@10496,0,0 19271:O3|2,@11238,@17445 19272:O2|1,@19273 19273:O3|6,@17517,@19274 19274:O2|@19275,0 19275:O4|@4662,@9594,@19276,0 19276:O3|3,3,@19277 19277:O6|@5131,@10516,@19278,@17514,@17502,@10513 19278:O2|@5133,@19279 19279:O2|@19281,@19280 19280:O2|@19286,@19285 19281:O2|@16939,@19282 19282:O3|1,@19283,@10536 19283:O8|@19284,@17494,0,0,@19100,0,0,1 19284:O4|19,3,@17044,4 19285:O2|@19293,0 19286:O2|@19288,@19287 19287:O3|1,@19290,@10536 19288:O2|1,@19289 19289:O2|2,11 19290:O8|@19291,@17494,0,0,@10545,0,0,1 19291:O3|20,@19292,1 19292:O2|@11224,@17007 19293:O2|@16961,@19294 19294:O3|1,@19295,@10536 19295:O8|@17786,@17494,0,0,@10545,0,0,1 19296:O7|@17498,@15552,@19298,@19297,@10496,0,0 19297:O3|2,@19326,@17445 19298:O2|1,@19299 19299:O3|6,@17515,@19300 19300:O2|@19301,0 19301:O4|@4662,@9594,@19302,0 19302:O3|3,3,@19303 19303:O6|@5131,@10516,@19304,@17514,@17502,@10513 19304:O2|@5133,@19305 19305:O2|@19307,@19306 19306:O2|@19312,@19311 19307:O2|@16982,@19308 19308:O3|1,@19309,@10536 19309:O8|@19310,@17498,0,0,@19100,0,0,1 19310:O4|19,4,@17044,4 19311:O2|@19321,0 19312:O2|@19314,@19313 19313:O3|1,@19316,@10536 19314:O2|1,@19315 19315:O2|2,15 19316:O8|@19317,@17498,0,0,@17762,0,2,1 19317:O3|15,@17765,@19318 19318:O3|20,@19319,1 19319:O2|@19320,@17769 19320:O3|6,4,0 19321:O2|@19323,@19322 19322:O3|1,@19325,@10536 19323:O2|1,@19324 19324:O2|2,16 19325:O8|@19140,@17498,0,0,@17779,0,2,1 19326:O3|3,@19327,@17447 19327:O2|@19149,@17449 19328:O2|3,7 19329:O2|3,5 19330:S10|6d616b65737472696e67 19331:S20|707265747479526570726573656e746174696f6e 19332:S16|6164645072657474795072696e746572 19333:O3|2,@11238,@11239 19334:S11|6164644f7665726c6f6164 19335:O2|@19337,@19336 19336:O7|@19337,2,@19339,@19338,@10496,0,0 19337:S26|73657444656661756c74496e7454797065417262697472617279 19338:O3|2,@10875,@11239 19339:O2|1,@19340 19340:O3|6,@19341,0 19341:O1|@9029 19342:S40|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973657454797065283129 19343:O2|@19345,@19344 19344:O7|@19345,2,@18540,@19346,@10496,0,0 19345:S14|736f757263654c6f636174696f6e 19346:O3|2,@11239,@18967 19347:O1|@9030 19348:S9|556e6976657273616c 19349:O1|@9031 19350:O1|@9032 19351:S9|626f7865642d746167 19352:S8|73697a652d746167 19353:O3|@19354,@10498,@10559 19354:S3|746167 19355:O3|@19356,@10498,@10559 19356:S9|756e6976657273616c 19357:O3|6,@19358,0 19358:O1|@9033 19359:S27|556e6976657273616c2e746167496e6a6563742d23696e6a656374 19360:S9|746167496e6a656374 19361:O3|6,@19362,0 19362:O1|@9034 19363:S29|556e6976657273616c2e74616750726f6a6563742d2370726f6a656374 19364:S10|74616750726f6a656374 19365:O3|6,@19366,0 19366:O1|@9035 19367:S19|556e6976657273616c2e74616749732d236973 19368:S5|7461674973 19369:O3|@19370,@10498,@10559 19370:S19|506f6c794d4c2e707450726f70657274696573 19371:S12|707450726f70657274696573 19372:O3|@19373,@10498,@10559 19373:S16|506f6c794d4c2e706172736554726565 19374:S9|706172736554726565 19375:S12|505466697273744368696c64 19376:S13|50546e6578745369626c696e67 19377:S8|5054706172656e74 19378:S17|505470726576696f75735369626c696e67 19379:O2|@10875,@19380 19380:O2|@19381,0 19381:O5|5,@18976,@11108,@11106,@10496 19382:S12|50547265666572656e636573 19383:S6|505474797065 19384:O2|@19385,@18967 19385:S13|50547374727563747572654174 19386:O2|@19387,@17108 19387:S7|50547265664964 19388:O2|@19390,@19389 19389:O3|2,@17108,@17445 19390:S7|50547072696e74 19391:O2|@19392,@18967 19392:S10|50546f70656e65644174 19393:O2|@19394,@17108 19394:S7|50546465664964 19395:O2|@19396,@18967 19396:S12|50546465636c617265644174 19397:O2|@19399,@19398 19398:O5|5,@19400,@11108,@11106,@10496 19399:S13|5054636f6d706c6574696f6e73 19400:O2|@11238,0 19401:O2|@19402,@19048 19402:S12|5054627265616b506f696e74 19403:O3|2,@11239,@19404 19404:O5|5,@18574,@17384,@17382,@10496 19405:S5|5573653a20 19406:S2|2d49 19407:O6|@9038,@19415,@19423,@4815,@19429,@19408 19408:O3|@9046,@19431,@19423 19409:O5|@19410,580,0,580,0 19410:S14|2e2f62617369732f4f532e736d6c 19411:S4|50617468 19412:O5|@19410,582,0,582,0 19413:S17|4f532e506174682e636f6e636174283229 19414:S32|4f532e506174682e636f6e636174283229636f6e636174417263732832292829 19415:O7|@9040,@4815,@19423,@9572,@4816,@19427,@19416 19416:O1|@9044 19417:O5|@19410,382,0,382,0 19418:O5|@19410,385,0,385,0 19419:S10|496e76616c6964417263 19420:O5|@19410,400,0,400,0 19421:S19|4f532e506174682e746f537472696e67283329 19422:S33|4f532e506174682e746f537472696e6728332961726373546f4c696e6b73283129 19423:O1|@9042 19424:O4|1,@9493,1,1 19425:O4|0,@9493,0,0 19426:S33|4f532e506174682e6d61746368566f6c756d65507265666978506f736978283129 19427:O1|@9043 19428:S23|4f532e506174682e76616c6964566f6c756d652d283129 19429:O1|@9045 19430:S27|4f532e506174682e746f43616e6f6e6963616c436173652d283129 19431:O1|@9048 19432:O3|@9493,0,0 19433:S21|4f532e506174682e66726f6d537472696e67283229 19434:S23|4f532e506174682e6973536570617261746f722d283129 19435:O2|@9049,@19431 19436:S23|4f532e506174682e73706c697442617365457874283229 19437:S32|4f532e506174682e73706c697442617365457874283229676574457874283129 19438:O1|@19439 19439:S3|353731 19440:O3|1,@9841,0 19441:S13|54657874494f2e6f70656e496e 19442:O5|@19443,290,0,290,0 19443:S18|2e2f62617369732f54657874494f2e736d6c 19444:O1|@9051 19445:S27|4d414b455f28292e757365496e746f456e76283129283129283129 19446:S21|4d414b455f28292e757365496e746f456e76283329 19447:S22|4f532e506174682e6a6f696e42617365457874283229 19448:S3|757365 19449:S24|4d414b455f28292e757365496e746f456e76283129283129 19450:S12|757365576974685061726d73 19451:O2|1,@19452 19452:O3|6,@19453,0 19453:O1|@9057 19454:S27|434f4d50494c45525f424f445928292e636f6d70696c6572283129 19455:S8|636f6d70696c6572 19456:S11|676c6f62616c5370616365 19457:S4|68617264 19458:S7|6d657373616765 19459:O5|5,@19460,@17384,@17382,@10496 19460:O2|@17445,0 19461:S6|706172656e74 19462:S4|6e657874 19463:S8|70726576696f7573 19464:S21|636f6d70696c657256657273696f6e4e756d626572 19465:O2|@19466,0 19466:O3|2,@11239,@17108 19467:O3|@19469,@19471,@19468 19468:O2|@9060,@4630 19469:O2|@9058,@4630 19470:S19|556e6976657273616c2e746167283229283129 19471:O2|@9059,@4630 19472:S13|6c696e654e756d626572546167 19473:O3|@19475,@19476,@19474 19474:O2|@9063,@4645 19475:O2|@9061,@4645 19476:O2|@9062,@4645 19477:S9|6f6666736574546167 19478:O3|@19480,@19481,@19479 19479:O2|@9066,@4631 19480:O2|@9064,@4631 19481:O2|@9065,@4631 19482:S11|66696c654e616d65546167 19483:O3|@19485,@19486,@19484 19484:O2|@9069,@4646 19485:O2|@9067,@4646 19486:O2|@9068,@4646 19487:S17|62696e64696e67436f756e746572546167 19488:O3|@19490,@19491,@19489 19489:O2|@9072,@4634 19490:O2|@9070,@4634 19491:O2|@9071,@4634 19492:S16|6d6178496e6c696e6553697a65546167 19493:O3|@19495,@19496,@19494 19494:O2|@9075,@4643 19495:O2|@9073,@4643 19496:O2|@9074,@4643 19497:S15|617373656d626c79436f6465546167 19498:O3|@19500,@19501,@19499 19499:O2|@9078,@4639 19500:O2|@9076,@4639 19501:O2|@9077,@4639 19502:S12|706172736574726565546167 19503:O3|@19505,@19506,@19504 19504:O2|@9081,@4640 19505:O2|@9079,@4640 19506:O2|@9080,@4640 19507:S11|636f646574726565546167 19508:O3|@19510,@19511,@19509 19509:O2|@9084,@4642 19510:O2|@9082,@4642 19511:O2|@9083,@4642 19512:S8|69636f6465546167 19513:O3|@19515,@19516,@19514 19514:O2|@9087,@4649 19515:O2|@9085,@4649 19516:O2|@9086,@4649 19517:S19|6c6f776c6576656c4f7074696d697365546167 19518:O3|@19520,@19521,@19519 19519:O2|@9090,@4641 19520:O2|@9088,@4641 19521:O2|@9089,@4641 19522:S19|636f64657472656541667465724f7074546167 19523:O3|@19525,@19526,@19524 19524:O2|@9093,@4647 19525:O2|@9091,@4647 19526:O2|@9092,@4647 19527:S17|696e6c696e6546756e63746f7273546167 19528:O3|@19530,@19531,@19529 19529:O2|@9096,@4652 19530:O2|@9094,@4652 19531:O2|@9095,@4652 19532:S8|6465627567546167 19533:O3|@19535,@19536,@19534 19534:O2|@9099,@4638 19535:O2|@9097,@4638 19536:O2|@9098,@4638 19537:S16|7072696e74446570746846756e546167 19538:O3|@19540,@19541,@19539 19539:O2|@9102,@4650 19540:O2|@9100,@4650 19541:O2|@9101,@4650 19542:S13|6572726f724465707468546167 19543:O3|@19545,@19546,@19544 19544:O2|@9105,@4651 19545:O2|@9103,@4651 19546:O2|@9104,@4651 19547:S13|6c696e654c656e677468546167 19548:O3|@19550,@19551,@19549 19549:O2|@9108,@4648 19550:O2|@9106,@4648 19551:O2|@9107,@4648 19552:S20|70726f66696c65416c6c6f636174696f6e546167 19553:O2|@19554,0 19554:O3|2,@17445,@11239 19555:O3|@19557,@19558,@19556 19556:O2|@9111,@4637 19557:O2|@9109,@4637 19558:O2|@9110,@4637 19559:S14|7072696e744f7574707574546167 19560:O3|@19562,@19563,@19561 19561:O2|@9114,@4644 19562:O2|@9112,@4644 19563:O2|@9113,@4644 19564:S17|636f6d70696c65724f7574707574546167 19565:O3|@19567,@19568,@19566 19566:O2|@9117,@4632 19567:O2|@9115,@4632 19568:O2|@9116,@4632 19569:S19|6572726f724d65737361676550726f63546167 19570:O3|@19572,@19573,@19571 19571:O2|@9120,@4781 19572:O2|@9118,@4781 19573:O2|@9119,@4781 19574:S11|726f6f7454726565546167 19575:O3|@19577,@19578,@19576 19576:O2|@9123,@4635 19577:O2|@9121,@4635 19578:O2|@9122,@4635 19579:S24|7265706f7274556e7265666572656e636564496473546167 19580:O3|@19582,@19583,@19581 19581:O2|@9126,@4636 19582:O2|@9124,@4636 19583:O2|@9125,@4636 19584:S27|7265706f72744578686175737469766548616e646c657273546167 19585:O3|@19587,@19588,@19586 19586:O2|@9129,@4653 19587:O2|@9127,@4653 19588:O2|@9128,@4653 19589:S27|6e6172726f774f7665726c6f6164466c65785265636f7264546167 19590:O3|@19592,@19593,@19591 19591:O2|@9132,@4654 19592:O2|@9130,@4654 19593:O2|@9131,@4654 19594:S23|6372656174655072696e7446756e6374696f6e73546167 19595:O3|@19597,@19598,@19596 19596:O2|@9135,@4655 19597:O2|@9133,@4655 19598:O2|@9134,@4655 19599:S24|7265706f727444697363617264656456616c756573546167 19600:O3|@19602,@19601,@11238 19601:S13|352e372e312052656c65617365 19602:S15|636f6d70696c657256657273696f6e 19603:O1|@9136 19604:S8|436f646554726565 19605:S16|506f6c794d4c2e436f6465547265652e 19606:S8|636f646574726565 19607:S11|636f646542696e64696e67 19608:O1|@9137 19609:S21|434f44455452454528292e6d6b436f6e7374283129 19610:S10|6d6b436f6e7374616e74 19611:O2|@9138,@14470 19612:S21|434f44455452454528292e67656e436f6465283129 19613:S7|67656e436f6465 19614:O1|@9139 19615:S30|434f4445545245455f46554e4354494f4e5328292e6576616c7565283129 19616:S6|6576616c7565 19617:O1|@9140 19618:S41|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65466e283129 19619:S10|6d6b46756e6374696f6e 19620:O1|@9142 19621:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c65496e6c696e65466e283129 19622:S16|6d6b496e6c696e6546756e6374696f6e 19623:O1|@9146 19624:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322973696d706c6543616c6c283129 19625:S6|6d6b43616c6c 19626:O1|@9148 19627:S11|6d6b4c6f61644c6f63616c 19628:O1|@9149 19629:S14|6d6b4c6f6164417267756d656e74 19630:O1|@9150 19631:S13|6d6b4c6f6164436c6f73757265 19632:O1|@9151 19633:S19|434f44455452454528292e6d6b446563283129 19634:S5|6d6b446563 19635:O1|@9152 19636:S37|434f4445545245455f46554e4354494f4e5328292e6d6b496e646972656374283129283129 19637:S5|6d6b496e64 19638:O1|@9153 19639:S4|6d6b4966 19640:O1|@9154 19641:S21|434f44455452454528292e6d6b5768696c65283129 19642:S7|6d6b5768696c65 19643:O1|@9155 19644:S20|434f44455452454528292e6d6b4c6f6f70283129 19645:S6|6d6b4c6f6f70 19646:O1|@9157 19647:S25|434f44455452454528292e6d6b426567696e4c6f6f70283129 19648:S11|6d6b426567696e4c6f6f70 19649:O1|@9159 19650:S29|434f4445545245455f46554e4354494f4e5328292e6d6b456e76283129 19651:S5|6d6b456e76 19652:O1|@9160 19653:S26|434f44455452454528292e6d6b4d757475616c44656373283129 19654:S12|6d6b4d757475616c44656373 19655:O1|@9161 19656:S35|434f4445545245455f46554e4354494f4e5328292e6d6b5265636f7264283129283129 19657:S7|6d6b5475706c65 19658:O1|@9162 19659:S7|6d6b5261697365 19660:O1|@9163 19661:S22|434f44455452454528292e6d6b48616e646c65283129 19662:S8|6d6b48616e646c65 19663:O1|@9164 19664:S9|6d6b4e756c6c446563 19665:O1|@9165 19666:S24|5354525543545f56414c5328292e76616c4e616d65283129 19667:S4|6e616d65 19668:O1|@9166 19669:S41|56414c55455f4f505328292e7072696e7456616c7565466f72547970652833296d6b41646472283129 19670:O1|@9169 19671:S46|56414c55455f4f505328292e7072696e7456616c7565466f725479706528332964756d6d7954797065732d283129 19672:S44|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329706f6c79436f64652d283129 19673:S26|56414c55455f4f505328292e7072696e7456616c756573283129 19674:S32|56414c55455f4f505328292e7072696e7456616c7565466f7254797065283329 19675:O1|@9172 19676:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6554797065456e76283229283129 19677:O2|@19679,@19678 19678:O1|@9176 19679:O1|@9175 19680:O2|@10728,0 19681:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617956616c756573283129 19682:S28|56414c55455f4f505328292e646973706c617956616c756573283429 19683:S13|7072696e745769746854797065 19684:O1|@9179 19685:O2|@19687,@19686 19686:O1|@9183 19687:O1|@9182 19688:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065457870283129 19689:S9|7072696e7454797065 19690:O1|@9184 19691:S26|5354525543545f56414c5328292e76616c547970654f66283129 19692:S6|747970656f66 19693:O1|@9185 19694:O4|103,@10033,@19696,@19695 19695:O5|@18708,1651,0,1651,0 19696:S18|4e6f74206120676c6f62616c2076616c7565 19697:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7256616c7565283129 19698:S4|636f6465 19699:O1|@9186 19700:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7256616c7565283129 19701:S10|70726f70657274696573 19702:O1|@9187 19703:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973436f6e7374727563746f72283129 19704:S13|6973436f6e7374727563746f72 19705:O1|@9188 19706:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296973457863657074696f6e283129 19707:S11|6973457863657074696f6e 19708:O1|@9189 19709:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7254797065283129 19710:O1|@9190 19711:O2|@19713,@19712 19712:O1|@9194 19713:O1|@9193 19714:S58|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617954797065436f6e737472283129 19715:O1|@9195 19716:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7254797065436f6e737472283129 19717:O1|@9196 19718:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72537472756374283129 19719:O1|@9197 19720:O2|@19722,@19721 19721:O1|@9202 19722:O1|@9201 19723:O2|@10391,@19680 19724:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283129 19725:S41|56414c55455f4f505328292e646973706c6179536967283529636f6d706f73697465456e762d283129 19726:O2|@10236,@10390 19727:O1|@9208 19728:S36|56414c55455f4f505328292e646973706c61795369672835296f72646572283129283129 19729:S33|56414c55455f4f505328292e646973706c61795369672835296f72646572283129 19730:S55|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953747275637473283329 19731:O1|@9203 19732:S25|56414c55455f4f505328292e646973706c6179536967283529 19733:S39|56414c55455f4f505328292e646973706c6179536967283529646973706c617953706563283229 19734:O1|@9213 19735:O4|103,@10033,@19737,@19736 19736:O5|@18708,1709,0,1709,0 19737:S22|4e6f74206120676c6f62616c20737472756374757265 19738:S46|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f72537472756374283129 19739:O1|@9214 19740:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72537472756374283129 19741:O1|@9215 19742:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757056616c283129 19743:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b757054797065283129 19744:S66|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f725374727563742832296c6f6f6b7570537472756374283129 19745:O1|@9221 19746:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c56616c756573283129 19747:O1|@9224 19748:S62|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c5479706573283129 19749:O1|@9227 19750:S64|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229616c6c53747275637473283129 19751:O1|@9229 19752:S54|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229283129 19753:O1|@9230 19754:O1|@9231 19755:O1|@9232 19756:O4|103,@10033,@19758,@19757 19757:O5|@18708,1750,0,1750,0 19758:S37|7570646174696e67206120737472756374757265206973206e6f7420706f737369626c652e 19759:S67|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229656e74657246756e6374696f6e283129 19760:O1|@9233 19761:O1|@9234 19762:O1|@9235 19763:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283129 19764:S51|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d655370616365466f72537472756374283229 19765:S8|636f6e74656e7473 19766:O1|@9236 19767:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72536967283129 19768:O1|@9237 19769:O2|@19771,@19770 19770:O1|@9241 19771:O1|@9240 19772:S52|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617953696773283129 19773:O1|@9242 19774:S44|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f72536967283129 19775:O1|@9243 19776:S47|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f7246756e63746f72283129 19777:O1|@9244 19778:O2|@19780,@19779 19779:O1|@9248 19780:O1|@9247 19781:O2|@10391,@19782 19782:O2|@19783,@10389 19783:O2|3,@19784 19784:S2|293a 19785:S40|56414c55455f4f505328292e646973706c617946756e63746f7273283329617267456e762d283129 19786:O2|@10236,@19787 19787:O2|@10392,0 19788:S56|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296578706f72746564446973706c617946756e63746f7273283129 19789:S30|56414c55455f4f505328292e646973706c617946756e63746f7273283329 19790:O1|@9254 19791:O4|103,@10033,@19793,@19792 19792:O5|@18708,1817,0,1817,0 19793:S20|4e6f74206120676c6f62616c2066756e63746f72 19794:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229636f6465466f7246756e6374283129 19795:O1|@9255 19796:S48|494e495449414c4953455f28292e696e6974476c6f62616c456e7628322970726f7073466f7246756e63746f72283129 19797:O1|@9256 19798:S43|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296e616d65466f72466978283129 19799:O1|@9257 19800:S31|56414c55455f4f505328292e646973706c6179466978537461747573283129 19801:O1|@9291 19802:S23|4d414b455f28292e67456e764173456e76283129283129 19803:S30|494e495449414c4953455f28292e696e6974476c6f62616c456e76283229 19804:O1|@9326 19805:O1|@9329 19806:O1|@9332 19807:O1|@9335 19808:O1|@9338 19809:O1|@9341 19810:S26|4d414b455f28292e67456e7641734e616d655370616365283229 19811:S5|656e746572 19812:S6|6c6f6f6b7570 19813:S3|616c6c 19814:S45|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296372656174654669656c6473283229 19815:S23|434f44455452454528292e6d6b556e617279466e283129 19816:S24|434f44455452454528292e6d6b42696e617279466e283129 19817:O2|@19818,0 19818:O3|20,@17070,0 19819:O4|5,@19821,@19820,@10633 19820:O3|21,@17048,5 19821:O3|21,@17044,5 19822:S27|434f44455452454528292e6d6b417262697472617279466e283129 19823:O2|@19825,@19824 19824:O2|@19828,@19827 19825:O2|@19826,1 19826:S9|496e74657272757074 19827:O2|@19831,@19830 19828:O2|@19829,4 19829:S4|53697a65 19830:O2|@19833,@19832 19831:O2|@17878,100 19832:O2|@19835,@19834 19833:O2|@14476,7 19834:O2|@19837,@19836 19835:O2|@17643,101 19836:O2|@19839,0 19837:O2|@19838,5 19838:S8|4f766572666c6f77 19839:O2|@19840,11 19840:S9|537562736372697074 19841:S8|72756e5f63616c6c 19842:O2|@16379,0 19843:S63|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c656457697468436f6e7461696e6572283329 19844:S7|72747343616c6c 19845:S50|494e495449414c4953455f28292e696e6974476c6f62616c456e762832296d616b6552756e43616c6c5475706c6564283229 19846:S20|4d414b455f28292e67456e764173456e76283129 19847:S20|506f6c794d4c2e72756e4f6e456e747279283129 4817:D15,848|483b65187305ff5558cd0149be08c0d0f0c27f0000498b06ff15a2030000ff75084c8d35ae000000415648896508ff75084c8d358b00000041564889650849c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff484d892e415648c7c015000000ff15410300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408415648c7c00300000048c7c301000000ff15f50200004989c6e959010000488b65084883c408415e4c897508e9ad000000488b65084883c408415e4c89750849c7c6030000004156ff75084c8d352900000041564889650848c7c02700000048c7c301000000ff15970200004889c24883c408415e4c897508eb22488b65084883c408415e4c897508488b0424ff156802000048ba600fd1f1c27f0000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e96affffffff75084c8d352900000041564889650848c7c02700000048c7c301000000ff15f10100004889c24883c408415e4c897508eb25488b65084883c408415e4c89750848c7c003000000ff15bf01000048baa00fd1f1c27f0000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e967ffffff41f6c60175604d8b1e4d8b6e084c3b1d580100007502eb344d8b234e8d2465010000004983fc1b752c49bcb00fd1f1c27f0000498d7308498d7c240848c7c10d000000483bc9f3a67402eb0948c7c303000000eb184d89ee483b65187306ff5558ca0040eb9a48c7c301000000488b0424ff15ed000000488b0424ff15db0000004889c2488d64240848b8d00fd1f1c27f0000ff12ff75084c8d352900000041564889650848c7c02700000048c7c301000000ff159b0000004889c24883c408415e4c897508eb25488b65084883c408415e4c89750848c7c001000000ff156900000048ba2010d1f1c27f0000ff75084c8d351b00000041564889650848c7c001000000ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e967fffffff40000000000|@9989,1,@92,@4909,@4910,@4911,@8887,@9984,@4909,@4910,@4909,@4910,@9052,@5347,@4908|13,0,@4608 314,0,@9981 467,0,@9983 583,0,@9984 679,0,@9985 769,0,@9988 4818:D3,32|483b65187305ff5558cd054c8b720849c7060100000048c7c001000000c3f400|@9427,1,@0| 4819:D7,224|483b65187305ff5558cd0552ff75084c8d35620000004156488965086a016a0148c7c00100000048c7c30100000049c7c0010000004989e1ff15d20000005b415e4983f6fe4983e605490bde4c8b742410498b460849c7c001000000ff15a600000048c7c0010000004883c408415e4c8975084883c408c3488b65084883c408415e4c8975084c8b304983fe197543488d64240849be18e07f0bc37f0000498b0648bb48c5d0f1c27f0000ff154f00000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff2526000000488d642408488b5d08ff23f40000|@9849,1,@27,@4846,@4851,@4859,@4845|150,0,@19888 163,0,@9462 179,0,@19888 196,0,@9463 4820:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c03b000000ff22f400|@9439,1,@2| 4821:D3,80|49bb08d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@3|2,0,@19848 4822:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c00f000000ff22f400|@9439,1,@4| 4823:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104d8b6d084983fc017c4d4983fb017c374d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c017000000ff2248b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23f400000000000000|@9450,1,@5|98,0,@9446 114,0,@9446 4824:D3,80|49bb30d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@6|2,0,@19849 4825:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104983fc017c514983fb017c3b4983c4104d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c017000000ff2248b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23f400000000000000|@9453,1,@7|98,0,@9446 114,0,@9446 4826:D3,64|483b65187305ff5558cd054989d6498b5608498b5e1048c7c03900000049c7c001000000ff124989c64983fe017e0848c7c003000000c348c7c001000000c3f4|@9439,1,@8| 4827:D3,80|49bb58d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@9|2,0,@19850 4828:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@9459,1,@10| 4829:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@9461,1,@11| 4830:D4,808|483b65187305ff5558cd014c8b700841ff364c8b681041ff7500ff304c8b6424104983fc01750d488d64241848c7c001000000c34d8b6d3841f6c501751241ff750049c706010000006a01e993000000488d6424084d8d77e04c3b75107303ff55504d89f749c746f80300000049bd88c5d0f1c27f00004d896e1049bda0c5d0f1c27f00004d896e084c8b2c244d892e488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdf0c5d0f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff23ff75084c8d353b010000415648896508488b5424184c8b6c24304c2b6c2410711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b6424204d8b14244c8b7424104d89f34983fe010f8ce50000004983fd010f8ccb0000004d89db4d89de4f8d5c2bff4d3bda0f87a7000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084d89f64c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c3b642420750d488d64242848c7c001000000c34d89f64983ee014d03ee7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e9ebfeffff48b8b8f2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2df7000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48f3d0f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd88c5d0f1c27f00004d896e10498946084c8b6c24304d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb88f3d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23f4|@9843,1,@26,@4613|111,0,@9464 125,0,@9465 178,0,@9467 196,0,@9469 210,0,@4613 262,0,@9475 419,0,@9475 472,0,@9475 506,0,@9837 522,0,@9446 538,0,@9446 622,0,@9840 685,0,@9464 711,0,@4613 721,0,@9469 778,0,@9842 4831:D3,1064|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bd88c6d0f1c27f0000e9860300004d89ed4d8b75004d8b76084d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be68c0d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75084d89f44983fe037d0f49be88c6d0f1c27f0000e9240200004d89ed4d8b75004d8b76104d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24104d8b75004d8b364d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca0f1d0f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50f0d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8f1d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50f0d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18f2d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70f0d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50f0d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f2d0f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80f2d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@25|36,0,@9472 76,0,@9475 126,0,@4614 164,0,@9472 204,0,@9475 254,0,@4615 304,0,@9475 354,0,@4615 399,0,@9826 448,0,@9814 492,0,@9829 537,0,@9814 581,0,@9815 669,0,@9814 714,0,@9831 758,0,@9814 803,0,@9815 891,0,@9814 935,0,@9833 984,0,@9835 4832:D4,32|483b65187305ff5558cd014c8b4008488b0048c7c301000000ff2519000000f4|@9492,1,@22,@4833| 4833:D10,2944|483b65187306ff5558ca09014c8b284d89ebff70084c8b70104d89f441f6c5010f84e30900004d89dd4d89ee4983fd050f8518030000488d64240841544983f8037f14488d64240848b820c7d0f1c27f0000e9300200004983e80241507115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bd50c7d0f1c27f0000e9880100004c8b7424084d8b364d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424104d8b6e084c8b6424084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b888efd0f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20f0d0f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70f0d0f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0f0d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000ff153b0900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8f0d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe150f85420100004983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be78c0d0f0c27f0000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15e30700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd190f85420100004983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be78c0d0f0c27f0000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff158c0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe2f0f85420100004983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be78c0d0f0c27f0000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15350500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4981fdcf0000000f85420100004983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00114989c748c740f8020000004c8940084c892049be78c0d0f0c27f0000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15db0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe110f85450100004d89e64983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00414989c748c740f8020000004c8940084c893049be78c0d0f0c27f0000498b16ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15840200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c70007000000c34d8b6d0041f6c5010f8539010000498b55004983e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04414989c748c740f8020000004c8940084c8930ff124d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c706070000004156ff15080100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c70007000000c3f40000|@9824,1,@23,@4844,@4844,@4844,@4844,@4844,@4844,@4844|74,0,@9478 102,0,@9475 136,0,@9480 173,0,@9475 223,0,@4615 268,0,@9475 320,0,@4617 333,0,@9807 389,0,@9812 437,0,@9814 482,0,@9815 574,0,@9817 727,0,@9818 772,0,@9819 872,0,@9475 922,0,@4615 1063,0,@9818 1207,0,@9475 1257,0,@4615 1398,0,@9818 1542,0,@9475 1592,0,@4615 1733,0,@9818 1880,0,@9475 1930,0,@4615 2071,0,@9818 2215,0,@9475 2265,0,@4615 2406,0,@9818 2600,0,@9475 2778,0,@9818 4834:D5,168|483b65187305ff5558cd05488b00488b5a08ff15b00000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8c7d0f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee0c7d0f1c27f00004c8930ff15470000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000|@9492,1,@12,@4836,@4835|56,0,@9485 104,0,@9486 4835:D3,552|483b65187305ff5558cd0950534c8b7424084d8b364e8d34750100000041566a016a014c8b2c244d89ee4c3b6c24100f85cd000000488d642408415e4983fe010f8ca70000004c3b34247507488d64241058c34c89f04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1da4010000775a4d89dc4e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00484d89ef49d1ec4d8965f841c645ff4141554983eb024c8b24244d89e54bc7449cfc0000000049d1ee4d89ed4d8975006a116a01e9a3000000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b868c8d0f1c27f0000488b5d08ff234d89f64d89f54983c6024156488b5424204d89ed4983c51049d1ed4c8b7424284f0fb6342e4a8d047501000000ff124989c64d8b364e8d3475010000004983ee014c8b6c24104d03ee7115488d64243048b8d0c6d0f1c27f0000488b5d08ff23415c4c8924244c896c2408483b65187303ff5558e9a8feffff4c8b34244d89f54c3b742418751a488d6424104c8b34244c89f0418066ffbf4889c0488d642420c3488b5424204d89ed4983c51049d1ed4c8b7424284f0fb6342e4a8d047501000000ff124989c64d8b2e4e8d2c6d010000004c89e9498d76084c8b5c24084d89de49d1eb4c8b6424104b8d3c1c48d1e9f3a44c8b24244983c4024d89f64f8d6c2eff4c8924244c896c2408483b65187303ff5558e960fffffff400000000ffffffffffffff01|@9495,1,@14|223,0,@9487 244,0,@9490 340,0,@9475 4836:D3,400|483b65187305ff5558cd014989c541f6c501751b498b45004d8b75084983fe017501c34d89ec49c7c601000000eb0b48b8d8c8d0f1c27f0000c341f6c40175414d8b14244d8b5c24084d8b124e8d1455010000004983ea014d03d6711048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebb94983fe01750b48b8d8c8d0f1c27f0000c34983fe010f8c870000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c3000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2341f6c50175424d8b55004d8b5d084d8b224e8d2465010000004c89e1498d72084d89f249d1ea4a8d3c1048d1e9f3a44f8d6426ff4d89dd4d89e6483b65187306ff5558ca0160ebb88060ffbfc3f400000000000000ffffffffffffff01|@9494,1,@13|49,0,@9493 95,0,@9475 137,0,@9493 277,0,@9487 293,0,@9490 4837:D4,712|483b65187305ff5558cd054881f8b9000000750b48b838d1d0f1c27f0000c34883f845750b48b850d1d0f1c27f0000c34883f843720e4881f8fd0000007705e9650200004883f8410f845b0200004883f80f750b48b868d1d0f1c27f0000c34883f811750b48b880d1d0f1c27f0000c34883f813750b48b898d1d0f1c27f0000c34883f815750b48b8b0d1d0f1c27f0000c34883f817750b48b8c8d1d0f1c27f0000c34883f819750b48b8e0d1d0f1c27f0000c34883f81b750b48b8f8d1d0f1c27f0000c34883f8410f83080100004989c54981c580000000711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d05e9d10000004981fdff0100000f8fc40000004c8b72084f8b74aefc4d8b2e4a8d0c6d010000004883f901750b48b810d2d0f1c27f0000c34989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2568010000775d4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640085cc640095e498d7608488d780a48d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b828d2d0f1c27f0000488b5d08ff234c8b4a0848c7c30700000049c7c015000000ff15f10000004989c64d8b2e4a8d0c6d010000004883f901750b48b8c0d2d0f1c27f0000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640085c498d7608488d780948d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b7208498b4486fcc3f400000000ffffffffffffff01ffffffffffffff01|@9522,1,@15,@4838|22,0,@9497 39,0,@9498 86,0,@9499 103,0,@9500 120,0,@9501 137,0,@9502 154,0,@9503 171,0,@9504 188,0,@9505 221,0,@9475 287,0,@9506 441,0,@9487 457,0,@9507 517,0,@9511 667,0,@9487 4838:D3,872|483b65187306ff5558ca090350415041514883fb017510488d64241848b8d8c8d0f1c27f0000c34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24084d89ee4983fd017515488d64241848b8d8d2d0f1c27f0000488b5d08ff234d89f64d89f54983feff75234c8b7424104c3b35e30200007515488d64241848b870d3d0f1c27f0000488b5d08ff23488b4424104d89ee48d1f849d1fe489949f7fe4c8d3445010000004d89ed4d89ec4983fd017515488d64241848b8e0d3d0f1c27f0000488b5d08ff23488b4424104d89e548d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb6a4983fd017d0949c7c503000000eb0749c7c5010000004d89e44983fc017d0949c7c403000000eb0749c7c4010000004d3bec750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f04c8b4424084c8b0c24e892feffff4989c34c8b7424084d89f24983fe017515488d64241848b8e0d3d0f1c27f0000488b5d08ff23488b4424104d89d648d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb5a4983fd017d0949c7c403000000eb0749c7c4010000004d89d24d89d64983fa017d0949c7c203000000eb0749c7c2010000004d3be27502eb214d89f64983ee014d03ee7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c5607115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983fd017d0a488d642418e9040100004981fdff0100000f8ff20000004c8b34244f8b6caefc488d6424084d8b334e8d3475010000004d8b65004e8d2465010000004983fe017509488d6424104c89e8c3488d6424104983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d97000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23488d64241848b828d2d0f1c27f0000488b5d08ff23f4ffffffffffffff010100000000000080|@9523,1,@16|30,0,@9493 52,0,@9475 87,0,@9512 134,0,@9516 194,0,@9519 333,0,@9475 390,0,@9519 522,0,@9475 549,0,@9475 820,0,@9487 841,0,@9507 4839:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be00ea50f1c27f00004c8930c3f400000000|@9806,1,@18|47,0,@4840 4840:D6,688|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8a8ecd0f1c27f0000c34c8b284d89ee4983fd01750b48b8d8ecd0f1c27f0000c34d89e54983fc037d0b48b8a8ecd0f1c27f0000c34c8b6208498b5424084d8b364983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd0edd0f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00eed0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50eed0f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be80eed0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0eed0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@9804,1,@17,@9805,@9803,@9797|26,0,@9781 49,0,@9783 69,0,@9781 98,0,@9475 318,0,@9791 366,0,@9793 411,0,@9796 562,0,@9798 607,0,@9799 4841:D3,32|483b65187305ff5558cd0149bea8c0d0f0c27f0000498b16ff22f40000000000|@9811,1,@21|13,0,@4618 4842:D4,64|483b65187305ff5558cd01488b00ff15440000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400|@9492,1,@19,@4843| 4843:D3,72|49bb80d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@9810,1,@20|2,0,@19851 4844:D6,720|483b65187305ff5558cd014c8b304983fe010f85b20200004c8b682041f6c5010f850d0200004d8b75004d8b6d084983fd017501c34d8b2e4983fd070f855a0100004d8b6e084c3b2dab0200007502eb374d8b75004d89f44e8d3475010000004983fe03752349be38ddd0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34c3b2d600200007502eb344d89e64e8d2465010000004983fc03752449bc38e0d0f1c27f0000498d7508498d7c240848c7c101000000483bc9f3a67402eb01c34c3b2d180200007502eb304e8d3475010000004983fe03752349be70d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3c3f400000000|@9825,1,@24,@9565,@9648,@9616|104,0,@9616 167,0,@9648 228,0,@9565 289,0,@9821 338,0,@9823 440,0,@9821 489,0,@9823 591,0,@9821 640,0,@9823 4845:D3,272|483b65187306ff5558ca09034989c441f6c4010f85e70000004d8b3424498b4424084d8b1e4d89dd4983fb0575114989c4483b65187306ff5558ca0813ebd04983fd0375614d8b76084983fe03750949c7c60d000000eb254983fe01750949c7c609000000eb164983fe07750949c7c605000000eb0749c7c601000000490bde4d89c64983e60d4983fe01741048b8e8f3d0f1c27f0000488b5d08ff234983c80de95affffff4d8b76084983fe0175264d89c64983e6034983fe01741048b8e8f3d0f1c27f0000488b5d08ff234983c803e92affffff4883cb034d89c64983e6034983fe01741048b8e8f3d0f1c27f0000488b5d08ff234983c803e900ffffff4989194d89410848c7c001000000c3f4|@9876,1,@42|143,0,@9844 191,0,@9844 233,0,@9844 4846:D9,848|483b65187306ff5558ca0901505341504c8b753841ff76084c8b2c244d89ee4983e50d4983fd017502eb134c8b6d384d89f64983e6f34983ce094d89750849c7c6010000004c8b6c24084d8b65004983fc037502eb0d4981fe419c00000f85ba02000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe010f8585020000ff75084c8d3524000000415648896508488b542420488b442428ff124989c64883c408415d4c896d08e98f010000488b65084883c408415e4c8975085049c7c5020000004c8b6424104d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff159b0200004c8b65384c8b6c24084d89ee4d896c24084d89f64983e6094983fe0975184c8b75384d8b76184983fe017408ff1561020000eb00eb004c8b24244d8b6c241841f6c50175634d8b75004d8b55084d8b45104d8b5d184d8b4d204d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85050100004d8b364d8b16498b7e084d8b4e10498b76184d8b46204d89e44d8b34244d89e44d8b6c24084d89e44d8b642410488d6424084d8d5fd04c3b5d107306ff5550cac0774d89df49c743f8050000004989732049897b184d8943104d894b084d8913498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930ff15420100004989c6415649c7c5020000004c8b6424104d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15010100004c8b65384c8b6c24084d89ee4d896c24084d89f64983e6094983fe0975184c8b75384d8b76184983fe017408ff15c7000000eb00eb00584883c420c34d89e44d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbf0f4d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23ff1559000000483b65187303ff5558e921fdffff4d89f54983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e9f6fcfffff4|@9852,1,@28,@4848,@4849,@4847,@4850,@4849,@4847|748,0,@9850 813,0,@9475 4847:D3,72|49bba8d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@9856,1,@32|2,0,@19852 4848:D3,72|49bbd0d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@9853,1,@29|2,0,@19853 4849:D3,72|49bbf8d07f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d3841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400000000|@9854,1,@30|2,0,@19854 4850:D3,24|483b65187305ff5558cd01488b5d08ff23f4000000000000|@9855,1,@31| 4851:D8,1000|483b65187305ff5558cd095053488b4424084c8b70284d8b364983fe0375144c8b34244d8b364e8d347501000000e9830000004c8b2c244d8b75004e8d2475010000004d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d89661049c74608010000004d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bed0fb50f1c27f00004c89334889c04c8b40204889c0488d642408ff256a0300004983fe01750949c7c601000000eb7f4d89f44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fc017d0a488d642410e9df0200004c8b2c244d8b5d004e8d1c5d010000004d3be37c0949c7c303000000eb0749c7c3010000004983fb030f84ab0200004983c41049d1ec4d89ed4f0fb66c25004e8d2c6d010000004983fd150f855702000041564c8b34244d89f44983fe010f8589000000488d6424084c8b2c244d8b75004e8d2475010000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049c74608010000004d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be500951f1c27f00004c8933488b04244c8b40204889c0488d642408ff25380200004c8b6c24084d8b75004e8d1c75010000004d89e44d89e64983fc010f8c850100004d89f64d89f44d3bf30f87610100004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d89661049c74608010000004d89ed4d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be980951f1c27f00004c8933488b4424104c8b4020ff1595010000488b4424104c8b402048bb78c5d0f1c27f0000ff15740100004c8b34244d89f44983fe010f8cb70000004c8b6c24084d8b75004e8d1c75010000004d89e44d89e64d3be30f87820000004d89f44d2bde4983c3014d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89e44d896608488d6424084d89ed4d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee00951f1c27f00004c8933488b04244c8b40204889c0488d642408ff25b9000000488d64241848b850f8d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8b8f2d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff234d89f54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e9e9fcffff488d64241048b8a8f8d0f1c27f0000488b5d08ff23f40000000000|@9874,1,@40,@4846,@4846,@4846,@4846,@4846|150,0,@4852 213,0,@9475 447,0,@4856 609,0,@4857 646,0,@9463 806,0,@4858 846,0,@9870 867,0,@9446 888,0,@9837 909,0,@9446 939,0,@9475 980,0,@9872 4852:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9863,1,@33,@4853| 4853:D7,1368|483b65187305ff5558cd09504c8b2c244d8b75104d8b264d89ed4d8b75184d8b364983fe030f858d000000488d6424084d8d77e04c3b75107306ff5550ca00104d89f749c746f80300000049bd08f6d0f1c27f00004d896e1049bd20f6d0f1c27f00004d896e084d8926498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd68f6d0f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff234d89ed4d89ee41ff75004d89f64c89f041ff76084889c04c8b6828ff33ff7308ff73104c8b7424204d8b264c89e74c8b14244d89d34d3bd47e22ff1590040000488b442428488b5c24104c8b4424084159488d642428ff256c0400004d8b6d004983fd05751b4889c0488b5c24104c8b4424084d89d9488d642430ff253f0400004c8b6c24184d8b4d004d89ca4d89e04d2bc17115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c0014d89db4d89d94d3bd80f8d410100004d89ed4c8b5c24104d8b234a8d3465010000004c8b4424084d89c44983f8010f8c070100004d89c94c89ca4983f9010f8ce20000004d89e44d89e14889d24989d04d8d6414ff4c3be60f87b30000004d89f64d89f64d8b76084983fa010f8c8a0000004d89c04d89c44f8d4402ff4c3bc77615488d64243048b898f6d0f1c27f0000488b5d08ff234d89c94983c1104c89e149d1e94d89db4b8d340b49d1ea4b8d3c1648d1e9f3a44d89ed4d8b75004d89e44983ec01488d6424184d03f47115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d897500488d64240848c7c0010000004883c410c3488d64243048b8e0c2d0f1c27f0000488b5d08ff23488d64243048b8b8f2d0f1c27f0000488b5d08ff23488d64243048b8e0c2d0f1c27f0000488b5d08ff23488d64243048b8e0c2d0f1c27f0000488b5d08ff234d89ed4d89d34d2be27115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c40141544d89ed4c8b5424184d8b224a8d3465010000004c8b4c24104d89cc4983f9010f8c3d0200004c8b0c244c89ca4983f9010f8c170200004d89e44d89e14889d24989d04d8d6414ff4c3be60f87e80100004d89f64d89f64d8b76084983fb010f8cbf0100004d89c04d89c44f8d4403ff4c3bc77615488d64243848b898f6d0f1c27f0000488b5d08ff234d89c94983c1104c89e149d1e94d89d24b8d340a49d1eb4b8d3c1e48d1e9f3a44d89ed4d8b75004d89e44983ec014d03f47115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d897500ff15b60100004c8b34244d89f44983ee014c8b5c24104d03de7115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488b4c24084989ce4d89e5492bcc7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b6424184d8b14244e8d0c55010000004983fb010f8cc20000004883f9010f8ca30000004d8d540bff4d3bd10f87800000004c8b4c24284d8b114d89c9498b7908493bca7615488d64243848b898f6d0f1c27f0000488b5d08ff234983c31049d1eb4d89e44b8d341c48d1e9f3a44d89f64d2bf5488d6424107115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488d6424104983c6014c8b2c244d897500488d64240848c7c0010000004883c410c3488d64243848b8b8f2d0f1c27f0000488b5d08ff23488d64243848b8e0c2d0f1c27f0000488b5d08ff23488d64243848b8e0c2d0f1c27f0000488b5d08ff23488d64243848b8e0c2d0f1c27f0000488b5d08ff23488d64243848b8b8f2d0f1c27f0000488b5d08ff23488d64243848b8e0c2d0f1c27f0000488b5d08ff23488d64243848b8e0c2d0f1c27f0000488b5d08ff23f400000000|@9866,1,@34,@4830,@4854,@4854,@4830|77,0,@9857 91,0,@9858 135,0,@9860 153,0,@9469 167,0,@4613 340,0,@9475 495,0,@9861 572,0,@9475 617,0,@9446 638,0,@9837 659,0,@9446 680,0,@9446 712,0,@9475 855,0,@9861 927,0,@9475 982,0,@9475 1019,0,@9475 1115,0,@9861 1168,0,@9475 1223,0,@9837 1244,0,@9446 1265,0,@9446 1286,0,@9446 1307,0,@9837 1328,0,@9446 1349,0,@9446 4854:D5,1016|483b65187306ff5558ca090353415041514c8b70104d8b6e4041f6c501750e41ff750041ff366a01e9640100004d8b6e3841f6c50175534d8b6d004d8b3649c7c3050000004e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00604d89e749d1eb4d895c24f841c64424ff4149c74424080000000049c7c301000000e990000000488d6424184d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc08f6d0f1c27f00004d89661049bca0c5d0f1c27f00004d8966084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd28f7d0f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff234983fb15724e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703150000005b415841594d89e24d89dc4d89f341544153ff74241048c7c0010000004c896c2418ff25aa0200004d89da49d1ea43c60414204d89da4983c2024d89d3483b65187306ff5558ca0078eb89ff75084c8d3556010000415648896508488b5424204c8b6c24304983ed014c8b7424104d89f44d03f5711048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24284d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b6424384d8b1c244e8d145d010000004983fe010f8cdc0000004983fd010f8cc20000004f8d5c2eff4d3bda0f87a4000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c3b642418750d488d64243048c7c001000000c34d89f64983ee014d03ee7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e9d0feffff48b8b8f2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2dfe000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48f3d0f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd08f6d0f1c27f00004d896e10498946084c8b6c24204d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb58f7d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23f400000000000000|@9868,1,@35,@4613,@4855|175,0,@9857 189,0,@9465 233,0,@9864 251,0,@9469 265,0,@4613 446,0,@9475 472,0,@9475 620,0,@9475 673,0,@9475 707,0,@9837 723,0,@9446 739,0,@9446 823,0,@9840 886,0,@9857 912,0,@4613 922,0,@9469 979,0,@9865 4855:D4,824|483b65187306ff5558ca090750534150415141524c8b7424184c2b7424207115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe157d02eb0749c7c6150000004c8b6c24104983ed014c8b6424204d03e57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24084d8b5d004e8d145d010000004983fc010f8c960200004983fe010f8c770200004f8d5c34ff4d3bda0f87540200004983fe157615488d64242848b898f6d0f1c27f0000488b5d08ff234983c4104c89f149d1ec4d89ed4b8d742500488b3c2448d1e9f3a4ff75084c8d2d14010000415548896508488b5424504983fe010f8cef0000004983fe150f87d50000004c8b6c2448498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c70001000000ff124883c408415e4c8975084c8b6c24204d89ee4983ed014c03e87115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c3b6c2418750f488d64242848c7c001000000c218004d89f64983ee014903c67115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24204c8b6424184c8b5c24104c895c24104c896424184c896c24204883c408e929feffff48b8b8f2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d38010000751b4c8934244c8b70084c897424084c8b70104c89742410e9820000004983fe03752549be48f3d0f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb574c8b6c24484d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049bc08f6d0f1c27f00004d896610498946084d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbb8f7d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23488d64242848b8b8f2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23f400|@9869,1,@36,@4613|39,0,@9475 98,0,@9475 176,0,@9861 341,0,@9475 396,0,@9475 473,0,@9837 489,0,@9446 573,0,@9840 642,0,@9857 663,0,@4613 673,0,@9469 730,0,@9867 766,0,@9837 787,0,@9446 808,0,@9446 4856:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9863,1,@37,@4853| 4857:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9863,1,@38,@4853| 4858:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@9863,1,@39,@4853| 4859:D3,80|49bb20d17f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9875,1,@41|2,0,@19855 4860:D6,272|483b65187305ff5558cd05524c8b3424498b5608ff124989c64983fe010f85a900000049be38e07f0bc37f00004d8b364983fe03754d49bd38e07f0bc37f000049c7c6fefffffff04d0fc175004983ee024983fe01750949c7c603000000eb0749c7c6010000004983fe03751648c7c00100000048c7c303000000ff15b7000000eb476a016a0148c7c00100000048c7c30100000049c7c0010000004989e1ff158b0000005b415e4983f6fe4983e605490bde48b8a0f9d0f1c27f000049c7c001000000ff155e000000eb33498b16498b4608ff75084c8d3514000000415648896508ff124883c408415e4c897508eb0e488b65084883c408415e4c897508483b65187303ff5558e9fffefffff40000|@9882,1,@46,@4859,@4845,@4862|37,0,@19890 56,0,@19890 181,0,@9878 4861:D4,32|483b65187305ff5558cd0148c7c301000000ff2520000000f400000000000000|@9879,1,@43,@4862| 4862:D9,808|483b65187305ff5558cd094883fb037502eb4b49c7c60100000049bd38e07f0bc37f00004d8b6d004983fd037502eb0d4981fe419c00000f85ab00000049bd38e07f0bc37f000049c7c6fefffffff04d0fc175004983ee024983fe01756c4c8b75384d8b76084983e60d4983fe01750949c7c605000000eb294983fe05750949c7c607000000eb1a4983fe09750949c7c603000000eb0749c7c6010000004983f60241564c8b34244983fe057502eb184c8b6d384c8b75384d8b76084983e6f34983ce054d897508eb4b48b838e07f0bc37f0000ff158e020000483b65187303ff5558e92bffffff4d89f54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e905ffffff49c7c60100000049bd48e07f0bc37f00004d8b6d004983fd037502eb094981fe419c0000754d49bd48e07f0bc37f000049c7c6fefffffff04d0fc175004983ee024983fe01751149be58e07f0bc37f00004d8b364156eb4d48b848e07f0bc37f0000ff15e3010000483b65187303ff5558eb8d4d89f54983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e962fffffff604240175254c8b3424498b064d89f641ff7608ff1584010000415d4c892c24483b65187303ff5558ebd5488d64240849c7c60100000049bd58e07f0bc37f00004d89750049bd48e07f0bc37f000049c7c602000000f04d0fc175004983c6024983fe037502eb2149be48e07f0bc37f000049c7060300000048b848e07f0bc37f0000ff150d0100004c8b6d384c8b34244d89f44983fe03750949c7c60d000000eb2e4d89e44d89e64983fc01750949c7c609000000eb194d89f64983fe07750949c7c605000000eb0749c7c6010000004c8b65384d8b6424084983e4f34d0bf44d8975084c8b2c244d89ee4983fd017507488d642408eb104d89f64983fe03488d6424087402eb164c8b75384d8b76184983fe017408ff1571000000eb0049bd38e07f0bc37f000049c7c602000000f04d0fc175004983c6024983fe03750848c7c001000000c349be38e07f0bc37f000049c7060300000048b838e07f0bc37f0000ff251d000000f400000000|@9880,1,@44,@4847,@4849,@4847,@4863,@4848,@4848|28,0,@19890 63,0,@19890 204,0,@19890 243,0,@9475 286,0,@19891 317,0,@19891 350,0,@19892 367,0,@19891 408,0,@9475 499,0,@19892 513,0,@19891 548,0,@19891 565,0,@19891 731,0,@19890 772,0,@19890 789,0,@19890 4863:D3,40|49bb48d17f0bc37f00004d8b1b4989e5488b65304881ec900000004889c741ffd34c89ecc3f40000|@9881,1,@45|2,0,@19856 4864:D3,72|49bb70d17f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d3841ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400000000|@9883,1,@47|2,0,@19857 4865:D4,32|483b65187305ff5558cd05488b5a0848c7c025000000ff251c000000f4000000|@9887,1,@48,@4866| 4866:D3,80|49bb98d17f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@9888,1,@49|2,0,@19858 4867:D4,152|483b65187305ff5558cd05524c8b34244d8b76104d8b3641566a01f644240801756c4c8b742408498b064d89f641ff7608ff75084c8d35280000004156488965084c8b40204c8b742428498b5e08ff155c0000004989c44883c408415e4c897508eb15488b65084883c408415e4c89750849c7c401000000415d4c8924244c896c2408483b65187303ff5558eb8d584883c410c3f4000000|@9889,1,@50,@4846| 4868:D4,48|483b65187305ff5558cd054c8b701041ff7610488b5a084c8b4210ff15270000005a48c7c001000000ff22f400000000|@9891,1,@51,@4869| 4869:D7,312|483b65187306ff5558ca0901505341504c8b74241041ff76184c8b34244d8b2e4983fd03750d488d64242048c7c001000000c34d89f649c7060300000049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f859c00000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe01756b4c8b742408498b06488b1c24ff15d70000004989c6488d6424084c8b2c244d897500488d64240849c7c5020000004c8b24244d89e6f04d0fc12c244983c5024983fd037507488d642408eb184d89f64c89f049c70603000000ff1582000000488d64240858ff256e000000ff1560000000483b65187303ff5558e93fffffff4d89f54983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e914fffffff400000000000000|@9892,1,@52,@4848,@4871,@4847,@4870|270,0,@9475 4870:D3,112|483b65187305ff5558cd09a8017551ff30488b40084c8b34244d8b76184c3bf37434e8d9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e9a0ffffff48c7c001000000c3f400000000000000|@9893,1,@54| 4871:D4,808|483b65187305ff5558cd014c8b700841ff364c8b681041ff7500ff304c8b6424104983fc01750d488d64241848c7c001000000c34d8b6d3841f6c501751241ff750049c706010000006a01e993000000488d6424084d8d77e04c3b75107303ff55504d89f749c746f80300000049bd88c5d0f1c27f00004d896e1049bda0c5d0f1c27f00004d896e084c8b2c244d892e488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdf0c5d0f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff23ff75084c8d353b010000415648896508488b5424184c8b6c24304c2b6c2410711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b6424204d8b14244c8b7424104d89f34983fe010f8ce50000004983fd010f8ccb0000004d89db4d89de4f8d5c2bff4d3bda0f87a7000000498d47e0483b45107306ff5550ca04704989c748c740f8030000004d89e44c8960104c8968084d89f64c8930ff124989c54883c408415e4c8975084c8b24244d89e64983ec014d03e57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c3b642420750d488d64242848c7c001000000c34d89f64983ee014d03ee7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e9ebfeffff48b8b8f2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2df7000000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be48f3d0f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bd88c5d0f1c27f00004d896e10498946084c8b6c24304d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb88f3d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23f4|@9843,1,@53,@4613|111,0,@9464 125,0,@9465 178,0,@9467 196,0,@9469 210,0,@4613 262,0,@9475 419,0,@9475 472,0,@9475 506,0,@9837 522,0,@9446 538,0,@9446 622,0,@9840 685,0,@9464 711,0,@4613 721,0,@9469 778,0,@9842 4872:D5,288|483b65187305ff5558cd055248ba50fcd0f1c27f000048c7c00100000048bb2803d1f1c27f000049c7c003000000ff150c0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70603000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee03751f1c27f00004c89334c8b3424498b46084d89f64d8b4610488d642408ff251a000000f400|@9937,1,@82,@4846,@4873|14,0,@9896 31,0,@9935 249,0,@4899 4873:D4,1624|483b65187306ff5558ca0d015250534d8d57e04c3b55107306ff5550ca00014d89d749c742f8030000004c8b7424084d89f44d8972104c8b7424104d8b6e084d896a0849bdc01f51f1c27f00004d892a4d8d6fe04c3b6d107306ff5550ca00554d89ef49c745f8030000004d89e44c89e34d8965104d89f64d8b66104d89650849bc702051f1c27f00004d8965006a016a016a016a014983f803755f4d8d77f04c3b75107306ff5550ca08244d89f749c746f8010000004d892e4d89f54d8d77f04c3b75107306ff5550ca08244d89f749c746f8010000004d89164c892c244c8974240848c74424100100000048c744241801000000e9cd0000004d8d67e04c3b65107306ff5550ca08644d89e749c74424f8030000004d896c24104d89f64d8b6e404d89eb4d896c240849bdc02051f1c27f00004d892c244d8d6ff04c3b6d107306ff5550ca081c4d89ef49c745f8010000004d8965004d8d67e04c3b65107306ff5550ca082c4d89e749c74424f8030000004d895424104d89de4d8974240849be082151f1c27f00004d8934244d8d77f04c3b75107306ff5550ca08304d89f749c746f8010000004d892648c704240100000048c7442408010000004c896c24104c89742418ff3424ff742410ff742420ff7424304c8b742450498b561848c7c03d00000049c7c001000000ff124989c66a016a016a014983fe057f2849be90fdd0f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410e903020000ff75084c8d35370000004156488965084c8b742478498b563848c7c025000000488b5c247049c7c001000000ff1249c7c6030000004883c408415d4c896d08eb22488b65084883c408415e4c8975084c8b304983fe050f85c303000049c7c6010000004983fe0375624d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424604d8965104c8b6424684d8b6424384d89650849bc502151f1c27f00004d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24eb0749c7c4010000004983fe03755f4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24604d896b104c8b6c24684d8b6d304d896b0849bda02151f1c27f00004d892b4d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d895d00eb0749c7c5010000004983fe03755e4d8d5fe04c3b5d107306ff5550ca00304d89df49c743f8030000004c8b7424604d8973104c8b7424684d8b76284d89730849bef82151f1c27f00004d89334d8d77f04c3b75107306ff5550ca00384d89f749c746f8010000004d891eeb0749c7c6010000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8973104d896b084d89234d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8973104d896b084d89234c8924244c896c24084c89742410ff3424ff742410ff7424204d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424784c89f34d8975104c8bb424800000004d8b66184c89e24d89650849bc482251f1c27f00004d896500415548c7c01f00000049c7c001000000ff124989c14d8d6fe04c3b6d107306ff5550ca00024d89ef49c745f8030000004c8bb424800000004d89f44d8975104c8b9c24880000004d8b73204d89f04d89750849be082351f1c27f00004d8975004d8d77f04c3b75107306ff5550ca003b4d89f749c746f8010000004d892e4d8d6fe04c3b6d107306ff5550ca005b4d89ef49c745f8030000004d89e44c89e74d8965104d89db4d8b63184d89650849bc582351f1c27f00004d8965004d8d57f04c3b55107306ff5550ca80634d89d749c742f8010000004d892a4d8d6fe04c3b6d107306ff5550ca80474d89ef49c745f8030000004889ff4989fc49897d104d89c34d895d0849bbc02351f1c27f00004d895d004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f8010000004d89e44d8923498d4780483b45107306ff5550ca006e4989c748c740f80f0000004c8b4424184d89c44c8940704c8b4424404c8940684c8b4424384c8940604c8948584c8950504c8b5424504c8950484c8b5424484c8950404c8b5424104c8950384c8958304d89e44c8960284c8b6424084c8960204c8968184c8970104c8b34244c897008488d6424584c8b7424204c89304883c438ff252a000000488d642470488b5d08ff23f4000000000000|@9922,1,@74,@4885|69,0,@4874 130,0,@4875 301,0,@4876 387,0,@4877 513,0,@9901 708,0,@4878 818,0,@4879 926,0,@4880 1134,0,@4881 1230,0,@4882 1322,0,@4883 1410,0,@4884 4874:D3,136|483b65187305ff5558cd054989d64c8b204c8b58084c8b68104d8b6d084983fc017c4d4983fb017c374d8d47e04c3b45107306ff5550ca00784d89c749c740f8030000004d8958104d8960084d8928498b5608498b5e1048c7c011000000ff2248b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff23f400000000000000|@9898,1,@55|98,0,@9446 114,0,@9446 4875:D3,40|483b65187305ff5558cd054989d64989c0498b5608498b5e1048c7c015000000ff22f40000000000|@9899,1,@56| 4876:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@9900,1,@57| 4877:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@9900,1,@58| 4878:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c025000000ff22f400|@9902,1,@59| 4879:D3,48|483b65187305ff5558cd054989d6498b5608498b5e104989c048c7c027000000ff1248c7c001000000c3f40000000000|@9903,1,@60| 4880:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c029000000ff22f400|@9904,1,@61| 4881:D3,152|483b65187305ff5558cd054989d6ff75084c8d2d2d000000415548896508498b5608498b5e1048c7c02300000049c7c001000000ff124989c64883c408415d4c896d08eb1e488b65084883c408415e4c8975084c8b304983fe05753449c7c6ffffffff4983fe017c1f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488b5d08ff23f400|@9905,1,@62| 4882:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c037000000ff22f400|@9906,1,@63| 4883:D3,64|483b65187305ff5558cd054989d6498b5608498b5e1048c7c02100000049c7c001000000ff124989c64983fe017e0848c7c003000000c348c7c001000000c3f4|@9906,1,@64| 4884:D3,40|483b65187305ff5558cd054989d6498b5608498b5e1049c7c00100000048c7c00f000000ff22f400|@9906,1,@65| 4885:D3,1056|483b65187305ff5558cd014c8b30ff70084c8b6810ff7018ff7020ff7028ff70304c8b60384c8b5840488b70484c8b48504c8b4058488b7860488b4868488b50704883fe0175624983fb01750949c7c201000000eb514d8b13498d5fe0483b5d107306ff5550cac67f4989df48c743f8030000004c8943104c89530849ba582851f1c27f00004c89134d8d57f04c3b55107306ff5550cace7b4d89d749c742f80100000049891aeb034989f24983fb01755e4883fe01750949c7c301000000eb4d4c8b1e498d77e8483b75107306ff5550ca867f4989f748c746f8020000004c895e0849bb302b51f1c27f00004c891e4d8d5ff04c3b5d107306ff5550cac6774d89df49c743f801000000498933eb004883f9010f85c40000004883ff01756b41f6c101755c41f6c2017556498b01498b32498d5fe0483b5d107306ff5550cac77f4989df48c743f803000000488943104889730848be082c51f1c27f0000488933498d77f0483b75107306ff5550ca8e7f4989f748c746f80100000048891eeb0748c7c601000000eb51488b37498d5fe0483b5d107306ff5550cac67f4989df48c743f8030000004c8943104889730848bea02c51f1c27f0000488933498d77f0483b75107306ff5550ca8e7f4989f748c746f80100000048891eeb034889ce4883ff010f85c00000004883f901756b41f6c101755c41f6c3017556498b19498b3b498d4fe0483b4d107306ff5550cacc7f4989cf48c741f803000000488959104889790848bfc02f51f1c27f0000488939498d7ff0483b7d107306ff5550ca467f4989ff48c747f80100000048890feb0748c7c701000000eb4d488b39498d4fe8483b4d107306ff5550cac47f4989cf48c741f8020000004889790848bf583051f1c27f0000488939498d7ff0483b7d107306ff5550ca467f4989ff48c747f80100000048890feb004983fa01757041f6c501756140f6c601755b498b5d004c8b16498d4fd8483b4d107306ff5550cacc7f4989cf48c741f804000000488959184c8951104c89710849ba683151f1c27f00004c89114d8d57f04c3b55107306ff5550cac67b4d89d749c742f80100000049890aeb0749c7c201000000eb004983fb01757041f6c501756140f6c701755b498b5d004c8b1f498d4fd8483b4d107306ff5550cacc7f4989cf48c741f804000000488959184c8959104c89710849bb683251f1c27f00004c89194d8d5ff04c3b5d107306ff5550cac6774d89df49c743f80100000049890beb0749c7c301000000eb00498d4780483b45107306ff5550cac47f4989c748c740f80f0000004889507048897068488978604c8940584c8948504c8950484c8958404c8960384c8b24244c896030488d6424084c8b24244c896028488d6424084c8b24244c896020488d6424084c8b24244c896018488d6424084c8968104c8b2c244c896808488d6424084c8930c3f400000000|@9923,1,@75|126,0,@4886 229,0,@4887 343,0,@4888 435,0,@4889 552,0,@4890 640,0,@4891 749,0,@4892 867,0,@4893 4886:D3,688|483b65187305ff5558cd054989d64d8b66104d89e5493bc47d054989c5eb0041554c8b24244d89e54983fc010f8c9b0000004d89ed4c89e84c3b2d690200007615488d64240848b8f8fed0f1c27f0000488b5d08ff234889c04883c00e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff4141554983fc017502eb114983ec024c8b2c244bc744a5fc0000000049c7c501000000eb15488d64240848b868c8d0f1c27f0000488b5d08ff234c8b6424084d89e34d3be50f87820100004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c24084d89db4d89dd4d891c24498b5608498d47e0483b45107306ff5550ca04304989c748c740f8030000004c8960104d89ee4c89700848c70001000000ff124889c14883f9010f8cfe000000483b4c24080f87de0000004883f9017510488d64241048b8d8c8d0f1c27f0000c34883f90375294c8b34244d0fb636488d6424084e8d2c750100000049be30c9d0f1c27f00004b8b44aefc4883c408c34889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c3b35c500000077594d89f54a8d04ad0400000048f7d84903c7483b45107205493bc77206ff5550ca02404989c749d1ed4c8968f8c640ff414983ee024ac744b0fc000000004989ce49d1ee4c89305e488d780848d1e9f3a48060ffbf4883c408c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8b8f2d0f1c27f0000488b5d08ff23488d64241048b8e0c2d0f1c27f0000488b5d08ff234d89eb49d1eb4c8b242443c6041c204d89ec4983c4024d89e5483b65187306ff5558ca0060e943fefffff4ffffffffffffff01e1ffffffffffff0f|@9909,1,@66|72,0,@9907 212,0,@9490 378,0,@9493 416,0,@9496 573,0,@9487 594,0,@9837 615,0,@9446 4887:D3,176|483b65187305ff5558cd054989c641ff36498b460841ff7610488b5208ff124989c64c8b2c244d8b55004d89ed4d8b6d08488d6424084d8b264a8d0c65010000004c8b24244d89e34983fc017c4a4d89db4d89dc4d8d5c0bff4d3bda7615488d64240848b888ffd0f1c27f0000488b5d08ff23498d76084d89e449d1ec488d6424084b8d7c250048d1e9f3a44d8b364a8d047501000000c3488d64240848b8e0c2d0f1c27f0000488b5d08ff23f40000|@9912,1,@67|101,0,@9910 159,0,@9446 4888:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@9913,1,@68| 4889:D3,760|483b65187305ff5558cd054989d64d8b66104d89e5493bc47d054989c5eb0041554c8b24244d89e54983fc010f8c9b0000004d89ed4c89e84c3b2db10200007615488d64240848b8f8fed0f1c27f0000488b5d08ff234889c04883c00e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff4141554983fc017502eb114983ec024c8b2c244bc744a5fc0000000049c7c501000000eb15488d64240848b868c8d0f1c27f0000488b5d08ff234c8b6424084d89e34d3be50f87c40100004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c24084d89db4d89dd4d891c24498b5608498d47e0483b45107306ff5550ca04304989c748c740f8030000004c8960104d89ee4c89700848c70001000000ff124989c641f6c6010f8548010000498b0e4883f9010f8c26010000483b4c24080f87060100004883f9017514488d64241049bed8c8d0f1c27f0000e9b80000004883f903752d4c8b34244d0fb636488d6424084e8d2c750100000049be30c9d0f1c27f00004f8b74aefc4883c408e9850000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d2c45010000004c3b2df800000077794d89ec4e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff414983ed024bc744aefc000000004989cd49d1ed4d892e5e498d7e0848d1e9f3a4418066ffbf4883c408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8b8f2d0f1c27f0000488b5d08ff23488d64241048b8e0c2d0f1c27f0000488b5d08ff23488d64241048c7c001000000c34d89eb49d1eb4c8b242443c6041c204d89ec4983c4024d89e5483b65187306ff5558ca0060e901fefffff4000000000000ffffffffffffff01e1ffffffffffff0f|@9913,1,@69|72,0,@9907 212,0,@9490 391,0,@9493 433,0,@9496 626,0,@9487 647,0,@9837 668,0,@9446 4890:D3,112|483b65187305ff5558cd0552504c8b742408498b561048c7c001000000ff124989c64983fe0375364c8b742408498b5608488b0424ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f400000000|@9914,1,@70| 4891:D3,232|483b65187305ff5558cd054989c641ff36498b460841ff7610488b5208ff124989c641f6c6010f85ac0000004d8b364c8b2c244d8b55004d89ed4d8b6d08488d6424084d8b264a8d0c65010000004c8b24244d89e34983fc017c684d89db4d89dc4d8d5c0bff4d3bda7615488d64240848b888ffd0f1c27f0000488b5d08ff23498d76084d89e449d1ec488d6424084b8d7c250048d1e9f3a44d8b364e8d347501000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b8e0c2d0f1c27f0000488b5d08ff23488d64241048c7c001000000c3f40000|@9914,1,@71|114,0,@9910 202,0,@9446 4892:D3,216|483b65187305ff5558cd0552504c8b742408498b561848c7c001000000ff124c8b742408498b5610488b0424ff124989c6488d64240841f6c6017509488d642408498b06c34d8d77e04c3b75107303ff55504d89f749c746f80300000049bd8800d1f1c27f00004d896e1049bda0c5d0f1c27f00004d896e084c8b2c244d8b6d08488d6424084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bda000d1f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff23f4|@9918,1,@72|95,0,@9915 109,0,@9465 166,0,@9916 184,0,@9469 198,0,@4613 4893:D3,216|483b65187305ff5558cd0552504c8b742408498b561848c7c001000000ff124c8b742408498b5610488b0424ff124989c6488d64240841f6c6017509488d642408498b06c34d8d77e04c3b75107303ff55504d89f749c746f80300000049bd3001d1f1c27f00004d896e1049bda0c5d0f1c27f00004d896e084c8b2c244d8b6d08488d6424084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd4801d1f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff23f4|@9921,1,@73|95,0,@9919 109,0,@9465 166,0,@9920 184,0,@9469 198,0,@4613 4894:D3,80|49bbc0d17f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@76|2,0,@19859 4895:D3,80|49bbe8d17f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@77|2,0,@19860 4896:D3,80|49bb10d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@78|2,0,@19861 4897:D3,80|49bb38d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@79|2,0,@19862 4898:D3,624|483b65187305ff5558cd0d4989d64889da4156ff75084c8d3538000000415648896508ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408415e4c8975084883c408c3488b65084883c408415e4c8975084c8b284d89ee4983fd050f85ee0100004c8b60104d89e54d8b64240841f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc030f85b70100004d89ec4d8b6d084d8b6d004c8b1c244d8b4b284d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84630100004c8b1c244d8b4b204d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f841a0100004c8b1c244d8b4b184d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84d10000004c8b1c244d8b4b104d89ca4983f9017502eb294d89d34d8b134d8b5d004d3b1a750949c7c303000000eb0749c7c3010000004983fb030f84880000004c8b1c244d8b4b084d89ca4983f9017507488d642408eb2a4d89d3488d6424084d8b1b4d8b6d004d3b2b750949c7c503000000eb0749c7c5010000004983fd03743e4c8b6808498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb6802d1f1c27f00004c8958184c8960104c8968084c8930488b5d08ff2348c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d642408eb05488d642408488b5d08ff23f4000000|@9931,1,@80|513,0,@9929 4899:D3,32|483b65187305ff5558cd054c8b72084c893048c7c001000000c3f40000000000|@9936,1,@81| 4900:D4,32|483b65187305ff5558cd05488b5a0848c7c025000000ff251c000000f4000000|@9887,1,@83,@4866| 4901:D4,152|483b65187305ff5558cd05524c8b34244d8b76104d8b3641566a01f644240801756c4c8b742408498b064d89f641ff7608ff75084c8d35280000004156488965084c8b40204c8b742428498b5e08ff155c0000004989c44883c408415e4c897508eb15488b65084883c408415e4c89750849c7c401000000415d4c8924244c896c2408483b65187303ff5558eb8d584883c410c3f4000000|@9889,1,@84,@4846| 4902:D4,48|483b65187305ff5558cd054c8b701041ff7610488b5a084c8b4210ff15270000005a48c7c001000000ff22f400000000|@9891,1,@85,@4903| 4903:D7,312|483b65187306ff5558ca0901505341504c8b74241041ff76184c8b34244d8b2e4983fd03750d488d64242048c7c001000000c34d89f649c7060300000049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f859c00000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe01756b4c8b742408498b06488b1c24ff15d70000004989c6488d6424084c8b2c244d897500488d64240849c7c5020000004c8b24244d89e6f04d0fc12c244983c5024983fd037507488d642408eb184d89f64c89f049c70603000000ff1582000000488d64240858ff256e000000ff1560000000483b65187303ff5558e93fffffff4d89f54983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e914fffffff400000000000000|@9892,1,@86,@4848,@4830,@4847,@4904|270,0,@9475 4904:D3,112|483b65187305ff5558cd09a8017551ff30488b40084c8b34244d8b76184c3bf37434e8d9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e9a0ffffff48c7c001000000c3f400000000000000|@9893,1,@87| 4905:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@9982,1,@89| 4906:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@9982,1,@90| 4907:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@9982,1,@91| 4908:D3,112|483b65187305ff5558cd01a8017552ff30488b4008e8e6ffffffff75084c8d3523000000415648896508488b54241048c7c001000000ff124883c408415e4c8975084883c408c3488b65084883c408415e4c89750848c7c0010000004883c408c348c7c001000000c3f4000000000000|@19847,1,@4607| 4909:D3,72|49bb60d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@9990,1,@93|2,0,@19863 4910:D3,80|49bb80d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@9888,1,@94|2,0,@19864 4911:D3,1096|483b65187305ff5558cd01504d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd684251f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849bd584d51f1c27f00004d892e4156498d77e8483b75107303ff55504989f748c746f8020000004c8b7424104c89760849bec84e51f1c27f00004c89364d8d77e84c3b75107305ff5550cd404d89f749c746f8020000004c8b6c24104d896e0849bd385051f1c27f00004d892e4156498d5fe8483b5d107305ff5550cd404989df48c743f8020000004c8b7424184c89730849bea85151f1c27f00004c8933498d4fe8483b4d107305ff5550cd484989cf48c741f8020000004c8b7424184c89710849be185351f1c27f00004c89314d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24184d896e0849bd885451f1c27f00004d892e41564d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24204d896e0849bd606051f1c27f00004d892e41564d8d77e84c3b75107305ff5550cd4a4d89f749c746f8020000004c8b6c24284d896e0849bde86251f1c27f00004d892e4156498d57e8483b55107305ff5550cd4a4989d748c742f8020000004c8b7424304c89720849be706551f1c27f00004c89324d8d77e84c3b75107305ff5550cd4e4d89f749c746f8020000004c8b6c24304d896e0849bdf86751f1c27f00004d892e4156498d7fe8483b7d107305ff5550cd4e4989ff48c747f8020000004c8b7424384c89770849be806a51f1c27f00004c89374d8d6fe84c3b6d107305ff5550cdce4d89ef49c745f8020000004c8b7424384d89750849be086d51f1c27f00004d8975004d8d5fe84c3b5d107306ff5550cace204d89df49c743f8020000004c8b7424384d89730849be007151f1c27f00004d89334d8d57e84c3b55107306ff5550cace284d89d749c742f8020000004c8b7424384d89720849bec87251f1c27f00004d89324d8d67e84c3b65107306ff5550cace2c4d89e749c74424f8020000004c8b7424384d8974240849be907451f1c27f00004d8934244d8d47e84c3b45107306ff5550cace3c4d89c749c740f8020000004c8b7424384d89700849be587651f1c27f00004d89304d8d4fe84c3b4d107306ff5550cace3d4d89cf49c741f8020000004c8b7424384d89710849be207851f1c27f00004d89314d8db768ffffff4c3b75107306ff5550cace3f4d89f749c746f81200000049899e8800000049898e80000000498956784989767049897e68488b7c242849897e60488b7c242049897e58488b7c243049897e50488b7c240849897e484d8946404c8b4424104d8946384158488d6424104d8946304158488d6424184d8946284d894e204d8956184d895e104d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f803000000415d4c8968104c89700849bee87951f1c27f00004c8930c3f4000000000000|@18224,1,@4070|46,0,@4912 94,0,@4918 142,0,@4920 190,0,@4922 240,0,@4924 288,0,@4926 336,0,@4928 386,0,@4935 436,0,@4938 486,0,@4941 534,0,@4944 584,0,@4947 632,0,@4950 682,0,@4956 731,0,@4959 782,0,@4962 832,0,@4965 881,0,@4968 1077,0,@4971 4912:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bef04251f1c27f00004c8930ff251d000000f400000000|@10015,1,@98,@4916|66,0,@4913 4913:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@95,@4624,@4624,@4914|126,0,@9991 4914:D3,608|483b65187305ff5558cd09534c8b304983fe017516488b5008ff7010488b442408ff124989c6e9260100004c8b68084c8b7018498b550041ff36488b442408ff124989c64c8b2c244d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37215488d64241048b81011d1f1c27f0000488b5d08ff234d89ed4f8b5cb5fc41f6c3010f85bd0000004d8b0b4d8b5b084c8b5424084d89d04d3bd17507488d642410eb3a4d89c04d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd775384d89c0498d7008498d7908483bc9f3a67402eb24488d642410498d47f0483b45107306ff5550ca00084989c748c740f8010000004c8918c34983fe0175114d89e549c1e50849c1ed074983cd01eb034d89f54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e900ffffff488d64241048c7c001000000c34c8b2c244d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37215488d64241048b89011d1f1c27f0000488b5d08ff234d89ed4f8b5cb5fc41f6c3010f85bd0000004d8b0b4d8b5b084c8b5424084d89d04d3bd17507488d642410eb3a4d89c04d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd775384d89c0498d7008498d7908483bc9f3a67402eb24488d642410498d47f0483b45107306ff5550ca00084989c748c740f8010000004c8918c34983fe0175114d89e549c1e50849c1ed074983cd01eb034d89f54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e900ffffff488d64241048c7c001000000c3f400|@10007,1,@97|103,0,@9995 290,0,@9475 372,0,@9998 559,0,@9475 4915:D3,24|483b65187305ff5558cd0148b86012d1f1c27f0000c3f400|@10006,1,@96|13,0,@10004 4916:D15,1472|483b65187305ff5558cd0950534c8b75384d8b66204983fc01750949c7c501000000eb1f4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d89650849c74500050000004d8b66084d89e64983e6034983fe03750949c7c303000000eb0749c7c3010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000004983e40d4983fc01750949c7c305000000eb294983fc05750949c7c307000000eb1a4983fc09750949c7c303000000eb0749c7c3010000004983f3024d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424030000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b753841564c8b342441ff76086a016a0148b8d812d1f1c27f000048c7c30100000049c7c0010000004989e1ff1572040000ff34244c8b6424104c8b742420498b462049bed812d1f1c27f000041f6c60175544d8b1e4d8b6e084d8b134983fa0575334d8b730841f6c6017520498b064883f8017f15488d64244848b80813d1f1c27f0000488b5d08ff23eb0748c7c001000000eb114d89ee483b65187306ff5558ca0150eba64c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15c70300004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff1593030000eb00eb05488d64242049c7c6010000004c8b6c24104d8b65004983fc037502eb0d4981fe419c00000f85ce02000049c7c6feffffff4d89ed4c89e8f04d0fc175004983ee024983fe010f8599020000ff75084c8d3529010000415648896508488b54242848c7c001000000ff124989c64883c408415d4c896d08415649c7c5020000004c8b6424184d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15db0200004c8b753841564c8b342441ff76086a016a01488b44242848c7c30100000049c7c0010000004989e1ff15a5020000ff34244c8b642410f64424380175254c8b742438498b064883f8017f15488d64245048b80813d1f1c27f0000488b5d08ff23eb0748c7c0010000004c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15340200004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff1500020000eb00eb05488d642420584883c420c3488b65084883c408415e4c8975085049c7c5020000004c8b6424184d89e6f04d0fc12c244983c5024983fd037502eb134d89f64c89f049c70603000000ff15a60100004c8b753841564c8b342441ff76086a016a01488b44242848c7c30100000049c7c0010000004989e1ff1570010000ff34244c8b642410f64424380175254c8b742438498b064883f8017f15488d64245048b80813d1f1c27f0000488b5d08ff23eb0748c7c0010000004c8b6d384983f4fe4c236424184c8b34244d0bf44d8975084c8b7424204d8b7620493bc67502eb06ff15ff0000004c8b34244983e609488d6424084983fe09751d488d6424204c8b75384d8b76184983fe017408ff15cb000000eb00eb05488d6424204c8b24244d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb9813d1f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23ff155d000000483b65187303ff5558e90dfdffff4d89f54983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e9e2fcfffff400000000|@10016,1,@99,@4848,@4849,@4917,@4845,@4847,@4849,@4917,@4845,@4847,@4849,@4917,@4845|415,0,@10008 465,0,@10008 521,0,@10010 911,0,@10010 1188,0,@10010 1368,0,@10013 1433,0,@9475 4917:D3,72|49bba8d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@10017,1,@100|2,0,@19865 4918:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bee04d51f1c27f00004c8930ff251d000000f400000000|@10015,1,@102,@4916|66,0,@4919 4919:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@101,@4625,@4625,@4914|126,0,@9991 4920:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be504f51f1c27f00004c8930ff251d000000f400000000|@10015,1,@104,@4916|66,0,@4921 4921:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@103,@4626,@4626,@4914|126,0,@9991 4922:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bec05051f1c27f00004c8930ff251d000000f400000000|@10015,1,@106,@4916|66,0,@4923 4923:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@105,@4627,@4627,@4914|126,0,@9991 4924:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be305251f1c27f00004c8930ff251d000000f400000000|@10015,1,@108,@4916|66,0,@4925 4925:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@107,@4628,@4628,@4914|126,0,@9991 4926:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bea05351f1c27f00004c8930ff251d000000f400000000|@10015,1,@110,@4916|66,0,@4927 4927:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@109,@4629,@4629,@4914|126,0,@9991 4928:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be185551f1c27f00004c8930ff251e000000f40000000000|@10039,1,@117,@4916|73,0,@4929 4929:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc08c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@111,@4931,@4930,@4914|58,0,@9594 72,0,@4624 4930:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@116,@4624| 4931:D6,1576|483b65187306ff5558ca09015341504c8b304983fe030f852a020000ff7008ff7010ff70184c8b342441ff364c8b34244d8b76f849c1e60849c1ee074983ce0141564c8b742420498b16488b442430ff124889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b7424284d8970084c8b7424304d8930488b442408ff15c60500004c8b6424184d8b2c244983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89e44d89e64d892c244d89f64d8b364983ee014d6bf6057115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c6014c8b2c244983ed014d6bed047115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c5014d3bf50f8e28010000415e4983ee014d6bf6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c60141564c8b2c244d89ee4983fd017d0a488d642438e9da0000004d89f64d89f54c3b35c40400000f8dc20000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd785d51f1c27f00004d892e4c8b2c244c8b6424184d892c244c8b6c24284d8975004c8b7424104d8b76f849c1e60849c1ee074983ce014983ee027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234156e94f020000488d64243848b8d015d1f1c27f0000488b5d08ff23488d64243848c7c001000000c3488d6424084c8b34244d8b2e4e8d2c6d010000004983fd017514488d64240849bc2816d1f1c27f0000e9bb0000004d89eb4983c3444c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15740300000f87b40100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb2816d1f1c27f000048c7c145000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608488d642408498d7c242a48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be6016d1f1c27f0000e9b60000004d89eb4983c3304c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15900200000f87c80000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc6016d1f1c27f000048c7c131000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd8816d1f1c27f00004c8968184c89701049bee816d1f1c27f00004c89700848c700cf000000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d0d488d64244848c7c001000000c34c8b7424184d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64244848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc41f6c60175184d8b2e4d8b65004e8d1c650100000049c7c401000000eb314c8b2c244983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e957ffffff4983fb010f85a30000004c89e04c8b6424104d89e54983fc017515488d64244848b8a014d1f1c27f0000488b5d08ff2348d1e84d89ed49d1ed4833d249f7f5488d1c5501000000f6c30174084883fb017d15eb154c0fb66bff4e8d2c6d010000004983fd237402eb1748b8f814d1f1c27f00004156ff15b1000000415e4889c3f6c30174134d89f0488b442408ff1591000000e937ffffff488d64244848b80815d1f1c27f0000488b5d08ff234d89d94983e9024d89da4983c20e49d1ea4f0fb65415004e8d1455010000004d89e04d6bc0074983e8064f8d5402ff4d89cb4d89d4483b65187306ff5558ca0078e90dfffffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10036,1,@114,@4934,@4933,@4934|160,0,@9475 207,0,@9475 246,0,@9475 292,0,@9475 460,0,@4932 527,0,@9475 555,0,@10027 615,0,@10029 755,0,@10029 835,0,@10030 993,0,@10030 1059,0,@10031 1077,0,@10033 1104,0,@9487 1125,0,@9487 1204,0,@9995 1276,0,@9475 1342,0,@10019 1415,0,@10021 1467,0,@10022 4932:D4,232|483b65187305ff5558cd054c8b304e8d2c750100000049c7c6010000004983fd01757e4c89f04c8b6a084d89ee4983fd01751048b8a014d1f1c27f0000488b5d08ff2348d1e849d1ee4833d249f7f6488d1c5501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff1574000000a8017401c348b80815d1f1c27f0000488b5d08ff234d89eb4983eb024d89ec4983c40e49d1ec4e0fb624204e8d2465010000004d89f24d6bd2074983ea064f8d6414ff4d89dd4d89e6483b65187306ff5558ca0560e937fffffff400|@10025,1,@112,@4933|53,0,@10019 126,0,@10021 147,0,@10022 4933:D3,80|49bbd0d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@10026,1,@113|2,0,@19866 4934:D3,304|483b65187306ff5558ca090141f6c00175054d8b28eb0848c7c001000000c34c8b60f84d89e649c1e40849c1ec074983cc01493bdc721048b81011d1f1c27f0000488b5d08ff234c8b6498fc41f6c4010f85aa0000004d8b1c244d3bdd7502eb304d8b234e8d2465010000004d8b55004c89d14e8d1455010000004d3be2753f498d7308498d7d08483bc9f3a67402eb2e49c1e60849c1ee074983ce01493bde721048b80017d1f1c27f0000488b5d08ff234c894498fc48c7c001000000c34883fb01750e49c1e60849c1ee074983ce01eb034989de4983ee02711048b8d0c6d0f1c27f0000488b5d08ff234c89f3483b65187306ff5558ca0921e91fffffff49c1e60849c1ee074983ce01493bde721048b80017d1f1c27f0000488b5d08ff234c894498fc48c7c001000000c3f400|@10037,1,@115|57,0,@9995 164,0,@10034 222,0,@9475 275,0,@10034 4935:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef06051f1c27f00004c8930ff251e000000f40000000000|@10039,1,@120,@4916|73,0,@4936 4936:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc18c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@118,@4931,@4937,@4914|58,0,@9594 72,0,@4625 4937:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@119,@4625| 4938:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be786351f1c27f00004c8930ff251e000000f40000000000|@10039,1,@123,@4916|73,0,@4939 4939:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc28c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@121,@4931,@4940,@4914|58,0,@9594 72,0,@4626 4940:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@122,@4626| 4941:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be006651f1c27f00004c8930ff251e000000f40000000000|@10039,1,@126,@4916|73,0,@4942 4942:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc48c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@124,@4931,@4943,@4914|58,0,@9594 72,0,@4628 4943:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@125,@4628| 4944:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be886851f1c27f00004c8930ff251e000000f40000000000|@10039,1,@129,@4916|73,0,@4945 4945:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc38c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@127,@4931,@4946,@4914|58,0,@9594 72,0,@4627 4946:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@128,@4627| 4947:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be106b51f1c27f00004c8930ff251e000000f40000000000|@10039,1,@132,@4916|73,0,@4948 4948:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc58c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@130,@4931,@4949,@4914|58,0,@9594 72,0,@4629 4949:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@131,@4629| 4950:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be886d51f1c27f00004c8930ff251c000000f4000000|@10045,1,@138,@4916|59,0,@4951 4951:D4,40|483b65187305ff5558cd05488b420849b81818d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@136,@4953|17,0,@10040 4952:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@133,@4624,@4624|139,0,@9991 4953:D3,312|483b65187306ff5558ca090141506a016a014c8b304983fe01754c4c8b60104d8b6c24f849c1e50849c1ed074983cd014d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849bc307051f1c27f00004d89264c892c244c89742408eb4d4c8b70184d8b264d8b6c24f849c1e50849c1ed074983cd014d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849bc987051f1c27f00004d89264c892c244c89742408ff3424ff742410536a014c8b34244c89f04c3b7424187c0b488d642408584883c428c3488b542410ff124989c641f6c6017518498b06498b5e08488b5424304c8b442408ff124989c5eb054c8b6c24084c8b24244983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8924244c896c2408483b65187303ff5558eb87f4|@10044,1,@137|81,0,@4954 160,0,@4955 277,0,@9475 4954:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@10042,1,@134|41,0,@9998 4955:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b81011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@10042,1,@135|41,0,@9995 4956:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be807151f1c27f00004c8930ff251c000000f4000000|@10045,1,@141,@4916|59,0,@4957 4957:D4,40|483b65187305ff5558cd05488b420849b81819d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@140,@4953|17,0,@10046 4958:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@139,@4625,@4625|139,0,@9991 4959:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be487351f1c27f00004c8930ff251c000000f4000000|@10045,1,@144,@4916|59,0,@4960 4960:D4,40|483b65187305ff5558cd05488b420849b82819d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@143,@4953|17,0,@10047 4961:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@142,@4626,@4626|139,0,@9991 4962:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be107551f1c27f00004c8930ff251c000000f4000000|@10045,1,@147,@4916|59,0,@4963 4963:D4,40|483b65187305ff5558cd05488b420849b83819d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@146,@4953|17,0,@10048 4964:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@145,@4627,@4627|139,0,@9991 4965:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bed87651f1c27f00004c8930ff251c000000f4000000|@10045,1,@150,@4916|59,0,@4966 4966:D4,40|483b65187305ff5558cd05488b420849b84819d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@149,@4953|17,0,@10049 4967:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@148,@4628,@4628|139,0,@9991 4968:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bea07851f1c27f00004c8930ff251c000000f4000000|@10045,1,@153,@4916|59,0,@4969 4969:D4,40|483b65187305ff5558cd05488b420849b85819d1f1c27f000048c7c301000000ff251a000000f400|@10043,1,@152,@4953|17,0,@10050 4970:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@151,@4629,@4629|139,0,@9991 4971:D4,40|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b4a084c8b5210ff2519000000f4|@10147,1,@193,@4972| 4972:D15,2232|483b65187306ff5558ca0907505341504151415249c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24284d896e184c8b6c24084d896e104c8b2c244d896e0849bd808351f1c27f00004d892e4156ff75084c8d350b000000415648896508e90f030000488b65084883c408415e4c897508504c8b34244d8b2e4981fdcf00000075744d89f641ff76104c8b7424404d8b064d89f6498b460848bbe81ad1f1c27f0000ff1521080000498d47d8483b45107303ff55504989c748c740f80400000049be701bd1f1c27f00004c8970184c8b34244c897010488d64241049bee816d1f1c27f00004c89700848c700cf000000488b5d08ff234d89f64d8b76084d8b2e4e8d246d010000004983fc01750f49bda01bd1f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15040700000f870a0200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bba01bd1f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48bbc01bd1f1c27f0000e9b20000004d89f44983c4104c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2d0600000f87260100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f1498d7508488d7b0848d1e9f3a44983c61049bdc01bd1f1c27f000048c7c111000000498d750849d1ee4a8d3c3348d1e9f3a48063ffbf49be18e07f0bc37f0000498b06ff151006000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff15e70500004c8b7424384d8b064d89f6498b460848bbd81bd1f1c27f0000ff15c00500004c8b24244d8b34244d89e44d8b6c24084d89e44d8b642410488d642408498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbe81bd1f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64244848b8f8c7d0f1c27f0000488b5d08ff234c8b7424184d8b364983fe030f84a80100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849bd909551f1c27f00004d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d89750849be68c1d0f0c27f00004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424484d89661049bc28dbd0f1c27f00004d89660849bc78c1d0f0c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb501cd1f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec825d1f1c27f00004c89334883fb0175074c8b442438eb0e488b442438ff15d80300004989c0488b442430488b5c2410ff15bd0300004989c64d8b760841f6c601752b498b1648c7c001000000ff124989c54d8b750041ff750841ff751041ff751841ff752041ff75284156eb2648b80026d1f1c27f0000488b5d08ff2348c7c0010000004883c408415e4c8975084883c440c3f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be30b451f1c27f00004c8930ff15f2020000415d4c892c24483b65187303ff5558eb8a488d642408ff742418f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be28b651f1c27f00004c8930ff156b020000415d4c892c24483b65187303ff5558eb8a488d642408ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742460498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be20b851f1c27f00004c8930ff15e5010000415d4c892c24483b65187303ff5558eb8a488d642410ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742458498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be18ba51f1c27f00004c8930ff155f010000415d4c892c24483b65187303ff5558eb8a488d642410ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742450498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be10bc51f1c27f00004c8930ff15d9000000415d4c892c24483b65187303ff5558eb8a488d642418ff3424f604240175704c8b2c244d8b75004d89ed41ff75084d8b2e4d8b66084c8b742440498b1e4d89f64d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be08be51f1c27f00004c8930ff1553000000415d4c892c24483b65187303ff5558eb8a488d642410483b65187303ff5558e930fbfffff4000000000000ffffffffffffff01ffffffffffffff01|@10148,1,@194,@4916,@4916,@4916,@4916,@4916,@4916,@5013,@5012,@4846,@4846,@4851,@4846|160,0,@4973 249,0,@10061 289,0,@10065 316,0,@10033 367,0,@10066 505,0,@10066 574,0,@10067 730,0,@10067 767,0,@19888 786,0,@19888 803,0,@9463 834,0,@10068 906,0,@10069 942,0,@9487 963,0,@9487 1030,0,@4981 1082,0,@9594 1096,0,@4630 1154,0,@9594 1168,0,@4631 1209,0,@10071 1293,0,@10142 1405,0,@10144 1525,0,@5000 1652,0,@5002 1778,0,@5004 1904,0,@5006 2030,0,@5008 2156,0,@5010 4973:D4,160|483b65187305ff5558cd05524c8b34244d8b66184d89e54d8b04244d89ee498b460848bb6819d1f1c27f0000ff15860000004883f801751c4c8b34244d8b7608488d64240849c7060300000048c7c001000000c34c8b304983fe1575364c8b2c244d8b75104d89f44d8b364983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89e5488d6424084d897500c3488d642408c3f4000000000000|@10060,1,@158,@4846|36,0,@10051 120,0,@9475 4974:D5,184|483b65187305ff5558cd01504c8b3424498b066a016a0148c7c3030000004989e0ff15b1000000488b0424ff742408ff159b0000004989c64c8b2c244c8b6424184d892c24488d6424204d8b264d89e54e8d2465010000004983fc01750848c7c001000000c34e8d2c6d010000004983fd017f1048b8a8f8d0f1c27f0000488b5d08ff234d0fb676084e8d347501000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@10058,1,@156,@4836,@4975|118,0,@9872 4975:D4,1784|483b65187306ff5558ca090141504c8b304983fe010f8554060000ff70084c8b7010ff70184c8b50204c8b6424084d8b2c244d89eb4e8d2c6d010000004983fd017549488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89e44d896500488d6424084d89ec415d4d8965004d89750848c7c001000000c34d89e94c2b0c247115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c101493bd90f8d070200004d89e44d89dd4e8d045d010000004c8b0c244d89cb4983f9010f8cd30100004883fb010f8cb40100004d89db4d89d94d8d5c1bff4d3bd80f878b0100004d89e44e8d2c6d010000004d89c94d89cb4983f901750d493bdd75084d89e5e9ae0000004883fb01750f49bdd8c8d0f1c27f0000e9990000004889d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d9a0500000f870e0100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc000000004989d949d1e94d894d004d89db4983c3104889d949d1eb4d89e44b8d341c498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca08644d89e749c74424f80200000049c7442408010000004d892c244989dd4983ed01488b1c244903dd488d6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d6fd04c3b6d107306ff5550ca08544d89ef49c745f8050000004d89552049895d184d8975104c8b34244d897508488d64240849c74500010000004d89ee415d4d8965004d89750848c7c001000000c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8b8f2d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff234d89ea4c2b14247115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c201493bda0f859a0100004c8b2c244d89ea4983fd010f8c740100004d89e44d89dd4a8d0c5d010000004d89d24d89d34c3bd10f87420100004d89da492bcb4883c1014d89e44e8d2c6d010000004d89d24d89d34983fa017517493bcd7512488d6424084d89e5488d642408e9ba0000004883f9017514488d64241049bdd8c8d0f1c27f0000e9a00000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15560300000f87ac0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004d89db4983c310488d64240849d1eb4d89e44b8d341c488d642408498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4d8965004d89750848c7c001000000c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b850f8d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff234c2b2c247115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c501492bdd7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c3016a016a014c89f04989e0e831fbffff415b415e4c8b2c244d89e94983fd010f8c760100004c8b6424084d8b14244d89d54a8d0c55010000004d89c94d89ca4c3bc90f873e0100004d89d1492bca4883c1014d89e44e8d2c6d010000004d89c94d89ca4983f9017517493bcd7512488d6424084d89e5488d642408e9ba0000004883f9017514488d64241049bdd8c8d0f1c27f0000e9a00000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d5e0100000f87a80000004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc000000004989c949d1e94d894d004d89d24983c210488d64240849d1ea4d89e44b8d3414488d642408498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b850f8d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff234c8b70084c8b4010498d47e0483b45107306ff5550ca08414989c748c740f803000000488958104c8940084c8930ff342448bb7819d1f1c27f0000ff15600000004989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64241048c7c001000000c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10059,1,@157,@4846|156,0,@9475 288,0,@9493 523,0,@9475 625,0,@9487 646,0,@9837 667,0,@9446 688,0,@9446 718,0,@9475 860,0,@9493 1099,0,@9487 1120,0,@9870 1141,0,@9446 1168,0,@9475 1198,0,@9475 1356,0,@9493 1591,0,@9487 1612,0,@9870 1633,0,@9446 1698,0,@10052 4976:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084d8b46104989e1ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@10056,1,@154,@4977| 4977:D3,1800|483b65187306ff5558ca09035053415041514c8b7424184d8b2e4d89ec4d8b55004d89d34983fa0575564d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424104d8965104d89f64d89750849c74500030000004d89ee415d49bc8819d1f1c27f00004d8965004d89750848c7c0010000004883c418c34983fb010f859c03000041ff75084d8b75104d8b55184c8b1c244d8b2b4d89e94e8d2c6d010000004983fd01757a4d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d89db4d891c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24104d895d104d89750849c74500030000004d89ee415d4d8965004d89750848c7c0010000004883c418c34c8b4424104d89c44d3bc50f8deb0100004d89db4d89cd4e8d044d010000004d89e44d89e14983fc010f8cb80100004d89c94d89cc4d3bc80f87940100004d89db4e8d0c6d010000004d89e44d89e54d3be175084d89dde9ad0000004d89ed4c89e84983fd01750f49bdd8c8d0f1c27f0000e9920000004889c04889c14883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25350500000f87140100004d89e14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004889c94d89db498d7308498d7d0848d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00644d89e749c74424f80200000049c7442408010000004d892c244d8d6fe04c3b6d107306ff5550ca00544d89ef49c745f8030000004c8b5c24184d895d104d89750849c74500030000004d8d77d04c3b75107306ff5550ca00344d89f749c746f8050000004d8956204c8b5c24104d895e184d896e104c8b2c244d896e08488d64240849c70601000000415d488d6424104d8965004d89750848c7c0010000004883c408c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8b8f2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff234d89e44d89e04d3be5757a4d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d89dd4d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b5c24104d895d104d89750849c74500030000004d89ee415d4d8965004d89750848c7c0010000004883c418c34d89c04d2bc57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c0016a016a014c89f0488b5c24284989e1e822fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642408415d4d8965004d89750848c7c0010000004883c418c34d89f64d89f541546a016a014c8b7424104d8b1e4d89dc4983fb030f85a60100004d89f64d8b76084d8b6e4841f6c5010f850101000041ff75004d8b6e2841ff76584983fd01750949c7c601000000eb2e498b550048c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4156488b542410488b442408ff124989c54c8b7424284d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e18488d6424184d8966104d896e0849c706010000004c8b5c24304d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24284d895e104d89660849c706030000004c892c244c89742408e926010000488d6424384d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca019d1f1c27f00004d89661049bca0c5d0f1c27f00004d8966084d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdb819d1f1c27f00004c8968184c89701049be50c6d0f1c27f00004c89700849be58c0d0f0c27f00004c8930488b5d08ff234d89f64983fc0575474d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d89ed4d896e0849c7060300000049bdd8c8d0f1c27f00004c892c244c89742408eb464d89f64d8b6e084d89f64d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24284d895e104d89660849c706030000004c892c244c89742408415d415e4d8b65004e8d2465010000004983fc017544488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4d8965004d89750848c7c0010000004883c418c3488d642408488b442418488b5c24104c8b4424084159488d642418e903f9fffff40000ffffffffffffff01|@10057,1,@155|100,0,@10053 402,0,@9493 748,0,@9487 769,0,@9837 790,0,@9446 952,0,@9475 1410,0,@10054 1424,0,@9465 1468,0,@10055 1486,0,@9469 1500,0,@4613 1578,0,@9493 4978:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf81ad1f1c27f0000ff251c000000f4000000|@10064,1,@160,@4846|54,0,@10062 4979:D3,96|483b65187305ff5558cd014c8b304d8b264d89e54983fc03751e4d8b7608498b561849be700ed1f1c27f00004c893048c7c001000000ff224983fd05750848c7c001000000c34d8b76104c89f0483b65187305ff5558cd01ebb1f40000000000|@10063,1,@159|36,0,@9971 4980:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf81ad1f1c27f0000ff251c000000f4000000|@10064,1,@161,@4846|54,0,@10062 4981:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@10070,1,@162| 4982:D8,472|483b65187305ff5558cd014c8b30ff70104c8b681841ff7500498b45104983fe03750c49beb81cd1f1c27f0000eb0a49bed01cd1f1c27f0000415648bae81cd1f1c27f000048c7c303000000ff15be0100004989c64156488b442418ff15a60100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc381ed1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd501ed1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd681ed1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd801ed1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418ff15650000004889c349be18e07f0bc37f0000498b06ff154700000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff251e000000f40000000000|@10108,1,@169,@4846,@4851,@4836,@4988,@4983|37,0,@10075 49,0,@10076 61,0,@10077 130,0,@10085 179,0,@10086 267,0,@10087 351,0,@10088 416,0,@19888 435,0,@19888 452,0,@9463 4983:D5,376|483b65187305ff5558cd0d6a016a016a014883fb05751c4c8b6a084c8b721048c70424210000004c896c24084c89742410eb5e4883fb03751c4c8b6a184c8b722048c70424150000004c896c24084c89742410eb3c4883fb07751c4c8b6a284c8b723048c70424110000004c896c24084c89742410eb1a4c8b6a384c8b724048c70424050000004c896c24084c89742410415a415e415da80174184883f8017d0949c7c103000000eb0749c7c101000000eb234c0fb660ff4e8d2465010000004983fc23750949c7c103000000eb0749c7c1010000004883f801750b48b830d9d0f1c27f0000c3a80174084883f8017c15eb4e4c0fb660ff4e8d2465010000004983fc03743ba801741549c7c4010000004c2be070094c89e04883c001eb204889c348c7c0010000004152415641554151ff15610000004159415d415e415aeb006a016a0148ba381dd1f1c27f00004156415548c7c3010000004c8d442410ff152b00000058488d6424088060ffbfc3f400000000000000|@10083,1,@166,@4984,@4987|222,0,@9573 327,0,@10078 4984:D4,504|483b65187306ff5558ca0d074989d54989c44989de4c89c741f6c401745241f6c401743c498b55084c89e04c89f34c8b6c24104c8b6424084154ff74240849c7c0010000004c896c24104c895424184989fa4c894c242049c7c101000000ff2248b80815d1f1c27f0000488b5d08ff236a016a0141f6c4010f84f60000004c8b5c242041f6c3010f84e50000004c8b5c24204983fbff751b4c3b2551010000750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983f3024983fb030f85aa0000004c8b5c24204983fb017515488d64241048b8d8d2d0f1c27f0000488b5d08ff234c8b5c24204983fbff751e4c3b25ee0000007515488d64241048b870d3d0f1c27f0000488b5d08ff234c89e04c8b5c242048d1f849d1fb489949f7fb4c8d1c45010000004c8b4424204983f8017515488d64241048b8e0d3d0f1c27f0000488b5d08ff234c89e04c8b64242048d1f849d1fc489949f7fc4c8d2455010000004c891c244c89642408eb25eb00488b5c24204c89e04989e0415541565741514152ff1582000000415a41595f415e415d415858a8017433498b55084c89f34c8b5c24084c8b6c24104c8b6424084154ff7424084c896c24104c895424184989fa4c894c24204d89d9ff2248b80815d1f1c27f0000488b5d08ff23f400000000000001000000000000800100000000000080|@10080,1,@163,@4985|98,0,@10022 218,0,@9512 259,0,@9516 318,0,@9519 467,0,@10022 4985:D3,80|49bbf8d27f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@10081,1,@164|2,0,@19867 4986:D3,1312|483b65187306ff5558ca0d074989d64989c4415141524983fc010f85a90100004983f8010f855b0100004c8b7424304983fe030f85ac0000004989de4983c6024c89f04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25af04000077654d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc0000000049d1ee4d89750041c645087e415e4d892e49c746081300000048c7c0010000004883c408c22000488d64241048b8f8c7d0f1c27f0000488b5d08ff234889d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c3b350204000077604d89f44e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08404d89ef49d1ec4d8965f841c645ff414983ee024bc744b5fc0000000048d1eb49895d00415e4d892e49c746081100000048c7c0010000004883c408c22000488d64241048b8f8c7d0f1c27f0000488b5d08ff234c8b6c24084a8d5c2bff6a016a01498b56084c8b4c24404c8b5424384c8b7424304c8b6c2428415641554c89c04c8d442410ff12415e415d49c7c401000000e9e70200004c8b6c24284983fd017515488d64241048b8e0d3d0f1c27f0000488b5d08ff234c89e04c8b6c242848d1f849d1fd489949f7fd4c8d2c55010000004983fd01750949c7c501000000eb5b4983fd017d0949c7c303000000eb0749c7c3010000004c8b5424284983fa017d0949c7c203000000eb0749c7c2010000004d3bda7502eb234c8b5c24284983eb014d03eb7115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fd157d484983c5607115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fd017d07488d642410eb104981fdff0100007f02eb6b488d64241048b828d2d0f1c27f0000488b5d08ff234981c5820000007115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983ed147115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fd017d0a488d642410e99b0100004981fdff0100000f8f8901000041554c8b6c24304983fd017515488d64241848b8d8d2d0f1c27f0000488b5d08ff234c8b6c24304983fdff751e4c3b25c20100007515488d64241848b870d3d0f1c27f0000488b5d08ff234c89e04c8b6c243048d1f849d1fd489949f7fd4c8d2c45010000004c8b5c24304983fb017515488d64241848b8e0d3d0f1c27f0000488b5d08ff234c89e04c8b64243048d1f849d1fc489949f7fc4c8d2455010000004983fc017502eb6c4983fc017d0949c7c403000000eb0749c7c4010000004c8b5c24304983fb017d0949c7c303000000eb0749c7c3010000004d3be3750949c7c403000000eb0749c7c4010000004983fc0374204c89e84883e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb034c89e84883c3024c8b4c24104983e9026a016a014c89f24c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8d542420e89cfbffff415c415e4c8b2c2449d1ed488d6424084d89f349d1eb47882c1c4983c602415d488d6424084d8965004d89750848c7c001000000c22000488d64241048b828d2d0f1c27f0000488b5d08ff234c3b64240875244c8b6424084f8d6c25ff415c488d6424084d8934244d896c240848c7c001000000c220004f8d5c25ff49d1eb43c6041e304d89e34983c3024d89dc483b65187306ff5558ca0070ebb0f4000000000000000100000000000080ffffffffffffff01ffffffffffffff01|@10082,1,@165|215,0,@9487 375,0,@9487 475,0,@9519 608,0,@9475 641,0,@9475 686,0,@9507 716,0,@9475 743,0,@9475 806,0,@9512 847,0,@9516 906,0,@9519 1047,0,@9475 1186,0,@9507 4987:D3,80|49bb20d37f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@10084,1,@167|2,0,@19868 4988:D6,848|483b65187305ff5558cd014c8b304d89f541f6c6010f84ee0100004983fe010f85b900000041f6c5010f849f0000004983fd010f85850000004c8b70084c8b60104c8b58184c8b50204d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d8b65184d8966184d8b65104d8966104d8b65084d8966084d8b6d004d892e498b4618ff15c0020000ff25b202000048b8981ed1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff234d89ee41f6c5010f840e0100004983fd030f85d300000041f6c6010f84b90000004983fe030f859f0000004c8b70084c8b60104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e498b1e4883fb017d1048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15e40100004989c541f6c50175104d8b650049c7c6010000004d89ebeb7c48b8d8c8d0f1c27f0000c348b8a820d1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2341f6c601741b4983fe077505488b4008c348b80021d1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2341f6c30175314d8b4b084d89f24983c202711048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc94983fe010f8c9d0000004983fe03751049be30c9d0f1c27f00004b8b44a6fcc34c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2341f6c50175304d8b65004d8b5d0849d1ec4d89f249d1ea468824104d89f44983c4024d89dd4d89e6483b65187306ff5558ca0160ebca8060ffbfc3f40000000000ffffffffffffff01|@10110,1,@170,@4991,@4836,@4990|192,0,@10089 208,0,@10093 361,0,@10101 415,0,@9493 426,0,@10104 442,0,@10093 475,0,@10106 491,0,@10093 507,0,@10093 523,0,@10093 558,0,@9475 610,0,@9496 745,0,@9487 761,0,@9490 4989:D3,32|483b65187305ff5558cd0149be78c0d0f0c27f0000498b16ff22f40000000000|@10097,1,@168|13,0,@4615 4990:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba9821d1f1c27f0000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@172|29,0,@10109 4991:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f40000|@10111,1,@171|32,0,@9475 4992:D4,40|483b65187305ff5558cd0149c7c08d00000048bb2023d1f1c27f0000ff251e000000f40000000000|@10124,1,@174,@4994|20,0,@10122 4993:D5,80|483b65187305ff5558cd054989c6524c8b2c244d8b6d08498b45004c89f3ff154c0000004c8b34244d8b7608488d642408498b064c8b402048bb78c5d0f1c27f0000ff2520000000f400000000000000|@10123,1,@173,@4846,@4851|58,0,@9463 4994:D4,88|483b65187306ff5558ca090153415048c7c3010000004c8b04244c8b4c24084c8b1424ff15470000004989c64c3b3424488d642408740d5a48b8a0d5d0f1c27f0000ff22488d64240848c7c001000000c3f4000000000000|@10126,1,@175,@4995|58,0,@9535 4995:D5,736|483b65187306ff5558ca09074150415141524c8b304d89f541f6c6010f84c90100004983fe010f85c800000041f6c5010f84a90000004983fd010f858a0000004c8b7008ff7010ff70204983ee014903de537115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b5c2428ff158c0200004989c64983fe01753d488b442408488b5c24284c8b4424104c8b4c2420415a488d642410415d488d64241049bc8023d1f1c27f00004154ff7424084c896c2410ff253e02000041ff36ff742410ff742438e9c1010000488d64241848b8981ed1f1c27f0000488b5d08ff23488d64241848b8381fd1f1c27f0000488b5d08ff23488d6424084d89ee41f6c5010f84d00000004983fd03754141f6c60174264983fe03750bff7008ff3424e9dd000000488d64241048b8a820d1f1c27f0000488b5d08ff23488d64241048b8381fd1f1c27f0000488b5d08ff2341f6c601746e4983fe077553ff7008488b542408488b0424ff124c8b34244d8b36488d6424104e8d347501000000488b0424492bc6488d642408711048b8d0c6d0f1c27f0000488b5d08ff234883c0014883f8017e01c348c7c001000000c3488d64241048b80021d1f1c27f0000488b5d08ff23488d64241048b8381fd1f1c27f0000488b5d08ff23488d64241048b8381fd1f1c27f0000488b5d08ff23488d64241848b8381fd1f1c27f0000488b5d08ff234c8b34244983fe017e3f488b54241048b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b442410482b0424488d6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff23488d6424104883c0014883f8017e01c348c7c001000000c3f64424080175414c8b742408498b064d89f641ff7608488b5c24204c8b4424084c8b4c24404c8b542438e846fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb8488d642410584883c430c3f400|@10127,1,@176,@4997,@4996|91,0,@9475 161,0,@10125 209,0,@10089 230,0,@10093 298,0,@10104 319,0,@10093 395,0,@9475 435,0,@10106 456,0,@10093 477,0,@10093 498,0,@10093 529,0,@9557 556,0,@9475 613,0,@9475 4996:D3,752|483b65187305ff5558cd094989de4c8b284d89ec41f6c5010f84690200004983fd010f85e100000041f6c4010f84c70000004983fc010f85ad0000004c8b68084c8b58104c8b50184c8b48204d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d894c24184d895424104d895c24084d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8b5c24184d895d184d8b5c24104d895d104d8b5c24084d895d084d8b24244d8965004d8b6d184d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8934244d89e641554156e9ae01000048b8981ed1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff234d89e541f6c4010f84610100004983fc030f85d600000041f6c5010f84bc0000004983fd030f85a20000004c8b68084c8b58104d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8b5c24084d895d084d8b24244d8965004d8b6d004d3bee7f384d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348b8a820d1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2341f6c501746b4983fd0775554c8b68084d8b6d004e8d2c6d010000004d3bee7f384d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348b80021d1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff2348b8381fd1f1c27f0000488b5d08ff23f644240801754a4c8b742408498b064d89f641ff76084c8b6c24084d89ee4983fd01750949c7c401000000eb0e4d89f6498b1ee831fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaf584883c408c3f400|@10129,1,@178|235,0,@10089 251,0,@10093 413,0,@9475 472,0,@10104 488,0,@10093 542,0,@9475 601,0,@10106 617,0,@10093 633,0,@10093 649,0,@10093 4997:D4,1232|483b65187306ff5558ca09074989c65341504151415241f6c6010f85f6010000498b0641ff76084c8b304d89f541f6c6010f84ca0100004983fe030f859d000000f60424017409488d64242058c2100041f6c50174734983fd037558ff7008ff70104c8b7424284983fe037505e9a40200004c8b6c24304d89ee4c3b6c24087f05e9900200004d89f64c2b7424087115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c601ff7424104156e96b010000488d64242848b8a820d1f1c27f0000488b5d08ff23488d64242848b8381fd1f1c27f0000488b5d08ff234d89ee41f6c5010f84010100004983fd070f85ae00000041f6c6010f848f0000004983fe077574ff7008488b542418488b0424ff124c8b34244d8b36488d6424084e8d347501000000488b5c2420492bde7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e987feffff488d64242848b80021d1f1c27f0000488b5d08ff23488d64242848b8381fd1f1c27f0000488b5d08ff23488b5424304c8b542438488b5c24084c8b4424204c8b4c2410ff124889c3584c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e914feffff488d64242848b8381fd1f1c27f0000488b5d08ff23488d64242848b8381fd1f1c27f0000488b5d08ff23488d64241858c21000f6442408010f85a00000004c8b742408498b064d89f641ff76084c8b3041f6c60174734983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb3c488b5c2408ff15660200004989c641f6c601751c4d8b26415d4c8924244c896c2408483b65187303ff5558e978ffffff488d64241849c7c601000000eb3d488d64245048b8381fd1f1c27f0000488b5d08ff234d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c4084983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03753f488b54242048b8a0d5d0f1c27f0000ff124c8b2c244983ed014c8b7424184d03f57115488d64243848b8d0c6d0f1c27f0000488b5d08ff234156e9ae000000488d642408ff34244c8b34244983fe017e3f488b54242048b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b5c2428482b1c24488d6424087115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e9fdfbffff4c8b34244983fe017e3f488b54242848b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b5c2448482b5c24187115488d64243848b8d0c6d0f1c27f0000488b5d08ff234883c301482b1c24488d6424087115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488d6424084883c301584c8b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c896424104c896c24184883c408e932fbfffff400|@10128,1,@177,@4996|151,0,@9475 187,0,@10104 208,0,@10093 312,0,@9475 384,0,@10106 405,0,@10093 499,0,@10093 520,0,@10093 700,0,@10093 797,0,@9535 832,0,@9475 878,0,@9557 905,0,@9475 962,0,@9475 1044,0,@9557 1071,0,@9475 1124,0,@9475 1160,0,@9475 4998:D3,24|483b65187305ff5558cd0148c7c029000000c3f400000000|@10070,1,@179| 4999:D4,40|483b65187305ff5558cd0149c7c08d00000048bb2023d1f1c27f0000ff251e000000f40000000000|@10124,1,@180,@4994|20,0,@10122 5000:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc08c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@181,@4931,@5001,@4914|58,0,@9594 72,0,@4624 5001:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@182,@4624| 5002:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc18c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@183,@4931,@5003,@4914|58,0,@9594 72,0,@4625 5003:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@184,@4625| 5004:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc48c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@185,@4931,@5005,@4914|58,0,@9594 72,0,@4628 5005:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@186,@4628| 5006:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc38c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@187,@4931,@5007,@4914|58,0,@9594 72,0,@4627 5007:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@188,@4627| 5008:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc58c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@189,@4931,@5009,@4914|58,0,@9594 72,0,@4629 5009:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@190,@4629| 5010:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc28c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@191,@4931,@5011,@4914|58,0,@9594 72,0,@4626 5011:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@192,@4626| 5012:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4069| 5013:D9,2344|488dbc2440ffffff483b7d187306ff5560ca09015041506a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a0148bad826d1f1c27f00004889d8488b9c24880000004989e0ff1511090000ff3424ff742410ff742420ff742430ff7424404c8b7424504c8b6c24584c8b6424604c8b5c24684c8b5424704c8b4c24784c8b842480000000488bbc2488000000488bb42490000000488b942498000000488b8c24a0000000488b9c24a8000000498d8770ffffff483b45107306ff5550cace7f4989c748c740f81100000048899880000000488948784889507048897068488978604c8940584c8948504c8950484c8958404c8960384c8968304c8970284c8b34244c897020488d6424084c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488da424900000004c8b342441f6c60175454d8b264d8b6e084d8b1c244c3b1df807000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49bec82dd1f1c27f0000eb174d8b364d8b2e4c3b2d970700000f85150700004d8b76104156ff75084c8d35520000004156488965086a016a01488b5c24304c8b4424284989e1ff155c070000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c408415e4c8975084883c418c3488b65084883c408415e4c8975084c8b284d89ee4983fd03751d5a48b8002ed1f1c27f0000ff1248b8402ed1f1c27f0000488b5d08ff234c3b35e10600000f8541030000488b401048bbb0c7d0f1c27f0000ff15bf0600004989c64d8b2e4e8d2c6d010000004983fd01750f49bcd02ed1f1c27f0000e9b30000004d89eb4983c3344c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b154c0600000f87bf0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbd02ed1f1c27f000048c7c135000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c242248d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be002fd1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15700500000f87d60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc002fd1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b24244d8b34244e8d2c75010000004983fd01750f49bea0d5d0f1c27f0000e99f0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158b0400000f87e40000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e0a418066ffbf488b542408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70007000000ff12498d47d8483b45107303ff55504989c748c740f80400000049be282fd1f1c27f00004c8970184c8b34244c897010488d64241049bee816d1f1c27f00004c89700848c700cf000000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff234c8b70084d8b2e4e8d2c6d010000004983fd01750f49bca01bd1f1c27f0000e9b30000004d89eb4983c3164c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15060300000f87bf0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bba01bd1f1c27f000048c7c117000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241348d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be582fd1f1c27f0000e9b60000004d89eb4983c3484c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b152a0200000f87d60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc582fd1f1c27f000048c7c149000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b24244d8b34244e8d2c75010000004983fd01750f49bea0d5d0f1c27f0000e99f0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15450100000f87e40000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e0a418066ffbf488b542408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70007000000ff12498d47d8483b45107303ff55504989c748c740f80400000049be902fd1f1c27f00004c8970184c8b34244c897010488d64241049bee816d1f1c27f00004c89700848c700cf000000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241048b87810d1f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@16591,1,@3060,@4835,@4656,@5022,@4644,@4644,@5014|59,0,@10149 426,0,@10206 582,0,@10208 594,0,@10210 627,0,@9484 663,0,@10213 803,0,@10213 875,0,@10214 1033,0,@10214 1096,0,@9535 1339,0,@10215 1366,0,@10033 1398,0,@9487 1419,0,@9487 1440,0,@9487 1477,0,@10066 1617,0,@10066 1689,0,@10216 1847,0,@10216 1910,0,@9535 2153,0,@10217 2180,0,@10033 2212,0,@9487 2233,0,@9487 2254,0,@9487 2275,0,@9991 5014:D17,1800|483b65187306ff5558ca0d01505341504c8b74240841f6c60175454d8b264d8b6e084d8b1c244c8b52084d3bda75204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49bef026d1f1c27f0000eb134d8b364d8b2e4c8b62084d3bec750d4d8b761041564c8b742410eb15488d64241848b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc606000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bee827d1f1c27f0000eb134d8b364d8b2e4c3b2d65060000750d4d8b761041564c8b742418eb15488d64242048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d2106000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9c40400004d8b364d8b2e4c3b2dbd05000075064d8b7610eb15488d64242848b87810d1f1c27f0000488b5d08ff2341564c8b74242041f6c60175454d8b264d8b6e084d8b1c244c3b1d7905000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9920300004d8b364d8b2e4c3b2d1505000075064d8b7610eb15488d64243048b87810d1f1c27f0000488b5d08ff234156488b54241048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c54c8b74243041f6c60175444d8b1e4d8b66084d8b134c3b15ae04000075204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0060ebb649c7c6010000004983fe01750f49be2028d1f1c27f0000e93e0200004d8b364d8b264c3b254a04000075064d8b7610eb15488d64244048b87810d1f1c27f0000488b5d08ff2349c7c441000000498d5ff0483b5d107306ff5550ca00704989df48c743f801000000c643ff404c892349c7c461000000498d57f0483b55107306ff5550ca08704989d748c742f801000000c642ff404c892249bcd8c8d0f1c27f0000498d4ff0483b4d107306ff5550ca0c704989cf48c741f801000000c641ff404c892149c7c401000000498d77f0483b75107306ff5550ca0e704989f748c746f801000000c646ff404c892649c7c4530000004d8d47f04c3b45107306ff5550ca4e704d89c749c740f80100000041c640ff404d892049c7c4010000004d8d57f04c3b55107306ff5550ca4e714d89d749c742f80100000041c642ff404d89224c8b24244d8d4ff04c3b4d107306ff5550ca4e754d89cf49c741f80100000041c641ff404d8921415c498d7ff0483b7d107306ff5550ca4e774989ff48c747f801000000c647ff404c89274d89eb4d8d67f04c3b65107306ff5550cace6f4d89e749c74424f80100000041c64424ff404d891c244d8d5ff04c3b5d107306ff5550cace774d89df49c743f80100000041c643ff404d892b4c8b6c242049895d0049894d084989551049897518488b7424304989752049897d28488b3c2449897d30488d642408488b7c240849897d38488b3c2449897d40488d6424104d8945484d894d504d8955584c8b14244d895560488d6424104c8b14244d895568488d6424104d895d704d8965784d89b58000000048c7c001000000c341f6c60175444d8b1e4d8b66084d8b134c3b15fa01000075204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0060ebb649c7c6010000004983fe017515488d64244048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b264c3b259001000075094d8b7610e968fdffff488d64244048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d5001000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2de600000075094d8b7610e913fcffff488d64243048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e9e1faffff488d64242848b87810d1f1c27f0000488b5d08ff23f4000000|@10205,1,@201,@4645,@4645,@4631,@4631,@4646,@4646,@4646,@4646,@4631,@4631,@4645,@4645,@4630,@4630|111,0,@10150 156,0,@9991 260,0,@10156 305,0,@9991 409,0,@10158 450,0,@9991 561,0,@10158 602,0,@9991 748,0,@10158 789,0,@9991 887,0,@9493 1429,0,@10198 1474,0,@9991 1583,0,@10198 1628,0,@9991 1737,0,@10198 1782,0,@9991 5015:D3,32|483b65187305ff5558cd0148b80027d1f1c27f0000488b5d08ff23f400000000|@10155,1,@195|13,0,@10151 5016:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10157,1,@196| 5017:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10157,1,@197| 5018:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10157,1,@198| 5019:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10157,1,@199| 5020:D3,32|483b65187305ff5558cd0149be78c0d0f0c27f0000498b16ff22f40000000000|@10097,1,@200|13,0,@4615 5021:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@202| 5022:D23,2648|483b65187306ff5558ca09034989de50415041514c8b6c240841f6c50175464d8b5d004d8b65084d8b134c3b15d70a000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750c49bdc02fd1f1c27f0000eb154d8b6d004d8b65004c3b25730a0000750d4d8b6d1041554c8b6c2410eb15488d64241848b87810d1f1c27f0000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b152f0a000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2028d1f1c27f0000e9a00800004d8b6d004d8b65004c3b25c809000075064d8b6d10eb15488d64242048b87810d1f1c27f0000488b5d08ff23415541ff76504d8b4660498b76704d8b4e58498b8688000000498b9e800000004d8b6e284d8b5e384d8b5648498b4e784d8b6630498b7e68498d57e8483b55107306ff5550cacb7f4989d748c742f8020000004c89720849bed8de51f1c27f00004c89324d8d77904c3b75107306ff5550cacf3f4d89f749c746f80d0000004989466049895e5849894e50498956484989764049897e384d8946304d894e284c8b0c244d894e204d8956184d895e104d8966084d892e41564c8b7424304c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b50104d89d64889c04c8b48484d89cc4d8b124d8b094983f95374054d89caeb004983fa610f85620200004889c04889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15fb060000ff15ed0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1525060000eb004c8b74244041f6c60175454d8b264d8b6e084d8b1c244c3b1dfe05000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bec046d1f1c27f0000eb174d8b364d8b2e4c3b2d9d0500000f85730400004d8b761041564c8b6c24504d8b75104d89ed4d8b65484d8b364d8b24244983fc5374054d89e6eb004983fe61750a488d642408e9370300004983fe010f84280300006a016a016a0148c7c0010000004889e3ff1537050000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424284d89650849bc183452f1c27f00004d8965004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8968084d893048b80847d1f1c27f0000488b5c2450ff15b90400004989c641564c8b7424384983fe03757bff7424404c8b742408498b1e48b83847d1f1c27f000049b8d8c8d0f1c27f000049c7c1214e0000ff15740400004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000488b1424ff12488d642408eb00488b5c24584c8b73184d8b364983fe03752c488d642448415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c410c348ba2881d1f1c27f0000488b04244c8b442428ff15c7030000488b5c24584c8b73184d8b364983fe03755c48bac84bd3f1c27f0000488b442408488b1c24ff15940300004989c6488d6424104d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004c8b7424384d892e49c746080100000048c7c0010000004883c450c36a016a01488b4424104989e0ff15370300005841584c8b7424584d8b76184d8b364983fe03755c48bac84bd3f1c27f0000488b442408488b1c24ff15010300004989c6488d6424104d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004c8b7424384d892e49c746080100000048c7c0010000004883c450c348bac07ed3f1c27f0000488b5c2450ff15a10200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244c89eb4d896e0849bd486a71f1c27f00004d892e415648bac84bd3f1c27f0000488b442410ff15480200004989c64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8934244d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004c8b2c244d892e488d6424184c8b6c24384d8965004d89750848c7c0010000004883c450c3488d6424084d89ed4d8b75184d8b364983fe03752c488d642438415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c410c34d89ed4d8b75284d89ed4d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d20488d6424084d8965184c8b24244d896510488d6424084d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8934244c8b6c242049be30cdd4f1c27f00004d8965004d89750848c7c0010000004883c438c3488d64245048b87810d1f1c27f0000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15a700000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b65004c3b253a00000075094d8b6d10e904f7ffff488d64242048b87810d1f1c27f0000488b5d08ff23f400|@16592,1,@3061,@4639,@4639,@6289,@6432,@6289,@7880,@6289,@5219,@5208,@8646,@5240,@4781,@4781,@5027,@5031,@5030,@4639,@4639,@4644,@4644|116,0,@10218 163,0,@9991 268,0,@10158 311,0,@9991 414,0,@5024 981,0,@10220 991,0,@10221 1166,0,@10223 1189,0,@10226 1300,0,@10368 1468,0,@5044 1516,0,@10370 1565,0,@10372 1575,0,@9493 1701,0,@10542 1738,0,@10811 1781,0,@14099 1912,0,@14099 2004,0,@14470 2070,0,@7847 2085,0,@14099 2233,0,@10542 2440,0,@16588 2475,0,@9991 2585,0,@10198 2632,0,@9991 5023:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@203| 5024:D4,40|483b65187305ff5558cd054c8b7208498b561048c7c001000000ff12ff251e000000f40000000000|@10219,1,@204,@5025| 5025:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@205| 5026:D3,56|483b65187305ff5558cd014883f813720e4883f81b770848c7c003000000c34883f841750848c7c003000000c348c7c001000000c3f40000|@10222,1,@206| 5027:D19,5584|483b65187305ff5558cd0552504c8b34244d89f541ff364d89ed4d89ee41ff75084d89f641ff76104c8b7424184d8b2e4d8b6d004983fd13720b4983fd1b7705e90c1000004983fd410f840210000041554d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b2c244d89ee4983fd5d0f851b070000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b264d89e54983fc5d0f846d02000049be30c9d0f1c27f00004f8b6caefc4d8b75004e8d2475010000004983fc01750f49be0831d1f1c27f0000e9ad0000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15eb1300000f87f20100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb0831d1f1c27f000048c7c121000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1848d1e9f3a4418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff152b130000ff151d1300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12e93a040000488d64242848b8f8c7d0f1c27f0000488b5d08ff234c8b7424184d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b264d89e54983fc5d0f846d02000049be30c9d0f1c27f00004f8b6caefc4d8b75004e8d2475010000004983fc01750f49be2831d1f1c27f0000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15951000000f87f20100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb2831d1f1c27f000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff15cd0f0000ff15bf0f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12e9ec000000488d64242848b8f8c7d0f1c27f0000488b5d08ff234c8b342449c706730000004c8b7424184d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9150900004d89f64d89f54981fefb000000757f488d6424084c8b342449c7065d0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9870800004d89ed4d89ee4981fdf7000000757f488d6424084c8b342449c706410000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9f90700004d89f64d89f54981febf000000757f488d6424084c8b342449c706790000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e96b0700004d89ed4d89ee4981fdbb000000757f488d6424084c8b342449c7065b0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9dd0600004d89f64d89f54981feb7000000757f488d6424084c8b342449c7063f0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e94f0600004d89ed4d89ee4983fd53757f488d6424084c8b342449c7065f0000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9c40500004d89f64d89f54983fe510f859a000000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe55740d4c8b342449c70643000000eb0b488b442418ff15360a0000e91a0500004d89ed4d89ee4983fd59757f488d6424084c8b342449c706170000004c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e98f0400004d89f64d89f54983fe777521488d6424084c8b342449c706610000004c8b74241049c70641000000e9620400004d89ed4d89ee4983fd457529488d6424084c8b742420498b5e08488b442418ff154c0900004c8b342449c70669000000e92d0400004d89f64d89f54983fe470f85c2000000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe4575214c8b742420498b5e08488b442418ff15930800004c8b342449c70611000000eb1f48b8f8d7d0f1c27f000048bb5031d1f1c27f00004c8b442418ff155f080000e95b0300004d89ed4d89ee4981fdfd0000000f8597010000488d6424084c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424104d8b364983fe610f82f20000004983fe730f87e800000048c7c003000000488b5c2418ff15a20700004c8b6c24084d8b65004d8b34244a8d0c75010000004883f901750f49be80e0d0f1c27f0000e98e0000004989cb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e006000077654d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca023c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e41c646087e498d742408498d7e0948d1e9f3a4418066ffbf4d89ed4d897500eb34488d64242848b8f8c7d0f1c27f0000488b5d08ff2348b880e0d0f1c27f000048bb5031d1f1c27f00004c8b442418ff15a5060000e9b10100004d89f64d89f54983fe097515488d6424084c8b342449c70601000000e9900100004d89ed4d89ee4983fd6172254d89f64983fe73771c488d64240848c7c001000000488b5c2418ff154b060000e95f0100004c8b2c244d89ee4981fd8300000072134d89f64981feb50000007707488d642408eb234c8b2c244d89ee4981fdc300000072154d89f64981fef50000007602eb07488d642408eb1b4c8b34244983fe4f740c49c7c629000000e935010000488d64240848b8d8c8d0f1c27f000048bbb831d1f1c27f00004c8b442418ff15bc050000e9d80000004d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e9ffeeffff4c8b34244d8b36488d6424084983fe537515488d642410488b54240858488d642408e9b0eeffff488d64242048c7c001000000c34983fe01750949c7c601000000eb334d89f44983c40e49bd6031d1f1c27f000049d1ec4f0fb66c25004e8d2c6d010000004c3b2c240f85f103000049c7c6030000004983fe037529488d64240848b8d8c8d0f1c27f000048bb5031d1f1c27f00004c8b442418ff1537040000e98c03000048bab0c7d0f1c27f0000488b0424ff15160400004989c6488d6424084d8b2e4e8d2c6d010000004983fd01750f49bcf031d1f1c27f0000e9b30000004d89eb4983c3264c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15760300000f87340300004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbf031d1f1c27f000048c7c127000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee0d7d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b159a0200000f874b0200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e22418066ffbf41564c8b7424204d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff159b010000ff158d0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff124c8b6c24184d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408e9cafbffff488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234d89f54983ed024d89ee483b65187306ff5558ca0040e9b9fbfffff4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10235,1,@209,@5031,@5030,@4837,@5032,@5032,@5036,@5032,@5036,@5032,@5039,@5039,@5041,@5031,@5030,@5031,@5030|383,0,@9496 416,0,@10227 553,0,@10227 807,0,@10221 988,0,@9487 1229,0,@9496 1262,0,@10228 1399,0,@10228 1653,0,@10221 1834,0,@9487 3500,0,@9560 3510,0,@10229 3739,0,@9651 3910,0,@9487 3926,0,@9651 3936,0,@10229 4143,0,@9493 4153,0,@10232 4469,0,@10230 4524,0,@9493 4534,0,@10229 4560,0,@9484 4605,0,@10234 4745,0,@10234 4817,0,@9559 5191,0,@10221 5478,0,@9487 5499,0,@9487 5028:D3,104|483b65187305ff5558cd0149c7c6290000004983fe01750848c7c001000000c34d89f44983c40e49bd6031d1f1c27f000049d1ec4f0fb66c25004e8d2c6d010000004c3be8750848c7c003000000c34d89f54983ed024d89ee483b65187306ff5558ca0140ebabf4|@10231,1,@207|41,0,@10230 5029:D3,120|483b65187305ff5558cd014881f883000000720b4881f8b50000007702eb144881f8c3000000720d4881f8f50000007602eb02eb0e4883f86172104883f8737602eb0848c7c003000000c34883f84f750848c7c003000000c34881f8bf000000750848c7c003000000c348c7c001000000c3f40000000000|@10233,1,@208| 5030:D4,56|483b65187305ff5558cd094989c14989da4d8b314e8d04750100000048c7c30100000048c7c001000000ff2520000000f400000000000000|@10366,1,@222,@5043| 5031:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86032d1f1c27f0000c3f400000000000000|@10239,1,@210|190,0,@10236 247,0,@10237 5032:D8,2272|483b65187306ff5558ca090141504c8b34244d89f541ff364d89ed4d89ee41ff75084d89f64d89f041ff7610ff15e60800004989c641564c8b7424184d8b364983fe5d0f85a20100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b364981fe83000000720b4981feb50000007702eb1b4981fec30000000f82030100004981fef50000007605e9f50000004c8b2c244d8b75004e8d3475010000004983fe017514488d64242048b800d9d0f1c27f0000e9a50000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d940700000f87800000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d642408488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4883c418415848bbb831d1f1c27f0000e936feffff488d64242848b8f8c7d0f1c27f0000488b5d08ff2349c7c529000000e9280100004c8b2c244d89ee4c8b6424104d892c244d89f64d8b264d89e54e8d2465010000004983fc010f8eb60000004d89f64e8d2c6d010000004983fd017f15488d64242848b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676084e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2dae060000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750e488d64240849c7c675000000eb2e48b8c032d1f1c27f0000488b1c24ff15280600004989c6488d6424084983fe01750949c7c631000000eb034d8b364c8b2c244d897500488d64240848c7c0010000004883c418c34983fd01750949c7c501000000eb314d89eb4983c30e49bc6031d1f1c27f000049d1eb4f0fb6241c4e8d2465010000004d3be60f854c05000049c7c5030000004983fd030f85f50000004c8b2c244d8b75004e8d3475010000004983fe017514488d64242048b800d9d0f1c27f0000e9a50000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d190500000f87800000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d642408488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4883c418415848bb5031d1f1c27f0000e9c3fbffff488d64242848b8f8c7d0f1c27f0000488b5d08ff234c8b2c244d8b65004e8d1c65010000004983fb017514488d64242049bc2842d1f1c27f0000e9bf0000004d89da4983c22a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d1c0400000f87d10300004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba2842d1f1c27f000048c7c12b000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241d48d1e9f3a441806424ffbf4883c4184d8b2c244e8d2c6d010000004983fd01750f49ba00d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d340300000f87dc0200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf49bd30c9d0f1c27f00004f8b64b5fc4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b30000004983fb0175084d89d6e9a50000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05500200000f87eb0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff1546010000ff15380100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234d89ec4983ec024d89e5483b65187306ff5558ca0060e960fafffff400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10338,1,@212,@5031,@5030,@4914,@9564,@5034|263,0,@9571 445,0,@10232 465,0,@9487 558,0,@9872 590,0,@9496 641,0,@9564 718,0,@10240 811,0,@10230 890,0,@9571 1072,0,@10229 1092,0,@9487 1135,0,@10337 1275,0,@10337 1359,0,@9571 1530,0,@9496 1964,0,@10221 2144,0,@9487 2165,0,@9487 2186,0,@9487 5033:D4,232|483b65187305ff5558cd054c8b304e8d2c750100000049c7c6010000004983fd01757e4c89f04c8b6a084d89ee4983fd01751048b8a014d1f1c27f0000488b5d08ff2348d1e849d1ee4833d249f7f6488d1c5501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff1574000000a8017401c348b80815d1f1c27f0000488b5d08ff234d89eb4983eb024d89ec4983c40e49d1ec4e0fb624204e8d2465010000004d89f24d6bd2074983ea064f8d6414ff4d89dd4d89e6483b65187306ff5558ca0560e937fffffff400|@10025,1,@211,@4933|53,0,@10019 126,0,@10021 147,0,@10022 5034:D5,96|483b65187306ff5558ca09014989de50498b184d89c14d89f048c7c001000000ff155a0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff251e000000f40000000000|@10339,1,@213,@4836,@5035| 5035:D3,360|483b65187306ff5558ca090353415041514c8b74241041ff36488b542410488b0424ff124989c64983fe030f85290100004c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d64240849be30c9d0f1c27f00004c8b2c2443ff74aefc48c7c001000000488b5c24204c8b4424184c8b4c2410e8d5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64242048c7c001000000c3f4|@10340,1,@214|255,0,@9496 5036:D14,4000|483b65187305ff5558cd0950534c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d89f041ff76584c8b74240849c7063d00000048b8d8c8d0f1c27f000048bbd042d1f1c27f0000ff15ac0f00004989c54c8b6424104d89e64d892c244c8b6c24284983fd030f84320300004c8b6c24184d8b6d004981fdef00000075654d89f64d8b2e4c3b2d670f0000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be30d9d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f85aa0200004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b264d89e54981fcf10000000f85790100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b264d89e54983fc61720d4983fc737707488d642408eb304981fcc300000072104981fccd0000007707488d642408eb174981fc8300000072594981fc8d0000007750488d6424084c8b342449c70687000000488d64240848b80043d1f1c27f000048bb1843d1f1c27f00004c8b442410ff158d0d00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500f10000004c8b24244d892c24488d6424084d89f649c706ef00000048c7c0010000004883c428c34d89f64d89ec4983fd6172564983fd737750488d6424084c8b342449c70687000000488d64240848b85043d1f1c27f000048bbd042d1f1c27f00004c8b442410ff15ad0c00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b24244d892c24488d6424084d89f649c706ef00000048c7c0010000004883c428c34c8b7424184d8b264d89e54981fcf10000000f85b00100004c8b6424104d8b1c244c3b1d140c0000750949c7c403000000eb4b4d8b234e8d2465010000004983fc03753349bc30d9d0f1c27f0000498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85400100004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b2e4d89ec4983fd61720d4983fd737707488d642410eb304981fdc300000072104981fdcd0000007707488d642410eb174981fd8300000072494981fd8d0000007740488d64241048b86843d1f1c27f000048bb1843d1f1c27f00004c8b442410ff15d50a00004989c64c8b2c244d897500488d64240848c7c0010000004883c418c34d89f64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b24244d892c24488d6424084d89f649c706f100000048c7c0010000004883c428c34d89ec4983fd5d7502eb444d89e54981fc8b000000750949c7c603000000eb1c4d89ee4981fecb000000750949c7c603000000eb0749c7c6010000004983fe03740d488d64243048c7c001000000c34c8b7424184d8b364983fe5d0f851e0500004c8b74240849c706570000004c8b6c24104d8b5d004d8b334e8d2475010000004983fc01750f49be00d9d0f1c27f0000e99b0000004d89e24983c2024c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0c45010000004c3b0d5e0900000f879e0400004d89c84e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983e9024bc7448efc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049d1ec43c604262e418066ffbf4d89ed4d8975004c8b6c24204d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b7424184d8b2e4983fd6172184983fd73770949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f84660300004c8b6c24104d8b6d004d8b65004e8d2465010000004983fc01750f49ba8043d1f1c27f0000e9ad0000004d89e34983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0de90700000f87f10200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a49bb8043d1f1c27f000048c7c12f000000498d7308498d7a0848d1e9f3a44c89e1498d7508498d7a1f48d1e9f3a4418062ffbf4d89f64d8b2e49be30c9d0f1c27f00004f8b64aefc4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b30000004983fb0175084d89d6e9a50000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ee0600000f87e90100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424284d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424284d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff15ec050000ff15de0500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24204d8b75184d89ed498b556049c70603000000ff12eb53488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234c8b742410498b0648bbd042d1f1c27f00004c8b442420ff15f80400004989c64c8b6c24104d897500eb15488d64243048b8f8c7d0f1c27f0000488b5d08ff234c8b7424184d8b264d89e54981fc8b0000007502eb2f4d89ee4981fecb000000750949c7c603000000eb0749c7c6010000004983fe03740d488d64243048c7c001000000c34c8b74241841ff364c8b6c24284d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b6c24204d8b65004d89e64981fcfd0000000f85290200004c8b6c24284d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b6c24204d8b65004d89e64983fc610f82320100004983fc730f8728010000488d6424104c8b342449c70657000000488d6424084c8b34244d8b2e4d8b75004e8d3475010000004983fe01750f48b8a843d1f1c27f0000e9a50000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc60200000f87a00000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c604284549d1ee42c64430017e8060ffbf48bbd042d1f1c27f00004c8b442410ff157c0200004989c64c8b2c244d897500488d64240848c7c0010000004883c418c3488d64242048b8f8c7d0f1c27f0000488b5d08ff234d89ed4d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706fd0000004c8b6424084d8934244c8b34244d89ed4d897500488d64241048c7c0010000004883c428c34d89ed4d89f44983fe610f82260100004983fe730f871c010000488d6424104c8b342449c70657000000488d6424084c8b34244d8b2e4d8b75004e8d3475010000004983fe01750f48b828dbd0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d050100000f87940000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430458060ffbf48bbd042d1f1c27f00004c8b442410ff15c70000004989c64c8b2c244d897500488d64240848c7c0010000004883c418c3488d64242048b8f8c7d0f1c27f0000488b5d08ff234d89ed4d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c8b6424084d8934244c8b34244d89ed4d897500488d64241048c7c0010000004883c428c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10350,1,@217,@5034,@5034,@5034,@5031,@5030,@5034,@9573,@5034,@5034,@9573,@5034|68,0,@9493 78,0,@10341 184,0,@9573 590,0,@10343 600,0,@10344 806,0,@10346 816,0,@10341 1010,0,@9573 1262,0,@10347 1272,0,@10344 1533,0,@9571 1898,0,@10348 2035,0,@10348 2092,0,@9496 2526,0,@10221 2704,0,@9487 2725,0,@9487 2749,0,@10341 2789,0,@9487 3197,0,@10349 3377,0,@10341 3431,0,@9487 3638,0,@9594 3806,0,@10341 3860,0,@9487 5037:D3,48|483b65187305ff5558cd014883f86172164883f873770848c7c003000000c348c7c001000000c348c7c001000000c3f4|@10342,1,@215| 5038:D3,104|483b65187305ff5558cd014883f861720e4883f873770848c7c003000000c34881f8c300000072114881f8cd000000770848c7c003000000c34881f88300000072194881f88d000000770848c7c003000000c348c7c001000000c348c7c001000000c3f400000000|@10345,1,@216| 5039:D6,1072|483b65187305ff5558cd0950534c8b6c24084d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408ff75084c8d353100000041564889650848c7c001000000488b5c24184c8b4424284c8b4c2420ff15a10300004989c649c7c401000000e9a7010000488b65084883c408415e4c8975084c8b304c3b7424100f8580010000488d6424184c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8e843d1f1c27f000048bb4830d1f1c27f0000ff158d020000ff157f0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d642420488b5d08ff2341f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd41f6c40175104d8b1c2449c7c5010000004d89e6eb2949bed8c8d0f1c27f00004c8b6c24104d89750048c7c0010000004883c408415e4c8975084883c420c341f6c60175314d8b4e084d89ea4983c202711048b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc94983fd010f8ca20000004983fd03751449be30c9d0f1c27f00004f8b749efce9d40000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db5000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe9adfefffff400000000ffffffffffffff01|@10359,1,@218,@5031,@5030,@5040|427,0,@10351 437,0,@10221 712,0,@9493 772,0,@9475 824,0,@9496 964,0,@9487 980,0,@9490 5040:D9,3984|483b65187306ff5558ca09035053415041514c8b74241041ff364c8b34244d89f54981feb90000000f85a2020000488d6424084c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b74241041ff364c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b2c244d89ee4983fd1372134d89f64983fe1b770a488d642408e99c0100004c8b34244d89f54983fe410f84860100004d89ed4d89ee4981fdbd0000000f8507010000488d6424084c8b74241041ff364c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d89750849c74500b90000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706bd000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408488b5c24104c8b4424084159488d642418e9a6fdffff4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424204d89650849c74500b9000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084d89f64c8930488d642408488b5c24104c8b4424084159488d642418e93afdffff488d642408e9c50600004d89ed4d89ee4983fd150f851f010000488d6424084c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408498d47d8483b45107303ff55504989c748c740f80400000049be2044d1f1c27f00004c89701848c740100100000049be5044d1f1c27f00004c8970084c8b34244c8930488d642408488b5d08ff234d89f64983fe450f85d1000000488d6424104c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b2c244d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642418eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d64241858c34c8b6c24104d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d6424084c8b34244d89f54983fe097553488d642408498d47d8483b45107303ff55504989c748c740f80400000049be7044d1f1c27f00004c89701848c740100100000049be5044d1f1c27f00004c8970084c8b34244c8930488d642408488b5d08ff234d89ed4d89ee4983fd4372114d89f64981fefd0000007705e98e0300004c8b34244c89f04983fe410f847d03000048bab0c7d0f1c27f0000ff15eb0900004989c6488d6424084d8b2e4e8d2c6d010000004983fd01750f49bca044d1f1c27f0000e9b30000004d89eb4983c32c4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b154b0900000f87fa0200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bba044d1f1c27f000048c7c12d000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241e48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bec844d1f1c27f0000e9b60000004d89eb4983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b156f0800000f87110200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bcc844d1f1c27f000048c7c121000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424104d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424104d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff1556070000ff15480700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12488b442418488b5c24104c8b4424084159488d642418e9d8f6ffff488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c8970084c8b34244c8930488d642408488b5c24104c8b4424084159488d642418e96bf6ffff4c8b7424084d8b2e4d8b6d004983fd13720b4983fd1b7705e9940300004983fd410f848a0300004d89ee4981feb90000007505e9160500004c8b7424104d8b2e49be30c9d0f1c27f00004b8b44aefc48bbb0c7d0f1c27f0000ff15c40500004989c64d8b2e4e8d2c6d010000004983fd01750f49bce844d1f1c27f0000e9b30000004d89eb4983c32a4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15310500000f87e40200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbe844d1f1c27f000048c7c12b000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241d48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be1045d1f1c27f0000e9b60000004d89eb4983c3164c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15550400000f87fb0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc1045d1f1c27f000048c7c117000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424104d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424104d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156488b44240848bb4830d1f1c27f0000ff1534030000ff15260300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424104c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12e902010000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff234d89f64d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e977fbffff4c8b7424104d8b2e4d89ec4981fdb90000000f84ad0000004d89e54983fc45741f4d89ee4983fe09750949c7c603000000eb0749c7c6010000004983f602eb0749c7c6010000004983fe0375784c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408483b65187303ff5558e93bffffff4c8b6c24084d89ee41ff75004d89f6498b56204d89f64d8b66584d8b2c2441f6c501751b4d8b75004d8b6d084d892c244c8b2c244d897500488d642408eb2b48c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b364c8b2c244d897500488d642408488b442418488b5c24104c8b4424084159488d642418e998f0fffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10360,1,@219,@5031,@5030,@4835,@5031,@5030,@4837|971,0,@10352 993,0,@10353 1395,0,@10354 1417,0,@10353 1495,0,@9484 1536,0,@10355 1676,0,@10355 1748,0,@10356 1906,0,@10356 2148,0,@10221 2351,0,@9487 2372,0,@9487 2519,0,@9496 2534,0,@9484 2570,0,@10357 2710,0,@10357 2782,0,@10358 2940,0,@10358 3182,0,@10221 3363,0,@9487 3384,0,@9487 5041:D4,64|483b65187305ff5558cd01ff30488b58204989c048c7c001000000ff15370000004989c64c8b2c244d897500488d64240848c7c001000000c3f4000000000000|@10362,1,@220,@5042| 5042:D5,720|483b65187306ff5558ca0901534150488b54240848c7c001000000ff124989c64983fe01750949c7c609000000eb034d8b3641564c8b34244983fe090f85e20100004c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b89045d1f1c27f000048bb4830d1f1c27f0000ff156e010000ff15600100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff1258488d642410c3488b54241048c7c001000000ff124989c64983fe01750949c7c509000000eb034d8b2e4c8b24244d89e64983fc55752a4983fd537524488d6424105a48c7c001000000ff124989c64983fe01750848c7c009000000c3498b06c34d89f64983fe5175314983fd55752b48c7c001000000488b5c24104c8b442408e85dfdffff4989c54c892c24483b65187303ff5558e97cfdffff4c892c24483b65187303ff5558e96afdfffff40000000000|@10363,1,@221,@5031,@5030|362,0,@10361 372,0,@10221 5043:D3,1368|483b65187306ff5558ca090750534150415141524c8b6c24184d89ee4c3b6c24100f85e0010000488d6424084c8b6424184d89e54c89f14d3be6750d488d64242048c7c001000000c34889c94d89eb492bcd7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b2c244d8b65004d89e64e8d1465010000004d89db4d89dc4983fb010f8c620100004883f9010f8c430100004d89e44d89e34d8d640cff4d3be27615488d64242048b82046d1f1c27f0000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb017512493bce750d4d89ee488d642420e9b90000004883f9017514488d64242049bed8c8d0f1c27f0000e99f0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d250400000f87970000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500488d642408498d7e0848d1e9f3a4418066ffbf4883c418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8e0c2d0f1c27f0000488b5d08ff23488d64242048b8e0c2d0f1c27f0000488b5d08ff23488b14244d89f64d89f44983fe017d0a488d642428e9160300004c8b7424084d8b2e4e8d1c6d010000004d89e44d89e54d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84dc0200004d89ed4983c51049d1ed4d89f64f0fb6342e4a8d047501000000ff124989c64983fe030f85780200004c8b6c24204d89ee4c3b6c24187557488b5c24184889d84883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234889c04883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424104c8b4c2408415a488d642420e91bfdffff488b4c24184889cb4d89f3492bce7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b6c24084d8b65004d89e64e8d1465010000004d89db4d89dc4983fb010f8cb00100004883f9010f8c910100004d89e44d89e34d8d640cff4d3be27615488d64242848b82046d1f1c27f0000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb01750d493bce75084d89eee9ab0000004883f901750f49bed8c8d0f1c27f0000e9960000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d850100000f87ef0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500498d7e0848d1e9f3a4418066ffbf41564889db4889d84883c3027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234889c04883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b4424184c8b4c24104c8b542408e87bfbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c410c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488b5c24184883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424204c8b4424104c8b4c2408415a488d642420e9cefaffff488d64242848b8a8f8d0f1c27f0000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@10367,1,@223|91,0,@9475 177,0,@10364 245,0,@9493 463,0,@9487 484,0,@9446 505,0,@9446 675,0,@9475 705,0,@9475 764,0,@9475 851,0,@10364 909,0,@9493 1093,0,@9475 1123,0,@9475 1215,0,@9487 1236,0,@9446 1257,0,@9446 1289,0,@9475 1337,0,@9872 5044:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@224| 5045:D3,48|483b65187305ff5558cd014883f861750848c7c003000000c34883f801750848c7c003000000c348c7c001000000c3f4|@10371,1,@225| 5046:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10809,1,@397,@5047| 5047:D6,448|483b65187305ff5558cd094883fb017f0b48b84847d1f1c27f0000c34c8b284d89ee4983fd010f85bf0000004c8b70084989d94c89f348b87847d1f1c27f000049b86841d1f1c27f0000ff15980100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4880d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34983fe030f85bf0000004c8b70084989d94c89f348b86080d1f1c27f000049b86841d1f1c27f0000ff15c70000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb080d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488b4008ff251a000000f400|@10810,1,@398,@5204,@5208,@5208|19,0,@10373 56,0,@10375 66,0,@10329 116,0,@10236 161,0,@10805 257,0,@10806 267,0,@10329 317,0,@10236 362,0,@10808 5048:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10382,1,@226,@5049| 5049:D9,1768|483b65187305ff5558cd09534c8b304d8b1e4d8b76104c8b68084c8b50184c8b60306a016a014983fc03756e4d8b65004983fc0575644d8b4d084d8b294d8b61084d8b4110498b79184d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89214d8d67f04c3b65107306ff5550ca006e4d89e749c74424f8010000004d890c244c8924244c896c2408eb0d48c70424010000004c896c2408ff3424ff7424104d8b2a4e8d2c6d010000004983fd01750f49bc70d8d0f1c27f0000e9a00000004d89e94983c1024c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05e20500000f87ba0500004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89e9498d7208498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000700000041554c3b1d8a0500007502eb374d8b234d89e54e8d2465010000004983fc01752f49bcd8c8d0f1c27f0000498d7308498d7c240848c7c100000000483bc9f3a67402eb0c49c7c501000000e91c0100004e8d246d010000004983fc01750f49bd8847d1f1c27f0000e9a90000004d89e24983c2044c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0da60400000f87710400004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c4104d89e349d1eb43c6441d002049d1ec43c64425013a418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049bba047d1f1c27f00004d895d084d8965004155488b5c24304883eb027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c89f0ff15f40300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017504415deb12488b0424ff15af0300004989c5488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004156f6442418010f85fc0000004c8b7424184d8b36498b064d8b76084983fe03750c49bdd847d1f1c27f0000eb0a49bd8847d1f1c27f00004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c24384883eb027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23ff15db0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb0749c7c6010000004156488b5c24384883eb027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488b442418ff151c0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf047d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017504415eeb12488b0424ff15520100004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be0848d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@10789,1,@377,@5201,@5202,@5050,@5215,@5050,@9493|193,0,@9565 440,0,@9493 501,0,@10376 753,0,@10377 789,0,@9475 979,0,@10379 991,0,@10376 1057,0,@9475 1151,0,@10236 1235,0,@9475 1334,0,@10236 1379,0,@10380 1423,0,@10236 1495,0,@10381 1583,0,@10236 1712,0,@9487 1733,0,@9487 5050:D11,1128|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84847d1f1c27f0000c34c8b284d89ee4983fd050f852e0300004c8b7008498b460841ff761041ff761841ff76204c89cbe8abffffff4989c6415648c7c001000000ff15510400004989c048ba6848d1f1c27f0000488b442410488b5c2420ff152c0400004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060700000041564c8b7424304983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488b442420ff15c80300004989c6415648c7c001000000ff15ae0300004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15790300004989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff157e0200004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486dd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd606dd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c34983fe010f85c4000000488b580848b8786dd1f1c27f000049b8d8c8d0f1c27f0000ff15f9000000488d642408ff15e60000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc07dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3488d6424084c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@10804,1,@393,@5217,@5183,@5216,@5057,@5149,@5148,@5051,@5149|32,0,@10373 108,0,@10383 199,0,@9475 247,0,@10384 266,0,@10385 367,0,@10236 411,0,@10380 456,0,@10236 571,0,@10236 616,0,@10655 660,0,@10236 705,0,@10656 749,0,@10236 887,0,@10657 897,0,@9493 958,0,@10236 1003,0,@10788 5051:D5,408|483b65187306ff5558ca0d014d89c6a8010f85780100004c8b204c8b68084983fd01757d4d8b2c244d8b642408498d47e0483b45107306ff5550ca0c704989c748c740f8030000004c8960104c89680848c7000d000000488b52084d89f049b9e048d1f1c27f000049c7c201000000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000049bd4849d1f1c27f00004c8968084c8930c34883fb037f0b48b86049d1f1c27f0000c34c8b42084d89f14887c3ff15f6000000ff15e80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bd4849d1f1c27f00004c8968084c8930c348c7c001000000c3f4|@10400,1,@229,@5055,@5054|96,0,@10385 145,0,@10389 169,0,@10390 236,0,@10391 280,0,@10392 383,0,@10389 5052:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10388,1,@227| 5053:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10388,1,@228| 5054:D4,496|483b65187306ff5558ca09035053415041514c8b7424184c89f34983fe017f10488d64242048b86049d1f1c27f0000c3f644241001740d488d64242048c7c001000000c3f6442410010f85850100004c8b7424104d8b2e4d8b75004d8b6d08498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700848c7000d000000488b5424084c8b042449b9e048d1f1c27f000049c7c201000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb049d1f1c27f00004d8966084d892e4156f6442418010f85de0000004c8b6c24184d8b75084c89f341f6c601740c48c7c301000000e99400000041f6c5010f85a1000000488b4424204883e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424104c8b4c2408e8c8feffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec849d1f1c27f00004c89334883fb017506584883c420c3584883c420ff255e000000488d64242848b8e049d1f1c27f0000488b5d08ff23488d64242848b8e049d1f1c27f0000488b5d08ff23488d64242048b8504ad1f1c27f0000488b5d08ff23f4000000000000|@10403,1,@231,@5056|39,0,@10390 148,0,@10385 197,0,@10393 283,0,@9475 348,0,@10236 392,0,@10394 433,0,@10395 454,0,@10395 475,0,@10398 5055:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d84ad1f1c27f0000c3f4000000|@10402,1,@230|75,0,@10401 5056:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@232| 5057:D4,136|483b65187306ff5558ca0d074989d64c89c14c89ca4c89d6505341ff7608498b5e10498b46184d8b6e204d8b66284d8b5e304d8b56384d8b4e404d8b4648498b7e504151415057565251ff7424484989d94c8b442438488b5c24404c895424384989c2488b4424484c895c24404c896424484c896c2450ff2523000000488d642418f40000000000|@10436,1,@236,@5058| 5058:D22,5336|483b65187306ff5558ca090753415041514152ff15671500004989c64d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e93d000000909090e947000000909090e9bf030000909090e974050000909090e999050000909090e99b080000909090488d64242048b8484bd1f1c27f0000c25000488d64242048b8784bd1f1c27f0000c25000498b460841ff76104c8b7424204983fe017f12488d64242848b84847d1f1c27f0000c25000ff15c31400004c8b304983fe050f852e0100004c8b7424204c89f34983fe037f0f49be4847d1f1c27f0000e90f0100004889db4883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524c8b4424684c8b4c24604c8b542458e8acfeffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb7a488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524c8b4424684c8b4c24604c8b542458e899fdffff4989c64156488b5c24284883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b5424384156415541544153415241514150575652488b4424584c8b4424704c8b4c24684c8b542460e815fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda84bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c2500041ff760841ff76104c8b6c24284983fd017f12488d64243048b84847d1f1c27f0000c250004c89f0ff15381100004989c64983fe030f85d2000000488d642408488b0424ff15141100004889c1488d6424084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438488b742430488b542428ff742408ff74240841564155415441534152415141505756524989c848b8a0d8d0f1c27f0000488b5c247849b9c04bd1f1c27f00004c8b542470ff15921000004989c6488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c25000488b44240848bbd04bd1f1c27f0000ff152c1000004889c3488b4c24284883e9027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b542438ff74241041564155415441534152415141505756524889c849b8c04bd1f1c27f00004c8b4c24784c8b542470ff159a0f00004989c66a016a014c8b6c2410e9af0d00004d8b76084983fe017512488d64242048b8784bd1f1c27f0000c250004c8b6c24104d8b6d004d89f4e98208000041ff7608498b461041ff76184c8b34244d8b6e184d8b5d084d89dc4d8b1b4983fb0375294d89e54d8b6d084c8b6424504d3bec750949c7c503000000eb0749c7c5010000004983fd037502eb064d89f6498b0649c7c6010000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049be604cd1f1c27f00004d8975006a016a014c8b4c24584c8b742450415648c7c3010000004c8d4424084c8b542418ff15a10e0000ff3424ff7424104c8b34244983fe017510488d642408415e4883c410e9750100004c8b7424204d8b76184c8b6c246841f6c50175454d8b66084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751e4c8b642468498b14244d89ee498b4618ff124989c64d8b7610498b06eb074d8b7610498b06483b05110e00007502eb334c8b304e8d3475010000004983fe01757449bed8c8d0f1c27f0000488d7008498d7e0848c7c100000000483bc9f3a67402eb524c8b34244983fe03488d64240875384d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bd98dad0f1c27f00004d892e4883c410eb06415e4883c410e9850000006a016a014c8b4c24784c8b742470415648c7c3010000004c8d4424084c8b542438ff15590d0000415e415d4983fd017507488d642420eb4d4c8b34244983fe03488d64240875384d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bd98dad0f1c27f00004d892e4883c410eb06415e4883c41041f6c601755041ff36498b46084883f8017504415ceb3dff15d60c00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff159a0c00004989c4eb0a49bcd8c8d0f1c27f00004c8b34244d8b6e184d8b55084d89d34d8b124983fa0375384d89dd4d8b6d084c8b5c24504d3beb750949c7c503000000eb0749c7c5010000004983fd037511488d64240849c7c501000000e9fc0100004d89f64d8b7610488d642408e9150100004d8b6e084d8b7610498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284d8b75004d8b2e4983fd037538488d642420488b542408ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c250004156ff742420ff742420488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c244048894c24404889542448488974245048897c24584c894424604c8b04244c894c24684989d9488b5c24084c895424704989c2488b4424104c895c24784c89a424800000004c89ac24880000004883c438e9f2f5ffff488d64243841f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004156f6442408010f85ef0200004c8b742408498b064d89f641ff7608ff158c0900004989c64156f6442408010f84e3000000488b0424ff156a0900004989c64983fe03750949c7c603000000eb1d4c8b34244d8b364983fe05750949c7c603000000eb0749c7c6010000004983f6024983fe030f8595000000488b5c24384883eb027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484156415541544153415241514150575652488b4424504c8b8424800000004c8b4c24784c8b542470e88df3ffff4989c5488d642410e929010000488d642410eb05488d6424104c8b7424284c89f34983fe037f0f49bd4847d1f1c27f0000e9000100004889db4883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b542438ff742418ff742418415641554154415341524151415057565248b8d0d8d0f1c27f00004c8b44246849b9c04bd1f1c27f00004c8b942480000000ff15d4070000ff15c60700004889c34883fb01750c49beb04ed1f1c27f0000eb1348b8b04ed1f1c27f0000ff15990700004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c428c25000584883c428c250004983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752d4c8b6c24104d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9790200004d89f54983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b5c24084d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d896500e9ef0100004d89f5eb144d89e5483b65187306ff5558ca0060e960ffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375624d89d34d8b53084c8b5c24704d3bda750949c7c303000000eb0749c7c3010000004983fb03753b49c7c5030000004983fd0375294c8b6424684d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e94e0100004d89f5eb144d89e5483b65187306ff5558ca0060e95fffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375624d89d34d8b53084c8b5c24604d3bda750949c7c303000000eb0749c7c3010000004983fb03753b49c7c5030000004983fd0375294c8b6424584d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9ad0000004d89f5eb144d89e5483b65187306ff5558ca0060e95fffffff4983fd01750949c7c501000000eb524d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85a50100004d89d34d8b53084c8b5c24504d3bda750949c7c303000000eb0749c7c3010000004983fb030f857a01000049c7c5030000004983fd0375264c8b6424484d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c5010000004983fd017552488d6424204c89f0ff15c20200004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c250004d8b65004d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004156ff742420ff742420488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c244048894c24404889542448488974245048897c24584c894424604c8b04244c894c24684989d9488b5c24084c895424704989c2488b4424104c895c24784c89a424800000004c89ac24880000004883c438e9a3ecffff488d6424384d89e5483b65187306ff5558ca0060e918feffff4d8b65004983fc010f85340100004d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd037511488d64243049bc68e0d0f1c27f0000eb34488d6424084c8b2c244983fd01488d6424087511488d64242049bcc84ed1f1c27f0000eb0f488d64242049bce04ed1f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f5eb0c4c89f0ff15a80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf84ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c250004d8b65084d8b24244d89e5483b65187306ff5558ca0060e9a2fefffff4000000|@10437,1,@237,@5063,@5064,@5065,@5066,@5067,@5068,@5062,@4836,@5069,@5070,@9493,@5070,@5116,@5119,@5067,@5122,@5068,@5062,@5062|109,0,@10404 127,0,@10406 164,0,@10373 210,0,@10373 239,0,@9475 372,0,@10401 420,0,@10392 514,0,@9475 638,0,@9475 821,0,@10378 866,0,@10408 910,0,@10378 1060,0,@10373 1196,0,@9567 1211,0,@10409 1310,0,@10410 1345,0,@9475 1438,0,@10409 1496,0,@10406 1652,0,@10413 1862,0,@9493 1948,0,@9588 2086,0,@9588 2197,0,@9493 3069,0,@9475 3228,0,@10373 3257,0,@9475 3351,0,@9569 3366,0,@10409 3405,0,@10432 3417,0,@10432 3579,0,@10236 5033,0,@9650 5070,0,@10433 5087,0,@10434 5228,0,@10435 5059:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb85f52f1c27f00004c8930c3f400000000|@10412,1,@234|47,0,@5060 5060:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@10411,1,@233| 5061:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8884cd1f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8984dd1f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8184ed1f1c27f0000c3f400000000|@10431,1,@235|26,0,@10414 49,0,@10415 69,0,@10414 86,0,@10423 103,0,@10414 114,0,@10427 5062:D4,696|483b65187305ff5558cd0150488b04244c8b304983fe0d757b4889c04989c6ff70084d89f641ff76104c8b74240841ff36488b0424e8c6ffffff4c8b34244c3bf0488d6424087502eb084c8b7424084989064c8b304d89f54983fe097507488d64241058c34d89ee4983fd0775134c8b7008ff701049c7c5010000004d89f4eb1c488d6424104983fe03750258c3488d642408c34889c0488d642408c341f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0170ebc36a016a014c8b6424104d8b1c244983fb0175234d8b5c24084d8b6424104c891c244c89642408415b488d64240849c7c401000000eb194d8b5c24084d8b1b4d89dc483b65187306ff5558ca0170ebba41f6c30175364d8b4b084d89e24983c2027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0178ebc44d3bec750e6a016a014c8b742410e9eb0000006a016a014c8b6c24104d8b65004983fc01756b4d8b65084d8b6d104c8924244c896c240858488d6424084c89f34c8b442408ff15200100004989c44d8d77e04c3b75107306ff5550ca00104d89f749c746f8030000004c8b1c244d89dd4d895e104d89660849c706070000004c8b6424104d8934246a016a014d89edeb1c4d8b65084d8b24244d89e5483b65187306ff5558ca0060e96fffffff4d8b65004983fc01752e4d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd037509488d6424204c89f0c3488d64241858c34d8b65084d8b24244d89e5483b65187306ff5558ca0060ebaf4d8b2e4983fd01752b4d8b6e084d8b76104c892c244c89742408488d642408415e4983fe037506488d642420c3488d64241858c34d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebb3f400000000000000|@10491,1,@298,@5123|184,0,@9475 323,0,@9475 5063:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@238| 5064:D3,960|483b65187305ff5558cd01a801751c4c8b30488b40084883f80175094d8b6e10e9050200004d8b6e10eb0848c7c001000000c341f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca01484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0160ebb749c7c50100000041f6c501757f4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375594d89e54d8b6d084d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500eb0749c7c5010000004d8b264d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004156e85efeffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be684fd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c341f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb749c7c50100000041f6c501757f4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375594d89e54d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500eb0749c7c5010000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f4000000000000|@10439,1,@239|454,0,@10438 499,0,@10391 5065:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@240| 5066:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@241|75,0,@10440 5067:D10,2024|483b65187306ff5558ca090750534151415241f6c0010f85b5070000498b0041ff70084c8b34244983fe010f85b4020000488d642408ff15f40700004989c641564c8b7424204c3b35db0700007502eb444c8b7424204d8b364e8d3475010000004983fe030f85d301000049bea0d8d0f1c27f00004c8b6c2420498d7508498d7e0848c7c101000000483bc9f3a67405e9a90100004c8b34244d8b364983fe057502eb18488b0424ff15720700004989c64983fe037405e9820100004c8b7424184983fe037f14488d64242849be4847d1f1c27f0000e93a0100004c8b7424184983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b4c2418488b9c2490000000488b8424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b54243841564155415441534152415141505756524989c24989d94889ca488b442458488b5c24504c8b442460ff124989c5488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004883c410498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c26000488b4c2410488b9c2488000000488b8424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b54243041564155415441534152415141505756524989c24989d94889ca488b442450488b5c24684c8b442458ff124989c6488d642420498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c260004c8b7424184983fe017f12488d64242848b86049d1f1c27f0000c26000ff15100500004989c641564c8b7424284c3b35f70400007502eb444c8b7424284d8b364e8d3475010000004983fe030f85ab01000049bea0d8d0f1c27f00004c8b6c2428498d7508498d7e0848c7c101000000483bc9f3a67405e9810100004c8b34244d8b364983fe057502eb18488b0424ff158e0400004989c64983fe037405e95a0100004c8b7424204983fe037f14488d64240849be4847d1f1c27f0000e9390100004c8b7424204983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488b4c2420488b9c2498000000488b8424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b54244041564155415441534152415141505756524989c24989d94889ca488b442458488b5c24504c8b442468ff124989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb7d488b4c2418488b9c2490000000488b8424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440488b54243841564155415441534152415141505756524989c24989d94889ca488b442450488b5c24704c8b442460ff124989c6488d6424084c8b6c24204c3b2d95020000750949c7c403000000eb564c8b6c24204d8b6d004e8d2c6d010000004983fd03753849bdd0d8d0f1c27f00004c8b642420498d742408498d7d0848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b4424204883e8027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b542448488b4c2440488b5c2438415641554154415341524151415057565251534889c3488b8424880000004c8b4424684c8b4c24784c8b542470e88ef8ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424184c89304883c410c26000488d64242048c7c001000000c26000f400000000000000|@10441,1,@242,@9569,@5068,@9567,@5062,@5068,@9567,@5062|109,0,@9567 206,0,@10373 239,0,@9475 407,0,@10401 455,0,@10392 759,0,@10390 825,0,@9567 922,0,@10373 955,0,@9475 1126,0,@10401 1174,0,@10392 1423,0,@9569 1773,0,@9475 1942,0,@10236 5068:D4,408|483b65187305ff5558cd014c8b304983fe0775444c8b68084d89ee41f6c50175204d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd03750a4c8b68106a016a01eb0848c7c001000000c34d8b65004983fc01752c4d8b65084d8b6d104c8924244c896c2408488d642408415d4983fd0375066a034156eb2148c7c001000000c34d8b65084d8b24244d89e5483b65187306ff5558ca0060ebb1f60424010f85cc0000004c8b2c244d8b75004d89ed41ff750841ff3648bae81cd1f1c27f0000488b44241848c7c303000000ff15c90000004989c54c8b34244d89f44d3bf57507488d642408eb424d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375584d89e4498d742408488d642408498d7d08483bc9f3a67407488d642418eb3e4c8b6c24104983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23415c4c8924244c896c2408483b65187303ff5558e937ffffff488d64242048c7c001000000c3488d64241048c7c003000000c3f40000000000|@10442,1,@243,@4983|205,0,@10077 337,0,@9475 5069:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be00d9d0f1c27f00004c8930c348c7c001000000c3f40000|@10443,1,@244|105,0,@9571 5070:D6,432|483b65187306ff5558ca090753415041514152483b05be0100007507488d642410eb384c8b304e8d3475010000004983fe01754749bed8c8d0f1c27f0000488d7008498d7e0848c7c100000000483bc9f3a67402eb25488d642410415e4c8b2c244d892e488d64240849c746080500000048c7c001000000c208006a016a014889e3ff1548010000ff34244c8b6c24104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424304d8966084d892e4156488b442448488b1c244c8b4424284c8b4c2420ff15f60000004989c64983fe05752d488b4424085b488d6424084c8b4424204c8b4c24184c8b5424104c8b6c24384c896c24384883c430e9f8feffff4983fe0375766a016a014c8b7424584156488b442420488b5c24184c8d4424084c8b4c24404c8b542438e8c9feffff415d415e488d6424104983fe01751e488d642420415c4d892c244d8974240848c7c0010000004883c408c20800488d642420415e4d892e49c746080300000048c7c0010000004883c408c208004c8b7424304c8b2c244d892e488d64240849c746080100000048c7c0010000004883c438c20800f400000000|@10444,1,@245,@5072,@5071,@9493|54,0,@9493 5071:D3,856|483b65187305ff5558cd094c8b304e8d1c75010000006a016a014d89dc4983fc0175634d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f8030000004989451049c74508010000004d8965004d8d77e04c3b75107306ff5550ca09284d89f749c746f803000000498946104d895e0849c706010000004c892c244c89742408e9990000004d89e64983c60e49d1ee4e0fb634304e8d3475010000004983fe5d741b4d89e64983ee024d89f4483b65187306ff5558ca0918e95fffffff4d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f803000000498945104d89650849c74500010000004d2bdc4983c3014d8d77e04c3b75107306ff5550ca09384d89f749c746f803000000498946104d895e084d89264c892c244c89742408415d415e4d8b5d084d89dc4983fb01751949bed8c8d0f1c27f00004c89334889430848c7c001000000c34d8b5d004d8b6d106a016a016a014983fc037d144c891c2448c7442408010000004c896c2410eb124983ec024c891c244c896424084c896c2410415b59415c4d8b2c244e8d2c6d010000004983fb01750d493bcd75084d89e5e9a50000004883f901750f49bdd8c8d0f1c27f0000e9900000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156b0100000f874a0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a5c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4b8d341c498d7d0848d1e9f3a4418065ffbf4d8b1e498b4e084d8b66104d8b34244e8d3475010000004983fb01750d493bce75084d89e6e9a00000004883f901750f49bed8c8d0f1c27f0000e98b0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b1594000000776f4d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a3c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc000000004989ca49d1ea4d89164983c31049d1eb4b8d341c498d7e0848d1e9f3a4418066ffbf4c892b4c89730848c7c001000000c348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@10483,1,@290|306,0,@9493 431,0,@9493 638,0,@9493 807,0,@9487 823,0,@9487 5072:D7,640|483b65187306ff5558ca09034989c641504151f6c3010f8555020000488b03ff73084c8b2c244983fd010f8506010000488d642408498b16ff124989c64983fe01750d488d64241048c7c005000000c34d8b2e4d8b750041ff750841ff36498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424184c89730849be707c52f1c27f00004c89336a016a016a016a0154488b44243849b8f050d1f1c27f000049b9f050d1f1c27f000049c7c201000000ff15f5010000ff742418498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849be487d52f1c27f00004c89336a016a016a016a0154488b44245049b8f050d1f1c27f000049b9f050d1f1c27f000049c7c201000000ff158c010000488d6424185b488b0424ff1574010000488d6424484883f002c3498b5608ff124989c64983fe01750d488d64241848c7c005000000c34d8b2e4d8b75004d8b761041ff7508498b0641ff762048ba3851d1f1c27f0000ff15200100004989c64d8b6e404d8b5e604c8b6424084d89e64983fc017508415c4883c408eb434d89f64d8b364d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d897424104c8b34244d89742408488d64241049beb89352f1c27f00004d8934244d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104d89660849bdd8a552f1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849bca0a652f1c27f00004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89305b4c8b4424084159488d642408e98ffdffff488d64241048c7c005000000c3f400|@10482,1,@289,@5076,@5109,@5104,@5104|129,0,@5073 156,0,@10446 166,0,@10446 226,0,@5075 253,0,@10446 263,0,@10446 362,0,@10448 464,0,@5097 513,0,@5114 561,0,@5115 5073:D3,120|483b65187305ff5558cd054c8b72084d89f541f6c60175534c8b60084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752c498b5500498b4618ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@10445,1,@246| 5074:D3,16|483b65187305ff5558cd01c3f4000000|@10447,1,@247| 5075:D3,120|483b65187305ff5558cd054c8b72084d89f541f6c60175534c8b60084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752c498b5500498b4618ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@10445,1,@248| 5076:D3,800|483b65187305ff5558cd054889d14d8d77e04c3b75107305ff5550cd034d89f749c746f803000000498946104c8b69084d89eb4d896e0849bd308152f1c27f00004d892e41564d8d6fe04c3b6d107306ff5550ca03084d89ef49c745f803000000498945104c8b61104d89e64d89650849bc288252f1c27f00004d89650041554d8d6fe04c3b6d107306ff5550ca03484d89ef49c745f803000000498945104c8b61184c89e74d89650849bc208352f1c27f00004d8965004155498d57e0483b55107306ff5550ca83484989d748c742f803000000488942104c8b61204d89e54c89620849bc188452f1c27f00004c89224d8d57e04c3b55107306ff5550ca87684d89d749c742f803000000498942104c8b61284d89e14d89620849bc108552f1c27f00004d8922498d77e0483b75107306ff5550ca876e4989f748c746f803000000488946104c8b61304d89e04c89660849bc088652f1c27f00004c89264d8d67e04c3b65107306ff5550cac76f4d89e749c74424f8030000004c89db4d895c2410498944240849bb008752f1c27f00004d891c244d8d5fe04c3b5d107306ff5550cacf774d89df49c743f8030000004d8973104989430849bef08852f1c27f00004d89334d8d77e04c3b75107306ff5550cacf3f4d89f749c746f80300000049897e104989460848bfe08a52f1c27f000049893e498d7fe0483b7d107306ff5550ca4f7f4989ff48c747f8030000004c896f104889470849bdd08c52f1c27f00004c892f4d8d6fe04c3b6d107306ff5550cacf5f4d89ef49c745f8030000004d894d104989450849b9c08e52f1c27f00004d894d004d8d4fe04c3b4d107306ff5550cacf7d4d89cf49c741f8030000004d8941104989410849b8b09052f1c27f00004d89014d8d47e04c3b45107306ff5550cacf7e4d89c749c740f803000000498940104889d94989480848b9a09252f1c27f0000498908498d4790483b45107306ff5550cac47f4989c748c740f80d0000004889506048897058488978504c8940484c8b4424084c8940404c8948384c8b4c24104c8948304c8950284c8b14244c895020488d6424184c8958184c8960104c8968084c8930c3f4000000|@10452,1,@269|57,0,@5077 114,0,@5078 172,0,@5079 230,0,@5080 285,0,@5081 340,0,@5082 394,0,@5083 443,0,@5085 491,0,@5087 539,0,@5089 587,0,@5091 636,0,@5093 687,0,@5095 5077:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@249,@4914|149,0,@9991 5078:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@250,@4914|149,0,@9991 5079:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@251,@4914|149,0,@9991 5080:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@252,@4914|149,0,@9991 5081:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@253,@4914|149,0,@9991 5082:D4,200|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15c00000004989c641f6c60175054d8b36eb0d488d64240848c7c001000000c341f6c60175734d8b264d8b6e084d8b04244d89c14c8b1424498b7a084989fb4c3bc775444d89ce4d89dd488d6424084d3bf575244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb87488d64240848c7c001000000c3f4000000000000|@10449,1,@254,@4914|149,0,@9991 5083:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@255,@4931,@5084,@4914|59,0,@9594 5084:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@256| 5085:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@257,@4931,@5086,@4914|59,0,@9594 5086:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@258| 5087:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@259,@4931,@5088,@4914|59,0,@9594 5088:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@260| 5089:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@261,@4931,@5090,@4914|59,0,@9594 5090:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@262| 5091:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@263,@4931,@5092,@4914|59,0,@9594 5092:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@264| 5093:D6,216|483b65187305ff5558cd0552ff304c8b70084d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049be28dbd0f1c27f00004d8975084c8b7424084d8b66104d89650041554d89f6498b4608488b5c2408ff15980000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb1e498b064c8b742410498b5e104c8b0424ff15430000004989c0488d6424084c8b742408498b46085b488d642408ff251e000000f40000000000|@10450,1,@265,@4931,@5094,@4914|59,0,@9594 5094:D3,176|483b65187306ff5558ca0901a8017571ff30488b40084c8b34244d8b364c3bf3752b488d6424084d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000000000|@10038,1,@266| 5095:D4,80|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd044d89c749c740f8020000004c8b72084d89700849be209352f1c27f00004d8930488b421048c7c301000000ff251d000000f400000000|@10451,1,@268,@4953|47,0,@5096 5096:D3,112|483b65187306ff5558ca0d014989c64c89c0f6c30175524c8b234c8b6b084d8b24244c8b5a084d3be375274d8d67e84c3b65107306ff5550ca0d604d89e749c74424f80200000049894424084d893424eb034989c44c89e04c89eb483b65187306ff5558ca0d40eba9c3f40000000000|@10041,1,@267| 5097:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@270,@5098| 5098:D4,32|483b65187306ff5558ca09014889da4150ff125bff251e000000f40000000000|@10478,1,@285,@5099| 5099:D4,296|483b65187305ff5558cd094889da4c8b70084d8b264d89e54983fc050f85f200000041ff76084d8b7610ff30ff70104d8d6fe04c3b6d107306ff5550ca04404d89ef49c745f8030000004989551049bc6852d1f1c27f00004d89650849bcb09552f1c27f00004d8965004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849bd309652f1c27f00004d89284c89f048bb1056d1f1c27f0000ff15970000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24104d896e0849c70605000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642410c34983fd037501c3498b4618ff22f4000000000000|@10479,1,@286,@5108|80,0,@10454 94,0,@5100 139,0,@5101 155,0,@10477 5100:D3,88|483b65187305ff5558cd054989d64c8b68084d8b6d004983fd03750848c7c001000000c3498b5608498b5e10ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@10455,1,@271| 5101:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8b852d1f1c27f000049b91053d1f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@10464,1,@277,@5104|26,0,@10456 36,0,@10458 5102:D3,16|483b65187305ff5558cd01c3f4000000|@10457,1,@272| 5103:D3,16|483b65187305ff5558cd01c3f4000000|@10457,1,@273| 5104:D7,912|483b65187306ff5558ca09074889da50415141524c8b742410498b46184c8b70084d8b2e4983fd050f855901000041ff760841ff7610ff30ff70104d8d47d84c3b45107305ff5550cd044d89c749c740f8040000004c8b7424204d8970184c8b7424284d8970104989500849be189b52f1c27f00004d8930488b44241048bbd053d1f1c27f0000ff15330300004989c641564c8b7424184c3b34247535488d6424384c8b6c2410415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800488b5424304c8b742438498b06ff124989c24d8d6fe04c3b6d107306ff5550ca00044d89ef49c745f8030000004c8b34244d897510488d6424084c8b7424184d89f34d89750849c74500050000004d8d77e04c3b75107306ff5550ca002c4d89f749c746f8030000004c8b24244d896610488d6424084d896e084c8b2c244d892e488d6424084c8b6c24204d8b65104c8b6c24304d8955004d89db4d895d084d8965104d89751848c7c0010000004883c428c20800ff124989c641f6c601752241ff364c8b742418498b066a016a014889e3ff150e020000ff742408ff742420eb35488d6424104c8b6c2410415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800f60424010f85010100004c8b2c244d89ee41ff75004d89f641ff76084c8b742408498b4618488b5c2430ff15970100004989c64983fe030f85b50000004c8b742408498b066a016a014889e3ff156d010000488d642408415c4c3b642418750949c7c603000000eb544d8b34244e8d3475010000004c8b6c24184d8b5d004c89d94e8d1c5d010000004d3bf375284d89ed498d7424084d89ed498d7d08483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c420eb25415d4c896c2408483b65187303ff55584883c408e9f5feffff488d64242049c7c6010000004983fe01754e488b5424104c8b742418498b06ff124989c34c8b7424184d8b66084d89f64d8b76104c8b6c24284d895d004d8965084d8975104c8b34244d897518488d64240848c7c0010000004883c418c20800488d6424204c8b6c24084d8b364d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c001000000c20800f40000000000|@10469,1,@278,@5071,@5109,@5071,@5108|109,0,@5105 127,0,@10463 5105:D3,112|483b65187305ff5558cd054989d66a016a016a016a0148ba2053d1f1c27f0000498b5e084d8b4e104d8b56185449b83053d1f1c27f0000ff12415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@10462,1,@275|24,0,@10459 47,0,@10460 5106:D3,16|483b65187305ff5558cd01c3f4000000|@10461,1,@274| 5107:D3,16|483b65187305ff5558cd01c3f4000000|@10462,1,@276| 5108:D6,632|483b65187306ff5558ca0901534150ff158b0200004989c641564c8b2c244d8b65004d89e64983fc097515488d64241848b82054d1f1c27f0000488b5d08ff234d89ed4c8d25080000004f8d64b4fc41ffe4e933000000909090e93b000000909090e943000000909090e9d3000000909090e93e010000909090e945010000909090e92e010000909090488d64241848b8b80bd1f1c27f0000c3488d64241848b8a854d1f1c27f0000c34d89ed4d89ee41ff75084d89f641ff7610488b442408488b5c24204c8b442418e831ffffff4989c64156488b442408488b5c24284c8b442420e818ffffff4989c54c8b24244d89e64c3b64241075124c3b6c2408750b488d642418584883c410c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c700050000004883c428c34d89ed4d89ee41ff75084d89f641ff7610488b442408488b5c24204c8b442418ff15300100004989c64c3b742408750b488d642410584883c410c3498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c700070000004883c420c3488b5424104c89e8488d642418ff224d89ee4d89f541ff76084d89ed4d89ee41ff75184d89f641ff7620488b442410488b5c24284c8b442420ff159c0000004989c64156488b542428488b442410ff124989c44d8b2c244c8b1c244d89de4c3b5c241875124c3b642410750b488d642420584883c410c3498d47d0483b45107306ff5550ca00704989c748c740f8050000004c8b5c24084c8958204c8960184c8968104d89f64c897008488d64241048c7000b0000004883c428c3f400000000000000|@10474,1,@281,@5112,@5111,@5062|50,0,@10465 145,0,@9948 161,0,@10468 5109:D4,256|483b65187305ff5558cd094c8b68084d89ee4d8b6d004983fd0575384c8b63084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc037511498b46104d89ee498b5e10ff25c40000004d89f54d8b364983fe0375464c8b73084d89f44d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe0375204d8b75084d89e54d8b6d084d3bf5750848c7c003000000c348c7c001000000c34d89ee4d8b6d004983fd0175444c8b63084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751d4d8b76184d8b6d184d3bf5750848c7c003000000c348c7c001000000c348c7c001000000c3f4|@10471,1,@279,@5110| 5110:D3,888|483b65187305ff5558cd094c8b304d89f54983fe0b754e4c8b334983fe0b7545ff70084c8b6818ff73084c8b7318498b4518498b5e1848baf054d1f1c27f0000ff124989c64983fe03750dff742408ff742408e97b020000488d64241048c7c001000000c34d89ee4983fd0575484c8b2b4983fd05753f4c8b7008ff70104c8b6b08ff73104c89eb4c89f0e870ffffff4989c64983fe037510488b4424085b488d642408e957ffffff488d64241048c7c001000000c34d89f54983fe07751f4c8b334983fe0775164c8b70084c8b58104c8b6b084c8b63106a016a01eb564d89ee4983fd0d75264c8b2b4983fd0d751d4c8b70084c8b6b084d3bf5750848c7c003000000c348c7c001000000c34983fe0375194c8b334983fe03750848c7c003000000c348c7c001000000c348c7c001000000c34d8b134983fa01752c4d8b53084d8b5b104c8914244c895c2408488d642408415b4983fb0375066a016a01eb2048c7c001000000c34d8b53084d8b124d89d3483b65187306ff5558ca0078ebb34d8b1c244983fb01752e4d8b5c24084d8b6424104c891c244c89642408488d642408415c4983fc03750641564155eb2148c7c001000000c34d8b5c24084d8b1b4d89dc483b65187306ff5558ca0070ebaff6442408010f85cd0000004c8b7424084d8b2e4d89f641ff7608f6442408010f85a60000004c8b6424084d8b34244d89e441ff7424084d8b55004d8b1e4d3bd37502eb344d8b224e8d2465010000004d8b0b4c89c94e8d0c4d010000004d3be1755c498d7208498d7b08483bc9f3a67407488d642420eb4b498b4508498b5e08e8a9fdffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e94fffffff488d64242048c7c001000000c3488d64242048c7c001000000c3488d64241848c7c001000000c34c8b34244983fe01488d642408750d488d64240848c7c003000000c3488d64240848c7c001000000c3f644240801756d4c8b742408498b064d89f641ff7608f644240801754a4c8b742408498b1e4d89f641ff7608e8fcfcffff4989c64983fe0375204c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eba6488d64243048c7c001000000c3488d64242848c7c001000000c34c8b34244983fe01488d642408750d488d64241848c7c003000000c3488d64241848c7c001000000c3f400000000000000|@10472,1,@280|56,0,@10470 5111:D3,232|483b65187306ff5558ca090150534150f6442410010f85bf0000004c8b6c24104d8b75004d89ed41ff750841ff3641ff760848ba6855d1f1c27f0000488b0424488b5c24204c8b442418ff124989c64156488b442418488b5c24284c8b442420e89bffffff4989c54c8b34244d89f44c3b742408750e4c3b6c24187507488d64243058c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424084c8b6424084d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c3488d64241848c7c001000000c3f4|@10476,1,@283|52,0,@10473 5112:D3,192|483b65187306ff5558ca090150534150f6442410010f85950000004c8b6c24104d89ee41ff75004d89f641ff760848ba6855d1f1c27f0000488b442408488b5c24184c8b442410ff124989c64156488b442408488b5c24204c8b442418e89effffff4989c54c8b24244d89e64c3b642410750e4c3b6c24087507488d64242858c3498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084d89f64c8930488d6424084883c428c3488d64241848c7c001000000c3f40000|@10475,1,@282|48,0,@10473 5113:D3,16|483b65187305ff5558cd01c3f4000000|@10464,1,@284| 5114:D3,160|483b65187305ff5558cd05524c8b3424498b5610ff124989c641f6c60175714d8b2e4d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8b7608488d6424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@10480,1,@287| 5115:D3,160|483b65187305ff5558cd05524c8b3424498b5610ff124989c641f6c60175714d8b2e4d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8b7608488d6424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@10481,1,@288| 5116:D5,1104|483b65187306ff5558ca090750415041514152f6c3010f851a0400004c8b33ff73084d8b2641ff76084c8b7424284c89f34983fe017f12488d64243048b86049d1f1c27f0000c258004d8b34244e8d3475010000004983fe01750f49bd20dad0f1c27f0000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15ae0300000f87810300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435003a418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060700000041564889db4883eb027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488b4c2428488b8424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b54244041564155415441534152415141505756524989c24889ca488b4424584c8b4424704c8b4c2468ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410f6042401740948c7c301000000eb0a48bb8857d1f1c27f00004883fb0175054989c6eb09ff150a0200004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f644240801740c48c7c301000000e9b7000000488b4424284883e8027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b542440488b4c2438415641554154415341524151415057565251488b5c24604c8b4424784c8b4c24704c8b542468e895fcffff4989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017508415d4883c428eb12488b0424ff15b60000004989c5488d6424304d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c25800488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242048c7c001000000c25800f40000ffffffffffffff01|@10486,1,@291,@5118,@5117|62,0,@10390 93,0,@9583 320,0,@9475 518,0,@10236 589,0,@10484 757,0,@9475 911,0,@10236 1064,0,@9487 5117:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@293| 5118:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@292| 5119:D4,32|483b65187305ff5558cd094989d848c7c301000000ff251d000000f400000000|@10487,1,@294,@5120| 5120:D4,224|483b65187306ff5558ca0901534150a8010f85ba000000ff30ff70084c8b34244983fe017537488d642408498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c8970084c8b34244c8930488d6424084883c410c3488b542410488b442408ff124989c06a016a01488b4424104889e3ff157a000000488b0424ff742408488b5c24304c8b442428e86bffffff4989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b7424204c893358488d6424204158488d642408e92fffffff488d64240858c3f400000000000000|@10489,1,@295,@5121| 5121:D3,272|483b65187306ff5558ca0901534150a8010f85c9000000ff30ff7008488b542410488b442408ff124989c641566a016a01488b4424184889e34c8b442428e8bdffffff415c415d4c8b34244983fe03488d64241075464d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c410c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c410c3488d642408415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000000000|@10490,1,@296|233,0,@10488 5122:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@297| 5123:D5,1280|483b65187306ff5558ca09014989dea8010f85d20400004c8b204c8b680841f6c6010f853903000041ff36498b5e084c8b1c244d8b134d8b0c244d89cb4a8d3c4d01000000498b324989f1488d347501000000483bfe0f85b30000004d3be27502eb304c89df4989fb488d3c7d010000004c89c94e8d0c4d01000000493bf9751b498d742408498d7a08483bc9f3a67402eb0949c7c301000000eb714e8d0c5d010000004d8b1a4a8d145d010000004c3bca73054c89c9eb034889d1498d742408498d7a0848d1e9483bc9f3a67214770949c7c301000000eb1049c7c303000000eb0749c7c3ffffffff4983fb0175074c3bca7308eb0f4983fb017c0949c7c303000000eb0749c7c3ffffffffeb284e8d1c5d010000004d89ca4e8d1455010000004d3bda7d0949c7c3ffffffffeb0749c7c3030000004983fb0175374c89e8e8bbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fb010f8d8d010000488d6424084c89c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989d9eb2348b8f814d1f1c27f00004156415041544155ff1555030000415d415c4158415e4989c141f6c1010f841b0100004d89c34983e3094983fb01750948c7c703000000eb0748c7c7010000004883f7024d89c34983e3034983fb01750949c7c203000000eb0749c7c2010000004983f20248bea854d1f1c27f00004d8d5ff04c3b5d107306ff5550cac0774d89df49c743f80100000041c643ff404989334e8d0ccdf9ffffff4883ff03750948c7c709000000eb0748c7c7010000004c0bcf4d0bca4d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d894a104d895a0849c7020d0000004d8d5fe84c3b5d107306ff5550ca00754d89df49c743f8020000004d8953084d892341534c89f34c89e8e834fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b80815d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca08314989c748c740f8020000004c8968084c8920e8cefcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c89c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989daeb1f48b8f814d1f1c27f0000415041544155ff1571010000415d415c41584989c241f6c2010f841f0100004d89c64983e6094983fe01750949c7c103000000eb0749c7c1010000004983f1024d89c64983e6034983fe01750949c7c303000000eb0749c7c3010000004983f30248bfa854d1f1c27f00004d8d77f04c3b75107306ff5550ca803f4d89f749c746f80100000041c646ff4049893e4e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14d0bd34d8d5fe04c3b5d107306ff5550ca00754d89df49c743f8030000004d8953104d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00394d89f749c746f8020000004d895e084d892641564c89e848c7c301000000e856fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b80815d1f1c27f0000488b5d08ff234983fe01750848c7c001000000c34c89f0c3f400000000|@10492,1,@299,@4933,@4933|437,0,@10021 548,0,@10468 765,0,@10022 915,0,@10021 1022,0,@10468 1243,0,@10022 5124:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@300| 5125:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@10509,1,@301|13,0,@10508 5126:D4,128|483b65187305ff5558cd056a016a01498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be90b652f1c27f00004c89334c8b4a104c8b52184c8b722041564c8d442408ff1541000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@10517,1,@307,@5128|51,0,@5127 5127:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@10514,1,@302| 5128:D3,768|483b65187306ff5558ca09074889da4150415141526a016a014889e3ff124c8b3424ff7424086a016a014d8b2e4983fd0175164d8b6e084d8b76104c892c244c89742408e99f0000004d8b76084d8b2e4983fd050f858c020000498b46084c8b7424304d8b6ef849c1e50849c1ed074983cd01493bc57215488d64244048b89011d1f1c27f0000488b5d08ff234d89f64d8b7486fc4983fe010f84320200004989c54983c5024c8b74242843ff74aefc488b5424504883c0027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23ff124989c64c8b2c244c896c2408488d6424084c89742408415d415b4c8b34244d8b164d89d44983fa017514488d64242849bea85bd1f1c27f0000e97f0100004d89f64d89e24983fc097514488d64242849bea85bd1f1c27f0000e95f0100004d89f64d89d44983fa030f859b0000004d89f64d8b66084d89f64d8b7610488d6424084c8b4c24304d8d57c84c3b55107306ff5550ca007a4d89d749c742f8060000004d894a284c8b4c24104d894a204c8b4c24184d894a184d89721049beb85bd1f1c27f00004d89720849be20ba52f1c27f00004d89324d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849c706030000004883c420e9b40000004d89f64983fc070f85980000004d89f64d8b66084d89f64d8b7610488d6424084c8b4c24304d8d57c84c3b55107306ff5550ca007a4d89d749c742f8060000004d894a284c8b4c24104d894a204c8b4c24184d894a184d89721049beb85bd1f1c27f00004d89720849be38bb52f1c27f00004d89324d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849c706070000004883c420eb0f488d64242849bea85bd1f1c27f00004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c7042401000000415d4d8965004d89750848c7c001000000c20800488d64244048b8005cd1f1c27f0000488b5d08ff23488d64244048b8c85cd1f1c27f0000488b5d08ff23f400000000|@10525,1,@308|127,0,@9998 194,0,@9475 259,0,@10515 291,0,@10515 399,0,@10516 413,0,@5129 567,0,@10516 581,0,@5131 647,0,@10515 728,0,@10518 749,0,@10522 5129:D3,136|483b65187305ff5558cd054989d66a016a01498b5608498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004d8b6e104c896b0849bdd0ba52f1c27f00004c892b4d8b4e184d8b56204d8b762841564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@10517,1,@304|59,0,@5130 5130:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@10514,1,@303| 5131:D3,136|483b65187305ff5558cd054989d66a016a01498b5608498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004d8b6e104c896b0849bde8bb52f1c27f00004c892b4d8b4e184d8b56204d8b762841564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@10517,1,@306|59,0,@5132 5132:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@10514,1,@305| 5133:D3,104|483b65187305ff5558cd054c8b720841f6c601753e4d8b264d8b6e084883f80175044c89e0c34989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140ebbc48b8c85dd1f1c27f0000488b5d08ff23f400000000|@10530,1,@309|49,0,@9475 85,0,@10528 5134:D3,192|483b65187305ff5558cd054c8b720841f6c6010f85930000004d8b264d8b6e084883f80175564d89e54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bda85bd1f1c27f00004c8968084c8930c34989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140e963ffffff48b8c85dd1f1c27f0000488b5d08ff23f4000000|@10549,1,@310|108,0,@10515 135,0,@9475 174,0,@10528 5135:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10557,1,@311| 5136:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@10569,1,@312|13,0,@10508 5137:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@313| 5138:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@314| 5139:D3,96|483b65187305ff5558cd09483bc3750848c7c003000000c34c8b304e8d3475010000004c8b2b4c89e94e8d2c6d010000004d3bf5751f488d7008488d7b08483bc9f3a6750848c7c003000000c348c7c001000000c348c7c001000000c3f40000|@10618,1,@315| 5140:D3,40|483b65187305ff5558cd014989c648ba886dd1f1c27f0000498b06498b5e08ff22f4000000000000|@10787,1,@376|16,0,@10658 5141:D14,2360|483b65187305ff5558cd094883fb017f0b48b84847d1f1c27f0000c34c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e943000000909090e9c2030000909090e98f040000909090e981050000909090e938060000909090488b40084883eb02711048b8d0c6d0f1c27f0000488b5d08ff23ff25220900004c8b70104c8b68184d8b3641f6c5010f858d0200004d8b6d004d8b264e8d1c65010000004983fb01750f49bc8847d1f1c27f0000e9af0000004d89da4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d490800000f87230200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89d9498d7608498d7c240848d1e9f3a44d89de4983c6104d89f349d1eb43c6041c2049d1ee43c64434013a41806424ffbf4d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849c7060700000041564883eb02537115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89e8ff15e50700004989c6415648c7c001000000ff15cb0700004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15960700004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be986dd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c348b8f8c7d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be986dd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34c8b70084989d94983e902711048b8d0c6d0f1c27f0000488b5d08ff234c89f348b8d06dd1f1c27f000049b8d8c8d0f1c27f0000ff15410500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b68104c8b70184983fd03740949c7c501000000eb0a49bd286ed1f1c27f000041554989d94c89f348b8406ed1f1c27f000049b868dad0f1c27f0000ff155b0400004889c34883fb017504415eeb12488b0424ff153c0400004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd806ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b70084989d94c89f348b8986ed1f1c27f000049b86841d1f1c27f0000ff15700300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf86ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b68104c8b70184d8b5d004d8b2b4e8d2c6d010000004983fd01750f49bc8847d1f1c27f0000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d390200000f87210200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013a41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554883eb02537115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89f0ff15a70100004989c6415648c7c001000000ff158d0100004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15580100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be986dd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c348b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@10770,1,@356,@5057,@5149,@5148,@5183,@5184,@5183,@5183,@5057,@5149,@5148,@5145|19,0,@10373 106,0,@9475 170,0,@10376 412,0,@9475 458,0,@10384 477,0,@10385 577,0,@10236 665,0,@10659 710,0,@10660 786,0,@9487 910,0,@10659 955,0,@10660 1044,0,@9475 1063,0,@10661 1073,0,@9493 1123,0,@10236 1168,0,@10663 1267,0,@10664 1285,0,@10665 1295,0,@9586 1373,0,@10236 1418,0,@10667 1504,0,@10668 1514,0,@10329 1564,0,@10236 1609,0,@10671 1714,0,@10376 1954,0,@9475 2000,0,@10384 2019,0,@10385 2119,0,@10236 2207,0,@10659 2252,0,@10672 2328,0,@9487 5142:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10662,1,@316,@5050| 5143:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@10666,1,@317| 5144:D3,424|483b65187305ff5558cd014c8b30488b58084d8b66084d8b7618498b064d8b76084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89650849c745000700000041554983fe03750c49bdd847d1f1c27f0000eb0a49bd8847d1f1c27f00004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7060700000041564883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348baa86ed1f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f4000000000000|@10670,1,@318|82,0,@10379 94,0,@10376 155,0,@9475 171,0,@10669 256,0,@10236 5145:D44,11328|483b65187305ff5558cd09534c8b34244d89f04983fe017f10488d64240848b84847d1f1c27f0000c34c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9c1050000909090e932070000909090e95a0a0000909090e9260c0000909090e9d50e0000909090e964100000909090e982120000909090e98f150000909090e997150000909090e966160000909090e93b170000909090e90a180000909090e9d9180000909090e99e1a0000909090e9c91a0000909090e9011c0000909090e9721d0000909090e9471e0000909090e9cf1f0000909090e97b210000909090e94d220000909090e9be230000909090e98e240000909090e96e250000909090e958260000909090e92f270000909090e966280000909090e96e280000909090e929290000909090e9f02a00009090904c8b700841ff36498b461041ff76204d8b76184983fe030f85ea0200004d89c04983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348bb6841d1f1c27f000049b9286fd1f1c27f0000ff15102c00004989c64156f644240801740c49c7c601000000e9a10000004c8b4424184983e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b44240848bb6841d1f1c27f000049b9f873d1f1c27f0000ff15b12b0000ff15a32b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5074d1f1c27f00004d892e41564c8b4424204983e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b44241848bb38dad0f1c27f000049b96874d1f1c27f0000ff15fe2a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bed874d1f1c27f00004c89334883fb0175035beb12488b0424ff15232a00004889c3488d6424084883fb01750c48bb4849d1f1c27f0000eb1348b84849d1f1c27f0000ff15f12900004889c34883fb017508415e4883c418eb12488b0424ff15ce2900004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf074d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d89c04983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348bb6841d1f1c27f000049b9286fd1f1c27f0000ff15ee2800004989c64156f644240801740c48c7c301000000e9c70000004c8b4424184983e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b44240848bb6841d1f1c27f000049b9f873d1f1c27f0000ff158f2800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5074d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017508415e4883c418eb12488b0424ff15e72700004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0875d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89f0e8caf9ffff4989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e89bf9ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2075d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c34c8b700841ff76084d8b66084d89e54d8b1c244983fb330f85fa0100004d8b64240841f6c40175444d8b64240841f6c40175304d8b6424084983fc01751c4d8b66184983fc03750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f859a010000488d6424084d8b6d08498b45004d8b6d0841ff750041ff364c89c34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23e8c6f7ffff4989c64156488b442408488b5c2418e8b2f7ffff4989c64156488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b442418e883f7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c3498b064c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23e841f6ffff4989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e812f6ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c34c8b7008498b0641ff76084c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23e820f5ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc3875d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6875d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424104983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b44240848bb50e0d0f1c27f000049b98075d1f1c27f0000ff15602100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c34c8b7008498b0641ff760841ff76104c89c34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23e848f3ffff4989c64156488b5c24184883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b442408e819f3ffff4989c64156488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b442418e8eaf2ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde075d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf875d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1076d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c3ff7008488b40104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23e899f0ffff4989c64156488b442408ff15c91d00004989c6415648c7c001000000ff15af1d00004989c048ba8048d1f1c27f0000488b0424488b5c241849b9e048d1f1c27f000049c7c201000000ff157a1d00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d6424084c8b70084d8b66104d8b76184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc0875d1f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bcf047d1f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0875d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104d8b264d89e54983fc030f8507010000498b460848bae81cd1f1c27f000048c7c303000000ff15fc1900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4076d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000e9180100004983fd010f8504010000498b460848bae81cd1f1c27f000048c7c303000000ff15e31800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5876d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000eb0a49be7076d1f1c27f000041564c8b4424104983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b44240848bbd8c8d0f1c27f000049b98876d1f1c27f0000ff15a71700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488d64240848b8d076d1f1c27f0000c3488b40084d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bb6841d1f1c27f000049b90077d1f1c27f0000ff15b51600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40084d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bb38dad0f1c27f000049b96874d1f1c27f0000ff15d6150000ff15c81500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40104d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bb50e0d0f1c27f000049b98075d1f1c27f0000ff15e91400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda077d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b40084d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bb6841d1f1c27f000049b9b877d1f1c27f0000ff150a1400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf078d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89f0e852e6ffff4989c641564c8b4424104983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b44240848bb50e0d0f1c27f000049b98075d1f1c27f0000ff15f61200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0879d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3488d6424084c8b70084d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008ff70184c89c34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b0424ff15311100004c8b7424084983fe037511488d64241848bb2079d1f1c27f0000eb77f6042401488d6424087411488d64241049bdc84ed1f1c27f0000eb0f488d64241049bde04ed1f1c27f00004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c5eb09ff15851000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf84ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89f0e812e3ffff4989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e8e3e2ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5079d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488b40104d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bbd0d8d0f1c27f000049b9d877d1f1c27f0000ff155a0e0000ff154c0e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6879d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488d6424084c8b70104c8b68204d8b65004c3b25910d00007502eb3c4d8b1c244d89dd4e8d1c5d010000004983fb150f858d00000049bb8079d1f1c27f0000498d742408498d7b0848c7c10a000000483bc9f3a67402eb6a4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca079d1f1c27f00004d8965084d8975004d89ee498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee0d7d0f1c27f00004c8930ff15e70c00004989c6e9a70000004c3b25d00c00007502eb354e8d2c6d010000004983fd110f858a00000049bdb879d1f1c27f0000498d742408498d7d0848c7c108000000483bc9f3a67402eb674d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca079d1f1c27f00004d8965084d8975004d89ee498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed079d1f1c27f00004c8930ff152d0c00004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34c8b700841ff36498b46084d8b76104983fe03750c49bdd03fd1f1c27f0000eb0a49bd103fd1f1c27f00004d8d77e84c3b75107306ff5550ca01214d89f749c746f8020000004d896e0849c7060700000041564d89c04983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348bb38dad0f1c27f000049b96874d1f1c27f0000ff156e0b00004989c641564c8b4424184983e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b44241048bb38dad0f1c27f000049b96874d1f1c27f0000ff15220b0000ff15140b00004889c34883fb01750c48bbe879d1f1c27f0000eb1348b8e879d1f1c27f0000ff15e70a00004889c34883fb017504415eeb12488b0424ff15c80a00004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c34c8b7008498b064d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bbd8c8d0f1c27f000049b9307ad1f1c27f0000ff15de0900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd887ad1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34c8b7008ff70104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89f0e89edcffff4989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e86fdcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda07ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488b40084c89c3e846dbffff4989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488b40084c89c34883eb02488d642408711048b8d0c6d0f1c27f0000488b5d08ff23e853daffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb87ad1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488d6424084c8b68084d8b75004a8d0c75010000004883f901750f49bef8d7d0f1c27f0000e9910000004989cc4983c4024c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d700500000f87820000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c6460823498d7508498d7e0948d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff23488b40084d89c04983e802488d642408711048b8d0c6d0f1c27f0000488b5d08ff2348bbd0d8d0f1c27f000049b9d877d1f1c27f0000ff15d40400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be9849d1f1c27f00004c8930ff156b0400004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3488b4008a801752f4c8b304d8b76284983fe03750949c7c603000000eb0749c7c6010000004983fe03750c49bde03ed1f1c27f0000eb0a49bd503ed1f1c27f00004d8d77e84c3b75107306ff5550ca01214d89f749c746f8020000004d896e0849c7060700000041564d89c04983e8027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348bb6841d1f1c27f000049b9f873d1f1c27f0000ff15800300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3488d64240848b8d07ad1f1c27f0000c3488b40084c89c34883eb02488d642408711048b8d0c6d0f1c27f0000488b5d08ff23ff15a20200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3ff7008488b40104c89c34883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23e885d5ffff4989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e856d5ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd007bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd187bd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3488d64240848b8307bd1f1c27f0000c3f400000000000000ffffffffffffff01|@10772,1,@359,@5186,@5163,@5189,@5163,@5163,@5190,@5191,@5192,@5163,@5163,@4836,@10755,@4836,@10753,@5193,@5163,@5194,@5195,@5163,@5163,@5163,@5196,@5163,@5163,@5163,@4983,@4983,@5057,@5149,@5148,@5163,@5197,@5163,@5163,@5198,@5199,@5200,@5163,@5185,@5163,@5163|32,0,@10373 352,0,@9475 368,0,@10329 378,0,@10673 434,0,@9475 455,0,@10329 465,0,@10709 521,0,@10236 566,0,@10711 597,0,@9475 618,0,@9584 628,0,@10712 779,0,@10236 823,0,@10715 869,0,@10389 881,0,@10389 963,0,@10236 1008,0,@10716 1098,0,@9475 1114,0,@10329 1124,0,@10673 1180,0,@9475 1201,0,@10329 1211,0,@10709 1261,0,@10236 1306,0,@10711 1350,0,@10236 1426,0,@10236 1471,0,@10717 1568,0,@9475 1613,0,@9475 1711,0,@10236 1756,0,@10718 1800,0,@10236 2087,0,@9475 2149,0,@9475 2247,0,@10236 2335,0,@10236 2476,0,@9475 2518,0,@9475 2616,0,@10236 2765,0,@9475 2816,0,@10719 2865,0,@10236 2909,0,@10721 3003,0,@9475 3024,0,@9649 3034,0,@10722 3084,0,@10236 3237,0,@9475 3279,0,@9475 3326,0,@9475 3424,0,@10236 3469,0,@10725 3513,0,@10236 3601,0,@10236 3646,0,@10726 3690,0,@10236 3778,0,@10236 3823,0,@10727 3924,0,@9475 3982,0,@10384 4001,0,@10385 4101,0,@10236 4146,0,@10728 4190,0,@10236 4478,0,@10236 4523,0,@10717 4569,0,@10236 4614,0,@10380 4660,0,@10236 4739,0,@10236 4784,0,@10717 4887,0,@10077 5021,0,@10236 5065,0,@10729 5160,0,@10077 5294,0,@10236 5338,0,@10730 5416,0,@10731 5444,0,@9475 5465,0,@9493 5475,0,@10732 5525,0,@10236 5654,0,@10734 5683,0,@9475 5699,0,@10329 5709,0,@10736 5759,0,@10236 5804,0,@10660 5898,0,@9475 5914,0,@9584 5924,0,@10712 5980,0,@10391 6025,0,@10392 6119,0,@9475 6135,0,@9649 6145,0,@10722 6195,0,@10236 6240,0,@10739 6334,0,@9475 6350,0,@10329 6360,0,@10740 6410,0,@10236 6455,0,@10747 6552,0,@9475 6597,0,@9475 6618,0,@9649 6628,0,@10722 6678,0,@10236 6723,0,@10748 6868,0,@10236 7063,0,@9475 7105,0,@10749 7133,0,@10433 7150,0,@10434 7287,0,@10435 7384,0,@9475 7429,0,@9475 7527,0,@10236 7572,0,@10751 7616,0,@10236 7758,0,@9475 7774,0,@9569 7784,0,@10742 7840,0,@10391 7885,0,@10752 8014,0,@10753 8076,0,@10754 8128,0,@9559 8184,0,@10755 8246,0,@10754 8298,0,@10756 8382,0,@10312 8394,0,@10304 8458,0,@9475 8474,0,@9584 8484,0,@10712 8521,0,@9475 8542,0,@9584 8552,0,@10712 8583,0,@10757 8595,0,@10757 8673,0,@10236 8818,0,@9475 8834,0,@9493 8844,0,@10760 8894,0,@10236 8939,0,@10762 9036,0,@9475 9081,0,@9475 9179,0,@10236 9224,0,@10763 9268,0,@10236 9439,0,@10440 9487,0,@10391 9532,0,@10392 9626,0,@9475 9719,0,@10236 9764,0,@10764 9867,0,@9560 10066,0,@9487 10100,0,@9475 10116,0,@9569 10126,0,@10742 10176,0,@10391 10220,0,@10392 10348,0,@10302 10360,0,@10296 10424,0,@9475 10440,0,@10329 10450,0,@10709 10500,0,@10236 10629,0,@10765 10658,0,@9475 10714,0,@10236 10759,0,@10672 10856,0,@9475 10898,0,@9475 10996,0,@10236 11041,0,@10767 11085,0,@10236 11173,0,@10236 11218,0,@10768 11303,0,@10769 5146:D7,456|483b65187305ff5558cd014c8b30ff700841ff3641ff761041ff762848c7c001000000ff15cf0100004989c048ba6848d1f1c27f0000488b0424488b5c2418ff15ab0100004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060700000041564c8b4424284983e8027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b44241848bb50e0d0f1c27f000049b9386fd1f1c27f0000ff15350100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c420eb12488b0424ff15620000004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f40000|@10707,1,@335,@5164,@5163,@5051,@5149|46,0,@10383 134,0,@9475 155,0,@9649 165,0,@10674 215,0,@10236 259,0,@10380 304,0,@10236 5147:D6,448|483b65187305ff5558cd014c8b28ff70084d8b75084d8b65184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85fe000000498b06ff15930100004989c6415648c7c001000000ff15790100004989c048ba8048d1f1c27f0000488b0424488b5c241049b9e048d1f1c27f000049c7c201000000ff15440100004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486fd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c700010000004883c408c3f4|@10676,1,@319,@5057,@5149,@5148|108,0,@10384 127,0,@10385 227,0,@10236 272,0,@10675 316,0,@10236 5148:D10,920|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e92e000000909090e9e0000000909090e92d010000909090e95c010000909090e9bd02000090909048b8b80bd1f1c27f0000c34c8b70084d8b6e2841ff7500498b0641ff760841ff7620ff156b0300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b2c244d896c2408488d64240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c7000b000000c34c8b7008ff70184c89f0e8dffeffff4989c64156488b442408e8d0feffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c70005000000c34c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34c8b7008ff70104c89f0ff152a020000ff151c0200004989c64156488b0424ff15050200004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24084d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd03488d64240875044c89f0c349bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500c3488b4008ff15af00000048c7c303000000ff159a0000004989c64156488b0424ff15830000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3f40000000000|@10702,1,@325,@5155,@5156,@5157,@5158,@5159,@5161,@5154|79,0,@9948 669,0,@10468 5149:D3,208|483b65187305ff5558cd0149c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049bea86fd1f1c27f00004d89750049c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d8926498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bec80653f1c27f00004c8930c3f40000000000|@10700,1,@324|56,0,@10677 190,0,@5152 5150:D3,944|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9200200004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be08c4d0f0c27f0000498b16ff124989c641564c8b7424104d8b364c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7070d1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb870d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@10696,1,@321|26,0,@10414 52,0,@9475 86,0,@10678 124,0,@9475 174,0,@4672 218,0,@9475 268,0,@4615 313,0,@10681 361,0,@10236 406,0,@10683 450,0,@10236 495,0,@10685 583,0,@10236 627,0,@10686 676,0,@10688 821,0,@10236 866,0,@10689 5151:D3,24|483b65187305ff5558cd0148b86012d1f1c27f0000c3f400|@10006,1,@320|13,0,@10004 5152:D4,616|483b65187305ff5558cd0552504c8b7424084d8b76084d8b3641f6c601754c4d8b264d8b6e084d8b5c24084d8b1b4c8b14244d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebae49c7c60100000041f6c601750c488d6424104d8b36498b06c34c8b7424084d8b6e104d89ec4d8b6d004983c5027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89f64d892c244c8b2c244d8b6d084983e5094983fd01740c49bdb071d1f1c27f0000eb0a49bd58d8d0f1c27f000041554d89f64d8b7610498b06ff15900100004989c54c8b1c244d8b334e8d3475010000004d8b65004e8d2465010000004983fe01750d488d6424084c89e8e9bd0000004983fc01750d4c89d8488d642408e9aa0000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0dfe0000000f87dd0000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f14d89db498d7308488d642408488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf4d8d5fe84c3b5d107305ff5550cd014d89df49c743f8020000004c8b34244d897308488d6424084989034c8b2c244d8b75084d89f44d8b164d8d77e84c3b75107306ff5550ca011c4d89f749c746f8020000004d8956084d891e4d89e5488d6424084d897500c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@10698,1,@322,@5153|161,0,@9475 202,0,@10697 214,0,@9564 588,0,@9487 5153:D3,632|483b65187305ff5558cd01504c8b34244d89f54983fe350f8cbc0000004c89e849c7c63500000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c53500000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f04883e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e82cffffff4989c3eb0a49bbd8c8d0f1c27f00005849c7c63500000048d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb344983fd017d0949c7c603000000eb0749c7c6010000004983fe017502eb164983c534711048b8d0c6d0f1c27f0000488b5d08ff234981c5c2000000711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d05e9f60000004981fdff0100000f8fe900000049be30c9d0f1c27f00004f8b6caefc4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d96000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b828d2d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@10699,1,@323|161,0,@9475 193,0,@9475 219,0,@9493 307,0,@9475 332,0,@9475 372,0,@9496 589,0,@9487 605,0,@9507 5154:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba6872d1f1c27f0000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@334|29,0,@10701 5155:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@326| 5156:D4,208|483b65187305ff5558cd0953a8010f85aa000000ff30ff700848bae81cd1f1c27f0000488b44241048c7c303000000ff15b30000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4156488b5c24184883c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b442408e875ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f400000000|@10703,1,@327,@4983|27,0,@10077 115,0,@9475 5157:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848ba6872d1f1c27f0000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@328|29,0,@10701 5158:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@329| 5159:D4,56|483b65187305ff5558cd01a801751bff30488b40084c8b342441ff36e8dfffffff5b4158ff252600000048c7c001000000c3f40000000000|@10704,1,@330,@5160| 5160:D3,440|483b65187306ff5558ca09014989c641f6c6010f857301000041ff36498b46084c8b2c244d8b65004c8b1b4d89dd4e8d145d010000004d8b0c244d89cb4e8d0c4d010000004d3bd10f85b4000000493bdc7502eb304d89ea4d89d54e8d1455010000004c89d94e8d1c5d010000004d3bd3751b488d7308498d7c2408483bc9f3a67402eb0949c7c501000000eb724e8d1c6d010000004d8b2c244e8d146d010000004d3bda73054c89d9eb034c89d1488d7308498d7c240848d1e9483bc9f3a67214770949c7c501000000eb1049c7c503000000eb0749c7c5ffffffff4983fd0175074d3bda7308eb0f4983fd017c0949c7c503000000eb0749c7c5ffffffffeb284e8d2c6d010000004d89dc4e8d2465010000004d3bec7d0949c7c5ffffffffeb0749c7c5030000004983fd017f28488d642408498d47e8483b45107306ff5550ca00414989c748c740f8020000004c8970084c8900c3e8a3feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c3f400000000|@10705,1,@331| 5161:D4,264|483b65187305ff5558cd01a8010f85ea0000004c8b28ff70084d8b7500498b450841ff3648ba6872d1f1c27f0000ff124989c64156488b442408ff15e00000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408e832ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@332,@5162|38,0,@10701 5162:D4,488|483b65187305ff5558cd014989c64d8b264d89e54e8d2465010000004983fc037f05e9b20100004d89ec4e8d2c6d010000004983fd017f1048b8a8f8d0f1c27f0000488b5d08ff234d0fb66e084e8d1c6d0100000049bd30c9d0f1c27f00004f8b5c9dfc4c3b1d95010000750949c7c503000000eb4a4d8b2b4e8d2c6d010000004983fd03753249bd30d9d0f1c27f0000498d7308498d7d0848c7c101000000483bc9f3a6750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983f5024983fd030f840b0100004d89e54a8d0c65010000004883e902711048b8d0c6d0f1c27f0000488b5d08ff234e8d246d010000004883f9010f8cc80000004989cd4983c5024d3bec761048b82046d1f1c27f0000488b5d08ff234883f901750f48b8d8c8d0f1c27f0000e9820000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2c45010000004c3b2d85000000775c4d89ec4a8d04a50400000048f7d84903c7483b45107205493bc77206ff5550ca02604989c749d1ec4c8960f8c640ff414983ed024ac744a8fc000000004989cd49d1ed4c8928498d7609488d780848d1e9f3a48060ffbfe947feffff48b8f8c7d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff234c89f0c3f40000ffffffffffffff01|@10706,1,@333,@9573|58,0,@9872 87,0,@9496 137,0,@9573 225,0,@9475 271,0,@10364 293,0,@9493 443,0,@9487 459,0,@9446 5163:D6,928|483b65187306ff5558ca090353415041514c8b7424084d89f54983fe017f10488d64241848b86049d1f1c27f0000c3a8010f85580300004c8b30ff70084c8b24244983fc017560488d6424085a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64c8b6c24184d89eb4c3b2de30200007502eb3c4d89db4d8b2b4d89ec4e8d2c6d010000004983fd03753149bdd0d8d0f1c27f00004d89db498d7308498d7d0848c7c101000000483bc9f3a67402eb0c49c7c403000000e9be0000004c8b6c24184d89eb4c3b2d800200007502eb3a4d89db4d89e54e8d2465010000004983fc03752f49bc38dad0f1c27f00004d89db498d7308498d7c240848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5c24184d89dc4c3b1d22020000750949c7c403000000eb4e4d89e44e8d2c6d010000004983fd01753649bdd8c8d0f1c27f00004d89e4498d742408498d7d0848c7c100000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184c89db4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424184983e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b4c2410e8d0fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c410c3488d64241848c7c001000000c3f4000000|@10708,1,@337,@9493,@9584,@9569|38,0,@10390 258,0,@9569 346,0,@9584 436,0,@9493 787,0,@9475 852,0,@10236 5164:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@336| 5165:D9,536|483b65187305ff5558cd014c8b30ff700841ff3641ff761041ff763048c7c001000000ff152f0200004989c048ba6848d1f1c27f0000488b0424488b5c2418ff150b0200004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c706070000004156f6442418010f85030100004c8b742418498b06ff15bb0100004989c6415648c7c001000000ff15a10100004989c048ba8048d1f1c27f0000488b0424488b5c243049b9e048d1f1c27f000049c7c201000000ff156c0100004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892eeb0749c7c601000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c420eb12488b0424ff15640000004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f400000000|@10710,1,@338,@5166,@5057,@5149,@5148,@5051,@5149|46,0,@10383 164,0,@10384 183,0,@10385 284,0,@10236 328,0,@10380 373,0,@10236 5166:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@339| 5167:D3,40|483b65187305ff5558cd014c8b30488b5808498b0648ba7874d1f1c27f0000ff22f4000000000000|@10714,1,@340|23,0,@10713 5168:D3,408|483b65187305ff5558cd014c8b30ff700841ff36498b4608488b5c24084883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000ff124989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9075d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3f4|@10724,1,@341|42,0,@9475 58,0,@10713 91,0,@9475 107,0,@10713 196,0,@10236 241,0,@10723 285,0,@10236 5169:D3,56|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@10733,1,@342| 5170:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10737,1,@343,@5171| 5171:D7,720|483b65187305ff5558cd09534c8b204c8b7010ff70284d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85fe000000498b06ff15ae0200004989c6415648c7c001000000ff15940200004989c048ba8048d1f1c27f0000488b0424488b5c241849b9e048d1f1c27f000049c7c201000000ff155f0200004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be486fd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892eeb0749c7c6010000004156488b4424104c8b304983fe11750c48c7c301000000e9da000000488b5c24184883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf047d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017504415deb12488b0424ff15900000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c410c3f400|@10738,1,@344,@5172,@5057,@5149,@5148|105,0,@10384 124,0,@10385 225,0,@10236 269,0,@10675 314,0,@10236 380,0,@9475 396,0,@10713 480,0,@10236 525,0,@10380 569,0,@10236 5172:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@345| 5173:D4,144|483b65187305ff5558cd014c8b304c8b4008498b46084983e802711048b8d0c6d0f1c27f0000488b5d08ff2348bb50e0d0f1c27f000049b9c877d1f1c27f0000ff15620000004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3f400000000000000|@10746,1,@354,@5163|30,0,@9475 46,0,@9649 56,0,@10741 5174:D4,408|483b65187305ff5558cd014c8b30ff7008498b0641ff7608488b5c24084883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23ff15720100004989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf047d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c700010000004883c408c3f4000000000000|@10744,1,@347,@5175|42,0,@9475 85,0,@9475 101,0,@10713 190,0,@10236 235,0,@10380 279,0,@10236 5175:D19,2688|483b65187305ff5558cd094989c553498b45004989c44d89e641f6c4010f85a40300004d8b1c244d8b6424084d8b134983fa3375644d8b5b0841f6c30175514d8b5b0841f6c301753e4d8b5b084983fb01752b4983fc01751c4d8b65104983fc03750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f851d0300004d8b364d8b7608498b064d8b760841ff364d8b750841ff3641ff7518488b5c24184883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000ff124989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706070000004156488b5c24284883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424204983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff23f6442410010f85020100004c8b742410498b06ff15a80800004989c6415648c7c001000000ff158e0800004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15590800004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c8933eb0c488d64240848c7c3010000004883fb017508415e4883c420eb12488b0424ff15780700004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34d89f441f6c6010f85530400004d8b364d8b1e4983fb3375554d8b760841f6c60175424d8b760841f6c601752f4d8b76084983fe01751c4d8b75104983fe03750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f85e10300004d8b342441ff7424084d8b7608498b064d8b760841ff364d8b750841ff3641ff7518488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000ff124989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706070000004156488b5c24304883eb027115488d64243848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e41564c8b4424284983e8027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b44242048bbd8c8d0f1c27f000049b9d877d1f1c27f0000ff15830400004989c641564c8b7424304983ee0441567115488d64244048b8d0c6d0f1c27f0000488b5d08ff23f6442418010f85020100004c8b742418498b06ff153b0400004989c6415648c7c001000000ff15210400004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15ec0300004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c8933eb0c488d64240848c7c3010000004883fb0175035beb12488b0424ff15100300004889c3488d6424084883fb017508415e4883c428eb12488b0424ff15e80200004989c6488d642430498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c34d8b75084d8b3641ff75184d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049bc4849d1f1c27f00004d8966084d892e41564c8b4424104983e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348bbd8c8d0f1c27f000049b9d877d1f1c27f0000ff15ff0100004989c641564c8b7424184983ee0441567115488d64242848b8d0c6d0f1c27f0000488b5d08ff23f6442418010f85020100004c8b742418498b06ff15b70100004989c6415648c7c001000000ff159d0100004989c048ba8048d1f1c27f0000488b0424488b5c240849b9e048d1f1c27f000049c7c201000000ff15680100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c8933eb0c488d64240848c7c3010000004883fb0175035beb12488b0424ff158c0000004889c3488d6424084883fb017508415e4883c410eb12488b0424ff15640000004989c6488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f400000000|@10745,1,@348,@5178,@5179,@5057,@5149,@5148,@5163,@5180,@5181,@5057,@5149,@5148,@5163,@5177,@5057,@5149,@5148|216,0,@9475 232,0,@10713 307,0,@9475 323,0,@10713 412,0,@10236 500,0,@10236 577,0,@9475 639,0,@10384 658,0,@10385 758,0,@10236 803,0,@10728 847,0,@10236 1146,0,@9475 1162,0,@10713 1237,0,@9475 1253,0,@10713 1300,0,@10440 1348,0,@10236 1436,0,@10236 1524,0,@10391 1569,0,@10392 1600,0,@9475 1621,0,@9493 1631,0,@10742 1670,0,@9475 1732,0,@10384 1751,0,@10385 1851,0,@10236 1896,0,@10728 1940,0,@10236 2166,0,@10389 2201,0,@9475 2217,0,@9493 2227,0,@10742 2266,0,@9475 2328,0,@10384 2347,0,@10385 2447,0,@10236 2492,0,@10728 2536,0,@10236 5176:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10743,1,@346,@5145| 5177:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@353| 5178:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@349| 5179:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@350| 5180:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@351| 5181:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@352| 5182:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@10761,1,@355| 5183:D5,888|483b65187306ff5558ca09035041504151f6c3010f854d0300004c8b33ff73084c8b2c244983fd010f8581000000488d6424084c8b24244d89e54983fc017f10488d64241848b86049d1f1c27f0000c3488b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c410c34c8b6424084d89e54983fc017f10488d64242048b86049d1f1c27f0000c34c8b6424104d89e24c3b25bc0200007502eb3c4d89d24d8b1a4d89dc4e8d1c5d010000004983fb03752e49bbd0d8d0f1c27f00004d89d2498d7208498d7b0848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5424104d89d34c3b155c020000750949c7c403000000eb4e4d89db4e8d2465010000004983fc03753649bc38dad0f1c27f00004d89db498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024154488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24104d89d84d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00714d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4c24104983e9027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b442420488b5c2408e8f8fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3488d64241848c7c001000000c3f4000000|@10771,1,@357,@9584,@9569|71,0,@10390 196,0,@10390 249,0,@9569 338,0,@9584 747,0,@9475 812,0,@10236 5184:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@358| 5185:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b84849d1f1c27f0000c3f4000000|@10402,1,@375|75,0,@10389 5186:D5,840|483b65187305ff5558cd0953a8010f85200300004c8b30ff7008498b0641ff76084d8b76204c8b6c24104c89eb4983fd017f10488d64241848b86049d1f1c27f0000c34983fe03750c49bee07bd1f1c27f0000eb0749c7c60100000041564889db4883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000ff124989c64156488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f0000488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004c8b6c24104983fd01753d498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c418c3584883c418ff2549010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bd107cd1f1c27f00004c896b084c89334883fb017508415d4883c408eb12488b0424ff15fd0000004989c5488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e82bfdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64240848c7c001000000c3f4000000000000|@10778,1,@360,@5188,@5187|58,0,@10390 75,0,@10773 110,0,@9475 126,0,@10713 159,0,@9475 175,0,@10713 265,0,@10236 309,0,@10380 354,0,@10236 572,0,@10775 701,0,@9475 761,0,@10236 5187:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@362| 5188:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@361| 5189:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@363|75,0,@10440 5190:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@364| 5191:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@365| 5192:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@366|75,0,@10779 5193:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@367|75,0,@10782 5194:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@368| 5195:D3,1416|483b65187305ff5558cd09534c8b34244c89f34983fe017f10488d64240848b86049d1f1c27f0000c3a8010f85360500004c8b30ff70084c8b2c244983fd010f852e020000488d6424084d8b1e4d8b76184d8b2b4e8d2c6d010000004983fd01750f49bc307dd1f1c27f0000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0ddf0400000f87b70100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889db4883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f00004c89f0ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488d64240848b8f8c7d0f1c27f0000488b5d08ff234d8b1e4d8b76184d8b2b4e8d2c6d010000004983fd01750f49bc307dd1f1c27f0000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0dae0200000f87820200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889db4883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348ba7874d1f1c27f00004c89f0ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e80dfbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c3f4000000ffffffffffffff01ffffffffffffff01|@10786,1,@369|32,0,@10390 100,0,@10785 342,0,@9475 358,0,@10713 446,0,@10236 613,0,@9487 653,0,@10785 895,0,@9475 911,0,@10713 999,0,@10236 1145,0,@10484 1243,0,@9475 1303,0,@10236 1369,0,@9487 5196:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@370|75,0,@10440 5197:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@371| 5198:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@372| 5199:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@373| 5200:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@374| 5201:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@378| 5202:D9,1712|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84847d1f1c27f0000c34c8b284d89ee4983fd050f859b0100004c8b7008498b0641ff760841ff76104c89cb4883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23e895ffffff4989c641564c8b7424084983fe03750c49bdd847d1f1c27f0000eb0a49bd8847d1f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b5c24204883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b442418ff150c0600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c418c34d89f54983fe030f85dd010000ff7008488b58104d89c94983e9027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348b8207ed1f1c27f000049b838dad0f1c27f0000ff15c80400004989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408e8b1fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd187ad1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be4032d1f1c27f00004c8930ff15dd0300004889c34883fb017508415e4883c410eb12488b0424ff15ba0300004989c6488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb07fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ee4983fd010f85db0100004c8b68084d8b75004d8b5d084d8b2b4e8d2c6d010000004983fd01750f49bc70d8d0f1c27f0000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05810200000f87640100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d89650849c745000700000041554c89cb4c89f0e835fbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff234983fe070f85c4000000488b580848b8207ed1f1c27f000049b8d8c8d0f1c27f0000ff1502010000488d642408ff15ef0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc87fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d6424084c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000ffffffffffffff01|@10803,1,@388,@5213,@5208,@5214,@5212,@5208,@5050|32,0,@10373 88,0,@9475 125,0,@10379 137,0,@10376 203,0,@9475 303,0,@10236 504,0,@9475 520,0,@10790 530,0,@9584 567,0,@9475 665,0,@10236 710,0,@10759 754,0,@10236 839,0,@10236 884,0,@10801 1002,0,@9565 1259,0,@10440 1307,0,@10391 1432,0,@9487 1462,0,@10790 1472,0,@9493 1533,0,@10236 1578,0,@10802 5203:D3,40|483b65187305ff5558cd014989c648ba307ed1f1c27f0000498b06498b5e08ff22f4000000000000|@10800,1,@387|16,0,@10791 5204:D10,656|483b65187305ff5558cd09534c8b34244d89f14983fe017f10488d64240848b84847d1f1c27f0000c34c8b284d89ee4983fd017528488b40084c89cb4883eb02488d642408711048b8d0c6d0f1c27f0000488b5d08ff23ff257b0200004983fe030f8569010000ff7008488b58104d89c94983e9027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348b8207ed1f1c27f000049b838dad0f1c27f0000ff152a0200004989c641564c8b4c24104983e9027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348b8207ed1f1c27f0000488b5c240849b838dad0f1c27f0000ff15de010000ff15d00100004889c34883fb01750c48bbe879d1f1c27f0000eb1348b8e879d1f1c27f0000ff15a30100004889c34883fb017508415e4883c410eb12488b0424ff15800100004989c6488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd407ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488b581048b8587ed1f1c27f000049b86841d1f1c27f0000ff15ba0000004989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf86ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f400|@10798,1,@382,@5208,@5209,@5210,@5211,@5208,@5208,@5145|32,0,@10373 73,0,@9475 126,0,@9475 142,0,@10790 152,0,@9584 189,0,@9475 205,0,@10790 220,0,@9584 251,0,@10757 263,0,@10757 345,0,@10236 390,0,@10792 470,0,@10793 480,0,@10329 535,0,@10236 580,0,@10671 5205:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@10796,1,@379,@5206| 5206:D5,792|483b65187305ff5558cd09534c8b60084c8b70104c8b68206a016a014983fd03756c4d8b2e4983fd0575634d8b5e084d8b334d8b6b084d8b53104d8b4b184d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d8953084d892b4d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d895d004c892c244c89742408eb0d48c70424010000004c897424084c8b3424ff7424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415541f6c6010f85f70000004d8b36498b064d8b76084983fe03750c49bdd847d1f1c27f0000eb0a49bd8847d1f1c27f00004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c24284883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23ff15ee0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb0749c7c6010000004156488b5c24284883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff2348ba687ed1f1c27f0000488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be787ed1f1c27f00004c89334883fb017504415deb12488b0424ff15930000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3f400000000|@10797,1,@380,@5207,@5050|232,0,@10379 244,0,@10376 310,0,@9475 404,0,@10236 488,0,@9475 504,0,@10794 594,0,@10236 638,0,@10795 5207:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@381| 5208:D5,888|483b65187306ff5558ca09035041504151f6c3010f854d0300004c8b33ff73084c8b2c244983fd010f8581000000488d6424084c8b24244d89e54983fc017f10488d64241848b86049d1f1c27f0000c3488b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c410c34c8b6424084d89e54983fc017f10488d64242048b86049d1f1c27f0000c34c8b6424104d89e24c3b25bc0200007502eb3c4d89d24d8b1a4d89dc4e8d1c5d010000004983fb03752e49bbd0d8d0f1c27f00004d89d2498d7208498d7b0848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5424104d89d34c3b155c020000750949c7c403000000eb4e4d89db4e8d2465010000004983fc03753649bc38dad0f1c27f00004d89db498d7308498d7c240848c7c101000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024154488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24104d89d84d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00714d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4c24104983e9027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b442420488b5c2408e8f8fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3488d64241848c7c001000000c3f4000000|@10799,1,@386,@9584,@9569|71,0,@10390 196,0,@10390 249,0,@9569 338,0,@9584 747,0,@9475 812,0,@10236 5209:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@383| 5210:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@384| 5211:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@385|75,0,@10779 5212:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@391|75,0,@10779 5213:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@389|75,0,@10779 5214:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@390| 5215:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@392| 5216:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@395| 5217:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@394|75,0,@10779 5218:D4,528|483b65187305ff5558cd014c8b30488b58084d8b5e084d8b76204d8b2b4e8d2c6d010000004983fd01750f49bc307dd1f1c27f0000e9ac0000004d89ea4983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d9e0100000f87830100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c5104d89eb49d1eb43c6041c2049d1ed43c6442c013d41806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89f0ff15f50000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c348b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@10807,1,@396,@5050|45,0,@10785 284,0,@9475 381,0,@10236 501,0,@9487 5219:D9,1176|488dbc24e8feffff483b7d187306ff5560ca0d0152534150ff306a016a016a0148c7c0010000004889e3ff15a8040000ff3424ff742410ff7424204d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e104c8b6c24084d896e084c8b6c24104d892e41566a016a016a0148c7c0010000004889e3ff154c040000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15260400004c8b2c24ff742408ff7424184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104c8b6424084d8966084d892e41566a016a016a0148c7c0010000004889e3ff15cb030000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15a5030000ff742408488b7c24184c8bb424e000000041ff76304d8d57e04c3b55107305ff5550cd804d89d749c742f8030000004c8bb424b00000004d8972104c8b2c244d89ee4d896a0849bdc86653f1c27f00004d892a4c8bac24e800000041ff75404d8d4fe04c3b4d107306ff5550ca80444d89cf49c741f8030000004c8bac24880000004d8969104c8b24244d89e54d89610849bc306753f1c27f00004d89214c8ba424f000000041ff742460498d77e0483b75107306ff5550ca80664989f748c746f8030000004c8b6424684c8966104c8b1c244d89dc4c895e0849bb986753f1c27f00004c891e4c8b9c24f80000004d8b43284d8d5fe04c3b5d107306ff5550cac0774d89df49c743f803000000488b542438498953104d89430849b8006853f1c27f00004d890341534c8b9c24000100004d8b5b584d8d47e04c3b45107306ff5550cac07e4d89c749c740f803000000498978104d89580849bb686853f1c27f00004d8918498d7fe0483b7d107306ff5550ca40774989ff48c747f8030000004c8b9c24d80000004c895f104c8b9c24000100004c895f0849bbd06853f1c27f00004c891f4c8b9c24000100004d8b5b20498d5f90483b5d107306ff5550cac07f4989df48c743f80d000000488973604c894358488b7424784889735048897b484c894b40488b7c24204989f948897b384c895330488b3c244989fa48897b284c895b20488bbc24a000000048897b18488bbc24d000000048897b10488b7c244848897b0848bfc081d1f1c27f000048893b48c7c701000000498d4ff0483b4d107306ff5550ca887f4989cf48c741f801000000c641ff40488939498d77e8483b75107306ff5550ca0a7f4989f748c746f80200000048894e0848bfe86a53f1c27f000048893e498d57e8483b55107306ff5550ca4a7f4989d748c742f80200000048894a0848bf686b53f1c27f000048893a488bbc2410010000488b7f08ff742448ffb424d00000004156ffb424b00000004155ffb424980000004154ffb42410010000ffb42440010000ffb42418010000ffb424f0000000415341524151ffb424e80000004150575652ffb42458010000ffb424080100004989da4989c9488b8424a001000048c7c3010000004c8b8424b0010000ff155f000000488da424c8000000488b542410498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424484c89700849be886d53f1c27f00004c8930ff22f40000000000|@10838,1,@423,@5245,@5240,@5240,@5240,@5240,@5240|347,0,@5220 422,0,@5221 495,0,@5222 560,0,@5223 622,0,@5224 686,0,@5225 827,0,@10814 912,0,@5229 956,0,@5230 1157,0,@5232 5220:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@399| 5221:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@400| 5222:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@401| 5223:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@402| 5224:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@403| 5225:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb06953f1c27f00004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@10813,1,@405,@5227|101,0,@5226 5226:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10812,1,@404| 5227:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@406| 5228:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10815,1,@407| 5229:D3,88|483b65187305ff5558cd054c8b72084d8b3648c7c00100000041f6c60175314d8b66084989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc9c3f4000000000000|@10816,1,@408|46,0,@9475 5230:D3,400|483b65187305ff5558cd054c8b72084d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49be4882d1f1c27f0000e9ad00000049c7c5010000004d89e641f6c60175314d8b56084d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc94c3b2dcf0000007c1048b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017532418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be206d53f1c27f00004c8930c34d8b1c244d8b5424084f895caefc4d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eb8df400ffffffffffffff01|@10821,1,@410|100,0,@10817 144,0,@9475 189,0,@10818 319,0,@5231 356,0,@9475 5231:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@10820,1,@409|41,0,@9998 5232:D5,248|483b65187305ff5558cd054989c6498b0641ff7608488b5208ff124989c641f6c60175424d8b264d89e54d8b64242841f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375174d89ee4d8b76284d8b364d8b760849c70603000000eb004c8b34244d8b6e3041f6c501757141ff75004d89f6498b46186a016a0148bb3883d1f1c27f00004989e0ff1582000000ff3424488b442410ff156c0000004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424184c8b2c244d897500488d64241048c7c001000000c3488d64240848c7c001000000c3f40000000000|@10832,1,@416,@5239,@5234|133,0,@10822 5233:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@411| 5234:D4,168|483b65187306ff5558ca09014989de415049c7c4010000004d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f80100000041c645ff404d8965004155498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b34244c89730849bed06f53f1c27f00004c893349b8a084d1f1c27f0000ff153e0000004989c44c8b34244d8b36488d642408415d4d8965004d89750848c7c001000000c3f400000000|@10833,1,@418,@5108|103,0,@5235 116,0,@10830 5235:D6,296|483b65187305ff5558cd054989c6524d8b2e4983fd0d0f850201000041ff7608498b5e1048c1eb034883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f814d1f1c27f00004156ff15ed000000415e4989c541f6c5010f84970000004981fd1f4e00007409488d6424104c89f0c34c8b6c2408498b5d084d89ed4d8b45104c89f0ff15ab0000004989c641564c8b742408498b064c8b304983fe0775504c8b34244d8b2e4983fd0d752e4d89f641ff7608488b5c241849b88083d1f1c27f0000ff15640000004989c64c8b2c244d897500488d642408eb15488d64241848b8d083d1f1c27f0000488b5d08ff23584883c410c3488d64241048b80815d1f1c27f0000488b5d08ff23488d6424084c89f0c3f4|@10828,1,@413,@5108,@5237,@4933|83,0,@10021 206,0,@10824 245,0,@10826 272,0,@10022 5236:D3,16|483b65187305ff5558cd01c3f4000000|@10825,1,@412| 5237:D3,560|483b65187306ff5558ca09014c89c2534c8b304983fe0d753cff7008ff70104d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e084c8b6c24084d892e41564c8b7424184d8b36eb15488d64240848b8d083d1f1c27f0000488b5d08ff2341f6c60175474d8b264d8b6e084d8b5c24084d8b1b4c3b5c241075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb349c7c6010000004983fe010f8556010000488b0424ff124989c64983fe010f853a0100004c8b6c24084d89ee4983e5094983fd01750949c7c303000000eb0749c7c3010000004983f3024d89f64983e6034983fe01750949c7c403000000eb0749c7c4010000004983f40249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d34f5f9ffffff4983fb03750949c7c309000000eb0749c7c3010000004d0bf34d0bf4498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8970104c89680848c7000d0000004c8b7424104d8b364d8975004d8d67e84c3b65107305ff5550cd014d89e749c74424f8020000004c8b34244d89742408488d642408498904244c8b6c24104d8b5d004d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d89ed4d8975004883c418c3488d642420498b06c3488d6424204d8b36498b06c3f40000000000|@10829,1,@414|92,0,@10826 292,0,@10468 5238:D3,16|483b65187305ff5558cd01c3f4000000|@10831,1,@415| 5239:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@417| 5240:D3,216|483b65187305ff5558cd0949c7c6010000004d8d5ff04c3b5d107306ff5550ca08404d89df49c743f80100000041c643ff404d89334d8d67e84c3b65107306ff5550ca08084d89e749c74424f8020000004d895c240849bef87553f1c27f00004d8934244d8d6fe84c3b6d107306ff5550ca08184d89ef49c745f8020000004d895d0849bee07653f1c27f00004d8975004d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849bb787753f1c27f00004d891e4c89234c896b084c89731048c7c001000000c3f400000000000000|@14075,1,@1467|88,0,@5241 133,0,@5243 178,0,@5244 5241:D4,32|483b65187305ff5558cd054889c34c8b7208498b06ff251d000000f400000000|@10834,1,@419,@5242| 5242:D3,112|483b65187305ff5558cd0953a80175524c8b30488b400841ff3641ff7608488b5c2410e8d8ffffff488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22488d64240848c7c001000000c3f4|@10835,1,@420| 5243:D3,112|483b65187305ff5558cd054c8b304c8b68084d8d67e84c3b65107306ff5550ca04604d89e749c74424f8020000004d896c24084d8934244c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f4|@10836,1,@421| 5244:D3,152|483b65187305ff5558cd054c8b72084d8b3641f6c60175764d8b264d8b6e084d8b14244d8b6424084c3bd07502eb2f4d8b1a4e8d1c5d010000004c8b084c89c94e8d0c4d010000004d3bd97530498d7208488d7808483bc9f3a67402eb1f498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d89ee483b65187306ff5558ca0140eb8448c7c001000000c3f400|@10837,1,@422| 5245:D9,4568|488dbc24f8feffff483b7d187306ff5560ca090753415041514152a8010f856d030000ff30ff70084c8b6c24084d8b65004d89e64983fc03751a4d89ed4d89ee41ff75084d89f641ff7610ff742438e9250a00004d89ed4983fe01751a4d89ed4d89ee41ff75084d89f641ff7610ff742438e9d80300004d89ed4d8b75084d89ed4d8b6d10498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c8b6424184c8963104c896b0849bd688a53f1c27f00004c892b498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304c8b7424204d8b5e284d89f64d8b66304d89f64d8b56504d89f64d8b6e704d89f64d8b4e784d8b124d8b1b4d8b014d8b4d004d8d6fd04c3b6d107306ff5550ca095f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d89650048ba6088d1f1c27f00004c8b4424504c8b4c24484c8b64245841564155ff35b410000041544c8b542430ff159f1000004c8b7424204d8b6e184d8b6d004983fd03750949c7c501000000eb574c8b6c24404c8b5c24384d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24284d895d084d896500ff342441554156ff742430ff742430ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a800000048898424a8000000488b44246848899c24b0000000488b5c246048898c24b800000048899424c00000004889b424c80000004889bc24d00000004c898424d80000004c8b4424584c898c24e00000004c8b4c24504c899424e80000004c8b5424484c899c24f00000004c89a424f80000004c89ac24000100004c8b34244c89b424080100004c8b7424084c89b424100100004c8b7424104c89b424180100004c8b7424184c89b424200100004c8b7424204c89b424280100004c8b7424284c89b424300100004c8b7424304c89b424380100004c8b7424384c89b424400100004c8b7424404c89b424480100004881c4a0000000e975fcffff488d642478488d642410ff742408f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be58a15df1c27f00004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be50b05df1c27f00004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d64241848c7c001000000c2a800f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849be70b65df1c27f00004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849bed0b65df1c27f00004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d642408498d47d8483b45107303ff55504989c748c740f8040000004c8b34244c897018488d6424084c8b7424284c8970104c8b7424104c89700849bef8b75df1c27f00004c89306a016a016a014889e3ff15ba0c0000ff3424ff7424104c8b7424484d8b2e49c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424504d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49be4882d1f1c27f0000e9b700000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d7a0b00007c15488d64246848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01753c418066ffbf41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd38bb5df1c27f00004d892e4156ff742440eb434d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e97bfffffff60424010f85760100004c8b2c244d8b75004d89ed41ff750841ff3641ff760841ff761041ff761841ff762041ff762841ff763041ff763841ff764041ff764841ff765041ff7658ffb42488010000ffb42488010000ffb42488010000ffb424880100004c8bb424880100004c8bac24800100004c8ba424780100004c8b9c24700100004c8b9424b00100004c8b8c24680100004c8b842460010000488bbc2458010000488bb42450010000488b942448010000488b8c2440010000488b9c2438010000488b842430010000ff742450ff742450ff742450ff742450ff742450ff742450ff742450ffb424d8000000ffb424d0000000ffb42430010000ffb42448010000ffb424f0000000ff742478ff742478ff742478ff7424784156415541544153415241514150575652515350ffb42490010000488b842468010000488b9c24600100004c8b8424580100004c8b8c24500100004c8b942448010000ff1562090000488da42480000000415d4c892c24483b65187303ff5558e980feffff488d6424285a488b842490000000ff12ff742420ff742448ff742448ff742448ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c000000048898424c0000000488b44246048899c24c800000048c7c30100000048898c24d000000048899424d80000004889b424e00000004889bc24e80000004c898424f00000004c8b4424584c898c24f80000004c8b4c24504c899424000100004c8b5424484c899c24080100004c89a424100100004c89ac24180100004c8b34244c89b424200100004c8b7424084c89b424280100004c8b7424104c89b424300100004c8b7424184c89b424380100004c8b7424204c89b424400100004c8b7424284c89b424480100004c8b7424304c89b424500100004c8b7424384c89b424580100004c8b7424404c89b424600100004881c4b8000000e98cf5ffff488d642468f60424010f859d0000004c8b34244d8b2e4d89f641ff76084d8b750041ff7508498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849bea0bb5df1c27f00004c8930ff124c8b3424498b16488d642408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849be00bc5df1c27f00004c8930ff12415d4c892c24483b65187303ff5558e959ffffff488d642408498d47d8483b45107303ff55504989c748c740f8040000004c8b34244c897018488d6424084c8b7424284c8970104c8b7424104c89700849be28bd5df1c27f00004c89306a016a016a014889e3ff1580060000ff3424ff7424104c8b7424484d8b2e49c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424504d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4983fc01750f49bd4882d1f1c27f0000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d480500007c15488d64246848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01753c418066ffbf4d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68c05df1c27f00004d892e4156ff742438eb434d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e97bfffffff60424010f85990200004c8b34244d8b2e4d89f641ff76084d8b750041ff750841ff751041ff7518498b452048ba5802d3f1c27f00004156488b5c24384c8b4424304c8b8c24800000004c8b942490000000ff15340400004989c641ff3641ff761041ff762041ff76284d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060100000041564c8bb424b0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6424184d8b2c244983fd030f85bf0000004d89e44d8b6c24084d89e44d8b6424184d8b6d00498b34244c8b66f849c1e40849c1ec074983cc014983fc01750c49bb4882d1f1c27f0000eb554d89e24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab4c89e14c89df48d1e9f348a5418063ffbf4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c7042401000000eb034d89e44d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084c8b1c244d895d20488d6424084d8975184c8b34244d897510488d6424084c8b5c24184d89de4d895d084d8965004c8b6424104d892c24488b542440498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6c24204c896c2428483b65187303ff55584883c428e95dfdffff488d6424205a488b8424f8000000ff12ff742420ff742448ff742448ff742448ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c000000048898424c0000000488b44246048899c24c800000048c7c30100000048898c24d000000048899424d80000004889b424e00000004889bc24e80000004c898424f00000004c8b4424584c898c24f80000004c8b4c24504c899424000100004c8b5424484c899c24080100004c89a424100100004c89ac24180100004c8b34244c89b424200100004c8b7424084c89b424280100004c8b7424104c89b424300100004c8b7424184c89b424380100004c8b7424204c89b424400100004c8b7424284c89b424480100004c8b7424304c89b424500100004c8b7424384c89b424580100004c8b7424404c89b424600100004881c4b8000000e93feeffff488d642468f400ffffffffffffff01ffffffffffffff01|@14069,1,@1462,@6013,@5322,@6264,@5322,@5250,@9493|175,0,@5246 323,0,@10851 993,0,@6240 1055,0,@6250 1175,0,@6254 1237,0,@6255 1332,0,@6256 1406,0,@9475 1532,0,@10817 1581,0,@9475 1631,0,@10818 1764,0,@6258 1813,0,@9475 2753,0,@6259 2815,0,@6260 2910,0,@6261 2984,0,@9475 3110,0,@10817 3159,0,@9475 3209,0,@10818 3342,0,@6263 3391,0,@9475 3474,0,@13667 3790,0,@10817 5246:D5,616|483b65187305ff5558cd05524c8b304c8b68084c8b58104c8b50184c8b48204c8b24244d8b6424104d8b042449c7c40100000041f6c0017536498b70084c89e74883c7027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234989f04989fc483b65187306ff5558ca007febc44983fd030f85be00000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd6086d1f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff1556010000e9b900000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd6086d1f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff15900000004c8b2c244d8b75104d89f44d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084989064d89ed4d8934244d89ed4d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000|@10848,1,@425,@5249,@5248|77,0,@9475 165,0,@10839 355,0,@10839 5247:D3,112|483b65187305ff5558cd014c8b304c8b60084c8b68104983fc0175434983fd01753d4983fe017d1048b89086d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c348b80887d1f1c27f0000488b5d08ff23f4|@10847,1,@424|42,0,@10841 97,0,@10844 5248:D3,200|483b65187305ff5558cd014c8b184c8b70084c8b48104c8b50184c8b40204c8b60284d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f80100000041c645ff404d8955004d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d896a0849c702030000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d0849c7450001000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f400|@10850,1,@427| 5249:D3,168|483b65187305ff5558cd014c8b184c8b70084c8b48104c8b68184c8b40204c8b60284d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d896a0849c702010000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d0849c7450001000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f40000000000|@10849,1,@426| 5250:D6,272|483b65187306ff5558ca0d07525341504151415250f60424010f85e10000004c8b3424498b064d89f641ff76084c8b284d89ee4983fd01752c4c8b6808488b58104c8b5424484c8b74245841564c89e84c8b4424184c8b4c2430ff15d8000000e9870000004983fe037540488b5808488b40104c8b5424404c8b7424584c8b6c24504c8b642448ff742428ff742428ff7424284156415541544c8b4424404c8b4c2460ff1587000000eb41488b58104c8b40184c8b4c24584c8b5424504c8b7424484c8b6c24304d8b6d084c8b642440ff742428415641554154ff742440ff742440ff742440ff153c000000415d4c892c24483b65187303ff5558e915ffffff488d64243048c7c001000000c22000f4|@13644,1,@1163,@5987,@5996,@5251| 5251:D4,456|483b65187306ff5558ca09074989dd50415141524d8b4830498b704041ff7020498b40604d8b5028498b58584d8d67e04c3b65107306ff5550ca49274d89e749c74424f8030000004d894424104d896c240849bea89253f1c27f00004d8934244d8d5fe04c3b5d107306ff5550ca49374d89df49c743f8030000004d8943104d896b0849be109453f1c27f00004d89334d8d77e04c3b75107306ff5550ca493f4d89f749c746f8030000004d8946104d896e0848bf789553f1c27f000049893e498d4fe0483b4d107306ff5550ca497f4989cf48c741f8030000004c8941104c89690849bdf09653f1c27f00004c89294d8b6808498b7838498b50484d8d47904c3b45107306ff5550cacf7e4d89c749c740f80d0000004989406049895858498948504989504849897040498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930498d5fe0483b5d107306ff5550ca00014989df48c743f8030000004c8b34244c897310488d6424084c8b34244c897308488d64240849be589853f1c27f00004c893348ba3889d1f1c27f00004c8b4c2410488b042449bae8fcd2f1c27f0000ff1528000000488d64240848c7c001000000c20800f4|@13659,1,@1184,@5261|84,0,@5252 133,0,@5254 181,0,@5256 229,0,@5258 394,0,@5260 407,0,@10856 426,0,@13642 5252:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5610ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@10853,1,@428,@5253| 5253:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@429| 5254:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5618ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@10853,1,@430,@5255| 5255:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@431| 5256:D4,192|483b65187305ff5558cd0552504c8b7424084d8b7610498b16488b0424ff124c8b7424084d8b7608498b064c8b34244d8b2e4d89f64d8b6608488d6424084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@10853,1,@432,@5257| 5257:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@433| 5258:D4,176|483b65187305ff5558cd0552ff70084c8b7424084d8b7610498b5650ff124c8b7424084d8b7608498b064d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c70603000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15390000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f400000000|@10853,1,@434,@5259| 5259:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@435| 5260:D3,880|483b65187306ff5558ca0d034889d7504d8b58084d8b334983fe03751d4d8b284d8b014d8b59084d8b5110ff770849c7c601000000e984010000488d6424084d8b204d8b014d8b51084d8b49104c8b6f104d89ee4d8b6d004e8d2c6d01000000498b30488d1c75010000004983fd0175084d89c6e9b30000004883fb017505e9a8000000498d741dff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15b60200000f87f60000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee498936488b7f104c89e9488d7708498d7e0848d1e9f3a44983c5104889d9498d700849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed888d1f1c27f00004c8930c348b8f8c7d0f1c27f0000488b5d08ff2341f6c50175364d8b4d084d89f44983c4027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89e6483b65187306ff5558ca886debc44c8b6f104d8b6d004e8d2c6d010000004d8b204e8d0c65010000004983fd0175084d89c4e9bc0000004983f90175094c8b6710e9ad0000004b8d740dff4889f04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d144501000000483b15000100000f87e30000004889d14c8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550cacc6f4d89e748d1e949894c24f841c64424ff414883ea0249c74494fc0000000048d1ee49893424488b7f104c89e9488d7708498d7c240848d1e9f3a44983c5104c89c9498d700849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8d6fe04c3b6d107306ff5550ca085c4d89ef49c745f8030000004d8955104d895d084d896500498d47d0483b45107306ff5550ca08604989c748c740f8050000004c896820488958184c8b6c24084c89681048c74008030000004c89305a4883c408ff22488d642410488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@10855,1,@436|418,0,@10854 432,0,@9487 472,0,@9475 848,0,@9487 5261:D4,248|483b65187306ff5558ca0d0752534151415241ff7030498b784041ff7020498b58604d8b5028498b48584d8b60104d8b58184d8b30498b50504d8b68084d8b4838498b70484d8d47884c3b45107306ff5550cacf7e4d89c749c740f80e0000004989586848bb8089d1f1c27f000049895860498948584989505049897048498978404d8948384c8b4c24084d8948304d8950284c8b14244d895020488d6424104d8958184d8960104d8968084d89304989c14c8b6c24084c8b642410415b488d6424104c8b34244d8b5608488d642408415441534152ff7424184989c248c7c30100000048c7c0030000004c896c2420ff251a000000f400|@10862,1,@440,@5263|102,0,@10858 5262:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10859,1,@437| 5263:D4,232|483b65187306ff5558ca09074c89c64c89cf4d8d77e84c3b75107306ff5550cac9044d89f749c746f8020000004989760849bd709e53f1c27f00004d892e4d8d6fe84c3b6d107306ff5550cac9444d89ef49c745f8020000004989750849bc089f53f1c27f00004d896500498d4fe8483b4d107306ff5550cac9644989cf48c741f8020000004c8969084c89314d89d0488b54242049bd108ad1f1c27f00004c8b6424184c8b5c24104c8b4c2408415153ff7424104989d14889fb4c895c24184c896424204c896c242848894424304c89c04989f04c895424384989caff251d000000f400000000|@11338,1,@627,@5266|51,0,@5264 95,0,@5265 151,0,@10861 5264:D3,112|483b65187305ff5558cd054c8b7208498b5640ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10860,1,@438| 5265:D3,112|483b65187305ff5558cd054c8b7208498b5668ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@10860,1,@439| 5266:D169,23216|488dbc24e8feffff483b7d187306ff5560ca090750534150415141524c8b7424204d8b364983fe2d75724c8b742420498b4608488b5c2418488b742410488b54240859488d6424204c8b6c24384c8b6424304c8b5c24284c8b5424204c8b4c24184c8b442410488b7c240848897c24084c894424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438e964ffffff4c8b7424204d8b364983fe117515488d64242848b8508ad1f1c27f0000488b5d08ff234c8b7424204d8b364983fe217515488d64242848b8208bd1f1c27f0000488b5d08ff234c8b7424204d8b364983fe3d7515488d64242848b8b08bd1f1c27f0000488b5d08ff234c8b7424204d8b364c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e99e010000909090e9a8050000909090e94e0a0000909090e9780d0000909090e911110000909090e994150000909090e940180000909090e956180000909090e958180000909090e9b1180000909090e9c4180000909090e90f1a0000909090e9881a0000909090e9bc1c0000909090e9be1c0000909090e9771e0000909090e9791e0000909090e95c200000909090e915220000909090e9b9240000909090e928250000909090e932290000909090e934290000909090e90b2c0000909090e9112c0000909090e9f52c0000909090e96d2d0000909090e9772d0000909090e9e52d0000909090e9c5300000909090488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff7618498b46204d8b66284c8b5c24204c8b5424784c8b4c24484c8b442460488b7c2428488b742458488b542468488b4c2450488b5c24704c8b6c244048895c2430488b5c241048894c24384889542440488974244848897c24504c894424584c8b4424084c894c24604c8b0c244c895424684989c2488b4424184c895c24704c896424784c896c24284883c428ff252e5d0000488d6424304c8b7424204d8b76084c8b6c24204d8b6d104c8b64242041ff7424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d89750049bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e184d8966104d896e0849c7063300000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442438488b5c24684c8b4424584c8b4c24504c8b542448e81efcffff4989c6415648b8388cd1f1c27f000048c7c303000000ff15ea5b00004989c64156488b0424ff15d35b00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c897310415e4c89730848c7030700000048bad88ed1f1c27f0000488b0424ff155a5b00004989c641f6c6010f854402000041ff3648b87899d1f1c27f0000488b5c24104c8b4424084c8b4c24284c8b542420ff151e5b00004989c6415648ba9899d1f1c27f0000488b442430488b5c24284c8b44242849b9c899d1f1c27f0000ff15e85a00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be189cd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668e925520000488d642440e90e5200004c8b7424204d8b760841ff3641ff760841ff761041ff76204c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24704c8b4424684c8b4c24604c8b542458e8bdf8ffff4989c641564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b442450488b5c24784c8b4424704c8b4c24684c8b542460e863f8ffff4989c64156488b442450ff15135800004989c64983fe037502eb7c49bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4c8bac24880000004e8d2cedf9ffffff498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730848c7030d00000048bad88ed1f1c27f0000488b442408ff1584570000488b442408ff15715700004989c54d8b75004983fe05754e4d8b75084d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9d449000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d47e0483b45107303ff55504989c748c740f8030000004c8b7424084c8970104c8b34244c89700848c7000500000048bad88ed1f1c27f0000488b5c2418ff15f75500004989c641f6c6010f857a010000488d64241048b8709cd1f1c27f0000488b5c24284c8b4424084c8b4c24384c8b542430ff15b95500004989c6415648b8909cd1f1c27f0000488b5c24284c8b4424084c8b4c24404c8b542438ff15885500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcb09cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb89dd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424404d8b7668e9fc4b00004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d897508415e488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9e74600004c8b7424204d8b760841ff36498b460841ff761041ff76184c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c24484d8d77984c3b75107306ff5550ca813f4d89f749c746f80c00000049897e584d8946504d894e484d8956404d895e384c8b5c24284d895e304c8b5c24184d895e284d8966204d896e184c8b6c24204d896e104c8b6c24384d896e0849bd088f54f1c27f00004d892e4d8d47e04c3b45107306ff5550ca01404d89c749c740f80300000049bd70ccd1f1c27f00004d89681049bd8075d1f1c27f00004d8968084d8930498d5fd0483b5d107306ff5550ca01014989df48c743f8050000004c8b7424384c8973204c8b34244c89731849be50e0d0f1c27f00004c89731049be58cdd1f1c27f00004c89730849be70cdd1f1c27f00004c89334c8b4c24204c8b542418ff15c75200004989c641564c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24784c8b4424684c8b4c24604c8b542458e8e0f2ffff4989c64156488b442408ff15585200004c8b304983fe05757a4c8b7008ff701048bad88ed1f1c27f00004c89f0488b5c2408ff15285200004989c641f6c601754d41ff3648ba9899d1f1c27f0000488b442440488b5c24384c8b44243849b9c899d1f1c27f0000ff15eb5100004889c2488b0424ff124989c6488d64240841564c8b7424404d8b7668e914430000e90543000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad88ed1f1c27f0000ff15125100004989c641f6c601754d41ff3648ba9899d1f1c27f0000488b442440488b5c24384c8b44243849b9c899d1f1c27f0000ff15d55000004889c2488b0424ff124989c6488d64240841564c8b7424404d8b7668e958400000e9424000004c8b7424204d8b760841ff3641ff760841ff761041ff76184c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442450488b5c24784c8b4424684c8b4c24604c8b542458e8ddf0ffff4989c641564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b442448488b9c24800000004c8b4424704c8b4c24684c8b542460e880f0ffff4989c641564c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b4424604156415541544153415241514150488b442458488b9c24880000004c8b4424784c8b4c24704c8b542468e820f0ffff4989c6415648bad88ed1f1c27f0000488b44241048bb688cd1f1c27f0000ff155c4f00004989c641f6c6010f854402000041ff3648b8a8cdd1f1c27f0000488b5c24384c8b4424184c8b4c24484c8b542440ff15204f00004989c6415648ba9899d1f1c27f0000488b442450488b5c24484c8b44244849b9c899d1f1c27f0000ff15ea4e00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec0cdd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668e9fa3a0000e94f3600004c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b442440488b5c24684c8b4424604c8b4c24584c8b542450e83cedffff4989c6415648ba60a2d1f1c27f0000498d5fd8483b5d107305ff5550cd044989df48c743f8040000004c8b7424304c8973184c8b7424404c8973104c8b7424284c89730849be606255f1c27f00004c8933488b4424184c8b442428ff15234c00004989c6415648bad88ed1f1c27f0000488b442408488b1c24ff15fd4b00004989c641f6c6010f859003000041ff3648b880b0d1f1c27f0000488b5c24204c8b4424104c8b4c24384c8b542430ff15c14b00004989c6415648c7c001000000ff15a74b00004989c048ba8048d1f1c27f0000488b44241048c7c3214e00004c8b4c243849c7c201000000ff15744b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98b0d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba9899d1f1c27f0000488b442448488b5c24404c8b44244049b9c899d1f1c27f0000ff15804a00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0b0d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424384d8b7668e91d300000e910300000488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff76184c8b7424284d8b76404c8b6c24284d8b6d68498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8b7424104d8970184c8b7424304d8970104c8b7424204d89700849be906355f1c27f00004d8930488b1c24ff15964700004989c641566a016a01488b4424184889e3ff15774700004158488d6424084c3b05614700007502eb334d8b304e8d3475010000004983fe01752b49bed8c8d0f1c27f0000498d7008498d7e0848c7c100000000483bc9f3a67402eb0949c7c601000000eb5f4c8b742430498b5e684d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b7424184d8971184c8b7424404d8971104c8b7424284d89710849bee86355f1c27f00004d893148b860a3d1f1c27f0000ff15bd4600004989c641564c8b74240841ff364c8b74241041ff76084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d57e84c3b55107306ff5550ca00404d89d749c742f8020000004d897208415e4d89324c8b742408498b5e184c8b7424084d8b6e084d8d77d84c3b75107306ff5550ca08244d89f749c746f80400000049895e184d8956104d896e084c8b6c24284d892e4156488b4424084c8b04244c8b4c2418ff15954500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415c488d6424204d89650041554156e9bc2c0000488d6424104c8b74241041ff76084c8b7424184d8b76104156e9112c0000488d642408e991040000488d6424084c8b74241841ff7608498d47e0483b45107303ff55504989c748c740f8030000004c8b7424204c8970104c8b7424084c89700849be406455f1c27f00004c89306a016a016a014889e3ff15db440000ff742408ff742420e9542b0000488d6424084c8b7424184d8b76084156ff35b0440000e9292a00004c8b74242041ff76084c8b742428498b46104c8b7424284d8b76184c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b7424384d8d6f984c3b6d107306ff5550cac15f4d89ef49c745f80c0000004989755849897d504d8945484d894d404d8955384c8b5424184d8955304c8b5424084d8955284d895d204d8965184c8b6424104d8965104c8b6424284d89650849bc906555f1c27f00004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f80300000049bc70ccd1f1c27f00004d89601049bc8075d1f1c27f00004d8960084d8928498d5fd0483b5d107306ff5550ca01414989df48c743f8050000004c8b6c24284c896b204c89731849be50e0d0f1c27f00004c89731049be58cdd1f1c27f00004c89730849beb0ced1f1c27f00004c89334c8b4c24104c8b542408ff1561430000415e488d6424184989064883c410c238004c8b742420498b46084c8b742420498b5e104c8b7424204d8b46184c8b742420498b7e20488b7424584c8b7424604c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c2430ff742410ff7424104156ff742418415541544153415241514989f24989f9ff15dd420000488d64241848b8b80bd1f1c27f00004883c410c238004c8b742420498b46084c8b74242041ff76104c8b74242841ff76184c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b5c24684c8b4424584c8b4c24504c8b542448e88ae3ffff4989c641564c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c24484d8d77984c3b75107306ff5550ca803f4d89f749c746f80c00000049897e584d8946504d894e484d8956404d895e384c8b5c24284d895e304c8b5c24184d895e284d8966204d896e184c8b6c24204d896e104c8b6c24384d896e0849bd206655f1c27f00004d892e4d8d47e04c3b45107306ff5550ca00404d89c749c740f80300000049bd70ccd1f1c27f00004d89681049bd8075d1f1c27f00004d8968084d8930498d5fd0483b5d107306ff5550ca00014989df48c743f8050000004c8b7424384c8973204c8b7424084c89731849be50e0d0f1c27f00004c89731049be58cdd1f1c27f00004c89730849bef0ced1f1c27f00004c8933488b4424104c8b4c24204c8b542418ff1525410000498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be28cfd1f1c27f00004c89730848c7030500000048bad88ed1f1c27f0000ff15d64000004989c641f6c601754d41ff3648ba9899d1f1c27f0000488b442428488b5c24204c8b44242049b9c899d1f1c27f0000ff15994000004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e972240000e965240000488d642408e9c60100004c8b74242041ff76084c8b74242841ff76104c8b742430498b46184c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150ff74246848bb70d0d1f1c27f00004c8b4424604c8b4c24584c8b542450ff15f23f0000ff15e43f00004989c64156488b0424ff15cd3f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424104d8965104d89750849c74500010000004c8b7424104983fe037502eb4a4d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004c8b6c24084983fd0375054c89f0eb6b49bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500415e4989064883c430c23800488d642408e9e60a00004c8b74242041ff76084c8b742428498b46104c8b7424284d8b76184c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b7424384d8d6f904c3b6d107306ff5550cac15f4d89ef49c745f80d0000004989756049897d584d8945504d894d484d8955404d895d384d8965304c8b6424084d8965284c8b6424104d8965204c8b6424184d8965184c8b6424284d89651049bc70d0d1f1c27f00004d89650849bcf06655f1c27f00004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f80300000049bc70b2d1f1c27f00004d89601049bcd877d1f1c27f00004d8960084d8928498d5fd0483b5d107306ff5550ca01414989df48c743f8050000004c8b6c24284c896b204c89731849bed0d8d0f1c27f00004c89731049be48b3d1f1c27f00004c89730849be60b3d1f1c27f00004c89334c8b4c24104c8b542408ff152e3d00004989c54d8b75004983fe01750c48b8b80bd1f1c27f0000eb764d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d0483b45107306ff5550ca00404989c748c740f80500000049bd4059d1f1c27f00004c89682049bd98b3d1f1c27f00004c89681849bde0b3d1f1c27f00004c8968104c89700848c7000b000000415e4989064883c428c238004c8b74242041ff76084c8b74242841ff76184c8b742430498b462048c7c303000000ff15633c0000ff15553c00004c8b304983fe05757f4c8b7008ff701048bad88ed1f1c27f00004c89f048bb78c3d1f1c27f0000ff15203c00004989c641f6c601754d41ff3648ba9899d1f1c27f0000488b442428488b5c24204c8b44242049b9c899d1f1c27f0000ff15e33b00004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e9481e0000e9391e000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be78c3d1f1c27f00004c89730848c7030500000048bad88ed1f1c27f0000ff15053b00004989c641f6c601754d41ff3648ba9899d1f1c27f0000488b442428488b5c24204c8b44242049b9c899d1f1c27f0000ff15c83a00004889c2488b0424ff124989c6488d64240841564c8b7424284d8b7668e9871b0000e9711b0000488d6424084c8b7424184d8b760841ff3641ff760841ff761041ff76206a016a016a0148c7c0010000004889e3ff15673a0000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff153e3a0000ff742408ff7424186a016a016a0148c7c0010000004889e3ff15183a0000ff7424084c8b6424184c8bb424800000004983fe03750a4c8bb424c0000000eb264c8bb424c00000004983c6027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff2341564c8bb424a80000004d8b6e304d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24504d895e104d896e0849bd886755f1c27f00004d892e41564c8bb424b00000004d8b6e404d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24304d895e104d896e0849bdf06755f1c27f00004d892e41564c8bb424b800000041ff76204c8bb424c00000004d8b6e684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bd586855f1c27f00004d892e41564c8bb424c800000041ff76284c8bb424d000000041ff76584c8bb424d800000041ff76604c8bb424e00000004d8b6e084c8bb424e00000004d8b66384d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b9c24980000004d895e104c8b9c24e00000004d895e0849bbc06855f1c27f00004d891e41564d8d77884c3b75107306ff5550ca00304d89f749c746f80e0000004c8b5c24204d895e684c8b5c24084d895e604c8b5c24104d895e584c8b5c24484d895e504c8b1c244d895e484c8b5c24304d895e404d8966384c8b6424384d8966304c8b6424184d8966284c8b6424284d8966204c8b6424704d8966184c8ba424980000004d8966104d896e0849bd28d1d1f1c27f00004d892e4156ffb424d8000000e987150000488d6424084c8b7424184d8b760841ff3641ff761041ff761841ff762048c7c015000000ff15ac3700004989c6415648c7c015000000ff15923700004989c6415648c7c015000000ff15783700004989c64156488b442430488b5c24404c8b4424384c8b4c2450ff15513700004989c64156e9321400004c8b7424204d8b76084c8b6c24204d8b6d104c8b64242041ff7424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d89750049bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b1c244d895e184d8966104d896e0849c7063300000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442438488b5c24684c8b4424584c8b4c24504c8b542448e8f4d7ffff4989c6415648b838d1d1f1c27f000048c7c303000000ff15083600004989c64156488b0424ff15f13500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c897310415e4c89730848c7030700000048bad88ed1f1c27f0000488b0424ff15783500004989c641f6c6010f854402000041ff3648b87899d1f1c27f0000488b5c24104c8b4424084c8b4c24284c8b542420ff153c3500004989c6415648ba9899d1f1c27f0000488b442430488b5c24284c8b44242849b9c899d1f1c27f0000ff15063500004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98d1d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668e9750e0000488d642440e95e0e0000488d642408e9ce0700004c8b74242041ff76084c8b74242841ff76104c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442440488b5c24684c8b4424584c8b4c24504c8b542448e892d4ffff4989c6415648bad88ed1f1c27f0000488b042448bb28cfd1f1c27f0000ff15773200004989c641f6c6010f854402000041ff3648b8f0d1d1f1c27f0000488b5c24184c8b4424084c8b4c24284c8b542420ff153b3200004989c6415648ba9899d1f1c27f0000488b442430488b5c24284c8b44242849b9c899d1f1c27f0000ff15053200004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08d2d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424204d8b7668e9ca090000488d642440e957090000488d642420415e498b4610c238004c8b742420498b46084c8b74242041ff76104c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150ff74245848bb70d0d1f1c27f00004c8b4424584c8b4c24504c8b542448ff15902f000048c7c303000000ff157b2f00004989c64156488b0424ff15642f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c897010415e4c89700848c70007000000415e488d642428498906c23800488d6424084c8b74241841ff7608498d47e0483b45107303ff55504989c748c740f8030000004c8b7424204c8970104c8b7424084c89700849bed86a55f1c27f00004c89306a016a016a014889e3ff159e2e0000ff742408488b442420488b5c24304c8b4424284c8b4c2440ff15782e00004989c6ff7424204156e959070000488d64242848b8a8c3d1f1c27f0000c238004c8b742420498b46084c8b742420498b5e104c8b7424204d8b4618488b7c24584c8b7424604c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c2430ff7424084156ff742410415541544153415241514989f94c8b542450ff15f02d0000488d64241848b8b80bd1f1c27f00004883c410c238004c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b442440488b5c24704c8b4424604c8b4c24584c8b542450e8a8cfffff4989c6415648bad88ed1f1c27f0000488b042448bb688cd1f1c27f0000ff15452d00004989c641f6c6010f854402000041ff3648b860d2d1f1c27f0000488b5c24184c8b4424084c8b4c24304c8b542428ff15092d00004989c6415648ba9899d1f1c27f0000488b442438488b5c24304c8b44243049b9c899d1f1c27f0000ff15d32c00004889c2488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78d2d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424284d8b7668e93e020000488d642418e9cf010000488d6424084c8b7424184d8b76084d8b0641ff760841ff761041ff761841ff76204c8b7424284d8b76304c8b6c24284d8b6d68498d5fe8483b5d107306ff5550ca00614989df48c743f8020000004c896b084c89334d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b7424084d8971184c8b7424304d8971104c8b7424204d89710849be606c55f1c27f00004d893148b8d8d2d1f1c27f0000ff152a2a00004989c641564c8b34244d8b76104d8b2e4983fd0775334d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe037513488b042448c7c301000000ff15db290000eb334c8b3424498b46186a016a0148bb00d3d1f1c27f00004989e0ff15b2290000ff3424488b442410ff159c29000058488d6424104c8b34244d8b762841f6c60175374d8b364d8b2e4d8b65004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084c8b6424104d89264d897500eb004c8b34244d8b763041f6c601752f4d8b2e4d8b65004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084989064d897500eb004c8b742418498906415e4c8b6c24184d8975004c8b7424284d8b7648415d4d8975004883c438c238004c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b442438488b5c24604c8b4424504c8b4c24484c8b542440e80ccbffff488d64242048b8a8c3d1f1c27f00004883c410c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d6628000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b40000004d8b364d8b2e4c3b2d022800007506498b5e10eb15488d64244848b87810d1f1c27f0000488b5d08ff23488b442440ff15d22700004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424184d8b76184c8b6c2418498b556049c70603000000ff124883c408e980feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3327000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2dc92600007509498b5e10e9f1feffff488d64244848b87810d1f1c27f0000488b5d08ff23f644240801756bf6042401755e4c8b742408498b064c8b74240841ff76084c8b742408498b1e4c8b74240841ff76084c8b8c2488000000ff7424504c8b4424504c8b542428ff15562600004c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eb95488d642458eb05488d64245848b8b80bd1f1c27f0000c2380049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d9425000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b40000004d8b364d8b2e4c3b2d302500007506498b5e10eb15488d64244048b87810d1f1c27f0000488b5d08ff23488b442438ff15002500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424104d8b76184c8b6c2410498b556049c70603000000ff124883c430e97cfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d6124000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2df72300007509498b5e10e9f1feffff488d64244048b87810d1f1c27f0000488b5d08ff2348b8688cd1f1c27f0000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1daa23000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b40000004d8b364d8b2e4c3b2d462300007506498b5e10eb15488d64243848b87810d1f1c27f0000488b5d08ff23488b442430ff15162300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff124883c428e9d8feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7722000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d0d2200007509498b5e10e9f1feffff488d64243848b87810d1f1c27f0000488b5d08ff23f604240175404c8b34244d8b364c8b2c2441ff7508498b06498b5e08ff7424204c8b4424204c8b4c24584c8b542418ff15b0210000415d4c892c24483b65187303ff5558ebba488d642408488b44241048c7c30100000049b810d3d1f1c27f0000ff15762100004989c64c8b6c24284d897500488b042448c7c30100000049b870d3d1f1c27f0000ff15472100004989c6488d6424084c8b6c24184d897500488b042448c7c30100000049b880d3d1f1c27f0000ff15132100004989c6488d642410415d488d6424104d89750048b8b80bd1f1c27f00004883c428c23800f6042401756c4c8b34244d8b364c8b2c2441ff75084d8b16488b942440010000488b8424480100004c8b8c24500100004c8bb424380100004c8bac24300100004c8ba42428010000ffb424f8000000415641554154488b5c24784c8b442430ff12415d4c892c24483b65187303ff5558eb8e488d6424104d8d5fd84c3b5d107303ff55504d89df49c743f8040000004c8bb424c00000004d8973184c8bb424980000004d8973104c8bb424e80000004d89730849be006e55f1c27f00004d89334d8d57e04c3b55107306ff5550ca00084d89d749c742f8030000004c8b7424704d8972104c8bb424e80000004d89720849be986e55f1c27f00004d89324c8bb424e80000004d8b2e4d8d47e04c3b45107306ff5550ca002c4d89c749c740f8030000004c8b7424484d8970104c8bb424e80000004d89700849bef86e55f1c27f00004d89304c8bb424e80000004d8b66084c8bb424e80000004d8b4e384d8d77884c3b75107306ff5550ca003f4d89f749c746f80e000000488b7c242049897e68488b7c240849897e60488b7c241049897e584d8946504158488d6424104d8946484c8b4424184d8946404d894e384c8b4c24204d894e304159488d6424084d894e284159488d6424104d894e204d8956184d895e104d8966084d892e41564c8bb424900000004983f6024156ffb424a8000000ff35ed1e0000f6442408010f852e0100004c8b7424084d8b364c8b6c240841ff750841ff36488b942418010000488b8424200100004c8b8c24280100004c8bb424100100004c8bac24080100004c8ba42400010000ffb424d0000000415641554154488b5c24504c8b4424484c8b542420ff124989c641564c8b7424284983fe030f8595000000f644241001740949c7c603000000eb0749c7c6010000004983f6024983f6024983f6024983fe03756c488b0424488b9c24d8000000ff15291e00004989c641f6c601754f41ff366a016a01488b94242001000048b8c046d1f1c27f0000488b5c24204989e0ff124159488d642408488b8424e000000048c7c3010000004c8b4424104c8b1424ff15d01d0000488d642408eb00eb004c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e9c7feffff584881c4d8000000c23800584883c408415e4989064883c428c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d681d000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d041d00007506498b5e10eb15488d64244848b87810d1f1c27f0000488b5d08ff23488b442438ff15d41c00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9ddfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3e1c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2dd41b00007509498b5e10e9fafeffff488d64244848b87810d1f1c27f0000488b5d08ff23584883c408e93efeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8a1b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d261b00007506498b5e10eb15488d64244848b87810d1f1c27f0000488b5d08ff23488b442438ff15f61a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9e4feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d601a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2df61900007509498b5e10e9fafeffff488d64244848b87810d1f1c27f0000488b5d08ff23584883c438c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1dae19000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d4a1900007506498b5e10eb15488d64244848b87810d1f1c27f0000488b5d08ff23488b442440ff151a1900004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424204d8b76184c8b6c2420498b556049c70603000000ff12e9e6feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8418000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d1a1800007509498b5e10e9fafeffff488d64244848b87810d1f1c27f0000488b5d08ff23f6442408010f85fd0000004c8b7424084d8b364c8b6c240841ff750841ff36488b542468488b442470488b5c24484c8b4c24784c8b7424604c8b6c24584c8b642450ff7424204156415541544c8b4424484c8b542420ff124989c64156f644241001740949c7c603000000eb0749c7c6010000004983f6024983f6024983fe037463488b0424488b5c2428ff15611700004989c641f6c601754941ff366a016a01488b54247048b8c046d1f1c27f0000488b5c24204989e0ff124159488d642408488b44243048c7c3010000004c8b4424104c8b1424ff150e170000488d642408eb00eb004c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e9f8feffff584883c428c23800f6042401753a4c8b3424498b064c8b342441ff7608488b5c24404c8b4424384c8b4c24504c8b542410ff15a3160000415d4c892c24483b65187303ff5558ebc0488d64245048b8b80bd1f1c27f0000c23800f604240175754c8b34244d8b364c8b2c2441ff75084c8b6c2418498b55004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b6424104d8965084d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eb85488d64242848b8b80bd1f1c27f0000c23800f604240175514c8b34244d8b2e4c8b342441ff76084c8b742440498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba9488d6424084c8b742430498b5618498d47e8483b45107305ff5550cd044989c748c740f802000000415e4c8970084c8b7424084c8930ff1248b8b80bd1f1c27f00004883c440c23800584883c448c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d2b15000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2dc71400007506498b5e10eb15488d64245848b87810d1f1c27f0000488b5d08ff23488b442450ff15971400004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c896818415d4c8968104c89700848c700030000004c8b7424304d8b76184c8b6c2430498b556049c70603000000ff12e9e6feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d0114000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d971300007509498b5e10e9fafeffff488d64245848b87810d1f1c27f0000488b5d08ff2348bad88ed1f1c27f0000488b442408488b1c24ff15561300004989c641f6c6010f85bb02000041ff3648b8e8d3d1f1c27f0000488b5c24284c8b4424104c8b4c24484c8b542440ff151a1300004989c6415648b800d4d1f1c27f0000488b5c24384c8b4424104c8b4c24504c8b542448ff15e91200004989c6415648ba9899d1f1c27f0000488b442458488b5c24504c8b44245049b9c899d1f1c27f0000ff15b31200004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424184d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18d4d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424384d8b7668eb0d488d642408584883c450c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d4910000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b70000004d8b364d8b2e4c3b2de50f00007506498b5e10eb15488d64245848b87810d1f1c27f0000488b5d08ff23488b442450ff15b50f00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c896818415d4c8968104c89700848c700030000004c8b7424304d8b76184c8b6c2430498b556049c70603000000ff1248b8b80bd1f1c27f00004883c450c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d130f000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2da90e00007509498b5e10e9eefeffff488d64245848b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d690e000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d050e00007506498b5e10eb15488d64246848b87810d1f1c27f0000488b5d08ff23488b442460ff15d50d00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424404d8b76184c8b6c2440498b556049c70603000000ff12e948faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d3f0d000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2dd50c00007509498b5e10e9fafeffff488d64246848b87810d1f1c27f0000488b5d08ff23584883c418415e4989064883c430c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d840c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d200c00007506498b5e10eb15488d64246048b87810d1f1c27f0000488b5d08ff23488b442458ff15f00b00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff12e9ddfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d5a0b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2df00a00007509498b5e10e9fafeffff488d64246048b87810d1f1c27f0000488b5d08ff23584883c418e93efeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da60a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d420a00007506498b5e10eb15488d64246048b87810d1f1c27f0000488b5d08ff23488b442458ff15120a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff12e9e4feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7c09000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d120900007509498b5e10e9fafeffff488d64246048b87810d1f1c27f0000488b5d08ff2341f6c6010f85e90200004d8b36498b0641ff760848bad88ed1f1c27f0000488b5c2408ff15c10800004989c641f6c6010f85bb02000041ff3648b8709cd1f1c27f0000488b5c24384c8b4424184c8b4c24484c8b542440ff15850800004989c6415648b8909cd1f1c27f0000488b5c24384c8b4424184c8b4c24504c8b542448ff15540800004989c6415648ba9899d1f1c27f0000488b442458488b5c24504c8b44245049b9c899d1f1c27f0000ff151e0800004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb89dd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668eb29eb12488d64245848b8b80bd1f1c27f0000c238004c8b34244c8b6c24204d897500584883c458c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1d9805000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ab0000004d8b364d8b2e4c3b2d340500007506498b5e10eb15488d64246848b87810d1f1c27f0000488b5d08ff23488b442458ff15040500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24204c896818415d4c8968104c89700848c700030000004c8b7424404d8b76184c8b6c2440498b556049c70603000000ff12e9d9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d6e04000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d040400007509498b5e10e9fafeffff488d64246848b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc403000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b20000004d8b364d8b2e4c3b2d600300007506498b5e10eb15488d64246048b87810d1f1c27f0000488b5d08ff23488b442450ff15300300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c896818415d4c8968104c89700848c700030000004c8b7424384d8b76184c8b6c2438498b556049c70603000000ff1249c7c601000000e921faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9302000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d290200007509498b5e10e9f3feffff488d64246048b87810d1f1c27f0000488b5d08ff2348b8688cd1f1c27f0000c2380041f6c60175454d8b264d8b6e084d8b1c244c3b1ddc01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b40000004d8b364d8b2e4c3b2d780100007506498b5e10eb15488d64243848b87810d1f1c27f0000488b5d08ff23488b442430ff15480100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c896818415d488d6424084c8968104c89700848c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff124883c428e9d8feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3f0000007509498b5e10e9f1feffff488d64243848b87810d1f1c27f0000488b5d08ff23f4000000000000|@12686,1,@754,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5307,@5388,@5388,@5268,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5307,@5388,@5388,@5268,@4650,@4650,@5145,@4650,@4650,@5580,@5316,@5584,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5316,@5584,@9948,@4953,@4953,@4953,@5587,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5595,@4650,@4650,@5145,@4650,@4650,@5239,@5234,@5402,@5399,@5307,@5388,@5268,@5596,@5621,@5322,@5400,@5156,@5624,@5307,@5388,@5268,@5307,@5388,@5268,@5400,@5156,@5625,@5347,@5347,@5347,@5240,@5240,@5240,@5307,@5268,@5307,@5268,@5062,@5402,@5407,@5411,@5159,@5627,@5307,@5268,@5407,@5628,@5407,@9948,@5322,@5651,@5342,@9493,@5071,@5340,@5307,@5057,@5149,@5388,@5268,@5330,@5307,@5388,@5268,@5307,@5268,@5307,@5268,@5062,@5407,@5388,@5388,@5268,@5062,@5268,@5613,@5307,@5388,@5268,@5400,@5156,@5453|177,0,@10863 212,0,@10867 247,0,@10870 817,0,@10468 1001,0,@10873 1132,0,@10895 1168,0,@10951 1209,0,@10952 1234,0,@10954 1333,0,@10966 1377,0,@10967 1523,0,@10236 1609,0,@10236 1653,0,@10969 1978,0,@10468 2081,0,@10895 2204,0,@10468 2309,0,@10468 2462,0,@10895 2501,0,@10971 2542,0,@10972 2608,0,@10973 2657,0,@10236 2738,0,@10236 2782,0,@10981 3103,0,@5313 3143,0,@11289 3157,0,@10722 3218,0,@9649 3232,0,@11293 3246,0,@11294 3394,0,@10895 3430,0,@10952 3455,0,@10954 3509,0,@10468 3664,0,@10895 3692,0,@10952 3717,0,@10954 4071,0,@10895 4086,0,@10875 4118,0,@11295 4159,0,@10952 4184,0,@10954 4283,0,@10966 4327,0,@10967 4473,0,@10236 4559,0,@10236 4603,0,@11296 4811,0,@11003 4874,0,@5428 4908,0,@10895 4949,0,@11089 5006,0,@10384 5119,0,@10236 5163,0,@11090 5241,0,@10952 5266,0,@10954 5365,0,@10966 5409,0,@10967 5555,0,@10236 5636,0,@10236 5722,0,@10236 5766,0,@11092 5997,0,@5430 6078,0,@9493 6184,0,@5431 6197,0,@11010 6651,0,@5432 6872,0,@5433 6913,0,@11289 6927,0,@10722 6984,0,@9649 6998,0,@11293 7012,0,@11300 7170,0,@9948 7419,0,@5434 7459,0,@11289 7473,0,@10722 7535,0,@9649 7549,0,@11293 7563,0,@11301 7631,0,@11302 7652,0,@10895 7680,0,@10952 7705,0,@10954 7849,0,@11312 8099,0,@10468 8381,0,@11312 8395,0,@5436 8436,0,@11100 8450,0,@10742 8507,0,@9569 8521,0,@11104 8535,0,@11105 8577,0,@9948 8654,0,@10496 8668,0,@11106 8682,0,@11108 8781,0,@10895 8794,0,@11238 8822,0,@10952 8847,0,@10954 8901,0,@10468 9040,0,@11238 9061,0,@10895 9089,0,@10952 9114,0,@10954 9337,0,@9475 9407,0,@5437 9474,0,@5438 9548,0,@5439 9674,0,@5440 9825,0,@11315 10075,0,@10468 10259,0,@11316 10390,0,@10895 10426,0,@10951 10467,0,@10952 10492,0,@10954 10591,0,@10966 10635,0,@10967 10781,0,@10236 10867,0,@10236 10911,0,@11319 11125,0,@10895 11139,0,@11302 11171,0,@11321 11212,0,@10952 11237,0,@10954 11336,0,@10966 11380,0,@10967 11526,0,@10236 11612,0,@10236 11656,0,@11322 11843,0,@11312 12064,0,@5444 12141,0,@11239 12255,0,@9948 12383,0,@10895 12397,0,@10875 12429,0,@11324 12470,0,@10952 12495,0,@10954 12594,0,@10966 12638,0,@10967 12784,0,@10236 12870,0,@10236 12914,0,@11325 13155,0,@5445 13168,0,@11327 13269,0,@11328 13563,0,@11239 13668,0,@10158 13709,0,@9991 13956,0,@10198 14001,0,@9991 14136,0,@9948 14149,0,@10468 14342,0,@10158 14383,0,@9991 14630,0,@10198 14675,0,@9991 14691,0,@10875 14792,0,@10158 14833,0,@9991 15080,0,@10198 15125,0,@9991 15228,0,@11329 15267,0,@11331 15311,0,@11332 15346,0,@9948 15542,0,@5450 15603,0,@5451 15675,0,@5452 16081,0,@10368 16298,0,@10158 16339,0,@9991 16577,0,@10198 16622,0,@9991 16736,0,@10158 16777,0,@9991 17015,0,@10198 17060,0,@9991 17172,0,@10158 17213,0,@9991 17451,0,@10198 17496,0,@9991 17678,0,@10368 17853,0,@9948 17994,0,@9948 18150,0,@9948 18263,0,@10158 18304,0,@9991 18542,0,@10198 18587,0,@9991 18603,0,@10895 18644,0,@11334 18685,0,@11335 18726,0,@10952 18751,0,@10954 18850,0,@10966 18894,0,@10967 19040,0,@10236 19121,0,@10236 19207,0,@10236 19251,0,@11336 19441,0,@10158 19482,0,@9991 19622,0,@9948 19732,0,@10198 19777,0,@9991 19881,0,@10158 19922,0,@9991 20160,0,@10198 20205,0,@9991 20326,0,@10158 20367,0,@9991 20605,0,@10198 20650,0,@9991 20764,0,@10158 20805,0,@9991 21043,0,@10198 21088,0,@9991 21124,0,@10895 21161,0,@10971 21202,0,@10972 21243,0,@10952 21268,0,@10954 21367,0,@10966 21411,0,@10967 21557,0,@10236 21638,0,@10236 21724,0,@10236 21768,0,@10981 21864,0,@9948 21986,0,@10158 22027,0,@9991 22265,0,@10198 22310,0,@9991 22414,0,@10158 22455,0,@9991 22700,0,@10198 22745,0,@9991 22761,0,@10875 22862,0,@10158 22903,0,@9991 23150,0,@10198 23195,0,@9991 5267:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@441| 5268:D4,152|483b65187305ff5558cd0d4889d649c7c5010000004d8d77f04c3b75107306ff5550ca49204d89f749c746f80100000041c646ff404d892e4156488b5608488b4e104c8b76184c8b6e204c8b66284c8b5e304c8b56384c8b4e404c8b4648488b7e50488b7658415641554154415341524151415057564989ca4989d14c8b442448ff15290000004c8b3424498b06488d642408c3f4000000|@10909,1,@454,@5269| 5269:D63,15784|483b65187306ff5558ca09075053415041514152488b442420ff15793f00004989c64156488b442420ff15613f00004989c641564c8b7424084d8b364983fe0b75524c8b7424084d8b76184d8b76184d8b66084d89e54d8b24244983fc0375204d89ee4d8b76084c3b742410750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642438eb5e4c8b34244d8b364983fe0b755b4c8b34244d8b76184d8b76184d8b66084d89e54d8b24244983fc0375204d89ee4d8b76084c3b742410750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037402eb0f488d64243848c7c001000000c248004c8b7424084d8b364983fe01750f488d64243848c7c001000000c248004c8b34244d8b364983fe01750f488d64243848c7c001000000c248004c8b7424084d8b364983fe0d0f855a0a00004c8b34244d8b364983fe0d0f85490a00004c8b74240841ff76084c8b7424104d8b76104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b24244d89650041554c8b6c241041ff75084c8b6c24184d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d89650041554c8b6c24184d8b6d004c8b6424184c3b642408750f488d64245848c7c001000000c248004983e6054983fe010f8401010000ff3424ff742430ff742460ff742460ff742460ff356f3d00004c8b6424684c8b5c24604c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889442478488b44242848899c2480000000488b5c242048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424184c898c24b00000004c8b4c24104c899424b80000004c8b5424084c899c24c00000004c89a424c80000004c8b34244c89b424d00000004c896c24704883c470ff25843c0000488d6424384c8b7424084d8b364d8b65004d89e34983fc070f856e0200004d8b264983fc070f85610200004d8b65084d8b5d10498d47e8483b45107306ff5550ca00784989c748c740f8020000004c8958084c89204d8b66084d8b5e10498d5fe8483b5d107306ff5550ca01784989df48c743f8020000004c895b084c892349bca854d1f1c27f00004c8b5c24084d892349bca854d1f1c27f00004c8b5c24184d89234c8ba424a00000004c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478488b742470488b542468488b4c2460ff742440ff742440ff74244041544153415241514150575652514d89f14d89e849ba788fd1f1c27f0000ff156d3b00004889c34c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460ff35203b0000ff742440ff74244041564155415441534152415141505756488b4424604c8b8424b00000004c8b8c24a80000004c8b9424a0000000ff15dd3a0000488d642410ff3424ff742418ff742450ff742450ff742450ff35b73a00004c8b6424584c8b5c24504c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004c8b6c24784889442468488b44242848895c2470488b5c242048894c247848899424800000004889b424880000004889bc24900000004c898424980000004c8b4424184c898c24a00000004c8b4c24104c899424a80000004c8b5424084c899c24b00000004c89a424b80000004c8b34244c89b424c00000004c896c24604883c460ff25d5390000488d6424484d89dc4983fb090f85610300004d8b1e4983fb090f8554030000498b5d08498b4608ff15a03900004989c44983fc010f8593000000488d6424404d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be888fd1f1c27f00004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c2480049bea854d1f1c27f00004c8b6c24084d89750049bea854d1f1c27f00004c8b6c24184d89750041f6c40175684d8b7424084983fe01750949c7c603000000eb0749c7c6010000004983fe0375474d8b2c244d8b7500498d5fd0483b5d107306ff5550ca00604989df48c743f80500000048c74320010000004c896b184c89731048c743080100000048c7030b000000e99100000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d34f5f9ffffff498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8973104c896b0848c7030d0000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d89660849c706090000004d8975004c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460ff3591370000ff742440ff74244041564155415441534152415141505756488b4424604c8b8424b00000004c8b8c24a80000004c8b9424a0000000ff154e370000488d642408ff742408ff742420ff742458ff742458ff742458ff35273700004c8b6424604c8b5c24584c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004c8bac24800000004889442470488b44242848895c2478488b5c242048898c248000000048899424880000004889b424900000004889bc24980000004c898424a00000004c8b4424184c898c24a80000004c8b4c24104c899424b00000004c8b5424084c899c24b80000004c89a424c00000004c8b34244c89b424c80000004c896c24684883c468ff253f360000488d6424304d89e54983fd030f85fd000000488d642410ff3424ff742418ff742450ff742450ff742450ff35073600004c8b6424584c8b5c24504c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004c8b6c24784889442468488b44242848895c2470488b5c242048894c247848899424800000004889b424880000004889bc24900000004c898424980000004c8b4424184c898c24a00000004c8b4c24104c899424a80000004c8b5424084c899c24b00000004c89a424b80000004c8b34244c89b424c00000004c896c24604883c460ff2525350000488d6424384d8b364983fe030f8501010000ff3424ff742430ff742460ff742460ff742460ff35f23400004c8b6424684c8b5c24604c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889442478488b44242848899c2480000000488b5c242048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424184c898c24b00000004c8b4c24104c899424b80000004c8b5424084c899c24c00000004c89a424c80000004c8b34244c89b424d00000004c896c24704883c470ff2507340000488d642438488d6424404d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb88fd1f1c27f00004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b7424084d8b364983fe0d0f85870700004c8b7424084d8b6e084c8b7424084d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4983e4054983fc017405e9130100004d8b6d004d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd030f84eb0000004156ff742408ff742440ff742440ff742440ff35d23200004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25fc310000488d6424384c8b2c244d8b6d004983fd0b0f85340500004c8b2c24498b5d084c8b2c244d8b6d184d8b65184d89e34d8b4c24084d89ca4d8b094983f903752a4d89d44d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc037505e9540100004d89dc4d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8426010000488d6424084d89e64d8b76084d8b2e4983fd050f85f8000000498b460841ff7610ff15363100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be704054f1c27f00004c89336a016a01488b4424104989e0ff15ed30000058488d642410ff15d93000004989c6ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e959f1ffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234c8b2c244d8b6d004983fd0b0f85910200004c8b2c24498b5d084c8b2c244d8b6d184d8b65184d89e34d8b4c24084d89ca4d8b094983f903752a4d89d44d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc037505e9540100004d89dc4d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8426010000488d6424084d89e64d8b76084d8b2e4983fd050f85f8000000498b460841ff7610ff15662f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be304154f1c27f00004c89336a016a01488b4424104989e0ff151d2f000058488d642410ff15092f00004989c6ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9a1efffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234156ff742408ff742440ff742440ff742440ff35372e00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25612d0000488d6424384156ff742408ff742440ff742440ff742440ff353c2d00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff25662c0000488d6424384156ff742408ff742440ff742440ff742440ff35412c00004c8b6424484c8b5c24404c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704c8b6c24684889442458488b44242848895c2460488b5c242048894c2468488954247048897424784889bc24800000004c898424880000004c8b4424184c898c24900000004c8b4c24104c899424980000004c8b5424084c899c24a00000004c89a424a80000004c8b34244c89b424b00000004c896c24504883c450ff256b2b0000488d6424384c8b34244d8b364983fe0d0f855c0700004c8b34244d8b76084c8b2c244d8b6d104983e5054983fd017405e9ef0100004d8b364d8b364983fe09750949c7c603000000eb0749c7c6010000004983fe030f84c90100004c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35af2a00004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff25df290000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e9aceaffff488d6424384c8b7424084d8b364983fe0b0f85730300004c8b742408498b5e084c8b7424084d8b76184d8b6e184d89ec4d8b55084d89d34d8b124983fa0375294d89dd4d8b6d084c3b6c2410750949c7c503000000eb0749c7c5010000004983fd037505e9580100004d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983f4024983fc030f84280100004d89ee4d8b76084d8b2e4983fd050f85ff000000498b460841ff7610ff15792800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef04154f1c27f00004c89336a016a01488b4424104989e0ff153028000058488d642410ff151c2800004989c64156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e905e9ffff488d642418488d64243848b81890d1f1c27f0000488b5d08ff234c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35022700004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff2532260000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e927e7ffff488d6424384c8b34244d8b364983fe0d0f85150100004c8b34244d8b6e08415e4d8b66104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742438ff742438ff742438ff35292500004c8b6424404c8b5c24384c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b4424684c8b6c24604889442450488b44242848895c2458488b5c242048894c24604889542468488974247048897c24784c898424800000004c8b4424184c898c24880000004c8b4c24104c899424900000004c8b5424084c899c24980000004c89a424a00000004c8b34244c89b424a80000004c896c24484883c448ff2559240000488d642460ff742408ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e95ee5ffff488d6424384c8b7424084d8b364983fe0b0f85d00500004c8b34244d8b364983fe0b0f85bf0500004c8b7424084d8b76084c8b6c24084d8b65184c8b2c244d8b6d084c8b1c244d8b5b184d8b5424184d89d0498b7a084989f9488b3f4883ff03752e4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750a488d642438e94d0500004d8b53184d89d1498b72084889f7488b364883fe0375204989fa4d8b52084c3b542410750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84000500004d89c24d8b40084d8b004983f8050f85210100004d8b6a084d8b65004983fc050f85fa000000498b450841ff75104c89f3ff159f2200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb04254f1c27f00004c89336a016a01488b4424104989e0ff1556220000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e96be3ffff488d642418488d64243848b81890d1f1c27f0000488b5d08ff234d89c84d8b49084d8b094983f9050f851e010000488d6424084d8b70084d8b264983fc050f85f3000000498b460841ff76104c89ebff15562100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be704354f1c27f00004c89336a016a01488b4424104989e0ff150d210000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e939e2ffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234d89c14d8b40084d8b004983f8050f851e010000488d6424084d8b71084d8b264983fc050f85f3000000498b460841ff76104c89ebff15142000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be304454f1c27f00004c89336a016a01488b4424104989e0ff15cb1f0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e907e1ffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff23498b7a084989f8488b3f4883ff037556498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375304d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037572488d642410e9f80000004c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f848b0000004d8d6fd04c3b6d107306ff5550ca00184d89ef49c745f8050000004d895d204d896518415e4d897510415e4d89750849c74500030000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800488d64241041554156e93b1b0000488d64243848c7c001000000c248004c8b7424084d8b364983fe090f854d0300004c8b34244d8b364983fe0b0f853c0300004c8b7424084d8b76084c8b2c244d8b65084c8b2c244d8b6d184d8b55184d89d34d8b42084d89c14d8b004983f803752d4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750949c7c303000000eb214d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f8422010000488d6424084d8b75184d8b76084d8b2e4983fd050f85f3000000498b460841ff76104c89e3ff15c11c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef04454f1c27f00004c89336a016a01488b4424104989e0ff15781c0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9c4ddffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234d8b5d184d89da4d8b43084d89c14d8b004983f80375334d89cb4d8b5b084c3b5c2410750949c7c303000000eb0749c7c3010000004983fb03750f488d64243848c7c001000000c248004d89d34d8b52084d8b124983fa050f8521010000488d6424084d89de4d8b76084d8b2e4983fd050f85f3000000498b460841ff76104c89e3ff15321b00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb04554f1c27f00004c89336a016a01488b4424104989e0ff15e91a0000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e945dcffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff2341f6c40174084d89f4e9b9160000e9801100004c8b7424084d8b364983fe0b0f85d10100004c8b34244d8b364983fe090f85c00100004c8b7424084d8b66084c8b7424084d8b76184c8b2c244d8b6d084d8b56184d89d34d8b42084d89c14d8b004983f803752d4d89ca4d8b52084c3b542410750949c7c203000000eb0749c7c2010000004983fa03750949c7c303000000eb214d8b5b084d8b1b4983fb05750949c7c303000000eb0749c7c3010000004983f3024983fb030f84240100004d8b76184d8b76084d8b2e4983fd050f85fa000000498b460841ff76104c89e3ff15461900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be704654f1c27f00004c89336a016a01488b4424104989e0ff15fd180000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e962daffff488d642418488d64243848b81890d1f1c27f0000488b5d08ff2341f6c40174084d89ece9890e0000e9450900004c8b7424084d8b364983fe0975224c8b34244d8b364983fe097515488d64243848b8a890d1f1c27f0000488b5d08ff234c8b7424084d8b364983fe0b0f85330200004c8b742408498b5e084c8b7424084d8b76184d8b66184d89e54d8b5424084d89d34d8b124983fa03752e4d89dc4d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb224d8b6d084d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983f5024983fd030f84210100004d8b76184d8b76084d8b2e4983fd050f85f7000000498b460841ff7610ff153c1700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be304754f1c27f00004c89336a016a01488b4424104989e0ff15f3160000415e488d6424104156ff742408488b4c2430488b5c2428488b4424204c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460488b742458488b5424504889542450488974245848897c24604c894424684989c84c894c24704989d9488b1c244c895424784989c2488b4424084c899c24800000004c89a424880000004c89ac24900000004883c448e968d8ffff488d642418488d64243848b81890d1f1c27f0000488b5d08ff234d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb88fd1f1c27f00004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b34244d8b364983fe0b0f85b50300004c8b3424498b5e084c8b34244d8b76184d8b66184d89e54d8b5424084d89d34d8b124983fa03752e4d89dc4d8b6424084c3b642410750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb224d8b6d084d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983f5024983fd030f841f010000488d6424084d8b76184d8b76084d8b2e4983fd050f85f0000000498b460841ff7610ff15e51400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef04754f1c27f00004c89336a016a01488b4424104989e0ff159c140000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e928d6ffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234d8b6e184d89ec4d8b55084d89d34d8b124983fa0375334d89dd4d8b6d084c3b6c2410750949c7c503000000eb0749c7c5010000004983fd03750f488d64243848c7c001000000c248004d89e54d8b6424084d8b24244983fc050f851e010000488d6424084d89ee4d8b76084d8b2e4983fd050f85f0000000498b460841ff7610ff15571300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb04854f1c27f00004c89336a016a01488b4424104989e0ff150e130000415e488d642410ff34244156488b4c2428488b5c2420488b4424184c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9aad4ffff488d642430488d64243048b81890d1f1c27f0000488b5d08ff234d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb88fd1f1c27f00004d8975184c8b7424084d897510415e488d6424084d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8b7424084d8b364983fe050f853e0100004c8b34244d8b364983fe050f852d0100004c8b742408498b46084c8b74240841ff76104c8b742408498b5e084c8b74240841ff76104c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450415641554154415341524151415057564c8b4424784c8b4c24704c8b542468e859d3ffffff742408ff742408488b4c2440488b5c2438488b4424304c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b5424604889542460488974246848897c24704c894424784989c84c898c24800000004989d9488b1c244c899424880000004989c2488b4424084c899c24900000004c89a424980000004c89ac24a00000004883c458e9afd2ffff488d6424484c8b7424084d8b364983fe03751c4c8b34244d8b364983fe03750f488d64243848c7c001000000c248004c8b7424084d8b364983fe070f85f00000004c8b34244d8b364983fe070f85df0000004c8b7424084d8b76084c8b6c24084d8b6d10498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b76084c8b2c244d8b6d10498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b442450488b7c2448488b742440ff742420ff742420ff742420415641554154415341524151415057564c8b4424684c8b4c246049ba788fd1f1c27f0000ff15510f0000488d64242848c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb88fd1f1c27f00004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004c8ba424800000004d8b24244d89eb4983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc0375304c8bac24800000004d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e97a0200004d89ec4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375624d89ca4d8b4a084c8b5424784d3bd1750949c7c203000000eb0749c7c2010000004983fa03753b49c7c4030000004983fc0375294c8b6424704d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9ee0100004d89eceb144d89dc483b65187306ff5558ca0070e95effffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375624d89ca4d8b4a084c8b5424684d3bd1750949c7c203000000eb0749c7c2010000004983fa03753b49c7c4030000004983fc0375294c8b6424604d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e94c0100004d89eceb144d89dc483b65187306ff5558ca0070e95effffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803755f4d89ca4d8b4a084c8b5424584d3bd1750949c7c203000000eb0749c7c2010000004983fa03753849c7c4030000004983fc0375294c8b6424504d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9aa000000eb144d89dc483b65187306ff5558ca0070e961ffffff4983fd01750949c7c501000000eb524d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85d20100004d89d34d8b53084c8b5c24484d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a701000049c7c5030000004983fd0375264c8b6424404d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c50100000041f6c5010f85d5000000488d6424084d8b5d004d8b2b4d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420010000004d895c24184d896c241049c74424080100000049c704240b0000004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d8975184d896510415e4d89750849c74500030000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be3891d1f1c27f00004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d89e5483b65187306ff5558ca0060e9ebfdffff4983fc01750c49c7c401000000e9ee0000004d8b0c244d8b5c24084d8b56184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c4030000004983fc030f85b7f9ffff488d64243848c7c001000000c248004c8ba424800000004d8b24244d89f34983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc03752e4c8bb424800000004d8b264d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9750200004d89f44983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375614d89ca4d8b4a084c8b5424784d3bd1750949c7c203000000eb0749c7c2010000004983fa03753a49c7c4030000004983fc0375284c8b6424704d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9ea0100004d89f4eb144d89dc483b65187306ff5558ca0070e95fffffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f80375614d89ca4d8b4a084c8b5424684d3bd1750949c7c203000000eb0749c7c2010000004983fa03753a49c7c4030000004983fc0375284c8b6424604d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9490100004d89f4eb144d89dc483b65187306ff5558ca0070e95fffffff4983fc01750949c7c401000000eb4b4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803755e4d89ca4d8b4a084c8b5424584d3bd1750949c7c203000000eb0749c7c2010000004983fa03753749c7c4030000004983fc0375284c8b6424504d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e9a8000000eb144d89dc483b65187306ff5558ca0070e962ffffff4983fe01750949c7c601000000eb514d8b1e4d8b66084d8b5b184d8b4b084d89ca4d8b094983f9030f85cd0100004d89d34d8b53084c8b5c24484d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a201000049c7c6030000004983fe0375254c8b6424404d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb0749c7c60100000041f6c6010f85d10000004d8b1e4d8b334d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420010000004d895c24184d8974241049c74424080100000049c704240b0000004d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d896e204d895e18415d4d896e104d89660849c706030000004d89f54c8b7424184d8b3641f6c601750f488d64243048c7c001000000c24800488d6424184d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be3891d1f1c27f00004d897518415e4d897510415e4d89750849c74500010000004c8b7424104d8b3641f6c601750f488d64242848c7c001000000c24800488d6424104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c248004d89e6483b65187306ff5558ca0060e9f1fdffff4983fc01750c49c7c401000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c4030000004983fc030f85c2f9ffff488d64243848c7c001000000c24800f60424010f85330100004c8b3424498b064c8b342441ff7608f6442410010f85860000004c8b742410498b1e4c8b74241041ff76084c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450415641554154415341524151415057564c8b4424784c8b4c24704c8b542468e8bcc3ffff415d415c4c8924244c896c2408483b65187303ff5558e956ffffff488d6424284d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be6891d1f1c27f00004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800488d642408415e4983fe01750f488d64242848c7c001000000c24800488d6424104d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049be6891d1f1c27f00004d8975184c8b7424084d8975104c8b7424104d89750849c74500010000004c8b34244d8b3641f6c601750f488d64241848c7c001000000c248004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d89750048c7c0010000004883c410c24800f4000000000000|@10925,1,@461,@5289,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5234,@5292,@5282,@10897,@5282,@10897,@5062,@5234,@5292,@5282,@10897,@5282,@10897,@5282,@10897,@5282,@10897,@5062,@5234,@5292,@5062,@5234,@5292,@5282,@10897,@5282,@10897,@5282,@10897,@5282,@10897,@5282,@10897,@5293,@5282,@10897,@5282,@10897,@5289,@5282,@10897,@5062,@5062|893,0,@10468 911,0,@10468 1021,0,@10897 1500,0,@10898 1618,0,@10468 1637,0,@10468 1766,0,@10468 2861,0,@10899 3558,0,@5270 3763,0,@10901 3998,0,@5271 4203,0,@10901 5683,0,@5272 5895,0,@10901 7125,0,@5273 7329,0,@10901 7438,0,@5274 7635,0,@10901 7744,0,@5275 7941,0,@10901 8579,0,@5276 8776,0,@10901 8962,0,@5277 9159,0,@10901 9438,0,@5278 9642,0,@10901 9709,0,@10904 9944,0,@5279 10148,0,@10901 10188,0,@10899 10527,0,@5280 10724,0,@10901 10909,0,@5281 11106,0,@10901 11146,0,@10899 11873,0,@10897 11932,0,@10899 13255,0,@10907 14868,0,@10907 15486,0,@10908 15661,0,@10908 5270:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@442| 5271:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@443| 5272:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@444| 5273:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@445| 5274:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@446| 5275:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@447| 5276:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@448| 5277:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@449| 5278:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@450| 5279:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@451| 5280:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@452| 5281:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@453| 5282:D8,1328|483b65187306ff5558ca090750534150415141524c8b7424204d8b3641ff36ff742420488b0424ff153b0500004989c64d8b2e4983fd0b0f85b4000000498b5e084d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15e50400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef04e54f1c27f00004c89336a016a01488b4424104989e0ff159c040000415d488d6424104c892c24483b65187303ff5558e94effffff488d64243848b81890d1f1c27f0000488b5d08ff23488d642408eb05488d64240841564c8b34244d8b2e4983fd0d75274d89f64d8b76084c8b6c24304d8b6d004d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004156488b4424104c8b284d89ee4983fd09756f488b9424a0000000488b8c2498000000488b9c24900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448415641554154415341524151415057564989da4989c9488b5c24784c8b442460ff12eb784889c04983fe07756f488b9424a0000000488b8c2498000000488b9c24900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448415641554154415341524151415057564989da4989c9488b5c24784c8b442460ff12eb004c8b34244983fe03488d642408750f488d64243848c7c001000000c260004c8b4424304d8b70084983e6054983fe010f849e000000488d6424104d8d67d84c3b65107303ff55504d89e749c74424f80400000049bec891d1f1c27f00004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c601750f488d64242848c7c001000000c260004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500488d64240848c7c0010000004883c420c26000ff74241048c7c001000000488b5c24084c8b4c24284c8b542420ff15300200004989c6488d6424084983fe030f859e000000488d6424084d8d67d84c3b65107303ff55504d89e749c74424f80400000049be0892d1f1c27f00004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c601750f488d64242848c7c001000000c260004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500488d64240848c7c0010000004883c420c26000488d6424084c8b7424204d8b76084983e6094983fe010f84bd000000488b942480000000488b44241848bb4892d1f1c27f000049b89892d1f1c27f0000ff124989c64983fe03750949c7c603000000eb0749c7c6010000004983fe03757b4d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef893d1f1c27f00004d897424184c8b7424084d897424104c8b7424104d8974240849c70424010000004c8b2c244d8b750041f6c6017502eb254d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264d89ed4d897500eb004c8b7424204d8b76084983e6034983fe01742848b82094d1f1c27f0000ff157c0000004889c2488b442418ff124889c248c7c001000000ff12eb004c8b34244d8b36488d64240841f6c601750f488d64242048c7c001000000c26000488d6424104c8b7424084d8b2e4c8b34244d897500488d64241048c7c001000000c26000f4000000000000|@10939,1,@468,@5296,@5294,@5234,@5292,@5062|159,0,@5283 220,0,@10901 642,0,@10910 850,0,@10911 1019,0,@10912 1029,0,@10914 1097,0,@10921 1214,0,@10922 5283:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@455| 5284:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@10913,1,@456| 5285:D5,552|483b65187305ff5558cd014989c34d8b6b084d89ee4983e5094983fd01740848c7c005000000c34c89f34983e6054983fe01740848c7c003000000c348c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1748b8f814d1f1c27f00004153ff15cd010000415b4989c641f6c6010f84880100004d8b6b084983e5034983fd01750949c7c503000000eb0749c7c5010000004983f50249baa854d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89142441544e8d34f5f9ffffff4983ce094d0bf54d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d897424104c8b34244d89f54d8974240849c704240d0000004d8b334d89f24d8b364d89d34d89234d8b264983fc090f85c0000000498b4608ff15f80000004989c541f6c5010f859c0000004d8b65004d8b75084983fe0175534d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004c8b2c244d897500488d64240848c7c005000000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004c8b2c244d897500488d64240848c7c005000000c3488d64240848c7c003000000c34d89ed4d897500488d64240848c7c005000000c348b80815d1f1c27f0000488b5d08ff23f40000000000|@10919,1,@457,@5286,@4933|107,0,@10021 174,0,@10468 532,0,@10022 5286:D3,208|483b65187305ff5558cd01a8010f85ad000000ff30488b40084c8b34244d8b76184d8b76084d8b264d89e54983fc057515488d64240848b8a892d1f1c27f0000488b5d08ff234983fd0175294d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b76084983fe037502eb1e488d642408eb124d8b76084d8b364983fe03740a488d642408e974ffffffe86fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@10920,1,@458|56,0,@10915 5287:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb05354f1c27f00004c8930c3f400000000|@10924,1,@460|47,0,@5288 5288:D4,432|483b65187305ff5558cd054c8b72084d89f54d8b364983fe0d0f85850100004d89ee4d8b5d084d8b6e104d89ee4983e6034983fe01740848c7c001000000c34d8b334d8b264983fc09750848c7c001000000c34c89eb48c1eb034883cb01f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989daeb1f48b8f814d1f1c27f0000415341554156ff152f010000415e415d415b4989c241f6c2010f84e80000004d89ec4983e4094983fc01750949c7c103000000eb0749c7c1010000004983f1024983e5054983fd01750949c7c403000000eb0749c7c4010000004983f40249b8a854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f80100000041c645ff404d8945004e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14983fc03750949c7c405000000eb0749c7c4010000004d0bd44983ca034d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d896c240849c704240d0000004d89234d89750048c7c001000000c348b80815d1f1c27f0000488b5d08ff2348c7c001000000c3f4000000|@10923,1,@459,@4933|133,0,@10021 237,0,@10468 406,0,@10022 5289:D5,1472|483b65187306ff5558ca0907415041514152ff30ff70084c8b33ff73084c8b68086a016a014d8b65004983fc01751f4d8b65084d8b6d104c8924244c896c2408ff7424084c8b6b086a016a01eb194d8b65084d8b24244d89e5483b65187306ff5558ca0860ebbe4d8b65004983fc0175424d8b65084d8b6d104c8924244c896c2408ff7424084c8b6c24184983fd0375204c8b2c244983fd03751149c7c5010000004c8b642440e9e4030000e9da030000eb194d8b65084d8b24244d89e5483b65187306ff5558ca0060eb9b488b9c24c0000000488b8424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c246841554154415341524151415057565251ff742450ffb424b0000000ffb424b0000000ffb424800000004989c24989d94c89f3488b8424b00000004c8b8424b8000000ff15750400004989c641564c8b7424204983fe03752a488d6424084c8b34244983fe03488d642408750a488d642450e9ee020000488d642428415ee9610200004c8b7424084983fe03750f488d6424384c8b742408e9be0100004c8b7424404d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64246848b80895d1f1c27f0000488b5d08ff2341ff364c8b7424404d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64247048b80895d1f1c27f0000488b5d08ff2341ff364c8b7424084c3b34247507488d642410eb7e488b442410ff150a0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706010000004c8b6424084d89e54d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c706030000004c8b2c244d897500488d642410498d47e0483b45107303ff55504989c748c740f8030000004c8b7424404c8970104c8b34244c897008488d64240848c700070000004883c460c260004d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64243048b80895d1f1c27f0000488b5d08ff234d8b2e4c8b34244d897500488d642420584883c408c260004d8b2e4983fd01750949c7c601000000eb444d8b6e084d8b65004d8b1c244983fb0375144d89e54d89ee483b65187306ff5558ca0040ebc84d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe017515488d64242848b80895d1f1c27f0000488b5d08ff234d8b2e4c8b34244d897500488d64242058c26000e93cfcffff41f6c40175374d8b5424084d89eb4983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc349c7c4010000004d89f341f6c30175364d8b4b084d89e24983c2027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec750949c7c503000000eb0749c7c5010000004983f5024983fd030f8555ffffff4d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049bea095d1f1c27f00004d8975184c8b7424504d8975104c8b7424584d89750849c74500010000004c8bb424c00000004d8b3641f6c6017502eb2a4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8bac24c00000004d89750049c7c601000000e9affbfffff4|@10933,1,@462,@5291,@5290|551,0,@10926 672,0,@10926 992,0,@10926 1129,0,@10926 1195,0,@9475 1265,0,@9475 1360,0,@10930 5290:D3,3680|483b65187306ff5558ca09075053415041514152f6442420010f85700b00004c8b74242041ff364c8b74242841ff76084c8b7424084d8b364c8b6c2408498b4508f6442428010f85e20800004c8b6c242841ff75004c8b6c243041ff75084c8b6c24084d8b65004c8b6c2408498b5d084d8b1e4d89dd4e8d145d010000004d8b0c244d89cb4e8d0c4d010000004d3bd10f85b40000004d3bf47502eb304d89ea4d89d54e8d1455010000004c89d94e8d1c5d010000004d3bd3751b498d7608498d7c2408483bc9f3a67402eb0949c7c501000000eb724e8d1c6d010000004d8b2c244e8d146d010000004d3bda73054c89d9eb034c89d1498d7608498d7c240848d1e9483bc9f3a67214770949c7c501000000eb1049c7c503000000eb0749c7c5ffffffff4983fd0175074d3bda7308eb0f4983fd017c0949c7c503000000eb0749c7c5ffffffffeb254e8d2c6d010000004e8d1c5d010000004d3beb7d0949c7c5ffffffffeb0749c7c5030000004983fd010f8545010000488b542430488b8c24b80000004c8bb424b00000004c8bac24a80000004c8ba424a00000004c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478488b742470415641554154415341524151415057564989ca4c8b4424704c8b4c2468ff12ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350488b842488000000488b5c24784c8b8424a80000004c8b8c24a00000004c8b942498000000e878fdffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304883c440c270004983fd010f8d32030000488d6424104c8b6c24584983fd030f854b020000488d6424184d8b2e4e8d246d010000004983fc01750f49bdd095d1f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15270b00000f87db0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd095d1f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe895d1f1c27f0000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15500a00000f87f70000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde895d1f1c27f000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642418eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c41058c27000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff34244156415541544153415241514150575652515350488b442478488b9c24a00000004c8b8424980000004c8b8c24900000004c8b942488000000e83efaffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424204c89304883c408c270004c8b7424504983fe030f8551020000488d6424284d8b34244e8d3475010000004983fe01750f49bdd095d1f1c27f0000e9af0000004d89f34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15e90700000f87e00100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd095d1f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89f1498d742408498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe895d1f1c27f0000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15110700000f87fb0000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde895d1f1c27f000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642410eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c408584883c408c27000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350488b8424b8000000488b5c24784c8b8424a80000004c8b8c24a00000004c8b942498000000e805f7ffff4989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304883c438c27000488d6424184c8b6c24404983fd030f85440200004d8b2e4e8d246d010000004983fc01750f49bdd095d1f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15a60400000f87d90100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd095d1f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe895d1f1c27f0000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15cf0300000f87f50000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde895d1f1c27f000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642418eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c410eb2f488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241858c27000488d642408f6442410010f856b0200004c8b7424104d8b364d8b364c8b6c24284983fd030f85440200004d8b2e4e8d246d010000004983fc01750f49bdd095d1f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b151f0200000f87d90100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd095d1f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bbe895d1f1c27f0000e9b40000004d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15480100000f87f50000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1498d7508498d7b0848d1e9f3a44983c61049bde895d1f1c27f000048c7c113000000498d750849d1ee4b8d3c3348d1e9f3a4418063ffbf4c8b7424384c8b6424304d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500010000004c8b34244d8b3641f6c6017507488d642410eb284d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e415d4d8975004883c408eb2f488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d642410584883c408c27000488d64242048c7c001000000c27000f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@10934,1,@464|756,0,@10931 894,0,@10931 963,0,@10932 1120,0,@10932 1284,0,@9487 1305,0,@9487 1570,0,@10931 1708,0,@10931 1778,0,@10932 1935,0,@10932 2103,0,@9487 2124,0,@9487 2389,0,@10931 2527,0,@10931 2596,0,@10932 2753,0,@10932 2915,0,@9487 2936,0,@9487 3020,0,@10931 3158,0,@10931 3227,0,@10932 3384,0,@10932 3546,0,@9487 3567,0,@9487 5291:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@463| 5292:D3,136|483b65187305ff5558cd09a801756bf6c30175664c8b28488b40084c8b23488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10935,1,@465| 5293:D3,368|483b65187305ff5558cd09a801750bff30488b40084989deeb0848c7c001000000c34983fe01750c49c7c601000000e9f30000004d8b1e4d8b6e084c8b24244d8b6424184d8b5b184d8b4c24084d89ca4d8b094983f903754e4d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f80375284d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037567eb794d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89ee483b65187306ff5558ca0940e902ffffff49c7c6030000004983fe037534e8cefeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e995fefffff400000000|@10936,1,@466| 5294:D11,1288|483b65187306ff5558ca09074150415141524883f8010f85d90400004889d8ff15330500004989c64d8b264d89e54983fc07752f498b46084c8b4424104c8b4c2408415a488d6424104c8b6c240848bbf896d1f1c27f00004c896c2408ff25ed0400004d89ec4983fd05756a498b5e0841ff76104c8b742428415648c7c0010000004c8b4424204c8b4c24184c8b542410e86affffff4989c64983fe03750f488d64242048c7c003000000c208005b4c8b4424104c8b4c2408415a488d6424104c8b6c240848c7c0010000004c896c2408e92affffff4d89e54983fc0b0f85f9000000498b46084d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f85ac0000004d89ee4d8b6e084d8b75004983fe050f85820000004d8b750841ff75104889c34c89f0ff151a0400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be487254f1c27f00004c89336a016a01488b4424104989e0ff15d10300005b488d6424104c8b4424104c8b4c2408415a488d6424104c8b6c240848c7c0010000004c896c2408e964feffff488d64241848b81890d1f1c27f0000488b5d08ff234c8b4424104c8b4c2408415a488d6424104c8b6c240848bbf896d1f1c27f00004c896c2408ff255c0300004983fd0d0f85000300004d8b6e084d8b66104c8b742410498b5e0848c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f814d1f1c27f000041554154ff15f8020000415c415d4989c641f6c6010f84880200004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989daeb1f48b8f814d1f1c27f0000415541544156ff1599020000415e415c415d4989c241f6c2010f841a0200004d3bf27d054d89f2eb004d8b75004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb65bff4e8d1c5d010000004983fb2374054989dbeb2348b8f814d1f1c27f00004155415441524156ff1528020000415e415a415c415d4989c341f6c3010f849a0100004d3bda0f84530100004d89e34983e3054983fb01747f4d8d5fd84c3b5d107306ff5550ca00604d89df49c743f80400000049bc0897d1f1c27f00004d8963184c8b24244d8963104c8b6424084d89630849c703010000004c8b6424204d8b242441f6c4017502eb284d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c244c8b5c24204d8923e9c50000004d89e34983e3094983fb01750949c7c103000000eb0749c7c1010000004983f1024983e4034983fc01750949c7c403000000eb0749c7c4010000004983f40249b8a854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d89034e8d14d5f9ffffff4983f903750949c7c109000000eb0749c7c1010000004d0bd14d0bd44d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849c704240d0000004d89334d896500eb004c8b4424104d8b204d3bec750948c7c003000000eb0748c7c0010000004c89f34d89c04c8b4c2408415a488d6424104c8b6c24084c896c2408e959fbffff488d64241848b80815d1f1c27f0000488b5d08ff23488d64241848b80815d1f1c27f0000488b5d08ff23488d64241848b80815d1f1c27f0000488b5d08ff23488d64241848c7c001000000c20800488d64241848c7c003000000c20800f4000000|@10946,1,@475,@4933,@4933,@4933,@5303,@5234,@5292,@5302,@5062|80,0,@10937 338,0,@5295 419,0,@10901 457,0,@10937 550,0,@10021 635,0,@10021 738,0,@10021 832,0,@10938 995,0,@10468 1198,0,@10022 1219,0,@10022 1240,0,@10022 5295:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@467| 5296:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be707354f1c27f00004c8930c3f400000000|@10945,1,@474|47,0,@5297 5297:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849bee07354f1c27f00004c8930c3f400000000|@10944,1,@473|55,0,@5298 5298:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10941,1,@469,@5299| 5299:D6,304|483b65187306ff5558ca09015041504889d8ff15400100004989c64156488b542408488b0424ff124889c2488b442410ff124c8b2c244d8b75004c8d25080000004f8d64b4fc41ffe4e933000000909090e931000000909090e92f000000909090e953000000909090e973000000909090e971000000909090e991000000909090488d642418c3488d642418c34d89ed4d89ee41ff75084d89f6498b5e104c8b442410e858ffffff5b488d64240841584883c408e947ffffff4d89ed4d8b6d08488d64240841584989c148bb8897d1f1c27f00004c89e84883c408ff256f000000488d642418c34d89ed4d8b6d08488d64240841584989c148bb8897d1f1c27f00004c89e84883c408ff25390000004d89ed4d8b7508488d642408498b1e41584883c408e9d7fefffff4000000000000|@10942,1,@470,@5301,@5300,@5062|204,0,@10940 250,0,@10940 5300:D3,96|483b65187306ff5558ca09034989c64c89c853415041f6c601753741ff364d8b76084989c14c89f0488b5c24104c8b442408e8c9ffffff4c8b3424498b5e08488d642408488b5424084158488d642408ff22488d642410c3f400000000000000|@10943,1,@472| 5301:D3,80|483b65187306ff5558ca09034989c64c89c853415041f6c601752b41ff364d8b76084989c14c89f0488b5c24104c8b442408e8c9ffffff488b5424105b4158488d642408ff22488d642410c3f4000000|@10943,1,@471| 5302:D3,128|483b65187306ff5558ca090753415041514152a8017555ff30488b40084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8c3ffffff4c8b3424498b5e08488d642408488b5424184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408ff22488d64242048c7c001000000c20800f400000000|@10943,1,@477| 5303:D3,112|483b65187306ff5558ca090753415041514152a8017549ff30488b40084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8c3ffffff488b5424205b4c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408ff22488d64242048c7c001000000c20800f4|@10943,1,@476| 5304:D7,1400|483b65187306ff5558ca0d0152534150ff15920500004989c54d8b65004d89e64983fc03750d488d64241848c7c003000000c34d89f44983fe01750d488d64241848c7c003000000c34d89e64983fc097515488d64241848b8c898d1f1c27f0000488b5d08ff234d89f44983fe077516498b4508ff15260500004989c641566a05e96e0400004d89e64983fc0b0f85b702000041ff75084d8b75184d8b66184d89e54d8b5424084d89d34d8b124983fa0375394d89dc4d8b6424084c8b5c24184d8b5b284d3be3750949c7c403000000eb0749c7c4010000004983fc03750d488d64242048c7c003000000c34d89ec4d8b6d084d8b6d004983fd050f85930000004d8b7424084d8b2e4983fd057570498b460841ff7610488b5c2408ff15760400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea07d54f1c27f00004c89336a016a01488b4424104989e0ff152d04000058488d642418488b542410488b5c24084158488d642410e981feffff488d64242048b81890d1f1c27f0000488b5d08ff234d89e54d8b5424084d89d34d8b124983fa0375324d8b5b084c8b5424184d8b52204d3bda750949c7c303000000eb0749c7c3010000004983fb03750a488d642420e9680100004d8b5424084d89d34d8b124983fa0375344d8b5b084c8b5424184d8b52184d3bda750949c7c303000000eb0749c7c3010000004983fb03750c49c7c403000000e9820000004d8b5424084d89d34d8b124983fa0375314d8b5b084c8b5424184d8b52104d3bda750949c7c303000000eb0749c7c3010000004983fb03750949c7c403000000eb404d8b5424084d89d34d8b124983fa0375284d89dc4d8b6424084c8b5c24184d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f84920000004c89e84d8b6d084d8b5d004d89dc4983fb057515488d64242048b8a892d1f1c27f0000488b5d08ff234983fc0175244d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d084983fd037510eb354d8b6d084d8b6d004983fd037427488b542410ff124989c64983fe03750d488d64242048c7c003000000c3ff34244156e93e010000ff34246a05e9b1000000488d64242048c7c005000000c34983fe05750d488d64241848c7c003000000c34d8b75084d8b6d10498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304983e5094983fd01740d488d64241848c7c005000000c341ff364c8b34244d8b364983fe077534488b542408ff124989c64983fe03750d488d64242048c7c003000000c3488b54241858488b5c24084158488d642410e91efcffff488d6424085a4883c410ff22f64424080175764c8b742408498b064d89f641ff7608488b542430488b5c24284c8b442420e8e8fbffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243848c7c003000000c3584883c428c3f64424080175764c8b742408498b064d89f641ff7608488b542430488b5c24284c8b442420e865fbffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243848c7c003000000c3584883c428c3f64424080175764c8b742408498b064d89f641ff7608488b542428488b5c24204c8b442418e8e2faffff4989c64983fe05751a415d4c8b24244c8924244c896c2408483b65187303ff5558ebb34983fe01751d415d49c7c4010000004c8924244c896c2408483b65187303ff5558eb90488d64243048c7c003000000c3584883c420c3f4|@10950,1,@479,@5234,@5292,@5306,@5062|89,0,@10947 326,0,@5305 390,0,@10901 710,0,@10915 5305:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@478| 5306:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@480| 5307:D3,80|483b65187306ff5558ca0d03498d47d0483b45107306ff5550ca0c034989c748c740f805000000488958204c8948184c8b72084c8970104c89400849be587f54f1c27f00004c8930c3f4000000000000|@10965,1,@486|61,0,@5308 5308:D8,1824|483b65187305ff5558cd05524c8b304983fe030f85700300004c8b7008ff70104c8b4018ff70204c8b6c24104d8b65184d8b24244e8d1c65010000004983fb01750f49bcb099d1f1c27f0000e9ba0000004d89da4983c20c4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d970600000f87ed0200004c89cf4c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449bab099d1f1c27f000048c7c10d000000498d7208498d7c240848d1e9f3a44d89ed4d8b6d184c89d9498d7508498d7c240e48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d89650849c745000700000041554c8b6c2418498b5d204d89ed4d8b4d104c89f0ff150b0600004989c641564c8b7424204d8b6e184d89ec4c3b2deb0500007502eb374d89e54d8b24244e8d2465010000004983fc0b752e49bec899d1f1c27f0000498d7508498d7e0848c7c105000000483bc9f3a67402eb0c49bd003ad1f1c27f0000eb0a49bde099d1f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b742428498b5e084d89f64d8b4e10488b4424204c8b442418ff154a0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf899d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010ff70184c8b7424184d8b6e184d8b6d004e8d246d010000004983fc01750f49bdb099d1f1c27f0000e9b50000004d89e34983c30c4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15240300000f87060300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb099d1f1c27f000048c7c10d000000498d7308498d7d0848d1e9f3a44d89f64d8b76184c89e1498d7608498d7d0e48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff159a0200004989c04c8b742420498b56104d89f64d8b4e20488b44241848c7c3d107000049c7c201000000ff124989c6415648c7c001000000ff15580200004989c04c8b742428498b56104d89f64d8b4e08488b44241848c7c3d107000049c7c201000000ff124989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424104d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd409ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@10960,1,@481,@5149,@5149,@5309,@10954,@5309|68,0,@10953 208,0,@10953 384,0,@10954 418,0,@10251 430,0,@10955 542,0,@10956 590,0,@10236 678,0,@10236 766,0,@10236 891,0,@9487 943,0,@10953 1081,0,@10953 1410,0,@10236 1489,0,@10236 1534,0,@10959 1578,0,@10236 1666,0,@10236 1791,0,@9487 5309:D4,64|483b65187306ff5558ca09034989c24d8b70184d8b7610498b064d8b6e084d8b66104150ff7424084d89e048895c24104c89ebff251f000000f4000000000000|@10963,1,@482,@5310| 5310:D9,1640|483b65187306ff5558ca0907505341504151415248c7c001000000ff15870600004989c0488b5424084c8b4c2438488b042448c7c3d107000049c7c201000000ff124989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41566a016a01488b4424284889e3ff151c060000ff7424084c8b742440498b066a016a014889e3ff15fb050000488d642408415d4c8b34244d89f44d3bf57507488d642418eb474d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375304d89e4498d742408488d642408498d7d08483bc9f3a67407488d642410eb16488d64241049c7c601000000e98e010000488d6424184d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4c8b6c24084d89ec4c3b2de90300007502eb3e4d89e44d8b2c244d89eb4e8d2c6d010000004983fd01753249bdd8c8d0f1c27f00004d89e4498d742408498d7d0848c7c100000000483bc9f3a67402eb0c48c7c301000000e9ba0200004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b6424084a8d0c5d010000004883f901750f49baa09ad1f1c27f0000e99a0000004989cb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dc40200000f879a0200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca027a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a41c642082841c642092a4d89e4498d742408498d7a0a48d1e9f3a4418062ffbf4d8b224e8d2465010000004983fc01750f49bbb89ad1f1c27f0000e9a70000004d89e14983c1044c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05020200000f87cb0100004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1e94d890b4c89e1498d7208498d7b0848d1e9f3a44983c4104d89e249d1ea43c604132a49d1ec43c644230129418063ffbf4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d896c241849c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0849bd4032d1f1c27f00004c892b4883fb0175054c89f3eb0c4c89f0ff15c50000004889c34883fb017508415e4883c418eb12488b0424ff15a20000004989c6488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c21000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@10964,1,@483,@5312,@5311,@9493,@5071,@5071,@5149|564,0,@10236 608,0,@10380 653,0,@10236 709,0,@9493 863,0,@10961 1049,0,@10962 1444,0,@10236 1582,0,@9487 1603,0,@9487 5311:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@485| 5312:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@484| 5313:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@10991,1,@494,@5314| 5314:D5,736|483b65187306ff5558ca0907415041514152ff30ff7008ff7010ff7018498d47e0483b45107303ff55504989c748c740f8030000004c8b7424284c8970104c8b7424304c89700849beb09254f1c27f00004c89306a016a016a014889e3ff159d020000ff3424488b5c2410ff7424184c8b7424484983c60241567115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8bb424a00000004c8bac24980000006a01ff74246841564155ff742478488b4424684c8b44242849c7c10100000049baf89ed1f1c27f0000ff15280200004989c641564c8bb424a00000004d8b6e304d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849bdf89854f1c27f00004d892e41564c8bb424a800000041ff76404c8bb424b000000041ff76204c8bb424b8000000498b5e684c8bb424b80000004d8b56284c8bb424b8000000498b56584c8bb424b8000000498b4e604c8bb424b80000004d8b66104c8bb424b80000004d8b5e184c8bb424b80000004d8b364c8bac24b8000000498b75504c8bac24b80000004d8b6d084c8b8c24b80000004d8b49384c8b8424b8000000498d7fe0483b7d107306ff5550ca4e7f4989ff48c747f803000000488b442430488947104c89470849b8609954f1c27f00004c89074d8d47884c3b45107306ff5550cace7e4d89c749c740f80e0000004989586849894860498950584989705049897848488b7c2408498978404d8948384c8b4c24104d8948304d895028415a488d6424104d8950204d8958184d8960104d8968084d8930488b942498000000488b5c24784c8bb424900000004c8bac24880000004c8ba42480000000ff742468415641554154488b4424284c8b8c24800000004c8b542470ff124989c64c8b6c24384d8975004c8b2c244c8b6424404d892c24498d47e0483b45107306ff5550ca00404989c748c740f8030000004c897010415e488d6424184c89700848c700050000004883c450c23800f400000000|@10996,1,@499,@5327,@5322|73,0,@5315 131,0,@9475 194,0,@10987 267,0,@5318 473,0,@5319 5315:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba389ed1f1c27f0000e9b60000004d89eb4983c34a4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc389ed1f1c27f000048c7c14b000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@10985,1,@487,@5316|70,0,@10983 98,0,@10984 256,0,@10984 316,0,@9487 5316:D8,616|483b65187306ff5558ca0907505341514c8b7424104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d6f02000075204d8d77f04c3b75107306ff5550ca00154d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0045ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e94b0100004d8b364d8b2e4c3b2d0b0200007506498b5e10eb15488d64241848b87810d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca08054d89f749c746f8020000004d89560849c706070000004d8d6fe84c3b6d107306ff5550ca08414d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca08214d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c89c0ff15500100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca00154d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0045ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3b0000007509498b5e10e95afeffff488d64241848b87810d1f1c27f0000488b5d08ff23f40000|@10986,1,@488,@4650,@4650,@5145,@4650,@4650|115,0,@10158 156,0,@9991 554,0,@10198 599,0,@9991 5317:D3,480|483b65187305ff5558cd014c8b304c8b60084c8b581049c7c5ffffffff4d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49bd6086d1f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d89550849c745000500000049c7c2010000004d8d47f04c3b45107306ff5550ca007c4d89c749c740f80100000041c640ff404d891049c7c1010000004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d890a49c7c101000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c890f4d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890a49c7c1010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89084d8d4ff04c3b4d107306ff5550ca007d4d89cf49c741f8010000004d8901498d47c0483b45107306ff5550ca007e4989c748c740f8070000004c8948304c8950284c8958204c8960184c89681048c74008030000004c8930c3f4000000|@10988,1,@489|66,0,@10839 5318:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@490| 5319:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be409a54f1c27f00004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@10990,1,@492,@5321|101,0,@5320 5320:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@491| 5321:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@493| 5322:D3,216|483b65187305ff5558cd0949c7c6010000004d8d5ff04c3b5d107306ff5550ca09404d89df49c743f80100000041c643ff404d89334d8d67e84c3b65107306ff5550ca09084d89e749c74424f8020000004d895c240849be389c54f1c27f00004d8934244d8d6fe04c3b6d107306ff5550ca09184d89ef49c745f8030000004d895d104989450849be209d54f1c27f00004d8975004d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849bb309e54f1c27f00004d891e4c89234c896b084c89731048c7c001000000c3f4000000|@11288,1,@598|88,0,@5323 137,0,@5325 182,0,@5326 5323:D4,32|483b65187305ff5558cd054889c34c8b7208498b06ff251d000000f400000000|@10992,1,@495,@5324| 5324:D3,112|483b65187305ff5558cd0953a80175524c8b30488b400841ff3641ff7608488b5c2410e8d8ffffff488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22488d64240848c7c001000000c3f4|@10993,1,@496| 5325:D3,232|483b65187305ff5558cd054c8b304c8b68084c8b62104d8b242441f6c40175634d8b14244d8b5c24084d8b0a498b5a084d3bce7502eb2f4d8b114e8d1455010000004d8b064c89c14e8d0445010000004d3bd0751d498d7108498d7e08483bc9f3a67402eb0c488b52084c89f04d89e8ff224d89dc483b65187306ff5558ca0470eb974d8d67e84c3b65107306ff5550ca04604d89e749c74424f8020000004d896c24084d8934244c8b72104d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400000000000000|@10994,1,@497| 5326:D3,152|483b65187305ff5558cd054c8b72084d8b3641f6c60175764d8b264d8b6e084d8b14244d8b6424084c3bd07502eb2f4d8b1a4e8d1c5d010000004c8b084c89c94e8d0c4d010000004d3bd97530498d7208488d7808483bc9f3a67402eb1f498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d89ee483b65187306ff5558ca0140eb8448c7c001000000c3f400|@10995,1,@498| 5327:D77,9000|483b65187306ff5558ca090750534150415141524c8b4424204d8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9f2000000909090e9f4000000909090e901060000909090e900060000909090e902060000909090e98a0a0000909090e9890a0000909090e9880a0000909090e9870a0000909090e9860a0000909090e9850a0000909090e9840a0000909090e9830a0000909090e9850a0000909090e97c0f0000909090e92f110000909090e930120000909090e90a140000909090e9be150000909090e9bd150000909090e9bc150000909090e9bb150000909090e90c160000909090e90b160000909090e90d160000909090e9df160000909090e9de160000909090e9e8160000909090e9e7160000909090e9f1160000909090488d642428eb05488d642428e91a0500004d89c04d8b68084d8b750041ff750841ff751041ff75204d8b2e4983fd1d0f85e90200004d8b760841ff3641ff760841ff761041ff76184d8b6e204c8b7424704d8b76484d8975004c8b7424704d8b76304c8b6c24704d8b6d68498d5fe8483b5d107306ff5550ca00614989df48c743f8020000004c896b084c89334c8bb424800000004d8d4fd84c3b4d107306ff5550ca08414d89cf49c741f8040000004c8b2c244d8969184d89c04d8941104d89710849be90c454f1c27f00004d893148b8a8a1d1f1c27f00004c8b442418ff15802300004989c641564c8b34244d8b6e084983fd017505e98701000041f6c5010f847d0100004d89f64d8b2e488d6424084c3b2d442300007507488d642420eb394d8b75004e8d3475010000004983fe17752c49bec8a1d1f1c27f0000498d7508498d7e0848c7c10b000000483bc9f3a67402eb0a488d642420e9000100004c8b6c24184d8b75004e8d3475010000004983fe01750f49bae8a1d1f1c27f0000e9b70000004d89f44983c42a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d472000000f87b30000004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049bde8a1d1f1c27f000048c7c12b000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b84248000000048c7c3030000004c8b4424584c8b0c24ff15fa210000488d64242049beb80bd1f1c27f0000e9ad000000488d64246048b8f8c7d0f1c27f0000488b5d08ff234d89f64d8b6e104d8b65004983fc0775354d8b6d084983fd11750949c7c503000000eb0749c7c5010000004983fd0375154c89f048c7c301000000ff15882100004989c6eb334d89f6498b46186a016a0148bb10a2d1f1c27f00004989e0ff155d210000ff3424488b442410ff1547210000415e488d6424104c8b2c244c8b6424184d892c24488d6424084c8b6c24084d8975004883c420eb2a488b44246048c7c3030000004c8b0c2449ba20a2d1f1c27f0000ff15f720000049beb80bd1f1c27f000041564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442440488b5c24604c8b4424584c8b4c24504c8b542448e852fbffff4989c64156488b442408ff15922000004c8b304983fe05757b4c8b7008ff701048bad88ed1f1c27f00004c89f0488b5c2408ff15622000004989c641f6c601754e41ff3648ba9899d1f1c27f0000488b842480000000488b5c24784c8b44247849b9c899d1f1c27f0000ff15222000004889c2488b0424ff124989c641564c8bb424880000004d8b7668e9231c0000e9141c000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad88ed1f1c27f0000ff154b1f00004989c641f6c601754e41ff3648ba9899d1f1c27f0000488b842480000000488b5c24784c8b44247849b9c899d1f1c27f0000ff150b1f00004889c2488b0424ff124989c641564c8bb424880000004d8b7668e955190000e93c190000488d642428eb05488d642428e9950400004d89c04d89c541ff70084d89ed4d89ee41ff75104d89f641ff76184c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442430488b5c24584c8b4424504c8b4c24484c8b542440e84af9ffff4989c6415648ba60a2d1f1c27f00004c8b7424684c8b6c2458498d5fd8483b5d107306ff5550ca04604989df48c743f8040000004c896b184c8b6c24404c896b104c89730849be30d254f1c27f00004c89334c8b442468488b442418ff15101e00004989c6415648bad88ed1f1c27f0000488b442408488b1c24ff15ea1d00004989c641f6c6010f85a203000041ff364c8b4c24784c8b54247048b880b0d1f1c27f0000488b5c24204c8b442410ff15ae1d00004989c6415648c7c001000000ff15941d00004989c048ba8048d1f1c27f00004c8b4c2478488b44241048c7c3214e000049c7c201000000ff15611d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98b0d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba9899d1f1c27f0000488b842488000000488b9c24800000004c8b84248000000049b9c899d1f1c27f0000ff15641c00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0b0d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424784d8b7668e9ed120000e9e0120000488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428eb05488d642428e9660b00004d89c04d8b700841ff3641ff760841ff761041ff761841ff76206a016a01488b4424304889e3ff15a7190000415d488d6424084c8b7424784983fe03750f49be20b1d1f1c27f0000e9fb0000004c3b2d771900007502eb344d8b75004e8d3475010000004983fe01754f49bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb2d4c8b742460498b5630488b442420ff124989c64983fe01750c49be20b1d1f1c27f0000eb034d8b36e98f0000004c8b7424604d8b76304c8b6c24604d8b6d68498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334c8b7424704d8d4fd84c3b4d107306ff5550ca08404d89cf49c741f8040000004c8b6c24084d8969184c8b6c24484d8969104d89710849be601855f1c27f00004d893148b8a8a1d1f1c27f00004c8b442420ff157e1800004989c641564c8b7424684d8b76484c8b6c24084d8975004c8b2c244d8b75084983fe017505e9ef01000041f6c6010f84e5010000488d6424104d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060100000041564c8b742470498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408488b54242049bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca04604d89e749c74424f80100000041c64424ff404d8934244c8b7424304e8d1cf5f9ffffff4d8d77e04c3b75107306ff5550ca04384d89f749c746f8030000004d895e104d89660849c7060d000000498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c8970084c8b7424184c8930ff124989c64156488b5c2470488b4424204c8b442408ff15d0160000488b5c24584c8b442470488b4424204c8b4c240849c7c201000000ff15a7160000488b542440498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424204c8930ff124c8b2c244d89ee4c8b6424184d892c244d89f6498b4618488d642410e9920100004c8b7424384983fe03753e488d642410488b44246848c7c3030000004c8b4424404c8b0c2449ba60b1d1f1c27f0000ff1518160000488d64240848b8b80bd1f1c27f0000e9490100004d89ed4d89ee4c8b6424204d892c244d89f64d8b6e0841f6c50175064d8b7500eb624d89f6498b4618ff15cd1500004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe030f85820000004c8b34244d8b6e104d8b65004983fc0775374d8b6d084983fd11750949c7c503000000eb0749c7c5010000004983fd0375174c89f048c7c301000000ff1524150000488d642418eb374d89f6498b4618488d6424086a016a0148bba8b1d1f1c27f00004989e0ff15f2140000ff3424488b442410ff15dc14000058488d642420eb39488d642410488b44246848c7c3030000004c8b4424404c8b0c2449bab8b1d1f1c27f0000ff15a2140000488d64240848b8b80bd1f1c27f00004c8b3424498906488d642440c228004d89c04d89c541ff70084d89ed4d89ee41ff75104d89f6498b46184c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24604156ff742430ff742430ff742430ff742430415548bb00b2d1f1c27f0000ff1524140000ff15161400004989c64156488b0424ff15ff1300004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24104d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd0375054c89f0eb6b49bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d8975004c8b3424498906488d642438c228004d89c0498b40084d89c04d89c641ff70104d89f641ff76184c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b44244849c7c1030000004c8b542438e8cbedffff4989c641564c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e885edffff4889c348bad88ed1f1c27f0000488b0424ff15f61100004989c641f6c601754841ff3648ba9899d1f1c27f0000488b442468488b5c24604c8b44246049b9c899d1f1c27f0000ff15b91100004889c2488b0424ff124989c641564c8b7424704d8b7668e930090000e9230900004d89c04d89c541ff70084d89ed498b45104d89ed4d8b75184c8b5c24584c8b5424504c8b4c24484c8b442440488b7c24384d8d67a04c3b65107306ff5550ca816f4d89e749c74424f80b00000049897c24504d894424484d894c24404d895424384d895c24304c8b5c24084d895c24284c8b5c24104d895c24204c8b5c24184d895c24184c8b5c24204d895c241049bb00b2d1f1c27f00004d895c240849bbf81855f1c27f00004d891c244d8d47e04c3b45107306ff5550ca01704d89c749c740f80300000049bb70b2d1f1c27f00004d89581049bbd877d1f1c27f00004d8958084d8920498d5fd0483b5d107306ff5550ca01614989df48c743f8050000004d89ed4c896b204c89731849bed0d8d0f1c27f00004c89731049be48b3d1f1c27f00004c89730849be60b3d1f1c27f00004c89334c8b4c24504c8b542448ff154c1000004989c54d8b75004983fe01750c48b8b80bd1f1c27f0000eb764d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d0483b45107306ff5550ca00404989c748c740f80500000049bd4059d1f1c27f00004c89682049bd98b3d1f1c27f00004c89681849bde0b3d1f1c27f00004c8968104c89700848c7000b0000004c8b3424498906488d642430c22800488d6424204d89c04d89c541ff70084d89ed4d89ee41ff75184d89f6498b462048c7c303000000ff15790f0000ff156b0f00004c8b304983fe05757a4c8b7008ff701048bad88ed1f1c27f00004c89f048bb78c3d1f1c27f0000ff15360f00004989c641f6c601754841ff3648ba9899d1f1c27f0000488b442448488b5c24404c8b44244049b9c899d1f1c27f0000ff15f90e00004889c2488b0424ff124989c641564c8b7424504d8b7668e9d9040000e9ca04000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c89731049be78c3d1f1c27f00004c89730848c7030500000048bad88ed1f1c27f0000ff15200e00004989c641f6c601754841ff3648ba9899d1f1c27f0000488b442448488b5c24404c8b44244049b9c899d1f1c27f0000ff15e30d00004889c2488b0424ff124989c641564c8b7424504d8b7668e912020000e9f9010000488d642428eb05488d642428eb05488d642428eb5e4d89c0498b4008488b5c24184c8b442410488b7c24085e488d6424204c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e90ce9ffff488d642428eb05488d642428e9df0000004d89c0498b40084d89c041ff70104c8b4424504c8b4c24484c8b5424404c8b7424384c8b6c24584156ff742428ff742428ff742428ff742428415548bb00b2d1f1c27f0000ff15f00c000048c7c303000000ff15db0c00004989c64156488b0424ff15c40c00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c700070000004c8b3424498906488d642430c22800488d642428eb17488d64242848b8a8c3d1f1c27f0000c22800488d642428eb05488d64242848b8b80bd1f1c27f0000c22800488d64242849bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c22800584883c4084c8b3424498906488d642410c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1d7d0b000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b60000004d8b364d8b2e4c3b2d190b00007506498b5e10eb15488d64243048b87810d1f1c27f0000488b5d08ff23488b442428ff15e90a00004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424484d8b76184c8b6c2448498b556049c70603000000ff124883c408e9cffeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d480a000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2dde0900007509498b5e10e9effeffff488d64243048b87810d1f1c27f0000488b5d08ff23584883c408e930feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9409000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b60000004d8b364d8b2e4c3b2d300900007506498b5e10eb15488d64243048b87810d1f1c27f0000488b5d08ff23488b442428ff15000900004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424484d8b76184c8b6c2448498b556049c70603000000ff124883c408e9d9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d5f08000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2df50700007509498b5e10e9effeffff488d64243048b87810d1f1c27f0000488b5d08ff23584883c438c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dad07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b60000004d8b364d8b2e4c3b2d490700007506498b5e10eb15488d64245048b87810d1f1c27f0000488b5d08ff23488b442448ff15190700004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424684d8b76184c8b6c2468498b556049c70603000000ff124883c408e9dbfeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d7806000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d0e0600007509498b5e10e9effeffff488d64245048b87810d1f1c27f0000488b5d08ff23584883c448c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dc605000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b20000004d8b364d8b2e4c3b2d620500007506498b5e10eb15488d64245848b87810d1f1c27f0000488b5d08ff23488b442450ff15320500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424704d8b76184c8b6c2470498b556049c70603000000ff12e9dffeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9504000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d2b0400007509498b5e10e9f3feffff488d64245848b87810d1f1c27f0000488b5d08ff23584883c4184c8b3424498906488d642438c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1dd703000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9bc0000004d8b364d8b2e4c3b2d730300007506498b5e10eb15488d64246848b87810d1f1c27f0000488b5d08ff23488b442460ff15430300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424084c89700848c700030000004c8bb424800000004d8b76184c8bac2480000000498b556049c70603000000ff124883c408e9c9feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d9c02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d320200007509498b5e10e9e9feffff488d64246848b87810d1f1c27f0000488b5d08ff23584883c418e92afeffff41f6c60175454d8b264d8b6e084d8b1c244c3b1de801000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9bc0000004d8b364d8b2e4c3b2d840100007506498b5e10eb15488d64246848b87810d1f1c27f0000488b5d08ff23488b442460ff15540100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424084c89700848c700030000004c8bb424800000004d8b76184c8bac2480000000498b556049c70603000000ff124883c408e9d3feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dad00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d430000007509498b5e10e9e9feffff488d64246848b87810d1f1c27f0000488b5d08ff23f40000ffffffffffffff01|@11248,1,@571,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5400,@5156,@5401,@5307,@5268,@5307,@5268,@5062,@5402,@5407,@5307,@5268,@5411,@5159,@5412,@5316,@5239,@5234,@5402,@5062,@5316,@5413,@5414,@5399,@9493,@5071,@5307,@5057,@5149,@5388,@5268,@5330,@5307,@5268,@5307,@5268,@5062,@5316,@5239,@5234,@5402,@5316,@10999,@5399|488,0,@5328 501,0,@10998 601,0,@10999 668,0,@11000 828,0,@11000 901,0,@9948 921,0,@9487 1018,0,@11001 1107,0,@11002 1123,0,@9948 1232,0,@10895 1268,0,@10952 1296,0,@10954 1348,0,@10468 1503,0,@10895 1531,0,@10952 1559,0,@10954 1725,0,@11003 1789,0,@5338 1823,0,@10895 1874,0,@11089 1921,0,@10384 2034,0,@10236 2078,0,@11090 2156,0,@10952 2190,0,@10954 2289,0,@10966 2333,0,@10967 2479,0,@10236 2567,0,@10236 2655,0,@10236 2699,0,@11092 2917,0,@11094 2961,0,@9493 3020,0,@11094 3146,0,@5383 3159,0,@10998 3428,0,@10468 3754,0,@11095 3775,0,@9948 4021,0,@11096 4088,0,@11097 4109,0,@9948 4206,0,@11098 4455,0,@10468 4736,0,@10895 4768,0,@10952 4793,0,@10954 4984,0,@11098 4999,0,@5385 5040,0,@11100 5054,0,@10742 5109,0,@9569 5123,0,@11104 5137,0,@11105 5179,0,@9948 5256,0,@10496 5270,0,@11106 5284,0,@11108 5391,0,@10895 5404,0,@11238 5432,0,@10952 5457,0,@10954 5506,0,@10468 5645,0,@11238 5666,0,@10895 5694,0,@10952 5719,0,@10954 5954,0,@11098 6125,0,@11239 6150,0,@9948 6168,0,@10468 6381,0,@10158 6422,0,@9991 6671,0,@10198 6716,0,@9991 6830,0,@10158 6871,0,@9991 7120,0,@10198 7165,0,@9991 7277,0,@10158 7318,0,@9991 7567,0,@10198 7612,0,@9991 7724,0,@10158 7765,0,@9991 8010,0,@10198 8055,0,@9991 8179,0,@10158 8220,0,@9991 8475,0,@10198 8520,0,@9991 8634,0,@10158 8675,0,@9991 8930,0,@10198 8975,0,@9991 5328:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@500,@5316| 5329:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@501| 5330:D4,32|483b65187306ff5558ca0d014d89c14c8b4208ff251f000000f4000000000000|@11008,1,@502,@5331| 5331:D15,1888|483b65187306ff5558ca090353415041514c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e933000000909090e9e1000000909090e94c010000909090e980010000909090e904030000909090488d64241848b8b80bd1f1c27f0000c34c8b700841ff3641ff760841ff762041ff76286a01488b542438488b442418488b5c24104989e0ff12ff34244c8b34244d8b66184d89e54d8b5424084d89d34d8b124983fa0375214d89dc4d8b6424084c3b642438750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03743b4d89ee4d8b76084d8b264d89e54983fc037509498b4610e9040400004983fd017509498b4608e9f50300004d8b760848c7c001000000e9a9030000e9e30200004c8b7008ff70184c89f0488b5c24184c8b4424104c8b4c2408e8c9feffff4989c64156488b442408488b5c24204c8b4424184c8b4c2410e8abfeffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64242848c70005000000c3488d6424184c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34c8b7008ff70104c89f048bb78a2d1f1c27f00004c8b4424184c8b4c24104c8b542408ff15df050000ff15d10500004989c64156488b0424ff15ba0500004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b5c24084d89de4d895c24104d896c240849c70424010000004d89f64d89f54983fe037502eb4c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104c8b24244d896608488d64240849c706070000004d89ed4983fd03488d6424087509488d6424184c89f0c3488d64241849bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c7000d0000004d897500c3488b400848bb78a2d1f1c27f00004c8b4424104c8b4c24084c8b1424ff1542040000488d64241848c7c303000000ff15280400004989c64156488b0424ff15110400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3488b44242848bb78a2d1f1c27f00004c8b4424404c8b4c24384c8b542430ff15800300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24184d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b2c244c896818488d6424084c8b6c24184c8968104c89700848c7000b0000004883c440c341f6c60175364d8b66084989c54983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc449c7c6010000004c8b6c242841f6c50175364d8b5d084d89f44983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156483b04240f84f40100004c8b74240841ff3648bae81cd1f1c27f000048c7c303000000ff152c0200004989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff15030200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88a2d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8a2d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec8a2d1f1c27f00004c8930ff15f000000048bb4830d1f1c27f0000ff15d8000000ff15ca0000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24184c8968184c89701048c740080100000048c700030000004c8b6c24304d8b75184d89ed498b556049c70603000000ff12eb12488d6424084c8b34244c8b6c24104d897500e9a4fcfffff400000000000000|@11009,1,@503,@5333,@5030,@4836,@4983,@4983,@5334,@5335,@5156,@5336,@5337,@5159,@5332|90,0,@9948 468,0,@11004 746,0,@10468 858,0,@11004 1027,0,@11004 1239,0,@9475 1311,0,@9475 1367,0,@10077 1395,0,@10077 1495,0,@11005 1583,0,@11006 1671,0,@11007 1690,0,@10221 5332:D4,224|483b65187306ff5558ca090753415041514152a8010f85b40000004c8b28ff70084d8b7500498b450841ff36488b542428488b5c24204c8b4424184c8b4c2410ff124989c64156488b442408ff15a60000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424104d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e860ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4000000|@10112,1,@509,@5162| 5333:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86032d1f1c27f0000c3f400000000000000|@10239,1,@504|190,0,@10236 247,0,@10237 5334:D3,160|483b65187306ff5558ca09074989c65341504151415241f6c601756f498b0641ff7608488b542420488b5c24184c8b4424104c8b4c2408ff124989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000000000|@10112,1,@505| 5335:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@506| 5336:D3,160|483b65187306ff5558ca09074989c65341504151415241f6c601756f498b0641ff7608488b542420488b5c24184c8b4424104c8b4c2408ff124989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000000000|@10112,1,@507| 5337:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@508| 5338:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc08d354f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@512,@5340|117,0,@5339 5339:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@510,@5316| 5340:D9,1816|483b65187306ff5558ca09014150ff30ff70086a016a014889d84889e3ff1535070000ff3424ff7424104c8b7424084d89f54c3b35170700007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e99601000048b860a3d1f1c27f0000488b5c24204c8b4424084c8b4c2430ff159f0600004989c641f6c6010f856001000041ff364c8b34244d8b7610498b0648ba3851d1f1c27f0000ff156c0600004989c6498b5640488b442408ff124989c64983fe017511488d64240849c7c601000000e9030100004d8b364c8b2c244d8b6510498b5c24204d89ed4d8b6500488d6424084d8b2c244e8d2c6d010000004983fd01750f49b800d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15a70500000f87920000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff155a0500004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1f488d64243848b8f8c7d0f1c27f0000488b5d08ff2349be80a3d1f1c27f00004983fe010f85bb0400004c8b74243049c7c5090000004e8d0cad0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca00404d89cf49d1ed4d8969f841c641ff4149c741180000000049c7011200000049bde8a4d1f1c27f000048c7c121000000498d7508498d790848d1e9f3a441c641182041c6411928418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3dfa0300000f87bc0300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08a5d1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d1e0300000f87d30200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08a5d1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2dba0200007507488d642430eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8c8d0f1c27f00004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243049bcd8c8d0f1c27f0000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243049bc30a5d1f1c27f0000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05d30100000f877b0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930a5d1f1c27f000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4284d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05db000000777f4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248b890a3d1f1c27f0000c348b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d642438498b06c3f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@11028,1,@513,@9493,@5343,@5076,@5342,@9493,@5071|84,0,@9493 140,0,@11010 198,0,@10448 300,0,@9571 520,0,@9487 536,0,@11011 629,0,@11023 933,0,@11024 1091,0,@11024 1176,0,@9493 1218,0,@9493 1256,0,@11025 1396,0,@11025 1677,0,@11012 1688,0,@9487 1709,0,@9487 1730,0,@9487 1751,0,@9487 5341:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@10569,1,@511|13,0,@10508 5342:D8,1720|483b65187306ff5558ca0903505341516a016a014c89c04889e3ff15d0060000ff3424ff7424104c8b7424084d89f54c3b35b20600007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e9a600000048b860a3d1f1c27f0000488b5c24284c8b4424084c8b4c2420e85bffffff4989c641f6c601757841ff364c8b34244d8b7610498b0648ba3851d1f1c27f0000ff15140600004989c6498b5660488b442408ff124989c64983fe01750e488d64240849c7c601000000eb33498b06488b1c24ff15da0500004989c5488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe010f852d0500004c8b7424204c8b6424304d8b2c244e8d2c6d010000004983fd01750f49b980a5d1f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b151e0500000f87b70400004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e94d89e4498d742408498d790848d1e9f3a44983c5104d89ec49d1ec43c604212049d1ed43c644290128418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d2d0400000f87b90300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08a5d1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d510300000f87d00200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08a5d1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2ded0200007507488d642430eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8c8d0f1c27f00004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243049bcd8c8d0f1c27f0000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243049bc30a5d1f1c27f0000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05060200000f87780100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930a5d1f1c27f000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4284d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b050e010000777c4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248c7c001000000c348b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d6424384d8b36498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@11066,1,@550,@9493,@5378,@5076,@9493,@5071|81,0,@9493 137,0,@11010 190,0,@10448 341,0,@11027 786,0,@11024 944,0,@11024 1029,0,@9493 1071,0,@9493 1109,0,@11025 1249,0,@11025 1538,0,@9487 1559,0,@9487 1580,0,@9487 1601,0,@9487 1622,0,@9487 5343:D7,336|483b65187306ff5558ca09015053415048c7c015000000ff15630100004989c6415648ba3851d1f1c27f0000488b0424ff15420100004989c6498b56184c8b6c24184d8b75004d8b36498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff1249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bdb0e354f1c27f00004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f80300000049bdf8a5d1f1c27f00004c896b104c89730849be88a6d1f1c27f00004c8933ff35670000006a01488b4424184c8b44242849c7c1030000004c8b542420ff15410000004c8b34244d8b36488d6424284983fe01751048b80895d1f1c27f0000488b5d08ff23498b06c3f40000|@11039,1,@517,@5348,@11061,@5076,@5347|36,0,@10448 190,0,@5344 230,0,@11030 248,0,@11034 315,0,@10926 5344:D3,64|483b65187305ff5558cd054c8b68084d8d77f04c3b75107306ff5550ca04204d89f749c746f8010000004d892e4c8b6a084d89750048c7c001000000c3f40000|@11029,1,@514| 5345:D3,328|483b65187305ff5558cd014c8b284d8b75004e8d2475010000004983fc01750f49be08a6d1f1c27f0000e9ad0000004d89e34983c3184c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e10000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb08a6d1f1c27f000048c7c119000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1448d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd28a6d1f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@11029,1,@515|34,0,@11031 171,0,@11031 249,0,@11032 267,0,@10202 281,0,@4656 300,0,@9487 5346:D3,328|483b65187305ff5558cd014c8b284d8b75004e8d2475010000004983fc01750f49be98a6d1f1c27f0000e9ad0000004d89e34983c3124c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15e10000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb98a6d1f1c27f000048c7c113000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1148d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdb8a6d1f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@11029,1,@516|34,0,@11035 171,0,@11035 249,0,@11036 267,0,@10202 281,0,@4656 300,0,@9487 5347:D4,768|483b65187305ff5558cd0150ff75084c8d356001000041564889650849c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004c8b7424104d89f44983fe017d05e90c0100004d89e44d89e64c3b25910200000f8df90000004d89f44c89e14e8d1ca50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02604d89df49d1ec4d8963f841c643ff404c89df48d1e948c7c001000000f348ab4d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89f64d89730849be800252f1c27f00004d89334d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c700030000004883c408415e4c8975084883c408c348b8d015d1f1c27f0000488b5d08ff23488b65084883c408415e4c8975084c8b304983fe090f854f01000048bae81cd1f1c27f0000488b042448c7c303000000ff156c0100004989c5488d6424084d8b75004e8d2475010000004983fc01750f49bee8a6d1f1c27f0000e9ad0000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15eb0000000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbe8a6d1f1c27f000048c7c121000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1848d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd08a7d1f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23488d642408488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@11065,1,@548,@4983|251,0,@5033 360,0,@10027 403,0,@10077 456,0,@11037 593,0,@11037 671,0,@11038 689,0,@10202 703,0,@4656 722,0,@9487 5348:D6,296|483b65187306ff5558ca090750534150415141524c8b7424304156488b442428488b5c24084c8b44241849c7c10300000049c7c201000000ff15120100004989c24152488b442428488b5c24084c8b44241849c7c101000000ff15e90000004989c34d8d57d84c3b55107306ff5550ca00084d89d749c742f8040000004d895a184c8b34244d89f54d8972104c8b6424104d89e64d89620849bc90eb54f1c27f00004d89224c8b6424384d8d47b84c3b45107306ff5550ca007c4d89c749c740f8080000004d8950384c8b5424184d8950304d8958284d8960204d89ed4d896818488d6424084d89f64d8970104c8b34244d897008488d64241849be58ee54f1c27f00004d89305848c7c3010000004c8b34244c897424104883c410ff251e000000f40000000000|@11059,1,@545,@4953,@5366,@5366|154,0,@5349 252,0,@5353 5349:D4,192|483b65187305ff5558cd05498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be80ec54f1c27f00004c89334d8d4fe84c3b4d107305ff5550cd0d4d89cf49c741f8020000004c8b72104d89710849bef8ec54f1c27f00004d89316a016a016a016a014c8b52185449b8e8a7d1f1c27f0000ff1552000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000000000|@11043,1,@521,@5104|47,0,@5350 94,0,@5351 120,0,@11042 5350:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@11040,1,@518| 5351:D3,256|483b65187305ff5558cd054989d34989c54d8b73084c89f04d8b364e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc017501c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8a00000077734d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104d8b5b084c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@11041,1,@519|229,0,@9487 5352:D3,16|483b65187305ff5558cd01c3f4000000|@11041,1,@520| 5353:D4,152|483b65187306ff5558ca0d015250534150f64424080175784c8b742408498b1e4d89f641ff76084c8b5424204d8b4a084d89d24d8b42104d89d24d8b72184d89d24d8b6a204d89d24d8b62284d89d24d8b5a304d89d24d8b5238415641554154415341524d89c2488b4424404c8b442430ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558eb81584883c418c3f400|@10041,1,@531,@5354| 5354:D12,2272|483b65187306ff5558ca09075041524c8b2b4d89ee4c3b2d1c0900000f85680600004c3b35070900000f85460600004c8b6b1041ff750041ff75084d8b751041ff751841ff3641ff760841ff761841ff762041ff76284983f9030f855b0100004d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424404d897424104c8b7424084d8974240849be70f854f1c27f00004d8934244c8b7424204d8b2e4983fd030f85b80000004d89f64d8b6e084d89f64d8b76184d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bb4882d1f1c27f0000eb554d89f24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab4c89f14c89df48d1e9f348a5418063ffbf4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70601000000eb034d89f64d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084d8965204c8b6424084d89651849c74510010000004c8b6424104d8965084d8975004883c420e90b04000048c7c015000000ff15600700004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b24244d89e64d89650849bcc0f854f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d89f34d8974240849beb0fa54f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89db4d895e0849bba0fc54f1c27f00004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c89334d8d47e04c3b45107305ff5550cd084d89c749c740f8030000004c8b7424484d8970104c8b7424104d89700849be90fe54f1c27f00004d89304c8bb424800000004d8b364e8d3475010000004c8b6424504d8b2c244e8d1c6d010000004983fe0175084d89e5e9c50000004983fb01750d4c8bac2480000000e9b20000004f8d541eff4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0da40500000f87260300004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c8b9424800000004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d94d89e4498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49ba00d9d0f1c27f0000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc70400000f873c0200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca08794d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049d1ee43c604322e418062ffbf48ba68a8d1f1c27f00004c8b7424784c8b6c247041564155488b44243849c7c101000000ff124c8b34244d8b2e4983fd030f85c00000004d89f64d8b6e084d89f64d8b7618488d6424084d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bc4882d1f1c27f0000eb584d89f34c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c89f14c89e748d1e9f348a541806424ffbf4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb084d89f6488d6424084c8b6424704d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004c8b1c244d895d28488d6424084d8965204c8b6424084d89651849c74510010000004c8b6424104d8965084d8975004883c4204d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424084c89304c8b7424104c897424384883c438ff22488d64245848b8f8c7d0f1c27f0000488b5d08ff23488d64245848b8f8c7d0f1c27f0000488b5d08ff23488d64241048b87810d1f1c27f0000488b5d08ff23488d6424084d89f54c3b35870200000f85ba0000004c3b2d720200000f85980000004c8b7310498b0641ff7608488b542418ff124989c64156488b5c2420488b442408ff153d0200004989c54c8b742428498b56084d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b34244c897424284883c428ff22488d64240848b87810d1f1c27f0000488b5d08ff23488d6424084d89ee4c3b2da00100000f85510100004c3b358b0100000f8534010000ff73104c8b34244d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff76304c8b442448488b44241848bb78a8d1f1c27f0000ff151d0100004989c54c3b6c2418750949c7c603000000eb0749c7c6010000004983fe0374664d8d77c04c3b75107306ff5550ca00204d89f749c746f8070000004c8b24244d896630488d6424084c8b24244d896628488d6424084c8b24244d896620488d6424084d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e4883c418eb0a488d6424304c8b7424084c8b6c2420498b5500498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b7424084c897424304883c430ff2248b87810d1f1c27f0000488b5d08ff2348c7c001000000c22800f4000000000000ffffffffffffff01ffffffffffffff01|@11049,1,@533,@5108,@4625,@4625,@5364,@4626,@4626,@5347,@4628,@4628|143,0,@5355 218,0,@10817 498,0,@5356 551,0,@5358 599,0,@5360 694,0,@5362 972,0,@9571 1142,0,@11045 1245,0,@10817 1618,0,@9487 1639,0,@9487 1660,0,@9991 1867,0,@9991 1997,0,@11046 2225,0,@9991 5355:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@522,@5098| 5356:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd28c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@11044,1,@523,@4931,@5357,@4914|59,0,@9594 73,0,@4626 5357:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@524,@4626| 5358:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd48c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@11044,1,@525,@4931,@5359,@4914|59,0,@9594 73,0,@4628 5359:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@526,@4628| 5360:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd18c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@11044,1,@527,@4931,@5361,@4914|59,0,@9594 73,0,@4625 5361:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@528,@4625| 5362:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@529,@5098| 5363:D3,16|483b65187305ff5558cd01c3f4000000|@11047,1,@530| 5364:D4,352|483b65187305ff5558cd0953a8010f8537010000ff30ff70084c8b7424084d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff7630488b44241848bbc0a8d1f1c27f00004c8b442448ff15010100004989c54c3b6c2418750949c7c603000000eb0749c7c6010000004983fe0374664d8d77c04c3b75107306ff5550ca00204d89f749c746f8070000004c8b24244d896630488d6424084c8b24244d896628488d6424084c8b24244d896620488d6424084d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e4883c420eb0a488d6424384c8b7424084156488b442408488b5c2418e8e8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f400000000000000|@10112,1,@534,@5108|100,0,@11048 5365:D3,16|483b65187305ff5558cd01c3f4000000|@11047,1,@532| 5366:D5,224|483b65187306ff5558ca090750534150415141524d8d47d04c3b45107303ff55504d89c749c740f8050000004c8b34244d8970204c8b7424084d8970184c8b7424104d8970104c8b7424184d89700849bef80155f1c27f00004d8930488b5c2430488b442420ff15940000004889c34d8d47d04c3b45107305ff5550cd084d89c749c740f8050000004c8b34244d897020488d6424084c8b34244d897018488d6424084c8b34244d897010488d6424084c8b34244d897008488d64240849bea80555f1c27f00004d8930584c8b34244c897424084883c408ff251a000000f400|@11060,1,@546,@4953,@4953|81,0,@5367 191,0,@5370 5367:D4,128|483b65187306ff5558ca0d015250534150f644240801755a4c8b742408498b1e4d89f641ff76084c8b6c24204d8b4d084d89ed4d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b4424284c8b442418ff153f0000004989c4415d4c8924244c896c2408483b65187303ff5558eb9f584883c418c3f400000000000000|@10041,1,@536,@5368| 5368:D5,632|483b65187306ff5558ca09074c89cf4989c14c8b2b4d89ee4c3b2d790200000f853b0200004c3b35640200000f851e0200004c8b73104d8b6e104d8b75004d8b65204c8b2f4e8d2c6d010000004d8b194a8d1c5d010000004983fd0175084d89cbe9b20000004883fb0175084989fbe9a4000000498d741dff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15ce0100000f87980100004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cacc774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89e9488d7708498d7b0848d1e9f3a44983c5104889d9498d710849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d2c6d010000004983fd01750f48bb00d9d0f1c27f0000e9990000004d89e94983c1024c89c84883c01e48c7c71100000048d1e848d1ef4833d248f7f7488d3c4501000000483b3d000100000f87c20000004889fe488d1cb50400000048f7db4903df483b5d107205493bdf7206ff5550ca807f4989df48d1ee488973f8c643ff414883ef0248c744bbfc0000000049d1e94c890b4c89e9498d7308488d7b0848d1e9f3a44983c51049d1ed42c6042b2e8063ffbf4d8d6fe04c3b6d107306ff5550ca08554d89ef49c745f8030000004d8955104d89650849bc580555f1c27f00004d89650048ba00a9d1f1c27f00004c89f04c8b4c24104c8b5424084c894424104d89e84c8b34244c897424084883c408ff2248b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff2348b87810d1f1c27f0000488b5d08ff234c89c0c21000f400ffffffffffffff01ffffffffffffff01|@11051,1,@537,@4628,@4628|299,0,@9571 502,0,@5369 516,0,@11050 562,0,@9487 578,0,@9487 594,0,@9991 5369:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@535,@5098| 5370:D4,128|483b65187306ff5558ca0d015250534150f644240801755a4c8b742408498b1e4d89f641ff76084c8b6c24204d8b4d084d89ed4d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b4424284c8b442418ff153f0000004989c4415d4c8924244c896c2408483b65187303ff5558eb9f584883c418c3f400000000000000|@10041,1,@543,@5371| 5371:D6,1264|483b65187306ff5558ca09074c89d2415041514c8b2b4d89ee4c3b2df80400000f85ae0400004c3b35e30400000f858c0400004c8b731041ff364d8d5fe84c3b5d107305ff5550cd044d89df49c743f8020000004c8b7424084d89730849be880b55f1c27f00004d89334d8d67e84c3b65107306ff5550ca04084d89e749c74424f802000000498954240849beb00c55f1c27f00004d8934244c8b34244d8b76184d8b56084d89d54d8b0a4983f9050f853d02000041ff7208498b421041ff3641ff76104c8b7424404983fe037509488d64242858c210004c8b7424384d8d47d84c3b45107306ff5550ca01584d89c749c740f8040000004d8970184d8958104d89600849be280d55f1c27f00004d893048bbc0aad1f1c27f0000ff15e70300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24104d89ec4d896e0849c706050000004d8d57e04c3b55107306ff5550ca00504d89d749c742f8030000004c8b2c244d896a10488d6424084d8972084c8b34244d8932488d6424084c8b7424084d8b0e488b7c24104c8b2f4e8d1c6d010000004d8b294e8d046d010000004983fb0175084d89cde9b70000004983f80175084989fde9a90000004b8d7403ff4889f04883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d144501000000483b15ed0200000f87dc0000004889d14c8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac45f4d89ef48d1e949894df841c645ff414883ea0249c74495fc0000000048d1ee498975004c89d94889ff488d7708498d7d0848d1e9f3a44983c3104c89c1498d710849d1eb4b8d7c1d0048d1e9f3a4418065ffbf4d89f64d8b5e104d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d89e44d896608488d6424104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c21000488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b6424284983fc037409488d64241058c210004d89ee4d8b2e4983fd017529498b4618ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f856a0100004d8b164c8b34244d8b1e4c8b4424084d8b284e8d246d010000004d8b2b4e8d0c6d010000004983fc0175084d89dde9b70000004983f90175084d89c5e9a90000004b8d7c0cff4889f84883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d344501000000483b35250100000f87e00000004889f24c8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac05f4d89ef48d1ea498955f841c645ff414883ee0249c744b5fc0000000048d1ef49897d004c89e14d89c0498d7008498d7d0848d1e9f3a44983c4104c89c9498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d89f64d8b66084d89f64d8b5e10488d6424084d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c21000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241058c21000488d64241048b87810d1f1c27f0000488b5d08ff23488d64240858c21000f40000ffffffffffffff01ffffffffffffff01|@11058,1,@544,@5108,@4626,@4626|95,0,@5372 141,0,@5373 262,0,@5374 275,0,@11057 740,0,@9487 1192,0,@9487 1222,0,@9991 5372:D3,256|483b65187305ff5558cd054989d34989c54d8b73084c89f04d8b364e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc017501c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8a00000077734d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104d8b5b084c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@11052,1,@538|229,0,@9487 5373:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@11053,1,@539| 5374:D4,104|483b65187305ff5558cd056a016a016a016a01488b5a084c8b4a104c8b52185449b800aad1f1c27f0000ff1550000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400000000|@11056,1,@541,@5104|34,0,@11054 5375:D3,16|483b65187305ff5558cd01c3f4000000|@11055,1,@540| 5376:D3,16|483b65187305ff5558cd01c3f4000000|@11056,1,@542| 5377:D3,32|483b65187305ff5558cd0148b890abd1f1c27f0000488b5d08ff23f400000000|@11064,1,@547|13,0,@11062 5378:D5,888|483b65187305ff5558cd09ff304c8b70084c8b6810ff70184c8b6310498b7c2420498b5424284c8b63084d8b5d004d8b55084d8b4d184d8b6d204d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89680849bd281255f1c27f00004d89284d8b2b4983fd030f85b50000004d8b6b084d8b5b184d8b6d00498b33488b5ef848c1e30848c1eb074883cb014883fb01750c48bf4882d1f1c27f0000eb584889df4889f94c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca4e774d89df48d1ef49897bf841c643ff404c89df48d1e948c7c001000000f348ab4889d94c89df48d1e9f348a5418063ffbf4c89df4d8d5fe04c3b5d107306ff5550ca84774d89df49c743f80300000049897b104d896b0849c70301000000eb004d8d6fc84c3b6d107306ff5550ca045f4d89ef49c745f806000000498955284d8945204d894d1849c74510010000004d8955084d895d0041554d8b2e4983fd010f85c20000004d8b6e084d8b34244983fe030f85840000004d8b6424084d8b34244983fe0d75184c89eb4c89e049c7c001000000ff15f20100004989c5eb354d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618010000004d896e104d89660849c706170000004d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70609000000eb0041564c8b74241041f6c60175424d8b264d8b6e084d8b1c244983fb0175204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb849c7c60100000041f6c601757b4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375554d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424104c89f34983fe0175054989c6eb09ff15650000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b7424084c89304883c410c3f400000000000000|@11086,1,@551,@5381,@5380|95,0,@5379 158,0,@10817 5379:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@549,@5098| 5380:D8,1024|483b65187306ff5558ca09014989c64d8b264d89e54983fc0d75104d8b66084d8b76104d89f5e9120100004983fd2975294d8b6e084d8b76104d3bf0750c49c7c6010000004d89eceb3f48b878acd1f1c27f0000488b5d08ff23498d47d8483b45107306ff5550ca08414989c748c740f8040000004c894018488958104c89700848c70017000000c341f6c40175324d8b5424084d89f34983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89de483b65187306ff5558ca0871ebc8493bde7d054d89eeeb214983f803750b48b858add1f1c27f0000c348b8f0add1f1c27f0000488b5d08ff2341f6c601753b498b064d8b6e084883fb017501c34989dc4983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e34d89ee483b65187306ff5558ca0840ebbf48b8c85dd1f1c27f0000488b5d08ff2341f6c50175464d8b55004d8b5d084d8b0a4c3b0de302000075214d8d6ff04c3b6d107306ff5550ca08554d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0871ebb449c7c50100000041f6c501752d4d8b6d004d8b5d004c3b1d8b020000750c4d8b6d104989dbe9f301000048b87810d1f1c27f0000488b5d08ff2349c7c50100000041f6c60175494d8b164d8b5e08498b3a4989f9483b3d4402000075224d89ce4c3b353002000075064d8b7210eb2b48b87810d1f1c27f0000488b5d08ff234d89de483b65187306ff5558ca0871ebb149bea85bd1f1c27f00004d8b1e4983fb077572498b56104889d8ff124989c64d8b2e4d8b65004983fc01754941ff7508498b4510498b5e08ff15c10100004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c348b880aed1f1c27f0000488b5d08ff2341f6c4017405e9dc00000041f6c401741048b808afd1f1c27f0000488b5d08ff234d0fb67424ff4e8d3475010000004981e6ff0100004983e6074983fe01750949c7c603000000eb0749c7c6010000004983fe03740949c7c603000000eb3c41f6c401741048b808afd1f1c27f0000488b5d08ff234d8b7424f849c1e60849c1ee074983ce014c3bf3770949c7c603000000eb0749c7c6010000004983fe03744641f6c401741048b808afd1f1c27f0000488b5d08ff234d8b749cfc498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34983f803750b48b858add1f1c27f0000c348b880afd1f1c27f0000488b5d08ff2341f6c50175434d8b4d004d8b55084983fb0175084d89cde908feffff4d89d94983e902711048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0879ebb748b8c85dd1f1c27f0000488b5d08ff23f4|@11087,1,@553,@5382,@4662,@4662,@4683,@4683|76,0,@11067 159,0,@9475 211,0,@11071 222,0,@11075 267,0,@9475 303,0,@10528 437,0,@9991 506,0,@9991 539,0,@10515 656,0,@11078 689,0,@11081 773,0,@11081 839,0,@11081 909,0,@11071 920,0,@11084 973,0,@9475 1009,0,@10528 5381:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@552| 5382:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@554,@4662|74,0,@9594 88,0,@4662 5383:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@555,@5316| 5384:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@556| 5385:D3,80|483b65187305ff5558cd054989d6498b5608498b5e104d8b4618498b7e20498b76284d8b6e304d8b66384d8b5e404d8b56484d8b4e504154415341524151ff7424204989f24989f94c896c2428ff22f4|@11099,1,@557| 5386:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed81955f1c27f00004c8930c3f400000000|@11103,1,@560|47,0,@5387 5387:D4,48|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b6a084d89ee4d8b4d004d8b5608ff251a000000f400|@11101,1,@558,@5388| 5388:D10,808|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d4403000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e90d0200004d8b364d8b2e4c3b2de002000075064d8b7610eb15488d64241048b87810d1f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004989450849c745000700000041554889d84c89f3ff15860200004989c6415648c7c001000000ff156c0200004989c048ba8048d1f1c27f0000488b44241848c7c3214e00004c8b4c241049c7c201000000ff15390200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1da800000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3e00000075094d8b7610e998fdffff488d64241048b87810d1f1c27f0000488b5d08ff23f40000000000|@11102,1,@559,@4650,@4650,@5057,@5149,@5145,@4650,@4650|110,0,@10158 151,0,@9991 241,0,@10384 353,0,@10236 398,0,@10728 442,0,@10236 530,0,@10236 743,0,@10198 788,0,@9991 5389:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be281e55f1c27f00004c8930c3f400000000|@11119,1,@562|47,0,@5390 5390:D3,184|483b65187305ff5558cd0d5250534c8b7424084d89f54c3b3424750d488d64241848c7c003000000c34d89ee41f6c5017573f604240175604d89f6498b064d89f641ff76084c8b742408498b1e4d89f641ff76084c8b7424204d8b7608498b16ff124989c64983fe0375204c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558eb83488d64242848c7c001000000c3488d64241848c7c001000000c3488d64241848c7c001000000c3f40000000000|@11118,1,@561| 5391:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be781f55f1c27f00004c8930c3f400000000|@11134,1,@564|55,0,@5392 5392:D3,912|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b84847d1f1c27f0000c34c8b284d89ec4983fd017510488d64240848b838b5d1f1c27f0000c34d89f54983fe037d10488d64240848b84847d1f1c27f0000c34d8b342441ff7424084983ed0241557115488d64241848b8b0b5d1f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8b5d1f1c27f0000e9c00100004c8b6424104d8b642408498b5424084d89ed4983ed027115488d64241848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c641564c8b6c24084983ed027115488d64242048b8b0b5d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e41564c8b6424204d8b742410498b164d89e44d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20b6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@11133,1,@563|32,0,@10373 60,0,@11121 85,0,@10373 118,0,@11125 152,0,@11126 196,0,@11125 269,0,@11125 461,0,@10401 509,0,@10236 554,0,@10394 646,0,@10392 791,0,@10236 836,0,@11129 5393:D3,24|483b65187305ff5558cd0148c7c007000000c3f400000000|@11136,1,@565| 5394:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@11137,1,@566| 5395:D3,40|483b65187305ff5558cd01a801740948c7c003000000eb0748c7c0010000004883f002c3f4000000|@11132,1,@567| 5396:D3,56|483b65187305ff5558cd014c8b304c8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@11132,1,@568| 5397:D3,56|483b65187305ff5558cd014c8b304c8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@11132,1,@569| 5398:D3,40|483b65187305ff5558cd014883f801750848c7c003000000c348c7c001000000c3f4000000000000|@11124,1,@570| 5399:D9,1704|483b65187306ff5558ca0903504151ff33ff73086a016a014c89c04889e3ff15c4060000ff3424ff7424104c8b7424084d89f54c3b35a60600007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753849bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb13488b542428488b0424ff124989c6e9aa00000048b860a3d1f1c27f0000488b5c24204c8b4424084c8b4c2430ff152e0600004989c641f6c601757841ff364c8b34244d8b7610498b0648ba3851d1f1c27f0000ff15ff0500004989c6498b5630488b442408ff124989c64983fe01750e488d64240849c7c601000000eb33498b06488b1c24ff15c50500004989c5488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0a49beb8c4d1f1c27f00004983fe010f85300500004c8b7424304c8b6424384d8b2c244e8d2c6d010000004983fd01750f49b980a5d1f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15060500000f87ba0400004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e94d89e4498d742408498d790848d1e9f3a44983c5104d89ec49d1ec43c604212049d1ed43c644290128418061ffbf4d8b294e8d2c6d010000004c8b1c244d8b234e8d1465010000004983fd01750d4d89dc488d642408e9c40000004983fa01750d488d6424084d89cce9b10000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d150400000f87bc0300004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d7308488d64240849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba08a5d1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d390300000f87d30200004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08a5d1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c8b2c244d89eb4c3b2dd50200007507488d642438eb414d89db4d8b2b4d89ec4e8d2c6d010000004983fd01753949bdd8c8d0f1c27f00004d89db498d7308498d7d0848c7c100000000483bc9f3a67402eb14488d64243849bcd8c8d0f1c27f0000e9e50000004c8b2c244e8d1c65010000004983fb017514488d64243849bc30a5d1f1c27f0000e9bf0000004d89d94983c11c4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05ee0100000f877b0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c2449b930a5d1f1c27f000048c7c11d000000498d7108498d7c240848d1e9f3a44c89d94d89ed498d7508488d642408498d7c241648d1e9f3a441806424ffbf4883c4304d8b2a4e8d2c6d010000004d8b1c244e8d1c5d010000004983fd0175084c89e0e9ad0000004983fb0175084c89d0e99f0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05f6000000777f4c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d9498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248b820b1d1f1c27f0000c348b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64244048b8f8c7d0f1c27f0000488b5d08ff23488d64244048b8f8c7d0f1c27f0000488b5d08ff23488d642440498b06c3f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@11285,1,@593,@9493,@5416,@5076,@5342,@9493,@5071|85,0,@9493 141,0,@11010 195,0,@10448 301,0,@11247 349,0,@11027 794,0,@11024 952,0,@11024 1037,0,@9493 1079,0,@9493 1117,0,@11025 1257,0,@11025 1538,0,@11094 1549,0,@9487 1570,0,@9487 1591,0,@9487 1612,0,@9487 1633,0,@9487 5400:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@572| 5401:D3,240|483b65187306ff5558ca09074989c65341504151415241f6c6010f85ba000000498b0641ff7608488b542420488b5c24504c8b4424484c8b4c24404c8b5424384c8b7424304c8b6c24584156ff742420ff742420ff7424204155ff124989c641564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e857ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@10112,1,@573| 5402:D11,712|483b65187305ff5558cd09534c8b70104d8b2e4983fd070f85750200004d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe030f854a020000488b18ff701849bef8c4d0f0c27f0000498b06ff15be020000ff15b00200004989c641564c8b7424104983fe0375354c8b7424084d8b2e4983fd0575124d89f6498b4610ff157d0200004989c6eb7a488d64241848b818c5d1f1c27f0000488b5d08ff234c8b7424084d8b2e4983fd0575544d89f6498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15090200004989c6eb09ff15f60100004989c6eb034d89f64d8b2e4983fd0d0f855f0100004d8b6e08f604240175714c8b34244d8b66084983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4d89f64d8b1e488d6424084d8b234d8d77d04c3b75107306ff5550ca00384d89f749c746f80500000049c74620010000004d895e184d89661049c746080100000049c7060b000000e99b00000049bea854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f80100000041c643ff404d893349c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d895e0849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849c70424090000004d8923498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849bed83055f1c27f00004c89336a016a01488b4424104989e0ff158100000058488d642418c3488d64241848b8d8c5d1f1c27f0000488b5d08ff23488d642408eb05488d642408488b40186a016a0148bb70c6d1f1c27f00004989e0ff1536000000ff3424488b442410ff152000000058488d642410c3f4|@11257,1,@576,@5239,@5234,@5234,@5062,@5062,@5062,@5406,@5405|73,0,@4687 151,0,@11249 404,0,@10468 594,0,@5403 637,0,@11253 673,0,@11256 5403:D3,72|483b65187305ff5558cd054c8b304c8b6a104d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c348c7c001000000c3f4000000000000|@11252,1,@574| 5404:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@575| 5405:D3,200|483b65187305ff5558cd09a8010f85a50000004c8b30488b40084d8b1e4d8b6e084d8b6610493bdb7502eb2f4c8b334e8d3475010000004d8b134c89d14e8d1455010000004d3bf27569488d7308498d7b08483bc9f3a67402eb584d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e87cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3e948ffffff48c7c001000000c3f400000000000000|@11258,1,@578| 5406:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@577| 5407:D4,368|483b65187306ff5558ca09075041514152f6442410010f85e10000004c8b742410498b064c8b74241041ff76084c8b34244983fe01750a488d642420498b10ff2241ff3041ff700841ff7010ff33ff7308ff7310ff7318ff7320488b542438ff124989c64156ff742448488b5c2448488b4424604c8b6424284c8b5c24684c8b5424204c8b4c24404c8b442458488b7c2438488b742430488b542410488b4c24184c8b6c247048894c24304889542438488974244048897c24484c894424504c8b04244c894c24584989d948c7c3030000004c895424604989c2488b4424084c895c24684c896424704c896c24284883c428ff2590000000488d642470488d64241849bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3f4000000000000|@11262,1,@579,@5408|260,0,@10468 5408:D21,3872|483b65187306ff5558ca090750534151415241f6c0010f850b01000041ff3041ff7008488b542418488b442408ff124989c6415648bad88ed1f1c27f0000488b442430488b1c24ff15730f00004989c641f6c601751141ff364c8b7424204d8b7668e9c9000000488d6424084c8b7424204983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23ff7424284156488b4c2410488b5c2428488b4424204c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b442460488b7c2458488b742450488b5424484889542448488974245048897c24584c894424604989c84c894c24684989d9488b1c244c895424704989c2488b4424084c895c24784c89a424800000004c89ac24880000004883c440e9defeffff488d642418488d64241858c2480041f6c60175454d8b264d8b6e084d8b1c244c3b1d700e000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9c90c00004d8b364d8b2e4c3b2d0c0e000075064d8b7610eb15488d64244048b87810d1f1c27f0000488b5d08ff2341564c8b6c24384d89ee4983fd030f85000100004c8bb424900000004d8b364e8d3475010000004983fe01750f49bd10c7d1f1c27f0000e9be0000004d89f44983c4064c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1deb0c00000f878d0000004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d8965004c8ba424900000004c89f1498d742408498d7d0848d1e9f3a44983c6104d89f449d1ec43c6442500204d89f449d1ec43c64425013149d1ee43c64435023a418065ffbfe9d7020000488d64244848b8f8c7d0f1c27f0000488b5d08ff234c8bac24900000004d8b6d004e8d246d010000004983fc01750f49bd28c7d1f1c27f0000e9c90000004d89e34983c3084c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15e20b00000f87b50800004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c8b9c24900000004c89e1498d7308498d7d0848d1e9f3a44983c4104d89e349d1eb43c6441d00734d89e349d1eb43c6441d01204d89e349d1eb43c6441d023149d1ec43c64425032d418065ffbf415548bae81cd1f1c27f00004c89f048c7c303000000ff15c50b00004989c54c8b14244d8b324e8d3475010000004d8b65004e8d1c65010000004983fe01750d488d6424084d89ece9c40000004983fb01750d4d89d4488d642408e9b10000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05b30a00000f87790700004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208488d642408498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bd20dad0f1c27f0000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15d70900000f87900600004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435003a418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b842490000000488b5c2440ff15ce090000488b9c24880000004c8b8c24800000004c8b442408ff15ab0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15530900004989c048ba8048d1f1c27f00004c8b8c2480000000488b44245048c7c3214e000049c7c201000000ff151d0900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2876d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b5424684c8b742470498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424284c8930ff124989c64156488b4424404883c0027115488d64245048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15330700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc40c7d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0d7d0f1c27f00004d8975004c8bb42498000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff159f0600004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24184c8968104c8b6c24284c8968084c8930488b1424ff124989c6415648ba9899d1f1c27f0000488b9c24800000004c8b842480000000488b44243849b9c899d1f1c27f0000ff152a0600004889c2488b442418ff124989c44c8b6c24704d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdc89bd1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bce89bd1f1c27f00004d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d896c242049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d6424184d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424184d8b7668eb3f488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d64244848b8f8c7d0f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d5203000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9610100004d8b364d8b2e4c3b2dee0200007506498b5e10eb15488d64243848b87810d1f1c27f0000488b5d08ff23488b442448ff15be0200004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c2440498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff124c8b7424204983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234156488b4c2408488b5c2420488b4424184c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448488b5424404889542440488974244848897c24504c894424584989c84c894c24604989d9488b1c244c895424684989c248b8b80bd1f1c27f00004c895c24704c896424784c89ac24800000004883c438e93ff2ffff488d64241041f6c60175454d8b264d8b6e084d8b1c244c3b1d7201000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d080100007509498b5e10e944feffff488d64243848b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc800000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d5e00000075094d8b7610e9dcf2ffff488d64244048b87810d1f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@11265,1,@580,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5307,@4836,@4983,@5057,@5149,@5410,@5409,@4983,@4650,@4650,@5268|54,0,@10895 126,0,@9475 394,0,@10158 435,0,@9991 496,0,@11259 711,0,@9487 753,0,@11260 971,0,@10077 1260,0,@9583 1602,0,@10384 1718,0,@10236 1762,0,@10728 1807,0,@10236 1895,0,@10236 2088,0,@9475 2104,0,@10077 2157,0,@11261 2205,0,@9557 2329,0,@10952 2360,0,@10954 2504,0,@10966 2549,0,@10967 2703,0,@10236 2794,0,@10236 2885,0,@10236 3014,0,@9487 3035,0,@9487 3056,0,@9487 3160,0,@10158 3201,0,@9991 3362,0,@9475 3486,0,@9948 3621,0,@10198 3666,0,@9991 3775,0,@10198 3820,0,@9991 5409:D3,136|483b65187305ff5558cd094883fb01750848c7c001000000c3a8017555ff30488b40084883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a8c7d1f1c27f0000488b5d08ff23f40000000000|@11267,1,@582|48,0,@9475 116,0,@11263 5410:D6,928|483b65187306ff5558ca090353415041514c8b7424084d89f54983fe017f10488d64241848b86049d1f1c27f0000c3a8010f85580300004c8b30ff70084c8b24244983fc017560488d6424085a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64c8b6c24184d89eb4c3b2de30200007502eb3c4d89db4d8b2b4d89ec4e8d2c6d010000004983fd03753149bdd0d8d0f1c27f00004d89db498d7308498d7d0848c7c101000000483bc9f3a67402eb0c49c7c403000000e9be0000004c8b6c24184d89eb4c3b2d800200007502eb3a4d89db4d89e54e8d2465010000004983fc03752f49bc38dad0f1c27f00004d89db498d7308498d7c240848c7c101000000483bc9f3a67402eb0949c7c403000000eb684c8b5c24184d89dc4c3b1d22020000750949c7c403000000eb4e4d89e44e8d2c6d010000004983fd01753649bdd8c8d0f1c27f00004d89e4498d742408498d7d0848c7c100000000483bc9f3a6750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983f4024d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184c89db4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b4424184983e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b4c2410e8d0fcffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c410c3488d64241848c7c001000000c3f4000000|@11266,1,@581,@9493,@9584,@9569|38,0,@10390 258,0,@9569 346,0,@9584 436,0,@9493 787,0,@9475 852,0,@10236 5411:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@583| 5412:D4,312|483b65187306ff5558ca090753415041514152a8010f850c0100004c8b30ff700841ff3641ff7608498b4618488b542430488b5c24604c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24684156ff742430ff742430ff7424304155ff124989c641564c8b34244c8b6c24084d897500488b442410ff15d20000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424184d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e80affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f400|@11268,1,@584,@5162| 5413:D10,944|483b65187306ff5558ca09074989c54d89c64989d84c3b2ddc0300007502eb374d8b5d004d89dc4e8d1c5d010000004983fb09752749bb30c9d1f1c27f0000498d7508498d7b0848c7c104000000483bc9f3a67402eb05e9570100004c3b2d8d0300007502eb344d89e34e8d2465010000004983fc0b752849bc48c9d1f1c27f0000498d7508498d7c240848c7c105000000483bc9f3a67402eb05e9130100004c3b2d410300007502eb334d89dc4e8d1c5d010000004983fb07752749bb98b5d1f1c27f0000498d7508498d7b0848c7c103000000483bc9f3a67402eb05e9d00000004c3b2df60200007502eb344d89e34e8d2465010000004983fc05752849bc80b6d1f1c27f0000498d7508498d7c240848c7c102000000483bc9f3a67402eb05e98c0000004c3b2daa0200007502eb334d89dc4e8d1c5d010000004983fb07752449bb60c9d1f1c27f0000498d7508498d7b0848c7c103000000483bc9f3a67402eb02eb4c4983fa030f851f0200004c3b2d580200007502eb374e8d2465010000004983fc050f850002000049bc78c9d1f1c27f0000498d7508498d7c240848c7c102000000483bc9f3a60f85db0100004d8b65004e8d1c65010000004983fb01750f49bc90c9d1f1c27f0000e9b30000004d89da4983c2324c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3da40100000f87740100004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1ea4d89142449ba90c9d1f1c27f000048c7c133000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c242148d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49bac0c9d1f1c27f0000e9b60000004d89eb4983c3184c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f2488d3c4501000000483b3dc80000000f87900000004889fe4c8d14b50400000049f7da4d03d74c3b551072054d3bd77206ff5550ca807b4d89d748d1ee498972f841c642ff414883ef0249c744bafc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bcc0c9d1f1c27f000048c7c119000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf4c89f048c7c303000000ff255a00000048b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23eb0048c7c001000000c3f400000000000000ffffffffffffff01ffffffffffffff01|@11275,1,@585,@5316,@11272,@11271,@11132,@11124,@11270,@11269|55,0,@11269 122,0,@11270 190,0,@11124 257,0,@11132 325,0,@11271 400,0,@11272 455,0,@11273 595,0,@11273 667,0,@11274 825,0,@11274 880,0,@9487 896,0,@9487 5414:D4,32|483b65187306ff5558ca09014989d94889c348c7c003000000ff2519000000f4|@11278,1,@586,@5415| 5415:D6,952|483b65187306ff5558ca0903415041514c8b334d89f44e8d347501000000493bc67e0d488d64241048c7c001000000c34989c54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fd017d0a488d642410e9390300004d89e64e8d2465010000004d3bec7c0949c7c403000000eb0749c7c4010000004983fc030f840a0300004983c51049d1ed4e0fb62c2b4e8d246d0100000049bd30c9d0f1c27f00004f8b64a5fc4c3b252e0300007502eb3c4d8b2c244e8d2c6d010000004983fd030f859a02000049bd00d9d0f1c27f0000498d742408498d7d0848c7c101000000483bc9f3a67405e9740200004e8d3475010000004983fe01750f49bd20cad1f1c27f0000e9af0000004d89f44983c41e4c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d710200000f870c0200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650049bc20cad1f1c27f000048c7c11f000000498d742408498d7d0848d1e9f3a44c89f1488d7308498d7d1748d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b840cad1f1c27f0000e9b20000004d89f44983c41a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d990100000f87270100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd40cad1f1c27f000048c7c11b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1537010000ff15290100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64241049c70603000000ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff234883c0027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b4424084159488d642408e96efcffff488d64241048b8a8f8d0f1c27f0000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@11279,1,@587,@5333,@5030,@9571|64,0,@9475 158,0,@9496 206,0,@9571 258,0,@11276 396,0,@11276 466,0,@11277 622,0,@11277 659,0,@10221 835,0,@9487 856,0,@9487 883,0,@9475 921,0,@9872 5416:D5,496|483b65187305ff5558cd094989c65341ff3641ff760841ff7610498b461841ff76204c8b7424204d8b6e104d8b65204d89f64d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bc685555f1c27f00004d8965004d8d47e04c3b45107306ff5550ca01604d89c749c740f8030000004d8968104d89700849bee05555f1c27f00004d893048bba0cbd1f1c27f0000ff156e0100004989c64c8b2c2441f6c50175434d8b5d004d8b65084d8b134983fa0175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb749c7c50100000041f6c501757c4d8b5d004d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89e54d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004d8d47e84c3b45107306ff5550ca00604d89c749c740f80200000049c74008010000004d8928eb0749c7c001000000498d47c0483b45107306ff5550ca00414989c748c740f80700000048c740300100000048c74028010000004c8b2c244c896820488d6424084c8970184c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488d6424085bff251d000000f400000000|@11286,1,@594,@5422,@5108|86,0,@5417 135,0,@5418 148,0,@11284 5417:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@11280,1,@588| 5418:D4,152|483b65187305ff5558cd054d8d4fe84c3b4d107305ff5550cd054d89cf49c741f8020000004c8b72084d89710849bea85655f1c27f00004d89316a016a016a016a01488b5a105449b850cbd1f1c27f000049c7c201000000ff1552000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000000000|@11283,1,@591,@5104|47,0,@5419 73,0,@11282 5419:D3,472|483b65187305ff5558cd054989d44989c54d8b7424084d8b364e8d3475010000004983fe01750f49bb00d9d0f1c27f0000e9a10000004d89f24983c2024c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d6a0100000f87450100004d89c84e8d1c850400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00764d89df49d1e84d8943f841c643ff414983e9024bc7448bfc0000000049d1ea4d89134d8b6424084c89f1498d742408498d7b0848d1e9f3a44983c61049d1ee43c604332e418063ffbf4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d98000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@11281,1,@589|41,0,@9571 419,0,@9487 435,0,@9487 5420:D3,16|483b65187305ff5558cd01c3f4000000|@11281,1,@590| 5421:D3,16|483b65187305ff5558cd01c3f4000000|@11283,1,@592| 5422:D6,568|483b65187306ff5558ca090141504c8b70104d8b264d89e54983fc030f85b60000004d8b6e08ff30ff7008ff7018488b58204d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060300000041564883fb0175074c8b742420eb0e488b442420ff15ee0100004989c6498d47c0483b45107306ff5550ca00404989c748c740f80700000048c740300100000048c74028010000004c8970204c8b7424084c8970184c8b34244c897010488d6424104c8b34244c897008488d6424084c8b34244c8930488d6424084883c408c34983fd010f854f0100004d8b6e08ff30ff7008ff7018ff70204c8b63084d8b34244983fe030f85840000004d8b6424084d8b34244983fe0d75184c89eb4c89e049c7c001000000ff15330100004989c5eb354d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618010000004d896e104d89660849c706170000004d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060900000041564c8b7424084c89f34983fe0175074c8b742428eb0e488b442428ff157d0000004989c6498d47c0483b45107306ff5550ca00404989c748c740f80700000048c740300100000048c74028010000004c8970204c8b7424104c8970184c8b34244c897010488d6424084c8b7424104c8970084c8b7424184c89304883c428c3488d642408c3f4|@11287,1,@595,@5424,@5380,@5423| 5423:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@597| 5424:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@596| 5425:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be085d55f1c27f00004c8930c3f400000000|@11292,1,@601|47,0,@5426 5426:D4,48|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b6a084d89ee4d8b4d004d8b5608ff251a000000f400|@11290,1,@599,@5427| 5427:D11,1168|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1db404000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9770300004d8b364d8b2e4c3b2d5004000075064d8b7610eb15488d64241048b87810d1f1c27f0000488b5d08ff2341564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c706070000004156ff33488b4308488b5c24104883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23ff15d60300004989c64156488b5c24184883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b442408ff159e0300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9075d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff156e0200004989c048ba8048d1f1c27f0000488b44242048c7c3214e00004c8b4c241849c7c201000000ff153b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c341f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e92efcffff488d64241048b87810d1f1c27f0000488b5d08ff23f4000000|@11291,1,@600,@4650,@4650,@5057,@5149,@5145,@5145,@4650,@4650|110,0,@10158 151,0,@9991 230,0,@9475 273,0,@9475 373,0,@10236 417,0,@10723 462,0,@10236 599,0,@10384 711,0,@10236 756,0,@10728 800,0,@10236 888,0,@10236 1105,0,@10198 1150,0,@9991 5428:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc386355f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@603,@5340|117,0,@5429 5429:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@602,@5316| 5430:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@604,@5316| 5431:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@605,@5316| 5432:D4,288|483b65187306ff5558ca0d014989d64989c44d89c14d8b2c244e8d2c6d010000004983fd01750f49ba18ced1f1c27f0000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b20000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc18ced1f1c27f000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253700000048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01|@11299,1,@606,@5316|41,0,@11298 199,0,@11298 259,0,@9487 5433:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@10991,1,@607,@5314| 5434:D4,96|483b65187305ff5558cd054989d6498b5e08498b7610498b5618498b4e204d8b6e284d8b66304d8b5e384d8b56404d8b4e484d8b4650498b7e584154415341524151415057ff7424304989ca4989d14989f04c896c2438ff251b000000f40000|@10991,1,@608,@5314| 5435:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@10569,1,@609|13,0,@10508 5436:D3,112|483b65187305ff5558cd054989d641ff7608498b5e10498b7618498b5620498b4e284d8b6e304d8b66384d8b5e404d8b56484d8b4e504d8b4658498b7e60415341524151415057ff7424304989ca4989d14989f0488b5424304c896424304c896c2438ff22488d642408f40000000000|@11313,1,@610| 5437:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@611| 5438:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@612| 5439:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@613| 5440:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bea06955f1c27f00004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@11314,1,@615,@5442|101,0,@5441 5441:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@614| 5442:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@616| 5443:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@11314,1,@617| 5444:D4,344|483b65187306ff5558ca0d014989d64989c44d8b681041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba18ced1f1c27f0000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc18ced1f1c27f000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@11299,1,@618,@5316|70,0,@10983 98,0,@11298 256,0,@11298 316,0,@9487 5445:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@619,@5316| 5446:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@620| 5447:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@11330,1,@621| 5448:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@11330,1,@622| 5449:D3,48|483b65187306ff5558ca0901498d47e8483b45107306ff5550ca08014989c748c740f8020000004c894008488918c3f4|@11330,1,@623| 5450:D3,112|483b65187305ff5558cd055250488b04244c8b58084c8b7424084d8b6e184d89ec4d8b55004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d8955084d895d004d89f64d892c244d89f6498b5610ff124c8b7424084d8b7608498b561058488d642408ff22f40000|@11333,1,@624| 5451:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f4000000000000|@11333,1,@625| 5452:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b565058488d642408ff22f4000000000000|@11333,1,@626| 5453:D13,2072|488dbc2440ffffff483b7d187306ff5560ca0907504150415141524c8b7424684c8b6c2460498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bee87755f1c27f00004c89306a016a016a014889e3ff1514080000ff742408ff742418488b9c24800000004c8b4424784c8b8c2490000000488b4424384c8b542408ff15df0700004989c64156488b5c24784c8b8c24980000004c8b942490000000488b4424304c8b442408ff15ad0700004989c6ff7424304156f6442408010f85aa020000f60424010f85990200004c8b6c24084d8b75004d89ed41ff75084c8b6424084d89e541ff34244d89ed41ff750841ff3641ff760841ff762041ff76304d8d77e04c3b75107303ff55504d89f749c746f80300000049bdd8c8d0f1c27f00004d896e104c8b6424084d89e54d8966084c8b6424184d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c7060100000041564c8bb424f0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d8970084c8b7424104d8930488b9424d800000048c7c00100000048c7c3010000004c8b4c2408ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d6424104c8b34244d897508488d6424084c8b7424104c89f04d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e41564c8b34244c8b6c24104d897500488b9c24e00000004c8b442408ff1583050000488b542458498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424184c8930ff124c8bb424c0000000498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424184c8b34244c8930488d642408ff124c8b6c2410415c488d6424104c8924244c896c2408483b65187303ff5558e952fdffff488d642410eb05488d6424104c8bb424980000004c8bac2490000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be707955f1c27f00004c89306a016a016a014889e3ff158b040000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff1562040000ff742408ff7424184c8b8424f00000004c8b8c24d00000004c8bb424e80000004156ff742438ffb424a0000000ff742420488b8424b8000000488b5c24784c8b942480000000ff150e04000048ba50d5d1f1c27f0000488b9c24c8000000ff15ee0300004c8bb424900000004983fe03741d488d6424385a4c8bb42490000000498b4610ff124883c468e98d0300006a016a016a0148c7c0010000004889e3ff15a5030000415d415a415b4c8ba424d00000004d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d89660849bc685957f1c27f00004d892641564c8bb424d80000004d8b66304d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184c8b5c24304d895e104d89660849bcc85957f1c27f00004d892641564c8bb424e0000000498d77d8483b75107306ff5550ca00604989f748c746f8040000004c896e184c8b6c24484c896e104c89760849be485a57f1c27f00004c89364c8bb424e00000004d8d5fe04c3b5d107306ff5550ca40404d89df49c743f8030000004c8b6c24184d896b104d89730849bea85d57f1c27f00004d89334c8bb424e00000004d8b7640498d7fe0483b7d107306ff5550ca40484989ff48c747f8030000004c8b6c24104c896f104c89770849be085e57f1c27f00004c89374c8bb424e00000004d8b56204c8bb424e0000000498b46684c8bb424e00000004d8b4e284c8bb424e0000000498b4e584c8bb424e0000000498b5e604c8bb424e00000004d8b2e4c8bb424e0000000498b56504c8bb424e00000004d8b66084c8bb424e00000004d8b46384d8d77884c3b75107306ff5550cacf3f4d89f749c746f80e0000004989466849895e6049894e58498956504989764849897e404d8946384c8b04244d894630488d6424084d894e284d8956204d895e184c8b1c244d895e10488d6424184d8966084d892e4156ffb42498000000f604240175724c8b2c244d8b75004d89ed41ff75084d8b16488b9424c8000000488b8424b8000000488b9c24e80000004c8b8c24f00000004c8bb424f80000004c8bac24e00000004c8ba424d00000004c8b9c24c000000041564155415441534c8b442430ff12415d4c892c24483b65187303ff5558eb88488d642458488b0424ff15f80000004989c64c8bac24a00000004d897500415e4883c44841f6c6010f85b30000004d8b264d8b6e084d8b6424184d8b5c24084d89da4d8b0b4983f903752e4d8b5b184983fb03750949c7c303000000eb0749c7c3010000004983fb03750e4d8b620849c7042401000000eb444d89d34d8b0a4983f901754c4d8b52104d8b124983fa03750949c7c203000000eb0749c7c2010000004983fa0375294d89dc4d8b6424104d8b64240849c70424010000004d89ee483b65187306ff5558ca0040e953ffffff48b8e872d2f1c27f0000488b5d08ff2348b8b80bd1f1c27f0000c25000f4|@12763,1,@830,@5656,@5240,@5456,@5657,@5240,@5322,@5414,@5666,@5655,@5322|74,0,@5454 293,0,@9493 947,0,@5455 1084,0,@11341 1222,0,@5571 1293,0,@5572 1360,0,@5573 1421,0,@5578 1486,0,@5579 2044,0,@12651 2060,0,@9948 5454:D4,344|483b65187306ff5558ca0d014989d64989c44d8b284d8b6d1041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba18ced1f1c27f0000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05ae0000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc18ced1f1c27f000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253300000048b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01|@11339,1,@628,@5316|73,0,@10983 101,0,@11298 259,0,@11298 319,0,@9487 5455:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba08d5d1f1c27f0000e9b60000004d89eb4983c3684c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc08d5d1f1c27f000048c7c169000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@11339,1,@629,@5316|70,0,@10983 98,0,@11340 256,0,@11340 316,0,@9487 5456:D5,624|483b65187305ff5558cd0d52505349c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8b6424104d89660849bca07d55f1c27f00004d89264d8975006a016a0148b8e070d2f1c27f00004889e3ff1506020000ff3424ff7424104d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b2c244d896e204c8b6c24204d896e184c8b6c24304d8b6d084d896e104c8b6c24084d896e0849bdf04e57f1c27f00004d892e4156ff742430f6042401752f4c8b3424498b064d89f641ff7608488b5c24184c8b442420ff1581010000415d4c892c24483b65187303ff5558ebcb488d642408ff742430f60424010f85330100004c8b2c244d8b75004d89ed41ff750841ff364c8b342441ff7618488b542420488b0424ff124989c64983fe03750a488d642410e9cb000000488b542430498d47e8483b45107305ff5550cd044989c748c740f80200000049bef012d1f1c27f00004c8970084c8b34244c8930488d642408ff124c8b34244d8b7618488d6424084d8b6e084d89ec4d8b5d004983fb03752e4d8b6d184983fd03750949c7c503000000eb0749c7c5010000004983fd03750e4d8b74240849c70603000000eb444d89e54d8b1c244983fb0175524d8b6424104d8b24244983fc03750949c7c403000000eb0749c7c4010000004983fc0375264d89ee4d8b76104d8b760849c70603000000415d4c892c24483b65187303ff5558e9dffeffff488d642450eb05488d64245048b8e872d2f1c27f0000488b5d08ff23488d64244848c7c001000000c3f400000000|@12657,1,@741,@5569,@5565|100,0,@5457 121,0,@12639 210,0,@5563 388,0,@10009 592,0,@12651 5457:D9,1312|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f857a0200004d8b6e084983ec02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b850d6d1f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b357a040000750949c7c603000000eb2b4c3b3560040000750949c7c603000000eb194c3b3546040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd086fd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde06fd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@12638,1,@734,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 119,0,@4691 132,0,@11351 326,0,@11514 374,0,@10391 419,0,@11357 570,0,@10236 615,0,@12624 700,0,@10414 721,0,@9475 948,0,@11514 996,0,@10391 1041,0,@11357 1192,0,@10236 1237,0,@12631 5458:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be808355f1c27f00004c8930c3f400000000|@9492,1,@633|47,0,@5459 5459:D5,176|483b65187305ff5558cd054989c6498b46084c8b6a084d8b4508498b1e4883f8017f0c48b880d5d1f1c27f0000eb06ff159b000000ff158d0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98d5d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@11345,1,@630,@5461,@5460|37,0,@11343 95,0,@11344 5460:D3,448|483b65187306ff5558ca0901504150f6c3010f85940100004c8b33ff73084c8b2c244983fd01757a488d6424084c8b6424084d89e54983fc017510488d64241048b880d5d1f1c27f0000c35a498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c896808488d6424084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b6424104d89e54983fc017510488d64241848b880d5d1f1c27f0000c3488b542408498d47e8483b45107306ff5550ca04604989c748c740f8020000004d89ed4c8968084c8930ff124989c64156488b4424184883e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24084c8b442410e8e0feffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70f0d0f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3488d64241048c7c001000000c3f4000000000000|@11350,1,@632|66,0,@11343 183,0,@11343 259,0,@9475 324,0,@9814 369,0,@9815 5461:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c8d5d1f1c27f0000c3f4000000|@11349,1,@631|75,0,@11346 5462:D3,32|483b65187305ff5558cd0149be48c5d0f0c27f0000498b16ff22f40000000000|@11365,1,@733|13,0,@4692 5463:D3,896|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e9e70100004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b7424104d8b6e084c8b6424084983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bdc08a55f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10d7d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@11365,1,@635|32,0,@10414 58,0,@9475 92,0,@11126 129,0,@9475 223,0,@9475 275,0,@4691 327,0,@5464 440,0,@11355 488,0,@10236 533,0,@10685 625,0,@11357 770,0,@10236 815,0,@11358 5464:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11354,1,@634| 5465:D3,2936|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9de0900004c8b7424084d8b76104d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7620498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9830800004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b7424104d89f44983fe057d0f49bdb86fd1f1c27f0000e92d0700004c8b7424184d8b6e304d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bda09655f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f44983fe077d0f49beb86fd1f1c27f0000e95c0500004c8b7424284d8b6e204d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d104d896e0849bdc0a255f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d89f54983fe097d0f49bdb86fd1f1c27f0000e98c0300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424384d89f44983fe0b7d0f49beb86fd1f1c27f0000e9350200004c8b7424404d8b6e284d89e44983ec027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b8b0d9d1f1c27f0000ff124889c2488b0424ff124989c641564c8b7424504d8b76184c8b6c24484983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424584d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28ddd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58ddd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90ddd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8ddd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00ded1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30ded1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60ded1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@11354,1,@653|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 213,0,@10678 251,0,@9475 334,0,@10678 372,0,@9475 424,0,@4617 476,0,@5466 573,0,@10678 611,0,@9475 663,0,@4691 715,0,@5474 812,0,@10678 849,0,@9475 899,0,@4615 933,0,@10678 971,0,@9475 1023,0,@4617 1036,0,@11378 1087,0,@9475 1181,0,@10681 1230,0,@10236 1274,0,@11411 1319,0,@10236 1363,0,@10685 1451,0,@10236 1496,0,@11413 1544,0,@10236 1589,0,@10685 1677,0,@10236 1721,0,@10683 1766,0,@10236 1810,0,@10685 1898,0,@10236 1943,0,@11415 1991,0,@10236 2036,0,@10685 2124,0,@10236 2168,0,@11417 2217,0,@10236 2261,0,@10685 2349,0,@10236 2394,0,@11419 2438,0,@10236 2483,0,@10685 2571,0,@10236 2615,0,@11421 2664,0,@10688 2809,0,@10236 2854,0,@11423 5466:D3,144|483b65187305ff5558cd054989d55049be88c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bdc8a155f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@11376,1,@643|17,0,@4696 65,0,@5472 5467:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b72084c89700849bec89755f1c27f00004c8930c3f400000000|@9492,1,@640|55,0,@5468 5468:D4,88|483b65187305ff5558cd054c8b40084c8b72104d8b7608488b00498d5fe8483b5d107306ff5550ca05414989df48c743f8020000004c89730849be509855f1c27f00004c89334c8b4a08ff2520000000f400000000000000|@11345,1,@637,@5470|59,0,@5469 5469:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@11368,1,@636| 5470:D4,1496|483b65187306ff5558ca09034989c64889da4c89c34151498b064883fb017f10488d64240848b820c7d0f1c27f0000c34c8b6d384d8b6d1041f6c501756b4d8b5d004d8b65084d8b1b4d8b0b4d89ca4c3b0c2475434d89d54c3b2c2475254d8b63104d8d6ff04c3b6d107306ff5550ca0d504d89ef49c745f8010000004d896500eb2d488d64240848b87810d1f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0d60eb8f49c7c50100000041f6c50175064d8b6d00eb0749c7c50100000041554c8b2c2441f6c50175274d8b5d004d8b65084d3bde750949c7c503000000eb184d89e5483b65187306ff5558ca0d60ebd349c7c5010000004983fd037510488d64241048b820c7d0f1c27f0000c3ff75084c8d2d400000004155488965084d8d67e84c3b65107306ff5550ca0d404d89e749c74424f8020000004c8b6c24104d896c24084d8934244c8b75384d8b5e104d89dee977010000488b65084883c408415e4c8975084c8b75384d8b5e104d89de41f6c60175794d8b264d8b6e084d8b14244d8b124c3b54240875534d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c74618010000004c8b2c244d896e10488d64240849bd28dbd0f1c27f00004d896e084c8b2c244d892e488d6424084d893424e9ab0000004d89ee483b65187306ff5558ca0148eb814c8b6d384d8d77d84c3b75107306ff5550ca01284d89f749c746f80400000049c74618010000004c8b24244d896610488d64240849bc28dbd0f1c27f00004d8966084c8b24244d8926488d6424084d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d8975104c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f80400000049bb80d8d1f1c27f00004c8958184c8960104c8968084c8930488b5d08ff2341f6c601756a4d8b164d8b6e084d8b0a4d8b094c3b4c241875454d8d77d84c3b75107306ff5550ca0d144d89f749c746f80400000049c74618010000004d89661049bd28dbd0f1c27f00004d896e084c8b6c24184d892e4d8932e99e0000004d89ee483b65187306ff5558ca0d58eb904c8b6d384d8d77d84c3b75107306ff5550ca0d384d89f749c746f80400000049c74618010000004d89661049bc28dbd0f1c27f00004d8966084c8b6424184d89264d8d67f04c3b65107306ff5550ca0d684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca0d384d89f749c746f8020000004d895e084d89264d8975104883eb02711048b8d0c6d0f1c27f0000488b5d08ff23ff12ff15010200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50f0d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8d8d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004c8b75384d8b5e104d89de41f6c60175714d8b264d8b6e084d8b14244d8b124c3b542418754b4d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c74618010000004c8b6c24104d896e1049bd28dbd0f1c27f00004d896e084c8b6c24184d892e4d893424e9a30000004d89ee483b65187306ff5558ca0148eb894c8b6d384d8d77d84c3b75107306ff5550ca01284d89f749c746f80400000049c74618010000004c8b6424104d89661049bc28dbd0f1c27f00004d8966084c8b6424184d89264d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264d8975104883c408415e4c8975084883c410c3f40000000000|@11373,1,@638,@5471|39,0,@9478 138,0,@9991 266,0,@9478 451,0,@9594 555,0,@9594 695,0,@11369 791,0,@9594 881,0,@9594 985,0,@9475 1081,0,@9814 1126,0,@11371 1283,0,@9594 1379,0,@9594 5471:D6,720|483b65187305ff5558cd014c8b304983fe010f85b20200004c8b682041f6c5010f850d0200004d8b75004d8b6d084983fd017501c34d8b2e4983fd070f855a0100004d8b6e084c3b2dab0200007502eb374d8b75004d89f44e8d3475010000004983fe03752349be38ddd0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34c3b2d600200007502eb344d89e64e8d2465010000004983fc03752449bc38e0d0f1c27f0000498d7508498d7c240848c7c101000000483bc9f3a67402eb01c34c3b2d180200007502eb304e8d3475010000004983fe03752349be70d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a67402eb01c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c34d8d6fe84c3b6d107305ff5550cd014d89ef49c745f80200000049be08f1d0f1c27f00004d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f1d0f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080700000048c70001000000c3c3f400000000|@11374,1,@639,@9565,@9648,@9616|104,0,@9616 167,0,@9648 228,0,@9565 289,0,@9821 338,0,@9823 440,0,@9821 489,0,@9823 591,0,@9821 640,0,@9823 5472:D3,144|483b65187305ff5558cd054989d55049be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd80a255f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@11133,1,@642|17,0,@4691 65,0,@5473 5473:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11375,1,@641| 5474:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@644| 5475:D3,1128|483b65187305ff5558cd01504c8b34244d8b6e084d89ec4983fd017d14488d64240849bdb86fd1f1c27f0000e9c60300004d89f64d8b2e4d8b6d084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8e8d9d1f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d8b6e084d89ec4983fd037d0f49beb86fd1f1c27f0000e9530200004d89f64d8b2e4d8b6d004983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b880dad1f1c27f0000ff124889c2488b0424ff124989c641564c8b7424204d8b2e4d8b6d104d89f64d8b66084983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b810dcd1f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be80dcd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8dcd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0dcd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@652|36,0,@10678 72,0,@9475 124,0,@4696 137,0,@11380 181,0,@10678 217,0,@9475 269,0,@4696 282,0,@11386 338,0,@9475 390,0,@4696 403,0,@11401 459,0,@10681 508,0,@10236 552,0,@11405 597,0,@10236 641,0,@10685 729,0,@10236 774,0,@11407 822,0,@10236 867,0,@10685 955,0,@10236 999,0,@11409 1048,0,@10688 5476:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@646|13,0,@4698 5477:D3,88|483b65187305ff5558cd014c8b304983fe03750c49be30dad1f1c27f0000eb0a49be48dad1f1c27f0000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000000000|@9492,1,@645|22,0,@11383 34,0,@11384 5478:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8b8dad1f1c27f0000ff124889c258ff22f400000000|@11133,1,@649|14,0,@4691 27,0,@11388 5479:D3,1760|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb86fd1f1c27f0000e9410600004d89ed4d8b75004d8b76084d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75084d89f44983fe037d0f49beb86fd1f1c27f0000e9df0400004d89ed4d8b75004d8b76184d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24104d8b75084d89f44983fe057d0f49bdb86fd1f1c27f0000e9820300004d89ed4d8b75004d8b364d89e54983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24184d8b75084d89f44983fe077d0f49beb86fd1f1c27f0000e9250200004d89ed4d8b75004d8b76104d89e54983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24204d8b75004d8b76204d89ed4d8b6d084983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@648|36,0,@10678 76,0,@9475 126,0,@4699 164,0,@10678 204,0,@9475 254,0,@4699 292,0,@10678 331,0,@9475 381,0,@4615 419,0,@10678 459,0,@9475 509,0,@4699 560,0,@9475 610,0,@4699 655,0,@10681 704,0,@10236 748,0,@11391 793,0,@10236 837,0,@10685 925,0,@10236 970,0,@11393 1014,0,@10236 1059,0,@10685 1147,0,@10236 1191,0,@11395 1236,0,@10236 1280,0,@10685 1368,0,@10236 1413,0,@11397 1457,0,@10236 1502,0,@10685 1590,0,@10236 1634,0,@11399 1683,0,@10688 5480:D4,80|483b65187305ff5558cd01488b0048bae81cd1f1c27f000048c7c303000000ff15430000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@9492,1,@647,@4983|16,0,@10077 5481:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b848dcd1f1c27f0000ff124889c258ff22f400000000|@11133,1,@651|14,0,@4691 27,0,@11403 5482:D3,2200|483b65187305ff5558cd01504c8b34244d8b66084d89e54983fc017d14488d64240849bdd8b5d1f1c27f0000e9f60700004d89f64d8b2641ff34244d89ee4983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@650|36,0,@11126 77,0,@9475 111,0,@10678 149,0,@9475 199,0,@4699 233,0,@10678 271,0,@9475 321,0,@4699 355,0,@10678 392,0,@9475 442,0,@4615 476,0,@10678 514,0,@9475 564,0,@4699 609,0,@9475 659,0,@4699 704,0,@10681 752,0,@10236 797,0,@11391 841,0,@10236 886,0,@10685 974,0,@10236 1018,0,@11393 1063,0,@10236 1107,0,@10685 1195,0,@10236 1240,0,@11395 1284,0,@10236 1329,0,@10685 1417,0,@10236 1461,0,@11397 1506,0,@10236 1550,0,@10685 1638,0,@10236 1683,0,@11399 1731,0,@10688 1840,0,@9475 1890,0,@4615 1935,0,@11355 1983,0,@10236 2028,0,@10685 2120,0,@11357 5483:D3,5728|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe017510488d64240848b868dfd1f1c27f0000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc037510488d64240848b840e0d1f1c27f0000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd050f85840300004d89f54d8b750841ff75104983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9120200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20e1d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50e1d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80e1d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe070f85fe03000041ff7424084d8b7424104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e98d0200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bdd8cf55f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90e2d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8e2d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00e3d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc090f857f0200004d8b6d084d89f44983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24084d8b6d184d896e0849bdc8d255f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08e4d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40e4d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd0b0f851f0700004d8b6e0841ff761041ff761841ff76204983ec0241547115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242849bdb86fd1f1c27f0000e9a80500004d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd08d355f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9e00300004d89f64983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7618498b16ff124989c641564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e98e0200004d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d204d896e0849bd48d355f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284983ee027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424404c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90ddd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20e5d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50e5d1f1c27f00004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80e5d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c341ff76084d8b76104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e98e0200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd20d555f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8e6d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0e6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@11375,1,@660|32,0,@10414 63,0,@11431 88,0,@10414 117,0,@11438 142,0,@10414 194,0,@9475 228,0,@10678 257,0,@9475 342,0,@9475 441,0,@10681 489,0,@10236 534,0,@11445 578,0,@10236 623,0,@10685 711,0,@10236 755,0,@11447 804,0,@10688 949,0,@10236 994,0,@11449 1084,0,@10414 1134,0,@9475 1168,0,@10678 1197,0,@9475 1282,0,@9475 1339,0,@4691 1391,0,@5484 1504,0,@10681 1552,0,@10236 1597,0,@11458 1641,0,@10236 1686,0,@10685 1774,0,@10236 1818,0,@11460 1867,0,@10688 2012,0,@10236 2057,0,@11462 2147,0,@10414 2193,0,@9475 2245,0,@4691 2297,0,@5485 2410,0,@10681 2459,0,@10236 2503,0,@11470 2548,0,@10688 2693,0,@10236 2738,0,@11472 2828,0,@10414 2885,0,@9475 2919,0,@10678 2948,0,@9475 3000,0,@4691 3052,0,@5486 3149,0,@10678 3178,0,@9475 3266,0,@10678 3295,0,@9475 3352,0,@4691 3404,0,@5487 3503,0,@9475 3558,0,@4615 3603,0,@10681 3651,0,@10236 3696,0,@10683 3740,0,@10236 3785,0,@10685 3873,0,@10236 3917,0,@11415 3966,0,@10236 4010,0,@10685 4098,0,@10236 4143,0,@11479 4187,0,@10236 4232,0,@10685 4320,0,@10236 4364,0,@11481 4413,0,@10688 4558,0,@10236 4603,0,@11483 4693,0,@10414 4725,0,@9475 4759,0,@10678 4788,0,@9475 4838,0,@4702 4874,0,@9475 4931,0,@4696 4983,0,@5489 5096,0,@10681 5144,0,@10236 5189,0,@11492 5233,0,@10236 5278,0,@10685 5366,0,@10236 5410,0,@11494 5459,0,@10688 5604,0,@10236 5649,0,@11496 5484:D3,712|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9270200004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60e2d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@654|37,0,@10678 76,0,@9475 126,0,@4615 177,0,@9475 271,0,@10681 319,0,@10236 364,0,@11456 408,0,@10236 453,0,@10685 541,0,@10236 585,0,@10683 634,0,@10688 5485:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11469,1,@655| 5486:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11375,1,@656| 5487:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@657| 5488:D5,352|483b65187305ff5558cd01488b18f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153d01000048bae81cd1f1c27f000048c7c305000000ff151e0100004989c54d8b75004a8d0c75010000004883f901750f49be70e6d1f1c27f0000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1daa0000000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646083041c646097741c6460a78498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@9492,1,@658,@4983,@4933|53,0,@10021 69,0,@10077 113,0,@11491 322,0,@9487 5489:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11375,1,@659| 5490:D6,1552|483b65187305ff5558cd054989d54c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b184d89de4d8b1b4983fb010f85e60200004d8b6e0841ff76104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9770100004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b8e0e7d1f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18e8d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e34983fc037d0b48b8704cd1f1c27f0000c34d8b66084983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be88c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bdf8db55f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38e9d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@11513,1,@663,@9805,@9803,@9797|29,0,@10414 80,0,@9475 114,0,@11126 143,0,@9475 195,0,@4691 208,0,@11504 250,0,@9475 305,0,@4698 350,0,@11355 398,0,@10236 443,0,@10685 535,0,@11357 680,0,@10236 725,0,@11506 810,0,@10414 831,0,@9475 883,0,@4696 931,0,@5492 1182,0,@11514 1230,0,@10391 1275,0,@11357 1426,0,@10236 1471,0,@11515 5491:D3,32|483b65187305ff5558cd0149be78c0d0f0c27f0000498b16ff22f40000000000|@10097,1,@661|13,0,@4615 5492:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11513,1,@662| 5493:D6,6576|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f859307000041ff7424084983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28ead1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64d8b24244983fc030f859207000041ff76084983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08ebd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54d8b364983fe050f85600200004d8b75084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b359e090000750949c7c603000000eb2b4c3b3584090000750949c7c603000000eb194c3b356a090000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0ebd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8704cd1f1c27f0000c341ff75084983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0ecd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@11377,1,@664,@9805,@9803,@9797|26,0,@10414 75,0,@9475 109,0,@10678 147,0,@9475 197,0,@4699 231,0,@10678 269,0,@9475 319,0,@4699 353,0,@10678 390,0,@9475 440,0,@4615 474,0,@10678 512,0,@9475 562,0,@4699 607,0,@9475 657,0,@4699 702,0,@10681 751,0,@10236 795,0,@11391 840,0,@10236 884,0,@10685 972,0,@10236 1017,0,@11393 1061,0,@10236 1106,0,@10685 1194,0,@10236 1238,0,@11395 1283,0,@10236 1327,0,@10685 1415,0,@10236 1460,0,@11397 1504,0,@10236 1549,0,@10685 1637,0,@10236 1681,0,@11399 1730,0,@10688 1875,0,@10236 1920,0,@11523 2005,0,@10414 2050,0,@9475 2084,0,@10678 2122,0,@9475 2172,0,@4699 2206,0,@10678 2244,0,@9475 2294,0,@4699 2328,0,@10678 2365,0,@9475 2415,0,@4615 2449,0,@10678 2487,0,@9475 2537,0,@4699 2582,0,@9475 2632,0,@4699 2677,0,@10681 2726,0,@10236 2770,0,@11391 2815,0,@10236 2859,0,@10685 2947,0,@10236 2992,0,@11393 3036,0,@10236 3081,0,@10685 3169,0,@10236 3213,0,@11395 3258,0,@10236 3302,0,@10685 3390,0,@10236 3435,0,@11397 3479,0,@10236 3524,0,@10685 3612,0,@10236 3656,0,@11399 3705,0,@10688 3850,0,@10236 3895,0,@11530 3980,0,@10414 4017,0,@9475 4067,0,@4699 4250,0,@11514 4298,0,@10391 4343,0,@11357 4494,0,@10236 4539,0,@11537 4624,0,@10414 4652,0,@9475 4686,0,@10678 4724,0,@9475 4774,0,@4699 4808,0,@10678 4846,0,@9475 4896,0,@4699 4930,0,@10678 4967,0,@9475 5017,0,@4615 5051,0,@10678 5089,0,@9475 5139,0,@4699 5184,0,@9475 5234,0,@4699 5279,0,@10681 5328,0,@10236 5372,0,@11391 5417,0,@10236 5461,0,@10685 5549,0,@10236 5594,0,@11393 5638,0,@10236 5683,0,@10685 5771,0,@10236 5815,0,@11395 5860,0,@10236 5904,0,@10685 5992,0,@10236 6037,0,@11397 6081,0,@10236 6126,0,@10685 6214,0,@10236 6258,0,@11399 6307,0,@10688 6452,0,@10236 6497,0,@11544 5494:D3,1064|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b204d89e641f6c4010f85870300004d89f44d8b342441ff7424084983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb86fd1f1c27f0000e9140200004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0edd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8edd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20eed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe01750b48b8e0eed1f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8c0efd1f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8a0f0d1f1c27f0000c3f400000000|@11583,1,@665|26,0,@10414 78,0,@9475 112,0,@10678 141,0,@9475 191,0,@4698 227,0,@9475 282,0,@4699 327,0,@10681 375,0,@10236 420,0,@11552 464,0,@10236 509,0,@10685 597,0,@10236 641,0,@11554 690,0,@10688 835,0,@10236 880,0,@11556 965,0,@10414 985,0,@11562 1005,0,@10414 1022,0,@11569 1039,0,@10414 1050,0,@11576 5495:D12,3912|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f8566020000488d6424084d8b6c24084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35c80e0000750949c7c603000000eb2b4c3b35ae0e0000750949c7c603000000eb194c3b35940e0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8f1d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc030f8565020000488d6424084d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c6d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35210c0000750949c7c603000000eb2b4c3b35070c0000750949c7c603000000eb194c3b35ed0b0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1856d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe050f85ba030000488d6424084d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9430200004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8f056d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be88c5d0f0c27f0000498b1648b84857d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd185bd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8f6d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd485bd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd070f85690200004d8b6c24084983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3593050000750949c7c603000000eb2b4c3b3579050000750949c7c603000000eb194c3b355f050000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd205cd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d8b74240841ff7424104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9130200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8f6d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd005dd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@12480,1,@719,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|32,0,@10414 79,0,@9475 129,0,@4699 312,0,@11514 360,0,@10391 405,0,@11357 556,0,@10236 601,0,@11585 691,0,@10414 734,0,@9475 784,0,@4706 967,0,@11514 1015,0,@10391 1060,0,@11357 1211,0,@10236 1256,0,@12412 1346,0,@10414 1402,0,@9475 1436,0,@10678 1465,0,@9475 1517,0,@4696 1530,0,@12419 1572,0,@9475 1629,0,@4696 1642,0,@12422 1698,0,@10681 1746,0,@10236 1791,0,@12457 1835,0,@10236 1880,0,@10685 1968,0,@10236 2012,0,@11627 2061,0,@10688 2206,0,@10236 2251,0,@12459 2341,0,@10414 2385,0,@9475 2621,0,@11514 2669,0,@10391 2714,0,@11357 2865,0,@10236 2910,0,@12466 3000,0,@10414 3034,0,@9475 3068,0,@10678 3097,0,@9475 3147,0,@4699 3183,0,@9475 3282,0,@10681 3330,0,@10236 3375,0,@11893 3419,0,@10236 3464,0,@10685 3552,0,@10236 3596,0,@11627 3645,0,@10688 3790,0,@10236 3835,0,@12473 5496:D12,30616|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34c8b204d89e64d8b24244983fc010f85de0400004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9650300004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9130200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f2d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08f3d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40f3d1f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70f3d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe030f858d07000041ff75084983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9220600004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9c80400004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9720300004c8b7424184d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91b0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7610498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f4d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0f4d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00f5d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f5d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68f5d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98f5d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd050f850404000041ff7424084d8b6c24104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9930200004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e04c3b75107305ff5550cd044d89f749c746f8030000004c8b6c24184d8b65184d8966104d89ed4d8b6d084d896e0849bd388256f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f9d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68f9d1f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0f9d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc070f85df0400004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9660300004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be58c6d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f4d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f5d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68f5d1f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5816d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe090f85bf0e000041ff750841ff751041ff751841ff75204983ec0241547115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64243049bdb86fd1f1c27f0000e9480d00004d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9ef0300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb86fd1f1c27f0000e9960200004c8b7424204d8b6e084d89e44983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d084d896e0849bdc8ab56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d8b76104c8b6c24184983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8017d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb017d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9ac0700004d89f64983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bea8c6d0f0c27f0000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb86fd1f1c27f0000e9590600004d89f64983ee027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c89304c8b7424384d8b7608498b16ff124989c641564c8b7424184983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9f00300004c8b7424284d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9960200004c8b7424304d8b6e084d89e44983ec027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d084d896e0849bda8ae56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424404d8b76104c8b6c24184983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5017d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8017d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb017d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf81ad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be301bd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd601bd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be901bd2f1c27f00004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc81bd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd0b0f85d00300004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdd8b5d1f1c27f0000e95a0200004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8b5d1f1c27f0000e9610100004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda81cd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc0d0f85f5020000488d6424084d89f44d8b74240841ff7424104983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e97c0100004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c6d0f0c27f0000498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be38c5d0f0c27f0000498b1648b8a01ed2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd181fd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe0f0f85520500004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb86fd1f1c27f0000e9dc0300004d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd20bb56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7608498b16ff124989c641564c8b7424184983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be48c6d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef01fd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2820d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6020d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9820d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd110f85690200004d8b6c24084983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35a4450000750949c7c603000000eb2b4c3b358a450000750949c7c603000000eb194c3b3570450000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7021d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc137510488d64240848b84822d2f1c27f0000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe150f85d904000041ff750841ff75104d8b75184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9660300004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9130200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2823d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6023d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9023d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc823d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd170f85dd0400004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9670300004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9150200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5017d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda024d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb017d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd824d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc190f85fd0c000041ff76084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9920b00004c8b7424084d8b6e204d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd58bd56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9c10900004c8b7424184d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424184d89f44983fe057d0f49bdb86fd1f1c27f0000e96c0800004c8b7424204d8b6e184d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d204d896e0849bd50c056f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49beb86fd1f1c27f0000e99b0600004c8b7424304d8b76284d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7628498b16ff124989c641564c8b7424304d89f54983fe097d0f49bdb86fd1f1c27f0000e9450500004c8b7424384d8b76304d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d89f54983fe0b7d0f49beb86fd1f1c27f0000e9ed0300004c8b7424404d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424404d89f44983fe0d7d0f49bdb86fd1f1c27f0000e9960200004c8b7424484d8b6e104d89e44983ec027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d184d896e0849bd90c056f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424584d8b76384c8b6c24504983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf01fd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed025d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be0026d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3826d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7026d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda826d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed826d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1027d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe1b0f85cc07000041ff750841ff75104983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb86fd1f1c27f0000e95d0600004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9ef0300004c8b7424104d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb86fd1f1c27f0000e9960200004c8b7424184d8b6e084d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bdd0c056f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d8b76104c8b6c24184983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8017d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb017d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bed8c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd601bd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4830d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8030d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd1d0f85e30200004d8b6c24084d89f44983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdb8c656f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424104d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3524230000750949c7c603000000eb2b4c3b350a230000750949c7c603000000eb194c3b35f0220000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6031d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc1f0f85450300004d8b660841ff76104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e9d60100004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d304d896e0849bdf0c856f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6032d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe210f85680200004d8b75084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b350c1d0000750949c7c603000000eb2b4c3b35f21c0000750949c7c603000000eb194c3b35d81c0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3833d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd230f85dc04000041ff74240841ff7424104d8b6c24184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9660300004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bee8c6d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1035d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4035d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7035d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda835d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc250f852309000041ff760841ff761041ff76184983ed0241557115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242849bdb86fd1f1c27f0000e9b00700004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9ef0300004c8b7424104d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7608498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb86fd1f1c27f0000e9960200004c8b7424184d8b6e084d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bdb8cc56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d8b76104c8b6c24184983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8017d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb017d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed8c6d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd601bd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4830d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8836d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe270f85da04000041ff750841ff75104d8b75184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9670300004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bee8c5d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea802d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6837d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9837d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc837d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd290f85fa0300004d8b6c240841ff7424104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9890200004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdf8cc56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda024d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea038d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd038d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d8b74240841ff7424104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9130200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef8c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0f4d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68f5d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1046d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@11888,1,@696,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|32,0,@10414 94,0,@9475 128,0,@10678 157,0,@9475 240,0,@10678 269,0,@9475 359,0,@9475 458,0,@10681 507,0,@10236 551,0,@11593 596,0,@10236 640,0,@10685 728,0,@10236 773,0,@11595 817,0,@10236 862,0,@10685 950,0,@10236 994,0,@11597 1043,0,@10688 1188,0,@10236 1233,0,@11599 1323,0,@10414 1367,0,@9475 1401,0,@10678 1438,0,@9475 1521,0,@10678 1559,0,@9475 1642,0,@10678 1680,0,@9475 1763,0,@10678 1801,0,@9475 1895,0,@9475 1989,0,@10681 2038,0,@10236 2082,0,@11607 2127,0,@10236 2171,0,@10685 2259,0,@10236 2304,0,@11609 2348,0,@10236 2393,0,@10685 2481,0,@10236 2525,0,@11611 2570,0,@10236 2614,0,@10685 2702,0,@10236 2747,0,@11613 2791,0,@10236 2836,0,@10685 2924,0,@10236 2968,0,@11615 3017,0,@10688 3162,0,@10236 3207,0,@11617 3297,0,@10414 3348,0,@9475 3382,0,@10678 3411,0,@9475 3463,0,@4691 3526,0,@5497 3625,0,@9475 3724,0,@10681 3772,0,@10236 3817,0,@11646 3861,0,@10236 3906,0,@10685 3994,0,@10236 4038,0,@11648 4087,0,@10688 4232,0,@10236 4277,0,@11650 4367,0,@10414 4426,0,@9475 4460,0,@10678 4489,0,@9475 4572,0,@10678 4601,0,@9475 4691,0,@9475 4746,0,@4709 4791,0,@10681 4840,0,@10236 4884,0,@11609 4929,0,@10236 4973,0,@10685 5061,0,@10236 5106,0,@11613 5150,0,@10236 5195,0,@10685 5283,0,@10236 5327,0,@11615 5376,0,@10688 5521,0,@10236 5566,0,@11881 5656,0,@10414 5712,0,@9475 5746,0,@10678 5777,0,@9475 5811,0,@10678 5848,0,@9475 5931,0,@10678 5969,0,@9475 6021,0,@4617 6073,0,@5505 6181,0,@9475 6231,0,@4702 6276,0,@10681 6324,0,@10236 6369,0,@11889 6413,0,@10236 6458,0,@10685 6546,0,@10236 6590,0,@11891 6639,0,@10236 6683,0,@10685 6771,0,@10236 6816,0,@11893 6864,0,@10688 6956,0,@10678 6985,0,@9475 7040,0,@4714 7074,0,@10678 7103,0,@9475 7195,0,@9475 7229,0,@10678 7266,0,@9475 7349,0,@10678 7387,0,@9475 7439,0,@4617 7491,0,@5507 7599,0,@9475 7649,0,@4702 7694,0,@10681 7743,0,@10236 7787,0,@11889 7832,0,@10236 7876,0,@10685 7964,0,@10236 8009,0,@11891 8057,0,@10236 8102,0,@10685 8190,0,@10236 8234,0,@11893 8283,0,@10688 8386,0,@10681 8434,0,@10236 8479,0,@11920 8523,0,@10236 8568,0,@10685 8656,0,@10236 8700,0,@11922 8745,0,@10236 8789,0,@10685 8877,0,@10236 8922,0,@11924 8966,0,@10236 9011,0,@10685 9099,0,@10236 9143,0,@11926 9192,0,@10688 9337,0,@10236 9382,0,@11928 9472,0,@10414 9528,0,@9475 9562,0,@11126 9591,0,@9475 9674,0,@11126 9703,0,@9475 9793,0,@9475 9892,0,@11355 9941,0,@10236 9985,0,@10685 10073,0,@10236 10118,0,@10685 10210,0,@11357 10355,0,@10236 10400,0,@11935 10490,0,@10414 10549,0,@9475 10583,0,@11126 10612,0,@9475 10662,0,@4715 10698,0,@9475 10755,0,@4691 10768,0,@11952 10824,0,@11355 10872,0,@10236 10917,0,@10685 11009,0,@11357 11154,0,@10236 11199,0,@11956 11289,0,@10414 11344,0,@9475 11378,0,@10678 11407,0,@9475 11459,0,@4691 11511,0,@5513 11608,0,@10678 11637,0,@9475 11727,0,@9475 11782,0,@4708 11827,0,@10681 11876,0,@10236 11920,0,@11963 11965,0,@10236 12009,0,@10685 12097,0,@10236 12142,0,@11965 12186,0,@10236 12231,0,@10685 12319,0,@10236 12363,0,@11967 12412,0,@10688 12557,0,@10236 12602,0,@11969 12692,0,@10414 12736,0,@9475 12972,0,@11514 13020,0,@10391 13065,0,@11357 13216,0,@10236 13261,0,@11976 13351,0,@10414 13380,0,@11983 13405,0,@10414 13457,0,@9475 13491,0,@10678 13520,0,@9475 13570,0,@4699 13604,0,@10678 13633,0,@9475 13723,0,@9475 13822,0,@10681 13871,0,@10236 13915,0,@11990 13960,0,@10236 14004,0,@10685 14092,0,@10236 14137,0,@11992 14181,0,@10236 14226,0,@10685 14314,0,@10236 14358,0,@11994 14407,0,@10688 14552,0,@10236 14597,0,@11996 14687,0,@10414 14743,0,@9475 14777,0,@10678 14806,0,@9475 14889,0,@10678 14918,0,@9475 14973,0,@4698 15009,0,@9475 15064,0,@4699 15109,0,@10681 15158,0,@10236 15202,0,@11889 15247,0,@10236 15291,0,@10685 15379,0,@10236 15424,0,@12003 15468,0,@10236 15513,0,@10685 15601,0,@10236 15645,0,@11893 15694,0,@10688 15839,0,@10236 15884,0,@12005 15974,0,@10414 16019,0,@9475 16053,0,@10678 16091,0,@9475 16143,0,@4691 16195,0,@5514 16292,0,@10678 16329,0,@9475 16412,0,@10678 16450,0,@9475 16502,0,@4691 16554,0,@5516 16651,0,@10678 16689,0,@9475 16772,0,@10678 16810,0,@9475 16860,0,@4699 16894,0,@10678 16932,0,@9475 16982,0,@4615 17016,0,@10678 17054,0,@9475 17106,0,@4691 17158,0,@5517 17266,0,@9475 17316,0,@4708 17361,0,@10681 17409,0,@10236 17454,0,@11963 17498,0,@10236 17543,0,@10685 17631,0,@10236 17675,0,@12013 17724,0,@10236 17768,0,@10685 17856,0,@10236 17901,0,@10683 17945,0,@10236 17990,0,@10685 18078,0,@10236 18122,0,@12015 18167,0,@10236 18211,0,@10685 18299,0,@10236 18344,0,@12017 18388,0,@10236 18433,0,@10685 18521,0,@10236 18565,0,@12019 18614,0,@10236 18658,0,@10685 18746,0,@10236 18791,0,@12021 18835,0,@10236 18880,0,@10685 18968,0,@10236 19012,0,@12023 19061,0,@10688 19206,0,@10236 19251,0,@12025 19341,0,@10414 19389,0,@9475 19423,0,@10678 19454,0,@9475 19488,0,@10678 19525,0,@9475 19608,0,@10678 19646,0,@9475 19698,0,@4617 19750,0,@5518 19858,0,@9475 19908,0,@4702 19953,0,@10681 20001,0,@10236 20046,0,@11889 20090,0,@10236 20135,0,@10685 20223,0,@10236 20267,0,@11891 20316,0,@10236 20360,0,@10685 20448,0,@10236 20493,0,@11893 20541,0,@10688 20635,0,@9475 20690,0,@4717 20735,0,@10681 20783,0,@10236 20828,0,@11924 20872,0,@10236 20917,0,@10685 21005,0,@10236 21049,0,@12099 21098,0,@10688 21243,0,@10236 21288,0,@12101 21378,0,@10414 21425,0,@9475 21477,0,@4691 21529,0,@5520 21780,0,@11514 21828,0,@10391 21873,0,@11357 22024,0,@10236 22069,0,@12108 22159,0,@10414 22208,0,@9475 22242,0,@11126 22271,0,@9475 22323,0,@4691 22375,0,@5521 22474,0,@9475 22573,0,@11355 22621,0,@10236 22666,0,@10685 22758,0,@11357 22903,0,@10236 22948,0,@12116 23038,0,@10414 23080,0,@9475 23316,0,@11514 23364,0,@10391 23409,0,@11357 23560,0,@10236 23605,0,@12123 23695,0,@10414 23751,0,@9475 23785,0,@10678 23814,0,@9475 23897,0,@10678 23926,0,@9475 23981,0,@4718 24017,0,@9475 24116,0,@10681 24165,0,@10236 24209,0,@12140 24254,0,@10236 24298,0,@10685 24386,0,@10236 24431,0,@12142 24475,0,@10236 24520,0,@10685 24608,0,@10236 24652,0,@12144 24701,0,@10688 24846,0,@10236 24891,0,@12146 24981,0,@10414 25034,0,@9475 25068,0,@10678 25099,0,@9475 25133,0,@10678 25170,0,@9475 25253,0,@10678 25291,0,@9475 25343,0,@4617 25395,0,@5524 25503,0,@9475 25553,0,@4702 25598,0,@10681 25646,0,@10236 25691,0,@11889 25735,0,@10236 25780,0,@10685 25868,0,@10236 25912,0,@11891 25961,0,@10236 26005,0,@10685 26093,0,@10236 26138,0,@11893 26186,0,@10688 26278,0,@10678 26307,0,@9475 26362,0,@4717 26398,0,@9475 26497,0,@10681 26546,0,@10236 26590,0,@11492 26635,0,@10236 26679,0,@10685 26767,0,@10236 26812,0,@11924 26856,0,@10236 26901,0,@10685 26989,0,@10236 27033,0,@12099 27082,0,@10688 27227,0,@10236 27272,0,@12153 27362,0,@10414 27414,0,@9475 27448,0,@10678 27477,0,@9475 27527,0,@4702 27561,0,@10678 27590,0,@9475 27645,0,@4702 27681,0,@9475 27780,0,@10681 27829,0,@10236 27873,0,@11721 27918,0,@10236 27962,0,@10685 28050,0,@10236 28095,0,@12160 28139,0,@10236 28184,0,@10685 28272,0,@10236 28316,0,@12162 28365,0,@10688 28510,0,@10236 28555,0,@12164 28645,0,@10414 28696,0,@9475 28730,0,@10678 28759,0,@9475 28811,0,@4691 28863,0,@5525 28962,0,@9475 29017,0,@4698 29062,0,@10681 29110,0,@10236 29155,0,@12003 29199,0,@10236 29244,0,@10685 29332,0,@10236 29376,0,@12171 29425,0,@10688 29570,0,@10236 29615,0,@12173 29705,0,@10414 29739,0,@9475 29773,0,@10678 29802,0,@9475 29887,0,@9475 29942,0,@4719 29987,0,@10681 30035,0,@10236 30080,0,@11609 30124,0,@10236 30169,0,@10685 30257,0,@10236 30301,0,@11615 30350,0,@10688 30495,0,@10236 30540,0,@12280 5497:D3,1632|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9bf0500004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9ef0300004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f44983fe037d0f49bdb86fd1f1c27f0000e9940200004c8b7424104d8b2e4d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d104d896e0849bdc08856f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d8b76104c8b6c24184983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f6d1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8f6d1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@668|37,0,@11126 78,0,@9475 112,0,@10678 150,0,@9475 200,0,@4699 234,0,@10678 271,0,@9475 323,0,@4691 375,0,@5498 483,0,@9475 577,0,@10681 625,0,@10236 670,0,@11492 714,0,@10236 759,0,@10685 847,0,@10236 891,0,@11625 940,0,@10236 984,0,@10685 1072,0,@10236 1117,0,@11627 1165,0,@10688 1274,0,@9475 1324,0,@4708 1369,0,@11355 1417,0,@10236 1462,0,@10685 1554,0,@11357 5498:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@666| 5499:D3,88|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284983fd01750b48b808f7d1f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b830f8d1f1c27f0000c3f400000000|@11645,1,@667|26,0,@10414 46,0,@11630 63,0,@10414 74,0,@11638 5500:D33,7584|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc017510488d64240848b8b0fad1f1c27f0000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd030f85680200004d8b76084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35901d0000750949c7c603000000eb2b4c3b35761d0000750949c7c603000000eb194c3b355c1d0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98fbd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe050f85690200004d8b7424084983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e61a0000750949c7c603000000eb2b4c3b35cc1a0000750949c7c603000000eb194c3b35b21a0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80fcd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc070f85680200004d8b6d084983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b353c180000750949c7c603000000eb2b4c3b3522180000750949c7c603000000eb194c3b3508180000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60fdd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd090f85680200004d8b76084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7618488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3592150000750949c7c603000000eb2b4c3b3578150000750949c7c603000000eb194c3b355e150000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48fed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe0b0f85690200004d8b7424084983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e8120000750949c7c603000000eb2b4c3b35ce120000750949c7c603000000eb194c3b35b4120000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28ffd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc0d0f85680200004d8b6d084983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b353e100000750949c7c603000000eb2b4c3b3524100000750949c7c603000000eb194c3b350a100000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0800d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd0f0f85680200004d8b76084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35940d0000750949c7c603000000eb2b4c3b357a0d0000750949c7c603000000eb194c3b35600d0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde800d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe110f85690200004d8b7424084983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7608488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35ea0a0000750949c7c603000000eb2b4c3b35d00a0000750949c7c603000000eb194c3b35b60a0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc801d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc130f858203000041ff75084d8b6d104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdb86fd1f1c27f0000e9130200004d89f64983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424184d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda802d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed802d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1003d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd150f85680200004d8b76084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c89304c8b34244d8b7618488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3594040000750949c7c603000000eb2b4c3b357a040000750949c7c603000000eb194c3b3560040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf003d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d8b76084983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7620488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fb010000750949c7c603000000eb2b4c3b35e1010000750949c7c603000000eb194c3b35c7010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd004d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@11746,1,@669,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|32,0,@10414 64,0,@11658 89,0,@10414 132,0,@9475 368,0,@11514 416,0,@10391 461,0,@11357 612,0,@10236 657,0,@11665 747,0,@10414 790,0,@9475 1026,0,@11514 1074,0,@10391 1119,0,@11357 1270,0,@10236 1315,0,@11672 1405,0,@10414 1448,0,@9475 1684,0,@11514 1732,0,@10391 1777,0,@11357 1928,0,@10236 1973,0,@11679 2063,0,@10414 2106,0,@9475 2342,0,@11514 2390,0,@10391 2435,0,@11357 2586,0,@10236 2631,0,@11686 2721,0,@10414 2764,0,@9475 3000,0,@11514 3048,0,@10391 3093,0,@11357 3244,0,@10236 3289,0,@11693 3379,0,@10414 3422,0,@9475 3658,0,@11514 3706,0,@10391 3751,0,@11357 3902,0,@10236 3947,0,@11700 4037,0,@10414 4080,0,@9475 4316,0,@11514 4364,0,@10391 4409,0,@11357 4560,0,@10236 4605,0,@11707 4695,0,@10414 4738,0,@9475 4974,0,@11514 5022,0,@10391 5067,0,@11357 5218,0,@10236 5263,0,@11714 5353,0,@10414 5402,0,@9475 5436,0,@10678 5465,0,@9475 5515,0,@4698 5551,0,@9475 5650,0,@10681 5698,0,@10236 5743,0,@11721 5787,0,@10236 5832,0,@10685 5920,0,@10236 5964,0,@11723 6013,0,@10688 6158,0,@10236 6203,0,@11725 6293,0,@10414 6336,0,@9475 6572,0,@11514 6620,0,@10391 6665,0,@11357 6816,0,@10236 6861,0,@11732 6951,0,@10414 6977,0,@9475 7213,0,@11514 7261,0,@10391 7306,0,@11357 7457,0,@10236 7502,0,@11739 5501:D3,288|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b204d89e64983fc01750b48b8e005d2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe03750b48b8b806d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd05750b48b89007d2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc07750b48b86808d2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe09750b48b84809d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd0b750b48b8280ad2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8000bd2f1c27f0000c3f400000000|@11797,1,@670|26,0,@10414 49,0,@11748 69,0,@10414 89,0,@11755 109,0,@10414 129,0,@11762 149,0,@10414 169,0,@11769 189,0,@10414 209,0,@11776 229,0,@10414 246,0,@11783 263,0,@10414 274,0,@11790 5502:D3,208|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284d89ec4983fd01750b48b8180cd2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc03750b48b8f80cd2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe05750b48b8d80dd2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd07750b48b8b80ed2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8900fd2f1c27f0000c3f400000000|@11834,1,@671|26,0,@10414 49,0,@11799 69,0,@10414 89,0,@11806 109,0,@10414 129,0,@11813 149,0,@10414 166,0,@11820 183,0,@10414 194,0,@11827 5503:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8a810d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b88811d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b86812d2f1c27f0000c3f400000000|@11857,1,@672|26,0,@10414 49,0,@11836 69,0,@10414 86,0,@11843 103,0,@10414 114,0,@11850 5504:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b88013d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b86014d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b84815d2f1c27f0000c3f400000000|@11880,1,@673|26,0,@10414 49,0,@11859 69,0,@10414 86,0,@11866 103,0,@10414 114,0,@11873 5505:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@674| 5506:D3,632|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54983fc01750b48b8f017d2f1c27f0000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4983fd03750b48b8d818d2f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b364983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb819d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf019d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@11919,1,@675|26,0,@10414 49,0,@11896 69,0,@10414 89,0,@11903 109,0,@10414 129,0,@9475 179,0,@4698 224,0,@10681 273,0,@10236 317,0,@11910 362,0,@10688 507,0,@10236 552,0,@11912 5507:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@676| 5508:D4,80|483b65187305ff5558cd01488b0048ba901dd2f1c27f0000ff154a0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f400000000000000|@9492,1,@679,@5509|16,0,@11943 5509:D8,2672|483b65187305ff5558cd054989c641f6c6010f841201000041f6c60174084983fe017d15eb184d0fb66eff4e8d2c6d010000004983fd2374054c89f0eb134c89f348b8f814d1f1c27f0000ff15570a000048bae81cd1f1c27f000048c7c305000000ff15380a00004989c64d8b2e4a8d0c6d010000004883f901750b48b8c01dd2f1c27f0000c34989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b109000077614d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640084cc6400949c6400a54498d7608488d780b48d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2341f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30afd1f1c27f00004c89701849be60afd1f1c27f00004c89701049bed01fd1f1c27f00004c8970084c8b72104c8930488b5d08ff234d0fb66eff4d89ec4e8d2c6d010000004981e5ff0100004983e5074983fd050f85ad010000488b52084c89f0ff124989c64d8b2e4e8d246d010000004983fc01750f49bdd81dd2f1c27f0000e9ae0000004d89e34983c30c4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b155e0800000f873b0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbd81dd2f1c27f000048c7c10d000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0e48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e0d7d0f1c27f0000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8b07000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430228060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234d89e54e8d2465010000004981e4ff0100004983e4074983fc030f8579010000498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f814d1f1c27f00004156ff15de060000415e4989c541f6c5010f84130100004983ed014d6bed08711048b8d0c6d0f1c27f0000488b5d08ff234983c5014983fd217d02eb0749c7c5210000004983fd0375204d0fb6364e8d2c750100000049be30c9d0f1c27f00004b8b44aefce9fa0400004983fd01750f48b8d8c8d0f1c27f0000e9e50400004983fd010f8c910000004c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dec05000077564d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004d89eb49d1eb4d891c2449c7c301000000e94804000048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2348b80815d1f1c27f0000488b5d08ff2341f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30afd1f1c27f00004c89701849be60afd1f1c27f00004c89701049bed01fd1f1c27f00004c8970084c8b72104c8930488b5d08ff234e8d2c6d010000004981e5ff0100004983e5074983fd010f859903000041f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30afd1f1c27f00004c89701849be60afd1f1c27f00004c89701049bed01fd1f1c27f00004c8970084c8b72104c8930488b5d08ff23498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1948b8f814d1f1c27f0000524156ff1591040000415e5a4989c541f6c5010f84da0200004983fd037c0949c7c503000000eb0749c7c5010000004983fd030f85ca02000041f6c6017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30afd1f1c27f00004c89701849be60afd1f1c27f00004c89701049bed01fd1f1c27f00004c8970084c8b72104c8930488b5d08ff23498b06a801740949c7c603000000eb0749c7c6010000004983fe030f8437020000a8017451498d47d8483b45107305ff5550cd044989c748c740f80400000049be30afd1f1c27f00004c89701849be60afd1f1c27f00004c89701049bed01fd1f1c27f00004c8970084c8b72104c8930488b5d08ff234c0fb670ff4e8d3475010000004981e6ff0100004983e6074983fe05750949c7c603000000eb0749c7c6010000004983fe030f85aa010000488b5208ff124989c64d8b2e4e8d246d010000004983fc01750f49bdf01dd2f1c27f0000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15bb0200000f873b0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbf01dd2f1c27f000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e0d7d0f1c27f0000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de801000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430228060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff2348b8081ed2f1c27f0000c348b80815d1f1c27f0000488b5d08ff2348b8081ed2f1c27f0000c34d3beb0f87f100000041806424ffbf4c89e048bbb0c7d0f1c27f0000ff15620100004989c64d8b2e4e8d2c6d010000004983fd01750b48b8301ed2f1c27f0000c34d89ec4983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc300000077774d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc301ed2f1c27f000048c7c113000000498d742408488d780848d1e9f3a44c89e9498d7608488d781148d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234d89d94983c1104d89da49d1ea4f0fb6141649d1e94788140c4d89da4983c2024d89d3483b65187306ff5558ca0078e9d2fefffff40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@11950,1,@677,@4835,@4933,@4933,@4983,@4933|67,0,@10021 83,0,@10077 126,0,@11945 284,0,@9487 332,0,@11082 346,0,@11083 360,0,@10098 453,0,@11946 591,0,@11946 660,0,@9559 821,0,@9487 837,0,@9487 938,0,@10021 981,0,@9475 1034,0,@9496 1060,0,@9493 1214,0,@9487 1230,0,@9490 1246,0,@10022 1294,0,@11082 1308,0,@11083 1322,0,@10098 1410,0,@11082 1424,0,@11083 1438,0,@10098 1518,0,@10021 1617,0,@11082 1631,0,@11083 1645,0,@10098 1735,0,@11082 1749,0,@11083 1763,0,@10098 1872,0,@11947 2010,0,@11947 2079,0,@9559 2240,0,@9487 2256,0,@9487 2272,0,@11948 2283,0,@10022 2299,0,@11948 2328,0,@9484 2364,0,@11949 2492,0,@11949 2544,0,@9487 5510:D3,72|49bb48d37f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@11951,1,@678|2,0,@19869 5511:D3,32|483b65187305ff5558cd0149bec8c6d0f0c27f0000498b16ff22f40000000000|@11955,1,@681|13,0,@4716 5512:D3,24|483b65187305ff5558cd0148b86012d1f1c27f0000c3f400|@10006,1,@680|13,0,@10004 5513:D3,528|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9700100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@682|36,0,@11126 75,0,@9475 170,0,@9475 220,0,@4708 265,0,@11355 313,0,@10236 358,0,@10685 450,0,@11357 5514:D3,656|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9ef0100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd10c056f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@684|37,0,@11126 76,0,@9475 126,0,@4708 176,0,@9475 228,0,@4691 280,0,@5515 393,0,@11355 441,0,@10236 486,0,@10685 578,0,@11357 5515:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@683| 5516:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12012,1,@685| 5517:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@686| 5518:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@687| 5519:D3,1408|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe01750b48b8f827d2f1c27f0000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc03750b48b8d828d2f1c27f0000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd05750b48b8b829d2f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d89f44d8b364983fe07750b48b8982ad2f1c27f0000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc09750b48b8782bd2f1c27f0000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd0b750b48b8582cd2f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d89f44d8b364983fe0d0f85fe0100004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be382dd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd702dd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc0f0f85fd0100004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be382dd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd502ed2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b8302fd2f1c27f0000c3f400000000000000|@12098,1,@688|26,0,@10414 52,0,@12033 72,0,@10414 96,0,@12040 116,0,@10414 140,0,@12047 160,0,@10414 183,0,@12054 203,0,@10414 227,0,@12061 247,0,@10414 271,0,@12068 291,0,@10414 329,0,@9475 379,0,@4698 424,0,@10681 473,0,@10236 517,0,@12075 562,0,@10688 707,0,@10236 752,0,@12077 837,0,@10414 875,0,@9475 925,0,@4698 970,0,@10681 1019,0,@10236 1063,0,@12075 1108,0,@10688 1253,0,@10236 1298,0,@12084 1380,0,@10414 1391,0,@12091 5520:D3,528|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9700100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@689|36,0,@11126 75,0,@9475 170,0,@9475 220,0,@4708 265,0,@11355 313,0,@10236 358,0,@10685 450,0,@11357 5521:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12115,1,@690| 5522:D4,32|483b65187305ff5558cd014c8b4008488b0048c7c301000000ff2519000000f4|@9492,1,@691,@5523| 5523:D3,784|483b65187306ff5558ca09014d89c34c8b304d89f44983ee02711048b8d0c6d0f1c27f0000488b5d08ff234983fb017f0c49bd2034d2f1c27f0000eb504d2bde711048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849bb6834d2f1c27f00004d895d004983fc01756f4d8b6d004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9834d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89e24983ea024d89e14983e9024c89e14883e9024c8b58084989c849c1e8034983c80149d1e84f0fb61c034e8d1c5d010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d84983fb01750949c7c003000000eb0749c7c0010000004983f002498b7d004d8b5d086a016a014983fb0175334983c3027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2349b92034d2f1c27f00004c890c244c895c2408e91a0100004983fb017d2d4983c3027115488d64241048b8d0c6d0f1c27f0000488b5d08ff2348c70424010000004c895c2408e9e70000004983f803750c48be30dad1f1c27f0000eb0a48be48dad1f1c27f00004d8d47e84c3b45107306ff5550cac17e4d89c749c740f8020000004989700849c700070000004d3bce745a4d8d4fe84c3b4d107306ff5550ca817d4d89cf49c741f8020000004989790848bf50f0d0f1c27f0000498939498d7fe8483b7d107306ff5550ca017f4989ff48c747f8020000004c894f0849b9d034d2f1c27f00004c890feb004d8d4fe84c3b4d107306ff5550ca817d4d89cf49c741f802000000498979084d89014983c3027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c890c244c895c2408415941584d8d5fe84c3b5d107306ff5550ca01774d89df49c743f8020000004d8943084d890b4d89d44d89dd483b65187306ff5558ca0170e97afdfffff4000000000000|@12139,1,@692|29,0,@9475 51,0,@12131 68,0,@9475 119,0,@12134 174,0,@12136 396,0,@9475 412,0,@12131 453,0,@9475 493,0,@11383 505,0,@11384 589,0,@9814 633,0,@12138 693,0,@9475 5524:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@693| 5525:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@694| 5526:D3,568|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284d89ec4983fd01750b48b8b839d2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc03750b48b8983ad2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe05750b48b8783bd2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd07750b48b8583cd2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc09750b48b8383dd2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe0b750b48b8183ed2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd0d750b48b8f83ed2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc0f750b48b8d83fd2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe11750b48b8b840d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd13750b48b89841d2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc15750b48b87842d2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe17750b48b85043d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd19750b48b82844d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b80845d2f1c27f0000c3f400000000|@12279,1,@695|26,0,@10414 49,0,@12181 69,0,@10414 89,0,@12188 109,0,@10414 129,0,@12195 149,0,@10414 169,0,@12202 189,0,@10414 209,0,@12209 229,0,@10414 249,0,@12216 269,0,@10414 289,0,@12223 309,0,@10414 329,0,@12230 349,0,@10414 369,0,@12237 389,0,@10414 409,0,@12244 429,0,@10414 449,0,@12251 469,0,@10414 489,0,@12258 509,0,@10414 526,0,@12265 543,0,@10414 554,0,@12272 5527:D9,1296|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be78c6d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3584040000750949c7c603000000eb2b4c3b356a040000750949c7c603000000eb194c3b3550040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf846d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be88c6d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd047d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@12302,1,@697,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4711 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@12288 674,0,@10414 695,0,@9475 745,0,@4712 928,0,@11514 976,0,@10391 1021,0,@11357 1172,0,@10236 1217,0,@12295 5528:D3,2000|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34c8b204d89e64d8b24244983fc010f85c00300004d8b660841ff76104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e9510200004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bdf8dc56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd38dd56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf848d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe037510488d64240848b8d049d2f1c27f0000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd050f854d0300004d8b6c240841ff7424104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdd8b5d1f1c27f0000e9dc0100004d89f64983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bd78dd56f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb04ad2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084983fe037d0b48b8704cd1f1c27f0000c348b8884bd2f1c27f0000c3f40000000000|@11624,1,@701|32,0,@10414 84,0,@9475 118,0,@11126 147,0,@9475 199,0,@4691 251,0,@5529 350,0,@9475 407,0,@4691 459,0,@5530 572,0,@11355 620,0,@10236 665,0,@10685 757,0,@11357 902,0,@10236 947,0,@12304 1037,0,@10414 1065,0,@12311 1090,0,@10414 1141,0,@9475 1175,0,@11126 1204,0,@9475 1254,0,@4699 1290,0,@9475 1347,0,@4691 1399,0,@5531 1512,0,@11355 1560,0,@10236 1605,0,@10685 1697,0,@11357 1842,0,@10236 1887,0,@12318 1974,0,@10414 1985,0,@12325 5529:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@698| 5530:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11888,1,@699| 5531:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@700| 5532:D12,1984|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b354c070000750949c7c603000000eb2b4c3b3532070000750949c7c603000000eb194c3b3518070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd784cd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d89f44d8b364983fe030f85610200004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35af040000750949c7c603000000eb2b4c3b3595040000750949c7c603000000eb194c3b357b040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd584dd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc050f85600200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3512020000750949c7c603000000eb2b4c3b35f8010000750949c7c603000000eb194c3b35de010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd384ed2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b8184fd2f1c27f0000c3f40000|@12012,1,@702,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4699 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@12333 674,0,@10414 712,0,@9475 762,0,@4699 945,0,@11514 993,0,@10391 1038,0,@11357 1189,0,@10236 1234,0,@12340 1319,0,@10414 1357,0,@9475 1407,0,@4699 1590,0,@11514 1638,0,@10391 1683,0,@11357 1834,0,@10236 1879,0,@12347 1961,0,@10414 1972,0,@12354 5533:D3,88|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284983fd01750b48b80850d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8e050d2f1c27f0000c3f400000000|@12376,1,@703|26,0,@10414 46,0,@12362 63,0,@10414 74,0,@12369 5534:D9,4632|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34c8b304d89f54d8b364983fe010f85ab06000041ff75084d8b751041ff751841ff75204983ec0241547115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb86fd1f1c27f0000e9340500004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9e10300004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c89304c8b7424284d8b7610498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb86fd1f1c27f0000e98f0200004d89f64983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24184983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24304d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d084d896e0849bdd8f856f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98f6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1852d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4852d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8f6d1f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7852d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd030f855605000041ff7424084d8b6c241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9e00300004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e98d0200004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd18f956f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424304d8b7610498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98f6d1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8f6d1f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5853d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc050f85680200004d8b76084983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244d8b7610488d642408498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b352a050000750949c7c603000000eb2b4c3b3510050000750949c7c603000000eb194c3b35f6040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3054d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d8b6e084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77d04c3b75107305ff5550cd044d89f749c746f8050000004c8b6c24084d8b65104d8966204d89ed4d8b65204d8966184d89ed4d8b65184d8966104d89ed4d8b6d084d896e0849bd58f956f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180700000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424104d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4055d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@12115,1,@712,@9805,@9803,@9797,@9805,@9803,@9797|32,0,@10414 91,0,@9475 125,0,@10678 154,0,@9475 204,0,@4699 238,0,@10678 267,0,@9475 355,0,@10678 384,0,@9475 439,0,@4699 475,0,@9475 532,0,@4691 584,0,@5535 697,0,@10681 745,0,@10236 790,0,@11625 834,0,@10236 879,0,@10685 967,0,@10236 1011,0,@12378 1056,0,@10236 1100,0,@10685 1188,0,@10236 1233,0,@12380 1277,0,@10236 1322,0,@10685 1410,0,@10236 1454,0,@11627 1503,0,@10688 1648,0,@10236 1693,0,@12382 1783,0,@10414 1839,0,@9475 1873,0,@10678 1902,0,@9475 1952,0,@4699 1986,0,@10678 2015,0,@9475 2072,0,@4691 2124,0,@5536 2223,0,@9475 2322,0,@10681 2371,0,@10236 2415,0,@11492 2460,0,@10236 2504,0,@10685 2592,0,@10236 2637,0,@11625 2685,0,@10236 2730,0,@10685 2818,0,@10236 2862,0,@11627 2911,0,@10688 3056,0,@10236 3101,0,@12389 3191,0,@10414 3234,0,@9475 3470,0,@11514 3518,0,@10391 3563,0,@11357 3714,0,@10236 3759,0,@12396 3849,0,@10414 3875,0,@9475 3927,0,@4691 4012,0,@5537 4263,0,@11514 4311,0,@10391 4356,0,@11357 4507,0,@10236 4552,0,@12405 5535:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@704| 5536:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@705| 5537:D3,4240|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9ec0f00004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d8b66084d89e54983fc037d0f49beb86fd1f1c27f0000e98a0e00004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb86fd1f1c27f0000e9920b00004c8b7424084d8b6e204d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd100a57f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49bdb86fd1f1c27f0000e9c20900004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7620498b16ff124989c641564c8b7424184d89f44983fe057d0f49beb86fd1f1c27f0000e96c0800004c8b7424204d8b6e184d89e44983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24404d8b6d184d896e0849bd080d57f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49bdb86fd1f1c27f0000e99c0600004c8b7424304d8b76284d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7610498b16ff124989c641564c8b7424304d89f54983fe097d0f49beb86fd1f1c27f0000e9450500004c8b7424384d8b76304d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d89f54983fe0b7d0f49bdb86fd1f1c27f0000e9ee0300004c8b7424404d8b76084d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424404d89f44983fe0d7d0f49beb86fd1f1c27f0000e9960200004c8b7424484d8b6e104d89e44983ec027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24684d8b6d084d896e0849bd480d57f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424584d8b76384c8b6c24504983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef01fd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd025d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0026d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be3826d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7026d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea826d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd826d2f1c27f00004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104d8b2e4d8b6d004d89f64d8b66084983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd880d57f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98f6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1055d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec8f6d1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@9836,1,@711|37,0,@10678 77,0,@9475 127,0,@4699 165,0,@10678 207,0,@9475 241,0,@10678 279,0,@9475 331,0,@4691 383,0,@5538 480,0,@10678 517,0,@9475 600,0,@10678 638,0,@9475 690,0,@4691 742,0,@5540 839,0,@10678 877,0,@9475 960,0,@10678 998,0,@9475 1048,0,@4699 1082,0,@10678 1120,0,@9475 1170,0,@4615 1204,0,@10678 1242,0,@9475 1294,0,@4691 1346,0,@5541 1454,0,@9475 1504,0,@4708 1549,0,@10681 1598,0,@10236 1642,0,@11963 1687,0,@10236 1731,0,@10685 1819,0,@10236 1864,0,@12013 1912,0,@10236 1957,0,@10685 2045,0,@10236 2089,0,@10683 2134,0,@10236 2178,0,@10685 2266,0,@10236 2311,0,@12015 2355,0,@10236 2400,0,@10685 2488,0,@10236 2532,0,@12017 2577,0,@10236 2621,0,@10685 2709,0,@10236 2754,0,@12019 2802,0,@10236 2847,0,@10685 2935,0,@10236 2979,0,@12021 3024,0,@10236 3068,0,@10685 3156,0,@10236 3201,0,@12023 3249,0,@10688 3357,0,@9475 3409,0,@4691 3461,0,@5542 3574,0,@10681 3623,0,@10236 3667,0,@11625 3712,0,@10236 3756,0,@10685 3844,0,@10236 3889,0,@12403 3933,0,@10236 3978,0,@10685 4066,0,@10236 4110,0,@11627 4159,0,@10688 5538:D3,656|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9ef0100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be48c6d0f0c27f0000498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdc80c57f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@707|37,0,@11126 76,0,@9475 126,0,@4708 176,0,@9475 228,0,@4691 280,0,@5539 393,0,@11355 441,0,@10236 486,0,@10685 578,0,@11357 5539:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@706| 5540:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12012,1,@708| 5541:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@709| 5542:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11624,1,@710| 5543:D3,32|483b65187305ff5558cd0149beb8c5d0f0c27f0000498b16ff22f40000000000|@12421,1,@713|13,0,@4699 5544:D3,32|483b65187305ff5558cd0149be48c7d0f0c27f0000498b16ff22f40000000000|@12443,1,@718|13,0,@4724 5545:D3,1000|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9550200004c8b7424084d8b76104d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9ff0000004c8b7424104d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc9857d2f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7058d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7026d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda058d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@12443,1,@714|26,0,@10414 52,0,@9475 86,0,@10678 124,0,@9475 202,0,@10678 239,0,@9475 289,0,@4699 323,0,@9475 366,0,@12425 414,0,@10236 459,0,@12434 503,0,@10236 548,0,@10685 636,0,@10236 680,0,@12019 729,0,@10688 874,0,@10236 919,0,@12436 5546:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284983ec02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8a859d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd185ad2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@12456,1,@717,@9805,@9803,@9797|26,0,@10414 46,0,@9475 98,0,@4696 111,0,@12445 305,0,@11514 353,0,@10391 398,0,@11357 549,0,@10236 594,0,@12449 5547:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8e059d2f1c27f0000ff124889c258ff22f400000000|@11133,1,@716|14,0,@4691 27,0,@12447 5548:D3,536|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9760100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c7d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@715|36,0,@11126 75,0,@9475 125,0,@4722 176,0,@9475 226,0,@4699 271,0,@11355 319,0,@10236 364,0,@10685 456,0,@11357 5549:D3,368|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8085ed2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd03750b48b8e85ed2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc05750b48b8c85fd2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe07750b48b8a060d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4983fd09750b48b88061d2f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64983fc0b750b48b86062d2f1c27f0000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe0d750b48b84063d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd0f750b48b81864d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8f064d2f1c27f0000c3f400000000|@12545,1,@720|26,0,@10414 49,0,@12482 69,0,@10414 89,0,@12489 109,0,@10414 129,0,@12496 149,0,@10414 169,0,@12503 189,0,@10414 209,0,@12510 229,0,@10414 249,0,@12517 269,0,@10414 289,0,@12524 309,0,@10414 326,0,@12531 343,0,@10414 354,0,@12538 5550:D3,1880|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9c10500004c8b7424084d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9660400004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bdf82057f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e9960200004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424284d8b6e084c8b6424204983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd382157f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1866d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90ddd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5066d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8866d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@11469,1,@724|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 213,0,@10678 251,0,@9475 303,0,@4691 355,0,@5551 452,0,@10678 489,0,@9475 539,0,@4615 584,0,@9475 636,0,@4691 688,0,@5552 801,0,@10681 849,0,@10236 894,0,@12547 938,0,@10236 983,0,@10685 1071,0,@10236 1115,0,@10683 1160,0,@10236 1204,0,@10685 1292,0,@10236 1337,0,@11415 1385,0,@10236 1430,0,@10685 1518,0,@10236 1562,0,@12549 1611,0,@10688 1756,0,@10236 1801,0,@12551 5551:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@721| 5552:D3,832|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9a20200004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c641564c8b7424084d8b2e4d8b6d004d89f64d8b66084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda02457f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8e6d1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@9836,1,@723|37,0,@10678 77,0,@9475 127,0,@4702 177,0,@9475 229,0,@4696 281,0,@5553 394,0,@10681 442,0,@10236 487,0,@11492 531,0,@10236 576,0,@10685 664,0,@10236 708,0,@11494 757,0,@10688 5553:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11375,1,@722| 5554:D3,3936|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9c70d00004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e96d0c00004c8b6c241041ff75104d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9f70900004c8b7424084d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bdb86fd1f1c27f0000e99c0800004c8b6c241041ff75084d89f64983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b364c8b6c24104983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc067d2f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b76084c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc067d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30ded1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2868d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@12572,1,@725|32,0,@10414 58,0,@9475 92,0,@10678 129,0,@9475 212,0,@10678 252,0,@9475 286,0,@10678 324,0,@9475 374,0,@4615 408,0,@10678 448,0,@9475 482,0,@10678 520,0,@9475 570,0,@4699 604,0,@10678 642,0,@9475 692,0,@4699 726,0,@10678 763,0,@9475 813,0,@4615 847,0,@10678 885,0,@9475 935,0,@4699 980,0,@9475 1030,0,@4699 1075,0,@10681 1123,0,@10236 1168,0,@11391 1212,0,@10236 1257,0,@10685 1345,0,@10236 1389,0,@11393 1434,0,@10236 1478,0,@10685 1566,0,@10236 1611,0,@11395 1655,0,@10236 1700,0,@10685 1788,0,@10236 1832,0,@11397 1877,0,@10236 1921,0,@10685 2009,0,@10236 2054,0,@11399 2102,0,@10688 2204,0,@9475 2254,0,@4615 2299,0,@10681 2347,0,@10236 2392,0,@10683 2436,0,@10236 2481,0,@10685 2569,0,@10236 2613,0,@12559 2658,0,@10236 2702,0,@10685 2790,0,@10236 2835,0,@12561 2883,0,@10688 2986,0,@9475 3080,0,@10681 3129,0,@10236 3173,0,@12563 3218,0,@10236 3262,0,@10685 3350,0,@10236 3395,0,@12561 3439,0,@10236 3484,0,@10685 3572,0,@10236 3616,0,@11421 3665,0,@10688 3810,0,@10236 3855,0,@12565 5555:D3,3864|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f854d0600004d89f54d8b750841ff751041ff751841ff75204983ec0241547115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb86fd1f1c27f0000e9d30400004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9800300004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e41564c8b7424304d8b7608498b1648b84069d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e9150200004d89f64983ee027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424204983ee027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7869d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb069d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee069d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106ad2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe030f85fd040000488d64240841ff74240841ff7424104d8b7424184983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9820300004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e92f0200004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b8e86ad2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be206bd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde069d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be506bd2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd886bd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d8b6c240841ff7424104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8b5d1f1c27f0000e9d60100004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bd384457f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd606cd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@12609,1,@730|32,0,@10414 95,0,@9475 129,0,@10678 158,0,@9475 208,0,@4699 242,0,@10678 271,0,@9475 340,0,@12574 380,0,@10678 409,0,@9475 464,0,@4698 500,0,@9475 555,0,@4699 600,0,@10681 648,0,@10236 693,0,@11889 737,0,@10236 782,0,@10685 870,0,@10236 914,0,@12576 959,0,@10236 1003,0,@10685 1091,0,@10236 1136,0,@12578 1184,0,@10236 1229,0,@10685 1317,0,@10236 1361,0,@12580 1410,0,@10688 1555,0,@10236 1600,0,@12582 1690,0,@10414 1750,0,@9475 1784,0,@10678 1813,0,@9475 1863,0,@4698 1897,0,@10678 1926,0,@9475 1981,0,@4699 2017,0,@9475 2074,0,@4696 2087,0,@12589 2143,0,@10681 2192,0,@10236 2236,0,@12591 2281,0,@10236 2325,0,@10685 2413,0,@10236 2458,0,@12580 2502,0,@10236 2547,0,@10685 2635,0,@10236 2679,0,@12593 2728,0,@10688 2873,0,@10236 2918,0,@12595 3008,0,@10414 3042,0,@9475 3076,0,@11126 3105,0,@9475 3157,0,@4691 3209,0,@5558 3308,0,@9475 3407,0,@11355 3455,0,@10236 3500,0,@10685 3592,0,@11357 3737,0,@10236 3782,0,@12602 5556:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@726|13,0,@4698 5557:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@727|13,0,@4698 5558:D3,832|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9a20200004d89ed4d8b75004d8b76084d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c5d0f0c27f0000498b16ff124989c641564c8b7424084d8b2e4d8b6d004d89f64d8b66084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda04757f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8e6d1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@9836,1,@729|37,0,@10678 77,0,@9475 127,0,@4702 177,0,@9475 229,0,@4696 281,0,@5559 394,0,@10681 442,0,@10236 487,0,@11492 531,0,@10236 576,0,@10685 664,0,@10236 708,0,@11494 757,0,@10688 5559:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11375,1,@728| 5560:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be484857f1c27f00004c8930c3f400000000|@12623,1,@732|47,0,@5561 5561:D9,1384|483b65187305ff5558cd054989d44c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b184d89de4d8b1b4983fb010f855d0200004d8b642408498b5424084d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35dd040000750949c7c603000000eb2b4c3b35c3040000750949c7c603000000eb194c3b35a9040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd686dd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89eb4983fd037d0b48b8704cd1f1c27f0000c34d8b6e084983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e415649be88c5d0f0c27f0000498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486ed2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@12622,1,@731,@9805,@9803,@9797,@9805,@9803,@9797|29,0,@10414 79,0,@9475 299,0,@11514 347,0,@10391 392,0,@11357 543,0,@10236 588,0,@12611 673,0,@10414 694,0,@9475 746,0,@4696 1016,0,@11514 1064,0,@10391 1109,0,@11357 1260,0,@10236 1305,0,@12618 5562:D3,192|483b65187305ff5558cd094c8b70084d89f54d8b364983fe0375464c8b73084d89f44d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe0375204d8b75084d89e54d8b6d084d3bf5750848c7c003000000c348c7c001000000c34d89ee4d8b6d004983fd0175444c8b63084d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03751d4d8b76184d8b6d184d3bf5750848c7c003000000c348c7c001000000c348c7c001000000c3f40000000000|@12640,1,@735| 5563:D3,752|483b65187305ff5558cd0552504c8b742408498b5620488b0424ff124989c64983fe01756d4c8b34244d8b76084d8b2e4983fd017550498b46184c8b742408498b5618ff124989c64983fe03750949c7c505000000eb0749c7c5030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb0a49be2071d2f1c27f0000eb034d8b3641564c8b34244d8b264d89e54983fc03752b4d89f64983fd03750d4d89f6498b4608488d642418c3488d64241848b83871d2f1c27f0000488b5d08ff234c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f80200000049be60bed1f1c27f00004c8970084c8b7424084c8930ff124c8b34244d8b2e4983fd01750d4d89f64d8b760841566a05eb15488d64241848b89071d2f1c27f0000488b5d08ff23f64424080175344c8b6c24084d8b75004d89ed41ff75084c8b6424084d89e54983fc03750c49c7c403000000e9620100004d8b760841554156eb78ff34244c8b742428498b56084c8b34244d89f54983fe0175074c8b742418eb294d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d89ed4d896e0849c70603000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930ff12584883c428c3f60424010f85cf0000004c8b2c244d8b75004d89ed41ff75084d8b66184d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03741b4c8b6c2410415c4c8924244c896c2408483b65187303ff5558eba54d89ee4d8b2e4983fd05755d498b4608488b5c2440488b531049b8e871d2f1c27f0000ff124989c64983fe03750e488d64241849c7c403000000eb494983fe01750949c7c501000000eb054c8b6c2410415c4c8924244c896c2408483b65187303ff5558e93cffffff488d64244848b84872d2f1c27f0000488b5d08ff23488d642408415c415d4c8924244c896c2408483b65187303ff5558e954fefffff400000000000000|@12650,1,@737|136,0,@12641 196,0,@12642 247,0,@11193 302,0,@12644 613,0,@12646 698,0,@12648 5564:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@12647,1,@736| 5565:D3,176|483b65187305ff5558cd0949c7c6010000004d8d67f04c3b65107306ff5550ca09404d89e749c74424f80100000041c64424ff404d8934244d8d6fe04c3b6d107306ff5550ca09104d89ef49c745f803000000498945104d89650849be205357f1c27f00004d8975004d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104989460849bc005557f1c27f00004d89264c892b4c89730848c7c001000000c3f400000000000000|@12659,1,@743|93,0,@5566 142,0,@5568 5566:D4,248|483b65187305ff5558cd0552504c8b342441ff364c8b7424104d8b760841ff36ff3424f6042401754a4c8b2c244d8b75004d89ed41ff7508498b064c8b742428498b5610488b5c2418ff124989c64983fe03750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb0488d64240849c7c6010000004983fe0375224c8b742418498b5e10488b04244c8b442408ff15730000004989c5488d642410eb06415d4883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000000000|@12654,1,@738,@5567| 5567:D3,144|483b65187306ff5558ca0901534150a801756fff30ff70084c8b742408498b06488b542418488b5c2410ff124989c64983fe037506584883c418c3488b0424488b5c24184c8b442410e8b2ffffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048c7c001000000c3f4|@12655,1,@739| 5568:D3,160|483b65187305ff5558cd0552504c8b7424084d8b76104d8b364156f6042401756e4c8b2c244d8b75004d89ed41ff7508498b0641ff76084c8b742420498b5608488b5c2418ff124989c64983fe037529498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c420c3488d642408415d4c892c24483b65187303ff5558eb8c488d64241848c7c001000000c3f4000000|@12656,1,@740| 5569:D3,720|483b65187306ff5558ca09014889da5041504c8b74240841ff364c8b3424498b4618ff124989c641f6c6010f85420100004d8b364d8b2e4983fd010f851d0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b6c24104d892c244c8b2c244d8b6d184d8b6d084d8b55004d89d34983fa057515488d64241848b8a892d1f1c27f0000488b5d08ff234983fb0175274d8b6d104d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d084983fd037513e98c0000004d8b6d084d8b6d004983fd03747e41f6c60175634d8b364d8b364d8b76184d8b76084d8b1e4d89dd4983fb057515488d64241848b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364983fe03741ae984010000488d64241848b8504ad1f1c27f0000488b5d08ff234d89e6e9a1000000488d64241848b89071d2f1c27f0000488b5d08ff234d8d67e84c3b65107303ff55504d89e749c74424f80200000049c7442408010000004c8b7424104d893424488b5424084c8b34244d8b7618488d6424104d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c7450001000000498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304883c408ff2241f6c6010f85bc0000004d8b1e4d8b6e084d8b1b4d8b5b184d8b53084d89d14d8b024983f803752d4d8b52184983fa03750949c7c203000000eb0749c7c2010000004983fa03750d4d8b590849c70303000000eb414d89ca4d8b014983f80175504d8b49104d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375264d89d34d8b5b104d8b5b0849c703030000004d89ee483b65187306ff5558ca0050e956ffffff488d642418eb05488d64241848b8e872d2f1c27f0000488b5d08ff23e9d4fefffff40000000000|@12658,1,@742|143,0,@10915 255,0,@10915 328,0,@10398 357,0,@12644 695,0,@12651 5570:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8d074d2f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8a875d2f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b88076d2f1c27f0000c3f400000000|@12682,1,@744|26,0,@10414 49,0,@12661 69,0,@10414 86,0,@12668 103,0,@10414 114,0,@12675 5571:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561058488d642408ff22f4000000000000|@12683,1,@745| 5572:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@746| 5573:D5,312|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb85b57f1c27f00004c8930ff124c8b342441ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be285c57f1c27f00004c8930ff124c8b342441ff364c8b7424204d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15420000004889c3488d6424104883fb017506584883c410c3584883c410ff251b000000f40000|@12684,1,@749,@5577,@5576|101,0,@5574 210,0,@5575 5574:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@747| 5575:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@748| 5576:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@751| 5577:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@750| 5578:D3,56|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f4000000000000|@12685,1,@752| 5579:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@753| 5580:D8,1816|483b65187306ff5558ca090753415041514152ff30ff70084c8b7010ff7020ff702841f6c6010f8591000000498b0648ba60a2d1f1c27f0000498d5fd8483b5d107305ff5550cd054989df48c743f8040000004c8b7424384c8973184c8b7424284c8973104c8b7424304d89f04c89730849bed86557f1c27f00004c8933ff15cc0600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc28cfd1f1c27f00004d8966104d896e0849c70605000000eb0a49be28cfd1f1c27f000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424104d8b264d89e54983fc1d0f85b20300004d89f64d8b760841ff3641ff760841ff761041ff761841ff76204c8b6c24704d8b75304d89ed4d8b6d68498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334d8d4fd84c3b4d107305ff5550cd084d89cf49c741f8040000004c8b7424084d8971184c8b7424604d8971104c8b7424684d89710849be086757f1c27f00004d893148b8a0efd1f1c27f00004c8b442420ff150b0500004989c641564c8b2c244d89ee41ff75184d89f64d8b76084983fe017505e9ab0100004c8b7424304d8b2e4a8d0c6d010000004883f901750f49bd70d8d0f1c27f0000e9950000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d5c0400000f877a0200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c64508284d89f6498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49baf878d2f1c27f0000e9b40000004d89f44983c42c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d9e0300000f87ac0100004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049bdf878d2f1c27f000048c7c12d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b44247848c7c3030000004c8b4424704c8b4c2418ff15360300004c8b7424084c8b6c24284d8975004c8b34244d89f44c8b6c24204d8975004c8bb424800000004d8b76484c8b6c24104d89750049c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e49bd6086d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c74628010000004c8b5c24384d895e204d89e44d896618488d6424184d896e1049c74608010000004c8b6c24484d892e4883c438e91f010000488da4248800000048b8f8c7d0f1c27f0000488b5d08ff23488da4248800000048b8f8c7d0f1c27f0000488b5d08ff234d89ee4983fe110f859701000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49bd6086d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c74628010000004c8b24244d896620488d6424084c8b24244d896618488d6424084d896e1049c74608010000004c8b6c24184d892e4883c40841564c8b34244c8b6c24104d897500488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b7424184c8930ff12488b442418488b5c24304c8b442408ff15a7000000488b442418488b5c24284c8b4424304c8b4c240849c7c203000000ff157e0000004c8b742438498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424184c8b34244c8930488d642428ff22488d64245048b82079d2f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@12691,1,@758,@5413,@5414,@5316,@5399,@5330|49,0,@11003 115,0,@5581 164,0,@11302 191,0,@11302 541,0,@5583 554,0,@11568 631,0,@9565 813,0,@12687 970,0,@12687 1129,0,@10839 1318,0,@9487 1342,0,@9487 1413,0,@10839 1783,0,@12688 5581:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bcb06657f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@756,@5340|117,0,@5582 5582:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@755,@5316| 5583:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@757,@5316| 5584:D13,952|483b65187305ff5558cd094c8b736841f6c60175454d8b264d8b6e084d8b1c244c3b1df103000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9aa0200004d8b364d8b2e4c3b2d8d03000075064d8b7610eb1048b87810d1f1c27f0000488b5d08ff234983fe057510ff15610300004989c64156e9290100004983fe03750dff15430300004989c64156eb0848c7c001000000c34c8b34244d8b264d89e54983fc0b0f85c30000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15d20200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be906b57f1c27f00004c89336a016a01488b4424104989e0ff1589020000415d488d6424104c892c24483b65187303ff5558e94cffffff488d64240848b81890d1f1c27f0000488b5d08ff23488d64240849c7c601000000eb1e4d89ee488d6424084983fe05750949c7c603000000eb0749c7c6010000004983fe03750b48b8187ad2f1c27f0000c348c7c001000000c34c8b34244d8b2e4d89ec4983fd0d7511488d64240849c7c603000000e90c0100004d89f64d89e54983fc0b0f85c30000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15970100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be506c57f1c27f00004c89336a016a01488b4424104989e0ff154e010000415d488d6424104c892c24483b65187303ff5558e92fffffff488d64240848b81890d1f1c27f0000488b5d08ff23488d64240849c7c601000000eb394d89f64983fd0775244d89f64d8b7608488d6424084983fe01750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c6010000004983fe03750848c7c001000000c348b8607ad2f1c27f0000c341f6c60175454d8b264d8b6e084d8b1c244c3b1da000000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3b00000075094d8b7610e9fbfcffff48b87810d1f1c27f0000488b5d08ff23f400000000000000|@12696,1,@761,@4655,@4655,@5234,@5292,@5234,@5292,@5062,@5062,@4655,@4655|105,0,@10158 141,0,@9991 330,0,@5585 391,0,@10901 457,0,@12692 629,0,@5586 690,0,@10901 791,0,@12694 890,0,@10198 930,0,@9991 5585:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@759| 5586:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@760| 5587:D4,848|483b65187306ff5558ca09074d89d54c8b204c8b70104c8b581841f6c3017541498b3b4d8b5308488b374883fe0175204d8d5ff04c3b5d107306ff5550ca89734d89df49c743f80100000049893beb184d89d3483b65187306ff5558ca097bebb949c7c30100000041f6c3010f85c6000000498b3b4989fa488b3f4883ff01750948c7c703000000eb0748c7c7010000004883ff030f859d0000004d89d34d8b53084d8d5fe84c3b5d107306ff5550ca09774d89df49c743f8020000004d89530849c70307000000498d7fe8483b7d107306ff5550ca097b4989ff48c747f80200000048895f0848c707030000004d8d57e84c3b55107306ff5550ca817b4d89d749c742f80200000049c742080100000049893a498d7fe8483b7d107306ff5550ca017f4989ff48c747f8020000004c8957084c891feb4c4d8d5fe84c3b5d107306ff5550ca09734d89df49c743f80200000049895b0849c70303000000498d7fe8483b7d107306ff5550ca017b4989ff48c747f80200000048c74708010000004c891f4d8d5fd04c3b5d107306ff5550ca81734d89df49c743f80500000049897b20498943184d8943104d894b0849ba907057f1c27f00004d89134d8d57d04c3b55107306ff5550ca817a4d89d749c742f80500000049897a20498942184d896a104d894a0849bd407257f1c27f00004d892a4c8b4424084d8d6fd04c3b6d107306ff5550ca815f4d89ef49c745f80500000049897d20498945184d8945104d894d0849b9987557f1c27f00004d894d00498d5fe0483b5d107306ff5550ca007c4989df48c743f8030000004c8953104c895b084c892b4d8b2c244e8d2c6d010000004983fd01750f49ba00d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d9f0000000f87880000004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca087a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf498b064d8b462041506a0149c7c103000000ff153b00000048c7c001000000c2080048b8f8c7d0f1c27f0000488b5d08ff23f4ffffffffffffff01|@12699,1,@769,@5348|433,0,@5588 489,0,@5590 550,0,@5594 620,0,@9571 825,0,@9487 5588:D5,192|483b65187305ff5558cd0552ff304c8b700841ff36498b46084c8b742410498b5e184d89f64d8b4620ff15b10000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b742410498b4610488b5c24084c8b0424ff15610000004c8b7424104d8b7608498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4000000000000|@12697,1,@762,@4931,@5589| 5589:D4,136|483b65187306ff5558ca09014989c653415041f6c601755f498b0641ff7608488b5c24104c8b442408ff15710000004989c64156488b442408488b5c24184c8b442410e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@10112,1,@763,@5422| 5590:D5,136|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e184d89f64d8b4620ff15800000004989c641564c8b742410498b4610488b5c24084c8b0424ff155b0000004c8b7424104d8b7608498b5650498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4|@12697,1,@764,@4931,@5591| 5591:D5,336|483b65187306ff5558ca09014989deff304c8b6808ff7010488b58184d8b5d004d89dc4983fb030f85850000004d8b6d084d8d77e84c3b75107306ff5550ca08214d89f749c746f8020000004d896e0849c7060300000041564883fb0175054d89c6eb0c4c89c0ff15030100004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b34244c8930488d642408c34983fc010f858d0000004d8b6d084d8b66084d8d77e04c3b75107306ff5550ca08314d89f749c746f8030000004d8966104d896e0849c7060900000041564883fb0175054d89c6eb0c4c89c0ff15640000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d6424104c8b34244c8930488d642408c3488d642410c3f4|@12698,1,@765,@5593,@5592| 5592:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@767| 5593:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@766| 5594:D5,136|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e184d89f64d8b4620ff15800000004989c641564c8b742410498b4610488b5c24084c8b0424ff155b0000004c8b7424104d8b7608498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d642410ff22f4|@12697,1,@768,@4931,@5422| 5595:D4,1200|483b65187306ff5558ca090753415041514152ff30ff7008ff7020ff7028ff70304d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424484d8b264d89e54983fc030f85c40000004d8d4fe04c3b4d107303ff55504d89cf49c741f80300000049bed8c8d0f1c27f00004d8971104c8b7424184d8971084c8b7424284d89314d8d47e84c3b45107306ff5550ca00024d89c749c740f80200000049bea854d1f1c27f00004d8970084c8b7424084d8930488b542438488b44241048c7c301000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424104c8b6c24104d892ee9360100004d89f64983fd0b75184d89f64d8b6e084d89f64d8b76184c8b642408e90202000049c7c6010000004983fe010f85bc0000004d8d4fe04c3b4d107303ff55504d89cf49c741f80300000049bed8c8d0f1c27f00004d8971104c8b7424184d8971084c8b7424284d89314d8d47e84c3b45107306ff5550ca00024d89c749c740f8020000004c8b7424484d8970084c8b7424084d8930488b542438488b44241048c7c301000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424104c8b6c24104d892eeb484d8b2e4d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d6424084c8b6c24184d892e4883c4084156488b442418488b5c24304c8b442408ff15c5010000488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424184c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b24244d89e54d89264c8b6424104d8934244c8b742448498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d89ed4d892e488d642418498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d6424104c8b7424184c897424204883c420ff224983fd0175184983fc01750949c7c503000000eb0749c7c501000000eb664d8b4d004d8b5d0841f6c40175514d8b04244d8b542408498b394883ff0d75364d8b49084d8b004d3bc8750949c7c103000000eb0749c7c1010000004983f90375144d89d44d89dd483b65187306ff5558ca0070eb8c49c7c501000000eb0749c7c5010000004983fd03740949c7c601000000eb384d8b6e184d8b75084d8b364983fe05750949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee935fdfffff4000000000000|@12700,1,@770,@5414|268,0,@9493 326,0,@10468 514,0,@9493 5596:D9,976|488dbc2450ffffff483b7d187306ff5560ca09074d89ce5053415041524983c60241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b742418498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be607f57f1c27f00004c8930ff124c8b742410498b16498d47e0483b45107305ff5550cd044989c748c740f8030000004c8b7424084c8970104c8b34244c89700849bee08057f1c27f00004c8930ff124c8b7424684c8b6c2460498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be508557f1c27f00004c89306a016a016a014889e3ff1512030000ff3424ff7424106a016a016a0148c7c0010000004889e3ff15ed020000ff34244c8b442410ff7424184c8b8c24b80000004c8b9424a80000004c8bb424b0000000ff7424584156ff742460488b842488000000488b5c2440ff15a40200004989c64156ff3424ffb42480000000f6442408010f85d1000000f60424010f85c00000004c8b742408498b064d89f641ff76084c8b742408498b1e4d89f641ff76084c8bb424c80000004c8bac24e00000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424d0000000488bbc24d8000000ffb42488000000ff74243841564155415441534152ffb424b000000041514150574c8b8424d80000004c8b8c24800000004c8b9424e8000000ff15db0100004c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e92bffffff488d642410eb05488d642410ff3424ffb424800000004c8b7424084d89f54983fe0175714c8b34244983fe01488d642408754a488d642440498d47e8483b45107303ff55504989c748c740f8020000004c8b7424284c89700849bed88657f1c27f00004c89305a4c8b7424404c89b424800000004881c480000000ff22488da4248800000048b8687dd2f1c27f0000488b5d08ff234d89ed4d89ee41ff75004d89f641ff7608f6442410010f85bf0000004c8b6c24104d8b75004d89ed41ff7508498b460841ff7610ff15e10000004989c04c8bac24e80000004c8ba424f00000004d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d8966104d896e0849bd688757f1c27f00004d892e48ba487ed2f1c27f00004c8b8c24f00000004c8bac24e000000041564155488b442428488b9c24980000004c8b542410ff1560000000488d6424084c8b6c2408415c488d6424104c8924244c896c2408483b65187303ff5558e9a6feffff488da424a000000048b8687dd2f1c27f0000488b5d08ff23f400000000000000|@12723,1,@786,@5603,@5613,@5615,@5610,@5240,@5322|44,0,@9475 102,0,@5597 168,0,@5598 228,0,@5600 667,0,@5601 711,0,@12705 839,0,@5602 852,0,@12710 954,0,@12705 5597:D4,336|483b65187305ff5558cd05524c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15200100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba854d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d083d1f1c27f0000488b5d08ff23f4|@12701,1,@771,@5062|161,0,@10468 321,0,@10826 5598:D5,400|483b65187305ff5558cd054989c652498b0641ff76084c8b7424084d8b7610498b5660ff124989c64983fe010f854b0100004c8b2c244d8b75004d89ed4d8b6d08488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff153a0100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba854d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d083d1f1c27f0000488b5d08ff23498b065b4883c408ff251d000000f400000000|@12701,1,@772,@5599,@5062|207,0,@10468 367,0,@10826 5599:D7,608|483b65187305ff5558cd0950534c8b6c24084d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15430200004989c64d8b2e4983fd0d0f85ec01000041ff760841ff76104c8b6c24104d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15e30100004989c64d8b2e4983fd0d0f857f0100004d8b6e084d8b66105b48c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f814d1f1c27f000041554154ff1581010000415c415d4989c641f6c6010f840f0100004c89e348c1eb034883cb01f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dceb1b48b8f814d1f1c27f000041554156ff1524010000415e415d4989c441f6c4010f84a50000004d3bf47e524c8b7424084d8b2e4d89f64d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004c8b2c244d897500488d64241048c7c0010000004883c408c3488d6424104c8b34244d8b264d89f64d8b5e08488d6424084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64241848b80815d1f1c27f0000488b5d08ff23488d64241848b80815d1f1c27f0000488b5d08ff23488d64242048b8d083d1f1c27f0000488b5d08ff23488d64241048b8d083d1f1c27f0000488b5d08ff23f400|@12702,1,@773,@4933,@4933,@5062,@5062|237,0,@10021 322,0,@10021 529,0,@10022 550,0,@10022 571,0,@10826 592,0,@10826 5600:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba18ced1f1c27f0000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc18ced1f1c27f000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@12703,1,@774,@5316|70,0,@10983 98,0,@11298 256,0,@11298 316,0,@9487 5601:D3,104|483b65187305ff5558cd054c8b304c8b68084d8b65304983fc01751048b80895d1f1c27f0000488b5d08ff234d8b242449c70424010000004c8b6208498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff22f40000|@12704,1,@775|30,0,@10926 5602:D8,312|483b65187305ff5558cd054c8b72104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d4501000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49be2028d1f1c27f0000eb2f4d8b364d8b2e4c3b2de40000007506498b5e10eb1048b87810d1f1c27f0000488b5d08ff23488b4208ff25ba00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9a00000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d350000007509498b5e10e976ffffff48b87810d1f1c27f0000488b5d08ff23f400|@12709,1,@776,@4650,@4650,@5145,@4650,@4650|109,0,@10158 142,0,@9991 256,0,@10198 296,0,@9991 5603:D8,512|483b65187306ff5558ca0d074989de4889d3504156415141524c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dfe01000075204d8d77f04c3b75107306ff5550ca08114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0841ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9d90000004d8b364d8b2e4c3b2d9a01000075064d8b7610eb15488d64242048b87810d1f1c27f0000488b5d08ff234156498d47e8483b45107306ff5550ca08014989c748c740f8020000004c89400848c700030000006a016a014c8b73084c8b6c24404c8b6424484c8b5b104c8b53184c8b4b204c8b4328488b7b30488b7338488b5340488b4b48488b5b504156ff74243841554154ff742438ff74243841534152415141505756525153488b9c24a80000004c8d4424784c8b8c24a00000004c8b942498000000ff15d5000000488d64243848c7c001000000c2100041f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca08114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0841ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e9ccfeffff488d64242048b87810d1f1c27f0000488b5d08ff23f4000000|@12718,1,@778,@4653,@4653,@5604,@4653,@4653|124,0,@10158 165,0,@9991 449,0,@10198 494,0,@9991 5604:D13,4160|483b65187306ff5558ca0907504150415141524c8b6c24184d89ee41ff75004d89f641ff76084889d8ff15711000004989c64d8b264d89e54983fc070f85eb000000488d64241041ff7608ff742418ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff34244156415541544153415241514150575652515350ffb424a8000000488b84249000000048bba87ed2f1c27f00004c8b8424a00000004c8b8c24980000004c8b942480000000ff159a0f00004989c6488d6424104d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64243048c7c001000000c278004d89ec4983fd050f8519020000488d64241041ff760841ff76106a016a01ffb424b8000000ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff742408ff7424084156415541544153415241514150575652515350488b8424c0000000488b9c24980000004c8d8424880000004c8b8c24b00000004c8b9424a8000000e805feffff488d642410415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742408ff742428ff742428ff742428ffb424c8000000ffb424c8000000ffb424c80000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b4424704889442470488b44243848895c2478488b5c243048898c248000000048899424880000004889b424900000004889bc24980000004c898424a00000004c8b4424284c898c24a80000004c8b4c24204c899424b00000004c8b5424184c899c24b80000004c89a424c00000004c89ac24c80000004c8b34244c89b424d00000004c8b7424084c89b424d80000004c8b7424104c89b424e00000004883c468e9b2fcffff488d6424684d89e54983fc0b0f855603000041ff76084d8b76184d8b66184d89e54d8b6424084d8b24244983fc050f85480200004d89ee4d8b76084d8b2e4983fd050f851f020000498b460841ff7610488b5c2408ff15e70c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bef89b57f1c27f00004c89336a016a01488b4424104989e0ff159e0c0000ff34246a016a01ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742408ff7424084156415541544153415241514150575652515350488b8424e8000000488b9c24980000004c8d8424880000004c8b8c24d80000004c8b9424d0000000e850fbffff488d642410ff34246a016a01ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742408ff7424084156415541544153415241514150575652515350ffb42498000000488b8424d8000000488d9c249000000049b8a87ed2f1c27f00004c8b8c24f80000004c8b9424f0000000ff15fb0a0000488d642410415e488d6424484c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c428c27800488d64243848b81890d1f1c27f0000488b5d08ff23ff742428ffb424b8000000ffb424b80000004c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470488b4c2468488b5c2460488b442458ff34244156415541544153415241514150575652515350ffb424b8000000488b84249000000048bba87ed2f1c27f00004c8b8424b00000004c8b8c24a80000004c8b942480000000ff15f50900004989c6488d6424104d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64241048c7c0010000004883c430c278004983fd0d0f85ed03000041ff760841ff7610488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f814d1f1c27f0000ff15670900004989c641f6c6010f84820300004c3b7424280f8cce020000488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f814d1f1c27f0000ff15060900004989c641f6c6010f846b0200004981fe1f4e000074274c8b7424084d8b364d8b364983fe09750949c7c603000000eb0749c7c6010000004983f602eb0749c7c6010000004983fe030f85230200004c8b7424104983f60241564c8b2c244d89ee4983fd0375224c8b6c24304983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c51f4e000041554c8b6c24104983e5054983fd01746c4d89f64983fe0375614c8b7424284983fe0375564c8b8c24c80000004c8b9424c00000004c8bb424b80000004c8bac24b00000004c8ba424a800000041564155415448b8b87ed2f1c27f000048bbd07ed2f1c27f00004c8b442448ff15fd07000049c7c501000000eb07eb004c8b6c24284c8b6424104d89e64983e4094983fc01750949c7c103000000eb0749c7c1010000004983f1024c8b6424084983fc0375234d89f64983e6054983fe01750949c7c303000000eb0749c7c3010000004983f302eb0749c7c3010000004c8b7424104983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bca854d1f1c27f00004d8d57f04c3b55107306ff5550ca007a4d89d749c742f80100000041c642ff404d89224c8b24244e8d24e5f9ffffff488d6424084983f903750e488d64241049c7c109000000eb0c488d64241049c7c1010000004d0be14983fb03750949c7c305000000eb0749c7c3010000004d0be34d0be64d8d77e04c3b75107306ff5550ca00344d89f749c746f8030000004d8966104d89560849c7060d0000004c8b24244d8b1c244d891a4d89e44d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892eeb26488d642408eb1a488d64244048b80815d1f1c27f0000488b5d08ff23488d6424084c8b74243041564c8b7424084d8b364c8bac24900000004983fd030f85810000004d8b264d89e54983fc0975184d8b76084c8bac24880000004d8b6d004d89f4e9d90100004d89ee4983fe07754f4c8b8c24b80000004c8b9424b00000004c8bb424a80000004c8bac24a00000004c8ba4249800000041564155415448b8b87ed2f1c27f000048bb007fd2f1c27f00004c8b442438ff15c9050000eb00e977010000eb37488d64244048b80815d1f1c27f0000488b5d08ff23488d642420415d415e4d8b264d8965004d8b76084d89750848c7c001000000c278004c8b7424084d8b36ff34244156ff742440ff742440ff742440ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44243848899c2490000000488b5c243048898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424284c898c24c00000004c8b4c24204c899424c80000004c8b5424184c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004881c480000000e9f8f3ffff488d642450e9bdfeffff4983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752e4c8bb424880000004d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9780200004d89f54983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b9c24800000004d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284c8b6c24784d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9eb0100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b5c24704d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284c8b6c24684d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee94b0100004d89f5eb144d89e5483b65187306ff5558ca0060e960ffffff4983fd01750949c7c501000000eb4a4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f903755e4d89d34d8b53084c8b5c24604d3bda750949c7c303000000eb0749c7c3010000004983fb03753749c7c5030000004983fd0375284c8b6c24584d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9ab000000eb144d89e5483b65187306ff5558ca0060e963ffffff4983fe01750949c7c601000000eb544d8b264d8b6e084d8b6424184d8b5424084d89d34d8b124983fa030f85cf0000004d89dc4d8b5c24084c8b6424504d3be3750949c7c403000000eb0749c7c4010000004983fc030f85a300000049c7c6030000004983fe0375254c8b6c24484d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64244048b8307fd2f1c27f0000488b5d08ff234d8b264d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b0000004c8b6c24084d897500e9e5fbffff4d89ee483b65187306ff5558ca0040e9edfefffff4000000|@12719,1,@779,@5607,@5607,@4933,@4933,@5608,@5609,@5234,@5292,@5606,@5062|216,0,@12711 973,0,@5605 1383,0,@12711 1468,0,@10901 1629,0,@12711 1787,0,@10021 1876,0,@10021 2010,0,@9475 2118,0,@12712 2128,0,@12713 2291,0,@10468 2529,0,@10022 2674,0,@12712 2684,0,@12714 2719,0,@10022 4043,0,@12715 5605:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@777| 5606:D3,480|483b65187306ff5558ca090753415041514152a8010f85b5010000ff30ff7008ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff742408ff7424084156415541544153415241514150575652515350488b842488000000488b9c24b00000004c8b8424a80000004c8b8c24a00000004c8b942498000000e836ffffff4989c641564c8b74242041ff76086a016a01ff742458ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742450ff7424084156415541544153415241514150575652515350488b942480000000488b8424a0000000488b9c24980000004c8d8424880000004c8b8c24d80000004c8b9424d0000000ff12488d642410415e415d488d642450498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c27800488d642420488b442408c27800f40000|@10943,1,@783| 5607:D8,888|483b65187306ff5558ca0907505341504151415248c7c001000000ff158f0300004989c04c8b7424104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d6303000075204d8d77f04c3b75107306ff5550ca00114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0041ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9460200004d8b364d8b2e4c3b2dff0200007506498b5e10eb15488d64242848b87810d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004c8b6c24204d896e0849c706070000004156488b5424104c8b4c2448488b44240849c7c201000000ff124989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24204d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b54243048c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c2428498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b2c244d8b75184d89ed498b5560488d64241849c706030000004c8b34244c897424184883c418ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00114d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0041ebb549c7c6010000004983fe017515488d64242848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3c0000007509498b5e10e95ffdffff488d64242848b87810d1f1c27f0000488b5d08ff23f4000000|@12720,1,@780,@4650,@4650,@4650,@4650,@5149|135,0,@10158 176,0,@9991 382,0,@10236 462,0,@10236 825,0,@10198 870,0,@9991 5608:D3,472|483b65187306ff5558ca090753415041514152a8010f85a9010000ff30ff7008ffb424a8000000ffb424a80000004c8bb424a80000004c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c2450488b442448ff742408ff7424084156415541544153415241514150575652515350488b842488000000488b9c24b00000004c8b8424a80000004c8b8c24a00000004c8b942498000000e836ffffff4989c641566a016a01ff742450ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478ff742448ff7424084156415541544153415241514150575652515350488b942480000000488b842498000000488b9c24b80000004c8d8424880000004c8b8c24d00000004c8b9424c8000000ff12488d642410415e415d488d642448498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c27800488d642420488b442408c27800f4000000000000|@10943,1,@781| 5609:D3,632|483b65187306ff5558ca090753415041514152a8010f853b020000ff30ff70086a016a01ffb424c0000000ffb424c0000000ffb424c00000004c8bb424c00000004c8bac24b80000004c8ba424b00000004c8b9c24a80000004c8b9424a00000004c8b8c24980000004c8b842490000000488bbc2488000000488bb42480000000488b542478488b4c2470488b5c2468488b442460ff742410ff742410ff7424104156415541544153415241514150575652515350488b8424a8000000488d9c24980000004c8b8424c80000004c8b8c24c00000004c8b9424b8000000e81effffff488d642418415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eff7424184156ff742410ff742438ff742430ff742430ffb424d8000000ffb424d8000000ffb424d80000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b8424800000004889842480000000488b44243848899c2488000000488b5c243048898c24900000004889942498000000488b5424404889b424a00000004889bc24a80000004c898424b00000004c8b4424284c898c24b80000004c8b4c24204c899424c00000004c8b5424184c899c24c80000004c89a424d00000004c89ac24d80000004c8b34244c89b424e00000004c8b7424084c89b424e80000004c8b7424104c89b424f00000004c8b7424704c897424784883c478ff22488d642470488d642418415e4c8b6c24084d892e49c746080300000048c7c001000000c28000f4|@10943,1,@782| 5610:D4,288|483b65187306ff5558ca090753415041514152a8010f85f00000004c8b30ff7008498b064d8b6e184d8b7620498d5fd0483b5d107306ff5550ca01604989df48c743f8050000004c8b6424204c8963204c8973184c8b6424184c8963104c896b0849bd78a857f1c27f00004c892b4c8b4424304c8b6c24404c8b6424384156ff742418ff7424184155415449c7c10100000049bad880d2f1c27f0000ff15960000004989c641564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e826ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f40000000000|@10112,1,@795,@5327|99,0,@5611 148,0,@12722 5611:D3,144|483b65187305ff5558cd0552504c8b34244c89f041ff76084c8b742410498b5620ff124c8b7424104d8b6e184983fd0375104d89f6498b5610488b442408ff12eb004c8b6c24104d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d895e084c8b1c244d891e488d6424084d89e54d89750048c7c0010000004883c410c3f4|@12721,1,@784| 5612:D3,480|483b65187305ff5558cd014c8b304c8b60084c8b581049c7c5ffffffff4d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49bd6086d1f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d89550849c745000500000049c7c2010000004d8d47f04c3b45107306ff5550ca007c4d89c749c740f80100000041c640ff404d891049c7c1010000004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d890a49c7c101000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c890f4d8d4fe04c3b4d107306ff5550ca807d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890a49c7c1010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89084d8d4ff04c3b4d107306ff5550ca007d4d89cf49c741f8010000004d8901498d47c0483b45107306ff5550ca007e4989c748c740f8070000004c8948304c8950284c8958204c8960184c89681048c74008050000004c8930c3f4000000|@10988,1,@785|66,0,@10839 5613:D4,688|483b65187305ff5558cd014c8b284d89ee4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9eb000000909090e9f9000000909090e9db000000909090e9d3000000909090e90e010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9cf000000909090e9cf000000909090e973000000909090e9cc000000909090e9dc000000909090e95b000000909090e953000000909090e94b000000909090e9c4000000909090e93b000000909090e9bd000000909090e9bd000000909090e923000000909090e9b7000000909090e913000000909090e90b000000909090e9030000009090904983fe17750848c7c003000000c348c7c001000000c34c8b7008498b0641ff7608ff15890100004989c64983fe03750658e9b2feffff488d64240848c7c001000000c3488b4010e99cfeffff48c7c003000000c34c8b701841566a03e9df0000004c8b70104983fe01750848c7c003000000c341566a03eb7948c7c003000000c3488b4008e95efeffff48c7c003000000c34c8b700841566a03eb0848c7c003000000c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750ae81efeffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750ae8d0fdffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175464c8b6c24084d8b75004d89ed41ff7508498b46184c8b7424084983fe03750ae87dfdffff4989c4eb0749c7c401000000415d4c8924244c896c2408483b65187303ff5558ebb3584883c408c3f400000000|@12724,1,@787,@5614| 5614:D6,240|483b65187305ff5558cd014c8b304d89f54983fe2d7509488b4008e9e0ffffff4d89ee4983fd0b7509488b4010e9ceffffff4983fe1d0f85aa0000004c8b70084d8b76084d8b364d8b6e084983fd017502eb0e41f6c501740848c7c001000000c3498b4618ff15ad0000004989c64d8b2e4983fd057563498b4610ff158f0000004989c64d8b2e4983fd0b75444d8b76184d8b76184d8b66084d89e54d8b24244983fc0375224d89ee4d8b76084c3b3554000000750948c7c003000000eb0748c7c001000000eb0748c7c001000000eb0748c7c001000000eb0748c7c0010000004883f002c348c7c001000000c3f400|@12725,1,@788,@4678,@5062,@5062| 5615:D13,1840|483b65187306ff5558ca090750ff33ff7308ff7310ff73204c8b34244c89f74983fe0375364d8b68304d8d77e04c3b75107306ff5550ca80274d89f749c746f8030000004d894e104d896e0849bdf0b657f1c27f00004d892eeb044d8b703041564d8b484041ff7020498b586841ff7028498b50584d8b62084c8bb424980000004d8b6e084d8b7060498d4fd8483b4d107306ff5550ca8c734989cf48c741f8040000004c8961184c8969104c89710849be58b757f1c27f00004c89314d8b60104d8b58184d8b30498b70504d8b68084d8b50384889ff4883ff03753a488b842490000000498d7fe0483b7d107306ff5550ca4f7f4989ff48c747f803000000488947104c89470849b8d8b757f1c27f00004c8907eb04498b78484d8d47884c3b45107306ff5550cace7e4d89c749c740f80e00000049895868498948604989505849897050498978484d8948404d8950384c8b5424104d8950304c8b14244d895028488d6424084c8b14244d895020488d6424104d8958184d8960104d8968084d8930488b542470488b442448488b5c24404c8b7424684c8b6c24604c8b6424584c8b5c245041564155415441534c8b4c24304c8b542430ff124989c6415648bad88ed1f1c27f0000488b442428488b1c24ff15b70500004989c641f6c6010f85cd02000041ff364c8b4c24784c8b54244848b85082d2f1c27f0000488b5c24284c8b442430ff157b0500004989c641564c8b8c24800000004c8b54245048b86882d2f1c27f0000488b5c24284c8b442410ff15470500004989c6415648ba9899d1f1c27f0000488b842488000000488b5c24584c8b44245849b9c899d1f1c27f0000ff150e0500004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8882d2f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424704d8b7668e9c4000000488d6424084c8b34244983fe03488d64240875074c8b742408eb0f488d64242048c7c001000000c258004d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc17750949c7c603000000eb224983fd0b75154d8b6e104d89ee483b65187306ff5558ca0040ebb249c7c6010000004983f6024983fe037531488b4424604c8b442428415949bae082d2f1c27f000048c7c3030000004c8b7424184c897424704883c470ff2503020000488d642420e95cffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dd901000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b20000004d8b364d8b2e4c3b2d750100007506498b5e10eb15488d64243048b87810d1f1c27f0000488b5d08ff23488b442438ff15450100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8b2c244c896810488d6424084c89700848c700030000004c8b7424684d8b76184c8b6c2468498b556049c70603000000ff12e928feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da800000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3e0000007509498b5e10e9f3feffff488d64243048b87810d1f1c27f0000488b5d08ff23f40000000000|@12732,1,@794,@4650,@4650,@5145,@4650,@4650,@5316,@5307,@5388,@5388,@5268|78,0,@5616 178,0,@5617 266,0,@5618 450,0,@10895 501,0,@12727 545,0,@12728 576,0,@10952 604,0,@10954 703,0,@10966 747,0,@10967 893,0,@10236 981,0,@10236 1069,0,@10236 1113,0,@12729 1354,0,@12731 1489,0,@10158 1530,0,@9991 1775,0,@10198 1820,0,@9991 5616:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@789| 5617:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@790| 5618:D4,176|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849beb8b857f1c27f00004c8930ff124c8b342441ff364c8b7424104d8b7608498b564848c7c001000000ff124889c34883fb017506584883c410c3584883c410ff251f000000f4000000000000|@12726,1,@792,@5620|101,0,@5619 5619:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@791| 5620:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@793| 5621:D4,232|483b65187306ff5558ca09035341504151a8010f85c10000004c8b30ff70084d8b761041f6c601755d498b0648ba60a2d1f1c27f0000498d5fd8483b5d107305ff5550cd054989df48c743f8040000004c8b7424184c8973184c8b7424084c8973104c8b7424104d89f04c89730849bec8ba57f1c27f00004c8933ff157f0000004989c6eb0a49bea854d1f1c27f00004156488b442408488b5c24204c8b4424184c8b4c2410e855ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f4|@10112,1,@798,@5330|46,0,@11003 112,0,@5622 136,0,@10468 5622:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bca0bb57f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@797,@5340|117,0,@5623 5623:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@796,@5316| 5624:D3,272|483b65187306ff5558ca09074989c65341504151415241f6c6010f85de000000498b0641ff7608488b542420488b5c24304c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b44243841564155415441534152415141504c8b4424504c8b4c24484c8b542440ff124989c641564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b442448488b5c24684c8b4424604c8b4c24584c8b542450e833ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c24000488d64242048c7c001000000c24000f40000|@10112,1,@799| 5625:D4,368|483b65187306ff5558ca09035341504151a8010f85450100004c8b30ff70084d8b0641ff760841ff76104c8b742428498b5e684d8d4fd84c3b4d107306ff5550ca08014d89cf49c741f8040000004c8b34244d8971184c8b7424184d8971104c8b7424204d89710849bed0be57f1c27f00004d893148b860a3d1f1c27f0000ff15030100004989c64c8b6c24084d8975004983fe01750e488d64241049c7c601000000eb514d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c4084983fe01751758488b5c24104c8b4424084159488d642410e9edfeffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e8d1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@12733,1,@801,@5342|106,0,@5626 119,0,@11010 5626:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@800,@5316| 5627:D3,336|483b65187306ff5558ca090753415041514152a8010f851f0100004c8b30ff700841ff3641ff7608498b4618488b542430488b5c24404c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b44244841564155415441534152415141504c8b4424604c8b4c24584c8b542450ff124989c54c8b34244d892e488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8f7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c24000488d64242048c7c001000000c24000f4000000000000|@10112,1,@802| 5628:D7,920|483b65187306ff5558ca09074d89d6505341504983c60241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b742410498b16498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be80c457f1c27f00004c8930ff124c8b742408498b164c8b742468498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b34244c89700849be00c657f1c27f00004c8930ff124c8b7424604c8b6c2458498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bec8c757f1c27f00004c89306a016a016a014889e3ff15d3020000ff3424ff742410ff742420ff742448f6042401753f4c8b3424498b064d89f641ff7608488b9c24a00000004c8b8c24980000004c8b4424404c8b542418ff1588020000415d4c892c24483b65187303ff5558ebbb488d642408ff742448f60424010f85a00000004c8b3424498b064d89f641ff7608488bb424a00000004c8bb424900000004c8bac24a80000004c8ba424980000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468415641554154ff742428ff742440415341524151415057ffb424a80000004989f1488b9c24a80000004c8b8424a00000004c8b942498000000ff15d0010000415d4c892c24483b65187303ff5558e956ffffff488d642438ff742418f6042401753b4c8b2c244d8b75004d89ed41ff750841ff76104c8b342441ff364c8b34244d89f541ff364d89ed498b45184d89ed4d8b75204d89ed41ff7530eb0f488d64242848c7c001000000c2480041f6c60175294d8b264d8b6e084d8b1c244983fb0175074d8b542408eb1b4d89ee483b65187306ff5558ca0140ebd149ba089ed1f1c27f00004c8bac24880000004c8ba424900000004d8d77e04c3b75107306ff5550ca01344d89f749c746f8030000004d8966104d896e0849bd50c957f1c27f00004d892e48ba487ed2f1c27f00004c8b8c24900000004c8bac248000000041564155488b5c244049c7c003000000ff15b20000004c8b2c244d89ee4983fd017515488d64245048b80895d1f1c27f0000488b5d08ff234d89f64d8b36488d64240849c706010000004c8bb42490000000498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b34244c8930488d642408ff124c8b34244c8b6c24084d897500488d642410415d4c892c24483b65187303ff5558e970fefffff40000|@12740,1,@807,@5603,@5634,@5633,@5322|34,0,@9475 92,0,@5629 159,0,@5630 219,0,@5631 646,0,@10983 707,0,@5632 720,0,@12710 786,0,@10926 5629:D4,336|483b65187305ff5558cd05524c8b68084d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff15200100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba854d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d083d1f1c27f0000488b5d08ff23f4|@12734,1,@803,@5062|161,0,@10468 321,0,@10826 5630:D5,400|483b65187305ff5558cd054989c652498b0641ff76084c8b7424084d8b7610498b5660ff124989c64983fe010f854b0100004c8b2c244d8b75004d89ed4d8b6d08488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000ff153a0100004989c64d8b2e4983fd0d0f85e20000004d8b6e084d8b76104d89f44983e4094983fc01750949c7c203000000eb0749c7c2010000004983f2024983e6034983fe01750949c7c603000000eb0749c7c6010000004983f60249bba854d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d891c244c8b1c244d8b5b08488d6424084e8d1cddf9ffffff4983fa03750949c7c209000000eb0749c7c2010000004d0bda4983cb054d0bde4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d89750048c7c001000000c3488d64240848b8d083d1f1c27f0000488b5d08ff23498b065b4883c408ff251d000000f400000000|@12734,1,@804,@5599,@5062|207,0,@10468 367,0,@10826 5631:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49ba18ced1f1c27f0000e9b60000004d89eb4983c3564c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bc18ced1f1c27f000048c7c157000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@12735,1,@805,@5316|70,0,@10983 98,0,@11298 256,0,@11298 316,0,@9487 5632:D8,312|483b65187305ff5558cd054c8b72104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d4501000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750c49be2028d1f1c27f0000eb2f4d8b364d8b2e4c3b2de40000007506498b5e10eb1048b87810d1f1c27f0000488b5d08ff23488b4208ff25ba00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9a00000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d350000007509498b5e10e976ffffff48b87810d1f1c27f0000488b5d08ff23f400|@12709,1,@806,@4650,@4650,@5145,@4650,@4650|109,0,@10158 142,0,@9991 256,0,@10198 296,0,@9991 5633:D6,1104|483b65187306ff5558ca0907534150415141524c8b700841f6c6010f851d0300004d8b3641ff3641ff7610ff7010ff70204c8b7424184d8b760841ff364d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d5fe84c3b5d107306ff5550ca00404d89df49c743f8020000004d8973084c8b34244d8933488d64240849bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00284d89f749c746f80100000041c646ff404d892e4c8b6c24384e8d2cedf9ffffff4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d8974240849c704240d00000049c7c5ffffffff4d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e49bd6086d1f1c27f00004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d89750849c745000500000049c7c6010000004d8d4ff04c3b4d107306ff5550ca00784d89cf49c741f80100000041c641ff404d893149c7c6010000004d8d57f04c3b55107306ff5550ca007a4d89d749c742f80100000041c642ff404d893249c7c6010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89304d8d77e04c3b75107306ff5550ca003f4d89f749c746f8030000004d8946104d894e084d89164d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d893249c7c1010000004d8d77f04c3b75107306ff5550ca003e4d89f749c746f80100000041c646ff404d890e4d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f8010000004d89314d8d77c04c3b75107306ff5550ca003e4d89f749c746f8070000004d894e304d8956284d895e204d8966184d896e1049c74608050000004c8b2c244d892e41564c8b7424284d8b2e49c7c601000000eb15488d64242048b86884d2f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44c8b6c24104d8975004983fe017528488b44244848c7c3030000004c8b4424384c8b4c242049ba0085d2f1c27f0000ff15b4000000eb00488b442408488b5c24484c8b442420ff1595000000488b442408488b5c24384c8b4424484c8b4c242049c7c201000000ff156c0000004c8b2c244d89ee4c8b6424184d892c24488b542430498d47e8483b45107306ff5550ca04404989c748c740f8020000004d89f64c897008488d6424084c8b34244c8930488d6424084883c440ff22f40000000000|@12758,1,@825,@5413,@5414,@5316|251,0,@10468 397,0,@10839 837,0,@12736 877,0,@9475 950,0,@12739 5634:D15,2120|483b65187306ff5558ca090750534150415141524c8b7424204d8b6e1041ff75004d89f64d89f441ff364d89e44d8b7424084d89e44d89e541ff7424184d89ed41ff752849bda854d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c2449c7c51f4e00004e8d1cedf9ffffff4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745000d00000041554156f60424010f85b30000004c8b3424498b064d89f641ff76084c8bb424b80000004c8bac24b00000004c8ba424a80000004c8b9c24a00000004c8b9424980000004c8b8c24900000004c8b842488000000488bbc2480000000488b742478488b542470ff742438415641554154ff7424484153415241514150575652ff742478ff742478488b9c24c00000004c8b8424b80000004c8b8c24a00000004c8b9424b0000000ff155d070000415d4c892c24483b65187303ff5558e943ffffff488d642408ff742458f60424010f85a40000004c8b2c244d8b75004d89ed41ff75084d8b76104d8b364d8b76284983fe017515488d64246048b80895d1f1c27f0000488b5d08ff234d8b3641ff364c8b2c24498b450041ff76104c8b742440498b1eff15d90600004c8b34244d8b364983fe0175054989c6eb0c4c89f3ff15b60600004989c64c8b2c244d897500488d6424084c8b342449c70601000000488d642408415d4c892c24483b65187303ff5558e952ffffff488d6424084c8b742420498b5e1848bad88ed1f1c27f0000488b0424ff15580600004989c641f6c6010f852104000041ff364d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424184d8966204c8b6424404d8966184c8b6424484d8966104d896e0849c7061900000041564c8b9424b800000048b8709cd1f1c27f0000488b1c244c8b4424104c8b4c2440ff15ae0500004989c641564c8b7424384d8b2649bda854d1f1c27f00004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20b1d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bd9885d2f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204c8b4c24284d894d184d8955104d895d084d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0848c7031d0000004d89f64d8b46184c8b9424c000000048b81886d2f1c27f00004c8b4c2448ff15940400004989c6415648ba9899d1f1c27f0000488b9c24c80000004c8b8424c8000000488b44245049b9c899d1f1c27f0000ff15580400004889c2488b442418ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be3886d2f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424484d8b7668eb0f488d64245048c7c001000000c2580041f6c60175454d8b264d8b6e084d8b1c244c3b1de301000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9bf0000004d8b364d8b2e4c3b2d7f0100007506498b5e10eb15488d64246848b87810d1f1c27f0000488b5d08ff23488b442408ff154f0100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24284c8968184c8b2c244c896810488d6424104c89700848c700030000004c8b6c24384d8b75184d89ed498b556049c706030000004c8b7424584c89b424b00000004881c4b0000000ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3b0000007509498b5e10e9e6feffff488d64246848b87810d1f1c27f0000488b5d08ff23f40000|@12756,1,@819,@4650,@4650,@5145,@4650,@4650,@5307,@5388,@5388,@5268,@5647,@5648,@5636|70,0,@10468 425,0,@10926 566,0,@10895 718,0,@10971 761,0,@10468 806,0,@11094 851,0,@12741 1001,0,@12743 1027,0,@10952 1058,0,@10954 1157,0,@10966 1201,0,@10967 1347,0,@10236 1435,0,@10236 1523,0,@10236 1567,0,@12744 1759,0,@10158 1800,0,@9991 2058,0,@10198 2103,0,@9991 5635:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@12742,1,@808| 5636:D29,4328|488dbc2460ffffff483b7d187306ff5560ca090753415041524c8b28ff7008ff701041ff75004d8b750841ff75184d8d5fe84c3b5d107306ff5550ca01424d89df49c743f80200000049c743080100000049890349c7c5010000004d8d47f04c3b45107306ff5550ca006a4d89c749c740f80100000041c640ff404d892849bd20b1d1f1c27f00004d8d57f04c3b55107306ff5550ca006b4d89d749c742f80100000041c642ff404d892a49bdb80bd1f1c27f00004d8d67f04c3b65107306ff5550ca006f4d89e749c74424f80100000041c64424ff404d892c2449bdb80bd1f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fc84c3b6d107306ff5550ca805f4d89ef49c745f80600000049897d284d8945204c8b4424104d8945184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00624d89e749c74424f80200000049c7442408010000004d892c244d8d6fd04c3b6d107306ff5550ca00524d89ef49c745f8050000004c8b5c24104d895d204c8b5c24284d895d184c8b5c24304d895d104d89650849c745001900000041554d8b6e084d8b71184d897500498d47e0483b45107303ff55504989c748c740f8030000004c8b34244c8970104c8b7424284c89700849be58ea57f1c27f00004c89306a016a016a014889e3ff15cb0f0000ff34244c8b742410ff7424184c8bac24d80000004983c50241557115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8b8424d80000004c8b8c24d00000004c8b9424c80000004156ff742408488b442450488b5c2468ff15640f00004989c64156f60424010f85970000004c8b34244d8b364c8b2c244d8b6d084983fd017502eb7e488b042448c7c303000000ff15250f00004989c64156488b0424ff150e0f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c70607000000eb0a49beb80bd1f1c27f00004c8bac24c80000004d8975004c8bb424d80000004d8b6e304c8ba424c00000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24104d895e184d8966104d896e0849bde0eb57f1c27f00004d892e41564c8bb424e000000041ff76404c8bb424e800000041ff76204c8bb424f0000000498b4e684c8bb424f000000041ff76284c8bb424f8000000498b76584c8bb424900000004d8b66084c8bb424880000004d8b6e084c8bb424f80000004d8b7660498d57d8483b55107306ff5550ca42704989d748c742f8040000004c8962184c896a104c89720849be60ec57f1c27f00004c89324c8bb424f80000004d8b66104c8bb424f80000004d8b5e184c8bb424f80000004d8b364c8bac24f8000000498b7d504c8bac24f80000004d8b6d084c8b9424f80000004d8b52384c8b8424f8000000488b9c24d80000004d8d4fd84c3b4d107306ff5550cace7d4d89cf49c741f804000000488b44243849894118498959104d89410849b8e0ec57f1c27f00004d89014d8d47884c3b45107306ff5550cac67e4d89c749c740f80e000000498948684989506049897058498978504d8948484c8b4c24104d8948404d8950384c8b5424184d8950304c8b14244d895028488d642408415a488d6424104d8950204d8958184d8960104d8968084d8930488b9424b0000000488b9c24900000004c8bb424a80000004c8bac24a00000004c8ba42498000000ff742460415641554154488b4424284c8b4c24784c8b542478ff124989c64156f6442448010f85350400004c8b742448498b0648ba60a2d1f1c27f00004c8bb424d80000004c8bac24e0000000498d5fd8483b5d107306ff5550ca05604989df48c743f8040000004c896b184c8973104c8b7424684c89730849be40f057f1c27f00004c89334c8b442468ff15f80b00004989c6415648bad88ed1f1c27f0000488b442408488b1c24ff15d20b00004989c641f6c6010f859f03000041ff364c8b9424f800000048b86882d2f1c27f0000488b5c24704c8b4424104c8b4c2478ff15930b00004989c6415648c7c001000000ff15790b00004989c048ba8048d1f1c27f00004c8b8c2400010000488b44241048c7c3214e000049c7c201000000ff15430b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be98b0d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba9899d1f1c27f0000488b9c24080100004c8b842408010000488b84248800000049b9c899d1f1c27f0000ff15460a00004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed887d2f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424784d8b7668e9b3050000e9a40500005b4c8bb4248800000049891e488b0424ff15e30700004989c6488d642408415648bad88ed1f1c27f0000488b9c2480000000488b0424ff15b50700004989c641f6c6010f859c03000041ff364c8b9424e800000048b83888d2f1c27f0000488b5c24404c8b4424084c8b4c2468ff15760700004989c6415648c7c001000000ff155c0700004989c048ba8048d1f1c27f0000488b8424900000004c8b8c24f000000048c7c3214e000049c7c201000000ff15230700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5088d2f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba9899d1f1c27f0000488b9c24f80000004c8b8424f8000000488b44247849b9c899d1f1c27f0000ff15290600004889c2488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89bd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8888d2f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080700000049c7060100000041564c8b7424604d8b7668eb0f488d64247848c7c001000000c2700041f6c60175454d8b264d8b6e084d8b1c244c3b1dbd03000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9af0000004d8b364d8b2e4c3b2d590300007506498b5e10eb15488d64247848b87810d1f1c27f0000488b5d08ff23488b442438ff15290300004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24504c896818415d4c8968104c89700848c700030000004c8b7424584d8b76184c8b6c2458498b556049c70603000000ff124883c470e9e0feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1d8f02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64247848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d250200007509498b5e10e9f6feffff488d64247848b87810d1f1c27f0000488b5d08ff235b4883c408e953faffff41f6c60175454d8b264d8b6e084d8b1c244c3b1ddb01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9ae0000004d8b364d8b2e4c3b2d770100007506498b5e10eb18488da4249000000048b87810d1f1c27f0000488b5d08ff23488b442450ff15440100004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24684c896818415d4c8968104c89700848c700030000004c8b7424704d8b76184c8b6c2470498b556049c70603000000ff12e9e1feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dae00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4249000000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d410000007509498b5e10e9f7feffff488da4249000000048b87810d1f1c27f0000488b5d08ff23f40000000000|@12757,1,@822,@4650,@4650,@5145,@4650,@4650,@4650,@4650,@5145,@4650,@4650,@5307,@5057,@5149,@5388,@5268,@5650,@5307,@5057,@5149,@5388,@5268,@5330,@5400,@5156,@5649,@5322|128,0,@11094 173,0,@9948 221,0,@9948 483,0,@5637 544,0,@9475 772,0,@9948 858,0,@5638 1008,0,@5639 1152,0,@5640 1364,0,@11003 1434,0,@5645 1463,0,@10895 1512,0,@12728 1564,0,@10384 1680,0,@10236 1724,0,@11090 1802,0,@10952 1836,0,@10954 1935,0,@10966 1979,0,@10967 2125,0,@10236 2206,0,@10236 2292,0,@10236 2336,0,@12749 2465,0,@10895 2517,0,@12751 2569,0,@10384 2688,0,@10236 2732,0,@12752 2810,0,@10952 2841,0,@10954 2940,0,@10966 2984,0,@10967 3130,0,@10236 3211,0,@10236 3297,0,@10236 3341,0,@12754 3533,0,@10158 3574,0,@9991 3816,0,@10198 3861,0,@9991 3975,0,@10158 4019,0,@9991 4260,0,@10198 4308,0,@9991 5637:D4,344|483b65187306ff5558ca0d014989d64989c44d8b682041f6c50175284d8b55004d8b5d084d8b0a4983f90175064d8b4a08eb1b4d89dd483b65187306ff5558ca0070ebd249b9089ed1f1c27f00004d8b2c244e8d2c6d010000004983fd01750f49baa086d2f1c27f0000e9b60000004d89eb4983c34e4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05b10000000f87950000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c51049bca086d2f1c27f000048c7c14f000000498d74240849d1ed4b8d3c2a48d1e9f3a4418062ffbf498b46084d8b461048c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@12747,1,@809,@5316|70,0,@10983 98,0,@12746 256,0,@12746 316,0,@9487 5638:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@810| 5639:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@811| 5640:D5,312|483b65187305ff5558cd055249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742408498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849be50ee57f1c27f00004c8930ff124c8b342441ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bec0ee57f1c27f00004c8930ff124c8b342441ff364c8b7424204d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15420000004889c3488d6424104883fb017506584883c410c3584883c410ff251b000000f40000|@12748,1,@814,@5644,@5643|101,0,@5641 210,0,@5642 5641:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@812| 5642:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10989,1,@813| 5643:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@816| 5644:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@815| 5645:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bc18f157f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@818,@5340|117,0,@5646 5646:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@817,@5316| 5647:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@820| 5648:D3,120|483b65187305ff5558cd09a801755f4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e4156e8c1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@821| 5649:D4,208|483b65187306ff5558ca09074989c65341504151415241f6c6010f859c000000498b0641ff7608488b5c24384c8b4424306a01ff742428ff742428ff742428ff74242849c7c10100000049baf89ed1f1c27f0000ff158e0000004989c641564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e875ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f400000000|@10112,1,@824,@5327|76,0,@10987 5650:D3,104|483b65187305ff5558cd094989c64889d841f6c601754941ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3c3f4000000000000|@10943,1,@823| 5651:D4,160|483b65187306ff5558ca09074989c65341504151415241f6c6017573498b0641ff7608488b5c24204c8b4424184c8b4c24104c8b542408ff157b0000004989c64156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e8a0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4000000|@10112,1,@828,@5652| 5652:D4,304|483b65187306ff5558ca09074d89c641514152ff30ff7008ff7010488b40184d8d47e04c3b45107306ff5550ca09404d89c749c740f803000000498958104d89700849be58f657f1c27f00004d893048bba88ad2f1c27f0000ff15e90000004989c54c8b34244d8b264983fc01755a4d89f34d8b63084c8b5424204d89d64983fa01750a4d89de488d642408eb39488d6424084d89f64d8b364d8b5e084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70609000000eb084d89f6488d642408498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b6424104c8960204c8968184c8970104c8b34244c897008488d6424084c8b34244c8930488d6424104883c408c3f400000000|@12762,1,@829,@5108|68,0,@5653 81,0,@12760 5653:D3,232|483b65187305ff5558cd054c8b70184d8b66084d89e54d8b24244983fc0375564c8b5a104d89dc4d8b5b084d8b1b4983fb03750949c7c303000000eb0749c7c3010000004983fb03752c4d8b75084d89e54d8b6d084d8b6d084d3bf5750949c7c603000000eb0749c7c6010000004983fe03756ceb6b4d89ec4d8b6d004983fd0175504c8b5a104d89dd4d8b5b084d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375264d89e64d8b76184d8b6d084d8b6d184d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037401c3488b4208c3f400|@12759,1,@826| 5654:D3,16|483b65187305ff5558cd01c3f4000000|@12761,1,@827| 5655:D4,1048|483b65187306ff5558ca090753415041514152a80175594c8b30ff700841ff3641ff760841ff762041ff76284d8d5fe04c3b5d107303ff55504d89df49c743f80300000049bed8c8d0f1c27f00004d8973104c8b7424084d8973084c8b7424184d893349c7c2010000004c8b3424eb0d488d64242048c7c001000000c341f6c60175364d8b66084d89d54983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89e64d89ea483b65187306ff5558ca004cebc44c8b7424404983fe0175504d8d47e84c3b45107306ff5550ca00084d89c749c740f80200000049bea854d1f1c27f00004d8970084c8b34244d8930488b5424384d89d948c7c00100000048c7c303000000ff124989c6e90c01000049c7c5ffffffff4d8d77f04c3b75107306ff5550ca002c4d89f749c746f80100000041c646ff404d892e49bd6086d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8965104d89750849c745000500000049c7c4010000004d8d77f04c3b75107306ff5550ca003c4d89f749c746f80100000041c646ff404d89264d8d67d84c3b65107306ff5550ca006c4d89e749c74424f80400000049c7442418030000004d895424104d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742440498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b6c24104c89e84d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f80200000049c74608010000004c8b24244d89e54d89264c8b6424104d8934244d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d89ed4d892e4156488b5c24384c8b442410ff159d000000488b542430498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c897008488d6424084c8b7424184c8930ff12488b442420488b5c24404c8b4424384c8b4c24304c8b542428e819fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642448c3f400|@10112,1,@845,@5414|70,0,@9493 151,0,@9475 225,0,@10468 320,0,@10839 5656:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8b76184d8b76084d8b264d89e54983fc05751048b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@831|48,0,@10915 5657:D4,248|483b65187306ff5558ca09074989c54989de41504151415241f6c5010f85c100000041f6c6010f85b0000000498b450041ff7508498b1e41ff76084c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4424404c8b4c24384c8b542430ff15a40000004989c641564c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b442430488b5c24284c8b4424484c8b4c24404c8b542438e855ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c22000488d642418eb05488d64241848c7c001000000c22000f40000000000|@12767,1,@834,@5658| 5658:D6,728|483b65187306ff5558ca090753415041514152ff30ff7008ff7010ff7020488b402849c7c6010000004c8b6c240841f6c50175364d8b5d084d89f44983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156ff158e0200004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060100000041564c8b742448498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24484d896e184c8b6c24284d896e104c8b2c244d896e08488d64240849c7060b0000004156488b44241848bbd88bd2f1c27f0000ff156a0100004c8b5424704c8b742468ff3424ff7424104156488b5c24504c8b4424484c8b4c2458ff153a0100004989c5488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e41564c8b7424484983fe030f858f000000488b542440498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124c8b742420498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff12eb354c8b742420498b5618498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124c8b34244c89f04c8b6c24084d8975004889c0488d642438c22000f40000|@12768,1,@835,@5662,@5119,@5661|72,0,@9475 384,0,@12764 5659:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be600158f1c27f00004c8930c3f400000000|@12766,1,@833|47,0,@5660 5660:D3,160|483b65187305ff5558cd054c8b70184c8b6a084d8b5d184d8b2b4e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec730848c7c003000000c348c7c001000000c34983fe017d0848c7c003000000c348c7c001000000c3f400000000000000|@12765,1,@832| 5661:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@840| 5662:D6,928|483b65187306ff5558ca090753415041514152a8010f85730300004c8b28ff700841ff75004d8b750841ff751041ff75186a016a0141f6c6010f85a2000000498b0648ba60a2d1f1c27f0000498d5fd0483b5d107305ff5550cd054989df48c743f8050000004c8b7424484c8973204c8b7424304c8973184c8b7424384d89f04c8973104c8b7424404c89730849beb80658f1c27f00004c8933ff15280300004989c54c8b6424684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004c89342448c744240801000000eb124c8b7424684c89342448c744240803000000ff3424ff7424104d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849c7060100000041564c8b742450498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d5fe84c3b5d107306ff5550ca00404d89df49c743f8020000004d8973084c8b34244d8933488d64240849c7c5ffffffff4d8d77f04c3b75107306ff5550ca00284d89f749c746f80100000041c646ff404d892e49bc6086d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d8974240849c70424050000004c8b7424704d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77c04c3b75107306ff5550ca00384d89f749c746f80700000049c746300100000049c74628010000004d895e204c8b1c244d895e18488d6424184d8966104d896e084c8b2c244c89e84d892e4156488b5c24304c8b442418ff15f5000000488b442408488b5c24284c8b4424304c8b4c241849c7c203000000ff15cc000000488b542450498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff124c8b34244c8b6c24104d8975004c8b7424604c8b6c24584c8b642450415641554154488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8a3fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642448c21800488d64242048c7c001000000c21800f40000|@10112,1,@839,@5413,@5414,@5330|68,0,@11003 143,0,@5663 480,0,@10839 5663:D4,224|483b65187306ff5558ca0d014989c64d89c54c8b62204d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849bac80758f1c27f00004d8914244d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62184d8960104c8b62104d89600849bc300858f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@838,@5340|74,0,@5664 173,0,@5665 5664:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@836| 5665:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@837,@5316| 5666:D4,248|483b65187306ff5558ca090753415041514152a8010f85cf0000004c8b30ff70084d8b761041f6c6017566498b0648ba60a2d1f1c27f0000498d5fd0483b5d107305ff5550cd054989df48c743f8050000004c8b7424204c8973204c8b7424084c8973184c8b7424104d89f04c8973104c8b7424184c89730849beb00958f1c27f00004c8933ff15840000004989c6eb0a49bea854d1f1c27f00004156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e845ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f4|@10112,1,@844,@5330|48,0,@11003 123,0,@5667 147,0,@10468 5667:D4,224|483b65187306ff5558ca0d014989c64d89c54c8b62204d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849bac00a58f1c27f00004d8914244d8b5b68498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62184d8960104c8b62104d89600849bc280b58f1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@843,@5340|74,0,@5668 173,0,@5669 5668:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@841| 5669:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@10997,1,@842,@5316| 5670:D63,9632|483b65187306ff5558ca0d0152505341504c8b742410498b064d89f6498b5e084d89f64d8b4610ff15632700004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849bd283358f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff15ca2600004989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b6c24104d89ee4d896c24184c8b6c24184c89e84d896c24104c8b5c24204d89dd4d895c240849bb783358f1c27f00004d891c24415449c7c4010000004d8d5ff04c3b5d107306ff5550ca01704d89df49c743f80100000041c643ff404d89234d8d67d84c3b65107306ff5550ca01684d89e749c74424f8040000004d89ed4d8b55204d895424184d89ed4d8b55104d895424104d89ed4d8b55184d8954240849baf03358f1c27f00004d8914244d89234d8d47e84c3b45107306ff5550ca01604d89c749c740f8020000004d89ed4d89eb4d89680849bd503d58f1c27f00004d89284d8d67e84c3b65107306ff5550ca01494d89e749c74424f8020000004d89db4d89dd4d895c240849bb503e58f1c27f00004d891c244154498d77e8483b75107306ff5550ca01614989f748c746f8020000004d89ed4d8b65084d89e34c89660849bc507c58f1c27f00004c89264d89f64d8b264c8d15080000004f8d54a2fc41ffe2e9f3000000909090e9f1010000909090e9db020000909090e9f2050000909090e9dc070000909090e982090000909090e9df0a0000909090e9090b0000909090e92f0b0000909090e9580b0000909090e91f0c0000909090e9b60c0000909090e9a90d0000909090e9750f0000909090e918110000909090e918120000909090e947130000909090e92e140000909090e925150000909090e9a0150000909090e955160000909090e9f5160000909090e9dc170000909090e9f2170000909090e9c6180000909090e93e190000909090e9351a0000909090e9d11a0000909090e9251b0000909090e9291d0000909090e98b1e00009090904d89f64d8b760841ff3641ff7608498b461041ff7620ff152a2400004989c64156488b442408ff15122400004989c64156488b442420ff15fa2300004889c34883fb0175035beb12488b0424ff15dc2300004889c3488d6424084883fb017507584883c408eb0f488b0424ff15b5230000488d6424104d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24184d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8973084c8b7424104c8933ff15592300004c8b6c24204d89ee4983fd0175054989c6eb0c4c89f3ff15352300004989c64c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c440c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084d89dd4c892b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15572200004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15332200004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b56084d8b62084d89e14d89ce4d8b014983f8330f85c60100004d8b490841f6c10175424d8b490841f6c101752f4d8b49084983f901751c4d8b4a184983f903750949c7c103000000eb0749c7c101000000eb0749c7c101000000eb0749c7c101000000eb0749c7c1010000004983f9030f85690100004d8b66084d8b34244d8b6424084d8b0c244d8b2241ff72204d8b52104d8b024d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d89420849c7021b00000041524d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004c8b4424104d8902498d5fe8483b5d107306ff5550ca007e4989df48c743f8020000004c8953084c891b4d8d5fe84c3b5d107306ff5550ca08524d89df49c743f80200000049c74308010000004d890b4d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15892000004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15652000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d8b3241ff72204d8b52104d8b0a4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7021b00000041524d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24104d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15431f00004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff151f1f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b7608498b0e498b7e0841ff76184d8b4e204d8b76104d8b1e4d8d67d04c3b65107306ff5550cac22a4d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d77c84c3b75107306ff5550cac23a4d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049baf08358f1c27f00004c89e2488b5c24084989d848895a204c89721848894a104d89ed4c896a084c891241806424ffbf49bdd08458f1c27f00004d89f24989722849897a204d89c04d8942184d8962104d894a084d892a418066ffbf4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d89660849c706090000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d895c240849c704241b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104c89f34983fe0175054989c6eb09ff15fa1c00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b76084d8b264d8b5e084d8b6e1041ff76184d8b56204d8b4e284d8d77f04c3b75107306ff5550ca003f4d89f749c746f801000000488b7c240849893e498d5fe8483b5d107306ff5550ca007f4989df48c743f8020000004c8973084c890349c7c6010000004d8d47f04c3b45107306ff5550ca087e4d89c749c740f80100000041c640ff404d89304d8d77e84c3b75107306ff5550ca083f4d89f749c746f8020000004d8946084d89264d8d67e84c3b65107306ff5550ca086e4d89e749c74424f8020000004d894c24084d892c244d8d6fe84c3b6d107306ff5550ca085c4d89ef49c745f8020000004d8955084d895d004d8d5fe84c3b5d107306ff5550ca08704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15601b00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff153c1b00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b76084d89f64d8b4e104d89f64d8b66184d8d47d84c3b45107306ff5550ca40324d89c749c740f80400000041c640ff4049c740180100000049c740100100000049c740080100000049c700010000004d8d77d04c3b75107306ff5550ca40334d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bba88658f1c27f00004d89c2488b14244889d7498952184d897210498972084d891a418060ffbf49bba08758f1c27f00004d89f24889ff49897a20488d6424084d8942184d894a104d89ed4d896a084d891a418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424104d89f64d8b76084d8b76204c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c3488d6424104d89f64d8b76184c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c3488d6424104c8b6c240849be089ed1f1c27f00004d8975004c8b34244d897508488d64241048c7c0010000004883c418c3488d6424084d89f6498b46084d89f641ff76104d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d896e0849bd808858f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff158b1800004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15671800004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01014d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c8973084c8903ff15dc1700004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15b81700004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f54d8b75084d89ed498b45104d89ed41ff75184d8b2e4d8d77e84c3b75107306ff5550ca41204d89f749c746f8020000004d896e0849c7061b00000041564d8d77f04c3b75107305ff5550cd414d89f749c746f8010000004c8b6c24104d892e498d5fe8483b5d107306ff5550ca41404989df48c743f8020000004c897308488933ff15fc1600004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15d81600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b46084d89f641ff762049c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d89ea4d8b6a104d896e104d89660849bd28a258f1c27f00004d892e4d8934244d8d6fe84c3b6d107306ff5550ca01044d89ef49c745f80200000041c645ff4049c745080100000049c74500010000004d8d77e04c3b75107306ff5550ca01244d89f749c746f80300000041c646ff4049c746100100000049c746080100000049c7060100000049bc001c59f1c27f00004d89eb4d8973084d8923418065ffbf49bc781c59f1c27f00004d89f34d89d24d8953104d896b084d8923418066ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdd82359f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15ed1400004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15c91400004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f4498b5424084d89e44d8b4424104d89e44d89e641ff7424184d89f64d8b56204d8d67d04c3b65107306ff5550ca44254d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d77c84c3b75107306ff5550ca44354d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bb803359f1c27f00004c89e7488b4c24084989c948894f204c897718488957104d89ed4c896f084c891f41806424ffbf49bd603459f1c27f00004d89f3498973284d8943204d89c94d894b184d8963104d8953084d892b418066ffbf4d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d89660849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424104c89f34983fe0175054989c6eb09ff15161300004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f64d8b6e084d8b751041ff3641ff75004d8b750841ff75184d8b6d204d8b364d8b1e6a016a016a014c3b1db31200007502eb3b4d8b234e8d2465010000004983fc170f85a900000049bcc8a1d1f1c27f0000498d7308498d7c240848c7c10b000000483bc9f3a67405e983000000498b550048c7c001000000ff12488b5c2420ff15541200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e48c704240100000048c7442408010000004c89742410e9550f00004d8b6e2041ff76284d89eee9190d0000488d6424084d89f44d8b7424104d89e4498b4424184d89e441ff74242041ff364d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d896e0849bd383659f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424104d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15361100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7061b00000041564c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15e21000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15dc0f00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15b80f00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f44d8b7424084d89e4498b4424104d89e441ff7424184d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7061b00000041564d8d77f04c3b75107306ff5550ca01284d89f749c746f8010000004c8b6424104d8926498d5fe8483b5d107306ff5550ca01684989df48c743f8020000004c8973084c891bff15f80e00004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15d40e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f54d8b75084d89ed4d8b65184d8b364d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f64d8b7608498b1e498b460841ff76184d8d6ff04c3b6d107306ff5550ca09014d89ef49c745f8010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e084d890641564883fb017502eb06ff158c0d0000488b1c24ff157a0d0000488d6424084c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15510d00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f64d8b7608498b0641ff76084d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be00add2f1c27f00004c8933ff15bd0c00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15990c00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f24d8b72084d89d24d8b62104d89d241ff72184d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004c8b4c24084d890a498d5fe8483b5d107306ff5550ca007c4989df48c743f8020000004c8953084c891b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15be0b00004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff159a0b00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424184d89f6498b5e084c89ea4889c04158488d642418e90fe5ffff488d6424084d89f64d8b66084d89f641ff76104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24084d895e184d8966104d89ed4d896e0849bd304059f1c27f00004d892e4d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424104c89f34983fe0175054989c6eb09ff15980a00004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f54d8b75104d89ed4d8b65204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f4498b4424084d89e44d8b7424104d89e441ff7424184d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7061b00000041564d8d77f04c3b75107306ff5550ca01284d89f749c746f8010000004c8b6424104d8926498d5fe8483b5d107306ff5550ca01684989df48c743f8020000004c8973084c891bff15580900004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15340900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f6498b46084d89f641ff7610ff15c80800004d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004c8b6c24104d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8973084c8b7424084c8933ff15710800004c8b6c24184d89ee4983fd0175054989c6eb0c4c89f3ff154d0800004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424104d89f64d8b66084d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e08488d64240849bd98add2f1c27f00004d892e415d488d6424084d8965004d89750848c7c0010000004883c410c3488d6424084d89f44d89e641ff7424084d89f641ff76204d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d895e0849bdf04059f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b6424104d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933488b442408ff1530070000f6442408010f852f0100004c8b7424084d8b1e4d89dd4d89f64d8b66084d8b1b4d8b134983fa1d75664d8b5b084d8b134c3b15f10600007502eb334d8b1a4e8d1c5d010000004983fb05753a49bb78c9d1f1c27f0000498d7208498d7b0848c7c102000000483bc9f3a67402eb184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f859a0000004d89ee4d8b2e4d8b6d084d8b6d18498b5e084d8b75204d8b65184d3bf4753d4d8b75104d8b6d084d3bf5750949c7c603000000eb0749c7c6010000004983fe03751a488d642420488b542418488b44241041584883c418e924e0ffff4c8b7424184c89f34983fe0175054989c6eb09ff150b0600004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c34c8b7424184c89f34983fe0175054989c6eb09ff15c50500004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424084d89f34d8b6b084d89db4d8b63104d89db4d89de41ff73184d89f64d8b5e204d8d77f04c3b75107306ff5550ca00394d89f749c746f8010000004c8b5424084d8916498d5fe8483b5d107306ff5550ca00794989df48c743f8020000004c8973084c890349c7c6010000004d8d57f04c3b55107306ff5550ca08784d89d749c742f80100000041c642ff404d89324d8d77e84c3b75107306ff5550ca083c4d89f749c746f8020000004d8956084d89264d8d67e84c3b65107306ff5550ca08684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff156f0400004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff154b0400004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424104d89f64d8b76084c8b6c24084d8975004c8b34244d897508488d64241848c7c0010000004883c410c341f6c6010f85070100004d8b1e4d8b66084d8b134983fa010f85df0000004d8b5308498b324c8b4c2420498b39483bf77502eb2f4c8b064e8d044501000000488b174889d1488d1455010000004c3bc2757e488d7608488d7f08483bc9f3a67402eb6d4d8b42084d89c9498b79084c3bc775544d8b42104d89c9498b79104c3bc7753b4d8b42184d89c9498b79184c3bc775224d8b52204d89c94d8b49204d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c201000000eb0749c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb1b4d89e6483b65187306ff5558ca0060e9effeffff49c7c6010000004983fe0175114c89e8ff15c90200004989c6e9e100000049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060e926ffffff4c897424084c8b34244c89742410488d64240848c744241001000000ff34244c8b742410ff74241841f6c6010f859a0000004d8b364d8b2e41ff75004d8b6e0841ff75004d8b7610498b06ff15870100004c8b7424084c89f34983fe0175054989c5eb09ff15660100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c70615000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408eb0748c7c0010000004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24384d896e0849c7061b00000041564c8b7424084c89f34983fe0175054889c3eb09ff15b00000004889c34883fb017507488b5c2448eb0e488b442448ff158d0000004889c34883fb0175074c8b6c2410eb0e488b442410ff156a0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24484c8b6424284d8965004d89750848c7c0010000004883c468c3f40000000000|@12965,1,@999,@5825,@5826,@5827,@5828,@5829,@5717,@5830,@5703,@5831,@5832,@11272,@5703,@5833,@5703,@5834,@5835,@5703,@5836,@5837,@5703,@5838,@5703,@5839,@5703,@5840,@5841,@5703,@5842,@5703,@5843,@5703,@5844,@10999,@5845,@5846,@5703,@5847,@5703,@5848,@5703,@5849,@5703,@5850,@5703,@5851,@5852,@5703,@5853,@5703,@5854,@5703,@5855,@5703,@5856,@5857,@5858,@5859,@5860,@5824,@5683|82,0,@5671 261,0,@5672 383,0,@5673 437,0,@5677 489,0,@5678 546,0,@5739 2322,0,@5746 2371,0,@5747 3219,0,@5749 3259,0,@5750 3522,0,@10983 3614,0,@5751 4284,0,@5774 4404,0,@5782 4429,0,@5783 4492,0,@5790 4842,0,@5806 4891,0,@5807 5152,0,@10999 5403,0,@5809 6546,0,@12957 6965,0,@5819 7718,0,@12960 7812,0,@5820 7982,0,@11272 5671:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@12769,1,@846,@5145| 5672:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@12770,1,@847| 5673:D9,2064|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc010f855a0200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b358a070000750949c7c603000000eb2b4c3b3570070000750949c7c603000000eb194c3b3556070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc88dd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd030f85e80200004d89f54d8b750841ff75104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9760100004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be88c5d0f0c27f0000498b1648b8e88ed2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb08fd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7218498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2890d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@12794,1,@851,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 294,0,@11514 342,0,@10391 387,0,@11357 538,0,@10236 583,0,@12771 668,0,@10414 720,0,@9475 754,0,@11126 783,0,@9475 863,0,@9475 920,0,@4696 933,0,@12779 989,0,@11355 1037,0,@10236 1082,0,@10685 1174,0,@11357 1319,0,@10236 1364,0,@12786 1449,0,@10414 1470,0,@9475 1697,0,@11514 1745,0,@10391 1790,0,@11357 1941,0,@10236 1986,0,@12790 5674:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b8208fd2f1c27f0000ff124889c258ff22f400000000|@12785,1,@850|14,0,@4617 27,0,@12781 5675:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b8588fd2f1c27f0000ff124889c258ff22f400000000|@11376,1,@849|14,0,@4696 27,0,@12783 5676:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@848|13,0,@4698 5677:D3,216|483b65187305ff5558cd054989c6498b064d8b76084d8b6e084d8b6d006a016a0141f6c501757741ff7500498b1e6a016a01488b52084989e0ff12415d415b4d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b34244d89742408488d64240849c70424010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264c892c244c89742408eb0c498b1e488b52084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12795,1,@852| 5678:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12829,1,@912,@5679| 5679:D6,1448|483b65187306ff5558ca09034989c64d89cd41504c8b1b4d89dc4983fb030f859b0000004c8b63084c8b5b104d8b1b41f6c301757d41ff336a016a014c89ea4c89e34c89f04989e0ff12415c415b4d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e415d4d8965004d89750848c7c001000000c34c89ea4c89f04c89e34158ff224983fc050f85000300004c8b63084d8b5c24104983fb010f852a0100004d8b1c2441ff7424184d8b5424204d8b6424084d8b24244d8b0c244d8d67d04c3b65107306ff5550ca086e4d89e749c74424f8050000004d896c242049895c24184d8974241049bd0891d2f1c27f00004d896c240849bdb84458f1c27f00004d892c244d89e54d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849bd304558f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15160400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3498b134d8b14244d8b5c24084d8b1b4d8b0341ff7424184d8b4c2420498d77d0483b75107306ff5550ca0c674989f748c746f8050000004c896e2048895e184c89761049bd0891d2f1c27f00004c896e0849bd984b58f1c27f00004c892e498d7fd8483b7d107306ff5550ca44474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd104c58f1c27f00004989fb498973184d896310498953084d892b8067ffbf49bd306e58f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff154b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c34c8b63084d8b5c24084d8b1b4d8b034d8b1424498b54241041ff7424184d8b4c2420498d77d0483b75107306ff5550ca0c674989f748c746f8050000004c896e2048895e184c89761049bd0891d2f1c27f00004c896e0849bd187258f1c27f00004c892e498d7fd0483b7d107306ff5550ca44474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd907258f1c27f00004989fb49895320498973184d896310488b1424498953084d892b8067ffbf49bd687858f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156a0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f40000000000|@12830,1,@913,@5683,@5683,@5683|292,0,@12796 307,0,@5680 372,0,@5681 587,0,@12796 601,0,@5688 763,0,@5689 795,0,@5723 1044,0,@12796 1058,0,@5727 1228,0,@5728 1268,0,@5735 5680:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12797,1,@853| 5681:D6,536|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b4d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca08784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca08784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0860e926ffffff415648c7c00100000049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd884758f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15720000004889c34883fb017504415eeb12488b0424ff15530000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f40000|@12799,1,@855,@5684,@5685,@5683|346,0,@5682 5682:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@854| 5683:D5,344|483b65187306ff5558ca09014989c6f6c30175554c8b2b4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c704240f0000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d896500eb0749c7c501000000415541f6c00175524d8b204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450011000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8928eb0748c7c00100000041f6c60175514d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060b000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054889c3eb09ff15380000004889c34883fb01750258c358ff251e000000f40000000000|@12800,1,@858,@5687,@5686| 5684:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@856| 5685:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@857| 5686:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@860| 5687:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@859| 5688:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12797,1,@861| 5689:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba3892d2f1c27f0000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12824,1,@895,@5690|133,0,@12801 5690:D13,2168|483b65187306ff5558ca0d015250534150488b442408ff15bc0800004989c641564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b34244d89f54d897424104c8b7424204d8b76084d8974240849bef85558f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7061300000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c7061b00000041564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15ff0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b6424184d89e64d8965184c8b6424204d8965104c8b5c24284d89dc4d895d0849bb705658f1c27f00004d895d0041554d89f64d8b2e4c8d1d080000004f8d5cabfc41ffe3e92b000000909090e954000000909090e945040000909090e933050000909090e959050000909090e91b060000909090488d6424084c8b6c241049be089ed1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c428c34d89f64d8b760841ff3641ff761041ff761841ff76206a016a014c8b6c24404d8b75004983fe0b0f858a0000004d89ed4d89ee41ff75104d89f64d8b76184d8b6e184d8b55084d89d34d8b124983fa0375434d89dd4d8b6d084d89e44d8b6424184d3bec750949c7c503000000eb0749c7c5010000004983fd0375194c8b34244c89742408488d64240848c744240801000000eb20498b4610ff153d0600004989c64c8b2c244c896c2408488d6424084c89742408eb1a49bef092d2f1c27f00004d8b2e4c892c244d8b76084c89742408415858f6442418010f85dc0200004c8b4c24184d8b194d89c94d8b71084983fe010f85560100004d8d57c84c3b55107306ff5550ca01094d89d749c742f80600000041c642ff4049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d6fd04c3b6d107306ff5550ca010d4d89ef49c745f80500000041c645ff4049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bee85658f1c27f00004d89d4488b7c24204989f949897c24284d896c24204989442418488b7c240849897c24104d894424084d893424418062ffbf49bee85958f1c27f00004d89ec4d89c94d894c24204d895424184d895c24104c8b5c24504d895c24084d893424418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e96b0100004d8d5fc84c3b5d107306ff5550ca01034d89df49c743f80600000041c643ff4049c743280100000049c743200100000049c743180100000049c743100100000049c743080100000049c703010000004d8d6fc84c3b6d107306ff5550ca010b4d89ef49c745f80600000041c645ff4049c745280100000049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bec85a58f1c27f00004d89dc488b7c24204989fa49897c24284d896c24204989442418488b7c240849897c24104d894424084d893424418063ffbf49bec85d58f1c27f00004c8b6424504d8b4424104d89ec4d894424284d89c94d894c24204d89d24d895424184d895c24104c8b5c24104d895c24084d893424418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb004c8b7424284c89f34983fe0175054989c6eb09ff15000300004989c64c8b6c24384c8b24244d896500488d6424084d89750848c7c0010000004883c450c34d89f34d8b73084d89db4d89dd41ff73104d89ed4d8b5d184d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004c8b5424084d895500498d5fe8483b5d107306ff5550ca00784989df48c743f8020000004c896b084d89e44d8b6c24104c892b4d8d6fe84c3b6d107306ff5550ca08484d89ef49c745f80200000049c74508010000004d895d00498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff151e0200004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15fa0100004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3488d6424084d89f64d8b76104c8b6c24104d8975004c8b34244d897508488d64240848c7c0010000004883c428c34d89f6498b46084d89f641ff76184d8d77e84c3b75107306ff5550ca01104d89f749c746f8020000004d89e44d89660849bde86258f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004c8b6424084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15160100004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15f20000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004c8b6c24084d892e498d5fe8483b5d107306ff5550ca01504989df48c743f8020000004c8973084d89e44d8b7424104c8933ff15640000004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15400000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c438c3f40000|@12822,1,@888,@5718,@5703,@5719,@5703,@5720,@5703,@5721,@5717,@5683,@5148|86,0,@5691 360,0,@5692 455,0,@10983 677,0,@12805 893,0,@5693 953,0,@5697 1243,0,@5698 1303,0,@5702 1851,0,@5709 5691:D4,72|483b65187305ff5558cd05525048c7c001000000ff15460000004989c04c8b742408498b56084d89f6498b46105b488d64240849c7c20100000049b9e048d1f1c27f0000ff22f400|@12803,1,@862,@5149|60,0,@10385 5692:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@12804,1,@863| 5693:D6,336|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76204d893048c7c001000000ff15170100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd785858f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@12806,1,@865,@5696,@5695,@5683|137,0,@5694 5694:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@864| 5695:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@867| 5696:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@866| 5697:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12807,1,@868| 5698:D6,336|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76204d893048c7c001000000ff15170100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd585c58f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@12806,1,@870,@5701,@5700,@5683|137,0,@5699 5699:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@869| 5700:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@872| 5701:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@871| 5702:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76104c893049c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@12814,1,@877,@5708,@5683,@5703| 5703:D3,168|483b65187305ff5558cd094883f801750848c7c001000000c34c8b334c8b63084d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d8965184d8975104989450849bee85f58f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f40000000000|@12815,1,@879|73,0,@5704 5704:D4,40|483b65187305ff5558cd05488b5a084c8b4a104c8b521849c7c001000000ff251c000000f4000000|@12809,1,@875,@5705| 5705:D3,344|483b65187306ff5558ca0907f6c3010f85300100004c8b2b4c8b63084c89ca4983fc01750c49c7c401000000e9ca0000004d8d77c84c3b75107306ff5550ca0c374d89f749c746f8060000004d8956284d894e204d89461849895e1049bb9893d2f1c27f00004d895e0849bbc06158f1c27f00004d891e4d8d5ff04c3b5d107306ff5550ca04774d89df49c743f8010000004d89334d8d77c84c3b75107306ff5550ca043f4d89f749c746f8060000004d8956284d894e204d895e184d89661049bc9893d2f1c27f00004d89660849bc106258f1c27f00004d89264d8d67f04c3b65107306ff5550ca04654d89e749c74424f8010000004d8934244d8d77e04c3b75107306ff5550ca04354d89f749c746f8030000004d8946104d8956084d8926498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff2248b8e093d2f1c27f0000488b5d08ff23f40000|@12813,1,@876|94,0,@12808 108,0,@5706 194,0,@12808 208,0,@5707 327,0,@12810 5706:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@12809,1,@873| 5707:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@12809,1,@874| 5708:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@878| 5709:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12820,1,@886,@5710| 5710:D4,480|483b65187306ff5558ca09034989c64c89ca41504c8b2b4d8b55004d8b4d084c8b4308ff7310498d77d0483b75107306ff5550ca0c474989f748c746f8050000004889562048895e184c89761049bd2095d2f1c27f00004c896e0849bd786558f1c27f00004c892e498d7fd0483b7d107306ff5550ca44474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdf06558f1c27f00004989fb498973204d8963184d894310498953084d892b8067ffbf49bdd06658f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156b0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f4000000000000|@12821,1,@887,@5683|79,0,@12816 93,0,@5711 263,0,@5712 299,0,@5713 5711:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12817,1,@880| 5712:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12818,1,@881| 5713:D7,448|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66284d89650041554d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d89f64d8b66204d89650041554d89f6498b4618ff15890100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442408488b5c241049c7c001000000ff15180100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bdd86858f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff157b0000004889c34883fb017508415e4883c410eb12488b0424ff15580000004989c6488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000000000|@12819,1,@883,@5716,@5715,@5683,@5148|249,0,@5714 5714:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@882| 5715:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@885| 5716:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@884| 5717:D3,296|483b65187305ff5558cd01a8010f85090100004c8b30488b40084d8b2e4d89ec4983fd05752f4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70617000000e9910000004d89e54983fc07752c4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70619000000eb5c4983fd03752c4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e813ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@10112,1,@893| 5718:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@889| 5719:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@890| 5720:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@891| 5721:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@892| 5722:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12823,1,@894| 5723:D6,568|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bda87058f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@12799,1,@897,@5726,@5725,@5683|376,0,@5724 5724:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@896| 5725:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@899| 5726:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@898| 5727:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12797,1,@900| 5728:D6,280|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66184d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b0849bd4097d2f1c27f00004c892b4d89f6498b4620ff15d70000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f400000000|@12828,1,@906,@5734,@5683,@5703|81,0,@12825 5729:D4,32|483b65187305ff5558cd014989c6498b06498b5e08ff251d000000f400000000|@12826,1,@902,@5730| 5730:D6,504|483b65187305ff5558cd094989c64c8b6b104d8b6d004d8b6520ff33ff731849c7c50100000041f6c4010f85d10000004d8b14244d8b5c24084d8b024d89c14983f805754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701070000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890aeb574983f901754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890aeb034d89ea4d89d54d89dc483b65187306ff5558ca0070e925ffffff4155498b06498b5e084d8b4610ff150c0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849bd707658f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb017508415e4883c408eb12488b0424ff15500000004989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@12827,1,@903,@5733,@5732,@5683|313,0,@5731 5731:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@901| 5732:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@905| 5733:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@904| 5734:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@907| 5735:D6,568|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b76184d8b6e1049c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bde07a58f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@12799,1,@909,@5738,@5737,@5683|376,0,@5736 5736:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@908| 5737:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@911| 5738:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@910| 5739:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12834,1,@916,@5740| 5740:D8,760|483b65187306ff5558ca09035041504c8b73104d8b2e4c8b7318498b3e4c8b73284d8b164c8b234c8b7308ff73204d8d5fd04c3b5d107306ff5550ca88764d89df49c743f8050000004d894b2049895b184c8b4424104d89431049b80899d2f1c27f00004d89430849b8188058f1c27f00004d890341f6c20175514d8b124d8d47e84c3b45107306ff5550ca887e4d89c749c740f8020000004d89500849c700010000004d8d57e84c3b55107306ff5550ca887b4d89d749c742f80200000049c74208010000004d8902eb0749c7c20100000041524d8d47e84c3b45107306ff5550ca887a4d89c749c740f8020000004989580849ba908058f1c27f00004d89104d8d57e84c3b55107306ff5550ca807b4d89d749c742f8020000004d89420849c702130000004d8d47e04c3b45107306ff5550ca807e4d89c749c740f803000000498978104d89680849c700050000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d89450849c745001b0000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89284d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d8945084d89550041554d8d6ff04c3b6d107306ff5550ca005a4d89ef49c745f8010000004d895d00498d5fe8483b5d107306ff5550ca00724989df48c743f8020000004c896b084c890b4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c8930ff15dd0000004989c641564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15b40000004c8b6c24104d89ee4983fd0175054889c3eb0c4c89f3ff15900000004889c34883fb0175035beb12488b0424ff15720000004889c3488d6424084883fb017508415e4883c408eb12488b0424ff154a0000004989c6488d6424104c8b6c24084c8b24244d896500488d6424104d89750848c7c0010000004883c408c3f400000000000000|@12835,1,@917,@5744,@5745,@5743,@5683,@5703|92,0,@12831 106,0,@5741 246,0,@5742 5741:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12832,1,@914| 5742:D5,400|483b65187305ff5558cd05504c8b6a084d89ee41ff7500498b4608488b5c24084883eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23ff156f0100004989c64156488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b442408ff15370100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9075d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c408c3f400|@12833,1,@915,@5145,@5145|45,0,@9475 88,0,@9475 187,0,@10236 232,0,@10723 276,0,@10236 5743:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@920| 5744:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@918| 5745:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@919| 5746:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12836,1,@921| 5747:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@12837,1,@922,@5748,@5683,@5703| 5748:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@923| 5749:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba3892d2f1c27f0000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12838,1,@924,@5690|133,0,@12801 5750:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12836,1,@925| 5751:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12845,1,@945,@5752| 5752:D9,1952|483b65187306ff5558ca09034989c64c89ca41504c8b6b1041f6c5010f859b030000498b4500488b4b284c8b294983fd110f85bd0100004c8b134c8b6b084d8b6d004d8b4520ff73184c8b4b20498d77d0483b75107306ff5550ca0d474989f748c746f8050000004889562048895e184c89761049bd009bd2f1c27f00004c896e0849bdf89058f1c27f00004c892e498d7fd8483b7d107306ff5550ca41474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac1474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd709158f1c27f00004989fb498973184d896310498943084d892b8067ffbf49bd689258f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15380600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c34c8b13ff73184c8b4b204c8b6b084d8b6d004d8b4520498d77d0483b75107306ff5550ca0e474989f748c746f8050000004889562048895e184c89761049bd009bd2f1c27f00004c896e0849bd489658f1c27f00004c892e498d7fd0483b7d107306ff5550ca46474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac6474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdc09658f1c27f00004989fb498973204d89631849894b10498953084d892b8067ffbf49bda09758f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15670400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3488b4b284c8b294983fd11751d4c8b6b084d8b6d004d8b6d20ff33ff732049c7c401000000e9c90100004c8b13ff73184c8b4b204c8b6b084d8b6d004d8b4520498d77d0483b75107306ff5550ca0e474989f748c746f8050000004889562048895e184c89761049bd009bd2f1c27f00004c896e0849bd809b58f1c27f00004c892e498d7fd0483b7d107306ff5550ca46474989ff48c747f805000000c647ff4048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac6474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bdf89b58f1c27f00004989fb498973204d89631849894b10498953084d892b8067ffbf49bdd89c58f1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156c0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c341f6c5010f85d00000004d8b55004d8b5d084d8b024d89c14983f805754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701070000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890aeb574983f901754e4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c701050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890aeb034d89e24d89d44d89dd483b65187306ff5558ca0070e926ffffff4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc589cd2f1c27f00004d8965004155498b06498b5e084d8b4610ff15fe0000004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24104d896e0849bdb8a058f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15650000004889c34883fb017504415eeb12488b0424ff15460000004989c6488d6424084c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c410c3f4000000|@12846,1,@946,@5773,@5772,@5683,@5683,@5683,@5683|118,0,@12839 132,0,@5753 294,0,@5754 326,0,@5755 563,0,@12839 577,0,@5759 747,0,@5760 783,0,@5761 1062,0,@12839 1076,0,@5765 1246,0,@5766 1282,0,@5767 1707,0,@12844 1775,0,@5771 5753:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12840,1,@926| 5754:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba3892d2f1c27f0000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12841,1,@927,@5690|133,0,@12801 5755:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdd89458f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@12842,1,@929,@5758,@5757,@5683|372,0,@5756 5756:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@928| 5757:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@931| 5758:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@930| 5759:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12840,1,@932| 5760:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12843,1,@933| 5761:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd109a58f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@12842,1,@935,@5764,@5763,@5683|372,0,@5762 5762:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@934| 5763:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@937| 5764:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@936| 5765:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12840,1,@938| 5766:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12843,1,@939| 5767:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd489f58f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@12842,1,@941,@5770,@5769,@5683|372,0,@5768 5768:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@940| 5769:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@943| 5770:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@942| 5771:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@944| 5772:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@948| 5773:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@947| 5774:D9,7248|483b65187305ff5558cd054c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe010f85610200004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c7d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35c41b0000750949c7c603000000eb2b4c3b35aa1b0000750949c7c603000000eb194c3b35901b0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10a4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc030f85370d000041ff750841ff75104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdd8b5d1f1c27f0000e9c80b00004d89f64983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64240849beb86fd1f1c27f0000e90c0a00004c8b7424184d8b6e084d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8f0a4d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49bdb86fd1f1c27f0000e99c0800004c8b6c242841ff75104d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d8b364c8b6c24184983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a5d2f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef8c7d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60a5d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd050f85c20900004d8b6e0841ff76104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9530800004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f00004d8b364d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b62084d89650849bcc01b59f1c27f00004d896500498d47d8483b45107306ff5550ca00604989c748c740f80400000048c740180300000048c74010070000004c89680848c700010000004c89f2ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58a6d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fb010000750949c7c603000000eb2b4c3b35e1010000750949c7c603000000eb194c3b35c7010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38a7d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@12923,1,@956,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4731 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@12905 674,0,@10414 723,0,@9475 757,0,@11126 788,0,@9475 822,0,@10678 860,0,@9475 912,0,@4696 925,0,@12912 965,0,@10678 1005,0,@9475 1039,0,@10678 1077,0,@9475 1127,0,@4699 1161,0,@10678 1199,0,@9475 1249,0,@4699 1283,0,@10678 1320,0,@9475 1370,0,@4615 1404,0,@10678 1442,0,@9475 1492,0,@4699 1537,0,@9475 1587,0,@4699 1632,0,@10681 1680,0,@10236 1725,0,@11391 1769,0,@10236 1814,0,@10685 1902,0,@10236 1946,0,@11393 1991,0,@10236 2035,0,@10685 2123,0,@10236 2168,0,@11395 2212,0,@10236 2257,0,@10685 2345,0,@10236 2389,0,@11397 2434,0,@10236 2478,0,@10685 2566,0,@10236 2611,0,@11399 2659,0,@10688 2761,0,@9475 2811,0,@4615 2856,0,@10681 2904,0,@10236 2949,0,@10683 2993,0,@10236 3038,0,@10685 3126,0,@10236 3170,0,@12559 3215,0,@10236 3259,0,@10685 3347,0,@10236 3392,0,@12914 3440,0,@10688 3534,0,@9475 3589,0,@4735 3634,0,@11355 3682,0,@10236 3727,0,@10685 3819,0,@11357 3964,0,@10236 4009,0,@12916 4094,0,@10414 4143,0,@9475 4177,0,@11126 4206,0,@9475 4258,0,@4691 4306,0,@5781 4411,0,@9475 4445,0,@10678 4483,0,@9475 4533,0,@4699 4567,0,@10678 4605,0,@9475 4655,0,@4699 4689,0,@10678 4726,0,@9475 4776,0,@4615 4810,0,@10678 4848,0,@9475 4898,0,@4699 4943,0,@9475 4993,0,@4699 5038,0,@10681 5087,0,@10236 5131,0,@11391 5176,0,@10236 5220,0,@10685 5308,0,@10236 5353,0,@11393 5397,0,@10236 5442,0,@10685 5530,0,@10236 5574,0,@11395 5619,0,@10236 5663,0,@10685 5751,0,@10236 5796,0,@11397 5840,0,@10236 5885,0,@10685 5973,0,@10236 6017,0,@11399 6066,0,@10688 6169,0,@11355 6217,0,@10236 6262,0,@10685 6354,0,@11357 6499,0,@10236 6544,0,@12924 6629,0,@10414 6650,0,@9475 6877,0,@11514 6925,0,@10391 6970,0,@11357 7121,0,@10236 7166,0,@12931 5775:D3,18864|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd017510488d64240848b8189dd2f1c27f0000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe030f85001d000041ff7424084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb86fd1f1c27f0000e9941b00004c8b6c240841ff75104d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9b81300004c8b7424104d8b2e4d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bda80859f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f44983fe057d0f49bdb86fd1f1c27f0000e9e91100004c8b7424204d8b6e284d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8209ed2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24284d89ee4983fd077d0f49beb86fd1f1c27f0000e9781000004c8b6c243041ff75204d89f64983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f54983fe097d0f49bdb86fd1f1c27f0000e9a10800004c8b7424384d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b74244041ff76184c8b7424404983ee0241567115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e92a0600004c8b7424084d8b76084d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9ce0400004c8b7424104d8b76184d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9770300004c8b7424184d8b364d89ed4983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e9200200004c8b7424204d8b76104d89ed4983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd589ed2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be909ed2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50e5d1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed09ed2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd009fd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc050f855a0b00004d89ec4d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9e10900004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7608498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e98f0800004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef01fd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89fd2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd20a0d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd070f85080a0000488d64240841ff760841ff76104983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb86fd1f1c27f0000e9940800004d89f64983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be08c4d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08a1d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38a1d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe090f85ce0b00004d89e64d8b660841ff761041ff76184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb86fd1f1c27f0000e9580a00004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bd300959f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180700000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9900800004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424184983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18a2d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea038d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48a2d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d8b6c240841ff7424104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9050900004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd381b59f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea038d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30a3d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@12855,1,@953|32,0,@10414 64,0,@12848 89,0,@10414 134,0,@9475 168,0,@10678 208,0,@9475 242,0,@10678 280,0,@9475 330,0,@4699 364,0,@10678 402,0,@9475 452,0,@4699 486,0,@10678 523,0,@9475 573,0,@4615 607,0,@10678 645,0,@9475 695,0,@4699 740,0,@9475 790,0,@4699 835,0,@10681 883,0,@10236 928,0,@11391 972,0,@10236 1017,0,@10685 1105,0,@10236 1149,0,@11393 1194,0,@10236 1238,0,@10685 1326,0,@10236 1371,0,@11395 1415,0,@10236 1460,0,@10685 1548,0,@10236 1592,0,@11397 1637,0,@10236 1681,0,@10685 1769,0,@10236 1814,0,@11399 1862,0,@10688 1954,0,@10678 1991,0,@9475 2043,0,@4691 2095,0,@5776 2192,0,@10678 2230,0,@9475 2282,0,@4696 2295,0,@12856 2335,0,@10678 2375,0,@9475 2409,0,@10678 2447,0,@9475 2497,0,@4699 2531,0,@10678 2569,0,@9475 2619,0,@4699 2653,0,@10678 2690,0,@9475 2740,0,@4615 2774,0,@10678 2812,0,@9475 2862,0,@4699 2907,0,@9475 2957,0,@4699 3002,0,@10681 3050,0,@10236 3095,0,@11391 3139,0,@10236 3184,0,@10685 3272,0,@10236 3316,0,@11393 3361,0,@10236 3405,0,@10685 3493,0,@10236 3538,0,@11395 3582,0,@10236 3627,0,@10685 3715,0,@10236 3759,0,@11397 3804,0,@10236 3848,0,@10685 3936,0,@10236 3981,0,@11399 4029,0,@10688 4121,0,@10678 4159,0,@9475 4209,0,@4615 4256,0,@9475 4290,0,@10678 4328,0,@9475 4378,0,@4699 4412,0,@10678 4450,0,@9475 4500,0,@4699 4534,0,@10678 4571,0,@9475 4621,0,@4615 4655,0,@10678 4693,0,@9475 4743,0,@4699 4791,0,@9475 4841,0,@4699 4886,0,@10681 4935,0,@10236 4979,0,@11391 5024,0,@10236 5068,0,@10685 5156,0,@10236 5201,0,@11393 5245,0,@10236 5290,0,@10685 5378,0,@10236 5422,0,@11395 5467,0,@10236 5511,0,@10685 5599,0,@10236 5644,0,@11397 5688,0,@10236 5733,0,@10685 5821,0,@10236 5865,0,@11399 5914,0,@10688 6017,0,@10681 6065,0,@10236 6110,0,@12858 6154,0,@10236 6199,0,@10685 6287,0,@10236 6331,0,@10683 6376,0,@10236 6420,0,@10685 6508,0,@10236 6553,0,@12559 6597,0,@10236 6642,0,@10685 6730,0,@10236 6774,0,@12860 6823,0,@10236 6867,0,@10685 6955,0,@10236 7000,0,@11481 7048,0,@10236 7093,0,@10685 7181,0,@10236 7225,0,@12862 7274,0,@10688 7419,0,@10236 7464,0,@12864 7554,0,@10414 7613,0,@9475 7647,0,@10678 7676,0,@9475 7759,0,@10678 7790,0,@9475 7824,0,@10678 7862,0,@9475 7912,0,@4699 7946,0,@10678 7984,0,@9475 8034,0,@4699 8068,0,@10678 8105,0,@9475 8155,0,@4615 8189,0,@10678 8227,0,@9475 8277,0,@4699 8322,0,@9475 8372,0,@4699 8417,0,@10681 8465,0,@10236 8510,0,@11391 8554,0,@10236 8599,0,@10685 8687,0,@10236 8731,0,@11393 8776,0,@10236 8820,0,@10685 8908,0,@10236 8953,0,@11395 8997,0,@10236 9042,0,@10685 9130,0,@10236 9174,0,@11397 9219,0,@10236 9263,0,@10685 9351,0,@10236 9396,0,@11399 9444,0,@10688 9538,0,@9475 9637,0,@10681 9686,0,@10236 9730,0,@11963 9775,0,@10236 9819,0,@10685 9907,0,@10236 9952,0,@12559 9996,0,@10236 10041,0,@10685 10129,0,@10236 10173,0,@12871 10222,0,@10688 10367,0,@10236 10412,0,@12873 10502,0,@10414 10556,0,@9475 10590,0,@10678 10621,0,@9475 10655,0,@10678 10693,0,@9475 10743,0,@4699 10777,0,@10678 10815,0,@9475 10865,0,@4699 10899,0,@10678 10936,0,@9475 10986,0,@4615 11020,0,@10678 11058,0,@9475 11108,0,@4699 11153,0,@9475 11203,0,@4699 11248,0,@10681 11296,0,@10236 11341,0,@11391 11385,0,@10236 11430,0,@10685 11518,0,@10236 11562,0,@11393 11607,0,@10236 11651,0,@10685 11739,0,@10236 11784,0,@11395 11828,0,@10236 11873,0,@10685 11961,0,@10236 12005,0,@11397 12050,0,@10236 12094,0,@10685 12182,0,@10236 12227,0,@11399 12275,0,@10688 12369,0,@9475 12424,0,@4672 12469,0,@10681 12517,0,@10236 12562,0,@12880 12606,0,@10236 12651,0,@10685 12739,0,@10236 12783,0,@12559 12832,0,@10688 12977,0,@10236 13022,0,@12882 13112,0,@10414 13167,0,@9475 13201,0,@10678 13230,0,@9475 13282,0,@4691 13334,0,@5778 13431,0,@10678 13460,0,@9475 13515,0,@4698 13553,0,@9475 13587,0,@10678 13625,0,@9475 13675,0,@4699 13709,0,@10678 13747,0,@9475 13797,0,@4699 13831,0,@10678 13868,0,@9475 13918,0,@4615 13952,0,@10678 13990,0,@9475 14040,0,@4699 14085,0,@9475 14135,0,@4699 14180,0,@10681 14228,0,@10236 14273,0,@11391 14317,0,@10236 14362,0,@10685 14450,0,@10236 14494,0,@11393 14539,0,@10236 14583,0,@10685 14671,0,@10236 14716,0,@11395 14760,0,@10236 14805,0,@10685 14893,0,@10236 14937,0,@11397 14982,0,@10236 15026,0,@10685 15114,0,@10236 15159,0,@11399 15207,0,@10688 15310,0,@10681 15359,0,@10236 15403,0,@12559 15448,0,@10236 15492,0,@10685 15580,0,@10236 15625,0,@12889 15669,0,@10236 15714,0,@10685 15802,0,@10236 15846,0,@12171 15895,0,@10688 16040,0,@10236 16085,0,@12891 16175,0,@10414 16209,0,@9475 16243,0,@10678 16272,0,@9475 16324,0,@4691 16376,0,@5779 16477,0,@9475 16511,0,@10678 16549,0,@9475 16599,0,@4699 16633,0,@10678 16671,0,@9475 16721,0,@4699 16755,0,@10678 16792,0,@9475 16842,0,@4615 16876,0,@10678 16914,0,@9475 16964,0,@4699 17009,0,@9475 17059,0,@4699 17104,0,@10681 17153,0,@10236 17197,0,@11391 17242,0,@10236 17286,0,@10685 17374,0,@10236 17419,0,@11393 17463,0,@10236 17508,0,@10685 17596,0,@10236 17640,0,@11395 17685,0,@10236 17729,0,@10685 17817,0,@10236 17862,0,@11397 17906,0,@10236 17951,0,@10685 18039,0,@10236 18083,0,@11399 18132,0,@10688 18235,0,@10681 18283,0,@10236 18328,0,@12559 18372,0,@10236 18417,0,@10685 18505,0,@10236 18549,0,@12171 18598,0,@10688 18743,0,@10236 18788,0,@12898 5776:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12855,1,@949| 5777:D3,32|483b65187305ff5558cd0149bed8c7d0f0c27f0000498b16ff22f40000000000|@11469,1,@950|13,0,@4733 5778:D3,4576|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9411100004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bed8b5d1f1c27f0000e9ee0700004c8b7424084d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b74241041ff76084c8b7424104983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8d6d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49bed8b5d1f1c27f0000e9f10700004d89ed4d8b75004d8b76084d89e54983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424104d8b2e41ff75104d89f64d8b76084983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@9836,1,@951|37,0,@11126 78,0,@9475 112,0,@11126 149,0,@9475 199,0,@4615 246,0,@9475 280,0,@10678 318,0,@9475 368,0,@4699 402,0,@10678 440,0,@9475 490,0,@4699 524,0,@10678 561,0,@9475 611,0,@4615 645,0,@10678 683,0,@9475 733,0,@4699 778,0,@9475 828,0,@4699 873,0,@10681 921,0,@10236 966,0,@11391 1010,0,@10236 1055,0,@10685 1143,0,@10236 1187,0,@11393 1232,0,@10236 1276,0,@10685 1364,0,@10236 1409,0,@11395 1453,0,@10236 1498,0,@10685 1586,0,@10236 1630,0,@11397 1675,0,@10236 1719,0,@10685 1807,0,@10236 1852,0,@11399 1900,0,@10688 2003,0,@11355 2052,0,@10236 2096,0,@10685 2188,0,@11357 2284,0,@11126 2324,0,@9475 2425,0,@9475 2459,0,@10678 2497,0,@9475 2547,0,@4699 2581,0,@10678 2619,0,@9475 2669,0,@4699 2703,0,@10678 2740,0,@9475 2790,0,@4615 2824,0,@10678 2862,0,@9475 2912,0,@4699 2957,0,@9475 3007,0,@4699 3052,0,@10681 3100,0,@10236 3145,0,@11391 3189,0,@10236 3234,0,@10685 3322,0,@10236 3366,0,@11393 3411,0,@10236 3455,0,@10685 3543,0,@10236 3588,0,@11395 3632,0,@10236 3677,0,@10685 3765,0,@10236 3809,0,@11397 3854,0,@10236 3898,0,@10685 3986,0,@10236 4031,0,@11399 4079,0,@10688 4182,0,@11355 4231,0,@10236 4275,0,@10685 4363,0,@10236 4408,0,@10685 4500,0,@11357 5779:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12855,1,@952| 5780:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@954|13,0,@4734 5781:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12923,1,@955| 5782:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12938,1,@957| 5783:D12,984|483b65187306ff5558ca0d015041504c8b334d89f54983fe050f85ec000000488b4308ff73104d8d6fd84c3b6d107305ff5550cd0d4d89ef49c745f80400000049895d184c8b7424104d8975104989550849bec02059f1c27f00004d8975004d8d77f04c3b75107306ff5550ca05204d89f749c746f8010000004d892e498d5fe8483b5d107306ff5550ca05404989df48c743f8020000004c8973084c8b72084c8933ff15870300004989c641564c8b742418498b064d89f6498b5e084d89f64d8b4610ff155e0300004889c34883fb017504415eeb12488b0424ff153f0300004989c6488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c0010000004883c408c34d89ee4983fd017520488b5b0848ba3892d2f1c27f0000488b4424084158488d642408ff25e40200004983fe077516488b5b08488b5210488b4424084158488d642408ff224c8b6b084c8b73104d8b650841ff342441ff751041ff76204d8b762841f6c6010f859b0000004d8b364d8b2e41ff75004d8b6e0841ff75004d8b7610498b06ff157b0200004c8b7424084c89f34983fe0175054989c6eb09ff155a0200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500150000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c408eb0749c7c60100000041564c8b6c240849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060e926ffffff41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7061b00000041564c8b742438498b064d89f6498b5e084d89f64d8b4610ff15b80000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175035beb12488b0424ff156f0000004889c3488d6424084883fb017508415e4883c408eb12488b0424ff15470000004989c6488d6424104c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c418c3f400000000|@12940,1,@959,@5786,@5787,@5683,@5788,@5789,@5690,@5785,@5683,@5703|83,0,@5784 282,0,@12801 5784:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@12939,1,@958| 5785:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@964| 5786:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@960| 5787:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@961| 5788:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@962| 5789:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@963| 5790:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12949,1,@977,@5791| 5791:D9,672|483b65187306ff5558ca09035053415041514c8b6c24104d89ee41ff75084d89f64d8b66084d89e541f6c4010f850f0100004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ea000000488d6424084d89f641ff75004d89f64d8b6e1041ff75004d89f641ff76184c8b742430498b064d89f6498b5e084d89f64d8b4610ff154f0200004989c641564d8d47d04c3b45107303ff55504d89c749c740f8050000004c8b7424204d89f14d8970204c8b7424304d8970184c8b7424384d89701049bef0a8d2f1c27f00004d89700849be502759f1c27f00004d8930488b442418488b5c2410ff15e10100004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15b90100004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f64d8b6e1041ff75004d89f641ff76184c8b742430498b064d89f6498b5e084d89f64d8b4610ff15590100004989c641564d8d67d04c3b65107303ff55504d89e749c74424f8050000004c8b7424204d89f54d897424204c8b7424304d897424184c8b7424384d8974241049bef0a8d2f1c27f00004d8974240849bec82759f1c27f00004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24104d895e104d89ed4d896e0849bd402859f1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933488b442418ff15710000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15490000004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3f4000000000000|@12950,1,@978,@5805,@5703,@5683,@5804,@5797,@5683|206,0,@12941 220,0,@5792 432,0,@12941 447,0,@5793 504,0,@5794 5792:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12942,1,@965| 5793:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12943,1,@966| 5794:D4,88|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084c8b52104989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12946,1,@968,@5795| 5795:D6,240|483b65187306ff5558ca090750534150415141524c8b74241841ff76104c8b742428498b064d89f6498b5e084d89f64d8b4610ff15df0000004989c641564d8d47c84c3b45107303ff55504d89c749c740f8060000004c8b7424104c89f34d8970284c8b7424184d89f14d8970204c8b7424284c89f04d8970184c8b7424304d89701049bea0a9d2f1c27f00004d89700849bef82959f1c27f00004d8930ff156c0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15440000004989c6488d6424084c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f400|@12947,1,@969,@5798,@5797,@5683|133,0,@12944 147,0,@5796 5796:D3,88|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@12945,1,@967| 5797:D9,1072|483b65187306ff5558ca09034989c4415041514d8b74241841ff364d8b1c24498b034d8b6b084d8b731041ff731841ff7424084983fe030f85ca010000a8010f85c00100004c8b304d89f44d8b1e4983fb3375424d8b760841f6c601752f4d8b760841f6c601751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f855e010000488b40084d8b7424084d8b6424184d8b1e4d8b76084d8b164d8d77e84c3b75107306ff5550ca093c4d89f749c746f8020000004d895e0849c706070000004d8d5fe04c3b5d107306ff5550ca09744d89df49c743f80300000049895b104d896b0849c703030000004d89dd4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c703070000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d8975004d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706050000004156ff159b0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408eb62eb004d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049895e104d896e0849c706030000004156ff152f0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156f64424100175564c8b7424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000f64424180175574c8b7424184d8b364d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564d8d6ff04c3b6d107305ff5550cd014d89ef49c745f8010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e084c8b6c24284d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c70607000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff157f0000004889c34883fb017507488b442410eb0b488b442410ff155c000000488b1c24ff154a000000488d6424084c8b2c244d89ee4983fd017506488d642438c34c89f3488d642438ff251c000000f4000000|@12948,1,@971,@5800,@5703,@5801,@5802,@5803,@5799| 5798:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@970| 5799:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@976| 5800:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@972| 5801:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@973| 5802:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@974| 5803:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@975| 5804:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@980| 5805:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@979| 5806:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12836,1,@981| 5807:D6,272|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b24244d89e64d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64d8b6e284c892b4d89f6498b4620ff15d30000004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b7424084d8b6e184c892b4d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89f64d8b76104d893048c7c001000000ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7608488d6424084c8930c3f4|@12837,1,@982,@5808,@5683,@5703| 5808:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@983| 5809:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12955,1,@990,@5810| 5810:D4,800|483b65187306ff5558ca09035053415041514c8b6c24104d8b750841ff364d89ed4d89ee41ff75004d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff76206a016a01488b542438488b442450488b5c24184989e0ff12415c415e4d8b0c244c8b1c244d8b134d3bca7502eb364d8b294e8d2c6d010000004d8b024c89c14e8d0445010000004d3be80f85a4000000498d7108498d7a08483bc9f3a67405e9900000004d8b6c24084d89db4d8b53084d3bea75574d8b6c24104d89db4d8b53104d3bea753d4d8b6c24184d89db4d8b53184d3bea75234d8b6c24204d89db4d8b5b204d3beb750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd03751b488d642430415d4d8965004d89750848c7c0010000004883c410c34d8d4fd04c3b4d107303ff55504d89cf49c741f8050000004c8b7424284d89f04d8971204c8b7424384d8971184c8b6c24404d89ee4d89691049bd70abd2f1c27f00004d89690849bd083a59f1c27f00004d89294d8d57d04c3b55107306ff5550ca00434d89d749c742f80500000041c642ff4049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d67c84c3b65107306ff5550ca00474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd803a59f1c27f00004d89d34d894b204d896318488b7c240849897b104d89c04d8943084d892b418062ffbf49bd603b59f1c27f00004d89e34d894b284d8953204c8b5424204d8953184c8b5424104d8953104c8b5424184d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000900000041554d89f6498b064d89f6498b5e084d89f64d8b4610ff15660000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24304c8b24244d896500488d6424484d89750848c7c001000000c3f400|@12956,1,@991,@5683|370,0,@12951 384,0,@5811 555,0,@5812 600,0,@5813 5811:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12952,1,@984| 5812:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12953,1,@985| 5813:D6,416|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89f64d8b76184d89750849c745001b0000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049c74608010000004d892e415649c7c001000000ff15110100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd403d59f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15740000004889c34883fb017504415eeb12488b0424ff15550000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@12954,1,@987,@5816,@5815,@5683|224,0,@5814 5814:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@986| 5815:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@989| 5816:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@988| 5817:D6,184|483b65187305ff5558cd01ff304c8b68084d8b750841ff75104d8b364983fe01750949c7c601000000eb104d8b36498b4618ff15a80000004989c641564c8b742410498b064d89f6498b5e084d89f64d8b4610ff157f0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15570000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3f4000000000000|@12958,1,@992,@5818,@5683,@5717| 5818:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@993| 5819:D3,152|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d896500498d47e0483b45107306ff5550ca00604989c748c740f80300000048c74010010000004c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@12959,1,@994| 5820:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@12963,1,@996,@5821| 5821:D6,400|483b65187306ff5558ca09035053415041514c8b7424104d89f541ff364d89ed4d89ee41ff75084d89f641ff76104c8b742430498b064d89f6498b5e084d89f64d8b4610ff156e0100004989c641564d8d67d04c3b65107303ff55504d89e749c74424f8050000004c8b6c24204d89ee4d896c24204c8b6c24304d896c24184c8b6c24384d896c241049bdb0add2f1c27f00004d896c240849bd404359f1c27f00004d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084d89f64c89334d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca08404989c748c740f8020000004c8970084c8b7424184c8930ff156f0000004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15470000004989c6488d6424084c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3f400000000|@12964,1,@997,@5823,@5703,@5683|139,0,@12961 154,0,@5822 5822:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@12962,1,@995| 5823:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@998| 5824:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1036| 5825:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1000| 5826:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1001| 5827:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1002| 5828:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1003| 5829:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1004| 5830:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1005| 5831:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1006| 5832:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1007| 5833:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1008| 5834:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1009| 5835:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1010| 5836:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1011| 5837:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1012| 5838:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1013| 5839:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1014| 5840:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1015| 5841:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1016| 5842:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1017| 5843:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1018| 5844:D3,152|483b65187305ff5558cd09a801757dff30488b4008488b0b4c8d344d010000004c8b2c244d8b65004e8d2465010000004d3bf47f4d488d73084d89ed498d7d08483bc9f3a67534e8b4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb05488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@1019| 5845:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1020| 5846:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1021| 5847:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1022| 5848:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1023| 5849:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1024| 5850:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1025| 5851:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1026| 5852:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1027| 5853:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1028| 5854:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1029| 5855:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1030| 5856:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1031| 5857:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1032| 5858:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1033| 5859:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1034| 5860:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706010000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1035| 5861:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@12967,1,@1037| 5862:D3,102184|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f85eb10000041ff7424084983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e97f0f00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd68e85af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb86fd1f1c27f0000e9af0d00004c8b7424184d8b6e284d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b808b0d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb86fd1f1c27f0000e93f0c00004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb86fd1f1c27f0000e9e70a00004c8b6c243041ff75084d89f64983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe097d0f49bdb86fd1f1c27f0000e9100300004c8b7424384d8b6e104d89e44983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d104d896e0849bd50ec5af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424484d8b6e204c8b6424404983ec027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24584d8b6d084d896e0849bd90ec5af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0b0d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8b0d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30b1d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b1d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0b1d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8b1d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc030f855a0b00004d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9e10900004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e98f0800004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08b3d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38b3d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68b3d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe050f85290e000041ff75084983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9be0c00004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9630b00004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b840b4d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e9f30900004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7618498b16ff124989c641564c8b7424204d89f54983fe077d0f49beb86fd1f1c27f0000e99d0800004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b74243041ff76204c8b7424304983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78b4d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0b4d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a5d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50e1d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0b4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd070f852015000041ff7424084983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9b41300004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8b8b5d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9431200004c8b6c241841ff75204d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e96c0a00004c8b6c242041ff75184d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f44983fe077d0f49beb86fd1f1c27f0000e9940200004c8b7424284d8b6e084d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d204d896e0849bd60ed5af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424384d8b364c8b6c24304983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424404d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea802d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10b6d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40b6d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78b6d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc090f85940f000041ff76084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9290e00004c8b7424084d8b6e204d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b850b7d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9b80c00004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e9620b00004c8b6c242041ff75184d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f54983fe077d0f49beb86fd1f1c27f0000e98a0300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7618498b16ff124989c641564c8b7424284d89f44983fe097d0f49bdb86fd1f1c27f0000e9350200004c8b7424304d8b6e284d89e44983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8f8b7d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424404d8b76104c8b6c24384983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7618498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0b8d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0b8d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda802d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08b9d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38b9d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70b9d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe0b0f85550b00004d8b750841ff751041ff75184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e9e20900004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c7d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e98f0800004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00bad2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30bad2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd0d0f85191b0000488d64240841ff7424084983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241049bdb86fd1f1c27f0000e9a81900004c8b6c240841ff75204d89f64983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9cc1100004c8b6c241041ff75004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9f50900004c8b7424184d8b76104d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24184d89ee4983fd077d0f49beb86fd1f1c27f0000e99d0800004c8b6c242041ff75084d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d8b76184c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10bbd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48bbd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78bbd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0bbd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0bbd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc0f0f857b0b0000488d6424084d89f44d8b74240841ff74241041ff7424184983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9fd0900004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c8d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9aa0800004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be38c5d0f0c27f0000498b1648b880bfd2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8bfd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8bfd2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18c0d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe117510488d64240848b8f8c0d2f1c27f0000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd130f85c40900004d8b6c240841ff7424104983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8b5d1f1c27f0000e9530800004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d284d896e0849bd70f55af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8c1d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc150f85c20900004d8b660841ff76104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e9530800004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bdb0f55af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80c3d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe170f85e80b00004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb86fd1f1c27f0000e9720a00004d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b858c4d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e90a0900004d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d204d896e0849bd40f95af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90c4d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8c4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd190f85330e00004d8b6c240841ff7424204983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9c20c00004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d304d896e0849bd80f95af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9fa0a00004d89ed4d89ee4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fd017d0c49bdb86fd1f1c27f0000eb434d89ec4983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff2349bdc0c5d2f1c27f00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda070d1f1c27f00004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64d89f54983fe057d0f49bdb86fd1f1c27f0000e91c0900004d89ed4d89ee4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983fd017d0c49bdb86fd1f1c27f0000eb434d89ec4983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff2349bdc0c5d2f1c27f00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda070d1f1c27f00004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38c6d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70c6d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8c6d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8c6d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc1b0f85a81300004d89f44d8b74240841ff74241041ff74241841ff7424204983ed0241557115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb86fd1f1c27f0000e92a1200004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9d81000004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d204d896e0849bdc0f95af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e90c0f00004d89f64983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424384d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424404d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424484d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424504d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424584d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40b6d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8c7d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6023d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8c7d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe1d0f855f0e0000488d64240841ff75084983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9ef0c00004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8c8c8d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e97e0b00004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e9a70300004c8b7424204d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424204d89f44983fe077d0f49beb86fd1f1c27f0000e9500200004c8b7424284d8b6e204d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b800c9d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424384d8b6e084c8b6424304983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b858c9d2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90c9d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc8c9d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd1f0f85400d000041ff7424084d8b6c241041ff74241841ff7424204983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242849bdb86fd1f1c27f0000e9c50b00004d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8a0cad2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e95d0a00004d89f64983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e90a0900004d89f64983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24304d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d184d896e0849bd18fb5af1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90e2d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18a2d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4304d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80cbd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc210f85590b000041ff760841ff761041ff76184983ed0241557115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242849bdb86fd1f1c27f0000e9e60900004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424204d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9130200004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424284d8b7618498b16ff124989c641564c8b7424104983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c89304c8b7424304d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be58ccd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88ccd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0ccd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe230f85e70b00004d89ee41ff76084d8b6e1041ff76184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb86fd1f1c27f0000e9710a00004d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd780f5bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9a90800004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b8b8cdd2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a5d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0cdd2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28ced2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd250f85d00c0000488d64240841ff74240841ff74241041ff7424184d8b6c24204983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9500b00004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bef8c7d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9fd0900004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b800cfd2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e9910800004d89f64983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424204983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38cfd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a5d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70cfd2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8cfd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc270f851a0f000041ff76084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9af0d00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d184d896e0849bd48105bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb86fd1f1c27f0000e9df0b00004c8b7424184d8b6e084d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d184d896e0849bd90135bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb86fd1f1c27f0000e90f0a00004c8b7424284d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb86fd1f1c27f0000e9b70800004c8b6c243041ff75184d89f64983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424384d8b6e204c8b6424304983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8d0d1d2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40d2d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78d2d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0d2d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea826d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0d2d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe290f85780e0000488d64240841ff75084983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9080d00004c8b7424084d8b2e4d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b8b8d3d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9980b00004c8b6c241841ff75084d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f44983fe057d0f49bdb86fd1f1c27f0000e9c10300004c8b7424204d8b6e184d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8a0dfd2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424284d89f44983fe077d0f49beb86fd1f1c27f0000e9500200004c8b7424304d8b6e204d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b810e0d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424404d8b6e104c8b6424384983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b880e0d2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0e0d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e1d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60e1d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0d2d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98e1d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd2b0f85570b00004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9e10900004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7618498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e98f0800004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c89304c8b7424284d8b7618498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08b3d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38b3d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70e2d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc2d0f85510900004d89f44d8b74240841ff7424104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8b5d1f1c27f0000e9dd0700004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48e3d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe2f0f854c0900004d8b750841ff75104983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8b5d1f1c27f0000e9dd0700004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28e4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd310f85b60c0000488d64240841ff74240841ff7424104d8b6c241841ff7424204983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9360b00004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bee8c7d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9e30900004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104d89ee4983fd057d0f49bdb86fd1f1c27f0000e9150200004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893049bee8c7d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60e2d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8e4d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0e4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc330f85e40b000041ff76084d8b661041ff76184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb86fd1f1c27f0000e9710a00004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be88c5d0f0c27f0000498b1648b8c8e5d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9090900004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d184d896e0849bd68525bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda038d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00e6d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe350f85c50900004d89ee4d8b6e0841ff76104983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdd8b5d1f1c27f0000e9530800004d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bda8525bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0e6d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd370f8598070000488d64240841ff7424084983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0e7d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc390f85310e00004d8b660841ff76204983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9c20c00004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d384d896e0849bde8525bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9fa0a00004d89ed4d89ee4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fd017d0c49bdb86fd1f1c27f0000eb434d89ec4983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff2349bdc0c5d2f1c27f00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda070d1f1c27f00004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64d89f54983fe057d0f49bdb86fd1f1c27f0000e91c0900004d89ed4d89ee4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983fd017d0c49bdb86fd1f1c27f0000eb434d89ec4983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff2349bdc0c5d2f1c27f00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bda070d1f1c27f00004d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080300000049c745000100000041554d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424404d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38c6d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70c6d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8c6d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e8d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe3b0f85c40c00004d8b750841ff751041ff751841ff75204983ec0241547115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242849bdb86fd1f1c27f0000e94d0b00004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7618498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9fb0900004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be88c5d0f0c27f0000498b1648b898e9d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e98f0800004d89f64983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983ee027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c89304c8b7424404d8b7618498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda802d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40ead2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea826d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78ead2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89e64983fc037d0b48b8704cd1f1c27f0000c341ff75084983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50ebd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@13230,1,@1126|32,0,@10414 81,0,@9475 115,0,@10678 152,0,@9475 204,0,@4691 256,0,@5863 353,0,@10678 391,0,@9475 443,0,@4696 456,0,@12975 496,0,@10678 534,0,@9475 584,0,@4698 618,0,@10678 658,0,@9475 692,0,@10678 730,0,@9475 780,0,@4699 814,0,@10678 852,0,@9475 902,0,@4699 936,0,@10678 973,0,@9475 1023,0,@4615 1057,0,@10678 1095,0,@9475 1145,0,@4699 1190,0,@9475 1240,0,@4699 1285,0,@10681 1333,0,@10236 1378,0,@11391 1422,0,@10236 1467,0,@10685 1555,0,@10236 1599,0,@11393 1644,0,@10236 1688,0,@10685 1776,0,@10236 1821,0,@11395 1865,0,@10236 1910,0,@10685 1998,0,@10236 2042,0,@11397 2087,0,@10236 2131,0,@10685 2219,0,@10236 2264,0,@11399 2312,0,@10688 2404,0,@10678 2442,0,@9475 2494,0,@4691 2546,0,@5869 2654,0,@9475 2706,0,@4691 2758,0,@5870 2871,0,@10681 2919,0,@10236 2964,0,@12981 3008,0,@10236 3053,0,@10685 3141,0,@10236 3185,0,@12983 3234,0,@10236 3278,0,@10685 3366,0,@10236 3411,0,@12559 3455,0,@10236 3500,0,@10685 3588,0,@10236 3632,0,@12985 3677,0,@10236 3721,0,@10685 3809,0,@10236 3854,0,@12987 3902,0,@10236 3947,0,@10685 4035,0,@10236 4079,0,@12989 4128,0,@10688 4273,0,@10236 4318,0,@12991 4408,0,@10414 4467,0,@9475 4501,0,@10678 4530,0,@9475 4613,0,@10678 4644,0,@9475 4678,0,@10678 4716,0,@9475 4766,0,@4699 4800,0,@10678 4838,0,@9475 4888,0,@4699 4922,0,@10678 4959,0,@9475 5009,0,@4615 5043,0,@10678 5081,0,@9475 5131,0,@4699 5176,0,@9475 5226,0,@4699 5271,0,@10681 5319,0,@10236 5364,0,@11391 5408,0,@10236 5453,0,@10685 5541,0,@10236 5585,0,@11393 5630,0,@10236 5674,0,@10685 5762,0,@10236 5807,0,@11395 5851,0,@10236 5896,0,@10685 5984,0,@10236 6028,0,@11397 6073,0,@10236 6117,0,@10685 6205,0,@10236 6250,0,@11399 6298,0,@10688 6392,0,@9475 6491,0,@10681 6540,0,@10236 6584,0,@12999 6629,0,@10236 6673,0,@10685 6761,0,@10236 6806,0,@12559 6850,0,@10236 6895,0,@10685 6983,0,@10236 7027,0,@13001 7076,0,@10688 7221,0,@10236 7266,0,@13003 7356,0,@10414 7400,0,@9475 7434,0,@10678 7472,0,@9475 7555,0,@10678 7593,0,@9475 7645,0,@4696 7658,0,@13010 7698,0,@10678 7735,0,@9475 7818,0,@10678 7856,0,@9475 7906,0,@4698 7953,0,@9475 7987,0,@10678 8025,0,@9475 8075,0,@4699 8109,0,@10678 8147,0,@9475 8197,0,@4699 8231,0,@10678 8268,0,@9475 8318,0,@4615 8352,0,@10678 8390,0,@9475 8440,0,@4699 8485,0,@9475 8535,0,@4699 8580,0,@10681 8628,0,@10236 8673,0,@11391 8717,0,@10236 8762,0,@10685 8850,0,@10236 8894,0,@11393 8939,0,@10236 8983,0,@10685 9071,0,@10236 9116,0,@11395 9160,0,@10236 9205,0,@10685 9293,0,@10236 9337,0,@11397 9382,0,@10236 9426,0,@10685 9514,0,@10236 9559,0,@11399 9607,0,@10688 9710,0,@10681 9759,0,@10236 9803,0,@12559 9848,0,@10236 9892,0,@10685 9980,0,@10236 10025,0,@13012 10069,0,@10236 10114,0,@10685 10202,0,@10236 10246,0,@13014 10291,0,@10236 10335,0,@10685 10423,0,@10236 10468,0,@12914 10516,0,@10236 10561,0,@10685 10649,0,@10236 10693,0,@11447 10742,0,@10688 10887,0,@10236 10932,0,@13016 11022,0,@10414 11068,0,@9475 11102,0,@10678 11140,0,@9475 11192,0,@4696 11205,0,@13023 11245,0,@10678 11285,0,@9475 11319,0,@10678 11357,0,@9475 11407,0,@4699 11441,0,@10678 11479,0,@9475 11529,0,@4699 11563,0,@10678 11600,0,@9475 11650,0,@4615 11684,0,@10678 11722,0,@9475 11772,0,@4699 11817,0,@9475 11867,0,@4699 11912,0,@10681 11960,0,@10236 12005,0,@11391 12049,0,@10236 12094,0,@10685 12182,0,@10236 12226,0,@11393 12271,0,@10236 12315,0,@10685 12403,0,@10236 12448,0,@11395 12492,0,@10236 12537,0,@10685 12625,0,@10236 12669,0,@11397 12714,0,@10236 12758,0,@10685 12846,0,@10236 12891,0,@11399 12939,0,@10688 13031,0,@10678 13071,0,@9475 13105,0,@10678 13143,0,@9475 13193,0,@4699 13227,0,@10678 13265,0,@9475 13315,0,@4699 13349,0,@10678 13386,0,@9475 13436,0,@4615 13470,0,@10678 13508,0,@9475 13558,0,@4699 13603,0,@9475 13653,0,@4699 13698,0,@10681 13746,0,@10236 13791,0,@11391 13835,0,@10236 13880,0,@10685 13968,0,@10236 14012,0,@11393 14057,0,@10236 14101,0,@10685 14189,0,@10236 14234,0,@11395 14278,0,@10236 14323,0,@10685 14411,0,@10236 14455,0,@11397 14500,0,@10236 14544,0,@10685 14632,0,@10236 14677,0,@11399 14725,0,@10688 14817,0,@10678 14855,0,@9475 14907,0,@4691 14959,0,@5873 15066,0,@9475 15160,0,@10681 15209,0,@10236 15253,0,@11721 15298,0,@10236 15342,0,@10685 15430,0,@10236 15475,0,@13026 15523,0,@10236 15568,0,@10685 15656,0,@10236 15700,0,@12559 15745,0,@10236 15789,0,@10685 15877,0,@10236 15922,0,@13028 15966,0,@10236 16011,0,@10685 16099,0,@10236 16143,0,@12914 16192,0,@10688 16337,0,@10236 16382,0,@13030 16472,0,@10414 16517,0,@9475 16551,0,@10678 16589,0,@9475 16641,0,@4696 16654,0,@13037 16694,0,@10678 16732,0,@9475 16815,0,@10678 16855,0,@9475 16889,0,@10678 16927,0,@9475 16977,0,@4699 17011,0,@10678 17049,0,@9475 17099,0,@4699 17133,0,@10678 17170,0,@9475 17220,0,@4615 17254,0,@10678 17292,0,@9475 17342,0,@4699 17387,0,@9475 17437,0,@4699 17482,0,@10681 17530,0,@10236 17575,0,@11391 17619,0,@10236 17664,0,@10685 17752,0,@10236 17796,0,@11393 17841,0,@10236 17885,0,@10685 17973,0,@10236 18018,0,@11395 18062,0,@10236 18107,0,@10685 18195,0,@10236 18239,0,@11397 18284,0,@10236 18328,0,@10685 18416,0,@10236 18461,0,@11399 18509,0,@10688 18601,0,@10678 18638,0,@9475 18721,0,@10678 18759,0,@9475 18811,0,@4696 18824,0,@13043 18875,0,@9475 18969,0,@10681 19017,0,@10236 19062,0,@13049 19106,0,@10236 19151,0,@10685 19239,0,@10236 19283,0,@13051 19332,0,@10236 19376,0,@10685 19464,0,@10236 19509,0,@11721 19553,0,@10236 19598,0,@10685 19686,0,@10236 19730,0,@12559 19775,0,@10236 19819,0,@10685 19907,0,@10236 19952,0,@13053 19996,0,@10236 20041,0,@10685 20129,0,@10236 20173,0,@13055 20222,0,@10688 20367,0,@10236 20412,0,@13057 20502,0,@10414 20554,0,@9475 20588,0,@10678 20617,0,@9475 20667,0,@4731 20701,0,@10678 20732,0,@9475 20766,0,@10678 20804,0,@9475 20854,0,@4699 20888,0,@10678 20926,0,@9475 20976,0,@4699 21010,0,@10678 21047,0,@9475 21097,0,@4615 21131,0,@10678 21169,0,@9475 21219,0,@4699 21264,0,@9475 21314,0,@4699 21359,0,@10681 21407,0,@10236 21452,0,@11391 21496,0,@10236 21541,0,@10685 21629,0,@10236 21673,0,@11393 21718,0,@10236 21762,0,@10685 21850,0,@10236 21895,0,@11395 21939,0,@10236 21984,0,@10685 22072,0,@10236 22116,0,@11397 22161,0,@10236 22205,0,@10685 22293,0,@10236 22338,0,@11399 22386,0,@10688 22480,0,@9475 22579,0,@10681 22628,0,@10236 22672,0,@11492 22717,0,@10236 22761,0,@10685 22849,0,@10236 22894,0,@12559 22938,0,@10236 22983,0,@10685 23071,0,@10236 23115,0,@13061 23164,0,@10688 23309,0,@10236 23354,0,@13063 23444,0,@10414 23495,0,@9475 23529,0,@10678 23569,0,@9475 23603,0,@10678 23641,0,@9475 23691,0,@4699 23725,0,@10678 23763,0,@9475 23813,0,@4699 23847,0,@10678 23884,0,@9475 23934,0,@4615 23968,0,@10678 24006,0,@9475 24056,0,@4699 24101,0,@9475 24151,0,@4699 24196,0,@10681 24244,0,@10236 24289,0,@11391 24333,0,@10236 24378,0,@10685 24466,0,@10236 24510,0,@11393 24555,0,@10236 24599,0,@10685 24687,0,@10236 24732,0,@11395 24776,0,@10236 24821,0,@10685 24909,0,@10236 24953,0,@11397 24998,0,@10236 25042,0,@10685 25130,0,@10236 25175,0,@11399 25223,0,@10688 25315,0,@10678 25355,0,@9475 25389,0,@10678 25427,0,@9475 25477,0,@4699 25511,0,@10678 25549,0,@9475 25599,0,@4699 25633,0,@10678 25670,0,@9475 25720,0,@4615 25754,0,@10678 25792,0,@9475 25842,0,@4699 25887,0,@9475 25937,0,@4699 25982,0,@10681 26030,0,@10236 26075,0,@11391 26119,0,@10236 26164,0,@10685 26252,0,@10236 26296,0,@11393 26341,0,@10236 26385,0,@10685 26473,0,@10236 26518,0,@11395 26562,0,@10236 26607,0,@10685 26695,0,@10236 26739,0,@11397 26784,0,@10236 26828,0,@10685 26916,0,@10236 26961,0,@11399 27009,0,@10688 27101,0,@10678 27139,0,@9475 27189,0,@4615 27223,0,@10678 27263,0,@9475 27297,0,@10678 27335,0,@9475 27385,0,@4699 27419,0,@10678 27457,0,@9475 27507,0,@4699 27541,0,@10678 27578,0,@9475 27628,0,@4615 27662,0,@10678 27700,0,@9475 27750,0,@4699 27795,0,@9475 27845,0,@4699 27890,0,@10681 27938,0,@10236 27983,0,@11391 28027,0,@10236 28072,0,@10685 28160,0,@10236 28204,0,@11393 28249,0,@10236 28293,0,@10685 28381,0,@10236 28426,0,@11395 28470,0,@10236 28515,0,@10685 28603,0,@10236 28647,0,@11397 28692,0,@10236 28736,0,@10685 28824,0,@10236 28869,0,@11399 28917,0,@10688 29020,0,@9475 29070,0,@4615 29115,0,@10681 29164,0,@10236 29208,0,@13070 29253,0,@10236 29297,0,@10685 29385,0,@10236 29430,0,@13072 29474,0,@10236 29519,0,@10685 29607,0,@10236 29651,0,@13074 29696,0,@10236 29740,0,@10685 29828,0,@10236 29873,0,@13076 29917,0,@10236 29962,0,@10685 30050,0,@10236 30094,0,@12559 30143,0,@10688 30288,0,@10236 30333,0,@13078 30423,0,@10414 30487,0,@9475 30521,0,@10678 30550,0,@9475 30600,0,@4738 30634,0,@10678 30665,0,@9475 30699,0,@10678 30737,0,@9475 30787,0,@4699 30821,0,@10678 30859,0,@9475 30909,0,@4699 30943,0,@10678 30980,0,@9475 31030,0,@4615 31064,0,@10678 31102,0,@9475 31152,0,@4699 31197,0,@9475 31247,0,@4699 31292,0,@10681 31340,0,@10236 31385,0,@11391 31429,0,@10236 31474,0,@10685 31562,0,@10236 31606,0,@11393 31651,0,@10236 31695,0,@10685 31783,0,@10236 31828,0,@11395 31872,0,@10236 31917,0,@10685 32005,0,@10236 32049,0,@11397 32094,0,@10236 32138,0,@10685 32226,0,@10236 32271,0,@11399 32319,0,@10688 32413,0,@9475 32470,0,@4691 32483,0,@13108 32539,0,@10681 32588,0,@10236 32632,0,@13110 32677,0,@10236 32721,0,@10685 32809,0,@10236 32854,0,@12559 32898,0,@10236 32943,0,@10685 33031,0,@10236 33075,0,@13112 33124,0,@10688 33269,0,@10236 33314,0,@13114 33404,0,@10414 33432,0,@13121 33457,0,@10414 33508,0,@9475 33542,0,@11126 33571,0,@9475 33623,0,@4691 33675,0,@5882 33776,0,@9475 33810,0,@10678 33848,0,@9475 33898,0,@4699 33932,0,@10678 33970,0,@9475 34020,0,@4699 34054,0,@10678 34091,0,@9475 34141,0,@4615 34175,0,@10678 34213,0,@9475 34263,0,@4699 34308,0,@9475 34358,0,@4699 34403,0,@10681 34452,0,@10236 34496,0,@11391 34541,0,@10236 34585,0,@10685 34673,0,@10236 34718,0,@11393 34762,0,@10236 34807,0,@10685 34895,0,@10236 34939,0,@11395 34984,0,@10236 35028,0,@10685 35116,0,@10236 35161,0,@11397 35205,0,@10236 35250,0,@10685 35338,0,@10236 35382,0,@11399 35431,0,@10688 35534,0,@11355 35582,0,@10236 35627,0,@10685 35719,0,@11357 35864,0,@10236 35909,0,@13129 35999,0,@10414 36048,0,@9475 36082,0,@11126 36111,0,@9475 36163,0,@4691 36215,0,@5883 36316,0,@9475 36350,0,@10678 36388,0,@9475 36438,0,@4699 36472,0,@10678 36510,0,@9475 36560,0,@4699 36594,0,@10678 36631,0,@9475 36681,0,@4615 36715,0,@10678 36753,0,@9475 36803,0,@4699 36848,0,@9475 36898,0,@4699 36943,0,@10681 36992,0,@10236 37036,0,@11391 37081,0,@10236 37125,0,@10685 37213,0,@10236 37258,0,@11393 37302,0,@10236 37347,0,@10685 37435,0,@10236 37479,0,@11395 37524,0,@10236 37568,0,@10685 37656,0,@10236 37701,0,@11397 37745,0,@10236 37790,0,@10685 37878,0,@10236 37922,0,@11399 37971,0,@10688 38074,0,@11355 38122,0,@10236 38167,0,@10685 38259,0,@11357 38404,0,@10236 38449,0,@13142 38539,0,@10414 38594,0,@9475 38628,0,@10678 38657,0,@9475 38709,0,@4696 38722,0,@13149 38762,0,@10678 38793,0,@9475 38827,0,@10678 38865,0,@9475 38915,0,@4699 38949,0,@10678 38987,0,@9475 39037,0,@4699 39071,0,@10678 39108,0,@9475 39158,0,@4615 39192,0,@10678 39230,0,@9475 39280,0,@4699 39325,0,@9475 39375,0,@4699 39420,0,@10681 39468,0,@10236 39513,0,@11391 39557,0,@10236 39602,0,@10685 39690,0,@10236 39734,0,@11393 39779,0,@10236 39823,0,@10685 39911,0,@10236 39956,0,@11395 40000,0,@10236 40045,0,@10685 40133,0,@10236 40177,0,@11397 40222,0,@10236 40266,0,@10685 40354,0,@10236 40399,0,@11399 40447,0,@10688 40541,0,@9475 40598,0,@4691 40650,0,@5888 40763,0,@10681 40812,0,@10236 40856,0,@13151 40901,0,@10236 40945,0,@10685 41033,0,@10236 41078,0,@12559 41122,0,@10236 41167,0,@10685 41255,0,@10236 41299,0,@12914 41348,0,@10688 41493,0,@10236 41538,0,@13153 41628,0,@10414 41679,0,@9475 41713,0,@10678 41742,0,@9475 41794,0,@4691 41846,0,@5889 41943,0,@10678 41975,0,@9475 41997,0,@10678 42023,0,@9475 42050,0,@9475 42066,0,@13161 42109,0,@10688 42200,0,@10678 42232,0,@9475 42254,0,@10678 42280,0,@9475 42307,0,@9475 42323,0,@13161 42366,0,@10688 42461,0,@9475 42495,0,@10678 42533,0,@9475 42583,0,@4699 42617,0,@10678 42655,0,@9475 42705,0,@4699 42739,0,@10678 42776,0,@9475 42826,0,@4615 42860,0,@10678 42898,0,@9475 42948,0,@4699 42993,0,@9475 43043,0,@4699 43088,0,@10681 43137,0,@10236 43181,0,@11391 43226,0,@10236 43270,0,@10685 43358,0,@10236 43403,0,@11393 43447,0,@10236 43492,0,@10685 43580,0,@10236 43624,0,@11395 43669,0,@10236 43713,0,@10685 43801,0,@10236 43846,0,@11397 43890,0,@10236 43935,0,@10685 44023,0,@10236 44067,0,@11399 44116,0,@10688 44219,0,@10681 44267,0,@10236 44312,0,@12559 44356,0,@10236 44401,0,@10685 44489,0,@10236 44533,0,@13166 44578,0,@10236 44622,0,@10685 44710,0,@10236 44755,0,@13168 44799,0,@10236 44844,0,@10685 44932,0,@10236 44976,0,@13170 45025,0,@10688 45170,0,@10236 45215,0,@13172 45305,0,@10414 45369,0,@9475 45403,0,@10678 45432,0,@9475 45515,0,@10678 45544,0,@9475 45601,0,@4691 45653,0,@5890 45750,0,@10678 45781,0,@9475 45815,0,@10678 45853,0,@9475 45903,0,@4699 45937,0,@10678 45975,0,@9475 46025,0,@4699 46059,0,@10678 46096,0,@9475 46146,0,@4615 46180,0,@10678 46218,0,@9475 46268,0,@4699 46313,0,@9475 46363,0,@4699 46408,0,@10681 46456,0,@10236 46501,0,@11391 46545,0,@10236 46590,0,@10685 46678,0,@10236 46722,0,@11393 46767,0,@10236 46811,0,@10685 46899,0,@10236 46944,0,@11395 46988,0,@10236 47033,0,@10685 47121,0,@10236 47165,0,@11397 47210,0,@10236 47254,0,@10685 47342,0,@10236 47387,0,@11399 47435,0,@10688 47531,0,@9475 47565,0,@10678 47603,0,@9475 47653,0,@4699 47687,0,@10678 47725,0,@9475 47775,0,@4699 47809,0,@10678 47846,0,@9475 47896,0,@4615 47930,0,@10678 47968,0,@9475 48018,0,@4699 48063,0,@9475 48113,0,@4699 48158,0,@10681 48207,0,@10236 48251,0,@11391 48296,0,@10236 48340,0,@10685 48428,0,@10236 48473,0,@11393 48517,0,@10236 48562,0,@10685 48650,0,@10236 48694,0,@11395 48739,0,@10236 48783,0,@10685 48871,0,@10236 48916,0,@11397 48960,0,@10236 49005,0,@10685 49093,0,@10236 49137,0,@11399 49186,0,@10688 49289,0,@10681 49337,0,@10236 49382,0,@12559 49426,0,@10236 49471,0,@10685 49559,0,@10236 49603,0,@13028 49648,0,@10236 49692,0,@10685 49780,0,@10236 49825,0,@13179 49873,0,@10236 49918,0,@10685 50006,0,@10236 50050,0,@11992 50099,0,@10688 50244,0,@10236 50289,0,@13181 50379,0,@10414 50428,0,@9475 50462,0,@10678 50500,0,@9475 50552,0,@4696 50565,0,@13188 50605,0,@10678 50645,0,@9475 50679,0,@10678 50717,0,@9475 50767,0,@4699 50801,0,@10678 50839,0,@9475 50889,0,@4699 50923,0,@10678 50960,0,@9475 51010,0,@4615 51044,0,@10678 51082,0,@9475 51132,0,@4699 51177,0,@9475 51227,0,@4699 51272,0,@10681 51320,0,@10236 51365,0,@11391 51409,0,@10236 51454,0,@10685 51542,0,@10236 51586,0,@11393 51631,0,@10236 51675,0,@10685 51763,0,@10236 51808,0,@11395 51852,0,@10236 51897,0,@10685 51985,0,@10236 52029,0,@11397 52074,0,@10236 52118,0,@10685 52206,0,@10236 52251,0,@11399 52299,0,@10688 52391,0,@10678 52428,0,@9475 52478,0,@4615 52512,0,@10678 52550,0,@9475 52602,0,@4696 52615,0,@13190 52666,0,@9475 52718,0,@4696 52731,0,@13193 52787,0,@10681 52836,0,@10236 52880,0,@11492 52925,0,@10236 52969,0,@10685 53057,0,@10236 53102,0,@13195 53150,0,@10236 53195,0,@10685 53283,0,@10236 53327,0,@10683 53372,0,@10236 53416,0,@10685 53504,0,@10236 53549,0,@12559 53593,0,@10236 53638,0,@10685 53726,0,@10236 53770,0,@12914 53819,0,@10688 53964,0,@10236 54009,0,@13197 54099,0,@10414 54160,0,@9475 54194,0,@10678 54223,0,@9475 54275,0,@4696 54288,0,@13204 54328,0,@10678 54357,0,@9475 54412,0,@4698 54446,0,@10678 54477,0,@9475 54511,0,@10678 54549,0,@9475 54599,0,@4699 54633,0,@10678 54671,0,@9475 54721,0,@4699 54755,0,@10678 54792,0,@9475 54842,0,@4615 54876,0,@10678 54914,0,@9475 54964,0,@4699 55009,0,@9475 55059,0,@4699 55104,0,@10681 55152,0,@10236 55197,0,@11391 55241,0,@10236 55286,0,@10685 55374,0,@10236 55418,0,@11393 55463,0,@10236 55507,0,@10685 55595,0,@10236 55640,0,@11395 55684,0,@10236 55729,0,@10685 55817,0,@10236 55861,0,@11397 55906,0,@10236 55950,0,@10685 56038,0,@10236 56083,0,@11399 56131,0,@10688 56225,0,@9475 56282,0,@4691 56334,0,@5895 56447,0,@10681 56495,0,@10236 56540,0,@11458 56584,0,@10236 56629,0,@10685 56717,0,@10236 56761,0,@12559 56806,0,@10236 56850,0,@10685 56938,0,@10236 56983,0,@12889 57027,0,@10236 57072,0,@10685 57160,0,@10236 57204,0,@12914 57253,0,@10688 57398,0,@10236 57443,0,@13212 57533,0,@10414 57586,0,@9475 57620,0,@10678 57651,0,@9475 57685,0,@10678 57723,0,@9475 57773,0,@4699 57807,0,@10678 57845,0,@9475 57895,0,@4699 57929,0,@10678 57966,0,@9475 58016,0,@4615 58050,0,@10678 58088,0,@9475 58138,0,@4699 58183,0,@9475 58233,0,@4699 58278,0,@10681 58326,0,@10236 58371,0,@11391 58415,0,@10236 58460,0,@10685 58548,0,@10236 58592,0,@11393 58637,0,@10236 58681,0,@10685 58769,0,@10236 58814,0,@11395 58858,0,@10236 58903,0,@10685 58991,0,@10236 59035,0,@11397 59080,0,@10236 59124,0,@10685 59212,0,@10236 59257,0,@11399 59305,0,@10688 59397,0,@10678 59426,0,@9475 59516,0,@9475 59615,0,@10681 59664,0,@10236 59708,0,@13219 59753,0,@10236 59797,0,@10685 59885,0,@10236 59930,0,@13221 59974,0,@10236 60019,0,@10685 60107,0,@10236 60151,0,@12559 60200,0,@10688 60345,0,@10236 60390,0,@13223 60480,0,@10414 60535,0,@9475 60569,0,@10678 60598,0,@9475 60650,0,@4691 60702,0,@5897 60799,0,@10678 60828,0,@9475 60885,0,@4696 60898,0,@13231 60942,0,@9475 60976,0,@10678 61014,0,@9475 61064,0,@4699 61098,0,@10678 61136,0,@9475 61186,0,@4699 61220,0,@10678 61257,0,@9475 61307,0,@4615 61341,0,@10678 61379,0,@9475 61429,0,@4699 61474,0,@9475 61524,0,@4699 61569,0,@10681 61617,0,@10236 61662,0,@11391 61706,0,@10236 61751,0,@10685 61839,0,@10236 61883,0,@11393 61928,0,@10236 61972,0,@10685 62060,0,@10236 62105,0,@11395 62149,0,@10236 62194,0,@10685 62282,0,@10236 62326,0,@11397 62371,0,@10236 62415,0,@10685 62503,0,@10236 62548,0,@11399 62596,0,@10688 62699,0,@10681 62748,0,@10236 62792,0,@12559 62837,0,@10236 62881,0,@10685 62969,0,@10236 63014,0,@12914 63062,0,@10236 63107,0,@10685 63195,0,@10236 63239,0,@13233 63288,0,@10688 63433,0,@10236 63478,0,@13235 63568,0,@10414 63634,0,@9475 63668,0,@10678 63697,0,@9475 63747,0,@4735 63781,0,@10678 63810,0,@9475 63867,0,@4696 63880,0,@13242 63920,0,@10678 63949,0,@9475 64004,0,@4615 64042,0,@9475 64076,0,@10678 64114,0,@9475 64164,0,@4699 64198,0,@10678 64236,0,@9475 64286,0,@4699 64320,0,@10678 64357,0,@9475 64407,0,@4615 64441,0,@10678 64479,0,@9475 64529,0,@4699 64574,0,@9475 64624,0,@4699 64669,0,@10681 64718,0,@10236 64762,0,@11391 64807,0,@10236 64851,0,@10685 64939,0,@10236 64984,0,@11393 65028,0,@10236 65073,0,@10685 65161,0,@10236 65205,0,@11395 65250,0,@10236 65294,0,@10685 65382,0,@10236 65427,0,@11397 65471,0,@10236 65516,0,@10685 65604,0,@10236 65648,0,@11399 65697,0,@10688 65800,0,@10681 65848,0,@10236 65893,0,@12559 65937,0,@10236 65982,0,@10685 66070,0,@10236 66114,0,@13244 66159,0,@10236 66203,0,@10685 66291,0,@10236 66336,0,@12914 66384,0,@10236 66429,0,@10685 66517,0,@10236 66561,0,@13246 66610,0,@10688 66755,0,@10236 66800,0,@13248 66890,0,@10414 66935,0,@9475 66969,0,@10678 67006,0,@9475 67058,0,@4691 67110,0,@5900 67207,0,@10678 67245,0,@9475 67297,0,@4691 67349,0,@5904 67446,0,@10678 67484,0,@9475 67534,0,@4698 67568,0,@10678 67608,0,@9475 67642,0,@10678 67680,0,@9475 67730,0,@4699 67764,0,@10678 67802,0,@9475 67852,0,@4699 67886,0,@10678 67923,0,@9475 67973,0,@4615 68007,0,@10678 68045,0,@9475 68095,0,@4699 68140,0,@9475 68190,0,@4699 68235,0,@10681 68283,0,@10236 68328,0,@11391 68372,0,@10236 68417,0,@10685 68505,0,@10236 68549,0,@11393 68594,0,@10236 68638,0,@10685 68726,0,@10236 68771,0,@11395 68815,0,@10236 68860,0,@10685 68948,0,@10236 68992,0,@11397 69037,0,@10236 69081,0,@10685 69169,0,@10236 69214,0,@11399 69262,0,@10688 69365,0,@9475 69417,0,@4696 69430,0,@13267 69486,0,@10681 69535,0,@10236 69579,0,@13271 69624,0,@10236 69668,0,@10685 69756,0,@10236 69801,0,@12559 69845,0,@10236 69890,0,@10685 69978,0,@10236 70022,0,@13273 70067,0,@10236 70111,0,@10685 70199,0,@10236 70244,0,@13275 70292,0,@10236 70337,0,@10685 70425,0,@10236 70469,0,@12021 70518,0,@10688 70663,0,@10236 70708,0,@13277 70798,0,@10414 70847,0,@9475 70881,0,@10678 70918,0,@9475 70970,0,@4691 70983,0,@13284 71023,0,@10678 71063,0,@9475 71097,0,@10678 71135,0,@9475 71185,0,@4699 71219,0,@10678 71257,0,@9475 71307,0,@4699 71341,0,@10678 71378,0,@9475 71428,0,@4615 71462,0,@10678 71500,0,@9475 71550,0,@4699 71595,0,@9475 71645,0,@4699 71690,0,@10681 71738,0,@10236 71783,0,@11391 71827,0,@10236 71872,0,@10685 71960,0,@10236 72004,0,@11393 72049,0,@10236 72093,0,@10685 72181,0,@10236 72226,0,@11395 72270,0,@10236 72315,0,@10685 72403,0,@10236 72447,0,@11397 72492,0,@10236 72536,0,@10685 72624,0,@10236 72669,0,@11399 72717,0,@10688 72809,0,@10678 72847,0,@9475 72899,0,@4696 72912,0,@13387 72952,0,@10678 72990,0,@9475 73042,0,@4696 73055,0,@13391 73106,0,@9475 73158,0,@4696 73171,0,@13395 73227,0,@10681 73276,0,@10236 73320,0,@13399 73365,0,@10236 73409,0,@10685 73497,0,@10236 73542,0,@13401 73590,0,@10236 73635,0,@10685 73723,0,@10236 73767,0,@13403 73816,0,@10236 73860,0,@10685 73948,0,@10236 73993,0,@12559 74037,0,@10236 74082,0,@10685 74170,0,@10236 74214,0,@13275 74263,0,@10688 74408,0,@10236 74453,0,@13405 74543,0,@10414 74599,0,@9475 74633,0,@10678 74662,0,@9475 74745,0,@10678 74776,0,@9475 74810,0,@10678 74848,0,@9475 74898,0,@4699 74932,0,@10678 74970,0,@9475 75020,0,@4699 75054,0,@10678 75091,0,@9475 75141,0,@4615 75175,0,@10678 75213,0,@9475 75263,0,@4699 75308,0,@9475 75358,0,@4699 75403,0,@10681 75451,0,@10236 75496,0,@11391 75540,0,@10236 75585,0,@10685 75673,0,@10236 75717,0,@11393 75762,0,@10236 75806,0,@10685 75894,0,@10236 75939,0,@11395 75983,0,@10236 76028,0,@10685 76116,0,@10236 76160,0,@11397 76205,0,@10236 76249,0,@10685 76337,0,@10236 76382,0,@11399 76430,0,@10688 76524,0,@9475 76623,0,@10681 76672,0,@10236 76716,0,@12999 76761,0,@10236 76805,0,@10685 76893,0,@10236 76938,0,@12559 76982,0,@10236 77027,0,@10685 77115,0,@10236 77159,0,@13001 77208,0,@10688 77353,0,@10236 77398,0,@13412 77488,0,@10414 77542,0,@9475 77576,0,@11126 77605,0,@9475 77692,0,@9475 77726,0,@10678 77764,0,@9475 77814,0,@4699 77848,0,@10678 77886,0,@9475 77936,0,@4699 77970,0,@10678 78007,0,@9475 78057,0,@4615 78091,0,@10678 78129,0,@9475 78179,0,@4699 78224,0,@9475 78274,0,@4699 78319,0,@10681 78368,0,@10236 78412,0,@11391 78457,0,@10236 78501,0,@10685 78589,0,@10236 78634,0,@11393 78678,0,@10236 78723,0,@10685 78811,0,@10236 78855,0,@11395 78900,0,@10236 78944,0,@10685 79032,0,@10236 79077,0,@11397 79121,0,@10236 79166,0,@10685 79254,0,@10236 79298,0,@11399 79347,0,@10688 79450,0,@11355 79498,0,@10236 79543,0,@10685 79635,0,@11357 79780,0,@10236 79825,0,@13419 79915,0,@10414 79963,0,@9475 79997,0,@11126 80026,0,@9475 80113,0,@9475 80147,0,@10678 80185,0,@9475 80235,0,@4699 80269,0,@10678 80307,0,@9475 80357,0,@4699 80391,0,@10678 80428,0,@9475 80478,0,@4615 80512,0,@10678 80550,0,@9475 80600,0,@4699 80645,0,@9475 80695,0,@4699 80740,0,@10681 80789,0,@10236 80833,0,@11391 80878,0,@10236 80922,0,@10685 81010,0,@10236 81055,0,@11393 81099,0,@10236 81144,0,@10685 81232,0,@10236 81276,0,@11395 81321,0,@10236 81365,0,@10685 81453,0,@10236 81498,0,@11397 81542,0,@10236 81587,0,@10685 81675,0,@10236 81719,0,@11399 81768,0,@10688 81871,0,@11355 81919,0,@10236 81964,0,@10685 82056,0,@11357 82201,0,@10236 82246,0,@13426 82336,0,@10414 82402,0,@9475 82436,0,@10678 82465,0,@9475 82515,0,@4734 82549,0,@10678 82580,0,@9475 82614,0,@10678 82652,0,@9475 82702,0,@4699 82736,0,@10678 82774,0,@9475 82824,0,@4699 82858,0,@10678 82895,0,@9475 82945,0,@4615 82979,0,@10678 83017,0,@9475 83067,0,@4699 83112,0,@9475 83162,0,@4699 83207,0,@10681 83255,0,@10236 83300,0,@11391 83344,0,@10236 83389,0,@10685 83477,0,@10236 83521,0,@11393 83566,0,@10236 83610,0,@10685 83698,0,@10236 83743,0,@11395 83787,0,@10236 83832,0,@10685 83920,0,@10236 83964,0,@11397 84009,0,@10236 84053,0,@10685 84141,0,@10236 84186,0,@11399 84234,0,@10688 84326,0,@10678 84355,0,@9475 84410,0,@4615 84446,0,@9475 84501,0,@4734 84546,0,@10681 84594,0,@10236 84639,0,@11456 84683,0,@10236 84728,0,@10685 84816,0,@10236 84860,0,@10683 84905,0,@10236 84949,0,@10685 85037,0,@10236 85082,0,@12559 85126,0,@10236 85171,0,@10685 85259,0,@10236 85303,0,@13430 85352,0,@10688 85497,0,@10236 85542,0,@13432 85632,0,@10414 85685,0,@9475 85719,0,@10678 85748,0,@9475 85800,0,@4696 85813,0,@13439 85853,0,@10678 85882,0,@9475 85939,0,@4691 85991,0,@5945 86092,0,@9475 86126,0,@10678 86164,0,@9475 86214,0,@4699 86248,0,@10678 86286,0,@9475 86336,0,@4699 86370,0,@10678 86407,0,@9475 86457,0,@4615 86491,0,@10678 86529,0,@9475 86579,0,@4699 86624,0,@9475 86674,0,@4699 86719,0,@10681 86767,0,@10236 86812,0,@11391 86856,0,@10236 86901,0,@10685 86989,0,@10236 87033,0,@11393 87078,0,@10236 87122,0,@10685 87210,0,@10236 87255,0,@11395 87299,0,@10236 87344,0,@10685 87432,0,@10236 87476,0,@11397 87521,0,@10236 87565,0,@10685 87653,0,@10236 87698,0,@11399 87746,0,@10688 87849,0,@10681 87898,0,@10236 87942,0,@12559 87987,0,@10236 88031,0,@10685 88119,0,@10236 88164,0,@12171 88212,0,@10236 88257,0,@10685 88345,0,@10236 88389,0,@12914 88438,0,@10688 88583,0,@10236 88628,0,@13441 88718,0,@10414 88769,0,@9475 88803,0,@11126 88832,0,@9475 88884,0,@4691 88936,0,@5946 89037,0,@9475 89071,0,@10678 89109,0,@9475 89159,0,@4699 89193,0,@10678 89231,0,@9475 89281,0,@4699 89315,0,@10678 89352,0,@9475 89402,0,@4615 89436,0,@10678 89474,0,@9475 89524,0,@4699 89569,0,@9475 89619,0,@4699 89664,0,@10681 89713,0,@10236 89757,0,@11391 89802,0,@10236 89846,0,@10685 89934,0,@10236 89979,0,@11393 90023,0,@10236 90068,0,@10685 90156,0,@10236 90200,0,@11395 90245,0,@10236 90289,0,@10685 90377,0,@10236 90422,0,@11397 90466,0,@10236 90511,0,@10685 90599,0,@10236 90643,0,@11399 90692,0,@10688 90795,0,@11355 90843,0,@10236 90888,0,@10685 90980,0,@11357 91125,0,@10236 91170,0,@13448 91260,0,@10414 91311,0,@9475 91345,0,@10678 91383,0,@9475 91433,0,@4699 91467,0,@10678 91505,0,@9475 91555,0,@4699 91589,0,@10678 91626,0,@9475 91676,0,@4615 91710,0,@10678 91748,0,@9475 91798,0,@4699 91843,0,@9475 91893,0,@4699 91938,0,@10681 91987,0,@10236 92031,0,@11391 92076,0,@10236 92120,0,@10685 92208,0,@10236 92253,0,@11393 92297,0,@10236 92342,0,@10685 92430,0,@10236 92474,0,@11395 92519,0,@10236 92563,0,@10685 92651,0,@10236 92696,0,@11397 92740,0,@10236 92785,0,@10685 92873,0,@10236 92917,0,@11399 92966,0,@10688 93111,0,@10236 93156,0,@13455 93246,0,@10414 93295,0,@9475 93329,0,@10678 93358,0,@9475 93410,0,@4691 93462,0,@5947 93559,0,@10678 93591,0,@9475 93613,0,@10678 93639,0,@9475 93666,0,@9475 93682,0,@13161 93725,0,@10688 93816,0,@10678 93848,0,@9475 93870,0,@10678 93896,0,@9475 93923,0,@9475 93939,0,@13161 93982,0,@10688 94077,0,@9475 94111,0,@10678 94149,0,@9475 94199,0,@4699 94233,0,@10678 94271,0,@9475 94321,0,@4699 94355,0,@10678 94392,0,@9475 94442,0,@4615 94476,0,@10678 94514,0,@9475 94564,0,@4699 94609,0,@9475 94659,0,@4699 94704,0,@10681 94753,0,@10236 94797,0,@11391 94842,0,@10236 94886,0,@10685 94974,0,@10236 95019,0,@11393 95063,0,@10236 95108,0,@10685 95196,0,@10236 95240,0,@11395 95285,0,@10236 95329,0,@10685 95417,0,@10236 95462,0,@11397 95506,0,@10236 95551,0,@10685 95639,0,@10236 95683,0,@11399 95732,0,@10688 95835,0,@10681 95883,0,@10236 95928,0,@12559 95972,0,@10236 96017,0,@10685 96105,0,@10236 96149,0,@13166 96194,0,@10236 96238,0,@10685 96326,0,@10236 96371,0,@13168 96415,0,@10236 96460,0,@10685 96548,0,@10236 96592,0,@13170 96641,0,@10688 96786,0,@10236 96831,0,@13463 96921,0,@10414 96977,0,@9475 97011,0,@10678 97040,0,@9475 97123,0,@10678 97152,0,@9475 97209,0,@4696 97222,0,@13470 97262,0,@10678 97293,0,@9475 97327,0,@10678 97365,0,@9475 97415,0,@4699 97449,0,@10678 97487,0,@9475 97537,0,@4699 97571,0,@10678 97608,0,@9475 97658,0,@4615 97692,0,@10678 97730,0,@9475 97780,0,@4699 97825,0,@9475 97875,0,@4699 97920,0,@10681 97968,0,@10236 98013,0,@11391 98057,0,@10236 98102,0,@10685 98190,0,@10236 98234,0,@11393 98279,0,@10236 98323,0,@10685 98411,0,@10236 98456,0,@11395 98500,0,@10236 98545,0,@10685 98633,0,@10236 98677,0,@11397 98722,0,@10236 98766,0,@10685 98854,0,@10236 98899,0,@11399 98947,0,@10688 99041,0,@9475 99140,0,@10681 99188,0,@10236 99233,0,@11721 99277,0,@10236 99322,0,@10685 99410,0,@10236 99454,0,@12559 99499,0,@10236 99543,0,@10685 99631,0,@10236 99676,0,@13476 99724,0,@10236 99769,0,@10685 99857,0,@10236 99901,0,@12021 99950,0,@10688 100095,0,@10236 100140,0,@13478 100230,0,@10414 100258,0,@9475 100292,0,@10678 100330,0,@9475 100380,0,@4699 100414,0,@10678 100452,0,@9475 100502,0,@4699 100536,0,@10678 100573,0,@9475 100623,0,@4615 100657,0,@10678 100695,0,@9475 100745,0,@4699 100790,0,@9475 100840,0,@4699 100885,0,@10681 100934,0,@10236 100978,0,@11391 101023,0,@10236 101067,0,@10685 101155,0,@10236 101200,0,@11393 101244,0,@10236 101289,0,@10685 101377,0,@10236 101421,0,@11395 101466,0,@10236 101510,0,@10685 101598,0,@10236 101643,0,@11397 101687,0,@10236 101732,0,@10685 101820,0,@10236 101864,0,@11399 101913,0,@10688 102058,0,@10236 102103,0,@13485 5863:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b860afd2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@1041|36,0,@11126 75,0,@9475 169,0,@9475 221,0,@4696 234,0,@12969 290,0,@11355 338,0,@10236 383,0,@10685 475,0,@11357 5864:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b898afd2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1040|14,0,@4617 27,0,@12971 5865:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b8d0afd2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1039|14,0,@4696 27,0,@12973 5866:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1038|13,0,@4698 5867:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b840b0d2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1043|14,0,@4691 27,0,@12977 5868:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1042|13,0,@4698 5869:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12979,1,@1044| 5870:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12980,1,@1045| 5871:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1046|13,0,@4734 5872:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1047|13,0,@4734 5873:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13025,1,@1048| 5874:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b888b7d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1051|14,0,@4617 27,0,@13039 5875:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b8c0b7d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1050|14,0,@4696 27,0,@13041 5876:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1049|13,0,@4698 5877:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b830b8d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1054|14,0,@4617 27,0,@13045 5878:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b868b8d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1053|14,0,@4696 27,0,@13047 5879:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1052|13,0,@4698 5880:D9,1344|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe010f85610200004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35b4040000750949c7c603000000eb2b4c3b359a040000750949c7c603000000eb194c3b3580040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8bcd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc030f85600200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3517020000750949c7c603000000eb2b4c3b35fd010000750949c7c603000000eb194c3b35e3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0bdd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b888bed2f1c27f0000c3f400000000000000|@13107,1,@1055,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4699 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@13086 674,0,@10414 712,0,@9475 762,0,@4699 945,0,@11514 993,0,@10391 1038,0,@11357 1189,0,@10236 1234,0,@13093 1316,0,@10414 1327,0,@13100 5881:D3,32|483b65187305ff5558cd0149be78c0d0f0c27f0000498b16ff22f40000000000|@10097,1,@1056|13,0,@4615 5882:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13128,1,@1057| 5883:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8d8c2d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@1061|36,0,@11126 75,0,@9475 169,0,@9475 221,0,@4696 234,0,@13136 290,0,@11355 338,0,@10236 383,0,@10685 475,0,@11357 5884:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b810c3d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1060|14,0,@4617 27,0,@13138 5885:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b848c3d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1059|14,0,@4696 27,0,@13140 5886:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1058|13,0,@4698 5887:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1062|13,0,@4734 5888:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13025,1,@1063| 5889:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13160,1,@1064| 5890:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13025,1,@1065| 5891:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1066|13,0,@4734 5892:D3,24|483b65187305ff5558cd0148b84058d2f1c27f0000c3f400|@13192,1,@1067|13,0,@12432 5893:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1068|13,0,@4735 5894:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1069|13,0,@4734 5895:D3,5104|483b65187305ff5558cd0552504c8b34244d8b6e084d89ec4983fd017d14488d64241049bdb86fd1f1c27f0000e9511300004d89f64d8b2e4d8b6d084983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8d8cad2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d8b66084d89e54983fc037d0f49beb86fd1f1c27f0000e9de1100004d89f64d8b2641ff7424204d89ee4983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184d8b75084d89f44983fe057d0f49bdb86fd1f1c27f0000e9010a00004d89ed4d8b75004d8b364d89e54983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424204d8b66084d89e54983fc077d0f49beb86fd1f1c27f0000e9a40800004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24284d8b75004d8b76184d89ed4d8b6d084983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10cbd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd589ed2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48cbd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28a5d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@9836,1,@1071|37,0,@10678 73,0,@9475 125,0,@4696 138,0,@13206 182,0,@10678 224,0,@9475 258,0,@10678 296,0,@9475 346,0,@4699 380,0,@10678 418,0,@9475 468,0,@4699 502,0,@10678 539,0,@9475 589,0,@4615 623,0,@10678 661,0,@9475 711,0,@4699 756,0,@9475 806,0,@4699 851,0,@10681 899,0,@10236 944,0,@11391 988,0,@10236 1033,0,@10685 1121,0,@10236 1165,0,@11393 1210,0,@10236 1254,0,@10685 1342,0,@10236 1387,0,@11395 1431,0,@10236 1476,0,@10685 1564,0,@10236 1608,0,@11397 1653,0,@10236 1697,0,@10685 1785,0,@10236 1830,0,@11399 1878,0,@10688 1974,0,@10678 2013,0,@9475 2063,0,@4615 2101,0,@10678 2143,0,@9475 2177,0,@10678 2215,0,@9475 2265,0,@4699 2299,0,@10678 2337,0,@9475 2387,0,@4699 2421,0,@10678 2458,0,@9475 2508,0,@4615 2542,0,@10678 2580,0,@9475 2630,0,@4699 2675,0,@9475 2725,0,@4699 2770,0,@10681 2818,0,@10236 2863,0,@11391 2907,0,@10236 2952,0,@10685 3040,0,@10236 3084,0,@11393 3129,0,@10236 3173,0,@10685 3261,0,@10236 3306,0,@11395 3350,0,@10236 3395,0,@10685 3483,0,@10236 3527,0,@11397 3572,0,@10236 3616,0,@10685 3704,0,@10236 3749,0,@11399 3797,0,@10688 3906,0,@9475 4000,0,@10681 4049,0,@10236 4093,0,@13208 4138,0,@10236 4182,0,@10685 4270,0,@10236 4315,0,@12858 4359,0,@10236 4404,0,@10685 4492,0,@10236 4536,0,@10683 4581,0,@10236 4625,0,@10685 4713,0,@10236 4758,0,@13210 4802,0,@10236 4847,0,@10685 4935,0,@10236 4979,0,@12914 5028,0,@10688 5896:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1070|13,0,@4734 5897:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13230,1,@1072| 5898:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1073|13,0,@4734 5899:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1074|13,0,@4734 5900:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b880d0d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@1078|36,0,@11126 75,0,@9475 169,0,@9475 221,0,@4696 234,0,@13255 290,0,@11355 338,0,@10236 383,0,@10685 475,0,@11357 5901:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b8b8d0d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1077|14,0,@4617 27,0,@13257 5902:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b8f0d0d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1076|14,0,@4696 27,0,@13259 5903:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1075|13,0,@4698 5904:D3,552|483b65187305ff5558cd05504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9890100004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b7424084d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b828d1d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@1082|36,0,@11126 75,0,@9475 169,0,@9475 221,0,@4696 234,0,@13261 290,0,@11355 338,0,@10236 383,0,@10685 475,0,@11357 5905:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b860d1d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1081|14,0,@4617 27,0,@13263 5906:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b898d1d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1080|14,0,@4696 27,0,@13265 5907:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1079|13,0,@4698 5908:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b808d2d2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1084|14,0,@4691 27,0,@13269 5909:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1083|13,0,@4735 5910:D3,2752|483b65187305ff5558cd01504c8b34244d8b66084d89e54983fc017d14488d64240849bdb86fd1f1c27f0000e91f0a00004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49beb86fd1f1c27f0000e93d0200004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424104d8b2e4d8b6d084d89f64d8b66084983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8f0d3d2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be88e6d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@9836,1,@1112|36,0,@10678 78,0,@9475 112,0,@10678 150,0,@9475 200,0,@4699 234,0,@10678 272,0,@9475 322,0,@4699 356,0,@10678 393,0,@9475 443,0,@4615 477,0,@10678 515,0,@9475 565,0,@4699 610,0,@9475 660,0,@4699 705,0,@10681 753,0,@10236 798,0,@11391 842,0,@10236 887,0,@10685 975,0,@10236 1019,0,@11393 1064,0,@10236 1108,0,@10685 1196,0,@10236 1241,0,@11395 1285,0,@10236 1330,0,@10685 1418,0,@10236 1462,0,@11397 1507,0,@10236 1551,0,@10685 1639,0,@10236 1684,0,@11399 1732,0,@10688 1828,0,@10678 1867,0,@9475 1917,0,@4615 1967,0,@9475 2019,0,@4696 2032,0,@13286 2088,0,@10681 2137,0,@10236 2181,0,@11492 2226,0,@10236 2270,0,@10685 2358,0,@10236 2403,0,@10683 2447,0,@10236 2492,0,@10685 2580,0,@10236 2624,0,@12559 2673,0,@10688 5911:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b828d4d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1111|14,0,@4617 27,0,@13288 5912:D3,32|483b65187305ff5558cd0149be38c8d0f0c27f0000498b16ff22f40000000000|@13300,1,@1110|13,0,@4739 5913:D3,1760|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9460500004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7618498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9eb0300004c8b7424104d8b6e184d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bd082a5bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e91b0200004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424284d8b76104c8b6c24204983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88d4d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd90ddd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30ded1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8d4d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@13300,1,@1086|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 213,0,@10678 251,0,@9475 303,0,@4691 355,0,@5914 452,0,@10678 489,0,@9475 539,0,@4615 584,0,@9475 678,0,@10681 726,0,@10236 771,0,@13291 815,0,@10236 860,0,@10685 948,0,@10236 992,0,@10683 1037,0,@10236 1081,0,@10685 1169,0,@10236 1214,0,@11415 1262,0,@10236 1307,0,@10685 1395,0,@10236 1439,0,@11421 1488,0,@10688 1633,0,@10236 1678,0,@13293 5914:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@1085| 5915:D3,2280|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9500700004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d104d896e0849bd58335bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e97f0500004c8b7424184d8b76284d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424184d89f44983fe057d0f49bdb86fd1f1c27f0000e9280400004c8b7424204d8b6e184d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bd98335bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe077d0f49beb86fd1f1c27f0000e9570200004c8b7424304d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424304d89f54983fe097d0f49bdb86fd1f1c27f0000e9000100004c8b7424384d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c8d0f0c27f0000498b16ff124989c64c8b6c24304983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc78ddd2f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8ddd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90ddd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28ded2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68ded2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0ded2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@13386,1,@1109|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 182,0,@4691 234,0,@5916 331,0,@10678 369,0,@9475 419,0,@4699 453,0,@10678 491,0,@9475 543,0,@4691 595,0,@5917 692,0,@10678 730,0,@9475 780,0,@4615 814,0,@10678 851,0,@9475 901,0,@4741 935,0,@9475 978,0,@13368 1027,0,@10236 1071,0,@13373 1116,0,@10236 1160,0,@10685 1248,0,@10236 1293,0,@10683 1337,0,@10236 1382,0,@10685 1470,0,@10236 1514,0,@11415 1563,0,@10236 1607,0,@10685 1695,0,@10236 1740,0,@13375 1784,0,@10236 1829,0,@10685 1917,0,@10236 1961,0,@13377 2010,0,@10688 2155,0,@10236 2200,0,@13379 5916:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12572,1,@1087| 5917:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@1088| 5918:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284983ec02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be68c8d0f0c27f0000498b1648b8b8dbd2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd48dcd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@13367,1,@1108,@9805,@9803,@9797|26,0,@10414 46,0,@9475 98,0,@4742 111,0,@13354 305,0,@11514 353,0,@10391 398,0,@11357 549,0,@10236 594,0,@13359 5919:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be28375bf1c27f00004c8930c3f400000000|@13340,1,@1103|55,0,@5920 5920:D3,2240|483b65187305ff5558cd054989d54c8b70084d89f34983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe010f85e10200004d8b6424104983eb0241537115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f34983fe017d14488d64240849bdb86fd1f1c27f0000e9750100004d89db4983eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be88c8d0f0c27f0000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bdb8445bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084c8b2c244983ed02488d642408711048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc78d6d2f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0d6d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28d7d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89de4983fb037d0b48b8704cd1f1c27f0000c341ff74240841ff7424104d8b6424184983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f34983fe017d14488d64241849bdb86fd1f1c27f0000e9140400004d89db4983eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d8926415649be88c5d0f0c27f0000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bd50455bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9480200004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b878d8d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24204983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649be88c5d0f0c27f0000498b1648b8b0d8d2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee8d8d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0d6d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0d6d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18d9d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@13339,1,@1102|29,0,@10414 77,0,@9475 111,0,@10678 140,0,@9475 192,0,@4744 248,0,@5925 349,0,@9475 392,0,@13308 441,0,@10236 485,0,@13313 530,0,@10688 675,0,@10236 720,0,@13315 805,0,@10414 844,0,@9475 878,0,@10678 907,0,@9475 959,0,@4696 1015,0,@5926 1112,0,@10678 1141,0,@9475 1198,0,@4696 1211,0,@13326 1253,0,@9475 1310,0,@4696 1323,0,@13328 1379,0,@10681 1428,0,@10236 1472,0,@13330 1517,0,@10236 1561,0,@10685 1649,0,@10236 1694,0,@13311 1742,0,@10236 1787,0,@10685 1875,0,@10236 1919,0,@13313 1968,0,@10688 2113,0,@10236 2158,0,@13332 5921:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78405bf1c27f00004c8930c3f400000000|@9492,1,@1092|47,0,@5922 5922:D4,80|483b65187305ff5558cd054c8b40084c8b72084d8b7608488b00498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c89730849bef8405bf1c27f00004c8933ff251c000000f4000000|@11345,1,@1090,@5924|59,0,@5923 5923:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13305,1,@1089| 5924:D3,824|483b65187306ff5558ca09014d89c350534c8b7424084d8b6ef84d89ec49c1e50849c1ed074983cd014983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983fb017f11488d64241849bd2034d2f1c27f0000eb7d4c2b1c247115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849bb6834d2f1c27f00004d895d004d89e649c1e60849c1ee074983ce01415541564c8b34244d89f54983fe01757c488d6424084c8b34244d8b2e488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9834d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ed4d89ee4983ed0241554d89f64d89f54983ee0241564d89ed4983ed024c8b7424304b8b44aefc4c8b6c24184d89ee41ff75004d89f641ff76086a016a014c8b6c24104d89ee4983fd0175364d89f64983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff2349bd2034d2f1c27f00004c892c244c89742408e9240100004d89f64c89f34983fe017d304989de4983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff2348c70424010000004c89742408e9e80000004889db4883eb027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23488b542448ff124989c64c8b6c24204c3b6c244074634d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424184d89650849bc50f0d0f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd034d2f1c27f00004d892c24eb054c8b6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b7424104983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c892c244c89742408415e415c4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b6424184c896424204c896c2428483b65187303ff55584883c420e987fdfffff40000|@13306,1,@1091|56,0,@9475 83,0,@12131 106,0,@9475 157,0,@12134 251,0,@12136 419,0,@9475 435,0,@12131 485,0,@9475 533,0,@9475 607,0,@9814 654,0,@12138 726,0,@9475 5925:D3,112|483b65187305ff5558cd054989d4504d8b742410498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c258ff22f400000000000000|@13307,1,@1093| 5926:D3,152|483b65187305ff5558cd054989d55049be98c8d0f0c27f0000498b164d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d8b65104d8966104d8b6d084d896e0849bdb84a5bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@13325,1,@1099|17,0,@4745 73,0,@5931 5927:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78465bf1c27f00004c8930c3f400000000|@9492,1,@1097|47,0,@5928 5928:D4,80|483b65187305ff5558cd054c8b40084c8b72084d8b7608488b00498d5fe8483b5d107306ff5550ca01414989df48c743f8020000004c89730849bef8465bf1c27f00004c8933ff251c000000f4000000|@11345,1,@1095,@5930|59,0,@5929 5929:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13323,1,@1094| 5930:D3,824|483b65187306ff5558ca09014d89c350534c8b7424084d8b6ef84d89ec49c1e50849c1ed074983cd014983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983fb017f11488d64241849bd2034d2f1c27f0000eb7d4c2b1c247115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849bb6834d2f1c27f00004d895d004d89e649c1e60849c1ee074983ce01415541564c8b34244d89f54983fe01757c488d6424084c8b34244d8b2e488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9834d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89ed4d89ee4983ed0241554d89f64d89f54983ee0241564d89ed4983ed024c8b7424304b8b44aefc4c8b6c24184d89ee41ff75004d89f641ff76086a016a014c8b6c24104d89ee4983fd0175364d89f64983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff2349bd2034d2f1c27f00004c892c244c89742408e9240100004d89f64c89f34983fe017d304989de4983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff2348c70424010000004c89742408e9e80000004889db4883eb027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23488b542448ff124989c64c8b6c24204c3b6c244074634d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424184d89650849bc50f0d0f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd034d2f1c27f00004d892c24eb054c8b6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b7424104983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c892c244c89742408415e415c4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b6424184c896424204c896c2428483b65187303ff55584883c420e987fdfffff40000|@13324,1,@1096|56,0,@9475 83,0,@12131 106,0,@9475 157,0,@12134 251,0,@12136 419,0,@9475 435,0,@12131 485,0,@9475 533,0,@9475 607,0,@9814 654,0,@12138 726,0,@9475 5931:D3,112|483b65187305ff5558cd054989d4504d8b742410498b164d8b7424084d89f54d8b76084d89eb4d8b6d104d89dc4d8b642418498d47d8483b45107306ff5550ca04704989c748c740f8040000004c8960184c8968104c89700848c70001000000ff124889c258ff22f400000000000000|@13307,1,@1098| 5932:D3,24|483b65187305ff5558cd0148b84058d2f1c27f0000c3f400|@13192,1,@1100|13,0,@12432 5933:D3,32|483b65187305ff5558cd0149beb8c5d0f0c27f0000498b16ff22f40000000000|@12421,1,@1101|13,0,@4699 5934:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be404c5bf1c27f00004c8930c3f400000000|@13353,1,@1105|47,0,@5935 5935:D3,824|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ec4983fd017510488d64240848b840dad2f1c27f0000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d8b342441ff7424084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8b5d1f1c27f0000e9620100004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d8b7608498b56084c8b7424084983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd18dbd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@13307,1,@1104|32,0,@10414 60,0,@13342 85,0,@10414 118,0,@9475 152,0,@11126 181,0,@9475 231,0,@4615 280,0,@9475 367,0,@11355 415,0,@10236 460,0,@10685 552,0,@11357 697,0,@10236 742,0,@13349 5936:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8f0dbd2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1107|14,0,@4691 27,0,@13356 5937:D3,32|483b65187305ff5558cd0149bec8c6d0f0c27f0000498b16ff22f40000000000|@13358,1,@1106|13,0,@4716 5938:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8d8dfd2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1114|14,0,@4691 27,0,@13389 5939:D3,32|483b65187305ff5558cd0149be38c8d0f0c27f0000498b16ff22f40000000000|@13300,1,@1113|13,0,@4739 5940:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b848e0d2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1116|14,0,@4691 27,0,@13393 5941:D3,32|483b65187305ff5558cd0149be48c5d0f0c27f0000498b16ff22f40000000000|@11365,1,@1115|13,0,@4692 5942:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8b8e0d2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1118|14,0,@4691 27,0,@13397 5943:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1117|13,0,@4735 5944:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1119|13,0,@4734 5945:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13230,1,@1120| 5946:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@12980,1,@1121| 5947:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13462,1,@1122| 5948:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b8d0e9d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1125|14,0,@4617 27,0,@13472 5949:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b808ead2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1124|14,0,@4696 27,0,@13474 5950:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1123|13,0,@4698 5951:D3,6064|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e91e1600004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b838ecd2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9ad1400004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e9d60c00004c8b7424204d8b76284d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424204d89f54983fe077d0f49beb86fd1f1c27f0000e97e0b00004c8b7424284d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24284d89ee4983fd097d0f49bdb86fd1f1c27f0000e9280a00004c8b6c243041ff75204d89f64983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe0b7d0f49beb86fd1f1c27f0000e9500200004c8b7424384d8b6e084d89e44983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b870ecd2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424484d8b6e304c8b6424404983ec027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b8a8ecd2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1866d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08edd2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be589ed2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38edd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70edd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8edd2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0edd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@12980,1,@1130|26,0,@10414 52,0,@9475 86,0,@10678 124,0,@9475 176,0,@4617 189,0,@13493 229,0,@10678 269,0,@9475 303,0,@10678 341,0,@9475 391,0,@4699 425,0,@10678 463,0,@9475 513,0,@4699 547,0,@10678 584,0,@9475 634,0,@4615 668,0,@10678 706,0,@9475 756,0,@4699 801,0,@9475 851,0,@4699 896,0,@10681 944,0,@10236 989,0,@11391 1033,0,@10236 1078,0,@10685 1166,0,@10236 1210,0,@11393 1255,0,@10236 1299,0,@10685 1387,0,@10236 1432,0,@11395 1476,0,@10236 1521,0,@10685 1609,0,@10236 1653,0,@11397 1698,0,@10236 1742,0,@10685 1830,0,@10236 1875,0,@11399 1923,0,@10688 2015,0,@10678 2053,0,@9475 2103,0,@4698 2137,0,@10678 2174,0,@9475 2224,0,@4615 2258,0,@10678 2298,0,@9475 2332,0,@10678 2370,0,@9475 2420,0,@4699 2454,0,@10678 2492,0,@9475 2542,0,@4699 2576,0,@10678 2613,0,@9475 2663,0,@4615 2697,0,@10678 2735,0,@9475 2785,0,@4699 2830,0,@9475 2880,0,@4699 2925,0,@10681 2973,0,@10236 3018,0,@11391 3062,0,@10236 3107,0,@10685 3195,0,@10236 3239,0,@11393 3284,0,@10236 3328,0,@10685 3416,0,@10236 3461,0,@11395 3505,0,@10236 3550,0,@10685 3638,0,@10236 3682,0,@11397 3727,0,@10236 3771,0,@10685 3859,0,@10236 3904,0,@11399 3952,0,@10688 4044,0,@10678 4082,0,@9475 4134,0,@4696 4147,0,@13495 4198,0,@9475 4250,0,@4691 4263,0,@13497 4319,0,@10681 4368,0,@10236 4412,0,@12547 4457,0,@10236 4501,0,@10685 4589,0,@10236 4634,0,@13500 4682,0,@10236 4727,0,@10685 4815,0,@10236 4859,0,@12858 4904,0,@10236 4948,0,@10685 5036,0,@10236 5081,0,@10683 5125,0,@10236 5170,0,@10685 5258,0,@10236 5302,0,@13502 5347,0,@10236 5391,0,@10685 5479,0,@10236 5524,0,@13504 5568,0,@10236 5613,0,@10685 5701,0,@10236 5745,0,@13506 5794,0,@10688 5939,0,@10236 5984,0,@13508 5952:D3,32|483b65187305ff5558cd0149beb8c7d0f0c27f0000498b16ff22f40000000000|@12855,1,@1127|13,0,@4731 5953:D3,32|483b65187305ff5558cd0149be48c5d0f0c27f0000498b16ff22f40000000000|@11365,1,@1128|13,0,@4692 5954:D3,32|483b65187305ff5558cd0149be08c4d0f0c27f0000498b16ff22f40000000000|@13499,1,@1129|13,0,@4672 5955:D3,5720|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9c61400004c8b7424084d8b6e104d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b8c8eed2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9551300004c8b6c241841ff75184d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e97e0b00004c8b7424204d8b364d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24204d89ee4983fd077d0f49beb86fd1f1c27f0000e9270a00004c8b6c242841ff75204d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d89f44983fe097d0f49bdb86fd1f1c27f0000e9500200004c8b7424304d8b6e084d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b848f0d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424404d8b6e284c8b6424384983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b880f0d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1866d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08edd2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd589ed2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70edd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb8f0d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf0f0d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@12979,1,@1136|26,0,@10414 52,0,@9475 86,0,@10678 124,0,@9475 176,0,@4691 189,0,@13516 229,0,@10678 269,0,@9475 303,0,@10678 341,0,@9475 391,0,@4699 425,0,@10678 463,0,@9475 513,0,@4699 547,0,@10678 584,0,@9475 634,0,@4615 668,0,@10678 706,0,@9475 756,0,@4699 801,0,@9475 851,0,@4699 896,0,@10681 944,0,@10236 989,0,@11391 1033,0,@10236 1078,0,@10685 1166,0,@10236 1210,0,@11393 1255,0,@10236 1299,0,@10685 1387,0,@10236 1432,0,@11395 1476,0,@10236 1521,0,@10685 1609,0,@10236 1653,0,@11397 1698,0,@10236 1742,0,@10685 1830,0,@10236 1875,0,@11399 1923,0,@10688 2015,0,@10678 2052,0,@9475 2102,0,@4615 2136,0,@10678 2176,0,@9475 2210,0,@10678 2248,0,@9475 2298,0,@4699 2332,0,@10678 2370,0,@9475 2420,0,@4699 2454,0,@10678 2491,0,@9475 2541,0,@4615 2575,0,@10678 2613,0,@9475 2663,0,@4699 2708,0,@9475 2758,0,@4699 2803,0,@10681 2851,0,@10236 2896,0,@11391 2940,0,@10236 2985,0,@10685 3073,0,@10236 3117,0,@11393 3162,0,@10236 3206,0,@10685 3294,0,@10236 3339,0,@11395 3383,0,@10236 3428,0,@10685 3516,0,@10236 3560,0,@11397 3605,0,@10236 3649,0,@10685 3737,0,@10236 3782,0,@11399 3830,0,@10688 3922,0,@10678 3960,0,@9475 4012,0,@4696 4025,0,@13530 4076,0,@9475 4128,0,@4691 4141,0,@13532 4197,0,@10681 4245,0,@10236 4290,0,@12547 4334,0,@10236 4379,0,@10685 4467,0,@10236 4511,0,@13500 4560,0,@10236 4604,0,@10685 4692,0,@10236 4737,0,@12858 4781,0,@10236 4826,0,@10685 4914,0,@10236 4958,0,@10683 5003,0,@10236 5047,0,@10685 5135,0,@10236 5180,0,@13504 5224,0,@10236 5269,0,@10685 5357,0,@10236 5401,0,@13534 5450,0,@10688 5595,0,@10236 5640,0,@13536 5956:D3,3112|483b65187305ff5558cd01504c8b34244d8b6e084d89ec4983fd017d14488d64240849bdb86fd1f1c27f0000e98a0b00004d89f64d8b2e4d8b6d084983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b800efd2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d8b75084d89f44983fe037d0f49beb86fd1f1c27f0000e9170a00004d89ed4d8b75004d8b76184d89e54983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d8b6e084d89ec4983fd057d0f49bdb86fd1f1c27f0000e9ba0800004d89f64d8b2e4d8b6d104983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b838efd2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424284d8b2e41ff75004d89f64d8b76084983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70efd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0efd2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8efd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be10f0d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400|@9836,1,@1133|36,0,@10678 72,0,@9475 124,0,@4617 137,0,@13518 181,0,@10678 221,0,@9475 271,0,@4615 309,0,@10678 345,0,@9475 397,0,@4696 410,0,@13520 468,0,@9475 502,0,@10678 540,0,@9475 590,0,@4699 624,0,@10678 662,0,@9475 712,0,@4699 746,0,@10678 783,0,@9475 833,0,@4615 867,0,@10678 905,0,@9475 955,0,@4699 1000,0,@9475 1050,0,@4699 1095,0,@10681 1144,0,@10236 1188,0,@11391 1233,0,@10236 1277,0,@10685 1365,0,@10236 1410,0,@11393 1454,0,@10236 1499,0,@10685 1587,0,@10236 1631,0,@11395 1676,0,@10236 1720,0,@10685 1808,0,@10236 1853,0,@11397 1897,0,@10236 1942,0,@10685 2030,0,@10236 2074,0,@11399 2123,0,@10688 2226,0,@10681 2274,0,@10236 2319,0,@13522 2363,0,@10236 2408,0,@10685 2496,0,@10236 2540,0,@13524 2589,0,@10236 2633,0,@10685 2721,0,@10236 2766,0,@13526 2810,0,@10236 2855,0,@10685 2943,0,@10236 2987,0,@13528 3036,0,@10688 5957:D3,32|483b65187305ff5558cd0149beb8c7d0f0c27f0000498b16ff22f40000000000|@12855,1,@1131|13,0,@4731 5958:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1132|13,0,@4735 5959:D3,32|483b65187305ff5558cd0149be48c5d0f0c27f0000498b16ff22f40000000000|@11365,1,@1134|13,0,@4692 5960:D3,32|483b65187305ff5558cd0149be08c4d0f0c27f0000498b16ff22f40000000000|@13499,1,@1135|13,0,@4672 5961:D3,4056|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9430e00004c8b7424084d8b6e104d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8e8f1d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb86fd1f1c27f0000e9d20c00004c8b7424184d8b6e284d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b820f2d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe057d0f49bdb86fd1f1c27f0000e9620b00004c8b7424284d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b6c24284d89ee4983fd077d0f49beb86fd1f1c27f0000e90c0a00004c8b6c243041ff75204d89f64983ee0241567115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d89f44983fe097d0f49bdb86fd1f1c27f0000e9350200004c8b7424384d8b6e184d89e44983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8c8f2d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424484d8b76084c8b6c24404983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424504d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00f3d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30f3d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6023d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40ead2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89fd2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd68f3d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@13025,1,@1142|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 182,0,@4696 195,0,@13544 235,0,@10678 273,0,@9475 325,0,@4696 338,0,@13546 378,0,@10678 415,0,@9475 498,0,@10678 538,0,@9475 572,0,@10678 610,0,@9475 660,0,@4699 694,0,@10678 732,0,@9475 782,0,@4699 816,0,@10678 853,0,@9475 903,0,@4615 937,0,@10678 975,0,@9475 1025,0,@4699 1070,0,@9475 1120,0,@4699 1165,0,@10681 1213,0,@10236 1258,0,@11391 1302,0,@10236 1347,0,@10685 1435,0,@10236 1479,0,@11393 1524,0,@10236 1568,0,@10685 1656,0,@10236 1701,0,@11395 1745,0,@10236 1790,0,@10685 1878,0,@10236 1922,0,@11397 1967,0,@10236 2011,0,@10685 2099,0,@10236 2144,0,@11399 2192,0,@10688 2284,0,@10678 2322,0,@9475 2374,0,@4696 2387,0,@13552 2438,0,@9475 2532,0,@10681 2580,0,@10236 2625,0,@13554 2669,0,@10236 2714,0,@10685 2802,0,@10236 2846,0,@13556 2895,0,@10236 2939,0,@10685 3027,0,@10236 3072,0,@12559 3116,0,@10236 3161,0,@10685 3249,0,@10236 3293,0,@11992 3338,0,@10236 3382,0,@10685 3470,0,@10236 3515,0,@13476 3563,0,@10236 3608,0,@10685 3696,0,@10236 3740,0,@12871 3789,0,@10688 3934,0,@10236 3979,0,@13558 5962:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1137|13,0,@4734 5963:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b858f2d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1140|14,0,@4617 27,0,@13548 5964:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b890f2d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1139|14,0,@4696 27,0,@13550 5965:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1138|13,0,@4698 5966:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1141|13,0,@4734 5967:D3,5704|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb86fd1f1c27f0000e9b01400004c8b6c240841ff75184d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9d40c00004c8b7424104d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb86fd1f1c27f0000e97e0b00004c8b6c241841ff75204d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f44983fe077d0f49beb86fd1f1c27f0000e9a60300004c8b7424204d8b6e104d89e44983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b860f4d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424284d89f54983fe097d0f49bdb86fd1f1c27f0000e9360200004c8b7424304d8b76284d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c641564c8b7424384d8b6e084c8b6424304983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b898f4d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f4d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08f5d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be589ed2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70edd2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38f5d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@13128,1,@1145|32,0,@10414 58,0,@9475 92,0,@10678 132,0,@9475 166,0,@10678 204,0,@9475 254,0,@4699 288,0,@10678 326,0,@9475 376,0,@4699 410,0,@10678 447,0,@9475 497,0,@4615 531,0,@10678 569,0,@9475 619,0,@4699 664,0,@9475 714,0,@4699 759,0,@10681 807,0,@10236 852,0,@11391 896,0,@10236 941,0,@10685 1029,0,@10236 1073,0,@11393 1118,0,@10236 1162,0,@10685 1250,0,@10236 1295,0,@11395 1339,0,@10236 1384,0,@10685 1472,0,@10236 1516,0,@11397 1561,0,@10236 1605,0,@10685 1693,0,@10236 1738,0,@11399 1786,0,@10688 1878,0,@10678 1915,0,@9475 1965,0,@4615 1999,0,@10678 2039,0,@9475 2073,0,@10678 2111,0,@9475 2161,0,@4699 2195,0,@10678 2233,0,@9475 2283,0,@4699 2317,0,@10678 2354,0,@9475 2404,0,@4615 2438,0,@10678 2476,0,@9475 2526,0,@4699 2571,0,@9475 2621,0,@4699 2666,0,@10681 2714,0,@10236 2759,0,@11391 2803,0,@10236 2848,0,@10685 2936,0,@10236 2980,0,@11393 3025,0,@10236 3069,0,@10685 3157,0,@10236 3202,0,@11395 3246,0,@10236 3291,0,@10685 3379,0,@10236 3423,0,@11397 3468,0,@10236 3512,0,@10685 3600,0,@10236 3645,0,@11399 3693,0,@10688 3785,0,@10678 3823,0,@9475 3875,0,@4617 3888,0,@13566 3928,0,@10678 3966,0,@9475 4060,0,@9475 4112,0,@4696 4125,0,@13568 4181,0,@10681 4229,0,@10236 4274,0,@11492 4318,0,@10236 4363,0,@10685 4451,0,@10236 4495,0,@13570 4540,0,@10236 4584,0,@10685 4672,0,@10236 4717,0,@13572 4765,0,@10236 4810,0,@10685 4898,0,@10236 4942,0,@12858 4987,0,@10236 5031,0,@10685 5119,0,@10236 5164,0,@10683 5208,0,@10236 5253,0,@10685 5341,0,@10236 5385,0,@13504 5434,0,@10688 5579,0,@10236 5624,0,@13574 5968:D3,32|483b65187305ff5558cd0149beb8c7d0f0c27f0000498b16ff22f40000000000|@12855,1,@1143|13,0,@4731 5969:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1144|13,0,@4735 5970:D3,4208|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9d80e00004c8b7424084d8b2e4d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b828f6d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49beb86fd1f1c27f0000e9680d00004c8b7424184d8b6e084d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d084d896e0849bd28ca5bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f44983fe057d0f49bdb86fd1f1c27f0000e9980b00004c8b7424284d8b6e104d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b880f6d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24304d89ee4983fd077d0f49beb86fd1f1c27f0000e9270a00004c8b6c243841ff75184d89f64983ee0241567115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424384d89f44983fe097d0f49bdb86fd1f1c27f0000e9500200004c8b7424404d8b6e204d89e44983ec027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8b8f6d2f1c27f0000ff124889c2488b0424ff124989c641564c8b7424504d8b6e284c8b6424484983ec027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8f0f6d2f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf01fd2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be28f7d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60f7d2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98f7d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee89fd2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd0f7d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@13160,1,@1151|32,0,@10414 58,0,@9475 92,0,@10678 129,0,@9475 181,0,@4696 194,0,@13582 234,0,@10678 272,0,@9475 324,0,@4691 376,0,@5972 473,0,@10678 511,0,@9475 563,0,@4696 576,0,@13585 616,0,@10678 656,0,@9475 690,0,@10678 728,0,@9475 778,0,@4699 812,0,@10678 850,0,@9475 900,0,@4699 934,0,@10678 971,0,@9475 1021,0,@4615 1055,0,@10678 1093,0,@9475 1143,0,@4699 1188,0,@9475 1238,0,@4699 1283,0,@10681 1331,0,@10236 1376,0,@11391 1420,0,@10236 1465,0,@10685 1553,0,@10236 1597,0,@11393 1642,0,@10236 1686,0,@10685 1774,0,@10236 1819,0,@11395 1863,0,@10236 1908,0,@10685 1996,0,@10236 2040,0,@11397 2085,0,@10236 2129,0,@10685 2217,0,@10236 2262,0,@11399 2310,0,@10688 2402,0,@10678 2440,0,@9475 2492,0,@4696 2505,0,@13587 2556,0,@9475 2608,0,@4696 2621,0,@13589 2677,0,@10681 2725,0,@10236 2770,0,@11963 2814,0,@10236 2859,0,@10685 2947,0,@10236 2991,0,@13591 3040,0,@10236 3084,0,@10685 3172,0,@10236 3217,0,@12559 3261,0,@10236 3306,0,@10685 3394,0,@10236 3438,0,@13593 3487,0,@10236 3531,0,@10685 3619,0,@10236 3664,0,@13595 3712,0,@10236 3757,0,@10685 3845,0,@10236 3889,0,@12871 3938,0,@10688 4083,0,@10236 4128,0,@13597 5971:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1146|13,0,@4734 5972:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13584,1,@1147| 5973:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1148|13,0,@4735 5974:D3,32|483b65187305ff5558cd0149beb8c5d0f0c27f0000498b16ff22f40000000000|@12421,1,@1149|13,0,@4699 5975:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1150|13,0,@4734 5976:D3,7480|488dbc2458ffffff483b7d187305ff5560cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241849bdb86fd1f1c27f0000e9971b00004c8b7424084d8b6e184d89e44983ec027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8c0f8d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9261a00004c8b6c241841ff75004d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb86fd1f1c27f0000e9d80f00004c8b7424084d8b2e4d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd98e95bf1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f44983fe037d0f49bdb86fd1f1c27f0000e9090e00004c8b7424184d8b6e184d89e44983ec027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be98c0d0f0c27f0000498b1648b868f9d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24204d89ee4983fd057d0f49beb86fd1f1c27f0000e9980c00004c8b6c242841ff75084d89f64983ee0241567115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049beb86fd1f1c27f0000e9210a00004c8b7424084d8b6e084d89e44983ec027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8a0f9d2f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49bdb86fd1f1c27f0000e9b10800004c8b6c241841ff75104d89f64983ee0241567118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9350600004c8b7424084d8b76084d89ed4983ed027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9d70400004c8b7424104d8b76184d89ed4983ed027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e97c0300004c8b7424184d8b364d89ed4983ed027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e9230200004c8b7424204d8b76104d89ed4983ed027118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d8b364c8b6c24184983ed027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a5d2f1c27f00004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424304d8b76104c8b6c24284983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78b4d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8f9d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08fad2f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50e5d1f1c27f00004d892e4883c4184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e99d0800004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424284d8b7608498b16ff124989c641564c8b74242841ff76104c8b7424284983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40fad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6023d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda8c6d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40ead2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70fad2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@13584,1,@1158|40,0,@10414 66,0,@9475 100,0,@10678 138,0,@9475 190,0,@4696 203,0,@13605 243,0,@10678 283,0,@9475 317,0,@10678 354,0,@9475 406,0,@4691 458,0,@5980 555,0,@10678 593,0,@9475 645,0,@4617 658,0,@13611 698,0,@10678 738,0,@9475 772,0,@10678 810,0,@9475 862,0,@4696 875,0,@13613 915,0,@10678 958,0,@9475 992,0,@10678 1033,0,@9475 1083,0,@4699 1117,0,@10678 1158,0,@9475 1208,0,@4699 1242,0,@10678 1282,0,@9475 1332,0,@4615 1366,0,@10678 1407,0,@9475 1457,0,@4699 1505,0,@9475 1555,0,@4699 1600,0,@10681 1648,0,@10236 1693,0,@11391 1737,0,@10236 1782,0,@10685 1870,0,@10236 1914,0,@11393 1959,0,@10236 2003,0,@10685 2091,0,@10236 2136,0,@11395 2180,0,@10236 2225,0,@10685 2313,0,@10236 2357,0,@11397 2402,0,@10236 2446,0,@10685 2534,0,@10236 2579,0,@11399 2627,0,@10688 2732,0,@9475 2782,0,@4615 2827,0,@10681 2875,0,@10236 2920,0,@10683 2964,0,@10236 3009,0,@10685 3097,0,@10236 3141,0,@12559 3186,0,@10236 3230,0,@10685 3318,0,@10236 3363,0,@12914 3411,0,@10688 3514,0,@9475 3564,0,@4698 3609,0,@10681 3658,0,@10236 3702,0,@13012 3747,0,@10236 3791,0,@10685 3879,0,@10236 3924,0,@13615 3968,0,@10236 4013,0,@10685 4101,0,@10236 4145,0,@13617 4194,0,@10236 4238,0,@10685 4326,0,@10236 4371,0,@11481 4419,0,@10688 4511,0,@10678 4549,0,@9475 4645,0,@9475 4679,0,@10678 4717,0,@9475 4767,0,@4699 4801,0,@10678 4839,0,@9475 4889,0,@4699 4923,0,@10678 4960,0,@9475 5010,0,@4615 5044,0,@10678 5082,0,@9475 5132,0,@4699 5177,0,@9475 5227,0,@4699 5272,0,@10681 5321,0,@10236 5365,0,@11391 5410,0,@10236 5454,0,@10685 5542,0,@10236 5587,0,@11393 5631,0,@10236 5676,0,@10685 5764,0,@10236 5808,0,@11395 5853,0,@10236 5897,0,@10685 5985,0,@10236 6030,0,@11397 6074,0,@10236 6119,0,@10685 6207,0,@10236 6251,0,@11399 6300,0,@10688 6403,0,@10681 6451,0,@10236 6496,0,@13619 6540,0,@10236 6585,0,@10685 6673,0,@10236 6717,0,@11992 6762,0,@10236 6806,0,@10685 6894,0,@10236 6939,0,@13170 6983,0,@10236 7028,0,@10685 7116,0,@10236 7160,0,@13476 7209,0,@10688 7354,0,@10236 7399,0,@13621 5977:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b8f8f8d2f1c27f0000ff124889c258ff22f400000000|@12785,1,@1154|14,0,@4617 27,0,@13607 5978:D3,48|483b65187305ff5558cd015049be88c5d0f0c27f0000498b1648b830f9d2f1c27f0000ff124889c258ff22f400000000|@11376,1,@1153|14,0,@4696 27,0,@13609 5979:D3,32|483b65187305ff5558cd0149bea8c5d0f0c27f0000498b16ff22f40000000000|@11385,1,@1152|13,0,@4698 5980:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@13230,1,@1155| 5981:D3,32|483b65187305ff5558cd0149beb8c7d0f0c27f0000498b16ff22f40000000000|@12855,1,@1156|13,0,@4731 5982:D3,32|483b65187305ff5558cd0149bee8c7d0f0c27f0000498b16ff22f40000000000|@11375,1,@1157|13,0,@4734 5983:D3,3672|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9bf0c00004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9650b00004c8b7424104d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e90f0a00004c8b7424184d8b76204d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24184d89ee4983fd077d0f49beb86fd1f1c27f0000e9b70800004c8b6c242041ff75104d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424284d8b6e184c8b6424204983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b868fbd2f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef0e0d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40fad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8fbd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6023d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8c6d2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10fcd2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@13462,1,@1161|32,0,@10414 58,0,@9475 92,0,@10678 129,0,@9475 212,0,@10678 250,0,@9475 333,0,@10678 371,0,@9475 421,0,@4698 455,0,@10678 495,0,@9475 529,0,@10678 567,0,@9475 617,0,@4699 651,0,@10678 689,0,@9475 739,0,@4699 773,0,@10678 810,0,@9475 860,0,@4615 894,0,@10678 932,0,@9475 982,0,@4699 1027,0,@9475 1077,0,@4699 1122,0,@10681 1170,0,@10236 1215,0,@11391 1259,0,@10236 1304,0,@10685 1392,0,@10236 1436,0,@11393 1481,0,@10236 1525,0,@10685 1613,0,@10236 1658,0,@11395 1702,0,@10236 1747,0,@10685 1835,0,@10236 1879,0,@11397 1924,0,@10236 1968,0,@10685 2056,0,@10236 2101,0,@11399 2149,0,@10688 2252,0,@9475 2304,0,@4696 2317,0,@13629 2373,0,@10681 2422,0,@10236 2466,0,@13399 2511,0,@10236 2555,0,@10685 2643,0,@10236 2688,0,@13619 2732,0,@10236 2777,0,@10685 2865,0,@10236 2909,0,@13633 2954,0,@10236 2998,0,@10685 3086,0,@10236 3131,0,@11992 3175,0,@10236 3220,0,@10685 3308,0,@10236 3352,0,@13170 3401,0,@10688 3546,0,@10236 3591,0,@13635 5984:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8a0fbd2f1c27f0000ff124889c258ff22f400000000|@11133,1,@1160|14,0,@4691 27,0,@13631 5985:D3,32|483b65187305ff5558cd0149bef8c7d0f0c27f0000498b16ff22f40000000000|@11354,1,@1159|13,0,@4735 5986:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13643,1,@1162| 5987:D5,344|483b65187306ff5558ca09074989c65341504151498d47d8483b45107306ff5550ca00444989c748c740f8040000004c8950184c8b2c244c8968104c89700849be58fb5bf1c27f00004c89306a016a016a014889e3ff151d010000ff3424ff7424104c8b6c24784d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e0849bdb8005cf1c27f00004d892e4156ff742440f60424010f858a0000004c8b2c244d8b75004d89ed41ff7508498b06498b5e08498b7e10498b7618498b56204d8b76284c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c24684c8b4424604156415541544153ff742430415241514150ffb42480000000ff7424604989d24989f14989f8ff154e000000415d4c892c24483b65187303ff5558e96cffffff488d6424185a4c8b742438498b46504c8b7424304c897424684883c468ff22f40000|@13650,1,@1168,@5992,@5322|65,0,@5988 145,0,@5991 5988:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc48fe5bf1c27f00004d89204d8b65004e8d2465010000004983fc01750f49bbc0fdd2f1c27f0000e9ad0000004d89e24983c2144c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349bac0fdd2f1c27f000048c7c115000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1248d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd18ced1f1c27f0000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb18ced1f1c27f000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@13647,1,@1165,@5990|55,0,@5989 86,0,@13646 223,0,@13646 291,0,@11298 449,0,@11298 651,0,@9487 667,0,@9487 5989:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13645,1,@1164,@5204| 5990:D7,472|483b65187306ff5558ca09074c89c25053415141524c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dd201000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b70000004d8b364d8b2e4c3b2d6e0100007506498b4610eb15488d64242048b87810d1f1c27f0000488b5d08ff23ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da400000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3a0000007509498b4610e9eefeffff488d64242048b87810d1f1c27f0000488b5d08ff23f400|@13648,1,@1166,@4650,@4650,@4650,@4650|120,0,@10158 161,0,@9991 411,0,@10198 456,0,@9991 5991:D3,88|483b65187305ff5558cd05524c8b3424498b5610ff124c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000|@13649,1,@1167| 5992:D4,1152|483b65187306ff5558ca09074989c55341514c8b7424584d8b364e8d3475010000004c8b6424084d8b1c244e8d145d010000004983fe0175084d89e3e9bd0000004983fa01750a4c8b5c2458e9ad0000004f8d4c16ff4c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d3c4501000000483b3df90300000f87ce0300004889fe4c8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca80774d89df48d1ee498973f841c643ff414883ef0249c744bbfc0000000049d1e94d890b4c8b4c24584c89f1498d7108498d7b0848d1e9f3a44983c6104c89d14d89e4498d74240849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bc00d9d0f1c27f0000e9a00000004d89f24983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d220300000f87ea0200004c89cf4c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c61049d1ee43c604342e41806424ffbf6a016a016a016a016a016a01488b942480000000488b5c24704c8b5424684c8b4c2460488b7c24584c8b7424504c8b5c247841564155415454488304241841534c89c04d89d04989faff12415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e4156488b0424ff15450200004c8b6c24684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8b742430498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d64240849c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be6086d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b24244d896510488d6424084d8975084c8b6424084d89e64d8965004155488b542420498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b2c244c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084c8b2c244d897500488d64241048c7c001000000c25000488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01|@13653,1,@1171,@5993|273,0,@9571 832,0,@10839 1093,0,@9487 1114,0,@9487 5993:D4,40|483b65187305ff5558cd01488b0049b8e8fed2f1c27f000048c7c301000000ff251b000000f40000|@13654,1,@1172,@4953|16,0,@13651 5994:D7,296|483b65187306ff5558ca0901534150f6442408010f85070100004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54c3b25210100000f85c40000004c3b2d0c0100000f85a20000004d8b76104d8b6e2841f6c50175124d8b6d004d8b6d0849c7450003000000eb004d8b6e3041f6c501756f41ff7500498b46186a016a0148bbf8fed2f1c27f00004989e0ff15b5000000ff3424488b442410ff159f0000004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424184c8b2c244d897500488d64240849c7c401000000eb0749c7c401000000eb1c488d64241848b87810d1f1c27f0000488b5d08ff2349c7c401000000415d4c8924244c896c2408483b65187303ff5558e9eefeffff584883c408c3f4|@10041,1,@1170,@5239,@5234,@4625,@4625|130,0,@13652 243,0,@9991 5995:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@1169| 5996:D6,1056|483b65187306ff5558ca09075053415041514152ff352e04000048c7c015000000ff1519040000488b1424ff15070400004989c641564c8b34244d8b56304c8b6c24204d8b5d304d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849bb500c5cf1c27f00004d891c2441544d89f64d8b56404d89ed4d8b5d404d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c240849bbb80c5cf1c27f00004d891c2441544d89f64d89f241ff76204d89d24d8b5a604d89ed4d8b65604d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d895e104d89660849bc200d5cf1c27f00004d892641564d89ed4d89ee41ff75284d89f64d89f141ff76584d89d24d8b6a104d89d24d8b62184d89d24d8b5a504d89d24d8b72084d89d24d89d041ff72384d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d89c04d8942104d89c94d894a0849b9880d5cf1c27f00004d890a41524d8d57904c3b55107306ff5550ca00784d89d749c742f80d0000004c8b4c24204d894a604c8b4c24104d894a584d895a504c8b1c244d895a484c8b5c24304d895a404c8b5c24084d895a384c8b5c24384d895a304c8b5c24184d895a284c8b5c24284d895a204d8962184d896a104d89720849bee0ffd2f1c27f00004d8932488b542458488b9c24a80000004c8b8424a00000004c8b8c24980000004c8bb424900000004c8bac24880000004c8ba42480000000415641554154ff742468488b842490000000ff124d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b6424404d89e64d8965104c8b6424604d89e34d89650849bcd80e5cf1c27f00004d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d89f64d89f24d897424104d89db4d89de4d895c240849bb380f5cf1c27f00004d891c244d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89d24d89d14d8953104d89f64d89f24d89730849be980f5cf1c27f00004d89334d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d89c94d894e104d89d24d89560849baf80f5cf1c27f00004d8916498d7f90483b7d107306ff5550ca00784989ff48c747f80d0000004c8b5424204c8957604c8b5424104c8957584c895f504c8b1c244c895f48488d6424084c8b5c24284c895f404c8b1c244c895f38488d6424104c8b5c24204c895f304c8b1c244c895f28488d6424104c8b1c244c895f20488d6424284c8967184c896f104c89770849bee0ffd2f1c27f00004c8937488b542408488b442418488b5c24584c8b4424504c8b4c24484c8b6c24404c8b6424384c8b5c2430415a488d6424204c895424184989fa4c895c24204c896424284c896c24304c8b34244c897424104883c410ff22f40000000000|@13658,1,@1183,@5076,@5347,@10448|111,0,@5997 179,0,@5998 254,0,@5999 368,0,@6000 497,0,@13656 631,0,@6003 695,0,@6004 756,0,@6005 810,0,@6006 954,0,@13656 5997:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1173| 5998:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1174| 5999:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1175| 6000:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@13655,1,@1176,@6001| 6001:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1177| 6002:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13655,1,@1178| 6003:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5610488b0424ff124c8b7424084d8b7608498b561058488d642408ff22f40000|@13657,1,@1179| 6004:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5618488b0424ff124c8b7424084d8b7608498b561858488d642408ff22f40000|@13657,1,@1180| 6005:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5650488b0424ff124c8b7424084d8b7608498b565058488d642408ff22f40000|@13657,1,@1181| 6006:D3,56|483b65187305ff5558cd0552504c8b7424084d8b7610498b5608488b0424ff124c8b7424084d8b7608498b560858488d642408ff22f40000|@13657,1,@1182| 6007:D25,6832|488dbc2428ffffff483b7d187306ff5560ca0d075250534150415141524d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d8975104c8b7424084d89750849bee02b5cf1c27f00004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b34244d897424104c8b7424084d8974240849bec02c5cf1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424284d8b364983fe050f85e40100004c8b7424284d8b760841ff3641ff760841ff761041ff761841ff762041ff762849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4156488b54245048c7c001000000ff124989c64156488b54245048c7c001000000ff124989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424684c8973104c8b7424104c89730849bea02d5cf1c27f00004c89334d8d4fd84c3b4d107305ff5550cd084d89cf49c741f8040000004c8b7424084d8971184c8b7424104d8971104c8b34244d89710849be602e5cf1c27f00004d89316a016a016a016a016a016a01488b9424a80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24b80000004156415541545448830424184153488b8424980000004c8b8424b80000004c8b9424a8000000e8f0fdffff415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e415648ba5802d3f1c27f00004c8b9424b0000000ff742430488b442448488b5c24184c8b4424104c8b4c2460ff15f01800004989c641564c8b342441ff76284c8b7424084d8b66104c8b7424084d8b762849c7c501000000e9711100004c8b7424284d8b364983fe030f8557020000488d6424084c8b74242041ff76084c8b74242841ff76104c8b74243041ff7618ff358518000048c7c015000000ff1570180000488b1424ff155e1800004989c6488d6424084d8b5e304c8b6c24184d8b65304d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849bc10155df1c27f00004d89650041554d8b66404c8b6c24204d8b6d40498d7fe0483b7d107306ff5550ca00704989ff48c747f8030000004c8967104c896f0849bd78155df1c27f00004c892f4d8b56204d8b66604c8b6c24204d8b6d60498d5fe0483b5d107306ff5550ca80744989df48c743f8030000004c8963104c896b0849bde0155df1c27f00004c892b4c8b6c24204d8b4d284c8b6c2420498b4d584d8b66104d8b5e18498b56504d8b6e084d8b4638498d77e0483b75107306ff5550ca8e7f4989f748c746f8030000004c8976104c8b7424204c89760849be48165df1c27f00004c89364d8d77904c3b75107306ff5550cace3f4d89f749c746f80d00000049895e6049894e58498956504989764849897e404d8946384c8b04244d894630488d6424084d894e284d8956204d895e184d8966104d896e0849bda827d3f1c27f00004d892e41564c8b742448498b56084c8b7424784c8b6c24684c8b6424584156ff74241041554154488b442430488b5c24584c8b4424504c8b4c24484c8b542420ff12488b542448488b442418488b5c24384c8b442430488b7c24285e4c8b6c2470415c488d6424404c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e9ecfaffff4c8b7424284d8b364983fe070f857d040000488d6424084c8b74242041ff76084c8b74242841ff76104c8b74243041ff761848c7c015000000ff15fd1500004989c6415648ba3851d1f1c27f0000488b0424ff15dc1500004989c24d8b6a184d8b7210498b72504d8b5a304c8b6424204d8b6424304d8d4fe04c3b4d107306ff5550ca407c4d89cf49c741f8030000004d8959104d89610849bc98175df1c27f00004d89214d8b5a404c8b6424204d8b6424404d8d47e04c3b45107306ff5550ca407e4d89c749c740f8030000004d8958104d89600849bc00185df1c27f00004d89204d8b5a604c8b6424204d8b642460498d4fe0483b4d107306ff5550ca407f4989cf48c741f8030000004c8959104c89610849bc68185df1c27f00004c89214c8b6424204d8b5c24284c8b642420498b5424584c8b6424204d8b642420498d7fe0483b7d107306ff5550ca467f4989ff48c747f8030000004c8957104c8b5424204c89570849bad0185df1c27f00004c89174d8d57904c3b55107306ff5550cac67b4d89d749c742f80d00000049894a60498952584989725049897a484d89424049b8f027d3f1c27f00004d8942384d894a304d895a284d8962204d896a184d89721049be8028d3f1c27f00004d89720849be1029d3f1c27f00004d89324c8b742448498b56084c8b7424784c8b6c24704c8b6424684c8b5c24584156415541544153488b442438488b5c24584c8b4424504c8b4c2448ff1248c7c015000000ff15041400004989c6415648ba3851d1f1c27f0000488b0424ff15e31300004989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849beb01a5df1c27f00004d8930488b44240848bbb05fd1f1c27f0000ff15971300004989c64d8b76084c8b6c24104d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060100000041564c8bb42488000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156488b54244048c7c001000000ff124989c64156488b54244048c7c001000000ff124989c64c8b6c24104d8b6d004983fd030f85c10000004c8b6c24104d8b6d084c8b6424104d8b6424184d8b6d00498b34244c8b5ef849c1e30849c1eb074983cb014983fb01750c49bc4882d1f1c27f0000eb584d89da4c89d14e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42684d89e749d1ea4d895424f841c64424ff404c89e748d1e948c7c001000000f348ab4c89d94c89e748d1e9f348a541806424ffbf4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c70301000000eb054c8b5c24104c8b6c247849bcd8c8d0f1c27f00004d895d004d89650849c74510010000004c8b6424084d8965184d897520415e488d6424084d89752848c7c0010000004883c458c228004c8b7424284d8b364983fe010f85100500004c8b7424284d8b760841ff3641ff760841ff761041ff761841ff762041ff762841ff763041ff76384c8b742448498b5658488b442430ff124989c641f6c6010f85c20100004d8b2e4d8b750041ff761041ff75184d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24284d8975006a016a016a016a016a016a01488b9424b00000004c8bb424e00000004c8bac24d00000004c8ba424c00000004156ff74245841555448830424184154488b8424a0000000488b9c24c80000004c8b8424c00000004c8b8c24b80000004c8b9424b0000000e867f5ffff415d415c415b415a415941584d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849bde8275df1c27f00004d892e4156488b54247048c7c001000000ff124989c66a016a014c8b9424d00000004c8bac24b00000004156ff7424785448830424104155488b442438488b5c24484c8b4424304c8b4c2460ff15cf0f0000ff3424ff7424104c8b742438498b5e1048c7c001000000ff15aa0f00004889c34883fb017504415eeb12488b0424ff158b0f00004989c6488d6424084c8b6c24384d8975004c8b7424304d8b6e104c8b742430498b5e2849c7c601000000e92b040000488d6424084c8b7424284d8b364e8d3475010000004983fe01750f49bc382ad3f1c27f0000e9b80000004d89f54983c5124c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d920e00000f87940200004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2449bd382ad3f1c27f000048c7c113000000498d7508498d7c240848d1e9f3a44c89f14c8b742428498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be08a5d1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15b10d00000f87a60100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc08a5d1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24604d89680849bd38285df1c27f00004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84249800000048c7c3030000004c8b0c24ff15c60c0000488d6424084c8b6c247849be882ad3f1c27f00004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c0010000004883c468c22800488d64247048b8f8c7d0f1c27f0000488b5d08ff23488d64247048b8f8c7d0f1c27f0000488b5d08ff23488d6424084c8b7424204d8b46084c8b74242041ff76104c8b7424284d8b6e184c8b742408498b5e604c8b7424604d8d4fd84c3b4d107306ff5550ca08614d89cf49c741f8040000004d8969184d8971104c8b7424284d89710849be88285df1c27f00004d893148b860a3d1f1c27f0000ff15cc0b00004989c6415d488d6424084d8975004983fe01754d488d6424284c8b6c241049be882ad3f1c27f00004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c22800488d6424284d8b364c8b6c24104d8b76104d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c2280041f6c50175394d8b5d084d89f44983c4027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0860ebc14983ee014903de7118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8b7424304d8b4e28492bd97118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234883c3014883fb017d18488da424b000000048b83020d1f1c27f0000488b5d08ff2348c7c0010000004c8b0424ff15600a00004c8b742430498b5e10ff15490a00004989c64c8b6c24604d8975004c8b742428498b4610488b5c24684c8b4424484c8b8c2498000000ff15140a00004c8b742458498906ff15fe0900004989c44983fc01750f49be4882d1f1c27f0000e9c100000049c7c5010000004d89e641f6c60175394d8b56084d89eb4983c3027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc14c3b2d460900007c18488da424b000000048b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f8518020000418066ffbf41564c8b7424384d8b6e284c8b7424304d8b76284d3bee7d054d89eeeb004156488b94249800000048c7c001000000ff124989c54d8d77c04c3b75107306ff5550ca00204d89f749c746f807000000415c4d8966304c8b6424384d8966284c8b6424084d8966204c8b6424304d896618415c488d6424084d8966104d896e0849bde8295df1c27f00004d892e41564c8b74242841ff364c8b74243041ff76084c8b74243841ff7618488b9424a800000048c7c001000000ff124989c64c8b6c24404d8b6d204d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24184d895c24104d896c240849bdb02a5df1c27f00004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba4882d1f1c27f0000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24d80000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4b8000000c228004d8b1c244d8b5424084f895caefc4d89eb4983c3027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e998fdffff41f6c401753a4d8b5424084d89eb4983c3027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc04983ed014d03f541567118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424604d89700849be002b5df1c27f00004d89306a016a014c8b9424d80000004c8bb424b8000000ff742430ffb424800000005448830424104156488b442448488b5c24404c8b4c2478ff15f7050000ff34244c8b7424104c8b6c24504d8975004c8b7424684983fe030f85d0000000488b5c2418482b5c24207118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234883c3014883fb017d18488da424b800000048b83020d1f1c27f0000488b5d08ff2348c7c0010000004c8b04244c8b4c2420ff15730500004989c6488d64240841564c8b742428498b4610488b5c24604c8b8424a0000000ff15450500004989c64156488b442408488b1c24ff15290500004989c64c8b6c24604d8975004c8b34244983fe017514488d64242849be4882d1f1c27f0000e9a402000049c7c5010000004c8b3424e9d8010000488b94249000000048c7c001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424284d896618415c4d8966104d896e0849bd502b5df1c27f00004d892e41564c8b74242841ff364c8b74243041ff76084c8b74243841ff76184c8b74244041ff7620488b9424b800000048c7c001000000ff124989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c2410415d4d896c240849bda02b5df1c27f00004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba4882d1f1c27f0000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24e00000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4c0000000c2280041f6c60175394d8b5e084d89ec4983c4027118488da424c000000048b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc14c3b2d990200007c18488da424c000000048b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000415c4883c4204983fc010f85e1010000418066ffbf4156488b54247848c7c001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d896618415c488d6424084d8966104d896e0849bdf02b5df1c27f00004d892e41564c8b74240841ff364c8b74241041ff76084c8b74241841ff76184c8b74242041ff7620488b94249800000048c7c001000000ff124989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c2410415d4d896c240849bd882c5df1c27f00004d892c244c8b6c24104d8b6d004983fd030f85bc0000004c8b6c24104d8b6d084c8b5c24104d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba4882d1f1c27f0000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb054c8b5c24104c8bac24c00000004d895d004c8b5c24084d895d0849c7451001000000415b488d6424084d895d184d8965204d89752848c7c0010000004881c4a0000000c228004d8b1c244d8b5424084f895caefc4d89eb4983c3027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9cffdfffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@13914,1,@1355,@6179,@6180,@6181,@6175,@6182,@6183,@6185,@6186,@5342,@5990,@6187,@6188,@6175,@4953,@5076,@5347,@5076,@5347,@5076,@5347,@10448,@6013|72,0,@6008 133,0,@6009 357,0,@6010 422,0,@6011 594,0,@13667 820,0,@6145 884,0,@6146 949,0,@6147 1040,0,@6148 1137,0,@13884 1370,0,@10448 1454,0,@6151 1516,0,@6152 1578,0,@6153 1661,0,@6154 1721,0,@13886 1755,0,@13890 1769,0,@13894 1859,0,@10448 1913,0,@6159 1931,0,@10542 2251,0,@10817 2405,0,@9493 2815,0,@6164 3033,0,@13901 3173,0,@13901 3250,0,@11024 3408,0,@11024 3483,0,@6165 3670,0,@13903 3746,0,@9487 3767,0,@9487 3873,0,@6166 3886,0,@11010 3932,0,@13903 4100,0,@9475 4153,0,@9475 4191,0,@9475 4225,0,@10101 4341,0,@10817 4393,0,@9475 4446,0,@10818 4676,0,@6168 4789,0,@6169 4869,0,@10817 5111,0,@9475 5178,0,@9475 5233,0,@9475 5282,0,@6170 5407,0,@9475 5441,0,@10101 5564,0,@10817 5661,0,@6171 5776,0,@6172 5856,0,@10817 6094,0,@9475 6147,0,@10818 6325,0,@6173 6440,0,@6174 6520,0,@10817 6762,0,@9475 6008:D3,184|483b65187305ff5558cd05524c8b34244d8b7610498b5640ff124989c641f6c6010f858100000041ff364c8b742408498b560848c7c001000000ff124989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@13660,1,@1185| 6009:D3,184|483b65187305ff5558cd05524c8b34244d8b7610498b5660ff124989c641f6c6010f858100000041ff364c8b742408498b560848c7c001000000ff124989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f40000|@13660,1,@1186| 6010:D3,152|483b65187305ff5558cd05524c8b304c8b68084c8b60104c8b58184c8b50204c8b0c24498b5110498d47d0483b45107306ff5550ca047c4989c748c740f8050000004c8950204c8958184c8960104c8968084c8930ff124c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f4000000|@13661,1,@1187| 6011:D3,80|483b65187305ff5558cd05498d47d8483b45107305ff5550cd044989c748c740f8040000004c8b72184c8970184c8b72104c8970104c8b72084c89700849bed82e5cf1c27f00004c8930c3f400000000|@13666,1,@1189|63,0,@6012 6012:D3,168|483b65187305ff5558cd054c8b7218493bc67d06488b5208ff224c8b72104d8b3641f6c601755f4d8b264d8b6e084d8b5c24084d8b134983fa01753a4d8b5b184c3bd875204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb284d89ee483b65187306ff5558ca0140ebab48b83801d3f1c27f0000488b5d08ff2349c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff23498b06c3f4|@13665,1,@1188|120,0,@13662 149,0,@10926 6013:D9,2184|483b65187306ff5558ca0d074989c6415253415049c7c5010000004d8d67f04c3b65107306ff5550ca04624d89e749c74424f80100000041c64424ff404d892c2449bd9002d3f1c27f00004d892c244c8b6424084d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d896500415549c7c4150000004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca06424d89ef49d1ec4d8965f841c645ff404c89ef48d1e948b8a85bd1f1c27f0000f348ab4d8d67e84c3b65107306ff5550ca04624d89e749c74424f8020000004d896c240849c70424030000004d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d89650041554d8d6fe84c3b6d107306ff5550ca04424d89ef49c745f80200000049bca85bd1f1c27f00004d8965084c8b24244d896500415549c7c4150000004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca06424d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4d8d67e84c3b65107306ff5550ca04624d89e749c74424f8020000004d896c240849c70424030000004d8d6ff04c3b6d107306ff5550ca04524d89ef49c745f80100000041c645ff404d8965004d8d67e84c3b65107306ff5550ca04624d89e749c74424f80200000049c7442408010000004d892c246a016a016a016a014d8b164d89d34983fa010f85a5000000498b4608498b7e106a016a016a016a016a016a0149b81007d3f1c27f00004c8b5a084c8b942488000000544156ffb42488000000ff742478ffb42490000000ff7424784154ffb424a0000000ffb4249800000041554151415341524c89cb4c89c24989f849c7c10100000049bad8c8d0f1c27f0000ff1530060000415b415c488d642408415d415e488d6424084c891c244c896424084c896c24104c89742418e9160100004983fb050f858f0000004d8b5e08498b0b498b4308498b7b10498b5b18498b732049b82807d3f1c27f00004c8b5a084c8b5424584151ff35c20500004156ff742460ff742450ff742468ff7424504154ff742478ff74247041554151415341524989ca4989f14c89c24989f8ff15840500004989c64d8b2e4c892c244d8b6e084c896c24084d8b6e184c896c24104d8b76204c89742418eb7d498b4608498b5e104d8b46186a016a016a016a016a016a014c8b6a085441514156ffb424900000004155ffb42488000000ffb424a0000000ffb424880000004154ffb424b000000049bad8c8d0f1c27f0000ff15fd040000415b415c488d642408415d415e488d6424084c891c244c896424084c896c24104c89742418ff3424ff742410ff742420ff742430488b44241848c7c30100000049b82824d3f1c27f0000ff15a50400004989c44c8b6c24604d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965006a016a01ff7424504156415548c7c001000000488d5c24184c8b4424784c8b8c24880000004c8b542470ff151e040000415e415b4983fb01750f49bd4882d1f1c27f0000e9b700000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25980300007c15488d64247048b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017526418065ffbf4983fe01750f49bc4882d1f1c27f0000e90201000049c7c3010000004d89f4eb3e4d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078eb9641f6c40175374d8b4c24084d89da4983c2027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89cc4d89d3483b65187306ff5558ca0078ebc34c3b1d830200007c15488d64247048b85082d1f1c27f0000488b5d08ff234c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab49c7c3010000004d89f24983fa010f85d101000041806424ffbf4d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004c8b5424604d8953184d896b104c8b5424584d89530849ba00085df1c27f00004d89134d8b6df849c1e50849c1ed074983cd014d8b6424f849c1e40849c1ec074983cc014d3bec750949c7c503000000eb0749c7c5010000004983fd037504415ceb364d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d895c2410415d4d896c240849bd98085df1c27f00004d892c244c8b6c24104d8b6d004983fd030f85bd0000004c8b6c24104d8b5d084c8b6c24104d8b6d184d8b1b498b75004c8b6ef849c1e50849c1ed074983cd014983fd01750c49ba4882d1f1c27f0000eb554d89e94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89e94c89d748d1e9f348a5418062ffbf4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d0849c7450001000000eb054c8b6c2410498d47c8483b45107306ff5550ca00704989c748c740f8060000004c8b5c24584c8958284c896020415c4c8960184c897010415e4c8970084c89284883c458c208004d8b0a4d8b42084f894c9cfc4d89d94983c1027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89c24d89cb483b65187306ff5558ca007ce9e4fdfffff40000ffffffffffffff01ffffffffffffff01|@13879,1,@1319,@6138,@4953,@6083,@6121,@9493,@6016|67,0,@13669 186,0,@10515 305,0,@10515 563,0,@13706 650,0,@9493 741,0,@13707 933,0,@9493 1013,0,@13863 1166,0,@10817 1215,0,@9475 1265,0,@10818 1370,0,@10817 1423,0,@9475 1484,0,@9475 1534,0,@10818 1692,0,@6136 1809,0,@6137 1889,0,@10817 2128,0,@9475 6014:D9,2304|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b204d89e64d8b24244983fc010f85600200004d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3574080000750949c7c603000000eb2b4c3b355a080000750949c7c603000000eb194c3b3540080000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda002d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54d8b364983fe030f85600200004d8b75084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35d8050000750949c7c603000000eb2b4c3b35be050000750949c7c603000000eb194c3b35a4050000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb003d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4d8b6d004983fd05750b48b89004d3f1c27f0000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d8b74240841ff7424104983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb86fd1f1c27f0000e92e0200004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c641564c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e415649be38c5d0f0c27f0000498b1648b86805d3f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda005d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed805d3f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1006d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@13705,1,@1191,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4754 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@13670 674,0,@10414 711,0,@9475 761,0,@4699 944,0,@11514 992,0,@10391 1037,0,@11357 1188,0,@10236 1233,0,@13678 1318,0,@10414 1342,0,@13685 1362,0,@10414 1396,0,@9475 1430,0,@10678 1459,0,@9475 1509,0,@4754 1545,0,@9475 1602,0,@4691 1615,0,@13692 1671,0,@10681 1719,0,@10236 1764,0,@13694 1808,0,@10236 1853,0,@10685 1941,0,@10236 1985,0,@13696 2034,0,@10688 2179,0,@10236 2224,0,@13698 6015:D3,32|483b65187305ff5558cd0149be78c0d0f0c27f0000498b16ff22f40000000000|@10097,1,@1190|13,0,@4615 6016:D7,1488|488dbc2418ffffff483b7d187306ff5560ca0d0752505341504151415248c7c015000000ff15d60500004989c6415648ba3851d1f1c27f0000488b0424ff15b50500004989c641ff763041ff764041ff762041ff766041ff762841ff765841ff761041ff76304c8ba424d80000004c8b9c24d00000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b5c24584d895d204d8965184c8b24244d8965104c8b6424084d89650849bc40485cf1c27f00004d896500415541ff761841ff76404c8ba424f00000004c8b9c24e80000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b5c24704d895d204d8965184c8b24244d8965104c8b6424084d89650849bc88505cf1c27f00004d896500415541ff765041ff76604c8ba424080100004c8b9c24000100004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284c8b9c24880000004d895d204d8965184c8b24244d8965104c8b6424084d89650849bcd8515cf1c27f00004d896500415541ff76484d8d77904c3b75107303ff55504d89f749c746f80d0000004c8b6c24604d896e604c8b6c24504d896e584c8b6c24084d896e504c8b2c244d896e484c8b6c24704d896e4049bd5809d3f1c27f00004d896e384c8b6c24784d896e304c8b6c24584d896e284c8b6c24684d896e204c8b6c24204d896e184c8b6c24384d896e1049bdf009d3f1c27f00004d896e0849bd880ad3f1c27f00004d892e4156ffb424b0000000ffb424a0000000f6442408010f856c0100004c8b74240841ff364c8b74241041ff7608ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e0000000488b5b084156ffb42480000000ffb42480000000ffb424e8000000ffb424c0000000ffb424b8000000ffb424c8000000ffb424c0000000ffb424e8000000ff742478ffb42488000000ffb424d80000004155415441534152ffb4243801000041514150ffb424f8000000ffb424f800000057ffb424d8000000ffb42420010000ffb42410010000ffb424a801000056525153ffb42438010000ffb42438010000488b842410010000488b9c24180100004c8b8424c80100004c8b8c24000100004c8b9424c8010000ff15610200004989c4488d642408415d488d6424084c8924244c896c2408483b65187303ff5558e989feffff488da424980000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060100000041564c8bb42498000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e41564c8bb4249000000041ff36488b9c24980000004c8b8424900000004c8b4c24684c8b54247848c7c001000000ff15410100004989c64c8b6c24104d8b6d004983fd030f85c10000004c8b6c24104d8b6d084c8b6424104d8b6424184d8b6d00498b34244c8b5ef849c1e30849c1eb074983cb014983fb01750c49bc4882d1f1c27f0000eb584d89da4c89d14e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42684d89e749d1ea4d895424f841c64424ff404c89e748d1e948c7c001000000f348ab4c89d94c89e748d1e9f348a541806424ffbf4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c70301000000eb054c8b5c24104c8bac24b000000049bcd8c8d0f1c27f00004d895d004d89650849c74510010000004c8b6424084d8965184d897520415e488d6424084d89752848c7c0010000004883c438c26800f400000000|@13763,1,@1240,@6066,@6032,@5076,@5347|49,0,@10448 181,0,@6017 282,0,@6023 386,0,@6026 474,0,@13719 533,0,@13723 547,0,@13727 1264,0,@10817 1421,0,@9493 6017:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849bef0485cf1c27f00004d89304c8b4a1049bd8807d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849ba20dfd1f1c27f00004c896c2420ff251b000000f40000|@13713,1,@1195,@6020|57,0,@6018 74,0,@13709 106,0,@11429 6018:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1192| 6019:D3,24|483b65187305ff5558cd01488b4020c3f400000000000000|@13710,1,@1193| 6020:D4,1112|483b65187306ff5558ca09074c89ca505341504152488b442418ff124989c64983fe017520488d6424085a488b4424085b488d6424084c8b34244c897424204883c420ff224c8b6c24384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd184e5cf1c27f00004d892e4156488b542448488b442418ff124989c64983fe0175074c8b4c2438eb1a4d8b264d8b6e084d8b1c244983fb010f857c0300004d8b4c24084c8b6c24084d8b75004e8d3475010000004983fe01750f49ba80a5d1f1c27f0000e9aa0000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d4c0300000f87060300004d89d84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c6104d89f549d1ed43c6042a2049d1ee43c644320128418062ffbf4d8b324e8d3475010000004c8b6c24204d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d441eff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d640200000f87110200004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89f1498d7208498d7c240848d1e9f3a44983c6104c89d94d89ed498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2808d3f1c27f0000e9b60000004d89eb4983c34e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158d0100000f872d0100004d89d04e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc2808d3f1c27f000048c7c14f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00224d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00424d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b442430415848c7c3030000004c8b7424204c897424404883c440ff258a000000488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040e94efcfffff4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@13714,1,@1196,@6022|107,0,@6021 199,0,@11027 630,0,@13712 788,0,@13712 1005,0,@9487 1026,0,@9487 1047,0,@9487 6021:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13711,1,@1194,@5050| 6022:D7,472|483b65187306ff5558ca09074c89c25053415141524c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1dd201000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9b70000004d8b364d8b2e4c3b2d6e0100007506498b4610eb15488d64242048b87810d1f1c27f0000488b5d08ff23ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c8970084c8b34244d89f54c89304c8b6424084d8b7424184d89e4498b5424604d89ed4983fd03488d642410750949c70603000000eb00ff2241f6c60175454d8b264d8b6e084d8b1c244c3b1da400000075204d8d77f04c3b75107306ff5550ca04104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0440ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3a0000007509498b4610e9eefeffff488d64242048b87810d1f1c27f0000488b5d08ff23f400|@13715,1,@1197,@4650,@4650,@4650,@4650|120,0,@10158 161,0,@9991 411,0,@10198 456,0,@9991 6023:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be38515cf1c27f00004d89304c8b4a1049bd2009d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849bab87ed2f1c27f00004c896c2420ff251b000000f40000|@13713,1,@1200,@6020|57,0,@6024 74,0,@13716 106,0,@12712 6024:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1198| 6025:D3,24|483b65187305ff5558cd014c8b30498b4610c3f400000000|@13717,1,@1199| 6026:D4,128|483b65187305ff5558cd054989c6498b06498b5e084d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be88525cf1c27f00004d89304c8b4a1049bd4809d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849ba60a3d1f1c27f00004c896c2420ff251b000000f40000|@13713,1,@1203,@6020|57,0,@6027 74,0,@13718 106,0,@11010 6027:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1201| 6028:D3,24|483b65187305ff5558cd01488b4018c3f400000000000000|@13710,1,@1202| 6029:D3,32|483b65187305ff5558cd0148b86809d3f1c27f0000488b5d08ff23f400000000|@13710,1,@1204|13,0,@13720 6030:D3,32|483b65187305ff5558cd0148b8000ad3f1c27f0000488b5d08ff23f400000000|@13710,1,@1205|13,0,@13724 6031:D3,32|483b65187305ff5558cd0148b8980ad3f1c27f0000488b5d08ff23f400000000|@13710,1,@1206|13,0,@13728 6032:D28,5856|488dbc2430ffffff483b7d187306ff5560ca09074c89c25053415141524c8b7424184d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e957030000909090e9e00a0000909090e9ea0a0000909090e98c0b0000909090e9d30d00009090904d89f641ff76084c8b6c24184d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8bac24280100004c8ba424200100004c8b9c24300100004d8d77c04c3b75107306ff5550ca00384d89f749c746f8070000004c8b14244d8956304d895e284c8b5c24104d895e204c8b5c24184d895e184d8966104d896e0849bdd06b5cf1c27f00004d892e41566a016a016a0148c7c0010000004889e3ff15a5160000ff34244c8b7424104c8b5c24184c8bac24400100004d8b6d404c8ba424380100004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d895a184d8962104d896a0849bd886d5cf1c27f00004d892a4c8bac24400100004d8b6d604c8ba42430010000498d57e0483b55107306ff5550ca00744989d748c742f8030000004c8962104c896a0849bd086e5cf1c27f00004c892a4c8bac24280100004c8ba424200100004c8b9c24180100004c8b8c2410010000488bbc2408010000488bb424000100004d8d47904c3b45107306ff5550cac47e4d89c749c740f80d0000004989506049897058498978504d8948484d89504049ba5809d3f1c27f00004d8950384d8958304d8960284d8968204d8970184c8b7424204d89701049bef009d3f1c27f00004d89700849be880ad3f1c27f00004d89304c8bb424d80000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e0000000498d5fc8483b5d107306ff5550ca007d4989df48c743f8060000004c8953284c895b204c8963184c896b104c89730849be706e5cf1c27f00004c89334c8bb424d00000004c8bac24c80000004c8ba424f00000004d8d57d84c3b55107306ff5550ca08714d89d749c742f8040000004d8962184d896a104d89720849be28765cf1c27f00004d893248ba3889d1f1c27f00004c8b8c2458010000488b442430ff15961400004c8bb424c00000004c8bac24b80000004c8ba42458010000498d47c0483b45107306ff5550ca00704989c748c740f8070000004c8b5c24284c8958304c8960284c8b6424384c8960204c8b6424404c8960184c8968104c89700849be207b5cf1c27f00004c89305a488d642420ff124c8b3424498b06488d642430c200014d89f64d89f541ff76084d89ed4d8b65104d89ed4d8b751841ff342441ff7424084c8b9c24380100004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004c8b5424104d895424184d895c24104d89ed4d896c240849bda87d5cf1c27f00004d892c2441f6c6010f85a4000000498b0648ba60a2d1f1c27f00004c8bb424180100004c8bac24100100004c8b9c2420010000498d5fd0483b5d107306ff5550ca05784989df48c743f8050000004c895b204c8963184c896b104c89730849be087f5cf1c27f00004c89334c8b842438010000ff15311300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc28cfd1f1c27f00004d8966104d896e0849c70605000000eb0a49be28cfd1f1c27f000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060100000041564c8bb42448010000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424184d89f44c3b35161200007502eb3e4d89e44d8b2c244d89ee4e8d2c6d010000004983fd09752b49bd30c9d1f1c27f00004d89e4498d742408498d7d0848c7c104000000483bc9f3a67402eb05e9940100004c8b6c24184d89ec4c3b2db81100007502eb3a4d89e44d89f54e8d3475010000004983fe0b752b49be48c9d1f1c27f00004d89e4498d742408498d7e0848c7c105000000483bc9f3a67402eb05e9420100004c8b7424184d89f44c3b355e1100007502eb3a4d89e44d89ee4e8d2c6d010000004983fd07752b49bd98b5d1f1c27f00004d89e4498d742408498d7d0848c7c103000000483bc9f3a67402eb05e9f00000004c8b6c24184d89ec4c3b2d041100007502eb3a4d89e44d89f54e8d3475010000004983fe05752b49be80b6d1f1c27f00004d89e4498d742408498d7e0848c7c102000000483bc9f3a67402eb05e99e0000004c8b7424184d89f44c3b35aa1000007502eb3a4d89e44d89ee4e8d2c6d010000004983fd07752849bd60c9d1f1c27f00004d89e4498d742408498d7d0848c7c103000000483bc9f3a67402eb02eb4f4c8b6424184d89e54c3b25531000007502eb3c4d89ed4e8d3475010000004983fe050f85db02000049be78c9d1f1c27f00004d89ed498d7508498d7e0848c7c102000000483bc9f3a60f85b40200004c8b7424184d8b2e4e8d2c6d010000004983fd01750f49bcf00fd3f1c27f0000e9b60000004d89eb4983c3184c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b151e0f00000f87440200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bbf00fd3f1c27f000048c7c119000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c241448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be1010d3f1c27f0000e9b60000004d89eb4983c31a4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153f0e00000f87580100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc1010d3f1c27f000048c7c11b000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24404d89680849bde8805cf1c27f00004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84244801000048c7c3030000004c8b4c2420ff15830d0000eb2a488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64244848b8f8c7d0f1c27f0000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c70601000000498d5fc0483b5d107306ff5550ca00404989df48c743f80700000048c743300100000048c74328010000004c8b2c244c896b20488d6424084c8b2c244c896b18488d6424084c89731048c74308010000004c8b7424084c89f04c89334c8bb424300100004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849be38815cf1c27f00004d89304c8b8c24280100004c8bb42438010000ff35810c0000ff742428ff742428415649ba20dfd1f1c27f0000ff155f0c0000488b4424284883c0027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488d642438c200014d89f64d8b76084156ff742418e9c2090000488d6424084d89f44d8b7424084d89e44d8b6c24104d89e44d8b642418498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930488b5c24684c8b8424180100004c8bb424b80000004c8bac24b00000004c8b6424704c8b9c24900000004c8b9424880000004c8b8c24a80000004156415541544153415241514d89c24c8b4424304c8b4c2430ff15810b0000488d64240858488d642408c200014d89f64d8b7608ff7424104156ffb42418010000ffb42418010000ffb42418010000ffb42400010000ffb42498000000ffb42498000000ffb42430010000ffb42430010000ffb42430010000ffb42428010000ffb42428010000ffb42408010000ffb424c8000000ffb42480000000ffb424a0010000ffb42448010000ffb42448010000ffb424480100004c8bac24480100004c8ba424380100004c8b9c24300100004c8b9424180100004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b8c24a0000000488b9c24d0000000488b8424c800000048898424f0000000488b84249800000048899c24f8000000488b9c249000000048898c240001000048899424080100004889b424100100004889bc24180100004c898424200100004c8b8424880000004c898c24280100004c8b8c24800000004c899424300100004c8b5424784c899c24380100004c89a424400100004c89ac24480100004c8b34244c89b424500100004c8b7424084c89b424580100004c8b7424104c89b424600100004c8b7424184c89b424680100004c8b7424204c89b424700100004c8b7424284c89b424780100004c8b7424304c89b424800100004c8b7424384c89b424880100004c8b7424404c89b424900100004c8b7424484c89b424980100004c8b7424504c89b424a00100004c8b7424584c89b424a80100004c8b7424604c89b424b00100004c8b7424684c89b424b80100004c8b7424704c89b424c00100004c8bb424c00000004c89b424e80000004881c4e8000000ff2524090000488da424c00000004d89f44d8b4c24084d89e44d8b7424104d89e44d89e541ff74241841ff3641ff76084c8b7424084d89f34c3b35e30800007502eb3c4d89db4d8b334d89f44e8d3475010000004983fe09752a49be30c9d1f1c27f00004d89db498d7308498d7e0848c7c104000000483bc9f3a67402eb05e9430100004c8b7424084d89f34c3b35870800007502eb3a4d89db4d89e64e8d2465010000004983fc0b752b49bc48c9d1f1c27f00004d89db498d7308498d7c240848c7c105000000483bc9f3a67402eb05e9f10000004c8b6424084d89e34c3b252d0800007502eb394d89db4d89f44e8d3475010000004983fe07752a49be98b5d1f1c27f00004d89db498d7308498d7e0848c7c103000000483bc9f3a67402eb05e9a00000004c8b7424084d89f34c3b35d40700007502eb3a4d89db4d89e64e8d2465010000004983fc05752849bc80b6d1f1c27f00004d89db498d7308498d7c240848c7c102000000483bc9f3a67402eb02eb514c8b5c24084d89dc4c3b1d7d0700007502eb3e4d89e44e8d3475010000004983fe070f85cd02000049be60c9d1f1c27f00004d89e4498d742408498d7e0848c7c103000000483bc9f3a67405e9a40200004c8b7424084d8b264e8d2465010000004983fc01750f49bbf00fd3f1c27f0000e9b00000004d89e24983c2184c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05860600000f87340200004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1ea4d891349baf00fd3f1c27f000048c7c119000000498d7208498d7b0848d1e9f3a44c89e14d89f6498d7608498d7b1448d1e9f3a4418063ffbf4d8b334e8d2475010000004983fc01750f49be1010d3f1c27f0000e9b40000004d89e24983c21a4c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ae0500000f874f0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049bb1010d3f1c27f000048c7c11b000000498d730849d1ec4b8d3c2648d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00624d89c749c740f8020000004d89ed4d89680849bd98815cf1c27f00004d89284d8d6fe84c3b6d107306ff5550ca00434d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00234d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00434d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b84243801000048c7c303000000ff15bb040000eb2a488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff2348ba60a2d1f1c27f00004c8bb424180100004c8bac24100100004c8ba424380100004c8b9c2420010000498d5fc8483b5d107306ff5550ca04784989df48c743f8060000004c895b284c8963204c8b6424304c8963184c896b104c89730849bee8815cf1c27f00004c89334c8b842438010000488b442410ff15090400004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060100000041564c8bb42448010000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b44240848bb3010d3f1c27f000049b88810d3f1c27f0000ff151e0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d89660849c70601000000498d5fc0483b5d107306ff5550ca00604989df48c743f80700000048c743300100000048c74328010000004c8b24244c896320488d6424184c896b184c89731048c74308050000004c8b34244c89f04c89334c8bb424280100004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849bed0855cf1c27f00004d89304c8b8c24200100004c8bb42430010000ff354c020000ff742420ff742420415649ba20dfd1f1c27f0000ff152a020000488d642420488b04244883c002488d642410711048b8d0c6d0f1c27f0000488b5d08ff23c20001f6442408010f85ae0100004c8b6c24084d89ee41ff75004d89f641ff7608ffb42428010000ffb42428010000ffb42428010000ffb424a0000000ffb424a0000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424d0000000ffb424a0010000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424400100004c8bb424400100004c8bac24280100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24500100004c8b8424e8000000488bbc2438010000488bb42430010000488b9424e0000000488b8c24d8000000488b9c24c8010000488b8424c0010000ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ff742470ffb42400010000ff742478ff742478ff742478ff742478ff742478ff7424784156415541544153415241514150ffb42468010000575652515350488b842488010000488b9c24900100004c8b8424780100004c8b8c24700100004c8b942468010000ff156b0000004989c4488da42490000000415d488d6424084c8924244c896c2408483b65187303ff5558e947feffff584883c428c20001f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@13773,1,@1247,@6073,@6020,@13709,@5108,@5330,@6022,@11271,@11132,@11124,@11270,@11269,@6092,@6068,@6020,@13709,@6022,@11272,@11271,@11132,@11124,@11270,@11269,@5330,@5261,@5240|240,0,@6033 349,0,@6035 417,0,@6036 525,0,@13719 564,0,@13723 578,0,@13727 678,0,@6037 754,0,@6040 767,0,@10856 886,0,@6047 1014,0,@6050 1041,0,@11003 1118,0,@6052 1175,0,@11302 1202,0,@11302 1448,0,@11269 1530,0,@11270 1612,0,@11124 1694,0,@11132 1776,0,@11271 1856,0,@11272 1917,0,@13758 2057,0,@13758 2132,0,@13759 2290,0,@13759 2365,0,@6055 2550,0,@9487 2571,0,@9487 2758,0,@6056 2803,0,@11429 2835,0,@9475 3714,0,@11269 3795,0,@11270 3877,0,@11124 3958,0,@11132 4038,0,@11271 4101,0,@13758 4238,0,@13758 4309,0,@13759 4466,0,@13759 4538,0,@6057 4718,0,@9487 4739,0,@9487 4755,0,@11003 4849,0,@6058 5082,0,@13760 5092,0,@13762 5275,0,@6065 5320,0,@11429 5356,0,@9475 6033:D4,296|483b65187305ff5558cd054989c6498b064d8b66084d8b34244d8b6c24084d8b5c24184d8b5424204c8b4a304d89cc4d8b094d89e04d8b24244983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89204d8d67e84c3b65107306ff5550ca056e4d89e749c74424f8020000004d894c240849c7042401000000498d5fc0483b5d107306ff5550ca057c4989df48c743f80700000048c743300100000048c74328010000004c8953204c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be286d5cf1c27f00004d89304c8b4a1049bd8807d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849ba20dfd1f1c27f00004c896c2420ff251f000000f4000000000000|@13731,1,@1208,@6020|65,0,@9475 221,0,@6034 238,0,@13709 270,0,@11429 6034:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1207| 6035:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@1209| 6036:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1210| 6037:D4,560|483b65187306ff5558ca0d034889d74989de4889c34d8b58084d8b2b4983fd03750f4d8b2848c7c001000000e97f0100004d8b204d8b014d8b51084d8b49104c8b6f084d89ee4d8b6d004e8d2c6d01000000498b30488d1c75010000004983fd0175084d89c6e9b30000004883fb017505e9a8000000498d741dff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15840100000f87f60000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee498936488b7f084c89e9488d7708498d7e0848d1e9f3a44983c5104889d9498d700849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed888d1f1c27f00004c8930c348b8f8c7d0f1c27f0000488b5d08ff2341f6c50175314d8b5d084989c44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4c89e0483b65187306ff5558ca8962ebc94d89f04c89ce4c8b6f084c8b67104c8b5f184c8b57204c8b4f284154415341524151ff7424204989f249c7c1030000004c896c2428ff2526000000f40000000000ffffffffffffff01|@13732,1,@1211,@6038|404,0,@10854 418,0,@9487 453,0,@9475 6038:D7,784|483b65187306ff5558ca09074d89d64151504d8b164d8b6e084d8b66104c8b7424384d8b364e8d1c75010000004d8b324e8d0c75010000004983fb0175084d89d6e9b90000004983f901750a4c8b742438e9a90000004b8d7c0bff4889f84883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d344501000000483b35840200000f87670200004889f24c8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550cac83f4d89f748d1ea498956f841c646ff414883ee0249c744b6fc0000000048d1ef49893e488b7c24384c89d9488d7708498d7e0848d1e9f3a44983c3104c89c9498d720849d1eb4b8d3c1e48d1e9f3a4418066ffbf41564d8d77e04c3b75107306ff5550ca08314d89f749c746f8030000004d8966104d896e084c8b2c244d892e4c8b6c243841ff75004c8b6c24404d8b6d004983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b6424404d892c244c8b6c24184983fd037550498d47c8483b45107306ff5550ca08414989c748c740f8060000004c8970284c894020488958184c8b34244c89701049beb05fd1f1c27f00004c8970084c8b7424104c8930ff15890100004989c6eb4e498d47c8483b45107306ff5550ca08414989c748c740f8060000004c8970284c894020488958184c8b34244c89701049beb05fd1f1c27f00004c8970084c8b7424104c8930ff15310100004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e4d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d8970104c8b34244d89700849c700070000004c8b742440488b5c2408492bde7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c301488b442438ff159b0000004c8b742440488b5c2408492bde7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c3014d8d47f04c3b45107305ff5550cd084d89c749c740f8010000004c8b34244d8930488b442430ff153f000000584883c420c22800488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01|@13739,1,@1212,@6039,@6039,@5249,@5248|330,0,@9475 413,0,@10542 493,0,@10542 632,0,@9475 683,0,@9475 760,0,@9487 6039:D3,472|483b65187306ff5558ca09014c8b204d8b34244d8b2e4983fd030f859a010000498b7608488b40084c8b6ef84d89ee49c1e50849c1ed074983cd01493bdd7d2e49c1e60849c1ee074983ce01493bde721048b80017d1f1c27f0000488b5d08ff234c89449efc48c7c001000000c34d89f549c1e60849c1ee074983ce014983ee014d6bf603711048b8d0c6d0f1c27f0000488b5d08ff234983c6014989db4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d3bf37e054d89f3eb004983fb017d05e9e10000004c3b1d000100000f8dd40000004c89d94e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4b314d89f749d1eb4d895ef841c646ff404c89f748d1e9f348ab4c89e948c1e10848c1e9074883c9014d8b6ef849c1e50849c1ed074983cd01493bcd7e1048b8c00bd3f1c27f0000488b5d08ff234c89f748d1e9f348a54d8d6fe84c3b6d107306ff5550ca08514d89ef49c745f8020000004d89750849c74500030000004d892c244d8b6ef849c1e50849c1ed074983cd01493bdd721048b80017d1f1c27f0000488b5d08ff234d89449efc48c7c001000000c348b8d015d1f1c27f0000488b5d08ff2348b8180cd3f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13740,1,@1213|83,0,@10034 137,0,@9475 166,0,@9475 310,0,@13733 399,0,@10034 428,0,@10027 444,0,@13735 6040:D6,824|483b65187305ff5558cd054989c54c8b62184d89e64d3bec0f8dab000000488b52084c89e8ff124989c64d8b66084d89e54d8b1c244983fb057547498b44241048ba408fd1f1c27f000048bb400dd3f1c27f000049b8880dd3f1c27f0000ff15fc0200004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a892d1f1c27f0000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b72104d8b364d8b264983fc0175504d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f0000eb4e4d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b81011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f00004d8b264983fc03752d4d8b76084d3bf57c1048b8980dd3f1c27f0000488b5d08ff234d89f5483b65187306ff5558ca0420e91cffffff4d8b264d89e54983fc070f85a30000004d8b76084d8b66084d89e54d8b1c244983fb057547498b44241048ba408fd1f1c27f000048bb180ed3f1c27f000049b8280ed3f1c27f0000ff15440100004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a892d1f1c27f0000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c34983fd010f85a30000004d8b76084d8b66084d89e54d8b1c244983fb057547498b44241048ba408fd1f1c27f000048bb380ed3f1c27f000049b8480ed3f1c27f0000ff158f0000004989c64983fe03750948c7c003000000eb0748c7c0010000004883f002c34d89ee4d8b264d89e54983fc05751048b8a892d1f1c27f0000488b5d08ff234983fd01751a4d8b76104d8b2e4983fd0375084d8b7608498b06c3498b4608c34d8b7608498b06c348b8580ed3f1c27f0000488b5d08ff23f400|@13754,1,@1220,@5304,@5304,@5304|66,0,@10896 76,0,@13741 86,0,@13743 147,0,@10915 208,0,@9475 289,0,@9998 312,0,@10515 369,0,@9995 392,0,@10515 420,0,@13744 498,0,@10896 508,0,@13747 518,0,@13748 579,0,@10915 671,0,@10896 681,0,@13749 691,0,@13750 752,0,@10915 808,0,@13751 6041:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@13742,1,@1214| 6042:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@13742,1,@1215| 6043:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@13742,1,@1216| 6044:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@13742,1,@1217| 6045:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@13742,1,@1218| 6046:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@13742,1,@1219| 6047:D5,216|483b65187305ff5558cd0552ff304c8b700841ff36498b46084c8b742410498b5e30ff15d00000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408584d8d47e84c3b45107305ff5550cd094d89c749c740f8020000004c8b34244d8b6e084d89680849bd307c5cf1c27f00004d89284d89f64d8b4e1049bd2009d3f1c27f00004d89f64d8b66184d89f64d8b5e204d89f64d8b5628488d642408415441534152ff74241849bab87ed2f1c27f00004c896c2420ff251c000000f4000000|@13755,1,@1222,@6020,@6049|127,0,@6048 147,0,@13716 193,0,@12712 6048:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1221| 6049:D3,240|483b65187305ff5558cd09a8010f85cf0000004c8b30488b40084d8b2e4d8b66084d8b56184d8b4e204c8b334d89f34983c302711048b8d0c6d0f1c27f0000488b5d08ff234c891b4d8d5fe84c3b5d107306ff5550ca09764d89df49c743f8020000004d89730849c703010000004d8d77c04c3b75107306ff5550ca093e4d89f749c746f80700000049c746300100000049c74628010000004d894e204d8956184d895e104d8966084d892e4156e84dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1223|55,0,@9475 6050:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849beb87e5cf1c27f00004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@13757,1,@1225,@6022|47,0,@6051 6051:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13756,1,@1224,@5141| 6052:D4,224|483b65187306ff5558ca0d014989c64c8b6a204d89ec4d8b5d404d8d6fe04c3b6d107306ff5550ca04594d89ef49c745f8030000004c8b52084d8955104d895d0849bb18805cf1c27f00004d895d004d8b5c24604d8d67e04c3b65107306ff5550ca04694d89e749c74424f8030000004c8b52104d895424104d895c240849bb80805cf1c27f00004d891c24498d47e8483b45107306ff5550ca04714989c748c740f8020000004c8960084c892841504c8b42184c89f3ff153b0000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400000000000000|@11026,1,@1228,@5340|67,0,@6053 128,0,@6054 6053:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1226| 6054:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1227| 6055:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13756,1,@1229,@5141| 6056:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1230| 6057:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13756,1,@1231,@5141| 6058:D4,280|483b65187306ff5558ca0d014989c64d89c54c8b62284d89e34d8b5424404d8d67e04c3b65107306ff5550ca0c6c4d89e749c74424f8030000004c8b4a084d894c24104d8954240849ba30835cf1c27f00004d8914244d8b53604d8d5fe04c3b5d107306ff5550ca0c744d89df49c743f8030000004c8b4a104d894b104d89530849ba98835cf1c27f00004d8913498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62204d8960104c8b62184d89600849bc00845cf1c27f00004d892041554c89f3ff15390000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f40000000000|@11026,1,@1236,@5340|74,0,@6059 131,0,@6060 225,0,@6061 6059:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1232| 6060:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1233| 6061:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849be10855cf1c27f00004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@13757,1,@1235,@6022|47,0,@6062 6062:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13756,1,@1234,@5141| 6063:D3,16|483b65187305ff5558cd01c3f4000000|@13761,1,@1237| 6064:D3,16|483b65187305ff5558cd01c3f4000000|@13761,1,@1238| 6065:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1239| 6066:D3,480|483b65187306ff5558ca09074c8b334d2bf0711048b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe01750c49bd4882d1f1c27f0000eb764983fe017e564c3b35910100007d4d4d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02474d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000eb1048b8d010d3f1c27f0000488b5d08ff234d3bf47f3a418065ffbf498d47d8483b45107306ff5550ca00254989c748c740f8040000004c8940184c8968104c89500849be38885cf1c27f00004c8930c34d8b19498b3b4883ff01754d4d8b5b08498b73f84889f748c1e60848c1ee074883ce014c3be67d2848c1e70848c1ef074883cf014c3be7721048b89011d1f1c27f0000488b5d08ff234f8b5ca3fceb0749c7c301000000eb4b4d8b5b08498b73f84889f748c1e60848c1ee074883ce014c3be67d2848c1e70848c1ef074883cf014c3be7721048b81011d1f1c27f0000488b5d08ff234f8b5ca3fceb0749c7c3010000004983fb01751048b80895d1f1c27f0000488b5d08ff234d8b1b4f895ca5fc4d89e34983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89dc483b65187306ff5558ca0077e9d2fefffff4000000ffffffffffffff01|@13767,1,@1242|22,0,@9475 48,0,@10817 152,0,@13764 217,0,@6067 288,0,@9998 365,0,@9995 401,0,@10926 434,0,@9475 6067:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4|@13766,1,@1241|42,0,@9475 91,0,@9998 6068:D11,776|483b65187306ff5558ca090753415041514152ff304c8b7008488b40104983fe030f8501010000a8010f85e40000004c8b30ff7008498b1e4d8b76084c8b6424284d8b6c24404d89e44d8b642460498d47e8483b45107306ff5550ca08704989c748c740f8020000004c8960084c89284d8d47d84c3b45107306ff5550ca09404d89c749c740f8040000004d8970184c8b7424104d8970104c8b7424184d89700849be408c5cf1c27f00004d8930ff15a40200004989c641564c8b34244d8b364d8b76184d8b66084d89e54d8b24244983fc0375354d89ee4d8b76084c3b356d020000750949c7c603000000eb0749c7c6010000004983fe03750f488d64243848c7c001000000c23000ff742408e986000000488d64242848b84012d3f1c27f0000488b5d08ff23488b5c24204c8b4424104c8b4c2408ff150b0200005b4c8b4424105f488d642418488b7424284c8b6c24104c8b6424084c8b5c24304c8b5424204c8b4c24184c894c24104989f94c895424184989f24c895c24204c896424284c896c24304c8b34244c897424084883c408ff25a7010000f60424010f854e0100004c8b2c244d8b75004d89ed41ff7508498b1e4d8b76084c8b6424404d8b6c24404d89e44d8b642460498d47e8483b45107306ff5550ca08704989c748c740f8020000004c8960084c89284d8d47d84c3b45107306ff5550ca09404d89c749c740f8040000004d8970184c8b7424284d8970104c8b7424304d89700849be988e5cf1c27f00004d8930ff15070100004989c64156488b9c24800000004c8b4424784c8b4c24704c8b54246848c7c001000000ff15d60000004989c64156488b9c24880000004c8b8424800000004c8b4c24784c8b54247048c7c001000000ff15a20000004989c64c8bac24800000004c8b6424684c8b5c24604156ff742438ff742458ff742450415541544153488b44244048bbd8c8d0f1c27f00004c8b4424384c8b4c245849bad8c8d0f1c27f0000ff1548000000488d642410415d4c892c24483b65187303ff5558e9a8feffff488d64244048c7c001000000c23000f400000000000000|@13798,1,@1275,@6101,@6066,@6066,@5340,@6109,@6098,@4659,@5340|163,0,@6069 282,0,@13771 544,0,@6071 694,0,@9493 714,0,@9493 6069:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9811d3f1c27f0000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb9811d3f1c27f000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc488e5cf1c27f00004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13770,1,@1244,@6022|36,0,@13768 194,0,@13768 268,0,@6070 444,0,@9487 6070:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1243,@5050| 6071:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9811d3f1c27f0000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb9811d3f1c27f000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bca0905cf1c27f00004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13770,1,@1246,@6022|36,0,@13768 194,0,@13768 268,0,@6072 444,0,@9487 6072:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1245,@5050| 6073:D5,1384|483b65187306ff5558ca09074989c64d8d6ff04c3b6d107306ff5550ca08474d89ef49c745f80100000041c645ff4049895d0041554d8b6840498d7fe0483b7d107306ff5550ca00674989ff48c747f8030000004c894f104c896f0849bd90965cf1c27f00004c892f4d8b6860498d5fe0483b5d107306ff5550ca80644989df48c743f8030000004c8953104c896b0849bdf8965cf1c27f00004c892b4c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bb424d0000000488b9424c8000000488b8c24c00000004d8d6f904c3b6d107306ff5550cace5f4d89ef49c745f80d00000049895d6049894d58498955504989754849897d4048bf5809d3f1c27f000049897d384d8945304d894d284d8955204d895d184d89651049bcf009d3f1c27f00004d89650849bc880ad3f1c27f00004d89650041556a016a014d8b264d89e54983fc010f85e600000041ff760841ff76106a016a016a016a016a016a01ffb42410010000488b8424b00000004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000544883042408415641554154415341524151415057565251534989c2488b542468488b8424a8000000488b9c24c00000004c8b8424a000000049c7c101000000ff12488d642408415d488d642418415e488d6424184c892c244c89742408e9950100004983fd050f85e70000004d8b760841ff3641ff760841ff761041ff761841ff7620ffb424880000004c8bb424980000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff7424404156415541544153415241514150575652515350488b542470488b842490000000488b9c24800000004c8b8424880000004c8b4c24784c8b942498000000ff124989c6488d6424304d8b2e4c892c244d8b76204c89742408e9a4000000498b4608498b5e10498b56186a016a016a016a016a016a01488b8c24980000004c8bb424b00000004c8bac24f80000004c8ba424f00000004c8b9c24a80000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c800000054415641554154415341524151415057564989ca4989d04c8b8c2490000000ff15c4010000415d488d642418415e488d6424084c892c244c897424085841584c8b7424404c8b6424384c8b9c24b80000004c8b5424484c8b8c24b00000004d8d6fc04c3b6d107306ff5550ca015f4d89ef49c745f807000000488b7c24084889fe49897d304d894d284d8955204d895d184d8965104d89750849be60975cf1c27f00004d8975004c8b7424304c8b5c24284c8b9424b80000004c8b4c2448488bbc24b00000004d8d67c04c3b65107306ff5550cac16f4d89e749c74424f8070000004889f64889f2498974243049897c24284d894c24204d895424184d895c24104d8974240849be489a5cf1c27f00004d8934244c8b5c24204c8b5424184c8b8c24b8000000488b7c2448488bb424b00000004d8d77c04c3b75107306ff5550cac53f4d89f749c746f8070000004889d2498956304989762849897e204d894e184d8956104d895e0849bb009c5cf1c27f00004d891e498d5fe0483b5d107306ff5550ca01714989df48c743f8030000004c8963104c896b084c893341506a0149c7c10300000049bad8c8d0f1c27f0000ff152a0000004c8b742408498b064883c410c2f000f40000|@13783,1,@1260,@5348,@6083|94,0,@6074 146,0,@6075 270,0,@13719 304,0,@13723 318,0,@13727 1082,0,@6076 1191,0,@6079 1290,0,@6081 1352,0,@9493 6074:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1248| 6075:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1249| 6076:D5,280|483b65187305ff5558cd0552ff30488b58084c8b33488b43084883f8017502eb784d8b2e4d8b66084d8b56184d8b5e104d8d77d84c3b75107306ff5550ca013c4d89f749c746f8040000004d8956184d895e104d8966084d892e41564c8b742410498b5e30ff15cd0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408584d8d47e84c3b45107305ff5550cd094d89c749c740f8020000004c8b34244d8b6e084d89680849bdb0985cf1c27f00004d89284d89f64d8b4e1049bd2009d3f1c27f00004d89f64d8b66184d89f64d8b5e204d89f64d8b5628488d642408415441534152ff74241849bab87ed2f1c27f00004c896c2420ff2519000000f4|@13777,1,@1251,@6020,@6078|194,0,@6077 214,0,@13716 260,0,@12712 6077:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1250| 6078:D3,272|483b65187305ff5558cd09a8010f85f00000004c8b18488b40084d8b2b4d8b63084d8b73104d8b53184d8b4b204d8b364983fe010f85b90000004c8b334d89f34983c302711048b8d0c6d0f1c27f0000488b5d08ff234c891b4d8d5fe84c3b5d107306ff5550ca09764d89df49c743f8020000004d89730849c703010000004d8d77c04c3b75107306ff5550ca093e4d89f749c746f80700000049c746300100000049c74628010000004d894e204d8956184d895e104d8966084d892e4156e83cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e012d3f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@1252|72,0,@9475 245,0,@13774 6079:D4,296|483b65187305ff5558cd054989c6498b064d8b5e084d8b334d8b6b084d8b63104d8b5b184d8b6d004983fd010f85e00000004c8b6a304d89e94d8b55004d89d54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89294d8d6fe84c3b6d107306ff5550ca055c4d89ef49c745f8020000004d89550849c7450001000000498d5fd8483b5d107306ff5550ca05784989df48c743f8040000004c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849bea09b5cf1c27f00004d89304c8b4a1049bd4809d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849ba60a3d1f1c27f00004c896c2420ff252e00000048b8e012d3f1c27f0000488b5d08ff23f40000000000|@13778,1,@1254,@6020|72,0,@9475 206,0,@6080 223,0,@13718 255,0,@11010 276,0,@13774 6080:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1253| 6081:D4,320|483b65187305ff5558cd054989c6498b064d8b56084d8b324d8b6a084d8b62104d8b5a184d8b52204d8b24244983fc010f85f60000004c8b62304d89e04d8b0c244d89cc4983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89204d8d67e84c3b65107306ff5550ca056e4d89e749c74424f8020000004d894c240849c7042401000000498d5fc0483b5d107306ff5550ca057c4989df48c743f80700000048c743300100000048c74328010000004c8953204c895b184c8963104c896b084c89334d8d47e84c3b45107305ff5550cd0d4d89c749c740f8020000004c8b72084d89700849be709d5cf1c27f00004d89304c8b4a1049bd8807d3f1c27f00004c8b62184c8b5a204c8b5228415441534152ff74241849ba20dfd1f1c27f00004c896c2420ff252c00000048b8e012d3f1c27f0000488b5d08ff23f4000000|@13779,1,@1256,@6020|76,0,@9475 232,0,@6082 249,0,@13709 281,0,@11429 302,0,@13774 6082:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1255| 6083:D5,928|483b65187306ff5558ca0907415041526a016a016a016a016a016a014c8b8c24880000004c8b9424800000004c8b7424784c8b6c2470415641554c8d442410ff157b030000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424104c8b6c24684d8975004c8bb4249800000041ff364c8b8424a00000004c8b8c24980000004c8b9424900000004c8bb424880000004156ff742470488b44243048bb8014d3f1c27f0000ff15080300004989c44983fc01750f49bc4882d1f1c27f0000e9be00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d830200007c15488d64247848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f85cf010000418066ffbf4d89f44c8b7424084d89f34c3b3424488d642408750a488d642408e990000000f6442418010f85800000004c8b6c24784d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d89db4d895e18488d6424084d8966104d896e0849bde8a15cf1c27f00004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d897424104c8b34244d89742408488d64240849be80a25cf1c27f00004d893424eb07488d642408415c4c8bb424880000004d8b364c8b5c24184d8b2b4983fd030f85b80000004d89db4d8b6b084d89db4d8b5b184d8b6d00498b334c8b5ef849c1e30849c1eb074983cb014983fb01750c49ba4882d1f1c27f0000eb554d89d94c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89d94c89d748d1e9f348a5418062ffbf4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8953104d896b0849c70301000000eb034d89db4c8bac24b00000004d895d004c8b5c24104d895d0849c74510010000004c8b1c244d895d18488d6424084d8965204d89752848c7c0010000004883c458c250004d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9e4fdfffff400000000000000ffffffffffffff01|@13789,1,@1263,@6090,@6087|162,0,@13780 187,0,@10817 236,0,@9475 286,0,@10818 484,0,@6085 544,0,@6086 639,0,@10817 875,0,@9475 6084:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13781,1,@1257| 6085:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4|@13782,1,@1258|42,0,@9475 91,0,@9998 6086:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1259,@5098| 6087:D4,904|483b65187306ff5558ca0907505341504152498b5128488b442418ff124989c64983fe010f85040300004c8b7424184d8b2e4e8d2c6d010000004983fd01750f49bc8015d3f1c27f0000e9b60000004d89eb4983c3164c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15010300000f87940200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb8015d3f1c27f000048c7c117000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c241348d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be08a5d1f1c27f0000e9b60000004d89eb4983c32e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15220200000f87a80100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc08a5d1f1c27f000048c7c12f000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b2c244d896808488d64240849bd88a65cf1c27f00004d89284d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b44242848c7c3030000004c8b4c2408ff15ed000000415e488d6424084c8b5c241049bcc8a1d1f1c27f000049bda015d3f1c27f00004d891e4d89660849c746100100000049c74618010000004d896e2049c746280100000048c7c0010000004883c408c21000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d642408415d4d8b364d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c0010000004883c410c21000f40000ffffffffffffff01ffffffffffffff01|@13795,1,@1266,@6022|66,0,@13784 206,0,@13784 281,0,@11024 439,0,@11024 518,0,@6088 705,0,@10999 715,0,@13785 779,0,@9487 800,0,@9487 6088:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1261,@5050| 6089:D3,32|483b65187305ff5558cd0148b8b015d3f1c27f0000488b5d08ff23f400000000|@13788,1,@1262|13,0,@13786 6090:D4,384|483b65187306ff5558ca090753415041514152a8010f85530100004c8b30ff70084d8b66084d89e54d8b1c244983fb010f8523010000498b44240841ff7424184d8b4424204d8b56104d89ee4d8b264d89e54983fc057515488d64243048b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b7608498b1eeb04498b5e08eb074d8b7608498b1e4c8b7424384c8b6c24404156ff742428ff742428ff742428415549c7c101000000ff15db0000004989c64156498d5fd8483b5d107303ff55504989df48c743f8040000004c8b7424084c8973184c8b7424304c8973104c8b34244c89730849bed0a85cf1c27f00004c89334c8b7424484c8b6c244041564155488b4424204c8b4424384c8b4c24304c8b542428e8d8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c21000488d64242848b8d816d3f1c27f0000488b5d08ff23488d64242048c7c001000000c21000f40000|@13794,1,@1265,@6038|95,0,@10915 246,0,@6091 352,0,@13791 6091:D3,88|483b65187305ff5558cd054c8b70084d8b2e4983fd0175354d8b76184c8b6a184d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c3488b5210ff2248c7c001000000c3f40000|@13790,1,@1264| 6092:D6,2400|488dbc2440ffffff483b7d187306ff5560ca090750415041514152f6c3010f851c0900004c8b33ff730841ff76084d8b76184d8b364c8b6c24204d8b6540498d7fe0483b7d107306ff5550ca00704989ff48c747f8030000004c8b5c24184c895f104c89670849bcf0b25cf1c27f00004c89274d89ed4d8b6560498d5fe0483b5d107306ff5550ca80704989df48c743f8030000004c8b5c24104c895b104c89630849bc58b35cf1c27f00004c89234c8ba42408010000498d77e0483b75107306ff5550ca88704989f748c746f8030000004c8966104d89ed4c896e0849bdc0b35cf1c27f00004c892e4c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488b9424d8000000488b8c24d00000004d8d6f904c3b6d107306ff5550cace5f4d89ef49c745f80d00000049895d6049894d58498955504989754849897d4048bf5809d3f1c27f000049897d384d8945304d894d284d8955204d895d184d89651049bcf009d3f1c27f00004d89650849bc880ad3f1c27f00004d89650041554c8bac24d00000004d8b6d004e8d2c6d010000004c8b6424084d8b1c244e8d145d010000004983fd0175084d89e3e9c30000004983fa01750d4c8b9c24d0000000e9b00000004f8d4c15ff4c89c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0445010000004c3b05530700000f87200700004c89c74c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e8024bc74483fc0000000049d1e94d890b4c8b8c24d00000004c89e9498d7108498d7b0848d1e9f3a44983c5104c89d14d89e4498d74240849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd00d9d0f1c27f0000e99d0000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d790600000f87390600004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049d1ec43c64425002e418065ffbf41554d8b264d89e54983fc010f850401000041ff760841ff76106a016a016a016a016a016a01488b8424100100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b000000054415641554154415341524151415057565251534889c2488b8424a0000000488b9c24b00000004c8b84249800000049c7c1010000004c8b9424a8000000ff12415d415c415b415a41594158488d6424204d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892ee9a50100004983fd050f85ce0000004d8b760841ff3641ff760841ff761041ff761841ff7620488b8424900000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000ff742430ff742430415641554154415341524151415057565251534889c2488b842488000000488b5c24784c8b8424800000004c8b4c24704c8b942490000000ff124989c6488d642438e9cd000000498b4608498b5e10498b56186a016a016a016a016a016a014c8bb424b00000004c8bac24f80000004c8ba424f00000004c8b9c24a80000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c800000054415641554154415341524151415057564989d04c8b8c24880000004c8b942480000000ff15cc030000415d415c415b415a41594158488d6424104d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564c8b7424304983c60241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff23ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff742468ff7424684156415541544153415241514150575652515350488b842448010000488b9c24600100004c8b8424780100004c8b8c24700100004c8b942468010000e89af8ffff4989c641564c8bac24d80000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb42440010000498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424b00000004d89660849c70601000000498d5fd8483b5d107306ff5550ca00604989df48c743f8040000004c896b184c8bac24800000004c896b104c8973084c8bb424880000004c89f04c89334c8bb424c80000004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004d89700849bed0b45cf1c27f00004d89304c8b8c24c00000004c8bb424400100004c8bac24d00000004c8ba42438010000ff358c00000041564155415449ba60a3d1f1c27f0000ff156e00000058488da424b0000000c2d800488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64241858c2d800f4000000000000ffffffffffffff01ffffffffffffff01|@13797,1,@1272,@6020,@13718,@6083|104,0,@6093 164,0,@6094 223,0,@6095 339,0,@13719 373,0,@13723 387,0,@13727 666,0,@9571 1557,0,@9475 2243,0,@6097 2300,0,@11010 2333,0,@9487 2354,0,@9487 6093:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1267| 6094:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1268| 6095:D4,88|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251e000000f40000000000|@13796,1,@1269,@6096| 6096:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1270| 6097:D3,56|483b65187305ff5558cd0d4989c6488b5208498d47e8483b45107306ff5550ca0c404989c748c740f802000000488958084c8930ff22f400|@13708,1,@1271| 6098:D4,248|483b65187306ff5558ca09035341504151a8010f85cf0000004c8b30ff70084d8b064d8b76084c8b6c2418498b5d604d8d4fd84c3b4d107306ff5550ca08414d89cf49c741f8040000004d8971184c8b7424084d8971104c8b7424104d89710849be58b65cf1c27f00004d893148b860a3d1f1c27f0000ff15930000004989c64983fe01751758488b5c24104c8b4424084159488d642410e963ffffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f40000|@12733,1,@1296,@5342|98,0,@6099 111,0,@11010 6099:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9811d3f1c27f0000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb9811d3f1c27f000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc60b85cf1c27f00004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13770,1,@1274,@6022|36,0,@13768 194,0,@13768 268,0,@6100 444,0,@9487 6100:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1273,@5050| 6101:D17,4464|483b65187306ff5558ca09074c89c25053415141524c8b74241841ff364c8b74241041ff364c8b7424084d8b66184d89e54d8b5424084d89d34d8b124983fa0375314d89dc4d8b6424084c3b259f110000750949c7c403000000eb0749c7c4010000004983fc03750a488d642430e9810000004c8b24244d8b6424184d8b5424084d89d34d8b124983fa0375234d89dc4d8b6424084c3b254c110000750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374324d89ee4d8b76084d8b264d89e54983fc0375064d8b7610eb644983fd0175064d8b7608eb584d8b6e0849c7c601000000eb0f488d64243048c7c001000000c2380041f6c50175364d8b5d084d89f44983c4027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0460ebc44c8b2c244d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb544983fc0175064d8b6d08eb484d8b650849c7c50100000041f6c40175374d8b5424084d89eb4983c3027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0470ebc34d3bf50f84ff010000488d6424104c8b6c24484d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8ca5cf1c27f00004d892e4156488b442420488b5c2418ff15e20f00004989c64156488b442418488b5c2410ff15c50f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc1019d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf019d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd281ad3f1c27f00004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424484158488d6424204c8b4c243048c7c3030000004c8b34244c897424384883c438ff251b0e00004c8b7424084d8b76184d8b6e084d8b65004983fc01750b498b4518ff124989c6eb0041564c8b742408498b5e184c8b73084d8b2e4983fd017510498b4618488b542470ff124889c3eb004c8b34244d8b76084d8b2e4983fd0175424d8b66184c8b7424504d3be67d0c49c7c601000000e9140d00004c8b7424504d2be67115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c401e9d60b000049c7c6010000004983fe030f84020500004c8b7424104d8b264c8b5424284d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b80000004983fb0175084d89d5e9aa0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05970c00000f87790400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b7424084d8b7610498b06498b5e084d8b4610ff15390c00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be681ad3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c7060100000041564c8b6c24604d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08cb5cf1c27f00004d892e4156488b442438488b5c2430ff15d30a00004989c64156488b442430488b5c2428ff15b60a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424104d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc5819d3f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be7849d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf019d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd281ad3f1c27f00004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424604158488d6424084c8b4c246048c7c3030000004c8b7424304c897424684883c468ff2560080000488d64243848b8f8c7d0f1c27f0000488b5d08ff234c8b73084d8b2e4983fd0175424d8b66184c8b7424504d3be67d0c49c7c601000000e9820600004c8b7424504d2be67115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c401e94405000049c7c6010000004983fe030f840f050000488d6424084c8b34244d8b26488d6424084c8b5424084d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe01750d488d6424084d89e5e9bd000000488d6424084983fb0175084d89d5e9aa0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b051a0700000f87730400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060700000041564c8b7310498b06498b5e084d8b4610ff15a90600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be681ad3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c7060100000041564c8b6c24504d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58cb5cf1c27f00004d892e4156488b442428488b5c2420ff15430500004989c64156488b442420488b5c2418ff15260500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424104d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc5819d3f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be7849d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf019d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd281ad3f1c27f00004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424504158488d6424284c8b4c243048c7c3030000004c8b34244c897424384883c438ff25d1020000488d64242048b8f8c7d0f1c27f0000488b5d08ff23584c8b4424484c8b4c24404c8b5424384c8b7424304c897424684883c468ff25900200004c8b7424484d8b364d8b2e4983fd0175554d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b89011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f0000eb534d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b81011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f00004d8b1e4d89dd4983fb0375324d8b76084d3bf47c15488d64243848b8980dd3f1c27f0000488b5d08ff234d89f4483b65187306ff5558ca0810e909ffffff4d89ee4983fe01750949c7c601000000eb0d4983fe07750c49c7c603000000e9a8f9ffff488d64243848b8a81ad3f1c27f0000488b5d08ff234c8b7424484d8b364d8b2e4983fd0175554d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b89011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f0000eb534d8b76084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37d2d49c1e50849c1ed074983cd014d3be57215488d64243848b81011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f00004d8b1e4d89dd4983fb0375324d8b76084d3bf47c15488d64243848b8980dd3f1c27f0000488b5d08ff234d89f4483b65187306ff5558ca0810e909ffffff4d89ee4983fe01750949c7c601000000eb0d4983fe07750c49c7c603000000e916f3ffff488d64243848b8a81ad3f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01|@13816,1,@1279,@6106,@6022,@6105,@6105,@6108,@6022,@6105,@6105,@6108,@6022,@6105,@6105,@4659,@4659|280,0,@9475 395,0,@9475 481,0,@6102 563,0,@13800 611,0,@10236 656,0,@13807 700,0,@10236 788,0,@10378 833,0,@13809 1083,0,@9475 1498,0,@10236 1542,0,@13811 1587,0,@10236 1744,0,@6103 1875,0,@10236 1920,0,@13803 1966,0,@10391 2045,0,@10236 2090,0,@13807 2134,0,@10236 2222,0,@10378 2267,0,@13809 2391,0,@9487 2461,0,@9475 2890,0,@10236 2934,0,@13811 2979,0,@10236 3136,0,@6104 3267,0,@10236 3312,0,@13803 3358,0,@10391 3437,0,@10236 3482,0,@13807 3526,0,@10236 3614,0,@10378 3659,0,@13809 3782,0,@9487 3901,0,@9998 3924,0,@10515 3986,0,@9995 4009,0,@10515 4045,0,@13744 4122,0,@13813 4205,0,@9998 4228,0,@10515 4290,0,@9995 4313,0,@10515 4349,0,@13744 4426,0,@13813 6102:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13799,1,@1276,@5050| 6103:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13799,1,@1277,@5050| 6104:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13799,1,@1278,@5050| 6105:D3,624|483b65187305ff5558cd094c8b284d8b751041f6c60175414d8b1e4d8b66084d8b134983fa0175204d8d77f04c3b75107306ff5550ca08284d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0860ebb949c7c60100000041f6c601757d4d8b1e4d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375584d89e64d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d8926eb0749c7c6010000004d8b5d004c8b2b4e8d246d010000004d8b2b4e8d146d010000004983fc0175084d89dde9b40000004983fa0175084989dde9a60000004f8d4c14ff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b051a0100000f87fd0000004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89e1488d7308498d7d0848d1e9f3a44983c4104c89d1498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01|@13828,1,@1283|595,0,@9487 6106:D6,1408|483b65187306ff5558ca0907415041524c8b70084d89f54d8b364983fe0175584c8b63084d89e64d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc03752a4d8b65184d8b6e184c2b6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c401eb1c488d642410eb05488d64241048b8501bd3f1c27f0000488b5d08ff234d8b314d8b1e4983fb0175554d8b76084d8b56f84d89d349c1e20849c1ea074983ca014d3be27d2d49c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f0000eb534d8b76084d8b56f84d89d349c1e20849c1ea074983ca014d3be27d2d49c1e30849c1eb074983cb014d3be37215488d64241048b81011d1f1c27f0000488b5d08ff234f8b74a6fceb0a49bea85bd1f1c27f00004d8b1e4983fb0375324d8b76084d3bf47c15488d64241048b8980dd3f1c27f0000488b5d08ff234d89f4483b65187306ff5558ca0032e911ffffff4c2b6c24087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8b214d8b1c244983fb0175574d8b6424084d8b5424f84d89d349c1e20849c1ea074983ca014d3bea7d2d49c1e30849c1eb074983cb014d3beb7215488d64241048b89011d1f1c27f0000488b5d08ff234f8b54acfceb0a49baa85bd1f1c27f0000eb554d8b6424084d8b5424f84d89d349c1e20849c1ea074983ca014d3bea7d2d49c1e30849c1eb074983cb014d3beb7215488d64241048b81011d1f1c27f0000488b5d08ff234f8b54acfceb0a49baa85bd1f1c27f00004d8b224983fc0375324d8b62084d3be57c15488d64241048b8980dd3f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0062e90cffffff4d8b2e4983fd070f85c60200004d8b66084d89e54d8b6424084d8b24244983fc0175374d8b224983fc0775254d8b62084d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f8561020000498b46104d8b65084d8b7424084d8b5c2410498b7424184d8b4424204d8b65104d8b6a08498b5a104d8b55084d8b4a084d8b6a10498b7a184d8b5220483bf7750d488d64241048c7c001000000c3483bf77d054889f2eb034889fa52483bf77e054889f7eb00574983f803750949c7c203000000eb004d3bf10f85cd0100004d8b0b4983f903750f4d8b5b084d8b1b4983fb03750ceb244d8b5b084983fb03741a4d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d08eb0749c7c5030000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d896b0849c703010000004d8d6fd04c3b6d107306ff5550ca095c4d89ef49c745f8050000004d8955204c8b5424084d8955184d895d104d89750849c74500010000004d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849bdb05fd1f1c27f00004d892e41564883fb0175054989c6eb09ff154a0100004989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d8970104c8b34244d897008488d64240849c70007000000488b5c2408482b5c24187115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c301488b442410ff15dc000000488b1c24482b5c2418488d6424087115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c3014c8b34244c2b742410488d6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849c70003000000584883c408ff2551000000488d64242048b8d81bd3f1c27f0000488b5d08ff23488d642410eb05488d64241048b8681cd3f1c27f0000488b5d08ff23f400000000000000|@13826,1,@1280,@6039,@6039,@6107|93,0,@9475 127,0,@13817 205,0,@9998 228,0,@10515 290,0,@9995 313,0,@10515 346,0,@13744 394,0,@9475 479,0,@9998 502,0,@10515 566,0,@9995 589,0,@10515 622,0,@13744 1088,0,@10542 1191,0,@9475 1243,0,@9475 1284,0,@9475 1358,0,@13820 1386,0,@13823 6107:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1281| 6108:D4,1064|483b65187306ff5558ca09014c3b052d0400007502eb3d4d8b304d89f54e8d3475010000004983fe010f85fc00000049bed8c8d0f1c27f0000498d7008498d7e0848c7c100000000483bc9f3a67405e9d70000004d8d6fe84c3b6d107305ff5550cd094d89ef49c745f80200000049895d0849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca01404d89e749c74424f802000000498944240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c34d8d67e84c3b65107306ff5550ca09014d89e749c74424f80200000049895c240849c70424010000004d8d77e84c3b75107306ff5550ca01114d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca01414d89e749c74424f802000000498944240849c70424070000004a8d0c6d010000004883f901750f49baa09ad1f1c27f0000e9960000004989cd4983c5044c89e84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d300200000f87100200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca02794d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ed4d892a41c642082841c642092a498d7008498d7a0a48d1e9f3a4418062ffbf4d8b2a4e8d1c6d010000004983fb01750f49bdb89ad1f1c27f0000e9a90000004d89d94983c1044c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05720100000f874a0100004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89d9498d7208498d7d0848d1e9f3a44983c3104d89da49d1ea43c64415002a49d1eb43c6441d0129418065ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd4032d1f1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c89701848c740100100000048c740080100000048c70001000000c348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@13827,1,@1282,@9493|49,0,@9493 435,0,@10961 617,0,@10962 909,0,@10236 1016,0,@9487 1032,0,@9487 6109:D5,112|483b65187306ff5558ca090753415041514152488b5c24384c8b4c24304c8b5424284c8b0424ff1564000000488b5c24084158488d6424084c8b4c24384c8b5424304c8b6c2408415c488d6424084c896424204c896c24284c8b34244c897424184883c418ff251d000000f400000000|@13829,1,@1284,@6111,@6110| 6110:D4,448|483b65187306ff5558ca090753415041514152a8010f8588010000ff30ff70084c8b7424084d8b264d8b34244e8d2c75010000004983fd01750f49be00d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153f0100000f870f0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e2e418066ffbf415648c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418ff15d00000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b6c24084d892e4156488b442408488b5c24304c8b4424284c8b4c24204c8b542418e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242048c7c001000000c3f400000000000000ffffffffffffff01|@10112,1,@1295,@6066|60,0,@9571 405,0,@9487 6111:D10,560|483b65187306ff5558ca0907534150415141526a016a0150ff355a020000f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15310200004989c4415d4c8924244c896c2408483b65187303ff5558ebc64c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408ff74241048bbf81dd3f1c27f0000ff15da01000048bbd8c8d0f1c27f000049c7c00100000049c7c101000000ff15b40100004989c64156488b44240848bba81ed3f1c27f0000ff159201000048bbd8c8d0f1c27f000049c7c00100000049c7c101000000ff156c0100004989c64156ff742408f604240175414c8b2c244d8b75004d89ed41ff750841f6c60175174d8b2e4d8b760841ff750041ff750841ff75104156eb78488d64246048b8b81ed3f1c27f0000488b5d08ff23488d642408ff3424f604240175464c8b3424498b064d89f641ff76084c8b7424704c8b6c246841564155488b5c24684c8b4424604c8b4c24584c8b542450e889feffff415d4c892c24483b65187303ff5558ebb4488d64245848c7c001000000c21000f604240175724c8b2c244d8b75004d89ed41ff75084d8b0e4d8b56084d8b76104c8bac24980000004c8ba42490000000415641554154ffb42498000000ffb42498000000ffb42498000000ffb42498000000488b442458488b5c24504c8b442448ff154a000000415d4c892c24483b65187303ff5558eb88488d642420415d4c892c24483b65187303ff5558e9c5fefffff400000000000000|@13837,1,@1292,@6101,@6120,@5119,@6120,@5119,@6116,@10542|128,0,@13830 144,0,@9493 184,0,@13833 200,0,@9493 294,0,@13834 6112:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be70de5cf1c27f00004c8930c3f400000000|@13832,1,@1286|47,0,@6113 6113:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@13831,1,@1285| 6114:D3,64|483b65187305ff5558cd014c8b30498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be98df5cf1c27f00004c8930c3f400000000|@13832,1,@1288|47,0,@6115 6115:D3,152|483b65187305ff5558cd054c8b304c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f4|@13831,1,@1287| 6116:D4,144|483b65187305ff5558cd094989c54d8b75004d8b7610498b064d8b66204d8b75084d8b5d104d8d6fe04c3b6d107306ff5550ca09584d89ef49c745f8030000004d895d104d89650849bc18e15cf1c27f00004d8965004d8d47e04c3b45107306ff5550ca09604d89c749c740f8030000004d8968104d89700849be68e15cf1c27f00004d8930ff251c000000f4000000|@13839,1,@1294,@4953|74,0,@6117 123,0,@6118 6117:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1289,@5098| 6118:D4,152|483b65187306ff5558ca0d015250534150f64424080175794c8b742408498b1e4d89f641ff76086a016a014c8b7424304d8b56084d89f64d8b76104156488b4424304c8b4424204c8d4c2408ff155e000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb80584883c418c3f4|@10041,1,@1290,@6119| 6119:D7,904|483b65187306ff5558ca0907504d8b284d8b70084c8b234d89e34c3b25970300000f85760200004c3b1d820300000f85540200004c8b5b104d8b224e8d2465010000004c8b04244d8b004a8d1c45010000004983fc0175094c8b0424e9b60000004883fb0175084d89d0e9a8000000498d7c1cff4889f84883c01e49c7c01100000048d1e849d1e84833d249f7f0488d344501000000483b35e30200000f87d00100004889f24c8d04950400000049f7d84d03c74c3b451072054d3bc77206ff5550cac87e4d89c748d1ea498950f841c640ff414883ee0249c744b0fc0000000048d1ef4989384c89e1498d7208498d780848d1e9f3a44983c4104889d94c8b1424498d720849d1ec4b8d3c2048d1e9f3a4418060ffbf4d8b204e8d2465010000004983fc01750f49ba00d9d0f1c27f0000e99b0000004c89e74883c7024889f84883c01e49c7c21100000048d1e849d1ea4833d249f7f2488d344501000000483b35110200000f87f10000004889f24c8d14950400000049f7da4d03d74c3b551072054d3bd77206ff5550cac07b4d89d748d1ea498952f841c642ff414883ee0249c744b2fc0000000048d1ef49893a4c89e1498d7008498d7a0848d1e9f3a44983c41049d1ec43c604222e418062ffbf4c8b4424104d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d895424084d891c244d8d5fe84c3b5d107306ff5550ca00724d89df49c743f8020000004d896308415c4d89234d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d897424084d891c244d89e64d89294d89710848c7c001000000c20800488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b87810d1f1c27f0000488b5d08ff234d89dc4c3b1d010100000f85b20000004c3b25ec0000000f85900000004c8b5b104c8b4424104d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d895424084d891c244d8d5fe84c3b5d107306ff5550ca00724d89df49c743f8020000004d896308415c4d89234d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c24084d891c244d89e54d89294d89710848c7c001000000c20800488d64240848b87810d1f1c27f0000488b5d08ff23488d6424084d89294d89710848c7c001000000c20800f40000ffffffffffffff01ffffffffffffff01|@13836,1,@1291,@4626,@4626,@4628,@4628|298,0,@9571 613,0,@9487 634,0,@9487 655,0,@9991 849,0,@9991 6120:D3,424|483b65187306ff5558ca09034989c54989dc4c89c841f6c5010f85490100004d8b75004d8b6d08498b1e4d8b76084c3be37502eb314d8b1c244e8d1c5d010000004c8b134c89d14e8d1455010000004d3bda7545498d742408488d7b08483bc9f3a67402eb334d8d5fe84c3b5d107306ff5550ca01714d89df49c743f8020000004d8943084d89334d89d84c89e34989c14c89e8e967ffffff41f6c0010f85940000004d8b60084983fc0175314d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89304989c14c89e8e922ffffff4d8d67e84c3b65107306ff5550ca09614d89e749c74424f80200000049c7442408010000004d8934244d89e64d8d4fe84c3b4d107306ff5550ca09614d89cf49c741f802000000498941084d89014c89e84d89f0e9c9feffff4d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89304989c14c89e8e998feffff41f6c00175314d8b70084983fe017501c34d8d77e84c3b75107306ff5550ca01014d89f749c746f802000000498946084d89064c89f0c3c3f400000000000000|@13838,1,@1293| 6121:D16,4392|483b65187306ff5558ca0d0750534150415141524c8b6c24204d8b65004d89e64983fc010f851b0100004d89ed4d89ee41ff75084d89f641ff76106a016a016a016a016a016a01ff7208ffb424e0000000488b8424e00000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042410415641554154415341524151415057565251534989c2488b542470488b8424b0000000488b5c24684c8b8424a800000049c7c101000000ff12488d642410415d415c415b415a41594158488d6424104d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892ee9c50100004d89ed4983fe050f85d70000004d89ed4d8b750841ff3641ff760841ff761041ff761841ff762052ffb424c80000004c8bb424c80000004c8bac24c00000004c8ba424b80000004c8b9c24b00000004c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b442468ff34244156415541544153415241514150575652515350488b542478488b842498000000488b9c24880000004c8b8424900000004c8b8c24800000004c8b9424a0000000e8e4fdffff4989c6488d642438e9e10000004d89ed4d89ee41ff75084d89f6498b5e104d89f6498b56186a016a016a016a016a016a01488b8c24d0000000488b8424c80000004c8b7424784c8bac24c00000004c8ba424b80000004c8b5c24704c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb4249000000054415641554154415341524151415057564989c24989c94989d0488b842480000000ff15d90e0000415d415c415b415a41594158488d6424084d8d77c84c3b75107306ff5550ca003f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e41564c8b3424498b064d89f641ff762048ba3851d1f1c27f0000ff156e0e00004989c54c8bb424980000004c8ba424900000004d8d47d84c3b45107306ff5550ca00704d89c749c740f8040000004c8b5c24104d8958184d8960104d89700849be88f95cf1c27f00004d89304d8b75404d8b6d60498d47e8483b45107306ff5550ca00614989c748c740f8020000004c8968084c8930488b5c2420ff15e50d00004989c6415648ba60a2d1f1c27f00004c8bb424a00000004c8bac24980000004c8ba424b0000000498d5fd8483b5d107306ff5550ca04704989df48c743f8040000004c8963184c896b104c89730849bee0fb5cf1c27f00004c89334c8b842498000000488b442420ff156f0d00004989c641564c8b7424084d8b264d89e54d8b6424184d8b5424084d89d34d8b124983fa0375314d89dc4d8b6424084c3b25320d0000750949c7c403000000eb0749c7c4010000004983fc03750a488d642418e9970900004d89ee4d8b76184d8b66084d89e56a016a014d8b1c244983fb017522498b442418488b542420ff124989c64d8b6e084c892c244d8b76104c89742408eb0d4c892c244d8b76104c89742408415e415d4d8b264983fc0175484d8b56184c8ba424900000004d3bd47d0c49c7c401000000e9160c00004c8ba424900000004d2bd47115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c201e9cd0a000049c7c4010000004983fc030f84bf030000488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849bc18fe5cf1c27f00004d892641564c8b7424204d8b264a8d0c65010000004883f901750f49bbd820d3f1c27f0000e9990000004989cc4983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15720b00000f87170300004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d892341c643086041c64309604d89f6498d7608498d7b0a48d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bcb071d1f1c27f0000e9ac0000004d89f24983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db10a00000f87490200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c6104d89f349d1eb43c6041c2749d1ee43c64434012741806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004156498b4500498b5d084d8b4510ff155b0a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf020d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3021d3f1c27f00004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b8424900000004c8b4c244048c7c3030000004c8b0424ff15c4080000488d642408e951050000488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff234d8b2e4983fd01752c4d8b6e184c8bb424900000004d2bee7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c501eb15488d64244848b87821d3f1c27f0000488b5d08ff234c8b7424704d8b364d8b264983fc0175554d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64244848b89011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f0000eb534d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64244848b81011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f00004d8b264983fc0375324d8b76084d3bf57c15488d64244848b8980dd3f1c27f0000488b5d08ff234d89f5483b65187306ff5558ca0020e90cffffff4d8b2e4983fd070f85420100004d8b66084d89e54d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc030f850b01000041554c8b34244d8b6e084d8b751041ff751841ff75204d8b2e4983fd03750f4d8b76084d8b364983fe03750ceb0f4d8b76084983fe037405e99f00000048ba408fd1f1c27f0000488b44241848bbf021d3f1c27f000049b80022d3f1c27f0000ff15a70600004989c64983fe03750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03754f488d6424184c8b8424b80000004c8bb424a00000004c8b6c2450ff34244156415548b81022d3f1c27f000048bb3022d3f1c27f00004c8b4c24584c8b542448ff1533060000488d642418e9d00200004c8b7424184d8b2e4983fd0b75184d89f64d8b6e084d89f64d8b76184c8b642450e9b003000049c7c601000000eb1c488d642448eb05488d64244848b86022d3f1c27f0000488b5d08ff234983fe010f85680100004c8b34244983fe03488d642408754f488d6424104c8b8424b80000004c8bb424a00000004c8b6c2450ff34244156415548b8b822d3f1c27f000048bbe022d3f1c27f00004c8b4c24584c8b542448ff1578050000488d642418e9050100004d8d67e04c3b65107303ff55504d89e749c74424f80300000049bed8c8d0f1c27f00004d897424104c8b7424304d897424084c8b7424404d8934244d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424104d8975104c8b7424484d89750849c74500050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd888d1f1c27f00004d892e4c8bac24a0000000488b1c24492bdd488d6424087115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488d6424204883c3014d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849c70001000000488b442470ff1561040000e913010000488d642408498b064c8b70084d8b2e4983fd0175664d8b76184c8bac24a00000004d3bf57d2a4d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004989400849c70001000000e9c40100004c8bac24a00000004d2bf57115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c601e9a00000004d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004989400849c700010000004d8b304983fe07752b488d6424084c8b8424980000004c8b4c24784c8b942490000000488b1c24ff1587030000488d642420eb3f4c8bb424a0000000488b1c24492bde488d6424087115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488d6424204883c301488b442470ff1539030000584883c428c270004c8bac24800000004d8b6d004d8b65004983fc0175554d8b6d084d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37d2d49c1e40849c1ec074983cc014d3bf47215488d64245848b89011d1f1c27f0000488b5d08ff234f8b44b5fceb0a49b8a85bd1f1c27f0000eb534d8b6d084d8b5df84d89dc49c1e30849c1eb074983cb014d3bf37d2d49c1e40849c1ec074983cc014d3bf47215488d64245848b81011d1f1c27f0000488b5d08ff234f8b44b5fceb0a49b8a85bd1f1c27f00004d8b284983fd0375324d8b68084d3bee7c15488d64245848b8980dd3f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0140e907ffffffe987feffff4983fd0175184983fc01750949c7c503000000eb0749c7c501000000eb664d8b4d004d8b5d0841f6c40175514d8b04244d8b542408498b394883ff0d75364d8b49084d8b004d3bc8750949c7c103000000eb0749c7c1010000004983f90375144d89d44d89dd483b65187306ff5558ca0070eb8c49c7c501000000eb0749c7c5010000004983fd03740949c7c601000000eb384d8b6e184d8b75084d8b364983fe05750949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9a5fbffff4c8b6424704d8b24244d8b1c244983fb0175574d8b6424084d8b4c24f84d89cb49c1e10849c1e9074983c9014d3bd17d2d49c1e30849c1eb074983cb014d3bd37215488d64244848b89011d1f1c27f0000488b5d08ff234f8b6494fceb0a49bca85bd1f1c27f0000eb554d8b6424084d8b4c24f84d89cb49c1e10849c1e9074983c9014d3bd17d2d49c1e30849c1eb074983cb014d3bd37215488d64244848b81011d1f1c27f0000488b5d08ff234f8b6494fceb0a49bca85bd1f1c27f00004d8b0c244d89cb4983f90375334d8b6424084d3be27c15488d64244848b8980dd3f1c27f0000488b5d08ff234d89e2483b65187306ff5558ca0064e901ffffff4d89dc4983fc01750949c7c401000000eb0d4983fc07750c49c7c403000000e917f4ffff488d64244848b8a81ad3f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@13861,1,@1308,@6039,@6106,@6039,@6130,@6130,@5304,@6022,@6108,@4659,@5330,@5340,@5076,@6083|796,0,@10448 875,0,@6122 946,0,@11003 1019,0,@6124 1273,0,@9475 1356,0,@6127 1393,0,@13843 1578,0,@10697 1895,0,@10236 1940,0,@13844 1984,0,@10236 2072,0,@10378 2117,0,@13846 2237,0,@9487 2258,0,@9487 2305,0,@9475 2332,0,@13848 2415,0,@9998 2438,0,@10515 2500,0,@9995 2523,0,@10515 2556,0,@13744 2714,0,@10896 2729,0,@13851 2739,0,@13852 2827,0,@13853 2837,0,@13854 2932,0,@13855 3006,0,@13857 3016,0,@13858 3077,0,@9493 3199,0,@10854 3239,0,@9475 3416,0,@9475 3557,0,@9475 3673,0,@9998 3696,0,@10515 3758,0,@9995 3781,0,@10515 3814,0,@13744 4134,0,@9998 4157,0,@10515 4221,0,@9995 4244,0,@10515 4282,0,@13744 4359,0,@13813 6122:D4,472|483b65187305ff5558cd054989d64989c34d8b2b4e8d246d010000004983fc01750f49bd9811d3f1c27f0000e9b60000004d89e24983c21c4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d6f0100000f87530100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb9811d3f1c27f000048c7c11d000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc90fb5cf1c27f00004d89204d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff253600000048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13840,1,@1298,@6022|36,0,@13768 194,0,@13768 268,0,@6123 444,0,@9487 6123:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1297,@5050| 6124:D4,168|483b65187306ff5558ca0d014989c64d89c54c8b62184d89e34d8b6424404d8b5b60498d47e8483b45107306ff5550ca0c784989c748c740f8020000004c8958084c89204d8d47d84c3b45107306ff5550ca0d604d89c749c740f804000000498958184c8b62104d8960104c8b62084d89600849bcb8fc5cf1c27f00004d892041554c89f3ff15350000004989c64d8b364c8b2c244d897500488d64240848c7c001000000c3f400|@11026,1,@1301,@5340|117,0,@6125 6125:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849bec8fd5cf1c27f00004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@13841,1,@1300,@6022|47,0,@6126 6126:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13769,1,@1299,@5050| 6127:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13842,1,@1302,@5050| 6128:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@13742,1,@1303| 6129:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@13742,1,@1304| 6130:D6,1312|483b65187306ff5558ca09074989c5534d8d67e84c3b65107306ff5550ca00274d89e749c74424f8020000004d8944240849be48045df1c27f00004d8934244d8d5fe84c3b5d107306ff5550ca00374d89df49c743f8020000004d89430849bee0045df1c27f00004d89334d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d895e084d892641564d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849bc78055df1c27f00004d892641564d8b324a8d0c75010000004883f901750f49bbd820d3f1c27f0000e9960000004989ce4983c6044c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b250b0400000f87e30300004d89e14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ec024bc744a3fc0000000049d1ee4d893341c643086041c6430960498d7208498d7b0a48d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f49bcb071d1f1c27f0000e9ac0000004d89f24983c2044c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d4d0300000f87180300004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89f1498d7308498d7c240848d1e9f3a44983c6104d89f349d1eb43c6041c2749d1ee43c64434012741806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060700000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff15ac0200004989c048ba8048d1f1c27f0000488b44244048c7c3d10700004c8b4c241849c7c201000000ff15790200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be7849d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3021d3f1c27f00004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080700000049c70201000000488b4424284158488d6424104c8b4c240848c7c3030000004c8b34244c897424184883c418ff2557000000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@13862,1,@1309,@6022,@5057,@5149|51,0,@6131 96,0,@6132 176,0,@6133 208,0,@13843 390,0,@10697 673,0,@10384 833,0,@10391 912,0,@10236 1000,0,@10236 1088,0,@10378 1133,0,@13846 1256,0,@9487 1277,0,@9487 6131:D3,112|483b65187305ff5558cd054c8b7208498b5640ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@13859,1,@1305| 6132:D3,112|483b65187305ff5558cd054c8b7208498b5660ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@13859,1,@1306| 6133:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13860,1,@1307,@5050| 6134:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@10041,1,@1310,@6135| 6135:D9,344|483b65187306ff5558ca09014989c64c89c04c8b2b4d89ee4c3b2d79010000754f4c3b356801000075364c8b73104d8b76104d8b2e4983fd0175244d8b76084983c602711048b8d0c6d0f1c27f0000488b5d08ff234c3bf07e044c89f0c3c3c348b87810d1f1c27f0000488b5d08ff234d89f54c3b350e010000754f4c3b2dfd00000075364c8b73104d8b76084d8b2e4983fd0175244d8b76084983c602711048b8d0c6d0f1c27f0000488b5d08ff234c3bf07e044c89f0c3c3c348b87810d1f1c27f0000488b5d08ff234d89ee4c3b2da300000075234c3b3592000000750a4c8b73104d8b7608eb1148b87810d1f1c27f0000488b5d08ff23c341f6c60175544d8b264d8b6e084d8b6424104d8b1c244983fb0175274d8b6424084983c402711048b8d0c6d0f1c27f0000488b5d08ff234c3be07e02eb034989c4eb034989c44c89e04d89ee483b65187306ff5558ca0140eba6c3f400|@13864,1,@1311,@4626,@4626,@4628,@4628,@4625,@4625|71,0,@9475 98,0,@9991 162,0,@9475 189,0,@9991 236,0,@9991 292,0,@9475 6136:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4|@13865,1,@1312|42,0,@9475 91,0,@9998 6137:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1313,@5098| 6138:D8,2120|483b65187306ff5558ca090750534150415141524c8b7424104d8b264c2b6424087115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c4014c8b7424204d89f54d3bf4752e488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c408c218004d89ed4c8b14244d8b324d8b264983fc0175554d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64242848b89011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f0000eb534d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2d49c1e40849c1ec074983cc014d3bec7215488d64242848b81011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f00004d8b264983fc0375324d8b76084d3bf57c15488d64242848b8980dd3f1c27f0000488b5d08ff234d89f5483b65187306ff5558ca0020e90dffffff4d8b264d89e54983fc010f856f02000041ff76084c8b34244d8b6e084d8b65004983fc050f85c101000041ff7508498b45104d89f641ff76104d8d77e04c3b75107306ff5550ca01044d89f749c746f8030000004c8b6c24204d896e104d89d24d89560849bd80115df1c27f00004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849be20135df1c27f00004d893048bb1026d3f1c27f0000ff15660600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424084d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424184d896e0849bdd888d1f1c27f00004d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849c70001000000488b442448488b5c2428ff15b9050000488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff236a016a014c8b7424584c8b6c24504c8b642448415641554154488d5c24184c8b4424404c8b4c24384c8b542430e8effcffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c0010000004883c408c21800488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff236a016a014c8b7424584c8b6c24504c8b642448415641554154488d5c24184c8b4424404c8b4c2438e85bfcffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c0010000004883c408c218004983fd070f852f0400004d8b6e084d8b76104d8b65084d8b1c244983fb010f850004000041ff74240841ff74241041ff7424204d8b6d1041ff750041ff75084d8b6d1041f6c6010f85680100004d8b66084c89e041f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc030f853d01000041f6c601754c41ff364883f8017504415eeb3dff15f30300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15b70300004989c6eb0a49bed8c8d0f1c27f00004d8b2e4e8d246d010000004983fc01750f49bd2026d3f1c27f0000e9aa0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b1530030000777a4d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb2026d3f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbfeb15488d64245048b8f8c7d0f1c27f0000488b5d08ff234c8b7424604d8b164d89d64983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b6424604d8934244c8b7424584d8b364d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24584d89234d8d5fe04c3b5d107306ff5550ca00644d89df49c743f8030000004d896b104c8b2c244d896b08488d6424084c8b2c244d892b488d6424084d8d6fe84c3b6d107306ff5550ca004c4d89ef49c745f8020000004d89750849c74500010000004c8b7424084d8b264983fc03750c4d89f64d8b76084d8b26eb074d89f64d8b66084d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706010000004d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b0c244d894c2420488d6424084d895424184d897424104c8b7424084d8974240849c70424010000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849c70001000000488b442458488b5c2438ff1517010000488b4424384883c0027115488d64244048b8d0c6d0f1c27f0000488b5d08ff236a016a014c8b7424684c8b6c24604c8b642458415641554154488d5c24184c8b4424504c8b4c24484c8b542440e865f8ffff415e415b4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084c8b34244d89f54d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24284d8965004d89750848c7c0010000004883c438c21800488d64242848b83826d3f1c27f0000488b5d08ff23488d64242848b83826d3f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@13880,1,@1320,@6039,@4836,@6144,@6039,@5108|42,0,@9475 82,0,@10542 190,0,@9998 213,0,@10515 275,0,@9995 298,0,@10515 331,0,@13744 467,0,@6139 511,0,@6140 524,0,@13874 635,0,@10854 721,0,@9475 874,0,@9475 1208,0,@9493 1235,0,@13875 1369,0,@13875 1427,0,@9487 1465,0,@9475 1512,0,@9475 1883,0,@9475 2071,0,@13876 2092,0,@13876 6139:D3,376|483b65187305ff5558cd054c8b70084d8b2e4983fd0175334d8b6e184c8b62104d89e64d3bec7d0848c7c001000000c34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c501eb0848c7c001000000c34c8b72084d8b364d8b264983fc0175504d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f0000eb4e4d8b76084d8b5ef84d89dc49c1e30849c1eb074983cb014d3beb7d2849c1e40849c1ec074983cc014d3bec721048b81011d1f1c27f0000488b5d08ff234f8b74aefceb0a49bea85bd1f1c27f00004d8b264983fc03752d4d8b76084d3bf57c1048b8980dd3f1c27f0000488b5d08ff234d89f5483b65187306ff5558ca0420e91cffffff4d8b2e4983fd0175234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8b024d3f1c27f0000488b5d08ff23f400000000|@13869,1,@1314|55,0,@9475 146,0,@9998 169,0,@10515 226,0,@9995 249,0,@10515 277,0,@13744 357,0,@13866 6140:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b86825d3f1c27f000049b9c025d3f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@13873,1,@1317,@5104|26,0,@13870 36,0,@13872 6141:D3,16|483b65187305ff5558cd01c3f4000000|@13871,1,@1315| 6142:D3,16|483b65187305ff5558cd01c3f4000000|@13871,1,@1316| 6143:D3,16|483b65187305ff5558cd01c3f4000000|@13873,1,@1318| 6144:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0d8d0f1c27f00004c8930c348c7c001000000c3f40000|@10443,1,@1321|105,0,@9569 6145:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1322| 6146:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1323| 6147:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1324| 6148:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@13883,1,@1325,@6149| 6149:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1326| 6150:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13883,1,@1327| 6151:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1328| 6152:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1329| 6153:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@1330| 6154:D4,88|483b65187305ff5558cd05524c8b34244d8b7610498b564848c7c001000000ff124989c641564c8b7424084d8b7608498b564848c7c001000000ff124889c34883fb017506584883c408c3584883c408ff251a000000f400|@13885,1,@1331,@6155| 6155:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1332| 6156:D3,32|483b65187305ff5558cd0148b80028d3f1c27f0000488b5d08ff23f400000000|@13885,1,@1333|13,0,@13887 6157:D3,32|483b65187305ff5558cd0148b89028d3f1c27f0000488b5d08ff23f400000000|@13885,1,@1334|13,0,@13891 6158:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13885,1,@1335| 6159:D4,144|483b65187306ff5558ca0d015250534150f644240801756e4c8b742408498b1e4d89f641ff76086a016a014c8b7424304d8b5608488b4424284c8b4424184989e1ff1561000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8b584883c418c3f4000000|@10041,1,@1336,@6160| 6160:D10,2056|483b65187306ff5558ca0907504151415241ff3041ff70084c8b2b4d89ee4c3b2d2b0800000f85ed0000004c3b35160800000f85cb0000004c8b73104d8b2e4d8b660841f6c40174554c8b6c2410498b5518498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930ff124c8b6c24184c8b7424084d8975004c8b34244d897508488d64242848c7c001000000c34d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004c8b34244d897308488d6424084c8b34244d8933488d6424084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000006a016a014154e925040000488d64242848b87810d1f1c27f0000488b5d08ff234d89f54c3b351e0700000f859e0100004c3b2d090700000f857c010000ff73104c8b2c244d89ee41ff75184d89f641ff7610488b0424ff15dc0600004989c641564c8b742430498b56504d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca04404d89ef49c745f8040000004c8b6424104d8965184c8b6424084d8965104d8975084c8b6424404d89e64d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6424284d89e64983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24184d896b104c8b2c244d896b08488d64240849c703010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d892e4c8b6c24304d8965004d89750848c7c0010000004883c440c3488d64242848b87810d1f1c27f0000488b5d08ff234d89ee4c3b2d580500000f852b0200004c3b35430500000f8509020000ff73104c8b24244d8b7424104d8b364983fe07755d4c8b742418498b5610498d47e8483b45107306ff5550ca04104989c748c740f8020000004d89e44c896008488d6424084c8b7424204c8930ff124c8b6c24184c8b7424084d8975004c8b34244d897508488d64242848c7c001000000c34d89e44d8b7424084d89e44d89e541ff7424184d89ed4d8b5d204d89ed4d8b55284d89ed4d8b4d304d8d67e84c3b65107306ff5550ca004e4d89e749c74424f8020000004c8b6c24184d896c240849c70424010000004d8d6fc04c3b6d107306ff5550ca005e4d89ef49c745f8070000004d894d304d8955284d895d204c8b1c244d895d184d8965104d8975084c8b6424304d89e64d8965004c8b642420498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124c8b6424184d89e64983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24084d896b184c8b2c244d896b10488d64241049c743080500000049c703050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424104d892e4c8b6c24084d8965004d89750848c7c0010000004883c418c3488d64242848b87810d1f1c27f0000488b5d08ff234c8b6c24184c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c418c3f60424010f85b00100004c8b2424498b34244d89e441ff742408ff364c8b66084c8b5e18488b4e20488b5e28488b4630498b3e4d8b56084d8b0a4d8b4208498d57e8483b55107306ff5550cacb7b4989d748c742f8020000004c894a0848c702010000004d8d57c04c3b55107306ff5550cacf7b4d89d749c742f8070000004989423049895a2849894a204d895a18498952104d8962084c8b24244d8922488d6424084d8d67e84c3b65107306ff5550cac06f4d89e749c74424f80200000049897c24084d8914244d89ca4983c2027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d7fd8483b7d107306ff5550ca407f4989ff48c747f804000000488977184c895f1048c747080500000048c707050000004d8d5fe84c3b5d107306ff5550ca80774d89df49c743f80200000049897b084d890b4d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89194d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a084d8922415b4d89d64c891c24483b65187306ff5558ca0060e946feffff488d6424084d8b264c8924244d8b76084c897424084c8b3424ff7424084d8b65004d8b5d084d8b4d184d8b55104d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d894d184d8955104d895d084d8965004c8b642418498b54241849c7c40100000041f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca047a4d89d749c742f8020000004d8962084d890a4d89d44d89de483b65187306ff5558ca0470ebbd4d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424284c8930ff124c8b6c24204c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c428c3f40000|@13898,1,@1339,@4625,@4625,@6161,@4628,@4628,@4626,@4626|266,0,@9991 517,0,@9475 696,0,@9991 1076,0,@9475 1267,0,@9991 1536,0,@9475 6161:D4,40|483b65187305ff5558cd01488b0049b82029d3f1c27f000048c7c301000000ff251b000000f40000|@13899,1,@1340,@4953|16,0,@13895 6162:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@10041,1,@1337,@6163| 6163:D9,728|483b65187306ff5558ca090141504c8b2b4d89ee4c3b2dfd0200000f85e30000004c3b35e80200000f85c1000000ff73104c8b34244d8b6e084d8b65004983fc010f85a100000041ff750848ba3029d3f1c27f00004d89f6498b4610ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3488d64240858c3488d64240848b87810d1f1c27f0000488b5d08ff234d89f54c3b35fa0100000f85c60000004c3b2de50100000f85a40000004c8b5b104d8b73104d8b2e4983fd010f858d0000004d8b6e084d8b73184d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d8974241049c74424080500000049c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c358c3488d64240848b87810d1f1c27f0000488b5d08ff234d89ee4c3b2d1401000075294c3b3503010000750b4c8b73104d8b760858eb17488d64240848b87810d1f1c27f0000488b5d08ff2358c341f6c6010f85b70000004d8b0e4d8b6e084d8b61104d8b1c244983fb010f85840000004d8b6424084d8b59184d8d57d84c3b55107306ff5550ca017a4d89d749c742f8040000004d894a184d895a1049c742080500000049c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb034989c44c89e04d89ee483b65187306ff5558ca0140e93fffffffc3f400000000|@13897,1,@1338,@4626,@4626,@4625,@4625,@4628,@4628|77,0,@13896 246,0,@9991 460,0,@9991 513,0,@9991 6164:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13900,1,@1341,@5202| 6165:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13902,1,@1342,@5202| 6166:D4,224|483b65187305ff5558cd054d8d47e84c3b45107305ff5550cd054d89c749c740f8020000004c8b72084d89700849be98295df1c27f00004d89304d8d6fe84c3b6d107306ff5550ca05014d89ef49c745f8020000004989450849c74500070000004d8d77e84c3b75107306ff5550ca04214d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca04414d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c70201000000488b42104c8b4a1848c7c303000000ff251e000000f40000000000|@13904,1,@1344,@5990|47,0,@6167 6167:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13902,1,@1343,@5202| 6168:D3,160|483b65187305ff5558cd054c8b7230493bc67d06488b5208ff224c8b6a184d89ee4d8b6d28493bc57c534d8b76284989c54d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34c8b6a284d89ee4d8b6d28493bc57c06488b5220ff22498b5620ff22f4000000000000|@13905,1,@1345|56,0,@9475 105,0,@9998 6169:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1346,@5098| 6170:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@13900,1,@1347,@5202| 6171:D3,40|483b65187305ff5558cd054c8b72184d8b7628493bc67d06488b5208ff22488b5210ff22f4000000|@13906,1,@1348| 6172:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1349,@5098| 6173:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4|@13907,1,@1350|42,0,@9475 91,0,@9998 6174:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1351,@5098| 6175:D8,776|483b65187306ff5558ca0907534150415141524c8b7010488b58204c8b40284983fe010f85dc0000004c8b68084c3b2d0c0300007502eb344d8b75004e8d3475010000004983fe17752e49bec8a1d1f1c27f0000498d7508498d7e0848c7c10b000000483bc9f3a67402eb0c49be882ad3f1c27f0000eb154c8b54244049c7c101000000ff15ae0200004989c64156488b4424204c8b48104889c0488b58204889c04c8b40284c8b7424484d8d57d84c3b55107306ff5550ca09434d89d749c742f8040000004d8942184d894a104d89720849be30305df1c27f00004d8932ff154b0200004989c641564c8b2c244d8b75284d89f44d89ed4d8b5d1049c7c501000000eb15488d64242048b8f02bd3f1c27f0000488b5d08ff2341f6c30175364d8b4b084d89ea4983c2027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0078ebc44983ed014d03e57115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d2be67115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c4014983fc017d0a488d642430e94c0100004c3b25570100000f8d3a0100004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849bbf0305df1c27f00004d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849bb88315df1c27f00004d891c244154ff74242841564155488b442430488b5c242849b8d8c8d0f1c27f00004c8b4c24384c8b542448ff15a00000004c8b7424584c8b6c2448ff742430ff74243041564155488b442438488b5c243049b8d8c8d0f1c27f00004c8b4c24284c8b542440ff155e0000004989c64c8b6c24504c8b24244d896500488d6424384d89750848c7c0010000004883c408c22000488d64243048b8d015d1f1c27f0000488b5d08ff23f400ffffffffffffff01|@13931,1,@1372,@6196,@6230,@6189,@6189,@10999|76,0,@10999 110,0,@13903 212,0,@6176 268,0,@13909 308,0,@9475 358,0,@9475 384,0,@9475 536,0,@6177 590,0,@6178 624,0,@9493 682,0,@9493 752,0,@10027 6176:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c85dd1f1c27f0000488b5d08ff23f4000000000000|@13908,1,@1352|42,0,@9475 95,0,@9475 131,0,@10528 6177:D3,112|483b65187305ff5558cd054989c54c8b62104d89e64d3bec7d0848c7c001000000c34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81011d1f1c27f0000488b5d08ff234b8b44aefcc3f400|@13912,1,@1353|41,0,@9475 90,0,@9995 6178:D3,120|483b65187305ff5558cd054989c54c8b72104d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81011d1f1c27f0000488b5d08ff234f8b74aefc4983fe01750b48b8d0a3d1f1c27f0000c3498b06c3f40000000000|@13913,1,@1354|25,0,@9475 74,0,@9995 101,0,@11014 6179:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b20488b4008f6c301755f4c8b2b488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f40000000000|@13917,1,@1356|33,0,@13915 156,0,@13915 6180:D3,368|483b65187306ff5558ca0901534150a8010f85480100004c8b28ff70084d8b65084d89e24d8b34244983fe010f85180100004d8b7424084d8b6424204d8b5d104d8b0b4d8d5fe04c3b5d107306ff5550ca00764d89df49c743f80300000049b8a82dd3f1c27f00004d8943104c8b4424104d8943084d890b488b5424084d89d54d8b4d004d89ca4983f9057515488d64241848b8a892d1f1c27f0000488b5d08ff234983fa01751e4d8b6d104d8b55004983fa03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d00498d47d0483b45107306ff5550ca04784989c748c740f8050000004c8958204c8960184c89681048c74008010000004c8930ff124989c64156488b442408488b5c24184c8b442410e8e5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241848b8d82dd3f1c27f0000488b5d08ff23488d64241048c7c001000000c3f4000000|@10112,1,@1357|96,0,@13918 148,0,@10915 337,0,@13919 6181:D3,200|483b65187306ff5558ca09035053415041514c8b7424184c89f04c3b742410750d488d64242048c7c001000000c3488b5424084c8b34244983ee014889c04903c67115488d64242048b8d0c6d0f1c27f0000488b5d08ff23ff124989c64156488b4424204883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184c8b4424104c8b4c2408e86dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400|@10111,1,@1358|74,0,@9475 113,0,@9475 6182:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1359| 6183:D4,192|483b65187306ff5558ca09034989c6534150415141f6c6010f8593000000498b0641ff76086a016a014889e34c8b4424284c8b4c24204c8b542418ff1597000000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408488b5c24204c8b4424184c8b4c2410e87effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400|@10112,1,@1360,@6184| 6184:D3,520|483b65187306ff5558ca09074d89c350534c8b7424084d8b6e084d8b75004983fe010f85c20100004d8b75084d8b65204c8b6c24084d8b6d104d8b6d004d8b034a8d1c45010000004883fb01750f49b8502ed3f1c27f0000e9ad0000004889df4883c73c4889f84883c01e49c7c01100000048d1e849d1e84833d249f7f0488d344501000000483b35730100000f87420100004889f24c8d04950400000049f7d84d03c74c3b451072054d3bc77206ff5550cac87e4d89c748d1ea498950f841c640ff414883ee0249c744b0fc0000000048d1ef49893848bf502ed3f1c27f000048c7c13d000000488d7708498d780848d1e9f3a44889d9498d7308498d782648d1e9f3a4418060ffbf4d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8943104d894b084d892b4c89d24c8b6c24084d8b6d084d8b4d004d89ca4983f9057515488d64241048b8a892d1f1c27f0000488b5d08ff234983fa01751e4d8b6d104d8b55004983fa03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d00498d47d0483b45107306ff5550ca04784989c748c740f8050000004c8958204c8960184c89681048c74008010000004c8930ff124989c6415d4d897500415e4d89750848c7c001000000c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8802ed3f1c27f0000488b5d08ff23f4ffffffffffffff01|@13925,1,@1361|80,0,@13922 217,0,@13922 336,0,@10915 476,0,@9487 497,0,@13923 6185:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b20488b4008f6c301755f4c8b2b488b5b084d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f40000000000|@13917,1,@1362|33,0,@13915 156,0,@13915 6186:D3,200|483b65187306ff5558ca09035053415041514c8b7424184c89f04c3b742410750d488d64242048c7c001000000c3488b5424084c8b34244983ee014889c04903c67115488d64242048b8d0c6d0f1c27f0000488b5d08ff23ff124989c64156488b4424204883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184c8b4424104c8b4c2408e86dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400|@10111,1,@1363|74,0,@9475 113,0,@9475 6187:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1364| 6188:D3,312|483b65187305ff5558cd09f6c3010f85160100004c8b33488b5b084d8b2e4d8b65004983fc010f85ee0000004d8b6d084d8b76084d8b1e4d89dc4983fb05751048b8a892d1f1c27f0000488b5d08ff234983fc01751c4d8b76104d8b264983fc0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364d8d67e04c3b65107306ff5550ca09604d89e749c74424f80300000049894424104d8974240849c70424030000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e815ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8182fd3f1c27f0000488b5d08ff2348c7c001000000c3f40000000000|@13929,1,@1365|66,0,@10915 216,0,@9475 284,0,@13926 6189:D5,584|483b65187306ff5558ca090753415041514152ff30ff7008ff701848c7c015000000ff15400200004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b24244d89e64d89650849bc583f5df1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d89f34d8974240849be48415df1c27f00004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89db4d895e0849bb38435df1c27f00004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933ff7424206a01488b4424284c8b44244849c7c10100000049bad8c8d0f1c27f0000ff15510100004c8b34244d8b2e4983fd030f85c00000004d89f64d8b6e084d89f64d8b7618488d6424084d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49bc4882d1f1c27f0000eb584d89f34c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca42604d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c89f14c89e748d1e9f348a541806424ffbf4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb084d89f6488d642408498d47c8483b45107306ff5550ca00404989c748c740f8060000004c8b6c24284c8968284c8b6c24184c8968204c8b2c244c896818488d6424084c8b6c24184c8968104c8b2c244c896808488d6424084c89304883c428c3f400000000000000|@14027,1,@1417,@5348,@5347|82,0,@6190 135,0,@6192 183,0,@6194 257,0,@9493 338,0,@10817 6190:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd28c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@13930,1,@1366,@4931,@6191,@4914|59,0,@9594 73,0,@4626 6191:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@1367,@4626| 6192:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd48c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@13930,1,@1368,@4931,@6193,@4914|59,0,@9594 73,0,@4628 6193:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@1369,@4628| 6194:D6,208|483b65187305ff5558cd0552ff304c8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd18c1d0f0c27f00004d892e41564c8b742410498b4608488b5c2408ff158e0000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff15420000004989c0488d6424084c8b742408498b46085b488d642408ff251d000000f400000000|@13930,1,@1370,@4931,@6195,@4914|59,0,@9594 73,0,@4625 6195:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@1371,@4625| 6196:D6,480|483b65187306ff5558ca090750534150415141524c8b7424204d8b66084c3b25e40100007507488d642428eb3a4d8b2c244e8d2c6d010000004983fd17753249bdc8a1d1f1c27f0000498d742408498d7d0848c7c10b000000483bc9f3a67402eb0f488d64242848c7c001000000c220004c8b6c2418498b45004c8b6c24484c8b6424404c8b5c24384c8b5424304d8d47a84c3b45107306ff5550ca017c4d89c749c740f80a0000004d89504849ba2830d3f1c27f00004d8950404c8b5424104d8950384d8958304d8960284d8968204c8b2c244d8968184c8b6c24084d8968104d89f64d89700849be48475df1c27f00004d893048c7c301000000ff15fe0000004889c34c8b7424384d8d5fe04c3b5d107306ff5550ca08404d89df49c743f8030000004c8b24244d89e54d8963104d89730849beb0745df1c27f00004d89334c8b742418498b064c8b7424304c8b6424384c8b5424484c8b4c24404d8d47a84c3b45107306ff5550ca097e4d89c749c740f80a000000488b7c2410498978484d8948404d8950384d8958304d8960284d89ed4d896820488d6424084c8b2c244d896818488d6424184d8970104c8b34244d897008488d64240849be20805df1c27f00004d89304c8b34244c897424204883c420ff251d000000f400000000|@14008,1,@1406,@4953,@4953,@10999|65,0,@10999 175,0,@13932 234,0,@6197 310,0,@6223 445,0,@6224 6197:D4,184|483b65187306ff5558ca0d015250534150f6442408010f85900000004c8b742408498b1e4d89f641ff76084c8b442420498b78084d89c0498b70104d89c04d8b70184d89c04d8b68204d89c04d8b60284d89c04d8b58304d89c04d8b50384d89c04d8b48404d89c04d8b404841564155415441534152415141504989f24989f9488b4424504c8b442440ff15400000004989c4415d4c8924244c896c2408483b65187303ff5558e965ffffff584883c418c3f40000000000|@10041,1,@1373,@6198| 6198:D14,1528|483b65187306ff5558ca090750415041524c8b334d89f54c3b3542060000754c4c3b2d31060000752eff7310498b01488b5c2418ff15160600004989c641f6c60175084d8b36e91c05000049c7c601000000e9d7030000488d64241848b87810d1f1c27f0000488b5d08ff234d89ee4c3b2dd205000075494c3b35c1050000752bff7310498b01488b5c2418ff15a60500004989c641f6c60175084d8b36e90b03000049c7c601000000eb22488d64241848b87810d1f1c27f0000488b5d08ff23488d642408584883c408c238004983fe01750d488d642410584883c408c2380041ff364c8b34244d8b56104c8b742408498b5e104c8b7424404d8b364e8d3475010000004c8b6424204d8b2c244e8d1c6d010000004983fe0175084d89e5e9bf0000004983fb01750a4c8b6c2440e9af0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b058e0400000f87310200004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c8b4c24404c89f1498d7108498d7d0848d1e9f3a44983c6104c89d94d89e4498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49b800d9d0f1c27f0000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db40300000f874a0100004d89d94e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983eb024bc74498fc0000000049d1ec4d89204c89f1498d7508498d780848d1e9f3a44983c61049d1ee43c604302e418060ffbf488b5424384c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c243041564155415441534c89d04d89ca4c8b4c2430ff124989c64c8b6c24084d8b6d084d8b65004983fc010f858b0000004d8b6d084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b1c244d895c2410488d6424084d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24104c8968084c89304883c420c23800488d642418584883c408c23800488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff2341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b156702000075464d89de4c3b355302000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64242048b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e9a0fcffff4983fe01750d488d642410584883c408c2380041ff364c8b4c24604c8b5424584c8b7424504c8b6c24484c8b642440415641554154488b442418488b5c24204c8b442428ff15a80100004c8b34244d8b7608488d6424084c8b2c244d8b6d08488d642410584883c40841f6c6010f85c300000041f6c5010f85b9000000498b3e4d8b66084d8b55004d8b5d084c8b4f184d8b52104d8b024983f801757c4d8b52084d8d47d84c3b45107306ff5550ca817e4d89c749c740f804000000498978184d89481049c740080500000049c700050000004d8d4fe84c3b4d107306ff5550ca017d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca017a4d89d749c742f802000000498942084d890aeb034989c24c89d04d89dd4d89e6483b65187306ff5558ca0160e933ffffffc2380041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159600000075464d89de4c3b358200000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64242048b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e947fefffff4ffffffffffffff01ffffffffffffff01|@13956,1,@1388,@4626,@4626,@6199,@4628,@4628,@4914,@4628,@4628,@4914,@4626,@4626|94,0,@9991 179,0,@9991 503,0,@9571 907,0,@9487 928,0,@9487 1027,0,@9991 1468,0,@9991 6199:D9,1408|483b65187306ff5558ca090750534150415141524c8b6c24204d89ee41ff75004d89f641ff76084c8b6c24284d89ee41ff75004d89f641ff76084c8b74241841ff364c8b6c24104d89ee41ff75004d89f6498b4608ff15650500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424384d89650849bc80545df1c27f00004d89650041554c8b6c24304d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb544983fc0175064d8b6d08eb484d8b650849c7c50100000041f6c40175374d8b5424084d89eb4983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c8b6424204d8b6424184d8b6424084d8b14244d89d34983fa0375074d8b642410eb554983fb0175074d8b642408eb484d8b5c240849c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec740f488d64246048c7c001000000c21800498d47d0483b45107306ff5550ca00404989c748c740f80500000048c74020010000004c8b6c24304c8968184c8b6c24104c8968104c89700848c7000b000000498d5fd0483b5d107306ff5550ca01404989df48c743f80500000048c74320010000004c8b6c24204c896b184c8b6c24084c896b104c89730848c7030b0000004c8b4424484c8b4c2440ff15960300004989c64d8b2e4983fd037529488d642410f644240801740f488d64245048c7c001000000c2180049c7c6010000004c8b6c2418eb7741ff760848ba9899d1f1c27f0000488b5c24784c8b442478488b44244849b9f032d3f1c27f0000ff152c0300004889c2488b0424ff124989c0488d642408488b442458488b5c245041594c8b5424384c8b6c24304c8b6424704c8b5c24604c895c24604c896424684c896c24704883c458ff25da02000041f6c50175364d8b5d084d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc449c7c5010000004c8b64240841f6c40175374d8b5424084d89eb4983c3027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d3bf57f0f488d64245048c7c001000000c21800ff742418f604240175194c8b2c244d8b75004d89ed41ff75084d8b2e4c8b742418eb0f488d64245848c7c001000000c2180041f6c601755b4d8b1e4d8b66084d8b134d3bd57502eb304d8b1a4e8d1c5d010000004d8b4d004c89c94e8d0c4d010000004d3bd9751a498d7208498d7d08483bc9f3a67402eb0949c7c603000000eb184d89e6483b65187306ff5558ca0060eb9f49c7c6010000004983fe037505e95c0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc0833d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6833d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be8833d3f1c27f00004c8930ff15e20000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100100000049c742080100000049c702010000004c8b4c2478488b44244048c7c3030000004c8b442438ff1530000000415d4c892c24483b65187303ff5558e9effdfffff4000000|@13957,1,@1389,@5990,@4836,@6215,@5307,@6216,@6214|132,0,@6200 228,0,@9475 348,0,@9475 605,0,@10952 630,0,@13951 744,0,@9475 817,0,@9475 1065,0,@13952 1113,0,@13954 1197,0,@13955 6200:D8,336|483b65187305ff5558cd054c8b72084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d5d01000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49be2028d1f1c27f0000eb464d8b364d8b2e4c3b2dfc0000007506498b5e10eb1048b87810d1f1c27f0000488b5d08ff2348ba3830d3f1c27f000049c7c10100000049b82832d3f1c27f0000ff25bb00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9b00000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d360000007509498b5e10e95fffffff48b87810d1f1c27f0000488b5d08ff23f40000|@13950,1,@1387,@4650,@4650,@6201,@4650,@4650|109,0,@10158 142,0,@9991 158,0,@13933 175,0,@13946 279,0,@10198 319,0,@9991 6201:D16,2160|483b65187306ff5558ca0d03525341504151ff70084c8b34244983fe010f85a0040000488d642408ff304c8b34244d8b66184d89e54d8b6424084d8b1c244983fb050f856d02000041ff74240841ff7424104d89f641ff364c8b7424304983fe017f10488d64244048b84847d1f1c27f0000c348c7c001000000ff15680800004989c641564c8b742440498b5610488b442418488b5c24384c8b0424ff124989c641566a016a01488b4424204889e3ff152b080000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b5c24484883eb027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b742450498b5608488b4424204c8b4424104c8b4c24404c8b542438ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415e4883c448eb12488b0424ff15c30600004989c6488d6424504d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b6424184983fc017f10488d64242848b84847d1f1c27f0000c34d89f64d8b6d084d8b5d004d89dc4983fb057515488d64242848b8a892d1f1c27f0000488b5d08ff234983fc0175244d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d084983fd037510eb1a4d8b6d084d8b6d004983fd03740c49bc503ed1f1c27f0000eb0a49bce03ed1f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554d89f641ff760848c7c001000000ff154c0500004989c04c8b742430498b5610488b0424488b5c2428ff124989c641564c8b742418498b066a016a014889e3ff1513050000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017508415e4883c408eb12488b0424ff15a00400004989c6488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3ff304c8b2c244d89ee41ff75004d89f641ff76104c8b7424304983fe017f10488d64244048b84847d1f1c27f0000c348c7c001000000ff15b90300004989c641564c8b74241841ff7608488b0424ff15990300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424104d8966204c8b6424204d8966184c8b6424184d8966104d896e0849c7060b00000041564c8b742450498b5610488b442408488b5c24484c8b442410ff124989c641564c8b742430498b066a016a014889e3ff1517030000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bd6030d3f1c27f00004c896b084c89334883fb017504415deb12488b0424ff15a20200004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb847d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be0875d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b7424504983ee0241567115488d64246848b8d0c6d0f1c27f0000488b5d08ff23f6442440010f85ff0000004c8b6c24404d8b75004d89ed41ff7508498b1e4d8b46184c8b7424684d8b56184d89f64d8b7608ff7424184156ff742438ff742470ff74247048c7c0030000004c8b4c2430ff15810100004989c64156488b5c24104883eb027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8b7424704d8b46184d89f64d8b5608ff742430ff742468ff742468488b4424204c8b4c2438ff15280100004889c34883fb017508415d4883c410eb12488b0424ff15050100004989c5488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c70601000000eb0f488d64240849be7832d1f1c27f00004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c458c3f4|@13936,1,@1374,@6203,@6204,@6205,@6209,@5071,@6210,@5149,@6211,@5071,@5149,@6202,@5071,@5149|106,0,@10373 246,0,@9475 366,0,@10236 410,0,@10380 455,0,@10236 574,0,@10236 619,0,@10655 711,0,@10373 747,0,@10915 819,0,@10296 831,0,@10302 1097,0,@10236 1257,0,@10373 1499,0,@13934 1575,0,@10378 1619,0,@10717 1715,0,@9475 1838,0,@9475 2002,0,@10238 6202:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1384| 6203:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1375| 6204:D5,256|483b65187306ff5558ca090753415041514152a8010f85d20000004c8b30ff70084c8b6c24204d89e94983fd017d0f488d64242848c7c001000000c21800498b1e4d8b46184c8b7424404c8b6c24384c8b642430ff742410ff74241041564155415448c7c0010000004c8b542440ff15ac0000004989c64156488b5c24284883eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424484c8b6c24404c8b642438415641554154488b4424204c8b4424384c8b4c24304c8b542428e839ffffff4889c34883fb017508584883c428c21800584c8b7424284c897424404883c440ff252b000000488d64242048c7c001000000c21800f4000000|@13944,1,@1377,@6207,@6205|139,0,@9475 6205:D5,1120|483b65187306ff5558ca09075053415141526a016a014c89c048bbc830d3f1c27f00004989e0ff1554040000ff3424488b442410ff153e0400004c8b6c24304d89ee4983fd03750949c7c405000000eb0749c7c4010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c745080300000049c745000300000041554c8b6c24084d8b65004983fc050f857e0200004d89ed4d89ee41ff75084d89f6498b4610488b542428488b5c2470ff124c8b7424404983fe03750c49bdd830d3f1c27f0000eb0a49bdf830d3f1c27f00004c8b6424304d89e64983fc017f0c49bb6049d1f1c27f0000eb5a4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24384d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba5831d3f1c27f00004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049c745100100000049c745080100000049c745000100000041554d89f64c89f34983fe010f8e910000004889db4883eb027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488b5424704c8b4424684c8b4c24604c8b542458488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7031d3f1c27f00004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c89304883c448c228004d89f64983fe03750c49bdd830d3f1c27f0000eb0a49bdf830d3f1c27f00004c8b7424284983fe017f0c49bc6047d1f1c27f0000eb054c8b6424304d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c22800f40000|@13945,1,@1379,@6208,@5234|27,0,@13937 198,0,@13938 210,0,@13939 234,0,@10390 319,0,@13942 468,0,@9475 583,0,@13943 805,0,@13938 817,0,@13939 838,0,@10374 6206:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@1376| 6207:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1378| 6208:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@1380| 6209:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1381| 6210:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1382| 6211:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1383| 6212:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13949,1,@1385| 6213:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@13949,1,@1386| 6214:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1398| 6215:D5,1648|483b65187306ff5558ca0907504150415141524c8b7424284c3b35710600007502eb3d4c8b7424284d8b364e8d3475010000004983fe0175364c8b6c242849bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb0f49be00d9d0f1c27f0000e9d70000004c8b7424284d8b364e8d2475010000004983fc01750f49be3834d3f1c27f0000e9b20000004d89e54983c5244c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1da40500000f877a0500004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49bd3834d3f1c27f000048c7c125000000498d7508498d7e0848d1e9f3a44c8b6c24284c89e1498d7508498d7e1a48d1e9f3a4418066ffbf4d8b2e4e8d246d010000004983fc01750f49bd6034d3f1c27f0000e9ae0000004d89e34983c3444c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15ca0400000f87930400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb6034d3f1c27f000048c7c145000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d2a48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c706070000004156488b5424104889d8ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9834d3f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c706010000004156488b542418488b442428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd034d3f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424204d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bce89bd1f1c27f00004d89264d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d8974242049c74424180100000049c74424100100000049c74424080700000049c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100300000049c742080700000049c7020100000058488d6424184c8b4424184c8b4c241048c7c3030000004c8b34244c897424184883c418ff2559000000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@13964,1,@1390,@5990,@9493|64,0,@9493 98,0,@9571 135,0,@13958 272,0,@13958 345,0,@13959 483,0,@13959 657,0,@10236 701,0,@13960 863,0,@10236 908,0,@13962 1060,0,@10236 1105,0,@10967 1257,0,@10236 1336,0,@10236 1424,0,@10236 1590,0,@9487 1611,0,@9487 6216:D7,304|483b65187306ff5558ca0903504d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004d89460849bdd0725df1c27f00004d892e4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849be28735df1c27f00004d89304889d848bb1836d3f1c27f0000ff15e80000004989c641566a016a01488b44241848bb6836d3f1c27f00004989e0ff15bf000000ff3424488b442410ff15a900000048bad88ed1f1c27f0000488b0424488b5c2418ff15880000004989c6488d64241841f6c601752f488d6424104d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240848c700030000004883c408c3f400|@13973,1,@1397,@5268,@5239,@5234,@5108|46,0,@6217 90,0,@6218 106,0,@13970 136,0,@13972 169,0,@10895 6217:D3,48|483b65187305ff5558cd054c8b70084d8b2e4983fd01750a498b4618488b5208ff2248c7c001000000c3f40000000000|@13965,1,@1391| 6218:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b87835d3f1c27f000049b9c835d3f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@13969,1,@1394,@5104|26,0,@13966 36,0,@13968 6219:D3,16|483b65187305ff5558cd01c3f4000000|@13967,1,@1392| 6220:D3,16|483b65187305ff5558cd01c3f4000000|@13967,1,@1393| 6221:D3,16|483b65187305ff5558cd01c3f4000000|@13971,1,@1395| 6222:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@1396| 6223:D22,2736|483b65187305ff5558cd05524c8b20ff70184c8b702041f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca01184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0150ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c7060100000041564c8b70084983fe017569488b442408ff15cc0900004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c601751541ff364c8b7424184d8b76104d8b7668e9b206000049c7c501000000e9df05000041f6c60175124c8b7424104d8b76104d8b7668e9ea0200004c8b7424104d8b76104d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d2909000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9dc0100004d8b364d8b2e4c3b2dc508000075064d8b7610eb15488d64241848b87810d1f1c27f0000488b5d08ff23415648c7c001000000ff15910800004989c048ba8048d1f1c27f00004c8b7424184d8b4e08488b442410488b1c2449c7c201000000ff155d0800004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1dc606000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d5c06000075094d8b7610e9c9fdffff488d64241848b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d1c06000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9dc0100004d8b364d8b2e4c3b2db805000075064d8b7610eb15488d64241848b87810d1f1c27f0000488b5d08ff23415648c7c001000000ff15840500004989c048ba8048d1f1c27f00004c8b7424184d8b4e08488b442410488b1c2449c7c201000000ff15500500004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2876d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda836d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c341f6c60175454d8b264d8b6e084d8b1c244c3b1db903000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4f03000075094d8b7610e9c9fdffff488d64241848b87810d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c410c341f6c60175454d8b264d8b6e084d8b1c244c3b1d4802000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e91e0100004d8b364d8b2e4c3b2de401000075064d8b7610eb15488d64242048b87810d1f1c27f0000488b5d08ff23415648c7c001000000ff15b00100004989c048ba8048d1f1c27f00004c8b7424204d8b4e08488b442408488b1c2449c7c201000000ff157c0100004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486fd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be986dd1f1c27f00004d897500e9b4fdffff41f6c60175454d8b264d8b6e084d8b1c244c3b1da300000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3900000075094d8b7610e987feffff488d64242048b87810d1f1c27f0000488b5d08ff23f4|@13976,1,@1399,@4650,@4650,@5057,@5149,@4650,@4650,@4650,@4650,@5057,@5149,@4650,@4650,@4650,@4650,@5057,@5149,@4650,@4650,@5062|617,0,@10158 658,0,@9991 692,0,@10384 810,0,@10236 855,0,@10728 899,0,@10391 987,0,@10966 1032,0,@10672 1201,0,@10198 1246,0,@9991 1350,0,@10158 1391,0,@9991 1425,0,@10384 1543,0,@10236 1588,0,@10728 1632,0,@10391 1720,0,@10966 1765,0,@13974 1934,0,@10198 1979,0,@9991 2069,0,@10966 2114,0,@10660 2282,0,@10158 2323,0,@9991 2357,0,@10384 2475,0,@10966 2520,0,@10675 2564,0,@10659 2676,0,@10198 2721,0,@9991 6224:D4,184|483b65187306ff5558ca0d015250534150f6442408010f85900000004c8b742408498b1e4d89f641ff76084c8b442420498b78084d89c0498b70104d89c04d8b70184d89c04d8b68204d89c04d8b60284d89c04d8b58304d89c04d8b50384d89c04d8b48404d89c04d8b404841564155415441534152415141504989f24989f9488b4424504c8b442440ff15400000004989c4415d4c8924244c896c2408483b65187303ff5558e965ffffff584883c418c3f40000000000|@10041,1,@1403,@6225| 6225:D15,1160|483b65187306ff5558ca09074989c6415041524c8b234d89e54c3b25d804000075644c3b2dc70400007546ff73104c8b2c244d89ec41ff75084d89e44d89e541ff7424104d89ed41ff7518498b014c89f3ff15910400004989c641f6c60175084d8b36e99a03000049c7c601000000eb1e488d64241048b87810d1f1c27f0000488b5d08ff23488d64240858c2380041f6c6010f853503000041ff36488b04244c8b70084889c04c8b681849c7c4010000004d8d5ff04c3b5d107306ff5550ca01704d89df49c743f80100000041c643ff404d89234d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004c8b5424284d8954240849ba18865df1c27f00004d8914244d89234c8b5c24184d89dc4983fb01751e4983fe01750c49bea838d3f1c27f0000eb0a49bec038d3f1c27f0000eb5241f6c401751e41f6c601750c49bea838d3f1c27f0000eb0a49be2039d3f1c27f0000eb2e4983fe01750c49bee05fd1f1c27f0000eb1c41f6c601750c49beb05fd1f1c27f0000eb0a49bea838d3f1c27f00004d8b264983fc010f850002000041ff76084c8b4424784c8b4c24704c89e8488b5c2410ff152d0300004989c64d8b2e4983fd01757b488d64240841ff760848ba9899d1f1c27f0000488b442470488b5c24684c8b44246849b9f032d3f1c27f0000ff15e70200004889c2488b0424ff124989c0488d6424084c8b4c24584c8b5424684c8b7424504c8b6c24484c8b642440415641554154488b442418488b5c2438ff159f020000488d64243058c2380041ff76084c8b7424104d8b6e2841f6c50175124d8b6d004d8b6d0849c7450003000000eb004d89f64d8b763041f6c601756f41ff366a016a01488b44241848bb8039d3f1c27f00004989e0ff153d020000ff3424488b442410ff15270200004c8b6c24184d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424184d89ed4d897500488d642408eb004c8b7424204d8b2e4983fd010f85a10000004d89f64d8b6e084d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b7424104d897424184c8b34244d89742410488d6424084c8b34244d89742408488d64241049c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24284c8968084c89304883c430c23800488d64244058c238004d8b46084c8b4c24584c8b5424684c8b7424504c8b6c24484c8b642440415641554154488b5c2438ff15f3000000488d64243058c23800488d642418488b5c24384c8b4424484c8b4c24304c8b5424284c8b7424204156488b442408ff15b7000000488d64241058c2380041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158b00000075464d89de4c3b357700000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64243048b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e90dfcfffff40000000000|@14006,1,@1404,@4625,@4625,@6229,@6215,@5239,@5234,@6215,@5307,@6216,@4914,@4625,@4625|120,0,@9991 253,0,@6226 290,0,@13990 302,0,@13991 326,0,@13990 338,0,@13994 356,0,@10544 374,0,@10542 386,0,@13990 458,0,@10952 483,0,@13951 634,0,@13997 1111,0,@9991 6226:D9,1288|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f855a0200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3582040000750949c7c603000000eb2b4c3b3568040000750949c7c603000000eb194c3b354e040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2837d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be38c9d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1038d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@13989,1,@1401,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 294,0,@11514 342,0,@10391 387,0,@11357 538,0,@10236 583,0,@13977 668,0,@10414 689,0,@9475 739,0,@4755 922,0,@11514 970,0,@10391 1015,0,@11357 1166,0,@10236 1211,0,@13985 6227:D3,24|483b65187305ff5558cd0148b86012d1f1c27f0000c3f400|@10006,1,@1400|13,0,@10004 6228:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@1402| 6229:D5,1088|483b65187306ff5558ca09074989c64150415141524c8b6c24204c3b2d3f0400007502eb3f4c8b6c24204d8b6d004e8d2c6d010000004983fd0175374c8b64242049bdd8c8d0f1c27f0000498d742408498d7d0848c7c100000000483bc9f3a67402eb0f49bd00d9d0f1c27f0000e9db0000004c8b6c24204d8b6d004e8d1c6d010000004983fb01750f49bd3834d3f1c27f0000e9b50000004d89dc4983c4244c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156f0300000f87470300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca085c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1ec4d89650049bc3834d3f1c27f000048c7c125000000498d742408498d7d0848d1e9f3a44c8b6424204c89d9498d742408498d7d1a48d1e9f3a4418065ffbf4d8b65004e8d1c65010000004983fb01750f49bc6034d3f1c27f0000e9b30000004d89da4983c2444c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d910200000f875c0200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba6034d3f1c27f000048c7c145000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c242a48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000700000041554889da4c89f0ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9834d3f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080700000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc9039d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d57d04c3b55107306ff5550ca00404d89d749c742f8050000004d89722049c742180100000049c742100300000049c742080700000049c70201000000488b4424104c8b4424084159488d64241048c7c3030000004c8b34244c897424084883c408ff2557000000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01|@14007,1,@1405,@5990,@9493|67,0,@9493 102,0,@9571 140,0,@13958 278,0,@13958 354,0,@13959 494,0,@13959 669,0,@10236 714,0,@13960 817,0,@13998 865,0,@10236 1032,0,@9487 1053,0,@9487 6230:D5,224|483b65187306ff5558ca09074989c64d89c44d8b5e084c3b1de30000007502eb334d8b2b4e8d2c6d010000004983fd17752c49bdc8a1d1f1c27f0000498d7308498d7d0848c7c10b000000483bc9f3a67402eb0a48c7c001000000c21800488b034c8b6c24184c8b5c2410488b7c24084d8d47b04c3b45107306ff5550ca817e4d89c749c740f80900000048be303bd3f1c27f000049897040498978384d8958304d8960284d8968204d8950184d8970104d89480849be88915df1c27f00004d893048c7c3010000004c8b34244c897424184883c418ff251c000000f4000000|@14026,1,@1416,@4953,@10999|52,0,@10999 141,0,@14009 183,0,@6231 6231:D4,176|483b65187306ff5558ca0d015250534150f6442408010f85870000004c8b742408498b1e4d89f641ff76084c8b4c24204d8b41084d89c9498b79104d89c94d8b71184d89c94d8b69204d89c94d8b61284d89c94d8b59304d89c94d8b51384d89c94d8b49404156415541544153415241514989fa4d89c1488b4424484c8b442438ff15410000004989c4415d4c8924244c896c2408483b65187303ff5558e96effffff584883c418c3f4000000000000|@10041,1,@1413,@6232| 6232:D21,2504|483b65187306ff5558ca09075041514c8b334d89f54c3b354c0a00000f85910000004c3b2d370a00007573ff73104c8b2c244d89ee41ff75004d89f641ff76084d8d77e84c3b75107306ff5550ca00044d89f749c746f8020000004c8b6c24184d896e0849bde89c5df1c27f00004d892e4156498b02488b5c2428ff15d70900004989c641f6c60175084d8b36e9a108000049c7c601000000e95c030000488d64241048b87810d1f1c27f0000488b5d08ff234d89ee4c3b2d9309000075494c3b3582090000752bff7310498b02488b5c2410ff15670900004989c641f6c60175084d8b36e99002000049c7c601000000eb24488d64241048b87810d1f1c27f0000488b5d08ff23488d64241048c7c001000000c230004983fe0175355841584c8b4c24384c8b5424304c8b6c242848bb103cd3f1c27f00004c896c24384c8b7424084c897424304883c430ff25e60800004d8b364d8b76104c8b2c24498b5d10488d6424084c8b6c24304d8b6d004e8d2c6d010000004c8b5c24084d8b234e8d1465010000004983fd0175084d89dce9c10000004983fa01750a4c8b642430e9b10000004f8d4c15ff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05ed0700000f878c0100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca086f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c8b4c24304c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d730849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b800d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15110700000f87a30000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf488b5424184c89f041594c8b5424384c8b6c24304c8b6424204c8b5c24184c895c24284c896424304c896c24384c8b7424084c897424204883c420ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff2341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159b06000075464d89de4c3b358706000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64241848b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e91dfdffff4983fe017533488b4424185b4c8b4424184c8b4c24584c8b5424504c8b6c24484c896c24584c8b7424284c897424504883c450ff25ed05000041ff364c8b2c244d89ee41ff75004d89f64d8b76084c8b6c24204d8b5d184d89dc4d8b4b084d89ca4d8b094983f90375224d89d34d8b5b084c3b1da6050000750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84e50000004d89ed4d8b6424084d8b1c244983fb010f85980000004d8b5424184c8b24244d8b5c24184c8b6424584d3bd47d02eb7c4c8b6424584d2bd47115488d64244048b8d0c6d0f1c27f0000488b5d08ff234983c2014d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24504d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64244048b80017d1f1c27f0000488b5d08ff234c8b5c24504f896493fceb004d89ed4d8b6d184d8b6d084d8b5d004d89dc4983fb0375064d8b6d10eb654983fc0175064d8b6d08eb594d8b650849c7c501000000eb0f488d64244048c7c001000000c2300041f6c40175374d8b5424084d89eb4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c8b24244d8b6424184d8b6424084d8b14244d89d34983fa0375074d8b642410eb554983fb0175074d8b642408eb484d8b5c240849c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec744e488d64240858488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8703cd3f1c27f00004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff257e030000f644241801740949c7c503000000eb0749c7c5010000004983f5024983f5024983fd03745441f6c601744e488d64240858488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8c83cd3f1c27f00004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff25fd0200004c8b7424204d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc030f84e40100004d89ee4d8b76084d8b264d89e54983fc057515488d64244048b8a892d1f1c27f0000488b5d08ff234983fd0175294d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b76084983fe037502eb25488d642408eb124d8b76084d8b364983fe037411488d64240849c7c601000000e9190100004c8b34244d8b66184d89e54d8b6424084d8b24244983fc050f85a10000004d89f54d89ee41ff75004d89f6498b4608ff15160200004989c6498d47d0483b45107306ff5550ca00404989c748c740f80500000048c74020010000004c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c7000b00000048ba408fd1f1c27f000048bb183dd3f1c27f000049b8283dd3f1c27f0000ff15a30100004989c64983fe03750949c7c603000000eb0749c7c6010000004983f602eb564d89ee488d6424084d8b76084d8b264d89e54983fc057515488d64243848b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364983f6024983fe03754958488b5c241841594c8b5424184c8b6c24584c8b6424504c8b5c244849b8383dd3f1c27f00004c895c24484c896424504c896c24584c8b7424284c897424404883c440ff25d3000000488d642438eb05488d64244048c7c001000000c2300041f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159a00000075464d89de4c3b358600000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64243048b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e947fafffff400000000ffffffffffffff01ffffffffffffff01|@14025,1,@1414,@4626,@4626,@6215,@5304,@6239,@6215,@6215,@4659,@6229,@4628,@4628,@6229,@4914,@4628,@4628,@4914,@4626,@4626|102,0,@6233 165,0,@9991 250,0,@9991 305,0,@14015 618,0,@9571 855,0,@9487 876,0,@9487 975,0,@9991 1240,0,@9475 1323,0,@10034 1446,0,@9475 1565,0,@9475 1639,0,@14017 1760,0,@14019 1882,0,@10915 2099,0,@10896 2109,0,@14021 2119,0,@14022 2195,0,@10915 2290,0,@14023 2440,0,@9991 6233:D8,336|483b65187305ff5558cd054c8b72084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d5d01000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49be2028d1f1c27f0000eb464d8b364d8b2e4c3b2dfc0000007506498b5e10eb1048b87810d1f1c27f0000488b5d08ff2348ba3830d3f1c27f000049c7c10100000049b8403bd3f1c27f0000ff25bb00000041f6c60175454d8b264d8b6e084d8b1c244c3b1d9b00000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d360000007509498b5e10e95fffffff48b87810d1f1c27f0000488b5d08ff23f40000|@14014,1,@1409,@4650,@4650,@6201,@4650,@4650|109,0,@10158 142,0,@9991 158,0,@13933 175,0,@14010 279,0,@10198 319,0,@9991 6234:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@14013,1,@1407| 6235:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@14013,1,@1408| 6236:D3,248|483b65187305ff5558cd014c8b304d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf86ed1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f400000000|@14016,1,@1410|124,0,@10966 169,0,@10671 6237:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@13742,1,@1411| 6238:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@13742,1,@1412| 6239:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@1415| 6240:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9303ed3f1c27f0000ff251b000000f40000|@14049,1,@1426,@6244|31,0,@14028 6241:D5,400|483b65187305ff5558cd055248c7c001000000ff15970100004989c6415648c7c001000000ff157d0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd603ed3f1c27f00004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bca06ad1f1c27f00004d8966184c8b24244d8b642408488d6424084d89661049bc883ed3f1c27f00004d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bba83ed3f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000c3f4000000|@14037,1,@1418,@6243,@6242|124,0,@14030 138,0,@10632 217,0,@10632 249,0,@14031 298,0,@14032 6242:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@1420|89,0,@14034 6243:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@1419|33,0,@9475 88,0,@11193 6244:D4,160|483b65187306ff5558ca09034989c55349c7c4010000004d8d77f04c3b75107306ff5550ca00334d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca00634989c748c740f8050000004c8968204c8948184c8940104c89700849be78a55df1c27f00004c8930ff15400000004889c2488b0424ff124889c2488d64240848c7c001000000ff1248c7c001000000c3f40000000000|@14050,1,@1427,@5296|103,0,@6245 6245:D3,96|483b65187305ff5558cd054989c6498d47c8483b45107306ff5550ca04404989c748c740f8060000004c8b6a204c8968284c8b6a184c8968204c8b6a104c8968184c8b6a084c8968104c89700849be00a65df1c27f00004c8930c3f400000000|@14048,1,@1425|79,0,@6246 6246:D4,48|483b65187305ff5558cd05488b5a084c8b42104c8b4a184c8b52204c8b6a28ff34244c896c2408ff251b000000f40000|@14045,1,@1421,@6247| 6247:D8,1488|483b65187306ff5558ca09074150415141524c8b334983fe0d0f8594050000ff7308ff73104c8b7424084d8b364d8b364983fe030f856a050000488b1c2448c1eb034883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f814d1f1c27f0000ff158d0500004989c641f6c6010f84070500004983fe03750949c7c603000000eb0749c7c6010000004983fe030f85e00400004c8b742420498b06ff154a0500004989c54d8b75004a8d0c75010000004883f901750f49be98ddd0f1c27f0000e9910000004989cc4983c4024c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbe0400000f87630400004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646085f498d7508498d7e0948d1e9f3a4418066ffbf41564c8b6c24284d8b75004983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564d8d77e04c3b75107303ff55504d89f749c746f80300000049bd0840d3f1c27f00004d896e104c8b2c244d896e084c8b6c24084d892e4156488b54242848c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24184983e5094983fd01750949c7c403000000eb0749c7c4010000004983f4024d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004c8b1c244d895d10488d6424084d8965084d8975004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184d8974241049c7442408010000004c8b34244d89f54d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d89ed4d896e10488d64240849c746080100000049c7060b00000041564c8b5424204d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564c8b6c24404d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc4040d3f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb040d3f1c27f00004c8930ff154201000048bb4830d1f1c27f0000ff152a010000ff151c0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742420498b5660ff124c8b34244c8b6c24104d897500488d64240848c7c0010000004883c428c20800488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d642428eb1a488d64242848b80815d1f1c27f0000488b5d08ff23488d64242848c7c001000000c20800488d64241848c7c001000000c20800f40000000000ffffffffffffff01|@14046,1,@1422,@6249,@5030,@4836,@6248,@4933|109,0,@10021 205,0,@9620 387,0,@9475 532,0,@14041 1141,0,@14042 1189,0,@14044 1208,0,@10221 1402,0,@9487 1430,0,@10022 6248:D3,632|483b65187305ff5558cd01504c8b34244d89f54983fe350f8cbc0000004c89e849c7c63500000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c53500000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f04883e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e82cffffff4989c3eb0a49bbd8c8d0f1c27f00005849c7c63500000048d1f849d1fe489949f7fe4c8d2c55010000004983fd01750949c7c501000000eb344983fd017d0949c7c603000000eb0749c7c6010000004983fe017502eb164983c534711048b8d0c6d0f1c27f0000488b5d08ff234981c5c2000000711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d05e9f60000004981fdff0100000f8fe900000049be30c9d0f1c27f00004f8b6caefc4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d96000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b828d2d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@14047,1,@1424|161,0,@9475 193,0,@9475 219,0,@9493 307,0,@9475 332,0,@9475 372,0,@9496 589,0,@9487 605,0,@9507 6249:D3,264|483b65187305ff5558cd01a8010f85e20000004c8b28488b40084883f801754d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e866ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b86032d1f1c27f0000c3f400000000000000|@10239,1,@1423|190,0,@10236 247,0,@10237 6250:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b800d9d0f1c27f0000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@14049,1,@1430,@6251|40,0,@9571 218,0,@9487 6251:D4,104|483b65187306ff5558ca09014989c64d89c5488b034d8d47d84c3b45107306ff5550ca01604d89c749c740f8040000004d89681849bd7042d3f1c27f00004d8968104d89700849be10b25df1c27f00004d893048c7c301000000ff2520000000f400000000000000|@14053,1,@1431,@4953|54,0,@14051 72,0,@6252 6252:D4,112|483b65187306ff5558ca0d015250534150f64424080175514c8b742408498b1e4d89f641ff76084c8b7424204d8b4e084d89f64d8b56104d89f64d8b76184156488b4424204c8b442410ff15380000004989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c418c3f4|@10041,1,@1428,@6253| 6253:D8,880|483b65187306ff5558ca09074989c54c8b234d89e64c3b258c0300000f85ef0100004d8b314e8d2475010000004d8b75004e8d1c75010000004983fc017505e9b80000004983fb0175084d89cde9aa0000004f8d441cff4c89c04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d3c4501000000483b3de80200000f877b0100004889fe4c8d34b50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca883f4d89f748d1ee498976f841c646ff414883ef0249c744befc0000000049d1e84d89064c89e1498d7108498d7e0848d1e9f3a44983c4104c89d9498d75084d89e549d1ed4b8d3c2e48d1e9f3a4418066ffbf4d89f54d8b75004e8d3475010000004983fe01750f48b800d9d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d130200000f879e0000004d89d94a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca087c4989c749d1e94c8948f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604302e8060ffbf4c8b334c3b35e0010000751f4c8b7310498b5e104c89d24c8b4424084c8b34244c897424084883c408ff2248b87810d1f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234c3b35800100000f852b0100004d8b314e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89c8e9a20000004f8d5c26ff4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15d90000000f87b40000004d89d04a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca087e4989c749d1e84c8940f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89f1498d7108488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf4c8b334c3b3593000000752a4c8b7310498b5e184c8b44240849b9303ed3f1c27f00004c8b34244c897424084883c408ff255f00000048b87810d1f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff2348c7c001000000c20800f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14052,1,@1429,@6244,@4625,@4625,@4628,@4628|272,0,@9571 483,0,@9991 499,0,@9487 515,0,@9487 782,0,@14028 811,0,@9991 827,0,@9487 6254:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9303ed3f1c27f0000ff251b000000f40000|@14049,1,@1432,@6244|31,0,@14028 6255:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b800d9d0f1c27f0000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@14049,1,@1433,@6251|40,0,@9571 218,0,@9487 6256:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bce8ba5df1c27f00004d89204d8b65004e8d2465010000004983fc01750f49bb8043d3f1c27f0000e9ad0000004d89e24983c2104c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349ba8043d3f1c27f000048c7c111000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1048d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd18ced1f1c27f0000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb18ced1f1c27f000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@14056,1,@1435,@5990|55,0,@6257 86,0,@14055 223,0,@14055 291,0,@11298 449,0,@11298 651,0,@9487 667,0,@9487 6257:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14054,1,@1434,@5047| 6258:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@10820,1,@1436|41,0,@9998 6259:D4,48|483b65187305ff5558cd054989c6498b064d8b7608498b5e184c8b420849b9303ed3f1c27f0000ff251b000000f40000|@14049,1,@1437,@6244|31,0,@14028 6260:D4,248|483b65187305ff5558cd054989d64c8b184c8b68084d8b234e8d2465010000004983fc01750f48b800d9d0f1c27f0000e9950000004d89e24983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d8b00000077714d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89e1498d7308488d780848d1e9f3a44983c41049d1ec42c604202e8060ffbf498b5d104d8b4608ff253800000048b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@14049,1,@1438,@6251|40,0,@9571 218,0,@9487 6261:D4,704|483b65187306ff5558ca0d014989d64989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d8b66084d89600849bc18c05df1c27f00004d89204d8b65004e8d2465010000004983fc01750f49bbe043d3f1c27f0000e9ad0000004d89e24983c2144c89d04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d0c45010000004c3b0d250200000f87000200004c89cf4c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00774d89df48d1ef49897bf841c643ff414983e9024bc7448bfc0000000049d1ea4d891349bae043d3f1c27f000048c7c115000000498d7208498d7b0848d1e9f3a44c89e1498d7508498d7b1248d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd18ced1f1c27f0000e9b60000004d89e24983c2564c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d500100000f87230100004c89cf4c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049bb18ced1f1c27f000048c7c157000000498d730849d1ec4b8d7c250048d1e9f3a4418065ffbf4d8d67e84c3b65107306ff5550ca00614d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f80200000049c74508010000004d8965004d8d57d04c3b55107306ff5550ca00614d89d749c742f8050000004d896a2049c742180100000049c742100100000049c742080100000049c70201000000498b46104d8b4e1848c7c303000000ff254f00000048b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@14056,1,@1440,@5990|55,0,@6262 86,0,@14057 223,0,@14057 291,0,@11298 449,0,@11298 651,0,@9487 667,0,@9487 6262:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14054,1,@1439,@5047| 6263:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@10820,1,@1441|41,0,@9998 6264:D18,5464|488dbc2408ffffff483b7d187306ff5560ca090753415041514152ff30ff7008488b40104c8bac24e80000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e415648ba5802d3f1c27f0000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8b9424e0000000ff742430ff152f1500004989c641564c8bac24280100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb424f0000000498b968000000048c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408415649c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049be6086d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060500000041564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b6424104d89e64d8965104c8b24244d89e04d8965084c8b6424304c89e34d89650041554d89f6498b4610ff15831300004989c44983fc01750f49be4882d1f1c27f0000e9b700000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d961200007c15488d64246048b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017521418066ffbf41564c8b7424304d8b2e4c8b7424204d8b661049c7c601000000eb404d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eb9941f6c40175374d8b5424084d89f34983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34983ee014d03ee7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b6424304d89e64d892c244d89f641ff364c8b5c24284d8b334d89db4d8b6b084d89db4d8b63184d89db4d8b53204c8b9c24080100004c8b8424280100004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d8941184c8b4424084d8941104d89590849bbc8d65df1c27f00004d89194d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d89530849ba90d75df1c27f00004d891341534d8b1e4983fb030f85b10000004d8b5e084d8b76184d8b1b498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49ba4882d1f1c27f0000eb554d89f14c89c94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca42784d89d749d1e94d894af841c642ff404c89d748d1e948c7c001000000f348ab4c89f14c89d748d1e9f348a5418062ffbf4d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e0849c70601000000eb0041564d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24104d895e284c8b5c24084d895e204d89661849c74610010000004d896e084c8b2c244d892e4156ff353f10000048c7c015000000ff152a100000488b1424ff15181000004989c641564c8b7424704d89f54c3b35fc0f00007502eb404d89ed4d8b75004e8d3475010000004983fe010f854a01000049bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a60f85230100004c8bb424580100004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b24244d89e64d89650849bce0d75df1c27f00004d8965004c8b9c24600100004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004c8b5424384d89d14d895424184d895c24104d89f64d89f34d8974240849be80d85df1c27f00004d8934244c8b9424700100004d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d89c94d894e184d8956104d89db4d895e0849bb50d95df1c27f00004d891e498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933ff7424206a01488b4424284c8b44243049c7c10300000049bad8c8d0f1c27f0000ff15920e0000e9a30000004d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424484d8975184c8b7424104d8975104c8b7424404d8975084c8b6424704d89e64d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244c8b9c24600100004d89234c8b2424498b542450498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b6c24384d892e4c8b6c24684d8975004c8b24244d8b5c24304c8bb424200100004c8bac24280100004d8d47d84c3b45107306ff5550ca00784d89c749c740f8040000004d8958184d8968104d89700849be20da5df1c27f00004d89304d89e44d8b5c24404c8bb424100100004c8bac2418010000498d77d8483b75107306ff5550ca00794989f748c746f8040000004c895e184c896e104c89760849bea0da5df1c27f00004c89364d89e44d8b5c24604c8bb424000100004c8bac2408010000498d47d8483b45107306ff5550ca40794989c748c740f8040000004c8958184c8968104c89700849be20db5df1c27f00004c89304c8bb424f00000004c8bac24f8000000498d57d8483b55107306ff5550ca41714989d748c742f8040000004d89e44c896218488d6424084c896a104c89720849bea0db5df1c27f00004c89324c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b8c24c0000000488bbc24b8000000488b8c24b0000000488b9c24a80000004d8d57904c3b55107306ff5550cacf7b4d89d749c742f80d0000004989426049895a5849894a50498952484989724049897a384d8942304d894a284d895a204d8962184d896a104d89720849be3045d3f1c27f00004d8932498d5fe0483b5d107306ff5550ca00044989df48c743f8030000004c8b6c24584d89ee4c896b104c8b6c24504d89eb4c896b0849bd80de5df1c27f00004c892b4c8bac24280100004c8ba424480100004d8d4fc04c3b4d107306ff5550ca087c4d89cf49c741f8070000004d89db4d8959304d8961284c8b6424204d8961204c8b6424484d8961184c8b6424284d8961104d89690849bdd0e05df1c27f00004d89294d8d47e84c3b45107306ff5550ca08464d89c749c740f8020000004d89f64d89700849bed8e35df1c27f00004d89306a016a016a016a016a016a0148ba7888d1f1c27f00004c8bb424600100004c8bac24d00000004156ffb424b8000000ff35ea0a00005448830424184155488b8424e0000000ff15cc0a0000ff3424ff7424104c8b6c2420ff742428ff7424384c8b6424484d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d8966284c8b24244d8966204c8b6424084d8966184d896e104c8b6c24104d896e084c8b6c24184d892e41564c8bb424880100004d8b76184d8b364983fe037505e9ef0000004c8bac24d00000004d8b75004e8d3475010000004983fe01750f48b8c046d3f1c27f0000e9b40000004d89f44983c4064c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da10900000f87d30000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428284d89f549d1ed42c64428012949d1ee42c64430022e8060ffbf4c8b842488010000488b1c24ff155b090000488b0424ff1549090000488d642408488b44241848c7c30100000049b8d846d3f1c27f0000ff15200900004989c64c8bac24a00000004d8b6d0049c7c301000000eb18488da424e800000048b8f8c7d0f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd4882d1f1c27f0000e9bd00000049c7c4010000004d89dd41f6c50175394d8b4d084d89e24983c2027118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25ff0700007c18488da424e000000048b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017577418065ffbf4d8b65f849c1e40849c1ec074983cc014983fc01750f49bb4882d1f1c27f0000e99b0000004d89e24c89d14e8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02704d89df49d1ea4d8953f841c643ff404c89df48d1e948c7c001000000f348ab49c7c201000000eb444d8b134d8b4b084f8954a5fc4d89e24983c2027118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e93fffffff4d3bd47c21418063ffbf4d8b63f849c1e40849c1ec074983cc0149c7c601000000e97d0100004f8b4c95fc4d8b41084c89c7498b304883fe010f852a010000498b5008498b4818498b5820498b71104c89f04883e8014903c27118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234d8d47e84c3b45107306ff5550cacf7e4d89c749c740f8020000004989400849c700010000004989f9498b014889c74883f8057518488da424e000000048b8a892d1f1c27f0000488b5d08ff234883ff01751c4d8b4910498b394883ff0375094d8b4908498b39eb04498b7908eb074d8b4908498b394d8d4fe84c3b4d107306ff5550cace7d4d89cf49c741f8020000004989790849c70101000000498d7fd0483b7d107306ff5550ca4e7f4989ff48c747f80500000048895f2048894f184c894f104889570848c707010000004d8d4fe04c3b4d107306ff5550cac07d4d89cf49c741f80300000049897110498979084d8901eb004f894c93fc4d89d14983c1027118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234d89ca483b65187306ff5558ca007ce95dfeffff4983fc01751b41564d8b65f849c1e40849c1ec074983cc0149c7c601000000eb494d89e14983e9024d89e24983ea024f8b4493fc4d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8972084d89024d89cc4d89d6483b65187306ff5558ca0078eb964983fc010f85160400004c8bac24c80000004d8975004c8bac24800100004c8ba424a00100004d8d77c04c3b75107306ff5550ca00384d89f749c746f8070000004d8966304c8b6424784d89e24d8966284d895e204c8ba424a00000004d8966184c8ba424800000004d8966104d896e0849bda0e45df1c27f00004d892e4d8d67e04c3b65107306ff5550ca00444d89e749c74424f8030000004d897424104c8b7424084d8974240849bec0e55df1c27f00004d8934244c8b6c24204d8b75004983fe030f85b90000004d89ed4d8b75084d89ed4d8b6d184d8b36498b75004c8b6ef849c1e50849c1ed074983cd014983fd01750c49bb4882d1f1c27f0000eb554d89e94c89c94e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca42744d89df49d1e94d894bf841c643ff404c89df48d1e948c7c001000000f348ab4c89e94c89df48d1e9f348a5418063ffbf4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d895d104d89750849c7450001000000eb034d89ed4d8d77c84c3b75107306ff5550ca00344d89f749c746f8060000004d89d34d895e284d8966204c8b6424104d8966184c8b24244d8966104c8b6424184d8966084d892e4156488b0424ff153a0300004989c6415648c7c001000000488b5c2410ff151b0300004889c34883fb017504415eeb12488b0424ff15fc0200004989c6488d6424084c8bac24c00100004d8975004c8bac24d00100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000041564c8bb42498010000498b968000000048c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d64240849c7c6ffffffff4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be6086d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8965204c8b24244d896518488d6424084d8975104c8ba424d00000004d89e64d8965084c8ba424880000004d8965004155488b9424f8000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b2c244c8968084d89f64c8930ff124d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084c8bac24d80100004d89750048c7c0010000004881c4e8000000c2f0004d89e14983e9024d89e24983ea024d89e04983e8024b8b7c85fc4d8b43f849c1e00849c1e8074983c8014d3bd07218488da424e800000048b89011d1f1c27f0000488b5d08ff234f8b5493fc4d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8972084d89024d89cc4d89d6483b65187306ff5558ca0078e939fbfffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14070,1,@1463,@6286,@6188,@6161,@4953,@5993,@6251,@6007,@9493,@5348,@9493,@5076,@5347,@10448,@6285,@6013|127,0,@13667 424,0,@10839 608,0,@10817 657,0,@9475 707,0,@10818 862,0,@9475 923,0,@9475 973,0,@9475 1096,0,@6265 1144,0,@6266 1208,0,@10817 1499,0,@9493 1588,0,@6267 1667,0,@6268 1734,0,@6269 1808,0,@9493 2097,0,@6270 2173,0,@6271 2249,0,@6272 2325,0,@6273 2477,0,@14061 2541,0,@6278 2639,0,@6279 2686,0,@6281 2711,0,@10852 2922,0,@14066 3162,0,@14067 3210,0,@9487 3300,0,@10817 3352,0,@9475 3405,0,@10818 3526,0,@10817 3647,0,@9475 3785,0,@9475 3862,0,@10915 4069,0,@9475 4324,0,@6283 4380,0,@6284 4456,0,@10817 4987,0,@10839 5322,0,@9998 6265:D3,160|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4000000000000|@14058,1,@1442|57,0,@9998 84,0,@9475 133,0,@9998 6266:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1443,@5098| 6267:D3,120|483b65187305ff5558cd054c8b304c8b68084c8b62104d89e34d8b14244d8d67e84c3b65107306ff5550ca046c4d89e749c74424f8020000004d895424084d892c244d89234c8b6208498b542418498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff22f40000000000|@14059,1,@1444| 6268:D4,160|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e1849c7c001000000ff15900000004989c64c8b6c24084d8b65104d89e34d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d8934244d89ed4d89234d89ed4d8b6d08498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642410ff22f400|@14059,1,@1445,@5591| 6269:D4,160|483b65187305ff5558cd0552ff30488b40084c8b742408498b5e1849c7c001000000ff15900000004989c64c8b6c24084d8b65104d89e34d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d8934244d89ed4d89234d89ed4d8b6d08498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642410ff22f400|@14059,1,@1446,@5422| 6270:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@1447| 6271:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@1448| 6272:D3,88|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124883f801752c4c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3488d642410c3f4000000|@10369,1,@1449| 6273:D5,232|483b65187305ff5558cd05524c8b34244d8b7618498b564848c7c001000000ff124989c6415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b742410498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c89700849bec0dc5df1c27f00004c8930ff124c8b342441ff364c8b7424184d8b7608498b564848c7c001000000ff124889c34883fb0175075b4883c408eb12488b0424ff15450000004889c3488d6424104883fb017506584883c408c3584883c408ff251e000000f40000000000|@14060,1,@1451,@6276,@6275|127,0,@6274 6274:D3,72|483b65187305ff5558cd054c8b204c8b72084d89f54d8b1e4d8d77e84c3b75107306ff5550ca04384d89f749c746f8020000004d895e084d89264d89750048c7c001000000c3f400|@10812,1,@1450| 6275:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1453| 6276:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1452| 6277:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@14060,1,@1454| 6278:D5,536|483b65187305ff5558cd05524c8b304c8b68084c8b58104c8b50184c8b4820488b3c244c8b67104c89e64d8b24244d89e04983c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234889f74c89074983fd030f85be00000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd6086d1f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff1523010000e9b900000049c7c5ffffffff4d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d892849bd6086d1f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f80300000049897d104d89450849c7450005000000498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930ff155d0000004c8b2c244d8b75084d89f44d8b1e4d8d77e84c3b75107306ff5550ca01184d89f749c746f8020000004d895e084989064d89e5488d6424084d897500c3f400000000000000|@14062,1,@1455,@5249,@5248|62,0,@9475 136,0,@10839 326,0,@10839 6279:D3,448|483b65187305ff5558cd054c8b72304d8b3649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca04744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0450ebbd4983fc01750f49be4882d1f1c27f0000e9ad00000049c7c5010000004d89e641f6c60175314d8b56084d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0470ebc94c3b2dff0000007c1048b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca06104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01755a418066ffbf498d47c0483b45107306ff5550ca04404989c748c740f8070000004c8b6a284c8968304c8b6a204c8968284c8970204c8b72184c8970184c8b72104c8970104c8b72084c89700849beb8e25df1c27f00004c8930c34d8b1c244d8b5424084f895caefc4d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0470e962fffffff4000000000000ffffffffffffff01|@14064,1,@1457|100,0,@10817 144,0,@9475 189,0,@10818 359,0,@6280 396,0,@9475 6280:D3,248|483b65187305ff5558cd054989c54c8b72304d3bee7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34c8b62284d89e64d3bec7d544c8b72184d8b76284d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62204d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f400|@14063,1,@1456|54,0,@9998 101,0,@9475 150,0,@9998 177,0,@9475 226,0,@9998 6281:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@14065,1,@1458| 6282:D4,88|483b65187306ff5558ca090150534150f64424080175384c8b742408498b1e4d89f641ff7608488b4424184c8b442408ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1584883c410c3f40000|@10041,1,@1459,@6135| 6283:D3,248|483b65187305ff5558cd054989c54c8b72304d3bee7d334c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34c8b62284d89e64d3bec7d544c8b72184d8b76284d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62204d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f400|@14068,1,@1460|54,0,@9998 101,0,@9475 150,0,@9998 177,0,@9475 226,0,@9998 6284:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@1461,@5098| 6285:D4,136|483b65187306ff5558ca09014989c653415041f6c601755f498b0641ff7608488b5c24104c8b442408ff15710000004989c64156488b442408488b5c24184c8b442410e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@10112,1,@1465,@6287| 6286:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1464| 6287:D4,856|483b65187306ff5558ca090141504c8b304d8b364983fe010f85140300004c8b70084d89f54d8b364983fe01750949c7c603000000eb0749c7c6010000004983fe030f85e30200004c8b304d8b5e084d8b75084d8b6510498b7d18498b75204c8b68104d8b45004d8b55084d8b4d104d8d6fd04c3b6d107306ff5550cac85f4d89ef49c745f8050000004989752049897d184d8965104d89750849c7450001000000483b1dc70200007502eb374c8b234d89e64e8d2465010000004983fc01752b49bcd8c8d0f1c27f0000488d7308498d7c240848c7c100000000483bc9f3a67402eb084d89c6e9910100004e8d2475010000004983fc01750f48bf00d9d0f1c27f0000e99e0000004c89e74883c7024889f84883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d344501000000483b35170200000f87d70100004889f24c8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550cac83f4d89f748d1ea498956f841c646ff414883ee0249c744b6fc0000000048d1ef49893e4c89e1488d7308498d7e0848d1e9f3a44983c41049d1ec43c604262e418066ffbf4c89f74c8b374e8d2475010000004d8b304a8d1c75010000004983fc0175084d89c6e9b20000004883fb0175084989fee9a4000000498d741cff4889f04883c01e49c7c61100000048d1e849d1ee4833d249f7f6488d144501000000483b15410100000f87f40000004889d14c8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550cacc3f4d89f748d1e949894ef841c646ff414883ea0249c74496fc0000000048d1ee4989364c89e1488d7708498d7e0848d1e9f3a44983c4104889d9498d700849d1ec4b8d3c2648d1e9f3a4418066ffbf4d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d8934244d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b14244d895610488d6424084d895e0849c70609000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d642408eb05488d64240848b8d847d3f1c27f0000488b5d08ff23f4ffffffffffffff01ffffffffffffff01|@14074,1,@1466,@9493|195,0,@9493 252,0,@9571 776,0,@9487 797,0,@9487 825,0,@14071 6288:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8f848d3f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8e049d3f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8c04ad3f1c27f0000c3f400000000|@14098,1,@1468|26,0,@10414 49,0,@14077 69,0,@10414 86,0,@14084 103,0,@10414 114,0,@14091 6289:D5,136|483b65187305ff5558cd0d4989c65253498b06498b5e084d8b4610ff15870000004989c16a016a014c8b742410498b064d89f6498b5e084c8b7424184d8b56084d89f64d8b761041564c8d442408ff154c000000415e415d488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14148,1,@1531,@6290,@5683| 6290:D4,264|483b65187306ff5558ca09075341504883f801751c415e4c8b2c244d892e488d6424084d894e0848c7c001000000c208004c8b7424184d8d6fc04c3b6d107306ff5550ca01464d89ef49c745f8070000004c8b6424084d8965304d8975284d8955204d894d1849be084cd3f1c27f00004d8975104989450849be78ed5df1c27f00004d8975004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849c70609000000498d5fe8483b5d107306ff5550ca00424989df48c743f80200000048c74308010000004c89334883fb0175054d89ceeb0c4c89c8ff153a0000004989c6415d4c8b24244d896500488d6424084d89750848c7c001000000c20800f400|@14149,1,@1532,@6353|104,0,@14101 122,0,@6291 6291:D4,72|483b65187305ff5558cd05488b5a084989db4c8b4a104c8b42184c8b6a204c8b62284c8b5230415441534152ff7424184d89c249c7c0010000004c896c2420ff251b000000f40000|@14104,1,@1472,@6292| 6292:D4,592|483b65187306ff5558ca09074989db41f6c3010f8520020000498b1b4d8b73084c8b6c2410488b7c2408488b742420488b5424184d8d67c04c3b65107306ff5550cacc6f4d89e749c74424f807000000498954243049897424284d8954242049897c24184d896c24104d894c240849bd70f05df1c27f00004d892c244d8d6ff04c3b6d107306ff5550ca085f4d89ef49c745f8010000004d8965004983fe01750c49c7c601000000e926010000488b7c2420488b742418488b542410488b4c24084d8d67a84c3b65107306ff5550cace6f4d89e749c74424f80a00000049894c24484989542440498974243849897c24304d895424284d894c24204d894424184d895c241049bb684cd3f1c27f00004d895c240849bbf8f05df1c27f00004d891c244d8d5ff04c3b5d107306ff5550ca08774d89df49c743f8010000004d8923488b7c2420488b742418488b542410488b4c24084d8d67a84c3b65107306ff5550cace6f4d89e749c74424f80a00000049894c24484989542440498974243849897c24304d895424284d894c24204d895c24184d8974241049be684cd3f1c27f00004d8974240849be68f15df1c27f00004d8934244d8d77f04c3b75107306ff5550ca08314d89f749c746f8010000004d8926498d47e0483b45107306ff5550ca08614989c748c740f8030000004c8940104c8968084c89306a016a014c8b4c24304c8b5424284989e0ff1558000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c2200048b8c84cd3f1c27f0000488b5d08ff23f4000000000000|@14146,1,@1527,@6296|112,0,@6293 263,0,@14103 278,0,@6294 410,0,@14103 425,0,@6295 571,0,@14105 6293:D3,96|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284d8b763041564c8d442408ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14102,1,@1469| 6294:D3,72|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e20498b7e284d8b6e304d8b66384d8b5e404d8b5648415441534152ff7424184989fa4c896c2420ff22f400|@14104,1,@1470| 6295:D3,72|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e20498b7e284d8b6e304d8b66384d8b5e404d8b5648415441534152ff7424184989fa4c896c2420ff22f400|@14104,1,@1471| 6296:D8,712|483b65187306ff5558ca090750534150415141524d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849bef0f45df1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742428498b064d89f6498b5e084d89f64d8b4610ff15790200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d6fc84c3b6d107303ff55504d89ef49c745f8060000004c8b7424084c89f24d8975284c8b7424104d89f34d8975204c8b6424204d89e64d8965184c8b6424284c89e04d89651049bc604dd3f1c27f00004d89650849bc40f55df1c27f00004d8965004d89f64d8b164d89d44983fa010f85c90000004d89f6498b46084d89f641ff76104d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d89dc4d89660849bcc0f55df1c27f00004d89264d8d67f04c3b65107306ff5550ca01604d89e749c74424f8010000004d892c244d89e5498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15420100004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff151e0100004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89f64983fc030f859f0000004d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be9053d3f1c27f00004c8933ff15860000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15620000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c430c3488d6424084d89f6498b5e084889d2488d6424084889c04883c40841584883c410ff22f400|@14147,1,@1528,@6352,@5703,@6351,@5703,@5683|55,0,@6297 257,0,@14108 271,0,@6298 352,0,@6299 593,0,@14139 6297:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14107,1,@1473,@5047| 6298:D3,88|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204d8b56284989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14109,1,@1474| 6299:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@14137,1,@1517,@6300| 6300:D4,1032|483b65187306ff5558ca09035053415041514c8b5c24104d8b73284d8b264d89db4d8b3341ff76104d89db4d8b73084d89db4d89dd41ff73104d89ed4d89eb41ff75184d89db4d8b6b304d89db41ff733841f6c401750b4d8b24244d8b642420eb0749c7c40100000041546a016a014983fd0375744d8b2e4983fd05756b4d8b66084d8b34244d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c892c244c89742408eb0d48c70424010000004c89742408ff3424ff7424104c8b742460498b064d89f6498b5e084d89f64d8b4610ff15070300004989c44d8d4fd04c3b4d107306ff5550ca00104d89cf49c741f8050000004c8b7424484c89f24d8971204c8b7424584d8971184c8b7424604d89711049beb04dd3f1c27f00004d89710849be78fa5df1c27f00004d89314d8d47d04c3b45107306ff5550ca04124d89c749c740f80500000041c640ff4049c740200100000049c740180100000049c740100100000049c740080100000049c70001000000498d7fc0483b7d107306ff5550ca04134989ff48c747f807000000c647ff4048c747300100000048c747280100000048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d57c04c3b55107306ff5550ca84134d89d749c742f80700000041c642ff4049c742300100000049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c702010000004d8d77c84c3b75107306ff5550ca84174d89f749c746f80600000041c646ff4049c746280100000049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bdf0fa5df1c27f00004d89c34d894b204d89531849897b10488b7424084889f1498973084d892b418060ffbf49bd401b5ef1c27f00004989fb4889c94889ce49894b304d8953284d8943204d894b18488b0c2449894b10488d6424084889d2498953084d892b8067ffbf49bd301c5ef1c27f00004d89d34889f649897330488d64241849897b284d8943204d894b184d8973104c8b4424204d8943084d892b418062ffbf49bd481d5ef1c27f00004d89f34d894b284d8953204c8b14244d895318488d6424084c8b14244d895310488d6424084c8b14244d895308488d6424084d892b418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c8b6c24184c8b24244d896500488d6424304d89750848c7c001000000c3f400000000|@14138,1,@1518,@5683|343,0,@14110 357,0,@6301 693,0,@6302 738,0,@6337 800,0,@6338 858,0,@6339 6301:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@14111,1,@1475| 6302:D4,248|483b65187305ff5558cd054d8d6ff04c3b6d107305ff5550cd044d89ef49c745f8010000004c8b72204d8975004d8d67f04c3b65107306ff5550ca04204d89e749c74424f8010000004c8b72184d8934244d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004c8b5a104d891e498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8960104c8968084c89304c8b6a084d89ee4983fd01751048b80895d1f1c27f0000488b5d08ff234d8b36498b1e6a016a014989e0ff1547000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14132,1,@1507,@6303|168,0,@10926 6303:D8,568|483b65187306ff5558ca0901505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bea0fe5df1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15ed0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424104d89f54d897424104c8b7424184d8974240849bef0fe5df1c27f00004d8934244d89ed4d8b5d004d89de4983fb05752c4c8b6c240849be089ed1f1c27f00004d8975004c8b34244d897508488d64241048c7c0010000004883c410c34d89ed4983fe010f859f0000004d89ed498b45084d89ed41ff75104d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be984ed3f1c27f00004c8933ff15d00000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15ac0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34d89ed4d89ee41ff75104d89f64d8b7618498b06ff15650000004c8b7424084c89f34983fe0175054989c6eb09ff15440000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c3f4000000000000|@14133,1,@1508,@6336,@5717,@6335,@5703,@5683|51,0,@6304 229,0,@6305 264,0,@10983 391,0,@14115 6304:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14112,1,@1476,@5050| 6305:D3,88|483b65187305ff5558cd054989d66a016a0148ba504ed3f1c27f0000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14114,1,@1477|20,0,@14113 6306:D3,80|483b65187305ff5558cd014989c66a016a0148baa84ed3f1c27f0000498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14131,1,@1506|20,0,@14116 6307:D9,1552|483b65187306ff5558ca0901505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849be50065ef1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15cd0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d57e04c3b55107303ff55504d89d749c742f8030000004c8b6c24104d89ee4d896a104c8b6c24184c89e84d896a0849bda0065ef1c27f00004d892a4d89f64d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e949000000909090e938020000909090e9cf020000909090e9f3020000909090e98a030000909090488d6424084d89f6498b5e0848ba5089d1f1c27f00004889c04158488d642410ff25ed0400004d89f64d8b66084d89f64d8b5e104d89f64d8b76184d8b2b4d8b5b0841f6c6010f8535010000498b36498d7fd8483b7d107306ff5550ca403c4989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d77d04c3b75107306ff5550cac03c4d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049b920075ef1c27f00004989f84d8950184d897010498970084d89088067ffbf49b918085ef1c27f00004d89f04d895020498978184d8958104d8968084d8908418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d4d8965004d89750848c7c0010000004883c410c34d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d896e0849bd100b5ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d4d8965004d89750848c7c0010000004883c410c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01044d89f749c746f8010000004d8916498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bea84fd3f1c27f00004c8933ff15900200004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff156c0200004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34c8b6c240849be089ed1f1c27f00004d8975004c8b34244d897508488d64241048c7c0010000004883c410c34d89f6498b46084d89f641ff76104d8d77f04c3b75107306ff5550ca01044d89f749c746f8010000004d8916498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bee84fd3f1c27f00004c8933ff15b50100004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15910100004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c420c34d89f54d8b65084d89ed4d8b75104d89ed498b75184d8b0e4d8b4608498d7fd8483b7d107306ff5550ca40174989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d77d04c3b75107306ff5550cac0174d89f749c746f80500000041c646ff4049c746200100000049c746180100000049c746100100000049c746080100000049c7060100000049bd30155ef1c27f00004989fb4d8953184d897310498973084d892b8067ffbf49bd28165ef1c27f00004d89f34d89532049897b184d8943104d894b084d892b418066ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e415d488d6424084d8965004d89750848c7c0010000004883c408c3f4|@14130,1,@1503,@6334,@5703,@6333,@5703,@5670,@5683|51,0,@6308 229,0,@6309 323,0,@10857 523,0,@6310 555,0,@6311 735,0,@6315 927,0,@14121 1016,0,@10983 1130,0,@14123 1375,0,@6328 1407,0,@6329 6308:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14117,1,@1478,@5141| 6309:D3,88|483b65187305ff5558cd054989d66a016a0148baa84ed3f1c27f0000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14118,1,@1479|20,0,@14116 6310:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba3892d2f1c27f0000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14119,1,@1480,@5690|133,0,@12801 6311:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bda0095ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@14120,1,@1482,@6314,@6313,@5683|137,0,@6312 6312:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1481| 6313:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1484| 6314:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1483| 6315:D6,304|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b76184c893348c7c00100000049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd800c5ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15790000004889c34883fb01750949c7c601000000eb1048c7c001000000ff15520000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4000000000000|@14120,1,@1486,@6318,@6317,@5683|107,0,@6316 6316:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1485| 6317:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1488| 6318:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1487| 6319:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14122,1,@1489,@6303| 6320:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14128,1,@1496,@6321| 6321:D4,432|483b65187306ff5558ca09014989c64150ff334c8b53084c8b4b104c8b6b18498b7500498d7fe0483b7d107306ff5550ca48464989ff48c747f80300000048895f104c89770849bdd0105ef1c27f00004c892f4d8d47d84c3b45107306ff5550cac0464d89c749c740f80400000041c640ff4049c740180100000049c740100100000049c740080100000049c700010000004d8d67d04c3b65107306ff5550cac0474d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd50115ef1c27f00004d89c349897b184d896310498973084d892b418060ffbf49bd38125ef1c27f00004d89e349897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15670000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f40000|@14129,1,@1497,@5683|72,0,@6322 226,0,@6323 259,0,@6324 6322:D3,88|483b65187305ff5558cd054989d66a016a0148baf84fd3f1c27f0000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14125,1,@1490|20,0,@14124 6323:D3,192|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba504ed3f1c27f0000498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@14126,1,@1491|133,0,@14113 6324:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bdc0135ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@14127,1,@1493,@6327,@6326,@5683|137,0,@6325 6325:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1492| 6326:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1495| 6327:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1494| 6328:D4,200|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e104d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a0148ba3892d2f1c27f0000498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14119,1,@1498,@5690|133,0,@12801 6329:D6,328|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b76184c893049c7c001000000ff150f0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bdb0175ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15730000004889c34883fb01750949c7c601000000eb1048c7c001000000ff154c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@14120,1,@1500,@6332,@6331,@5683|137,0,@6330 6330:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1499| 6331:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1502| 6332:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1501| 6333:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1505| 6334:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1504| 6335:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1510| 6336:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1509| 6337:D3,200|483b65187305ff5558cd054989d64d8b6e304983fd0174064d8b5e20eb044d8b5e284d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14134,1,@1511| 6338:D4,232|483b65187305ff5558cd054c8b72304983fe0174064c8b5a20eb044c8b5a284d8d6ff04c3b6d107306ff5550ca04084d89ef49c745f8010000004c8b72184d8975004d8d67f04c3b65107306ff5550ca04284d89e749c74424f8010000004c8b72104d8934244d8d77f04c3b75107306ff5550ca04384d89f749c746f8010000004d891e498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8960104c8968084c89306a016a01488b5a084989e0ff1545000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14135,1,@1512,@6303| 6339:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bdb81f5ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@14136,1,@1514,@6342,@6341,@5683|372,0,@6340 6340:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1513| 6341:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1516| 6342:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1515| 6343:D4,80|483b65187305ff5558cd014989c66a016a01498b06498b5e084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14144,1,@1525,@6344| 6344:D4,456|483b65187306ff5558ca09014989c641504c8b6b104d8b6d004d8b4518ff334c8b53084c8b4b18488b5320498d77e0483b75107306ff5550ca0c474989f748c746f80300000048895e104c89760849bda0235ef1c27f00004c892e498d7fd8483b7d107306ff5550ca44474989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d67c84c3b65107306ff5550cac4474d89e749c74424f80600000041c64424ff4049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c704240100000049bd20245ef1c27f00004989fb498973184d896310498953084d892b8067ffbf49bd08255ef1c27f00004d89e34989732849897b204d8943184d894b104d8953084d892b41806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff156c0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c3f400000000000000|@14145,1,@1526,@5683|80,0,@6345 242,0,@6346 274,0,@6347 6345:D3,88|483b65187305ff5558cd054989d66a016a0148baa053d3f1c27f0000498b4608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000000000|@14141,1,@1519|20,0,@14140 6346:D4,184|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a184d892e4d8d6ff04c3b6d107306ff5550ca04404d89ef49c745f8010000004c8b62104d896500498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c700010000006a016a01488b5a084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14142,1,@1520,@6303| 6347:D6,560|483b65187305ff5558cd0552498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244d8b6e284c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004d89f64d8b6e204c89284d89f64d8b6e1849c7c60100000041f6c5010f85d00000004d8b5d004d8b65084d8b0b4d89ca4983f905754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca09784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca09744d89df49c743f8020000004d8973084d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0960e926ffffff415649c7c001000000ff150d0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d8b6d084d896e0849bd78275ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f4|@14143,1,@1522,@6350,@6349,@5683|372,0,@6348 6348:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1521| 6349:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1524| 6350:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1523| 6351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1530| 6352:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1529| 6353:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1533| 6354:D12,1752|483b65187306ff5558ca0d0152505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bec8315ef1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15ac0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424104d89f54d897424184c8b7424184d897424104c8b5c24204d89de4d895c240849bb18325ef1c27f00004d891c244d89ed4d8b55004d89d34983fa050f854d0100004d89ed4d8b6d084d8b4500498b75084d8b5d18498d7fd8483b7d107306ff5550ca40594989ff48c747f804000000c647ff4048c747180100000048c747100100000048c747080100000048c707010000004d8d57d04c3b55107306ff5550cac0594d89d749c742f80500000041c642ff4049c742200100000049c742180100000049c742100100000049c742080100000049c7020100000049bd90325ef1c27f00004989f94d8961184d895110498971084d89298067ffbf49bd78335ef1c27f00004d89d14d896120498979184d8941104d89f64d8971084d8929418062ffbf4d8d6fe84c3b6d107306ff5550ca000c4d89ef49c745f8020000004d89550849c74500090000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b24244d896608488d6424084d892e415d488d6424084d895d004d89750848c7c0010000004883c410c34d89ed4d89da4983fb030f85bf0100004d89eb4d89dd41ff73084d89ed498b45104d89ed41ff751849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d004d8d57e04c3b55107306ff5550ca01704d89d749c742f8030000004d89f34d8b73184d8972104d89db4d8b73104d89720849be58345ef1c27f00004d89324d89d64d8975004d8d6fe04c3b6d107306ff5550ca01184d89ef49c745f8030000004d89db4d89de4d895d104d89f64d8b76084d89750849beb0395ef1c27f00004d8975004d8d77f04c3b75107306ff5550ca01304d89f749c746f8010000004d89264d89f44d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156ff15a70300004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24104d896e0849c70603000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb017502eb06ff1541030000488b1c24ff152f030000488d6424084c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15060300004989c64c8b6c24184c8b24244d896500488d6424084d89750848c7c0010000004883c430c34d89ed4d89d34983fa010f85830100004d89ed4d8b5508498b0a4d8b4a084d8b6a204d8b5a284d8b42304d8b6d004983fd01750948c7c701000000eb084d8b6d00498b7d20498d77d0483b75107306ff5550ca825b4989f748c746f805000000c646ff4048c746200100000048c746180100000048c746100100000048c746080100000048c706010000004d8d57c84c3b55107306ff5550cac25b4d89d749c742f80600000041c642ff4049c742280100000049c742200100000049c742180100000049c742100100000049c742080100000049c7020100000049bd683a5ef1c27f00004889f24c8962204c89521848894a104d89f64c8972084c892a8066ffbf49be483b5ef1c27f00004d89d54d8965284989752049897d184d8945104d894d084d897500418062ffbf4d8d6fe84c3b6d107306ff5550ca000c4d89ef49c745f8020000004d89550849c74500090000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b24244d896608488d6424084d892e415d4d895d004d89750848c7c0010000004883c418c34d89ed4983fb070f859d0000004d89ed498b45084d89ed41ff75104d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084d89f64d8b76204c8933ff15dd0000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15b90000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c34d89ed4d8b75104d89ed41ff75184d8b364983fe01750948c7c001000000eb074d8b36498b4618ff155f0000004c8b7424084c89f34983fe0175054989c6eb09ff153e0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f4|@14168,1,@1545,@6367,@5717,@6368,@5703,@6369,@5703,@6370,@6366,@5683|52,0,@6355 243,0,@6356 429,0,@6357 461,0,@6358 742,0,@6359 810,0,@6360 1291,0,@6361 1330,0,@6362 6355:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14152,1,@1534,@5202| 6356:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14153,1,@1535| 6357:D4,184|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a184d892e4d8d6ff04c3b6d107306ff5550ca04404d89ef49c745f8010000004c8b62104d896500498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c89700848c700010000006a016a01488b5a084989e0ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14154,1,@1536,@6303| 6358:D3,184|483b65187305ff5558cd054989d64d8d67f04c3b65107306ff5550ca00404d89e749c74424f8010000004d8b6e204d892c244d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8b5e184d895d00498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89286a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14155,1,@1537| 6359:D9,1280|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f855a0200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b357a040000750949c7c603000000eb2b4c3b3560040000750949c7c603000000eb194c3b3546040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7857d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5058d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14164,1,@1538,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 294,0,@11514 342,0,@10391 387,0,@11357 538,0,@10236 583,0,@14156 668,0,@10414 689,0,@9475 916,0,@11514 964,0,@10391 1009,0,@11357 1160,0,@10236 1205,0,@14163 6360:D3,144|483b65187305ff5558cd054989c6498b064d8b76084d8b2e4983fd017538498b5e086a016a01488b52084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3498b5e086a016a01488b52104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@14165,1,@1539| 6361:D3,184|483b65187305ff5558cd054989d64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8b66204d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8b5e184d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14166,1,@1540| 6362:D7,368|483b65187305ff5558cd05524d8d6ff04c3b6d107303ff55504d89ef49c745f8010000004c8b34244d8b66284d89650041554d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d89f64d8b66204d89650041554d89f6498b4618ff15390100004989c64156488b442408488b5c241049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd003d5ef1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15780000004889c34883fb017508415e4883c410eb12488b0424ff15550000004989c6488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@14167,1,@1542,@6365,@6364,@5683,@5717|172,0,@6363 6363:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1541| 6364:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1544| 6365:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1543| 6366:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706010000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1550| 6367:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1546| 6368:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1547| 6369:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1548| 6370:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1549| 6371:D3,9352|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f85d30b00004d89f54d8b750841ff751041ff75184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdb86fd1f1c27f0000e95d0a00004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be08c8d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e90a0900004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424184d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424284d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d084d896e0849bde8655ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00f3d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8c6d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd005ad3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34d89f44d8b364983fe030f85470c00004d89e64d8b660841ff761041ff76184983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64242049bdb86fd1f1c27f0000e9d10a00004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d104d896e0849bde0665ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104d89f54983fe037d0f49beb86fd1f1c27f0000e9090900004d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24304d8b6d104d896e0849bd20675ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424304d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424384d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424404d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424484d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424504d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0d2d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea826d2f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf85ad3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c341ff7424084d8b6c241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb86fd1f1c27f0000e9720a00004d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd60675ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e9aa0800004d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b8605cd3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed05cd3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40fad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be105dd3f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd485dd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@14178,1,@1560|32,0,@10414 91,0,@9475 125,0,@10678 154,0,@9475 204,0,@4736 238,0,@10678 269,0,@9475 303,0,@10678 341,0,@9475 391,0,@4699 425,0,@10678 463,0,@9475 513,0,@4699 547,0,@10678 584,0,@9475 634,0,@4615 668,0,@10678 706,0,@9475 756,0,@4699 801,0,@9475 851,0,@4699 896,0,@10681 944,0,@10236 989,0,@11391 1033,0,@10236 1078,0,@10685 1166,0,@10236 1210,0,@11393 1255,0,@10236 1299,0,@10685 1387,0,@10236 1432,0,@11395 1476,0,@10236 1521,0,@10685 1609,0,@10236 1653,0,@11397 1698,0,@10236 1742,0,@10685 1830,0,@10236 1875,0,@11399 1923,0,@10688 2017,0,@9475 2074,0,@4696 2126,0,@6372 2239,0,@10681 2288,0,@10236 2332,0,@13554 2377,0,@10236 2421,0,@10685 2509,0,@10236 2554,0,@12559 2598,0,@10236 2643,0,@10685 2731,0,@10236 2775,0,@13170 2824,0,@10688 2969,0,@10236 3014,0,@14171 3104,0,@10414 3159,0,@9475 3193,0,@10678 3222,0,@9475 3274,0,@4691 3326,0,@6374 3423,0,@10678 3452,0,@9475 3509,0,@4691 3561,0,@6375 3662,0,@9475 3696,0,@10678 3734,0,@9475 3784,0,@4699 3818,0,@10678 3856,0,@9475 3906,0,@4699 3940,0,@10678 3977,0,@9475 4027,0,@4615 4061,0,@10678 4099,0,@9475 4149,0,@4699 4194,0,@9475 4244,0,@4699 4289,0,@10681 4337,0,@10236 4382,0,@11391 4426,0,@10236 4471,0,@10685 4559,0,@10236 4603,0,@11393 4648,0,@10236 4692,0,@10685 4780,0,@10236 4825,0,@11395 4869,0,@10236 4914,0,@10685 5002,0,@10236 5046,0,@11397 5091,0,@10236 5135,0,@10685 5223,0,@10236 5268,0,@11399 5316,0,@10688 5419,0,@10681 5468,0,@10236 5512,0,@13619 5557,0,@10236 5601,0,@10685 5689,0,@10236 5734,0,@13275 5782,0,@10236 5827,0,@10685 5915,0,@10236 5959,0,@12021 6008,0,@10688 6153,0,@10236 6198,0,@14179 6288,0,@10414 6327,0,@9475 6361,0,@10678 6390,0,@9475 6442,0,@4691 6494,0,@6376 6591,0,@10678 6622,0,@9475 6656,0,@10678 6694,0,@9475 6744,0,@4699 6778,0,@10678 6816,0,@9475 6866,0,@4699 6900,0,@10678 6937,0,@9475 6987,0,@4615 7021,0,@10678 7059,0,@9475 7109,0,@4699 7154,0,@9475 7204,0,@4699 7249,0,@10681 7297,0,@10236 7342,0,@11391 7386,0,@10236 7431,0,@10685 7519,0,@10236 7563,0,@11393 7608,0,@10236 7652,0,@10685 7740,0,@10236 7785,0,@11395 7829,0,@10236 7874,0,@10685 7962,0,@10236 8006,0,@11397 8051,0,@10236 8095,0,@10685 8183,0,@10236 8228,0,@11399 8276,0,@10688 8370,0,@9475 8427,0,@4696 8440,0,@14191 8496,0,@10681 8545,0,@10236 8589,0,@14195 8634,0,@10236 8678,0,@10685 8766,0,@10236 8811,0,@13619 8855,0,@10236 8900,0,@10685 8988,0,@10236 9032,0,@14197 9081,0,@10688 9226,0,@10236 9271,0,@14199 6372:D3,144|483b65187305ff5558cd054989d55049be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bda0665ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c258ff22f40000000000|@11133,1,@1552|17,0,@4691 65,0,@6373 6373:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14170,1,@1551| 6374:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14178,1,@1553| 6375:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14178,1,@1554| 6376:D3,5456|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9b21400004d89ed4d8b75004d8b76204d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424084d8b66084d89e54983fc037d0f49beb86fd1f1c27f0000e9501300004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104d8b75084d89f44983fe057d0f49bdb86fd1f1c27f0000e9740b00004d89ed4d8b75004d8b76084d89e54983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d8b66084d89e54983fc077d0f49beb86fd1f1c27f0000e9160a00004d89f64d8b2641ff7424284d89ee4983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d8b6e084d89ec4983fd097d0f49bdb86fd1f1c27f0000e9390200004d89f64d8b2e4d8b6d184983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8885bd3f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24304d8b75004d8b76104d89ed4d8b6d084983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd88e6d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef85bd3f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd589ed2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40fad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be285cd3f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@9836,1,@1557|37,0,@10678 77,0,@9475 127,0,@4698 165,0,@10678 206,0,@9475 240,0,@10678 278,0,@9475 328,0,@4699 362,0,@10678 400,0,@9475 450,0,@4699 484,0,@10678 521,0,@9475 571,0,@4615 605,0,@10678 643,0,@9475 693,0,@4699 738,0,@9475 788,0,@4699 833,0,@10681 881,0,@10236 926,0,@11391 970,0,@10236 1015,0,@10685 1103,0,@10236 1147,0,@11393 1192,0,@10236 1236,0,@10685 1324,0,@10236 1369,0,@11395 1413,0,@10236 1458,0,@10685 1546,0,@10236 1590,0,@11397 1635,0,@10236 1679,0,@10685 1767,0,@10236 1812,0,@11399 1860,0,@10688 1956,0,@10678 1996,0,@9475 2046,0,@4615 2084,0,@10678 2126,0,@9475 2160,0,@10678 2198,0,@9475 2248,0,@4699 2282,0,@10678 2320,0,@9475 2370,0,@4699 2404,0,@10678 2441,0,@9475 2491,0,@4615 2525,0,@10678 2563,0,@9475 2613,0,@4699 2658,0,@9475 2708,0,@4699 2753,0,@10681 2801,0,@10236 2846,0,@11391 2890,0,@10236 2935,0,@10685 3023,0,@10236 3067,0,@11393 3112,0,@10236 3156,0,@10685 3244,0,@10236 3289,0,@11395 3333,0,@10236 3378,0,@10685 3466,0,@10236 3510,0,@11397 3555,0,@10236 3599,0,@10685 3687,0,@10236 3732,0,@11399 3780,0,@10688 3876,0,@10678 3912,0,@9475 3964,0,@4696 3977,0,@14183 4034,0,@9475 4128,0,@10681 4176,0,@10236 4221,0,@11492 4265,0,@10236 4310,0,@10685 4398,0,@10236 4442,0,@14187 4491,0,@10236 4535,0,@10685 4623,0,@10236 4668,0,@12858 4712,0,@10236 4757,0,@10685 4845,0,@10236 4889,0,@10683 4934,0,@10236 4978,0,@10685 5066,0,@10236 5111,0,@13619 5155,0,@10236 5200,0,@10685 5288,0,@10236 5332,0,@14189 5381,0,@10688 6377:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b8c05bd3f1c27f0000ff124889c258ff22f400000000|@12785,1,@1556|14,0,@4617 27,0,@14185 6378:D3,32|483b65187305ff5558cd0149be38c8d0f0c27f0000498b16ff22f40000000000|@13300,1,@1555|13,0,@4739 6379:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8985cd3f1c27f0000ff124889c258ff22f400000000|@11133,1,@1559|14,0,@4691 27,0,@14193 6380:D3,32|483b65187305ff5558cd0149be28c9d0f0c27f0000498b16ff22f40000000000|@12572,1,@1558|13,0,@4754 6381:D12,2696|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe010f85d30200004d8b74240841ff7424104983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9620100004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be78c9d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd505fd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc030f85600200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849be38c8d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b351d070000750949c7c603000000eb2b4c3b3503070000750949c7c603000000eb194c3b35e9060000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2860d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd050f85600200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be48c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3580040000750949c7c603000000eb2b4c3b3566040000750949c7c603000000eb194c3b354c040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0861d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef8c7d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f4010000750949c7c603000000eb2b4c3b35da010000750949c7c603000000eb194c3b35c0010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde061d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14170,1,@1562,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 79,0,@9475 113,0,@11126 142,0,@9475 192,0,@4615 228,0,@9475 283,0,@4759 328,0,@11355 376,0,@10236 421,0,@10685 513,0,@11357 658,0,@10236 703,0,@14216 788,0,@10414 826,0,@9475 876,0,@4739 1059,0,@11514 1107,0,@10391 1152,0,@11357 1303,0,@10236 1348,0,@14223 1433,0,@10414 1471,0,@9475 1521,0,@4692 1704,0,@11514 1752,0,@10391 1797,0,@11357 1948,0,@10236 1993,0,@14230 2078,0,@10414 2099,0,@9475 2149,0,@4735 2332,0,@11514 2380,0,@10391 2425,0,@11357 2576,0,@10236 2621,0,@14237 6382:D3,768|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e96d0100004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd505ed3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14215,1,@1561|32,0,@10414 58,0,@9475 92,0,@11126 129,0,@9475 179,0,@4615 224,0,@9475 318,0,@11355 366,0,@10236 411,0,@10685 503,0,@11357 648,0,@10236 693,0,@14208 6383:D3,19904|483b65187305ff5558cd05524c8b70084d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34c8b304d89f54d8b364983fe010f855f19000041ff75084983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e9f41700004c8b7424084d8b364d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7610498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e99a1600004c8b7424104d8b6e104d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8e862d3f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24184d89ee4983fd057d0f49bdb86fd1f1c27f0000e92a1500004c8b6c242041ff75284d89f64983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204d89f44983fe077d0f49beb86fd1f1c27f0000e9520d00004c8b7424284d8b6e384d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd68dd5ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424304d89f54983fe097d0f49bdb86fd1f1c27f0000e9820b00004c8b7424384d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24384d89ee4983fd0b7d0f49beb86fd1f1c27f0000e92a0a00004c8b6c244041ff75304d89f64983ee0241567115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9290600004c8b7424084d8b76084d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9ce0400004c8b7424104d8b76184d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9760300004c8b7424184d8b364d89ed4983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e9200200004c8b7424204d8b76104d89ed4983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424404d89f44983fe0d7d0f49bdb86fd1f1c27f0000e9500200004c8b7424484d8b6e184d89e44983ec027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b8b863d3f1c27f0000ff124889c2488b0424ff124989c641564c8b7424584d8b6e204c8b6424504983ec027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b82864d3f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf85bd3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec065d3f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd589ed2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf065d3f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70edd2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3066d3f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be50e1d1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6066d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c34d89ec4d8b6d004983fd030f85d10b00004d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e95b0a00004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7610498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9090900004d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d184d896e0849bde0ec5ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184983ee0241567115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb0d2d2f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea826d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4067d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34d89e64d8b24244983fc050f85fa0f000041ff76084983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e98f0e00004c8b7424084d8b76084d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bec8c9d0f0c27f0000498b16ff124989c641564c8b7424084d89f44983fe037d0f49beb86fd1f1c27f0000e9330d00004c8b7424104d8b6e284d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d084d896e0849bde0875ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424184d89f54983fe057d0f49bdb86fd1f1c27f0000e9630b00004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424204d89f44983fe077d0f49beb86fd1f1c27f0000e90b0a00004c8b7424284d8b6e204d89e44983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be88c5d0f0c27f0000498b1648b85072d3f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24304d89ee4983fd097d0f49bdb86fd1f1c27f0000e99b0800004c8b6c243841ff75184d89f64983ee0241567115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424404d8b364c8b6c24384983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424484d8b7610498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc072d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef072d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2073d3f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5873d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8873d3f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec873d3f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf873d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe070f85480c00004d89ee4d8b6e0841ff761041ff76184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64242049bdb86fd1f1c27f0000e9d20a00004d89e44983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24204d8b6d184d896e0849bd208e5ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b6c24104d89ee4983fd037d0f49beb86fd1f1c27f0000e90a0900004d89f64983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424304d8b76184d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424384d8b364d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424404d8b76104d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424484d8b76204c8b6c24204983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24184983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24384d8b6d084d896e0849bd608e5ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed874d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1075d3f1c27f00004d8975004883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4075d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89e64983fc037d0b48b8704cd1f1c27f0000c341ff750841ff751041ff75184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb86fd1f1c27f0000e9020a00004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424104d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424184d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424204d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424284d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424304d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e92f0200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24104983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649be88c5d0f0c27f0000498b1648b82076d3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef85bd3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8867d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9076d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@14421,1,@1593|32,0,@10414 79,0,@9475 113,0,@10678 150,0,@9475 233,0,@10678 271,0,@9475 323,0,@4696 336,0,@14245 376,0,@10678 416,0,@9475 450,0,@10678 488,0,@9475 538,0,@4699 572,0,@10678 610,0,@9475 660,0,@4699 694,0,@10678 731,0,@9475 781,0,@4615 815,0,@10678 853,0,@9475 903,0,@4699 948,0,@9475 998,0,@4699 1043,0,@10681 1091,0,@10236 1136,0,@11391 1180,0,@10236 1225,0,@10685 1313,0,@10236 1357,0,@11393 1402,0,@10236 1446,0,@10685 1534,0,@10236 1579,0,@11395 1623,0,@10236 1668,0,@10685 1756,0,@10236 1800,0,@11397 1845,0,@10236 1889,0,@10685 1977,0,@10236 2022,0,@11399 2070,0,@10688 2162,0,@10678 2200,0,@9475 2252,0,@4696 2304,0,@6386 2401,0,@10678 2439,0,@9475 2489,0,@4615 2523,0,@10678 2563,0,@9475 2597,0,@10678 2635,0,@9475 2685,0,@4699 2719,0,@10678 2757,0,@9475 2807,0,@4699 2841,0,@10678 2878,0,@9475 2928,0,@4615 2962,0,@10678 3000,0,@9475 3050,0,@4699 3098,0,@9475 3148,0,@4699 3193,0,@10681 3241,0,@10236 3286,0,@11391 3330,0,@10236 3375,0,@10685 3463,0,@10236 3507,0,@11393 3552,0,@10236 3596,0,@10685 3684,0,@10236 3729,0,@11395 3773,0,@10236 3818,0,@10685 3906,0,@10236 3950,0,@11397 3995,0,@10236 4039,0,@10685 4127,0,@10236 4172,0,@11399 4220,0,@10688 4312,0,@10678 4350,0,@9475 4402,0,@4696 4415,0,@14253 4466,0,@9475 4518,0,@4696 4531,0,@14257 4587,0,@10681 4635,0,@10236 4680,0,@14187 4724,0,@10236 4769,0,@10685 4857,0,@10236 4901,0,@14270 4950,0,@10236 4994,0,@10685 5082,0,@10236 5127,0,@12858 5171,0,@10236 5216,0,@10685 5304,0,@10236 5348,0,@10683 5393,0,@10236 5437,0,@10685 5525,0,@10236 5570,0,@14272 5618,0,@10236 5663,0,@10685 5751,0,@10236 5795,0,@13504 5840,0,@10236 5884,0,@10685 5972,0,@10236 6017,0,@14274 6065,0,@10236 6110,0,@10685 6198,0,@10236 6242,0,@11447 6291,0,@10688 6436,0,@10236 6481,0,@14276 6571,0,@10414 6627,0,@9475 6661,0,@10678 6690,0,@9475 6773,0,@10678 6802,0,@9475 6859,0,@4691 6911,0,@6394 7012,0,@9475 7046,0,@10678 7084,0,@9475 7134,0,@4699 7168,0,@10678 7206,0,@9475 7256,0,@4699 7290,0,@10678 7327,0,@9475 7377,0,@4615 7411,0,@10678 7449,0,@9475 7499,0,@4699 7544,0,@9475 7594,0,@4699 7639,0,@10681 7687,0,@10236 7732,0,@11391 7776,0,@10236 7821,0,@10685 7909,0,@10236 7953,0,@11393 7998,0,@10236 8042,0,@10685 8130,0,@10236 8175,0,@11395 8219,0,@10236 8264,0,@10685 8352,0,@10236 8396,0,@11397 8441,0,@10236 8485,0,@10685 8573,0,@10236 8618,0,@11399 8666,0,@10688 8769,0,@10681 8818,0,@10236 8862,0,@13619 8907,0,@10236 8951,0,@10685 9039,0,@10236 9084,0,@13275 9132,0,@10236 9177,0,@10685 9265,0,@10236 9309,0,@12021 9358,0,@10688 9503,0,@10236 9548,0,@14283 9638,0,@10414 9683,0,@9475 9717,0,@10678 9755,0,@9475 9805,0,@4764 9839,0,@10678 9877,0,@9475 9929,0,@4696 9981,0,@6405 10078,0,@10678 10116,0,@9475 10166,0,@4698 10200,0,@10678 10238,0,@9475 10290,0,@4696 10303,0,@14376 10343,0,@10678 10383,0,@9475 10417,0,@10678 10455,0,@9475 10505,0,@4699 10539,0,@10678 10577,0,@9475 10627,0,@4699 10661,0,@10678 10698,0,@9475 10748,0,@4615 10782,0,@10678 10820,0,@9475 10870,0,@4699 10915,0,@9475 10965,0,@4699 11010,0,@10681 11058,0,@10236 11103,0,@11391 11147,0,@10236 11192,0,@10685 11280,0,@10236 11324,0,@11393 11369,0,@10236 11413,0,@10685 11501,0,@10236 11546,0,@11395 11590,0,@10236 11635,0,@10685 11723,0,@10236 11767,0,@11397 11812,0,@10236 11856,0,@10685 11944,0,@10236 11989,0,@11399 12037,0,@10688 12139,0,@9475 12233,0,@10681 12281,0,@10236 12326,0,@14380 12370,0,@10236 12415,0,@10685 12503,0,@10236 12547,0,@14382 12592,0,@10236 12636,0,@10685 12724,0,@10236 12769,0,@14384 12817,0,@10236 12862,0,@10685 12950,0,@10236 12994,0,@14386 13039,0,@10236 13083,0,@10685 13171,0,@10236 13216,0,@14388 13264,0,@10236 13309,0,@10685 13397,0,@10236 13441,0,@14390 13490,0,@10688 13635,0,@10236 13680,0,@14392 13770,0,@10414 13825,0,@9475 13859,0,@10678 13888,0,@9475 13940,0,@4691 13992,0,@6409 14089,0,@10678 14120,0,@9475 14154,0,@10678 14192,0,@9475 14242,0,@4699 14276,0,@10678 14314,0,@9475 14364,0,@4699 14398,0,@10678 14435,0,@9475 14485,0,@4615 14519,0,@10678 14557,0,@9475 14607,0,@4699 14652,0,@9475 14702,0,@4699 14747,0,@10681 14795,0,@10236 14840,0,@11391 14884,0,@10236 14929,0,@10685 15017,0,@10236 15061,0,@11393 15106,0,@10236 15150,0,@10685 15238,0,@10236 15283,0,@11395 15327,0,@10236 15372,0,@10685 15460,0,@10236 15504,0,@11397 15549,0,@10236 15593,0,@10685 15681,0,@10236 15726,0,@11399 15774,0,@10688 15868,0,@9475 15925,0,@4696 15977,0,@6410 16090,0,@10681 16139,0,@10236 16183,0,@14399 16228,0,@10236 16272,0,@10685 16360,0,@10236 16405,0,@12559 16449,0,@10236 16494,0,@10685 16582,0,@10236 16626,0,@14401 16675,0,@10688 16820,0,@10236 16865,0,@14403 16955,0,@10414 16991,0,@9475 17025,0,@10678 17056,0,@9475 17090,0,@10678 17128,0,@9475 17178,0,@4699 17212,0,@10678 17250,0,@9475 17300,0,@4699 17334,0,@10678 17371,0,@9475 17421,0,@4615 17455,0,@10678 17493,0,@9475 17543,0,@4699 17588,0,@9475 17638,0,@4699 17683,0,@10681 17731,0,@10236 17776,0,@11391 17820,0,@10236 17865,0,@10685 17953,0,@10236 17997,0,@11393 18042,0,@10236 18086,0,@10685 18174,0,@10236 18219,0,@11395 18263,0,@10236 18308,0,@10685 18396,0,@10236 18440,0,@11397 18485,0,@10236 18529,0,@10685 18617,0,@10236 18662,0,@11399 18710,0,@10688 18802,0,@10678 18831,0,@9475 18886,0,@4615 18922,0,@9475 18979,0,@4696 18992,0,@14410 19048,0,@10681 19097,0,@10236 19141,0,@14187 19186,0,@10236 19230,0,@10685 19318,0,@10236 19363,0,@10683 19407,0,@10236 19452,0,@10685 19540,0,@10236 19584,0,@12559 19633,0,@10688 19778,0,@10236 19823,0,@14414 6384:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b82063d3f1c27f0000ff124889c258ff22f400000000|@11133,1,@1564|14,0,@4691 27,0,@14247 6385:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb86fd1f1c27f0000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5863d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8863d3f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@1563|36,0,@10678 75,0,@9475 125,0,@4754 176,0,@9475 226,0,@4754 271,0,@10681 319,0,@10236 364,0,@14249 408,0,@10236 453,0,@10685 541,0,@10236 585,0,@14251 634,0,@10688 6386:D3,144|483b65187305ff5558cd054989d55049be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd20de5ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@11133,1,@1566|17,0,@4691 65,0,@6387 6387:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@1565|37,0,@11126 76,0,@9475 126,0,@4699 177,0,@9475 271,0,@11355 319,0,@10236 364,0,@10685 456,0,@11357 6388:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b8f063d3f1c27f0000ff124889c258ff22f400000000|@11133,1,@1568|14,0,@4691 27,0,@14255 6389:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb86fd1f1c27f0000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5863d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8863d3f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@1567|36,0,@10678 75,0,@9475 125,0,@4754 176,0,@9475 226,0,@4754 271,0,@10681 319,0,@10236 364,0,@14249 408,0,@10236 453,0,@10685 541,0,@10236 585,0,@14251 634,0,@10688 6390:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b86064d3f1c27f0000ff124889c258ff22f400000000|@12785,1,@1572|14,0,@4617 27,0,@14259 6391:D3,32|483b65187305ff5558cd0149bea8c9d0f0c27f0000498b16ff22f40000000000|@14269,1,@1571|13,0,@4762 6392:D3,2096|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c3ff304983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdb86fd1f1c27f0000e99d0600004c8b7424084d8b76104d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7620498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9420500004c8b7424104d8b364d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424184d8b7618498b16ff124989c641564c8b7424104d89f44983fe057d0f49bdb86fd1f1c27f0000e9ed0300004c8b7424184d8b6e204d89e44983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24284d8b6d104d896e0849bda0ec5ef1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424204d89f54983fe077d0f49beb86fd1f1c27f0000e91c0200004c8b7424284d8b76084d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424304d8b76184c8b6c24284983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424384d8b7608498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be20e1d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be90ddd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50e1d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be30ded1f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc864d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14269,1,@1570|32,0,@10414 58,0,@9475 92,0,@10678 130,0,@9475 213,0,@10678 250,0,@9475 333,0,@10678 371,0,@9475 423,0,@4691 475,0,@6393 572,0,@10678 610,0,@9475 660,0,@4615 705,0,@9475 799,0,@10681 848,0,@10236 892,0,@11445 937,0,@10236 981,0,@10685 1069,0,@10236 1114,0,@10683 1158,0,@10236 1203,0,@10685 1291,0,@10236 1335,0,@11415 1384,0,@10236 1428,0,@10685 1516,0,@10236 1561,0,@11447 1605,0,@10236 1650,0,@10685 1738,0,@10236 1782,0,@11421 1831,0,@10688 1976,0,@10236 2021,0,@14262 6393:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@11377,1,@1569| 6394:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14178,1,@1573| 6395:D3,8920|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34c8b204d89e64d8b24244983fc010f85c20900004d8b660841ff76104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241849bdd8b5d1f1c27f0000e9530800004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926415649be38c5d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24184d8b6d084d896e0849bd20105ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5868d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d10488d64240848b8704cd1f1c27f0000c34d89f54d8b364983fe030f856a0a0000488d6424084d8b750841ff751041ff75184983ec0241547115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdd8b5d1f1c27f0000e9f20800004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8b5d1f1c27f0000e9f80700004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be88c5d0f0c27f0000498b1648b83069d3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda069d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d10488d64240848b8704cd1f1c27f0000c341ff75084983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64241849bdb86fd1f1c27f0000e9c10c00004c8b6c240841ff75004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9e50400004c8b7424104d8b76204d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c7d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e98e0300004c8b7424184d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424204d8b7610498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e9370200004c8b7424204d8b76104d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424284d8b6e184c8b6424204983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b8806ad3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1866d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb86ad3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef06ad3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd206bd3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd586bd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14325,1,@1578|32,0,@10414 84,0,@9475 118,0,@11126 147,0,@9475 199,0,@4691 251,0,@6396 352,0,@9475 386,0,@10678 424,0,@9475 474,0,@4699 508,0,@10678 546,0,@9475 596,0,@4699 630,0,@10678 667,0,@9475 717,0,@4615 751,0,@10678 789,0,@9475 839,0,@4699 884,0,@9475 934,0,@4699 979,0,@10681 1028,0,@10236 1072,0,@11391 1117,0,@10236 1161,0,@10685 1249,0,@10236 1294,0,@11393 1338,0,@10236 1383,0,@10685 1471,0,@10236 1515,0,@11395 1560,0,@10236 1604,0,@10685 1692,0,@10236 1737,0,@11397 1781,0,@10236 1826,0,@10685 1914,0,@10236 1958,0,@11399 2007,0,@10688 2110,0,@11355 2158,0,@10236 2203,0,@10685 2295,0,@11357 2440,0,@10236 2485,0,@14292 2575,0,@10414 2632,0,@9475 2666,0,@11126 2695,0,@9475 2745,0,@4615 2779,0,@11126 2810,0,@9475 2844,0,@10678 2882,0,@9475 2932,0,@4699 2966,0,@10678 3004,0,@9475 3054,0,@4699 3088,0,@10678 3125,0,@9475 3175,0,@4615 3209,0,@10678 3247,0,@9475 3297,0,@4699 3342,0,@9475 3392,0,@4699 3437,0,@10681 3485,0,@10236 3530,0,@11391 3574,0,@10236 3619,0,@10685 3707,0,@10236 3751,0,@11393 3796,0,@10236 3840,0,@10685 3928,0,@10236 3973,0,@11395 4017,0,@10236 4062,0,@10685 4150,0,@10236 4194,0,@11397 4239,0,@10236 4283,0,@10685 4371,0,@10236 4416,0,@11399 4464,0,@10688 4558,0,@9475 4615,0,@4696 4628,0,@14299 4684,0,@11355 4733,0,@10236 4777,0,@10685 4865,0,@10236 4910,0,@10685 5002,0,@11357 5147,0,@10236 5192,0,@14303 5282,0,@10414 5310,0,@9475 5344,0,@10678 5384,0,@9475 5418,0,@10678 5456,0,@9475 5506,0,@4699 5540,0,@10678 5578,0,@9475 5628,0,@4699 5662,0,@10678 5699,0,@9475 5749,0,@4615 5783,0,@10678 5821,0,@9475 5871,0,@4699 5916,0,@9475 5966,0,@4699 6011,0,@10681 6059,0,@10236 6104,0,@11391 6148,0,@10236 6193,0,@10685 6281,0,@10236 6325,0,@11393 6370,0,@10236 6414,0,@10685 6502,0,@10236 6547,0,@11395 6591,0,@10236 6636,0,@10685 6724,0,@10236 6768,0,@11397 6813,0,@10236 6857,0,@10685 6945,0,@10236 6990,0,@11399 7038,0,@10688 7130,0,@10678 7168,0,@9475 7218,0,@4731 7252,0,@10678 7290,0,@9475 7373,0,@10678 7411,0,@9475 7461,0,@4615 7506,0,@9475 7558,0,@4691 7571,0,@14310 7627,0,@10681 7676,0,@10236 7720,0,@12547 7765,0,@10236 7809,0,@10685 7897,0,@10236 7942,0,@14312 7986,0,@10236 8031,0,@10685 8119,0,@10236 8163,0,@14314 8208,0,@10236 8252,0,@10685 8340,0,@10236 8385,0,@14316 8429,0,@10236 8474,0,@10685 8562,0,@10236 8606,0,@13619 8655,0,@10688 8800,0,@10236 8845,0,@14318 6396:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14291,1,@1574| 6397:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b86869d3f1c27f0000ff124889c258ff22f400000000|@11133,1,@1576|14,0,@4691 27,0,@14301 6398:D3,32|483b65187305ff5558cd0149bee8c9d0f0c27f0000498b16ff22f40000000000|@11377,1,@1575|13,0,@4766 6399:D3,32|483b65187305ff5558cd0149be08c4d0f0c27f0000498b16ff22f40000000000|@13499,1,@1577|13,0,@4672 6400:D3,20792|483b65187305ff5558cd054989d34c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b204d89e64d8b24244983fc010f85040a00004d89f44d8b74240841ff7424104983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb86fd1f1c27f0000e9900800004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be08c8d0f0c27f0000498b16ff124989c641564c8b7424084983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424184d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424204d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424284d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424304d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424384d8b76204c8b6c24204983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8867d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea8c6d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd706cd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54d8b364983fe030f85b813000041ff750841ff751041ff75184983ec0241547115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb86fd1f1c27f0000e9451200004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9720a00004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bed8b5d1f1c27f0000e9ee0700004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b74242841ff76084c8b7424104983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8d6d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be98c0d0f0c27f0000498b1648b8006dd3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60e2d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd386dd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4d8b6d004983fd050f85c00900004d8b6c240841ff7424104983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e94f0800004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04084d89f749c746f8020000004d8b6b084d896e0849bdf0625ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106ed3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d89e64d8b24244983fc070f85760b00004d89f441ff7424084d8b74241041ff7424184983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9fd0900004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9aa0800004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24104983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e415649be38c5d0f0c27f0000498b1648b8f06ed3f1c27f0000ff124889c2488b0424ff124989c6488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be286fd3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd40fad2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be586fd3f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd886fd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54d8b364983fe090f85c10900004d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e94f0800004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04084d89f749c746f8020000004d8b6b084d896e0849bdf06b5ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180900000048c74010050000004c89700848c70001000000ff124889c2488b0424ff124989c641564c8b7424104983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bdb86fd1f1c27f0000e9270600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9870d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8704cd1f1c27f0000c341ff750841ff751041ff75184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b2c244d89ee4983fd017d14488d64242049bdb86fd1f1c27f0000e92b1200004d89f64983ee0241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849beb86fd1f1c27f0000e9260600004c8b7424204d8b76084d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424284d8b76184d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424304d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424384d8b76104d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424404d8b76204c8b6c24204983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9580a00004d89f64983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64240849bed8b5d1f1c27f0000e9ee0700004c8b7424204d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b74242841ff76084c8b7424104983ee0241567115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8d6d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049beb8c7d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60e2d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7871d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@14291,1,@1583|29,0,@10414 86,0,@9475 120,0,@10678 149,0,@9475 199,0,@4736 237,0,@9475 271,0,@10678 309,0,@9475 359,0,@4699 393,0,@10678 431,0,@9475 481,0,@4699 515,0,@10678 552,0,@9475 602,0,@4615 636,0,@10678 674,0,@9475 724,0,@4699 769,0,@9475 819,0,@4699 864,0,@10681 913,0,@10236 957,0,@11391 1002,0,@10236 1046,0,@10685 1134,0,@10236 1179,0,@11393 1223,0,@10236 1268,0,@10685 1356,0,@10236 1400,0,@11395 1445,0,@10236 1489,0,@10685 1577,0,@10236 1622,0,@11397 1666,0,@10236 1711,0,@10685 1799,0,@10236 1843,0,@11399 1892,0,@10688 1995,0,@10681 2043,0,@10236 2088,0,@12559 2132,0,@10236 2177,0,@10685 2265,0,@10236 2309,0,@13170 2358,0,@10688 2503,0,@10236 2548,0,@14327 2633,0,@10414 2685,0,@9475 2719,0,@10678 2750,0,@9475 2784,0,@10678 2822,0,@9475 2872,0,@4699 2906,0,@10678 2944,0,@9475 2994,0,@4699 3028,0,@10678 3065,0,@9475 3115,0,@4615 3149,0,@10678 3187,0,@9475 3237,0,@4699 3282,0,@9475 3332,0,@4699 3377,0,@10681 3425,0,@10236 3470,0,@11391 3514,0,@10236 3559,0,@10685 3647,0,@10236 3691,0,@11393 3736,0,@10236 3780,0,@10685 3868,0,@10236 3913,0,@11395 3957,0,@10236 4002,0,@10685 4090,0,@10236 4134,0,@11397 4179,0,@10236 4223,0,@10685 4311,0,@10236 4356,0,@11399 4404,0,@10688 4496,0,@10678 4527,0,@9475 4561,0,@11126 4598,0,@9475 4648,0,@4615 4695,0,@9475 4729,0,@10678 4767,0,@9475 4817,0,@4699 4851,0,@10678 4889,0,@9475 4939,0,@4699 4973,0,@10678 5010,0,@9475 5060,0,@4615 5094,0,@10678 5132,0,@9475 5182,0,@4699 5227,0,@9475 5277,0,@4699 5322,0,@10681 5370,0,@10236 5415,0,@11391 5459,0,@10236 5504,0,@10685 5592,0,@10236 5636,0,@11393 5681,0,@10236 5725,0,@10685 5813,0,@10236 5858,0,@11395 5902,0,@10236 5947,0,@10685 6035,0,@10236 6079,0,@11397 6124,0,@10236 6168,0,@10685 6256,0,@10236 6301,0,@11399 6349,0,@10688 6452,0,@11355 6501,0,@10236 6545,0,@10685 6637,0,@11357 6731,0,@9475 6788,0,@4617 6801,0,@14331 6857,0,@10681 6906,0,@10236 6950,0,@11456 6995,0,@10236 7039,0,@10685 7127,0,@10236 7172,0,@10683 7216,0,@10236 7261,0,@10685 7349,0,@10236 7393,0,@13619 7442,0,@10688 7587,0,@10236 7632,0,@14333 7717,0,@10414 7768,0,@9475 7802,0,@11126 7831,0,@9475 7883,0,@4691 7931,0,@6402 8032,0,@9475 8066,0,@10678 8104,0,@9475 8154,0,@4699 8188,0,@10678 8226,0,@9475 8276,0,@4699 8310,0,@10678 8347,0,@9475 8397,0,@4615 8431,0,@10678 8469,0,@9475 8519,0,@4699 8564,0,@9475 8614,0,@4699 8659,0,@10681 8708,0,@10236 8752,0,@11391 8797,0,@10236 8841,0,@10685 8929,0,@10236 8974,0,@11393 9018,0,@10236 9063,0,@10685 9151,0,@10236 9195,0,@11395 9240,0,@10236 9284,0,@10685 9372,0,@10236 9417,0,@11397 9461,0,@10236 9506,0,@10685 9594,0,@10236 9638,0,@11399 9687,0,@10688 9790,0,@11355 9838,0,@10236 9883,0,@10685 9975,0,@11357 10120,0,@10236 10165,0,@14340 10250,0,@10414 10309,0,@9475 10343,0,@10678 10372,0,@9475 10422,0,@4698 10456,0,@10678 10487,0,@9475 10521,0,@10678 10559,0,@9475 10609,0,@4699 10643,0,@10678 10681,0,@9475 10731,0,@4699 10765,0,@10678 10802,0,@9475 10852,0,@4615 10886,0,@10678 10924,0,@9475 10974,0,@4699 11019,0,@9475 11069,0,@4699 11114,0,@10681 11162,0,@10236 11207,0,@11391 11251,0,@10236 11296,0,@10685 11384,0,@10236 11428,0,@11393 11473,0,@10236 11517,0,@10685 11605,0,@10236 11650,0,@11395 11694,0,@10236 11739,0,@10685 11827,0,@10236 11871,0,@11397 11916,0,@10236 11960,0,@10685 12048,0,@10236 12093,0,@11399 12141,0,@10688 12235,0,@9475 12292,0,@4691 12305,0,@14347 12361,0,@10681 12410,0,@10236 12454,0,@14349 12499,0,@10236 12543,0,@10685 12631,0,@10236 12676,0,@13619 12720,0,@10236 12765,0,@10685 12853,0,@10236 12897,0,@14351 12946,0,@10688 13091,0,@10236 13136,0,@14353 13221,0,@10414 13272,0,@9475 13306,0,@11126 13335,0,@9475 13387,0,@4691 13435,0,@6404 13536,0,@9475 13570,0,@10678 13608,0,@9475 13658,0,@4699 13692,0,@10678 13730,0,@9475 13780,0,@4699 13814,0,@10678 13851,0,@9475 13901,0,@4615 13935,0,@10678 13973,0,@9475 14023,0,@4699 14068,0,@9475 14118,0,@4699 14163,0,@10681 14212,0,@10236 14256,0,@11391 14301,0,@10236 14345,0,@10685 14433,0,@10236 14478,0,@11393 14522,0,@10236 14567,0,@10685 14655,0,@10236 14699,0,@11395 14744,0,@10236 14788,0,@10685 14876,0,@10236 14921,0,@11397 14965,0,@10236 15010,0,@10685 15098,0,@10236 15142,0,@11399 15191,0,@10688 15294,0,@11355 15342,0,@10236 15387,0,@10685 15479,0,@11357 15624,0,@10236 15669,0,@14362 15754,0,@10414 15790,0,@9475 15824,0,@10678 15855,0,@9475 15889,0,@10678 15927,0,@9475 15977,0,@4699 16011,0,@10678 16049,0,@9475 16099,0,@4699 16133,0,@10678 16170,0,@9475 16220,0,@4615 16254,0,@10678 16292,0,@9475 16342,0,@4699 16387,0,@9475 16437,0,@4699 16482,0,@10681 16530,0,@10236 16575,0,@11391 16619,0,@10236 16664,0,@10685 16752,0,@10236 16796,0,@11393 16841,0,@10236 16885,0,@10685 16973,0,@10236 17018,0,@11395 17062,0,@10236 17107,0,@10685 17195,0,@10236 17239,0,@11397 17284,0,@10236 17328,0,@10685 17416,0,@10236 17461,0,@11399 17509,0,@10688 17601,0,@10678 17632,0,@9475 17666,0,@11126 17703,0,@9475 17753,0,@4615 17800,0,@9475 17834,0,@10678 17872,0,@9475 17922,0,@4699 17956,0,@10678 17994,0,@9475 18044,0,@4699 18078,0,@10678 18115,0,@9475 18165,0,@4615 18199,0,@10678 18237,0,@9475 18287,0,@4699 18332,0,@9475 18382,0,@4699 18427,0,@10681 18475,0,@10236 18520,0,@11391 18564,0,@10236 18609,0,@10685 18697,0,@10236 18741,0,@11393 18786,0,@10236 18830,0,@10685 18918,0,@10236 18963,0,@11395 19007,0,@10236 19052,0,@10685 19140,0,@10236 19184,0,@11397 19229,0,@10236 19273,0,@10685 19361,0,@10236 19406,0,@11399 19454,0,@10688 19557,0,@11355 19606,0,@10236 19650,0,@10685 19742,0,@11357 19836,0,@9475 19891,0,@4731 19936,0,@10681 19985,0,@10236 20029,0,@11456 20074,0,@10236 20118,0,@10685 20206,0,@10236 20251,0,@10683 20295,0,@10236 20340,0,@10685 20428,0,@10236 20472,0,@13619 20521,0,@10688 20666,0,@10236 20711,0,@14369 6401:D3,32|483b65187305ff5558cd0149beb8c7d0f0c27f0000498b16ff22f40000000000|@12855,1,@1579|13,0,@4731 6402:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14325,1,@1580| 6403:D3,2200|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdd8b5d1f1c27f0000e9f60700004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424084d8b2e41ff75084d89f64d8b76084983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@1581|36,0,@11126 75,0,@9475 125,0,@4615 177,0,@9475 211,0,@10678 249,0,@9475 299,0,@4699 333,0,@10678 371,0,@9475 421,0,@4699 455,0,@10678 492,0,@9475 542,0,@4615 576,0,@10678 614,0,@9475 664,0,@4699 709,0,@9475 759,0,@4699 804,0,@10681 853,0,@10236 897,0,@11391 942,0,@10236 986,0,@10685 1074,0,@10236 1119,0,@11393 1163,0,@10236 1208,0,@10685 1296,0,@10236 1340,0,@11395 1385,0,@10236 1429,0,@10685 1517,0,@10236 1562,0,@11397 1606,0,@10236 1651,0,@10685 1739,0,@10236 1783,0,@11399 1832,0,@10688 1935,0,@11355 1983,0,@10236 2028,0,@10685 2120,0,@11357 6404:D3,7112|483b65187305ff5558cd0552504c8b34244d8b66084d89e54983fc017d14488d64241049bdb86fd1f1c27f0000e9281b00004d89f64d8b2641ff34244d89ee4983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b6c24084d8b75084d89f44983fe037d0f49beb86fd1f1c27f0000e9471300004d89ed4d8b75004d8b76084d89e54983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424104d8b66084d89e54983fc057d0f49bdb86fd1f1c27f0000e9ea1100004d89f64d8b2641ff7424104d89ee4983ee0241567115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424184d8b2e41ff75184d89f64d8b76084983ee0241567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdd8b5d1f1c27f0000e9ec0800004c8b7424084d8b364d89ed4983ed027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424304d8b7608498b16ff124989c641564c8b7424084d89f54983fe037d0f49bed8b5d1f1c27f0000e9eb0700004c8b7424104d8b76084d89ed4983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b74241841ff76104c8b7424184983ee0241567115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049beb86fd1f1c27f0000e9260600004c8b7424084d8b76084d89ed4983ed027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49bdb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49beb86fd1f1c27f0000e9730300004c8b7424184d8b364d89ed4983ed027115488d64246848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be78c0d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49bdb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64247048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64247848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd00dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be38dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8dbd1f1c27f00004d892e4883c4104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea070d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6070d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be589ed2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be40fad2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@9836,1,@1582|37,0,@10678 78,0,@9475 112,0,@10678 150,0,@9475 200,0,@4699 234,0,@10678 272,0,@9475 322,0,@4699 356,0,@10678 393,0,@9475 443,0,@4615 477,0,@10678 515,0,@9475 565,0,@4699 610,0,@9475 660,0,@4699 705,0,@10681 753,0,@10236 798,0,@11391 842,0,@10236 887,0,@10685 975,0,@10236 1019,0,@11393 1064,0,@10236 1108,0,@10685 1196,0,@10236 1241,0,@11395 1285,0,@10236 1330,0,@10685 1418,0,@10236 1462,0,@11397 1507,0,@10236 1551,0,@10685 1639,0,@10236 1684,0,@11399 1732,0,@10688 1828,0,@10678 1868,0,@9475 1918,0,@4615 1956,0,@10678 1998,0,@9475 2032,0,@10678 2070,0,@9475 2120,0,@4699 2154,0,@10678 2192,0,@9475 2242,0,@4699 2276,0,@10678 2313,0,@9475 2363,0,@4615 2397,0,@10678 2435,0,@9475 2485,0,@4699 2530,0,@9475 2580,0,@4699 2625,0,@10681 2673,0,@10236 2718,0,@11391 2762,0,@10236 2807,0,@10685 2895,0,@10236 2939,0,@11393 2984,0,@10236 3028,0,@10685 3116,0,@10236 3161,0,@11395 3205,0,@10236 3250,0,@10685 3338,0,@10236 3382,0,@11397 3427,0,@10236 3471,0,@10685 3559,0,@10236 3604,0,@11399 3652,0,@10688 3762,0,@9475 3796,0,@11126 3833,0,@9475 3916,0,@11126 3954,0,@9475 4004,0,@4698 4051,0,@9475 4085,0,@10678 4123,0,@9475 4173,0,@4699 4207,0,@10678 4245,0,@9475 4295,0,@4699 4329,0,@10678 4366,0,@9475 4416,0,@4615 4450,0,@10678 4488,0,@9475 4538,0,@4699 4583,0,@9475 4633,0,@4699 4678,0,@10681 4726,0,@10236 4771,0,@11391 4815,0,@10236 4860,0,@10685 4948,0,@10236 4992,0,@11393 5037,0,@10236 5081,0,@10685 5169,0,@10236 5214,0,@11395 5258,0,@10236 5303,0,@10685 5391,0,@10236 5435,0,@11397 5480,0,@10236 5524,0,@10685 5612,0,@10236 5657,0,@11399 5705,0,@10688 5808,0,@11355 5857,0,@10236 5901,0,@10685 5989,0,@10236 6034,0,@10685 6126,0,@11357 6229,0,@10681 6277,0,@10236 6322,0,@14360 6366,0,@10236 6411,0,@10685 6499,0,@10236 6543,0,@12858 6588,0,@10236 6632,0,@10685 6720,0,@10236 6765,0,@10683 6809,0,@10236 6854,0,@10685 6942,0,@10236 6986,0,@13619 7035,0,@10688 6405:D3,144|483b65187305ff5558cd054989d55049be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd98885ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@11133,1,@1585|17,0,@4691 65,0,@6406 6406:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@1584|37,0,@11126 76,0,@9475 126,0,@4699 177,0,@9475 271,0,@11355 319,0,@10236 364,0,@10685 456,0,@11357 6407:D3,48|483b65187305ff5558cd015049be38c5d0f0c27f0000498b1648b88872d3f1c27f0000ff124889c258ff22f400000000|@11133,1,@1587|14,0,@4691 27,0,@14378 6408:D3,712|483b65187305ff5558cd01504c8b2c244d8b75084d89f44983fe017d14488d64240849bdb86fd1f1c27f0000e9280200004d89ed4d8b75004d8b364d89e54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be28c9d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5863d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8863d3f1c27f00004d8975004883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@9836,1,@1586|36,0,@10678 75,0,@9475 125,0,@4754 176,0,@9475 226,0,@4754 271,0,@10681 319,0,@10236 364,0,@14249 408,0,@10236 453,0,@10685 541,0,@10236 585,0,@14251 634,0,@10688 6409:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@14178,1,@1588| 6410:D3,144|483b65187305ff5558cd054989d55049be38c5d0f0c27f0000498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd188f5ff1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180500000048c74010050000004c89700848c70001000000ff124889c258ff22f40000000000|@11133,1,@1590|17,0,@4691 65,0,@6411 6411:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@1589|37,0,@11126 76,0,@9475 126,0,@4699 177,0,@9475 271,0,@11355 319,0,@10236 364,0,@10685 456,0,@11357 6412:D3,48|483b65187305ff5558cd015049be98c0d0f0c27f0000498b1648b85876d3f1c27f0000ff124889c258ff22f400000000|@12785,1,@1592|14,0,@4617 27,0,@14412 6413:D3,32|483b65187305ff5558cd0149be38c8d0f0c27f0000498b16ff22f40000000000|@13300,1,@1591|13,0,@4739 6414:D3,3272|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54d8b364983fe010f85fb0300004d89ee4d8b6e0841ff76104983ec0241547115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f44983fe017d14488d64241049bdb86fd1f1c27f0000e9890200004d89e44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f00004d8b364d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004c8b62084d89650849bce89e5ff1c27f00004d896500498d47d8483b45107306ff5550ca00604989c748c740f80400000048c740180500000048c74010050000004c89680848c700010000004c89f2ff124889c2488b0424ff124989c641564c8b7424104983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be38c8d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb877d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef877d3f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3078d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34d89ec4d8b6d004983fd030f85850300004d8b6c240841ff7424104983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb86fd1f1c27f0000e9140200004d89f64983ee027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1079d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4879d3f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8079d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d8b74240841ff74241041ff7424184983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9620300004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9150200004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef8c7d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bee8c7d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be607ad3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd987ad3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed07ad3f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd087bd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4|@14458,1,@1595|26,0,@10414 80,0,@9475 114,0,@10678 143,0,@9475 195,0,@4691 243,0,@6415 346,0,@9475 401,0,@4739 446,0,@10681 494,0,@10236 539,0,@14423 583,0,@10236 628,0,@10685 716,0,@10236 760,0,@14425 809,0,@10688 954,0,@10236 999,0,@14427 1084,0,@10414 1135,0,@9475 1169,0,@10678 1198,0,@9475 1248,0,@4698 1284,0,@9475 1339,0,@4699 1384,0,@10681 1432,0,@10236 1477,0,@14434 1521,0,@10236 1566,0,@10685 1654,0,@10236 1698,0,@14436 1747,0,@10688 1892,0,@10236 1937,0,@14438 2022,0,@10414 2061,0,@9475 2095,0,@10678 2124,0,@9475 2202,0,@10678 2231,0,@9475 2286,0,@4735 2322,0,@9475 2377,0,@4734 2422,0,@10681 2471,0,@10236 2515,0,@14445 2560,0,@10236 2604,0,@10685 2692,0,@10236 2737,0,@14447 2781,0,@10236 2826,0,@10685 2914,0,@10236 2958,0,@14449 3007,0,@10688 3152,0,@10236 3197,0,@14451 6415:D3,536|483b65187305ff5558cd0552504c8b2c244d8b75084d89f44983fe017d14488d64241049bdd8b5d1f1c27f0000e9750100004d89ed4d8b75004d8b364d89e54983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d8b75004d8b76084d89ed4d8b6d084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b7424104d8b7608498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@9836,1,@1594|37,0,@11126 76,0,@9475 126,0,@4699 177,0,@9475 271,0,@11355 319,0,@10236 364,0,@10685 456,0,@11357 6416:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@14459,1,@1596| 6417:D10,720|483b65187306ff5558ca0d0152505341504d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849bed0a45ff1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061300000041564c8b742418498b064d89f6498b5e084d89f64d8b4610ff15940200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424104d89f34d897424184c8b7424184c89f04d897424104c8b7424204d89f54d8974240849be20a55ff1c27f00004d8934244d89db4d8b134d89d64983fa030f85bf0000004d89db498b5b084d89db498b43104d89db41ff73184d8d77f04c3b75107306ff5550ca09304d89f749c746f8010000004d89264d89f44d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d89ed4d8b6d084d892e41564883fb017502eb06ff158c010000488b1c24ff157a010000488d6424084c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff15510100004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c34d89db4983fe017526488d6424084d89db498b5b0848ba5089d1f1c27f00004889c04158488d642418ff25f50000004d89db4d89de41ff73084d89f6498b46104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89ed4d8b6d104d896e0849bd98a55ff1c27f00004d892e4d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933ff15620000004c8b6c24084d89ee4983fd0175054989c6eb0c4c89f3ff153e0000004989c64c8b6c24104c8b24244d896500488d6424084d89750848c7c0010000004883c428c3f4|@14469,1,@1608,@6430,@5703,@5670,@6431,@5703,@6429,@5683|52,0,@6418 246,0,@6419 491,0,@10857 572,0,@6420 6418:D4,32|483b65187305ff5558cd054889c3488b4208ff2520000000f400000000000000|@14460,1,@1597,@5204| 6419:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14461,1,@1598| 6420:D4,80|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084989e0ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@14467,1,@1606,@6421| 6421:D4,1040|483b65187306ff5558ca09034989c64989dc4c89cb41504d8b6c24184d8b6d0041ff3424498b7424084d8b5c24104d8b542420498b5424286a016a014983fa03756b4d8b134983fa0575624d8b4b084d8b194d8b51084d8b4110498b79184d8d4fe04c3b4d107306ff5550cacc7d4d89cf49c741f803000000498979104d8941084d89114d8d57f04c3b55107306ff5550ca4c7a4d89d749c742f8010000004d890a4c8914244c895c2408eb0d48c70424010000004c895c24084158584d8d4fd04c3b4d107306ff5550ca4d714d89cf49c741f805000000498959204d8961184d89711049bcc87cd3f1c27f00004d89610849bc58aa5ff1c27f00004d892141f6c50175144d8b6d004d8b6d1848c7c101000000e91702000048c7c101000000498d7fc0483b7d107306ff5550ca4f434989ff48c747f807000000c647ff4048c747300100000048c747280100000048c747200100000048c747180100000048c747100100000048c747080100000048c707010000004d8d67b84c3b65107306ff5550cacf434d89e749c74424f80800000041c64424ff4049c74424380100000049c74424300100000049c74424280100000049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fd04c3b6d107306ff5550cacf534d89ef49c745f80500000041c645ff4049c745200100000049c745180100000049c745100100000049c745080100000049c745000100000049bbd0aa5ff1c27f00004989fa4d8942304d8962284d896a204d894a184989421049895a084d891a8067ffbf49bbc0ab5ff1c27f00004d89e24d8942384d896a3049897a284d894a2049894a1849895210498972084d891a41806424ffbf49bbd8ae5ff1c27f00004d89ea49897a204d8942184d894a104d8962084d891a418065ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500090000004155498b06498b5e084d8b4610ff15440100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c341f6c5010f85d00000004d8b5d004d8b6508498b3b4989fa4883ff05754e4d8b5b084d8d57e84c3b55107306ff5550ca4f7b4d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca4f774d89df49c743f80200000049894b084d8913eb574983fa01754e4d8b5b084d8d57e84c3b55107306ff5550ca4f7b4d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca4f774d89df49c743f80200000049894b084d8913eb034989cb4c89d94d89e5483b65187306ff5558ca4f63e926ffffffe911fdfffff4|@14468,1,@1607,@5683|230,0,@14462 244,0,@6422 553,0,@6423 597,0,@6424 647,0,@6428 6422:D3,80|483b65187305ff5558cd054989d66a016a01498b5608498b4610498b5e184d8b4e204989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@14463,1,@1599| 6423:D3,200|483b65187305ff5558cd054989d64d8b6e3041f6c50175064d8b5e20eb044d8b5e284d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d8b66184d8965004d8d67f04c3b65107306ff5550ca00684d89e749c74424f8010000004d891c24498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c89680848c700010000006a016a01498b5608498b5e104989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14464,1,@1600| 6424:D6,360|483b65187305ff5558cd05524c8b34244d8b6e384983fd0175094d89f64d8b7628eb074d89f64d8b7630498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c8b2c244d8b6d204c892b498d47f0483b45107306ff5550ca08404989c748c740f8010000004c893049c7c001000000ff15150100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d8b6d084d896e0849bd68ad5ff1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15790000004889c34883fb01750a4c8b34244d8b7618eb114c8b3424498b4618ff15500000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244d8b7610488d6424084c8930c3f400000000|@14465,1,@1602,@6427,@6426,@5683|163,0,@6425 6425:D3,56|483b65187305ff5558cd05498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70007000000c3f40000|@12798,1,@1601| 6426:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1604| 6427:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1603| 6428:D4,248|483b65187305ff5558cd054d8d77f04c3b75107305ff5550cd044d89f749c746f8010000004c8b6a204d892e4c8b62184d89e54983fc01751048b80895d1f1c27f0000488b5d08ff234d8b6d00498b5d004d8d6ff04c3b6d107306ff5550ca0c404d89ef49c745f8010000004c8b62104d8965004d8d67f04c3b65107306ff5550ca0c604d89e749c74424f8010000004c8b5a084d891c24498d47e0483b45107306ff5550ca08704989c748c740f8030000004c8960104c8968084c89306a016a014989e0ff1545000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000000000|@14466,1,@1605,@6303|59,0,@10926 6429:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1611| 6430:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1609| 6431:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1610| 6432:D19,1952|483b65187306ff5558ca0d0152505341504c8b74240841f6c60175454d8b264d8b6e084d8b1c244c3b1d0208000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9720600004d8b364d8b2e4c3b2d9e07000075064d8b7610eb15488d64242048b87810d1f1c27f0000488b5d08ff2341564c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1d5a07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bef87ed3f1c27f0000eb174d8b364d8b2e4c3b2df90600000f856a0300004d8b761041564c8b7424084983fe037525ff342448ba087fd3f1c27f0000488b442428ff15c2060000488b1424ff12488d642408eb006a016a016a016a014c8b6c24484d8b55104d89ed4d8b75184d89ed4d8b6d0841564155488b442450488b5c24484c8b4424404c8d4c2410ff1570060000ff3424488b442410ff742418ff742428ff15520600004989c641564c8b34244d8b2e4983fd050f85e2000000488d6424084c8b7424084d89f54983fe0175074c8b742410eb324d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d89ed4d896e0849c7061f00000041564c8b7424484983fe037526ff74244048ba087fd3f1c27f0000488b442408ff15c2050000488b1424ff12488d642408eb006a016a014c8b7424784d8b5608488b442410488b5c24184c8b4424684989e1ff1588050000415d415e488d642410498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849be785d60f1c27f00004c89304883c460c349c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c2449bd108bd3f1c27f00004d892c244c8b6424084d89e54983fc017d0a488d642470e9860100004d89ed4d89ec4c3b2d920400000f8d6e0100004d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab415548ba208dd3f1c27f00004c89f0488b1c24ff157f040000488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64240849be4882d1f1c27f0000eb5d4d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf41564c8b6c24104d89ee4983fd017d07488d642478eb624d89f64d89f54c3b357b0300007d4e4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948b8c06ad1f1c27f0000f348ab4156ff742420eb3f488d64247848b8d015d1f1c27f0000488b5d08ff23488d64247048b8d015d1f1c27f0000488b5d08ff23488d64242848b87810d1f1c27f0000488b5d08ff23f6042401752f4c8b3424498b064d89f641ff7608488b5c24184c8b442410ff1518030000415d4c892c24483b65187303ff5558ebcb488d6424084c8b34244d8b6ef849c1e50849c1ed074983cd0149c7c6010000004983fd017563488d6424084d89f54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000eb534d89eb4983eb024d89ea4983ea024c8b24244f8b5494fc4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d8914244d89dd4d89e6483b65187306ff5558ca0060e944ffffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15dd0100004989c4eb004c8b7424184d89f54983fe0175054d89e6eb2d4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e0849c7061f00000041564c8b7424584983fe037526ff74245048ba087fd3f1c27f0000488b442408ff156a010000488b1424ff12488d642408eb006a016a014c8bb424880000004d8b5608488b442410488b5c24284c8b4424784989e1ff152d010000415d415e488d642408498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424084c8970104c8b34244c897008488d64241849be806360f1c27f00004c89304883c460c341f6c60175454d8b264d8b6e084d8b1c244c3b1db900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4f00000075094d8b7610e933f9ffff488d64242048b87810d1f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01|@14612,1,@1673,@4640,@4640,@6495,@6434,@6504,@7548,@6485,@6495,@6434,@7550,@6494,@6434,@4644,@4644,@4640,@4640|112,0,@10158 153,0,@9991 264,0,@14472 315,0,@14473 547,0,@14473 662,0,@6483 725,0,@14585 852,0,@14602 906,0,@10817 1106,0,@10633 1132,0,@10027 1153,0,@10027 1174,0,@9991 1619,0,@14473 1759,0,@6489 1870,0,@10198 1915,0,@9991 6433:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@1612| 6434:D55,18968|483b65187305ff5558cd05524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9c6020000909090e908060000909090e9ba070000909090e9ee090000909090e907130000909090e990160000909090e91b170000909090e991190000909090e9171d0000909090e9c21e0000909090e931210000909090e919230000909090e9002d0000909090e9ac320000909090e9b0330000909090e9f0350000909090e98d360000909090e9a8360000909090e9253d0000909090e9943f0000909090e92f4100009090904c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930488b1c24ff15794a0000488d642408ff15664a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58f4d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b70084d8b1e4d8b66084d8b6e104d8b56184d8b76204d8b4d004983f90175754d8b6d084c8d0d080000004f8d4c29ff41ffe1eb0ceb16eb20eb2aeb34eb3eeb4849bd507fd3f1c27f0000eb4649bd687fd3f1c27f0000eb3a49bd807fd3f1c27f0000eb2e49bd987fd3f1c27f0000eb2249bdb07fd3f1c27f0000eb1649bdc87fd3f1c27f0000eb0a49bde07fd3f1c27f0000eb564d8b6d084983fd05750c49bdf87fd3f1c27f0000eb404983fd03750c49bd1880d3f1c27f0000eb2e4983fd09750c49bd3080d3f1c27f0000eb1c4983fd07750c49bd5080d3f1c27f0000eb0a49bd8860d2f1c27f00004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff1519470000ff150b4700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c3ff7008488b40104c8b742408498b5e08ff1557450000ff15494500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6880d3f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542410488b442408e82af9ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008ff7010488b4018ff15934300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c8b34244c8930488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15fb420000ff15ed4200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b6808ff7010ff70184c8b70204983fd01750c49bba080d3f1c27f0000eb324983fd03750c49bbc080d3f1c27f0000eb204d8b6d004983fd03750c49bbe080d3f1c27f0000eb0a49bbf880d3f1c27f00004d8b2b4e8d2c6d010000004983fd01750f49bc70d8d0f1c27f0000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d3d3f00000f87640800004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542428e87ff4ffff4989c64156f64424100175174c8b742410498b06488b542430e861f4ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15883f000048bae81cd1f1c27f000048c7c305000000ff15693f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b6c2420498b45004d89ed4d89ee41ff75084d89f641ff7610488b542440e87cf1ffff4989c64156f64424100175174c8b742410498b06488b542448e85ef1ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15753c000048bae81cd1f1c27f000048c7c305000000ff15563c00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542448488b442440e88eeeffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc4881d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c448c3488d64241848b8f8c7d0f1c27f0000488b5d08ff234c8b7008ff7010ff7018488b5424104c89f0e897ecffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1076d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004156488b542418488b442410e8c5ebffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef875d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004156488b542420488b442410e8f3eaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde075d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c34c8b70084c8b681041f6c601744341f6c60174284983fe01750949c7c403000000eb0749c7c4010000004983fc037505e94d310000488d642408eb1a488d64240848b8381fd1f1c27f0000488b5d08ff23488d64240848ba901dd2f1c27f00004c89f0ff15143400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008488b40104c8b284d89ee4983fd0d7512488b542408e86de8ffff4989c6e9e90000004983fe117512488b542408e855e8ffff4989c6e9d1000000488b542408e843e8ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c706010000004156488b442408488b5c2410ff15c2320000ff15b43200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c3488d6424084c8b70084d8b2e4d89ec4983fd07750b48b86081d3f1c27f0000c34d89e54983fc030f8523010000498b460848bae81cd1f1c27f000048c7c303000000ff150c3100004989c54d8b75004e8d2475010000004983fc01750f49bed85ad2f1c27f0000e9ad0000004d89e34983c30e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15782f00000f879e0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbd85ad2f1c27f000048c7c10f000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0f48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff234983fd050f8523010000498b460848bae81cd1f1c27f000048c7c303000000ff15d72f00004989c54d8b75004e8d2475010000004983fc01750f49be085cd2f1c27f0000e9ad0000004d89e34983c30a4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15432e00000f879e0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb085cd2f1c27f000048c7c10b000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0d48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff23498b460848bae81cd1f1c27f000048c7c303000000ff15ac2e00004989c54d8b75004a8d0c75010000004883f901750f49be9881d3f1c27f0000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d182d00000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646084141c646097241c6460a67498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff2348c7c001000000488b1c24ff159d2d0000488d642408ff158a2d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf022d2f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34c8b7008ff7010ff7018488b5424104c89f0e8b4e0ffff4989c6415648bae81cd1f1c27f0000488b44240848c7c303000000ff15b32b00004989c64d8b2e4e8d246d010000004983fc01750f49bdb081d3f1c27f0000e9ae0000004d89e34983c3144c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15302a00000f87d10100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb081d3f1c27f000048c7c115000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1248d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542420488b442418e88bdfffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd081d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c3488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b7008ff7010ff7018488b5424104c89f0e83ddeffff4989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff15342900004989c54c8b7424084983fe03750c49bc0082d3f1c27f0000eb0a49bcd8c8d0f1c27f00004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be68ddd0f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38ddd0f1c27f00004c8930ff155f2800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed830d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c700010000004883c418c34c8b680841ff750041ff750841ff751041ff7518498b5d204d8b752841ff75304983fe01750c49be1882d3f1c27f0000eb0a49bed8c8d0f1c27f0000415648c7c001000000ff15212700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564c8b7424284d8b2e4a8d0c6d010000004883f901750f49bce0d7d0f1c27f0000e99a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d692500000f87f10800004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c6442408224d89f6498d7608498d7c240948d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bde0d7d0f1c27f0000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15a62400000f87210800004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c644350022418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c70607000000415648bae81cd1f1c27f0000488b44242048c7c303000000ff15ea2400004989c44d8b34244e8d3475010000004983fe01750f49bd3082d3f1c27f0000e9b80000004d89f34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156e2300000f87dc0600004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049bc3082d3f1c27f000048c7c111000000498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442430ff15d323000049c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000900000049be4882d3f1c27f000048c7c111000000498d7608498d7d0848d1e9f3a441c6451028418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2458ff152c230000ff151e2300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000415649c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7203ff55504d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000f00000049be6082d3f1c27f000048c7c11d000000498d7608498d7d0848d1e9f3a441c645165b418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442448ff150a220000ff15fc2100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8082d3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec882d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be0848d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee082d3f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080900000049c706010000004156488b542438488b442430e878d3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080500000048c700010000004883c438c3488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d64244048b8f8c7d0f1c27f0000488b5d08ff23488d64244048b8f8c7d0f1c27f0000488b5d08ff234c8b68084c8b70104d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd1083d3f1c27f0000e98a00000049bd2883d3f1c27f0000eb7e49bd4083d3f1c27f0000eb7249bd5883d3f1c27f0000eb6649bd7083d3f1c27f0000eb5a49bd8883d3f1c27f0000eb4e4d8b6d084983fd01750c49bda083d3f1c27f0000eb0a49bdb883d3f1c27f0000eb2c4d8b6d084983fd01750c49bdd883d3f1c27f0000eb0a49bdf083d3f1c27f0000eb0a49bd1084d3f1c27f00004d8b65004a8d0c65010000004883f901750f49bc3084d3f1c27f0000e9a90000004989cb4983c3084c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15f81a00000f874c0400004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084c41c64424096f41c644240a6141c644240b64498d7508498d7c240c48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542418e871d0ffff4989c64156f64424100175174c8b742410498b06488b542420e853d0ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15ca1a000048bae81cd1f1c27f000048c7c305000000ff15ab1a00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bce87cd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2881d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6879d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23488b400849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000500000041c645084c41c645094f41c6450a4f41c6450b5041c6450c28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15e8160000ff15da1600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b7008ff70104c8b6c2408498b5d104c89f0ff154c1600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080500000049c706010000004156488b542410488b442408e84acbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca07cd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd187ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb07fd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3488b40085ae863c9ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4884d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3ff70084c8b7010ff701841ff364d8b2e49c7c40100000049c7c301000000e9ca0d00004c8b6808ff70104c8b70184d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd1083d3f1c27f0000e98a00000049bd2883d3f1c27f0000eb7e49bd4083d3f1c27f0000eb7249bd5883d3f1c27f0000eb6649bd7083d3f1c27f0000eb5a49bd8883d3f1c27f0000eb4e4d8b6d084983fd01750c49bda083d3f1c27f0000eb0a49bdb883d3f1c27f0000eb2c4d8b6d084983fd01750c49bdd883d3f1c27f0000eb0a49bdf083d3f1c27f0000eb0a49bd1084d3f1c27f00004d8b65004e8d1c65010000004983fb01750f49bc7884d3f1c27f0000e9b30000004d89da4983c20a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d1d1100000f871a0500004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba7884d3f1c27f000048c7c10b000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c240d48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610488b542420e894c6ffff4989c64156f64424100175174c8b742410498b06488b542428e876c6ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15c510000048bae81cd1f1c27f000048c7c305000000ff15a61000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542428488b442420e8a6c3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9084d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c428c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488b5808ff7010ff7018f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15790c000048bae81cd1f1c27f000048c7c305000000ff155a0c00004989c64156f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15050c000048bae81cd1f1c27f000048c7c305000000ff15e60b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc084d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed884d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef084d3f1c27f00004c8930ff15250b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542418488b442410e873c0ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c34c8b70084c8b68104983fd03750c49bb0885d3f1c27f0000eb0a49bb2085d3f1c27f00004d8b2b4e8d2c6d010000004983fd01750f49bc70d8d0f1c27f0000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0df50800000f87140100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554c89f0488b5c2408ff15fe080000ff15f00800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff234c8b70084c8b68104c8d25080000004f8d64acfc41ffe4e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bd783ad2f1c27f0000e9a000000049bd583bd2f1c27f0000e99100000049bd383cd2f1c27f0000e98200000049bd183dd2f1c27f0000eb7649bdf83dd2f1c27f0000eb6a49bdd83ed2f1c27f0000eb5e49bdb83fd2f1c27f0000eb5249bd9840d2f1c27f0000eb4649bd7841d2f1c27f0000eb3a49bd5842d2f1c27f0000eb2e49bd3843d2f1c27f0000eb2249bd1044d2f1c27f0000eb1649bde844d2f1c27f0000eb0a49bdc845d2f1c27f0000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156488b5c2408ff15d7060000ff15c90600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080500000048c70001000000c34d3bdd0f828d0200004c89e048bae81cd1f1c27f000048c7c303000000ff15080500004989c6415648bae81cd1f1c27f0000488b44240848c7c303000000ff15df0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc3885d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18d9d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be5085d3f1c27f00004c8930ff151e0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b542418488b442408e8a4b9ffff4989c64156488b542420488b442418e890b9ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9c0fcffff41f6c501754a4d8b5d004d8b65084d8b134c8b0c244d8b49184d3bd175214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb049c7c5010000004983fd017542488d64240848ba901dd2f1c27f00004c89f0ff155e0100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d8b6d004d8b6500488b14244c8b5a184d3be30f85870000004d8b6d104d8b65004983fc0375374d8b75084889d2488d642408498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70019000000e99eb6ffff488d64240848ba901dd2f1c27f00004c89f0ff15b60000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3488d64240848b87810d1f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14536,1,@1613,@5509,@5509,@4836,@4983,@4983,@6436,@6437,@6438,@6439,@4836,@4983,@4933,@4983,@4933,@4983,@4933,@6440,@6441,@6442,@4983,@4933,@6443,@6444,@6452,@6453,@6454,@4983,@6455,@4836,@4983,@4983,@6460,@6461,@4983,@4983,@4983,@6462,@6463,@5509,@4983,@4933,@4983,@4933,@6464,@6465,@6466,@6467,@6468,@6469,@6470,@6471,@6435|382,0,@10392 485,0,@10440 634,0,@10378 679,0,@11605 821,0,@14475 833,0,@14476 845,0,@14477 857,0,@14478 869,0,@14479 881,0,@14480 893,0,@14481 915,0,@14482 933,0,@14483 951,0,@14484 969,0,@14485 981,0,@12502 1225,0,@10392 1328,0,@10440 1477,0,@10378 1659,0,@14486 1782,0,@10440 1830,0,@10391 1875,0,@10392 1919,0,@10391 2239,0,@10392 2342,0,@10440 2491,0,@10378 2631,0,@14488 2649,0,@14489 2671,0,@14490 2683,0,@14491 2710,0,@9565 2982,0,@14492 3045,0,@10021 3066,0,@10077 3157,0,@10782 3206,0,@10236 3250,0,@10394 3295,0,@10391 3383,0,@10236 3427,0,@10394 3472,0,@10391 3560,0,@14493 3604,0,@10752 3753,0,@14492 3816,0,@10021 3837,0,@10077 3928,0,@10782 3977,0,@10236 4021,0,@10394 4066,0,@10391 4154,0,@10236 4198,0,@10394 4243,0,@10391 4331,0,@14493 4375,0,@10752 4498,0,@14494 4546,0,@10394 4591,0,@10236 4679,0,@10394 4723,0,@10236 4807,0,@10236 4932,0,@9487 5044,0,@10236 5088,0,@10727 5254,0,@10236 5298,0,@10726 5463,0,@10236 5508,0,@10725 5653,0,@10236 5741,0,@10236 5926,0,@10093 5947,0,@11943 6109,0,@10440 6158,0,@10391 6202,0,@10392 6336,0,@10391 6381,0,@10392 6526,0,@10378 6667,0,@14495 6695,0,@10077 6739,0,@12455 6876,0,@12455 6966,0,@9487 6996,0,@10077 7040,0,@12465 7177,0,@12465 7267,0,@9487 7287,0,@10077 7331,0,@14497 7540,0,@9487 7618,0,@10392 7721,0,@10440 7870,0,@10378 7915,0,@11988 8019,0,@10077 8067,0,@14498 8205,0,@14498 8341,0,@10401 8389,0,@10236 8521,0,@14499 8606,0,@9487 8650,0,@10077 8692,0,@14501 8704,0,@9493 8785,0,@9618 8864,0,@9616 8994,0,@13938 9156,0,@14502 9168,0,@9493 9282,0,@9559 9469,0,@9559 9724,0,@10077 9773,0,@14503 9932,0,@14503 10091,0,@14504 10365,0,@14505 10598,0,@14506 10647,0,@10236 10735,0,@10236 10823,0,@10236 10911,0,@10236 10999,0,@10236 11043,0,@14509 11088,0,@10236 11132,0,@10381 11177,0,@10236 11265,0,@10236 11309,0,@14510 11474,0,@10378 11603,0,@9487 11624,0,@9487 11645,0,@9487 11760,0,@14512 11775,0,@14513 11787,0,@14514 11799,0,@14515 11811,0,@14516 11823,0,@14517 11845,0,@14518 11857,0,@14519 11879,0,@14520 11891,0,@14521 11903,0,@14522 11931,0,@14523 12212,0,@14492 12275,0,@10021 12296,0,@10077 12388,0,@10782 12436,0,@10236 12481,0,@10394 12525,0,@10391 12613,0,@10236 12658,0,@10394 12702,0,@10391 12790,0,@14493 12835,0,@10752 12980,0,@10236 13105,0,@9487 13627,0,@10779 13675,0,@10378 13720,0,@10759 13764,0,@10236 13852,0,@10378 13897,0,@10801 14013,0,@10440 14062,0,@14524 14275,0,@14512 14290,0,@14513 14302,0,@14514 14314,0,@14515 14326,0,@14516 14338,0,@14517 14360,0,@14518 14372,0,@14519 14394,0,@14520 14406,0,@14521 14418,0,@14522 14446,0,@14526 14586,0,@14526 14737,0,@14492 14800,0,@10021 14821,0,@10077 14912,0,@10782 14961,0,@10236 15005,0,@10394 15050,0,@10391 15138,0,@10236 15182,0,@10394 15227,0,@10391 15315,0,@14493 15359,0,@10752 15524,0,@10236 15569,0,@14527 15613,0,@10236 15701,0,@10236 15826,0,@9487 15889,0,@10021 15905,0,@10077 15984,0,@10021 16005,0,@10077 16058,0,@14529 16106,0,@14530 16194,0,@14531 16301,0,@10440 16349,0,@10236 16487,0,@14532 16499,0,@14533 16526,0,@9565 16876,0,@9487 17027,0,@12187 17042,0,@12194 17057,0,@12201 17072,0,@12208 17084,0,@12215 17096,0,@12222 17108,0,@12229 17120,0,@12236 17132,0,@12243 17144,0,@12250 17156,0,@12257 17168,0,@12264 17180,0,@12271 17192,0,@12278 17331,0,@10392 17434,0,@10440 17583,0,@10378 17715,0,@10077 17743,0,@10077 17801,0,@14534 17849,0,@9572 17937,0,@14535 18064,0,@10440 18113,0,@10236 18157,0,@10394 18202,0,@10391 18496,0,@9475 18633,0,@11943 18793,0,@11943 18859,0,@9991 6435:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1650|131,0,@10484 262,0,@10236 6436:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1614|75,0,@10440 6437:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1615|131,0,@10484 262,0,@10236 6438:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1616|75,0,@10440 6439:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1617|131,0,@10484 262,0,@10236 6440:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc085d3f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1618|131,0,@14538 262,0,@10236 6441:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1619|75,0,@10440 6442:D3,336|483b65187305ff5558cd0953a8010f85290100004c8b30ff70084c8b2c244983fd017535488d642408498b065aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b06488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1620|131,0,@10484 262,0,@10236 6443:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1621|75,0,@10782 6444:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1622,@6445,@6445|132,0,@10484 258,0,@10236 6445:D10,1136|483b65187305ff5558cd014c8b304d89f54983fe050f85860200004c8b7008ff701048bae81cd1f1c27f00004c89f048c7c303000000ff157c0400004989c64d8b2e4e8d2c6d010000004983fd01750f49bc704bd2f1c27f0000e9b30000004d89eb4983c3104c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15d90300000f87f70100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb704bd2f1c27f000048c7c111000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241048d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bd38ddd0f1c27f0000e99e0000004d89f34983c3024c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15fd0200000f870e0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c61049d1ee43c64435005b418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff15ac020000ff159e0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff234d89ee4983fd010f858f010000ff7008488b4010ff15e50100004989c64156488b442408ff15cd010000ff15bf0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea84bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be0848d1f1c27f00004c89334883fb017508415d4883c408eb12488b0424ff15be0000004989c5488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34983fe03750b48b80886d3f1c27f0000c348b8307bd1f1c27f0000c3f4000000000000ffffffffffffff01ffffffffffffff01|@14544,1,@1623,@6447,@6448,@6449,@6450,@6451,@6446,@4983|36,0,@10077 82,0,@12324 222,0,@12324 294,0,@9616 638,0,@9487 659,0,@9487 757,0,@10392 802,0,@10236 846,0,@10408 891,0,@10236 935,0,@10381 1011,0,@10392 1093,0,@14541 1104,0,@10769 6446:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba3886d3f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba3886d3f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@14537,1,@1629|48,0,@14543 102,0,@14543 144,0,@10484 270,0,@10236 6447:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1624| 6448:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1625|75,0,@10440 6449:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba3886d3f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba3886d3f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc7886d3f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@14537,1,@1626|48,0,@14543 102,0,@14543 144,0,@14545 270,0,@10236 6450:D3,144|483b65187305ff5558cd01a8017576488b40084883f801750b48b8a886d3f1c27f0000c3e8d7ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec086d3f1c27f00004c8930c348c7c001000000c3f40000|@14537,1,@1627|27,0,@14547 77,0,@10236 121,0,@14548 6451:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1628|75,0,@10782 6452:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1630|75,0,@10440 6453:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1631|131,0,@10484 262,0,@10236 6454:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1632| 6455:D8,856|483b65187305ff5558cd09504883fb01750d488d64240848c7c001000000c34c8b33ff730841ff3641ff760848bae81cd1f1c27f0000488b44241848c7c303000000ff15480300004989c64d8b2e4a8d0c6d010000004883f901750f49bd9881d3f1c27f0000e99c0000004989cc4983c4064c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1db50200000f87960200004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645084141c645097241c6450a67498d7608498d7d0b48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff154e020000ff15400200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6879d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64241041564c8b7424084983fe01750c48b80887d3f1c27f0000eb0748c7c001000000f644241001740948c7c301000000eb0a48bb6887d3f1c27f00004883fb0175054889c3eb09ff15010100004889c34883fb017508415d4883c408eb12488b0424ff15de0000004989c5488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080900000049c706010000004156488b4424104883c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b5c2408e8fcfcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@14558,1,@1633,@6457,@6458,@6459,@6456,@4983|46,0,@10077 94,0,@14497 356,0,@10752 501,0,@10236 571,0,@14550 606,0,@14554 748,0,@9475 830,0,@9487 6456:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1637,@6445,@6445|132,0,@10484 258,0,@10236 6457:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1634| 6458:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1635| 6459:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1636|75,0,@10782 6460:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1638|75,0,@10440 6461:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1639|131,0,@10484 262,0,@10236 6462:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1640|75,0,@10440 6463:D3,336|483b65187305ff5558cd0953a8010f85290100004c8b30ff70084c8b2c244983fd017535488d642408498b065aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b06488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1641|131,0,@10484 262,0,@10236 6464:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1642|75,0,@10440 6465:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1643|131,0,@10484 262,0,@10236 6466:D3,4320|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e95b000000909090e95e000000909090e9a5010000909090e9ec020000909090e9e7040000909090e9ed050000909090e9f3060000909090e949080000909090e9530a0000909090e9a90b0000909090e9c20d0000909090e9d70e000090909048b870fbd1f1c27f0000c34c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd507fd3f1c27f0000eb4649bd687fd3f1c27f0000eb3a49bd807fd3f1c27f0000eb2e49bd987fd3f1c27f0000eb2249bdb07fd3f1c27f0000eb1649bdc87fd3f1c27f0000eb0a49bde07fd3f1c27f00004d8b75004e8d3475010000004983fe01750b48b80888d3f1c27f0000c34d89f44983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d900f0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd0888d3f1c27f000048c7c10b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd507fd3f1c27f0000eb4649bd687fd3f1c27f0000eb3a49bd807fd3f1c27f0000eb2e49bd987fd3f1c27f0000eb2249bdb07fd3f1c27f0000eb1649bdc87fd3f1c27f0000eb0a49bde07fd3f1c27f00004d8b75004e8d3475010000004983fe01750b48b82088d3f1c27f0000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d390e0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd2088d3f1c27f000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe05750c49bef87fd3f1c27f0000eb404983fe03750c49be1880d3f1c27f0000eb2e4983fe09750c49be3080d3f1c27f0000eb1c4983fe07750c49be5080d3f1c27f0000eb0a49be8860d2f1c27f00004d8b2e4a8d0c6d010000004883f901750f49bd4088d3f1c27f0000e9a10000004989cc4983c4084c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1dfc0c00000f87470100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085441c645096541c6450a7341c6450b74498d7608498d7d0c48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b82088d3f1c27f0000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d360c0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd2088d3f1c27f000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe05750c49bd5888d3f1c27f0000eb1c4983fe03750c49bd7088d3f1c27f0000eb0a49bd8888d3f1c27f00004d8b75004e8d3475010000004983fe01750b48b82088d3f1c27f0000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d100b0000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd2088d3f1c27f000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe03750c49bda088d3f1c27f0000eb1c4983fe05750c49bdc088d3f1c27f0000eb0a49bde088d3f1c27f00004d8b75004e8d3475010000004983fe01750b48b82088d3f1c27f0000c34d89f44983c4124c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dfa090000777d4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd2088d3f1c27f000048c7c113000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd507fd3f1c27f0000eb4649bd687fd3f1c27f0000eb3a49bd807fd3f1c27f0000eb2e49bd987fd3f1c27f0000eb2249bdb07fd3f1c27f0000eb1649bdc87fd3f1c27f0000eb0a49bde07fd3f1c27f00004d8b75004e8d3475010000004983fe01750b48b8f888d3f1c27f0000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da30800000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428524d89f549d1ed42c6442801654d89f549d1ed42c64428026149d1ee42c64430036c8060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe05750c49bef87fd3f1c27f0000eb404983fe03750c49be1880d3f1c27f0000eb2e4983fe09750c49be3080d3f1c27f0000eb1c4983fe07750c49be5080d3f1c27f0000eb0a49be8860d2f1c27f00004d8b2e4a8d0c6d010000004883f901750f49bd4088d3f1c27f0000e9a10000004989cc4983c4084c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d570700000f87560100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085441c645096541c6450a7341c6450b74498d7608498d7d0c48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8f888d3f1c27f0000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d910600000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428524d89f549d1ed42c6442801654d89f549d1ed42c64428026149d1ee42c64430036c8060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234c8b70084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849bd507fd3f1c27f0000eb4649bd687fd3f1c27f0000eb3a49bd807fd3f1c27f0000eb2e49bd987fd3f1c27f0000eb2249bdb07fd3f1c27f0000eb1649bdc87fd3f1c27f0000eb0a49bde07fd3f1c27f00004d8b75004e8d3475010000004983fe01750b48b81089d3f1c27f0000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d1b0500000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b68084c8b70104983fd05750c49bdf87fd3f1c27f0000eb404983fd03750c49bd1880d3f1c27f0000eb2e4983fd09750c49bd3080d3f1c27f0000eb1c4983fd07750c49bd5080d3f1c27f0000eb0a49bd8860d2f1c27f00004d8b65004a8d0c65010000004883f901750f49bb4088d3f1c27f0000e9a00000004989cc4983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15ca0300000f87600100004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d892341c643085441c643096541c6430a7341c6430b74498d7508498d7b0c48d1e9f3a4418063ffbf4983fe03750c49bd2889d3f1c27f0000eb0a49bd4089d3f1c27f00004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0ddd020000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe05750c49bd5888d3f1c27f0000eb1c4983fe03750c49bd7088d3f1c27f0000eb0a49bd8888d3f1c27f00004d8b75004e8d3475010000004983fe01750b48b81089d3f1c27f0000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc50100000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234c8b70084983fe03750c49bda088d3f1c27f0000eb1c4983fe05750c49bdc088d3f1c27f0000eb0a49bde088d3f1c27f00004d8b75004e8d3475010000004983fe01750b48b81089d3f1c27f0000c34d89f44983c4084c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da00000000f87880000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c60428574d89f549d1ed42c64428016f4d89f549d1ed42c64428027249d1ee42c6443003648060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14572,1,@1644|127,0,@11664 171,0,@14475 183,0,@14476 195,0,@14477 207,0,@14478 219,0,@14479 231,0,@14480 243,0,@14481 271,0,@14559 419,0,@14559 457,0,@9487 506,0,@14475 518,0,@14476 530,0,@14477 542,0,@14478 554,0,@14479 566,0,@14480 578,0,@14481 606,0,@14560 754,0,@14560 792,0,@9487 818,0,@14482 836,0,@14483 854,0,@14484 872,0,@14485 884,0,@12502 911,0,@14561 1105,0,@14560 1253,0,@14560 1291,0,@9487 1307,0,@9487 1333,0,@14562 1351,0,@14563 1363,0,@14564 1391,0,@14560 1539,0,@14560 1577,0,@9487 1603,0,@14565 1621,0,@14566 1633,0,@14567 1661,0,@14560 1809,0,@14560 1847,0,@9487 1896,0,@14475 1908,0,@14476 1920,0,@14477 1932,0,@14478 1944,0,@14479 1956,0,@14480 1968,0,@14481 1996,0,@14568 2197,0,@9487 2223,0,@14482 2241,0,@14483 2259,0,@14484 2277,0,@14485 2289,0,@12502 2316,0,@14561 2510,0,@14568 2711,0,@9487 2727,0,@9487 2776,0,@14475 2788,0,@14476 2800,0,@14477 2812,0,@14478 2824,0,@14479 2836,0,@14480 2848,0,@14481 2876,0,@14569 3077,0,@9487 3107,0,@14482 3125,0,@14483 3143,0,@14484 3161,0,@14485 3173,0,@12502 3201,0,@14561 3382,0,@14570 3394,0,@14571 3606,0,@9487 3622,0,@9487 3648,0,@14562 3666,0,@14563 3678,0,@14564 3706,0,@14569 3907,0,@9487 3933,0,@14565 3951,0,@14566 3963,0,@14567 3991,0,@14569 4192,0,@9487 6467:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1645|75,0,@10440 6468:D3,360|483b65187305ff5558cd0953a8010f853f0100004c8b30ff70084c8b2c244983fd017540488d6424084d8b365a498b06498b5e084d8b4610ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8b36488b542408498b06498b5e084d8b4610ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e808ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f400000000000000|@14537,1,@1646|153,0,@10484 284,0,@10236 6469:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1647|75,0,@10440 6470:D3,336|483b65187305ff5558cd094989c65341f6c6010f8524010000498b0641ff76084c8b34244983fe017532488d6424085aff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488b542408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e81effffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@14537,1,@1648|131,0,@10484 262,0,@10236 6471:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@1649|75,0,@10440 6472:D6,1160|483b65187306ff5558ca0d015250415048bae81cd1f1c27f00004889d848c7c303000000ff15860400004989c64d8b2e4e8d246d010000004983fc01750f49bdb089d3f1c27f0000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15030400000f87e60300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb089d3f1c27f000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff157a030000ff156c0300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b742420498b5608488b442410ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080500000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb847d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef047d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb082d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7832d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc882d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642420498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01|@14575,1,@1651,@6474,@6473,@4983|18,0,@10077 64,0,@14574 202,0,@14574 344,0,@10752 612,0,@10378 656,0,@10380 701,0,@10236 745,0,@14508 790,0,@10236 878,0,@10236 922,0,@10238 967,0,@14509 1011,0,@10236 1136,0,@9487 6473:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1653,@6445,@6445|132,0,@10484 258,0,@10236 6474:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1652|75,0,@10782 6475:D8,1688|483b65187305ff5558cd054989c6524d8b2e4d89ec4983fd010f859c05000041ff7608498b461041ff761841ff762048bae81cd1f1c27f000048c7c303000000ff158a0600004989c64d8b2e4e8d246d010000004983fc01750f49bdb089d3f1c27f0000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15f70500000f87070500004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb089d3f1c27f000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442418ff157e050000ff15700500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000415648bae81cd1f1c27f0000488b44241848c7c303000000ff15dc0400004989c64d8b2e4e8d246d010000004983fc01750f49bd088ad3f1c27f0000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15590400000f875c0300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb088ad3f1c27f000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b742430498b5608488b442418ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed874d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb082d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7832d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc882d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c700010000004883c418c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff234d89e54983fc057513498b46084c8b3424498b5608488d642408ff224983fd070f8585000000498b46084c8b3424498b5e08488d642408ff15b80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd288ad3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3498b4608498b5e104d8b46184c8b3424498b5610488d642408ff22f4000000000000ffffffffffffff01ffffffffffffff01|@14579,1,@1654,@6477,@4983,@6482,@6476,@4983|49,0,@10077 92,0,@14574 230,0,@14574 372,0,@10752 450,0,@10077 498,0,@14576 636,0,@14576 816,0,@10236 860,0,@10715 905,0,@10236 993,0,@10236 1037,0,@14508 1082,0,@10236 1170,0,@10236 1214,0,@10238 1259,0,@14509 1303,0,@10236 1432,0,@9487 1453,0,@9487 1564,0,@14577 6476:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1661,@6445,@6445|132,0,@10484 258,0,@10236 6477:D9,2504|483b65187305ff5558cd0953a8010f85910900004c8b30ff70084c8b2c244983fd010f8569040000488d64240841ff36498b460841ff761048bae81cd1f1c27f000048c7c303000000ff15b90900004989c64d8b2e4e8d246d010000004983fc01750f49bd085cd2f1c27f0000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b151e0900000f87d40300004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb085cd2f1c27f000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff15ad080000ff159f0800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700848c70019000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf047d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb082d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec882d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424204d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64241848b8f8c7d0f1c27f0000488b5d08ff2341ff36498b460841ff761048bae81cd1f1c27f000048c7c303000000ff153d0500004989c64d8b2e4e8d246d010000004983fc01750f49bd085cd2f1c27f0000e9ae0000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b20400000f87840400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb085cd2f1c27f000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0d48d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410ff1531040000ff15230400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b542428498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700848c70019000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080500000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf047d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb082d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec882d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc888ad3f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408488b5c2410e8cbf6ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c3f40000000000ffffffffffffff01ffffffffffffff01|@14537,1,@1655,@6479,@6480,@4983,@6481,@6478,@4983|58,0,@10077 101,0,@12465 239,0,@12465 381,0,@10752 681,0,@10378 726,0,@10380 770,0,@10236 815,0,@14508 859,0,@10236 947,0,@14509 992,0,@10236 1155,0,@9487 1182,0,@10077 1225,0,@12465 1363,0,@12465 1505,0,@10752 1805,0,@10378 1850,0,@10380 1894,0,@10236 1939,0,@14508 1983,0,@10236 2071,0,@14509 2116,0,@10236 2262,0,@14580 2393,0,@10236 2455,0,@9487 6478:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1659,@6445,@6445|132,0,@10484 258,0,@10236 6479:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1656|75,0,@10782 6480:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@14537,1,@1657,@6445,@6445|132,0,@10484 258,0,@10236 6481:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1658|75,0,@10782 6482:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e87cd1f1c27f0000c3f4000000|@10402,1,@1660|75,0,@10782 6483:D3,96|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244d8b6d08488d6424084c8968104c89700848c7000d000000c3f400000000000000|@14584,1,@1662| 6484:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8208bd3f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8008cd3f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8808cd3f1c27f0000c3f400000000|@14601,1,@1663|26,0,@10414 49,0,@14586 69,0,@10414 86,0,@14593 103,0,@10414 114,0,@14597 6485:D5,424|483b65187305ff5558cd0d52534c8b284d89ee4983fd01750d488d64241048c7c001000000c34d89f54983fe09750d488d64241048c7c001000000c34d89ee4983fd0375184c8b70084c8b40104d8b761848c7c301000000e9940000004983fe077537488b58084c8b40104883fb017d15488d64241048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15350100004989c64156eb0d488d64241048c7c001000000c3f604240175374c8b2c244d8b75004d89ed41ff75084c8b6c2418498b5508498b06498b5e084c8b442410ff12415d4c892c24483b65187303ff5558ebc3488d64241848c7c001000000c341f6c60175364d8b66084989dd4983c5027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb017d15488d64241048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff156b0000004989c64156f604240175374c8b2c244d8b75004d89ed41ff75084c8b6c2418498b5508498b06498b5e084c8b442410ff12415d4c892c24483b65187303ff5558ebc3488d64241848c7c001000000c3f4000000|@14604,1,@1664,@6487,@6486|120,0,@10101 267,0,@9475 314,0,@10101 6486:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@10111,1,@1666|73,0,@9475 6487:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@10111,1,@1665|73,0,@9475 6488:D3,320|483b65187306ff5558ca0d014989c64889d84c89c34d8b2e4983fd01750848c7c001000000c34d8b76084d8b2e4983fd050f85f10000004d8b76084c8b63f84d89e549c1e40849c1ec074983cc014d3bf4721048b81011d1f1c27f0000488b5d08ff234e8b64b3fc4983fc0375414c8b204983fc05750848c7c001000000c349c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc05000000488b5208ff224983fc05750848c7c001000000c34c8b204983fc05753249c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c349c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc05000000488b5208ff2248b8808dd3f1c27f0000488b5d08ff23f400000000000000|@14608,1,@1667|85,0,@9995 146,0,@10034 217,0,@10034 267,0,@10034 298,0,@14605 6489:D6,840|483b65187305ff5558cd05524c8b3424498b562048c7c001000000ff124989c64156f60424017415488d64241048b8508ed3f1c27f0000488b5d08ff23f60424017415488d64241048b808afd1f1c27f0000488b5d08ff234c8b342441ff364c8b7424104d8b761841f6c60175454d8b264d8b6e084d8b1c244c3b1df002000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750949c7c601000000eb354d8b364d8b2e4c3b2d920200000f85520200004d8b6e104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e41f6c60175314d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd086760f1c27f00004d892eeb0a49be605bd1f1c27f00004156488b142448c7c001000000ff124c8b5c24184d8b73104d89f54d8b364983fe017514488d64240848bba85bd1f1c27f0000e9760100004d89db4d89ee4d8b6d004983fd097514488d64240848bba85bd1f1c27f0000e9520100004d89db4d89f54d8b364983fe030f85910000004d89db4d89ee4d89f54d8b76084d89db4d8b65104d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b14244d895520488d6424084c8b5424084d8955184d89db4d8b5b084d895d104d89650849bc986760f1c27f00004d896500498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c70303000000e9ae0000004d89db4d89ee4d8b6d004983fd070f858b0000004d89db4d89f54d8b76084d89db4d8b65104d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b14244d895520488d6424084c8b5424084d8955184d89db4d8b5b084d895d104d89650849bce0b552f1c27f00004d896500498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c70307000000eb0f488d64240848bba85bd1f1c27f0000ff156d0000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d0000004883c410c3488d64241848b87810d1f1c27f0000488b5d08ff23f400000000|@14584,1,@1671,@6493,@4683,@4683|47,0,@14609 74,0,@11081 296,0,@6490 311,0,@10513 362,0,@10515 398,0,@10515 516,0,@6491 678,0,@5126 741,0,@10515 821,0,@9991 6490:D3,104|483b65187305ff5558cd054c8b720841f6c601753e4d8b264d8b6e084883f80175044c89e0c34989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140ebbc48b8c85dd1f1c27f0000488b5d08ff23f400000000|@10557,1,@1668|49,0,@9475 85,0,@10528 6491:D4,128|483b65187305ff5558cd056a016a01498d5fe8483b5d107305ff5550cd054989df48c743f8020000004c8b72084c89730849be486860f1c27f00004c89334c8b4a104c8b52184c8b722041564c8d442408ff1541000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@10517,1,@1670,@5128|51,0,@6492 6492:D3,64|483b65187305ff5558cd0d53488b5208ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64240848c7c001000000c3f40000000000|@10514,1,@1669| 6493:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@1672,@4662|74,0,@9594 88,0,@4662 6494:D4,104|483b65187306ff5558ca090741516a016a014c8b7424284c8b6c242041565341554c89c349c7c0030000004c8d4c2418ff154a000000415d415e4d8b55004d8b65084d8b5d10415d4d8955004d895d084d8965104d89751848c7c001000000c21000f40000000000|@16420,1,@2856,@7552| 6495:D9,736|483b65187306ff5558ca090750534150415141524c8b6c24184d89ee4983fd017d0a488d642428e99a0200004d89f64d89f54c3b359f0200000f8d820200004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d89ec4d896e0849bd906d60f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89e44d89650849bc806e60f1c27f00004d896500498d5fd0483b5d107306ff5550ca00604989df48c743f8050000004c8b6424084c8963204c896b184c8973104c8b7424184c89730849be186f60f1c27f00004c8933488b442428ff15ef0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424204d89663049c746280300000049bc88c1d1f1c27f00004d89662049c746180100000049c746100100000049bc008cd4f1c27f00004d8966084d892e49c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004155498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048bba093d4f1c27f000049b8a093d4f1c27f000049c7c101000000ff150d010000ff74241048bba093d4f1c27f000049b8a093d4f1c27f000049c7c1010000004c8b542428ff15db0000004989c64d8b2e4983fd19756b498b4608488b5c24204c8b04244c8b4c2410ff15af0000004989c64156488b442438488b5c2410ff159200000048bab093d4f1c27f0000488b1c24ff15760000004989c6488d6424084c8b6c24184c8b24244d896500488d6424284d89750848c7c0010000004883c410c3488d64243848b8e094d3f1c27f0000488b5d08ff23488d64242848b8d015d1f1c27f0000488b5d08ff23f400ffffffffffffff01|@16318,1,@2724,@7540,@7546,@6531,@7491,@6511,@6515|169,0,@6496 216,0,@6497 283,0,@6498 362,0,@11223 392,0,@16282 492,0,@16313 502,0,@16313 529,0,@16313 539,0,@16313 624,0,@16314 691,0,@14642 712,0,@10027 6496:D3,200|483b65187305ff5558cd054989c64d8b2e4983fd050f85990000004d8b66084c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234f8b6ca5fc41f6c50175374d8b6d004d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70001000000c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c348b8008fd3f1c27f0000488b5d08ff23f4000000|@14617,1,@1674|61,0,@9995 182,0,@14613 6497:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@14618,1,@1675|78,0,@10034 6498:D4,48|483b65187305ff5558cd054989d648ba9090d3f1c27f0000498b5e084d8b46104d8b4e184d8b5620ff251a000000f400|@14621,1,@2716,@6499|16,0,@14619 6499:D11,1712|483b65187306ff5558ca0d0752534150415141524d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24084d89ec4d896e104c8b6c24104c89ea4d896e084c8b5c24184d89dd4d891e41564c8b184d89de4983fb290f8561010000488d6424084c8b70084c8b58104983fb030f85a5000000498d5fc8483b5d107306ff5550ca04704989df48c743f8060000004c8b1c244c895b28488d6424084d89e44c896320488d6424084889d248895318488d6424084d89ed4c896b10488d6424084c8b2c244c896b08488d64240849bd907660f1c27f00004c892b4c89f0ff15170600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e93c050000498d5fc8483b5d107306ff5550ca04704989df48c743f8060000004c8b1c244c895b28488d6424084d89e44c896320488d6424084889d248895318488d6424084d89ed4c896b10488d6424084c8b2c244c896b08488d64240849bde07660f1c27f00004c892b4c89f0ff156a0500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e92c0400004d89f54983fe1f0f85230100004c8b7008ff70104c89f0ff150f050000488b5c24304c8b7308ff7424184156ff7424184c8b4424284c8b4c24404c8b542438ff15df0400004989c64156498d5fc8483b5d107303ff55504989df48c743f8060000004c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849be307760f1c27f00004c8933488b442408ff15750400004989c44c8b34244d89f54983fe017524488d642440498d47f0483b45107306ff5550ca00104989c748c740f8010000004c8920c34d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c438c34d89ee4983fd190f8515020000ff70086a016a016a016a016a016a016a016a014c8b742470498b5608488b442448488b5c244049b80891d3f1c27f00004989e14c8b542450ff12415c415b415a415e415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8975184d8955104d895d084d8965004983fe010f853e01000049c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d47e04c3b45107303ff55504d89c749c740f80300000049c74010010000004c8b34244d89700849c700010000006a016a016a016a016a016a016a016a014c8b742478498b5608488b442450488b5c24484989e14c8b542458ff12415e415d415c415b415a415941585f498d47b8483b45107306ff5550ca807f4989c748c740f808000000488978384c8940304c8948284c8950204c8958184c8960104c8968084c8930488b5c24304c8b04244c8b4c2418ff15650200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c420c3488d6424384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d6424184983fe110f85be000000488b40084889d2488d642408ff124989c64d8b2e4983fd017556488d6424104d8b6e084d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d6424104d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15990000004989c6eb00498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15260000004989c6eb00eb93f4000000000000|@14623,1,@1679,@6504,@6504,@6509,@6515,@7524,@7530,@7534,@6503|213,0,@6500 378,0,@6501 597,0,@6502 809,0,@14622 6500:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@1676| 6501:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@1677| 6502:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@1678| 6503:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2711,@6515| 6504:D6,848|483b65187305ff5558cd014c8b284d89ee4983fd2975214c8b70084983fe01750b48b8c06ad1f1c27f0000c349c7c5010000004d89f4eb174983fe0d7501c348b86091d3f1c27f0000488b5d08ff2341f6c40175324d8b5424084d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc841554c8b2c244d89ec4c3b2db10200007215488d64240848b8e891d3f1c27f0000488b5d08ff234d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554c89f0ff157b02000048c7c3010000004c8b0424ff15620200004989c641564c8b342441f6c60175274d8b264d8b6e0841f6c40174114d89ee483b65187306ff5558ca0040ebdc49c7c601000000eb0749c7c6030000004983fe037511488d64240849c7c501000000e99f010000488b0424ff15fc0100004989c54d89ee41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750c49c7c401000000e9d80000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d8966104d896e0849bdb87b60f1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004d8934244d8d77d84c3b75107306ff5550ca00104d89f749c746f80400000049c74618010000004c8b2c244d896e10488d64240849bd28dbd0f1c27f00004d896e0849bdb8c4d0f0c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8b24244d89e641806424ffbf498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7000d0000004883c408c3f40000ffffffffffffff01|@14631,1,@1681,@6507,@6508,@6506|35,0,@10633 65,0,@14624 101,0,@9475 160,0,@14627 493,0,@6505 593,0,@9594 607,0,@4662 709,0,@9594 723,0,@4683 6505:D3,288|483b65187305ff5558cd054c8b72184d8b7486fc4c8b6a104989c441f6c50175724d8b55004d8b5d084983fc0175374d89d44d8d6fe04c3b6d107306ff5550ca05504d89ef49c745f8030000004d8965104d89750849c74500010000004d89ee4c8b6a08eb3d4d89e24983ea02711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0570eb8848b8c85dd1f1c27f0000488b5d08ff2341f6c50175614d8b5d004d8b65084883f80175264d89dd498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34989c34983eb02711048b8d0c6d0f1c27f0000488b5d08ff234c89d84d89e5483b65187306ff5558ca0160eb9948b8c85dd1f1c27f0000488b5d08ff23f40000000000|@14629,1,@1680|113,0,@9475 149,0,@10528 232,0,@9475 268,0,@10528 6506:D3,112|483b65187305ff5558cd014989c641f6c6017551498b0641ff760848baa892d3f1c27f0000ff124989c64156488b442408e8caffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@1684|29,0,@14630 6507:D5,184|483b65187305ff5558cd01a80175094c8b30488b4008eb0848c7c001000000c341f6c601754b4d8b264d8b6e084d8b14244d89d34c3b159d00000075234d89de4c3b358900000075074d8b742410eb2b48b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0140ebaf49bea85bd1f1c27f00004156e87effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@10112,1,@1682,@4662,@4662|82,0,@9991 115,0,@10515 6508:D3,128|483b65187306ff5558ca0901a80175664c8b28488b40084d8b75004983fe0d75454d8b750841ff75104d897498fc4883c302e8c9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f892d3f1c27f0000488b5d08ff2348c7c001000000c3f400|@14635,1,@1683|104,0,@14632 6509:D14,808|483b65187306ff5558ca09035053415041514c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1d6103000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9fe0100004d8b364d8b2e4c3b2dfd02000075104d8b76104983fe030f84d6000000eb15488d64242048b87810d1f1c27f0000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89700848c7001900000048bbc093d3f1c27f000049b8c093d3f1c27f000049c7c101000000ff1585020000ff342448bbc093d3f1c27f000049b8c093d3f1c27f000049c7c1010000004c8b542418ff15540200004989c64d8b2e4983fd19752c498b4608488b5c24104c8b4424084c8b0c24ff1528020000488d6424084c8b3424418066ffbf488d642418c3488d64242048b8e094d3f1c27f0000488b5d08ff234c8b74241041f6c60175454d8b264d8b6e084d8b1c244c3b1dda01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01753c48ba087fd3f1c27f0000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700848c70019000000ff1558010000eb584d8b364d8b2e4c3b2d41010000754e41ff761048ba087fd3f1c27f0000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c89700848c70019000000ff15f9000000488b1424ff12488d642408e94bfeffff488d64242048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1db400000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64242048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4a00000075134d8b76104983fe030f85acfdffffe966feffff488d64242048b87810d1f1c27f0000488b5d08ff23f400000000000000|@14667,1,@1705,@4641,@4641,@6434,@4644,@6434,@4644,@6531,@7491,@6511,@4641,@4641|113,0,@10158 164,0,@9991 220,0,@14636 230,0,@14636 256,0,@14636 266,0,@14636 355,0,@14642 464,0,@14473 543,0,@14473 622,0,@9991 731,0,@10198 786,0,@9991 6510:D3,32|483b65187305ff5558cd0148b8d093d3f1c27f0000488b5d08ff23f400000000|@14641,1,@1685|13,0,@14637 6511:D4,352|483b65187306ff5558ca09034989c64983f9017d02eb754c3b0d3a0100007f6c4c89c84883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08534d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb1e4d89e34983eb10eb1048b87095d3f1c27f0000488b5d08ff234d3bdc75184d89cc4983c40e49c1ec034983cc0149c7c301000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca087bebbf4d3bdc724a4d8d67d04c3b65107306ff5550ca08634d89e749c74424f8050000004d896c24204d894c24184d8944241049895c240849bdb08460f1c27f00004d892c244c89e34c89f0ff254c0000004d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca087beb8df400000000000000ffffffffffffff01|@16300,1,@2699,@6515|142,0,@14645 276,0,@6512 6512:D6,1152|483b65187305ff5558cd0552504c8b34244d8b264d89e54983fc1f0f85a10000004d89f54d89ee41ff75084d89f6498b4610488b5c2410ff156b0400004989c64156488b5c24184c8b43084889db4c8b4b104889db4c8b53184889db4c8b73204156488b442410ff15330400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f64d89ec4983fd190f85cc0100004d89f64d8b7608488d642408498b0641ff760841ff761841ff762041ff763041ff763849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89700849be708960f1c27f00004d8930498d5fc8483b5d107306ff5550ca01014989df48c743f8060000004c8b7424204c8973284c8b7424304d8b6e184c896b204d89f64d8b6e204c896b184d89f64d8b6e104c896b104d89f64d8b76084c89730849beb88960f1c27f00004c893348baf096d3f1c27f00004c8b4c2410ff124989c64c8b2c244d8b6d00488d6424084983fd03750c49bc2860d1f1c27f0000eb0749c7c4010000004d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424084c8b1c244d895d30488d64240849c74528030000004c8b1c244d895d20488d6424084c8b1c244d895d18488d6424084d8965104c8b24244d896508488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c34d89f64d89e54983fc0f0f85a40000004d89f5498b45084d89ed4d89ee41ff75104d89f641ff76184c8b7424084d8b364983fe117571488b5c2418ff15b90100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084c8b24244d896610488d6424084d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64242048c7c001000000c34d89f64983fd110f85130100004d89f64d8b76084d8b2e4d89ec4983fd017505e9bd0000004d89e54983fc037514498b46084c8b742408498b5608ff12e9a00000004983fd0775174c8b742408498b561048c7c001000000ff12e983000000498b4e084883f9017d0a488d642410e99d0000004c8b6c24084d8b7518493bce0f8d860000004989cc49c1ec034983cc014d89ed4d8b75204d89f34d89e249d1ea4f0fb634164e8d3475010000004883e10f4883f97f720949c7c201000000eb1149c7c20200000048d1e949d3e24983ca014d0bf24d89dd49d1ee49d1ec4788742500498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c408c3488d64241048b84896d3f1c27f0000488b5d08ff23488d64241048c7c001000000c3f4|@14653,1,@1688,@6516,@6517,@6515|325,0,@6513 420,0,@6514 433,0,@14652 472,0,@10547 1124,0,@14649 6513:D3,32|483b65187305ff5558cd054c8b720849c7060300000048c7c001000000c3f400|@14648,1,@1686| 6514:D3,304|483b65187305ff5558cd054c8b722841f6c6010f85020100004d8b264d8b6e084883f8010f85c10000004d89e64d8b2e4d89ec4983fd01750848c7c001000000c34d89e54983fc03750a498b4608488b5208ff224983fd07750d488b521048c7c001000000ff22498b4e084883f9017d02eb684c8b7220493bce7d5f4989cc49c1ec034983cc014c8b72184d89f54d89e349d1eb4f0fb6341e4e8d3475010000004883e10f4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bf349d1ee49d1ec478874250048c7c001000000c348b84896d3f1c27f0000488b5d08ff234989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0540e9f4feffff48b8c85dd1f1c27f0000488b5d08ff23f400000000|@14651,1,@1687|221,0,@14649 246,0,@9475 285,0,@10528 6515:D4,64|483b65187305ff5558cd095053488b1424488b442408ff124989c64983fe017511488b4424085b488d642408ff2526000000488d642410498b06c3f400000000|@14659,1,@1695,@6522| 6516:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@1689,@6515| 6517:D8,920|483b65187306ff5558ca090753415041514152a8010f85660300004c8b30488b40084d8b2e4d89ec4983fd010f85b200000041ff761041ff761841ff76204c8b7424404156488b5c24384c8b4424304c8b4c24284c8b542420e8a2ffffff4989c64156488b442408488b5c2438ff155d0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24104d896e184c8b6c24184d896e1049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424404c8930c208004d89e54983fc050f859000000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e8ebfeffff4989c64156488b442408488b5c2428ff159e0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c208004983fd070f85af00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e851feffff4989c641564c8b542438488b442408488b5c24204c8b4424184c8b4c2410ff15ed0100004c8b442438488b5c2410ff15d50100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c2080041ff761041ff76184c8b7424384156488b5c24304c8b4424284c8b4c24204c8b542418e89efdffff4989c64156488b442408488b5c2430ff15390100004989c34c8b6c24104d89ee4983fd017d0a488d642438e9df0000004d89f64c89f14c3b7424180f8dc90000004989cd49c1ed034983cd014c8b74244049d1ed4f0fb6342e4e8d3475010000004889c94989cc4883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01740c49bd2860d1f1c27f0000eb0749c7c5010000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d89e44d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c430c20800488d64243848b84097d3f1c27f0000488b5d08ff23488d64242048c7c001000000c20800f400000000000000|@14656,1,@1692,@6515,@6521,@6518,@6515,@6515|760,0,@10547 883,0,@14654 6518:D3,552|483b65187306ff5558ca090753415041514152a8010f85fd0100004c8b30ff700841ff76084d8b7610498b0641ff760841ff761841ff762041ff763041ff763849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89700849be909260f1c27f00004d8930498d5fc8483b5d107306ff5550ca01014989df48c743f8060000004c8b7424204c8973284c8b7424484c8973204c8b7424404c8973184c8b7424504c8973104c8b7424584c89730849bed89260f1c27f00004c893348baf096d3f1c27f00004c8b4c2410ff124989c64c8b2c244d8b6d00488d6424084983fd03750c49bc2860d1f1c27f0000eb0749c7c4010000004d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424084c8b1c244d895d30488d64240849c74528030000004c8b1c244d895d20488d6424084c8b1c244d895d18488d6424084d8965104c8b24244d896508488d6424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706010000004156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e817feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f40000|@10112,1,@1694|144,0,@6519 229,0,@6520 242,0,@14652 281,0,@10547 6519:D3,32|483b65187305ff5558cd054c8b720849c7060300000048c7c001000000c3f400|@14648,1,@1690| 6520:D3,304|483b65187305ff5558cd054c8b722841f6c6010f85020100004d8b264d8b6e084883f8010f85c10000004d89e64d8b2e4d89ec4983fd01750848c7c001000000c34d89e54983fc03750a498b4608488b5208ff224983fd07750d488b521048c7c001000000ff22498b4e084883f9017d02eb684c8b7220493bce7d5f4989cc49c1ec034983cc014c8b72184d89f54d89e349d1eb4f0fb6341e4e8d3475010000004883e10f4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bf349d1ee49d1ec478874250048c7c001000000c348b84896d3f1c27f0000488b5d08ff234989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0540e9f4feffff48b8c85dd1f1c27f0000488b5d08ff23f400000000|@14651,1,@1691|221,0,@14649 246,0,@9475 285,0,@10528 6521:D3,272|483b65187306ff5558ca0901a8010f85ed0000004c8b30488b40084d8b66084d8b5e104983fc017d05e9c30000004c3be30f8dba0000004d89e649c1ee034983ce0149d1ee4f0fb634304e8d3475010000004c89e14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01740c49bd2860d1f1c27f0000eb0749c7c5010000004d8d77e04c3b75107306ff5550ca09394d89f749c746f8030000004d895e104d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b84097d3f1c27f0000488b5d08ff2348c7c001000000c3f4000000000000|@10112,1,@1693|132,0,@10547 243,0,@14654 6522:D9,3480|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e934010000909090e919020000909090e978020000909090e9e9020000909090e96a050000909090e9fa050000909090e9f8050000909090e963060000909090e961060000909090e969060000909090e9da060000909090e934070000909090e900080000909090e936090000909090e96b090000909090e9ca090000909090e9050a0000909090e9770a0000909090e9d80b0000909090e9320c0000909090e9760c0000909090ff7008ff7010488b401848bae897d3f1c27f0000488b5c2410ff124989c6415648bae897d3f1c27f0000488b442410488b5c2418ff124989c6415648bae897d3f1c27f0000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70001000000c34c8b700841ff3641ff760841ff761041ff7618498b462048bae897d3f1c27f0000488b5c2420ff124989c6415648bae897d3f1c27f0000488b442420488b5c2428ff124989c6415648bae897d3f1c27f0000488b442420488b5c2430ff124989c6415648bae897d3f1c27f0000488b442418488b5c2438ff124989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424104d8966204d896e184c8b6c24204d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642438498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34c8b7008ff701048bae897d3f1c27f00004c89f0488b5c2408ff124989c64156488b442408488b5c2410ff155c0b00004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c70005000000c34c8b7008ff7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c6415648bae897d3f1c27f0000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70007000000c3ff7008ff7010ff70184c8b7020498b0641ff760841ff761048bae897d3f1c27f0000488b5c2428ff124989c64156f644241001753c4c8b742410498b0648bae897d3f1c27f0000488b5c2430ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b6c2410498b45004d89ed4d89ee41ff75084d89f641ff761048bae897d3f1c27f0000488b5c2438ff124989c64156f644241001753c4c8b742410498b0648bae897d3f1c27f0000488b5c2440ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648bae897d3f1c27f0000488b442428488b5c2438ff124989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24104c8968204c8b2c244c896818488d6424084c8970104c8b7424284c89700848c700090000004883c438c34c8b7008ff7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c6415648bae897d3f1c27f0000488b442410488b5c2418ff124989c6415648bae897d3f1c27f0000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64242048c7000b000000c3488d642408c3ff70084c8b7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c64156488b442410488b5c2418ff154a0700004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424204c89700848c7000f000000c3488d642408c3488d64240848b8f897d3f1c27f0000c34c8b7008ff7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c6415648bae897d3f1c27f0000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70015000000c34c8b7008ff7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c70017000000c34c8b7008498b0641ff760841ff761041ff761841ff762041ff762841ff763041ff763848bae897d3f1c27f0000488b5c2438ff124989c64156488b442428488b5c2440ff15c80500004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f8080000004c8b6424084d8966384c8b6424104d8966304c8b6424184d8966284c8b6424204d8966204d896e184c8b6c24304d896e104c8b6c24384d896e084c8b2c244d892e488d642448498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3ff70084c8b7010498b0641ff760841ff761048bae897d3f1c27f0000488b5c2418ff124989c64156f644241001753c4c8b742410498b0648bae897d3f1c27f0000488b5c2420ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c89700848c7001b0000004883c418c3488b4008488b1c24ff15e90300004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c34c8b7008ff70104c89f0488b5c2408ff159d0300004989c6415648bae897d3f1c27f0000488b442408488b5c2410ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c3488b400848bae897d3f1c27f0000488b1c24ff124989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3ff7008ff7010488b401848bae897d3f1c27f0000488b5c2410ff124989c6415648bae897d3f1c27f0000488b442410488b5c2418ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424184c89700848c70023000000c3ff7008ff70104c8b7018498b0641ff760841ff761048bae897d3f1c27f0000488b5c2420ff124989c64156f644241001753c4c8b742410498b0648bae897d3f1c27f0000488b5c2428ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d8b65104d8966104d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648bae897d3f1c27f0000488b442410488b5c2420ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b7424104c89700848c700250000004883c420c3ff70084c8b7010ff701848bae897d3f1c27f00004c89f0488b5c2410ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64241048c70027000000c34c8b7008ff70104c89f0488b5c2408ff15a60000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c70029000000c34c8b7008ff701048bae897d3f1c27f00004c89f0488b5c2408ff124989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c7002b000000c3f400000000|@14660,1,@1696,@6524,@6525,@6528,@6529,@6530,@6523|218,0,@14657 240,0,@14657 267,0,@14657 376,0,@14657 398,0,@14657 425,0,@14657 452,0,@14657 597,0,@14657 703,0,@14657 728,0,@14657 838,0,@14657 875,0,@14657 1114,0,@14657 1151,0,@14657 1364,0,@14657 1473,0,@14657 1498,0,@14657 1525,0,@14657 1631,0,@14657 1747,0,@14658 1768,0,@14657 1793,0,@14657 1889,0,@14657 2012,0,@14657 2207,0,@14657 2244,0,@14657 2594,0,@14657 2675,0,@14657 2748,0,@14657 2770,0,@14657 2881,0,@14657 2918,0,@14657 3131,0,@14657 3231,0,@14657 3402,0,@14657 6523:D3,248|483b65187305ff5558cd0953a8010f85d10000004c8b28ff70084d8b750041ff750841ff3641ff7608498b461048bae897d3f1c27f0000488b5c2420ff124989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e84affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@1704|47,0,@14657 6524:D3,128|483b65187305ff5558cd094989c65341f6c601755b498b0641ff760848bae897d3f1c27f0000488b5c2408ff124989c64156488b442408488b5c2410e8bfffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@10112,1,@1697|30,0,@14657 6525:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@1698,@6526| 6526:D4,352|483b65187305ff5558cd094c8b304d89f54983fe01756aff7008ff7010ff7018488b402048bae897d3f1c27f0000ff124989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8970204c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d64240848c70001000000c34d89ee4983fd05753a488b400848bae897d3f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe077534488b4008ff15a40000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008ff7010488b401848bae897d3f1c27f0000ff124989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c70003000000c3f400000000000000|@14664,1,@1699,@6527|38,0,@14657 144,0,@14657 266,0,@14657 6527:D3,264|483b65187305ff5558cd0953a8010f85e50000004c8b30ff700841ff3641ff76084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048bae897d3f1c27f0000488b5c2418ff124989c64d8b2e4983fd19757c4d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e84bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64242048b87098d3f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400|@10112,1,@1700|77,0,@14657 235,0,@14661 6528:D3,176|483b65187305ff5558cd0953a8010f858c0000004c8b30ff7008498b0641ff760848bae897d3f1c27f0000488b5c2410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@10112,1,@1701|35,0,@14657 6529:D3,200|483b65187305ff5558cd0953a8010f85a00000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001100000048bae897d3f1c27f0000488b5c2408ff124989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b82099d3f1c27f0000488b5d08ff23488d64240848c7c001000000c3f4000000000000|@10112,1,@1702|66,0,@14657 166,0,@14665 6530:D3,176|483b65187305ff5558cd0953a8010f858c0000004c8b30ff7008498b0641ff760848bae897d3f1c27f0000488b5c2410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@10112,1,@1703|35,0,@14657 6531:D13,712|483b65187306ff5558ca09034989c6534150498d47e8483b45107306ff5550ca00424989c748c740f8020000004c89700848c700190000006a016a0148c7c3010000004989e0ff15dc020000ff3424ff7424104c8b74242841f6c60175454d8b264d8b6e084d8b1c244c3b1db002000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9600100004d8b364d8b2e4c3b2d4c02000075104d8b76104983fe030f8496000000eb15488d64243048b87810d1f1c27f0000488b5d08ff234c8b7424084d8b2e4983fd1b755c4d89f6498b46084d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b7424204d893048bac899d3f1c27f0000488b5c2428ff15d10100004989c54c8b6424204d89e64d892c244d89f6418066ffbf58488d642428c3488d64243048b84871d4f1c27f0000488b5d08ff234c8b74242841f6c60175454d8b264d8b6e084d8b1c244c3b1d7901000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750d488b442408ff1526010000eb294d8b364d8b2e4c3b2d0f010000751f41ff7610488b442410ff15f6000000488b1424ff12488d642408e9e9feffff488d64243048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1db100000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4700000075134d8b76104983fe030f854afeffffe9c4feffff488d64243048b87810d1f1c27f0000488b5d08ff23f400000000|@16127,1,@2586,@4641,@4641,@7413,@4644,@7413,@4644,@6532,@4641,@4641,@7410|178,0,@10158 229,0,@9991 300,0,@14668 356,0,@16116 529,0,@9991 638,0,@10198 693,0,@9991 6532:D10,3528|488dbc2430ffffff483b7d187306ff5560ca0d0152534150ff30ff7008ff70104c8b68184c8b602049c7c3010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e415649c7c3010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d891e415649c7c6010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b5424384d8b52604d8956104c8b5424384d8b52684d89560849ba90bc60f1c27f00004d89164d89334983fc017d0a488d642440e9500100004c3b25ba0c00000f8d3e0100004c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948b8a854d1f1c27f0000f348ab415649c7c4030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d8926415649c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564c8b7424204d8b264c8b7424204d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b5c24204d89334c8b7424184d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849bba854d1f1c27f00004d891e4c8b5c24184d89334d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608030000004d8926415649c7c601000000eb15488d64244048b8d015d1f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415649c7c6010000004c8b6c24604d8b6d4041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441566a016a014c8b7424184c3b7424107c1549c7c5010000004c8b7424784d8b7640e9190a00004c8b742478498b4640488b5c2418ff15ec0a00004989c64c89342448c744240801000000ff3424ff7424104c8b34244983fe01750f49be4882d1f1c27f0000e9940000004c8b34244983fe017e644c8b34244c3b354f0a00007d4d4c8b2c244c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000eb22488da42490000000eb08488da4249000000048b8d010d3f1c27f0000488b5d08ff234c8b24244d3be57f27418066ffbf41564c8b34244d8b6ef849c1e50849c1ed074983cd0149c7c601000000e9440100004c8b6424204983ec014d03e57118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8b5424284d2bd47118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234983c2014c8b6424584d8b24244c8b5c24584d8b1b4983c3027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8b4c24584d89194c8b5c24504d8b0b4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b0849b9a854d1f1c27f00004d890b4c8b4c24504d89194d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308030000004d89234d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244f8964aefc4d89ec4983c4027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0060e98cfeffff4983fd010f851905000041564c8b74246841ff364c8b7424704d8b364983c6027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24704d8975004c8b7424684d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24684d8975004c8b74247041ff364c8b7424784d8b364983c6027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24784d8975004c8b7424704d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24704d897500488b442428488b5c24784c8b442470ff15bd0700004989c641564c8bb424880000004983fe01750949c7c601000000eb554d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049bea85ed1f1c27f00004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442408488b5c2438ff15320700004889c34883fb017504415deb12488b0424ff15130700004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000049c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b9c24b00000004d8b5b604d895d0849bb28c360f1c27f00004d895d004d892c244d8d4fe84c3b4d107306ff5550ca00404d89cf49c741f8020000004c8b6c24104d89690849c701050000004d8d57e84c3b55107306ff5550ca00424d89d749c742f80200000049c74208010000004d89326a016a016a0148ba30a1d3f1c27f00004c8bb424c80000004d8b76404c8bac24c80000004d8b6d484c8ba424c80000004d8b6424504c8b9c24c80000004d8b5b5854ffb424a0000000ffb424a0000000ffb42490000000ffb424a0000000ffb424b0000000ff742470ffb42400010000ffb42400010000ffb424e8000000ff742470ffb424100100004156ffb424d80000004155ffb42490000000ffb424b800000041544153488b84244801000048bbc046d1f1c27f000049c7c003000000ff155d050000415c488d642408415e488d6424104983fe03750a488d6424084d89e6eb7a4d8d77e04c3b75107306ff5550ca00104d89f749c746f8030000004c8b6c24184d896e10415d4d896e0849c706370000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c8b6c24504d8b65004983fc017d0d488da424a0000000e91a0100004c3b25620400000f8d050100004c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948b888bcd3f1c27f0000f348ab4155ff7424084c89f048c7c30100000049b8a85bd1f1c27f00004c8b4c24084c8b542450ff15260400004c8b34244d8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be4882d1f1c27f0000eb5a4d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e95e4c89f748d1e9f348a5418066ffbf4883c4104c8b6c24504d8b6d0049c7c301000000eb6f488da424a000000048b8d015d1f1c27f0000488b5d08ff234d89eb4983eb024d89ea4983ea024c8b24244f8b6494fc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d8914244d89dd4d89e6483b65187306ff5558ca0060e986faffff41f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd4882d1f1c27f0000e9c100000049c7c4010000004d89dd41f6c50175394d8b4d084d89e24983c2027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25370200007c18488da4249000000048b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f8508010000418065ffbff644246001740949c7c403000000eb0749c7c4010000004983f4024983f4024983f40241564155ff742418488b9c2480000000488b8424980000004c8b5c24184c8bb424a00000004d8b56084c8bb424a00000004d8b4e104c8bb424a00000004d8b46184c8bb424a0000000498b7e204c8bb424a0000000498b76284c8bb424a0000000498b56304c8bb424a0000000498b4e384c8bac24a800000048894c2468488954247048897424784889bc24800000004c898424880000004c8b04244c898c24900000004989d9488b5c24084c899424980000004989c2488b4424104c899c24a00000004c89a424a80000004c896c24604883c460ff2500010000488d6424284d8b134d8b4b084f8954a5fc4d89e24983c2027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9aafeffff41f6c60175394d8b5e084d89ec4983c4027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc14c8b7424184d2bf57118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c6014c8b6c24784d8b6d404c892c244c89742408e98ff5fffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14851,1,@1950,@6778,@7396,@6535,@7398,@5292,@6777,@5409|225,0,@6533 325,0,@10468 455,0,@9475 518,0,@10468 593,0,@10027 633,0,@9475 711,0,@9475 839,0,@10817 972,0,@13764 1058,0,@9475 1092,0,@9475 1143,0,@9475 1206,0,@10468 1324,0,@9475 1402,0,@9475 1512,0,@9475 1665,0,@10534 1901,0,@6534 2006,0,@14724 2174,0,@10368 2445,0,@14850 2474,0,@10515 2531,0,@10817 2659,0,@10027 2836,0,@10817 2888,0,@9475 2941,0,@10818 3332,0,@9475 3398,0,@9475 3452,0,@9475 6533:D6,1624|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc010f85820300004d89ec4d8b6c240841ff7424104983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb86fd1f1c27f0000e90e0200004d89f64983ee027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd409ad3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7035d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd789ad3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd03750b48b8b09bd3f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7210498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f8010000750949c7c603000000eb2b4c3b35de010000750949c7c603000000eb194c3b35c4010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd909cd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@14693,1,@1706,@9805,@9803,@9797|26,0,@10414 83,0,@9475 117,0,@10678 146,0,@9475 226,0,@9475 281,0,@4699 326,0,@10681 374,0,@10236 419,0,@14669 463,0,@10236 508,0,@10685 596,0,@10236 640,0,@12144 689,0,@10688 834,0,@10236 879,0,@14671 964,0,@10414 988,0,@14679 1008,0,@10414 1029,0,@9475 1256,0,@11514 1304,0,@10391 1349,0,@11357 1500,0,@10236 1545,0,@14686 6534:D6,2320|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc010f85390600004d89ec41ff74240841ff7424104d8b6c241841ff7424204983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9bb0400004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9680300004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdb86fd1f1c27f0000e9150200004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893049bea8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd989dd3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed09dd3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd089ed3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be409ed3f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd789ed3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd03750b48b8509fd3f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a0d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@14723,1,@1707,@9805,@9803,@9797|26,0,@10414 93,0,@9475 127,0,@10678 156,0,@9475 206,0,@4698 240,0,@10678 269,0,@9475 324,0,@4698 358,0,@10678 387,0,@9475 442,0,@4698 478,0,@9475 533,0,@4698 578,0,@10681 626,0,@10236 671,0,@14694 715,0,@10236 760,0,@10685 848,0,@10236 892,0,@14696 937,0,@10236 981,0,@10685 1069,0,@10236 1114,0,@14698 1158,0,@10236 1203,0,@10685 1291,0,@10236 1335,0,@14700 1384,0,@10688 1529,0,@10236 1574,0,@14702 1659,0,@10414 1683,0,@14709 1703,0,@10414 1724,0,@9475 1951,0,@11514 1999,0,@10391 2044,0,@11357 2195,0,@10236 2240,0,@14716 6535:D41,37256|488dbc24f0feffff483b7d187306ff5560ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e9ef010000909090e998050000909090e9580a0000909090e9940b0000909090e9f00e0000909090e912150000909090e913260000909090e90f270000909090e9a6350000909090e9db3a0000909090e9573f0000909090e945410000909090e9f9510000909090e925550000909090e959560000909090e9f4570000909090e91b5f0000909090e9e8620000909090e9d9690000909090e9156b0000909090e9e16c0000909090e9a37000009090904c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7628ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9fa8e00004c8b700841ff3641ff760841ff761041ff761841ff76204c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8b7424404d8b364983fe010f85820000004c8bb424f00000004d8b364c8bac24f00000004d8b6d004983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424f00000004d892c244c8bac24e80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e80000004d892c24e9960000004c8b7424404d8b364983fe03757f4c8bb424f00000004d8b364c8bac24f00000004d8b6d004983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424f00000004d892c244c8bac24e80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e80000004d892c24eb094c8b7424404d8b760841564c8bb424f800000041ff364c8bb424000100004d8b364983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8bac24000100004d8975004c8bb424f80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24f80000004d8975004c8bac24e80000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24184d896e0849bd585f61f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a01ffb42490000000ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c245001000049c7c0010000004c8b8c24e000000049c7c201000000e83dfaffff488d642430415d488d64241849c7c601000000e9f4850000ff7008ff70104c8b74242841ff76084c8b74243041ff76104c8b7424284d8b364983fe010f85820000004c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d892c244c8bac24d00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d00000004d892c24e9960000004c8b7424284d8b364983fe03757f4c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d892c244c8bac24d00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d00000004d892c24eb094c8b7424284d8b760841566a016a01ffb424f0000000ffb424f0000000ffb424e0000000ffb424f8000000ffb424f80000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000ff742410ffb42488000000ff742418ff7424184156415541544153415241514150575652515350ffb42400010000488b8424e0000000488b9c24f00000004c8d8424b80000004c8b8c24b00000004c8b9424a8000000ff15be8a0000488d642428415b415c4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424c80000004d892a4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b5424104d8955104d8975084d895d004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b5424084d8955104c8b5424104d8955084d895d0041554d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24084d895d0849c745000500000041554d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ff742478ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c24f00000004c8b8424300100004c8b8c24e80000004c8b9424e0000000e8c2f5ffff488d642430415b488d642408415e488d6424184d8d67e84c3b65107306ff5550ca00484d89e749c74424f802000000415d488d6424104d896c240849c70424090000004c8bac24d00000004d895d004d8965084d89751048c7c0010000004883c438c298004c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7638ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9867f00004c8b70084c8b60104c8b58184c8b50204d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084d89750041554983fe030f850d020000488d6424084d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d895d184d8965104d89750849c74500090000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8a1d3f1c27f00004d89661849bc18a2d3f1c27f00004d8966104d896e0849c7060d000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e9cdf1ffff488da424900000006a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9c07b00004c8b700841ff3641ff760841ff761041ff761841ff76204c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742478ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243801000049c7c0010000004c8b8c24e00000004c8b942420010000e88aeeffff488d642430415b488d6424186a016a014c8b7424284983fe0175134c891c244c8b7424104c89742408e91d0200004c8bb424000100004d8b364c8bac24000100004d8b6d004983c5027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8ba424000100004d892c244c8bac24f80000004d8b65004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004c8ba424f80000004d892c24f644242801740d4c8b6c24284983fd017d1aeb1f4c8b6c24284d0fb66dff4e8d2c6d010000004983fd237407488b5c2428eb2048b8f814d1f1c27f0000488b5c242841534156ff1553800000415e415b4889c3f6c30174134989dd4983ed014d6bed0270064983c501eb1848c7c00500000041534156ff151b800000415e415b4989c54d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d896a0849c702050000004c8bac24f00000004d8b6d004c8ba424f00000004d8b24244983c4027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8b8c24f00000004d89214d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184c8b5424104d895424104d896c240849c70424090000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c892c244c897424084c8b0424ff7424084c8bb4240801000041ff364c8bb424100100004d8b364983c6027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24100100004d8975004c8bb424080100004d8b2e4d8d77e84c3b75107306ff5550ca00214d89f749c746f8020000004d896e0849c706050000004c8bac24080100004d8975006a016a014c8b7424404983fe0375124c89042448c744240801000000e9787100004c8bb424080100004d8b264c8bb424080100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424200100004d8b164c8bb424200100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00354d89f749c746f8020000004d896e0849c706050000004c8bac24180100004d8975004c8bb42410010000498b3e4c8bb424100100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24100100004d89750048c7c3010000004c8b742458e9446d0000ff7008ff7010ff70184c8b7424204d8b364983fe030f853b0500004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8b74244841ff7620ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c240001000049c7c0010000004c8b8c24c80000004c8b9424e8000000ff124989c6488d64243041566a016a016a01ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24280100004c8b84242001000049b9a854d1f1c27f00004c8b9424e0000000e805e8ffff488d642430415b488d6424184d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424084d89750849c74500070000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b34244d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c24280100004c8b84242001000049b9a854d1f1c27f00004c8b9424e0000000e837e6ffff488d642430415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c488d6424284d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d89342448c7c0050000004883e801486bc000700b488d6424204883c001eb1d488d64242048c7c00500000048c7c3010000004154ff1552780000415ca801740b4989c64983c6027002eb1448c7c3030000004154ff152a780000415c4989c64d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500050000004c8bb424980000004d89264d896e0849c746100100000048c7c001000000c298004c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975004c8b7424384983fe03757f4c8bb424e00000004d8b364c8bac24e00000004d8b6d004983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d892c244c8bac24d80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424d80000004d892c24eb044c8b342441564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8b74245841ff7620ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c241001000049c7c0010000004c8b8c24c00000004c8b9424f8000000ff124989c6488d64243041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c24400100004c8b8424380100004c8b8c24e00000004c8b9424e8000000e8a6e0ffff488d6424304c8b2424ff7424106a016a016a014c8b7424184983fe03751c4c89242448c7442408010000004c8b7424604c89742410e9780300004c8bb424900000004983fe030f85a70100004c8bb424980000004d8b5e084c8bb424100100004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d8975104c8b7424504d89750849c74500370000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706030000004983fb01747d4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d895d0849c74500350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c7030d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8965084d895d004d89eceb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004c8bb424380100004d8b364c8ba424380100004d8b24244983c4027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24380100004d89234c8ba424300100004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24300100004d89234c892c2448c7442408010000004c89742410e9bf0100004c8bb424200100004d8b1e4c8bb424200100004d8b364983c6027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24200100004d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c745000b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8965084d8975004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424584d8974240849c70424090000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d89661849c746100b0000004c8b6424604d89660849c706210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264c892c244c897424084c8b7424584c897424104c8b2424ff742408ff7424184d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e0849c7060500000041564d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424604d89750849c74500070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ffb424d8000000ffb42478010000ffb42478010000ffb42478010000ffb42478010000ffb424780100004c8bb424780100004c8bac24700100004c8ba424680100004c8b9c24600100004c8b9424580100004c8b8c24500100004c8b842448010000488bbc2440010000488bb42438010000488b942430010000488b8c2428010000488b9c2420010000488b842418010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842468010000488b9c24980100004c8b8424900100004c8b8c24e80000004c8b9424e0000000e871dbffff488d642430488b1c24ff7424104c8bb424d00000004983fe030f85220100004c8b34244983fe030f84140100004c8bb424d80000004d8b66084c8bb424500100004d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f8030000004d8975104c8b7424304d89750849c74500370000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d896e0849c706030000004983fc01747d4d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049895d084d896500eb034989dd498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933eb004883fb0175074c8b5c2438eb0e488b442438ff15b86c00004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f8020000004c8bb424a00000004d8974240849c70424090000004c8bb424d00000004983fe037511488da424e800000049c7c603000000eb254c8b7424584983fe03750b415e4881c4e0000000eb0f488da424e800000049c7c6010000004c8bac24980000004d895d004d8965084d89751048c7c001000000c298004c8b700841f6c6010f848b00000041f6c601747041f6c60174134c89f04883e801486bc00270064883c001eb104c89f348c7c005000000ff15dd6b0000a801740b4989c64983c6027002eb1048c7c303000000ff15b96b00004989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70005000000eb3b488d64242848b8381fd1f1c27f0000488b5d08ff234d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70001000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25066b0000ff7008ff70104c8b74242841ff76104c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975006a016a016a014c8b7424304d8b364983fe130f85680300004c8b7424304d8b76084d8b364983fe070f85860100004c8bb424b80000004983fe01752649be4060d1f1c27f00004c8b6c24404c892c2448c7442408010000004c89742410e94d0100004c8bac24b00000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba85ed1f1c27f00004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049be4060d1f1c27f00004c8924244c896c24084c89742410e9c70100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c0010000004c8b8c24e00000004c8b942428010000e8f1d3ffff488d642430415c488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba85ed1f1c27f00004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea85bd1f1c27f00004c8924244c896c24084c89742410e9fd0500004c8b7424304d8b364983fe0f0f85220400004c8b7424304d8b6e0841f6c5017415488d64246848b808afd1f1c27f0000488b5d08ff234c8bb424a80000004983fe01750949c7c601000000eb204c8bb424a80000004d8b364d3bf5750949c7c603000000eb0749c7c6010000004983fe03752649be4060d1f1c27f00004c8b6c24404c892c2448c7442408010000004c89742410e96c0300004d0fb675ff4e8d3475010000004981e6ff0100004983fe010f844a0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba85ed1f1c27f00004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea85bd1f1c27f00004c8924244c896c24084c89742410e9040200004d8b75f849c1e60849c1ee074983ce014983fe030f82040200004d8b5d0041f6c3017415488d64246848b808afd1f1c27f0000488b5d08ff234d0fb663ff4e8d2465010000004981e4ff0100004983e4074983fc050f85ae0100004983fe0375424d8d77e84c3b75107306ff5550ca00084d89f749c746f8020000004d895e0849c706010000004c8b6c24404c892c2448c7442408010000004c89742410e9610100004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d89751849c745100b0000004c8b7424184d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24404d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049baa85ed1f1c27f00004d8956084d892e4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706010000004c8924244c896c24084c89742410e9f3010000488d64246848b838a2d3f1c27f0000488b5d08ff23488d64246848b8b8a2d3f1c27f0000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42480000000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842420010000488b9c244801000049c7c0010000004c8b8c24e80000004c8b942430010000e8efcdffff488d642438415c488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049bba85ed1f1c27f00004d895e084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89750049bea85bd1f1c27f00004c8924244c896c24084c89742410ff3424ff742410ff7424204c8b6c24684983f5024c8b6424684983f4024d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100300000049c746080100000049c7060100000041564c8b6c24704983f5024d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180300000049c746100300000049c746080100000049c7060100000041566a016a016a01ffb424e0000000ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350ffb42458010000ffb424e8000000ffb424e8000000488b842450010000488b9c24d00000004c8b8424100100004c8d8c24d80000004c8b942478010000ff15275e0000488d642430ff3424ff742410ff7424204c8bb424a80000004983fe03751d4c8bb424b000000041ff760849c7c6010000004c8b6c2408e9794b00004c8b7424084983fe0175074c8b6c2448eb13488b442448488b5c2408ff15c25d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f805000000415c4d89662049c74618010000004c8b6424384d8966104d896e084c8b6c24704d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450017000000f6442478010f85a2000000488d6424084c8b7424704d8b1e4c8bb424280100004d8b264c8bb424280100004d8b364983c6027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9424280100004d89324d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70609000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb51488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9774900004c8b70084d8b2e4d89ec4983fd070f85cb0000004c8b7424784983fe0175504c8b7424684983fe017515488d64242848b80895d1f1c27f0000488b5d08ff234c8b7424684d8b364d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70001000000eb2b4c8b7424704d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25705b00004d89e54983fc0375154d8b6e0849c7c6010000004c8b642478e95b4700004983fd010f85d90200004d8b5e084c8b7424184d8b6e084c8b7424504d3bde7d0a4c8b742448e9614600004c8b7424084d8b364983fe010f85820000004c8bb424b80000004d8b364c8ba424b80000004d8b24244983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d89224c8ba424b00000004d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004c8b9424b00000004d8922e9960000004c8b7424084d8b364983fe03757f4c8bb424b80000004d8b364c8ba424b80000004d8b24244983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d89224c8ba424b00000004d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004c8b9424b00000004d8922eb094c8b7424084d8b76084c8b6424504d2bdc7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c3014c8b6424404d8b6424f849c1e40849c1ec074983cc014d3bdc7215488d64242848b89011d1f1c27f0000488b5d08ff234c8b6424404f8b5c9cfc4d8b234d8b5b084983ed014d03dd7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89651849c745100100000049c745080100000049c745000b0000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f802000000415b4d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c298004d8b6e084c8b7424184d8b5e084c8bb424980000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424980000004f8b74aefc4d8b264d89e54983fc01757b4d8b66084d8b6e104d89de4d2bf57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8975104d89650849c74500030000004c8bb424c0000000415c4d89264d896e0849c746100100000048c7c0010000004883c420c298004983fd05756f4d8b76084d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff251f570000488d64242848b830a3d3f1c27f0000488b5d08ff23ff7008ff70104c8b74242841ff76086a016a016a01ff742450ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f8000000e89ac3ffff488d6424305b415e488d6424084d8b264d89e54983fc030f85920200004d8b66084d8b6e104c8b7424204d8b364983fe01757d4c8bb424d00000004d8b364c8b9c24d00000004d8b1b4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9424d00000004d891a4c8b9c24c80000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424c80000004d891ae9910000004c8b7424204d8b364983fe03757a4c8bb424d00000004d8b364c8b9c24d00000004d8b1b4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9424d00000004d891a4c8b9c24c80000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424c80000004d891aeb094c8b7424204d8b7608415b4d2bdd7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c3014c8b2c244983ed014d03dd7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983fb010f8c0d0100004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d896518415c4d89651049c745080100000049c745000b0000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24084d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424c80000004d89264d896e0849c746100100000048c7c0010000004883c430c29800488d64243848b8e8a3d3f1c27f0000488b5d08ff23488d6424084983fd090f85a90000004d8b7608415d4983ed014d6bed087115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488d6424104983c5014d8d47d04c3b45107306ff5550ca08604d89c749c740f8050000004d89682049bd58a4d3f1c27f00004d89681849c74010010000004d89700849c70007000000584c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff2593520000488d64243848b868a4d3f1c27f0000488b5d08ff234c8b7424084d8b364983fe010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e9960000004c8b7424084d8b364983fe03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb094c8b7424084d8b76084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410710000004d8974240849c70424250000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f802000000415b4d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c29800ff7008ff7010ff70184c8b7424304d8b2e4c8b7424304d8b66084c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d89334c8bb424d00000004d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706050000004c8b9c24d00000004d89334c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24c80000004d89334c8bb424c80000004d8b364c8b9c24c80000004d8b1b4983c3027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424c80000004d891a6a016a014c8b5c24484983fb030f85fb0000004c8b9c24f00000004d8b134c8b9c24f00000004d8b1b4983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b8c24f00000004d89194c8b9c24e80000004d8b0b4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b0849c703050000004c8b8c24e80000004d89194c8b9c24f00000004d8b1b4c8b8c24f00000004d8b094983c1027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b8424f00000004d89084c8b8c24e80000004d8b014d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004c8b8424e80000004d89084c8914244c895c2408eb134c8b5c24184c891c244c8b5c24184c895c2408ff3424ff7424104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703070000004d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d8972104c8b7424204d89720849c702090000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89560849c706050000004c8b9424000100004d8b124c8b8c24000100004d8b094983c1027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8b8424000100004d89084c8b8c24f80000004d8b014d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004c8b8424f80000004d89084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89510849c7012d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b4424484d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564983c4047115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d8d5ff04c3b5d107306ff5550ca00304d89df49c743f8010000004c8b7424284d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060500000041566a016a016a01ffb42498000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c24e800000049c7c0010000004c8b8c24e00000004c8b9424f0000000e8c0b8ffff488d642430415e488d642408415d488d6424186a016a014c8b6424684983fc010f85e80100004983fd010f85cc0100004c8bac24f80000004d8b65004c8bac24f80000004d8b6d004983c5027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24f80000004d892b4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004c8bac24100100004d8b55004c8bac24100100004d8b6d004983c5027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8b8c24100100004d89294c8bac24080100004d8b4d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500050000004c8b8c24080100004d89294d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745002b0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c7020d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8975084d8955004d89ee4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084d895d004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264c892c244c89742408eb0d4c89342448c744240801000000e9260200004983fd010f850f0200004c8bac24100100004d8b6d004c8ba424100100004d8b24244983c4027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24100100004d89234c8ba424080100004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24080100004d89234d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704242b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d897424084d892c244c8b7424704d8b5e084c8bac24e80000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104c8b6c24184d896e0849c706370000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004983fb01747b4d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d895e0849c706350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e4d89f4eb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4c89342448c744240801000000eb0d4c89342448c7442408010000004c8b1c24ff7424084c8bb424180100004d8b264c8bb424180100004d8b364983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706050000004c8bac24100100004d8975004d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d89660849c706050000004c8bac24f80000004d8b55f849c1e20849c1ea074983ca014c8b6c24484d3bea7218488da4248800000048b80017d1f1c27f0000488b5d08ff234c8bac24f80000004c8b5424484f897495fc4d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004c8b6c24184d896e0849c7060500000041564c8bb424200100004d8b2e4c8bb424200100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9424200100004d89324c8bb424180100004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89560849c706050000004c8b9424180100004d89324d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004c8b6424404d89660849c706070000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a01ffb424a8000000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000488b8424e8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842440010000488b9c24680100004c8b8424600100004c8b8c24e80000004c8b9424e0000000e82db1ffff488d642430415c488d642408415e488d6424104c8b6c24684d8b6d004983fd010f85810000004c8bac24180100004d8b6d004c8b9c24180100004d8b1b4983c3027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8b9424180100004d891a4c8b9c24100100004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424100100004d891ae9960000004c8b6c24684d8b6d004983fd03757e4c8bac24180100004d8b6d004c8b9c24180100004d8b1b4983c3027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8b9424180100004d891a4c8b9c24100100004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703050000004c8b9424100100004d891aeb094c8b6c24684d8b6d084c8b5c24704983fb017505e9180100004983fe010f850e0100004c8b7424784d8b56084c8bb424f00000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8973104c8b7424184d89730849c703370000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d895e0849c706030000004983fa0174784d8d5fe04c3b5d107306ff5550ca00744d89df49c743f80300000049c74310010000004d89530849c703350000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c7020d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d8913eb034d89e34d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d893424eb004c8b34244983fe01750a488d6424404d89e3eb51415e4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334883c4384d8d77e84c3b75107306ff5550ca00284d89f749c746f802000000415c4d89660849c706090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d8974241849c74424100b0000004d896c240849c70424210000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706090000004c8bac24d80000004d8965004d8975084c8b7424284d89751048c7c0010000004883c440c29800488b4008ff70104c8b34244983fe010f85e2000000488d64240849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b34244d8930488b942490000000488b9c2488000000ff124989c64c8b2c244d8975004c8b3424418066ffbf4d8d47e84c3b45107303ff55504d89c749c740f802000000415e4d89700849c70001000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25cd3e0000488b942490000000488b9c248800000049c7c001000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060f0000004156488b442408ff156e3e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062b000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e940aaffff488da424900000004c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e944260000ff70084c8b74242041ff76084c8b74242841ff76104c8b7424304d8b364983fe017515488d64244048b8e8a4d3f1c27f0000488b5d08ff234d8b3641ff3641ff760841ff76104c8b7424384d8b364983fe010f85820000004c8bb424e80000004d8b364c8bac24e80000004d8b6d004983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424e80000004d892c244c8bac24e00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e00000004d892c24e9960000004c8b7424384d8b364983fe03757f4c8bb424e80000004d8b364c8bac24e80000004d8b6d004983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424e80000004d892c244c8bac24e00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424e00000004d892c24eb094c8b7424384d8b76084156488b9c24f00000004c8b8424e8000000488b442430ff15b73900004989c64156ff742438ff742408ff742450e92f200000ff7008ff70104c8b74242841ff76086a016a01ffb424e0000000ffb424e0000000ffb424d0000000ffb424e8000000ffb424e80000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ffb42480000000ff742420ff7424204156415541544153415241514150575652515350488b8424d8000000488b9c24f80000004c8b8424e00000004c8d8c24b80000004c8b9424b0000000ff15a2380000488d642428ff3424ff7424104c8b342441ff76084c8b7424284c3b34240f847e0400004c8b34244c3b7424280f8c5a0400004c8bb424f80000004d8b2e4c8bb424f80000004d8b364983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8ba424f80000004d8934244c8bb424f00000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424f00000004d8934244c8b7424484d8b364983fe010f85820000004c8bb424f80000004d8b364c8ba424f80000004d8b24244983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24f80000004d89234c8ba424f00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24f00000004d8923e9960000004c8b7424484d8b364983fe03757f4c8bb424f80000004d8b364c8ba424f80000004d8b24244983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24f80000004d89234c8ba424f00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24f00000004d8923eb094c8b7424484d8b760841564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a016a01ffb42488000000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c24f80000004c8b8424400100004c8b8c24e00000004c8b942400010000e867a3ffff488d642430415a415d415e488d6424084983fe0375084d89d3e9260100004d8d67d84c3b65107306ff5550ca00644d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f8020000004d89650849c745000d0000004c8b5c24084c2b5c24307115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c7442410010000004d895c240849c70424350000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d892b4d8d67e84c3b65107306ff5550ca00484d89e749c74424f802000000415d4d896c240849c70424090000004c8bac24000100004d895d004d8965084d89751048c7c0010000004883c468c29800488d64246848b870a5d3f1c27f0000488b5d08ff23488d642408ff742458ff742430ff742410ff742460ff742460ff742430ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d000000048898424d0000000488b44245848899c24d8000000488b5c245048898c24e000000048899424e8000000488b5424604889b424f00000004889bc24f80000004c898424000100004c8b4424484c898c24080100004c8b4c24404c899424100100004c8b5424384c899c24180100004c89a424200100004c89ac24280100004c8b34244c89b424300100004c8b7424084c89b424380100004c8b7424104c89b424400100004c8b7424184c89b424480100004c8b7424204c89b424500100004c8b7424284c89b424580100004c8b7424304c89b424600100004881c4c8000000e92fa0ffff488d642478ff70084c8b74242041ff76104c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742458ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c0010000004c8b8c24e00000004c8b942400010000e8849effff488d642430415d488d6424184d8d67e84c3b65107306ff5550ca00204d89e749c74424f802000000415e4d8974240849c7042431000000f60424017535415e4d8b1e4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060b0000004883c410eb2b488d6424184d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b34244d8b364983fe010f8580000000488d6424204c8bb424900000004d8b364c8bac24900000004d8b6d004983c502711048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24900000004d892b4c8bac24880000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24880000004d892be9940000004c8b34244d8b364983fe03757d488d6424204c8bb424900000004d8b364c8bac24900000004d8b6d004983c502711048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24900000004d892b4c8bac24880000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24880000004d892beb0a415e4d8b76084883c4184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500090000004c8bb424980000004d89264d896e0849c746100300000048c7c001000000c29800ff7008ff7010488b40184c8b74242841ff76086a016a014c8b304983fe130f85290100004c8b68084d89ee4d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983fd030f85fe0000004d8b6e084c8bb424c00000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64245048b81011d1f1c27f0000488b5d08ff234c8bb424c00000004f8b74aefc4d8b264d89e54983fc0175514d8b6e084d8b66104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424104d8966104d896e0849bd906061f1c27f00004d892e4c8b6c24284c892c244c89742408eb444983fd0575434d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd406161f1c27f00004d892e4c8b6c24284c892c244c89742408e9ee010000488d64245048b8c8a6d3f1c27f0000488b5d08ff234c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff742470ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b9c243801000049c7c0010000004c8b8c24e80000004c8b942420010000e87299ffff488d642438415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c4d89660849bc086261f1c27f00004d89264c892c244c89742408ff3424ff7424104c8b74242841ff364c8b7424384d8b364983fe2b75414c8b7424384d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d89660849c706010000006a016a0141554156e9080d00006a016a014c8b7424484d8b364983fe130f85330100004c8b7424484d8b76084d8b364983fe05750949c7c603000000eb0749c7c6010000004983fe030f85070100004c8b7424484d8b76084d8b6e084c8bb424e80000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64247848b81011d1f1c27f0000488b5d08ff234c8bb424e80000004f8b74aefc4d8b264d89e54983fc0175514d8b6e084d8b66104d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424384d8966104d896e0849bdd06261f1c27f00004d892e4c8b6c24204c892c244c89742408eb444983fd0575434d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd806361f1c27f00004d892e4c8b6c24204c892c244c89742408e9f8010000488d64247848b8f8a7d3f1c27f0000488b5d08ff234c8bb4240801000041ff364c8bb424100100004d8b364983c6027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24100100004d8975004c8bb424080100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24080100004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb42498000000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c245801000049c7c0010000004c8b8c24e00000004c8b942410010000e8e895ffff488d642430415d488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f802000000415c4d89660849bc206461f1c27f00004d89264c892c244c897424084158415c4c8bb424f80000004c8bac24f000000041564155ff742418415448c7c00100000048c7c3010000004c8b4c24204c8b542450ff15a12700004989c6488d642448e9dd0800004c8b68084c8b60104c8b58184d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d642420e9370700004d8d77d84c3b75107305ff5550cd014d89f749c746f80400000049bdf8a1d3f1c27f00004d896e1849bd18a2d3f1c27f00004d896e104989460849c7060d000000ff7424204156ff742428ff742428ff742428ff742428ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245848899c24a0000000488b5c245048898c24a800000048899424b0000000488b5424604889b424b80000004889bc24c00000004c898424c80000004c8b4424484c898c24d00000004c8b4c24404c899424d80000004c8b5424384c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004c8b7424304c89b424280100004881c490000000e94c92ffff488da42490000000ff70084c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b760841564c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8b7424084d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004156ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350ffb424e8000000ffb424c0000000488b8424d800000048c7c3010000004c8b8424e00000004c8b8c24000100004c8b9424b8000000ff155d2100004989c5488d6424284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849bec0a8d3f1c27f00004d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424104d89750849c74500090000004c8bb424b80000004d89264d896e0849c746100100000048c7c0010000004883c420c298004c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a016a016a014c8b74244041ff7640ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c24f80000004c8b8424f00000004c8b8c24e80000004c8d9424c0000000ff12488d642430415d415c415e488d642408415b488d64242041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff157a1e0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15521e0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000584c89f34c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25e11d0000f6442408010f85930100004c8b74240841ff364c8b74241041ff76084c8b74241041ff364c8b74241841ff76086a016a016a01ffb424b8000000ffb42458010000ffb42458010000ffb42458010000ffb42458010000ffb424580100004c8bb424580100004c8bac24500100004c8ba424480100004c8b9c24400100004c8b9424380100004c8b8c24300100004c8b842428010000488bbc2420010000488bb42418010000488b942410010000488b8c2408010000488b9c2400010000488b8424f8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c247801000049c7c00100000049b9e8a8d3f1c27f00004c8b9424e0000000e8a08affff488d642430415d415c488d6424104d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d488d6424084c8924244c896c2408483b65187303ff5558e962feffff4c8b34244d8b364c89742410415e4d8b76084c897424104c8b7424084c8b64241049c7c5010000004883c41841f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89de483b65187306ff5558ca0070ebbd4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049c746080100000049c7060100000041554156f6442408010f85460200004c8b7424084d8b264c8b74240841ff76084c8b7424084d8b2e4c8b7424084d8b76084c8b5c240841ff73106a016a016a014c3b6c24380f8d880100004c8b5c24684d8b134c8b5c24684d8b5b084983fd017d0d488da424a0000000e9540100004d3bea0f8d430100004d89ea49c1ea034983ca0149d1ea4f0fb61c134e8d1c5d010000004c89e94883e10f4883f97f720949c7c201000000eb1149c7c20200000048d1e949d3e24983ca014d23da4983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb030f85f20000004983c50241557118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89f54983c50241557118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff23488b542450498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8970084c8920ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d8966084d892e4c8b6c24084c896c2410415d488d6424084c896c24084c89742410eb49488da424a000000048b818a9d3f1c27f0000488b5d08ff234983c5027118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234c892c244c897424084c8b7424184c89742410415e415d415b4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c24084d8934244c8b6c24084c896424104c896c2418483b65187303ff55584883c410e9affdffff415e4d8b76104883c450e9abfaffff4c8b7424104983fe010f85c30200004c8b7424084983fe010f859c020000415e4883c4104156488b442408488b5c2428ff15041900004989c64c8b6c24184c3b6c2438750b415b4883c408e9a60000004c8b6c24384c2b6c24187115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c7442410010000004d896c240849c70424350000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f802000000415c4d8963084d892b4883c4084d8d6fd04c3b6d107306ff5550ca00484d89ef49c745f80500000049bcb80bd1f1c27f00004d89652049c745180100000049c74510010000004d89750849c745001f000000f64424200175654c8b7424204d8b264d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d8966184c8b6424104d8966104d896e0849c706090000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d895c24084d893424e9c50000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424104d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8bb424f00000004d89264d896e0849c746100300000048c7c0010000004883c458c29800488da4248000000048b870a9d3f1c27f0000488b5d08ff234c8b7424104d8b364c8b6c241041ff7508f6442410010f856c0100004c8b6c24104d8b6d004c8b64241041ff74240841ff364d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a016a01ffb424b0000000ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c247001000049c7c0010000004c8b8c24e00000004c8b942400010000e80483ffff488d642430415b488d6424204c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e9a6fbffff488da4248800000048b870a9d3f1c27f0000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c6010f85b00000004d8b264d8b6e084983fb01756e4d89e64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c70009000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25d91300004d89dc4983ec027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89e34d89ee483b65187306ff5558ca0048e946ffffff488d64242848b8c85dd1f1c27f0000488b5d08ff2341f6c40175374d8b5424084d89f34983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34d3bee7c15488d64242848b8c8a9d3f1c27f0000488b5d08ff234983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983ed014d6bed087115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424704d8d47d04c3b45107306ff5550ca00604d89c749c740f8050000004d89682049bd58a4d3f1c27f00004d89681849c74010010000004d89700849c70007000000488b4424085b488d6424084c8b8c24b00000004c8b9424a80000004c8bac24a00000004c89ac24b00000004c8b7424184c89b424a80000004881c4a8000000ff25681200004c8b34244983fe01750a488d6424684989c4eb12488b1c24ff15421200004989c4488d6424684d8d77e84c3b75107306ff5550ca00104d89f749c746f802000000415d4d896e0849c706090000004c8bac24d80000004d8965004d8975084c8b7424284d89751048c7c0010000004883c440c2980041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc14156488b9c2438010000488b442410ff158f1100004989c54c8bb424380100004c2b3424488d6424087118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234983c60141564c8bb424000100004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24084d895c24204d8974241849c74424100100000049c74424080100000049c704240b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e084d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89306a016a014c8b9424700100004c8bb424680100004156488d5c24084c8b4424204c8b4c2418ff1593100000ff3424ff7424104c8b7424384983fe0175074c8b6c2478eb13488b442478488b5c2438ff15621000004989c54c8bb424800100004d8b264c8bb424800100004d8b364983c6027118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24800100004d89334c8bb424780100004d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706050000004c8b9c24780100004d89334d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24284d895e284c8b5c24204d895e20415b4d895e184c8b5c24684d895e104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500470000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c430e9dffcffff41f6c60175394d8b5e084989dd4983c5027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234d89de4c89eb483b65187306ff5558ca8855ebc14c8bb424080100004d8b2e4c8bb424080100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24080100004d89334d8d77e84c3b75107306ff5550ca88354d89f749c746f8020000004d896e0849c706070000004d8d5fd04c3b5d107306ff5550ca88754d89df49c743f8050000004d896b2049c74318110000004d89631049897b0849c703010000004d8d6fe84c3b6d107306ff5550ca885d4d89ef49c745f8020000004d895d0849c7450005000000f6c30174134889d84883e801486bc00270064883c001eb2348c7c0050000004150415441525741564155ff15ee0d0000415d415e5f415a415c4158a801740b4989c14983c1027002eb2648c7c3030000004150415441525741564155ff15b40d0000415d415e5f415a415c41584989c14d8d5fe84c3b5d107306ff5550ca80774d89df49c743f8020000004d894b0849c703050000004d8d4fd84c3b4d107306ff5550ca807d4d89cf49c741f804000000498979184d8959104d89510849c7014d0000004d8d5fe84c3b5d107306ff5550ca00774d89df49c743f8020000004d894b0849c7030d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c8b4c24184c894f0848c707090000004d8d4fd84c3b4d107306ff5550ca807d4d89cf49c741f8040000004989791849c741100b0000004d89510849c701210000004d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d894a0849c7020d0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c892c244c89742408ff3424ff742410488b9c2418010000488b442468ff15cf0b00004989c641564c8bb424900000004983fe03750949c7c6ffffffffeb414c8bb424200100004d8b364c8bac24200100004d8b6d004983c5027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424200100004d892c2441564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b7424304d897424104c8b7424384d8974240849c70424190000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000ffb424b0000000ffb424d8000000ff742438ff742438ffb424b0000000ffb42408010000ff742448ff742448ff742448ff74244841564155415441534152415141505756525153ffb42458010000ffb42490010000ffb424f8000000488b842478010000488b9c24080100004c8b8424f80000004c8b8c24100100004c8b942408010000ff15590900004989c2488d6424384c8bb424900000004d8b364983fe010f85820000004c8bb424400100004d8b2e4c8bb424400100004d8b364983c6027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424400100004d8934244c8bb424380100004d8b264d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706050000004c8ba424380100004d893424e99c0000004c8bb424900000004d8b364983fe03757f4c8bb424400100004d8b2e4c8bb424400100004d8b364983c6027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424400100004d8934244c8bb424380100004d8b264d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706050000004c8ba424380100004d893424eb0c4c8bb424900000004d8b6e084c8bb424980000004983fe037510488da424980000004d89d4e9010100004d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004c8b6424584d89660849c706090000004d8d67d84c3b65107306ff5550ca00644d89e749c74424f8040000004d8974241849c74424100b0000004d896c240849c70424210000004d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00644d89e749c74424f802000000415b4d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244881c4900000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706090000004c8bac24b00000004d8965004d897508415e4d89751048c7c0010000004883c410c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c2980041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b74247841ff7620ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c243001000049c7c0010000004c8b8c24e800000049c7c201000000ff124989c5488d64243049c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb4248000000041ff7630ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c24200100004c8b8424180100004c8b8c24400100004c8b9424e0000000ff124989c6488d64243041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d89660849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e0849c706070000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24284d896c240849c70424090000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004c8b6424304d89650849c74500210000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2418eb0e488b442418ff15840100004889c34883fb0175035beb12488b0424ff15660100004889c3488d6424084883fb0175035beb12488b0424ff15430100004889c3488d6424084883fb017508415e4883c418eb12488b0424ff151b0100004989c6488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f802000000415c4d89650849c74500090000004883c438415c4883c42041f6c601753d4d8b0e4d8b5e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89de483b65187306ff5558ca0070ebbd4c8bb424980000004d89264d896e0849c746100100000048c7c001000000c2980041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc4c8bac24980000004d895d004d8965084d89751048c7c001000000c29800f400|@14771,1,@1715,@6544,@6545,@6546,@6547,@6548,@6551,@4933,@6552,@6553,@6554,@6555,@6556,@6557,@6557,@6559,@6557,@4933,@6552,@6560,@6561,@6562,@6578,@6579,@6557,@6557,@6557,@6557,@6580,@6581,@6557,@4933,@6552,@6582,@4933,@6552,@6552,@4933,@6543|612,0,@9475 673,0,@9475 753,0,@9475 897,0,@9475 1034,0,@9475 1171,0,@6536 1577,0,@9475 1721,0,@9475 2103,0,@9475 3203,0,@14727 3217,0,@14728 3973,0,@9475 4095,0,@9475 4552,0,@9475 4694,0,@10021 4847,0,@9475 5103,0,@9475 5261,0,@9475 5325,0,@9475 5450,0,@9475 5555,0,@9475 5616,0,@9475 6118,0,@10468 6580,0,@10468 6913,0,@9475 7057,0,@9475 7194,0,@9475 7328,0,@9475 7460,0,@9475 8413,0,@9475 8563,0,@9475 9993,0,@10093 10183,0,@9475 10327,0,@9475 10464,0,@9475 10613,0,@10548 10904,0,@10534 10960,0,@10548 11364,0,@10534 11420,0,@10515 11487,0,@11081 11564,0,@10548 11877,0,@10534 11933,0,@10515 12003,0,@11081 12370,0,@10534 12488,0,@14729 12509,0,@14732 12902,0,@10534 12958,0,@10515 13660,0,@9475 13906,0,@10926 14207,0,@9475 14351,0,@9475 14468,0,@9475 14520,0,@9998 14567,0,@9475 14898,0,@9995 14960,0,@9475 15184,0,@14735 15441,0,@14738 15548,0,@9475 15687,0,@9475 15797,0,@9475 15835,0,@9475 16135,0,@14739 16187,0,@9475 16243,0,@14742 16340,0,@14743 16408,0,@9475 16552,0,@9475 16917,0,@9475 17037,0,@9475 17097,0,@9475 17176,0,@9475 17296,0,@9475 17576,0,@9475 17859,0,@9475 18328,0,@9475 18470,0,@9475 18816,0,@9475 19362,0,@9475 19531,0,@10034 19646,0,@9475 20256,0,@9475 20400,0,@9475 22318,0,@14746 22400,0,@9475 22544,0,@9475 23027,0,@9475 23168,0,@9475 23312,0,@9475 23852,0,@9475 24113,0,@14749 24581,0,@9475 25203,0,@9475 25344,0,@9475 25634,0,@9995 25727,0,@6537 25797,0,@6538 25834,0,@14754 25883,0,@9475 26301,0,@6539 26530,0,@9995 26623,0,@6540 26693,0,@6541 26730,0,@14758 26782,0,@9475 27207,0,@6542 27652,0,@14727 27666,0,@14728 28149,0,@9475 28293,0,@9475 28430,0,@9475 28967,0,@14761 30027,0,@14763 30565,0,@9475 30600,0,@9475 30775,0,@14764 30805,0,@9475 31033,0,@9475 31209,0,@9948 31642,0,@14766 32058,0,@14766 32319,0,@9475 32363,0,@10528 32404,0,@9475 32450,0,@14768 32477,0,@9475 32508,0,@9475 32564,0,@14742 32810,0,@9475 32897,0,@9475 33191,0,@9475 33494,0,@9475 33566,0,@9475 34364,0,@9475 34986,0,@9475 35133,0,@9475 6536:D3,272|483b65187305ff5558cd054c8b6a104d89ee4d8b6d004d89f44d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8934244d8d67d04c3b65107306ff5550ca05204d89e749c74424f8050000004d896c242049c7442418190000004c8b72084d89742410498944240849c70424010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@14726,1,@1708|36,0,@9475 6537:D3,136|483b65187305ff5558cd054c8b284c8b70084c8b62104c8b5a184d2be3711048b8d0c6d0f1c27f0000488b5d08ff234983c4014d89f34983eb014d03e3711048b8d0c6d0f1c27f0000488b5d08ff23498d47d0483b45107306ff5550ca04704989c748c740f8050000004c8960204c8b62084c8960184c8968104c89700848c70043000000c3f400|@14752,1,@1709|33,0,@9475 65,0,@9475 6538:D3,160|483b65187305ff5558cd054c8b204c8b68084983ed014d6bed08711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca04304d89f749c746f80600000049c74628010000004d8966204d896e1849bd58a4d3f1c27f00004d896e1049c746080b0000004c8b6a084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f4|@14753,1,@1710|30,0,@9475 93,0,@14742 6539:D3,160|483b65187305ff5558cd054c8b204c8b68084983ed014d6bed08711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca04304d89f749c746f80600000049c74628010000004d8966204d896e1849bd58a4d3f1c27f00004d896e1049c746080b0000004c8b6a084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70041000000c3f4|@14753,1,@1711|30,0,@9475 93,0,@14742 6540:D3,136|483b65187305ff5558cd054989c64c8b6a104c8b62184d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d89f44983ec014d03ec711048b8d0c6d0f1c27f0000488b5d08ff23498d47d0483b45107306ff5550ca04604989c748c740f8050000004c8968204c8b6a084c8968184c89701048c740080100000048c7000b000000c3f400|@14756,1,@1712|29,0,@9475 61,0,@9475 6541:D3,120|483b65187305ff5558cd054989c64983ee014d6bf608711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47d0483b45107306ff5550ca04404989c748c740f8050000004c89702049be58a4d3f1c27f00004c89701848c74010010000004c8b72084c89700848c70007000000c3f4000000000000|@14757,1,@1713|26,0,@9475 77,0,@14742 6542:D3,120|483b65187305ff5558cd054989c64983ee014d6bf608711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47d0483b45107306ff5550ca04404989c748c740f8050000004c89702049be58a4d3f1c27f00004c89701848c74010010000004c8b72084c89700848c70007000000c3f4000000000000|@14760,1,@1714|26,0,@9475 77,0,@14742 6543:D3,888|483b65187306ff5558ca090753415041514152a8010f85390300004c8b30ff70084d8b364d8b2641ff76084c8b74241841ff364c8b7424204d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24204d8975004c8b7424184d8b2e4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706050000004c8b6c24184d8975004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b2c244d896e0849c706050000004c8bac24c80000004d8b6df849c1e50849c1ed074983cd014d3be57215488d64243848b80017d1f1c27f0000488b5d08ff234c8bac24c80000004f8974a5fc4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb424e0000000ff742468ffb424e8000000ffb424e8000000ffb424080100004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742470ff742470ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24b000000049c7c0010000004c8b8c24d80000004c8b942410010000ff12488d642428ff34246a016a01ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b842400010000488b9c24c80000004c8d8424b80000004c8b8c24100100004c8b942408010000e8fffcffff488d642428415d415e488d6424284d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c2408415d488d6424204d892c24415d488d6424084d8965004d89750848c7c001000000c29000488d642410415d49c7450001000000415e4d89750848c7c001000000c29000f400000000|@14794,1,@1755|72,0,@9475 228,0,@10034 6544:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1716| 6545:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1717| 6546:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1718| 6547:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1719| 6548:D5,3232|488dbc2440ffffff483b7d187306ff5560ca09074150415141524883f80175554883fb01753a488b442408ff158f0c00004c8b7424104c89f34983fe0175054989c4eb09ff156e0c00004989c4415e4c8bac24d80000004883c410e95a080000488d64241848b898aad3f1c27f0000488b5d08ff234c8b30ff70084983fe010f8529020000f6c3010f850b0200004c8b7308ff34244156ff742428ff742428ff742428ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b800000048898424b8000000488b84248800000048899c24c0000000488b9c248000000048898c24c800000048899424d00000004889b424d80000004889bc24e00000004c898424e80000004c8b4424784c898c24f00000004c8b4c24704c899424f80000004c8b5424684c899c24000100004c89a424080100004c89ac24100100004c8b34244c89b424180100004c8b7424084c89b424200100004c8b7424104c89b424280100004c8b7424184c89b424300100004c8b7424204c89b424380100004c8b7424284c89b424400100004c8b7424304c89b424480100004c8b7424384c89b424500100004c8b7424404c89b424580100004c8b7424484c89b424600100004c8b7424504c89b424680100004c8b7424584c89b424700100004c8b7424604c89b424780100004881c4b0000000e96ffdffff488da424b0000000488d64242048b898aad3f1c27f0000488b5d08ff2341ff36f6c3010f85eb0500004c8b33ff73084c8bac24f00000004983fd030f85800000004c8bac24e80000004d8b6d004c8ba424e80000004d8b24244983c4027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e80000004d89234c8ba424e00000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24e00000004d8923eb084c8bac24d800000041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d89650849c745000500000041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424384d8966084d892e41566a016a016a01ffb42400010000ff742478ffb42430010000ffb42430010000ffb42430010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b842410010000488b9c24c80000004c8b8424c00000004c8b8c24f80000004c8b9424f0000000ff12488d642440415c488d642408415e488d6424104983fe03750d488d6424084d89e6e99b0100004c8bb424f80000004983fe030f85100100004c8b7424484d8b5e084c8bac24b80000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706370000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004983fb01747b4d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d895e0849c706350000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e4d89f4eb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb79488d6424084c8b6c24384d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eff742410ff7424084156ff742438ff742438ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c800000048898424c8000000488b84248800000048899c24d0000000488b9c248000000048898c24d800000048899424e00000004889b424e80000004889bc24f00000004c898424f80000004c8b4424784c898c24000100004c8b4c24704c899424080100004c8b5424684c899c24100100004c89a424180100004c89ac24200100004c8b34244c89b424280100004c8b7424084c89b424300100004c8b7424104c89b424380100004c8b7424184c89b424400100004c8b7424204c89b424480100004c8b7424284c89b424500100004c8b7424304c89b424580100004c8b7424384c89b424600100004c8b7424404c89b424680100004c8b7424484c89b424700100004c8b7424504c89b424780100004c8b7424584c89b424800100004c8b7424604c89b424880100004881c4c0000000e963f7ffff488da42498000000488d64242848b898aad3f1c27f0000488b5d08ff234983fe010f85440300004983fd010f852a03000041544c8bb424c80000004983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb084c8bb424b000000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ffb424d0000000ff742450ff742450ffb42408010000ffb42408010000ffb42408010000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042448ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d8000000488b8424d0000000488b9c24c80000004c8b8424c00000004c8b8c24f80000004c8b942408010000ff12488d64244858488d642408415e488d6424084c8bac24d00000004983fd030f85350100004983fe030f84240100004c8b7424204d8b66084c8bb424900000004d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500370000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c706030000004983fc010f8482000000488d6424084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f80300000049c74510010000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f802000000498945084d896500eb08488d6424084989c5498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c2c800488d642410eb05488d642410c2c80048b870a9d3f1c27f0000488b5d08ff234d8b0e4d8b5e0841f6c50175754d8b45004d8b550841f6c00175054d89e1eb484d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849c700070000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d54d89de483b65187306ff5558ca0070e930fcffff48b870a9d3f1c27f0000488b5d08ff23f40000000000|@14775,1,@1720,@6550,@6549|103,0,@14772 672,0,@14772 759,0,@9475 2220,0,@14772 2306,0,@9475 3066,0,@14766 3212,0,@14766 6549:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1722| 6550:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1721| 6551:D3,120|483b65187305ff5558cd09a801755b488b4008ff334c8b334983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8933e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1723|37,0,@9475 6552:D3,80|49bb70d37f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@14776,1,@1724|2,0,@19870 6553:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1725| 6554:D3,864|483b65187306ff5558ca090753415041514152a8010f8513030000ff30488b40086a016a014c8b7424404156488d5c24084c8b4424304c8b4c24284c8b542420e8bbffffff415c415b4c8b2c244d8b4d004d8b314983fe0b0f858b0200004d8b41204d89ed4d8b55084c8b7424184c89f74983ee014d03f27115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d3bc67505e90b0200004889ff4989fe4883ef014903fa7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883ff017d0949c7c603000000eb5d4983e8014d89f64d03f07115488d64242848b8d0c6d0f1c27f0000488b5d08ff2349c7c0010000004c2b4424107115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c0014d3bf07e0949c7c603000000eb0749c7c6010000004983fe030f8471010000488d6424084c8b04244d8b284d89ee4d89c04983c6027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89c04d8930488d6424084c8b7424204d8b064d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d89460849c706050000004c8b4424204d89304d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d894e1849c746100b0000004d896e0849c706210000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89710849c7010d0000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d8966084d890e4d89f44d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d8975004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24104d8965004d89750848c7c0010000004883c418c208004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24184d8965004d89750848c7c0010000004883c420c208004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084c8b6c24184d8965004d89750848c7c0010000004883c420c20800488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c20800f400000000000000|@14777,1,@1726|129,0,@9475 175,0,@9475 223,0,@9475 258,0,@9475 338,0,@9475 823,0,@10542 6555:D3,152|483b65187305ff5558cd09a801757a4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e41564883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@14778,1,@1727|71,0,@9475 6556:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1728| 6557:D5,2048|483b65187306ff5558ca09074989c64989db4d8b264d89e54983fc010f851f060000498b7e084989fc498b5610498b4e18498b76204883f9037522498b184883fb0175194d89194d89410849c741100100000048c7c001000000c208004883f9037522498b084883f90575194d89194d89410849c741100100000048c7c001000000c208004883fa030f8551020000498b084883f9050f85440200004d8b680848c7c001000000482b054a0700007002eb2c48c7c001000000488b1d30070000415641534150415141524155ff154e070000415d415a41594158415b415ea801740d41f6c5017407493bc57f2ceb2c4c89eb415641534150415141524155ff1514070000415d415a41594158415b415e4989c44983fc017e02eb2b41f6c501740e4c3b2dc00600007d1ce9980100004d0fb66dff4e8d2c6d010000004983fd230f84810100004d8b264d89e54983fc0175584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb624983fd0375584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb044d8b66084d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004d89194d89410849c741100100000048c7c001000000c208004883fa030f858a010000498b104883fa010f857d0100004c89ef4989fd4883ff0175584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb5e4983fd0375584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb004d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004883fe037522498b304883fe0975194d89194d89410849c741100100000048c7c001000000c208004883ff037522498b384883ff0775194d89194d89410849c741100100000048c7c001000000c208004c89ef4989fd4883ff0175584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb5e4983fd0375584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb004d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c208004d89ec4983fd0375194d89194d89410849c741100100000048c7c001000000c208004d89e54983fc0175584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb624983fd0375584d8b224d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89324c8b7424084d8b2e4d8d77e84c3b75107306ff5550ca003b4d89f749c746f8020000004d896e0849c706050000004c8b6c24084d897500eb044d8b66084d8d6fd84c3b6d107306ff5550ca001b4d89ef49c745f8040000004d89451849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d89660849c706090000004d89294d89710849c741100100000048c7c001000000c20800f4000000000000010000000100000001000000010000000000000001000000|@14779,1,@1729,@6558,@4987|352,0,@9475 446,0,@9475 785,0,@9475 879,0,@9475 1246,0,@9475 1340,0,@9475 1658,0,@9475 1752,0,@9475 6558:D3,48|49bb98d37f0bc37f00004d8b1b4989e5488b65304881ec900000004889c74889de41ffd34c89ecc3f400000000000000|@14780,1,@1730|2,0,@19871 6559:D3,216|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b30488b4008f6c3010f85860000004c8b23488b5b084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500090000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f40000|@13917,1,@1731|33,0,@13915 199,0,@13915 6560:D4,1016|483b65187306ff5558ca090753415041514152a8010f853b030000ff30ff70086a016a016a01ff742430ff742460ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742460ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c24b800000049c7c00100000049b9d8acd3f1c27f00004c8b942400010000ff12488d642430ff3424ff7424104c8b7424504983c60241567115488d64246048b8d0c6d0f1c27f0000488b5d08ff23ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742428ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b8424f8000000488b9c24c80000004c8b8424d80000004c8b8c24100100004c8b942408010000e8d4fdffff4889c3488d6424386a016a016a014c8bb42408010000415648b8e8a8d3f1c27f00004c8b4424204c8d4c24084c8b542458ff15ad010000415d415a488d6424184c8b5c24404983eb014d6bdb087115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488d6424484983c3014c8b6424084d8d77c84c3b75107306ff5550ca003c4d89f749c746f80600000049c74628010000004d8956204d895e1849bb58a4d3f1c27f00004d895e1049c746080b0000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424410000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c29800488d6424104c8b7424184d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049c745200100000049c74518010000004c8b6424084d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424104c8930c29800f4000000|@14782,1,@1732,@6557|257,0,@14781 307,0,@9475 582,0,@14763 642,0,@9475 715,0,@14742 6561:D3,864|483b65187306ff5558ca090750534150415141524c8b7424204d89f34c3b742408750d488d642410584883c410c22000488b3c244c8b274889ff4c8b77084d89db4d89dd4983fb017d0a488d642428e9fa0200004d89ed4c89e94d3bec0f8de60200004989cd49c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c94889c84883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f842b0200004c8b74244841ff364c8b7424504d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24504d8975004c8b7424484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24484d897500488b5424404d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c70609000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8b6c24204c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004156488b542440488b442430ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8b6c24084d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d8966084d892e4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d8970084c8b34244d8930488d642410488b4424204883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4c24085f488d6424084c8b6c24384c8b6424304c8b5c24284c8b5424204c895424204989fa4c895c24284c896424304c896c24384883c418e920fdffff4889c04883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184c8b4424104c8b4c24084889ff488d6424204c8b6c24284c8b6424204c8b5c24184c8b5424104c895424104989fa4c895c24184c896424204c896c24284883c408e9b7fcffff488d64242848b818a9d3f1c27f0000488b5d08ff23f400|@14783,1,@1733|210,0,@9475 627,0,@9475 659,0,@9475 752,0,@9475 848,0,@14764 6562:D8,5136|488dbc2460ffffff483b7d187306ff5560ca090753415041514152a8010f85820f00004c8b30ff70084d8b2e4d89ec4983fd010f858b030000498b7e084d8b66104c8b7424204d8b364c8b6c24204d8b55084c8b6c24204d8b4d104c8b6c24084d8b6d004c8b5c24084d8b1b4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424084d89184d8d47f04c3b45107306ff5550ca80764d89c749c740f8010000004d89204c8b9c24b8000000498b334d8d5fe84c3b5d107306ff5550cac0774d89df49c743f802000000498973084d89034c8b8424b80000004d89184d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d8963084d892b4d89e04983e8014d03c27115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca805f4d89ef49c745f8030000004d8945104d895d0849c74500010000004c8b8424b00000004d8b40f849c1e00849c1e8074983c801493bf87215488d64242848b80017d1f1c27f0000488b5d08ff234c8b8424b00000004d896cb8fc4d89e54983ed014d03d57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d894d104d8955084d8975004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c706330000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d8926ff342441554156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e941fcffff488d6424784d89e54983fc050f857402000041ff76086a016a016a01ffb424c8000000ffb424e0000000ffb424d0000000ffb424d0000000ffb424f00000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042428ff742458ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424d8000000488b9c240001000049c7c00100000049b9a854d1f1c27f00004c8b9424f8000000ff12488d642428415e488d642418ff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9c3f9ffff488da424800000004983fd070f851704000041ff76084d8b66084d89e541f6c4010f85d70300004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85b2030000488d6424084d89ee4d8b3641ff364d8b6e084c8b74241041ff364c8b7424184d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6424184d8934244c8bb424c80000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424c80000004d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061b00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a01ffb424e0000000ffb424f8000000ffb424e8000000ffb424e8000000ffb424080100004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742470ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c241801000049c7c0010000004c8b8c24d80000004c8b942410010000ff12488d642428415e488d6424204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f802000000415c4d89650849c74500050000004c8ba424b80000004d8b5c24f849c1e30849c1eb074983cb014c8b24244d3be37215488d64243048b80017d1f1c27f0000488b5d08ff234c8ba424b8000000415b4f896c9cfcff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9caf5ffff488d6424704c8b8424c0000000488b0424488b5c2410ff15f60900004989c64156ff742408ff7424086a01e95c05000041ff7608498b46104c8b304983fe130f852a0200004c8b68084d89ee4d8b6d004983fd05750949c7c503000000eb0749c7c5010000004983fd030f85ff0100004d8b6e084c8bb424b80000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81011d1f1c27f0000488b5d08ff234c8bb424b80000004f8b74aefc4c8bac24b80000004d8b65f849c1e40849c1ec074983cc014c8b2c244d3bec7215488d64243048b80017d1f1c27f0000488b5d08ff234c8bac24b8000000415c4f8974a5fcff3424ff742428ff742428ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e963f3ffff488da424800000006a016a016a01ffb424c8000000ffb424e0000000ffb424d0000000ffb424d0000000ffb424f0000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042430ff742460ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c0000000488b9c240801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430415e415d488d6424084d8b65004983fc090f85e30100004d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d8b5c24f849c1e30849c1eb074983cb014c8b24244d3be37215488d64243048b80017d1f1c27f0000488b5d08ff234c8ba424b8000000415b4f896c9cfcff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e975f0ffff488d642470488d64243048b8c0add3f1c27f0000488b5d08ff23488d642408415d415e4d897500415e4d89750848c7c001000000c290004c8b7424104983fe0175374c8b7424084983fe017517415e4883c4104156ff742410ff7424106a01e991000000488d64245048b870a9d3f1c27f0000488b5d08ff234c8b742410498b064c8b74241041ff7608f644241001754f4c8b742410498b1e4c8b74241041ff76084c8b8c24e80000004c8b442410ff15000400004989c34c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e957ffffff488d64245848b870a9d3f1c27f0000488b5d08ff234c8b7424104983fe0175514c8b7424084983fe0175315b4883c4104883fb017508415e4883c410eb12488b0424ff15850300004989c6488d64241848c7c001000000e96e010000488d64245848b870a9d3f1c27f0000488b5d08ff234c8b74241041ff364c8b74241841ff7608f6442418010f85280100004c8b74241841ff364c8b74242041ff7608ffb424d8000000ffb424d8000000ffb42418010000ffb42410010000ffb424100100004c8bb424100100004c8bac24280100004c8ba424080100004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ffb42480000000ff742418ff742418ff7424184156415541544153415241514150575652515350ffb42420010000488b8424d0000000488b9c24c00000004c8b8424d80000004c8b8c24b00000004c8b9424a8000000ff15400200004989c3488d6424284c8b6c2410415c488d6424184c891c244c896424084c896c2410483b65187303ff5558e960feffff488d64246848b870a9d3f1c27f0000488b5d08ff2341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424184983fe0175054989c6eb0e488b5c2418ff15920100004989c6ff3424ff7424284156ff742428ff742428ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004889842488000000488b44245048899c2490000000488b5c244848898c249800000048899424a00000004889b424a80000004889bc24b00000004c898424b80000004c8b4424404c898c24c00000004c8b4c24384c899424c80000004c8b5424304c899c24d00000004c89a424d80000004c89ac24e00000004c8b34244c89b424e80000004c8b7424084c89b424f00000004c8b7424104c89b424f80000004c8b7424184c89b424000100004c8b7424204c89b424080100004c8b7424284c89b424100100004881c480000000e9faebffff488d642470f400000000|@14787,1,@1734,@6564,@6565,@6572,@6573,@6563|121,0,@9475 282,0,@9475 375,0,@10034 421,0,@9475 1202,0,@10468 1720,0,@9475 2220,0,@10034 2766,0,@9995 2833,0,@10034 3455,0,@14738 3585,0,@10034 3991,0,@14784 4086,0,@14766 4210,0,@14766 4302,0,@14766 4647,0,@14766 6563:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@1749|42,0,@9475 6564:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1735| 6565:D7,696|483b65187306ff5558ca090753415041514152488b4008ff7010488b542410488b5c240849c7c001000000ff124989c54c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d8934244c8bb424b80000004d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706050000004c8ba424b80000004d8934244d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060f0000004156488b442410ff15030200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156ffb424b8000000ffb424d0000000ffb424d0000000ffb424c8000000ffb424c80000004c8bb424c80000004c8bac24c00000004c8ba424b80000004c8b9c24b00000004c8b9424a80000004c8b8c24a00000004c8b842498000000488bbc2490000000488bb42488000000488b942480000000488b4c2478488b5c2470488b442468ff742408ff74240841564155ff742468ff74246841544153415241514150575652515350ffb424b8000000ffb424e8000000488b8424c000000048c7c3010000004c8b8424b80000004c8b8c24b00000004c8b9424a8000000ff15ea000000488d6424504d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24084d896e0849c706270000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15520000004889c34883fb017508584883c408c29000584c8b7424084c89b424980000004881c498000000ff251e000000f40000000000|@14788,1,@1736,@6567,@6568,@6569,@6566|83,0,@9475 6566:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1742| 6567:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1737| 6568:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1738| 6569:D5,1120|483b65187306ff5558ca090753415041514152a8010f8509010000ff30ff70086a016a016a01ff742438ff742468ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742460ff742460ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e0000000488b9c24b000000049c7c00100000049b9e8a8d3f1c27f000049c7c201000000ff12488d6424284c8b2c24ff74240849c7c601000000e9ba000000488d6424204c8b7424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424090000004c8b7424104d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c2980041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424504983c60241567115488d64246048b8d0c6d0f1c27f0000488b5d08ff23ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742428ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b8424f8000000488b9c24c80000004c8b8424180100004c8b8c24100100004c8b942408010000e8cffcffff488d6424384c8b6424504983ec014d6be4087115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c4014c8b6c24684d8d77c84c3b75107306ff5550ca01304d89f749c746f80600000049c74628010000004c8b5c24084d895e204d89661849bc58a4d3f1c27f00004d89661049c746080b0000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15500000004889c34883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff251c000000f4000000|@14789,1,@1739,@6571,@6570|250,0,@14763 568,0,@9475 844,0,@9475 917,0,@14742 6570:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1741| 6571:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1740| 6572:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1743| 6573:D6,256|483b65187306ff5558ca09034989de41504c8b184c8b68084d8b6d104d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d8974240849c70424050000004d8b51f849c1e20849c1ea074983ca014d3bda7215488d64240848b80017d1f1c27f0000488b5d08ff234f896499fc48c7c30100000041f6c50175364d8b5d084989dc4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89dd4c89e3483b65187306ff5558ca0860ebc44883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89f048c7c001000000ff1546000000ff15380000004889c34883fb01750258c358ff251e000000f40000000000|@14790,1,@1744,@6575,@6576,@6574|97,0,@10034 149,0,@9475 196,0,@9475 6574:D6,616|483b65187306ff5558ca09015041504c8b7424084c89f04c3bf30f85940000004d8d6fd04c3b6d107305ff5550cd084d89ef49c745f80500000049c745200100000049c745188100000049895d104c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c34889c04883c0027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b0424e825ffffff4989c649c7c5050000004983ed014d6bed0070094c89e84883c001eb1848c7c00500000048c7c3010000004156ff1582010000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff155a010000415e4989c54d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004d896b0849c703050000004c8b6424084983ec014d6be4087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f80600000049c74528010000004d895d204d89651849bc58a4d3f1c27f00004d89651049c745080b0000004c8b24244d896500488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424410000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb017509488d6424084c89f0c3488d6424084c89f0ff251e000000f40000000000|@14792,1,@1747,@6577,@4933,@6552|196,0,@9475 367,0,@9475 430,0,@14742 6575:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1745| 6576:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d8afd3f1c27f0000c3f4000000|@10402,1,@1746|75,0,@14791 6577:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1748| 6578:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@1750|42,0,@9475 6579:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@1751| 6580:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1752| 6581:D3,1368|488dbc2448ffffff483b7d187306ff5560ca0907415041514152a8010f85060500004c8b30ff700841ff364883fb010f85610200006a016a016a01ff742428ff742460ff742460ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b8424f0000000488b9c24c800000049c7c0010000004c8b8c24c00000004c8b942410010000ff12488d642440ff3424ff7424106a016a016a01ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff7424384156415541544153415241514150575652515350488b84243001000048c7c3010000004c8b8424080100004c8d8c24e80000004c8b942438010000e8bdfdffff488d642440415b415c415d4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d642440415d488d6424084d895d004d8965084d89751048c7c001000000c2a800ff33ff73086a016a016a01ff742438ff742470ff742468ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042440ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424d0000000488b842400010000488b9c24c800000049c7c0010000004c8b8c24c00000004c8b942420010000ff12488d642440ff3424ff7424106a016a016a01ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742438ff742438ff742438ff742438ff742438ff742438ff742438ff7424384156415541544153415241514150575652515350488b842440010000488b9c24280100004c8b8424080100004c8d8c24e80000004c8b942448010000e856fbffff488d642440415b415a415e4d8d6fe84c3b6d107306ff5550ca004c4d89ef49c745f8020000004c8b6424304d8965084c8b24244d896500488d6424504d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d892c24415d488d6424084d895d004d8965084d89751048c7c001000000c2a800488d642408415e4c8b2c244d892e488d64240849c746080100000049c746100100000048c7c001000000c2a800f40000|@14793,1,@1753| 6582:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1754| 6583:D27,7856|488dbc24b8feffff483b7d187306ff5560ca0d075253415141524c8b304983fe037515488d64242048b850b1d3f1c27f0000488b5d08ff2341f6c6010f850503000041ff36ff7008ff7010ff70184c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e80000004d8975006a016a016a014c8b74247041ff7610ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f8000000488b9c24100100004c8b84242801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e91e130000ff7008ff7010ff70184c8b7424204d8b264d89e54983fc010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e98f0000004d89f64983fd03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb074d89f64d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7610ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f000000048c7c3030000004c8b84241801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8bb424a000000041ff7610ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84243801000048c7c3030000004c8b84245801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184c8bb4245001000041ff364c8bb424580100004d8b364983c6027118488da424d800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24580100004d8975004c8bb4245001000041ff364c8bb424580100004d8b364983c6027118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24580100004d8975004c8bb4245801000041ff364c8bb424600100004d8b364983c6027118488da424e800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24600100004d8975004c8bb4246001000041ff364c8bb424680100004d8b364983c6027118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24680100004d8975004c8bb4246801000041ff364c8bb424700100004d8b364983c6027118488da424f800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24700100004d8975004c8bb4247001000041ff364c8bb424780100004d8b364983c6027118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24780100004d8975006a016a016a014c8bb4241001000041ff7618ffb424b0010000ffb424b0010000ffb424b0010000ffb424b0010000ffb424b00100004c8bb424b00100004c8bac24a80100004c8ba424a00100004c8b9c24980100004c8b9424900100004c8b8c24880100004c8b842480010000488bbc2478010000488bb42470010000488b942468010000488b8c2460010000488b9c2458010000488b842450010000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424b001000048c7c3010000004c8b8424c801000049c7c1010000004c8d9424c0000000ff12488d642430415b415e415d49c7c40100000041f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d3483b65187306ff5558ca0078ebbd41544c8b9424800000004d8b224983fc09757a4c8b6424784983fc01756f4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8ba424880000004d89630849c703090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b9c24c00000004d895c240849c7042421000000eb6e4d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004c8ba424880000004d89234d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b4c24784d894c24204d89d24d895424184c8b9424c00000004d895424104d895c240849c70424230000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544c8b5424484d8b224983fc0975774c8b6424404983fc01756c4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b6424504d89630849c703090000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b9c24c00000004d895c240849c7042421000000eb6b4d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004c8b6424504d89234d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004c8b4c24404d894c24204d89d24d895424184c8b9424c00000004d895424104d895c240849c70424230000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544d8d5fd04c3b5d107306ff5550ca00604d89df49c743f8050000004c8ba424c80000004d8963204c8ba424d00000004d8963184d896b104c8b6424404d89e54d89630849c703110000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d00000041544d8d57d04c3b55107306ff5550ca00604d89d749c742f8050000004c8b6424284d89e34d89622049c74218030000004c8b6424404d8962104d89ed4d89ec4d896a0849c702010000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000500000041554d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89db4d895d0849c74500070000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b4c24284d89ca4d894b2049c74318010000004c8b4c24404d894b104d89e44d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89d24d89530849c7030700000048c7c0050000004883e801486bc00070064883c001eb2448c7c00500000048c7c3010000004156415541544153ff1524100000415b415c415d415ea801740b4989c14983c1027002eb2048c7c3030000004156415541544153ff15f00f0000415b415c415d415e4989c14d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c702050000004d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f8040000004d89511849c741100b0000004c8b9424e80000004d89510849c701210000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004c8b4c24384d89480849c7000b0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d89410849c701050000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f802000000488b7c24484989780849c7000700000048c7c0050000004883e801486bc0ff70064883c001eb3048c7c00500000048c7c3ffffffff4156415541544153415241514150ff15a20e000041584159415a415b415c415d415ea801740b4889c64883c6027002eb2c48c7c3030000004156415541544153415241514150ff15620e000041584159415a415b415c415d415e4889c6498d7fe8483b7d107306ff5550ca407f4989ff48c747f8020000004889770848c70705000000498d77d8483b75107306ff5550ca807f4989f748c746f80400000048897e1848c746100b000000488bbc24e800000048897e0848c70621000000498d7fe8483b7d107306ff5550ca407f4989ff48c747f8020000004889770848c7070d000000498d57e8483b55107306ff5550ca807f4989d748c742f802000000488b7424384889720848c7020b000000498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848c70605000000498d57e8483b55107306ff5550cac07f4989d748c742f802000000488b4c244048894a0848c7020700000048c7c0050000004883e801486bc00170064883c001eb3648c7c00500000048c7c3030000004156415541544153415241514150575652ff150b0d00005a5e5f41584159415a415b415c415d415ea801740b4889c34883c3027002eb3248c7c3030000004156415541544153415241514150575652ff15c50c00005a5e5f41584159415a415b415c415d415e4889c3498d4fe8483b4d107306ff5550cacc7f4989cf48c741f8020000004889590848c70105000000498d5fd8483b5d107306ff5550cac67f4989df48c743f80400000048894b1848c743100b000000488b8c24e800000048894b0848c70321000000498d4fe8483b4d107306ff5550cacc7f4989cf48c741f8020000004889590848c7010d000000498d5fe8483b5d107306ff5550cac67f4989df48c743f802000000488b4424384889430848c70307000000498d47e8483b45107306ff5550cace7f4989c748c740f80200000048c7400801000000488918498d5fe8483b5d107306ff5550cac77f4989df48c743f8020000004889430848890b498d4fe8483b4d107306ff5550cacc7f4989cf48c741f80200000048895908488911498d57e8483b55107306ff5550cac27f4989d748c742f80200000048894a08488932498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848893e498d7fe8483b7d107306ff5550ca407f4989ff48c747f802000000488977084c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b24244d896500488d642408498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8b2c244c892b488d6424084883fb0175054c89f3eb0c4c89f0ff15100a00004889c34883fb0175035beb12488b0424ff15f20900004889c3488d6424084883fb017507488b5c2460eb0e488b442460ff15ca0900004889c34883fb0175035beb12488b0424ff15ac0900004889c3488d6424084883fb01750a488b9c2498000000eb11488b842498000000ff157e0900004889c34883fb0175075b4883c448eb12488b0424ff155c0900004889c3488d6424504883fb0175075b4883c438eb12488b0424ff15350900004889c3488d6424404883fb017508415c4883c430eb12488b0424ff150d0900004989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c438c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8bb424b000000041ff7610ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b842440010000488b9c24500100004c8b84246801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24980000004d896e0849c7060500000041566a016a016a014c8bb424f800000041ff7608ffb42498010000ffb42498010000ffb42498010000ffb42498010000ffb424980100004c8bb424980100004c8bac24900100004c8ba424880100004c8b9c24800100004c8b9424780100004c8b8c24700100004c8b842468010000488bbc2460010000488bb42458010000488b942450010000488b8c2448010000488b9c2440010000488b842438010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842498010000488b9c24b801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b6424504d8b34244983fe0975704c8b7424484983fe0175654d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500090000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8bac24980000004d896e0849c70621000000eb664d8d6ff04c3b6d107306ff5550ca00104d89ef49c745f8010000004c8b7424584d8975004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24484d895e204d89e44d8966184c8ba424980000004d8966104d896e0849c706230000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b6424184d8b34244983fe0975704c8b7424104983fe0175654d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c745100b0000004c8bb424980000004d89750849c7450021000000eb664d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004c8b6c24204d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24104d895d204d89e44d8965184c8ba424980000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520010000004c8bb424a80000004d89751849c74510010000004c8bb424900000004d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f8050000004c8b9c24c80000004d895d204c8b9c24980000004d895d184c8b9c24a00000004d895d104d89e44d89650849c745000d0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ce0100004889c34883fb017507488b5c2430eb0e488b442430ff15ab0100004889c34883fb0175035beb12488b0424ff158d0100004889c3488d6424084883fb017507488b5c2468eb0e488b442468ff15650100004889c34883fb0175075b4883c418eb12488b0424ff15430100004889c3488d6424204883fb0175075b4883c438eb12488b0424ff151c0100004889c3488d6424404883fb017508415e4883c460eb12488b0424ff15f40000004989c6488d64246848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15b7000000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff158f000000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff251b000000f40000|@14800,1,@1756,@6585,@4933,@6552,@6590,@6591,@6592,@6593,@6594,@6595,@6596,@6597,@6598,@6599,@6600,@6601,@6602,@6603,@6584,@4933,@6552,@4933,@6552,@4933,@6552|42,0,@14797 113,0,@9475 235,0,@9475 357,0,@9475 479,0,@9475 905,0,@9475 1044,0,@9475 1179,0,@9475 1301,0,@9475 2127,0,@9475 2191,0,@9475 2255,0,@9475 2319,0,@9475 2383,0,@9475 2447,0,@9475 6584:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1776| 6585:D9,2320|483b65187306ff5558ca09074989c54989de41514d8b5d004d89dc4983fb010f85ec0600004d8b4d084d89cb498b7510498b5518498b7d204883fa037525498b084883f901751c415d4d8975004d89450849c745100100000048c7c001000000c208004883fa037525498b104883fa05751c415d4d8975004d89450849c745100100000048c7c001000000c208004883fe030f858f020000498b104883fa050f85820200004d8b600848c7c001000000482b05510800007002eb2848c7c001000000488b1d3708000041554156415041524154ff1577080000415c415a4158415e415da801740d41f6c4017407493bc47f28eb284c89e341554156415041524154ff1541080000415c415a4158415e415d4989c34983fb017e02eb2c41f6c401740e4c3b25cf0700007d1de9db0100004d0fb66424ff4e8d2465010000004983fc230f84c30100004d8b5d004d89dc4983fb0175604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb6a4983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb044d8b6d0841554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15830600004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c20800415d4d8975004d89450849c745100100000048c7c001000000c208004883fe030f85c9010000498b304883fe010f85bc0100004d89e14d89cc4983f901755f4d8b1a4d89dd4983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d892a4c8b6c24104d8b65004d8d6fe84c3b6d107306ff5550ca00594d89ef49c745f8020000004d89650849c74500050000004c8b6424104d892c24eb654983fc03755f4d8b1a4d89dd4983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d892a4c8b6c24104d8b65004d8d6fe84c3b6d107306ff5550ca00594d89ef49c745f8020000004d89650849c74500050000004c8b6424104d892c24eb0041534d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff158c0400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c208004883ff037525498b384883ff09751c415d4d8975004d89450849c745100100000048c7c001000000c208004983f90375254d8b084983f907751c415d4d8975004d89450849c745100100000048c7c001000000c208004d89e14d89cc4983f90175604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb694983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb034d89dd41554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff156d0200004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c208004d89e34983fc03751c415d4d8975004d89450849c745100100000048c7c001000000c208004d89dc4983fb0175604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb6a4983fc0375604d8b2a4d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89224c8b6424104d8b1c244d8d67e84c3b65107306ff5550ca00694d89e749c74424f8020000004d895c240849c70424050000004c8b5c24104d8923eb044d8b6d0841554d8d67d84c3b65107306ff5550ca00414d89e749c74424f8040000004d8944241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15810000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c001000000c20800f40000010000000100000001000000010000000000000001000000|@14801,1,@1757,@6587,@6588,@6589,@6586,@6558,@4987|360,0,@9475 462,0,@9475 861,0,@9475 962,0,@9475 1391,0,@9475 1493,0,@9475 1874,0,@9475 1976,0,@9475 6586:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1761| 6587:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1758| 6588:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1759| 6589:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1760| 6590:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1762| 6591:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1763| 6592:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1764| 6593:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1765| 6594:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1766| 6595:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1767| 6596:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1768| 6597:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1769| 6598:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1770| 6599:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1771| 6600:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1772| 6601:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1773| 6602:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1774| 6603:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1775| 6604:D6,2560|488dbc2450ffffff483b7d187306ff5560ca0d07524150415141524c8b70084983fe010f85fc010000ff30ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f8000000ff12488d642430415c415e488d6424084d8b2e4983fd090f85cc0000004d8b6e08f6042401740c4c8b34244983fe017d19eb1f4c8b34244d0fb676ff4e8d3475010000004983fe237408415b4883c408eb2448b8f814d1f1c27f0000488b1c2441544155ff1597080000415d415c4989c3488d64241041f6c30174584d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e1849bb58a4d3f1c27f00004d895e1049c74608010000004d892e415d4d89650049c74508010000004d89751048c7c0010000004883c418c29000488d64242048b80815d1f1c27f0000488b5d08ff23488d64243048b8c0add3f1c27f0000488b5d08ff2341ff36ff30ff70104883fb010f856b0300006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f854102000041ff76086a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415c415e488d6424084d8b2e4983fd090f85120100004d8b7608f644242801740d4c8b6c24284983fd017d1aeb1f4c8b6c24284d0fb66dff4e8d2c6d010000004983fd2374074c8b5c2428eb2048b8f814d1f1c27f0000488b5c242841544156ff156a050000415e415c4989c341f6c3010f849c0000004983eb087115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500050000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d896e1049c74608010000004c8b2c244d892e488d6424084c8b6c24384d89650049c74508010000004d89751048c7c0010000004883c458c29000488d64246048b80815d1f1c27f0000488b5d08ff23488d64246048b8c0add3f1c27f0000488b5d08ff23488d64245848b8c0add3f1c27f0000488b5d08ff234c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f00004c8b942408010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85b602000041ff76086a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c243801000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415b415e488d6424084d8b2e4983fd090f85870100004d8b76084d8d6fd04c3b6d107306ff5550ca00484d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b7424284d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d893424f644243001740d4c8b7424304983fe017d1aeb1f4c8b7424304d0fb676ff4e8d3475010000004983fe2374074c8b542430eb2048b8f814d1f1c27f0000488b5c243041534154ff15ee000000415c415b4989c241f6c2010f84820000004d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424284d89750849c74500010000004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e1049c74608010000004c8b2c244d892e488d6424084c8b6c24404d895d004d8965084d89751048c7c0010000004883c460c29000488d64246848b80815d1f1c27f0000488b5d08ff23488d64246848b8c0add3f1c27f0000488b5d08ff23488d64246048b8c0add3f1c27f0000488b5d08ff23f4000000|@14803,1,@1777,@4933,@4933,@4933|279,0,@14738 379,0,@10021 452,0,@14742 514,0,@10022 535,0,@14784 800,0,@14738 1081,0,@14738 1183,0,@10021 1236,0,@9475 1386,0,@10022 1407,0,@14784 1428,0,@14784 1477,0,@9475 1797,0,@14738 2078,0,@14738 2323,0,@10021 2500,0,@10022 2521,0,@14784 2542,0,@14784 6605:D4,1096|483b65187306ff5558ca0d07534150415141524c8b304983fe0f0f85c8010000488b58084c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500070000004c8ba424a80000004d892c24f6c301741cf6c3017402eb1c488d64242048b8381fd1f1c27f0000488b5d08ff2348c7c3010000004c8b6c24184983fd0375054989dceb3cf6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1748b8f814d1f1c27f00004156ff1550030000415e4989c44d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004d8974240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d4c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c410c290004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975004c8bb424b00000004d8b2e4d8d77e84c3b75107306ff5550ca05204d89f749c746f8020000004d896e0849c706070000004c8bac24b00000004d8975006a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f8000000ff12488d642438415b415e488d6424084d8b2e4983fd090f85c30000004d8b76084d8d67d04c3b65107306ff5550ca00484d89e749c74424f8050000004c8b6c24204d896c24204d8974241849c7442410010000004c8b2c244d89ee4d896c240849c704244b0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c244c8b6c24084d895d004d8965084d89f64d897510488d64241048c7c0010000004883c418c29000488d64242848b8c0add3f1c27f0000488b5d08ff23f4000000|@14804,1,@1778,@4933|72,0,@9475 180,0,@10093 256,0,@10021 523,0,@9475 831,0,@14738 1078,0,@14784 6606:D67,13840|488dbc2418ffffff483b7d187306ff5560ca0d075253415141524c8b304d8b364c8d2d080000004f8d6cb5fc41ffe5e943000000909090e95f020000909090e97b040000909090e98d050000909090e9ef080000909090e9890b0000909090e99d0e0000909090e9ab0f0000909090e9bc100000909090ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3050000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248000000041ff7620ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84242001000048c7c3010000004c8b84243801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e900310000ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3090000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248000000041ff7620ffb42420010000ffb42420010000ffb42420010000ffb42420010000ffb424200100004c8bb424200100004c8bac24180100004c8ba424100100004c8b9c24080100004c8b9424000100004c8b8c24f80000004c8b8424f0000000488bbc24e8000000488bb424e0000000488b9424d8000000488b8c24d0000000488b9c24c8000000488b8424c0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84242001000048c7c3010000004c8b84243801000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e9842c0000ff7008ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9bf260000ff7008ff70106a016a016a014c8b74244041ff7618ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d000000048c7c3030000004c8b8424f00000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8b7424604d8b364983fe0f0f85ad0000004c8b742460498b5e08f6c301741ff6c3017402eb1f488da4248800000048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff15b53000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9db2200004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975006a016a016a014c8bb424a000000041ff7608ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842448010000488b9c246001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000e930200000ff7008ff70104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a014c8b74244841ff7618ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424f80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c244801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9541a0000ff7008ff70104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7618ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424e000000048c7c3090000004c8b8424000100004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb4249000000041ff7608ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c245001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e935130000ff7008ff70106a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d800000048c7c3030000004c8b8424f800000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c501000000e9540c0000ff7008ff70106a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240001000049c7c00100000049b9e8a8d3f1c27f000049c7c201000000ff12488d6424304c8b2c24ff74240849c7c601000000e9e6070000ff7008ff70106a016a016a014c8b74244041ff7610ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424d800000048c7c3010000004c8b8424f800000049c7c1010000004c8d9424c0000000ff12488d6424304c8b2424ff7424084c8b74241849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76184c8b7424484d8b364983fe0f0f85f00000004c8b7424484d8b6e0841f6c501740949c7c603000000eb0749c7c6010000004983fe03740c49c7c601000000e9a800000041f6c5010f84a000000048c7c001000000482b051a2300007002eb1848c7c001000000488b1d002300004155ff1510250000415da801740d41f6c5017407493bc57f18eb184c89eb4155ff15ea240000415d4989c64983fe017e02eb2441f6c501740b4c3b2db82200007d15eb1c4d0fb675ff4e8d3475010000004983fe23740949c7c601000000eb1e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64247048b8381fd1f1c27f0000488b5d08ff2349c7c6010000006a016a014983fe010f85600200004c8bb4241001000041ff364c8bb424180100004d8b364983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24100100004d8975004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849c7060900000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c7060500000041566a016a016a014c8bb424b000000041ff7608ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842458010000488b9c247001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c001000000e90d0200004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c89342448c7442408010000004c8b2c24ff7424084d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24184d896e184c8b6c24204d896e1049c746080b0000004c8b6c24284d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2438eb0e488b442438ff15ec2000004889c34883fb0175075b4883c428eb12488b0424ff15ca2000004889c3488d6424304883fb017508415e4883c430eb12488b0424ff15a22000004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1565200000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff153d200000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25c91f000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520010000004c8b7424104d89751849c74510010000004c8b7424084d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15da1e00004989c6415d4c896c24104c897424184883c410e92afdffff41f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b74246841ff7610ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84240001000048c7c3010000004c8b84242001000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554d8b2e4d8b66104d8b5e184d8d77c84c3b75107306ff5550ca01384d89f749c746f80600000049c74628030000004c8b5424104d8956204d895e184d89661049c746080b0000004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff155c1c00004889c34883fb017507488b5c2408eb0e488b442408ff15391c00004889c34883fb017508415e4883c438eb12488b0424ff15161c00004989c6488d64244048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15d91b0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15b11b0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff253d1b000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb415541ff3641ff761041ff76186a016a016a014c8b7424604d8b364983fe0f0f85ad0000004c8b742460498b5e08f6c301741ff6c3017402eb1f488da4248800000048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff15621a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a60200004c8bb4241801000041ff364c8bb424200100004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24200100004d8975004c8bb424180100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24180100004d8975006a016a016a014c8bb424a000000041ff7608ffb42440010000ffb42440010000ffb42440010000ffb42440010000ffb424400100004c8bb424400100004c8bac24380100004c8ba424300100004c8b9c24280100004c8b9424200100004c8b8c24180100004c8b842410010000488bbc2408010000488bb42400010000488b9424f8000000488b8c24f0000000488b9c24e8000000488b8424e0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842448010000488b9c246001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85bc0200004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff7424104c8b6c24204d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608050000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2448eb0e488b442448ff15901600004889c34883fb0175035beb12488b0424ff15721600004889c3488d6424084883fb0175075b4883c430eb12488b0424ff154b1600004889c3488d6424384883fb017508415e4883c430eb12488b0424ff15231600004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15e6150000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15be150000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff254a150000488da4249000000048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85970300004d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424504d89660849c706090000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24484d895c24204d897424184c8b7424504d8974241049c74424080900000049c704243b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c74510070000004c8b7424504d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d00000041564d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004c8b7424504d89750849c74500090000004d8d77c84c3b75107306ff5550ca01204d89f749c746f80600000049c74628030000004d896e204c8b6c24104d896e184c8b6c24184d896e1049c74608090000004c8b6c24204d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15791200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb017507488b5c2420eb0e488b442420ff15321200004889c34883fb0175075b4883c420eb12488b0424ff15101200004889c3488d6424284883fb017508415e4883c438eb12488b0424ff15e81100004989c6488d64244048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15ab110000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff1583110000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff250f110000488da4248800000048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85ce0200004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424484d89750849c74500210000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424484d89650849c74500090000004d8d67c84c3b65107306ff5550ca00604d89e749c74424f80600000049c7442428030000004d896c24204c8b6c24084d896c24184c8b6c24104d896c241049c7442408070000004c8b6c24184d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500410000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2420eb0e488b442420ff15c80e00004889c34883fb0175075b4883c420eb12488b0424ff15a60e00004889c3488d6424284883fb017508415e4883c430eb12488b0424ff157e0e00004989c6488d64243848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15410e0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15190e0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25a50d0000488da4248000000048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85bc0200004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff7424104c8b6c24204d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608050000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff158e0b00004889c34883fb0175035beb12488b0424ff15700b00004889c3488d6424084883fb0175075b4883c438eb12488b0424ff15490b00004889c3488d6424404883fb017508415e4883c428eb12488b0424ff15210b00004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15e40a0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15bc0a0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25480a0000488da4249000000048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f854204000041ff76084c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7618ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424e800000048c7c3110000004c8b8424080100004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184d8b2e4d8b5e104d8b56184d8d77d04c3b75107306ff5550ca012c4d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004c8b6424284d89660849c706070000004d8d67d84c3b65107306ff5550ca016c4d89e749c74424f8040000004d8974241849c74424100b0000004c8b7424204d8974240849c70424210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c7060d0000004d8d4fe84c3b4d107306ff5550ca016c4d89cf49c741f8020000004c8b6424204d89610849c701090000004d8d67c84c3b65107306ff5550ca016e4d89e749c74424f80600000049c7442428030000004d894c24204d895424184d895c241049c74424080b0000004d892c244d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500410000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15890600004889c34883fb017507488b5c2430eb0e488b442430ff15660600004889c34883fb017508415e4883c440eb12488b0424ff15430600004989c6488d64244848c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1506060000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15de050000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff256a050000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500090000004d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608030000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff150b0400004889c34883fb017507488b5c2408eb0e488b442408ff15e80300004889c34883fb0175075b4883c440eb12488b0424ff15c60300004889c3488d6424484883fb017508415e4883c428eb12488b0424ff159e0300004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1561030000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff1539030000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25c502000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500090000004d8d77c84c3b75107306ff5550ca00204d89f749c746f80600000049c74628030000004d896e204c8b6c24284d896e184c8b6c24304d896e1049c74608010000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2440eb0e488b442440ff157b0100004889c34883fb017507488b5c2408eb0e488b442408ff15580100004889c34883fb0175075b4883c440eb12488b0424ff15360100004889c3488d6424484883fb017508415e4883c428eb12488b0424ff150e0100004989c6488d64243048c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15d1000000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15a9000000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff2535000000f400000000010000000100000001000000010000000000000001000000|@14810,1,@1779,@6585,@4933,@6552,@6608,@6609,@6610,@6611,@6585,@4933,@6552,@6612,@6613,@6614,@6615,@6585,@4933,@6552,@6616,@6617,@6618,@6585,@4933,@6552,@6619,@6620,@6621,@6622,@6585,@4933,@6552,@6623,@6624,@6625,@6585,@4933,@6552,@6626,@6627,@6628,@6629,@6585,@4933,@6552,@6630,@6631,@6632,@6633,@4933,@6585,@4933,@6552,@6634,@6635,@6636,@6637,@6585,@4933,@6552,@6638,@6639,@6607,@6558,@4987,@4933|1454,0,@14738 1825,0,@10093 1885,0,@10021 2005,0,@9475 2328,0,@14738 2412,0,@9475 3002,0,@14738 3086,0,@9475 3208,0,@9475 3798,0,@14738 4358,0,@14763 4999,0,@10093 5072,0,@9475 5197,0,@9475 7412,0,@10093 7472,0,@10021 7592,0,@9475 7915,0,@14738 8744,0,@14807 9072,0,@14742 9771,0,@14807 9910,0,@14742 10597,0,@14807 11402,0,@14807 11539,0,@9475 11931,0,@14742 12597,0,@14807 6607:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1812| 6608:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1780| 6609:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1781| 6610:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1782| 6611:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1783| 6612:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1784| 6613:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1785| 6614:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1786| 6615:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1787| 6616:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1788| 6617:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1789| 6618:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1790| 6619:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1791| 6620:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1792| 6621:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1793| 6622:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1794| 6623:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1795| 6624:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1796| 6625:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1797| 6626:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1798| 6627:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1799| 6628:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1800| 6629:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1801| 6630:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1802| 6631:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1803| 6632:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1804| 6633:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1805| 6634:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1806| 6635:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1807| 6636:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1808| 6637:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1809| 6638:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1810| 6639:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1811| 6640:D10,4496|488dbc2460ffffff483b7d187306ff5560ca0d0752534150415141524c8b70084983fe010f8583010000ff30ff70104c8b74241041ff364c8b7424184d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24184d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a014c8b74245041ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042428ff742460ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642428415d415e488d64240849c7c301000000e9e30d000041ff36ff30ff70104c8b7424304983fe030f85ef0100004c8b74241841ff364c8b7424204d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24204d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8b74242041ff364c8b7424284d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24284d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042428ff742470ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642428415c415e488d64240849c7c501000000e97f0700004c8b74241841ff364c8b7424204d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24204d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042428ff742468ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642428415c415e488d64240849c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f850e01000041ff76086a016a016a014c8b74246841ff7608ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042428ff742478ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b842400010000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642428415c415d488d64240849c7c601000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85270400004d8b6d084d8d5fd04c3b5d107306ff5550ca00604d89df49c743f80500000049c743200100000049bc58a4d3f1c27f00004d89631849c7431001000000415c4d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849c74424100b0000004c8b5c24084d895c240849c70424210000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c2441544c8b6424484983fc110f85ec000000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f814d1f1c27f0000488b5c241841564155ff15af090000415d415e4989c341f6c301747d4983eb087115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d896500e9f5010000488d64245848b80815d1f1c27f0000488b5d08ff234c8b6424484983fc090f85ec000000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f814d1f1c27f0000488b5c241841564155ff15ac080000415d415e4989c341f6c301747d4983eb047115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d896500e9fa000000488d64245848b80815d1f1c27f0000488b5d08ff234c8b6424484983fc050f8536010000f644241801740d4c8b6424184983fc017d1beb204c8b6424184d0fb66424ff4e8d2465010000004983fc2374074c8b5c2418eb2048b8f814d1f1c27f0000488b5c241841564155ff15a9070000415d415e4989c341f6c3010f84c30000004983eb027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424010000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424104d89650041554983fe0175074c8b742410eb114c89f3488b442410ff15fb0600004989c64c8b6c24404d8975004c8b7424084d897508415e488d6424084d89751048c7c0010000004883c450c28800488d64245848b80815d1f1c27f0000488b5d08ff23488d64245848b850b4d3f1c27f0000488b5d08ff23488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851101000041ff76086a016a016a014c8b74247041ff7608ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042428ffb42480000000ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424b8000000488b842408010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642428415c415d488d64240849c7c601000000eb15488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f857c0200004d8b6d084d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c74424200100000049bb58a4d3f1c27f00004d895c241849c744241001000000415b4d895c240849c70424070000004d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004d89631849c743100b0000004c8b6424104d89630849c703210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f80500000049c74320010000004d896b1849c74310010000004c8b6c24084d896b0849c7034b0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004155f644242001740d4c8b6c24204983fd017d1aeb1f4c8b6c24204d0fb66dff4e8d2c6d010000004983fd2374074c8b5c2420eb1c48b8f814d1f1c27f0000488b5c24204156ff150e030000415e4989c341f6c3010f84ad0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24104d896c240849c70424010000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d89651049c74508010000004c8b6424184d89650041554983fe0175074c8b742410eb114c89f3488b442410ff15780200004989c64c8b6c24484d8975004c8b7424084d897508415e488d6424084d89751048c7c0010000004883c458c28800488d64246048b80815d1f1c27f0000488b5d08ff23488d64246048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4d8b2e4983fd090f85950100004d8b6e084d8d77d04c3b75107306ff5550ca00284d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f80200000049c7442408010000004d893424f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe2374074c8b6c2408eb2048b8f814d1f1c27f0000488b5c240841534154ff15ad000000415c415b4989c541f6c50174594d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d896e1849bd58a4d3f1c27f00004d896e1049c7460801000000415d4d892e4c8b6c24184d895d004d8965084d89751048c7c0010000004883c438c28800488d64244048b80815d1f1c27f0000488b5d08ff23488d64244048b888b3d3f1c27f0000488b5d08ff23f400000000|@14814,1,@1813,@4933,@6642,@4933,@6641,@4933,@4933,@4933|76,0,@9475 386,0,@14738 481,0,@9475 594,0,@9475 904,0,@14738 976,0,@9475 1286,0,@14738 1638,0,@14738 1685,0,@14807 1823,0,@14742 2066,0,@10021 2115,0,@9475 2234,0,@10022 2317,0,@10021 2366,0,@9475 2485,0,@10022 2568,0,@10021 2621,0,@9475 2810,0,@10022 2831,0,@14811 2852,0,@14807 3183,0,@14738 3230,0,@14807 3370,0,@14742 3733,0,@10021 3949,0,@10022 3970,0,@14807 4106,0,@14742 4324,0,@10021 4393,0,@14742 4456,0,@10022 4477,0,@14807 6641:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1815| 6642:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1814| 6643:D21,10136|483b65187306ff5558ca0d075341524c8b304d8b364c8d2d080000004f8d6cb5fc41ffe5e943000000909090e996040000909090e9ea080000909090e9450d0000909090e998110000909090e9f3150000909090e94e1a0000909090e9621c0000909090e9761e0000909090ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3050000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510010000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e62300004889c34883fb017508415c4883c418eb12488b0424ff15c32300004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3090000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b5c24184c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244d8d6fd84c3b6d107306ff5550ca01484d89ef49c745f80400000049c74518010000004d8975104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c704240d0000004d8b2b4d8b53084d8b4b104d8b43184d8d5fd04c3b5d107306ff5550ca01774d89df49c743f8050000004d8943204d894b184d8953104d896b0849c703070000004d8d6fd84c3b6d107306ff5550ca01584d89ef49c745f8040000004d895d1849c74510030000004d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff157a1f00004889c34883fb017508415c4883c418eb12488b0424ff15571f00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15071b00004889c34883fb017508415c4883c418eb12488b0424ff15e41a00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3030000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510050000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424204d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff159c1600004889c34883fb017508415c4883c418eb12488b0424ff15791600004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3110000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510070000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518030000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15291200004889c34883fb017508415c4883c418eb12488b0424ff15061200004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7210ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742418ff742418ff742418ff7424184156415541544153415241514150575652515350488b9424b0000000488b8424d800000048c7c3090000004c8b8424e80000004c8d8c24b80000004c8b9424a8000000ff12488d642430ff3424488b4424104c8b7424184c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510090000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518030000004d8965104c8b6424204d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15b60d00004889c34883fb017508415c4883c418eb12488b0424ff15930d00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3030000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c501000000e94a080000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3010000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c501000000e9a0040000ff70084d8b294d89ee4983fd010f85820000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24e9890000004983fe03757f4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d892c244c8bac24a00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a00000004d892c24eb044d8b710841566a016a016a01ff7208ffb424d0000000ffb424d0000000ffb424d0000000ffb424d0000000ffb424d00000004c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004c8b9424b00000004c8b8c24a80000004c8b8424a0000000488bbc2498000000488bb42490000000488b942488000000488b8c2480000000488b5c2478488b442470ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e000000048c7c3010000004c8b8424f000000049c7c1010000004c8d9424c0000000ff12488d642430415c58415e49c7c50100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554c8bac24b80000004d8b65004c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24b80000004d892b4c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24b00000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c745100b0000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424084d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ca0400004889c34883fb017504415ceb12488b0424ff15ab0400004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554d8b2e4d8b66084d8b5e104d8b56184d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b7424084d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff152c0300004889c34883fb017504415ceb12488b0424ff150d0300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca017a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0170ebbb41554c8bac24b80000004d8b65004c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24b80000004d892b4c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c74500070000004c8b9c24b00000004d892b4d8b2e4d8b5e084d8b56104d8b4e184d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8956184d895e104d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f8040000004d89751849c74510050000004d89650849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d8965104c8b6424084d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15930000004889c34883fb017504415ceb12488b0424ff15740000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000f400|@14816,1,@1816,@6645,@6646,@6647,@6648,@6649,@6650,@6651,@6652,@6653,@6654,@6655,@6656,@6657,@6658,@6659,@6660,@6661,@6644|163,0,@9475 299,0,@9475 678,0,@9475 1278,0,@9475 1414,0,@9475 1792,0,@9475 2394,0,@9475 2530,0,@9475 2909,0,@9475 3517,0,@9475 3653,0,@9475 4032,0,@9475 4632,0,@9475 4768,0,@9475 5147,0,@9475 5755,0,@9475 5891,0,@9475 6270,0,@9475 6878,0,@9475 7014,0,@9475 7418,0,@9475 7554,0,@9475 7958,0,@9475 8094,0,@9475 8546,0,@9475 9593,0,@9475 6644:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1834| 6645:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1817| 6646:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1818| 6647:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1819| 6648:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1820| 6649:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1821| 6650:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1822| 6651:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1823| 6652:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1824| 6653:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1825| 6654:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1826| 6655:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1827| 6656:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1828| 6657:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1829| 6658:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1830| 6659:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1831| 6660:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1832| 6661:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1833| 6662:D24,27592|488dbc24b8feffff483b7d187306ff5560ca0d075250534150415141524c8b7424204d8b364c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e9ab000000909090e9a3000000909090e940040000909090e94f480000909090e98b000000909090e949580000909090e9dd5d0000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e9485e0000909090e90b000000909090e9426200009090904c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842410010000488b9c240801000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f0000000ff12488d642438415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1526690000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff15f2680000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0add3f1c27f0000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8b7424304d8b76184d8b2e4d89ec4983fd0f0f85762700004d8b76084983fe050f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b5e084c8bb424f00000004d8b164c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d89560849c706070000004c8b6c24584983fd03750949c7c411000000eb0749c7c4030000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d8955204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca005a4d89ef49c745f80500000049c745200100000049ba58a4d3f1c27f00004d89551849c74510010000004d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00724d89df49c743f8040000004c8b5424304d8953184d896b104c8b6c24284d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00724d89df49c743f80500000049c743200100000049ba58a4d3f1c27f00004d89531849c7431001000000415a4d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234983fe090f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b56084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d895e0849c706070000004c8b6c24584983fd03750949c7c411000000eb0749c7c4030000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca00664d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00564d89ef49c745f80500000049c745200100000049bb58a4d3f1c27f00004d895d1849c7451001000000415b4d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f8040000004c8b4424284d8943184d896b104c8b6c24204d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f80500000049c743200100000049b858a4d3f1c27f00004d89431849c74310010000004d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234983fe030f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b5e084c8bb424f00000004d8b164c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d89560849c706070000004c8b6c24584983fd03750949c7c401000000eb0749c7c40f0000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d8955204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca005a4d89ef49c745f80500000049c745200100000049ba58a4d3f1c27f00004d89551849c74510010000004d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00724d89df49c743f8040000004c8b5424304d8953184d896b104c8b6c24284d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00724d89df49c743f80500000049c743200100000049ba58a4d3f1c27f00004d89531849c7431001000000415a4d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234983fe070f85e20600004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85f103000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d6424304159415e488d6424084d8b2e4983fd090f85bf0200004d8b56084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d895e0849c706070000004c8b6c24584983fd03750949c7c401000000eb0749c7c40f0000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d204d8965184c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca00664d89e749c74424f8020000004d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00564d89ef49c745f80500000049c745200100000049bb58a4d3f1c27f00004d895d1849c7451001000000415b4d895d0849c74500070000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f8040000004c8b4424284d8943184d896b104c8b6c24204d896b0849c703390000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f80500000049c743200100000049b858a4d3f1c27f00004d89431849c74310010000004d89530849c703070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a1849c74210070000004c8b5c24204d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f856208000041ff76086a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d6424305f415e488d6424084d8b2e4983fd090f85310700004d8b4e084c8bb424f00000004d8b1e4c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004c8b7424584983fe010f85730300004c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca800b4d89f749c746f8020000004d895e0849c706070000004d8d6fd04c3b6d107306ff5550ca804b4d89ef49c745f8050000004d895d2049c74518130000004c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca80634d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca80534d89ef49c745f8020000004d89450849c74500070000004d8d57d04c3b55107306ff5550ca80734d89d749c742f8050000004d89422049c742181b0000004c8b5c24504d895a104c8b5c24304d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d89530849c703050000004d8d57d04c3b55107306ff5550ca807a4d89d749c742f80500000049c742200100000049b858a4d3f1c27f00004d89421849c74210010000004d894a0849c702070000004d8d4fd84c3b4d107306ff5550ca807c4d89cf49c741f8040000004c8b4424304d8941184d8951104c8b5424284d89510849c701390000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fd04c3b4d107306ff5550ca807c4d89cf49c741f80500000049c741200100000049b858a4d3f1c27f00004d89411849c741100100000041584d89410849c701070000004d8d47d84c3b45107306ff5550ca807e4d89c749c740f8040000004d89481849c74010070000004c8b4c24204d89480849c700210000004d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849c7010d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c290004c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004d8d77e84c3b75107306ff5550ca800b4d89f749c746f8020000004d895e0849c706070000004d8d6fd04c3b6d107306ff5550ca804b4d89ef49c745f8050000004d895d2049c74518050000004c8b6424504d8965104c8b6424304d89650849c74500010000004d8d67e84c3b65107306ff5550ca806b4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca805b4d89ef49c745f8020000004d89450849c74500070000004d8d57d04c3b55107306ff5550ca807b4d89d749c742f8050000004d89422049c742181b0000004d895a104c8b5c24304d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca80764d89df49c743f8020000004d89530849c703050000004d8d57d04c3b55107306ff5550ca807a4d89d749c742f80500000049c742200100000049b858a4d3f1c27f00004d89421849c74210010000004d894a0849c702070000004d8d4fd84c3b4d107306ff5550ca807c4d89cf49c741f8040000004c8b4424304d8941184d8951104c8b5424284d89510849c701390000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f8020000004d894a0849c7020d0000004d8d4fd04c3b4d107306ff5550ca807c4d89cf49c741f80500000049c741200100000049b858a4d3f1c27f00004d89411849c741100100000041584d89410849c701070000004d8d47d84c3b45107306ff5550ca807e4d89c749c740f8040000004d89481849c74010070000004c8b4c24204d89480849c700210000004d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849c7010d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488d64247848b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234d89e54983fc070f851008000041ff76084c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f85a506000041ff76086a016a014c8b7424484d8b364983fe0f0f857b0100004c8b7424484d8b760841f6c6017418488da4248800000048b8b0b5d3f1c27f0000488b5d08ff2341f6c6017418488da4248800000048b808afd1f1c27f0000488b5d08ff234d8b6ef849c1e50849c1ed074983cd014983fd03740d488da42488000000e9030100004d0fb66eff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84c30000004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb1448b8f814d1f1c27f00004156ff15df3d0000415e4d8b2e4c232d233d00004d89ee4983fe00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989dd4983ed014c03e87002eb09ff15923d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8b6c24184c892c244c89742408e984010000488da4248800000048b838b6d3f1c27f0000488b5d08ff236a016a016a014c8bb4249800000041ff7608ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842430010000488b9c245801000049c7c00100000049b9b8a3d3f1c27f00004c8b942400010000ff12488d642438415d415e488d6424084d8b264983fc090f85dd0300004d8b66084d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c746200100000049bb58a4d3f1c27f00004d895e1849c74610010000004d89660849c706070000004c892c244c897424084159415d4c8bb424080100004d8b1e4c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8ba424080100004d8934244c8bb424000100004d8b264d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d89660849c706070000004c8ba424000100004d8934244c8bb424f00000004d8b064c8bb424f00000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8ba424f00000004d8934244d8d77e84c3b75107306ff5550ca002b4d89f749c746f8020000004d89460849c706070000004c8b6424304983fc0575204c8b6424584983fc01750949c7c403000000eb0749c7c411000000e9930000004c8b6424304983fc03751d4c8b6424584983fc01750949c7c40f000000eb0749c7c401000000eb6b4c8b6424304983fc09751d4c8b6424584983fc01750949c7c401000000eb0749c7c40f000000eb434c8b6424304983fc07751d4c8b6424584983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424584983fc01750949c7c413000000eb0749c7c4050000004d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8942204d8962184c8b6424504d8962104c8b6424284d89620849c702010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004c8b4424284d8942184d896a104d895a0849c7024d0000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47d04c3b45107306ff5550ca007a4d89c749c740f80500000049c740200100000049ba58a4d3f1c27f00004d89501849c7401001000000415a4d89500849c700070000004d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d89421849c742100b0000004d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c470c29000488da4248800000048b8c0add3f1c27f0000488b5d08ff23488d64247048b8c0add3f1c27f0000488b5d08ff234983fd130f85a710000041ff760841ff76104c8b7424104d8b364983fe0f0f853d0500004c8b74241041ff76084c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f00004c8b942410010000ff12488d642430415a415e488d6424084d8b2e4983fd090f85cc0300004d8b6e08f6442408010f84a5000000f6442408010f8485000000f6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841524155ff1545360000415d415aa801740b4989c64983c6027002eb1848c7c30300000041524155ff1519360000415d415a4989c64d8d4fe84c3b4d107306ff5550ca00644d89cf49c741f8020000004d89710849c70105000000eb40488d64246048b8381fd1f1c27f0000488b5d08ff234d8d4fe84c3b4d107306ff5550ca00244d89cf49c741f8020000004c8b7424084d89710849c701010000004c8bb424d80000004d8b064c8bb424d80000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d8934244d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d89460849c706070000004c8b6424184983fc0575484c8b6424104983fc01751d4c8b6424404983fc01750949c7c403000000eb0749c7c411000000eb1b4c8b6424404983fc01750949c7c40b000000eb0749c7c409000000e90e0100004c8b6424184983fc0375484c8b6424104983fc01751d4c8b6424404983fc01750949c7c40f000000eb0749c7c401000000eb1b4c8b6424404983fc01750949c7c40d000000eb0749c7c407000000e9bb0000004c8b6424184983fc0975454c8b6424104983fc01751d4c8b6424404983fc01750949c7c401000000eb0749c7c40f000000eb1b4c8b6424404983fc01750949c7c407000000eb0749c7c40d000000eb6b4c8b6424184983fc0775454c8b6424104983fc01751d4c8b6424404983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424404983fc01750949c7c409000000eb0749c7c40b000000eb1b4c8b6424404983fc01750949c7c413000000eb0749c7c4050000004d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8943204d8963184c8b6424384d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c240849c70424050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c458c29000488d64246048b8c0add3f1c27f0000488b5d08ff234c8b7424184d8b364983fe0f0f85800500004c8b74241841ff76084c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f00004c8b942410010000ff12488d642430415a415e488d6424084d8b2e4983fd090f850f0400004d8b6e08f6442408010f84a5000000f6442408010f8485000000f6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841524155ff15e6300000415d415aa801740b4989c64983c6027002eb1848c7c30300000041524155ff15ba300000415d415a4989c64d8d4fe84c3b4d107306ff5550ca00644d89cf49c741f8020000004d89710849c70105000000eb40488d64246048b8381fd1f1c27f0000488b5d08ff234d8d4fe84c3b4d107306ff5550ca00244d89cf49c741f8020000004c8b7424084d89710849c701010000004c8bb424d80000004d8b064c8bb424d80000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d8934244d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d89460849c706070000004c8b6424184983fc05750949c7c409000000eb434c8b6424184983fc03750949c7c407000000eb2f4c8b6424184983fc09750949c7c405000000eb1b4c8b6424184983fc07750949c7c403000000eb0749c7c4010000004983fc0575484c8b6424104983fc01751d4c8b6424404983fc01750949c7c403000000eb0749c7c411000000eb1b4c8b6424404983fc01750949c7c40b000000eb0749c7c409000000e9ff0000004983fc0375484c8b6424104983fc01751d4c8b6424404983fc01750949c7c40f000000eb0749c7c401000000eb1b4c8b6424404983fc01750949c7c40d000000eb0749c7c407000000e9b10000004983fc0975454c8b6424104983fc01751d4c8b6424404983fc01750949c7c401000000eb0749c7c40f000000eb1b4c8b6424404983fc01750949c7c407000000eb0749c7c40d000000eb664983fc0775454c8b6424104983fc01751d4c8b6424404983fc01750949c7c411000000eb0749c7c403000000eb1b4c8b6424404983fc01750949c7c409000000eb0749c7c40b000000eb1b4c8b6424404983fc01750949c7c413000000eb0749c7c4050000004d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8943204d8963184c8b6424384d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c240849c70424050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c458c29000488d64246048b8c0add3f1c27f0000488b5d08ff234c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975006a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f00004c8b942408010000ff12488d642430ff34244c8b7424104d8b2e4983fd090f855704000041ff76086a016a016a014c8bb4249000000041ff7608ffb42430010000ffb42430010000ffb42430010000ffb42430010000ffb424300100004c8bb424300100004c8bac24280100004c8ba424200100004c8b9c24180100004c8b9424100100004c8b8c24080100004c8b842400010000488bbc24f8000000488bb424f0000000488b9424e8000000488b8c24e0000000488b9c24d8000000488b8424d0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c244801000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85220300004d8b5e084c8bb424f80000004d8b0e4c8bb424f80000004d8b364983c6027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24f80000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d894e0849c706070000004c8b6c24384983fd0575484c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c403000000eb0749c7c411000000eb1b4c8b6c24604983fd01750949c7c40b000000eb0749c7c409000000e90e0100004c8b6c24384983fd0375484c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c40f000000eb0749c7c401000000eb1b4c8b6c24604983fd01750949c7c40d000000eb0749c7c407000000e9bb0000004c8b6c24384983fd0975454c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c401000000eb0749c7c40f000000eb1b4c8b6c24604983fd01750949c7c407000000eb0749c7c40d000000eb6b4c8b6c24384983fd0775454c8b6c24304983fd01751d4c8b6c24604983fd01750949c7c411000000eb0749c7c403000000eb1b4c8b6c24604983fd01750949c7c409000000eb0749c7c40b000000eb1b4c8b6c24604983fd01750949c7c413000000eb0749c7c4050000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8965184c8b6424584d8965104c8b6424284d89650849c74500010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500090000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004c8b4c24284d894b184d896b10415d4d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c478c29000488da4248000000048b8c0add3f1c27f0000488b5d08ff23488d64247848b8c0add3f1c27f0000488b5d08ff23488d6424104c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff15cf240000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff159b240000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0add3f1c27f0000488b5d08ff234c8b7424204d8b76084c8b6c242041ff75104c8b6c242841ff75184c8b6c243041ff75204983fe030f85340c00004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975006a016a016a014c8b74247041ff7610ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424f000000048c7c3030000004c8b8424200100004c8b8c24080100004c8d9424c0000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb424b000000041ff7610ffb42450010000ffb42450010000ffb42450010000ffb42450010000ffb424500100004c8bb424500100004c8bac24480100004c8ba424400100004c8b9c24380100004c8b9424300100004c8b8c24280100004c8b842420010000488bbc2418010000488bb42410010000488b942408010000488b8c2400010000488b9c24f8000000488b8424f0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b84243801000048c7c3030000004c8b8424600100004c8b8c24f80000004c8d9424c0000000ff12488d642430ff3424ff7424104c8b74242041ff3641ff761041ff76186a016a016a014c8bb424c00000004d8b364983fe0f0f85b70100004c8bb424c0000000498b5e084c8bb424880100004d8b364c8bac24880100004d8b6d004983c5027118488da424f800000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424880100004d892c244c8bac24800100004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500070000004c8ba424800100004d892c24f6c301741ff6c3017402eb1f488da424f800000048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1748b8f814d1f1c27f00004156ff15ff1e0000415e4989c54d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849c745100b0000004d89750849c74500210000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c8b6424384c8924244c896c24084c89742410e9380200004c8bb4248801000041ff364c8bb424900100004d8b364983c6027118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24900100004d8975004c8bb424880100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24880100004d8975006a016a016a014c8bb4241001000041ff7608ffb424b0010000ffb424b0010000ffb424b0010000ffb424b0010000ffb424b00100004c8bb424b00100004c8bac24a80100004c8ba424a00100004c8b9c24980100004c8b9424900100004c8b8c24880100004c8b842480010000488bbc2478010000488bb42470010000488b942468010000488b8c2460010000488b9c2458010000488b842450010000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424a8010000488b9c24c801000049c7c00100000049b9b8a3d3f1c27f00004c8b942420010000ff12488d642430415d415e488d6424084d8b264983fc090f85620500004d8b66084d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d89661849c74610010000004c8b24244d89660849c7064b0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264c896c24084c89742410415e4c89742410488b1c24ff7424084c8b7424184c8bac24780100004d8b5d004c8bac24780100004d8b6d004983c5027118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424780100004d892c244d8d6fe84c3b6d107306ff5550ca08484d89ef49c745f8020000004d895d0849c745000700000041554c8bac24e80000004983fd03750949c7c505000000eb0749c7c5130000004d8d67d04c3b65107306ff5550ca08684d89e749c74424f8050000004d895c24204d896c24184c8bac24e00000004d896c24104c8bac24a80000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c745000500000041554d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8ba424b80000004d8965204c8ba424c00000004d8965184d8975104c8bb424b00000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564c8b7424404d8b364983fe0975724c8b7424384983fe0175674d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24484d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f8040000004d89751849c745100b0000004c8bb424c00000004d89750849c7450021000000eb674d8d77f04c3b75107305ff5550cd084d89f749c746f8010000004c8b6c24484d892e4d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8b6424384d8965204c8b6424404d8965184c8ba424c00000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564c8bb424880000004d8b364983fe0975784c8bb424800000004983fe01756a4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8bac24900000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f8040000004d89751849c745100b0000004c8bb424d00000004d89750849c7450021000000eb704d8d77f04c3b75107305ff5550cd084d89f749c746f8010000004c8bac24900000004d892e4d8d6fd04c3b6d107306ff5550ca08404d89ef49c745f8050000004c8ba424800000004d8965204c8ba424880000004d8965184c8ba424d00000004d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d00000041564883fb01750a4c8bb424a0000000eb11488b8424a0000000ff152e1800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb0175074c8b742458eb0e488b442458ff15e71700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c897308415e4c89334883fb0175074c8b742418eb0e488b442418ff15a01700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304881c400010000c29000488da4240001000048b8c0add3f1c27f0000488b5d08ff23488d6424184c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1595140000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff1561140000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0add3f1c27f0000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8b74243041ff76184c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d897500ff742458ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c240801000049c7c0010000004c8b8c24d00000004c8b9424f0000000e891a5ffff4989c6488d6424304156ff742460ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24100100004c8b8424080100004c8b8c24d00000004c8b9424c0000000e89ba4ffff4989c3488d6424384c8b7424404983f60241564d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424184d89750849c74500070000004d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424084d8974240849c704240b0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156ff742468ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000ff742420ff742420ff742420ff742420ff7424204156415541544153415241514150575652515350488b9424b8000000488b8424e8000000488b9c24180100004c8b8424c80000004c8b8c24d00000004c8b9424c0000000e8d3a2ffff4989c2488d6424404d8d77e84c3b75107306ff5550ca00044d89f749c746f802000000415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00444d89ef49c745f8020000004c8b6424304d89650849c745000b0000004d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f802000000415b488d6424404d895d0849c74500070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c290004c8b7424204d8b760841f6c6010f84ab0000004983fe01750949c7c503000000eb0749c7c5010000004983f5024c8b7424104d3bf5757f4d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d488d6424084c8968084c89304883c420c29000584883c428c29000488d64243048b8381fd1f1c27f0000488b5d08ff234c8b74242041ff76084c8b74242841ff76104c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85900200004d8b6e084c8bb424c00000004d8b0e4c8bb424c00000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424284983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424204d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c7042405000000f644241001740d4c8b5c24104983fb017d1aeb1f4c8b5c24104d0fb65bff4e8d1c5d010000004983fb237407488b5c2410eb2848b8f814d1f1c27f0000488b5c24104152415541564154ff15440a0000415c415e415d415a4889c3f6c30174134889d84883e801486bc00270064883c001eb1d48c7c0050000004152415541564154ff15040a0000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff15d0090000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c440c29000488d64244848b8c0add3f1c27f0000488b5d08ff234c8b74242041ff76084c8b7424284d8b76104983fe0b0f85370300004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975006a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c240801000049c7c00100000049b9b8a3d3f1c27f00004c8b9424f0000000ff12488d642430415a415e488d6424084d8b2e4983fd090f85cf0100004d8b5e084c8bb424b80000004d8b0e4c8bb424b80000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975004d8d77e84c3b75107306ff5550ca000e4d89f749c746f8020000004d894e0849c706070000004c8b6c24204983fd03750949c7c413000000eb0749c7c4050000004d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8965184c8b6424184d8965104c8b24244d89650849c74500010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500090000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f80300000041594d894b104d896b0849c703490000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c438c29000488d64244048b8c0add3f1c27f0000488b5d08ff234983fe130f85880100004c8b7424184983f602ff742430ff742408ff7424304156ff742430ff742430ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a000000048898424a0000000488b44245048899c24a8000000488b5c244848898c24b000000048899424b8000000488b5424584889b424c00000004889bc24c80000004c898424d00000004c8b4424404c898c24d80000004c8b4c24384c899424e00000004c8b5424304c899c24e80000004c89a424f00000004c89ac24f80000004c8b34244c89b424000100004c8b7424084c89b424080100004c8b7424104c89b424100100004c8b7424184c89b424180100004c8b7424204c89b424200100004c8b7424284c89b424280100004881c498000000e9f897ffff488da42488000000488d6424084c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c240001000049c7c00100000049b9b8a3d3f1c27f00004c8b9424e8000000ff12488d642430415a415e488d6424084d8b2e4983fd090f853b0200004d8b6e084c8bb424b00000004d8b0e4c8bb424b00000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d8934244d8d77e84c3b75107306ff5550ca00264d89f749c746f8020000004d894e0849c706070000004c8b6424184983fc03750949c7c405000000eb0749c7c4130000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b204d8963184c8b6424104d8963104c8b24244d89630849c703010000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c704240500000048c7c0050000004883e801486bc00170064883c001eb2448c7c00500000048c7c3030000004152415541564154ff1567010000415c415e415d415aa801740b4989c34983c3027002eb2048c7c3030000004152415541564154ff1533010000415c415e415d415a4989c34d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89590849c701050000004d8d5fd84c3b5d107306ff5550ca00764d89df49c743f80400000041584d8943184d894b104d896b0849c7034d0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c430c29000488d64243848b8c0add3f1c27f0000488b5d08ff23f4000000000000000000000000000080|@14823,1,@1835,@4933,@6552,@4933,@6552,@4933,@4933,@6552,@6664,@6665,@6663,@4933,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@4933,@4933,@6552|271,0,@9475 532,0,@14738 616,0,@9475 1155,0,@14784 1261,0,@9475 1311,0,@9475 1372,0,@9475 1483,0,@9475 1594,0,@9475 1914,0,@14738 2198,0,@14738 2282,0,@9475 2512,0,@14742 2676,0,@14742 2953,0,@14784 2974,0,@14784 3033,0,@9475 3083,0,@9475 3144,0,@9475 3255,0,@9475 3366,0,@9475 3686,0,@14738 3970,0,@14738 4054,0,@9475 4284,0,@14742 4450,0,@14742 4725,0,@14784 4746,0,@14784 4805,0,@9475 4855,0,@9475 4916,0,@9475 5027,0,@9475 5138,0,@9475 5458,0,@14738 5742,0,@14738 5826,0,@9475 6056,0,@14742 6220,0,@14742 6497,0,@14784 6518,0,@14784 6577,0,@9475 6627,0,@9475 6688,0,@9475 6799,0,@9475 6910,0,@9475 7230,0,@14738 7514,0,@14738 7598,0,@9475 7828,0,@14742 7994,0,@14742 8269,0,@14784 8290,0,@14784 8339,0,@9475 8389,0,@9475 8450,0,@9475 8561,0,@9475 8672,0,@9475 8783,0,@9475 9103,0,@14738 9387,0,@14738 9470,0,@9475 9546,0,@9475 9894,0,@14742 10056,0,@14742 10429,0,@9475 10772,0,@14742 10934,0,@14742 11279,0,@14784 11300,0,@14784 11366,0,@9475 11625,0,@14738 11720,0,@14818 11750,0,@11081 11905,0,@10021 11953,0,@10021 12060,0,@14821 12312,0,@14738 12398,0,@14742 12477,0,@9475 12599,0,@9475 13081,0,@14742 13356,0,@14784 13377,0,@14784 13471,0,@9475 13730,0,@14738 13941,0,@10093 14033,0,@9475 14754,0,@14784 14830,0,@9475 15089,0,@14738 15300,0,@10093 15392,0,@9475 16180,0,@14784 16229,0,@9475 16488,0,@14738 16772,0,@14738 16859,0,@9475 17629,0,@14784 17650,0,@14784 17704,0,@9475 17963,0,@14738 18047,0,@9475 18586,0,@14784 18681,0,@9475 18803,0,@9475 18925,0,@9475 19574,0,@9475 19685,0,@10093 19745,0,@10021 20000,0,@9475 20323,0,@14738 20583,0,@9475 21756,0,@14784 21810,0,@9475 22069,0,@14738 22153,0,@9475 22692,0,@14784 22768,0,@9475 22829,0,@9475 22890,0,@9475 24339,0,@10093 24406,0,@9475 24665,0,@14738 24749,0,@9475 24993,0,@10021 25373,0,@14784 25450,0,@9475 25709,0,@14738 25793,0,@9475 26224,0,@14784 26680,0,@9475 26939,0,@14738 27023,0,@9475 27562,0,@14784 6663:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1838| 6664:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1836| 6665:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1837| 6666:D8,2656|483b65187306ff5558ca0d075341524c8b284d89ee4d89f44d8b364983fe0f0f850f0600004c8b58104d89de4d8b1b4983fb0f750949c7c303000000eb0749c7c3010000004983fb030f85e50500004d8b642408498b5e08ff7008f6c3010f843404000041f6c4010f8428040000f6c3010f840a0400004883fb03750949c7c303000000eb0749c7c3010000004983fb030f85ff0300004d8b294d89ee4983fd010f85800000004c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24a80000004d892b4c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca0c584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24a00000004d892be9870000004983fe03757d4c8bb424a80000004d8b364c8bac24a80000004d8b6d004983c5027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24a80000004d892b4c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca0c584d89ef49c745f8020000004d895d0849c74500050000004c8b9c24a00000004d892beb044d8b71084156f6c3010f84b3020000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1948b8f814d1f1c27f0000524154ff15a7080000415c5a4989c64156f60424010f845402000041f6c4010f84350200004d89e64981e6ff01000041564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c7060500000041566a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e98e030000488d64242848b8381fd1f1c27f0000488b5d08ff23488d64242848b80815d1f1c27f0000488b5d08ff23488d64242048b8381fd1f1c27f0000488b5d08ff23488d64241848b8381fd1f1c27f0000488b5d08ff23eb00ff721041564155ff742418ff7424304151ff742438ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004c8bac24880000004889842488000000488b44246048899c2490000000488b5c245848898c249800000048899424a0000000488b5424684889b424a80000004889bc24b00000004c898424b80000004c8b4424504c898c24c00000004c8b4c24484c899424c80000004c8b5424404c899c24d00000004c89a424d80000004c8b34244c89b424e00000004c8b7424084c89b424e80000004c8b7424104c89b424f00000004c8b7424184c89b424f80000004c8b7424204c89b424000100004c8b7424284c89b424080100004c8b7424304c89b424100100004c8b7424384c89b424180100004c89ac24800000004881c480000000ff22488da424880000004c8b70084c8b6010ff7210415441554156ff7424284151ff742430ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b8424880000004c8bac24800000004889842480000000488b44246048899c2488000000488b5c245848898c24900000004889942498000000488b5424684889b424a00000004889bc24a80000004c898424b00000004c8b4424504c898c24b80000004c8b4c24484c899424c00000004c8b5424404c899c24c80000004c89a424d00000004c8b34244c89b424d80000004c8b7424084c89b424e00000004c8b7424104c89b424e80000004c8b7424184c89b424f00000004c8b7424204c89b424f80000004c8b7424284c89b424000100004c8b7424304c89b424080100004c8b7424384c89b424100100004c896c24784883c478ff22488da4248000000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b6c24184d896e184c8b6c24204d896e104c8b6c24104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424284983fe017d15488d64245048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c24284c8b4424104c8b4c2418ff15ad0100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b7424304d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdc0a8d3f1c27f00004d892e4983fe0175054889c3eb0c4c89f3ff15b60000004889c34883fb0175035beb12488b0424ff15980000004889c3488d6424084883fb017508415c4883c420eb12488b0424ff15700000004989c4488d6424284d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c418c29000f400000000|@14826,1,@1839,@6668,@6669,@6670,@6667,@4933|203,0,@9475 337,0,@9475 480,0,@10021 572,0,@9475 694,0,@9475 1097,0,@10093 1118,0,@10022 1139,0,@10093 1160,0,@10093 2233,0,@10101 2483,0,@14761 6667:D3,328|483b65187306ff5558ca0903483bc3750848c7c001000000c34d8d67e84c3b65107306ff5550ca09034d89e749c74424f8020000004d8944240849c70424090000004989c54983ed014d6bed08711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77c84c3b75107306ff5550ca09334d89f749c746f80600000049c74628010000004d8966204d896e1849bd58a4d3f1c27f00004d896e1049c746080b0000004d890e4d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7060d00000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8eafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@10111,1,@1843|81,0,@9475 144,0,@14742 259,0,@9475 6668:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1840| 6669:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1841| 6670:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1842| 6671:D9,4216|488dbc2420ffffff483b7d187306ff5560ca0d07525053415041514d8b2a4d89ee4983fd010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e9890000004983fe03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb044d8b720841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e00000004d8975004c8bb424e800000041ff364c8bb424f00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24f00000004d8975004c8bb424e80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24e80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842438010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b7424684d8b364983fe0f0f85ad0000004c8b742468498b5e08f6c301741ff6c3017402eb1f488da4248000000048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff15a80a00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a60200004c8bb4241001000041ff364c8bb424180100004d8b364983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24180100004d8975004c8bb424100100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24100100004d8975006a016a016a014c8bb4249800000041ff7608ffb42438010000ffb42438010000ffb42438010000ffb42438010000ffb424380100004c8bb424380100004c8bac24300100004c8ba424280100004c8b9c24200100004c8b9424180100004c8b8c24100100004c8b842408010000488bbc2400010000488bb424f8000000488b9424f0000000488b8c24e8000000488b9c24e0000000488b8424d8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842450010000488b9c244001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85e50100004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424ff742410ff7424206a016a016a014c8bb424a800000041ff7608ffb42448010000ffb42448010000ffb42448010000ffb42448010000ffb424480100004c8bb424480100004c8bac24400100004c8ba424380100004c8b9c24300100004c8b9424280100004c8b8c24200100004c8b842418010000488bbc2410010000488bb42408010000488b942400010000488b8c24f8000000488b9c24f0000000488b8424e8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842458010000488b9c245001000049c7c00100000049b9d8acd3f1c27f000049c7c201000000ff12488d642430415d415b488d64240849c7c601000000eb18488da4248800000048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89e5483b65187306ff5558ca0068ebbc41564d8d6fe84c3b6d107306ff5550ca00084d89ef49c745f8020000004c8b7424684d89750849c74500090000004d8d77d84c3b75107306ff5550ca00284d89f749c746f8040000004d896e1849c746100b0000004c8b6c24584d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c745000d0000004d8d67d84c3b65107306ff5550ca00284d89e749c74424f80400000049c7442418010000004c8b7424684d897424104c8b7424404d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d892e41564d8d77c84c3b75107306ff5550ca00084d89f749c746f80600000049c74628010000004c8b6c24104d896e2049c74618ffffffff49bd58a4d3f1c27f00004d896e1049c74608050000004c8b6c24484d892e4d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24484d896c240849c70424090000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d89651849c745100b0000004c8b6424504d89650849c74500210000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c704240d0000004d8d57d04c3b55107306ff5550ca00584d89d749c742f80500000049c74220010000004c8b6c24604d896a1849c74210010000004c8b6c24584d896a0849c7024b0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d895a1849c742100b0000004c8b5c24684d895a0849c702210000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d4fd84c3b4d107306ff5550ca00784d89cf49c741f8040000004c8b5424584d8951184c8b5424684d8951104c8b5424504d89510849c7011d0000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020d0000004d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004c8b4c24484d89480849c700090000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89411849c741100b0000004c8b4424784d89410849c701210000004d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849c7000d0000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f80200000049c74108010000004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89480849b9c0a8d3f1c27f00004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb017507488b5c2418eb0e488b442418ff15050100004889c34883fb0175035beb12488b0424ff15e70000004889c3488d6424084883fb0175075b4883c410eb12488b0424ff15c00000004889c3488d6424184883fb0175075b4883c418eb12488b0424ff15990000004889c3488d6424204883fb017508415c4883c430eb12488b0424ff15710000004989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8bb424c00000004d89264d896e0849c746100100000048c7c0010000004883c428c29800f40000|@14827,1,@1844,@6673,@6674,@6675,@6676,@6672,@4933|79,0,@9475 215,0,@9475 347,0,@9475 469,0,@9475 591,0,@9475 713,0,@9475 835,0,@9475 957,0,@9475 1478,0,@10093 1538,0,@10021 1658,0,@9475 1981,0,@14738 2545,0,@14781 2595,0,@14807 3051,0,@14742 3805,0,@14761 6672:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1849| 6673:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1845| 6674:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1846| 6675:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1847| 6676:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1848| 6677:D33,15936|488dbc2450ffffff483b7d187306ff5560ca0d0752534150415141524883f80b0f85160400004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e97d3500004883f8090f85160400004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e000000041ff364c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9de2c00004883f8070f854d0a00004c8b7424104d8b364983fe0f0f85280300004c8b7424104d8b76084c8bac24b800000041ff75004c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c00000004d892c244c8bac24c800000041ff75004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c2441f6c601741d41f6c6017402eb1c488d64244848b8381fd1f1c27f0000488b5d08ff2349c7c60100000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842428010000488b9c241801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9402600004c8b7424184d8b364983fe0f0f85280300004c8b7424184d8b76084c8bac24b800000041ff75004c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c00000004d892c244c8bac24c800000041ff75004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004c8ba424c80000004d892c244c8bac24c000000041ff75004c8bac24c80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c2441f6c601741d41f6c6017402eb1c488d64244848b8381fd1f1c27f0000488b5d08ff2349c7c60100000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c241801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e9ac1f00004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247041ff7608ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242001000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e95a1600004883f80d0f85890300004c8b7424104d8b364983fe0f0f85ac0100004c8b742410498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15fc2b00004989c6eb1c488d64243048b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9ef1200004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9e00c00004883f8010f85440500004c8b7424104d8b364983fe0f0f85ac0100004c8b742410498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15612800004989c6eb1c488d64243048b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9750900004c8b7424184d8b364983fe0f0f85ac0100004c8b742418498b5e084c8bb424a800000041ff364c8bb424b00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24b00000004d897500f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff159b2600004989c6eb1c488d64243048b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9140600004c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a014c8b74244841ff7608ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64242848b8d8b7d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c240801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f85500200004d8b66084c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24204d895d2049bb80b8d3f1c27f00004d895d184d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424090000004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424084d8966104c8b6424184d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f0000000488b442420ff124889c34883fb0175035beb12488b0424ff15ad1f00004889c3488d6424084883fb0175075b4883c408eb12488b0424ff15861f00004889c3488d6424104883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff254d1f0000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15d31d00004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff259a1d0000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15201c00004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff25e71b0000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842410010000488b9c240801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000eb15488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0200004d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706090000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d8965204d8975184c8b7424084d8975104c8b7424184d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424f0000000488b442420ff124c8bb424d80000004d8b2e4c8bb424d80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424304d89662049bc80b8d3f1c27f00004d8966184c8b6424284d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15011800004889c34883fb0175035beb12488b0424ff15e31700004889c3488d6424084883fb0175075b4883c408eb12488b0424ff15bc1700004889c3488d6424104883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff2583170000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f853a0100004d8b76084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424050000004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184d8975104c8b7424104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b9424e0000000488b442418ff124889c34883fb0175035beb12488b0424ff15091600004889c3488d6424084883fb017508584883c438c29800584c8b7424384c89b424d00000004881c4d0000000ff25d0150000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620030000004c8b6c24384d896e1849c74610010000004c8b6c24284d896e0849c7064b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004c8bb424e80000004d8b264c8bb424e80000004d8b364983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e80000004d89334d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24204d895e2049bb80b8d3f1c27f00004d895e184c8b5c24304d895e104d89660849c706090000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c240849c70424090000004d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b5424184d8953204d8963184c8b6424284d8963104c8b6424104d89630849c703290000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b942408010000488b442418ff124c8bb424f00000004d8b2e4c8bb424f00000004d8b364983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8ba424f00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424484d89662049bc80b8d3f1c27f00004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff159c1000004889c34883fb0175035beb12488b0424ff157e1000004889c3488d6424084883fb0175035beb12488b0424ff155b1000004889c3488d6424084883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff252210000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d892c244d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d89652049bc80b8d3f1c27f00004d8965184c8b6424284d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89660849c706050000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24184d895c24204d897424184c8b7424204d897424104c8b7424104d8974240849c70424290000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f8000000488b442418ff124c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424384d89662049bc80b8d3f1c27f00004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15070d00004889c34883fb0175035beb12488b0424ff15e90c00004889c3488d6424084883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff25b00c000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8bb424d80000004d8b364c8bac24d80000004d8b6d004983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424d80000004d892c244d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d89652049bc80b8d3f1c27f00004d8965184c8b6424284d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89660849c706050000004d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004c8b5c24184d895c24204d897424184c8b7424204d897424104c8b7424104d8974240849c70424290000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b9424f8000000488b442418ff124c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004c8b6424384d89662049bc80b8d3f1c27f00004d8966184c8b6424204d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15950900004889c34883fb0175035beb12488b0424ff15770900004889c3488d6424084883fb017508584883c450c29800584c8b7424504c89b424e80000004881c4e8000000ff253e09000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520030000004c8b7424304d89751849c74510010000004c8b7424204d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004c8b6424284d89651849c74510010000004c8b6424184d89650849c745004b0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca01504d89df49c743f8020000004c8b6c24184d896b0849c703090000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b5424084d8955204c8b5424104d89551849c74510030000004c8b5424204d8955084d895d004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703150000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d57d84c3b55107306ff5550ca01704d89d749c742f80400000049c74218030000004c8b5c24104d895a104c8b5c24384d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e30400004889c34883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff25af04000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c7060500000041566a016a016a014c8b74247841ff7608ffb42418010000ffb42418010000ffb42418010000ffb42418010000ffb424180100004c8bb424180100004c8bac24100100004c8ba424080100004c8b9c24000100004c8b9424f80000004c8b8c24f00000004c8b8424e8000000488bbc24e0000000488bb424d8000000488b9424d0000000488b8c24c8000000488b9c24c0000000488b8424b8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842430010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415e488d64241848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d6fd04c3b6d107305ff5550cd014d89ef49c745f80500000049c74520030000004c8b7424304d89751849c74510010000004c8b7424204d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004c8b6424284d89651849c74510010000004c8b6424184d89650849c745004b0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fe84c3b5d107306ff5550ca01504d89df49c743f8020000004c8b6c24184d896b0849c703090000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f8050000004c8b5424084d8955204c8b5424104d89551849c74510030000004c8b5424204d8955084d895d004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703150000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d57d84c3b55107306ff5550ca01704d89d749c742f80400000049c74218030000004c8b5c24084d895a104c8b5c24384d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15540000004889c34883fb017508584883c458c29800584c8b7424584c89b424f00000004881c4f0000000ff2520000000f400000000000000|@14833,1,@1850,@6679,@6680,@6681,@6682,@6683,@6684,@6685,@6686,@6687,@6688,@6689,@6690,@6691,@6692,@6693,@6694,@6695,@6696,@6697,@6698,@6699,@6700,@6701,@6702,@6703,@6704,@6678,@6552,@6552,@6552|73,0,@9475 195,0,@9475 317,0,@9475 439,0,@9475 561,0,@9475 683,0,@9475 1129,0,@9475 1251,0,@9475 1373,0,@9475 1495,0,@9475 1617,0,@9475 1739,0,@9475 2214,0,@9475 2340,0,@9475 2466,0,@9475 2592,0,@9475 2639,0,@10093 3040,0,@9475 3166,0,@9475 3292,0,@9475 3418,0,@9475 3465,0,@10093 3837,0,@9475 3959,0,@9475 4081,0,@9475 4203,0,@9475 4325,0,@9475 4447,0,@9475 4859,0,@9475 4944,0,@10093 5200,0,@14738 5278,0,@9475 5400,0,@9475 5659,0,@14738 5774,0,@9475 5859,0,@10093 6115,0,@14738 6220,0,@9475 6305,0,@10093 6561,0,@14738 6639,0,@9475 6761,0,@9475 7020,0,@14738 7067,0,@14829 7402,0,@14738 7449,0,@14807 7587,0,@9475 7650,0,@14832 8146,0,@14807 8565,0,@14807 8984,0,@14807 9319,0,@14738 9366,0,@14807 9739,0,@9475 9803,0,@14832 10076,0,@14807 10495,0,@14807 11097,0,@9475 11160,0,@14832 11584,0,@9475 11648,0,@14832 12016,0,@9475 12080,0,@14832 12469,0,@9475 12533,0,@14832 12874,0,@9475 12938,0,@14832 13327,0,@9475 13391,0,@14832 6678:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1877| 6679:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1851| 6680:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1852| 6681:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1853| 6682:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1854| 6683:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1855| 6684:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1856| 6685:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1857| 6686:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1858| 6687:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1859| 6688:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1860| 6689:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1861| 6690:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1862| 6691:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1863| 6692:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1864| 6693:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1865| 6694:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1866| 6695:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1867| 6696:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1868| 6697:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1869| 6698:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1870| 6699:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1871| 6700:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1872| 6701:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1873| 6702:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1874| 6703:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1875| 6704:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1876| 6705:D79,58864|488dbc2440ffffff483b7d187306ff5560ca0d0752534150415141524c8b70104d89f34d8b2e4c8d25080000004f8d64acfc41ffe4e95b000000909090e9b2030000909090e981060000909090e9a0190000909090e9271b0000909090e918220000909090e959240000909090e99a260000909090e921280000909090e9b63f0000909090e93d410000909090e9dd4c0000909090ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d80000004d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c7060500000041566a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c0010000004c8b8c24e000000049c7c201000000ff12488d642430415d488d64241849c7c601000000e91bdb000041ff7608ff30ff70084c8b7424304d8b6e104c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8ba424d00000004d8b24244983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89234c8ba424c80000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24c80000004d8923e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8ba424d00000004d8b24244983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89234c8ba424c80000004d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004c8b9c24c80000004d8923eb094c8b7424204d8b760841564c8ba424d00000004c8b9c24d80000004c8b9424c00000004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bd505464f1c27f00004d892e41564c8b74244841ff7618ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000ff742430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c24e00000004c8b8424d80000004c8b8c24080100004c8b9424d0000000ff124989c4488d6424384d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424184d89750849c7450009000000415e4d89264d896e0849c746100100000048c7c0010000004883c420c290004d8b76084983fe050f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9c6ce00004983fe030f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e94cc500004983fe070f85bf020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e946bd00004983fe0d0f859e040000ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e967b50000ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e95aad00004983fe010f85f5060000ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e97ba50000ff304c8b34244d8b364983fe0f0f8546020000415e41ff76084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9a99d00004c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e99e950000488d64242848b8a8b9d3f1c27f0000488b5d08ff234c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8a1d3f1c27f00004d89661849bc18a2d3f1c27f00004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e99a93000041ff7608ff70084c8b34244d8b364983fe0f0f8548020000415e41ff7608ff304c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9968b0000ff304c8b34244d8b364983fe0f0f8546020000415e41ff76084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9998300004c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9637b000041ff7608ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e91571000041ff7608ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9fb6800004c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8a1d3f1c27f00004d89661849bc18a2d3f1c27f00004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e90c6700004d8b76084983fe050f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e91f5e00004983fe030f8545020000ff30ff70084c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9365500004983fe070f85c5050000ff70084c8b34244d8b364983fe0f0f85b0010000415e4d8b76084c8b2841f6c601741d41f6c6017402eb1c488d64242848b8381fd1f1c27f0000488b5d08ff2349c7c6010000004c8b64242041ff7424104155ff742428ff7424204156ff742428ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004889842490000000488b44245048899c2498000000488b5c244848898c24a000000048899424a8000000488b5424584889b424b00000004889bc24b80000004c898424c00000004c8b4424404c898c24c80000004c8b4c24384c899424d00000004c8b5424304c899c24d80000004c89a424e00000004c89ac24e80000004c8b34244c89b424f00000004c8b7424084c89b424f80000004c8b7424104c89b424000100004c8b7424184c89b424080100004c8b7424204c89b424100100004c8b7424284c89b424180100004881c488000000ff22488d642470ff304c8b34244d8b364983fe0f0f85ae010000415e4d8b760841f6c601741d41f6c6017402eb1c488d64243048b8381fd1f1c27f0000488b5d08ff2349c7c6010000004c8b6c242841ff7510ff742408ff742430ff7424284156ff742430ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b8424980000004889842498000000488b44245048899c24a0000000488b5c244848898c24a800000048899424b0000000488b5424584889b424b80000004889bc24c00000004c898424c80000004c8b4424404c898c24d00000004c8b4c24384c899424d80000004c8b5424304c899c24e00000004c89a424e80000004c89ac24f00000004c8b34244c89b424f80000004c8b7424084c89b424000100004c8b7424104c89b424080100004c8b7424184c89b424100100004c8b7424204c89b424180100004c8b7424284c89b424200100004881c490000000ff22488d6424784c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e94d4800004983fe0d0f856a050000ff70084c8b34244d8b364983fe0f0f859a020000415e498b5e08ff304c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15d3b300004989c6eb1c488d64243848b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e9bf430000ff304c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841564c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975006a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e98e3c00004983fe010f8599070000ff70084c8b34244d8b364983fe0f0f859a020000415e498b5e08ff304c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff1557ae00004989c6eb1c488d64243848b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e900380000ff304c8b34244d8b364983fe0f0f8598020000415e498b5e084c8b7424104d8b364983fe010f85820000004c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24e9960000004c8b7424104d8b364983fe03757f4c8bb424c00000004d8b364c8bac24c00000004d8b6d004983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8ba424c00000004d892c244c8bac24b80000004d8b65004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500050000004c8ba424b80000004d892c24eb094c8b7424104d8b76084156f6c3017444f6c301742af6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15a4ab00004989c6eb1c488d64243848b8381fd1f1c27f0000488b5d08ff2349c7c60100000041566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e97f3300004c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e90b2e0000488d64242848b850bad3f1c27f0000488b5d08ff234c8b304c8b60084d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104d89750849c74500070000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcf8a1d3f1c27f00004d89661849bc18a2d3f1c27f00004d8966104d896e0849c7060d00000041566a016a016a014c8b74244041ff7608ffb424e0000000ffb424e0000000ffb424e0000000ffb424e0000000ffb424e00000004c8bb424e00000004c8bac24d80000004c8ba424d00000004c8b9c24c80000004c8b9424c00000004c8b8c24b80000004c8b8424b0000000488bbc24a8000000488bb424a0000000488b942498000000488b8c2490000000488b9c2488000000488b842480000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e9072c000041ff76084c8b68084d89ec4d8b6d004983fd0f0f854702000041ff742408ff304c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9ae2600004c8b184d89dd4d8b1b4983fb0f0f8546020000415441ff75084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841566a016a016a014c8b74245841ff7608ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e95c210000488d6424084d8b56084d89d34983fa030f8544020000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e98e1b00004d89de4983fe010f8544020000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9c9150000415441554c8b7424184d8b364983fe010f85820000004c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24e9960000004c8b7424184d8b364983fe03757f4c8bb424c80000004d8b364c8bac24c80000004d8b6d004983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8ba424c80000004d892c244c8bac24c00000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c00000004d892c24eb094c8b7424184d8b760841566a016a016a014c8b74245041ff7608ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e8000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9a00e000041ff76084d8b76084983fe010f85fc0100004c8b68084d89ee4d8b6d004983fd0f750949c7c503000000eb0749c7c5010000004983fd030f85d1010000488d642408498b4e084c8b28f6c101743cf6c10174224883f97f720949c7c601000000eb1149c7c60200000048d1e949d3e64983ce01eb1c488d64242848b8381fd1f1c27f0000488b5d08ff2349c7c6030000004c8b64242041ff7424104155ff742428ff7424204156ff742428ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b8424900000004889842490000000488b44245048899c2498000000488b5c244848898c24a000000048899424a8000000488b5424584889b424b00000004889bc24b80000004c898424c00000004c8b4424404c898c24c80000004c8b4c24384c899424d00000004c8b5424304c899c24d80000004c89a424e00000004c89ac24e80000004c8b34244c89b424f00000004c8b7424084c89b424f80000004c8b7424104c89b424000100004c8b7424184c89b424080100004c8b7424204c89b424100100004c8b7424284c89b424180100004881c488000000ff22488d642470ff30ff70084c8b7424204d8b364983fe010f85820000004c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24e9960000004c8b7424204d8b364983fe03757f4c8bb424d00000004d8b364c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8ba424d00000004d892c244c8bac24c80000004d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500050000004c8ba424c80000004d892c24eb094c8b7424204d8b760841564c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8b7424184d8b364983fe0f0f853d0100004c8b742418498b5e08f6c3017479f6c301745ff6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1348b8f814d1f1c27f0000ff15c99600004889c3f6c30174134989de4983ee014d6bf60270064983c601eb1048c7c005000000ff15999600004989c6eb1c488d64245048b8381fd1f1c27f0000488b5d08ff2349c7c6030000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100b0000004c8b2c244d896e0849c706210000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9d70200006a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000544883042438ff742430ff742430ff742430ff742430ff742430ff74243041564155415441534152415141505756525153488b9424c8000000488b842400010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642438415d415e488d64240848c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85c70300004d8b6e084c8b7424204983fe010f85a50000004c8bb424d00000004d8b264c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b1c244d895e2049bb80b8d3f1c27f00004d895e184d896e104d89660849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c7450005000000eb5d4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706090000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89750849c74500210000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15ed9200004989c641566a016a016a014c8b7424304d8b364983fe0f0f85aa0000004c8b742430498b5e08f6c301741cf6c3017402eb1c488d64247048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff15629200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9ba0200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85f40300004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b5424184c8bb424080100004d8b1e4c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004c8b7424484983fe03750949c7c401000000eb1b4c8b7424484983fe05750949c7c405000000eb0749c7c4030000004c8bb424f80000004d8b2e4c8bb424f80000004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8b8c24f80000004d89314d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184c8b5424284d8956104d8966084d892e4d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f8020000004d89750849c745003f0000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c7060d0000004c8bac24f80000004d8b6d004c8ba424f80000004d8b24244983c4027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8b9424f80000004d89224d8d67d04c3b65107306ff5550ca01684d89e749c74424f8050000004c8b5424304d8954242049ba80b8d3f1c27f00004d895424184d895c24104d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15bb8c00004889c34883fb0175075b4883c418eb12488b0424ff15998c00004889c3488d6424204883fb017508415c4883c408eb12488b0424ff15718c00004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64247848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85010300004d8b76084c8bac24e00000004d8b5d004c8bac24e00000004d8b6d004983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d892c244c8bac24d80000004d8b65004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c74500050000004c8ba424d80000004d892c244d8d67e84c3b65107306ff5550ca01484d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424d00000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004d895e204d896618415c4d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c7060d0000004c8bac24c80000004d8b6d004c8ba424c80000004d8b24244983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9424c80000004d89224d8d67d04c3b65107306ff5550ca01684d89e749c74424f8050000004c8b5424084d8954242049ba80b8d3f1c27f00004d895424184d895c24104d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff159b8700004889c34883fb017504415ceb12488b0424ff157c8700004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85900100004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15178400004889c34883fb017504415ceb12488b0424ff15f88300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85900100004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d00000004d8b2e4c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15938000004889c34883fb017504415ceb12488b0424ff15748000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85910200004d8b5508f6442408010f84dd0000004c8b6c24184983fd057557f644240801743bf64424080174154c8b6c24084983ed014d6bed0270064983c501eb1d48c7c005000000488b5c240841564152ff155e7f0000415a415e4989c5eb79488d64244848b8381fd1f1c27f0000488b5d08ff23f644240801745ff6442408017415488b4424084883e801486bc00270064883c001eb1a48c7c005000000488b5c240841564152ff15ff7e0000415a415ea801740b4989c54983c5027002eb1848c7c30300000041564152ff15d37e0000415a415e4989c5eb1c488d64244848b8381fd1f1c27f0000488b5d08ff2349c7c5010000004c8b6424184983fc05750949c7c40b000000eb1b4c8b6424184983fc01750949c7c403000000eb0749c7c4070000004d8d4fe84c3b4d107306ff5550ca00744d89cf49c741f8020000004d89690849c701050000004c8bac24c80000004d8b5d004c8bac24c80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b8424c80000004d89284d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004c8b04244d8945204d894d184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff15567d00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85910200004d8b5508f6442410010f84dd0000004c8b6c24184983fd057557f644241001743bf64424100174154c8b6c24104983ed014d6bed0270064983c501eb1d48c7c005000000488b5c241041564152ff15457c0000415a415e4989c5eb79488d64244848b8381fd1f1c27f0000488b5d08ff23f644241001745ff6442410017415488b4424104883e801486bc00270064883c001eb1a48c7c005000000488b5c241041564152ff15e67b0000415a415ea801740b4989c54983c5027002eb1848c7c30300000041564152ff15ba7b0000415a415e4989c5eb1c488d64244848b8381fd1f1c27f0000488b5d08ff2349c7c5010000004c8b6424184983fc05750949c7c40b000000eb1b4c8b6424184983fc01750949c7c403000000eb0749c7c4070000004d8d4fe84c3b4d107306ff5550ca00744d89cf49c741f8020000004d89690849c701050000004c8bac24c80000004d8b5d004c8bac24c80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b8424c80000004d89284d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004c8b04244d8945204d894d184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff153d7a00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85500100004d8b6e084d8d77f04c3b75107306ff5550ca01204d89f749c746f801000000415c4d89264d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c74520ffffffff4d8965184c8b6424084d8965104d89750849c74500230000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15bd7600004889c34883fb017504415ceb12488b0424ff159e7600004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff15bb7400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff15dd7200004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842408010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85910200004d8b76084d8d67e84c3b65107306ff5550ca01404d89e749c74424f8020000004d8974240849c70424090000004c8bb424d80000004d8b2e4c8bb424d80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24104d895e204d896618415c4d8966104d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004c8bac24d00000004d8b6d004c8ba424d00000004d8b24244983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d89234d8d67d04c3b65107306ff5550ca01604d89e749c74424f8050000004c8b5c24104d895c242049bb80b8d3f1c27f00004d895c24184c8b5c24084d895c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500050000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15806e00004889c34883fb017508415c4883c408eb12488b0424ff155d6e00004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85700100004d8b66084d8d5fe84c3b5d107306ff5550ca01104d89df49c743f802000000415e4d89730849c703050000004c8bb424b80000004d8b2e4c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d89324d8d77d04c3b75107306ff5550ca01384d89f749c746f8050000004c8b14244d8956204d895e184d8966104d896e0849c706090000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c4eb09ff157a6c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c430c29000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85360500004d8b46084c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01254d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca01354d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca01374d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d67d04c3b65107306ff5550ca01274d89e749c74424f80500000049c744242001000000415e4d8974241849c7442410010000004d8954240849c704244b0000004d8d77e84c3b75107306ff5550ca01374d89f749c746f8020000004d89660849c7060d0000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488bbc24c80000004c89274d8d67d04c3b65107306ff5550ca016f4d89e749c74424f8050000004d896c242048bf80b8d3f1c27f000049897c24184d894424104d895c240849c70424090000004d8d5fe84c3b5d107306ff5550ca01764d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca016e4d89e749c74424f8020000004d895c240849c704240d0000004d8d47e84c3b45107306ff5550ca01764d89c749c740f8020000004d89680849c700090000004c8bac24c80000004d8b6d004c8b9c24c80000004d8b1b4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488bbc24c80000004c891f4d8d5fd04c3b5d107306ff5550ca01774d89df49c743f8050000004d894b204d8943184d8953104d896b0849c703290000004d8d6fe84c3b6d107306ff5550ca015a4d89ef49c745f8020000004d895d0849c745000d0000004c8b9c24c80000004d8b134c8b9c24c80000004d8b1b4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b8424c80000004d89184d8d5fd04c3b5d107306ff5550ca01764d89df49c743f8050000004c8b4424084d89432049b880b8d3f1c27f00004d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15746500004889c34883fb017504415ceb12488b0424ff15556500004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85b60400004d8b66084c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324d8d57d04c3b55107306ff5550ca013b4d89d749c742f80500000049c7422001000000415e4d89721849c74210010000004d894a0849c7024b0000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c7060d0000004d8d57d04c3b55107306ff5550ca017b4d89d749c742f80500000049c74220010000004d89621849c74210010000004d896a0849c7024b0000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d8945204d895d1849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca01784d89d749c742f80400000049c74218010000004d895a104c8b5c24084d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ca5e00004889c34883fb017504415ceb12488b0424ff15ab5e00004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85b60400004d8b66084c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013b4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9424e00000004d89324c8bb424d80000004d8b164d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c706070000004c8b9424d80000004d89324d8d57d04c3b55107306ff5550ca013b4d89d749c742f80500000049c7422001000000415e4d89721849c74210010000004d894a0849c7024b0000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89560849c7060d0000004d8d57d04c3b55107306ff5550ca017b4d89d749c742f80500000049c74220010000004d89621849c74210010000004d896a0849c7024b0000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d895d204d89451849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d84c3b55107306ff5550ca01784d89d749c742f80400000049c74218010000004d895a104c8b5c24084d895a0849c702450000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15205800004889c34883fb017504415ceb12488b0424ff15015800004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85ed0300004d8b5e084c8bb424e80000004d8b164c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24e80000004d8975004c8bb424e00000004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24e00000004d8975004c8bb424e80000004d8b2e4c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424e80000004d8934244c8bb424e00000004d8b264d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c706070000004c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca012c4d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016c4d89e749c74424f8040000004d8974241849c7442410070000004d8954240849c70424210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d89660849c7060d0000004c8b6424204983fc03750949c7c407000000eb3e4c8b6424204983fc07750949c7c40f000000eb2a4c8b6424204983fc0d750949c7c411000000eb164c8b6424204983fc010f85f201000049c7c4010000004d8d4fd04c3b4d107306ff5550ca017c4d89cf49c741f80500000049c741200100000049b858a4d3f1c27f00004d89411849c74110010000004d89590849c701070000004d8d5fd04c3b5d107306ff5550ca01764d89df49c743f8050000004d896b204d894b184d8953104d89630849c7033b0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318030000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15f45100004889c34883fb017504415ceb12488b0424ff15d55100004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64245048b8f0bad3f1c27f0000488b5d08ff23488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855402000041ff76086a016a016a014c8b7424304d8b364983fe0f0f85aa0000004c8b742430498b5e08f6c301741cf6c3017402eb1c488d64247048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff157a5000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9ba0200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c244801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c401000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85e20400004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b4c24184c8bb424080100004d8b264c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca01324d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004c8b7424484983fe03750949c7c301000000eb1b4c8b7424484983fe05750949c7c305000000eb0749c7c3030000004c8bb424080100004d8b164c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975004d8d6fd04c3b6d107306ff5550ca011e4d89ef49c745f80500000049c745200100000049be58a4d3f1c27f00004d89751849c74510010000004c8b7424204d89750849c74500070000004d8d77d84c3b75107306ff5550ca013e4d89f749c746f8040000004d896e1849c746100b0000004d89560849c706210000004d8d6fe84c3b6d107306ff5550ca015e4d89ef49c745f8020000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca013e4d89f749c746f80200000049c74608010000004d892e41564c8bb424000100004d8b2e4c8bb424000100004d8b364983c6027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234c8b8424000100004d89304d8d77d04c3b75107306ff5550ca013e4d89f749c746f8050000004d894e204d8966184d8956104d895e084d892e4d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c745003f0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d8965104c8b6424384d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15fc4900004889c34883fb0175035beb12488b0424ff15de4900004889c3488d6424084883fb0175075b4883c420eb12488b0424ff15b74900004889c3488d6424284883fb017504415ceb12488b0424ff15934900004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64247848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85120400004d8b66084c8bb424e80000004d8b2e4c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e80000004d89334c8bb424e00000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24e00000004d89334c8bb424e80000004d8b0e4c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e80000004d89334c8bb424e00000004d8b1e4d8d77e84c3b75107306ff5550ca013a4d89f749c746f8020000004d895e0849c706070000004c8b9c24e00000004d89334c8b7424284983fe05750949c7c30b000000eb1b4c8b7424284983fe01750949c7c303000000eb0749c7c3070000004d8d77d04c3b75107306ff5550ca013a4d89f749c746f80500000049c746200100000049ba58a4d3f1c27f00004d89561849c7461001000000415a4d89560849c706070000004d8d57d84c3b55107306ff5550ca017a4d89d749c742f8040000004d89721849c742100b0000004d894a0849c702210000004d8d77e84c3b75107306ff5550ca013e4d89f749c746f8020000004d89560849c7060d0000004d8d47d04c3b45107306ff5550ca017a4d89c749c740f80500000049c740200100000049ba58a4d3f1c27f00004d89501849c74010010000004d89600849c700070000004c8ba424d00000004d8b14244c8ba424d00000004d8b24244983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488bbc24d00000004c89274d8d67d04c3b65107306ff5550ca016f4d89e749c74424f8050000004d896c24204d894424184d894c24104d895424084d891c244d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15ac4300004889c34883fb017504415ceb12488b0424ff158d4300004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f853c0500004d8b4d084c8bac24d80000004d8b65004c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892b4c8bac24d80000004d8b45004c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005b4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892bf6442408017415488d64244848b8b0b5d3f1c27f0000488b5d08ff23f6442408017415488d64244848b808afd1f1c27f0000488b5d08ff234c8b6c24084d8b6df849c1e50849c1ed074983cd014983fd03740a488d642448e9d30300004c8b6c24084d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84910300004c8b6c24084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f814d1f1c27f00004156415141544150ff15e64000004158415c4159415e4c8b6c24084d8b5d004c231dc63f00004d89dd4983fd00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989db4983eb014c03d87002eb194156415141544150ff15854000004158415c4159415e4989c34c8b6c24184983fd05750949c7c20b000000eb1b4c8b6c24184983fd01750949c7c203000000eb0749c7c2070000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f80500000049c745200100000048bf58a4d3f1c27f000049897d1849c74510010000004d894d0849c74500070000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89691849c741100b0000004d89410849c701210000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d894d0849c745000d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c895f0848c707050000004c8b9c24c80000004d8b0b4c8b9c24c80000004d8b1b4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488bb424c80000004c891e4d8d5fd04c3b5d107306ff5550ca80774d89df49c743f8050000004d89632049897b184d8943104d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15e13d00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b838b6d3f1c27f0000488b5d08ff23488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f853c0500004d8b4d084c8bac24d80000004d8b65004c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005a4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892b4c8bac24d80000004d8b45004c8bac24d80000004d8b6d004983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d80000004d892b4c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca005b4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24d00000004d892bf6442410017415488d64244848b8b0b5d3f1c27f0000488b5d08ff23f6442410017415488d64244848b808afd1f1c27f0000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642448e9d30300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84910300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f814d1f1c27f00004156415141544150ff152a3b00004158415c4159415e4c8b6c24104d8b5d004c231d1a3a00004d89dd4983fd00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989db4983eb014c03d87002eb194156415141544150ff15c93a00004158415c4159415e4989c34c8b6c24184983fd05750949c7c20b000000eb1b4c8b6c24184983fd01750949c7c203000000eb0749c7c2070000004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f80500000049c745200100000048bf58a4d3f1c27f000049897d1849c74510010000004d894d0849c74500070000004d8d4fd84c3b4d107306ff5550ca007d4d89cf49c741f8040000004d89691849c741100b0000004d89410849c701210000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d894d0849c745000d000000498d7fe8483b7d107306ff5550ca007d4989ff48c747f8020000004c895f0848c707050000004c8b9c24c80000004d8b0b4c8b9c24c80000004d8b1b4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488bb424c80000004c891e4d8d5fd04c3b5d107306ff5550ca80774d89df49c743f8050000004d89632049897b184d8943104d894b084d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15253800004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424184d89264d896e0849c746100100000048c7c0010000004883c440c29000488d64244848b838b6d3f1c27f0000488b5d08ff23488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c420c2900041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85e70300004d8b66084c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01344d89f749c746f80500000049c746200100000049bb58a4d3f1c27f00004d895e1849c7461001000000415b4d895e0849c706070000004d8d5fd84c3b5d107306ff5550ca01744d89df49c743f8040000004d89731849c743100b0000004d89530849c703210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c7060d0000004d8d4fd04c3b4d107306ff5550ca01744d89cf49c741f80500000049c741200100000049bb58a4d3f1c27f00004d89591849c74110010000004d89610849c701070000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b8424c80000004d89204d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849c70424010000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15f93100004889c34883fb017504415ceb12488b0424ff15da3100004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442408017415488d64244048b8b0b5d3f1c27f0000488b5d08ff23f6442408017415488d64244048b808afd1f1c27f0000488b5d08ff234c8b6c24084d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24084d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f814d1f1c27f00004156415241544151ff15332f00004159415c415a415e4c8b6c24084d8b5d004c231d432e00004d89dd4983fd00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15d22e00004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858a4d3f1c27f00004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15592c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838b6d3f1c27f0000488b5d08ff23488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442410017415488d64244048b8b0b5d3f1c27f0000488b5d08ff23f6442410017415488d64244048b808afd1f1c27f0000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f814d1f1c27f00004156415241544151ff15a22900004159415c415a415e4c8b6c24104d8b5d004c231dc22800004d89dd4983fd00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15412900004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858a4d3f1c27f00004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15c82600004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838b6d3f1c27f0000488b5d08ff23488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85e70300004d8b66084c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334c8bb424e00000004d8b164c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24e00000004d89334c8bb424d80000004d8b1e4d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c706070000004c8b9c24d80000004d89334d8d77d04c3b75107306ff5550ca01344d89f749c746f80500000049c746200100000049bb58a4d3f1c27f00004d895e1849c7461001000000415b4d895e0849c706070000004d8d5fd84c3b5d107306ff5550ca01744d89df49c743f8040000004d89731849c743100b0000004d89530849c703210000004d8d77e84c3b75107306ff5550ca013c4d89f749c746f8020000004d895e0849c7060d0000004d8d4fd04c3b4d107306ff5550ca01744d89cf49c741f80500000049c741200100000049bb58a4d3f1c27f00004d89591849c74110010000004d89610849c701070000004c8ba424c80000004d8b1c244c8ba424c80000004d8b24244983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b8424c80000004d89204d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d896c24204d894c24184d895424104d895c240849c70424090000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318010000004d896b104c8b6c24084d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15fc2000004889c34883fb017504415ceb12488b0424ff15dd2000004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85110500004d8b55084c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892b4c8bac24d00000004d8b4d004c8bac24d00000004d8b6d004983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24d00000004d892b4c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849c74500070000004c8b9c24c80000004d892bf6442410017415488d64244048b8b0b5d3f1c27f0000488b5d08ff23f6442410017415488d64244048b808afd1f1c27f0000488b5d08ff234c8b6c24104d8b6df849c1e50849c1ed074983cd014983fd03740a488d642440e9a80300004c8b6c24104d0fb66dff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983f5024983fd030f84660300004c8b6c24104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054889d8eb2048b8f814d1f1c27f00004156415241544151ff15361e00004159415c415a415e4c8b6c24104d8b5d004c231d761d00004d89dd4983fd00750948c7c301000000eb0a48bbf814d1f1c27f0000a8017413f6c301740e4989db4983eb014c03d87002eb194156415241544151ff15d51d00004159415c415a415e4989c34d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f80500000049c745200100000049b858a4d3f1c27f00004d89451849c74510010000004d89550849c74500070000004d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d896a1849c742100b0000004d894a0849c702210000004d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d89550849c745000d0000004d8d47e84c3b45107306ff5550ca007a4d89c749c740f8020000004d89580849c700050000004c8b9c24c00000004d8b134c8b9c24c00000004d8b1b4983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488bbc24c00000004c891f4d8d5fd04c3b5d107306ff5550ca00774d89df49c743f8050000004d8963204d8943184d894b104d89530849c703090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c7030d0000004d8d57d04c3b55107306ff5550ca00784d89d749c742f80500000049c742200100000049c74218010000004d8962104c8b24244d89620849c7020f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff155c1b00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64244048b838b6d3f1c27f0000488b5d08ff23488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246841ff7608ffb42408010000ffb42408010000ffb42408010000ffb42408010000ffb424080100004c8bb424080100004c8bac24000100004c8ba424f80000004c8b9c24f00000004c8b9424e80000004c8b8c24e00000004c8b8424d8000000488bbc24d0000000488bb424c8000000488b9424c0000000488b8c24b8000000488b9c24b0000000488b8424a8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85590300004d8b6e084c8bb424e80000004d8b1e4c8bb424e80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8ba424e80000004d8934244c8bb424e00000004d8b264d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c706070000004c8ba424e00000004d8934244d8d77d04c3b75107306ff5550ca01284d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca01684d89e749c74424f8040000004d8974241849c74424100b0000004d895c240849c70424210000004d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d89660849c7060d0000004d8d57d04c3b55107306ff5550ca01684d89d749c742f80500000049c742200100000049bc58a4d3f1c27f00004d89621849c74210010000004d896a0849c702070000004c8bac24d00000004d8b65004c8bac24d00000004d8b6d004983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b8c24d00000004d89294d8d6fd04c3b6d107306ff5550ca015c4d89ef49c745f8050000004c8b4c24084d894d204d8955184d895d104d89650849c74500290000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01504d89df49c743f80500000049c743200100000049c74318010000004c8b6c24084d896b104c8b6c24104d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15221600004889c34883fb017508415c4883c408eb12488b0424ff15ff1500004989c4488d6424104d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85470500004d8b56084c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012c4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012d4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012f4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca012f4d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016f4d89e749c74424f8040000004d8974241849c74424100b0000004d894c240849c70424210000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca016f4d89e749c74424f80500000049c74424200100000048bf58a4d3f1c27f000049897c241849c7442410010000004d8954240849c70424070000004d8d57d84c3b55107306ff5550ca017b4d89d749c742f8040000004d89621849c742100b0000004d896a0849c702210000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d8945204d895d1849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d04c3b55107306ff5550ca01784d89d749c742f80500000049c742200100000049c74218010000004d895a104c8b5c24084d895a0849c7020f0000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15e30e00004889c34883fb017504415ceb12488b0424ff15c40e00004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f851501000041ff76086a016a016a014c8b74246041ff7608ffb42400010000ffb42400010000ffb42400010000ffb42400010000ffb424000100004c8bb424000100004c8bac24f80000004c8ba424f00000004c8b9c24e80000004c8b9424e00000004c8b8c24d80000004c8b8424d0000000488bbc24c8000000488bb424c0000000488b9424b8000000488b8c24b0000000488b9c24a8000000488b8424a0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000eb15488d64244848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85470500004d8b56084c8bb424e00000004d8b064c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca01254d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b1e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012d4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b0e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975004c8bb424d80000004d8b2e4d8d77e84c3b75107306ff5550ca012f4d89f749c746f8020000004d896e0849c706070000004c8bac24d80000004d8975004c8bb424e00000004d8b2e4c8bb424e00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8ba424e00000004d8934244c8bb424d80000004d8b264d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c706070000004c8ba424d80000004d8934244d8d77d04c3b75107306ff5550ca012f4d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c7461001000000415c4d89660849c706070000004d8d67d84c3b65107306ff5550ca016f4d89e749c74424f8040000004d8974241849c74424100b0000004d894c240849c70424210000004d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca016f4d89e749c74424f80500000049c74424200100000048bf58a4d3f1c27f000049897c241849c7442410010000004d8954240849c70424070000004d8d57d84c3b55107306ff5550ca017b4d89d749c742f8040000004d89621849c742100b0000004d896a0849c702210000004d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca017b4d89d749c742f8020000004d896a0849c702090000004d8d6fd04c3b6d107306ff5550ca015f4d89ef49c745f8050000004d895d204d89451849c74510010000004d894d084d8955004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d896a0849c702150000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d89550849c745000d0000004d8d57d04c3b55107306ff5550ca01784d89d749c742f80500000049c742200100000049c74218010000004d895a104c8b5c24084d895a0849c7020f0000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15a80700004889c34883fb017504415ceb12488b0424ff15890700004989c4488d6424084d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41566a016a016a014c8b7424384d8b364983fe0f0f85aa0000004c8b742438498b5e08f6c301741cf6c3017402eb1c488d64247048b8381fd1f1c27f0000488b5d08ff2348c7c301000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff15550600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000048c704240100000048c7442408010000004c89742410e9a30200004c8bb4240001000041ff364c8bb424080100004d8b364983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8bac24080100004d8975004c8bb424000100004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8bac24000100004d8975006a016a016a014c8bb4248800000041ff7608ffb42428010000ffb42428010000ffb42428010000ffb42428010000ffb424280100004c8bb424280100004c8bac24200100004c8ba424180100004c8b9c24100100004c8b9424080100004c8b8c24000100004c8b8424f8000000488bbc24f0000000488bb424e8000000488b9424e0000000488b8c24d8000000488b9c24d0000000488b8424c8000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842420010000488b9c244801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240849c7c40100000041f6c501753e4d8b4d004d8b5d084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070ebbc4d8b2e4983fd090f85ba0300004d8b76084d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89750849c745004b0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e0849c706090000004c8924244c896c24084c89742410ff3424488b4424104c8b6c24184d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c74618010000004c8b6424304d8966104c8b6424284d89660849c706030000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c704240d0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f80200000049c74608010000004d892641564d8d77c84c3b75107306ff5550ca01204d89f749c746f80600000049c74628010000004d896e2049c74618ffffffff49bd58a4d3f1c27f00004d896e1049c74608050000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500410000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424304d89650849c74500090000004d8d67d84c3b65107306ff5550ca01604d89e749c74424f8040000004d896c241849c74424100b0000004c8b6c24404d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bcc0a8d3f1c27f00004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff151a0100004889c34883fb0175035beb12488b0424ff15fc0000004889c3488d6424084883fb0175075b4883c418eb12488b0424ff15d50000004889c3488d6424204883fb017508415c4883c410eb12488b0424ff15ad0000004989c4488d6424184d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500090000004c8b7424104d89264d896e0849c746100100000048c7c0010000004883c438c29000488d64247848b888b3d3f1c27f0000488b5d08ff23f40000000000000000000000800000000000000080000000000000008000000000000000800000000000000080|@14847,1,@1879,@6708,@6709,@6710,@6711,@4933,@6712,@6713,@6714,@6715,@6716,@6717,@6718,@4933,@4933,@6719,@6720,@6721,@4933,@4933,@6722,@4933,@4933,@6723,@6724,@6725,@4933,@4933,@6726,@4933,@4933,@6727,@6728,@6729,@6730,@6731,@6732,@4933,@6733,@6734,@6735,@6736,@6737,@6738,@6739,@6740,@6741,@6742,@6743,@6744,@6745,@6746,@6747,@6748,@4933,@6552,@6552,@6749,@4933,@6552,@6552,@6750,@6751,@6752,@6753,@6754,@6755,@6756,@6757,@6758,@4933,@6707,@6552,@4933,@6552,@6552,@6552|208,0,@9475 352,0,@9475 489,0,@9475 611,0,@9475 1084,0,@9475 1228,0,@9475 1399,0,@6706 1812,0,@9475 1956,0,@9475 2291,0,@14738 2403,0,@9475 2547,0,@9475 2882,0,@14738 2994,0,@9475 3138,0,@9475 3275,0,@9475 3595,0,@14738 3730,0,@9475 3874,0,@9475 4209,0,@14738 4308,0,@9475 4452,0,@9475 4787,0,@14738 4922,0,@9475 5066,0,@9475 5401,0,@14738 5523,0,@9475 5667,0,@9475 6002,0,@14738 6099,0,@9475 6243,0,@9475 6578,0,@14738 6628,0,@14838 6725,0,@14727 6739,0,@14728 7127,0,@9475 7271,0,@9475 7606,0,@14738 7728,0,@9475 7872,0,@9475 8207,0,@14738 8304,0,@9475 8448,0,@9475 8783,0,@14738 8889,0,@9475 9033,0,@9475 9368,0,@14738 9474,0,@9475 9618,0,@9475 9953,0,@14738 10079,0,@14727 10093,0,@14728 10468,0,@9475 10612,0,@9475 10947,0,@14738 11059,0,@9475 11203,0,@9475 11538,0,@14738 11641,0,@10093 12089,0,@10093 12546,0,@9475 12690,0,@9475 13025,0,@14738 13160,0,@9475 13304,0,@9475 13465,0,@10093 13721,0,@14738 13820,0,@9475 13964,0,@9475 14101,0,@9475 14421,0,@14738 14556,0,@9475 14700,0,@9475 14861,0,@10093 15117,0,@14738 15239,0,@9475 15383,0,@9475 15544,0,@10093 15800,0,@14738 15897,0,@9475 16041,0,@9475 16376,0,@14738 16426,0,@14841 16523,0,@14727 16537,0,@14728 16925,0,@9475 17069,0,@9475 17404,0,@14738 17526,0,@9475 17670,0,@9475 18005,0,@14738 18128,0,@9475 18272,0,@9475 18607,0,@14738 18721,0,@9475 18865,0,@9475 19200,0,@14738 19301,0,@9475 19445,0,@9475 19780,0,@14738 19947,0,@10093 20408,0,@9475 20552,0,@9475 20689,0,@9475 20849,0,@10021 20915,0,@10093 21346,0,@14738 21519,0,@9475 21581,0,@14832 21892,0,@10093 21952,0,@10021 22069,0,@9475 22392,0,@14738 22439,0,@14807 22780,0,@9475 22949,0,@9475 23139,0,@9475 23204,0,@14832 23553,0,@14807 23888,0,@14738 23935,0,@14807 24071,0,@9475 24236,0,@9475 24427,0,@9475 24492,0,@14832 24806,0,@14807 25141,0,@14738 25188,0,@14807 25363,0,@9475 25690,0,@14807 26025,0,@14738 26072,0,@14807 26247,0,@9475 26574,0,@14807 26770,0,@10093 26893,0,@10093 27036,0,@9475 27335,0,@14807 27531,0,@10093 27654,0,@10093 27797,0,@9475 28096,0,@14807 28527,0,@14738 28574,0,@14807 29012,0,@14807 29186,0,@9475 29482,0,@14807 29656,0,@9475 29952,0,@14807 30287,0,@14738 30334,0,@14807 30509,0,@9475 30705,0,@9475 30770,0,@14832 31093,0,@14807 31267,0,@9475 31563,0,@14807 31898,0,@14738 31945,0,@14807 32079,0,@9475 32201,0,@9475 32323,0,@9475 32551,0,@9475 32611,0,@14832 32795,0,@9475 32944,0,@9475 33007,0,@14832 33381,0,@14807 33716,0,@14738 33763,0,@14807 33897,0,@9475 34019,0,@9475 34139,0,@9475 34259,0,@9475 35071,0,@14807 35406,0,@14738 35453,0,@14807 35587,0,@9475 35709,0,@9475 35829,0,@9475 35949,0,@9475 36761,0,@14807 37192,0,@14738 37239,0,@14807 37373,0,@9475 37495,0,@9475 37619,0,@14742 37864,0,@14742 38325,0,@14844 38346,0,@14807 38500,0,@10093 38560,0,@10021 38677,0,@9475 39000,0,@14738 39047,0,@14807 39388,0,@9475 39557,0,@9475 39681,0,@14742 39885,0,@9475 40399,0,@14807 40734,0,@14738 40781,0,@14807 40915,0,@9475 41035,0,@9475 41204,0,@14742 41362,0,@14742 41430,0,@9475 41925,0,@14807 42063,0,@9475 42187,0,@9475 42288,0,@14818 42316,0,@11081 42484,0,@10021 42550,0,@10021 42690,0,@14742 42884,0,@9475 43348,0,@14821 43369,0,@14807 43507,0,@9475 43631,0,@9475 43732,0,@14818 43760,0,@11081 43928,0,@10021 43994,0,@10021 44134,0,@14742 44328,0,@9475 44792,0,@14821 44813,0,@14807 45244,0,@14738 45291,0,@14807 45425,0,@9475 45545,0,@9475 45667,0,@14742 45825,0,@14742 45893,0,@9475 46392,0,@14807 46530,0,@9475 46654,0,@9475 46755,0,@14818 46783,0,@11081 46951,0,@10021 47017,0,@10021 47110,0,@14742 47304,0,@9475 47772,0,@14821 47793,0,@14807 47931,0,@9475 48055,0,@9475 48156,0,@14818 48184,0,@11081 48352,0,@10021 48418,0,@10021 48511,0,@14742 48705,0,@9475 49173,0,@14821 49194,0,@14807 49529,0,@14738 49576,0,@14807 49710,0,@9475 49830,0,@9475 49952,0,@14742 50110,0,@14742 50178,0,@9475 50677,0,@14807 50815,0,@9475 50939,0,@9475 51040,0,@14818 51068,0,@11081 51236,0,@10021 51302,0,@10021 51395,0,@14742 51589,0,@9475 52057,0,@14821 52078,0,@14807 52413,0,@14738 52460,0,@14807 52594,0,@9475 52718,0,@14742 52881,0,@14742 52949,0,@9475 53419,0,@14807 53754,0,@14738 53801,0,@14807 53935,0,@9475 54057,0,@9475 54179,0,@9475 54301,0,@9475 54425,0,@14742 54590,0,@14742 55254,0,@14807 55589,0,@14738 55636,0,@14807 55770,0,@9475 55892,0,@9475 56014,0,@9475 56136,0,@9475 56260,0,@14742 56425,0,@14742 57089,0,@14807 57225,0,@10093 57285,0,@10021 57402,0,@9475 57725,0,@14738 58245,0,@14742 58567,0,@14761 58805,0,@14807 6706:D3,784|483b65187305ff5558cd054c8b6a204d89ee4d8b5d004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8975004c8b6a204d89ee4d8b4d004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8975004c8b6a184d89ee4d8b6d004d89f44d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8934244c8b72104d89f44d8b164d8d77e84c3b75107306ff5550ca053e4d89f749c746f8020000004d89560849c706050000004d8934244d8d57e84c3b55107306ff5550ca052a4d89d749c742f8020000004d896a0849c702310000004d8d67d04c3b65107306ff5550ca052e4d89e749c74424f8050000004d895c242049c7442418150000004d894c2410498944240849c70424010000004d8d77e84c3b75107306ff5550ca043e4d89f749c746f8020000004d89660849c706050000004d8d67e84c3b65107306ff5550ca046e4d89e749c74424f8020000004d895c240849c70424070000004d8d5fd84c3b5d107306ff5550ca04764d89df49c743f80400000049b830b9d3f1c27f00004d89431849c743100b0000004d896b0849c703210000004d8d6fe84c3b6d107306ff5550ca045e4d89ef49c745f8020000004d895d0849c745000d0000004c8b42084d89c341f6c001752f4d8b034d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8943104d89530849c7030b000000eb264d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849c703030000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c702070000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@14837,1,@1878|36,0,@9475 79,0,@9475 122,0,@9475 398,0,@14836 6707:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1931| 6708:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1880| 6709:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1881| 6710:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1882| 6711:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1883| 6712:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1884| 6713:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1885| 6714:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1886| 6715:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1887| 6716:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1888| 6717:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1889| 6718:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1890| 6719:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1891| 6720:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1892| 6721:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1893| 6722:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1894| 6723:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1895| 6724:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1896| 6725:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1897| 6726:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1898| 6727:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1899| 6728:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1900| 6729:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1901| 6730:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1902| 6731:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1903| 6732:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1904| 6733:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1905| 6734:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1906| 6735:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1907| 6736:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1908| 6737:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1909| 6738:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1910| 6739:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1911| 6740:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1912| 6741:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1913| 6742:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1914| 6743:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1915| 6744:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1916| 6745:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1917| 6746:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1918| 6747:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1919| 6748:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1920| 6749:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1921| 6750:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1922| 6751:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1923| 6752:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1924| 6753:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1925| 6754:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1926| 6755:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1927| 6756:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1928| 6757:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1929| 6758:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1930| 6759:D8,3784|483b65187306ff5558ca0d075053415141524d8b284d89ee4983fd010f85820000004c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a80000004d892c24e9890000004983fe03757f4c8bb424b00000004d8b364c8bac24b00000004d8b6d004983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8ba424b00000004d892c244c8bac24a80000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424a80000004d892c24eb044d8b700841566a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c24f800000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c60100000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85d40700004d8b6d084c8b6424104d89e34983fb150f83a30600004c8d1d080000004f8d5ca3fc41ffe3e94b000000909090e9da000000909090e98b010000909090e95f020000909090e933030000909090e9ed030000909090e95f060000909090e957060000909090e9b1040000909090e96b0500009090904d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049bd80b8d3f1c27f00004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9a10a00004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424090000004d89e54d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9e80900004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424010000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420ffffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be90c0900004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420fdffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9300800004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d89e54d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c7442420fbffffff4d896c24184c8b2c244d896c241049c74424080100000049c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be96e0700004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420f9ffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9920600004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424070000004d89e54d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049c7442420f3ffffff4d896c24184c8b2c244d896c241049c74424080100000049c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9d00500004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f8010000004d892b4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d89e54d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049c7442420f1ffffff4d896c24184c8b2c244d896c24104d895c240849c70424230000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892be9f40400004c8ba424b80000004d8b24244c8b9c24b80000004d8b1b4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b9424b80000004d891a4c8b9c24b00000004d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d89530849c703070000004c8b9424b00000004d891af644241001740d4c8b5c24104983fb017d1aeb1f4c8b5c24104d0fb65bff4e8d1c5d010000004983fb237407488b442410eb2148b8f814d1f1c27f0000488b5c2410415641554154ff15f8040000415c415d415ea801740b4989c34983eb027002eb1c48c7c303000000415641554154ff15c8040000415c415d415e4989c34c8b4c24104d89ca4983f901750949c7c201000000eb5f4d89d249c7c101000000eb15488d64242848b888b3d3f1c27f0000488b5d08ff234983fa0375204d8d57f04c3b55107306ff5550ca007a4d89d749c742f8010000004d890aeb184d89d04983e0034983f8030f85f303000049c7c2010000004983fa010f851b010000f644241001740d4c8b5424104983fa017d1aeb1f4c8b5424104d0fb652ff4e8d1455010000004983fa2374074c8b542410eb2848b8f814d1f1c27f0000488b5c24104156415541544153ff15e7030000415b415c415d415e4989c24d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004d89500849c700050000004c8b9424a80000004d8b0a4c8b9424a80000004d8b124983c2027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488bbc24a80000004c89174d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8962204d8942184d896a104d894a0849c702290000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d000000e92f010000498b1af6c30174084883fb017d15eb184c0fb653ff4e8d1455010000004983fa2374054989daeb2348b8f814d1f1c27f00004156415541544153ff15d4020000415b415c415d415e4989c24d8d47e84c3b45107306ff5550ca007c4d89c749c740f8020000004d89500849c700050000004c8b9424a80000004d8b0a4c8b9424a80000004d8b124983c2027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488bbc24a80000004c89174d8d57d04c3b55107306ff5550ca007b4d89d749c742f8050000004d8942204d8962184d896a1049c74208030000004d890a4d89d54d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c7023f0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89550849c745000d0000004d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89590849c701050000004c8b9c24a80000004d8b134c8b9c24a80000004d8b1b4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b8424a80000004d89184d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004c8b04244d8943204d894b184d8963104d89530849c703090000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15970000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000415e4d89264d896e0849c746100100000048c7c0010000004883c418c290004d89d049d1e84983c8014c89cf4883c7024989f94d89c2483b65187306ff5558ca007ee9aefbfffff400000000|@14848,1,@1932,@6760,@4933,@4933,@4987,@4933|70,0,@9475 206,0,@9475 527,0,@14738 795,0,@14832 2405,0,@9475 2543,0,@10021 2659,0,@14807 2798,0,@10021 2909,0,@9475 3070,0,@10021 3176,0,@9475 3404,0,@9475 6760:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1933| 6761:D33,18480|488dbc2458ffffff483b7d187306ff5560ca0d07534150415141524c8b70084d89f44c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e915030000909090e9bf050000909090e9c4060000909090e9c9070000909090e9ed0a0000909090e9630c0000909090e90d0f0000909090e9b7110000909090e90c160000909090e979180000909090e9171c0000909090e9b51f0000909090e9b1210000909090ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e94b410000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e90b3b0000ff306a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64241049c7c601000000e986370000ff306a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c240001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64241048c7c001000000e9cf340000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975006a016a016a01ff7208ffb424f0000000ffb424f0000000ffb424f0000000ffb424f0000000ffb424f00000004c8bb424f00000004c8bac24e80000004c8ba424e00000004c8b9c24d80000004c8b9424d00000004c8b8c24c80000004c8b8424c0000000488bbc24b8000000488bb424b0000000488b9424a8000000488b8c24a0000000488b9c2498000000488b842490000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f8000000488b9c241801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e90e2f00004c8b304d8d6fe04c3b6d107306ff5550ca04504d89ef49c745f8030000004d8965104d89750849c745002d0000004d8d77d84c3b75107306ff5550ca04204d89f749c746f80400000049bcf8a1d3f1c27f00004d89661849bc18a2d3f1c27f00004d8966104d896e0849c7060d00000041566a016a016a01ff7208ffb424d8000000ffb424d8000000ffb424d8000000ffb424d8000000ffb424d80000004c8bb424d80000004c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c2480000000488b442478544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424e0000000488b9c24000100004c8b8424f80000004c8b8c24f000000049c7c201000000ff12488d642430415d415c415e488d64240849c7c301000000e9302d0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e959280000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e982230000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24d00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d800000041ff364c8bb424e00000004d8b364983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bac24e00000004d8975006a016a016a01ff7208ffb42410010000ffb42410010000ffb42410010000ffb42410010000ffb424100100004c8bb424100100004c8bac24080100004c8ba424000100004c8b9c24f80000004c8b9424f00000004c8b8c24e80000004c8b8424e0000000488bbc24d8000000488bb424d0000000488b9424c8000000488b8c24c0000000488b9c24b8000000488b8424b0000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842418010000488b9c243801000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e94a1b0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424b000000041ff364c8bb424b80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24b80000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415d488d64240849c7c601000000e9ed160000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e9810f0000ff304c8b7424104d8b264d89e54983fc010f85820000004c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24e98f0000004d89f64983fd03757f4c8bb424b80000004d8b364c8bac24b80000004d8b6d004983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8ba424b80000004d892c244c8bac24b00000004d8b65004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89650849c74500050000004c8ba424b00000004d892c24eb074d89f64d8b760841564c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975004c8bb424c800000041ff364c8bb424d00000004d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8bac24d00000004d8975004c8bb424c80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c80000004d8975004c8bb424d000000041ff364c8bb424d80000004d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8bac24d80000004d8975004c8bb424d00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24d00000004d8975006a016a016a01ff7208ffb424f8000000ffb424f8000000ffb424f8000000ffb424f8000000ffb424f80000004c8bb424f80000004c8bac24f00000004c8ba424e80000004c8b9c24e00000004c8b9424d80000004c8b8c24d00000004c8b8424c8000000488bbc24c0000000488bb424b8000000488b9424b0000000488b8c24a8000000488b9c24a0000000488b842498000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b842400010000488b9c242001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415c415e488d64240849c7c501000000e915080000ff304c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c001000000e908040000ff304c8bb424b800000041ff364c8bb424c00000004d8b364983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8bac24c00000004d8975004c8bb424b80000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706050000004c8bac24b80000004d8975004c8bb424c000000041ff364c8bb424c80000004d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8bac24c80000004d8975004c8bb424c00000004d8b2e4d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849c706070000004c8bac24c00000004d8975006a016a016a01ff7208ffb424e8000000ffb424e8000000ffb424e8000000ffb424e8000000ffb424e80000004c8bb424e80000004c8bac24e00000004c8ba424d80000004c8b9c24d00000004c8b9424c80000004c8b8c24c00000004c8b8424b8000000488bbc24b0000000488bb424a8000000488b9424a0000000488b8c2498000000488b9c2490000000488b842488000000544883042430ff742428ff742428ff742428ff742428ff7424284156415541544153415241514150575652515350488b9424c0000000488b8424f0000000488b9c241001000049c7c00100000049b9b8a3d3f1c27f000049c7c201000000ff12488d642430415d415e488d64240848c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85a30100004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520010000004d89751849c74510010000004c8b34244d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff155b2300004889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b34244d897008488d64240849c70009000000488b4424104c8b4c24084c8b9424b80000004c8bac24b00000004c89ac24b80000004c8b7424284c89b424b00000004881c4b0000000ff25e6220000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85a30100004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004d89751849c74510010000004c8b34244d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c745200100000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c745000f0000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054889c3eb09ff15422100004889c34d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b34244d897008488d64240849c70009000000488b4424104c8b4c24084c8b9424b80000004c8bac24b00000004c89ac24b80000004c8b7424284c89b424b00000004881c4b0000000ff25cd200000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0300004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424184d89f34d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d00000041564c8b6c24604d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d67d84c3b65107306ff5550ca00484d89e749c74424f8040000004d8974241849c7442410070000004c8b6c24104d89ee4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d89f64d89720849c702090000004d8d67d04c3b65107306ff5550ca002c4d89e749c74424f8050000004c8b4c24184d89ce4d894c24204d895424184d89db4d895c241049c74424081300000049c704243b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89284d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c745200100000049c74518030000004d89f64d8975104c8b7424284d89750849c745000f0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff159f1d00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415c4883c418eb12488b0424ff15511d00004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554d8b2e4983fd090f855d0300004d8b6e084d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849c74510070000004c8b7424184d89f34d89750849c74500210000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c7060d00000041564c8b6c24684d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d67d84c3b65107306ff5550ca00484d89e749c74424f8040000004d8974241849c7442410070000004c8b6c24104d89ee4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745000d0000004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d89f64d89720849c702090000004d8d67d04c3b65107306ff5550ca002c4d89e749c74424f8050000004c8b4c24184d89ce4d894c24204d895424184d89db4d895c241049c74424080300000049c704243b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89284d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c745200100000049c74518030000004d89f64d8975104c8b7424284d89750849c745000f0000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15c91900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508415c4883c418eb12488b0424ff157b1900004989c4488d6424204d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64245048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85800100004d8b650849c7c5050000004983ed014d6bed0170064983c501eb1f48c7c00500000048c7c30300000041564154ff157e180000415c415e4989c54d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424084d8955204d895d184d8965104c8b24244d896508488d64240849c745000b0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054d89f4eb0c4c89f0ff157e1700004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85750300004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620f1ffffff49bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d67d84c3b65107306ff5550ca01404d89e749c74424f8040000004d8974241849c74424100b0000004c8b7424284d89f54d8974240849c70424210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d89660849c7060d0000004d8d67d04c3b65107306ff5550ca01604d89e749c74424f80500000049bb30bed1f1c27f00004d895c24204c8b5424204d89d34d895424184d89ed4d896c241049c7442408030000004c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89650849c745003f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c704240d0000004d8d6fd04c3b6d107306ff5550ca01584d89ef49c745f80500000049bad8bed1f1c27f00004d8955204c8b4c24184d89ca4d894d184d89db4d895d1049c74508050000004c8b5c24084d895d004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d896b0849c7033f0000004d8d6fe84c3b6d107306ff5550ca015c4d89ef49c745f8020000004d895d0849c745000d0000004d8d5fd04c3b5d107306ff5550ca01744d89df49c743f8050000004c8b4c24304d894b2049b980b8d3f1c27f00004d894b184d89d24d8953104c8b14244d895308488d64243049c703070000004d8d57e84c3b55107306ff5550ca01784d89d749c742f8020000004d895a0849c702050000004d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d89530849c7030d0000004d8d57e84c3b55107306ff5550ca01784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff159b1300004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64246048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85bf0100004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620ffffffff49bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c74510050000004c8b34244d89f44d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff156e1100004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85bf0100004d8b6e084d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c746200100000049bc58a4d3f1c27f00004d89661849c74610010000004d896e0849c706070000004d8d6fd84c3b6d107306ff5550ca01404d89ef49c745f8040000004d89751849c745100b0000004c8b34244d89f44d89750849c74500210000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca01504d89ef49c745f80400000049c74518010000004d89e44d896510488d6424084c8b24244d89650849c74500450000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c704240d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff15410f00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8959084d89014d89cb4d89d5483b65187306ff5558ca0078ebbc415d4d895d004d8965084d89751048c7c0010000004883c418c2900041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f852f0200004d8b76084d8d6fd04c3b6d107306ff5550ca01404d89ef49c745f80500000049c74520030000004d89751849c74510010000004c8b7424084d89f44d89750849c745004b0000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89e44d89650849c74500090000004d8d5fe04c3b5d107306ff5550ca01604d89df49c743f8030000004d896b104c8b24244d89e54d89630849c7033d0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c704240d0000004d8d5fd04c3b5d107306ff5550ca01704d89df49c743f80500000049c743200100000049c74318030000004d89ed4d896b10488d6424104c8b2c244d896b0849c7030f0000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d0849c745000d0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c4eb09ff15440c00004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64244048b888b3d3f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc4d8b2e4983fd090f85440100004d8b76084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500270000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060d000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15f90a00004989c648c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff15c10a0000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15990a0000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff25250a0000488d64242048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85100200004d8b650848c7c0050000004883e801486bc00170064883c001eb1c48c7c00500000048c7c30300000041564154ff1582090000415c415ea801740b4989c54983c5027002eb1848c7c30300000041564154ff1556090000415c415e4989c54d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f80600000049c74528030000004d895d2049c745180100000049bb58a4d3f1c27f00004d895d1049c745080b0000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424410000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000d000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb017502eb0c4c89f0ff15510800004989c648c7c0050000004883e801486bc00070064883c001eb1848c7c00500000048c7c3010000004156ff1519080000415ea801740b4989c54983c5027002eb1448c7c3030000004156ff15f1070000415e4989c54d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c70005000000488b4424084c89f34159488d6424084c8b9424a00000004c8bac24980000004c89ac24a00000004c8b7424104c89b424980000004881c498000000ff257d070000488d64242048b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85260300004d8b5d0849c7c4050000004983ec014d6be40170064983c401eb1f48c7c00500000048c7c30300000041564153ff15da060000415b415e4989c44d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d89d24d895424104d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d00000049c7c4050000004983ec014d6be40170064983c401eb2348c7c00500000048c7c303000000415641554153ff15b7050000415b415d415e4989c44d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89610849c701050000004c8ba424b80000004d8b14244c8ba424b80000004d8b24244983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b8424b80000004d89204d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004c8b4424084d894424204d894c24184c8b0c244d894c2410488d6424084d8954240849c70424010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849c702050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff152c0400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888b3d3f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dc483b65187306ff5558ca0070ebbb4d8b65004983fc090f85260300004d8b5d0849c7c4050000004983ec014d6be4ff70064983c401eb1f48c7c00500000048c7c3ffffffff41564153ff1534030000415b415e4989c44d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c74500050000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849c74424100b0000004c8b2c244d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f8030000004d89d24d895424104d895c240849c70424070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c7030d00000049c7c4050000004983ec014d6be40170064983c401eb2348c7c00500000048c7c303000000415641554153ff1511020000415b415d415e4989c44d8d4fe84c3b4d107306ff5550ca00784d89cf49c741f8020000004d89610849c701050000004c8ba424b80000004d8b14244c8ba424b80000004d8b24244983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b8424b80000004d89204d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004c8b4424084d894424204d894c24184c8b0c244d894c2410488d6424084d8954240849c70424090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849c702050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c704240d0000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4883fb0175054d89f4eb0c4c89f0ff15860000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500090000004c8b7424084d89264d896e0849c746100100000048c7c0010000004883c428c29000488d64243848b888b3d3f1c27f0000488b5d08ff23f4000000|@14849,1,@1934,@6763,@6552,@6552,@6764,@6552,@6552,@6585,@4933,@6552,@6765,@4933,@6552,@6585,@4933,@6552,@6766,@6767,@6768,@6769,@6770,@6771,@6552,@6772,@6773,@6774,@6775,@6585,@6776,@6585,@6762|220,0,@9475 359,0,@9475 494,0,@9475 808,0,@14738 910,0,@9475 1049,0,@9475 1184,0,@9475 1498,0,@14738 1767,0,@14738 2036,0,@14738 2138,0,@9475 2277,0,@9475 2412,0,@9475 2534,0,@9475 2848,0,@14738 2966,0,@14727 2980,0,@14728 3332,0,@9475 3471,0,@9475 3606,0,@9475 3920,0,@14738 4022,0,@9475 4161,0,@9475 4296,0,@9475 4610,0,@14738 4712,0,@9475 4851,0,@9475 4986,0,@9475 5108,0,@9475 5230,0,@9475 5352,0,@9475 5413,0,@9475 5474,0,@9475 5727,0,@14738 5829,0,@9475 5968,0,@9475 6103,0,@9475 6356,0,@14738 6458,0,@9475 6597,0,@9475 6732,0,@9475 6854,0,@9475 6976,0,@9475 7290,0,@14738 7392,0,@9475 7531,0,@9475 7666,0,@9475 7788,0,@9475 7910,0,@9475 8224,0,@14738 8304,0,@9475 8426,0,@9475 8740,0,@14738 8820,0,@9475 8942,0,@9475 9256,0,@14738 9801,0,@14807 10322,0,@14807 10461,0,@14742 11288,0,@14807 11427,0,@14742 12254,0,@14807 12742,0,@14807 12878,0,@14742 13040,0,@11191 13201,0,@11198 13364,0,@14832 13729,0,@14807 13865,0,@14742 14278,0,@14807 14414,0,@14742 14827,0,@14807 15584,0,@14807 16010,0,@14807 16288,0,@14742 16642,0,@14807 17157,0,@9475 17552,0,@14807 18067,0,@9475 18462,0,@14807 6762:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1949| 6763:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1935| 6764:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1936| 6765:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1937| 6766:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1938| 6767:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1939| 6768:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1940| 6769:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1941| 6770:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1942| 6771:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1943| 6772:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1944| 6773:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1945| 6774:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1946| 6775:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1947| 6776:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@1948| 6777:D3,168|483b65187306ff5558ca0901a8010f8587000000488b4008ff334c8b334983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89334d8b284d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c706050000004d8930e894ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@2572|42,0,@9475 6778:D8,464|483b65187306ff5558ca09074989dd4c89c34d89d641f6c60175444d8b1e4d8b66084d8b034c3b05dc01000075204d8d77f04c3b75107306ff5550ca092e4d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0966ebb649c7c6010000004983fe01750f49be2028d1f1c27f0000e9c10000004d8b364d8b264c3b257801000075064d8b7610eb1048b87810d1f1c27f0000488b5d08ff2350415541564c8b6424504c8b5c24484c8b442440488b7c2438488b742430488b542428488b4c2420488b4424604c8b6c24184c8b7424104987c64c8974241048895c2418488b5c240848894c24204889542428488974243048897c24384c8944244049c7c0010000004c895c24484c896424504c894c245849c7c1010000004c895424604c8b14244c896c24084883c408ff25c1000000488d64241841f6c60175444d8b1e4d8b66084d8b034c3b059d00000075204d8d77f04c3b75107306ff5550ca092e4d89f749c746f8010000004d891eeb184d89e6483b65187306ff5558ca0966ebb649c7c6010000004983fe01751048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b264c3b253800000075094d8b7610e9e5feffff48b87810d1f1c27f0000488b5d08ff23f400000000|@14871,1,@1959,@4642,@4642,@6779,@4642,@4642|110,0,@10158 146,0,@9991 405,0,@10198 445,0,@9991 6779:D18,2584|483b65187306ff5558ca090750534150415141524c8b7424084983fe510f8d3e0100004c8b34244983fe030f852e01000048bae0bcd3f1c27f0000488b84248000000048bb90bed3f1c27f0000ff154d0a00004989c641564c8b34244c8bac24800000004d8b6d004e8d2c6d010000004983fd01750f48b8a0d5d0f1c27f0000e9a20000004d89ec4983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b0900000f878f0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c8ba424800000004c89e9498d742408488d780848d1e9f3a44983c51049d1ed42c604280a8060ffbf4c89f2ff124c8b7424284d8b76f849c1e60849c1ee074983ce0141566a01e953080000488d64243048b8f8c7d0f1c27f0000488b5d08ff23eb15488d64242848b8d8bed3f1c27f0000488b5d08ff236a016a014c8b8c2480000000488b442430488b5c24284989e0ff1503090000ff3424ff7424104c8b842488000000488b442408488b1c24ff15dd0800004989c64d8b6ef849c1e50849c1ed074983cd0149c7c4010000004d3be5720949c7c501000000eb2e4f8b5ca6fc4983fb030f85070100004d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d004983fd01750949c7c503000000eb0749c7c5010000004983f5026a016a014983fd037505e9b40000004c8b6424384983fc010f85a50000004c8b7424484d8b76f849c1e60849c1ee074983ce014983fe01750f49bd4882d1f1c27f0000e9e80600004983fe017e604c3b35900700007d504d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000e97f060000488d642458eb05488d64245848b8d010d3f1c27f0000488b5d08ff234c892c244c89742408eb1b4d89e34983c3024d89dc483b65187306ff5558ca0070e9c1feffff415e5b4983fe030f8526010000488d6424084c8b7424204983fe01750949c7c003000000eb0749c7c0010000006a016a016a01488b4424184c8b4c24484989e2ff1536070000415b415d415c488d6424084c8b7424184983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488d6424104153415441554156488b4424204c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c245048895c2450488b5c241048894c24584889542460488974246848897c24704c894424784c8b4424084c898c24800000004c8b0c244c899424880000004989c2488b4424184c899c24900000004c89a424980000004c89ac24a00000004883c448e9c6fbffff488d6424284c8b3424498b5ef848c1e30848c1eb074883cb01488b442408ff15220600004989c641564c8b7424284983fe030f85840000004c8b7424104d8b76f849c1e60849c1ee074983ce0141564c8b34244d89f54983fe017514488d64240849be4882d1f1c27f0000e9710200004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01e9fa0100004c8b8c24880000004c8b942480000000488b442410488b5c24404c8b0424ff155e0500004989c6488d6424084d8b2e4983fd010f8523010000498b4608488b1c24ff15330500004889c3488d6424086a016a016a01488b44241849c7c0010000004c8b4c24484989e2ff1503050000415b415d415c488d6424084c8b7424184983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488d6424104153415441554156488b4424204c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c2470488b742468488b542460488b4c2458488b5c245048895c2450488b5c241048894c24584889542460488974246848897c24704c894424784c8b4424084c898c24800000004c8b0c244c899424880000004989c2488b4424184c899c24900000004c89a424980000004c89ac24a00000004883c448e9b3f9ffff488d642428488d64240841ff76084c8b7424204983fe037514488b9c24a0000000488b0424ff15e8030000eb00488b442408488b5c24584c8b842498000000488bbc24a0000000488b7424304c8b6c2450415c488d6424084c8b5c24604c8b5424584c8b4c24504c894c24704989f94c895424784989f24c899c24800000004c89a424880000004c89ac24900000004c8b7424384c897424684883c468ff25680300004c8b34244d89f54c3b7424100f8c49010000488d6424084c8b2c244d89ee418065ffbf4d89f6488d642410415648bae0bcd3f1c27f0000488b8424b000000048bb90bed3f1c27f0000ff15110300004989c641564c8b34244c8bac24b00000004d8b6d004e8d2c6d010000004983fd01750f48b8a0d5d0f1c27f0000e9a20000004d89ec4983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5f0200000f878f0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c8ba424b00000004c89e9498d742408488d780848d1e9f3a44983c51049d1ed42c604280a8060ffbf4c89f2ff124c8b7424084d8b76f849c1e60849c1ee074983ce0141566a01e99e000000488d64246048b8f8c7d0f1c27f0000488b5d08ff234d89ed4c8b7424284f8b74aefc41ff36498b4608ff15e30100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e91cfeffff4c8b34244c89f04c3b742408722e488d6424105a48b8a0d5d0f1c27f0000ff12488b9c24b0000000488b442408ff15390100004883c408e9e6fbffff4889c04c8b742418498b5c86fc49b8a0bfd3f1c27f00004c8b4c2410ff15060100004c8b2c244983c5024c892c24483b65187303ff5558eb8b4d3bf47f17418065ffbf48c70424030000004c896c2408e9a7f9ffff4bc744a5fc010000004d89e34983c3027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89dc483b65187306ff5558ca0070ebac4c8b34244c89f04c3b7424087217488d6424105a48b8a0d5d0f1c27f0000ff12e9b4f7ffff4889c04c8b742438498b5c86fc49b8e0bfd3f1c27f00004c8b4c2410ff154c0000004c8b2c244983c5024c892c24483b65187303ff5558eba2f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14908,1,@1963,@6792,@6792,@6797,@6799,@6780,@6800,@7071,@7073,@7300,@7303,@7322,@7073,@7359,@6788,@6780|51,0,@14852 69,0,@14861 120,0,@9535 337,0,@9487 360,0,@14864 606,0,@10817 728,0,@13764 879,0,@9475 1181,0,@10817 1410,0,@9475 1823,0,@14852 1841,0,@14861 1892,0,@9535 2109,0,@9487 2228,0,@9475 2282,0,@9535 2335,0,@14868 2430,0,@9475 2483,0,@9535 2513,0,@14870 6780:D3,248|483b65187305ff5558cd0da80175444c8b284c8b70084d8b65004c8b5a084d3be375204d8d77f04c3b75107306ff5550ca0c204d89f749c746f8010000004d892eeb174c89f0483b65187305ff5558cd0debb849c7c6010000004983fe01750c49bdf8bcd3f1c27f0000eb134d8b364d8b2e4c8b62084d3bec75664d8b6e1049bcd8c8d0f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d8483b45107306ff5550ca08604989c748c740f804000000488958184c8968104c89700849be10e364f1c27f00004c8930c348b87810d1f1c27f0000488b5d08ff23f4000000000000|@14860,1,@1956|98,0,@14853 129,0,@9493 213,0,@6782 227,0,@9991 6781:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@1951| 6782:D6,1504|483b65187305ff5558cd054989c5524c8b34244d8b76084d8b1e4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084d89eae9b20000004983fc0175084d89dae9a40000004f8d4c26ff4c89c84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b055d0500000f87880000004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1e94d890a4c89f1498d7308498d7a0848d1e9f3a44983c6104c89e1498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d1c75010000006a016a0149c7c401000000eb15488d64240848b8f8c7d0f1c27f0000488b5d08ff234d3be375634d8d6fe04c3b6d107306ff5550ca001c4d89ef49c745f8030000004d8955104d895d0849c74500010000004d8d77e04c3b75107306ff5550ca00344d89f749c746f8030000004d89561049c74608010000004d89264c892c244c89742408e9990000004d89e64983c61049d1ee4f0fb634324e8d3475010000004983fe15741b4d89e64983c6024d89f4483b65187306ff5558ca001ce960ffffff4d8d6fe04c3b6d107306ff5550ca001c4d89ef49c745f8030000004d8955104d89650849c74500010000004d2bdc4983c3014d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e084d89264c892c244c897424084c8b3424ff7424084c8b2c244d8b6d084983fd010f85fe000000488d6424184d8b26498b4e084d8b6e104d8b75004e8d3475010000004983fc01750d493bce75084d89eee9a10000004883f901750f49bed8c8d0f1c27f0000e98c0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d2a030000777a4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4983c41049d1ec4b8d742500498d7e0848d1e9f3a4418066ffbf4c8b2c244d8b6d08488d6424084d89750048c7c001000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff234d8b2e498b4e084d8b76104d8b264e8d2465010000004983fd01750d493bcc75084d89f1e9a40000004883f901750f49b9d8c8d0f1c27f0000e98f0000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b252a0200000f87060200004d89e34e8d0c9d0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca02704d89cf49d1eb4d8959f841c641ff414983ec024bc744a1fc000000004989cc49d1ec4d89214983c51049d1ed4b8d342e498d790848d1e9f3a4418061ffbf4d8b314e8d04750100000048c7c00100000048c7c301000000ff15e50100004c8b6c24184d89ee41ff75104d89f6498b5e18ff15c4010000ff15b60100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000488b1424ff12488d6424084c8b6c24184d8b650849bed8c8d0f1c27f00004d8934244d89ed4c8b34244d8b264d89f6498b4e084d89f64d8b7610488d6424084883f9030f82e1000000488d6424184983c4024883e9024d8b1e4e8d1c5d010000004983fc01750d493bcb75084c89f0e99e0000004883f901750f48b8d8c8d0f1c27f0000e9890000004889c84883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da300000077664d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca02784989c749d1ea4c8950f8c640ff414983eb024ac74498fc000000004989cb49d1eb4c89184983c41049d1ec4b8d3426488d780848d1e9f3a48060ffbf4c89eae97bfaffff48b8f8c7d0f1c27f0000488b5d08ff23488d64241848b808bdd3f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23f4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@14856,1,@1952,@4836,@6784,@6783|272,0,@9487 624,0,@9493 809,0,@9487 872,0,@9493 1153,0,@9493 1255,0,@9493 1415,0,@9487 1436,0,@14854 1457,0,@9487 6783:D3,928|483b65187306ff5558ca09034989c6493bd80f85720100004889d9492bce711048b8d0c6d0f1c27f0000488b5d08ff234883c1014d8b214d89e54e8d1c65010000004983fe010f8c2e0100004883f9010f8c140100004d8d640eff4d3be3761048b82046d1f1c27f0000488b5d08ff234e8d2c6d010000004983fe01750d493bcd75084d89cee9a80000004883f901750f49bed8c8d0f1c27f0000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25cf0200000f878b0000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02524d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004983c61049d1ee4b8d3431498d7d0848d1e9f3a4418065ffbf4d89ee498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348b8f8c7d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff234989dd4983c51049d1ed4f0fb62c294e8d2c6d010000004983fd130f85c00100004889d9492bce711048b8d0c6d0f1c27f0000488b5d08ff234883c1014d8b214d89e54e8d1c65010000004983fe010f8c7c0100004883f9010f8c620100004d8d640eff4d3be3761048b82046d1f1c27f0000488b5d08ff234e8d2c6d010000004983fe01750d493bcd75084d89cee9a80000004883f901750f49bed8c8d0f1c27f0000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2445010000004c3b25340100000f87d90000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a534d89ef49d1eb4d895df841c645ff414983ec024bc744a5fc000000004989cc49d1ec4d8965004983c61049d1ee4b8d3431498d7d0848d1e9f3a4418065ffbf4d89ee41564989de4983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234889d84883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89f3e8f4fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f8c7d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff234883c302711048b8d0c6d0f1c27f0000488b5d08ff234c89f0e977fcfffff4000000000000ffffffffffffff01ffffffffffffff01|@14859,1,@1955|34,0,@9475 98,0,@10364 147,0,@9493 348,0,@9487 364,0,@9446 380,0,@9446 437,0,@9475 501,0,@10364 550,0,@9493 728,0,@9475 758,0,@9475 829,0,@9487 845,0,@9446 861,0,@9446 883,0,@9475 6784:D4,472|483b65187305ff5558cd094883f801750848c7c001000000c3ff30ff70084c8b7424084d8b364a8d0475010000006a016a014989e0ff15b5010000415e415d4983fe017f0f49bcd8c8d0f1c27f0000e9e70000004983fe03750f49bcb0d7d0f1c27f0000e9d20000004983fe01750f49bcd8c8d0f1c27f0000e9bd0000004983fe010f8c930000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d1f01000077534d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004d89f349d1eb4d891c2449c7c301000000eb2a488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b868c8d0f1c27f0000488b5d08ff234d3bf3776f41806424ffbf41544c89eb488b442408e8b6feffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34d89da4983c21049d1ea43c60414204d89da4983c2024d89d3483b65187306ff5558ca0078e962fffffff400ffffffffffffff01|@14857,1,@1953,@6785|71,0,@9493 92,0,@9557 113,0,@9493 269,0,@9487 290,0,@9490 6785:D3,304|483b65187306ff5558ca0901504150f6c3010f85b50000004c8b234c8b73084c8b5c24084d89dd4d3bdc7c6d4c89e8492bc47115488d64241048b8d0c6d0f1c27f0000488b5d08ff234883c0016a016a014c89f34989e0e8a4ffffff415c415e4c8b6c24084983ed014d03e57115488d64241048b8d0c6d0f1c27f0000488b5d08ff23415d4d8965004d89750848c7c0010000004883c408c34d2be57115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c401415d4d8965004d89750848c7c0010000004883c408c3488b44240849c7c61100000048d1f849d1fe489949f7fe4c8d34550100000049c7c5110000004d2bee7115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c501415e4d892e49c746080100000048c7c0010000004883c408c3f40000000000|@14858,1,@1954|59,0,@9475 117,0,@9475 165,0,@9475 255,0,@9475 6786:D4,248|483b65187305ff5558cd095348bae81cd1f1c27f000048c7c303000000ff15ed0000004989c64d8b2e4a8d0c6d010000004883f901750f48b860dcd0f1c27f0000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077604d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400852498d7608488d780948d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01|@14869,1,@1957,@4983|14,0,@10077 57,0,@9607 223,0,@9487 6787:D4,248|483b65187305ff5558cd095348bae81cd1f1c27f000048c7c303000000ff15ed0000004989c64d8b2e4a8d0c6d010000004883f901750f48b860dcd0f1c27f0000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257a00000077604d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400852498d7608488d780948d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01|@14869,1,@1958,@4983|14,0,@10077 57,0,@9607 223,0,@9487 6788:D6,3392|488dbc2448ffffff483b7d187306ff5560ca09035053415041514c8b7424104d8b76f849c1e60849c1ee074983ce0141564c8b4424204d8b70f849c1e60849c1ee074983ce0141564c8b2c244d89ee4983fd017d0a488d642430e93f0900004d89f64d89f54c3b35cc0c00000f8d270900004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642438e9bb0800004d89f64d89f54c3b35550c00000f8da30800004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642440e9370800004d89f64d89f54c3b35de0b00000f8d1f0800004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642448e9b30700004d89f64d89f54c3b35670b00000f8d9b0700004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564c8b6424284d89e64983fc017d0a488d642450e92d0700004d89f64d89f44c3b35ee0a00000f8d150700004d89e34c89d94e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02314d89f749d1eb4d895ef841c646ff404c89f748d1e948c7c001000000f348ab41564d89e44d89e64983fc017d0a488d642458e9a90600004d89f64d89f44c3b35770a00000f8d910600004d89e44c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642460e9250600004d89f64d89f54c3b35000a00000f8d0d0600004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642468e9a10500004d89f64d89f54c3b35890900000f8d890500004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02214d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642470e91d0500004d89f64d89f54c3b35120900000f8d050500004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02014d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab4156ff742438ff742438ff742438ff742420ff74242048c7c001000000488b5c24384c8b4c24484c8b542468ff15060900004c8b6c24484d89ee4983fd017d0a488d642478e9670400004d89f64d89f54c3b35690800000f8d4f0400004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42480000000e9e00300004d89f64d89f54c3b35ef0700000f8dc50300004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42488000000e9560300004d89f64d89f54c3b35750700000f8d3b0300004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42490000000e9cc0200004d89f64d89f54c3b35fb0600000f8db10200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0d488da42498000000e9420200004d89f64c89f34c3b35810600000f8d270200004989dd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415649c7c6010000004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004c8ba424800000004d89660849bc280065f1c27f00004d89264d897500ff3424ff742418ff742430ff742420ff742438ffb42488000000ffb42480000000ff742460ff74247048c7c0010000004c8b8424e00000004c8b8c24b00000004c8b9424a0000000ff15150600004c8b6c24784d89ee4983fd017d0d488da424a0000000e9060100004d89f64d89f54c3b35550500000f8deb0000004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424784d89f54983fe01750f49be4882d1f1c27f0000e9fe0100004d89ed4d89ee4983fd017e654d89f64d89f54c3b35cc0400007d4c4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01e96c010000488da424a8000000eb08488da424a800000048b8d010d3f1c27f0000488b5d08ff23488da424a000000048b8d015d1f1c27f0000488b5d08ff23488da4249800000048b8d015d1f1c27f0000488b5d08ff23488da4249000000048b8d015d1f1c27f0000488b5d08ff23488da4248800000048b8d015d1f1c27f0000488b5d08ff23488da4248000000048b8d015d1f1c27f0000488b5d08ff23488d64247848b8d015d1f1c27f0000488b5d08ff23488d64247048b8d015d1f1c27f0000488b5d08ff23488d64246848b8d015d1f1c27f0000488b5d08ff23488d64246048b8d015d1f1c27f0000488b5d08ff23488d64245848b8d015d1f1c27f0000488b5d08ff23488d64245048b8d015d1f1c27f0000488b5d08ff23488d64244848b8d015d1f1c27f0000488b5d08ff23488d64244048b8d015d1f1c27f0000488b5d08ff23488d64243848b8d015d1f1c27f0000488b5d08ff23488d64243048b8d015d1f1c27f0000488b5d08ff234c8bb424880000004c3b34240f8fce000000488d6424084c8b2c244d89ee418065ffbf4d89f6488d6424084c8bac24800000004d89ec4983fd017517488da4249000000049bd4882d1f1c27f0000e94a0100004d89e44d89e54983fc017e694d89ed4d89ec4c3b2d9e0200007d504d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c401000000e9c5000000488da424a8000000eb08488da424a800000048b8d010d3f1c27f0000488b5d08ff23ff742428ff742438ff742478ff742438ff742470ff742438ffb424d8000000ffb42490000000ffb42488000000ff742460488b442450488b9c24000100004c8b8424d00000004c8b8c24c80000004c8b942488000000ff156e0200004989c64c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e97dfeffff4c8b9c24800000004d3bdc7f24488da42490000000418065ffbf415c4d8934244d896c240848c7c0010000004883c410c34c8b1c244d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81011d1f1c27f0000488b5d08ff234d89db4f8b44a3fc4c8b5c24504d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81011d1f1c27f0000488b5d08ff234d89db4f8b4ca3fc4c8b5c24484d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b81011d1f1c27f0000488b5d08ff234d89db4b8b7ca3fc4c8b9c24980000004d8b53f849c1e20849c1ea074983ca014d3be27218488da424a800000048b89011d1f1c27f0000488b5d08ff234d89db4f8b54a3fc4d8d5fd84c3b5d107306ff5550ca80774d89df49c743f80400000049897b184d8943104d894b084d89134f895ca5fc4d89e34983c3027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89dc483b65187306ff5558ca0070e981fefffff400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15923,1,@2536,@7365,@7381,@7364|1774,0,@6789 1998,0,@10817 2134,0,@13764 2158,0,@10027 2182,0,@10027 2206,0,@10027 2230,0,@10027 2254,0,@10027 2275,0,@10027 2296,0,@10027 2317,0,@10027 2338,0,@10027 2359,0,@10027 2380,0,@10027 2401,0,@10027 2422,0,@10027 2443,0,@10027 2464,0,@10027 2548,0,@10817 2688,0,@13764 2833,0,@9475 2949,0,@9995 3007,0,@9995 3065,0,@9995 3126,0,@9998 3214,0,@9475 6789:D3,1400|483b65187305ff5558cd054c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b204d89e641f6c4010f85da0400004d89f441ff34244d8b74240841ff7424104983ed0241557115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241849bdb86fd1f1c27f0000e9620300004d89ed4983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9150200004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be18cad0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be18cad0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb0c1d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde8c1d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18c2d3f1c27f00004d8975004883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50c2d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b8704cd1f1c27f0000c34d89f54983fe01750b48b880c3d3f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8b0c3d3f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b830c4d3f1c27f0000c3f400|@14907,1,@1962|26,0,@10414 83,0,@9475 117,0,@10678 146,0,@9475 224,0,@10678 253,0,@9475 308,0,@4769 344,0,@9475 399,0,@4769 444,0,@10681 493,0,@10236 537,0,@14884 582,0,@10236 626,0,@10685 714,0,@10236 759,0,@14886 803,0,@10236 848,0,@10685 936,0,@10236 980,0,@14888 1029,0,@10688 1174,0,@10236 1219,0,@14890 1304,0,@10414 1324,0,@14898 1344,0,@10414 1361,0,@14899 1378,0,@10414 1389,0,@14903 6790:D6,672|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284983ec02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415649be38c5d0f0c27f0000498b1648b840c0d3f1c27f0000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f7010000750949c7c603000000eb2b4c3b35dd010000750949c7c603000000eb194c3b35c3010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd78c0d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@14883,1,@1961,@9805,@9803,@9797|26,0,@10414 46,0,@9475 98,0,@4691 111,0,@14873 305,0,@11514 353,0,@10391 398,0,@11357 549,0,@10236 594,0,@14875 6791:D3,32|483b65187305ff5558cd0149beb8c5d0f0c27f0000498b16ff22f40000000000|@12421,1,@1960|13,0,@4699 6792:D16,2968|483b65187306ff5558ca090341504151ff33ff73084883f8010f84bd010000ff74241048bae81cd1f1c27f000048c7c303000000ff15d60b00004989c64d8b2e4a8d0c6d010000004883f901750f49bdd0dbd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d030b00000f87340100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645084c498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b820dad0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d480a000077704d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604303a8060ffbf488b1424ff12488d642408eb2a488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23ff3424f604240175404c8b3424498b064d89f641ff7608488b5c24204c8b442428ff15050a0000488b54242048b8a0d5d0f1c27f0000ff12415d4c892c24483b65187303ff5558ebba488d6424104c8b34244d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e9e5020000909090e9ef030000909090e9f4030000909090e9f9030000909090e92d050000909090e9080700009090904d89f64d89f541ff76104d89ed4d8b75184d89ed41ff75204c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e979000000909090e987000000909090e995000000909090e9a3000000909090e9b1000000909090e9bf000000909090e9cd000000909090e9d8000000909090e9e3000000909090e9ee000000909090e9f9000000909090e904010000909090e90f010000909090488b54241848b820c5d3f1c27f0000ff12e907010000488b54241848b848c5d3f1c27f0000ff12e9f1000000488b54241848b870c5d3f1c27f0000ff12e9db000000488b54241848b890c5d3f1c27f0000ff12e9c5000000488b54241848b8b0c5d3f1c27f0000ff12e9af000000488b54241848b8d0c5d3f1c27f0000ff12e999000000488b54241848b8f0c5d3f1c27f0000ff12e983000000488b54241848b810c6d3f1c27f0000ff12eb70488b54241848b838c6d3f1c27f0000ff12eb5d488b54241848b860c6d3f1c27f0000ff12eb4a488b54241848b880c6d3f1c27f0000ff12eb37488b54241848b8a0c6d3f1c27f0000ff12eb24488b54241848b8c8c6d3f1c27f0000ff12eb11488b54241848b8e8c6d3f1c27f0000ff12ff74241848bae81cd1f1c27f0000488b44241048c7c303000000ff15b40700004989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff158b0700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc381ed1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be08c7d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed0dbd0f1c27f00004c8930ff15ca0600005a4883c428ff22488d6424184d89f54d89ee41ff75084d89f6498b4610ff74241048bae81cd1f1c27f000048c7c303000000ff158a0600004989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff15610600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc381ed1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be20c7d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38c7d3f1c27f00004c8930ff15a00500005a4883c420ff22488d642420488d64241848c7c001000000c3488d64241848c7c001000000c34d89f6498b46084d89f641ff7610ff74241048bae81cd1f1c27f000048c7c303000000ff15490500004989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff15200500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc381ed1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38c7d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0d5d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50c7d3f1c27f00004c8930ff15320400005a4883c420ff22488d6424204d89f6498b4608488d642408ff342448bae81cd1f1c27f000048c7c303000000ff15f80300004989c64d8b2e4e8d246d010000004983fc01750f49bd38c7d3f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156d0300000f874f0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb38c7d3f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a0d5d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d96020000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c410ff22488d642408488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff234d89f6498b4608488d642408ff342448bae81cd1f1c27f000048c7c303000000ff150d0200004989c64d8b2e4e8d246d010000004983fc01750f49bd70c7d3f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b157a0100000f874f0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb70c7d3f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a0d5d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da3000000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c410ff22488d642408488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15043,1,@1964,@4983,@4983,@4836,@4983,@4983,@4836,@4983,@4983,@4836,@4983,@4983,@6793,@4983|37,0,@10077 80,0,@9601 259,0,@9583 441,0,@9487 462,0,@9487 522,0,@9535 790,0,@14909 812,0,@14910 834,0,@14911 856,0,@14912 878,0,@14913 900,0,@14914 922,0,@14915 944,0,@14916 963,0,@14917 982,0,@14918 1001,0,@14919 1020,0,@14920 1039,0,@14921 1058,0,@14922 1074,0,@10077 1107,0,@10077 1165,0,@10085 1213,0,@14923 1301,0,@9601 1353,0,@10077 1381,0,@10077 1439,0,@10085 1487,0,@14924 1575,0,@14925 1650,0,@10077 1678,0,@10077 1736,0,@10085 1785,0,@14925 1829,0,@9535 1917,0,@14926 1963,0,@10077 2006,0,@14925 2144,0,@14925 2213,0,@9535 2394,0,@9487 2415,0,@9487 2446,0,@10077 2489,0,@14927 2627,0,@14927 2696,0,@9535 2877,0,@9487 2898,0,@9487 6793:D72,11680|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e9e2020000909090e951030000909090e93e040000909090e98e040000909090e9a6040000909090e9e9040000909090e978050000909090e9fe050000909090e966060000909090e950070000909090e910080000909090e9e8080000909090e938090000909090e942090000909090e9bf090000909090e9dd090000909090e9cb0a0000909090e95d0c0000909090e9b60c0000909090e9d00c0000909090e9380d0000909090e9630d0000909090e97d0d0000909090e9490e0000909090e9630e0000909090e94a0f0000909090e9b20f0000909090e9c0100000909090e909110000909090e988120000909090e9cf120000909090e978130000909090e976150000909090e9d2160000909090e915170000909090e9f1170000909090e910180000909090e9c1180000909090e90a190000909090e953190000909090e9961a0000909090e9b01a0000909090e9421b0000909090ff7008ff7010ff7018ff7020488b54242848b888c7d3f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44241848c7c303000000ff151a2e00004989c64156f644241801740d4c8b7424184983fe017d1aeb1f4c8b7424184d0fb676ff4e8d3475010000004983fe237407488b442418eb1548b8f814d1f1c27f0000488b5c2418ff15c52d000048bae81cd1f1c27f000048c7c305000000ff15a62d00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca8c7d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8c7d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0c7d3f1c27f00004c8930ff15e52c0000488b1424ff12488d642408488b542420488b442418488b5c2428ff12488b54242848b808c8d3f1c27f0000ff12ff3424e9d9290000ff7008ff7010ff7018488b54242048b888c7d3f1c27f0000ff12488b54242048b8f0c7d3f1c27f0000ff12488b542418488b442408488b5c2420ff12488b54242048b8c0c7d3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b808c8d3f1c27f0000ff12ff3424e9002900004c8b68084d8b750041ff751041ff751841ff75204c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b820c8d3f1c27f0000ff12eb5d488b54242048b838c8d3f1c27f0000ff12eb4a488b54242048b858c8d3f1c27f0000ff12eb37488b54242048b878c8d3f1c27f0000ff12eb24488b54242048b890c8d3f1c27f0000ff12eb11488b54242048b8b0c8d3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b442408488b5c24204c8b442418ff155b2b0000488b54242048b8c0c7d3f1c27f0000ff12488b54241858488d6424185bff22ff7008ff7010488b54241848b8d8c8d3f1c27f0000ff12488b54241848b800c9d3f1c27f0000ff12488b542410488b442408488b5c2418ff12488b54241848b818c9d3f1c27f0000ff12488b54241058488d6424105bff22ff7008ff7010488b54241848b830c9d3f1c27f0000ff12ff742408e9de230000ff7008ff7010488b54241848b850c9d3f1c27f0000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b870c9d3f1c27f0000ff12488b54240858488d6424085bff22ff7008ff7010ff70184c8b7020488b5424204983fe03750c48b888c9d3f1c27f0000eb0a48b8a8c9d3f1c27f0000ff12488b54242048b8c8c9d3f1c27f0000ff12488b542418488b442408488b5c2420ff12488b54242048b8e0c9d3f1c27f0000ff12488b542418488b0424488b5c2420ff12488d642410488b54241048b8f8c9d3f1c27f0000ff12488b54240858488d6424085bff22ff7008ff70104c8b7018ff7020488b5424204983fe03750c48b810cad3f1c27f0000eb1c4983fe05750c48b830cad3f1c27f0000eb0a48b848cad3f1c27f0000ff12488b542418488b442408488b5c2420ff12488b54242048b8c0c7d3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b808c8d3f1c27f0000ff12ff3424e90c220000ff7010ff7018ff7020488b54242048b868cad3f1c27f0000ff12488b542418488b442408488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b542418488b0424488b5c2420ff12488d642410488b54241048b8d0d8d0f1c27f0000ff12488b54240858488d6424085bff22ff7008ff7010ff7018488b54242048b890cad3f1c27f0000ff124c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b8b0cad3f1c27f0000ff12eb5d488b54242048b8c8cad3f1c27f0000ff12eb4a488b54242048b8e0cad3f1c27f0000ff12eb37488b54242048b8f8cad3f1c27f0000ff12eb24488b54242048b810cbd3f1c27f0000ff12eb11488b54242048b81089d3f1c27f0000ff12488b54242048b888d5d0f1c27f0000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b8c0c7d3f1c27f0000ff12488b5424104883c408584883c4085bff224c8b700841ff3641ff760841ff761041ff761841ff7620488b54243048b828cbd3f1c27f0000ff12488b5424304c8b7424104983fe03750c48b848cbd3f1c27f0000eb0a48b860cbd3f1c27f0000ff12488b542428488b442418488b5c2430ff12488b54243048b880cbd3f1c27f0000ff12488b442420488b5c24304c8b442428ff1563270000488b54243048b8c0c7d3f1c27f0000ff12488b542428488b442408488b5c2430ff12488b54243048b898cbd3f1c27f0000ff12488b54242858488d6424285bff224c8b700841ff3641ff760841ff761041ff761841ff7620488b54243048b8b0cbd3f1c27f0000ff124c8b7424104d8b2e4d89ec4983fd03753d4d89f64d8b7608ff742430498b06498b5e0849c7c005000000ff15c2260000488b1424ff12488d642408488b54243048b8b0d7d0f1c27f0000ff12eb614d89f64d89e54983fc057502eb534d89f64983fd0175394d89f6498b4608ff74243048ba901dd2f1c27f0000ff156a260000488b1424ff12488d642408488b54243048b8b0d7d0f1c27f0000ff12eb11488b54243048b8d0cbd3f1c27f0000ff12ff742418e9111b0000ff7008ff7010488b54241848b8f0cbd3f1c27f0000ff12488b54241848b810ccd3f1c27f0000ff12488b542410488b442408488b5c2418ff12488b54241848b828ccd3f1c27f0000ff12488b54241058488d6424105bff22488d6424085a48b840ccd3f1c27f0000ff22ff7008ff7010ff7018488b54242048b860ccd3f1c27f0000ff12488b54242048b8f0c7d3f1c27f0000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b880ccd3f1c27f0000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b898ccd3f1c27f0000ff12488b54240858488d6424085bff22ff7008ff7010ff7018ff7020488b54242848b8b0ccd3f1c27f0000ff12ff742418e9b0160000ff7008ff7010ff7018488b54242048b8d0ccd3f1c27f0000ff124c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242048b8b0cad3f1c27f0000ff12eb5d488b54242048b8c8cad3f1c27f0000ff12eb4a488b54242048b8e0cad3f1c27f0000ff12eb37488b54242048b8f8cad3f1c27f0000ff12eb24488b54242048b810cbd3f1c27f0000ff12eb11488b54242048b81089d3f1c27f0000ff12488b54242048b888d5d0f1c27f0000ff12488b0424488b5c24204c8b442418ff1546240000488d642408488b54241848b8c0c7d3f1c27f0000ff12488b5424104883c408584883c4085bff22ff7008ff7010ff7018ff7020488b54242848b8e8ccd3f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44240848c7c303000000ff15da2300004989c54d8b75004e8d3475010000004983fe01750f48b870d8d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8e2100000f87ee0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408f644241801751b488d6424084c8b742410498b06488b542418488b5c2420ff12eb16488d642408488b54242048b898ddd0f1c27f0000ff12488b54242048b888d8d0f1c27f0000ff12488b0424488b5c24204c8b442418ff15ad220000488d642408488b54241848b8c0c7d3f1c27f0000ff12488b542410584883c4105bff22488d64243848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010488b54241848b810cdd3f1c27f0000ff12ff74241848bae81cd1f1c27f0000488b44240848c7c303000000ff1536220000488b1424ff12488d642410488b54241048b8c0c7d3f1c27f0000ff12488b54240858488d6424085bff22ff7008488b54241048b830cdd3f1c27f0000ff12488b54240858488d6424085bff22ff7010ff7018ff7020488b54242048b850cdd3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b442408488b5c24204c8b442418ff1591210000488b54242048b8c0c7d3f1c27f0000ff12488b54241858488d6424185bff22ff7008488b54241048b870cdd3f1c27f0000ff12488b54241048b898cdd3f1c27f0000ff12488b54240858488d6424085bff22ff7008488b54241048b8b0cdd3f1c27f0000ff12488b54240858488d6424085bff22ff7008ff7010488b54241848b8d8cdd3f1c27f0000ff12488b442408488b5c24184c8b442410ff15e9200000488b54241848b8c0c7d3f1c27f0000ff124c8b2c244d89ee41ff75004d89f641ff7608488b54242848b878dcd0f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44241048c7c303000000ff158d200000488b1424ff12488d642408488b54242848b870d8d0f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44240848c7c303000000ff1549200000488b1424ff12488d6424305a48b888d8d0f1c27f0000ff22ff7008488b54241048b8f8cdd3f1c27f0000ff12488b54240858488d6424085bff22488d642408ff7008ff7010488b54241048b810ced3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff15cb1f0000488b1424ff12488d642408488b54241048b8c0c7d3f1c27f0000ff124c8b2c244d89ee41ff75004d89f641ff7608488b54242048b878dcd0f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44241048c7c303000000ff15641f0000488b1424ff12488d642408488b54242048b870d8d0f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44240848c7c303000000ff15201f0000488b1424ff12488d6424285a48b888d8d0f1c27f0000ff22488d642408ff7008ff7010488b54241048b838ced3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff15c41e0000488b1424ff12488d6424084c8b34244983fe03488d642410750d5a48b858ced3f1c27f0000ff22488d64240848c7c001000000c3ff7008ff7010488b54241848b878ced3f1c27f0000ff12488b542410488b442408488b5c2418ff12ff74241848bae81cd1f1c27f0000488b44240848c7c303000000ff15401e00004989c64d8b2e4a8d0c6d010000004883f901750f48b8d0d8d0f1c27f0000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25451c000077644d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640082c498d7608488d780948d1e9f3a48060ffbf5a4883c420ff22488d642408488d64242848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010488b54241848b8a0ced3f1c27f0000ff12488b542410488b442408488b5c2418ff12488b54241848b8d0d8d0f1c27f0000ff1258488d642408488b5c24084158488d642408ff25191d00004c8b7008ff7010ff7018ff70204c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e959000000909090e967000000909090e975000000909090e980000000909090e98b000000909090e996000000909090e9a1000000909090e9ac000000909090e9b7000000909090488b54242048b8c0ced3f1c27f0000ff12e9af000000488b54242048b8e0ced3f1c27f0000ff12e999000000488b54242048b800cfd3f1c27f0000ff12e983000000488b54242048b820cfd3f1c27f0000ff12eb70488b54242048b840cfd3f1c27f0000ff12eb5d488b54242048b868cfd3f1c27f0000ff12eb4a488b54242048b888cfd3f1c27f0000ff12eb37488b54242048b8b0cfd3f1c27f0000ff12eb24488b54242048b8d0cfd3f1c27f0000ff12eb11488b54242048b8f0cfd3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b442408488b5c24204c8b442418ff15a91b0000488b54242048b8c0c7d3f1c27f0000ff12488b54241858488d6424185bff22ff7008ff7010488b54241848b810d0d3f1c27f0000ff12488b0424488b5c24184c8b442410ff15571b0000488d642408488b54241048b8c0c7d3f1c27f0000ff12488b54240858488d6424085bff224c8b68084d8b750841ff751041ff751841ff75204983fe017513488b54242048b830d0d3f1c27f0000ff12eb2a4983fe057513488b54242048b850d0d3f1c27f0000ff12eb11488b54242048b870d0d3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b0424488b5c24204c8b442418ff159e1a0000488d642408488b54241848b8c0c7d3f1c27f0000ff12488b54241058488d6424105bff224c8b680841ff75004d8b750841ff751041ff751841ff75204c8d2d080000004f8d6c35ff41ffe5eb0aeb1beb2ceb3deb4eeb5f488b54242848b890d0d3f1c27f0000ff12eb5d488b54242848b8b0d0d3f1c27f0000ff12eb4a488b54242848b8d0d0d3f1c27f0000ff12eb37488b54242848b8f0d0d3f1c27f0000ff12eb24488b54242848b810d1d3f1c27f0000ff12eb11488b54242848b830d1d3f1c27f0000ff12488b0424488b5c24284c8b442420ff15bb190000488d642408488b54242048b8c0c7d3f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44240848c7c303000000ff157d1900004989c54d8b75004e8d3475010000004983fe01750f48b870d8d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da91700000f87aa0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408488b542418488b442410488b5c2420ff12488b54242048b888d8d0f1c27f0000ff12488b442408488b5c24204883c41841584883c408ff2571180000488d64243048b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010ff7018ff7020488b54242848b850d1d3f1c27f0000ff12488b442410488b5c24284c8b442420ff1522180000488b54242848b8c0c7d3f1c27f0000ff124c8b6c24084d89ee41ff75004d89f641ff7608488b54243848b878dcd0f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44241048c7c303000000ff15c5170000488b1424ff12488d642408488b54243848b870d8d0f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff1581170000488b1424ff12488d642418488b54242848b888d8d0f1c27f0000ff12488b54242848b8b8d8d0f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44242048c7c303000000ff152c170000488b1424ff12488d642408488b54242848b870d8d0f1c27f0000ff12ff74242848bae81cd1f1c27f0000488b44240848c7c303000000ff15e8160000488b1424ff12488d6424305a48b888d8d0f1c27f0000ff22ff7008ff7010488b54241848b870d1d3f1c27f0000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b8c0c7d3f1c27f0000ff12488b54240858488d6424085bff224c8b700841ff3641ff760841ff761041ff761841ff762041ff7628488b54243848b890d1d3f1c27f0000ff124c8b7424184d8b2e4d89ec4983fd03753d4d89f64d8b7608ff742438498b06498b5e0849c7c005000000ff1521160000488b1424ff12488d642408488b54243848b8b0d7d0f1c27f0000ff12eb614d89f64d89e54983fc057502eb534d89f64983fd0175394d89f6498b4608ff74243848ba901dd2f1c27f0000ff15c9150000488b1424ff12488d642408488b54243848b8b0d7d0f1c27f0000ff12eb11488b54243848b8d0cbd3f1c27f0000ff12ff742428e9d8030000ff7008488b54241048b8b0d1d3f1c27f0000ff1258488b5c24084158488d642408ff2562150000ff7008ff7010ff7018ff7020488b54242848b8d0d1d3f1c27f0000ff12488b5424284c8b34244983fe03488d642408750c48b848cbd3f1c27f0000eb0a48b860cbd3f1c27f0000ff12488b542418488b0424488b5c2420ff12488d642408488b54241848b8c0c7d3f1c27f0000ff12488b542410488b442408488b5c2418ff12f604240175264c8b342441ff36488b54242048b8e8d1d3f1c27f0000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3ff7008ff7010488b54241848b800d2d3f1c27f0000ff12488b542410488b442408488b5c2418ff12488b54241848b8d0d8d0f1c27f0000ff1258488d642408488b5c24084158488d642408ff2550140000ff7008ff7010488b54241848b820d2d3f1c27f0000ff12488b542410488b442408488b5c2418ff12488b54241848b8d0d8d0f1c27f0000ff1258488d642408488b5c24084158488d642408ff25f71300004c8b7008ff7010ff7018ff70204c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e949000000909090e954000000909090e95f000000909090e96a000000909090e975000000909090e980000000909090e98b000000909090488b54242048b840d2d3f1c27f0000ff12e983000000488b54242048b860d2d3f1c27f0000ff12eb70488b54242048b880d2d3f1c27f0000ff12eb5d488b54242048b8a8d2d3f1c27f0000ff12eb4a488b54242048b8c8d2d3f1c27f0000ff12eb37488b54242048b8e8d2d3f1c27f0000ff12eb24488b54242048b808d3d3f1c27f0000ff12eb11488b54242048b828d3d3f1c27f0000ff12488b542418488b442410488b5c2420ff12488b54242048b8d0d8d0f1c27f0000ff12488b442408488b5c24204c8b442418ff15c3120000488b54242048b8c0c7d3f1c27f0000ff12488b54241858488d6424185bff22ff7008488b54241048b848d3d3f1c27f0000ff12488b54240858488d6424085bff22ff70084c8b7010ff70184983fe077513488b54241848b870d3d3f1c27f0000ff12eb434983fe057513488b54241848b890d3d3f1c27f0000ff12eb2a4983fe037513488b54241848b8b0d3d3f1c27f0000ff12eb11488b54241848b8d0d3d3f1c27f0000ff12488b542410488b0424488b5c2418ff12488d642408488b54241048b8c0c7d3f1c27f0000ff12488b54240858488d6424085bff22ff7008ff7010488b54241848b8f0d3d3f1c27f0000ff12488b0424488b5c24184c8b442410ff15b5110000488d642408488b54241048b8c0c7d3f1c27f0000ff12488b54240858488d6424085bff22f60424010f85dd0200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424504d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151c11000048bae81cd1f1c27f000048c7c305000000ff15fd1000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b259a0f000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64246048b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15e30f000048bae81cd1f1c27f000048c7c305000000ff15c40f00004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25690e0000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64246048b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15dc0e0000488b1424ff12488d642408488b54245048b868dad0f1c27f0000ff12488b0424488b5c24504c8b442448ff15a40e0000488d642408488b54244848b8b0d7d0f1c27f0000ff12415d4c892c24483b65187303ff5558e919fdffff488d642408ff742410f60424010f858b0000004c8b2c244d8b75004d89ed41ff750841ff36498b4608ff74245048bae81cd1f1c27f000048c7c303000000ff152e0e0000488b1424ff12488d642408488b54245048b8a884d3f1c27f0000ff12488b0424488b5c24504c8b442448ff15f60d0000488d642408488b54244848b8b0d7d0f1c27f0000ff12415d4c892c24483b65187303ff5558e96bffffff488d642408488b54243848b840d4d3f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44241048c7c303000000ff158e0d0000488b1424ff12488d642408488b54243848b858d4d3f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff154a0d0000488b1424ff12488d642418488b54242848b878d4d3f1c27f0000ff12488b5424204883c410584883c4105bff22f6042401756e4c8b2c244d8b75004d89ed41ff750841ff36498b4608488b542438488b5c2440ff12488b54244048b868dad0f1c27f0000ff12488b0424488b5c24404c8b442438ff15c80c0000488d642408488b54243848b8b0d7d0f1c27f0000ff12415d4c892c24483b65187303ff5558eb8c488d642408ff742408f60424010f85f60100004c8b2c244d8b75004d89ed41ff750841ff3641ff76084d8b761041ff3641ff7608488b54245848b878dcd0f1c27f0000ff12ff74245848bae81cd1f1c27f0000488b44241048c7c303000000ff15340c0000488b1424ff12488d642408488b54245848b870d8d0f1c27f0000ff12ff74245848bae81cd1f1c27f0000488b44240848c7c303000000ff15f00b0000488b1424ff12488d642418488b54244848b888d8d0f1c27f0000ff12ff74244848bae81cd1f1c27f0000488b44240848c7c303000000ff15ac0b00004989c64d8b2e4a8d0c6d010000004883f901750f48b898d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25990a00000f87be0000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400828c6400973c6400a70498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8b0d4d3f1c27f0000ff12488b442408488b5c24484c8b442440ff15ba0a0000488b54244848b8b0d7d0f1c27f0000ff124c8b6c24104c896c2418483b65187303ff55584883c418e915feffff488d64245848b8f8c7d0f1c27f0000488b5d08ff23488d642408f6042401751d4c8b342441ff36488b54243048b8c8d4d3f1c27f0000ff12ff3424eb3e488d642410f604240175264c8b342441ff36488b54242048b878d4d3f1c27f0000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3f604240175594c8b3424498b064d89f641ff76084c8b34244983fe017513488d642428488b542410488b5c2418ff12eb33488b542438488b5c2440ff12488b54244048b8d0d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558eba1488d642420e95efffffff60424010f85dd0200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424484d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153409000048bae81cd1f1c27f000048c7c305000000ff15150900004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b251208000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64245848b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15fb07000048bae81cd1f1c27f000048c7c305000000ff15dc0700004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25e1060000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64245848b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15f4060000488b1424ff12488d642408488b54244848b868dad0f1c27f0000ff12488b0424488b5c24484c8b442440ff15bc060000488d642408488b54244048b8b0d7d0f1c27f0000ff12415d4c892c24483b65187303ff5558e919fdffff488d642408ff3424f6042401755f4c8b2c244d89ee41ff75004d89f641ff7608488b54244848b8e8d4d3f1c27f0000ff12488b442408488b5c24484c8b442440ff1544060000488b54244848b8b0d7d0f1c27f0000ff12415d488d6424084c892c24483b65187303ff5558eb9b488d642410488b54242848b800d5d3f1c27f0000ff12488b542420488b442418488b5c2428ff12488b54242848b808c8d3f1c27f0000ff12ff3424f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424305a5bff22488b542430488b5c2438ff12488b54243848b8d0d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558ebab488d64243848c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424285a5bff22488b542428488b5c2430ff12488b54243048b8d0d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558ebab488d64243048c7c001000000c3f60424010f85d90200004c8b2c244d8b75004d89ed41ff750841ff364d8b7608ff7424304d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15a904000048bae81cd1f1c27f000048c7c305000000ff158a0400004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af03000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64244048b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff157003000048bae81cd1f1c27f000048c7c305000000ff15510300004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257e020000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64244048b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff1569020000488b1424ff12488d642408488b54243048b868dad0f1c27f0000ff12488b542428488b0424488b5c2430ff12488d642408488b54242848b8b0d7d0f1c27f0000ff12415d4c892c24483b65187303ff5558e91dfdffff488d642408ff3424f60424010f85b30000004c8b2c244d8b75004d89ed41ff750841ff3641ff7608488b54243848b878dcd0f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44241048c7c303000000ff15b2010000488b1424ff12488d642408488b54243848b870d8d0f1c27f0000ff12ff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff156e010000488b1424ff12488d642418488b54242848b888d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558e943ffffff488d64242848c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424285a5bff22488b542428488b5c2430ff12488b54243048b8d0d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558ebab488d64243048c7c001000000c3f6042401754f4c8b3424498b064d89f641ff76084c8b34244983fe017509488d6424305a5bff22488b542430488b5c2438ff12488b54243848b8d0d8d0f1c27f0000ff12415d4c892c24483b65187303ff5558ebab488d64243848c7c001000000c3f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15045,1,@1965,@4983,@4983,@6795,@4983,@4933,@4983,@4933,@6794,@6794,@6795,@4983,@4933,@4983,@4933,@6794,@4983,@4983,@4983,@6794,@4983,@4983,@6794,@4983,@6794,@6795,@4983,@4933,@4983,@4933,@6794,@6794,@6794,@6794,@6794,@5509,@6795,@4983,@4983,@4983,@4983,@6794,@6796,@4983,@6794,@6794,@6794,@6794,@6794,@4983,@4983,@4983,@4983,@4983,@4983,@4983,@6794,@6794,@4983,@6796,@4983,@6794,@5509,@6795,@6794,@6794,@4836,@4983,@4933,@4983|404,0,@14928 420,0,@10077 504,0,@10021 525,0,@10077 578,0,@14929 626,0,@14931 714,0,@14932 766,0,@14933 800,0,@14928 817,0,@14932 851,0,@14930 885,0,@14933 957,0,@14934 976,0,@14935 995,0,@14936 1014,0,@14937 1033,0,@14938 1052,0,@14939 1086,0,@9569 1124,0,@14930 1161,0,@14940 1178,0,@14941 1212,0,@14942 1249,0,@14943 1281,0,@14944 1319,0,@14945 1369,0,@14946 1381,0,@14947 1398,0,@14948 1432,0,@14949 1470,0,@14950 1520,0,@14951 1538,0,@14952 1550,0,@14953 1584,0,@14930 1618,0,@14933 1652,0,@14954 1686,0,@9569 1724,0,@9569 1764,0,@14955 1813,0,@14956 1832,0,@14957 1851,0,@14958 1870,0,@14959 1889,0,@14960 1908,0,@14569 1925,0,@9534 1963,0,@14930 2020,0,@14961 2048,0,@14962 2060,0,@14963 2094,0,@14964 2132,0,@14930 2166,0,@14965 2220,0,@14966 2296,0,@9557 2344,0,@11943 2376,0,@9557 2395,0,@14967 2427,0,@14968 2444,0,@14969 2478,0,@14970 2510,0,@14971 2536,0,@14972 2553,0,@14932 2591,0,@14973 2629,0,@14974 2672,0,@14975 2707,0,@14976 2756,0,@14956 2775,0,@14957 2794,0,@14958 2813,0,@14959 2832,0,@14960 2851,0,@14569 2868,0,@9534 2910,0,@14930 2956,0,@14977 2972,0,@10077 3021,0,@9565 3244,0,@9620 3261,0,@9566 3303,0,@14930 3333,0,@9487 3360,0,@14978 3376,0,@10077 3420,0,@14930 3454,0,@14979 3494,0,@14980 3528,0,@9569 3566,0,@14930 3600,0,@14981 3617,0,@14982 3651,0,@14983 3688,0,@14984 3726,0,@14930 3761,0,@9608 3777,0,@10077 3821,0,@9565 3837,0,@10077 3877,0,@9566 3897,0,@14985 3939,0,@14986 3955,0,@10077 3999,0,@14930 4034,0,@9608 4050,0,@10077 4094,0,@9565 4110,0,@10077 4150,0,@9566 4178,0,@14987 4194,0,@10077 4249,0,@14988 4285,0,@14989 4318,0,@10077 4366,0,@9569 4536,0,@9487 4563,0,@14990 4597,0,@9569 4746,0,@14991 4768,0,@14992 4790,0,@14993 4812,0,@14994 4831,0,@14995 4850,0,@14996 4869,0,@14997 4888,0,@14998 4907,0,@14999 4926,0,@15000 4960,0,@9569 4998,0,@14930 5035,0,@15001 5077,0,@14930 5134,0,@15002 5159,0,@15003 5178,0,@15004 5212,0,@9569 5254,0,@14930 5336,0,@15005 5355,0,@15006 5374,0,@15007 5393,0,@15008 5412,0,@15009 5431,0,@15010 5473,0,@14930 5489,0,@10077 5538,0,@9565 5739,0,@9566 5782,0,@9487 5815,0,@15011 5853,0,@14930 5889,0,@9608 5905,0,@10077 5949,0,@9565 5965,0,@10077 6009,0,@9566 6026,0,@9568 6042,0,@10077 6086,0,@9565 6102,0,@10077 6142,0,@9566 6165,0,@15012 6203,0,@14930 6261,0,@15013 6337,0,@9557 6385,0,@11943 6417,0,@9557 6436,0,@14967 6465,0,@15014 6513,0,@15015 6545,0,@14962 6557,0,@14963 6595,0,@14930 6642,0,@15016 6692,0,@15017 6726,0,@9569 6773,0,@15018 6807,0,@9569 6940,0,@15019 6962,0,@15020 6981,0,@15021 7000,0,@15022 7019,0,@15023 7038,0,@15024 7057,0,@15025 7076,0,@15026 7110,0,@9569 7148,0,@14930 7182,0,@15027 7229,0,@15028 7254,0,@15029 7279,0,@15030 7298,0,@15031 7336,0,@14930 7373,0,@15032 7415,0,@14930 7534,0,@10021 7550,0,@10077 7593,0,@15033 7764,0,@9487 7831,0,@10021 7847,0,@10077 7890,0,@15034 8054,0,@9487 8110,0,@9586 8152,0,@9557 8229,0,@10077 8268,0,@14528 8310,0,@9557 8352,0,@15035 8368,0,@10077 8412,0,@15036 8428,0,@10077 8472,0,@15037 8546,0,@9586 8588,0,@9557 8674,0,@9608 8690,0,@10077 8734,0,@9565 8750,0,@10077 8794,0,@9566 8810,0,@10077 8858,0,@15038 9039,0,@15039 9077,0,@9557 9122,0,@9487 9161,0,@15040 9201,0,@15037 9306,0,@9569 9438,0,@10021 9454,0,@10077 9497,0,@15033 9668,0,@9487 9735,0,@10021 9751,0,@10077 9794,0,@15034 9958,0,@9487 10014,0,@9586 10056,0,@9557 10125,0,@15041 10163,0,@9557 10207,0,@15042 10241,0,@14933 10312,0,@9569 10410,0,@9569 10545,0,@10021 10561,0,@10077 10604,0,@15033 10775,0,@9487 10842,0,@10021 10858,0,@10077 10901,0,@15034 11065,0,@9487 11121,0,@9586 11159,0,@9557 11236,0,@9608 11252,0,@10077 11296,0,@9565 11312,0,@10077 11356,0,@9566 11457,0,@9569 11555,0,@9569 6794:D14,1176|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e94b000000909090e944010000909090e96b010000909090e9dc020000909090e9dc020000909090488d642408488b4008ff342448ba901dd2f1c27f0000ff15930400005a4883c408ff22488d642410488d642408ff7008ff7010488b54241048b8b0dad0f1c27f0000ff124c8b6c24084d89ee41ff75004d89f641ff7608488b54242048b878dcd0f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44241048c7c303000000ff151f040000488b1424ff12488d642408488b54242048b870d8d0f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44240848c7c303000000ff15db030000488b1424ff12488d642418488b54241048b888d8d0f1c27f0000ff12488b54241048b880a5d1f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff1586030000488b1424ff12488d6424185a48b888d8d0f1c27f0000ff22488d642408488b4008ff342448bae81cd1f1c27f000048c7c303000000ff15430300005a4883c408ff22488d642410ff7008ff7010ff7018488b4020ff74242048bae81cd1f1c27f000048c7c303000000ff15070300004989c54d8b75004e8d3475010000004983fe01750f48b870d8d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6b0200000f87e20000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430288060ffbf488b1424ff12488d642408488b542418488b442410488b5c2420ff12488b54242048b888d8d0f1c27f0000ff12488b0424488b5c24204c8b442418ff1501020000488d642408f604240175264c8b342441ff36488b54242048b8e8d1d3f1c27f0000ff12488b54241858488d6424185bff22488d64242048c7c001000000c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488b40085a5bff22ff7008ff70104c8b7018ff702041ff3641ff7608488b54243048b878dcd0f1c27f0000ff12ff74243048bae81cd1f1c27f0000488b44241048c7c303000000ff1559010000488b1424ff12488d642408488b54243048b870d8d0f1c27f0000ff12ff74243048bae81cd1f1c27f0000488b44240848c7c303000000ff1515010000488b1424ff12488d642418488b54242048b888d8d0f1c27f0000ff12488b54242048b840d5d3f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44241048c7c303000000ff15c0000000488b1424ff12488d642408488b54242048b880a5d1f1c27f0000ff12ff74242048bae81cd1f1c27f0000488b44240848c7c303000000ff157c000000488b1424ff12488d642418488b54241048b888d8d0f1c27f0000ff12f604240175264c8b342441ff36488b54241848b8e8d1d3f1c27f0000ff12488b54241058488d6424105bff22488d64241848c7c001000000c3f4000000000000ffffffffffffff01|@15085,1,@1968,@4983,@4983,@4983,@4983,@6796,@4983,@4983,@4983,@4983,@4983,@5509|95,0,@11943 139,0,@9589 175,0,@9608 191,0,@10077 235,0,@9565 251,0,@10077 295,0,@9566 312,0,@11027 328,0,@10077 368,0,@9566 392,0,@10077 444,0,@10077 488,0,@9565 689,0,@9566 744,0,@15016 788,0,@9487 837,0,@9608 853,0,@10077 897,0,@9565 913,0,@10077 957,0,@9566 974,0,@15044 990,0,@10077 1034,0,@11027 1050,0,@10077 1094,0,@9566 1124,0,@15016 6795:D7,2256|483b65187306ff5558ca09014883fb030f85240600004983f8070f85b50100004883c010711048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15b30800004989c64d8b2e4a8d0c6d010000004883f901750f49bd60dfd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d280800000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8d8dfd0f1c27f0000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7107000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430778060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234983f8050f85e70000004883c010711048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15ec0600004989c64d8b2e4a8d0c6d010000004883f901750b48b860dfd0f1c27f0000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b255d06000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400872498d7608488d780948d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff234983f8030f85b50100004883c010711048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15f30500004989c64d8b2e4a8d0c6d010000004883f901750f49bd60dfd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d600500000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b810ded0f1c27f0000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da904000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430648060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234883c010711048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15360400004989c64d8b2e4a8d0c6d010000004883f901750f49bd60dfd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d9b0300000f871f0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750b48b8e0ddd0f1c27f0000c34d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de402000077644d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430628060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234989c64983fe110f833f0200004c8d35080000004d8d7486fc41ffe6e93b000000909090e971000000909090e9a7000000909090e9dd000000909090e913010000909090e949010000909090e97f010000909090e9b50100009090904983f807750b48b880d5d3f1c27f0000c34983f805750b48b898d5d3f1c27f0000c34983f803750b48b8b0d5d3f1c27f0000c348b8c8d5d3f1c27f0000c34983f807750b48b8e0d5d3f1c27f0000c34983f805750b48b8f8d5d3f1c27f0000c34983f803750b48b810d6d3f1c27f0000c348b828d6d3f1c27f0000c34983f807750b48b840d6d3f1c27f0000c34983f805750b48b858d6d3f1c27f0000c34983f803750b48b870d6d3f1c27f0000c348b888d6d3f1c27f0000c34983f807750b48b8a0d6d3f1c27f0000c34983f805750b48b8b8d6d3f1c27f0000c34983f803750b48b8d0d6d3f1c27f0000c348b8e8d6d3f1c27f0000c34983f807750b48b800d7d3f1c27f0000c34983f805750b48b818d7d3f1c27f0000c34983f803750b48b830d7d3f1c27f0000c348b848d7d3f1c27f0000c34983f807750b48b860d7d3f1c27f0000c34983f805750b48b878d7d3f1c27f0000c34983f803750b48b890d7d3f1c27f0000c348b8a8d7d3f1c27f0000c34983f807750b48b8c0d7d3f1c27f0000c34983f805750b48b8d8d7d3f1c27f0000c34983f803750b48b8f0d7d3f1c27f0000c348b808d8d3f1c27f0000c34983f807750b48b820d8d3f1c27f0000c34983f805750b48b838d8d3f1c27f0000c34983f803750b48b850d8d3f1c27f0000c348b868d8d3f1c27f0000c348b880d8d3f1c27f0000c3f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15079,1,@1966,@4983,@4983,@4983,@4983|40,0,@9475 56,0,@10077 99,0,@9639 278,0,@9644 439,0,@9487 455,0,@9487 487,0,@9475 503,0,@10077 546,0,@9639 696,0,@9487 728,0,@9475 744,0,@10077 787,0,@9639 966,0,@9625 1127,0,@9487 1143,0,@9487 1165,0,@9475 1181,0,@10077 1224,0,@9639 1403,0,@9623 1564,0,@9487 1580,0,@9487 1694,0,@15046 1711,0,@15047 1728,0,@15048 1739,0,@15049 1756,0,@15050 1773,0,@15051 1790,0,@15052 1801,0,@15053 1818,0,@15054 1835,0,@15055 1852,0,@15056 1863,0,@15057 1880,0,@15058 1897,0,@15059 1914,0,@15060 1925,0,@15061 1942,0,@15062 1959,0,@15063 1976,0,@15064 1987,0,@15065 2004,0,@15066 2021,0,@15067 2038,0,@15068 2049,0,@15069 2066,0,@15070 2083,0,@15071 2100,0,@15072 2111,0,@15073 2128,0,@15074 2145,0,@15075 2162,0,@15076 2173,0,@15077 2184,0,@15078 6796:D3,288|483b65187306ff5558ca09015341504c8b284d89ee4983fd077536ff7008488b54241048b838ddd0f1c27f0000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8c8d8d3f1c27f0000ff224d89f54983fe057536ff7008488b54241048b838ddd0f1c27f0000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8e0d8d3f1c27f0000ff224d89ee4983fd037536ff7008488b54241048b838ddd0f1c27f0000ff12488b542408488b0424488b5c2410ff12488d6424105a48b8f8d8d3f1c27f0000ff224983fe017536ff7008488b54241048b838ddd0f1c27f0000ff12488b542408488b0424488b5c2410ff12488d6424105a48b810d9d3f1c27f0000ff22488d64241048c7c001000000c3f400000000000000|@15084,1,@1967|37,0,@9616 71,0,@15080 100,0,@9616 134,0,@15081 163,0,@9616 197,0,@15082 223,0,@9616 257,0,@15083 6797:D6,464|483b65187305ff5558cd095048bae0bcd3f1c27f00004889d848bb90bed3f1c27f0000ff15cf0100004989c641564c8b7424084d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b742408720d488d64242048c7c001000000c34889c04c8b7424184d8b7486fc41ff36ff74241848bae81cd1f1c27f000048c7c303000000ff15630100004989c54d8b75004e8d3475010000004983fe01750f48b888d5d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de70000000f87c50000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430098060ffbf488b1424ff12488d642408488b54241848b878d9d3f1c27f0000ff12488b042448c7c3290000004c8b442418ff156c000000488d642408488b54241048b8a0d5d0f1c27f0000ff124c8b2c244983c5024c892c24483b65187303ff5558e99bfeffff488d64243048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01|@15087,1,@1969,@6798,@4983,@6780|14,0,@14852 27,0,@14861 120,0,@10077 164,0,@9534 348,0,@15086 392,0,@9535 435,0,@9487 6798:D5,464|483b65187306ff5558ca09014989c653415041f6c6010f859d010000498b0641ff76084c8b34244983fe017547488d6424084c8b7424084983fe0175115a48b86047d1f1c27f00004883c408ff22ff342448bae81cd1f1c27f000048c7c303000000ff15880100005a4883c410ff22488d6424104c8b7424104983fe017516488d6424085a48b86047d1f1c27f00004883c408ff22ff74240848bae81cd1f1c27f000048c7c303000000ff15380100004989c54d8b75004e8d3475010000004983fe01750f48b8d0d8d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc40000000f879a0000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604302c8060ffbf488b1424ff12488d642408488b5c24104883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff235841584883c408e95cfeffff488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241048c7c001000000c3f400ffffffffffffff01|@15088,1,@1970,@4983,@4983|64,0,@10374 83,0,@10077 135,0,@10374 155,0,@10077 199,0,@9569 394,0,@9475 427,0,@9487 6799:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@1971| 6800:D15,2832|488dbc2458ffffff483b7d187306ff5560ca090750534150415141524c8b7424204d8b76f849c1e60849c1ee074983ce0141564c8b6c24504d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb06465f1c27f00004d892e41564c8b6c24584d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd186565f1c27f00004d892e41564c8b6c24604d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda06565f1c27f00004d892e41564c8b6c24684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd286665f1c27f00004d892e415649c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004c8b6424604c8b5c24684d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849bcb06665f1c27f00004d89264d89750049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d89ee4983fd017d0a488d642458e99a0000004d89f64d89f54c3b354f0900000f8d820000004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c0fffffffff348ab415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff41415649c7c611000000eb15488d64245848b8d015d1f1c27f0000488b5d08ff234983fe0175074c8b742448eb2c4d89f44983ec0249d1ec4c8b2c2443c6442500004d89f54983ed024d89ee483b65187306ff5558ca0040ebc741f6c60175454d8b264d8b6e084d8b1c244c3b1dd908000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9500700004d8b364d8b2e4c3b2d7508000075064d8b7610eb15488d64246848b87810d1f1c27f0000488b5d08ff234983fe03750949c7c603000000eb0749c7c60100000041564c8bb424900000004d8b6ef849c1e50849c1ed074983cd014983fd017d0a488d642470e9a20500004c3b2d990700000f8d900500004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424484d89f54983fe017d0a488d642478e9260500004d89ed4d89ee4c3b2d240700000f8d0e0500004d89f64c89f14a8d1cb50400000048f7db4903df483b5d107205493bdf7205ff5550cd024989df49d1ee4c8973f8c643ff404889df48d1e948c7c001000000f348ab48c7c0010000004c8b4424704c8b0c24ff153e0700004c8bb424a00000004983fe03750c48bb30ded3f1c27f0000eb0748c7c3010000004883fb017507488b442468eb0b488b442468ff15fd060000ff15ef0600004989c44c8b7424504d89f54983fe290f8ce60100004d89ed4983ed014d6bedf87115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b5c24204d8b134d89d64d89db4983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89db4d89334d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89560849c706310000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049c743080500000049c7030f0000004d8d67d84c3b65107306ff5550ca006c4d89e749c74424f80400000049c7442418050000004d8954241049c74424081100000049c70424110000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049b948ded3f1c27f00004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c89304d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049bcb0ded3f1c27f00004d8966204d896e1849bd58a4d3f1c27f00004d896e1049bde0ded3f1c27f00004d896e0849c70637000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054989c6eb09ff15f40400004989c6e9340100004c8b6c24204d8b5d004d89de4d89ed4983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c74500310000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89661049c746080300000049c7060f0000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418050000004d895c241049c74424081100000049c70424110000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba08dfd3f1c27f00004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442468488b5c24184c8b442460ff15990300004989c641564c8b6c24584d89ee4983fd017d0d488da42488000000e9010100004d89f64d89f54c3b350c0300000f8de60000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488da42490000000eb7a4d89f64d89f54c3b35950200007d634d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8bb424900000004d8b76f849c1e60849c1ee074983ce0141566a01eb5a488da4249000000048b8d015d1f1c27f0000488b5d08ff23488da4248800000048b8d015d1f1c27f0000488b5d08ff23488d64247848b8d015d1f1c27f0000488b5d08ff23488d64247048b8d015d1f1c27f0000488b5d08ff234c8b34244c89f04c3b742408727d488d6424104c8bb424b8000000ff742438ff742448ffb424a00000004156ff742468ffb42480000000ffb42480000000ff742458ff742468ff742478ffb424b000000048b8b05fd1f1c27f000048bba85bd1f1c27f00004c8b4424704c8b4c24604c8b542458ff15bc0100004989c6488d64241048c7c001000000eb354889c04c8bb424a0000000498b5c86fc4c8b442410ff15880100004c8b2c244983c5024c892c24483b65187303ff5558e940ffffff41f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424304d8b065b4c8b8c24880000004c8bb424800000004c89b424a80000004881c4a8000000ff25f200000041f6c60175454d8b264d8b6e084d8b1c244c3b1dd200000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64246848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d6800000075094d8b7610e955f8ffff488d64246848b87810d1f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15126,1,@1978,@4648,@4648,@6808,@7003,@7004,@7065,@7066,@7067,@7068,@6807,@4648,@4648|89,0,@6801 140,0,@6802 191,0,@6803 242,0,@6804 345,0,@6805 584,0,@10027 745,0,@10158 786,0,@9991 1090,0,@15116 1178,0,@9475 1223,0,@9475 1415,0,@15117 1530,0,@15120 1548,0,@14742 1562,0,@15122 1672,0,@9475 1866,0,@15124 2242,0,@10027 2266,0,@10027 2287,0,@10027 2308,0,@10027 2405,0,@10542 2415,0,@10515 2725,0,@10198 2770,0,@9991 6801:D3,64|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff23498b4486fcc3f40000|@15089,1,@1972|41,0,@9998 6802:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b7486fc4d8b2e4983fd037505498b4608c348b890dad3f1c27f0000488b5d08ff23f40000000000|@13717,1,@1973|41,0,@9998 76,0,@15090 6803:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b7486fc4d8b2e4983fd017505498b4608c348b850dbd3f1c27f0000488b5d08ff23f40000000000|@13717,1,@1974|41,0,@9998 76,0,@15094 6804:D3,96|483b65187305ff5558cd054c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b7486fc4d8b2e4983fd057505498b4608c348b8c0dbd3f1c27f0000488b5d08ff23f40000000000|@13717,1,@1975|41,0,@9998 76,0,@15097 6805:D9,1408|483b65187305ff5558cd054989d54c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b184d89de4d8b1b4983fb010f85d00200004d8b5e084983ec02711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891e41564d8b7510498b164d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d8b6d084d896e0849bd886c65f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3582040000750949c7c603000000eb2b4c3b3568040000750949c7c603000000eb194c3b354e040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50dcd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd30ddd3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@15115,1,@1977,@9805,@9803,@9797,@9805,@9803,@9797|29,0,@10414 69,0,@9475 163,0,@6806 414,0,@11514 462,0,@10391 507,0,@11357 658,0,@10236 703,0,@15101 788,0,@10414 809,0,@9475 859,0,@4699 1042,0,@11514 1090,0,@10391 1135,0,@11357 1286,0,@10236 1331,0,@15108 6806:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@15100,1,@1976| 6807:D4,504|483b65187306ff5558ca090353415041514c8b7424104d8b66f84d89e549c1e40849c1ec074983cc01493bc47215488d64241848b81011d1f1c27f0000488b5d08ff234d89f64d8b6486fc4983fc03750d488d64241848c7c001000000c34d89f649c1e50849c1ed074983cd01493bc57215488d64241848b80017d1f1c27f0000488b5d08ff234d89f64c89f349c74486fc030000004c8b4424084d8b70f849c1e60849c1ee074983ce01493bc67215488d64241848b89011d1f1c27f0000488b5d08ff234d89c04d8b6c80fc4d8b750041ff75084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e95c000000909090e964000000909090e95e000000909090e95e000000909090e987000000909090e98f000000909090498b461041ff76204c8b4c2410e8cffeffff488b0424488b5c24204c8b4424184c8b4c2410e8b7feffff488d642408eb5b498b46104c8b4c2408e8a2feffffeb4beb494d8b76084156eb4d498b460841ff76104c8b4c2410e884feffff488b0424488b5c24204c8b4424184c8b4c2410e86cfeffff488d642408eb10498b46084c8b4c2408e857feffffeb00585b4883c410ff2559000000f604240175334c8b3424498b064d89f641ff7608488b5c24284c8b4424204c8b4c2418e821feffff415d4c892c24483b65187303ff5558ebc7488d642408ebb4f4|@15771,1,@2240,@7069|53,0,@9995 121,0,@10034 183,0,@9998 6808:D7,400|483b65187306ff5558ca09035053415041514c8b6c2410498b45004d89ed4d89ee41ff75084d89f64d8b76204983fe03756f483b05870100007502eb334c8b304e8d3475010000004983fe01753449bed8c8d0f1c27f0000488d7008498d7e0848c7c100000000483bc9f3a67402eb12488b142448b898dad0f1c27f0000ff12eb06488b1424ff12488b142448b880dfd3f1c27f0000ff12ff742420e9a7000000488d6424086a016a014c8b7424204d8b76184983fe03750a6a016a01ff742438eb274c8b7424284c8934244c8b7424184c89742408584158488b5c241041594883c418ff25ce0000006a016a01488b44241048c7c30100000049c7c0010000004989e1ff15a6000000415e415d4983fd0375124d89f54c892c24483b65187303ff5558ebc4488d6424084c8934244c8b7424284c89742408415d415e4c892c244c89742408eb8ef6042401752a4c8b3424498b064d89f641ff7608488b5c2410ff1541000000415d4c892c24483b65187303ff5558ebd0488d6424085a48b8a0d5d0f1c27f0000ff12e917fffffff4|@15139,1,@1979,@6810,@6816,@6809,@9493|80,0,@9493 118,0,@9588 142,0,@15127 384,0,@9535 6809:D17,2544|488dbc2430ffffff483b7d187306ff5560ca09035341514c8b6c24084d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76206a016a014c89c34989e0ff15220a0000ff3424ff7424104c8b6c2448498b45004d89ed4d89ee41ff75084d89f64d8b76204983fe03756f483b05ec0900007502eb334c8b304e8d3475010000004983fe01753449bed8c8d0f1c27f0000488d7008498d7e0848c7c100000000483bc9f3a67402eb12488b142448b898dad0f1c27f0000ff12eb06488b1424ff12488b142448b880dfd3f1c27f0000ff12ff742410e9b8080000488d642408ff7424086a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15500900004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e48c7c3010000004883c40841f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca08684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0840ebba6a016a01488b4424184c8b4424104989e1ff15c5080000ff3424ff742410ff742428ff7424106a016a01f6442418010f85eb000000f6442410010f85e00000004c8b6c24184d8b75004d89ed41ff75084c8b6424184d8b2c244d89e441ff7424084d8b65004a8d1c6501000000f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dbeb1b48b8f814d1f1c27f000041564155ff152e080000415d415e4989c341f6c30174554c8b6424184d89e04f8d641cff41544c89eb4c89f04c8b4c2418ff15f90700004989c24c8b6c24104c8b642408415b488d6424104c8914244c895c24084c896424104c896c2418483b65187303ff5558e922ffffff488da424a000000048b80815d1f1c27f0000488b5d08ff23ff34244c8b2c2449c7c60100000041f6c501754f4d8b5d004d8b65084d8b5b084d8b1b4983fb0175234d89f34983c3027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff23eb034d89f34d89de4d89e5483b65187306ff5558ca0060ebab4156488b4424304883c01049c7c61100000048d1e849d1ee4833d249f7f64c8d3445010000004c8b64240849c7c50100000041f6c401754b4d8b14244d8b5c24084d8b52084d8b024d89c14983f80775094d89ea4983c202eb154d89ca4983fa0975094d89ea4983c202eb034d89ea4d89d54d89dc483b65187306ff5558ca0070ebaf4f8d742eff41564c8b34244c8b6c24084f8d742eff4983c6084d89f44e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00404d89ef49d1ec4d8965f841c645ff4141554e8d34f5f9ffffff49c7c5010000004d3bee73274d89eb49d1eb4c8b242443c6041c004d89ec4983c4024d89e5483b65187306ff5558ca0060ebd449c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b74245041f6c601751f4d8b2e4d8b66084d8b5d004e8d1c5d0100000049c7c201000000e99e04000048b898dfd3f1c27f000048c7c301000000ff15ca0500004989c441f6c40175134d8b1c2449c7c5010000004d89e6e91f03000049bed8c8d0f1c27f00004d8b2e4e8d2c6d0100000049c7c4010000004d3be572204c8b2c244d8b75004983c60e4983e6f14d89ed4d897500ff742420e9850000004d89e34983c31049d1eb4f0fb61c1e4c8b14244d8b024c8b4c2408498b71f848c1e60848c1ee074883ce01488d34f5f9ffffff4c3bc6733549d1e84d89c947881c014d89d24d8b1a4983c3024d89d24d891a4d89e34983c3024d89dc483b65187306ff5558ca0070e96effffff488da424b800000048b8a8dfd3f1c27f0000488b5d08ff23f604240175374c8b2c244d8b75004d89ed41ff7508498b06498b5e084c8b4424104c8b4c2418ff15b4040000415d4c892c24483b65187303ff5558ebc3488d6424084c8b34244d8b36488d64240849c1ee034983ce014c3b7424080f85500100004c8b7424084983c6064c8b6c24104c89e84f8d742eff4a8d1cf5f9ffffff4889c04883c0067118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff2349c7c0110000004c8b0c24ff1527040000488b0424ff15150400004989c641564c8b1c244d8b73f849c1e60849c1ee074983ce014c3b7424107718488da424b800000048b840e0d3f1c27f0000488b5d08ff234c8ba424a00000004d89db4d89de4c8b5424104d89d54f896493fc4d89ed4d89eb4983c5024d89f64d8b66f849c1e40849c1ec074983cc014d3be57718488da424b800000048b840e0d3f1c27f0000488b5d08ff234d89f64d89f44bc744aefc030000004d89db4d89de4983c3044d89e44d8b6c24f849c1e50849c1ed074983cd014d3beb7718488da424b800000048b840e0d3f1c27f0000488b5d08ff234c8bac24900000004d89e44f896c9cfc4d89f64983c606ff7424204156eb18488da424b000000048b898e0d3f1c27f0000488b5d08ff23f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15d90200004989c4415d4c8924244c896c2408483b65187303ff5558ebc1488d6424104c8bb424880000004983fe037530488b8424b0000000488b1c244c8b8424a8000000ff158b020000488b94249800000048b850e1d3f1c27f0000ff12eb00584881c4b0000000ff255f02000041f6c60175394d8b4e084d89ea4983c2027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc14983fd010f8caa0000004983fd03751449be30c9d0f1c27f00004f8b749efce9e40000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dab010000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb30488da424b800000048b8f8c7d0f1c27f0000488b5d08ff23488da424b800000048b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe99ffbffff4d3bd372144d89e6483b65187306ff5558ca0040e924fbffff4d89d14983c11049d1e94f0fb64c0d004c8b0424498b30488b7c2408488b4ff848c1e10848c1e9074883c901488d0ccdf9ffffff483bf1733548d1ee4889ff44880c374d89c04d8b084983c1024d89c04d89084d89d14983c1024d89ca483b65187306ff5558ca007ce979ffffff488da424b800000048b8a8dfd3f1c27f0000488b5d08ff23f6042401752a4c8b3424498b064d89f641ff7608488b5c2410ff154d000000415d4c892c24483b65187303ff5558ebd0488d6424085a48b8a0d5d0f1c27f0000ff12e906f7fffff400000000ffffffffffffff01|@15278,1,@1988,@6810,@6819,@6820,@6885,@6887,@6888,@6891,@6894,@6898,@4933,@6899,@6914,@9493,@6818|147,0,@9493 185,0,@9588 209,0,@15127 528,0,@10021 654,0,@10022 728,0,@9475 1121,0,@15128 1172,0,@9493 1354,0,@15129 1514,0,@9475 1597,0,@15132 1682,0,@15132 1756,0,@15132 1811,0,@15134 1943,0,@15138 1998,0,@9475 2050,0,@9496 2198,0,@9487 2222,0,@9490 2446,0,@15129 2516,0,@9535 6810:D117,13064|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9bb010000909090e936020000909090e972020000909090e92a040000909090e9db050000909090e954080000909090e9cf080000909090e99f090000909090e9040a0000909090e9ca0b0000909090e9280c0000909090e98b0c0000909090e9370d0000909090e9f60d0000909090e9c30f0000909090e908110000909090e93d110000909090e9b4120000909090e92a130000909090e961130000909090e997130000909090e9f9140000909090e9a5150000909090e9ec150000909090e9c7160000909090e913170000909090e916170000909090e9e6170000909090e92b1a0000909090e9a61a0000909090e92b1b0000909090e9671b0000909090e99a1c0000909090e9da1d0000909090e9161e0000909090e9521e0000909090e93e1f0000909090e94b1f0000909090e9df1f0000909090e93f200000909090e97b200000909090e972210000909090e9f7210000909090e904220000909090e975220000909090e982220000909090e9ec220000909090e96e230000909090e9f0230000909090e961240000909090e91a250000909090e956250000909090e992250000909090e9bd260000909090e9872b0000909090e90f2d0000909090ff7008ff7010488b54241048b898e1d3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff1593340000488b1424ff12488d642408488b54241048b8c0c7d3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff154f340000488b1424ff12488d642418e9aa2f0000ff7008488b54240848b8b8e1d3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1503340000488b1424ff12488d642410e9662f00004c8b6808ff7010ff7018ff70204c8b7424184c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc507fd3f1c27f0000eb3a49bc8888d3f1c27f0000eb2e49bce0e1d3f1c27f0000eb2249bc7088d3f1c27f0000eb1649bce07fd3f1c27f0000eb0a49bc5888d3f1c27f00004d8b2c244e8d2c6d010000004983fd01750f48b8f8e1d3f1c27f0000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15972f00000f87e10000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c604204d4d89ec49d1ec42c64420014349d1ed42c6442802208060ffbf4c89f2ff12488b44241048bb58a4d3f1c27f00004c8b4424084c8b4c2418ff1581320000488b54241848b8b0d7d0f1c27f0000ff12ff74241848bae81cd1f1c27f0000488b44240848c7c303000000ff1548320000488b1424ff12488d642420e9bb2d0000488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b6808ff7010ff7018ff70204c8b7424184c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc507fd3f1c27f0000eb3a49bc8888d3f1c27f0000eb2e49bce0e1d3f1c27f0000eb2249bc7088d3f1c27f0000eb1649bce07fd3f1c27f0000eb0a49bc5888d3f1c27f00004d8b2c244e8d2c6d010000004983fd01750f48b8f8e1d3f1c27f0000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15cf2d00000f87da0000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c604204d4d89ec49d1ec42c64420014349d1ed42c6442802208060ffbf4c89f2ff12488b44241048bb58a4d3f1c27f00004c8b4424084c8b4c2418ff15b1300000488b54241848b810e2d3f1c27f0000ff12ff74241848ba901dd2f1c27f0000488b442408ff157f300000488b1424ff12488d642420e9022c0000488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b6808ff7010ff70184c8b7424104c8d25080000004f8d642cff41ffe4eb0aeb14eb1eeb28eb32eb3c49bc507fd3f1c27f0000eb3a49bc8888d3f1c27f0000eb2e49bce0e1d3f1c27f0000eb2249bc7088d3f1c27f0000eb1649bce07fd3f1c27f0000eb0a49bc5888d3f1c27f00004d8b2c244e8d2c6d010000004983fd01750f48b828e2d3f1c27f0000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15112c00000f87a50100004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c60420524d89ec49d1ec42c64420015249d1ed42c6442802208060ffbf4c89f2ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff15ea2e0000488b1424ff12488d642408488b54241048b810e2d3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba901dd2f1c27f0000ff15962e0000488b1424ff12488d642410e9a30000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae81cd1f1c27f000048c7c303000000ff154b2e0000488b1424ff12488d642410eb634d89f64983fd03752b4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff15082e00004883c408eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff15d62d0000488b1424ff12488d642410e981290000488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010488b54241048b840e2d3f1c27f0000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff15722d0000488b1424ff12488d642408488b54241048b860e2d3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff152e2d0000488b1424ff12488d642418e9e9280000ff7008488b54240848b878e2d3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0375304d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15cf2c0000488b1424ff12488d642408eb7f4d89f64d89e54983fc057517488d642408488b142448b898e2d3f1c27f0000ff12eb5c4d89f64983fd01753e4d89f641ff7608488b54241048b8b8e2d3f1c27f0000ff12ff74241048ba901dd2f1c27f0000488b442408ff155d2c0000488b1424ff12488d642418eb15488d642408488b142448b87881d3f1c27f0000ff12e911280000ff7008488b54240848b8d0e2d3f1c27f0000ff124c8b2c244d89ee4983fd057517488d642408488b142448b8e8e2d3f1c27f0000ff12eb304d89f64983fe01488d6424087512488b142448b810e3d3f1c27f0000ff12eb10488b142448b830e3d3f1c27f0000ff12e9a42700004c8b7008ff7010ff7018488b5424104c8d2d080000004f8d6cb5fc41ffe5e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909048b858e3d3f1c27f0000e9a000000048b878e3d3f1c27f0000e99100000048b898e3d3f1c27f0000e98200000048b8b8e3d3f1c27f0000eb7648b8d8e3d3f1c27f0000eb6a48b800e4d3f1c27f0000eb5e48b818e4d3f1c27f0000eb5248b838e4d3f1c27f0000eb4648b858e4d3f1c27f0000eb3a48b878e4d3f1c27f0000eb2e48b898e4d3f1c27f0000eb2248b8b8e4d3f1c27f0000eb1648b8d8e4d3f1c27f0000eb0a48b8f8e4d3f1c27f0000ff12488b54241048b818e5d3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff15512a0000488b1424ff12488d6424084c8b2c244d89ee4983fd037517488d642410488b142448b830e5d3f1c27f0000ff12eb2a4d89f64983fe05488d6424087517488d642408488b142448b850e5d3f1c27f0000ff12eb05488d642408e9d6250000ff7008ff70104c8b7018488b5424104983fe03750c48b870e5d3f1c27f0000eb0a48b890e5d3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff12488b44240848bb58a4d3f1c27f00004c8b04244c8b4c2410ff158f290000488d642410e970250000ff70084c8b7010488b5424084983fe03750c48b870e5d3f1c27f0000eb0a48b890e5d3f1c27f0000ff12488b54240848b8b0d7d0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1522290000488b1424ff12488d642410e9052500004c8b7008ff7010488b5424084c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b0e5d3f1c27f0000eb5248b8c8e5d3f1c27f0000eb4648b8e8e5d3f1c27f0000eb3a48b808e6d3f1c27f0000eb2e48b820e6d3f1c27f0000eb2248b840e6d3f1c27f0000eb1648b860e6d3f1c27f0000eb0a48b880e6d3f1c27f0000ff12ff74240848ba901dd2f1c27f0000488b442408ff1566280000488b1424ff12488d642410e9512400004c8b7008ff7010ff7018488b5424104c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b0e5d3f1c27f0000eb5248b8c8e5d3f1c27f0000eb4648b8e8e5d3f1c27f0000eb3a48b808e6d3f1c27f0000eb2e48b820e6d3f1c27f0000eb2248b840e6d3f1c27f0000eb1648b860e6d3f1c27f0000eb0a48b880e6d3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff12488b44240848bb58a4d3f1c27f00004c8b04244c8b4c2410ff1591270000488d642410e98a2300004c8b7008ff7010488b5424084c8d2d080000004f8d6c35ff41ffe5eb0eeb18eb22eb2ceb36eb40eb4aeb5448b8b0e5d3f1c27f0000eb5248b8c8e5d3f1c27f0000eb4648b8e8e5d3f1c27f0000eb3a48b808e6d3f1c27f0000eb2e48b820e6d3f1c27f0000eb2248b840e6d3f1c27f0000eb1648b860e6d3f1c27f0000eb0a48b880e6d3f1c27f0000ff12488b54240848b8b0d7d0f1c27f0000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff159726000048bae81cd1f1c27f000048c7c305000000ff15782600004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2515230000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e9ca210000488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008488b54240848b8a8e6d3f1c27f0000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff153a25000048bae81cd1f1c27f000048c7c305000000ff151b2500004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0210000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e97d200000488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008488b54240848b8c0e6d3f1c27f0000ff12ff74240848bad8e6d3f1c27f0000488b442408ff1510240000488b1424ff12488d642410e92b200000ff7008ff7010488b54241048b8c0e6d3f1c27f0000ff12ff742410f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff159523000048bae81cd1f1c27f000048c7c305000000ff15762300004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e9920000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b252b2000000f87970000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d6424084c8b34244983fe03488d6424087517488d642408488b142448b820e8d3f1c27f0000ff12eb05488d642408e9c11e0000488d64242048b8f8c7d0f1c27f0000488b5d08ff23ff70084c8b70104983fe037537488b54240848b838e8d3f1c27f0000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff1527220000eb35488b54240848b858e8d3f1c27f0000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff15e8210000e92e1e0000ff7008ff7010488b54241048b878e8d3f1c27f0000ff12488b44240848bb58a4d3f1c27f00004c8b04244c8b4c2410ff15a6210000488d642410e9ef1d0000488b142448b898e8d3f1c27f0000ff12ff342448c7c00100000048c7c30100000049c7c005000000ff1566210000488b1424ff12488d642408e9b11d00004c8b7008ff70104983fe037513488b54240848b8b8e8d3f1c27f0000ff12eb11488b54240848b8e0e8d3f1c27f0000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15d120000048bae81cd1f1c27f000048c7c305000000ff15b22000004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258f1d0000776c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbf488b1424ff12488d642410e95c1c0000488d64241848b8f8c7d0f1c27f0000488b5d08ff234c8b7008ff70104c8b68184983fd0375504983fe037513488b54240848b800e9d3f1c27f0000ff12eb11488b54240848b828e9d3f1c27f0000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff15751f0000eb4e4983fe037513488b54240848b850e9d3f1c27f0000ff12eb11488b54240848b878e9d3f1c27f0000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424084c8b0c24ff151d1f0000e9931b00004c8b7008488b14244983fe07750c48b8a0e9d3f1c27f0000eb2e4983fe05750c48b8c0e9d3f1c27f0000eb1c4983fe01750c48b8e0e9d3f1c27f0000eb0a48b8f8e9d3f1c27f0000ff12e9441b0000ff7008ff70104c8b701841ff36488b54241848b818ead3f1c27f0000ff12ff7424184c8b742418498b064d89f6498b5e0849c7c005000000ff15831e0000488b1424ff12488d642408488b54241848b838ead3f1c27f0000ff12ff7424184c8b742410498b064d89f6498b5e0849c7c005000000ff153f1e0000488b1424ff12488d6424084c8b34244983fe03488d642418750c48bb50ead3f1c27f0000eb0a48bb68ead3f1c27f000049be18e07f0bc37f0000498b06ff15f41d000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff15cb1d0000e9611a0000ff7008488b54240848b8d0dbd0f1c27f0000ff12ff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff158a1d0000488b1424ff12488d642410488b142448b820dad0f1c27f0000ff12e90d1a00004c8b70084156e90f1a0000ff7008488b54240848b880ead3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0375304d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15101d0000488b1424ff12488d642408eb7f4d89f64d89e54983fc057517488d642408488b142448b898e2d3f1c27f0000ff12eb5c4d89f64983fd01753e4d89f641ff7608488b54241048b8b8e2d3f1c27f0000ff12ff74241048ba901dd2f1c27f0000488b442408ff159e1c0000488b1424ff12488d642418eb15488d642408488b142448b87881d3f1c27f0000ff12e92a190000ff7008ff7010ff7018ff7020488b54242048b8a0ead3f1c27f0000ff12f644241801753e4c8b7424184d8b36ff742420498b06498b5e0849c7c005000000ff152b1c0000488b1424ff12488d642408488b54242048b840d5d3f1c27f0000ff12eb00ff74242048bae81cd1f1c27f0000488b44241048c7c303000000ff15e51b0000488b1424ff12488d6424084c8b7424104d8b264d89e54983fc0775594d89f641ff7608488b54242848b840d5d3f1c27f0000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15891b0000488b1424ff12488d642410488b54242048b8c0ead3f1c27f0000ff12e9150100004d89f64d89ec4983fd0575594d89f641ff7608488b54242848b840d5d3f1c27f0000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff151c1b0000488b1424ff12488d642410488b54242048b8d8ead3f1c27f0000ff12e9b00000004d89f64d89e54983fc0375564d89f641ff7608488b54242848b840d5d3f1c27f0000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15af1a0000488b1424ff12488d642410488b54242048b8f0ead3f1c27f0000ff12eb4e4d89f64983fd0175454d89f641ff7608488b54242848b840d5d3f1c27f0000ff12ff7424284c8b742408498b064d89f6498b5e0849c7c005000000ff15481a0000488b1424ff12488d642410eb00488b54242048b8c0c7d3f1c27f0000ff12ff7424204c8b742408498b064d89f6498b5e0849c7c005000000ff15021a0000488b1424ff12488d642428e9dd160000ff7008ff7010488b54241048b808ebd3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff15b3190000488b1424ff12488d642408488b54241048b8203ed1f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff156f190000488b1424ff12488d642418e95a160000ff7010ff7018488b54241048b83084d3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff150f190000488b1424ff12488d642408488b54241048b810e2d3f1c27f0000ff124c8b3424498b064d89f6498b5e084d89f64d8b4610488d6424104c8b0c24ff15c7180000e9cd150000ff7008488b54240848b830ebd3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1586180000488b1424ff12488d642410e989150000ff7008ff7010488b54241048b858ebd3f1c27f0000ff12ff7424104c8b742410498b064d89f6498b5e0849c7c005000000ff1537180000488b1424ff12488d642408488b54241048b810e2d3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba901dd2f1c27f0000ff15e3170000488b1424ff12488d642410e9a30000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae81cd1f1c27f000048c7c303000000ff1598170000488b1424ff12488d642410eb634d89f64983fd03752b4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff15551700004883c408eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff1523170000488b1424ff12488d642410e94e140000ff7008ff7010488b54241048b870ebd3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba901dd2f1c27f0000ff15b3160000488b1424ff12488d642408e99f0000004d89f64d89e54983fc0575344d89f6498b4608488d642408ff74240848bae81cd1f1c27f000048c7c303000000ff1568160000488b1424ff12488d642408eb5f4d89f64983fd0375274d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff1525160000eb2f4d89f64d8b7608488d642408ff742408498b06498b5e0849c7c005000000ff15f7150000488b1424ff12488d642408488b54240848b890ebd3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15b3150000488b1424ff12488d642410e906130000ff7008488b54240848b8a8ebd3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1567150000488b1424ff12488d642410e9c2120000ff7008488b54240848b8c8ebd3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff151b150000488b1424ff12488d642410e97e120000ff7008488b54240848b8e0ebd3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd01752f4d89f6498b4608488d642408ff342448ba901dd2f1c27f0000ff15c0140000488b1424ff12488d642408e99c0000004d89f64d89e54983fc0575334d89f6498b4608488d642408ff342448bae81cd1f1c27f000048c7c303000000ff1576140000488b1424ff12488d642408eb5d4d89f64983fd0375264d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b0c24ff1534140000eb2e4d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff1507140000488b1424ff12488d642408e98a110000488b142448b8f8ebd3f1c27f0000ff12e975110000ff7008488b54240848b818ecd3f1c27f0000ff12488b5424084c8b2c244d89ee4983fd097511488d64240848b830ecd3f1c27f0000eb5e4d89f64d89f54983fe077511488d64240848b850ecd3f1c27f0000eb414d89ed4d89ee4983fd057511488d64240848b870ecd3f1c27f0000eb244d89f64983fe03488d642408750c48b890ecd3f1c27f0000eb0a48b8b0ecd3f1c27f0000ff12e9d9100000ff7008ff7010488b54241048b8d0ecd3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44241048c7c303000000ff1507130000488b1424ff12488d6424084c8b34244983fe03488d6424107512488b142448b858ced3f1c27f0000ff12eb00e971100000ff7008488b54240848b8f0ecd3f1c27f0000ff12ff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff159a120000488b1424ff12488d642410e92d100000ff7008ff70104c8b7018488b5424104983fe01750c48b818edd3f1c27f0000eb1c4983fe05750c48b840edd3f1c27f0000eb0a48b868edd3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff1512120000488b1424ff12488d642410488b54240848b880cbd3f1c27f0000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15a211000048bae81cd1f1c27f000048c7c305000000ff1583110000488b1424ff12488d642410e92e0f0000ff70084c8b7010488b5424084983fe01750c48b818edd3f1c27f0000eb1c4983fe05750c48b840edd3f1c27f0000eb0a48b868edd3f1c27f0000ff12488b54240848b8b0d7d0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15fe100000488b1424ff12488d642410488b142448b890edd3f1c27f0000ff12e9a10e0000488b142448b8a8edd3f1c27f0000ff12e98c0e0000ff7008ff7010488b54241048b8d0edd3f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff1589100000488b54241048b810e2d3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff1550100000488b1424ff12488d642418e9130e0000488b142448b8f8edd3f1c27f0000ff12e9fe0d0000ff7008ff7010488b54241048b818eed3f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15eb0f0000488b54241048b810e2d3f1c27f0000ff12ff74241048ba901dd2f1c27f0000488b442408ff15b90f0000488b1424ff12488d642418e98c0d0000ff7010ff7018488b54241048b87884d3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15580f0000488b54241048b810e2d3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c001000000ff151f0f0000488b1424ff12488d642418e9020d0000ff7010ff7018488b54241048b840eed3f1c27f0000ff12488b54241048b8b0d7d0f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15be0e0000488b54241048b810e2d3f1c27f0000ff12ff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15850e0000488b1424ff12488d642418e9780c0000ff7008ff7010488b54241048b860eed3f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15350e0000488b54241048b810e2d3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff15fc0d0000488b1424ff12488d642418e9ff0b0000ff7008ff7010ff7018488b54241848b888eed3f1c27f0000ff12488b44241048bb58a4d3f1c27f00004c8b04244c8b4c2418ff15ac0d0000488d642408488b54241048b8a8eed3f1c27f0000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15420d000048bae81cd1f1c27f000048c7c305000000ff15230d0000488b1424ff12488d642418e93e0b0000ff7008488b54240848b8c0eed3f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15d70c0000488b1424ff12488d642410e9fa0a0000ff7008488b54240848b8e0eed3f1c27f0000ff12ff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff158b0c0000488b1424ff12488d642410e9b60a0000ff7008ff7010488b54241048b800efd3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff153c0c0000488b1424ff12488d642410488b54240848b818efd3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd01752f4d89f6498b4608488d642408ff342448ba901dd2f1c27f0000ff15e90b0000488b1424ff12488d642408e99c0000004d89f64d89e54983fc0575334d89f6498b4608488d642408ff342448bae81cd1f1c27f000048c7c303000000ff159f0b0000488b1424ff12488d642408eb5d4d89f64983fd0375264d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b0c24ff155d0b0000eb2e4d89f64d8b7608488d642408ff3424498b06498b5e0849c7c005000000ff15300b0000488b1424ff12488d642408e9830900004c8b6808ff7010ff70184c8b7424104c8d25080000004f8d642cff41ffe4eb12eb1ceb26eb30eb3aeb44eb4eeb58eb62eb6c49bc30efd3f1c27f0000eb6a49bc48efd3f1c27f0000eb5e49bc60efd3f1c27f0000eb5249bc78efd3f1c27f0000eb4649bc90efd3f1c27f0000eb3a49bcb8efd3f1c27f0000eb2e49bcd0efd3f1c27f0000eb2249bcf0efd3f1c27f0000eb1649bc08f0d3f1c27f0000eb0a49bc20f0d3f1c27f00004d8b2c244e8d2c6d010000004983fd01750f48b838f0d3f1c27f0000e9b20000004d89eb4983c3064c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15470900000f87be0300004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c5104d89ec49d1ec42c60420524d89ec49d1ec42c64420014d49d1ed42c6442802208060ffbf4c89f2ff12ff742410f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff154c09000048bae81cd1f1c27f000048c7c305000000ff152d0900004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25020800000f876c0200004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b810e2d3f1c27f0000ff124c8b34244d8b2e4d89ec4983fd0175304d89f6498b4608488d642408ff74240848ba901dd2f1c27f0000ff1520080000488b1424ff12488d642410e9960100004d89f64d89e54983fc0575374d89f6498b4608488d642408ff74240848bae81cd1f1c27f000048c7c303000000ff15d5070000488b1424ff12488d642410e9530100004d89f64983fd03752e4d89f6498b46084d89f6498b5e104d89f64d8b4618488d6424084c8b4c2408ff158f0700004883c408e91c0100004d89f6498b5e08488d642408ff742408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153907000048bae81cd1f1c27f000048c7c305000000ff151a0700004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b250f06000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642410e9f0040000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff7010488b54241048b850f0d3f1c27f0000ff12ff7424104c8b742408498b064d89f6498b5e0849c7c005000000ff15d7050000488b1424ff12488d642410488b54240848b8c0c7d3f1c27f0000ff12ff742408f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff156705000048bae81cd1f1c27f000048c7c305000000ff15480500004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b254d04000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642410e936030000488d64241848b8f8c7d0f1c27f0000488b5d08ff23ff7008ff70104c8b70184983fe030f8588010000488b54241048b870f0d3f1c27f0000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15f503000048bae81cd1f1c27f000048c7c305000000ff15d60300004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25e30200000f87a60000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b8c0c7d3f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15d80200004883c410e983010000488d64242048b8f8c7d0f1c27f0000488b5d08ff23488b54241048b890f0d3f1c27f0000ff12ff742410f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff155502000048bae81cd1f1c27f000048c7c305000000ff15360200004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25530100000f87a30000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54241048b8c0c7d3f1c27f0000ff124c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2410ff15380100004883c410eb15488d64242048b8f8c7d0f1c27f0000488b5d08ff235a48b8a0d5d0f1c27f0000ff22f604240175754c8b2c244d89ee41ff75004d89f641ff7608488b54241848b8e0eed3f1c27f0000ff12ff74241848bae81cd1f1c27f0000488b44241048c7c303000000ff15bf000000488b1424ff12488d642408488b54241848b8a0d5d0f1c27f0000ff12415d488d6424084c892c24483b65187303ff5558eb85488d642408e96efffffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15267,1,@1984,@4983,@6815,@4983,@4933,@6815,@4983,@4933,@4983,@4933,@6795,@4983,@4933,@6815,@4983,@5509,@4983,@4933,@6795,@6815,@4983,@5509,@6795,@4983,@6795,@4983,@4933,@6815,@6795,@6815,@4983,@6815,@6795,@6815,@5509,@6815,@4983,@6815,@6795,@4983,@4933,@6795,@4983,@4983,@6795,@6815,@4983,@5509,@6795,@6795,@6795,@6795,@6815,@4983,@5509,@6795,@6815,@4983,@5509,@6795,@6795,@6815,@6795,@6795,@4983,@6795,@6795,@6795,@6795,@6795,@4983,@6795,@5509,@6795,@4983,@4846,@4851,@6795,@6795,@6815,@6815,@4983,@4933,@6795,@6815,@6815,@6815,@4983,@4933,@6811,@4983,@4933,@4983,@4933,@6815,@5509,@6795,@6815,@4983,@5509,@6795,@6795,@6795,@6795,@6815,@4983,@5509,@6795,@5509,@6815,@4983,@6815,@6795,@6795,@4983|491,0,@15140 507,0,@10077 551,0,@14930 619,0,@15141 724,0,@14475 736,0,@14564 748,0,@15142 760,0,@14563 772,0,@14481 784,0,@14562 812,0,@15143 1015,0,@14742 1046,0,@9557 1062,0,@10077 1111,0,@9487 1172,0,@14475 1184,0,@14564 1196,0,@15142 1208,0,@14563 1220,0,@14481 1232,0,@14562 1260,0,@15143 1463,0,@14742 1494,0,@15144 1510,0,@11943 1552,0,@9487 1610,0,@14475 1622,0,@14564 1634,0,@15142 1646,0,@14563 1658,0,@14481 1670,0,@14562 1698,0,@15145 1944,0,@15144 1988,0,@11943 2048,0,@10077 2193,0,@9487 2220,0,@15146 2280,0,@15147 2348,0,@15148 2445,0,@15149 2480,0,@15150 2496,0,@11943 2539,0,@14496 2564,0,@15151 2598,0,@15152 2630,0,@15153 2648,0,@15154 2807,0,@15155 2822,0,@15156 2837,0,@15157 2852,0,@15158 2864,0,@15159 2876,0,@15160 2888,0,@15161 2900,0,@15162 2912,0,@15163 2924,0,@15164 2936,0,@15165 2948,0,@15166 2960,0,@15167 2972,0,@15168 2989,0,@15169 3005,0,@10077 3066,0,@15170 3103,0,@15171 3148,0,@15172 3160,0,@15173 3177,0,@9557 3194,0,@14742 3247,0,@15172 3259,0,@15173 3276,0,@9557 3379,0,@15174 3391,0,@15175 3403,0,@15176 3415,0,@15177 3427,0,@15178 3439,0,@15179 3451,0,@15180 3463,0,@15181 3479,0,@11943 3562,0,@15174 3574,0,@15175 3586,0,@15176 3598,0,@15177 3610,0,@15178 3622,0,@15179 3634,0,@15180 3646,0,@15181 3663,0,@9557 3680,0,@14742 3758,0,@15174 3770,0,@15175 3782,0,@15176 3794,0,@15177 3806,0,@15178 3818,0,@15179 3830,0,@15180 3842,0,@15181 3859,0,@9557 3926,0,@10021 3947,0,@10077 3990,0,@15034 4168,0,@9487 4192,0,@15182 4259,0,@10021 4280,0,@10077 4323,0,@15034 4501,0,@9487 4525,0,@15183 4541,0,@15184 4589,0,@15183 4656,0,@10021 4677,0,@10077 4720,0,@15034 4916,0,@15196 4945,0,@9487 4979,0,@15197 5034,0,@15198 5098,0,@15199 5115,0,@14742 5154,0,@15200 5230,0,@15201 5249,0,@15202 5316,0,@10021 5337,0,@10077 5380,0,@15034 5558,0,@9487 5602,0,@15203 5621,0,@15204 5682,0,@15205 5701,0,@15206 5768,0,@15207 5786,0,@15208 5804,0,@15209 5816,0,@15210 5851,0,@15211 5911,0,@15212 5981,0,@15213 5993,0,@15214 6003,0,@19888 6022,0,@19888 6039,0,@9463 6068,0,@9601 6084,0,@10077 6127,0,@9583 6163,0,@15215 6260,0,@15149 6295,0,@15150 6311,0,@11943 6354,0,@14496 6388,0,@15216 6455,0,@15044 6473,0,@10077 6541,0,@15044 6601,0,@15217 6642,0,@15044 6702,0,@15218 6743,0,@15044 6803,0,@15219 6838,0,@15044 6900,0,@14930 6971,0,@15220 6987,0,@10077 7031,0,@10294 7102,0,@14523 7119,0,@9557 7179,0,@15144 7240,0,@15221 7311,0,@15222 7371,0,@15144 7415,0,@11943 7475,0,@10077 7626,0,@15223 7643,0,@9557 7687,0,@11943 7747,0,@10077 7883,0,@15224 7951,0,@15225 8019,0,@15226 8087,0,@15227 8130,0,@11943 8189,0,@10077 8327,0,@15228 8352,0,@15229 8387,0,@15230 8416,0,@15231 8445,0,@15232 8471,0,@15233 8483,0,@15234 8511,0,@15235 8527,0,@10077 8585,0,@14988 8612,0,@15236 8628,0,@10077 8693,0,@15237 8711,0,@15238 8723,0,@15239 8740,0,@9557 8800,0,@14964 8867,0,@10021 8888,0,@10077 8945,0,@15237 8963,0,@15238 8975,0,@15239 8992,0,@9557 9051,0,@15240 9072,0,@15241 9100,0,@15242 9150,0,@15144 9166,0,@10077 9214,0,@15243 9242,0,@15244 9292,0,@15144 9308,0,@11943 9356,0,@14526 9373,0,@9557 9423,0,@15144 9494,0,@15245 9511,0,@9557 9561,0,@15144 9577,0,@10077 9632,0,@15246 9682,0,@15144 9756,0,@15247 9773,0,@14742 9808,0,@15248 9875,0,@10021 9896,0,@10077 9943,0,@15249 10011,0,@15250 10027,0,@10077 10082,0,@15251 10142,0,@15252 10185,0,@11943 10244,0,@10077 10428,0,@15253 10440,0,@15254 10452,0,@15255 10464,0,@15256 10476,0,@15257 10488,0,@15258 10500,0,@15259 10512,0,@15260 10524,0,@15261 10536,0,@15262 10564,0,@15263 10817,0,@10021 10838,0,@10077 10881,0,@15033 11062,0,@15144 11106,0,@11943 11166,0,@10077 11313,0,@10021 11329,0,@10077 11372,0,@15033 11554,0,@9487 11575,0,@9487 11596,0,@9487 11623,0,@15264 11683,0,@14930 11750,0,@10021 11771,0,@10077 11814,0,@15033 11996,0,@9487 12037,0,@15265 12104,0,@10021 12125,0,@10077 12168,0,@15033 12349,0,@14930 12408,0,@9487 12429,0,@15266 12496,0,@10021 12517,0,@10077 12560,0,@15033 12741,0,@14930 12797,0,@9487 12814,0,@9535 12855,0,@15250 12871,0,@10077 12915,0,@9535 6811:D4,40|483b65187305ff5558cd054c8b42084c8b4a1048c7c319000000ff2520000000f400000000000000|@15191,1,@1980,@6812| 6812:D6,4128|483b65187306ff5558ca09034c89ca53f20f1028f20f10e5f20f10f4660f2eec7a0b750949c7c603000000eb0749c7c6010000004983fe037410488d64240848b808e7d3f1c27f0000c3f20f10eef2410f593066410f2e307a0b750949c7c603000000eb0749c7c6010000004983fe037426488d642408f2410f1030660f2ef5760b48b820e7d3f1c27f0000c348b838e7d3f1c27f0000c348c7c3050000004c8b0424ff124989c541ff75004d8b750841ff75104c8b6c24084d8b65004d89e24e8d1c65010000004c3b7424107e05e95d0800004983fef70f8c530800004983fe010f8fef01000048c7c001000000492bc67115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c001ff15350f00004989c64d8b2e4a8d0c6d010000004883f901750f49ba50e7d3f1c27f0000e9960000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b20e00000f87560100004d89e34e8d149d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca02704d89d749d1eb4d895af841c642ff414983ec024bc744a2fc0000000049d1ed4d892a41c642083041c642092e498d7608498d7a0a48d1e9f3a4418062ffbf4d8b324e8d2c75010000004c8b6424084d8b34244e8d1c75010000004983fd0175084d89e6e9b20000004983fb0175084d89d6e9a40000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05de0d000077794c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfe9ec050000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff234d3bde0f8f020200004c89f0492bc37115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c001ff15390d00004989c54c8b5424084d8b324e8d3475010000004d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05980c00000f87570100004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be68e7d3f1c27f0000e9a40000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15c10b000077774d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262e49d1ed43c6442e0130418066ffbfe9e1030000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff234d89ed4d89d44e8d1455010000004983fe010f8c220400004d3bf27615488d64241848b82046d1f1c27f0000488b5d08ff234d89ed4e8d2465010000004d3bf475084d89ece9a80000004983fe01750f49bcd8c8d0f1c27f0000e9930000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b158e0a00000f87970300004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc000000004d89f249d1ea4d8914244c89f14d89ed498d7508498d7c240848d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba00d9d0f1c27f0000e99c0000004d89e94983c1024c89c84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0445010000004c3b05cb0900000f87c70200004c89c74c8d14bd0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007b4d89d748d1ef49897af841c642ff414983e8024bc74482fc0000000049d1e94d890a4c89e9498d742408498d7a0848d1e9f3a44983c51049d1ed43c6042a2e418062ffbf4c89d9492bce7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b5c24084d8b234d89e54e8d0c65010000004983fe010f8c0e0200004883f9010f8cef0100004d8d640eff4d3be17615488d64241848b82046d1f1c27f0000488b5d08ff234d89db4e8d2c6d010000004983fe01750d493bcd75084d89dce9af0000004883f901750f49bcd8c8d0f1c27f0000e99a0000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d2c45010000004c3b2d940800000f87590100004d89e94e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ed024bc744acfc000000004989cd49d1ed4d892c244d89f54983c51049d1ed4d89de4b8d342e498d7c240848d1e9f3a441806424ffbf4d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9af0000004983fb0175084d89d6e9a10000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05ba07000077764c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfe9b4050000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff234983fb0375084d89ebe92e0300004d89ed4d89d44e8d1455010000004983fa037315488d64241848b82046d1f1c27f0000488b5d08ff234d89ed4e8d2465010000004983fc0375054d89eceb5b49c7c2050000004e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff4149c74424080000000049c70424010000004d89ed4d0fb66d0845886c240841806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b900d9d0f1c27f0000e99c0000004d89ea4983c2024c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0445010000004c3b05ae0500000f87630500004c89c74c8d0cbd0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007d4d89cf48d1ef498979f841c641ff414983e8024bc74481fc0000000049d1ea4d89114c89e9498d742408498d790848d1e9f3a44983c51049d1ed43c604292e418061ffbf4c89d94883e9027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24084d8b65004e8d1c65010000004883f9010f8caf0400004989cc4983c4024d3be37615488d64241848b82046d1f1c27f0000488b5d08ff234883f901750f49bcd8c8d0f1c27f0000e9900000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1da20400000f87350400004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026a4d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc000000004989cb49d1eb4d891c244d89ed498d7509498d7c240848d1e9f3a441806424ffbf4d8b294e8d2c6d010000004d8b1c244e8d145d010000004983fd0175084d89e3e9b30000004983fa0175084d89cbe9a50000004f8d4415ff4c89c04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d3c4501000000483b3dd20300000f87580300004889fe4c8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca80774d89df48d1ee498973f841c643ff414883ef0249c744bbfc0000000049d1e84d89034c89e9498d7108498d7b0848d1e9f3a44983c5104c89d1498d74240849d1ed4b8d3c2b48d1e9f3a4418063ffbf4d8b2b4e8d246d010000004983fc01750f49bd28dbd0f1c27f0000e99d0000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d030300000f877c0200004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e1498d7308498d7d0848d1e9f3a44983c41049d1ec43c644250045418065ffbf41554c89f04883e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15d70200004989c44c8b14244d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd01750d488d6424084d89e6e9c00000004983fb01750d4d89d6488d642408e9ad0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05e50100000f87510100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208488d642408498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c8b2c244983fd01488d6424080f84bc000000488d6424104d8b2e4a8d0c6d010000004883f901750b48b880e0d0f1c27f0000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25fa00000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c640087e498d7608488d780948d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23488d6424104c89f0c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15192,1,@1981,@4983,@6813,@6813|65,0,@15186 132,0,@15187 143,0,@15188 251,0,@9475 297,0,@15189 692,0,@9487 713,0,@9487 751,0,@9475 1026,0,@15190 1215,0,@9487 1236,0,@9487 1286,0,@10364 1332,0,@9493 1512,0,@9571 1696,0,@9475 1770,0,@10364 1822,0,@9493 2213,0,@9487 2234,0,@9487 2255,0,@9446 2276,0,@9446 2297,0,@9487 2318,0,@9487 2339,0,@9446 2394,0,@10364 2541,0,@9571 2726,0,@9475 2786,0,@10364 2808,0,@9493 3200,0,@9594 3388,0,@9475 3404,0,@10077 3709,0,@9651 3859,0,@9487 3889,0,@9487 3910,0,@9487 3931,0,@9487 3952,0,@9487 3973,0,@9446 3994,0,@9487 6813:D3,256|483b65187305ff5558cd014883f8017f0b48b8d8c8d0f1c27f0000c34883e802711048b8d0c6d0f1c27f0000488b5d08ff23e8c9ffffff4989c64d8b2e4a8d0c6d010000004883f901750b48b830d9d0f1c27f0000c34989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b257200000077594d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400830498d7608488d780948d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01|@15193,1,@1982|19,0,@9493 36,0,@9475 77,0,@9573 227,0,@9487 6814:D3,80|49bbc0d37f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@15195,1,@1983|2,0,@19872 6815:D9,552|483b65187306ff5558ca090350534151ff342448bae81cd1f1c27f00004c89c048c7c303000000ff153b020000488b1424ff12488d642408488b142448b870d8d0f1c27f0000ff12ff34244c8b742418498b064d89f6498b5e0849c7c005000000ff15f9010000488b1424ff12488d642408488b142448b888d8d0f1c27f0000ff124c8b7424084d8b264d89e54983fc0775594d89f641ff7608488b54240848b838ddd0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff158d010000488b1424ff12488d6424105a488d64240848b8c8d8d3f1c27f00004883c408ff224d89f64d89ec4983fd0575594d89f641ff7608488b54240848b838ddd0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1520010000488b1424ff12488d6424105a488d64240848b8e0d8d3f1c27f00004883c408ff224d89f64d89e54983fc0375594d89f641ff7608488b54240848b838ddd0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff15b3000000488b1424ff12488d6424105a488d64240848b8f8d8d3f1c27f00004883c408ff224d89f64983fd0175594d89f641ff7608488b54240848b838ddd0f1c27f0000ff12ff7424084c8b742408498b064d89f6498b5e0849c7c005000000ff1549000000488b1424ff12488d6424105a488d64240848b868ddd0f1c27f00004883c408ff22488d64241848c7c001000000c3f40000|@15268,1,@1985,@6795,@6795,@6795,@6795,@6795,@4983|21,0,@10077 62,0,@9565 120,0,@9566 161,0,@9616 222,0,@15080 262,0,@9616 323,0,@15081 363,0,@9616 424,0,@15082 461,0,@9616 522,0,@9618 6816:D13,2584|483b65187306ff5558ca09034989dea8010f85ea0900004c8b28488b40084d8b65004d89e34983fc4d0f85cc000000a8010f85c20000004c8b204d89e24d8b24244983fc4d750949c7c403000000eb0749c7c4010000004983fc030f85980000004d8b5d084d8b6d104c8b60084d8b42084d8b52104983e8014d03d8711048b8d0c6d0f1c27f0000488b5d08ff234983fd03750949c7c203000000eb004d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d8955104d895d0849c745004d000000498d47e8483b45107306ff5550ca00724989c748c740f8020000004c8960084c89284c89f349c7c003000000e907ffffffeb004d89dc4983fb090f855a0400004d8b5d184d89da4d8b1b4983fb057541a80175344c8b18498b3b4883ff09751f4d8b5b184d8b1b4983fb05750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f85f8030000498b75084d8b5d104d89d44d8b642408488b10ff7008488b7a08488b5a104c8b52184d8b52084c3bdb7502eb39498b0b488b03483bc8751f498b4b08488b5b08483bcb750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f9037402eb1e4883fe017502eb084883fe097402eb0e4883ff017502eb584883ff097452498d47e8483b45107306ff5550ca04634989c748c740f8020000004c8b24244c896008488d642408488910498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be9c0fdffff6a016a014883fe090f85330100004883ff09754741f6c401741441f6c201740e4d89d54983ed014d03ec7002eb1b4c89d34c89e0415641514153ff15f8070000415b4159415e4989c548c70424090000004c896c2408e9cc0000004883ff010f85c700000041f6c401740d41f6c20174074d3be27c2beb6d4c89d34c89e041564151415341544152ff15a2070000415a415c415b4159415e4989c54983fd017d4441f6c201741441f6c401740e4d89d54d2bec70064983c501eb1b4c89e34c89d0415641514153ff155b070000415b4159415e4989c548c70424010000004c896c2408eb4241f6c401741441f6c201740e4d89e54d2bea70064983c501eb1b4c89d34c89e0415641514153ff150f070000415b4159415e4989c548c70424090000004c896c2408e939010000488d64241848b830f1d3f1c27f0000488b5d08ff234883fe010f85c20100004883ff090f85c400000041f6c401740d41f6c20174074d3be27c2beb6d4c89d34c89e041564151415341544152ff159a060000415a415c415b4159415e4989c54983fd017d4441f6c201741441f6c401740e4d89d54d2bec70064983c501eb1b4c89e34c89d0415641514153ff1553060000415b4159415e4989c548c70424090000004c896c2408eb4241f6c401741441f6c201740e4d89e54d2bea70064983c501eb1b4c89d34c89e0415641514153ff1507060000415b4159415e4989c548c70424010000004c896c2408eb4c4883ff010f85d500000041f6c401741441f6c201740e4d89d54983ed014d03ec7002eb1b4c89d34c89e0415641514153ff15b1050000415b4159415e4989c548c70424010000004c896c2408415c415d4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a0849c702050000004d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d8955184d895d104d89650849c7450009000000498d47e8483b45107306ff5550ca00624989c748c740f8020000004c8b24244c896008488d6424084c89284c89f349c7c003000000e9c8faffff488d64241848b830f1d3f1c27f0000488b5d08ff23488d64241848b830f1d3f1c27f0000488b5d08ff234983fc3f0f856e0400004d8b5d104d89dc4d8b134983fa0375414d8b5b104d8b1b4983fb09752ba801751e4c8b184d8b1b4983fb4d750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f850c040000498b7508498b4c2408498b5c24184c8b204c8b5808498b7c24084d8b542410483b0d440400007502eb37488b114883fa09751c488b51084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa037405e9620300004889fa4883ea01486bd208711048b8d0c6d0f1c27f0000488b5d08ff234883c201483bda7d0948c7c203000000eb0748c7c2010000004883fa030f85220300004889d849c7c51100000048d1f849d1fd489949f7fd4c8d2445010000004889d849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb4a4983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374184983ec02711048b8d0c6d0f1c27f0000488b5d08ff23eb004c3be77d02eb034989fc4983fc010f85f50000004883fb010f85db000000492bfc711048b8d0c6d0f1c27f0000488b5d08ff234989fc4983ec01711048b8d0c6d0f1c27f0000488b5d08ff234983fc0175054c89d8eb4d4d8d6fe04c3b6d107306ff5550ca405e4d89ef49c745f8030000004d8955104d89650849c745004d000000498d47e8483b45107306ff5550ca406a4989c748c740f8020000004c8958084c89284d8d6fe84c3b6d107306ff5550ca41424d89ef49c745f8020000004989750849c7450045000000498d5fe8483b5d107306ff5550ca01624989df48c743f8020000004c8973084c892b49c7c003000000e90cf8ffff48b8f8f1d3f1c27f0000488b5d08ff234d89e04983e8014d6bc008711048b8d0c6d0f1c27f0000488b5d08ff234983c0014989dd4d2be8711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d47d84c3b45107306ff5550cac27e4d89c749c740f8040000004d89681849bd58a4d3f1c27f00004d8968104989480849c700030000004d8d6fe04c3b6d107306ff5550cac05f4d89ef49c745f8030000004d8945104989750849c745003f000000493bfc7502eb6b4989f84d2bc4711048b8d0c6d0f1c27f0000488b5d08ff234983c001498d7fe0483b7d107306ff5550ca007f4989ff48c747f8030000004c8957104c89470848c7074d0000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f8020000004d8958084989384d89c3498d47e8483b45107306ff5550ca007e4989c748c740f8020000004c8958084c89284d8d6fe04c3b6d107306ff5550ca01564d89ef49c745f8030000004d8955104d89650849c745004d000000498d5fe8483b5d107306ff5550ca01624989df48c743f8020000004c8973084c892b49c7c003000000e96ff6ffff498d47e8483b45107306ff5550ca007b4989c748c740f8020000004c8958084c8920498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be926f6ffff498d5fe8483b5d107306ff5550ca01634989df48c743f8020000004c8973084c892be9fff5ffff4c89f048c7c301000000ff251f000000f4000000000000|@15276,1,@1986,@6817,@15123,@4933,@4987,@4987,@6558,@4987,@4987,@6558,@4933|128,0,@9475 883,0,@15269 1343,0,@15269 1364,0,@15269 1598,0,@9475 1771,0,@9475 1824,0,@9475 1849,0,@9475 2038,0,@15273 2067,0,@9475 2095,0,@9475 2146,0,@14742 2229,0,@9475 6817:D3,392|483b65187306ff5558ca0903a8010f855e0100004c8b28488b40084d8b75004983fe210f851f010000a8010f85150100004c8b304d89f24d8b264983fc29751c4d8b76084983fe03750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f85d9000000498b7d084d8b75104c8b60084d8b5a10493bfb7502eb51493bfb744c498d47e8483b45107306ff5550ca08374989c748c740f8020000004c8960084c89104d8d77e84c3b75107306ff5550ca09234d89f749c746f80200000049895e084d892e4c89f3e92bffffff4983fe03750f4c89e049c7c003000000e916ffffff4d8d77e04c3b75107306ff5550ca081a4d89f749c746f8030000004d895e1049c746080100000049c70629000000498d47e8483b45107306ff5550ca08524989c748c740f8020000004c8960084c893049c7c003000000e9bafeffffeb004d8d77e84c3b75107306ff5550ca09234d89f749c746f80200000049895e084d892e4c89f3e98efeffff4989194d89410848c7c001000000c3f4000000000000|@15277,1,@1987| 6818:D4,184|483b65187306ff5558ca090141504d8d77f04c3b75107305ff5550cd094d89f749c746f80100000041c646ff4049891e415648c7c30100000049c7c0010000004c8b0c24ff15860000004989c649c7c40100000041f6c601753d4d8b164d8b6e084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8963084d89134d89dc4d89ee483b65187306ff5558ca0050ebbd4c8b34244d8b36488d642408415d4d8965004d89750848c7c001000000c3f40000|@15607,1,@2166,@6996| 6819:D3,72|49bbe8d37f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@15279,1,@1989|2,0,@19873 6820:D366,50840|483b65187306ff5558ca09014989c6534150498b0641ff760849c7c5010000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e4156483b05b4d100007502eb334c8b304e8d3475010000004983fe01753549bed8c8d0f1c27f0000488d7008498d7e0848c7c100000000483bc9f3a67402eb13488b54240848b898dad0f1c27f0000ff12eb07488b542408ff12488b54240848b880dfd3f1c27f0000ff124c8b34244d8b264c89e34c8b6c24184d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be30f8330bd000049d1ec4d89ed4f0fb66c25004e8d2c6d010000004981fde90100000f84f9bc0000ff742408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15c0d0000048bae81cd1f1c27f000048c7c305000000ff15a1d00000488b1424ff12488d642408488b54240848b888d5d0f1c27f0000ff124c8b34244d8b2e4c8b7424184d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f834bbc000049d1ed4d89f64f0fb6342e4e8d3475010000004981fee10100007526488b54240848b840f3d3f1c27f0000ff124c8b2c244d8b75004983c6024d89ed4d897500eb004c8b1c244d8b234d89e54c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3be20f83c4bb000049d1ec4d89f64f0fb624264e8d2465010000004981fce50100007502eb144981fce70100007502eb094981fccd000000750f4d89db4983c5024d89db4d892beb0749c7c4010000004c8b14244d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f8339bb000049d1ed4d89f64f0fb62c2e4e8d2c6d010000004981fd8100000072184981fd9f000000770f4d89d24983c3024d89d24d891aeb0749c7c50100000041554c8b2c244d89eb4983e5114983fd01750949c7c503000000eb0749c7c5010000004983f50241554d89db4d89dd4983e3094983fb01750949c7c303000000eb0749c7c3010000004983f30241534d89ed4c89eb4983e5034983fd01750949c7c503000000eb0749c7c5010000004983f50241554c8b5424204d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f8345ba000049d1ed4d89f64b0fb6042e4c8d2c450100000041554d89d24983c3024d89d24d89d54d891a4c8b5424184d89d34983fa03750949c7c205000000eb194981fccd000000750949c7c207000000eb0749c7c20300000041524c8b5424084983ea064d89d14981f9fb0100000f8360b900004c8d0d080000004f8d4c91fc41ffe1e9e3070000909090e990090000909090e992090000909090e994090000909090e996090000909090e998090000909090e99a090000909090e99c090000909090e99e090000909090e94b0b0000909090e94d0b0000909090e94f0b0000909090e9510b0000909090e9d43b0000909090e9d63b0000909090e9d83b0000909090e9da3b0000909090e9873d0000909090e9893d0000909090e98b3d0000909090e98d3d0000909090e98f3d0000909090e9913d0000909090e9933d0000909090e9953d0000909090e9423f0000909090e9443f0000909090e9463f0000909090e9483f0000909090e94a3f0000909090e94c3f0000909090e94e3f0000909090e9503f0000909090e9fd400000909090e9ff400000909090e901410000909090e903410000909090e905410000909090e907410000909090e909410000909090e90b410000909090e9b8420000909090e9ba420000909090e9bc420000909090e9be420000909090e9c0420000909090e9c2420000909090e9c4420000909090e9c6420000909090e973440000909090e975440000909090e977440000909090e979440000909090e97b440000909090e97d440000909090e97f440000909090e981440000909090e92e460000909090e930460000909090e932460000909090e934460000909090e936460000909090e938460000909090e93a460000909090e93c460000909090e93e460000909090e940460000909090e942460000909090e944460000909090e946460000909090e948460000909090e94a460000909090e94c460000909090e94e460000909090e950460000909090e952460000909090e954460000909090e956460000909090e975470000909090e994480000909090e9b3490000909090e9d24a0000909090e9f14b0000909090e9104d0000909090e92f4e0000909090e94e4f0000909090e96d500000909090e98c510000909090e9ab520000909090e9ca530000909090e9e9540000909090e908560000909090e927570000909090e946580000909090e948580000909090e94a580000909090e94c580000909090e94e580000909090e950580000909090e952580000909090e954580000909090e956580000909090e94d590000909090e9395b0000909090e9b45c0000909090e9295f0000909090e92b5f0000909090e92d5f0000909090e92f5f0000909090e9315f0000909090e957600000909090e97d610000909090e9a3620000909090e9c9630000909090e9ef640000909090e915660000909090e93b670000909090e961680000909090e987690000909090e9ad6a0000909090e9d36b0000909090e9f96c0000909090e91f6e0000909090e9456f0000909090e96b700000909090e991710000909090e94c750000909090e97d780000909090e97f780000909090e9397c0000909090e93b7c0000909090e93d7c0000909090e93f7c0000909090e9307d0000909090e962830000909090e953840000909090e955840000909090e94b850000909090e94d850000909090e943860000909090e945860000909090e9ac860000909090e9bf860000909090e9c1860000909090e9c3860000909090e9c5860000909090e9c7860000909090e9c9860000909090e9cb860000909090e9cd860000909090e9cf860000909090e90d870000909090e90f870000909090e911870000909090e913870000909090e915870000909090e928870000909090e92a870000909090e92c870000909090e92e870000909090e930870000909090e932870000909090e961870000909090e990870000909090e9bf870000909090e9c1870000909090e93c890000909090e93e890000909090e96d890000909090e9c8890000909090e9ca890000909090e9cc890000909090e9ce890000909090e9d0890000909090e9d2890000909090e9d4890000909090e9d6890000909090e9d8890000909090e9da890000909090e9dc890000909090e9de890000909090e9e0890000909090e9508c0000909090e9c08e0000909090e930910000909090e9a0930000909090e910960000909090e980980000909090e9f09a0000909090e9609d0000909090e9629d0000909090e97e9d0000909090e9749f0000909090e9879f0000909090e9899f0000909090e98b9f0000909090e96ba10000909090e9c1a20000909090e9c3a20000909090e9c5a20000909090e9d8a30000909090e9daa30000909090e9dca30000909090e956a40000909090e958a40000909090e95aa40000909090e95ca40000909090e978a40000909090e97aa40000909090e996a40000909090e998a40000909090e99aa40000909090e99ca40000909090e99ea40000909090e9baa40000909090e9d6a40000909090e9f2a40000909090e90ea50000909090e92aa50000909090e946a50000909090e962a50000909090e97ea50000909090e980a50000909090e982a50000909090e984a50000909090e986a50000909090e988a50000909090e98aa50000909090e98ca50000909090e98ea50000909090e962a60000909090e936a70000909090e938a70000909090e95ea80000909090e960a80000909090e962a80000909090e964a80000909090e966a80000909090e968a80000909090e96aa80000909090e96ca80000909090e96ea80000909090e981a80000909090e983a80000909090e900ac0000909090e95caf0000909090e95eaf0000909090e960af0000909090e962af0000909090e964af0000909090e966af0000909090e968af0000909090e96aaf00009090904d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15f5c40000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd98a666f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1584c40000488d642430e9bdb00000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9afaf0000488d642408e9a5af0000488d642408e99baf0000488d642408e991af0000488d642408e987af0000488d642408e97daf0000488d642408e973af00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15eac20000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bde8a666f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1579c20000488d642430e9c2ae0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9b4ad0000488d642408e9aaad0000488d642408e9a0ad00004d89ea4d8b2a4d89eb4d89f64d8b4ef849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3be90f834930000049d1ed4d89f64f0fb62c2e4e8d2c6d0100000041554d89d24983c3024d89d24d89d54d891a4981fccd0000000f85520600004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f831206000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b7424084d89f54981feaf0000000f85b6010000488b54244848b8b0f4d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1517c1000048bae81cd1f1c27f000048c7c305000000ff15f8c000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2575b500000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd38a766f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15ccbf00004883c440e936040000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89ed4d89ee4981fda90000000f85b6010000488b54244848b8c8f4d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1536bf000048bae81cd1f1c27f000048c7c305000000ff1517bf00004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25a4b300000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bda8a866f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15ebbd00004883c440e96d020000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64983fe5d0f85b6010000488b54244848b8e0f4d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff155bbd000048bae81cd1f1c27f000048c7c305000000ff153cbd00004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25d9b100000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd18aa66f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1510bc00004883c440e9aa000000488d64246848b8f8c7d0f1c27f0000488b5d08ff23488d642408488b54244048b8f8f4d3f1c27f0000ff12488b54244048b810f5d3f1c27f0000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1577bb000048bae81cd1f1c27f000048c7c305000000ff1558bb0000488b1424ff12488d642440e9d5290000488d64245848b858f4d3f1c27f0000488b5d08ff234981fce70100000f857f0400004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f833f04000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b6c24084d89ee4983fd230f85ae010000488b54244848b828f5d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd88ab66f1c27f00004d89284156488b44244048c7c3030000004c8b4c24484c8b542460ff1560ba0000488b54244848b8d0d8d0f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15fbb9000048bae81cd1f1c27f000048c7c305000000ff15dcb900004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25a1ae000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642448e96e020000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64981feb50000000f85b4010000488b54244848b840f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff158db8000048bae81cd1f1c27f000048c7c305000000ff156eb800004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b253bad00000f87d20000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdf8ac66f1c27f00004d89284156488b442440488b5c24184c8b4c24484c8b542460ff1544b700004883c440e9aa000000488d64246848b8f8c7d0f1c27f0000488b5d08ff23488d642408488b54244048b860f5d3f1c27f0000ff12488b54244048b810f5d3f1c27f0000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15abb6000048bae81cd1f1c27f000048c7c305000000ff158cb60000488b1424ff12488d642440e949250000488d64245848b858f4d3f1c27f0000488b5d08ff234981fce50100000f852f0f00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83ef0e000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f41564c8b6c24084d89ee4981fdbd0000000f85b6010000488b54244848b878f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1594b5000048bae81cd1f1c27f000048c7c305000000ff1575b500004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2562aa00000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd48ad66f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1549b400004883c440e9130d0000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64d89f54981feb90000000f85b6010000488b54244848b890f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15b3b3000048bae81cd1f1c27f000048c7c305000000ff1594b300004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2591a800000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdb8ae66f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1568b200004883c440e94a0b0000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89ed4d89ee4981fdb50000000f85b6010000488b54244848b8a8f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15d2b1000048bae81cd1f1c27f000048c7c305000000ff15b3b100004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0a600000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd28b066f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1587b000004883c440e981090000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64d89f54981feb30000000f85b6010000488b54244848b8c8f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15f1af000048bae81cd1f1c27f000048c7c305000000ff15d2af00004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25efa400000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd98b166f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15a6ae00004883c440e9b8070000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89ed4d89ee4981fdb10000000f85b6010000488b54244848b8e0f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1510ae000048bae81cd1f1c27f000048c7c305000000ff15f1ad00004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b251ea300000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd08b366f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff15c5ac00004883c440e9ef050000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64d89f54983fe550f85b4010000488b54244848b8f8f5d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1532ac000048bae81cd1f1c27f000048c7c305000000ff1513ac00004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2550a100000f87d20000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd78b466f1c27f00004d89284156488b442440488b5c24184c8b4c24484c8b542460ff15e9aa00004883c440e92b040000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89ed4d89ee4983fd230f85ae010000488b54244848b818f6d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bdc8b466f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1553aa0000488b54244848b8d0d8d0f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff15eea9000048bae81cd1f1c27f000048c7c305000000ff15cfa900004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25249f000077704d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642448e96d020000488d64246848b8f8c7d0f1c27f0000488b5d08ff234d89f64983fe210f85b6010000488b54244848b818f6d3f1c27f0000ff12ff742448f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff1583a8000048bae81cd1f1c27f000048c7c305000000ff1564a800004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9960000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c19d00000f87d40000004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf488b1424ff12488d642408488b54244848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24484d89ee4d89680849bd38b666f1c27f00004d89284156488b44244048c7c3050000004c8b4c24484c8b542460ff1538a700004883c440e9aa000000488d64246848b8f8c7d0f1c27f0000488b5d08ff23488d642408488b54244048b830f6d3f1c27f0000ff12488b54244048b810f5d3f1c27f0000ff12ff742440f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff159fa6000048bae81cd1f1c27f000048c7c305000000ff1580a60000488b1424ff12488d642440e90d160000488d64245848b858f4d3f1c27f0000488b5d08ff234983fc010f85231500004c8b1c244d89dc4981fb1f0100000f85ed000000488d6424384d89ed498b45004c89f3ff1520a600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b848f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15b8a500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff155fa5000048bae81cd1f1c27f000048c7c305000000ff1540a50000488b1424ff12488d642410e91d1400004d89e44d89e34981fc1d0100000f85ed000000488d6424384d89ed498b45004c89f3ff1500a500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b860f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1598a400004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153fa4000048bae81cd1f1c27f000048c7c305000000ff1520a40000488b1424ff12488d642410e91d1300004d89db4d89dc4981fb1b0100000f85ed000000488d6424384d89ed498b45004c89f3ff15e0a300004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b878f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1578a300004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151fa3000048bae81cd1f1c27f000048c7c305000000ff1500a30000488b1424ff12488d642410e91d1200004d89e44d89e34981fc190100000f85ed000000488d6424384d89ed498b45004c89f3ff15c0a200004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b890f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1558a200004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15ffa1000048bae81cd1f1c27f000048c7c305000000ff15e0a10000488b1424ff12488d642410e91d1100004d89db4d89dc4981fb170100000f85ed000000488d6424384d89ed498b45004c89f3ff15a0a100004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8a8f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1538a100004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15dfa0000048bae81cd1f1c27f000048c7c305000000ff15c0a00000488b1424ff12488d642410e91d1000004d89e44d89e34981fc150100000f85ed000000488d6424384d89ed498b45004c89f3ff1580a000004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8c0f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff1518a000004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15bf9f000048bae81cd1f1c27f000048c7c305000000ff15a09f0000488b1424ff12488d642410e91d0f00004d89db4d89dc4981fb130100000f85ed000000488d6424384d89ed498b45004c89f3ff15609f00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8d8f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15f89e00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159f9e000048bae81cd1f1c27f000048c7c305000000ff15809e0000488b1424ff12488d642410e91d0e00004d89e44d89e34981fc110100000f85ed000000488d6424384d89ed498b45004c89f3ff15409e00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8f0f6d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15d89d00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff157f9d000048bae81cd1f1c27f000048c7c305000000ff15609d0000488b1424ff12488d642410e91d0d00004d89db4d89dc4981fb0f0100000f85ed000000488d6424384d89ed498b45004c89f3ff15209d00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b808f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15b89c00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff155f9c000048bae81cd1f1c27f000048c7c305000000ff15409c0000488b1424ff12488d642410e91d0c00004d89e44d89e34981fc0d0100000f85ed000000488d6424384d89ed498b45004c89f3ff15009c00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b820f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15989b00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153f9b000048bae81cd1f1c27f000048c7c305000000ff15209b0000488b1424ff12488d642410e91d0b00004d89db4d89dc4981fb0b0100000f85ed000000488d6424384d89ed498b45004c89f3ff15e09a00004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b838f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15789a00004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151f9a000048bae81cd1f1c27f000048c7c305000000ff15009a0000488b1424ff12488d642410e91d0a00004d89e44d89e34981fc090100000f85ed000000488d6424384d89ed498b45004c89f3ff15c09900004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b850f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15589900004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15ff98000048bae81cd1f1c27f000048c7c305000000ff15e0980000488b1424ff12488d642410e91d0900004d89db4d89dc4981fb070100000f85ed000000488d6424384d89ed498b45004c89f3ff15a09800004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b868f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15389800004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15df97000048bae81cd1f1c27f000048c7c305000000ff15c0970000488b1424ff12488d642410e91d0800004d89e44d89e34981fc050100000f85ed000000488d6424384d89ed498b45004c89f3ff15809700004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b880f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15189700004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15bf96000048bae81cd1f1c27f000048c7c305000000ff15a0960000488b1424ff12488d642410e91d0700004d89db4d89dc4981fb030100000f85ed000000488d6424384d89ed498b45004c89f3ff15609600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b898f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15f89500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159f95000048bae81cd1f1c27f000048c7c305000000ff1580950000488b1424ff12488d642410e91d0600004d89e44d89e34981fc010100000f85ed000000488d6424384d89ed498b45004c89f3ff15409500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b8b0f7d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15d89400004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff157f94000048bae81cd1f1c27f000048c7c305000000ff1560940000488b1424ff12488d642410e91d0500004d89db4d89dc4981fb5f0100000f8503010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c8f7d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15ba930000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bda8b766f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff1549930000488d642430e91c040000488d64245048b858f4d3f1c27f0000488b5d08ff234d89e44d89e34981fc6f0100000f8504010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bf00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8e0f7d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff1594920000488b1424ff12488d642418488b54243048b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24304d89ee4d89680849bdf8b766f1c27f00004d89284156488b44242848c7c3070000004c8b4c24304c8b542448ff15219200004883c428e905030000488d64245048b858f4d3f1c27f0000488b5d08ff234d89db4d89dc4981fb6d0100000f8504010000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bf00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8e0f7d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff156d910000488b1424ff12488d642418488b54243048b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24304d89ee4d89680849bd48b866f1c27f00004d89284156488b44242848c7c3010000004c8b4c24304c8b542448ff15fa9000004883c428e9ee010000488d64245048b858f4d3f1c27f0000488b5d08ff234d89e44981fc830100000f85fe000000488d6424084d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f8f7d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd98b866f1c27f00004d89284156488b442438488b5c24104c8b4c24404c8b542458ff1515900000488b54244048b8d0d8d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15e38f0000488b1424ff12488d642440e9e0000000488d64245048b858f4d3f1c27f0000488b5d08ff23488b54244048b810f8d3f1c27f0000ff12f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff155c8f0000488b1424ff12488d642440eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15058f000048bae81cd1f1c27f000048c7c303000000ff15e68e0000488b1424ff12488d642440e9cb000000488b54244048b810f8d3f1c27f0000ff12f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff15748e0000488b1424ff12488d642440eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151d8e000048bae81cd1f1c27f000048c7c303000000ff15fe8d0000488b1424ff12488d642440e9197e0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e90b7d0000488d642408e9017d0000488d642408e9f77c00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15868c0000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bde8b866f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15158c0000488d642430e9467c0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9387b0000488d642408e92e7b0000488d642408e9247b0000488d642408e91a7b0000488d642408e9107b0000488d642408e9067b0000488d642408e9fc7a00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff157b8a0000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd38b966f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff150a8a0000488d642430e94b7a0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e93d790000488d642408e933790000488d642408e929790000488d642408e91f790000488d642408e915790000488d642408e90b790000488d642408e9017900004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff1570880000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd88b966f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15ff870000488d642430e950780000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e942770000488d642408e938770000488d642408e92e770000488d642408e924770000488d642408e91a770000488d642408e910770000488d642408e9067700004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff1565860000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdd8b966f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15f4850000488d642430e955760000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e947750000488d642408e93d750000488d642408e933750000488d642408e929750000488d642408e91f750000488d642408e915750000488d642408e90b7500004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff155a840000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd28ba66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15e9830000488d642430e95a740000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e94c730000488d642408e942730000488d642408e938730000488d642408e92e730000488d642408e924730000488d642408e91a730000488d642408e9107300004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837501000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f415649c7c61100000049d1ee4833d249f7f649c7c61100000049d1ee4833d249f7f64c8d345501000000488b5424404983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff154f820000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd78ba66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15de810000488d642430e95f720000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e951710000488d642408e947710000488d642408e93d710000488d642408e933710000488d642408e929710000488d642408e91f710000488d642408e915710000488d642408e90b710000488d642408e901710000488d642408e9f7700000488d642408e9ed700000488d642408e9e3700000488d642408e9d9700000488d642408e9cf700000488d642408e9c5700000488d642408e9bb700000488d642408e9b1700000488d642408e9a7700000488d642408e99d700000488d642408e993700000488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15bc8000004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d017900000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e970700000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff158d7f00004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd27700000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9496f0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff155e7e00004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da37600000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9226e0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff152f7d00004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d747500000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9fb6c0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15007c00004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d457400000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9d46b0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15d17a00004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d167300000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9ad6a0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15a27900004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de77100000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e986690000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15737800004989c64d8b2e4e8d2c6d010000004983fd01750f48b828f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db87000000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc28f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e95f680000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15447700004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d896f00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e938670000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15157600004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5a6e00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e911660000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15e67400004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2b6d00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9ea640000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15b77300004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dfc6b00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9c3630000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15887200004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dcd6a00000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e99c620000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15597100004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d9e6900000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e975610000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff152a7000004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6f6800000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e94e600000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408ff74243049c7c61100000049d1ee4833d249f7f6488d045501000000488b5c241049c7c005000000ff15fb6e00004989c64d8b2e4e8d2c6d010000004983fd01750f48b840f8d3f1c27f0000e9ac0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d406700000f87860000004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bc40f8d3f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e9498d7608488d780d48d1e9f3a48060ffbf488b1424ff12488d642430e9275f0000488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d642408e9195e0000488d642408e90f5e0000488d642408e9055e0000488d642408e9fb5d0000488d642408e9f15d0000488d642408e9e75d0000488d642408e9dd5d0000488d642408e9d35d0000488d642430488b54240848b828f8d3f1c27f0000ff124c8b3424498b06488b5c2418ff15876d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15316d0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15da6c000048bae81cd1f1c27f000048c7c303000000ff15bb6c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500e9c35d00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b401000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c8f7d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff151a6c0000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdc8ba66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15a96b0000488d642408488b54243048b8d0d8d0f1c27f0000ff124c8b742428498b06488b5c2440ff15786b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff15226b0000488b1424ff12488d642438eb64488b54243848b8e8d8d0f1c27f0000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15cb6a000048bae81cd1f1c27f000048c7c303000000ff15ac6a0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e9e45b0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b828f8d3f1c27f0000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff1574690000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151d69000048bae81cd1f1c27f000048c7c303000000ff15fe680000488b1424ff12488d642410e9615a0000488d64242048b858f4d3f1c27f0000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f833d02000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8c8f7d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff155b680000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd18bb66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15ea670000488d642408488b54243048b8d0d8d0f1c27f0000ff124c8b6c24284d8b5d004d89de4c8b6424404d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832b010000488d64242849d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15e4660000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158d66000048bae81cd1f1c27f000048c7c303000000ff156e660000488b1424ff12488d642410e9f9570000488d64244848b858f4d3f1c27f0000488b5d08ff23488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9d6560000488d642408e9cc560000488d642408e9c2560000488d642408e9b8560000488d642430488b54240848b858f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151265000048bae81cd1f1c27f000048c7c305000000ff15f3640000488b1424ff12488d642408e98e560000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b870f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15d463000048bae81cd1f1c27f000048c7c305000000ff15b5630000488b1424ff12488d642408e960550000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b888f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159662000048bae81cd1f1c27f000048c7c305000000ff1577620000488b1424ff12488d642408e932540000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8a0f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff155861000048bae81cd1f1c27f000048c7c305000000ff1539610000488b1424ff12488d642408e904530000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8b8f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151a60000048bae81cd1f1c27f000048c7c305000000ff15fb5f0000488b1424ff12488d642408e9d6510000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8d0f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15dc5e000048bae81cd1f1c27f000048c7c305000000ff15bd5e0000488b1424ff12488d642408e9a8500000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8e8f8d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159e5d000048bae81cd1f1c27f000048c7c305000000ff157f5d0000488b1424ff12488d642408e97a4f0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b800f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15605c000048bae81cd1f1c27f000048c7c305000000ff15415c0000488b1424ff12488d642408e94c4e0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b818f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15225b000048bae81cd1f1c27f000048c7c305000000ff15035b0000488b1424ff12488d642408e91e4d0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b830f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15e459000048bae81cd1f1c27f000048c7c305000000ff15c5590000488b1424ff12488d642408e9f04b0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b848f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15a658000048bae81cd1f1c27f000048c7c305000000ff1587580000488b1424ff12488d642408e9c24a0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b860f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff156857000048bae81cd1f1c27f000048c7c305000000ff1549570000488b1424ff12488d642408e994490000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b878f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff152a56000048bae81cd1f1c27f000048c7c305000000ff150b560000488b1424ff12488d642408e966480000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b890f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15ec54000048bae81cd1f1c27f000048c7c305000000ff15cd540000488b1424ff12488d642408e938470000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8a8f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15ae53000048bae81cd1f1c27f000048c7c305000000ff158f530000488b1424ff12488d642408e90a460000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8c0f9d3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff157052000048bae81cd1f1c27f000048c7c305000000ff1551520000488b1424ff12488d642408e9dc440000488d64242048b858f4d3f1c27f0000488b5d08ff23488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f837e03000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5424104983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd68bb66f1c27f00004d89284156488b44240848c7c3010000004c8b4c24104c8b542428ff15f94f0000488d642408488b54240848b8d0d8d0f1c27f0000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15f94e0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15a24e000048bae81cd1f1c27f000048c7c303000000ff15834e0000488b1424ff12488d642410e92e410000488d64242048b858f4d3f1c27f0000488b5d08ff23488d64242848b858f4d3f1c27f0000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f902000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488b5424384983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54243848b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bdb8bb66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff151d4c0000488d642408488b54243048b8d0d8d0f1c27f0000ff124c8b742428498b06488b5c2440ff15ec4b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff15964b0000488b1424ff12488d642438eb64488b54243848b8e8d8d0f1c27f0000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153f4b000048bae81cd1f1c27f000048c7c303000000ff15204b0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e9e03d0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9d23c00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f838203000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d0c6d0f1c27f0000488b5d08ff23488b5424384983fe0d750c48b858f3d3f1c27f0000eb764983fe0b750c48b870f3d3f1c27f0000eb644983fe09750c48b888f3d3f1c27f0000eb524983fe07750c48b8a0f3d3f1c27f0000eb404983fe05750c48b8b8f3d3f1c27f0000eb2e4983fe03750c48b8d0f3d3f1c27f0000eb1c4983fe01750c48b8e8f3d3f1c27f0000eb0a48b800f4d3f1c27f0000ff12488b54243848b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd08bc66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15b2480000488d642408488b54243048b8d0d8d0f1c27f0000ff124c8b6c24284d8b5d004d89de4c8b6424404d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832b010000488d64242849d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ac470000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff155547000048bae81cd1f1c27f000048c7c303000000ff1536470000488b1424ff12488d642410e9293a0000488d64244848b858f4d3f1c27f0000488b5d08ff23488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e906390000488d642408e9fc380000488d642408e9f23800004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8d8f9d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd58bc66f1c27f00004d89284156488b442438488b5c24104c8b4c24404c8b542458ff152c460000488b54244048b8d0d8d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15fa450000488b1424ff12488d642440e9fd380000488d64245048b858f4d3f1c27f0000488b5d08ff23488d6424184d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f505000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64243848b8d0c6d0f1c27f0000488b5d08ff234156488b54242848b8f0f9d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24284d89ee4d89680849bda8bc66f1c27f00004d89284156488b44242048c7c3010000004c8b4c24284c8b542440ff152f440000488b54242848b8d0d8d0f1c27f0000ff124c8b7424084983fe030f85e0010000ff742428488b4424084883c0107115488d64244848b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff15cc4300004989c64d8b2e4a8d0c6d010000004883f901750f49bd60dfd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d213e00000f87370100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450872498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8e0dad0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d663d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430428060ffbf488b1424ff12488d642428e997020000488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64244848b8f8c7d0f1c27f0000488b5d08ff234c8b34244d89f54983fd110f8384010000488d6424184c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e94e000000909090e961000000909090e974000000909090e987000000909090e9b0000000909090e9d9000000909090e902010000909090488d642408488b54240848b8c8d5d3f1c27f0000ff12e9ed010000488d642408488b54240848b828d6d3f1c27f0000ff12e9d2010000488d642408488b54240848b888d6d3f1c27f0000ff12e9b7010000488d642408488b54240848b8e8d6d3f1c27f0000ff12e99c010000488b5424104c8b34244983fe01488d642408750c48b848d7d3f1c27f0000eb0a48b808fad3f1c27f0000ff12e96b010000488b5424104c8b34244983fe01488d642408750c48b8a8d7d3f1c27f0000eb0a48b820fad3f1c27f0000ff12e93a010000488b5424104c8b34244983fe01488d642408750c48b808d8d3f1c27f0000eb0a48b838fad3f1c27f0000ff12e909010000488b5424104c8b34244983fe01488d642408750c48b868d8d3f1c27f0000eb0a48b850fad3f1c27f0000ff12e9d8000000ff74242848bae81cd1f1c27f0000488b44240848c7c303000000ff156a4000004989c64d8b2e4a8d0c6d010000004883f901750f48b860dfd0f1c27f0000e98a0000004989cd4983c5024c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25b73a000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400872498d7608488d780948d1e9f3a48060ffbf488b1424ff12488d642428e9d8320000488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b858f4d3f1c27f0000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83b900000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f0f9d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bdf8bc66f1c27f00004d89284156488b442438488b5c24104c8b4c24404c8b542458ff15d13e0000488b54244048b8d0d8d0f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff159f3e0000488b1424ff12488d642440e9ca310000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9bc3000004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b8f0f9d3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15f23d0000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd48bd66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15813d0000488d642430e9c2300000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9b42f00004d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83be00000049d1ed4d89f64f0fb6342e4e8d34750100000049c1ee034983ce014983e60f4156488b54244048b868fad3f1c27f0000ff12ff742440488b442408488b5c24284c8b442410ff15da3c0000488b1424ff12488d642410488b54243848b8d0d8d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd98bd66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15693c0000488d642430e9ba2f0000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e9ac2e0000488d642428488b54241048b840f8d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bde8bd66f1c27f00004d89284156488b44240848c7c3050000004c8b4c24104c8b542428ff15d33b0000488d642408e92c2f0000488d642430488b54240848b880fad3f1c27f0000ff12e9112f0000488d642408e9182e0000488d642408e90e2e0000488d642408e9042e0000488d642408e9fa2d0000488d642408e9f02d0000488d642408e9e62d0000488d642408e9dc2d0000488d642408e9d22d0000488d6424204d89de4983fe03488d6424087518488d642408488b54240848b898fad3f1c27f0000ff12eb16488d642408488b54240848b8b0fad3f1c27f0000ff12e97b2e0000488d642408e9822d0000488d642408e9782d0000488d642408e96e2d0000488d642408e9642d0000488d642430488b54240848b8c8fad3f1c27f0000ff12e9382e0000488d642408e93f2d0000488d642408e9352d0000488d642408e92b2d0000488d642408e9212d0000488d642408e9172d0000488d6424304981fce70100007513488b54240848b8e0fad3f1c27f0000ff12eb00488b54240848b8f8fad3f1c27f0000ff12e9cf2d0000488d6424304981fce70100007513488b54240848b8e0fad3f1c27f0000ff12eb00488b54240848b810fbd3f1c27f0000ff12e9982d0000488d6424304981fce70100007513488b54240848b828fbd3f1c27f0000ff12eb00488b54240848b840fbd3f1c27f0000ff12e9612d0000488d642408e9682c0000488d642430488b54240848b858fbd3f1c27f0000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15f4380000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159d38000048bae81cd1f1c27f000048c7c303000000ff157e380000488b1424ff12488d642410e9e92b0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642408e9db2a0000488d6424304981fce70100007513488b54240848b8e0fad3f1c27f0000ff12eb00488b54240848b870fbd3f1c27f0000ff12e9932b0000488d6424204981fce70100007513488b54241848b8e0fad3f1c27f0000ff12eb004c8b34244983fe03488d6424087518488d642408488b54240848b888fbd3f1c27f0000ff12eb16488d642408488b54240848b8a0fbd3f1c27f0000ff12e9302b0000488d642408e9372a0000488d642408e92d2a0000488d642408e9232a0000488d642408e9192a0000488d642408e90f2a0000488d642408e9052a0000488d642408e9fb290000488d642408e9f1290000488d642408e9e7290000488d642408e9dd290000488d642408e9d3290000488d642408e9c9290000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15f0360000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15a43600004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff154e360000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f735000048bae81cd1f1c27f000048c7c303000000ff15d8350000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15843500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff152e350000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d734000048bae81cd1f1c27f000048c7c303000000ff15b8340000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e940280000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1530340000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15e43300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff158e330000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153733000048bae81cd1f1c27f000048c7c303000000ff1518330000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15c43200004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff156e320000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151732000048bae81cd1f1c27f000048c7c303000000ff15f8310000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e9c8250000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1570310000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15243100004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ce300000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157730000048bae81cd1f1c27f000048c7c303000000ff1558300000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15043000004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ae2f0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15572f000048bae81cd1f1c27f000048c7c303000000ff15382f0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e950230000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15b02e0000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15642e00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff150e2e0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b72d000048bae81cd1f1c27f000048c7c303000000ff15982d0000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15442d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ee2c0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15972c000048bae81cd1f1c27f000048c7c303000000ff15782c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e9d8200000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15f02b0000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15a42b00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff154e2b0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f72a000048bae81cd1f1c27f000048c7c303000000ff15d82a0000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15842a00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff152e2a0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d729000048bae81cd1f1c27f000048c7c303000000ff15b8290000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e9601e0000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1530290000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15e42800004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff158e280000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153728000048bae81cd1f1c27f000048c7c303000000ff1518280000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15c42700004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff156e270000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151727000048bae81cd1f1c27f000048c7c303000000ff15f8260000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e9e81b0000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff1570260000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15242600004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ce250000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157725000048bae81cd1f1c27f000048c7c303000000ff1558250000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15042500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ae240000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff155724000048bae81cd1f1c27f000048c7c303000000ff1538240000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e970190000488b54243848b8f0f9d3f1c27f0000ff12ff74243849c7c611000000488b44241048d1e849d1ee4833d249f7f6488d045501000000488b5c24184c8b442408ff15b0230000488b1424ff12488d642408488b54243848b8d0d8d0f1c27f0000ff124c8b2c244d89ee4983fd050f85ee000000488d6424304c8b3424498b06488b5c2418ff15642300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff150e230000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b722000048bae81cd1f1c27f000048c7c303000000ff1598220000488b1424ff12488d6424104c8b2c244d8b75004983c6104d89ed4d897500e9130100004d89f64983fe03488d6424080f85eb000000488d6424284c8b3424498b06488b5c2418ff15442200004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15ee210000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159721000048bae81cd1f1c27f000048c7c303000000ff1578210000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb16488d642428488b54240848b8b8fbd3f1c27f0000ff12e9f8160000488d642408e9ff150000ff7424384d89f24d89e9488b4424104c8b442408ff1511210000488d642430e9ca160000488d642430488b54240848b8d0fbd3f1c27f0000ff124c8b2c244d8b55004d89d64c8b6424184d8b5c24f84d89d949c1e30849c1eb074983cb014e8d1cddf9ffffff4d3bd30f839e0100004d89d349d1eb4d89e44f0fb61c1c4e8d1c5d010000004983c2024d89e449c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd10f834f01000049d1ea4d89e44f0fb624144e8d2465010000004981fc010100007c204981ec000200007115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004983ec014d69e4000100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c4014983eb014d03e341547115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89ed4983c6044d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15a11f0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff154a1f000048bae81cd1f1c27f000048c7c303000000ff152b1f0000488b1424ff12488d642410e9f6140000488d64242048b858f4d3f1c27f0000488b5d08ff23488d64242048b858f4d3f1c27f0000488b5d08ff23488d642430488b54240848b8e8fbd3f1c27f0000ff12e9b1140000488d642408e9b8130000488d642408e9ae130000488d642428488b54241048b8f0f9d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd38be66f1c27f00004d89284156488b44240848c7c3010000004c8b4c24104c8b542428ff15551e0000488d642408488b54240848b8d0d8d0f1c27f0000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15551d0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15fe1c000048bae81cd1f1c27f000048c7c303000000ff15df1c0000488b1424ff12488d642410e9ca120000488d64242048b858f4d3f1c27f0000488b5d08ff23488b54243848b8f0f9d3f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24384d89ee4d89680849bd88be66f1c27f00004d89284156488b442430488b5c24084c8b4c24384c8b542450ff15541c0000488d642408488b54243048b8d0d8d0f1c27f0000ff124c8b742428498b06488b5c2440ff15231c00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74243848bae81cd1f1c27f0000488b44240848c7c303000000ff15cd1b0000488b1424ff12488d642438eb64488b54243848b8e8d8d0f1c27f0000ff12ff742438f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15761b000048bae81cd1f1c27f000048c7c303000000ff15571b0000488b1424ff12488d6424384c8b2c244d8b75004983c6084d89ed4d897500e957110000488d642408e95e100000488d642408e954100000488d6424304d89ed4d8b55004d89d44d89d04983c0024d89f34d8b73f84d89f149c1e60849c1ee074983ce014e8d34f5f9ffffff4d3bc60f83c90000004d89c649d1ee4d89db4f0fb634334e8d3475010000004983ee014d69f6000100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c6014d89db49c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd1735c49d1ea4d89db4f0fb61c134e8d1c5d010000004983eb014d03f341567115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d89e64983c6044d89ed4d897500488b54241048b800fcd3f1c27f0000ff126a01e90a140000488d64242048b858f4d3f1c27f0000488b5d08ff23488d64242048b858f4d3f1c27f0000488b5d08ff23488d642408e92f0f0000488d642408e9250f0000488d6424304d89ed4d8b5d004d89dc4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda733e49d1eb4d89f64f0fb6341e4e8d34750100000041564d89ed4d89e64983c6024d89ed4d897500488b54241048b800fcd3f1c27f0000ff126a01e9c60f0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642408e9990e0000488d642408e98f0e0000488d642408e9850e0000ff7424384d89f24d89e9488b4424104c8b442408ff152f190000488d642430e9500f0000488d642408e9570e0000ff7424384d89f24d89e9488b4424104c8b442408ff15f9180000488d642430e9220f0000488d642408e9290e0000488d642408e91f0e0000488d642408e9150e0000488d642408e90b0e0000488d6424084d89f14d89e8488b04244c8b542430ff15a5180000488d642428e9d60e0000488d6424084d89f14d89e8488b04244c8b542430ff1579180000488d642428e9b20e0000488d6424084d89f14d89e8488b04244c8b542430ff154d180000488d642428e98e0e0000488d6424084d89f14d89e8488b04244c8b542430ff1521180000488d642428e96a0e0000488d6424084d89f14d89e8488b04244c8b542430ff15f5170000488d642428e9460e0000488d6424084d89f14d89e8488b04244c8b542430ff15c9170000488d642428e9220e0000488d6424084d89f14d89e8488b04244c8b542430ff159d170000488d642428e9fe0d0000488d6424084d89f14d89e8488b04244c8b542430ff1571170000488d642428e9da0d0000488d642408e9e10c0000488d642408e9d70c0000488d642408e9cd0c0000488d642408e9c30c0000488d642408e9b90c0000488d642408e9af0c0000488d642408e9a50c0000488d642408e99b0c0000488d6424304d89ed498b45004c89f3ff15fa1600004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b818fcd3f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15a31600004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff154a16000048bae81cd1f1c27f000048c7c305000000ff152b160000488b1424ff12488d642410e9ae0c0000488d6424304d89ed498b45004c89f3ff15fe1500004989c641564c8b6c24084d8b75004983c6084d89ed4d897500488b54241048b830fcd3f1c27f0000ff12ff7424104c8b74241041ff36f64424100174074c8b6c2410eb19488b442410ff15a71500004989c64d8b364e8d2c75010000004c8b34244b8d5c2eff488d642408f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff154e15000048bae81cd1f1c27f000048c7c305000000ff152f150000488b1424ff12488d642410e9d20b0000488d642408e9d90a0000488d642430488b54240848b830fcd3f1c27f0000ff124c8b1c244d8b2b4d89ec4c8b7424184d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea0f83d300000049d1ed4d89f64f0fb6342e4e8d3475010000004981fe010100007c3b4981eefe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb004d89db4983c4024d89db4d89dd4d8923ff7424084d89ed4d8b6d004b8d5c2efff6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151b14000048bae81cd1f1c27f000048c7c305000000ff15fc130000488b1424ff12488d642408e9af0a0000488d64242048b858f4d3f1c27f0000488b5d08ff23488d642408e9a1090000488d642408e997090000488d642408e98d090000488d642408e983090000488d642408e979090000488d642408e96f090000488d642408e965090000488d642408e95b090000488d642430488b54240848b848fcd3f1c27f0000ff12e92f0a0000488d642408e936090000488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f834003000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d0c6d0f1c27f0000488b5d08ff234156488b5424184c8b2c244d89ee4983fd07750c48b860fcd3f1c27f0000eb1f4d89f64983fe01750c48b878fcd3f1c27f0000eb0a48b8b8fbd3f1c27f0000ff12488b54241848b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24184d89ee4d89680849bdd8be66f1c27f00004d89284156488b44241048c7c3010000004c8b4c24184c8b542430ff157d1100004c8b34244983fe01488d6424100f857b010000488b54240848b8d0d8d0f1c27f0000ff124c8b2c244d8b5d004d89de4c8b6424184d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff156f100000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151810000048bae81cd1f1c27f000048c7c303000000ff15f90f0000488b1424ff12488d642410eb15488d64242048b858f4d3f1c27f0000488b5d08ff23e9b5060000488d64242848b858f4d3f1c27f0000488b5d08ff234d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f832403000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64245048b8d0c6d0f1c27f0000488b5d08ff234156488b5424404c8b2c244d89ee4983fd0f750c48b890fcd3f1c27f0000eb7f4d89f64d89f54983fe0d750c48b8a8fcd3f1c27f0000eb674d89ed4d89ee4983fd0b750c48b8c0fcd3f1c27f0000eb4f4d89f64d89f54983fe09750c48b8d8fcd3f1c27f0000eb374d89ed4d89ee4983fd07750c48b8f0fcd3f1c27f0000eb1f4d89f64983fe01750c48b878fcd3f1c27f0000eb0a48b8b8fbd3f1c27f0000ff12488b54244048b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24404d89ee4d89680849bd28bf66f1c27f00004d89284156488b442438488b5c24104c8b4c24404c8b542458ff157f0d00004c8b34244983fe01488d6424100f85fc000000488d642428488b54240848b8d0d8d0f1c27f0000ff124c8b3424498b06488b5c2418ff153c0d00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74241048bae81cd1f1c27f0000488b44240848c7c303000000ff15e60c0000488b1424ff12488d642410eb64488b54241048b8e8d8d0f1c27f0000ff12ff742410f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158f0c000048bae81cd1f1c27f000048c7c303000000ff15700c0000488b1424ff12488d6424104c8b2c244d8b75004983c6084d89ed4d897500eb05488d642428e951030000488d64245048b858f4d3f1c27f0000488b5d08ff23488d642408e943020000488d642408e939020000488d642408e92f020000488d642408e925020000488d642408e91b020000488d642408e911020000488d642408e907020000488d6424284d89ed4d8b6d004d89f64d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83bd01000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5424104983fe0d750c48b808fdd3f1c27f0000eb2e4983fe09750c48b820fdd3f1c27f0000eb1c4983fe05750c48b838fdd3f1c27f0000eb0a48b8b8fbd3f1c27f0000ff12488b54241048b888d5d0f1c27f0000ff124d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b6c24104d89ee4d89680849bd78bf66f1c27f00004d89284156488b44240848c7c3050000004c8b4c24104c8b542428ff15000a0000488d642408e909010000488d64242848b858f4d3f1c27f0000488b5d08ff23488d642408ff742430f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff158809000048bae81cd1f1c27f000048c7c305000000ff1569090000488b1424ff12488d642430eb7f488d64244048b858f4d3f1c27f0000488b5d08ff23488d64242048b858f4d3f1c27f0000488b5d08ff23488d64242048b858f4d3f1c27f0000488b5d08ff23488d64242048b858f4d3f1c27f0000488b5d08ff23488d6424085a48b8a0d5d0f1c27f00004883c410ff22488d64242048b858f4d3f1c27f0000488b5d08ff23488b54240848b8a0d5d0f1c27f0000ff12483b65187303ff5558e96c42ffff4c8b2c244d89ee4983fd3d7507488d642410ebcd4d89f64c89f14983fe7f720949c7c501000000eb1449c7c5020000004889c948d1e949d3e54983cd014c8b7424084d23f54983fe010f8419030000ff742418ff75084c8d35d40200004156488965084c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be3721048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4883c408415d4c896d084d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15c307000048bae81cd1f1c27f000048c7c305000000ff15a40700004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25f105000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64243848b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff158a06000048bae81cd1f1c27f000048c7c305000000ff156b0600004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25c0040000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64243848b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff1583050000488b1424ff12488d642408488b54241848b8b0d7d0f1c27f0000ff12eb37488b65084883c408415e4c8975084c8b304983fe177515488d64243848b850fdd3f1c27f0000488b5d08ff23488d642438488b5d08ff234c8b2c244983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e967fcffff4c8b2c244d89ee4983fd3d750a488d642410e931fcffff4d89f64c89f14983fe7f720949c7c501000000eb1449c7c5020000004889c948d1e949d3e54983cd014c8b7424084d23f54983fe010f8419030000ff742418ff75084c8d35d40200004156488965084c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be3721048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4883c408415d4c896d084d8b264d89e54983fc050f851f010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15ff03000048bae81cd1f1c27f000048c7c305000000ff15e00300004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b254502000077654d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbfe94f010000488d64243848b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15c602000048bae81cd1f1c27f000048c7c305000000ff15a70200004989c64d8b2e4a8d0c6d010000004883f901750f48b828d4d3f1c27f0000e98e0000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b2514010000775e4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400866c6400970498d7608488d780a48d1e9f3a48060ffbfeb2d488d64243848b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15bf010000488b1424ff12488d642408488b54241848b8b0d7d0f1c27f0000ff12eb37488b65084883c408415e4c8975084c8b304983fe177515488d64243848b850fdd3f1c27f0000488b5d08ff23488d642438488b5d08ff234c8b2c244983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e964fcfffff4ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15395,1,@2031,@6795,@4983,@4933,@4983,@4933,@6795,@4983,@4933,@4983,@4933,@4983,@4933,@6862,@4983,@4987,@4983,@6863,@6862,@4983,@4987,@4983,@6862,@4983,@4933,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@6865,@6865,@6865,@6865,@6865,@6865,@6865,@6865,@6881,@6881,@4983,@4987,@4983,@6863,@6862,@4983,@4987,@4983,@6862,@4983,@4987,@4983,@6881,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6884,@6795,@4983,@4987,@4983,@6862,@6862,@6795,@6862,@6795,@6795,@6862,@4983,@4983,@6862,@6795,@6862,@4983,@4987,@4983,@6862,@4983,@4987,@4983,@6863,@6862,@4983,@4987,@4983,@6862,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4987,@4983,@6862,@6795,@4983,@4987,@4983,@4983,@4987,@4983,@6863,@6862,@6795,@4983,@4987,@4983,@6863,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6795,@6862,@6795,@6862,@6795,@6862,@6795,@6862,@6795,@6862,@6795,@6862,@6795,@4983,@4987,@4983,@4983,@4987,@4983,@6795,@6862,@6862,@6795,@6862,@6795,@6862,@6795,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6864,@6863,@4983,@4933,@6862,@4983,@4933,@4983,@4933,@6862,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@4983,@4933,@6862,@4983,@4933,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@4983,@4933,@6862,@6795,@6862,@6795,@4983,@4933,@9493|99,0,@9493 138,0,@9588 164,0,@15127 298,0,@10021 314,0,@10077 353,0,@9534 443,0,@15280 3143,0,@15281 3161,0,@15282 3179,0,@15283 3197,0,@15284 3215,0,@15285 3233,0,@15286 3251,0,@15287 3263,0,@15288 3280,0,@9534 3333,0,@9569 3381,0,@6821 3437,0,@15290 3650,0,@15281 3668,0,@15282 3686,0,@15283 3704,0,@15284 3722,0,@15285 3740,0,@15286 3758,0,@15287 3770,0,@15288 3787,0,@9534 3840,0,@9569 3888,0,@6822 3944,0,@15290 4187,0,@15292 4254,0,@10021 4275,0,@10077 4318,0,@15033 4499,0,@9569 4547,0,@6823 4604,0,@9487 4644,0,@15293 4711,0,@10021 4732,0,@10077 4775,0,@15033 4956,0,@9569 5004,0,@6824 5061,0,@9487 5095,0,@15294 5162,0,@10021 5183,0,@10077 5226,0,@15033 5407,0,@9569 5455,0,@6825 5512,0,@9487 5538,0,@15295 5555,0,@15296 5622,0,@10021 5643,0,@10077 5687,0,@15290 5815,0,@15297 5863,0,@6826 5911,0,@9569 5978,0,@10021 5999,0,@10077 6042,0,@15033 6224,0,@9487 6261,0,@15298 6328,0,@10021 6349,0,@10077 6392,0,@15033 6573,0,@9569 6621,0,@6827 6676,0,@9487 6702,0,@15299 6719,0,@15296 6786,0,@10021 6807,0,@10077 6851,0,@15290 6982,0,@15300 7049,0,@10021 7070,0,@10077 7113,0,@15033 7294,0,@9569 7342,0,@6828 7399,0,@9487 7439,0,@15301 7506,0,@10021 7527,0,@10077 7570,0,@15033 7751,0,@9569 7799,0,@6829 7856,0,@9487 7896,0,@15302 7963,0,@10021 7984,0,@10077 8027,0,@15033 8208,0,@9569 8256,0,@6830 8313,0,@9487 8353,0,@15303 8420,0,@10021 8441,0,@10077 8484,0,@15033 8665,0,@9569 8713,0,@6831 8770,0,@9487 8810,0,@15304 8877,0,@10021 8898,0,@10077 8941,0,@15033 9122,0,@9569 9170,0,@6832 9227,0,@9487 9264,0,@15305 9331,0,@10021 9352,0,@10077 9395,0,@15033 9576,0,@9569 9624,0,@6833 9679,0,@9487 9716,0,@15306 9764,0,@6834 9812,0,@9569 9879,0,@10021 9900,0,@10077 9943,0,@15033 10125,0,@9487 10159,0,@15306 10226,0,@10021 10247,0,@10077 10290,0,@15033 10471,0,@9569 10519,0,@6835 10576,0,@9487 10602,0,@15307 10619,0,@15296 10686,0,@10021 10707,0,@10077 10751,0,@15290 10848,0,@15308 10865,0,@9534 10979,0,@10021 10995,0,@10077 11104,0,@15309 11121,0,@9534 11235,0,@10021 11251,0,@10077 11360,0,@15310 11377,0,@9534 11491,0,@10021 11507,0,@10077 11616,0,@15311 11633,0,@9534 11747,0,@10021 11763,0,@10077 11872,0,@15312 11889,0,@9534 12003,0,@10021 12019,0,@10077 12128,0,@15313 12145,0,@9534 12259,0,@10021 12275,0,@10077 12384,0,@15314 12401,0,@9534 12515,0,@10021 12531,0,@10077 12640,0,@15315 12657,0,@9534 12771,0,@10021 12787,0,@10077 12896,0,@15316 12913,0,@9534 13027,0,@10021 13043,0,@10077 13152,0,@15317 13169,0,@9534 13283,0,@10021 13299,0,@10077 13408,0,@15318 13425,0,@9534 13539,0,@10021 13555,0,@10077 13664,0,@15319 13681,0,@9534 13795,0,@10021 13811,0,@10077 13920,0,@15320 13937,0,@9534 14051,0,@10021 14067,0,@10077 14176,0,@15321 14193,0,@9534 14307,0,@10021 14323,0,@10077 14432,0,@15322 14449,0,@9534 14563,0,@10021 14579,0,@10077 14688,0,@15323 14705,0,@9534 14819,0,@10021 14835,0,@10077 14979,0,@15324 15032,0,@9569 15080,0,@6836 15136,0,@15290 15257,0,@15325 15310,0,@9569 15358,0,@6837 15415,0,@15290 15536,0,@15325 15589,0,@9569 15637,0,@6838 15694,0,@15290 15812,0,@15326 15860,0,@6839 15906,0,@9569 15964,0,@15290 15985,0,@15327 16042,0,@10077 16088,0,@9570 16149,0,@10077 16193,0,@15327 16250,0,@10077 16296,0,@9570 16357,0,@10077 16401,0,@15290 16574,0,@15281 16592,0,@15282 16610,0,@15283 16628,0,@15284 16646,0,@15285 16664,0,@15286 16682,0,@15287 16694,0,@15288 16711,0,@9534 16764,0,@9569 16812,0,@6840 16868,0,@15290 17081,0,@15281 17099,0,@15282 17117,0,@15283 17135,0,@15284 17153,0,@15285 17171,0,@15286 17189,0,@15287 17201,0,@15288 17218,0,@9534 17271,0,@9569 17319,0,@6841 17375,0,@15290 17588,0,@15281 17606,0,@15282 17624,0,@15283 17642,0,@15284 17660,0,@15285 17678,0,@15286 17696,0,@15287 17708,0,@15288 17725,0,@9534 17778,0,@9569 17826,0,@6842 17882,0,@15290 18095,0,@15281 18113,0,@15282 18131,0,@15283 18149,0,@15284 18167,0,@15285 18185,0,@15286 18203,0,@15287 18215,0,@15288 18232,0,@9534 18285,0,@9569 18333,0,@6843 18389,0,@15290 18602,0,@15281 18620,0,@15282 18638,0,@15283 18656,0,@15284 18674,0,@15285 18692,0,@15286 18710,0,@15287 18722,0,@15288 18739,0,@9534 18792,0,@9569 18840,0,@6844 18896,0,@15290 19109,0,@15281 19127,0,@15282 19145,0,@15283 19163,0,@15284 19181,0,@15285 19199,0,@15286 19217,0,@15287 19229,0,@15288 19246,0,@9534 19299,0,@9569 19347,0,@6845 19403,0,@15290 19690,0,@15328 19826,0,@15328 19898,0,@9487 19985,0,@15328 20121,0,@15328 20193,0,@9487 20280,0,@15328 20416,0,@15328 20488,0,@9487 20575,0,@15328 20711,0,@15328 20783,0,@9487 20870,0,@15328 21006,0,@15328 21078,0,@9487 21165,0,@15328 21301,0,@15328 21373,0,@9487 21460,0,@15328 21596,0,@15328 21668,0,@9487 21755,0,@15328 21891,0,@15328 21963,0,@9487 22050,0,@15329 22186,0,@15329 22258,0,@9487 22345,0,@15329 22481,0,@15329 22553,0,@9487 22640,0,@15329 22776,0,@15329 22848,0,@9487 22935,0,@15329 23071,0,@15329 23143,0,@9487 23230,0,@15329 23366,0,@15329 23438,0,@9487 23525,0,@15329 23661,0,@15329 23733,0,@9487 23820,0,@15329 23956,0,@15329 24028,0,@9487 24115,0,@15329 24251,0,@15329 24323,0,@9487 24429,0,@15328 24509,0,@10077 24555,0,@9570 24616,0,@10077 24755,0,@15324 24808,0,@9569 24856,0,@6846 24907,0,@9569 24988,0,@10077 25034,0,@9570 25095,0,@10077 25158,0,@15290 25184,0,@15328 25288,0,@9475 25315,0,@9475 25394,0,@10077 25440,0,@9570 25501,0,@10077 25545,0,@15290 25642,0,@15324 25695,0,@9569 25743,0,@6847 25794,0,@9569 25904,0,@9475 25931,0,@9475 26010,0,@10077 26056,0,@9570 26117,0,@10077 26161,0,@15290 26182,0,@15290 26248,0,@15330 26350,0,@9475 26377,0,@9475 26464,0,@10021 26480,0,@10077 26524,0,@15290 26550,0,@15331 26652,0,@9475 26679,0,@9475 26766,0,@10021 26782,0,@10077 26826,0,@15290 26852,0,@15332 26954,0,@9475 26981,0,@9475 27068,0,@10021 27084,0,@10077 27128,0,@15290 27154,0,@15333 27256,0,@9475 27283,0,@9475 27370,0,@10021 27386,0,@10077 27430,0,@15290 27456,0,@15334 27558,0,@9475 27585,0,@9475 27672,0,@10021 27688,0,@10077 27732,0,@15290 27758,0,@15335 27860,0,@9475 27887,0,@9475 27974,0,@10021 27990,0,@10077 28034,0,@15290 28060,0,@15336 28162,0,@9475 28189,0,@9475 28276,0,@10021 28292,0,@10077 28336,0,@15290 28362,0,@15337 28464,0,@9475 28491,0,@9475 28578,0,@10021 28594,0,@10077 28638,0,@15290 28664,0,@15338 28766,0,@9475 28793,0,@9475 28880,0,@10021 28896,0,@10077 28940,0,@15290 28966,0,@15339 29068,0,@9475 29095,0,@9475 29182,0,@10021 29198,0,@10077 29242,0,@15290 29268,0,@15340 29370,0,@9475 29397,0,@9475 29484,0,@10021 29500,0,@10077 29544,0,@15290 29570,0,@15341 29672,0,@9475 29699,0,@9475 29786,0,@10021 29802,0,@10077 29846,0,@15290 29872,0,@15342 29974,0,@9475 30001,0,@9475 30088,0,@10021 30104,0,@10077 30148,0,@15290 30174,0,@15343 30276,0,@9475 30303,0,@9475 30390,0,@10021 30406,0,@10077 30450,0,@15290 30476,0,@15344 30578,0,@9475 30605,0,@9475 30692,0,@10021 30708,0,@10077 30752,0,@15290 30778,0,@15345 30880,0,@9475 30907,0,@9475 30994,0,@10021 31010,0,@10077 31054,0,@15290 31267,0,@9475 31370,0,@9475 31397,0,@15281 31415,0,@15282 31433,0,@15283 31451,0,@15284 31469,0,@15285 31487,0,@15286 31505,0,@15287 31517,0,@15288 31534,0,@9534 31582,0,@6848 31635,0,@9569 31739,0,@9475 31766,0,@9475 31845,0,@10077 31891,0,@9570 31952,0,@10077 31996,0,@15290 32017,0,@15290 32225,0,@9475 32328,0,@9475 32355,0,@15281 32373,0,@15282 32391,0,@15283 32409,0,@15284 32427,0,@15285 32445,0,@15286 32463,0,@15287 32475,0,@15288 32492,0,@9534 32540,0,@6849 32591,0,@9569 32672,0,@10077 32718,0,@9570 32779,0,@10077 32842,0,@15290 33060,0,@9475 33163,0,@9475 33190,0,@15281 33208,0,@15282 33226,0,@15283 33244,0,@15284 33262,0,@15285 33280,0,@15286 33298,0,@15287 33310,0,@15288 33327,0,@9534 33375,0,@6850 33426,0,@9569 33536,0,@9475 33563,0,@9475 33642,0,@10077 33688,0,@9570 33749,0,@10077 33793,0,@15290 33814,0,@15290 33941,0,@15346 33989,0,@6851 34035,0,@9569 34093,0,@15290 34306,0,@9475 34409,0,@9475 34432,0,@15347 34480,0,@6852 34528,0,@9569 34575,0,@9475 34591,0,@10077 34634,0,@9639 34813,0,@9591 34998,0,@9487 35019,0,@9487 35146,0,@15049 35173,0,@15053 35200,0,@15057 35227,0,@15061 35264,0,@15065 35276,0,@15348 35313,0,@15069 35325,0,@15349 35362,0,@15073 35374,0,@15350 35411,0,@15077 35423,0,@15351 35444,0,@10077 35492,0,@9639 35666,0,@9487 35687,0,@15290 35784,0,@15347 35832,0,@6853 35878,0,@9569 35936,0,@15290 36043,0,@15347 36096,0,@9569 36144,0,@6854 36200,0,@15290 36307,0,@15352 36360,0,@9569 36408,0,@6855 36464,0,@15290 36500,0,@15329 36548,0,@6856 36611,0,@15353 36737,0,@15354 36761,0,@15355 36828,0,@15356 36914,0,@15357 36933,0,@15358 36969,0,@15357 36988,0,@15359 37024,0,@15360 37043,0,@15361 37080,0,@15362 37184,0,@9475 37211,0,@9475 37290,0,@10077 37336,0,@9570 37397,0,@10077 37441,0,@15290 37486,0,@15357 37505,0,@15363 37541,0,@15357 37580,0,@15364 37604,0,@15365 37746,0,@15347 37826,0,@9569 37928,0,@10077 37974,0,@9570 38035,0,@10077 38184,0,@10077 38230,0,@9570 38291,0,@10077 38356,0,@15366 38378,0,@15347 38458,0,@9569 38560,0,@10077 38606,0,@9570 38667,0,@10077 38816,0,@10077 38862,0,@9570 38923,0,@10077 38988,0,@15366 39010,0,@15347 39090,0,@9569 39192,0,@10077 39238,0,@9570 39299,0,@10077 39448,0,@10077 39494,0,@9570 39555,0,@10077 39620,0,@15366 39642,0,@15347 39722,0,@9569 39824,0,@10077 39870,0,@9570 39931,0,@10077 40080,0,@10077 40126,0,@9570 40187,0,@10077 40252,0,@15366 40274,0,@15347 40354,0,@9569 40456,0,@10077 40502,0,@9570 40563,0,@10077 40712,0,@10077 40758,0,@9570 40819,0,@10077 40884,0,@15366 40906,0,@15347 40986,0,@9569 41088,0,@10077 41134,0,@9570 41195,0,@10077 41344,0,@10077 41390,0,@9570 41451,0,@10077 41516,0,@15366 41538,0,@15347 41618,0,@9569 41720,0,@10077 41766,0,@9570 41827,0,@10077 41976,0,@10077 42022,0,@9570 42083,0,@10077 42148,0,@15366 42170,0,@15347 42250,0,@9569 42352,0,@10077 42398,0,@9570 42459,0,@10077 42608,0,@10077 42654,0,@9570 42715,0,@10077 42780,0,@15366 42853,0,@15367 43018,0,@9475 43054,0,@9475 43090,0,@9475 43165,0,@10077 43211,0,@9570 43272,0,@10077 43316,0,@15290 43337,0,@15290 43363,0,@15368 43410,0,@15347 43458,0,@6857 43511,0,@9569 43615,0,@9475 43642,0,@9475 43721,0,@10077 43767,0,@9570 43828,0,@10077 43872,0,@15290 43893,0,@15347 43941,0,@6858 43992,0,@9569 44073,0,@10077 44119,0,@9570 44180,0,@10077 44359,0,@9475 44442,0,@9475 44480,0,@15369 44504,0,@15290 44525,0,@15290 44651,0,@15369 44675,0,@15290 45262,0,@15370 45376,0,@10021 45392,0,@10077 45482,0,@15371 45596,0,@10021 45612,0,@10077 45671,0,@15371 45773,0,@9475 45800,0,@9475 45887,0,@10021 45903,0,@10077 45947,0,@15290 46053,0,@15372 46277,0,@9475 46380,0,@9475 46416,0,@15373 46437,0,@15374 46449,0,@15366 46466,0,@9534 46514,0,@6859 46581,0,@9569 46685,0,@9475 46712,0,@9475 46791,0,@10077 46837,0,@9570 46898,0,@10077 46939,0,@15290 46965,0,@15290 47173,0,@9475 47276,0,@9475 47312,0,@15375 47336,0,@15376 47360,0,@15377 47384,0,@15378 47408,0,@15379 47429,0,@15374 47441,0,@15366 47458,0,@9534 47506,0,@6860 47576,0,@9569 47656,0,@10077 47702,0,@9570 47763,0,@10077 47833,0,@15290 48116,0,@9475 48219,0,@9475 48246,0,@15380 48264,0,@15381 48282,0,@15382 48294,0,@15366 48311,0,@9534 48359,0,@6861 48417,0,@15290 48493,0,@10021 48514,0,@10077 48555,0,@15290 48576,0,@15290 48597,0,@15290 48618,0,@15290 48640,0,@9535 48661,0,@15290 48682,0,@9535 48841,0,@9998 48935,0,@10021 48951,0,@10077 48994,0,@15033 49165,0,@9487 49232,0,@10021 49248,0,@10077 49291,0,@15034 49455,0,@9487 49511,0,@9557 49553,0,@15383 49595,0,@9475 49765,0,@9998 49859,0,@10021 49875,0,@10077 49918,0,@15033 50089,0,@9487 50156,0,@10021 50172,0,@10077 50215,0,@15034 50379,0,@9487 50435,0,@9557 50477,0,@15383 50519,0,@9475 6821:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@1990,@6795| 6822:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@1991,@6795| 6823:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1992,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6824:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1993,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6825:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1994,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6826:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1995,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6827:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@1996,@6795| 6828:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1997,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6829:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1998,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6830:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@1999,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6831:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@2000,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6832:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@2001,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6833:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2002,@6795| 6834:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@2003,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6835:D5,312|483b65187306ff5558ca0d01ff7208a80174084883f8017d15eb154c0fb670ff4e8d3475010000004983fe237402eb134889c348b8f814d1f1c27f0000ff151501000048bae81cd1f1c27f000048c7c305000000ff15f60000004989c64d8b2e4a8d0c6d010000004883f901750f48b810d4d3f1c27f0000e9920000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b258300000077684d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400878c640096dc6400a6d498d7608488d780b48d1e9f3a48060ffbf5aff22488d642408488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@15289,1,@2004,@4983,@4933|53,0,@10021 69,0,@10077 112,0,@15033 286,0,@9487 6836:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2005,@6795| 6837:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2006,@6795| 6838:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2007,@6795| 6839:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2008,@6795| 6840:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2009,@6795| 6841:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2010,@6795| 6842:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2011,@6795| 6843:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2012,@6795| 6844:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2013,@6795| 6845:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2014,@6795| 6846:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2015,@6795| 6847:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2016,@6795| 6848:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2017,@6795| 6849:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2018,@6795| 6850:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2019,@6795| 6851:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2020,@6795| 6852:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2021,@6795| 6853:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2022,@6795| 6854:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2023,@6795| 6855:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2024,@6795| 6856:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2025,@6795| 6857:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2026,@6795| 6858:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2027,@6795| 6859:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2028,@6795| 6860:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2029,@6795| 6861:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2030,@6795| 6862:D49,6024|483b65187306ff5558ca09074989c34c89c24989d8415141524c8b4c24084d8b294d89ea4c8b34244d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83f316000049d1ed4d89f64f0fb62c2e4e8d2c6d010000004d89c94983c2024d89c94d89cc4d89114d89da4983e2054983fa01750949c7c203000000eb0749c7c2010000004983f20241524983e3034983fb01750949c7c303000000eb0749c7c3010000004983f30241534983f805750c48b8d0fdd3f1c27f0000eb2e4983f803750c48b8f0fdd3f1c27f0000eb1c4983f807750c48b810fed3f1c27f0000eb0a48b830fed3f1c27f00004d89eb49c1eb064983cb0141534983e50f41554c8b5c24084d89dd4983fb010f85910b00004c8b1c244d89dd4983fb0b0f8509010000488d642420488b542418ff12488b54241848b850fed3f1c27f0000ff124c8b742408498b06488b1c24ff15b41700004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74242048bae81cd1f1c27f0000488b44240848c7c303000000ff155e170000488b1424ff12488d642418eb64488b54242048b8e8d8d0f1c27f0000ff12ff742420f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150717000048bae81cd1f1c27f000048c7c303000000ff15e8160000488b1424ff12488d6424184c8b2c244d8b75004983c6084d89ed4d897500488d642408c208004d89ed4983fd090f8525060000488d6424084d89e44d8b1c244d89dd4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83dd05000049d1eb4d89f64f0fb6341e4e8d3475010000004d89e44983c5024d89e44d892c244d89f549c1ed064983cd0141554d89f549c1ed034983cd014983e50f41554983e60f4156488b542448ff124c8b7424184d89f54983fe010f85fb0000004c8b34244983fe0b0f85e80000004c8b742438498b06488b5c2430ff15fb1500004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff15a5150000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff154e15000048bae81cd1f1c27f000048c7c303000000ff152f150000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500eb00e9730200004d89ed4d89ee4983fd050f85eb0000004c8b742438498b06488b5c2430ff15de1400004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff1588140000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153114000048bae81cd1f1c27f000048c7c303000000ff1512140000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500e9780100004d89f64983fe030f856b0100004c8b6c24384d8b5d004d89de4c8b6424304d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64244048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff15f6120000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159f12000048bae81cd1f1c27f000048c7c303000000ff1580120000488b1424ff12488d642410eb15488d64244048b858f4d3f1c27f0000488b5d08ff23488b54244848b838ddd0f1c27f0000ff124c8b7424184983fe017402eb114c8b34244983fe0b7507488d642408eb43ff742448488b442408488b5c242849c7c005000000ff150c120000488b1424ff12488d6424104c8b34244983fe097502eb11488b54244048b8d0d8d0f1c27f0000ff124c8b34244c89f04983fe0975154c8b7424204983fe03740a488d642438e94a010000ff742440488b5c242849c7c005000000ff15a41100004989c34c8b7424104d89f54983fe01750c49bd68fed3f1c27f0000eb374d89ed4d89ee4983fd03750c49bd80fed3f1c27f0000eb1f4d89f64983fe05750c49bd98fed3f1c27f0000eb0a49bdb0fed3f1c27f00004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89d8e9a20000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0de70f00000f87970000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf488b1424ff12488d642440488b54240848b868ddd0f1c27f00004c8b34244c897424084883c408ff22488d64244048b8f8c7d0f1c27f0000488b5d08ff23488d64242848b858f4d3f1c27f0000488b5d08ff23488b542438ff124c8b6c24084d89ee4983fd030f856e0100004c8b6c24284d8b5d004d89de4c8b6424204d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff15240f0000488b1424ff12488d642410eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15cd0e000048bae81cd1f1c27f000048c7c303000000ff15ae0e0000488b1424ff12488d642410e90a010000488d64243048b858f4d3f1c27f0000488b5d08ff234d89f64983fe050f85e80000004c8b742428498b06488b5c2420ff15610e00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff150b0e0000488b1424ff12488d642410eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b40d000048bae81cd1f1c27f000048c7c303000000ff15950d0000488b1424ff12488d6424104c8b6c24284d8b75004983c6084d89ed4d897500eb00ff742438488b442408488b5c241849c7c005000000ff15510d00004989c64d8b2e4a8d0c6d010000004883f901750f49bd38ddd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d2e0c00000f87400100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085b498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b868ddd0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d730b0000777c4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604305d8060ffbf488b14244c8b7424384c897424404883c440ff22488d642408488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff234d89ed4983fd07751658488b5c24084c8b7424284c897424304883c430ff224c8b2c244983fd090f8525060000488d6424084d89e44d8b1c244d89dd4d89f64d8b56f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83dd05000049d1eb4d89f64f0fb6341e4e8d3475010000004d89e44983c5024d89e44d892c244d89f549c1ed064983cd0141554d89f549c1ed034983cd014983e50f41554983e60f4156488b542448ff124c8b7424184d89f54983fe010f85fb0000004c8b34244983fe0b0f85e80000004c8b742438498b06488b5c2430ff15bc0a00004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff15660a0000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150f0a000048bae81cd1f1c27f000048c7c303000000ff15f0090000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500eb00e9730200004d89ed4d89ee4983fd050f85eb0000004c8b742438498b06488b5c2430ff159f0900004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff1549090000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15f208000048bae81cd1f1c27f000048c7c303000000ff15d3080000488b1424ff12488d6424104c8b6c24384d8b75004983c6084d89ed4d897500e9780100004d89f64983fe030f856b0100004c8b6c24384d8b5d004d89de4c8b6424304d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832301000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64244048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74245048bae81cd1f1c27f0000488b44240848c7c303000000ff15b7070000488b1424ff12488d642410eb64488b54245048b8e8d8d0f1c27f0000ff12ff742450f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff156007000048bae81cd1f1c27f000048c7c303000000ff1541070000488b1424ff12488d642410eb15488d64244048b858f4d3f1c27f0000488b5d08ff23488b54244848b838ddd0f1c27f0000ff124c8b7424184983fe017402eb114c8b34244983fe0b7507488d642408eb43ff742448488b442408488b5c242849c7c005000000ff15cd060000488b1424ff12488d6424104c8b34244983fe097502eb11488b54244048b8d0d8d0f1c27f0000ff124c8b34244c89f04983fe0975154c8b7424204983fe03740a488d642438e94a010000ff742440488b5c242849c7c005000000ff15650600004989c34c8b7424104d89f54983fe01750c49bd68fed3f1c27f0000eb374d89ed4d89ee4983fd03750c49bd80fed3f1c27f0000eb1f4d89f64983fe05750c49bd98fed3f1c27f0000eb0a49bdb0fed3f1c27f00004d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175084c89e8e9b00000004983fc0175084c89d8e9a20000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d380500000f87970000004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf488b1424ff12488d642440488b54240848b868ddd0f1c27f00004c8b34244c897424084883c408ff22488d64244048b8f8c7d0f1c27f0000488b5d08ff23488d64242848b858f4d3f1c27f0000488b5d08ff23488b542438ff124c8b6c24084d89ee4983fd030f856e0100004c8b6c24284d8b5d004d89de4c8b6424204d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f832601000049d1eb4d89e44f0fb6241c4e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff15e5030000488b1424ff12488d642410eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158e03000048bae81cd1f1c27f000048c7c303000000ff156f030000488b1424ff12488d642410e90a010000488d64243048b858f4d3f1c27f0000488b5d08ff234d89f64983fe050f85e80000004c8b742428498b06488b5c2420ff15220300004989c64156f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74244048bae81cd1f1c27f0000488b44240848c7c303000000ff15cc020000488b1424ff12488d642410eb64488b54244048b8e8d8d0f1c27f0000ff12ff742440f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157502000048bae81cd1f1c27f000048c7c303000000ff1556020000488b1424ff12488d6424104c8b6c24284d8b75004983c6084d89ed4d897500eb00ff742438488b442408488b5c241849c7c005000000ff15120200004989c64d8b2e4a8d0c6d010000004883f901750f49bd38ddd0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d7f0100000f87400100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c645085b498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b868ddd0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc4000000777c4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604305d8060ffbf488b14244c8b7424384c897424404883c440ff22488d642408488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64241048b858f4d3f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15443,1,@2054,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6795,@6795,@4983,@4987,@4983,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6863,@6795,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6795,@6795,@4983,@4987,@4983,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6863,@4983,@4987,@4983,@6863|183,0,@15386 201,0,@15387 219,0,@15388 231,0,@15389 312,0,@15390 392,0,@10077 438,0,@9570 499,0,@10077 801,0,@10077 847,0,@9570 908,0,@10077 1054,0,@10077 1100,0,@9570 1161,0,@10077 1326,0,@9475 1353,0,@9475 1432,0,@10077 1478,0,@9570 1539,0,@10077 1580,0,@15290 1601,0,@9616 1698,0,@9569 1783,0,@15391 1807,0,@15392 1828,0,@15393 1840,0,@15394 2079,0,@9618 2109,0,@9487 2130,0,@15290 2264,0,@9475 2291,0,@9475 2370,0,@10077 2416,0,@9570 2477,0,@10077 2521,0,@15290 2619,0,@10077 2665,0,@9570 2726,0,@10077 2829,0,@9616 3008,0,@9618 3202,0,@9487 3223,0,@9487 3512,0,@10077 3558,0,@9570 3619,0,@10077 3765,0,@10077 3811,0,@9570 3872,0,@10077 4037,0,@9475 4064,0,@9475 4143,0,@10077 4189,0,@9570 4250,0,@10077 4291,0,@15290 4312,0,@9616 4409,0,@9569 4494,0,@15391 4518,0,@15392 4539,0,@15393 4551,0,@15394 4790,0,@9618 4820,0,@9487 4841,0,@15290 4975,0,@9475 5002,0,@9475 5081,0,@10077 5127,0,@9570 5188,0,@10077 5232,0,@15290 5330,0,@10077 5376,0,@9570 5437,0,@10077 5540,0,@9616 5719,0,@9618 5913,0,@9487 5934,0,@9487 5955,0,@15290 6863:D10,672|483b65187305ff5558cd094989c64c8b6bf84d89eb49c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bf50f83560200004d89f549d1ed4e0fb62c2b4e8d246d010000004d89f54983c5024d89d949c1e30849c1eb074983cb014e8d1cddf9ffffff4d3beb0f830c02000049d1ed4e0fb62c2b4e8d2c6d010000004d89f34983c3044d89ca49c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd90f83c501000049d1eb4e0fb61c1b4e8d1c5d010000004983c60649c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bf20f838401000049d1ee4e0fb634334e8d34750100000041f6c601740b4981fe010100007c15eb184d0fb656ff4e8d1455010000004983fa0374054c89f0eb3041f6c601740e4c89f04881e8000200007002eb1c4c89f048c7c301020000415441554153ff15b1010000415b415d415ca80174194989c64983ee014d69f60001000070094c89f04883c001eb1948c7c301020000415441554153ff1573010000415b415d415ca801741441f6c301740e4d89de4983ee014c03f07002eb144c89db41544155ff1540010000415d415c4989c641f6c50174164c89e84883e8014869c00001000070064883c001eb184c89e848c7c30102000041544156ff1501010000415e415ca801741441f6c401740e4d89e54983ed014c03e87002eb104c89e34156ff15d2000000415e4989c541f6c60174194d89f44983ec014d69e40000010070094d89e64983c601eb174c89f048c7c3010002004155ff1594000000415d4989c641f6c601741441f6c501740e4c89e84883e8014903c67002eb0c4c89eb4c89f0ff1561000000c348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff23f400000000000000|@15396,1,@2032,@4933,@6552,@4933,@6552,@4933,@6552,@4987|602,0,@15290 618,0,@15290 634,0,@15290 650,0,@15290 6864:D3,72|49bb10d47f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@15397,1,@2033|2,0,@19874 6865:D132,15040|483b65187306ff5558ca090750534150415141524c8b7424104d8b2e4c8b7424084d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83a339000049d1ed4d89f64f0fb6342e4e8d34750100000041564c8b342449c1ee034983ce014983e60f4c8b6424284d89e54983e40f4c8b14244d89d34981e2810100004981fa810100000f85f62800004d89db4983e30f4983fc010f856f1000004983fe030f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15ee3d000048bae81cd1f1c27f000048c7c305000000ff15cf3d00004989c64d8b2e4e8d246d010000004983fc01750f49bd60ffd3f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15643900000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb60ffd3f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8d38000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9710e0000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15bb3b000048bae81cd1f1c27f000048c7c305000000ff159c3b00004989c64d8b2e4e8d246d010000004983fc01750f49bd80ffd3f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15313700000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80ffd3f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5a36000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e94e0c0000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe070f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff158839000048bae81cd1f1c27f000048c7c305000000ff15693900004989c64d8b2e4e8d246d010000004983fc01750f49bda0ffd3f1c27f0000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15fe3400000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bba0ffd3f1c27f000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d2734000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e92b0a0000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe0f0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff155537000048bae81cd1f1c27f000048c7c305000000ff15363700004989c64d8b2e4e8d246d010000004983fc01750f49bdc0ffd3f1c27f0000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15cb3200000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbc0ffd3f1c27f000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df431000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e908080000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe0d0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff152235000048bae81cd1f1c27f000048c7c305000000ff15033500004989c64d8b2e4e8d246d010000004983fc01750f49bde0ffd3f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15983000000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbe0ffd3f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc12f000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9e5050000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe0b0f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15ef32000048bae81cd1f1c27f000048c7c305000000ff15d03200004989c64d8b2e4e8d246d010000004983fc01750f49bd0000d4f1c27f0000e9ae0000004d89e34983c3184c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15652e00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb0000d4f1c27f000048c7c119000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1448d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d8e2d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9c2030000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe090f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15bc30000048bae81cd1f1c27f000048c7c305000000ff159d3000004989c64d8b2e4e8d246d010000004983fc01750f49bd2000d4f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15322c00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb2000d4f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b2b000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e99f010000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff158a2e0000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15332e000048bae81cd1f1c27f000048c7c303000000ff15142e0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15b82d0000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15612d000048bae81cd1f1c27f000048c7c303000000ff15422d0000488b1424ff12488d642420e9521800004983fc0b0f85e30700004983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15d52c000048bae81cd1f1c27f000048c7c305000000ff15b62c00004989c64d8b2e4e8d246d010000004983fc01750f49bd4000d4f1c27f0000e9ae0000004d89e34983c3124c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b157b2800000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb4000d4f1c27f000048c7c113000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1148d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da427000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9e5050000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe070f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15a22a000048bae81cd1f1c27f000048c7c305000000ff15832a00004989c64d8b2e4e8d246d010000004983fc01750f49bd6000d4f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15482600000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb6000d4f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7125000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e9c2030000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe050f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff156f28000048bae81cd1f1c27f000048c7c305000000ff15502800004989c64d8b2e4e8d246d010000004983fc01750f49bd7800d4f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15152400000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb7800d4f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d3e23000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e99f010000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff153d260000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15e625000048bae81cd1f1c27f000048c7c303000000ff15c7250000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff156b250000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151425000048bae81cd1f1c27f000048c7c303000000ff15f5240000488b1424ff12488d642420e9651000004983fc0f0f85a10100004983fe0975214983fb01751b488d6424085a48b89000d4f1c27f0000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff1562240000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150b24000048bae81cd1f1c27f000048c7c303000000ff15ec230000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff1590230000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153923000048bae81cd1f1c27f000048c7c303000000ff151a230000488b1424ff12488d642420e9ba0e00004983fc030f853b0d00004983fe030f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff15ad22000048bae81cd1f1c27f000048c7c305000000ff158e2200004989c64d8b2e4e8d246d010000004983fc01750f49bdb000d4f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b31e00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb000d4f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1ddc1d000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e93d0b0000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe010f8519020000488d642408ff342441f6c30174084983fb017d15eb184d0fb673ff4e8d3475010000004983fe2374054c89d8eb134c89db48b8f814d1f1c27f0000ff157a20000048bae81cd1f1c27f000048c7c305000000ff155b2000004989c64d8b2e4e8d246d010000004983fc01750f49bdc800d4f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15801c00000f87530100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbc800d4f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b888d8d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1da91b000077734d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c60430298060ffbf488b1424ff12488d642418e91a090000488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff234983fe0f0f85dd0100004983fb0f751b488d6424085a48b8e000d4f1c27f0000ff124883c408e9b70100004983fb05751b488d6424085a48b8f800d4f1c27f0000ff124883c408e9960100004983fb0d751b488d6424085a48b81001d4f1c27f0000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15db1d0000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15841d000048bae81cd1f1c27f000048c7c303000000ff15651d0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15091d0000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15b21c000048bae81cd1f1c27f000048c7c303000000ff15931c0000488b1424ff12488d642420e9090700004983fe0d0f85dd0100004983fb0f751b488d6424085a48b82801d4f1c27f0000ff124883c408e9b70100004983fb07751b488d6424085a48b84001d4f1c27f0000ff124883c408e9960100004983fb0d751b488d6424085a48b85801d4f1c27f0000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15c41b0000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff156d1b000048bae81cd1f1c27f000048c7c303000000ff154e1b0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15f21a0000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff159b1a000048bae81cd1f1c27f000048c7c303000000ff157c1a0000488b1424ff12488d642420e9220500004983fe0b0f85dd0100004983fb0d751b488d6424085a48b87001d4f1c27f0000ff124883c408e9b70100004983fb03751b488d6424085a48b88801d4f1c27f0000ff124883c408e9960100004983fb01751b488d6424085a48b8a001d4f1c27f0000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15ad190000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff155619000048bae81cd1f1c27f000048c7c303000000ff1537190000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15db180000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158418000048bae81cd1f1c27f000048c7c303000000ff1565180000488b1424ff12488d642420e93b0300004983fe090f85bc0100004983fb03751b488d6424085a48b8b801d4f1c27f0000ff124883c408e9960100004983fb01751b488d6424085a48b8d001d4f1c27f0000ff124883c408e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15b7170000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff156017000048bae81cd1f1c27f000048c7c303000000ff1541170000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15e5160000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff158e16000048bae81cd1f1c27f000048c7c303000000ff156f160000488b1424ff12488d642420e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff150d160000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15b615000048bae81cd1f1c27f000048c7c303000000ff1597150000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff153b150000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15e414000048bae81cd1f1c27f000048c7c303000000ff15c5140000488b1424ff12488d642420e9750100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff1563140000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150c14000048bae81cd1f1c27f000048c7c303000000ff15ed130000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb444c8b34244d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff1591130000488b1424ff12488d642420eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153a13000048bae81cd1f1c27f000048c7c303000000ff151b130000488b1424ff12488d6424204c8b2c244d8b75004983c6024d89ed4d897500488d64240848c7c0010000004883c410c34983fc0b0f85f20200004983fe077579488d642408488b142448b8e801d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be481b67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff255b1200004983fe057579488d642408488b142448b80002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be981b67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25d41100004983fe017579488d642408488b142448b81802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bee81b67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff254d1100004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15fb100000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15a410000048bae81cd1f1c27f000048c7c303000000ff1585100000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15291000005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15d30f000048bae81cd1f1c27f000048c7c303000000ff15b40f00005a4883c430ff22488d6424084983fc090f85ee0400004983fe0f7579488d642408488b142448b83002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be381c67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25170f00004983fe0d7579488d642408488b142448b84802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be881c67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25900e00004983fe097579488d642408488b142448b86002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bed81c67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25090e00004983fe037579488d642408488b142448b87802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be281d67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25820d00004983fe0b7579488d642408488b142448b89002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be781d67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25fb0c00004983fe077579488d642408488b142448b8a802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bec81d67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25740c00004983fe017579488d642408488b142448b8c002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be181e67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25ed0b00004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff159b0b0000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15440b000048bae81cd1f1c27f000048c7c303000000ff15250b0000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15c90a00005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15730a000048bae81cd1f1c27f000048c7c303000000ff15540a00005a4883c430ff22488d6424084983fc0f0f85f40100004983fe0b7579488d642408488b142448b8d802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be681e67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25b70900004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff1565090000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff150e09000048bae81cd1f1c27f000048c7c303000000ff15ef080000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15930800005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff153d08000048bae81cd1f1c27f000048c7c303000000ff151e0800005a4883c430ff22488d6424084983fc070f85f40100004983fe017579488d642408488b142448b8f002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849beb81e67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3050000004c896424084c892c24ff25810700004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff152f070000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15d806000048bae81cd1f1c27f000048c7c303000000ff15b9060000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff155d0600005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff150706000048bae81cd1f1c27f000048c7c303000000ff15e80500005a4883c430ff22488d6424084983fc030f85f20200004983fe077579488d642408488b142448b8e801d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be081f67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff254b0500004983fe057579488d642408488b142448b80002d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849be581f67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff25c40400004983fe017579488d642408488b142448b81802d4f1c27f0000ff12488b4424184d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b34244d89f44d89700849bea81f67f1c27f00004d89304c8b4c24104c8b5424084d89e4488d6424204c8b6c240848c7c3030000004c896424084c892c24ff253d0400004d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff15eb030000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff159403000048bae81cd1f1c27f000048c7c303000000ff1575030000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15190300005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff15c302000048bae81cd1f1c27f000048c7c303000000ff15a40200005a4883c430ff22488d6424084d89ee41f6c501740b4d89f64983fe017d18eb434d89f64d0fb676ff4e8d3475010000004983fe23742dff74240848bae81cd1f1c27f0000488b44243048c7c303000000ff1546020000488b1424ff12488d642408eb64488b54240848b8e8d8d0f1c27f0000ff12ff742408f644243001741448c7c001000000482b44243070064883c001eb1248c7c001000000488b5c2430ff15ef01000048bae81cd1f1c27f000048c7c303000000ff15d0010000488b1424ff12488d642408f6042401740c4c8b34244983fe017d19eb434c8b34244d0fb676ff4e8d3475010000004983fe23742cff74240848bae81cd1f1c27f0000488b44240848c7c303000000ff15740100005a4883c430ff22488d642418488b54240848b8e8d8d0f1c27f0000ff12ff742408f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff151e01000048bae81cd1f1c27f000048c7c303000000ff15ff0000005a4883c430ff22488d642408488d64242848b858f4d3f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15434,1,@2049,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@6862,@6862,@6862,@4983,@4987,@4983,@4983,@4987,@4983,@6862,@4983,@4987,@4983,@4983,@4987,@4983,@6862,@4983,@4987,@4983,@4983,@4987,@4983,@6862,@6862,@6862,@6862,@6862,@6862,@6862,@4983,@4987,@4983,@4983,@4987,@4983,@6862,@6862,@6862,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4933,@4983,@4933,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4987,@4983,@4983,@4987,@4983,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933,@4983,@4933|220,0,@10021 236,0,@10077 279,0,@15398 417,0,@15398 486,0,@9566 671,0,@9487 692,0,@9487 767,0,@10021 783,0,@10077 826,0,@15399 964,0,@15399 1033,0,@9566 1218,0,@9487 1239,0,@9487 1314,0,@10021 1330,0,@10077 1373,0,@15400 1511,0,@15400 1580,0,@9566 1765,0,@9487 1786,0,@9487 1861,0,@10021 1877,0,@10077 1920,0,@15401 2058,0,@15401 2127,0,@9566 2312,0,@9487 2333,0,@9487 2408,0,@10021 2424,0,@10077 2467,0,@15402 2605,0,@15402 2674,0,@9566 2859,0,@9487 2880,0,@9487 2955,0,@10021 2971,0,@10077 3014,0,@15403 3152,0,@15403 3221,0,@9566 3406,0,@9487 3427,0,@9487 3502,0,@10021 3518,0,@10077 3561,0,@15404 3699,0,@15404 3768,0,@9566 3953,0,@9487 3974,0,@9487 4036,0,@10077 4082,0,@9570 4143,0,@10077 4222,0,@10077 4268,0,@9570 4329,0,@10077 4437,0,@10021 4453,0,@10077 4496,0,@15405 4634,0,@15405 4703,0,@9566 4888,0,@9487 4909,0,@9487 4984,0,@10021 5000,0,@10077 5043,0,@15406 5181,0,@15406 5250,0,@9566 5435,0,@9487 5456,0,@9487 5531,0,@10021 5547,0,@10077 5590,0,@15407 5728,0,@15407 5797,0,@9566 5982,0,@9487 6003,0,@9487 6065,0,@10077 6111,0,@9570 6172,0,@10077 6251,0,@10077 6297,0,@9570 6358,0,@10077 6425,0,@15408 6492,0,@10077 6538,0,@9570 6599,0,@10077 6678,0,@10077 6724,0,@9570 6785,0,@10077 6893,0,@10021 6909,0,@10077 6952,0,@15409 7090,0,@15409 7159,0,@9566 7344,0,@9487 7365,0,@9487 7440,0,@10021 7456,0,@10077 7499,0,@15410 7637,0,@15410 7706,0,@9566 7891,0,@9487 7912,0,@9487 7950,0,@15411 7983,0,@15412 8016,0,@15413 8083,0,@10077 8129,0,@9570 8190,0,@10077 8269,0,@10077 8315,0,@9570 8376,0,@10077 8437,0,@15414 8470,0,@15415 8503,0,@15416 8570,0,@10077 8616,0,@9570 8677,0,@10077 8756,0,@10077 8802,0,@9570 8863,0,@10077 8924,0,@15417 8957,0,@15418 8990,0,@15419 9057,0,@10077 9103,0,@9570 9164,0,@10077 9243,0,@10077 9289,0,@9570 9350,0,@10077 9411,0,@15420 9444,0,@15421 9511,0,@10077 9557,0,@9570 9618,0,@10077 9697,0,@10077 9743,0,@9570 9804,0,@10077 9889,0,@10077 9935,0,@9570 9996,0,@10077 10075,0,@10077 10121,0,@9570 10182,0,@10077 10267,0,@10077 10313,0,@9570 10374,0,@10077 10453,0,@10077 10499,0,@9570 10560,0,@10077 10655,0,@15422 10709,0,@6866 10782,0,@15423 10836,0,@6867 10909,0,@15424 10963,0,@6868 11067,0,@10077 11113,0,@9570 11174,0,@10077 11253,0,@10077 11298,0,@9570 11359,0,@10077 11419,0,@15425 11473,0,@6869 11546,0,@15426 11600,0,@6870 11673,0,@15427 11727,0,@6871 11800,0,@15428 11854,0,@6872 11927,0,@15429 11981,0,@6873 12054,0,@15430 12108,0,@6874 12181,0,@15431 12235,0,@6875 12339,0,@10077 12385,0,@9570 12446,0,@10077 12525,0,@10077 12570,0,@9570 12631,0,@10077 12691,0,@15432 12745,0,@6876 12849,0,@10077 12895,0,@9570 12956,0,@10077 13035,0,@10077 13080,0,@9570 13141,0,@10077 13201,0,@15433 13255,0,@6877 13359,0,@10077 13405,0,@9570 13466,0,@10077 13545,0,@10077 13590,0,@9570 13651,0,@10077 13711,0,@15422 13765,0,@6878 13838,0,@15423 13892,0,@6879 13965,0,@15424 14019,0,@6880 14123,0,@10077 14169,0,@9570 14230,0,@10077 14309,0,@10077 14354,0,@9570 14415,0,@10077 14496,0,@10077 14542,0,@9570 14603,0,@10077 14682,0,@10077 14727,0,@9570 14788,0,@10077 14828,0,@15290 6866:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2034,@6795| 6867:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2035,@6795| 6868:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2036,@6795| 6869:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2037,@6795| 6870:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2038,@6795| 6871:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2039,@6795| 6872:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2040,@6795| 6873:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2041,@6795| 6874:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2042,@6795| 6875:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2043,@6795| 6876:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2044,@6795| 6877:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2045,@6795| 6878:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2046,@6795| 6879:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2047,@6795| 6880:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2048,@6795| 6881:D9,1064|483b65187306ff5558ca090750534150415141524c8b7424084d8b2e4c8b34244d8b66f849c1e40849c1ec074983cc014e8d24e5f9ffffff4d3bec0f83ce03000049d1ed4d89f64f0fb6342e4e8d2c75010000004c89e849c7c61100000048d1f849d1fe489949f7fe4c8d3445010000004c89e849c7c51100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb524983fd017d0949c7c503000000eb0749c7c5010000004983fd01750949c7c503000000eb0749c7c5010000004983fd0374204c89f04883e8027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb034c89f049c7c61100000048d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c601000000eb394983fe017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c6107115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5424304983fe0f750c48b84803d4f1c27f0000eb2e4983fe0b750c48b86003d4f1c27f0000eb1c4983fe09750c48b87803d4f1c27f0000eb0a48b8b8fbd3f1c27f0000ff12488b54243048b888d5d0f1c27f0000ff124c8b7424304d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849be782467f1c27f00004d89304c8b7424304156488b442420488b5c24184c8b4c24104c8b542408ff1571020000488b54243048b8d0d8d0f1c27f0000ff1248b89003d4f1c27f0000ff15480200004989c54c8b7424204d3bf57523488d642428488b54240848b848d9d0f1c27f00004c8b34244c897424084883c408ff2248b8a003d4f1c27f0000ff15000200004989c54c8b7424204d3bf57523488d642428488b54240848b828d6d3f1c27f00004c8b34244c897424084883c408ff224c8b6c24084d8b5d004d89de4c8b24244d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f834001000049d1eb4d89e44f0fb6241c488d6424084e8d2465010000004981fc010100007c3b4981ecfe0100007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ec027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0041544d89ed4983c6024d89ed4d897500f6042401740c4c8b34244983fe017d19eb504c8b34244d0fb676ff4e8d3475010000004983fe237439ff74243048bae81cd1f1c27f0000488b44240848c7c303000000ff15e1000000488b14244c8b7424304c897424384883c438ff22488d642410488b54243048b8e8d8d0f1c27f0000ff12ff742430f644240801741448c7c001000000482b44240870064883c001eb1248c7c001000000488b5c2408ff157e00000048bae81cd1f1c27f000048c7c303000000ff155f000000488b14244c8b7424304c897424384883c438ff22488d642408488d64242848b858f4d3f1c27f0000488b5d08ff23488d64242848b858f4d3f1c27f0000488b5d08ff23f4000000|@15440,1,@2051,@4983,@4987,@4983,@6883,@6883,@6862|216,0,@9475 319,0,@9475 346,0,@15435 364,0,@15436 382,0,@15437 394,0,@15366 411,0,@9534 459,0,@6882 510,0,@9569 522,0,@15438 561,0,@9574 586,0,@15439 625,0,@15053 747,0,@9475 774,0,@9475 853,0,@10077 911,0,@9570 972,0,@10077 1025,0,@15290 1046,0,@15290 6882:D4,32|483b65187306ff5558ca0d01ff7208ff15230000005aff22488d642408f40000|@15289,1,@2050,@6795| 6883:D3,1448|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e983010000909090e9f1010000909090e9f1010000909090e9f1010000909090e9f1010000909090e9ac020000909090e967030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e96b030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e976030000909090e981030000909090e981030000909090e981030000909090e98c030000909090e98c030000909090e98c030000909090e98c030000909090e9fb030000909090e9fb030000909090e9fb030000909090e9fb0300009090904c8b70084c8b68104983fe05750949c7c60f000000eb434983fe0b750949c7c60d000000eb344983fe09750949c7c60b000000eb254983fe03750949c7c609000000eb164983fe07750949c7c603000000eb0749c7c6010000004e8d34f5f9ffffff4981e6ff0100004b8d442eff4881e0ff010000c348c7c0d1010000c348c7c033010000c348c7c055000000c34c8b70084d89f54c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb76eb5ceb7b48c7c00f000000eb7948c7c005000000eb7048c7c009000000eb6748c7c01f000000eb5e48c7c01b000000eb5548c7c019000000eb4c48c7c01d000000eb4348c7c00d000000eb3a48c7c007000000eb3148c7c00b000000eb284983fe15750948c7c003000000eb0748c7c001000000eb1048c7c017000000eb0748c7c0150000004881c0e00000004881e0ff010000c34c8b70084d89f54c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb76eb5ceb7b48c7c00f000000eb7948c7c005000000eb7048c7c009000000eb6748c7c01f000000eb5e48c7c01b000000eb5548c7c019000000eb4c48c7c01d000000eb4348c7c00d000000eb3a48c7c007000000eb3148c7c00b000000eb284983fe15750948c7c003000000eb0748c7c001000000eb1048c7c017000000eb0748c7c0150000004881c0000100004881e0ff010000c3488b40084881c8b1010000c348c7c003010000c348c7c007010000c348c7c001010000c348c7c0a3010000c348c7c083010000c348c7c0a7010000c348c7c0ef010000c348c7c0ed010000c348c7c0ff010000c348c7c0e9010000c348c7c05f010000c348c7c0d3000000c348c7c0d7000000c348c7c0d3010000c348c7c0d7010000c348c7c01b010000c348c7c083010000c348c7c08d010000c348c7c011010000c3488b40084881c0700100004881e0ff010000c348c7c08f010000c348c7c017010000c348c7c017010000c348c7c013010000c348c7c013010000c348c7c013010000c348c7c06d010000c348c7c06f010000c348c7c021010000c348c7c01f010000c3488b40084881c0b00000004881e0ff010000c348c7c0d1000000c348c7c0d5000000c3488b40084881c0a00000004881e0ff010000c348c7c0e7010000c348c7c087010000c348c7c085010000c34c8b70084c8d2d080000004f8d6c35ff41ffe5eb12eb18eb1eeb24eb2aeb30eb36eb3ceb42eb4848c7c0b1000000c348c7c0a9000000c348c7c05d000000c348c7c0bd000000c348c7c0b5000000c348c7c021000000c348c7c0b5000000c348c7c0b3000000c348c7c0b9000000c348c7c0af000000c348c7c023000000c348c7c023000000c348c7c051010000c348c7c00f010000c3f40000|@15441,1,@2052| 6884:D18,1440|483b65187305ff5558cd094989c64c8b6bf84d89eb49c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bf50f83580500004d89f549d1ed4e0fb62c2b4e8d2c6d010000004d89f44983c4024d89da49c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be30f830e05000049d1ec4e0fb624234e8d2465010000004d89f34983c3044d89d149c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bda0f83c704000049d1eb4e0fb61c1b4e8d1c5d010000004d89f24983c2064d89c849c1e10849c1e9074983c9014e8d0ccdf9ffffff4d3bd10f838004000049d1ea4e0fb614134e8d1455010000004d89f14983c1084c89c749c1e00849c1e8074983c8014e8d04c5f9ffffff4d3bc80f833904000049d1e94e0fb60c0b4e8d0c4d010000004d89f04983c00a4889fa48c1e70848c1ef074883cf01488d3cfdf9ffffff4c3bc70f83f203000049d1e84e0fb604034e8d0445010000004c89f74883c70c4889d648c1e20848c1ea074883ca01488d14d5f9ffffff483bfa0f83ab03000048d1ef480fb63c3b488d3c7d010000004983c60e48c1e60848c1ee074883ce01488d34f5f9ffffff4c3bf60f836a03000049d1ee4e0fb634334e8d34750100000041f6c601740b4981fe010100007c15eb18490fb676ff488d3475010000004883fe0374054c89f0eb3e41f6c601740e4c89f04881e8000200007002eb2a4c89f048c7c30102000041554154415341524151415057ff150e0400005f41584159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2a48c7c30102000041554154415341524151415057ff15c50300005f41584159415a415b415c415d4989c641f6c601741440f6c701740e4889f84883e8014903c67002eb244889fb4c89f0415541544153415241514150ff157b03000041584159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2848c7c301020000415541544153415241514150ff153403000041584159415a415b415c415d4989c641f6c601741441f6c001740e4c89c04883e8014903c67002eb204c89c34c89f041554154415341524151ff15ed0200004159415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2448c7c30102000041554154415341524151ff15aa0200004159415a415b415c415d4989c641f6c601741441f6c101740e4c89c84883e8014903c67002eb1c4c89cb4c89f04155415441534152ff1567020000415a415b415c415da80174164989c64983ee014d69f60001000070064983c601eb2048c7c3010200004155415441534152ff1528020000415a415b415c415d4989c641f6c601741441f6c201740e4c89d04883e8014903c67002eb184c89d34c89f0415541544153ff15e9010000415b415c415da80174164989c64983ee014d69f60001000070064983c601eb1c48c7c301020000415541544153ff15ae010000415b415c415d4989c641f6c601741441f6c301740e4c89d84883e8014903c67002eb144c89db4c89f041554154ff1573010000415c415da80174164989c64983ee014d69f60001000070064983c601eb1848c7c30102000041554154ff153c010000415c415d4989c641f6c601741441f6c401740e4c89e04883e8014903c67002eb104c89e34c89f04155ff1505010000415da80174164989c64983ee014d69f60001000070064983c601eb1448c7c3010200004155ff15d2000000415d4989c641f6c601741441f6c501740e4c89e84883e8014903c67002eb0c4c89eb4c89f0ff159f000000c348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff2348b858f4d3f1c27f0000488b5d08ff23f40000000000|@15442,1,@2053,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4987|1308,0,@15290 1324,0,@15290 1340,0,@15290 1356,0,@15290 1372,0,@15290 1388,0,@15290 1404,0,@15290 1420,0,@15290 6885:D6,520|483b65187306ff5558ca0901534c8b70084d8b264d89e54983fc01755c4d8b66084c8b284d8b70f849c1e60849c1ee074983ce014c3b34247715488d64240848b840e0d3f1c27f0000488b5d08ff234c8b1c244d89de4f896498fc4d89f64e8d34f5f9ffffff4d2bf54983ee0749c7c409000000e9000100004d89ec4983fd05754e4d8b7608488b184d8b68f849c1e50849c1ed074983cd014e8d2cedf9ffffff4c3beb7715488d64240848b89804d4f1c27f0000488b5d08ff234c89c04d89f049c7c103000000ff156201000058c34d89e54983fc03754e4d8b7608488b184d8b68f849c1e50849c1ed074983cd014e8d2cedf9ffffff4c3beb7715488d64240848b89804d4f1c27f0000488b5d08ff234c89c04d89f049c7c101000000ff150301000058c34d89ee4983fe0b7547488b184d8b70f849c1e60849c1ee074983ce014e8d34f5f9ffffff4c3bf37715488d64240848b89804d4f1c27f0000488b5d08ff234c89c049c7c101000000ff15ab00000058c358c34983fc01750e488b04244883c002488d642408c34d89f34981e3ff0100004d8b50f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bea733d49d1eb4d89ea49d1ea47881c104d89f349c1eb084983cb014d89ea4983c2024d89e14983e9024d89cc4d89d54d89de483b65187306ff5558ca0071eb88488d64240848b8a8dfd3f1c27f0000488b5d08ff23f400|@15446,1,@2055,@6886,@6886,@6886|65,0,@15132 173,0,@15444 260,0,@15444 343,0,@15444 504,0,@15129 6886:D3,48|49bb40d47f0bc37f00004d8b1b4989e5488b65304881ec900000004889c74889de4c89c24c89c941ffd34c89ecc3f400|@15447,1,@2056|2,0,@19875 6887:D3,72|49bb68d47f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@15448,1,@2057|2,0,@19876 6888:D9,760|483b65187306ff5558ca09035053415041514c8b7424084983fe01750d488d64242048c7c001000000c349c7c6010200004983fe017515488d64242048b88005d4f1c27f0000488b5d08ff23f6442418017421488b44241849c7c60102000048d1f849d1fe489949f7fe488d045501000000eb12488b44241848c7c301020000ff15b20200004883f8017505e982000000a80174184883f8017c0949c7c603000000eb0749c7c601000000eb234c0fb670ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037427a801740e4989c64981c6000200007002eb1048c7c301020000ff15250200004989c64c89f0eb00a80174054989c6eb14ff15060200004989c64d8b364e8d3475010000004981e6ff0100004c8b2c244d8b65f849c1e40849c1ec074983cc014e8d14e5f9ffffff4c8b5c24104d89dc4d3bda0f837301000049d1ee4d89e449d1ec4d89ed4788742500f644241801741d4c8b7424184983fe017c0949c7c603000000eb0749c7c601000000eb284c8b7424184d0fb676ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037507488b442418eb4d48c7c3010200004883eb027002eb1748c7c00102000048c7c303000000ff152f0100004889c3f6442418017415f6c3017410488b442418482bc370064883c001eb0b488b442418ff15fd00000049c7c6010200004983fe017515488d64242048b8d805d4f1c27f0000488b5d08ff23a801745549c7c6010200004983feff751b483b059b000000750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983f6024983fe03751c49c7c60102000048d1f849d1fe489949f7fe488d044501000000eb0d48c7c301020000ff156d000000488b5c24104883c3024c8b4424084983e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff2341594883c418e929fdffff488d64242048b8a8dfd3f1c27f0000488b5d08ff23f40000000100000000000080|@15453,1,@2058,@6890,@4987,@4987,@6864,@4933,@6889|62,0,@15449 559,0,@15451 702,0,@9475 734,0,@15129 6889:D3,80|49bb90d47f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@15455,1,@2060|2,0,@19877 6890:D3,80|49bbb8d47f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@15454,1,@2059|2,0,@19878 6891:D9,1384|483b65187306ff5558ca09034d89c65041514c8b234d89e54983fc070f854f020000488b430841ff364d89f048c7c3010000004c8b4c2408ff156a050000488b1c24482b5c2410488d6424084883eb07f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff151b050000a801742848d1f84d8d67f04c3b65107303ff55504d89e749c74424f80100000041c64424ff0149890424eb09ff15e10400004989c44d8b2c244d89eb49c1ed184d89ee4e8d3475010000004981e6ff0100004d89d949c1eb104d89dd4e8d1c6d010000004981e3ff0100004d89ca49c1e9084d89cd4e8d2c6d010000004981e5ff0100004d89d44e8d1465010000004981e2ff0100004c8b0c244d8b61f849c1e40849c1ec074983cc014e8d04e5f9ffffff4c8b6424084c89e74d3be00f831401000049d1ea4889ff4989f848d1ef4d89c94d89cc458814394d89c04d89c14983c0024d89e44d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bc20f83ba00000049d1ed49d1e84d89e44d89e247882c044d89c94d89cc4983c1044d89d24d8b6af849c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bcd736b49d1eb49d1e94d89d24d89d547881c0a4d89e44983c4064d89ed4d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be3731f49d1ee49d1ec4d89ed4788742500488d64240848c7c0010000004883c408c3488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff234983fd090f85dc0200004c8b430841ff3641f6c0017415488d64241848b808afd1f1c27f0000488b5d08ff234d8b68f849c1e50849c1ed074983cd014a8d1cedf9ffffff4883fb110f85830200004d0fb668ff4e8d2c6d010000004981e5ff0100004983fd03750949c7c503000000eb0749c7c5010000004983fd030f85480200004d89f148c7c0010000004c8b542408ff1588020000488b1c24482b5c2410488d6424084883eb07f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff1539020000a801742848d1f84d8d67f04c3b65107303ff55504d89e749c74424f80100000041c64424ff0149890424eb09ff15ff0100004989c44d8b2c244d89eb49c1ed184d89ee4e8d3475010000004981e6ff0100004d89d949c1eb104d89dd4e8d1c6d010000004981e3ff0100004d89ca49c1e9084d89cd4e8d2c6d010000004981e5ff0100004d89d44e8d1465010000004981e2ff0100004c8b0c244d8b61f849c1e40849c1ec074983cc014e8d04e5f9ffffff4c8b6424084c89e74d3be00f831401000049d1ea4889ff4989f848d1ef4d89c94d89cc458814394d89c04d89c14983c0024d89e44d8b5424f849c1e20849c1ea074983ca014e8d14d5f9ffffff4d3bc20f83ba00000049d1ed49d1e84d89e44d89e247882c044d89c94d89cc4983c1044d89d24d8b6af849c1e50849c1ed074983cd014e8d2cedf9ffffff4d3bcd736b49d1eb49d1e94d89d24d89d547881c0a4d89e44983c4064d89ed4d8b5df849c1e30849c1eb074983cb014e8d1cddf9ffffff4d3be3731f49d1ee49d1ec4d89ed4788742500488d64240848c7c0010000004883c408c3488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d64241048b8a8dfd3f1c27f0000488b5d08ff23488d642418eb05488d64241848b8c006d4f1c27f0000488b5d08ff23488d64241048c7c001000000c3f4000000|@15459,1,@2061,@6864,@4933,@6893,@6864,@4933,@6892|119,0,@10021 548,0,@15129 569,0,@15129 590,0,@15129 611,0,@15129 655,0,@11081 833,0,@10021 1262,0,@15129 1283,0,@15129 1304,0,@15129 1325,0,@15129 1353,0,@15456 6892:D9,1184|483b65187306ff5558ca09035053415041514c8b7424104983fe11750d488d64242048c7c001000000c349c7c6010200004983fe017515488d64242048b88005d4f1c27f0000488b5d08ff23f6442418017421488b44241849c7c60102000048d1f849d1fe489949f7fe488d045501000000eb12488b44241848c7c301020000ff155a0400004883f8017505e982000000a80174184883f8017c0949c7c603000000eb0749c7c601000000eb234c0fb670ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037427a801740e4989c34981c3000200007002eb1048c7c301020000ff15cd0300004989c34c89d8eb00a80174054989c3eb14ff15ae0300004989c64d8b364e8d1c75010000004981e3ff0100004d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049c7442408010000004d891c2449c7c5010000004d89e641f6c60175364d8b4e084d89ea4983c2027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1da5020000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4d8b2e4e8d2c6d0100000049c7c4010000004d3be50f8248010000f644241801741d4c8b7424184983fe017c0949c7c603000000eb0749c7c601000000eb284c8b7424184d0fb676ff4e8d3475010000004983fe03750949c7c603000000eb0749c7c6010000004983fe037507488b442418eb4d48c7c3010200004883eb027002eb1748c7c00102000048c7c303000000ff15890100004889c3f6442418017415f6c3017410488b442418482bc370064883c001eb0b488b442418ff155701000049c7c6010200004983fe017515488d64242048b8d805d4f1c27f0000488b5d08ff23a801745549c7c6010200004983feff751b483b05ed000000750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983f6024983fe03751c49c7c60102000048d1f849d1fe489949f7fe488d044501000000eb0d48c7c301020000ff15c7000000488b5c24104883c3024c8b4424084159488d642418e9f5fbffff4d89e34983c31049d1eb4f0fb61c1e4c8b5424084d8b024c8b0c24498b71f848c1e60848c1ee074883ce01488d34f5f9ffffff4c3bc6733549d1e84d89c947881c014d89d24d8b1a4983c3024d89d24d891a4d89e34983c3024d89dc483b65187306ff5558ca0070e942feffff488d64242048b8a8dfd3f1c27f0000488b5d08ff23f400000100000000000080ffffffffffffff01|@15461,1,@2063,@6890,@4987,@4987,@6864,@4933,@6889|62,0,@15449 388,0,@9475 440,0,@9496 585,0,@9487 606,0,@9490 893,0,@15451 1151,0,@15129 6893:D3,552|483b65187306ff5558ca09074989c64c3bf3750848c7c001000000c34d89f549d1ed4f0fb62c284a8d3c6d010000004d8d5fe84c3b5d107306ff5550ca88474d89df49c743f80200000049c743080100000049893b49c7c4010000004d89dd41f6c5017531498b55084c89e64883c602711048b8d0c6d0f1c27f0000488b5d08ff234989d54989f4483b65187306ff5558ca887febc94983fc010f8ca30000004983fc03751449bd30c9d0f1c27f00004d8b6cbdfce9d40000004c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d3c4501000000483b3d3d010000774e4889fe4c8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca885f4d89ef48d1ee498975f841c645ff414883ef0249c744bdfc0000000049d1ec4d89650049c7c411000000eb2048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2341f6c3017530498b3b498b730848d1ef4c89e248d1ea41887c15004c89e74883c7024989f34989fc483b65187306ff5558ca087febca418065ffbf4d8b65004e8d24650100000049c7c3010000004d3bdc720c4c89f04883c002e94efeffff4c89df4883c71048d1ef490fb67c3d00498b31498b4af848c1e10848c1e9074883c901488d0ccdf9ffffff483bf1732948d1ee41883c32498b394883c7024989394c89df4883c7024989fb483b65187306ff5558ca087feb9648b8a8dfd3f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@15460,1,@2062|116,0,@9475 168,0,@9496 309,0,@9487 325,0,@9490 525,0,@15129 6894:D7,1496|483b65187305ff5558cd09f6c3010f85900000004c8b234d8b34244d8b5c24084d8b6c24104d8b6424184983fd03750949c7c511000000eb0749c7c5010000004981cd810000004983fb03750949c7c309000000eb0749c7c3010000004d0beb4983fc03750949c7c405000000eb0749c7c4010000004d0bec4d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564c8b284d89ee4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a6000000909090e9aa000000909090e90b000000909090e90300000090909049c7c501000000e99500000049bd3808d4f1c27f0000e98600000049bd5008d4f1c27f0000eb7a49bd6808d4f1c27f0000eb6e4c8b68084983fd0d750c49bd8008d4f1c27f0000eb404983fd13750c49bd6808d4f1c27f0000eb2e4983fd03750c49bd6808d4f1c27f0000eb1c4983fd05750c49bd6808d4f1c27f0000eb0a49bd3808d4f1c27f0000eb1649bd3808d4f1c27f0000eb0a49bd8008d4f1c27f000041554c8d2d080000004f8d6cb5fc41ffe5e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d3000000909090e9d7000000909090e90b000000909090e90300000090909049c7c601000000e9c200000049be9808d4f1c27f0000e9b300000049be9808d4f1c27f0000e9a400000049be9808d4f1c27f0000e99500000049be9808d4f1c27f0000e98600000049be9808d4f1c27f0000eb7a49be9808d4f1c27f0000eb6e4c8b70084983fe0d750c49be9808d4f1c27f0000eb404983fe13750c49be9808d4f1c27f0000eb2e4983fe03750c49be9808d4f1c27f0000eb1c4983fe05750c49be9808d4f1c27f0000eb0a49be9808d4f1c27f0000eb1649be9808d4f1c27f0000eb0a49be9808d4f1c27f00004156ff15ae0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175035beb12488b0424ff156a0000004889c3488d6424084883fb017507488b5c2408eb0e488b442408ff15420000004889c34883fb017506584883c408c3584883c408ff2520000000f400000000000000|@15467,1,@2064,@6896,@6897,@6895,@6883|600,0,@15462 615,0,@15463 627,0,@15464 649,0,@15465 667,0,@15464 685,0,@15464 703,0,@15464 715,0,@15462 727,0,@15462 739,0,@15465 1170,0,@15466 1185,0,@15466 1200,0,@15466 1215,0,@15466 1230,0,@15466 1242,0,@15466 1264,0,@15466 1282,0,@15466 1300,0,@15466 1318,0,@15466 1330,0,@15466 1342,0,@15466 1354,0,@15466 6895:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2067| 6896:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2065| 6897:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2066| 6898:D23,4536|483b65187306ff5558ca09034989dd4c8b304c8d25080000004f8d64b4fc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a7010000909090e980020000909090e993010000909090e9ee040000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9bc050000909090e95b010000909090e953010000909090e94b010000909090e97d060000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e957070000909090e9e3000000909090e93d080000909090e9d3000000909090e9cb000000909090e929080000909090e95a0a0000909090e9b3000000909090e9ab000000909090e9d20b0000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e9000e0000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e9a10e0000909090e90b000000909090e9030000009090904c89c8c34c8b70204d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff1538100000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c8b70184d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff153b0f0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234983fc050f857b0100004d8b760848c7c001000000482b05d90d00007002eb2448c7c001000000488b1dbf0d00004155415041514156ff15610e0000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff152f0e0000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b355f0d00007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15a20d0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c89c8c34c8b70084d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15a00c0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c8b70104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15b30b0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c8b700849bce008d4f1c27f0000f2410f1036f20f10ee66410f2e34247a047502eb2e49bcf008d4f1c27f0000f20f10f566410f2e2c247a047502eb1449bc0009d4f1c27f000066410f2e34247a0675044c89c8c34d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15790a0000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c8b70084d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff157f090000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c89c8c34c8b70104d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff157a080000415e415941584989c541f6c50174774f8d6c28ff4983ed104d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234983fc050f85360100004d8b760841f6c601740b4981fe010000807c15eb154d0fb666ff4e8d2465010000004983fc037402eb2b41f6c601740e4c3b351b0700007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff1536070000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c89c8c34c8b70104d8b264983fc050f857b0100004d8b760848c7c001000000482b05ed0500007002eb2448c7c001000000488b1dd30500004155415041514156ff154d060000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff151b060000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b35730500007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff158e050000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c89c8c34c8b70084d8b1e4d89dc4983fb010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff1589040000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424010000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234983fc050f857b0100004d8b760848c7c001000000482b05570300007002eb2448c7c001000000488b1d3d0300004155415041514156ff15af030000415e41594158415da801740d41f6c6017407493bc67f24eb244c89f34155415041514156ff157d030000415e41594158415d4989c44983fc017e02eb2b41f6c601740e4c3b35dd0200007d1ce9f40000004d0fb666ff4e8d2465010000004983fc230f84dd0000004d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15f0020000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c34c89c8c34c8b70104d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff15ff010000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424030000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c8b70184d8b264983fc010f85e10000004d8b76084d8b6d004a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989ddeb1f48b8f814d1f1c27f0000415041514156ff1505010000415e415941584989c541f6c50174774f8d6c28ff4983ed084d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d8974240849c70424090000004d8d77e84c3b75107306ff5550ca00324d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00424989c748c740f8020000004c8948084c8930c348b80815d1f1c27f0000488b5d08ff234c89c8c3f400000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100008000000000010000000100000001000000010000000000000001000000|@15471,1,@2068,@4933,@4933,@4933,@6558,@4987,@4933,@4933,@6558,@4987,@4933,@4933,@4933,@4933,@4933,@4933,@4933,@6558,@4987,@4933,@4933|540,0,@10021 696,0,@10022 785,0,@10021 941,0,@10022 1170,0,@10021 1326,0,@10022 1420,0,@10021 1576,0,@10022 1649,0,@10021 1805,0,@10022 1825,0,@15468 1856,0,@15469 1882,0,@15470 1955,0,@10021 2111,0,@10022 2197,0,@10021 2353,0,@10022 2450,0,@10021 2606,0,@10022 2766,0,@10021 2922,0,@10022 3166,0,@10021 3322,0,@10022 3419,0,@10021 3575,0,@10022 3804,0,@10021 3960,0,@10022 4037,0,@10021 4193,0,@10022 4279,0,@10021 4435,0,@10022 6899:D7,1112|483b65187306ff5558ca09034989dd5041514983f8017d07488d642410eb624c3b052a0400007d544c89c14e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1e84d8946f841c646ff404c89f748d1e948c7c0fffffffff348ab41564c8b6424104d89eb49c7c601000000eb15488d64241048b8d015d1f1c27f0000488b5d08ff2341f6c4010f85f400000041f6c3010f85ea000000498b3c244d8b5424084d8b034d8b4b08488b374883fe31753c488b7708488b3c24488b57f848c1e20848c1ea074883ca01483bf27215488d64241848b80017d1f1c27f0000488b5d08ff234889ff4c8974b7fceb004d8b004a8d1c4501000000f6c30174084883fb017d15eb184c0fb643ff4e8d0445010000004983f82374054989d8eb2b48b8f814d1f1c27f0000415541544153415641524151ff15420300004159415a415e415b415c415d4989c041f6c001741f4f8d4406ff4d89c64d89cb4d89d4483b65187306ff5558ca0078e917ffffff488d64241848b80815d1f1c27f0000488b5d08ff2341554156ff742420ff7424106a016a01f6442418010f85ed000000f6442410010f85e20000004c8b6c24184d8b75004d89ed41ff75084c8b6424184d8b2c244d89e441ff7424084d8b65004a8d1c6501000000f6c30174084883fb017d15eb184c0fb663ff4e8d2465010000004983fc2374054989dbeb1b48b8f814d1f1c27f000041564155ff1565020000415d415e4989c341f6c301745a4c8b6424184d89e04f8d641cff41544c89eb4c89f04c8b4c24184c8b542448ff152b0200004989c24c8b6c24104c8b642408415b488d6424104c8914244c895c24084c896424104c896c2418483b65187303ff5558e91dffffff488d64245848b80815d1f1c27f0000488b5d08ff23415e49c7c5010000004883c41841f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b7424204d89eb49c7c40100000041f6c6010f85f300000041f6c3010f85e9000000498b3e4d8b56084d8b034d8b4b08488b374883fe31753d488b7708488b7c2410488b57f848c1e20848c1ea074883ca01483bf27215488d64242848b80017d1f1c27f0000488b5d08ff234889ff4c8964b7fceb004d8b004a8d1c4501000000f6c30174084883fb017d15eb184c0fb643ff4e8d0445010000004983f82374054989d8eb2b48b8f814d1f1c27f0000415541564153415441524151ff15c60000004159415a415c415b415e415d4989c041f6c001741f4f8d4404ff4d89c44d89cb4d89d6483b65187306ff5558ca0078e918ffffff488d64242848b80815d1f1c27f0000488b5d08ff234c3b242475234c8b6424184d892c244c8b34244d89742408488d64240848c7c0010000004883c420c34c3b24247615488d64242848b84009d4f1c27f0000488b5d08ff234c8924244c896c2408483b65187303ff5558e945fdfffff400ffffffffffffff01|@15489,1,@2069,@4933,@6900,@4933,@4933|131,0,@10027 226,0,@10034 300,0,@10021 385,0,@10022 521,0,@10021 649,0,@10022 838,0,@10034 912,0,@10021 997,0,@10022 1065,0,@15472 6900:D47,8832|483b65187306ff5558ca09074989de41514c8b284c8d25080000004f8d64acfc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b7010000909090e983010000909090e991040000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e9c0080000909090e9fb000000909090e985090000909090e9e6090000909090e9e3000000909090e9c00c0000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e9730c0000909090e91b000000909090e913000000909090e90b000000909090e903000000909090498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b6d004983fd070f85ac0200004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1b48b8f814d1f1c27f000041564150ff158b2100004158415e4989c441f6c4010f84420200004d89e34983eb087115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8b2e4e8d2c6d010000004983fb010f8cfa0100004d3bdd0f87dc0100004d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d8975104d895d0849c7450001000000415541f6c00174084983f8017d15eb184d0fb670ff4e8d3475010000004983fe2374054d89c5eb1a4c89c348b8f814d1f1c27f00004154ff15ce200000415c4989c541f6c5010f84500100004d89e64983ee014d03ee7115488d64241048b8d0c6d0f1c27f0000488b5d08ff2349c7c6010000004d2bf57115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c60148c7c001000000482b05fb1e00007002eb1848c7c001000000488b1de11e00004156ff1549200000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff151c200000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b358d1e00007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff158f1f000048c7c309000000ff157a1f00004989c541f6c50175134d8b650049c7c6010000004d89ebe9261c000049bcd8c8d0f1c27f0000e9541b0000488d64241048b80815d1f1c27f0000488b5d08ff23488d64240848b8b8f2d0f1c27f0000488b5d08ff23488d64240848b8e0c2d0f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084c8b60104d8b5af849c1e30849c1eb074983cb014d3be37215488d64240848b81011d1f1c27f0000488b5d08ff234f8b64a2fc4d8b364a8d1c7501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1f48b8f814d1f1c27f0000415041554154ff154a1e0000415c415d41584989c641f6c6010f840204000041f6c40174084983fc017d16eb164d0fb65c24ff4e8d1c5d010000004983fb237402eb224c89e348b8f814d1f1c27f0000415041554156ff15f21d0000415e415d41584989c441f6c4010f849d03000041f6c00174084983f8017d15eb184d0fb658ff4e8d1c5d010000004983fb2374054d89c3eb224c89c348b8f814d1f1c27f0000415541564154ff15981d0000415c415e415d4989c341f6c3010f84360300004d2be37115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c4014d2be67115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c40141544983fe050f85d3000000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c70009000000ff15091d00004989c34c8b2c244d89ee4981fd01ffffff7c7f4d89f64d89f54981fe010100007d694d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6e939170000488d642410eb05488d64241048b8500ad4f1c27f0000488b5d08ff234983fe0d7415488d64241048b8d00ad4f1c27f0000488b5d08ff234c8b24244d89e64981fcff0000007f7e4d89f64981fef9feffff7c72488d642408498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c70009000000ff15f21b00004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb05fd1f1c27f00004d897424084d891c2449c7c5010000004d89e6e90a150000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c7000b00000048c7c301000000ff15761b00004989c6415648c7c001000000482b052b1a00007002eb1448c7c001000000488b1d111a0000ff15431b0000a8017417f6442408017410483b4424087f02eb22488d642418eb19488b5c2408ff15151b00004989c64983fe017e07488d642418eb3bf64424080174174c8b7424084c3b35ba1900007d02eb34488d642418eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241848b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15771a000048c7c309000000ff15621a00004889c34883fb017508415c4883c408eb12488b0424ff153f1a00004989c4488d64241041f6c40175134d8b1c2449c7c5010000004d89e6e96412000049bed8c8d0f1c27f0000e929120000488d64240848b80815d1f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff234c8b68084c8b60104c8b58184d8b1b4983fb010f85900000004d8d4fe84c3b4d107306ff5550ca00304d89cf49c741f8020000004d89610849c701010000004d8d47f04c3b45107306ff5550ca00224d89c749c740f8010000004d89284d8b55004d8b7508415648b8480bd4f1c27f000048c7c3ffffffffff154a1900004989c441f6c40175134d8b1c2449c7c5010000004d89e6e90d10000049bed8c8d0f1c27f0000e9d20f0000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084c8b60104d8b1c244983fb0175484d89d14c89e848c7c301000000ff15c6180000ff15b81800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c349c7c3010000004d89e9e9d20d00004c8b68084d8b6d004983fd070f85ac0200004d8b2e4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1b48b8f814d1f1c27f000041564150ff151c1800004158415e4989c441f6c4010f84420200004d89e34983eb087115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8b2e4e8d2c6d010000004983fb010f8cfa0100004d3bdd0f87dc0100004d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d8975104d895d0849c7450001000000415541f6c00174084983f8017d15eb184d0fb670ff4e8d3475010000004983fe2374054d89c5eb1a4c89c348b8f814d1f1c27f00004154ff155f170000415c4989c541f6c5010f84500100004d89e64983ee014d03ee7115488d64241048b8d0c6d0f1c27f0000488b5d08ff2349c7c6010000004d2bf57115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c60148c7c001000000482b05fc1500007002eb1848c7c001000000488b1de21500004156ff15da160000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15ad160000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b358e1500007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff152016000048c7c309000000ff150b1600004989c541f6c50175134d8b650049c7c6010000004d89ebe9310a000049bcd8c8d0f1c27f0000e95f090000488d64241048b80815d1f1c27f0000488b5d08ff23488d64240848b8b8f2d0f1c27f0000488b5d08ff23488d64240848b8e0c2d0f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b62f849c1e40849c1ec074983cc014d3bec7215488d64240848b81011d1f1c27f0000488b5d08ff234b8b44aafc4c89f3ff151c1500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34c8b68084d8b62f849c1e40849c1ec074983cc014d3bec7215488d64240848b81011d1f1c27f0000488b5d08ff234f8b6caafc4d8b364a8d1c7501000000f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1b48b8f814d1f1c27f000041504155ff156e140000415d41584989c641f6c6010f848b03000041f6c50174084983fd017d15eb154d0fb665ff4e8d2465010000004983fc237402eb1e4c89eb48b8f814d1f1c27f000041504156ff151b140000415e41584989c541f6c5010f842b03000041f6c00174084983f8017d15eb184d0fb660ff4e8d2465010000004983fc2374054d89c4eb1e4c89c348b8f814d1f1c27f000041564155ff15c5130000415d415e4989c441f6c4010f84c80200004d2bec7115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c5014d2bee7115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c50141554983fe050f85b700000048b8580bd4f1c27f0000ff15541300004989c34c8b2c244d89ee4981fd01ffffff7c7f4d89f64d89f54981fe010100007d694d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6e906050000488d642410eb05488d64241048b8500ad4f1c27f0000488b5d08ff234983fe0b7415488d64241048b8680bd4f1c27f0000488b5d08ff234c8b2c244d89ee4981fdff0000007f624d89f64981fefbfeffff7c56488d64240848b8580bd4f1c27f0000ff15591200004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb05fd1f1c27f00004d897424084d891c2449c7c5010000004d89e6e9f302000048b8c00bd4f1c27f0000ff15001200004989c6415648c7c001000000482b052d1100007002eb1448c7c001000000488b1d13110000ff15cd110000a8017417f6442408017410483b4424087f02eb22488d642418eb19488b5c2408ff159f1100004989c64983fe017e07488d642418eb3bf64424080174174c8b7424084c3b35bc1000007d02eb34488d642418eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241848b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff150111000048c7c309000000ff15ec1000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d89342449c7c5010000004d89e6eb3f488d64240848b80815d1f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff23488d64240848b80815d1f1c27f0000488b5d08ff2341f6c60175364d8b56084d89eb4983c3027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44983fd010f8cb50000004983fd03751d49be30c9d0f1c27f00004c8b2c244f8b74aefc488d642410e9e3000000488d6424104c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d260f0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db40d0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d420c0000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15930b0000ff15850b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c30175364d8b4b084d89f24983c2027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30c9d0f1c27f00004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d0d0a000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b868c8d0f1c27f0000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe9f7fdffff41f6c1017536498b71084c89df4883c7027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234989f14989fb483b65187306ff5558ca007febc44983eb014d6bdb067115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c3014f8d4c18ff4d89eb41f6c3010f858f000000498b33498b7b08498b52f848c1e20848c1ea074883ca01483bf27215488d64240848b81011d1f1c27f0000488b5d08ff23498b74b2fc4c89ca4883c204483bf27644492bf14883ee034881feff000000730948c7c603000000eb0748c7c6010000004883fe03751e4c89ce4883c6044989f14989fb483b65187306ff5558ca007fe970ffffff49c7c301000000eb0749c7c3030000004983fb03751349c70424010000004c89e8ff15ea080000eb164d89d14d89f24c89e848c7c301000000ff15ca080000ff15bc0800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d28070000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991feffff498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1db1050000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991feffff41f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d66040000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1df4020000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff1545020000ff15370200004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c30175364d8b4b084d89f24983c2027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30c9d0f1c27f00004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dbf00000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b868c8d0f1c27f0000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe9f7fdfffff400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@15490,1,@2070,@4836,@6902,@4836,@6903,@6905,@4836,@6902,@6901,@6864,@6558,@4987,@6883,@6883,@6883,@4933,@4933,@4933,@6904,@6901,@6864,@6558,@4987,@4933,@4933,@4836,@6906,@6907,@6913,@6901,@6864,@6558,@4987,@6894,@6883,@6883,@4933,@4933,@4933,@6901,@6864,@6558,@4987,@4933,@4933|595,0,@10021 646,0,@9475 778,0,@10021 828,0,@9475 861,0,@9475 1024,0,@15475 1132,0,@9493 1152,0,@10022 1173,0,@9837 1194,0,@9446 1215,0,@10022 1309,0,@9995 1378,0,@10021 1458,0,@10021 1540,0,@10021 1591,0,@9475 1621,0,@9475 1848,0,@15478 1875,0,@15481 1999,0,@10542 2240,0,@15475 2388,0,@9493 2408,0,@10022 2429,0,@10022 2450,0,@10022 2569,0,@15484 2620,0,@9493 2850,0,@10021 2901,0,@9475 3033,0,@10021 3083,0,@9475 3116,0,@9475 3279,0,@15475 3387,0,@9493 3407,0,@10022 3428,0,@9837 3449,0,@9446 3470,0,@10022 3560,0,@9995 3667,0,@9995 3736,0,@10021 3811,0,@10021 3889,0,@10021 3936,0,@9475 3966,0,@9475 3998,0,@15485 4165,0,@15478 4192,0,@15486 4241,0,@15485 4288,0,@10542 4322,0,@15488 4494,0,@15475 4643,0,@10022 4664,0,@10022 4685,0,@10022 4725,0,@9475 4777,0,@9496 4936,0,@9487 4957,0,@9490 5101,0,@9475 5153,0,@9496 5298,0,@9487 5319,0,@9490 5463,0,@9475 5515,0,@9496 5660,0,@9487 5681,0,@9490 6020,0,@9475 6072,0,@9496 6220,0,@9487 6241,0,@9490 6346,0,@9475 6397,0,@9475 6468,0,@9995 6753,0,@9475 6805,0,@9496 6950,0,@9487 6971,0,@9490 7120,0,@9475 7172,0,@9496 7317,0,@9487 7338,0,@9490 7443,0,@9475 7495,0,@9496 7640,0,@9487 7661,0,@9490 7805,0,@9475 7857,0,@9496 8002,0,@9487 8023,0,@9490 8362,0,@9475 8414,0,@9496 8562,0,@9487 8583,0,@9490 6901:D3,168|483b65187305ff5558cd094883fb01750848c7c001000000c34c8b284d89ee4e8d2c6d010000004981e5ff010000415549c1ee08498d47f0483b45107305ff5550cd084989c748c740f801000000c640ff014c89304883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@15503,1,@2083|98,0,@9475 6902:D3,328|483b65187305ff5558cd01a8010f85200100004c8b284c8b70084d8b5d00498b4d084d8b65104d8b2c244e8d2c6d010000004983fb01750d493bcd75084d89e5e9a50000004883f901750f49bdd8c8d0f1c27f0000e9900000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15bd0000000f879a0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4b8d341c498d7d0848d1e9f3a4418065ffbf41554c89f0e80cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f8c7d0f1c27f0000488b5d08ff2348c7c001000000c3f400000000ffffffffffffff01|@10112,1,@2071|77,0,@9493 293,0,@9487 6903:D4,800|483b65187306ff5558ca090753415041514152a8010f85f10200004c8b28ff70084c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64b8b44aefc4c8b7424084d8b264d89e54e8d1465010000004c8b5c24204d89dc4983fb010f8c7a0200004d89e44d89e34983c40a4d3be20f87520200004d89f64e8d246d010000004d89db4d89dd4983fb01750b4983fc0b75054c89f3eb6849c7c4050000004a8d1ca50400000048f7db4903df483b5d107205493bdf7206ff5550ca01604989df49d1ec4c8963f8c643ff4148c743080000000048c703050000004d89ed4983c51048c7c10b00000049d1ed4d89f64b8d342e488d7b0848d1e9f3a48063ffbf4c8b442418ff15130200004989c641564c8b6424284c89e34983c40a7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24104d8b5d004d89de4e8d145d010000004983fc010f8c620100004d89e34983c3064d3bda0f873d0100004d89ed4e8d3475010000004983fc01750e4983fe0775084d89eee98300000049c7c3050000004e8d349d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08304d89f749d1eb4d895ef841c646ff4149c746080000000049c706030000004983c4104d89e349d1eb4d89ed4f0fb65c1d0045885e084d89e349d1eb4d89ed4f0fb65c1d0145885e0949d1ec4d89ed4f0fb66c250245886e0a418066ffbf41564889db4883c3107115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b4424284983c010488b4424104c8b4c24204c8b542418e8a6fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c3488d64243048b8b8f2d0f1c27f0000488b5d08ff23488d64243048b8e0c2d0f1c27f0000488b5d08ff23488d64242848b8b8f2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488d64242048c7c001000000c3f4000000000000|@15491,1,@2072,@6904|66,0,@9995 319,0,@9475 559,0,@9475 703,0,@9837 724,0,@9446 745,0,@9837 766,0,@9446 6904:D12,1272|483b65187306ff5558ca09014989c64989db4d8b2b4a8d1c6d01000000f6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989dceb1f48b8f814d1f1c27f0000415641534150ff15f80400004158415b415e4989c441f6c4010f847b02000041f6c60174084983fe017d15eb154d0fb66eff4e8d2c6d010000004983fd237402eb224c89f348b8f814d1f1c27f0000415341504154ff15a1040000415c4158415b4989c641f6c6010f841c02000041f6c00174084983f8017d15eb184d0fb668ff4e8d2c6d010000004983fd2374054d89c5eb224c89c348b8f814d1f1c27f0000415341544156ff1547040000415e415c415b4989c541f6c5010f84ba0100004d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c6014d2bf4711048b8d0c6d0f1c27f0000488b5d08ff234983c6014983ec08711048b8d0c6d0f1c27f0000488b5d08ff234d8b2b4e8d2c6d010000004983fc010f8c4d0100004d3be50f87340100004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c7450001000000415548c7c001000000482b05430300007002eb1848c7c001000000488b1d290300004156ff1571030000415ea801741441f6c601740e493bc67f02eb24488d642408eb1b4c89f34156ff1544030000415e4989c54983fd017e07488d642408eb3041f6c60174124c3b35d50200007d02eb2f488d642408eb184d0fb66eff4e8d2c6d010000004983fd237415488d64240848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b702000048c7c309000000ff15a20200004989c541f6c50175134d8b650049c7c6010000004d89ebe9f000000049bcd8c8d0f1c27f0000eb5048b8b8f2d0f1c27f0000488b5d08ff2348b8e0c2d0f1c27f0000488b5d08ff2348b80815d1f1c27f0000488b5d08ff2348b80815d1f1c27f0000488b5d08ff2348b80815d1f1c27f0000488b5d08ff234d8b34244e8d3475010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff1594010000ff258601000041f6c30175364d8b4b084d89f24983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc44983fe010f8caa0000004983fe03751449be30c9d0f1c27f00004f8b64a6fce9e10000004c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dc500000077504d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ee4d89342449c7c611000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c50175304d8b5d004d8b550849d1eb4d89f149d1e947881c0c4d89f34983c3024d89d54d89de483b65187306ff5558ca0070ebca41806424ffbfe926fefffff400000000000000ffffffffffffff01010000000100000001000000010000000000000001000000|@15492,1,@2073,@4836,@6902,@6901,@6864,@6558,@4987,@4933,@4933,@4933|68,0,@10021 147,0,@10021 229,0,@10021 275,0,@9475 300,0,@9475 326,0,@9475 560,0,@15475 668,0,@9493 680,0,@9837 696,0,@9446 712,0,@10022 728,0,@10022 744,0,@10022 932,0,@9475 984,0,@9496 1132,0,@9487 1153,0,@9490 6905:D4,496|483b65187305ff5558cd01a8017551ff700848b8580bd4f1c27f0000ff15e60100004989c34d8d67e84c3b65107306ff5550ca00084d89e749c74424f80200000049beb05fd1f1c27f00004d897424084d891c2449c7c5010000004d89e6eb0848c7c001000000c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1df7000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4156488b442408e84efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3f4000000000000ffffffffffffff01|@10112,1,@2074,@6883|20,0,@15485 67,0,@10542 130,0,@9475 182,0,@9496 327,0,@9487 348,0,@9490 6906:D6,968|483b65187306ff5558ca09035341504151a8010f85ed0100004c8b28ff70084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b81011d1f1c27f0000488b5d08ff234d89f64b8b5caefcf6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989deeb1348b8f814d1f1c27f0000ff15650300004989c641f6c6010f8459010000f644241001740d4c8b6c24104983fd017d1aeb1f4c8b6c24104d0fb66dff4e8d2c6d010000004983fd2374074c8b6c2410eb1c48b8f814d1f1c27f0000488b5c24104156ff1506030000415e4989c541f6c5010f84eb0000004d2bf57115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ee0341567115488d64242848b8d0c6d0f1c27f0000488b5d08ff2348b8580bd4f1c27f0000ff15a80200004989c34c8b2c244d89ee4981fd01ffffff7c7c4d89f64d89f54981fe010100007d664d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca00284d89f749c746f80200000049c74608010000004d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004d897424084d891c2449c7c5010000004d89e6eb53488d642428eb05488d64242848b8500ad4f1c27f0000488b5d08ff23488d64242048b80815d1f1c27f0000488b5d08ff23488d64242048b80815d1f1c27f0000488b5d08ff23488d64241848c7c001000000c341f6c60175364d8b4e084d89ea4983c2027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d24010000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbf4156488b5c24204883c3047115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424184983c004488b4424084c8b4c2410e875fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f400ffffffffffffff01|@15491,1,@2075,@6883,@4933,@4933|64,0,@9995 125,0,@10021 205,0,@10021 253,0,@9475 282,0,@9475 298,0,@15485 462,0,@15478 483,0,@10022 504,0,@10022 557,0,@9475 609,0,@9496 754,0,@9487 775,0,@9490 869,0,@9475 6907:D20,2960|483b65187306ff5558ca09074989de506a016a016a0141f6c0010f85e20000004d8b284d8b65004d8b6d084983fe0175124983fc0b740c49c7c301000000e9af00000048c7c0010000004881e8000100007002eb2c48c7c00100000048c7c301010000415641504151415241544155ff15b30b0000415d415c415a41594158415ea801740d41f6c6017407493bc67f2ceb2c4c89f3415641504151415241544155ff15790b0000415d415c415a41594158415e4989c34983fb017e02eb2441f6c601740b4981fe010100007d15eb1c4d0fb65eff4e8d1c5d010000004983fb23740949c7c303000000eb0749c7c3050000004c891c244c896424084c896c2410eb2449bdc80cd4f1c27f00004d8b65004c8924244d8b65084c896424084d8b6d104c896c24104c8b2c244c8b642408ff7424106a016a01498b394989fb4883ff0775134d8b59084c891c2448c744240807000000eb6b4c89df4983fb0575134d8b59084c891c2448c744240805000000eb4f4989fb4883ff0375134d8b59084c891c2448c744240803000000eb334983fb0175134d8b59084c891c2448c744240801000000eb1a49bbe80cd4f1c27f00004d8b0b4c890c244d8b5b084c895c2408415b5f4d8b0b41ff73084983fc097502eb164983f9097402eb0e4c8b1c244983fb030f85eb0000004983fa0f7615488d64243048b8000dd4f1c27f0000488b5d08ff234983fd07750949c7c307000000eb254983fd03750949c7c305000000eb164983fd05750949c7c303000000eb0749c7c30100000049c1e3064983eb3f4981e3ff0100004e8d14d5f9ffffff4981e2ff0100004d0bda4983cb094989fa49c1e2064983ea3f4981e2ff0100004e8d0ccdf9ffffff4981e1ff0100004d0bd14d0be24d8d57e84c3b55107306ff5550ca00794d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca006d4d89e749c74424f8020000004d895424084d891c24e9b70000004983fa0f7615488d64243048b8000dd4f1c27f0000488b5d08ff234983fc0f7615488d64243048b8780dd4f1c27f0000488b5d08ff234983fd07750949c7c307000000eb254983fd03750949c7c305000000eb164983fd05750949c7c303000000eb0749c7c30100000049c1e3064983eb3f4981e3ff0100004e8d14d5f9ffffff4981e2ff0100004d0bda4d0bdc4d8d67e84c3b65107306ff5550ca00694d89e749c74424f80200000049c7442408010000004d891c2441544983fd030f85e700000048c7c001000000482b05e30700007002eb1848c7c001000000488b1dc90700004156ff1559080000415ea801741441f6c601740e493bc67f02eb24488d642438eb1b4c89f34156ff152c080000415e4989c54983fd017e07488d642438eb3041f6c60174124c3b35750700007d02eb2f488d642438eb184d0fb66eff4e8d2c6d010000004983fd237415488d64243848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff159f07000048c7c309000000ff158a0700004989c6e94f0100004983fd05755441f6c60174054d89f5eb174c89f0ff15600700004989c64d8b364e8d2c75010000004981e5ff0100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9f50000004983f8010f85e400000048c7c001000000482b05800600007002eb1848c7c001000000488b1d660600004156ff15e6060000415ea801741441f6c601740e493bc67f02eb24488d642438eb1b4c89f34156ff15b9060000415e4989c54983fd017e07488d642438eb3041f6c60174124c3b35120600007d02eb2f488d642438eb184d0fb66eff4e8d2c6d010000004983fd237415488d64243848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff152c06000048c7c309000000ff15170600004989c6eb0749c7c60100000041564c8b7424384d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3808d4f1c27f0000e98900000049be5008d4f1c27f0000eb7d49be6808d4f1c27f0000eb714d89f64d8b76084983fe0d750c49be8008d4f1c27f0000eb404983fe13750c49be6808d4f1c27f0000eb2e4983fe03750c49be6808d4f1c27f0000eb1c4983fe05750c49be6808d4f1c27f0000eb0a49be3808d4f1c27f0000eb1649be3808d4f1c27f0000eb0a49be8008d4f1c27f00004156488b5c2450488b4424404c8b4424204c8b4c2418ff15a20300004989c641564c8b7424484d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d6000000909090e9da000000909090e90b000000909090e90300000090909049c7c601000000e9c500000049be9808d4f1c27f0000e9b600000049be9808d4f1c27f0000e9a700000049be9808d4f1c27f0000e99800000049be9808d4f1c27f0000e98900000049be9808d4f1c27f0000eb7d49be9808d4f1c27f0000eb714d89f64d8b76084983fe0d750c49be9808d4f1c27f0000eb404983fe13750c49be9808d4f1c27f0000eb2e4983fe03750c49be9808d4f1c27f0000eb1c4983fe05750c49be9808d4f1c27f0000eb0a49be9808d4f1c27f0000eb1649be9808d4f1c27f0000eb0a49be9808d4f1c27f00004156488b442450ff15180100004989c641564c8b7424204c89f34983fe0175074c8b742428eb0e488b442428ff15eb0000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175035beb12488b0424ff15a20000004889c3488d6424084883fb0175035beb12488b0424ff157f0000004889c3488d6424084883fb017508584883c440c20800584c8b7424404c897424484883c448ff254c000000f4000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@15501,1,@2076,@6909,@6910,@6911,@6912,@6883,@6908,@6901,@6864,@6558,@4987,@6864,@6901,@6864,@6558,@4987,@6558,@4987|260,0,@15493 425,0,@15494 502,0,@15495 737,0,@15495 764,0,@15498 1064,0,@15475 1395,0,@15475 1916,0,@15462 1931,0,@15463 1943,0,@15464 1968,0,@15465 1986,0,@15464 2004,0,@15464 2022,0,@15464 2034,0,@15462 2046,0,@15462 2058,0,@15465 2528,0,@15466 2543,0,@15466 2558,0,@15466 2573,0,@15466 2588,0,@15466 2600,0,@15466 2625,0,@15466 2643,0,@15466 2661,0,@15466 2679,0,@15466 2691,0,@15466 2703,0,@15466 2715,0,@15466 6908:D3,864|483b65187306ff5558ca09034d89c64c8b204d89e54c8d1d080000004f8d5ca3fc41ffe3e983010000909090e987010000909090e99a010000909090e99e010000909090e96f010000909090e967010000909090e95f010000909090e98a010000909090e94f010000909090e947010000909090e97e010000909090e982010000909090e983010000909090e984010000909090e91f010000909090e917010000909090e90f010000909090e96d010000909090e96e010000909090e96f010000909090e9ef000000909090e9e7000000909090e960010000909090e961010000909090e9cf000000909090e9c7000000909090e952010000909090e953010000909090e954010000909090e9a7000000909090e94d010000909090e997000000909090e98f000000909090e93e010000909090e93f010000909090e977000000909090e96f000000909090e967000000909090e95f000000909090e957000000909090e94f000000909090e947000000909090e93f000000909090e937000000909090e92f000000909090e927000000909090e91f000000909090e917000000909090e9d800000090909049c7c503000000e9d00000004983fd11750949c7c503000000eb0749c7c501000000e9b500000049c7c503000000e9a900000049c7c503000000e99d00000049c7c503000000e99100000049c7c503000000e98500000049c7c503000000eb7c49c7c503000000eb7349c7c503000000eb6a49c7c503000000eb6149c7c503000000eb5849c7c503000000eb4f49c7c503000000eb4649c7c503000000eb3d49c7c503000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004c8b204983fc33751c4c8b60084983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fd037502eb1e4883fb037502eb164983fe037502eb0e4983f9037502eb064983fc0375794983fd03750949c7c011000000eb0749c7c0010000004981c8810000004883fb03750949c7c509000000eb0749c7c5010000004d0bc54983f903750949c7c505000000eb0749c7c5010000004d0bc54d0bc6498d47e8483b45107306ff5550ca00014989c748c740f80200000048c74008010000004c8900c348c7c001000000c3f400000000|@15502,1,@2081| 6909:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2077| 6910:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2078| 6911:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2079| 6912:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2080| 6913:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2082| 6914:D4,432|483b65187305ff5558cd0953ff15b60100004989c441f6c40175104d8b1c2449c7c5010000004d89e6eb3649bed8c8d0f1c27f0000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c341f6c60175364d8b4e084d89ea4983c2027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89ce4d89d5483b65187306ff5558ca0078ebc44983fd010f8ca70000004983fd03751449be30c9d0f1c27f00004f8b749efce9de0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbe000000774d4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ed4d892e49c7c511000000eb2a488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b868c8d0f1c27f0000488b5d08ff2341f6c40175314d8b1c244d8b54240849d1eb4d89e949d1e947881c0e4d89eb4983c3024d89d44d89dd483b65187306ff5558ca0070ebc9418066ffbfe991fefffff4000000ffffffffffffff01|@15581,1,@2084,@6915|45,0,@9493 123,0,@9475 175,0,@9496 320,0,@9487 341,0,@9490 6915:D265,19312|483b65187305ff5558cd014c8b284d89ee4c8d25080000004f8d64acfc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9e8230000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9b7260000909090e910290000909090e9c6290000909090e9c62a0000909090e9462b0000909090e959300000909090e9e3300000909090e944310000909090e98f310000909090e9a4310000909090e94c320000909090e9bd320000909090e9cb330000909090e953340000909090e953340000909090e976340000909090e9e3000000909090e95d370000909090e9d3000000909090e9cb000000909090e9c3000000909090e9c7380000909090e9753e0000909090e9ab000000909090e9a3000000909090e9783e0000909090e993000000909090e9373f0000909090e9d23f0000909090e97b000000909090e973000000909090e992400000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e964400000909090e9b7400000909090e939410000909090e9b7450000909090e9154700009090904d89f54983fe59751048b8880ed4f1c27f0000488b5d08ff234d89ee4983fd03751048b8080fd4f1c27f0000488b5d08ff234d89f54983fe01751048b8880fd4f1c27f0000488b5d08ff234d89ee4983fd5f0f85f60000004c8b68084c8b6010ff70184d8b34244d8b4c2408498b5c24104983fd037515488d64240848b80010d4f1c27f0000488b5d08ff234983fd017515488d64240848b88010d4f1c27f0000488b5d08ff234d8d47f04c3b45107306ff5550ca08424d89c749c740f8010000004d89306a0148b80011d4f1c27f000049c7c201000000ff15f25000004989c64156f64424080174074c8b742408eb19488b442408ff15cc5000004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff25725000004d89f54983fe5d0f850f0100004c8b60084c8b58104c8b70184d8b2b4d8b4b08498b5b104983fc03753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b81011d4f1c27f00004c896c2408ff25035000004983fc01753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b82011d4f1c27f00004c896c2408ff25b84f00004d8b264d89e24983fc09720949c7c403000000eb0749c7c401000000498d47e8483b45107306ff5550ca08764989c748c740f8020000004c89600848c700330000004d8d47f04c3b45107306ff5550ca09664d89c749c740f8010000004d89284d8b6e08ff34244c896c2408ff253e4f00004d89ee4983fd5b751048b83011d4f1c27f0000488b5d08ff234d89f54c8d25080000004f8d64b4fc41ffe4e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e90a110000909090e98b010000909090e950110000909090e959110000909090e9b6110000909090e914120000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e982110000909090e9ca110000909090e99b000000909090e9e0180000909090e98b000000909090e983000000909090e9be190000909090e9781a0000909090e96b000000909090e9a51a0000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e9d51b0000909090e9201c0000909090e9aa1c0000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904d89ee4983fd07751048b8c011d4f1c27f0000488b5d08ff234c8d2d080000004f8d6cb5fc41ffe5e9bb010000909090e9b3010000909090e9fd010000909090e9a3010000909090e930050000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9c4070000909090e9db000000909090e9e3070000909090e9cb000000909090e9ad080000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b70084d8d47f04c3b45107306ff5550ca00404d89c749c740f8010000004d89306a0148b8f897d3f1c27f000048c7c3ffffffff49b958a4d3f1c27f000049c7c209000000ff15174b0000ff25094b00004c8b60084c8b68104c8b7018ff702048c7c0010000004881e8000100007002eb2048c7c00100000048c7c301010000415441554156ff15c64a0000415e415d415ca801740ef60424017408483b04247f21eb21488b1c24415441554156ff15964a0000415e415d415c4989c34983fb017e02eb33f604240174124c8b1c244981fb010100007d20e9b80100004c8b1c244d0fb65bff4e8d1c5d010000004983fb230f849d0100004983fc05750949c7c20f000000eb434983fc0b750949c7c20d000000eb344983fc09750949c7c20b000000eb254983fc03750949c7c209000000eb164983fc07750949c7c203000000eb0749c7c2010000004d8d47f04c3b45107306ff5550ca00644d89c749c740f8010000004d89286a014c89f348b84812d4f1c27f000049b958a4d3f1c27f0000ff15bb4900004989c6415648c7c001000000482b05b04100007002eb1448c7c001000000488b1d96410000ff1588490000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff155a4900004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b353f4100007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15bc48000048c7c309000000ff15a74800004889c34883fb017506584883c408c3584883c408ff25854800004983fc05750949c7c20f000000eb434983fc0b750949c7c20d000000eb344983fc09750949c7c20b000000eb254983fc03750949c7c209000000eb164983fc07750949c7c203000000eb0749c7c2010000004d8d47f04c3b45107306ff5550ca00644d89c749c740f8010000004d89286a014c89f348b8686bd1f1c27f000049b958a4d3f1c27f0000ff15ee4700004989c64156f64424080174074c8b742408eb19488b442408ff15c84700004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff256e4700004c8b7008488b58104c8b68184d8b65004d89e34983fc0375704d8b5d084d8b4d104d8b6518498d47e0483b45107306ff5550ca085a4989c748c740f80300000048c74010070000004c89700848c700010000004d8d47f04c3b45107306ff5550ca091a4d89c749c740f8010000004d89184c8b134c8b6b08ff34244c89e34c896c2408ff25dd4600004d89dc4983fb010f856b020000ff334c8b6b08498d47e0483b45107306ff5550ca00604989c748c740f80300000048c74010070000004c89700848c700010000004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff153a4600004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1588450000a801740b4989c64983c6027002eb1048c7c303000000ff15644500004989c648c7c001000000482b05a33d00007002eb1848c7c001000000488b1d893d00004156ff1531450000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff1504450000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35353d00007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff157744000048c7c309000000ff15624400004889c34883fb0175035beb12488b0424ff15444400004889c3488d6424084883fb017506584883c408c3584883c408ff251d4400004983fc05750d4d8b45084c89f0ff25024400004d8b4508498d47e0483b45107306ff5550ca08414989c748c740f80300000048c74010070000004c89700848c70001000000ff25c24300004c8b40084c8b4810488b58184c8b70204d8b164d8b6e08ff342448b8480bd4f1c27f00004c896c2408ff258b4300004c8b60084c8b70104c8b58184d8b2b4d8b4b08498b5b104983fc03753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b85812d4f1c27f00004c896c2408ff25294300004983fc01753d4d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b86812d4f1c27f00004c896c2408ff25de4200004d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b87812d4f1c27f00004c896c2408ff25994200004c8b40084c8b70104d8b2e4d89ec4983fd03754e4d8b6e084d8b4e10498b5e184d8d67f04c3b65107306ff5550ca08234d89e749c74424f8010000004d892c244d8b104d8b6808ff34244d89e048b88812d4f1c27f00004c896c2408ff252f4200004d89e54983fc010f852b0100004d8b304d8b6808498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89700848c700350000004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049c746180100000049c746100300000049c74608010000004d892e498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff15934100004989c6415649c7c6050000004983ee014d6bf60070064983c601eb1748c7c00500000048c7c301000000ff155b4100004989c641f6c601740b4c89f04883c0027002eb104c89f048c7c303000000ff152f410000a80174274989c649d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb06ff15f640000048c7c311000000ff15e14000004889c34883fb01750258c358ff25c74000004983fd050f85ed03000041ff7608f604240174164c8b34244981fe010000807c02eb25488d642408eb1c4c8b34244d0fb676ff4e8d3475010000004983fe037407488d642408eb3ff604240174194c8b34244c3b353e3900007d05e96f020000488d642408eb204c8b34244d0fb676ff4e8d3475010000004983fe230f844d020000488d64240841ff304d8b68084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b88812d4f1c27f0000ff15cd3f00004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff151b3f0000a801740b4989c64983c6027002eb1048c7c303000000ff15f73e00004989c648c7c001000000482b05c63700007002eb1848c7c001000000488b1dac3700004156ff15c43e0000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15973e0000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35583700007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff150a3e000048c7c309000000ff15f53d00004889c34883fb0175035beb12488b0424ff15d73d00004889c3488d6424084883fb017506584883c408c3584883c408ff25b03d00004c89c348b89812d4f1c27f000049c7c001000000ff158e3d00004989c6415648c7c001000000482b057b3600007002eb1448c7c001000000488b1d61360000ff155b3d0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff152d3d00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b350a3600007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff158f3c000048c7c309000000ff157a3c00004889c34883fb017506584883c408c3584883c408ff25583c0000498b5e0848b8a812d4f1c27f0000ff253c3c00004c8b68084c8b70104d8d47f04c3b45107306ff5550ca00604d89c749c740f8010000004d89284d8b164d8b6e08ff342449b958a4d3f1c27f000048c7c30100000048b8b812d4f1c27f00004c896c2408ff25de3b00004c8b7008488b58104c89f0ff25c53b00004c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7000b00000048c7c301000000ff15863b00004989c6415648b8e008d4f1c27f000048c7c309000000ff15623b00004889c34883fb01750258c358ff25483b00004c8b7008488b58104c8b68184983fd03750949c7c20f000000eb0749c7c20d0000004d8d47f04c3b45107306ff5550ca08444d89c749c740f8010000004d8930ff342449b958a4d3f1c27f000048b8d8a8d3f1c27f000048c744240801000000ff25da3a0000488b58084c8b70104983fe03750949c7c00f000000eb0749c7c00d00000048b8d8a8d3f1c27f0000ff25a43a00004c8b70084d8b2e4d8b7608498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89680848c7004b0000004983fe03750c48bbc812d4f1c27f0000eb0748c7c301000000ff254c3a00004c8b70084d8b2e4d89ec4983fd010f85cd01000048b80013d4f1c27f000048c7c301000000ff15193a00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c60d0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1586390000a801740b4989c64983c6027002eb1048c7c303000000ff15623900004989c648c7c001000000482b05c13200007002eb1848c7c001000000488b1da73200004156ff152f390000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff1502390000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35533200007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff157538000048c7c309000000ff15603800004889c34883fb0175035beb12488b0424ff15423800004889c3488d6424084883fb01750258c358ff25233800004d89e54983fc050f859504000041ff760848c7c0010000004881e8000100007002eb1448c7c00100000048c7c301010000ff15e4370000a801740ef60424017408483b04247f15eb15488b1c24ff15c03700004989c64983fe017e02eb33f604240174124c8b34244981fe010100007d20e9a50300004c8b34244d0fb676ff4e8d3475010000004983fe230f848a03000048c7c001000000482b050c3100007002eb1448c7c001000000488b1df2300000ff1554370000a8017415f6042401740f483b04247f02eb21488d642408eb18488b1c24ff15293700004989c64983fe017e07488d642408eb3ff604240174194c8b34244c3b35a03000007d05e9f4010000488d642408eb204c8b34244d0fb676ff4e8d3475010000004983fe230f84d2010000488d64240848b80013d4f1c27f000048c7c301000000ff15bb3600004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c60d0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1528360000a801740b4989c64983c6027002eb1048c7c303000000ff15043600004989c648c7c001000000482b059b2f00007002eb1848c7c001000000488b1d812f00004156ff15d1350000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15a4350000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b352d2f00007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff151735000048c7c309000000ff15023500004889c34883fb0175035beb12488b0424ff15e43400004889c3488d6424084883fb01750258c358ff25c534000048b81013d4f1c27f000048c7c301000000ff15a63400004989c6415648c7c001000000482b055b2e00007002eb1448c7c001000000488b1d412e0000ff1573340000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15453400004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b35ea2d00007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15a733000048c7c309000000ff15923300004889c34883fb017506584883c408c3584883c408ff257033000048b82013d4f1c27f000048c7c301000000ff15513300004989c64156f64424080174074c8b742408eb19488b442408ff152b3300004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff25d13200004983fd03754d4d8b6e084d8b4e10498b5e184d8d47f04c3b45107306ff5550ca08224d89c749c740f8010000004d8928ff342449c7c20d00000048b80013d4f1c27f000048c744240801000000ff25763200004d8b76084d8b2e4d8b7608498d47e8483b45107306ff5550ca00604989c748c740f8020000004c89680848c700510000004983fe03750c48bbc812d4f1c27f0000eb0748c7c301000000ff251e320000ff700848b83013d4f1c27f000048c7c301000000ff15fc3100004989c641564c8b6c24084d89ee4983fd057502eb124d89f64983fe09740948c7c001000000eb0a48b84013d4f1c27f00004c8b6c24084d89ee4983fd09750949c7c657010000eb434d89f64d89f54983fe07750949c7c655010000eb2e4d89ed4d89ee4983fd05750949c7c64b010000eb194d89f64983fe03750949c7c649010000eb0749c7c64d010000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb0175054889c3eb09ff15323100004889c34883fb017506584883c408c3584883c408ff2510310000ff7008488b58104c8b70184c8b2c244983fd03753a488d6424084983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b89003d4f1c27f0000ff25b93000004983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b85813d4f1c27f0000ff157c3000004d8d77e84c3b75107305ff5550cd014d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084983fe017501c34c89f3ff2536300000488b58084c8b70104983fe01750949c7c00f000000eb164983fe05750949c7c00b000000eb0749c7c00900000048b8a003d4f1c27f0000ff25f12f00004c8b6808ff70104d8b75004d8b4d08498b5d104d8d47f04c3b45107306ff5550ca08424d89c749c740f8010000004d89306a0148b89812d4f1c27f000049c7c201000000ff159f2f00004989c6415648c7c001000000482b05cc2900007002eb1448c7c001000000488b1db2290000ff156c2f0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff153e2f00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b355b2900007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15a02e000048c7c309000000ff158b2e00004889c34883fb017506584883c408c3584883c408ff25692e00004c8b60084c8b70104d8b2c244d8b4c2408498b5c24104d8d47f04c3b45107306ff5550ca08624d89c749c740f8010000004d89284d8b164d8b6e08ff342448b8a812d4f1c27f00004c896c2408ff250e2e00004c8b7008ff7010488b58184d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d89306a0148b86813d4f1c27f000049b958a4d3f1c27f000049c7c201000000ff15ba2d00004c8b2c244981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff256c2d00004c8b700841ff364d8b6e084d89ec4c3b354f2d0000750a488d642408e94b0100004d8b1e4983fb01751b4d89e64983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f84110100004983fd037502eb134c8b34244983fe09730948c7c301000000eb544d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c746100100000049c74608010000004d892e498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b86813d4f1c27f0000ff15872c00004c8b34244d89f54983fe0f7615488d64240848b8780dd4f1c27f0000488b5d08ff2349c7c60700000049c1e6064983ee3f4981e6ff01000049c7c4010000004e8d24e5f9ffffff4981e4ff0100004d0bf44d0bf5488d642408498d5fe8483b5d107306ff5550ca01404989df48c743f80200000049bd60bed1f1c27f00004c896b084c89334883fb017501c3ff25ed2b0000488d64240848b87813d4f1c27f000048c7c301000000ff15c92b0000ff25bb2b00004c8b70084d8b2e4d89ec4983fd03751b498b5e0849c7c00500000048b80013d4f1c27f0000ff25882b00004d89e54983fc010f85cd01000048b80013d4f1c27f000048c7c301000000ff155c2b00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6050000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15c92a0000a801740b4989c64983c6027002eb1048c7c303000000ff15a52a00004989c648c7c001000000482b05442500007002eb1848c7c001000000488b1d2a2500004156ff15722a0000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15452a0000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35d62400007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b829000048c7c309000000ff15a32900004889c34883fb0175035beb12488b0424ff15852900004889c3488d6424084883fb01750258c358ff25662900004d89ee4983fe05753eff342449c7c20500000049b958a4d3f1c27f000049b88813d4f1c27f000048c7c30100000048b80013d4f1c27f000048c744240801000000ff251729000048b8a854d1f1c27f000048c7c301000000ff15f82800004989c6415649c7c6010000004c2b35bd2300007002eb1748c7c001000000488b1da3230000ff15c52800004989c641f6c601740f4983fe017f02eb2f488d642408eb184d0fb676ff4e8d3475010000004983fe237415488d64240848b8c809d4f1c27f0000488b5d08ff2348b8e008d4f1c27f000048c7c309000000ff15662800004889c34883fb01750258c358ff254c280000ff700848b89813d4f1c27f000048c7c301000000ff152a2800004989c641564c8b7424084c8d2d080000004f8d6c35ff41ffe5eb0eeb29eb30eb37eb3eeb04eb43eb4a4c8b7424084983fe0b750949c7c603000000eb0749c7c601000000eb3449c7c605000000eb2b49c7c607000000eb2249c7c60d000000eb1949c7c60f000000eb1049c7c609000000eb0749c7c60b0000004983fe0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff150e270000a801740b4989c64983c6027002eb1048c7c303000000ff15ea2600004989c648c7c001000000482b05d12100007002eb1848c7c001000000488b1db72100004156ff15b7260000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff158a260000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35632100007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15fd25000048c7c309000000ff15e82500004889c34883fb0175035beb12488b0424ff15ca2500004889c3488d6424084883fb017506584883c408c3584883c408ff25a32500004c8b68084c8b7010488b58184d89ec4c8d1d080000004f8d5c23ff41ffe3eb0eeb24eb2beb32eb39eb04eb3eeb454983fd0b750949c7c203000000eb0749c7c201000000eb3449c7c205000000eb2b49c7c207000000eb2249c7c20d000000eb1949c7c20f000000eb1049c7c209000000eb0749c7c20b0000004d8d47f04c3b45107306ff5550ca08444d89c749c740f8010000004d8930ff342449b958a4d3f1c27f000048b89813d4f1c27f000048c744240801000000ff25dd2400004c8b68084c8b70104d89ec4c8d1d080000004f8d5c23ff41ffe3eb0eeb24eb2beb32eb39eb04eb3eeb454983fd0b750949c7c503000000eb0749c7c501000000eb3449c7c505000000eb2b49c7c507000000eb2249c7c50d000000eb1949c7c50f000000eb1049c7c509000000eb0749c7c50b00000041554983c6024981e6ff010000415648b8b013d4f1c27f000048c7c301000000ff153924000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b7424084e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424104d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25c5230000ff700848b8c813d4f1c27f000048c7c301000000ff15a323000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff252d230000ff700849bee008d4f1c27f00004c8b2c24f2410f107500f20f10ee66410f2e360f8a510100000f854b01000048b8e013d4f1c27f000048c7c301000000ff15e222000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0d4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff156d2200004989c6415648c7c023000000488b5c2408ff154e2200004989c64983fe030f858500000048b8e013d4f1c27f000048c7c301000000ff152222000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15b12100004889c3eb0748c7c3010000004883fb017506584883c408c3584883c408ff258621000049bef008d4f1c27f0000f20f10f566410f2e2e0f8a870000000f8581000000488d64240848b8e013d4f1c27f000048c7c301000000ff154321000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25d620000049be0009d4f1c27f0000488d64240866410f2e360f8a1d0100000f851701000048b8e013d4f1c27f000048c7c301000000ff159720000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c60b0000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054989c6eb0c4c89f3ff15262000004989c6415648b8e013d4f1c27f000048c7c301000000ff150220000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff15911f00004889c34883fb01750258c358ff25771f000048b8c813d4f1c27f000048c7c301000000ff15581f00004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15c51e0000a801740b4989c64983c6027002eb1048c7c303000000ff15a11e00004989c648c7c001000000482b05481a00007002eb1848c7c001000000488b1d2e1a00004156ff156e1e0000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff15411e0000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35da1900007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15b41d000048c7c309000000ff159f1d00004889c34883fb0175035beb12488b0424ff15811d00004889c3488d6424084883fb01750258c358ff25621d00004c8b70084981e6ff010000415648b8e013d4f1c27f000048c7c301000000ff15361d000049c7c50700000049c1e5064983ed3f4981e5ff01000049c7c6010000004e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25c01c00004c8b60084c8b68104d8b34244d8b4c2408498b5c24104983fd03750c48b8e013d4f1c27f0000eb0a48b8c813d4f1c27f00004d8d47f04c3b45107306ff5550ca09424d89c749c740f8010000004d8930ff342449c7c20100000048c744240801000000ff254f1c00004c8b7008488b58104d8d47f04c3b45107306ff5550ca08404d89c749c740f8010000004d8930ff342449c7c20b00000049b958a4d3f1c27f000048b8f813d4f1c27f000048c744240801000000ff25f41b000048b8f813d4f1c27f000048c7c301000000ff15d51b0000ff25c71b00004c8b68084c8b70104983fd03750949c7c507000000eb0749c7c50500000041554983c6024981e6ff010000415648b8c813d4f1c27f000048c7c301000000ff157b1b000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b7424084e8d34f5f9ffffff4981e6ff0100004d0bee4c0b2c24488d6424104d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25071b00004c8b68084c8b58104c8b60184d8b334d8b4b08498b5b104983fc03750c48b8e013d4f1c27f0000eb0a48b8c813d4f1c27f00004983fd03750949c7c207000000eb0749c7c2050000004d8d47f04c3b45107306ff5550ca09464d89c749c740f8010000004d8930ff342448c744240801000000ff25861a00004c8b70086a016a014983fe07751c49bec813d4f1c27f00004d8b2e4c892c244d8b76084c89742408eb5e4983fe05751c49be1014d4f1c27f00004d8b2e4c892c244d8b76084c89742408eb3c4983fe01751c49be2814d4f1c27f00004d8b2e4c892c244d8b76084c89742408eb1a49be4014d4f1c27f00004d8b2e4c892c244d8b76084c89742408ff3424ff74241048b8e013d4f1c27f000048c7c301000000ff15d819000049c7c50700000049c1e5064983ed3f4981e5ff0100004c8b34244e8d34f5f9ffffff488d6424084981e6ff0100004d0bee4c0b2c24488d6424184d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe017501c34c89f3ff25601900004c8b70084c8b68104c8b60184d8b24244983fc03756a4d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d89690849c701050000004d8d47f04c3b45107306ff5550ca00424d89c749c740f8010000004d89304d8b164d8b6e08ff342448c7c3f9ffffff48b8480bd4f1c27f00004c896c2408ff25d818000048b85814d4f1c27f0000488b5d08ff2348c7c001000000c34c8b70084c8b68104d8b6d004983fd03750941566a01e9fd13000048b8d814d4f1c27f0000488b5d08ff234c8b70084d8b2e4d89ec4983fd03751b498b5e0849c7c00900000048b80013d4f1c27f0000ff25621800004d89e54983fc010f85cd01000048b80013d4f1c27f000048c7c301000000ff15361800004989c6415649c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15a3170000a801740b4989c64983c6027002eb1048c7c303000000ff157f1700004989c648c7c001000000482b05be1300007002eb1848c7c001000000488b1da41300004156ff154c170000415ea801741441f6c601740e493bc67f02eb24488d642410eb1b4c89f34156ff151f170000415e4989c54983fd017e07488d642410eb3041f6c60174124c3b35501300007d02eb2f488d642410eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241048b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff159216000048c7c309000000ff157d1600004889c34883fb0175035beb12488b0424ff155f1600004889c3488d6424084883fb01750258c358ff25401600004d89ee4983fe05753eff342449c7c20900000049b958a4d3f1c27f000049b88813d4f1c27f000048c7c30100000048b80013d4f1c27f000048c744240801000000ff25f115000048b8c00bd4f1c27f000048c7c301000000ff15d21500004989c6415649c7c6010000004c2b35371200007002eb1748c7c001000000488b1d1d120000ff159f1500004989c641f6c601740f4983fe017f02eb2f488d642408eb184d0fb676ff4e8d3475010000004983fe237415488d64240848b8c809d4f1c27f0000488b5d08ff2348b8e008d4f1c27f000048c7c309000000ff15401500004889c34883fb01750258c358ff25261500004c8b701041ff364d8b6e084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b8480bd4f1c27f0000ff15af1400004989c641564c8b7424084d89f54983fe0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c60100000049c1e6064983ee3f4981e6ff0100004d89ed4e8d2cedf9ffffff4981e5ff0100004d0bf54983ce0b415649c7c6010000004c2b35d01000007002eb1748c7c001000000488b1db6100000ff15281400004989c641f6c601740f4983fe017f02eb2f488d642418eb184d0fb676ff4e8d3475010000004983fe237415488d64241848b8c809d4f1c27f0000488b5d08ff2348b8e008d4f1c27f000048c7c309000000ff15c91300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017506584883c408c3584883c408ff257c1300004c8b70084c8b68104d8b65004d89e34983fc01751048b85015d4f1c27f0000488b5d08ff234d89dc4983fb050f851e05000041ff750848c7c0010000004881e8000100007002eb1848c7c00100000048c7c3010100004156ff1516130000415ea801740ef60424017408483b04247f19eb19488b1c244156ff15ee120000415e4989c54983fd017e02eb33f604240174124c8b2c244981fd010100007d20e9270400004c8b2c244d0fb66dff4e8d2c6d010000004983fd230f840c04000048c7c001000000482b05400f00007002eb1848c7c001000000488b1d260f00004156ff157e120000415ea8017415f6042401740f483b04247f02eb25488d642408eb1c488b1c244156ff154f120000415e4989c54983fd017e07488d642408eb3ff604240174194c8b2c244c3b2dcc0e00007d05e96f020000488d642408eb204c8b2c244d0fb66dff4e8d2c6d010000004983fd230f844d020000488d64240841ff364d8b6e084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c70601000000498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c893348b8d815d4f1c27f0000ff158b1100004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff15d9100000a801740b4989c64983c6027002eb1048c7c303000000ff15b51000004989c648c7c001000000482b05540d00007002eb1848c7c001000000488b1d3a0d00004156ff1582100000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff1555100000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b35e60c00007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff15c80f000048c7c309000000ff15b30f00004889c34883fb0175035beb12488b0424ff15950f00004889c3488d6424084883fb017506584883c408c3584883c408ff256e0f00004d89f04c89f348b8e815d4f1c27f0000ff15500f00004989c6415648c7c001000000482b050d0c00007002eb1448c7c001000000488b1df30b0000ff151d0f0000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15ef0e00004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b359c0b00007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff15510e000048c7c309000000ff153c0e00004889c34883fb017506584883c408c3584883c408ff251a0e00004d89f04c89f348b8f815d4f1c27f0000ff15fc0d00004989c64156f64424080174074c8b742408eb19488b442408ff15d60d00004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff257c0d00004983fc0375494d8b65084d8b4d10498b5d184d8d47f04c3b45107306ff5550ca08524d89c749c740f8010000004d89204d8b164d8b6e08ff342448b8d815d4f1c27f00004c896c2408ff25250d00004d8b45084c89f348b8d815d4f1c27f0000ff25060d0000488b580849c7c00700000048b8d8a8d3f1c27f0000ff25e30c00006a0148b88812d4f1c27f000048c7c31100000049b80816d4f1c27f000049b958a4d3f1c27f000049c7c207000000ff15a70c00004989c6415648b80013d4f1c27f000048c7c301000000ff15830c000049c7c50100000049c1e5064983ed3f4981e5ff01000049c7c6090000004e8d34f5f9ffffff4981e6ff0100004d0bee4983cd074d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4983fe0175054889c3eb0c4c89f3ff150e0c00004889c34883fb01750258c358ff25f40b00004c8b68084c8b70104a8d1cedf9fffffff6c30174084883fb017d15eb184c0fb66bff4e8d2c6d010000004983fd2374054989d8eb1748b8f814d1f1c27f00004156ff15a50b0000415e4989c04983fe03753a4c89c3ff342449c7c20900000049b958a4d3f1c27f000049b8e0ded3f1c27f000048b8480bd4f1c27f000048c744240801000000ff25580b000048bbf0ded3f1c27f000048c7c001000000ff25390b00004c8b70084983fe01751748c7c30100000048b81816d4f1c27f0000ff25100b00004983ee014d6bf608711048b8d0c6d0f1c27f0000488b5d08ff234983c601415648b82816d4f1c27f000048c7c301000000ff15d10a00004c8b2c244d89ee4981e5ff0100004d89f6488d64240849c1ee084983ce014981e6ff0100004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4983fe017501c34c89f3ff25490a000048bb3816d4f1c27f000048b8a85bd1f1c27f0000ff25270a000048b8c00bd4f1c27f0000ff150f0a00004989c6415648b8e008d4f1c27f000048c7c309000000ff15eb0900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c8b7008488b58104d8b264d89e54983fc03754c4d8b6e084d8b4e104d8b66184d8d47f04c3b45107306ff5550ca08324d89c749c740f8010000004d89284c8b134c8b6b08ff34244c89e348b87016d4f1c27f00004c896c2408ff25540900004983fd0775144d8b460848b87016d4f1c27f0000ff253209000048b88016d4f1c27f0000488b5d08ff234c8b6808ff70104c8b60184d8b34244d89f34983fe070f85cb01000041ff742408498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c700590000004983fd0d750c49be8008d4f1c27f0000eb404983fd13750c49be6808d4f1c27f0000eb2e4983fd03750c49be6808d4f1c27f0000eb1c4983fd05750c49be6808d4f1c27f0000eb0a49be3808d4f1c27f000041564983fd0d750c49be9808d4f1c27f0000eb404983fd13750c49be9808d4f1c27f0000eb2e4983fd03750c49be9808d4f1c27f0000eb1c4983fd05750c49be9808d4f1c27f0000eb0a49be9808d4f1c27f00004156ff15250800004989c64c8b6c24184d89eb4983fd0f7615488d64242048b8000dd4f1c27f0000488b5d08ff234c8b6424104d89e54983fc0f7615488d64242048b8780dd4f1c27f0000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff154a0700004889c3488d6424084883fb017506584883c410c3584883c410ff25230700004d89de4983fb010f8510020000498d47e8483b45107306ff5550ca00204989c748c740f8020000004c89680848c7005900000048c7c301000000ff15db0600004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1529060000a801740b4989c64983c6027002eb1048c7c303000000ff15050600004989c648c7c001000000482b05ac0300007002eb1848c7c001000000488b1d920300004156ff15d2050000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15a5050000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b353e0300007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff151805000048c7c309000000ff15030500004889c34883fb0175035beb12488b0424ff15e50400004889c3488d6424084883fb017506584883c408c3584883c408ff25be0400004983fe0375674d8b7424084d8b4c2410498b5c2418498d47e8483b45107306ff5550ca08624989c748c740f8020000004c89680848c700590000004d8d47f04c3b45107306ff5550ca09424d89c749c740f8010000004d8930415aff342448c744240801000000ff2549040000488d64240848b8f816d4f1c27f0000488b5d08ff23ff70084c8b701041ff364d8b460848b84060d1f1c27f000048c7c30100000049c7c101000000ff15000400004989c6415648b84060d1f1c27f0000ff15e30300004989c64c8b6c24104d89eb4983fd0f7615488d64241848b8000dd4f1c27f0000488b5d08ff234c8b6424084d89e54983fc0f7615488d64241848b8780dd4f1c27f0000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb01750c48bb9808d4f1c27f0000eb1348b89808d4f1c27f0000ff15f90200004889c34883fb0175075b4883c410eb12488b0424ff15d70200004889c3488d6424184883fb01750b48b83808d4f1c27f0000c348b83808d4f1c27f0000ff25a60200004c8b60084c8b50104c8b68184d8b34244d8b4c2408498b5c24104983fd03750c48b87017d4f1c27f0000eb0a48b88017d4f1c27f00004d8d47f04c3b45107306ff5550ca09464d89c749c740f8010000004d8930ff342448c744240801000000ff2538020000f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff150f0200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6584883c408c3f4000000000000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000000000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100000001000000010000000100000000000000010000000100008000000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@15582,1,@2085,@6917,@6907,@6920,@6921,@6922,@6883,@6908,@6907,@6923,@6924,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6925,@6926,@6883,@6927,@6907,@6901,@6883,@6894,@6931,@6894,@6894,@6932,@6907,@4933,@6940,@6941,@6894,@6907,@6935,@6927,@6907,@6942,@6864,@6927,@6943,@6901,@6864,@6558,@4987,@6927,@6944,@6945,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6558,@4987,@6558,@4987,@6946,@6901,@4987,@6894,@6947,@6901,@4987,@6894,@6907,@6948,@6949,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6935,@6907,@6950,@6894,@6907,@6951,@6894,@6952,@6894,@6907,@6907,@6953,@6894,@6954,@6955,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6956,@6957,@6894,@6958,@6894,@6959,@6894,@6960,@6961,@6894,@6962,@6963,@6894,@6964,@6894,@6965,@6894,@6907,@6966,@6967,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6968,@6901,@4987,@6894,@6907,@6969,@6970,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6935,@6971,@6894,@6972,@6894,@10542,@6973,@6907,@6907,@6974,@6901,@6864,@6558,@4987,@6907,@6935,@6975,@6935,@6935,@6976,@6977,@6894,@6894,@6907,@6978,@6864,@6894,@6979,@6901,@6864,@6558,@4987,@6894,@6980,@6981,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6558,@4987,@6558,@4987,@6982,@6983,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6894,@6935,@6907,@6984,@6901,@6894,@6985,@6907,@6927,@6987,@6901,@6864,@6558,@4987,@6935,@6988,@6989,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6990,@6901,@6864,@4933,@6552,@6894,@6907,@6907,@6907,@6907,@6907,@6927,@6932,@6991,@6992,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6907,@6993,@6864,@6907,@6994,@6901,@6864,@6558,@4987,@6907,@6558,@4987,@6995,@6907,@6907,@6907,@6907,@6916,@6864,@6907|491,0,@15504 516,0,@15507 541,0,@15510 606,0,@15513 633,0,@15516 681,0,@15519 898,0,@15520 965,0,@15521 1109,0,@15522 1600,0,@15525 2115,0,@14658 2132,0,@14742 2445,0,@15528 2455,0,@14742 2627,0,@15475 2858,0,@10638 2868,0,@14742 3312,0,@15495 3632,0,@15475 3866,0,@15484 3956,0,@15529 4023,0,@15530 4084,0,@15531 4182,0,@15532 4741,0,@15532 4781,0,@15495 5101,0,@15475 5237,0,@15533 5416,0,@15475 5534,0,@15534 5598,0,@14742 5615,0,@15535 5713,0,@15468 5821,0,@14742 5831,0,@14762 5886,0,@14762 5957,0,@15536 6002,0,@15538 6338,0,@15475 6760,0,@15538 7096,0,@15475 7221,0,@15539 7400,0,@15475 7514,0,@15540 7707,0,@15538 7787,0,@15536 7815,0,@15541 7877,0,@15542 8121,0,@15438 8174,0,@15543 8297,0,@15439 8364,0,@15533 8543,0,@15475 8719,0,@15534 8783,0,@15544 8793,0,@14742 9083,0,@15544 9117,0,@15498 9215,0,@11193 9250,0,@15545 9306,0,@15538 9335,0,@15538 9671,0,@15475 9815,0,@14742 9825,0,@15546 9842,0,@15538 9867,0,@10468 9981,0,@15475 9997,0,@15468 10041,0,@15547 10197,0,@15495 10514,0,@15475 10802,0,@14742 10812,0,@15547 10970,0,@15548 11104,0,@15549 11240,0,@15468 11281,0,@15550 11449,0,@15550 11612,0,@15469 11648,0,@15550 11772,0,@15470 11804,0,@15550 11937,0,@15550 12083,0,@15549 12419,0,@15475 12557,0,@15550 12718,0,@15550 12730,0,@15549 12843,0,@14742 12853,0,@15551 12878,0,@15551 12952,0,@15549 13112,0,@15550 13124,0,@15549 13218,0,@15549 13252,0,@15552 13286,0,@15553 13314,0,@15554 13347,0,@15550 13589,0,@15484 13610,0,@15555 13661,0,@15558 13704,0,@15538 13733,0,@15538 14069,0,@15475 14213,0,@14742 14223,0,@15546 14240,0,@15538 14265,0,@15488 14379,0,@15475 14395,0,@15468 14531,0,@15484 14571,0,@15495 14722,0,@15475 14738,0,@15468 14851,0,@15561 15271,0,@15564 15311,0,@15495 15631,0,@15475 15770,0,@15565 15942,0,@15475 16062,0,@15566 16248,0,@15564 16276,0,@15564 16303,0,@14762 16321,0,@15532 16338,0,@15567 16348,0,@14742 16376,0,@15538 16579,0,@10021 16621,0,@14742 16631,0,@15122 16641,0,@15484 16666,0,@15123 16706,0,@15568 16732,0,@9475 16754,0,@15569 16905,0,@15570 16915,0,@10515 16931,0,@15488 16952,0,@15468 17097,0,@15572 17128,0,@15572 17144,0,@15573 17237,0,@15465 17255,0,@15464 17273,0,@15464 17291,0,@15464 17303,0,@15462 17321,0,@15466 17339,0,@15466 17357,0,@15466 17375,0,@15466 17387,0,@15466 17427,0,@15495 17462,0,@15498 17735,0,@15495 18055,0,@15475 18302,0,@15576 18332,0,@10548 18367,0,@10548 18405,0,@15495 18440,0,@15498 18581,0,@15466 18593,0,@15466 18649,0,@15462 18660,0,@15462 18708,0,@15579 18720,0,@15580 6916:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2165| 6917:D10,352|483b65187305ff5558cd095348b8c00bd4f1c27f0000ff158c0100004989c6415648b8e008d4f1c27f000048c7c309000000ff15680100004989c6415648b80018d4f1c27f0000ff154b0100004989c6415648b80018d4f1c27f0000ff152e0100004989c6415648b80018d4f1c27f0000ff15110100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084c8b7424104c89f34983fe0175054889c3eb09ff15700000004889c34883fb017504415eeb12488b0424ff15510000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3f4|@15584,1,@2086,@6919,@6918,@6883,@6883,@6883,@6901,@6883|14,0,@15488 35,0,@15468 63,0,@15583 84,0,@15583 105,0,@15583 6918:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2088| 6919:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2087| 6920:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2089| 6921:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2090| 6922:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2091| 6923:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2092| 6924:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2093| 6925:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2094| 6926:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2095| 6927:D8,1544|483b65187306ff5558ca090150ff33488b5b0841ff304d8b40084c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3808d4f1c27f0000e98900000049be5008d4f1c27f0000eb7d49be6808d4f1c27f0000eb714d89f64d8b76084983fe0d750c49be8008d4f1c27f0000eb404983fe13750c49be6808d4f1c27f0000eb2e4983fe03750c49be6808d4f1c27f0000eb1c4983fe05750c49be6808d4f1c27f0000eb0a49be3808d4f1c27f0000eb1649be3808d4f1c27f0000eb0a49be8008d4f1c27f00004156488b44241849c7c101000000ff15cf0300004989c641564c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e976010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e925010000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e904010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9c3000000909090e9c7000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e983000000909090e9d6000000909090e9da000000909090e90b000000909090e90300000090909049c7c601000000e9c500000049be9808d4f1c27f0000e9b600000049be9808d4f1c27f0000e9a700000049be9808d4f1c27f0000e99800000049be9808d4f1c27f0000e98900000049be9808d4f1c27f0000eb7d49be9808d4f1c27f0000eb714d89f64d8b76084983fe0d750c49be9808d4f1c27f0000eb404983fe13750c49be9808d4f1c27f0000eb2e4983fe03750c49be9808d4f1c27f0000eb1c4983fe05750c49be9808d4f1c27f0000eb0a49be9808d4f1c27f0000eb1649be9808d4f1c27f0000eb0a49be9808d4f1c27f00004156488b442428ff15450100004989c64c8b6c24204d89eb4983fd0f7615488d64243048b8000dd4f1c27f0000488b5d08ff234c8b6424184d89e54983fc0f7615488d64243048b8780dd4f1c27f0000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff156a0000004889c3488d6424084883fb0175035beb12488b0424ff15470000004889c3488d6424084883fb017506584883c418c3584883c418ff2520000000f400000000000000|@15585,1,@2096,@6929,@6930,@6928,@6883,@6908|455,0,@15462 470,0,@15463 482,0,@15464 507,0,@15465 525,0,@15464 543,0,@15464 561,0,@15464 573,0,@15462 585,0,@15462 597,0,@15465 1059,0,@15466 1074,0,@15466 1089,0,@15466 1104,0,@15466 1119,0,@15466 1131,0,@15466 1156,0,@15466 1174,0,@15466 1192,0,@15466 1210,0,@15466 1222,0,@15466 1234,0,@15466 1246,0,@15466 1291,0,@15495 1326,0,@15498 6928:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2099| 6929:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2097| 6930:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2098| 6931:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2100| 6932:D25,1616|483b65187306ff5558ca09014989c54989de415048c7c0010000004881e8000100007002eb1c48c7c00100000048c7c30101000041554156ff15d2060000415e415da801740ef60424017408483b04247f1deb1d488b1c2441554156ff15a6060000415e415d4989c44983fc017e02eb34f604240174124c8b24244981fc010100007d21e9a40400004c8b24244d0fb66424ff4e8d2465010000004983fc230f848804000048c7c001000000482b05950500007002eb1c48c7c001000000488b1d7b05000041554156ff1531060000415e415da8017415f6042401740f483b04247f02eb29488d642408eb20488b1c2441554156ff15fe050000415e415d4989c44983fc017e07488d642408eb40f604240174194c8b24244c3b25190500007d05e994020000488d642408eb214c8b24244d0fb66424ff4e8d2465010000004983fc230f8471020000488d64240841ff364d8b6608498d47e0483b45107306ff5550ca00304989c748c740f80300000048c74010070000004c89680848c700010000004d8d77d84c3b75107306ff5550ca01104d89f749c746f80400000049c746180100000049c74610030000004d89660849c70601000000498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c8933ff15130500004989c641564c8b6c24084d89ee4983fd0f7615488d64241048b8000dd4f1c27f0000488b5d08ff2349c7c50100000049c1e5064983ed3f4981e5ff0100004d89f64e8d34f5f9ffffff4981e6ff0100004d0bee4983cd0b4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c0050000004883e801486bc00070064883c001eb1448c7c00500000048c7c301000000ff1561040000a801740b4989c64983c6027002eb1048c7c303000000ff153d0400004989c648c7c001000000482b057c0300007002eb1848c7c001000000488b1d620300004156ff150a040000415ea801741441f6c601740e493bc67f02eb24488d642418eb1b4c89f34156ff15dd030000415e4989c54983fd017e07488d642418eb3041f6c60174124c3b350e0300007d02eb2f488d642418eb184d0fb66eff4e8d2c6d010000004983fd237415488d64241848b8c809d4f1c27f0000488b5d08ff2341f6c601742449d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb094c89f0ff155003000048c7c309000000ff153b0300004889c34883fb0175035beb12488b0424ff151d0300004889c3488d6424084883fb017506584883c408c3584883c408ff25f60200004983fd05750949c7c00f000000eb434983fd0b750949c7c00d000000eb344983fd09750949c7c00b000000eb254983fd03750949c7c009000000eb164983fd07750949c7c003000000eb0749c7c0010000004c89f348b84812d4f1c27f0000ff15890200004989c6415648c7c001000000482b05e60100007002eb1448c7c001000000488b1dcc010000ff1556020000a8017417f6442408017410483b4424087f02eb22488d642410eb19488b5c2408ff15280200004989c64983fe017e07488d642410eb3bf64424080174174c8b7424084c3b35750100007d02eb34488d642410eb1d4c8b7424084d0fb676ff4e8d3475010000004983fe237415488d64241048b8c809d4f1c27f0000488b5d08ff23f64424080174294c8b74240849d1fe498d47f0483b45107303ff55504989c748c740f801000000c640ff014c8930eb0b488b442408ff158a01000048c7c309000000ff15750100004889c34883fb017506584883c408c3584883c408ff25530100004983fd05750949c7c00f000000eb434983fd0b750949c7c00d000000eb344983fd09750949c7c00b000000eb254983fd03750949c7c009000000eb164983fd07750949c7c003000000eb0749c7c0010000004c89f348b8686bd1f1c27f0000ff15e60000004989c64156f64424080174074c8b742408eb19488b442408ff15c00000004989c64d8b364e8d3475010000004981e6ff010000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c408c3584883c408ff2566000000f40000000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000010000000100000001000000010000000000000001000000|@15586,1,@2101,@6934,@6864,@6935,@6938,@6901,@6864,@6558,@4987,@6935,@6939,@6933,@6901,@6864,@6558,@4987,@4933,@6552,@6894,@6558,@4987,@6558,@4987|503,0,@15495 823,0,@15475 1041,0,@15528 1213,0,@15475 1412,0,@10638 6933:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2108| 6934:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2102| 6935:D7,888|483b65187306ff5558ca0901504150ff334c8b43084c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e983010000909090e97b010000909090e973010000909090e977010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9e6000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e9b2000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e956000000909090e9a9000000909090e9ad000000909090e90b000000909090e90300000090909049c7c601000000e99800000049be3808d4f1c27f0000e98900000049be5008d4f1c27f0000eb7d49be6808d4f1c27f0000eb714d89f64d8b76084983fe0d750c49be8008d4f1c27f0000eb404983fe13750c49be6808d4f1c27f0000eb2e4983fe03750c49be6808d4f1c27f0000eb1c4983fe05750c49be6808d4f1c27f0000eb0a49be3808d4f1c27f0000eb1649be3808d4f1c27f0000eb0a49be8008d4f1c27f00004156488b44241848c7c30100000049c7c101000000ff15350100004989c64156488b442420ff151d0100004989c64c8b6c24184d89eb4983fd0f7615488d64242848b8000dd4f1c27f0000488b5d08ff234c8b6424104d89e54983fc0f7615488d64242848b8780dd4f1c27f0000488b5d08ff2349c7c40700000049c1e4064983ec3f4981e4ff0100004d89db4e8d1cddf9ffffff4981e3ff0100004d0be34d0be54d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175035beb12488b0424ff15420000004889c3488d6424084883fb017506584883c418c3584883c418ff251b000000f40000|@15587,1,@2103,@6937,@6936,@6883,@6908|450,0,@15462 465,0,@15463 477,0,@15464 502,0,@15465 520,0,@15464 538,0,@15464 556,0,@15464 568,0,@15462 580,0,@15462 592,0,@15465 667,0,@15495 702,0,@15498 6936:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2105| 6937:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2104| 6938:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2106| 6939:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2107| 6940:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2109| 6941:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2110| 6942:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2111| 6943:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2112| 6944:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2113| 6945:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2114| 6946:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2115| 6947:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2116| 6948:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2117| 6949:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2118| 6950:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2119| 6951:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2120| 6952:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e818d4f1c27f0000c3f4000000|@10402,1,@2121|75,0,@15588 6953:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2122| 6954:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2123| 6955:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2124| 6956:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2125| 6957:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2126| 6958:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2127| 6959:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2128| 6960:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2129| 6961:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2130| 6962:D3,80|49bbe0d47f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@15589,1,@2131|2,0,@19879 6963:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2132| 6964:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2133| 6965:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2134| 6966:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2135| 6967:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2136| 6968:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2137| 6969:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2138| 6970:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2139| 6971:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b860bed1f1c27f0000c3f4000000|@10402,1,@2140|75,0,@11193 6972:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2141| 6973:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2142| 6974:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2143| 6975:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2144| 6976:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2145| 6977:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2146| 6978:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2147| 6979:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2148| 6980:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2149| 6981:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2150| 6982:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2151| 6983:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2152| 6984:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2153| 6985:D5,520|483b65187305ff5558cd094989dd4883f801750948c7c3a1000000eb164883f805750948c7c3c1000000eb0748c7c3b100000049c7c60100000041f6c50175674d8b5d004d8b65084d8b53084983fa03751b498b0b4883c110711048b8d0c6d0f1c27f0000488b5d08ff23eb03498b0b4883f97f720949c7c301000000eb1149c7c30200000048d1e949d3e34983cb014d0bde4d89de4d89e5483b65187306ff5558ca0860eb9341566a0148b80013d4f1c27f000049b80816d4f1c27f000049b958a4d3f1c27f000049c7c205000000ff15520100004c8b2c244d89ee4981fd010200000f82970000004d89f54d89ee4981e5ff0100004d89f6488d64240849c1ee084983ce014981e6ff0100004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730848c70395010000eb754d89f64d89f54983fe01745d4d89ed4981e5ff010000488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730848c7039b010000eb0c488d64240848c7c3010000004883fb017501c3ff251d000000f400000000|@15590,1,@2154,@6986,@6907|93,0,@9475 173,0,@15538 183,0,@15567 193,0,@14742 6986:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2155| 6987:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2156| 6988:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2157| 6989:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2158| 6990:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2159| 6991:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2160| 6992:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2161| 6993:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2162| 6994:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2163| 6995:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b85019d4f1c27f0000c3f4000000|@10402,1,@2164|75,0,@15591 6996:D9,2592|483b65187306ff5558ca0903534151a8010f85c50000004c8b30ff70084d8b2e4d89ec4983fd59751958488b5c24084159488d64240849c7c001000000e9beffffff4d89e54983fc03752b4d8b6e084d8b66104983f8037515488d64241848b86819d4f1c27f0000488b5d08ff234d89e6e9830400004983fd01752c4d8b5e084d8b6e104d8b66184983f8037515488d64241848b8001ad4f1c27f0000488b5d08ff234d89e6eb3b498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c8b6c24104c896b084c8933584159488d642408e924ffffff488d64240858c341f6c60175604d8b0e4d8b56084d3bcd7502eb494d8b01498b7d004c3bc7751f4d8b49084d8b45084d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374114d89d6483b65187306ff5558ca0078eba349c7c603000000eb0749c7c6010000004983fe037515488d64241848b8581ad4f1c27f0000488b5d08ff234983c3027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983eb014d6bdb087115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c30149c7c6010000004d2bf37115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004d896b204d89731849be58a4d3f1c27f00004d89731049bed81ad4f1c27f00004d89730849c703370000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e41564d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bb001bd4f1c27f00004d895e184d896e1049c746080500000049c7060900000041564c8b5424184d8b1a4d89de4d89d24983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d24d89324d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618050000004d895e1049c746081100000049c70611000000498d47e8483b45107306ff5550ca00784989c748c740f80200000048c74008010000004c89304d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89661049c746080100000049c7060f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424310000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703070000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d895d1049bbe81ad4f1c27f00004d895d0849c745003f0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c6eb09ff152d0600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff15e30500004989c6488d64240848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054889c3eb09ff156d0500004889c358415949c7c0030000004883c408e907fbffff41f6c60175604d8b164d8b5e084d3bd57502eb494d8b0a4d8b45004d3bc8751f4d8b52084d8b4d084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374114d89de483b65187306ff5558ca0070eba349c7c603000000eb0749c7c6010000004983fe037515488d64241848b8281bd4f1c27f0000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004d896b0849c703430000004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049ba801bd4f1c27f00004d8956184d896e1049c746080100000049c706090000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bb001bd4f1c27f00004d895e184d896e1049c746080500000049c7060900000041564c8b4c24184d8b194d89de4d89c94983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89c94d89ca4d89314d89d2498b3a4989fe4d89d24983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d24d89324d8d77d84c3b75107306ff5550ca80384d89f749c746f80400000049c746180300000049897e1049c746080300000049c706110000004d8d4fd84c3b4d107306ff5550ca80784d89cf49c741f80400000049ba801bd4f1c27f00004d8951184d89691049c741080500000049c701090000004d8d57d84c3b55107306ff5550ca807a4d89d749c742f80400000049c74218050000004d895a1049c742080300000049c702110000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f8020000004989780849c70031000000498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8942084d890a498d47e8483b45107306ff5550ca007c4989c748c740f8020000004c8950084c89304d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89661049c746080100000049c7060f0000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424310000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d896b0849c703070000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d895d1049bbe81ad4f1c27f00004d895d0849c745003f0000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d896500498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c89334883fb0175054989c6eb09ff15f60000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017504415eeb12488b0424ff15ac0000004989c6488d64240848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054889c3eb09ff15360000004889c358415949c7c0030000004883c408e9e8f5fffff400000000000000|@15608,1,@2167,@6998,@6999,@7000,@7001,@7002,@6997|96,0,@15592 149,0,@15595 349,0,@15597 376,0,@9475 407,0,@9475 444,0,@9475 499,0,@14742 513,0,@15600 601,0,@15602 661,0,@9475 931,0,@15601 1395,0,@15603 1476,0,@15605 1610,0,@15602 1670,0,@9475 1718,0,@9475 1821,0,@15605 2242,0,@15601 6997:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2173| 6998:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2168| 6999:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2169| 7000:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2170| 7001:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2171| 7002:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2172| 7003:D3,552|483b65187306ff5558ca09014c8b334d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9aa000000909090e9ae000000909090e9af000000909090e9fc000000909090e9200100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca01614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01314d89f749c746f8020000004d8966084d892ee9cc0000004d8b6e104d8d77e84c3b75107306ff5550ca01214d89f749c746f80200000049c74608010000004d892ee99d00000049c7c601000000e9910000004d8b7608e9880000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca01614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca01314d89f749c746f8020000004d8966084d892eeb334d8b6e084d8d77e84c3b75107306ff5550ca01214d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041f6c6010f85930000004d8b1e4d8b6e084d8b60f84d89e249c1e40849c1ec074983cc014d3bdc721048b81011d1f1c27f0000488b5d08ff234f8b4c98fc4d8d67e84c3b65107306ff5550ca016f4d89e749c74424f8020000004d894c24084989042449c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234f896498fc4d89ee483b65187306ff5558ca0141e963ffffff48c7c001000000c3f40000000000|@15609,1,@2174|424,0,@9995 499,0,@10034 7004:D9,7352|483b65187306ff5558ca090753415041514152488b5c2408ff15da1c00004989c64156f60424010f85100200004c8b34244d8b2e4c8b7424204d8b264c8d1d080000004f8d5ca3fc41ffe3e933000000909090e9b7000000909090e9bb000000909090e9b3000000909090e9b7000000909090e934010000909090e9b10100009090904d89f64d8b66104d89f64d8b5e204c8b7424104d8b56f849c1e20849c1ea074983ca014d3bda7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b749efc4983fe03743c4c8b7424084d8b56f849c1e20849c1ea074983ca014d3bda7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b749efce9101b0000e9f519000049c7c601000000e9e406000049c7c601000000e9d80600004d89f64d8b66104c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc4983fe03743c4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fce9c9180000e9b81800004d89f64d8b66084c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc4983fe03743c4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fce9a4170000e99317000049c7c601000000e9c2050000488d6424184c8b7424084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e949020000909090e946030000909090e93e030000909090e942030000909090e93f040000909090e9390500009090904d89f64d8b56104d89f64d8b6e184d89f64d8b5e204c8b7424684d8b76f849c1e60849c1ee074983ce014d3bde7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424684f8b649efc4983fcff756e4c8b7424604d8b264c8b7424604d8b364983c6027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b4c24604d89314c8b7424684d8b76f849c1e60849c1ee074983ce014d3bde7215488d64241048b80017d1f1c27f0000488b5d08ff234c8b7424684f89649efceb004d8d77e84c3b75107306ff5550ca00344d89f749c746f8020000004d89660849c706670000004c8b6424684d8b6424f849c1e40849c1ec074983cc014d3bd47215488d64241048b81011d1f1c27f0000488b5d08ff234c8b6424684f8b5c94fc4983fbff75714c8b6424604d8b1c244c8b6424604d8b24244983c4027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b4c24604d89214c8b6424684d8b6424f849c1e40849c1ec074983cc014d3bd47215488d64241048b80017d1f1c27f0000488b5d08ff234c8b6424684f895c94fceb004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418010000004d895c24104d896c240849c70424110000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e91f0300004d89f64d8b66104c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80017d1f1c27f0000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e91a02000048c7c001000000e90e0200004d89f64d8b66104c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80017d1f1c27f0000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9090100004d89f64d8b66084c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424684f8b6ca6fc4983fdff756e4c8b7424604d8b2e4c8b7424604d8b364983c6027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24604d89334c8b7424684d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b80017d1f1c27f0000488b5d08ff234c8b7424684f896ca6fceb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70667000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b34244c89f34983fe017508488d642410c258004889db488d6424084c8b7424084c897424604883c460ff25f11400004983fe0175094c8b3424e9b11000004d8b2e4c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242848b80017d1f1c27f0000488b5d08ff234d89f64bc744aefc030000004c8b7424204d8b1e4d89dc4983fb010f85140500004d89f64d8b4e104d89f64d8b66184d89f64d8b56204d3bea0f85160100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bce7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b5c8efc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bce7215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f895c8efceb004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618010000004d895e104d89660849c70611000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9db0300004d3be90f85bd0100004c8d35080000004f8d7426ff41ffe6eb1aeb21eb28eb2feb36eb3deb44eb4beb52eb59eb60eb67eb6eeb7549c7c40f000000eb7349c7c411000000eb6a49c7c413000000eb6149c7c40d000000eb5849c7c40b000000eb4f49c7c409000000eb4649c7c407000000eb3d49c7c401000000eb3449c7c403000000eb2b49c7c405000000eb2249c7c419000000eb1949c7c41b000000eb1049c7c415000000eb0749c7c4170000004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b5c96fc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4c24784d89314c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f895c96fceb004d8d77d84c3b75107306ff5550ca00384d89f749c746f80400000049c74618010000004d895e104d89660849c70611000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9150200004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b5c96fc4983fbff75744c8b7424784d8b1e4c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424784d89304c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bd67215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f895c96fceb004d8d77e84c3b75107306ff5550ca003a4d89f749c746f8020000004d895e0849c706670000004c8b9c24800000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64242848b81011d1f1c27f0000488b5d08ff234c8b9c24800000004f8b548bfc4983faff75744c8b5c24784d8b134c8b5c24784d8b1b4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424784d89184c8b9c24800000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64242848b80017d1f1c27f0000488b5d08ff234c8b9c24800000004f89548bfceb004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049c74318010000004d8953104d89630849c703110000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24498d47e8483b45107306ff5550ca00704989c748c740f8020000004c8960084c8930e9970300004d89f64d89e34983fc090f85220100004d89f64d8b5e104d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9650200004d89f64d89dc4983fb030f85220100004d89f64d8b5e104d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930e9330100004d89f64983fc0b0f851f0100004d89f64d8b5e084d3bdd750c48c7c001000000e9050100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b649efc4983fcff75744c8b7424784d8b264c8b7424784d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b5424784d89324c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242848b80017d1f1c27f0000488b5d08ff234c8bb424800000004f89649efceb004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70667000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424204d8b264c8d1d080000004f8d5ca3fc41ffe3e933000000909090e965010000909090e9f5010000909090e908020000909090e90c020000909090e910020000909090e99d0200009090904d89f64d8b5e104d89f64d8b66204d3bdd7405e9880000004c8b7424084d8b56f849c1e20849c1ea074983ca014d3bea7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b56084983fa01750949c7c203000000eb0749c7c2010000004983fa03751a4d8b364d3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f848e0000004d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c603000000e9670100004d89f64d8b66104d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000e9cf0000004983fd01750949c7c603000000eb0749c7c601000000e9b400000049c7c601000000e9a800000049c7c601000000e99c0000004d89f64d8b66084d3be5740949c7c601000000eb7e4c8b7424084d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc41f6c601753a4d8b5e084983fb01750949c7c303000000eb0749c7c3010000004983fb03751a4d8b364d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe03750c49c7c601000000e90a0100004c8bb424800000004d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81011d1f1c27f0000488b5d08ff234c8bb424800000004f8b74aefc4983feff75764c8b7424784d8b364c8b6424784d8b24244983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b5c24784d89234c8ba424800000004d8b6424f849c1e40849c1ec074983cc014d3bec7215488d64242848b80017d1f1c27f0000488b5d08ff234c8ba424800000004f8974acfceb004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c70424310000004d8d77e84c3b75107306ff5550ca01304d89f749c746f80200000049c74608010000004d892641564c8b7424784d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b89011d1f1c27f0000488b5d08ff234c8b7424784f8b74aefc41ff3641ff76084c8b7424304c89f34983fe0175054889c3eb09ff15750700004889c34883fb0175074c8b742410eb0e488b442410ff15520700004989c6ff34244156f6442408010f85940000004c8b742408498b064d89f641ff7608488bb42498000000488b9424900000004c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b8424b0000000488bbc24a80000004156415541544153415241514150574989d24989f1488b5c24484c8b442460ff15bf0600004989c4415d4c8924244c896c2408483b65187303ff5558e961ffffffff34244c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e987000000909090e9b1000000909090e9b5000000909090e9b9000000909090e90a010000909090e9310100009090904d89f64d8b66104d89f64d8b76204d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e9d90000004d89f64d8b7610498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e9a700000048c7c001000000e99b0000004d89f6498b4608e98f0000004d89f54d8b75084d89ed4d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb364d89f64d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004c8b7424304c89f34983fe0175054989c6eb09ff15fb0400004989c64156ff742428ff742410ff742458488b4424584c8bac24d00000004c8ba424c80000004c8b9c24c00000004c8b9424b80000004c8b8c24b00000004c8b8424a8000000488bbc24a0000000488bb42498000000488b942490000000488b8c2488000000488b9c248000000048899c2480000000488b5c241048898c248800000048899424900000004889b424980000004889bc24a00000004c898424a80000004c8b4424084c898c24b00000004c8b0c244c899424b80000004989c2488b4424184c899c24c00000004c89a424c80000004c89ac24d00000004883c478e946e7ffff488d64242841f6c60175404d8b1e4d8b66084c8b5424084d8b4af849c1e10849c1e9074983c9014d3bd97215488d64242848b81011d1f1c27f0000488b5d08ff234d89d24f8b549afceb1749c7c6010000004983fe017502eb034d8b2ee9f5eeffff41f6c201755e498b3a4d8b4a084c8b442410498b70f848c1e60848c1ee074883ce01483bfe7215488d64242848b81011d1f1c27f0000488b5d08ff234d89c04d8b44b8fc4983f80375114d89ca483b65187306ff5558ca007ceba549c7c201000000eb0749c7c2030000004983fa0375234d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee95cffffff4d89e6483b65187306ff5558ca0060e9fbfeffff49c7c601000000e92feeffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81011d1f1c27f0000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff49c7c601000000e98fedffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81011d1f1c27f0000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff4c8b7424104d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc4983fe0374394c8b7424084d8b5ef849c1e30849c1eb074983cb014d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fceb0c49c7c601000000e979ecffff41f6c601755e4d8b0e4d8b5e084c8b5424104d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81011d1f1c27f0000488b5d08ff234d89d24f8b548afc4983fa0375114d89de483b65187306ff5558ca0070eba549c7c601000000eb0749c7c6030000004983fe0375834d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e967ffffff41f6c601755e4d8b064d8b56084c8b4c2410498b79f848c1e70848c1ef074883cf014c3bc77215488d64242848b81011d1f1c27f0000488b5d08ff234d89c94f8b4c81fc4983f90375114d89d6483b65187306ff5558ca0078eba549c7c601000000eb0749c7c6030000004983fe030f8575feffff4d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee9cffefffff40000000000|@15610,1,@2175,@7006,@7007,@7062,@7063,@7064,@7005|178,0,@9995 239,0,@9995 335,0,@9995 396,0,@9995 468,0,@9995 529,0,@9995 711,0,@9995 770,0,@9475 825,0,@10034 923,0,@9995 984,0,@9475 1040,0,@10034 1239,0,@9995 1298,0,@9475 1353,0,@10034 1512,0,@9995 1571,0,@9475 1626,0,@10034 1773,0,@9995 1832,0,@9475 1887,0,@10034 2098,0,@10034 2211,0,@9995 2273,0,@9475 2331,0,@10034 2665,0,@9995 2727,0,@9475 2785,0,@10034 2943,0,@9995 3005,0,@9475 3063,0,@10034 3166,0,@9995 3228,0,@9475 3286,0,@10034 3521,0,@9995 3583,0,@9475 3641,0,@10034 3827,0,@9995 3889,0,@9475 3947,0,@10034 4130,0,@9995 4192,0,@9475 4250,0,@10034 4500,0,@9995 4650,0,@9995 4811,0,@9995 5014,0,@9995 5170,0,@9995 5233,0,@9475 5292,0,@10034 5435,0,@9998 6381,0,@9995 6474,0,@9995 6654,0,@9995 6814,0,@9995 6949,0,@9995 7010,0,@9995 7092,0,@9995 7240,0,@9995 7005:D3,160|483b65187305ff5558cd09a8010f8583000000ff30488b40084c8b63f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64240848b81011d1f1c27f0000488b5d08ff234d89f64e8b74b3fc4983fe037434e8a3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e96affffff48c7c001000000c3f400|@9893,1,@2235|60,0,@9995 7006:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2176| 7007:D121,27424|483b65187306ff5558ca09075341514c8b70084d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e912020000909090e939050000909090e9a20d0000909090e9b20e0000909090e9df0e0000909090e927110000909090e9fb140000909090e90b180000909090e9c91b0000909090e9f11d0000909090e91f220000909090e9c3220000909090e976270000909090e9a8270000909090e93a2b0000909090e9992d0000909090e9e1320000909090e9b2360000909090e96e370000909090e91b380000909090e9843d0000909090e9bb3e0000909090e90d410000909090e974410000909090e958420000909090e9b1420000909090e929430000909090e995440000909090e962450000909090e9b1470000909090e99e480000909090e9664f0000909090e943560000909090e9d2560000909090e966580000909090e9b2590000909090e9f45a0000909090e9eb5f0000909090e9ba600000909090e961620000909090e92f640000909090e947650000909090e9a266000090909041ff760841ff761041ff7618498b4620488b5c24584c8b442418ff153b6d00004989c54c8b7424184d8b56f849c1e20849c1ea074983ca014c8b5c24104d89dc4d3bda7215488d64242848b89011d1f1c27f0000488b5d08ff234d89e44d89f64f8b74a6fc498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424084c8b2c244c896808488d6424184c89305b4c8b4424284c8b4c24204c8b34244c897424404883c440ff25946c000041ff760841ff7610498b4618488b5c24504c8b442410ff15706c00004989c24c8b7424104d8b5ef84d89d949c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b6caefc488d6424084d8b65004983fc030f85a40200004d8b5d084d89f649c1e10849c1e9074983c9014c8b24244d89e54d3be17215488d64241848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc488d6424104d8b2e4983fd030f853e0200004d8b4e084d3bd97507488d642408eb3c4d8b334d8b294d3bf5751f4d8b73084d8b69084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64240848b8c01cd4f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca000e4d89ef49c745f80300000049c74510f1ffffff49be58a4d3f1c27f00004d8975084d894d004d8d77e04c3b75107306ff5550ca002e4d89f749c746f8030000004d895e104d896e0849c706610000004d8d67d84c3b65107306ff5550ca004e4d89e749c74424f80400000049c7442418050000004d895c241049c74424080300000049c70424510000004d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f8030000004d8955104d894d0849c74500030000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a0849c702050000004d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004d894b2049c74318090000004d89531049c743080100000049c703370000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244c89f34983fe017508488d642408c240004889db488d6424084c8b34244c897424404883c440ff257f690000488d64240848b890dad3f1c27f0000488b5d08ff23488d64241848b890dad3f1c27f0000488b5d08ff234d8b760841ff364c8b2c244d89ec4983fd090f85d3020000488d642408498b46184d8b6e104d8b56204c8b1c244d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241048b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64d89f043ff74aefc4c8b7424084d8b2e4983fd030f852b0200004d89f641ff7608488b5c2468ff15906800004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080900000049c7060900000041564c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cd0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb5a4d89f64983fd0575514c8b6c24104d8b65004983fc0575404d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742420eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2420ff15a46600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b890dad3f1c27f0000488b5d08ff23498b46184c8b284983fd090f85da0200004c8b50084d8b6e104d8b5e204c8b7424084d8b4ef84d89c849c1e10849c1e9074983c9014d3bd97215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64f8b5c9efc4d8b0b4983f9030f85720200004d8b5b084d89f64d89c149c1e00849c1e8074983c8014d3be87215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4d8b45004983f8030f85170200004d8b6d084d89f649c1e10849c1e9074983c9014d3bd17215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64f8b7496fc4d8b164983fa030f85c00100004d8b76086a016a014d3beb7505e9170100004d8b55004d8b034d89c14d3bd0751f4d8b55084d8b43084d3bd0750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84d80000004d3bf37505e9be0000004d8b164d3bd1751f4d8b56084d8b4b084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f84860000004d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d896a0849c702070000004d89d54d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d896a104d895a0849c7023f0000004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004c8b4c24204d894d084d8955004c8934244c896c2408eb0e4c892c244c8b7424204c89742408eb0e4c8934244c8b7424204c89742408415e415d4d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89720849c702070000004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d89e44d896608488d64240849c70609000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c24000488d64241848b890dad3f1c27f0000488b5d08ff23488d64241848b890dad3f1c27f0000488b5d08ff23488d64241848b890dad3f1c27f0000488b5d08ff234d8b6e104d8b56204c8b5c24084d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64d89f043ff74aefc488b5c2468ff15e36200004989c24c8b4c24084d8b314d89f34983fe030f85ea0100004d89c94d8b69084d89ec4d8d77d84c3b75107306ff5550ca003e4d89f749c746f8040000004d8956184d896e104c8b6c24104d896e0849c7060900000041564c8b5424084d89d64d3bd17505e9f90000004d89f64d8b164d89d14983fa0175424983fb0175374d89f64d8b76084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb05e9ad000000e9b10000004d89f64d89ca4983f90375584983fb0375504d89f64d8b76084d3bf4750949c7c603000000eb334d8b2e4d8b1c244d3beb75204d8b76084d8b6c24084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb46eb4d4d89f64983fa0575444983fb05753c4d89f64d8b76084d89e54d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742428eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2428ff150e6100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c428c24000488d64242848b890dad3f1c27f0000488b5d08ff234d8b6e084d8b66104c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3bea7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4d8b55004983fa030f85b40000004d8b6d084d89f649c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc03755c4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff23498b4608488b1c24ff15965f0000488d642408ff15835f0000415848c7c3010000004c8b34244c897424404883c440ff255f5f00004d8b66084d8b76104c8b2c244d8b55f84d89d349c1e20849c1ea074983ca014d3bf27215488d64241048b89011d1f1c27f0000488b5d08ff234d89ed4f8b74b5fc4d89ed49c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89ed4f8b6ca5fc488d6424084d8b65004983fc030f85b60100004d8b65084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bb501dd4f1c27f00004d895d0849c74500610000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703450000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849ba701dd4f1c27f00004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bcb81dd4f1c27f00004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4c3b35c15d00007502eb544d8b2e4983fd0375514d8b6e084c3b2da15d0000750949c7c503000000eb2d4d8b65004983fc01751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037402eb064889d8c24000498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdd81dd4f1c27f00004c89681048c740080b0000004c89304c8b34244c897424404883c440ff250c5d0000488d64240848b890dad3f1c27f0000488b5d08ff234d8b6e084d8b4e104d8b56184d8b76204983fe03750949c7c403000000eb0749c7c4050000004d8d77e84c3b75107306ff5550ca00364d89f749c746f8020000004d89660849c7064b00000041564c8b6424084d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241848b89011d1f1c27f0000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64242048b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242848b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4c3b2df45b00007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35c85b0000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2420eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be081ed4f1c27f00004c8930488b5c2420ff15175b00004889c34c8b2c244d89ee4c3b2dfe5a00007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b35c55a0000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be201ed4f1c27f00004c8930ff15115a00004889c34c8b2c244d89ee4c3b2df85900007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b35bf590000750949c7c603000000eb2c4d8b2e4983fd0d751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424084989deeb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be501ed4f1c27f00004c8930ff15085900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c2400041ff760841ff761041ff7618498b46204c8b7424584d8b66f849c1e40849c1ec074983cc014c8b7424104d89f54d3bf47215488d64242848b81011d1f1c27f0000488b5d08ff234c8b7424584d89ed4f8b74aefc4983fe037409488d64242058c24000488b5c24584c8b442418ff15585800004989c641566a016a016a014c8b6c24204d89ee4983fd03755d4c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c744241007000000e9bb0000004d89f64983fe05755a4c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c744241007000000eb584c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64244848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4c89342448c74424080300000048c74424100b0000004c8b3424ff742408488b5c24184c8b6c24404d8b55f849c1e20849c1ea074983ca014c8b5c24384d89dc4d3bda7215488d64245048b89011d1f1c27f0000488b5d08ff234d89e44d89ed43ff74a5fc4d8d57e84c3b55107306ff5550ca08404d89d749c742f8020000004d89720849c702070000004c8b34244d8b2e4983fd030f85d90000004d89f6498b460849b858a4d3f1c27f000049c7c101000000ff157b5600004989c64156498d47d8483b45107303ff55504989c748c740f8040000004c8b7424304c89701848c74010030000004c8b7424104c8970084c8b7424084c89304c8b8424880000004c8b8c2480000000488b5c2458ff15195600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be681ed4f1c27f00004c89304883c448c24000488d64245848b890dad3f1c27f0000488b5d08ff234d8b6e104d8b4e184d8b56204c8b24244d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4c3b2de35400007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35b7540000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2418eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be081ed4f1c27f00004c8930488b5c2418ff15065400004889c34c8b2c244d89ee4c3b2ded5300007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b35b4530000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be201ed4f1c27f00004c8930ff15005300004889c34c8b2c244d89ee4c3b2de75200007507488d642418eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b35ae520000750949c7c603000000eb2c4d8b2e4983fd0d751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424184989ddeb6f4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be501ed4f1c27f00004c8930ff15f75100004989c54883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd781ed4f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb81ed4f1c27f00004c8930c240004d8b4e084d8b6e104d8b5e184c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b24244d8b7424f84d89f249c1e60849c1ee074983ce014d3bce7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44f8b748cfc4d89e449c1e20849c1ea074983ca014d3bda7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44f8b5c9cfc488d6424084d3bde7505e9f90000004d8b234d89e24983fc0175464d8b264983fc0175384d8b63084d8b56084d3be2750949c7c403000000eb154d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb05e9ac000000e9ad0000004d89d44983fa03755c4d8b264983fc0375514d8b63084d8b56084d3be2750949c7c403000000eb334d8b0c244d8b024d3bc875204d8b6424084d8b52084d3be2750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037502eb44eb484983fc0575424d8b264983fc0575374d8b63084d8b56084d3be2750949c7c403000000eb154d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb0458c24000eb004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c7042407000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c89305b4c8b34244c897424404883c440ff255d4f00004d8b7608498b0641ff76104d8b4e084d8b56184d8b6e204c8b6424084d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241848b89011d1f1c27f0000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64242048b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242848b89011d1f1c27f0000488b5d08ff234d89f64d89f043ff74aefc488b5c2448ff158a4e00004989c64d8b2e4983fd070f85460300004d8b66084d89e54d8b24244983fc03750949c7c403000000eb0749c7c4010000004983fc030f85140300004d89ee4d8b6e084c3b2d394e00007507488d642430eb3b4d8b65004d89e64983fc01751c4d8b65084983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037507488d642430eb444c3b2de44d00007507488d642430eb344983fe05751c4d8b75084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64243048b8d01ed4f1c27f0000488b5d08ff234c8b7424184d89f44983fe03750c49be1816d4f1c27f0000eb0a49be501fd4f1c27f000041564d8d5fe84c3b5d107306ff5550ca00304d89df49c743f80200000049bef01dd4f1c27f00004d8973084c8b7424104d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049baa85ed1f1c27f00004d8956084c8b5424084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e41564d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e0849c7061500000041564c8b6c24284d89ee4c3b2d7f4c00007502eb654d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b354b4c0000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375074c8b742440eb6a4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049bef01dd4f1c27f00004c8930488b5c2440ff15984b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408ff152d4b00004158488d64241048c7c3010000004c8b7424304c897424704883c470ff25034b0000488d642430eb05488d64243048b8901fd4f1c27f0000488b5d08ff234d8b7608498b460841ff761041ff761841ff762041ff36ff15c24a00004989c64156488b442410ff15aa4a00004989c641564c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64d89f143ff74aefc4c8b942488000000488b44240848c7c3010000004c8b442440ff15394a00004989c6415649c7c6010000004c8b6c2410e92e4600004d8b6e084d8b66104c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3bea7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4d89f649c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d3bee750a488d642408e9070100004d8b65004d89e34983fc0175494d8b264983fc01753b4d8b65084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc03750a488d642408e9b6000000e9c30000004d89dc4983fb0375634d8b264983fc0375584d8b65084d8b5e084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037402eb07488d642408eb47eb574983fc0575514d8b264983fc0575464d8b65084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037515488d64240848b80820d4f1c27f0000488b5d08ff23eb004d8b65004983fc030f85f902000041ff75084d8b2e4983fd030f85d302000041ff76084c8b6c24084d89ee4c3b2c247507488d642418eb4a4d89f64d8b264c8b2c244d8b5d004d3be375254d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037515488d64241848b89820d4f1c27f0000488b5d08ff234d8b304983fe070f853e020000498b4008488b5c24284c8b442420ff15c94700004989c54c8b7424204d8b0e4c8b7424204d8b364983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b6424204d89342449c7c6030000004d8d47f04c3b45107306ff5550ca00624d89c749c740f80100000041c640ff404d89304d8d77e04c3b75107306ff5550ca00234d89f749c746f8030000004d8946104d896e0849c706330000004d8d67e84c3b65107306ff5550ca00434d89e749c74424f8020000004d894c240849c70424310000004d8d5fe84c3b5d107306ff5550ca00534d89df49c743f8020000004c8b2c244d89ea4d896b0849c703030000004d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500350000004d8d5fd84c3b5d107306ff5550ca00774d89df49c743f8040000004d8943184c8b4424084d8943104d89d24d89d04d89530849c7032f0000004d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d89c04d894210488d6424104d894a0849c702390000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b04244d894108488d6424084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c24000488d64241848b8f020d4f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff23488d64240848b890dad3f1c27f0000488b5d08ff23488d642408498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849be681ed4f1c27f00004c8930c240004d8b56084d8b4e104d8b6e184c8b24244d8b5c24f84d89de49c1e30849c1eb074983cb014d3bcb7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44d89e343ff748cfc4d89db4d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4c3b2d664400007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b353a440000750949c7c603000000eb2c4d8b264983fc03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2418eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be081ed4f1c27f00004c8930488b5c2418ff15894300004889c34c8b2c244d89ee4c3b2d704300007507488d642408eb6a4d89f64d8b264d89e54983fc017502eb5b4d89f64983fd0375524d89f64d8b76084c3b3537430000750949c7c603000000eb2c4d8b2e4983fd0f751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642408eb6b4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049be201ed4f1c27f00004c8930ff15834200004889c34c8b2c244d89ee4c3b2d6a4200007507488d642418eb6a4d89f64d8b264d89e54983fc017502eb5e4d89f64983fd0375554d89f64d8b76084c3b3531420000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d6424184989deeb6f4d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b2c244d896e08488d64240849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b00000049bef01dd4f1c27f00004c8930ff157a4100004989c64883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be8021d4f1c27f00004c8930c2400041ff76084d8b6e10498b461841ff76204983fd01750949c7c601000000eb594d8b6d004c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e41564c8b442440488b5c2418ff15b24000004989c641564c8b442448488b442418488b5c2420ff15904000004989c64156f6442418010f85540100004c8b742418498b06488b5c24684c8b442428ff15604000004989c44c8b7424404d8b1e4c8b7424404d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24404d8975004d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004d895d0849c74500310000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89661049c746080300000049c7060f0000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c7442418050000004d895c241049c74424081100000049c70424110000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049ba08dfd3f1c27f00004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb0749c7c60100000041564c8b7424084c89f34983fe017507488b442410eb0b488b442410ff15f33e0000488b5c24184c8b442438ff15db3e00004889c34883fb017508584883c438c24000584c8b7424384c897424784883c478ff25ad3e00004d8b660841ff7610498b46184c8b7424484d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81011d1f1c27f0000488b5d08ff234c8b7424484f8b74a6fc4983fe037409488d64241058c240004c8b7424084d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64d89f043ff74a6fc4c8b204d89e64983fc070f856d0200004c8b701041f6c6010f85090200004d8b264c8b5c24084d89de4983fb07750949c7c607000000eb194d89f64983fe09750949c7c607000000eb0749c7c60b0000004d89c049c1e50849c1ed074983cd014d3be57215488d64242048b89011d1f1c27f0000488b5d08ff234d89c04f8b64a0fc4c3b2424750a488d642418e9200100004d8b2c244d89eb4983fd0175534c8b1c244d8b2b4983fd0175414d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb0a488d642418e9c5000000e9c60000004d89dd4983fb0375684c8b1c244d8b2b4983fd0375594d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037507488d642418eb51eb554983fd05754f4c8b1c244d8b2b4983fd0575404d8b6c24084d89db4d8b5b084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb09488d64241858c24000eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c8970084c8b34244c8930488d642408488b5c24104c8b7424184c897424584883c458ff25ed3b0000488b5c2438ff15da3b00004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d6424185b4c8b34244c897424404883c440ff25873b00004983fe090f85e20100004c8b70084d89c049c1e50849c1ed074983cd014d3bf57215488d64242048b89011d1f1c27f0000488b5d08ff234d89c04f8b6cb0fc4c3b2c24750a488d642418e9240100004d8b75004d89f44983fe0175544c8b24244d8b34244983fe0175414d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb0a488d642418e9c8000000e9c90000004d89e64983fc03756a4c8b24244d8b34244983fe03755a4d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb334d8b1e4d8b14244d3bda75204d8b76084d8b6424084d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488d642418eb52eb564983fe0575504c8b24244d8b34244983fe0575404d8b75084d89e44d8b6424084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb09488d64241858c24000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d642410488b5c24084c8b7424104c897424504883c450ff2593390000488b5c2438ff15803900004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c8970084c8b34244c8930488d6424185b4c8b34244c897424404883c440ff252d3900004d8b6e084d8b56104d8b66184d8b5e204c8b34244d8b46f84d89c149c1e00849c1e8074983c8014d3bd07215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b5496fc4d8b024983f8030f856e0300004d8b52084983fd01750949c7c501000000eb654d8b6d004d89f649c1e10849c1e9074983c9014d3be97215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd030f85040300004d8b76084d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d8975004d8b0c244d89ce4983f9070f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042407000000e9f5010000488d64240848b890dad3f1c27f0000488b5d08ff234d89f14983fe050f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042405000000e958010000488d64240848b890dad3f1c27f0000488b5d08ff234d89ce4983f9030f85900000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc0375324d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042403000000e9bb000000488d64240848b890dad3f1c27f0000488b5d08ff234983fe010f858d0000004d8b6424084c8b34244d8b4ef849c1e10849c1e9074983c9014d3be17215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d6424084d8b264983fc03752f4d8b76084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8974240849c7042401000000eb24488d64240848b890dad3f1c27f0000488b5d08ff23488d64240849bc58a4d3f1c27f00004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c70637000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b890dad3f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff234d8b66084d8b76104d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89751849be58a4d3f1c27f00004d89751049bec8ded3f1c27f00004d89750849c74500030000004c8b34244d8b5ef849c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c89305b4c8b34244c897424404883c440ff25883400004d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd0375584d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7063d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff234d8b6e10498b46184d8b56204c8b304983fe090f85cf0200004c8b58084c8b34244d8b66f84d89e149c1e40849c1ec074983cc014d3bd47215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b6496fc4d8b14244983fa030f856f0200004d8b6424084d89f64d89ca49c1e10849c1e9074983c9014d3be97215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4d8b4d004983f9030f85130200004d8b6d084d89f649c1e20849c1ea074983ca014d3bda7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b749efc488d6424084d8b1e4983fb030f85b70100004d8b76086a016a014d3bec7505e91a0100004d8b5d004d8b0c244d89ca4d3bd975204d8b5d084d8b4c24084d3bd9750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84d90000004d3bf47505e9bf0000004d8b1e4d3bda75204d8b5e084d8b5424084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f84860000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004d89dd4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d896b104d89630849c7033f0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004c8b5424104d8955084d895d004c8934244c896c2408eb0e4c892c244c8b7424104c89742408eb0e4c8934244c8b7424104c89742408415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703070000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70641000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c408c24000488d64240848b890dad3f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff234c8b1c244d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241048b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64d89f043ff74aefc488b5c2460ff15683000004989c24c8b4c24084d8b314d89f34983fe030f85e10100004d89c94d8b69084d89ec4d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d8956104d896e0849c7064100000041564c8b5424084d89d64d3bd17505e9f90000004d89f64d8b164d89d14983fa0175424983fb0175374d89f64d8b76084d3bf4750949c7c603000000eb154d3bf4750949c7c603000000eb0749c7c6010000004983fe037402eb05e9ad000000e9b10000004d89f64d89ca4983f90375584983fb0375504d89f64d8b76084d3bf4750949c7c603000000eb334d8b2e4d8b1c244d3beb75204d8b76084d8b6c24084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb46eb4d4d89f64983fa0575444983fb05753c4d89f64d8b76084d89e54d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742420eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2420ff159c2e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b890dad3f1c27f0000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85de0000004d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bc501dd4f1c27f00004d89660849c706610000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424450000004d8d5fe84c3b5d107306ff5550ca00504d89df49c743f8020000004c8b2c244d896b08488d64240849bdb81dd4f1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85f90100004d8b5e084d8b304983fe090f85d30100004d8b68084c8b7424184d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b81011d1f1c27f0000488b5d08ff234c8b7424184f8b64aefc4983fcff756e4c8b7424104d8b264c8b7424104d8b364983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b5424104d89324c8b7424184d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b80017d1f1c27f0000488b5d08ff234c8b7424184f8964aefceb004d8d77e84c3b75107306ff5550ca00184d89f749c746f8020000004d895e0849c706070000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500470000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c706390000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d64240849bc9821d4f1c27f00004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb021d4f1c27f00004c8930c24000488d64240848b8d021d4f1c27f0000488b5d08ff23488d64240848b890dad3f1c27f0000488b5d08ff23498b4608488b5c24504c8b0424ff159e2a00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70647000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c240004d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f858b0000004d8b76084c3b35e32900007502eb474d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037415488d64240848b86022d4f1c27f0000488b5d08ff23498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849bef022d4f1c27f00004c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff23488d642408498b5e084883fb017d15488d64240848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15152900004c8b2c244d89ee4983fd017508488d642408c240004c89f3488d6424084c8b34244c897424404883c440ff25dd280000488d6424084d8b6e084d8b66104983fd017c584d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7064d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b80023d4f1c27f0000488b5d08ff234d8b6e084d8b66104c8b34244d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7064f00000041564c3b2de32700007502eb5d4d8b65004d89e64983fc017502eb554983fe03754f4d8b75084c3b35b7270000750949c7c603000000eb2c4d8b264983fc01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375074c8b742408eb684d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049bef01dd4f1c27f00004c8930488b5c2408ff15062700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c240004d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89011d1f1c27f0000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd05757941ff76084c89d3ff15752600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080500000049c7066b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b8c0dbd3f1c27f0000488b5d08ff2341ff76084d8b6e10498b46184d8b66204c8b4424084d8b58f84d89de49c1e30849c1eb074983cb014d3be37215488d64241848b89011d1f1c27f0000488b5d08ff234d89c04f8b64a0fc4d8b1c244983fb050f85ea01000041ff7424084d89c049c1e60849c1ee074983ce014d3bee7215488d64242048b89011d1f1c27f0000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd050f859201000041ff76084c89d3ff15442500004989c44c8b6c24104d89ee4983fd0375214d8b34244983fe077502eb3f488d64242848b89823d4f1c27f0000488b5d08ff234d89f64983fe1375214d8b34244983fe077502eb15488d64242848b82824d4f1c27f0000488b5d08ff234c8b6c24084d89ee4c3b2c24750a488d642408e9a30000004d89f64d89f54c3b34240f848e0000004d8d5fe84c3b5d107306ff5550ca00304d89df49c743f8020000004c8b34244d897308488d64240849c703070000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d89ed4d896e1049c746080b00000049c7066b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24184d895d084d897500eb0a488d6424084c8b6c24184d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b24244d896610488d6424084c8b24244d896608488d64240849c7066b000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c24000488d64242048b8c0dbd3f1c27f0000488b5d08ff23488d64241848b8c0dbd3f1c27f0000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89011d1f1c27f0000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd050f859500000041ff7608488b5c2458ff15332300004989c64d8b2e4983fd0775654d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7066d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c24000488d64241848b8b824d4f1c27f0000488b5d08ff23488d64241048b8c0dbd3f1c27f0000488b5d08ff234d8b76084d8b6e104d8b56184d8b66204d8b0c244d89cb4983f9090f85b00300004d8b6424084d8b5e084c8b04244d8b70f84d89f149c1e60849c1ee074983ce014d3bd67215488d64241048b89011d1f1c27f0000488b5d08ff234d89c04d89c643ff7490fc4d89f64d89ca49c1e10849c1e9074983c9014d3be17215488d64241848b89011d1f1c27f0000488b5d08ff234d89f64f8b64a6fc4d89f649c1e20849c1ea074983ca014d3bea7215488d64241848b89011d1f1c27f0000488b5d08ff234d89f643ff74aefc4c8b7424084d8b2e4983fd030f85df0200004d89f64d8b6e084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c7065300000041564c3b25792100007502eb5e4d8b2c244d89ee4983fd017502eb564983fe0375504d8b7424084c3b354c210000750949c7c603000000eb2c4d8b2e4983fd03751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037507488b5c2420eb684d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d89660849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b00000049be081ed4f1c27f00004c8930488b5c2420ff159b2000004889c34c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cb0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb584d89f64983fd05754f4c8b6c24104d8b65004983fc05753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb054989deeb64eb004d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca08404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930ff15f11e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c24000488d64242048b890dad3f1c27f0000488b5d08ff234983fb050f85e0020000498b44240841ff76084c8b5c24084d8b73f84d89f449c1e60849c1ee074983ce014d3bd67215488d64241848b89011d1f1c27f0000488b5d08ff234d89db4d89de43ff7493fc4d89f649c1e40849c1ec074983cc014d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f643ff74aefc4c8b7424084d8b2e4983fd030f85420200004d89f641ff7608a80174054989c5eb14ff15f61d00004989c64d8b364e8d2c75010000004981e5ff0100004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184c8b24244d896610488d6424084d896e0849c7065100000041564c8b6c24084d89ee4c3b6c24107505e9250100004d89f64d8b2e4d89ec4983fd0175524c8b6c24104d8b65004983fc01753e4d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c9000000e9cd0000004d89f64d89e54983fc0375674c8b6c24104d8b65004983fc0375564d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb324d8b264d8b5d004d3be3751f4d8b76084d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037502eb53eb5a4d89f64983fd0575514c8b6c24104d8b65004983fc0575404d89f64d8b76084d89ed4d8b6d084d3bf5750949c7c603000000eb154d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb074c8b742428eb67eb004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424104c8930488b5c2428ff15f71b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c428c24000488d64242848b890dad3f1c27f0000488b5d08ff23488d64241048b83825d4f1c27f0000488b5d08ff234d8b760841ff3641ff760841ff761041ff7618498b46204c8b304d89f54983fe0b752d4c8b700841f6c601740949c7c603000000eb0749c7c6010000004983f6024983fe03750949c7c609000000eb364d89ee4983fd07752d4c8b681041f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd03750949c7c609000000eb004983fe090f85330300004c8b7424104983fe050f8524030000488b5c24484c8b442420ff15e11a00004989c24c8b7424204d8b4ef84d89cc49c1e10849c1e9074983c9014c8b5c24184d89dd4d3bd97215488d64243048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b6caefc4d8b5d004983fb030f85a9020000498b45084c8b6c24084d8b4d004d89cb4983f9070f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70007000000e9d8010000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4d89d94983fb050f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70005000000e943010000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4d89cb4983f9030f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70003000000e9ae000000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4983fb010f85820000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752c4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70001000000eb1f488d64243048b890dad3f1c27f0000488b5d08ff2349b858a4d3f1c27f000048c7c3050000004c8b0c24ff15101800004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24204c8968084c89304883c428c24000488d64243048b890dad3f1c27f0000488b5d08ff23488b5c24484c8b442420ff15ad1700004989c24c8b7424204d8b4ef84d89cc49c1e10849c1e9074983c9014c8b5c24184d89dd4d3bd97215488d64243048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b6caefc4d8b5d004983fb030f85a7020000498b45084c8b6c24084d8b4d004d89cb4983f9070f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70007000000e9d8010000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4d89d94983fb050f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70005000000e943010000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4d89cb4983f9030f85850000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752f4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70003000000e9ae000000488d64243048b890dad3f1c27f0000488b5d08ff234d89ed4983fb010f85820000004d89ed4d8b6d084d89f649c1e40849c1ec074983cc014d3bec7215488d64243048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b2e4983fd03752c4d8b76084d8d47e84c3b45107306ff5550ca01444d89c749c740f8020000004d89700849c70001000000eb1f488d64243048b890dad3f1c27f0000488b5d08ff2349b858a4d3f1c27f0000488b5c24104c8b0c24ff15de1400004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24204c8968084c89304883c428c24000488d64243048b890dad3f1c27f0000488b5d08ff23498b461041ff7620488b5c24304c8b442408ff15731400004989c24159488d6424084983e9014d6bc9087115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff151d1400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c240004d8b66084d8b6e104c8b7424404d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424404f8b74a6fc4983fe037409488d64240858c240004c8b34244d8b56f84d89d349c1e20849c1ea074983ca014d3be27215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b64a6fc4d8b14244983fa030f85f00000004d8b6424084d89f649c1e30849c1eb074983cb014d3beb7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d6424084d8b2e4983fd030f85930000004d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d89662049c74618030000004d896e1049c746080100000049c70637000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff23488d64241048b890dad3f1c27f0000488b5d08ff234d8b7608498b0641ff761041ff761841ff762041ff762841ff7608ff15271200004989c64156488b442420ff150f1200004c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64244048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64d89f043ff74aefc4c8b4c2460488b5c2418ff15b21100004989c641564c8b442468488b442410488b5c2440ff15901100004889c34d8d77e84c3b75107305ff5550cd084d89f749c746f8020000004c8b6c24384d896e0849c7063500000041564883fb017507488b442408eb0b488b442408ff15411100004c8b7424284983ee01488b5c24304903de7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b4424504c8b4c2410ff15011100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c24000498b4608488b5c24284c8b0424ff15b11000004989c6488d6424084d8b264d89e54983fc030f858a0000004d8b6e084d8b5e104d8b66184d8b334983fe0975604d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89661849c74610030000004d896e0849c70663000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8c025d4f1c27f0000488b5d08ff234983fd07757a4d8b76084d8b2e4983fd0375584d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70665000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b890dad3f1c27f0000488b5d08ff23488d64240848b8c025d4f1c27f0000488b5d08ff234d8b4e084d8b66104d8b5e184d8b6e2041f6c4010f852c0200004d8b24244c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b34244d8b5ef84d89dd49c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b64a6fc4d89f649c1e50849c1ed074983cd014d3bcd7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b748efc488d6424084d3be67505e9fc0000004d8b2c244d89eb4983fd0175474d8b2e4983fd0175394d8b6c24084d8b5e084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb05e9ad000000e9ae0000004d89dd4983fb03755c4d8b2e4983fd0375514d8b6c24084d8b5e084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037502eb45eb494983fd0575434d8b2e4983fd0575384d8b6c24084d8b5e084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb0458c24000eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c89305b4c8b34244c897424404883c440ff252c0d00004c8b7424404d8b76f849c1e60849c1ee074983ce014d3bce7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424404f8b748efc4983fe037409488d64240858c240004c8b24244d8b7424f84d89f249c1e60849c1ee074983ce014d3bce7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44f8b748cfc4d89e449c1e20849c1ea074983ca014d3bda7215488d64241048b89011d1f1c27f0000488b5d08ff234d89e44f8b649cfc488d6424084983fd03750949c7c001000000eb0749c7c0050000004d8b1e4d89dd4983fb030f85c60100004d8b4e084d89cb4d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d8942184d894a1049c742080300000049c7025100000041524d3be67505e9e70000004d8b14244d89d14983fa0175404983fd0175354d8b6c24084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb05e99f000000e9a30000004d89ca4983f90375554983fd03754d4d8b6c24084d3beb750949c7c503000000eb324d8b55004d8b0b4d3bd1751f4d8b6d084d8b5b084d3beb750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037502eb3eeb454983fa05753f4983fd0575374d8b6c24084d3beb750949c7c503000000eb154d3beb750949c7c503000000eb0749c7c5010000004983fd037402eb074c8b742408eb61eb004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2408ff15b50a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c24000488d64240848b890dad3f1c27f0000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89011d1f1c27f0000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd03757b41ff7608488b5c2458ff150d0a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080500000049c70609000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64241048b890dad3f1c27f0000488b5d08ff234d8b6e08498b46104c8b04244d8b70f849c1e60849c1ee074983ce014d3bee7215488d64241048b89011d1f1c27f0000488b5d08ff234d89c04f8b74a8fc4d8b2e4983fd010f854f0100004d8b76084983fe017502eb1b4983fe017415488d64241048b84026d4f1c27f0000488b5d08ff23488b5c2448ff15070900004989c6488d6424084d8b264d89e54983fc030f858a0000004d8b6e084d8b5e104d8b66184d8b334983fe0975604d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049c746080500000049c70619000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8d026d4f1c27f0000488b5d08ff234983fd0775604d8b6e084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080500000049c7061b000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b8d026d4f1c27f0000488b5d08ff23488d64241048b850dbd3f1c27f0000488b5d08ff2341ff76084d8b6610498b46184d8b6e204c8b4424084d8b58f84d89de49c1e30849c1eb074983cb014d3beb7215488d64241848b89011d1f1c27f0000488b5d08ff234d89c04f8b6ca8fc4d8b5d004983fb010f85690100004d8b6d084d89c049c1e60849c1ee074983ce014d3be67215488d64241848b89011d1f1c27f0000488b5d08ff234d89c04f8b74a0fc4d8b264983fc010f85120100004d8b76084983fd017502eb1b4983fd017415488d64241848b86027d4f1c27f0000488b5d08ff234983fe017502eb1b4983fe017415488d64241848b8f027d4f1c27f0000488b5d08ff23488b5c2450ff15de0600004989c64d8b2e4983fd030f85980000004d8b6e104d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd03756d4d8b6e084d8b66184d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b2c244d896e08488d64240849c70619000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24084c8968084c89304883c410c24000488d642418eb05488d64241848b84828d4f1c27f0000488b5d08ff23488d64241848b850dbd3f1c27f0000488b5d08ff23488d64241848b850dbd3f1c27f0000488b5d08ff234d8b6e084c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b2c244c896b08488d64240849bdf815d4f1c27f00004c892b4c3b35740500007502eb544d8b2e4983fd0375514d8b6e084c3b2d54050000750949c7c503000000eb2d4d8b65004983fc01751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037402eb064889d8c24000498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdd81dd4f1c27f00004c89681048c740080b0000004c89304c8b34244c897424404883c440ff25bf0400004d8b66084d8b6e104d8b5e184c8b34244d8b4ef84d89ca49c1e10849c1e9074983c9014d3be17215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b64a6fc4d8b0c244983f9010f85fb0000004d8b6424084d89f649c1e20849c1ea074983ca014d3bda7215488d64241048b89011d1f1c27f0000488b5d08ff234d89f64f8b749efc488d6424084d8b1e4983fb010f859e0000004d8b76084983fc017502eb1b4983fc017415488d64240848b8d028d4f1c27f0000488b5d08ff234983fe017502eb1b4983fe017415488d64240848b86029d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c24000488d64240848b850dbd3f1c27f0000488b5d08ff23488d64241048b850dbd3f1c27f0000488b5d08ff2341ff7608498b4610488b5c24584c8b442408ff153c0300004989c54c8b7424084d8b56f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64241848b89011d1f1c27f0000488b5d08ff234d89e44d89f64f8b74a6fc488d6424104d8b264983fc010f85d40000004d8b76084983fe017502eb1b4983fe017415488d64240848b8b829d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd482ad4f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb81dd4f1c27f00004c8930c24000488d64240848b850dbd3f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b442420488b5c2448ff15a7010000ff159901000048c7c3010000004c8b442408ff157f0100004989c6ff7424204156f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15480100004989c4415d4c8924244c896c2408483b65187303ff5558ebc15b488b4424404c8b4424504c8b4c24284c8b542448ff150c0100004889c34c8b6c24184d89ee4c3b2df20000007507488d642460eb63488d6424184d89f64d8b2e4983fd0375584d89f64d8b76084c3b35c2000000750949c7c603000000eb2c4d8b2e4983fd01751c4d8b76084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037402eb0b488d6424484889d8c24000498d47e0483b45107305ff5550cd084989c748c740f80300000049bed81dd4f1c27f00004c89701048c740080b0000004c8b34244c8930488d6424084c8b7424404c89b424800000004881c480000000ff251a000000f400|@15695,1,@2177,@7009,@10542,@15619,@7010,@7011,@7012,@7030,@7031,@7032,@7009,@10542,@15619,@7032,@7032,@7032,@7009,@7009,@7032,@7033,@7035,@7036,@7037,@7038,@7039,@7018,@7032,@7018,@7032,@7018,@7032,@7009,@6864,@7009,@7009,@11193,@15620,@7032,@7032,@7032,@7009,@10542,@15619,@7040,@7041,@10542,@7032,@7009,@7032,@7009,@7009,@7032,@7009,@7009,@7032,@7009,@7042,@7012,@7043,@7044,@7045,@7046,@7009,@10542,@15619,@7009,@15120,@15621,@7009,@11193,@15620,@7047,@7048,@7050,@7051,@7012,@7052,@7009,@10542,@15619,@10535,@10542,@7032,@7009,@7009,@15548,@15623,@7009,@15120,@15621,@7009,@11193,@15620,@7053,@7018,@7057,@7009,@15548,@15623,@7009,@15120,@15621,@7009,@11193,@15620,@7009,@10542,@15619,@7012,@7058,@7059,@7009,@7032,@7009,@7032,@7060,@7061,@7053,@7008|465,0,@9998 654,0,@9998 736,0,@9998 857,0,@15611 908,0,@14742 1360,0,@15090 1381,0,@15090 1471,0,@9998 1523,0,@9998 2128,0,@15090 2207,0,@9998 2276,0,@9998 2343,0,@9998 2833,0,@15090 2854,0,@15090 2875,0,@15090 2933,0,@9998 2985,0,@9998 3542,0,@15090 3599,0,@9998 3666,0,@9998 3801,0,@15090 3822,0,@15090 3932,0,@9998 3981,0,@9998 4059,0,@15614 4161,0,@15615 4206,0,@15617 4418,0,@15618 4467,0,@15090 4596,0,@9998 4651,0,@9998 4703,0,@9998 4915,0,@15620 5158,0,@15621 5399,0,@15623 5526,0,@9995 5650,0,@9998 5752,0,@9998 5842,0,@9998 5943,0,@9998 6032,0,@14742 6222,0,@15624 6247,0,@15090 6309,0,@9998 6364,0,@9998 6416,0,@9998 6628,0,@15620 6871,0,@15621 7112,0,@15623 7169,0,@15625 7213,0,@15627 7272,0,@9995 7347,0,@9998 7396,0,@9998 7847,0,@9998 7902,0,@9998 7954,0,@9998 8203,0,@15628 8233,0,@15568 8245,0,@15631 8284,0,@15619 8333,0,@10534 8682,0,@15619 8851,0,@15633 8956,0,@9998 9080,0,@9998 9129,0,@9998 9436,0,@15636 9584,0,@15639 9663,0,@9475 10192,0,@15641 10213,0,@15090 10234,0,@15090 10292,0,@15624 10354,0,@9998 10409,0,@9998 10461,0,@9998 10673,0,@15620 10916,0,@15621 11157,0,@15619 11214,0,@15644 11296,0,@9998 11464,0,@9475 11660,0,@15124 11888,0,@9995 11963,0,@9998 12096,0,@9998 12666,0,@9998 13254,0,@9998 13339,0,@9998 13463,0,@9998 13556,0,@15090 13620,0,@9998 13713,0,@15090 13777,0,@9998 13870,0,@15090 13931,0,@9998 14021,0,@15090 14042,0,@14742 14153,0,@15090 14174,0,@15090 14229,0,@14742 14243,0,@15121 14295,0,@9998 14420,0,@9998 14551,0,@15090 14629,0,@9998 14700,0,@9998 14767,0,@9998 15253,0,@15090 15274,0,@15090 15295,0,@15090 15344,0,@9998 15396,0,@9998 15944,0,@15090 15994,0,@9998 16071,0,@15614 16173,0,@15617 16263,0,@15090 16313,0,@9998 16407,0,@9995 16466,0,@9475 16521,0,@10034 16708,0,@15645 16823,0,@15646 16844,0,@15647 16865,0,@15090 17026,0,@9998 17138,0,@15650 17191,0,@15653 17212,0,@15090 17248,0,@10101 17437,0,@15654 17491,0,@9998 17748,0,@15619 17863,0,@9998 18022,0,@15097 18088,0,@9998 18156,0,@9998 18240,0,@15657 18282,0,@15660 18600,0,@15097 18621,0,@15097 18675,0,@9998 18845,0,@15663 18866,0,@15097 18957,0,@9998 19012,0,@9998 19061,0,@9998 19343,0,@15620 19843,0,@15090 19912,0,@9998 19964,0,@9998 20589,0,@15090 20610,0,@15666 20846,0,@9998 20945,0,@9998 21030,0,@15090 21094,0,@9998 21179,0,@15090 21243,0,@9998 21328,0,@15090 21389,0,@9998 21471,0,@15090 21487,0,@14742 21573,0,@15090 21650,0,@9998 21749,0,@9998 21834,0,@15090 21898,0,@9998 21983,0,@15090 22047,0,@9998 22132,0,@15090 22193,0,@9998 22275,0,@15090 22291,0,@14742 22375,0,@15090 22440,0,@9475 22460,0,@15123 22477,0,@14742 22581,0,@9995 22655,0,@9998 22723,0,@9998 22917,0,@15090 22938,0,@15090 23042,0,@9998 23209,0,@9475 23459,0,@15669 23587,0,@15090 23608,0,@15669 23685,0,@9995 23759,0,@9998 23808,0,@9998 24237,0,@9995 24312,0,@9998 24361,0,@9998 24887,0,@15090 24941,0,@9998 25102,0,@15090 25156,0,@9998 25216,0,@15672 25389,0,@15675 25512,0,@15675 25533,0,@15094 25599,0,@9998 25666,0,@9998 25726,0,@15678 25761,0,@15681 25961,0,@15683 25982,0,@15094 26003,0,@15094 26053,0,@9998 26122,0,@15566 26263,0,@15618 26352,0,@9998 26420,0,@9998 26485,0,@15686 26520,0,@15689 26625,0,@15094 26646,0,@15094 26727,0,@9998 26795,0,@15691 26924,0,@15694 26968,0,@15617 26989,0,@15094 27029,0,@9475 27364,0,@15618 7008:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b890dad3f1c27f0000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12733,1,@2231|50,0,@9995 98,0,@9998 164,0,@15090 7009:D3,2624|483b65187305ff5558cd094c8b304d8b264d89e54983fc050f85fa0200004d8b6e084c8b70084983fe090f85670100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9c00000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9850000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3e4d8b76084d8b264983fc050f85820000004d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080d00000049c7066b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b02ad4f1c27f0000488b5d08ff234983fe070f85670100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9c00000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9850000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3e4d8b76084d8b264983fc050f85820000004d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080b00000049c7066b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b02ad4f1c27f0000488b5d08ff2348b8302bd4f1c27f0000488b5d08ff234983fd010f85700300004d8b76084c8b68084d89ec4983fd070f851b0100004c8b58104d89dd4d8b1b4983fb03750949c7c303000000eb0749c7c3010000004983fb030f85f10000004d89ec4d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c7450023000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34d89e54983fc070f85000100004c8b58104d89dc4d8b134983fa07751f4d8b5b084d8b1b4983fb01750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f85c00000004d89e54d8b6d084d8b65084d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510010000004d89650849c7450021000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34983fd090f85190100004c8b68104d89ec4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd030f85ee0000004d8b6c24084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d892c244d8d6fe04c3b6d107306ff5550ca08504d89ef49c745f80300000049c74510030000004d89650849c7450023000000498d47e8483b45107306ff5550ca08604989c748c740f802000000488958084c89284983fe017502eb5b4983fe0174554d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004d89751049c745080300000049c74500290000004d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c348b8302bd4f1c27f0000488b5d08ff234d8b6e084c8b70084983fe030f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080300000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8302bd4f1c27f0000488b5d08ff234983fe010f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080100000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8302bd4f1c27f0000488b5d08ff234983fe050f85b00000004c8b60104d8b34244983fe030f858e0000004d8b7424084d8b5c24104d8b5424184d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca08304d89f749c746f8040000004d8966184d896e1049c746080500000049c7063b000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8302bd4f1c27f0000488b5d08ff234983fe0b0f855b0100004c8b70104d8b264d89e34983fc0175324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042401000000e9bc0000004d89dc4983fb0575324d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c7042405000000e9810000004983fc0375414d8b5e084d8b56104d8b76184d8d67d84c3b65107306ff5550ca086c4d89e749c74424f8040000004d897424184d895424104d895c240849c7042403000000eb3a4d8b76084d8b264983fc03757a4d8b76084d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004d8974240849c70424070000004d8d77e04c3b75107306ff5550ca08304d89f749c746f8030000004d8966104d896e0849c7063f000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b8b82bd4f1c27f0000488b5d08ff2348b8302bd4f1c27f0000488b5d08ff23f40000|@15704,1,@2178|393,0,@15696 762,0,@15696 778,0,@15699 1668,0,@15699 1862,0,@15699 2048,0,@15699 2234,0,@15699 2591,0,@15702 2607,0,@15699 7010:D4,680|483b65187306ff5558ca0907a8010f85a10000004c8b30488b40084d8b68f849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b2e4983fd0375574d8b6e084c3b2d670200007502eb384d8b75004983fe01751c4d8b75084983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0374054d89ceeb6948b8582cd4f1c27f0000488b5d08ff2348b890dad3f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca08044d89f749c746f8020000004d89560849c7060d000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c341f6c6010f85b30000004d8b1e4d8b66084d8b5b08498d7fe8483b7d107306ff5550ca097f4989ff48c747f8020000004c896f0848c707030000004c3bdf7502eb5e498b334889f74883fe017502eb594883ff0375534d8b5b084d3bdd750949c7c303000000eb32498b3b498b7500483bfe751f4d8b5b08498b7d084c3bdf750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb03750949c7c603000000eb1b4d89e6483b65187306ff5558ca0967e943ffffff49c7c6010000004983fe03751048b8e02cd4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09274d89f749c746f8020000004d896e0849c7064500000041564d8d77e84c3b75107306ff5550ca09274d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca09474d89ef49c745f8020000004d89750849c74500470000004d8d77e84c3b75107306ff5550ca09274d89f749c746f80200000049895e084d892e4c89f3e889fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@15711,1,@2179,@10542|50,0,@9998 151,0,@15705 167,0,@15090 458,0,@15708 7011:D7,768|483b65187306ff5558ca09014c8b304d8b2e4c8d25080000004f8d64acfc41ffe4e92b000000909090e982000000909090e99f010000909090e9f6010000909090e9f2010000909090e9ee0100009090904d8b66084c8b70084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c7450001000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff25800200004d8b6e104c8b70084d89c44983ec014d03e5711048b8d0c6d0f1c27f0000488b5d08ff234983fc01753a498d47e0483b45107306ff5550ca08404989c748c740f80300000049bdc02dd4f1c27f00004c89681048c740080b0000004c8930ff25140200004d8b264983fc030f85a40000004d8b66084983e8014d03e8711048b8d0c6d0f1c27f0000488b5d08ff234983ed014d6bed08711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004d8966204d896e1849bd58a4d3f1c27f00004d896e1049bde0ded3f1c27f00004d896e0849c70637000000498d47e8483b45107306ff5550ca08404989c748c740f802000000488958084c8930c348b890dad3f1c27f0000488b5d08ff234d8b66084c8b70084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c7450005000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff25ec0000004889d8c34889d8c34d8b6e084d8b662041f6c50175044889d8c34c8b70084983e8014d03e0711048b8d0c6d0f1c27f0000488b5d08ff234983ec014d6be408711048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca08504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca08604989c748c740f8030000004c89681048c740080b0000004c8930ff251c000000f4000000|@15714,1,@2180,@7009,@7009,@7009,@7009|198,0,@9475 247,0,@15712 304,0,@9475 330,0,@9475 385,0,@14742 399,0,@15122 455,0,@15090 605,0,@9475 631,0,@9475 682,0,@14742 696,0,@15123 7012:D4,144|483b65187306ff5558ca09014987d84989c641f6c601752f4d8b264d8b6e084d8b24244d8b24244983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebcb49c7c6010000004983fe0375344983f801750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe03751048b8482ed4f1c27f0000488b5d08ff23ff251a000000f400|@15724,1,@2183,@7013|122,0,@15715 7013:D5,80|483b65187306ff5558ca09015341504883f8017507488d64240858c348bbc02ed4f1c27f0000ff1544000000488b5c24084158488d64240849b9802fd4f1c27f0000ff2520000000f400000000000000|@15725,1,@2184,@7017,@7016|30,0,@15718 58,0,@15723 7014:D3,856|483b65187305ff5558cd014c8b70084d8b2e4983fd010f850a0300004d8b76084d8b264d89e54983fc030f85230200004d8b6e084d8b76104d8b1e4d89dc4983fb0775274d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926e98b0000004d89e34983fc0575244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb5e4d89dc4983fb0375244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb314983fc0175244d8b66084d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d8926eb0749c7c60100000041f6c6010f85e20000004d8b264d8b75084983fe03751c4d8b6d004983c510711048b8d0c6d0f1c27f0000488b5d08ff23eb044d8b6d0049c7c6ffffffff4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8b6c24084983fd03751c4d8b2c244983c510711048b8d0c6d0f1c27f0000488b5d08ff23eb044d8b2c2449c7c4ffffffff4d2be5711048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34d8b75084983fe03751c4d8b6d004983c510711048b8d0c6d0f1c27f0000488b5d08ff23eb044d8b6d0049c7c6ffffffff4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fd070f85c10000004d8b76084d8b264d89e54983fc05751c4d8b6e084983c52e711048b8d0c6d0f1c27f0000488b5d08ff23eb4e4983fd01751c4d8b6e084983c520711048b8d0c6d0f1c27f0000488b5d08ff23eb2c4d8b76084d8b6e084983fd03751b4d8b2e4983c510711048b8d0c6d0f1c27f0000488b5d08ff23eb034d8b2e49c7c6ffffffff4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c34d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f4000000000000|@15721,1,@2181|281,0,@9475 315,0,@9475 356,0,@9475 390,0,@9475 504,0,@9475 538,0,@9475 633,0,@9475 667,0,@9475 708,0,@9475 741,0,@9475 7015:D3,184|483b65187305ff5558cd014c8b304d8b2e4983fd037505498b4608c34d8b76084d8b264d89e54983fc05751c4d8b76084983c62e711048b8d0c6d0f1c27f0000488b5d08ff23eb4e4983fd01751c4d8b76084983c620711048b8d0c6d0f1c27f0000488b5d08ff23eb2c4d8b76084d8b6e084983fd03751b4d8b364983c610711048b8d0c6d0f1c27f0000488b5d08ff23eb034d8b3648c7c0ffffffff492bc6711048b8d0c6d0f1c27f0000488b5d08ff234883c001c3f4|@15722,1,@2182|56,0,@9475 90,0,@9475 131,0,@9475 164,0,@9475 7016:D5,768|483b65187305ff5558cd0950f604240175434c8b3424498b06ff33ff7308488b1424ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084d892e6a016a01ff7424204156eb0d488d64240848c7c001000000c3f6442408010f85a90000004c8b742408498b064d89f641ff76084c8b6c24084d89ee41ff75004d89f641ff7608488b542438ff124989c54c3b6c24087d054d89eeeb054c8b7424084983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c3b2c247e07488d642410eb06415d4883c4084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e94cffffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410ff7424084c8b6c24184c2b2c247115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c5014983fd017d07488d642438eb5c4c3b2d890100007d4e4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab4156ff742438ff3563010000eb15488d64243848b8d015d1f1c27f0000488b5d08ff23f6442408010f85090100004c8b6c24084d89ee41ff75004d89f641ff7608488b542448488b442408ff124989c54c2b6c24287115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64246048b81011d1f1c27f0000488b5d08ff234d89f64f8b6caefc4983fd0175676a016a016a01ff7424404156ffb42480000000488b442438488b5c24404c8d4424184c8b4c24784c8b942480000000ff1585000000415e415d415b4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c24084d893424eb054c8b642410415d4c896424084c896c2410483b65187303ff55584883c408e9ecfeffff4c8b3424498b4610488d642450c3f400ffffffffffffff01|@15752,1,@2196,@7028,@10368|183,0,@9475 329,0,@9475 454,0,@10027 527,0,@9475 578,0,@9995 7017:D33,10336|483b65187306ff5558ca09035341504151a8010f85b20600004c8b08ff70084983f9017515488d64242048b83830d4f1c27f0000488b5d08ff234d8b014d8b61084d8b304d8b2e4983fd030f854a0300004d8b760841ff70084c8b2c244d8b55004d89d34983fa030f85df0100004d89ed4d8b6d0841f6c401750d488d6424084d89cee9a41c00004d3bf5751c488d64240858488b5c24104c8b4424084159488d642410e957ffffff4c8b6424184d89e54983fc017515488d64242848b80895d1f1c27f0000488b5d08ff234d89ed41ff75004d8d57e84c3b55107306ff5550ca00404d89d749c742f8020000004c8b2c244d896a0849c702070000004d89f14983e9014d6bc9087115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff151c2800004989c641564c8b7424104d8b2e4983fd03756e4d89f64d8b6e084983ed014d6bed087115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd58a4d3f1c27f00004d896e1049bdf0ded3f1c27f00004d896e0849c70603000000eb074d89f64d8b7608498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080b0000004c8b7424084c8930488b5c2430ff15522700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642410488b4424084c8b4424184883c41041594883c410e9b3fdffff4d89ed498b7d084989fa488b3f4883ff037528488d64240841f6c40175084d89cee98c0f0000488d64242048b8c030d4f1c27f0000488b5d08ff2341f6c401750d488d6424084d89cee9370400004d89dc4983fc03756f4d89d5488d6424084983ed014d6bed087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d57d84c3b55107306ff5550ca00604d89d749c742f8040000004d896a1849bd58a4d3f1c27f00004d896a1049bdf0ded3f1c27f00004d896a0849c70203000000eb05488d6424084d89f14983e9014d6bc9087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15f12500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24184c896b084c8933584c8b4424084159488d642410e965fcffff4d8b76084d8b68084d89ea4d89d3498b3a4883ff010f85270200004d8b52084d8b124983fa0775184983fc01750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa030f85f10100004d89dc4d8b6424084d8b6424084d3be67505e9fd0000004d8b1c244d89da4983fb0175474d8b1e4983fb0175394d8b6424084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037402eb05e9ae000000e9c20000004d89d34983fa03755d4d8b1e4983fb0375524d8b6424084d8b5e084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037502eb45eb5c4983fb0575564d8b1e4983fb05754b4d8b6424084d8b5e084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c4010000004983fc037402eb1758488b5c24104c8b4424084159488d642410e9e9faffffeb004d8b65004983fc03756c4d8b65084983ec014d6be4087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb044d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2418ff15802300004889c3584c8b4424084159488d642410e923faffff4983fc010f85c40000004d8b65004983fc03756c4d8b65084983ec014d6be4087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb044d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004c8930488b5c2418ff15aa2200004889c3584c8b4424084159488d642410e955f9ffff488b4424185b4c8b542408415d488d642410ff34244c896c2408ff256d220000488d64241058c341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15d62000004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15521f00004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58a4d3f1c27f00004d896c241049bdf0ded3f1c27f00004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15e41d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15b01c00004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15721b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b82bd4f1c27f0000488b5d08ff23488da4248000000048b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff150b1a00004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15b61800004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b82bd4f1c27f0000488b5d08ff23488d64247848b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff154b170000488b5424505b488d64245041584883c408ff22488d64246048b8b82bd4f1c27f0000488b5d08ff23488d64246848b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff2341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15691500004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15e51300004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58a4d3f1c27f00004d896c241049bdf0ded3f1c27f00004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15771200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15431100004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15051000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b82bd4f1c27f0000488b5d08ff23488da4248000000048b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff159e0e00004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15490d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b82bd4f1c27f0000488b5d08ff23488d64247848b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff15de0b0000488b5424505b488d64245041584883c408ff22488d64246048b8b82bd4f1c27f0000488b5d08ff23488d64246848b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff2341f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0043eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca00134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0043ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca00024d89f749c746f8020000004c8b6c24204d896e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15fc0900004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85290500004d89f641ff76084c8b7424284d8b2e4983fd030f85810200004d89f641ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15780800004989c641564c8b6c24104983ed014d6bed087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424084d8b264983fc030f85870100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58a4d3f1c27f00004d896c241049bdf0ded3f1c27f00004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff150a0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e95d020000488da4248000000048b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f856602000041ff76084c8b6c24604d89ee4983fd017515488d64247048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15d60500004989c641564c8b7424104d8b2e4983fd030f859a0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85690100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b9c2480000000ff15980400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e995030000488da4248000000048b8b82bd4f1c27f0000488b5d08ff23488da4248000000048b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85780200004d89f64d8b4e084c8b6c24584d89ee4983fd017515488d64246848b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15310300004989c641564c8b7424104d8b2e4983fd030f85ae0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85800100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc0375724d89ed4d8b65084983ec014d6be4087118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2478ff15dc0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64247848b8b82bd4f1c27f0000488b5d08ff23488d64247848b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f85ff0000004d8b76084c8b2c244d8b65004983fc030f85d40000004d89ed4d8b6508488d6424084d8b2e4983fd030f85a60000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424584d8966084d892e4156488b442410488b5c24284c8b442408ff1571000000488b5424505b488d64245041584883c408ff22488d64246048b8b82bd4f1c27f0000488b5d08ff23488d64246848b890dad3f1c27f0000488b5d08ff23488d64246848b84831d4f1c27f0000488b5d08ff23f4000000000000|@15743,1,@2185,@7019,@7009,@7018,@7009,@7018,@7009,@7018,@7020,@7021,@7009,@7018,@7009,@7018,@7009,@7018,@7022,@7023,@7009,@7018,@7009,@7018,@7009,@7018,@7024,@7025,@7009,@7009,@7018,@7009,@7018|44,0,@15726 190,0,@10926 273,0,@9475 293,0,@15123 310,0,@14742 367,0,@9475 418,0,@14742 432,0,@15123 634,0,@15729 701,0,@9475 752,0,@14742 766,0,@15123 812,0,@9475 832,0,@15123 849,0,@14742 1336,0,@9475 1387,0,@14742 1401,0,@15123 1542,0,@9475 1593,0,@14742 1607,0,@15123 2386,0,@10926 2467,0,@9475 2487,0,@15123 2504,0,@14742 2548,0,@9475 2626,0,@14742 2641,0,@15123 2732,0,@9475 2783,0,@14742 2797,0,@15123 2985,0,@15090 3044,0,@10926 3125,0,@9475 3145,0,@15123 3162,0,@14742 3342,0,@9475 3393,0,@14742 3407,0,@15123 3595,0,@15702 3619,0,@15090 3640,0,@15732 3707,0,@10926 3786,0,@9475 3806,0,@15123 3823,0,@14742 4020,0,@9475 4071,0,@14742 4085,0,@15123 4276,0,@15702 4297,0,@15090 4551,0,@15702 4572,0,@15090 4593,0,@15732 5247,0,@10926 5328,0,@9475 5348,0,@15123 5365,0,@14742 5409,0,@9475 5487,0,@14742 5502,0,@15123 5593,0,@9475 5644,0,@14742 5658,0,@15123 5846,0,@15090 5905,0,@10926 5986,0,@9475 6006,0,@15123 6023,0,@14742 6203,0,@9475 6254,0,@14742 6268,0,@15123 6456,0,@15702 6480,0,@15090 6501,0,@15732 6568,0,@10926 6647,0,@9475 6667,0,@15123 6684,0,@14742 6881,0,@9475 6932,0,@14742 6946,0,@15123 7137,0,@15702 7158,0,@15090 7412,0,@15702 7433,0,@15090 7454,0,@15732 8108,0,@10926 8189,0,@9475 8209,0,@15123 8226,0,@14742 8270,0,@9475 8348,0,@14742 8363,0,@15123 8454,0,@9475 8505,0,@14742 8519,0,@15123 8707,0,@15090 8766,0,@10926 8847,0,@9475 8867,0,@15123 8884,0,@14742 9064,0,@9475 9115,0,@14742 9129,0,@15123 9317,0,@15702 9341,0,@15090 9362,0,@15732 9429,0,@10926 9508,0,@9475 9528,0,@15123 9545,0,@14742 9742,0,@9475 9793,0,@14742 9807,0,@15123 9998,0,@15702 10019,0,@15090 10273,0,@15702 10294,0,@15090 10315,0,@15732 7018:D3,1552|483b65187306ff5558ca09074c8d35080000004d8d749efc41ffe6e92b000000909090e9c4000000909090e95d010000909090e94e020000909090e965030000909090e97c0400009090904d8b324983fe070f85840000004d8b6a084d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080100000048c7005d000000c348b8c831d4f1c27f0000488b5d08ff234d8b324983fe070f85840000004d8b6a084d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080300000048c7005d000000c348b8c831d4f1c27f0000488b5d08ff234d8b2a4d89ee4983fd05755d4d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080500000048c7005f000000c34983fe07757a4d8b72084d8b2e4983fd03755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080500000048c7005d000000c348b8c831d4f1c27f0000488b5d08ff2348b8c831d4f1c27f0000488b5d08ff234d8b324983fe070f85020100004d8b72084d8b264d89e54983fc05755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c7006f000000c34983fd01757f4d8b76084983fe017502eb164983fe01741048b85032d4f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca01034d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c89701048c740080300000048c7002b000000c348b8c831d4f1c27f0000488b5d08ff2348b8c831d4f1c27f0000488b5d08ff234d8b324983fe070f85020100004d8b72084d8b264d89e54983fc05755d4d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018030000004c8968104c89700848c7006f000000c34983fd01757f4d8b76084983fe017502eb164983fe01741048b8e032d4f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca01034d89f749c746f8030000004d894e104d894608498906498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080300000048c7002b000000c348b8c831d4f1c27f0000488b5d08ff2348b8c831d4f1c27f0000488b5d08ff234d8b324d89f54983fe0175554d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7005b000000c34d89ee4983fd0575554d8b6a084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70057000000c34983fe0775724d8b72084d8b2e4983fd0375554d8b6e084d8d77e04c3b75107306ff5550ca01234d89f749c746f8030000004d894e104d894608498906498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70061000000c348b8c831d4f1c27f0000488b5d08ff2348b8c831d4f1c27f0000488b5d08ff23f400000000|@15747,1,@2195|222,0,@15735 383,0,@15735 616,0,@15735 632,0,@15735 794,0,@15738 903,0,@15735 919,0,@15735 1081,0,@15741 1190,0,@15735 1206,0,@15735 1517,0,@15735 1533,0,@15735 7019:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2186|137,0,@15744 615,0,@15744 7020:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2187| 7021:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2188|137,0,@15744 615,0,@15744 7022:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2189| 7023:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2190|137,0,@15744 615,0,@15744 7024:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2191| 7025:D11,2864|483b65187306ff5558ca09075041524d89ce41f6c60175784d8b264d8b6e084d8b14244d8b5c24084d8b124983fa01754e4d8b134983fa0175434d8b5b084d8b1b4983fb07750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca08134d89f749c746f8010000004d8926eb1aeb004d89ee483b65187306ff5558ca0843eb8249c7c6010000006a016a0141f6c60175184d8b364d8b2e4c892c244d8b76084c89742408e9800000004d89ce41f6c60175454d8b264d8b6e084d8b1c244d8b1b4983fb0175204d8d77f04c3b75107306ff5550ca08134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0843ebb549c7c6010000004983fe0175124d8b304c8934244d8b70084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424ff7424104d8d77e84c3b75107306ff5550ca08024d89f749c746f80200000049895e084d890e41566a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15eb0900004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff34244c8b7424204d8b264d89e54983fc03752f4d89f64d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000eb564d89f64d8b76084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060100000041564c8b7424284983fd030f85110500004d89f641ff76084c8b7424284d8b2e4983fd030f85750200004d89f641ff76084c8b6c24504d89ee4983fd017515488d64246048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15670800004989c641564c8b6c24104983ed014d6bed087115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b7424084d8b264983fc030f85810100004d89f64d8b5e084d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d896c241849bd58a4d3f1c27f00004d896c241049bdf0ded3f1c27f00004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2470ff15020700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e954020000488d64247048b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f855a02000041ff76084c8b6c24504d89ee4983fd017515488d64246048b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849c702070000004c8b4c24104983e9014d6bc9087115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15d10500004989c641564c8b7424104d8b2e4983fd030f85910100004d89f64d8b5e084c8b7424084d8b2e4983fd030f85630100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6424204983ec014d6be4087115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2470ff15990400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c410e98c030000488d64247048b8b82bd4f1c27f0000488b5d08ff23488d64247048b890dad3f1c27f0000488b5d08ff23488d64245848b84831d4f1c27f0000488b5d08ff234d89f641ff76084c8b7424284d8b2e4983fd030f85750200004d89f64d8b4e084c8b6c24484d89ee4983fd017515488d64245848b80895d1f1c27f0000488b5d08ff234d89f641ff364d8d57e84c3b55107306ff5550ca00024d89d749c742f8020000004c8b34244d89720849c702070000004983e9014d6bc9087115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c10148b8f0ded3f1c27f000048c7c30b00000049b858a4d3f1c27f0000ff15380300004989c641564c8b7424104d8b2e4983fd030f85ab0100004d89f64d8b5e084c8b7424084d8b2e4983fd030f857d0100004d89f64d8b6e084d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424070000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745006900000041554c8b6c24404d8b65004983fc03756f4d89ed4d8b65084983ec014d6be4087115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc58a4d3f1c27f00004d89651049bcf0ded3f1c27f00004d89650849c7450003000000eb074d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c89681048c740080b0000004d89f64c8930488b5c2468ff15e60100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104883c408e9e9000000488d64246848b8b82bd4f1c27f0000488b5d08ff23488d64246848b890dad3f1c27f0000488b5d08ff234d89f64d8b76084d8b2e4983fd070f850c0100004d8b76084c8b2c244d8b65004983fc030f85e10000004d89ed4d8b6508488d6424084d8b2e4983fd030f85b30000004d8b6e084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500690000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424484d8966084d892e4156488b442410488b5c24284c8b442408ff157b000000488b5424605b488d6424104c8b4424304c8b7424404c897424484883c448ff22488d64245048b8b82bd4f1c27f0000488b5d08ff23488d64245848b890dad3f1c27f0000488b5d08ff23488d64245848b84831d4f1c27f0000488b5d08ff23f4000000|@15746,1,@2192,@7027,@7009,@7018,@7009,@7018,@7009,@7018,@7026|653,0,@10926 734,0,@9475 754,0,@15123 771,0,@14742 812,0,@9475 890,0,@14742 905,0,@15123 993,0,@9475 1044,0,@14742 1058,0,@15123 1240,0,@15090 1299,0,@10926 1380,0,@9475 1400,0,@15123 1417,0,@14742 1594,0,@9475 1645,0,@14742 1659,0,@15123 1841,0,@15702 1862,0,@15090 1883,0,@15732 1950,0,@10926 2029,0,@9475 2049,0,@15123 2066,0,@14742 2260,0,@9475 2311,0,@14742 2325,0,@15123 2516,0,@15702 2537,0,@15090 2804,0,@15702 2825,0,@15090 2846,0,@15732 7026:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2194| 7027:D3,1136|483b65187306ff5558ca0901a8010f85530400004c8b28488b40084d8b75004d8b6d086a016a014d8b5d004d89dc4983fb03753e4d8b5d084c8b134983fa03751b4c8b53084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb030f859e010000e9900300004d8b5d084d8b0b4d89ca4983f9037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fa070f85590100004d8b5b084c8b134983fa010f853f0100004c8b4b084d89ca4d8b094983f907750949c7c103000000eb0749c7c1010000004983f9030f85150100004d8b52084d3bda750c49c7c303000000e9fe0000004d8b0b4c89cf4983f90175424d8b0a4983f901752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000e9b00000004989f94883ff03755b4d8b0a4983f90375494d8b5b084d8b52084d3bda750949c7c303000000eb314d8b0b498b3a4c3bcf751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb4c4983f905753f4d8b0a4983f905752d4d8b5b084d8b52084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb030f84f70100004983fc03753e4d8b65084d8b184983fb03751b4d8b58084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85a2010000e9a80100004d8b65084d8b14244d89d34983fa037515488d64241048b8a033d4f1c27f0000488b5d08ff234983fb070f85600100004d8b6424084d8b184983fb010f85450100004d8b50084d89d34d8b124983fa07750949c7c203000000eb0749c7c2010000004983fa030f851b0100004d8b5b084d3be3750c49c7c403000000e9040100004d8b14244d89d14983fa0175434d8b134983fa01752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000e9b40000004d89ca4983f903755e4d8b134983fa03754c4d8b6424084d8b5b084d3be3750949c7c403000000eb334d8b14244d8b0b4d3bd175204d8b6424084d8b5b084d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb4d4983fa0575404d8b134983fa05752e4d8b6424084d8b5b084d3be3750949c7c403000000eb154d3be3750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc03740b4c8934244c896c2408eb094c89342448895c2408eb094c8934244c89442408415d415c4d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e4156e8c8fbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2193|137,0,@15744 615,0,@15744 7028:D5,1024|488dbc2458ffffff483b7d187306ff5560ca090750415041514152ff33ff7308ff7310488b542420488b442430ff124989c64156488b542420488b442438ff124989c54d8d5fe84c3b5d107306ff5550ca00204d89df49c743f8020000004c8b7424104d8973084c8b7424384d89334c8b6424584c8b34244d2bf47115488d64244048b8d0c6d0f1c27f0000488b5d08ff234983c60141564d8d57e84c3b55107306ff5550ca00284d89d749c742f8020000004c8b6424204d89e64d8962084d89f64d89f44d89324d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d89164c8b5424584d8b42f849c1e00849c1e8074983c8014c8b14244d89d14d3bd07215488d64244848b80017d1f1c27f0000488b5d08ff234c8b5424584d89c94f89748afc4d89e44983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004c8b5424104d8956104d895e084d89266a016a016a0141554156f64424080175634c8b742408498b064d89f641ff76084c8b8c24800000004c8b9424900000004c8bb424880000004156ff742440ff356a020000ff742470488b5c24284c8b842480000000ff154b0200004989c4415d4c8924244c896c2408483b65187303ff5558eb964c8b34244d8b2e4c896c24104d89f64d8b6e084c896c24184d89f64d8b7610488d6424084c89742418ff7424084c8b742418ff7424204c8bac24880000004d8b5df849c1e30849c1eb074983cb014c8b6c24304d89ec4d3beb7215488d64247848b81011d1f1c27f0000488b5d08ff234c8bac24880000004d89e44f8b6ca5fc4983fd017515488d64247848b80895d1f1c27f0000488b5d08ff234d8b6d004d8b6d084c3b6c2450750a6a016a0141566a01eb2d4c8b6c24684c8b6424084d8965004d8975084c8b34244d897510488d64241048c7c0010000004883c468c21800f6442408010f85110100004c8b6c24084d89ee41ff75004d89f641ff7608488b942490000000488b442408ff124989c64c3b7424680f85970000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e084c8b6c24084d892e4c8b2c244c896c2420488d6424184c897424104883c408415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e4c8b6c24604c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c468c218004d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424104d897424084c8b7424084d893424415d488d6424084c8924244c896c2408483b65187303ff5558e9e4feffff488da4249800000048b8b034d4f1c27f0000488b5d08ff23f400000000|@15754,1,@2197,@7029,@15753|132,0,@9475 270,0,@10034 313,0,@9475 584,0,@9995 627,0,@10926 1005,0,@15748 7029:D3,1376|483b65187306ff5558ca090750534150415141524c8b74241841ff7608ff742410f604240175414c8b3424498b064d89f641ff7608488b542428ff124989c54c8b7424384d3bf5750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe03757f4c8b7424284c2b7424087115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c60141564c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81011d1f1c27f0000488b5d08ff234c8b7424584d89ed4f8b74aefc41f6c6017509ff742408e980020000ff742418eb0d488d642420584883c408c22000f6042401756d4c8b2c244d89ee41ff75004d89f641ff7608488b542438488b442408ff124989c64c3b742448752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb22415d4c896c2408483b65187303ff55584883c408eb8d488d64240849c7c6010000004983fe017515488d64243848b80895d1f1c27f0000488b5d08ff23498b066a016a016a01488b5424604c8b5424584c8b742470ff7424284156ff742440488b5c24584c8d4424184c8b4c2450ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c89304c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81011d1f1c27f0000488b5d08ff234c8b7424584d89ed4f8b74aefc488d6424084983fe017515488d64243048b80895d1f1c27f0000488b5d08ff23488d6424084d8b364d8b5e084c8b6424404c2b2424488d6424087115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488d6424204983c4014c8b7424204d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424204f8b74a6fc4983fe01751048b80895d1f1c27f0000488b5d08ff234d8b2e4d8b75004d8b6d084d3beb7d054d89ebeb004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d8975004d8d77f04c3b75107306ff5550ca01304d89f749c746f8010000004d892e4c8b6c24204d8b6df849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234c8b6c24204f8974a5fcc22000f604240175414c8b3424498b064d89f641ff7608488b542430ff124989c54c8b7424404d3bf5750e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe030f85810100004c8b7424584d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243848b81011d1f1c27f0000488b5d08ff234c8b7424584d89ed4f8b74aefc488d6424084983fe017515488d64243048b80895d1f1c27f0000488b5d08ff23488d6424084d8b364d8b1e4c8b6424404c2b2424488d6424087115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488d6424104983c4014c8b7424304d8b76f849c1e60849c1ee074983ce014d3be67215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424304f8b74a6fc4983fe017515488d64241048b80895d1f1c27f0000488b5d08ff234d8b2e4d8b75004d8b6d084d3beb7d054d89ebeb004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892e4c8b6c24304d8b6df849c1e50849c1ed074983cd014d3be57215488d64241048b80017d1f1c27f0000488b5d08ff234c8b6c24304f8974a5fceb05488d642428584883c408c22000f400|@15755,1,@2198|141,0,@9475 201,0,@9995 402,0,@10926 551,0,@9995 596,0,@10926 645,0,@9475 696,0,@9995 728,0,@10926 856,0,@10034 1016,0,@9995 1061,0,@10926 1109,0,@9475 1165,0,@9995 1202,0,@10926 1335,0,@10034 7030:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2199| 7031:D3,408|483b65187305ff5558cd09a8010f857c0100004c8b30488b40084d8b2e4d8b76084d8b65004d89e34983fc07751048b87036d4f1c27f0000488b5d08ff234d89dc4983fb0b0f85840000004d8b6d0841f6c50175714d8b6d004c8b63f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234e8b64abfc4d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c601000000eb7e4983fc0975714d8b6d084c8b63f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234e8b64abfc4d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e9a8feffff41ff36e8a0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@12733,1,@2200|48,0,@15756 112,0,@9998 240,0,@9998 7032:D3,1080|483b65187306ff5558ca09014889da4c8b304d89f54983fe03751048b8f836d4f1c27f0000488b5d08ff234d89ee4983fd0b0f859f0000004c8b68084c8b702041f6c5017530498b4500ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34983ee014d6bf608711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47d8483b45107306ff5550ca00404989c748c740f8040000004c89701849be58a4d3f1c27f00004c89701049bef0ded3f1c27f00004c89700848c70003000000c34d89f54983fe070f85be0200004c8b70084c8b58104c8b68184c8b602041f6c301752f498b03ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d8b50f84d89d349c1e20849c1ea074983ca014d3bf2721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b164983fa030f852f0200004d8b76084d8b4d004d89ca4983f90775744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89011d1f1c27f0000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450007000000e98b01000048b890dad3f1c27f0000488b5d08ff234d89d14983fa0575744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89011d1f1c27f0000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450005000000e90e01000048b890dad3f1c27f0000488b5d08ff234d89ca4983f90375744d8b6d0849c1e30849c1eb074983cb014d3beb721048b89011d1f1c27f0000488b5d08ff234f8b6ca8fc4d8b5d004983fb0375304d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450003000000e99100000048b890dad3f1c27f0000488b5d08ff234983fa0175714d8b6d0849c1e30849c1eb074983cb014d3beb721048b89011d1f1c27f0000488b5d08ff234f8b6ca8fc4d8b5d004983fb03752d4d8b5d084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450001000000eb1a48b890dad3f1c27f0000488b5d08ff2349bd58a4d3f1c27f0000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c70003000000c348b890dad3f1c27f0000488b5d08ff234d89ee4983fd05752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe01752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3488b4008ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@15762,1,@2201|29,0,@15759 130,0,@9475 181,0,@14742 195,0,@15123 323,0,@9998 395,0,@9998 474,0,@15090 520,0,@9998 599,0,@15090 645,0,@9998 724,0,@15090 767,0,@9998 843,0,@15090 859,0,@14742 916,0,@15090 7033:D5,888|483b65187306ff5558ca090353415041514c8b7424104983fe017d084989c6e9a7000000498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c8933488d6424084c8b0424ff15440300004989c5488d6424084c8b34244d89f44983fe017509488d6424084c89e8c34d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89e44d896608488d64240849c7064d000000498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c341f6c60175654d8b264d8b6e084d8b1c244d8b134983fa0375404d8b5b084983fbff750949c7c303000000eb0749c7c3010000004983fb0375204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140eb9549c7c6010000004983fe017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b3641ff7608ff152b020000488b5c24184883c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d8b2e4983fd0375734d89f64d8b6e08488d6424084983ed014d6bed087115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77d84c3b75107306ff5550ca09204d89f749c746f8040000004d896e1849bd58a4d3f1c27f00004d896e1049bdf0ded3f1c27f00004d896e0849c70603000000eb0c4d89f64d8b7608488d6424084d8b2e4d89ec4983fd0175304d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c7450001000000e9b50000004d89e54983fc05752d4d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c7450005000000eb7f4983fd03753d4d8b66084d8b5e104d8b76184d8d6fd84c3b6d107306ff5550ca09584d89ef49c745f8040000004d8975184d895d104d89650849c7450003000000eb3c4d8b76084d8b2e4983fd030f85840000004d8b76084d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca09404d89c749c740f8020000004c8b6c24084d8968084d89304159488d642410e9a5fcffff488d64241848b8b82bd4f1c27f0000488b5d08ff23f400000000000000|@15763,1,@2202,@7034,@7012|330,0,@10926 375,0,@9475 431,0,@9475 482,0,@14742 496,0,@15123 866,0,@15702 7034:D3,344|483b65187305ff5558cd01a8010f85360100004c8b30488b40084d8b2e4d89ec4d8b1c244983fb0375264d8b6424084983fcff750949c7c403000000eb0749c7c4010000004983fc037505e9b0ffffff4d8b66084d8b75004983fe0375434d8b75084983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450003000000eb004d8b34244983fe0375464d8b7424084983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d8974240849c7042403000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8e6feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@15764,1,@2203|106,0,@9475 184,0,@9475 7035:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2204| 7036:D4,352|483b65187306ff5558ca0901534150a8010f85380100004c8b30ff7008498b0641ff76084c8b304983fe0b754f4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03752f4c8b70204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000eb3c488b5c24104c8b442418ff15ec0000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424010000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442408488b5c24184c8b442410e8e0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@10112,1,@2205,@7032| 7037:D4,392|483b65187306ff5558ca09035341504151a8010f855d0100004c8b30ff7008498b064d8b6e084c8b7424184983ee014d03ee7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060300000041564c8b304983fe0b754d4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03752d4c8b70204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450003000000eb3a488b5c24104c8b442418ff15c90000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c24204c8b4424184c8b4c2410e8b9feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@10112,1,@2206,@7032|59,0,@9475 7038:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2207| 7039:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2208| 7040:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2209| 7041:D5,288|483b65187305ff5558cd094989c54989de4d3bee750848c7c001000000c348c7c0050000004883e801486bc00070064883c001eb1c48c7c00500000048c7c30100000041554156ff15f3000000415e415da801740b4989c44983c4027002eb1848c7c30300000041554156ff15c7000000415e415d4989c44d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89630849c703050000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704244700000041544c89e84883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89f3e811ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2210,@4933,@6552|217,0,@9475 7042:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2211| 7043:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2212| 7044:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b890dad3f1c27f0000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12733,1,@2213|50,0,@9995 98,0,@9998 164,0,@15090 7045:D4,376|483b65187306ff5558ca0901534150a8010f85500100004c8b30ff7008498b0641ff76084c8b304983fe0b752f4c8b70204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000eb3c488b5c24104c8b442418ff15240100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042401000000488b5c24184c8b5bf849c1e30849c1eb074983cb014c8b2c244d89ee4d3beb7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64889db4e8b74b3fc488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e4156488b4424084c8b442410e8c8feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@10112,1,@2214,@7032|192,0,@9998 7046:D4,320|483b65187306ff5558ca0901534150a8010f85150100004c8b30ff7008498b064d8b6e084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7060300000041564c8b304983fe0b752d4c8b70204d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450003000000eb3a488b5c24104c8b442418ff15c60000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c24184c8b442410e803ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000000000|@10112,1,@2215,@7032| 7047:D3,216|483b65187306ff5558ca0901a8010f85b80000004c8b28488b40084c8b73f849c1e60849c1ee074983ce014d3bee721048b81011d1f1c27f0000488b5d08ff234e8b74abfc4983feff754b4d8b304d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89204c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234e8974abfceb004156e863ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@10112,1,@2216|50,0,@9995 89,0,@9475 129,0,@10034 7048:D6,840|483b65187306ff5558ca09074989c54989de41504151415241f6c5010f851a030000498b450041ff75084c8b204d89e54983fc0b0f851d0100004c8b68104c8b60184c8b58204d89f24983ea014d03da7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89f24983ea014d03ea7115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47d0483b45107306ff5550ca00784989c748c740f8050000004c8958204c8960184c89681048c740080100000048c7000b0000004983c60241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442418ff15850200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424085b488d6424084c8b4c2408415a488d642410e9a9feffff4983fd030f85420100004c8b60104d89f54983ed014d03e57115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983fc01750c48c7c001000000e98e0000004983ec014d6be4087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d89652049c745180100000049bcf0ded3f1c27f00004d89651049c745080100000049c7450005000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89284983c60241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424204c89730849be8838d4f1c27f00004c89334883fb0175054989c0eb09ff15e40000004989c0488b4424085b488d6424084c8b4c2408415a488d642410e95dfdffff4983c60241567115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442418ff15900000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706470000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424085b488d6424084c8b4c2408415a488d642410e9c4fcffff488d64241058c3f400000000|@15767,1,@2217,@7032,@7049,@7032|89,0,@9475 122,0,@9475 205,0,@9475 376,0,@9475 425,0,@9475 484,0,@15123 565,0,@9475 616,0,@15765 690,0,@9475 7049:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2218| 7050:D3,280|483b65187305ff5558cd01a8010f85f90000004c8b30488b40084d8b264d89e54983fc0b75554d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752e4d89e64d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb5b4983fd0775554d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03752e4d89ee4d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb004156e823ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@10112,1,@2219| 7051:D3,320|483b65187305ff5558cd01a8010f85220100004c8b30488b40084d8b2e4d8b66084d8b5d004d89de4983fb0b75564d8b55084d89d341f6c201740949c7c203000000eb0749c7c2010000004983f2024983fa03752f4d89de4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb594983fe0775534d8b5d104d89de41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752c4d8b364d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c7450009000000eb004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8fafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2220| 7052:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2221| 7053:D11,1920|483b65187306ff5558ca0903534c8b204c8b68084c8b70104c8b50184d8b1c244983fb030f853b0700004d8b5c24084983f8030f85040400004d89e84983c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983ce214983fe010f8475010000498d7fe0483b7d107306ff5550ca006f4989ff48c747f80300000048c74710ffffffff49bc58a4d3f1c27f00004c8967084c891f4d8d67d84c3b65107306ff5550ca806f4d89e749c74424f8040000004d8974241849897c241049c74424080500000049c704245f0000004d89e64d8d67e04c3b65107306ff5550ca006f4d89e749c74424f80300000049c7442410f1ffffff48bf58a4d3f1c27f000049897c24084d891c24498d7fe0483b7d107306ff5550ca007f4989ff48c747f8030000004c8947104c89670848c707570000004d8d67d84c3b65107306ff5550ca806f4d89e749c74424f8040000004d895424184d895c24104d8944240849c70424010000004d8d57e84c3b55107306ff5550ca807a4d89d749c742f80200000049c74208010000004d89224d8d67e84c3b65107306ff5550ca806e4d89e749c74424f8020000004d8954240849893c24498d47e8483b45107306ff5550ca007a4989c748c740f8020000004c8960084c8930e9a901000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb663ff4e8d2465010000004983fc237402eb2b48b8f814d1f1c27f0000415141554152415341504156ff15a6050000415e4158415b415a415d41594889c341f6c6017421f6c301741c4d89f44889df49d1fc4883ef014c0fafe770094c89e34883c301eb204c89f041514155415241534150ff15550500004158415b415a415d41594889c34c89c041514155415241534150ff152d0500004158415b415a415d41594889c74d8d67e04c3b65107306ff5550ca802f4d89e749c74424f80300000049c7442410f1ffffff49be58a4d3f1c27f00004d897424084d891c244d8d77e04c3b75107306ff5550ca803f4d89f749c746f80300000049897e104d89660849c706570000004d8d67d84c3b65107306ff5550ca006f4d89e749c74424f8040000004d895424184d895c24104d8944240849c70424010000004d89e24d8d67e84c3b65107306ff5550ca006e4d89e749c74424f80200000049c7442408010000004d891424498d47e8483b45107306ff5550ca007a4989c748c740f8020000004c8960084c89304d89ee4983ee014d6bf6087115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca014a4d89ef49c745f8030000004d89751049be58a4d3f1c27f00004d8975084d895d004d8d77e04c3b75107306ff5550ca01224d89f749c746f8030000004d894e104d896e0849c7065b000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334883fb017502eb06ff1580030000e9070300004983fe010f84710100004d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110ffffffff49bc58a4d3f1c27f00004d8961084d89194d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d897424184d894c241049c74424080500000049c704245f0000004d89e64d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110f1ffffff49bc58a4d3f1c27f00004d8961084d89194d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d896c24104d894c240849c70424570000004d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f8040000004d8951184d8959104d89690849c701010000004d89cd4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e98c01000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb663ff4e8d2465010000004983fc237402eb2348b8f814d1f1c27f00004155415641524153ff15ac010000415b415a415e415d4889c341f6c6017421f6c301741c4d89f44989d949d1fc4983e9014d0fafe170094c89e34883c301eb184c89f0415541524153ff1563010000415b415a415d4889c34c89e8415541524153ff1543010000415b415a415d4989c14d8d67e04c3b65107306ff5550ca002e4d89e749c74424f80300000049c7442410f1ffffff49be58a4d3f1c27f00004d897424084d891c244d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d894e104d89660849c706570000004d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b34244c89f34983fe017506488d642408c34889db488d642408ff2533000000488d64240848b890dad3f1c27f0000488b5d08ff23f40000000000|@15768,1,@2222,@7055,@7054,@6552,@4933,@7056,@7054,@6552,@4933|73,0,@9475 138,0,@14742 250,0,@14742 528,0,@10021 711,0,@14742 919,0,@9475 970,0,@14742 1132,0,@14742 1242,0,@14742 1518,0,@10021 1677,0,@14742 1900,0,@15090 7054:D3,80|49bb00d57f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@15769,1,@2225|2,0,@19880 7055:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2223| 7056:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2224| 7057:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b890dad3f1c27f0000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12733,1,@2226|50,0,@9995 98,0,@9998 164,0,@15090 7058:D3,256|483b65187305ff5558cd01a8010f85de0000004c8b28488b40084d8b75004d8b65084d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849c74500070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e83effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2227| 7059:D3,176|483b65187305ff5558cd09a8010f85910000004c8b28488b40084d8b75004d8b65084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234e8b6cb3fc4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@10112,1,@2228|57,0,@9998 7060:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2229| 7061:D3,264|483b65187306ff5558ca0901a8010f85e70000004c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b6cb3fc4983fd0375674d8b68f849c1e50849c1ed074983cd014d3bf5721048b89011d1f1c27f0000488b5d08ff234f8b74b0fc4d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb1748b890dad3f1c27f0000488b5d08ff2349c7c6010000004983fe017505e93cffffff41ff36e834ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12733,1,@2230|50,0,@9995 98,0,@9998 164,0,@15090 7062:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2232| 7063:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2233| 7064:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2234| 7065:D12,728|483b65187306ff5558ca09015053415048bae0bcd3f1c27f0000488b042448c7c301000000ff15050300004989c64c8b2c2441f6c50175464d8b5d004d8b65084d8b134c3b15de02000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2028d1f1c27f0000e99d0100004d8b6d004d8b65004c3b257702000075064d8b6510eb15488d64241848b87810d1f1c27f0000488b5d08ff23415d41f6c50175464d8b55004d8b5d084d8b0a4c3b0d3802000075214d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0070ebb449c7c5010000004983fd01750c49bd2028d1f1c27f0000eb6d4d8b6d004d8b5d004c3b1dd401000075064d8b6d10eb15488d64241048b87810d1f1c27f0000488b5d08ff23498d47d0483b45107306ff5550ca00704989c748c740f8050000004c8960204c8968184c8b2c244c896810488d6424084c8970084c8b34244c8930488d642408c341f6c50175464d8b55004d8b5d084d8b0a4c3b0d5601000075214d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f8010000004d895500eb184d89dd483b65187306ff5558ca0070ebb449c7c5010000004983fd017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b5d004c3b1de900000075094d8b6d10e937ffffff488d64241048b87810d1f1c27f0000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15a900000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b65004c3b253c00000075094d8b6510e907feffff488d64241848b87810d1f1c27f0000488b5d08ff23f4000000|@15770,1,@2236,@4643,@4643,@4649,@4649,@4649,@4649,@4643,@4643,@6780|18,0,@14852 141,0,@10158 184,0,@9991 291,0,@10158 331,0,@9991 506,0,@10198 553,0,@9991 663,0,@10198 710,0,@9991 7066:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2237| 7067:D3,152|483b65187305ff5558cd01a801757d4c8b30488b40084d8b2e4983fd0375244d8b6e084d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e9abffffff41ff36e8a3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@12733,1,@2238| 7068:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2239| 7069:D4,72|483b65187305ff5558cd0953a8017524ff30488b4008488b5c2408e8e0ffffff4c8b3424498b4608488d6424085bff252c000000488d64240848c7c001000000c3f4000000000000|@10943,1,@2241,@7070| 7070:D3,15832|483b65187305ff5558cd094c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95b010000909090e98d010000909090e9fd030000909090e961040000909090e961040000909090e961040000909090e9f7040000909090e964050000909090e9fa050000909090e967060000909090e9d7080000909090e9e0080000909090e912090000909090e912090000909090e9a8090000909090e9ad090000909090e91a0c0000909090e9680d0000909090e9680d0000909090e99a0d0000909090e906100000909090e906100000909090e906100000909090e940120000909090e972120000909090e972120000909090e972120000909090e9a4120000909090e910150000909090e97c170000909090e9b6190000909090e9261c0000909090e9831f0000909090e9bd210000909090e92a220000909090e932220000909090e96c240000909090e953250000909090e9bf270000909090e92b2a0000909090e9972c0000909090e9972c0000909090e9c92c000090909048c7c001000000c34c8b70104c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b70084d8b6e104d8b76184c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b60104c8b68184c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b60084c8b70104c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104c8b60184c8b68204c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b60084c8b70184c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084d8b75004d8b6d084c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b6e084d8b7620e9033000004c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b60184c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68084c8b7018e9a62a00004c8b60084c8b70184c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc030f852e0200004d8b264d89e34983fc0b75474d8b760841f6c60175354d8b3649c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89dc4983fb070f858a0100004d8b5e084d8b66104d8b76184983fc010f853e01000049c1e50849c1ed074983cd014d3bdd721048b80017d1f1c27f0000488b5d08ff234ac7449bfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b342449c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fc0975364d8b760849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b68084c8b70184983fd017502eb324d8b6d004c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c348c7c001000000c34c8b70084d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b6e104d8b76204c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084d8b2c244d8b7424104d8b6424204d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb004c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084c8b70104c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b70084d8b2e4d8b7618e9110d00004c8b70084d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b60084c8b70104c8b68184983fe01756d4c8b5bf84d89de49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc03753249c1e60849c1ee074983ce014d3bee721048b80017d1f1c27f0000488b5d08ff234ac744abfc0300000048c7c001000000c348c7c001000000c34d8b364c8b5bf84d89dd49c1e30849c1eb074983cb014d3be3721048b81011d1f1c27f0000488b5d08ff234e8b64a3fc4983fc03753249c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68084c8b70104c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34c8b68104c8b70184c8b63f849c1e40849c1ec074983cc014d3bec721048b80017d1f1c27f0000488b5d08ff234ac744abfc030000004d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c348c7c001000000c34c8b70184c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34c8b70104d8b2e4d89ec4983fd0b754b4d8b760841f6c60175394d8b364c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d89e54983fc070f85920100004d8b66084d8b6e104d8b76184983fd010f85420100004c8b6bf849c1e50849c1ed074983cd014d3be5721048b80017d1f1c27f0000488b5d08ff234ac744a3fc030000004d8b264d89e54983fc07753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89ec4983fd05753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34d89e54983fc03753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd01753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c34d8b75004c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c34983fd09753a4d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b80017d1f1c27f0000488b5d08ff234ac744b3fc0300000048c7c001000000c348c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80017d1f1c27f0000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f85300200004d8b264d8b6e084d8b24244d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9c6fdffff48c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80017d1f1c27f0000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f85300200004d8b264d8b6e084d8b24244d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9c6fdffff48c7c001000000c341f6c5010f85240200004d8b5d004d8b65084d8b1b4d8b134d89d14983fa0b75424d8b5b0841f6c30175334d8b1b4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00e9b70100004d89ca4983f9070f85700100004d8b4b084d8b53104d8b5b184983fa010f85270100004c8b53f849c1e20849c1ea074983ca014d3bca721048b80017d1f1c27f0000488b5d08ff234ac7448bfc030000004d8b0b4d89ca4983f90775374d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000e9b40000004d89d14983fa0575344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb774d89ca4983f90375344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0175344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb00eb314d8b1a4c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb3a4983fa0975344d8b5b084c8b53f849c1e20849c1ea074983ca014d3bda721048b80017d1f1c27f0000488b5d08ff234ac7449bfc03000000eb004d89e5483b65187306ff5558ca0860e9d2fdffff41f6c6010f852c0200004d8b264d8b6e084d8b1c244d89da4983fb0b75444d8b64240841f6c40175344d8b24244c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00e9c00100004d89d34983fa070f85780100004d8b5424084d8b5c24104d8b6424184983fb010f852c0100004c8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234ac74493fc030000004d8b14244d89d34983fa0775384d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000e9b70000004d89da4983fb0575354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb794d89d34983fa0375354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0175354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb00eb314d8b234c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb3b4983fb0975354d8b6424084c8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234ac744a3fc03000000eb004d89ee483b65187306ff5558ca0840e9cafdffff48c7c001000000c3f4000000000000|@15772,1,@2242|416,0,@10034 482,0,@10034 553,0,@10034 650,0,@10034 712,0,@10034 779,0,@10034 846,0,@10034 910,0,@10034 976,0,@10034 1040,0,@10034 1110,0,@10034 1156,0,@10034 1238,0,@10034 1284,0,@10034 1330,0,@10034 1395,0,@9995 1439,0,@10034 1513,0,@10034 1559,0,@10034 1605,0,@10034 1670,0,@9995 1714,0,@10034 1788,0,@10034 1859,0,@10034 1956,0,@10034 2018,0,@10034 2085,0,@10034 2152,0,@10034 2216,0,@10034 2282,0,@10034 2346,0,@10034 2429,0,@10034 2503,0,@10034 2549,0,@10034 2595,0,@10034 2673,0,@9995 2746,0,@10034 2839,0,@10034 2901,0,@10034 2968,0,@10034 3035,0,@10034 3099,0,@10034 3161,0,@10034 3221,0,@10034 3311,0,@10034 3373,0,@10034 3440,0,@10034 3507,0,@10034 3571,0,@10034 3645,0,@10034 3707,0,@10034 3778,0,@10034 3875,0,@10034 3937,0,@10034 4004,0,@10034 4071,0,@10034 4135,0,@10034 4201,0,@10034 4265,0,@10034 4372,0,@10034 4469,0,@10034 4531,0,@10034 4598,0,@10034 4665,0,@10034 4729,0,@10034 4795,0,@10034 4859,0,@10034 4925,0,@10034 4999,0,@10034 5061,0,@10034 5132,0,@10034 5229,0,@10034 5291,0,@10034 5358,0,@10034 5425,0,@10034 5489,0,@10034 5555,0,@10034 5619,0,@10034 5689,0,@10034 5760,0,@10034 5857,0,@10034 5919,0,@10034 5986,0,@10034 6053,0,@10034 6117,0,@10034 6183,0,@10034 6247,0,@10034 6338,0,@10034 6435,0,@10034 6497,0,@10034 6564,0,@10034 6631,0,@10034 6695,0,@10034 6761,0,@10034 6825,0,@10034 6899,0,@10034 6970,0,@10034 7067,0,@10034 7129,0,@10034 7196,0,@10034 7263,0,@10034 7327,0,@10034 7393,0,@10034 7457,0,@10034 7565,0,@10034 7656,0,@10034 7720,0,@10034 7785,0,@10034 7847,0,@10034 7906,0,@10034 7959,0,@10034 8018,0,@10034 8066,0,@10034 8128,0,@10034 8195,0,@10034 8262,0,@10034 8326,0,@10034 8417,0,@10034 8514,0,@10034 8576,0,@10034 8643,0,@10034 8710,0,@10034 8774,0,@10034 8840,0,@10034 8904,0,@10034 8977,0,@9995 9021,0,@10034 9128,0,@10034 9225,0,@10034 9287,0,@10034 9354,0,@10034 9421,0,@10034 9485,0,@10034 9551,0,@10034 9615,0,@10034 9698,0,@9995 9742,0,@10034 9810,0,@9995 9854,0,@10034 9924,0,@10034 9995,0,@10034 10092,0,@10034 10154,0,@10034 10221,0,@10034 10288,0,@10034 10352,0,@10034 10418,0,@10034 10482,0,@10034 10552,0,@10034 10623,0,@10034 10720,0,@10034 10782,0,@10034 10849,0,@10034 10916,0,@10034 10980,0,@10034 11046,0,@10034 11110,0,@10034 11180,0,@10034 11251,0,@10034 11348,0,@10034 11410,0,@10034 11477,0,@10034 11544,0,@10034 11608,0,@10034 11674,0,@10034 11738,0,@10034 11812,0,@10034 11895,0,@10034 11992,0,@10034 12054,0,@10034 12121,0,@10034 12188,0,@10034 12252,0,@10034 12318,0,@10034 12382,0,@10034 12490,0,@10034 12578,0,@10034 12640,0,@10034 12704,0,@10034 12765,0,@10034 12823,0,@10034 12876,0,@10034 12934,0,@10034 13051,0,@10034 13142,0,@10034 13206,0,@10034 13271,0,@10034 13333,0,@10034 13392,0,@10034 13445,0,@10034 13504,0,@10034 13626,0,@10034 13714,0,@10034 13776,0,@10034 13840,0,@10034 13901,0,@10034 13959,0,@10034 14012,0,@10034 14070,0,@10034 14187,0,@10034 14278,0,@10034 14342,0,@10034 14407,0,@10034 14469,0,@10034 14528,0,@10034 14581,0,@10034 14640,0,@10034 14762,0,@10034 14850,0,@10034 14912,0,@10034 14976,0,@10034 15037,0,@10034 15095,0,@10034 15148,0,@10034 15206,0,@10034 15319,0,@10034 15410,0,@10034 15474,0,@10034 15539,0,@10034 15601,0,@10034 15660,0,@10034 15713,0,@10034 15772,0,@10034 7071:D5,152|483b65187305ff5558cd095048bae0bcd3f1c27f00004889d848bb90bed3f1c27f0000ff158f0000004989c641564c8b7424084d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b742408720d488d64242048c7c001000000c34889c04c8b742418498b5c86fc4c8b442410ff15360000004c8b2c244983c5024c892c24483b65187303ff5558ebb6f4000000000000|@15774,1,@2243,@7072,@6780|14,0,@14852 27,0,@14861 7072:D9,1472|483b65187306ff5558ca090153415048bae81cd1f1c27f000048c7c303000000ff15da0500004989c44d8b34244e8d2c75010000004983fd01750f49be483ad4f1c27f0000e9c00000004d89eb4983c3084c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153e0500000f87fd0400004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426094d89ec49d1ec43c64426013d4d89ec49d1ec43c64426023e49d1ed43c6442e0320418066ffbf41564c8b7424104d8b264d89e54983fc050f852f0100004d89f6498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159b04000048bae81cd1f1c27f000048c7c305000000ff157c0400004989c64d8b2e4a8d0c6d010000004883f901750f49bc10d4d3f1c27f0000e99f0000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1de903000077724d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424087841c64424096d41c644240a6d498d7608498d7c240b48d1e9f3a441806424ffbfe966010000488d64241848b8f8c7d0f1c27f0000488b5d08ff234d89f64983fd010f85260100004d89f6498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff154f03000048bae81cd1f1c27f000048c7c305000000ff15300300004989c64d8b2e4a8d0c6d010000004883f901750f49bc28d4d3f1c27f0000e9990000004989cd4983c5044c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1da502000077694d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086641c644240970498d7608498d7c240a48d1e9f3a441806424ffbfeb33488d64241848b8f8c7d0f1c27f0000488b5d08ff234d89f64d8b7608498b06498b5e0849c7c005000000ff153a0200004989c44c8b14244d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe01750d488d6424084d89e5e9c20000004983fb01750d4d89d5488d642408e9af0000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05900100000f87520100004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f14d89d2498d7208488d642408498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8a0d5d0f1c27f0000e9950000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1db6000000776f4d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049d1ee42c604300a8060ffbf5a4883c408ff22488d642408488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15775,1,@2244,@6795,@4983,@4933,@4983,@4933,@4983|17,0,@10077 61,0,@15773 335,0,@10021 351,0,@10077 394,0,@15033 578,0,@9487 651,0,@10021 667,0,@10077 710,0,@15034 885,0,@9487 1189,0,@9535 1370,0,@9487 1391,0,@9487 1412,0,@9487 7073:D6,2552|483b65187306ff5558ca090750534150415141524c8b7424084d8b6ef849c1e50849c1ed074983cd01488b5c24204c8b73f849c1e60849c1ee074983ce01415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564983fd017d0a488d642440e9cf0300004c3b2d410900000f8dbd0300004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948b8a85bd1f1c27f0000f348ab415649c7c6010000004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d89750049be103bd4f1c27f00004d89750049c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d89ee4983fd017d0a488d642458e9bf0200004d89f64d89f54c3b35380800000f8da70200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d0a488d642460e93b0200004d89f64d89f54c3b35c10700000f8d230200004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a204d89f749d1ec4d8966f841c646ff404c89f748d1e948b8c046d1f1c27f0000f348ab415649c7c4010000004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564d89ec4d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d892641564d89ed4d89ee4983fd017d0a488d642478e9600100004d89f64d89f54c3b35f30600000f8d480100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd0a4d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415648c7c0010000004c8b0424ff15df060000ff742460ff742478ff742458ff742458ff742448ff742458ffb42498000000ff74245048b8583ed4f1c27f0000488b5c24604c8b4424404c8b8c24b80000004c8b542478ff158d0600004c8b7424504d89f54983fe017514488d64241049be4882d1f1c27f0000e9fe0000004d89ed4d89ee4983fd017e624d89f64d89f54c3b350a0600007d494d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41566a01eb76488da42480000000eb08488da4248000000048b8d010d3f1c27f0000488b5d08ff23488d64247848b8d015d1f1c27f0000488b5d08ff23488d64246048b8d015d1f1c27f0000488b5d08ff23488d64245848b8d015d1f1c27f0000488b5d08ff23488d64244048b8d015d1f1c27f0000488b5d08ff234c8b7424604c3b34247f44488d6424084c8b2c244d89ee418065ffbf4d89f6488d6424184c8b2c244d8b6d00488d6424084983fd01750a488d642410e964030000488d64241049c7c301000000eb71ff742418ff742428488b442410488b5c24204c8b8424980000004c8b4c24384c8b542440ff15100500004989c64c8b6424084c8b1c244d89dd4f89749cfc4d89ed4983c5027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558e940ffffff41f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bc4882d1f1c27f0000e9ba00000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25db0300007c15488d64245848b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb01756b418065ffbf4d89ec4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244983fd017505e97b01000049c7c5010000004d89e6eb414d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e94effffff41f6c60175494d8b1e4d8b56084d8b5bf849c1e30849c1eb074983cb014983eb014d03dd7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebb14983fd01750f49be4882d1f1c27f0000e9ca0000004c3b2d570200007c15488d64245848b8883ed4f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c50100000041f6c4017559498b34244d8b5424084c8b5ef849c1e30849c1eb074983cb014c89d94b8d7caefc48d1e9f348a54983eb014d03dd7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eba1418066ffbf4c8b6c24184d8b6d0049c7c30100000041f6c501753e4d8b4d004d8b65084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d895a084d890a4d89d34d89e5483b65187306ff5558ca0068ebbc4983fb01750f49bd4882d1f1c27f0000e9b700000049c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25d60000007c15488d64245848b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb017531418065ffbf4c8b24244d8b1c24488d6424084c8b6424284d8934244d895c24084d896c241048c7c0010000004883c450c34d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078eb8bf400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15806,1,@2246,@7076,@7078,@7075|237,0,@10515 295,0,@15776 609,0,@10368 870,0,@15802 928,0,@10817 1061,0,@13764 1082,0,@10027 1103,0,@10027 1124,0,@10027 1145,0,@10027 1319,0,@9475 1427,0,@10817 1476,0,@9475 1526,0,@10818 1753,0,@9475 1835,0,@9475 1877,0,@10817 1906,0,@15804 2053,0,@9475 2184,0,@10817 2233,0,@9475 2283,0,@10818 2452,0,@9475 7074:D3,2424|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc010f858303000041ff75084d8b6d104983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241049bdb86fd1f1c27f0000e9140200004d89f64983ee027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd203bd4f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5017d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd503bd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd030f85fd0100004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be203bd4f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd783cd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c341ff76084d8b76104983ed0241557115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdb86fd1f1c27f0000e9140200004d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd203bd4f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed802d2f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd583dd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@15801,1,@2245|26,0,@10414 78,0,@9475 112,0,@10678 141,0,@9475 191,0,@4699 227,0,@9475 282,0,@4699 327,0,@10681 375,0,@10236 420,0,@15777 464,0,@10236 509,0,@10685 597,0,@10236 641,0,@11889 690,0,@10688 835,0,@10236 880,0,@15779 965,0,@10414 1003,0,@9475 1053,0,@4699 1098,0,@10681 1147,0,@10236 1191,0,@15777 1236,0,@10688 1381,0,@10236 1426,0,@15787 1511,0,@10414 1543,0,@9475 1577,0,@10678 1606,0,@9475 1656,0,@4698 1692,0,@9475 1747,0,@4699 1792,0,@10681 1840,0,@10236 1885,0,@15777 1929,0,@10236 1974,0,@10685 2062,0,@10236 2106,0,@11723 2155,0,@10688 2300,0,@10236 2345,0,@15794 7075:D3,760|483b65187306ff5558ca0901505341504c8b7424084d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64241848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f60424010f85cb0000004c8b3424498b064d89f641ff76084c8b6424104d8b7424f84d89f349c1e60849c1ee074983ce01493bc67215488d64242848b81011d1f1c27f0000488b5d08ff234d89e44d8b7484fc4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d8975084c8b5424204d8955004d89e449c1e30849c1eb074983cb01493bc37215488d64242848b80017d1f1c27f0000488b5d08ff234d89e44d89e04d896c84fc41f6c601740c488b5c2418e830fdffffeb00415d4c892c24483b65187303ff5558e92bffffff488d64242048c7c001000000c3f400000000|@15879,1,@2471|57,0,@9998 590,0,@9995 679,0,@10034 7076:D4,2880|483b65187306ff5558ca09074d89d64883f801745b4c8b6bf849c1e50849c1ed074983cd01493bc5721048b81011d1f1c27f0000488b5d08ff234c8b6c83fc41f6c501740949c7c503000000eb0749c7c5010000004983f5024983f5024983fd03750d48b8183fd4f1c27f0000c210004d8b68f849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b6c80fc4d8b65004d8b69f849c1e50849c1ed074983cd01493bc5721048b81011d1f1c27f0000488b5d08ff234d8b6c81fc41ff75004d8b55106a016a014d8b2c244c8d1d080000004f8d5cabfc41ffe3e933000000909090e9c7030000909090e9a5040000909090e9ba040000909090e90c050000909090e996080000909090e9970900009090904d8b6c2408498b7c24104d8b5c24184d8b4c24204d8b66f849c1e40849c1ec074983cc01493bfc7215488d64241848b81011d1f1c27f0000488b5d08ff234d8b64befc4983fc017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b24244d8b6424084d3be275084989fce9330100004d3bd40f8e0a0300004d89d04d2bc47115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c0014d8d67e04c3b65107306ff5550ca806f4d89e749c74424f80300000049c7442410030000004d8944240849c70424350000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f80200000049c74008010000004d89204d8d67e84c3b65107306ff5550ca806f4d89e749c74424f80200000049897c240849c704240b000000498d7fe8483b7d107306ff5550ca007f4989ff48c747f8020000004c8947084c89274c8b6424284d8b24244c8b4424284d8b004983c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b7424284c89064c8b442420498b304d8d47e84c3b45107306ff5550cac07e4d89c749c740f80200000049897008498938488b7c24204c89074d8b46f849c1e00849c1e8074983c8014d3bc87215488d64241848b81011d1f1c27f0000488b5d08ff234f8b748efc4983fe017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d3bf275084d89cae9280100004d3bd60f8e640100004d2bd67115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c2014d8d77e04c3b75107306ff5550ca003e4d89f749c746f80300000049c74610030000004d89560849c706350000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e0849c7060b0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d8951084d89314c8b7424284d8b164c8b7424284d8b364983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b4424284d89304c8b7424204d8b064d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4c8b4c24204d89314d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849c706010000004c8b6c24104c892c244c89742408e930060000488d64241848b8303fd4f1c27f0000488b5d08ff23488d64241848b8303fd4f1c27f0000488b5d08ff234d8b6c24104d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64241848b81011d1f1c27f0000488b5d08ff234f8b74aefc4983fe017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b364d8b1e4d8b6e084d3bea75074c8b742410eb734d89d64d2bf57115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849c74500350000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24104d895e084d892e4c8934244c89642408e92005000049bea85bd1f1c27f00004c8b6c24104c892c244c89742408e903050000498b4424084c8b4c24284c8b6c24204d89d04d89ea4c89f3ff157c0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24104c892c244c89742408e9a90400004d8b4c24084d8b5c24104d8b6ef849c1e50849c1ed074983cd014d3bcd7215488d64241848b81011d1f1c27f0000488b5d08ff234f8b6c8efc4983fd017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b6d004d8b6d084d3bea75084d89cde9360100004d3bd50f8e0b0300004d89d44d2be57115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fe04c3b6d107306ff5550ca005e4d89ef49c745f80300000049c74510030000004d89650849c74500350000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c745000b0000004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d8961084d89294c8b6c24284d8b6d004c8b6424284d8b24244983c4027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b4424284d89204c8b6424204d8b04244d8d67e84c3b65107306ff5550ca006f4d89e749c74424f8020000004d894424084d890c244c8b4c24204d89214d8b66f849c1e40849c1ec074983cc014d3bdc7215488d64241848b81011d1f1c27f0000488b5d08ff234f8b749efc4983fe017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d3bf275084d89dce92e0100004d3bd60f8e620100004d89d44d2be67115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610030000004d89660849c706350000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c7060b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334c8b7424284d8b264c8b7424284d8b364983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b5424284d89324c8b7424204d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b5c24204d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706090000004c8b6c24104c892c244c89742408e941010000488d64241848b8303fd4f1c27f0000488b5d08ff23488d64241848b8303fd4f1c27f0000488b5d08ff234d8b6424084d8b6ef849c1e50849c1ed074983cd014d3be57215488d64241848b81011d1f1c27f0000488b5d08ff234f8b74a6fc4983fe017515488d64241848b80895d1f1c27f0000488b5d08ff234d8b364d8b1e4d8b76084d3bf275074c8b6c2410eb734d89d54d2bee7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c706350000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c7060b0000004c892c244c89742408eb0e4c8b7424104c8934244c89642408415c415e49c7c5010000004883c40841f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c21000f40000000000|@15811,1,@2247,@7077|44,0,@9995 101,0,@15807 135,0,@9998 181,0,@9995 335,0,@9995 367,0,@10926 427,0,@9475 638,0,@9475 738,0,@9995 770,0,@10926 825,0,@9475 1028,0,@9475 1176,0,@15808 1197,0,@15808 1244,0,@9995 1276,0,@10926 1327,0,@9475 1443,0,@10515 1598,0,@9995 1630,0,@10926 1689,0,@9475 1899,0,@9475 2003,0,@9995 2035,0,@10926 2093,0,@9475 2299,0,@9475 2439,0,@15808 2460,0,@15808 2507,0,@9995 2539,0,@10926 2590,0,@9475 7077:D3,464|483b65187306ff5558ca0907a8010f85ae0100004c8b20488b40084c8b73f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234e8b74a3fc4983fe01751048b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d3bf075084d89e6e90d0100004d3bc60f8e3a0100004d89c54d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca09374d89f749c746f80300000049c74610030000004d896e0849c706350000004d8d6fe84c3b6d107306ff5550ca09574d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca09374d89f749c746f8020000004d89660849c7060b0000004d8d67e84c3b65107306ff5550ca09674d89e749c74424f8020000004d896c24084d8934244d8b314d89f54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca095f4d89ef49c745f8020000004d895d084d8965004d892a4156e87dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8303fd4f1c27f0000488b5d08ff2348c7c001000000c3f40000000000|@10112,1,@2248|50,0,@9995 77,0,@10926 130,0,@9475 322,0,@9475 436,0,@15808 7078:D10,1816|483b65187306ff5558ca090753415041514152488b5c2418ff15420700004989c64156f6042401750c4c8b34244d8b2e4d89f6eb0f488d64242848c7c001000000c2400041f6c60175464d8b1e4d8b66084d8b0b4c8b5424184d8b42f849c1e00849c1e8074983c8014d3bc87215488d64242848b81011d1f1c27f0000488b5d08ff234d89d24f8b548afce9dc05000049c7c6010000006a016a014983fe0175134d8b75004c8934244d8b75084c89742408eb134d8b364d8b2e4c892c244d8b76084c89742408ff3424488b4424104c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64244048b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b6caefc41ff750041ff75084d8b4d204d8b75284d8b55384d8b45404983fe01750949c7c603000000eb0749c7c6010000004983f60241566a016a014889e3ff1507060000415c415e4d89f34d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d896500415549c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424184d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24684d8b55f849c1e20849c1ea074983ca014c8b6424304d89e34d3be27215488d64247048b80017d1f1c27f0000488b5d08ff234d89ed4d89db4d89dc4f89749dfc4c8b7424604d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64247048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64b8b44aefc488b5c2478ff15a9040000488b9c2488000000ff1593040000ff7424206a01f6442408010f858f0000004c8b742408498b064d89f641ff76084c8b8c24b80000004c8b8424b00000004c8bb424a00000004c8bac24c00000004c8ba424980000004c8b9c24c80000004c8b9424a80000004156ff742430415541544153ff7424484152ff7424504d89c2488b5c24484c8b8424a8000000ff15070400004989c4415d4c8924244c896c2408483b65187303ff5558e966ffffff415d4c8b7424184d8b264c8bb424900000004d8b1e4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d8966104d895e084d892e4c8b6c24104d8b6d00498d5fe8483b5d107306ff5550ca00704989df48c743f8020000004c8963084c892b4c8bac24800000004d8b5df849c1e30849c1eb074983cb014c8b6c24384d89ec4d3beb7215488d64247848b80017d1f1c27f0000488b5d08ff23488d6424304c8b6c24504d89e44f8974a5fc4c8b34244d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e990000000909090e9c3000000909090e9cc000000909090e9d5000000909090e92f010000909090e95f0100009090904d89f64d8b66104d89f64d8b7620488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c89304883c418e9030100004d89f64d8b7610488d642408498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883c418e9c8000000488d64242048c7c001000000e9b70000004d89f6498b4608488d642420e9a60000004d89f54d8b75084d89ed4d8b6510488d6424084d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca08604989c748c740f8020000004c8968084c89304883c418eb444d89f64d8b7608488d642408498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883c418eb0c488d64242048c7c001000000ff15750100004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff154d0100004989c6488d6424084156488b5c2420488b542418488b4c2410488b4424084c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438488b742430488974243048897c24384c894424404989d04c894c24484989c94c895424504989c2488b04244c895c24584c896424604c896c24684883c428e999f9ffff488d64242841f6c201755e498b3a4d8b4a084c8b442420498b70f848c1e60848c1ee074883ce01483bfe7215488d64242848b81011d1f1c27f0000488b5d08ff234d89c04d8b44b8fc4983f80174114d89ca483b65187306ff5558ca007ceba549c7c201000000eb0749c7c2030000004983fa0375234d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891ee997f9ffff4d89e6483b65187306ff5558ca0060e930f9fffff4000000|@15812,1,@2249,@7080,@7081,@7082,@7297,@7298,@7299,@7079|117,0,@9995 247,0,@9998 576,0,@10034 643,0,@9995 999,0,@10034 1690,0,@9995 7079:D3,184|483b65187305ff5558cd09a8010f859a000000ff30488b40084c8b34244d8b364c8b6bf849c1e50849c1ed074983cd014d3bf57215488d64240848b81011d1f1c27f0000488b5d08ff234e8b74b3fc4983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe037434e88cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e953ffffff48c7c001000000c3f40000|@9893,1,@2470|60,0,@9995 7080:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2250| 7081:D3,120|483b65187305ff5558cd09a801755f4c8b28488b40084d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049895e084d892e4156e8c1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@2251| 7082:D7,1192|483b65187306ff5558ca09074c89cf4c89d64150ff304c8b7424504c8b6c24484c8b6424404c8b5c24384c8b5424304c8b4c24284c8b44242041564155415441534152415141504989f24989f94c8b442440ff15800400004989c641564c8b6c24084d89ee4983fd01750c48c7c001000000e9e70300004c8b6c245041ff75004d89f648c7c00100000041f6c6010f85520100004d8b1e4d8b6e084c8b6424184d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b549cfc4d8b224983fc030f85ca0000004d8b62084d8b52104d8b4a084983fc017d2a4d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24e98c0000004c8b5424584d8b124983e9014d03cc7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d3bd1753c4c8b5c24384d8b1b41f6c30175194d8b5b084c8b5424384d891a4c8b5c24584d89234989c4eb3a488d64242048b8e049d1f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb254d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e9a4feffff4c8b7424584d8b364c3b3424752a4c8b742428498b1e4883fb0175054989c6eb09ff15c30200004989c64c8b6c24284d897500e99e0100004c8b742428498b1e4883fb0175054989c6eb09ff15910200004989c64c8b6c24584d8b5d004d89f449c7c50100000041f6c4010f854a0100004d8b04244d8b5424084c8b4c2418498b79f848c1e70848c1ef074883cf014c3bc77215488d64242048b81011d1f1c27f0000488b5d08ff234d89c94b8b7c81fc4c8b0f4983f9030f85c40000004c8b4f08488b7f10488b77084983f9017d274d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d8901e989000000488b7c2458488b3f4883ee014903f17115488d64242048b8d0c6d0f1c27f0000488b5d08ff23483bfe753c4c8b4424384d8b0041f6c00175194d8b4008488b7c24384c89074c8b4424584d89084d89e9eb37488d64242048b8e049d1f1c27f0000488b5d08ff234d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d8901eb224d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d89014d89cd4d89d4483b65187306ff5558ca0078e9acfeffff4c8b6424584d8b24244d3be30f85dc0000004c8b6c24284d8975004c8b7424584d8b364c3b34247511488d64240848c7c001000000e9830000004c8b7424584d8b364c8b2c244d2bee488d6424087115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c5014d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70635000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b34244c89f34983fe017508488d642418c240004889db488d6424084c8b7424104c897424504883c450ff25310000004d89ee483b65187306ff5558ca0040e997fdfffff400000000|@15849,1,@2252,@7084,@7085,@7086,@7083|189,0,@9995 308,0,@9475 373,0,@10395 641,0,@9995 757,0,@9475 822,0,@10395 1016,0,@9475 7083:D217,56976|488dbc2428ffffff483b7d187306ff5560ca0907534150415141524c8b70084d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e92c020000909090e943030000909090e96a040000909090e982050000909090e991050000909090e996080000909090e9b6090000909090e9d20a0000909090e9f20b0000909090e9f30b0000909090e91a0d0000909090e9210f0000909090e939100000909090e96b100000909090e986110000909090e9c7150000909090e9631e0000909090e9b31f0000909090e96b200000909090e97e210000909090e99e220000909090e971240000909090e90b270000909090e90b2a0000909090e91e2b0000909090e9992d0000909090e99a2d0000909090e9b22e0000909090e9ce2f0000909090e9ee300000909090e93d320000909090e964330000909090e9d9340000909090e99a360000909090e9b6370000909090e9073b0000909090e9df3b0000909090e9fb3c0000909090e9173e0000909090e9333f0000909090e953400000909090e90b410000909090e926420000909090498b460841ff761041ff76186a016a014c8b4c24584c8b5424684c8b7424704c8b6c24504c8b642448ff742428ff742428415641554154488d5c24284c8b442458ff1578e30000415d584d8d77d04c3b75107306ff5550ca01204d89f749c746f80500000049c74620010000004c8b24244d896618488d6424084c8b24244d896610488d6424204d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff25dee2000041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9f8d700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9acd60000488d64244848b83840d4f1c27f0000488b5d08ff234d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e95ad200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e936d00000488d64246048b83840d4f1c27f0000488b5d08ff2341ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9f3cb00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97fc60000488d64244848b83840d4f1c27f0000488b5d08ff2341ff7608498b461049c7c6010000004989c5e9e6c300004d8b5e08498b46104c8b74245849c706010000004c8b7424304d8b3641f6c6010f85d20200004d8b2e4d8b6d004983fd01750949c7c503000000eb0749c7c5010000004983fd030f85a40200004d8b76084c8b6c24304d8975004c8b7424504d8b364983ee047115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24504d8975004c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b840d4f1c27f0000488b5d08ff234d8b164d89d54983fa037515488d64242048b83841d4f1c27f0000488b5d08ff234983fd0175094d8b7608e9f50000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b324d89f54d89d24983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d24d892a4c8b14244d8b024d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89750849c74500010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64242048b80017d1f1c27f0000488b5d08ff234d89e44f896c9cfc41566a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15dddc0000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7060b000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff2558dc0000488d642420eb05488d64242048b8b841d4f1c27f0000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9a3bc00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e92cb20000488d64245848b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9e5ad00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e924aa0000488d64245048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9d9a500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97f9b0000488d64245848b83840d4f1c27f0000488b5d08ff23488d64241858c238004d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e9249700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e983940000488d64246048b83840d4f1c27f0000488b5d08ff234d8b760841ff3641ff760841ff7610498b46206a016a014c8b4c24784c8b5424704c8bb424800000004c8b6c24684156ff742438ff7424384155488d5c24204c8b442458ff153ed70000ff3424ff7424106a016a014c8b8c24980000004c8b9424900000004c8bb424a00000004c8bac24880000004156ff742458ff7424584155488b442458488d5c24204c8b442478ff15ead60000ff3424ff7424106a016a014c8b8c24a00000004c8b9424b00000004c8bb424b80000004c8bac24980000004c8ba42490000000ff742470ff742470415641554154488b842488000000488d5c24284c8b8424a0000000ff1586d600004c8b3424ff7424084c8bac24c800000049c74500010000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424384d89652049c74518010000004c8b6424584d8965104c8b6424184d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061700000041564c8bb424900000004c89f34983fe017507488b5c2448eb0e488b442448ff15d9d500004889c34883fb0175074c8b742428eb0e488b442428ff15b6d500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c488000000c23800584c8bb424880000004c89b424c00000004881c4c0000000ff2551d5000041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9318e00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9978b0000488d64244848b83840d4f1c27f0000488b5d08ff23488d642418498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d64240849bed8a8d3f1c27f00004c8930c2380041ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9178700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9d27c0000488d64245048b83840d4f1c27f0000488b5d08ff23498b460841ff761041ff761841ff76206a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488d5c24204c8b442460ff1580d20000ff3424ff742410ff7424206a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff1525d20000ff3424488b442410f644244801750c49beb80bd1f1c27f0000eb0749c7c60100000041564c8b6c24604d89ee4983fd010f85a40000004c8b7424284983fe01750c49c7c601000000e9880000004c8b6424704d8b2c244d89ee4d89e44983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89e44d8934244c8b6424684d8b1c244d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e0849c706050000004d89e44d8934244d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892ee9f50100004d89f64d8b1e4c8b6424784d8b7424f849c1e60849c1ee074983ce014d3bde7218488da4248800000048b81011d1f1c27f0000488b5d08ff234d89e44f8b749cfc4c8bac24b00000004d8b6df849c1e50849c1ed074983cd014d3bdd7218488da4248800000048b89011d1f1c27f0000488b5d08ff234c8bac24b00000004f8b6c9dfc4983fd037518488da4248800000048b8b840d4f1c27f0000488b5d08ff234d8b164d89d54983fa037518488da4248800000048b83841d4f1c27f0000488b5d08ff234983fd0175094d8b6e08e9030100004c8bb424a00000004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4248800000048b89011d1f1c27f0000488b5d08ff234c8bb424a00000004f8b4c9efc4c8b5424704d8b2a4d89ee4d89d24983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89d24d89324c8b5424684d8b024d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d8946084d890e4d89d24d89324d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7218488da4248800000048b80017d1f1c27f0000488b5d08ff234d89e44f89749cfc4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e41564c8b7424304c89f34983fe0175054989c5eb09ff1533cf00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424084d8966204d896e184c8b2c244d896e10488d6424104c8b6c24284d896e0849c7061f00000041564c8bb424800000004c89f34983fe017507488b5c2408eb0e488b442408ff15bece00004889c34883fb0175074c8b742420eb0e488b442420ff159bce00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c480000000c2380041ff760841ff761041ff76184c8b7424604d8b66f849c1e40849c1ec074983cc014c8b7424104d89f54d3bf47215488d64243848b89011d1f1c27f0000488b5d08ff234c8b7424604d89ed4f8b74aefc4983fe030f85060300006a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488b442438488d5c24204c8b442460ff15c0cd0000ff3424488b5c2410488b4424184883fb017502eb06ff159dcd00004c8b5c24484d8b63f849c1e40849c1ec074983cc014c8b6c24304d89ee4d3bec7215488d64245848b81011d1f1c27f0000488b5d08ff234d89f64d89db4f8b6cb3fc4d8b6d004983fd050f85450200004c8b5424404d8b224d89e54d89d24983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89d24d892a4c8b5424384d8b0a4d8d6fe84c3b6d107306ff5550ca015e4d89ef49c745f8020000004d894d0849b9a854d1f1c27f00004d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f80200000049c74508030000004d8965004c8ba424880000004d8b14244d8d67e04c3b65107306ff5550ca016c4d89e749c74424f8030000004d896c24104d8954240849c70424030000004d89db4d8b4bf849c1e10849c1e9074983c9014d89f64d89f24d3bf17215488d64245848b80017d1f1c27f0000488b5d08ff234d89db4d89d24d89d64f896493fc4d8d67e84c3b65107306ff5550ca01604d89e749c74424f8020000004d89f64d8974240849c70424030000004c8bb424880000004d8b364983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b9c24880000004d89334c8b7424684d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264c8b6424684d8934244c8b7424604d8b264c8bb424880000004d8b364d3be67e054d89e6eb004c8b6424604d8934244d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062f00000041564c8b7424504c89f34983fe0175054989c6eb09ff1535cb00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c23800488d64245848b84042d4f1c27f0000488b5d08ff236a016a016a014c8b8c24800000004c8b5424784c8bb424880000004c8b6c24704156ff742440ff7424404155488b442438488d5c24204c8b442460ff15a2ca0000ff3424ff742410ff7424204c8bb424800000004d8b66f849c1e40849c1ec074983cc014c8b7424404d89f54d3bf47215488d64246848b89011d1f1c27f0000488b5d08ff234c8bb424800000004d89ed4f8b74aefc4c8b5c24584d8b63f849c1e40849c1ec074983cc014d89ed4d89e94d3bec7215488d64246848b81011d1f1c27f0000488b5d08ff234d89c94d89db4f8b6c8bfc4d8b55004d89d44983fa037515488d64246848b8c842d4f1c27f0000488b5d08ff234983fc0175094d8b6d08e9c90000004c8b5424504d8b2a4d89ec4d89d24983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d24d89224c8b5424484d8b024d8d67e84c3b65107306ff5550ca006f4d89e749c74424f8020000004d894424084d8934244d89d24d89224d8d67e84c3b65107306ff5550ca006a4d89e749c74424f8020000004d896c240849c70424010000004d89db4d8b43f849c1e00849c1e8074983c8014d89c94d89ca4d3bc87215488d64246848b80017d1f1c27f0000488b5d08ff234d89db4d89d24f896493fc41554c8b6424384d8b2c244983fd070f85880200004d89e44d8b6c24184d8b6d004983fd09750949c7c503000000eb0749c7c5010000004983fd030f855c0200004d89e44d89e541ff7424084d89ed41ff75204c8b6424504d89e54983fc07750949c7c507000000eb194d89ed4983fd09750949c7c507000000eb0749c7c50b00000041556a016a014983fe07751c49be60bed1f1c27f00004d8b2e4c892c244d8b76084c89742408eb244983fe050f85d001000049bee05fd1f1c27f00004d8b2e4c892c244d8b76084c897424084c8b2424ff7424084c8bb424880000004d89f541ff364d89ed4d8b75004983c6027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8bac24880000004d8b5d004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d89ed4d8975004c8bb424e0000000498b06488b5c24304c8b442428ff15aac700004989c64c8bac24e00000004d8975004d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424284d8975104c8b7424304d89750849c74500010000004d8d5fd84c3b5d107306ff5550ca00204d89df49c743f8040000004c8b7424084d8973184c8b24244d89e64d8963104d896b084c8b6c24204d89ec4d892b4c8bac24e00000004d8b55004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d895d004c8b9c24e00000004d892b4d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24384d895d184d89e44d8965104d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c428eb1f488da4249800000048b85043d4f1c27f0000488b5d08ff2349c7c60100000041564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24204d896e184c8b6c24484d896e104c8b6c24084d896e0849c7062100000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff1501c600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2410eb0e488b442410ff15b3c500004889c34883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff257fc500004d8b6e0841ff761041ff761841ff76206a016a0141f6c5010f851b01000041ff75004c8b7424404d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64245048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24504d89eb41ff75004d89db4d8b2b4983c5027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24504d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a80000004d8b6d00e9866b00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9056b0000488d64246848b83840d4f1c27f0000488b5d08ff2349beb05fd1f1c27f00004d8b2e4c892c244d8b76084c89742408e933690000498b460841ff76106a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15dcc30000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c70625000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff2557c3000041ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24284d89eb41ff75004d89db4d8b2b4983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24284d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24800000004d8b6d00e94d6400004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98f630000488d64244048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9445f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e94b5d0000488d64245848b83840d4f1c27f0000488b5d08ff234d8b5e084c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b840d4f1c27f0000488b5d08ff234d8b164d89d54983fa037515488d64242048b83841d4f1c27f0000488b5d08ff234983fd01750e488d6424184d8b6e08e9fd0000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b2a4d89ee4d89d24983c6027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d24d89324c8b14244d8b024d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89d24d8932488d6424104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241048b80017d1f1c27f0000488b5d08ff234d89e44f89749cfc488d6424084c8b7424184d8b1e4c8b7424384d8b366a016a01e9415900004d8b5e084c8b6424104d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b749cfc4c8b6c24484d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b6c24484f8b6c9dfc4983fd037515488d64242048b8b840d4f1c27f0000488b5d08ff234d8b164d89d54983fa037515488d64242048b83841d4f1c27f0000488b5d08ff234983fd01750e488d6424184d8b6e08e9fd0000004c8b7424384d8b76f849c1e60849c1ee074983ce014d3bde7215488d64242048b89011d1f1c27f0000488b5d08ff234c8b7424384f8b4c9efc4c8b5424084d8b2a4d89ee4d89d24983c6027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d24d89324c8b14244d8b024d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89d24d8932488d6424104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241048b80017d1f1c27f0000488b5d08ff234d89e44f89749cfc488d6424084c8b7424384d8b364983c6047115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b6424384d8934244c8b7424184d8b264d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bcb80bd1f1c27f00004d89264c8b6424184d8934244c8b7424104d8b264c8b7424384d8b364d3be67e054d89e6eb004c8b6424104d8934244d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7062d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c23800498b460841ff76106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff1551bc0000ff3424488b5c2410488b4424184883fb017502eb06ff152ebc00004c8b7424784d8b0e4c8b5c24204d8b134d89db4d8b43084c8b6424384d8b7424f849c1e60849c1ee074983ce014d3bd67215488d64244848b81011d1f1c27f0000488b5d08ff234d89e44f8b7494fc4d8b364983fe050f853e020000488b7c24304c8b374d89f54889ff4983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234889ff4c892f498d77f0483b75107306ff5550ca015f4989f748c746f8010000004c8906488b7c2428488b174d8d6fe84c3b6d107306ff5550cac55f4d89ef49c745f80200000049895508498975004889ff4c892f4d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d8975004d8d77e04c3b75107306ff5550ca013e4d89f749c746f8030000004d896e104d894e0849c706030000004d89e44d8b4c24f849c1e10849c1e9074983c9014d3bd17215488d64244848b80017d1f1c27f0000488b5d08ff234d89e44f897494fc4d8d67e84c3b65107306ff5550ca01284d89e749c74424f8020000004d89db4d89de4d895c240849c70424050000004d89f64d8b5e084c8b7424784d8b364983eb014d03f37115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b5c24784d89334c8b7424584d8b1e4d8d77e84c3b75107306ff5550ca01384d89f749c746f8020000004d895e084d89264c8b6424584d8934244c8b7424504d8b264c8b7424784d8b364d3be67e054d89e6eb004c8b6424504d8934244d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062f00000041564c8b7424404c89f34983fe0175054989c6eb09ff15c1b900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c23800488d64244848b8c843d4f1c27f0000488b5d08ff2341ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24284d89eb41ff75004d89db4d8b2b4983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24284d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24800000004d8b6d00e9714f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9b34e0000488d64244048b83840d4f1c27f0000488b5d08ff234d8b6e084d8b76104c8b6424504d8b04244d8b0e498b7e084c8b5424104d8b62f849c1e40849c1ec074983cc014d3bcc7215488d64242048b81011d1f1c27f0000488b5d08ff234d89d24f8b648afc4d8b24244983fc050f8511020000488b7424084c8b1e4d89dc4889f64983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234889f64c8926498d57f0483b55107306ff5550ca806f4989d748c742f80100000048893a488b3424488b0e4d8d67e84c3b65107306ff5550cac66f4d89e749c74424f80200000049894c2408498914244889f64c8926488d6424104d8d67e84c3b65107306ff5550ca806f4d89e749c74424f80200000049897c24084d891c244d8d5fe04c3b5d107306ff5550ca00774d89df49c743f8030000004d8963104d89430849c703030000004d89d24d8b42f849c1e00849c1e8074983c8014d3bc87215488d64241048b80017d1f1c27f0000488b5d08ff234d89d24f895c8afc488d6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703050000004d8b56084c8b7424384d8b364983ea014d03f27115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b5424384d89324c8b7424184d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b5c24184d89334c8b7424104d8b1e4c8b7424384d8b364d3bde7e054d89deeb004c8b5c24104d89334d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70633000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c23800488d64242048b8c843d4f1c27f0000488b5d08ff23488d64241858c2380041ff760841ff76104c8b7424204d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24304d89eb41ff75004d89db4d8b2b4983c5027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24304d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24880000004d8b6d00e9e44700004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98a460000488d64244848b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9434200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9dc400000488d64245048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9913c00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9983a0000488d64245848b83840d4f1c27f0000488b5d08ff2341ff7608498b46106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff151eb20000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15f8b100004989c641566a016a014c8b4c24784c8b9424880000004c8bb424900000004c8b6c24704c8b642468ff742448ff742448415641554154488b442460488d5c24284c8b442478ff15a5b100004c8b2c24ff7424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d896e0849c7063d00000041564c8b7424684c89f34983fe0175074c8b742420eb0e488b442420ff1544b100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c460c23800584c8b7424604c89b424980000004881c498000000ff25e5b000004d8b760841ff3641ff760841ff761041ff761841ff76204c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24484d89eb41ff75004d89db4d8b2b4983c5027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24484d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24a00000004d8b6d00e9ef3400004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9cb320000488d64246048b83840d4f1c27f0000488b5d08ff234d8b760841ff3641ff760841ff761041ff7618498b462041ff76286a016a014c8b8c24880000004c8b9424800000004c8bb424900000004c8b6c24784156ff742448ff7424484155488d5c24204c8b442468ff1556af0000ff3424ff7424104c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424404d89e54d3be37215488d64246848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9252e00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e93e2c0000488da4248000000048b83840d4f1c27f0000488b5d08ff2341ff7608498b461041ff76186a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff15e9ad0000415c584c8b34244d8b2e4d89f64d8b4e08488d6424084c8b7424184d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85fe0000004d8b6e084d8b5e104c8b7424584d8b164d89ce4983ee014d03f57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d2bd67115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c2014c8b34244d89f54983ee014d03d67115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d89ed4d896e08488d64240849c7064300000041564c8b7424204c89f34983fe0175054989c6eb09ff15bbac00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c23800488d6424284d89ee4983fe01751048b85044d4f1c27f0000488b5d08ff2348b8d044d4f1c27f0000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e92b2600004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e908240000488d64245048b83840d4f1c27f0000488b5d08ff234d8b760841ff364d8b5e0841ff7610498b461841ff76204c8b6424284d8b7424f849c1e60849c1ee074983ce014d3bde7215488d64243848b81011d1f1c27f0000488b5d08ff234d89e44f8b749cfc4c8b6c24604d8b6df849c1e50849c1ed074983cd014d3bdd7215488d64243848b89011d1f1c27f0000488b5d08ff234c8b6c24604f8b6c9dfc4983fd037515488d64243848b8b840d4f1c27f0000488b5d08ff234d8b164d89d54983fa037515488d64243848b83841d4f1c27f0000488b5d08ff234983fd0175094d8b7608e9f60000004c8b7424504d8b76f849c1e60849c1ee074983ce014d3bde7215488d64243848b89011d1f1c27f0000488b5d08ff234c8b7424504f8b4c9efc4c8b5424204d8b324d89f54d89d24983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89d24d892a4c8b5424184d8b024d8d6fe84c3b6d107306ff5550ca015f4d89ef49c745f8020000004d8945084d894d004d89d24d892a4d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d89750849c74500010000004d89e44d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64243848b80017d1f1c27f0000488b5d08ff234d89e44f896c9cfc41564c8b74247041ff366a016a014c8b8c24880000004c8b9424800000004c8bb424900000004c8b6c24784156ff742448ff7424484155ff742430ff742448488d5c24304c8b442478ff1514a90000ff3424ff7424106a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442470488d5c24204c8b842488000000ff15bda80000ff34244c8b7424104d8d6fc84c3b6d107306ff5550ca00404d89ef49c745f8060000004c8b6424384d8965284c8b6424484d8965204c8b6424184d8965184c8b6424504d8965104c8b6424404d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064700000041564c8bb424800000004c89f34983fe017507488b5c2428eb0e488b442428ff1516a800004889c34883fb0175074c8b742408eb0e488b442408ff15f3a700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c480000000c23800498b460841ff76106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff1575a70000ff3424488b5c2410488b4424184883fb017502eb06ff1552a700004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24204d896e104c8b2c244d896e08488d64240849c7064900000041564c8b7424404c89f34983fe0175054989c6eb09ff15f8a600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041ff760841ff761841ff76204c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9881b00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e962190000488d64245048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e91b1500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9b4130000488d64245048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e96d0f00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9060e0000488d64245048b83840d4f1c27f0000488b5d08ff2341ff760841ff761041ff761841ff76204c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24404d89eb41ff75004d89db4d8b2b4983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24404d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24980000004d8b6d00e9bb0900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9c2070000488d64245848b83840d4f1c27f0000488b5d08ff23498b460841ff76106a016a014c8b4c24504c8b5424604c8b7424684c8b6c24484c8b642440ff742420ff742420415641554154488d5c24284c8b442450ff15e4a10000415d584d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b24244d896610488d6424204d896e0849c70653000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb017503c238004c8b34244c897424384883c438ff255fa1000041ff760841ff761041ff76184c8b7424284d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24384d89eb41ff75004d89db4d8b2b4983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24384d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24900000004d8b6d00e9bc0200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e96c010000488d64245048b83840d4f1c27f0000488b5d08ff2341ff7608498b46106a016a016a014c8b4c24704c8b5424684c8b7424784c8b6c24604156ff742430ff7424304155488d5c24204c8b442450ff15f69f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15d09f00004989c641566a016a014c8b4c24784c8b9424880000004c8bb424900000004c8b6c24704c8b642468ff742448ff742448415641554154488b442460488d5c24284c8b442478ff157d9f00004c8b2c24ff7424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d896e0849c7065700000041564c8b7424684c89f34983fe0175074c8b742420eb0e488b442420ff151c9f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c460c23800584c8b7424604c89b424980000004881c498000000ff25bd9e0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15979e00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff153b9e00004c8b2c24ff7424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424204d8966184c8b6424484d8966104d896e0849c7065500000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff15d19d00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff25729d000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2430ff15c09b00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e98dfbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15fc9900004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff15a5990000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff157f9900004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15179900004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7065100000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff159e9800004889c34883fb0175074c8b742420eb0e488b442420ff157b9800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff251698000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15649600004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15a09400004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff1549940000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15239400004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7064f00000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15b79300004889c34883fb0175074c8b742408eb0e488b442408ff15949300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15aa9100004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15e68f00004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff158f8f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15698f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7064d00000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15fd8e00004889c34883fb0175074c8b742408eb0e488b442408ff15da8e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15f08c00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff152c8b00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff15d08a00004c8b2c24ff7424084c8bb424b00000004d8b3641f6c6010f85800000004d8b1e4d8b66084d8b4b084d8b114983fa0575584d8b51084d8b49104c3b542448751c4c8b5424404d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00284d89f749c746f8010000004d891eeb1b4d89e6483b65187306ff5558ca0060e976ffffff49c7c6010000004983fe01750949c7c401000000eb274d8b364d8b76104d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24404d895e204c8b5c24204d895e184d8966104d896e0849c7064b00000041564c8b7424784c89f34983fe0175074c8b742420eb0e488b442420ff15908900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c470c23800584c8b7424704c89b424a80000004881c4a8000000ff253189000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff157f8700004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b7faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15bb8500004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff155f850000ff3424ff7424104c8bb424b8000000498b06488b5c24584c8b442448ff15358500004989c64c8bac24b80000004d8975004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24484d89ec4d896e104c8b6c24584d896e0849c706050000004d8d5fd84c3b5d107306ff5550ca00504d89df49c743f80400000049c74318030000004c8b5424284d89d54d8953104d89730849c7030b0000004c8bb424b80000004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b9c24b80000004d89334d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89e44d8966184d89ed4d896e104c8b6c24084d896e0849c7064500000041564c8bb424800000004c89f34983fe0175074c8b742428eb0e488b442428ff151a8400004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c478c23800584c8b7424784c89b424b00000004881c4b0000000ff25bb83000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff15098200004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9bafaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15458000004989c641566a016a016a014c8bb424e00000004c8bac24d800000041564155488b842480000000488d5c24104c8b8424a80000004c8b8c24a00000004c8b942498000000ff15f37f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15cd7f00004989c641564c8b7424704983fe0375224c8bb424f0000000498b06ff15a47f00004989c64c8bac24f00000004d897500eb004d8d6fc84c3b6d107303ff55504d89ef49c745f8060000004c8b7424704d8975284c8b7424584d8975204c8b7424784d8975184c8b7424084d8975104c8bb424880000004d8975084c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064100000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff15ef7e00004889c34883fb017507488b5c2430eb0e488b442430ff15cc7e00004889c34883fb0175074c8b742408eb0e488b442408ff15a97e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442460750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2470ff15b67c00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424704d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9edfaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15f27a00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b442460488d5c24204c8b842498000000ff159b7a0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15757a00004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842490000000488d5c24284c8b8424c0000000ff150d7a00004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004c8b6424204d8965204d8975184c8b7424484d8975104c8bb424800000004d8975084c8bb424880000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7063f00000041564c8bb424b00000004c89f34983fe017507488b5c2448eb0e488b442448ff15697900004889c34883fb0175074c8b742420eb0e488b442420ff15467900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a8000000c23800584c8bb424a80000004c89b424e00000004881c4e0000000ff25e178000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2440ff152f7700004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b9faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff156b7500004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff1514750000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15ee7400004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15867400004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7063b00000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff150d7400004889c34883fb0175074c8b742420eb0e488b442420ff15ea7300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff258573000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15d37100004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff150f7000004989c641566a016a016a014c8b8c24a80000004c8b9424a00000004c8bb424b00000004c8bac24980000004156ff742468ff7424684155488b442468488d5c24204c8b842488000000ff15b86f0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15926f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24504d896e184c8b6c24084d896e104c8b6c24304d896e0849c7063900000041564c8bb424880000004c89f34983fe017507488b5c2430eb0e488b442430ff15266f00004889c34883fb0175074c8b742408eb0e488b442408ff15036f00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c488000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2440ff15196d00004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e976fbffffff3424488b5c2410488b4424184883fb017502eb06ff15586b00004c8bb424800000004d8b364983fe01750949c7c601000000eb604c8bb424800000004d8b364d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f80300000049c74510010000004d89750849c74500350000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e41564d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24284d896e104c8b6c24084d896e0849c7063700000041564c8b7424584c89f34983fe0175054889c3eb09ff15866a00004889c34883fb0175074c8b742408eb0e488b442408ff15636a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c458c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff157c6800004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e983fbffffff3424488b5c2410488b4424184883fb017502eb06ff15bb6600004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7063100000041564c8b7424404c89f34983fe0175054989c6eb09ff156a6600004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24784d8b1b4d2bda7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424384d89f541ff364d89ed4d8b75004983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24384d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42490000000498b06488b5c2430ff15866400004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e922fcffff41f6c3010f85fb0100004d8b134d8b63084d8b024d89c14983f80375324d89f24983ea027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89e3483b65187306ff5558ca0068ebb14983f90575404d8b52084d8b4a084d89f24d2bd17115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c2014d89d64d89e3483b65187306ff5558ca0068e96bffffff4983ee047115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8924244c89742408415c415e4c8b5c24184d89234c8b6424384d8b24244c8b5c24384d89334d89f34983c3047115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d3be30f848b0000004d2be67115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983ec037115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c70635000000498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8930eb0748c7c0010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7062b00000041564c8b7424084c89f34983fe0175054989c6eb09ff15106100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c23800488d64241848b85045d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15a06000004989c641566a016a016a014c8b8c24b00000004c8b9424a80000004c8bb424b80000004c8bac24a00000004156ff742470ff7424704155488b442468488d5c24204c8b842490000000ff1549600000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15236000004989c641566a016a014c8b8c24b80000004c8b9424c80000004c8bb424d00000004c8bac24b00000004c8ba424a8000000ffb42488000000ffb42488000000415641554154488b842488000000488d5c24284c8b8424b8000000ff15bb5f00004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24204d896e184c8b6c24484d896e104c8bac24800000004d896e0849c7062900000041564c8bb424a80000004c89f34983fe017507488b5c2448eb0e488b442448ff15425f00004889c34883fb0175074c8b742420eb0e488b442420ff151f5f00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a0000000c23800584c8bb424a00000004c89b424d80000004881c4d8000000ff25ba5e000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15085d00004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e4faffffff3424488b5c2410488b4424184883fb017502eb06ff15475b00004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e08488d64240849c7062700000041564c8b7424404c89f34983fe0175054989c6eb09ff15f65a00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24784d8b1b4d2bda7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424384d89f541ff364d89ed4d8b75004983c6027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24384d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42490000000498b06488b5c2430ff15125900004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e922fcffffff3424ff7424106a016a016a014c8bb424a80000004c8bac24a000000041564155488b442450488d5c24104c8b4424704c8b4c24684c8b542460ff152c570000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15065700004989c641566a016a014c8b8c24a80000004c8b9424b80000004c8bb424c00000004c8bac24a00000004c8ba42498000000ff742478ff742478415641554154488b842490000000488d5c24284c8b8424a8000000ff15a45600004c8b2c24ff7424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424604d8966204c8b6424204d8966184d896e104c8b6c24484d896e0849c7062300000041564c8bb424980000004c89f34983fe017507488b5c2448eb0e488b442448ff152e5600004889c34883fb0175074c8b742420eb0e488b442420ff150b5600004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c490000000c23800584c8bb424900000004c89b424c80000004881c4c8000000ff25a6550000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15805500004989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d896500488d6424084c896c24204c897424284883c420e906feffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24a00000004d8b1b4d2bda7115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64247048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424604d89f541ff364d89ed4d8b75004983c6027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24604d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b8000000498b06488b5c2430ff158d5300004989c64c8bac24b80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e959fcffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15c95100004989c641564c8b7424504d8b5ef849c1e30849c1eb074983cb014c8b6424384d89e54d3be37215488d64246048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24604d89eb41ff75004d89db4d8b2b4983c5027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24604d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24b80000004d8b6d00e9cb0500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb15488d64247848b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15865000004989c641564c8b7424784d8b5ef849c1e30849c1eb074983cb014c8b6424584d89e54d3be37218488da4248800000048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24880000004d89eb41ff75004d89db4d8b2b4983c5027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b9c24880000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e00000004d8b6d00e92a0100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a000000048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15374f00004989c641564d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b6c24584d896e184c8b6c24084d896e104c8b6c24304d896e0849c7061d00000041564c8bb424b00000004c89f34983fe017507488b5c2458eb0e488b442458ff15cb4e00004889c34883fb017507488b5c2430eb0e488b442430ff15a84e00004889c34883fb0175074c8b742408eb0e488b442408ff15854e00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b0000000c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442478750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24d80000004d8b1b4d2bda7118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424980000004d89f541ff364d89ed4d8b75004983c6027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8bac24980000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f0000000498b06488b9c2488000000ff15894c00004989c64c8bac24f00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424880000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b3fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442458750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b00000004d8b1b4d2bda7118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424704d89f541ff364d89ed4d8b75004983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24704d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424c8000000498b06488b5c2468ff152d4900004989c64c8bac24c80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424684d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24c80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424c80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e91bf7ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2430ff15dd4500004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e998f2ffffff3424488b5c2410488b4424184883fb017502eb06ff151c4400004c8b6424404d8b6c24f849c1e50849c1ed074983cd014c8b7424204d89f34d3bf57215488d64245048b81011d1f1c27f0000488b5d08ff234d89db4d89e44f8b6c9cfc4c8b7424784d8b56f849c1e20849c1ea074983ca014d89db4d89de4d3bda7215488d64245048b89011d1f1c27f0000488b5d08ff234c8b5c24784d89f64f8b5cb3fc4983fb037515488d64245048b8b840d4f1c27f0000488b5d08ff234d8b55004d89d34983fa037515488d64245048b83841d4f1c27f0000488b5d08ff234983fb0175094d8b6d08e9060100004c8b6c24684d8b6df849c1e50849c1ed074983cd014d89f64d89f24d3bf57215488d64245048b89011d1f1c27f0000488b5d08ff234c8b7424684d89d24f8b4c96fc4c8b5c24384d8b2b4d89ee4d89db4983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89db4d89334c8b5c24304d8b034d8d77e84c3b75107306ff5550ca013f4d89f749c746f8020000004d8946084d890e4d89db4d89334d8d77e84c3b75107306ff5550ca01344d89f749c746f8020000004d896e0849c706010000004d89e44d8b4c24f849c1e10849c1e9074983c9014d89d24d89d34d3bd17215488d64245048b80017d1f1c27f0000488b5d08ff234d89e44d89db4f89749cfc4d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7061900000041564c8b7424484c89f34983fe0175054989c6eb09ff15ef4100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c448c2380041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff15084000004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e943faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15443e00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b842480000000488d5c24204c8b842498000000ff15ea3d0000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15c43d00004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842490000000488d5c24284c8b8424c0000000ff155c3d0000ff3424ff7424106a016a014c8b8c24e00000004c8b9424f00000004c8bb424f80000004c8bac24d80000004c8ba424d0000000ffb424b0000000ffb424b0000000415641554154488b8424a8000000488d5c24284c8b8424e0000000ff15f23c00004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b7424204d8975184c8bb424980000004d8975104c8b7424684d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061500000041564c8bb424d00000004c89f34983fe017507488b5c2468eb0e488b442468ff15513c00004889c34883fb0175074c8b742440eb0e488b442440ff152e3c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2418eb0e488b442418ff15e03b00004889c34883fb01750b584881c4c8000000c23800584c8bb424c80000004c89b424000100004881c400010000ff25a63b000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2448ff15f43900004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e93cfaffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15303800004989c641564c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64246848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9e00500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da4248000000048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15ea3600004989c641564c8bb424800000004d8b5ef849c1e30849c1eb074983cb014c8b6424604d89e54d3be37218488da4249000000048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24900000004d89eb41ff75004d89db4d8b2b4983c5027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b9c24900000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e80000004d8b6d00e9360100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a800000048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15983500004989c641564d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24304d896e204c8b6c24584d896e184c8b6c24084d896e104c8bac24900000004d896e0849c7061100000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff15203500004889c34883fb017507488b5c2430eb0e488b442430ff15fd3400004889c34883fb0175074c8b742408eb0e488b442408ff15da3400004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c501756b4d8b4d004d8b5d084d8b4108498b384883ff0375454d8b40084c3b842480000000750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb8f49c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24e00000004d8b1b4d2bda7118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424a00000004d89f541ff364d89ed4d8b75004983c6027118488da424c000000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8bac24a00000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f8000000498b06488b9c2490000000ff15db3200004989c64c8bac24f80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424900000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9a4fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442448750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2458ff157f2f00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e909f7ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2438ff152f2c00004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e983f2ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff156b2a00004989c641566a016a014c8b8c24880000004c8b9424980000004c8bb424a00000004c8bac24800000004c8b642478ff742458ff742458415641554154488b442470488d5c24284c8b842488000000ff150f2a0000ff3424ff7424104c8bb424a80000004d8b6ef849c1e50849c1ed074983cd014c8b7424584c89f34d3bf57218488da4248000000048b89011d1f1c27f0000488b5d08ff234c8bb424a80000004889db4d8b749efc4983fe037505e9e30100004c8b7424484d89f54983fe050f84d10100004c8b7424684d89f441ff364d89e44d8b34244983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89e44d8934244c8b6424684d8b1c244d8d77e84c3b75107306ff5550ca08384d89f749c746f8020000004d895e0849c706030000004d89e44d8934244d89ed4d89ee4983fd03750949c7c607000000eb194d89f64983fe05750949c7c607000000eb0749c7c60b00000041564c8bb424c8000000498b06ff15e82800004989c64c8bac24c80000004d8975004d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424684d89750849c74500010000004d8d5fd84c3b5d107306ff5550ca00204d89df49c743f80400000049c74318030000004c8b6424084d89e64d8963104d896b084c8b2c244d89ec4d892b4c8bac24c80000004d8b55004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d895d004c8b9c24c80000004d892b4d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24384d895d184d89e44d896510488d6424084d89f64d897508488d64240849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb0749c7c60100000041564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b6c24504d896e184c8b6c24304d896e104c8b6c24104d896e0849c7060f00000041564c8bb424880000004c89f34983fe0175074c8b742430eb0e488b442430ff154d2700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017507488b5c2408eb0e488b442408ff15ff2600004889c34883fb01750b584881c480000000c23800584c8bb424800000004c89b424b80000004881c4b8000000ff25c526000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24880000004d8b1b4d2bda7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24484d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a0000000498b06488b5c2438ff15132500004989c64c8bac24a00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e91cf9ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff154f2300004989c641564c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424304d89e54d3be37215488d64246848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85890000004d8b56084d8b66104d8b7424084c8b6c24684d89eb41ff75004d89db4d8b2b4983c5027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24684d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24c00000004d8b6d00e9fd0500004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da4248000000048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15092200004989c641564c8bb424800000004d8b5ef849c1e30849c1eb074983cb014c8b6424684d89e54d3be37218488da4249000000048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858f0000004d8b56084d8b66104d8b7424084c8bac24900000004d89eb41ff75004d89db4d8b2b4983c5027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b9c24900000004d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24e80000004d8b6d00e9530100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb18488da424a800000048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15b72000004989c641564c8bb424f0000000498b06ff15992000004989c64c8bac24f00000004d8975004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24784d896e204c8b6c24304d896e184c8b6c24584d896e104c8b6c24084d896e0849c7060d00000041564c8bb424b80000004c89f34983fe017507488b5c2458eb0e488b442458ff151a2000004889c34883fb017507488b5c2430eb0e488b442430ff15f71f00004889c34883fb0175074c8b742408eb0e488b442408ff15d41f00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4b8000000c2380041f6c501756b4d8b4d004d8b5d084d8b4108498b384883ff0375454d8b40084c3b842488000000750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb8f49c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24e00000004d8b1b4d2bda7118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb424a00000004d89f541ff364d89ed4d8b75004983c6027118488da424c000000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8bac24a00000004d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424f8000000498b06488b9c2498000000ff15d51d00004989c64c8bac24f80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424980000004d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24f80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424f80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e987fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442450750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24b80000004d8b1b4d2bda7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424784d89f541ff364d89ed4d8b75004983c6027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24784d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424d0000000498b06488b5c2460ff15791a00004989c64c8bac24d00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424604d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24d00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424d00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9ecf6ffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24900000004d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424504d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24504d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424a8000000498b06488b5c2440ff15291700004989c64c8bac24a80000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24a80000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424a80000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e966f2ffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc448c7c301000000492bde7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c3014c8b4424184c8b4c24104c8b542408ff150d1500004989c641566a016a01ff742418ff35f2140000f6442408010f85360100004c8b6c24084d8b75004d89ed41ff7508498b0641ff76084c8b6c24104d89ee41ff75004d89f641ff76086a016a014c8b8c24980000004c8b9424a80000004c8bb424b00000004c8bac24900000004c8ba42488000000ff742468ff742468415641554154488d5c24284c8b842498000000ff1568140000415e584d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424104d8965084d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424084d8966084d892e41564c8b7424084c89f34983fe0175054989c6eb09ff15f31300004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d6424084c8b6c24184c896424204c896c2428483b65187303ff55584883c420e9bffeffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6c2408488b4424104d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004c8b6424184d8966104d896e0849c70609000000498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c8b6c24404c896b084c89334883fb017508488d642448c23800488d6424484c8b34244c897424384883c438ff25f6120000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15d01200004989c641564c8b7424484d8b5ef849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64245848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f85860000004d8b56084d8b66104d8b7424084c8b6c24584d89eb41ff75004d89db4d8b2b4983c5027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89db4d892b4c8b5c24584d8b0b4d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d0849c74500070000004d89db4d892b4c8bac24b00000004d8b6d00e9030100004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb15488d64247048b83840d4f1c27f0000488b5d08ff23ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15901100004989c64983fe010f858c0000004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424084c8b6c24204d896e0849c7060700000041564c8b7424704c89f34983fe0175074c8b742420eb0e488b442420ff15241100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c470c23800488d64247848b8d845d4f1c27f0000488b5d08ff2341f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442448750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24a80000004d8b1b4d2bda7115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424684d89f541ff364d89ed4d8b75004983c6027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24684d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424c0000000498b06488b5c2458ff15250f00004989c64c8bac24c00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24c00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424c00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9e9fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442428750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2438ff15d50b00004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e969f7ffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff15110a00004989c641566a016a016a014c8b8c24b80000004c8b9424b00000004c8bb424c00000004c8bac24a80000004156ff742478ff7424784155488b442468488d5c24204c8b842498000000ff15ba090000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15940900004989c641566a016a014c8b8c24c00000004c8b9424d00000004c8bb424d80000004c8bac24b80000004c8ba424b0000000ffb42490000000ffb42490000000415641554154488b842488000000488d5c24284c8b8424c0000000ff152c0900004c8b3424ff7424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b7424204d8975184c8b7424484d8975104c8bb424800000004d8975084c8bb424880000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424b00000004c89f34983fe017507488b5c2448eb0e488b442448ff15880800004889c34883fb0175074c8b742420eb0e488b442420ff15650800004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb01750b584881c4a8000000c23800584c8bb424a80000004c89b424e00000004881c4e0000000ff250008000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442430750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24980000004d8b1b4d2bda7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424584d89f541ff364d89ed4d8b75004983c6027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24584d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb424b0000000498b06488b5c2440ff154e0600004989c64c8bac24b00000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424404d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24b00000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424b00000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9b9faffffff3424488b5c2410488b4424184883fb0175054989c6eb09ff158a0400004989c641566a016a014c8b8c24800000004c8b9424900000004c8bb424980000004c8b6c24784c8b642470ff742450ff742450415641554154488b442468488d5c24284c8b842480000000ff15310400004c8b2c24ff7424084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424204d8966104d896e0849c7060300000041564c8b7424704c89f34983fe0175074c8b742420eb0e488b442420ff15c80300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb017508584883c468c23800584c8b7424684c89b424a00000004881c4a0000000ff256903000041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442420750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b9c24800000004d8b1b4d2bda7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8b7424404d89f541ff364d89ed4d8b75004983c6027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d8975004c8b6c24404d8b65004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d89ed4d8975004c8bb42498000000498b06488b5c2430ff15b70100004989c64c8bac24980000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24980000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424980000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e991fbfffff4|@15856,1,@2256,@7088,@7089,@7090,@7087,@7091,@7092,@7093,@7094,@7095,@7087,@7096,@7097,@7113,@7114,@7115,@7116,@7117,@7118,@7119,@7120,@7087,@10542,@7121,@7122,@7123,@7124,@7125,@7126,@7127,@7128,@7129,@7130,@7131,@7132,@7133,@7134,@7135,@7136,@7087,@7137,@7138,@7139,@7140,@7141,@7142,@7143,@7144,@7145,@7146,@7147,@7148,@7149,@7150,@7151,@7087,@7087,@7152,@7097,@7153,@7154,@7155,@7156,@7157,@7158,@7159,@7160,@7161,@7162,@7163,@7164,@7165,@7166,@7167,@7168,@7169,@7170,@7087,@7171,@7106,@7172,@7173,@7174,@7175,@7176,@7177,@7178,@7087,@7179,@7097,@7180,@7181,@7182,@7183,@7184,@7185,@7186,@7187,@7188,@7189,@7190,@7191,@7192,@7097,@7193,@7194,@7195,@7196,@7197,@7087,@7198,@7097,@7199,@7200,@7201,@7202,@7203,@7087,@7204,@7097,@7205,@7206,@7207,@7208,@7209,@7210,@7211,@7106,@7212,@7213,@7214,@7215,@7216,@7087,@7217,@7218,@7219,@7220,@7087,@7221,@7222,@7223,@7224,@7225,@7097,@7226,@7227,@7228,@7229,@7230,@7097,@7231,@7232,@7233,@7234,@7235,@7087,@7236,@7097,@7237,@7238,@7239,@7240,@7087,@7241,@7242,@7243,@7087,@7244,@7097,@7245,@7087,@7246,@7247,@7097,@7248,@7249,@7250,@7253,@7257,@7258,@7258,@7263,@7264,@7087,@7265,@7097,@7266,@7267,@7097,@7268,@7087,@7269,@7270,@7271,@7272,@7097,@7273,@7274,@7097,@7275,@7276,@7277,@7278,@7281,@7286,@7287,@7288,@7087,@7289,@7292,@7295,@7087,@7296,@7087|666,0,@9995 757,0,@9475 891,0,@15813 969,0,@9995 1060,0,@9475 1194,0,@15813 1257,0,@9995 1348,0,@9475 1482,0,@15813 1630,0,@9475 1687,0,@9995 1742,0,@9998 1779,0,@15816 1812,0,@15819 1874,0,@9998 1925,0,@9475 2064,0,@10034 2286,0,@15822 2357,0,@9995 2448,0,@9475 2582,0,@15813 2649,0,@9995 2740,0,@9475 2874,0,@15813 2945,0,@9995 3036,0,@9475 3170,0,@15813 3257,0,@9995 3348,0,@9475 3482,0,@15813 4072,0,@9995 4163,0,@9475 4297,0,@15813 4355,0,@14762 4421,0,@9995 4512,0,@9475 4646,0,@15813 4836,0,@9948 4927,0,@9475 5080,0,@9995 5141,0,@9998 5184,0,@15816 5220,0,@15819 5288,0,@9998 5345,0,@9475 5486,0,@10034 5810,0,@9998 5980,0,@9995 6046,0,@9475 6107,0,@10468 6259,0,@10034 6355,0,@9475 6607,0,@15825 6741,0,@9998 6810,0,@9995 6855,0,@15828 6911,0,@9475 7060,0,@10034 7230,0,@11193 7268,0,@10544 7337,0,@9475 7740,0,@15831 8043,0,@9995 8134,0,@9475 8268,0,@15813 8284,0,@10542 8549,0,@9995 8640,0,@9475 8774,0,@15813 8845,0,@9995 8936,0,@9475 9070,0,@15813 9122,0,@9995 9177,0,@9998 9214,0,@15816 9247,0,@15819 9314,0,@9998 9365,0,@9475 9507,0,@10034 9597,0,@9995 9652,0,@9998 9689,0,@15816 9722,0,@15819 9789,0,@9998 9840,0,@9475 9982,0,@10034 10030,0,@9475 10094,0,@9948 10379,0,@9995 10441,0,@9475 10649,0,@10034 10749,0,@9475 10995,0,@15834 11053,0,@9995 11144,0,@9475 11278,0,@15813 11349,0,@9995 11412,0,@9475 11627,0,@10034 11720,0,@9475 11921,0,@15834 11993,0,@9995 12084,0,@9475 12218,0,@15813 12285,0,@9995 12376,0,@9475 12510,0,@15813 12581,0,@9995 12672,0,@9475 12806,0,@15813 13227,0,@9995 13318,0,@9475 13452,0,@15813 13602,0,@9995 13696,0,@9475 13833,0,@15813 13966,0,@9995 14039,0,@9475 14065,0,@9475 14106,0,@9475 14274,0,@15837 14290,0,@15840 14357,0,@9995 14448,0,@9475 14582,0,@15813 14653,0,@9995 14708,0,@9998 14745,0,@15816 14778,0,@15819 14840,0,@9998 14891,0,@9475 15031,0,@10034 15730,0,@9995 15821,0,@9475 15955,0,@15813 16022,0,@9995 16113,0,@9475 16247,0,@15813 16314,0,@9995 16405,0,@9475 16539,0,@15813 16610,0,@9995 16701,0,@9475 16835,0,@15813 17093,0,@9995 17184,0,@9475 17318,0,@15813 18168,0,@9475 18198,0,@9475 18303,0,@9475 19476,0,@9475 19506,0,@9475 19611,0,@9475 20638,0,@9475 20668,0,@9475 20773,0,@9475 21800,0,@9475 21830,0,@9475 21935,0,@9475 23153,0,@9475 23183,0,@9475 23288,0,@9475 24503,0,@9475 24533,0,@9475 24638,0,@9475 25796,0,@9475 25829,0,@9475 25937,0,@9475 27153,0,@9475 27183,0,@9475 27288,0,@9475 28461,0,@9475 28491,0,@9475 28596,0,@9475 29623,0,@9475 29653,0,@9475 29758,0,@9475 30772,0,@9475 30802,0,@9475 30907,0,@9475 31762,0,@9475 31792,0,@9475 31897,0,@9475 32453,0,@9475 32516,0,@9475 32570,0,@9475 32638,0,@9475 32673,0,@9475 32700,0,@9475 32932,0,@15843 33608,0,@9475 33638,0,@9475 33743,0,@9475 34598,0,@9475 34628,0,@9475 34733,0,@9475 35944,0,@9475 35974,0,@9475 36082,0,@9475 36669,0,@9995 36763,0,@9475 36894,0,@15813 36987,0,@9995 37084,0,@9475 37221,0,@15813 37672,0,@9475 37705,0,@9475 37816,0,@9475 38533,0,@9475 38566,0,@9475 38674,0,@9475 39379,0,@9475 39409,0,@9475 39514,0,@9475 40094,0,@9995 40158,0,@9998 40198,0,@15816 40232,0,@15819 40300,0,@9998 40354,0,@9475 40498,0,@10034 40848,0,@9475 40878,0,@9475 40983,0,@9475 42324,0,@9475 42354,0,@9475 42459,0,@9475 43046,0,@9995 43140,0,@9475 43274,0,@15813 43370,0,@9995 43467,0,@9475 43604,0,@15813 44070,0,@9475 44103,0,@9475 44214,0,@9475 44931,0,@9475 44964,0,@9475 45072,0,@9475 45777,0,@9475 45807,0,@9475 45912,0,@9475 46591,0,@9998 46684,0,@9475 47541,0,@9475 47571,0,@9475 47676,0,@9475 48263,0,@9995 48357,0,@9475 48491,0,@15813 48587,0,@9995 48684,0,@9475 48821,0,@15813 49316,0,@9475 49349,0,@9475 49460,0,@9475 50177,0,@9475 50210,0,@9475 50318,0,@9475 51023,0,@9475 51053,0,@9475 51158,0,@9475 51695,0,@9475 51748,0,@9475 52366,0,@9995 52457,0,@9475 52588,0,@15813 52792,0,@15846 53000,0,@9475 53030,0,@9475 53138,0,@9475 53843,0,@9475 53873,0,@9475 53978,0,@9475 55194,0,@9475 55224,0,@9475 55329,0,@9475 56329,0,@9475 56359,0,@9475 56464,0,@9475 7084:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2253| 7085:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2254| 7086:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2255| 7087:D3,1072|483b65187306ff5558ca09074d8b70f849c1e60849c1ee074983ce01493bc6721048b81011d1f1c27f0000488b5d08ff234d8b7480fc4d8b69f849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b6481fc4d8b6af849c1e50849c1ed074983cd01493bc5721048b89011d1f1c27f0000488b5d08ff234d8b6c82fc4983fd030f859f0200004d8b364983fe050f85820200004c8b7424284d8b2e4c8b7424284d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24284d89334c8b7424204d8b1e4d8d77e84c3b75107306ff5550ca09394d89f749c746f8020000004d895e084d89264c8b6424204d8934244c8b7424284d8b364c8b6424284d8b24244983c402711048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24284d89234c8b6424204d8b1c244d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d895c240849bba854d1f1c27f00004d891c244c8b5c24204d89234d8d5fe84c3b5d107306ff5550ca09614d89df49c743f80200000049c74308030000004d89334c8b7424184d8b264d8d77e04c3b75107306ff5550ca09394d89f749c746f8030000004d895e104d89660849c706030000004d8b60f849c1e40849c1ec074983cc01493bc4721048b80017d1f1c27f0000488b5d08ff234d897480fc4d8d67e84c3b65107306ff5550ca09284d89e749c74424f802000000498944240849c70424030000004c8b7424184d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234c8b5424184d89324c8b7424104d8b164d8d77e84c3b75107306ff5550ca083c4d89f749c746f8020000004d8956084d89264c8b6424104d8934244c8b7424084d8b264c8b7424184d8b364d3be67e054d89e6eb004c8b6424084d8934244d8d77e84c3b75107306ff5550ca08284d89f749c746f8020000004d896e0849c706090000004d8d67e04c3b65107306ff5550ca08684d89e749c74424f8030000004d895c24104d8974240849c704242f0000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d89264c892b4c89730848c7c001000000c2280048b8b846d4f1c27f0000488b5d08ff234d8b1e4d89dd4983fb03751048b83847d4f1c27f0000488b5d08ff234983fd0175094d8b7608e9b50000004c8b7424284d8b364c8b6c24284d8b6d004983c502711048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24284d892b4c8b6c24204d8b5d004d8d6fe84c3b6d107306ff5550ca09594d89ef49c745f8020000004d895d084d8965004c8b6424204d892c244d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8b60f849c1e40849c1ec074983cc01493bc4721048b80017d1f1c27f0000488b5d08ff234d896c80fc4c893348c743080100000048c7c001000000c22800f400000000000000|@15873,1,@2466|35,0,@9995 77,0,@9998 119,0,@9998 185,0,@9475 283,0,@9475 349,0,@10468 480,0,@10034 556,0,@9475 805,0,@15850 833,0,@15853 887,0,@9475 1024,0,@10034 7088:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2257| 7089:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2258| 7090:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2259| 7091:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2260| 7092:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2261| 7093:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2262| 7094:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2263| 7095:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2264| 7096:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2265| 7097:D14,6400|488dbc2460ffffff483b7d187306ff5560ca0907534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e92b000000909090e947000000909090e964010000909090e980010000909090e9d0030000909090e9a1040000909090488d642418415e49890649c746080100000049c746100100000048c7c001000000c22000488d6424084c8b70084d8b2e4d8b5e084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64241848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b264d89e54983fc030f85a00000004d8b6e084d8b76104c8b24244d8b2424488d6424084983eb014d03eb7115488d64241048b8d0c6d0f1c27f0000488b5d08ff23488d6424084d2be57115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c4014d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c7450003000000415e4d892e49c746080100000049c746100100000048c7c001000000c22000488d6424184d89ee4983fe01751048b85044d4f1c27f0000488b5d08ff2348b8d044d4f1c27f0000488b5d08ff23488d642418415e49890649c746080100000049c746100100000048c7c001000000c22000ff7008ff7010ff7018ff70204c8b7424084d8b364983fe090f851d0100004c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858b0000004d8b56084d8b66104d8b7424084c8b6c247041ff75004c8b6c24784d8b6d004983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24784d892b4c8b6c24704d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b5c24704d892b4c8bac24800000004d8b6d00e9de1200004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e98a0d0000488d64245848b83840d4f1c27f0000488b5d08ff234c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc6a016a016a014d8b264d89e54983fc030f858b0000004d8b56084d8b66104d8b7424084c8b6c247041ff75004c8b6c24784d8b6d004983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24784d892b4c8b6c24704d8b5d004d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d895d0849c74500070000004c8b5c24704d892b4c8bac24800000004d8b6d00e93d0900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e90f080000488d64245848b83840d4f1c27f0000488b5d08ff23488d642408ff70084c8b7424104d8b5ef849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4d8b264d89e54983fc03751a4d8b56084d8b66104d8b6c24084c8b7424404d8b36e99a040000488d6424184983fd01754a4d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000415e4d892e49c746080100000049c746100100000048c7c001000000c22000488d64240848b81848d4f1c27f0000488b5d08ff234c8b48084c8b60104c8b701841ff364d8b2e4d8b46084c8b7424184d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85d80000004d8b6e084d8b5e104c8b7424104d8b164d89c64983ee014d03f57115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d2bd67115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c2014d89e64983ee014d03d67115488d64242848b8d0c6d0f1c27f0000488b5d08ff2341f6c10175594d8b294c8b7424084d8b4ef849c1e10849c1e9074983c9014d3be97215488d64242848b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4983fe03750c49c7c601000000e90c0300004c8b7424484d8b36e95902000049c7c601000000eb2e488d6424284d89ee4983fe01751048b85044d4f1c27f0000488b5d08ff2348b8d044d4f1c27f0000488b5d08ff234d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d895d184d8965104d89750849c745000b000000415541f6c6010f859101000041ff364c8b74245041ff364c8b7424584d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24584d8975004c8b7424504d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24504d8975004c8b742460498b06488b5c2418ff154a1200004989c64c8b6c24604d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24604d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424604d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424084d89651849c745100b0000004d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb264c8b742450498b06488b5c2408ff151f1100004989c64c8b6c24504d89750049c7c6010000004c8b6c24284c8b24244d896500488d64240849c74508010000004d89751048c7c0010000004883c428c2200041f6c60175654d8b0e4d8b6e084d8b4108498b384883ff0375404d8b40084c3b0424750949c7c003000000eb0749c7c0010000004983f80375204d8d77f04c3b75107306ff5550ca001e4d89f749c746f8010000004d890eeb184d89ee483b65187306ff5558ca005ceb9549c7c6010000004983fe01750949c7c601000000eb254d8b364d8b6e104d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d892ee933fdffff41f6c60175654d8b0e4d8b5e084d8b4108498b384883ff0375404d8b40084c3b0424750949c7c003000000eb0749c7c0010000004983f80375204d8d77f04c3b75107306ff5550ca00364d89f749c746f8010000004d890eeb184d89de483b65187306ff5558ca0074eb9549c7c6010000004983fe01750949c7c601000000eb254d8b364d8b5e104d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d891e4c8b5c24084d8b1b4d2bda7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bdd7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89651849c74510010000004d89750849c745000b000000415541f6c6010f859101000041ff364c8b74244841ff364c8b7424504d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24504d8975004c8b7424484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24484d8975004c8b742458498b06488b5c2418ff157f0e00004989c64c8b6c24584d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24584d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424584d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424084d89651849c745100b0000004d89f64d897508488d64241049c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb0749c7c6010000004c8b6c24204c8b24244d896500488d64240849c74508010000004d89751048c7c0010000004883c420c22000ff3424ff742410ff7424206a016a016a014c8b8c24a00000004c8b9424980000004c8bb424a80000004156ff742478488b442460488d5c24104c8b842488000000ff15ed0c00004c8b2c24488b5c2408ff7424104d8d77d04c3b75107306ff5550ca08204d89f749c746f8050000004c8b6424504d8966204d896e1849c74610010000004c8b6c24304d896e0849c7060700000041564883fb0175074c8b742430eb0e488b442430ff157e0c00004989c641564c8b7424104c89f34983fe0175074c8b742430eb0e488b442430ff15510c00004989c64c8bac24980000004c8b6424084d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c490000000c2200041f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24484d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb4248000000041ff364c8bb424880000004d8b364983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8bac24880000004d8975004c8bb424800000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8bac24800000004d8975004c8bb42490000000498b06488b5c2448ff155c0a00004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e9a2fbffff4c8b2424ff742408ff742418f64424380175614c8b7424384d8b2e4c8b7424484d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64246848b89011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4983fe03750c49c7c601000000e9c60400004c8bb424880000004d8b36e9cc0300004c8b7424704983fe0375104c8bb424880000004d8b36e9c202000049c7c6010000004983fe01750949c7c301000000eb254d8b2e4d8b6d004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424284d89d04d89552049ba58a4d3f1c27f00004d8955184d895d104d89650849c7450007000000415541f6c6010f85c20100004d8b3641ff3641ff760841ff76104c8b6c24084983f5024c8bb424a000000041ff364c8bb424a80000004d8b364983c6027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234c8ba424a80000004d8934244c8bb424a00000004d8b264d8d77e84c3b75107306ff5550ca00314d89f749c746f8020000004d8966084d892e4c8bac24a00000004d8975004c8bb424b0000000498b06488b5c2468ff15f50600004989c64c8bac24b00000004d8975004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24504d896e104c8b6c24684d896e0849c706010000004d8d5fd84c3b5d107306ff5550ca00404d89df49c743f8040000004c8b6c24104d896b184c8b24244d89e54d8963104d8973084c8b7424084d89f44d89334c8bb424b00000004d8b164d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4c8b9c24b00000004d89334d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24184d895e184d89e44d8966104d89ed4d896e08488d64242049c70613000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8933eb2c4c8bb42490000000498b06488b5c2448ff15bb0500004989c64c8bac24900000004d89750048c7c3010000004883fb0175074c8b742408eb0e488b442408ff15850500004989c64c8b6c24684c8b24244d896500488d6424084c8b6424084d8965084d89751048c7c0010000004883c468c2200041f6c601757a4d8b1e4d8b6e084d8b53084d8b0a4983f90175554d8b4a084d8b52104c3b4c244075194c3b542428750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050eb8049c7c6010000004983fe01750949c7c601000000eb544d8b2e4d8b55004d8b75104d8b5d184d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892ee956fcffff41f6c601757a4d8b1e4d8b6e084d8b53084d8b0a4983f90175554d8b4a084d8b52104c3b4c244075194c3b542428750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0050eb8049c7c6010000004983fe01750949c7c601000000eb544d8b2e4d8b55004d8b75104d8b5d184d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8975004d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d892ee967fbffff41f6c50175684d8b4d004d8b5d084d8b4108498b384883ff0375424d8b40084c3b442438750949c7c003000000eb0749c7c0010000004983f80375214d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f8010000004d894d00eb184d89dd483b65187306ff5558ca0074eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f8010000004d895d004c8b5c24484d8b1b4d2bda7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b00000041564c8bb4248000000041ff364c8bb424880000004d8b364983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234c8bac24880000004d8975004c8bb424800000004d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8bac24800000004d8975004c8bb42490000000498b06488b5c2448ff15b80100004989c64c8bac24900000004d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424484d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8bac24900000004d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8ba424900000004d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e97cf7fffff400|@15860,1,@2266,@7099,@7100,@7101,@7102,@7103,@7104,@7105,@7106,@7111,@7112,@7098|178,0,@9995 253,0,@9475 284,0,@9475 392,0,@15837 408,0,@15840 529,0,@9995 620,0,@9475 759,0,@15813 814,0,@9995 905,0,@9475 1044,0,@15813 1106,0,@9995 1261,0,@15857 1330,0,@9995 1403,0,@9475 1429,0,@9475 1466,0,@9475 1522,0,@9998 1600,0,@15837 1616,0,@15840 1725,0,@9475 2533,0,@9475 2563,0,@9475 2680,0,@9475 3556,0,@9475 3586,0,@9475 3695,0,@9475 4278,0,@9998 4461,0,@14742 4562,0,@9475 5736,0,@9475 5766,0,@9475 5875,0,@9475 7098:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2281| 7099:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2267| 7100:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2268| 7101:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@9893,1,@2269| 7102:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@9893,1,@2270| 7103:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2271| 7104:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2272| 7105:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2273| 7106:D7,4584|483b65187306ff5558ca0907534c8b284d89ee4983fd070f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9ed0d00004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e97d0d0000488d64242848b83840d4f1c27f0000488b5d08ff234d89f54983fe050f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9820900004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e912090000488d64242848b83840d4f1c27f0000488b5d08ff234d89ee4983fd030f85f4000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9170500004983fd01751f4d8b76084c89342448c74424080100000048c744241001000000e9a7040000488d64242848b83840d4f1c27f0000488b5d08ff234983fe010f85f1000000ff70084d8b60f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234d89f64f8b74b0fc6a016a016a014d8b264d89e54983fc03756c4d8b46084d8b66104d8b74240841ff314d8b294983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89294d8b1a4d8d6fe84c3b6d107306ff5550ca005f4d89ef49c745f8020000004d895d0849c74500070000004d892a4c8b6c24404d8b6d00e9af0000004983fd01751c4d8b76084c89342448c74424080100000048c744241001000000eb42488d64242848b83840d4f1c27f0000488b5d08ff23415d49bef048d4f1c27f00004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c001000000c21000415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703010000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15080c00004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703030000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15960800004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703050000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15240500004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcffff415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849c703070000004c8b6c24084d895d004d8965084d89751048c7c0010000004883c410c2100041f6c5017568498b7d004d8b5d08488b7708488b164883fa037542488b7608483b742420750948c7c603000000eb0748c7c6010000004883fe0375214d8d6ff04c3b6d107306ff5550ca80574d89ef49c745f80100000049897d00eb184d89dd483b65187306ff5558ca0077eb9249c7c5010000004983fd01750949c7c501000000eb274d8b6d004d8b5d104d8d6ff04c3b6d107306ff5550ca005f4d89ef49c745f8010000004d895d004c8b5c24384d8b1b4d2bd87115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d2bde7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c3014d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d895e204d89661849c74610010000004d896e0849c7060b000000415641ff314d8b314983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89314d8b2a4d8d77e84c3b75107306ff5550ca00244d89f749c746f8020000004d896e0849c706010000004d89324c8b742450498b06488b5c2430ff15b20100004989c64c8b6c24504d8975004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049c7442418030000004c8b1c244d89de4d895c24104d896c240849c704240b0000004c8b6c24504d8b5d004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004c8b6424504d892c244d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24084d896c241849c74424100b0000004c8b6c24104d89ea4d896c240849c70424210000004d8d6fe84c3b6d107306ff5550ca00544d89ef49c745f80200000049c74508010000004d8965004d8d5fd84c3b5d107306ff5550ca00644d89df49c743f8040000004d89d24d89d44d89531849c743100b0000004d89f64d897308488d64241049c703130000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891e4d89e44c89642408488d6424084c896c24084c89742410e996fcfffff400000000|@15862,1,@2274,@7108,@7109,@7110,@7107|67,0,@9995 139,0,@9475 259,0,@15813 324,0,@9995 396,0,@9475 516,0,@15813 581,0,@9995 653,0,@9475 773,0,@15813 835,0,@9995 907,0,@9475 1024,0,@15813 1042,0,@15861 1349,0,@9475 1379,0,@9475 1472,0,@9475 2223,0,@9475 2253,0,@9475 2346,0,@9475 3097,0,@9475 3127,0,@9475 3220,0,@9475 3971,0,@9475 4001,0,@9475 4094,0,@9475 7107:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2278| 7108:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2275| 7109:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2276| 7110:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2277| 7111:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2279| 7112:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2280| 7113:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2282| 7114:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2283| 7115:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2284| 7116:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2285| 7117:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2286| 7118:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2287| 7119:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2288| 7120:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2289| 7121:D3,424|483b65187306ff5558ca0907a8010f858a0100004c8b30488b40084d8b2e4d8b5e084d8b70f849c1e60849c1ee074983ce014d3bee721048b81011d1f1c27f0000488b5d08ff234f8b74a8fc4d8b364983fe050f85350100004d8b214d89e64983c602711048b8d0c6d0f1c27f0000488b5d08ff234d8931498d7ff0483b7d107306ff5550ca093f4989ff48c747f8010000004c891f498b324d8d77e84c3b75107306ff5550cac93f4d89f749c746f8020000004989760849893e4d89324d8d77e84c3b75107306ff5550ca093f4d89f749c746f8020000004d895e084d892641564d8d77e04c3b75107306ff5550ca09274d89f749c746f8030000004c8b24244d89661049895e0849c706030000004d8b60f849c1e40849c1ec074983cc014d3bec7215488d64240848b80017d1f1c27f0000488b5d08ff234f8974a8fc4883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c843d4f1c27f0000488b5d08ff2348c7c001000000c3f400|@15863,1,@2290|57,0,@9995 103,0,@9475 300,0,@10034 332,0,@9475 400,0,@15834 7122:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2291| 7123:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2292| 7124:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2293| 7125:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2294| 7126:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2295| 7127:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2296| 7128:D3,112|483b65187305ff5558cd01a8017555ff30488b40084c8b34244d8b76084d8b364983fe017434e8d5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99cffffff48c7c001000000c3f4000000|@9893,1,@2297| 7129:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2298| 7130:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2299| 7131:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2300| 7132:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2301| 7133:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2302| 7134:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2303| 7135:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2304| 7136:D3,176|483b65187305ff5558cd09a8010f8590000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752e4d8b6e084d8b76104c3beb75184983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@9893,1,@2305| 7137:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2306| 7138:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2307| 7139:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2308| 7140:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2309| 7141:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2310| 7142:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2311| 7143:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2312| 7144:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2313| 7145:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2314| 7146:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2315| 7147:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2316| 7148:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2317| 7149:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2318| 7150:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2319| 7151:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2320| 7152:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2321| 7153:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2322| 7154:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2323| 7155:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2324| 7156:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2325| 7157:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2326| 7158:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2327| 7159:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2328| 7160:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2329| 7161:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2330| 7162:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2331| 7163:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2332| 7164:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2333| 7165:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2334| 7166:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2335| 7167:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2336| 7168:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2337| 7169:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2338| 7170:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2339| 7171:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2340| 7172:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2341| 7173:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2342| 7174:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2343| 7175:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2344| 7176:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2345| 7177:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2346| 7178:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2347| 7179:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2348| 7180:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2349| 7181:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2350| 7182:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2351| 7183:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2352| 7184:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2353| 7185:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2354| 7186:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2355| 7187:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2356| 7188:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2357| 7189:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2358| 7190:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2359| 7191:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2360| 7192:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2361| 7193:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2362| 7194:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2363| 7195:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2364| 7196:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2365| 7197:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2366| 7198:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2367| 7199:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2368| 7200:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2369| 7201:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2370| 7202:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2371| 7203:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2372| 7204:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2373| 7205:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2374| 7206:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2375| 7207:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2376| 7208:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2377| 7209:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2378| 7210:D3,112|483b65187305ff5558cd01a8017555ff30488b40084c8b34244d8b76084d8b364983fe017434e8d5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99cffffff48c7c001000000c3f4000000|@9893,1,@2379| 7211:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2380| 7212:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2381| 7213:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2382| 7214:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2383| 7215:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2384| 7216:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd05752d4d8b6e084d8b76104c3beb75174d3bc6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@9893,1,@2385| 7217:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2386| 7218:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2387| 7219:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2388| 7220:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2389| 7221:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2390| 7222:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2391| 7223:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2392| 7224:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2393| 7225:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2394| 7226:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2395| 7227:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2396| 7228:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2397| 7229:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2398| 7230:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2399| 7231:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2400| 7232:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2401| 7233:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2402| 7234:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2403| 7235:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2404| 7236:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2405| 7237:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2406| 7238:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2407| 7239:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2408| 7240:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2409| 7241:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2410| 7242:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2411| 7243:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2412| 7244:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2413| 7245:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2414| 7246:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2415| 7247:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2416| 7248:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2417| 7249:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2418| 7250:D6,392|483b65187306ff5558ca090753415041514152a8010f8541010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76086a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15fe000000ff3424488b5c2410488b4424184883fb017502eb06ff15db0000004c8b7424304c89f34983fe0175054989c4eb09ff15ba0000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c22000f400|@10943,1,@2419,@7252,@7251,@7097|357,0,@10542 7251:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2421| 7252:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2420| 7253:D4,296|483b65187306ff5558ca090753415041514152a8010f85dd000000ff30488b40086a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c2440415641554154415341524151488d5c24304c8b4424584c8b4c24504c8b542448e898ffffff415e415d498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c893358488b742418488b542410488b4c2408415d488d6424184c8b6424304c8b5c24284c8b5424204c8b4c24184c8b442410488b7c2408ff342448897c24084c894424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438ff2548000000488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c23000f40000000000|@10943,1,@2422,@7254|257,0,@10542 7254:D6,800|483b65187306ff5558ca09074989c64150498b0641ff7608ff33ff73086a016a016a014c8b4424704c8b7424684c8b6c24604c8b6424584c8b5c245041564155415441534d87c14d87ca488d5c2420ff15f3020000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15cd0200004989c66a016a014c8b6c24104d8b65004983fc0b0f85e90100004d89ed4d8b5d204c8b4c24604983e9014c8b5424404d89d44d03d17115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d3bda7505e99f0100004c8b5424604983ea014d89e44d03e27115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983fc017d0949c7c403000000eb624c8b6424604d2be37115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c40149c7c3010000004c8b5424584d2bda7115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c3014d3be37e0949c7c403000000eb0749c7c4010000004983fc030f84fe0000004c8b6424784d8b14244c8b6424784d8b24244983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24784d89234c8b6424704d8b1c244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424050000004c8b5c24704d89234d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004d8954240849c70424090000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d89ed4d896b1849c743100b0000004d89530849c703210000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084d895d004d89ee4c8924244c89742408eb0c4d89ed4c892c244c89742408eb0c4d89ed4c892c244c89742408ff3424488b4424104c8b7424404c89f34983fe0175054989c4eb09ff15950000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424484d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24304d895e084d892e4c8b6c24484d8965004d89750848c7c0010000004883c450c23800f4000000000000|@15864,1,@2423,@7256,@7255,@7097|177,0,@9475 225,0,@9475 271,0,@9475 313,0,@9475 393,0,@9475 7255:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2425| 7256:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2424| 7257:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2426| 7258:D9,1064|483b65187306ff5558ca0907534c8b304d89f54983fe077515488d64240848b8384ad4f1c27f0000488b5d08ff234d89ee4983fd0b7515488d64240848b8c04ad4f1c27f0000488b5d08ff234983fe090f855b030000ff70086a016a016a014c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488d5c2420ff15e2030000ff3424ff742410ff7424204c8b7424104d8b364983fe0b0f85c20200004c8b74245841ff364c8b7424604d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24604d8975004c8b7424584d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24584d8975004c8b74246041ff364c8b7424684d8b364983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24684d8975004c8b7424604d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706010000004c8b6c24604d8975004c8b742470498b06488b5c2440ff15d40200004989c64c8b6c24704d8975004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24404d896e0849c706030000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b1c244d89dc4d895d104d89750849c745000b0000004c8b7424704d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24704d8975004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24084d89eb4d896e0849c7060900000041564d8d77d84c3b75107306ff5550ca00184d89f749c746f8040000004d89db4d89dd4d895e1849c746100b0000004d89e44d89660849c7061300000041564d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d89661849c746100b0000004d89ed4d896e0849c70621000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24284c896b084c89334883fb0175074c8b6c2420eb0e488b442420ff15450100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24504c8b24244d896500488d6424084d89750848c7c0010000004883c450c220004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15cb0000004989c6488d6424104c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c428c220006a016a016a014c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488d5c2420ff156a000000ff3424488b5c2410488b4424184883fb0175054989c6eb09ff15440000004989c64c8b6c24204c8b24244d896500488d6424084d89750848c7c0010000004883c420c22000f400000000|@15871,1,@2427,@7260,@7097,@7261,@7262,@7259,@7097|32,0,@15865 62,0,@15868 192,0,@9475 299,0,@9475 7259:D3,152|483b65187305ff5558cd09a801757dff30488b40084c8b34244d8b76084d8b2e4983fd03751b4d8b76084c3bf3750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037434e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e974ffffff48c7c001000000c3f4000000|@9893,1,@2431| 7260:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2428| 7261:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2429| 7262:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2430| 7263:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2432| 7264:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2433| 7265:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2434| 7266:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2435| 7267:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2436| 7268:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2437| 7269:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2438| 7270:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2439| 7271:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2440| 7272:D3,176|483b65187306ff5558ca0901a8010f858f000000ff30488b40084c8b34244d8b76084d8b2e4983fd01752d4d8b6e084d8b76104c3beb75174d3bf0750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe037434e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e95dffffff48c7c001000000c3f400000000|@9893,1,@2441| 7273:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2442| 7274:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2443| 7275:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2444| 7276:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2445| 7277:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2446| 7278:D6,616|483b65187306ff5558ca090753415041514152a8010f8520020000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76106a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15de010000ff3424488b5c2410488b4424184883fb017502eb06ff15bb0100004c8b7424204d8b2e4d89f64d8b66084c8b7424604d8b5ef849c1e30849c1eb074983cb014d3beb7215488d64247048b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8b1e4d89dd4983fb030f85ea0000004d8b6e0841ff76104c8b7424604d8b364983ec014d03ec7115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d2bf57115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c60141564c8b7424404c89f34983fe0175054989c4eb09ff15f60000004989c44d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424084d8975104c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d6424704d89ee4983fe01751048b85044d4f1c27f0000488b5d08ff2348b8d044d4f1c27f0000488b5d08ff23488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c22000f40000|@10943,1,@2447,@7280,@7279,@7097|253,0,@9995 323,0,@9475 349,0,@9475 541,0,@15837 557,0,@15840 580,0,@10542 7279:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2449| 7280:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2448| 7281:D9,960|483b65187306ff5558ca090753415041514152a8010f856d0300004c8b30488b400841ff3641ff76086a016a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488d5c24204c8b4424584c8b4c24504c8b542448e89cffffffff3424ff742410ff7424204c8b4424504d8b60f849c1e40849c1ec074983cc014c8b6c24304d89ee4d3bec7215488d64246048b81011d1f1c27f0000488b5d08ff234d89f64d89c04f8b74b0fc4d8b264d89e54983fc0575324c8b6c24584c8b7424104d8975004c8b7424084d8975084c8b34244d897510488d64241848c7c0010000004883c448c220004983fd030f857a01000041ff760841ff76104c8b342441ff76086a016a016a014c8bb424b00000004c8bac24a80000004c8ba424a00000004c8b9c24980000004156415541544153488b842488000000488d5c24204c8b8c24980000004c8b942490000000ff15a6020000ff3424488b5c2410488b4424184883fb017502eb06ff15830200004c8bb424800000004d8b364c2b7424307118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234983c6014c2b7424207118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d6fe04c3b6d107306ff5550ca01404d89ef49c745f8030000004c8b6424284d8965104d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424384d8966084d892e41564c8b7424384c89f34983fe0175054989c6eb09ff15b30100004989c64c8bac24900000004c8b6424484d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c2200041ff76086a016a016a014c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004156415541544153488b442478488d5c24204c8b8c24880000004c8b942480000000ff1523010000ff3424488b5c2410488b4424184883fb017502eb06ff15000100004d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004c8b6424304d8966084d892e41564c8b7424284c89f34983fe0175054989c6eb09ff15860000004989c64c8bac24800000004c8b24244d896500488d6424084c8b6424284d8965084d89751048c7c0010000004881c480000000c22000488d642418415d49bec046d1f1c27f00004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c001000000c22000f40000000000|@15872,1,@2450,@7283,@7284,@7097,@7285,@7282,@7097|152,0,@9995 401,0,@9475 436,0,@9475 913,0,@10368 7282:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2454| 7283:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2451| 7284:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2452| 7285:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2453| 7286:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2455| 7287:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2456| 7288:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2457| 7289:D6,392|483b65187306ff5558ca090753415041514152a8010f8541010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424104c8b742420498b064d89f641ff76086a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704156415541544153488d5c24204c8b4424784c8b4c24704c8b542468ff15fe000000ff3424488b5c2410488b4424184883fb017502eb06ff15db0000004c8b7424304c89f34983fe0175054989c4eb09ff15ba0000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24204d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c468c22000488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c22000f400|@10943,1,@2458,@7291,@7290,@7097|357,0,@10542 7290:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2460| 7291:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2459| 7292:D6,344|483b65187306ff5558ca090753415041514152a8010f850c010000ff30488b40086a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424484c8b4c24404c8b542438e8a6ffffffff3424ff7424106a016a016a014c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b442458488d5c24204c8b4424704c8b4c24684c8b542460ff15db000000ff3424488b5c2410488b4424184883fb017502eb06ff15b80000004c8b7424284c89f34983fe0175054989c4eb09ff15970000004989c44d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d6424084c8b6c24584d8965004d89750848c7c0010000004883c460c22000488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c22000f4000000000000|@10943,1,@2461,@7294,@7293,@7097|304,0,@10542 7293:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2463| 7294:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2462| 7295:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2464| 7296:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2465| 7297:D3,800|483b65187305ff5558cd09a80175244c8b284c8b60084983fc01750b4c892b48c7c001000000c349c7c6010000004d89ebeb0f48c7030100000048c7c001000000c341f6c30175314d8b4b084d89f24983c202711048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0978ebc94983fd01750949c7c501000000eb1e41f6c40175184d8b14244d8b4c240849c7c3010000004d89d0e90102000049c7c60100000041f6c501750d4d8b650041ff75084989c3eb0b4c893348c7c001000000c341f6c30175094d8b1341ff7308eb4a49c7c3030000004983fb0375244d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8973084d8923eb034d89f3415c4d89de4d89e5483b65187306ff5558ca0960eb894983fa01750c49c7c201000000e92e0100004d8b024d8b4a08498b7808498b742408483bfe7505e9e8000000488b174889d14883fa01754e488b164883fa017540488b5708488b7f10488b4e08488b7610483bd17517483bfe750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff037402eb05e993000000e9e90000004889ca4883f9037533488b164883fa037525488b7f08488b7608483bfe750948c7c703000000eb0748c7c7010000004883ff037502eb57e9ad0000004883fa050f85a3000000488b164883fa050f8594000000488b5708488b7f10488b4e08488b7610483bd17517483bfe750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff037402eb594d8b50104d8b4c24104d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037516415a4d89d3483b65187306ff5558ca0978e94bfeffff488d64240849c7c301000000e950feffffeb004d89ca483b65187306ff5558ca097ce97dfeffff41f6c0017531498b70084c89df4883c702711048b8d0c6d0f1c27f0000488b5d08ff234989f04989fb483b65187306ff5558ca097febc94d3bde7d1a4d89cc4d89d54d89de483b65187306ff5558ca0970e97cfdffff4d89f34d89ea4d89cc4d89d54d89de483b65187306ff5558ca0970e95cfdfffff40000|@15874,1,@2467|87,0,@9475 700,0,@9475 7298:D3,136|483b65187305ff5558cd09a80175694c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b74b3fc41ff7608e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@10112,1,@2468|45,0,@9995 7299:D3,504|483b65187306ff5558ca09074c8b3041f6c60175554d8b2e4d8b76084d8b5d004d89dc4983fb0575184d8b6d084d8b5d004d8b65084c8b68084c89c7e9230100004983fc03750d4d8b65084c8b68084d89cbeb464c8b304c89334c8b70084c89730848c7c001000000c34c8b70084983fe0175164c8b304c89334c8b70084c89730848c7c001000000c348b8b04cd4f1c27f0000488b5d08ff2341f6c3017526498b33498b7b08493bf4750949c7c303000000eb184989fb483b65187306ff5558ca097febd449c7c3010000004983fb037502eb794d89d341f6c3017526498b33498b7b08493bf4750949c7c403000000eb184989fb483b65187306ff5558ca097febd449c7c4010000004983fc03743d4983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca08674989c748c740f8020000004c8968084c8930e9b2feffff4c8b304c89334c8b70084c89730848c7c001000000c340f6c7017526488b17488b7708493bd3750949c7c303000000eb184889f7483b65187306ff5558ca897febd449c7c3010000004983fb0375164c8b304c89334c8b70084c89730848c7c001000000c34d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e8483b45107306ff5550ca08674989c748c740f8020000004c8968084c8930e90dfefffff400000000|@15878,1,@2469|140,0,@15875 281,0,@9475 442,0,@9475 7300:D4,360|483b65187305ff5558cd094989c6534c8b2c244d8b65f849c1e40849c1ec074983cc014983fc017d07488d642408eb554c3b25290100007d474c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554156eb15488d64240848b8d015d1f1c27f0000488b5d08ff23f6042401752f4c8b3424498b064d89f641ff7608488b5c24104c8b442418ff15c7000000415d4c892c24483b65187303ff5558ebcb488d642408488b34244c8b76f849c1e60849c1ee074983ce014983fe017510488d64241048b84882d1f1c27f0000c34d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca42404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c89e84c89f14889f6488d6424084889c748d1e9f348a58060ffbf4883c408c3f40000ffffffffffffff01|@15883,1,@2472,@7301|135,0,@10027 240,0,@10817 7301:D4,272|483b65187306ff5558ca0901534989c641f6c601755e4d8b1e4d8b6e084c8b24244d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64240848b81011d1f1c27f0000488b5d08ff234d89e44f8b649cfc4983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0141eb9c49c7c6010000004983fe03750d488d64240848c7c001000000c34d89c148c7c3ffffffff49c7c001000000ff15830000004989c54983fd017c474c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64240848b80017d1f1c27f0000488b5d08ff234d89f64bc744aefc03000000488d64240848c7c001000000c3488d64240848b8d04dd4f1c27f0000488b5d08ff23f40000000000|@15884,1,@2473,@7302|62,0,@9995 206,0,@10034 252,0,@15880 7302:D3,248|483b65187306ff5558ca0903a8010f85d40000004c8b204c8b70084d8b69f849c1e50849c1ed074983cd014d3be5721048b89011d1f1c27f0000488b5d08ff234f8b6ca1fc4d8b55004d8b5d084d8b6d104983fb01750949c7c301000000eb4b4983fb01751048b8d8d2d0f1c27f0000488b5d08ff234983fbff75194c3b2d6d000000751048b870d3d0f1c27f0000488b5d08ff234c89e848d1f849d1fb489949f7fb4c8d1c45010000004983fa0175044c89e0c34983fa0375044c89e0c341f6c20175084c89f0e933ffffff4d3bd87c0e4c89f04c89e34d89e8e920ffffff4c89f0e918ffffff4889d8c3f40000000100000000000080|@15885,1,@2474|50,0,@9998 104,0,@9512 135,0,@9516 7303:D4,1248|483b65187306ff5558ca09074989c34d8b70f849c1e60849c1ee074983ce0141564d8b63f849c1e40849c1ec074983cc014c8b34244d89f54983fe017d0a488d642408e9970300004d89ed4d89ee4c3b2d830400000f8d7f0300004c89f74889f94c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a5f4d89ef48d1ef49897df841c645ff404c89ef48d1e948c7c001000000f348ab4c89f74989fe4883ff017d0a488d642408e9150300004d89f64c89f64c3b350e0400000f8dfd0200004889f74889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4a3f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889f64889f74883fe017d0a488d642408e9930200004889ff4889fa483b3d990300000f8d7b0200004889d74889f9488d34bd0400000048f7de4903f7483b75107205493bf77206ff5550ca0e7f4989f748d1ef48897ef8c646ff404889f748d1e948c7c001000000f348ab4889d74889fa4883ff017d0a488d642408e9120200004889d24889d7483b15250300000f8dfa0100004889ff4889f9488d14bd0400000048f7da4903d7483b55107205493bd77206ff5550ca4a7f4989d748d1ef48897af8c642ff404889d748d1e948c7c001000000f348ab5248c7c201000000498d7ff0483b7d107306ff5550ca4c7f4989ff48c747f801000000c647ff40488917574983fc017d0a488d642418e96c0100004c3b25920200000f8d5a0100004c89e74889f94c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca4a6f4d89e748d1ef49897c24f841c64424ff404c89e748d1e948c7c001000000f348ab4156415553ff742420ff742420415241514989f24d89c14d89d84c89e348c7c001000000ff155c0200004c8b34244d8b36488d6424084983fe010f85a80000004c8b7424084d89f54983fe017514488d64241049be4882d1f1c27f0000e92f0100004d89ed4d89ee4983fd017e654d89f64d89f54c3b35c30100007d4f4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000e9b1000000488d642410eb05488d64241048b8d010d3f1c27f0000488b5d08ff23488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3488d64241848b8d015d1f1c27f0000488b5d08ff23488d64240848b8d015d1f1c27f0000488b5d08ff23488d64240848b8d015d1f1c27f0000488b5d08ff23488d64240848b8d015d1f1c27f0000488b5d08ff23488d64240848b8d015d1f1c27f0000488b5d08ff234c8b6424084d3be57f31488d642410418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34c8b24244d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64241048b81011d1f1c27f0000488b5d08ff234d89e44f8b64acfc4983fc01750c49bcf01dd4f1c27f0000eb044d8b24244f8964aefc4d89ec4983c4027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0060e941fffffff400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15886,1,@2475,@7304|711,0,@10817 844,0,@13764 909,0,@10027 930,0,@10027 951,0,@10027 972,0,@10027 993,0,@10027 1099,0,@9995 1129,0,@15619 1164,0,@9475 7304:D7,1376|483b65187306ff5558ca0907534150415141524c8b7424184d8b66f84d89e549c1e40849c1ec074983cc01493bc47215488d64242048b81011d1f1c27f0000488b5d08ff234d89f64d8b6486fc4983fc03750f488d64242048c7c001000000c238004d89f649c1e50849c1ed074983cd01493bc57215488d64242048b80017d1f1c27f0000488b5d08ff234d89f649c74486fc030000004c8b7424104d8b6ef849c1e50849c1ed074983cd01493bc57215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64d8b7486fc41ff3641ff760841ff761841ff7638ff742410f604240175524c8b2c244d8b75004d89ed41ff7508498b06498b5e084d8b46104d8b4e184c8bb424880000004c8bac2480000000ff742430415641554c8b542450ff1568040000415d4c892c24483b65187303ff5558eba8488d6424084c8b7424184d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e9e2000000909090e930010000909090e92d010000909090e933010000909090e9df010000909090e92a0200009090904d89f6498b46104d89f641ff76204c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b5c24784c8b4424704c8b4c24684c8b542460e818feffff4c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442438488b5c24784c8b4424704c8b4c24684c8b542460e8c6fdffff488d642408e9700100004d89f6498b46104c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b5c24704c8b4424684c8b4c24604c8b542458e86bfdffffe91a010000e9150100004d89f64d8b76084156e92c0200004d89f6498b46084d89f641ff76104c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b5c24784c8b4424704c8b4c24684c8b542460e8f8fcffff4c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c24584c8b4424504156415541544153415241514150488b442438488b5c24784c8b4424704c8b4c24684c8b542460e8a6fcffff488d642408eb534d89f6498b46084c8b7424784c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b4424484156415541544153415241514150488b5c24704c8b4424684c8b4c24604c8b542458e84efcffffeb004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15b40100004989c6488d6424104156f60424010f85980000004c8b3424498b064d89f641ff76084c8b7424684d8b76f849c1e60849c1ee074983ce01493bc67215488d64244048b89011d1f1c27f0000488b5d08ff234c8b7424684d8b7486fc41f6c6017502eb354c8b4424504c8b4c24604c8b7424704c8b6c24784c8b6424584156ff7424284155415448c7c3010000004c8b542448ff1514010000415d4c892c24483b65187303ff5558e95effffff488d64240858488b5c24484c8b4424104c8b4c2458488b7c24084c8b6c24604c8b6424404c8b5c24304c8b5424384c895424484989fa4c895c24504c896424584c896c24604c8b7424284c897424404883c440ff259f000000f604240175724c8b3424498b064d89f641ff76084c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b4424584156415541544153415241514150488b9c24800000004c8b4424784c8b4c24704c8b542468e8c0faffff415d4c892c24483b65187303ff5558eb88488d642408e959fefffff400000000|@15893,1,@2476,@7306,@7308,@7320,@7305|55,0,@9995 125,0,@10034 184,0,@9998 1047,0,@9998 7305:D16,4904|483b65187306ff5558ca090741524c8b334c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95a010000909090e95c010000909090e9ed010000909090e9ef010000909090e9f5010000909090e982020000909090e90b040000909090e90d040000909090e996050000909090e9b5050000909090e942070000909090e94c070000909090e94b070000909090e94d070000909090e9d6080000909090e9d8080000909090e9cf090000909090e9ce090000909090e9cd090000909090e9cc090000909090e9330a0000909090e9320a0000909090e9310a0000909090e9330a0000909090e9c00a0000909090e9bf0a0000909090e9c10a0000909090e94e0b0000909090e94d0b0000909090e96f0b0000909090e9710b0000909090e9900c0000909090e9970c0000909090e9960c0000909090e9950c0000909090e99e0c0000909090e99d0c0000909090e9bc0c0000909090e9bb0c0000909090e9bd0c0000909090e9df0c0000909090e96c0d0000909090e98b0d0000909090488d642408eb05488d642408e99e0000004c8b7308498b5e1041ff76204d8b2e4983fd0975205841584c8b4c24184c8b5424104c8b34244c897424184883c418ff25da1100004d8b76184d8b2e4983fd09754841ff76084c8b4c24304c8b542428488b4424084c8b442410ff15a7110000488b4424085b488d64240841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2575110000488d64241048c7c001000000c21800488d642408e939020000488d6424084c8b7308e91b100000488d6424084c8b63104c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f8974a5fc48c7c001000000c21800488d6424084c8b63084c8b53104c8b5b184c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be0850d4f1c27f00004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be1850d4f1c27f00004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be4050d4f1c27f00004f8974a5fc48c7c001000000c21800488d642408e964030000488d6424084c8b63104c8b53184c8b5b204c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be0850d4f1c27f00004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be1850d4f1c27f00004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be4050d4f1c27f00004f8974a5fc48c7c001000000c21800488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff255e0d0000488d6424084c8b73084d8b56084d8b5e184d8b66204c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be5050d4f1c27f00004f8974a5fc48c7c001000000c21800488d6424084c8b73084d8b7608e9e9080000488d642408eb05488d642408e996010000488d6424084c8b53084c8b5b104c8b63184c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b7496fc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bd6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be1850d4f1c27f00004f897495fc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b749efc41f6c6017502eb3e4c8b7424084d8b76f849c1e60849c1ee074983ce014d3bde721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f89749dfc4c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849be4050d4f1c27f00004f8974a5fc48c7c001000000c21800488d642408e904010000488b43084c8b73184d8b264d89e54983fc0b75554d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb03752e4d89e64d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb5b4983fd0775554d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03752e4d89ee4d8b2e4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70609000000eb004d8b2e4983fd097523498b5e0841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2513090000488d64240848c7c001000000c21800488d642408eb05488d642408eb05488d642408eb744c8b73104c8b6b18ff73204d8b65004983fc09754b41ff75084c8b4c24304c8b5424284c89f3488b4424084c8b442410ff15b1080000488b4424085b488d64240841584c8b4c24184c8b5424104c8b34244c897424184883c418ff257f080000488d64241048c7c001000000c21800488d642408eb05488d642408eb05488d642408e99a000000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f8974a5fc48c7c001000000c21800488d642408eb05488d642408e99a000000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f8974a5fc48c7c001000000c21800488d642408eb2f4c8b7310488b43204c89f341584c8b4c24184c8b5424104c8b34244c897424184883c418ff25e4060000488d642408e93b0100004c8b7308498b5e10498b46184d8b76204d8b264d89e54983fc090f85d000000041ff76084c8b4c24284c8b5424204c8b442408ff15990600004c8b7424184d8b66f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b6c24184d89f64f8b6cb5fc41f6c501750f488d64241048c7c001000000c218004c8b6c24184d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64241048b80017d1f1c27f0000488b5d08ff234c8b6c241849be4050d4f1c27f00004d89e44f8974a5fc488d64240848c7c0010000004883c408c218004d89ee4983fe05751f41584c8b4c24184c8b5424104c8b34244c897424184883c418ff25b2050000488d64240848c7c001000000c21800488d64240848c7c001000000c21800488d642408eb05488d642408eb16488d6424084c8b73084d8b36e934010000488d642408eb2c488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff253f050000488d642408eb05488d642408e9eb0000004c8b7310488b43204c89f341584c8b4c24184c8b5424104c8b34244c897424184883c418ff25fc040000488d6424084c8b63084c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234c8b7424084f8b74a6fc41f6c601750a48c7c001000000c218004c8b7424084d8b76f849c1e60849c1ee074983ce014d3be6721048b80017d1f1c27f0000488b5d08ff234c8b6c240849bef84fd4f1c27f00004f8974a5fc48c7c001000000c21800488b4308488b5b1841584c8b4c24184c8b5424104c8b34244c897424184883c418ff2538040000488d64240848c7c001000000c2180041f6c6010f858f0100004d8b1e4d8b6e084d8b234d8b5b084d8b0c244d89ca4983f90b755a4d8b4424084d89c141f6c001740949c7c003000000eb0749c7c0010000004983f0024983f80375324d89cc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb604983fa07755a4d8b4c24104d89ca41f6c101740949c7c103000000eb0749c7c1010000004983f1024983f90375324d89d44d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb004d8b14244983fa090f85980000004d8b5424084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81011d1f1c27f0000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234c8b5c24084f896493fceb004d89ee483b65187306ff5558ca0040e967feffff48c7c001000000c2180041f6c6010f858f0100004d8b1e4d8b6e084d8b234d8b5b084d8b0c244d89ca4983f90b755a4d8b4424084d89c141f6c001740949c7c003000000eb0749c7c0010000004983f0024983f80375324d89cc4d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb604983fa07755a4d8b4c24104d89ca41f6c101740949c7c103000000eb0749c7c1010000004983f1024983f90375324d89d44d8b14244d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c7042409000000eb004d8b14244983fa090f85980000004d8b5424084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81011d1f1c27f0000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234c8b5c24084f896493fceb004d89ee483b65187306ff5558ca0040e967feffff48c7c001000000c2180041f6c6010f85b50000004d8b264d8b6e084d8b14244d8b5c24084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81011d1f1c27f0000488b5d08ff234c8b6424084f8b6494fc41f6c4017502eb544d8d67f04c3b65107306ff5550ca006c4d89e749c74424f8010000004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234c8b5c24084f896493fc4d89ee483b65187306ff5558ca0040e941ffffff48c7c001000000c21800f400|@15901,1,@2492,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321,@7321|615,0,@9995 683,0,@10034 704,0,@15887 772,0,@9995 832,0,@10034 853,0,@15888 894,0,@9995 954,0,@10034 975,0,@15889 1016,0,@9995 1084,0,@10034 1105,0,@15891 1183,0,@9995 1243,0,@10034 1264,0,@15888 1305,0,@9995 1365,0,@10034 1386,0,@15889 1427,0,@9995 1495,0,@10034 1516,0,@15891 1627,0,@9995 1687,0,@10034 1708,0,@15887 1749,0,@9995 1809,0,@10034 1830,0,@15887 1871,0,@9995 1939,0,@10034 1960,0,@15892 2063,0,@9995 2123,0,@10034 2144,0,@15889 2185,0,@9995 2245,0,@10034 2266,0,@15887 2307,0,@9995 2375,0,@10034 2396,0,@15891 2877,0,@9995 2945,0,@10034 2966,0,@15887 3043,0,@9995 3111,0,@10034 3132,0,@15887 3311,0,@9995 3398,0,@10034 3419,0,@15891 3697,0,@9995 3765,0,@10034 3786,0,@15887 4134,0,@9995 4226,0,@10034 4553,0,@9995 4645,0,@10034 4756,0,@9995 4848,0,@10034 7306:D4,224|483b65187306ff5558ca090753415041514152a8010f85b5000000ff30488b40084c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b5c24404c8b4424384c8b4c24304c8b542428e8aaffffff4c8b3424498b064d89f6498b5e084d89f6498b76104d89f6498b5618488d642408488b4c24184c8b6c24104c8b642408415b488d6424184c8b5424204c8b4c24184c8b442410488b7c2408415057ff7424104989f04c894c24184989d14c895424204989ca4c895c24284c896424304c896c2438ff2528000000488d64242048c7c001000000c22000f4|@10943,1,@2477,@7307| 7307:D403,35424|483b65187306ff5558ca090741524c8b334c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e961010000909090e96a010000909090e9070d0000909090e98a0d0000909090e98d0d0000909090e9130e0000909090e9e40e0000909090e9f00e0000909090e9c10f0000909090e983100000909090e9ea150000909090e96b160000909090e9ee160000909090e9f5160000909090e9c1170000909090e912180000909090e98e1e0000909090e99e200000909090e9e1200000909090e924210000909090e968270000909090e9ab270000909090e9ee270000909090e9682c0000909090e9ae2c0000909090e9b52c0000909090e9bc2c0000909090e9022d0000909090e9d5310000909090e906370000909090e95d3b0000909090e91f3d0000909090e9444a0000909090e9be4e0000909090e9414f0000909090e9fa4f0000909090e974540000909090e988550000909090e95b5a0000909090e92e5f0000909090e95f640000909090e9a5640000909090e942650000909090ff73084c8b73204156e91f880000ff7308ff73104c8b73184156e9238700004c8b73084d8b2e4983fd090f853c05000041ff761841ff7610498b46204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fc9400004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff159d940000488d6424084c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1533940000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15a39300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff154b930000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15f3920000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff159b920000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1549920000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1502920000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15af9100004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff155391000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ed90000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff158790000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff152490000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b28f0000488d64240848c7c001000000c23800488d64241048c7c001000000c2380041ff76184c8b2c244d8b65004983fc090f850a0100004d89ed41ff750841ff7610498b46204c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff152f8f00004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c89334c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b4424284c8b4c2440ff15cd8e0000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424104c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff156b8e0000488d64241848c7c001000000c2380041ff7610498b46204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15148e00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff15b58d0000488d6424084c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff154b8d0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15bb8c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15638c0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff150b8c0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b38b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15618b0000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff151a8b0000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c78a00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156b8a000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15058a000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159f89000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153c89000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ca880000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7308488b43104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15658800004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1520880000488d64241048c7c001000000c238004c8b73084156e95d7a0000ff7308488b43104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348bbf84fd4f1c27f00004c8b4c2428ff15bc8700004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1577870000488d64241048c7c001000000c23800ff7308488b4310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb0850d4f1c27f00004c8b4c2430ff151b8700004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb1850d4f1c27f00004c8b4c2430ff15d3860000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048bb4050d4f1c27f00004c8b4c2428ff1586860000488d64241048c7c001000000c23800ff7308ff7310ff73184c8b73204156e947770000ff7310488b4318ff73204c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb0850d4f1c27f00004c8b4c2430ff15168600004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb1850d4f1c27f00004c8b4c2430ff15ce850000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048bb4050d4f1c27f00004c8b4c2428ff1581850000488d64241048c7c001000000c23800488b43084c8b7310ff73184983fe0775074c8b742420eb124983fe0975074c8b742420eb054c8b74241841564c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15068500004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4424204c8b4c2430ff15a7840000488d64241848c7c001000000c238004c8b730841ff36498b460841ff761841ff76204c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348bbf84fd4f1c27f00004c8b4c2438ff15428400004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242848bbf84fd4f1c27f00004c8b4c2438ff15fa8300004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048bb5050d4f1c27f00004c8b4c2438ff15b2830000488d6424104c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1548830000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b88200004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1560820000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1508820000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b0810000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155e810000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1517810000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c48000004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156880000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff150280000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159c7f000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15397f000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15c77e0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004c8b7308498b460841ff761841ff762041ff364c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24384c8b642428415641554154488b5c2430ff155f7e00004989c641564c8b4424604c8b4c24584c8b5424504c8b7424484c8b6c24404c8b642430415641554154488b442428488b5c2438ff151e7e00004989c64156ff742420e942660000488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15c97d00004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff15847d0000488d64241048c7c001000000c23800488d64240848c7c001000000c23800488b4308ff7310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348bb1850d4f1c27f00004c8b4c2430ff15197d00004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242848bbf84fd4f1c27f00004c8b4c2430ff15d17c00004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048bb4050d4f1c27f00004c8b4c2430ff15897c0000488d64241848c7c001000000c23800ff73084c8b7310ff7318ff73204983fe017502eb3b498b064c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15227c0000ff742408e9085b0000488b43084c8b7310ff73184983fe0775074c8b742420eb124983fe0975074c8b742420eb054c8b74241841564c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15ad7b00004989c641564c8b7424104d8b264d89e54983fc0b755b4d89f64d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375314d89e64d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000e9b10000004c8b7424104983fd070f859d0000004d89f64d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375734d89f6498b46084d89ee41ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15b67a00004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70609000000eb054c8b7424104d8b264d89e54983fc09756e498b4608498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c8933488d6424084c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4424204c8b4c2430ff15147a0000488d64240848c7c0010000004883c410c23800488d6424084d89ec4983fd0b75674d8b760841f6c601754e498b064c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff15a6790000488d64240848c7c0010000004883c410c23800488d64241848c7c001000000c238004d89e54983fc070f859e030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff151d7900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15c5780000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff156d780000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff1515780000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15c3770000eb004c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4424304c8b4c2440ff157c770000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15297700004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15cd76000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff156776000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff150176000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff159e75000048c7c0010000004883c418c23800488d64242048c7c001000000c238004983fd09754f498b46084c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4424204c8b4c2430ff1537750000488d64240848c7c0010000004883c410c23800488d64241848c7c001000000c23800ff7308488b4310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15cb7400004c8b6c24084d89ee4983fd017502eb3e4d89f6498b064c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15757400004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff151974000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b373000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff154d73000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ea72000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1589720000488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1536720000488d64240848c7c001000000c23800ff7310ff7318488b43204c8b34244d8b2e4983fd090f85020100004d89f641ff76084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15c57100004989c64156498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c89334c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b4424384c8b4c2440ff1563710000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b4424204c8b4c2438ff1501710000488d64242048c7c001000000c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15b27000004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15537000004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15e96f0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15596f00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15016f0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15a96e0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15516e0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ff6d0000eb004c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15b86d0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15656d00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15096d000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a36c000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff153d6c000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15da6b000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15686b000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15076b0000488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b46a0000488d64240848c7c001000000c238004c8b73084d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15486a0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c36900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff156b690000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff1513690000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15bb680000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff1569680000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1522680000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15cf6700004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1573670000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff150c670000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15a5660000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1541660000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15d9650000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf84fd4f1c27f00004c8b4c2420ff1574650000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf84fd4f1c27f00004c8b4c2420ff1500650000488d64240848c7c001000000c23800488b4308ff73104c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15aa6400004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1545640000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15b56300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155d630000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1505630000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15ad620000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff155b620000eb004c8b4424304c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1514620000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c16100004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff156561000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ff60000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159960000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153660000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15c45f0000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7310ff7318488b43204c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff155c5f00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15fd5e00004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15935e0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15035e00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ab5d0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15535d0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15fb5c0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15a95c0000eb004c8b4424384c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15625c0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff150f5c00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15b35b000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d5b000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15e75a000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15845a000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15125a000048c7c0010000004883c410c23800488d64241848c7c001000000c23800ff73084c8b73104d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1595590000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15275900004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cf580000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1577580000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff151f580000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cd570000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1586570000488d642410e98c0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff153c5700004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15e0560000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1583560000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1526560000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15cf550000eb05488d642408eb444983fd09753e498b46084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157c550000eb004c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1535550000488d64241048c7c001000000c238004c8b730841ff7610498b46184d8b76204d8b264d89e54983fc090f85ea00000041ff76084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c25400004989c641564c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242848bb4050d4f1c27f00004c8b4c2438ff1575540000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1513540000488d64241048c7c001000000c238004d89ee4983fe050f859e0000004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b75300004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1558530000488d64241048c7c001000000c23800488d64241048b8b050d4f1c27f0000488b5d08ff234c8b730841ff3641ff760841ff761041ff76204c8b34244d8b2e4d89ec4983fd0b75304d89f64d8b760841f6c601740949c7c603000000eb0749c7c6010000004983f6024983fe03750949c7c609000000eb7f4c8b34244d89e54983fc07756f4d89f64d8b661041f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375484d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff156652000049c7c609000000eb034d89ee4983fe090f85170600004c8b7424104983fe050f85080600004c8b34244d8b2e4d89ec4983fd0b75544d89f64d8b7608488d64240841f6c601753d498b064c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15dc510000eb00e9df0300004d89f64d89e54983fc070f857b0300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85be01000041ff364c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15635100004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff150b510000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15b3500000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff155b500000eb4a4d89f64983fd0175414d89f6498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1509500000eb004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b44242048c7c3010000004c8b4c2450ff15c24f0000488d642418e99c0100004c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15784f00004c8b34244d8b264d89e54983fc07754d4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff151c4f00004883c408e9070100004d89f64d89ec4983fd05754d4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15bb4e00004883c408e9ae0000004d89f64d89e54983fc03754a4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff155a4e00004883c408eb584d89f64983fd01754a4d89f6498b4608488d6424084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15ff4d00004883c408eb05488d642410eb544d89f64983fd0975464d89f6498b4608488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff159d4d0000eb05488d6424084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44243048c7c3010000004c8b4c2438ff15514d00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15f54c000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff158f4c000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15294c000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c64b000048c7c0010000004883c418c23800488d64242048c7c001000000c238004c8b6c24104d89ee4983fd0775074c8b742438eb154d89f64983fe0975074c8b742438eb054c8b74243041564c8b7424084d8b2e4d89ec4983fd0b75594d89f64d8b760841f6c6017542498b064c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4424204c8b4c2448ff151c4b0000488d642410eb05488d642410e9df0300004d89f64d89e54983fc070f857b0300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85be01000041ff364c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15994a00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15414a0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15e9490000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1591490000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff153f490000eb004c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4424304c8b4c2458ff15f8480000488d642420e99c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ae4800004c8b34244d8b264d89e54983fc07754d4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15524800004883c410e9070100004d89f64d89ec4983fd05754d4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15f14700004883c410e9ae0000004d89f64d89e54983fc03754a4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15904700004883c410eb584d89f64983fd01754a4d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15354700004883c410eb05488d642418eb544d89f64983fd0975464d89f6498b46084c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4424204c8b4c2448ff15d8460000488d642410eb05488d6424104c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44243048c7c3010000004c8b4c2438ff15874600004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff152b46000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15c545000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff155f45000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fc44000048c7c0010000004883c418c23800488d64242048c7c001000000c238004c8b73104d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1582440000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15fd4300004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a5430000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d430000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15f5420000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15a3420000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff155c420000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15094200004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ad410000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1546410000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15df400000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff157b400000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1513400000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ae3f00004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff15693f0000488d64241048c7c001000000c238004c8b7308498b0641ff761841ff76084c8b4424504c8b4c24484c8b5424404c8b7424384c8b6c24304c8b642420415641554154488b5c2428ff15143f00004989c641564c8b4424584c8b4c24504c8b5424484c8b7424404c8b6c24384c8b642428415641554154488b442428488b5c2430ff15d33e00004989c641564c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44243048c7c3010000004c8b4c2440ff15893e0000ff3424e9df1900004c8b73084d8b2e4d89ec4983fd0b75634d8b760841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15243e0000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89e54983fc070f85a2030000498b46084d8b6e1041ff761841f6c5010f85c801000041ff75004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff159f3d00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15473d0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15ef3c0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15973c0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15453c0000eb004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15fe3b0000488d64240848c7c0010000004883c410c238004c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15ab3b00004c8b34244d8b264d89e54983fc0775534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff154f3b0000488d64240848c7c001000000c238004d89f64d89ec4983fd0575534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15e83a0000488d64240848c7c001000000c238004d89f64d89e54983fc0375534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15813a0000488d64240848c7c001000000c238004d89f64983fd0175534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff151d3a0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004983fd09754b498b46084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b5390000488d64240848c7c001000000c23800488d64240848c7c001000000c23800488b4308ff7310ff73184c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff154d3900004989c641564c8b6c24104d89ee4983fd017502eb584d89f6498b06498d5ff0483b5d107305ff5550cd014989df48c743f8010000004c8b34244c89334c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c243841564155415441534c8b4c2438ff15d8380000498d5ff0483b5d107303ff55504989df48c743f8010000004c8b34244c8933488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424204c8b4c2430ff1576380000488d64240848c7c0010000004883c410c23800488b4308ff73104c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff151c3800004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15b7370000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15273700004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cf360000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1577360000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff151f360000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15cd350000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff1586350000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15333500004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15d734000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157134000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff150b34000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15a833000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff1536330000488d64240848c7c001000000c23800488d64241048c7c001000000c23800488b4308ff73104c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15d13200004c8b34244d8b2e4d89ec4983fd0b756b4d89f64d8b7608488d64240841f6c601754a498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff156c320000488d64240848c7c001000000c23800488d64240848c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15dc3100004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1584310000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff152c310000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15d4300000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1582300000eb004c8b4424304c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff153b300000488d64240848c7c0010000004883c418c238004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15e82f00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff158c2f000048c7c0010000004883c410c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15262f000048c7c0010000004883c410c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15c02e000048c7c0010000004883c410c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff155d2e000048c7c0010000004883c410c23800488d64241848c7c001000000c238004d89f64983fd0975534d89f6498b4608488d6424084c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15eb2d0000488d64240848c7c001000000c23800488d64241048c7c001000000c23800ff7310ff7318488b43204c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15832d00004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b4424284c8b4c2430ff15242d00004c8b34244d8b2e4d89ec4983fd0b75704d89f64d8b7608488d64240841f6c601754f488d642408498b064c8b4424184c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348c7c3010000004c8b4c2420ff15ba2c0000488d64240848c7c001000000c23800488d64241048c7c001000000c238004d89f64d89e54983fc070f85a60300004d89f5498b45084d89ed4d8b75104d89ed41ff751841f6c6010f85c701000041ff364c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff152a2c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15d22b0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff157a2b0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15222b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff15d02a0000eb004c8b4424384c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488b44242048c7c3010000004c8b4c2440ff15892a0000488d64240848c7c0010000004883c420c238004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15362a00004c8b34244d8b264d89e54983fc0775524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15da29000048c7c0010000004883c418c238004d89f64d89ec4983fd0575524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff157429000048c7c0010000004883c418c238004d89f64d89e54983fc0375524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff150e29000048c7c0010000004883c418c238004d89f64983fd0175524d89f6498b4608488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15ab28000048c7c0010000004883c418c23800488d64242048c7c001000000c238004d89f64983fd0975524d89f6498b4608488d6424084c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff153928000048c7c0010000004883c410c23800488d64241848c7c001000000c23800488b43084c8b4424104c8b5424404c8b7424384c8b6c24304c8b6424284c8b5c2420415641554154415348bbf84fd4f1c27f00004c8b4c2420ff15d5270000488d64240848c7c001000000c23800488b4308ff73184c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff157f2700004989c6498d5ff0483b5d107306ff5550ca00404989df48c743f8010000004c89334c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b4424204c8b4c2428ff1520270000488d64241048c7c001000000c23800ff73084c8b73104d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15b1260000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15432600004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15eb250000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1593250000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff153b250000eb4a4d89f64983fd0175414d89f6498b46084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff15e9240000eb004c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b44242048c7c3010000004c8b4c2438ff15a2240000488d642410e98c0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c2430415641554154415348c7c3010000004c8b4c2430ff15582400004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15fc230000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff159f230000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1542230000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff15eb220000eb05488d642408eb444983fd09753e498b46084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c2428415641554154415348c7c3010000004c8b4c2428ff1598220000eb004c8b4424204c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1551220000488d64241048c7c001000000c23800f60424010f85440400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15cd210000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff155c2100004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1501210000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15a6200000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff154b200000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15f61f0000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff15ac1f0000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15621f00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15061f0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15a91e0000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff154c1e0000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15f51d0000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15a21d0000eb00415d4c892c24483b65187303ff5558e9b2fbffff488d642410ff3424f60424010f85320400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff150f1d0000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15a11c00004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15491c0000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15f11b0000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15991b0000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15471b0000eb004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4c2458ff15001b0000488d642410e98c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15b61a00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff155a1a0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15fd190000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15a0190000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1549190000eb05488d642408eb444983fd09753e498b46084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15f6180000eb00415d4c892c24483b65187303ff5558e9c4fbffff488d64242848c7c001000000c23800f60424010f85320400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff155c180000eb00e9b40300004d89e54983fc070f8563030000498b46084d8b6e1041ff761841f6c5010f85bf01000041ff75004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15ee1700004c8b7424084d8b264d89e54983fc0775444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1596170000e9e70000004d89f64d89ec4983fd0575444d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff153e170000e9970000004d89f64d89e54983fc0375414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15e6160000eb4a4d89f64983fd0175414d89f6498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1594160000eb004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584156415541544153488b44242048c7c3010000004c8b4c2458ff154d160000488d642410e98c0100004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15031600004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15a7150000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff154a150000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15ed140000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1596140000eb05488d642408eb444983fd09753e498b46084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff1543140000eb00415d4c892c24483b65187303ff5558e9c4fbffff488d642408ff742410f60424010f858a0400004c8b34244d8b2e4d89f641ff76084d8b750041ff75084d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ab130000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff153a1300004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15df120000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1584120000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1529120000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15d4110000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff158a110000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15401100004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15e4100000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1587100000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff152a100000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15d30f0000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15800f0000eb004c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b44242048c7c3010000004c8b4c2450ff15390f0000488d642408415d4c892c24483b65187303ff5558e96cfbffff488d6424084c8b2c244d89ee4983fd01750f488d64242048c7c001000000c238004d89f64d8b36488d6424084156f604240175574c8b3424498b064d89f641ff76084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff159e0e0000415d4c892c24483b65187303ff5558eba3488d64242048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff152a0e0000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488b44243048bbf84fd4f1c27f00004c8b4c2448ff15cc0d0000ff3424f60424010f85560400004c8b2c244d8b75004d89ed41ff75084d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15570d0000eb00e9db0300004d89e54983fc070f858a030000498b46084d8b6e1041ff761841f6c5010f85e301000041ff75004c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15e30c00004c8b7424084d8b264d89e54983fc07754a4d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15850c0000e9f90000004d89f64d89ec4983fd05754a4d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15270c0000e9a30000004d89f64d89e54983fc0375474d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15c90b0000eb504d89f64983fd0175474d89f6498b46084c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c2468415641554154415348c7c3010000004c8b4c2468ff15710b0000eb004c8b4424584c8b9424880000004c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b44242048c7c3010000004c8b4c2468ff15240b0000488d642410e98f0100004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15d70a00004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff157b0a0000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff151e0a0000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15c1090000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff156a090000eb05488d642408eb444983fd09753e498b46084c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff1517090000eb00415d4c892c24483b65187303ff5558e9a0fbffff488d642410ff3424f60424010f85440400004c8b2c244d8b75004d89ed41ff75084d8b364d8b2e4d89ec4983fd0b754c4d8b760841f6c601753d498b064c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1584080000eb00e9c60300004d89e54983fc070f8575030000498b46084d8b6e1041ff761841f6c5010f85d101000041ff75004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15130800004c8b7424084d8b264d89e54983fc0775474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15b8070000e9f00000004d89f64d89ec4983fd0575474d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff155d070000e99d0000004d89f64d89e54983fc0375444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff1502070000eb4d4d89f64983fd0175444d89f6498b46084c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c2460415641554154415348c7c3010000004c8b4c2460ff15ad060000eb004c8b4424504c8b9424800000004c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b44242048c7c3010000004c8b4c2460ff1563060000488d642410e98c0100004c8b4424484c8b5424784c8b7424704c8b6c24684c8b6424604c8b5c2458415641554154415348c7c3010000004c8b4c2458ff15190600004c8b34244d8b264d89e54983fc0775494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15bd050000e9fb0000004d89f64d89ec4983fd0575494d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1560050000e9a60000004d89f64d89e54983fc0375464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1503050000eb544d89f64983fd0175464d89f6498b4608488d6424084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff15ac040000eb05488d642408eb444983fd09753e498b46084c8b4424404c8b5424704c8b7424684c8b6c24604c8b6424584c8b5c2450415641554154415348c7c3010000004c8b4c2450ff1559040000eb00415d4c892c24483b65187303ff5558e9b2fbffff488d64243048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424384c8b5424684c8b7424604c8b6c24584c8b6424504c8b5c2448415641554154415348c7c3010000004c8b4c2448ff15e0030000415d4c892c24483b65187303ff5558eba3488d6424084c8b2c244d89ee4983fd03754c488d6424084c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1573030000488d642408e9940000004d89f64983fe05488d64240875444c8b4424284c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff1516030000488d642408eb424c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15ca020000488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff1580020000488d64241048c7c001000000c23800f604240175764c8b2c244d8b75004d89ed41ff7508498b064d8b7608498d5ff0483b5d107306ff5550ca01404989df48c743f8010000004c89334c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c243041564155415441534c8b4c2430ff15fe010000415d4c892c24483b65187303ff5558eb84488d64241048c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424304c8b5424604c8b7424584c8b6c24504c8b6424484c8b5c2440415641554154415348c7c3010000004c8b4c2440ff158a010000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242848c7c3010000004c8b4c2430ff152f0100004c8b4424204c8b5424504c8b7424484c8b6c24404c8b6424384c8b5c24304156415541544153488b44242048c7c3010000004c8b4c2430ff15ea000000488d64241848c7c001000000c23800f604240175574c8b3424498b064d89f641ff76084c8b4424284c8b5424584c8b7424504c8b6c24484c8b6424404c8b5c2438415641554154415348c7c3010000004c8b4c2438ff1587000000415d4c892c24483b65187303ff5558eba3488d6424084c8b4424184c8b5424484c8b7424404c8b6c24384c8b6424304c8b5c24284156415541544153488b44242048c7c3010000004c8b4c2428ff152c000000488d64241048c7c001000000c23800f400000000|@15898,1,@2478,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7309,@7310,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7311,@7312,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308,@7308|3593,0,@15887 3738,0,@15888 3802,0,@15889 3871,0,@15891 3975,0,@15888 4039,0,@15889 4108,0,@15891 4403,0,@15887 4467,0,@15887 4531,0,@15892 6076,0,@15889 6140,0,@15887 6204,0,@15891 11641,0,@15887 11749,0,@15887 15624,0,@15891 15926,0,@15894 26104,0,@15887 32193,0,@15887 7308:D6,1992|483b65187306ff5558ca0907505341504151488b1c244c8b63f849c1e40849c1ec074983cc014c8b7424184d89f54d3bf47215488d64242048b81011d1f1c27f0000488b5d08ff234d89ed4889db4e8b74abfc4983fe010f85950000004d8b62f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64242048b89011d1f1c27f0000488b5d08ff234d89f64f8b74b2fc41ff3641ff7608488b442408ff15490700004c8b2c244d89ee4983fd01750a488d6424084989c6eb114c89f3ff15210700004989c6488d6424084156f64424200175114c8b7424204d8b364c8b2c24e93e05000049c7c601000000eb0b488d642420498b06c220004983fe01755f4c8b7424504d8b66f849c1e40849c1ec074983cc014c8b7424284d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424504d89ed4f8b74aefc41f6c601750c4d8b2e4c8b2424e93b03000049c7c601000000eb0b488d642430498b06c220004983fe010f85cf0000004c8b7424484d8b66f849c1e40849c1ec074983cc014c8b7424284d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424484d89ed4b8b44aefc4c8b7424404d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24404d89f64b8b5cb5fc4c8b5424504c8b6c24484c8b642440ff342441564155ff742420415449c7c0010000004c8b4c2438ff15b50500004989c64983fe0175074c8b742418eb16488d642430498b06c22000488d642430498b06c2200041f6c601750d498b064d8b6e084c8b2424eb71488d6424084c8b7424304d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24284d897500f6442408017514488d6424084c8b3424498b06488d642418c22000488d64242048b8504ad1f1c27f0000488b5d08ff2341f6c4010f85290100004d8b14244d8b5c24084c3bd07505e9f70000004d8b0a4d89c84983f90175464c8b084983f90175384d8b52084c8b48084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb05e9aa000000e9b00000004d89c14983f803755a4c8b084983f903754f4d8b52084c8b48084d3bd1750949c7c203000000eb314d8b02498b394c3bc7751f4d8b52084d8b49084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa037502eb44eb4d4983f90575474c8b084983f905753c4d8b52084c8b48084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb0949c7c403000000eb1deb004d89dc483b65187306ff5558ca0170e9cdfeffff49c7c4010000004983fc03746b488d6424104d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c8b2c244d8b55f849c1e20849c1ea074983ca014c8b5c24184d89dc4d3bda7215488d64242048b80017d1f1c27f0000488b5d08ff234d89ed4d89e44f8974a5fc488d642420c220004d89ee483b65187306ff5558ca0040e9bdfdffff41f6c4010f852c0100004d8b14244d8b5c24084d3bd57505e9fa0000004d8b0a4d89c84983f90175474d8b4d004983f90175384d8b52084d8b4d084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb05e9ac000000e9b20000004d89c14983f803755b4d8b4d004983f903754f4d8b52084d8b4d084d3bd1750949c7c203000000eb314d8b02498b394c3bc7751f4d8b52084d8b49084d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa037502eb45eb4e4983f90575484d8b4d004983f905753c4d8b52084d8b4d084d3bd1750949c7c203000000eb154d3bd1750949c7c203000000eb0749c7c2010000004983fa037402eb0949c7c503000000eb1deb004d89dc483b65187306ff5558ca0070e9cafeffff49c7c5010000004983fd0374444c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b5c24284d89dc4d3bda7215488d64243048b80017d1f1c27f0000488b5d08ff234d89ed4d89e44f8974a5fceb0749c7c601000000e946fbffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0060e9cefeffff49c7c6010000004983fe0374504c8b6424104d8b6c24f849c1e50849c1ed074983cd014c8b7424284d89f34d3bf57215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24204d89ee4d89e44d89db4f896c9cfc4d89f6eb0749c7c601000000e93bf9fffff40000000000|@15899,1,@2483,@7314,@7319,@7313|58,0,@9995 127,0,@9998 300,0,@9995 416,0,@9995 482,0,@9995 711,0,@10398 1119,0,@10034 1536,0,@10034 1936,0,@10034 7309:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@10112,1,@2479,@7308| 7310:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@10112,1,@2480,@7308| 7311:D4,408|483b65187306ff5558ca090753415041514152a8010f856b0100004c8b30ff70084d8b264d89e54983fc0b75584d8b5e084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375314d89e64d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70609000000e99b0000004983fd070f85910000004d8b66104d89e541f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc03756a498b46084d89ee41ff364c8b4424384c8b7424484c8b6c2440ff742418ff7424184156415548c7c3010000004c8b4c24484c8b542440ff15be0000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70609000000eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8abfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f40000|@10112,1,@2481,@7308| 7312:D4,456|483b65187306ff5558ca090753415041514152a8010f859d0100004c8b30ff70084d8b2e41ff76084d8b65004d89e64983fc0b75594d8b5d084d89dc41f6c301740949c7c303000000eb0749c7c3010000004983f3024983fb0375324d89e64d8b364d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450009000000e9990000004983fe070f858f0000004d8b65104d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc037568498b450841ff364c8b4424404c8b7424504c8b6c2448ff742420ff7424204156415548c7c3010000004c8b4c24504c8b542448ff15e80000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450009000000eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e879feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@10112,1,@2482,@7308| 7313:D3,144|483b65187305ff5558cd09a80175734c8b30488b40084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b74b3fc4983fe017505e9b5ffffff41ff36e8adffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@12733,1,@2490|45,0,@9995 7314:D7,2584|483b65187306ff5558ca090753415041514152a8010f85c7000000ff30ff70084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b6c24084d89ec4d3beb7215488d64243048b81011d1f1c27f0000488b5d08ff234d89e44d89f64b8b44a6fc4883f801755d4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64b8b44aefca801750d4c8b304c8b6c2458e9cc07000048c7c001000000e9bb070000a801750d4c8b304c8b6c2458e91c06000048c7c001000000e913050000f6442418010f85d20000004c8b6c24184d89ee41ff75004d89f641ff76084c8b7424184d8b5ef849c1e30849c1eb074983cb014c8b6c24084d89ec4d3beb7215488d64243048b81011d1f1c27f0000488b5d08ff234d89e44d89f64b8b44a6fc4883f801755d4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64b8b44aefca801750d4c8b304c8b6c2458e9ce02000048c7c001000000e9bd020000a801750d4c8b304c8b6c2458e91e01000048c7c001000000eb0f488d64242048c7c001000000c228004883f8010f85f40000004c8b7424384d8b66f849c1e40849c1ec074983cc014c8b7424084d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424384d89ed4b8b44aefc4c8b442440488b5c2420ff151c0800004889c34883fb0175035beb12488b0424ff15fe0700004889c3488d6424084d8d47e84c3b45107305ff5550cd084d89c749c740f8020000004c8b7424184d8970084c8b34244d8930488d642408488b7c24085e488d6424104c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c0010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e934fdffff488d642430c2280041f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96cfdffffe967fdffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96dfeffff4883f8010f85eb0000004c8b7424484d8b66f849c1e40849c1ec074983cc014c8b7424084d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424484d89ed4b8b44aefc4c8b442440488b5c2420ff15e50300004889c34883fb01750358eb0f488b0424ff15c7030000488d6424084d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424184d8970084c8b34244d8930488d642408488b5c2418488b7c24085e488d6424184c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e916f9ffff488d642430c2280041f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e975fdffffe970fdffff41f6c5010f85280100004d8b5d004d8b65084d3bde7505e9f70000004d8b134d89d14983fa0175464d8b164983fa0175384d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e9aa000000e9b00000004d89ca4983f903755a4d8b164983fa03754f4d8b5b084d8b56084d3bda750949c7c303000000eb314d8b0b4d8b024d3bc8751f4d8b5b084d8b52084d3bda750949c7c303000000eb0749c7c301000000eb0749c7c3010000004983fb037502eb44eb4d4983fa0575474d8b164983fa05753c4d8b5b084d8b56084d3bda750949c7c303000000eb154d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb0949c7c603000000eb1deb004d89e5483b65187306ff5558ca0160e9cefeffff49c7c6010000004983fe0374434c8b7424184d8b66f849c1e40849c1ec074983cc014c8b6c24504d3bec7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24504d89f64b8944aefceb0748c7c001000000e96dfefffff400000000|@15900,1,@2484,@7316,@7317,@7318,@7315|73,0,@9995 143,0,@9995 297,0,@9995 367,0,@9995 513,0,@9995 1081,0,@10034 1484,0,@10034 1576,0,@9995 2135,0,@10034 2538,0,@10034 7315:D3,232|483b65187306ff5558ca0901a801750bff30488b40084989deeb0848c7c001000000c341f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983fe0374054d89c6eb0a488d642408e994ffffff41f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983f6024983fe037534e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb82f40000|@9893,1,@2488| 7316:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2485| 7317:D3,232|483b65187306ff5558ca0901a801750bff30488b40084989deeb0848c7c001000000c341f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983fe0374054d89c6eb0a488d642408e994ffffff41f6c60175274d8b264d8b6e084c3b2424750949c7c603000000eb184d89ee483b65187306ff5558ca0941ebd349c7c6010000004983f6024983fe037534e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb82f40000|@9893,1,@2486| 7318:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2487| 7319:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2489| 7320:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2491| 7321:D3,504|483b65187306ff5558ca09074d8b70f849c1e60849c1ee074983ce01493bde721048b89011d1f1c27f0000488b5d08ff234d8b7498fc4d8b3641f6c60175264d8b264d8b6e084c3be0750949c7c603000000eb184d89ee483b65187306ff5558ca0946ebd449c7c6010000004983fe03750848c7c001000000c34d8b71f849c1e60849c1ee074983ce01493bde721048b81011d1f1c27f0000488b5d08ff234d8b6499fc4d8b72f849c1e60849c1ee074983ce01493bc6721048b81011d1f1c27f0000488b5d08ff234d8b6c82fc4d89e641f6c60175264d8b064d8b5e084c3bc0750949c7c603000000eb184d89de483b65187306ff5558ca0976ebd449c7c6010000004983fe037502eb4c4d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d8966084989064d8b61f849c1e40849c1ec074983cc01493bdc721048b80017d1f1c27f0000488b5d08ff234d897499fc4d89ee41f6c60175264d8b1e4d8b66084c3bdb750949c7c603000000eb184d89e6483b65187306ff5558ca0964ebd449c7c6010000004983fe03750848c7c001000000c34d8d77e84c3b75107306ff5550ca09244d89f749c746f8020000004d896e0849891e4d8b6af849c1e50849c1ed074983cd01493bc5721048b80017d1f1c27f0000488b5d08ff234d897482fc48c7c001000000c3f400000000000000|@15902,1,@2493|35,0,@9998 145,0,@9995 187,0,@9995 325,0,@10034 469,0,@10034 7322:D6,1112|483b65187305ff5558cd0950534c8b2c244d89ee4983fd017d0a488d642410e9f50000004d89f64d89f54c3b351f0400000f8ddd0000004d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41564d89ed4d89ee4983fd017d07488d642418eb744d89f64d89f54c3b35ab0300007d604d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564c8b7424184d8b76f849c1e60849c1ee074983ce0141566a01eb2a488d64241848b8d015d1f1c27f0000488b5d08ff23488d64241048b8d015d1f1c27f0000488b5d08ff234c8b34244d89f54c3b7424080f82a9000000488d6424104c8b7424104d89f54983fe017510488d64242048b84882d1f1c27f0000c34d89ed4d89ee4983fd017e654d89f64d89f54c3b35c90200007d4f4d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c501000000e98f010000488d642420eb05488d64242048b8d010d3f1c27f0000488b5d08ff234d89ed4c8b7424284f8b74aefc41ff7608498b461841ff76386a016a01488b5c24104989e0ff1571020000ff3424ff3424f60424010f85c80000004c8b2c244d89ee41ff75004d89f641ff76084c8b7424584d8b5ef849c1e30849c1eb074983cb014c8b6424084d89e54d3be37215488d64247048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64b8b44aefc6a016a01488b5c24284989e0ff15f3010000415e488d6424084c8b6c24584d8b55f849c1e20849c1ea074983ca014c8b5c24084d89dc4d3bda7215488d64247048b80017d1f1c27f0000488b5d08ff234d89ed4d89e44f8974a5fc415d488d6424084c892c24483b65187303ff5558e92effffff488d642420ff742408f604240175424c8b2c244d8b75004d89ed41ff7508498b06498b5e084d8b46104d8b4e18ff742438ff7424384c8b542420ff1549010000415d4c892c24483b65187303ff5558ebb8488d6424184c8b2c244983c5024c892c24483b65187303ff5558e9d2fdffff4c8b6424104d3be57f0e488d642420418066ffbf4c89f0c34c8b6424084d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b5cacfc4c8b24244d8b5424f849c1e20849c1ea074983ca014d3bea7215488d64242048b81011d1f1c27f0000488b5d08ff234d89e44f8b54acfc4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c244f8964aefc4d89ec4983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0060e91dfffffff40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@15903,1,@2494,@7324,@7323,@7323|262,0,@10027 283,0,@10027 341,0,@10817 470,0,@13764 602,0,@9995 693,0,@10034 913,0,@9995 968,0,@9995 1048,0,@9475 7323:D3,744|483b65187306ff5558ca0901505341504c8b7424104d89f54983fe0175564c8b7424084d89f54983fe017527415d49bee05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c410c3415e4d89ed4d892e488d64240849c746080100000048c7c0010000004883c408c34d89ed4d89ee41ff75004d89f64c89f041ff76084c8b7424184d89f54983fe017521488d642410415e4889c049890649c746080100000048c7c0010000004883c410c34d89ed4d89ee41ff75004d89f64c89f341ff76084c8b6c24184d89ee4c3b6c24080f85be0000006a016a01488b442420488b5c24104989e0e80cffffff415e415d4c8b6424104d3be6751f488d642420415e4c8b6424084d89264d896e0848c7c0010000004883c410c34c8b24244d3be6488d6424087523488d642418415e4c8b24244d8926488d6424084d896e0848c7c0010000004883c408c3488d6424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408415e4d892e49c746080100000048c7c0010000004883c410c34d89f64c3b7424080f8d9a000000488d6424106a016a01488b4424104989e0e840feffff415e415d4c3b3424488d6424087507488d642408eb504983fd0374454d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d642408415e4d892e49c746080100000048c7c0010000004883c410c3488d642408415e4c8b6c24084d892e49c746080100000048c7c0010000004883c410c36a016a01488b5c24104989e0e8abfdffff415e415d4c3b3424488d6424087507488d642418eb534983fd0374484d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b7424104d892e49c746080100000048c7c0010000004883c428c3488d642418415e4c8b2c244d892e488d64240849c746080100000048c7c0010000004883c408c3f400000000000000|@15914,1,@2530|48,0,@10544 7324:D67,16928|488dbc2448ffffff483b7d187306ff5560ca090753415141526a016a016a016a016a016a01488b4424404889e3ff15fd430000488b442410ff742428ff15e64300004989c64156488b442408ff15ce4300004989c64156ff7424086a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff15984300004989c4415d4c8924244c896c2408483b65187303ff5558ebc45b488b442458ff156b4300004989c641564c8b7424684d8b364c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95d010000909090e97f010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e98b070000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e98d070000909090e9f3000000909090e9eb000000909090e99f070000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9a1070000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9440a0000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b742418e91c0a00004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15bb4100004989c6e9f20900004c8b7424684d8b76084d8b2e4983fd090f85050300004d8b76184d8b2e4d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15b33e00004889c34883fb0175074c8b742418eb0e488b442418ff15903e00004989c6e9140300004d8b76184d8b264d89e54983fc070f85fb0200004d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15913b00004889c34883fb0175074c8b742418eb0e488b442418ff156e3b00004989c6eb054c8b742418e9be0300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15353b00004989c6e9940300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15033b00004989c6e96a0300004c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15d13a00004989c6e9400300004c8b7424684d8b76184d8b264d89e54983fc070f85fb0200004d89ec4983fd0b75414d8b760841f6c601752b4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000e98b0200004d89e54983fc070f85450200004d8b66084d8b5e104d8b6e184983fb010f85060100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920e9270100004d8b334d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930eb394983fd09752c4d8b7608498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930eb0748c7c001000000ff15cd3700004889c34883fb0175074c8b742418eb0e488b442418ff15aa3700004989c6eb054c8b742418eb254c8b7424104983fe0175074c8b742418eb13488b442418488b5c2410ff15743700004989c64156ff34246a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff153f3700004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742418f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424b80000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da424a800000048b81011d1f1c27f0000488b5d08ff234c8bb424b80000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff159f360000415e488d6424084c8bac24b80000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da424a800000048b80017d1f1c27f0000488b5d08ff234c8bac24b80000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424a00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249000000048b81011d1f1c27f0000488b5d08ff234c8bb424a00000004c8b6c24084b8b44aefc6a016a01488b9c24900000004989e0ff15a8350000415e488d6424084c8bac24a00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249000000048b80017d1f1c27f0000488b5d08ff234c8bac24a00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642408ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424a00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249000000048b81011d1f1c27f0000488b5d08ff234c8bb424a00000004c8b6c24084b8b44aefc6a016a01488b9c24880000004989e0ff15b1340000415e488d6424084c8bac24a00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249000000048b80017d1f1c27f0000488b5d08ff234c8bac24a00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642410ff7424106a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff150f3400004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742428f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424b00000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da424a000000048b81011d1f1c27f0000488b5d08ff234c8bb424b00000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff156f330000415e488d6424084c8bac24b00000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da424a000000048b80017d1f1c27f0000488b5d08ff234c8bac24b00000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff742410f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424980000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248800000048b81011d1f1c27f0000488b5d08ff234c8bb424980000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff157a320000415e488d6424084c8bac24980000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248800000048b80017d1f1c27f0000488b5d08ff234c8bac24980000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642418ff3424f60424010f85d40000004c8b342441ff364c8b74240841ff76084c8bb424880000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64247848b81011d1f1c27f0000488b5d08ff234c8bb424880000004c8b6c24084b8b44aefc6a016a01488b5c24704989e0ff1589310000415e488d6424084c8bac24880000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7215488d64247848b80017d1f1c27f0000488b5d08ff234c8bac24880000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e922ffffff488d6424084c8b7424584d8b364983fe1f75154c8b7424584d8b6e0849c7c601000000e93e2c00004c8b7424584d8b364c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e95a010000909090e959010000909090e958010000909090e957010000909090e959010000909090e98a010000909090e9cf010000909090e9ce010000909090e913020000909090e915020000909090e972020000909090e9af020000909090e9ae020000909090e9ad020000909090e9ee020000909090e9ed020000909090e9ec020000909090e9eb020000909090e9ea020000909090e9e9020000909090e9e8020000909090e9e7020000909090e9e6020000909090e9e5020000909090e916030000909090e915030000909090e914030000909090e913030000909090e912030000909090e911030000909090e910030000909090e95f030000909090e95e030000909090e95d030000909090e95c030000909090e95b030000909090e95a030000909090e959030000909090e958030000909090e957030000909090e956030000909090e984030000909090e983030000909090488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460e98b000000488d642458415e4d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e96f280000488d6424584c8b342441ff76084c8b7424084d8b66104c8b7424084d8b6e184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9ba210000488d642460eb52488d6424584c8b342441ff76104c8b7424084d8b66184c8b7424084d8b6e204d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9fe1a0000488d642460e9af0000004c8b7424584d8b6e084d8b75084d8b65184d8b6d204d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d89f4e9fc140000488d642458415e4d8b760841ff364d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b24244d8965004d89ece9ab0f0000488d642460eb05488d642460eb4e488d6424584c8b34244d8b66084c8b34244d8b6e10415e41ff76184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d89f4e9f0080000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb3e488d642458415e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e97f060000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb5c488d6424084c8b7424504d8b76084d8b76204d8b2e4983fd0975324d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5e990020000488d642458e981020000488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb05488d642460eb3b488d642458415e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f5eb16488d642460eb05488d64246048c7c001000000c2100041f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb02ebb041f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9741f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15f42a00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15c92a0000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f01dd4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffffe9fbfdffff41f6c50175464d8b55004d8b65084c8b5c24684d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64245848b81011d1f1c27f0000488b5d08ff234c8b5c24684f8b5c93fce96f010000415e4883c45041f6c60175414d8b164d8b6e084c8b6424084d8b6424f849c1e40849c1ec074983cc014d3bd4721048b81011d1f1c27f0000488b5d08ff234c8b6424084f8b5c94fc4d89dceb05e95dffffff41f6c4010f858d0000004d8b04244d8b4c24084c3b05272900007502eb5c498b304889f74883fe017502eb574883ff0375514d8b40084c3b05fc280000750949c7c003000000eb2c498b384883ff03751c4d8b40084983f801750949c7c003000000eb0749c7c001000000eb0749c7c0010000004983f803750949c7c403000000eb1b4d89cc483b65187306ff5558ca007ce969ffffff49c7c4010000004983fc037502eb634d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849bb081ed4f1c27f00004d891c244c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bd3721048b80017d1f1c27f0000488b5d08ff234c8b5c24084f896493fc4d89ee483b65187306ff5558ca0040e997feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e91ffeffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24604d8b49f849c1e10849c1e9074983c901493bf97215488d64245848b81011d1f1c27f0000488b5d08ff234c8b4c24604d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b155c2700007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1531270000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8081ed4f1c27f00004d89014c8b4424604d8b40f849c1e00849c1e8074983c801493bf87215488d64245848b80017d1f1c27f0000488b5d08ff234c8b4424604d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e93afaffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b154e2500007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1523250000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f01dd4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c40175474d8b0c244d8b5c24084c8b5424184d8b52f849c1e20849c1ea074983ca014d3bca7215488d64240848b81011d1f1c27f0000488b5d08ff234c8b5424184f8b548afce95a0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24184d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64240848b81011d1f1c27f0000488b5d08ff234c8b5c24184f8b5c93fce9280200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f541f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e950f7ffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15542200007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1529220000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8081ed4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e966fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24104d8b49f849c1e10849c1e9074983c901493bf97215488d64240848b81011d1f1c27f0000488b5d08ff234c8b4c24104d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b158c2000007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1561200000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f01dd4f1c27f00004d89014c8b4424104d8b40f849c1e00849c1e8074983c801493bf87215488d64240848b80017d1f1c27f0000488b5d08ff234c8b4424104d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e933fbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424104d8b40f849c1e00849c1e8074983c801493bf07215488d64240848b81011d1f1c27f0000488b5d08ff234c8b442410498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0dbf1e00007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d941e0000750948c7c103000000eb2c488b194883fb0f751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf2850d4f1c27f0000498938488b7c2410488b7ff848c1e70848c1ef074883cf01483bf77215488d64240848b80017d1f1c27f0000488b5d08ff23488b7c24104c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424184d8b52f849c1e20849c1ea074983ca014d3bca7215488d64240848b81011d1f1c27f0000488b5d08ff234c8b5424184f8b548afce90203000041f6c601753e4d8b2e41ff76084d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004c8b5c24084d891c244d89e3eb0a488d642408e98bf1ffff41f6c30175424d8b0b41ff73084c8b5424284d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241848b81011d1f1c27f0000488b5d08ff234c8b5424284f8b548afceb16415d4d89ee483b65187306ff5558ca0040e954ffffff41f6c201750c498b3a41ff72084d89e1eb16415a4d89d3483b65187306ff5558ca0078e97affffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9da0100004c8b4c24284d8b49f849c1e10849c1e9074983c901493bf97215488d64242048b81011d1f1c27f0000488b5d08ff234c8b4c24284d8b44b9fc4d89c141f6c1010f852a010000498b11498b7108493bd57505e9fa000000488b0a4889cb4883f9017547498b4d004883f9017538488b5208498b4d08483bd1750948c7c203000000eb15483bd1750948c7c203000000eb0748c7c2010000004883fa037402eb05e9ac000000e9b20000004889d94883fb03755b498b4d004883f903754f488b5208498b4d08483bd1750948c7c203000000eb31488b1a488b01483bd8751f488b5208488b4908483bd1750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa037502eb45eb4e4883f9057548498b4d004883f905753c488b5208498b4d08483bd1750948c7c203000000eb15483bd1750948c7c203000000eb0748c7c2010000004883fa037402eb0949c7c103000000eb1deb004989f1483b65187306ff5558ca807fe9ccfeffff49c7c1010000004983f9037502eb5b4d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d8941084d89294c8b4424284d8b40f849c1e00849c1e8074983c801493bf87215488d64242048b80017d1f1c27f0000488b5d08ff234c8b4424284d894cb8fc41594d89ca483b65187306ff5558ca007ce9aafdffff41f6c201750c498b324d8b4a084d89e8eb144d89dc483b65187306ff5558ca0070e98bfcffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424104d8b40f849c1e00849c1e8074983c801493bf07215488d64240848b81011d1f1c27f0000488b5d08ff234c8b442410498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0da31900007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d78190000750948c7c103000000eb2c488b194883fb01751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bff01dd4f1c27f0000498938488b7c2410488b7ff848c1e70848c1ef074883cf01483bf77215488d64240848b80017d1f1c27f0000488b5d08ff23488b7c24104c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424704d8b52f849c1e20849c1ea074983ca014d3bca7215488d64246048b81011d1f1c27f0000488b5d08ff234c8b5424704f8b548afce989030000415e4883c45841f6c60175434d8b0e4d8b66084c8b5c24084d8b5bf849c1e30849c1eb074983cb014d3bcb721048b81011d1f1c27f0000488b5d08ff234c8b5c24084f8b548bfc4d89d3e9220200004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e90cecffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15d01600007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15a5160000750948c7c203000000eb2c488b0a4883f905751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8a85ed1f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c3010f858b000000498b3b4d8b4308483b3da81500007502eb5c488b174889d64883fa017502eb574883fe037551488b7f08483b3d7d150000750948c7c703000000eb2c488b374883fe05751c488b7f084883ff01750948c7c703000000eb0748c7c701000000eb0748c7c7010000004883ff03750949c7c303000000eb1b4d89c3483b65187306ff5558ca007ee96bffffff49c7c3010000004983fb037502eb604d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d89530849baa85ed1f1c27f00004d89134c8b5424084d8b52f849c1e20849c1ea074983ca014d3bca721048b80017d1f1c27f0000488b5d08ff234c8b5424084f895c8afc4d89e6483b65187306ff5558ca0060e97dfcffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e904fcffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424684d8b40f849c1e00849c1e8074983c801493bf07215488d64246048b81011d1f1c27f0000488b5d08ff234c8b442468498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0de01300007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0db5130000750948c7c103000000eb2c488b194883fb01751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bff01dd4f1c27f0000498938488b7c2468488b7ff848c1e70848c1ef074883cf01483bf77215488d64246048b80017d1f1c27f0000488b5d08ff23488b7c24684c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424204d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b5424204f8b548afce95e0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24204d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64241048b81011d1f1c27f0000488b5d08ff234c8b5c24204f8b5c93fce92c0200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f54883c40841f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e949e6ffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15dd1000007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15b2100000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8081ed4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e962fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24184d8b49f849c1e10849c1e9074983c901493bf97215488d64241048b81011d1f1c27f0000488b5d08ff234c8b4c24184d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15150f00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b15ea0e0000750948c7c203000000eb2c488b0a4883f90f751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b82850d4f1c27f00004d89014c8b4424184d8b40f849c1e00849c1e8074983c801493bf87215488d64241048b80017d1f1c27f0000488b5d08ff234c8b4424184d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e92ffbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424184d8b40f849c1e00849c1e8074983c801493bf07215488d64241048b81011d1f1c27f0000488b5d08ff234c8b442418498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0d480d00007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d1d0d0000750948c7c103000000eb2c488b194883fb0d751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf501ed4f1c27f0000498938488b7c2418488b7ff848c1e70848c1ef074883cf01483bf77215488d64241048b80017d1f1c27f0000488b5d08ff23488b7c24184c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c40175474d8b0c244d8b5c24084c8b5424204d8b52f849c1e20849c1ea074983ca014d3bca7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b5424204f8b548afce95e0400004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d89f541f6c50175464d8b55004d8b65084c8b5c24204d8b5bf849c1e30849c1eb074983cb014d3bd37215488d64241048b81011d1f1c27f0000488b5d08ff234c8b5c24204f8b5c93fce92c0200004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084d89f54883c40841f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e9e1dfffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15450a00007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b151a0a0000750948c7c203000000eb2c488b0a4883f903751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8081ed4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c301750c498b3b4d8b53084d89f1eb144d89e5483b65187306ff5558ca0060e962fdffff41f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e9450100004c8b4c24184d8b49f849c1e10849c1e9074983c901493bf97215488d64241048b81011d1f1c27f0000488b5d08ff234c8b4c24184d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b157d0800007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1552080000750948c7c203000000eb2c488b0a4883f90f751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb654d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b82850d4f1c27f00004d89014c8b4424184d8b40f849c1e00849c1e8074983c801493bf87215488d64241048b80017d1f1c27f0000488b5d08ff234c8b4424184d894cb8fc4d89d3483b65187306ff5558ca0078e943feffff41f6c201750c498b324d8b4a084d89f0eb144d89dc483b65187306ff5558ca0070e92ffbffff41f6c0017526498b10498b7808483bd6750949c7c003000000eb184989f8483b65187306ff5558ca407febd449c7c0010000004983f8037505e9450100004c8b4424184d8b40f849c1e00849c1e8074983c801493bf07215488d64241048b81011d1f1c27f0000488b5d08ff234c8b442418498b7cb0fc4989f841f6c0010f858b000000498b08498b5008483b0db00600007502eb5c488b014889c34883f8017502eb574883fb037551488b4908483b0d85060000750948c7c103000000eb2c488b194883fb0d751c488b49084883f901750948c7c103000000eb0748c7c101000000eb0748c7c1010000004883f903750949c7c003000000eb1b4989d0483b65187306ff5558cac07fe96bffffff49c7c0010000004983f8037502eb654d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004989780848bf501ed4f1c27f0000498938488b7c2418488b7ff848c1e70848c1ef074883cf01483bf77215488d64241048b80017d1f1c27f0000488b5d08ff23488b7c24184c8944b7fc4d89ca483b65187306ff5558ca007ce943feffff41f6c501753e4d8b55004d8b65084c8b5c24104d8b5bf849c1e30849c1eb074983cb014d3bd3721048b81011d1f1c27f0000488b5d08ff234c8b5c24104f8b5c93fceb05e96edaffff41f6c301750c498b3b4d8b53084d89f1eb114d89e5483b65187306ff5558ca0060eb9441f6c1017526498b314d8b4108483bf7750949c7c103000000eb184d89c1483b65187306ff5558ca807eebd449c7c1010000004983f9037505e93b0100004c8b4c24084d8b49f849c1e10849c1e9074983c901493bf9721048b81011d1f1c27f0000488b5d08ff234c8b4c24084d8b44b9fc4d89c141f6c1010f858b000000498b11498b7108483b15a20400007502eb5c488b1a4889d94883fb017502eb574883f9037551488b5208483b1577040000750948c7c203000000eb2c488b0a4883f901751c488b52084883fa01750948c7c203000000eb0748c7c201000000eb0748c7c2010000004883fa03750949c7c103000000eb1b4989f1483b65187306ff5558ca807fe96bffffff49c7c1010000004983f9037502eb604d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d89410849b8f01dd4f1c27f00004d89014c8b4424084d8b40f849c1e00849c1e8074983c801493bf8721048b80017d1f1c27f0000488b5d08ff234c8b4424084d894cb8fc4d89d3483b65187306ff5558ca0078e950feffff41f6c50175424d8b5d004d8b65084d8b53084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb84156ff34246a01f64424080175354c8b742408498b1e4c8b74240841ff7608488b442408ff15200300004989c4415d4c8924244c896c2408483b65187303ff5558ebc4ff3424ff742418f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424a80000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4249800000048b81011d1f1c27f0000488b5d08ff234c8bb424a80000004c8b6c24084b8b44aefc6a016a01488b5c24284989e0ff1580020000415e488d6424084c8bac24a80000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8bac24a80000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642420ff3424f60424010f85dd0000004c8b342441ff364c8b74240841ff76084c8bb424900000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424900000004c8b6c24084b8b44aefc6a016a01488b9c24800000004989e0ff1589010000415e488d6424084c8bac24900000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24900000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e919ffffff488d642408ff3424f60424010f85da0000004c8b342441ff364c8b74240841ff76084c8bb424900000004d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424900000004c8b6c24084b8b44aefc6a016a01488b5c24784989e0ff1595000000415e488d6424084c8bac24900000004d8b65f849c1e40849c1ec074983cc014c8b6c24084d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24900000004c8b6424084f8974a5fc415d488d6424084c892c24483b65187303ff5558e91cffffff488d642410e967d0fffff4000000000000|@15909,1,@2497,@7323,@7323,@7323,@7328,@10542,@15619,@15548,@15623,@15120,@15890,@11193,@15620,@15548,@15623,@15120,@15890,@11193,@15620,@10542,@15619,@10535,@10534,@10535,@10534,@10542,@15619,@15120,@15890,@10542,@15619,@11193,@15620,@10542,@15619,@11193,@15620,@11193,@15620,@10542,@15619,@7323,@7323,@7323,@7329,@7323,@7323,@7323,@7330,@7331,@7332,@7333,@7334,@7335,@7336,@7337,@7338,@7339,@7340,@7341,@7342,@7343,@7344,@7345,@7325|3287,0,@9995 3388,0,@10034 3523,0,@9995 3627,0,@10034 3762,0,@9995 3866,0,@10034 4071,0,@9995 4172,0,@10034 4308,0,@9995 4409,0,@10034 4541,0,@9995 4639,0,@10034 6064,0,@9995 6217,0,@9995 6441,0,@15619 6480,0,@10034 6576,0,@9995 6653,0,@9995 6888,0,@15620 6928,0,@10034 7105,0,@9995 7329,0,@15620 7373,0,@10034 7459,0,@9995 7615,0,@9995 7839,0,@15619 7878,0,@10034 7970,0,@9995 8087,0,@9995 8205,0,@9995 8361,0,@9995 8585,0,@15620 8624,0,@10034 8801,0,@9995 9025,0,@15619 9069,0,@10034 9246,0,@9995 9470,0,@15890 9514,0,@10034 9606,0,@9995 9759,0,@9995 9942,0,@9995 10359,0,@10034 10538,0,@9995 10762,0,@15619 10806,0,@10034 10898,0,@9995 10974,0,@9995 11089,0,@9995 11245,0,@9995 11469,0,@10534 11508,0,@10034 11749,0,@10534 11788,0,@10034 11965,0,@9995 12189,0,@15619 12233,0,@10034 12325,0,@9995 12442,0,@9995 12564,0,@9995 12720,0,@9995 12944,0,@15620 12983,0,@10034 13160,0,@9995 13384,0,@15890 13428,0,@10034 13605,0,@9995 13829,0,@15623 13873,0,@10034 13965,0,@9995 14082,0,@9995 14204,0,@9995 14360,0,@9995 14584,0,@15620 14623,0,@10034 14800,0,@9995 15024,0,@15890 15068,0,@10034 15245,0,@9995 15469,0,@15623 15513,0,@10034 15599,0,@9995 15755,0,@9995 15979,0,@15619 16018,0,@10034 16278,0,@9995 16379,0,@10034 16514,0,@9995 16618,0,@10034 16753,0,@9995 16854,0,@10034 7325:D13,20248|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e95b010000909090e9b3010000909090e934020000909090e928060000909090e9a9060000909090e9f1060000909090e972070000909090e919080000909090e99a080000909090e95e090000909090e9df090000909090e9d30d0000909090e9820e0000909090e9030f0000909090e93e0f0000909090e9e50f0000909090e99c100000909090e941140000909090e9d3150000909090e92b160000909090e983160000909090e9731a0000909090e9cb1a0000909090e9231b0000909090e9cf1e0000909090e9271f0000909090e97f1f0000909090e9b01f0000909090e908200000909090e9d2230000909090e99d270000909090e9422b0000909090e9352f0000909090e939340000909090e9e2370000909090e963380000909090e912390000909090e9b63c0000909090e9913d0000909090e95b410000909090e925450000909090e9f0480000909090e968490000909090e9e94900009090904c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8b6e084d8b5e104d8b66184d8b56204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b70104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b7008ff70104c89f0ff157c4800004989c54c8b74240849c7060100000049c74608010000004d896e104c8b2c244d896e18488d64241049c746200100000049c746280100000048c7c001000000c34c8b68084c8b70104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b58104c8b60184c8b70204d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24415d49c74500010000004d89650849c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b60184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508030000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8b2e4d8b56084d8b66184d8b5e204d8b75004d89f14983fe0b75414d8b750841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98b0200004d89ce4983f9070f85450200004d8b4d084d8b75104d8b45184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb394983fe09752c4d8b75084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b700841ff3641ff760841ff762048b87053d4f1c27f0000488b1c244c8b442408ff15fa4000004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24184d892e415648b8b853d4f1c27f0000488b5c24104c8b442418ff15a94000004989c64c8b6c242849c745000100000049c74508010000004c8b24244d896510488d64240849c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c3415d49be0854d4f1c27f00004d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b76284d89752848c7c001000000c34c8b70084c8b60104c8b68184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415d49c745000100000049c745080300000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c3ff70084c8b7010ff70184983fe01750949c7c601000000eb294d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648b87053d4f1c27f0000488b5c24104c8b442408ff15823e00004989c6415648b8b853d4f1c27f0000488b5c24184c8b442410ff155b3e00004989c64c8b6c242049c745000100000049c74508010000004c8b6424084d89651049c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68184d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508030000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b6808ff70104c8b701841f6c501752c4d8b6d00498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c8928eb0748c7c0010000004d8b264d89e54983fc07752f4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933e9a30000004d89ec4983fd05752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb6e4d89e54983fc03752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb394983fd01752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054989c6eb09ff15313900004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b2c244d892c24488d642408415d49c745000100000049c74508030000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608030000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b68084c8b58104c8b60184c8b50204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b60084c8b68104d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b415d49c745000100000049c745080300000049c74510010000004d895d184d8965204d89752848c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b70104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500415e49c7060100000049c746080300000049c74610010000004d896e1849c746200100000049c746280100000048c7c001000000c34c8b6810415e49c706010000004d896e0849c746100100000049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415d49c745000100000049c745080100000049c745100100000049c745180100000049c74520010000004d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58104c8b68184c8b60204d8b75004d89f24983fe0b75414d8b750841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98b0200004d89d64983fa070f85450200004d8b55084d8b75104d8b4d184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb394983fe09752c4d8b75084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084c8b68104d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b70084d8b2e4d8b5e104d8b56184d8b66204d8b34244d89f14983fe0b75424d8b74240841f6c601752b4d8b364d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c101000000e98f0200004d89ce4983f9070f85480200004d8b4c24084d8b7424104d8b4424184983fe010f8508010000498b384989fe4883ff07752f4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930e9a30000004c89f74983fe05752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb6e4989fe4883ff03752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb394983fe01752c4d8b70084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8930eb0749c7c0010000004d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d89f1e9250100004d8b36498b304889f74883fe07752f4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907e9a30000004889fe4883ff05752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb6e4889f74883fe03752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb394883ff01752c4d8b4008498d7fe8483b7d107306ff5550ca007f4989ff48c747f80200000048c74708010000004c8907eb0748c7c7010000004d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d8931eb3a4983fe09752d4d8b7424084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d891e4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d89134d8b0c244d89ca4983f90375304d8b5424084d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb3d4983fa0b75304d8b5424184d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d891424eb0749c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f8010000004d892a415d49c74500010000004d8955084d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084d8b2c244d8b74241041ff7424204c8b24244d8b1c244d89da4983fb0b75494d89e44d8b64240841f6c401752f4d8b1c244d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c401000000e9a40200004d89e44d89d34983fa070f85510200004d89e24d8b62084d89d24d8b5a104d89d24d8b52184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d89dce9280100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c24eb434d89e44983fb0975334d89e44d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004154498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89284d8b264d89e54983fc07752f4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933e9a30000004d89ec4983fd05752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb6e4d89e54983fc03752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb394983fd01752c4d8b7608498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933eb0748c7c3010000004883fb0175054889c3eb09ff15c91a00004889c34883fb017504415eeb12488b0424ff15aa1a00004989c6488d6424084c8b2c244d8b5d004d89dc4983fb0375374d89ed4d8b6d08488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24eb4c4d89ed4983fc0b75374d89ed4d8b6d18488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24eb0c488d64240849c7c401000000415d49c745000100000049c745080300000049c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b60104c8b68184d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa03752d4d8b6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d8923eb3a4983fb0b752d4d8b6424184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d8923eb0749c7c3010000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d49c745000100000049c745080300000049c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b60104d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b700841ff3641ff760841ff761848b87053d4f1c27f0000488b1c244c8b442410ff15721500004989c641564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e415648b8b853d4f1c27f0000488b5c24104c8b442420ff15211500004989c64c8b6c242849c745000100000049c74508010000004c8b24244d896510488d64240849c74518010000004d8975204c8b34244d897528488d64242848c7c001000000c34c8b60084c8b68104d8b34244d89f34983fe0b75424d8b74240841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98f0200004d89de4983fb070f85480200004d8b7424084d8b5c24104d8b5424184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb3a4983fe09752d4d8b5c24084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b68084c8b70104c8b601841f6c60175504d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d89264d89f44d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d8966084d891eeb264d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58084c8b60104c8b68184d8b34244d89f24983fe0b75424d8b74240841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98f0200004d89d64983fa070f85480200004d8b5424084d8b7424104d8b4c24184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb3a4983fe09752d4d8b7424084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8b14244d89d34983fa0375304d8b5c24084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb3d4983fb0b75304d8b5c24184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d891c24eb0749c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b415d49c74500010000004d895d0849c745100100000049c74518010000004d8965204d89752848c7c001000000c34c8b58104c8b68184c8b60204d8b75004d89f24983fe0b75414d8b750841f6c601752b4d8b364d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c201000000e98b0200004d89d64983fa070f85450200004d8b55084d8b75104d8b4d184983fe010f85080100004d8b014d89c64983f807752f4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931e9a30000004d89f04983fe05752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb6e4d89c64983f803752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb394983fe01752c4d8b71084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8931eb0749c7c1010000004d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d89f2e9250100004d8b36498b394989f84883ff07752f4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908e9a30000004c89c74983f805752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb6e4989f84883ff03752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb394983f801752c4d8b49084d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d8908eb0749c7c0010000004d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d8932eb394983fe09752c4d8b75084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d8932eb0749c7c2010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c34c8b60084c8b70104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d893424415e4d892649c74608010000004d896e1049c746180100000049c746200100000049c746280100000048c7c001000000c34c8b68084c8b60184d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c24415d49c745000100000049c74508010000004d89651049c745180100000049c74520010000004d89752848c7c001000000c34c8b60084c8b68104d8b75004d89f34983fe0b75414d8b750841f6c601752b4d8b1e4d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c601000000e98b0200004d89de4983fb070f85450200004d8b75084d8b5d104d8b55184983fb010f85080100004d8b0a4d89cb4983f907752f4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891ae9a30000004d89d94983fb05752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb6e4d89cb4983f903752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb394983fb01752c4d8b5a084d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891aeb0749c7c2010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d89dee9250100004d8b1b4d8b024d89c14983f807752f4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911e9a30000004d89c84983f905752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb6e4d89c14983f803752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb394983f901752c4d8b52084d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d8911eb0749c7c1010000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891eeb394983fe09752c4d8b5d084d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d891eeb0749c7c6010000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8b55004d89d44983fa03752f4d8b6d084d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb3c4983fc0b752f4d8b6d184d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049c7442408010000004d892c24eb0749c7c401000000415d49c745000100000049c74508010000004d895d1049c74518010000004d8965204d89752848c7c001000000c3f4000000000000|@15912,1,@2516,@7347,@7347,@7350,@7351,@7352,@7353,@7353,@7356,@7356,@7346|3679,0,@15904 3751,0,@15906 3986,0,@15908 4294,0,@15904 4325,0,@15906 14767,0,@15904 14839,0,@15906 7326:D3,736|483b65187305ff5558cd014c8b304d89f54983fe0b753c4c8b700841f6c601752a4d8b36498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c34d89ee4983fd070f85400200004c8b60084c8b70104c8b68184983fe010f85020100004d8b5d004d89de4983fb07752f4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892ee9a30000004d89f34983fe05752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb6e4d89de4983fb03752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb394983fe01752c4d8b6d084d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892eeb0749c7c601000000498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8970084c8920c34d8b364d8b55004d89d34983fa07752f4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892be9a30000004d89da4983fb05752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb6e4d89d34983fa03752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb394983fb01752c4d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892beb0749c7c3010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34983fe09752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c3f4000000000000|@15905,1,@2495| 7327:D3,128|483b65187305ff5558cd014c8b284d89ee4983fd03752b4c8b7008498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe0b752b4c8b7018498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c3f400000000|@15907,1,@2496| 7328:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2498| 7329:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2499| 7330:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2500| 7331:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2501| 7332:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2502| 7333:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2503| 7334:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2504| 7335:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2505| 7336:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2506| 7337:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2507| 7338:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2508| 7339:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2509| 7340:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2510| 7341:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2511| 7342:D3,152|483b65187305ff5558cd094989dd41f6c501757f4d8b5d00498b5d08a801756bff304c8b70084c8b14244d89d44d3bd3750d488d6424084c89f0e9c1ffffff4d89e44d3be37d3a4c89eb4c89f0e8aeffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e975ffffff48c7c001000000c3c3f4000000|@15911,1,@2512| 7343:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2513| 7344:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2514| 7345:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2515| 7346:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2529| 7347:D5,200|483b65187306ff5558ca0901504150536a01f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff159c0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f400|@15913,1,@2517,@7349,@7348| 7348:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2519| 7349:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2518| 7350:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2520| 7351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2521| 7352:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2522| 7353:D5,200|483b65187306ff5558ca0901504150536a01f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff159c0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff15390000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f400|@15913,1,@2523,@7355,@7354| 7354:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2525| 7355:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2524| 7356:D5,200|483b65187306ff5558ca0901504150536a01f64424080175484c8b742408498b064d89f641ff7608488b542420ff124c8b7424084c89f34983fe0175054989c4eb09ff15a00000004989c4415d4c8924244c896c2408483b65187303ff5558ebb1415eff7424084156f644240801754c4c8b6c24084d8b75004d89ed41ff7508498b06488b542428ff124c8b7424084c89f34983fe0175054989c4eb09ff153d0000004989c4415d4c8924244c896c2408483b65187303ff5558ebad584883c420c3f40000000000|@15913,1,@2526,@7358,@7357| 7357:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2528| 7358:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2527| 7359:D5,1448|483b65187306ff5558ca0901505341504c8b7424084d8b66f84d89e549c1e40849c1ec074983cc0141544c8b1c244d89dc4983fb017d07488d642420eb744d89e44d89e34c3b25550500007d604d89db4c89d94e8d249d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02204d89e749d1eb4d895c24f841c64424ff404c89e748d1e948c7c001000000f348ab41544d89ee49c1e60849c1ee074983ce0149c7c501000000eb15488d64242048b8d015d1f1c27f0000488b5d08ff234d3bee721d4c8b7424204d8b76f849c1e60849c1ee074983ce0141566a016a01eb6d4c8b6424184f8b64acfc4d8b6424184983fc03753d4c8b24244d8b5c24f849c1e30849c1eb074983cb014d3beb7215488d64242848b80017d1f1c27f0000488b5d08ff234d89e44bc744acfc03000000eb004d89ec4983c4024d89e5483b65187306ff5558ca0060e971ffffff4c8b2c244d89ee4c3b6c24100f829d000000488d642408415e4883c40841f6c6017405e9d10200004c8b6424084d89e54983fc017d07488d642428eb624d89ed4d89ec4c3b2dfd0300007d4e4d89e44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab41554d89f5e906020000488d64242848b8d015d1f1c27f0000488b5d08ff234d89f64d89f54983c60241564d89ed4c8b7424404f8b6caefc4d8b750841ff75384156ff742420f64424080175364c8b6c24084d8b75004d89ed41ff7508498b46106a016a01488b5c24284989e0ff1574030000415d488d64240849c7c601000000eb23415d4c8b6424104c896424184c896c2420483b65187303ff55584883c418e9cafeffff41f6c5010f85c80000004d8b55004d8b65084c8b5c24584d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64246848b89011d1f1c27f0000488b5d08ff234d89db4f8b5c93fc4d8b1b41f6c30175054d89f3eb644c8b5c24404d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64246848b81011d1f1c27f0000488b5d08ff234d89db4f8b5c93fc4983fb0375054d89f3eb224d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060e92effffff49c7c5010000004d89f441f6c40175374d8b5424084d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34c3b6c24507e2c4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424eb054c8b642408415d4c8924244c896c2408483b65187303ff5558e936feffff41f6c501750d4d8b5d004d8b6508e9d40000004156f604240175394c8b3424498b064d89f641ff7608488b5c24304c8b4424184c8b4c24104c8b542428ff158c010000415d4c892c24483b65187303ff5558ebc1488d642410488b34244c8b76f849c1e60849c1ee074983ce014983fe017510488d64242848b84882d1f1c27f0000c34d89f44c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca42404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c89e84c89f14889f6488d6424084889c748d1e9f348a58060ffbf4883c420c341f6c3010f85a0000000498b3b4d8b53084c8b04244d8b48f84c89ce49c1e10849c1e9074983c901493bf97215488d64243048b81011d1f1c27f0000488b5d08ff234d89c04d8b4cb8fc4983c1027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89c048c1e60848c1ee074883ce01483bfe7215488d64243048b80017d1f1c27f0000488b5d08ff234d89c04d894cb8fc4d89d3483b65187306ff5558ca0078e956ffffff4d89e5483b65187306ff5558ca0060e95bfefffff400ffffffffffffff01ffffffffffffff01|@15921,1,@2533,@7360,@7323|180,0,@10027 282,0,@10034 498,0,@10027 698,0,@9998 767,0,@9995 894,0,@9475 1131,0,@10817 1292,0,@9995 1327,0,@9475 1368,0,@10034 7360:D5,640|483b65187306ff5558ca09074989c6534150415248c7c00100000041f6c6010f85cd0000004d8b1e4d8b6e084c8b6424104d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241848b89011d1f1c27f0000488b5d08ff234d89e44f8b649cfc4d8b242441f6c40175054989c4eb684c8b6424084d8b5424f849c1e20849c1ea074983ca014d3bda7215488d64241848b81011d1f1c27f0000488b5d08ff234d89e44f8b649cfc4983fc0375054989c4eb254d8d67e84c3b65107306ff5550ca016a4d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0142e929ffffff49c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0162ebc441564d89c8488b5c2418ff155801000048bba855d4f1c27f0000ff15400100004989c64c8b2c244c2b6c2408488d6424107115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c50141f6c6010f85e10000004d8b1e4d8b66084d8b134983fd017f0d488d64241048c7c001000000c34c8b5c24084d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b89011d1f1c27f0000488b5d08ff234d89db4f8b5c93fc4d8b1b41f6c3017515488d64241048b86056d4f1c27f0000488b5d08ff234c8b1c244d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b80017d1f1c27f0000488b5d08ff234d89db4bc74493fc030000004d89eb4983eb027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e915ffffff488d64241048c7c001000000c3f4000000|@15922,1,@2534,@5119,@7363|78,0,@9998 149,0,@9995 278,0,@9475 330,0,@15915 370,0,@9475 460,0,@9998 498,0,@15918 544,0,@10034 586,0,@9475 7361:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be40406df1c27f00004c8930c3f400000000|@15917,1,@2532|47,0,@7362 7362:D3,88|483b65187305ff5558cd054c8b58084c8b68104c8b62084d89e64d8b6424084d8b76104d3be37e0848c7c003000000c34d3be37d0848c7c001000000c34d3bf57e0848c7c003000000c348c7c001000000c3f40000000000|@15916,1,@2531| 7363:D3,432|483b65187306ff5558ca0901a8010f85880100004c8b184c8b70084c8b6bf849c1e50849c1ed074983cd014d3bdd721048b89011d1f1c27f0000488b5d08ff234e8b549bfc4d8b224d8b6a08498b42106a016a016a0141f6c401751b4c891c2448c7442408ffffffff48c7442410ffffffffe9bf0000004983fc07751b4c891c2448c7442408ffffffff48c7442410ffffffffe99e0000004d8b60f849c1e40849c1ec074983cc014d3bdc7215488d64241848b81011d1f1c27f0000488b5d08ff234f8b6498fc4983fd01750949c7c501000000eb524983fd017515488d64241848b8d8d2d0f1c27f0000488b5d08ff234983fdff751e483b05aa0000007515488d64241848b870d3d0f1c27f0000488b5d08ff2348d1f849d1fd489949f7fd4c8d2c45010000004c891c244c896424084c896c2410415c415b415a4d8d6fe04c3b6d107306ff5550ca085d4d89ef49c745f8030000004d8955104d895d084d89650041554c89f0e893feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000100000000000080|@10112,1,@2535|50,0,@9998 180,0,@9995 227,0,@9512 263,0,@9516 7364:D6,1568|483b65187306ff5558ca090750534150415141524c8b6c24184d8b55f84d89d449c1e20849c1ea074983ca014c8b5c24204d89de4d3bda7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64d89ed4f8b5cb5fc4983fb01740f488d64242848c7c001000000c228004d89ed49c1e40849c1ec074983cc014d89f64d89f34d3bf47215488d64242848b80017d1f1c27f0000488b5d08ff2349beb80bd1f1c27f00004d89ed4d89db4d89dc4f89749dfc4c8b7424104d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64242848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc41ff3641ff76084d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156f6042401755b4c8b3424498b064d89f641ff76084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e8f5fcffff415d4c892c24483b65187303ff5558eb9f488d6424084c8b7424084d8b2e4983fd0175274d89f64d8b76084d8d4ff04c3b4d107306ff5550ca00404d89cf49c741f8010000004d8931eb0749c7c1010000006a016a016a016a016a016a016a01488b4424384889e34c8b442450ff15ca020000ff3424488b5c2410488b442418ff742420ff742430ff742440ff7424504c8b7424704d8b5ef849c1e30849c1eb074983cb014c8ba424900000004d89e54d3be37218488da4249800000048b80017d1f1c27f0000488b5d08ff234d89f64d89ed4b895caefcff15570200004989c54c8bb424c00000004d8b66f849c1e40849c1ec074983cc014c8bb424900000004d89f34d3bf47218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8ba424c00000004d89db4d89de4f896c9cfc4c8bac24b80000004d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8bac24b80000004c8b7424104c89f34d89e44f8974a5fc488b442408ff159b0100004989c54c8bb424b00000004d8b66f849c1e40849c1ec074983cc014c8bb424900000004d89f34d3bf47218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8ba424b00000004d89db4d89de4f896c9cfc4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b6424204d8965004c8ba424880000004d8b5424f849c1e20849c1ea074983ca014d89f64d89f34d3bf27218488da4249800000048b80017d1f1c27f0000488b5d08ff234d89e44d89db4d89de4f896c9cfc4c8bac24a80000004d8b6df849c1e50849c1ed074983cd014d89f64d89f34d3bf57218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8ba424a80000004c8b6c24184d89db4d89de4f896c9cfc4c8bac24a00000004d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57218488da4249800000048b80017d1f1c27f0000488b5d08ff234c8bac24a00000004c8b34244d89e44f8974a5fc488d64240848c7c0010000004881c490000000c22800f4000000000000|@15950,1,@2558,@7342,@7342,@7386|64,0,@9995 143,0,@10034 159,0,@9948 220,0,@9998 970,0,@10034 1054,0,@10034 1132,0,@10034 1234,0,@10034 1349,0,@10034 1422,0,@10034 1505,0,@10034 7365:D6,1352|483b65187306ff5558ca0907504c8b63f849c1e40849c1ec074983cc014c8b2c244d89ee4d3bec7215488d64240848b89011d1f1c27f0000488b5d08ff234d89f64e8b6cb3fc41ff75004d8b60f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241048b81011d1f1c27f0000488b5d08ff234d89ed4d89ee43ff74a8fc4d8b61f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81011d1f1c27f0000488b5d08ff234d89ed4d89ee43ff74a9fc4d8b62f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64242048b81011d1f1c27f0000488b5d08ff234d89ed4d89ee43ff74aafc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64242848b81011d1f1c27f0000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b6df849c1e50849c1ed074983cd014d89f64d89f44d3bf57215488d64243848b81011d1f1c27f0000488b5d08ff234c8b6c24784d89e44d89e643ff74a5fc4c8b6c24784d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64244048b81011d1f1c27f0000488b5d08ff234c8b7424784d89ed4f8b74aefc4c8b6424704d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64244048b81011d1f1c27f0000488b5d08ff234c8b6c24704d89e44f8b6ca5fc4983fd01750949c7c501000000eb044d8b6d0041556a016a016a014c8b8424880000004c8b8c24800000004c8b542478ff742438ff742430ff7424404156488b442438488d5c2420ff15d3020000ff342449c7c6010000004c8b6c242041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44c8b6c244041f6c5010f85bb0000004d8b4d004d8b65084c8b9c24900000004d8b5bf849c1e30849c1eb074983cb014d3bcb7215488d64246848b81011d1f1c27f0000488b5d08ff234c8b9c24900000004f8b5c8bfc4d89f24983ea014d03da7115488d64246848b8d0c6d0f1c27f0000488b5d08ff234c8b9424900000004d8b52f849c1e20849c1ea074983ca014d3bca7215488d64246848b80017d1f1c27f0000488b5d08ff234c8b9424900000004f895c8afc4d89e5483b65187306ff5558ca0060e93bffffff4c8b7424784d8b66f849c1e40849c1ec074983cc014c8b6c24604d89ee4d3bec7215488d64246848b81011d1f1c27f0000488b5d08ff234c8b6c24784d89f64f8b6cb5fc4983fd01750949c7c501000000eb234d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d89650041554c8b6c24784d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64247048b81011d1f1c27f0000488b5d08ff234c8b7424784d89ed4f8b74aefc4983fe01750949c7c601000000eb214d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4156488b442460488b5c2448ff15ba0000004989c641566a016a01488b442458488b5c24504989e0ff1596000000415e488d642408498d47b0483b45107306ff5550ca00404989c748c740f8090000004c8970404c8b7424584c8970384c8b7424084c8970304c8b7424104c8970284c8b7424604c8970204c8b7424504c8970184c8b34244c897010488d6424184c8b34244c897008488d6424084c8b7424504c89304883c460c25000f400|@15924,1,@2537,@7323,@7342,@7366|48,0,@9998 108,0,@9995 167,0,@9995 226,0,@9995 290,0,@9995 359,0,@9995 428,0,@9995 497,0,@9995 564,0,@9995 710,0,@9475 803,0,@9995 849,0,@9475 899,0,@10034 987,0,@9995 1105,0,@9995 7366:D4,248|483b65187306ff5558ca090753415041514152a8010f85b0000000ff30488b40086a016a016a014c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488d5c24204c8b4424504c8b4c24484c8b542440e8a4ffffff415e415d415c498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c8963104c896b084c8933584c8b4424404c8b4c24384c8b5424184c8b6c24104c8b642408415b488d6424184c895c24104c896424184c896c24204c8b34244c897424084883c408ff2545000000488d642418415d4c8b6424104c8b74240849c74500010000004d8965084d89751048c7c001000000c22000f400|@10943,1,@2538,@7367| 7367:D42,4448|488dbc2498feffff483b7d187306ff5560ca090750415041514152ff33ff7308ff73106a016a016a016a016a016a01488b4424604889e3ff156b120000488b442410ff742418ff742428ff742438ff154c1200004989c64156488b442408ff15341200004989c64156ff7424086a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15001200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6ff3424ff7424186a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15b51100004989c4415d4c8924244c896c2408483b65187303ff5558ebc658488b9c24a0000000ff15851100004989c64156488b442448ff156d1100004989c64156488b442448ff15551100004989c64156ff7424086a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15211100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6ff3424ff7424186a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15d61000004989c4415d4c8924244c896c2408483b65187303ff5558ebc658488b9c24d0000000ff15a61000004989c64156488b8424c0000000488b5c2448ff15861000004989c64156488b8424c0000000488b5c2418ff15661000004989c641566a016a01488b442458488b5c24184989e0ff1542100000ff34246a016a01488b442438488b5c24284989e0ff1520100000ff34244c8bb424280100004d8b264d89e54983fc0f75446a016a01488b842488000000488b9c24980000004989e0ff15e40f00005b488d6424086a016a01488b8424100100004989e0ff15c10f0000415e488d642408e9ad0000004d89ec4983fd0375416a016a01488b842488000000488b9c24980000004989e0ff15870f00005b488d6424086a016a01488b8424100100004989e0ff15640f0000415e488d642408eb634d89e54983fc4775266a016a01488b842488000000488b9c24980000004989e0ff152d0f0000415e488d642408eb344d89ee4983fe1775074c8b742478eb246a016a01488b842410010000488b9c24980000004989e0ff15ef0e0000415e488d64240841564c8b342441f6c6010f85be0000004d8b164d8b6e084c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bd47218488da4243801000048b81011d1f1c27f0000488b5d08ff234c8ba424500100004f8b6494fc4983c4027118488da4243801000048b8d0c6d0f1c27f0000488b5d08ff234c8b9c24500100004d8b5bf849c1e30849c1eb074983cb014d3bd37218488da4243801000048b80017d1f1c27f0000488b5d08ff234c8b9c24500100004f896493fc4d89ee483b65187306ff5558ca0040e938ffffff4c8bb424300100004d8b2e4c8d25080000004f8d64acfc41ffe4e95b010000909090e9f9010000909090e980020000909090e978020000909090e970020000909090e968020000909090e960020000909090e960020000909090e950020000909090e948020000909090e940020000909090e9e6020000909090e930020000909090e928020000909090e920020000909090e94e030000909090e910020000909090e908020000909090e900020000909090e9f8010000909090e9f0010000909090e9e8010000909090e9e0010000909090e9d8010000909090e9d0010000909090e9c8010000909090e9c0010000909090e9b8010000909090e9b0010000909090e9a8010000909090e9a0010000909090e998010000909090e990010000909090e988010000909090e980010000909090e978010000909090e970010000909090e968010000909090e960010000909090e958010000909090e950010000909090e948010000909090e940010000909090e9380100009090904d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76186a016a01488b842430010000488b9c24500100004989e0ff15600c000058488d6424084c8b842460010000488b5c2410ff153f0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70601000000e99e0200004d89f54d89ee41ff75084d89f641ff76106a016a01488b842428010000488b9c24480100004989e0ff15b40b000058488d6424084c8b842458010000488b5c2408ff15930b00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70603000000e90f0200004d89f6e9070200004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff76186a016a01488b842430010000488b9c24500100004989e0ff15030b000058488d6424084c8b842460010000488b5c2410ff15e20a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060f000000e9610100004d89f64d8b6e0841ff75104d8b5d104d89dc4d8b1b4983fb0175604d8b5d204983fb01750949c7c303000000eb0749c7c3010000004983fb0375394d89e6498b460841ff750041ff750848ba901dd2f1c27f0000ff152b0a00004989c64d8b2e4e8d2c6d0100000049c7c401000000e956080000488d642408eb05488d6424084d89f6e93d0800004d89f54d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff76206a016a01488b842438010000488b9c24580100004989e0ff15b309000058488d642408f6042401488d6424087532488b9c2460010000ff158c0900004989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d897500eb0749c7c5010000004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7061f00000041564c8bb424380100004d8b2e4d89ec4983fd130f853f0100004d89f64d8b6e084d89f64d8b5e184c8bb424500100004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4244001000048b89011d1f1c27f0000488b5d08ff234c8bb424500100004f8b649efc4c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bde7218488da4244001000048b81011d1f1c27f0000488b5d08ff234c8bb424480100004f8b749efc4983fc01754e4983fe0375484c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bee7218488da4244001000048b80017d1f1c27f0000488b5d08ff234c8bb424480100004bc744aefc03000000eb544983fc03754e4983fe0375484c8bb424480100004d8b76f849c1e60849c1ee074983ce014d3bee7218488da4244001000048b80017d1f1c27f0000488b5d08ff234c8bb424480100004bc744aefc03000000eb00e9d40000004d89f64d89e54983fc0b75296a016a01488b842420010000488b9c24400100004989e0ff158a070000415e488d642408e9a00400004d89f64983fd170f85920000004d89f64d8b76084d8b66104d89e54d8b24244983fc0175514d8b66204983fc01750949c7c403000000eb0749c7c4010000004983fc0375314d89ee498b460848ba901dd2f1c27f0000ff151a0700004989c64d8b2e4e8d2c6d0100000049c7c401000000e9470200006a016a01488b842420010000488b9c24400100004989e0ff15db060000415e488d642408e9e8000000488b442450488b9c2408010000ff15b40600004989c64156488b842490000000488b9c2418010000ff15910600004889c36a016a01488b4424104989e0ff1574060000415e488d6424104d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8ba424100100004d8965184c8b6424084d8965104c8b24244d896508488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424080100004d8966084d892e4c8bac24100100004d8975004c8b7424184d8975084c8b34244d897510488d64240848c7c0010000004881c428010000c2180041f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e9fcfeffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89011d1f1c27f0000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f057d4f1c27f0000488b5d08ff234983fc017518488da4244001000048b87058d4f1c27f0000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80017d1f1c27f0000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffff4983fd157d0949c7c601000000eb314d89e34983c31049bac858d4f1c27f0000498d720849d1eb4b8d3c1e48c7c10a000000483bc9f3a6753549c7c6030000004983fe037502eb7c6a016a01488b842420010000488b9c24400100004989e0ff152c040000415e488d642408eb3f4d89e24983c2024d89eb4983eb027118488da4244001000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e953ffffff41f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e918feffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89011d1f1c27f0000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f057d4f1c27f0000488b5d08ff234983fc017518488da4244001000048b87058d4f1c27f0000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80017d1f1c27f0000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffff41f6c60175114d8b1e4d8b6e084c8ba424b8000000eb05e9e3fbffff41f6c40175284d8b0c244d8b5424084d3bd9750949c7c403000000eb184d89d4483b65187306ff5558ca0078ebd249c7c4010000004983fc037505e9c60000004c8ba424500100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b89011d1f1c27f0000488b5d08ff234c8ba424500100004f8b649cfc4983fc037518488da4244001000048b8f057d4f1c27f0000488b5d08ff234983fc017518488da4244001000048b87058d4f1c27f0000488b5d08ff234c8ba424480100004d8b6424f849c1e40849c1ec074983cc014d3bdc7218488da4244001000048b80017d1f1c27f0000488b5d08ff234c8ba424480100004bc7449cfc030000004d89ee483b65187306ff5558ca0040e9cafeffffe997f8ffff4983fd157d0949c7c601000000eb354d89e34983c31049bac858d4f1c27f0000498d720849d1eb4b8d3c1e48c7c10a000000483bc9f3a60f85ce00000049c7c6030000004983fe030f85ab0000006a016a01488b842430010000488b9c24500100004989e0ff150001000058488d6424084c8b842460010000488b5c2408ff15df0000004989c64d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049c74520010000004d8975184c8b7424104d8975104c8b34244d897508488d6424084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70617000000eb0d488d6424184c8bb42430010000e9f0feffff4d89e24983c2024d89eb4983eb027118488da4245001000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9b6fefffff4|@15931,1,@2539,@7369,@7323,@7323,@7323,@7342,@7342,@7323,@5509,@7323,@7370,@7323,@5509,@7371,@7323,@7372,@7323,@7373,@7323,@7323,@7323,@7323,@7323,@7323,@7323,@7323,@7323,@7342,@7342,@7342,@7374,@7375,@7376,@7377,@7342,@7378,@7379,@7380,@7368,@7325|863,0,@9995 906,0,@9475 959,0,@10034 1943,0,@11943 2299,0,@9998 2365,0,@9995 2443,0,@10034 2527,0,@10034 2696,0,@11943 3141,0,@9998 3184,0,@15925 3214,0,@15928 3268,0,@10034 3343,0,@15930 3455,0,@9475 3624,0,@9998 3667,0,@15925 3697,0,@15928 3751,0,@10034 3934,0,@9998 3977,0,@15925 4007,0,@15928 4061,0,@10034 4141,0,@15930 4410,0,@9475 7368:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2552| 7369:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89011d1f1c27f0000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@12733,1,@2540|64,0,@9998 7370:D3,232|483b65187305ff5558cd09a8010f85c60000004c8b28488b40084c8b73f849c1e60849c1ee074983ce014d3bee721048b89011d1f1c27f0000488b5d08ff234e8b74abfc4983fe0175204d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e95effffff41ff36e856ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@12733,1,@2541|49,0,@9998 7371:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89011d1f1c27f0000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@12733,1,@2542|64,0,@9998 7372:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89011d1f1c27f0000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@12733,1,@2543|64,0,@9998 7373:D3,248|483b65187306ff5558ca0901a8010f85d40000004c8b28488b40084c3beb750949c7c601000000eb7d4d8b70f849c1e60849c1ee074983ce014d3bee721048b89011d1f1c27f0000488b5d08ff234f8b74a8fc4983fe0175204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb2d4983fe0575204d8d77f04c3b75107306ff5550ca09214d89f749c746f8010000004d892eeb0749c7c6010000004983fe017505e94fffffff41ff36e847ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@12733,1,@2544|64,0,@9998 7374:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2545| 7375:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2546| 7376:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2547| 7377:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2548| 7378:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2549| 7379:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2550| 7380:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2551| 7381:D4,520|483b65187306ff5558ca09075341504151415249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24204d89ee4983fd017d0a488d642428e9980100004d89f64d89f54c3b359c0100000f8d800100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c005000000f348ab4c89f14c8b34244c89f249c706010000006a016a016a014c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450488b742448ff74242041564155415441534152415141505756524989c848c7c001000000488d5c24584c8b8c24880000004c8b942480000000ff15ef000000488d6424184c8b34244d8b36488d6424084983fe030f858f000000ff742418488b4c2418488b5c2410488b4424084c8b6c24704c8b6424684c8b5c24604c8b5424584c8b4c24504c8b442448488b7c2440488b742438488b5424304889542430488974243848897c24404c894424484989c84c894c24504989d9488b1c244c895424584989c248c7c0010000004c895c24604c896424684c896c24704883c428e92afeffff488d642428488d64242048c7c001000000c24800488d64242848b8d015d1f1c27f0000488b5d08ff23f4ffffffffffffff01|@15943,1,@2553,@7382|497,0,@10027 7382:D10,3312|483b65187306ff5558ca090750534150415141524c8b6424104d8b5424f84d89d349c1e20849c1ea074983ca014c8b7424204d89f54d3bf27215488d64242848b81011d1f1c27f0000488b5d08ff234d89ed4d89e44f8b74acfc4983fe050f85d10200004d89e649c1e30849c1eb074983cb014d89ec4d89e54d3be37215488d64242848b80017d1f1c27f0000488b5d08ff234d89f64d89ed4d89ec4bc744aefc030000004c8b7424084d8b5ef849c1e30849c1eb074983cb014d89e44d89e54d3be37215488d64242848b89011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4c8b24244d8b5424f849c1e20849c1ea074983ca014d89ed4d89eb4d3bea7215488d64242848b81011d1f1c27f0000488b5d08ff234d89db4d89e44d89dd43ff749cfc4c8ba424880000004d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64243048b81011d1f1c27f0000488b5d08ff234c8bac24880000004d89e443ff74a5fc4d8b364d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e983000000909090e9d3000000909090e9d7000000909090e9d8000000909090e925010000909090e9490100009090904d8b6e104d8b76204d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9180100004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892ee9c000000049c7c601000000e9b40000004d8b7608e9ab0000004d8b6e084d8b76104d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892eeb564d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892eeb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156e9e2030000488d6424104983fe030f85070200004c8b7424584d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64241848b81011d1f1c27f0000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24404d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81011d1f1c27f0000488b5d08ff234c8b7424404d89ed4b8b5caefc6a016a014989e0ff1563090000ff34244c8b7424604d8b66f849c1e40849c1ec074983cc014c8b6c24284d89ee4d3bec7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24604d89f64b8b44b5fc4c8b6c24504d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424504d89ed4b8b5caefc6a016a014989e0ff15c5080000415e488d6424084c8b6c24404d8b65f849c1e40849c1ec074983cc014c8b6c24284d89e84d3bec7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24404d89c04f8b6485fc4d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d8975104d8965084c8b14244d89d34d8955004c8b542418498b7af848c1e70848c1ef074883cf014d89c04d89c14c3bc77215488d64243048b80017d1f1c27f0000488b5d08ff234d89d24d89c94f896c8afc4c8b6c24204d89db4d895d00488d6424084d8965084d89751048c7c0010000004883c428c25800488d64240841f6c60175274d8b1e4d8b66084d8b7610415d4d895d004d8965084d89751048c7c0010000004883c408c258004c8b7424504d8b66f849c1e40849c1ec074983cc014d89ed4d89ee4d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234c8b6c24504d89f64b8b44b5fc4c8b6c24384d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241048b81011d1f1c27f0000488b5d08ff234c8b7424384d89ed4b8b5caefc6a016a014989e0ff151a070000ff34244c8b7424584d8b66f849c1e40849c1ec074983cc014c8b6c24204d89ee4d3bec7215488d64242848b81011d1f1c27f0000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24484d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64242848b81011d1f1c27f0000488b5d08ff234c8b7424484d89ed4b8b5caefc6a016a014989e0ff157c060000415e488d6424084c8b6c24384d8b5df849c1e30849c1eb074983cb014c8b6c24204d89ec4d3beb7215488d64242848b81011d1f1c27f0000488b5d08ff234c8b6c24384d89e44f8b64a5fc4c8b6c24184c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c420c25800f60424010f85b10000004c8b3424498b064d89f641ff76084c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488b542458488b4c2450415641554154415341524151415057565251ff742470ff742470ffb424a800000048bb4059d4f1c27f00004c8b8424a00000004c8b8c24980000004c8b942490000000ff155a050000415d4c892c24483b65187303ff5558e945ffffff488d6424284c8b7424584d8b66f849c1e40849c1ec074983cc014c8b6c24104d89ee4d3bec7215488d64241848b81011d1f1c27f0000488b5d08ff234c8b6c24584d89f64b8b44b5fc4c8b6c24404d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64241848b81011d1f1c27f0000488b5d08ff234c8b7424404d89ed4b8b5caefc6a016a014989e0ff15a6040000ff34244c8b7424604d8b66f849c1e40849c1ec074983cc014c8b6c24284d89ee4d3bec7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24604d89f64b8b44b5fc4c8b6c24504d8b65f849c1e40849c1ec074983cc014d89f64d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424504d89ed4b8b5caefc6a016a014989e0ff1508040000415e488d6424084c8bac24800000004d8b5df849c1e30849c1eb074983cb014c8b6424284d89e54d3be37215488d64243048b81011d1f1c27f0000488b5d08ff234c8ba424800000004d89ed4f8b5cacfc4c8b6424484d8b6424f849c1e40849c1ec074983cc014d89ed4d89ea4d3bec7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24484d89d24f8b6495fc41f6c3010f85020100004d8b2b4983fc030f85b30000004c8b6424404d8b4c24f849c1e10849c1e9074983c9014d89d24d89d44d3bd17215488d64243048b81011d1f1c27f0000488b5d08ff234c8b5424404d89e44f8b54a2fc41f6c20175264d8b224d3bec7502eb1a4d3bec7415488d64243048b85059d4f1c27f0000488b5d08ff23eb424c8b6c24404d8b55f849c1e20849c1ea074983ca014d89e54d89ec4d3bea7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24404d89e44f895ca5fceb404983fc017515488d64243048b8d059d4f1c27f0000488b5d08ff234d8b24244d3bec7502eb1a4d3bec7415488d64243048b8285ad4f1c27f0000488b5d08ff23eb004c8b6c24184d8b55f849c1e20849c1ea074983ca014c8b6424284d89e34d3be27215488d64243048b81011d1f1c27f0000488b5d08ff234d89db4d89ed4f8b6c9dfc41f6c501756e4d8b65004d8b6d104c8b5424404d8b4af849c1e10849c1e9074983c9014d89db4d89da4d3bd97215488d64243048b81011d1f1c27f0000488b5d08ff234c8b5c24404d89d24f8b5c93fc41f6c3017515488d64243048b8805ad4f1c27f0000488b5d08ff234c8b1c24e9b50000004c8b6424184d8b5424f849c1e20849c1ea074983ca014c8b6c24284d89eb4d3bea7215488d64243048b80017d1f1c27f0000488b5d08ff234d89e44d89db4d89dd4bc7449cfc010000004c8b6424404d8b5c24f849c1e30849c1eb074983cb014d89ed4d89ec4d3beb7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b6c24404d89e44f8b64a5fc4c8b6c24204c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c428c258004d3be3750949c7c403000000eb4e41f6c401754141f6c30175324d8b04244d8b542408498b3b4d8b4b084c3bc775144d89cb4d89d4483b65187306ff5558ca0078ebbd49c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc0375054d89f4eb124c8b6c243849c7450003000000e9d2feffff4d3bec750949c7c503000000eb4f41f6c501754241f6c40175334d8b4d004d8b5d084d8b04244d8b5424084d3bc875144d89d44d89dd483b65187306ff5558ca0070ebbc49c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd03758beb96f4000000000000|@15947,1,@2554,@7323,@7323,@7383,@7323,@7323,@7323,@7323|65,0,@9995 133,0,@10034 204,0,@9998 268,0,@9995 339,0,@9995 875,0,@9995 941,0,@9995 1025,0,@9995 1091,0,@9995 1179,0,@9995 1291,0,@10034 1444,0,@9995 1510,0,@9995 1594,0,@9995 1660,0,@9995 1748,0,@9995 1944,0,@15932 2048,0,@9995 2114,0,@9995 2198,0,@9995 2264,0,@9995 2355,0,@9995 2425,0,@9995 2515,0,@9995 2570,0,@15933 2625,0,@10034 2667,0,@15936 2704,0,@15938 2761,0,@9995 2839,0,@9995 2879,0,@15940 2944,0,@10034 3016,0,@9995 7383:D9,1216|483b65187306ff5558ca09074150415141526a016a016a014c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488b542458488b4c24504156415541544153415241514150575652514889da488d5c24584c8b8424800000004c8b4c24784c8b542470ff12488b0424ff742408ff7424186a016a014c8b4424684889e3ff1556040000ff3424ff7424106a016a014c8b842480000000488b4424304889e3ff152d040000ff3424ff7424104c8bb424e80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424e80000004c8bac24880000004f8b64aefcf6442448010f858f0000004c8b7424484d8b2e41f6c401752a4d8b34244d3bee7502eb1d4d3bee7418488da4248000000048b8585bd4f1c27f0000488b5d08ff23eb554c8bac24e80000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24e80000004c8ba424880000004d89f64f8974a5fceb004c8bb424e00000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424e00000004c8bac24880000004b8b44aefc6a016a01488b5c24384989e0ff15ce020000415e488d6424084c8bac24e00000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24e00000004c8ba424880000004f8974a5fc4c8bb424d80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424d80000004c8bac24880000004b8b44aefc6a016a01488b5c24304989e0ff1509020000415e488d6424084c8bac24d80000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24d80000004c8ba424880000004f8974a5fc4c8bb424d00000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424d00000004c8bac24880000004b8b44aefc6a016a01488b5c24184989e0ff1544010000415e488d6424084c8bac24d00000004d8b65f849c1e40849c1ec074983cc014c8bac24880000004d3bec7218488da4248000000048b80017d1f1c27f0000488b5d08ff234c8bac24d00000004c8ba424880000004f8974a5fc4c8bb424c80000004d8b6ef849c1e50849c1ed074983cd014c8bb424880000004d3bf57218488da4248000000048b81011d1f1c27f0000488b5d08ff234c8bb424c80000004c8bac24880000004b8b44aefc6a016a01488b5c24104989e0ff157f000000415e488d6424104c8bac24c00000004d8b65f849c1e40849c1ec074983cc014c8bac24800000004d3bec7215488d64247848b80017d1f1c27f0000488b5d08ff23488d6424784c8b6c24484c8b6424084f8974a5fc48c7c001000000c27000f400000000000000|@15948,1,@2555,@7323,@7323,@7323,@7323,@7385,@7384|257,0,@9995 343,0,@15944 406,0,@10034 493,0,@9995 600,0,@10034 682,0,@9995 789,0,@10034 871,0,@9995 978,0,@10034 1060,0,@9995 1164,0,@10034 7384:D3,392|483b65187306ff5558ca090150534150f644241001752f4c8b6c24104d89ee41ff75004d89f6498b46086a016a014889e34c8b442418e8c5ffffff415c415d4c8b742408eb2c488d642408415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c408c341f6c60175274d8b164d8b5e084c3b1424750949c7c603000000eb184d89de483b65187306ff5558ca0070ebd349c7c6010000004983fe03756f4983fd017523488d642410415e4c8b2c244d892e488d64240849c746080100000048c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c418c34983fc017520488d642410415d4d8965004c8b34244d897508488d64240848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3f40000|@15949,1,@2557|79,0,@10542 7385:D3,392|483b65187306ff5558ca090150534150f644241001752f4c8b6c24104d89ee41ff75004d89f6498b46086a016a014889e34c8b442418e8c5ffffff415c415d4c8b742408eb2c488d642408415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c408c341f6c60175274d8b164d8b5e084c3b1424750949c7c603000000eb184d89de483b65187306ff5558ca0070ebd349c7c6010000004983fe03756f4983fd017523488d642410415e4c8b2c244d892e488d64240849c746080100000048c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f44c8b7424084d89264d896e0848c7c0010000004883c418c34983fc017520488d642410415d4d8965004c8b34244d897508488d64240848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3f40000|@15949,1,@2556|79,0,@10542 7386:D4,208|483b65187306ff5558ca0903534150a8017578ff30488b40086a016a016a016a016a016a016a014889e34c8b442440e8ccffffff415e415d415c415b415a41594158498d5fc0483b5d107306ff5550ca007f4989df48c743f8070000004c8943304c894b284c8953204c895b184c8963104c896b084c8933584c8b4424084159488d642408ff255d000000488d642408415e49c7060100000049c746080100000049c74610010000004d894e1849c746200100000049c746280100000049c746300300000048c7c001000000c3f40000|@10943,1,@2559,@7387| 7387:D16,1760|488dbc2498feffff483b7d187306ff5560ca09035053415041514c8b7424104d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d89f541ff76204d89ed4d89ee41ff75284d89f641ff76306a016a016a016a016a016a01488b8424800000004889e3ff15dd060000ff3424ff742410488b442420ff742428ff742438ff7424484c8bb424a80000004d8b264d89e54c8d1d080000004f8d5ca3fc41ffe3e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e92b010000909090e93e010000909090e91b010000909090e937010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e900010000909090e901010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e98a000000909090e943000000909090e93b000000909090e97b000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904d89ee4983fe21750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004156ff15e90400004989c64156488b442410ff15d10400004989c64156488b442428ff15b90400004989c64156488b442428ff15a10400004989c641564c8b7424404d89f54983fe03750d4c8bb42498000000e9800000004d89ed4d89ee4983fd017529f6842498000000017518488da424d800000048b8305dd4f1c27f0000488b5d08ff234c8b742448eb4b4d89f64d8b2ef68424980000000175364c8bb424980000004d8b364d3bf57502eb1d4d3bf57418488da424d800000048b8a85dd4f1c27f0000488b5d08ff234c8b742448eb054c8b74244841564c8bac24880000004d89ee4983fd0375074c8b742448eb034d89f641564c8b7424304983fe03750a4c8b742428e9a60200004c8b74242041f6c6010f85ad0000004d8b164d8b6e084c8b9c24c80000004d8b63f84d89e149c1e40849c1ec074983cc014d3bd47218488da424e800000048b81011d1f1c27f0000488b5d08ff234d89db4f8b6493fc4983c4027118488da424e800000048b8d0c6d0f1c27f0000488b5d08ff234d89db49c1e10849c1e9074983c9014d3bd17218488da424e800000048b80017d1f1c27f0000488b5d08ff234d89db4f896493fc4d89ee483b65187306ff5558ca0040e949ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24c00000004d896e084c8bac24e00000004d892e4156ff7424306a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15b10200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24d80000004989e0ff157a020000ff3424ff7424486a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15480200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24f00000004989e0ff1511020000ff3424ff7424606a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15df0100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24000100004989e0ff15a8010000ff3424ff7424786a01f64424080175334c8b742408498b1e4d89f641ff7608488b442408ff15760100004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a01488b9c24180100004989e0ff153f010000415e488d6424084c8bac24400100004c8b6424684d8965004c8b6424484d8965084c8b6424284d8965104c8b6424784d8965184c8b6424084d8965204d8975284c8b7424704d89753048c7c0010000004881c458010000c341f6c60175654d8b1e4d8b6e084c8ba424c80000004d8b5424f849c1e20849c1ea074983ca014d3bda7218488da424e800000048b81011d1f1c27f0000488b5d08ff234d89e44f8b649cfc4983fc0175114d89ee483b65187306ff5558ca0040eb9e49c7c601000000eb0749c7c6030000004983fe030f85defcffff488da424d0000000415d415e4d8b264d8965004d8b66084d8965084d8b66104d8965104d8b66184d8965184d8b66204d8965204d8b66284d8965284d8b76304d89753048c7c0010000004883c408c3f4000000|@15956,1,@2560,@7323,@7389,@7323,@7390,@7323,@7391,@7323,@7392,@7393,@7394,@7395,@7388,@7325|727,0,@15951 797,0,@15954 939,0,@9995 977,0,@9475 1021,0,@10034 1606,0,@9995 7388:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2568| 7389:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2561| 7390:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2562| 7391:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2563| 7392:D3,256|483b65187305ff5558cd09a8010f85c1000000ff30488b4008483b1c24752e4d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c3483b1c247d4d4d8d77e84c3b75107305ff5550cd094d89f749c746f802000000498946084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca08404989c748c740f8020000004c897008488918c3e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f40000000000|@15910,1,@2564| 7393:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2565| 7394:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2566| 7395:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2567| 7396:D4,1080|483b65187306ff5558ca09075341504151a8010f85080400004c8b30488b40084d8b2e4c8d25080000004f8d64acfc41ffe4e933000000909090e93b010000909090e97c010000909090e994010000909090e93f020000909090e913030000909090e97403000090909041ff7608498d5fe8483b5d107306ff5550ca00044989df48c743f80200000048c74308010000004c89134883fb0175074c8b6c2428eb0e488b442428ff15a40300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706090000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e4c8b2c244d8b65f849c1e40849c1ec074983cc014983fc017715488d64241848b80017d1f1c27f0000488b5d08ff234d89ed4d897500488d64240848c7c0010000004883c410c208004d8b7608498d5fe8483b5d107306ff5550ca01444989df48c743f80200000048c74308010000004c893341594c8b6c241849b8a85bd1f1c27f00004c896c24184883c410e93dfeffff4d8b460841594c8b6c241848c7c3010000004c896c24184883c410e91dfeffff4d8b76084d8d6fe84c3b6d107306ff5550ca01444d89ef49c745f8020000004c8b6424104d8965084c8b6424084d8965004c8b24244d8b5c24f849c1e30849c1eb074983cb014d3bf37215488d64241848b80017d1f1c27f0000488b5d08ff234d89e44d89e14f896cb4fc4d8d47e84c3b45107306ff5550ca01464d89c749c740f8020000004d89700849c7000b0000004d89c9488d6424084c8b6c241848c7c3010000004c896c24184883c410e96afdffff4d8b66084d8b6e104d8b76184d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004c8b4c24104d894b084c8b4c24084d890b4c8b04244d8b48f849c1e10849c1e9074983c9014d3be97215488d64241848b80017d1f1c27f0000488b5d08ff234d89c04d89c14f895ca8fc498d5fe8483b5d107306ff5550ca01764989df48c743f80200000048c74308010000004c89234d8d47e04c3b45107306ff5550ca09664d89c749c740f8030000004d8968104d89700849c700030000004d89c9488d6424084c8b6c24184c896c24184883c410e98efcffff4d8b6e084d8b7610498d5fe8483b5d107306ff5550ca01644989df48c743f80200000048c74308010000004c892b4d8d47e84c3b45107306ff5550ca09444d89c749c740f8020000004d89700849c7000d00000041594c8b6c24184c896c24184883c410e925fcffff4d8b7608498d5fe8483b5d107306ff5550ca01444989df48c743f8020000004c8b6c24104c896b084c89334c8b4424084159488d6424104c8b6c24084c896c2408e9dffbffff488d64241848b8585ed4f1c27f0000488b5d08ff23f400|@15960,1,@2569,@7397|338,0,@10034 429,0,@10515 565,0,@10034 750,0,@10034 1064,0,@15957 7397:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2570| 7398:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2571| 7399:D6,688|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e541f6c4010f855a0200004d8b6d004983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3516020000750949c7c603000000eb2b4c3b35fc010000750949c7c603000000eb194c3b35e2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd385fd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b81060d4f1c27f0000c3f4000000000000|@15973,1,@2573,@9805,@9803,@9797|26,0,@10414 63,0,@9475 290,0,@11514 338,0,@10391 383,0,@11357 534,0,@10236 579,0,@15962 661,0,@10414 672,0,@15969 7400:D6,648|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb860d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@15983,1,@2574,@9805,@9803,@9797|26,0,@10414 46,0,@9475 96,0,@4699 279,0,@11514 327,0,@10391 372,0,@11357 523,0,@10236 568,0,@15975 7401:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f8040000004c8970184c8b72104c8970104c8b72084c89700849be50a16df1c27f00004c8930c3f400000000|@16049,1,@2577|63,0,@7402 7402:D12,3264|483b65187305ff5558cd05524c8b70084d89f54983fe037d10488d64240848b8704cd1f1c27f0000c34c8b304d89f44d8b364983fe010f8566020000488d6424084d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c6d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35410c0000750949c7c603000000eb2b4c3b35270c0000750949c7c603000000eb194c3b350d0c0000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4065d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d10488d64240848b8704cd1f1c27f0000c34d89e54d8b24244983fc030f85df0400004d89ec4d8b6c240841ff74241041ff7424184983ee0241567115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242049bdb86fd1f1c27f0000e9660300004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c89284c8b7424184d8b7610498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49beb86fd1f1c27f0000e9140200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c89304c8b7424204d8b7608498b16ff124989c641564c8b7424104983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049beb8c5d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcf86fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5017d2f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd8017d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb017d2f1c27f00004d8975004883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2066d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d10488d64240848b8704cd1f1c27f0000c34d89ee4d8b6d004983fd050f8565020000488d6424084d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049be68cad0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3591040000750949c7c603000000eb2b4c3b3577040000750949c7c603000000eb194c3b355d040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1067d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d10488d64240848b8704cd1f1c27f0000c34c8b24244d8b642418488d642408498b5424084d8b76084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf867d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@16048,1,@2576,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|32,0,@10414 78,0,@9475 128,0,@4715 311,0,@11514 359,0,@10391 404,0,@11357 555,0,@10236 600,0,@16019 690,0,@10414 749,0,@9475 783,0,@10678 812,0,@9475 895,0,@10678 924,0,@9475 1014,0,@9475 1069,0,@4699 1114,0,@10681 1163,0,@10236 1207,0,@11889 1252,0,@10236 1296,0,@10685 1384,0,@10236 1429,0,@11891 1473,0,@10236 1518,0,@10685 1606,0,@10236 1650,0,@11893 1699,0,@10688 1844,0,@10236 1889,0,@16026 1979,0,@10414 2022,0,@9475 2072,0,@4774 2255,0,@11514 2303,0,@10391 2348,0,@11357 2499,0,@10236 2544,0,@16034 2634,0,@10414 2674,0,@9475 2894,0,@11514 2942,0,@10391 2987,0,@11357 3138,0,@10236 3183,0,@16041 7403:D4,80|483b65187305ff5558cd01488b0048bae81cd1f1c27f000048c7c303000000ff15430000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4|@9492,1,@2575,@4983|16,0,@10077 7404:D15,2608|483b65187305ff5558cd054c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b204d89e54d8b24244983fc010f855a0200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35da090000750949c7c603000000eb2b4c3b35c0090000750949c7c603000000eb194c3b35a6090000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4069d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f44983fe037d0b48b8704cd1f1c27f0000c34d89ee4d8b6d004983fd030f855a0200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04504989c748c740f8020000004c8960084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3543070000750949c7c603000000eb2b4c3b3529070000750949c7c603000000eb194c3b350f070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd186ad4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d89f44d8b364983fe050f855b0200004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c89304c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35ac040000750949c7c603000000eb2b4c3b3592040000750949c7c603000000eb194c3b3578040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd906ad4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc070f855a0200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8970084c89284c8b7208498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3515020000750949c7c603000000eb2b4c3b35fb010000750949c7c603000000eb194c3b35e1010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd086bd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b8806bd4f1c27f0000c3f40000000000|@16074,1,@2578,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 294,0,@11514 342,0,@10391 387,0,@11357 538,0,@10236 583,0,@16051 668,0,@10414 706,0,@9475 933,0,@11514 981,0,@10391 1026,0,@11357 1177,0,@10236 1222,0,@16058 1307,0,@10414 1345,0,@9475 1572,0,@11514 1620,0,@10391 1665,0,@11357 1816,0,@10236 1861,0,@16062 1946,0,@10414 1984,0,@9475 2211,0,@11514 2259,0,@10391 2304,0,@11357 2455,0,@10236 2500,0,@16066 2582,0,@10414 2593,0,@16070 7405:D3,768|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdd8b5d1f1c27f0000e96e0100004c8b7424084d8b364d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be88cad0f0c27f0000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bea8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd386cd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@16084,1,@2580|26,0,@10414 52,0,@9475 86,0,@11126 123,0,@9475 173,0,@4776 218,0,@9475 268,0,@4698 313,0,@11355 361,0,@10236 406,0,@10685 498,0,@11357 643,0,@10236 688,0,@16077 7406:D5,352|483b65187305ff5558cd01488b18f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff153d01000048bae81cd1f1c27f000048c7c305000000ff151e0100004989c54d8b75004a8d0c75010000004883f901750f49be70e6d1f1c27f0000e99b0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1daa0000000f878c0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646083041c646097741c6460a78498d7508498d7e0b48d1e9f3a4418066ffbf498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c348b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@9492,1,@2579,@4983,@4933|53,0,@10021 69,0,@10077 113,0,@11491 322,0,@9487 7407:D8,696|483b65187305ff5558cd014c8b304d8b264d89e54983fc050f8520010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff159902000048bae81cd1f1c27f000048c7c305000000ff157a0200004989c54d8b75004a8d0c75010000004883f901750f49be10d4d3f1c27f0000e9970000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dee010000776a4d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646087841c646096d41c6460a6d498d7508498d7e0b48d1e9f3a4418066ffbfe94d01000048b8f8c7d0f1c27f0000488b5d08ff234983fd010f8518010000498b5e08f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff155f01000048bae81cd1f1c27f000048c7c305000000ff15400100004989c54d8b75004a8d0c75010000004883f901750f49be28d4d3f1c27f0000e9920000004989cc4983c4044c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1dbc00000077624d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646086641c6460970498d7508498d7e0a48d1e9f3a4418066ffbfeb2b48b8f8c7d0f1c27f0000488b5d08ff234d8b7608498b06498b5e0849c7c005000000ff15580000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000000000ffffffffffffff01ffffffffffffff01|@9492,1,@2581,@6795,@4983,@4933,@4983,@4933|73,0,@10021 89,0,@10077 133,0,@15033 304,0,@9487 371,0,@10021 387,0,@10077 431,0,@15034 594,0,@9487 7408:D6,648|483b65187305ff5558cd014c8b70084d89f54983fe037d0b48b8704cd1f1c27f0000c34c8b304983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f9010000750949c7c603000000eb2b4c3b35df010000750949c7c603000000eb194c3b35c5010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486fd4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@16106,1,@2582,@9805,@9803,@9797|26,0,@10414 46,0,@9475 96,0,@4699 279,0,@11514 327,0,@10391 372,0,@11357 523,0,@10236 568,0,@16099 7409:D3,944|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c3ff304983ee0241567115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9200200004c8b7424084d8b364d89ed4983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c641564c8b7424104d8b76084c8b6c24084983ed027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf86fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1852d2f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be203bd4f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda070d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5070d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000|@16115,1,@2583|26,0,@10414 52,0,@9475 86,0,@10678 123,0,@9475 173,0,@4699 218,0,@9475 268,0,@4699 313,0,@10681 361,0,@10236 406,0,@12378 450,0,@10236 495,0,@10685 583,0,@10236 627,0,@15777 676,0,@10688 821,0,@10236 866,0,@16108 7410:D5,128|483b65187306ff5558ca0903415049c7c6010000004d8d57f04c3b55107306ff5550ca09424d89d749c742f80100000041c642ff404d89326a016a01ff355e00000054488304240841514989d948bb1072d4f1c27f000049b80073d4f1c27f0000ff1531000000415c415e415d4d8965004d89750848c7c001000000c3f40000|@16178,1,@2615,@7441,@16177|79,0,@16120 89,0,@16125 7411:D3,32|483b65187306ff5558ca090148b82072d4f1c27f0000488b5d08ff23f4000000|@16124,1,@2584|14,0,@16121 7412:D3,32|483b65187305ff5558cd0148b82072d4f1c27f0000488b5d08ff23f400000000|@16126,1,@2585|13,0,@16121 7413:D57,17472|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9b3000000909090e95a020000909090e9c4040000909090e968060000909090e921080000909090e921110000909090e9d5170000909090e9a1190000909090e9d7190000909090e9971b0000909090e9e21d0000909090e98f200000909090e992200000909090e9f7220000909090e9552a0000909090e9f22f0000909090e9f1300000909090e989320000909090e925330000909090e940330000909090e9ae390000909090e9183c0000909090e9213d00009090904c8b60084c8b68104c8b70184d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff15ae440000ff15a04400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd58f4d1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b70084d8b264d8b6e084d8b56104d8b5e184d8b76204c8d0d080000004f8d4c11ff41ffe1eb0ceb16eb20eb2aeb34eb3eeb4849b9507fd3f1c27f0000eb4649b9687fd3f1c27f0000eb3a49b9807fd3f1c27f0000eb2e49b9987fd3f1c27f0000eb2249b9b07fd3f1c27f0000eb1649b9c87fd3f1c27f0000eb0a49b9e07fd3f1c27f00004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a0849c7020700000041524d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff152b420000ff151d4200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008488b4010ff15dd400000ff15cf4000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6880d3f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442408e87dfaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3ff7008ff7010488b4018ff151e3f00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff15963e0000ff15883e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34c8b6808ff7010ff70184c8b70204983fd01750c49bba080d3f1c27f0000eb324983fd03750c49bbc080d3f1c27f0000eb204d8b6d004983fd03750c49bbe080d3f1c27f0000eb0a49bbf880d3f1c27f00004d8b2b4e8d2c6d010000004983fd01750f49bc70d8d0f1c27f0000e9a00000004d89ea4983c2024c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d333b00000f874b0800004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d8914244c89e9498d7308498d7c240848d1e9f3a44983c51049d1ed43c6042c2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e852f6ffff4989c64156f64424100175124c8b742410498b06e839f6ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15983b000048bae81cd1f1c27f000048c7c305000000ff15793b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c7060100000041564c8b6c2420498b45004d89ed4d89ee41ff75084d89f641ff7610e859f3ffff4989c64156f64424100175124c8b742410498b06e840f3ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff158f38000048bae81cd1f1c27f000048c7c305000000ff15703800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442440e875f0ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc4881d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c440c3488d64241048b8f8c7d0f1c27f0000488b5d08ff234c8b7008498b0641ff760841ff761041ff761841ff7620e879eeffff4989c64156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15c433000048bae81cd1f1c27f000048c7c305000000ff15a53300004989c64d8b2e4e8d2c6d010000004983fd01750f49baa873d4f1c27f0000e9ae0000004d89ec4983c40e4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df23100000f87ce0500004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d892249bca873d4f1c27f000048c7c10f000000498d742408498d7a0848d1e9f3a44c89e9498d7608498d7a0f48d1e9f3a4418062ffbf4c8b7424084983fe03750c49bcc073d4f1c27f0000eb0a49bcd8c8d0f1c27f00004d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05ea3000000f87b90400004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442428ff159e3100004989c64156488b442428e807ecffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde073d4f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c745000100000049c7c6050000004e8d1cb50400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00204d89df49d1ee4d8973f841c643ff4149c743080000000049c7030700000041c643082941c643092041c6430a7b41c6430b4341c6430c4141c6430d5341c6430e45418063ffbf4d8b334e8d2475010000004983fc01750f49be68e0d0f1c27f0000e99b0000004d89e24983c2024c89d04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0c45010000004c3b0daa2e00000f876c0200004d89c84e8d34850400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003e4d89f749d1e84d8946f841c646ff414983e9024bc7448efc0000000049d1ea4d89164c89e1498d7308498d7e0848d1e9f3a44983c41049d1ec43c604267d418066ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017504415deb12488b0424ff15bf2e00004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1074d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c420c3488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234c8b7008ff7010ff70184c89f0e8c7e7ffff4989c64156488b442410e8b8e7ffff4989c64156488b442410e8a9e7ffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4074d4f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4074d4f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5874d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3488b400848ba901dd2f1c27f0000ff15692b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34c8b7008ff7010ff70184c89f0ff15242b0000ff15162b00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8874d4f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442410e834e5ffff4989c54c8b7424084983fe01750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004c8b1c244d891e488d6424084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be4032d1f1c27f00004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c34c8b70084d8b2e4d89ec4983fd07753a48b8e874d4f1c27f0000ff153f2900004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d89e54983fc030f85a6000000498b460848bae81cd1f1c27f000048c7c303000000ff15e52800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc0075d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be3875d4f1c27f00004c8930ff157c2800004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34983fd010f85a6000000498b460848bae81cd1f1c27f000048c7c303000000ff15252800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc0075d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be5075d4f1c27f00004c8930ff15bc2700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3498b460848bae81cd1f1c27f000048c7c303000000ff156f2700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc0075d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be6875d4f1c27f00004c8930ff15062700004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3ff7008488b401048bae81cd1f1c27f000048c7c303000000ff15b62600004989c64d8b2e4e8d2c6d010000004983fd01750f49bc8075d4f1c27f0000e9b30000004d89eb4983c3124c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15532500000f87290200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb8075d4f1c27f000048c7c113000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d3475010000004983fe01750f49bdd884d3f1c27f0000e9aa0000004d89f34983c3044c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15772400000f87400100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d004c89f1498d742408498d7d0848d1e9f3a44983c6104d89f449d1ec43c64425002c49d1ee43c644350120418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408e8bbdfffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd84ad1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff2348b8f022d2f1c27f0000c34c8b7008ff7010ff70184c89f0e8dadeffff4989c6415648bae81cd1f1c27f0000488b44240848c7c303000000ff15d92300004989c64d8b2e4e8d246d010000004983fc01750f49bdb081d3f1c27f0000e9ae0000004d89e34983c3144c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b156e2200000f87cc0100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb081d3f1c27f000048c7c115000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1248d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442418e8b6ddffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd081d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c3488d64241848b8f8c7d0f1c27f0000488b5d08ff234c8b680841ff75004d8b5d0841ff751041ff75184d8b752041ff75284d8b6d304d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c240849c704240700000041544983fd01750c49bd48dad1f1c27f0000eb0a49bd30dad1f1c27f00004d8b65004a8d0c65010000004883f901750f49bca075d4f1c27f0000e9a30000004989cb4983c3064c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15c71f00000f87930600004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084341c64424094c41c644240a3d498d7508498d7c240b48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450007000000415548bae81cd1f1c27f00004c89f048c7c303000000ff15292000004989c64d8b2e4e8d246d010000004983fc01750f49bdb875d4f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b61e00000f87750500004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbb875d4f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442420ff151d1f00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed075d4f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c7060100000041564c8b7424204983fe01750c49bdb874d4f1c27f0000eb0a49bdd074d4f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be0076d4f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004156488b442438ff15e61d000049c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000700000049be3076d4f1c27f000048c7c10d000000498d7608498d7d0848d1e9f3a441c6450e28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff15441d0000ff15361d00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442448e8c5d7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc4876d4f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9876d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c420c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234c8b68084c8b70104d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd1083d3f1c27f0000e98a00000049bd2883d3f1c27f0000eb7e49bd4083d3f1c27f0000eb7249bd5883d3f1c27f0000eb6649bd7083d3f1c27f0000eb5a49bd8883d3f1c27f0000eb4e4d8b6d084983fd01750c49bda083d3f1c27f0000eb0a49bdb883d3f1c27f0000eb2c4d8b6d084983fd01750c49bdd883d3f1c27f0000eb0a49bdf083d3f1c27f0000eb0a49bd1084d3f1c27f00004d8b65004a8d0c65010000004883f901750f49bc3084d3f1c27f0000e9a90000004989cb4983c3084c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15bc1700000f87420400004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca026c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2441c64424084c41c64424096f41c644240a6141c644240b64498d7508498d7c240c48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e81ad3ffff4989c64156f64424100175124c8b742410498b06e801d3ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff159817000048bae81cd1f1c27f000048c7c305000000ff15791700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bce87cd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be2881d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6879d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c418c348b8f8c7d0f1c27f0000488b5d08ff23488b400849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000500000041c645084c41c645094f41c6450a4f41c6450b5041c6450c28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff15c0130000ff15b21300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b7008ff701049c7c5050000004e8d24ad0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00404d89e749d1ed4d896c24f841c64424ff4149c74424080000000049c704240600000049bdc876d4f1c27f000048c7c10b000000498d7508498d7c240848d1e9f3a441c644240d2841806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000700000041554c89f0ff15911200004989c64156488b442410e8b2cdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017504415deb12488b0424ff150b1200004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c700010000004883c408c3488b4008e8c4ccffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4884d3f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3ff70084c8b7010ff701841ff364d8b2e49c7c40100000049c7c301000000e9b50c00004c8b6808ff70104c8b70184d8b65004c8d1d080000004f8d5ca3fc41ffe3e943000000909090e94a000000909090e94e000000909090e952000000909090e956000000909090e95a000000909090e95e000000909090e978000000909090e99200000090909049bd1083d3f1c27f0000e98a00000049bd2883d3f1c27f0000eb7e49bd4083d3f1c27f0000eb7249bd5883d3f1c27f0000eb6649bd7083d3f1c27f0000eb5a49bd8883d3f1c27f0000eb4e4d8b6d084983fd01750c49bda083d3f1c27f0000eb0a49bdb883d3f1c27f0000eb2c4d8b6d084983fd01750c49bdd883d3f1c27f0000eb0a49bdf083d3f1c27f0000eb0a49bd1084d3f1c27f00004d8b65004e8d1c65010000004983fb01750f49bc7884d3f1c27f0000e9b30000004d89da4983c20a4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0d9e0e00000f870b0500004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba7884d3f1c27f000048c7c10b000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c240d48d1e9f3a441806424ffbf4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498b0641ff760841ff7610e8fac9ffff4989c64156f64424100175124c8b742410498b06e8e1c9ffff4989c6eb0a49be1081d3f1c27f00004156f644241001740d4c8b7424104983fe017d1aeb1f4c8b7424104d0fb676ff4e8d3475010000004983fe237407488b442410eb1548b8f814d1f1c27f0000488b5c2410ff15480e000048bae81cd1f1c27f000048c7c305000000ff15290e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce87cd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2881d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be6879d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004156488b442420e816c7ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9084d3f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c420c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23488b5808ff7010ff7018f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054889d8eb1048b8f814d1f1c27f0000ff15010a000048bae81cd1f1c27f000048c7c305000000ff15e20900004989c64156f644240801740d4c8b7424084983fe017d1aeb1f4c8b7424084d0fb676ff4e8d3475010000004983fe237407488b442408eb1548b8f814d1f1c27f0000488b5c2408ff158d09000048bae81cd1f1c27f000048c7c305000000ff156e0900004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc084d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed884d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef084d3f1c27f00004c8930ff15ad0800004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442410e8e8c3ffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c700010000004883c410c3488b400849c7c6070000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745100000000049c745000a00000049bee076d4f1c27f000048c7c113000000498d7608498d7d0848d1e9f3a441c6451128418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff1508070000ff15fa0600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c34c8b70084c8b68104c8d25080000004f8d64acfc41ffe4e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bc783ad2f1c27f0000e9a000000049bc583bd2f1c27f0000e99100000049bc383cd2f1c27f0000e98200000049bc183dd2f1c27f0000eb7649bcf83dd2f1c27f0000eb6a49bcd83ed2f1c27f0000eb5e49bcb83fd2f1c27f0000eb5249bc9840d2f1c27f0000eb4649bc7841d2f1c27f0000eb3a49bc5842d2f1c27f0000eb2e49bc3843d2f1c27f0000eb2249bc1044d2f1c27f0000eb1649bce844d2f1c27f0000eb0a49bcc845d2f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500070000004155498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15fa040000ff15ec0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d3bdd0f82830200004c89e048bae81cd1f1c27f000048c7c303000000ff15960300004989c6415648bae81cd1f1c27f0000488b44240848c7c303000000ff156d0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc3885d3f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be18d9d0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be5085d3f1c27f00004c8930ff15ac0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408e81fbeffff4989c64156488b442418e810beffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc04fd1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c34d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9cafcfffff40000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@16163,1,@2587,@4836,@4983,@4983,@7415,@7416,@7417,@7418,@4836,@4983,@4933,@4983,@4933,@4983,@4933,@7419,@7420,@7424,@7425,@4983,@4933,@7426,@7427,@7428,@7429,@4983,@4983,@4983,@4836,@4983,@4836,@4983,@4836,@4983,@4836,@7430,@7431,@5509,@7432,@7433,@4983,@4933,@4983,@4933,@4983,@4933,@7434,@7435,@6466,@7436,@7437,@7438,@7439,@7440,@7414|380,0,@10392 525,0,@10236 570,0,@11605 698,0,@14475 710,0,@14476 722,0,@14477 734,0,@14478 746,0,@14479 758,0,@14480 770,0,@14481 1007,0,@10392 1152,0,@10236 1325,0,@14486 1443,0,@10440 1491,0,@10391 1536,0,@10392 1580,0,@10391 1884,0,@10392 2029,0,@10236 2169,0,@14488 2187,0,@14489 2209,0,@14490 2221,0,@14491 2248,0,@9565 2510,0,@14492 2573,0,@10021 2594,0,@10077 2685,0,@10782 2734,0,@10236 2778,0,@10394 2823,0,@10391 2911,0,@10236 2955,0,@10394 3000,0,@10391 3088,0,@14493 3132,0,@10752 3271,0,@14492 3334,0,@10021 3355,0,@10077 3446,0,@10782 3495,0,@10236 3539,0,@10394 3584,0,@10391 3672,0,@10236 3716,0,@10394 3761,0,@10391 3849,0,@14493 3893,0,@10752 4011,0,@14494 4059,0,@10394 4104,0,@10236 4192,0,@10394 4236,0,@10236 4320,0,@10236 4445,0,@9487 4545,0,@10021 4566,0,@10077 4609,0,@16128 4746,0,@16128 4809,0,@16129 4821,0,@9493 5187,0,@10236 5232,0,@16130 5433,0,@9650 5715,0,@10236 5794,0,@10236 5866,0,@10236 5954,0,@10236 6042,0,@16132 6127,0,@9487 6148,0,@9487 6169,0,@9487 6263,0,@10440 6312,0,@10391 6356,0,@16134 6444,0,@10391 6489,0,@16134 6577,0,@16135 6657,0,@11943 6774,0,@16137 6876,0,@16139 6888,0,@16140 6976,0,@10236 7056,0,@10236 7187,0,@16141 7262,0,@10077 7315,0,@16142 7363,0,@16144 7438,0,@10077 7491,0,@16142 7539,0,@16145 7604,0,@10077 7657,0,@16142 7705,0,@16146 7773,0,@10077 7816,0,@16147 7956,0,@16147 8028,0,@14530 8293,0,@10401 8422,0,@9487 8443,0,@9487 8459,0,@11988 8493,0,@10077 8541,0,@14498 8679,0,@14498 8810,0,@10401 8858,0,@10236 8990,0,@14499 9075,0,@9487 9172,0,@11384 9184,0,@11383 9212,0,@16148 9431,0,@10077 9477,0,@16149 9615,0,@16149 9751,0,@16150 9840,0,@16139 9852,0,@16140 9931,0,@16152 10088,0,@16154 10331,0,@16155 10379,0,@10236 10511,0,@10236 10599,0,@10236 10730,0,@10236 10818,0,@10236 10863,0,@16158 10948,0,@9487 10969,0,@9487 11084,0,@14512 11099,0,@14513 11111,0,@14514 11123,0,@14515 11135,0,@14516 11147,0,@14517 11169,0,@14518 11181,0,@14519 11203,0,@14520 11215,0,@14521 11227,0,@14522 11255,0,@14523 11526,0,@14492 11589,0,@10021 11610,0,@10077 11702,0,@10782 11750,0,@10236 11795,0,@10394 11839,0,@10391 11927,0,@10236 11972,0,@10394 12016,0,@10391 12104,0,@14493 12149,0,@10752 12294,0,@10236 12414,0,@9487 12772,0,@16160 12910,0,@10440 12958,0,@10236 13148,0,@10440 13197,0,@14524 13410,0,@14512 13425,0,@14513 13437,0,@14514 13449,0,@14515 13461,0,@14516 13473,0,@14517 13495,0,@14518 13507,0,@14519 13529,0,@14520 13541,0,@14521 13553,0,@14522 13581,0,@14526 13721,0,@14526 13862,0,@14492 13925,0,@10021 13946,0,@10077 14037,0,@10782 14086,0,@10236 14130,0,@10394 14175,0,@10391 14263,0,@10236 14307,0,@10394 14352,0,@10391 14440,0,@14493 14484,0,@10752 14644,0,@10236 14689,0,@14527 14733,0,@10236 14821,0,@10236 14946,0,@9487 15009,0,@10021 15025,0,@10077 15104,0,@10021 15125,0,@10077 15178,0,@14529 15226,0,@14530 15314,0,@14531 15416,0,@10440 15464,0,@10236 15660,0,@16161 15996,0,@12187 16011,0,@12194 16026,0,@12201 16041,0,@12208 16053,0,@12215 16065,0,@12222 16077,0,@12229 16089,0,@12236 16101,0,@12243 16113,0,@12250 16125,0,@12257 16137,0,@12264 16149,0,@12271 16161,0,@12278 16296,0,@10392 16441,0,@10236 16573,0,@10077 16601,0,@10077 16659,0,@14534 16707,0,@9572 16795,0,@14535 16912,0,@10440 16961,0,@10236 17005,0,@10394 17050,0,@10391 17344,0,@9475 7414:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2614|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7415:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2588|75,0,@10440 7416:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2589|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7417:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2590|75,0,@10440 7418:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2591|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7419:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2592| 7420:D5,328|483b65187305ff5558cd014989c641f6c6010f8521010000498b0641ff76084c8b34244983fe017535488d642408ff15340100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff15fc0000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc085d3f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e822ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@16164,1,@2593,@7421,@7421|132,0,@14538 258,0,@10236 7421:D10,1008|483b65187305ff5558cd014989c64d8b2e4d89ec4983fd010f851d010000498b460841ff761048bae81cd1f1c27f000048c7c303000000ff15fb0300004989c6415648bae81cd1f1c27f0000488b44240848c7c303000000ff15d20300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be68dad0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be8077d4f1c27f00004c8930ff15170300004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c34d89e54983fc057510498b460848ba0077d4f1c27f0000ff224983fd070f8511010000498b460849c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c745000700000049bea077d4f1c27f000048c7c10d000000498d7608498d7d0848d1e9f3a441c6450e28418065ffbf4d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706070000004156ff1524020000ff15160200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080300000048c70001000000c3498b460841ff761048bae81cd1f1c27f000048c7c303000000ff15820100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb877d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed077d4f1c27f00004c8930ff15190100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba0077d4f1c27f0000488b442408ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642410498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000|@16173,1,@2594,@4836,@4983,@7423,@7422,@4836,@4983,@4983|40,0,@10077 68,0,@10077 168,0,@9586 256,0,@16165 330,0,@16162 424,0,@16166 633,0,@10077 686,0,@16167 734,0,@16168 796,0,@16162 885,0,@10236 7422:D7,1136|483b65187305ff5558cd01a8010f85520400004c8b30ff70084c8b2c244983fd010f85cc010000488d642408498b0641ff760848bae81cd1f1c27f000048c7c303000000ff15560400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb877d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed077d4f1c27f00004c8930ff15ed0300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba0077d4f1c27f0000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700848c7001b000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848bae81cd1f1c27f000048c7c303000000ff157f0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb877d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed077d4f1c27f00004c8930ff15160200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba0077d4f1c27f0000498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700848c7001b000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce877d4f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e8f6fbffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2596,@4836,@4983,@4836,@4983|53,0,@10077 106,0,@16167 154,0,@16168 216,0,@16162 343,0,@10236 508,0,@10077 561,0,@16167 609,0,@16168 671,0,@16162 798,0,@10236 944,0,@16169 1070,0,@10236 7423:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2595|75,0,@10440 7424:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2597|75,0,@10440 7425:D3,792|483b65187305ff5558cd01a8010f85f60200004c8b30ff70084c8b2c244983fd010f851e010000488d642408498b0641ff760848ba0077d4f1c27f0000ff124989c64c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848ba0077d4f1c27f0000ff124989c64c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e852fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@16164,1,@2598|53,0,@16162 83,0,@16139 95,0,@16140 177,0,@10236 334,0,@16162 364,0,@16139 376,0,@16140 458,0,@10236 596,0,@10484 722,0,@10236 7426:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2599|75,0,@10440 7427:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2600|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7428:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706130000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@2601| 7429:D3,240|483b65187305ff5558cd01a8010f85ce0000004c8b30488b40084883f80175434983fe01750c49beb874d4f1c27f0000eb0a49bed074d4f1c27f0000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe01750c49beb874d4f1c27f0000eb0a49bed074d4f1c27f00004156e87affffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@16174,1,@2602|40,0,@16139 52,0,@16140 107,0,@16139 119,0,@16140 170,0,@10236 7430:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2603|75,0,@10440 7431:D3,792|483b65187305ff5558cd01a8010f85f60200004c8b30ff70084c8b2c244983fd010f851e010000488d642408498b0641ff760848ba0077d4f1c27f0000ff124989c64c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3498b0641ff760848ba0077d4f1c27f0000ff124989c64c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e852fdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000000000|@16164,1,@2604|53,0,@16162 83,0,@16139 95,0,@16140 177,0,@10236 334,0,@16162 364,0,@16139 376,0,@16140 458,0,@10236 596,0,@10484 722,0,@10236 7432:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2605| 7433:D3,760|483b65187305ff5558cd01a8010f85dc0200004c8b30ff70084c8b2c244983fd010f8511010000488d6424084983fe01750f49bec878d4f1c27f0000e9d0000000498b0648ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9075d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fe01750f49bec878d4f1c27f0000e9d0000000498b0648ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be9075d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e86cfdffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@16164,1,@2606|52,0,@16175 70,0,@16162 155,0,@10236 199,0,@10723 320,0,@16175 338,0,@16162 423,0,@10236 467,0,@10723 570,0,@10484 696,0,@10236 7434:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2607|75,0,@10440 7435:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2608|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7436:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2609|75,0,@10440 7437:D7,1520|483b65187305ff5558cd01a8010f85d00500004c8b28ff70084c8b34244983fe010f858b020000488d6424084d8b750041ff7508498b0641ff760848bae81cd1f1c27f000048c7c303000000ff15ce0500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb877d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed077d4f1c27f00004c8930ff15650500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba0077d4f1c27f0000488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d8b750041ff7508498b0641ff760848bae81cd1f1c27f000048c7c303000000ff15380300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcb877d4f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed077d4f1c27f00004c8930ff15cf0200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648ba0077d4f1c27f0000488b442408ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004c8b2c244983fd01488d642408750c49bcb874d4f1c27f0000eb0a49bcd074d4f1c27f00004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd4032d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080300000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e878faffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@16164,1,@2610,@4836,@4983,@4836,@4983|61,0,@10077 114,0,@16167 162,0,@16168 224,0,@16162 314,0,@10236 448,0,@16139 460,0,@16140 542,0,@10236 707,0,@10077 760,0,@16167 808,0,@16168 870,0,@16162 960,0,@10236 1094,0,@16139 1106,0,@16140 1188,0,@10236 1326,0,@10484 1452,0,@10236 7438:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2611|75,0,@10440 7439:D3,336|483b65187305ff5558cd014989c641f6c6010f852d010000498b0641ff76084c8b34244983fe01753b488d64240848ba0077d4f1c27f0000ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348ba0077d4f1c27f0000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc8857d1f1c27f00004d8965084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442408e816ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@16164,1,@2612|48,0,@16162 102,0,@16162 144,0,@10484 270,0,@10236 7440:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8c04fd1f1c27f0000c3f4000000|@10402,1,@2613|75,0,@10440 7441:D13,1096|483b65187306ff5558ca09074989c45341504983f9017d0a488d642410e9f70300004c3b0d170400000f8de50300004d89cd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02164d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564983f9017d0a488d642418e97f0300004c3b0dac0300000f8d6d0300004d89cd4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02164d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564983f9017d0a488d642420e9070300004c3b0d410300000f8df50200004c89c94e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02144d89f749d1e94d894ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8b34244d89f54983fe0d756941ff74241048ba5879d4f1c27f00004c8b7424484c8b6c2438ff742428ff7424284156ff353a03000041554c89d34c89e04c8b4424404c8b4c24384c8b542430ff15150300004989c64c8b6c24404d8975004c8b34244d897508488d64243048c7c001000000c218004d89ee4983fd1f0f858300000041ff74241048ba5879d4f1c27f00004c8b7424484c8b6c2438ff742428ff7424284156ff35b402000041554c89d34c89e04c8b4424404c8b4c24384c8b542430ff158f0200004989c641564c8b442440488b442408488b5c2410ff156d0200004989c64c8b6c24484c8b24244d896500488d6424384d89750848c7c001000000c218004983fe190f853f0100004d8b6424086a016a016a016a01498b0424498b5c24084d8b4424104d8b4c2418498b7c24204d8b7424284d8b6c24304d8b6424384c8b5c24604c8b542450415641554154544883042418ff742460ff7424604153ff742468ff742460ff35d601000041524989faff15c3010000488b0424488b5c2408ff7424184c8b7424684156ff742440ff74244049c7c0030000004c8b4c24604c8b542458ff15880100004989c4f6042401740e488d64245049c7c601000000eb714c8b7424584d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b1c244d895d10488d64240849bb28dbd0f1c27f00004d895d084d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892e4883c4484c8b6c24104d8965004d89750848c7c001000000c2180048ba5879d4f1c27f00004c8b7424404c8b6c2430ff742420ff7424204156ff35bd00000041554c89d34c89e04c8b4424384c8b4c24304c8b542428ff15980000004989c5488d6424284c8b7424104d892e49c746080100000048c7c001000000c21800488d64242048b8d015d1f1c27f0000488b5d08ff23488d64241848b8d015d1f1c27f0000488b5d08ff23488d64241048b8d015d1f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@16274,1,@2662,@7442,@16273,@7451,@7445,@16273,@7488,@7442,@16273,@7442,@16273|332,0,@16179 450,0,@16179 822,0,@9594 905,0,@16179 1009,0,@10027 1030,0,@10027 1051,0,@10027 7442:D19,7960|483b65187306ff5558ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9c6010000909090e9d4050000909090e9c3060000909090e996070000909090e9680a0000909090e9c70a0000909090e9f90a0000909090e9b3100000909090e92d120000909090e937120000909090e9ef130000909090e96b140000909090e927150000909090e961160000909090e9ce160000909090e988170000909090e9f6170000909090e9ca180000909090e95f1a0000909090e9eb1a0000909090e9581b0000909090ff7008ff7010488b4018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438e8dffeffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e894feffff4989c64156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e849feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244848c70001000000c228004c8b7008498b0641ff760841ff761841ff76204d8b76104d8b2e4983fd010f85a901000041ff7608488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e89efdffff4989c64156488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b442448488b5c24684c8b4424604c8b4c24584c8b542450e853fdffff4989c64156488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458e805fdffff4989c64156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442448488b5c24784c8b4424704c8b4c24684c8b542460e8b4fcffff4989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642450498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c2280041ff7608488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e8f5fbffff4989c64156488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8aafbffff4989c64156488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458e85cfbffff4989c64156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442448488b5c24784c8b4424704c8b4c24684c8b542460e80bfbffff4989c64d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049c74310030000004c8b6c24184d89ec4d896b0849c703130000004d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184c8b5c24084d895d104c8b5c24104d895d0849c74500070000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049c74310030000004d89e44d89630849c703130000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c241849bbf8a1d3f1c27f00004d895c24104c8b1c244d895c2408488d64246049c7042407000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c7000d000000c22800ff7008ff7010488b0424488b5c24284c8b4424204c8b4c24184c8b542410ff15751900004989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e882f9ffff4989c641564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b542450ff742428ff74242841564155415441534152488b442448488b5c24404c8b4424784c8b4c24704c8b542468ff15d31800004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64244848c70005000000c228004c8b4808ff7010ff7018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524c89c8488b5c24504c8b4424484c8b4c24404c8b542438e8acf8ffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e861f8ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244048c70007000000c22800ff7008ff7010ff70184c8b7020498b0641ff760841ff7610488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b5c24684c8b4424604c8b4c24584c8b542450e8c6f7ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb6c4d89f6498b06488b5424504c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b54246041564155415441534152488b5c24704c8b4424684c8b4c24604c8b542458e860f7ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d64241041564c8b6c2410498b45004d89ed4d89ee41ff75084d89f641ff7610488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b5c24784c8b4424704c8b4c24684c8b542460e8a7f6ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb754d89f6498b06488b5424604c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b54247041564155415441534152488b9c24800000004c8b4424784c8b4c24704c8b542468e838f6ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d6424104156488b5424584c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b54246841564155415441534152488b442450488b5c24784c8b4424704c8b4c24684c8b542460e894f5ffff4989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24104c8968204c8b2c244c896818488d6424084c8970104c8b7424284c89700848c700090000004883c458c228004c8b4808488b58104c8b40184c8b742420498b56084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff742408ff742408415641554154415341524c89c84c8b4c24504c8b542448ff12488d6424284c8b34244c897424284883c428ff2576140000488d6424284c8b70084c8b6810498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000f000000c22800ff7008ff7010ff70184c8b7424084d8b2e4d89ec4983fd190f855c0100004d89f641ff76084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b542450ff74242041564155415441534152488b442448488b5c24704c8b4424684c8b4c24604c8b542458ff15c91300004989c641566a016a016a016a014c8b642428498b04244d89e4498b5c24084d89e4498b7424104d89e4498b5424184d89e4498b4c24204d89e44d8b7424284d89e44d8b6c24304d89e44d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418415341524151ffb42490000000ffb424880000004150574989ca4989d14989f0ff151c130000585b4158488d6424084c8b4c24784c8b5424704c8b7424684156ff742440ff742440ff15ec1200004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8970104c8b34244c897008488d64245048c70011000000c228004d89f64d89e54983fc0d751a4d89f54d89ee41ff75084d89f641ff76104c8b3424e9ca1000004d89f64983fd110f85420300004d89f641ff76084c8b34244d8b264d89e54983fc070f85c7000000488d6424084c8b4424684c8b4c24604c8b5424584c8b7424504c8b6c2448ff742428ff742428ff742448ff742448ff7424384156415548c7c001000000488b5c2448ff150c1200004989c64156488b54246848c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70613000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64241048c700110000004883c438c228004d89f64d89ec4983fd0375284d89f6498b46086a016a01488b94248000000048c7c3010000004989e0ff12488d6424084158eb654d89f64d89e54983fc07750949c7c001000000eb504d89f64983fd01750949c7c001000000eb3e4d89f64d8b6e084c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64244848b81011d1f1c27f0000488b5d08ff234d89f64f8b44aefc4c8b4c24704c8b5424684c8b7424604c8b6c24584c8b6424504156ff742438ff74243041554154ff742450ff742470ff74247048c7c001000000488b5c2458ff15a71000004989c641564c8b7424084d8b2e4d89ec4983fd03752b4d89f6498b46086a016a01488b94248800000048c7c3010000004989e0ff12415d488d642408e9d80000004d89f64d89e54983fc077516488b54247048c7c001000000ff124989c5e9b60000004d89f64983fd0175484d89f641ff7608488b542470488b042448c7c301000000ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c7450001000000eb654d89f64d8b6e084c8b7424304d8b66f849c1e40849c1ec074983cc014d3bec7215488d64245048b81011d1f1c27f0000488b5d08ff234d89f64f8b74aefc4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70613000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24104c8968184c8970104c8b34244c897008488d64240848c700110000004883c448c228004c8b7424684c8b6c24604c8b6424584c8b5c24504c8b542448ff74241841564155415441534152488b442440488b5c24684c8b4424604c8b4c24584c8b542450ff15d70e00004989c64156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e824efffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64244848c70011000000c22800488d6424084c8b70084d8b2e4d89ec4983fd03752a488d642420498b46086a016a01488b54243848c7c3030000004989e0ff12415e488d642408e91a0100004d89e54983fc07751b488d642420488b54242048c7c003000000ff124989c6e9f60000004983fd01754c488d64242041ff7608488b542420488b042448c7c303000000ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a40000004d8b6e084c8b7424084d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b80017d1f1c27f0000488b5d08ff234d89f64bc744aefc030000004c8b34244d8b66f849c1e40849c1ec074983cc014d3bec7215488d64242048b81011d1f1c27f0000488b5d08ff234d89f64f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004883c418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70013000000c22800488d64242848b85813d4f1c27f0000c22800ff70084c8b48104c8b68184c8b7424204d89f441ff364d89e44d8b34244983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89e44c89e34d8934244c8b7424204d8b66f849c1e40849c1ec074983cc014d3bec7215488d64243848b80017d1f1c27f0000488b5d08ff234d89f64d89f04bc744aefc010000004c8b6424184d8b7424f849c1e60849c1ee074983ce014d3bee7215488d64243848b80017d1f1c27f0000488b5d08ff234c8b34244d89e44c89e74f8974acfc4c8b7424104d8b66f849c1e40849c1ec074983cc014d3bec7215488d64243848b80017d1f1c27f0000488b5d08ff234d89f64c89f64bc744aefc01000000488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524989f24c89c84989f9e81becffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8d0ebffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424404c89700848c70019000000c228004c8b4808ff7010488b5424284c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524c89c8488b5c24484c8b4424404c8b4c24384c8b542430e843ebffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424304c89700848c70015000000c228004c8b60086a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b5c24704c8b5424684c8b4c24604c8b442458488b7c2450415641554154544883042418415341524151ff742468ff7424604150574989ca4989d14989f0ff15f2090000585b488d6424184c8b4c24484c8b5424404c8b6c24384c8b642408415b488d64240849c7c0030000004c895c24284c896424304c896c24384c8b7424104c897424204883c420ff259e090000ff70084c8b7010498b0641ff760841ff7610488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b5c24584c8b4424504c8b4c24484c8b542440e8f3e9ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb694d89f6498b06488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e890e9ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d642410498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424084c89700848c7001d0000004883c438c22800488b40084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff342441564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438ff15100800004989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001f000000c228004c8b70084c8b60104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450005000000498d5fe8483b5d107306ff5550ca00604989df48c743f80200000048c74308010000004c892b4883fb0175054c89f0eb094c89f0ff156e0700004c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff74242041564155415441534152488b5c24484c8b4424404c8b4c24384c8b542430ff15250700004989c6488d6424286a016a0149c7c501000000e97c040000488b4008488b5424204c8b7424504c8b6c24484c8b6424404c8b5c24384c8b54243041564155415441534152488b5c24404c8b4424384c8b4c24304c8b542428e888e7ffff4989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70023000000c22800ff7008ff7010488b4018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438e80ce7ffff4989c64156488b5424384c8b7424684c8b6c24604c8b6424584c8b5c24504c8b54244841564155415441534152488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8c1e6ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424384c89700848c70025000000c22800ff7008ff70104c8b7018498b0641ff760841ff7610488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b5c24604c8b4424584c8b4c24504c8b542448e825e6ffff4989c641564c8b6c24104d89ee4983fd01750949c7c501000000eb694d89f6498b06488b5424484c8b7424784c8b6c24704c8b6424684c8b5c24604c8b54245841564155415441534152488b5c24684c8b4424604c8b4c24584c8b542450e8c2e5ffff4989c64d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e084c8b2c244d892e488d6424104156488b5424404c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24604c8b4424584c8b4c24504c8b542448e824e5ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b7424104c89700848c700270000004883c440c22800ff70084c8b4810ff7018488b5424304c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524c89c8488b5c24504c8b4424484c8b4c24404c8b542438e890e4ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64243048c70029000000c22800488b40084c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430ff342441564155415441534152488b5c24504c8b4424484c8b4c24404c8b542438ff153e0300004989c6488d642428498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7002b000000c228004c8b4808ff7010488b5424284c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524c89c8488b5c24484c8b4424404c8b4c24384c8b542430e88ae3ffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424304c89700848c7002d000000c2280041f6c60175714d8b164d8b66084983fc01752e4d8b324983fe0575104d8b72084d89ec49c7c501000000eb60488d64241048b88879d4f1c27f0000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060eb89488d64241048b8207ad4f1c27f0000488b5d08ff2341f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb4c892c244c89742408415e415d4983fe0175064c89e8c22800498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70021000000c2280041f6c60175464d8b264d8b6e084d8b1c244c8b5424584d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb449c7c60100000041f6c601752b4d8b364d8b2e4c8b6424584d3bec75064d8b4610eb1c488d64245048b87810d1f1c27f0000488b5d08ff2349c7c0010000004c8b4c24784c8b5424704c8b7424684c8b6c24604c8b6424584156ff742440ff74243841554154ff742458ff742478ff74247848c7c001000000488b5c2460ff159a0000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424084c8b24244d896508488d64240849c745000f000000498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b24244c896018488d6424084c8968104c89700848c700110000004883c438c22800f4000000|@16187,1,@2616,@7444,@7454,@7455,@7467,@7468,@7451,@7445,@7469,@7470,@7471,@7451,@7445,@7472,@7473,@7482,@7443|1467,0,@14727 3694,0,@9995 4005,0,@9995 4600,0,@10034 4658,0,@9995 4775,0,@15543 4828,0,@9475 4885,0,@10034 4948,0,@10034 5010,0,@10034 7394,0,@16181 7469,0,@16184 7740,0,@9991 7443:D3,288|483b65187306ff5558ca0907a8010f85fe0000004c8b30488b40084d8b364d8b7608ff334c8b2b4983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c892b4d8b68f849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234bc744b0fc010000004d8b69f849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234c8b2c244f896cb1fc4d8b6af849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234bc744b2fc01000000e81dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@2656|52,0,@9475 97,0,@10034 148,0,@10034 199,0,@10034 7444:D5,1456|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c240004c8b33ff7308498b064c8b204d89e54983fc1975124c8b600841ff76084c8b742420e9950300004983fd1175124c8b680841ff76084c8b742420e91101000041ff7608488b542440488b5c24384c8b4424684c8b4c24484c8b5424604c8b7424704c8b6c24584c8b642450ff742418ff742418415641554154ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e8bdfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b66084c3b5c2428750949c7c603000000eb184d89e6483b65187306ff5558ca0060ebd249c7c6010000004983f6024d8b65004d89e34983fc037521498b45086a016a01488b5424284c89f34989e0ff12415e488d642408e90c0100004d89dc4983fb077512488b5424104c89f0ff124989c6e9f10000004983fc01754341ff7508488b5424784c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a80000004d8b6d084983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424484d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424484f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e851fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b6e084c3b5c2428750949c7c603000000eb184d89ee483b65187306ff5558ca0050ebd249c7c6010000004983f60241566a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418ff742460ff7424604153415241514150574989ca4989d14989f0ff1531010000585b488d6424104c8b7424784c8b6c24704c8b6424504156415541544c8b4424184c8b4c24384c8b542430ff15f80000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e88bfaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c24000f40000000000|@16207,1,@2622,@7451,@7445|229,0,@9475 622,0,@10034 685,0,@9995 849,0,@9475 1303,0,@9475 7445:D4,1056|483b65187306ff5558ca09074989c44c89cf53415249c7c5010000004d8d77f04c3b75107306ff5550ca80304d89f749c746f80100000041c646ff404d892e415649c7c5010000004d8d77f04c3b75107306ff5550ca80304d89f749c746f80100000041c646ff404d892e49c7c3010000004d8d6ff04c3b6d107306ff5550ca80584d89ef49c745f80100000041c645ff404d895d0041554c8b6c24584c8b5c24504c8b5424484c8b4c24384c8b442440498d5fb0483b5d107306ff5550ca807f4989df48c743f80900000048897b404c8943384c894b304c8953284c895b204c896b184c8973104c8b7424084c89730849be806a6ef1c27f00004c89334d8d47e84c3b45107306ff5550ca08104d89c749c740f8020000004c8b34244d89700849be606e6ef1c27f00004d893049c7c6010000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d89750049be507cd4f1c27f00004d89750049c7c5010000004c8b74241041f6c60175364d8b56084d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0871ebc44983fd017d0a488d642420e9050100004c3b2d520200000f8df30000004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a114d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c005000000f348ab415649c7c5010000004d8d77f04c3b75107306ff5550ca08314d89f749c746f80100000041c646ff404d892e41566a016a01488b5424504c8b8c24900000004d8d77e84c3b75107306ff5550ca0c134d89f749c746f8020000004c8b6c24184d896e0849bd606f6ef1c27f00004d892e4c8b6c2448415654488304240841554c89e04c8b542428ff12ff34244c8b74243041ff364c8b7424284d8b6ef849c1e50849c1ed074983cd0149c7c601000000eb15488d64242048b8d015d1f1c27f0000488b5d08ff234983fd010f85cd0000004156488b442448ff154d0100004989c54c8b7424284d8b264c8b9c24a00000004d8d77c04c3b75107306ff5550ca00384d89f749c746f80700000049c74630010000004d895e284d8966204d896e1849c74610010000004c8b6c24504d896e084c8b6c24104d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241b0000004c8b7424384d8b364c8bac24980000004d8965004c8b6424084d8965084d8975104c8b34244d897518488d64241848c7c0010000004883c440c258004d89eb4983eb024d89ea4983ea024d89e94983e9024c8b6424284f8b648cfc4983fc0175274d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d891424eb034d89f44d89dd4d89e6483b65187306ff5558ca0060e9c3fefffff4000000000000ffffffffffffff01|@16209,1,@2625,@7453|243,0,@7446 291,0,@7448 347,0,@16191 397,0,@9475 626,0,@7450 710,0,@10027 7446:D4,520|483b65187306ff5558ca0d015241504c8b7424084d8b764041f6c6010f85ce0100004d8b264d8b6e084883f8010f85880100004d89e641564c8b34244d8b2e4d89ec4983fd0375254d89f6498b46086a016a014c8b742420498b56184989e0ff12488d642408415ee9dc0000004d89f64d89e54983fc07751a4c8b742410498b56204889d8ff1249c7c601000000e9b60000004d89f64983fd01751e4d89f6498b46084c8b742410498b5628ff1249c7c601000000e98f0000004d89f64d8b6e084883fb0375444c8b7424104d8b5e384d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64241848b80017d1f1c27f0000488b5d08ff234d89e64bc744aefc03000000eb004c8b7424104d8b5e304d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64241848b81011d1f1c27f0000488b5d08ff234d89e64f8b74aefc41564c8b7424184d8b6e084d89e9498b45004d89f64d8b6e104d89ea498b5d004c8b442408ff15ac0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8975004c8b34244d897508488d64242048c7c001000000c34989c44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0940e928feffff488d64241048b8c85dd1f1c27f0000488b5d08ff23f40000|@16188,1,@2617,@7447|239,0,@10034 307,0,@9995 459,0,@9475 503,0,@10528 7447:D3,384|483b65187306ff5558ca0907a8010f85100100004c8b30488b40084d3bf07505e9ca0000004d8b264d89e54983fc0175384d8b284983fd01752a4d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb05e98b000000e9a00000004d89ec4983fd0375304d8b284983fd0375254d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037502eb4feb674d89e54983fc0575324d8b284983fd0575274d8b76084d8b68084d3bf5750949c7c603000000eb0749c7c6010000004983fe037402eb02eb14eb2c4d89ee4983fe0775234d8b304983fe07751a4889d84883e802711048b8d0c6d0f1c27f0000488b5d08ff23c34883eb02711048b8d0c6d0f1c27f0000488b5d08ff23e9dcfeffff4d8b294d8d77e84c3b75107306ff5550ca00274d89f749c746f8020000004d896e084d89064d8931498b024883c002711048b8d0c6d0f1c27f0000488b5d08ff234989024883e802711048b8d0c6d0f1c27f0000488b5d08ff23c3f4|@16189,1,@2618|250,0,@9475 273,0,@9475 343,0,@9475 368,0,@9475 7448:D3,48|483b65187305ff5558cd054883f803750d4c8b720849c70603000000eb0048b84060d1f1c27f0000c3f4000000000000|@16190,1,@2619|32,0,@10548 7449:D3,128|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b304d89f54983fe01750b48b8607cd4f1c27f0000c34d89e64983fc037d0b48b8704cd1f1c27f0000c34983fd03750b48b8387dd4f1c27f0000c34983fe037d0b48b8704cd1f1c27f0000c348b8b87dd4f1c27f0000c3f400000000|@12682,1,@2620|26,0,@10414 49,0,@16192 69,0,@10414 86,0,@16199 103,0,@10414 114,0,@16203 7450:D3,160|483b65187305ff5558cd0d4883fb03750949c7c603000000eb474c8b6a084d89ee4d8b6df849c1e50849c1ed074983cd01493bc5721048b81011d1f1c27f0000488b5d08ff234d8b7486fc4983fe03750949c7c603000000eb0749c7c6010000004c8b62084d89e54d8b6424f849c1e40849c1ec074983cc01493bc4721048b80017d1f1c27f0000488b5d08ff234d897485fc48c7c001000000c3f400000000|@16124,1,@2621|56,0,@9995 128,0,@10034 7451:D4,376|483b65187306ff5558ca090741504c8b304983fe1b754d4c8b700841ff3641ff760841ff761841ff762041ff76284c8b6424484c8b7424404c8b6c2438415641554889d84c89cb4d89d14d89e24c8b442438ff15380100004989c649c7c501000000eb08488d642408c2180041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b7424284983fe03750949c7c403000000eb1e41f6c501740949c7c403000000eb0749c7c4010000004983f4024983f4024d8d77c04c3b75107306ff5550ca00304d89f749c746f8070000004d8966304c8b24244d896628488d6424084c8b24244d896620488d6424084c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001b0000004883c408c21800f4000000000000|@16208,1,@2623,@7452| 7452:D3,472|483b65187306ff5558ca090753415041514152a8010f85a90100004c8b30ff70084d8b2e4d89ec4983fd037523498b46086a016a01488b542430488b5c24284989e0ff12415e488d642408e9150100004d89e54983fc077514488b542410488b442418ff124989c6e9f80000004983fd01754541ff7608488b542410488b0424488b5c2420ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9ad0000004d8b6e084c8b7424184983fe03753f4c8b7424384d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b80017d1f1c27f0000488b5d08ff234c8b7424384bc744aefc03000000eb004c8b7424304d8b76f849c1e60849c1ee074983ce014d3bee7215488d64242848b81011d1f1c27f0000488b5d08ff234c8b7424304f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f400000000|@10112,1,@2624|232,0,@10034 295,0,@9995 7453:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2626| 7454:D3,248|483b65187306ff5558ca09074989c65341504151415241f6c6010f85c6000000498b0641ff7608488b5424204c8b4c24584c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430415641554154415341524d89ca488b5c24404c8b4424384c8b4c2430ff124989c641564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e84bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f40000|@10112,1,@2627| 7455:D15,2784|483b65187306ff5558ca090753415041514152a8010f85b10a00004c8b30ff70084d8b2e4d89ec4983fd010f85360200004d8b6e1041ff761841ff76204c8b74243041ff364c8b7424384d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6424384d8934244c8b7424304d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80017d1f1c27f0000488b5d08ff234c8b7424304bc744aefc010000004c8b7424284d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80017d1f1c27f0000488b5d08ff234c8b34244c8b6424284f8974acfc4c8b7424204d8b76f849c1e60849c1ee074983ce014d3bee7215488d64244048b80017d1f1c27f0000488b5d08ff234c8b7424204bc744aefc010000004c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448415641554154415341524151488b442448488b5c24684c8b4424604c8b4c24584c8b542450e890feffff4989c64156488b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24684c8b4424604c8b4c24584c8b542450ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424184d8966104c8b6424084d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f802000000415b488d6424404d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c230004d89e54983fc050f856a01000041ff76084c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e840fdffff4989c64156488b5424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b54244041564155415441534152488b442430488b5c24584c8b4424504c8b4c24484c8b542440ff124989c54d8b75004983fe217578498b45084d8b6d104d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f802000000415d4c896b084c89334883fb017508488d642430c23000488d6424304c8b34244c897424304883c430ff25c30700004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c430c230004983fd070f85aa01000041ff7608488b0424488b5c24284c8b4424204c8b4c24184c8b542410ff153e0700004c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e8aefbffff4989c64156488b5c24604c8b4424584c8b4c24504c8b7424484c8b6c2440ff74241841564155488b4424204c8b542440ff15b80600004c8b5424604c8b7424584c8b6c245041564155ff74243048c7c30100000049c7c0010000004c8b4c2440ff15800600006a016a014889e3ff156b060000488b0424ff742408a801743c488b0424ff154d060000488d6424084c8b7424104983fe017508488d642448c23000488d6424105b4c8b7424304c897424604883c460ff2513060000ff15050600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442408ff15c70500004c8b7424204983fe0175054989c6eb0e488b5c2420ff15a40500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c89304883c450c2300041ff761041ff76184c8b34244d8b364983fe190f852a030000415e4d8b66084c8b74242841ff364c8b7424304d8b364983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24304d8975004c8b7424284d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80017d1f1c27f0000488b5d08ff234c8b7424284c8b6c24084bc744aefc010000004c8b7424204d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80017d1f1c27f0000488b5d08ff234c8b34244c8b6c24204c8b5c24084f89749dfc4c8b7424184d8b6ef849c1e50849c1ed074983cd014c8b7424084d3bf57215488d64243848b80017d1f1c27f0000488b5d08ff234c8b7424184c8b6c24084bc744aefc010000006a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24800000004c8b5424784c8b4c24704c8b442468488b7c2460415641554154544883042418415341524151ffb42480000000ff7424784150574989ca4989d14989f0ff15cc030000ff3424ff742410ff7424204c8b7424304c8b6c24504d8b65f849c1e40849c1ec074983cc014c8b6c24404d3bec7215488d64247048b80017d1f1c27f0000488b5d08ff234c8b6c24504c8b6424404f8974a5fc4c8bb424a00000004c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c2478415641554154415341524151488b442478488b9c24980000004c8b8424900000004c8b8c24880000004c8b942480000000e816f8ffff4989c641564c8b7424084983fe03750949c7c003000000eb434c8b7424684d8b6ef849c1e50849c1ed074983cd014c8b7424484d3bf57215488d64247848b81011d1f1c27f0000488b5d08ff234c8b6c24484c8b7424684f8b44aefc4c8b8c24a00000004c8b9424980000004c8bb424900000004156ff742470ff742470488b442430488b5c2428ff15800200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24404d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d4c8968084c89304883c470c230004c8b74243041ff364c8b7424384d8b364983c6027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6c24384d8975004c8b7424304d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80017d1f1c27f0000488b5d08ff234c8b7424304c8b6c24104bc744aefc010000004c8b7424284d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80017d1f1c27f0000488b5d08ff234c8b34244c8b6c24284c8b6424104f8974a5fc4c8b7424204d8b6ef849c1e50849c1ed074983cd014c8b7424104d3bf57215488d64244048b80017d1f1c27f0000488b5d08ff234c8b7424204c8b6c24104bc744aefc010000004c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448415641554154415341524151488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8daf5ffff4989c64156488b5424784c8b7424704c8b6c24684c8b6424604c8b5c24584c8b54245041564155415441534152488b442438488b5c24684c8b4424604c8b4c24584c8b542450ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24084d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f802000000415d488d6424404c8968084c8930c23000488d64242048c7c001000000c23000f400000000|@16210,1,@2628,@7451,@7445,@7457,@7458,@7459,@7460,@7461,@7462,@7463,@7465,@7466,@7456|90,0,@9475 146,0,@10034 207,0,@10034 268,0,@10034 1486,0,@9475 1547,0,@10034 1618,0,@10034 1689,0,@10034 1898,0,@10034 2089,0,@9995 2290,0,@9475 2351,0,@10034 2422,0,@10034 2493,0,@10034 7456:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2639| 7457:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2629| 7458:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2630| 7459:D3,160|483b65187305ff5558cd01a8010f85830000004c8b30488b40084d8b2e4d8b76084d8b264983fc1b755c4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8a9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d07fd4f1c27f0000488b5d08ff2348c7c001000000c3f400|@10112,1,@2631|136,0,@16211 7460:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2632| 7461:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706030000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2633| 7462:D3,256|483b65187305ff5558cd0953a8010f85c4000000ff30488b40084c8b34244d8b76084d8b364983fe1b750949c7c603000000eb0749c7c60100000041566a016a014889e3e8b7ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000|@10490,1,@2634|220,0,@10488 7463:D5,584|483b65187306ff5558ca09075341514152a8010f85b20100004c8b30ff700841ff36498b4608498b5e104c8b4c24184d8b59f849c1e30849c1eb074983cb014c8b24244d89e54d3be37215488d64242848b81011d1f1c27f0000488b5d08ff234d89ed4d89c94f8b6ca9fc4983fd030f85fc0000004c8b5424404c8b7424384c8b6c243041564151415549c7c0030000004c8b4c2428ff15cc0100004989c44c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b34244d89f54d3bf37215488d64242848b81011d1f1c27f0000488b5d08ff234c8b7424304d89ed4f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424404c8b6c24384c8b642430415641554154488b442420488b5c243849c7c0030000004c8b4c24304c8b542428e8c0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21800488d642408498d5fe8483b5d107306ff5550ca00434989df48c743f8020000004c8b6c24184c896b084c8933584d89c9415a488d6424104c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e935feffff4983f8017534488b4424105b4c8b4424284c8b4c2420415a488d6424084c8b6c24084c896c24184c8b34244c897424104883c410ff255b000000488b4424104c8b4c2408415a488d6424104c8b6c24184c8b6424104c8b5c240849c7c00100000048c7c3010000004c895c24084c896424104c896c2418e9b9fdfffff4|@16214,1,@2635,@7464,@7451|82,0,@9995 199,0,@9995 7464:D4,296|483b65187306ff5558ca090753415041514152a8010f85fc0000004c8b30ff700841ff36498b4608498b5e104c8b742438ff742418ff742418415649c7c0010000004c8b4c24404c8b542438ff15ee0000004989c44c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b34244d89f54d3bf37215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424384d89ed4f8b6caefc488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e81affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f400|@10112,1,@2636,@7451|125,0,@9995 7465:D4,472|483b65187306ff5558ca090753415041514152a8010f85a90100004c8b30ff700841ff76084d8b66106a016a016a016a01498b0424498b5c24084d8b442410498b7c2418498b7424204d8b7424284d8b6c24304d8b6424384c8b5c24684c8b5424604c8b4c2458415641554154544883042418ff742468ff742468ff742468ff7424684153415241514989f24989f9ff155b010000415c415b415d415e4983fd0375474c8b6c24104d8b45f849c1e00849c1e8074983c8014c8b0c244d89ca4d3bc87215488d64243048b80017d1f1c27f0000488b5d08ff234d89ed4d89d24bc74495fc03000000eb004c8b6c24484d8b55f849c1e20849c1ea074983ca014c8b2c244d89e94d3bea7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b5424484d89c94d89cd4f89748afc4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d89ed4d892e488d64240841564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f400000000|@10112,1,@2637,@7445|203,0,@10034 274,0,@10034 7466:D3,280|483b65187306ff5558ca0907a8010f85fb0000004c8b30488b40084d8b7608ff334c8b2b4983c5027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c892b4d8b68f849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234bc744b0fc010000004d8b69f849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234c8b2c244f896cb1fc4d8b6af849c1e50849c1ed074983cd014d3bf57215488d64240848b80017d1f1c27f0000488b5d08ff234bc744b2fc01000000e820ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2638|49,0,@9475 94,0,@10034 145,0,@10034 196,0,@10034 7467:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2640| 7468:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@10112,1,@2641| 7469:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@10112,1,@2642| 7470:D5,1456|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c240004c8b33ff7308498b064c8b204d89e54983fc1975124c8b600841ff76084c8b742420e9950300004983fd1175124c8b680841ff76084c8b742420e91101000041ff7608488b542440488b5c24384c8b4424684c8b4c24484c8b5424604c8b7424704c8b6c24584c8b642450ff742418ff742418415641554154ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e8bdfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b66084c3b5c2428750949c7c603000000eb184d89e6483b65187306ff5558ca0060ebd249c7c6010000004983f6024d8b65004d89e34983fc037521498b45086a016a01488b5424284c89f34989e0ff12415e488d642408e90c0100004d89dc4983fb077512488b5424104c89f0ff124989c6e9f10000004983fc01754341ff7508488b5424784c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a80000004d8b6d084983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424484d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424484f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e851fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2400041f6c60175284d8b1e4d8b6e084c3b5c2428750949c7c603000000eb184d89ee483b65187306ff5558ca0050ebd249c7c6010000004983f60241566a016a016a016a01498b0424498b5c2408498b742410498b542418498b4c24204d8b7424284d8b6c24304d8b6424384c8b9c24980000004c8b9424900000004c8b8c24880000004c8b842480000000488b7c2478415641554154544883042418ff742460ff7424604153415241514150574989ca4989d14989f0ff1531010000585b488d6424104c8b7424784c8b6c24704c8b6424504156415541544c8b4424184c8b4c24384c8b542430ff15f80000004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b442440488b7c2438415641554154415341524151415057488b5c24484c8b4424604c8b4c24584c8b542450e88bfaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c24000f40000000000|@16207,1,@2643,@7451,@7445|229,0,@9475 622,0,@10034 685,0,@9995 849,0,@9475 1303,0,@9475 7471:D3,976|483b65187306ff5558ca0907504150415141524883fb01750f488d64242048c7c001000000c238004c8b33ff7308498b064989c44d89e54d8b1c244983fb110f857f0200004d8b6424084d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc030f85560200004d8b6d084d8b5d084d89dc41ff76084c8b7424284d3bf3750949c7c603000000eb0749c7c6010000004983f6024d8b5d004d89da4983fb0375204c89e06a016a01488b5424304c89f34989e0ff12415e488d642408e9090100004d89d34983fa077512488b5424184c89f0ff124989c6e9ee0000004983fb0175414154488b5424184c89f3488b0424ff124d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000e9a70000004d89e54983fe03753f4c8b7424684d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b7424684bc744aefc03000000eb004c8b7424604d8b76f849c1e60849c1ee074983ce014d3bee7215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424604f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500130000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b5c24404c8b4424584c8b4c24504c8b542448e871fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c2380041ff7608488b542458488b5c24504c8b4424684c8b4c24604c8b5424484c8b7424404c8b6c2438ff742420ff742420ff74242041564155ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b4424384156415541544153415241514150488b5c24404c8b4424584c8b4c24504c8b542448e869fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c23800f4000000|@16207,1,@2644|340,0,@10034 403,0,@9995 567,0,@9475 831,0,@9475 7472:D3,296|483b65187306ff5558ca090753415041514152a8010f85f70000004c8b30ff7008498b0641ff7608488b5424284c8b4c24604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89ca488b5c24484c8b4424404c8b4c2438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f4000000000000|@10112,1,@2645| 7473:D10,1224|483b65187305ff5558cd014c8b304983fe037505488b4008c3ff7008ff7010ff7018ff7020f6042401751149c7c6010000004c8b6c2410e92d040000f64424100175384c8b6c24104d8b75004d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d89266a016a014d89edeb15488d64242048b8504ad1f1c27f0000488b5d08ff2341f6c501755d4d8b5d004d8b65084d8b5b084d8b164d8b4e084d3bda73054d89daeb004d3bd976054d89d9eb004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d894b084d89134d89de4d89e5483b65187306ff5558ca0060eb9d4d8b2e4c892c244d8b76084c89742408415d5849c7c6010000004c8b64241041f6c40175374d8b5424084d89f34983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89de483b65187306ff5558ca0170ebc34983fe0f7e39492bc54883c00149c7c50700000048d1e849d1ed4833d249f7f54c8d2c45010000004d3bf5720949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750e48c7c3010000004c8b742410eb18488b4424105b4c8b4424104159488d642410ff254f03000041f6c60175364d8b66084989dd4983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15e30200004889c348bac080d4f1c27f0000488b442410ff15c302000048bb3081d4f1c27f0000ff15ab020000ff159d020000ff158f0200004889c36a016a016a01f64424180175234c8b7424184d8b3648c704240300000048c7442408010000004c89742410e9d5000000f6c30175324c8b334d8b6e084d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e084d892e6a016a014989ddeb15488d64243848b8504ad1f1c27f0000488b5d08ff2341f6c501755d4d8b5d004d8b65084d8b5b084d8b164d8b4e084d3bda73054d89daeb004d3bd976054d89d9eb004d8d5fe84c3b5d107306ff5550ca08764d89df49c743f8020000004d894b084d89134d89de4d89e5483b65187306ff5558ca0860eb9d4d8b2e4c892c244d8b76084c89742408415d415e48c70424010000004c896c24084c89742410ff3424ff742410ff74242048c7c0010000004c8b04244c8b4c2408ff155e0100004989c549c7c6010000004d89ec41f6c40175374d8b5424084d89f34983c3027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89de483b65187306ff5558ca0070ebc34c8b24244c2b642408488d6424084983c4034d3bf475714d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424084d8966204c8b24244d896618488d6424104c8b6424204d8966104d896e084c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7000b0000004883c438c3488d64244848b81882d4f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe097e0949c7c603000000eb0749c7c601000000e9d5fcfffff400000000000000|@16224,1,@2649,@7478,@7479,@7480,@5119,@7474,@7481,@7477|130,0,@10398 301,0,@9475 475,0,@9475 522,0,@10101 554,0,@16215 575,0,@16218 714,0,@10398 938,0,@9475 1115,0,@16221 1155,0,@9475 7474:D3,296|483b65187305ff5558cd0d4883f80175594883fb01750848c7c001000000c3498d47d8483b45107305ff5550cd044989c748c740f80400000049bed880d4f1c27f00004c89701848c740100100000049bec07dd2f1c27f00004c8970084c8b72084c8930488b5d08ff234c8b28488b4008f6c301755f4c8b23488b5b084d8d77e84c3b75107306ff5550ca0d304d89f749c746f8020000004d8966084d892e4156e85affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47d8483b45107305ff5550cd044989c748c740f80400000049bed880d4f1c27f00004c89701848c740100100000049bec07dd2f1c27f00004c8970084c8b72084c8930488b5d08ff23f400000000000000|@16217,1,@2646|59,0,@16216 81,0,@12707 241,0,@16216 263,0,@12707 7475:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be18a26ef1c27f00004c8930c3f400000000|@16220,1,@2648|47,0,@7476 7476:D3,96|483b65187305ff5558cd054c8b284c8b58084c8b72084d89f44d8b364d8b6424084d8b76084d8b6d084d3bf575154d3be37f0848c7c003000000c348c7c001000000c34d3bf5730848c7c003000000c348c7c001000000c3f400000000000000|@16219,1,@2647| 7477:D3,296|483b65187306ff5558ca09034989c64c89c841f6c6010f85070100004d8b2e4d8b760841ff75004d8b6d08f6c301753b4c8b1b4d8d67d84c3b65107306ff5550ca09694d89e749c74424f8040000004d895c24184d894424104d896c240849c70424290000004d89e5eb6b4d8d67e04c3b65107306ff5550ca09614d89e749c74424f80300000049c7442410010000004d896c240849c704240f0000004d8d6fd84c3b6d107306ff5550ca09514d89ef49c745f80400000049bb785fd1f1c27f00004d895d184d8965104d89450849c745000700000041554989c14c89f0e81dffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d64241048c7000d000000c3c3f4000000|@16227,1,@2654|186,0,@10540 7478:D3,272|483b65187306ff5558ca09034883fb0175514d89c64d2bf14983c601493bc6760848c7c001000000c34883c00248c7c301000000e8c7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34c8b2b4c8b73084d8b65004d8b5d084e8d6c08ff4d3beb755c4d8d6ff04c3b6d107306ff5550ca01534d89ef49c745f8010000004d89650041554883c0024c89f3e857ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002e81fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3f400000000|@16225,1,@2650| 7479:D3,256|483b65187305ff5558cd01a8010f85e4000000ff304c8b680841f6c5010f85a70000004d8b75004d8b6d084d8b5e084c8b24244d8b6424084d3be375374c89e8e8bbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930e865ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d642408c348c7c001000000c3f4|@16226,1,@2651| 7480:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2652| 7481:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@2653|53,0,@9475 7482:D3,368|483b65187306ff5558ca0907415041514152a8010f853f010000f6c3010f852f0100004c8b30ff7008ff33ff73084d8b2e498b451041ff7608488b5424304c8b4c24704c8b4424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524d89c2488b5c24504c8b442448ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c24484c8b4424404156415541544153415241514150488b442450488b5c24404c8b4424684c8b4c24604c8b542458e8dffeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c23800488d642418eb05488d64241848c7c001000000c23800f400000000000000|@12767,1,@2655| 7483:D7,1864|483b65187306ff5558ca0d0752504150415141524c8b742420498b56084c8b4c24604c8b4424584c8b7424504c8b6c24484c8b6424404c8b5c24384c8b542430415641554154415341524d89c24889d8488b5c24304c8b442428ff124989c64156488b4424184c8b304983fe0b75624989c6498b46084d89f6498b5e104d89f6498b7e18488b5424284c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404c8b44243841564155415441534152415141504989f84c8b4c24484c8b542440e834ffffff4989c6eb6e4c8b742428498b56084c8b4c24684c8b4424604c8b7424584c8b6c24504c8b6424484c8b5c24404c8b542438415641554154415341524d89c2488b5c24384c8b442430ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564c8b742430498b56084c8b4c24704c8b4424684c8b7424604c8b6c24584c8b6424504c8b5c24484c8b542440415641554154415341524d89c2488b442450488b5c24404c8b442438ff124989c6415649c7c6010000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049be4084d4f1c27f00004d8975004c8b2c244d8b65004d89e64983fc29757d4d89ed4d8b75084d89ed4d8b65104d89ed4d8b6d184d8d5ff04c3b5d107306ff5550ca00704d89df49c743f8010000004d892b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9760100004d89ed4983fe070f85620100004d89ed4d8b65084d89ed4d8b75104d89ed4d8b6d184d8b5d004983fb130f85360100004d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd030f85120100004d8b2c244983fd0f757d4d8b64240841f6c401746641f6c401744b4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d8975084d8965004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64244048b8381fd1f1c27f0000488b5d08ff2349c7c601000000e9890000004d8b2e4983fd0f75794d8b760841f6c601746641f6c601744b4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64244048b8381fd1f1c27f0000488b5d08ff2349c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000041f6c6010f85f8020000488d6424084d8b3641ff3641ff760841ff76104c8b6c24184d8b75004983fe030f85a70000004d89ed4d8b6d084d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424104d897424084c8b7424204d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d8926498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8b24244c896020488d6424084c8968184c8970104c8b34244c897008488d64242048c700010000004883c428c238004d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff7620488b442418488b5c2428ff159f0200004989c54c8b7424204d89f44c3b3424750e488d64240849c7c603000000eb534d89e641f6c401753ef6042401752a4d89f64d8b364c8b24244d8b2424488d6424084d3bf4750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c601000000eb0c488d64240849c7c60100000041f6c5010f85c50000004983fe030f85b40000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e084c8b6c24384d892e4156488b442410ff15db0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24184c8968204c8b2c244c896818488d6424104c8970104c8b34244c897008488d64241048c700010000004883c448c23800488d642418eb05488d6424184d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424104d8975084c8b7424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b442420ff15ec0000004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b6c24084c8968204c8970184c8b34244c897010488d6424104c8b34244c897008488d64242048c700010000004883c428c23800488b442408ff15860000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24104d896e104c8b2c244d896e08488d64241849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700030000004883c428c23800f400|@16271,1,@2659,@7473,@7473,@7487,@7486|445,0,@16228 792,0,@10093 925,0,@10093 7484:D6,688|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4983fd01750b48b85084d4f1c27f0000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d8b364983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8cad0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35f6010000750949c7c603000000eb2b4c3b35dc010000750949c7c603000000eb194c3b35c2010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde888d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000|@16270,1,@2658,@9805,@9803,@9797|26,0,@10414 49,0,@16229 69,0,@10414 89,0,@9475 139,0,@4779 322,0,@11514 370,0,@10391 415,0,@11357 566,0,@10236 611,0,@16266 7485:D12,1984|483b65187305ff5558cd014c8b70084d89f44983fe037d0b48b8704cd1f1c27f0000c34c8b284d89ee4d8b6d004983fd010f85600200004d8b76084983ec02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00504989c748c740f8020000004c8960084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b354c070000750949c7c603000000eb2b4c3b3532070000750949c7c603000000eb194c3b3518070000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4085d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89e54983fc037d0b48b8704cd1f1c27f0000c34d89f44d8b364983fe030f85610200004d8b7424084983ed02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35af040000750949c7c603000000eb2b4c3b3595040000750949c7c603000000eb194c3b357b040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2086d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ee4983fd037d0b48b8704cd1f1c27f0000c34d89e54d8b24244983fc050f85600200004d8b6d084983ee02711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849beb8c5d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b3512020000750949c7c603000000eb2b4c3b35f8010000750949c7c603000000eb194c3b35de010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc20e9d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0087d4f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34983fe037d0b48b8704cd1f1c27f0000c348b8e087d4f1c27f0000c3f40000|@16265,1,@2657,@9805,@9803,@9797,@9805,@9803,@9797,@9805,@9803,@9797|26,0,@10414 67,0,@9475 117,0,@4699 300,0,@11514 348,0,@10391 393,0,@11357 544,0,@10236 589,0,@16237 674,0,@10414 712,0,@9475 762,0,@4699 945,0,@11514 993,0,@10391 1038,0,@11357 1189,0,@10236 1234,0,@16244 1319,0,@10414 1357,0,@9475 1407,0,@4699 1590,0,@11514 1638,0,@10391 1683,0,@11357 1834,0,@10236 1879,0,@16251 1961,0,@10414 1972,0,@16258 7486:D3,368|483b65187305ff5558cd094989c64989dd4d8b1e4d89dc4983fb130f85120100004d8b5d004983fb130f85040100004d8b76084d8b6d084d3bf57505e9cb0000004d8b1e4d89dc4983fb0175394d8b65004983fc01752a4d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037402eb05e98b000000e9a50000004d89e34983fc0375314d8b65004983fc0375254d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037502eb4eeb6b4d89dc4983fb0575334d8b65004983fc0575274d8b66084d8b6d084d3be5750949c7c503000000eb0749c7c5010000004983fd037402eb02eb12eb2f4983fc0775294d8b6d004983fd07751f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34983fc15752c4d8b65004983fc157522498b46084d8b7610498b5d084d8b6d104d3bf5740848c7c001000000c3e99bfeffff48c7c001000000c3f40000|@16272,1,@2661| 7487:D3,128|483b65187305ff5558cd01a80175664c8b30488b40084d8b2e4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2660| 7488:D4,432|483b65187306ff5558ca09014c8b284d89ee4983fd297525488b40084d89c14989d848bbb08ad4f1c27f0000ff15960100004989c54d89eee9c60000004983fe110f85b40000004c8b70084d8b2e4983fd050f859b0000004d8b76084c8b6bf849c1e50849c1ed074983cd014d3bf5721048b81011d1f1c27f0000488b5d08ff234e8b6cb3fc41f6c501740848c7c001000000c34d8d77d84c3b75107306ff5550ca00214d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e084d8906498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c348c7c001000000c348c7c001000000c341f6c60175274d8b1e4d8b660841f6c30174114d89e6483b65187306ff5558ca0060ebdc49c7c601000000eb0749c7c6030000004983fe03750848c7c001000000c34d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bdb8c4d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@16276,1,@2663,@7489|36,0,@16275 115,0,@9995 189,0,@9594 366,0,@9594 380,0,@4683 7489:D3,144|483b65187306ff5558ca09034989c6534150415141f6c6017565498b0641ff7608488b542418488b5c24104c8b442408ff124989c64156488b442408488b5c24204c8b4424184c8b4c2410e8b0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f4000000|@10112,1,@2664| 7490:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@16124,1,@2665| 7491:D4,240|483b65187306ff5558ca09074989c64989dd4983f9017d05e9b50000004c3b0dc40000000f8da80000004c89c94e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02654d89e749d1e94d894c24f841c64424ff404c89e748d1e948c7c001000000f348ab4c8b5c2408498d5fc0483b5d107306ff5550ca007d4989df48c743f8070000004c8953304c895b2849bb208bd4f1c27f00004c895b204c8963184c8943104c896b0849bdf0c16ef1c27f00004c892b4c89f04c8b34244c897424084883c408ff253600000048b8d015d1f1c27f0000488b5d08ff23f40000000000ffffffffffffff01|@16299,1,@2698,@6515|151,0,@16277 177,0,@7492 212,0,@10027 7492:D13,2056|483b65187305ff5558cd05524c8b284d89ee4983fd1f0f85ac0000004c8b5808ff7010488b5c24084c8b43084889db4c8b4b104889db4c8b53184889db4c8b73204889db4c8b6b284889db4c8b63304156415541544c89d8ff150a0800004989c64156488b442408488b5c2410ff15ed0700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f54983fe190f85290100004c8b60086a016a016a016a016a016a016a016a0141ff3424498b5c2408498b542410498b4c2418498b4424204d8b7424284d8b6c24304d8b642438488b7424484c8b5e084889f64c8b56104889f64c8b4e184889f64c8b46204889f6488b7e284889f6488b7630415641554154544883042420415341524151415057564989c24989c94989d0488b442450ff15f2060000488d642408415e415c415b415a415941585f5e488d6424084d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89ee4983fd110f85dd0100004c8b68086a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e91a0100004d89e64983fc037527498b45084c8b742410498b5608ff124989c64d8b2e4c892c244d8b76084c89742408e9ea0000004983fe07752d4c8b742410498b561048c7c001000000ff124989c649bd0891d3f1c27f00004c892c244c89742408e9b70000004d8b65084c8b7424104d8b56184d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64241848b81011d1f1c27f0000488b5d08ff234d89de4f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c89742408415e415d4d8b264983fc037554488d6424084983fd01754e4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b8308bd4f1c27f0000488b5d08ff234983fe0f0f8505040000ff70084c8b7010ff70184d8b264d89e54983fc190f856f0100004d8b6e084d8b75104983fe010f85500100004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b6c2410498b5d084d89ed4d8b45104d89ed4d8b4d184d89ed4d8b55204d89ed4d8b75284d89ed4d8b6d3041564155ff15b00300004989c641f6c6010f85ac0000004d8b3641ff3641ff7608488b442418488b5c2420ff15810300004989c64156488b442408ff15690300004889c34883fb017508415d4883c408eb12488b0424ff15460300004989c5488d6424104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d896610488d6424104d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b8504ad1f1c27f0000488b5d08ff23488d64241848c7c001000000c34983fd110f85650200004d8b6e086a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e91a0100004d89e64983fc037527498b45084c8b742420498b5608ff124989c64d8b2e4c892c244d8b76084c89742408e9ea0000004983fe07752d4c8b742420498b561048c7c001000000ff124989c649bd0891d3f1c27f00004c892c244c89742408e9b70000004d8b65084c8b7424204d8b56184d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64242848b81011d1f1c27f0000488b5d08ff234d89de4f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c89742408415d415e6a016a014d8b65004983fc0375364d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500110000004c892c244c89742408eb0d4d8b6d084c892c244c89742408ff3424ff742410488b442428488b5c2430ff15d80000004989c64156488b442408ff15c00000004889c34883fb017508415d4883c408eb12488b0424ff159d0000004989c5488d6424104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184c8b24244d896610488d6424084d896e0849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64241848c7c001000000c3488d64240848c7c001000000c3f4000000|@16281,1,@2666,@7494,@7495,@7496,@7497,@7498,@7499,@7500,@7517,@6515,@7493|677,0,@14622 743,0,@9995 986,0,@16278 1376,0,@10398 1567,0,@14622 1633,0,@9995 7493:D10,1672|483b65187306ff5558ca090753415041514152a8010f85fe0300004c8b28ff70084d8b75004d89f44983fe010f85c800000041ff751041ff7518498b4520488b5c2430ff15870600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d64240849c746080100000049c7060100000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e837ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004d89e64983fc050f859e000000498b4508488b5c2420ff15b20500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e88cfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004983fe07751441ff75084c8b2c2449c7c603000000e9690200004d8b750841ff7510498b45184983fe010f85950100004c8b304983fe190f85860100004c8b70084d89f54d8b76104983fe01750949c7c603000000eb0749c7c6010000004983fe030f855b0100004d8d67f04c3b65107306ff5550ca00204d89e749c74424f8010000004c8b34244d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b5424484c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c2420ff151f0400004989c641f6c6010f85a50000004d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64243048b80017d1f1c27f0000488b5d08ff234d89ed4d89ea4d89e44f8974a5fc488d64240858488b5c24184c8b4424104c8b4c24084d89d2488d6424204c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e9adfcffff488d64243048b8504ad1f1c27f0000488b5d08ff23eb00488b5c2428ff15430300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c7060300000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e818fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c2180041f6c501755b4d8b5d004d8b65084d8b134983fa01752f4d8b5b104d8b5b104983fb0175184983fe03750949c7c303000000eb0749c7c301000000eb0749c7c301000000eb0749c7c3010000004d89de4d89e5483b65187306ff5558ca0060eb9f4983fe03753c488b0424ff15170200004c8b5424484c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c2420ff15e70100004989c6415de9c10000004c8b5424484c8b7424404c8b6c243841564155488b442410488b5c24304c8b4424284c8b4c2420ff15a80100004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060700000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8a5faffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004983fe0175554983fd01753a58488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e92efaffff488d64242848b8687dd2f1c27f0000488b5d08ff234d8b0e4d8b660841f6c50175784d8b55004d8b5d084d8b42084d8d57f04c3b55107306ff5550ca007b4d89d749c742f8010000004d890a4c8b4c2408498b79f848c1e70848c1ef074883cf014c3bc77215488d64242848b80017d1f1c27f0000488b5d08ff234d89c94f895481fc4d89dd4d89e6483b65187306ff5558ca0060e920ffffff488d64242848b8687dd2f1c27f0000488b5d08ff23f4000000000000|@16298,1,@2695,@7523,@7500,@7522,@6515,@7500,@6515,@6515|759,0,@10034 858,0,@10398 1497,0,@12705 1599,0,@10034 1651,0,@12705 7494:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2667| 7495:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2668| 7496:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2669,@6515| 7497:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2670| 7498:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2671| 7499:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff7008498b0641ff7608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2672,@6515| 7500:D13,1584|483b65187306ff5558ca0907505341504151415249c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4156488b442428ff15450600004989c64156ff742430f6042401751d4c8b2c244d8b75004d89ed41ff75084d8b364d8b76184156e969030000488d6424084c8b7424084d8b2e49c7c60100000041f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb94156488b0424ff15aa0500004989c448c7c3010000004c8b342441f6c60175364d8b5e084989dd4983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89de4c89eb483b65187306ff5558ca0850ebc44c8b7424504c8b6c2448ff742420ff742418ff742428415641554154488b4424684c8b4424384c8b4c24604c8b542458ff15220500004989c64156488b442440ff150a0500004989c549c7c60100000041f6c50175264d8b5d004d8b65084d3bde7e02eb034d89f34d89de4d89e5483b65187306ff5558ca0160ebd44156ff15c40400004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15ed0300004989c5eb004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7061f00000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554c8b6c24084983c5027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47b8483b45107306ff5550ca00604989c748c740f80800000048c74038030000004c89683048c740280300000049bd88c1d1f1c27f00004c89682048c740180100000048c740100100000049bd008cd4f1c27f00004c8968084c8930488b5c24604c8b4c24684c8b0424ff15ee0200004989c64156488b54240848c7c001000000ff124989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004c8b2c244d896810488d6424104d89700849c7000d000000488b4424484c8b4c241048c7c3010000004c8b7424504c897424604883c460ff2578020000f604240175284c8b34244d8b2e4d89f641ff76084d8b75004983fe05750e4d8b75084c8b642420e9e2010000eb19488d642408415d4c892c24483b65187303ff5558e92dfcffff6a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e90b0100004d89e64983fc037523498b4508488b542458ff124989c64d8b2e4c892c244d8b76084c89742408e9df0000004983fe077529488b54245048c7c001000000ff124989c649bd0891d3f1c27f00004c892c244c89742408e9b00000004d8b65084c8b7424484d8b5ef849c1e30849c1eb074983cb014d3be37215488d64246848b81011d1f1c27f0000488b5d08ff234d89f64f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2440ff15b30000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000488b0424488b5c2440ff1573000000488d642418415d4c892c24483b65187303ff5558e9f2fdffff41f6c40175284d8b14244d8b5c24084d3bd6750949c7c603000000eb184d89dc483b65187306ff5558ca0070ebd249c7c6010000004983fe030f85fafdffffebabf4|@16283,1,@2673,@7502,@7503,@7504,@6531,@6504,@7505,@7506,@7507,@7516,@7501|262,0,@9475 754,0,@9475 817,0,@11223 847,0,@16282 1205,0,@14622 1264,0,@9995 7501:D3,104|483b65187305ff5558cd01a801754d4c8b30488b40084d8b76084983fe017505e9dbffffff41ff36e8d3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@12733,1,@2689| 7502:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2674,@7503| 7503:D3,640|483b65187305ff5558cd094c8b3341f6c6010f85130100004d8b264d8b6e084d8b1c244c3bd87505e9ca0000004d8b0b4d89ca4983f90175384c8b104983fa01752a4d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb05e98b000000e9a60000004d89d14983fa0375304c8b104983fa0375254d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037502eb4feb6d4d89ca4983f90575324c8b104983fa0575274d8b5b084c8b50084d3bda750949c7c303000000eb0749c7c3010000004983fb037402eb02eb14eb324d89d34983fb0775294c8b184983fb0775204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb1b4d89ee483b65187306ff5558ca0940e9e3feffff49c7c6010000004c8b1b4983fe010f850c01000041f6c3010f85a80000004d8b334d8b76084d89f54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca09684d89e749c74424f8020000004d896c2408498904244d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d084d8965004c892b4983c602711048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34d8d6fe84c3b6d107305ff5550cd094d89ef49c745f80200000049c7450801000000498945004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e4c893348b860bed1f1c27f0000c34d8b364d8b7608498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f4000000000000|@16284,1,@2675|347,0,@9475 444,0,@9475 578,0,@11193 7504:D4,216|483b65187306ff5558ca09035341504151a8010f85ab000000ff7008488b442410488b5c241849c7c001000000ff15bd0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d89e14d8966084d892e4156488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b442418e86fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3488d64241848c7c001000000c3f4000000000000|@16285,1,@2676,@5380|116,0,@9475 7505:D3,168|483b65187305ff5558cd01a8010f858a0000004c8b30488b40084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2677| 7506:D3,112|483b65187305ff5558cd01a80175534c8b30488b40084d8b76084983fe01750949c7c601000000eb034d8b364156e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@2678| 7507:D4,304|483b65187306ff5558ca090753415041514152a8010f85010100004c8b30ff70086a016a016a01498b06498b5e084c8b7424704c8b6c24684c8b6424604c8b5c24584c8b5424504c8b4c2448ff742428ff7424284156415541544153415241514c8d4424404c8b4c24784c8b542470ff15d3000000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424604c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c2438415641554154415341524151488b442438488b5c24584c8b4424504c8b4c24484c8b542440e815ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c23000488d64242048c7c001000000c23000f400000000|@10112,1,@2684,@7508| 7508:D5,712|483b65187306ff5558ca09075341504152ff30ff7008ff7018ff7020ff7030ff703849c7c6010000004c8b6c241041f6c50175364d8b5d084d89f44983c4027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0062ebc441564983f9017d15488d64245048b83020d1f1c27f0000488b5d08ff234c89cb48c7c0010000004c8b0424ff154d0200004989c649c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554c8bac24980000004c8ba424900000004c8b9c24880000004c8b942480000000498d5fa8483b5d107306ff5550ca007c4989df48c743f80a0000004c8b4c24084c894b484c8953404c895b384c8963304c896b284c8973204c8b2c244c896b184c8b6c24404c896b104c8b6c24284c896b0849bd10e76ef1c27f00004c892b4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004d89700849be38ed6ef1c27f00004d8930488b5424784c8b5424684c8b7424704156488b4424404c8b4c2420ff124989c641564c8b7424084d8b2e49c7c60100000041f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb941564c8b7424704983fe0175074c8b6c2430eb13488b5c2470488b442430ff15ce0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f8080000004c8b6424204d8966384c8b6424284d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b6c24384d896e084c8b2c244d892e488d6424084c8b6424504d89e54983fc01750e488d64244849c7c401000000eb0c488d6424484d89ed4d8b6500415d49c74500010000004d8965084d89751048c7c0010000004883c408c24000f400000000000000|@16292,1,@2685,@7515,@7514|72,0,@9475 121,0,@10101 319,0,@7509 363,0,@7513 7509:D4,120|483b65187305ff5558cd056a016a014c8b4208488b7a10488b72184c8b72204c8b6a284c8b62304c8b5a384c8b52404c8b4a484156415541544153415241514989f24989f9488d5c2430ff1540000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@16289,1,@2679,@7510| 7510:D7,944|483b65187306ff5558ca09075341f6c00175544d8b284d8b70084883f80175154d8b75004983fe0575094d8b7508e9ed020000eb474989c54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89e84d89f0483b65187306ff5558ca0107eba6488d64240848b8c85dd1f1c27f0000488b5d08ff236a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e90d0100004d89e64983fc037523498b4508488b542440ff124989c64d8b2e4c892c244d8b76084c89742408e9e10000004983fe077529488b54243848c7c001000000ff124989c649bd0891d3f1c27f00004c892c244c89742408e9b20000004d8b65084c8b7424304d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81011d1f1c27f0000488b5d08ff234c8b7424304f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2430ff15ec0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004156488b5c2438488b442408ff15a90100004c8b34244d8b2e4983fd01750d4d89f6488d642420e9920000004d89f64d8b7608488d6424084d8b2e4983fd030f85a9000000488d6424184d8b76084c8b6c24104983ed014d03f57115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706030000004156488b5c2418ff15e80000004989c64c8b6c24084c8b24244d896500488d6424104d89750848c7c001000000c23000488d64242048b8f08cd4f1c27f0000488b5d08ff2341f6c10175264d8b194d8b61084d3bde750949c7c603000000eb184d89e1483b65187306ff5558ca0066ebd449c7c6010000004983fe030f851ffdffff4c89d34c89e8ff155f0000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042403000000415d4c8b7424304d8965004d89750848c7c001000000c23000f400|@16290,1,@2680,@7503,@7512,@7511,@7503|69,0,@9475 110,0,@10528 266,0,@14622 325,0,@9995 640,0,@9475 786,0,@16286 7511:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2682,@7503| 7512:D3,184|483b65187305ff5558cd09a8010f859c0000004c8b30488b40084d8b2e4983fd03757c4d8b6e084989de4983ee014d03ee711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706010000004156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8f08cd4f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@2681|53,0,@9475 161,0,@16286 7513:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@16291,1,@2683| 7514:D3,176|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c54983ed014c03e8711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7060100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e883ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@2687|39,0,@9475 106,0,@9475 7515:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2686| 7516:D3,88|483b65187305ff5558cd01a8017539488b4008e8e8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c348c7c001000000c3f400000000000000|@10112,1,@2688|60,0,@11193 7517:D3,352|483b65187306ff5558ca090753415249c7c5010000004d8d77f04c3b75107306ff5550ca01224d89f749c746f80100000041c646ff404d892e41564c8b7424484c8b6c24404c8b642438498d5fc8483b5d107306ff5550ca01724989df48c743f8060000004c8b1c244c895b284c8963204c896b184c8973104c894b0849bee0f06ef1c27f00004c8933488b5424304c8b4c24604c8b5424204c8b742428415649b8b08fd4f1c27f0000ff124989c24c8b34244d8b36488d64240849c7c30100000041f6c60175444d8b264d8b6e084d8b0c244d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d895c24084d890c244d89e34d89ee483b65187306ff5558ca004cebb64c8b6c24484c8b6424584c8b7424504d8955004c8b5424084d89550849c74510010000004d895d184c8b1c244d895d20488d64241049c74528030000004d8965304d89753848c7c001000000c25000f400000000|@16297,1,@2694|127,0,@7518 162,0,@16295 7518:D4,96|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a2841564155488d5c2410ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@16293,1,@2690,@7519| 7519:D5,592|483b65187306ff5558ca09075341f6c0010f851c0200004d8b284d8b70084883f8010f85d60100006a016a014d8b75004d89f44983fe0175384d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000e9090100004d89e64983fc037521498b45084c89caff124989c64d8b2e4c892c244d8b76084c89742408e9df0000004983fe0775274c89d248c7c001000000ff124989c649bd0891d3f1c27f00004c892c244c89742408e9b20000004d8b65084c8b7424284d8b76f849c1e60849c1ee074983ce014d3be67215488d64241848b81011d1f1c27f0000488b5d08ff234c8b7424284f8b74a6fc4983fe0175354d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c89342448c744240801000000eb3a4d8b364d8b264d8b76084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c892c244c897424084c8b3424ff7424084d8b2e4983fd017502eb38498b4608488b5c2428ff15d40000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004156488b5c2430488b442408ff15910000004989c64c8b6c24204c8b24244d896500488d6424104d89750848c7c0010000004883c418c210004989c54983ed027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89e84d89f0483b65187306ff5558ca0107e9dafdffff488d64240848b8c85dd1f1c27f0000488b5d08ff23f400000000000000|@16294,1,@2691,@7520,@7503|178,0,@14622 237,0,@9995 526,0,@9475 570,0,@10528 7520:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2692,@7503| 7521:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@16296,1,@2693| 7522:D3,168|483b65187305ff5558cd01a8010f85870000004c8b28488b40084d8b75084d8b6d104d8d67f04c3b65107306ff5550ca01604d89e749c74424f8010000004d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@2697| 7523:D4,400|483b65187306ff5558ca090753415041514152a8010f85620100004c8b30ff700841ff76084d8b66106a016a016a016a016a016a016a016a01498b0424498b5c24084d8b4424104d8b4c2418498b7c24204d8b7424284d8b6c24304d8b6424384c8b9c24800000004c8b542478415641554154544883042418ffb42488000000ffb42488000000ffb42488000000ffb42488000000415341524989faff1506010000415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060100000041564c8b7424404c8b6c243841564155488b442418488b5c24384c8b4424304c8b4c24284c8b542420e8b4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21000488d64242048c7c001000000c21000f4000000|@10112,1,@2696,@7517| 7524:D9,2248|488dbc2460ffffff483b7d187306ff5560ca0907534150415141524883f801750f488d64242048c7c001000000c218004c8b30ff70084d8b2e4d89ec4983fd010f852101000041ff760841ff761041ff7618498b46204c8b742458498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24304c896b284c8973204c8b7424204c8973184c8b7424284c8973104c8b7424384c89730849be90006ff1c27f00004c8933ff15570800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060100000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8cafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004d89e54983fc070f8525010000498b46084989c44d89e541f6c4010f85ee0000004d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85c90000004d89ee4d8b364d8b2e4d8b66084d8b76104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703190000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e98afdffff488b5c24384c8b4c24304c8b442418ff15750600004989c641564c8b3424e9b20200004983fd050f85ee000000498b46084c8b742440498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24184c896b284c8973204c8b7424084c8973184c8b7424104c8973104c8b7424204c89730849bee0006ff1c27f00004c8933ff15f60500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8a0fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c2180041ff760841ff7610498b46184c8b742450498d5fc8483b5d107306ff5550ca01404989df48c743f8060000004c8b6c24284c896b284c8973204c8b7424184c8973184c8b7424204c8973104c8b7424304c89730849be30016ff1c27f00004c8933ff15f80400004989c54d8b75004983fe0d0f859c0000004d8b65084d8b6d104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084d8926488b542450498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642408ff12488b442408488b5c24284c8b4424204c8b4c24184c8b5424104c8b6c24484c8b6424404c8b5c24384c895c24384c896424404c896c24484883c430e95bfbffff4d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c7060300000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e8e6faffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c2180041f6c60175164d8b264d8b6e084d8b6424104d8b642418e9b102000049c7c6030000004983fe03751c488b5c2448488b0424ff15650300004989c6ff34244156e9920000004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c7060700000041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e80ffaffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c218004c8b7424084d89f54983fe0175634c8b34244983fe01488d642408753f488d64241058488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c8b5c24084c895c24084c896424104c896c2418e982f9ffff488d64243848b8687dd2f1c27f0000488b5d08ff234d89ed4d8b75004d89ed41ff7508f6442408010f85570100004c8b6424084d89e541ff34244d89ed41ff750841ff7608498b5e104d8d47e04c3b45107305ff5550cd084d89c749c740f80300000049c74010010000004c8b7424104d89700849c700010000006a016a016a016a016a016a016a016a01488b9424b0000000488b8424a80000004989e14c8b942490000000ff12415e415d415c415b415a415941585f498d47b8483b45107306ff5550ca807f4989c748c740f808000000488978384c8940304c8948284c8950204c8958184c8960104c8968084c8930488b5c24484c8b4424104c8b4c2450ff155c0100004989c5488b5424784d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b34244c8930488d642408ff124c8b6c2410415c488d6424104c8924244c896c2408483b65187303ff5558e91ffeffff488d64244848b8687dd2f1c27f0000488b5d08ff2341f6c401751e4d8b14244d8b5c24084d8b0a4983f905750a4d8b52084c8b0c24eb38eb2d49c7c4030000004983fc0375144d89ee483b65187306ff5558ca0040e9eefcffff49c7c601000000e905fdffff49c7c401000000ebd141f6c101752a498b394d8b4108488b7f084c3bd7750949c7c203000000eb184d89c1483b65187306ff5558ca007eebd049c7c2010000004983fa0375ba4d89dc483b65187306ff5558ca0070e955fffffff400000000|@16301,1,@2703,@6509,@7529,@6515,@6515,@7528,@6515|160,0,@7525 753,0,@7526 999,0,@7527 1669,0,@12705 2058,0,@12705 7525:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@2700| 7526:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@2701| 7527:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@2702| 7528:D3,312|483b65187306ff5558ca09035341504151a8010f850a0100004c8b30ff700841ff3641ff7608498b5e106a016a016a016a016a016a016a016a01488b542468488b44245849b80891d3f1c27f00004989e14c8b542460ff12415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c24204c8b4424184c8b4c2410e80cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000000000|@10112,1,@2705|70,0,@14622 7529:D3,240|483b65187305ff5558cd0953a8010f85c90000004c8b30ff70084d8b760849c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004155488b5424104d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f80200000049c74508010000004c8b24244d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12488b442408488b5c2410e852ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@2704| 7530:D5,472|483b65187305ff5558cd01a801756cff30488b4008e8e6ffffff4989c641564c8b7424084d8b2e4983fd0775234d89f6498b460848bb9891d4f1c27f0000ff15b40100004989c648c7c001000000eb54498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004d89f64c8930eb0848c7c001000000c34c8b34244c89f34983fe017506488d642410c34889db488d642410ff254c01000041f6c6010f85210100004d8b264d8b6e0841f6c4010f85fb0000004d8b1c244d8b5424084983fa010f85860000004d8b234d8b53084d8b5b104d8d4fe84c3b4d107306ff5550ca017c4d89cf49c741f8020000004d89590849c701190000004d8d5fd84c3b5d107306ff5550ca01764d89df49c743f8040000004d894b184d8953104d89630849c703030000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb4b4d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703070000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e9eafeffff488d64241048b83892d4f1c27f0000488b5d08ff23e9affefffff4000000|@10943,1,@2708,@7533,@7016|54,0,@16302 449,0,@16307 7531:D3,120|483b65187305ff5558cd014c8b70104d8b761848c7c00100000041f6c60175544d8b264d8b6e084d8b1c244983fb05752c4d8b5c24084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c24eb034989c44c89e04d89ee483b65187306ff5558ca0140eba6c3f40000|@16305,1,@2706| 7532:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@16306,1,@2707| 7533:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2709| 7534:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2710,@6515| 7535:D4,600|483b65187306ff5558ca0d0741514c8b284c8b58084c8b33ff7308ff7310488b7318ff7320ff7328ff7330ff73384c8b6424084d89e14983fc017d0a488d642438e95f0100004d89c94d89cc4c3b0dfd0100000f8d470100004d89e44c89e14e8d0ca50400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca466d4d89cf49d1ec4d8961f841c641ff404c89cf48d1e948c7c001000000f348ab48c7c7010000004d8d67f04c3b65107306ff5550cac46f4d89e749c74424f80100000041c64424ff4049893c2441544d8d67c84c3b65107306ff5550ca446f4d89e749c74424f8060000004d894c242849897424204d895c24184c8b1c244d895c24104d8944240849bba00a6ff1c27f00004d891c244d8d5fe84c3b5d107306ff5550ca04764d89df49c743f8020000004d894b0849b9b80c6ff1c27f00004d890b498d5fc8483b5d107306ff5550ca047c4989df48c743f8060000004c8953284c895b204c8963184c896b104c8b6a084c896b0849bd500d6ff1c27f00004c892b4c89f0ff15e80000004989c44c8b34244d8b2e488d64240849c7c601000000eb15488d64243848b8d015d1f1c27f0000488b5d08ff2341f6c50175414d8b55004d8b5d084d8b0a4d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8972084d890a4d89d64d89dd483b65187306ff5558ca0070ebb94c8b6c24304d8965004c8b6424284d8965084c8b6424204d8965104d8975184c8b7424184d8975204c8b7424104d8975284c8b7424084d8975304c8b34244d897538488d64243848c7c001000000c3f400000000ffffffffffffff01|@16312,1,@2715,@6515|263,0,@7536 308,0,@7537 372,0,@7538 423,0,@10027 7536:D4,488|483b65187305ff5558cd054989c6524d8b2e4d89ec4983fd07750e4c8b3424498b4608488d642408c34d89e54983fc0375184d8b66084c8b2c244d8b75184d89ed4d8b6d20e9e00000004983fd050f85aa0000004d8b66084c8b2c244d8b55284d89d34d8b52f849c1e20849c1ea074983ca014d3be27215488d64240848b81011d1f1c27f0000488b5d08ff234d89dd488d6424084f8b6ca5fc41f6c50175374d8b6d004d8b75004d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70001000000c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c341f6c5010f859e000000498b45004d8b5d084983fc01755b4c89f2ff124989c64d8b2e4983fd017509488d6424084c89f0c3498b46084c8b3424498b5e10488d642408ff158d0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c34d89e24983ea027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e958ffffff488d64240848b8c85dd1f1c27f0000488b5d08ff23f4|@16310,1,@2712,@7503|127,0,@9995 429,0,@9475 473,0,@10528 7537:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@16311,1,@2713|78,0,@10034 7538:D3,40|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b5628ff22f4000000|@14621,1,@2714| 7539:D3,32|483b65187305ff5558cd0148b8d093d3f1c27f0000488b5d08ff23f400000000|@14641,1,@2717|13,0,@14637 7540:D8,464|483b65187305ff5558cd0d5250534c8b2c244d89ee4983fd01750b488d642408584883c408c34c8b6c24084c89e84983fd0175094c89f0488d642418c36a016a014c8b7424204d8b46084889e3ff15b5010000ff3424ff7424106a016a014c8b7424404d8b4608488b4424304889e3ff158b0100004c8b3424ff742408f6442420010f851601000041f6c6010f85050100004c8b6c24204d8b6d004d8b364d8b5d004c8b4424484d8b50084d89d44d3bda0f85cb000000498b45104d8b2e4d89c04d3bec0f85a3000000498b5e10ff15240100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e084c8b6c24484d8b6d084d892e41564c8b7424084c89f34983fe0175074c8b742420eb0e488b442420ff15b60000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c450c3488d64245048b87810d1f1c27f0000488b5d08ff23488d64245048b87810d1f1c27f0000488b5d08ff23488d642438eb05488d6424384c8b34244c89f34983fe01750b488d642408584883c408c3488b4424084889db488d642418ff251a000000f400|@16315,1,@2718,@7542,@7543,@7544,@7545,@7541|256,0,@9594 372,0,@9991 393,0,@9991 7541:D3,208|483b65187306ff5558ca090153a8010f8597000000ff30488b40084c8b34244d8b2e4d3be875384d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004d89f64d897500488d642408415e4d892e4989460848c7c001000000c36a016a014889e3e895ffffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@16316,1,@2723|176,0,@10542 7542:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2719| 7543:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2720| 7544:D3,184|483b65187306ff5558ca09014989c54989de41504983fd017523488d6424084983fe01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff23498b450041ff750841f6c6017556498b1e41ff7608488b542410ff124989c64156488b442410488b5c24084c8b442418e88effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048b8282dd3f1c27f0000488b5d08ff23f400|@13917,1,@2721|47,0,@13915 168,0,@13915 7545:D3,208|483b65187306ff5558ca090153a8010f8597000000ff30488b40084c8b34244d8b2e4d3be875384d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f8010000004d89f64d897500488d642408415e4d892e4989460848c7c001000000c36a016a014889e3e895ffffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@16316,1,@2722|176,0,@10542 7546:D4,480|483b65187305ff5558cd094c8b284d89ee4983fd1f7509488b4010e9e0ffffff4d89f54983fe297522488b40084989d848bb5094d4f1c27f0000ff15b80100004989c54d89eee9e80000004d89ee4983fd110f85c80000004c8b68084d8b75004983fe050f85a60000004d8b75084c8b63f849c1e40849c1ec074983cc014d3bf4721048b81011d1f1c27f0000488b5d08ff234e8b74b3fc41f6c60175364d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb264d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8b2e4983fd017505498b4610c348c7c001000000c348b8008fd3f1c27f0000488b5d08ff234983fe0d7505488b4010c348c7c001000000c341f6c60175274d8b1e4d8b660841f6c30174114d89e6483b65187306ff5558ca0060ebdc49c7c601000000eb0749c7c6030000004983fe03750848c7c001000000c34d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd28dbd0f1c27f00004d896e0849bdb8c4d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@16319,1,@2725,@7547|50,0,@16317 133,0,@9995 274,0,@14613 414,0,@9594 428,0,@4683 7547:D3,136|483b65187306ff5558ca09014989c653415041f6c601755b498b0641ff7608488b542410488b5c2408ff124989c64156488b442408488b5c24184c8b442410e8bcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f400000000000000|@10112,1,@2726| 7548:D4,872|483b65187306ff5558ca09015341504c8b304d89f54983fe010f8509010000ff7010488b58184883fb017d15488d64241848b83020d1f1c27f0000488b5d08ff2348c7c0010000004c8b0424ff152e0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004c8b6c24104d8b55f849c1e20849c1ea074983ca014c8b24244d89e34d3be27215488d64241848b89011d1f1c27f0000488b5d08ff234d89db4d89ed4f8b6c9dfc4983fd0174514c8b6c24084d8b55f849c1e20849c1ea074983ca014d89db4d89dc4d3bda7215488d64241848b80017d1f1c27f0000488b5d08ff234d89ed4d89e44f8974a5fc488d64241048c7c0010000004883c408c3488d64241848c7c001000000c34d89ee4983fd05750d488d64241048c7c001000000c34983fe0775094c8b7008e9fd0000004c8b60104983fc017d15488d64241048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004d89650849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706110000004c8b6c24084d8b5df849c1e30849c1eb074983cb014d3be37215488d64241048b89011d1f1c27f0000488b5d08ff234d89ed4f8b6ca5fc4983fd0174474c8b2c244d8b5df849c1e30849c1eb074983cb014d3be37215488d64241048b80017d1f1c27f0000488b5d08ff234d89ed4f8974a5fc488d64240848c7c0010000004883c408c3488d64241048c7c001000000c341f6c6010f85ff0000004d8b264d8b6e084d8b5424084983fa017d15488d64241048b80095d4f1c27f0000488b5d08ff234d8d5fe84c3b5d107306ff5550ca00644d89df49c743f8020000004d89530849c703050000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895c240849c70424110000004c8b5c24084d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b89011d1f1c27f0000488b5d08ff234d89db4f8b5c93fc4983fb0174384c8b1c244d8b4bf849c1e10849c1e9074983c9014d3bd17215488d64241048b80017d1f1c27f0000488b5d08ff234d89db4f896493fceb004d89ee483b65187306ff5558ca0040e9f7feffff488d64241048c7c001000000c3f400000000000000|@16323,1,@2727,@7549|51,0,@10101 171,0,@9998 241,0,@10034 350,0,@16320 474,0,@9998 534,0,@10034 621,0,@16320 747,0,@9998 807,0,@10034 7549:D3,256|483b65187306ff5558ca0901483bc3750848c7c001000000c34983f8017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09014d89f749c746f8020000004d89460849c706050000004d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09214d89f749c746f80400000049c7461801000000498946104d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@2728|33,0,@16320 189,0,@9475 7550:D4,264|483b65187305ff5558cd014c8b304983fe07753eff70084c8b40104c8b34244c89f34983fe017d15488d64240848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15d60000004989c54d89eeeb01c341f6c601752e4d8b1e4d8b66084d8b5b084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd549c7c601000000eb0749c7c6030000004983fe037510488d64240848b8a85bd1f1c27f0000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd50bc52f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70007000000c3f4000000|@16325,1,@2729,@7551|47,0,@10101 155,0,@10515 197,0,@5133 7551:D3,224|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c641ff36498b460848bab895d4f1c27f0000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b4424184883c0027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442408e859ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f40000000000|@10111,1,@2730|62,0,@16324 138,0,@9475 7552:D18,1352|488dbc2460ffffff483b7d187306ff5560ca09074150415141526a016a016a014c8b5424484989e04c8b4c2418ff159d0500004c8b3424ff7424084c8b6c24184c8b6424304983fc037502eb2a4983fd0374244c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c430c218004c8b6c244841f6c50175464d8b5d004d8b65084d8b134c3b153405000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2028d1f1c27f0000e9bf0300004d8b6d004d8b65004c3b25cd04000075064d8b6d10eb15488d64243848b87810d1f1c27f0000488b5d08ff2341554c8b6c245041f6c50175464d8b5d004d8b65084d8b134c3b158904000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750c49bd0096d4f1c27f0000eb194d8b6d004d8b65004c3b25250400000f85fd0200004d8b6d104155498b1e498b46084d8b4610ff15000400004989c641564c8b7424104983fe037513488b54240848b81096d4f1c27f0000ff12eb004c8b7424104983fe037526ff74240848ba087fd3f1c27f0000488b442408ff15b1030000488b1424ff12488d642408eb00ff3596030000488b44240848bb5096d4f1c27f000049b86896d4f1c27f000049b98897d4f1c27f00004c8b542420ff15600300004989c641564c8b7424184983fe037513488b54241048b8d897d4f1c27f0000ff12eb004c8b7424184983fe037526ff74241048ba087fd3f1c27f0000488b442408ff1511030000488b1424ff12488d642408eb0049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564c8b6c24284d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849be58246ff1c27f00004d8975004c8b6424784d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b5c24084d895e104d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849beb8246ff1c27f00004c8933488b442410ff15110200006a016a016a014c8b7424204d8b2e4d89ec4983fd03751c4c8b6c24184d8b6d004d89e6488904244c896c24084c89742410eb3b4c8b7424184d8b066a016a016a01488b9c24a80000004c8b9424a00000004989e1ff15af010000415c415d415e4c8924244c896c24084c89742410ff3424ff742410ff7424204c8b7424584983fe037513488b54245048b828a9d4f1c27f0000ff12eb004c8b7424584983fe037526ff74245048ba087fd3f1c27f0000488b442418ff1546010000488b1424ff12488d642408eb00488b442410488b5c24084158488d6424104c8b4c24704c8b5424684c8bac24980000004c8ba424900000004c8b9c24880000004c899c24880000004c89a424900000004c89ac24980000004881c480000000e972fbffff488d64244048b87810d1f1c27f0000488b5d08ff2341f6c50175464d8b5d004d8b65084d8b134c3b15ad00000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017515488d64243848b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b65004c3b254000000075094d8b6d10e9e5fbffff488d64243848b87810d1f1c27f0000488b5d08ff23f400000000000000|@16546,1,@3009,@4640,@4640,@6434,@7831,@6515,@6434,@7743,@16558,@6434,@7843,@4644,@4644,@4640,@4640,@7678|215,0,@10158 258,0,@9991 370,0,@16326 447,0,@16327 476,0,@14473 521,0,@16329 531,0,@16330 541,0,@16336 583,0,@16338 612,0,@14473 764,0,@7556 857,0,@7557 1018,0,@16418 1047,0,@14473 1173,0,@9991 1283,0,@10198 1330,0,@9991 7553:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@2731| 7554:D3,32|483b65187305ff5558cd0948b87896d4f1c27f0000488b5d08ff23f400000000|@16335,1,@2732|13,0,@16331 7555:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@16337,1,@2733| 7556:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f4|@16340,1,@2734|36,0,@9475 7557:D4,32|483b65187305ff5558cd05488b5a0849b85096d4f1c27f0000ff2519000000f4|@16342,1,@2828,@7558|17,0,@16329 7558:D17,2448|483b65187306ff5558ca09015341504c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9aa000000909090e9a9000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a9000000909090e9ab000000909090e905050000909090e904050000909090e903050000909090e905050000909090e918060000909090e90b070000909090e90a070000909090e90c070000909090e9b5070000909090e9b4070000909090e9b3070000909090e9b2070000909090e9b1070000909090e9b0070000909090488d642410eb05488d642410eb0e4c8b3424e924080000488d642410eb05488d642410eb0e4c8b3424e98c070000488d642410e967040000ff7008ff7010ff70184c8b7424084d8b264d89e54983fc0b0f857f0100004d89f64d89f541ff76084d89ed4d8b75104d89ed41ff75184c8b6c24304d8b651049c7042403000000498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c8b6424284c8963104d89ed4c896b0849bd302f6ff1c27f00004c892b498d47d8483b45107306ff5550ca08404989c748c740f8040000004c8b6c24104c8968184c8970104c8b7424204c89700848c7000f000000ff154a0800004989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424304c8973104c8b7424384c89730849be802f6ff1c27f00004c8933498d47d8483b45107305ff5550cd084989c748c740f8040000004c8b7424184c8970184c8b7424084c8970104c8b7424284c89700848c7000f000000ff15c40700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424104c8b2c244d896e08488d64243049c7060b000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d89f64983fd190f85a20100004d89f641ff7608488b442418488b5c2428ff15360700004989c64156488b0424ff151f0700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849c70601000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89336a016a0148bab898d4f1c27f0000488b4424404c8b44241849c7c1010000004989e2ff1258415d4d8d77d84c3b75107306ff5550ca01204d89f749c746f8040000004c8b6424104d8966184d896e104c8b2c244d896e08488d64243849c7060f00000041564883f8017507415ee993000000ff15470600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017504415eeb334d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b442410488b5c2420ff15830500004989c64156488b0424ff156c0500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424204d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424284c89730849be88f76ff1c27f00004c8933488b442410ff15cb0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b2c244d896e08488d64243049c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410eb05488d642410e91b0200004c8b7008ff70104c8b68184983fd010f85f90000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b2c244d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24104c896b0849bdd8f76ff1c27f00004c892b4c89f0ff159c0300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424184d896e0849c70617000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c34c8b40086a016a0148bab898d4f1c27f0000488b442418488b5c241049c7c1030000004989e2ff12488b0424ff7424084883f801750b415e4883c420e99b000000ff15e30200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017508415e4883c420eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c420498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410e9b60000004c8b7008ff70104c89f0488b5c2410ff15010200004989c64156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424104c8973104c8b7424184c89730849be28f86ff1c27f00004c8933488b442408ff15b20100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64242049c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d642410eb05488d642410eb05488d642410eb05488d642410eb05488d64241048c7c001000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0575114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037536488b5c24084c8b0424ff15d80000004989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0575114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037536488b5c24084c8b0424ff154f0000004989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c3f40000|@16406,1,@2830,@7654,@7654,@6515,@7664,@7672,@6515,@6515,@7673,@7674,@7676,@7677,@7652,@6515,@6515|381,0,@7559 503,0,@7560 823,0,@16343 1271,0,@7649 1568,0,@7650 1704,0,@16343 2032,0,@7651 7559:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2735|16,0,@16341 7560:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2736|16,0,@16341 7561:D23,4488|488dbc2400ffffff483b7d187306ff5560ca090741514152ff30ff7008ff701041ff3041ff700841ff701041ff701841ff702041ff702841ff703041ff70384c8b6c24284d89ee4983fd0175054989deeb0f4889d84c89f3ff15da1100004989c641564c8b7424684983fe05750949c7c503000000eb0749c7c5010000004c8b7424404d8b264983fc0f752a4983fd0175244d89f64d8b66084d89f64d8b6e104d89f64d8b76184d89e349c7c201000000e96a0e000049c7c6010000004983fe0175164c8b7424184983fe0175094c8b3424e97f0c0000eb22488d6424604d8b36415d49c74500010000004d89750848c7c0010000004883c408c34c8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849be20426ff1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424504d8966104c8b6424584d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be80426ff1c27f00004c8933488b442448ff15761000004989c641564c8b74246041f6c60175454d8b264d8b6e084d8b1c244c3b1d4c10000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e98b0a00004d8b364d8b2e4c3b2de80f000075064d8b4610eb18488da4248000000048b87810d1f1c27f0000488b5d08ff2348c7c3010000004c8b74243041f6c60175394d8b66084989dd4983c5027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc14983f80174144c8b7424784983fe01750949c7c0d1070000eb00488b0424ff15510f00004989c66a016a016a014d8b2e4d89ec4983fd0775244c8b7424204d8b3648c70424030000004c8b6c24184c896c24084c89742410e9860000004d89e54983fc0375204d8b76084d8b6ef849c1e50849c1ed074983cd0149c7c401000000e97c0800004983fd0575384d8b4608488b442418488b5c24484c8b4c2420ff15c80e00004989c54c8b7424204d8b3648c70424010000004c896c24084c89742410eb1f4c8b7424204d8b3648c70424010000004c8b6c24184c896c24084c897424104c8b2c24ff7424084c8b6424184d8d77b84c3b75107306ff5550ca00304d89f749c746f8080000004c8b5c24384d895e384d8966304d896e284c8b6c24504d896e204c8b6c24584d896e184c8b6c24604d896e104c8b6c24684d896e084c8b2c244d892e41566a016a014c8b7424604983fe030f85f1010000488b44244848c7c303000000ff15f70d00004989c64d8b2e4983fd010f85480100004d8b66084d89e541f6c40175214d8b64240841f6c401740949c7c403000000eb0749c7c4010000004983f402eb0749c7c4010000004983fc030f85090100004d8b66104d8b75004d8b5d084d8b2b4d8b5b084c8b5424184d8b124983fa190f85870000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d892a4d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f8020000004d8955084d89750041f6c3017402eb0a49bca854d1f1c27f00004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c70601000000eb5b4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca854d1f1c27f00004d8966104d896e0849c70601000000eb004156488b442470ff158a0c00004989c641566a016a014c8b6c24184d8b75004983fe0175434d89ed4d8b65084d89e641f6c401740949c7c403000000eb0749c7c4010000004983f4024983fc0375194d89ed4d89ed41ff751041ff7608ff7424786a01e9a503000049be0899d4f1c27f00004d8b2e4c892c244d8b76084c89742408e9f00000004c8b7424104c89342448c744240801000000415d415c4d8b75284983fe010f8588000000488d6424384c8b7424184983fe037571f604240175544c8b34244d8b1e4d89f64d8b7608488d6424084d8b1b4983fb03751d488d6424404983fe01750949c7c603000000eb0749c7c601000000eb0c488d64244049c7c6010000004983fe037402eb0c488d642418eb1c488d6424484c8b342449c70603000000488d642418eb0f488d642460eb08488da424980000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c70619000000415d4d8965004d89750848c7c0010000004883c408c3415d415e41f6c5010f859b000000488d642410498b5d004d8b6d0841f6c501753b4c8bb4249000000049c706030000006a016a01488b442420488b9c24b00000004989e0ff15ce0a0000415d415e4c892c244c89742408e9b50100004d8b2e4983fd05753f498b5e084c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff157e0a0000415d415e4c892c244c89742408e96d0100004989deeb61488d6424104d8b2e4983fd05753c498b5e084c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff15240a0000415d415e4c892c244c89742408eb124c8b7424104c89342448c744240801000000e918feffff41f6c6010f85a60000004d8b264d8b6e084d8b14244d89d34983fa0175654d8b5424084d8b5c241041f6c20175494d8b224d8b52084983fa0175374d8b134983fa05752c4d8b5b104983fb01750949c7c303000000eb0749c7c3010000004983fb03750c49c7c403000000e91a010000eb00e9ba00000049c7c401000000e9a60000004983fb0575254d8b6424104983fc01750949c7c403000000eb0749c7c4010000004983fc037402eb02eb72eb5c49c7c6010000004983fe0375384c8bb4249000000049c706030000006a016a01488b4424204c8b8424b00000004989e1ff1510090000415d415e4c892c244c89742408eb124c8b7424104c89342448c744240801000000e9effeffff4d89ee483b65187306ff5558ca0840e9e0feffff49c7c603000000eb8e4983fc0375ddebef41f6c401754c4d8b14244d8b5c24084d8b0a4983f90575294d8b52104983fa01750949c7c203000000eb0749c7c2010000004983fa03750949c7c403000000eb184d89dc483b65187306ff5558ca0870ebae49c7c401000000eb9df644240801756d4c8b6c24084d8b75004d89ed41ff75084d8b2e4983fd017539498b4610ff15380800004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb8c415e4156f60424010f85d30000004c8b3424498b064d89f64d8b760841f6c601754b498b1e41ff7608ff15b70700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004c892c24483b65187303ff5558eb97488d642410488b5c2420ff15610700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442448ff151e0700004989c64d8b2e4983fd0575164c8b6c24084d8b6d004983fd0375074c8b6c2478eb3b4c8b742408eb18488da424f800000048b82099d4f1c27f0000488b5d08ff234c8b2c244c896c2410488d6424084c897424104883c408e9e1fbffff4983fd01750949c7c501000000eb6c4d8b5d004d8b65084d8b134983fa0175064d8b5b08eb114d89e5483b65187306ff5558ca0060ebc941f6c301752a4d8b0b4d8b53084d8b094983f905750949c7c303000000eb184d89d3483b65187306ff5558ca0078ebd049c7c3010000004983fb03751e49c7c5030000004983fd037502eb0a49bea854d1f1c27f0000e952ffffff4d89e5483b65187306ff5558ca0060e95affffff4d3be5720949c7c501000000eb2a4f8b5ca6fc4983fb0375544d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d004983fd01740e49c7c1010000004c8b6c2450eb414c8b7424204d8b3648c70424030000004c8b6c24184c896c24084c89742410eb1b4d89e34983c3024d89dc483b65187306ff5558ca0070e978ffffffe954f7ffff41f6c50175394d8b5d084d89cc4983c4027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e1483b65187306ff5558ca0062ebc14c8b6c24204d8b6d00ff74243041554d89f0488b442428488b5c24584c8b542470ff15200500004989c648c70424010000004c8974240848c744241001000000e977ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1de204000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4248000000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d7504000075094d8b4610e91af5ffff488da4248000000048b87810d1f1c27f0000488b5d08ff2341f6c601752b4d8b264d8b6e084d8b24244983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebcf49c7c6010000004983fe030f8563f3ffff488d6424084c8b6c24084d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d89750849bed0426ff1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104c8b6424504d8966084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be30436ff1c27f00004c8933488b442440ff15440300004989c64c8b2c244d8b6500488d6424084d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f8080000004c8b1c244d895d38488d6424104d8965304c8b24244d896528488d6424084c8b24244d896520488d6424084c8b24244d896518488d6424084c8b24244d896510488d6424084c8b24244d896508488d6424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8b6c240849c74500010000004d89750848c7c0010000004883c418c34983fb01750c49c7c303000000e98e0000004d8b034d8b4b08498b304889f7488b164883fa117571488b7608488b364883fe01750948c7c603000000eb0748c7c6010000004883fe03754e4989f84d8b40084d8b40084d3bc275354d89d04983c0027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89c24d89cb483b65187306ff5558ca007ce970ffffff49c7c301000000eb0749c7c3010000004983fb03750a4c8b5c2420e92301000049c7c6010000004983fe03740949c7c601000000eb5b4d8b65004d89e64983fc1175214d8b75084d8b2e4983fd03750b4d8b6e084c8b742428eb3d49c7c601000000eb324983fe0d75204d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000e977f0ffffebf941f6c6010f858c0000004d8b1e4d8b66084983fd01754a4d89de4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb9d4d89eb4983eb027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e96affffff488d64247048b8c85dd1f1c27f0000488b5d08ff234983fc0175184983fb01750949c7c403000000eb0749c7c401000000eb464d8b04244d8b54240841f6c3017530498b3b4d8b4b084d8b4008488b3f4c3bc775144d89cb4d89d4483b65187306ff5558ca0078ebac49c7c401000000eb0749c7c4010000004983fc0375194c3b742408750949c7c603000000eb0749c7c601000000eb0749c7c601000000e955fefffff40000000000|@16348,1,@2741,@6515,@4634,@4634,@7567,@7581,@7582,@7583,@7584,@7587,@7617,@7617,@7626,@7637,@7638,@7644,@7647,@4634,@4634,@6515,@7566|327,0,@7562 420,0,@7563 542,0,@10158 586,0,@9991 641,0,@9475 1240,0,@10468 1360,0,@10468 1491,0,@16345 2773,0,@16346 2948,0,@10468 3151,0,@9475 3352,0,@10198 3400,0,@9991 3561,0,@7564 3654,0,@7565 3979,0,@9475 4281,0,@9475 4325,0,@10528 7562:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f4|@16344,1,@2737|36,0,@9475 7563:D4,32|483b65187305ff5558cd05488b5a0849b82860d1f1c27f0000ff2519000000f4|@16342,1,@2738,@7558|17,0,@10547 7564:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f4|@16344,1,@2739|36,0,@9475 7565:D4,32|483b65187305ff5558cd05488b5a0849b82860d1f1c27f0000ff2519000000f4|@16342,1,@2740,@7558|17,0,@10547 7566:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2824| 7567:D9,976|483b65187306ff5558ca0907504150415141526a016a016a016a016a01544883042410ff7424404889d848c7c3010000004c8b44244049c7c10100000049c7c201000000ff15c6030000ff3424ff7424104c8b6424204983fc01750f48bb4882d1f1c27f0000e9be00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d100300007c15488d64244848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc010f8555020000418066ffbf4c89f3488b4424404c8b44243849b9b099d4f1c27f0000ff15c50200004989c641564c8b6424304d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15220200000f87bd0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424404c89f34983fe017d15488d64245848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15b50100004c8b6c24184d89ee4983fd0175054989c6eb0c4c89f3ff15910100004989c64156488b442418ff15790100004989c64c8b6424684c8b5c24704d8d6fb84c3b6d107306ff5550ca00584d89ef49c745f8080000004d895d384d89653049c74528030000004d8975204c8b34244d897518488d64240849be2860d1f1c27f00004d8975104c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15cd0000004989c64c8b6c2460498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c8b2c244c896810488d6424104c89700848c7000f0000004883c440c21000488d64245048b8f8c7d0f1c27f0000488b5d08ff234d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e95efdfffff4000000000000ffffffffffffff01ffffffffffffff01|@16352,1,@2743,@7570,@7571,@7572,@7573,@7574,@7569|94,0,@10817 143,0,@9475 193,0,@10818 309,0,@16349 353,0,@10766 560,0,@10101 706,0,@10547 872,0,@9487 916,0,@9475 7568:D3,72|483b65187305ff5558cd094989c6498d47d8483b45107306ff5550ca08404989c748c740f8040000004889581849bdc099d4f1c27f00004c8968104c89700848c7000f000000c3f4|@16351,1,@2742|47,0,@16350 7569:D3,904|483b65187306ff5558ca09074d89cc4c89d74883f801750c49c7c301000000e9610200004c8b30488b40084d8b1e4d8b56084d8d77e84c3b75107306ff5550ca891d4d89f749c746f80200000049895e0849c706010000004c8b6c24084d8b6df849c1e50849c1ed074983cd01493bdd721048b89011d1f1c27f0000488b5d08ff234c8b6c24084d8b6c9dfc4983fd030f85d50000004883c302711048b8d0c6d0f1c27f0000488b5d08ff234d89c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d8d5fe84c3b5d107306ff5550ca89714d89df49c743f80200000049897b084d89334c89df4d8d5fe84c3b5d107306ff5550ca89314d89df49c743f8020000004d89430849c703030000004c8b5424184d8d77e84c3b75107306ff5550ca893c4d89f749c746f8020000004d8956084d891e4d89e84d89e14c8b6c24204d89f44c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e995feffff4883c302711048b8d0c6d0f1c27f0000488b5d08ff234d89e14983c102711048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca895f4d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca893f4d89f749c746f8030000004d8956104d895e084d892e4c8b5c24204d8d6fe84c3b6d107306ff5550ca895b4d89ef49c745f8020000004d895d084d8975004d8d77e84c3b75107306ff5550ca89334d89f749c746f8020000004d89660849c706010000004c8b5c24184d8d67e84c3b65107306ff5550ca896b4d89e749c74424f8020000004d895c24084d8934244c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e97bfdffff40f6c701753e4c8b274c8b77084d8d6fe84c3b6d107306ff5550ca80584d89ef49c745f8020000004d895d084d8965004d89eb4c89f7483b65187306ff5558ca8008ebbc4c8b74242049c7c40100000041f6c601753d4d8b0e4d8b6e084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89ee483b65187306ff5558ca0058ebbd4c8b6c241849c7c60100000041f6c501753e4d8b45004d8b55084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8971084d89014d89ce4d89d5483b65187306ff5558ca0078ebbc4c8b6c24104d895d004d8965084d89751048c7c001000000c22000f400000000|@16359,1,@2755|116,0,@9998 158,0,@9475 183,0,@9475 371,0,@9475 396,0,@9475 7570:D3,128|483b65187305ff5558cd01a80175664c8b30488b40084d8b2e4d8b66084d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2744| 7571:D3,128|483b65187305ff5558cd01a80175674c8b30488b40084d8b6e084d8b66104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8b9ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@2745| 7572:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2746| 7573:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060300000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2747|76,0,@9475 7574:D4,120|483b65187306ff5558ca09034d8d77d84c3b75107306ff5550ca09034d89f749c746f8040000004d8946184d894e1049895e0849bd884f6ff1c27f00004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be20556ff1c27f00004c8933ff251e000000f40000000000|@16358,1,@2754,@6515|53,0,@7575 97,0,@7579 7575:D4,392|483b65187305ff5558cd054989c6524d8b264d89e54983fc110f85b80000004d8b5e084d89dc4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb030f858e0000004d89e64d8b6e084c8b34244d8b5e084d89dc4d8b5bf849c1e30849c1eb074983cb014d3beb7215488d64240848b89011d1f1c27f0000488b5d08ff234d89e6488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd0f0f85960000004d8b6e104d8b65004983fc1175204d8b6d084d8b6d004983fd07750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037554498b460841ff76184c8b4c24084d8b411848c7c301000000ff15660000004c8b742408498b5610488b1c24ff124989c6488d642410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642408eb05488d64240848c7c001000000c3f4000000|@16356,1,@2750,@7576|119,0,@9998 7576:D4,384|483b65187306ff5558ca090353415041514883f801750d488d64241848c7c001000000c34c8b30ff7008498b0641ff76084c8b4424184d8b68f849c1e50849c1ed074983cd014c8b7424204c89f34d3bf57215488d64242848b89011d1f1c27f0000488b5d08ff234889db4d89c04d8b7498fc4983fe037533488d6424084889db4883c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23584d89c04159488d642410e954ffffff498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849bef0526ff1c27f00004c8933ff15b60000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b4424184c8b4c2410e8bafeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f4000000000000|@16357,1,@2751,@6515|90,0,@9998 142,0,@9475 209,0,@7577 292,0,@9475 7577:D4,272|483b65187305ff5558cd054c8b304983fe190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15e30000004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b5208ff22f40000|@16355,1,@2748,@7578| 7578:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b8609ad4f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000|@10112,1,@2749,@6515|160,0,@16353 7579:D4,272|483b65187305ff5558cd054c8b304983fe190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15e30000004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488b5208ff22f40000|@16355,1,@2752,@7580| 7580:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b8609ad4f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000|@10112,1,@2753,@6515|160,0,@16353 7581:D3,728|483b65187305ff5558cd014c8b304d89f54983fe1f7509488b4010e9e0ffffff4d89ee4983fd0b75244c8b7010ff70184c89f0e8c8ffffff4c8b304983fe057506488d642408c358e9b3ffffff4983fe2975224c8b68084c8b70104983fe01750949c7c601000000eb1648b8a854d1f1c27f0000c348b8a854d1f1c27f0000c341f6c50175314d8b5d084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc94983fe010f8c8d0000004983fe017d02eb754c3b35000200007f6c4c89f04883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca00504d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb2e4d89e34983eb10eb2048b87095d3f1c27f0000488b5d08ff2348b8289cd4f1c27f0000488b5d08ff234d3bdc751e49c7c40100000049c7c20300000049c7c30100000049c7c101000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca0078ebb94d3bce0f8da30000004d89d04d0bc44981fa01010000755649d1e84c89df48d1ef4588443d004c89ca4883c202711048b8d0c6d0f1c27f0000488b5d08ff234c89de4883c60249c7c00100000048c7c7030000004989d14989f34989fa4d89c4483b65187306ff5558ca007eeb924c89ca4883c202711048b8d0c6d0f1c27f0000488b5d08ff234b8d7c12ff4c89de4989d14989f34989fa4d89c4483b65187306ff5558ca007ee954ffffff4983fc017502eb0b49d1ec49d1eb4788641d00418065ffbf4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244d89e6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70005000000c3f400000000000000ffffffffffffff01|@16362,1,@2756|108,0,@10468 119,0,@10468 149,0,@9475 320,0,@14645 336,0,@16360 470,0,@9475 542,0,@9475 7582:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b28488b4008f6c301755e4c8b33488b5b084d8b264983fc0575184d8b6d004983fd057502eb0a49bea854d1f1c27f0000eb004156e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f4000000000000|@13917,1,@2757|33,0,@13915 89,0,@10468 155,0,@13915 7583:D3,152|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b28488b4008f6c301754c4c8b33488b5b084d8b65004983fc0575054d89eeeb004156e8a8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f4|@13917,1,@2758|33,0,@13915 137,0,@13915 7584:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@10112,1,@2759,@7585| 7585:D4,576|483b65187305ff5558cd016a016a014889e3ff1540020000415e415d4983fe037f0b48b8a854d1f1c27f0000c34983fe010f8c8f0000004983fe017d02eb774c3b35f20100007f6e4c89f04883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b87095d3f1c27f0000488b5d08ff2348b8289cd4f1c27f0000488b5d08ff234d3bd3751e49c7c30100000049c7c10300000049c7c20100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc60f8da20000004c89cf490bfb4981f901010000755548d1ef4c89d648d1ee41883c344c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234c89d24883c20248c7c70100000048c7c6030000004989c84989d24989f14989fb483b65187306ff5558ca007feb934c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234b8d7409ff4c89d24989c84989d24989f14989fb483b65187306ff5558ca007fe955ffffff4983fb017502eb0a49d1eb49d1ea47881c1441806424ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d89334d89de498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c70005000000c3f4ffffffffffffff01|@16363,1,@2760,@7586|36,0,@10468 184,0,@14645 200,0,@16360 332,0,@9475 404,0,@9475 7586:D4,872|483b65187305ff5558cd094989c6534d8b2e4c8d25080000004f8d64acfc41ffe4e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9a6000000909090e93c010000909090e973000000909090e944020000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e92f020000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e911020000909090e903000000909090415d49be60bed1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3498b461041ff76186a016a014889e3e8f8feffffff3424ff7424106a016a01488b4424304889e3e8e0feffff415b415e4c8b6c24084d89ec4d3beb75394c8b2c244983fd03488d6424087502eb0749c7c6010000004c8b6c24204d89e44d896500488d6424084d89750848c7c0010000004883c420c3488d642428415d49be60bed1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c34d8b760841f6c6017405e9e600000041f6c6017415488d64240848b808afd1f1c27f0000488b5d08ff234d0fb66eff4e8d2c6d010000004981e5ff0100004983fd01750949c7c503000000eb0749c7c5010000004983f5024983fd030f849300000041f6c6017415488d64240848b808afd1f1c27f0000488b5d08ff23498b5ef848c1e30848c1eb074883cb01f6c30174084883fb017d15eb184c0fb673ff4e8d3475010000004983fe2374054989ddeb1348b8f814d1f1c27f0000ff152c0100004989c541f6c5017415415e4d892e49c746080300000048c7c001000000c3488d64240848b80815d1f1c27f0000488b5d08ff23415d49be60bed1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3415d49be60bed1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3498b46105be929fdffff4d8b66084d8b76104983fe01750c49c7c5010000004d89e6eb23415d49be60bed1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c341f6c60175364d8b5e084d89ec4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc4415e4d892e49c746080100000048c7c001000000c3f40000|@16364,1,@2761,@4933|213,0,@11193 371,0,@11193 430,0,@11081 513,0,@11081 582,0,@10021 633,0,@10022 651,0,@11193 686,0,@11193 757,0,@11193 814,0,@9475 7587:D8,1464|488dbc2458ffffff483b7d187306ff5560ca09035341504151ff30ff7008ff7018ff7020ff70284c8b6830ff70384d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41566a016a016a01ff742440488b44246848c7c30100000049c7c0010000004c8d4c24084c8b542420ff1570050000ff3424ff7424104c8b6424204983fc01750f49bc4882d1f1c27f0000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2dc20400007c15488d64247848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc017516418066ffbf4d89f449c7c6010000004c8b6c2448eb404d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070eba441f6c50175364d8b55084d89f34983c3027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc44d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bb90686ff1c27f00004d891e498d5fd8483b5d107306ff5550ca00704989df48c743f8040000004c8963184c896b104c89730849bec0696ff1c27f00004c8933488b442458ff156d0300004989c64156488b442478488b5c2448ff15500300004989c64156488b442410488b1c24ff15340300004989c64156488b94248000000048c7c001000000ff124989c64156488b94248800000048c7c001000000ff124989c641564c8b7424304d89f54983fe0175074c8b742420eb324d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424204d8966104d89ed4d896e0849c7061f00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24084d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b6c2478eb0e488b442478ff154c0200004989c54c8b7424584d8b1e4d8d77b84c3b75107306ff5550ca00284d89f749c746f8080000004c8b5424604d89d44d8956384d895e304c8b5c24684d895e284c8b5c24204d895e204d896e1849bd2860d1f1c27f00004d896e104c8bac24800000004d89eb4d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d8975084c8b7424084d89f24d8975004d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d89e44d89e14d89661849bc48bed1f1c27f00004d8966104c8b6424104d89660849c7060f0000004d8d67e84c3b65107306ff5550ca006e4d89e749c74424f8020000004d89d24d8954240849c70424050000004d8d57e84c3b55107306ff5550ca007a4d89d749c742f80200000049c74208010000004d89224d8d67b84c3b65107306ff5550ca006e4d89e749c74424f8080000004d89c94d894c243849c74424300100000049c7442428010000004c8b4c24684d894c24204d8954241849ba2860d1f1c27f00004d895424104d89db4d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b1c244d891e488d6424204d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24684d8965004d89750848c7c0010000004881c480000000c3f400000000000000ffffffffffffff01|@16366,1,@2765,@7592,@7593,@7594,@6515,@7591|148,0,@10817 197,0,@9475 247,0,@10818 391,0,@9475 451,0,@9475 561,0,@7588 613,0,@7589 978,0,@10547 1099,0,@11192 1280,0,@10547 7588:D3,264|483b65187305ff5558cd054c8b304983fe110f85e10000004c8b70084d8b264d89e54983fc0775484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd01757b4d8b6e084c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f4000000000000|@16365,1,@2762|153,0,@9998 7589:D4,512|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15d00100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe110f85e10000004c8b70084d8b264d89e54983fc0775484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fd01757b4d8b6e084c8b62184d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f40000|@16355,1,@2763,@7590|405,0,@9998 7590:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b8609ad4f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000|@10112,1,@2764,@6515|160,0,@16353 7591:D9,3656|483b65187306ff5558ca0907534150415141524883f8017536488d642408415d49bec046d1f1c27f00004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c410c208004c8b30ff70084d8b264d89e54983fc010f8599030000498b46084d8b6e10a8010f85390200004c8b304c8b60084983fc010f85230200004d8b65004983fc050f85130200004d8b65104983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ef0100004d8b75084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004c8b6424184d89650849c7450001000000498d5fe8483b5d107306ff5550ca01604989df48c743f80200000048c74308010000004c892b4d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004c8b6424204d89650849c74500010000004d8d47e84c3b45107306ff5550ca09604d89c749c740f80200000049c74008010000004d89284d8d4ff04c3b4d107306ff5550ca09414d89cf49c741f8010000004d89316a016a016a014c8b742448ff74242041564c8d542410ff15ee0c0000ff3424ff742410ff742420488b5c24504883c3027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b4424484983c0027115488d64245848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424784156488b4424504c8d4c24084c8b542458e8fafdffff415c415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084c8b6424104d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d6424184c8b6c24284d895d004d8965084d89751048c7c0010000004883c440c20800eb00e916080000488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424184983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e8f1fcffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c208004983fd050f857601000041ff76084d8b76104983fe0175134c8b34244d8b2e49c7c601000000e9a5020000488d642408488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424184983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e871fbffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c20800488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424184983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e821faffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c208004983fd01753e41564c8b7424304983c6027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24084d8b6d0049c7c40100000049c7c301000000e9c10000004d89eb4983eb024d89ea4983ea024c89e94883e9024c8b24244d8b6424084989c949c1e9034983c90149d1e94f0fb6240c4e8d2465010000004883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23e14983fc01750949c7c403000000eb0749c7c4010000004983f4024983fc0375274d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d897424084d891424eb034d89f44d89dd4d89e6483b65187306ff5558ca0060e9fbfeffff4d3bdd0f82db0000004983ec014c8b4424284d03c47115488d64243848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b6c245841554c89f3488b4424304c8d4c24084c8b542438e8ddf7ffffff3424ff742410ff7424204c8b7424484d89f541ff364d89ed4d8b75004983c6027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d89750048c7c00100000048c7c3010000004c8b4424404c8b4c2460ff15000600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9af0000004d89d94983c1024c8b5424084d8b52084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e96dfeffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15cc0400004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e1049c746080100000049c706030000004156488b442440488b5c2470ff15770400004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d64240841564c8b6c24184d89ee4983fd0175054989c4eb0c4c89f3ff15220400004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424084d89750849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24104d895e084d892e4c8b6c24604c8b1c244d895d00488d6424184d8965084d89751048c7c0010000004883c460c2080041f6c601754c4d8b264d8b6e084d8b1c244983fb05752a4d8b6424104983fc01750949c7c403000000eb0749c7c4010000004983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0140ebae49c7c6010000004983fe030f85d00100004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24184d896e0849c70601000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c89334d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004c8b6c24204d896e0849c706010000004d8d47e84c3b45107306ff5550ca09404d89c749c740f80200000049c74008010000004d89306a016a016a014c8b742448ff742420415649c7c1010000004c8d542410ff1576020000ff3424ff742410ff742420488b5c24504883c3027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234c8b4424484983c0027115488d64245848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424784156488b4424504c8d4c24084c8b542458e8aaf3ffff415c415e415d4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084c8b6424104d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e084c8b2c244d892e488d6424184c8b6c24284d895d004d8965084d89751048c7c0010000004883c440c20800488b5c24204883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b4424184983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b7424484156488b4424204c8d4c24084c8b542428e8a8f2ffff415b415d415a488d6424104d8d67e84c3b65107306ff5550ca002c4d89e749c74424f8020000004c8b7424104d8974240849c70424010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d896c24084d8934244d8d6fe84c3b6d107306ff5550ca001c4d89ef49c745f8020000004c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d892e415d488d6424104d895d004d8965084d89751048c7c001000000c20800f4|@16371,1,@2771,@7597,@7598,@7599,@6504,@7600,@7597|34,0,@10368 439,0,@9475 471,0,@9475 704,0,@9475 736,0,@9475 1088,0,@9475 1120,0,@9475 1424,0,@9475 1456,0,@9475 1768,0,@9475 2033,0,@9475 2125,0,@9475 2369,0,@9475 3079,0,@9475 3111,0,@9475 3337,0,@9475 3369,0,@9475 7592:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2766| 7593:D3,176|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b28488b4008f6c30175624c8b33488b5b084d8b264d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e892ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f40000|@13917,1,@2767|33,0,@13915 159,0,@13915 7594:D5,480|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8a89dd4f1c27f0000488b5d08ff23ff30488b4008f6c3010f8591000000ff33488b5b08e8b7ffffff4989c641564c8b7424104d8b2e4983fd05753d4d89f64d8b6e104983fd01750949c7c503000000eb0749c7c5010000004983fd03751a4d89f64d8b76084d8b2e49c7c40100000049c7c301000000eb4b498d47e8483b45107303ff55504989c748c740f8020000004c8b34244c897008488d6424084c8b34244c8930488d6424084883c408c3488d64240848b8a89dd4f1c27f0000488b5d08ff234d3bdd724c4c89e34883fb017d15488d64241848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15ec0000004c8b2c244d89ee4983fd017506488d642418c34c89f3488d642418ff25c30000004d89d94983c1024d8b56084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e905fffffff4|@16369,1,@2768,@7596,@7595|33,0,@16367 214,0,@16367 249,0,@10101 442,0,@9475 7595:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@2770|32,0,@9475 87,0,@11193 7596:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2769| 7597:D7,1464|483b65187306ff5558ca0907415041514152a8010f85e10000004c8b284d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e41564c8b74243041ff364c8b7424384d8b364983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24384d8975004c8b4c2430488b4424084c8b4424184c8b542408ff15550500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e1049c746080100000049c706030000004156488b44241048c7c30100000049b848bed1f1c27f0000ff15f60400004989c64c8b64241049c7c501000000eb15488d64241848b8504ad1f1c27f0000488b5d08ff2341f6c40175154d8b1c2441ff74240849c7c201000000e9e5020000f644242001740949c7c403000000eb0749c7c4010000004983f4024983ec014d03ec41557115488d64243848b8d0c6d0f1c27f0000488b5d08ff23f6442428010f859e0000004c8b6c2428498b5d004c8b24244983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983fc017d15488d64243848b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89650849c74500010000004d8d47e84c3b45107306ff5550ca08604d89c749c740f8020000004d89680849c700110000004c89f0ff15ce0300004989c6eb0041564c8b7424484d8b364e8d2c75010000004983fd01750f49be289ed4f1c27f0000e9ad0000004d89ec4983c4044c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d4a0300000f878f0100004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d89264c8b6424484c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262d49d1ed43c6442e0145418066ffbf41564c8b7424104c89f34983fe017d15488d64244848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15bb0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b6c24404d896e1849bd2860d1f1c27f00004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424104d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004c8b6c24084d896e0849c706050000004c8b6c24184c8b1c244d895d00488d6424104d8965084d89751048c7c0010000004883c420c21000488d64244048b8f8c7d0f1c27f0000488b5d08ff2341f6c30175674d8b0b41ff73084d8b014983f80575374d8b41104983f801750949c7c003000000eb0749c7c0010000004983f80375174d8b49084d8b0148c7c70100000048c7c601000000eb704d89d04983c0027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23eb374983ea014d03d57115488d64243848b8d0c6d0f1c27f0000488b5d08ff23415b4d89d54d89dc483b65187306ff5558ca0070e95cfcffff41594d89c24d89cb483b65187306ff5558ca007ce943ffffff493bf072264989f84d89d14983e9014d03c17115488d64244048b8d0c6d0f1c27f0000488b5d08ff23ebbc4889f34883c302498b51084889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c00200000048d1e948d3e04889c14883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f2024883fa0175054889faeb1e4889fa4883c2027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234889d94889ce4889d7483b65187306ff5558cac07fe925fffffff400000000000000ffffffffffffff01|@16374,1,@2775,@7602,@7603,@7604,@7601|98,0,@9475 220,0,@11192 258,0,@10398 344,0,@9475 395,0,@9475 422,0,@16320 553,0,@16370 762,0,@10101 858,0,@10547 1026,0,@9487 1133,0,@9475 1165,0,@9475 1256,0,@9475 1408,0,@9475 7598:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2772| 7599:D3,240|483b65187305ff5558cd09a8010f85d20000004c8b20488b40084883fb017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09304d89f749c746f80400000049c74618010000004d8966104d896e0849c706170000004156e84affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2773|34,0,@16320 7600:D3,464|483b65187306ff5558ca09034d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e98e010000493bc50f8d850100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84eb0000004989de4983ee014d03f1711048b8d0c6d0f1c27f0000488b5d08ff234983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8befeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e874feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec06ad1f1c27f00004c8930c348b818a9d3f1c27f0000488b5d08ff23f4000000|@16372,1,@2774|148,0,@9475 170,0,@16320 276,0,@9475 303,0,@9475 377,0,@9475 432,0,@10633 446,0,@14764 7601:D11,1744|483b65187306ff5558ca090753415041514152a80175124c8b28ff700849c7c601000000e99d030000f6442418010f85d10000004c8b742418498b5e08488b0424ff15d90600004989c6488d642408f6442408017528488d6424084c8b2c2441ff75004c8b2c244d8b6d0049c7c40100000049c7c301000000e99c000000488d642410f604240175674c8b2c244d8b6500488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c7450011000000498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018030000004c8968104c89700848c7000f000000c3488d64240848b8504ad1f1c27f0000488b5d08ff23488d64242048b8e049d1f1c27f0000488b5d08ff234d3bdd0f825d0100004154f6442418010f853b0100004c8b6c24184d8b65004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745001100000041554c89f0ff15ad0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b34244d897518488d64240849c745100100000049be2860d1f1c27f00004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c00100000048c7c3010000004c8b442408ff15dc0400004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9c3000000488d64242048b8504ad1f1c27f0000488b5d08ff234d89d94983c1024c8b14244d8b52084d89d849c1e8034983c80149d1e84f0fb614024e8d1455010000004c89d94883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23d04983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0175054d89e2eb1e4d89e24983c2027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9ecfdffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15940300004989c5eb004c8b24244d89e64983fc017509488d6424204c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c418c341f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424084983fe01751df644242001740949c7c603000000eb0749c7c6010000004983f602eb0749c7c60100000041564c8b6424204d8b34244e8d2c75010000004983fd01750f49bed09ed4f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153d0200000f87ba0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262d49d1ed43c6442e0150418066ffbf41564c8b7424104c89f34983fe017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15c80100004989c6415648c7c3010000004c8b742440eb15488d64243848b8f8c7d0f1c27f0000488b5d08ff2341f6c60175364d8b66084989dd4983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15340100004989c641564c8b7424204c89f34983fe017d15488d64245048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15f70000004889c34883fb0175035beb12488b0424ff15d90000004889c3488d642408488b4424204c8b4424384c8b4c24304c8b542428e8d0f9ffff4989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004c8b24244d896620488d6424084c8b6424384d89661849c74610010000004c8b24244d896608488d6424104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c430c3f400000000000000ffffffffffffff01|@16378,1,@2781,@7608,@7609,@7610,@7611,@6504,@7612,@7613,@7607|247,0,@10398 268,0,@10395 479,0,@10547 626,0,@10398 777,0,@9475 992,0,@9475 1102,0,@16373 1309,0,@10101 1362,0,@9487 1402,0,@9475 1449,0,@10101 1502,0,@10101 7602:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be1060d1f1c27f00004c8930c3f400000000|@10111,1,@2776|32,0,@9475 87,0,@10546 7603:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@16375,1,@2777| 7604:D4,520|483b65187306ff5558ca09015341504883f8017506584883c408c3ff30ff7008488b442418488b5c2408ff15f00100004989c64c8b64240849c7c50100000041f6c401756c4d8b14244d8b5c24084d8b0a4983f905753a4d8b4a104983f901750949c7c103000000eb0749c7c1010000004983f903751a4d8b52084d8b0a49c7c00100000048c7c701000000e99b0000004d89ea4983c2027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb644983ed01488b5c24184903dd7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d47d84c3b45107306ff5550ca08404d89c749c740f80400000049c74018030000004c8b6c24104d8968104d89700849c7000f000000584883c418e9ebfeffff4d89d54d89dc483b65187306ff5558ca0070e913ffffff493bf972264d89c24d89e94983e9014d03d17115488d64242048b8d0c6d0f1c27f0000488b5d08ff23ebbe4889fa4883c202498b72084889f948c1e9034883c90148d1e9480fb6340e488d3475010000004889f94883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823f14883fe01750948c7c603000000eb0748c7c6010000004883f6024883fe0175054c89c6eb1e4c89c64883c6027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234889d74989f0483b65187306ff5558ca807fe928fffffff4000000|@16376,1,@2778,@7605|161,0,@9475 198,0,@9475 327,0,@9475 479,0,@9475 7605:D5,832|483b65187305ff5558cd0950f6c3010f85800100004c8b33ff73084d8b2e4983fd0575784d8b6e104983fd01750949c7c503000000eb0749c7c5010000004983fd03755841ff760848c7c00100000048c7c3010000004c8b04244c8b4c2410ff15fb0200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9060100004c8b7424084d89f54983fe017d15488d64241048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4c89e84d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e41564889c04883c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b5c2408e89efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c408c3488d64240848c7c001000000c341f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15700100004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608030000004d892e41564c8b7424084d8b3649c7c50100000049c7c4010000004d3be672604983ed01488b4424184903c57115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c2410e8a3fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c418c34d89e24983c2024c8b5c24084d8b5b084d89e149c1e9034983c90149d1e94f0fb61c0b4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0175054d89ebeb1e4d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e9ecfefffff4|@16377,1,@2779,@6504,@7606|177,0,@16320 330,0,@9475 581,0,@9475 794,0,@9475 7606:D3,464|483b65187306ff5558ca09034d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e98e010000493bc50f8d850100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84eb0000004d89ce4983ee014c03f3711048b8d0c6d0f1c27f0000488b5d08ff234983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09434d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09234d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8befeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e874feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec06ad1f1c27f00004c8930c348b818a9d3f1c27f0000488b5d08ff23f4000000|@16372,1,@2780|148,0,@9475 170,0,@16320 276,0,@9475 303,0,@9475 377,0,@9475 432,0,@10633 446,0,@14764 7607:D4,48|483b65187305ff5558cd094989c641f6c601750d498b064d8b4608ff252700000048c7c001000000c3f4000000000000|@16386,1,@2788,@7614| 7608:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2782| 7609:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2783|76,0,@9475 7610:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060300000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2784|76,0,@9475 7611:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be1060d1f1c27f00004c8930c3f400000000|@10111,1,@2785|32,0,@9475 87,0,@10546 7612:D3,400|483b65187306ff5558ca09014d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e94b010000493bc50f8d420100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84a80000004d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c746180100000049895e1049bdc8a0d4f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e801ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8b7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec06ad1f1c27f00004c8930c348b818a9d3f1c27f0000488b5d08ff23f4000000000000|@16372,1,@2786|175,0,@16379 209,0,@9475 236,0,@9475 310,0,@9475 365,0,@10633 379,0,@14764 7613:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0a0d4f1c27f0000c3f4000000|@10402,1,@2787|75,0,@16380 7614:D5,560|483b65187306ff5558ca09014150a8010f850c0100004c8b30ff70084d8b2e4983fd05754b4d8b6e104983fd01751bf6c301740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd0375194d8b76084c8b2bff73084d8b1e49c7c401000000e9bf000000f6c3010f85940000004c8b33488b5b084d8d6fe84c3b6d107306ff5550ca08404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608030000004d892e4156488b4424084c8b442410e822ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b810a1d4f1c27f0000488b5d08ff2348ba90a1d4f1c27f000058ff224983fb01753f4c89e04c89ebff150f0100004989c64156488b442410488b5c24084c8b442418e8a6feffff4889c34883fb017506584883c418c3584883c418ff25d40000004d89d94983e9024d89d84983e8024c89d94883e9024d8b56084889cf48c1ef034883cf0148d1ef4d0fb6143a4e8d1455010000004883e10f4883f97f720948c7c701000000eb1148c7c70200000048d1e948d3e74883cf014c23d74983fa01750949c7c203000000eb0749c7c2010000004983f2024983fa0375244d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8962084d8902eb034d89e24d89cb4d89d4483b65187306ff5558ca0078e902fffffff40000|@16387,1,@2789,@7616,@7615|276,0,@16382 292,0,@16385 7615:D3,216|483b65187305ff5558cd09a8010f85bc0000004c8b20488b40084d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706110000004d8d6fd84c3b6d107306ff5550ca09504d89ef49c745f80400000049c74518010000004d8965104d89750849c74500170000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049c74608030000004d892e4156e860ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2791| 7616:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2790| 7617:D10,1760|483b65187306ff5558ca09035341504151ff30ff7008ff7018ff7020ff7028ff7030ff7038488b54244048c7c001000000ff124989c64156488b54244848c7c001000000ff124989c6415649c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bc50ab6ff1c27f00004d8926498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849be00ac6ff1c27f00004c8933488b442440ff15070600004989c549c7c4010000004c8b74242841f6c60175364d8b56084d89e34983c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebc44d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424110000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184c8b6424584d8966104d896e0849c706230000004156488b442430ff15250500004989c641564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24104d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742440eb0e488b442440ff15b20400004989c64c8b6424284983c4027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f80800000049c74538030000004d8965304c8b6424304d8965284c8b24244d896520488d6424084d89751849be2860d1f1c27f00004d8975104c8b7424404d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e41564c8b7424604d8b3649c7c50100000049c7c4010000004d3be60f82180100004155488b44243848c7c301000000ff15c6030000ff15b80300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48bed1f1c27f00004d8966104d896e0849c7060f0000004d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d8975204c8b34244d897518488d64240849c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c00100000048c7c3010000004c8b442468ff15ec0200004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000e9af0000004d89e24983c2024c8b5c24604d8b5b084d89e149c1e9034983c90149d1e94f0fb61c0b4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0175054d89ebeb1e4d89eb4983c3027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e930feffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15b50100004989c4eb004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24104d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67b84c3b65107306ff5550ca00604d89e749c74424f8080000004c8b5c24184d895c243849c74424300300000049c7442428010000004c8b5c24304d895c24204d896c241849bd2860d1f1c27f00004d896c24104c8b6c24404d896c24084d8934244d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d8966084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424204c8b6c24304d8965004d89750848c7c0010000004883c448c3f4000000|@16389,1,@2795,@6504,@7622,@7623,@7624,@7625,@7621,@6515|113,0,@9475 219,0,@7618 267,0,@7619 330,0,@9475 635,0,@9475 716,0,@10547 888,0,@11192 1240,0,@9475 1583,0,@10547 7618:D3,136|483b65187305ff5558cd054c8b304983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@16388,1,@2792| 7619:D4,392|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15580100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@16355,1,@2793,@7620| 7620:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b8609ad4f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000|@10112,1,@2794,@6515|160,0,@16353 7621:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b888c1d1f1c27f0000c3f4000000|@10402,1,@2800|75,0,@11223 7622:D3,400|483b65187306ff5558ca09014d8b304d89f5493bc6750848c7c001000000c34d8b70084883f8017d05e94b010000493bc50f8d420100004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe010f84a80000004d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c746180100000049895e1049bdc8a0d4f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e801ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8b7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec06ad1f1c27f00004c8930c348b818a9d3f1c27f0000488b5d08ff23f4000000000000|@16372,1,@2796|175,0,@16379 209,0,@9475 236,0,@9475 310,0,@9475 365,0,@10633 379,0,@14764 7623:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0a0d4f1c27f0000c3f4000000|@10402,1,@2797|75,0,@16380 7624:D3,232|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@16390,1,@2798|161,0,@9475 7625:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2799| 7626:D11,1728|483b65187306ff5558ca0901534150ff304c8b34244d8b2e4983fd1975554d89f64d8b760841ff762041ff7638ff7008ff7018ff7020ff7028ff7030ff7038488b54245048c7c001000000ff124989c64156488b54245848c7c001000000ff124989c6415649c7c6010000004c8b6c2430eb15488d64241848b840a3d4f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bc20ba6ff1c27f00004d8926498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849bed0ba6ff1c27f00004c8933488b442450ff15be0500004989c6415649c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b44245848c7c3010000004c8b0424ff15510500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424504d8966184c8b6424084d8966104d896e0849c7060f00000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742448eb0e488b442448ff15a60400004989c641564c8b7424684c89f34983fe0175074c8b742448eb0e488b442448ff15790400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b6424604d8965384c8b6424384d8965304c8b6424404d8965284d8975204c8b34244d897518488d64240849be2860d1f1c27f00004d8975104c8b7424504d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e41564c8b7424084c89f34983fe017d18488da4248000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15a70300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd60bed1f1c27f00004d892e4156488b44244848c7c301000000ff155c0300004989c64156488b44247048c7c301000000ff153d0300004889c34883fb017504415deb12488b0424ff151e0300004989c5488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d89e34d89661849bc48bed1f1c27f00004d8966104d896e0849c7060f0000004c8b5424584d8b2a4e8d2c6d010000004983fd01750f49bce8d8d0f1c27f0000e9a30000004d89e94983c1024c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05610200000f873c0200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89e94d89d2498d7208498d7c240848d1e9f3a44983c51049d1ed43c6042c2d41806424ffbf4d8d6fb84c3b6d107306ff5550ca00584d89ef49c745f8080000004c8b5424604d89553849c745300100000049c74528010000004c8b5424684d8955204c8b14244d895518488d64240849ba2860d1f1c27f00004d8955104d8965084d8975004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706190000004d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b6c24204d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d8965004d8d67b84c3b65107306ff5550ca00684d89e749c74424f8080000004d89db4d895c243849c74424300100000049c7442428010000004c8b5c24404d895c24204d896c241849bd2860d1f1c27f00004d896c24104c8b6c24504d896c24084d8934244d8d77e84c3b75107306ff5550ca00104d89f749c746f8020000004d8966084c8b6c24184d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24684d8965004d89750848c7c0010000004883c478c3488da4248800000048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01|@16395,1,@2804,@7631,@7632,@7633,@7634,@7635,@7636,@7630,@6515|122,0,@16391 162,0,@9475 268,0,@7627 316,0,@7628 381,0,@9475 715,0,@10547 814,0,@10101 877,0,@11193 1003,0,@11192 1050,0,@9570 1302,0,@10547 1516,0,@10547 1699,0,@9487 7627:D3,136|483b65187305ff5558cd054c8b304983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a084d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@16394,1,@2801| 7628:D4,392|483b65187305ff5558cd054c8b284d89ee4983fd190f85ef0000004c8b700841ff3641ff760841ff7610498b461841ff762041ff762841ff763041ff7638488b5a08ff15580100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084d8975184c8b34244d897510488d6424084c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe11756b4c8b70084d8b364983fe07750949c7c603000000eb0749c7c6010000004983fe0375484d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6a104d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400000000|@16355,1,@2802,@7629| 7629:D4,192|483b65187305ff5558cd0953a8010f859a0000004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000488b5c2408ff158d0000004989c64d8b2e4983fd11754241ff7608488b442408488b5c2410e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241048b8609ad4f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000|@10112,1,@2803,@6515|160,0,@16353 7630:D3,264|483b65187306ff5558ca09014883f801750848c7c001000000c34c8b30488b40084d8b264d89c54983ed014c03eb711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09514d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09314d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e82fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@16396,1,@2811|50,0,@9475 190,0,@9475 7631:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2805| 7632:D3,232|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264d8d77e84c3b75107306ff5550ca09104d89f749c746f80200000049895e0849c706010000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@16396,1,@2806|161,0,@9475 7633:D3,256|483b65187305ff5558cd094883f801750848c7c001000000c34c8b30488b40084d8b264989dd4983c502711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e833ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@16396,1,@2807|46,0,@9475 186,0,@9475 7634:D3,144|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849c7060100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2808|76,0,@9475 7635:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2809| 7636:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2810| 7637:D4,112|483b65187305ff5558cd01a80175554c8b30ff7008498b460848c7c301000000ff15620000004989c64156488b442408e8cbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000|@10112,1,@2812,@7638| 7638:D6,1128|483b65187305ff5558cd0953a8010f85930100004c8b30ff70084d8b264d89e54983fc050f85e30000004d8b76084d89f54983c5027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983fd010f8ca20000004983fd017d0a488d642410e9820000004c3b2df30300007f744c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017505e9030200004d89da4983ea10e9f2010000488d64241048b87095d3f1c27f0000488b5d08ff23488d64241048b8289cd4f1c27f0000488b5d08ff234983fd010f8584000000498b460841ff76104c8b7424104c89f34983fe01750948c7c305000000eb034889dbe8c2feffff4989c66a016a014d8b2e4983fd0175134d8b6e084d8b76104c892c244c89742408eb0d48c70424010000004c89742408ff3424ff742410488b442420ff15100300004989c641564c8b7424384983fe057509ff742428e9b7000000eb4b49bea854d1f1c27f0000eb10488d64240848b8a854d1f1c27f0000c341564c8b7424084c89f04983fe017506584883c410c3488b5c2410e829feffff4889c358488d642410ff25a20200004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424104d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424104d896e0849c706010000004883c418e967fffffff604240175554c8b3424498b064d89f641ff7608ff15160200004989c64c3b35e4010000750949c7c603000000eb0749c7c6010000004983fe03740e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558eba5488d64240849c7c6010000004983fe030f8525ffffff488d64243049bea854d1f1c27f0000e976ffffff4d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8db60000004d3bc675084c89cf490bfaeb034c89d74981f901010000755a48d1ef4c89de48d1ee41883c344c89c14883c1027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca007feb844c89c14883c1027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca007fe941ffffff4983fa017502eb0d4d89d649d1ee49d1eb4788341c41806424ffbf4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d89f54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049c74610010000004d896e0849c70605000000e962fdfffff40000010000e000000000ffffffffffffff01|@16397,1,@2813,@7640,@7641,@7639|62,0,@9475 234,0,@14645 255,0,@16360 413,0,@10468 430,0,@10468 712,0,@10468 858,0,@9475 935,0,@9475 7639:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@10112,1,@2818,@7585| 7640:D3,2024|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9ee000000909090e949010000909090e949010000909090e911020000909090e9ec020000909090e92b030000909090e92b030000909090e91b030000909090e923030000909090e923030000909090e950030000909090e9fb020000909090e949030000909090e9fe030000909090e9fe030000909090e90f040000909090e918040000909090e918040000909090e977040000909090e978040000909090e981040000909090ff7008ff7010488b4018e824ffffff4989c64c2335fa0600004156488b442410e80effffff4989c54c8b34244d23f54156488b442410e8f8feffff4989c6488b04244923c6488d642420c34c8b700841ff3641ff760841ff7618498b4620e8d0feffff4989c64156488b442418e8c1feffff4989c54c8b34244d23f54156488b442418e8abfeffff4989c54c8b34244d23f54156488b442418e895feffff4989c6488b04244923c6488d642430c348c7c001000000c34c8b7008ff70104c8b68184d8b6d004c8d25080000004f8d642cff41ffe4eb16eb1deb24eb2beb32eb39eb40eb47eb4eeb55eb5ceb634c8b2d18060000eb614c8b2d07060000eb584c8b2df6050000eb4f4c8b2de5050000eb464c8b2dd4050000eb3d4c8b2dc3050000eb344c8b2db2050000eb2b4c8b2da1050000eb224c8b2d90050000eb194c8b2d7f050000eb104c8b2d6e050000eb074c8b2d5d05000041554c89f0e8d3fdffff4989c54c8b34244d23f54156488b442410e8bdfdffff4989c6488b04244923c6488d642418c34c8b6808ff7010ff70184c8b70204983fd0175094c8b2d0a050000eb164983fd0375094c8b2df3040000eb074c8b2de20400004155498b064d8b760841f6c601752841ff36e863fdffff4989c64156488b442408e854fdffff4989c64c8b2c244d23ee488d642410eb08e83efdffff4989c54c8b34244d23f541564c8b742410498b064d89f64d8b760841f6c601752841ff36e815fdffff4989c64156488b442408e806fdffff4989c64c8b2c244d23ee488d642410eb08e8f0fcffff4989c54c8b34244d23f54156488b442420e8dafcffff4989c6488b04244923c6488d642428c34c8b7008ff7010ff70184c89f0e8b8fcffff4989c64156488b442410e8a9fcffff4989c54c8b34244d23f54156488b442410e893fcffff4989c6488b04244923c6488d642420c3488b05dc030000c348c7c001000000c3488b05c4030000c34c8b7008ff70104c89f0e85cfcffff4989c64c0b35a20300004156488b442408e846fcffff4989c6488b04244923c6488d642410c3488b4008e92dfcffff4c8b68084c8b70104d8b5d004d89dc4983fb0f75294d8b5d084983fb03750949c7c303000000eb0749c7c3010000004983fb0375094c8b2d39030000eb364983fc0d75294d8b6d084983fd03750949c7c503000000eb0749c7c5010000004983fd0375094c8b2d02030000eb074c8b2df10200004155498b064d8b760841f6c601752541ff36e8a2fbffff4989c64156488b442408e893fbffff4c8b34244c23f0488d642410eb08e880fbffff4989c6488b04244923c6488d642408c348c7c001000000c3ff7008488b4010e85cfbffff4989c6ff34244156e987010000488b4008e846fbffff4823056f020000c348c7c001000000c3ff70104c8b7018498b064d8b760841f6c601752841ff36e81afbffff4989c64156488b442408e80bfbffff4989c54c8b34244d23f5488d642410eb08e8f5faffff4989c64c2335130200004156488b442408e8dffaffff4989c6488b04244923c6488d642410c3488b4010e9c6faffff4c8b70084156ff35da010000e9ae0000004c8b70084c8b68104c8d25080000004f8d642cff41ffe4eb1aeb21eb28eb2feb36eb3deb44eb39eb37eb35eb45eb4ceb53eb5a4c8b2d93010000eb584c8b2d82010000eb4f4c8b2d71010000eb464c8b2d60010000eb3d4c8b2d4f010000eb344c8b2d3e010000eb2b4c8b2d2d010000eb224c8b2d1c010000eb194c8b2d0b010000eb104c8b2dfa000000eb074c8b2de900000041554c89f0e817faffff4989c6488b04244923c6488d642408c3f64424080175324c8b742408498b064d89f641ff7608e8ecf9ffff4989c44c23642408415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175774c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd01750e498b4620e89cf9ffff4989c4eb324d89e54983fc05750e498b4608e885f9ffff4989c4eb1b4983fd0775094c8b2533000000eb0c498b4618e868f9ffff4989c44c23642408415d4c8924244c896c2408483b65187303ff5558eb82584883c410c3f4000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000c000000000010000a000000000010000a00000000001000080000000000100008000000000010000e000000000010000a000000000ffffff7fffffffff010000c000000000010000e000000000010000e0000000000100008000000000010000c000000000010000e0000000000100008000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000e000000000010000c000000000010000e000000000010000e000000000010000e000000000010000e0000000000100006000000000010000c000000000010000c000000000|@16398,1,@2814| 7641:D4,1832|483b65187305ff5558cd094c8b284d89ee4983fd010f85840000004c8b2b4983fd01757b4c8b7008ff70104c8b6b08ff73104c89eb4c89f0ff15020700004989c64156f60424017410488d64241848b8a854d1f1c27f0000c3488b442410488b5c2408e898ffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c70001000000c34983fe05752a4c8b334983fe0575214c8b7008ff70104c8b68184c8b6308ff7310ff73184d8b1649c7c301000000eb0b48b8a854d1f1c27f0000c34983fa0175104d8b0c2449c7c201000000e9b90000004d89d04983e8024c89d74883ef024c89d14883e9024d8b4e084889ce48c1ee034883ce0148d1ee4d0fb60c314e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c23ce4983f901750949c7c103000000eb0749c7c1010000004983f1024983f90375244d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d895908498939eb034d89d94d89c24d89cb483b65187306ff5558ca007ce931ffffff4983f9017505e9ba0000004c89cf4883ef024c89ce4883ee024c89c94883e9024d8b4424084889ca48c1ea034883ca0148d1ea4d0fb604104e8d0445010000004883e10f4883f97f720948c7c201000000eb1148c7c20200000048d1e948d3e24883ca014c23c24983f801750949c7c003000000eb0749c7c0010000004983f0024983f80375244d8d47e84c3b45107306ff5550cac07e4d89c749c740f8020000004d895008498930eb034d89d04989f94d89c2483b65187306ff5558ca007ee93bffffff4d3bda750949c7c303000000eb4c41f6c301753f41f6c2017530498b3b4d8b4b08498b324d8b4208483bfe75144d89c24d89cb483b65187306ff5558ca007cebbf49c7c301000000eb0749c7c301000000eb0749c7c3010000004983fb0375624c8b6424104983fc0375074c8b642408eb0749c7c4010000004983fd037508415d4883c410eb0c488d64241849c7c501000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8968184c8960104c89700848c70005000000c34983fd030f85dc0000004c8b1c244983fb030f85c70000004d8b164d8b1c244d3bd37e054d89d3eb004983fb010f8c970000004983fb017d07488d642418eb7a4c3b1da90300007f6c4c89d84883c07e49c7c28100000048d1e849d1ea4833d249f7f24c8d0c45010000004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414e8d0ccdf9ffffff4983f9017502eb4f4d89c84983e810eb41488d64241848b87095d3f1c27f0000488b5d08ff23488d64241848b8289cd4f1c27f0000488b5d08ff23488d642418eb05488d64241848b8a854d1f1c27f0000c34d3bc1751e49c7c00100000048c7c70300000049c7c10100000048c7c601000000eb234c89c748d1ef41c6043a004c89c74883c7024989f8483b65187306ff5558ca007febba493bf30f8d08020000498b164889d1483bf20f8d98000000498b56084883fe017d07488d642418eb77483bf17d6d4889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f2024883fa03751ae9c7000000488d64241848b818a9d3f1c27f0000488b5d08ff23498b14244889d1483bf20f8d90000000498b5424084883fe017d07488d642418eb6e483bf17d644889f148c1e9034883c90148d1e9480fb6140a488d1455010000004889f14883e10f4883f97f720948c7c101000000eb1448c7c30200000048d1e948d3e34889d94883c9014823d14883fa01750948c7c203000000eb0748c7c2010000004883f202eb1c488d64241848b818a9d3f1c27f0000488b5d08ff2348c7c2010000004883fa0374054c89c2eb064889fa490bd04881ff01010000755d48d1ea4c89c948d1e94188140a4889f04883c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c89cb4883c30248c7c20100000048c7c1030000004889c64989d94889cf4989d0483b65187306ff5558cac07fe932feffff4889f04883c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488d4c3fff4c89cb4889c64989d94889cf4989d0483b65187306ff5558cac07fe9effdffff4983f8017502eb104d89c649d1ee4d89cc49d1ec47883422418062ffbf4d8d77e84c3b75107306ff5550ca002c4d89f749c746f8020000004d8956084d891e4c8b6424104983fc0375074c8b642408eb0749c7c4010000004983fd037508415d4883c410eb0c488d64241849c7c501000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8968184c8960104c89700848c70005000000c3f400ffffffffffffff01|@16399,1,@2815,@7642|80,0,@10468 209,0,@10468 1004,0,@14645 1025,0,@16360 1053,0,@10468 1294,0,@14764 1454,0,@14764 1530,0,@9475 1610,0,@9475 7642:D4,128|483b65187305ff5558cd094989c54989de41f6c501755e41f6c6017558498b450041ff7508498b1e41ff7608ff15660000004989c64156488b442410488b5c2408e8baffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c348c7c001000000c3f40000|@12767,1,@2816,@7643| 7643:D3,176|483b65187305ff5558cd094989c54989de4983fd01751e4983fe01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff23498b450041ff750841f6c6017556498b1e41ff760848ba30a5d4f1c27f0000ff124989c64156488b442410488b5c2408e896ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848b8282dd3f1c27f0000488b5d08ff23f400|@13917,1,@2817|39,0,@13915 76,0,@16400 160,0,@13915 7644:D5,440|483b65187306ff5558ca09035041506a016a01ff74241041514889d848c7c30100000049c7c00100000049c7c1010000004c8d542410ff159c010000ff34244c8b6424104983fc01750f48bb4882d1f1c27f0000e9ba00000049c7c5010000004d89e641f6c60175364d8b56084d89eb4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebc44c3b2d0a0100007c15488d64242848b85082d1f1c27f0000488b5d08ff234c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02104d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab49c7c5010000004983fc01755d418066ffbf4c89f3488b4424204c8b44241849b940a5d4f1c27f0000ff15a30000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c700050000004883c420c34d8b1c244d8b5424084f895caefc4d89eb4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e95afffffff400000000ffffffffffffff01|@16402,1,@2820,@7574,@7646|76,0,@10817 125,0,@9475 175,0,@10818 287,0,@16401 390,0,@9475 7645:D3,56|483b65187305ff5558cd094989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3f40000|@16351,1,@2819| 7646:D3,776|483b65187306ff5558ca09074889df4d89c34d89cd4883f801750c49c7c401000000e93b0200004c8b30488b40084d8b064d8b76084c8b6424104d8b6424f849c1e40849c1ec074983cc01493bfc721048b89011d1f1c27f0000488b5d08ff234c8b6424104d8b64bcfc4983fc03757d4889fb4883c302711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca892c4d89f749c746f80200000049897e0849c706010000004d8d4fe84c3b4d107306ff5550ca096c4d89cf49c741f8020000004d8969084d89314d89d84c8b6c24104c8b6424084c896424084c896c2410e913ffffff4c8b6424084d8b24244c8b4c24084d8b094983c102711048b8d0c6d0f1c27f0000488b5d08ff23488b7424084c890e4889fb4883c302711048b8d0c6d0f1c27f0000488b5d08ff234883ff017d1048b80095d4f1c27f0000488b5d08ff234d8d4fe84c3b4d107306ff5550ca897d4d89cf49c741f8020000004989790849c70101000000498d7fe8483b7d107306ff5550ca097f4989ff48c747f8020000004c894f0848c707110000004d8d4fe04c3b4d107306ff5550ca897d4d89cf49c741f803000000498979104d8961084d89314d8d77e84c3b75107306ff5550ca093f4d89f749c746f8020000004d8946084d890e4d8d47e84c3b45107306ff5550ca097c4d89c749c740f8020000004d8958084d89304d8d77e84c3b75107306ff5550ca09354d89f749c746f8020000004d89660849c706050000004d8d4fe84c3b4d107306ff5550ca09654d89cf49c741f8020000004d8969084d89314c8b6c24104c8b6424084c896424084c896c2410e99efdffff41f6c301753d4d8b034d8b73084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89f3483b65187306ff5558ca003cebbd49c7c60100000041f6c501753e4d8b45004d8b5d084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8971084d89014d89ce4d89dd483b65187306ff5558ca0074ebbc4d89224d89720848c7c001000000c21000f4000000000000|@16403,1,@2821|82,0,@9998 123,0,@9475 262,0,@9475 295,0,@9475 317,0,@16320 7647:D4,704|483b65187306ff5558ca09014989c649c7c4010000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d896500415549c7c4030000004d8d6ff04c3b6d107306ff5550ca08514d89ef49c745f80100000041c645ff404d89650041554883fb017d0a488d642410e92b020000483b1d380200000f8d190200004889d94c8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02414d89ef48d1eb49895df841c645ff404c89ef48d1e948c7c003000000f348ab4155ff742410ff7424104c89c34c89f049c7c00300000049c7c1030000004c8b542410ff15e80100004989c64983fe017510488d64241848b84060d1f1c27f0000c34c8b7424104d8b364983fe037410488d64241848b8b80bd1f1c27f0000c34c8b7424084d8b364983fe030f85b3000000488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be4882d1f1c27f0000eb614d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf4883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3488b34244c8b6ef849c1e50849c1ed074983cd014983fd017511488d64241849be4882d1f1c27f0000eb614d89ec4c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca42204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab4c89e94889f6488d6424084c89f748d1e9f348a5418066ffbf4883c410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3488d64241048b8d015d1f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@16404,1,@2822,@7648|256,0,@10548 286,0,@9948 346,0,@10817 525,0,@10817 678,0,@10027 7648:D3,5360|483b65187306ff5558ca09074989de4150415141524983fe01750f488d64241848c7c001000000c210004c8b284c8d25080000004f8d64acfc41ffe4e9ab000000909090e94d010000909090e9cd010000909090e9d5010000909090e951020000909090e914030000909090e9c4030000909090e9fd030000909090e98d040000909090e9ee040000909090e917050000909090e96b050000909090e9c4050000909090e9d4050000909090e995060000909090e99a060000909090e9a2060000909090e9fb060000909090e9a4070000909090e964080000909090e9bd080000909090e9bf0800009090904c8b68084c8b58104c8b60184d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe037c1d4983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c60100000041554156e9f61200004c8b68084d8b65004d8b6d084d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe097c1d4983ee087115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c60100000041554156e90e120000ff70084c8b681041554156e96a1100004c8b60084c8b68104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d8965004983fe037c1d4983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c60100000041554156e986100000ff7010ff70184c8b68204983fe037c204c89f34883eb027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e9890f0000498b45004c8b7424384c8b6c24304156415549c7c0010000004c8b4c24284c8b542420e88bfcffff4889c3e9270e0000ff7008ff7010488b40184983fe057c204c89f34883eb047115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b7424384c8b6c2430415641554c8b4424304c8b4c24284c8b542420e82afcffff4889c34c8b7424384c8b6c243041564155488b4424104c8b4424304c8b4c24284c8b542420e800fcffff4889c3488d642408584c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c0010000004c896424084c896c2410e9cbfbffff488d6424184c8b680841f6c50174064c89f0c210004983fe037c1c4c89f04883e802711048b8d0c6d0f1c27f0000488b5d08ff23c2100048c7c001000000c210004c8b6808ff70104c8b24244d8b1c244983fb1175504d89e44d8b6424084d8b24244983fc07751d4c8b6424104983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc037514488d6424084d89ec49c7c301000000e9360b00004983fe057c1d4983ee047115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c60100000041554156e9730a0000488d6424084c8b68084d8b6d004983fd0775254c8b2c244983fd03488d642408750f488d64240848c7c001000000c21000488d642408eb05488d6424104983fe037c1c4c89f04883e802711048b8d0c6d0f1c27f0000488b5d08ff23c2100048c7c001000000c21000488d6424184983fe037c1c4c89f04883e802711048b8d0c6d0f1c27f0000488b5d08ff23c2100048c7c001000000c21000ff7008488b40104c8b6c24304c8b642428415541544c89f34c8b4424284c8b4c24204c8b542418e82cfaffff4889c3584c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c0010000004c896424084c896c2410e9fcf9ffff488b40084983fe037c204c89f34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e99bf9ffff4c8b6808498b45004d8b5d184d8b65204d89dde9b60700004c8b68104983fe037c204c89f34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e9c1060000498b45004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e9baf8ffff4c8b680841554156e91c0600004c8b6808ff701041554156e925040000488b40084983fe037c204c89f34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e93cf8ffff4c8b60084c8b6810ff70184d8b1c244983fb29750e4d8b6c240841554156e9150300004d8b6d004d3bf57c234c89f3492bdd7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c301eb0748c7c3010000004c8b7424304c8b6c2428415641554c89e049c7c0010000004c8b4c24204c8b542418e8bff7ffff4889c3584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e98bf7ffffff70104c8b68184983fe037c204c89f34883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004d8b750841f6c601755a4d8b364d8b6d004d8d67e84c3b65107306ff5550ca08604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653e98d010000498b45004c8b7424304c8b6c24284156415549c7c0010000004c8b4c24204c8b542418e8cbf6ffff4889c3e92c010000488b40104983fe037c204c89f34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e962f6ffff4c8b680841554156eb61488b40084983fe037c204c89f34883eb027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e9f7f5fffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e8b8f5ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e966f5fffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e827f5ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96dfffffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e8c5f4ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e978f4fffff6442408010f85000100004c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd017565498b46204c8b7424084c89f34983fe037c204889db4883eb027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23eb0748c7c3010000004c8b7424484c8b6c24404156415549c7c0010000004c8b4c24384c8b542430e8f4f3ffff4989c4e9b10000004d89e54983fc057532498b46084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e8b6f3ffff4989c4eb764983fd07750c4d8b76084156ff742410eb7d498b46184c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e872f3ffff4989c4eb325b488b4424084c8b4424204c8b4c24184c8b5424104c8b6c24384c8b6424304c896424304c896c24384883c428e93bf3ffff415d4c8924244c896c2408483b65187303ff5558e9aafefffff644240801757f4c8b6c24084d8b75004d89ed41ff75084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004c8b7424604c8b6c245841564155488b5c241849c7c0010000004c8b4c24504c8b542448e8b8f2ffff4989c4415d4c8924244c896c2408483b65187303ff5558e97affffff415c4883c408e956fffffff64424080175554c8b6c24084d8b75004d89ed41ff7508498b064c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e84ef2ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba4584883c420c21000f64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e8eef1ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c2100041f6c501752b4d8b4d004d8b55084d8b094983f907750949c7c503000000eb184d89d5483b65187306ff5558ca0178ebcf49c7c5010000004983fd03750f488d64241848c7c001000000c2100049c7c50100000041f6c40175374d8b4c24084d89ea4983c2027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cc4d89d5483b65187306ff5558ca0178ebc349c7c40100000041f6c30175364d8b4b084d89e24983c2027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0178ebc44983ec014d03ec7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d3bf57c234c89f3492bdd7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234883c301eb0748c7c301000000415a4c8b6c24204c8b64241849c7c10100000049c7c0010000004c896424184c896c24204883c410e97ff0fffff64424080175554c8b6c24084d8b75004d89ed41ff7508498b064c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e83cf0ffff4989c4415d4c8924244c896c2408483b65187303ff5558eba45b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e9efefffff41f6c4010f85ce0000004d8b0c244d8b5424084d8b094d8b014983f811754a498b79084989f8488b3f4883ff01750948c7c703000000eb0748c7c7010000004883ff0375244d89c14d8b49084d3bd9750949c7c103000000eb0749c7c1010000004983f9037502eb3a4c8b0c244d8b41f849c1e00849c1e8074983c8014d3bd87215488d64241848b80017d1f1c27f0000488b5d08ff234d89c94bc74499fc010000004d89d94983c1027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e928ffffff4c8b64242849c70424030000004c8b6424104983fc037502eb0d4c8b64242049c70424010000004983fe077c1d4983ee067115488d64241848b8d0c6d0f1c27f0000488b5d08ff23eb0749c7c60100000041554156f64424080175574c8b6c24084d8b75004d89ed41ff7508498b064c8b7424404c8b6c243841564155488b5c241849c7c00100000049c7c1030000004c8b542428e87deeffff4989c4415d4c8924244c896c2408483b65187303ff5558eba2584883c420c210004c8b34244d8b6e0841f6c501755f4d8b5d004d89f64d8b2e488d6424084d8d67e84c3b65107306ff5550ca08284d89e749c74424f80200000049c7442408010000004d891c244d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e415653eb634d89f6498b06488d6424084c8b7424304c8b6c24284156415549c7c0010000004c8b4c24204c8b542418e8c0edffff4889c3584c8b4c2408415a488d6424084c8b6c24184c8b64241049c7c0010000004c896424104c896c24184883c408e98cedfffff64424080175514c8b742408498b064d89f641ff76084c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e84dedffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96dfffffff64424080175514c8b742408498b064d89f641ff76084c8b7424504c8b6c244841564155488b5c241849c7c0010000004c8b4c24404c8b542438e8ebecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba85b4883c408e96cfefffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e889ecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f64424080175594c8b6c24084d8b75004d89ed41ff75084d8b36498b46104c8b7424484c8b6c244041564155488b5c241849c7c0010000004c8b4c24384c8b542430e821ecffff4989c4415d4c8924244c896c2408483b65187303ff5558eba05b488b4424084c8b4c24184c8b5424104c8b6c24384c8b64243049c7c0010000004c896424304c896c24384883c428e9d4ebfffff64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e895ebffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f64424080175514c8b742408498b064d89f641ff76084c8b7424404c8b6c243841564155488b5c241849c7c0010000004c8b4c24304c8b542428e835ebffff4989c4415d4c8924244c896c2408483b65187303ff5558eba8584883c420c21000f4000000|@16405,1,@2823|374,0,@9475 510,0,@9475 658,0,@9475 722,0,@9475 925,0,@9475 1115,0,@9475 1262,0,@9475 1372,0,@9475 1421,0,@9475 1566,0,@9475 1687,0,@9475 1917,0,@9475 2047,0,@9475 2194,0,@9475 2391,0,@9475 2498,0,@9475 3025,0,@9475 3746,0,@9475 3813,0,@9475 3863,0,@9475 3897,0,@9475 4250,0,@10034 4292,0,@9475 4387,0,@9475 7649:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2825|16,0,@16341 7650:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2826|16,0,@16341 7651:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2827|16,0,@16341 7652:D4,216|483b65187305ff5558cd0953a8010f85b10000004c8b30ff7008498b0641ff7608498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849be80f96ff1c27f00004c8933ff15990000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@2855,@6515|70,0,@7653 7653:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2829|16,0,@16341 30,0,@10547 7654:D10,1784|483b65187306ff5558ca090150534c8b2c244d8b75004d89ed4d8b6d104d89c349c7c40100000041f6c30175374d8b0b4d8b5308498b394883ff0575104d8b49084d3bcc7e02eb034d89e1eb034d89e14d89cc4d89d3483b65187306ff5558ca0079ebc341544c8b24244983c4027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983fc017d07488d642418eb7a4c3b25570600007f6c4c89e04883c07e49c7c38100000048d1e849d1eb4833d249f7f34c8d1445010000004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca00754d89df49d1e94d894bf841c643ff414e8d14d5f9ffffff4983fa017502eb234d89d14983e910eb15488d64241848b87095d3f1c27f0000488b5d08ff234d3bca75184d89e24983c20e49c1ea034983ca0149c7c101000000eb234c89cf48d1ef41c6043b004c89cf4883c7024989f9483b65187306ff5558ca007febc04d3bca7202eb234c89cf48d1ef41c6043b004c89cf4883c7024989f9483b65187306ff5558ca007febd641f6c0010f85a00000004d8b084d8b5008498b394883ff05757c498b49084883f9017d07488d642418eb5b493bcc7d514889cf48c1ef034883cf014989f949d1e94f0fb60c0b4e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c0bce49d1e948d1ef45880c3beb15488d64241848b84896d3f1c27f0000488b5d08ff234d89d0483b65187306ff5558ca0079e956ffffff49c7c2010000004983fc010f855d010000415249c7450003000000f60424010f85270100004c8b2c244d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85ff0000004d89ee41ff36498d5fe8483b5d107303ff55504989df48c743f8020000004c8b34244c89730849be300170f1c27f00004c8933488b442420ff1585040000498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424184c89730849bec80170f1c27f00004c8933ff15470400004989c14c8b34244d89f04983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fe017d15488d64242848b83020d1f1c27f0000488b5d08ff234c89f348c7c001000000ff15ef0300004989c6488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c420c34c89f248c7c001000000ff124989c6415649c7c6010000004c8b6c2408e9b50000004d89e04983e8024c89e74883ef024c89e14883e9024989c949c1e9034983c90149d1e94f0fb60c0b4e8d0c4d010000004883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014c23ce4983f901750949c7c103000000eb0749c7c1010000004983f1024983f90375244d8d4fe84c3b4d107306ff5550ca807d4d89cf49c741f8020000004d895108498939eb034d89d14d89c44d89ca483b65187306ff5558ca007ce9e4fdffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424184c8973104c8b34244c89730849be200270f1c27f00004c8933488b442430ff1505020000498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424284c89730849be000770f1c27f00004c8933ff15c70100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6424084d89e54d8966184c8b6424104d89e04d89661049c746080100000049c7060100000041564c8b6424284983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d89ee4d3bec75624d89f64c89f34983fe017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff151b0100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000eb5048c7c00100000048c7c3010000004c8b4424204c8b4c2408ff15c10000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084983fe017509488d6424384c89e8c3488d642438498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c3f4ffffffffffffff01|@16410,1,@2836,@7661,@7662,@6515,@7660,@7663,@6515,@7660|119,0,@9475 270,0,@14645 526,0,@14649 677,0,@7655 736,0,@7656 776,0,@9475 803,0,@10101 1133,0,@9475 1293,0,@7657 1352,0,@7659 1462,0,@9475 1506,0,@10101 7655:D4,104|483b65187305ff5558cd054989c64d8b2e4983fd0d75144c89f0488b5a0849c7c001000000ff2555000000498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c8b6a084c8968104c89700848c70017000000c3f40000000000|@16407,1,@2831,@5380| 7656:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2832|16,0,@16341 30,0,@10547 7657:D4,104|483b65187305ff5558cd0552504c8b742408498b4610ff15640000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084d8b6d084c8968184c8970104c8b34244c897008488d64241048c70023000000c3f400000000000000|@16408,1,@2833,@7658| 7658:D3,1056|483b65187305ff5558cd014989c64d89f449c7c5ffffffff41f6c40175274d8b14244d8b5c24084d3bd57e02eb034d89ea4d89d54d89dc483b65187306ff5558ca0070ebd34983c502711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d02eb774c3b2dae0300007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb1e4d89da4983ea10eb1048b87095d3f1c27f0000488b5d08ff234d3bd375184d89eb4983c30e49c1eb034983cb0149c7c201000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebc04d3bd37202eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebd641f6c6010f8584000000498b0e4d8b5e084883f9017d02eb65493bcd7d604989c949c1e9034983c9014d89ca49d1ea4f0fb614144e8d1455010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d0bd049d1ea49d1e94788140c4d89de483b65187306ff5558ca0070eb8248b84896d3f1c27f0000488b5d08ff234983fd010f8c8d0000004983fd017d02eb754c3b2d150200007f6c4c89e84883c07e49c7c68100000048d1e849d1ee4833d249f7f64c8d1c45010000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b87095d3f1c27f0000488b5d08ff2348b8289cd4f1c27f0000488b5d08ff234d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040e004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8df50000004c89c748c1ef034883cf0148d1ef490fb63c3c488d3c7d010000004c89c14883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014823fe4883ff0174084c89cf490bfaeb034c89d74981f901010000755848d1ef4c89de48d1ee41883c364c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca007fe940ffffff4c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca007fe902ffffff4983fa017502eb0d4d89d449d1ec49d1eb4788241e418066ffbf498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c8928c3f40000000000ffffffffffffff01ffffffffffffff01|@16409,1,@2834|77,0,@9475 220,0,@14645 468,0,@14649 619,0,@14645 635,0,@16360 847,0,@9475 922,0,@9475 7659:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2835|16,0,@16341 30,0,@10547 7660:D3,584|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9a3000000909090e99e000000909090e993000000909090e98b000000909090e9d1000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e918010000909090e953000000909090e94b000000909090e943000000909090e963010000909090e961010000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090905aff224c8b7008ff70104c89f0488b5c2408e81bffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c70005000000c3ff70084c8b7010ff70184c89f0488b5c2410e8cdfeffff4989c64156488b442408488b5c2418e8b9feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241048c7000b000000c34c8b7008ff7010ff70184c89f0488b5c2410e85efeffff4989c64156488b442410488b5c2418e84afeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242048c70015000000c3488d642408c3ff7008488b4010488b5c2408e8f3fdffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c7001f000000c3f4000000|@16412,1,@2840| 7661:D3,320|483b65187306ff5558ca090341f6c0010f851e0100004d8b304d8b6808493bc60f85a10000004d8d77d84c3b75107306ff5550ca09224d89f749c746f80400000049c746180100000049895e104d894e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234883c3027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89e8e868ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34883c002711048b8d0c6d0f1c27f0000488b5d08ff234d8d47e84c3b45107306ff5550ca09624d89c749c740f8020000004d8968084d8930e8fcfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec06ad1f1c27f00004c8930c348c7c001000000c3f4000000|@16411,1,@2837|103,0,@9475 130,0,@9475 207,0,@9475 296,0,@10633 7662:D3,256|483b65187306ff5558ca0901483bc3750848c7c001000000c34983f8017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09014d89f749c746f8020000004d89460849c706050000004d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09214d89f749c746f80400000049c7461801000000498946104d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@2838|33,0,@16320 189,0,@9475 7663:D3,128|483b65187306ff5558ca0903483bc3750848c7c001000000c3493bc075054d89ceeb0a49bec06ad1f1c27f000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@2839|37,0,@10633 60,0,@9475 7664:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@2844,@7665| 7665:D7,560|483b65187305ff5558cd09534c8b304d89f54983fe010f8594000000ff7008ff7010ff7018488b4020498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424184c89730849be201070f1c27f00004c8933ff15010200004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8970204c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d64241048c70001000000c34d89ee4983fd057568488b4008498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b34244c897308488d64240849be781070f1c27f00004c8933ff15610100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c34983fe07750d4c8b700841566a01e98d000000ff7008ff7010488b4018498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b7424084c8973104c8b7424104c89730849bed01070f1c27f00004c8933ff15d30000004989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64241048c70003000000c3f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff15610000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700070000004883c410c3f40000|@16416,1,@2845,@7669,@6515,@6515,@6515|78,0,@7666 230,0,@7667 364,0,@7668 7666:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2841|16,0,@16341 30,0,@10547 7667:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2842|16,0,@16341 30,0,@10547 7668:D3,40|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e084d8b4610ff22f40000000000|@16342,1,@2843|16,0,@16341 7669:D5,248|483b65187306ff5558ca090153ff30ff70084c8b70106a016a0148bab898d4f1c27f00004c89c04d89f0488b5c241849c7c1050000004989e2ff1258415e4d8b2e4983fd190f85910000004d8b6e084d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244c89eb4d892e4156ff158b0000004c8b6c24104d89ee4983fd0175054989c6eb0c4c89f3ff15670000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c3488d64241848b818a8d4f1c27f0000488b5d08ff23f4000000000000|@16417,1,@2846,@7671,@7670|28,0,@16343 227,0,@16413 7670:D3,136|483b65187305ff5558cd09a801756a4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849891e4156e8b6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@2848| 7671:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2847| 7672:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2849| 7673:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2850| 7674:D4,216|483b65187305ff5558cd0953a8010f85b10000004c8b30ff7008498b0641ff7608498d5fe8483b5d107305ff5550cd014989df48c743f8020000004c8b7424104c89730849bec01570f1c27f00004c8933ff15990000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c2410e86affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@2852,@6515|70,0,@7675 7675:D3,48|483b65187305ff5558cd054989d648ba7098d4f1c27f0000498b5e0849b82860d1f1c27f0000ff22f400000000000000|@16342,1,@2851|16,0,@16341 30,0,@10547 7676:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2853| 7677:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2854| 7678:D4,624|483b65187306ff5558ca09074989c6415049c7c4010000004d8d6ff04c3b6d107306ff5550ca08564d89ef49c745f80100000041c645ff404d89650041554883fb017d0a488d642410e972010000483b1d130200000f8d600100004889d94c8d1c9d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca02464d89df48d1eb49895bf841c643ff404c89df48d1e948c7c001000000f348ab4d8d67e84c3b65107306ff5550ca004e4d89e749c74424f8020000004d895c240849bde81970f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d895d0849bb581b70f1c27f00004d895d004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004c8b04244d89430849b8f01b70f1c27f00004d890348c7c7010000004d8d47f04c3b45107306ff5550ca807e4d89c749c740f80100000041c640ff404989384150498d5fd8483b5d107306ff5550ca007e4989df48c743f8040000004c895b184c8963104c8b24244c8963084c892b6a016a016a0148ba38abd4f1c27f000041524d89ca4c89f049c7c0010000004c8d4c2408ff15dc000000415e415b415c49c7c501000000eb15488d64241048b8d015d1f1c27f0000488b5d08ff2341f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8969084d89014d89cd4d89d3483b65187306ff5558ca0078ebbd4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b084d89334c8b7424084d8b264c8b34244d8b36488d642410415d4d895d004d8965084d89751048c7c001000000c3f400000000ffffffffffffff01|@16559,1,@3024,@7682|191,0,@7679 236,0,@7680 285,0,@7681 394,0,@16428 450,0,@10027 7679:D3,328|483b65187305ff5558cd054c8b304d89f54983fe03751048b8a8a9d4f1c27f0000488b5d08ff236a016a014d89ee4983fd07753e4d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004989450849c745000300000049bea85bd1f1c27f00004c892c244c89742408e9aa0000004983fe01753b4d8d6fe84c3b6d107305ff5550cd014d89ef49c745f8020000004989450849c745000300000049bea85bd1f1c27f00004c892c244c89742408eb694c8b68084c8b62084d89e64d8b6424f849c1e40849c1ec074983cc014d3bec7215488d64241048b81011d1f1c27f0000488b5d08ff234f8b74aefc4983fe017515488d64241048b80895d1f1c27f0000488b5d08ff234d8b364d8b2e4c892c244d8b76084c89742408415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@16425,1,@2857|25,0,@16421 92,0,@10515 160,0,@10515 219,0,@9995 251,0,@10926 7680:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@16426,1,@2858|78,0,@10034 7681:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f4|@16427,1,@2859|36,0,@9475 7682:D7,2032|483b65187306ff5558ca0d0752534150415141524c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9b3010000909090e963020000909090e9d4020000909090e953020000909090e906030000909090e943020000909090e93b030000909090e978030000909090e92b020000909090e923020000909090e912040000909090e906060000909090e90b020000909090e903020000909090e977060000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9a4060000909090e9da060000909090ff7008ff7010488b40186a016a016a01488b5424484c8b7424584156488b5c24484c8b4424404c8d4c24084c8b542430e8f5feffffff34244c8b4424106a016a016a01488b5424684c8b7424784156488b442448488b5c24684c8d4c24084c8b542450e8c2feffffff34244c8b4424106a016a016a01488b9424880000004c8bb424980000004156488b442460488b9c24880000004c8d4c24084c8b542470e886feffff415e415c488d6424084d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24204d896b184d8973104c8b34244d897308488d64245849c70301000000415d488d64241849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c208004c8b70084d8b6e104d8b65004983fc017553498b45084d8b06498b7e08498b7618498b5e204c8b742420498b56184c8b6c24184c8b6424104c8b5c2408415a488d6424204c8b4c2408415341524151ff7424184989f24989f94c896424204c896c2428ff22498b45084d8b06498b7e08498b7618498b5e204c8b742420498b56204c8b6c24184c8b6424104c8b5c2408415a488d6424204c8b4c2408415341524151ff7424184989f24989f94c896424204c896c2428ff224c8b742430498d5fd0483b5d107306ff5550ca01404989df48c743f8050000004c8973204c8b34244c897318488d6424084c8b7424104c8973104c8b7424184d8b76504c89730849be882470f1c27f00004c8933ff1528050000488b5c24084158488d6424184c8b34244c897424084883c408ff2501050000488b58084c8b4010488b40184c8b742420498b56284c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff224c8b7008488b58104c8b40184c8b6c2420498b55104c89f04c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff22488b58084c8b70104c8b40184c8b6c2420498b55384c89f04c8b4c24184c8b5424104c8b6c2408415c488d6424204c8b5c24084153ff7424084c896424104c896c2418ff22488d642408488b40084c8b742410498b5610ff124989c64d8b2e4d8b76084d8b65004983fc0175384d8b5d084d8b6d104d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d895c240849c704240d000000eb2d4d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042411000000415d4d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c410c208004c8b6808ff7010ff70186a016a016a01488b5424484c8b74245841564c89e8488b5c24484c8b4424404c8d4c24084c8b542430e833fbffff4c8b3424ff7424084c8b6c24184d8b65004983fc070f85ac000000498b5510488b442428ff124989c64d8b2e4d8b76084d8b65004983fc0175384d8b5d084d8b6d104d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104d895c240849c704240d000000eb2d4d8b6d084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424110000004c8b6c24384d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c450c208004c8b6c24204983fd0375614d8b2e4983fd0d751a4c89f0488b5c242849c7c003000000ff15530200004989c4eb3c4d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b6c24284d896c24104d8974240849c7042417000000eb5f4d8b2e4983fd0d751a4c89f0488b5c242849c7c001000000ff15ea0100004989c4eb3c4d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418010000004c8b6c24284d896c24104d8974240849c70424170000004c8b6c243849bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c450c20800488b40086a016a014c8b742430498b56404c8b742440ff7424104156488b5c243849c7c00100000049c7c1010000004c8d542410ff12415d415e488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042419000000415d4d8965004c8b24244d896508488d6424184d89751048c7c001000000c208004c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304c8b742420498b5648488b5c24184c8b4424104c8b4c2408415a488d6424204c8b6c24084c896c2408ff224c8b7008488b58104c8b6c2420498b55084c89f04c8b4424184c8b4c24104c8b542408415d488d6424204c8b642408ff34244c896424084c896c2410ff22488b5808488b40104c8b742420498b56304c8b4424184c8b4c24104c8b542408415d488d6424204c8b642408ff34244c896424084c896c2410ff22f400000000000000|@16431,1,@2861,@5380,@5380,@7684,@6515|456,0,@10515 743,0,@7683 1638,0,@10515 7683:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2860| 7684:D6,360|483b65187306ff5558ca090141504c8b284d89ee4983fd0d753b4c8b68084c8b70104d8d67e04c3b65107306ff5550ca08604d89e749c74424f8030000004d897424104d896c240849c704240d000000e9980000004983fe1f75104c8b7008ff701048c7c001000000eb20415d49bea85bd1f1c27f00004989450049895d084d89751048c7c001000000c341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebba4883fb0175054889c3eb09ff15ae0000004889c3584158e913ffffff41f6c601754e4d8b1e4d8b6e084d8b0b4d89ca4c3b0d8100000075274d89d64c3b356d00000075064d8b7310eb30488d64240848b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0850ebac49bea85bd1f1c27f0000415d4d89650049895d084d89751048c7c001000000c3f4000000000000|@16432,1,@2862,@4662,@4662,@7685|111,0,@10515 290,0,@9991 323,0,@10515 7685:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2863| 7686:D6,480|483b65187306ff5558ca0d0753415249c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0563ebc441566a016a014c8b6a084c8b5424384c8b742430415641504c89cb4d89e94c8d442410ff158a010000ff3424ff742410488b442408ff15700100004989c64d89f541f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03753a498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24304c8968104c89700848c70029000000ff15ef0000004989c4eb334d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24304d896c24104d8974240849c70424290000004d8d5fd84c3b5d107306ff5550ca00104d89df49c743f8040000004c8b7424204d89f54d8973184c8b7424304d8973104c8b7424084d89730849be482970f1c27f00004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89ed4d896e0849c706070000004c8b6c24284d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c428c21000f4000000|@16439,1,@2865,@6504,@7689,@7688|51,0,@9475 380,0,@7687 7687:D3,240|483b65187305ff5558cd056a016a014c8b7218493bc67d064c8b7208eb624c8b72104983fe03751c49bec8acd4f1c27f00004d8b2e4c892c244d8b76084c89742408eb15488d64241048b8e0acd4f1c27f0000488b5d08ff23415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c341f6c60175534d8b264d8b6e084883f80175144d8b34244c8934244d8b7424084c89742408ebb24989c44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0140eba7488d64241048b8c85dd1f1c27f0000488b5d08ff23f400|@16438,1,@2864|42,0,@16434 75,0,@16435 183,0,@9475 224,0,@10528 7688:D3,752|483b65187306ff5558ca09074989c641504151415241f6c6010f85b4020000498b0641ff76086a016a016a01488b5424284c8b6c24404c8b74244841564989d84c89eb4c8d4c24084c8b542428ff12ff3424ff742410ff7424206a016a014c8b6c24204d8b65004d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9750100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9f90000004c8b742468498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c89742408ff3424488b5c24106a016a014c8bb424880000004c8bac248000000041564155488b4424684c8d4424104c8b4c24784c8b542470e87afdffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184c8b6c24484d8965004d89750848c7c0010000004883c450c21000488d642410415e49c7060100000049895e0848c7c001000000c21000f4|@16440,1,@2868| 7689:D4,224|483b65187305ff5558cd01a8010f85c20000004c8b28ff70084d8b7500498b5d084d8b2e4983fd01754641ff7608498b4610ff15c00000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408e85affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f40000|@10112,1,@2866,@7690| 7690:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2867,@4662|74,0,@9594 88,0,@4662 7691:D14,2016|488dbc2450ffffff483b7d187306ff5560ca0d075253415041516a016a016a014c8b742430498b56084c8b6c24484c8b74244041564d89d04d89ea488b5c24204c8d4c2408ff12ff3424ff7424104c8b7424084d8b2e4983fd0d754d4d89f64d8b76084983fe017507488b442430eb05488b4424384c8b742440498b5608488b5c242841584c8b4c24584c8b5424504c8b6c24484c896c24584c8b7424404c897424504883c450ff226a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442458488b5c244849c7c0010000004c8d4c2408ff12ff3424ff742410ff7424206a016a016a014c8bb42488000000498b56084c8b9424a00000004c8bb424980000004156488b842480000000488b5c247849c7c0010000004c8d4c2408ff12ff3424ff742410ff742420488b5c24404c8b2b4d89ee4983fd210f85ec000000488b4424384c8b442430ff15f20600004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc06ad1f1c27f00004d8965184d8975104c8b7424684d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24604c896b084c89334883fb0175074c8b742408eb0e488b442408ff15440600004989c64c8bac24c00000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004881c4a0000000c218004889db4983fe0d0f85e10300004889db4c8b63084c8b7424384c89f04983fe010f851f0200004c8b7424104d8b2e4983fd0d0f850b0200004c8b6c24084983fd010f85fc010000488d6424104d89f64d8b6e084d3be50f85b1000000488d642430488b442428ff159a0500004989c64c2335300500004c3b352105000075074c8b642420eb524d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24284d896e0849c706050000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24204d896c24084d8934244c8bac248000000049bea85bd1f1c27f00004c8b1c244d895d00488d6424084d8965084d89751048c7c0010000004883c460c218004983fc0375424983fd01753c488d6424504c8b6c246049bea85bd1f1c27f00004c8b6424084d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c438c218004983fc0175714983fd03756b488d6424504d8d67e04c3b65107303ff55504d89e749c74424f80300000049c7442410130000004c8b7424084d8974240849c704242b0000004c8b6c246049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c438c218004d8d67d84c3b65107306ff5550ca08404d89e749c74424f8040000004d89f64d89742418488d6424084889db49895c24104c8b7424504d8974240849c704240b0000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c21800eb004c8b7424104d8b2e4983fd210f85fa0000004c89f3488b4424084c8b0424ff15950300004989c6488d6424184d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec06ad1f1c27f00004d8975104c8b7424504d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24484c896b084c89334883fb01750c488d6424184c8b742408eb13488d642418488b442408ff15d80200004989c64c8bac24900000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004883c470c218004c8b442430ff15920200004989c64156488b442410488b5c24184c8b442408ff15700200004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b34244d89742410488d6424204c8b7424504d8974240849c704240b0000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c218004c8b7424104d8b2e4983fd210f85fa0000004c89f3488b4424084c8b0424ff15cc0100004989c6488d6424184d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec06ad1f1c27f00004d8975104c8b7424504d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24484c896b084c89334883fb01750c488d6424184c8b742408eb13488d642418488b442408ff150f0100004989c64c8bac24900000004c8b6424104d8965004d8975084c8b34244d897510488d64240848c7c0010000004883c470c21800488b4424384c8b442430ff15c40000004989c64156488b442410488b5c24184c8b442408ff15a20000004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b34244d89742410488d6424204c8b7424504d8974240849c704240b0000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b6424484d8965084d89751048c7c0010000004881c490000000c21800f400010000c000000000010000c000000000|@16442,1,@2869,@7693,@7696,@7698,@7699,@7701,@7703,@7705,@7706,@7640,@7708,@7692|374,0,@10633 788,0,@10515 855,0,@10515 979,0,@10515 1099,0,@10515 1220,0,@10633 1526,0,@10515 1645,0,@10633 1956,0,@10515 7692:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2886,@7695,@7709| 7693:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2870,@7695,@7694| 7694:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2872,@4662|74,0,@9594 88,0,@4662 7695:D4,424|483b65187305ff5558cd094989c64983fe0175044889d8c34c8b2b4983fd1175304c8b63084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc0375094d8b6d084d89f4eb2b498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c341f6c4010f85a70000004d8b14244d8b5c24084983fb010f85800000004d89d34d8b234983fc0375494d8b631041ff73184d3bec750c48c7c3010000004d89f5eb7f488d642408498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c3498d47e0483b45107306ff5550ca08404989c748c740f803000000488958104c89700848c7001f000000c34d89dc483b65187306ff5558ca0870e94fffffff48b8b0aed4f1c27f0000488b5d08ff2341f6c50175364d8b5d084989dc4983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89dd4c89e3483b65187306ff5558ca0860ebc44883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89f0ff15230000005be95dfefffff400000000|@16446,1,@2871,@5409|303,0,@16444 343,0,@9475 390,0,@9475 7696:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2873,@7695,@7697| 7697:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2874,@4662|74,0,@9594 88,0,@4662 7698:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2875| 7699:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2876,@7695,@7700| 7700:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2877,@4662|74,0,@9594 88,0,@4662 7701:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2878,@7695,@7702| 7702:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2879,@4662|74,0,@9594 88,0,@4662 7703:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2880,@7695,@7704| 7704:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2881,@4662|74,0,@9594 88,0,@4662 7705:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2882| 7706:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2883,@7695,@7707| 7707:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2884,@4662|74,0,@9594 88,0,@4662 7708:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2885| 7709:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2887,@4662|74,0,@9594 88,0,@4662 7710:D6,1096|483b65187306ff5558ca0d0752504150415141526a016a016a014c8b742438498b56104c8b6c24684c8b4424604c8b5424504c8b74244841564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b5610488b9c24880000004c8b5424704c8b7424684156488b4424504c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742478498b5610488b9c24a80000004c8b9424900000004c8bb424880000004156488b4424684c8d4c2408ff12ff3424ff7424104c8b7424484d8b2e4983fd0d0f85330200004d89f64d8b760841f6c6010f84e400000041f6c6010f84c20000004983fe01750949c7c603000000eb0749c7c6010000004983fe030f85ba0000004c8bb424b80000004c8bac24a00000004c8ba42498000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424880000004d8b76084c89730849be984e70f1c27f00004c8933488b442468ff15fb0200004989c44c8bac24a800000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c488000000c22800488da4249000000048b8381fd1f1c27f0000488b5d08ff234d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849c7060100000041564c8bb424c00000004c8bac24a80000004c8ba424a0000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424900000004d8b76084c89730849be084f70f1c27f00004c8933488b442470ff150c0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c480000000c228004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24800000004d896e0849c7060100000041564c8bb424c00000004c8bac24a80000004c8ba424a0000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424900000004d8b76084c89730849be784f70f1c27f00004c8933488b442470ff15c60000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c480000000c22800f4000000|@16448,1,@2891,@6515,@6515,@6515|351,0,@7711 386,0,@10515 442,0,@10093 582,0,@7712 728,0,@10515 900,0,@7713 1046,0,@10515 7711:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2888| 7712:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2889| 7713:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2890| 7714:D6,2608|488dbc2460ffffff483b7d187306ff5560ca0d0752504150415141524c8b7424184983fe010f85bf0100006a016a016a014c8b742438498b56104c8b6c24684c8b4424604c8b5424504c8b74244841564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b5610488b9c24880000004c8b5424704c8b7424684156488b4424504c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742478498b5610488b9c24a80000004c8b9424900000004c8bb424880000004156488b4424684c8d4c2408ff12ff3424ff7424104c8bb424b80000004c8bac24a00000004c8ba42498000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424880000004d8b76084c89730849be585a70f1c27f00004c8933488b442468ff15190900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204d896e1849bd60bed1f1c27f00004d896e104c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24a800000049bea85bd1f1c27f00004d8965004c8b24244d896508488da424800000004d89751048c7c0010000004883c410c228004c8b74245041ff76086a016a016a014c8b742440498b56104c8b6c24704c8b4424684c8b5424584c8b74245041564889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742460498b5610488b9c24900000004c8b5424784c8b7424704156488b4424584c8d4c2408ff12ff34244c8b4424106a016a016a014c8bb42480000000498b5610488b9c24b00000004c8b9424980000004c8bb424900000004156488b4424704c8d4c2408ff12ff3424ff7424104c8b7424484d8b2e4983fd0d0f85240200004d89f64d8b760841f6c6010f845f01000041f6c6010f843d0100004983fe01750949c7c603000000eb0749c7c6010000004983fe030f85350100004d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610030000004c8bac24880000004d896e0849c7061300000041564c8bb424c80000004c8bac24b00000004c8ba424a8000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424980000004d8b76084c89730849bec85a70f1c27f00004c8933488b442478ff15c40600004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b2c244d896c2418488d64240849bdc06ad1f1c27f00004d896c24104d8974240849c70424070000004c8bac24b000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c22800488da4249800000048b8381fd1f1c27f0000488b5d08ff234d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610030000004c8bac24880000004d896e0849c706130000004d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d897424184c8b7424084d897424104c8b7424284d8974240849c70424070000004c8b74246849c706030000004c8bac24b000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c488000000c228004c8b6c24084d8b75004983fe0d0f85fa0100004c8ba424880000004d89e64983fc09750949c7c303000000eb194d89f64983fe07750949c7c303000000eb0749c7c3010000004d8d77e04c3b75107306ff5550ca00284d89f749c746f80300000049c746100b0000004c8b6424284d89e24d89660849c7062b0000004d8d4fe04c3b4d107306ff5550ca006c4d89cf49c741f80300000049c74110030000004c8ba424880000004d89610849c701130000004d8d67d84c3b65107306ff5550ca006e4d89e749c74424f8040000004d894c24184d89ed4d896c24104d89d54d89ea4d896c240849c70424070000004d89e54d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c74424100f0000004d89d24d8954240849c704242b0000004983fb03750949c7c323000000eb0749c7c3030000004d8d57e04c3b55107306ff5550ca00784d89d749c742f80300000049c74210010000004d895a0849c7020d0000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049b9785fd1f1c27f00004d894b184d8953104d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d896c24104d8974240849c704240b0000004c8bac24b000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c228004c8b6424284d8b34244983fe0d0f85f10100004c8b9c24880000004d89de4983fb09750949c7c303000000eb194d89f64983fe07750949c7c303000000eb0749c7c3010000004d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c746100b0000004d89ed4d89e94d896e0849c7062b0000004d8d57e04c3b55107306ff5550ca005a4d89d749c742f80300000049c74210030000004c8bac24880000004d896a0849c702130000004d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d8955184d89c94d89ca4d894d104d89e44d89650849c74500070000004d8d67e04c3b65107306ff5550ca006c4d89e749c74424f80300000049c74424100f0000004d89d24d8954240849c704242b0000004983fb03750949c7c303000000eb0749c7c3230000004d8d57e04c3b55107306ff5550ca00784d89d749c742f80300000049c74210010000004d895a0849c7020d0000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f80400000049b9785fd1f1c27f00004d894b184d8953104d89630849c703070000004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d896c24104d8974240849c704240b0000004c8bac24b000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004881c490000000c228004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8bac24880000004d896e0849c7060300000041564c8bb424c80000004c8bac24b00000004c8ba424a8000000498d5fd0483b5d107306ff5550ca00704989df48c743f8050000004c8963204c896b184c8973104c8bb424980000004d8b76084c89730849be385b70f1c27f00004c8933488b442478ff15ca0000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424504d8966204d896e184c8b2c244d896e10488d6424084c8b6c24084d896e084c8b6c24284d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8bac24b000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004881c488000000c22800f400000000000000|@16450,1,@2895,@6515,@6515,@6515|297,0,@7715 364,0,@11193 444,0,@10515 886,0,@7716 955,0,@10633 991,0,@10515 1047,0,@10093 1195,0,@10515 1632,0,@10540 1720,0,@10515 2148,0,@10540 2236,0,@10515 2408,0,@7717 2554,0,@10515 7715:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2892| 7716:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2893| 7717:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2894| 7718:D3,7256|483b65187306ff5558ca0d075250415041514c8b34244d89f541ff76086a016a016a014c8b742438498b56084c8b6424504c8b74244841564d89d04d89e24889d84c89eb4c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442450488b5c24484c8d4c2408ff124c8b3424ff7424084c8b6c24584d8b5d004d89dc4983fb150f857e0400004d89eb4d8b63084d8b2e4983fd0d0f85f40200004d8b56084c8b6c24204d8b4d004983f90d0f85ef0100004d89ed4d8b4d0841f6c101740949c7c003000000eb0749c7c0010000004983f8037405e95901000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f84350100004c8b74244049c7060300000041f6c1010f840a01000041f6c2010f84eb0000004983fc05753e4d89ce4d33f24983ce014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb724983fc0375374d0bd14d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d000000eb354d23d14d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d0000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c2180041f6c201747a41f6c201745f4983fa01750949c7c203000000eb0749c7c2010000004983fa0375584983fc0175054d89f4eb034d89ec4c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004c8b6c24204d8b55004983fa0d0f85f50000004d89ed4d8b550841f6c201747a41f6c201745f4983fa01750949c7c203000000eb0749c7c2010000004983fa0375584983fc0175054d89f4eb034d89f44c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e34983fc110f85c30600004d89ed4d8b4d084d89cc4c8b5c24204d8b034d89c24983f80d0f85250300004d8b064983f80d0f85180300004d89db4d8b63084d8b560841f6c401740949c7c003000000eb0749c7c0010000004983f8037405e97e02000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f845a0200004c8b74244049c7060300000041f6c4010f842f02000041f6c2010f84100200004983f90575694983fa017515488d64246848b8a014d1f1c27f0000488b5d08ff234c89e048d1e849d1ea4833d249f7f24c8d3455010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000e96c0100004983f90375694983fa017515488d64246848b810b0d4f1c27f0000488b5d08ff234c89e048d1e849d1ea4833d249f7f24c8d3445010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000e9fd0000004983f90b7515488d64246848b868b0d4f1c27f0000488b5d08ff234983f9097515488d64246848b8e8b0d4f1c27f0000488b5d08ff234983f90775464d89e649d1ee4983ea014d0faff24983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb7b4983f90d753e4d89e64d2bf24983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d000000eb374f8d7414ff4d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e14983fc010f85f40000004d8b264983fc0d0f85e70000004d8b660841f6c401746f41f6c40174544983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4c8bac248000000049bea85bd1f1c27f00004d89db4d895d004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89cc4983f9010f85f60000004d89db4983fa0d0f85e90000004d89db4d8b630841f6c401746e41f6c40174534983fc01750949c7c403000000eb0749c7c4010000004983fc03754c4c8ba4248000000049bda85bd1f1c27f00004d8934244c8b34244d89742408488d6424084d896c241048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89de4d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc0d0f85f80000004d8b264983fc0d0f85eb0000004d8b660841f6c401747141f6c40174564983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4c8bac248000000049bea85bd1f1c27f00004c8b6424204d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89dc4983fb030f853e0b00004d89ed4d8b4d084d89cc4c8b5c24204d8b034d89c24983f80d0f85a00700004d8b064983f80d0f85930700004d89db4d8b63084d8b560841f6c401740949c7c003000000eb0749c7c0010000004983f8037405e9f906000041f6c201740949c7c003000000eb0749c7c0010000004983f0024983f8030f84d50600004c8b74244049c7060300000041f6c4010f84aa06000041f6c2010f848b0600004d89ce4c8d2d080000004f8d6cb5fc41ffe5e933000000909090e9c6000000909090e936020000909090e94f030000909090e9ea030000909090e9c1040000909090e979050000909090ff75084c8d35600000004156488965084d89d64983ee014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b750f49bc68b1d4f1c27f0000e971050000488d642468488b5d08ff23ff75084c8d35280100004156488965084983fa01751048b8d8d2d0f1c27f0000488b5d08ff234983faff75194c3b259e0e0000751048b870d3d0f1c27f0000488b5d08ff234c89e04d89d648d1f849d1fe489949f7fe4c8d3445010000004983fa01751048b8e0d3d0f1c27f0000488b5d08ff234c89e04d89d548d1f849d1fd489949f7fd4c8d2c55010000004983fd017502eb5f4983fd017d0949c7c503000000eb0749c7c5010000004983fa017d0949c7c403000000eb0749c7c4010000004d3bec750949c7c503000000eb0749c7c5010000004983fd0374184983ee02711048b8d0c6d0f1c27f0000488b5d08ff23eb004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0b1d4f1c27f0000eb104983fe0b750f49bc68b1d4f1c27f0000e9f9030000488d642468488b5d08ff23ff75084c8d35d10000004156488965084983fa01751048b8e0d3d0f1c27f0000488b5d08ff234c89e04d89d648d1f849d1fe489949f7fe4c8d3455010000004983fe01750949c7c201000000eb4f4983fe017d0949c7c503000000eb0749c7c5010000004983fa017d0949c7c403000000eb0749c7c4010000004d3bec75054d89f2eb194983ea014d03d6711048b8d0c6d0f1c27f0000488b5d08ff234d8d67e04c3b65107306ff5550ca00044d89e749c74424f80300000049c7442410010000004d8954240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0b1d4f1c27f0000eb104983fe0b750f49bc68b1d4f1c27f0000e9d8020000488d642468488b5d08ff23ff75084c8d35680000004156488965084d89e649d1fe4983ea014d0faff2711048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b750f49bc68b1d4f1c27f0000e935020000488d642468488b5d08ff23ff75084c8d358f0000004156488965084983fa01751048b8d8d2d0f1c27f0000488b5d08ff234983faff75194c3b255a0b0000751048b870d3d0f1c27f0000488b5d08ff234c89e048d1f849d1fa489949f7fa4c8d3445010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0b1d4f1c27f0000eb104983fe0b750f49bc68b1d4f1c27f0000e956010000488d642468488b5d08ff23ff75084c8d35700000004156488965084983fa01751048b8e0d3d0f1c27f0000488b5d08ff234c89e048d1f849d1fa489949f7fa4c8d3455010000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb36488b65084883c408415e4c8975084c8b284d89ee4983fd0f750c49bca0b1d4f1c27f0000eb104983fe0b750f49bc68b1d4f1c27f0000e996000000488d642468488b5d08ff23ff75084c8d35600000004156488965084d89e64d2bf2711048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704240d0000004883c408415e4c897508eb21488b65084883c408415e4c8975084c8b304983fe0b753f49bc68b1d4f1c27f00004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d642468488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89e14983fc010f85f40000004d8b264983fc0d0f85e70000004d8b660841f6c401746f41f6c40174544983fc01750949c7c403000000eb0749c7c4010000004983fc03754d4c8bac248000000049bea85bd1f1c27f00004d89db4d895d004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89db4d895c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4d89cc4983f9010f85f60000004d89db4983fa0d0f85e90000004d89db4d8b630841f6c401746e41f6c40174534983fc01750949c7c403000000eb0749c7c4010000004983fc03754c4c8ba4248000000049bda85bd1f1c27f00004d8934244c8b34244d89742408488d6424084d896c241048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89ed4d896c24184d897424104d89de4d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc0d0f85f80000004d8b264983fc0d0f85eb0000004d8b660841f6c401747141f6c40174564983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4c8bac248000000049bea85bd1f1c27f00004c8b6424204d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800488d64246848b8381fd1f1c27f0000488b5d08ff234d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d89ed4983fc130f85890400004d89eb4d8b43084d89db4d8b4b104c8b6c24204d8b65004983fc0d0f85fa0300004d8b264983fc0d0f85ed0300004d89ed4d8b65084d8b56084983f8017502eb4941f6c401740948c7c703000000eb0748c7c7010000004883ff03740948c7c703000000eb1a41f6c201740948c7c703000000eb0748c7c7010000004883f7024883ff030f84230300004c8b74244049c706030000004983f8050f85a30000004983f903754d41f6c401743241f6c20174174d3be27c0949c7c603000000eb0749c7c601000000eb4b488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff2341f6c401743541f6c201741a4d3be2720949c7c603000000eb0749c7c601000000e943020000488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234983f8030f85a30000004983f903754d41f6c401743241f6c20174174d3be27e0949c7c603000000eb0749c7c601000000eb4b488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff2341f6c401743541f6c201741a4d3be2760949c7c603000000eb0749c7c601000000e996010000488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234983f8090f85a30000004983f903754d41f6c401743241f6c20174174d3be27f0949c7c603000000eb0749c7c601000000eb4b488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff2341f6c401743541f6c201741a4d3be2770949c7c603000000eb0749c7c601000000e9e9000000488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234983f8070f85a00000004983f903754d41f6c401743241f6c20174174d3be27d0949c7c603000000eb0749c7c601000000eb4b488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff2341f6c401743241f6c20174174d3be2730949c7c603000000eb0749c7c601000000eb3f488d64246848b8381fd1f1c27f0000488b5d08ff23488d64246848b8381fd1f1c27f0000488b5d08ff234d3be2750949c7c603000000eb0749c7c6010000004983fe03750c49bca06ad1f1c27f0000eb0a49bcc06ad1f1c27f00004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ed4d896c240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d89db4d895c24184d897424104d89ee4d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c218004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d89ed4d896c24184d897424104c8b7424204d8974240849c70424070000004c8bac248000000049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424084d89751048c7c0010000004883c460c21800f4000000000001000000000000800100000000000080|@16465,1,@2896|500,0,@10515 550,0,@10093 571,0,@10093 652,0,@10515 759,0,@10515 809,0,@10093 890,0,@10515 1023,0,@10515 1073,0,@10093 1154,0,@10515 1264,0,@10515 1498,0,@10019 1609,0,@16452 1714,0,@16454 1741,0,@16457 1964,0,@10515 2014,0,@10093 2035,0,@10093 2116,0,@10515 2242,0,@10515 2295,0,@10093 2376,0,@10515 2505,0,@10515 2557,0,@10093 2638,0,@10515 2761,0,@10515 2816,0,@10093 2899,0,@10515 3011,0,@10515 3330,0,@9475 3431,0,@16460 3479,0,@9512 3510,0,@9516 3557,0,@9519 3683,0,@9475 3789,0,@16462 3807,0,@16460 3855,0,@9519 3974,0,@9475 4078,0,@16462 4096,0,@16460 4154,0,@9475 4259,0,@16460 4307,0,@9512 4338,0,@9516 4464,0,@16462 4482,0,@16460 4530,0,@9519 4656,0,@16462 4674,0,@16460 4724,0,@9475 4829,0,@16460 4847,0,@10515 4908,0,@10093 4929,0,@10093 5010,0,@10515 5136,0,@10515 5189,0,@10093 5270,0,@10515 5399,0,@10515 5451,0,@10093 5532,0,@10515 5655,0,@10515 5710,0,@10093 5793,0,@10515 5905,0,@10515 6169,0,@10093 6190,0,@10093 6249,0,@10093 6270,0,@10093 6342,0,@10093 6363,0,@10093 6422,0,@10093 6443,0,@10093 6515,0,@10093 6536,0,@10093 6595,0,@10093 6616,0,@10093 6688,0,@10093 6709,0,@10093 6765,0,@10093 6786,0,@10093 6829,0,@10632 6841,0,@10633 6859,0,@10515 6969,0,@10515 7079,0,@10515 7191,0,@10515 7719:D3,2312|483b65187306ff5558ca0d0750415241ff70086a016a016a01488b52084c8b5424404c8b74243841564889d84c89c34d89c84c8d4c2408ff12415e415c415d4c8b5c24104c8d15080000004f8d549afc41ffe2e96b000000909090e96a000000909090e969000000909090e968000000909090e967000000909090e969000000909090e9b2010000909090e9eb020000909090e9f5030000909090e9fb040000909090e9e9050000909090e9e8050000909090e93b060000909090e929070000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e9ad0500004d8b1e4983fb0d75574d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bba06ad1f1c27f0000eb0a49bbc06ad1f1c27f0000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c210004d8b55004d89d34983fa0375404c8b342449c70603000000488d642408415d49bbc06ad1f1c27f000049bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c210004d89dd4983fd0775404c8b342449c70603000000488d642408415d49bbc06ad1f1c27f000049bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c210004d8b1e4983fb0d75744d8b76084c8b2c2449c7450003000000488d6424084d8b364e8d3475010000004d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c210004d8b5d004983fb0975614d8b5d084983fb1b750949c7c303000000eb0749c7c3010000004983fb03753a4d8b5d104c8b342449c70603000000488d642408415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d642408eb05488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c743100d0000004d89730849c7032b000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c210004d8b2e4983fd0d0f85aa0000004d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bbc06ad1f1c27f0000eb5d41f6c6017415488d64241048b808afd1f1c27f0000488b5d08ff234d0fb676ff4e8d3475010000004981e6ff0100004d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f85a60000004d8b76084c8b2c2449c7450003000000488d64240841f6c601740c49bbc06ad1f1c27f0000eb5941f6c6017415488d64241048b808afd1f1c27f0000488b5d08ff234d8b76f849c1e60849c1ee074983ce014d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b76084c8b2c2449c7450003000000488d64240841f6c601744341f6c60174284983fe01750949c7c603000000eb0749c7c6010000004983fe03752149bba06ad1f1c27f0000eb1f488d64241048b8381fd1f1c27f0000488b5d08ff2349bbc06ad1f1c27f0000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c21000488d642408eb05488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b6e084c8b342449c70603000000488d64240849d1fd4d8d77f04c3b75107306ff5550ca00104d89f749c746f80100000041c646ff014d892e4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b000000415d488d64240849bea85bd1f1c27f00004d895d004d8965084d89751048c7c001000000c210004d8b2e4983fd0d0f858e0000004d8b6e084c8b342449c70603000000488d64240849d1ed4d8d77f04c3b75107306ff5550ca00104d89f749c746f80100000041c646ff014d892e4d8d5fe04c3b5d107306ff5550ca00504d89df49c743f80300000049c74310010000004d89730849c7030d000000415d49bea85bd1f1c27f00004d895d004d8965084d89751048c7c0010000004883c408c21000488d6424084d8d5fe04c3b5d107306ff5550ca00504d89df49c743f8030000004c8b6c24084d896b104d89730849c7032b0000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89751049c745081b00000049c74500090000004d89ee415d488d6424084d895d004d8965084d89751048c7c001000000c21000f4|@16467,1,@2897|271,0,@10632 283,0,@10633 295,0,@10515 362,0,@10633 372,0,@10515 435,0,@10633 445,0,@10515 540,0,@10515 661,0,@10515 761,0,@10515 857,0,@10515 933,0,@10633 956,0,@11081 1040,0,@10515 1135,0,@10515 1207,0,@10633 1230,0,@11081 1310,0,@10515 1405,0,@10515 1511,0,@10632 1528,0,@10093 1544,0,@10633 1556,0,@10515 1651,0,@10515 1749,0,@10515 1900,0,@10515 1995,0,@10515 2146,0,@10515 7720:D7,1760|483b65187306ff5558ca0d07525053415041514c8b34244c89f341ff76086a016a016a014c8b742440498b56084c8b6c24584c8b74245041564d89d04d89ea488b4424404c8d4c2408ff12ff3424ff742410ff7424204c8b7424504d8b2e4983fd110f85c70000004d89f64d8b56084d8d77e84c3b75107306ff5550ca00044d89f749c746f80200000041c646ff4041564c8b2c244d89ee49c74508010000004d89f64d89f549c706010000004d8d77e04c3b75107306ff5550ca00244d89f749c746f80300000041c646ff4049c746100100000049c746080100000049c7060100000049bc808870f1c27f00004d89eb4d8973084d89234d89ed4d89eb418065ffbf49bdf88870f1c27f00004d89f44d895424104d89db4d895c24084d892c24418066ffbfff742450e93605000049c7c6010000004c8b2c244d8b65004983fc0375324983fe0175254d89ed4d8b75084d89ed41ff751041ff364d8b6e204d8b663049c7c601000000e948010000488d642408eb05488d6424084c8b7424084d8b364983fe0d0f85950000004c8b742450498b5e104c8b4424684c8b4c2460488b4424404c8b542430ff15600500004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24384d896c24184c8b6c24084d896c24104d8974240849c704240f0000004c8b6c247049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c448c218004c8b742450498b5e104c8b4424684c8b4c2460488b4424404c8b542430ff15c30400004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b6c24384d896c24184c8b6c24084d896c24104d8974240849c704240f0000004c8b6c247049bea85bd1f1c27f00004d8965004c8b24244d896508488d6424104d89751048c7c0010000004883c448c2180041f6c50175364d8b55084d89f34983c3027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc449c7c5010000004c8b5c245841f6c30175364d8b4b084d89ea4983c2027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d5483b65187306ff5558ca0078ebc44d3bf50f85fe0000004c8b74244049c706030000004c8b6c24484d89ee41ff75084d89f64d89f541ff76184983fc017d0d488da42480000000e9b90000004c3b25580300000f8da40000004c89e14e8d34a50400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02204d89f749d1ec4d8966f841c646ff404c89f748d1e948c7c001000000f348ab41566a016a014c8bb424900000004d8b4e084c8b9424a80000004c8bb424a000000041564155488b842490000000488b5c24504c8d442410ff15fb020000415b415e4983fb01750f49bd4882d1f1c27f0000e9f000000049c7c4010000004d89ddeb2d488da4248000000048b8d015d1f1c27f0000488b5d08ff23488d64247048b8d0b3d4f1c27f0000488b5d08ff2341f6c50175394d8b4d084d89e24983c2027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc14c3b25330200007c18488da4248800000048b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f8518010000418065ffbf4d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b14244d89d34d895424184d896c24104c8b6c24204d896c240849bdf09370f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89db4d895d08488d64240849bbe09470f1c27f00004d895d00498d5fd8483b5d107306ff5550ca00704989df48c743f8040000004c8b1c244c895b18488d6424084c8963104c8b24244c896308488d6424084c892b6a016a016a014c8bac2480000000498b55084c8b9424980000004c8bac249000000041554d89f0488b4424204c8d4c2408ff12415b415c415e488d6424104c8b6c24784d895d004d8965084d89751048c7c0010000004883c460c218004d8b134d8b4b084f8954a5fc4d89e24983c2027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e99afefffff6042401754c4c8b2c244d8b75004d89ed41ff7508498b0648c7c3010000004c8b442410ff15690000004989c64983fe03750e488d64241849c7c603000000eb1d415d4c892c24483b65187303ff5558ebae488d64241049c7c601000000e96efafffff400000000000000ffffffffffffff01ffffffffffffff01|@16482,1,@2905,@7723,@7729,@7730,@7727|230,0,@7721 261,0,@7722 503,0,@10515 652,0,@10515 721,0,@9475 793,0,@9475 1041,0,@10817 1076,0,@10027 1097,0,@16474 1140,0,@9475 1193,0,@10818 1351,0,@7725 1404,0,@7726 1600,0,@9475 7721:D3,80|483b65187305ff5558cd054989c66a016a01488b5208498b06498b5e084989e0ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@16469,1,@2898| 7722:D4,584|483b65187306ff5558ca0d015241504c8b304d89f54983fe0f7519415e49891e49c746080300000048c7c0010000004883c408c34d89ee4983fd1975104c8b70084d8b7618415653e9700100004983fe110f854d0100004c8b60084883fb03750c49c7c503000000e91e0100004c8b7424084d8b5e104d89dd4d3be3750c49c7c503000000e9010100004d8b14244d89d34983fa01753e4d89ee4d89f34d8b364983fe0175234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000e9b60000004d89da4983fb03753b4d89ee4d89f34d8b364983fe0375234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb724d89d34983fa05753b4d89ee4d89f34d8b364983fe0575234d8b7424084d89dd4d8b6d084d3bf5750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb2e4d89dc4983fc07751e4d89ee4d8b364983fe07750949c7c503000000eb0749c7c501000000eb0749c7c501000000415e4d892e49c746080100000048c7c0010000004883c408c3415e49891e49c746080100000048c7c0010000004883c408c3f64424080175634c8b6c24084d8b75004d89ed41ff7508498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700110000004c8b7424204d8b4608488b5c2408ff15520000004989c4415d4c8924244c896c2408483b65187303ff5558eb96415d4c8b7424084d892e49c746080300000048c7c0010000004883c418c3f40000|@16470,1,@2899,@7723| 7723:D4,104|483b65187306ff5558ca0901504150488b1424498d47e8483b45107305ff5550cd0c4989c748c740f802000000488958084c8b7424084c8930ff124989c64d8b6e084983fd017515498b1e488b4424084158488d642408ff2523000000488d642410498b06c3f400|@16472,1,@2900,@7724| 7724:D3,1984|483b65187306ff5558ca090141504c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9ee000000909090e953010000909090e95a010000909090e97f010000909090e94a020000909090e990020000909090e991020000909090e9ae020000909090e9af020000909090e9b0020000909090e9d5020000909090e9df020000909090e9ea020000909090e927030000909090e92b030000909090e932030000909090e93c030000909090e95e030000909090e9c3030000909090e9cd030000909090e9ce030000909090ff7008ff7010488b401848ba68b3d4f1c27f00004c8b442410ff124889c348ba68b3d4f1c27f0000488b4424084c8b442410ff124889c348ba68b3d4f1c27f000058488d6424084158ff224c8b700841ff3641ff760841ff7618498b462048ba68b3d4f1c27f00004c8b442418ff124889c348ba68b3d4f1c27f0000488b4424104c8b442418ff124889c348ba68b3d4f1c27f0000488b4424084c8b442418ff124889c348ba68b3d4f1c27f000058488d6424104158ff22ff70084c8b7010415653e9c60500004c8b7008ff701048ba68b3d4f1c27f00004c89f04c8b442408ff124889c348ba68b3d4f1c27f0000584158ff22ff70104c8b7018ff7020498b064d8b760841f6c601753641ff3648ba68b3d4f1c27f00004c8b442418ff124889c348ba68b3d4f1c27f0000488b04244c8b442418ff124889c3488d642408eb1448ba68b3d4f1c27f00004c8b442410ff124889c34c8b3424498b064d89f64d8b7608488d64240841f6c601753641ff3648ba68b3d4f1c27f00004c8b442410ff124889c348ba68b3d4f1c27f0000488b04244c8b442410ff124889c3488d642408eb1448ba68b3d4f1c27f00004c8b442408ff124889c348ba68b3d4f1c27f0000584158ff224c8b7008ff7010ff701848ba68b3d4f1c27f00004c89f04c8b442410ff124889c348ba68b3d4f1c27f0000488b4424084c8b442410ff124889c348ba68b3d4f1c27f000058488d6424084158ff22488d6424084889d8c3ff7008488b401048ba68b3d4f1c27f00004c8b442408ff124989c6ff34244156e9fb030000488d6424084889d8c3488d6424084889d8c34c8b7008ff701048ba68b3d4f1c27f00004c89f04c8b442408ff124889c348ba68b3d4f1c27f0000584158ff22488b400848ba68b3d4f1c27f00004158ff224c8b700841ff364d8b7618415653e9170300004c8b7010498b064d8b760841f6c601752641ff3648ba68b3d4f1c27f00004c8b442408ff124889c348ba68b3d4f1c27f0000584158ff2248ba68b3d4f1c27f00004158ff224c8b7008415653e9770200004c8b7008ff7010415653e921010000488b400848ba68b3d4f1c27f00004158ff22ff7008488b401848ba68b3d4f1c27f00004c8b442408ff124889c348ba68b3d4f1c27f0000584158ff22ff70104c8b7018498b064d8b760841f6c601753641ff3648ba68b3d4f1c27f00004c8b442410ff124889c348ba68b3d4f1c27f0000488b04244c8b442410ff124889c3488d642408eb1448ba68b3d4f1c27f00004c8b442408ff124889c348ba68b3d4f1c27f0000584158ff22488b401048ba68b3d4f1c27f00004158ff224c8b7008415653eb12488b400848ba68b3d4f1c27f00004158ff22f644240801753e4c8b742408498b064d89f641ff760848ba68b3d4f1c27f0000488b5c24084c8b442418ff124989c4415d4c8924244c896c2408483b65187303ff5558ebbb584883c410c3f6442408010f85940000004c8b6c24084d8b75004d89ed41ff75084d8b2e4d89ec4983fd01751f498b462048ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4eb6d4d89e54983fc05751f498b460848ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4eb454983fd07750c4d8b76084156ff742410eb4c498b461848ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4eb145b48ba68b3d4f1c27f00004883c408584158ff22415d4c8924244c896c2408483b65187303ff5558e934fffffff64424080175694c8b6c24084d8b75004d89ed41ff75084d8b7610498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001900000048ba68b3d4f1c27f0000488b5c24084c8b442438ff124989c4415d4c8924244c896c2408483b65187303ff5558eb90415c4883c408e96cfffffff64424080175424c8b6c24084d8b75004d89ed41ff7508498b0648ba68b3d4f1c27f0000488b5c24084c8b442418ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb7584883c410c3f64424080175654c8b6c24084d8b75004d89ed41ff7508498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001100000048ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558eb945b48ba68b3d4f1c27f00004883c408584158ff22f64424080175424c8b6c24084d8b75004d89ed41ff7508498b0648ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb7584883c418c3f64424080175464c8b6c24084d8b75004d89ed41ff75084d8b36498b461048ba68b3d4f1c27f0000488b5c24084c8b442420ff124989c4415d4c8924244c896c2408483b65187303ff5558ebb35b48ba68b3d4f1c27f00004883c408584158ff22f400|@16473,1,@2901|220,0,@16471 240,0,@16471 265,0,@16471 304,0,@16471 324,0,@16471 349,0,@16471 374,0,@16471 416,0,@16471 439,0,@16471 480,0,@16471 500,0,@16471 531,0,@16471 579,0,@16471 599,0,@16471 630,0,@16471 650,0,@16471 675,0,@16471 698,0,@16471 723,0,@16471 759,0,@16471 814,0,@16471 837,0,@16471 856,0,@16471 909,0,@16471 929,0,@16471 944,0,@16471 989,0,@16471 1010,0,@16471 1030,0,@16471 1068,0,@16471 1088,0,@16471 1119,0,@16471 1139,0,@16471 1158,0,@16471 1185,0,@16471 1221,0,@16471 1317,0,@16471 1357,0,@16471 1406,0,@16471 1434,0,@16471 1543,0,@16471 1627,0,@16471 1741,0,@16471 1789,0,@16471 1834,0,@16471 1917,0,@16471 1965,0,@16471 7725:D3,200|483b65187305ff5558cd054c8b304d89f54983fe07751048b860b4d4f1c27f0000488b5d08ff234d89ee4983fd03750a488b4008488b5208ff224983fe0175374c8b68084c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc34c8b68084c8b62184d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b81011d1f1c27f0000488b5d08ff234f8b74aefc4983fe01751048b80895d1f1c27f0000488b5d08ff23498b06c3f4|@16480,1,@2902|25,0,@16477 99,0,@9998 154,0,@9995 181,0,@10926 7726:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@16481,1,@2903|78,0,@10034 7727:D4,264|483b65187306ff5558ca090753415041514152a8010f85db0000004c8b30ff7008498b0641ff7608498d5fd0483b5d107305ff5550cd014989df48c743f8050000004c8b7424184c8973204c8b7424204c8973184c8b7424104c8973104c8b7424284c89730849beb09670f1c27f00004c8933ff15a70000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e839ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000|@10112,1,@2909,@6515|104,0,@7728 7728:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2904| 7729:D3,752|483b65187306ff5558ca0907415041514152a8010f85b60200004c8b30ff7008498b066a016a016a01488b5424284c8b6c24404c8b74244841564989d84c89eb4c8d4c24084c8b542428ff12ff3424ff742410ff7424206a016a014c8b6c24204d8b65004d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9750100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9f90000004c8b742468498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c89742408ff3424488b5c24106a016a014c8bb424880000004c8bac248000000041564155488b4424684c8d4424104c8b4c24784c8b542470e87dfdffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184c8b6c24484d8965004d89750848c7c0010000004883c450c21000488d642410415e49c7060100000049895e0848c7c001000000c21000f4000000|@16483,1,@2906| 7730:D4,264|483b65187306ff5558ca090753415041514152a8010f85db0000004c8b30ff7008498b0641ff7608498d5fd0483b5d107305ff5550cd014989df48c743f8050000004c8b7424184c8973204c8b7424204c8973184c8b7424104c8973104c8b7424284c89730849be709b70f1c27f00004c8933ff15a70000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e839ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400000000|@10112,1,@2908,@6515|104,0,@7731 7731:D3,72|483b65187305ff5558cd054989d6498b56084d8b66104d89e5498b1c244d89ec4d8b45084d89e54d8b4c24104d8b55184d8b6e184d8b66204154ff7424084c896c2410ff22f40000|@16430,1,@2907| 7732:D6,1016|483b65187306ff5558ca0d074c89ce41524c8b30ff70084c8b6818ff7020ff70284c8b5830ff70384c8b63084c8b4b104983fb017d0a488d642428e9ed0100004c3b1da90300000f8ddb0100004c89d94e8d149d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca46734d89d749d1eb4d895af841c642ff404c89d748d1e948c7c001000000f348ab48c7c7010000004d8d5ff04c3b5d107306ff5550cac4774d89df49c743f80100000041c643ff4049893b415348c7c7010000004d8d5ff04c3b5d107306ff5550cac4774d89df49c743f80100000041c643ff4049893b41534d8d5fb84c3b5d107306ff5550ca44774d89df49c743f8080000004d895338488b7c240849897b30498973284d894b204c8b0c244d894b184d8943104d896b0849bd18a070f1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca045c4d89ef49c745f8020000004d89550849ba90a770f1c27f00004d89550049c7c1010000004d8d57f04c3b55107306ff5550ca047a4d89d749c742f80100000041c642ff404d890a41524d8d57e84c3b55107306ff5550ca04784d89d749c742f8020000004c8b0c244d894a0849b928a870f1c27f00004d890a4c8b4c24504c8b442448498d5fb8483b5d107306ff5550ca047f4989df48c743f8080000004c8943384c894b304c8953284c895b204c8963184c896b104c8b6a084c896b0849bd88a870f1c27f00004c892b4c89f0ff15090200004c8b7424104d8b2e49c7c601000000eb15488d64242848b8d015d1f1c27f0000488b5d08ff2341f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca01744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0160ebb941564c8b74240841ff364c8b7424304983fe03750949c7c603000000eb084c8b7424184d8b3641564c8b34244983fe0375054989c3eb32ff355701000048bb5096d4f1c27f000049b818b8d4f1c27f000049b928b8d4f1c27f00004c8b542410ff15260100004989c34d8d67b84c3b65107306ff5550ca00084d89e749c74424f8080000004c8b7424304d897424384c8b7424084d897424304c8b34244d89f54d897424284c8b7424404d897424204c8b5424104d89d64d8954241849c7442410010000004c8b5424484d895424084d891c244d89ed4983fd03488d6424107511488d64244049bea85bd1f1c27f0000eb634d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89f64d897508488d64240849bee0bc52f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104d89660849c706030000004883c438415d4d8965004d89750848c7c001000000c21000f40000ffffffffffffff01|@16496,1,@2920,@7743,@16495,@6515|296,0,@7733 340,0,@7738 433,0,@7739 515,0,@7740 559,0,@10027 707,0,@16329 717,0,@16493 727,0,@16494 876,0,@10515 927,0,@5134 7733:D4,104|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a284c8b62304c8b5a384156415541544153488d5c2420ff1542000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@16486,1,@2910,@7734| 7734:D4,584|483b65187306ff5558ca09075341524c8b304d89f54983fe0375094c8b7008e916010000488d6424084d89ee4983fd0775464d8d67e84c3b65107305ff5550cd014d89e749c74424f802000000498944240849c7042403000000415d49bea85bd1f1c27f00004d8965004d89750848c7c001000000c220004983fe0175464d8d67e84c3b65107305ff5550cd014d89e749c74424f802000000498944240849c7042403000000415d49bea85bd1f1c27f00004d8965004d89750848c7c001000000c220004c8b68084c8b7424104d8b76f849c1e60849c1ee074983ce014d3bee7215488d64240848b81011d1f1c27f0000488b5d08ff234c8b7424104f8b74aefc4983fe017515488d64240848b80895d1f1c27f0000488b5d08ff23415d4d8b364d8b264d8965004d8b76084d89750848c7c001000000c2200041f6c0010f85eb000000498b004d8b68084983fe010f85a50000004c8b304983fe05755d41f6c10175574c8b70084d8b294d3bf575144c8b342449c7060300000049c7c603000000eb0749c7c6010000004983fe03752a488d642408415d49be20b6d4f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c22000488b542430ff124989c6498b06498b5e084c8b4424084c8b4c2428415a488d6424084c8b6c24104c896c24204c8b34244c897424184883c418ff25660000004d89f44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e64d89e8483b65187306ff5558ca0043e90bffffff488d64241048b8c85dd1f1c27f0000488b5d08ff23f4000000|@16489,1,@2913,@7735|94,0,@10515 170,0,@10515 233,0,@9995 270,0,@10926 410,0,@16485 522,0,@9475 566,0,@10528 7735:D4,760|483b65187306ff5558ca0907534150415141524c8b304983fe030f859c0000004c8b68084d89ee4d8b6d004983fd05751df644240801740949c7c503000000eb0749c7c5010000004983f502eb0749c7c5010000004983fd0375614d8b76084c8b6c24084d8b6d004d3bf575144c8b342449c7060300000049c7c603000000eb0749c7c6010000004983fe03752e488d642410415d49be20b6d4f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c408c208004c8b304983fe0175384c8b70084c8b68104d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d8974240849c7042401000000eb3b488b4008488b5c2428ff15040200004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424030000004c8b7424184d8b1e4d89dd4983fb057514488d64241049bea85bd1f1c27f0000e97c0100004d89f64d89eb4983fd017514488d64241049bea85bd1f1c27f0000e95c0100004d89f64d89dd4983fb097514488d64241049bea85bd1f1c27f0000e93c0100004d89f64983fd030f859a0000004d89f64d8b6e084d89f64d8b56104c8b7424284d8d5fc84c3b5d107306ff5550ca00744d89df49c743f8060000004d8953284d8973204c8b34244d897318488d6424084c8b34244d897310488d64240849be80b6d4f1c27f00004d89730849be50a670f1c27f00004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70603000000e9950000004d89f64d8b6e084d89f64d8b56104c8b7424284d8d5fc84c3b5d107306ff5550ca00744d89df49c743f8060000004d8953284d8973204c8b34244d897318488d6424084c8b34244d897310488d64240849be80b6d4f1c27f00004d89730849bef0a670f1c27f00004d89334d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d896e0849c70607000000415d4d8965004d89750848c7c0010000004883c408c20800f4000000000000|@16490,1,@2914,@7503|151,0,@16485 336,0,@10515 368,0,@10515 400,0,@10515 508,0,@16487 522,0,@7736 662,0,@16487 676,0,@7737 7736:D3,120|483b65187305ff5558cd05524c8b3424498b5628ff124989c6498b06498b5e086a016a014c8b742410498b56084d89f64d8b4e104d89f64d8b56184d89f64d8b762041564c8d442408ff12415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@16488,1,@2911| 7737:D3,120|483b65187305ff5558cd05524c8b3424498b5628ff124989c6498b06498b5e086a016a014c8b742410498b56084d89f64d8b4e104d89f64d8b56184d89f64d8b762041564c8d442408ff12415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@16488,1,@2912| 7738:D3,112|483b65187305ff5558cd054c8b204c8b68084d8d77f04c3b75107306ff5550ca04304d89f749c746f8010000004d892e4c8b5a084d89dd4d8b5bf849c1e30849c1eb074983cb014d3be3721048b80017d1f1c27f0000488b5d08ff234f8974a5fc48c7c001000000c3f4000000000000|@16491,1,@2915|78,0,@10034 7739:D3,56|483b65187305ff5558cd054c8b6a084d89ee498b45004d89f54d8b364983c602711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f4|@16492,1,@2916|36,0,@9475 7740:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2917| 7741:D3,56|483b65187305ff5558cd094989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@16335,1,@2918| 7742:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@16337,1,@2919| 7743:D4,144|483b65187306ff5558ca09074989c64d87c14983fa017d02eb5d4c3b15670000007d544c89d14e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca0a434d89ef49d1ea4d8955f841c645ff404c89ef48d1e948c7c001000000f348ab4c89f04c8b5424084c896c2408ff253100000048b8d015d1f1c27f0000488b5d08ff23f4ffffffffffffff01|@16522,1,@2945,@7744|121,0,@10027 7744:D5,208|483b65187306ff5558ca0907504150415141524c8b742428ff34244156488b44242849b880b8d4f1c27f00004c8b4c24204c8b542418ff15b40000004989c64983fe01757a4c8b742428498d5fc8483b5d107306ff5550ca00404989df48c743f8060000004c8973284c8b34244c897320488d6424084c8b34244c897318488d6424084c8b34244c897310488d64240849be80b8d4f1c27f00004c89730849be50ab70f1c27f00004c8933584c8b34244c897424084883c408ff2529000000488d642420498b06c20800f40000000000|@16523,1,@2946,@6515,@7746|36,0,@16497 146,0,@16497 160,0,@7745 7745:D4,64|483b65187305ff5558cd054c8b42084c8b4a104c8b52184c8b6a204c8b62284154ff74240848bb2860d1f1c27f00004c896c2410ff251e000000f40000000000|@16507,1,@2923,@7746|39,0,@10547 7746:D11,2528|483b65187306ff5558ca09074989c6534150415141524d8b2e4c8d25080000004f8d64acfc41ffe4e9ab000000909090e9aa000000909090e9ac000000909090e956020000909090e955020000909090e957020000909090e93e030000909090e940030000909090e94e040000909090e9e3050000909090e9e2050000909090e9e4050000909090e9d5060000909090e9a2070000909090e9a1070000909090e9a3070000909090e959080000909090e958080000909090e957080000909090e956080000909090e958080000909090e9f5080000909090488d642420eb05488d642420e9b7010000498b460841ff7610488b5424184c8b5424384c8b7424304156488b5c24284c8b4424184c8b4c2410ff124989c641566a016a014c8b7424504c8b6c244841564155488b442428488d5c24104c8b4424404c8b4c24384c8b542430ff15e7080000ff3424ff742410f6042401740949c7c603000000eb0749c7c6010000004983f6024983f6024983fe030f84c4000000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424284c89730849be08b670f1c27f00004c8933488b442420ff15770800004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241049c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c440c21000488d6424084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424084c8b6c24104d896e0849c70605000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c440c21000488d642420eb05488d642420e9f4000000498b460841ff761041ff7618488b5424204c8b5424404c8b742438415648bb2860d1f1c27f00004c8b4424204c8b4c2418ff124989c64156488b5424284c8b5424484c8b7424404156488b442418488b5c24384c8b4424284c8b4c2420ff124989c64156488b5424304c8b5424504c8b7424484156488b442418488b5c24404c8b4424304c8b4c2428ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64243849c7060b000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420e9b8020000498b460841ff761041ff76184c8b5424404c8b7424384156488b5c24284c8b4424204c8b4c2418ff154e0600004989c64156488b0424ff15370600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e0849c70601000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8933488b5424284c8b5424484c8b7424404156488b4424184c8b4424284c8b4c2420ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b2c244d896e08488d64243849c7060f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041ff76084c8b34244d8b2e4d89ec4983fd077520488d6424105a488b442408ff1249bd4060d1f1c27f00004883c410e9220100004d89f64d89e54983fc0375204d89f6498b4608488d6424085a488b5c2410ff124989c54883c418e9f60000004d89f64983fd01751e4d89f6498b4608488b542438488b5c2420ff12415d4883c420e9cf0000004d89f641ff7608f6442428017415488d64243048b818bad4f1c27f0000488b5d08ff234c8b7424384d8b66f849c1e40849c1ec074983cc014c8b34244d89f54d3bf47215488d64243048b81011d1f1c27f0000488b5d08ff234c8b7424384d89ed4b8b5caefc4883fb0175074c8b742428eb0e488b442428ff15500400004989c64c8b6c24384d8b5df849c1e30849c1eb074983cb014c8b2c244d89ec4d3beb7215488d64243048b80017d1f1c27f0000488b5d08ff234c8b6c24384d89e44f8974a5fc488d642408415d4883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420eb05488d642420e9d3010000498b460841ff76104d8b76184983fe010f85d40000004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b6c24204d896e104c8b2c244d896e0849c70605000000498d5fe8483b5d107306ff5550ca01404989df48c743f80200000048c74308010000004c8933488b5424184c8b5424384c8b74243041564c8b4424184c8b4c2410ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424284d896e0849c70617000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d64242848c7c001000000c21000498b46086a016a016a016a016a016a016a016a014c8b7424704c8b6c246841564155488b5c24684c8d4424104c8b4c24584c8b542450ff156a020000415e415c415b415a415941585f5e488d6424104d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c21000488d642420eb05488d642420e9c300000041ff7608498b4610488b5424184c8b5424384c8b7424304156488b5c24284c8b4424184c8b4c2410ff124989c64156488b5c24384c8b7424404156488b4424104c8b4424284c8b4c24204c8b542418ff15630100004989c54983fd017508415e4883c428eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c428498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642420eb05488d642420eb05488d642420eb05488d642420e9aa000000498b46084d8b76104983fe010f85840000004c8b7424304c8b6c2428ff34244156415548c7c3010000004c8b4424304c8b4c24284c8b542420ff15940000004989c5488d6424204d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d64242048c7c001000000c21000488d64242048c7c001000000c21000f4000000000000|@16508,1,@2924,@7750,@7752,@7754,@7766,@7767,@7768,@6515,@7749|411,0,@7747 715,0,@10547 1246,0,@10548 1367,0,@16504 1421,0,@9995 1515,0,@10034 7747:D4,256|483b65187305ff5558cd054c8b304d89f54983fe0575214d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c89f0c34d89ee4983fd1975214d8d77f04c3b75107305ff5550cd014d89f749c746f8010000004989064c89f0c34983fe1d0f858b000000488b40086a016a01488b5a084989e0ff1597000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c704241d0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@16502,1,@2921,@7748| 7748:D3,360|483b65187306ff5558ca09014150a8010f850e010000ff30488b40084c8b342441ff36f6c3010f85e30000004c8b33488b5b084d8b364d8b364983fe01757b6a016a014989e0e8b5ffffff415c415b4d8d6fe84c3b6d107306ff5550ca00184d89ef49c745f8020000004c8b34244d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892e4c8b6c24084d8965004d89750848c7c0010000004883c410c3488d6424086a016a014989e0e835ffffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642408415d4d8965004d89750848c7c001000000c3488d64241848b890b8d4f1c27f0000488b5d08ff234883fb017523415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3488d64240848b890b8d4f1c27f0000488b5d08ff23f40000000000|@16503,1,@2922|278,0,@16498 302,0,@10542 340,0,@16498 7749:D3,584|483b65187306ff5558ca090753415041514152a8010f85ff0100004c8b30488b40084d8b2e41ff75004c8b24244983fc010f85dc000000488d64240841ff75106a016a014c8b7424484c8b6c244041564155488d5c24104c8b4424384c8b4c24304c8b542428e895ffffffff3424ff742410488b5424384c8b5424584c8b7424504156488b44242848bb2860d1f1c27f00004c8b4424384c8b4c2430ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4c8b6c24384c8b24244d896500488d6424404d89750848c7c001000000c2100041ff750841ff751041ff76086a016a014c8b7424604c8b6c245841564155488d5c24104c8b4424504c8b4c24484c8b542440e8b6feffffff3424ff742410488b5424504c8b5424704c8b7424684156488b442430488b5c24404c8b4424504c8b4c2448ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e084c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424204d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4c8b6c24584d8975004c8b34244d897508488d64246048c7c001000000c21000488d642418415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c21000f4000000|@16521,1,@2944|138,0,@10547 547,0,@10542 7750:D4,416|483b65187306ff5558ca090753415041514152a801750dff30ff7008ff7424206a01eb0f488d64242048c7c001000000c21800f6442408010f85930000004c8b6c24084d8b75004d89ed41ff75084d8b2e4983fd0575374d8b6e08498b46104c8b7424404d3bf5751e4c8b7424084c89f34983fe0175054989c4eb09ff15360100004989c4eb054c8b642408eb2a4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e962ffffff5b4883fb017511488d64240848bb2860d1f1c27f0000eb05488d642408488b5424184c8b4c24484c8b5424404c8b7424384156488b4424104c8b442418ff124989c64156488b5c24304883c3027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b7424504c8b6c24484c8b642440415641554154488b4424204c8b4424404c8b4c24384c8b542430e89dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c428c21800f400000000000000|@16509,1,@2925,@7751|223,0,@10547 295,0,@9475 7751:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2926| 7752:D9,1432|483b65187306ff5558ca090753415041514152a8010f853a0500004c8b30488b40084d8b2e4d89ec4983fd010f856001000041ff761041ff761841ff76204c8b7424404156488b5c24384c8b4424304c8b4c24284c8b542420e8a2ffffff4989c641564c8b7424384d8b5ef849c1e30849c1eb074983cb014c8b6424184d89e54d3be37215488d64244048b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4983fe017533488b442408ff15220500004989c64c2335d00400004c3b35c1040000750949c7c601000000eb0a49be2860d1f1c27f0000eb004156f6042401740d488d642408584883c438c20800488b5424384c8b542450ff742440488b44241848bb2860d1f1c27f00004c8b4424384c8b4c2430ff124989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24184d896e184c8b6c24204d896e104c8b2c244d896e08488d64240849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424404c8930c208004d89e54983fc050f85cf00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e83dfeffff4989c64156488b442408ff15fd0300004989c64c2335a30300004c3b35940300007508584883c428c20800488b5424204c8b542438ff742428488b44241048bb2860d1f1c27f00004c8b4424204c8b4c2418ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424304c8930c208004983fd070f85cb00000041ff76084c8b7424304156488b5c24284c8b4424204c8b4c24184c8b542410e864fdffff4989c641564c8b742438ff7424104156488b44241848c7c30100000049c7c0010000004c8b4c24384c8b542428ff15f9020000488b5c2428ff15e60200004989c541f6c5017408584883c428c208004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c428c2080041ff761041ff76184c8b7424384156488b5c24304c8b4424284c8b4c24204c8b542418e895fcffff4989c641564c8b7424304d8b5ef849c1e30849c1eb074983cb014c8b6424104d89e54d3be37215488d64243848b81011d1f1c27f0000488b5d08ff234d89ed4d89f64f8b74aefc4983fe017533488b442408ff15f50100004989c64c2335a30100004c3b3594010000750949c7c601000000eb0a49be2860d1f1c27f0000eb004156f6042401740d488d642408584883c430c20800488b4424104c8b304983fe190f85b30000004889c0488b40086a016a016a016a016a016a016a016a014c8bb424880000004156ffb42480000000488b5c24504c8d4424104c8b4c24784c8b542470ff155c010000415d415c415b415a415941585f5e4d8d77b84c3b75107306ff5550cac03f4d89f749c746f8080000004989763849897e304d8946284d894e204d8956184d895e104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c7450019000000eb22488b5424304c8b542448ff742438488b5c24084c8b4424304c8b4c2428ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24184d896e104c8b2c244d896e08488d64240849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c430c20800488d64242048c7c001000000c20800f4000000010000c000000000010000c000000000010000c000000000010000c000000000010000c000000000010000c000000000|@16510,1,@2927,@7754,@7640,@7765,@7753,@7640,@7640|140,0,@9995 212,0,@10547 264,0,@10547 515,0,@10547 921,0,@9995 993,0,@10547 7753:D4,576|483b65187306ff5558ca09075341514152a8010f85d60100004c8b20ff700841ff742408498b4424104c8b6c24184d8b55f849c1e20849c1ea074983ca014c8b1c244d89de4d3bda7215488d64242848b81011d1f1c27f0000488b5d08ff234d89f64d89ed4f8b74b5fc4983fe017550488d642408498d5fe8483b5d107306ff5550ca00314989df48c743f8020000004c8b7424184c8973084c8923584d89e9415a488d6424104c8b6c24104c8b6424084c896424084c896c2410e940ffffff498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c89730849be4060d1f1c27f00004c89336a016a016a016a016a016a016a016a014c8b5424784c8b742470415641554c8d4424104c8b4c2460ff153e010000415e415c415b415a415941585f5e4d8d6fb84c3b6d107306ff5550cac05f4d89ef49c745f8080000004989753849897d304d8945284d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d64240841564c8b7424384c8b6c243041564155488b442418488b5c243049c7c0030000004c8b4c24284c8b542420e842feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c210004983f801750f488d64241848c7c001000000c21000488b4424104c8b4c2408415a488d6424104c8b6c24104c8b64240849c7c00100000048c7c3010000004c896424084c896c2410e9c4fdfffff4000000|@16520,1,@2940,@7754|81,0,@9995 225,0,@10548 7754:D8,1984|488dbc2440ffffff483b7d187306ff5560ca090750534150415141524c8b7424204d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76184d89ed4d89ee41ff75204d89f64d89f541ff76284d89ed4d89ee41ff75304d89f641ff763849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e415649c7c5010000004c8b74242041f6c60175364d8b5e084d89ec4983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebc44983fd017d0a488d642468e9b70000004c3b2dcd0600000f8da50000004c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd00ce70f1c27f00004d892e4156ff7424706a01eb15488d64246848b8d015d1f1c27f0000488b5d08ff23f6442408010f85c10000004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54983fc0375334d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849bea854d1f1c27f00004d893424eb594983fd017522498b46084c8b7424084c89f34983fe0175054989c4eb09ff15d00500004989c4eb314d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849be4060d1f1c27f00004d893424415d4c8924244c896c2408483b65187303ff5558e934ffffffff342448ba58bcd4f1c27f00004c8bb424a80000004c8bac24a00000004d8d47c04c3b45107306ff5550ca04604d89c749c740f8070000004c8b6424584d8960304d8968284d8970204c8b7424704d8970184c8b7424784d8970104c8b7424304d89700849be00cf70f1c27f00004d89304d8d77e84c3b75107306ff5550ca04014d89f749c746f8020000004c8b6c24284d896e0849bda0d170f1c27f00004d892e4156488b442470488b5c24084c8b4c24204c8b542448ff124989c641564c8b74242841ff36ff34246a01f6442408010f85c10000004c8b6c24084d8b75004d89ed41ff75084d8b264d89e54983fc0375334d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849bea854d1f1c27f00004d893424eb594983fd017522498b46084c8b7424084c89f34983fe0175054989c4eb09ff15300400004989c4eb314d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b7424084d8974240849be4060d1f1c27f00004d893424415d4c8924244c896c2408483b65187303ff5558e934ffffff415df6442408017407488d642408eb5f488d6424084c8b74241041f6c60175384d8b1e4d8b66084d8b0b4d89ca4983f9037502eb1a4d89d34983fb0774114d89e6483b65187306ff5558ca0060ebcb49c7c603000000eb0749c7c6010000004983fe03740a4c8b742410e9b001000049c7c6010000004983fe0175114c8b7424404d8b2e49c7c601000000eb59488da42480000000498b1e4883fb017507488b5c2418eb0e488b442418ff15290300004889c3488b4424204c8b4424104c8b4c2408415a488d6424104c8b6c24204c8b6424184c896424184c896c24204883c410e90bfbffff41f6c50175414d8b5d004d8b65084d8b134d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebb94156488b442468ff15970200004989c64c8b6c24404d8b65f849c1e40849c1ec074983cc0149c7c5010000004983fc01756f4c89eb4c89f0ff155e0200004989c64c8bac24980000004c8b6424104d8965004c8b6424784d8965084c8b6424084d8965104c8b24244d896518488d6424184d8975204c8b7424484d8975284c8b7424404d8975304c8b7424384d89753848c7c0010000004881c498000000c210004d89e24983ea024d89e14983e9024c8b5c24404f8b4c8bfc4d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d896b084d890b4d89d44d89dd483b65187306ff5558ca0070e93affffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe0375054d89eeeb0f49be68bcd4f1c27f0000e906feffff41f6c601752a4d8b1e4d8b66084d8b1b4983fb0575114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe0375b449c7c60100000041f6c50175464d8b5d004d8b65084983fe03750c49c7c303000000e9b70000004d8b134983fa05750b4d8b5b084c8b542410eb4b488da424a800000048b878bcd4f1c27f0000488b5d08ff234983fe0375214d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892eeb0749c7c601000000e938ffffff41f6c201754b4d8b024d8b4a08498b384883ff0575234d8b40084d3bc374114d89ca483b65187306ff5558ca007cebd049c7c301000000eb1f488da424a800000048b8f0bcd4f1c27f0000488b5d08ff2349c7c3030000004d89de4d89e5483b65187306ff5558ca0060e912fffffff4000000000000ffffffffffffff01|@16519,1,@2934,@5292,@7762,@7763,@7764,@7761|178,0,@9475 385,0,@7755 413,0,@10027 503,0,@10468 594,0,@10548 636,0,@16512 733,0,@7757 782,0,@7759 911,0,@10468 1002,0,@10548 1650,0,@16513 1793,0,@16514 1925,0,@16517 7755:D4,72|483b65187305ff5558cd05524c8b34244d8b7608498b1e4883fb0175054989c6eb09ff15380000004989c64c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000|@16511,1,@2928,@7756| 7756:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2929| 7757:D5,480|483b65187305ff5558cd0d524c8b34244d8b763041f6c6010f85a90100004d8b264d8b6e084883f8010f85630100004d89e641564c8b34244d8b2e4d89ec4983fd077521488d6424084c8b3424498b56104889d8ff1248b84060d1f1c27f0000e91a0100004d89f64d89e54983fc03751b4d89f6498b4608488d6424084c8b3424498b5618ff12e9f30000004d89f64983fd0175184d89f6498b46084c8b742408498b5620ff1258e9d20000004d89f641ff7608f6c3017415488d64241848b818bad4f1c27f0000488b5d08ff234c8b7424104d8b6e284d89ec4d8b55f849c1e20849c1ea074983ca014c8b1c244d89dd4d3bda7215488d64241848b81011d1f1c27f0000488b5d08ff234d89e64d89ed4f8b74aefc4983fe0175054989deeb0f4889d84c89f3ff15d30000004989c64c8b6c24104d8b65284d89e34d8b4c24f849c1e10849c1e9074983c9014c8b14244d89d44d3bd17215488d64241848b80017d1f1c27f0000488b5d08ff234d89dd4d89e44f8974a5fc488d642408584c8b3424498b5e08488d642408ff25660000004989c44983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0940e94dfeffff488d64240848b8c85dd1f1c27f0000488b5d08ff23f4000000|@16335,1,@2930,@7503,@7758|88,0,@10548 192,0,@16504 253,0,@9995 352,0,@10034 418,0,@9475 462,0,@10528 7758:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2931| 7759:D4,200|483b65187305ff5558cd0d52504c8b7424084d8b6e084d89ec4d8b55f849c1e20849c1ea074983ca014c8b1c244d89dd4d3bda7215488d64241048b81011d1f1c27f0000488b5d08ff234d89e64d89ed4f8b74aefc4983fe0175054989deeb0f4889d84c89f3ff15740000004989c64c8b6c24084d8b65084d89e34d8b4c24f849c1e10849c1e9074983c9014c8b14244d89d44d3bd17215488d64241048b80017d1f1c27f0000488b5d08ff234d89dd4d89e44f8974a5fc488d64241048c7c001000000c3f40000|@16335,1,@2932,@7760|60,0,@9995 159,0,@10034 7760:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2933| 7761:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2938| 7762:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2935| 7763:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2936| 7764:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2937| 7765:D3,176|483b65187305ff5558cd09a8010f85940000004c8b30488b40084d8b264d8b5e084c8b73f849c1e60849c1ee074983ce014d3be6721048b81011d1f1c27f0000488b5d08ff234e8b6ca3fc4d8d77e04c3b75107306ff5550ca09384d89f749c746f8030000004d895e104d8966084d892e4156e888ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@2939|56,0,@9995 7766:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2941| 7767:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@2942| 7768:D3,232|483b65187306ff5558ca090753415041514152a8010f85ba0000004c8b30ff7008498b0641ff7608488b5424284c8b742438415648bb2860d1f1c27f00004c8b4424284c8b4c24204c8b542418ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e85cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f4000000|@10112,1,@2943|54,0,@10547 7769:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@16335,1,@2947| 7770:D4,104|483b65187306ff5558ca0d074989d64989c54c89c74c89ce498b45004d8b4508488b0b4c8b5b08488b53184d8b6e084c8b6424084d8b4e10415453415341514150ff7424284989d14989f04889fb4c895424304989ca4c896c2438ff251f000000f4000000000000|@16531,1,@2948,@7771| 7771:D12,3792|483b65187306ff5558ca090753415041514152a8010f85400900004c8b30ff70084d8b2e4d89ec4983fd010f854b04000041ff761041ff761841ff7620488b54242848c7c001000000ff124989c64156488b5424284d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca85bd1f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424184c8930ff126a016a016a01488b942498000000488b9c24800000004c8b9424900000004c8bb424880000004156488b44242849c7c0010000004c8d4c2408ff124c8b2c24ff7424084d8b75004983fe230f851702000041ff750841ff75104d8b75184d8b2e4983fd110f85e90100004d8b66084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc030f85b70100004d89ee4d8b76084c3b742430750949c7c603000000eb0749c7c6010000004983fe030f8588010000488b54246048c7c001000000ff124989c64156488b5424604d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca85bd1f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424504c8930ff12488b54246848c7c001000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424104d8965184d89751049c745080100000049c745000300000041554983fe017d18488da4248800000048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004c8b6c24104d8b650049c7c501000000e950080000488d642478eb0c488d642478eb05488d64247848b800bfd4f1c27f0000488b5d08ff234d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b6c24304d896e184c8b6c24204d896e1049c746080100000049c7060100000041564c8b7424684c89f34983fe0175074c8b742408eb0e488b442408ff15640b00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642408488b442440488b742458488b542450488b4c24484c8bac24a00000004c8ba424980000004c8b9c24900000004c8b9424880000004c8b8c24800000004c8b442478488b7c247048897c24704c894424784989f04c898c24800000004989d14c899424880000004989ca4c899c24900000004c89a424980000004c89ac24a00000004883c468e984fbffff4d89e54983fc070f8589000000498b46086a016a014889e3ff15860a0000585b4883fb0175054989c6eb09ff156b0a00004989c64156488b0424488b5c24184c8b442410ff154a0a00004889c34c8b4424404c8b4c24604c8b5424584c8b7424504156ff742418488b442410ff151a0a0000488d64240848bb9891d4f1c27f0000ff15fd0900004989c549c7c601000000e9870400004983fd050f850d010000498b46086a016a016a01488b542478488b5c24604c8b5424704c8b74246841564c8b4424404c8d4c2408ff12415c415d415e4d8b1c244983fb217520488d642418415b4d89234d896b084d89731048c7c0010000004883c408c238004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70605000000498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c893358488b742410488b54240859488d6424104c8b6c24404c8b6424384c8b5c24304c8b5424284c8b4c24204c8b442418488b7c241048897c24104c894424184989f04c894c24204989d14c895424284989ca4c895c24304c896424384c896c24404883c408e9d7f9ffff41ff7610498b46186a016a016a01488b942480000000488b5c24684c8b5424784c8b74247041564c8b4424484c8d4c2408ff12ff3424ff742410ff7424204c8b6c24104d8b75004d89f44983fe2175324c8b6424504d89ed4d892c244c8b7424084d897424084c8b34244d89742410488d64241848c7c0010000004883c448c238006a016a014d89ed4d89e64983fc1175684d89ed4d8b75084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9780100004d89ed4983fe0d75734d89ed4d8b75084d89ed4d8b65104d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4c8934244c8b7424184c89742408e9fc0000004c8bb42490000000498b561848c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24104d895d084d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24204d895c24184d8974241049c74424080100000049c70424030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e084d89264c892c244c897424084c8b3424ff742408488b542458498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424484c8930ff12488b4424505b488d642410488b742450488b542448488b4c24404c8bac24980000004c8ba424900000004c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c246848897c24684c894424704989f04c894c24784989d14c899424800000004989ca4c899c24880000004c89a424900000004c89ac24980000004883c460e9a5f6ffff488d642410488b542448488b442418488b5c24304c8b4424084159488d6424084c8b5424304c8b6c24284c896c24384c8b34244c897424304883c430ff2241f6c5010f851a0100004d8b5d004d8b650841f6c3010f85f30000004d8b134d8b4b084983f9010f85830000004d8b1a4d8b4a084d8b52104d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89500849c700190000004d8d57d84c3b55107306ff5550ca007b4d89d749c742f8040000004d8942184d894a104d895a0849c702030000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d8913eb484d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702070000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060e9f1feffff488d64242848b83892d4f1c27f0000488b5d08ff2348c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424204c89f34983fe0175054889c3eb09ff15d50300004889c358488b742410488b54240859488d6424104c8b6c24404c8b6424384c8b5c24304c8b5424284c8b4c24204c8b442418488b7c241048897c24104c894424184989f04c894c24204989d14c895424284989ca4c895c24304c896424384c896c24404883c408e971f4ffff4983fc0175124d89ee49c7c5010000004d89f4e9f00000004d89e24983ea024d89e34983eb024c89e14883e9024c8b4c24104d8b49084989c849c1e8034983c80149d1e84f0fb60c014e8d0c4d010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d23c84983f901750949c7c103000000eb0749c7c1010000004983f1024983f90175054d89ebeb544d8d4fd84c3b4d107306ff5550ca007c4d89cf49c741f80400000049c74118010000004d8959104d89710849c701170000004d8d5fe84c3b5d107306ff5550ca00764d89df49c743f8020000004d896b084d890b4d89d44d89dd483b65187306ff5558ca0070e9f8feffff41f6c401753a4d8b5424084d89eb4983c3027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc04c3b6c245075314d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000eb18488da4248800000048b888bfd4f1c27f0000488b5d08ff2341f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15830100004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c7060300000041564c8bb424a800000049c706030000004c8bb424880000004c89f34983fe0175074c8b6c2428eb0e488b442428ff150b0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d642410488b442458488b742470488b542468488b4c24604c8bac24b80000004c8ba424b00000004c8b9c24a80000004c8b9424a00000004c8b8c24980000004c8b842490000000488bbc24880000004889bc24880000004c898424900000004989f04c898c24980000004989d14c899424a00000004989ca4c899c24a80000004c89a424b00000004c89ac24b80000004881c480000000e935f1fffff400000000|@16532,1,@2949,@7773,@6504,@7774,@7016,@7775,@7776,@7777,@7778,@7772|194,0,@10515 572,0,@10515 719,0,@16320 852,0,@16525 1269,0,@16302 2735,0,@16307 3253,0,@9475 3353,0,@16528 7772:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2956| 7773:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2950| 7774:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2951| 7775:D3,496|483b65187306ff5558ca0907415041514152a8010f85c2010000f6c3010f85b20100004c8b30ff7008ff33ff730841ff7608498b46104d8d47f04c3b45107305ff5550cd014d89c749c740f8010000004c8b34244d89304d8d4ff04c3b4d107306ff5550ca01014d89cf49c741f8010000004c8b7424104d89316a016a01488b542440488b5c2458ff742438ff7424384c8d542410ff12ff34244c8b642410488b5424584d8d77e84c3b75107306ff5550ca04104d89f749c746f8020000004c8b6c24284d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424184c8930ff124d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e10488d6424204c8b6c24084d896e0849c7060100000041564c8b7424484c8b6c244041564155488b442428488b5c24184c8b4424404c8b4c24384c8b542430e85cfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642438c21000488d642418eb05488d64241848c7c001000000c21000f400000000|@12767,1,@2952| 7776:D3,304|483b65187306ff5558ca0901534150a8010f850a0100004c8b30ff700841ff7608488b54241848c7c001000000ff124989c64156488b5424184d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca85bd1f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424084c8930ff12488b442410488b5c24204c8b442418e80effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241048c7c001000000c3f400|@10112,1,@2953|166,0,@10515 7777:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2954| 7778:D3,256|483b65187305ff5558cd0953a8010f85c5000000ff30488b40084c8b34244d8b76104d8b76284983fe01750949c7c603000000eb0749c7c60100000041566a016a014889e3e8b6ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f4000000|@10490,1,@2955|221,0,@10488 7779:D43,7808|488dbc2440ffffff483b7d187306ff5560ca0d0752534150415141524d8d6fd84c3b6d107305ff5550cd014d89ef49c745f8040000004c8b34244d89f34d8975184c8b7424084c89f24d8975104c8b6424104d89e64d8965084c8b5424184d89d44d89550041554c8b284c8d15080000004f8d54aafc41ffe2e9ab000000909090e9c4010000909090e9b8020000909090e97b040000909090e9e2040000909090e971060000909090e9db060000909090e9dd060000909090e947070000909090e9ff070000909090e901080000909090e9080a0000909090e9050c0000909090e9880c0000909090e9b3120000909090e9b5120000909090e93c130000909090e943130000909090e9df140000909090e9e5150000909090e93a170000909090e9a4170000909090ff7008ff7010488b40186a016a016a014c8b742450498b56084c8b5424684c8b7424604156488b5c243049c7c0010000004c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742470498b56084c8b9424880000004c8bb424800000004156488b442448488b5c24504c8d4c2408ff12ff34244c8b4424106a016a016a014c8bb42490000000498b56084c8b9424a80000004c8bb424a00000004156488b442460488b5c24704c8d4c2408ff12415e58488d642408498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24204c896b184c8973104c8b34244c897308488d64245848c70301000000ff15ae1d00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c210004c8b70084d8b6e104d8b65004983fc017575498b45084d8b064d8b4e084d8b5618498b5e206a016a016a014c8b742440498b56284c8b7424584c8b6c2450ff7424186a0154488304241041564155ff125b584158488d642408ff151f1d00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000498b45084d8b064d8b4e084d8b5618498b5e206a016a016a014c8b742440498b56304c8b7424584c8b6c2450ff7424186a0154488304241041564155ff125b584158488d642408ff15a21c00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642408ff7008ff70104d89f641ff36488b442408ff15561c0000488b5c2410ff15431c00004c8b7424504c8b6c2448498d5fb8483b5d107306ff5550ca01604989df48c743f8080000004c896b384c8973304c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849bee00e71f1c27f00004c8933ff15ce1b00004989c64156488b042448c7c301000000ff15b01b00004989c64983fe03742b498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d6424084883c440c21000488d6424084c8b34244c8b6424284d89e54d893424488d6424084c8b5424484c8b74244041564155ff742428488b442418488b5c24284c8b4424404c8b4c2448ff152e1b00004989c641564c8b7424504c8b6c2448498d5fb8483b5d107306ff5550ca00604989df48c743f8080000004c896b384c8973304c8b7424184c8973284c8b7424204c8973204c8b7424284c8973184c8b7424304c8973104c8b7424384c89730849be400f71f1c27f00004c8933488b442410ff15af1a00004989c64156488b442410ff15971a00004889c3488b04244c8b442408ff157d1a00004989c641564c8b3424e9b7170000488b58084c8b4010488b40186a016a016a014c8b742440498b56384c8b7424584c8b6c245054415641554c8b4c243049c7c201000000ff125b584158488d642408ff15201a00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000ff7008ff7010ff7018488b40204c8b7424104d89f54983fe01750949c7c603000000eb314d89ed4d89ee4983fd03750949c7c603000000eb1c4d89f64d8b364983fe03750949c7c603000000eb0749c7c61100000041566a016a014c8b742458498b56104c8b5424704c8b7424684156488b5c24184c8b4424384c8d4c2408ff12ff3424ff7424106a016a014c8b742478498b56104c8b9424900000004c8bb424880000004156488b442440488b5c24384c8b4424584c8d4c2408ff12ff3424ff7424106a016a016a014c8bb424a0000000498b56084c8b9424b80000004c8bb424b00000004156488b442470488b9c248000000049c7c0010000004c8d4c2408ff12ff34244c8b7424104c8b2c244d8b65004983fc0d75644d89ed4d8b650841f6c401744e41f6c40174304983fc0977214d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500eb0749c7c501000000eb1f488da424b000000048b8381fd1f1c27f0000488b5d08ff2349c7c501000000eb0749c7c50100000041554c8b64244849c7c501000000e9401300004c8b6008488b58104c8b40186a016a016a014c8b742440498b56204c8b7424584c8b6c245054415641554c89e04c8b4c243049c7c201000000ff125b584158488d642408ff150f1800004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642430e937010000488b58084c8b60104c8b40186a016a016a014c8b742440498b56484c8b7424584c8b6c245054415641554c89e04c8b4c243049c7c201000000ff125b584158488d642408ff158b1700004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d642410488b40084889d2488d642408ff124989c54d8b75004d8b45084d8b2e4983fd017539488d6424184d8b6e084d8b7610498d5fe0483b5d107306ff5550ca00614989df48c743f8030000004c8973104c896b0848c7030d000000eb2f488d6424184d8b7608498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c89730848c7031100000048c7c001000000ff15bf1600004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c21000488d642430e9d70a0000488d6424084c8b6808ff7010ff70184c8b5424484c8b4c2440498d5fb8483b5d107306ff5550ca047e4989df48c743f8080000004c894b384c8953304d89db4c895b284889d2488953204d89f64c8973184d89e64c8973104c8b7424304c89730849bea00f71f1c27f00004c89334c89e8ff15121600004989c64156488b54241848c7c001000000ff124989c64156488b5424384d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca85bd1f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124c8b7424584c8b6c2450498d5fb8483b5d107306ff5550ca00604989df48c743f8080000004c896b384c8973304c8b7424204c8973284c8b7424284c8973204c8b7424304c8973184c8b7424384c8973104c8b7424404c89730849be001071f1c27f00004c8933488b442418ff15d61400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d64244049c70615000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c210004c8b6808ff7010ff70186a016a016a014c8b742450498b56084c8b5424684c8b74246041564c89e8488b5c243049c7c0010000004c8d4c2408ff124c8b3424ff7424084c8b6c24186a016a016a014d8b65004983fc070f8597000000498b5510488b442440ff124989c64d8b2e4d8b76084d8b65004983fc0175354d8b65084d8b5d104d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89650849c745000d000000eb2b4d8b65084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500110000004c892c244c8b6c24184c896c24084c89742410e9e00000004c8b6c24384983fd03755d4d8b2e4983fd0d751a4c89f0488b5c244049c7c003000000ff154e1300004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b6424404d8965104d89750849c7450017000000eb5b4d8b2e4983fd0d751a4c89f0488b5c244049c7c001000000ff15e91200004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424404d8965104d89750849c745001700000049bea85bd1f1c27f00004c892c244c8b6c24184c896c24084c897424105b584158ff157d1200004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000488b40086a016a014c8b742438498b56504c8b7424504c8b6c244841564155488b5c242049c7c00100000049c7c1010000004c8d542410ff12415d488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000ff7008ff70104c8b7424084d8b364c8d2d080000004f8d6c35ff41ffe5eb10eb17eb1eeb25eb2ceb3deb4eeb55eb5c48c7c305000000eb5a48c7c309000000eb5148c7c311000000eb4848c7c303000000eb3f488b54245048c7c001000000ff124889c3eb2c488b54244848c7c001000000ff124889c3eb1948c7c303000000eb1048c7c311000000eb0748c7c3110000006a016a014c8b742448498b56104c8b5424604c8b7424584156488b4424184c8b4424284c8d4c2408ff12415d415e488d6424084d8b65004d8b1c244983fb0d0f85190500004d8b5c24084d8b65084983fc010f85cd0400004d8b4d104c8b24244d8b14244d89d04983fa110f855b01000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e91501000041f6c3017415488d64243848b808afd1f1c27f0000488b5d08ff234d0fb643ff4d89c24e8d0445010000004981e0ff0100004981e0810000004981f8810000007505e9980000004e8d1455010000004981e2ff0100004983e2074983fa03750949c7c203000000eb0749c7c2010000004983fa03740949c7c203000000eb1a4983f901750949c7c203000000eb0749c7c2010000004983f2024983fa037440488d6424384d8b2b4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e9570300004d89e44d89c24983f80d0f858901000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e94301000041f6c3017415488d64243848b808afd1f1c27f0000488b5d08ff2349c7c2110000004c89c848d1e849d1ea4833d249f7f24c8d144501000000490fb67bff4989f8488d3c7d010000004881e7ff0100004881e7810000004881ff810000007505e9a80000004e8d0445010000004981e0ff0100004983e0074983f803750949c7c003000000eb0749c7c0010000004983f803740949c7c203000000eb254d8b43f849c1e00849c1e8074983c8014d3bd0720949c7c203000000eb0749c7c2010000004983fa037445488d64243849d1e94f0fb62c0b4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e9be0100004d89e44983fa0f0f857b01000041f6c301743b498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430e93801000041f6c3017415488d64243848b808afd1f1c27f0000488b5d08ff2349c7c2110000004c89c848d1e849d1ea4833d249f7f24c8d1445010000004d0fb643ff4d89c14e8d0445010000004981e0ff0100004981e0810000004981f8810000007505e99d0000004e8d0c4d010000004981e1ff0100004983e1074983f901750949c7c103000000eb0749c7c1010000004983f903740949c7c103000000eb254d8b4bf849c1e10849c1e9074983c9014d3bd1720949c7c103000000eb0749c7c1010000004983f903743a488d6424384f8b6c93fc498d5fe0483b5d107306ff5550ca00604989df48c743f80300000048c74310010000004c896b0848c7030d000000eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e44c896308488d64240848c7031b0000004883c430eb36498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004c896b104d89e54c896b08488d64240848c7031b0000004883c430eb37498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b2c244c896b08488d64240848c7031b0000004883c430eb37498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b2c244c896b08488d64240848c7031b0000004883c43048c7c001000000e946060000488d642430e9940000004c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89306a016a016a014c8b742440498b56584c8b5424584c8b7424504156488b5c242049c7c0010000004c8d4c2408ff125b584158488d642408ff151e0b00004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488d64243048c7c001000000c21000ff7008ff7010488b40184c8b6c24504c8b542448498d5fb8483b5d107306ff5550ca057c4989df48c743f8080000004c8953384c896b304d89db4c895b284889d2488953204d89f64c8973184d89e44c8963104c8b7424384c89730849be601071f1c27f00004c8933ff15700a00004989c641566a016a016a014c8b742458498b56084c8b5424704c8b7424684156488b442430488b5c243849c7c0010000004c8d4c2408ff12488b1c24ff7424084c8b7424184d8b2e4983fd070f85a2000000498b5e084d8b46104883fb017d15488d64246848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15e60900004989c6498d5fe0483b5d107306ff5550ca00404989df48c743f80300000048c74310010000004c89730848c70329000000488b4424204c8b04244c8b4c2428ff15990900004989c6488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000488b4424204c8b04244c8b4c2428ff15500900004989c6488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c460c21000ff7008ff7010ff70184c8b7424104d8b364c8d2d080000004f8d6c35ff41ffe5eb10eb17eb1eeb25eb2ceb3deb4eeb55eb5c48c7c305000000eb5a48c7c309000000eb5148c7c311000000eb4848c7c303000000eb3f488b54245848c7c001000000ff124889c3eb2c488b54245048c7c001000000ff124889c3eb1948c7c303000000eb1048c7c311000000eb0748c7c3110000006a016a014c8b742450498b56104c8b5424684c8b7424604156488b4424184c8b4424304c8d4c2408ff12ff34244c8b4424106a016a016a014c8b742470498b56084c8b9424880000004c8bb424800000004156488b442440488b5c24504c8d4c2408ff12415e415d488d64240848c7c001000000e93e020000488d642408ff70084c8b6810ff70184c8b5424484c8b4c2440498d5fb8483b5d107306ff5550ca047e4989df48c743f8080000004c894b384c8953304d89db4c895b284889d2488953204d89f64c8973184d89e44c8963104c8b7424304c89730849bec01071f1c27f00004c89334c89e8ff15960700004989c54d8b75004983fe0d7574488d6424084d8b750841f6c601745341f6c60174384c3b3424488d642408750e488d64242849c7c603000000eb0c488d64242849c7c6010000004983fe03752748b8a8c0d4f1c27f0000c21000488d64243048b8381fd1f1c27f0000488b5d08ff23488d64243048b8b8c0d4f1c27f0000c210004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d64240849c70627000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c210004c8b6008488b58106a016a016a014c8b742440498b56184c8b7424584c8b6c2450415641554c89e04c8b44242849c7c1010000004c8d542410ff125b584158488d642408ff155e0600004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c21000488b5808488b40106a016a016a014c8b742440498b56404c8b7424584c8b6c2450415641554c8b44242849c7c1010000004c8d542410ff125b584158488d642408ff15e70500004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c2100041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b2c244c896b18488d6424084c8973104c8b7424204c89730848c70325000000ff15310500004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c458c2100041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff15b50400004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c8b6c243048c7c00100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca01744d89df49c743f802000000498943084d89134c89d84d89e5483b65187306ff5558ca0160ebbc48c7c30100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0940ebba4883fb0175054889c3eb09ff15940300004889c34883fb017504415eeb12488b0424ff15750300004989c6488d6424084156f6442408010f85d4000000f6842488000000010f85c60000004c8b742408498b1e4c8bb424880000004d8b164c8bb424a800000049c706030000004c8b7424584d8b264d89f64d8b5e084d89f64d8b6e104c8b4c24384d8b014d89c94d8b71084d89c94d8b49104983fa03750c49bab013d4f1c27f0000eb0a49bab0ded3f1c27f0000415641554154415341524d89c248c7c0010000004c8b842498000000ff15be0200004889c34883fb01750a584881c4b8000000eb12488b0424ff1599020000488da424c000000048bbc06ad1f1c27f0000ff15790200004989c6eb5b498d5fd0483b5d107303ff55504989df48c743f8050000004c8b7424584c8973204c8b7424384c8973184c8b7424104c8973104c8bb424880000004c89730848c70309000000488b0424ff151c0200004989c6488da424c0000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c2100041f6c60175274d8b264d8b6e084983fc03750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebd349c7c6010000004983fe030f85180100006a016a01488b442410488b5c24204989e0ff1593010000ff3424ff742410488b442440488b5c2420ff15740100004c8bb424800000004c8b6c2478498d5fb8483b5d107306ff5550ca01604989df48c743f8080000004c896b384c8973304c8b7424484c8973284c8b7424504c8973204c8b7424584c8973184c8b7424604c8973104c8b7424684c89730849be201171f1c27f00004c8933ff15fc0000004989c64c8b6c245849c7450003000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b2c244c896b10488d6424084c89730848c70305000000488b0424ff15a70000004989c6488d642420498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c21000488d6424084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e104c8b2c244d896e08488d64241049c70605000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c438c21000f40000|@16536,1,@2964,@7695,@6515,@7788,@7790,@7695,@7695,@7791,@7792,@7793,@7794,@7695,@7695,@7795,@7797,@6515,@7799,@7799,@7805,@6515,@7806,@7808,@5380,@5380,@6515,@6515,@7810,@7812,@7814,@7816,@7818,@7820,@6515,@7821,@7823,@6515,@7695,@7824,@7825,@7827,@7787|969,0,@7780 1227,0,@7781 1766,0,@10093 2354,0,@7782 2512,0,@10515 2660,0,@7783 3222,0,@10515 3775,0,@11081 4138,0,@11081 4544,0,@11081 5287,0,@7784 5407,0,@10101 5982,0,@7785 6081,0,@16534 6099,0,@10093 6120,0,@16535 7132,0,@15548 7144,0,@15120 7225,0,@10633 7571,0,@7786 7780:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2957| 7781:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2958| 7782:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2959| 7783:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2960| 7784:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2961| 7785:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2962| 7786:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2963| 7787:D4,128|483b65187305ff5558cd094883f80175044889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09684d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0940ebbc415648c7c001000000e892ffffff4889c358ff2520000000f400000000000000|@16443,1,@3006,@7695| 7788:D4,760|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a7000000909090e9a6000000909090e90d010000909090e90c010000909090e90b010000909090e90a010000909090e909010000909090e95c010000909090e95b010000909090e95a010000909090e95c010000909090e991010000909090e9d1010000909090e9d0010000909090e923020000909090e922020000909090e921020000909090e920020000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb74ff70084c8b7010ff70184c89f0488b5c2410e8f8feffff4989c64156488b442408488b5c2418e8e4feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241048c7000b000000c3488d642408eb05488d642408eb05488d642408eb05488d642408eb60ff70084c8b7010ff70184c89f0488b5c2410e86dfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64241048c70015000000c3488d642408eb05488d642408eb05488d642408e98a000000488b5808488b0424ff15130100004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3ff7008488b4010488b5c2408e8c3fdffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241048c7001f000000c3488d642408eb604c8b7008ff7010ff70184c89f0488b5c2410e86efdffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c70023000000c3488d642408eb05488d642408eb05488d642408eb05488d642408c3f4000000000000|@16537,1,@2965,@7789| 7789:D3,168|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8a89dd4f1c27f0000488b5d08ff23ff30488b4008f6c3017552ff33488b5b08e8bbffffff4989c64c8b6c24084983fd037509488d6424104c89f0c3498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c408c3488d64240848b8a89dd4f1c27f0000488b5d08ff23f4000000000000|@16369,1,@2966|33,0,@16367 147,0,@16367 7790:D3,360|483b65187306ff5558ca090141504883f801753e4883fb017523415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3488d64240848b8a89dd4f1c27f0000488b5d08ff23ff30488b4008f6c3010f85ef000000ff33488b5b086a016a014989e0e88dffffff415b415e4c8b6c24084983fd0175484d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d89ee4c8b6c24084d895d004d89750848c7c0010000004883c410c34c8b2c244d8b6d00488d6424084d8b65004d8b55084d8b4d104d8d6fd84c3b6d107306ff5550ca005e4d89ef49c745f8040000004d894d184d8955104d89650849c74500030000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244c8b6c24084d8965004d89750848c7c0010000004883c410c3488d64241048b8a89dd4f1c27f0000488b5d08ff23f40000|@16369,1,@2967|30,0,@10542 68,0,@16367 343,0,@16367 7791:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2968| 7792:D3,424|483b65187306ff5558ca09074c89d7483bc3750a48c7c001000000c228004989c649d1ee4d89c54983ed014d0faff54983c6014f8d6c31ff4c8b7424284d8d5fe04c3b5d107306ff5550ca89634d89df49c743f8030000004d896b104d89730849893b4989c549d1ed4d89c64983ee014d0fafee4983c5014c8b7424204f8d542eff4c8b7424184c8b6424104d8d6fe04c3b6d107306ff5550ca895f4d89ef49c745f8030000004d8955104d8965084d8975004c8b7424084d8d67e04c3b65107306ff5550ca896b4d89e749c74424f8030000004d896c24104d8974240849c704241b0000004c8b7424084d8d6fd84c3b6d107306ff5550ca895b4d89ef49c745f8040000004d895d184d8965104d89750849c74500250000004d8d77e84c3b75107306ff5550ca89234d89f749c746f8020000004d896e0849c7060500000041564883c0024c8b7424304c8b6c24284c8b6424204c8b5c24184c8b542410415641554154415341524989fae88ffeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c22800f40000000000|@16538,1,@2969| 7793:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2970| 7794:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2971| 7795:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2972,@7695,@7796| 7796:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2973,@4662|74,0,@9594 88,0,@4662 7797:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2974,@7695,@7798| 7798:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2975,@4662|74,0,@9594 88,0,@4662 7799:D19,3304|483b65187306ff5558ca090350415041514c8b334c8d2d080000004f8d6cb5fc41ffe5e9ab000000909090e9a3000000909090e9ac000000909090e993000000909090e98b000000909090e9ac000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e99f000000909090e953000000909090e94b000000909090e943000000909090e99a000000909090e9a9000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e994000000909090e9030000009090904c8b6c240849c7c601000000e97f0b00004c8b7308ff73104c8b64241049c7c501000000e9c90a0000ff73084c8b7310ff73184c8b64241849c7c501000000e9e30900004c8b7308ff7310ff73184c8b64241849c7c501000000e9fd080000488d642408415e48c7c0010000004883c408e99a0800004c8b7308ff731048c7c001000000e914080000488b5b0848c7c0010000004c8b0424ff15070c00004989c6415648c7c001000000488b1c244c8b442410ff15e40b00004989c64983fe0175114c8b6c241049c7c601000000e98b040000488d6424104d8b3641ff36498b46086a016a014889e3ff15a60b0000ff34244c8b7424104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b24244d89650041554c8b6c24204d8b65004983fc05751a4d89ed41ff750849c7c50300000049c7c401000000e9c20000004c8b74242848c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e0849c70611000000498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24304c896b184c8b2c244c896b10488d6424084c89730848c703230000004883c430ff25820a00004c3b642410720b4155ff742438e98f0000004d89e24983c2024d89e349c1eb034983cb0149d1eb4f0fb61c1e4e8d1c5d010000004c89e14883e10f4883f97f720949c7c101000000eb1149c7c10200000048d1e949d3e14983c9014d23d94983fb01750949c7c303000000eb0749c7c3010000004983f3024983fb0375054d89ebeb0749c7c3010000004d89d44d89dd483b65187306ff5558ca0070e95ffffffff60424010f85060100004c8b2c244d8b75004d89ed41ff75084d8b264d89e54983fc010f85940000004d8b5e104d8b6e184d8b76204c8b6424184d3be375704c3b6c242875624c8b6c24104983fd0375504d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c410eb1a488d642418eb05488d642418eb05488d64241849c7c601000000eb514983fd03753f498b4618ff150c0900004989c64c23358a0800004c3b357b0800007514415d4c892c24483b65187303ff5558e90cffffff488d64241849c7c601000000eb0c488d64241849c7c601000000eb0c488d64241049c7c6010000004983fe017516488d6424084c8b74242848c7c001000000e9c40000004d8b36498b1e4d8b66084d8d6fd84c3b6d107306ff5550ca08104d89ef49c745f8040000004c8b7424384d8975184c8b34244d897510488d64240849c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e48c7c0010000004883c43841f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff25d507000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24204d896e0849c70611000000498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8b6c24304c896b184c8b2c244c896b10488d6424084c89730848c703230000004883c430ff251707000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6424084d89e54d89660849c706290000004d89ed41f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff154c0600004989c6eb0049c7c5010000004c8b64240841f6c40175374d8b5424084d89eb4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34983fd010f8c990000004983fd017d07488d642428eb7c4c3b2d700500007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca00684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb384d89da4983ea10eb2a488d64242848b87095d3f1c27f0000488b5d08ff23488d64242848b8289cd4f1c27f0000488b5d08ff234d3bd3751e49c7c30100000049c7c10300000049c7c20100000049c7c001000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca007cebba4d3bc50f8dac0000004c89cf490bfb4981f901010000755a48d1ef4c89d648d1ee41883c344c89c14883c1027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c89d24883c20248c7c70100000048c7c6030000004989c84989d24989f14989fb483b65187306ff5558ca007feb8e4c89c14883c1027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234b8d7409ff4c89d24989c84989d24989f14989fb483b65187306ff5558ca007fe94bffffff4983fb017502eb0a49d1eb49d1ea47881c1441806424ffbf4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d8963084d892b4d89dd498d5fd8483b5d107306ff5550ca00604989df48c743f8040000004c8b6424204c8963184c896b104c89730848c70323000000584883c420ff25c803000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424104c89f34983fe0175054989c0eb09ff15610300004989c0488b4424185b41594883c410e91df6ffff41f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0940ebbaff25f902000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242849c7c0010000004c8b4c2418e871f5ffff4989c64156488b442430488b5c241849c7c0010000004c8b4c2420e851f5ffff4989c6498d5fd8483b5d107306ff5550ca00404989df48c743f8040000004c8b6c24104c896b184c8973104c8b34244c897308488d64240848c7031500000058488d642428ff252602000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242849c7c0010000004c8b4c2418e8a6f4ffff4989c64156488b442430488b5c241049c7c0010000004c8b4c2420e886f4ffff4989c6498d5fd8483b5d107306ff5550ca00404989df48c743f8040000004c8973184c8b34244c897310488d6424084c8b7424104c89730848c7030b00000058488d642428ff255301000041f6c401753f4d8b0c244d8b5c24084d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d896a084d890a4d89d54d89dc483b65187306ff5558ca0070ebbb41554c89f3488b44242049c7c0010000004c8b4c2410e8dbf3ffff4989c6498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24084c896b104c89730848c7030500000058488d642420ff25ad00000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca08744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0860ebbc41564889d8488b5c24084c8b442418ff154c0000004889c358488d642418ff2535000000f400000000ffffffffffffff01010000c000000000010000c000000000|@16539,1,@2976,@7695,@7801,@7695,@7695,@7695,@7695,@7802,@7695,@6504,@7695,@7695,@7640,@7695,@7803,@7804,@7800|1824,0,@9475 2007,0,@14645 2028,0,@16360 2165,0,@9475 2242,0,@9475 7800:D3,296|483b65187306ff5558ca09014883fb01750848c7c001000000c3ff33488b5b084d8b304d89f5493bc67c0d488d64240848c7c001000000c34d8b70084883f8017d0a488d642408e9c8000000493bc50f8dba0000004989c549c1ed034983cd0149d1ed4f0fb6342e4e8d3475010000004889c14883e10f4883f97f720949c7c501000000eb1149c7c50200000048d1e949d3e54983cd014d23f54983fe01744f4883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d6424084883c002711048b8d0c6d0f1c27f0000488b5d08ff23e9f1feffff488d64240848b818a9d3f1c27f0000488b5d08ff23f4000000|@16542,1,@2981|173,0,@9475 252,0,@9475 278,0,@14764 7801:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@16375,1,@2977| 7802:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@2978| 7803:D3,1032|483b65187305ff5558cd094989c64d89f449c7c5ffffffff41f6c40175274d8b14244d8b5c24084d3bd57e02eb034d89ea4d89d54d89dc483b65187306ff5558ca0870ebd34983c502711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d02eb774c3b2d960300007f6e4c89e84883c07e49c7c48100000048d1e849d1ec4833d249f7f44c8d1c45010000004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca08684d89e749d1ea4d895424f841c64424ff414e8d1cddf9ffffff4983fb017502eb1e4d89da4983ea10eb1048b87095d3f1c27f0000488b5d08ff234d3bd375184d89eb4983c30e49c1eb034983cb0149c7c201000000eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca087cebc04d3bd37202eb234d89d149d1e943c6040c004d89d14983c1024d89ca483b65187306ff5558ca087cebd641f6c6010f8584000000498b0e4d8b5e084883f9017d02eb65493bcd7d604989c949c1e9034983c9014d89ca49d1ea4f0fb614144e8d1455010000004883e10f4883f97f720949c7c001000000eb1149c7c00200000048d1e949d3e04983c8014d0bd049d1ea49d1e94788140c4d89de483b65187306ff5558ca0870eb8248b84896d3f1c27f0000488b5d08ff234983fd010f8c8d0000004983fd017d02eb754c3b2dfd0100007f6c4c89e84883c07e49c7c68100000048d1e849d1ee4833d249f7f64c8d1c45010000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca08384d89f749d1ea4d8956f841c646ff414e8d1cddf9ffffff4983fb017502eb2e4d89da4983ea10eb2048b87095d3f1c27f0000488b5d08ff2348b8289cd4f1c27f0000488b5d08ff234d3bd3751e49c7c20100000049c7c10300000049c7c30100000049c7c001000000eb234d89d149d1e943c6040e004d89d14983c1024d89ca483b65187306ff5558ca087cebba4d3bc50f8df50000004c89c748c1ef034883cf0148d1ef490fb63c3c488d3c7d010000004c89c14883e10f4883f97f720948c7c601000000eb1148c7c60200000048d1e948d3e64883ce014823fe4883ff0174084c89cf490bfaeb034c89d74981f901010000755848d1ef4c89de48d1ee41883c364c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c84989d34989f14989fa483b65187306ff5558ca087fe940ffffff4c89c14883c102711048b8d0c6d0f1c27f0000488b5d08ff234b8d7409ff4c89da4989c84989d34989f14989fa483b65187306ff5558ca087fe902ffffff4983fa017502eb0d4d89d449d1ec49d1eb4788241e418066ffbf4c892b4c89730848c7c001000000c3f400ffffffffffffff01ffffffffffffff01|@16540,1,@2979|77,0,@9475 220,0,@14645 468,0,@14649 619,0,@14645 635,0,@16360 847,0,@9475 922,0,@9475 7804:D3,888|483b65187306ff5558ca09014883fb017501c34c8b33488b5b084d8b2e4983fd1175334d8b66084d89e54d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03750c4d89ee4d8b76084d89c5eb0848c7c001000000c341f6c50175614d8b5d004d8b65084d8b134983fa03753f4d8b53104d3bd6750949c7c203000000eb0749c7c2010000004983fa0375204d8d77f04c3b75107306ff5550ca09094d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0961eb9949c7c60100000041f6c6010f85940200004d8b264d89e54d8b1c244983fb03754c4d8b6424184d8b1c244983fb1775344d8b5c24084d8b6424184d8b1b4983fb1175184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f85270200004d89ee4d8b76184d8b6e084d8b76104d8b6d08a8010f859e0100004c8b184d8b234d8b5b084d3be57505e9e00000004d8b0c244d89ca4983f901753a4d8b55004983fa01752b4d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb05e99e000000e93b0100004d89d14983fa0375354d8b55004983fa0375264d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037502eb60e9fd0000004d89ca4983f90575374d8b55004983fa0575284d8b6424084d8b55084d3be2750949c7c403000000eb0749c7c4010000004983fc037402eb02eb20e9bd0000004d89d44983fc070f85b00000004d8b65004983fc070f85a200000041f6c3010f85880000004d8b234d3bf47e0949c7c403000000eb0749c7c4010000004983fc03757a4d8d67e84c3b65107306ff5550ca08694d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca08314d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca08414989c748c740f8010000004c8930e91cfdffff48b8504ad1f1c27f0000488b5d08ff2348c7c001000000c34d8d67e84c3b65107306ff5550ca08614d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca08314d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca08414989c748c740f8010000004c8930e996fcffff48c7c001000000c3f40000000000|@16541,1,@2980|742,0,@10398 7805:D3,264|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64d8b364d8b2e4983fd0175344d8b6e084d8b66104d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000eb2a4d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424184883c0027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442408e830ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f400000000|@10111,1,@2982|179,0,@9475 7806:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2983,@7695,@7807| 7807:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2984,@4662|74,0,@9594 88,0,@4662 7808:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2985,@7695,@7809| 7809:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2986,@4662|74,0,@9594 88,0,@4662 7810:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2987,@7695,@7811| 7811:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2988,@4662|74,0,@9594 88,0,@4662 7812:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2989,@7695,@7813| 7813:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2990,@4662|74,0,@9594 88,0,@4662 7814:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2991,@7695,@7815| 7815:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2992,@4662|74,0,@9594 88,0,@4662 7816:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@2993,@7695,@7817| 7817:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@2994,@4662|74,0,@9594 88,0,@4662 7818:D4,440|483b65187306ff5558ca09014989c54889d841504d8b75004c8d25080000004f8d64b4fc41ffe4e9ab000000909090e9aa000000909090e9a9000000909090e9a8000000909090e9a7000000909090e9a6000000909090e9c1000000909090e9c0000000909090e9bf000000909090e9be000000909090e9bd000000909090e9c6000000909090e9c5000000909090e9c4000000909090e9c3000000909090e9cc000000909090e9d5000000909090e9d4000000909090e9dd000000909090e9dc000000909090e9db000000909090e9da000000909090488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb284d8b751041ff75184889c34c89f04c8b442408e8eefeffff4889c3584158e9e3feffff488d642408eb05488d642408eb05488d642408eb05488d642408eb164d8b6d104889c341584c89e8e9b6feffff488d642408eb05488d642408eb05488d642408eb274d8b6d085b4989c04c89e8ff25600000004d8b6d104889c341584c89e8e97ffeffff488d642408eb164d8b6d084889c341584c89e8e967feffff488d642408eb05488d642408eb05488d642408eb05488d642408c3f4000000|@16543,1,@2995,@7819| 7819:D3,232|483b65187306ff5558ca0901a8010f85cb000000f6c3010f85c000000041f6c0010f85b60000004c8b28488b40084c8b23488b5b084d8b304d8b40084d8b55004d89d34d8b0a4983f91175544d8b52084d8b124983fa05750949c7c203000000eb0749c7c2010000004983fa0375314d89dd4d8b6d084d8b6d084d8b24244d8b6424084d3bec750949c7c503000000eb0749c7c5010000004983fd037502eb0749c7c6010000004156e852ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3eb0048c7c001000000c3f4|@16544,1,@2996| 7820:D3,80|483b65187305ff5558cd01a8017533488b4008e8e8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c348c7c001000000c3f40000000000|@10112,1,@2997| 7821:D4,576|483b65187306ff5558ca090753415041514152a8010f85150200004c8b28ff70084d8b750041ff750841ff3641ff760841ff7610488b54244048c7c001000000ff124989c64156488b5424404d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b2c244d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049bca85bd1f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124c8b7424604c8b6c24584c8b642468498d5fb8483b5d107306ff5550ca00704989df48c743f8080000004c8963384c8b6424304c8963304c8b6424484c8963284c896b204c8973184c8b7424404c8973104c8b7424384c89730849be104c71f1c27f00004c8933488b442408ff15f50000004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d6424184c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e801feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f4|@10112,1,@2999,@6515|185,0,@10515 333,0,@7822 7822:D3,56|483b65187305ff5558cd054989d6498b5608498b5e104d8b46184d8b4e204d8b56284d8b6e304d8b66384154ff7424084c896c2410ff22f4|@16430,1,@2998| 7823:D3,296|483b65187305ff5558cd094989c54889d84d8b75004c8d25080000004f8d64b4fc41ffe4e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e984000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e978000000909090e953000000909090e94b000000909090e943000000909090e967000000909090e967000000909090e92b000000909090e966000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c34d8b751041ff75184889c34c89f0e818ffffff4889c358e90fffffff4d8b6d104889c34c89e8e900ffffff48c7c003000000c34d8b6d104889c34c89e8e9e9feffff4d8b6d084889c34c89e8e9dafefffff400|@16543,1,@3000| 7824:D3,152|483b65187305ff5558cd01a80175794c8b30488b40084d8b364d8b2e4d8b66084d8b5e104d8d77d84c3b75107306ff5550ca01384d89f749c746f8040000004d895e184d8966104d896e0849c706030000004156e8a7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@10112,1,@3001| 7825:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@3002,@7695,@7826| 7826:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@3003,@4662|74,0,@9594 88,0,@4662 7827:D5,208|483b65187306ff5558ca09014883f80175544c8b334983fe0d7547ff7308488b43104c89c3ff15c50000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c349c7c601000000a80175404c8b184c8b68084d8d67e84c3b65107306ff5550ca09694d89e749c74424f8020000004d897424084d891c244d89e64c89e8483b65187306ff5558ca0941ebbc415648c7c001000000e841ffffff4889c358ff251f000000f4000000000000|@16443,1,@3004,@7695,@7828| 7828:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@3005,@4662|74,0,@9594 88,0,@4662 7829:D4,616|483b65187306ff5558ca0d074989c652534150415141524d8b6e0841f6c5010f85b001000041ff7500498b0641ff76106a016a016a014c8b742448498b56084c8b7424584156488b5c244049c7c0010000004c8d4c24084c8b542430ff12ff3424ff7424106a016a016a014c8b742470498b56084c8bb424800000004156488b442450488b5c246849c7c0010000004c8d4c24084c8b542458ff12415d58488d6424086a016a014d8b75004983fe0d0f85830000004d8b750841f6c601744b41f6c60174304d89f549d1ed4c8b7424604983ee014d0fafee4983c5014c8b7424384f8d742eff48c70424010000004c89742408eb41488d64247048b8381fd1f1c27f0000488b5d08ff234d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e4c8934244c8b7424384c89742408eb2c4d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892e4c8934244c8b7424384c89742408415d415c4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e084c8b6c24084d892e41564c8b7424084c89f34983fe0175054989c6eb09ff15d20000004989c64c8b6c24484c8b24244d896500488d6424084d89750848c7c0010000004883c460c20800498b0641ff76106a016a016a014c8b742440498b56084c8b7424504156488b5c243849c7c0010000004c8d4c24084c8b542428ff12415d415e488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b1c244d895c2410488d64241049c7442408010000004d892c24415d488d6424084d8965004d89750848c7c0010000004883c410c20800f4|@16545,1,@3007,@7830|252,0,@10093 7830:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3008| 7831:D4,312|483b65187306ff5558ca09074989db4150415149c7c5010000004d8d77f04c3b75107306ff5550ca012c4d89f749c746f80100000041c646ff404d892e41564d8d67d04c3b65107306ff5550ca010c4d89e749c74424f80500000041c64424ff4049c74424200100000049c74424180100000049c74424100100000049c74424080100000049c7042401000000498d5fe8483b5d107306ff5550ca011c4989df48c743f802000000c643ff4048c743080100000048c7030100000049be385771f1c27f00004d89e549895d204d8955184d895d104c8b1c244d895d084d89750041806424ffbf49bed85e71f1c27f00004989dd4d8965084d8975008063ffbfff154b0000004989c44c8b34244d8b36488d642408415d4d8965004c8b24244d896508488d6424084d89751048c7c001000000c3f400000000|@16557,1,@3020,@6515|189,0,@7832 232,0,@7836 7832:D8,976|483b65187305ff5558cd0d5250534c8b7424104d8b66084d89e541ff34244d89f649c74500010000004d89f6498b5e20488b442410ff15cd0300004989c641564c8b6c24204d8b75084d89f44d8b364c8b5c24084983fb03750d4d89e549c7450003000000eb004983fe037502eb794c8b74241841f6c60175314d8b264d8b6e084d8b6424104d8b6424284983fc01750949c7c603000000eb184d89ee483b65187306ff5558ca0040ebc949c7c6010000004983fe037502eb2e4c8b74241841f6c60175164d8b264d8b6e084d8b6424104d8b642418e94102000049c7c6010000004983fe0375254c8b7424104c8b2c244d892e488d64240849c746080100000048c7c0010000004883c420c3488b0424ff15e90200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d8974240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892641564d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15140200004989c6eb00498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7001f0000004c8b342448c7c30100000041f6c601752a4d8b264d8b6e084d8b6424084c3be37e02eb034989dc4c89e34d89ee483b65187306ff5558ca0940ebd04883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff236a016a014c8b7424304d8b46104d89f64d8b56184989e1ff1561010000488b1424ff74240848c7c001000000ff124989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004c8b2c244d896810488d6424184d89700849c7000d0000004c8b7424204d8b760849c70603000000488b042448c7c301000000ff15f10000004989c6488d6424084c8b6c240849c74500010000004d89750848c7c0010000004883c420c341f6c401751f4d8b14244d8b5c24084d8b0a4983f905750b4d8b52084c8b4c2418eb38eb2d49c7c4010000004983fc03750c49c7c603000000e988fdffff4d89ee483b65187306ff5558ca0040e951fdffff49c7c403000000ebd141f6c101752a498b394d8b4108488b7f08493bfa750949c7c203000000eb184d89c1483b65187306ff5558ca007eebd049c7c2010000004983f2024983fa037502ebb44d89dc483b65187306ff5558ca0070e94efffffff400|@16547,1,@3010,@7834,@6495,@6504,@7835,@7833|612,0,@9475 7833:D4,344|483b65187305ff5558cd0953a8010f85300100004c8b30ff700841ff3641ff76084d8b7610498b0641ff760841ff761041ff761841ff762041ff762841ff763041ff7638488b5c2450ff15210100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b24244d896538488d6424084c8b24244d896530488d6424084c8b24244d896528488d6424084c8b24244d896520488d6424084c8b24244d896518488d6424084c8b24244d896510488d6424084c8b24244d896508488d6424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e8ebfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@10112,1,@3013,@6515| 7834:D4,240|483b65187306ff5558ca0901534150a8010f85cb0000004c8b30ff700841ff3641ff7608488b442418488b5c242049c7c001000000ff15cd0000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c706030000004156488b5c24184883c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b442410e851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3488d64241048c7c001000000c3f4|@16548,1,@3011,@5380|146,0,@9475 7835:D3,176|483b65187305ff5558cd01a8010f858e0000004c8b30488b40084d8b76084d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e88effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3012| 7836:D5,600|483b65187305ff5558cd05524c8b284d89ee4983fd1f0f85830000004c8b7008ff7010488b5c24084c8b43084c89f0ff15430200004989c64156488b442408488b5c2410ff15260200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64241849c7061f000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34983fe190f859f0100004c8b68084d8b75184983fe010f85800100004d8b75284983fe03750949c7c603000000eb0749c7c6010000004983fe030f85550100004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c70601000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89306a016a014c8b742410498b56084889e3ff12415c415d488d6424084983fc01757241f6c501755c4d8b5d004d89de4d8b65084d8b1b4983fb0375184983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0375234d8b7618498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b898c4d4f1c27f0000488b5d08ff234d8b34244d8b6424084983fc01754f4983fd0175494d8b6e104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b898c4d4f1c27f0000488b5d08ff23488d642408eb05488d64240848c7c001000000c3488d64240848c7c001000000c3f40000|@16552,1,@3014,@6515,@7837|440,0,@16549 550,0,@16549 7837:D4,80|483b65187306ff5558ca0901534150a801752bff30488b4008488b5c24104c8b442408e8d8ffffff4889c3584c8b4424084159488d642408ff252a000000488d64241048c7c001000000c3f400000000|@10943,1,@3015,@7838| 7838:D9,960|483b65187306ff5558ca09034c89ca534c8b304d89f54983fe010f8592000000ff7008ff7010ff7018488b40204c89c3ff15ca0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e204c8b2c244d896e18488d6424084c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34d89ee4983fd057562488b40084c89c3ff15300300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34983fe070f85a3000000488b40086a016a014889e3ff124c8b2c24ff74240841f6c501740948c7c001000000eb4c4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424184c89f34983fe0175054889c3eb09ff15400200004889c34883fb017506584883c418c3584883c418ff251e020000ff7008ff7010488b40184c8b304983fe190f85600100004c8b68084d8d77e04c3b75107306ff5550ca04204d89f749c746f8030000004d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca04404989c748c740f80200000048c74008010000004c89306a016a014889e3ff12415c415d4983fc0175274c8b34244c89f34983fe017509488d6424084c89e8c34c89e84889db488d642408ff25630100004d8b34244d8b6424084983fc010f859c0000004983fd010f858b0000004d8b2e4d8b66084d8b76104d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849c703190000004d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3488d642408eb05488d64240848b868c5d4f1c27f0000488b5d08ff234c89c3ff158e0000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c3f4000000000000|@16556,1,@3016,@6515,@7840,@7841,@7839,@6515,@6515|819,0,@16553 7839:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3019| 7840:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3017| 7841:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3018| 7842:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@16335,1,@3021| 7843:D5,136|483b65187306ff5558ca0901504c8b34244983fe017559488d6424084c8b334983fe0d7547ff7308488b43104c89c3ff15730000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c7000d000000c34889d8c348c7c001000000e884ffffff4889c358ff251a000000f400|@16443,1,@3022,@7695,@7844| 7844:D4,224|483b65187305ff5558cd094883f80175794c8b334983fe05750848c7c001000000c34d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355a000000750a488d642408e956ffffffe851ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@11088,1,@3023,@4662|74,0,@9594 88,0,@4662 7845:D3,40|49bb20d57f0bc37f00004d8b1b4989e5488b65304881ec900000004889c741ffd34c89ecc3f40000|@16561,1,@3025|2,0,@19881 7846:D3,40|49bb40d57f0bc37f00004d8b1b4989e5488b65304881ec900000004889c741ffd34c89ecc3f40000|@16562,1,@3026|2,0,@19882 7847:D4,128|483b65187305ff5558cd05524c8b3424498b561048c7c001000000ff126a016a016a016a016a016a014c8b742430498b5e084989e0ff155d000000415e415d415c415b415a4159488d642408498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930c3f4|@16563,1,@3027,@7848| 7848:D11,1072|488dbc2400ffffff483b7d187306ff5560ca09015041504c8b336a016a016a016a016a016a014156ff3552040000f64424080175774c8b742408498b064d89f641ff76086a016a016a016a01488b5c24284989e04c8b4c2470ff1519040000415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb824c8b34244d8b7608488d6424084d8b2e4c896c24084d8b6e084c896c24104d8b6e104c896c24184d8b6e184c896c24204d8b6e204c896c24284d8b76284c897424304c8b742408ff742410ff742420ff742430ff742440ff74245041566a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff153e0300004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424306a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15bc0200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424306a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff153a0200004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ff7424586a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15b80100004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ffb424800000006a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15330100004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8fff3424ffb424800000006a01f644240801756a4c8b6c24084d89ee41ff75004d89f6498b46084c8b3424498b1eff15ae0000004989c54d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424084d897424084c8b34244d893424488d6424084c8924244c896c2408483b65187303ff5558eb8f415e4c8bac24e00000004c8b6424684d8965004c8b6424084d8965084c8b6424504d8965104c8b6424204d8965184d8975204c8b7424384d89752848c7c0010000004881c4f0000000c3f400|@16565,1,@3028,@7849,@7850,@7851,@7852,@7853,@7854,@7855,@16564| 7849:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3029| 7850:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3030| 7851:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3031| 7852:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3032| 7853:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3033| 7854:D3,168|483b65187305ff5558cd09a8010f8585000000ff30488b40084c8b34244d8b2e493bdd7507488d642408eb334c8b334e8d3475010000004d8b65004c89e14e8d2465010000004d3bf47519488d7308498d7d08483bc9f3a6750a488d642408e99cffffffe897ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@9893,1,@3034| 7855:D8,1824|488dbc2448ffffff483b7d187306ff5560ca090341504151ff33ff73084c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d89f541ff76184d89ed4d89ee41ff75204d89f641ff7628ff7310ff73184c8b284d89ee4983fd030f85ac000000488b4008488b1c24ff15dd0600004c8b6c24184d89ee4983fd0175054989c5eb0c4c89f3ff15b90600004989c54d8d77c84c3b75107306ff5550ca00204d89f749c746f8060000004c8b6424104d8966284d896e204c8b6c24204d896e184c8b6c24284d896e104c8b6c24304d896e084c8b6c24384d892e4c8b6c24584c8b6424484d8965004d8975084c8b7424084d8975104c8b34244d897518488d64241848c7c0010000004883c448c34983fe01753d4c8b68084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d8966084c8b6424484d89266a016a0141554156e9a4040000ff70084c8b70104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b6424504d89266a016a0141554156f6442408010f852a0200004c8b6c24084d8b75004d89ed41ff75084d8b6e084d8b65004983fc010f85f001000041ff750841ff751041ff76104c8b6c24204d89ee41ff75004d89f641ff76084c8bb424a80000004d8b2e4983fd0d751a4c89f0488b5c240849c7c001000000ff153d0500004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424084d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24184d8b65004983fc03750d4d89ed4d8b6d084d8b6d00eb074d89ed4d8b6d084d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24204d895d104d89650849c74500030000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24104d895c24104d896c24084d8934244c8b7424084983c6027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b6c24204c896424284c896c2430483b65187303ff55584883c428e9e3fdffff488da4249000000048b8c0c7d4f1c27f0000488b5d08ff234c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b7424084c8b5c24104983fb017514488d64241849bd4882d1f1c27f0000e9c0000000488d64241849c7c4010000004d89dd41f6c50175364d8b4d084d89e24983c2027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d4483b65187306ff5558ca0078ebc44c3b25b70200007c15488d64246848b85082d1f1c27f0000488b5d08ff234c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02484d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab49c7c4010000004983fb010f85f5000000418065ffbf41554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424184d8965184c8b24244d8965104c8b6424104d89650849bce07b71f1c27f00004d89650041554d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004c8b6c24584d8968084d89306a016a01488b442420488b5c24104989e14c8b542478ff15e7010000415b415c4c8b7424084d8b6ef849c1e50849c1ed074983cd014983ed014c8b7424204d03f57115488d64247848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24704d895d004d8965084d8975104c8b34244d897518488d64240848c7c0010000004883c470c34d8b134d8b4b084f8954a5fc4d89e24983c2027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078e9c0fefffff644240801756d4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b8c24880000004c8b542438ff1503010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8c4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6424084c8b6c24104d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b5c24284d895e284c8b5c24304d895e204d896e184c8b6c24404d896e104c8b6c24484d896e084c8b6c24504d892e4c8b6c24704d8965004d8975084c8b7424204d8975104c8b7424184d89751848c7c0010000004883c478c3f4000000000000ffffffffffffff01|@16569,1,@3036,@7858,@7863,@5380,@7874,@7857|822,0,@9475 960,0,@16566 1026,0,@10817 1080,0,@9475 1130,0,@10818 1288,0,@7856 1415,0,@9475 1499,0,@9475 7856:D3,112|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b62104d89e64d8b6424f849c1e40849c1ec074983cc014d3bec721048b89011d1f1c27f0000488b5d08ff234b8b44aefcc3f4|@16568,1,@3035|42,0,@9475 91,0,@9998 7857:D4,176|483b65187305ff5558cd0953a8010f858a0000004c8b30ff700841ff76084d8b7610498b06488b5c2410ff15980000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e891ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f400000000|@10112,1,@3056,@7875| 7858:D4,1256|483b65187306ff5558ca090741504152ff7018ff7028ff33ff73084d8b314983fe0d751a4c89c8488b5c240849c7c001000000ff15c70400004989c6eb374d8d77d84c3b75107306ff5550ca00024d89f749c746f80400000049c74618010000004c8b6c24084d896e104d894e0849c7061700000041564c8b7424184d8b364983fe017515488d64243848b80895d1f1c27f0000488b5d08ff234d8b364d8b2e41ff75004d8b551041ff7608498b561841ff76204d8b3241ff720841ff72104d8b5a184d8b62204d8b42284d8d4fd84c3b4d107306ff5550ca04794d89cf49c741f8040000004d8941184c8b14244d8951104c8b5424504d89510849ba708271f1c27f00004d89114d8d57e04c3b55107306ff5550ca047b4d89d749c742f8030000004d894a104d89620849bc308371f1c27f00004d89224d8b264983fc030f85b20000004d8b66084d8b76184d8b2424498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49b94882d1f1c27f0000eb554c89f74889f94c8d0cbd0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca467d4d89cf48d1ef498979f841c641ff404c89cf48d1e948c7c001000000f348ab4c89f14c89cf48d1e9f348a5418061ffbf4d8d77e04c3b75107306ff5550ca043f4d89f749c746f8030000004d894e104d89660849c70601000000eb004d8d67c84c3b65107306ff5550ca046d4d89e749c74424f8060000004d894424284d895424204d895c24184c8b1c244d895c24104c8b5c24084d895c24084d8934244d8b75084d8b5d184d8d6fd84c3b6d107306ff5550ca04594d89ef49c745f8040000004d895d184d8965104d8975084c8b7424204d8975004c8b324c8b62084c8b52104c8b4a184c8b5a20488b5228498d7fc0483b7d107306ff5550ca047f4989ff48c747f807000000488b742450488977304c8947284158488d6424084c8947204c8b4424104c894718488957104c89570849b8808371f1c27f00004c89074d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89580849bb788771f1c27f00004d89184d8b1e4983fb030f85b40000004d8b5e084d8b76184d8b1b498b36488b5ef848c1e30848c1eb074883cb014883fb01750c48bf4882d1f1c27f0000eb584889df4889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca4e3f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889d94c89f748d1e9f348a5418066ffbf4c89f74d8d77e04c3b75107306ff5550ca843f4d89f749c746f80300000049897e104d895e0849c70601000000eb004d8d5fc84c3b5d107306ff5550ca04774d89df49c743f806000000498953284d8943204d894b184d8953104d8963084d89334d8d67e84c3b65107306ff5550ca00284d89e749c74424f8020000004c8b7424184d8974240849c70424030000004d8d77d04c3b75107306ff5550ca00384d89f749c746f805000000415a4d8956204d895e184d896610415c4d8966084d892e4c8b6424184983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23488d6424104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8975084c8b7424184d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f802000000415b4d895e084d892e4c8b6c24204d8965004d89750848c7c0010000004883c428c3f400|@16571,1,@3041,@5380|140,0,@10926 253,0,@7859 301,0,@7860 364,0,@10817 718,0,@7861 766,0,@7862 828,0,@10817 1134,0,@9475 7859:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c85dd1f1c27f0000488b5d08ff23f4000000000000|@16570,1,@3037|42,0,@9475 95,0,@9475 131,0,@10528 7860:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@3038,@5098| 7861:D4,968|483b65187305ff5558cd054989d64d8b6e104d89ec493bc57c254989c54d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c5014d8b7608e9260300004d8b66284d89e5493bc47c284989c44d2be5711048b8d0c6d0f1c27f0000488b5d08ff234983c4016a016a016a014d8b6e20eb06498b5630ff2241f6c5010f85cd0200004d8b55004d8b5d084983fc010f85860200004d8b2a4c892c244d8b6a084c896c24084d8b6a104c896c2410415d415c415b4d8b034d8b53084d8b4b10498b7e184989fb483b3d130300007502eb364c89df4d8b1b4e8d1c5d010000004983fb01752a49bbd8c8d0f1c27f0000488d7708498d7b0848c7c100000000483bc9f3a67402eb084d89c3e99f0100004d8b5e184d8b1b4a8d1c5d010000004883fb01750f48bf00d9d0f1c27f0000e9a50000004889df4883c7024889f84883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d344501000000483b355d0200000f87a20100004889f24c8d1c950400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cac8774d89df48d1ea498953f841c643ff414883ee0249c744b3fc0000000048d1ef49893b4d8b76184889d9498d7608498d7b0848d1e9f3a44989de4983c61049d1ee43c604332e418063ffbf4c89df4c8b374e8d3475010000004d8b184a8d1c5d010000004983fe0175084d89c3e9b20000004883fb0175084989fbe9a4000000498d741eff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15800100000f87bd0000004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cacc774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89f1488d7708498d7b0848d1e9f3a44983c6104889d9498d700849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8d77e04c3b75107306ff5550ca003e4d89f749c746f8030000004d894e104d8956084d891e498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8970104c8960084c8928c348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234d89e24983ea027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e929fdffff488d64241848b8c85dd1f1c27f0000488b5d08ff2341f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c85dd1f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@16570,1,@3039,@9493|36,0,@9475 85,0,@9475 231,0,@9493 294,0,@9571 765,0,@9487 781,0,@9487 811,0,@9475 855,0,@10528 900,0,@9475 936,0,@10528 7862:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@3040,@5098| 7863:D5,720|483b65187306ff5558ca090753415141524d8b204d8b700841ff3641ff760841ff761041ff761841ff76204d8b5e284c8b284d89ee4983fd017515488d6424284c8b70104d8b3641564150e9de0100004983fe037512488d6424284c8b700841564150e92a0100004c8b68104d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89266a016a0141554156f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24604c8b542470ff1528020000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c897424104c8b6424084c8b6c24104d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d896e284c8b6c24184d896e204c8b6c24204d896e184c8b6c24284d896e104c8b6c24304d896e084c8b6c24384d892e4c8b6c24484d8965004d89750848c7c0010000004883c458c3f64424080175694c8b742408498b064d89f641ff76086a016a01488b5c24384c8b4424184989e14c8b542428e83dfeffff415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb904c8b6c24184c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c420c3f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24284c8b542438ff1588000000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b6c24184c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c420c3f400000000|@16572,1,@3043,@7866,@7864| 7864:D4,792|483b65187306ff5558ca090741504152ff30ff7008ff7018ff33ff73084d8b314983fe0d751a4c89c8488b5c240849c7c001000000ff15f50200004989c3eb374d8d5fd84c3b5d107306ff5550ca00024d89df49c743f80400000049c74318010000004c8b7424084d8973104d894b0849c703170000004c8b7424104d8b364983fe017515488d64243848b80895d1f1c27f0000488b5d08ff234d8b364d8b6e104d8b75004d8b65084d8b55184d8b6d204d8d4fe04c3b4d107306ff5550ca007c4d89cf49c741f8030000004c8b4424284d8941104d89690849bd188e71f1c27f00004d89294d8b2e4983fd030f85b20000004d8b6e084d8b76184d8b6d00498b364c8b76f849c1e60849c1ee074983ce014983fe01750c49b84882d1f1c27f0000eb554c89f74889f94c8d04bd0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca427e4d89c748d1ef498978f841c640ff404c89c748d1e948c7c001000000f348ab4c89f14c89c748d1e9f348a5418060ffbf4d8d77e04c3b75107306ff5550ca003f4d89f749c746f8030000004d8946104d896e0849c70601000000eb004d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f80600000049c74528010000004d894d204d89551849c74510010000004d8965084d8975004c8b6424084983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004c8b5424204d89560849c706010000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d895e0849c706030000004d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d896b104d8973084c8b6c24184d89ee4d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89f64d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b1c244d895e08488d6424084d892e4c8b6c24284d8965004d89750848c7c0010000004883c430c3f400000000|@16581,1,@3052,@5380|140,0,@10926 219,0,@7865 282,0,@10817 498,0,@9475 7865:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@3042,@5098| 7866:D10,2552|488dbc2450ffffff483b7d187306ff5560ca09074150415141524c8b304d89f54983fe05755c4c8b700841ff364d8b6e084c8b234c8b730841ff3641ff760841ff761041ff761841ff762041ff76284d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89266a016a0141554156e9610600004d89ee4983fd010f85b5000000488d6424104c8b68084c8b60104d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d8966084d892e4c8b234c8b6b08498b75004d8b5d084d8b55104d8b4d184d8b4520498b7d284d8d6fe84c3b6d107306ff5550cac05f4d89ef49c745f802000000498975084d8975004d8d77c84c3b75107306ff5550ca803f4d89f749c746f80600000049897e284d8946204d894e184d8956104d895e084d892e415d4d8965004d89750848c7c001000000c34983fe030f8516030000ff7008ff334c8b730841ff3641ff760841ff761041ff761841ff762041ff76284c8b7424384d8b6e104d8b65004d8b5d084d8b55184d8b6d204d8d4fe04c3b4d107306ff5550ca007c4d89cf49c741f8030000004c8b4424404d8941104d89690849bdc09871f1c27f00004d89294d8b2c244983fd030f85b90000004d8b6c24084d8b6424184d8b6d00498b34244c8b66f849c1e40849c1ec074983cc014983fc01750c49b84882d1f1c27f0000eb554c89e74889f94c8d04bd0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca427e4d89c748d1ef498978f841c640ff404c89c748d1e948c7c001000000f348ab4c89e14c89c748d1e9f348a5418060ffbf4d8d67e04c3b65107306ff5550ca006f4d89e749c74424f8030000004d894424104d896c240849c7042401000000eb004d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f80600000049c74528010000004d894d204d89551849c74510010000004d895d084d89650041554d89f641ff364c8b7424584d8b2e4983fd0d751a4c89f0488b5c244049c7c001000000ff15570700004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424404d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24484d8b6d184d8d5fd84c3b5d107306ff5550ca00604d89df49c743f8040000004d896b184c8b6c24084d896b104d8973084c8b34244d89f54d89334c8b6424404983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24084d895d084d8975004d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004d896e284c8b6c24104d896e204c8b6c24184d896e184c8b6c24204d896e104c8b6c24284d896e084c8b6c24304d892e4c8b6c24584d8965004d89750848c7c0010000004883c460c34c8b680841ff750041ff75084d8b751041ff751841ff7520ff334c8b6b0841ff750041ff750841ff751041ff751841ff752041ff75284d8b2e4983fd077505e9890000004c8b7424604d8b2e4983fd0d751a4c89f0488b5c243049c7c001000000ff156d0500004989c5eb3b4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424304d8965104d89f64d89750849c74500170000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24604d896e0849bd109971f1c27f00004d892e4d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849be889971f1c27f00004d8930488b44244848bbe8cad4f1c27f0000ff158e0400004989c64d8d5fc04c3b5d107306ff5550ca00404d89df49c743f80700000049c743300100000049c74328010000004c8b6c24404d896b204d8973184c8b34244d897310488d6424084c8b7424484d8973084c8b7424504d89f54d89334c8b6424304983c4027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89ed4d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24184d895d084d8975004d8d77c84c3b75107306ff5550ca00304d89f749c746f8060000004c8b1c244d895e28488d6424084c8b1c244d895e20488d6424084c8b1c244d895e18488d6424104d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084c8b6c24384d8965004d89750848c7c0010000004883c440c3f6442408010f85c60100004c8b6c24084d8b75004d89ed41ff750841ff3641ff760841ff761841ff76204c8b6c24284d89ee41ff75004d89f641ff76084c8bac24980000004d8b75004983fe0d751a4c89e8488b5c240849c7c001000000ff15e10200004989c6eb3a4d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424084d8966104d89ed4d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c74628010000004c8b6424104d8966204c8b6424184d8966184d896e104c8b6c24204d896e084c8b6c24284d892e4c8b6c24084983c50241557118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff23498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175074c8b742408eb0e488b442408ff15be0100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b34244d893424488d6424084c8b6c24304c896424384c896c2440483b65187303ff55584883c438e92ffeffff4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410ff7424084c8b742418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424504c8930488b5c245849b8d8c8d0f1c27f0000ff15020100004989c641564c8b742458498b066a016a014889e3ff15e0000000488d642408415d4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424404d8965084d8975004d8d77c84c3b75107306ff5550ca00204d89f749c746f8060000004c8b6424204d8966284c8b6424284d8966204c8b6424304d8966184c8b6424384d8966104d896e084c8b6c24484d892e4c8b6c24684c8b24244d896500488d6424084d89750848c7c0010000004883c468c3f4|@16580,1,@3050,@5071,@5343,@7873,@5380,@5108,@5380,@5380|433,0,@7867 500,0,@10817 928,0,@9475 1366,0,@7868 1410,0,@7869 1428,0,@16578 1552,0,@9475 2070,0,@9475 2312,0,@9493 7867:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@3044,@5098| 7868:D3,80|483b65187305ff5558cd054c8b70084d8b2e4983fd01752c498b4618488b5208ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000|@16573,1,@3045| 7869:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8f8c9d4f1c27f000049b970cad4f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@16577,1,@3048,@5104|26,0,@16574 36,0,@16576 7870:D3,16|483b65187305ff5558cd01c3f4000000|@16575,1,@3046| 7871:D3,16|483b65187305ff5558cd01c3f4000000|@16575,1,@3047| 7872:D3,16|483b65187305ff5558cd01c3f4000000|@16579,1,@3049| 7873:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3051| 7874:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3053| 7875:D3,384|483b65187305ff5558cd094c8b304c8b68084c8b60104c8b58184c8b40204c8b4828498d7fd8483b7d107306ff5550ca087b4989ff48c747f8040000004c894f184c89671048895f0849ba889d71f1c27f00004c89174d8d57e04c3b55107306ff5550ca807b4d89d749c742f80300000049897a104d89420849b8489e71f1c27f00004d89024d8b064983f8030f85b40000004d8b46084d8b76184d8b00498b36488b56f848c1e20848c1ea074883ca014883fa01750c48bf4882d1f1c27f0000eb584889d74889f94c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca463f4d89f748d1ef49897ef841c646ff404c89f748d1e948c7c001000000f348ab4889d14c89f748d1e9f348a5418066ffbf4c89f74d8d77e04c3b75107306ff5550ca803f4d89f749c746f80300000049897e104d89460849c70601000000eb00498d47c8483b45107306ff5550ca007e4989c748c740f8060000004c8948284c8950204c8958184c8960104c8968084c8930c3f40000000000|@16583,1,@3057|75,0,@7876 123,0,@7877 185,0,@10817 7876:D3,152|483b65187305ff5558cd054989c54c8b62184d89e64d3bec7d09488b52084c89e8ff224d2bee711048b8d0c6d0f1c27f0000488b5d08ff234983c5014c8b721041f6c601753b498b064d8b66084983fd017501c34d89eb4983eb02711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebbf48b8c85dd1f1c27f0000488b5d08ff23f4000000000000|@16582,1,@3054|42,0,@9475 95,0,@9475 131,0,@10528 7877:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@3055,@5098| 7878:D3,32|483b65187305ff5558cd0148b8a0ccd4f1c27f0000488b5d08ff23f400000000|@16587,1,@3058|13,0,@16585 7879:D3,24|483b65187305ff5558cd0148b80854d4f1c27f0000c3f400|@16590,1,@3059|13,0,@15908 7880:D9,720|483b65187306ff5558ca0901534150ff30ff3424f604240175404c8b2c244d8b75004d89ed41ff75084d8b264d89e54983fc037505e9430200004983fd01750b4d8b76084156e946020000498b4608ff15bb020000e923020000488d64240849c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d57e84c3b55107303ff55504d89d749c742f8020000004c8b34244d89720849be48a271f1c27f00004d89326a016a0148b820ced4f1c27f0000488b5c24184989e04c8b4c2428ff152f020000ff3424ff7424206a01f64424080175474c8b742408498b064d89f641ff7608ff15020200004c8b7424084c89f34983fe0175054989c4eb09ff15e10100004989c4415d4c8924244c896c2408483b65187303ff5558ebb2415d49c7c6010000004883c40841f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15fa0000004989c5eb004c8b24244d89e64983fc01750a488d6424184d89eceb3a4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d89f64d89742408488d64240849c704241f0000004883c4104c8b1c244d8b334d89f54d89db4d89db4d892b488d6424084c8b6c24084d8965004d89750848c7c0010000004883c418c3415d4c892c24483b65187303ff5558e983fdfffff6042401752a4c8b2c244d8b75004d89ed41ff7508498b4608ff1538000000415d4c892c24483b65187303ff5558ebd0488d642408ebb5f400000000000000|@16597,1,@3064,@7884,@6504,@7887,@7888,@8040,@7883|173,0,@7881 190,0,@16594 7881:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@16593,1,@3062|42,0,@9475 7882:D3,24|483b65187305ff5558cd0148b8c06ad1f1c27f0000c3f400|@16596,1,@3063|13,0,@10633 7883:D7,136|483b65187305ff5558cd014c8b284d89ee4983fd0375174c8b7008ff70104c89f0ff159100000058ff25820000004983fe01750a488b4008ff256a0000004c8b70104156f6042401752a4c8b2c244d8b75004d89ed41ff7508498b4610ff153d000000415d4c892c24483b65187303ff5558ebd0488d64240848c7c001000000c3f4000000000000|@17986,1,@3793,@7884,@8613,@8645,@8612| 7884:D5,112|483b65187305ff5558cd014c8b284d89ee4983fd05750c4c8b7008498b06e9ddffffff4d89f54983fe0375164c8b7008ff70104c89f0e8c5ffffff58ff254e0000004d89ee4983fd01750c4c8b7008498b06e9a9ffffff4983fe07750a488b4008ff252100000048c7c001000000c3f4|@16599,1,@3065,@7886,@7885| 7885:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab8ced4f1c27f000058ff2248c7c001000000c3f4|@10943,1,@3067|28,0,@16598 7886:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab8ced4f1c27f000058ff2248c7c001000000c3f4|@10943,1,@3066|28,0,@16598 7887:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3068| 7888:D7,288|483b65187305ff5558cd014989c64d8b264d89e54983fc03750848c7c001000000c34983fd017519498b4608ff151e0100004989c648c7c001000000e992000000498b46084d8b761041ff3648bb6086d1f1c27f0000ff15ec0000004989c64156488b442408ff15d40000004989c648c7c30100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca08684d89e749c74424f80200000049895c24084d891c244c89e34d89ee483b65187306ff5558ca0840ebba4883fb017506584883c408c3584883c408ff256500000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebbac3f40000000000|@16602,1,@3069,@7890,@7891,@7893,@7889|78,0,@10839 7889:D3,264|483b65187305ff5558cd01a8010f85e80000004c8b30488b40084d8b76284d8b364983fe01751048b80895d1f1c27f0000488b5d08ff234d8b364d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b810cfd4f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3220|41,0,@10926 90,0,@16320 237,0,@16600 7890:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3070| 7891:D4,104|483b65187305ff5558cd01a801754d4c8b30ff7008498b06ff15620000004989c64156488b442408e8d3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4000000|@10112,1,@3071,@7892| 7892:D4,336|483b65187305ff5558cd014c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2528010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85ab0000004c8b68084c8b70104d8b6d004d8b364d8b2649c7c6010000004d2bf4711048b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe0175634983fd017d1048b89086d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c348b80887d1f1c27f0000488b5d08ff234983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f4|@16607,1,@3072,@5380|169,0,@9475 201,0,@10841 294,0,@10844 321,0,@16603 7893:D5,664|483b65187305ff5558cd09534c8b284d89ee4983fd010f85ab0000004c8b70104d8b3649c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049bbb05fd1f1c27f00004d895c241849bb88d0d4f1c27f00004d895c24104c8b1c244d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500415541566a01e9800100004983fe03750d4c8b700841566a01e912010000488d6424084c8b701048c7c00100000041f6c6010f85f70000004d8b264d8b6e084d8b6424184d8b24244983fc01751048b80895d1f1c27f0000488b5d08ff234d8b24244d8b6424084d8b1c244983fb050f85aa0000004d8b6424084d8b1c244983fb017d1048b80095d4f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d895c240849c70424050000004d8d5fe84c3b5d107306ff5550ca01704d89df49c743f8020000004d89630849c703110000004d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140e90fffffff48b810cfd4f1c27f0000488b5d08ff23c3f644240801754e4c8b742408498b064d89f641ff7608488b5c2418e8f4fdffff4c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15900000004989c4415d4c8924244c896c2408483b65187303ff5558ebab584883c410c3f644240801753d4c8b742408498b064d89f641ff7608488b5c24084c8b4424204c8b4c2418ff153e0000004989c4415d4c8924244c896c2408483b65187303ff5558ebbc584883c418c3f4000000000000|@16613,1,@3074,@7896,@7895|108,0,@10542 123,0,@16608 268,0,@10926 322,0,@16320 477,0,@16600 7894:D3,32|483b65187305ff5558cd0148b898d0d4f1c27f0000488b5d08ff23f400000000|@16612,1,@3073|13,0,@16609 7895:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3219| 7896:D7,440|483b65187306ff5558ca0903534c8b304d89f54983fe0575234c8b7008498b46084c89c34d89c8ff15bb0100004989c648c7c001000000e9130100004d89ee4983fd0375404c8b7008498b46084c89c3ff158a0100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c34983fe070f85be000000488b400849bee8cad0f0c27f00004d8b2649bef8cad0f0c27f00004d8b2e49be08cbd0f0c27f00004d8b1649be18cbd0f0c27f00004d8b1e4d8d77d04c3b75107306ff5550ca013f4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8c8d0f1c27f00004d892e41564c89c34d89c849c7c10100000049baa8d1d4f1c27f0000ff15ba0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930c358c341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b34244c89f34983fe017506488d642408c34889db488d642408ff251a000000f400|@16617,1,@3076,@7899,@7900,@8039,@7898|149,0,@4782 162,0,@4783 175,0,@4784 188,0,@4785 244,0,@9493 272,0,@16614 7897:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@16616,1,@3075| 7898:D4,264|483b65187306ff5558ca09014989c653415041f6c6010f85de000000498b0641ff760849bee8cad0f0c27f00004d8b2649bef8cad0f0c27f00004d8b2e49be08cbd0f0c27f00004d8b1649be18cbd0f0c27f00004d8b1e4d8d77d04c3b75107306ff5550ca013c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8c8d0f1c27f00004d892e4156488b5c24184c8b44241049c7c10100000049baa8d1d4f1c27f0000ff156e0000004989c64156488b442408488b5c24184c8b442410e835ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4|@10112,1,@3218,@7900|37,0,@4782 50,0,@4783 63,0,@4784 76,0,@4785 132,0,@9493 164,0,@16614 7899:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3077| 7900:D88,9296|483b65187306ff5558ca09074989c653415041524d8b6e104d8b5d004d89dc4983fb070f85ae0d00004d8b6d084c8d25080000004f8d64acfc41ffe4e943000000909090e93f010000909090e933000000909090e996080000909090e9a0080000909090e9e2090000909090e913000000909090e9140d0000909090e9030000009090904c8b6424104d8b2c244d89e44d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca006e4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca006a4d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba98d971f1c27f00004d8914244983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d47e04c3b45107306ff5550ca007a4d89c749c740f8030000004d89db4d8958104d8960084d892848bae0d3d4f1c27f00004c8b6c2428ff74240841554d89ca4c89f048bb985fd1f1c27f00004c8b4c2420ff124989c641564c8b7424084d8b3648c7c001000000e9c621000041f6c1010f85a60600004d8b314d8b690841f6c5010f85800600004d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc030f85550600004d8b6d0041ff750041ff3649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156488b442408ff15c22400004989c64156f60424010f85580300004c8b34244d8b3641ff7608498b5e104883fb017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15742400004989c64156f60424010f8587010000488b04244c8b304889c04c8b68084983fd010f85e1000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc017d5f1c27f00004c8968084c893048c7c303000000ff150c2400004989c64156488b0424ff15f52300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424184d8966104d896e0849c70605000000e98c000000488b5c2418ff154923000048c7c303000000ff15342300004989c64156488b0424ff151d2300004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c70607000000eb0a49bea8c3d1f1c27f00004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424184d89e34d8965104c8b6424204d89650849c7450005000000498d47e0483b45107306ff5550ca00684989c748c740f8030000004c8968104c8b6c24284c89680848c700050000004c8b5424084d8b2a4c8b4c24504d8d67e84c3b65107306ff5550ca016e4d89e749c74424f8020000004d894c240849c70424010000004d8d4fe84c3b4d107306ff5550ca017c4d89cf49c741f80200000049c74108010000004d89214d8d67d04c3b65107306ff5550ca016e4d89e749c74424f8050000004d894c24204d89d24d895424184d896c24104c8b2c244d896c2408488d64241049c704240b0000004d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d89db4d895d104d89650849c7450005000000498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c896b104c89730848c703050000004c8b542440ff353a21000049b80818d5f1c27f00004c8b4c2428ff151d210000eb004c8b2c244d89ee4983fd017512488d64243848b82818d5f1c27f0000c208004d89f64d8b36488d64240841ff3641ff76104c8b34244d89f54983fe010f85ad010000488d64240848b83819d5f1c27f0000ff15bc2000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48bed1f1c27f00004d8966104d896e0849c7060f000000415648b8f00bd5f1c27f0000ff15632000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b89019d5f1c27f0000ff150b2000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b8d019d5f1c27f0000ff15b31f00004989c6415648c7c001000000ff15991f00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bee819d5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000e9681900004d89ed4d89ee4983fd03750f49be001ad5f1c27f0000e9811600004d89f64c89f34983fe017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15b31e00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c7450029000000e9ab150000488d642418eb05488d64241848b8581ad5f1c27f0000488b5d08ff23488d64241848c7c001000000ff15461e00004989c6415648c7c001000000ff152c1e00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf01ad5f1c27f00004d896e0849bd101bd5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c20800488d64241848b8981bd5f1c27f0000c20800488d64240841f6c101754e4d8b314d8b69084983fd01752c498b0648ba68d4d4f1c27f0000488b5c24084158488d6424084c8b34244c897424084883c408ff253b1d0000488d64241048b8a81cd5f1c27f0000488b5d08ff234c8b6c24084d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb288f72f1c27f00004d895d004983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca00704989df48c743f8030000004d89e44c8963104c896b084c893348ba68d4d4f1c27f000048b8b80bd1f1c27f00004c8b442408ff15461c00004989c641564c8b7424084d8b3648c7c001000000e97e120000488d64240841f6c1010f85cb0100004d8b314d8b69084983fd010f85a5010000498b064c8b6c24084d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb789072f1c27f00004d895d004983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca01704989df48c743f8030000004d89e44c8963104c896b084c893348ba68d4d4f1c27f00004c8b442408ff15341b00004989c6415648b8401dd5f1c27f0000ff15171b00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15a51a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcc81dd5f1c27f00004d8966104d896e0849c7060f00000041564c8b7424084d8b3648c7c001000000e9bb0f0000488d64241048b8e81dd5f1c27f0000488b5d08ff23488d64241048c7c001000000ff15211a00004989c6415648c7c001000000ff15071a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049be801ed5f1c27f00004d89750849bea01ed5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff155f1900004989c6415648c7c001000000ff15451900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc01ed5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080041f6c10175324d8b314d8b69084983fd017510498b064c8b34244d8b7668e9d1070000488d64241848b8e01ed5f1c27f0000488b5d08ff234c8b34244d8b7668488d642418e9a9040000488d6424084d89e34983fc017515488d64241048b8701fd5f1c27f0000488b5d08ff234d89dc4983fb090f85b901000041ff7508498b45104d8b76084d8d6fe04c3b6d107306ff5550ca01424d89ef49c745f803000000498945104c8b24244d89650849bcc89172f1c27f00004d89650041554983fe01757d488d642408488b5c2410ff15d81700004989c64d8b2e4983fd0d751f4c89f05b49c7c0010000004c8b7424104c897424184883c418ff25a5170000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c208004983fe03757d488d642408488b5c2410ff15451700004989c64d8b2e4983fd0d751f4c89f05b49c7c0010000004c8b7424104c897424184883c418ff2512170000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c2080041f6c601753748c7c001000000ff15b516000048ba28d4d4f1c27f0000488b5c24184c8b44241041594c8b7424184c897424204883c420ff25831600004c89c8ff157216000048ba28d4d4f1c27f0000488b5c24184c8b44241041594c8b7424184c897424204883c420ff25401600004983fc050f85eb0100004d8b5d084d8b65104d8b2b4d8b24244d8b76084d8d5fe04c3b5d107306ff5550ca00724d89df49c743f8030000004d8963104d896b0849baf09372f1c27f00004d891341534983fe010f858d000000488d6424104c8b1c244d8b334d89db498b5308488d6424084d8b24244d2bf4711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c208004983fe030f858d000000488d6424104c8b1c244d8b334d89db498b5308488d6424084d8b24244d2bf4711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c2080041f6c601753b48c7c001000000ff15a814000048ba28d4d4f1c27f0000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff25721400004c89c8ff156114000048ba28d4d4f1c27f0000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff252b140000498b45084d8b76084d8d6fe84c3b6d107306ff5550ca01424d89ef49c745f8020000004989450849bcb09472f1c27f00004d89650041554983fe017508488d642418c208004983fe037508488d642418c2080041f6c601753b48c7c001000000ff15bd13000048ba28d4d4f1c27f0000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff25871300004c89c8ff157613000048ba28d4d4f1c27f0000488b5c24104c8b4424084159488d6424104c8b34244c897424084883c408ff254013000041f6c60175454d8b264d8b6e084d8b1c244c3b1d2013000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49bda020d5f1c27f0000eb174d8b364d8b2e4c3b2dbf1200000f857a0200004d8b6e104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648b8b020d5f1c27f0000ff156d1200004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd01750c49be985fd1f1c27f0000eb344d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc985fd1f1c27f00004d8966104d896e0849c7061f000000415648c7c001000000ff15841100004989c6415648c7c001000000ff156a1100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bec820d5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15c31000004989c6415648c7c001000000ff15a91000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bde020d5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080048b87810d1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1de70f000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9490500004d8b364d8b2e4c3b2d830f000075064d8b7610eb15488d64241848b87810d1f1c27f0000488b5d08ff2341564c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d3b0f000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe01750c49bdf820d5f1c27f0000eb174d8b364d8b2e4c3b2dda0e00000f858a0300004d8b6e104c8b6424184d8b34244d89e44d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca016c4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca01684d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba709572f1c27f00004d8914244983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca01784989df48c743f8030000004d89db4c895b104c8963084c89334d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648ba68d4d4f1c27f00004c8b442420ff15c40d00004989c641564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24184d896e0849c7060d000000415648b8f00bd5f1c27f0000ff15750d00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be985fd1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15810c00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff150f0c00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd01750c49be985fd1f1c27f0000eb344d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc985fd1f1c27f00004d8966104d896e0849c7061f00000041564c8b7424084d8b3648c7c001000000eb15488d64242048b87810d1f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15bd0a0000ff15af0a00004989c6415648c7c001000000ff15950a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc820d5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c428c2080041f6c60175454d8b264d8b6e084d8b1c244c3b1ddf09000075204d8d77f04c3b75107306ff5550ca01104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d7509000075094d8b7610e95cfaffff488d64241848b87810d1f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15fd080000ff15ef0800004989c6415648c7c001000000ff15d50800004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd801ed5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15e7070000ff15d90700004989c6415648c7c001000000ff15bf0700004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd0821d5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c2080041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15db0600004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648b83819d5f1c27f0000ff15960600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48bed1f1c27f00004d8966104d896e0849c7060f0000004156488b442408ff15420600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424104d896e0849c7060f000000415648b89019d5f1c27f0000ff15ea0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424084c89f34983fe017d15488d64244848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15720500004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be48bed1f1c27f00004c8930ff15350500004989c6415648c7c001000000ff151b0500004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049be2821d5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8d019d5f1c27f0000ff15710400004989c641564c8b7424104c89f34983fe017d15488d64245048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15340400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bee819d5f1c27f00004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8b742438498b1e4d89f64d8b460849c7c5010000004d8d77f04c3b75107306ff5550ca08214d89f749c746f80100000041c646ff404d892e41564883c3027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b742410498b064c8b0c24ff15320300004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff15060300004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcb8c0d4f1c27f00004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049bdb0ded3f1c27f00004d896e0849c7062500000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15f0010000ff15e20100004989c6415648c7c001000000ff15c80100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd4021d5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c448c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15da000000ff15cc0000004989c6415648c7c001000000ff15b20000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc00ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c20800f4000000|@17173,1,@3193,@8017,@6242,@7935,@8018,@6242,@7935,@5380,@8019,@8020,@6242,@8021,@6242,@8022,@7906,@7906,@7906,@6504,@8023,@6242,@7935,@8024,@6242,@7935,@4638,@4638,@8025,@6242,@7935,@7906,@7906,@7906,@7958,@4637,@4637,@4638,@4638,@8026,@6242,@8027,@6242,@7906,@4637,@4637,@7904,@8002,@7904,@8002,@7904,@8002,@7904,@8002,@7904,@8002,@7904,@8002,@5380,@8028,@5380,@8029,@8030,@7989,@8031,@6242,@7906,@7906,@7958,@7958,@7958,@8032,@6242,@8033,@8034,@6242,@7906,@7906,@7906,@8035,@17180,@5400,@5156,@8037,@5400,@5156,@8038,@8015|243,0,@7901 268,0,@9475 325,0,@16624 352,0,@10541 468,0,@10468 625,0,@10101 720,0,@17107 1060,0,@11239 1432,0,@17109 1473,0,@17110 1526,0,@17116 1580,0,@11192 1607,0,@17030 1687,0,@17119 1767,0,@17121 1880,0,@17122 1962,0,@17123 1994,0,@10101 2090,0,@17126 2221,0,@17129 2235,0,@17130 2294,0,@17134 2334,0,@16627 2380,0,@17140 2499,0,@8006 2524,0,@9475 2581,0,@16627 2591,0,@9948 2775,0,@8007 2800,0,@9475 2857,0,@16627 2883,0,@17143 3043,0,@17148 3095,0,@17149 3226,0,@17152 3240,0,@17153 3404,0,@17154 3511,0,@17155 3564,0,@17158 3644,0,@8008 3941,0,@16626 3992,0,@16626 4098,0,@8010 4156,0,@9475 4307,0,@9475 4434,0,@16626 4489,0,@16626 4574,0,@8011 4637,0,@16626 4692,0,@16626 4826,0,@17165 4909,0,@17166 5071,0,@10541 5110,0,@10541 5247,0,@17167 5424,0,@17168 5491,0,@9991 5595,0,@10158 5636,0,@9991 5751,0,@17169 5895,0,@8014 5920,0,@9475 6025,0,@16627 6101,0,@17030 6249,0,@10541 6605,0,@10541 6644,0,@10541 6693,0,@9991 6892,0,@17167 7056,0,@10198 7101,0,@9991 7300,0,@17152 7554,0,@17170 7740,0,@17116 7794,0,@11192 7896,0,@17119 7995,0,@10101 8058,0,@11192 8174,0,@17171 8241,0,@17121 8281,0,@10101 8389,0,@17122 8526,0,@9475 8690,0,@16535 8748,0,@15120 8969,0,@17172 9223,0,@17022 7901:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3078,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7902:D20,2512|483b65187306ff5558ca0907505341504151488b4424184c8b700841f6c6010f85ea0000004c8b6c24304c8b6424284d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e184c8b2c244d896e104889c04989460849bd68e571f1c27f00004d892e415648c7c001000000ff15eb09000048ba28d4d4f1c27f0000488b5c24104c8b4424084c8b0c24ff15c50900004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff158a0900004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424304c89700848c7000f000000c210004983fe010f850f0100004c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff15150900004989c5488d6424104c8b7424084d8b264d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049bcf00bd5f1c27f00004d8963084c8b24244d8923488d6424104d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000e9510700004889c04c8b70104d8b2e4983fd070f85c60400004d8b76084989c54c89e841ff75004c8d2d080000004f8d6cb5fc41ffe5e943000000909090e9b1000000909090e9b3000000909090e991010000909090e9c4010000909090e9c3010000909090e9c5010000909090e9d1020000909090e964030000909090488d6424186a016a0141f6c20175484d8b6a084d89ee41f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd0375124d8b2a4d8b364d8b364d8b6d00e92e06000049beb010d5f1c27f00004d8b2e4c892c244d8b76084c89742408e981040000488d642408e926010000488d64240841f6c2010f85c20000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85970000004d8b32498b0648bac810d5f1c27f0000488b5c24084c8b0424ff15d50600004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff159a0600004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424204c89700848c7000f0000004883c408c21000488d642420eb05488d64242048b8b811d5f1c27f0000488b5d08ff23488d6424284c8b742408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c21000488d642408eb05488d642408e919010000488d64240841f6c2010f85f00000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85c50000004d8b32498b0648bac810d5f1c27f0000488b5c24084c8b0424ff15930500004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15580500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424204d896e0849c7060f000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b0000004883c408c21000488d642420eb05488d64242048b86012d5f1c27f0000488b5d08ff23488d6424084c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff159a0400004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff155f0400004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c2100041f6c2010f85e10000004d8b72084983fe01750949c7c603000000eb0749c7c6010000004983fe030f85b60000004d8b32498b0648ba90d6d4f1c27f000048c7c301000000ff15cb0300004889c348bae012d5f1c27f0000488b042449b86813d5f1c27f0000ff15a20300004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff15670300004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f0000004883c420c21000488d642428eb05488d64242848b83814d5f1c27f0000488b5d08ff234c8b6c24304c8b74242841564d89d14d89ea488b5c24104c8b442408ff15dc0200004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15a10200004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c21000415d415c4d8d5fe04c3b5d107306ff5550ca00304d89df49c743f8030000004d8963104d896b0849bef88572f1c27f00004d89334c8b34244d8b164983fa0d75274d89f64d8b56084d8d77f04c3b75107306ff5550ca003c4d89f749c746f8010000004d8916eb0749c7c6010000004983fe010f85a30000004d8d77e04c3b75107306ff5550ca00084d89f749c746f80300000049c74610010000004d895e0849c7060d0000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15810100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f0000004883c408c210004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b2c244d896e08488d64240849bd688d72f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d0000004883c408c210004d8b65004983fc0d75194d8b65084d8b24244d89e5483b65187306ff5558ca0060ebdd4d8b264983fc0d75194d8b66084d8b24244d89e6483b65187306ff5558ca0060ebde4c892c244c89742408e91ffeffff41f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424104883c410ff251e000000c21000f40000|@17106,1,@3178,@6504,@7906,@7906,@7900,@7906,@7991,@7919,@7906,@7900,@7906,@7985,@7906,@7985,@7900,@7906,@7904,@8002|99,0,@7903 127,0,@16626 406,0,@17030 762,0,@17066 860,0,@17067 1017,0,@17074 1166,0,@17067 1369,0,@17078 1592,0,@16638 1618,0,@17081 1632,0,@17084 1780,0,@17089 1985,0,@7994 2278,0,@8001 7903:D5,144|483b65187305ff5558cd054989c5488b42084c8b42104c8b52184c8b722041564c89eb49c7c101000000ff15800000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2555000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000000000|@16625,1,@3079,@5380,@7900| 7904:D5,208|483b65187306ff5558ca0d034989d64c89ca4156505341504c8b7424104983fe01750c488d642408584883c410ff22488b442408ff124989c641564c8b642420498b5c24084d89e44d8b4424104d89e44d8b4c24184d89e44d8b7424204d89e44d8b6c24284d89e44d8b642430ff742408415641554154488b4424384c8b542430ff1569000000ff155b0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c3f4000000|@16628,1,@3080,@7906,@7905| 7905:D4,224|483b65187306ff5558ca090753415041514152a8010f85b50000004c8b30ff7008498b06498b5e084d8b46104c8b7424484c8b6c24404c8b6424384c8b5c2430ff742410ff74241041564155415441534c8b4c24504c8b542448ff15980000004989c641564c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b442428488b5c24484c8b4424404c8b4c24384c8b542430e861ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c22000488d64242048c7c001000000c22000f4|@10112,1,@3090,@7907| 7906:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3081| 7907:D11,1576|483b65187306ff5558ca0907504150415141524883fb037505e9910000004c8b7424104983fe030f8482000000488b4424404c8b542450488b5c24184c8b4424084c8b0c24ff152d0600004989c64983fe01753c4c8b4424404c8b7424504156488b44242048c7c3030000004c8b4c24104c8b542408ff15f40500004989c649c7c5010000004c8b642440e91d020000488d6424204d8b36498b16488b4424284c8b34244c897424304883c430ff224883fb037533488b5c24484c8b4c24404c8b742450ff34244156488b44242849b8c0d4d4f1c27f00004c8b542418ff15850500004989c6eb054c8b7424384156488b5c24504c8b4c24484c8b742458ff7424084156488b44243049b820d5d4f1c27f00004c8b542420ff15420500004989c641564c8b7424204983fe03751b488b542440488b5c24584c8b442450488b442428ff124989c6eb054c8b7424384156488b5c24604c8b4c24584c8b742468ff7424184156488b44244049b820d5d4f1c27f00004c8b542430ff15d90400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c41041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424304883c430ff25a6030000c2300041f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d2bee7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c5016a016a016a014c8b74245841f6c6010f85ee0200004d8b1e4d8b66084983fd010f85a80200004d8b334c8934244d8b73084c897424084d8b73104c89742410ff3424ff742410ff7424204c8b4c24704c8bb42480000000ff7424304156488b442458488b5c241849b888d5d4f1c27f00004c8b542448ff15c40200004989c641564c8b4c24784c8bb42488000000ff7424384156488b442460488b5c242049b8f0d5d4f1c27f00004c8b542450ff15850200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b7424584d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b7424684d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b54240848c7c003000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424104d896e1049c746080100000049c706030000004d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004d8973104d896b084c8b7424404d89334c8b6424084d8b14244d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d89e44d8934244c8b7424704d8b264c8b7424704d8b76084c8b1c244d8b1b488d6424384d2be37115488d64241048b8d0c6d0f1c27f0000488b5d08ff23488d6424104983c401498d47e0483b45107306ff5550ca00704989c748c740f80300000048c74010010000004c8960084c89284c89f2ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c230004d89eb4983eb027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e908fdffff488d64243848b8c85dd1f1c27f0000488b5d08ff23f400000000000000|@16647,1,@3096,@7922,@7926,@6504,@7922,@7926,@7930,@7939,@7916|208,0,@16629 267,0,@16631 364,0,@16631 712,0,@9475 758,0,@9475 881,0,@16633 936,0,@16635 1380,0,@9475 1510,0,@9475 1554,0,@10528 7908:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@16630,1,@3082,@7909| 7909:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3083,@5380|170,0,@9475 287,0,@16603 7910:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@16632,1,@3084,@7911| 7911:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3085,@5380|170,0,@9475 287,0,@16603 7912:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@16634,1,@3086,@7913| 7913:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3087,@5380|170,0,@9475 287,0,@16603 7914:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@16636,1,@3088,@7915| 7915:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3089,@5380|170,0,@9475 287,0,@16603 7916:D10,1160|483b65187306ff5558ca0907504150415141524c8b334d89f54983fe050f8581000000488d6424104d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849be28fb71f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608ffffffff4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c34d89ee4983fd0b0f85da0000004c8b6b084c8b73184d8b5e184d89dc4d8b5b084d8b1b4983fb050f85980000004d89e64d8b76084d8b264983fc057573498b460841ff76104c89ebff15de0300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be68fb71f1c27f00004c89336a016a01488b4424104989e0ff15950300005b488d642410488b4424184c8b4424104c8b4c2408415a488d642418e9acfeffff488d64242048b81890d1f1c27f0000488b5d08ff23488d64240841f6c501740b415c4883c408e95e010000488d64241058ff25350300004983fe0d0f853c0100004c8b73084c8b63104d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d8965084d8975004d8b364d8b1e4d89dc4983fb09757648ba90d6d4f1c27f00004889d848c7c301000000ff15cf0200004989c54d8b7500498d5fd0483b5d107306ff5550ca00604989df48c743f80500000048c74320010000004c896b184c89731048c743080100000048c7030b000000488b4424184c8b4424104c8b4c2408415a488d642418e9bbfdffff4983fc0375686a016a014c89eb488b4424284989e04c8b4c2410ff154b020000415d415c488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488b4424184c89f34c8b4424104c8b4c2408415a488d642418e92ffdffff488d64241858ff25cb01000041f6c4010f850e0100004d8b2c244d8b5c24084d8b55004d8b52184d8b4e18498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb7b4c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374174d89dd4d89ec483b65187306ff5558ca0850e908ffffff4d8d77f04c3b75107306ff5550ca08204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750758ff2597000000488d6424084d8b364d8b76084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be500372f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608ffffffff4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@16688,1,@3118,@7942,@7942,@7944,@7919,@7942,@5234,@5292|79,0,@7917 278,0,@7918 347,0,@10901 465,0,@16638 1078,0,@7921 7917:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@16637,1,@3091| 7918:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3092| 7919:D8,1560|483b65187305ff5558cd0d52ff153e0600004989c64d8b2e4983fd057551498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15e90500004989c6eb09ff15d60500004989c6eb0041564c8b34244d8b264d89e54983fc0b0f85d00000004d89f6498b5e084d89f64d8b76184d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc037409488d6424104c89f0c34d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15520500004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be900272f1c27f00004c89336a016a01488b4424104989e0ff1509050000415d488d6424104c892c24483b65187303ff5558e931ffffff488d64241048b81890d1f1c27f0000488b5d08ff234d89f64983fd0d75444d89f64d8b7608488d6424084d8b2e4d8b65004983fc0975164d8b6d084c8b24244d8b6424084d8b24244d89ebeb2a488d64240848b8e8d6d4f1c27f0000488b5d08ff23488d64241048b878d7d4f1c27f0000488b5d08ff234983fb01750c49c7c401000000e9ed0000004d8b034d8b53084d8b4c24184d8b4018498b71084889f7488b364883fe03754e498b50084889d6488b124883fa03750948c7c203000000eb0748c7c2010000004883fa0375284c8b4f084989f04d8b40084d3bc8750949c7c103000000eb0749c7c1010000004983f9037566eb784889fe488b3f4883ff01754b498b50084889d7488b124883fa01750948c7c203000000eb0748c7c2010000004883fa0375254989f14d8b49184989f84d8b40184d3bc8750949c7c103000000eb0749c7c101000000eb0749c7c1010000004983f90374144d89d3483b65187306ff5558ca0078e908ffffff49c7c4030000004983fc0375354c8b2c244d8b6d08488d6424084d8b65004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d896500e9af0200004d89ec4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756e4d89ca4d8b4a084c8b14244d8b52484d3bd1750949c7c203000000eb0749c7c2010000004983fa03754449c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642410488d6424084d896500e9170200004d89eceb144d89dc483b65187306ff5558ca0070e952ffffff4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756e4d89ca4d8b4a084c8b14244d8b52404d3bd1750949c7c203000000eb0749c7c2010000004983fa03754449c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642418488d6424084d896500e9690100004d89eceb144d89dc483b65187306ff5558ca0070e952ffffff4983fc01750949c7c401000000eb4e4d8b14244d8b5c24084d8b52184d8b42084d89c14d8b004983f803756b4d89ca4d8b4a084c8b14244d8b52384d3bd1750949c7c203000000eb0749c7c2010000004983fa03754149c7c4030000004983fc0375324d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642420488d6424084d896500e9bb000000eb144d89dc483b65187306ff5558ca0070e955ffffff4983fd01750949c7c501000000eb554d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f9030f85d20000004d89d34d8b53084c8b1c244d8b5b304d3bda750949c7c303000000eb0749c7c3010000004983fb030f85a400000049c7c5030000004983fd03752f4d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004c8b24244d8b642428488d6424084d896500eb0c488d64240849c7c5010000004983fd01751048b8d0d7d4f1c27f0000488b5d08ff23498b45004c8b204d8d6fd04c3b6d107306ff5550ca01504d89ef49c745f80500000049c7452001000000498945184d89651049c745080100000049c745000b0000004d892ec34d89e5483b65187306ff5558ca0060e9ebfefffff400000000000000|@16646,1,@3094,@5234,@5292,@5062,@5062,@5062|266,0,@7920 327,0,@10901 404,0,@16639 425,0,@16642 1448,0,@16644 7920:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3093| 7921:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@16637,1,@3095| 7922:D10,1008|483b65187306ff5558ca090750534150415141524c8b4c24384c8b542430488b442408488b5c24204c8b0424ff15060400004989c64983fe010f85a90200004c8b7424204d8b2e4d89ec4983fd070f85800000004d89f64d8b6e0841f6c50175624d8b75084983fe01750949c7c603000000eb0749c7c6010000004983fe03753b4d8b7500498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e944ffffff488d642428eb05488d64242849c7c601000000e99d0200004d89f64d89e54983fc0b0f851a0100004d89f6498b5e084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85ae0000004d8b76084d8b2e4983fd050f8588000000498b460841ff7610ff15060300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee00772f1c27f00004c89336a016a01488b4424104989e0ff15bd02000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e95cfeffff488d64242848b81890d1f1c27f0000488b5d08ff234c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d642410ff7424084c8954240849baa8d8d4f1c27f00004c895c24104c896424184c896c2420ff25220200004d89f64983fd0d0f85c80000004d89f64d8b6e08498b45004c8b204d89e54983fc037515488d64242848b8b8d8d4f1c27f0000488b5d08ff234983fd09756348ba90d6d4f1c27f00004c89f048c7c301000000ff15c10100004c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d6424184152ff74240849baa8d8d4f1c27f000048c7c3010000004c895c24104c896424184c896c2420ff2570010000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e92dfdffff488d64242848b848d9d4f1c27f0000488b5d08ff23488d6424184d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d7529488d6424084c89f049c7c00100000048c7c3070000004c8b34244c897424104883c410ff25d5000000488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010070000004c89700848c70017000000c2100041f6c50175314d8b5d084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc94983fe097f31498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c2100048b8a06ad1f1c27f0000c21000f4000000|@16655,1,@3098,@5380,@7924,@7919,@7924,@5234,@5292,@7916|334,0,@7923 427,0,@10901 481,0,@16648 553,0,@16649 575,0,@16638 636,0,@16648 730,0,@16652 902,0,@9475 993,0,@10632 7923:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3097| 7924:D6,312|483b65187306ff5558ca090753415041514152488b5424104c8b7018498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6c24084c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30700000049c7c001000000ff15ee0000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610070000004d896e0849c706170000004156f6442420017408584883c420c220004c8b4424484c8b4c24404c8b5424384c8b742430ff742410ff7424204156488b442438488b5c2420ff156c000000ff155e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000f400000000|@16656,1,@3099,@7906,@7925,@5380| 7925:D4,496|483b65187306ff5558ca09074989c65341504151415241f6c6010f8509010000498b0641ff7608488b542420488b5c24404c8b4424384c8b4c2430ff742410ff7424104c8b542428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2180041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15890000004989c6eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e847feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800f40000000000|@10112,1,@3100,@6504|148,0,@10633 193,0,@10633 237,0,@10633 7926:D10,888|483b65187306ff5558ca090750534150415141524c8b4c24384c8b542430488b442408488b5c24204c8b0424ff158e0300004989c64983fe010f85a90200004c8b7424204d8b2e4d89ec4983fd070f85800000004d89f64d8b760841f6c60175614d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd03753a4d8b36498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e945ffffff488d642428eb05488d64242848b848dad4f1c27f0000c210004d89f64d89e54983fc0b0f851a0100004d89f6498b5e084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85ae0000004d8b76084d8b2e4983fd050f8588000000498b460841ff7610ff158e0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be101072f1c27f00004c89336a016a01488b4424104989e0ff154502000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e95cfeffff488d64242848b81890d1f1c27f0000488b5d08ff234c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d642410ff7424084c8954240849ba68dad4f1c27f00004c895c24104c896424184c896c2420ff25aa0100004d89f64983fd0d0f85c80000004d89f64d8b6e08498b45004c8b204d89e54983fc037515488d64242848b878dad4f1c27f0000488b5d08ff234983fd09756348ba90d6d4f1c27f00004c89f048c7c301000000ff15490100004c8b4424104c8b4c2418415d4c8b6424304c8b5c2428415a488d6424184152ff74240849ba68dad4f1c27f000048c7c3010000004c895c24104c896424184c896c2420ff25f8000000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24184c8b6424104c896424104c896c24184883c408e92dfdffff488d64242848b810dbd4f1c27f0000488b5d08ff23488d6424184d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d7529488d6424084c89f049c7c00100000048c7c3050000004c8b34244c897424104883c410ff255d000000488d642408498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010050000004c89700848c70017000000c21000f4000000000000|@16665,1,@3102,@5380,@7928,@7919,@7928,@5234,@5292,@7916|201,0,@16657 334,0,@7927 427,0,@10901 481,0,@16658 553,0,@16659 575,0,@16638 636,0,@16658 730,0,@16662 7927:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3101| 7928:D6,312|483b65187306ff5558ca090753415041514152488b5424104c8b7018498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6c24084c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15ee0000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c706170000004156f6442420017408584883c420c220004c8b4424484c8b4c24404c8b5424384c8b742430ff742410ff7424204156488b442438488b5c2420ff156c000000ff155e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000f400000000|@16666,1,@3103,@7906,@7929,@5380| 7929:D4,456|483b65187306ff5558ca09074989c65341504151415241f6c6010f85e3000000498b0641ff7608488b542420488b5c24404c8b4424384c8b4c2430ff742410ff7424104c8b542428ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc03ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2180041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15870000004989c6eb0041564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800f4000000|@10112,1,@3104,@6504|106,0,@14033 155,0,@10633 199,0,@10633 7930:D14,1336|483b65187306ff5558ca09074989c6534150415141524d8b2e4d89ec4983fd070f8568010000498b4608a80175564c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe0375364c8b30498b4608488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e97cffffff4c8b6c24184d8b75004d89ed4d8b6d0849c7c3010000004d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca01604d89e749c74424f8030000004d896c24104c8b2c244d89eb4d896c240849bdf81972f1c27f00004d892c244983c6027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca01584d89ef49c745f8030000004d89db4d895d104d8965084d8975004c8b5424384c8b74243041564155ff742428ff74242848c7c30100000049b818dcd4f1c27f00004c8b4c2428ff152b0400004989c641564c8b7424084d8b3648c7c001000000e9a70200004d89e54983fc0b0f850d010000498b5e08498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85aa0000004d8b76084d8b2e4983fd050f8584000000498b460841ff7610ff15bd0300004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be481b72f1c27f00004c89336a016a01488b4424104989e0ff157403000058488d642410488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e9affdffff488d64242048b81890d1f1c27f0000488b5d08ff2341584c8b4c2428488b7c2420415d4c8b64240849bb18dcd4f1c27f0000415a488d6424084152ff7424084989fa4c895c24104c896424184c896c2420ff25e00200004983fd0d0f856e0100004d8b6e08498b45004c8b204d89e54983fc030f85be0000004c8b4c24304c8b5424284c89f3488b4424084c8b0424ff159a0200004989c6488d6424104983fe017515488d64241048b828dcd4f1c27f0000488b5d08ff23488d6424084d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d75244c89f049c7c00100000048c7c3010000004c8b34244c897424104883c410ff2529020000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70017000000c210004983fd09756348ba90d6d4f1c27f00004c89f048c7c301000000ff15c801000041584c8b4c2428488b7c2420415d4c8b64240849bb18dcd4f1c27f0000415a488d6424084152ff7424084989fa48c7c3010000004c895c24104c896424184c896c2420ff2577010000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b6424084c896424084c896c2410e9e0fbffff488d64242048b8b8dcd4f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15db000000ff15cd0000004989c6415648c7c001000000ff15b30000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd38ddd4f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c428c21000f400000000|@16675,1,@3107,@7934,@6242,@7935,@7936,@7919,@5380,@7916,@7936,@5234,@5292,@7933|242,0,@7931 267,0,@9475 354,0,@16667 511,0,@7932 600,0,@10901 635,0,@16667 763,0,@16668 912,0,@16638 957,0,@16667 1063,0,@16671 1262,0,@16674 7931:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3105,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7932:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3106| 7933:D4,536|483b65187306ff5558ca090753415041514152a8010f85e90100004c8b30ff7008498b4608488b542418488b5c24404c8b4424384c8b4c24304c8b742448ff74240841564c8b542420ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6424284d89e54d89661049bc985fd1f1c27f00004d89660849c706170000004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c7442418010000004d89ed4d896c241049bdc85fd1f1c27f00004d896c240849c70424170000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930ff150c0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004156488b5c24284883c3027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424504c8b6c24484c8b6424404c8b5c24384156415541544153488b4424284c8b4424404c8b4c24384c8b542430e847feffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000049bdc06ad1f1c27f00004c8968184c8970104c8b34244c897008488d64242848c7000b0000004883c408c22000488d64242048b8a06ad1f1c27f0000c22000f400|@16684,1,@3113,@7906|126,0,@10541 192,0,@10543 374,0,@9475 473,0,@10633 523,0,@10632 7934:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3108|33,0,@9475 88,0,@11193 7935:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3109| 7936:D10,592|483b65187306ff5558ca0907534150415141524c8b68184d89ee4d8b5d084d89dc4d8b1b4983fb03752e4d8b6424084c3b2562020000750949c7c403000000eb0749c7c4010000004983fc03750a488d642420e9e40100004d8b5d084d89dc4d8b1b4983fb03752d4d8b6424084c3b251c020000750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb764d8b5d084d89dc4d8b1b4983fb03752d4d8b6424084c3b25d7010000750949c7c403000000eb0749c7c4010000004983fc03750949c7c503000000eb394d8b5d084d89dc4d8b1b4983fb0375224d89e54d8b6d084c3b2d90010000750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f8422010000488b5424284c8b6c2438498d47e0483b45107306ff5550ca04604989c748c740f8030000004c8968104c8b6c24184c8968084c8930ff124989c54d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15080100004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d896e0849c706170000004156f6442420017408584883c420c220004c8b5424484c8b7424404c8b6c24384c8b642430415641554154488b442438488b5c24304c8b4424284c8b4c2420ff1580000000ff15720000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c22000488d64242048b880ddd4f1c27f0000c22000f4000000000000|@16679,1,@3110,@7906,@7937,@5380,@4679,@4680,@4681,@4678|574,0,@16676 7937:D4,208|483b65187306ff5558ca09074989c65341504151415241f6c6010f859f000000498b0641ff76084c8b7424404c8b6c24384c8b642430415641554154488b5c24384c8b4424304c8b4c24284c8b542420ff15920000004989c641564c8b7424484c8b6c24404c8b642438415641554154488b442420488b5c24404c8b4424384c8b4c24304c8b542428e872ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c21800488d64242048c7c001000000c21800f400|@10112,1,@3111,@7938| 7938:D7,592|483b65187306ff5558ca09075053415041514152488b5c24204c8b334983fe0d757a4889db4c8b73084d8b364d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe037551488b04244c8b4424184c8b4c24104c8b542408ff151c0200004989c6488d6424284983fe01751048b838ded4f1c27f0000488b5d08ff234d8b36498b16488b4424184c8b34244c897424184883c418ff22488b542438488b5c24404c8b442430ff742410ff742410488b4424304c8b4c24104c8b542428ff124989c64156488b5c24484c8b442438ff742418ff742418488b4424384c8b4c24184c8b542430ff15880100004989c64156488b5c24504c8b442440ff742420ff742420488b4424404c8b4c24204c8b542438ff15540100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642430498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe0375134c8b34244c897424184883c418ff2520000000c21800f400000000|@16683,1,@3112,@6504,@7922,@7926,@7916|116,0,@16680 402,0,@10633 7939:D7,704|483b65187306ff5558ca090750534150415141524c8b542430488b442410488b5c24204c8b4424084c8b0c24ff15be0200004989c64983fe010f85a50100004c8b7424204d8b2e4d89ec4983fd0775124d89f64d8b76084156ff742420e9fb0100004d89f64d89e54983fc0b0f85fd0000004d89f54d89ee41ff75084d89f6498b46184c8b68184d89ee4d8b6d084d8b6d004983fd050f85a90000004d8b76084d8b2e4983fd050f8583000000498b460841ff7610488b5c2408ff15280200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bed82872f1c27f00004c89336a016a01488b4424104989e0ff15df01000058488d642418488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c896c24104883c408e9d0feffff488d64243048b81890d1f1c27f0000488b5d08ff23488b5c2418ff15880100004989c64c8b6424204d89e54d3be67e054d89eeeb00ff34244156e9970000004d89f64983fd0d755f4d89f64d8b7608498b064c8b284d89ee4983fd03750d488d642418584883c408c208004983fe09750d488d642418584883c408c20800488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c896c24104883c408e929feffff488d642418584883c408c20800488d6424184d8b36498b4608483b04247e08488d642410c20800584883c408c20800f64424080175484c8b742408498b064d89f641ff76084c8b7424504156488b5c24104c8b4424384c8b4c24304c8b542428e8c4fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb1584883c438c20800f644240801754d4c8b6c24084d8b75004d89ed41ff7508498b46084c8b7424484156488b5c24104c8b4424304c8b4c24284c8b542420e868fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebac584883c430c20800f4000000000000|@16685,1,@3115,@7941,@5234,@5292,@7916|228,0,@7940 311,0,@10901 7940:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3114| 7941:D3,416|483b65187305ff5558cd09f6c301751f4c8b33488b5b084d8b76184d8b2e4983fd0175064d8b7608eb0de9d1ffffff48c7c0ffffffffc341f6c6010f85f10000004d8b264d8b6e084d8b6424184c8b58184d8b4c24084d89ca4d8b094983f903754e4d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f80375284d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037567eb794d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89ee483b65187306ff5558ca0940e90effffff49c7c603000000eb0749c7c6010000004983fe03750948c7c001000000eb05e9b3fefffff6c30175304c8b6b084989c64983c602711048b8d0c6d0f1c27f0000488b5d08ff234c89eb4c89f0483b65187305ff5558cd09ebcb4883c002711048b8d0c6d0f1c27f0000488b5d08ff23c3f4000000000000|@16686,1,@3116|353,0,@9475 394,0,@9475 7942:D4,424|483b65187305ff5558cd0953a80175154c8b28ff70084d8b75004d8b3641ff75084156eb0d488d64240848c7c001000000c3f604240175734c8b2c244d89ee41ff75004d89f641ff76084c8b742408498b06488b5c2428ff15630100004989c64983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb22415d4c896c2408483b65187303ff55584883c408eb87488d64240849c7c60100000041f6c60175504d8b364d8b76084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424084d89750849be382d72f1c27f00004d89750049c7c401000000415e4883c408eb0c488d642408585be9e7feffff41f6c60175314d8b56084d89e34983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dc483b65187306ff5558ca0070ebc94983c402711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@16691,1,@3121,@7946|242,0,@7943 302,0,@9475 344,0,@9475 7943:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@16687,1,@3117|36,0,@9475 7944:D3,312|483b65187306ff5558ca0903a801751f4c8b30488b40084d8b76184d8b2e4983fd0375064d8b7608eb44e9d1ffffff4d8d77e84c3b75107306ff5550ca00034d89f749c746f8020000004d894e0849bd582f72f1c27f00004d892e4d893049c740080100000048c7c001000000c341f6c60175474d8b264d8b6e084d8b1c244d8b1b4c8b134d3bda75204d8d77f04c3b75107306ff5550ca09134d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0943ebb349c7c6010000004983fe017505e933ffffff4d8b364d8b6e0849c7c601000000a80175314c8b58084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234c89d84d89e6483b65187306ff5558ca0161ebcb4983c602711048b8d0c6d0f1c27f0000488b5d08ff234d89284d89700848c7c001000000c3f40000|@16690,1,@3120|80,0,@7945 238,0,@9475 280,0,@9475 7945:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@16689,1,@3119| 7946:D5,1000|483b65187305ff5558cd0953ff15f60300004989c64156488b442408ff15de0300004989c34c8b34244d8b264d89e54983fc0d755a4d8b234983fc0d75514d89f64d8b7608488d6424084d8b6b084d8b1e4d8b65004d8b1b4983fb037524488d6424084d8b24244983fc03751a4d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c34d89f64d89ec4983fd05754a4d8b2b4983fd0575414d89f6498b46084d89f641ff7610498b5b0841ff7310e841ffffff4989c64983fe037510488b4424085b488d642418e928ffffff488d64242048c7c001000000c34d89f64d89e54983fc0775224d8b234983fc0775194d89f64d8b6e08488d6424084d8b730841554156e9d30100004d89f64983fd0b0f85140100004d8b2b4983fd0b0f85000100004d89f64d8b6e084d89f64d8b6618488d6424084d8b73084d8b5b184d8b6424184d8b5b184d8b4c24084d89ca4d8b094983f9037553488d6424084d8b43084d89c14d8b004983f803750949c7c003000000eb0749c7c0010000004983f803752d4d8b62084d89cb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc03756ceb72488d6424084d89d14d8b124983fa01754c4d8b43084d89c24d8b004983f801750949c7c003000000eb0749c7c0010000004983f80375264d89cc4d8b6424184d89d34d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03740848c7c001000000c341554156eb14488d642410eb05488d64241048c7c001000000c34c8b6c24084d89ee4983fd0175294c8b34244983fe01488d642408750d488d64240848c7c003000000c3488d64240848c7c001000000c34d89f6498b064d89f641ff7608f644240801754d4c8b742408498b1e4d89f641ff7608e860fdffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e975ffffff488d64242048c7c001000000c3488d64241848c7c001000000c34c8b6c24084d89ee4983fd0175294c8b34244983fe01488d642408750d488d64241048c7c003000000c3488d64241048c7c001000000c34d89f64d8b2e4d89f641ff7608f6442408010f85a30000004c8b6424084d8b34244d89e441ff7424084d8b6500498b45084d8b2e498b5e084d3be57502eb374d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf3754f498d742408498d7d08483bc9f3a67407488d642428eb3de868fcffff4989c64983fe0375234c8b6c2408415c488d6424084c8924244c896c2408483b65187303ff5558e922ffffff488d642428eb05488d64242848c7c001000000c3488d64242048c7c001000000c3f40000|@16692,1,@3122,@5062,@5062| 7947:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@16698,1,@3123| 7948:D3,24|483b65187305ff5558cd0148b8a077d1f1c27f0000c3f400|@16699,1,@3124|13,0,@10739 7949:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@16698,1,@3125| 7950:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@14039,1,@3126|13,0,@10508 7951:D3,32|483b65187305ff5558cd0149be58c3d0f0c27f0000498b16ff22f40000000000|@12421,1,@3127|13,0,@4661 7952:D4,48|483b65187305ff5558cd09483bc3750848c7c003000000c3a801750bf6c3017506ff252100000048c7c001000000c3f4|@16732,1,@3128,@7953| 7953:D3,136|483b65187305ff5558cd094889c64889df4c0fb676ff4e8d3475010000004c0fb66fff4e8d2c6d010000004d3bf5754f4c8b77f849c1e60849c1ee074983ce014c8b6ef849c1e50849c1ed074983cd014d3bee75224a8d0cf5f9ffffff48d1e9483bc9f3a6750848c7c003000000c348c7c001000000c348c7c001000000c348c7c001000000c3f4|@16733,1,@3129| 7954:D3,32|483b65187305ff5558cd0149be88cbd0f0c27f0000498b16ff22f40000000000|@12421,1,@3130|13,0,@4792 7955:D3,32|483b65187305ff5558cd0149be38c4d0f0c27f0000498b16ff22f40000000000|@11385,1,@3131|13,0,@4675 7956:D3,32|483b65187305ff5558cd0149bef8c3d0f0c27f0000498b16ff22f40000000000|@10097,1,@3132|13,0,@4671 7957:D3,32|483b65187305ff5558cd0149bed8c3d0f0c27f0000498b16ff22f40000000000|@16738,1,@3133|13,0,@4669 7958:D4,48|483b65187306ff5558ca0d014c8b6a084c8b4a104c8b5218ff34244c894424084d89e8ff251f000000f4000000000000|@17042,1,@3140,@7959| 7959:D53,7720|483b65187306ff5558ca09074989c5534150415141524d8b65004d89e64983fc057514488d64242049bea008d5f1c27f0000e9c71c00004d89f44983fe070f851a03000041ff75084d8b7510f60424010f85f40200004c8b24244d8b2c244d89e44d8b6424084983fc010f85d1020000488d64240841ff7500498b45084c8b6c24204d8b75004d89ed4d8b650849c7c3010000004d8d6ff04c3b6d107306ff5550ca01584d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb705772f1c27f00004d895d004983c6027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca01704989df48c743f8030000004d89e44c8963104c896b084c89334c8b74243841564c8b4424284c8b4c24204c8b542418e8affeffff4989c6415648b8f008d5f1c27f0000ff15621e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6424104d8b34244e8d2c75010000004983fd01750f49be307dd1f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15241c00000f872a0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e96d140000488d64243848b8f8c7d0f1c27f0000488b5d08ff236a016a01e9ad0c0000488d64242849be0809d5f1c27f0000e9890b00004d89e64983fc0b0f850706000041ff750841ff75104d8b75184d8b66184d89e54d8b6424084d8b24244983fc050f85a6000000488d6424084d8b75084d8b2e4983fd05757f498b460841ff7610488b5c2408ff150a1c00004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bec05872f1c27f00004c89336a016a01488b4424104989e0ff15c11b000058488d642418488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9defbffff488d64242848b81890d1f1c27f0000488b5d08ff234c8b642428498b1c244d89e44d8b44240849c7c3010000004d8d67f04c3b65107306ff5550ca08694d89e749c74424f80100000041c64424ff404d891c2441544d8d5fe04c3b5d107306ff5550ca08614d89df49c743f8030000004d8943104c8b24244d89e24d89630849bc805972f1c27f00004d89234883c3027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d67e04c3b65107306ff5550ca086d4d89e749c74424f8030000004d89d24d89d14d895424104d895c240849891c2441544d89ee498b06ff15a91a00004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff157d1a00004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c7061700000041564c8b7424504156ff742410488b44243048bb5809d5f1c27f00004c8b4424484c8b4c24404c8b542438ff15091a00004c8b7424204983fe010f85c20100004d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c745100100000049beb8c0d4f1c27f00004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b000000415648b8f008d5f1c27f0000ff15711900004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24184d8b75004e8d2475010000004983fc01750f49be6809d5f1c27f0000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b155b1700000f87900000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb6809d5f1c27f000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b3648c7c001000000e931060000488d64244848b8f8c7d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107305ff5550cd014d89ef49c745f80300000049c745100100000049beb8c0d4f1c27f00004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca01204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b0000004156ff15af1700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415648b8f008d5f1c27f0000ff15571700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24184d8b75004e8d2475010000004983fc01750f49be6809d5f1c27f0000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15491500000f87900000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb6809d5f1c27f000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b3648c7c001000000e9c4020000488d64244848b8f8c7d0f1c27f0000488b5d08ff234983fe0d0f85860100004d8b75084d8b264c89e04d8b14244d89d34983fa090f858000000048ba90d6d4f1c27f00004c89e848c7c301000000ff15cf1500004989c54d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b000000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9e9f5ffff4d89dc4983fc030f85b9000000488b4424284c89eb4c8b4424104c8b4c24084c8b1424ff15381500004989c6488d6424184983fe017515488d64240848b88009d5f1c27f0000488b5d08ff234d8b36498b16488b0424ff124989c6488d6424084d8b2e4983fd0d75244c89f049c7c00100000048c7c3030000004c8b34244c897424084883c408ff25cc140000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c20800488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24084c896c2408e9fef4ffff488d64242049be180ad5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8800ad5f1c27f0000ff15091400004989c6eb0a49be800ad5f1c27f0000415648c7c001000000ff15e31300004989c6415648c7c001000000ff15c91300004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bda00ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15df1200004c8b34244d89f54c3b35c91200007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15631200004989c6415648c7c001000000ff15491200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c2080041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff155c1100004c8b34244d89f54c3b35461100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15e01000004989c6415648c7c001000000ff15c61000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c2080041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d80ad5f1c27f0000ff15db0f00004989c6eb0a49bed80ad5f1c27f0000415648c7c001000000ff15b50f00004989c6415648c7c001000000ff159b0f00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf80ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c208004d8b2e4983fd0175314d8b6e084d8b76104c892c244c89742408488d642408415e4983fe03750aff34246a03e91906000049c7c601000000eb194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040ebad41564c8b7424284d8b2e4d89f64d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849bed05a72f1c27f00004d8934244983c5027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e415648c7c3010000004c8b74241841f6c60175364d8b66084989dd4983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff157d0d00004889c348bac080d4f1c27f0000488b442418ff155d0d00004c8b7424104983fe0375054989c6eb1348bb180bd5f1c27f0000ff15350d00004989c641564c8b7424184983fe03750c49be70d8d0f1c27f0000eb0a49be38e0d0f1c27f00004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15100c00004989c6eb0041564c8b742458ff7424304156ff742420ff742438488b44242848c7c30100000049b85809d5f1c27f00004c8b4c24604c8b542458ff15c80b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f60a00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff159b0900004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff152d090000ff151f0900004989c6415648c7c001000000ff15050900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf80ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f6442408010f85ce0000004c8b6c24084d8b75004d89ed41ff750841ff3648bae81cd1f1c27f0000488b44241048c7c303000000ff152d0800004989c54c8b34244d89f44d3bf57507488d642408eb424d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf375584d89e4498d742408488d642408498d7d08483bc9f3a67407488d642418eb3e4c8b6424084983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff23415d4c8924244c896c2408483b65187303ff5558e935ffffff488d64242049c7c601000000eb0c488d64241049c7c6030000004983fe03750d49c7c6010000004c8b2c24eb0c49c7c601000000e905f9ffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe057c0949c7c603000000eb0749c7c601000000eba741f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15c00600004989c6eb00415649bec00bd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8080cd5f1c27f0000ff15590600004989c6eb0a49be080cd5f1c27f0000415649be400cd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8900cd5f1c27f0000ff15e80500004989c5eb0a49bd900cd5f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410ff15270500004989c6415649beb00cd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8000dd5f1c27f0000ff15c20400004989c6eb0a49be000dd5f1c27f00004d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b2c244d892c24488d6424084d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e10300004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15860200004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff1518020000ff150a0200004989c6415648c7c001000000ff15f00100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdf80ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c430c2080041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8200dd5f1c27f0000ff15040100004989c6eb0a49be200dd5f1c27f0000415648c7c001000000ff15de0000004989c6415648c7c001000000ff15c40000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd28e2d4f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c20800f400ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17043,1,@3141,@7967,@6242,@6504,@7968,@6242,@7935,@6504,@6504,@6504,@7969,@6504,@6504,@6504,@4983,@7970,@6242,@7935,@6504,@6504,@7971,@6504,@5119,@7474,@7977,@7978,@6242,@6504,@7979,@6242,@9493,@7935,@7980,@6242,@9493,@7935,@7981,@6242,@6504,@5380,@7916,@7919,@7906,@7906,@7906,@7982,@5380,@7966,@5234,@5292,@7906|42,0,@17004 230,0,@7960 255,0,@9475 344,0,@17007 447,0,@10785 749,0,@11224 819,0,@9487 849,0,@17008 986,0,@7961 1065,0,@10901 1187,0,@7962 1211,0,@9475 1402,0,@17011 1480,0,@16535 1538,0,@15120 1561,0,@17007 1664,0,@17012 1801,0,@17012 1882,0,@9487 1932,0,@16535 1990,0,@15120 2083,0,@17007 2186,0,@17012 2323,0,@17012 2404,0,@9487 2457,0,@16638 2645,0,@17013 2825,0,@17016 2897,0,@17020 2918,0,@17020 3040,0,@17021 3231,0,@9493 3273,0,@17022 3586,0,@9493 3628,0,@17022 3879,0,@17023 3900,0,@17023 4022,0,@17024 4281,0,@7963 4306,0,@9475 4401,0,@9475 4448,0,@10101 4480,0,@16215 4517,0,@17025 4549,0,@9565 4561,0,@9648 4687,0,@11224 4856,0,@17011 5159,0,@10633 5203,0,@10633 5248,0,@10632 5292,0,@10633 5628,0,@17024 5729,0,@10077 5861,0,@9475 5983,0,@9475 6121,0,@17028 6193,0,@17031 6214,0,@17031 6226,0,@17033 6298,0,@17036 6319,0,@17036 6504,0,@17037 6576,0,@17040 6597,0,@17040 6884,0,@10633 6928,0,@10633 6973,0,@10632 7017,0,@10633 7353,0,@17024 7486,0,@17041 7507,0,@17041 7629,0,@16699 7960:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3134,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7961:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3135| 7962:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3136,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7963:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3137,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7964:D3,64|483b65187305ff5558cd014c8b304d8b36498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be885c72f1c27f00004c8930c3f400|@17027,1,@3139|50,0,@7965 7965:D3,160|483b65187305ff5558cd054c8b304d8b364c8b6a084d89eb4d8b6d004e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec770848c7c003000000c348c7c001000000c34983fe017f0848c7c003000000c348c7c001000000c3f40000000000|@17026,1,@3138| 7966:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f400|@16607,1,@3160,@7503,@5380|192,0,@9475 223,0,@16618 256,0,@9475 347,0,@16621 456,0,@16603 7967:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3142|33,0,@9475 88,0,@11193 7968:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3143|33,0,@9475 88,0,@11193 7969:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c06ad1f1c27f0000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@10943,1,@3144,@6504|165,0,@10633 7970:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3145|33,0,@9475 88,0,@11193 7971:D18,3760|483b65187306ff5558ca090753415041514152a8010f85ea0400004c8b30ff70084c8b2c244983fd010f8509030000488d6424084d8b2e41ff7500498b450841ff7608488b542420488b5c24404c8b5424504c8b74244841564c8b4424204c8b4c2418ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6c24084d896e1049bdb00dd5f1c27f00004d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd80dd5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15090e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424104d896e0849c7060f00000041566a016a014c8b7424484983fe03751f49be580ed5f1c27f00004d8b2e4c892c244d8b76084c89742408e97a0b00004c8b6424184d8b34244e8d2c75010000004983fd01750f49be307dd1f1c27f0000e9ab0000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15b50c00000f872a0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e9da080000488d64244048b8f8c7d0f1c27f0000488b5d08ff234d8b2e4d8b650041ff750841ff76086a016a014c8b7424504983fe03751f49be580ed5f1c27f00004d8b2e4c892c244d8b76084c89742408e9bf0200004d8b34244e8d2c75010000004983fd01750f49be307dd1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15da0a00000f87240100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262049d1ed43c6442e013d418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb2a488d64244848b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8700ed5f1c27f0000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cf0900004989c6eb00415649bec00bd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8c80ed5f1c27f0000ff15680900004989c5eb0a49bdc80ed5f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d64240849be68e0d0f1c27f00004c892c244c89742408ff3424ff742410488b542448488b5c24684c8b5424784c8b7424704156488b4424304c8b4424484c8b4c2440ff124989c641564d8d77d84c3b75107303ff55504d89f749c746f80400000049c74618010000004c8b6c24284d896e1049bdb00dd5f1c27f00004d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcd80dd5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15f40700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415649be000fd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8500fd5f1c27f0000ff15540700004989c6eb0a49be500fd5f1c27f0000415649bec00bd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8700fd5f1c27f0000ff15e30600004989c6eb0a49be700fd5f1c27f00004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175074c8b742408eb0e488b442408ff15370600004989c64156488b5c24584883c3027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684156415541544153488b4424584c8b4424704c8b4c24684c8b542460e8d2f6ffff4889c3488b0424ff15c50500004989c641564c8b6c24104d8b75004a8d0c75010000004883f901750f49be6047d1f1c27f0000e99e0000004989cc4983c4064c89e04883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d020500000f871a0100004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc0000000049d1ec4d892641c646082e41c646092e41c6460a2e4d89ed498d7508498d7e0b48d1e9f3a4418066ffbf4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb15488d64246848b8f8c7d0f1c27f0000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e60300004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15ad0300004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b7424604d8974240849c704240d0000004d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049bba80fd5f1c27f00004d895e184d89661049bc300ed5f1c27f00004d89660849c70607000000498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b24244c896018488d6424084c8968104c89700848c7000b0000004883c460c2200041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15a40200004989c6eb00415649bec00bd5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8c80fd5f1c27f0000ff153d0200004989c5eb0a49bdc80fd5f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d64240849be68e0d0f1c27f00004c892c244c89742408ff34244c8b6c24104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0c1d1f1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15c30000004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b7424184c89334883fb017507584883c440eb0f488b0424ff1552000000488d6424484c8b34244c897424204883c420ff2532000000f400ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17063,1,@3146,@7973,@7974,@6504,@6504,@6504,@7975,@6504,@7976,@7972,@6504,@6504,@7906,@6504,@6504,@7906|149,0,@17044 197,0,@17045 384,0,@17049 438,0,@10785 740,0,@11224 810,0,@9487 856,0,@17049 905,0,@10785 1204,0,@11224 1271,0,@9487 1292,0,@17050 1386,0,@17028 1458,0,@17052 1479,0,@17052 1571,0,@9650 1682,0,@17044 1730,0,@17045 1902,0,@17054 1974,0,@17057 1995,0,@17057 2007,0,@17028 2079,0,@17058 2100,0,@17058 2280,0,@9475 2393,0,@10374 2682,0,@11224 2749,0,@9487 2970,0,@17060 2988,0,@17048 3149,0,@17028 3221,0,@17061 3242,0,@17061 3334,0,@9650 3477,0,@11224 7972:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3151| 7973:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c06ad1f1c27f0000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@10943,1,@3147,@6504|165,0,@10633 7974:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3148| 7975:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c06ad1f1c27f0000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@10943,1,@3149,@6504|165,0,@10633 7976:D4,256|483b65187305ff5558cd094989c64889d841f6c6010f859700000041ff364d8b76084889c34c89f0e8d3ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb01c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2521000000c3f400000000000000|@10943,1,@3150,@6504| 7977:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@3152|53,0,@9475 7978:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3153|33,0,@9475 88,0,@11193 7979:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3154|33,0,@9475 88,0,@11193 7980:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3155|33,0,@9475 88,0,@11193 7981:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3156|33,0,@9475 88,0,@11193 7982:D6,584|483b65187306ff5558ca090753415041514152a8010f856b010000ff30ff7008488b542428488b5c24384c8b7424404156488b4424104c8b4424284c8b4c24204c8b542418ff124989c64156488b5c24404c8b4c2448ff742420ff742420488b44242049b84810d5f1c27f00004c8b542438ff15f80100004989c64156488b5c24484c8b4c2450ff742428ff742428488b44242849b84810d5f1c27f00004c8b542440ff15bf0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb0f488d64242048c7c001000000c2100041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15840000004989c6eb0041564c8b7424484c8b6c244041564155488b442418488b5c24404c8b4424384c8b4c24304c8b542428e8f1fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c428c21000f4000000|@10112,1,@3159,@6504,@7922,@7926|101,0,@17064 150,0,@17064 330,0,@10633 7983:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17065,1,@3157,@7984| 7984:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3158,@5380|170,0,@9475 287,0,@16603 7985:D8,576|483b65187306ff5558ca0d014c8b334c8b630849c7c3010000004d8d6ff04c3b6d107306ff5550ca05594d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca05514d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bbc07f72f1c27f00004d895d004983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca05714989df48c743f8030000004d89e44c8963104c896b084c89334c8b52084c8b72104c8b6a18415641554d89c149b8f010d5f1c27f0000ff15990100004989c6415648b84011d5f1c27f0000ff157c0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d5000000ff15c70000004989c6415648c7c001000000ff15ad0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bd7011d5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c408c3f4|@17073,1,@3164,@7990,@7989,@7935,@7906,@7930|108,0,@7986 133,0,@9475 209,0,@17068 230,0,@17070 508,0,@17072 7986:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3161,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 7987:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17069,1,@3162,@7988| 7988:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3163,@5380|170,0,@9475 287,0,@16603 7989:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@3166|89,0,@14034 7990:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3165|33,0,@9475 88,0,@11193 7991:D4,40|483b65187306ff5558ca0d014d89c14989d84889c34c8b7208498b06ff251e000000f40000000000|@17082,1,@3167,@7992| 7992:D3,328|483b65187306ff5558ca09034c89caa8010f85240100004c8b30488b40084d8b1e4d8b66084d8b7610493bdb7502eb364c8b2b4e8d2c6d010000004d8b134c89d14e8d1455010000004d3bea0f85e1000000488d7308498d7b08483bc9f3a67405e9cd0000004d8b68184d8b6424184d8b55084d89d34d8b124983fa03754a4d8b4c24084d89ca4d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375234d8b6b084d89d44d8b6424084d3bec750949c7c503000000eb0749c7c501000000eb604d89da4d8b1b4983fb01754d4d8b4c24084d89cb4d8b094983f901750949c7c103000000eb0749c7c1010000004983f90375264d89d54d8b6d184d89dc4d8b6424184d3bec750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd0375044c89f0c34989d1e9c5feffff48c7c001000000ff22f4000000|@17083,1,@3168| 7993:D3,32|483b65187305ff5558cd0148b87813d5f1c27f0000488b5d08ff23f400000000|@17088,1,@3169|13,0,@17085 7994:D3,120|483b65187305ff5558cd054d8d77e04c3b75107305ff5550cd054d89f749c746f80300000049c74610010000004989460849c7060d000000498d47d8483b45107306ff5550ca04404989c748c740f8040000004c8b6a104c8968184c8b6a084c8968104c89700849be988672f1c27f00004c8930c3f40000|@17105,1,@3176|105,0,@7995 7995:D4,32|483b65187305ff5558cd05488b5a084c8b42104c8b4a18ff251b000000f40000|@17096,1,@3172,@7996| 7996:D6,504|483b65187306ff5558ca09034989c64c89c84156534c8b7424084d8b2e4d89ec4e8d2c6d010000004983fd090f8e210100004d89f64d89e54e8d2465010000004983fc097315488d64241048b82046d1f1c27f0000488b5d08ff234d89f64e8d2c6d010000004983fd0975054d89f5eb7a49c7c4050000004e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca01414d89ef49d1ec4d8965f841c645ff4149c745080000000049c74500040000004d89f64d0fb66608458865084d89f64d0fb66609458865094d89f64d0fb6660a4588650a4d89f64d0fb6760b4588750b418065ffbf4c3b2d2e010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe09753249beb014d5f1c27f0000498d7508498d7e0848c7c104000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375054c89c0eb5b4c8b304983fe0775524c8b68084d89ee41f6c501752f4d8b6d0841f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd0375094d8b36498b4608eb25ff15640000004889c348bac814d5f1c27f0000488b4424084158488d642408ff253d0000004c8b304983fe0d75174c8b70084d8b364c89f0483b65187305ff5558cd01ebe0ebb9f40000|@17103,1,@3174,@7997,@7999,@17092|77,0,@10364 273,0,@17092 441,0,@17093 7997:D4,160|483b65187306ff5558ca0d014989c6524d8d6fe04c3b6d107306ff5550ca08414d89ef49c745f8030000004d89451049895d084d89750041554c8b6c24084d8b6d08498b45004989d84c89f3ff15660000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b2c244d8b6d08488d6424084d89750048c7c001000000c3f4000000000000|@17094,1,@3170,@7998| 7998:D3,376|483b65187306ff5558ca0901a8010f8557010000ff30488b40084c8b34244d8b264d89f64d8b6e084c3be37502eb384d8b34244e8d3475010000004c8b1b4c89d94e8d1c5d010000004d3bf30f85e5000000498d742408488d7b08483bc9f3a67405e9d00000004d8b70184d8b6d184d8b5e084d89dc4d8b1b4983fb0375494d8b55084d89d34d8b124983fa03750949c7c203000000eb0749c7c2010000004983fa0375234d8b7424084d89dd4d8b6d084d3bf5750949c7c603000000eb0749c7c601000000eb5f4d89e34d8b24244983fc01754b4d8b55084d89d44d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375254d89de4d8b76184d89e54d8b6d184d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe03750a488d642408e9c9feffffe8c4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@17095,1,@3171| 7999:D5,224|483b65187305ff5558cd014c8b304983fe0b0f85b1000000488b5808488b40184c8b68184d89ee4d8b6d084d8b5d004d89dc4983fb01751048b88815d5f1c27f0000488b5d08ff234d89e54983fd0575774d8b76084d8b2e4983fd05755a498b460841ff7610ff15940000004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea88c72f1c27f00004c89336a016a01488b4424104989e0ff154b00000058488d642410e948ffffff48b81890d1f1c27f0000488b5d08ff23c348b82816d5f1c27f0000488b5d08ff23f4000000000000|@17104,1,@3175,@5234,@5292|58,0,@17097 144,0,@8000 186,0,@10901 203,0,@17100 8000:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3173| 8001:D4,32|483b65187305ff5558cd05488b5a084c8b42104c8b4a18ff251b000000f40000|@17096,1,@3177,@7996| 8002:D3,112|483b65187305ff5558cd01a8017552ff30488b40084c8b34244d8b76084983fe037534e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99fffffff48c7c001000000c3f4000000000000|@9893,1,@3179| 8003:D3,32|483b65187305ff5558cd0148b85818d5f1c27f0000488b5d08ff23f400000000|@17115,1,@3180|13,0,@17112 8004:D3,32|483b65187305ff5558cd0148b8401bd5f1c27f0000488b5d08ff23f400000000|@17115,1,@3181|13,0,@17132 8005:D3,32|483b65187305ff5558cd0148b8c81bd5f1c27f0000488b5d08ff23f400000000|@17139,1,@3182|13,0,@17136 8006:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3183,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8007:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3184,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8008:D5,144|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15900000004989c64d8b2e4983fd0d751d4c89f04c8b3424498b5e08488d64240849c7c001000000ff255f000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244d8b6d08488d6424084c8968104c89700848c70017000000c3f4000000000000|@17115,1,@3185,@5380,@8009| 8009:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3186,@5380|170,0,@9475 287,0,@17161 8010:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17164,1,@3187|36,0,@9475 8011:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17115,1,@3188| 8012:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@3189| 8013:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10207,1,@3190| 8014:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3191,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8015:D5,392|483b65187305ff5558cd014c8b284d89ee4983fd0d751d4c8b7008498b064c8b304983fe03750848c7c001000000c3e9ccffffff4983fe0b0f85bd000000488b58084c8b70184d8b66184d89e54d8b6424084d8b24244983fc05750949c7c403000000eb0749c7c4010000004983fc03740f4d89ec49c7c301000000e9820000004d89ee4d8b76084d8b2e4983fd05755a498b460841ff7610ff15090100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be809872f1c27f00004c89336a016a01488b4424104989e0ff15c000000058488d642410e915ffffff48b81890d1f1c27f0000488b5d08ff2348c7c001000000c3f6c30175314c8b53084d89dd4983c502711048b8d0c6d0f1c27f0000488b5d08ff234c89d34d89eb483b65187306ff5558ca0858ebca4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8975084d8965004d89ee498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f40000000000|@17184,1,@3216,@5234,@5292|195,0,@8016 237,0,@10901 279,0,@9475 8016:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3192| 8017:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3194|33,0,@9475 88,0,@11193 8018:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3195|33,0,@9475 88,0,@11193 8019:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f400|@17163,1,@3196,@7503,@5380|192,0,@9475 223,0,@16618 256,0,@9475 347,0,@16621 456,0,@17161 8020:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3197|32,0,@9475 87,0,@11193 8021:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3198|33,0,@9475 88,0,@11193 8022:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@10111,1,@3199|32,0,@16320 137,0,@9475 8023:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3200|33,0,@9475 88,0,@11193 8024:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3201|33,0,@9475 88,0,@11193 8025:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3202|33,0,@9475 88,0,@11193 8026:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3203|33,0,@9475 88,0,@11193 8027:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3204|33,0,@9475 88,0,@11193 8028:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3205,@5380|170,0,@9475 287,0,@17161 8029:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3206,@5380|170,0,@9475 287,0,@17161 8030:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3207|33,0,@9475 88,0,@11193 8031:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3208|33,0,@9475 88,0,@11193 8032:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3209|33,0,@9475 88,0,@11193 8033:D3,288|483b65187305ff5558cd09483bc3750848c7c001000000c34989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234983fd017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c706030000004d8d6fe84c3b6d107306ff5550ca09404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca09204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e814ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@10111,1,@3210|35,0,@9475 57,0,@16320 217,0,@9475 8034:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3211|33,0,@9475 88,0,@11193 8035:D13,1760|483b65187306ff5558ca0907505341504151415248bad88ed1f1c27f0000488b442420488b5c2418ff15120700004989c641f6c601750e41ff364c8b7424104d8b7668eb0f488d64242848c7c001000000c2080041f6c60175454d8b264d8b6e084d8b1c244c3b1dcc06000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9800500004d8b364d8b2e4c3b2d6806000075064d8b7610eb15488d64243048b87810d1f1c27f0000488b5d08ff2341564c8b7424204d8b2e4e8d246d010000004983fc01750f49bd8021d5f1c27f0000e9b10000004d89e34983c31a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b159c0500000f87e40400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb8021d5f1c27f000048c7c11b000000498d7308498d7d0848d1e9f3a44c89e14d89f6498d7608498d7d1548d1e9f3a4418065ffbf4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000415648c7c001000000ff15360500004989c048ba8048d1f1c27f0000488b442430488b5c240849b9e048d1f1c27f000049c7c201000000ff15000500004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea021d5f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15280400004989c048ba8048d1f1c27f0000488b442440488b5c241049b9e048d1f1c27f000049c7c201000000ff15f20300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed821d5f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba9899d1f1c27f0000488b44243048bbe048d1f1c27f000049b8e048d1f1c27f000049b9c899d1f1c27f0000ff15f40200004889c2488b442420ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc89bd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424184d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100300000049c746080100000049c706010000004156488b54243848c7c001000000ff124989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8b2c244c896810488d6424104c89700848c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c706030000004c8b7424184c897424204883c420ff22488d64243848b8f8c7d0f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dad00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4300000075094d8b7610e925faffff488d64243048b87810d1f1c27f0000488b5d08ff23f40000ffffffffffffff01|@17179,1,@3212,@4650,@4650,@5307,@5057,@5149,@5057,@5149,@4650,@4650,@5268|22,0,@10895 174,0,@10158 215,0,@9991 255,0,@17174 393,0,@17174 503,0,@10384 523,0,@10385 619,0,@10236 663,0,@17175 757,0,@10384 777,0,@10385 873,0,@10236 917,0,@17177 995,0,@10952 1010,0,@10385 1020,0,@10385 1030,0,@10954 1129,0,@10966 1217,0,@10966 1305,0,@10966 1581,0,@9487 1690,0,@10198 1735,0,@9991 8036:D3,24|483b65187305ff5558cd0148b85022d5f1c27f0000c3f400|@17183,1,@3213|13,0,@17181 8037:D5,328|483b65187305ff5558cd0953a8010f85200100004c8b30ff7008498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc017d5f1c27f00004c8968084c893048c7c303000000ff15150100004989c64156488b0424ff15fe0000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084c89e34d8966104d896e0849c706050000004156488b442408e8fbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@10112,1,@3214,@5400,@5156|55,0,@17107 8038:D3,216|483b65187305ff5558cd09483bc3750848c7c001000000c349bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c6010000004e8d24f5f9ffffff4983cc054d8d77e04c3b75107306ff5550ca09304d89f749c746f8030000004d8966104d896e0849c7060d00000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e85bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3215|26,0,@10468 146,0,@9475 8039:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3217,@5380|170,0,@9475 287,0,@17161 8040:D5,200|483b65187306ff5558ca0907415041514152f6c3010f858b0000004c8b33ff73086a016a014889c34c89f04c8b4424184989e14c8b542420ff15aa000000ff3424488b4424106a016a01488b5c24284989e04c8b4c24384c8b542430e89fffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff155f0000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d642410415e49c706010000004989460848c7c001000000c3f400000000000000|@17888,1,@3768,@8589,@8041| 8041:D8,504|483b65187306ff5558ca09074989dd41514c8b204d89e64983fc037515415e49c706010000004d896e0848c7c001000000c34983fe017518488b58084c89e8415d4d89d14d89c24d89e8ff25e00100004c8b600849c7c3010000004d8d77f04c3b75107306ff5550ca003d4d89f749c746f80100000041c646ff404d891e41564d8d5fd84c3b5d107306ff5550ca00354d89df49c743f80400000049beb05fd1f1c27f00004d8973184d89431049be6086d1f1c27f00004d8973084c8b34244d89334d8d77e84c3b75107306ff5550ca003d4d89f749c746f80200000049c74608010000004d891e498d5fe8483b5d107306ff5550ca00754989df48c743f80200000048c74308010000004c89236a016a0148ba6823d5f1c27f000041566a01ff350201000054488304241841524d89c14d89e848b8d8c8d0f1c27f000049ba6086d1f1c27f0000ff15d2000000ff3424ff7424104c8b742420498b06ff15b50000004989c648c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c6eb09ff15440000004989c64c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c428c3f4000000000000|@17975,1,@3770,@8591,@8123,@8042,@17976,@8590|157,0,@10542 175,0,@10839 276,0,@17185 310,0,@9493 320,0,@10839 8042:D12,1488|483b65187306ff5558ca0d07525041514152f6c3010f854c0400004c8b33ff73084d8b264d89e54983fc010f85da0100004d8b6e0849c7c6010000004d8d67f04c3b65107306ff5550ca00614d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca00314d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00414989c748c740f80200000048c74008010000004c893049c7c6010000004d8d6ff04c3b6d107306ff5550ca01414d89ef49c745f80100000041c645ff404d8975004c8b5424304c8b7424504d8d5fb84c3b5d107306ff5550ca01654d89df49c743f8080000004d896b3849c74330030000004d8973284d8943204c8b6c24184d89ee4d896b184c8b6424104d89e54d8963104c8b4c24084d89cc4d894b084d89134d89d84c8b5c24404c8b5424304d8d4fb84c3b4d107306ff5550ca017d4d89cf49c741f8080000004d8951384d8959304d89e44d8961284d89ed4d8969204c8b2c244d896918488d6424184d89f64d897110488d6424084c8b34244d897108488d64240849bea0bc72f1c27f00004d89316a016a0148bad023d5f1c27f000048c7c3010000004989e2ff1564040000488b1c24ff7424084883fb0175074c8b742438eb0e488b442438ff153c0400004989c64c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c410c228004983fd030f85ef0000004d8b6e08498b5e104c8b7424404c8b5c24304d8d67d04c3b65107306ff5550ca08694d89e749c74424f8050000004d895c24204d897424184c8b34244d89742410488d6424084c8b5c24184d89de4d895c240849bba01176f1c27f00004d891c244c8b5424284d8d5fd04c3b5d107306ff5550ca08754d89df49c743f8050000004d8953204d8963184d896b104d89f64c89f24d89730849be401276f1c27f00004d89334889d2488b442410488b7c24085e488d6424184c8b6c24284c8b6424204c8b5424104c8b4c24084c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e9fcfcffff498b5e104d8b761841ff366a016a014c8b7424384d8b56084c8b7424484156ff742430ff74243041504c89c04c8d4424204c8b4c2450ff15d8020000ff3424488b5c24106a016a014c8b4c246054488b4424304c8b4424404c8b542448ff15a9020000ff34244c8b44241049c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca00014d89ef49c745f80400000049beb05fd1f1c27f00004d8975184c8b7424504d89f14d8975104c8b7424484d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00274d89f749c746f80200000049c74608010000004d892e6a016a01488b5424704c8bac24900000004c8ba4248000000041566a0141555448830424184154488b842490000000488b5c2478e8bdfbffffff3424ff7424104c8b742420498b06ff15b00100004989c648c7c001000000e984000000ff742430488b5424404c8b7424484c8b6c2450498d47c8483b45107306ff5550ca04614989c748c740f8060000004c8968284c8b6c24084c8968204c8b6c24104c8968184c8940104c8b6c24184c8968084c8930ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64242048c7c0010000004883c408c2280041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054889c3eb09ff15b60000004889c34883fb017507488b5c2428eb0e488b442428ff15930000004889c34883fb017507488b5c2440eb0e488b442440ff15700000004889c34883fb01750a4c8bb424a8000000eb11488b8424a8000000ff15470000004989c64c8bac24980000004d8975004c8b34244d897508488d64240848c7c0010000004881c480000000c22800f400|@17885,1,@3672,@8495,@8496,@8497,@8498,@8123,@8499,@8505,@8494,@8044|411,0,@8043 428,0,@17188 618,0,@8492 686,0,@8493 952,0,@10542 8043:D3,120|483b65187305ff5558cd054989d34c8b284c8b70084d8b46204d8b76286a016a01498b5308498b4310498b5b184d8b4b204d8b53284d8b63304d8b5b384156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@17187,1,@3221| 8044:D53,5488|488dbc2498feffff483b7d187306ff5560ca0d075253415041514152a8010f856f0800004c8b28ff700841ff75004c8b34244d8b264c8d1d080000004f8d5ca3fc41ffe3e9f3000000909090e9c9010000909090e9c8010000909090e9c7010000909090e9c6010000909090e9c5010000909090e9c4010000909090e9c3010000909090e9c2010000909090e9c4010000909090e901030000909090e900030000909090e902030000909090e9ce030000909090e9cd030000909090e9cc030000909090e9cb030000909090e9ca030000909090e9c9030000909090e9cb030000909090e95e040000909090e913060000909090e912060000909090e911060000909090e910060000909090e90f060000909090e911060000909090e917070000909090e916070000909090e935070000909090e9340700009090904d89f64d8b7608488d6424084d8b6e2841ff750041ff3641ff761041ff761841ff76204c8b7424404d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75204d89f641ff7628488b442438ff15761500004989c641564c8b7424384983fe037507488b5c2450eb0d488b0424ff154d1500004889c3488b442440ff15371500006a016a014889e3ff1522150000ff34244c8b6c24104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849c706010000006a016a01ff74246841554156e9110b0000488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e94a0100004d89f641ff76084c8b7424284d8b164d89f64d8b46084d89f6498b5e104d89f64d8b4e28488b0424ff156d1400004989c64156488b442408ff15551400004c8b7424304d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408ff1517140000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15ef1300004889c34883fb017507488b5c2450eb0e488b442450ff15cc1300004889c34c8b4424484d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542450488b4424284c8b4c24384883c430415a4883c420e966fcffff488d642408eb05488d642408e9d90000004c89f3488b43086a016a014c8b742440498b56084c8b4424304989e1ff12488b1c24ff7424084883fb017507488b5c2440eb0e488b442440ff15df1200004889c34c8b4424384d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542440488b4424184c8b4c24284883c420415a4883c420e981fbffff488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e95d0200004d89f64d8b7608488d6424084d8b6e204d8b6d00498b1e498b46084d8d77c84c3b75107306ff5550ca09204d89f749c746f8060000004c8b6424104d8966284c8b24244d896620488d6424084c8b6424204d8966184d896e104c8b6c24104d896e0849bd68d472f1c27f00004d892e41564883fb017502eb06ff1595110000488b542428488b5c24204c8b4424184159415a4883c420e9b9faffff4d89f64d8b7608488d6424084d8b6e10498b45004d8b6e1841ff75004d8b762041ff364c8b6c24284d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f64d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408ff15fa100000ff3424488b5c24106a016a0154488b4424484c8b4424384c8b4c24404c8b542430ff15cb100000ff3424488b5c24106a016a0154488b4424684c8b4424504c8b4c24584c8b542448ff159c100000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15741000004889c34883fb017507488b5c2430eb0e488b442430ff15511000004889c34883fb01750a488b9c2490000000eb11488b842490000000ff15281000004889c34c8b8424880000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b942490000000488b4424684c8b4c24784883c470415a4883c420e9fcf8ffff488d642408eb05488d642408eb05488d642408eb05488d642408eb05488d642408e9130100004d89f6498b4608488d6424084c8b6c24184d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff7620ff15250f00006a016a0154488b5c24184c8b4424284c8b4c24304c8b542420ff15fe0e0000488b1c24ff7424084883fb017507488b5c2458eb0e488b442458ff15d60e00004889c34c8b4424504d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b542458488b4424304c8b4c24404883c438415a4883c420e9c8f7ffff488d642408eb2c4d89f44d89e641ff7424084d89f641ff762041ff75084c8b74243841ff36ff742418e98e000000488d642408eb05488d642408488b54242858488b5c24184c8b4424104c8b4c2408415a488d642420e96df7ffffff3424488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c8970084c8b7424204c8930ff124989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64242848c7c0010000004883c408c3f604240175204c8b34244d8b2e4d89f641ff76084d8b75184d8b3641ff75104156e986030000488d6424104c8b6c24384d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f6498b46206a016a01488b5c24304c8b4424204989e1ff15130d0000ff3424ff74241048ba0826d5f1c27f0000488b442438488b5c24404c8b4424284c8b4c24304c8b542420ff15db0c00004889c34883fb0175074c8b742408eb0e488b442408ff15b80c00004989c641564c8b7424784d89f541ff364d89ed4d89ee41ff75084d89f64d89f441ff76104d89e44d8b6c24184d89e44d89e641ff7424284d89f64d8b66304d89f64d8b5e384d8d77b84c3b75107306ff5550ca00384d89f749c746f8080000004d895e384d8966304c8b24244d8966284c8b6424284d8966204d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e41566a016a01488b8424880000004889e3ff15020c0000ff3424488b4424104c8bb424c8000000498b5610488b9c24980000004c8b442418ff124989c641564c8b6c24084d89ee4983fd01750949c7c601000000eb6841566a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15960b00004989c4415d4c8924244c896c2408483b65187303ff5558ebc6586a016a014c8bb424e8000000498b5608488b9c24b80000004c8b4424384989e1ff12415e488d6424104156ffb424a00000006a01f64424080175494c8b6c24084d8b75004d89ed41ff75084d8b7618498b064c8b7424084c89f34983fe0175054989c4eb09ff15090b00004989c4415d4c8924244c896c2408483b65187303ff5558ebb0586a016a01ff742448544883042408488b9c24800000004c8b4424684c8b4c24704c8b542460ff15bc0a0000488b1c24ff7424084883fb017507488b5c2420eb0e488b442420ff15940a00004889c34883fb017507488b5c2428eb0e488b442428ff15710a00004889c34883fb017507488b5c2470eb0e488b442470ff154e0a00004889c34883fb01750a488b9c24f0000000eb11488b8424f0000000ff15250a00004889c34c8b8424e80000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d8930488b9424f0000000488b8424c80000004c8b8c24d80000004881c4d0000000415a4883c420e960f3fffff6042401756c4c8b2c244d8b75004d89ed41ff7508498b4618498d5fd8483b5d107305ff5550cd014989df48c743f8040000004c8b7424104c8973184c8b7424484c8973104c8b7424284c89730849be50eb72f1c27f00004c8933ff1517090000415d4c892c24483b65187303ff5558eb8e488d642410415d4c892c24483b65187303ff5558e9c9fbfffff6442410010f85a1000000f6442408010f85960000004c8b742410498b064d89f641ff76084c8b742410498b1e4d89f641ff76086a016a01ffb42480000000ffb424d80000004c8b4424304c8d4c24104c8b942488000000ff1587080000415e415d4d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004d896b084d89334c8b6c2408415c488d6424084c891c244c896424084c896c2410483b65187303ff5558e954ffffff4c8b34244d8b2e4c896c24184d89f64d8b7608488d6424084c89742418ff742410ff7424204c8b7424704d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1deb07000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9610600004d8b364d8b2e4c3b2d8707000075064d8b5610eb18488da424d000000048b87810d1f1c27f0000488b5d08ff2348baf826d5f1c27f0000488b442430488b5c24604c8b4424684c8b4c2450ff153b0700004989c641566a016a0154488b442468488b5c24204c8b8424880000004c8b8c24900000004c8b942480000000ff1501070000ff3424ff742410488b8424a0000000ff15e40600006a016a0154488b5c24184c8b8424a80000004c8b8c24b00000004c8b9424a0000000ff15b4060000488b1c24ff7424084883fb0175074c8b742420eb0e488b442420ff158c0600004989c64156488b842490000000ff15710600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060100000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8bb424b00000004d8975104c8bb424b80000004d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424a00000004d8966084d892e41564c8bb424d80000004983fe0375154c8bb424a00000004c8bac24f0000000e97a0300004c8b8c24100100004d8b314d89c94d8b69084d89c94d8b61104d89c94d8b59184d89c94d8b51304d89c94d8b49384d8d47b84c3b45107306ff5550ca007e4d89c749c740f8080000004d8948384d8950304c8b14244d8950284c8b5424184d8950204d8958184d8960104d8968084d89306a016a01488b942430010000488b8424f800000048c7c30100000049b9e035d5f1c27f00004989e2e81fefffffff34244c8b5424104c8bb424f00000004983fe03750d4c8bb424b8000000e9e10100004c8b8424280100004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca807e4d89c749c740f808000000498978384d8948304c8b4c24184d8948284d8950204d8958184d8960104d8968084d89306a016a01488b942448010000488b84242001000048c7c3010000004c8b8c24300100004989e2e864eeffffff3424ff7424104c8b742440498b06ff15170400004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424104c89f34983fe017507488b5c2428eb0e488b442428ff159f0300004889c34883fb0175035beb12488b0424ff15810300004889c3488d6424084883fb017507488b5c2448eb0e488b442448ff15590300004889c34883fb01750a488b9c2488000000eb11488b842488000000ff15300300004889c34883fb01750a488b9c2498000000eb11488b842498000000ff15070300004889c34883fb01750a4c8bb42450010000eb11488b842450010000ff15de0200004989c64c8bac24380100004d8975004c8b34244d897508488d64240848c7c0010000004881c458010000c341f6c6010f85c90000004d8b264d8b6e084d8b24244d8b6424184d8b5c24084d89d94d8b034983f803752e4d8b5b184983fb03750949c7c303000000eb0749c7c3010000004983fb03750e4d8b610849c7042401000000eb444d89cb4d8b014983f80175564d8b49104d8b094983f903750949c7c103000000eb0749c7c1010000004983f90375294d89dc4d8b6424104d8b64240849c70424010000004d89ee483b65187306ff5558ca0044e94fffffff488da42440010000eb08488da4244001000048b8e872d2f1c27f0000488b5d08ff23e947fdffff4983fe0175234983fd017505e975fcffff488da4242801000048b8687dd2f1c27f0000488b5d08ff234d8b0e4d8b660841f6c5010f85be0000004d8b55004d8b5d084d8b094d8b49184d8b41084c89c7498b304883fe0375294d8b40184983f803750949c7c003000000eb0749c7c0010000004983f80375094c8b4f084d8911eb3d4989f8488b374883fe017552488b7f10488b3f4883ff03750948c7c703000000eb0748c7c7010000004883ff0375254d89c14d8b49104d8b49084d89114d89dd4d89e6483b65187306ff5558ca0060e92affffff488da42428010000eb08488da4242801000048b8e872d2f1c27f0000488b5d08ff23488da4242801000048b8687dd2f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dab00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da424d000000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3e00000075094d8b5610e944f9ffff488da424d000000048b87810d1f1c27f0000488b5d08ff23f40000|@17296,1,@3293,@4654,@4654,@8117,@8118,@8119,@8120,@8121,@8122,@8123,@8124,@8125,@8126,@8132,@8126,@8059,@4654,@4654,@8133,@8137,@8142,@8143,@8144,@8145,@8047,@8146,@8147,@8151,@8152,@8056,@8153,@8154,@8126,@8155,@8156,@8157,@8158,@8159,@8126,@8047,@8165,@8166,@8167,@8168,@8047,@8169,@8170,@8202,@8203,@8234,@8116|1296,0,@8045 2406,0,@17201 3312,0,@8058 3679,0,@10158 3723,0,@9991 3739,0,@17207 4305,0,@17294 5034,0,@12651 5080,0,@12705 5287,0,@12651 5311,0,@12705 5423,0,@10198 5471,0,@9991 8045:D4,64|483b65187305ff5558cd054989c6498b06498b5e084c8b42084c8b4a104c8b52184c8b6a204c8b62284154ff7424084c896c2410ff251e000000f40000000000|@17190,1,@3222,@8046| 8046:D5,288|483b65187306ff5558ca09074d89c6505341524d8b2e4d8b46084d8b5610498b5e204d8b76286a016a0141565448830424084c89c84d89e9ff1502010000488b1c24ff7424084883fb017507488b5c2428eb0e488b442428ff15da0000004889c34c8b4424204d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c0498b78384d8d47b84c3b45107306ff5550ca887e4d89c749c740f808000000498978384d8948304d8950284c8b14244d895020488d6424084d8958184d8960104d8968084d89306a016a01488b542420488b4424484c8b4c24404989e2ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c428c21000f400000000|@17191,1,@3223,@8048,@8047| 8047:D9,624|483b65187306ff5558ca09074150415141524c8b7424084d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d7d02000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9400100004d8b364d8b2e4c3b2d1902000075114d8b76104983fe037436488d642418eb15488d64241848b87810d1f1c27f0000488b5d08ff234c8b74240849c7060100000049895e0848c7c001000000c210004d8d77e84c3b75107305ff5550cd094d89f749c746f80200000049895e0849c706010000006a016a01504156f64424080175744c8b742408498b064d89f641ff76086a016a014c8b542460ff742440ff742440488b5c24284c8d4424104c8b4c2458ff1567010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb854c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408488b5c24104c8b4424284c8b4c24184c8b5424384c8b7424304c897424404883c440ff25d600000041f6c60175454d8b264d8b6e084d8b1c244c3b1db600000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4c00000075194d8b76104983fe037505e984feffff488d642418e960feffff488d64241848b87810d1f1c27f0000488b5d08ff23f4000000|@17194,1,@3227,@4652,@4652,@8052,@8049,@4652,@4652|117,0,@10158 169,0,@9991 545,0,@10198 606,0,@9991 8048:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3224| 8049:D7,1008|483b65187306ff5558ca09075041504151ff334c8b730841ff3641ff760841ff76104c8b742448ff35f30300004d89d04d89f2488b442438488b5c242849c7c101000000ff15ce0300004989c64156488b542418488b442428ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15eb0200004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdb8dd72f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54245848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bcf8dd72f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408488b1c24ff7424084c8b7424504d8b6e0841f6c50175774d8b5d004d8b55084d89f54d8b75004d89ed4d8b65184d89ed4d8b4d204d8d6fd04c3b6d107306ff5550ca085e4d89ef49c745f8050000004d894d204d8955184d895d104d8965084d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e0849c7060d000000e98c0000004983fd0175444d89f64d8b2e4d89f64d8b66184d89f64d8b5e204d8d77d84c3b75107306ff5550ca08384d89f749c746f8040000004d895e184d8966104d896e0849c70603000000eb424d89f64d8b2e4d89f64d8b66184d89f64d8b5e204d8d77d84c3b75107306ff5550ca08384d89f749c746f8040000004d895e184d8966104d896e0849c7060f00000041564883fb0175074c8b642440eb0e488b442440ff15a20000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424284d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104c8b6c24284d896e084c8b2c244d892e488d6424084c8b6c24404d8965004d89750848c7c0010000004883c450c21000f4000000000000|@17200,1,@3231,@8055,@6504,@7900,@10983|355,0,@8050 443,0,@8051 8050:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3225| 8051:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3226|36,0,@9475 8052:D5,1008|483b65187306ff5558ca09074c89ca5053415041524c8b6c24104d89ee41ff75004d89f641ff761048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef897d3f1c27f00004d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424104d89650849c745000d00000041554c8b6424304d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc3825d5f1c27f00004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004156488b542420488b442430ff124989c641564c8b6c24384d8b75004d89f44d89ed498b55084d89e54d2bf57115488d64245048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424184c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc6825d5f1c27f00004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849bdb0ded3f1c27f00004d896e0849c706250000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084883fb0175075b4883c418eb12488b0424ff15660000004889c3488d6424204883fb0175074c8b742418eb0e488b442418ff153e0000004989c6415d4d8975004c8b7424084d89750848c7c0010000004883c418c3f400000000000000|@17199,1,@3228,@8054,@8053|81,0,@14658 253,0,@9475 397,0,@17195 458,0,@15120 569,0,@9475 714,0,@17197 776,0,@15120 8053:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3230| 8054:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3229| 8055:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3232| 8056:D10,1520|483b65187306ff5558ca0d074989d64c89d241565341504d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d0506000075204d8d77f04c3b75107306ff5550ca05104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0540ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9d10400004d8b364d8b2e4c3b2da105000075064d8b7610eb15488d64241848b87810d1f1c27f0000488b5d08ff234983fe03740d488d64241848c7c001000000c34c8b304983fe01754e49c7c5010000004d8d77f04c3b75107306ff5550ca05204d89f749c746f80100000041c646ff404d892e4d8d6ff04c3b6d107306ff5550ca05404d89ef49c745f8010000004d8975004c8928eb034d8b36415648c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424204d8b76084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b6424184d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004d89751049c745080100000049c74500270000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610130000004d896e0849c7062b00000041564c8b6c24204d8b75004d89f44d89ed498b55084d89e54d2bf57115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24304d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424204d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e90100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15b00100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc06ad1f1c27f00004d8965184d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017506584883c428c3584883c428ff25c500000041f6c60175454d8b264d8b6e084d8b1c244c3b1da500000075204d8d77f04c3b75107306ff5550ca05104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0540ebb549c7c6010000004983fe017515488d64241848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3b00000075094d8b7610e9d4faffff488d64241848b87810d1f1c27f0000488b5d08ff23f40000|@17203,1,@3233,@4652,@4652,@8057,@7906,@6504,@4652,@4652|117,0,@10158 158,0,@9991 441,0,@9475 684,0,@9475 1227,0,@10633 1458,0,@10198 1503,0,@9991 8057:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3234| 8058:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@17206,1,@3235,@5316| 8059:D9,328|483b65187306ff5558ca0d07525053415041514152488b442420488b5c2418ff15630100004989c641564c8b6c24304d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b442438488b5c24104c8b4424284c8b4c2420ff15210100004883f8017515488d64243848b83027d5f1c27f0000488b5d08ff23ff15f80000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004156488b442430488b5c24084c8b4424284c8b4c2420ff15ab0000004989c641564c8b7424404d8b46084d89f64d8b76104156488b442440488b5c24204c8b4c24304c8b542428ff15720000004889c34883fb017504415eeb12488b0424ff15530000004989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c3f40000|@17211,1,@3236,@8061,@8062,@8088,@8089,@8090,@8060|108,0,@17208 8060:D3,256|483b65187305ff5558cd0953a80175454c8b30ff70084d8b76184d8b36488b5424084d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb624983fd0175064d8b7608eb564d8b6e0849c7c601000000eb0d488d64240848c7c001000000c341f6c50175364d8b5d084d89f44983c4027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0460ebc44983fe01750948c7c003000000eb0748c7c005000000ff124989c64156488b442408488b5c2410e836ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3f4000000000000|@10112,1,@3291|124,0,@9475 8061:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3237| 8062:D4,192|483b65187306ff5558ca090753415041514152a8010f858e0000004c8b30ff7008498b06498b5e084d8b46104d8b4e184c8b742430ff742418ff742418ff74241841564c8b542440ff158a0000004989c641564c8b7424384156488b442410488b5c24304c8b4424284c8b4c24204c8b542418e888ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c20800488d64242048c7c001000000c20800f400000000000000|@10112,1,@3238,@8063| 8063:D8,688|483b65187306ff5558ca09074d8b3141ff76184d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb534983fd0175064d8b7608eb474d8b6e0849c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0066ebc441564983fa037528488d642408488b5c24204c8b4424184c8b7424284c89c84d89f1ff15400200004989c6e9e70000004c8b34244983fe01750f488d6424084c8b742410e9ce00000048c7c001000000ff150a0200004989c641564c8b7424084c89f34983fe017d15488d64241848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15cd0100004989c44c8b7424204d8d6fb84c3b6d107306ff5550ca00504d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8965204c8b24244d896518488d64241049c745100100000049bcf827d5f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8b742408498b06488b5c2428ff15240100004989c54d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff15f80000004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcb8c0d4f1c27f00004d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849bdb0ded3f1c27f00004d896e0849c70625000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700050000004883c408c22000f400|@17259,1,@3242,@5380,@8068,@8069,@6242,@8064|94,0,@9475 240,0,@10101 353,0,@17212 560,0,@16535 622,0,@15120 8064:D30,5336|483b65187306ff5558ca0903415041514c8b3041ff36ff70084c8b2bff730849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004c8b5c24084d895c24104c8b14244d89d34d8954240849bac00873f1c27f00004d8914244983c50241557115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89db4d895d104d8965084c8b24244d89650041554d8b76184d8b76084d8b264d89e54983fc0375064d8b7610eb534983fd0175064d8b7608eb474d8b6e0849c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b34244c89f34983fe017d15488d64244848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15471400004989c641566a016a014c8b7424184983fe0175184c8b7424204c8934244c8b7424584c89742408e9ec01000049c7c6010000004d8d5ff04c3b5d107306ff5550ca00404d89df49c743f80100000041c643ff404d89334d8d67d84c3b65107306ff5550ca00084d89e749c74424f8040000004c8b7424384d897424184c8b7424304d897424104d895c240849be100a73f1c27f00004d8934244c8b6c24284983c5027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41566a016a01488b442428488b5c24104c8b4424384989e1ff1542130000415e488d64240849c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bd480c73f1c27f00004d892c244d8d5fe84c3b5d107306ff5550ca00504d89df49c743f8020000004d89730849c7030300000049c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104c8b6424284d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424604d8966084d892e4c8b2c244c896c2408488d6424084c89742408ff3424ff74241049be8828d5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d828d5f1c27f0000ff15c01100004989c6eb0a49bed828d5f1c27f0000415649bef828d5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b82829d5f1c27f0000ff154f1100004989c6eb0a49be2829d5f1c27f0000415649bef828d5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b84829d5f1c27f0000ff15de1000004989c6eb0a49be4829d5f1c27f0000415649be8029d5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b8d029d5f1c27f0000ff156d1000004989c5eb0a49bdd029d5f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcf00bd5f1c27f00004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15b50f00004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e10e00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd985fd1f1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff158b0d00004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15b70c00004989c5eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff155d0b00004989c5eb004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc985fd1f1c27f00004d8966184d896e1049bdf029d5f1c27f00004d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be302dd5f1c27f00004d89750849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc985fd1f1c27f00004d8966184d896e1049bd982dd5f1c27f00004d896e0849c7060b000000415648c7c001000000ff15880a00004989c6415648c7c001000000ff156e0a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300500000049c74528030000004d8975204c8b34244d897518488d64240849c745100100000049bec02dd5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000ff34244156488b442460488b5c24684c8b4424184c8b4c24304c8b542470ff15b20900004989c641564c8b7424304983fe010f85050100004c8b6c24604d8b75004e8d2475010000004983fc01750f49be6809d5f1c27f0000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15c00800000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb6809d5f1c27f000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424184d8b76104d8b3648c7c001000000e9ab060000488d64247848b8f8c7d0f1c27f0000488b5d08ff23f64424080175204c8b7424084d8b364d8b36498b06ff15760800004989c549c7c601000000eb15488d64247848b8e02dd5f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b6c24684d8b75004e8d2475010000004983fc01750f49be6809d5f1c27f0000e9b00000004d89e34983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15310700000f87910000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb6809d5f1c27f000048c7c10d000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508498d7e0e48d1e9f3a4418066ffbf41564c8b7424204d8b76104d8b3648c7c001000000eb18488da4248000000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15b20600004c8b34244d89f54c3b359c0600007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15360600004989c6415648c7c001000000ff151c0600004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b6c24084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004c8b34244d89f54983fe01750a488d6424384d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c43041564c8b7424384d8b2e4e8d2c6d010000004983fd01750f49bc602ed5f1c27f0000e9b60000004d89eb4983c30a4c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b157b0400000f87710100004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb602ed5f1c27f000048c7c10b000000498d7308498d7c240848d1e9f3a44c89e94d89f6498d7608498d7c240d48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b159c0300000f87850000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424284d8b3648c7c001000000eb2a488d64245048b8f8c7d0f1c27f0000488b5d08ff23488d64245048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15070300004c8b34244d89f54c3b35f10200007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff158b0200004989c641564c8b7424184c89f34983fe017d15488d64246048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff154e0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c440c341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15630100004c8b34244d89f54c3b354d0100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15e70000004989c6415648c7c001000000ff15cd0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c470c3f400ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17260,1,@3245,@8071,@6242,@9493,@7935,@8072,@6242,@9493,@7935,@8073,@6242,@9493,@7935,@8074,@8075,@8082,@6242,@6504,@6504,@6504,@6504,@6504,@6504,@6504,@6504,@6504,@8083,@8070|130,0,@8065 157,0,@9475 294,0,@9475 350,0,@10101 518,0,@8066 548,0,@9475 715,0,@8067 922,0,@17214 994,0,@17217 1015,0,@17217 1027,0,@17218 1099,0,@17220 1120,0,@17220 1132,0,@17218 1204,0,@17221 1225,0,@17221 1237,0,@17223 1309,0,@17226 1330,0,@17226 1367,0,@17030 1780,0,@10541 2317,0,@10633 2362,0,@10632 2406,0,@11224 2451,0,@10633 2613,0,@10541 2631,0,@17227 2683,0,@17250 2732,0,@10541 2750,0,@17253 2883,0,@17254 3027,0,@17012 3164,0,@17012 3249,0,@9487 3309,0,@17255 3418,0,@17012 3555,0,@17012 3640,0,@9487 3780,0,@9493 3822,0,@17022 4104,0,@17258 4244,0,@17258 4319,0,@10766 4526,0,@9487 4547,0,@9487 4687,0,@9493 4729,0,@17022 4775,0,@10101 5075,0,@9493 5117,0,@17022 8065:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3239,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8066:D5,512|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc010f8e370100004983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53184983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e10ff154f010000e98a0000004983fd0375434983fe017d15488d64240848b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000eb414983fe017d15488d64240848b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700050000004c8b3424498b5e08488d642408ff25a5000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000000000|@16623,1,@3240,@7503,@7503|36,0,@16618 73,0,@9475 100,0,@16618 141,0,@9475 233,0,@16621 300,0,@16621 390,0,@16621 451,0,@16621 8067:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17213,1,@3241|42,0,@9475 8068:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3243,@5380|170,0,@9475 287,0,@16603 8069:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3244|32,0,@9475 87,0,@11193 8070:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c349bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e867ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@10111,1,@3263|26,0,@10468 134,0,@9475 8071:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3246|33,0,@9475 88,0,@11193 8072:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3247|32,0,@9475 87,0,@11193 8073:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3248|33,0,@9475 88,0,@11193 8074:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3249| 8075:D21,3104|483b65187306ff5558ca090753415041514152a801756c4c8b284d89ee4d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd03753bff70084d8b6e0841ff750041ff36498b461041ff761841ff7620488b5c2438ff155a0c00004989c641564c8b6c240849c7c601000000e94e010000488d642418eb05488d6424184c8b2c244d8b75004e8d2475010000004983fc017514488d64240849bef82ed5f1c27f0000e9b50000004d89e34983c3204c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15360b00000f87cd0000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbf82ed5f1c27f000048c7c121000000498d7308498d7e0848d1e9f3a44c89e14d89ed498d7508488d642408498d7e1848d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd182fd5f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff23488d64240848b8f8c7d0f1c27f0000488b5d08ff2341f6c501757a4d8b5d004d8b65084d8b134983fa0175524d8b5b084d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d895a0849c702010000004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f80200000049c74308010000004d8913eb034d89f34d89de4d89e5483b65187306ff5558ca0060eb8041564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424204d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea0c1d1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15730900004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff153a0900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b24244d896508488d64240849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b10700004989c6eb0041564c8b7424284983fe037507415ee91c050000488b442440ff15850700004989c641564c8b6424204d8b34244983fe050f855b0100004d89e44d8b7424104d89f54d8b364983fe0b750949c7c603000000eb0749c7c6010000004983fe030f85260100004d89e441ff7424084d89ee498b4608ff1522070000488b5c2408ff150f0700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bea01e73f1c27f00004c89336a016a01488b4424104989e0ff15c6060000ff34244c8b6c24304d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15950600004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d89ed4d896e0849c70617000000415648b8882fd5f1c27f0000ff153d0600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000415649bec00bd5f1c27f0000eb1c488d642460eb05488d64246048b8a02fd5f1c27f0000488b5d08ff2341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b82030d5f1c27f0000ff157f0500004989c6eb0a49be2030d5f1c27f00004156488b5424704c8b8424a0000000488b442410488b9c2480000000ff124989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049bed80dd5f1c27f00004d8975084c8b7424104d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15bc0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff154a0400004989c54c8ba424980000004d8d77d84c3b75107306ff5550ca00304d89f749c746f80400000049c74618030000004d8966104d896e0849c7060f0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c8930ff15860300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706290000004883c42841f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15290200004989c6eb004156f644243001740b415e4883c450e9250100004c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15e20100004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8882fd5f1c27f0000ff158a0100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b7424704c8b6c246841564155488b442448488b5c24684c8b4424604c8b4c24584c8b542450e8def4ffff4989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e104c8b2c244d896e08488d64241049c7060b0000004883c450415649be4030d5f1c27f000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0040ebd849c7c601000000eb0749c7c6030000004983fe03751548b89030d5f1c27f0000ff15790000004989c6eb0a49be9030d5f1c27f0000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701049beb030d5f1c27f00004c89700848c7000b000000c21000f40000000000ffffffffffffff01|@17274,1,@3251,@6504,@7906,@5380,@6504,@8078,@7906,@7906,@6504,@7906,@5380,@5234,@5292,@8079,@8080,@6504,@8081,@6504,@8077|165,0,@17261 302,0,@17261 388,0,@17262 406,0,@10202 420,0,@4656 444,0,@9487 708,0,@11224 1053,0,@10633 1098,0,@10633 1142,0,@10633 1445,0,@8076 1581,0,@17264 1661,0,@17028 1685,0,@17265 1763,0,@17268 1784,0,@17268 1853,0,@17045 2333,0,@10633 2377,0,@10633 2422,0,@10632 2466,0,@10633 2728,0,@17264 2921,0,@17269 2993,0,@17272 3014,0,@17272 3068,0,@17273 8076:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@17263,1,@3250| 8077:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3256,@5380|170,0,@9475 287,0,@16603 8078:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c06ad1f1c27f0000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@10943,1,@3252,@6504|165,0,@10633 8079:D3,160|483b65187305ff5558cd01a8010f85800000004c8b30488b40084d8b2e4983fd0d75604d8b6e084d8b66104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d083d1f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3253|133,0,@10826 8080:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3254| 8081:D4,248|483b65187305ff5558cd01a8010f8590000000ff30488b4008e8e2ffffff4989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000eb0b48b8c06ad1f1c27f0000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251e000000c3f400000000|@10943,1,@3255,@6504|165,0,@10633 8082:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3257|33,0,@9475 88,0,@11193 8083:D7,240|483b65187306ff5558ca090350534150415148c7c3010000004c8b74241841f6c60175364d8b66084989dd4983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff159e0000004989c64156488b0424488b5c2410ff15820000004889c348bac080d4f1c27f0000488b442420ff15620000004989c64156488b442408488b5c24204c8b442418ff15400000004989c64c8b6c24104c8b24244d896500488d6424304d89750848c7c001000000c3f4000000000000|@17275,1,@3258,@8085,@7474,@8086,@8084|56,0,@9475 103,0,@10101 155,0,@16215 8084:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@3262|53,0,@9475 8085:D3,256|483b65187306ff5558ca0901534150a8010f85d80000004c8b30ff70084c8b6424104d8b2c244d89e4498b5424084c8b6424084d8b24244d2bec7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408488b5c24184c8b442410e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048c7c001000000c3f4000000|@10112,1,@3259|67,0,@9475 8086:D3,136|483b65187305ff5558cd09a801756d4c8b28488b40084d8d77e04c3b75107306ff5550ca09204d89f749c746f80300000049895e104d896e0849bdc82873f1c27f00004d892e4156e8b3ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000|@10112,1,@3261|59,0,@8087 8087:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17276,1,@3260|36,0,@9475 8088:D3,624|483b65187306ff5558ca090341504151a8010f8546020000f6c3010f85360200004c8b30ff7008ff33ff730841ff760841ff76104d8b76184d8b364d8b76184d8b364d8b2e4983fd050f85f301000041ff760841ff7610488b54244048c7c003000000ff124989c54c8b7424284d89f44983fe017d15488d64244848b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d89660849c706050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424110000004d8d5fe84c3b5d107306ff5550ca00304d89df49c743f80200000049c74308010000004c8b7424184d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084c8b5c24104d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be0032d5f1c27f00004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b7424084d892e4c8b7424384d89f14c8b1c244d8933488d6424204d8d77d84c3b75107306ff5550ca00324d89f749c746f8040000004d8966184d896e1049c746080100000049c706030000004156488b442418488b5c24084c8b442428e8edfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64243848b810cfd4f1c27f0000488b5d08ff23488d642410eb05488d64241048c7c001000000c3f400000000|@12767,1,@3264|125,0,@16320 336,0,@17277 585,0,@16600 8089:D3,168|483b65187305ff5558cd01a8010f858b0000004c8b30488b40084d8b2e4d8b76084d8b264983fc1975644d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c706010000004156e8a1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b82832d5f1c27f0000488b5d08ff2348c7c001000000c3f400|@10112,1,@3265|144,0,@17278 8090:D5,144|483b65187306ff5558ca090741504151415248bac080d4f1c27f0000ff158e0000004989c64156ff34246a01f64424080175544c8b742408498b064d89f641ff76084c8b7424484c8b6c2440ff74242041564155488b5c24204c8b4424484c8b4c24404c8b542430ff153a0000004989c4415d4c8924244c896c2408483b65187303ff5558eba5584883c428c21000f4|@17290,1,@3271,@8091,@7474|20,0,@16215 8091:D32,6352|488dbc2428ffffff483b7d187306ff5560ca0907534150415141524c8b304d8b6e1841ff750041ff75084d8b36ff70084983fe0375414c8b7424104d8b76184d8b76084d8b264d89e54983fc0375094d8b7610e9640100004983fd0175094d8b7608e9550100004d8b6e0849c7c601000000e90901000048c7c001000000ff15441900004989c6415648c7c001000000ff152a1900004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc832d5f1c27f00004d896e0849bdc06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24284c8968084c89304883c430c2180041f6c50175364d8b5d084d89f44983c4027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424184d8b76184d8b76084d8b264d89e54983fc037506498b5e10eb534983fd017506498b5e08eb474d8b760848c7c30100000041f6c60175364d8b66084989dd4983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15601700004989c641564c8b6c24384d8b75004d89ed41ff750849c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104c8b1c244d89dc4d895d0849bb984773f1c27f00004d895d004983c60241567115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e084c8b2c244d89e84d892e41564c8b7424204983fe01750a4c8b742450e9940100004c8b7424284c89f34983fe017d15488d64246848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15451600004889c348bac080d4f1c27f0000488b442420ff15251600004989c641564c8b7424304c89f34983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c0010000004c8b4424104c8b4c24204c8b542418ff15d915000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849bee84873f1c27f00004d8934244d8d5fe84c3b5d107306ff5550ca00104d89df49c743f8020000004c8b34244d897308488d64240849c7030300000049c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d895d184d8965104c8b24244d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424504d8966084d892e41564d8d5fe04c3b5d107303ff55504d89df49c743f8030000004c8b7424604d8973104c8b7424504d89730849be504973f1c27f00004d89334c8bb424880000004c8bac24800000004c8b642478415641554154ff7424204153ff742428488b442470488b5c24404c8b4424504c8b4c24484c8b542458ff154c1400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda06ad1f1c27f00004d896e1049bd505fd1f1c27f00004d896e0849c7060b0000004156f6442430010f84e00100004c8b7424504d8b364d8b2e4a8d0c6d010000004883f901750f49bc1034d5f1c27f0000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1dd21200000f876d0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2834d5f1c27f0000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15061200000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013249d1ed43c6442e0229418066ffbf41564c8b7424284d8b3648c7c001000000e9820f0000488d64247848b8f8c7d0f1c27f0000488b5d08ff23488d64247848b8f8c7d0f1c27f0000488b5d08ff2349c7c6010000004c8b6c243041f6c50175364d8b5d084d89f44983c4027115488d64247848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424704d8b0e4d89f641ff760849c7c5010000004d8d77f04c3b75107306ff5550ca00224d89f749c746f80100000041c646ff404d892e41564983c1027118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff2349c7c5010000004d8d77f04c3b75107306ff5550ca00224d89f749c746f80100000041c646ff404d892e41564d89ce4983c60241567118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234c8b7424204c89f34983fe017d18488da424a000000048b83020d1f1c27f0000488b5d08ff23ff742410ff74241048c7c0010000004c8b4424104c8b542428ff15db1000004989c641564c8b7424704983c6027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234c8bac24980000004d8b65004c8b6c24084d2bec7118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234983c5014983fd017d18488da424a800000048b8c0d2d4f1c27f0000488b5d08ff234983fd010f8ef20000004983ed027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234983fd017d18488da424a800000048b8c0d2d4f1c27f0000488b5d08ff234983fd017e5c488b5424204983ed027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff12488b5c2418ff15b50f0000eb444983fe017d18488da424a800000048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000488b5c2410ff155c0f00004989c5eb454983fe017d18488da424a800000048b850d3d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424084c89f34983fe01750c48b84034d5f1c27f0000eb1048b84034d5f1c27f0000ff15b80e0000ff15aa0e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8bb424880000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1034d5f1c27f0000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d570d00000f876d0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be2834d5f1c27f0000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b158b0c00000f87910000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013249d1ed43c6442e0229418066ffbf41564c8b7424204d8b3648c7c001000000eb30488da424b000000048b8f8c7d0f1c27f0000488b5d08ff23488da424b000000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff152c0c00004c8b34244d89f54c3b35160c00007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15b00b00004989c6415648c7c001000000ff15960b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564c8bb424880000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1034d5f1c27f0000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d020a00000f876f0100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be7034d5f1c27f0000e9b60000004d89eb4983c30c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15360900000f87930000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc7034d5f1c27f000048c7c10d000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424284d8b3648c7c001000000eb30488da424b000000048b8f8c7d0f1c27f0000488b5d08ff23488da424b000000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15c50800004c8b34244d89f54c3b35af0800007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15490800004989c641564c8b7424404c89f34983fe017d18488da424c000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15090800004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b6424704d89e64d89650041554d89f64983c60241567118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff23f64424480175204c8b7424484d8b364d8b36498b06ff15070700004989c649c7c501000000eb18488da424b800000048b8e02dd5f1c27f0000488b5d08ff2341f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd0175074c8b742440eb2f4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424404d8966104d896e0849c7061f00000041564c8bb424800000004983c60441567118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234c8bb424a00000004d8b364d8b2e4a8d0c6d010000004883f901750f49bc1034d5f1c27f0000e9a30000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1c45010000004c3b1d4f0500000f87610100004d89da4e8d24950400000049f7dc4d03e74c3b651072054d3be77206ff5550ca02684d89e749d1ea4d895424f841c64424ff414983eb024bc7449cfc0000000049d1ed4d892c2441c64424086541c64424097141c644240a2d498d7608498d7c240b48d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15830400000f87850000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf41564c8b7424784d8b3648c7c001000000eb30488da424c800000048b8f8c7d0f1c27f0000488b5d08ff23488da424c800000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15080400004c8b34244d89f54c3b35f20300007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff158c0300004989c641564c8b7424104c89f34983fe017d18488da424d800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff154c0300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424a80000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4a8000000c2180041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15da0100004c8b34244d89f54c3b35c40100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff155e0100004989c6415648c7c001000000ff15440100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24684c8968084c89304883c470c21800f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17291,1,@3272,@8098,@6242,@9493,@7935,@8099,@6242,@9493,@7935,@8100,@8101,@7989,@9493,@7935,@8102,@7989,@9493,@7935,@7906,@8103,@7503,@7503,@8104,@8105,@8111,@7474,@8112,@8114,@8097,@6242|231,0,@17281 245,0,@10633 410,0,@9475 526,0,@9475 573,0,@10101 715,0,@8092 742,0,@9475 848,0,@10101 880,0,@16215 925,0,@10101 1044,0,@8093 1277,0,@8094 1392,0,@10632 1406,0,@10539 1465,0,@17285 1661,0,@17286 1883,0,@9487 1904,0,@9487 1956,0,@9475 2067,0,@9475 2146,0,@9475 2184,0,@10101 2255,0,@9475 2301,0,@9475 2335,0,@16618 2375,0,@9475 2405,0,@16618 2446,0,@9475 2533,0,@16621 2617,0,@16621 2726,0,@17287 2738,0,@17287 2852,0,@17285 3048,0,@17286 3270,0,@9487 3294,0,@9487 3434,0,@9493 3476,0,@17022 3689,0,@17285 3885,0,@17289 4043,0,@17289 4109,0,@9487 4133,0,@9487 4273,0,@9493 4315,0,@17022 4364,0,@10101 4600,0,@9475 4663,0,@17255 4832,0,@9475 4876,0,@17285 5072,0,@10766 5282,0,@9487 5306,0,@9487 5446,0,@9493 5488,0,@17022 5537,0,@10101 5972,0,@9493 6014,0,@17022 8092:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3266,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8093:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17282,1,@3267|42,0,@9475 8094:D4,40|483b65187305ff5558cd054989c6498b06498b5e084d8b46104c8b4a084c8b5210ff2519000000f4|@17283,1,@3268,@8095| 8095:D4,680|483b65187306ff5558ca090741f6c1010f850e0100004d8b294d8b71084d8b65004d8b6424184d8b24244d8b642418498b7c24084989fb488b3f4883ff03754e488b70084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b63084989fb4d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc037564eb764c89df4d8b1b4983fb017549488b70084989f3488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375234989fc4d8b6424184d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc0374144d89f1483b65187306ff5558ca0107e908ffffff4d8d77f04c3b75107306ff5550ca01254d89f749c746f8010000004d892eeb0749c7c6010000004983fe01750c488b004c89c3ff25830100004d8b364d8b2e41ff750841ff75104d8b76084d8b28498b50084d8b224d2bec7115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8b7424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849bec06ad1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000c3f400|@17284,1,@3269,@8096|357,0,@9475 585,0,@10633 8096:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3270,@5380|170,0,@9475 287,0,@16603 8097:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3290|33,0,@9475 88,0,@11193 8098:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3273|33,0,@9475 88,0,@11193 8099:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3274|32,0,@9475 87,0,@11193 8100:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3275| 8101:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3276|32,0,@9475 87,0,@11193 8102:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3277|33,0,@9475 88,0,@11193 8103:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3278| 8104:D5,608|483b65187306ff5558ca090750534150415141524c8b7424204d89f54c3b742418750f488d64242848c7c001000000c210004c8b7424104c2b7424087115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64242848b8c0d2d4f1c27f0000488b5d08ff234983fe010f8ef10000004983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fe017d15488d64242848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b488b14244983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8970084d89ed4c8928ff12488b5c2438ff156f010000eb4a4d89ed4d89ee4983fd017d15488d64242848b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004d89f64c89700848c70001000000488b5c2430ff15100100004989c5eb4b4d89ed4d89ee4983fd017d15488d64242848b850d3d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b7424404c8b6c243841564155488b5c24304c8b4424284c8b4c24204c8b542418e8d9fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c21000f4000000|@10111,1,@3279,@7503,@7503|69,0,@9475 100,0,@16618 137,0,@9475 164,0,@16618 201,0,@9475 294,0,@16621 384,0,@16621 498,0,@9475 8105:D27,2768|483b65187306ff5558ca090753415041514152a8010f859e0a00004c8b30ff700841ff760841ff761041ff7618488b442408488b5c24384c8b4424304c8b4c2428ff15590b00004989c64156f6442418010f85040300004c8b7424184d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe030f85dc0200004c8b34244d8b2e4983fd0d751c4c89f048c7c30300000049c7c001000000ff15f50a00004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510030000004d89f64d89750849c74500170000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100b0000004d896e0849c7062b00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15580a00004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8f008d5f1c27f0000ff15000a00004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bdc06ad1f1c27f00004d896e104c8b2c244d896e08488d64240849c7060b00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15500900004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b85834d5f1c27f0000ff15f80800004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8bb424880000004c8bac24800000004c8b6424784c8b5c24704c8b5424684c8b4c2460415641554154415341524151488b442460488b9c24800000004c8b4424784c8b4c24704c8b542468e8effcffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c7000b0000004883c448c23000488b442428ff150a0800004989c641564c8b6424104d8b34244983fe050f85260700004d89e44d8b7424104d89f54d8b364983fe0b750949c7c603000000eb0749c7c6010000004983fe030f85f10600004d89e441ff7424084d89ee498b4608ff15a7070000488b5c2408ff15940700004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be086073f1c27f00004c89336a016a01488b4424104989e0ff154b07000058488d642418488b5c24604c8b4424584c8b4c24504c8b5424784c8b7424704c8b6c246841564155ff15150700004989c64156488b442418488b5c24484c8b4424404c8b4c2438ff15ee0600004989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15c20600004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c7061700000041564c8b7424504d89f54d2bf57115488d64245848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64245848b8c0d2d4f1c27f0000488b5d08ff234983fe017e60488b5424484983ee027115488d64245848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70001000000ff12488b5c2440ff15db0500004989c5eb0a49bdb05fd1f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15720500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004156488b442420488b5c24504c8b4424484c8b4c2440ff15100500004989c54d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15e40400004989c6eb364d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d896e0849c7061700000041564c8b7424584d89f54d2bf57115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64246048b8c0d2d4f1c27f0000488b5d08ff234983fe017e60488b5424504983ee027115488d64246048b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70003000000ff12488b5c2448ff15fd0300004989c5eb0a49bde05fd1f1c27f00004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15940300004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15f60200004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15880200004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b8f008d5f1c27f0000ff15300200004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24104d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15c20100004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415648b85834d5f1c27f0000ff156a0100004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc06ad1f1c27f00004d8966184c8b6424084d8966104d896e0849c7060b00000041564c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784c8b5424704c8b4c2468415641554154415341524151488b442468488b9c24880000004c8b8424800000004c8b4c24784c8b542470e8adf5ffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64241048c7000b0000004883c448c23000488d642450eb05488d64245048b8a02fd5f1c27f0000488b5d08ff23488d64242048b8c06ad1f1c27f0000c23000f400000000|@17292,1,@3281,@7906,@5380,@7906,@5380,@7906,@7906,@7503,@5380,@8108,@7906,@7503,@5380,@8109,@7930,@5234,@5292,@8079,@8110,@7906,@5380,@7906,@5380,@5380,@8107|378,0,@17007 488,0,@10633 626,0,@17288 1008,0,@8106 1231,0,@9475 1262,0,@16618 1300,0,@9475 1380,0,@10542 1677,0,@9475 1708,0,@16618 1746,0,@9475 1826,0,@10544 2234,0,@17007 2416,0,@17288 2522,0,@10633 2731,0,@17265 2752,0,@10633 8106:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@17263,1,@3280| 8107:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f400|@16607,1,@3285,@7503,@5380|192,0,@9475 223,0,@16618 256,0,@9475 347,0,@16621 456,0,@16603 8108:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f400|@16607,1,@3282,@7503,@5380|192,0,@9475 223,0,@16618 256,0,@9475 347,0,@16621 456,0,@16603 8109:D5,472|483b65187306ff5558ca09034c89c241514c8b304d89f54983fe097575ff7008488b40104989d04c8b4c2408e8cfffffff4989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c408ff25a6010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c408c34d89ee4983fd050f85170100004c8b68084c8b70104d8b6d004d8b364d8b264989de4d2bf47115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fe017e5b4983ee027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8970084c8928ff12488b1c24ff15ac0000004989c6488d642408eb41488d6424084983fd017d1048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3488d6424084983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f400|@16607,1,@3283,@7503,@5380|192,0,@9475 223,0,@16618 256,0,@9475 347,0,@16621 456,0,@16603 8110:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3284| 8111:D4,456|483b65187306ff5558ca090750534150415141524c8b6c24204d89ee4c3b6c2418750d488d64242848c7c001000000c34d89f64983c6047115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24104d89ec4d2bec7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c5014983fd017d15488d64242848b8c0d2d4f1c27f0000488b5d08ff234983fd017e5b488b5424084983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff12488b1c24ff15f50000004989c5eb424983fe017d15488d64242848b850d3d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b4424284883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23488b5c24204c8b4424184c8b4c24104c8b542408e86dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424284883c408c3f400|@10111,1,@3286,@7503|64,0,@9475 98,0,@9475 129,0,@16618 167,0,@9475 253,0,@16621 364,0,@9475 8112:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f803000000498946104d89460849bd686a73f1c27f00004d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@10111,1,@3288|62,0,@8113 88,0,@9475 8113:D3,168|483b65187305ff5558cd054989d44d8b7424104983c604711048b8d0c6d0f1c27f0000488b5d08ff234c8b28488b50084d8b6424084d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@17293,1,@3287|27,0,@9475 60,0,@9475 8114:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c349bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca09404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e867ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@10111,1,@3289|26,0,@10468 134,0,@9475 8115:D3,64|483b65187305ff5558cd014c8b304c8b68084d8b6d20498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@17295,1,@3292| 8116:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3412| 8117:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3294| 8118:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3295| 8119:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3296| 8120:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3297| 8121:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3298| 8122:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3299| 8123:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3300| 8124:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3301| 8125:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3302| 8126:D9,424|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1dbc01000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e98c0000004d8b364d8b2e4c3b2d5801000075064d8b7610eb15488d64241048b87810d1f1c27f0000488b5d08ff234983fe03741f488d6424104c8b74240849c7060100000049895e0848c7c001000000c208006a016a014989e04c8b4c24184c8b542410ff15f7000000585b4c8b4424084159488d6424084c8b5424084c8b34244c897424084883c408ff25c900000041f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3f00000075094d8b7610e919ffffff488d64241048b87810d1f1c27f0000488b5d08ff23f4000000000000|@17297,1,@3305,@4652,@4652,@8052,@8127,@4652,@4652|110,0,@10158 151,0,@9991 358,0,@10198 403,0,@9991 8127:D7,1448|483b65187306ff5558ca09074150415141524883f801751a488d642410415e49c7060100000049895e0848c7c001000000c3ff30ff7008ff33ff7308ff73104c8b7424204d8b3641ff7618498b066a016a014889e3ff157d050000ff7424084c8b7424404d8b2e4d8b6d184d8b6d084d8b6d004983fd050f85ac0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89f64d8975104c8b34244d897508488d64240849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d8966084d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424204c8973084c8b7424284c8933488b4424304c8b4424504c8b4c24484883c440415a4883c410e9d7feffff4c8b742418498b06488b5c2450ff15940400004989c64156488b542438488b442458ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b10300004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdc87973f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54246048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424684d8966104d896e0849bc087a73f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b7424104d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24604d896c24104c8b6c24204d896c240849c70424090000004c8b5424384d8b5a084d89dd4d8b0b4983f9010f85150100004d8b43084d89d24d8b4a104d89d2498b7d004989fb4883ff057518488da4248000000048b8a892d1f1c27f0000488b5d08ff234983fb01751e4d8b6d104d8b5d004983fb03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca005f4d89ef49c745f80400000049c74518010000004d8945104d895d0849c74500030000004d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d894b104d896b0849bdd888d1f1c27f00004d892b4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d89d24d8955104d895d0849c745000b000000eb344d8d6fe04c3b6d107306ff5550ca00544d89ef49c745f8030000004d89d24d89d34d8955104d89db4d895d0849c745000b0000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424404d8953084d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24484c896b084c89336a016a01488b4424684989e04c8b8c24800000004c8b542478e8a7faffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15470000004989c64c8bac24900000004d8975004c8b34244d897508488d64240848c7c0010000004881c490000000c3f4000000|@17298,1,@3306,@8131,@6504,@8130,@5071|597,0,@8128 685,0,@8129 930,0,@10915 1111,0,@10854 8128:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3303| 8129:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3304|36,0,@9475 8130:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3308,@5380|170,0,@9475 287,0,@16603 8131:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3307| 8132:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3309| 8133:D7,224|483b65187306ff5558ca090741514c8b70084d8b3641ff760841ff3041ff70084c8b4c24304d89d0488b442410ff15dd0000004989c641564c8b7424304d8b0e4c8b7424304d8b46084c8b7424304d8b56104c8b7424304d8b76286a016a014156544883042408488b442438488b5c2428ff1591000000488b1c24ff7424084883fb017507488b5c2428eb0e488b442428ff15690000004889c34883fb0175074c8b742418eb0e488b442418ff15460000004989c64c8b6c24384d8975004c8b34244d897508488d64240848c7c0010000004883c438c21000f4000000000000|@17303,1,@3310,@8135,@8136,@8047,@8134| 8134:D3,288|483b65187306ff5558ca090341504151a8010f85f3000000f6c3010f85e30000004c8b30ff7008ff33ff73084d8b76104d8b2e4983fd050f85b200000041ff760841ff7610488b54243048c7c003000000ff124989c54c8b7424084d892e4c8b7424284d89f14c8b24244d893424488d6424104d8d77d84c3b75107306ff5550ca00224d89f749c746f8040000004c8b6424084d8966184d896e1049c746080100000049c706030000004156488b442418488b5c24084c8b442428e840ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242848b80037d5f1c27f0000488b5d08ff23488d642410eb05488d64241048c7c001000000c3f400000000000000|@12767,1,@3313|246,0,@17299 8135:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3311| 8136:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3312| 8137:D4,216|483b65187305ff5558cd09504d8d67e04c3b65107305ff5550cd084d89e749c74424f80300000041c64424ff4049c74424100100000049c74424080100000049c7042401000000498d47e8483b45107306ff5550ca08104989c748c740f802000000c640ff4048c740080100000048c7000100000049bec08173f1c27f00004d89e549895d10498945084d89750041806424ffbf49be008673f1c27f00004989c54d8965084d8975008060ffbfff153d0000004889c2488b0424ff124889c2488d64240848c7c003000000ff1248c7c001000000c3f40000|@17309,1,@3318,@5296|119,0,@8138 150,0,@8140 8138:D6,832|483b65187305ff5558cd0d504c8b334983fe0b0f8513030000ff7308ff73184c8b2c244d8b65184d89e64d8b6424084d8b24244983fc050f85a5000000488b4208ff15210300004989c641564c8b7424084d8b76184d8b76084d8b2e4983fd05756b498b460841ff7610488b5c2418ff15eb0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be408573f1c27f00004c89336a016a01488b4424104989e0ff15a202000058488d642410488b1424ff124889c2488d64241858ff22488d64242048b81890d1f1c27f0000488b5d08ff234c8b6424104983fc030f852e0200004d89ed4d8b364d8b264983fc050f850e0200004d8b76084d8b364983fe010f8df00100004c8b72104d89ed4d8b6d00488d6424084d8b65004e8d1c65010000004983fb017514488d64241049bc0838d5f1c27f0000e9b8000000488d6424104d89da4983c2584c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db80100000f876f0100004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba0838d5f1c27f000048c7c159000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c243448d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f48b84838d5f1c27f0000e9b40000004d89eb4983c3324c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15dc0000000f878b0000004d89d14a8d048d0400000048f7d84903c7483b45107205493bc77206ff5550ca007c4989c749d1e94c8948f8c640ff414983ea024ac74490fc0000000049d1eb4c89184c89e9498d742408488d780848d1e9f3a44983c51049bc4838d5f1c27f000048c7c133000000498d74240849d1ed4a8d3c2848d1e9f3a48060ffbf4c89f2ff1248c7c001000000c348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff23488d64241848c7c003000000c3488d64241848c7c003000000c3488d64241848c7c001000000c358c3f400ffffffffffffff01ffffffffffffff01|@17306,1,@3315,@5234,@5292,@5296|153,0,@8139 212,0,@10901 318,0,@17304 463,0,@17304 535,0,@17305 692,0,@17305 743,0,@9487 759,0,@9487 8139:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3314| 8140:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8970104c8b72084c89700849be708673f1c27f00004c8930c3f400000000|@17308,1,@3317|55,0,@8141 8141:D3,32|483b65187305ff5558cd054989d6498b5608498b5e10ff22f400000000000000|@17307,1,@3316| 8142:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3319| 8143:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3320| 8144:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3321| 8145:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3322| 8146:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3323| 8147:D6,168|483b65187305ff5558cd09534c8b701841ff364c8b7008ff70104d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc0b75154d8b6e104d89ee483b65187306ff5558ca0040ebc14983fd177533498b4610ff15670000004889c3488b4424084c8b0424ff154d0000004889c3488d6424104883fb01750258c358ff252e000000488d64241848b88839d5f1c27f0000488b5d08ff23f4|@17313,1,@3324,@8149,@8150,@8148|153,0,@17310 8148:D3,328|483b65187305ff5558cd01a8010f852c0100004c8b30488b40084d8b264d8b6e084d8b5e204d8b562849b9a854d1f1c27f00004d8d77f04c3b75107306ff5550ca013e4d89f749c746f80100000041c646ff404d890e4d8d4fe04c3b4d107306ff5550ca017c4d89cf49c741f8030000004d8959104d89710849bed8c8d0f1c27f00004d89314d8d77e84c3b75107306ff5550ca013e4d89f749c746f80200000049c74608010000004d892e4d8d6fd84c3b6d107306ff5550ca015e4d89ef49c745f80400000049c745180100000049c74510010000004d894d084d8975004d8d77d84c3b75107306ff5550ca013c4d89f749c746f8040000004d8956184d895e104d8966084d892e4156e8f0feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@3327|43,0,@10468 123,0,@9493 8149:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3325| 8150:D4,656|483b65187306ff5558ca0901534150a8010f8565020000ff30ff70084c8b742408498b461849bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d5fe0483b5d107305ff5550cd014989df48c743f8030000004c8b34244c8973104c8b7424084c89730848c7030500000048bad88ed1f1c27f0000ff156f0100004989c64983fe017415488d64243048b8503ad5f1c27f0000488b5d08ff2349c7c6030000004d8d5ff04c3b5d107306ff5550ca00404d89df49c743f80100000041c643ff404d89334c8b7424184d8d67f04c3b65107306ff5550ca00484d89e749c74424f80100000041c64424ff404d8934244c8b7424084d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d897500415e488d6424084d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d895e204c8b5c24104d89d84d895e184d8966104c8b6424184c89e34d8966084d892e4156488b442408e8b3fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241048c7c001000000c3f4000000000000|@10112,1,@3326,@5268|39,0,@10468 144,0,@10468 299,0,@10895 329,0,@17314 8151:D3,232|483b65187305ff5558cd0953a8010f85a9000000ff30488b40084c8b342441ff76206a016a014889e3e8d2ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f400000000000000|@10490,1,@3328|193,0,@10488 8152:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3329| 8153:D7,768|483b65187306ff5558ca09034c8b204c8b70084c8b58104d8b686841f6c50175464d8b45004d8b5508498b38483b3dfd02000075214d8d6ff04c3b6d107306ff5550ca095b4d89ef49c745f8010000004d894500eb184d89d5483b65187306ff5558ca097aebb449c7c5010000004983fd01750f49bd2028d1f1c27f0000e9e60100004d8b6d004d8b55004c3b159602000075064d8b6d10eb1048b87810d1f1c27f0000488b5d08ff234983fd037405e9a10100004d8b064c8b134d3bc27502eb2f4d8b284e8d2c6d01000000498b3a4889f9488d3c7d010000004c3bef7572498d7008498d7a08483bc9f3a67402eb614d8b6e084c8b53084d3bea754b4d8b6e104c8b53104d3bea75354d8b6e184c8b53184d3bea751f4d8b76204c8b6b204d3bf5750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f84f30000004d8d77e04c3b75107306ff5550ca081a4d89f749c746f80300000049c746100100000049895e0849c7060d0000004d8d6fd84c3b6d107306ff5550ca085a4d89ef49c745f80400000049bac83ad5f1c27f00004d8955184d89751049beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca083a4d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca085a4d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca083a4d89f749c746f8030000004d895e1049895e084d89264d89294d89710848c7c001000000c349c701010000004989410848c7c001000000c341f6c50175464d8b45004d8b5508498b38483b3d9f00000075214d8d6ff04c3b6d107306ff5550ca095b4d89ef49c745f8010000004d894500eb184d89d5483b65187306ff5558ca097aebb449c7c5010000004983fd01751048b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b55004c3b153700000075094d8b6d10e9befdffff48b87810d1f1c27f0000488b5d08ff23f4000000|@17320,1,@3330,@4652,@4652,@4652,@4652|118,0,@10158 156,0,@9991 430,0,@17317 448,0,@15120 708,0,@10198 750,0,@9991 8154:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3331| 8155:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3332| 8156:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3333| 8157:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3334| 8158:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3335| 8159:D9,608|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1d7402000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9360100004d8b364d8b2e4c3b2d1002000075114d8b76104983fe037436488d642410eb15488d64241048b87810d1f1c27f0000488b5d08ff234c8b74240849c7060100000049895e0848c7c001000000c208004d8d77e84c3b75107305ff5550cd094d89f749c746f80200000049895e0849c706010000006a016a01504156f644240801756a4c8b742408498b064d89f641ff76086a016a01488b5c24184989e04c8b4c24404c8b542438ff1568010000415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d893424415d4c8924244c896c2408483b65187303ff5558eb8f4c8b34244d8b2e4c896c24104d89f64d8b7608488d6424084c89742410488b442408488b5c24104c8b4424204c8b4c24184c8b5424304c8b7424284c897424304883c430ff25d700000041f6c60175454d8b264d8b6e084d8b1c244c3b1db700000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4d00000075194d8b76104983fe037505e98efeffff488d642410e96afeffff488d64241048b87810d1f1c27f0000488b5d08ff23f400000000|@17321,1,@3338,@4652,@4652,@8052,@8160,@4652,@4652|110,0,@10158 162,0,@9991 528,0,@10198 589,0,@9991 8160:D6,776|483b65187306ff5558ca0907415041514152ff30ff7010ff7018ff334c8b730841ff3641ff760841ff7610488b4008488b5c2440ff15f60200004989c64156488b542418488b442448ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15130200004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd889c73f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54245048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424584d8966104d896e0849bcc89c73f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408488b1c24ff7424084d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24404d896e184c8b6c24484d896e104c8b6c24504d896e0849c7060700000041564883fb0175074c8b642440eb0e488b442440ff15a00000004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424284d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d896e104c8b6c24284d896e084c8b2c244d892e488d6424084c8b6c24604d8965004d89750848c7c0010000004883c468c3f4000000000000|@17322,1,@3339,@8164,@6504,@8163|339,0,@8161 427,0,@8162 8161:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3336| 8162:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3337|36,0,@9475 8163:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3341,@5380|170,0,@9475 287,0,@17161 8164:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3340| 8165:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3342| 8166:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3343| 8167:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3344| 8168:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3345| 8169:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b760841ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3346| 8170:D5,432|483b65187306ff5558ca090753415041514152a8010f85870100004c8b28ff70084d8b75084d8b3641ff75284d8b6e104d8b65004983fc050f854f01000041ff750841ff751041ff7618488b54244048c7c003000000ff124989c54c8b6424104d89e64d892c244c8b6c24384c89eb4c8b6424084d892c244d89f641ff364c8b7424204d8b264d89e54983fc1d75314d89f64d8b76084d8b6e08498b45004d8b761841564c8b44244049c7c1010000004c8b542438ff15150100004989c5eb2a4d89ee4983fe110f85ab00000048bad03bd5f1c27f0000488b4424084c8b442438ff15e10000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c706030000004156488b442428488b5c24484c8b4424404c8b4c24384c8b542430e8bbfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c448c3488d64245048b89057d5f1c27f0000488b5d08ff23488d64243048b80058d5f1c27f0000488b5d08ff23488d64242048c7c001000000c3f4|@10112,1,@3378,@8171,@7900|207,0,@17323 383,0,@17536 404,0,@17539 8171:D9,632|483b65187306ff5558ca0d0152505341504d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049c74608010000004c8b6c24184d8b65184d8926498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d8b6d084d896e0849bdd0a673f1c27f00004d892e4156ff151202000048ba28d4d4f1c27f0000488b5c24104c8b4424084c8b0c24ff15ec0100004989c641564d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049c74608010000004c8b6c24284d8b65184d8926498d47e8483b45107306ff5550ca00604989c748c740f80200000048c74008010000004c89304d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d89ed4d8b6d104d896e0849bd88a773f1c27f00004d892e4156ff154a01000048ba28d4d4f1c27f0000488b5c24204c8b4424184c8b0c24ff15240100004989c6488d6424084c8b6c24204d8b65004983fc050f85940000004d89ee498b460848ba68d4d4f1c27f0000488b5c24184c8b442410ff15e00000004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15a90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004883c428eb05488d642430498d47d8483b45107306ff5550ca00404989c748c740f80400000049bda06ad1f1c27f00004c8968184c89701049be883ed3f1c27f00004c89700848c70001000000c3f400000000|@17329,1,@3349,@7906,@7958,@7904,@8002,@7904,@8002|147,0,@8172 168,0,@16626 331,0,@8173 352,0,@16626 416,0,@16627 589,0,@10632 607,0,@14031 8172:D4,136|483b65187305ff5558cd054c8b72084d8b76104d8b2e4983fd03755b4d8b76084d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2560000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c348b8283cd5f1c27f0000488b5d08ff23f4|@17327,1,@3347,@5380|121,0,@17325 8173:D4,136|483b65187305ff5558cd054c8b72084d8b76104d8b2e4983fd03755b4d8b76084d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2560000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c348b8283cd5f1c27f0000488b5d08ff23f4|@17328,1,@3348,@5380|121,0,@17325 8174:D3,40|483b65187305ff5558cd01a801740948c7c003000000eb0748c7c0010000004883f002c3f4000000|@17332,1,@3350| 8175:D3,48|483b65187305ff5558cd014989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f40000|@17332,1,@3351| 8176:D3,16|483b65187305ff5558cd01488b00c3f4|@17332,1,@3352| 8177:D3,40|483b65187305ff5558cd014883f801750848c7c003000000c348c7c001000000c3f4000000000000|@17364,1,@3353| 8178:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed8a973f1c27f00004c8930c3f400000000|@17367,1,@3355|47,0,@8179 8179:D3,72|483b65187305ff5558cd0d483bc3750848c7c003000000c3a801751cf6c301750f4c8b7208498b16488b00488b1bff2248c7c001000000c348c7c001000000c3f400000000000000|@17366,1,@3354| 8180:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb0aa73f1c27f00004c8930c3f400000000|@17375,1,@3357|47,0,@8181 8181:D6,688|483b65187305ff5558cd054c8b70084d89f44983fe037d0b48b84847d1f1c27f0000c34c8b284d89ee4983fd01750b48b84842d5f1c27f0000c34d89e54983fc037d0b48b84847d1f1c27f0000c34c8b6208498b5424084d8b364983ed02711048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35fa010000750949c7c603000000eb2b4c3b35e0010000750949c7c603000000eb194c3b35c6010000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda842d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@12785,1,@3356,@9616,@9648,@9565|26,0,@10373 49,0,@17369 69,0,@10373 98,0,@11125 318,0,@10440 366,0,@10391 411,0,@10392 562,0,@10236 607,0,@17372 8182:D3,24|483b65187305ff5558cd0148c7c007000000c3f400000000|@17377,1,@3358| 8183:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@17379,1,@3359| 8184:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@17281,1,@3360| 8185:D6,3648|483b65187305ff5558cd05524c8b68084d89ee4983fd037d10488d64240848b84847d1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f85650500004d8b6c240841ff74241041ff74241841ff7424204983ee0241567115488d64242848b8b0b5d1f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64242849bdd8b5d1f1c27f0000e9ea0300004d89f64983ee027115488d64242848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849be58c3d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8b5d1f1c27f0000e9f00200004d89f64983ee027115488d64243048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049be38c4d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdd8b5d1f1c27f0000e9f60100004d89ed4983ed027115488d64243848b8b0b5d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e415649bed8c4d0f0c27f0000498b1648b8704ed5f1c27f0000ff124889c2488b0424ff124989c641564c8b6c24204983ed027115488d64244848b8b0b5d1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e415649bed8c4d0f0c27f0000498b164d8d77e84c3b75107305ff5550cd044d89f749c746f8020000004c8b6c24484d8b6d084d896e0849bd08c873f1c27f00004d892e498d47d8483b45107306ff5550ca04404989c748c740f80400000048c740180300000048c74010070000004c89700848c70001000000ff124889c2488b0424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4284d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf84fd5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3488d6424084d89f54983fe037d0b48b84847d1f1c27f0000c34d89e64d8b24244983fc030f85d60200004d89f44d8b74240841ff7424104983ed0241557115488d64241048b8b0b5d1f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9620100004d89ed4983ed027115488d64241048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c3d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be58c3d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7850d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89ec4983fd037d0b48b84847d1f1c27f0000c34d89f54d8b364983fe05750b48b8f850d5f1c27f0000c34d89e64983fc037d0b48b84847d1f1c27f0000c34d89ec4d8b6d004983fd070f85610200004d8b6c24084983ee02711048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bef8c3d0f0c27f0000498b16ff124989c54d8b75004983fe010f85460100004d8b752041f6c6010f85360100004d8b660841f6c4010f85260100004d8b1e4d89dc4d8b1b4983fb0775514d89e64d8b76084c3b35e0040000750949c7c603000000eb2b4c3b35c6040000750949c7c603000000eb194c3b35ac040000750949c7c603000000eb0749c7c6010000004983fe037402eb05e9c60000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc04fd1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100300000049c745080700000049c7450001000000eb02eb00eb004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd7851d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b84847d1f1c27f0000c34d8b74240841ff7424104983ed0241557115488d64241048b8b0b5d1f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9620100004d89ed4983ed027115488d64241048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef8c3d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049be58c3d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf851d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f40000000000|@17478,1,@3364,@9616,@9648,@9565|32,0,@10373 96,0,@11125 130,0,@11126 159,0,@11125 209,0,@4661 243,0,@11126 272,0,@11125 327,0,@4675 361,0,@11126 390,0,@11125 447,0,@4685 460,0,@17466 502,0,@11125 559,0,@4685 611,0,@8188 724,0,@10401 772,0,@10236 817,0,@10394 909,0,@10236 953,0,@10394 1041,0,@10236 1086,0,@10394 1178,0,@10392 1323,0,@10236 1368,0,@17479 1458,0,@10373 1512,0,@11125 1546,0,@11126 1575,0,@11125 1625,0,@4661 1661,0,@11125 1716,0,@4661 1761,0,@10401 1809,0,@10236 1854,0,@10394 1946,0,@10392 2091,0,@10236 2136,0,@17483 2221,0,@10373 2244,0,@17487 2264,0,@10373 2303,0,@11125 2353,0,@4671 2536,0,@10440 2584,0,@10391 2629,0,@10392 2780,0,@10236 2825,0,@17491 2910,0,@10373 2944,0,@11125 2978,0,@11126 3007,0,@11125 3057,0,@4671 3093,0,@11125 3148,0,@4661 3193,0,@10401 3241,0,@10236 3286,0,@10394 3378,0,@10392 3523,0,@10236 3568,0,@17495 8186:D3,32|483b65187305ff5558cd0149bef8cbd0f0c27f0000498b16ff22f40000000000|@17477,1,@3362|13,0,@4799 8187:D3,2744|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b84847d1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f859307000041ff7424084983ee0241567115488d64241048b8b0b5d1f1c27f0000488b5d08ff234c8b34244d89f54983fe017d14488d64241049bdb86fd1f1c27f0000e9270600004c8b7424084d8b76084d89ed4983ed027115488d64241048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c3d0f0c27f0000498b16ff124989c641564c8b7424084d89f54983fe037d0f49beb86fd1f1c27f0000e9cb0400004c8b7424104d8b76184d89ed4983ed027115488d64241848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c3d0f0c27f0000498b16ff124989c641564c8b7424104d89f54983fe057d0f49bdb86fd1f1c27f0000e9740300004c8b7424184d8b364d89ed4983ed027115488d64242048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef8c3d0f0c27f0000498b16ff124989c641564c8b7424184d89f54983fe077d0f49beb86fd1f1c27f0000e91d0200004c8b7424204d8b76104d89ed4983ed027115488d64242848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c3d0f0c27f0000498b16ff124989c641564c8b7424284d8b76204c8b6c24204983ed027115488d64243048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049be58c3d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc2079d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be00dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd38dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be70dbd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec849d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda0dbd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8dbd1f1c27f00004d8975004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf84ed1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb84ed5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b84847d1f1c27f0000c34d8b74240841ff7424104983ed0241557115488d64241048b8b0b5d1f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64241049bdd8b5d1f1c27f0000e9620100004d89ed4983ed027115488d64241048b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bef8c3d0f0c27f0000498b16ff124989c641564c8b7424084983ee027115488d64241848b8b0b5d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893049bef8c3d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd84ad1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc849d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9849d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd384fd5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f4000000000000|@17477,1,@3361|26,0,@10373 75,0,@11125 109,0,@10678 147,0,@11125 197,0,@4661 231,0,@10678 269,0,@11125 319,0,@4661 353,0,@10678 390,0,@11125 440,0,@4671 474,0,@10678 512,0,@11125 562,0,@4661 607,0,@11125 657,0,@4661 702,0,@10749 751,0,@10236 795,0,@11391 840,0,@10236 884,0,@10394 972,0,@10236 1017,0,@11393 1061,0,@10236 1106,0,@10394 1194,0,@10236 1238,0,@11395 1283,0,@10236 1327,0,@10394 1415,0,@10236 1460,0,@11397 1504,0,@10236 1549,0,@10394 1637,0,@10236 1681,0,@11399 1730,0,@10435 1875,0,@10236 1920,0,@17469 2005,0,@10373 2039,0,@11125 2073,0,@11126 2102,0,@11125 2152,0,@4671 2188,0,@11125 2243,0,@4671 2288,0,@10401 2336,0,@10236 2381,0,@10394 2473,0,@10392 2618,0,@10236 2663,0,@17473 8188:D3,24|483b65187305ff5558cd054c8b7208498b16ff22f4000000|@17478,1,@3363| 8189:D3,40|483b65187305ff5558cd014c8b304983fe01750848c7c003000000c348c7c001000000c3f4000000|@17482,1,@3365| 8190:D3,80|483b65187305ff5558cd014c8b304c8b68084c8b60104c8b5818498d47d0483b45107306ff5550ca00784989c748c740f8050000004c8958204c8960184c8968104c89700848c70001000000c3f40000|@17482,1,@3366| 8191:D3,72|483b65187305ff5558cd014c8b70084c8b68104c8b60184c8b5820498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400|@17482,1,@3367| 8192:D3,40|483b65187305ff5558cd014c8b304983fe03750848c7c003000000c348c7c001000000c3f4000000|@17486,1,@3368| 8193:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70003000000c3f40000|@17486,1,@3369| 8194:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@17486,1,@3370| 8195:D3,40|483b65187305ff5558cd014c8b304983fe05750848c7c003000000c348c7c001000000c3f4000000|@17490,1,@3371| 8196:D3,40|483b65187305ff5558cd014c8b304983fe07750848c7c003000000c348c7c001000000c3f4000000|@17494,1,@3372| 8197:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f40000|@17494,1,@3373| 8198:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@17494,1,@3374| 8199:D3,40|483b65187305ff5558cd014c8b304983fe09750848c7c003000000c348c7c001000000c3f4000000|@17498,1,@3375| 8200:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70009000000c3f40000|@17498,1,@3376| 8201:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@17498,1,@3377| 8202:D3,192|483b65187305ff5558cd09534883f8017523415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c34c8b30488b400841ff3641ff76086a016a014889e3e8b1ffffff415e415d4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d897424084c8b7424084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642410415d4d8965004d89750848c7c001000000c3f40000000000|@17542,1,@3379|22,0,@10488 8203:D6,408|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b30ff7008f6c3010f853f010000ff33ff73084d8b6e0841ff75004c8b2c24498b450841ff7628ff15630100004989c64156488b442408ff154b0100004889c36a016a016a01488b4424184989e0ff152c010000415d415b415c488d6424104d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004c8b14244d895618488d6424084d895e104d896e084c8b6c24084d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d8b65084d8966084d8b6d004d892e4d8b2e4d8b66084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442418488b5c2408e8b2feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64240848b8282dd3f1c27f0000488b5d08ff23f40000000000|@13917,1,@3380,@8205,@8233,@8204|33,0,@13915 388,0,@13915 8204:D3,192|483b65187305ff5558cd01a8010f859d0000004c8b30488b40084d8b6e186a016a014d8b65004983fc0575124d8b6d084d8b364c8934244c896c2408eb164d8b2e49bea854d1f1c27f00004c892c244c89742408415d415c4d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e87fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@10112,1,@3410|67,0,@10468 8205:D9,736|483b65187306ff5558ca0901534150ff150b0300004989c641566a016a014c8b7424204d89f54983fe01751f49be9858d5f1c27f00004d8b2e4c892c244d8b76084c89742408e94d02000049c7c6010000004d89ed41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15780200004989c641564c8b7424084c89f34983fe017d15488d64243848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff153b0200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049beb058d5f1c27f00004d89750849bea0c1d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649c7c6010000004c8b6c242841f6c50175364d8b5d084d89f44983c4027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15490100004989c641564c8b7424084c89f34983fe017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff150c0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049beb058d5f1c27f00004d89750849bea06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8b2c244c896c2408488d6424084c89742408ff3424ff742410488b442420488b5c2430ff15490000004989c64c8b6c24284c8b24244d896500488d6424084c8b24244d896508488d6424304d89751048c7c001000000c3f40000|@17545,1,@3381,@8207,@8229,@7989,@8230,@7989,@8206|46,0,@17543 111,0,@9475 186,0,@10101 294,0,@17544 308,0,@11224 398,0,@9475 473,0,@10101 581,0,@17544 595,0,@10632 8206:D4,200|483b65187305ff5558cd01a8010f85aa0000004c8b30ff700841ff36498b46086a016a014c8b304983fe03751448c70424010000004c8b7424104c89742408eb17ff15990000004989c64c8934244c8b7424104c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442410e876ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c410c348c7c001000000c3f40000|@10112,1,@3407,@8231| 8207:D14,1248|483b65187305ff5558cd094989c041f6c0010f85380200004d8b204d89e64d8b68084d8b24244983fc0175184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f85fb01000041ff760848b8f897d3f1c27f000048bb985fd1f1c27f0000ff15d50400004989c641564c8b7424084d89f54c3b35b90400007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742408415648c7c001000000ff15530400004989c6415648c7c001000000ff15390400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f897d3f1c27f000048bbc06ad1f1c27f0000ff15860300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c408c341f6c00175774d8b204d89e64d8b68084d8b24244983fc0575184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b84060d1f1c27f0000ff157d0200004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c341f6c00175774d8b204d89e64d8b68084d8b24244983fc0375184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b84060d1f1c27f0000ff15f80100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c341f6c00175774d8b204d89e64d8b68084d8b242441f6c40175184983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03753e4d8b460848b84060d1f1c27f0000ff15730100004989c6498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34d89c549c7c60100000041f6c50175434d8b5d004d8b65084d8b1b4983fb0175054d89f3eb194d89f34983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0861ebb74983fe03750d48c7c001000000ff25db0000004983fe01750c49c7c6010000004d89c5eb5249c7c1010000004d89c641f6c60175314d8b66084d89cd4983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89e64d89e9483b65187306ff5558ca0843ebc94983e90248c7c001000000ff256f00000041f6c50175314d8b5d084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0061ebc94983ee024c89c34d89f048c7c001000000ff2519000000f4|@17546,1,@3382,@8209,@8216,@8226,@8217,@8217,@8217,@8211,@8228,@7989,@9493,@8208|91,0,@14658 101,0,@10541 162,0,@9493 199,0,@17022 394,0,@14658 404,0,@10633 661,0,@10548 786,0,@10548 911,0,@10548 1016,0,@9475 1118,0,@9475 1190,0,@9475 8208:D6,1032|483b65187305ff5558cd094c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e99f000000909090e972010000909090e9a1010000909090e9a4010000909090e9a7010000909090e90a020000909090e9a3020000909090e93c030000909090e9900300009090904d8d77e04c3b75107305ff5550cd084d89f749c746f80300000049c746100b00000049895e0849c7062b000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b000000c34c8b7008ff701041f6c6017415488d64240848b808afd1f1c27f0000488b5d08ff2341ff36f60424010f84970000004c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15180300004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64241048c70027000000c3488d64241048b8381fd1f1c27f0000488b5d08ff234c8b70084c8b6810498d47d8483b45107306ff5550ca08604989c748c740f8040000004c896818488958104c89700848c70027000000c348b8a06ad1f1c27f0000c348b8a06ad1f1c27f0000c34c8b68084d8d77e04c3b75107306ff5550ca08204d89f749c746f80300000049c74610010000004d896e0849c7060d000000498d47d8483b45107306ff5550ca08404989c748c740f80400000049bd785fd1f1c27f00004c896818488958104c89700848c70007000000c3ff7008ff70104c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15a60100004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64240848c70027000000c3ff7008ff70184c8b334983fe0d751c4889d848c7c30100000049c7c001000000ff15fd0000004989c6eb354d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049c746100100000049895e0849c70617000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8970104c8b34244c897008488d64240848c70027000000c34d8d77e04c3b75107305ff5550cd084d89f749c746f80300000049c746100b00000049895e0849c7062b000000498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010130000004c89700848c7002b000000c348b8a06ad1f1c27f0000c3f40000|@17554,1,@3403,@5380,@5380,@5380|221,0,@11081 406,0,@10093 477,0,@10632 488,0,@10632 576,0,@10540 1020,0,@10632 8209:D8,632|483b65187306ff5558ca0901504150f6c3010f854b0200004c8b33ff730841ff76084d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24184d896e0849c706050000004156488b042448bb985fd1f1c27f0000ff15470200004989c641564c8b7424104d89f54c3b352b0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742410415648c7c001000000ff15c50100004989c6415648c7c001000000ff15ab0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc06ad1f1c27f0000ff15fd0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b4424204883c002488b5c24104c8b442418e8d0fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c3488d64241048c7c001000000c3f400000000000000|@17547,1,@3383,@8211,@8210,@7989,@9493,@8208|91,0,@10541 152,0,@9493 189,0,@17022 389,0,@10633 8210:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3389|33,0,@9475 88,0,@11193 8211:D15,1816|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e9a2000000909090e9d2000000909090e902010000909090e9fc000000909090e93d010000909090e96d010000909090e91f020000909090e9d9020000909090e9380300009090904d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010030000004c89700848c70029000000e903060000488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c3488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c358c3498d47d8483b45107303ff55504989c748c740f80400000049bea06ad1f1c27f00004c8970184c8b34244c897010488d64240849be883ed3f1c27f00004c89700848c70001000000c3488d6424084c8b7008498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c34c8b70084d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8b34244d893424488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010030000004c89700848c70029000000e9110400004c8b6808488b58104d8d77e04c3b75107306ff5550ca08204d89f749c746f80300000049c74610010000004d896e0849c7060d00000041564883fb017d15488d64241048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15ae0400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000e9e3010000488b58084883fb01750258c34883fb017d15488d64240848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15100400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c70629000000eb10488d64240848b8c06ad1f1c27f0000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff157e0300004989c6eb00415648c7c001000000ff15620300004989c6415648c7c001000000ff15480300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec00ad5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15800200004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f20100004989c6eb00415648c7c001000000ff15d60100004989c6415648c7c001000000ff15bc0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec00ad5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15f40000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2569000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff251c000000c3f40000|@17548,1,@3384,@6504,@6504,@7906,@8213,@7989,@6504,@7906,@8214,@7989,@6504,@8215,@8212|345,0,@10632 372,0,@14031 703,0,@10101 853,0,@10101 938,0,@10633 1137,0,@17022 1501,0,@17022 8212:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3388|64,0,@10541 98,0,@9475 8213:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3385|33,0,@9475 88,0,@11193 8214:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3386|33,0,@9475 88,0,@11193 8215:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3387|64,0,@10541 98,0,@9475 8216:D11,1032|483b65187306ff5558ca09035053415141f6c0010f85dc0300004d8b3041ff70084d8b2e41f6c5010f858f0000004d8b6d004d8b46084983fd097f3a498d47d8483b45107306ff5550ca00214989c748c740f8040000004c8b7424084c8970184c8968104c8b7424184c89700848c7000f000000eb34498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff15a30300004989c6e9eb0200004983fd03754b4d8b4608498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff154a0300004989c6e99a0200004983fd05754b4d8b4608498d47e0483b45107306ff5550ca00014989c748c740f8030000004c8b7424084c8970104c8b7424184c89700848c7000d000000488b5c2410ff15f10200004989c6e94902000041ff76084c8b7424204d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f8010000004d8975004d0fb675ff4e8d3475010000004981e6ff0100004981e6810000004981fe810000007507418065ffbfeb004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c706030000004156488b042448bb985fd1f1c27f0000ff15490200004989c641564c8b7424104d89f54c3b352d0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742410415648c7c001000000ff15c70100004989c6415648c7c001000000ff15ad0100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc06ad1f1c27f0000ff15ff0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004883c4084156488b4424204883c002488b5c24184c8b4424084c8b4c2410e839fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3488d64241848c7c001000000c3f400000000|@17549,1,@3390,@8211,@8218,@7989,@9493,@8208,@8217,@8217,@8217|489,0,@10541 550,0,@9493 587,0,@17022 787,0,@10633 8217:D15,1088|483b65187306ff5558ca0901504150488b44240848bb985fd1f1c27f0000ff158c0400004989c641564c8b7424084d89f54c3b35700400007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742408415648c7c001000000ff150a0400004989c6415648c7c001000000ff15f00300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44241048bb985fd1f1c27f0000ff15420300004989c641564c8b7424104d89f54c3b35260300007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742410415648c7c001000000ff15c00200004989c6415648c7c001000000ff15a60200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44241848bb985fd1f1c27f0000ff15f80100004989c641564c8b7424184d89f54c3b35dc0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742418415648c7c001000000ff15760100004989c6415648c7c001000000ff155c0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c410c3f400000000|@17550,1,@3392,@8220,@7989,@9493,@8221,@8225,@7989,@9493,@8211,@8219,@7989,@9493,@8208|22,0,@10541 83,0,@9493 120,0,@17022 320,0,@10541 381,0,@9493 418,0,@17022 618,0,@10541 679,0,@9493 716,0,@17022 8218:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3391|33,0,@9475 88,0,@11193 8219:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3399|33,0,@9475 88,0,@11193 8220:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3393|33,0,@9475 88,0,@11193 8221:D15,1432|483b65187305ff5558cd09534c8b304c8d2d080000004f8d6cb5fc41ffe5e94b000000909090e9ab000000909090e9b3000000909090e9bb000000909090e9b5000000909090e91c010000909090e924010000909090e984010000909090e9de010000909090e93d0200009090904c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c301000000ff2571050000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010010000004d89f64c897008488d64240848c70017000000c3488d64240848b8c06ad1f1c27f0000c3488d64240848b8c06ad1f1c27f0000c358c34d8d77e04c3b75107303ff55504d89f749c746f80300000049c746100100000049bdb8c0d4f1c27f00004d896e084c8b2c244d892e488d642408498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701049beb0ded3f1c27f00004c89700848c7001b000000c3488d64240848b8c06ad1f1c27f0000c34c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c303000000ff2560040000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010030000004d89f64c897008488d64240848c70017000000c3488b58104883fb017d15488d64240848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15ed0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9e3010000488b58084883fb01750258c34883fb017d15488d64240848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff157b0300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb10488d64240848b8c06ad1f1c27f0000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15e90200004989c6eb00415648c7c001000000ff15cd0200004989c6415648c7c001000000ff15b30200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec00ad5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15eb0100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155d0100004989c6eb00415648c7c001000000ff15410100004989c6415648c7c001000000ff15270100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c745100100000049bec00ad5f1c27f00004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff155f0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424104c89700848c7000f000000c3f400000000000000|@17551,1,@3394,@7906,@8223,@7989,@6504,@7906,@8223,@7989,@6504,@8224,@8222,@5380,@5380|221,0,@10633 237,0,@10633 282,0,@16535 339,0,@15120 366,0,@10633 496,0,@10101 602,0,@10101 687,0,@10633 886,0,@17022 1250,0,@17022 8222:D3,192|483b65187305ff5558cd09483bc3750848c7c001000000c34989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d8d77d84c3b75107306ff5550ca09204d89f749c746f80400000049c74618030000004d896e1049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e871ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@3397|35,0,@9475 90,0,@10541 124,0,@9475 8223:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3395|33,0,@9475 88,0,@11193 8224:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618030000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3396|64,0,@10541 98,0,@9475 8225:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3398|33,0,@9475 88,0,@11193 8226:D12,1072|483b65187306ff5558ca0901505341f6c0010f85060400004d8b3041ff70084d8b2e41f6c5010f85e80000004d8b6d004983fd0175614d8b460848b8b80bd1f1c27f0000488b5c2408ff15390400004989c64156488b442418488b5c24104c8b442408e898ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34d8b4608498d47e8483b45107306ff5550ca00214989c748c740f8020000004c89680848c70011000000488b5c2408ff15b40300004989c64156488b442418488b5c24104c8b442408e81bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fd0375614d8b460848b8885ad5f1c27f0000488b5c2408ff15450300004989c64156488b442418488b5c24104c8b442408e8b4feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fd0575614d8b460848b8b80bd1f1c27f0000488b5c2408ff15d60200004989c64156488b442418488b5c24104c8b442408e84dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c341ff76084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849c7060b0000004156488b042448bb985fd1f1c27f0000ff15440200004989c641564c8b7424104d89f54c3b35280200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742410415648c7c001000000ff15c20100004989c6415648c7c001000000ff15a80100004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b44240848bbc06ad1f1c27f0000ff15fa0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004156488b4424204883c002488b5c24184c8b442410e815fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c420c3488d64241048c7c001000000c3f400000000|@17553,1,@3400,@8211,@8227,@7989,@9493,@8208,@8217,@8217,@8217,@8217|60,0,@9948 288,0,@17552 391,0,@9948 534,0,@10541 595,0,@9493 632,0,@17022 832,0,@10633 8227:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3401|33,0,@9475 88,0,@11193 8228:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3402|33,0,@9475 88,0,@11193 8229:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3404|32,0,@9475 87,0,@11193 8230:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3405|32,0,@9475 87,0,@11193 8231:D5,376|483b65187305ff5558cd014c8b304d89f54983fe0b0f85a0000000488b58084c8b70184d8b66184d89e54d8b6424084d8b24244983fc05757a4d89ee4d8b76084d8b2e4983fd05755a498b460841ff7610ff15410100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be980874f1c27f00004c89336a016a01488b4424104989e0ff15f800000058488d642410e95dffffff48b81890d1f1c27f0000488b5d08ff2348c7c005000000c34d89ee4983fd05750848c7c003000000c34983fe0775404c8b680841f6c501752d4d8b75084983fe01750949c7c603000000eb0749c7c6010000004983fe03750d4d8b7500498b4608e9f7feffff49c7c601000000eb0848c7c005000000c341f6c50175314d8b5d084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc9498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000000000|@17555,1,@3408,@5234,@5292|123,0,@8232 165,0,@10901 303,0,@9475 8232:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3406| 8233:D3,136|483b65187305ff5558cd01a801756e4c8b30488b40084d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3409| 8234:D3,176|483b65187305ff5558cd01a8010f858d0000004c8b30488b40084d8b364d8b76184d8b76084d8b264d89e54983fc05751048b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b76084d8b36eb044d8b7608eb074d8b76084d8b364156e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000000000|@10112,1,@3411|51,0,@10915 8235:D16,1320|483b65187306ff5558ca0d03525053415041514c8b7424084d89f541ff364d89ed4d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f641ff7628488b442440ff15520500004989c64156ff742448f604240175744c8b2c244d8b75004d89ed41ff75084d8b6e104d8b6d004d8b7618498b4518498d5fd8483b5d107306ff5550ca01404989df48c743f8040000004c8973184c8b7424504c8973104c8b7424384c89730849be981074f1c27f00004c8933ff15d8040000415d4c892c24483b65187303ff5558eb86488d642408488b442448488b5c2418ff15aa0400004989c641564c8b7424504c8b2c244983fe010f858a0000004983fd01756f488b442450488b5c2410ff15740400004889c34c8b7424584d8b7608ff74242853ff742420ff742458ff742470ff742428ff7424384156ffb42488000000488b8424980000004c8b4424484c8b4c24604c8b542478ff15210400004989c641564c8b7424584c8b6c2408e992000000488d64246048b8687dd2f1c27f0000488b5d08ff234d8b0e4d8b660841f6c501755b4d8b55004d8b5d084d8b49104d8b094d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424284d89114d89dd4d89e6483b65187306ff5558ca0060e919ffffff488d64246048b8d85bd5f1c27f0000488b5d08ff23488d64246048b8687dd2f1c27f0000488b5d08ff234983fe01756b4983fd0175504c8b7424484d8b0e4d89f64d8b46084d89f64d8b56104d89f6498b5e204d89f64d8b76286a016a014156544883042408488b442430ff152c030000ff3424ff7424104c8b7424584d8b7668e992000000488d64246848b8687dd2f1c27f0000488b5d08ff234d8b0e4d8b660841f6c501755b4d8b55004d8b5d084d8b49104d8b094d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424304d89114d89dd4d89e6483b65187306ff5558ca0060e93cffffff488d64246848b8d85bd5f1c27f0000488b5d08ff23488d64246848b8687dd2f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1d6502000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e91f0100004d8b364d8b2e4c3b2d0102000075104d8b76104983fe030f84b9000000eb18488da4248800000048b87810d1f1c27f0000488b5d08ff234c8b7424204c89f04983fe017518488da4248800000048b83027d5f1c27f0000488b5d08ff23ff15a30100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e4c8b6c24604d8975004c8b34244d897508488d64241048c7c0010000004883c478c3488b442430ff151d010000ff742430f6042401752a4c8b3424498b064d89f641ff7608488b5c2468ff15f2000000415d4c892c24483b65187303ff5558ebd0488d642408e918ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1db700000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4248800000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4a00000075134d8b76104983fe030f858bfeffffe925ffffff488da4248800000048b87810d1f1c27f0000488b5d08ff23f400000000|@17562,1,@3414,@4635,@4635,@8238,@8239,@8089,@4635,@4635,@8047,@8245,@8313,@8318,@8137,@8237|175,0,@8236 378,0,@12705 482,0,@17559 503,0,@12705 616,0,@12705 720,0,@17559 741,0,@12705 845,0,@10158 899,0,@9991 937,0,@17208 1243,0,@10198 1301,0,@9991 8236:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@17558,1,@3413,@5316| 8237:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b761041ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3496| 8238:D5,816|483b65187305ff5558cd09534c8b702841f6c601754c4d8b364d8b2e4d8b6d004983fd01751f4d8b76084d8b364983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe0375094c8b304c8b6820eb14488d642408eb05488d64240848c7c001000000c34983fd01750c49bd089ed1f1c27f0000eb194d8b5d004d8b65084d8b134983fa010f85720200004d8b6b0841554d8b2e4e8d246d010000004983fc01750f49bd885cd5f1c27f0000e9ae0000004d89e34983c3244c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153c0200000f87010200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb885cd5f1c27f000048c7c125000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1a48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8b05cd5f1c27f0000e9b20000004d89f44983c4344c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d650100000f871d0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bdb05cd5f1c27f000048c7c135000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1503010000ff15f50000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b3424498b5660488d642408ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff234d89e5483b65187306ff5558ca0060e953fdfffff4000000ffffffffffffff01ffffffffffffff01|@17565,1,@3415,@6249,@5030|119,0,@10983 175,0,@17563 313,0,@17563 382,0,@17564 538,0,@17564 575,0,@10221 741,0,@9487 762,0,@9487 8239:D5,144|483b65187305ff5558cd016a016a014889e3ff1598000000ff3424ff742410ff7424086a01f64424080175384c8b742408498b064d89f641ff7608488b5c24084c8b442418ff155d0000004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e4983fe03750f488d642410584883c410e985ffffff488d64242848c7c001000000c3f400000000000000|@17566,1,@3416,@8241,@8240| 8240:D3,296|483b65187305ff5558cd0953a8010f85f0000000ff30488b40084c8b34244d8b762841f6c60175384d8b364d8b2e4d8b6d004983fd01751f4d8b76084d8b364983fe01750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000041566a016a014889e3e88bffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c3f4|@10490,1,@3421|264,0,@10488 8241:D6,152|483b65187306ff5558ca0901534c8b702841f6c601757a4d8b3641ff3641ff76104c8b3424498b066a016a014889e3ff158b000000488b0424ff742408a8017407488d64242858c3ff156a0000004c8b742420498b1e4883fb0175054989c6eb09ff15490000004989c64c8b6c24204d8975004c8b34244c8b6c24184d897500488d64240848c7c0030000004883c428c358c3f400000000|@17567,1,@3417,@8243,@8244,@8242| 8242:D3,336|483b65187306ff5558ca090153a8017513ff30488b40084c8b34244d8b76084d89c5eb23415d49be1858d1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c341f6c501755b4d8b5d004d8b65084d8b134d3bd67502eb2f4d8b1a4e8d1c5d010000004d8b0e4c89c94e8d0c4d010000004d3bd9751a498d7208498d7e08483bc9f3a67402eb0949c7c603000000eb184d89e5483b65187306ff5558ca0161eb9f49c7c60100000041566a016a014889e3e843ffffff415c415d4c8b34244983fe03488d642408753f4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084c8b24244d8926488d6424084d89f4415e4d89264d896e0848c7c001000000c34d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d642408415d4d8965004d89750848c7c001000000c3f4000000|@10490,1,@3420|40,0,@10488 8243:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3418| 8244:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3419| 8245:D35,6504|488dbc24b0feffff483b7d187306ff5560ca090741514152a8010f8575010000f6c3010f856501000041f6c0010f8554010000ff30ff70084c8b6c24084d8b750041ff364d89ed4d8b75104d8b364d8b264d89ed4d8b752041ff364d89ed4d8b752841ff364d89ed4d89ee41ff75084d89f641ff7618ff33ff730841ff3041ff70084c8b5424604d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05781800000f87840000004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf415649c7c6010000004c8b6c2420eb32488d64246848b8f8c7d0f1c27f0000488b5d08ff23488d642410eb05488d642410eb05488d64241048c7c001000000c2480041f6c50175364d8b5d084d89f44983c4027115488d64247048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156f64424380175254c8b7424384d8b364d8b36498b06ff157b1800004989c64156ff742440ff3564180000eb15488d64247848b8c85dd5f1c27f0000488b5d08ff23f64424080175664c8b6c24084d8b75004d89ed41ff7508f64424080175344c8b6c24084d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd03750f498b4608ff15f81700004989c4eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb93415e4c8b6c24784d8b6d684883c40841f6c50175464d8b5d004d8b65084d8b134c3b15a917000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd01750f49bd2028d1f1c27f0000e9a11500004d8b6d004d8b65004c3b254217000075104d8b6d104983fd030f8473150000eb18488da4248000000048b87810d1f1c27f0000488b5d08ff2349c7c5010000004d89f441f6c401753a4d8b5424084d89eb4983c3027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc041556a016a0141f6c60175324d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd0375124d8b364c89342448c744240801000000eb1a49be2071d2f1c27f00004d8b2e4c892c244d8b76084c89742408ff3424ff7424104c8b6c24304983ed014c8b34244d03f541567118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff23488b442430ff15301600004989c5415e41f6c50175404d8b5d004d8b65084d89f24983ea014d03da7118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89de4d89e5483b65187306ff5558ca0060ebba41564c8bb424800000004983fe03752a4c8b34244983fe0375144c8b74243049bd88c1d1f1c27f0000e91413000049c7c601000000e90313000049c7c6010000004156488b442478488b9c2488000000ff15871500004989c6415648c7c001000000488b5c24404c8b4424484c8b4c2438ff155e1500004989c6415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8bb424180100004d8b364c8bac241801000041ff750849c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424084d8965104c8b1c244d89dc4d895d0849bbe03474f1c27f00004d895d004983c60241567118488da424e800000048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89e44d8966104d896e084c8b2c244d892e41564c8bb424c00000004983fe030f85680100004c8b4424204c2b4424407118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234983c001488b5c2440482b5c24487118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234883c301482b5c24787118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234883c3014883fb0375704983f8017d18488da424f000000048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00014d89ef49c745f8020000004d89450849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000e9a51000004883fb017f18488da424f000000048b8485ed5f1c27f0000488b5d08ff234883fb017d18488da424f000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15f11200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9da0f00004c8b7424784983ee01488b5c24484903de7118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff23488b4424704c8b442420ff15781200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f81100004989c6eb00415649c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd303674f1c27f00004d892e415648bae81cd1f1c27f0000488b44245848c7c303000000ff15721100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc0075d4f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd70d8d0f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424980000004c8930ff15de1000004989c641564c8bb424880000004983fe03750949c7c103000000eb0749c7c1010000004983f1024c8bb424980000004c89f34983fe017d18488da4241001000048b83020d1f1c27f0000488b5d08ff2348c7c0010000004c8b4424404c8b542428ff156f1000004889c348bac080d4f1c27f0000488b8424c0000000ff154c1000004c8bac245001000049c7c60100000041f6c50175104d8b55004d8b65084d89f3e90f0c00004c89f34883fb0175054989c6eb09ff150b1000004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d5fd84c3b5d107306ff5550ca00604d89df49c743f8040000004d896b184c8b6c24104d896b104c8b6424284d89e54d8963084c8b24244d89234c8b9424500100004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544c8ba4245001000041ff34244c8ba4245801000041ff7424204c8ba4246001000041ff7424384c8ba424800000004983fc03750949c7c601000000eb4a488b842460010000488b9c24580100004c8b8424780100004c8b94248001000041564155ff742448ff742468ffb42480000000ffb4248000000049c7c101000000ff15bc0e00004989c641564c8b9c24500100004c8b9424480100004c8bb42458010000498d8770ffffff483b45107306ff5550ca004c4989c748c740f8110000004c89b0800000004c8b7424084c8970784c8b7424204c8970704c8b7424304c8970684c8b7424384d89f44c8970604c8b6c24504d89ee4c8968584c8b4c24184d89cd4c8948504c8b4c24484d89c84c8948484c8b8c24800000004c8948404c8950384c8958304c8b5c24704c8958284c8b5c24584c8958204c8b5c24684c8958184c8b5c24604c8958104c8b9c24b80000004c89580849bb983674f1c27f00004c891848ba905fd5f1c27f0000ffb424f8000000ff742418415641554154488b9c24f80000004c8b8c24400100004c8b942430010000ff159d0d00004989c6415649c7c6010000004c8bac248000000041f6c50175394d8b5d084d89f44983c4027118488da4244801000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc14c3bb42498000000751a4c8b742430498b06ff152a0d00004989c648c7c001000000eb18488da4244801000048b8e861d5f1c27f0000488b5d08ff2341f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c5eb09ff159f0c00004989c54983fd017508415e4883c430eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c43041564c8b7424384d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15ee0b00004c8b7424184d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424104d89f54c3b35be0b00007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424104156ff155f0b00004989c64156488b442468ff15470b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f8080000004c8b9c24900000004d89dc4d895d384c8b5c24104d895d3049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706190000004156f68424c800000001740d4c8bb42460010000e9b50000004c8bb424600100004d8b2e4c8bb424600100004d8b760849c7c3010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d891a4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d8973104d89530849bee07774f1c27f00004d89334983c5027118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca003c4d89f749c746f8030000004d8956104d895e084d892e41564c8bb424080100004d8b76104d8b364d8b76104d8b2e4983fd050f859a0100004d8b56084d8b5e104c8bac24c00000004d89ee4d892a4c8bac24680100004d892b4c8b6c24684983fd030f85f3000000488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d89750041554c8bb424600100004c8bac24580100004c8ba424500100004c8b9c24480100004c8b9424400100004c8b8c24380100004c8b842430010000488bbc2428010000488bb4242001000041564155415441534152415141505756488b842440010000488b9c24080100004c8b8424f80000004c8b8c24580100004c8b942450010000e815efffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c410010000c248006a016a014c8bac247801000041564155ffb424c8000000ff742428ffb424c80000004154488b442440488b9c24f000000049b86862d5f1c27f00004c8b8c24e00000004c8d542430ff1547080000ff3424f68424e800000001740b415c4883c418e90203000049c7c6010000004c8bac24e8000000eb18488da4242001000048b8d85bd5f1c27f0000488b5d08ff2341f6c50175394d8b5d084d89f44983c4027118488da4243801000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8ba424d00000004d8b34244e8d2c75010000004983fd01750f49bec862d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b150c0700000f87980000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424284d8b76104d8b3648c7c001000000eb18488da4244001000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff155e0600004c8b34244d89f54c3b35480600007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15e20500004989c641564c8b7424104c89f34983fe017d18488da4245001000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15a20500004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004883c4184c8b9c24b80000004d89dd4983c3027118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004c8b14244d895608488d6424084d891e41564d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d89ed4d892e41564c8bb424680100004c8bac24600100004c8ba424580100004c8b9c24500100004c8b9424480100004c8b8c24400100004c8b842438010000488bbc2430010000488bb4242801000041564155415441534152415141505756488b842448010000488b9c24100100004c8b8424000100004c8b8c24600100004c8b942458010000e873eaffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c410010000c2480041f6c201750c4d8b024d8b4a084889c7eb174d89de4d89e5483b65187306ff5558ca0160e9b2f3ffff40f6c7017546488b17488b7708488b0a488b09498b18483bcb7520498d7ff0483b7d107306ff5550ca057f4989ff48c747f801000000488917eb184889f7483b65187306ff5558ca817febb448c7c7010000004883ff017405e9c60000004c89df40f6c7017546488b17488b7708488b0a488b09498b18483bcb7520498d7ff0483b7d107306ff5550ca057f4989ff48c747f801000000488917eb184889f7483b65187306ff5558ca817febb448c7c7010000004883ff01750948c7c703000000eb0748c7c7010000004883f7024883ff037450498d7fe8483b7d107306ff5550ca017f4989ff48c747f80200000048bee062d5f1c27f0000488977084c89074d8d47e84c3b45107306ff5550ca817e4d89c749c740f8020000004d895808498938eb034d89d84d89c34d89ca483b65187306ff5558ca017ce999feffff41f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f20100004989c6eb00e98df0ffffe9ffecffff4d3bf5750949c7c603000000eb2d41f6c601752041f6c50175114d8b164d8b66084d8b4d004d8b5d08eb3e49c7c601000000eb3349c7c6010000004983fe03751d4c8b7424104983fe03750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb94ebd24d3bd1750949c7c203000000eb4c41f6c201753f41f6c1017530498b324d8b4208498b11498b7908483bf275144989f94d89c2483b65187306ff5558ca007eebbf49c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375174d89dd4d89e6483b65187306ff5558ca0060e920ffffff49c7c601000000e97bffffff49be60bed1f1c27f0000e998eaffff41f6c50175464d8b5d004d8b65084d8b134c3b15c800000075214d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004d895d00eb184d89e5483b65187306ff5558ca0060ebb449c7c5010000004983fd017518488da4248000000048b8b82cd1f1c27f0000488b5d08ff234d8b6d004d8b65004c3b255800000075134d8b6d104983fd030f8508eaffffe95cffffff488da4248000000048b87810d1f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@17601,1,@3453,@4652,@4652,@6504,@8278,@7989,@9493,@7935,@8279,@8290,@8291,@9493,@7935,@8292,@8123,@8251,@8293,@8295,@7474,@8296,@4836,@4983,@6504,@8298,@8300,@8301,@8307,@8308,@4652,@4652,@8309,@11193,@8277|377,0,@9487 446,0,@9475 533,0,@17568 762,0,@10158 818,0,@9991 872,0,@9475 970,0,@12641 1031,0,@9475 1097,0,@9475 1164,0,@11223 1295,0,@9475 1448,0,@8246 1478,0,@9475 1579,0,@9475 1619,0,@9475 1654,0,@9475 1694,0,@16320 1806,0,@17571 1836,0,@10101 1946,0,@9475 2181,0,@8247 2196,0,@10077 2254,0,@16142 2303,0,@9565 2428,0,@10101 2470,0,@16215 3087,0,@8248 3100,0,@17577 3204,0,@9475 3284,0,@17593 3629,0,@9493 3666,0,@17022 3983,0,@8274 4010,0,@9475 4438,0,@17596 4516,0,@17559 4559,0,@9475 4623,0,@17598 4852,0,@9487 4992,0,@9493 5034,0,@17022 5083,0,@10101 5286,0,@9475 5898,0,@17599 6299,0,@11193 6411,0,@10198 6471,0,@9991 8246:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3422,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8247:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17574,1,@3423|42,0,@9475 8248:D6,672|483b65187305ff5558cd054989c5526a016a014c8b742410498b86800000004d89f64d8b46584d89f64d8b4e504d89f64d8b56604d89f64d8b767041565448830424084c89ebff157c020000ff34244c8b6c24104d8d57b84c3b55107306ff5550ca00204d89d749c742f8080000004c8b7424184d8b66784d89623849c74230010000004d89f64d8b66704d8962284d896a204d89f64d8b6e684d896a184d89f64d8b6e604d896a104d89f64d8b6e584d896a084d89f64d8b6e504d892a4d89f6498b56304d89f6498b46384d89f6498b5e404d89f64d8b464849c7c101000000ff124989c44c8b34244d89f54983fe01750a488d6424184d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c41041564c8b6424084d8b7424084983fe037506584883c408c34d89e44d8b6c24284983ed027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e44d8b7424204d89f34d89e44d2bf37115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64241048b8c0d2d4f1c27f0000488b5d08ff234983fe017e634d89e4498b5424184983ee027115488d64241048b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8970084c8928ff124c8b742408498b5e10ff15a70000004989c6eb414983fd017d15488d64241048b850d3d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700110000005b4c8b34244d8b4608488d642408ff251f000000f4000000000000|@17575,1,@3424,@8249,@7503,@8047|352,0,@9475 392,0,@9475 423,0,@16618 464,0,@9475 555,0,@16621 8249:D4,520|483b65187306ff5558ca09014989c64983f8010f8c8d0000004983f8017d02eb754c3b05d80100007f6c4c89c04883c07e49c7c58100000048d1e849d1ed4833d249f7f54c8d2445010000004d89e34e8d2c9d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca08514d89ef49d1eb4d895df841c645ff414e8d24e5f9ffffff4983fc017502eb2e4d89e34983eb10eb2048b87095d3f1c27f0000488b5d08ff2348b8289cd4f1c27f0000488b5d08ff234d3bdc751e49c7c40100000049c7c20300000049c7c30100000049c7c101000000eb244d89da49d1ea43c6441500004d89da4983c2024d89d3483b65187306ff5558ca0879ebb94d3bc80f8da30000004c89d7490bfc4981fa01010000755648d1ef4c89de48d1ee41887c35004c89c94883c102711048b8d0c6d0f1c27f0000488b5d08ff234c89da4883c20248c7c70100000048c7c6030000004989c94989d34989f24989fc483b65187306ff5558ca087feb924c89c94883c102711048b8d0c6d0f1c27f0000488b5d08ff234b8d7412ff4c89da4989c94989d34989f24989fc483b65187306ff5558ca087fe954ffffff4983fc017502eb0b49d1ec49d1eb4788641d00418065ffbf4d8d67e84c3b65107306ff5550ca08614d89e749c74424f8020000004d896c24084d8904244d89e54889d84c89eb4d89f0ff2528000000f400000000000000ffffffffffffff01|@17576,1,@3425,@8250|152,0,@14645 168,0,@16360 302,0,@9475 374,0,@9475 8250:D3,448|483b65187306ff5558ca09014989c65341504d8b264d89e54983fc157574498b460841ff761041ff7618488b5c24184c8b442410e8c7ffffff4989c64156488b442410488b5c24204c8b442418e8aeffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b6c24084c8968184c8970104c8b34244c897008488d64242848c70015000000c34d89ec4983fd217509488d6424104c89f0c34d89e54983fc1f754e41ff7608498b4610488b5c24104c8b442408e83cffffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64241848c7001f000000c34983fd0b757841ff7608498b461041ff7618488b5c24184c8b442410e8e4feffff4989c64156488b442408488b5c24204c8b442418e8cbfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424104c8b34244c897008488d64241848c7000b000000c3498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c8b2c244c896810488d6424084c89700848c70023000000c3f40000000000|@16375,1,@3426| 8251:D30,11160|488dbc24b0feffff483b7d187306ff5560ca0d075250534150415141524c8b7424404d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d422c000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e96d2a00004d8b364d8b2e4c3b2dde2b000075064d8b7610eb15488d64243048b87810d1f1c27f0000488b5d08ff234983fe03741b488d6424205a488b4424284c8b7424084c897424304883c430ff224c8b6c24584d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b54244048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f80400000049bef897d3f1c27f00004d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b6c24604d8b6d004c8b642460498b5424084c8b6424604d8b24244d2bec7115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc3825d5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b0000004156488b54245848c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424784d8b364c8b6c2478498b55084c8b6c24784d8b6d004d2bf57115488d64246048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424204c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bc6825d5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b0000004156488b54247048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424900000004d8b364c8bac2490000000498b55084c8bac24900000004d8b6d004d2bf57115488d64247848b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424384c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bce83ad5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b0000004156488b94248800000048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424a80000004d8b364c8bac24a8000000498b55084c8bac24a80000004d8b6d004d2bf57118488da4249000000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424504c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c745100100000049bcd85fd5f1c27f00004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb0ded3f1c27f00004d896e0849c7061b0000004156488b9424a000000048c7c003000000ff124989c641564d8d6fd84c3b6d107303ff55504d89ef49c745f8040000004c8b7424084d8975184c8b34244d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8bb424c00000004d8b364c8bac24c0000000498b55084c8bac24c00000004d8b6d004d2bf57118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424684c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424c80000004d8b364c8bac24c8000000498b55084c8bac24c80000004d8b6d004d2bf57118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424584c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424d00000004d8b364c8bac24d0000000498b55084c8bac24d00000004d8b6d004d2bf57118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424484c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424d80000004d8b364c8bac24d8000000498b55084c8bac24d80000004d8b6d004d2bf57118488da424c000000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424384c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424e00000004d8b364c8bac24e0000000498b55084c8bac24e00000004d8b6d004d2bf57118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424284c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706290000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c74424100100000049bdd85fd5f1c27f00004d896c24084c8b2c244d892c24488d6424084d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184d89751049beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175035beb12488b0424ff15e61f00004889c3488d6424084883fb017507488b5c2410eb0e488b442410ff15be1f00004889c34883fb017507488b5c2428eb0e488b442428ff159b1f00004889c34883fb017507488b5c2440eb0e488b442440ff15781f00004889c34883fb0175074c8b742458eb0e488b442458ff15551f00004989c641564c8bb424c8000000498b164c8bb424c800000041ff76084c8bb424d000000041ff7610488b8424d0000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8bb424980000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15521e00004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd306a74f1c27f00004d892e48c70424010000004c89742408e9b8000000488b9424d800000048c7c003000000ff124989c54c8ba424e80000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bc706a74f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff7424104c8bb424080100004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8ba424b80000004d8965184d8975104c8bb424c80000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d8966084d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b2c244d896e104c8b6c24384d896e084c8b6c24084d892e41564c8bb424080100004d8b364c8bac2408010000498b55084c8bac24080100004d8b6d004d2bf57118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424b00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424084d89650849c745000d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c74424100100000049bb3825d5f1c27f00004d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb0ded3f1c27f00004d896e0849c7062500000041564c8bb424100100004d8b364c8bac2410010000498b55084c8bac24100100004d8b6d004d2bf57118488da424f800000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424b80000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b542420488b842418010000ff124989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c74424100100000049be6825d5f1c27f00004d897424084c8b34244d893424488d6424084d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb0ded3f1c27f00004d896e0849c7062500000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004c8ba424280100004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049c74424100100000049bbe83ad5f1c27f00004d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049bdb0ded3f1c27f00004d896e0849c706250000004156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424080100004d8b76184d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424380100004d8b364c8bac2438010000498b55084c8bac24380100004d8b6d004d2bf57118488da4242001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b8424f0000000ff15c11600004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec06ad1f1c27f00004d8975104c8b34244d897508488d64240849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b7424204d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24184d895e0849c706050000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424104d89530849c703050000004d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb017507488b5c2408eb0e488b442408ff15e51400004889c34883fb0175075b4883c428eb12488b0424ff15c31400004889c3488d6424304883fb0175074c8b742418eb0e488b442418ff159b1400004989c641564c8bb424100100004d8b364c8bac2410010000498b55084c8bac24100100004d8b6d004d2bf57118488da424f800000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424a00000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c00000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc3825d5f1c27f00004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424180100004d8b364c8bac2418010000498b55084c8bac24180100004d8b6d004d2bf57118488da4240001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424900000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424200100004d8b364c8bac2420010000498b55084c8bac24200100004d8b6d004d2bf57118488da4240801000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424c80000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bc6825d5f1c27f00004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424200100004d8b364c8bac2420010000498b55084c8bac24200100004d8b6d004d2bf57118488da4240801000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424800000004c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424280100004d8b364c8bac2428010000498b55084c8bac24280100004d8b6d004d2bf57118488da4241001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424d00000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bce83ad5f1c27f00004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041564c8bb424280100004d8b364c8bac2428010000498b55084c8bac24280100004d8b6d004d2bf57118488da4241001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424704c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8bb424300100004d8b364c8bac2430010000498b55084c8bac24300100004d8b6d004d2bf57118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8bb424d80000004c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bcd85fd5f1c27f00004d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d897510488d64240849beb0ded3f1c27f00004d89750849c74500250000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b94240801000048c7c003000000ff124989c64156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424080100004d8b76104d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424380100004d8b364c8bac2438010000498b55084c8bac24380100004d8b6d004d2bf57118488da4242001000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b8424f0000000ff153b0a00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6c24204d89ee4983fd017d18488da4242801000048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15510900004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec06ad1f1c27f00004d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304c8b7424184c89f34983fe0175054889c3eb09ff15640800004889c34883fb017508415d4883c408eb12488b0424ff15410800004989c5488d6424104c8b24244d89e64983fc017d18488da4240801000048b80095d4f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d89f64d8974240849c70424050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c706110000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849c70424210000004983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f0000004156488b942400010000488b442420ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184c8b24244d896610488d6424104d896e0849c706150000004156488b94241001000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b7424084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24300100004d8b6d004c8ba42430010000498b5424084c8ba424300100004d8b24244d2bec7118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730848c703110000006a016a01488b8424480100004c8bb424400100004c8bac24300100004c8ba4245001000041564155ffb4242001000041544c8b84241801000049b90860d5f1c27f00004c8d542420ff159f050000585b6a016a014c8b8424400100004c8b8c24300100004989e2ff1578050000ff3424488b94243801000048c7c003000000ff124989c641564d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8bb424300100004d8b76084d897424184c8b2c244d89ee4d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8bac24580100004d8b6d004c8ba42458010000498b5424084c8ba424580100004d8b24244d2bec7118488da4244001000048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049c746080100000049c7062700000041564c8bb424600100004d8b364c8bac2460010000498b55084c8bac24600100004d8b6d004d2bf57118488da4244801000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b842418010000ff15620300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849bec06ad1f1c27f00004d8975104c8b34244d897508488d64240849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c89334883fb0175075b4883c408eb12488b0424ff15770200004889c3488d6424104883fb017507584883c410eb0f488b0424ff1550020000488d6424184c8b7424184c89f34983fe0175054889c3eb09ff152a0200004889c34883fb0175035beb12488b0424ff150c0200004889c3488d6424084883fb017507488b5c2418eb0e488b442418ff15e40100004889c34883fb0175074c8b742468eb0e488b442468ff15c10100004989c641564c8bb424300100004d8b364c8bac2430010000498b55084c8bac24300100004d8b6d004d2bf57118488da4241801000048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424084c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004c8b24244d89e64983fc01750e488da424180100004c89e8c22800498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c410010000c2280041f6c60175454d8b264d8b6e084d8b1c244c3b1da600000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64243048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3c00000075094d8b7610e938d5ffff488d64243048b87810d1f1c27f0000488b5d08ff23f4000000|@17583,1,@3430,@4652,@4652,@8256,@8257,@8258,@8259,@8260,@8261,@7906,@8052,@8262,@8265,@8266,@7906,@7906,@8267,@8268,@8269,@7906,@6504,@8270,@8271,@8272,@8273,@8255,@4652,@4652|128,0,@10158 169,0,@9991 393,0,@14658 516,0,@9475 659,0,@17195 708,0,@15120 883,0,@9475 1028,0,@17197 1077,0,@15120 1261,0,@9475 1406,0,@17318 1455,0,@15120 1645,0,@9475 1790,0,@17579 1839,0,@15120 2029,0,@9475 2189,0,@9475 2349,0,@9475 2509,0,@9475 2669,0,@9475 3032,0,@17579 3095,0,@15120 3636,0,@8252 3730,0,@8253 4069,0,@9475 4271,0,@17195 4325,0,@15120 4396,0,@9475 4566,0,@17197 4629,0,@15120 4700,0,@9475 4905,0,@17318 4959,0,@15120 5166,0,@9475 5379,0,@9475 5598,0,@10633 6084,0,@9475 6247,0,@9475 6396,0,@17195 6457,0,@15120 6567,0,@9475 6730,0,@9475 6879,0,@17197 6940,0,@15120 7050,0,@9475 7213,0,@9475 7362,0,@17318 7423,0,@15120 7533,0,@9475 7693,0,@9475 7842,0,@17579 7903,0,@15120 8340,0,@9475 8553,0,@9475 8765,0,@16320 8998,0,@10633 9190,0,@16320 9641,0,@9475 9806,0,@17581 10045,0,@9475 10258,0,@9475 10477,0,@10633 10806,0,@9475 11097,0,@10198 11142,0,@9991 8252:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3427| 8253:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3428|36,0,@9475 8254:D3,64|483b65187306ff5558ca09014989c6498d47d8483b45107306ff5550ca08414989c748c740f8040000004c894018488958104c89700848c70001000000c3f400|@17582,1,@3429| 8255:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3449| 8256:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3431| 8257:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3432| 8258:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3433| 8259:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3434| 8260:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3435| 8261:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3436| 8262:D4,664|483b65187306ff5558ca090753415041514152488b10ff7008ff7010488b442450ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424284d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15c70100004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd187274f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54246048c7c003000000ff124989c54c8b6424684d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bc587274f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b542440488b442468488b5c24604c8b442448ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b6424284d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24304d896e084c8b2c244d892e488d6424084c8b6c24304c8b24244d896500488d6424184d89750848c7c0010000004883c438c22000f400|@17584,1,@3439,@6504|295,0,@8263 383,0,@8264 8263:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3437| 8264:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3438|36,0,@9475 8265:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3440| 8266:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3441| 8267:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3442| 8268:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3443| 8269:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3444| 8270:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3445| 8271:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3446| 8272:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3447| 8273:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3448| 8274:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3450,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8275:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@17597,1,@3451| 8276:D3,24|483b65187305ff5558cd0148b88806d5f1c27f0000c3f400|@17600,1,@3452|13,0,@16989 8277:D4,104|483b65187305ff5558cd014989c641f6c601754b498b0641ff7608ff155f0000004989c64156488b442408e8d0ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f4|@10112,1,@3489,@8309| 8278:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3454|32,0,@9475 87,0,@11193 8279:D12,1832|483b65187306ff5558ca09074d89d64989da504150415641f6c1010f854f0200004d8b31498b59084c8b6424104d8b2c244d89e44d8b5c240849c7c1010000004d8d67f04c3b65107306ff5550ca086e4d89e749c74424f80100000041c64424ff404d890c2441544d8d67e04c3b65107306ff5550ca086c4d89e749c74424f8030000004d895c24104c8b0c244d89cb4d894c240849b9708274f1c27f00004d890c244983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d47e04c3b45107306ff5550ca087c4d89c749c740f8030000004d89db4d8958104d8960084d89284d8b224e8d1c65010000004983fb01750f49bca063d5f1c27f0000e9b80000004d89d94983c1064c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3de90500000f871e0100004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca886f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e94d890c244c89d9498d7208498d7c240848d1e9f3a44983c3104d89da49d1ea43c60414284d89da49d1ea43c64414013149d1eb43c6441c022941806424ffbf4154498d7fd8483b7d107306ff5550ca08614989ff48c747f8040000004c896f184c8977104c8b7424184c89770849bec08374f1c27f00004c89376a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504c8b5424484c8b4c24404156415541544153415241514989d94c89c04989f8488b5c24404c8d542430e8c0fdffffff3424ff7424104c8b7424284d8b3648c7c001000000e947030000488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b7424484983c6027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b6424104d8b2c244d89e4498b5424084c8b6424404d8b24244d2bec7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424404983fe017d15488d64242048b83020d1f1c27f0000488b5d08ff23488b5c24404c8b4c243848c7c0010000004c8b442418ff15250400004989c64156488b542418488b442420ff124989c641564c8b7424404983fe030f85800000004c8b7424084c89f34983fe017508415e4883c408eb12488b0424ff15d80300004989c6488d6424104c8b6424284d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b24244d896510488d6424084d89750849c745000f000000415e4d892e49c746080100000048c7c0010000004883c410c23000488b442408ff15650300004889c34883fb017508415e4883c408eb12488b0424ff15420300004989c6488d6424104d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b2c244d896c2410488d6424084d8974240849c704240f0000004c8b7424284d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8965204d89751849c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41564c8b7424304983fe017d15488d64242048b83020d1f1c27f0000488b5d08ff23488b5c243048c7c001000000ff15580200004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f000000415e4d892e49c746080300000048c7c0010000004883c410c2300041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15660100004c8b7424204d89f54c3b354f0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424204156ff15f00000004989c6415648c7c001000000ff15d60000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004c8b7424204d892e49c746080100000048c7c0010000004883c438c23000f400000000000000ffffffffffffff01|@17604,1,@3459,@8285,@7989,@9493,@7935,@8286,@8287,@8288,@8289,@8284|151,0,@8280 176,0,@9475 250,0,@17602 495,0,@8281 610,0,@9487 642,0,@9475 694,0,@9475 817,0,@10101 1256,0,@10101 1564,0,@9493 1601,0,@17022 8280:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3455,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8281:D6,480|483b65187305ff5558cd0552504c8b2c244d8b75004d89ed498b55084c8b6c24084d8b6d184d2bf57115488d64241048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010030000004c89700848c70001000000ff124989c64d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c700110000004c8b7424084d8b6e104d89ec41f6c50175784d89e54d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc0375544d89ee4d8b364d8d6fe84c3b6d107306ff5550ca00414d89ef49c745f8020000004d8975084d8945004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee98600000048c7c3010000004c8b7424084d8b761041f6c60175364d8b66084989dd4983c5027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb017d15488d64241048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff156e0000004c8b742408498b5e10ff15570000004989c641564c8b742410498b5608488b442408ff124889c34883fb017506584883c410c3584883c410ff2520000000f400000000000000|@17603,1,@3456,@8283,@5292,@8282|49,0,@9475 336,0,@9475 383,0,@10101 8282:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77d84c3b75107306ff5550ca09014d89f749c746f80400000049c7461801000000498946104d89460849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e893ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3458|90,0,@9475 8283:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3457| 8284:D3,336|483b65187306ff5558ca09035053415041514c8b6c24184d89ee4c3b6c2410750d488d64242048c7c001000000c34c8b6424084d8b2c244d89e4498b5424084c8b24244d8b24244d2bec7115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d89f64c8930ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608030000004d892e4156488b4424204883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b5c24184c8b4424104c8b4c2408e8e6feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c408c3f40000|@10111,1,@3465|83,0,@9475 248,0,@9475 8285:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3460|33,0,@9475 88,0,@11193 8286:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bdc8a0d4f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3461|64,0,@16379 98,0,@9475 8287:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3462| 8288:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e0a0d4f1c27f0000c3f4000000|@10402,1,@3463|75,0,@16380 8289:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3464| 8290:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3466| 8291:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@3467|89,0,@14034 8292:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3468| 8293:D6,1032|483b65187306ff5558ca090741514152a8010f85e5000000f6c3010f85da00000041f6c0010f85ce0000004d8b304983fe01750949c7c603000000eb0749c7c6010000004983fe030f85ab0000004c8b28488b40084c8b33488b5b08498b78084d8b6d104d8b6d004d8b6d104d8b65004983fc05756e4d8b65084d8b6d104d8934244c8b34244c89f24d897500488b7424084889d2488d6424104c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c24104c8b4424084c894424084989f84c894c24104989f14c895424184989d24c895c24204c896424284c896c2430e91cffffff488d64241048b8d85bd5f1c27f0000488b5d08ff23eb00eb00a8010f85f8020000f6c3010f85e802000041f6c0010f85d7020000ff30ff7008ff33ff7308498b0041ff7008488b5c24684c8b442460ff15f70200004989c641564c8b74246041ff364c8b7424684d8b364983c6027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24684d8975004c8b7424384d8b2e4c8b7424604d2bf57115488d64244848b8d0c6d0f1c27f0000488b5d08ff234983c6014983fe017d15488d64244848b8c0d2d4f1c27f0000488b5d08ff234983fe017e61488b5424584983ee027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424204c8930ff12488b5c2450ff150e0200004989c5eb4d4c8b6c24204d89ee4983fd017d15488d64244848b850d3d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89f64d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424384d8b76104d8b364d8b76104d8b2e4983fd050f85290100004d8b66084d8b6e104c8b7424084d8934244c8b7424784d897500488b442410ff154a0100004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64241049c746080100000049c70603000000498d77e8483b75107306ff5550ca00404989f748c746f8020000004c8b6c24304c896e084c8936488b442418488b5c24085f488d642408488b5424184c8b6c24584c8b6424504c8b5c24484c8b5424404c8b4c24384c8b4424304c894424304989f84c894c24384989f14c895424404989d24c895c24484c896424504c896c24584883c428e926fcffff488d64245048b8d85bd5f1c27f0000488b5d08ff23488d642408eb05488d642408eb05488d64240858c23000f400|@17608,1,@3469,@7906,@7503,@8294|235,0,@17559 347,0,@9475 395,0,@9475 426,0,@16618 464,0,@9475 564,0,@16621 993,0,@17559 8294:D3,248|483b65187306ff5558ca0901534150a801750d4c8b30ff70084c8b6c2410eb0d488d64241048c7c001000000c341f6c50175474d8b5d004d8b65084d8b134d8b124d8b0e4d3bd175204d8d77f04c3b75107306ff5550ca00084d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0060ebb349c7c6010000004983fe017515488d64241848b86864d5f1c27f0000488b5d08ff234d8b36498b5608488b442408ff124989c64156488b442408488b5c24184c8b442410e83dffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f40000000000|@10112,1,@3470|142,0,@17605 8295:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3471| 8296:D3,168|483b65187306ff5558ca0907483bc3750848c7c001000000c34d8d77c84c3b75107306ff5550ca09074d89f749c746f8060000004d8946284989462049895e184d894e104d89560849bd209474f1c27f00004d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e889ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400|@10111,1,@3473|74,0,@8297 100,0,@9475 8297:D3,240|483b65187305ff5558cd054989d44d8b7424204d8b6c24284983ed014d03f5711048b8d0c6d0f1c27f0000488b5d08ff234d8b6c24184d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c6014d8b6c24104d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c6014c8b28488b50084d8b6424084d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17609,1,@3472|35,0,@9475 61,0,@9475 91,0,@9475 128,0,@9475 8298:D5,736|483b65187306ff5558ca0901534150a8017538ff30ff70084c8b4424104c2b4424187115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00149c7c6010000004c8b6c2408eb0d488d64241048c7c001000000c341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0061ebc44d2bc67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00148c7c3010000004c8b74240841f6c60175364d8b66084989dd4983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0841ebc44883fb03756d4983f8017d15488d64242048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00014d89ef49c745f8020000004d89450849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70611000000e9c00000004883fb017f15488d64242048b8485ed5f1c27f0000488b5d08ff234883fb017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15500100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15d00000004989c6eb00415649c7c6010000004c8b6c241041f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983ee01488b5c24204903de7115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424084c8b442418e857fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c418c3f4000000|@17610,1,@3474,@6504,@8299|43,0,@9475 114,0,@9475 160,0,@9475 216,0,@9475 269,0,@16320 378,0,@17571 405,0,@10101 597,0,@9475 652,0,@9475 8299:D3,240|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c64983ee014c03f0711048b8d0c6d0f1c27f0000488b5d08ff234983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e846ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@10111,1,@3475|39,0,@9475 61,0,@16320 167,0,@9475 8300:D3,240|483b65187306ff5558ca0901483bc3750848c7c001000000c34d89c64983ee014c03f0711048b8d0c6d0f1c27f0000488b5d08ff234983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca09414d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca09214d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e846ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000000000|@10111,1,@3476|39,0,@9475 61,0,@16320 167,0,@9475 8301:D8,184|483b65187306ff5558ca09035041504151f6c301752e488b03ff73084c8b7424184c89f34983fe017502eb06ff15be0000005b4c8b4424084159488d642410e9bcffffff4c8b7424084c89f34983fe017d15488d64241848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15740000004c8b34244983fe03488d64241075164883f801750258c3415d4889c34c89e8ff2547000000ff15390000004889c34883fb01750258c358ff251f000000f4000000000000|@17611,1,@3477,@8303,@8304,@8305,@8306,@8302|89,0,@10101 8302:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3482| 8303:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3478| 8304:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b860bed1f1c27f0000c3f4000000|@10402,1,@3479|75,0,@11193 8305:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3480| 8306:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@10111,1,@3481|32,0,@9475 8307:D3,384|483b65187305ff5558cd09a8010f85600100004c8b20488b40084d8b34244d8b364d8b6c24084d8b4c24104d8b4424184883fb03751b41f6c60175054d8b26eb7048b8504ad1f1c27f0000488b5d08ff2349bca854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca09734d89df49c743f80100000041c643ff404d89234d8d67d84c3b65107306ff5550ca096b4d89e749c74424f8040000004d894c24184d895c24104d8974240849c704243300000049beb80bd1f1c27f00004d8d5ff04c3b5d107306ff5550ca09734d89df49c743f80100000041c643ff404d893349beb80bd1f1c27f00004d8d57f04c3b55107306ff5550ca097b4d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca093f4d89f749c746f8060000004d8946284d894e204d8956184d895e104d8966084d892e4156e8bcfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@3483|67,0,@10398 83,0,@10468 179,0,@9948 224,0,@9948 8308:D3,152|483b65187305ff5558cd01a80175104c8b28488b400849c7c601000000eb0848c7c001000000c341f6c50175314d8b5d084d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc94156e89bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10112,1,@3484|60,0,@9475 8309:D9,1352|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9eb000000909090e9ee000000909090e92f010000909090e93c010000909090e97c010000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e95d010000909090e99b000000909090e993000000909090e94e010000909090e94f010000909090e990010000909090e973000000909090e96b000000909090e987010000909090e9c4010000909090e953000000909090e94b000000909090e9ce010000909090e93b000000909090e933000000909090e9bf010000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e90300000090909048b860bed1f1c27f0000c34c8b70084d8b7610498b0648ba5066d5f1c27f0000ff154d0400004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70084d8b76084156ff3507040000e9530300004c8b700841ff7608498b4610e871feffffa801752d4c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe03750658e947feffff488d642408eb05488d642408c3488b4010e931feffff4c8b7008e9bc020000488b4008e91ffeffff4c8b70084d8b7610498b0648ba5066d5f1c27f0000ff157c0300004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70104d8b364d89f5e93d0100004c8b7008498b0648ba5066d5f1c27f0000ff15200300004989c64983f602498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34c8b70084d8b364983fe01751048b8d866d5f1c27f0000488b5d08ff23e999000000488b4008e957fdffff4c8b70104d8b364d8b2e4d89ec4983fd0b753b4d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc948b86067d5f1c27f0000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb974983fd07750a498b4608ff253f02000048b8f067d5f1c27f0000488b5d08ff2341f6c60175274d8b264d8b6e084983fd017509498b0424e9abfcffff4d89ee483b65187306ff5558ca0040ebd348b8b0aed4f1c27f0000488b5d08ff234d8b5d004d89dc4983fb07750d4d8b6d106a016a01e9c00000004983fc0d75194d8b65084d8b24244d89e5483b65187306ff5558ca0060ebc749c7c5010000004983fd03750b48b860bed1f1c27f0000c34d8b2e4d89ec4983fd0b753b4d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc948b86067d5f1c27f0000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb974983fd07750a498b4608ff252001000048b8f067d5f1c27f0000488b5d08ff234d8b65004983fc0175214d8b65084d8b6d104c8924244c896c2408488d642408415d4983f502e93bffffff4d8b65084d8b24244d89e5483b65187306ff5558ca0060ebbc41f6c60175274d8b264d8b6e084983fd017509498b0424e950fbffff4d89ee483b65187306ff5558ca0040ebd348b8b0aed4f1c27f0000488b5d08ff23f64424080175644c8b6c24084d8b75004d89ed41ff7508f64424080175324c8b6c24084d8b6d084983fd01750949c7c503000000eb0749c7c5010000004983fd03750d498b06e8e4faffff4989c4eb054c8b642408415d4c8924244c896c2408483b65187303ff5558eb95584883c408c3f40000000000|@17623,1,@3486,@8312,@8311,@8310,@8310,@11193,@8310|279,0,@11193 301,0,@17612 494,0,@17612 578,0,@17612 653,0,@17614 745,0,@17617 811,0,@17620 872,0,@16444 958,0,@11193 1024,0,@17617 1090,0,@17620 1219,0,@16444 8310:D4,1248|483b65187305ff5558cd0552ff15e60400004989c64d8b264d89e54983fc0975154d8b76084c8b2c244d8b6d104d8b6d004d89f4eb794983fd0b75664d8b6e084d8b76184983fd01754b4d8b76184d8b66084d89e54d8b24244983fc0375294d89ee4d8b76084c8b2c244d8b6d08488d6424084d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c3488d64240848c7c001000000c34983fc01750c49c7c501000000e9ee0000004d8b0c244d8b5c24084d8b55184d8b4918498b7a084989f8488b3f4883ff03754e498b71084889f7488b364883fe03750948c7c603000000eb0748c7c6010000004883fe0375284d8b50084989f94d8b49084d3bd1750949c7c203000000eb0749c7c2010000004983fa037566eb784c89c74d8b004983f801754b498b71084989f0488b364883fe01750948c7c603000000eb0748c7c6010000004883fe0375254989fa4d8b52184d89c14d8b49184d3bd1750949c7c203000000eb0749c7c201000000eb0749c7c2010000004983fa0374144d89dc483b65187306ff5558ca0070e907ffffff49c7c5030000004983fd03752e4c8b34244d8b76104d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee9820200004d89f54983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b1c244d8b5b084d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d184d892ee9f50100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375644d89d34d8b53084c8b1c244d8b5b484d3bda750949c7c303000000eb0749c7c3010000004983fb03753a49c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d204d892ee9520100004d89f5eb144d89e5483b65187306ff5558ca0060e95dffffff4983fd01750949c7c501000000eb4d4d8b5d004d8b65084d8b5b184d8b4b084d89ca4d8b094983f90375614d89d34d8b53084c8b1c244d8b5b404d3bda750949c7c303000000eb0749c7c3010000004983fb03753749c7c5030000004983fd0375284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d284d892ee9af000000eb144d89e5483b65187306ff5558ca0060e960ffffff4983fe01750949c7c601000000eb584d8b264d8b6e084d8b6424184d8b5424084d89d34d8b124983fa030f85ca0000004d89dc4d8b5c24084c8b24244d8b6424384d3be3750949c7c403000000eb0749c7c4010000004983fc030f859a00000049c7c6030000004983fe0375254d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d8b6d304d892eeb0749c7c6010000004983fe01750d488d64240848c7c001000000c34d8b364d8b76184d8b66084d89e54d8b24244983fc0375294d89ee4d8b76084c8b2c244d8b6d08488d6424084d3bf5750848c7c003000000c348c7c001000000c3488d64240848c7c001000000c34d89ee483b65187306ff5558ca0040e9f2fefffff40000000000|@17613,1,@3485,@5062| 8311:D4,120|483b65187305ff5558cd01a801755c4c8b30ff7008498b460848ba5066d5f1c27f0000ff15670000004989c64983f6024156488b442408e8c4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@10112,1,@3488,@8310|27,0,@17612 8312:D4,120|483b65187305ff5558cd01a801755c4c8b30ff7008498b460848ba5066d5f1c27f0000ff15670000004989c64983f6024156488b442408e8c4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@10112,1,@3487,@8310|27,0,@17612 8313:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@3491,@8314| 8314:D6,104|483b65187305ff5558cd094989de4c8b68104d8b6d00498b4518498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bee0ad74f1c27f00004c89336a016a014989e0ff153d000000488d64240858ff1529000000ff251b000000f40000|@17625,1,@3492,@8317,@8316,@5234|59,0,@8315 8315:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@17624,1,@3490| 8316:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3494| 8317:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@9893,1,@3493| 8318:D3,120|483b65187305ff5558cd0953a8017554ff7008488b54240848c7c005000000ff124989c64156488b442408488b5c2410e8cbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4000000000000|@10112,1,@3495| 8319:D19,2064|488dbc2448ffffff483b7d187306ff5560ca0d075250534150415141524c8b2c244d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff762849c7c6010000004c8b6c243841f6c50175364d8b5d084d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b7424204d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1df207000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9620600004d8b364d8b2e4c3b2d8e07000075104d8b76104983fe030f84c2050000eb15488d64245848b87810d1f1c27f0000488b5d08ff23f6442440010f85f40200004c8b7424404d8b3641ff76206a016a014c8b6c24504d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd90b974f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54242848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849bcd0b974f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24504d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442438ff124989c64156488b542438488b442428ff124989c641564c8b6c24304d89ee4983fd017d0d488da42488000000e9920100004d89f64d89f54c3b356d0500000f8d770100004d89ed4c89e94e8d34ad0400000049f7de4d03f74c3b751072054d3bf77205ff5550cd024d89f749d1ed4d896ef841c646ff404c89f748d1e948c7c001000000f348ab41564d8d57c04c3b55107303ff55504d89d749c742f8070000004c8b34244d8972304c8b7424784c89f04d8972284c8b7424084d8972204c8bb424880000004d8b6e104d896a184c8b6c24604d896a104d89f64d8b76084d89720849be90ba74f1c27f00004d89324d8d77d84c3b75107306ff5550ca01044d89f749c746f8040000004c8b6c24404d896e184c8b6c24484d896e104c8b6c24504d896e084c8b6c24584d892e6a016a014156544883042408488b5c24304c8b8424880000004c8b4c2450ff15e2040000ff34244c8b7424104983fe0375214c8bb424800000004983fe03750e4c8b7424704d8b7668e99b010000e9910100004c8bb424800000004983fe037502eb29488b44247048c7c3010000004c8b8424980000004c8b4c244849ba586ad5f1c27f0000ff1572040000eb2d488da4248800000048b8d015d1f1c27f0000488b5d08ff23488d64245848b8886ad5f1c27f0000488b5d08ff234c8b7424184d8b76f849c1e60849c1ee074983ce0141566a014c8b34244c89f04c3b7424080f82b9000000488d6424104c8bac24a00000004d8b75104d89ed4d8b6d08ffb42498000000ffb4248000000041564155488b8424b0000000488b5c244049c7c0030000004c8b4c24384c8b942490000000ff15bf0300004889c34883fb0175074c8b742430eb0e488b442430ff159c0300004989c64983fe017509584881c4a0000000c3498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c7001f0000004881c4a0000000c34889c04c8b742428498b5c86fc4c8b8424a00000004c8b8c24800000004c8b9424a8000000ff151c0300004c8b2c244983c5024c892c24483b65187303ff5558e9f0feffffe9d2feffff41f6c60175454d8b264d8b6e084d8b1c244c3b1ddd02000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750c49be2028d1f1c27f0000eb654d8b364d8b2e4c3b2d7c02000075064d8b7610eb18488da424a800000048b87810d1f1c27f0000488b5d08ff234983fe030f8560ffffff488b44247048c7c3010000004c8b8424980000004c8b4c244849bae06ad5f1c27f0000ff1521020000e932ffffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dfc01000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da424a800000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d8f01000075094d8b7610e940ffffff488da424a800000048b87810d1f1c27f0000488b5d08ff23ff7424406a01f64424080175384c8b6c24084d8b75004d89ed41ff7508498b4608488b5c2408ff15380100004989c4415d4c8924244c896c2408483b65187303ff5558ebc1415e4156f6042401752a4c8b3424498b064d89f641ff7608488b5c2438ff15f4000000415d4c892c24483b65187303ff5558ebd0488d642410e9d2f9ffff41f6c60175454d8b264d8b6e084d8b1c244c3b1db900000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64245848b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4f00000075134d8b76104983fe030f8548f9ffffe9eefeffff488d64245848b87810d1f1c27f0000488b5d08ff23f400000000ffffffffffffff01|@17646,1,@3506,@4635,@4635,@8238,@8323,@4636,@4636,@5316,@4636,@4636,@8330,@8331,@8332,@5316,@8327,@4635,@4635|105,0,@9475 240,0,@10158 291,0,@9991 383,0,@8320 471,0,@8321 833,0,@8322 1032,0,@17632 1058,0,@10027 1079,0,@17633 1485,0,@10158 1526,0,@9991 1577,0,@17635 1694,0,@10198 1742,0,@9991 1982,0,@10198 2037,0,@9991 8320:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3497| 8321:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3498|36,0,@9475 8322:D12,1136|488dbc2440ffffff483b7d187305ff5560cd0552504c8b6c24084d8b65304d89e64d8b5424f849c1e20849c1ea074983ca014c8b1c244d89dc4d3bda7215488d64241048b81011d1f1c27f0000488b5d08ff234d89ed4d89f24d89e44f8b74a6fc4983c6027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89ed4d89d34d8b4af849c1e10849c1e9074983c9014d89e44d89e24d3be17215488d64241048b80017d1f1c27f0000488b5d08ff234d89ed4d89d24d89d44f897493fc6a016a016a014d89ed4d8b6d284d89e441f6c5010f857f0300004d8b55004d8b5d084983fc010f85380300004d8b2a4c892c244d8b6a084c896c24084d8b6a284c896c2410ff3424488b442410ff7424184983fe070f8f1c02000048c7c301000000ff15a00300004c8b7424304d8b6e104d89ec4d8b4d004d89e54d8b4424084d89ec4d8b55104d89e5498b5c24204d89ee4d8b76286a016a014156544883042408ff1558030000ff3424ff7424106a016a014c8b742460498b561848b8c046d1f1c27f0000488b5c24384989e0ff12ff34244c8b7424684d8b6e104d89ec41ff75004d89e541ff7424084d89ee41ff76106a016a01488b442440488b5c24284c8b4424204989e1ff15ea020000ff3424ff74241048ba0826d5f1c27f0000488b442470488b5c24384c8b4424284c8b4c24304c8b542420ff15b20200004889c34883fb017507488b5c2408eb0e488b442408ff158f0200004889c34883fb0175074c8b742458eb0e488b442458ff156c0200004989c641564c8bb424a80000004d8b6e104d89ec4d8b6d004d89f64d89e34d8b6424084d89f64d89da4d8b5b104d89f64d89d14d8b52184d89f64d89c84d8b49284d89f64c89c74d8b40304d89f6488b7f38498d5fb8483b5d107306ff5550ca807f4989df48c743f80800000048897b384c8943304c894b284c8b4c24084c894b204c8953184c895b104c8963084c892b6a016a014d89f6498b5608488b8424900000004989e0ff12415d488d6424084c8b24244d89e64983fc01750c488da424b00000004c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c4a8000000c3488d64242848c7c301000000ff154f010000ff15410100004c8b7424084d8b76204c8b2c244983ed01488d6424104d03f5711048b8d0c6d0f1c27f0000488b5d08ff234983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156ff15a30000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424084c89700848c7000f000000c34d89e24983ea027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070e977fcffff488d64242848b8c85dd1f1c27f0000488b5d08ff23f400|@17627,1,@3499,@7906,@8324,@8323,@8325,@8326,@8056,@8153,@8047,@8323|69,0,@9995 110,0,@9475 164,0,@10034 382,0,@10368 471,0,@17201 876,0,@9475 898,0,@16320 1076,0,@9475 1120,0,@10528 8323:D3,656|483b65187305ff5558cd094989c64889d84d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9eb000000909090e9e4000000909090e9db000000909090e9d3000000909090e9df000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e9a6000000909090e9e2000000909090e9e6000000909090e9fa000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9db000000909090e93b000000909090e933000000909090e9d2000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e903000000909090c34d8b76084d8b6e084889c34c89e8e9d1feffff4d8b6e104889c34c89e8e9c2feffff4d8b76084d8b76084d8b2e4d8b75084983fe017502eb2c41f6c60174264d8d77e84c3b75107306ff5550ca01204d89f749c746f802000000498946084d892e4c89f0c3c34d8b7618415650e9b90000004d8b6e0841ff76104889c34c89e8e85ffeffff4889c358e956feffff4d8b7610415650eb554d8b6e084889c34c89e8e93efeffff4d8b7608415650f64424080175324c8b742408498b064d89f641ff7608488b5c2408e817feffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175324c8b742408498b064d89f641ff7608488b5c2408e8d8fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc7584883c408c3f64424080175374c8b6c24084d8b75004d89ed41ff7508498b4618488b5c2408e894fdffff4989c4415d4c8924244c896c2408483b65187303ff5558ebc2584883c408c3f400000000|@17631,1,@3503| 8324:D3,232|483b65187305ff5558cd01a8010f85c80000004c8b30488b40084d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a869d5f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3500|58,0,@16320 205,0,@17628 8325:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3501| 8326:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3502| 8327:D14,1160|483b65187306ff5558ca0907534150415141524c8b74243041ff3649c7c6010000004989c541f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc44156ff35870400006a0350f60424010f85a30000004c8b2c244d8b75004d89ed41ff7508498b46084d8b4e204c8b7424104d89f04983c60241567115488d64245848b8d0c6d0f1c27f0000488b5d08ff236a016a016a014c8b94248000000054488b5c2440ff151c040000415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d897500415c415b4c891c244c896424084c896c2410483b65187303ff5558e953ffffff488d642410ff3424488b0424ff15b50300004989c64983fe03750c49c7c603000000e99a0000004c8b7424184d8b766841f6c60175454d8b264d8b6e084d8b1c244c3b1d7703000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e9360200004d8b364d8b2e4c3b2d1303000075064d8b7610eb15488d64244048b87810d1f1c27f0000488b5d08ff23415648c7c003000000488b5c2418ff15da0200004889c36a016a016a016a01488b44242849b8106bd5f1c27f000049c7c1010000004989e2ff15a8020000415b415c415d415e498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8970184c8968104c8960084c89186a016a016a016a014c8b5424204983fa03750b4889e3ff1552020000eb134c891c244c896424084c896c24104c89742418415c415b415d415a4d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e104d895e084d89264883c4284983fd01750949c7c501000000eb3b41f6c5010f85070100004d8b5d004d89dc4983fb01750949c7c503000000eb1b41f6c5010f85d20000004983fc010f8e9500000049c7c5010000004983f50241554d8d47c84c3b45107306ff5550ca00404d89c749c740f8060000004c8b6c24084d8968284c8b2c244d8968204c8b6c24184d8968184c8b6c24104d8968104c8b6c24204c89eb4d89680849bd18ca74f1c27f00004d89284c8b4c24384c89f0ff154a0100004989c64c8b6c24304d8975004c8b34244d897508488d64242848c7c001000000c2100041f6c50175184d8b65084d89e5483b65187306ff5558ca0060e90affffff488d64242048b8e049d1f1c27f0000488b5d08ff23488d64242048b8504ad1f1c27f0000488b5d08ff23488d64242048b8504ad1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1daa00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017515488d64244048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d4000000075094d8b7610e96ffdffff488d64244048b87810d1f1c27f0000488b5d08ff23f400000000000000|@17656,1,@3519,@4652,@4652,@8342,@8353,@8358,@8367,@4652,@4652,@8368,@8369,@17655|63,0,@9475 164,0,@9475 419,0,@10158 460,0,@9991 512,0,@17636 845,0,@8329 942,0,@10395 963,0,@10398 984,0,@10398 1093,0,@10198 1138,0,@9991 8328:D3,160|483b65187305ff5558cd014c8b304983fe01750949c7c501000000eb0941f6c60175664d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080100000049bea85bd1f1c27f00004c8930c348b8504ad1f1c27f0000488b5d08ff23f4000000000000|@17637,1,@3504|125,0,@10515 139,0,@10398 8329:D5,688|483b65187305ff5558cd054883f8010f85040200004c8b72204983fe03751048b8606bd5f1c27f0000488b5d08ff234c8b72184983fe03752a498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b72084c89700848c70021000000c34c8b72104d89f44d8b2e4d89e64d8b5424084d89f34d8b66104d89de4d8b4b184d8b5e204c3b2d420200007502eb344d8b75004e8d3475010000004983fe01753c49bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb1a4983fc0175124983fb01750c49bdc06ad1f1c27f0000eb5feb004d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd306cd5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be686cd5f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb1c488b52284883e802711048b8d0c6d0f1c27f0000488b5d08ff23ff2241f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff154c0000004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3f400000000000000|@17645,1,@3505,@6504,@9493|33,0,@17638 166,0,@9493 212,0,@10633 388,0,@10633 433,0,@17642 477,0,@17644 549,0,@9475 8330:D5,712|483b65187306ff5558ca0907415141524883fb0175054989c6eb0d488d64241048c7c001000000c341f6c0010f856d0200004d8b204d8b68084983fe010f85270200004d8b74242041564883c0027115488d64241848b8d0c6d0f1c27f0000488b5d08ff2348bae81cd1f1c27f000048c7c303000000ff156c0200004989c64d8b2e4e8d246d010000004983fc01750f49bdf86cd5f1c27f0000e9ae0000004d89e34983c3104c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15f10100000f87800100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bbf86cd5f1c27f000048c7c111000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49ba106dd5f1c27f0000e9b40000004d89f44983c41c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d1a0100000f879c0000004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f1498d7508498d7a0848d1e9f3a44983c61049bd106dd5f1c27f000048c7c11d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf488b4424104c8b4424084159488d64241048c7c301000000ff25a0000000488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff234d89f44983ec027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89e64d89e8483b65187306ff5558ca0141e989fdffff488d64241048b8c85dd1f1c27f0000488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01|@17649,1,@3507,@5316,@4983|87,0,@9475 103,0,@10077 146,0,@17647 284,0,@17647 353,0,@17648 510,0,@17648 583,0,@9487 604,0,@9487 634,0,@9475 678,0,@10528 8331:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3508| 8332:D18,2736|488dbc24e8feffff483b7d187306ff5560ca090753415041514152a8010f85480200004c8b30ff700841ff36498b460841ff76284c8b7424504d8b76084c8b6c245041ff75184c8b6c24304d89e84983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b4c24284d8b61f849c1e40849c1ec074983cc014d3bec7215488d64244048b81011d1f1c27f0000488b5d08ff234d89c94f8b6ca9fc4983fd077f66488d6424184d89c04983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff2358488b5c24184d89c95f488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c895424184989fa4c895c24204c896424284c896c24304883c410e9f4feffff4d8b2e4d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca01684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca01604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849bed8db74f1c27f00004d8934244983c5027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d89db4d895e104d8966084d892e415649c7c5030000004d8d77f04c3b75107306ff5550ca01204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d896e0849bd28dd74f1c27f00004d892e41564c8b74247841ff364c8bb4248000000041ff76204c8bb4248800000041ff76284c8bb4249000000041ff763848c7c301000000ff15df0800004989c6415649c7c6010000004c8b2c24eb0f488d64242048c7c001000000c2200041f6c50175394d8b5d084d89f44983c4027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b34244c89f34983fe017d18488da4249000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15430800004989c64156488b442410488b5c2440ff15260800004989c64156488b0424488b5c2408ff150a0800004989c641564c8b7424204c8b6c24084983fe010f85780400004983fd010f85560400006a016a01ff742440544883042408488b442440488b5c24584c8b4424784c8b4c24604c8b542468ff15b2070000ff3424ff7424106a016a01488b9424e800000048b8c046d1f1c27f0000488b9c24a80000004989e0ff12ff34246a016a01488b442428488b5c24104c8b8424880000004989e1ff155e070000ff3424ff74241048ba0826d5f1c27f0000488b8424c8000000488b5c24204c8b8424b00000004c8b8c24980000004c8b9424a0000000ff151a0700004889c34883fb017507488b5c2408eb0e488b442408ff15f70600004889c34883fb017507488b5c2440eb0e488b442440ff15d40600004889c34883fb0175074c8b742458eb0e488b442458ff15b10600004989c64156498d5fb8483b5d107303ff55504989df48c743f8080000004c8bb424880000004c89733848c74330010000004c8bb424900000004c8973284c8b7424084c8973204c8bb424c80000004c8973184c8bb424a80000004c8973104c8bb424b80000004c8973084c8bb424a00000004c89336a016a01488b942420010000488b8424e80000004989e0ff12415c488d6424084c8b34244d89f54983fe01750a488d6424784d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c47041564c8ba424880000004d89e64983ec027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234983ec014c8bac24900000004d03ec41557118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234c8b5c24604d8b2b4e8d246d010000004983fc01750f49bd18d9d0f1c27f0000e9a00000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0ddc0400000f87a50100004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e14d89db498d7308498d7d0848d1e9f3a44983c41049d1ec43c64425002f418065ffbf415548bae81cd1f1c27f00004c89f048c7c303000000ff15900400004989c44c8b14244d8b324e8d2c75010000004d8b34244e8d1c75010000004983fd01750d488d6424084d89e6e9c00000004983fb01750d4d89d6488d642408e9ad0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05d60300000f878f0000004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208488d642408498d7e0848d1e9f3a44983c5104c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf41564c8b7424604d8b3648c7c001000000e9c4000000488da424a800000048b8f8c7d0f1c27f0000488b5d08ff23488da424a000000048b8f8c7d0f1c27f0000488b5d08ff23488da424a800000048b8687dd2f1c27f0000488b5d08ff234d8b0e4d8b660841f6c50175574d8b55004d8b5d084d8b49104d8b014983f805752a4d8b41084d8b49104d89104c8b5424584d89114d89dd4d89e6483b65187306ff5558ca0060e932fbffff488da424a800000048b8c06dd5f1c27f0000488b5d08ff23488da424a800000048b8687dd2f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff156d0200004c8b7424504d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424084d89f54c3b353d0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424084156ff15de0100004989c641564c8b7424304c89f34983fe017d18488da424c000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff159e0100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b6c24104d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c7060300000041564c8b8424a00000004983c0027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234c8bb424d00000004c8bac24c80000004c8ba424c00000004c8b9c24b80000004156415541544153488b8424a8000000488b9c24c80000004c8b8c24b80000004c8b9424b0000000e89ef5ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084881c4a8000000c22000f40000000000ffffffffffffff01ffffffffffffff01|@17654,1,@3511,@8336,@6242,@9493,@7935,@4983,@8337,@8338,@8339,@8056,@8153,@8047,@8340,@8341,@8335,@8323|91,0,@9475 138,0,@9995 187,0,@9475 369,0,@8333 394,0,@9475 531,0,@8334 663,0,@9475 722,0,@10101 891,0,@10368 955,0,@17201 1342,0,@9475 1385,0,@9475 1423,0,@9572 1600,0,@10077 1897,0,@9487 1921,0,@9487 1945,0,@12705 2045,0,@17651 2069,0,@12705 2230,0,@9493 2267,0,@17022 2319,0,@10101 2567,0,@9475 8333:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3509,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8334:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17650,1,@3510|42,0,@9475 8335:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@10111,1,@3518|32,0,@16320 137,0,@9475 8336:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3512|32,0,@9475 87,0,@11193 8337:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3513| 8338:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3514| 8339:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3515| 8340:D3,192|483b65187305ff5558cd094883f801751e4883fb01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff234c8b28488b4008f6c301756f4c8b23488b5b084d8d77d84c3b75107306ff5550ca09304d89f749c746f8040000004d8966184d896e1049c746080100000049c706030000004156e885ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8282dd3f1c27f0000488b5d08ff23f40000000000|@13917,1,@3516|33,0,@13915 172,0,@13915 8341:D3,120|483b65187305ff5558cd09a801755b488b4008ff334c8b334983c6027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8933e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3517|37,0,@9475 8342:D4,48|483b65187306ff5558ca09034d89c24d8b69084d8b61184154ff74240849c7c0010000004c896c2410ff2519000000f4|@17660,1,@3520,@8343| 8343:D6,1056|483b65187306ff5558ca090753415041514152ff30ff7008ff70104c8b6c24204d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424384d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244848b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424110000004c8b6c241841f6c501754e4d8b55004d8b5d084d8b4a104d8b114983fa0575244d8b51084d8b49104d89324c8b5424084d89114d89dd483b65187306ff5558ca0070ebc1488d64244848b8c86ed5f1c27f0000488b5d08ff234c8b7424204d8b1e4d89dd4983fb0775294d89f6498b4608488b5c24404c8b4424384c8b4c24304c8b542428ff15de0200004989c5e9420100004d89f64d89eb4983fd0375514d89f64d8b5e084d89f6498b5e104d89f6498b46184c8b7424584c8b6c2450415641554153ff742458ff742458415449b8206fd5f1c27f00004c8b4c24604c8b542458ff15790200004989c5e9e50000004d89f64d89dd4983fb0975224d89f64d89f541ff76084d89ed4d8b75104d89ed4d8b6d184c8b642440e9290100004d89f64983fd01757e4d89f6498b46084d89f64d8b6e104d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004c8b6c24384d8968084d89304c8b7424584c8b6c245041564155488b5c24504c8b4c24404c8b542438e881fdffff4989c5eb19488b542428f644241001750f4c8b742410498b06ff124989c5eb15488d64244848b8504ad1f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004c8b24244d8926488d6424084983fe01750b488d6424404c89e8c21000488d642440498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c2100041f6c40175424d8b14244d8b5c24084d8b0a4d3bf175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89dc483b65187306ff5558ca0070ebb849c7c6010000004983fe017515488d64245048b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15850000004889c3eb32498d5fd8483b5d107306ff5550ca00604989df48c743f80400000048c74318010000004c896b104c89730848c703170000004c8b7424604c8b6c245841564155488b4424104c8b4424504c8b4c24484c8b542440e8effbffff4989c5488d642408e996fefffff400|@17664,1,@3521,@5380,@8345,@8344|129,0,@16320 298,0,@17657 431,0,@17659 678,0,@10398 898,0,@10926 8344:D5,336|483b65187306ff5558ca090753415041514152a8010f85180100004c8b30ff700841ff3641ff7608488b442408488b1c244c8b4424304c8b4c24284c8b542420ff152a0100004989c64156488b542420488b442408ff124989c44c8b34244d89f54983fe01750a488d6424104d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c4084156f6442410017406584883c430c3488b442408488b5c24304c8b4424284c8b4c2420ff15980000004989c64156488b442418488b5c24384c8b4424304c8b4c24284c8b542420e80dffffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488d64244048c7000b000000c3488d64242048b8686fd5f1c27f0000488b5d08ff23f400000000000000|@17680,1,@3528,@8352,@8351|314,0,@17661 8345:D5,512|483b65187306ff5558ca0907534150415141524883f8017544488b542410488b442440488b5c24384c8b4424304c8b4c2408415a488d6424104c8b6c24384c8b6424304c896424304c896c24384c8b7424084c897424284883c428ff224c8b30ff7008498b064989c44d89e54d8b24244983fc010f85840000004c8b6424204983fc037579498b4508498b5d1041ff7608f64424080174514c8b4424384c8b4c24604c8b542458ff15730100004889c3488b542420584c8b4424384c8b4c24104c8b5424084c8b6c24584c8b6424504c896424504c896c24584c8b7424284c897424484883c448ff22488d64243048b82870d5f1c27f0000488b5d08ff2341ff76086a016a01488b5c24484c8b4424284989e1ff15ff000000ff3424488b5c2410488b5424384c8b4424584c8b7424784c8b6c247041564155488b4424284c8b4c24404c8b542438ff124989c64156488b5c24484883eb027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234c8bb424800000004c8b6c24784c8b6424704c8b5c24684c8b5424604c8b4c2458415641554154415341524151488b4424584c8b4424704c8b4c24684c8b542460e84bfeffff4989c6498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b34244c897010488d6424084c8b34244c897008488d64240848c7000b0000004883c440c23000f4|@17672,1,@3523,@8348,@8346|240,0,@17665 353,0,@9475 8346:D7,408|483b65187306ff5558ca09074150415141524c8b70084983fe01756d488d6424104c8b34244d8b2e4983fd0d751c4c89f0488d64240849c7c00300000048c7c305000000ff257e010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180300000048c74010050000004d89f64c897008488d64240848c70017000000c341f6c6010f85eb0000004d8b364983fe037510488d64241848b8c06ad1f1c27f0000c34d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b2c244d896e104989460849bd98ec74f1c27f00004d892e415648c7c001000000ff15d200000048ba28d4d4f1c27f0000488b5c24104c8b4424084c8b0c24ff15ac0000004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff15710000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424284c89700848c7000f000000c3488d64241848b8e070d5f1c27f0000488b5d08ff23f400000000|@17679,1,@3527,@7906,@7904,@8002,@5380|163,0,@10633 212,0,@8347 240,0,@16626 389,0,@17669 8347:D5,256|483b65187305ff5558cd054989c549bee8cad0f0c27f00004d8b1e49bef8cad0f0c27f00004d8b2649be08cbd0f0c27f00004d8b0e49be18cbd0f0c27f00004d8b164d8d77d04c3b75107306ff5550ca043e4d89f749c746f8050000004d894e204d8956184d895e104d89660849bcd8c8d0f1c27f00004d8926488b42084c8b421041564c89eb49c7c10100000049baa8d1d4f1c27f0000ff15820000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c305000000ff2557000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010050000004c89700848c70017000000c3f400000000000000|@17668,1,@3522,@5380,@7900|16,0,@4782 29,0,@4783 42,0,@4784 55,0,@4785 111,0,@9493 144,0,@16614 8348:D9,688|483b65187306ff5558ca09035341514c8b284d89ee4983fd050f85cc000000ff70084c8b70104983fe01750c49bdc06ad1f1c27f0000eb324d8b364d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9e90000004983fe037572ff700841ff700841ff7018488b44241048c7c3010000004c8b4424204c8b4c24084c8b1424ff15d40100004989c64156488b44241848c7c3010000004c8b4424284c8b4c24104c8b542408ff15a60100004989c64c8b6c24204c8b24244d896500488d6424304d89750848c7c001000000c3ff7008ff701041ff700841ff7018488b442418488b5c24104c8b4424284c8b4c24084c8b1424ff15510100004989c64156488b442420488b5c24184c8b4424304c8b4c24104c8b542408ff15250100004989c64c8b6c24284c8b24244d896500488d6424384d89750848c7c001000000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15b50000004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff157c0000004989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f80400000049c7442418030000004c8b2c244d896c2410488d6424084d8974240849c704240f000000415d49bec06ad1f1c27f00004d8965004d89750848c7c0010000004883c408c3f4|@17677,1,@3525,@7906,@6504,@8346,@8349,@8346,@8349|46,0,@10633 659,0,@10633 8349:D8,608|483b65187306ff5558ca0907504150415141524c8b6c24184d8b75084983fe010f85430100004c8b6c24104d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff154c0200004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c70617000000415649bee8cad0f0c27f00004d8b2649bef8cad0f0c27f00004d8b2e49be08cbd0f0c27f00004d8b1649be18cbd0f0c27f00004d8b1e4d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d8966104d896e0849bdd8c8d0f1c27f00004d892e4156488b442428488b5c24184c8b44241049c7c10100000049baa8d1d4f1c27f0000ff15700100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd785fd1f1c27f00004c8968184c8970104c8b34244c897008488d64241848c700070000004883c410c341f6c6010f85d60000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d89ed4d896e0849bd88f374f1c27f00004d892e415648c7c001000000ff15cf00000048ba28d4d4f1c27f0000488b5c24104c8b4424084c8b0c24ff15a90000004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424204c8930ff156e0000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424304c89700848c7000f000000c3488d64242048b8e871d5f1c27f0000488b5d08ff23f400|@17678,1,@3526,@7906,@7904,@8002,@7900,@5380|142,0,@4782 155,0,@4783 168,0,@4784 181,0,@4785 237,0,@9493 274,0,@16614 320,0,@10540 415,0,@8350 443,0,@16626 592,0,@17674 8350:D5,256|483b65187305ff5558cd054989c549bee8cad0f0c27f00004d8b1e49bef8cad0f0c27f00004d8b2649be08cbd0f0c27f00004d8b0e49be18cbd0f0c27f00004d8b164d8d77d04c3b75107306ff5550ca043e4d89f749c746f8050000004d894e204d8956184d895e104d89660849bcd8c8d0f1c27f00004d8926488b42084c8b421041564c89eb49c7c10100000049baa8d1d4f1c27f0000ff15820000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c301000000ff2557000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010010000004c89700848c70017000000c3f400000000000000|@17673,1,@3524,@5380,@7900|16,0,@4782 29,0,@4783 42,0,@4784 55,0,@4785 111,0,@9493 144,0,@16614 8351:D5,880|483b65187306ff5558ca090753415041514152a8010f85d50000004c8b30ff700841ff3641ff76084c8b6c24184d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424304d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244848b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d47e84c3b45107306ff5550ca00604d89c749c740f8020000004d89680849c700110000004c8b6c2410eb0d488d64242048c7c001000000c341f6c501754e4d8b5d004d8b65084d8b53104d8b1a4983fb0575244d8b5a084d8b52104d89334c8b5c24084d891a4d89e5483b65187306ff5558ca0061ebc1488d64244848b8c86ed5f1c27f0000488b5d08ff234c8b7424184d8b2e4d89ec4983fd0375444d89f6498b46086a016a014c89c34c8b4424384989e1ff1512020000488d6424084158488b442420488b5c24404c8b4c24304c8b542428e862feffff4989c6e9b20000004d89f64d89e54983fc0575184d89f54d8b75084d89ed4d8b6d104c8b642430e9be0000004d89f64983fd0175694d89f64d8b6e084d8d77e84c3b75107306ff5550ca00214d89f749c746f8020000004d8946084d892e4d8d4fe84c3b4d107306ff5550ca00414d89cf49c741f8020000004c8b6c24304d8969084d8931488b442420488b5c24404c8b542428e8c9fdffff4989c6eb1c488b442420488b5c24404c8b4c24304c8b542428e8abfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c341f6c40175424d8b14244d8b5c24084d8b0a4d3bf175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89dc483b65187306ff5558ca0070ebb849c7c6010000004983fe017515488d64244848b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15730000004989c0eb324d8d47d84c3b45107306ff5550ca00604d89c749c740f80400000049c74018010000004d8968104d89700849c70017000000488b442420488b5c24404c8b4c24304c8b542428e89bfcffff4989c6e9ebfefffff40000|@17682,1,@3530,@5380,@8348|142,0,@16320 323,0,@17657 740,0,@10926 8352:D5,1168|483b65187306ff5558ca09035341504151a8010f85900300004c8b30ff70084d8b364d8b2e4d89ec4983fd030f85a601000041ff76084c8b742410498b561048c7c003000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424204d8966184d896e1049c746080100000049c7060300000041564983fd017d15488d64243048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730848c703110000006a016a01488b4424184c8b4424284989e1ff15ae030000ff3424488b5c24104d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b6c24184d892e4156488b4424304c8b4424404c8b4c2438e8b6feffff4989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc06ad1f1c27f00004d8965184d8975104c8b7424084d89750849c745000b0000004c8b24244d89e64983fc017509488d6424504c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c448c34d89e54983fc0575124d8b66084d8b6e104c8b742410e9c60100004983fd010f859501000041ff76084c8b742410498b561048c7c003000000ff124989c54d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b7424204c89f34d897424184d896c241049c74424080100000049c70424030000004983fd017d15488d64242848b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca08304d89f749c746f8020000004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca08504d89ef49c745f8020000004d89750849c74500110000004d8d77e84c3b75107306ff5550ca08304d89f749c746f80200000049c74608010000004d892641564d8d77e84c3b75107306ff5550ca08204d89f749c746f8020000004d896e084c8b6c24084d892e4d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004c8b6c24204d8968084d8930488b4424104c8b4c2418e8befcffff4989c54c8b24244d89e64983fc017509488d6424304c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c428c358488b5c24104c8b4424084159488d642410e957fcffff488d64241848b8a06ad1f1c27f0000c341f6c60175404d8b164d8b5e084d8b0a4d3be175204d8d77f04c3b75107306ff5550ca00244d89f749c746f8010000004d8916eb184d89de483b65187306ff5558ca0070ebba49c7c6010000004983fe017515488d64242048b80895d1f1c27f0000488b5d08ff234d8b364d8b76084d8b264983fc0d75184c89eb4c89f049c7c001000000ff15640000004889c3eb32498d5fd8483b5d107306ff5550ca00604989df48c743f80400000048c74318010000004c896b104c89730848c70317000000584c8b4424084159488d642410e973fbfffff40000|@17681,1,@3529,@5380,@8348|145,0,@16320 362,0,@10633 610,0,@16320 944,0,@10632 1043,0,@10926 8353:D4,192|483b65187305ff5558cd0953ff7008ff70104889c3488b0424ff15b90000004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704240700000049c7c6010000004c8b2c2441f6c50175364d8b55084d89f34983c3027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234d89d54d89de483b65187306ff5558ca0070ebc44c8b6c24104d8965004c8b6424084d8965084c8b24244d896510488d6424184d89751848c7c001000000c3f40000|@17683,1,@3531,@8354|112,0,@9475 8354:D6,344|483b65187305ff5558cd0950534c8b7424084d89f54983fe01750d488d64241048c7c001000000c34d89ee41f6c5010f850c0100004d89f641ff36488b0424488b5c2408ff15360100004989c44d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b1c244d89de4d895d084d8965004155498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004d89f64c8933488b442418ff15cb000000488b5c2410e849ffffff4989c64c8b6c24084983fd01754c498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c8b2c244c892b488d6424084883fb017509488d6424184c89f0c3488d6424184c89f0ff255f000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c418c3488d64241048b8504ad1f1c27f0000488b5d08ff23f400|@17684,1,@3532,@8356,@8357,@8355|328,0,@10398 8355:D3,1320|483b65187305ff5558cd094c8b2b4d8b65004d89e64983fc07750d4d8b75084c8b6308e9460400004d89f44983fe0375154d8b75084d8b6d184c8b63084d8b5e10e9990100004d89e64983fc090f859a0000004d8b75084d8b55104d8b6d184c8b5b084d8d67e04c3b65107306ff5550ca016c4d89e749c74424f8030000004d896c24104d8954240849c70424050000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d89650041554c89f3e842ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fe010f85910000004d8b75084d8b6d104c8b5b084d8d67e84c3b65107306ff5550ca01684d89e749c74424f8020000004d896c240849c70424010000004d8d6fe84c3b6d107306ff5550ca01584d89ef49c745f8020000004d895d084d89650041554c89f3e8a7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34c8b6b084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4060d1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c34983fb01750949c7c301000000eb3441f6c3010f85d60000004d8b0b4d89ca493bc1750949c7c303000000eb1641f6c3010f85a8000000493bc27d7549c7c3010000004983fb0375664d8d6fe84c3b6d107306ff5550ca01504d89ef49c745f8020000004d89650849bc4060d1f1c27f00004d89650041554c89f3e8a1fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3eb4e41f6c30175184d8b53084d89d3483b65187306ff5558ca0178e931ffffff48b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2341f6c50175154d8b75004d8b5d084d8b56084d8b5210e9a700000049c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff234d8b2e4d8b7500498b5d084d8d6fe84c3b6d107306ff5550ca09504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e88ffcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c34983fa01750949c7c201000000eb3041f6c2010f85a50000004d8b024d89c1493bc0750949c7c203000000eb1241f6c201757b493bc17d4849c7c2010000004983fa0375274d8d6ff04c3b6d107306ff5550ca01504d89ef49c745f8010000004d8975004d89eee9f4feffff4d89dd483b65187306ff5558ca0130e9befeffff41f6c20175184d8b4a084d89ca483b65187306ff5558ca017ce962ffffff48b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2341f6c60175414d8b1e4d8b6e084d8b5308493bc275204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0150ebb949c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff234d8b364d8b2e4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc4060d1f1c27f00004d8926498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@17686,1,@3535|429,0,@10548 585,0,@10548 688,0,@10395 704,0,@10398 720,0,@10398 776,0,@10926 1088,0,@10395 1104,0,@10398 1120,0,@10398 1220,0,@10926 1273,0,@10548 8356:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3533| 8357:D3,344|483b65187305ff5558cd094883f801750848c7c001000000c34883fb017501c3a8010f851e0100004c8b304d89f5f6c3010f85ff0000004c8b1b4d89dc4d3bf37536a8017522488b4008f6c3017509488b5b08e9a8ffffff48b8e049d1f1c27f0000488b5d08ff2348b8e049d1f1c27f0000488b5d08ff23a8010f85a60000004d89eef6c3010f858a0000004d3bec7d67a80175534156a8017538488b4008e85cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23f6c3017509488b5b08e9fafeffff48b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23f400|@17685,1,@3534|90,0,@10395 106,0,@10395 218,0,@10395 234,0,@10398 264,0,@10395 280,0,@10398 296,0,@10398 312,0,@10398 328,0,@10398 8358:D16,2296|488dbc2450ffffff483b7d187306ff5560ca090753415041514152ff30ff7008488b4010488b5c2428ff15410900004989c641566a016a016a016a014c8b6c24504d89ee4983fd017505e9eb0100004d89f64c8b6c24204d3bf5750949c7c603000000eb4d41f6c601754041f6c50175314d8b164d8b66084d8b4d004d8b5d084d3bd175144d89dd4d89e6483b65187306ff5558ca0060ebbe49c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe030f847e0100004c8b6c24284d8b65004d89e64983fc09755c488b542448498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c8970084c8b7424204c8930ff124989c64d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418e9eb0200004d89ed4d89f44983fe0575104d89ed4d8b750841566a01e91c0600004d89ed4d89e64983fc0375104d89ed4d8b750841566a01e9630400004d89ed4983fe0175174d89ed4d8b75084d89ed41ff751041566a01e9980200004d89ed4d89ee41ff75084d89f64d8b66084d89e541f6c401756b4d8b6424084983fc01750949c7c403000000eb0749c7c4010000004983fc03754a488d6424084d89ee498b066a016a016a016a01488b5c24704c8b4424684c8b4c24604989e2e819feffff415b415c415d415e4c891c244c896424084c896c24104c89742418e90e0200004c8b7424484983c60241567115488d64246848b8d0c6d0f1c27f0000488b5d08ff2349c7c6010000004c8b6c2408e9b6000000488b542448498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c8970084c8b7424504c8930ff124989c64d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418ff3424488b5c2410ff742418ff7424284883fb0175074c8b742448eb0e488b442448ff15af0600004989c64c8b6c24504c8b6424104d8965004d8975084c8b7424084d8975104c8b34244d897518488d64241848c7c0010000004883c458c341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156488b1c244883eb027115488d64247048b8d0c6d0f1c27f0000488b5d08ff2348c7c001000000ff15060600004989c06a016a016a016a01ff742420ff742438ffb42488000000488b8424a0000000488b5c24404c8d4c24184c8b942498000000ff15c4050000415c415a415d415e488d6424184d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8973184d896b104d8953084d89234d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004c8b5424404d895424104d895c240849c70424010000004c89242448c7442408010000004c896c24104c89742418e977fefffff6442408010f854a0100004c8b6c24084d8b75004d89ed41ff7508498b0641ff760841ff761041ff7618488b9c2488000000ff15fe0400004883f801750f488d6424184c8b642408e9ef000000488b5c2458ff15d60400004889c36a016a016a016a01488b4424284c8b8424a00000004c8b8c24980000004989e2e866fbffff415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d8934244d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b7424104d8975104c8b34244d897508488d64241849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9abfeffffff3424488b542468498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424604c8970084c8b7424404c8930ff124889c3488b04244c8b4424184c8d4c2420ff1585030000488d642420e950fefffff6442408010f853a0100004c8b6c24084d8b75004d89ed41ff7508498b0641ff761041ff7618488b5c2478ff15420300004883f801750f488d6424104c8b642408e9e6000000488b5c2448ff151a0300004889c36a016a016a016a01488b4424284c8b8424900000004c8b8c24880000004989e2e8c2f9ffff415e415d415b415a4d8d67d84c3b65107306ff5550ca006c4d89e749c74424f8040000004d895424184d895c24104d896c24084d8934244d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b34244d897508488d64241049c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9bbfeffffff3424488b542460498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c8970084c8b7424384c8930ff124889c3488b042449c7c0010000004c8d4c2418ff15d0010000488d642418e9b3fcfffff6442408010f852d0100004c8b6c24084d8b75004d89ed41ff750841ff36498b460841ff7610488b5c2478ff158d0100004883f801750f488d6424104c8b642408e9d90000004d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004c8b2c244d896e10488d6424084c8b2c244d896e08488d64240849c706050000004156ff742468488b5c2448ff15240100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b6c24684c8968084c8930488b1424ff124989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24084d896c24084d893424415d4c8924244c896c2408483b65187303ff5558e9c8feffffff3424488b542460498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c8970084c8b7424384c8930ff124889c3488b042449c7c0010000004c8d4c2418ff1528000000488d642418e923fbfffff40000000000|@17687,1,@3536,@8360,@8361,@8359,@8360,@8361,@8359,@8360,@8361,@8359,@8362,@8365,@8366,@8359|539,0,@9475 778,0,@9475 831,0,@9475 8359:D3,352|483b65187305ff5558cd094883f8017505e93e0100004883fb010f8434010000a8010f851c0100004c8b204d89e6f6c3010f85fd0000004c8b1b4d89dd4d3be30f8585000000a80175714156a8017556488b4008f6c3017538488b5b08e89effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e049d1f1c27f0000488b5d08ff23488d64240848b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23a8017555f6c30175404d3bf57d1da8017509488b4008e91affffff48b8e049d1f1c27f0000488b5d08ff23f6c3017509488b5b08e9fcfeffff48b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348c7c001000000c3f4000000|@17696,1,@3544|152,0,@10395 173,0,@10395 189,0,@10398 232,0,@10395 262,0,@10395 278,0,@10398 294,0,@10398 310,0,@10398 326,0,@10398 8360:D5,888|483b65187306ff5558ca090350534150415149c7c6010000004c8b6c241841f6c50175364d8b5d084d89f44983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc46a016a014c3b742418751c49beb05fd1f1c27f00004d8b2e4c892c244d8b76084c89742408eb194c8b7424204d8b6e104d89f64d8b76184c892c244c897424084c8b3424ff7424084c8b6c24284d8b6d104c8b64243041f6c40175194d8b14244d8b5c24084d8b52084d8b52104d89e9e92502000049c7c5030000004983fd037537488d642418415d4c8b7424084d8b264d8965004d8b66084d8965084d8b66104d8965104d8b76184d89751848c7c0010000004883c418c3ff7424304156f644240801753c4c8b6c24084d8b75004d89ed41ff75084d8b7608498b5e10488b442408ff15550200004989c4415d4c8924244c896c2408483b65187303ff5558ebbd415c4c8b6c24384883c408415e4883c41041f6c50175424d8b55004d8b5d084d8b52084d8b52184983ea014d03d67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d64d89dd483b65187306ff5558ca0070ebb84d8d5fd84c3b5d107306ff5550ca00504d89df49c743f8040000004c8b6c24184d896b184c8b6c24084d896b104c8b6c24104d896b0849c70303000000498d47d8483b45107306ff5550ca00584989c748c740f8040000004c8970184c89601048c74008010000004c89184983fe037e0c49c7c5010000004d89e2eb22415d4d895d0049c74508010000004d8965104d89751848c7c0010000004883c418c341f6c20175364d8b42084d89e94983c1027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89c24d89cd483b65187306ff5558ca017cebc44983ed014d6bed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983ed017115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d3bf57c0949c7c503000000eb0749c7c5010000004983fd030f8549ffffff5b4883c418ff259c0000004d3bd1750949c7c203000000eb4c41f6c201753f41f6c1017530498b324d8b4208498b11498b7908483bf275144989f94d89c2483b65187306ff5558ca007eebbf49c7c201000000eb0749c7c201000000eb0749c7c2010000004983fa0375144d89dc483b65187306ff5558ca0070e948fdffff49c7c501000000e962fdfffff4000000|@17688,1,@3537,@8353,@8361|56,0,@9475 103,0,@10542 403,0,@9475 622,0,@9475 673,0,@9475 700,0,@9475 8361:D3,504|483b65187305ff5558cd094883f80175044889d8c34883fb017501c3a8010f85bf0100004c8b304d89f4f6c3010f85a00100004c8b2b4d89eb4d3bf50f8585000000a80175714154a8017556488b4008f6c3017538488b5b08e8a2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e049d1f1c27f0000488b5d08ff23488d64240848b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23a8010f85f40000004d89e5f6c3010f85d80000004d89de4d3be37d67a80175534155a8017538488b4008e80affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23f6c30175544156f6c3017538488b5b08e8a1feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d64240848b8e049d1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff2348b8504ad1f1c27f0000488b5d08ff23f400000000|@17689,1,@3538|148,0,@10395 169,0,@10395 185,0,@10398 300,0,@10395 316,0,@10398 405,0,@10395 421,0,@10398 437,0,@10398 453,0,@10398 469,0,@10398 485,0,@10398 8362:D5,1200|483b65187306ff5558ca090750534150415141524c8b7424104983fe017502eb164c8b7424204983fe01740b6a016a016a01e981000000ff742408488b542408498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c8970084c8b7424284c8930ff124989c64d8b2e4c8b1c244d89dc4d892b4d8b6e084d89e44d89e34d896c24084d8b66104d89db4d89dd4d8963104d8b76184d89ed4d897518488d64241848c7c0010000004883c418c218004c8b6c24584c8b7424104d3bf5751b488d642408415e4883c40841564c8b7424404c8b2c24e90a0200004c8b7424284983fe01750949c7c601000000eb3f41f6c6010f85d70000004d8b164d89d44c8b5c24104d89dd4d3bda750949c7c603000000eb1941f6c6010f859c0000004d89ed4d3bec7d6149c7c6010000004983fe03750f4c8b7424504c8b6c2410e9a20000004c8b6c24104983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6424084c8b1c244c891c244c896424084c896c2410483b65187303ff5558e929ffffff41f6c60175184d8b6e084d89ee483b65187306ff5558ca0040e93affffff488d64244048b8e049d1f1c27f0000488b5d08ff23488d64244048b8504ad1f1c27f0000488b5d08ff23488d64244048b8504ad1f1c27f0000488b5d08ff2341f6c6010f85e1000000498b064d8b66084983fd010f859b000000488b5c2438ff15be0200004989c34c3b1c247e424c8b6c24104d89ec4983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89e44c891c244c896424084c896c2410483b65187303ff5558e95bfeffff4c8b6c24104983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b6424084c8b1c244c891c244c896424084c896c2410483b65187303ff5558e916feffff4d89eb4983eb027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e915ffffff488d64244048b8c85dd1f1c27f0000488b5d08ff2341f6c6010f859e0100004d8b1e4d8b66084983fd010f85580100004d89de4156498d5fe8483b5d107303ff55504989df48c743f80200000048c74308010000004c8b7424084c8933488b442420ff15890100004989c64c8b6c24504c8b6424484c8b5c24404d8d47c04c3b45107306ff5550ca00784d89c749c740f8070000004d8958304d8960284d8968204c8b6c24104d8968184d89701049be2875d5f1c27f00004d89700849bed81c75f1c27f00004d89306a016a016a016a0148ba8075d5f1c27f0000488b442420488b5c24504c8b4c24484989e2ff12415b415a415c415e488d6424084d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8975184d8965104d8955084d895d004c8b5424384d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004c8b0c244d894b18488d6424104d8953104d896b0849c70309000000415d488d6424184d895d0049c74508010000004d8965104d89751848c7c001000000c218004d89eb4983eb027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060e958feffff488d64243048b8c85dd1f1c27f0000488b5d08ff23f4000000000000|@17693,1,@3540,@8357,@8364|348,0,@9475 436,0,@10395 457,0,@10398 478,0,@10398 560,0,@9475 623,0,@9475 690,0,@9475 734,0,@10528 903,0,@17690 917,0,@8363 938,0,@17692 1135,0,@9475 1179,0,@10528 8363:D3,128|483b65187305ff5558cd054989d44989c66a016a016a016a01498b542408498b06498b5e084d8b4424104d8b5424184d8b7424204d8b6c24284d8b6424304156415541544c8d4c2418ff12415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400|@17691,1,@3539| 8364:D4,568|483b65187305ff5558cd0953ff70084c8b34244d8b2e4983fd0775154d89f64d8b7608488d64240841566a01e9b7010000488b4010488b5c2408ff15100200004989c64983fe01750949c7c503000000eb0749c7c5010000004983fd03741f488d64241041f6c6017504498b06c348b8504ad1f1c27f0000488b5d08ff234c8b34244d8b2e4d89ec4983fd05751c4d89f64d8b7608488d64240848c7c0010000004883c408e9f00000004d89f64d89e54983fc0375194d89f64d8b7608488d64240848c7c0010000004883c408eb7d4d89f64983fd0175194d89f64d8b7608488d64240848c7c0010000004883c408eb0d488d64241048c7c001000000c341f6c60175314d8b66084989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d0c6d0f1c27f0000488b5d08ff23c341f6c60175314d8b66084989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d0c6d0f1c27f0000488b5d08ff23c341f6c60175314d8b66084989c54983c502711048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89e8483b65187306ff5558ca0140ebc94883c002711048b8d0c6d0f1c27f0000488b5d08ff23c3f64424080175404c8b742408498b064d89f641ff7608488b5c2418e8f8fdffff4989c44c3b6424087e02eb054c8b642408415d4c8924244c896c2408483b65187303ff5558ebb9584883c410c3f40000|@17694,1,@3541,@8359|112,0,@10398 275,0,@9475 317,0,@9475 353,0,@9475 395,0,@9475 431,0,@9475 473,0,@9475 8365:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf37e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@17695,1,@3542|53,0,@9475 8366:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3543| 8367:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf37e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@17695,1,@3545|53,0,@9475 8368:D3,376|483b65187305ff5558cd014c8b70084d8b2e4d89ec4983fd03750d4d8b760841566a01e9cc0000004d89e54983fc01750a4d8b760841566a01eb664983fd07750a4d8b760841566a01eb0848c7c001000000c3f64424080175414c8b742408498b064d89f641ff76084c8b7424084983fe03750949c7c403000000eb08e87effffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb8584883c408c3f64424080175464c8b6c24084d8b75004d89ed41ff7508498b46104c8b7424084983fe03750949c7c403000000eb08e82bffffff4989c4415d4c8924244c896c2408483b65187303ff5558ebb3584883c408c3f64424080175724c8b7424084d8b2e4d89f641ff76084d8b7508498b45104c8b6c24084983fd03750949c7c403000000eb314983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe03740949c7c403000000eb08e8acfeffff4989c4415d4c8924244c896c2408483b65187303ff5558eb87584883c408c3f400000000|@17697,1,@3546| 8369:D26,3648|483b65187306ff5558ca090750534150415141524c8b7424204d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e9f2000000909090e9f4000000909090e9b5020000909090e9b4020000909090e9b3020000909090e9d8020000909090e9d7020000909090e9d6020000909090e9d5020000909090e9d4020000909090e9d3020000909090e9d2020000909090e9d1020000909090e9d3020000909090e96c040000909090e992040000909090e9cf040000909090e964060000909090e957080000909090e956080000909090e955080000909090e954080000909090e979080000909090e978080000909090e97a080000909090e9b1090000909090e9b0090000909090e9c8090000909090e9c7090000909090e9f0090000909090488d642418eb05488d642418e9ce0100004d89f64d8b76084d8b2e4d8b65004983fc1d0f85800100004d8b6d084d8b650841ff34244d8b6d10498b5d0041ff760841ff76204c8b7424184d8b4618488b442410ff158c0d0000ff157e0d00004989c64d8d47d04c3b45107306ff5550ca00404d89c749c740f8050000004c8b6c24184d8968204c8b2c244d896818488d6424084c8b6c24204d89ea4d8968104c8b2c244d896808488d64240849bd703275f1c27f00004d89284c8b2c244d8b65084983fc017555ff7424384d89d14c89c34c89e84c8b442428ff15f60c00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c2080041f6c4017556498b5c2408ff74243841564c89e84c8b4c2430ff15920c00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c20800488d6424204c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d6424184c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d642418eb05488d642418eb324d89f6498b46104d89f64d8b4e18488b5c24184c8b442410415a4c8b6c24284c896c24284883c420e9c8fcffff488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9b10500004d89f64d8b76084d8b6e0841ff75004d8b7610498b1e4c8b7424084d8b4618488b0424ff154c0b0000ff153e0b00004989c54d8d47d84c3b45107306ff5550ca00204d89c749c740f8040000004c8b7424084d8970184c8b7424104d8970104c8b6424184d89e64d89600849bc003375f1c27f00004d89204c8b24244d8b5c24084983fb017555ff7424384d89f14c89c34c89e04c8b442428ff15c60a00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c2080041f6c3017558498b5b08ff74243841554d89f24c89e04c8b4c2430ff15600a00004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64241048c7c0010000004883c428c208006a016a016a014c89f0488b5c24384989e0ff15040a0000415d415c415e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b084c8b2c244d892b488d6424084c8b6c24304d895d004d8965084d89751048c7c0010000004883c428c208004d89f44d8b7424104d89e44d89e541ff7424184d89ed41ff752041ff364c8b742418498b064c8b3424e96b0600004d89f54d89ee41ff75084d89f6498b46104d89f64d8b4e186a016a016a0154488b5c24404c8b4424384c8b542428e88bfaffff415a415c415e415d488d642428e9a90500004d89f44d8b7424084d89e44d89e541ff7424104d89ed41ff7518498b1e49bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca08404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca08304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107305ff5550cd084d89f749c746f80200000049c74608010000004c8b2c244d892e498d47d0483b45107306ff5550ca08404989c748c740f80500000049bd4059d1f1c27f00004c89682049bd98b3d1f1c27f00004c89681849bde0b3d1f1c27f00004c8968104c89700848c7000b00000048bad88ed1f1c27f0000ff152a0800004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d642408ff7424404156488b442438488b5c24184c8b4424304c8b4c24104c8b542420ff15d10700004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64242048c7c0010000004883c420c208004d89f54d8b75084d89ed4d89ec41ff75104d89e44d89e541ff7424184d89ed41ff752041ff364c8b6c24204d89ee41ff75004d89f641ff760848ba90d6d4f1c27f0000488b44241048c7c303000000ff15370700004989c54d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b00000049c7c6010000004d8d6ff04c3b6d107306ff5550ca01404d89ef49c745f80100000041c645ff404d8975004d8d77d84c3b75107306ff5550ca01204d89f749c746f80400000049bcb05fd1f1c27f00004d89661849bc0077d5f1c27f00004d89661049bc6086d1f1c27f00004d8966084d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f80200000049c74008010000004d893048bac810d5f1c27f0000488b1c24ff15410600004989c641564d8d4fd84c3b4d107303ff55504d89cf49c741f8040000004c8b7424284d8971184c8b7424584d8971104c8b7424104d89710849bed83375f1c27f00004d8931488b442420488b5c24304c8b442418ff15df0500004889c3ff742468488b4424084c8b4424584c8b4c24504c8b542418ff15b60500004989c64d8b2e4c8b24244d89e34d892c244d8b66084d89db4d89dd4d8963084d8b76104d89ed4d897510488d64244848c7c0010000004883c420c20800488d642418eb05488d642418eb05488d642418eb324d89f6498b46084d89f64d8b4e10488b5c24184c8b442410415a4c8b6c24284c896c24284883c420e99ff6ffff488d642418eb05488d642418e9440100004d89f6498b46084d89f64d8b4e184c8b6c24184d8b75084d8b1e4d89dc4983fb070f8580000000498b5e084d89ed4d89ee41ff75004d89f641ff76104c8b4424204c8b4c24184c8b542410ff15cd0400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24404c8b6424084d8965004d8975084c8b34244d897510488d64243048c7c0010000004883c408c208004d89e64983fe09757a4d89ed4d89ee41ff75004d89f64c89f341ff76104c8b4424204c8b542410ff15420400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706070000004c8b6c24404c8b6424084d8965004d8975084c8b34244d897510488d64241848c7c0010000004883c420c20800488d64242848b8f877d5f1c27f0000488b5d08ff23488d642418eb25488d642410585b4c8b4424104c8b7424084c897424104883c410ff25a8030000488d642418eb05488d6424184c8b6c2418415e4d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c408c20800488d642410585b4c8b4424104c8b7424084c897424104883c410ff25480300004d8b4d004d89cb4983f90b75154d8b5d104d89dd483b65187306ff5558ca0074ebde4983fb1d750e4d8b6d084d8b6d084d8b6d00eb0a49bd20b1d1f1c27f00004d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d892b4c8b6c24084d895d004d8965084d89751048c7c001000000c208004d8b264d89e54983fc07750d4d8b76106a016a01e9320200004983fd0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebc849c7c6010000004983fe03752348c7c3030000004c8b4424384c8b4c240849ba8078d5f1c27f0000ff155d020000eb004c8b34244d8b2e4d89ec4983fd0b75404d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc9488d64244048b86067d5f1c27f0000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb924983fd07750d4d8b760848c7c301000000eb15488d64244048b8b078d5f1c27f0000488b5d08ff2341f6c60175364d8b66084989dd4983c5027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15550100004989c6ff7424104156f644240801754f4c8b6c24084d8b75004d89ed41ff7508498b0641ff7618488b5c2420ff151b010000488b5c24104c8b0424ff15040100004989c4488d642408415d4c8924244c896c2408483b65187303ff5558ebaa415e4c8b6424084d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d896500498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8b6424104d89e14c8960184c8968104c89700848c70033000000488b5c24384c8b4424304d89c94c8b5424204c8b6c24504c896c24504883c448e908f2ffff4d8b2e4983fd0175214d8b6e084d8b76104c892c244c89742408488d642408415e4983f602e9cafdffff4d8b6e084d8b6d004d89ee483b65187306ff5558ca0140ebbdf400000000|@17713,1,@3553,@8377,@8378,@8379,@5316,@8380,@8380,@8384,@8385,@8386,@8388,@7985,@7919,@8390,@5268,@8380,@8393,@8395,@8398,@8374,@8393,@8395,@8399,@8374|465,0,@8370 992,0,@8371 1446,0,@10468 1619,0,@10496 1633,0,@11106 1647,0,@11108 1672,0,@10895 1887,0,@16638 2050,0,@10542 2064,0,@17701 2078,0,@10839 2133,0,@17067 2209,0,@8373 2723,0,@17707 2920,0,@11094 3077,0,@17710 3159,0,@17617 3233,0,@17711 3273,0,@9475 3320,0,@10101 8370:D3,104|483b65187305ff5558cd054989d54989c66a016a016a0148baa076d5f1c27f0000498b45084d8b45104d8b4d184d8b5520544c89f3ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4000000|@17699,1,@3547|25,0,@17698 8371:D3,104|483b65187305ff5558cd054989d66a016a016a0148baa076d5f1c27f00004d8b46084d8b4e104d8b5618544889c348b8e876d5f1c27f0000ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4|@17699,1,@3548|22,0,@17698 48,0,@17700 8372:D3,32|483b65187305ff5558cd0148b81077d5f1c27f0000488b5d08ff23f400000000|@17705,1,@3549|13,0,@17702 8373:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@17706,1,@3550,@5316| 8374:D12,808|483b65187306ff5558ca090153488b184c8b7010ff70186a016a014d8b2e4983fd070f85730200004d8b76084983fe11750949c7c603000000eb0749c7c6010000004983fe030f854f02000049bef8c4d0f0c27f0000498b06ff1521030000ff15130300004989c641564c8b7424184d8b2e4983fd0575544d89f6498b46084c8b304983fe0775394c8b68084d89ee41f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd0375124d8b36498b4608ff15b40200004989c6eb09ff15a10200004989c6eb034d89f64d8b2e4983fd0d0f85aa0100004d8b7608f604240175734c8b2c244d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc03754f4d89ed4d8b5d00488d6424084d8b234d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f80500000049c74520010000004d895d184d89651049c745080100000049c745000b000000e99c00000049bda854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00604d89df49c743f80100000041c643ff404d892b49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d8965104d895d0849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004c8b14244d89542408488d64240849c70424090000004d89234155498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b34244c89730849bec83775f1c27f00004c89336a016a01488b4424284989e0ff1523010000ff3424498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15ea0000004989c64c8b2c244c896c2420488d6424204c89742408eb77488d64242848b8d8c5d1f1c27f0000488b5d08ff23498d5fe8483b5d107306ff5550ca00014989df48c743f8020000004c89430849be383875f1c27f00004c89336a016a01488b4424204989e0ff1577000000ff3424488b442410ff15610000004989c64c8b2c244c896c2418488d6424184c89742408488b0424ff74240848bad88ed1f1c27f0000488b5c2420ff152600000058488d642420c3f4000000000000|@17821,1,@3577,@5268,@8401,@5234,@8402,@5234,@5062,@5062,@8403,@8400|78,0,@4687 347,0,@10468 544,0,@8375 653,0,@11253 700,0,@8376 775,0,@10895 8375:D3,72|483b65187305ff5558cd054c8b304c8b6a104d3bf57522498d47f0483b45107305ff5550cd044989c748c740f8010000004c8b72084c8930c348c7c001000000c3f4000000000000|@11252,1,@3551| 8376:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@17624,1,@3552| 8377:D3,168|483b65187306ff5558ca09014883fb01751048b83879d5f1c27f0000488b5d08ff23ff33488b5b084883f8017528488d642408498d47e8483b45107306ff5550ca08014989c748c740f802000000488958084c8900c34883e8027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@17717,1,@3554|20,0,@17714 99,0,@9475 8378:D3,272|483b65187305ff5558cd094c8b334d89f54983fe0b752e4c8b73184d8b76184d8b76084d8b2e4983fd057509498b5e10e9cbffffff48b86067d5f1c27f0000488b5d08ff234d89ee4983fd0d750c4c8b7308498b1ee9a6ffffff4983fe07750d4c8b6b0849c7c601000000eb1048b8e079d5f1c27f0000488b5d08ff234983fd01751048b8387ad5f1c27f0000488b5d08ff234d8b65004d8b5d084d8b14244c3bd07502eb2f4d8b224e8d2465010000004c8b084c89c94e8d0c4d010000004d3be17515498d7208488d7808483bc9f3a67402eb044c89f0c34d89f44983c402711048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160e974fffffff4000000000000|@17722,1,@3555|55,0,@17617 111,0,@17718 133,0,@17720 228,0,@9475 8379:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bee876d5f1c27f00004c8930c3f400000000|@10111,1,@3556|32,0,@9475 87,0,@17700 8380:D7,344|483b65187306ff5558ca0901504150ff334c8b7308ff73104d8b2e4d89ec4983fd03753d498b4608488b5c2418ff15550100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000e9940000004d89e54983fc01754b498b460841ff7610488b5c2420ff15030100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c70601000000eb404983fd07753a498b4608488b5c2418ff15ae0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000eb004156498d5fe8483b5d107303ff55504989df48c743f80200000048c74308010000004c8b7424204c8933488b442408ff15460000004989c64c8b6c24184c8b6424104d8965004c8b24244d896508488d6424284d89751048c7c001000000c3f4000000|@17724,1,@3557,@8361,@8382,@8383,@8381| 8381:D3,264|483b65187305ff5558cd0953a8010f85e10000004c8b30ff700841ff3641ff7608498b5e1041ff76186a016a016a0148bac07ad5f1c27f0000488b4424384989e0ff12415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e83affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@3560|49,0,@17723 8382:D3,176|483b65187305ff5558cd0953a8010f858c000000488b18ff70086a016a016a0148bac07ad5f1c27f0000488b4424204989e0ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442408488b5c2410e88fffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000|@10112,1,@3558|34,0,@17723 8383:D3,264|483b65187305ff5558cd0953a8010f85e10000004c8b30ff700841ff3641ff7608498b5e1041ff76186a016a016a0148bac07ad5f1c27f0000488b4424384989e0ff12415e415c415b4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b24244d896618488d6424084d896e104c8b2c244d896e08488d6424084c8b2c244d892e488d6424084156488b442408488b5c2410e83affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f40000000000|@10112,1,@3559|49,0,@17723 8384:D3,272|483b65187306ff5558ca09074989c65341504151415241f6c6010f85e1000000498b0641ff76084c8b7424204d8b7610498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c89731049be58a4d3f1c27f00004c89730848c703010000006a016a016a0148baa076d5f1c27f0000544c8b4424384c8b4c24304c8b542428ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442408488b5c24284c8b4424204c8b4c24184c8b542410e82effffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048c7c001000000c3f400|@10112,1,@3561|81,0,@14742 108,0,@17698 8385:D3,272|483b65187306ff5558ca09074989c54989de4150415141524983fd017523488d6424184983fe01750848c7c001000000c348b8282dd3f1c27f0000488b5d08ff23498b450041ff750841f6c6010f85a4000000498b1e41ff76086a016a016a0148baa076d5f1c27f0000544c8b4424404c8b4c24384c8b542430ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e4156488b442410488b5c24084c8b4424284c8b4c24204c8b542418e838ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64242048b8282dd3f1c27f0000488b5d08ff23f4000000|@13917,1,@3562|51,0,@13915 98,0,@17698 254,0,@13915 8386:D4,384|483b65187306ff5558ca09074d8b70084d8b264d89e54983fc05757c4d8b760841ff3041ff70104d87ca4989c04c89f0ff15620100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642408c34d89ee4983fe090f85c80000004d8b304d8b60104d8d5fe84c3b5d107306ff5550ca09524d89df49c743f80200000049c74308010000004d890b4d8d6fe04c3b6d107306ff5550ca09584d89ef49c745f80300000049895d104d895d08498945004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c7450005000000498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c348b8007bd5f1c27f0000488b5d08ff23f40000|@17728,1,@3563,@8387|367,0,@17725 8387:D7,1024|483b65187306ff5558ca090753415041514152a8010f8526010000ff30ff70084c8b6c24084d89ee41ff75084d89f64d8b7610f6442430010f85f900000041f6c6010f85e80000004c8b6c24304d8b6d004d8b264d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9ea000000488d642408eb05488d642408e9880000004d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883c418c3488b0424488b5c24284c8b4424204c8b4c24184c8b542410e81afeffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cf0100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15960100004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b6c24284c8968104c89700848c7000f0000004c8b742420498b5e6848bac07ed3f1c27f000049c7c001000000ff15340100004889c248c7c001000000ff124989c64d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64243848b80895d1f1c27f0000488b5d08ff234d8b364983fe030f859a000000498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930488b1c24ff158f0000004989c5488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c428c3488d642408e9cefdfffff400000000|@17729,1,@3564,@8361,@6432,@7906,@6504|727,0,@14470 828,0,@10926 8388:D5,3208|483b65187306ff5558ca0903534151ff3048ba90d6d4f1c27f00004c89c048c7c303000000ff157d0c00004989c6415648bae012d5f1c27f0000488b442408488b1c2449b8007cd5f1c27f0000ff154d0c00004989c64c8b2c2441ff7500ff75084c8d2d8a0000004155488965084d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff23498b16488b442430ff124989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408415e4c8975084883c428c3488b65084883c408415e4c8975084c8b284d89ee4981fdcb000000750d488d64242848c7c001000000c34d89f54983fe110f85de0400004c8b68104c8b7424184d8b65004e8d1c65010000004983fb01750f49bc107cd5f1c27f0000e9b30000004d89da4983c22c4c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0dfd0a00000f87690400004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba107cd5f1c27f000048c7c12d000000498d7208498d7c240848d1e9f3a44c89d9498d7508498d7c241e48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49b9387cd5f1c27f0000e9b60000004d89eb4983c3344c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15210a00000f87800300004d89d04e8d0c850400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca007c4d89cf49d1e84d8941f841c641ff414983ea024bc74491fc0000000049d1eb4d89194c89e9498d742408498d790848d1e9f3a44983c51049bc387cd5f1c27f000048c7c135000000498d74240849d1ed4b8d3c2948d1e9f3a4418061ffbf4d8b294e8d2c6d010000004c8b5c24204d8b234e8d1465010000004983fd0175084d89dce9ba0000004983fa0175084d89cce9ac0000004f8d4415ff4c89c04883c01e49c7c41100000048d1e849d1ec4833d249f7f4488d3c4501000000483b3d2e0900000f87800200004889fe4c8d24b50400000049f7dc4d03e74c3b651072054d3be77206ff5550ca806f4d89e748d1ee49897424f841c64424ff414883ef0249c744bcfc0000000049d1e84d8904244c89e9498d7108498d7c240848d1e9f3a44983c5104c89d14d89db498d730849d1ed4b8d3c2c48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba687cd5f1c27f0000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d570800000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05500700000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234d89ee4983fd0b0f85fe0200004c8b7424184c8b6c24204d8b65004e8d1c65010000004983fb01750f49bc807cd5f1c27f0000e9b60000004d89da4983c2564c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0de90500000f87880200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba807cd5f1c27f000048c7c157000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508498d7c243348d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba687cd5f1c27f0000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d0a0500000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05030400000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff234983fe037515488d64242848b8c07cd5f1c27f0000488b5d08ff234c8b7424184c8b6c24204d8b65004e8d1c65010000004983fb01750f49bc187dd5f1c27f0000e9b60000004d89da4983c2444c89d04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0c45010000004c3b0db80200000f87880200004d89c84e8d24850400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006e4d89e749d1e84d894424f841c64424ff414983e9024bc7448cfc0000000049d1ea4d89142449ba187dd5f1c27f000048c7c145000000498d7208498d7c240848d1e9f3a44c89d94d89ed498d7508498d7c242a48d1e9f3a441806424ffbf4d8b2c244e8d2c6d010000004983fd01750f49ba687cd5f1c27f0000e9c00000004d89eb4983c3084c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dd90100000f879c0100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89e9498d742408498d7a0848d1e9f3a44983c5104d89ec49d1ec43c60422204d89ec49d1ec43c6442201744d89ec49d1ec43c64422026f49d1ed43c6442a0320418062ffbf4d8b2a4e8d2c6d010000004c8b24244d8b1c244e8d1c5d010000004983fd01750d4c89e0488d642428e9c20000004983fb01750d488d6424284c89d0e9af0000004f8d4c1dff4c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05d20000000f87880000004c89c7488d04bd0400000048f7d84903c7483b45107205493bc77206ff5550ca007f4989c748d1ef488978f8c640ff414983e8024ac74480fc0000000049d1e94c89084c89e9498d7208488d780848d1e9f3a44983c5104c89d94d89e4498d742408488d64240849d1ed4a8d3c2848d1e9f3a48060ffbf4883c4204c89f2ff1248c7c001000000c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23f400000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17738,1,@3566,@7991,@7919|19,0,@16638 50,0,@17081 69,0,@17730 170,0,@10926 326,0,@17731 466,0,@17731 538,0,@17732 696,0,@17732 980,0,@17733 1445,0,@9487 1466,0,@9487 1487,0,@9487 1508,0,@9487 1529,0,@9487 1586,0,@17734 1726,0,@17734 1801,0,@17733 2266,0,@9487 2287,0,@9487 2308,0,@9487 2335,0,@17735 2379,0,@17737 2519,0,@17737 2594,0,@17733 3059,0,@9487 3080,0,@9487 3101,0,@9487 8389:D3,32|483b65187305ff5558cd0148b87813d5f1c27f0000488b5d08ff23f400000000|@17088,1,@3565|13,0,@17085 8390:D5,240|483b65187306ff5558ca09074d89ce4989c14d89d54d89c2f6c301757b488b3b4c8b63084c8b5c24084d8d47b84c3b45107306ff5550ca807e4d89c749c740f808000000498978384d8958304d8968284d8970204d8950184d89601049be807dd5f1c27f00004d89700849be805775f1c27f00004d89304c8b6c240848c7c30500000048b8687ed5f1c27f00004c896c2408ff25780000004d8d47d84c3b45107306ff5550ca00664d89c749c740f8040000004d8968184d8970104d89500849be685b75f1c27f00004d89304c8b6c240848c7c30500000048b84885d5f1c27f00004c896c2408ff251b000000f40000|@17812,1,@3569,@8393,@8393|94,0,@17739 108,0,@8391 133,0,@17744 193,0,@8392 218,0,@17797 8391:D3,960|483b65187305ff5558cd05524c8b70084d8b264d89e54983fc090f85be010000ff30ff70104c8b70104d89f5498d5fe0483b5d107306ff5550ca01604989df48c743f8030000004c89731049be58a4d3f1c27f00004c89730848c703010000004d8d77e04c3b75107306ff5550ca08204d89f749c746f8030000004d896e1049bd58a4d3f1c27f00004d896e0849c7060100000041566a016a016a0148baa076d5f1c27f00004c8b742430498b46384d89f64d8b46184d89f64d8b4e204d89f64d8b562854ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b742420498b56084d89f6498b5e104d89f64d8b46184d89f64d8b4e204d89f64d8b56284d89f64d8b76304156488b442410ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642410c34983fd070f85c00100004d8b66084d89e541f6c4010f859a0100004d8b64240841f6c401751d4d8b6424084983fc01750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f855a0100004d89ee498b1e4d8b760841ff36ff30ff70106a016a016a0148baa076d5f1c27f00004c8b742430498b46384d89f64d8b46184d89f64d8b4e204d89f64d8b562854ff12415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b742420498b56084d89f6498b5e104d89f64d8b46184d89f64d8b4e204d89f64d8b56284d89f64d8b76304156488b442420ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c3488d642408eb05488d64240848b8907dd5f1c27f0000488b5d08ff23488d64240848b8907dd5f1c27f0000488b5d08ff23f40000|@17743,1,@3567|77,0,@14742 129,0,@14742 158,0,@17698 588,0,@17698 922,0,@17740 943,0,@17740 8392:D3,104|483b65187305ff5558cd054989d66a016a016a0148baa076d5f1c27f00004d8b46084d8b4e104d8b5618544889c348b8e876d5f1c27f0000ff12415e415d415c498d47e0483b45107306ff5550ca00704989c748c740f8030000004c8960104c8968084c8930c3f4|@17796,1,@3568|22,0,@17698 48,0,@17700 8393:D4,544|483b65187306ff5558ca09074c89c250534d8b71084d8b264d89e54983fc010f859c000000488d642408498b460841ff761041ff3141ff71104c8b74242841514989d14d89d04d89f2488b5c2420ff15e40100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c208004d89ee4983fe090f853a01000041ff3141ff71104d8d77e84c3b75107306ff5550ca04064d89f749c746f80200000049c74608010000004d891641564d8b7110498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58a4d3f1c27f00004c89700848c70001000000ff124989c44c8b6c24304d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004c8b5c24204d895e184d8966104d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c70601000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642418c20800488d64241048b80887d5f1c27f0000488b5d08ff23f40000|@17813,1,@3570,@8394|290,0,@14742 527,0,@17809 8394:D4,616|483b65187306ff5558ca09075341514152a8010f8578010000ff30ff70084c8b6424084d8b34244d89e44d89e541ff7424104d89ed4d8b6d184d8b5d00488b5c24284c8b234d3bdc7502eb3d4d8b2b4e8d2c6d010000004d8b14244c89d14e8d1455010000004d3bea0f85cc000000498d7308498d7c2408483bc9f3a6740a488d642408e9b7000000498d47e8483b45107306ff5550ca00414989c748c740f80200000048c74008010000004c89004c89f3ff15c80100004989c64156488b542428488b442408ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424304d8966184d896e104c8b6c24204d896e084c8b2c244d892e488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c420c20800488d6424084c8b7424304156488b4424084c8b4c24204c8b542418e8a5feffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c208004d8d77e84c3b75107306ff5550ca00014d89f749c746f80200000049c74608010000004d89064156488b5424104c8b7424284d8b7610498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58a4d3f1c27f00004c89700848c70001000000ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184d896e104c8b6c24084d896e084c8b2c244d892e488d642420498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c20800f400|@17814,1,@3571,@8361|488,0,@14742 8395:D6,600|483b65187306ff5558ca09035053415041514c8b7424084d8b6e084d8b5d004d89dc4983fb030f85a700000041ff75084d89f54d89ee41ff75004d89f641ff76104c8b742430498b4610ff15300200004889c3ff742430488b4424184c8b4424204c8b4c24304c8b542428ff15070200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642430c34d89e54983fd090f85610100004d89f64d89f541ff364d89ed4d89ee41ff75104d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424104d8965004155488b5424284d89f64d8b7610498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58a4d3f1c27f00004c89700848c70001000000ff124989c641564c8b742438498b4610ff15f90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424384d8966184c8b24244d896610488d6424084d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c8970084c8b34244c8930488d642428c3488d64242048b84088d5f1c27f0000488b5d08ff23f400|@17818,1,@3572,@8396,@8397,@8396|334,0,@14742 584,0,@17815 8396:D4,264|483b65187305ff5558cd014c8b284d89ee4983fd090f85a0000000ff7008488b4010e8d9ffffff4989c641f6c601757e4d8b36498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000488b1c2449c7c001000000ff15ae0000004989c6488d6424084d8b2e4983fd0d75234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488d64240848c7c001000000c34983fe0375384c8b70084d8b2e4983fd0d75234d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c348c7c001000000c3f4000000000000|@17820,1,@3574,@5380| 8397:D4,624|483b65187306ff5558ca0907534151a8010f8581010000ff30ff70084c8b742408498b1e4d89f64d89f541ff76084d89ed4d89ee41ff75104d89f641ff7618f6442430010f85f8000000f6442410010f85e60000004c8b7424304d8b364c8b6c24104d8b6d004d3bf5750949c7c603000000eb0749c7c6010000004983fe030f85af000000498d47e8483b45107306ff5550ca08014989c748c740f80200000048c74008010000004c8900ff15d70100004989c64156488b542430488b442410ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424084d8966184d896e104c8b6c24184d896e084c8b2c244d892e488d642420498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c89304883c418c20800488d642418eb0c488d642418eb05488d6424184c8b7424284156488b442408488b5c24204c8b4c2418e89efeffff4989c6488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c208004d8d77e84c3b75107306ff5550ca00054d89f749c746f80200000049c74608010000004d89064156488b5424084d8b7210498d47e0483b45107306ff5550ca04404989c748c740f8030000004c89701049be58a4d3f1c27f00004c89700848c70001000000ff124989c54c8b6424204d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b6c24104d896e084c8b2c244d892e488d642418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c20800f400000000000000|@17819,1,@3573,@8361|490,0,@14742 8398:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3575| 8399:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3576| 8400:D3,200|483b65187305ff5558cd09a8010f85a50000004c8b30488b40084d8b1e4d8b6e084d8b6610493bdb7502eb2f4c8b334e8d3475010000004d8b134c89d14e8d1455010000004d3bf27569488d7308498d7b08483bc9f3a67402eb584d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e87cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3e948ffffff48c7c001000000c3f400000000000000|@11258,1,@3581| 8401:D3,208|483b65187305ff5558cd01a8010f85b00000004c8b30488b40084d8b2e4d8b76084d8b66084d89e34983e4094983fc01750949c7c403000000eb0749c7c4010000004983f4024d89de4983e6034983fe01750949c7c303000000eb0749c7c3010000004983f3024d8d77e04c3b75107306ff5550ca01384d89f749c746f8030000004d895e104d8966084d892e4156e86cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@10112,1,@3578| 8402:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3579| 8403:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3580| 8404:D53,10848|488dbc24c8feffff483b7d187306ff5560ca0d0152505341504c8b7424104d8b2e4c8d25080000004f8d64acfc41ffe4e9f3000000909090e919010000909090e924020000909090e91d040000909090e989040000909090e93d080000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e932080000909090e9ab080000909090e993000000909090e948090000909090e97d0a0000909090e9500c0000909090e973000000909090e9b90c0000909090e9b90e0000909090e9a40f0000909090e953000000909090e916100000909090e921110000909090e936110000909090e974150000909090e9be150000909090e923000000909090e93b160000909090e913000000909090e959160000909090e9030000009090904c8b7424084d8b7620415d488d64240849bcc06ad1f1c27f00004d8965004d89750848c7c0010000004883c410c34d89f6498b46084d89f641ff76106a016a01488b542430488b5c24204989e0e886feffffff3424ff7424104c8b4424304d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b14244c8953204c895b184c8963104c896b084c89336a016a01488b542450488b4424304989e0e8f9fdffff415d488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc06ad1f1c27f00004d8966184d896e104c8b6c24084d896e0849c7060b0000004c8b6c24284d8975004c8b34244d897508488d64244848c7c001000000c34d89f64d8b7608498b064c8b284983fd1d0f85b60000004c8b68084d8b650841ff34244d8b6d10498b5d0041ff760841ff76204c8b7424204d89f541ff364d89ed4d89ee41ff75084d89f641ff7628488b4424284c8b0424ff15392900004989c641566a016a01488b542460488b442438488b5c24504989e0e819fdffff488b1c24ff742408ff742430ff742440488b4424584c8b4424384c8b4c24304c8b542428ff15e72800004989c64c8b6c24504d8975004c8b34244d897508488d64246048c7c0010000004883c410c341ff76086a016a01488b542430488b5c24204989e0e8b0fcffffff34244c8b542410488b7c24284c8b374889ff4c8b6f084889ff4c8b67104889ff4c8b5f184889ff4c8b4f284889ff4c8b47304889ff488b7f38498d5fb8483b5d107306ff5550ca807f4989df48c743f80800000048897b384c8943304c894b284c8953204c895b184c8963104c896b084c89336a016a01488b542448488b4424284989e0e826fcffff4c8b3424ff742408498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15e22700004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b6424184d8966104d896e0849c7060f0000004c8b6c24384d8975004c8b34244d897508488d64244848c7c0010000004883c410c34d89f64d8b7608498b0641ff76084c8b7424104c89f341ff76206a016a01488b5424384989e0e86bfbffff4158488d6424084c8b742428498b5608488b442420488b5c240849c7c1010000004c8b542418ff124989c64c8b6c24104d8975004c8b34244d897508488d64243048c7c001000000c34d89f64d8b7608498b0641ff760841ff761041ff762041ff76286a016a01488b542448488b5c24384989e0e8f2faffffff3424ff7424106a016a014c8b742468498b561048b8c046d1f1c27f0000488b5c24404989e0ff12ff34244c8b7424604d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442440488b5c24284c8b4424204989e1ff1577260000ff3424ff74241048ba0826d5f1c27f0000488b442470488b5c24384c8b4424284c8b4c24304c8b542420ff153f2600004889c34883fb0175074c8b742408eb0e488b442408ff151c2600004989c641564c8b8424a00000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424c0000000488b8424980000004989e0e8aff9ffffff34246a016a014c8bb424d8000000498b561048b8c046d1f1c27f0000488b9c24b80000004989e0ff12ff34244c8bb424d00000004d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b8424b0000000488b5c24284c8b4424204989e1ff1514250000ff3424ff74241048ba0826d5f1c27f0000488b8424e8000000488b5c24384c8b4424284c8b4c24304c8b542420ff15d92400004889c34883fb0175074c8b742408eb0e488b442408ff15b62400004989c641564c8b8424100100004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b942430010000488b8424100100004989e0e861f8ffff415b488d6424084c8b6c24704d89ee4983fd0175074c8b6c2458eb334d8d6fe04c3b6d107306ff5550ca00484d89ef49c745f8030000004c8b6424584d8965104d89f64d89750849c745001f0000004c8b24244d89e64983fc01750d488da424c80000004d89dceb3d4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d89f64d89742408488d64240849c704241f0000004881c4c00000004d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e104c8b6c24084d896e0849c7060b0000004c8b6c24404d8975004c8b34244d897508488d64241048c7c0010000004883c450c34d89f6498b4610488b542418488b5c24084158488d642418e949f7ffff4d89f6498b46084c8b542408498b5a206a016a016a014c8b7424304d8b4e1041564c8d442408ff15d5220000415d415b415e4983fd0175054d89dceb2e4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c704241f000000415d4d8965004d89750848c7c0010000004883c418c34d89f54d8b75084d89ed41ff7518498b064c8b6c24104d89ee41ff75204d89f64d8b7628498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be809775f1c27f00004c89336a016a014989e0ff151b220000488d64240858ff1507220000ff15f92100004989c04c8b742428498b5620488b442420488b5c24084c8b4c2418ff124989c64c8b6c24104d8975004c8b34244d897508488d64243048c7c001000000c34d89f54d89ee41ff75084d89f641ff76104c8b742418498b56104d89f641ff762048c7c003000000ff124989c641566a016a01488b542448488b442428488b5c24384989e0e8d1f5ffffff34244c8b7424184d89f54983fe017d15488d64245848b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849c706050000004d8d47e84c3b45107306ff5550ca00404d89c749c740f8020000004d89700849c700110000004c8b742450498b5608488b442448488b5c242849c7c1030000004c8b542440ff124989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004c8b6424184d8966184d896e104c8b2c244d896e08488d64240849c706150000004c8b6c24304d8975004c8b7424184d89750848c7c0010000004883c450c34d89f64d8b76084d8b6e0841ff7500488b04244c8b680841f6c5010f85d10000004d8b6e10498b5d004d8b66184c8b7424104d8b2e4d89f64d89f341ff76084d89db4d89de41ff73204d89f641ff76284d8d77d04c3b75107306ff5550ca09304d89f749c746f8050000004d8966204d896e184c8b2c244d89e84d896e104989c54c89e84d896e0849bdc09875f1c27f00004d892e4156ff15d91f000048c7c001000000ff15c41f000048ba28d4d4f1c27f0000488b5c24184c8b4424084c8b0c24ff159e1f00004989c6488d6424104c8b6c24184d8975004c8b34244d897508488d64242848c7c0010000004883c410c34983fd01755b4d8b76184c8b6424104d8b14244d89e4498b5c24084d89e44d89e541ff7424204d89ed4d8b4528415649c7c101000000ff15301f00004989c64c8b6c24104d8975004c8b34244d897508488d64242048c7c0010000004883c410c34d8b6e10498b5d0041ff76184c8b6c24184d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75204d89f641ff76284c8b0424ff15c61e00004989c1ff742420488b442430488b5c24184c8b4424084c8b542420ff159d1e00004989c6488d6424084c8b6c24284d8975004c8b34244d897508488d64243848c7c0010000004883c410c34d89f54d8b75104d89ed498b5d18f6c301753d4c8b6b084983fd01750949c7c503000000eb0749c7c5010000004983fd03751d4c8b33498b4618488b542418488b5c24084158488d642418e9b3f2ffff4d8b264c8b5c24084d8b6b084d89db4d8b73104d89db41ff732049c7c3010000004989dae9ec1b00004d89f44d8b7424084d89e44d89e541ff7424104d89ed41ff751841ff364c8b6c24204d89ee41ff75004d89f64d89f541ff76084d89ed4d89ee41ff75204d89f641ff76284c8b6424204d8b34244983fe0b0f859c0100004d89e44d8b6c24084d89ee41f6c501751c4d8b6d084983fd01750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd030f85570100004d89e44d8b364d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89e44d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15fe1c00004989c64156488b0424ff15e71c00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d4fe04c3b4d107306ff5550ca00204d89cf49c741f8030000004c8b6424204d89e64d8961104d89690849c70105000000ff742410ff742420ff7424384156488b442450488b5c24704c8b4424604c8b542420ff15201c00004989c6488d6424084c8b6c24304d8975004c8b34244d897508488d64244048c7c0010000004883c410c3488d642458eb05488d64245848b8f889d5f1c27f0000488b5d08ff234d89f54d8b75084d89ed498b5d104d89ed4d8b65184d89ed498b45204d8b064c8b5c24084d8b334d89db41ff73204d8d4fd84c3b4d107306ff5550ca09714d89cf49c741f8040000004d8961184d89ed4d8969104d89710849be889975f1c27f00004d8931ff15671b00004989c64983fe01752c4c8b6c240849bec06ad1f1c27f00004d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d8b2e4d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d89f64d8b6e084d8b7500498b45084d8d4fd84c3b4d107306ff5550ca01404d89cf49c741f8040000004d8971184c8b6c24184d89ee4d8969104d89f64d8b6e104d89690849bde09975f1c27f00004d89296a016a014d89f6498b561848c7c3010000004c8b4424184989e2ff12415d415e6a016a0149c7c401000000e9431700004d89f6498b46084d89f641ff76106a016a01488b542430488b5c24204989e0e8e9eeffffff3424ff7424104c8b4424304d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b14244c8953204c895b184c8963104c896b084c89336a016a01488b542450488b4424304989e0e85ceeffff415d488d6424084d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda06ad1f1c27f00004d896e104c8b6c24084d896e0849c7060b0000004c8b6c24284d8975004c8b34244d897508488d64244848c7c001000000c34d89f6498b4608488b542418488b5c24084158488d642418e9ddedffff4d89f6498b46084d89f641ff76104c8b6c24104d89ee41ff75084d89f64c89f341ff76106a016a01488b5424404989e0e8a8edffffff3424ff7424106a016a014c8b6c24184d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd08a075f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54243048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bc48a075f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24184d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442440ff124989c641564c8b2c244d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15aa1700004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c7061700000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30300000049c7c001000000ff153c1700004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610030000004d89ed4d896e0849c7061700000041564c8b7424104d8b2e4983fd0d751c4c89f048c7c30500000049c7c001000000ff15cf1600004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510050000004d89f64d89750849c74500170000004c8b6424604d8b34244d89e44d8b4c24084d89e44d8b5c24104d89e44d8b4424184d89e44d8b5424204c3b35581600007502eb344d8b264e8d2465010000004983fc01753d49bcd8c8d0f1c27f0000498d7608498d7c240848c7c100000000483bc9f3a67402eb1a4983fb0175124983fa01750c49bec06ad1f1c27f0000eb64eb004d8d67d04c3b65107306ff5550ca006f4d89e749c74424f8050000004d894424204d894c24184d895424104d895c24084d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004883c408e9ec1000004d89f54d89ee41ff75084d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64d8b4e204c8b742420498b064d89f64d89f541ff76184d89ed4d89ee41ff75204d89f641ff76284c8b742418e96b0400004d89f6498b4608a80175354c8b70084983fe01750949c7c603000000eb0749c7c6010000004983fe037515488d64242048b8908bd5f1c27f0000488b5d08ff234c8b7424084d89f041ff7620488b5c2420ff15161400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e9700300004c8b7424084d8b7620415d488d64240849bcc06ad1f1c27f00004d8965004d89750848c7c0010000004883c410c34d89f54d89ee41ff75084d89f6498b46104d89f641ff76204c8b7424184c89f341ff76206a016a01488b5424404989e0e855e8ffffff3424ff7424106a016a014c8b742460498b561048b8c046d1f1c27f0000488b5c24404989e0ff12ff34244c8b7424584d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442440488b5c24284c8b4424204989e1ff1512130000ff3424ff74241048ba0826d5f1c27f0000488b442478488b5c24384c8b4424284c8b4c24304c8b542420ff15da1200004889c34883fb0175074c8b742408eb0e488b442408ff15b71200004989c641564c8b8424980000004d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424b8000000488b8424980000004989e0e812e7ffff415c488d6424084c8b34244d89f54983fe01750a488d6424604d89e6eb364d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f0000004883c4584d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff156a1100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc06ad1f1c27f00004d8966184d896e104c8b2c244d896e08488d64240849c7060b000000415648c7c001000000ff159c1000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c706050000004c8b6c24284d8975004c8b7424104d89750848c7c0010000004883c448c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15f90f00004989c6eb004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c34d8b264d89e54983fc07750d4d8b76106a016a01e9d30b00004983fd0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0142ebc849c7c6010000004983fe03751e48c7c3030000004c8b44244049ba8078d5f1c27f0000ff15690f0000eb004c8b7424184d8b2e4d89ec4983fd0b75404d8b6e184d8b6d184d8b6d084d8b65004983fc0575154d8b6d104d89ee483b65187306ff5558ca0040ebc9488d64245048b86067d5f1c27f0000488b5d08ff234d89e54983fc0d75194d8b6e084d8b6d004d89ee483b65187306ff5558ca0040eb924983fd07750d4d8b6e0849c7c601000000eb15488d64245048b8b078d5f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64245048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44983fe03750c49be985fd1f1c27f0000eb4f488b442428488b5c2418ff15660e00004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd985fd1f1c27f00004d896e0849c706170000004156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424084c89730849be08a175f1c27f00004c89336a016a01488b4424384989e0ff15dd0d0000488d64240858ff15c90d0000ff15bb0d00004989c641564c8b34244983fe010f85d6020000488d6424084c8b6c24184d8b75004e8d3475010000004983fe01750f49baf8d7d0f1c27f0000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd50c00000f87600200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d2c75010000004c8b6424304d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05f90b00000f87770100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c3b35f00b00007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15960b00004989c6415648c7c001000000ff157c0b00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c408e9dd060000488d64245848b8f8c7d0f1c27f0000488b5d08ff23488d64245848b8f8c7d0f1c27f0000488b5d08ff234c8b6c24204d8b75004e8d3475010000004983fe01750f49baf8d7d0f1c27f0000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1df40900000f87630200004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d2c75010000004c8b6424384d8b34244e8d1c75010000004983fd0175084d89e6e9b60000004983fb0175084d89d6e9a80000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b05180900000f877a0100004c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e9498d7208498d7e0848d1e9f3a44983c5104c89d94d89e4498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf4c3b35070900007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15ad0800004989c6415648c7c001000000ff15930800004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649c7c6010000004c8b6c2408eb2a488d64246048b8f8c7d0f1c27f0000488b5d08ff23488d64246048b8f8c7d0f1c27f0000488b5d08ff2341f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b6c24304d8b75004e8d3475010000004983fe01750f49baf8d7d0f1c27f0000e99e0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dd20600000f87910300004d89d94e8d148d0400000049f7da4d03d74c3b551072054d3bd77206ff5550ca00784d89d749d1e94d894af841c642ff414983eb024bc7449afc0000000049d1ec4d89224c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049d1ee43c6043223418062ffbf4d8b324e8d3475010000004c8b6c24484d8b65004e8d1c65010000004983fe0175084d89ece9ba0000004983fb0175084d89d4e9ac0000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05f60500000f87a80200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f1498d7208498d7c240848d1e9f3a44983c6104c89d94d89ed498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bec862d5f1c27f0000e9b40000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b151f0500000f87c40100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf4c3b35040500007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15aa0400004989c641564c8b7424104c89f34983fe017d18488da4248000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff156a0400004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4184c8b6c24284d8975004c8b34244d897508488d64240848c7c0010000004883c440c3488d64247048b8f8c7d0f1c27f0000488b5d08ff23488d64247048b8f8c7d0f1c27f0000488b5d08ff23488d64247048b8f8c7d0f1c27f0000488b5d08ff234d8b2e4983fd0175214d8b6e084d8b76104c892c244c89742408488d642408415e4983f602e929f4ffff4d8b6e084d8b6d004d89ee483b65187306ff5558ca0142ebbd41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff15e50200004989c4eb004c8b2c244d89ee4983fd01750a488d6424184d89e5eb374d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004883c4104d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706210000004c8b6c24384d8975004c8b34244d897508488d64240848c7c0010000004883c450c341f6c50175724d8b4d004d8b5d084983fb01752e4d8b294983fd0575104d8b69084d89e349c7c401000000eb60488d64243048b8108cd5f1c27f0000488b5d08ff234d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d8962084d890a4d89d44d89dd483b65187306ff5558ca0070eb88488d64243048b8688cd5f1c27f0000488b5d08ff2341f6c301753d4d8b034d8b53084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8961084d89014d89cc4d89d3483b65187306ff5558ca0078ebbd4c8924244c896c2408415d415b4983fd0175054d89dceb2e4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d896c240849c704241f000000415d4d8965004d89750848c7c0010000004883c418c341f6c20175364d8b42084d89d94983c1027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89c24d89cb483b65187306ff5558ca087cebc46a016a01415641554154415348b8c08cd5f1c27f00004c8d4424204c8b4c24504c8b542440ff15af000000415d415c4983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f0000004c8b6c24084d8975004c8b34244d897508488d64241048c7c0010000004883c418c3f4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17842,1,@3596,@8420,@6504,@8426,@7989,@9493,@8427,@7989,@9493,@8428,@7989,@9493,@8429,@8316,@5234,@8378,@5316,@6504,@8430,@8431,@8432,@8056,@8153,@8433,@9493,@5380,@5380,@5380,@8388,@8434,@5400,@5156,@7900,@8374,@8436,@7904,@8002,@8374,@8441,@8316,@5234,@8442,@8445,@8056,@8153,@8419,@8056,@8153,@7906,@7902,@8374|314,0,@10633 555,0,@10633 1316,0,@10368 1402,0,@17201 1638,0,@10368 1733,0,@17201 2429,0,@8405 2631,0,@16320 2988,0,@8406 3022,0,@16626 3952,0,@17824 4056,0,@8407 4089,0,@10633 4280,0,@8408 4556,0,@10632 4758,0,@8415 4846,0,@8416 5359,0,@9493 5406,0,@10633 5869,0,@17831 5978,0,@10633 6081,0,@10368 6167,0,@17201 6705,0,@10633 7033,0,@17710 7116,0,@17617 7190,0,@17711 7230,0,@9475 7272,0,@10541 7342,0,@10541 7398,0,@8417 7494,0,@9560 7919,0,@9493 7953,0,@17022 8155,0,@9487 8176,0,@9487 8215,0,@9560 8640,0,@9493 8674,0,@17022 8879,0,@9487 8900,0,@9487 8940,0,@9475 9001,0,@9560 9420,0,@17598 9643,0,@9493 9677,0,@17022 9731,0,@10101 9946,0,@9487 9967,0,@9487 9988,0,@9487 10346,0,@17834 10421,0,@17836 10620,0,@9475 10668,0,@17838 8405:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@17624,1,@3582| 8406:D5,144|483b65187305ff5558cd054989c5488b42084c8b42104c8b52184c8b722041564c89eb49c7c101000000ff15800000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2555000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000000000|@17823,1,@3583,@5380,@7900| 8407:D4,40|483b65187305ff5558cd054989c2488b42084c8b42104c8b4a1848c7c303000000ff2519000000f4|@17827,1,@3584,@5316| 8408:D4,96|483b65187305ff5558cd054989c66a016a01498b06498b5e084c8b4a084c8b52104c8b721841564c8d442408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@17828,1,@3585,@8409| 8409:D5,120|483b65187306ff5558ca09074989de504150498b5e206a016a01488b44242841524d89f24c8d442408ff1569000000488b1c24ff7424084883fb0175074c8b742420eb0e488b442420ff15410000004989c64c8b6c24184d8975004c8b34244d897508488d64240848c7c0010000004883c420c20800f400|@17829,1,@3586,@8411,@8410| 8410:D8,632|488dbc2450ffffff483b7d187306ff5560ca090753415041514152a8010f852b0200004c8b30ff700841ff3641ff76086a016a01488b54243048b8c046d1f1c27f0000488b5c24184989e0ff12ff34244c8b7424304d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442470488b5c24284c8b4424204989e1ff1528020000ff3424ff74241048ba0826d5f1c27f0000488b442450488b5c24384c8b4424284c8b4c24304c8b542420ff15f00100004889c34883fb0175074c8b742408eb0e488b442408ff15cd0100004989c641564c8b4424704d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424a8000000488b4424704989e0ff12415d488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060500000041566a016a014c8bb424b00000004156488b842488000000488b5c24284c8d4424084c8b8c24980000004c8b942490000000e83dfeffff488b1c24ff742408498d47e8483b45107305ff5550cd084989c748c740f80200000048c74008010000004c8b7424184c89304883fb0175054889c3eb09ff15920000004889c34883fb0175074c8b742420eb0e488b442420ff156f0000004989c64c8bac24a00000004d8975004c8b34244d897508488d64240848c7c0010000004881c4a8000000c20800488d642410415d49c74500010000004c8b34244d897508488d64240848c7c001000000c20800f4000000|@17830,1,@3588,@8413,@8414,@8412,@8056,@8153|59,0,@10368 145,0,@17201 8411:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3587| 8412:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3591| 8413:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3589| 8414:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3590| 8415:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3592| 8416:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3593|36,0,@9475 8417:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@17624,1,@3594| 8418:D3,32|483b65187305ff5558cd0148b8d08cd5f1c27f0000488b5d08ff23f400000000|@17827,1,@3595|13,0,@17839 8419:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3623| 8420:D7,784|483b65187306ff5558ca090750415041514152f6c3010f851a0200004c8b33ff730841ff36498b46186a016a01488b542428488b5c24204989e0ff12ff34246a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd70a675f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54247848c7c003000000ff124989c54c8b6424704d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bcb0a675f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b5c2478488b442438ff15e40100004989c54c8bb42480000000498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8b6c24604c8968184c8970104c8b34244c897008488d64240849be70a775f1c27f00004c89306a016a014c8bb424900000004c8bac24880000004c8ba424800000004c8b5c24784156415541544153488b5c24684c8d4424204c8b4c24784c8b542470e811feffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15290100004989c64c8b6c24684d8975004c8b34244d897508488d64240848c7c0010000004883c470c22000488d6424104c8b7424184983fe017d15488d64241048b83020d1f1c27f0000488b5d08ff23488b5c241848c7c0010000004c8b442408ff15be0000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff153e0000004989c6eb00415d49c74500010000004d89750848c7c0010000004883c408c22000f400000000|@17844,1,@3600,@6504,@8425,@8424,@8378|118,0,@8421 206,0,@8422 418,0,@8423 589,0,@10101 8421:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3597| 8422:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3598|36,0,@9475 8423:D3,40|483b65187305ff5558cd054c8b7220493bc6750d4c8b6a08488b42104c89eaff22488b5218ff22f4|@17843,1,@3599| 8424:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3602| 8425:D3,160|483b65187306ff5558ca0901505341504c8b7424104c89f04c3b742408750d488d64241848c7c001000000c3488b1424ff124989c64156488b4424184883c0027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104c8b442408e89affffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424184883c408c3f4000000000000|@10111,1,@3601|73,0,@9475 8426:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3603|32,0,@9475 87,0,@11193 8427:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3604|33,0,@9475 88,0,@11193 8428:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3605|33,0,@9475 88,0,@11193 8429:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@9893,1,@3606| 8430:D3,184|483b65187305ff5558cd01a8010f85960000004c8b28488b40084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e886ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3607| 8431:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3608| 8432:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3609| 8433:D3,136|483b65187306ff5558ca09014989c653415041f6c6017560498b0641ff76086a016a01488b542420488b5c24184989e0ff12ff3424488b442418488b5c24284c8b442420e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642430c3488d64241048c7c001000000c3f40000|@10112,1,@3610| 8434:D9,576|483b65187306ff5558ca09074989c65341504151415241f6c6010f85fe000000498b0641ff76086a016a01488b542430488b5c24284989e0ff12ff34244c8b7424604c8b6c24584c8b6424504c8b5c24484156415541544153488b442438488b5c24584c8b4424504c8b4c24484c8b542440e889ffffff4989c6415648b8687ed5f1c27f0000488b5c24304c8b442428ff15ea0100004989c641564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24104d892e498d5fe0483b5d107306ff5550ca00404989df48c743f80300000048c74310010000004c89730848c70329000000e992000000488b5c242848b84885d5f1c27f00004c8b0424ff15410100004c8b6c24384c8b6424304d8d77d84c3b75107306ff5550ca01304d89f749c746f8040000004d8966184d896e104c8b2c244d896e0849bdb0b075f1c27f00004d892e4156ff15ef00000048ba28d4d4f1c27f0000488b5c24484c8b4424084159488d6424084c8b7424184c897424384883c438ff25b800000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0840ebd849c7c601000000eb0749c7c6030000004983fe03750e4889d8ff15690000004889c3eb004c8b4424704c8b4c2430415a4c8b6c24604c8b64245848b8687ed5f1c27f00004c896424604c896c24684c8b7424484c897424584883c458ff251e000000f40000000000|@17846,1,@3612,@7902,@6504,@7904,@8002,@8374,@8374|126,0,@17744 293,0,@17797 366,0,@8435 387,0,@16626 532,0,@17744 8435:D5,144|483b65187305ff5558cd054c8b42084c8b52104c8b721841564889c348b84885d5f1c27f000049c7c101000000ff157d0000004989c64d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2552000000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c3f40000|@17845,1,@3611,@5380,@7900|30,0,@17797 8436:D11,696|483b65187306ff5558ca090750534150415141524c8b742420498b4618ff15e50200004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f850d0100004c8b7424184d8b2e4d89f64d8b760849c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b34244d89f34d8974240849be98b475f1c27f00004d8934244983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e4156488b442418ff15d20100004989c24c8b742440ff7424104156488b44244048bb985fd1f1c27f00004c8b4424104c8b4c2430ff159d0100004989c641564c8b7424104d8b3648c7c001000000eb46488b442408ff15740100004989c2488b4424204c8b4424184c8b4c2410415d488d6424204c8b642408ff342448bbc06ad1f1c27f00004c896424084c896c2410ff253101000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d9000000ff15cb0000004989c6415648c7c001000000ff15b10000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc00ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f40000|@17847,1,@3614,@8439,@6242,@7935,@7902,@8440,@7902,@8438,@5062|209,0,@8437 234,0,@9475 323,0,@10541 415,0,@10633 624,0,@17022 8437:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3613,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8438:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3617| 8439:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3615|33,0,@9475 88,0,@11193 8440:D3,136|483b65187305ff5558cd01a801756b4c8b28488b40084d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c746100100000049c74608010000004d892e4156e8b5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@3616| 8441:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@9893,1,@3618| 8442:D7,664|488dbc2430ffffff483b7d187306ff5560ca090753415041514152a8010f85580200004c8b30ff700841ff3641ff76086a016a01488b54243048b8c046d1f1c27f0000488b5c24184989e0ff12ff34244c8b7424304d89f541ff364d89ed4d89ee41ff75084d89f641ff76106a016a01488b442470488b5c24284c8b4424204989e1ff1540020000ff3424ff74241048ba0826d5f1c27f0000488b442450488b5c24384c8b4424284c8b4c24304c8b542420ff15080200004889c34883fb0175074c8b742408eb0e488b442408ff15e50100004989c641564c8b4424704d8b304d89c04d8b68084d89c04d8b60104d89c04d8b58184d89c04d8b50284d89c04d8b48304d89c04d8b4038498d5fb8483b5d107306ff5550ca007f4989df48c743f8080000004c8943384c894b304c8953284c8b5424084c8953204c895b184c8963104c896b084c89336a016a01488b9424a8000000488b4424704989e0ff12ff3424488b5c24104c8bb424800000004c89f04983fe0175324c8bb424980000004c8b6c24184d892e4c8b2c244d896e08488d64240849895e1048c7c0010000004881c4a0000000c208006a016a016a014c8bb424c800000041564c8d4424084c8b8c24b00000004c8b9424a8000000e82cfeffff4c8b2c24ff742408ff7424184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424284d89660849c70605000000498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c89334883fb0175074c8b742440eb0e488b442440ff156b0000004989c64c8bac24c00000004d8975004c8b7424084d8975084c8b34244d897510488d64241048c7c0010000004881c4c0000000c20800488d64242048b8d08ed5f1c27f0000488b5d08ff23f400000000000000|@17851,1,@3619,@8444,@8443,@8056,@8153|59,0,@10368 145,0,@17201 642,0,@17848 8443:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3621| 8444:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3620| 8445:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3622| 8446:D31,5880|488dbc2420ffffff483b7d187306ff5560ca0d03525053415041514c8b34244d89f541ff76084d89ed4d89ee41ff75104d89f641ff76184c8b7424304d8b2e4d89ec4983fd2d75154d8b6e084d89ee483b65187306ff5558ca0040ebdf4d89e54983fc170f85820100004d8b761041566a016a016a01f64424400174294c8b7424304d8b2e4c892c244d89f64d8b6e084c896c24084d89f64d8b76104c89742410e9930000004c8b7424304d8b264d89f64d8b5e0849c7c5010000004d8d77f04c3b75107306ff5550ca00384d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89750849bbe8d475f1c27f00004d895d004983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234c8924244c896c24084c89742410ff3424ff742410ff74242049c7c5030000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd38d675f1c27f00004d892e4156f644244001752e4c8b7424404d8b364d8b6e1041ff75004d8b6e1841ff7500498b4608ff15201600004989c549c7c601000000eb4b488da4248800000048b8d08fd5f1c27f0000488b5d08ff234983fd0b75184d8b6e104d89ee483b65187306ff5558ca0040e932feffff488d64244048b86890d5f1c27f0000488b5d08ff2341f6c50175394d8b5d084d89f44983c4027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b2c244d89ee4983fd030f8451040000f6842480000000010f843c0400004c8b5c24604d8b2b4e8d246d010000004983fc01750f49bd70d8d0f1c27f0000e9a00000004d89e24983c2024c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0d1c1400000f87c90300004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d8955004c89e14d89db498d7308498d7d0848d1e9f3a44983c41049d1ec43c644250028418065ffbf415548bae81cd1f1c27f00004c89f048c7c303000000ff15801400004989c54c8b14244d8b324e8d3475010000004d8b65004e8d1c65010000004983fe01750d488d6424084d89ece9c40000004983fb01750d4d89d4488d642408e9b10000004f8d4c1eff4c89c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d0445010000004c3b05161300000f87b30200004c89c74c8d24bd0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006f4d89e748d1ef49897c24f841c64424ff414983e8024bc74484fc0000000049d1e94d890c244c89f14d89d2498d7208488d642408498d7c240848d1e9f3a44983c6104c89d9498d750849d1ee4b8d3c3448d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be88d8d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b153a1200000f87c70100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049d1ed43c6042e29418066ffbf415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424404d897424104c8b34244d89f34d8974240849bea0d675f1c27f00004d8934244c8b6c24484983c5027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d89db4d895e104d8966084d892e41564c8b7424184d89f54983fe03750f49b8985fd1f1c27f0000e91e0800004d89ed4d89ee4983fd017f18488da424b800000048b8485ed5f1c27f0000488b5d08ff234d89f64c89f34983fe017d18488da424b800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff159b1100004989c64d8d47e04c3b45107306ff5550ca00404d89c749c740f80300000049c74010010000004d89700849c70029000000e947070000488da424a000000048b8f8c7d0f1c27f0000488b5d08ff23488da424a800000048b8f8c7d0f1c27f0000488b5d08ff23488da424a000000048b8f8c7d0f1c27f0000488b5d08ff23488d642408eb05488d6424084c8b6424584d8b34244e8d2c75010000004983fd01750f49bea063d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15bb0f00000f87170200004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf415649c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b7424384d897424104c8b34244d89f34d8974240849bef0d775f1c27f00004d8934244c8b7424404983c6027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d89db4d895d104d8965084d8975004c8b9424800000004d8b224d89d24d8b72204d89d24d8b5a284d89d24d8b5238498d47a8483b45107306ff5550ca007c4989c748c740f80a0000004c8950484c8958404c8b5c24084c89db4c8958384c8b5424204d89d34c8950304c8968284c8960204c8b5424604c8950184c8b9424980000004c8950104c8b9424a00000004d8b52084c89500849ba40d975f1c27f00004c891048ba905fd5f1c27f0000ffb42490000000415641554154415349b8985fd1f1c27f00004c8b4c24404c8b542438ff15ac0e00004989c641564c8b7424084d8b3648c7c001000000eb18488da4249800000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15260e00004c8b7424304d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424184d89f54c3b35f60d00007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424184156ff15970d00004989c6415648c7c001000000ff157d0d00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156f6842490000000017409584881c4a8000000c349c7c6010000004c8bac249000000041f6c50175394d8b5d084d89f44983c4027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8b6424184d8b34244e8d2c75010000004983fd01750f49bec862d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15520b00000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424484d8b3648c7c001000000eb18488da424b800000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15280b00004c8b34244d89f54c3b35120b00007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15ac0a00004989c641564c8b7424104c89f34983fe017d18488da424c800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff156c0a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004881c4a8000000c341f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0041ebd849c7c601000000eb0749c7c6030000004983fe03750e4c89c0ff15870900004989c0eb004c8b9c24900000004d8b234d89db4d8b73204d89db4d8b6b284d89db4d8b5b38498d47a0483b45107306ff5550ca00794989c748c740f80b0000004c8958504c8968484c8b6c24104c89eb4c8968404c8b6c24304d89eb4c8968384c8b14244d89d54c8950304c8960284c8940204c8b5424704c8950184c8b9424a80000004c8950104c8b9424b00000004d8b52084c89500849baf0d975f1c27f00004c891048ba905fd5f1c27f0000ffb424a000000041564155415441534c8b4c24504c8b542448ff15b10800004989c641564c8b7424104d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15450800004c8b7424404d89f541ff364d89ed4d8b75004d89ed4d8975004c8b7424204d89f54c3b35150800007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424204156ff15b60700004989c641564c8b7424384c89f34983fe017d18488da424d800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15760700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b94248800000048c7c003000000ff124989c64d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004c8b2c244d896c2418488d6424084d8974241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554c8b9c24900000004d8b2b4d89ea4d89db4d8b630849c7c0010000004d8d4ff04c3b4d107306ff5550ca00754d89cf49c741f80100000041c641ff404d890141514983c5027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234d89d34d2beb7118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234983c5014983fd017d18488da424c800000048b8c0d2d4f1c27f0000488b5d08ff234983fd017e5c4c89e24983ed027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff12488b1c24ff15610500004989c5eb454983fe017d18488da424c800000048b850d3d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061100000041564c8b7424304c89f34983fe017d18488da424d000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15b40400004989c64156f60424010f85860000004c8b34244d8b6e084983fd01750949c7c503000000eb0749c7c5010000004983fd0375624d89f64d8b2e488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd985fd1f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930e98400000048c7c3010000004c8b342441f6c60175394d8b66084989dd4983c5027118488da424d800000048b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc14883fb017d18488da424d800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15a2030000488b1c24ff1590030000488d642408ff157d030000ff156f0300004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8ba424900000004d8b34244e8d2c75010000004983fd01750f49bea063d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b156e0200000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf41564c8b7424104d8b3648c7c001000000eb18488da424d000000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15cc0100004c8b34244d89f54c3b35b60100007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01753649bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb11488d64240849bec00ad5f1c27f0000eb02415e4156ff15500100004989c6415648c7c001000000ff15360100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004c8b6424084d89e64983fc01750c488da424c80000004c89e8c3488d642408498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004881c4b8000000c3f40000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@17860,1,@3630,@8454,@7989,@9493,@7935,@7906,@8455,@5292,@8456,@8457,@7503,@8458,@6242,@9493,@7935,@8251,@6504,@8459,@6242,@9493,@7935,@8460,@6242,@9493,@7935,@8251,@8453,@4983,@8309|260,0,@8447 285,0,@9475 402,0,@8448 478,0,@17853 529,0,@17856 572,0,@9475 663,0,@9565 840,0,@10077 1129,0,@9566 1393,0,@8449 1426,0,@9475 1499,0,@10541 1534,0,@17571 1570,0,@10101 1661,0,@9487 1685,0,@9487 1709,0,@9487 1760,0,@17602 2051,0,@8450 2084,0,@9475 2278,0,@8451 2291,0,@17577 2316,0,@10541 2372,0,@9487 2533,0,@9493 2570,0,@17022 2820,0,@9475 2881,0,@17598 3106,0,@9487 3246,0,@9493 3288,0,@17022 3337,0,@10101 3739,0,@8452 3752,0,@17577 3958,0,@9493 3995,0,@17022 4047,0,@10101 4426,0,@9475 4458,0,@9475 4492,0,@16618 4531,0,@9475 4620,0,@16621 4737,0,@10101 4859,0,@10541 4953,0,@9475 5003,0,@10101 5149,0,@17602 5374,0,@9487 5514,0,@9493 5556,0,@17022 8447:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3624,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8448:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17852,1,@3625|42,0,@9475 8449:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3626,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8450:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3627,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8451:D3,136|483b65187305ff5558cd054989d64d8d57b84c3b55107306ff5550ca01404d89d749c742f8080000004d8b6e484d896a3849c74230010000004d8b6e404d896a28498942204d8b6e384d896a184d8b6e304d896a104d8b6e284d896a084d8b6e204d892a498b5608498b4610498b5e1849c7c10100000049b8985fd1f1c27f0000ff22f400000000|@17859,1,@3628|121,0,@10541 8452:D3,128|483b65187305ff5558cd054989d64d8d57b84c3b55107306ff5550ca01404d89d749c742f8080000004d8b6e504d896a3849c74230010000004d8b6e484d896a28498942204d8b6e404d896a184d8b6e384d896a104d8b6e304d896a084d8b6e284d892a498b5608498b4610498b5e184d8b462049c7c101000000ff22f40000|@17859,1,@3629| 8453:D3,208|483b65187305ff5558cd09483bc3750848c7c001000000c34883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004989450849c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f8020000004d896e0849c7061100000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000|@10111,1,@3638|32,0,@16320 137,0,@9475 8454:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3631|33,0,@9475 88,0,@11193 8455:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3632| 8456:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@3633|64,0,@10541 98,0,@9475 8457:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@10111,1,@3634|32,0,@9475 8458:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3635|32,0,@9475 87,0,@11193 8459:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3636|32,0,@9475 87,0,@11193 8460:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3637|33,0,@9475 88,0,@11193 8461:D4,160|483b65187306ff5558ca0d01525341504c8b2c244d89ee41ff75004d89f64d89f541ff76184d89ed4d89ee41ff75284d89f641ff7630506a01f64424080175594c8b742408498b064d89f641ff76084c8b7424484d8b76084156ff742438ff742428ff742458488b5c24284c8b4424404c8b4c24584c8b542448ff15380000004989c4415d4c8924244c896c2408483b65187303ff5558eba0584883c440c3f4|@17864,1,@3644,@8462| 8462:D34,4208|488dbc24b8feffff483b7d187306ff5560ca0907534150415141524c8b701841ff36ff30ff7008ff70104c8b7424184c89f04983fe01750c49be98ddd0f1c27f0000eb69ff152e1100004989c641f6c601755041ff36498b46084883f8017504415eeb3dff15061100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15ca1000004989c6eb0a49bed8c8d0f1c27f00004156488b442420488b5c2438ff15a11000004989c64156ff34246a01f64424080175414c8b742408498b064d89f641ff76084c8b7424084c89f34983fe0175054989c4eb09ff15601000004989c4415d4c8924244c896c2408483b65187303ff5558ebb8ff342449c7c6010000004c8b2c2441f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441566a016a016a016a016a016a016a014c8b6c24384d89ee4983fd01754a4c8bb424900000004d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b6e204c896c24184d8b6e284c896c24204d8b6e304c896c24284d8b76384c89742430e96a02000049c7c5030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc08f275f1c27f00004d89650041554c8bac24980000004d8b6d084d8b45004d8b6d0849c7c4010000004d8d5ff04c3b5d107306ff5550ca00714d89df49c743f80100000041c643ff404d89234d8d67e04c3b65107306ff5550ca00694d89e749c74424f8030000004d896c24104d895c240849bd70f275f1c27f00004d892c244983c0027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d8d6fe04c3b6d107306ff5550ca00594d89ef49c745f8030000004d895d104d8965084d89450041554d89f64c89f34983fe017d18488da424b800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15470e00004889c348bac080d4f1c27f0000488b442450ff15270e00004989c54c8bb424a00000004d8b4e284d8d5fe84c3b5d107306ff5550ca00624d89df49c743f8020000004d896b0849c7030300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca005a4d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca006a4d89e749c74424f8040000004d895c24184c8b5424084d89d34d895424104c8b04244d89c24d894424084d892c244d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d084d8965004d89f64d8b0e4d89f64d8b66204d89f64d8b76384c894c24104d89d24c89542418488d6424084d89db4c895c2418488d6424084c896424184c896c242048c7442428010000004c897424304c8b3424ff742408ff7424184c8b642428ff7424304c8b5c24404c8b542448488bbc24a00000004c8b2f4e8d2c6d010000004c8b4c24784d8b014a8d1c45010000004983fd0175084d89c8e9b80000004883fb0175084989f8e9aa000000498d741dff4889f04883c01e49c7c01100000048d1e849d1e84833d249f7f0488d144501000000483b15af0b00000f871e0400004889d14c8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550cacc7e4d89c748d1e9498948f841c640ff414883ea0249c74490fc0000000048d1ee4989304c89e94889ff488d7708498d780848d1e9f3a44983c5104889d94d89c9498d710849d1ed4b8d3c2848d1e9f3a4418060ffbf4d8b284e8d0c6d010000004983f901750f49bde8d8d0f1c27f0000e99d0000004c89cf4883c7024889f84883c01e49c7c51100000048d1e849d1ed4833d249f7f5488d344501000000483b35db0a00000f873a0300004889f24c8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550cac05f4d89ef48d1ea498955f841c645ff414883ee0249c744b5fc0000000048d1ef49897d004c89c9498d7008498d7d0848d1e9f3a44983c11049d1e943c6440d002d418065ffbf498d5fb8483b5d107306ff5550ca007c4989df48c743f8080000004c8953384c895b304c8b1c244c895b284c8963204c896b184c8b6c24084c896b104c8b6c24104c896b084c89336a016a01488b9424f0000000488b8424980000004989e0ff12ff34246a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bdc0f375f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54243048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424384d8966104d896e0849bc00f475f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b5424104c8bac24080100004d8d77d84c3b75107306ff5550ca04204d89f749c746f8040000004c8b6424304d8966184c8b6424384d8966104c8b6424404c89e04d8966084d892e4156ff124989c641566a016a016a0154488b8424f000000048bb706ed5f1c27f000049c7c0030000004c8b8c24e00000004c8b542428ff155c090000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e415648c7c003000000ff15190900004889c36a016a016a016a01488b44242049b8f891d5f1c27f000049c7c1010000004989e2ff15e7080000415e415d415c415b488d642408498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c89306a016a016a016a014889e3ff1597080000415c415b415d415a4d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d896e104d895e084d8926eb30488da424c000000048b8f8c7d0f1c27f0000488b5d08ff23488da424c000000048b8f8c7d0f1c27f0000488b5d08ff234983fd01750949c7c501000000eb3b41f6c5010f85fd0000004d8b5d004d89dc4983fb01750949c7c503000000eb1b41f6c5010f85c50000004983fc010f8e8500000049c7c5010000004983f50241554c89f0488b5c24084c8b8424c80000004c8b4c2410ff15c00700004989c641564c8b7424084983fe03743f4c8bb424200100004983fe037431488b8424280100004c8b84241801000048c7c3010000004c8b8c24d000000049ba0892d5f1c27f0000ff156b070000eb004c8bb424280100004d8b7668eb6641f6c50175184d8b65084d89e5483b65187306ff5558ca0060e91affffff488da4240001000048b8e049d1f1c27f0000488b5d08ff23488da4240001000048b8504ad1f1c27f0000488b5d08ff23488da4240001000048b8504ad1f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dd506000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e92a0500004d8b364d8b2e4c3b2d7106000075104d8b76104983fe030f84b6040000eb18488da4241001000048b87810d1f1c27f0000488b5d08ff234c8bb424a00000004983fe0175374c8b34244c89f34983fe01750f488d6424205b4881c4e0000000eb16488b442420ff150a0600004889c3488da42408010000e9390400004c8bac24f80000004d89ee41ff75104d89f641ff7608488b54240848c7c003000000ff124989c64156f64424680175204c8b7424684d8b364d8b36498b06ff15ae0500004989c549c7c601000000eb18488da4242801000048b8e02dd5f1c27f0000488b5d08ff2341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424204c89f34983fe017507488b5c2440eb0e488b442440ff151c0500004889c34883fb017504415eeb12488b0424ff15fd0400004989c6488d6424084156488b842408010000ff15dd0400004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c704242900000041f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff155a0400004989c4eb004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f00000041564c8bb424800000004d8b76104d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff159c0300004989c64156488b94248000000048c7c001000000ff124989c64156488b442408ff156e0300004989c641564c8bb424d80000004c89f34983fe017d18488da4244801000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff152b0300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424084d89653049c74528010000004d8975204c8b34244d897518488d64241049c745100100000049bec862d5f1c27f00004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b6424104d89e64d89651049c745080100000049c745000300000041554156ffb424e0000000488b842428010000488b9c240001000049c7c0010000004c8b4c24384c8b542430ff15290200004989c6415648c7c001000000488b5c24284c8b4424284c8b4c24204c8b9424e0000000ff15f80100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8973084c8b34244c8933488d6424084881c4300100004883fb01750458c22000584c8b34244c897424204883c420ff254b010000488b8424e000000048c7c301000000ff152e0100004989c64156f6042401752d4c8b3424498b064d89f641ff7608488b9c2438010000ff15ff000000415d4c892c24483b65187303ff5558ebcd488d642408e90dfbffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dc400000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4241001000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d5700000075134d8b76104983fe030f8580faffffe917ffffff488da4241001000048b87810d1f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@17865,1,@3645,@4635,@4635,@8238,@8323,@8469,@8470,@8473,@8476,@7989,@7935,@6504,@8477,@8478,@8479,@8123,@8480,@4635,@4635,@5316,@8481,@8353,@8358,@8483,@8369,@7474,@8484,@8486,@8487,@4836,@8491,@8468|58,0,@9620 165,0,@9493 313,0,@9475 529,0,@8463 645,0,@8464 673,0,@9475 750,0,@10101 782,0,@16215 1352,0,@9570 1677,0,@8465 1765,0,@8466 1986,0,@17655 2097,0,@17862 2255,0,@9487 2279,0,@9487 2463,0,@17863 2533,0,@10395 2557,0,@10398 2581,0,@10398 2685,0,@10158 2739,0,@9991 2912,0,@17255 3450,0,@10101 3559,0,@17598 4118,0,@10198 4176,0,@9991 8463:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17861,1,@3639|42,0,@9475 8464:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3640,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8465:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3641| 8466:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3642|36,0,@9475 8467:D3,160|483b65187305ff5558cd014c8b304983fe01750949c7c501000000eb0941f6c60175664d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c89701048c740080100000049bea85bd1f1c27f00004c8930c348b8504ad1f1c27f0000488b5d08ff23f4000000000000|@17637,1,@3643|125,0,@10515 139,0,@10398 8468:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3669| 8469:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3646| 8470:D7,408|483b65187306ff5558ca0907505341504151415248c7c3010000004c8b74242041f6c60175364d8b66084989dd4983c5027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89e64c89eb483b65187306ff5558ca0840ebc44883fb017d15488d64242848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15440100004889c348bac080d4f1c27f0000488b442420ff15240100004989c641564c8b6c24204d8b75004d89ed498b55084c8b6c24184d8b6d004d2bf57115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47e0483b45107306ff5550ca04404989c748c740f80300000048c74010010000004c8970084c8b7424104c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442410488b5c24084c8b442428ff156f000000ff15610000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424204c89700848c7000f0000004883c418c3f40000000000|@17866,1,@3647,@7906,@8472,@7474,@8471|58,0,@9475 105,0,@10101 137,0,@16215 198,0,@9475 8471:D3,120|483b65187305ff5558cd09504c8b34244c89f04c3bf3750d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4|@10111,1,@3649|53,0,@9475 8472:D3,368|483b65187306ff5558ca0901534150a801750d4c8b30ff70084c8b6c2410eb0d488d64241048c7c001000000c341f6c50175474d8b5d004d8b65084d8b134d8b124d8b0e4d3bd175204d8d77f04c3b75107306ff5550ca00084d89f749c746f8010000004d891eeb184d89e5483b65187306ff5558ca0060ebb349c7c6010000004983fe01750f49be8806d5f1c27f0000e9910000004d8b364d8b76084c8b6424084d8b2c244d89eb4d89e4498b5424084d89dc4d2bec7115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084c8930ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706110000004156488b442408488b5c24184c8b442410e8c3feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f4000000|@10112,1,@3648|137,0,@16989 192,0,@9475 8473:D10,1160|483b65187306ff5558ca0907415041514152a8010f850b010000f6c3010f85fb000000ff30ff7008ff33ff7308488b54242848c7c003000000ff124989c641564c8b7424204d8b76104d8b2e4983fd050f85b30000004d8b66084d8b6e104c8b34244d8934244c8b7424284d89f04d8975004c8b7424104d89f54983fe01757d4c8b4c24504c8b5424484c89c348c7c001000000ff15360400004989c64d8b2e4983fd0d751a4c89f0488b5c243849c7c001000000ff150d0400004989c5eb384d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b6424384d8965104d89750849c7450017000000e9d002000049c7c6010000004d89edeb2b488d64244048b83093d5f1c27f0000488b5d08ff23488d642418eb05488d64241848c7c001000000c2100041f6c50175364d8b5d084d89f44983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc441564c8b4424304d8b304d89c04d8b600849c7c3010000004d8d6ff04c3b6d107306ff5550ca00594d89ef49c745f80100000041c645ff404d895d0041554d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d8965104c8b1c244d89dc4d895d0849bb90ff75f1c27f00004d895d004983c6027115488d64245048b8d0c6d0f1c27f0000488b5d08ff23498d5fe0483b5d107306ff5550ca00714989df48c743f8030000004d89e44c8963104c896b084c89334c8b4c24604c8b542458488b442420ff15810200004989c54d8b75004983fe0d751a4c89e8488b5c244849c7c001000000ff15570200004989c6eb374d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424484d8966104d896e0849c7061700000041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15b2010000ff15a40100004989c641564c8b7424184c89f34983fe017d15488d64246048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15670100004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc862d5f1c27f00004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004883c4104d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c7060300000041564c8b4424384983c0027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c8b7424504c8b6c244841564155488b442428488b5c24184c8b4c24404c8b542438e8affbffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c430c21000f400|@17870,1,@3651,@8475,@7989,@7935,@5380,@8470,@5380,@8470|272,0,@17867 334,0,@9475 474,0,@8474 499,0,@9475 798,0,@10101 906,0,@17598 1052,0,@9475 8474:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3650,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8475:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3652|32,0,@9475 87,0,@11193 8476:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3653|32,0,@9475 87,0,@11193 8477:D3,232|483b65187305ff5558cd01a8010f85c80000004c8b30488b40084d8b76104d8b2e4983fd050f85a00000004d8b76084d8b364983fe017d1048b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c706110000004156e864ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b81094d5f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3654|58,0,@16320 205,0,@17871 8478:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3655| 8479:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3656| 8480:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3657| 8481:D8,1448|483b65187306ff5558ca090353415041514c8b284d89ee4d8b65004983fc070f850c0100004d8b6d0841f6c501740949c7c503000000eb0749c7c5010000004983f5024983fd030f85dd0000004d8b76084d8b3641ff36ff7008ff70104c8b6c24184d89ee41ff75084d89f6498b561048c7c003000000ff124989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424304d8965184d89751049c745080100000049c745000300000041554983fe017d15488d64244048b80095d4f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745001100000041554c8b6c2420eb1c488d642418eb05488d64241848b88094d5f1c27f0000488b5d08ff2341f6c501754e4d8b5d004d8b65084d8b53104d8b1a4983fb0575244d8b5a084d8b52104d89334c8b5c24104d891a4d89e5483b65187306ff5558ca0060ebc1488d64244848b8c86ed5f1c27f0000488b5d08ff234c8b7424184983fe01750949c7c601000000eb3a41f6c6010f85600200004d8b264d89e54983fc01750949c7c603000000eb1b41f6c6010f852c0200004983fd010f8eef01000049c7c6010000004983fe03740c49c7c601000000e934030000488b442428488b1c2449c7c0010000004c8b4c2430ff15cb0300004989c641564c8b7424404d8b2e4d89f64d8b56084d89f64d8b66104d89f64d8b4e184d89f64d8b5e204c3b2d930300007502eb344d8b75004e8d3475010000004983fe01753c49bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb1a4983fc0175124983fb01750c49bdc06ad1f1c27f0000eb5feb004d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd1895d5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5095d5f1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000eb5d41f6c60175184d8b6e084d89ee483b65187306ff5558ca0040e9b1fdffff488d64244848b8e049d1f1c27f0000488b5d08ff23488d64244848b8504ad1f1c27f0000488b5d08ff23488d64244848b8504ad1f1c27f0000488b5d08ff2341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155c0100004989c6eb004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500210000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bdc06ad1f1c27f00004d896e104c8b2c244d896e08488d64240849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b44243048c7c3030000004c8b44240849c7c1010000004c8b542438ff15750000004889c34883fb017508415e4883c408eb12488b0424ff15520000004989c6488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c438c3f400|@17880,1,@3658,@8482,@8351,@6504,@9493,@8352|195,0,@16320 312,0,@17874 396,0,@17657 605,0,@9493 651,0,@10633 827,0,@10633 872,0,@17877 916,0,@17879 1013,0,@10395 1034,0,@10398 1055,0,@10398 1217,0,@10633 8482:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3659| 8483:D3,128|483b65187305ff5558cd01504c8b34244c89f04983fe037e0d488d64240848c7c001000000c34889c04883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e8b7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@17695,1,@3660|54,0,@9475 8484:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd980c76f1c27f00004d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@10111,1,@3662|62,0,@8485 88,0,@9475 8485:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@17881,1,@3661|32,0,@9475 8486:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3663| 8487:D4,120|483b65187305ff5558cd094989c65341f6c6017555498b0641ff7608488b5c2408ff15690000004989c64156488b442408488b5c2410e8c5ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@3665,@8488| 8488:D6,96|483b65187305ff5558cd094989de488b4018498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be200f76f1c27f00004c89336a016a014989e0ff153d000000488d64240858ff1529000000ff251b000000f40000|@17882,1,@3666,@8490,@8316,@5234|51,0,@8489 8489:D3,280|483b65187305ff5558cd054c8b720841f6c601752e4d8b264d8b6e084d8b6424184d8b1c244983fb0375074d8b642408eb194d89ee483b65187306ff5558ca0140ebcc48c7c001000000c341f6c401754a4d8b14244d8b5c24084d8b0a4d8b094c8b004d3bc875224d8d67f04c3b65107306ff5550ca01644d89e749c74424f8010000004d891424eb184d89dc483b65187306ff5558ca0170ebb049c7c4010000004983fc0175144d89ee483b65187306ff5558ca0140e953ffffff4d8b34244d8b364d8b2e4d8b66084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f400000000|@17624,1,@3664| 8490:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@9893,1,@3667| 8491:D3,128|483b65187305ff5558cd01a8017566ff30488b4008e8e6ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be50e0d0f1c27f00004c8930c348c7c001000000c3f40000|@10443,1,@3668|105,0,@9649 8492:D3,120|483b65187305ff5558cd054989d34989c64d8b2e498b46084d8b46104d8b4e184d8b56204d8b76286a016a01498b5308498b5b104d8b63184d8b5b204156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@17883,1,@3670| 8493:D3,120|483b65187305ff5558cd054989d34989c64d8b2e498b46084d8b46104d8b4e184d8b56204d8b76286a016a01498b5308498b5b104d8b63184d8b5b204156415541545448830424184153ff12415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400000000|@17884,1,@3671| 8494:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3688| 8495:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3673| 8496:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3674| 8497:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3675| 8498:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3676| 8499:D9,424|483b65187306ff5558ca0907415041524d8b716841f6c60175454d8b264d8b6e084d8b1c244c3b1dbc01000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e98c0000004d8b364d8b2e4c3b2d5801000075064d8b7610eb15488d64241048b87810d1f1c27f0000488b5d08ff234983fe03741f488d6424104c8b74240849c7060100000049895e0848c7c001000000c208006a016a014989e04c8b4c24184c8b542410ff15f7000000585b4c8b4424084159488d6424084c8b5424084c8b34244c897424084883c408ff25c900000041f6c60175454d8b264d8b6e084d8b1c244c3b1da900000075204d8d77f04c3b75107306ff5550ca09104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0940ebb549c7c6010000004983fe017515488d64241048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d3f00000075094d8b7610e919ffffff488d64241048b87810d1f1c27f0000488b5d08ff23f4000000000000|@17886,1,@3679,@4652,@4652,@8052,@8500,@4652,@4652|110,0,@10158 151,0,@9991 358,0,@10198 403,0,@9991 8500:D6,1208|483b65187306ff5558ca09074150415141524883f801751a488d642410415e49c7060100000049895e0848c7c001000000c3ff30ff7008ff33ff7308ff73104c8b7424204d8b2e4c89e84d8b65004983fc0175424d8b6d084d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004d896e1049bd985fd1f1c27f00004d896e0849c70617000000eb0e488b5c2430ff153f0400004989c64156488b542418488b442438ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff155c0300004989c6eb0041566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd801c76f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54244048c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104d896e0849bcc01c76f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b7424104c8b5c24404d8b63084d89e54d8b14244983fa010f851c0100004d8b4c24084d89db4d8b53104d89db4d8b45004d89c44983f8057515488d64246048b8a892d1f1c27f0000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6500eb044d8b6508eb084d8b6d084d8b65004d8d6ff04c3b6d107306ff5550ca005e4d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca006e4d89e749c74424f80400000049c7442418010000004d894c24104d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d89650849bcd888d1f1c27f00004d8965004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d89db4d895c24104d896c240849c704240b000000eb374d8d67e04c3b65107306ff5550ca00484d89e749c74424f8030000004d89db4d89dd4d895c24104d89ed4d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004c8b5c24204d895d084d896500498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c8b6c24284c896b084c89336a016a01488b4424484989e04c8b4c24604c8b542458e894fbffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15440000004989c64c8b6c24704d8975004c8b34244d897508488d64240848c7c0010000004883c470c3f4000000000000|@17887,1,@3680,@8504,@6504,@8503|129,0,@10541 442,0,@8501 530,0,@8502 718,0,@10915 904,0,@10854 8501:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3677| 8502:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3678|36,0,@9475 8503:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3682,@5380|170,0,@9475 287,0,@16603 8504:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3681| 8505:D5,264|483b65187306ff5558ca0907415041514152f6c3010f85c90000004c8b13ff73086a016a014c8b7424504c8b6c24484c8b6424404c8b5c243841564155415441534889c34c89d04c8d4424204c8b4c24404c8b542438ff15cc000000ff3424488b4424106a016a014c8b7424684c8b6c24604c8b6424584c8b5c24504156415541544153488b5c24484c8d4424204c8b4c24584c8b542450e863ffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff15630000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c22000488d642410415e49c706010000004989460848c7c001000000c22000f400000000000000|@17888,1,@3683,@8507,@8506| 8506:D6,912|483b65187306ff5558ca09074989dc4c89cf41504c8b48084c8b68104c8b70184d8b364983fe017515488d64240848b80895d1f1c27f0000488b5d08ff2341ff364c8b374e8d3475010000004d8b194e8d045d010000004983fe0175084d89cbe9b20000004983f80175084989fbe9a40000004b8d7406ff4889f04883c01e49c7c31100000048d1e849d1eb4833d249f7f3488d144501000000483b15e70200000f87c10200004889d14c8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550cac4774d89df48d1e949894bf841c643ff414883ea0249c74493fc0000000048d1ee4989334c89f1488d7708498d7b0848d1e9f3a44983c6104c89c1498d710849d1ee4b8d3c3348d1e9f3a4418063ffbf4d8b334e8d3475010000004983fe01750f48bb00d9d0f1c27f0000e9990000004d89f14983c1024c89c84883c01e49c7c01100000048d1e849d1e84833d249f7f04c8d0445010000004c3b05190200000f87e60100004c89c7488d1cbd0400000048f7db4903df483b5d107205493bdf7206ff5550ca007f4989df48d1ef48897bf8c643ff414983e8024ac74483fc0000000049d1e94c890b4c89f1498d7308488d7b0848d1e9f3a44983c61049d1ee42c604332e8063ffbf6a016a014c89d24c8b4c24384c8b5424304c8b7424405441564d89e04c89e8ff12ff3424ff742410488b54244848c7c003000000ff124989c641564c8b7424284d8b6e084d8b65004983fc050f851c0100004d8b5d084d8b65104c8b2c244d892b4c8b6c24484d892c24498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004d89f64c89306a016a01488b5c24504c8b4424584c8b4c24684c8b54246054ff1536010000488b1c24ff7424084d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24204d896e184c8b6c24184d896e1049c746080100000049c70603000000498d47e8483b45107306ff5550ca08404989c748c740f80200000048c74008010000004c89304883fb0175054889c3eb09ff15b40000004889c34883fb0175074c8b742428eb0e488b442428ff15910000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c22000488d64243848b810cfd4f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f40000ffffffffffffff01ffffffffffffff01|@17889,1,@3685,@8509,@8508,@8159|48,0,@10926 298,0,@9571 837,0,@16600 858,0,@9487 879,0,@9487 8507:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3684| 8508:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3687| 8509:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3686| 8510:D25,2672|483b65187306ff5558ca0d075253415141524c8b284d89ee4983fd050f85fe0100004c8b7008498b064d8b6e2041ff75004d8b762841ff366a016a01488b5424384c8b742448544156488b5c24404c8b4c24384c8b542430e8a3ffffffff3424ff7424106a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd583176f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54244848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424404d8966104d896e0849bc983176f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424ff742410488b442448488b5c24584c8b442450ff15aa0900004889c34883fb017507488b5c2408eb0e488b442408ff15870900004889c34883fb0175074c8b742428eb0e488b442428ff15640900004989c64156488b542408488b442458ff124c8bb424800000004156488b5c245049b87098d5f1c27f00004c8b4c24684c8b542460ff15220900004989c64c8bac24880000004c8b24244d896500488d6424104d89750848c7c0010000004883c468c210004d89f54983fe070f85e3000000ff70084c8b701841ff3649c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca00014d89ef49c745f80400000049beb05fd1f1c27f00004d8975184c8b7424204d89f14d8975104c8b7424184d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00274d89f749c746f80200000049c74608010000004d892e6a016a014c8b6c2440498b55084c8b6c245041566a01ff35220800005448830424184155488b442460488b5c2448ff12ff3424ff7424286a01e96e0500004d89ee4983fd030f8523010000ff7008488b581049c7c5010000004d8d77f04c3b75107306ff5550ca08214d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107306ff5550ca08014d89ef49c745f80400000049beb05fd1f1c27f00004d8975184c8b7424184d89f14d8975104c8b7424104d89f24d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca08274d89f749c746f80200000049c74608010000004d892e6a016a014c8b6c2438498b55084c8b6c244841566a01ff352d0700005448830424184155488b442458ff12ff34244c8b4424106a016a01488b5424504c8b742460544156488b442440488b5c24584c8b4c24504c8b542448e8e4fbffffff3424ff7424104c8b742438498b06ff15cf0600004989c549c7c601000000e9950300004983fe09755a4c8b70104d8b364983fe017515488d64242048b80895d1f1c27f0000488b5d08ff234d8b36498b4608488b1c24ff157f0600004989c6488d6424084c8b6c242849c74500010000004d89750848c7c0010000004883c418c210004c8b70084d8b6e1041ff75004d8b6e1841ff75004d8b6e2041ff75004d8b6e3841ff7500498b066a016a01488b5424484c8b742458544156488b5c24504c8b4c24484c8b542440e814fbffffff3424488b4424104d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8b7424304d8970184c8b7424404d89f14d8970104c8b7424384d89f24d89700849bea03276f1c27f00004d89304c8b7424604156488b5c2420ff15a20500004989c64156488b54244848c7c003000000ff124989c6415649c7c6ffffffff4d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d89342449be6086d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d897500498d5fe0483b5d107306ff5550ca00304989df48c743f8030000004c896b104c89630848c703050000004c8b34244d8934244c8b7424484d897500488b442438ff15e1040000488b5c24504c8b442448ff15c90400004989c641564c8b6c24384d89ee4983fd017515488d64247048b8609dd5f1c27f0000488b5d08ff234d89f64d8b36498b4610488b5c2450ff15840400004989c64156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424184c8930ff15490400004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e1049c746080100000049c70603000000498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b2c244c896b08488d6424084c89334883fb0175074c8b642410eb0e488b442410ff15880300004989c44c8b2c244d89ee4983fd017d15488d64246848b80095d4f1c27f0000488b5d08ff234d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89f64d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e0849c706110000004c8b6c24704d8965004d89750848c7c0010000004883c460c2100041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b7424104c89f34983fe017507488b5c2428eb0e488b442428ff15850200004889c34883fb017504415eeb12488b0424ff15660200004989c6488d6424084c8b6c24784d8975004c8b34244d897508488d64240848c7c0010000004883c460c21000f644240801754f4c8b742408498b064d89f641ff7608488b5c2448ff15110200004c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15ed0100004989c4415d4c8924244c896c2408483b65187303ff5558ebaa415d49c7c6010000004883c40841f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564c8b742420498b06ff156b0100004989c648c7c00100000041f6c60175404d8b1e4d8b6e084d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebba4c8b7424084c89f34983fe0175054989c6eb09ff15fa0000004989c64156498d47e0483b45107303ff55504989c748c740f80300000048c74010010000004c8b6c24084d89ee4c89680848c700290000004d89f641f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1573000000eb004c8b7424684156488b5c243849b8e09dd5f1c27f00004c8b4c24504c8b542448ff15430000004989c64c8b6c24704c8b24244d896500488d6424084d89750848c7c0010000004883c458c21000f4000000|@17925,1,@3724,@8547,@6504,@8576,@8123,@8577,@7893,@8578,@8579,@8580,@7906,@8581,@8546,@8582,@8547,@8583,@8123,@17971,@17973,@8547,@8586,@8587,@8546|155,0,@8511 243,0,@8512 478,0,@17890 640,0,@10542 877,0,@10542 1114,0,@10926 1329,0,@8514 1429,0,@10839 1585,0,@17919 1879,0,@16320 2605,0,@17922 8511:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3689| 8512:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3690|36,0,@9475 8513:D3,32|483b65187305ff5558cd0948b88098d5f1c27f0000488b5d08ff23f400000000|@17893,1,@3691|13,0,@17891 8514:D4,216|483b65187305ff5558cd0d4c8b721841f6c6010f85a90000004d8b264d8b6e084883f801756c4d8b7424084d8b6e084d8b6d004983fd05755549bd2099d5f1c27f00004c8b62084c8b42104d89f14889d84c89e34c89ea49c7c201000000ff158c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3498b06c34989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0d40e94dffffff48b8c85dd1f1c27f0000488b5d08ff23f40000000000|@17893,1,@3722,@8515|59,0,@17894 157,0,@9475 196,0,@10528 8515:D22,3768|483b65187306ff5558ca0d075250534150415141524c8b7424084d8b6e084d8b65004983fc050f854c020000488d64241041ff750841ff75104c8b7424084d89f54983fe010f858301000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049beb05fd1f1c27f00004d8975184c8b7424184d8975104c8b7424204c89f34d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca08204d89f749c746f80200000049c74608010000004d892e41564c8b7424304983fe03740c49bec06ad1f1c27f0000eb384c8b6c24384d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b44242049b85099d5f1c27f00004c8b4c2410ff15320e00004989c641564c8b6c24404d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b442428488b5c244049b8a099d5f1c27f00004c8b4c2418ff15eb0d00004989c641564c8b6c24484d8b55104d89ed4d8b75184d89ed4d8b6d2041564155488b442430488b5c244849b8f099d5f1c27f00004c8b4c2420ff15a40d00004989c641564c8b742420498b06ff15890d00004989c549c7c601000000e9f10a000049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d67d84c3b65107306ff5550ca00204d89e749c74424f80400000049beb05fd1f1c27f00004d897424184c8b7424184d897424104c8b7424204d897424084c8b34244d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d8926415649c7c6010000004d89ede9240600004d89f6498b06488b5c2418ff15b70c00004989c641566a016a014c8b6c24104d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd304876f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54242848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849bc704876f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24104d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff3424488b542410488b442438ff124989c641564c8b7424304d8b76084d8b264d89e54983fc057515488d64245848b8409ad5f1c27f0000488b5d08ff234983fd0375064d8b7610eb044d8b760841564c8b7424304983fe030f85d6000000488d6424084c8b34244d8b2e4983fd0d751c4c89f048c7c30300000049c7c001000000ff151c0b00004989c5eb3a4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c745180100000049c74510030000004d89f64d89750849c74500170000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c746100100000049bcb8c0d4f1c27f00004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049beb0ded3f1c27f00004d89750849c745001b000000e9ef0000004c8b34244983fe017513488d6424084c8b7424504d8b6e08e9d200000048c7c001000000ff153d0a00004989c641564c8b7424084c89f34983fe017d15488d64246848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15000a00004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64241049c746100100000049bdb89ad5f1c27f00004d896e084c8b6c24504d8b6d084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bca06ad1f1c27f00004d8966184d896e1049bd883ed3f1c27f00004d896e0849c7060100000041564c8b6c24084d8b75004983fe0d751c4c89e848c7c30100000049c7c001000000ff15fe0800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d89ed4d896e0849c7061700000041564c8b6c24104d8b75004983fe0d751c4c89e848c7c30500000049c7c001000000ff15900800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610050000004d89ed4d896e0849c7061700000041564c8b6c24184d8b75004983fe0d751c4c89e848c7c30700000049c7c001000000ff15220800004989c6eb394d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610070000004d89ed4d896e0849c706170000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424104d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004883c40841f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff15be0600004989c5eb004c8b24244d89e64983fc017509488d6424504c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c448c341f6c50175364d8b5d084d89f44983c4027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc44156498d47e8483b45107303ff55504989c748c740f8020000004c8b7424404d8b76084c89700849be304976f1c27f00004c8930ff74240848bbb89ad5f1c27f00004c8b4424384c8b4c24084c8b542428ff15d10500004989c641564c8b7424404983fe03740c49bec06ad1f1c27f0000eb77498d47d0483b45107303ff55504989c748c740f8050000004c8b7424484d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424204c89700849be704976f1c27f00004c8930ff74241048bb689bd5f1c27f00004c8b4424404c8b4c24104c8b542430ff15390500004989c64156498d47d0483b45107303ff55504989c748c740f8050000004c8b7424504d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424284c89700849be904b76f1c27f00004c8930ff74241848bbd89bd5f1c27f00004c8b4424484c8b4c24184c8b542438ff15b80400004989c64156498d47d0483b45107303ff55504989c748c740f8050000004c8b7424584d8b6e204c8968204d89f64d8b6e184c8968184d89f64d8b76104c8970104c8b7424304c89700849beb04d76f1c27f00004c8930ff74242048bb489cd5f1c27f00004c8b4424504c8b4c24204c8b542440ff15370400004989c641564c8b742430498b06ff151c0400004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d84c3b75107303ff55504d89f749c746f80400000049bda06ad1f1c27f00004d896e184c8b6c24204d896e1049bd883ed3f1c27f00004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff156b0200004989c5eb004c8b24244d89e64983fc017509488d6424704c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c468c341f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc41564d8d77d84c3b75107303ff55504d89f749c746f80400000049bda06ad1f1c27f00004d896e184c8b6c24584d8b6d084d896e1049bd883ed3f1c27f00004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24104d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c745002900000041f6c601752a4d8b1e4d8b66084d8b1b4983fb0d75114d89e6483b65187306ff5558ca0060ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e8ff156e0000004989c5eb004c8b24244d89e64983fc017509488d6424604c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104d89f64c897008488d64240848c7001f0000004883c458c3f4000000|@17915,1,@3710,@6504,@6504,@8535,@8536,@8536,@8536,@8536,@6504,@5380,@5380,@5380,@8543,@6242,@5380,@8544,@8534,@7922,@7926,@7930|145,0,@10542 239,0,@10633 283,0,@17895 346,0,@17897 409,0,@17899 536,0,@10542 709,0,@8522 797,0,@8523 964,0,@17901 1152,0,@16535 1200,0,@15120 1293,0,@10101 1401,0,@17904 1493,0,@10632 1511,0,@14031 2230,0,@9475 2305,0,@8524 2322,0,@17904 2369,0,@10633 2449,0,@8525 2466,0,@17908 2570,0,@8528 2587,0,@17911 2691,0,@8531 2708,0,@17914 2862,0,@10632 2885,0,@14031 3359,0,@10632 3386,0,@14031 8516:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17896,1,@3692,@8517| 8517:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3693,@5380|170,0,@9475 287,0,@16603 8518:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17898,1,@3694,@8519| 8519:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3695,@5380|170,0,@9475 287,0,@16603 8520:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17900,1,@3696,@8521| 8521:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3697,@5380|170,0,@9475 287,0,@16603 8522:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3698| 8523:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3699|36,0,@9475 8524:D3,24|483b65187305ff5558cd0d488b4208c3f400000000000000|@17905,1,@3700| 8525:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b8189bd5f1c27f00004c896c2410ff251c000000f4000000|@17905,1,@3703,@7930|41,0,@17906 8526:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17907,1,@3701,@8527| 8527:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3702,@5380|170,0,@9475 287,0,@16603 8528:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b8889bd5f1c27f00004c896c2410ff251c000000f4000000|@17905,1,@3706,@7926|41,0,@17909 8529:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17910,1,@3704,@8530| 8530:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3705,@5380|170,0,@9475 287,0,@16603 8531:D4,64|483b65187305ff5558cd0d4989d94889c3488b42084c8b52104c8b6a184c8b62204154ff74240849b8f89bd5f1c27f00004c896c2410ff251c000000f4000000|@17905,1,@3709,@7922|41,0,@17912 8532:D4,32|483b65187305ff5558cd014c8b30488b5810498b06ff251d000000f400000000|@17913,1,@3707,@8533| 8533:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3708,@5380|170,0,@9475 287,0,@16603 8534:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3721| 8535:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3711| 8536:D10,1136|483b65187306ff5558ca09074d89c65053415141524d8b064d8b760849c7c4010000004d8d6ff04c3b6d107306ff5550ca00514d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00414d89ef49c745f8030000004d8975104c8b34244d89f44d89750849bea05576f1c27f00004d8975004983c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d89e44d8966104d896e084d8906415649c7c5010000004d8d77f04c3b75107306ff5550ca00214d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107306ff5550ca00014d89f749c746f8020000004c8b2c244d896e0849bdf05676f1c27f00004d892e41564c8b7424284c89f34983fe017d15488d64244048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15630300004889c348bac080d4f1c27f0000488b442420ff15430300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b6c24084d896e104c8b6c24184c89e84d896e084c8b2c244d892e4c8b6c2450498d5fe8483b5d107306ff5550ca01604989df48c743f8020000004c896b084c8933488b542440ff124989c641564c8b742408498b06ff15690200004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd017508415e4883c410eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c41041564c8b7424184d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff156e0100004c8b74240841ff364c8b7424384d89f54c3b354f0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424384156ff15f00000004989c641564c8b7424404c89f34983fe017d15488d64245848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15b30000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424104c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c438c20800f400000000|@17918,1,@3715,@8541,@6242,@9493,@7935,@8542,@7474,@8539|117,0,@8537 142,0,@9475 280,0,@8538 314,0,@10101 346,0,@16215 868,0,@9493 905,0,@17022 954,0,@10101 8537:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3712,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8538:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17916,1,@3713|42,0,@9475 8539:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd205876f1c27f00004d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@10111,1,@3718|62,0,@8540 88,0,@9475 8540:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@17917,1,@3714|32,0,@9475 8541:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3716|32,0,@9475 87,0,@11193 8542:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7610e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3717| 8543:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3719|32,0,@9475 87,0,@11193 8544:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8a8cfd4f1c27f0000488b5d08ff23f40000|@16607,1,@3720,@5380|170,0,@9475 287,0,@16603 8545:D3,32|483b65187305ff5558cd0948b8f09dd5f1c27f0000488b5d08ff23f400000000|@17893,1,@3723|13,0,@17923 8546:D4,24|483b65187306ff5558ca0901ff251e000000f40000000000|@17974,1,@3766,@8588| 8547:D4,48|483b65187306ff5558ca09076a016a014c8b742418415041564c8d442410ff152400000058488d642408c20800f40000|@17926,1,@3727,@8548| 8548:D6,1112|483b65187306ff5558ca090750534150415141526a016a014c8b6c24304d8b75004983fe0d75414d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d89ed4d896e0849bd606176f1c27f00004d892e48c70424010000004c89742408e9b2000000488b54241848c7c003000000ff124989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849bca06176f1c27f00004d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004c8b5c24304d895c24184d896c241049c74424080100000049c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408ff34244c8b74241049c7c4010000004c8b6c243041f6c50175364d8b55084d89e34983c3027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d89d54d89dc483b65187306ff5558ca0070ebc44983fc017d07488d642440eb564c3b25d20200007d484c89e14e8d2ca50400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02404d89ef49d1ec4d8965f841c645ff404c89ef48d1e948c7c001000000f348ab4c8b642430eb15488d64244048b8d015d1f1c27f0000488b5d08ff2341f6c401756e4d8b14244d8b5c24084d8b0a4d8b42084d8d57f04c3b55107306ff5550ca007b4d89d749c742f8010000004d89024d8b45f849c1e00849c1e8074983c8014d3bc87215488d64244048b80017d1f1c27f0000488b5d08ff234f89548dfc4d89dc483b65187306ff5558ca0070eb8c4d8b5df849c1e30849c1eb074983cb0149c7c4010000004983fb010f85960000004c89e06a016a014c8b4424604c8b6c245841564155ff35f3010000488d5c24184c8b4c24404c8b542448ff15d6010000415e415d4983fd037525488d642428415e4c8b6c24084d892e49c746080300000048c7c0010000004883c410c210004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c7042429000000e9930000004d89d94983e9024d89da4983ea024d89d84983e8024f8b4485fc4983f8017515488d64244048b80895d1f1c27f0000488b5d08ff23498b384d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89104d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8962084d89024d89cb4d89d4483b65187306ff5558ca0078e9cdfeffff41f6c601752a4d8b1e4d8b6e084d8b1b4983fb0d75114d89ee483b65187306ff5558ca0050ebd949c7c601000000eb0749c7c6030000004983fe03750e4c89e0ff158f0000004989c4eb004c8b2c244d89ee4983fd01750a488d6424284d89e5eb374d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004883c420415e4d892e49c746080100000048c7c0010000004883c410c21000f4ffffffffffffff01|@17928,1,@3728,@6504,@8551,@17927|75,0,@8549 163,0,@8550 328,0,@9475 463,0,@10027 557,0,@10034 815,0,@10926 8549:D3,24|483b65187305ff5558cd05488b4208c3f400000000000000|@17192,1,@3725| 8550:D3,152|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f400000000000000|@17193,1,@3726|36,0,@9475 8551:D4,240|483b65187306ff5558ca090753415041514152a8010f85a4000000ff30488b40086a016a014c8b7424504c8b6c24484c8b642440415641554154488d5c24184c8b4424404c8b4c24384c8b542430e8adffffff415e415d498d5fe8483b5d107306ff5550ca00604989df48c743f8020000004c896b084c8933584c8b4424184c8b4c2410488b7c2408415d488d6424184c8b6424184c8b5c24104c8b542408ff34244c895424084989fa4c895c24104c896424184c896c2420ff2549000000488d642418415d49bee05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c21800f4000000000000|@10943,1,@3738,@8552|200,0,@10544 8552:D31,3656|488dbc2418ffffff483b7d187306ff5560ca09074150415141524c8b70084d8b264d89e54983fc0375654d8b6e08498b4610ff33488b5424104c89ebff12488b5c2408ff15ef0e00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424184d897500415e4d892e49c746080100000048c7c001000000c220004983fd050f855f03000041ff760841ff761041ff76184c8b34244d89f241ff364d89d24d8b7218ff30ff33ff730849c7c4010000004d8d6ff04c3b6d107306ff5550ca00544d89ef49c745f80100000041c645ff404d89650041554c8b6c24784d8d67d84c3b65107306ff5550ca00644d89e749c74424f80400000049bbb05fd1f1c27f00004d895c24184d896c24104c8b6c24404d89eb4d896c24084c8b2c244d892c244d8d6fe84c3b6d107306ff5550ca005c4d89ef49c745f80200000049c74508010000004d89650041554c8b6424784c8b4c24704d8d6fb04c3b6d107306ff5550ca005e4d89ef49c745f8090000004d894d404c8b0c244d894d384d89d24d8955304c8b5424404d8955284d8975204d89db4d895d184c8b5c24284d895d104d89650849bcd07276f1c27f00004d89650041556a016a014c89f048bbc09fd5f1c27f00004989e0ff15500d0000ff3424488b442410ff153a0d0000ff152c0d00004989c6415648bad88ed1f1c27f0000488b442408488b5c2460ff15050d00004989c641f6c6010f8594010000488d64245041ff364c8b6c24084d8b75004e8d3475010000004983fe01750f48bb80dfd3f1c27f0000e9a80000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc20b00000f871b0100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f14d89ed498d7508488d7b0848d1e9f3a44983c6104d89f549d1ed42c6042b3a49d1ee42c64433010a8063ffbf49be18e07f0bc37f0000498b06ff15070c000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff15de0b0000ff35d00b000048bad09fd5f1c27f000048c7c001000000ff15b10b00004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893049be58ccd0f0c27f0000498b16ff12488b1424ff15660b0000488d64241048b818a2d5f1c27f0000488b5d08ff23488d64244048b8f8c7d0f1c27f0000488b5d08ff236a016a01488b44247048bba0a2d5f1c27f00004989e0ff15180b0000488d64240858ff15040b0000ff15f60a00004989c641566a016a01ff742418ff742418e98c01000041ff76084d8b7610ff30ff33ff73084d8b6e084c89e86a016a014d8b65004983fc010f859700000041ff7508488b542468488b442438ff124989c64d8b2e4983fd0d75194c89f0488b1c2449c7c001000000ff15800a00004989c5eb374d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b24244d8965104d89750849c74500170000004c8b34244c3b742428488d642408750949c7c603000000eb0749c7c6010000004c892c244c89742408eb1b488b5c2430ff15060a00004989c64c89342448c744240801000000488b0424ff7424086a016a01488b5424684c8b8c24800000004c8b742470ff7424504156488b5c24504c8d4424104c8b542458ff12415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24204d895c24084d892c244c8b6c24184983fd0375244c8b2c244983fd03488d6424087507488d642440eb0c488d64244049c7c601000000eb0c488d64244849c7c601000000415d4d8965004d89750848c7c001000000c220004c8b7424084d89f54983fe01752e4c8b34244983fe01488d642408750e488d64240849c7c603000000eb0c488d64240849c7c601000000e9ad0000004d89ed4d8b75004d89ed41ff7508f6442408010f85880000004c8b6424084d89e541ff34244d89ed41ff7508498b06ff15cb0800004989c64d8b2e4983fd0d75524d8b76084c8b6c24084d8b6d004d3bf5750949c7c603000000eb0749c7c6010000004983fe0375234c8b6c2410415c4c896424104c896c2418483b65187303ff55584883c410e938ffffff488d642428eb05488d64242849c7c601000000eb0c488d64241849c7c6010000004983fe037559488b542438488b842488000000ff124989c54c8b7424704d8b76104d8b264983fc0175204d8b66084c8b7424604d3bf4750949c7c603000000eb0749c7c601000000eb0749c7c6010000004c892c244c89742408e922060000f6442410017442488b442418ff15da07000048ba28d4d4f1c27f0000488b9c24880000004c8b4424404c8b4c2438ff15b00700004989c64c89342448c744240801000000e9d905000049c7c6010000004c8b6c241041f6c50175394d8b5d084d89f44983c4027118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141564c8bb424900000004d8b064d89f64d8b760849c7c4010000004d8d6ff04c3b6d107306ff5550ca00514d89ef49c745f80100000041c645ff404d89650041554d8d6fe04c3b6d107306ff5550ca00414d89ef49c745f8030000004d8975104c8b34244d89f44d89750849be208876f1c27f00004d8975004983c0027118488da424b000000048b8d0c6d0f1c27f0000488b5d08ff234d8d77e04c3b75107306ff5550ca00314d89f749c746f8030000004d89e44d8966104d896e084d890641564c8b7424104c89f34983fe017d18488da424b800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15530600004889c348bac080d4f1c27f0000488b442428ff15330600004989c549c7c4010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892641564d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d89660849bc708976f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240300000049c7c3010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d895d0041554d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184d8975104c8b7424104d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424684d8966084d892e4156488b442448ff150e05000048ba28d4d4f1c27f0000488b5c24184c8b04244c8b4c2468ff15e80400004989c641564c8b742410498b06ff15cd0400004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd017508415e4883c410eb374d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004883c41041564c8ba424900000004d8b34244e8d2c75010000004983fd01750f49bec862d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15900300000f87940000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426015049d1ed43c6442e0229418066ffbf41564c8b7424204d8b3648c7c001000000eb18488da424c800000048b8f8c7d0f1c27f0000488b5d08ff2341f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d60200004c8b74241041ff364c8b7424084d89f54c3b35b70200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424084156ff15580200004989c641564c8b7424404c89f34983fe017d18488da424e800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15180200004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c74538030000004c8b6424104d89653049c74528030000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424104c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004c8974243048c7442438010000004883c430ff3424ff7424104c8b742458498b06ff155d0100004989c649c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4983fd0175074c8b742408eb2f4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424084d8966104d896e0849c7061f0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004c8b6c24684d896c24084d8934244c8b7424604983fe0375534c8b34244983fe03488d6424087533488da424880000004c8b34244983fe05488d642408750e488d64241049c7c603000000eb0c488d64241049c7c601000000eb0f488da424a000000049c7c601000000eb0f488da424a800000049c7c601000000415d4d8965004d89750848c7c001000000c22000f4ffffffffffffff01ffffffffffffff01|@17956,1,@3739,@8123,@8563,@6242,@9493,@7935,@8123,@7904,@8002,@7474,@8564,@7904,@8002,@5062,@8566,@5380,@8567,@8316,@5234,@8568,@8557,@17967,@4846,@4851,@5268,@8575,@5239,@5234,@8562|269,0,@10542 440,0,@8553 463,0,@17931 507,0,@10895 577,0,@15127 760,0,@19888 779,0,@19888 796,0,@9463 818,0,@17932 883,0,@4805 913,0,@17950 934,0,@9487 959,0,@17953 1760,0,@16626 1854,0,@9475 1997,0,@8560 2025,0,@9475 2106,0,@10101 2138,0,@16215 2241,0,@8561 2444,0,@16626 2667,0,@17598 2892,0,@9487 3036,0,@9493 3073,0,@17022 3125,0,@10101 8553:D18,2288|483b65187305ff5558cd0552504c8b7424084d8b6e304c89e84d8b6d104d8b65004983fc010f85d604000041ff75084d89f64d8b66284d89e54983fc010f85cf0000004d89f6498b5608488b442408ff124989c54d8b75004983fe0d751e4c89e8488b1c2449c7c001000000ff15060900004989c6488d642418eb3f4d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b24244d896610488d6424084d896e0849c706170000004883c4104d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff2595080000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c34d89f64983fd030f85730300004d89f6498b4620ff153c0800004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85eb0100004c8b7424104d8b6e184d89ec4d8b6d004d89f64d8b5c240849c7c2010000004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89142441544d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104c8b14244d89d34d8954240849ba607c76f1c27f00004d8914244983c5027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca00784989c748c740f8030000004d89db4c8958104c8960084c89284d89f6498b5608ff124989c54d8b75004983fe0d751a4c89e8488b5c240849c7c001000000ff15020700004989c6eb374d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618010000004c8b6424084d8966104d896e0849c706170000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004c8b6424184d8b6424104d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb389fd5f1c27f00004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c70629000000e93e0400004c8b742410498b5608488b442408ff124989c64d8b2e4983fd0d751e4c89f0488b1c2449c7c001000000ff15d00500004989c5488d642410eb404d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518010000004c8b24244d896510488d6424084d89750849c74500170000004883c4084d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004c8b24244d8b642410488d6424084d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb1029d5f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c70029000000e9bf0200004d89f6498b5608488b442408ff124989c64d8b2e4983fd0d75154c89f05b49c7c0010000004883c410ff258f040000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c700170000004883c410c34d89f64d8b66284d89e54983fc010f85f500000049bde8cad0f0c27f00004d8b5d0049bdf8cad0f0c27f00004d8b650049bd08cbd0f0c27f00004d8b4d0049bd18cbd0f0c27f00004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8c8d0f1c27f00004d8965004d89f64d89f64d8b46384d89f64d8b56404155488b5c240849c7c101000000ff159d0300004989c6488d6424104d8b2e4983fd0d75174c89f049c7c00100000048c7c303000000ff256d030000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c740180100000048c74010030000004c89700848c70017000000c34d89f64983fd030f859d00000049bde8cad0f0c27f00004d8b5d0049bdf8cad0f0c27f00004d8b650049bd08cbd0f0c27f00004d8b4d0049bd18cbd0f0c27f00004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8c8d0f1c27f00004d8965004d89f65b4d89f64d8b46384d89f64d8b5640488d642408ff342449c7c1010000004c896c2408ff258402000049bde8cad0f0c27f00004d8b5d0049bdf8cad0f0c27f00004d8b650049bd08cbd0f0c27f00004d8b4d0049bd18cbd0f0c27f00004d8b55004d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d89650849bcd8c8d0f1c27f00004d8965004d89f65b4d89f64d8b46384d89f64d8b5640488d642408ff342449c7c1010000004c896c2408ff25df01000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2593010000c341f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15430100004989c6eb0041564c8b7424084d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15d5000000ff15c70000004989c6415648c7c001000000ff15ad0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bdc00ad5f1c27f00004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c3f4|@17930,1,@3730,@8555,@6242,@7935,@6504,@6504,@7900,@8436,@5380,@7900,@5380,@5380,@5380,@5062,@5380,@5380|483,0,@8554 508,0,@9475 753,0,@17929 1068,0,@17219 1303,0,@4782 1317,0,@4783 1331,0,@4784 1345,0,@4785 1402,0,@9493 1561,0,@4782 1575,0,@4783 1589,0,@4784 1603,0,@4785 1660,0,@9493 1718,0,@4782 1732,0,@4783 1746,0,@4784 1760,0,@4785 1817,0,@9493 2220,0,@17022 8554:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3729,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8555:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@3731|33,0,@9475 88,0,@11193 8556:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@3732| 8557:D3,24|483b65187305ff5558cd054c8b7208498b06c3f400000000|@17933,1,@3733| 8558:D3,2296|483b65187305ff5558cd014c8b68084d89ee4983fd037d0b48b8704cd1f1c27f0000c34c8b284d89ec4d8b6d004983fd010f85d30300004d8b6c240841ff74241041ff7424184983ee0241567115488d64241848b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e64983fc017d14488d64241849bdd8b5d1f1c27f0000e95d0200004d89f64983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8970084c892849bee8c7d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8b5d1f1c27f0000e9630100004d89f64983ee027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049bee8c7d0f0c27f0000498b16ff124989c641564c8b7424104983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c893049be78c0d0f0c27f0000498b16ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bcc8d6d1f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4184d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28a0d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c34d89f54983fe037d0b48b8704cd1f1c27f0000c34d8b74240841ff74241041ff74241841ff7424204983ed0241557115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c8b24244d89e54983fc017d14488d64242049bdd8b5d1f1c27f0000e9570300004d89ed4983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893049bee8c7d0f0c27f0000498b16ff124989c641564c8b6c24084d89ee4983fd037d0f49bed8b5d1f1c27f0000e95d0200004d89f64983ee027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bee8c7d0f0c27f0000498b16ff124989c641564c8b6c24104d89ee4983fd057d0f49bdd8b5d1f1c27f0000e9630100004d89f64983ee027115488d64243048b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed8c7d0f0c27f0000498b16ff124989c641564c8b7424184983ee027115488d64243848b8d0c6d0f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893049bed8c7d0f0c27f0000498b16ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc8d6d1f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be5870d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5870d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084883c4204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf8d6d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080300000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd08a1d5f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080300000048c70001000000c3f400000000000000|@17949,1,@3734|26,0,@10414 85,0,@9475 119,0,@11126 148,0,@9475 198,0,@4734 232,0,@11126 261,0,@9475 316,0,@4734 352,0,@9475 407,0,@4615 452,0,@11355 501,0,@10236 545,0,@10685 633,0,@10236 678,0,@10685 770,0,@11357 915,0,@10236 960,0,@17935 1045,0,@10414 1089,0,@9475 1123,0,@11126 1152,0,@9475 1202,0,@4734 1236,0,@11126 1265,0,@9475 1320,0,@4734 1354,0,@11126 1383,0,@9475 1438,0,@4733 1474,0,@9475 1529,0,@4733 1574,0,@11355 1622,0,@10236 1667,0,@10685 1755,0,@10236 1799,0,@10685 1887,0,@10236 1932,0,@10685 2024,0,@11357 2169,0,@10236 2214,0,@17942 8559:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@17954,1,@3735| 8560:D4,288|483b65187305ff5558cd05524c8b304c8b60084c8b68104983fc017d15488d64240848b8c0d2d4f1c27f0000488b5d08ff234983fc017e5e4c8b1c24498b53104983ec027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23498d47e0483b45107306ff5550ca04704989c748c740f8030000004c8968104c8960084c8930ff124c8b3424498b5e08488d642408ff25a2000000488d6424084983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f400000000|@16623,1,@3736,@7503|36,0,@16618 77,0,@9475 169,0,@16621 230,0,@16621 8561:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17955,1,@3737|42,0,@9475 8562:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3753,@5380|170,0,@9475 287,0,@17161 8563:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3740|32,0,@9475 87,0,@11193 8564:D3,160|483b65187306ff5558ca0901483bc3750848c7c001000000c34d8d77e04c3b75107306ff5550ca09014d89f749c746f8030000004d8946104989460849bd908c76f1c27f00004d892e41564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000000000|@10111,1,@3742|62,0,@8565 88,0,@9475 8565:D3,144|483b65187305ff5558cd054989d64c8b28488b50084d8b66104d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010030000004c8968084d8b76084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f4000000|@17957,1,@3741|32,0,@9475 8566:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3743,@5380|170,0,@9475 287,0,@17161 8567:D3,112|483b65187305ff5558cd01a8017556ff30488b40084c8b34244d8b76084983e6094983fe017434e8d4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99bffffff48c7c001000000c3f40000|@9893,1,@3744| 8568:D4,48|483b65187305ff5558cd05488b5a084c8b421049baa0a4d5f1c27f000049b9d8a4d5f1c27f0000ff251b000000f40000|@17961,1,@3747,@8571|21,0,@17958 31,0,@17960 8569:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@17959,1,@3745| 8570:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@17959,1,@3746| 8571:D4,88|483b65187306ff5558ca09075341504151415248c7c3010000004c8b4424104c8b4c24184c8b542410ff15410000004989c64c3b3424488d642408740d5a48b8a0d5d0f1c27f0000ff22488d64240848c7c001000000c3f4|@17962,1,@3748,@8572|64,0,@9535 8572:D6,696|483b65187306ff5558ca09074150415141524c8b284d89ee4983fd057509488d64241058c210004d89f54983fe09754d488d6424084c8b7008ff7010488b5424084c89f0ff12488b442410482b0424488d642418711048b8d0c6d0f1c27f0000488b5d08ff234883c0014883f8017e03c2100048c7c001000000c210004d89ee4983fd07755c488d642408ff7008488b542408488b0424ff124c8b34244d8b36488d6424104e8d347501000000488b0424492bc6488d642408711048b8d0c6d0f1c27f0000488b5d08ff234883c0014883f8017e03c2100048c7c001000000c210004983fe037510488d642408ff7008ff3424e9290100004c8b7008ff7010ff7018ff70204983ee014903de537115488d64243848b8d0c6d0f1c27f0000488b5d08ff23488b5c2430ff15b10100004989c64983fe017563488b542448488b442410ff124c8b7424484c8b6c2440ff742420ff358001000041564155ff742438488b44243048c7c3010000004c8b4424584c8b4c24504c8b542428ff154f0100004989c64156488b542448488b442418ff1258488d642438c2100041ff36488b542450488b442418ff12ff742410ff742440f644240801754f4c8b742408498b064d89f641ff76084c8b7424684c8b6c246041564155488b5c24304c8b4424184c8b4c24584c8b542450e811feffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaa488d642410488b542448488b442418ff12584883c438c210004c8b34244983fe017e3f488b54241048b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d642408488b442410482b0424488d6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff23488d6424104883c0014883f8017e03c2100048c7c001000000c21000f400000000000000|@17963,1,@3749,@8574,@17965,@8573|88,0,@9475 189,0,@9475 278,0,@9475 562,0,@9557 589,0,@9475 646,0,@9475 8573:D3,424|483b65187305ff5558cd094c8b284d89ee4983fd05750848c7c001000000c34d89f54983fe09754c4c8b68104c3beb7f3b4989de4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34d89ee4983fd0775574c8b70084d8b364e8d2c75010000004c3beb7f3b4989de4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34983fe03754c4c8b68084c3beb7f3b4989de4d2bf5711048b8d0c6d0f1c27f0000488b5d08ff234983c601498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c34c8b68204d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000049891e41554156f644240801754a4c8b742408498b064d89f641ff76084c8b6c24084d89ee4983fd01750949c7c401000000eb0e4d89f6498b1ee87cfeffff4989c4415d4c8924244c896c2408483b65187303ff5558ebaf584883c408c3f400000000|@17966,1,@3751|59,0,@9475 155,0,@9475 237,0,@9475 8574:D4,1576|483b65187306ff5558ca09074989dd415041514152a8010f85a80200004c8b30ff70084d8b264d89e34983fc05751a488b54241048b8a0d5d0f1c27f0000ff12ff742408e9120500004d89dc4983fb010f859d0000004983ed01488b5c24084903dd7115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5424404c8b5424484c8b6c24384c8b642430415541544c89f04c8b4424284c8b4c2420ff124989c058488b7c24085e488d6424104c8b6c24284c8b6424204c8b5c24184c8b5424104c8b4c240848c7c3010000004c894c24084989f94c895424104989f24c895c24184c896424204c896c2428e90dffffff4d89e54983fc090f858c000000498b460841ff7610488b542418ff124c8b4424204c2b0424488d6424087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e974feffff4983fd070f859a00000041ff7608488b542418488b0424ff124c8b34244d8b36488d6424084e8d3475010000004c8b4424184d2bc67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e9d0fdffff41ff760841ff76104c8b7424104d89f54983fe017509488d64242858c228004c8b24244983ec014c8b7424184d03f441567115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b7424404983fe037505e91f0100004c8b6424304d89e64c3b6424107f05e90b0100004d89f64c2b7424107115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c60141554156eb09488d64241058c22800f6442408010f85820000004c8b742408498b064d89f641ff76084c8b304983fe03752f488d6424084d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c408eb39488b5c2408ff15150300004989c641f6c60175194d8b26415d4c8924244c896c2408483b65187303ff5558eb81488d64241849c7c601000000eb284d8d77f04c3b75107303ff55504d89f749c746f8010000004c8b2c244d892e488d6424084883c4084983fe01750949c7c603000000eb0749c7c6010000004983f6024983f6024983fe037519488b54242848b8a0d5d0f1c27f0000ff12ff3424e9d3000000488d642410ff34244c8b34244983fe017e3f488b54242048b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424204c2b0424488d6424087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e96dfbffff4c8b34244983fe017e3f488b54243048b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64244048b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424604c2b0424488d6424087115488d64243048b8d0c6d0f1c27f0000488b5d08ff234983c001488b4424105b488b7c2418488b7424104c8b6c24504c8b6424484c8b5c24404c8b5424384c8b4c24304c894c24304989f94c895424384989f24c895c24404c896424484c896c24504883c428e9a5faffff4c8b34244983fe017e3f488b54241848b8b0d7d0f1c27f0000ff124c8b2c244983ed027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234c892c24483b65187303ff5558ebb7488d6424084c8b4424484c2b4424087115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c00158488b7c24085e488d6424084c8b6c24304c8b6424284c8b5c24204c8b5424184c8b4c241048c7c3010000004c894c24104989f94c895424184989f24c895c24204c896424284c896c24304883c408e9def9fffff40000000000|@17964,1,@3750,@8573|54,0,@9535 107,0,@9475 294,0,@9475 458,0,@9475 618,0,@9475 685,0,@9475 942,0,@9535 985,0,@9557 1012,0,@9475 1069,0,@9475 1188,0,@9557 1215,0,@9475 1272,0,@9475 1388,0,@9557 1415,0,@9475 1468,0,@9475 8575:D3,112|483b65187305ff5558cd01a8017552ff30488b40084c8b34244d8b76084983fe037534e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408e99fffffff48c7c001000000c3f4000000000000|@9893,1,@3752| 8576:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3754| 8577:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3755| 8578:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3756| 8579:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3757| 8580:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3758| 8581:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3759,@5380|170,0,@9475 287,0,@17161 8582:D3,264|483b65187305ff5558cd09a8010f85e80000004c8b30488b40084d8b2e4d8b76084d8b264d8b1c244983fb010f85b90000004d8b6424084d8b5e084d8b56104d8d77e04c3b75107306ff5550ca093c4d89f749c746f80300000049895e104d89660849c706090000004d8d67e04c3b65107306ff5550ca096c4d89e749c74424f8030000004d895424104d895c24084d8934244d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b810a6d5f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3760|237,0,@17968 8583:D4,304|483b65187305ff5558cd094c8b304d89f54983fe097565ff7008488b4010e8ddffffff4989c64d8b2e4983fd0d75114c89f05b49c7c001000000ff2508010000498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018010000004c8b2c244c896810488d6424084c89700848c70017000000c34d89ee4983fd050f85890000004c8b70084c8b68104d8b364d8b65004c8b2b488b53084d8b24244d2bec711048b8d0c6d0f1c27f0000488b5d08ff234983c501498d47e0483b45107306ff5550ca04604989c748c740f80300000048c74010010000004c8968084c8930ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c34983fe037505488b4008c348b8e81fd5f1c27f0000488b5d08ff23f40000|@17163,1,@3761,@5380|170,0,@9475 287,0,@17161 8584:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@17972,1,@3762| 8585:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@17972,1,@3763| 8586:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3764| 8587:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3765| 8588:D4,440|483b65187306ff5558ca0901534150a8010f858c0100004c8b30ff700841ff3641ff76084c8b6c24084d89ee41ff75084d89f64d8b364d8b2e4983fd050f854b01000041ff760841ff7610488b54243848c7c003000000ff124989c641564c8b34244c8b6c24104d8975004c8b7424384c89f34c8b6c24084d8975004c8b7424184d8b2e4983fd0175094d89f64d8b5620eb0749c7c2010000004c8b7424284d8b76084d8b264d89e54983fc057515488d64244848b8a892d1f1c27f0000488b5d08ff234983fd01751c4d8b76104d8b2e4983fd0375094d8b7608498b06eb04498b4608eb074d8b7608498b0648ba2099d5f1c27f00004c8b4424404c8b4c2420ff15c90000004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e184c8b2c244d896e10488d64240849c746080100000049c706030000004156488b442430488b5c24404c8b442438e8a5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c440c3488d64243048b810cfd4f1c27f0000488b5d08ff23488d64241048c7c001000000c3f400000000000000|@10112,1,@3767,@8515|182,0,@10915 239,0,@17894 405,0,@16600 8589:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3769| 8590:D5,200|483b65187306ff5558ca0907415041514152f6c3010f858b0000004c8b33ff73086a016a014889c34c89f04989e04c8b4c24204c8b542418ff15aa000000ff3424488b4424106a016a01488b5c24284989e04c8b4c24384c8b542430e89fffffff488b1c24ff7424084883fb0175074c8b742418eb0e488b442418ff155f0000004989c64c8b6c24484d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d642410415e49c706010000004989460848c7c001000000c3f400000000000000|@17888,1,@3776,@8597,@8593| 8591:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3771| 8592:D3,56|483b65187305ff5558cd014c8b304c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@17977,1,@3772| 8593:D22,2744|488dbc24e8feffff483b7d187306ff5560ca0907534150415141524c8b702041ff364c8b704841ff364c8b304d8b7608ff7008ff70184c8b6828ff7040ff7050ff70584d8b364983fe017515488d64245848b80895d1f1c27f0000488b5d08ff234d8b3649c7c3030000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c2441544d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b14244d89d44d89530849ba98b476f1c27f00004d8913415349c7c2010000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d891341534d8d57e84c3b55107306ff5550ca00704d89d749c742f8020000004c8b1c244d89d94d895a0849bb00b576f1c27f00004d891a4d8d5fe04c3b5d107306ff5550ca00764d89df49c743f8030000004d89c94d894b104d89530849c7030300000041534d8b5e084d8b134983fa050f85c30300004d8b53084d8b5b104d89e44d89e141ff34244d89c94d8b214983c4027118488da4248000000048b8d0c6d0f1c27f0000488b5d08ff234d89c94d89214c8b24244d89224c8b6424084d89e04d89234d8b6d004983fd017518488da4248000000048b80895d1f1c27f0000488b5d08ff2341ff75004d8b7610498b46106a016a0154488b9c24980000004c8b8c24880000004c8b542438ff155d090000ff3424488b5c24104c8b742450498b066a016a01544c8b4424404c8b8c24a00000004c8b542450ff1528090000ff3424488b5c241049c7c5010000004d8d77f04c3b75107306ff5550ca08204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca08404d89ef49c745f80400000049bcb05fd1f1c27f00004d8965184c8b6424504d89e24d8965104c8b6424404d89e04d8965084d8975004d8d77e84c3b75107306ff5550ca08254d89f749c746f80200000049c74608010000004d892e4c8b6c2470498b45006a016a0141565448830424084c8b8c24c0000000ff1560080000ff3424488b5c24104c8b742478498b066a016a01544c8b4424704c8b8c24d00000004c8b942480000000ff1528080000488b1c24ff7424084883fb017507488b5c2418eb0e488b442418ff15000800004889c34883fb017507488b5c2430eb0e488b442430ff15dd0700004889c34883fb0175074c8b742448eb0e488b442448ff15ba0700004989c641564c8bac24b00000004d8b75004e8d3475010000004983fe01750f48bbc046d3f1c27f0000e9b40000004d89f44983c4064c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1ddc0600000f87380100004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f14d89ed498d7508488d7b0848d1e9f3a44983c6104d89f549d1ed42c6042b284d89f549d1ed42c6442b012949d1ee42c64433022e8063ffbf6a016a0148ba8023d5f1c27f000054ffb424f0000000488b8424d80000004c8b4424284c8b8c24a80000004c8b942498000000ff1597060000ff3424488b4424104d8d47d84c3b45107305ff5550cd014d89c749c740f8040000004c8bb424e00000004d8970184c8bb424a00000004d89f14d8970104c8bb424900000004d89f24d89700849be60b676f1c27f00004d8930ffb424f0000000488b9c24e0000000ff15210600004989c641564c8bb424f80000004d8b7668eb2d488da424f000000048b8f8c7d0f1c27f0000488b5d08ff23488d64247848b810cfd4f1c27f0000488b5d08ff2341f6c60175454d8b264d8b6e084d8b1c244c3b1dc105000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe01750f49be2028d1f1c27f0000e95c0400004d8b364d8b2e4c3b2d5d05000075104d8b76104983fe030f849c020000eb18488da4241001000048b87810d1f1c27f0000488b5d08ff234d8d77d84c3b75107303ff55504d89f749c746f80400000049bd985fd1f1c27f00004d896e184c8bac24900000004d896e1049c746080100000049c7060300000041564c8b7424104c89f34983fe0175074c8b742428eb0e488b442428ff15c80400004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084983fd01750b415e4881c480000000eb3a4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004881c48000000041564c8b7424204d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff15e50300004989c64c8b5c24304d8b2b4d89ec4d89db4d89db4d8923498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424504c89701048c74008030000004c8b34244c8930488d642408ff15800300004989c64156488b54247048c7c003000000ff124989c64c8b6c24084d8b65104d8b2c244983fd050f85a20000004d8b6c24084d8b6424104d89750049bd6086d1f1c27f00004d892c244d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b24244d896518488d6424084d89751049c745080100000049c74500030000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4c8b6c24784d8975004c8bb424800000004d89750848c7c0010000004881c488000000c3488da4249000000048b810cfd4f1c27f0000488b5d08ff234d8d77d84c3b75107303ff55504d89f749c746f80400000049bd985fd1f1c27f00004d896e184c8bac24900000004d896e1049c746080100000049c7060300000041564c8b7424104c89f34983fe0175074c8b742428eb0e488b442428ff152e0200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084983fd01750b415e4881c480000000eb3a4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f0000004881c48000000041564c8b7424204d8b3648c7c00100000041f6c60175444d8b264d8b6e084d8b1c244d8d67e84c3b65107306ff5550ca01684d89e749c74424f80200000049894424084d891c244c89e04d89ee483b65187306ff5558ca0140ebb6ff154b0100004989c64c8b5c24304d8b2b4d89ec4d89db4d89db4d8923498d47d0483b45107306ff5550ca00604989c748c740f8050000004c8968204c8970184c8b7424504c89701048c74008030000004c8b34244c8930488d642408ff15e60000004989c6e979fdffff41f6c60175454d8b264d8b6e084d8b1c244c3b1dbe00000075204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0040ebb549c7c6010000004983fe017518488da4241001000048b8b82cd1f1c27f0000488b5d08ff234d8b364d8b2e4c3b2d5100000075134d8b76104983fe030f854efbffffe9cbfdffff488da4241001000048b87810d1f1c27f0000488b5d08ff23f4000000ffffffffffffff01|@17979,1,@3778,@4647,@4647,@8599,@7935,@8606,@8607,@7935,@8609,@4647,@4647,@8547,@8510,@8610,@8611,@8598,@8126,@8047,@8159,@8499|83,0,@10926 187,0,@8594 284,0,@8595 399,0,@9475 457,0,@10926 639,0,@10542 919,0,@14066 1118,0,@17186 1247,0,@8596 1308,0,@9487 1329,0,@16600 1433,0,@10158 1487,0,@9991 1527,0,@10541 1973,0,@10839 2129,0,@16600 2169,0,@10541 2660,0,@10198 2718,0,@9991 8594:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@17978,1,@3773|42,0,@9475 8595:D4,304|483b65187305ff5558cd054c8b304c8b60084c8b68104983fc017d1048b8c0d2d4f1c27f0000488b5d08ff234983fc017e784983ec02711048b8d0c6d0f1c27f0000488b5d08ff234983fc01754c4983fd0175464983fe017d1048b89086d1f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700848c70005000000488b5a08ff25ae00000048b80887d1f1c27f0000488b5d08ff234983fd03753d4983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c34983fe017d1048b850d3d4f1c27f0000488b5d08ff23498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f40000000000|@16623,1,@3774,@7503|30,0,@16618 58,0,@9475 92,0,@10841 156,0,@10844 184,0,@16621 245,0,@16621 8596:D4,216|483b65187305ff5558cd0d4c8b721841f6c6010f85a90000004d8b264d8b6e084883f801756c4d8b7424084d8b6e084d8b6d004983fd05755549bd2099d5f1c27f00004c8b62084c8b42104d89f14889d84c89e34c89ea49c7c201000000ff158c0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3498b06c34989c44983ec02711048b8d0c6d0f1c27f0000488b5d08ff234c89e04d89ee483b65187306ff5558ca0d40e94dffffff48b8c85dd1f1c27f0000488b5d08ff23f40000000000|@17893,1,@3775,@8515|59,0,@17894 157,0,@9475 196,0,@10528 8597:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3777| 8598:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3792| 8599:D10,704|483b65187305ff5558cd014989c54d8b75184c89f04983fe010f857301000041ff750041ff75084d8b751041ff75204c3b35d20200007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb004156ff157f0200004989c641564c8b7424184c89f34983fe017d15488d64242848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15420200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d5fe0483b5d107306ff5550ca00404989df48c743f80300000049bd98a8d5f1c27f00004c896b104c89730848c7030300000048c7c001000000ff15900100004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c89701048c740080100000048c7000d000000c341ff750041ff75084d8b751041ff75204c3b353f0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb004156ff15ec0000004989c641564c8b7424184c89f34983fe017d15488d64242848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15af0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3f4000000000000|@17985,1,@3780,@8602,@8603,@9493,@8604,@8605,@8601,@9493|77,0,@9493 111,0,@17022 155,0,@10101 316,0,@17980 448,0,@9493 482,0,@17022 526,0,@10101 8600:D3,32|483b65187305ff5558cd0148b8a8a8d5f1c27f0000488b5d08ff23f400000000|@17984,1,@3779|13,0,@17981 8601:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@3785|89,0,@14034 8602:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3781|32,0,@9475 87,0,@11193 8603:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@3782|89,0,@14034 8604:D4,208|483b65187305ff5558cd094883f80175684d8d77d84c3b75107305ff5550cd084d89f749c746f80400000049c746180100000049895e1049bd28dbd0f1c27f00004d896e0849bd68c3d0f0c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3ff30488b40084c8b34244d8b364c3b355b000000750a488d642408e967ffffffe862ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f40000|@11088,1,@3783,@4662|57,0,@9594 71,0,@4662 8605:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3784|32,0,@9475 87,0,@11193 8606:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3786| 8607:D6,320|483b65187305ff5558cd014989c541ff750041ff75084d8b7510498b451841ff75204c3b353f0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb004156ff15ec0000004989c641564c8b7424184c89f34983fe017d15488d64242848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15af0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424104d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424184c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3f4000000000000|@13717,1,@3787,@8608,@6242,@9493|64,0,@9493 98,0,@17022 142,0,@10101 8608:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@3788|32,0,@9475 87,0,@11193 8609:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3789| 8610:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3790| 8611:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3791| 8612:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab8ced4f1c27f000058ff2248c7c001000000c3f4|@10943,1,@3827|28,0,@16598 8613:D17,1840|483b65187305ff5558cd014c8b304c8d2d080000004f8d6cb5fc41ffe5e9f3000000909090e9f8000000909090e905010000909090e913010000909090e923010000909090e943010000909090e944010000909090e93c010000909090e934010000909090e92c010000909090e92c010000909090e92f010000909090e932010000909090e943010000909090e904010000909090e94a010000909090e9f4000000909090e945010000909090e9e4000000909090e940010000909090e9d4000000909090e943010000909090e950010000909090e9bc000000909090e9b4000000909090e941010000909090e9a4000000909090e99c000000909090e934010000909090e936010000909090e9840000009090904c8b7008498b06ff258e0600004c8b7008ff70104c89f0e8cffeffff58e9c9feffff4c8b7008498b0641ff7608e8b9feffff58e9b3feffff4c8b7008498b0641ff7608e8a3feffffff3424e98f0500004c8b7008498b0641ff760841ff7610e887feffff488b0424e87efeffff488d64240858e973feffff488b4010e96afeffff48c7c001000000c34c8b70084156e9100500004c8b70104156e9ca040000ff7008488b0424ff15e70500004989c641566a01e93c0300004c8b7008ff70104c89f0e824feffffff3424e9ea0200004c8b70184156e9a30200004c8b70104156e9610200004c8b68084d8b750041ff75084156e9140200004c8b7008ff70104c89f0e8e4fdffff58e9defdffff488b4008e9d5fdffff4c8b70084156e9b4010000ff7008ff34246a01eb12ff7008488b4010e8b4fdffff58e9aefdfffff64424080175494c8b6c24084d8b75004d89ed41ff75084d8b7618498b064c8b7424084c89f34983fe0175054989c4eb09ff15170500004989c4415d4c8924244c896c2408483b65187303ff5558ebb0415e41566a01f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff15cf0400004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e4156f60424010f85b60000004c8b34244d8b2e4d89f641ff76084d8b75004d8b6d08498b45004d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156ff354d040000ff153f040000488b1424ff152d0400004889c3488d64240848bad88ed1f1c27f0000488b0424ff15090400004989c6488d6424084983fe017415488d64242848b8d0a9d5f1c27f0000488b5d08ff23415d4c892c24483b65187303ff5558e940ffffff488d642418ff3424f604240175294c8b2c244d8b75004d89ed41ff7508498b4608e834fcffff415d4c892c24483b65187303ff5558ebd1488d64241048c7c001000000c3f604240175244c8b3424498b064d89f641ff7608e8fdfbffff415d4c892c24483b65187303ff5558ebd6488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e8c2fbffff415d4c892c24483b65187303ff5558ebd2488d64240858ff2515030000f604240175244c8b3424498b064d89f641ff7608e88cfbffff415d4c892c24483b65187303ff5558ebd6488d64240848c7c001000000c3f604240175294c8b2c244d8b75004d89ed41ff7508498b4618e850fbffff415d4c892c24483b65187303ff5558ebd1488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e815fbffff415d4c892c24483b65187303ff5558ebd2488d64241048c7c001000000c3f64424080175334c8b742408498b064d89f641ff7608488b5c2408ff153e0200004989c4415d4c8924244c896c2408483b65187303ff5558ebc6415e4156f60424010f85b60000004c8b34244d8b2e4d89f641ff76084d8b75004d8b6d08498b45004d8b2e4d8b66084d8d77e04c3b75107306ff5550ca01304d89f749c746f8030000004d8966104d896e0849c7060d0000004156ff35bc010000ff15ae010000488b1424ff159c0100004889c3488d64240848bad88ed1f1c27f0000488b0424ff15780100004989c6488d6424084983fe017415488d64242048b8d0a9d5f1c27f0000488b5d08ff23415d4c892c24483b65187303ff5558e940ffffff488d642410ff3424f604240175174c8b2c244d8b75004d89ed41ff75084d8b76084156eb0d488d64241048c7c001000000c3f604240175294c8b2c244d8b75004d89ed41ff7508498b4608e8a9f9ffff415d4c892c24483b65187303ff5558ebd1488d642408415d4c892c24483b65187303ff5558eb91f604240175284c8b2c244d8b75004d89ed41ff7508498b06e865f9ffff415d4c892c24483b65187303ff5558ebd2488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e82af9ffff415d4c892c24483b65187303ff5558ebd2488d64240848c7c001000000c3f604240175284c8b2c244d8b75004d89ed41ff7508498b06e8eff8ffff415d4c892c24483b65187303ff5558ebd2488d64241048c7c001000000c3f4|@17991,1,@3794,@5268,@8615,@8630,@17997,@8631,@8642,@5268,@8615,@8630,@17997,@8631,@8643,@8644,@8614|861,0,@10895 900,0,@17987 1470,0,@10895 1509,0,@17987 8614:D3,64|483b65187305ff5558cd01a8017523ff30488b4008e8e6ffffff4c8b3424498b06488d64240848ba60aad5f1c27f0000ff2248c7c001000000c3f40000000000|@10943,1,@3825|40,0,@17990 8615:D13,2440|483b65187305ff5558cd0552a801750a4c8b30ff70084156eb10488d64240848b8a854d1f1c27f0000c34c8b34244d8b264d89e54983fc0b0f85c00000004d89f6498b5e084d89f64d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15660900004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849bee8d576f1c27f00004c89336a016a01488b4424104989e0ff151d090000415d488d6424104c892c24483b65187303ff5558e94effffff488d64241848b81890d1f1c27f0000488b5d08ff234d89f6488d642408e9ac0000004d89f64983fd0d0f85970000004d89f64d8b6e084d8b6d004d8b5d004d89dc4983fb09755d4c8b6c2410498b55084c89f048c7c301000000ff124989c4488d6424084d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b000000eb0e4983fc03750a4d89f6488d642408eb1a4c892c24483b65187303ff5558e988feffff4d89f6488d6424084d8b264d89e54983fc07751641ff760841ff76106a016a014c8b742410e9520500004d89ec4983fd05752b41ff760841ff76104c8b742418498b5e08488b442410ff15e707000049c7c6010000004989c5e9690300004d89e54983fc0b0f85a200000041ff760841ff761041ff761841ff76204c8b742408498b5e184c8b334d8b364983fe03751149c7c0010000004c8b742418e948010000488d64243049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3488d6424104d89ee4983fe0d756749bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c349bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c341f6c60175364d8b66084d89c54983c5027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89e64d89e8483b65187306ff5558ca0841ebc44c8b7424284d8b4e08488b442420ff15f50500004989c649c7c5010000004d89f441f6c40175374d8b5424084d89eb4983c3027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc349c7c4010000004c8b5c242041f6c30175364d8b4b084d89e24983c2027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d4483b65187306ff5558ca0078ebc44d3bec0f8587000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c8930488b5c2428ff15200500004989c6498d47d0483b45107306ff5550ca00404989c748c740f8050000004c8b2c244c896820488d6424084c8b2c244c896818488d6424084c8b2c244c896810488d6424104c89700848c7000b0000004883c410c3488d64243049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c341f6c50175364d8b5d084d89f44983c4027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0160ebc449c7c5010000004c8b64241041f6c40175374d8b5424084d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0170ebc34d3bf50f85bb0000006a016a014889e3ff15bc0300004c8b3424ff742408488b542430498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424204c8930e8c3f9ffff4989c64156488b542438498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c8970084c8b7424204c8930e889f9ffff4989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64243048c700050000004883c410c3488d64242049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34d8b2e4983fd010f85b80000004d8b6e084d8b76104c892c244c89742408488d642408415e4983fe03752e4c8b742418498b5e08488b4424104c8b442408ff15560200004989c6415649c7c6010000004c8b2c24e988000000488d64242049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c34d8b6e084d8b6d004d89ee483b65187306ff5558ca0040e91fffffff41f6c50175364d8b5d084d89f44983c4027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc449c7c5010000004c8b64241841f6c40175374d8b5424084d89eb4983c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0070ebc34d3bf50f858d000000488b442410ff15180100004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8b2c244c896808488d6424084c8930488b5c2418ff15d70000004889c3488b442408ff15c10000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424104c89700848c700070000004883c410c3488d64242849bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7000d000000c3f400|@17992,1,@3797,@8619,@8620,@8623,@8624,@8202,@8620,@8627,@8617,@5234,@5292|33,0,@10468 166,0,@8616 227,0,@10901 586,0,@10468 703,0,@10468 806,0,@10468 933,0,@9475 1027,0,@9475 1099,0,@9475 1284,0,@10468 1411,0,@9475 1484,0,@9475 1721,0,@10468 1918,0,@10468 2073,0,@9475 2146,0,@9475 2337,0,@10468 8616:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3795| 8617:D5,592|483b65187305ff5558cd0953a801750a4c8b30ff70084156eb0d488d64240848c7c001000000c34c8b2c244d8b65004d89e64983fc0b0f85c00000004d89ed498b5d084d89ed4d8b75184d8b5e184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff15f00100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be30d976f1c27f00004c89336a016a01488b4424104989e0ff15a7010000415d488d6424104c892c24483b65187303ff5558e94dffffff488d64241848b81890d1f1c27f0000488b5d08ff234d89ed488d642408e9a90000004d89ed4983fe0d0f85940000004d89ee4d8b6e084d8b6d004d8b5d004d89dc4983fb09755a488b5424104c89f048c7c301000000ff124989c4488d6424084d8b34244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049c74520010000004d8965184d89751049c745080100000049c745000b000000eb0e4983fc03750a4d89f5488d642408eb1a4c892c24483b65187303ff5558e98afeffff4d89ed488d6424084d8b75004983fe05754b4d8b75084d8b65104d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017507585be9f2fdffff41ff36488b442408488b5c2410e8e0fdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3f4|@12733,1,@3809,@5234,@5292|164,0,@8618 225,0,@10901 8618:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3796| 8619:D3,136|483b65187305ff5558cd09a801756ef6c30175694c8b30488b40084c8b23488b5b084d8b2e4d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d8966084d892e4156e8b2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@12767,1,@3798| 8620:D5,160|483b65187305ff5558cd095053f6442408017573488b4424084c8b304983fe01750d488d64241048c7c001000000c3ff3424ff1588000000488b1424ff124989c64156488b442418ff156a000000488b5c2410e8a8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241048b8f0aad5f1c27f0000488b5d08ff23f4000000|@17995,1,@3799,@8622,@8621|142,0,@17993 8621:D3,112|483b65187305ff5558cd01a80175544c8b30488b400841f6c601753741ff36e8dcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8504ad1f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3801|85,0,@10398 8622:D3,112|483b65187305ff5558cd01a80175554c8b30488b400841f6c601753841ff7608e8dbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e049d1f1c27f0000488b5d08ff2348c7c001000000c3f4000000|@10112,1,@3800|86,0,@10395 8623:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3802| 8624:D6,760|483b65187306ff5558ca0901534150a801750a4c8b30ff70084156eb0d488d64241048c7c001000000c34c8b34244d8b264d89e54983fc0b0f85c00000004d89f6498b5e084d89f64d8b6e184d8b5d184d89dc4d8b5b084d8b1b4983fb050f858d0000004d89e64d8b76084d8b2e4983fd057568498b460841ff7610ff159e0200004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be60e076f1c27f00004c89336a016a01488b4424104989e0ff1555020000415d488d6424104c892c24483b65187303ff5558e94effffff488d64242048b81890d1f1c27f0000488b5d08ff234d89f6488d642408e9a80000004d89f64983fd0d0f85930000004d89f64d8b6e084d8b6d004d8b5d004d89dc4983fb097559488b5424184c89f048c7c301000000ff124989c4488d6424084d8b2c244d8d77d04c3b75107306ff5550ca00304d89f749c746f80500000049c74620010000004d8966184d896e1049c746080100000049c7060b000000eb0e4983fc03750a4d89f6488d642408eb1a4c892c24483b65187303ff5558e98cfeffff4d89f6488d6424084d8b2e4983fd07750e498b46084c8b7424084989c5eb6549c7c6010000004983fe01751258488b5c24084158488d642408e924feffff41ff36488b442408488b5c24184c8b442410e80dfeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c34983fe0175184983fd01750949c7c603000000eb0749c7c601000000eb784d8b0e4d8b660841f6c50175644d8b55004d8b5d084d8b014d8b0a4d3bc17502eb2f4d8b104e8d145501000000498b394889f9488d3c7d010000004c3bd77528498d7008498d7908483bc9f3a67402eb174d89dd4d89e6483b65187306ff5558ca0160e97affffff49c7c601000000eb0749c7c6010000004983fe037529ff154c0000004989c54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000e9d1fefffff400000000|@12733,1,@3804,@8626,@5234,@5292|166,0,@8625 227,0,@10901 8625:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3803| 8626:D3,88|483b65187305ff5558cd01a801753f4c8b30488b400841ff7608e8e1ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@3805| 8627:D6,552|483b65187306ff5558ca09035341504151a801750a4c8b30ff70084156eb0d488d64241848c7c001000000c3488b04244c8b284d89ee4983fd0b0f85c20000004889c0488b58084889c04c8b70184d8b66184d89e54d8b6424084d8b24244983fc050f858d0000004d89ee4d8b76084d8b2e4983fd057568498b460841ff7610ff15ca0100004989c6498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be08e476f1c27f00004c89336a016a01488b4424104989e0ff1581010000415d488d6424104c892c24483b65187303ff5558e94cffffff488d64242848b81890d1f1c27f0000488b5d08ff234889c0488d642408e9a40000004889c04983fe0d0f858f0000004889c04c8b70084d8b2e4d8b65004d89e64983fc097556488b54241048c7c301000000ff124989c5488d6424084d8b7500498d47d0483b45107306ff5550ca00604989c748c740f80500000048c74020010000004c8968184c89701048c740080100000048c7000b000000eb0e4983fe03750a4889c0488d642408eb1a4c892c24483b65187303ff5558e98efeffff4889c0488d642408488b5c24184c8b442410ff158a0000004989c64983fe01751758488b5c24104c8b4424084159488d642410e92afeffff41ff36488b442408488b5c24204c8b4424184c8b4c2410e80efeffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c3f4000000000000|@12733,1,@3807,@8629,@5234,@5292|170,0,@8628 231,0,@10901 8628:D3,152|483b65187305ff5558cd054c8b720841f6c60175474d8b264d8b6e084d8b14244c8b184d8b124d3bda75204d8d77f04c3b75107306ff5550ca00104d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0140ebb349c7c6010000004983fe01750848c7c001000000c34d8b364d8b7608498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@10900,1,@3806| 8629:D3,384|483b65187306ff5558ca09014c8b304983fe0b0f85e20000004c8b70084c8b68184d8b65184c8b6b084d89eb4d8b6d004983fd0375514d8b6c24084d89ea4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd0375294d8b6b084d89d44d8b6424084d3bec750949c7c503000000eb0749c7c5010000004983fd037565eb684d89dd4d8b1b4983fb01754a4d8b5424084d89d34d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375234d8b6d184d89dc4d8b6424184d3bec750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd037405e98600000049c7c5010000004d89f4eb0848c7c001000000c341f6c40175324d8b5424084d89eb4983c302711048b8d0c6d0f1c27f0000488b5d08ff234d89d44d89dd483b65187306ff5558ca0071ebc84d3be8750949c7c503000000eb0749c7c5010000004983fd03751f498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f40000|@17996,1,@3808|281,0,@9475 8630:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@3810| 8631:D9,168|483b65187305ff5558cd0953ff70184c8b70304983fe017515488d64241048b80895d1f1c27f0000488b5d08ff234d8b36498b06488b1c24ff15aa000000ff159c0000004989c641566a016a01488b44241848bbd8abd5f1c27f00004989e0ff1573000000488d64240858ff155f000000488b1c244c8b442410ff1548000000488d6424104c8b2c244d89ee4983fd017506488d642408c34c89f3488d642408ff251a000000f400|@18002,1,@3814,@8636,@8637,@8316,@5234,@8639,@8633|32,0,@10926 84,0,@17998 8632:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@17999,1,@3811| 8633:D8,248|483b65187305ff5558cd0953a8010f85d3000000ff30ff70086a016a01488b44242048bb68acd5f1c27f00004989e0ff15fb000000ff3424488b442410ff15e50000004989c6415648bad88ed1f1c27f0000488b442408488b5c2428ff15be0000004989c64983fe017432488d6424206a016a01488b44242048bb78acd5f1c27f00004989e0ff158c000000488d64240858ff15780000004989c6eb06415e4883c4184156488b442408488b5c2418e84cffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c410c3488d64240848c7c001000000c3f4000000|@10112,1,@3821,@5239,@5234,@5268,@5239,@5234|36,0,@18000 74,0,@10895 123,0,@18001 8634:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@3812| 8635:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@10823,1,@3813| 8636:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3815| 8637:D4,400|483b65187306ff5558ca09014150a801751ff6c30175134c8b28ff70084c8b23ff73084c8b742410eb14488d642408eb05488d64240848c7c001000000c341f6c60175474d8b164d8b5e084d8b0a4d8b094d8b45004d3bc875204d8d77f04c3b75107306ff5550ca00344d89f749c746f8010000004d8916eb184d89de483b65187306ff5558ca0070ebb349c7c6010000006a016a0141f6c601755541ff364c8b342441ff76084c8b3424498b1e4883fb0175054d89e6eb0c4c89e0ff15e60000004989c64c8b2c244d897500488d6424084c8b34244d8b2e4c896c24084d89f64d8b7608488d6424084c89742408eb2c4d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264c892c244c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b442410488b5c24084c8b442418e8a7feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3f400000000000000|@12767,1,@3816,@8638| 8638:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3817| 8639:D5,144|483b65187305ff5558cd01504c8b34244c89f04983fe01750d488d64240848c7c001000000c34889c04c8b304983fe01750d488d64240848c7c001000000c3ff156b0000004989c64156488b442408ff1553000000e8a6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3f4000000000000|@18003,1,@3818,@8641,@8640| 8640:D3,112|483b65187305ff5558cd01a80175544c8b30488b400841f6c601753741ff36e8dcffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8504ad1f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@10112,1,@3820|85,0,@10398 8641:D3,112|483b65187305ff5558cd01a80175554c8b30488b400841f6c601753841ff7608e8dbffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8e049d1f1c27f0000488b5d08ff2348c7c001000000c3f4000000|@10112,1,@3819|86,0,@10395 8642:D3,64|483b65187305ff5558cd01a8017523ff30488b4008e8e6ffffff4c8b3424498b06488d64240848ba60aad5f1c27f0000ff2248c7c001000000c3f40000000000|@10943,1,@3822|40,0,@17990 8643:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3823| 8644:D3,96|483b65187305ff5558cd01a80175424c8b30488b40084d8b761041ff36e8deffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@3824| 8645:D3,48|483b65187305ff5558cd01a8017518ff30488b4008e8e6ffffff48bab8ced4f1c27f000058ff2248c7c001000000c3f4|@10943,1,@3826|28,0,@16598 8646:D6,1528|483b65187306ff5558ca0901534d8b304d8b68084d8d5fe84c3b5d107306ff5550ca01604d89df49c743f8020000004c8b14244d89d44d89530849bac8f676f1c27f00004d89134d8d4fe04c3b4d107306ff5550ca01784d89cf49c741f8030000004d8959104d8969084d89314d8d6fe84c3b6d107306ff5550ca01124d89ef49c745f8020000004989450849be98f876f1c27f00004d8975004d89e44d8b7424104d89e44d8b5c24484d8b364d8b1b4983fb5374054d89deeb004d89f34c8d15080000004f8d549afc41ffe2e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c303000000eb0749c7c301000000eb5849c7c303000000eb4f49c7c303000000eb4649c7c303000000eb3d49c7c303000000eb3449c7c303000000eb2b49c7c303000000eb2249c7c303000000eb1949c7c303000000eb1049c7c303000000eb0749c7c3030000004983fb037502eb0e4983fe477502eb064983fe6d7502eb0e4983fe677502eb064983fe2b75506a016a0141554d89ca4989c14d89e048b8d8add5f1c27f0000488d5c2408ff1579020000415e415d488d642408498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c34d89e44d89e641ff7424304d89f64d8b5e504d89f64d8b667841ff3341ff34246a016a014c89f35041564c89e849c7c0010000004c8d542410ff1506020000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c706010000004156488b5c24204c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc61744a4889db4889db4d8b364d8b6d004983fd5374054d89eeeb004983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe03751248b838dad0f1c27f0000ff1527010000eb0049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4c8b6c24184d8b65284d89ed4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b14244d895520488d6424084d895d184c8b1c244d895d10488d6424084d8965084c8b24244d896500488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@18219,1,@4057,@8661,@8756,@8650|60,0,@8647 142,0,@8648 916,0,@18006 1243,0,@9584 8647:D5,408|483b65187305ff5558cd05524c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b870add5f1c27f000048bb4830d1f1c27f0000ff152a010000ff151c0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1249bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd05498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@18005,1,@3828,@5333,@5030|118,0,@18004 128,0,@10221 310,0,@10468 8648:D3,1536|483b65187305ff5558cd054883f82f7505e9dd0500004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037505e9540300004883f8237502eb0e4883f80d7502eb064883f8317505e9390300004883f8417505e92e0300004883f8437505e9230300004883f83f7505e9180300004883f84d7505e90d0300004883f8450f84030300004883f8277505e9f60200004883f80f7505e9eb0200004881f8810000007505e9dd0200004883f8337505e9d20200004883f8550f84c80200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb164883f8677502eb0e4883f82b7502eb064883f86d7502eb08488b5208ff22eb0048c7c003000000c3f400000000|@10371,1,@3829| 8649:D3,752|483b65187305ff5558cd014989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb0e4883f8477502eb064883f86d750848c7c003000000c34883f867750848c7c003000000c34883f82b750848c7c003000000c348c7c001000000c3f4|@10371,1,@3830| 8650:D9,1928|483b65187306ff5558ca0907534150415141524c8b6c24104d8b75104d89ed4d8b65484d8b364d8b24244983fc5374054d89e6eb004d89ed4d8b65284d89ed4c89eb41ff75304889db4c8b53504889db4c8b6b704889db4c8b5b7841ff324d8b242441ff334d8b5d004d8d6fd04c3b6d107306ff5550ca08584d89ef49c745f8050000004c8b14244d8955204d895d184c8b5c24084d895d104d8965084c8b6424104d89650041554983fe617505e9a60600004983fe010f849c0600004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c503000000eb0749c7c501000000eb5849c7c503000000eb4f49c7c503000000eb4649c7c503000000eb3d49c7c503000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004983fd037507488d642408eb184983fe477507488d642408eb0b4983fe6d7507488d642408eb1c4983fe677507488d642408eb0f4983fe2b0f8584030000488d6424086a016a014983fe470f859b00000048bae8add5f1c27f00004c8b4424504989de4989d94c89f3488b4424284c8b542430ff15f00300004989c649c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48d4d5f1c27f00004c892c244c89742408e9130200004983fe6d0f859b00000048bae8add5f1c27f00004c8b4424504989de4989d94c89f3488b4424284c8b542430ff15430300004989c649c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48d4d5f1c27f00004c892c244c89742408e96e0100004983fe6775344c8b4424504989de4989d94c89f3488b442428ff15a90200004989c549be58d4d5f1c27f00004c892c244c89742408e9340100004983fe2b75394c8b4424504989de4989d94c89f3488b4424284c8b542430ff15620200004989c549be90d4d5f1c27f00004c892c244c89742408e9f50000006a016a01488b4424604989deff742440534c89f349c7c0030000004c8b4c24484c8d542410ff1514020000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c7060100000049c7c5010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000500000049be48d4d5f1c27f00004c892c244c89742408ff3424488b4424106a016a014c8b7424684156488d5c24084c8b4424584c8b4c24504c8b542448e876f9ffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424184d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642420415d4d8965004d89750848c7c001000000c2080048b838dad0f1c27f0000ff156f0000004c8b6c243849c74500010000004c8b34244d897508488d64240848c7c0010000004883c438c208004c8b6c243849c74500010000004c8b34244d897508488d64240848c7c0010000004883c438c20800f4000000000000|@18220,1,@4059,@8661,@8756,@8879,@8877,@8651,@8651|946,0,@18007 1077,0,@18214 1111,0,@18007 1242,0,@18214 1300,0,@18215 1363,0,@18217 1613,0,@18214 1827,0,@9584 8651:D12,2024|488dbc2458ffffff483b7d187306ff5560ca0d075250534150415141524c8b74242041ff364c8b7424204c89f341ff76304889db4c8b63504d89e34889db4c8b73784d89f541ff342441ff364889db4c8b53104d89d64889db4c8b4b484d89cc4d8b124d8b094983f95374054d89caeb004983fa6d0f858c0200004889d84889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424384889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff152b060000ff151d0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15550500004c8b6c24384d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e99d020000488d64241848c7c047000000ff150f0500004c8b6c24204d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff364c8b6c24404d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff15bd040000ff7424084c8b6c24184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849bd101277f1c27f00004d892e4156498d47e0483b45107303ff55504989c748c740f8030000004c8b7424284c8970104c8b34244c8970084c8b7424084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424684d89700849be781277f1c27f00004d89304c8bb42480000000498b5610488b5c24704c8b4c24604c8b542458ff124989c6415648c7c035000000488b5c2478ff15e00300004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24584d896e0849bdc81277f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24304c8968104c8b6c24084c8968084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424704d89700849be201377f1c27f00004d89304c8bb42488000000498b5610488b5c24784c8b4c24684c8b542460ff124989c64156488b9c24800000004c8b6b284889db4c8b737041ff750041ff3648c7c01f000000ff15f80200004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24584d896e204c8b2c244d896e18488d6424084c8b6c24584d896e104c8b2c244d896e08488d6424084c8b6c24584d892e498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8970184c8b7424084c8970104c8b34244c897008488da4249800000048c70003000000c36a016a014c8bb424880000004d8b7608ffb424800000004156ff74247048c7c001000000488d5c24184c8b8424880000004c8b8c24900000004c8b942480000000ff151d020000ff3424ff74241048c7c00500000048bb58aed5f1c27f00004c8b842488000000ff15ef0100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b6c24204c8b7424284d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424484d8956204d895e184c8b5c24504d895e104d8966084c8b6424584d892649c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c24498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c700050000004881c498000000c3f4000000|@18012,1,@3836,@8658,@8662,@8657,@8657,@5240,@8657,@5027,@5031,@5030|509,0,@10220 519,0,@10221 694,0,@10223 717,0,@10226 918,0,@8652 1017,0,@8653 1124,0,@8654 1220,0,@8655 1531,0,@18010 8652:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@3831| 8653:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8357406488b5208ff2248c7c003000000c3f4|@10371,1,@3832| 8654:D3,48|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b742408498b560858488d642408ff22f40000|@18009,1,@3833| 8655:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@10371,1,@3834| 8656:D3,40|483b65187305ff5558cd014883f86b750848c7c003000000c348c7c001000000c3f4000000000000|@18011,1,@3835| 8657:D8,704|483b65187305ff5558cd09534c8b24244d8b5c24104d89de4d89e44d8b5424484d89d54d8b1b4d8b124983fa5374054d89d3eb004c3bd80f85720200004c89e04889c04d8b65004983fc537415488d64240849c745005300000048c7c001000000c34d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1517010000ff15090100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f00004889c0488d642408ff2539000000ff152b0000005bff251c000000f4000000|@18093,1,@3920,@8661,@8660,@5027,@5031,@5030|457,0,@10220 467,0,@10221 642,0,@10223 665,0,@10226 8658:D7,776|483b65187306ff5558ca09014889da5041504c8b34244d8b5e104d89dd4d89f64d8b56484d89d44d8b1b4d8b124983fa5374054d89d3eb004c3b5c24080f85760200004c89f04889c04d8b34244983fe537412488d64241049c7042453000000e94c0200004d8b75004983fe010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f0000ff157c000000488d64241048c7c003000000c34d89e6498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe03751c488b442408488b1c24ff1538000000488d64241048c7c003000000c3488d64241048c7c001000000c3f40000000000|@18013,1,@3837,@8659,@5027,@5031,@5030|461,0,@10220 471,0,@10221 646,0,@10223 670,0,@10226 8659:D8,664|483b65187305ff5558cd0953ff15be020000488b1c24ff15ac020000488b04244c8b70104889c04c8b68484d8b65004983fc537415488d64240849c745005300000048c7c001000000c34d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f7000000ff15e90000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f00004889c0488d642408ff2519000000f4|@18022,1,@3838,@5027,@5031,@5030,@8661,@8660|433,0,@10220 443,0,@10221 618,0,@10223 641,0,@10226 8660:D3,1320|483b65187305ff5558cd014c8d35080000004d8d7486fc41ffe6e91b020000909090e91e020000909090e921020000909090e924020000909090e927020000909090e92a020000909090e92d020000909090e930020000909090e933020000909090e936020000909090e939020000909090e93c020000909090e93f020000909090e942020000909090e945020000909090e948020000909090e94b020000909090e94e020000909090e951020000909090e954020000909090e957020000909090e95a020000909090e95d020000909090e960020000909090e963020000909090e966020000909090e969020000909090e96c020000909090e96f020000909090e972020000909090e975020000909090e978020000909090e97b020000909090e97e020000909090e981020000909090e984020000909090e987020000909090e98a020000909090e98d020000909090e990020000909090e993020000909090e996020000909090e999020000909090e99c020000909090e99f020000909090e9a2020000909090e9a5020000909090e9a8020000909090e9ab020000909090e9ae020000909090e9b1020000909090e9b4020000909090e9b7020000909090e9ba020000909090e9bd020000909090e9c0020000909090e9c3020000909090e9c6020000909090e9c9020000909090e9cc020000909090e9cf020000909090e9d2020000909090e9d5020000909090e9d8020000909090e9db020000909090e9de020000909090e9e1020000909090e9e402000090909048b858d5d0f1c27f0000c348b8683bd1f1c27f0000c348b86841d1f1c27f0000c348b8f841d1f1c27f0000c348b8a83cd1f1c27f0000c348b8403fd1f1c27f0000c348b8a0d8d0f1c27f0000c348b8203bd1f1c27f0000c348b8f0aed5f1c27f0000c348b820dad0f1c27f0000c348b8f03dd1f1c27f0000c348b8d0d8d0f1c27f0000c348b8c03ad1f1c27f0000c348b8783cd1f1c27f0000c348b87840d1f1c27f0000c348b89841d1f1c27f0000c348b8e03ed1f1c27f0000c348b868dad0f1c27f0000c348b8083dd1f1c27f0000c348b8183cd1f1c27f0000c348b8a03fd1f1c27f0000c348b80841d1f1c27f0000c348b8403dd1f1c27f0000c348b8f8d7d0f1c27f0000c348b810afd5f1c27f0000c348b8303ad1f1c27f0000c348b8483cd1f1c27f0000c348b8a840d1f1c27f0000c348b8d039d1f1c27f0000c348b87039d1f1c27f0000c348b830afd5f1c27f0000c348b838ddd0f1c27f0000c348b838e0d0f1c27f0000c348b870d8d0f1c27f0000c348b8103fd1f1c27f0000c348b8d03fd1f1c27f0000c348b8a039d1f1c27f0000c348b8903ad1f1c27f0000c348b8803ed1f1c27f0000c348b8c841d1f1c27f0000c348b84840d1f1c27f0000c348b858afd5f1c27f0000c348b8d83cd1f1c27f0000c348b878afd5f1c27f0000c348b8e83bd1f1c27f0000c348b868ddd0f1c27f0000c348b868e0d0f1c27f0000c348b888d8d0f1c27f0000c348b838dad0f1c27f0000c348b8603ad1f1c27f0000c348b8b03ed1f1c27f0000c348b8b03bd1f1c27f0000c348b898afd5f1c27f0000c348b83841d1f1c27f0000c348b8b83dd1f1c27f0000c348b81840d1f1c27f0000c348b8203ed1f1c27f0000c348b86047d1f1c27f0000c348b8c0afd5f1c27f0000c348b8503ed1f1c27f0000c348b898ddd0f1c27f0000c348b8703dd1f1c27f0000c348b850e0d0f1c27f0000c348b81042d1f1c27f0000c348b8d840d1f1c27f0000c348b8003ad1f1c27f0000c348b8703fd1f1c27f0000c348b8e8afd5f1c27f0000c3f400|@18026,1,@3840|572,0,@9532 583,0,@10266 594,0,@10329 605,0,@10335 616,0,@10279 627,0,@10306 638,0,@9567 649,0,@10263 660,0,@18014 671,0,@9583 682,0,@10292 693,0,@9569 704,0,@10259 715,0,@10277 726,0,@10319 737,0,@10331 748,0,@10302 759,0,@9586 770,0,@10283 781,0,@10273 792,0,@10310 803,0,@10325 814,0,@10285 825,0,@9560 836,0,@18015 847,0,@10253 858,0,@10275 869,0,@10321 880,0,@10249 891,0,@10245 902,0,@18016 913,0,@9616 924,0,@9648 935,0,@9565 946,0,@10304 957,0,@10312 968,0,@10247 979,0,@10257 990,0,@10298 1001,0,@10333 1012,0,@10317 1023,0,@18017 1034,0,@10281 1045,0,@18018 1056,0,@10271 1067,0,@9618 1078,0,@9650 1089,0,@9566 1100,0,@9584 1111,0,@10255 1122,0,@10300 1133,0,@10269 1144,0,@18019 1155,0,@10327 1166,0,@10290 1177,0,@10315 1188,0,@10294 1199,0,@10374 1210,0,@18020 1221,0,@10296 1232,0,@9620 1243,0,@10287 1254,0,@9649 1265,0,@10336 1276,0,@10323 1287,0,@10251 1298,0,@10308 1309,0,@18021 8661:D6,1624|483b65187305ff5558cd0950534c8b34244d8b6e104d89eb4d89f64d8b66484d89e24d8b6d004d8b24244983fc5374054d89e5eb004983fd690f85a80100004d89f64d8b76084d8b364d8b2e4a8d0c6d010000004883f901750f49bde0d7d0f1c27f0000e9920000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1db70500000f87330100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c6450822498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bce0d7d0f1c27f0000e99c0000004d89f34983c3024c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b15fc040000776f4d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c244c89f1498d7508498d7c240848d1e9f3a44983c61049d1ee43c604342241806424ffbfe98f000000488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff234d89f64d89dd4d89f64d89d44d8b1b4d8b124983fa5374054d89d3eb004983fb577502eb364983fb3d7502eb2e4983fb757502eb264983fb3174204d89e6498b45004d8b364983fe5374054c89f0eb00ff15430400004989c4eb0a4d89f64d8b76084d8b264c8b0c244d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e41564c8b6c24104d8b75004e8d3475010000004983fe01750f49ba30b0d5f1c27f0000e9b70000004d89f34983c31c4c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0d3e0300000f870b0300004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89f14d89ed498d7508498d7a0848d1e9f3a44983c61049bd30b0d5f1c27f000048c7c11d000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b054e0200000f870e0200004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b850b0d5f1c27f0000e9b20000004d89f44983c4144c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7c0100000f872f0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd50b0d5f1c27f000048c7c115000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1532010000ff15240100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c706030000004883c408ff22488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@18025,1,@3839,@5333,@5030,@8660|92,0,@9559 271,0,@9559 452,0,@9487 473,0,@9487 709,0,@18023 869,0,@18023 1143,0,@18024 1299,0,@18024 1336,0,@10221 1520,0,@9487 1541,0,@9487 1562,0,@9487 8662:D14,2280|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be503277f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424184989e1ff15f3080000ff3424ff742410488b442408488b5c24284c8b0424ff15d0080000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f850d0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f5060000ff15e70600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff151f0600004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be003377f1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b442468488b5c24384989e14c8b542430ff15c3050000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508030000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee91b0300004983fc130f850a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15be030000ff15b00300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15e80200004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be481778f1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b442468488b5c24384989e14c8b542430ff158c020000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508010000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000415648c7c023000000488b5c2430ff151a0200006a016a01488b542468488b4424704c8b7424604156488b5c24484c8b4424504c8d4c24084c8b542440ff12415d415e4c8b4c24084d8b214d89c94d8b51104d89c9498b79204d8b5e084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d8956104d895e084d8926f60424010f85ca0000004c8b24244d8b24244d8b1c244d8b5424084d8b44241049c7c401000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892749c7c401000000498d77f0483b75107306ff5550ca807f4989f748c746f801000000c646ff404c89264d8d67c84c3b65107306ff5550cac06f4d89e749c74424f806000000498974242849897c24204d894424184d895424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d89650849c7450005000000eb004c8b24244983fc01488d642408750949c7c203000000eb0749c7c2010000004983f20249c7c4010000004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f80100000041c643ff404d89234d8d67c84c3b65107306ff5550ca006e4d89e749c74424f8060000004d89c94d894c2428488d6424084d895424204d895c24184d896c24104c8b2c244d896c2408488d6424084d8934244c8b6c24284d8965004d89750848c7c0010000004883c430c21800f4|@18092,1,@3919,@8657,@8666,@5027,@5031,@5030,@8666,@5027,@5031,@5030,@5414,@8688|54,0,@8663 71,0,@18027 563,0,@10220 573,0,@10221 748,0,@10223 771,0,@10226 820,0,@8665 837,0,@18028 1354,0,@10220 1364,0,@10221 1539,0,@10223 1562,0,@10226 1611,0,@8740 1628,0,@18028 8663:D3,48|483b65187305ff5558cd054883f8237502eb0e4883f8157502eb064883f813750848c7c003000000c3488b5208ff22f4|@10371,1,@3841| 8664:D3,48|483b65187305ff5558cd014883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f4|@10371,1,@3842| 8665:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3843| 8666:D14,2392|483b65187306ff5558ca0d0752505341504151415248b8f8b0d5f1c27f0000488b5c241049b808b1d5f1c27f00004c8b4c2418ff15870900004c8b7424184d89f141ff76304d89c94d8b69504c89ea4d89c94d8b71784c89f141ff750041ff364d89c94d8b61104d89e64d89c94d8b59484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc310f85ff000000488d642418498d5fe8483b5d107306ff5550ca00024989df48c743f8020000004c8b7424104c89730849be883d77f1c27f00004c89336a016a014d89c848b8b8b0d5f1c27f00004989e1ff15d8080000ff3424ff742410488b442408488b5c24384c8b0424ff15b508000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b34244d89f44d8975104c8b7424084d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424204d892ee9ac0400004983fc650f85740300004c89c84889c04d8b65004983fc53740d49c7450053000000e9440200004d8b2e4983fd010f8520020000488d6424304889c04989c4ff70284d89e44d8b7424384d89e44d89e541ff7424404d89ed4d89ec524d89e441ff742470514c89f248c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1574060000ff15660600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff159e0500004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424284d89700849bed03d77f1c27f00004d89304c8b742440498b5608488b442438488b5c24304c8b4c2418ff124989c64156488b5c24384c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24084d895e204d8966184c8b6424104d8966104d896e084c8b6c24184d892e415648c7c01f000000ff15e60400004d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d89f44d8975104c8b7424084d89750849c74500010000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89e44d896608488d6424284d892ee92e010000488d6424184d89c9498b71284989f34d89c94d8b69304d89ee4d89c94989d24d89c9498b79704989fc4989c8488b12488b36488b19488b0f498d7fd0483b7d107306ff5550ca4e7d4989ff48c747f80500000048895f2048894f1848895710488977084c892f49c7c501000000498d77f0483b75107306ff5550ca807d4989f748c746f801000000c646ff404c892e4d8d6fd84c3b6d107306ff5550cac05d4d89ef49c745f8040000004989751849897d1048bf30b1d5f1c27f000049897d0849c74500030000004d89c14d8b124d8b1b4d8b014d8b0c244d8d67d04c3b65107306ff5550ca006f4d89e749c74424f8050000004d894424204d894c24184d895424104d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b4424204c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc7f0f85bb0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1578010000ff156a0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15a2000000ff7424104c8b742408498b064d89f6498b5e084c8b4424284c8b4c24104c8b542420ff15720000004989c64d8b264c8b1c244d89dd4d89234d8b76084d89ed4d897508488d64243048c7c0010000004883c410c34c8b6c24104c8b34244d8b264d8965004d89f64d8b7608488d6424084d89750848c7c0010000004883c430c3f400|@18033,1,@3847,@8671,@5027,@5031,@5030,@8657,@5027,@5031,@5030,@5414,@8688,@8670|23,0,@18030 38,0,@18031 187,0,@8668 207,0,@18027 796,0,@10220 806,0,@10221 981,0,@10223 1004,0,@10226 1053,0,@8669 1473,0,@18032 2040,0,@10220 2050,0,@10221 2225,0,@10223 2248,0,@10226 8667:D3,64|483b65187305ff5558cd014883f865750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@10371,1,@3844| 8668:D3,32|483b65187305ff5558cd054883f87f750848c7c003000000c3488b5208ff22f4|@10371,1,@3845| 8669:D3,64|483b65187305ff5558cd054883f861750848c7c003000000c34883f87f750848c7c003000000c34883f81f750848c7c003000000c3488b5208ff22f400000000|@10371,1,@3846| 8670:D7,848|483b65187306ff5558ca09035053415041514c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542418ff124989c64983fe037411488b442408488b1c24ff152e030000eb0d488d64242048c7c001000000c34c8b2c244d8b75104d89ed4d8b6d484d8b364d8b6d004983fd5374054d89eeeb004156488b542418488b0424ff124989c64983fe03750e488d64240849c7c603000000eb13488b542420488b0424ff124989c6488d6424084983fe030f8479020000488b04244c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e9450200004d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1510010000ff15020100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff153a000000483b65187303ff5558e925fdffff488d64242048c7c001000000c3f4000000000000|@18070,1,@3876,@5027,@5031,@5030,@8661|592,0,@10220 602,0,@10221 777,0,@10223 800,0,@10226 8671:D17,2096|483b65187306ff5558ca0907505341504151415248c7c077000000488b5c2410ff158a0800006a016a016a0148c7c0010000004889e3ff156c080000ff3424ff742410ff742420498d5fe0483b5d107303ff55504989df48c743f8030000004c8b34244c8973104c8b7424084c8973084c8b7424104c893348c7c0010000004c8b442438ff15160800004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be984a77f1c27f00004c89336a016a0148b880b1d5f1c27f00004c8b4424584989e1ff15bf070000ff3424ff742410488b442438488b5c24304c8b4424284c8b4c2460ff15960700004989c6415648c7c023000000488b5c2470ff157707000048b8b0b1d5f1c27f0000488b5c246049b8503ed1f1c27f00004c8b4c2470ff154b070000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424604c89700849bea84b77f1c27f00004c89306a016a01488b9c24800000004c8b4424104989e1ff15fb060000415d415e488d6424084d8d67d04c3b65107306ff5550ca00604d89e749c74424f8050000004d896c24204c8b6c24204d896c24184c8b6c24084d896c24104c8b6c24784d896c24084c8b2c244d892c24488d6424584d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000500000041554c8b6424204d8b2c244d89e44d8b5c24104d89e44d8b4c24204d8b66084d8b56184d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e084c8b6c24084d892e4156488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc050f85e40200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1527040000ff15190400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15510300004c8b7424284d8b66104d89f64d8b5e484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc777524488d642408488b4424085b488d6424084d89f04c8b4c2408415a488d642420e9a2faffff4d89ee4d8b2e4983fd537415488d64244048b8c0b1d5f1c27f0000488b5d08ff2349c70605000000584883c438c34983fc7f0f858d020000488d6424084889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff151c010000ff150e0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1546000000488b4424085b488d6424084c8b4424104c8b4c2408415a488d642420e9ddf7ffff584883c438c3f4000000000000|@18042,1,@3853,@5027,@5031,@5030,@5027,@5031,@5030,@8678,@8670,@8657,@8694,@8688,@8676,@5240,@8657|178,0,@8672 195,0,@18034 275,0,@18036 290,0,@10296 344,0,@8675 1073,0,@10220 1083,0,@10221 1258,0,@10223 1281,0,@10226 1393,0,@18037 1828,0,@10220 1838,0,@10221 2013,0,@10223 2036,0,@10226 8672:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3848| 8673:D3,40|483b65187305ff5558cd014883f831750848c7c003000000c348c7c001000000c3f4000000000000|@18035,1,@3849| 8674:D3,80|483b65187305ff5558cd014883f841750848c7c003000000c34883f843750848c7c003000000c34883f831750848c7c003000000c34883f875750848c7c003000000c348c7c001000000c3f400000000|@10371,1,@3850| 8675:D3,48|483b65187305ff5558cd054883f805750848c7c003000000c34883f87f750848c7c003000000c3488b5208ff22f40000|@10371,1,@3851| 8676:D10,1336|483b65187306ff5558ca0901504150ff33ff73084c8b4424104d8b70104d89f44d89c04d8b58484d89dd4d8b364d8b1b4983fb5374054d89deeb004983fe430f85fe0200004c89c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1597030000ff15890300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15c10200004c8b7424104d8b66104d89f64d8b5e484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc75752a4d89f54d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9a4000000488d6424104d89ee488d6424084d8b2e4983fd537415488d64240848b8c0b1d5f1c27f0000488b5d08ff23488d64240849c7064300000048c7c001000000c34983fe7575526a016a01ff74241048c7c001000000488d5c24084c8b4c24204c8b542430ff15fb010000415e488d642428498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048c7c001000000c36a016a01ff74244048c7c001000000488d5c24084c8b4424584c8b4c24504c8b542460ff158f010000ff3424ff74241048c7c01700000048bb48b2d5f1c27f00004c8b442460ff15640100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e961ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c89742428ff74242048c7c05f000000488b5c2460ff1525000000584883c468c3f4000000000000|@18068,1,@3874,@8657,@8658,@8696,@8696,@5027,@5031,@5030|465,0,@10220 475,0,@10221 650,0,@10223 673,0,@10226 801,0,@18037 993,0,@18040 8677:D3,40|483b65187305ff5558cd014883f875750848c7c003000000c348c7c001000000c3f4000000000000|@18041,1,@3852| 8678:D8,1032|483b65187306ff5558ca0903505341504151498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89700849be405677f1c27f00004c89306a016a014889e34c8b4424204c8b4c2418ff15e9030000ff3424ff7424104c8b4c24304d8b61104d89e64d89c94d8b59484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc090f852b0300004c89c84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1507020000ff15f90100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15310100006a016a01488b442448488b5c24404c8b4424384989e1e8eefcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184d897424104c8b2c244d896c2408488d64240849c70424050000004c8b6c24104d8965004d89750848c7c0010000004883c430c3488b44243848bbc8b2d5f1c27f000049b8f8b2d5f1c27f0000ff15460000004c8b6c24204c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c430c3f4000000000000|@18046,1,@3856,@8670,@5027,@5031,@5030,@8681|53,0,@8679 537,0,@10220 547,0,@10221 722,0,@10223 745,0,@10226 962,0,@18043 972,0,@18045 8679:D3,32|483b65187305ff5558cd054883f809750848c7c003000000c3488b5208ff22f4|@10371,1,@3854| 8680:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18044,1,@3855| 8681:D4,176|483b65187306ff5558ca0903536a016a014d89ca4d89c14989c048c7c0010000004889e3ff159e000000415d415e41f6c50175364d8b65084983fc01750949c7c403000000eb0749c7c4010000004983fc0375164d8b6500415d4d8965004d89750848c7c001000000c34d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c704240b000000415d4d8965004d89750848c7c001000000c3f40000000000|@18047,1,@3858,@8682| 8682:D7,1024|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c89700849bef05b77f1c27f00004c89306a016a014889e34c8b4424184c8b4c2410ff15d8030000ff3424ff742410488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc0d0f85200300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f6010000ff15e80100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15200100006a016a0148c7c0010000004889e34c8b4424404c8b4c24384c8b542430e8e6fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424104d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24284d8965004d89750848c7c0010000004883c430c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24384d8975004c8b34244d897508488d64241048c7c0010000004883c430c3f400000000|@18052,1,@3862,@5027,@5031,@5030,@8684|54,0,@8683 538,0,@10220 548,0,@10221 723,0,@10223 746,0,@10226 8683:D3,32|483b65187305ff5558cd054883f80d750848c7c003000000c3488b5208ff22f4|@10371,1,@3857| 8684:D24,4176|488dbc2428ffffff483b7d187306ff5560ca09035053415041514c8b6c24084d8b55104d89d64d89ed4d8b5d484d89dc4d8b024d8b1b4983fb5374054d89d8eb004d89ed498b75284989f14d89ed4c89eb41ff75304889db488b4b504989ca4889db488b7b704989fb4889db488b53784989d5ff31488b36ff32488b17498d7fd0483b7d107306ff5550ca4c7f4989ff48c747f805000000488b0c2448894f2048895718488b5424084889571048897708488b742410488937576a016a014983f8310f85e50000006a016a014989d848b880b1d5f1c27f0000488b5c24584989e1ff1521100000415c415e49bda8a3d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca00584d89ef49c745f8060000004d895d284d8975204d8975184d8975104d89650849c74500010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408e9010a00004983f8750f859c000000488b5424304889db4c8b7308498b06ff124989c6415648c7c075000000488b5c2440ff15210f00004d8d67e04c3b65107303ff55504d89e749c74424f8030000004c8b6c24184d89ee4d896c24104c8b2c244d896c2408488d64240849c70424070000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244d89f64c89742408e95b0900004983f8410f85320600004889d84889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15110d0000ff15030d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff153b0c00004c8b7424384d8b56284d89d34d89f64d8b6e704d89ec41ff3241ff75004d89f64d8b4e104d89ca4d89f64d8b46484d89c54d8b094d8b004983f85374054d89c1eb004983f95d0f85230300004c89f04d89d64889c04d8b55004983fa53740d49c7450053000000e9470200004d8b2e4983fd010f8523020000488d6424484889c04989c541534d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41544d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15460a0000ff15380a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15700900004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24284d896e204c8b2c244d896e18488d6424084c8b6c24284d896e104c8b2c244d896e08488d6424084c8b6c24284d892e4d8d67d84c3b65107306ff5550ca00404d89e749c74424f8040000004d8974241849c74424100300000049c74424080100000049c70424090000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c892c244c89742408e929080000488d642410498d47e8483b45107306ff5550ca00404989c748c740f8020000004d89f64c89700849be586d77f1c27f00004c89306a016a016a014889e3ff1569080000ff7424084c8b6c24584d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e90c0400004983f8430f85f60200004889d84889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff159d060000ff158f0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15c705000048c7c001000000488b5c24384c8b4424484c8b4c2430ff15a30500004989c64156488b5c24404c8b6b284889db4c8b737041ff750041ff3648c7c05f000000ff15720500004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24304d896e204c8b2c244d896e18488d6424084c8b6c24304d896e104c8b2c244d896e08488d6424084c8b6c24304d892e4c8b2c244c896c2408488d6424084c89742408eb1f48c7c031000000ff15fc04000048c70424010000004c8b7424104c897424084c8b3424ff742408488b5c24404c8b6b104889db4c8b63484d8b6d004d8b24244983fc5374054d89e5eb004983fd31751a4c89f0415d4c8b4424404989d94c89eb4883c450ff259704000041f6c601757041ff364d8b76084983fe01752b4c8b6c24504c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c450c348c7c031000000ff15440400004c8b6c24504c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c450c34c8b6c244849beb80bd1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c450c3498d47e8483b45107303ff55504989c748c740f8020000004c8bb424980000004c89700849be387077f1c27f00004c89306a016a01488b9c24980000004989e0ff159f0300004c8b2c24ff7424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e4156488b542450488b0424ff1248c7c013000000488b9c24a8000000ff1547030000498d47e8483b45107303ff55504989c748c740f8020000004c8bb424b80000004c89700849be807077f1c27f00004c89306a016a0148ba28b4d5f1c27f0000488b9c24b80000004c8b8424b00000004989e1ff12415d415c4c8b5424084d8b324d89d24d8b5a104d89d24d8b522041ff74240841ff7424184d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d895424204c8b14244d895424184d895c24104c8b5c24084d895c24084d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e084c8b6c24104d892e415648c7c01700000048bbc8b2d5f1c27f00004c8b8424c0000000ff153e0200004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d8975084c8b34244d897500488d6424084c896c2430483b65187303ff55584883c430e91bfeffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204c8b24244d896618488d6424084c8b6424484d8966104c8b24244d896608488d6424084c8b6424484d89264c896c24284c89742430ff742428488b9c24b00000004c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b9c24900000004d895e204d8966184c8ba424980000004d8966104d896e084c8bac24a00000004d892e415648c7c05d000000ff15a50000004d8d67d84c3b65107303ff55504d89e749c74424f8040000004c8b2c244d89ee4d896c241849c7442410030000004c8b6c24084d896c240849c70424090000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004c89ac24800000004d89f64c89b42488000000488da42480000000e964fbfffff40000000000|@18055,1,@3863,@8657,@8658,@8657,@8689,@8659,@8690,@8659,@8657,@8691,@5027,@5031,@5030,@5322,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8688|209,0,@18034 237,0,@11013 975,0,@10220 985,0,@10221 1160,0,@10223 1183,0,@10226 1666,0,@10220 1676,0,@10221 1851,0,@10223 1874,0,@10226 2117,0,@8685 2571,0,@10220 2581,0,@10221 2756,0,@10223 2779,0,@10226 3190,0,@9948 3265,0,@8686 3415,0,@8687 3432,0,@18051 3612,0,@18043 8685:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80b3d5f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80b3d5f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898b3d5f1c27f0000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98b3d5f1c27f000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@18050,1,@3859,@5333,@5030|36,0,@18048 174,0,@18048 243,0,@18049 399,0,@18049 436,0,@10221 623,0,@9487 644,0,@9487 8686:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@10371,1,@3860| 8687:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3861| 8688:D10,1584|483b65187306ff5558ca09034889c253415041514c8b7424084d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe030f85f6020000488b4424084c8b700841ff364889c04c8b40284d89c14889c04c8b60304889c0488b78504989fa4889c04c8b70704d89f34889c0488b70784989f5488b3f4d8b00488b16498b364d8d77d04c3b75107306ff5550cac53f4d89f749c746f805000000498956204989761849897e104d8946084d892641564889c04c8b70104889c04c8b60484d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424184889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff152a040000ff151c0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15540300004c8b6c24104c8b7424084d8975004c8b34244d897508488d64241848c7c0010000004883c410c348b880b4d5f1c27f0000488b5c2408ff15100300004c8b7424084d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542410ff124989c64983fe030f847f020000488b4424084c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1527010000ff15190100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1551000000483b65187303ff5558e94bfdffff415d49bea0b4d5f1c27f00004d8b264d8965004d8b76084d89750848c7c0010000004883c410c3f4000000|@18061,1,@3869,@5027,@5031,@5030,@8661,@5027,@5031,@5030|566,0,@10220 576,0,@10221 751,0,@10223 774,0,@10226 829,0,@18053 1305,0,@10220 1315,0,@10221 1490,0,@10223 1513,0,@10226 1545,0,@18054 8689:D11,1392|483b65187306ff5558ca09014989de4889c3415641504c8b4424084d8b68104d89ee4d89c04d8b58484d89dc4d8b6d004d8b1b4983fb5374054d89ddeb004983fd3d0f85090500004c89c04c8b680841ff75004889c0488b70284989f14889c0488b78304889c0488b50504989d24889c04c8b40704d89c34889c0488b48784989cd488b12488b36488b19498b084d8d47d04c3b45107306ff5550cacf7e4d89c749c740f8050000004989582049894818498950104989700849893841504c8b442408498b38488d3c7d010000004883ff017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff234d89c04d0fb640084a8d3c450100000049b830c9d0f1c27f000041ff74b8fc4889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424204889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff152e030000ff15200300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15580200004c8b34244d89f44c3b35420200007507488d642408eb434d89e44d8b2c244d89ee4e8d2c6d010000004983fd03752d49bd80e0d0f1c27f00004d89e4498d742408498d7d0848c7c101000000483bc9f3a67402eb07488d642408eb584c8b24244d89e54c3b25de0100007507488d642408eb414d89ed4e8d3475010000004983fe030f854501000049be30d9d0f1c27f00004d89ed498d7508488d642408498d7e0848c7c101000000483bc9f3a60f851e0100004c8b5424184d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b800b5d5f1c27f000048bb4830d1f1c27f0000ff1510010000ff15020100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24184d8b75184d89ed498b556049c70603000000ff12eb05488d6424084c8b6c24104c8b7424084d8975004c8b34244d897508488d64241848c7c0010000004883c408c34d89c04159488d64240848b8b8b0d5f1c27f0000ff251d000000f400000000|@18057,1,@3864,@8688,@5333,@5030,@9573,@9651,@5027,@5031,@5030|219,0,@9872 251,0,@9496 634,0,@10220 644,0,@10221 819,0,@10223 842,0,@10226 905,0,@9651 994,0,@9573 1136,0,@18056 1146,0,@10221 1373,0,@18027 8690:D6,1064|483b65187306ff5558ca0903415041514c8b34244d8b76084d8b364c8b2c244d8b55284c8b2c244d8b6d304c8b24244d8b5c24504c8b24244d8b6424704c8b0c244d8b49784d8b1b4d8b124d8b094d8b04244d8d67d04c3b65107306ff5550ca096f4d89e749c74424f8050000004d894c24204d894424184d895c24104d895424084d892c244c8b1b4c8b4b10488b7b204d8d6fd04c3b6d107306ff5550ca895f4d89ef49c745f80500000049897d204d8945184d894d104d8955084d895d00415549bda8a3d1f1c27f00004d8d5ff04c3b5d107306ff5550ca09704d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca09584d89ef49c745f8060000004d895d284c8b1c244d895d204d89651849895d104d897508498945004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000041564c8b7424104d8b76104c8b6c24104d8b6d484d8b65004983fc53740d49c7450053000000e9320200004d8b2e4983fd010f8509020000488d6424104c8b342441ff76284c8b742408498b56384c8b74240841ff76404c8b74241041ff76504c8b74241841ff76704c8b74242041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6c24284d8b6d004c8b6424184d892c24415d4c8b6424204d892c244c8b6c24084d8b6d00415c4d892c24415d488d6424184d8975004c8b342441ff76284c8b742408498b56384c8b74240841ff76404c8b74241041ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c6415d4c8b6424104d892c24415d488d6424104d8975004c8b34244d8b66284c8b34244d8b6e304c8b34244d8b5e504c8b34244d8b76704c8b14244d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1565010000ff15570100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f804000000415d4c8968184c89701048c740080100000048c700030000004c8b34244d8b7618415d498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442410ff15970000004c8b7424104d8b76104c8b6c24104d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe317537498d47e8483b45107303ff55504989c748c740f80200000048c7400801000000415e4c89305b4c8b4424084159488d642408e9f6fbffff4c8b6c2418415e4d897500415e4d89750848c7c0010000004883c410c3f4|@18058,1,@3865,@5027,@5031,@5030|196,0,@11013 723,0,@10220 733,0,@10221 895,0,@10223 918,0,@10226 8691:D5,352|483b65187306ff5558ca09035341504151488b5c24104c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe417502eb2f4983fe437502eb274983fe317502eb1f4983fe75741948c7c075000000ff152201000049beb80bd1f1c27f0000eb4f498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424084c89700849be388377f1c27f00004c89306a016a0148ba28b4d5f1c27f00004c8b4424104989e1ff12415e488d642408415648c7c01700000048bbb0b1d5f1c27f00004c8b442418ff15a10000004989c64983fe03754a48c7c001000000488b5c24184c8b4424104c8b4c2408e805ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c418c3f400000000|@18059,1,@3867,@8693,@8659|96,0,@9948 143,0,@8692 160,0,@18051 196,0,@18036 8692:D3,40|483b65187305ff5558cd054883f85f7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3866| 8693:D7,776|483b65187306ff5558ca09014889da5041504c8b34244d8b5e104d89dd4d89f64d8b56484d89d44d8b1b4d8b124983fa5374054d89d3eb004c3b5c24080f85760200004c89f04889c04d8b34244983fe537412488d64241049c7042453000000e94c0200004d8b75004983fe010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f0000ff157c000000488d64241048c7c003000000c34d89e6498b45004d8b364983fe5374054c89f0eb00ff124989c64983fe03751c488b442408488b1c24ff1538000000488d64241048c7c003000000c3488d64241048c7c001000000c3f40000000000|@18060,1,@3868,@8659,@5027,@5031,@5030|461,0,@10220 471,0,@10221 646,0,@10223 670,0,@10226 8694:D3,64|483b65187306ff5558ca0903498d47e0483b45107306ff5550ca00034989c748c740f8030000004c8940104c89480849be408777f1c27f00004c8930c3f40000|@18064,1,@3871|49,0,@8695 8695:D5,688|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85720200004c8b5424084d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e41564c8b6c24084d8b75004e8d3475010000004983fe01750f48b898b6d5f1c27f0000e9b50000004d89f44983c4544c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1dc00100000f87980100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f14d89ed498d7508488d780848d1e9f3a44983c61049bd98b6d5f1c27f000048c7c155000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1553010000ff15450100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75084d89f44d8b76184d89e5498b556049c70603000000ff1249bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd05498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c89304883c410c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d642410498b06c3f4000000ffffffffffffff01|@18063,1,@3870,@5333,@5030|171,0,@18062 330,0,@18062 367,0,@10221 545,0,@10468 653,0,@9487 8696:D8,1544|483b65187306ff5558ca09074c89ca5341504152488b5c24084c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe750f85d00400004889db4c8b730841ff364889db4c8b63284889db4c8b6b304889db4c8b5b504889db4c8b73704889db4c8b53784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca0c3e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4156498d47e0483b45107305ff5550cd0c4989c748c740f8030000004889db488958104c8b7424084c89700849be809077f1c27f00004c8930ff124c8b7424104983fe030f85ca0000004c8b7424084d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64242848b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2de5040000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156488b542438498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff12488b4424204c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424204889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff151b020000ff150d0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15450100004c8b6c24284c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004883c420c20800488d64240848c7c075000000ff15fe00000049bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d2cedf9ffffff4983cd094983cd054d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084d8934244c8b0c244d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b4978488d6424084d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e415d4d8965004d89750848c7c001000000c20800f40000000000|@18069,1,@3875,@8659,@5027,@5031,@5030,@9564|214,0,@8697 295,0,@9872 327,0,@9496 378,0,@9564 453,0,@10468 1029,0,@10220 1039,0,@10221 1214,0,@10223 1237,0,@10226 1316,0,@10468 8697:D4,40|483b65187305ff5558cd054989c6498b06498b5e084c8b42084c8b4a10ff251d000000f400000000|@18066,1,@3872,@8698| 8698:D5,616|483b65187306ff5558ca09034989c541514d3be87502eb3c4d8b75004e8d3475010000004d8b204c89e14e8d2465010000004d3bf40f8510020000498d7508498d7808483bc9f3a6740a488d642408e9fc0100004c8b0c244d8b59284d89c94d8b61304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892641564d8b75004e8d3475010000004983fe01750f48b850b7d5f1c27f0000e9b20000004d89f44983c42e4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d5b0100000f872b0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd50b7d5f1c27f000048c7c12f000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff15f1000000ff15e30000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c3f400000000000000ffffffffffffff01|@18067,1,@3873,@5333,@5030|200,0,@18065 356,0,@18065 393,0,@10221 573,0,@9487 8699:D5,176|483b65187306ff5558ca0d03525053415041514c8b74241841ff76106a016a016a0148c7c0010000004889e3ff159e000000488d642408415e415d4d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004d896b104d89730849be609477f1c27f00004d8933488b5c24104c8b4424184c8b7424284d8b4e084c8b5424084c8b6c2420415c488d64242841544153ff74241048c7c0010000004c896c2418ff251f000000f4000000000000|@18077,1,@3891,@8701,@5240|96,0,@8700 8700:D4,440|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2d3f010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3f400000000|@18071,1,@3877,@9564|93,0,@9872 125,0,@9496 176,0,@9564 242,0,@10468 8701:D47,11232|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424184c89f34c89700849beb0c377f1c27f00004c893049b8f0b8d5f1c27f00004c8b4c2410ff15f72c00004c8b6424104d8b5424104d89d64d89e44d8b5c24484d89dd4d8b124d8b1b4983fb5374054d89daeb004d89e44d89e341ff7424304d89db498b7b504989fc4d89db4d8b43784d89c1ff3741ff304c8d05080000004f8d4490fc41ffe0e91b020000909090e91a020000909090e919020000909090e918020000909090e917020000909090e916020000909090e915020000909090e914020000909090e913020000909090e912020000909090e911020000909090e910020000909090e912020000909090e974030000909090e973030000909090e972030000909090e974030000909090e92d070000909090e92f070000909090e9b5090000909090e9b4090000909090e9b3090000909090e9b2090000909090e9b1090000909090e9b0090000909090e9af090000909090e9ae090000909090e9b0090000909090e9710d0000909090e9700d0000909090e96f0d0000909090e96e0d0000909090e96d0d0000909090e96c0d0000909090e96b0d0000909090e96a0d0000909090e9690d0000909090e9680d0000909090e9670d0000909090e9660d0000909090e9650d0000909090e9640d0000909090e9630d0000909090e9620d0000909090e9610d0000909090e9600d0000909090e95f0d0000909090e95e0d0000909090e95d0d0000909090e95f0d0000909090e933130000909090e932130000909090e931130000909090e930130000909090e932130000909090e9b8150000909090e9b7150000909090e9b6150000909090e9b5150000909090e9b7150000909090e970190000909090e972190000909090e9f81b0000909090e9f71b0000909090e9f61b0000909090e9f51b0000909090e9f41b0000909090e9f31b0000909090488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e96f010000488d6424184d89db4d8b6b284d89db4d8b73304d89db4d89db4d8b53704d89db4d8b24244d8b6d004d8b014d8b124d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f8050000004d8941204d8951184d8961104d8969084d8931498d47e8483b45107306ff5550ca000a4989c748c740f8020000004c8b7424184c89700849be88c677f1c27f00004c89304c8b7424384d8b364c8b6c24384d8b6d084d8d67e84c3b65107306ff5550ca016a4d89e749c74424f8020000004d89db4d895c240849bb60c977f1c27f00004d891c24498d5fe0483b5d107306ff5550ca01724989df48c743f8030000004c8963104c896b084c89336a016a01ff74241049c7c0030000004c8d542408ff150c290000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee93b1a0000488d642418eb05488d642418eb05488d642418e9c60300004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004c8b4424304d89420849b8c8cb77f1c27f00004d890241524c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15c8260000ff15ba2600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15f22500004c8b742458498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24204d89e94c896b104c89730849bea0ce77f1c27f00004c89336a016a01488b4424104989e0ff159b250000415d415c488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706350000004d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee962160000488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff150b230000ff15fd2200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15352200004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9601f0000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9ce0300004c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff152f200000ff15212000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15591f000048b8e0b9d5f1c27f0000488b5c243049b808b1d5f1c27f00004c8b4c2428ff152d1f00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424304d89700849be58d377f1c27f00004d89306a016a01488b542430488b442460488b5c24384989e14c8b542428ff12ff3424488b4424106a016a014889e34c8b4424504c8b4c2458ff15bb1e0000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424184d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9c60f0000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418e9e1050000488d6424184d89db4c89d841ff73304889c04d89e24d89d34889c04d89cc41ff3241ff314889c04889c04d8b55004983fa53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15841b0000ff15761b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15ae1a0000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc770f85700200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15d3180000ff15c51800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15fd17000049c7c603000000eb0749c7c6010000004156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be50d677f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424404989e1ff1599170000415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415648c7c023000000488b5c2438ff15571700004c8b6c24384d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e955120000488d642418eb05488d642418eb05488d642418eb05488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1568150000ff155a1500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15921400004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9d00d0000488d642418eb05488d642418eb05488d642418eb05488d642418e9c60300004d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004c8b4424304d89420849b8a0d677f1c27f00004d890241524c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1575120000ff15671200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff159f1100004c8b742458498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24204d89e94c896b104c89730849be78d977f1c27f00004c89336a016a01488b4424104989e0ff1548110000415d415c488d6424084d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706350000004d8b6c24084d8b5c24184d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d896c24084c8b2c244d892c24488d6424084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892ee9c7020000488d642418e993020000488d6424184c89d84889c04d8b5d004983fb53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541544d89ed41ff7570415148c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15b80e0000ff15aa0e00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15e20d00004c8b6c24104d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a01e9e2050000488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d642418eb05488d64241849c7c6010000004156488b4424184c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc610f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424184889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15aa0b0000ff159c0b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15d40a0000eb004c8b4424184d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9ce000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe19750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe0375564c8b7424404c8b6c24384c8b64243041564155415448c7c001000000488b5c24384c8b4c24284c8b542420e8aadbffff4889c34883fb017508584883c420c21800584c8b7424204c897424384883c438ff25bc070000584883c420c218006a016a014c8b54246848c7c0010000004889e34c8b4424584c8b4c2450ff1589070000ff3424ff74241048c7c00500000048bbc8b2d5f1c27f00004c8b442460ff155e0700004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e967ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c420e9d7f8ffff6a016a014c8b742478ff742440415648c7c001000000488d5c24104c8b4424604c8b4c24684c8b542458ff15f6050000ff3424ff74241048c7c00500000048bbc8b2d5f1c27f00004c8b442460ff15cb0500004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e95affffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204c8b6424284d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500090000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c448e9fff6ffff498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424704c89730849be08da77f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424784989e1ff15f40300004c8b2c24ff7424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e415648c7c02300000048bb80b1d5f1c27f00004c8b842488000000ff159d0300004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d8975084c8b34244d897500488d6424084c896c2418483b65187303ff55584883c418e919ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424284d8956204d895e184c8b5c24304d895e104d8966084c8b6424384d89264c896c24184c897424204c8b6c24184c8b7424204d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424504d8956204d895e184c8b5c24584d895e104d8966084c8b6424604d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d8965184c8b6424484d8965104d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4883c468e96af4ffff6a016a014c8b54247048c7c0010000004889e34c8b4424584c8b4c2450ff1576010000ff3424ff74241048c7c00500000048bbc8b2d5f1c27f00004c8b442460ff154b0100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e967ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c420e9f4f2fffff40000|@18084,1,@3903,@8658,@8727,@8658,@8688,@8658,@8731,@8658,@8733,@8736,@5027,@5031,@5030,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8688,@5027,@5031,@5030,@5027,@5031,@5030,@8739,@8670,@5027,@5031,@5030,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@8715,@8670|57,0,@8702 70,0,@18072 942,0,@8703 1008,0,@8704 1236,0,@8705 1632,0,@10220 1642,0,@10221 1817,0,@10223 1840,0,@10226 1904,0,@8706 2557,0,@10220 2567,0,@10221 2742,0,@10223 2765,0,@10226 3265,0,@10220 3275,0,@10221 3450,0,@10223 3473,0,@10226 3489,0,@18076 3504,0,@18031 3558,0,@8710 4420,0,@10220 4430,0,@10221 4605,0,@10223 4628,0,@10226 5085,0,@10220 5095,0,@10221 5270,0,@10223 5293,0,@10226 5360,0,@8711 5377,0,@18027 5920,0,@10220 5930,0,@10221 6105,0,@10223 6128,0,@10226 6255,0,@8712 6651,0,@10220 6661,0,@10221 6836,0,@10223 6859,0,@10226 6923,0,@8713 7576,0,@10220 7586,0,@10221 7761,0,@10223 7784,0,@10226 8334,0,@10220 8344,0,@10221 8519,0,@10223 8542,0,@10226 9399,0,@18043 9786,0,@18043 10229,0,@8714 10246,0,@18027 10325,0,@18034 10906,0,@18043 8702:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e9ce000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@10371,1,@3878| 8703:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@10371,1,@3879| 8704:D5,560|483b65187305ff5558cd054989c5524c8b0c244d8b61084d89e64d8b5c24284d89f24d8b66304d89d64d8b52504d89f04d8b76704d89c14d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892641564d8b75004e8d3475010000004983fe01750f48b898b6d5f1c27f0000e9b20000004d89f44983c4544c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d600100000f873d0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98b6d5f1c27f000048c7c155000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff15f6000000ff15e80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b8b80bd1f1c27f0000c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@18073,1,@3880,@5333,@5030|139,0,@18062 295,0,@18062 332,0,@10221 514,0,@9948 530,0,@9487 8705:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@10371,1,@3881| 8706:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30300000049c7c0030000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18074,1,@3883,@8707| 8707:D11,784|488dbc2460ffffff483b7d187306ff5560ca09075053415041526a016a016a0148c7c0010000004889e3ff1530030000ff3424ff742410ff742420498d5fe0483b5d107303ff55504989df48c743f8030000004c8b34244c8973104c8b7424084c8973084c8b7424104c89334c8b44245848c7c001000000ff15da0200004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424504c89730849bea8d277f1c27f00004c89336a016a014c8b44247048b880b1d5f1c27f00004989e1ff1583020000ff3424ff742410488b9c2480000000488b4424084c8b0424ff155d0200004c8b8c2480000000488b442438488b5c24304c8b442428ff15380200004989c641566a016a014c8bb424800000004983fe03754f4c8bb424980000004d8b76104c8bac24980000004d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe23750949c7c603000000eb0749c7c6010000004983f6024983fe037505e99e0000004c8b7424784983fe030f848f000000488b9c249800000048c7c023000000ff15a60100004c8b8c249800000048b8b0b1d5f1c27f0000488b9c248800000049b8503ed1f1c27f0000ff15740100006a016a01488b9c24a8000000488b8424980000004c8b4424204989e1ff154a010000415c415e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c892c244c89742408eb1248c70424010000004c8b7424184c89742408415b415e4c8b5424084d8b2a4d89d24d8b4a104d89d2498b7a204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bc90a3d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c04c3b65107306ff5550ca006c4d89e749c74424f8070000004c8b4c24284d894c24304c8b4c24684d894c24284d89d24d895424204d897424184d895c24104d896c24084c8b6c24104d892c244c8b6c24604d8965004d89750848c7c0010000004881c480000000c20800f40000000000|@18075,1,@3884,@8678,@8670,@8657,@8694,@5414,@8688,@8676,@5240|166,0,@8708 188,0,@18034 412,0,@18036 430,0,@10296 624,0,@11012 8708:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3882| 8709:D3,64|483b65187305ff5558cd014883f865750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@10371,1,@3885| 8710:D3,720|483b65187305ff5558cd054883f80d7505e9ae0200004883f8310f84a40200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff2248c7c003000000c3f4000000|@10371,1,@3886| 8711:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3887| 8712:D3,688|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9bb010000909090e9bc010000909090e993010000909090e9b5010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e976010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9cf000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b0000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e991000000909090e93b000000909090e98a000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f4|@10371,1,@3888| 8713:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30300000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18074,1,@3889,@8707| 8714:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3890| 8715:D26,4232|488dbc2458ffffff483b7d187306ff5560ca090750534150415141524c8b7424304d8b76104c8b6c24304d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424284c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff157c0f0000ff156e0f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442430ff15a30e00006a016a016a0148c7c0010000004889e3ff15850e0000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b44243848c7c003000000488b1c24ff15390e00004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849bec0eb77f1c27f00004c89336a016a014c8b44245048b880b1d5f1c27f00004989e1ff15e20d0000ff3424ff742410488b5c2460488b4424084c8b0424ff15bf0d0000488b5c246048c7c023000000ff15a50d00004c8b7424604d8b76104c8b6c24604d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe190f85a60400004c8b7424204983fe017505e9210100004c8b7424604d8b66284c8b7424604d8b6e304c8b7424604d8b5e504c8b7424604d8b76704c8b5424604d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b828bad5f1c27f000048bb4830d1f1c27f0000ff15db0c0000ff15cd0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424604d8b76184c8b6c2460498b556049c70603000000ff124c8b7424604d8b76104c8b6c24604d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424584c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15760a0000ff15680a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442460ff159d0900006a016a014c8b44247048b880b1d5f1c27f0000488b5c24604989e1ff1574090000415b415c4c8b7424384d8b2e4d89f64d8b4e104d89f6498b7e204d8b5424084d8b4424184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8956084d892e4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d8975204d895d184c8b5c24084d895d104d8965084c8b24244d896500488d6424104d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704240d0000004c8b6c24204d8965004d89750848c7c0010000004883c448c20800498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849be08ec77f1c27f00004c89306a016a014c8b742470ff7424505448830424084156488b5c24304c8b4424484c8b4c24504c8b542428ff153c080000ff34244c8b7424104c8b6c24784d8b6d104c8b6424784d8b6424484d8b6d004d8b24244983fc5374054d89e5eb006a016a014983fd050f851c0300004c8bb424880000004d8b76104c8bac24880000004d8b6d484d8b65004983fc53740d49c7450053000000e95e0200004d8b2e4983fd010f8532020000488da424800000004c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1537060000ff15290600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b842488000000ff155b050000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424784c89700849be68ec77f1c27f00004c89304c8bb42488000000498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b7424684c89730849beb8ec77f1c27f00004c89336a016a014c8b8c24980000004989e0ff15d3040000415d415e4c892c244c89742408eb0d48c70424010000004c89742408ff34244c8b7424104c8bac24900000004d8b6d104c8ba424900000004d8b6424484d8b6d004d8b24244983fc5374054d89e5eb006a016a014981fd850000000f85f90200004c8bb424a00000004d8b76104c8bac24a00000004d8b6d484d8b65004983fc53740d49c7450053000000e95e0200004d8b2e4983fd010f8532020000488da424980000004c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15a9020000ff159b0200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b8424a0000000ff15cd0100004c8bb424a0000000498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8bb424880000004c89730849be28fe77f1c27f00004c89336a016a014c8b8c24b0000000488b8424a00000004989e0ff1568010000415d415e4c892c244c89742408eb0d48c70424010000004c89742408415b415e4c8b6424684d8b2c244d89e44d8b5424104d89e44d8b4424204d8b66084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d8966084d892e4d8d67e84c3b65107306ff5550ca00484d89e749c74424f8020000004c8b2c244d896c2408488d6424084c8b6c24104d892c2449c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fc84c3b6d107306ff5550ca005c4d89ef49c745f8060000004d8955284d895d2049c74518010000004d8965104d89750849c74500010000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004c8b6c24584d8965004d89750848c7c0010000004881c480000000c20800f400|@18091,1,@3917,@8737,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@8721,@8688,@5027,@5031,@5030,@5333,@5030,@8657,@5414,@8688,@8676,@5240,@5027,@5031,@5030|444,0,@10220 454,0,@10221 627,0,@10223 650,0,@10226 799,0,@8716 821,0,@18034 1053,0,@18078 1063,0,@10221 1650,0,@10220 1660,0,@10221 1833,0,@10223 1856,0,@10226 1886,0,@18034 2154,0,@8717 2697,0,@10220 2707,0,@10221 2880,0,@10223 2903,0,@10226 2960,0,@8718 3021,0,@8719 3575,0,@10220 3585,0,@10221 3758,0,@10223 3781,0,@10226 3856,0,@8726 8716:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3892| 8717:D3,56|483b65187305ff5558cd054883f805750848c7c003000000c34881f885000000750848c7c003000000c3488b5208ff22f400000000000000|@10371,1,@3893| 8718:D3,40|483b65187305ff5558cd054881f885000000750848c7c003000000c3488b5208ff22f40000000000|@10371,1,@3894| 8719:D9,352|483b65187305ff5558cd0552506a016a016a0148c7c0010000004889e3ff157d010000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424104d8b461048c7c003000000488b1c24ff152d0100004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be70ee77f1c27f00004c89336a016a014c8b7424284d8b461048b880b1d5f1c27f00004989e1ff15d2000000ff3424ff7424104c8b742438498b5e10488b4424084c8b0424ff15ab0000004c8b742438498b5e1048c7c023000000ff158d0000006a016a014c8b6c24484d8b75084d89ed4d8b6d1041565448830424084155488b442458488b5c24304c8b4424484c8b4c24504c8b542428ff1548000000415e415d488d642440498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000|@18080,1,@3897,@8721,@8657,@5414,@8688,@8676,@5240|147,0,@8720 173,0,@18034 8720:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3895| 8721:D6,352|483b65187306ff5558ca090750534150415141524c8b4c243048b870bad5f1c27f0000488b5c242049b8503ed1f1c27f0000ff15500100004c8b742408498b064d89f6498b5e084d89f64d8b46104c8b4c2430ff15270100004989c26a016a014c8b4424404c8b4c2450488b4424304889e3ff1500010000415b415e4c8b14244d8b2a4d89d24d8b4a104d89d2498b7a204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bc90a3d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f8060000004c8b4c24104d894c24284d89d24d89542420488d6424184d897424184d895c24104d896c24084c8b2c244d892c24488d6424104c8b6c24104d8965004d89750848c7c001000000c21800f400000000|@18082,1,@3900,@8723,@8694,@8670|27,0,@18079 42,0,@10296 201,0,@11012 8722:D3,112|483b65187305ff5558cd014883f84d7502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f841750848c7c003000000c34883f843750848c7c003000000c34883f831750848c7c003000000c34883f875750848c7c003000000c348c7c001000000c3f4000000000000|@10371,1,@3896| 8723:D17,3080|483b65187306ff5558ca090750534150415141524c8b5424104d8b72104d89d24d8b6a484d8b364d8b6d004983fd5374054d89eeeb004983fe4d0f858b0300004c8b7424084983fe030f85090100004d89d24d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8c0bad5f1c27f000048bb4830d1f1c27f0000ff15bf0b0000ff15b10b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742410498b5660ff12eb00488b4424104c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1575090000ff15670900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff159f080000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424204c89730849be90fd77f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424204989e1ff154b080000ff3424ff742410488b442408488b5c24304c8b0424ff1528080000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc4b0f858a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424404889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1549060000ff153b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1573050000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849bee0fd77f1c27f00004c89306a016a01488b5c24504c8b4424404989e1ff1526050000415d415e4d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c2449bd20b1d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004c8b5424184d8955184d895d104d8965084c8b6424104d89e34d8965004d89db4d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264c892c244c89742408eb7549bd20b1d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004c8b6424184d8965184d89751049c74508010000004c8b6424104d89e64d8965004c892c244d89f64c89742408ff3424ff742410488b4424504c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc7d0f851e0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f1010000ff15e30100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff151b0100006a016a01488b4424704889e34c8b4424604c8b4c24584c8b542450e8dbf4ffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424104d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24484d8965004d89750848c7c0010000004883c458c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24584d8975004c8b34244d897508488d64241048c7c0010000004883c458c3f400|@18083,1,@3901,@5027,@5031,@5030,@8678,@5027,@5031,@5030,@5414,@8688,@5027,@5031,@5030,@6249,@5030|177,0,@18081 187,0,@10221 747,0,@10220 757,0,@10221 932,0,@10223 955,0,@10226 1006,0,@8724 1023,0,@18027 1519,0,@10220 1529,0,@10221 1704,0,@10223 1727,0,@10226 1776,0,@8725 1848,0,@11094 2034,0,@11094 2599,0,@10220 2609,0,@10221 2784,0,@10223 2807,0,@10226 8724:D3,40|483b65187305ff5558cd054883f87d7502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@10371,1,@3898| 8725:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@10371,1,@3899| 8726:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18074,1,@3902,@8707| 8727:D9,1128|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be780378f1c27f00004c89336a016a0148b8d8bbd5f1c27f00004c8b4424184989e1ff154b040000488b0424ff7424084d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d89e84d896e084989064156488b5c2428ff1506040000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc4b0f85260300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424384889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1527020000ff15190200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1551010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424404c89700849be280478f1c27f00004c89306a016a01488b5c24484c8b4424404989e1ff1504010000415c415e4d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f8010000004d8965004c8b5c24184d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264c892c244c89742408eb1248c70424010000004c8b7424184c89742408415d415e4d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184c8b2c244d896c2410488d6424084d8974240849c70424030000004c8b6c24304d8965004d89750848c7c0010000004883c438c3f4000000000000|@18086,1,@3907,@8678,@5027,@5031,@5030,@5414,@8688|54,0,@8728 71,0,@18085 601,0,@10220 611,0,@10221 786,0,@10223 809,0,@10226 858,0,@8730 8728:D3,32|483b65187305ff5558cd054883f84b750848c7c003000000c3488b5208ff22f4|@10371,1,@3904| 8729:D3,64|483b65187305ff5558cd014883f823750848c7c003000000c34883f80d750848c7c003000000c34883f831750848c7c003000000c348c7c001000000c3f40000|@10371,1,@3905| 8730:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@10371,1,@3906| 8731:D6,384|483b65187306ff5558ca0907534150415141526a016a0148b8d8bbd5f1c27f000048bbc8b2d5f1c27f00004c8b4424204989e1ff156f010000ff3424ff742410488b442408488b5c24304c8b0424ff154c01000048c7c013000000488b5c2430ff15320100004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424284d89700849bed00878f1c27f00004d89306a016a01488b542430488b4424584c8b542460488b5c24404989e1ff12415c415a4c8b2c244d8b5d004d89ed4d8b45104d89ed498b75204d8b4a08498b7a184d8d77d04c3b75107306ff5550cac03f4d89f749c746f8050000004989762049897e184d8946104d894e084d891e4d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049c74308010000004d89234d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184d89ed4d896c2410488d6424084c8b2c244d896c2408488d6424304d893424415d4d8965004d89750848c7c001000000c21000f4|@18087,1,@3909,@8657,@5414,@8688|25,0,@18085 35,0,@18043 137,0,@8732 8732:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@10371,1,@3908| 8733:D7,400|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be900d78f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424184989e1ff1563010000488b0424ff7424084d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b2c244d89e84d896e084989064156488b5c2428ff151e01000048c7c013000000488b5c2428ff1504010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424304c89700849bed80d78f1c27f00004c89306a016a01488b5c24384c8b4424304989e1ff15b7000000415d415e4c8b5c24084d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d896c24184c8b2c244d896c2410488d6424384d8974240849c704240b000000415d4d8965004d89750848c7c001000000c3f4|@18088,1,@3912,@8678,@8657,@5414,@8688|54,0,@8734 71,0,@18027 207,0,@8735 8734:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@10371,1,@3910| 8735:D3,704|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e923020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9c4010000909090e9c5010000909090e993010000909090e9be010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e97f010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9d8000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9b9000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e99a000000909090e93b000000909090e993000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f819750949c7c603000000eb0749c7c601000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c3488b5208ff22f400000000000000|@10371,1,@3911| 8736:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@3913| 8737:D6,1000|483b65187306ff5558ca0903505341504151488b542410498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be701578f1c27f00004c8930ff124989c641ff3641ff7608488b4424104c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc050f85170300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15ea010000ff15dc0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15140100006a016a01488b442438488b5c24304989e04c8b4c2420e8f9fcffff415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b6c24084d892c244c8b1c244d8b2b4d89db4d8b53104d89db4d8b4320488d6424184d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e415d488d6424104d8965004d89750848c7c001000000c34d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e4c8b6c24184d8975004c8b34244d897508488d64241048c7c0010000004883c420c3f400|@18089,1,@3915,@5027,@5031,@5030|60,0,@8738 526,0,@10220 536,0,@10221 711,0,@10223 734,0,@10226 8738:D3,32|483b65187305ff5558cd054883f805750848c7c003000000c3488b5208ff22f4|@10371,1,@3914| 8739:D5,344|483b65187306ff5558ca090353415041514c8b4424084d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe310f85fb0000006a016a0148b8b8b0d5f1c27f0000488b5c24104989e1ff151f010000ff3424ff742410488b442408488b5c24284c8b0424ff15fc0000006a016a01488b4424104889e34c8b4424384c8b4c2430e871ffffff415b415e49c7c5010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d8965184c8b24244d896510488d6424084c8b24244d896508488d64242849c74500030000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d642410415e49c706010000004989460848c7c001000000c3f40000000000|@18090,1,@3916,@5414,@8688|67,0,@18027 8740:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3918| 8741:D23,5320|488dbc2438ffffff483b7d187306ff5560ca0d0752505341504151415248b860bed5f1c27f0000488b5c241049b870bed5f1c27f00004c8b4c2418ff15371500004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b6424104d89e64d89650849bc882d78f1c27f00004d89650041554c8b6c24204d89e841ff75304d89c04d8b50504d89d34d89c04d8b60784d89e541ff3241ff34244d89c04d8b48104d89ca4d89c0498b78484989fc4d8b09488b3f4883ff5374054989f9eb006a016a014983f9450f85770400004c89c04889c04d8b34244983fe53740d49c7042453000000e9430200004d8b324983fe010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1507130000ff15f91200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7025300000048baf030d1f1c27f0000ff15311200004c8b6c24504d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff1500120000488d642408415d415e4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b7424084d8974240849bee02d78f1c27f00004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b1c244d895e10488d6424104d8966084d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424484d89700849be482e78f1c27f00004d89304c8b742460498b56084c8b542470488b0424488b5c24504c8b4c2438ff124989c6415648c7c035000000488b5c2458ff15221100004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424504d89700849beb82e78f1c27f00004d89306a016a01488b5424784c8bb424880000004156488b442420488b5c24704c8d4c24084c8b542458e878fbffffff3424488b5c24704c8b6b284889db4c8b737041ff750041ff3648c7c01f000000ff15991000004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24484d896e204c8b2c244d896e18488d6424084c8b6c24484d896e104c8b2c244d896e08488d6424084c8b6c24484d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b6424184d8965104c8b24244d896508488d64242849c74500030000004c892c244c89742408e9440f00004983f96b0f85280400004c89c04d89d64889c04d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424484889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15530e0000ff15450e00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff157d0d00004c8b6c24504d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff154c0d0000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424084d89650849bc202f78f1c27f00004d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304d8d47e84c3b45107305ff5550cd014d89c749c740f8020000004c8b7424404d89700849be882f78f1c27f00004d89304c8b742458498b56084c8b542468488b5c24484c8b4c2430ff124989c64156488b5c24504c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24184d895e204d8966184c8b6424204d8966104d896e084c8b6c24284d892e415648c7c01f000000ff15240c000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d8975184c8b24244d89e64d8965104c8b6424084d89650849c74500070000004c896c24104d89f64c89742418488d642410e9120b0000498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004d89f64c89730849bef02f78f1c27f00004c89336a016a0148b8b8b0d5f1c27f00004989e1ff155a0b0000ff3424ff7424104c8b7424684c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b50104d89d64889c04c8b48484d89cc4d8b124d8b094983f95374054d89caeb004983fa430f85f00900004889c04889c04d8b14244983fa53740d49c7042453000000e9460200004d8b264983fc010f8522020000488da424800000004889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1558090000ff154a0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1582080000488b442420488b9c24800000004c8b442418ff1562080000488b9c24800000004c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc5f0f85c30000004889db4c8b73284889db4c8b6b704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d20488d6424084d8965184c8b24244d896510488d6424084d8975084c8b34244d897500488d64240849c7c6010000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d8966184d896e1049c746080100000049c70607000000e9cd0400004d8d67e84c3b65107306ff5550ca08604d89e749c74424f8020000004c8b5c24784d895c240849bb583078f1c27f00004d891c2441544889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9d4000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9b5000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb6149c7c603000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f858e0100004c8bac24900000004d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff1533040000488d642408415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104c8b6424084d89650849bcc83078f1c27f00004d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304c8bb42498000000498b56084c8b9424a8000000488b9c24880000004c8b04244c8b4c2470ff124989c5488d6424084c8ba424800000004d8b7424284d89e44d8b6424704d8b364d8b1c244d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004c8b14244d89542420488d6424084d895c24184c8b1c244d895c2410488d6424084d897424084c8b34244d893424488d64240849c7c6010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c70607000000eb3c6a016a01488b9424a80000004c8bb424b80000004156488b8424a80000004c8b4424184c8d4c24084c8b942488000000e8acedffff415e488d6424284156488b5c24704c8b6b284889db4c8b737041ff750041ff3648c7c05f000000ff15670200004c8b4c24184d8b294d89c94d8b61104d89c94d8b59204d8d77d04c3b75107306ff5550ca003a4d89f749c746f8050000004d895e204c8b1c244d895e18488d6424084d8966104c8b24244d896608488d6424084d892e49c7c5010000004d8d57f04c3b55107306ff5550ca00624d89d749c742f80100000041c642ff404d892a49c7c4010000004d8d6ff04c3b6d107306ff5550ca00564d89ef49c745f80100000041c645ff404d89650049c7c4010000004d8d5ff04c3b5d107306ff5550ca00764d89df49c743f80100000041c643ff404d892349c7c4010000004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89204d8d67b84c3b65107306ff5550ca006f4d89e749c74424f8080000004d894424384d89c94d894c24304d897424284d895424204d895c24184d896c24104c8b6c24104d896c24084c8b2c244d892c24488d6424184d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c74500010000004c896c24104c897424184883c410eb7f488d64241849c7c6010000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d8934244d8d6fd84c3b6d107306ff5550ca00104d89ef49c745f8040000004c8b1c244d89de4d895d184d8965104c8b6424084d89650849c74500090000004c896c24204d89f64c89742428488d642420585b4c8b4424284c8b4c24384c8b5424204c8b6424404c8b5c24184c8b6c24504c895c24504c896424584c896c24484883c448ff251d000000f400000000|@18097,1,@3931,@8752,@8657,@5240,@5414,@5027,@5031,@5030,@8688,@8657,@5240,@5027,@5031,@5030,@8657,@8657,@5240,@5027,@5031,@5030,@8670|31,0,@18095 46,0,@18096 103,0,@8743 593,0,@10220 603,0,@10221 778,0,@10223 801,0,@10226 910,0,@8744 1006,0,@8745 1105,0,@8746 1749,0,@10220 1759,0,@10221 1934,0,@10223 1957,0,@10226 2063,0,@8747 2159,0,@8748 2460,0,@8749 2477,0,@18027 2976,0,@10220 2986,0,@10221 3161,0,@10223 3184,0,@10226 3510,0,@8750 4336,0,@8751 8742:D3,64|483b65187305ff5558cd014883f8457502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f86b750848c7c003000000c348c7c001000000c3f4|@10371,1,@3921| 8743:D3,48|483b65187305ff5558cd054883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f40000|@10371,1,@3922| 8744:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@3923| 8745:D3,72|483b65187305ff5558cd054883f81f7502eb284883f83574224883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff2248c7c003000000c3f400000000|@10371,1,@3924| 8746:D3,64|483b65187305ff5558cd054883f81f750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@10371,1,@3925| 8747:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@3926| 8748:D3,64|483b65187305ff5558cd054883f81f750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@10371,1,@3927| 8749:D3,64|483b65187305ff5558cd054883f843750848c7c003000000c34883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff22f400000000|@10371,1,@3928| 8750:D3,72|483b65187305ff5558cd054883f8177502eb284883f85f74224883f815750848c7c003000000c34883f813750848c7c003000000c3488b5208ff2248c7c003000000c3f400000000|@10371,1,@3929| 8751:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@3930| 8752:D11,2056|483b65187306ff5558ca09075053415041514152488b4424084c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f85c50300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1571060000ff15630600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff159b0500006a016a0148bac8b0d5f1c27f0000488b4424484c8b442440488b5c24184989e14c8b542410ff1568050000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d89342449c7c6010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d8966204d895e1849c74610030000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00484989c748c740f8020000004c89700848c700050000004c8b6c24184d8b75004d89ed4d8b65104d89ed4d8b55204d8b6b084d8b5b18498d5fd0483b5d107306ff5550ca017c4989df48c743f8050000004c8953204c895b184c8963104c896b084c89334c8b4424104c8b4c2408415a488d6424204c8b6c24104c8b6424084c896424084c896c2410e9f5fbffff4983fc130f85c50300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1582020000ff15740200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15ac0100006a016a0148bac8b0d5f1c27f0000488b4424484c8b442440488b5c24184989e14c8b542410ff1579010000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d89342449c7c6010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89324d8d77c84c3b75107306ff5550ca003c4d89f749c746f8060000004d8956284d8966204d895e1849c74610010000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00484989c748c740f8020000004c89700848c700050000004c8b6c24184d8b75004d89ed4d8b65104d89ed4d8b55204d8b6b084d8b5b18498d5fd0483b5d107306ff5550ca017c4989df48c743f8050000004c8953204c895b184c8963104c896b084c89334c8b4424104c8b4c2408415a488d6424204c8b6c24104c8b6424084c896424084c896c2410e926f8ffff488d642410415d4c8b7424084d8975004c8b34244d897508488d64241048c7c001000000c21000f4000000000000|@18098,1,@3932,@8666,@5027,@5031,@5030,@8666,@5027,@5031,@5030|463,0,@10220 473,0,@10221 648,0,@10223 671,0,@10226 691,0,@18028 1438,0,@10220 1448,0,@10221 1623,0,@10223 1646,0,@10226 1666,0,@18028 8753:D4,56|483b65187306ff5558ca0d074987d84d89cd4c8b4a0850ff74240848c7c0010000004c895424104d89eaff2520000000f400000000000000|@18099,1,@3934,@8754| 8754:D7,1920|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849bed04178f1c27f00004d8930488b5c24104c8b73104d89f44889db4c8b6b484d89eb4d8b364d8b6d004983fd5374054d89eeeb004983fe610f859d0200004889d84889c04d8b334983fe53740c49c70353000000e94c0200004d8b34244983fe010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff159d050000ff158f0500004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c704245300000048baf030d1f1c27f0000ff15c6040000488b5c24184c8b4424104c8b4c2408415a488d6424184c8b6c24104c8b64240848c7c0010000004c896424084c896c2410e9f0fcffff4889db4d89e64889db4d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc477505e9c60300004983fc6d0f84bc0300004889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f85e90000006a016a014c8b4c24384c8b7424404156ff7424184c89c049c7c0030000004c8d542410ff1568010000415d415b49c7c6010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c7060100000041564c8b7424384c8b6c24304156415548c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418e841f9ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21000488d64242048c7c001000000c21000488b542408488b4424284c8b5424304c8b0c24ff124989c641564c8b7424384c8b6c24304156415548c7c001000000488b5c24304c8b4424284c8b4c24204c8b542418e8b9f8ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642428c21000f400000000000000|@18194,1,@4042,@8756,@5027,@5031,@5030|54,0,@8755 507,0,@10220 517,0,@10221 692,0,@10223 716,0,@10226 8755:D3,728|483b65187305ff5558cd054883f86d7505e9b00200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb064883f861750848c7c003000000c3488b5208ff22f4000000|@10371,1,@3933| 8756:D60,11064|488dbc2450ffffff483b7d187306ff5560ca09075053415141524c8b7424084c89f341ff364983f8037505e9fd0500004c8b6c24184d8b75104d89ed4d8b6d484d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f842f030000488d6424086a016a016a0148c7c0010000004889e3ff15f7290000ff34244c8b6c2410ff7424184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849bdf87178f1c27f00004d892e41566a016a016a0148c7c0010000004889e3ff1597290000ff3424ff7424184c8b6c24604d8b75004d89ed4d8b6d08498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b6424284c8960104c8968084c89306a016a014c8bb424980000004c8bac249000000041564155488b9c24900000004c8d4424104c8b8c248800000049ba50bfd5f1c27f0000ff1510290000415b415e49bda854d1f1c27f00004d8d57f04c3b55107306ff5550ca00684d89d749c742f80100000041c642ff404d892a49bc20b1d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d89650049bc60bfd5f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89214d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c242049b9089ed1f1c27f00004d894c24184d895424104d896c240849bd78c9d1f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89650849c745001d00000049c7c4010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d89224d8d67d04c3b65107306ff5550ca006c4d89e749c74424f80500000049c7442420010000004d895424184d897424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424284d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424084c8b24244d8922488d6424204d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c7042439000000415d488d6424184d8965004d89750848c7c001000000c210004c8b6c24184d8b55104d89d64d89ed4d8b5d484d89dc4d8b024d8b1b4983fb5374054d89d8eb004d89ed498b75284989f14d89ed4c89e841ff75304889c0488b48504989ca4889c0488b78704989fb4889c0488b50784989d5ff31488b36ff32488b17498d7fd0483b7d107306ff5550ca4d7f4989ff48c747f805000000488b0c2448894f2048895718488b5424084889571048897708488b74241048893757488d3d070000004a8d7c87fcffe7e91b020000909090e941020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e974090000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e978090000909090e983010000909090e9a90c0000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e950110000909090e973110000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e96e110000909090e9c0160000909090e9f3000000909090e9eb000000909090e9d3160000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e95f1a0000909090e93b000000909090e9931d0000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904c8b6c242849be686bd1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c440c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1540220000ff15322200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff156a210000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849be207478f1c27f00004c89304c8b742448498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849be787478f1c27f00004c89336a016a014c8b4c24584989e0ff15f1200000ff3424488b4424484c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004981fc850000000f85ea0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424484889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15101f0000ff15021f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff153a1e0000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849be707678f1c27f00004c89304c8b742460498d5fe0483b5d107306ff5550ca01404989df48c743f8030000004c8973104c8b7424404c89730849bec07678f1c27f00004c89336a016a014c8b4c24704989e0ff15b81d0000415e488d642408eb0749c7c601000000415648c7c083000000488b5c2450ff158c1d0000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424584c89700849be507778f1c27f00004c89304c8b5424704c8b7424684156488b5c24504c8b44245849b950bfd5f1c27f0000ff15301d00004989c64156488b5c24584c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424304d8966104d896e084c8b6c24384d892e415648c7c01f000000ff15c01c0000488b442408ff15ad1c00004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fc84c3b6d107306ff5550ca00504d89ef49c745f8060000004d8975284c8b7424104d89752049c74518030000004c8b7424184d8975104c8b1c244d89de4d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424010000004c8b6c24504d8965004d89f64d897508488d64242048c7c0010000004883c450c21000488b4424404889db41594c8b5424204c8b6c244849c7c0010000004c896c24504c8b7424404c897424484883c448ff25b01b0000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15191a0000ff150b1a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1543190000498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424284c8973104c8b7424304c89730849be987778f1c27f00004c89336a016a014c8b4c2458488b4424484989e0ff15ed180000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c70424130000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15b8160000ff15aa1600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15e21500006a016a016a0148c7c0010000004889e3ff15c4150000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff159b150000ff34244c8b742410ff7424184c8bac24800000004d8b5d004d89ed4d8b55084d8d4fd84c3b4d107306ff5550ca004c4d89cf49c741f8040000004c8b24244d89e54d8961184c8b6424284d8961104c8b6424304d89610849bc288878f1c27f00004d89214d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d891c244154498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004d89ed4c896b104c8973084c8b7424104c89334c8b8424a800000048c7c003000000ff15c01400004c8bb424b00000004c8bac24a8000000498d5fc8483b5d107306ff5550ca00604989df48c743f8060000004c896b284c89732049be50bfd5f1c27f00004c8973184c8b34244c897310488d6424084c8bb424880000004c89730849be388a78f1c27f00004c89336a016a014c8b8c24b0000000488b8424a00000004989e0ff1534140000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424584d8956204d895e184c8b5c24604d895e104d8966084c8b6424684d89264d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424204d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424104c8b24244d8922488d6424384d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c70424190000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25fd120000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25ca120000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1533110000ff15251100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff155d1000004c8b6c24284d89ee41ff75084d89f641ff76106a016a016a0148c7c0010000004889e3ff152c100000ff7424084c8b6c24184d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b6c24284d896e0849bd40bf79f1c27f00004d892e4156498d5fe0483b5d107303ff55504989df48c743f8030000004c8b7424284c8973104c8b34244c8973084c8b7424084c8933498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424704c89700849bea8bf79f1c27f00004c89304c8b9424880000004c8bb4248000000041564c8b44247049b950bfd5f1c27f0000ff155c0f00004989c6415648c7c035000000488b5c2470ff153d0f00004d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24104d896e104c8b6c24584d896e0849bdf8bf79f1c27f00004d892e498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8b6c24304c896b104c8b6c24084c896b084c8933498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424784c89700849be50c079f1c27f00004c89304c8b9424900000004c8bb4248800000041564c8b44247849b950bfd5f1c27f0000ff15770e00004989c64156488b5c24784c8b6b284889db4c8b73704d8b6d004d8b264d8d77d04c3b75107306ff5550ca08304d89f749c746f8050000004c8b5c24484d895e204d8966184c8b6424504d8966104d896e084c8b6c24584d892e415648c7c01f000000ff15070e0000488b442410ff15f40d00004989c64156488b442410ff15dc0d00004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8975204c8b5c24084d89de4d895d1849c74510030000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424270000004c8b6c24704d8965004d89f64d897508488da4249000000048c7c001000000c21000488d6424284889c04889db4158488d6424104c8b4c24184c8b7424084c897424184883c418ff25ed0c00004889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424384889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff155b0b0000ff154d0b00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15850a0000488b5c24384c8b73104889db4c8b6b484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f85650100006a016a014989d8488b4424104889e34c8b4c2450ff15270a0000415c415e488d6424084d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d64240849c7c5010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b49c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8955184d895d104d8975084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424290000004c8b6c24084d8965004d89750848c7c0010000004883c428c2100048c7c031000000ff15c70800004c8b6c242849be686bd1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c440c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1502070000ff15f40600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff152c0600004c8b742448498d5fe0483b5d107306ff5550ca00404989df48c743f8030000004c8973104c8b7424284c89730849be98c079f1c27f00004c89336a016a014c8b4c2458488b4424484989e0ff15d3050000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c70424350000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000488d6424084889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424304889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff159e030000ff15900300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15c80200006a016a016a0148c7c0010000004889e3ff15aa020000ff3424ff742410ff7424206a016a016a0148c7c0010000004889e3ff1581020000ff34244c8b742410ff7424184c8bac24800000004d8b5d004d89ed4d8b55084d8d4fd84c3b4d107306ff5550ca004c4d89cf49c741f8040000004c8b24244d89e54d8961184c8b6424284d8961104c8b6424304d89610849bc28c179f1c27f00004d89214d8d67e04c3b65107306ff5550ca006e4d89e749c74424f8030000004d894c24104d895424084d891c244154498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004d89ed4c896b104c8973084c8b7424104c89334c8b8424a800000048c7c003000000ff15a6010000498d47e8483b45107303ff55504989c748c740f8020000004c8bb424980000004c89700849be38c379f1c27f00004c89306a016a014c8bb424c00000004c8bac24b8000000ff35530100004156415548c7c3010000004c8d4424184c8b8c24b80000004c8b542428ff1528010000415d415e488d6424084d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424584d8956204d895e184c8b5c24604d895e104d8966084c8b6424684d89264d8d5fe84c3b5d107306ff5550ca00604d89df49c743f8020000004c8b24244d896308488d6424084c8b24244d8923488d6424204d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004c8b24244d896208488d6424104c8b24244d8922488d6424384d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d895c24104d896c240849c70424390000004c8b6c24084d8965004d89750848c7c0010000004883c428c21000f4000000000000|@18195,1,@4043,@8865,@18100,@8676,@5240,@5240,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@8659,@8867,@5027,@5031,@5030,@8868,@8820,@8821,@8657,@8818,@8657,@8818,@5240,@5027,@5031,@5030,@8868,@8868,@8737,@8676,@5240,@5240,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@8715,@8864,@8657,@8818,@8657,@8737,@5027,@5031,@5030,@8737,@5027,@5031,@5030,@8802,@5240,@5240|846,0,@8757 994,0,@18100 1014,0,@10468 1059,0,@11094 1105,0,@18101 1183,0,@10983 1208,0,@11272 2306,0,@10638 2720,0,@10220 2730,0,@10221 2905,0,@10223 2928,0,@10226 2977,0,@8759 3026,0,@8760 3504,0,@10220 3514,0,@10221 3689,0,@10223 3712,0,@10226 3761,0,@8762 3819,0,@8763 3919,0,@8764 3954,0,@18100 4703,0,@10220 4713,0,@10221 4888,0,@10223 4911,0,@10226 4969,0,@8765 5536,0,@10220 5546,0,@10221 5721,0,@10223 5744,0,@10226 5902,0,@8770 6077,0,@18100 6116,0,@8771 6877,0,@10220 6887,0,@10221 7062,0,@10223 7085,0,@10226 7191,0,@8857 7290,0,@8858 7326,0,@18100 7407,0,@8859 7503,0,@8860 7539,0,@18100 8285,0,@10220 8295,0,@10221 8470,0,@10223 8493,0,@10226 8944,0,@10638 9358,0,@10220 9368,0,@10221 9543,0,@10223 9566,0,@10226 9627,0,@8861 10194,0,@10220 10204,0,@10221 10379,0,@10223 10402,0,@10226 10560,0,@8862 10720,0,@8863 8757:D4,440|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2d3f010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3f400000000|@18071,1,@3935,@9564|93,0,@9872 125,0,@9496 176,0,@9564 242,0,@10468 8758:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@3936| 8759:D3,48|483b65187305ff5558cd054881f8830000007502eb0f4881f8850000007406488b5208ff2248c7c003000000c3f40000|@10371,1,@3937| 8760:D9,344|483b65187305ff5558cd0552506a016a016a0148c7c0010000004889e3ff1575010000415d415c415b4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e41564c8b7424104d8b460848c7c003000000488b1c24ff15250100004989c64156498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be287678f1c27f00004c89336a016a014c8b7424284d8b460848b880b1d5f1c27f00004989e1ff15ca000000ff3424ff7424104c8b742438498b5e08488b4424084c8b0424ff15a30000004c8b742438498b5e0848c7c023000000ff15850000006a016a014c8b7424484d8b76086a015448830424084156488b442458488b5c24304c8b4424484c8b4c24504c8b542428ff1547000000415e415d488d642440498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f40000|@18080,1,@3939,@8721,@8657,@5414,@8688,@8676,@5240|147,0,@8761 173,0,@18034 8761:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3938| 8762:D3,40|483b65187305ff5558cd054881f883000000750848c7c003000000c3488b5208ff22f40000000000|@10371,1,@3940| 8763:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18074,1,@3941,@8707| 8764:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@10371,1,@3942| 8765:D4,72|483b65187305ff5558cd056a016a014c8b42084c8b4a104889e3ff1540000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4|@18104,1,@3946,@8766| 8766:D19,3736|483b65187306ff5558ca0903505341504151488b4424084c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc4d0f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15430d0000ff15350d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff156d0c0000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424184c89730849be508778f1c27f00004c89336a016a0148b8d8bbd5f1c27f00004c8b4424184989e1ff15190c0000ff3424ff742410488b442408488b5c24284c8b0424ff15f60b0000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f85e20600004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff151b0a0000ff150d0a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1545090000488b4424284c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc4d0f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff156a070000ff155c0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1594060000eb006a016a0148b8d8bbd5f1c27f0000488b5c24484c8b4424384989e1ff1569060000415c41584c8b1c244d8b2b4d89db4d8b4b104d89db498b73204d8b5008498b78184d8d77d04c3b75107306ff5550cac03f4d89f749c746f8050000004989762049897e184d894e104d8956084d892e49bda854d1f1c27f00004d8d4ff04c3b4d107306ff5550ca00794d89cf49c741f80100000041c641ff404d892949bd20b1d1f1c27f00004d8d57f04c3b55107306ff5550ca007b4d89d749c742f80100000041c642ff404d892a49bda0bfd5f1c27f0000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892f4d8d6fd04c3b6d107306ff5550ca805f4d89ef49c745f80500000049897d204d8945184d894d104d8955084d8965004d8d57e84c3b55107306ff5550ca00684d89d749c742f8020000004d896a0849c7021d00000049bc20b1d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f8060000004d895424284d89db4d895c2420488d6424084d8974241849c7442410010000004d896c24084c8b2c244d892c24488d6424084c8b6c24204d8965004d89750848c7c0010000004883c430c34983fc4b0f85b80300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f7020000ff15e90200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1521020000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849bee08778f1c27f00004c89304c8b7424204d8b46106a016a01488b5c24384989e1ff15d0010000415d415e4c8b14244d8b224d89d24d8b4a104d89d2498b7a204d8b5e084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d895e084d89264d8d5ff04c3b5d107306ff5550ca00644d89df49c743f8010000004d892b49bc20b1d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67c84c3b65107306ff5550ca006c4d89e749c74424f80600000049b9686bd1f1c27f00004d894c24284d89d24d89542420488d6424084d897424184d895c24104d896c24084c8b2c244d892c24488d6424084c8b6c24204d8965004d89750848c7c0010000004883c430c349be20b1d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67c84c3b65107306ff5550ca00204d89e749c74424f80600000049be686bd1f1c27f00004d897424284c8b34244d89f34d897424204d89db4d89de4d895c241849c7442410010000004d896c24084c8b6c24084d892c244c8b6c24304d8965004d89f64d897508488d64241048c7c0010000004883c430c3f400000000000000|@18105,1,@3947,@8678,@5027,@5031,@5030,@8688,@5027,@5031,@5030,@5027,@5031,@5030,@5414,@8688,@5027,@5031,@5030|461,0,@10220 471,0,@10221 646,0,@10223 669,0,@10226 720,0,@8767 737,0,@18085 1229,0,@10220 1239,0,@10221 1414,0,@10223 1437,0,@10226 1894,0,@10220 1904,0,@10221 2079,0,@10223 2102,0,@10226 2124,0,@18085 2232,0,@10468 2277,0,@11094 2322,0,@18103 2451,0,@11094 3001,0,@10220 3011,0,@10221 3186,0,@10223 3209,0,@10226 3258,0,@8769 3407,0,@11094 3481,0,@10638 3562,0,@11094 3636,0,@10638 8767:D3,40|483b65187305ff5558cd054883f8237502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@10371,1,@3943| 8768:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@3944| 8769:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3945| 8770:D4,480|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c64983fe010f85a60100004c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2d4b010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3488d642410498b06c3f400000000000000|@18106,1,@3948,@9564|121,0,@9872 153,0,@9496 204,0,@9564 270,0,@10468 8771:D4,96|483b65187305ff5558cd056a016a014c8b42084c8b4a104c8b52184c8b72204c8b6a2841564155488d5c2410ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18107,1,@3949,@8772| 8772:D4,320|483b65187306ff5558ca0907536a016a014c8b7424284c8b6c24204152415641554d89ca4d89c14989c048c7c001000000488d5c2418ff151c010000415b415e49c7c5010000004d8d4ff04c3b4d107306ff5550ca00684d89cf49c741f80100000041c641ff404d892949bd20b1d1f1c27f00004d8d57f04c3b55107306ff5550ca006a4d89d749c742f80100000041c642ff404d892a49bcb80bd1f1c27f00004d8d6ff04c3b6d107306ff5550ca005e4d89ef49c745f80100000041c645ff404d89650049bcb80bd1f1c27f00004d8d47f04c3b45107306ff5550ca007e4d89c749c740f80100000041c640ff404d89204d8d67c84c3b65107306ff5550ca006f4d89e749c74424f8060000004d894424284d894c24204d897424184d895424104d895c24084d892c24415d4d8965004d89750848c7c001000000c21000f4|@18112,1,@3952,@8773|108,0,@11094 153,0,@9948 199,0,@9948 8773:D22,5216|483b65187306ff5558ca090750534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424104d89700849be58a178f1c27f00004d89306a016a01488b442410488b5c24184989e14c8b542418ff15aa140000488b0424ff7424086a016a016a01488b5c24384989e0ff1586140000ff3424ff742410ff7424204c8b6c24684d89ee4983fd017505e9aa0800004d89f64d8b364d8b2641ff76084c3b6424107502eb3d4d8b34244e8d3475010000004c8b6c24104d8b5d004c89d94e8d1c5d010000004d3bf3751d4d89ed498d7424084d89ed498d7d08483bc9f3a67402eb05e9570400004c8b4c24584d8b59284d89c94d8b69304d89c94d8b51504d89c94d8b71704d89c94d8b49784d8b124d8b1b4d8b014d8b0e4d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e41564c8b7424184d8b2e4e8d1c6d010000004983fb01750f49bda0c0d5f1c27f0000e9b10000004d89da4983c23e4c89d04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0c45010000004c3b0db21200000f875d1200004d89c84e8d2c850400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005e4d89ef49d1e84d8945f841c645ff414983e9024bc7448dfc0000000049d1ea4d89550049baa0c0d5f1c27f000048c7c13f000000498d7208498d7d0848d1e9f3a44c89d94d89f6498d7608498d7d2748d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f49bad0c0d5f1c27f0000e9b40000004d89f34983c3484c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d0c45010000004c3b0dd81100000f87731100004d89c84e8d14850400000049f7da4d03d74c3b551072054d3bd77206ff5550ca007a4d89d749d1e84d8942f841c642ff414983e9024bc7448afc0000000049d1eb4d891a4c89f1498d7508498d7a0848d1e9f3a44983c61049bdd0c0d5f1c27f000048c7c149000000498d750849d1ee4b8d3c3248d1e9f3a4418062ffbf4d8b324e8d3475010000004d8b2c244e8d1c6d010000004983fe0175084d89e5e9b50000004983fb0175084d89d5e9a70000004f8d4c1eff4c89c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d0445010000004c3b05eb1000000f87761000004c89c74c8d2cbd0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005f4d89ef48d1ef49897df841c645ff414983e8024bc74485fc0000000049d1e94d894d004c89f1498d7208498d7d0848d1e9f3a44983c6104c89d9498d74240849d1ee4b8d7c350048d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8b071d1f1c27f0000e9a50000004d89f44983c4044c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d191000000f87940f00004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c6104d89f549d1ed42c604282749d1ee42c6443001278060ffbf48bb4830d1f1c27f0000ff154c100000ff153e1000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24584d8b75184d89ed498b556049c70603000000ff124c8b34244c3b742408750a488d642408e9e60300004c8b5424584d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648bae81cd1f1c27f0000488b44241048c7c303000000ff150e0f00004989c64d8b2e4e8d2c6d010000004983fd01750f49bc08c1d5f1c27f0000e9b30000004d89eb4983c3204c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b150b0e00000f87760d00004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb08c1d5f1c27f000048c7c121000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241848d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49be28c1d5f1c27f0000e9b60000004d89eb4983c34c4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b152f0d00000f878a0c00004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c51049bc28c1d5f1c27f000048c7c14d000000498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbf415648bae81cd1f1c27f0000488b44241048c7c303000000ff153b0d00004989c54c8b1c244d8b334e8d3475010000004d8b65004e8d2465010000004983fe01750d488d6424084c89e8e9bd0000004983fc01750d4c89d8488d642408e9aa0000004f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d110c00000f875c0b00004d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f14d89db498d7308488d642408488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff15350c0000ff15270c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24584d8b75184d89ed498b556049c70603000000ff124883c408488b5c24504c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f856c0200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15b3090000ff15a50900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15dd080000e9ab02000048b868dad0f1c27f0000ff15c0080000488b4424504c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc710f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424504889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15e5060000ff15d70600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff150f060000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424584c89730849bea0a178f1c27f00004c89336a016a014c8b9424980000004c8bb424900000004c8bac248800000041564155488b4424684c8d4424104c8b4c2470ff15a2050000415c415e4c8b5c24304d8b2b4d89db4d8b4b104d89db498b7b204d8b56084d8b46184d8d5fd04c3b5d107306ff5550ca80774d89df49c743f80500000049897b204d8943184d894b104d8953084d892b49c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fd84c3b6d107306ff5550ca005c4d89ef49c745f8040000004d8955184d895d104d8965084c8b6424104d8965004155488b4424584c8b58104d89dc4889c04c8b50484d89d54d8b1b4d8b124983fa5374054d89d3eb006a016a014983fb7d0f85040300004889c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424684889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1515030000ff15070300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff153f0200004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e084c8b6c24204d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89306a016a014c8bb424b00000004c8bac24a80000004c8ba424a0000000415641554154488d5c24184c8b8424980000004c8b8c24900000004c8b942488000000e83cedffff415d415e4c892c244c89742408eb0d48c70424010000004c89742408415d415e4d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d6424084c8b5c24304d8b2b4d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d892e4c8b6c24604d8965004d89750848c7c0010000004883c470c21800488da4248800000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23488da4248000000048b8f8c7d0f1c27f0000488b5d08ff23f4000000000000ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01ffffffffffffff01|@18149,1,@3978,@5027,@5031,@5030,@8802,@5027,@5031,@5030,@8661,@5027,@5031,@5030,@5333,@5030,@4983,@4983,@5333,@5030,@8854,@8776|55,0,@8774 361,0,@18108 499,0,@18108 571,0,@18109 728,0,@18109 1002,0,@10697 1182,0,@10221 1472,0,@10077 1520,0,@18110 1660,0,@18110 1732,0,@18111 1890,0,@18111 1931,0,@10077 2197,0,@10221 2813,0,@10220 2823,0,@10221 2998,0,@10223 3021,0,@10226 3042,0,@9586 3499,0,@10220 3509,0,@10221 3684,0,@10223 3707,0,@10226 3758,0,@8775 4443,0,@10220 4453,0,@10221 4628,0,@10223 4651,0,@10226 4995,0,@9487 5019,0,@9487 5043,0,@9487 5067,0,@9487 5091,0,@9487 5115,0,@9487 5139,0,@9487 8774:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3950| 8775:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@10371,1,@3951| 8776:D9,368|483b65187306ff5558ca090750534150415141524d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24204d896e2049bd98c1d5f1c27f00004d896e184c8b6c24184d89e94d896e104c8b2c244d896e0849bdb0a378f1c27f00004d892e415648b8e8c7d5f1c27f0000488b5c241849b8b8c1d5f1c27f0000ff152b0100004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24184d896e0849bd68f978f1c27f00004d892e4c8b6c2428498b45004d89ed498b5d084d89ed4d8b45106a016a01ff35d40000004156544883042410ff7424304c8b4c243049bae8c7d5f1c27f0000ff15ab0000005b4158488d6424086a016a01ff742430ff742430ff3589000000488b4424384c8d4c24184c8b542428ff156c000000488b44242048bbc8b2d5f1c27f000049b8f8c7d5f1c27f00004c8b4c2428ff15400000004c8b6c24184c8b34244d897500488d642408415e488d6424284d89750848c7c001000000c3f40000|@18193,1,@4034,@8670,@8794,@18113,@8845,@18027,@8670|55,0,@18113 89,0,@8777 104,0,@18147 119,0,@18115 168,0,@8801 231,0,@18147 299,0,@18043 309,0,@18148 8777:D41,8472|483b65187305ff5558cd0d5250534c8b7424104d8b66104d89e54d8b6424104d89f64d89eb4d8b6d484d8b24244d8b6d004983fd5374054d89eceb004d89f64d89dd4d8b53284d89f64d89eb41ff75304d89f64d89dd4d8b43504d89f64d89e94d8b5d704d89f64d89cd4d8b497841ff304d8b1241ff314d8b0b4d8d5fd04c3b5d107306ff5550ca00764d89df49c743f8050000004c8b04244d8943204d894b184c8b4c24084d894b104d8953084c8b5424104d891341534c8d1d080000004f8d5ca3fc41ffe3e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9e2060000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e96e060000909090e9a2060000909090e98b0a0000909090e90d120000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9481a0000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e95a1b0000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e9561b0000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9f11d00009090904d89f64d89ec4d8b6d104d89f64d89e14d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd4d7507488d642408eb1c4983fd0d7507488d642408eb0f4983fd310f8570040000488d6424084d89f64d89cb4d8b61104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc4d750949c7c403000000eb0749c7c40100000041544c8b24244983fc030f85870200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15241d0000ff15161d00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff153f1c0000eb004c8b7424304d8b6e204d89ec498b45004d89f64d89e5498b5c24084d89f64d8b45106a016a014d89f64d8b4e10ff35021c0000ff7424185448830424104c8b542450ff15e51b0000415c415e488d64240849bda854d1f1c27f00004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20b1d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bda8c1d5f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8975184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704241d0000004d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642408415d488d6424104d8965004d89750848c7c001000000c348b8c8b2d5f1c27f0000488b5c242849b8b8c1d5f1c27f0000ff156e1a00004c8b6c242049be686bd1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b8d0c1d5f1c27f0000ff15231a00004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b8b8c2d5f1c27f0000ff15df1900004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15fd170000ff15ef1700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff15181700004c8b7424284d8b6e104d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5b750949c7c601000000eb2f4d89f64d8b46184d89f64d8b4e084d89f64d8b56204d89ee415648c7c001000000488b5c2428ff15a91600004989c641564c8b7424304d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05b000000ff152f16000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b1c244d89de4d895c24184c8b5c24084d895c24104d896c240849c70424230000004c8b6c24284d8965004d89f64d897508488d64243048c7c0010000004883c410c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15e4130000ff15d61300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff15ff1200004c8b7424284d8b6e104d89ec4d8b5d284d89f64d89e54d8b64247041ff3341ff34244d89f64d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5d0f85140300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424384d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f5100000ff15e71000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff15101000004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004d89ee4c89700849beb0c778f1c27f00004c89306a016a016a014889e3ff15360f0000488d642408415a488d6424086a016a014c8b6424384d8b4424104d89e44d8b7424184d89e44d8b6c24084d89e44d8b64242041564155415448c7c001000000488d5c24184c8b4c2448ff15df0e0000ff3424ff7424104c8b7424484d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424204d8955204d895d184c8b5c24284d895d104d8965084c8b6424304d896500415548c7c05d000000ff15630e000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d04c3b65107306ff5550ca00204d89e749c74424f8050000004c8b1c244d89de4d895c24204c8b5c24084d895c24184d896c24104c8b6c24104d896c240849c704241f0000004c8b6c24404d8965004d89f64d897508488d64245848c7c001000000c3488d6424084d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15120c0000ff15040c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff152d0b00004c8b7424284d8b6e104d89ec4d8b6d104d89f64c89e34d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd5f757d4989dc4c8b73284d89e54d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b1c244d895d204d8965184c8b6424084d8965104d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70637000000e9ba0400004d8d47e84c3b45107306ff5550ca08404d89c749c740f8020000004c8b6c24204d89680849bd90ca78f1c27f00004d89286a016a014d89f6498b56184d89f6498b46204d89f64d89f64d8b56084989e1ff12ff34244c8b6c24404d8b75104d89f34d8b66104d89ed4d89de4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc170f85a50300004d89ed4d89f34d8b76104d89ed4d89dc4d8b5b484d8b134983fa53740c49c70353000000e9570200004d8b1e4983fb010f852c020000488d6424404d89e641ff7424284d89f4498b56384d89e641ff7424404d89f441ff76504d89e641ff74247041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff153d080000ff152f0800004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f00004d89ed498b4510ff15590700004c8b7424404d8b46184d89f64d8b4e084d89f64d8b56204d89f64d8b7610415648c7c001000000488b5c2440ff151f0700004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b34244d897500488d6424084c8b6424384d8b7424104d89f34d8b76284d89dc4d8b6424704d8b364d8b24244d8d5fd04c3b5d107306ff5550ca00704d89df49c743f8050000004c8b5424104d8953204d8963184c8b6424184d8963104d8973084c8b7424204d893349bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d8934244d8d77d84c3b75107306ff5550ca00384d89f749c746f8040000004d895e184d8966104d896e0849c706330000004883c410e98a0000004d89f44d8b76284d89e54d8b6d704d8b364d8b65004d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004c8b5c24184d895d204d8965184c8b6424204d8965104d8975084c8b7424284d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7062d0000004883c41041564c8b7424304d8b66104d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05f000000ff152b0500004c8b6c24284c8b7424084d8975004c8b34244d897508488d64243048c7c0010000004883c410c34d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b878c3d5f1c27f000048bb4830d1f1c27f0000ff1582040000ff15740400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24304d8b75104d89f44d8b76184d89e5498b556049c70603000000ff124c8b742430498b5e0848b8b0c3d5f1c27f0000ff15b70300004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b818c4d5f1c27f0000ff15730300004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c34d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66104d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a104d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1596010000ff15880100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75104d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4610ff15b10000004d8d67e84c3b65107303ff55504d89e749c74424f8020000004c8b2c244d89ee4d896c240849c704243d0000004c8b6c24204d8965004d89f64d897508488d64240848c7c0010000004883c430c34d89f6498b5e0848b868c4d5f1c27f0000ff15440000004989c64c8b6c24204d8975004c8b34244d897508488d64240848c7c0010000004883c430c3f4000000000000|@18136,1,@3961,@8787,@5027,@5031,@5030,@8787,@8787,@5333,@5030,@8657,@8788,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8790,@5322,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8798,@5027,@5031,@5030,@8787,@8787,@8670,@8786,@18027,@5027,@5031,@5030|1308,0,@10220 1318,0,@10221 1500,0,@10223 1524,0,@10226 1630,0,@10468 1675,0,@11094 1720,0,@18114 1957,0,@18043 1972,0,@18115 1993,0,@10638 2039,0,@18116 2099,0,@18122 2563,0,@10220 2573,0,@10221 2755,0,@10223 2779,0,@10226 3019,0,@10468 3572,0,@10220 3582,0,@10221 3764,0,@10223 3788,0,@10226 4299,0,@10220 4309,0,@10221 4491,0,@10223 4515,0,@10226 4720,0,@8781 4943,0,@10468 5502,0,@10220 5512,0,@10221 5694,0,@10223 5718,0,@10226 5954,0,@8782 6459,0,@10220 6469,0,@10221 6651,0,@10223 6674,0,@10226 6887,0,@10468 7374,0,@18126 7384,0,@10221 7571,0,@18127 7631,0,@18130 8090,0,@10220 8100,0,@10221 8282,0,@10223 8306,0,@10226 8414,0,@18132 8778:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@3953| 8779:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bce0c1d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3954|16,0,@10468 88,0,@18117 8780:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc8c2d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3955|16,0,@10468 88,0,@18123 8781:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80b3d5f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80b3d5f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898b3d5f1c27f0000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98b3d5f1c27f000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@18125,1,@3956,@5333,@5030|36,0,@18048 174,0,@18048 243,0,@18049 399,0,@18049 436,0,@10221 623,0,@9487 644,0,@9487 8782:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3957| 8783:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc0c3d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3958|16,0,@10468 88,0,@18128 8784:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc28c4d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3959|16,0,@10468 88,0,@18131 8785:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc78c4d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3960|16,0,@10468 88,0,@18133 8786:D6,832|483b65187306ff5558ca09075341516a016a01488b4424384c89d34c8b4424104989e1ff153f030000ff3424ff742410488b542428488b442408ff124989c641f6c60175374d8b364d8b76084d8b264d89e54983fc03750949c7c603000000eb194d89ee4983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe030f85700200004c8b7424404983fe030f845a0200004c8b7424084d8b2e4a8d0c6d010000004883f901750f49bd70d8d0f1c27f0000e9950000004989cc4983c4024c89e04883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1c45010000004c3b1d470200000f87ea0100004d89da4e8d2c950400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca02584d89ef49d1ea4d8955f841c645ff414983eb024bc7449dfc0000000049d1ec4d89650041c64508284d89f6498d7608498d7d0948d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b8d0c4d5f1c27f0000e9b20000004d89f44983c45c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d890100000f871f0100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bdd0c4d5f1c27f000048c7c15d000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1527010000ff15190100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700010000004c8b742418498b5660ff124883c408eb36488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d642410eb05488d6424104c8b6c24284c8b34244d897500488d642408415e4d89750848c7c0010000004883c410c21800f400000000000000ffffffffffffff01ffffffffffffff01|@18146,1,@3975,@6249,@5030,@8688|180,0,@9565 362,0,@18135 518,0,@18135 555,0,@10221 723,0,@9487 744,0,@9487 8787:D6,752|483b65187305ff5558cd095053488b04244c8b700841ff364889c04c8b40284d89c14889c04c8b60304889c0488b78504989fa4889c04c8b70704d89f34889c0488b70784989f5488b3f4d8b00488b16498b364d8d77d04c3b75107306ff5550cac53f4d89f749c746f805000000498956204989761849897e104d8946084d892641564889c04c8b70104889c04c8b60484d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424104889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1503010000ff15f50000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff152d000000488b542418488b4424085b488d642418ff22f40000|@18137,1,@3962,@5027,@5031,@5030|509,0,@10220 519,0,@10221 694,0,@10223 717,0,@10226 8788:D6,928|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849be68d778f1c27f00004d89306a016a01488b542420488b5c2438488b4424104989e14c8b542418ff12ff34244c8b7424404d8b76104c8b6c24404d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe170f85dd0200004c8b7424404d8b76104c8b6c24404d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424384c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1581010000ff15730100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442440ff15a80000004c8b742440415648c7c001000000488b5c24384c8b4424304c8b4c24284c8b542420e8c9fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c430c20800498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c430c20800f4|@18138,1,@3964,@5027,@5031,@5030|54,0,@8789 559,0,@10220 569,0,@10221 742,0,@10223 765,0,@10226 8789:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3963| 8790:D16,3680|483b65187306ff5558ca090753415041514152488b5c24104c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc730f8596020000488d6424104889d84889c04d8b65004983fc537412488d64240849c7450053000000e94a0200004d8b2e4983fd010f85210200004889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15ed0c0000ff15df0c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15170c0000488d642408415d49beb05fd1f1c27f00004d8b264d8965004d8b76084d89750848c7c001000000c218004d8d6fe84c3b6d107305ff5550cd084d89ef49c745f8020000004c8b6424084d89e64d89650849bca8e678f1c27f00004d8965004155498d47e8483b45107306ff5550ca08404989c748c740f8020000004d89f64c89700849bef8e678f1c27f00004c89306a016a014989e0ff15730b0000ff3424ff742410488b542428498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff124c8b5424384d8b62104d89e64d89d24d8b5a484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc230f858a0200004c89d04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424484889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff155c090000ff154e0900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1586080000488b542470488b4424604c8b542468488b5c24484c8b4424304989e1ff12e9eb0300004c8b7424184d8b264d89e54e8d2465010000004983fc010f8ea70200004d89f64d89ec4e8d2c6d010000004983fd017f15488d64245848b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb65e084d89dd4e8d0c5d0100000049bb30c9d0f1c27f00004f8b448bfc4d8b184e8d0c5d010000004983f90373054c89c9eb0748c7c10300000049bb48d9d0f1c27f0000498d7008498d7b0848d1e9483bc9f3a67214770949c7c301000000eb1049c7c303000000eb0749c7c3ffffffff4983fb0175084983f9037208eb124983fb017d0c49c7c601000000e9c70000004e8d2465010000004983fc017f15488d64245848b8a8f8d0f1c27f0000488b5d08ff234d89ee4e8d2c750100000049be30c9d0f1c27f00004f8b64aefc4d8b34244e8d2c75010000004983fd0373054c89e9eb0748c7c10300000049be08dad0f1c27f0000498d742408498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175184983fd03770949c7c603000000eb0749c7c601000000eb164983fe017f0949c7c603000000eb0749c7c6010000004983fe030f85170100004d89d24d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8f0c5d5f1c27f000048bb4830d1f1c27f0000ff1534060000ff15260600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24484d8b75184d89ed498b556049c70603000000ff12eb0049bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff404d89342449be20b1d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89750049be28c6d5f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204c8b5c24104d89d84d895e184d8966104d896e084c8b6c24184d892e498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004c89730848c7031d0000006a016a014c8b5424784c8b7424704c8bac24800000004156ff7424604155488b4424584c8d4c2418ff156d040000415d415e4c892c244c89742408415b415a4c8b24244d8b34244d89e44d8b4c24104d89e4498b7c24204d8b6a084d8b42184d8d57d04c3b55107306ff5550ca807b4d89d749c742f80500000049897a204d8942184d894a104d896a084d893249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8975004d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d895e184d89e44d896610488d6424084d896e084c8b2c244d892e488d6424084156488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc170f85ea0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15c4010000ff15b60100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15ee0000006a016a014c8b7424684c8b6c24604c8b64245841564155415448c7c001000000488d5c24184c8b4424584c8b4c24504c8b542448e83df2ffff415c415d4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d896e084c8b2c244d892e488d6424084c8b6c24304d8965004d89750848c7c0010000004883c438c218004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e488d6424084c8b6c243049c74500030000004d89750848c7c0010000004883c438c21800f400000000000000|@18142,1,@3969,@5027,@5031,@5030,@8794,@5333,@5030,@5027,@5031,@5030,@8689,@5027,@5031,@5030|467,0,@10220 477,0,@10221 652,0,@10223 675,0,@10226 698,0,@10542 771,0,@8791 821,0,@8792 1348,0,@10220 1358,0,@10221 1533,0,@10223 1556,0,@10226 1661,0,@9872 1696,0,@9496 1740,0,@9574 1846,0,@9872 1873,0,@9496 1918,0,@9582 2132,0,@18139 2142,0,@10221 2315,0,@10468 2363,0,@11094 2409,0,@18140 2692,0,@10468 3244,0,@10220 3254,0,@10221 3429,0,@10223 3452,0,@10226 8791:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3965| 8792:D3,56|483b65187305ff5558cd054883f823750848c7c003000000c34883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f40000|@10371,1,@3966| 8793:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@3967| 8794:D9,1376|483b65187306ff5558ca09074989de504150415141524d8b2e4983fd1d750949c7c503000000eb0749c7c5010000004155498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c8b6c24204c896b0849bd50ed78f1c27f00004c892b6a016a01488b442450ff7424184d89f04c8b4c24304c8d542408ff151e050000ff34244c8b7424104c8b6c24504d8b6d104c8b6424504d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004983fd0b0f857c0400004c8b7424504d8b76104c8b6c24504d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424404c8b74241041ff76284c8b742418498b56384c8b74241841ff76404c8b74242041ff76504c8b74242841ff76704c8b74243041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74241041ff76284c8b742418498b56384c8b74241841ff76404c8b74242041ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424104d8b66284c8b7424104d8b6e304c8b7424104d8b5e504c8b7424104d8b76704c8b5424104d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1526030000ff15180300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424104d8b76184c8b6c2410498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442450ff154d0200004c8b7424184983fe030f84230100004c8b7424504d8b66284c8b7424504d8b6e304c8b7424504d8b5e504c8b7424504d8b76704c8b5424504d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b838c6d5f1c27f000048bb4830d1f1c27f0000ff15b2010000ff15a40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424504d8b76184c8b6c2450498b556049c70603000000ff12eb006a016a01488b542458488b442468488b5c24604c8b4424484989e14c8b542430ff12415d415e4c8b5c24304d8b234d89db4d8b53104d89db4d8b43204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c70424210000004c8b6c24204d8965004d89750848c7c0010000004883c438c218004c8b6c24284c8b24244d896500488d6424084d89750848c7c0010000004883c438c21800f40000000000|@18143,1,@3971,@5333,@5030,@5027,@5031,@5030,@8796|87,0,@8795 602,0,@10220 612,0,@10221 785,0,@10223 808,0,@10226 950,0,@18141 960,0,@10221 8795:D3,32|483b65187305ff5558cd054883f80b750848c7c003000000c3488b5208ff22f4|@10371,1,@3968| 8796:D7,1000|483b65187306ff5558ca090750534150415141524c8b74242041ff76104c8b7424384d8b76104c8b6c24384d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe130f85710300004c8b7424384d8b76104c8b6c24384d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424304c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1515020000ff15070200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442438ff153c010000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849bec8f178f1c27f00004c89306a016a01488b5c24484c8b4424104989e1ff15ef000000415e415a488d6424084c8b6424084d8b2c244d89e44d8b5c24104d89e44d8b4424204d8b62084d8b52184d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f8050000004d8941204d8951184d8959104d8961084d89294d8d47d84c3b45107306ff5550ca00424d89c749c740f8040000004d8948184c8b6c24104d8968104d89700849c7000b000000488b442420488b5c2418415a488d6424204c8b6c24084c896c2408e944fcffff488d642408415d4c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c410c20800f4|@18144,1,@3972,@8678,@5027,@5031,@5030|491,0,@10220 501,0,@10221 674,0,@10223 697,0,@10226 751,0,@8797 8797:D3,32|483b65187305ff5558cd054883f813750848c7c003000000c3488b5208ff22f4|@10371,1,@3970| 8798:D6,928|483b65187306ff5558ca0907534150415141524d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424184d89700849bef0f578f1c27f00004d89306a016a01488b542420488b5c2438488b4424104989e14c8b542418ff12ff34244c8b7424404d8b76104c8b6c24404d8b6d484d8b364d8b6d004983fd5374054d89eeeb004983fe170f85dd0200004c8b7424404d8b76104c8b6c24404d8b6d484d8b65004983fc53740d49c7450053000000e9580200004d8b2e4983fd010f852f020000488d6424384c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff76504c8b74242041ff76704c8b74242841ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b74240841ff76284c8b742410498b56384c8b74241041ff76404c8b74241841ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b7424084d8b66284c8b7424084d8b6e304c8b7424084d8b5e504c8b7424084d8b76704c8b5424084d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1581010000ff15730100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b7424084d8b76184c8b6c2408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000488b442440ff15a80000004c8b742440415648c7c001000000488b5c24384c8b4424304c8b4c24284c8b542420e8c9fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424084883c430c20800498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c430c20800f4|@18145,1,@3974,@5027,@5031,@5030|54,0,@8799 559,0,@10220 569,0,@10221 742,0,@10223 765,0,@10226 8799:D3,40|483b65187305ff5558cd054883f85b7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3973| 8800:D3,768|483b65187305ff5558cd014883f84d750848c7c003000000c34883f841750848c7c003000000c34883f83f750848c7c003000000c34883f843750848c7c003000000c34989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f80d7502eb1c4883f83174164883f879750848c7c003000000c348c7c001000000c348c7c003000000c3f400000000|@10371,1,@3976| 8801:D3,40|483b65187305ff5558cd054883f80b7502eb0c4883f8137406488b5208ff2248c7c003000000c3f4|@10371,1,@3977| 8802:D9,2176|483b65187306ff5558ca090750534150415141524c8b6c24384c8b6424304d8d77c04c3b75107306ff5550ca00304d89f749c746f8070000004c8b5c24204d895e304d8966284d896e204c8b2c244d896e1849bd58c8d5f1c27f00004d896e104c8b6c24084d89e94d896e0849bd900279f1c27f00004d892e415648b838cad5f1c27f0000488b5c242049b848cad5f1c27f0000ff15260800004c8b4424104d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe2f7505e99f0300004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904983fe31750949c7c503000000eb0749c7c501000000eb3449c7c503000000eb2b49c7c503000000eb2249c7c503000000eb1949c7c503000000eb1049c7c503000000eb0749c7c5030000004983fd037505e9160100004983fe237502eb0e4983fe0d7502eb064983fe317505e9fb0000004983fe417505e9f00000004983fe437505e9e50000004983fe3f7505e9da0000004983fe4d7505e9cf0000004983fe450f84c50000004983fe277505e9b80000004983fe0f7505e9ad0000004981fe810000007505e99f0000004983fe337505e9940000004983fe550f848a000000488d6424104d89c04d8b60284d89c04d8b68304d89c04d8b58504d89c04d8b70704d89c04d8b5078488d6424084d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415d49bc686bd1f1c27f00004d8965004d89750848c7c0010000004883c410c21000eb00498d47e8483b45107306ff5550ca00014989c748c740f8020000004c8b7424204c89700849be605779f1c27f00004c89306a016a014c8b7424504c8b6c2448ff74241841564155ff742428488d5c24204c8b4c245849ba58c8d5f1c27f0000ff15ed030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc2d0f85510300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff150b020000ff15fd0100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15350100006a016a014c8b7424704c8b6c2468ff74243841564155488b442468488d5c24184c8b4424584c8b4c247049ba58c8d5f1c27f0000ff15f3000000415d415b4c8b34244d8b264d89f64d8b4e104d89f6498b7e20488d6424084d8b53084d8b43184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8956084d89264d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d897424184d896c24104c8b2c244d896c2408488d64240849c704241b0000004c8b6c24284d8965004d89750848c7c0010000004883c440c210004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c440c21000f400|@18164,1,@4005,@8830,@5027,@5031,@5030,@8828,@8670|84,0,@18150 110,0,@8803 125,0,@18162 140,0,@18163 1094,0,@10638 1164,0,@8827 1213,0,@18150 1677,0,@10220 1687,0,@10221 1862,0,@10223 1885,0,@10226 1943,0,@18150 8803:D62,14360|488dbc2450ffffff483b7d187305ff5560cd0d5250534c8b7424104d8b66084d89e54d8b6424104d89f64d89eb4d8b6d484d8b24244d8b6d004983fd5374054d89eceb004d89f64d89dd41ff73304d89f64d89eb4d8b55504d89f64d89dd4d8b5b7841ff3241ff334983fc450f85fb0300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15de370000ff15d03700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15f93600004c8b7424284d8b66304d89e541ff7424084d89ee41ff76106a016a016a0148c7c0010000004889e3ff15c3360000488d642408415d415e4d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104c8b7424084d8974240849bea83c79f1c27f00004d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004c8b1c244d895e10488d6424104d8966084d892e4156498d47e8483b45107303ff55504989c748c740f8020000004c8b7424284c89700849be103d79f1c27f00004c89304c8b7424304d8b46084d89f64d8b4e184d89f64d8b56204d89f64d8b76284156488b5c2408ff15ef3500004989c641564c8b742438498b5e0848c7c035000000ff15cc3500004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24304d896e0849bd583d79f1c27f00004d892e41564c8b7424404d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e99a3000004983fc410f85630600004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15a9330000ff159b3300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15c43200004c8b7424284d8b6e084d89ec4d8b5d284d89f64d89e54d8b64247041ff3341ff34244d89f64d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb004983fc5d0f85140300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424384d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15ba300000ff15ac3000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15d52f00004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d47e8483b45107306ff5550ca00604989c748c740f8020000004d89ee4c89700849bea83d79f1c27f00004c89306a016a016a014889e3ff15fb2e0000ff7424084c8b7424484d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9732700004983fc430f85f50c00004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15042d0000ff15f62c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff151f2c00004c8b6c24284d8b75084d89f44d8b5e284d89ed4d89e64d8b64247041ff3341ff34244d89ed4d89f44d8b76104d89ed4d89e14d8b6424484d8b364d8b24244983fc5374054d89e6eb004983fe5f0f850f0300004d89ed4d89cb4d8b71104d89ed4d89dc4d8b5b484d8b134983fa53740c49c70353000000e9570200004d8b1e4983fb010f852c020000488d6424384d89e641ff7424284d89f4498b56384d89e641ff7424404d89f441ff76504d89e641ff74247041ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15182a0000ff150a2a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f00004d89ed498b4508ff15342900004d8d77d04c3b75107303ff55504d89f749c746f8050000004c8b6c24104d896e204c8b2c244d896e18488d6424084c8b6c24104d896e104c8b2c244d896e08488d6424184c8b2c244d892e488d6424084d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c7042437000000415d4d8965004d89750848c7c0010000004883c410c3488d642410498d5fe8483b5d107306ff5550ca00224989df48c743f8020000004c8b7424204c89730849be884079f1c27f00004c89336a016a014d89ed498b55104d89ed498b45304d89ed4d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d28415641554c8d442410ff12ff34244c8b7424404d8b6e084d89eb4d8b65104d89f64d89dd4d8b5b484d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc610f85e60200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424504d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1545260000ff15372600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15602500004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24484d896e0849bde04079f1c27f00004d892e41564c8b7424584d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9821b00004983fc170f85e60200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424504d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff153d230000ff152f2300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15582200004d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24484d896e0849bd304179f1c27f00004d892e41564c8b7424584d8b66084d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e9021600004d89ec4d8b6d284d89e64d8b76704d8b6d004d8b264d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24284d895e204d8966184c8b6424304d8966104d896e084c8b6c24384d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b6424104d89650849c745002d0000004c892c244c89742408e92e1500004983fc3f0f851c0300004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15a51f0000ff15971f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15c01e00004c8b7424284d8b6e084d89eb4d8b6d104d89dc4d8b5b484d8b6d004d8b1b4983fb5374054d89ddeb004983fd5b745c4d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b5c24204d895d0849bb804179f1c27f00004d895d0041554d89e541ff7424304d89ec4d8b6d504d89e64d8b767841ff750041ff366a016a016a01e97a10000049c7c601000000e9710f00004983fc4d750949c7c403000000eb0749c7c40100000041544c8b24244983fc030f85870200004d89f64d89eb4d8b6d104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424304d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff154b1c0000ff153d1c00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15661b0000eb004c8b7424304d8b6e084d89ec4d8b6d104d89f64d89e34d8b6424484d8b6d004d8b24244983fc5374054d89e5eb004d89f64d89dc4d8b43284d89f64d89e24d8b5c24304d89f64d89d44d8b52504d89f64d89e14d8b6424704d89f64c89cb4d8b49784d8b1241ff304d8b0941ff34244d8d67d04c3b65107306ff5550ca086e4d89e749c74424f8050000004d894c24204c8b0c244d894c24184d895424104c8b5424084d895424084d891c2441544d89ec4c8d1d080000004f8d5ca3fc41ffe3e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9cc030000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e9d4030000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e90f090000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e927090000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e95f090000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9670900009090904983fd237507488d642418eb1c4983fd0d7507488d642418eb0f4983fd310f8594010000488d6424184d89f54d8b65304d89e6498b04244d89f44d8b76084d8b4424106a016a014989d9ff352c180000ff7424185448830424104c89f34c8b542450ff150c180000415c415e488d64240849bda854d1f1c27f00004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49bd20b1d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b49bdc8c8d5f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204d8975184d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c704241d0000004d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d896e084c8b2c244d892e488d642408415d488d6424104d8965004d89750848c7c001000000c348c7c031000000ff15a71600004c8b6c243849be686bd1f1c27f00004d8975004c8b34244d897508488d64240848c7c0010000004883c448c3488d64240848b8d8c8d5f1c27f0000ff155e1600004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d6424204d89f64989db4c8b6b104d89f64d89dc4d8b5b484d8b134983fa53740c49c70353000000e95c0200004d8b5d004983fb010f852f020000488d6424284d89e541ff7424284d89ec498b55384d89e541ff7424404d89ec41ff75504d89e541ff7424704d89ee41ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d8b66084d89e541ff7424284d89ec498b55384d89e541ff7424404d89ee41ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b6a084d89ee4d8b65284d89f34d8b6e304d89de4d8b5b504d89f14d8b76704d89ca4d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1536140000ff15281400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c745005300000048baf030d1f1c27f00004d89f6498b4608ff15511300006a016a014c8b742438498b5e08488b4424304989e0ff152e130000ff34244c8b7424104d8b6e084d8b66184d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004c8b5c24184d895e204d8966184c8b6424204d8966104d896e084c8b6c24284d892e415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156488b442410ff15631200004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4156488b0424ff15ff1100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e104c8b2c244d896e08488d64240849c7060700000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104d896b0849c7030d0000004d8975004d8d6fe04c3b6d107306ff5550ca00084d89ef49c745f8030000004c8b34244d897510488d6424084d895d0849c74500050000004d8d67d04c3b65107306ff5550ca00284d89e749c74424f8050000004c8b14244d89d64d895424204d895c24184d896c24104c8b6c24084d896c240849c70424310000004c8b6c24384d8965004d89f64d897508488d64245048c7c001000000c3488d64240848b8e8c8d5f1c27f0000ff15331000004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b8f8c8d5f1c27f0000ff15ab0f00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b808c9d5f1c27f0000ff15230f00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c3488d64240848b818c9d5f1c27f0000ff159b0e00004989c44d8d77d04c3b75107306ff5550ca00104d89f749c746f8050000004c8b6c24184d896e204c8b2c244d896e18488d6424084c8b6c24184d896e104c8b2c244d896e08488d6424084c8b6c24184d892e4c8b6c24204d8965004d89750848c7c0010000004883c438c341564c8b7424304d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424084d8955204d895d184c8b5c24104d895d104d8965084c8b6424184d896500415548c7c05b000000ff15b90d000049bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d67d84c3b65107306ff5550ca00204d89e749c74424f8040000004c8b1c244d89de4d895c24184c8b5c24084d895c24104d896c240849c70424230000004c8b6c24284d8965004d89f64d897508488d64243048c7c0010000004883c410c36a016a014c8b6c2470498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424800000004d8b460848c7c01700000048bbc8b2d5f1c27f0000ff15b90c00004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e943ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284883c420415e4883c428e969fdffffff3424ff7424104c8b742460498b5e0848c7c05f000000ff15640b00004c8b6c24504c8b7424084d8975004c8b34244d897508488d64242048c7c0010000004883c448c36a016a014c8bac2498000000498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424a80000004d8b460848c7c01700000048bbc8b2d5f1c27f0000ff15c80a00004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d897424084c8b7424604d8934244c8bb424a00000004d8b6e084d89eb4d8b6d284d89de4d8b76704d8b6d004d8b1e4d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424784d8956204d895e184c8b9c24800000004d895e104d896e084c8bac24880000004d892e49bda854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b4d8d6fd84c3b6d107306ff5550ca00584d89ef49c745f8040000004d8975184d895d104d89650849c74500330000004c896c24504c897424584883c450e92cfdffff6a016a014c8bac2498000000498b55104d89ed498b45304d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b5c24504c8d442410ff12ff3424ff7424104c8bb424a80000004d8b460848c7c06100000048bbc8b2d5f1c27f0000ff15300800004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e940ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b742420498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c89304c8bb424a00000004d8b6e084d89ec4d8b6d284d89e64d8b76704d8b6d004d8b264d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004c8b5c24784d895e204d8966184c8ba424800000004d8966104d896e084c8bac24880000004d892e4156ff156f0600004989c44d8d6fe04c3b6d107306ff5550ca00104d89ef49c745f8030000004c8b1c244d89de4d895d104d89650849c74500150000004c896c24584d89f64c89742460488d642458e9bafaffff6a016a014c8b9424880000004d8b4a084d89d24d8b72104d89d24d8b6a184d89d24d8b62204d89d24d8b5a284d89d24d8b52304156415541544153415248c7c001000000488d5c24284c8b8424a80000004c8b542468ff15bf050000ff3424ff7424104c8bb424980000004d8b460848c7c01700000048bbc8b2d5f1c27f0000ff158d0500004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e927ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b5c24204c8bb424900000004d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b55004d8d6fd04c3b6d107306ff5550ca081c4d89ef49c745f8050000004c8b4c24684d894d204d8955184c8b5424704d8955104d8965084c8b6424784d896500415549bda854d1f1c27f00004d8d67f04c3b65107306ff5550ca08284d89e749c74424f80100000041c64424ff404d892c244d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b14244d8955204d895d184d89651049c745080300000049c745001f000000415548c7c05d000000ff15820300004c8bac24900000004c8b34244d897500488d6424084c8b34244d897508488d64240848c7c0010000004881c498000000c36a016a014c8bac2480000000498b55104d89ed4d8b4d084d89ed4d8b55184d89ed4d8b75204d89ed4d8b6d2841564155488b442460488b5c24504c8d442410ff12ff3424ff7424104c8bb424900000004d8b460848c7c06100000048bbc8b2d5f1c27f0000ff15de0200004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e942ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c89742428ff7424204c8bb424900000004d8b66084d89e54d8b6424284c89eb4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca08184d89ef49c745f8050000004c8b5424684d8955204d895d184c8b5c24704d895d104d8965084c8b6424784d896500415548c7c01f000000ff15410100004c8bb424980000004d8b4e08488b84249000000048bbc8b2d5f1c27f000049b828c9d5f1c27f0000ff150b010000488b442460ff15f80000004989c64156488b442410ff15e00000004989c449c7c5010000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f8050000004d8975204c8b5c24084d89de4d895d1849c74510010000004c8b1c244d895d08488d6424084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424270000004c8bac24880000004d8965004d89f64d897508488d64241048c7c0010000004881c490000000c3f4000000000000|@18159,1,@3994,@8820,@8821,@8670,@8657,@8658,@8657,@8658,@8822,@8825,@8658,@8658,@8657,@8658,@8657,@8787,@8787,@8787,@8787,@5411,@5162,@8689,@5027,@5031,@5030,@8787,@8659,@8786,@18085,@5027,@5031,@5030,@5027,@5031,@5030,@5027,@5031,@5030,@5027,@5031,@5030,@5027,@5031,@5030,@5027,@5031,@5030,@5322,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8818,@5240,@5027,@5031,@5030|522,0,@10220 532,0,@10221 714,0,@10223 738,0,@10226 859,0,@8804 955,0,@8805 1071,0,@8806 1551,0,@10220 1561,0,@10221 1743,0,@10223 1767,0,@10226 2278,0,@10220 2288,0,@10221 2470,0,@10223 2494,0,@10226 2699,0,@8807 3196,0,@10220 3206,0,@10221 3388,0,@10223 3412,0,@10226 3920,0,@10220 3930,0,@10221 4112,0,@10223 4135,0,@10226 4342,0,@8808 4875,0,@10220 4885,0,@10221 5067,0,@10223 5091,0,@10226 5147,0,@8809 5627,0,@10220 5637,0,@10221 5819,0,@10223 5843,0,@10226 5899,0,@8810 6523,0,@10220 6533,0,@10221 6715,0,@10223 6739,0,@10226 6845,0,@8811 7357,0,@10220 7367,0,@10221 7549,0,@10223 7573,0,@10226 8447,0,@10468 8492,0,@11094 8537,0,@18152 8792,0,@10638 8836,0,@18153 9370,0,@10220 9380,0,@10221 9562,0,@10223 9586,0,@10226 9715,0,@10468 10098,0,@10468 10359,0,@18154 10487,0,@18155 10615,0,@18156 10743,0,@18157 10977,0,@10468 11209,0,@18043 11690,0,@18043 12142,0,@10468 12346,0,@18043 12997,0,@18043 13406,0,@10468 13668,0,@18043 14109,0,@18043 14119,0,@18158 8804:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@3979| 8805:D3,32|483b65187305ff5558cd054883f835750848c7c003000000c3488b5208ff22f4|@10371,1,@3980| 8806:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8617406488b5208ff2248c7c003000000c3f4|@10371,1,@3981| 8807:D5,680|483b65187306ff5558ca0d014989c652534d8b2e4e8d246d010000004983fc01750f49bd80b3d5f1c27f0000e9ae0000004d89e34983c30e4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b153f0200000f87160200004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb80b3d5f1c27f000048c7c10f000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d0f48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b898b3d5f1c27f0000e9b20000004d89f44983c4324c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d680100000f87320100004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd98b3d5f1c27f000048c7c133000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1506010000ff15f80000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75084d89f44d8b76184d89e5488d642408498b556049c70603000000ff22488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f40000000000ffffffffffffff01ffffffffffffff01|@18151,1,@3982,@5333,@5030|36,0,@18048 174,0,@18048 243,0,@18049 399,0,@18049 436,0,@10221 623,0,@9487 644,0,@9487 8808:D3,48|483b65187305ff5558cd054883f8177502eb0e4883f8617502eb064883f85f750848c7c003000000c3488b5208ff22f4|@10371,1,@3983| 8809:D3,40|483b65187305ff5558cd054883f8617502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3984| 8810:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@3985| 8811:D3,40|483b65187305ff5558cd054883f85b7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3986| 8812:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@3987| 8813:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bce0c1d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3988|16,0,@10468 88,0,@18117 8814:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc8c2d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3989|16,0,@10468 88,0,@18123 8815:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bcc0c3d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3990|16,0,@10468 88,0,@18128 8816:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc28c4d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3991|16,0,@10468 88,0,@18131 8817:D3,128|483b65187305ff5558cd094989c549bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca08304d89f749c746f80100000041c646ff404d8926498d47d0483b45107306ff5550ca08604989c748c740f80500000049bc78c4d5f1c27f00004c896020488958184c8968104c89700848c70025000000c3f400000000000000|@18121,1,@3992|16,0,@10468 88,0,@18133 8818:D6,1632|483b65187306ff5558ca09075053415041514152488b5c24104c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc610f85910200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424104889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15a1040000ff15930400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15cb030000488b442420488b5c24184c8b4424104c8b4c2408415a488d6424204c8b6c24084c896c2408e929fdffff4889db4889db4d8b364d8b6d004983fd5374054d89eeeb004d89f54c8d25080000004f8d64acfc41ffe4e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fe7b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe030f85b0000000498d47e8483b45107305ff5550cd084989c748c740f8020000004c8b7424204c89700849bef84b79f1c27f00004c89306a016a01488b5424184c8b742440ff742410415649c7c0030000004c8b4c24384c8d542410ff12ff34244c8b7424484156488b442440488b5c24384c8b4424304c8b4c24284c8b542420e8e6f9ffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642440c20800488d64242848c7c001000000c20800f40000000000|@18161,1,@4001,@5027,@5031,@5030|463,0,@10220 473,0,@10221 648,0,@10223 671,0,@10226 1472,0,@8819 8819:D3,720|483b65187305ff5558cd054989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb0c4883f8617406488b5208ff2248c7c003000000c3f4000000000000|@10371,1,@3993| 8820:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@3995| 8821:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@3996| 8822:D5,464|483b65187306ff5558ca090753415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424104c89700849be985279f1c27f00004c89306a016a01488b5c24184989e0ff159d010000ff3424ff742410488b542420498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1248c7c023000000488b5c2428ff154b010000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424304c89730849bee05279f1c27f00004c89336a016a01488b542478488b4424584c8b5424704c8b7424684c8b6c2460415641554c8d4424104c8b4c2448ff12415a415e4c8b1c244d8b2b4d89db4d8b4b104d89db498b7b204d8b66084d8b46184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d8946184d894e104d8966084d892e49bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca005c4d89ef49c745f80100000041c645ff404d8965004d8d67d04c3b65107306ff5550ca006c4d89e749c74424f8050000004d897424204d895424184d89db4d895c2410488d6424084d896c24084c8b2c244d892c24488d642430415d4d8965004d89750848c7c001000000c22800f400|@18160,1,@3999,@8657,@8689|54,0,@8823 192,0,@8824 329,0,@10468 8823:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@3997| 8824:D3,40|483b65187305ff5558cd054883f85d7502eb0c4883f8177406488b5208ff2248c7c003000000c3f4|@10371,1,@3998| 8825:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@4000| 8826:D3,824|483b65187305ff5558cd014883f82f7505e9180300004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037505e98f0000004883f8237502eb0e4883f80d7502eb064883f8317502eb774883f8417502eb6f4883f8437502eb674883f83f7502eb5f4883f84d7502eb574883f84574514883f827750848c7c003000000c34883f80f750848c7c003000000c34881f881000000750848c7c003000000c34883f833750848c7c003000000c34883f855750848c7c003000000c348c7c001000000c348c7c003000000c3f400|@10371,1,@4002| 8827:D3,32|483b65187305ff5558cd054883f82d750848c7c003000000c3488b5208ff22f4|@10371,1,@4003| 8828:D7,1072|483b65187306ff5558ca09075053415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849be205c79f1c27f00004c89306a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424404c8b4c24384c8b542430ff15e4030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc510f85500300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1502020000ff15f40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff152c0100006a016a014c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b442470488d5c24204c8b4424604c8b4c24584c8b542450e8a6fcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c704242b0000004c8b6c24284d8965004d89750848c7c0010000004883c438c220004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c438c22000f400|@18167,1,@4010,@5027,@5031,@5030,@8833|55,0,@8829 574,0,@10220 584,0,@10221 759,0,@10223 782,0,@10226 8829:D3,32|483b65187305ff5558cd054883f851750848c7c003000000c3488b5208ff22f4|@10371,1,@4004| 8830:D16,2872|483b65187306ff5558ca0907505341504151415248b8e8c7d5f1c27f0000488b5c242049b8506cd5f1c27f00004c8b4c2410ff15780b00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424204d89700849be306879f1c27f00004d89306a016a01488b442418488b5c24204989e14c8b542420ff15260b0000ff3424ff742410488b5c24304c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc710f856c0200004889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1544090000ff15360900004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff156e080000e9ab02000048b8203ed1f1c27f0000ff1551080000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc230f85690200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1576060000ff15680600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15a0050000eb00498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424404c89730849be786879f1c27f00004c89336a016a01488b5424304c8b5424704c8b7424684c8b6c246041564155488b4424484c8d4424104c8b4c2450ff12415c415e4c8b2c244d89eb41ff75004d89db4d89dd41ff73104d89ed41ff75204d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d8956204d895e184c8b5c24084d895e104d896e084c8b6c24104d892e49bdb80bd1f1c27f00004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d892b49bdb80bd1f1c27f00004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fc84c3b6d107306ff5550ca005e4d89ef49c745f8060000004d894d284d8975204d8955184d895d104c8b5c24204d895d084d8965004155488b4424504c8b58104d89dc4889c04c8b50484d89d54d8b1b4d8b124983fa5374054d89d3eb006a016a014983fb7d0f852f0300004889c04d89e64889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424604889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1540020000ff15320200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff156a0100006a016a014c8bb424a00000004c8bac24980000004c8ba42490000000415641554154488b842498000000488d5c24184c8b8424880000004c8b8c24800000004c8b542478e8c9f5ffff415c415e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084c8b6424104d8965004d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424184d8956204d895e184c8b5c24204d895e104d8966084c8b6424284d89264c892c244c89742408eb354d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424104d8965004c892c244c89742408488b44247048bbc8b2d5f1c27f000049b8a8cad5f1c27f00004c8b4c2460ff15440000004c8b6c24684c8b34244d897500488d642408415e4d89750848c7c0010000004883c468c21800f40000000000|@18166,1,@4008,@8670,@5027,@5031,@5030,@5027,@5031,@5030,@8661,@5027,@5031,@5030,@8776,@8670|22,0,@18147 37,0,@17643 91,0,@8831 580,0,@10220 590,0,@10221 765,0,@10223 788,0,@10226 809,0,@10294 1266,0,@10220 1276,0,@10221 1451,0,@10223 1474,0,@10226 1525,0,@8832 1683,0,@9948 1728,0,@9948 2320,0,@10220 2330,0,@10221 2505,0,@10223 2528,0,@10226 2799,0,@18043 2809,0,@18165 8831:D3,32|483b65187305ff5558cd054883f871750848c7c003000000c3488b5208ff22f4|@10371,1,@4006| 8832:D3,32|483b65187305ff5558cd054883f87d750848c7c003000000c3488b5208ff22f4|@10371,1,@4007| 8833:D7,1072|483b65187306ff5558ca09075053415041514152498d47e8483b45107303ff55504989c748c740f8020000004c8b7424204c89700849be386d79f1c27f00004c89306a016a014c8b7424584c8b6c24504c8b6424484c8b5c24404156415541544153488d5c24204c8b4424404c8b4c24384c8b542430ff15e4030000ff3424ff742410488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc070f85500300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1502020000ff15f40100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff152c0100006a016a014c8b7424784c8b6c24704c8b6424684c8b5c24604156415541544153488b442470488d5c24204c8b4424604c8b4c24584c8b542450e8a6fcffff415d415e4c8b1c244d8b234d89db4d8b53104d89db4d8b4320488d6424084d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca003f4d89f749c746f8050000004d8946204d894e184d8956104d895e084d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64240849c70424030000004c8b6c24284d8965004d89750848c7c0010000004883c438c220004c8b6c24384c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c438c22000f400|@18169,1,@4020,@5027,@5031,@5030,@8835|55,0,@8834 574,0,@10220 584,0,@10221 759,0,@10223 782,0,@10226 8834:D3,32|483b65187305ff5558cd054883f807750848c7c003000000c3488b5208ff22f4|@10371,1,@4009| 8835:D30,6976|483b65187306ff5558ca090750534150415141524c8b6424104d8b5c24104d89de4d89e44d8b6c24484d89ea4d8b0b4d8b6d004983fd5374054d89e9eb004d89e44d89e541ff7424304d89ed498b7d504989fb4d89ed4d8b45784d89c4ff3741ff304c8d05080000004f8d4488fc41ffe0e91b020000909090e91a020000909090e919020000909090e918020000909090e917020000909090e916020000909090e915020000909090e917020000909090e936060000909090e935060000909090e934060000909090e933060000909090e932060000909090e931060000909090e930060000909090e92f060000909090e92e060000909090e92d060000909090e92c060000909090e92e060000909090e9b1090000909090e9b0090000909090e9af090000909090e9ae090000909090e9ad090000909090e9af090000909090e94a0e0000909090e9490e0000909090e9480e0000909090e9470e0000909090e9460e0000909090e9450e0000909090e9440e0000909090e9430e0000909090e9420e0000909090e9410e0000909090e9400e0000909090e93f0e0000909090e93e0e0000909090e93d0e0000909090e93c0e0000909090e93b0e0000909090e93d0e0000909090e95e110000909090e95d110000909090e95c110000909090e95b110000909090e95a110000909090e959110000909090e958110000909090e957110000909090e956110000909090e955110000909090e954110000909090e953110000909090e952110000909090e951110000909090e950110000909090e94f110000909090e94e110000909090e94d110000909090e94c110000909090e94b110000909090e94a110000909090e94c110000909090e9dc170000909090e9db170000909090e9da170000909090488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e92c0400004c89e84889c04d89d54d8b55004983fa53740d49c7450053000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15c9170000ff15bb1700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15f3160000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849bec08979f1c27f00004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff342448c7c04b000000488b5c2440ff157b160000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424504c89700849bed08c79f1c27f00004c89306a016a014c8bb424880000004c8bac24800000004c8b642478415641554154488d5c24184c8b4424684c8b4c24604c8b542458ff150c160000415c415a4d8b6a084d8b5a184d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004c8b4c24184d894e204d895e184c8b5c24204d895e104d896e084c8b6c24284d892e49bda854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004d8955204d8975184d895d104d8965084c8b24244d896500488d6424484d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042407000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e9900300004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff152f130000ff15211300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1559120000498d47e8483b45107303ff55504989c748c740f8020000004c8b7424384c89700849be188d79f1c27f00004c89306a016a014c8b7424704c8b6c24684c8b642460415641554154488d5c24184c8b4424504c8b4c24484c8b542440ff15f0110000415b415e4d8b6e084d8b66184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d8966184c8b24244d896610488d6424084d896e084c8b2c244d892e488d64242049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d897424184d895c24104d896c240849c7042417000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e9a80400004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff155e0f0000ff15500f00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15880e0000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849be608d79f1c27f00004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff342448c7c06f000000488b5c2440ff15100e0000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424504c89730849bea89079f1c27f00004c89336a016a01488b5424404c8b9424880000004c8bb424800000004c8b6c247841564155488b4424584c8d4424104c8b4c2460ff12ff342448c7c01d000000488b5c2458ff15920d00006a016a01488b5424584c8b9424a00000004c8bb424980000004c8bac249000000041564155488b442470488b9c24880000004c8d4424104c8b4c2478ff12415c415e4d8b6e084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d896e084c8b6c24404d892e49c7c5010000004d8d57f04c3b55107306ff5550ca00704d89d749c742f80100000041c642ff404d892a49c7c5010000004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fc84c3b6d107306ff5550ca005c4d89ef49c745f8060000004d8955284d895d204d8975184c8b1c244d895d10488d6424184d8965084c8b24244d896500488d6424484d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c7042409000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e92e0300004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15200a0000ff15120a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff154a0900006a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b442440488b5c24584c8d4424104c8b4c2448ff12415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b14244d895620488d6424084d895e184c8b1c244d895e10488d6424084d8966084c8b24244d8926488d6424204d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d897424104d896c240849c704242f000000415d488d6424084d8965004d89750848c7c001000000c22000488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420eb05488d642420e99d0600004c89e84889c04d8b2a4983fd53740c49c70253000000e9400200004d8b2e4983fd010f851c020000488d6424284889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541534d89ed41ff7570415448c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1549060000ff153b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1573050000498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424384c89730849bef09379f1c27f00004c89336a016a01488b5424284c8b5424704c8b7424684c8b6c246041564155488b4424404c8d4424104c8b4c2448ff12ff3424ff742410488b5c24484c8b63104d89e64889db4c8b5b484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc1b0f8573030000488d6424084889d84889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424404889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1531030000ff15230300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff155b0200006a016a01488b5424404c8b9424880000004c8bb424800000004c8b6c247841564155488b442458488b5c24704c8d4424104c8b4c2460ff12415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424184d8956204d895e184c8b5c24204d895e104d8966084c8b6424284d892649c7c4010000004d8d5ff04c3b5d107306ff5550ca00704d89df49c743f80100000041c643ff404d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f8050000004d895c24204d897424184c8b1c244d895c2410488d6424084d896c240849c704243b0000004c8b6c24404d8965004d89750848c7c0010000004883c450c2200048c7c01b000000ff153f0100004c8b6c24504c8b7424084d8975004c8b34244d897508488d64241048c7c0010000004883c450c22000488d642420eb05488d642420eb05488d6424204d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424184d89660849bc389479f1c27f00004d89264c8b2424498b04244d89e4498b5c24084d89e44d8b4424106a016a014c8b4c2438ff35a30000004156544883042410415549ba58cbd5f1c27f0000ff158100000041584159498d5fe8483b5d107306ff5550ca00034989df48c743f8020000004c8b7424184c89730849bec89779f1c27f00004c8933584c8b542408415d488d6424104c896c24204c8b34244c897424184883c418ff251f000000f4000000000000|@18170,1,@4021,@8796,@8845,@18085,@8659,@5027,@5031,@5030,@5027,@5031,@5030,@5027,@5031,@5030,@8657,@8657,@5027,@5031,@5030,@8830,@5027,@5031,@5030,@8830,@8657,@5027,@5031,@5030|1095,0,@10220 1105,0,@10221 1280,0,@10223 1303,0,@10226 1352,0,@8836 1464,0,@8837 1607,0,@10468 2233,0,@10220 2243,0,@10221 2418,0,@10223 2441,0,@10226 2490,0,@8838 2639,0,@10468 3178,0,@10220 3188,0,@10221 3363,0,@10223 3386,0,@10226 3435,0,@8839 3547,0,@8840 4480,0,@10220 4490,0,@10221 4665,0,@10223 4688,0,@10226 5439,0,@10220 5449,0,@10221 5624,0,@10223 5647,0,@10226 5696,0,@8841 6207,0,@10220 6217,0,@10221 6392,0,@10223 6415,0,@10226 6803,0,@8842 6865,0,@18168 6921,0,@8844 8836:D3,744|483b65187305ff5558cd054883f84d7505e9c90200004883f8417505e9be0200004883f83f7505e9b30200004883f8437505e9a80200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb224883f80d7502eb1a4883f83174144883f8797502eb0c4883f84b7406488b5208ff2248c7c003000000c3f4|@10371,1,@4011| 8837:D3,32|483b65187305ff5558cd054883f861750848c7c003000000c3488b5208ff22f4|@10371,1,@4012| 8838:D3,32|483b65187305ff5558cd054883f861750848c7c003000000c3488b5208ff22f4|@10371,1,@4013| 8839:D3,800|483b65187305ff5558cd054883f82f7505e9fb0200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb754883f8237502eb0e4883f80d7502eb064883f8317502eb5d4883f8417502eb554883f8437502eb4d4883f83f7502eb454883f84d7502eb3d4883f84574374883f8277502eb2d4883f80f7502eb254881f8810000007502eb1a4883f8337502eb124883f855740c4883f86f7408488b5208ff22eb0048c7c003000000c3f4000000000000|@10371,1,@4014| 8840:D3,800|483b65187305ff5558cd054883f82f7505e9fb0200004989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe037502eb754883f8237502eb0e4883f80d7502eb064883f8317502eb5d4883f8417502eb554883f8437502eb4d4883f83f7502eb454883f84d7502eb3d4883f84574374883f8277502eb2d4883f80f7502eb254881f8810000007502eb1a4883f8337502eb124883f855740c4883f81d7408488b5208ff22eb0048c7c003000000c3f4000000000000|@10371,1,@4015| 8841:D3,32|483b65187305ff5558cd054883f81b750848c7c003000000c3488b5208ff22f4|@10371,1,@4016| 8842:D3,40|483b65187305ff5558cd054883f8137502eb0c4883f8077406488b5208ff2248c7c003000000c3f4|@10371,1,@4017| 8843:D3,792|483b65187305ff5558cd014883f82f750848c7c003000000c34989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e903020000909090e9e3010000909090e9fc010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e98b010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e93b010000909090e933010000909090e955010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9f6000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e9b7000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e943000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9480000009090904883f831750949c7c603000000eb0749c7c601000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f8237502eb0e4883f80d7502eb064883f831750848c7c003000000c34883f841750848c7c003000000c34883f843750848c7c003000000c34883f83f750848c7c003000000c34883f84d750848c7c003000000c34883f845750848c7c003000000c348c7c001000000c3f4000000000000|@10371,1,@4018| 8844:D3,32|483b65187305ff5558cd054883f807750848c7c003000000c3488b5208ff22f4|@10371,1,@4019| 8845:D5,240|483b65187306ff5558ca090753415141526a016a016a016a014c8b4424584c8b4c24504c8b742440ff7424284156ff74244048c7c001000000488d5c24184c8b542438ff15c700000041594158415e415d4983fd017d23488d6424184c8b6c24104d8b304d8975004d8b70084d89750848c7c001000000c220004c8b6424384c8b5c24304c8b5424204156415541544153ff742420ff7424304152ff7424484d89c248c7c0ffffffff48c7c30100000049b8a0b4d5f1c27f0000ff15480000004989c6488d6424184c8b6c24104d8b76084d8b264d8965004d8b76084d89750848c7c001000000c22000f40000000000|@18173,1,@4024,@8849,@8846|178,0,@18054 8846:D5,640|483b65187306ff5558ca0907534150415141524d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424104d8975104c8b6424084d89e64d89650849bcf09b79f1c27f00004d8965004155498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b6c24084c8968104d89f64c89700849be609c79f1c27f00004c89306a016a01488b5424504889e3ff12585b6a016a014c8b5424484c8b7424404c8b6c2450ff742418ff742430415641554c8b4424304c8d4c2420ff15d9010000415d415c488d6424104d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424304d8b6e104c8b7424304d8b7648498b45004d8b364983fe5374054c89f0eb006a016a016a01488b542428ff124989c64983fe0375776a016a014c8b442458488b442438488b5c24304989e1ff154e010000ff3424ff742410488b542460488b442408ff124989c64983fe017515488d64245848b80895d1f1c27f0000488b5d08ff234d8b364d8b76084c8b6c24084c896c24204c8b2c244c896c2428488d6424104c897424204883c410eb2349be00ccd5f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410415d415a415e6a016a014d8b1e4d89dc4983fb05751c49be20ccd5f1c27f00004d8b264c8924244d8b76084c89742408eb2a4983fc0375134d8b76084c89342448c744240803000000eb114d8b76084c89342448c744240801000000415e415b4d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d892c244c8b6c24184d895d004c8b1c244d895d08488d6424084d8965104d89751848c7c0010000004883c418c21800f4000000000000|@18186,1,@4029,@8688,@8852|66,0,@8847 125,0,@8848 365,0,@10926 423,0,@18171 480,0,@18172 8847:D3,72|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe03750d488d64241048c7c003000000c34c8b742408498b560858488d642408ff22f400000000|@10371,1,@4022| 8848:D3,96|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe037507488d642410eb254c8b34244c89f04983fe4d74134c8b742408498b56084889c0488d642410ff22488d64241048c7c003000000c3f4000000000000|@10371,1,@4023| 8849:D6,1480|483b65187306ff5558ca090750534150415141526a016a016a016a014c8b4424784c8b4c24704c8b5424684c8b7424604c8b6c24584c8b64245041564155415448c7c001000000488d5c2418ff159e050000ff3424ff742410ff742420ff7424304d8d77d84c3b75107303ff55504d89f749c746f8040000004c8b2c244d896e184c8b6c24084d896e104c8b6c24104d896e084c8b6c24184d892e41564c8bb424b00000004c8bac24a8000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c8970084c8b7424504c89304c8b842480000000488b1c24ff15fe0400004c8ba424a80000004c8b6c24084d89ee4d3bec7e07488d642408eb264c8b6c24504983fd030f85860000004c8bac24a80000004d89f64d3bf57402eb74488d642408488b8424a00000004c8b8424a80000004c8bb424980000004c8bac24900000004c8ba424880000004c8b9c24800000004c8b5424784c8b4c2470ff742408ff742408415641554154415341524151488b9c24880000004c8b4c24584c8b542450e86ffeffff4989c6488d642440eb06415e4883c44041564c8b7424704d8b2e4c8b7424704d8b560849bea854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00644d89df49c743f80100000041c643ff404d893349be20b1d1f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d89342449be78ccd5f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89314d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b5424084d8b42084c8b34244d8b5e084d89dd4d8b5b084d8b08498b7810498b50204d8b4308498b73184d8d5fd04c3b5d107306ff5550cac4774d89df49c743f805000000498953204989731849897b104d8943084d890b4d89d24d8b124d89f64d8b6d004d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f80200000049c74108010000004d89294d8d6fe84c3b6d107306ff5550ca005e4d89ef49c745f8020000004d894d084d89550049baa854d1f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89114d8d57d84c3b55107306ff5550ca007a4d89d749c742f8040000004d895a184d894a104d896a0849c7023300000049bda854d1f1c27f00004d8d4ff04c3b4d107306ff5550ca007c4d89cf49c741f80100000041c641ff404d89294d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d895d2049c74518030000004d894d104d8955084d8965004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89650041554d89f64d89f541ff76104d89ed4d89ee41ff75184d89f64c89f341ff364d8d77d84c3b75107305ff5550cd084d89f749c746f8040000004c8b6c24084d896e184c8b6c24104d896e104c8b6c24184d896e084c8b2c244d892e4156498d47e0483b45107305ff5550cd084989c748c740f8030000004c8b7424504c8970104c8b7424404c8970084c8b7424484c89304c8b442468ff15f90000004c8b7424284d8b66184d89e54c3b6424507e07488d642408eb2b4d89ee4c3b74245075074c8b742448eb0749c7c6010000004983fe037408584883c450c24000488d642408ff742448488b5c2448488b542440488b4c2408488b4424204c8b6c24184c8b6424104c8b9c24880000004c8b9424800000004c8b4c24784c8b442470488b7c2468488b742460488974246048897c24684c894424704989d04c894c24784989c94c899424800000004989c2488b04244c899c24880000004c89a424900000004c89ac24980000004883c458e944faffff488d642428f4000000000000|@18184,1,@4026,@8851,@8851,@8846|438,0,@10468 483,0,@11094 531,0,@18174 838,0,@10468 929,0,@10468 8850:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@18102,1,@4025| 8851:D6,944|483b65187306ff5558ca090141504c8b70104c8b6b184d3bf50f85820300004c8b284d89ea4c8b234d89e64d3bec750949c7c503000000eb0749c7c5010000004983f5024983fd030f854c0300004c8b04244d8b58284d89c04d8b60304d89c04d8b48504d89c04d8b68704d89c04d8b40784d8b094d8b1b498b384d8b45004d8d6fd04c3b6d107306ff5550ca895f4d89ef49c745f80500000049897d204d8945184d894d104d895d084d89650041554c8b68084d89eb4d8b6d004c8b63104d89e14d8b24244d8b1b4983fa03750c49ba88ccd5f1c27f0000eb0a49baa0ccd5f1c27f00004d8b094983fe03750c49b888ccd5f1c27f0000eb0a49b8a0ccd5f1c27f00004d8d77e84c3b75107306ff5550ca003f4d89f749c746f80200000048bfb8ccd5f1c27f000049897e084d89064d8d47e84c3b45107306ff5550ca007e4d89c749c740f8020000004d89700849bef0ccd5f1c27f00004d89304d8d77e84c3b75107306ff5550ca003f4d89f749c746f8020000004d8946084d890e4d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004d89710849be08cdd5f1c27f00004d89314d8d77e84c3b75107306ff5550ca003e4d89f749c746f8020000004d894e084d89164d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89720849bef0ccd5f1c27f00004d89324d8d77e84c3b75107306ff5550ca003c4d89f749c746f8020000004d8956084d891e4d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d89730849be30cdd5f1c27f00004d89334d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e084d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be60cdd5f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78cdd5f1c27f00004c8930ff15ed00000048bb4830d1f1c27f0000ff15d5000000ff15c70000004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff22488d642408eb05488d64240848c7c001000000c3f400|@18185,1,@4027,@5333,@5030,@4836|209,0,@18175 221,0,@18176 240,0,@18175 252,0,@18176 289,0,@18177 337,0,@18179 415,0,@18180 493,0,@18179 571,0,@18181 651,0,@18182 730,0,@18183 749,0,@10221 8852:D3,664|483b65187306ff5558ca090750534150415141524c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542448ff124989c64983fe030f85230200004c8b34244d8b6e104d89f64d8b7648498b45004d8b364983fe5374054c89f0eb00488b542440ff124989c64983fe030f8586000000488b5424384c8b34244d8b7608498b06ff124989c641f6c60175374d8b364d8b76084d8b264d89e54983fc03750949c7c603000000eb194d89ee4983fe01750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037527488d642408415d4c8b7424104d8975004c8b7424084d89750848c7c0010000004883c418c220004c8b742448498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b7424104c89700849bee0a979f1c27f00004c89306a016a01488b5424404889e3ff12415d415a4c8b6424184d8b34244d89e44d8b5c24104d89e44d8b4c24204d8b62084d8b5218498d5fd0483b5d107306ff5550ca007e4989df48c743f8050000004c894b204c8953184c895b104c8963084c893349bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca08604d89e749c74424f80100000041c64424ff404d8934244d8d77d04c3b75107306ff5550ca08304d89f749c746f80500000049895e2049c74618010000004d8966104d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700848c700050000004c8b4424104c8b4c24085f488d6424204c8b6c24204c8b6424184c8b5c24104c8b5424084c895424084989fa4c895c24104c896424184c896c2420e994fdffff488d642408415d4c8b7424104d8975004c8b7424084d89750848c7c0010000004883c418c22000f400000000|@18187,1,@4030|307,0,@8853 417,0,@10468 8853:D3,72|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c64983fe03750d488d64241048c7c003000000c34c8b742408498b560858488d642408ff22f400000000|@10371,1,@4028| 8854:D15,2864|483b65187306ff5558ca09015341504c8b304d89f54983fe05754d6a016a016a016a014889e34c8b442428ff156f0b0000415e415d415c415a4d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e95c0a00004d89ee4983fd2d0f85710200004c8b70084d8b364983fe05754d6a016a016a016a014889e34c8b442428ff15000b0000415e415d415c415a4d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e9120200004c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d8ced5f1c27f000048bb4830d1f1c27f0000ff15450a0000ff15370a00004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c8d0f1c27f00004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9de0700004983fe0b0f8550050000ff7008488b40104c8b284d89ee4983fd2d0f85a00200004c8b70084d8b364983fe0575776a016a016a016a014889e34c8b442430ff1556080000415e415d415c488d6424084d8d57f04c3b55107306ff5550ca00704d89d749c742f8010000004c8b1c244d891a488d6424084d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e917020000488d6424084c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d8ced5f1c27f000048bb4830d1f1c27f0000ff156c070000ff155e0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c8d0f1c27f00004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9940200004983fe0575776a016a016a016a014889e34c8b442430ff15a5050000415e415d415c488d6424084d8d57f04c3b55107306ff5550ca00704d89d749c742f8010000004c8b1c244d891a488d6424084d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d8933e917020000488d6424084c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d8ced5f1c27f000048bb4830d1f1c27f0000ff15bb040000ff15ad0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c8d0f1c27f00004d892e4d8d5fd84c3b5d107306ff5550ca00404d89df49c743f80400000049c743180100000049c74310010000004d89730849c70301000000e9840200004c8b5424084d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d8ced5f1c27f000048bb4830d1f1c27f0000ff1594020000ff15860200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff124c8b5424084d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b52784d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849bed8c8d0f1c27f00004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180100000049c74610010000004d896e0849c706010000004d8d5fd84c3b5d107306ff5550ca00404d89df49c743f8040000004d8b6e184d896b184d8b6e104d896b104d8b6e084d896b084d8b364d89334d8b334d8b6b084d8b63104d8b53184d8d5fd84c3b5d107306ff5550ca00744d89df49c743f8040000004d8953184d8963104d896b084d89334d8b2b4d8b73084d8b2649c7c60100000041f6c50175364d8b4d084d89f24983c2027115488d64241048b8d0c6d0f1c27f0000488b5d08ff234d89cd4d89d6483b65187306ff5558ca0078ebc4415d4d895d004d8965084d89751048c7c0010000004883c408c3f400000000|@18191,1,@4031,@5333,@5030,@5333,@5030,@8855,@5333,@5030,@8855,@5333,@5030,@8855,@8855|307,0,@18188 317,0,@10221 591,0,@10468 672,0,@9493 1012,0,@18188 1022,0,@10221 1296,0,@10468 1377,0,@9493 1677,0,@18188 1687,0,@10221 1961,0,@10468 2042,0,@9493 2212,0,@18188 2222,0,@10221 2496,0,@10468 2576,0,@9493 2799,0,@9475 8855:D12,2112|483b65187306ff5558ca09015341504c8b304d89f54983fe2d0f854b0200004c8b7008ff70104d8b2e4983fd050f85fb0000004d8b66084d89e54d8b1c244d8b1b4983fb1d751d4d8b6424184983fc03750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc030f85b9000000488d6424104d89ee4d8b2e4d8b6d084d8b65004d8b55184d8b760849bda854d1f1c27f00004d8d5ff04c3b5d107306ff5550ca00744d89df49c743f80100000041c643ff404d892b4d8d6fe04c3b6d107306ff5550ca005c4d89ef49c745f8030000004d8955104d895d084d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d893424415e4d89264d896e0849c746100300000049c746180100000048c7c001000000c348b838cfd5f1c27f000048bb4830d1f1c27f0000ff1550070000ff15420700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c8968184c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff1249bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b24244d896510488d6424104d89750849bed8c8d0f1c27f00004d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c34d89ee4983fd1d0f858d000000488d6424084c8b68084d8b75004d8b5d1849bda854d1f1c27f00004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c34983fe050f85270300004c8b700841ff3641ff76084d8b76184983fe030f85380100004c8b2c244d8b65004983fc330f85240100004d89ed4d8b5d0841f6c30175454d8b234d8b5b0841f6c301752f4d8b5b084983fb01751c4d8b24244983fc05750949c7c403000000eb0749c7c401000000eb0749c7c401000000eb0749c7c401000000eb0749c7c4010000004983fc030f85c10000004d89ee41ff761848b890cfd5f1c27f000048bb4830d1f1c27f0000ff15cb040000ff15bd0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff12e942010000eb004983fe030f85360100004c8b34244d8b2e4983fd330f85230100004d89f64d8b6e0841f6c50175474d8b650841f6c40175344d8b2c244d8b6424084983fc01751c4d8b6d004983fd05750949c7c503000000eb0749c7c501000000eb0749c7c501000000eb0749c7c501000000eb0749c7c5010000004983fd030f85be0000004d89f641ff761848b890cfd5f1c27f000048bb4830d1f1c27f0000ff1578030000ff156a0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24104d8b75184d89ed498b556049c70603000000ff12eb02eb006a016a016a016a01488b4424284889e34c8b442430e847faffff488b0424ff742408ff742418498d5fe8483b5d107305ff5550cd014989df48c743f80200000048c74308010000004c8b7424304c89334883fb0175054989c5eb09ff15680200004989c54c8b7424484d892e4c8b6c24084d896e084c8b2c244d896e10488d64241049c746180100000048c7c0010000004883c440c34c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b8d8ced5f1c27f000048bb4830d1f1c27f0000ff15b0010000ff15a20100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b556049c70603000000ff124c8b14244d8b6a284d89d24d8b72304d89d24d8b5a504d89d24d8b62704d89d24d8b5278488d6424084d8b1b4d8b6d004d8b0a4d8b14244d8d67d04c3b65107306ff5550ca006e4d89e749c74424f8050000004d894c24204d895424184d895c24104d896c24084d89342449bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892e4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849bed8c8d0f1c27f00004d897500415e49c706010000004d896e0849c746100100000049c746180100000048c7c001000000c3f400000000000000|@18192,1,@4032,@5333,@5030,@8856,@5333,@5030,@5333,@5030,@5333,@5030|146,0,@10468 304,0,@18189 314,0,@10221 480,0,@10468 569,0,@9493 650,0,@10468 933,0,@18190 943,0,@10221 1256,0,@18190 1266,0,@10221 1688,0,@18188 1698,0,@10221 1975,0,@10468 2055,0,@9493 8856:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4033| 8857:D3,64|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124883f80175114c8b742408498b560858488d642408ff22488d642410c3f4000000000000|@10369,1,@4035| 8858:D3,40|483b65187305ff5558cd054883f81f7502eb0c4883f8357406488b5208ff2248c7c003000000c3f4|@10371,1,@4036| 8859:D3,48|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124c8b742408498b560858488d642408ff22f40000|@18009,1,@4037| 8860:D3,32|483b65187305ff5558cd054883f81f750848c7c003000000c3488b5208ff22f4|@10371,1,@4038| 8861:D4,96|483b65187305ff5558cd056a016a014c8b4a084c8b7210415648c7c30100000049c7c0010000004c8d542408ff1546000000415e415d498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f4000000000000|@18074,1,@4039,@8707| 8862:D4,480|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c64983fe010f85a60100004c8b742408498b5610488b0424ff124989c64983fe010f85810100004c8b34244d8b264d89e54e8d2465010000004983fc030f8ea40000004d89f64e8d2c6d010000004983fd037f15488d64241048b8a8f8d0f1c27f0000488b5d08ff234d89f64d0fb676094e8d2c750100000049be30c9d0f1c27f00004f8b6caefc4c3b2d4b010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe03753249be58d8d0f1c27f0000498d7508498d7e0848c7c101000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c60100000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d24e5f9ffffff4983fe03750949c7c609000000eb0749c7c6010000004d0be64983cc054d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b742410498b5608498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424084c8930ff1258488d642410c3488d642410498b06c3488d642410498b06c3f400000000000000|@18106,1,@4040,@9564|121,0,@9872 153,0,@9496 204,0,@9564 270,0,@10468 8863:D3,32|483b65187305ff5558cd054883f805750848c7c003000000c3488b5208ff22f4|@10371,1,@4041| 8864:D3,168|483b65187305ff5558cd01a8010f858c0000004c8b28488b400849c7c6010000004d8d67f04c3b65107306ff5550ca01604d89e749c74424f80100000041c64424ff404d8934244d8d77e84c3b75107306ff5550ca01304d89f749c746f8020000004d8966084d892e4156e890ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4|@10112,1,@4053| 8865:D12,1960|483b65187306ff5558ca090750534150415141524c8b5424084d8b62104d89e64d89d24d8b5a484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc590f85ab0200004c89d04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1519060000ff150b0600004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff1543050000488b4424204c8b4424104c8b4c2408415a488d6424104c8b6c24284c8b6424204c8b5c241848c7c3030000004c895c24184c896424204c896c24284883c410e90ffdffff4d8d47e84c3b45107306ff5550ca00044d89c749c740f8020000004c8b7424204d89700849be68cc79f1c27f00004d89306a016a014c89d3488b4424104989e1ff15b1040000ff3424ff74241048c7c023000000488b5c2428ff15900400006a016a014c8b5424704c8b7424684c8b6c246041564155488b442440488b5c24604c8d4424104c8b4c2448ff1557040000ff3424ff742410488b4424484c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb006a016a014983fc050f85bf0200004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424584889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1571020000ff15630200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff159b0100006a016a014c8bb424a00000004c8bac24980000004c8ba42490000000415641554154488b842498000000488b9c24900000004c8d4424184c8b8c24800000004c8b542478e892f9ffff415d415e4c892c244c89742408eb1248c70424010000004c8b7424104c89742408415b415e4c8b6424204d8b2c244d89e44d8b4c24104d89e4498b7c24204c8b24244d8b5424084d89e44d8b442418488d6424084d8d67d04c3b65107306ff5550ca806f4d89e749c74424f80500000049897c24204d894424184d894c24104d895424084d892c2449c7c5010000004d8d57f04c3b55107306ff5550ca00784d89d749c742f80100000041c642ff404d892a4d8d6fd04c3b6d107306ff5550ca005c4d89ef49c745f8050000004c8b4c24504d894d204d8955184d8965104c8b24244d896508488d6424084c8b6424184d8965004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244c8b6c24404d8965004d89750848c7c0010000004883c458c21800f40000000000|@18196,1,@4045,@5027,@5031,@5030,@8802,@8657,@8776,@5027,@5031,@5030|463,0,@10220 473,0,@10221 648,0,@10223 671,0,@10226 791,0,@8866 1351,0,@10220 1361,0,@10221 1536,0,@10223 1559,0,@10226 8866:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@4044| 8867:D4,328|483b65187306ff5558ca090353415041514c8b4424084d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f85df0000006a016a0148b8d8bbd5f1c27f0000488b5c24104989e1ff15f7000000ff3424ff7424106a016a01488b4424104889e34c8b4424384c8b4c2430e875ffffff415b415e49c7c5010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d892c244d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004c8b14244d895510488d6424084d8965084c8b24244d896500488d6424284d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c24415d4d8965004d89750848c7c001000000c3488d642410415e49c706010000004989460848c7c001000000c3f400|@18197,1,@4046,@8688|83,0,@18085 8868:D10,1208|483b65187306ff5558ca09035053415041514c8b6c24184d8b5d104d89de4d89ed4d8b55484d89d44d8b1b4d8b124983fa5374054d89d3eb0041534d89ed498b7d284989f94d89ed4c89e841ff75304889c0488b50504989d24889c04c8b40704d89c34889c0488b70784989f5ff32488b3fff36498b304d8d47d04c3b45107306ff5550cac17e4d89c749c740f805000000488b14244989502049897018488b7424084989701049897808488b7c241049893841504889c04889c04d8b04244983f853740d49c7042453000000e9330200004d8b264983fc010f850f020000488d6424404889c04989c441514d89e4498b5424384d89e441ff74244041524153415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15c1020000ff15b30200004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15eb0100004c8b7424204d89f54983fe3b753d48c7c001000000488b5c2440ff15c30100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70603000000eb604d89ed4d89ee4983fd39753d48c7c001000000488b5c2440ff15720100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70601000000eb174d89f64983fe490f85f500000049bea85bd1f1c27f0000415648b8d8bbd5f1c27f0000488b5c243049b860d1d5f1c27f00004c8b4c2448ff15020100006a016a01ff742410488b442420488d5c24084c8b4424604c8b4c24484c8b542458ff15d3000000415d415e4d8b66084d8b5e184d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424104d8956204d895e184c8b5c24184d895e104d8966084c8b6424204d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f8040000004d897424184d896c24104c8b2c244d896c2408488d64242849c704240f0000004c8b6c24104d8965004d89750848c7c0010000004883c428c3488d64244848b878d1d5f1c27f0000488b5d08ff23f400000000000000|@18211,1,@4050,@8873,@8670,@8869,@8869,@5027,@5031,@5030|551,0,@10220 561,0,@10221 736,0,@10223 759,0,@10226 936,0,@10515 948,0,@18085 963,0,@18198 1186,0,@18199 8869:D9,1792|483b65187305ff5558cd09534c8b34244d8b6e104d89f64d8b66484d8b6d004d8b24244983fc5374054d89e5eb004983fd3d0f85a40600004d89f64d8b76084d8b364d8b2e4e8d2c6d01000000498d5fe0483b5d107306ff5550ca00604989df48c743f8030000004c896b104c89730849be98da79f1c27f00004c893348ba48d2d5f1c27f000048c7c00100000049c7c003000000ff15a50600004989c641f6c60175694d8b2e4d8b75004d8b650841f6c60174434d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1c488d64240848b8f0d2d5f1c27f0000488b5d08ff2349c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c6010000004983fe017515488d64240848b80895d1f1c27f0000488b5d08ff2341ff364c8b2c244d89ee4983fd017d02eb0e4d89f64983fe137f05e9b90200004c8b7424084d8b5e284d89f64d8b66304d89f64d8b56504d89f64d8b6e704d89f64d8b4e784d8b124d8b1b4d8b014d8b4d004d8d6fd04c3b6d107306ff5550ca005f4d89ef49c745f8050000004d8945204d894d184d8955104d895d084d89650041554d89f64d8b76084d8b364d8b2e4e8d246d010000004983fc01750f49bd48d3d5f1c27f0000e9ae0000004d89e34983c3164c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15b90400000f87820400004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb48d3d5f1c27f000048c7c117000000498d7308498d7d0848d1e9f3a44c89e1498d7608498d7d1348d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48b868d3d5f1c27f0000e9b20000004d89f44983c44a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1de20300000f879e0300004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c89204c89f1498d7508488d780848d1e9f3a44983c61049bd68d3d5f1c27f000048c7c14b000000498d750849d1ee4a8d3c3048d1e9f3a48060ffbf48bb4830d1f1c27f0000ff1598030000ff158a0300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b6c24084d8b75184d89ed498b556049c70603000000ff12488b4424084c8b70104889c04c8b68484d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424084889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1542010000ff15340100004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff156c000000584883c408c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c3f4000000000000ffffffffffffff01ffffffffffffff01|@18213,1,@4052,@5027,@5031,@5030,@5333,@5030,@8871|114,0,@8870 127,0,@18204 255,0,@18207 340,0,@10926 514,0,@18209 652,0,@18209 721,0,@18210 877,0,@18210 914,0,@10221 1486,0,@10220 1496,0,@10221 1671,0,@10223 1694,0,@10226 1721,0,@9487 1742,0,@9487 8870:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18203,1,@4047| 8871:D19,3224|483b65187306ff5558ca0d0152505341506a016a016a014c8b7424184d89f54983fe0575244c8b7424304d8b6e084d89f64d8b761048c70424210000004c896c24084c89742410eb7f4d89ed4d89ee4983fd0375244c8b7424304d8b6e184d89f64d8b762048c70424150000004c896c24084c89742410eb4f4d89f64983fe0775244c8b7424304d8b6e284d89f64d8b763048c70424110000004c896c24084c89742410eb224c8b7424304d8b6e384d89f64d8b764048c70424050000004c896c24084c89742410ff3424488b542428488b442430ff124989c641f6c6010f854d0500004d8b2e4d8b750041ff75084983fe13720b4983fe1b7705e9170500004983fe410f840d0500004983fe570f85940100004c8b7424084983fe210f8578010000488b542430488b0424ff124989c641f6c6010f85530100004d8b2e4d8b750041ff75084983fe617424488d64240841584c8b4c242848c7c30100000048c7c0010000004883c440ff25b80b0000488b542438488b0424ff124989c641f6c6010f85b70000004d8b2e4d8b75004d8b45084981fef10000007502eb2d4981feb10000007424488d64240841584c8b4c242848c7c30100000048c7c0010000004883c440ff25550b000048c7c00100000048c7c3010000004c8b4c2438ff15340b00004883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d642450c34d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64244848c7c001000000c36a016a01ff742410e9fa0700004983fe5b7505e9b40100004981fefd0000000f84a7010000488d6424084c8b34244983fe210f8587010000488d642428488b1424488b442408ff124989c641f6c6010f855d0100004d8b2e4d8b750041ff75084983fe617429488d6424084c8b4424084159488d64240848c7c30100000048c7c0010000004883c408ff25e6090000488b542408488b0424ff124989c641f6c6010f85bc0000004d8b2e4d8b75004d8b45084981fef10000007502eb324981feb10000007429488d6424084c8b4424084159488d64240848c7c30100000048c7c0010000004883c408ff257e09000048c7c00100000048c7c3010000004c8b4c2408ff155d0900004883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d642420c34d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d64241848c7c001000000c36a016a01ff742440e94d0400004c8b7424084983fe210f8597010000488b542430488b0424ff124989c641f6c6010f856e0100004d8b2e4d8b750041ff75084983fe61742f488d64240848c7c00100000048c7c3010000004c8b04244c8b4c2430ff15370800004989c6488d642448e92c010000488b542438488b0424ff124989c641f6c6010f85c50000004d8b2e4d8b75004d8b45084981fef10000007502eb354981feb1000000742c488d64240848c7c00100000048c7c3010000004c8b04244c8b4c2430ff15c90700004989c6488d642448eb7848c7c00100000048c7c3010000004c8b4c2438ff159e0700004989c64983fe0175514d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c448eb05488d642450eb4f4d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d64240849c74500010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c448eb0c488d64244849c7c601000000e9230200006a016a01ff742410eb27488b54244058488b5c24284883c42041584883c418e9cff9ffff488d64244048c7c001000000c3488b542448488b0424ff124989c641f6c6010f856d0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424204d89f54983c6607115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15f5050000415b415c4c89e34883eb607115488d64246048b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15ac050000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c450eb0c488d64246049c7c601000000eb6d4c8b7424104983fe0375564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c450eb0c488d64246049c7c60100000041f6c60175764d8b36498b1e4d8b6608f6c301741249c7c5010000004c2beb70064983c501eb1448c7c0010000004154ff156a040000415c4989c54d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3488b542440488b0424ff124989c641f6c6010f856a0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424184d89f54983c6607115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c241841544153ff1567030000415b415c4c89e34883eb607115488d64245848b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff151e030000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64245848c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c448c3488d64245848c7c001000000c3488b542448488b0424ff124989c641f6c6010f856a0100004d8b364d8b264d8b5e084983fc610f8cea0000004c8b7424204d89f54983c6607115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85a8000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff1569010000415b415c4c89e34883eb607115488d64246048b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff1520010000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9eafeffff4c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c450c3488d64246048c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c450c3488d64246048c7c001000000c3f400000000000000|@18205,1,@4048,@4933,@6552,@4933,@6552,@4987,@4933,@6552,@8872,@8872,@8872,@8872,@8872,@8872,@8872,@8872,@8872|1663,0,@9475 1791,0,@9475 2293,0,@9475 2421,0,@9475 2787,0,@9475 2915,0,@9475 8872:D9,840|483b65187306ff5558ca0903505341504151488b1424488b442408ff124989c641f6c6010f85a80200004d8b2e4d8b75004d8b45084983fe610f8c950000004983fe730f8f8b000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff150d0300004158415e4983ee607115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15c302000041584889c3415948c7c0030000004883c418e92cffffff4981fe830000000f8cb60000004981fe8d0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15580200004158415e4981ee820000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c6147115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15f001000041584889c3415948c7c0030000004883c418e969feffff4981fec30000000f8cbd0000004981fecd0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15850100004158415e4981eec20000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c6147115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff151d01000041584889c3415948c7c0030000004883c418e9a6fdffff488d642408eb05488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3f400000000|@18206,1,@4049,@4933,@6552,@4933,@6552,@4933,@6552|140,0,@9475 308,0,@9475 335,0,@9475 503,0,@9475 530,0,@9475 8873:D5,376|483b65187306ff5558ca0907534150415141524c8b4424104d8b70104d89c04d8b68484d8b364d8b6d004983fd5374054d89eeeb004983fe237502eb124983fe0d7502eb0a4983fe310f850a0100006a016a0148b8d8bbd5f1c27f0000488b5c24184989e1ff152d010000ff3424ff742410488b442408488b5c24304c8b0424ff150a0100004c8b742420498b164c8b7424484d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d8975084c8b6424084d89e64d896500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084d89f64c8930ff126a016a014c8b7424584156488b442418488d5c24084c8b4424484c8b4c24404c8b542438e8f2feffff415d415e488d6424084d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c24084c8b2c244d892c24488d642430415d4d8965004d89750848c7c001000000c20800488d642418415e49c706010000004989460848c7c001000000c20800f40000|@18212,1,@4051,@5414,@8688|85,0,@18085 8874:D3,736|483b65187305ff5558cd014989c64c8d2d080000004f8d6cb5fc41ffe5e91b020000909090e92b020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9dc010000909090e9b3010000909090e9ab010000909090e9a3010000909090e99b010000909090e993010000909090e9b5010000909090e983010000909090e9ae010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e943010000909090e977010000909090e978010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e951010000909090e952010000909090e9f3000000909090e9eb000000909090e943010000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e993000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e96b000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e9ac000000909090e93b000000909090e933000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904883f87b750949c7c603000000eb0749c7c601000000eb5849c7c603000000eb4f49c7c603000000eb4649c7c603000000eb3d49c7c603000000eb3449c7c603000000eb2b49c7c603000000eb2249c7c603000000eb1949c7c603000000eb1049c7c603000000eb0749c7c6030000004983fe03750848c7c003000000c34883f847750848c7c003000000c34883f86d750848c7c003000000c348c7c001000000c3f4|@10371,1,@4054| 8875:D3,40|483b65187305ff5558cd014883f867750848c7c003000000c348c7c001000000c3f4000000000000|@18216,1,@4055| 8876:D3,40|483b65187305ff5558cd014883f82b750848c7c003000000c348c7c001000000c3f4000000000000|@18218,1,@4056| 8877:D11,1536|488dbc2460ffffff483b7d187306ff5560ca09035053415041514c8b7424104c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b70104889c04c8b60484d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424284889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff156d040000ff155f0400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15970300004c8b6c24284d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a016a016a0148b8d8bbd5f1c27f000048bbc8b2d5f1c27f00004c8b4424684989e1ff1542030000ff3424ff742410488b442408488b5c24784c8b0424ff151f03000048c7c023000000488b5c2478ff15050300004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424704d89700849bee0f779f1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b842490000000488b9c24880000004989e14c8b542478ff15a3020000415a415d4c8b1c244d8b334d89db4d8b63104d89db4d8b4b2041ff750841ff75184d8d6fd04c3b6d107306ff5550ca005e4d89ef49c745f8050000004d894d204c8b0c244d894d184d8965104c8b6424084d8965084d89750049be882ad3f1c27f00004d8d67f04c3b65107306ff5550ca006c4d89e749c74424f80100000041c64424ff404d8934244d8d77d04c3b75107306ff5550ca003c4d89f749c746f8050000004d8956204d89db4d895e184d8966104c8b6424184d8966084d892e415648c7c00500000048bbc8b2d5f1c27f00004c8b842490000000ff15bb0100004989c64983fe0375454d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d8975084c8b34244d897500488d6424084c896c2430483b65187303ff55584883c430e925feffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24384d896e084c8b2c244d892e488d64240849c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004c8b6424484d8966204c8b24244d896618488d6424084c8b6424484d8966104c8b24244d896608488d6424084c8b6424484d89264c896c24284c897424304c8b7424284c8b6c24304d8b65084d8b5d184d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424504d8955204d895d184c8b5c24584d895d104d8965084c8b6424604d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c700030000004881c488000000c3f40000|@18223,1,@4068,@8658,@8666,@8657,@5414,@8688,@5027,@5031,@5030|459,0,@10220 469,0,@10221 644,0,@10223 667,0,@10226 726,0,@18085 736,0,@18043 838,0,@8878 855,0,@18028 984,0,@13903 1095,0,@18043 8878:D3,40|483b65187305ff5558cd054883f8057502eb0c4883f81f7406488b5208ff2248c7c003000000c3f4|@10371,1,@4058| 8879:D8,1224|483b65187306ff5558ca090750534150415141524c8b7424184c89f041ff76304889c04c8b60504d89e34889c04c8b70784d89f541ff342441ff364889c04c8b70104889c04c8b60484d8b14244983fa53740d49c7042453000000e9430200004d8b264983fc010f851f020000488d6424304889c04989c4ff70284d89e4498b5424384d89e44d89e641ff7424404d89f64d89f441534d89e441ff742470415548c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff1523030000ff15150300004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff154d0200004c8b6c24304d89ee41ff75304d89f64d8b6e504d89f64d8b767841ff750041ff366a016a016a016a016a01ff742478ff74246048c7c001000000488d5c24104c8b4424784c8b8c24800000004c8b542470ff15ee010000ff3424ff74241048c7c00500000048bb58aed5f1c27f00004c8b842480000000ff15c00100004989c64983fe03754a488d6424084d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d8975084c8b34244d897500488d6424084c896c2410483b65187303ff55584883c410e957ffffff4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b6c24204d896e084c8b6c24084d892e49c7c50100000041f6c601753d4d8b164d8b66084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d896b084d89134d89dd4d89e6483b65187306ff5558ca0060ebbd4c8b34244d8b66084d89f64d8b5e18488d6424084d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004c8b5424304d8956204d895e184c8b5c24384d895e104d8966084c8b6424404d89264c896c24204c897424284c8b7424204c8b6c24284d8b65084d8b5d184d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b5424484d8955204d895d184c8b5c24504d895d104d8965084c8b6424584d896500498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c700010000004881c488000000c3f400000000|@18221,1,@4066,@8658,@8880,@5027,@5031,@5030|453,0,@10220 463,0,@10221 638,0,@10223 661,0,@10226 778,0,@18010 8880:D22,4184|483b65187306ff5558ca090753415041514152498d5fe8483b5d107303ff55504989df48c743f8020000004c8b7424104c89730849be600e7af1c27f00004c89336a016a0148b8b8b0d5f1c27f00004c8b4424184989e1ff15a3100000ff3424ff742410488b442408488b5c24284c8b0424ff158010000048c7c043000000488b5c2428ff15661000004d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b6424304d89e64d89650849bcb80e7af1c27f00004d8965004c8b4424284d8b50104d89d44d89c04d8b48484d89cb4d8b124d8b094983f95374054d89caeb004983fa5f0f85f00000004d89c04d8b60284d89c04d8b68304d89c04d8b58504d89c04d8b70704d89c04d8b50784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d8974241049c74424080100000049c704240100000049c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c8d0f1c27f00004d892ee9fc0400004d89c04d89c04d8b24244d8b1b4983fb5374054d89dceb004d89e34c8d15080000004f8d549afc41ffe2e91b020000909090e913020000909090e90b020000909090e903020000909090e9fb010000909090e9f3010000909090e9eb010000909090e9e3010000909090e9db010000909090e9d3010000909090e9cb010000909090e9c3010000909090e9bb010000909090e9b3010000909090e9ab010000909090e9a3010000909090e9b3010000909090e993010000909090e9ac010000909090e983010000909090e97b010000909090e973010000909090e96b010000909090e963010000909090e95b010000909090e953010000909090e94b010000909090e96d010000909090e93b010000909090e933010000909090e92b010000909090e923010000909090e91b010000909090e913010000909090e90b010000909090e903010000909090e9fb000000909090e9f3000000909090e9eb000000909090e9e3000000909090e9db000000909090e9d3000000909090e9cb000000909090e9c3000000909090e9bb000000909090e9b3000000909090e9ab000000909090e9a3000000909090e99b000000909090e9c6000000909090e98b000000909090e983000000909090e97b000000909090e973000000909090e9a7000000909090e963000000909090e95b000000909090e953000000909090e94b000000909090e988000000909090e93b000000909090e981000000909090e92b000000909090e923000000909090e91b000000909090e913000000909090e90b000000909090e9030000009090904983fc19750949c7c403000000eb0749c7c401000000eb3d49c7c403000000eb3449c7c403000000eb2b49c7c403000000eb2249c7c403000000eb1949c7c403000000eb1049c7c403000000eb0749c7c4030000004983fc030f852f0100004d89c04c89c341ff70304889db4c8b63504889db4c8b737841ff342441ff3648bae0b0d5f1c27f0000488b4424684d89e84c8b4c2438ff15260c00004989c64c8b6c24404d8b65284d89ed4d8b6d704d8b24244d8b5d004d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004c8b14244d895520488d6424084d895d184c8b1c244d895d10488d6424084d8965084c8b24244d896500488d6424084d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104d8974240849c704240100000049c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849bdd8c8d0f1c27f00004d892ee924010000498d5fe8483b5d107306ff5550ca00414989df48c743f8020000004d89f64c89730849be080f7af1c27f00004c89336a016a0148b8b8b0d5f1c27f00004989e1ff15e50a0000ff34244c8b442410488b0424488b5c2440ff15c60a000048c7c013000000488b5c2440ff15ac0a00004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424484d89700849be680f7af1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b442478488b5c24504989e14c8b542448ff15500a0000415c488d64240849c7c6010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e084c8b2c244d892e488d642418415648c7c05f000000488b5c2430ff15d3090000488b4424304c8b60104d89e64889c04c8b58484d89dd4d8b24244d8b1b4983fb5374054d89dceb004983fc150f850d0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15f8070000ff15ea0700004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15220700004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d89700849bec80f7af1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b442468488b5c24404989e14c8b542438ff15c6060000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508030000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892ee91b0300004983fc130f850a0300004889c04889c04d8b65004983fc53740d49c7450053000000e94a0200004d8b2e4983fd010f8526020000488d6424304889c04989c5ff70284d89ed498b55384d89ed4d89ee41ff75404d89f64d89f541ff76504d89ed4d89ee41ff75704d89f641ff767848c7c001000000ff124989c64156488b54242048c7c001000000ff124989c64c8b6424284d8b2c244c8b5c24184d892b4c8b2c244d89e44d892c24488d6424084c8b6c24084d8b65004c8b1c244d8923488d6424084d89ed4d897500488d6424204c8b34244d89f541ff76284d89ed498b55384d89ed4d89ee41ff75404d89f641ff767048c7c001000000ff124989c64156488b54241048c7c001000000ff124989c64c8b2c244c8b6424184d892c24488d6424084c8b2c244d897500488d6424184c8b14244d8b62284d89d24d8b6a304d89d24d8b5a504d89d24d8b72704d89d24d8b52784d8b1b4d8b24244d8b0a4d8b164d8d77d04c3b75107306ff5550ca003e4d89f749c746f8050000004d894e204d8956184d895e104d8966084d892e415648b81030d1f1c27f000048bb4830d1f1c27f0000ff15c1040000ff15b30400004989c54d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080700000049c70601000000498d47d8483b45107306ff5550ca00404989c748c740f8040000004c8b2c244c896818488d6424084c89701048c740080100000048c700030000004c8b2c244d8b75184d89ed498b5560488d64240849c70603000000ff1248b87830d1f1c27f0000488b5d08ff2349c7065300000048baf030d1f1c27f0000ff15eb0300004d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b7424384d89700849be10107af1c27f00004d89306a016a0148bac8b0d5f1c27f0000488b442468488b5c24404989e14c8b542438ff158f030000415e415c4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049c74508010000004d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c601000000415648c7c023000000488b5c2438ff151d0300006a016a0148ba48bed5f1c27f0000488b4424704c8b7424684156488b5c24504c8b4424584c8d4c24084c8b542448ff15e1020000415d415e4c8b4424104d8b204d89c04d8b50104d89c0498b78204d8b5e084d8b4e184d8d77d04c3b75107306ff5550ca803f4d89f749c746f80500000049897e204d894e184d8956104d895e084d8926f60424010f85ca0000004c8b24244d8b24244d8b1c244d8b5424084d8b4c241049c7c401000000498d7ff0483b7d107306ff5550ca007f4989ff48c747f801000000c647ff404c892749c7c401000000498d77f0483b75107306ff5550ca807f4989f748c746f801000000c646ff404c89264d8d67c84c3b65107306ff5550cac06f4d89e749c74424f806000000498974242849897c24204d894c24184d895424104d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00514d89ef49c745f8020000004d89650849c7450005000000eb004c8b24244983fc01488d642408750949c7c103000000eb0749c7c1010000004983f10249c7c4010000004d8d57f04c3b55107306ff5550ca00734d89d749c742f80100000041c642ff404d892249c7c4010000004d8d5ff04c3b5d107306ff5550ca00774d89df49c743f80100000041c643ff404d892349c7c401000000498d77f0483b75107306ff5550ca007f4989f748c746f801000000c646ff404c892649c7c401000000498d7ff0483b7d107306ff5550ca407f4989ff48c747f801000000c647ff404c892749c7c401000000498d57f0483b55107306ff5550cac07f4989d748c742f801000000c642ff404c892249c7c401000000498d4ff0483b4d107306ff5550cac47f4989cf48c741f801000000c641ff404c89214d8d67984c3b65107306ff5550cac66f4d89e749c74424f80c00000049894c24584989542450498974244849897c24404d89c04d894424384d894c24304d895424284d895c24204c8b5c24104d895c24184d897424104d896c24084c8b2c244d892c24488d6424184c8b6c24284d8965004d89750848c7c0010000004883c430c21000f4000000000000|@18222,1,@4067,@8741,@8657,@8666,@5027,@5031,@5030,@8666,@5027,@5031,@5030,@8657,@8666,@8657,@5414,@8688,@8699,@8657,@5414,@8688|54,0,@8881 71,0,@18027 176,0,@8882 461,0,@9493 1191,0,@18029 1445,0,@9493 1497,0,@8883 1514,0,@18027 1607,0,@8884 1624,0,@18028 2216,0,@10220 2226,0,@10221 2401,0,@10223 2424,0,@10226 2473,0,@8885 2490,0,@18028 3007,0,@10220 3017,0,@10221 3192,0,@10223 3215,0,@10226 3264,0,@8886 3281,0,@18028 3425,0,@18094 8881:D3,48|483b65187305ff5558cd054883f8237502eb0e4883f8157502eb064883f813750848c7c003000000c3488b5208ff22f4|@10371,1,@4060| 8882:D3,40|483b65187305ff5558cd054883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f4|@10371,1,@4061| 8883:D3,56|483b65187305ff5558cd054883f813750848c7c003000000c34883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f40000|@10371,1,@4062| 8884:D3,56|483b65187305ff5558cd054883f863750848c7c003000000c34883f8177502eb0c4883f85f7406488b5208ff2248c7c003000000c3f40000|@10371,1,@4063| 8885:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@4064| 8886:D3,32|483b65187305ff5558cd054883f823750848c7c003000000c3488b5208ff22f4|@10371,1,@4065| 8887:D613,132968|488dbc2418feffff483b7d187305ff5560cd095053488b442408ff15681a02004989c641564c8b342441ff76104c8b74240841ff76184c8b7424184983fe03750c49be10d6d5f1c27f0000eb0a49bed817d5f1c27f000041564c8b7424204983fe03750c49bef8f9d4f1c27f0000eb0a49bee058d1f1c27f000049bd48c3d0f0c27f00004d897500488b54240848b840d6d5f1c27f0000ff1248b870d6d5f1c27f000048bb985fd1f1c27f0000ff15cd1902004989c6415648c7c001000000ff15b31902004989c6415648c7c001000000ff15991902004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be48c9d1f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b870d6d5f1c27f000048bbc06ad1f1c27f0000ff15f31802004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc688cd1f1c27f00004d8966184d896e1049bdf012d1f1c27f00004d896e0849bd48c9d1f1c27f00004d892e415648b890d6d5f1c27f000048bb985fd1f1c27f0000ff15c61702004989c6415648c7c001000000ff15ac1702004989c6415648c7c001000000ff15921702004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30c9d1f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b890d6d5f1c27f000048bbc06ad1f1c27f0000ff15ec1602004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c706290000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc688cd1f1c27f00004d8966184d896e1049bdf012d1f1c27f00004d896e0849bd30c9d1f1c27f00004d892e415648c7c015000000ff15cc1502004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049beb0d6d5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd50d7d5f1c27f00004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50d7d5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15d21402004989c6488d642408415648c7c013000000ff15b31402004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc68d7d5f1c27f00004d8966184d896e1049c746080500000049bd88d7d5f1c27f00004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24184d892e4d8d6fe84c3b6d107306ff5550ca04404d89ef49c745f8020000004d8975084c8b7424104d8975004d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd988cd1f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec08cd1f1c27f00004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be30c9d1f1c27f00004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be48c9d1f1c27f00004c8930ff124c8b742408498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424184c89700849be88d7d5f1c27f00004c8930ff12488b5424084c8b7424204983fe03750c49bdf8f9d4f1c27f0000eb0a49bde058d1f1c27f00004d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be2859d1f1c27f00004c8930ff12488b54240848b8a0d7d5f1c27f0000ff12488b54240848b8d0d7d5f1c27f0000ff12488b54240848b800d8d5f1c27f0000ff12ff3504120200f6042401754d4c8b34244d8b2e4c8b342441ff76084d8b7500488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558ebad488d642408488b54240848b830d8d5f1c27f0000ff12ff358d110200f6042401754d4c8b34244d8b2e4c8b342441ff76084d8b7500488b542420498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558ebad488d642408488b54240848b890d8d5f1c27f0000ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb4059d1f1c27f00004d895c242049bbf0d8d5f1c27f00004d895c241849bb60c9d1f1c27f00004d895c24104d896c240849c704240b0000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004155498d5fe8483b5d107306ff5550ca00404989df48c743f80200000048c74308010000004c893348b858a4d3f1c27f000049b860c9d1f1c27f0000ff15cb0f02004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049bde05fd1f1c27f00004d896e0849bd60c9d1f1c27f00004d892e4156488b5424104d8d6fe84c3b6d107305ff5550cd044d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bdf0d8d5f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60c9d1f1c27f00004c8930ff12488b542418498d47e8483b45107305ff5550cd044989c748c740f802000000415e4c89700849be60c9d1f1c27f00004c8930ff1248c7c001000000ff156f0e02004989c6415648c7c001000000ff15550e02004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e20415d4d896e1849c746100100000049bd60ded5f1c27f00004d896e0849bd80ded5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001900000049bea8ded5f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbf8ded5f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15c80c02004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb9863d1f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd8063d1f1c27f00004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd10dfd5f1c27f00004d896e1049c746080100000049c7060b0000004156488b54241848b830dfd5f1c27f0000ff12488b54241848b860dfd5f1c27f0000ff1248c7c015000000ff15340b02004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be90dfd5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bda0dfd5f1c27f00004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0dfd5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff153a0a02004989c6488d642408415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415648c7c001000000ff15490902004989c6415648c7c001000000ff152f0902004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb8dfd5f1c27f00004d89750849be985fd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff15460802004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15dc0702004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff159d0702004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f803000000415d4d896c2410415d4d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdd8dfd5f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed8dfd5f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c00b000000ff15200502004989c64156488b442408ff15080502004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff159a0402004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff155b0402004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd688cd1f1c27f00004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdf8dfd5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef8dfd5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648b8785fd1f1c27f0000ff159d0202004989c64156488b442408ff15850202004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15170202004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15d80102004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff15e70002004989c64156488b0424ff15d00002004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd688cd1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd10e0d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be10e0d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff151eff01004989c6415648c7c001000000ff1504ff01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be50e0d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1565fe01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15f7fd01004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15b8fd01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0e0d5f1c27f00004c8970084c8b7424104c893048c7c303000000ff15e8fc01004989c64156488b0424ff15d1fc01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bde8e0d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8e0d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1524fb01004989c6415648c7c001000000ff150afb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be00e1d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff156bfa01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15fdf901004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15bef901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0e0d5f1c27f00004c8970084c8b7424104c893048c7c303000000ff15eef801004989c64156488b0424ff15d7f801004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd20e1d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20e1d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff152af701004989c6415648c7c001000000ff1510f701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be48e1d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1571f601004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1503f601004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15c4f501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0e0d5f1c27f00004c8970084c8b7424104c893048c7c303000000ff15f4f401004989c64156488b0424ff15ddf401004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd68e1d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68e1d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1530f301004989c6415648c7c001000000ff1516f301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be80e1d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1577f201004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1509f201004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15caf101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084156498d47e8483b45107303ff55504989c748c740f80200000049bea0e0d5f1c27f00004c8970084c8b7424104c893048c7c303000000ff15faf001004989c64156488b0424ff15e3f001004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bda0e1d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0e1d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c011000000ff155def01004989c64156488b442408ff1545ef01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15d7ee01004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1598ee01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8e0d5f1c27f00004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdc8e1d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec8e1d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c00f000000ff15ddec01004989c64156488b442408ff15c5ec01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1557ec01004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1518ec01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8e0d5f1c27f00004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bde8e1d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8e1d5f1c27f00004c8930ff124c8b742410498b561048b808e2d5f1c27f0000ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff1521ea01004989c6415648c7c001000000ff1507ea01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849bed0e2d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff1568e901004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15fae801004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15bbe801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff159de701004989c64156488b0424ff1586e701004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd20e3d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20e3d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e415648c7c001000000ff15d4e501004989c6415648c7c001000000ff15bae501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be40e3d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff151be501004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15ade401004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff156ee401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff1550e301004989c64156488b0424ff1539e301004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd68e3d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68e3d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c007000000ff15aee101004989c64156488b442408ff1596e101004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1528e101004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15e9e001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104c8b6c24084d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd88e3d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88e3d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648b8b80bd1f1c27f0000ff152bdf01004989c64156488b442408ff1513df01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15a5de01004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1566de01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c408415648b8a8e3d5f1c27f000048c7c303000000ff15badd01004989c64156488b0424ff15a3dd01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24104d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdd8e3d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed8e3d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c8930ff1500dc01004989c541f6c501740f49be00e4d5f1c27f0000e91801000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64245848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff158edb01004989c641564c8b7424084983fe017d15488d64246848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff154fdb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d89750849be00e4d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb8e0d5f1c27f00004c893048c7c303000000ff1528da01004989c64156488b0424ff1511da01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdb0e4d5f1c27f00004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb0e4d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1587d801004989c6415648c7c001000000ff156dd801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8e4d5f1c27f00004d89750849bef8e4d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15ced701004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1560d701004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1521d701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8e5d5f1c27f00004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff152ad601004989c64156488b0424ff1513d601004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bd688cd1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bdf0e5d5f1c27f00004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef0e5d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1589d401004989c6415648c7c001000000ff156fd401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8e4d5f1c27f00004d89750849be10e6d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d0d301004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1562d301004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1523d301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8e5d5f1c27f00004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff152cd201004989c64156488b0424ff1515d201004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24284d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd40e6d5f1c27f00004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40e6d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1590d001004989c6415648c7c001000000ff1576d001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8e4d5f1c27f00004d89750849be68e6d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d7cf01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1569cf01004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff152acf01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8e5d5f1c27f00004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff1533ce01004989c64156488b0424ff151cce01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd98e6d5f1c27f00004d892e4c8b6c2408498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be98e6d5f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e415648c7c001000000ff1592cc01004989c6415648c7c001000000ff1578cc01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed8e4d5f1c27f00004d89750849beb8e6d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15d9cb01004989c541f6c501740b415e4883c408e91401000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff156bcb01004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff152ccb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049bdd8e5d5f1c27f00004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424084c893048c7c303000000ff1535ca01004989c64156488b0424ff151eca01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e488d6424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bde8e6d5f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8e6d5f1c27f00004c8930ff1248c7c001000000ff15b9c801004989c6415648c7c001000000ff159fc801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be08e7d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b828e7d5f1c27f000048c7c303000000ff15f4c701004989c64156488b0424ff15ddc701004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bdb8e0d5f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bd40e7d5f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40e7d5f1c27f00004c8930ff1248c7c001000000ff157dc601004989c6415648c7c001000000ff1563c601004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be60e7d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b888e7d5f1c27f000048c7c303000000ff15b8c501004989c64156488b0424ff15a1c501004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049bda8c3d1f1c27f00004d896c24104d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f802000000415e4d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bda0e7d5f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0e7d5f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415648b8f008d5f1c27f0000ff156cc301004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcc0e7d5f1c27f00004d8966104d896e0849c7060f000000415648c7c001000000ff1516c301004989c6415648c7c001000000ff15fcc201004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be90f1d5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c8930ff151bc201004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff15b1c101004989c641564c8b7424084983fe017d15488d64247048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1572c101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f008d5f1c27f0000ff15d1c001004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcb0f1d5f1c27f00004d8966104d896e0849c7060f000000415648c7c001000000ff157bc001004989c6415648c7c001000000ff1561c001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be90f5d5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424184c8930ff1580bf01004989c541f6c5017407415ee91001000049c7c60100000041f6c50175364d8b5d084d89f44983c4027115488d64246848b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc4415648c7c001000000ff1516bf01004989c641564c8b7424084983fe017d15488d64247848b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15d7be01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e415648c7c00100000048bbb0f5d5f1c27f0000ff15f8bb01004989c64156488b442408ff15e0bb01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424a000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff156fbb01004989c641564c8b7424084983fe017d18488da424b000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff152dbb01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e415648c7c00100000048bbc0f5d5f1c27f0000ff1557ba01004989c64156488b442408ff153fba01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424a800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15ceb901004989c641564c8b7424084983fe017d18488da424b800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff158cb901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424304d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c3d1f1c27f00004d896e0849c7060500000041564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424304d8975104c8b7424384d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c3d1f1c27f00004d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424384d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24404d892e415648c7c00500000048bbd0f5d5f1c27f0000ff1592b701004989c64156488b442408ff157ab701004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1509b701004989c641564c8b7424084983fe017d18488da424d000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15c7b601004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24484d892e415648c7c00500000048bbe0f5d5f1c27f0000ff15a2b501004989c64156488b442408ff158ab501004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1519b501004989c641564c8b7424084983fe017d18488da424d800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15d7b401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24484d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424504c893048c7c303000000ff15e6b301004989c64156488b0424ff15cfb301004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424404d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c3d1f1c27f00004d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24484d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24584d892e415648c7c00700000048bbf0f5d5f1c27f0000ff154bb201004989c64156488b442408ff1533b201004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424d800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15c2b101004989c641564c8b7424084983fe017d18488da424e800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1580b101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24504d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e415648c7c00700000048bb00f6d5f1c27f0000ff1533b001004989c64156488b442408ff151bb001004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424e000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15aaaf01004989c641564c8b7424084983fe017d18488da424f000000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff1568af01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424684c893048c7c303000000ff154fae01004989c64156488b0424ff1538ae01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424504d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c3d1f1c27f00004d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24504d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424584d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24604d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e415648c7c00900000048bb10f6d5f1c27f0000ff158dac01004989c64156488b442408ff1575ac01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424f000000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff1504ac01004989c641564c8b7424084983fe017d18488da4240001000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15c2ab01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c40841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24604d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff1582aa01004989c64156488b0424ff156baa01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424584d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd78c3d1f1c27f00004d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424584d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424484d8966184d896e1049c746080500000049bd20f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424504d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424484d8966184d896e1049c746080500000049bd40f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424900000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424404d8966184d896e1049c746080500000049bd90f1d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90f1d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424880000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424404d8966184d896e1049c746080500000049bd90f5d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be90f5d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424384d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424284d8966184d896e1049c746080500000049bd60f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424284d8966184d896e1049c746080500000049bd80f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424204d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bda0f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bdc0f6d5f1c27f00004d892e4c8bac24a8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec0f6d5f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424084d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c488da424900000004d8966184d896e1049c746080500000049bde0f6d5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee0f6d5f1c27f00004c8930ff1248c7c00500000048c7c30500000049b800f7d5f1c27f0000ff15cba201004989c64156ff35b8a20100f60424010f85080100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00504d89ef49c745f80700000049c745300100000049c745280100000049bb4059d1f1c27f00004d895d2049bb28cfd1f1c27f00004d895d184d89651049c74508010000004d8975004c8b642428498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9eefeffff488d6424084d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bcd843d5f1c27f00004d89651849bc1844d5f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15c1a001004989c64156488b0424ff15aaa001004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080500000049bd10f7d5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd28f7d5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be60f7d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd98f7d5f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed0f7d5f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10f8d5f1c27f00004d892e4156f60424010f85360100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b6d104d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049ba28cfd1f1c27f00004d8953104d896b0849c703050000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508010000004d8975004c8b642428498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9c0feffff488d64240848c7c015000000ff15b79d01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be48f8d5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd58f8d5f1c27f00004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58f8d5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15bd9c01004989c6488d642408415648b870f8d5f1c27f000048c7c303000000ff15949c01004989c64156488b0424ff157d9c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcd817d5f1c27f00004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10d6d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10d6d5f1c27f00004c893048c7c303000000ff15579b01004989c64156488b0424ff15409b01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b870f8d5f1c27f000048c7c303000000ff158d9a01004989c64156488b0424ff15769a01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc10d6d5f1c27f00004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd10d6d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be10d6d5f1c27f00004c893048c7c303000000ff15509901004989c64156488b0424ff15399901004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc10d6d5f1c27f00004d8966104d896e0849c70605000000415648b870f8d5f1c27f000048c7c303000000ff15869801004989c64156488b0424ff156f9801004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c70607000000415648b870f8d5f1c27f000048c7c303000000ff15f09701004989c64156488b0424ff15d99701004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706050000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004d8974241049be78c3d1f1c27f00004d8974240849c70424050000004d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004c8b7424184d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bda0f8d5f1c27f00004d892e41564c8b742418498b561848b8c0f8d5f1c27f0000ff1248b8f0f8d5f1c27f0000ff15669601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd08f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be08f9d5f1c27f00004c8930ff1248b82071d2f1c27f0000ff15929501004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd20f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20f9d5f1c27f00004c8930ff1248b82814d4f1c27f0000ff15be9401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd38f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be38f9d5f1c27f00004c8930ff1248b8f012d1f1c27f0000ff15ea9301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd50f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50f9d5f1c27f00004c8930ff1248b8b05fd1f1c27f0000ff15169301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd70f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70f9d5f1c27f00004c8930ff1248b8406ed4f1c27f0000ff15429201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd88f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88f9d5f1c27f00004c8930ff1248b8886ed4f1c27f0000ff156e9101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bda0f9d5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0f9d5f1c27f00004c8930ff124c8b742418498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424204c89700849bea0f8d5f1c27f00004c8930ff1248c7c015000000ff15609001004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049beb8f9d5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bdc8f9d5f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec8f9d5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15668f01004989c6488d642408415648b8e0f9d5f1c27f000048c7c303000000ff153d8f01004989c64156488b0424ff15268f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8e0f9d5f1c27f000048c7c303000000ff15738e01004989c64156488b0424ff155c8e01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcd817d5f1c27f00004d8966104d896e0849c7060500000041564c8b742410498b561848b8f8f9d5f1c27f0000ff1248b8a80fd5f1c27f0000ff159b8d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd50dad0f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff1248b828fad5f1c27f0000ff15c78c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bda884d3f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff1248b848fad5f1c27f0000ff15f38b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd80dad0f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff1248b868fad5f1c27f0000ff151f8b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd88fad5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff1248b860bed1f1c27f0000ff154b8a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bdb8d8d0f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8d8d0f1c27f00004c8930ff1248b8180ed5f1c27f0000ff15788901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bde8d8d0f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8d8d0f1c27f00004c8930ff1248b8f0f8d5f1c27f0000ff15a58801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bda0d8d0f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0d8d0f1c27f00004c8930ff1248b82814d4f1c27f0000ff15d28701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bda0fad5f1c27f00004d892e4c8b6c2410498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0fad5f1c27f00004c8930ff1248b8b8fad5f1c27f0000ff15ff8601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c488d6424084d8966184d896e1049c746080500000049bdd0fad5f1c27f00004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0fad5f1c27f00004c8930ff1248c7c015000000ff152f8601004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bee8fad5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd2088d3f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be2088d3f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15358501004989c6488d64240841564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893048c7c303000000ff15c78401004989c64156488b0424ff15b08401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424284c893048c7c303000000ff15b88301004989c64156488b0424ff15a18301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424284d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424304c893048c7c303000000ff15cf8201004989c64156488b0424ff15b88201004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424304d8966104d896e0849c7060500000041564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be8063d1f1c27f00004c8930ff1248b8f8fad5f1c27f0000ff15b08101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd50dad0f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff1248b810fbd5f1c27f0000ff15dc8001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bda884d3f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff1248b8d063d4f1c27f0000ff15088001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd80dad0f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff1248b828fbd5f1c27f0000ff15347f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424104d8966184d896e1049c746080500000049bd88fad5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff1248b8c05ed1f1c27f0000ff15607e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bdb8d8d0f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8d8d0f1c27f00004c8930ff1248b8a8b8d1f1c27f0000ff158c7d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bde8d8d0f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8d8d0f1c27f00004c8930ff1248b86862d4f1c27f0000ff15b87c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bda0d8d0f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0d8d0f1c27f00004c8930ff1248b880b8d3f1c27f0000ff15e47b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd40fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40fbd5f1c27f00004c8930ff1248b89862d4f1c27f0000ff15107b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd58fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58fbd5f1c27f00004c8930ff1248b88863d4f1c27f0000ff153c7a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd70fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70fbd5f1c27f00004c8930ff1248b8f0ded3f1c27f0000ff15687901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd88fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fbd5f1c27f00004c8930ff1248b8a0fbd5f1c27f0000ff15947801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bdb8fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8fbd5f1c27f00004c8930ff1248b8c8ded3f1c27f0000ff15c07701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bdd0fbd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0fbd5f1c27f00004c8930ff1248b8e8fbd5f1c27f0000ff15ed7601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bd00fcd5f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be00fcd5f1c27f00004c8930ff1248b84063d4f1c27f0000ff151a7601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c488d6424104d8966184d896e1049c746080500000049bd18fcd5f1c27f00004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18fcd5f1c27f00004c8930ff1248c7c015000000ff154a7501004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be30fcd5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd1089d3f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be1089d3f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15507401004989c6488d642408415648b8a8e3d5f1c27f000048c7c303000000ff15277401004989c64156488b0424ff15107401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8a8e3d5f1c27f000048c7c303000000ff155d7301004989c64156488b0424ff15467301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcb8e0d5f1c27f00004d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24304d896e1049bdb8e0d5f1c27f00004d896e0849c70605000000415648c7c01b000000ff15657201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd40fcd5f1c27f00004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24384d896e1049bdb8e0d5f1c27f00004d896e0849c70605000000415648c7c019000000ff15947101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd60fcd5f1c27f00004d892e41564d8d77e04c3b75107303ff55504d89f749c746f80300000049bdb8e0d5f1c27f00004d896e104c8b6c24404d896e0849c70605000000415648c7c00d000000ff15c37001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd80fcd5f1c27f00004d892e41564c8b742428498b561848b860dfd5f1c27f0000ff1248b8a0fcd5f1c27f0000ff15127001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424204d8966184d896e1049c746080500000049bd50dad0f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff1248b8c0fcd5f1c27f0000ff153e6f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424204d8966184d896e1049c746080500000049bda884d3f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff1248b8e0fcd5f1c27f0000ff156a6e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424204d8966184d896e1049c746080500000049bd80dad0f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff1248b800fdd5f1c27f0000ff15966d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424204d8966184d896e1049c746080500000049bd88fad5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff1248b8885ad5f1c27f0000ff15c26c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bdb8d8d0f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8d8d0f1c27f00004c8930ff1248b820fdd5f1c27f0000ff15ee6b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bde8d8d0f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8d8d0f1c27f00004c8930ff1248b838fdd5f1c27f0000ff151a6b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bda0d8d0f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0d8d0f1c27f00004c8930ff1248b850fdd5f1c27f0000ff15466a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd40fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40fbd5f1c27f00004c8930ff1248b868fdd5f1c27f0000ff15726901004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd58fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58fbd5f1c27f00004c8930ff1248b880fdd5f1c27f0000ff159e6801004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd70fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be70fbd5f1c27f00004c8930ff1248b898fdd5f1c27f0000ff15ca6701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd88fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fbd5f1c27f00004c8930ff1248b8b0fdd5f1c27f0000ff15f66601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bdb8fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8fbd5f1c27f00004c8930ff1248b8c8fdd5f1c27f0000ff15226601004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bdd0fbd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0fbd5f1c27f00004c8930ff1248b8e0fdd5f1c27f0000ff154e6501004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd00fcd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be00fcd5f1c27f00004c8930ff1248b8f8fdd5f1c27f0000ff157a6401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424184d8966184d896e1049c746080500000049bd18fcd5f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18fcd5f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849be40fcd5f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849be60fcd5f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424284c89700849be80fcd5f1c27f00004c8930ff1248c7c015000000ff15f66201004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be10fed5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd20fed5f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be20fed5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15fc6101004989c6488d64240841564c8b3424498b561848b8a0d7d5f1c27f0000ff1248b838fed5f1c27f000048c7c303000000ff15bf6101004989c64156488b0424ff15a86101004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8a0fcd5f1c27f0000ff15fc6001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd50dad0f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff1248b838fed5f1c27f000048c7c303000000ff15256001004989c64156488b0424ff150e6001004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8c0fcd5f1c27f0000ff15625f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bda884d3f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff1248b838fed5f1c27f000048c7c303000000ff158b5e01004989c64156488b0424ff15745e01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8e0fcd5f1c27f0000ff15c85d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd80dad0f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff1248b838fed5f1c27f000048c7c303000000ff15f15c01004989c64156488b0424ff15da5c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b800fdd5f1c27f0000ff152e5c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd88fad5f1c27f00004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff1248c7c015000000ff15635b01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be98fed5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bda8fed5f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea8fed5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15695a01004989c6488d642408498b561848b8d0d7d5f1c27f0000ff1248c7c015000000ff153c5a01004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bec0fed5f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bdf888d3f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef888d3f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15425901004989c6488d642408415648b8f008d5f1c27f0000ff15205901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcd0fed5f1c27f00004d8966104d896e0849c7060f000000415648c7c001000000ff15ca5801004989c6415648c7c001000000ff15b05801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed002d6f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648b8f008d5f1c27f0000ff15145801004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcf802d6f1c27f00004d8966104d896e0849c7060f000000415648c7c001000000ff15be5701004989c6415648c7c001000000ff15a45701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049bed803d6f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f802000000415d4d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00504d89ef49c745f80700000049c745300100000049c745280100000049bb4059d1f1c27f00004d895d2049bb0004d6f1c27f00004d895d184d89651049c745080500000049bc7004d6f1c27f00004d89650041554d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc9004d6f1c27f00004d8966184d896e1049c746080500000049bdd004d6f1c27f00004d892e415648b8f004d6f1c27f000048c7c303000000ff15ec5501004989c64156488b0424ff15d55501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c70605000000415648b8f004d6f1c27f000048c7c303000000ff15225501004989c64156488b0424ff150b5501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc4004d6f1c27f00004d8966104d896e0849c7060500000041564c8b742420498b561848b800d8d5f1c27f0000ff124c8b742420498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be7004d6f1c27f00004c8930ff124c8b742420498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bed004d6f1c27f00004c8930ff1248b82005d6f1c27f0000ff15d45301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd50dad0f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff1248b83805d6f1c27f0000ff15005301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bda884d3f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff1248b8e81ad4f1c27f0000ff152c5201004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd80dad0f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff1248b85005d6f1c27f0000ff15585101004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd88fad5f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff1248b8b0ded3f1c27f0000ff15845001004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424084d8966184d896e1049c746080500000049bd6805d6f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be6805d6f1c27f00004c8930ff1248b8b013d4f1c27f0000ff15b04f01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bdb8d8d0f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8d8d0f1c27f00004c8930ff1248b88005d6f1c27f0000ff15dd4e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bde8d8d0f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8d8d0f1c27f00004c8930ff1248b89805d6f1c27f0000ff150a4e01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b24244d8966184d896e1049c746080500000049bda0d8d0f1c27f00004d892e4c8b6c2420498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0d8d0f1c27f00004c8930ff1248b8e013d4f1c27f0000ff15374d01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c488d6424184d8966184d896e1049c746080500000049bd18d9d0f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18d9d0f1c27f00004c8930ff1248c7c017000000ff15654c01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bcb005d6f1c27f00004d8966184d896e1049c746080500000049bd80e0d0f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80e0d0f1c27f00004c8930ff1248c7c015000000ff15904b01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bcb005d6f1c27f00004d8966184d896e1049c746080500000049bdd005d6f1c27f00004d892e4c8b2c24498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed005d6f1c27f00004c8930ff1248c7c009000000ff15bb4a01004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bce805d6f1c27f00004d8966184d896e1049c746080500000049bd0806d6f1c27f00004d892e415d498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be0806d6f1c27f00004c8930ff1248c7c015000000ff15e84901004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be2806d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd3806d6f1c27f00004d892e4c8b6c2448498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be3806d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15ee4801004989c6488d642408415648c7c015000000ff15cf4801004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be5806d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd48f7d5f1c27f00004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be48f7d5f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15d54701004989c6488d642408415649be6806d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc7806d6f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd80ddd4f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15c24601004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4030000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb9006d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdb006d6f1c27f00004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049c74620010000004c8b2c244d896e1849bdb006d6f1c27f00004d896e1049c746080100000049c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bdc806d6f1c27f00004d896e1049c746080500000049bd6007d6f1c27f00004d892e415648c7c003000000ff15c14401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc7807d6f1c27f00004d8966184d896e1049c746080500000049bdc807d6f1c27f00004d892e415648c7c001000000ff15204401004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc7807d6f1c27f00004d8966184d896e1049c746080500000049bde807d6f1c27f00004d892e415648c7c005000000ff157f4301004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc0808d6f1c27f00004d8966184d896e1049c746080500000049bd2808d6f1c27f00004d892e41564c8b742428498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6c24204d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb006d6f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be6007d6f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bec807d6f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849bee807d6f1c27f00004c8930ff124c8b742428498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424284c89700849be2808d6f1c27f00004c8930ff1248c7c015000000ff158f4101004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be4808d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd5808d6f1c27f00004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be5808d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15954001004989c6488d642408415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424304c893048c7c303000000ff15df3f01004989c64156488b0424ff15c83f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24084d892e415648c7c001000000ff15fb3e01004989c6415648c7c001000000ff15e13e01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be7808d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15423e01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4248800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15d13d01004989c641564c8b7424084983fe017d18488da4249800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff158f3d01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd9808d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424384c893048c7c303000000ff15403c01004989c64156488b0424ff15293c01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcb8e0d5f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15803b01004989c6415648c7c001000000ff15663b01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849beb008d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bdd008d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424404c893048c7c303000000ff15183a01004989c64156488b0424ff15013a01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424104d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24184d892e415648c7c001000000ff15333901004989c6415648c7c001000000ff15193901004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849bee808d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff157a3801004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4249800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15093801004989c641564c8b7424084983fe017d18488da424a800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15c73701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd0809d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424484c893048c7c303000000ff15783601004989c64156488b0424ff15613601004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b6424484d8966104d896e0849c70605000000415648c7c001000000ff15bd3501004989c6415648c7c001000000ff15a33501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be2009d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd4009d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424504c893048c7c303000000ff15553401004989c64156488b0424ff153e3401004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc4004d6f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15953301004989c6415648c7c001000000ff157b3301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849be5809d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd8809d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec0e3d5f1c27f00004c8970084c8b7424584c893048c7c303000000ff152d3201004989c64156488b0424ff15163201004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc4004d6f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff156d3101004989c6415648c7c001000000ff15533101004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be30e0d5f1c27f00004d89750849bea009d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bdc009d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c893048c7c303000000ff15b72f01004989c64156488b0424ff15a02f01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e415648c7c001000000ff15cd2e01004989c6415648c7c001000000ff15b32e01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849bee009d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15142e01004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424b800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15a32d01004989c641564c8b7424084983fe017d18488da424c800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15612d01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd080ad6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bea8e3d5f1c27f00004c8970084c8b7424684c893048c7c303000000ff15122c01004989c64156488b0424ff15fb2b01004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15522b01004989c6415648c7c001000000ff15382b01004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be200ad6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd480ad6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424704c893048c7c303000000ff159c2901004989c64156488b0424ff15852901004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24484d892e415648c7c001000000ff15b22801004989c6415648c7c001000000ff15982801004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be600ad6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004156488b442408ff15f92701004989c541f6c501740b415e4883c408e91a01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da424c800000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15882701004989c641564c8b7424084983fe017d18488da424d800000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15462701004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004883c4084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd880ad6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424784d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb8e0d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15a92501004989c64156488b0424ff15922501004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15e92401004989c6415648c7c001000000ff15cf2401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849bea00ad6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bdc80ad6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bee00ad6f1c27f00004c8970084c8bb424800000004c893048c7c303000000ff157e2301004989c64156488b0424ff15672301004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15be2201004989c6415648c7c001000000ff15a42201004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be100bd6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd380bd6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bee00ad6f1c27f00004c8970084c8bb424880000004c893048c7c303000000ff15532101004989c64156488b0424ff153c2101004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c70605000000415648c7c001000000ff15932001004989c6415648c7c001000000ff15792001004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049beb0e2d5f1c27f00004d89750849be500bd6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd780bd6f1c27f00004d892e41564c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424584c89700849be9808d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424504c89700849bed008d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424484c89700849be0809d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424404c89700849be4009d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424384c89700849be8809d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424304c89700849bec009d6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424284c89700849be080ad6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424204c89700849be480ad6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424184c89700849be880ad6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424104c89700849bec80ad6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b7424084c89700849be380bd6f1c27f00004c8930ff124c8b742468498b5610498d47e8483b45107305ff5550cd044989c748c740f802000000415e488d6424584c89700849be780bd6f1c27f00004c8930ff1248bac07ed3f1c27f000048b8980bd6f1c27f000048c7c30100000049c7c001000000ff15781c01004889c248c7c001000000ff124989c6415648bac07ed3f1c27f000048b8080ed6f1c27f000048c7c30100000049c7c001000000ff15371c01004889c248c7c001000000ff124989c6415648bac07ed3f1c27f000048b8480fd6f1c27f000048c7c30100000049c7c001000000ff15f61b01004889c248c7c001000000ff124989c641564c8b742428498b561048b81811d6f1c27f0000ff124c8b742428498b561048b8c811d6f1c27f0000ff124c8b742428498b561048b85812d6f1c27f0000ff124c8b742428498b561048b8e812d6f1c27f0000ff124d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24784d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bc688cd1f1c27f00004d8966184d896e1049c746080500000049bd7813d6f1c27f00004d892e4c8b6c2428498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be7813d6f1c27f00004c8930ff1248bac814d5f1c27f000048b88079d1f1c27f000048bbb867d1f1c27f00004c8b442410ff15721a010048bac814d5f1c27f000048b808c3d5f1c27f000048bbe058d1f1c27f00004c8b442408ff15411a010048bac814d5f1c27f000048b808c3d5f1c27f000048bbf8f9d4f1c27f00004c8b442408ff15101a010048bac814d5f1c27f000048b8b8c4d5f1c27f000048bb3863d1f1c27f00004c8b0424ff15e0190100488d64241848b8a013d6f1c27f0000ff15c31901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc9014d6f1c27f00004d8966104d896e0849c7060f000000415648b8d014d6f1c27f0000ff156a1901004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc401ad5f1c27f00004d8966104d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc06ad1f1c27f00004d8965184d897510415e4d89750849c745000b0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bda06ad1f1c27f00004d896e1049bd1015d6f1c27f00004d896e0849c7060b000000415648b83815d6f1c27f0000ff15941801004989c6415648c7c001000000ff157a1801004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e20415d4d896e1849c746100100000049bd9815d6f1c27f00004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c89304883f8017515488d64247048b83027d5f1c27f0000488b5d08ff23488d642410ff157e1701004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb815d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0016d6f1c27f00004d892e415648b8f00bd5f1c27f0000ff15bb1601004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc8015d6f1c27f00004d8966104d896e0849c7060f0000004d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcc06ad1f1c27f00004d8965184d89751049be4816d6f1c27f00004d89750849c745000b0000004c8b34244983fe01750a488d6424084d89eeeb2c4d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7061f000000415648b8f008d5f1c27f0000ff15df1501004989c6415648c7c001000000ff15c51501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300700000049c74528030000004d897520415e4d89751849c745100100000049be7016d6f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff152c1501004989c6415648c7c001000000ff15121501004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be9016d6f1c27f00004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415649beb016d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648c7c001000000ff151b1401004989c6415648c7c001000000ff15011401004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be5817d6f1c27f00004d89750849be48dad4f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15601301004989c6415648c7c001000000ff15461301004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be7817d6f1c27f00004d89750849bea06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15d41101004889c248c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892649c7c41f4e00004e8d1ce5f9ffffff4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d892649c7c3030000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fd84c3b5d107306ff5550ca00704d89df49c743f80400000049c743180100000049c74310030000004d89630849c703030000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f80300000049ba9817d6f1c27f00004d895424104d895c24084d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bc4059d1f1c27f00004d8965104d89750849beb817d6f1c27f00004d897500488b5424384d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb817d6f1c27f00004c8930ff1248c7c001000000ff15d30f01004989c6415648c7c001000000ff15b90f01004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300700000049c74628030000004d896e20415d4d896e1849c746100100000049bdd017d6f1c27f00004d896e0849bdf017d6f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745001900000049be6019d6f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c7060d0000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bb7806d6f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000048bac07ed3f1c27f000048c7c30100000049c7c001000000ff152c0e01004889c248c7c001000000ff124989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c745000300000049c7c4030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d89264d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d8974240849c70424030000004d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049bb7019d6f1c27f00004d895e104d8966084d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849be4059d1f1c27f00004d89751049c745080100000049be9019d6f1c27f00004d8975004c8b3424498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be9019d6f1c27f00004c8930ff12488b54243848b8b019d6f1c27f0000ff124c8b3424498b561848b8b01cd6f1c27f0000ff124c8b3424498b561848b8981fd6f1c27f0000ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc094d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15c00b01004989c64156488b0424ff15a90b01004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc688cd1f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd28fbd5f1c27f00004d896e1049c746080500000049bd68dad0f1c27f00004d892e488b542440498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be68dad0f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc094d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d897500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff15ba0901004989c64156488b0424ff15a30901004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc688cd1f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd1022d6f1c27f00004d896e1049c746080500000049bd2822d6f1c27f00004d892e488b542440498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be2822d6f1c27f00004c8930ff1248c7c015000000ff15680801004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be4022d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd5022d6f1c27f00004d892e4c8b6c2450498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be5022d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff156e0701004989c6488d64240841564c8b342441ff761048c7c015000000ff15470701004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be6822d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd7822d6f1c27f00004d892e4c8b6c2410498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be7822d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff154d0601004989c6488d642408415648c7c015000000ff152e0601004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be9822d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bda822d6f1c27f00004d892e4c8b6c2408498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea822d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15340501004989c6488d642408415648c7c015000000ff15150501004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bec022d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd4867d2f1c27f00004d892e4c8b6c2410498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be4867d2f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff151b0401004989c6488d642408415648c7c015000000ff15fc0301004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bed022d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bde022d6f1c27f00004d892e4c8b6c2418498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee022d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15020301004989c6488d642408415648c7c015000000ff15e30201004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bef822d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd0823d6f1c27f00004d892e4c8b6c2420498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be0823d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15e90101004989c6488d642408415648c7c015000000ff15ca0101004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be2823d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd60dfd2f1c27f00004d892e4c8b6c2428498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be60dfd2f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15d00001004989c6488d642408415648c7c015000000ff15b10001004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be3823d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd4823d6f1c27f00004d892e4c8b6c2430498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be4823d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15b7ff00004989c6488d642408415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff157efe0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1556fe00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbb023d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd0024d6f1c27f00004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be0024d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd0024d6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff156cfb0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1544fb00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb1824d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd7024d6f1c27f00004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be7024d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd7024d6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff155af80000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1532f800004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb9024d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bde824d6f1c27f00004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee824d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bde824d6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1548f50000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1520f500004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb0825d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdd0d1d5f1c27f00004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed0d1d5f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdd0d1d5f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1536f20000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff150ef200004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb5825d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdb025d6f1c27f00004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb025d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdb025d6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1524ef0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15fcee00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbd025d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd2826d6f1c27f00004d892e41564c8b742440498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be2826d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd2826d6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1512ec0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15eaeb00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb4826d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bda026d6f1c27f00004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea026d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bda026d6f1c27f00004d896e1049c746080100000049c7060b00000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8b7424304d89750849bec026d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424204d89660849bcb87ed2f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b5c24184d895c240849bbd826d6f1c27f00004d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004c8b5424084d89530849ba78d5d2f1c27f00004d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004c8b4c24104d894a0849b9f026d6f1c27f00004d890a4d8d4fe84c3b4d107306ff5550ca007c4d89cf49c741f8020000004c8b04244d89410849b80827d6f1c27f00004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41566a01f64424080175524c8b7424084d8b364c8b6c240841ff7508498b06498b5e08ff1505e800004c8b7424084983fe0175054989c4eb0e488b5c2408ff15e2e700004989c4415d4c8924244c896c2408483b65187303ff5558eba758ff15bae700004989c64156488b0424ff15a3e700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc2027d6f1c27f00004d8965104d89750849bed888d1f1c27f00004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd7027d6f1c27f00004d892e41564c8b742478498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be7027d6f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15cfe500004989c64156488b0424ff15b8e500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd9027d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff154ce400004989c64156488b0424ff1535e400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda827d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15c9e200004989c64156488b0424ff15b2e200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc027d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1546e100004989c64156488b0424ff152fe100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd827d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15c3df00004989c64156488b0424ff15acdf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf827d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1540de00004989c64156488b0424ff1529de00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1828d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c8930ff153ddc00004d8d77d04c3b75107305ff5550cd014d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd7027d6f1c27f00004d896e1049c746080100000049c7060b0000004156ff15e2db00004989c64156488b0424ff15cbdb00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060700000041564c8bb42490000000498b561848b83028d6f1c27f0000ff1248c7c015000000ff153edb00004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049be582bd6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bd682bd6f1c27f00004d892e4c8bac2498000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be682bd6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff1541da00004989c6488d642408415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1508d90000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15e0d800004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb902bd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdf02bd6f1c27f00004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef02bd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdf02bd6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15f6d50000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15ced500004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb102cd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd602cd6f1c27f00004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be602cd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd602cd6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15e4d20000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15bcd200004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb782cd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdd02cd6f1c27f00004d892e41564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed02cd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdd02cd6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15d2cf0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15aacf00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbf02cd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd482dd6f1c27f00004d892e41564c8b742420498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be482dd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd482dd6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15c0cc0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1598cc00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb682dd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdc02dd6f1c27f00004d892e41564c8b742428498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bec02dd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdc02dd6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15aec90000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1586c900004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bbe02dd6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd382ed6f1c27f00004d892e41564c8b742430498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be382ed6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd382ed6f1c27f00004d896e1049c746080100000049c7060b000000415649be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff159cc60000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff1574c600004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb502ed6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bda82ed6f1c27f00004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bda82ed6f1c27f00004d896e1049c746080100000049c7060b00000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424204d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc82ed6f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1581c400004989c64156488b0424ff156ac400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf82ed6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff154dc300004989c64156488b0424ff1536c300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd182fd6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc82ed6f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1514c200004989c64156488b0424ff15fdc100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd382fd6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15e0c000004989c64156488b0424ff15c9c000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd582fd6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15d4bf00004989c64156488b0424ff15bdbf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd782fd6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24584d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424584c893048c7c303000000ff15cdbe00004989c64156488b0424ff15b6be00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd982fd6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424684d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24400100004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be688cd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24504d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1542bd00004989c64156488b0424ff152bbd00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdb82fd6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424704d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24584d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff150ebc00004989c64156488b0424ff15f7bb00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd82fd6f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da4244801000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141566a016a016a01488b44242048c7c3010000004989e0ff15d6b90000488d6424105b488b4424084c8b4424104c8b0c24ff15b4b900004989c6488d6424104156ff3424f604240175514c8b34244d8b2e4c8b342441ff76084c8b742458498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba9488d6424084c8b742448498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f802000000415d4d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea82ed6f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c7450801000000415e488d6424084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8b6424184d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb4059d1f1c27f00004d895c242049bb98b3d1f1c27f00004d895c241849bbe0b3d1f1c27f00004d895c24104d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049bbf02fd6f1c27f00004d895d084d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff158bb700004989c64156488b0424ff1574b700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049c746080100000049c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc0830d6f1c27f00004d8965104d89750849bed888d1f1c27f00004d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd6030d6f1c27f00004d892e41564c8b742438498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be6030d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd6030d6f1c27f00004d896e1049c746080100000049c7060b00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24204d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424304d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24184d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff1506b500004989c64156488b0424ff15efb400004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424880000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd8030d6f1c27f00004d896e0849bd4033d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24284d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424384d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24204d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff153cb300004989c64156488b0424ff1525b300004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424900000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424084d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd6033d6f1c27f00004d896e0849bd0034d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424404d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24180100004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be688cd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff151ab100004989c64156488b0424ff1503b100004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424980000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd2034d6f1c27f00004d896e0849bdc834d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893048c7c303000000ff15a3af00004989c64156488b0424ff158caf00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424a00000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424184d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bde834d6f1c27f00004d896e0849bd9835d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424504d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24284d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15d8ad00004989c64156488b0424ff15c1ad00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424800000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424204d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc035d6f1c27f00004d896e0849bd8836d6f1c27f00004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8bac24a00000004d896e104c8b6c24384d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424284d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda836d6f1c27f00004d896e0849bd1837d6f1c27f00004d892e41564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8bac24b80000004d896e1049bd3837d6f1c27f00004d896e0849bd7837d6f1c27f00004d892e415648b89837d6f1c27f000048c7c303000000ff15c5ab00004989c64156488b0424ff15aeab00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8c3d1f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb037d6f1c27f00004d896e0849bd4838d6f1c27f00004d892e415648b89837d6f1c27f000048c7c303000000ff1515aa00004989c64156488b0424ff15fea900004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8c3d1f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd6838d6f1c27f00004d896e0849bda838d6f1c27f00004d892e415648b89837d6f1c27f000048c7c303000000ff1565a800004989c64156488b0424ff154ea800004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bcc838d6f1c27f00004d8966104d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8c3d1f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bde838d6f1c27f00004d896e0849bd7039d6f1c27f00004d892e415648b89839d6f1c27f000048c7c303000000ff15b5a600004989c64156488b0424ff159ea600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8c3d1f1c27f00004d8965104d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bcd843d5f1c27f00004d89651849bc1844d5f1c27f00004d8965104d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049bef839d6f1c27f00004d89750849be403ad6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424284d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2420498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488d6424204c8bb42490000000498b561848b8603ad6f1c27f0000ff12ff3555a20000f604240175554c8b34244d8b2e4c8b342441ff76084d8b75004c8ba424a0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba5488d6424084c8bb42490000000498b561848b86847d6f1c27f0000ff12ff35cfa10000f604240175554c8b34244d8b2e4c8b342441ff76084d8b75004c8ba424a0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba5488d64240849bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd385ed6f1c27f00004d896e1049c746080500000049bd602ed5f1c27f00004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be602ed5f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc78c3d1f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd505ed6f1c27f00004d896e1049c746080500000049bd685ed6f1c27f00004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be685ed6f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4983cc034d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000498d47e8483b45107306ff5550ca00404989c748c740f80200000049bdc017d5f1c27f00004c8968084c893048c7c303000000ff15619e00004989c64156488b0424ff154a9e00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd10fbd5f1c27f00004d896e1049c746080500000049bd885ed6f1c27f00004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be885ed6f1c27f00004c8930ff1249bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000d00000049bea854d1f1c27f00004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d89342449c7c61f4e00004e8d1cf5f9ffffff4d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c7060d0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049bb204cd5f1c27f00004d895c24104d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdd817d5f1c27f00004d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bca8c3d1f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bdd063d4f1c27f00004d896e1049c746080500000049bdb05ed6f1c27f00004d892e488b942488000000498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb05ed6f1c27f00004c8930ff1249bda854d1f1c27f00004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e49c7c51f4e00004e8d24edf9ffffff4d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c745000d00000049bca854d1f1c27f00004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff404d892649c7c41f4e00004e8d1ce5f9ffffff4d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c24104d8974240849c704240d0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bcd05ed6f1c27f00004d8965104d89750849c74500050000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204d896e1849bd0865d4f1c27f00004d896e1049c746080500000049bdf05ed6f1c27f00004d892e4c8bac24b0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bef05ed6f1c27f00004c8930ff124c8bb424b0000000498b561048b8105fd6f1c27f0000ff12488b94248800000048b83860d6f1c27f0000ff1248c7c015000000ff15e49800004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bed060d6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bde060d6f1c27f00004d892e4c8bac24a0000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee060d6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15e79700004989c6488d642408415649be0061d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d000000415648c7c001000000ff156a9700004989c6415648c7c001000000ff15509700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be2061d6f1c27f00004d89750849bea0c1d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70619000000415648c7c001000000ff15af9600004989c6415648c7c001000000ff15959600004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e4d89751849c745100100000049be4061d6f1c27f00004d89750849bea06ad1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15f5940000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15cd9400004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049bca854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650049c7c41f4e00004e8d1ce5f9ffffff4d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650049c7c3010000004d8d67f04c3b65107306ff5550ca00684d89e749c74424f80100000041c64424ff404d891c244d8d5fd84c3b5d107306ff5550ca00704d89df49c743f80400000049c743180100000049c74310030000004d89630849c703030000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f80300000049ba5861d6f1c27f00004d895424104d895c24084d8934244d8d77d84c3b75107306ff5550ca00304d89f749c746f8040000004d89661849bc4059d1f1c27f00004d8966104d896e0849bd7861d6f1c27f00004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be7861d6f1c27f00004c8930ff1249be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff15a9910000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15819100004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb9061d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdb061d6f1c27f00004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb061d6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdb061d6f1c27f00004d896e1049c746080100000049c7060b000000415649bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d8965204c8b6424104d89651849bc7861d6f1c27f00004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b7424084d897424104c8b34244d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15518e00004989c541f6c501740f49bed061d6f1c27f0000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15dc8d00004989c641564c8b7424084983fe017d18488da4243001000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff159a8d00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d89750849bed061d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd3062d6f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be3062d6f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d8965204c8b6424104d89651849bc7861d6f1c27f00004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8b34244d897424104c8b7424084d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff15498b00004989c541f6c501740f49be5062d6f1c27f0000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15d48a00004989c641564c8b7424084983fe017d18488da4243001000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15928a00004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d89750849be5062d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bdb062d6f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb062d6f1c27f00004c8930ff124d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d8965204c8b6424104d89651849bc7861d6f1c27f00004d8965104d89750849c745000b0000004d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049be688cd1f1c27f00004d897424104c8b7424084d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706050000004156498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b7424084c8930ff153b8800004989c541f6c501740f49bed062d6f1c27f0000e91e01000049c7c60100000041f6c50175394d8b5d084d89f44983c4027118488da4242001000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc1415648c7c001000000ff15c68700004989c641564c8b7424084983fe017d18488da4243001000048b83020d1f1c27f0000488b5d08ff2348c7c001000000488b5c2408ff15848700004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300100000049c74528010000004d897520415e488d6424084d89751849c745100100000049bec00ad5f1c27f00004d89750849bed062d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706190000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d896620415c4d8966184d896e1049c746080500000049bd2863d6f1c27f00004d892e4c8b6c2418498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be2863d6f1c27f00004c8930ff1249be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c700290000004883c40841f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff150c850000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15e48400004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7060300000049c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00604d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049bb4063d6f1c27f00004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd8863d6f1c27f00004d892e41564d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd8863d6f1c27f00004d896e1049c746080100000049c7060b00000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bec82ed6f1c27f00004c893048c7c303000000ff15a88200004989c64156488b0424ff15918200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049c745080100000049c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca863d6f1c27f00004d8966104d896e0849bdd888d1f1c27f00004d892e4d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f8040000004d89751849be4059d1f1c27f00004d89751049c745080100000049bee863d6f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d8966204d896e1849bce863d6f1c27f00004d89661049c746080100000049c7060b00000041564c8bb424c0000000498b56184d8d77e84c3b75107306ff5550ca04204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee863d6f1c27f00004c8930ff124d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b34244d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd0864d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424084d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd2864d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424104d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4864d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424184d89751049bea8c3d1f1c27f00004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd6064d6f1c27f00004d892e415648b88864d6f1c27f000048c7c303000000ff15297f00004989c64156488b0424ff15127f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bee864d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8ba424900000004d89660849bc0865d6f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc2065d6f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be5865d6f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be8865d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd865d6f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be1066d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4066d6f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be7866d6f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdf866d6f1c27f00004d892e415649c7c6010000004c8b2c2441f6c50175394d8b5d084d89f44983c4027118488da4243001000048b8d0c6d0f1c27f0000488b5d08ff234d89dd4d89e6483b65187306ff5558ca0060ebc141566a016a016a01488b44242048c7c3010000004989e0ff159f7b0000488d6424105b488b4424084c8b4424184c8b0c24ff157d7b00004989c6488d6424104156ff3424f604240175544c8b34244d8b2e4c8b342441ff76084c8bb424d8000000498b56104d8b7500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558eba6488d6424084c8bb424c8000000498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f802000000415d4d896e084c8b6c24104d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be8863d6f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424184d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd3067d6f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c893048c7c303000000ff15a77900004989c64156488b0424ff15907900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060700000041564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424084d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24384d896c241049bda8c3d1f1c27f00004d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8965004d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb4059d1f1c27f00004d895c242049bbd843d5f1c27f00004d895c241849bb1844d5f1c27f00004d895c24104d896c240849c704240b0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff159f7700004989c64156488b0424ff15887700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c7060500000041564d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424280100004d89750849be28ba7cf1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d89662049bcd05ed6f1c27f00004d8966184d896e1049c746080500000049bda86dd6f1c27f00004d892e4c8bac24d0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea86dd6f1c27f00004c8930ff124d8d6fe84c3b6d107303ff55504d89ef49c745f8020000004c8bb424280100004d89750849bec0e17cf1c27f00004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24204d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb4059d1f1c27f00004d895d2049bb98b3d1f1c27f00004d895d1849bbe0b3d1f1c27f00004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f80300000049bbd05ed6f1c27f00004d895c24104d896c240849c70424050000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00304d89f749c746f80700000049c746300100000049c746280100000049bb4059d1f1c27f00004d895e204d8966184d896e1049c746080500000049bde86dd6f1c27f00004d892e4c8bac24d0000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee86dd6f1c27f00004c8930ff12488b9424c00000004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e20415d4d896e1849bd086ed6f1c27f00004d896e1049c746080500000049bd806ed6f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be806ed6f1c27f00004c8930ff126a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a01488b8424b00100004889e3ff1539730000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424604c8b6424684c8b5c24704c8b5424784c8b8c24800000004c8b842488000000488bbc2490000000488bb42498000000488b9424a0000000488b8c24a8000000488b9c24b0000000488b8424b80000004d8daf68ffffff4c3b6d107306ff5550cacf5f4d89ef49c745f8120000004989858800000049899d8000000049894d78498955704989756849897d604d8945584d894d504d8955484d895d404d8965384d897530415e4d897528415e4d897520415e4d897518415e4d897510415e4d897508415e488da424900000004d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500030000004d8d77c04c3b75107306ff5550ca00204d89f749c746f80700000049c746300100000049c746280100000049bc4059d1f1c27f00004d8966204c8b6424384d8966184d896e1049c746080500000049bd986ed6f1c27f00004d892e4c8bac24c8000000498b5510498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be986ed6f1c27f00004c8930ff1249bea854d1f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c61f4e00004e8d24f5f9ffffff4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7060d000000415649bef0ded3f1c27f00004d8975004d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c893048c7c303000000ff158b7000004989c64156488b0424ff15747000004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e104c8b6c24084d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24104d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424104c893048c7c303000000ff154f6f00004989c64156488b0424ff15386f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bc688cd1f1c27f00004d8966104d896e0849c706050000004156488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b6c24104d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bdb8d8d0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849beb8d8d0f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b6c24104d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bde8d8d0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bee8d8d0f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b6c24104d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bda0d8d0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea0d8d0f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b6c24084d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd80e0d0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80e0d0f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b6c24084d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bdd005d6f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed005d6f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd88fad5f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be88fad5f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bda884d3f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bea884d3f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd80dad0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be80dad0f1c27f00004c8930ff12488b9424280100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e20415d488d6424084d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd50dad0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be50dad0f1c27f00004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd40fbd5f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be40fbd5f1c27f00004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e204c8b2c244d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd58fbd5f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be58fbd5f1c27f00004c8930ff12488b9424180100004d8d77c04c3b75107305ff5550cd044d89f749c746f80700000049c746300100000049c746280100000049bd4059d1f1c27f00004d896e20415d488d6424084d896e1849bd40c2d5f1c27f00004d896e1049c746080500000049bd18d9d0f1c27f00004d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be18d9d0f1c27f00004c8930ff1248b86028d6f1c27f0000ff15556700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcc82ed6f1c27f00004d8966084d892e415648b8b86ed6f1c27f0000ff150c6700004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc688cd1f1c27f00004d8966084d892e415648b8d06ed6f1c27f0000ff15c36600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc204cd5f1c27f00004d8966084d892e415648b8903ad6f1c27f0000ff157a6600004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bce86ed6f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e4c8930ff15a96500004989c64156488b0424ff15926500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c7060500000041564d8d77e04c3b75107303ff55504d89f749c746f8030000004c8b6c24084d896e1049bda8c3d1f1c27f00004d896e0849c706050000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b000000415648b8306fd6f1c27f0000ff15376400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8966084d892e415648b8486fd6f1c27f0000ff15f46300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424084d8966084d892e415648b8606fd6f1c27f0000ff15b06300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c897008415e488d6424084c8930ff15046300004989c64156488b0424ff15ed6200004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d47e04c3b45107306ff5550ca00404d89c749c740f8030000004d897010415e4d89700849c700070000004d8d77e04c3b75107306ff5550ca00014d89f749c746f8030000004c8bac24000100004d896e1049c746087704000049bd786fd6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424304d89751849be7861d6f1c27f00004d89751049bea06fd6f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdd86fd6f1c27f00004d896e0849bd6870d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424384d89751849be7861d6f1c27f00004d89751049bea06fd6f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd8870d6f1c27f00004d896e0849bdf070d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424404d89751849be7861d6f1c27f00004d89751049bee066d6f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd1071d6f1c27f00004d896e0849bd7871d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424484d89751849be7861d6f1c27f00004d89751049bea06fd6f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd9871d6f1c27f00004d896e0849bd0072d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424504d89751849be7861d6f1c27f00004d89751049bec017d5f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd2872d6f1c27f00004d896e0849bd9072d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424584d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdb072d6f1c27f00004d896e0849bd1873d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424604d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd3873d6f1c27f00004d896e0849bda073d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424684d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdc073d6f1c27f00004d896e0849bd2874d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424704d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd4874d6f1c27f00004d896e0849bdb074d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8b7424784d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdc874d6f1c27f00004d896e0849bd3075d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424800000004d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd5875d6f1c27f00004d896e0849bdc075d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424880000004d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bde875d6f1c27f00004d896e0849bd5076d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424900000004d89751849be7861d6f1c27f00004d89751049be508cd1f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd7876d6f1c27f00004d896e0849bde076d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424980000004d89751849be7861d6f1c27f00004d89751049bea06fd6f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bdf876d6f1c27f00004d896e0849bd6077d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424a00000004d89751849be7861d6f1c27f00004d89751049bec017d5f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd8077d6f1c27f00004d896e0849bde877d6f1c27f00004d892e41564d8d6fd04c3b6d107306ff5550ca00014d89ef49c745f80500000049be4059d1f1c27f00004d8975204c8bb424a80000004d89751849be7861d6f1c27f00004d89751049bec017d5f1c27f00004d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00214d89f749c746f8030000004d896e1049bd0878d6f1c27f00004d896e0849bd7078d6f1c27f00004d892e4d8d67d04c3b65107306ff5550ca00414d89e749c74424f80500000049bd4059d1f1c27f00004d896c24204c8bac24a80000004d896c241849bd7861d6f1c27f00004d896c241049bdc017d5f1c27f00004d896c240849c704240b0000004d8d6fe04c3b6d107306ff5550ca00514d89ef49c745f8030000004d89651049bc9078d6f1c27f00004d89650849bcf878d6f1c27f00004d8965004d8d5fd04c3b5d107306ff5550ca00614d89df49c743f80500000049bc4059d1f1c27f00004d8963204c8ba424a80000004d89631849bc7861d6f1c27f00004d89631049bc2079d6f1c27f00004d89630849c7030b0000004d8d67e04c3b65107306ff5550ca00694d89e749c74424f8030000004d895c241049bb5879d6f1c27f00004d895c240849bbc079d6f1c27f00004d891c244d8d57d04c3b55107306ff5550ca00714d89d749c742f80500000049bb4059d1f1c27f00004d895a204c8b9c24a80000004d895a1849bb7861d6f1c27f00004d895a1049bb2079d6f1c27f00004d895a0849c7020b0000004d8d5fe04c3b5d107306ff5550ca00754d89df49c743f8030000004d89531049bae079d6f1c27f00004d89530849ba487ad6f1c27f00004d89134d8d57e84c3b55107306ff5550ca00794d89d749c742f80200000049c74208010000004c8b8c24800000004d890a4d8d4fd04c3b4d107306ff5550ca007d4d89cf49c741f80500000048bf4059d1f1c27f000049897920488bbc24a80000004989791848bf7861d6f1c27f0000498979104d89510849c7010b0000004d8d57e04c3b55107306ff5550ca007b4d89d749c742f8030000004d894a1049b9707ad6f1c27f00004d894a0849b9d87ad6f1c27f00004d890a4d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f80200000049c74108010000004d89014d8d47d04c3b45107306ff5550ca007e4d89c749c740f80500000048bf4059d1f1c27f000049897820488bbc24a80000004989781848bf7861d6f1c27f0000498978104d89480849c7000b0000004d8d4fe04c3b4d107306ff5550ca007d4d89cf49c741f8030000004d89411049b8007bd6f1c27f00004d89410849b8687bd6f1c27f00004d8901498d7fd0483b7d107306ff5550ca007e4989ff48c747f80500000049b84059d1f1c27f00004c8947204c8b8424a80000004c89471849b87861d6f1c27f00004c89471049b8508cd1f1c27f00004c89470848c7070b0000004d8d47e04c3b45107306ff5550ca807e4d89c749c740f8030000004989781048bf887bd6f1c27f00004989780848bff07bd6f1c27f0000498938498d77d0483b75107306ff5550ca007f4989f748c746f80500000048bf4059d1f1c27f000048897e20488bbc24a800000048897e1848bf7861d6f1c27f000048897e1048bf508cd1f1c27f000048897e0848c7060b000000498d7fe0483b7d107306ff5550ca407f4989ff48c747f8030000004889771048be187cd6f1c27f00004889770848be807cd6f1c27f0000488937498d57d0483b55107306ff5550ca807f4989d748c742f80500000048be4059d1f1c27f000048897220488bb424a80000004889721848be7861d6f1c27f00004889721048be508cd1f1c27f00004889720848c7020b000000498d77e0483b75107306ff5550ca847f4989f748c746f8030000004889561048bab07cd6f1c27f00004889560848ba187dd6f1c27f0000488916498d4fd0483b4d107306ff5550cac07f4989cf48c741f80500000048ba4059d1f1c27f000048895120488b9424a80000004889511848ba7861d6f1c27f00004889511048ba508cd1f1c27f00004889510848c7010b000000498d57e0483b55107306ff5550cac27f4989d748c742f80300000048894a1048b9487dd6f1c27f000048894a0848b9b07dd6f1c27f000048890a498d5fd0483b5d107306ff5550cac47f4989df48c743f80500000048b94059d1f1c27f000048894b20488b8c24a800000048894b1848b97861d6f1c27f000048894b1048b9c017d5f1c27f000048894b0848c7030b000000498d4fe0483b4d107306ff5550cacc7f4989cf48c741f8030000004889591048bbd87dd6f1c27f00004889590848bb407ed6f1c27f0000488919498d5fe8483b5d107306ff5550cac67f4989df48c743f80200000048c743080100000048890b498d4fe8483b4d107306ff5550cacc7f4989cf48c741f80200000048895908488911498d57e8483b55107306ff5550cac27f4989d748c742f80200000048894a08488932498d77e8483b75107306ff5550ca847f4989f748c746f8020000004889560848893e498d7fe8483b7d107306ff5550ca407f4989ff48c747f802000000488977084c89074d8d47e84c3b45107306ff5550ca807e4d89c749c740f802000000498978084d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e488d6424104d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd687ed6f1c27f00004d892e4156f60424010f85050100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca00584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d8975004c8ba424d0000000498b542410498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f1feffff488d64240848c7c015000000ff15fa4d00004989c641564d8d6fc84c3b6d107303ff55504d89ef49c745f80600000049c745280100000049bec87ed6f1c27f00004d89752049be4059d1f1c27f00004d89751849c745100100000049bed8c8d0f1c27f00004d8975084c8b34244d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bc4059d1f1c27f00004d8966184d896e1049bdd888d1f1c27f00004d896e0849bdd87ed6f1c27f00004d892e4c8bac24c0000000498b5550498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed87ed6f1c27f00004c8930ff1248ba3851d1f1c27f0000488b0424ff15fd4c00004989c6488d642408415649c7c5090000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74618000000004c8b342449c7061800000049bef07ed6f1c27f000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449be107fd6f1c27f000048c7c111000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff152c4b0000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15044b00004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb061d1f1c27f00004d896b1049bd7059d1f1c27f00004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd107fd6f1c27f00004d892e41564c8b742408498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be107fd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd107fd6f1c27f00004d896e1049c746080100000049c7060b000000415649c7c50b0000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74620000000004c8b342449c7061b00000049bef07ed6f1c27f000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449bed02cd6f1c27f000048c7c117000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1550470000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff15284700004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb061d1f1c27f00004d896b1049bd7059d1f1c27f00004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bdd02cd6f1c27f00004d892e41564c8b742410498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849bed02cd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bdd02cd6f1c27f00004d896e1049c746080100000049c7060b000000415649c7c50b0000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4141564c8b342449c74620000000004c8b342449c7061b00000049bef07ed6f1c27f000048c7c121000000498d76084c8b3424498d7e0848d1e9f3a449be287fd6f1c27f000048c7c117000000498d76084c8b3424498d7e1848d1e9f3a44c8b3424418066ffbf49be6023d6f1c27f00004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bca83ed3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc06ad1f1c27f00004d892e498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037508ff1574430000eb0048bac07ed3f1c27f000048c7c30100000049c7c001000000ff154c4300004889c248c7c001000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d5fe04c3b5d107306ff5550ca00404d89df49c743f80300000049bdb061d1f1c27f00004d896b1049bd7059d1f1c27f00004d896b08415d4d892b49c7c4010000004d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f80100000041c645ff404d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f80400000049c74424180100000049c7442410010000004d896c240849c70424030000004d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d8965084d8975004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849bd4059d1f1c27f00004d896e1049c746080100000049bd287fd6f1c27f00004d892e41564c8b742418498b56184d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca04404989c748c740f8020000004c89700849be287fd6f1c27f00004c8930ff124d8d77d04c3b75107303ff55504d89f749c746f80500000049bd4059d1f1c27f00004d896e20415d4d896e1849bd287fd6f1c27f00004d896e1049c746080100000049c7060b00000041564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be204cd5f1c27f00004d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd087fd3f1c27f00004d896e0849bd784dd5f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424184d8975104c8b7424104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd487fd6f1c27f00004d896e0849bd807fd6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424200100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424204c893048c7c303000000ff15763f00004989c64156488b0424ff155f3f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24204d896c241049bda8c3d1f1c27f00004d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda07fd6f1c27f00004d896e0849bde07fd6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424204d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b7424284d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf87fd6f1c27f00004d896e0849bd3880d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24304d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424300100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78c3d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24300100004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424304c893048c7c303000000ff15193c00004989c64156488b0424ff15023c00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424304d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd5080d6f1c27f00004d896e0849bda080d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24384d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d67e84c3b65107306ff5550ca00204d89e749c74424f80200000049c7442408010000004c8bb424380100004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be78c3d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24380100004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424384c893048c7c303000000ff15d93900004989c64156488b0424ff15c23900004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424384d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc080d6f1c27f00004d896e0849bd1081d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24404d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424404c893048c7c303000000ff151d3800004989c64156488b0424ff15063800004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424404d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd3081d6f1c27f00004d896e0849bd8081d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424484d8975104c8bb424480100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd9881d6f1c27f00004d896e0849bda881d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424504d8975104c8bb424500100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc881d6f1c27f00004d896e0849bdd881d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8b7424584d8975104c8bb424580100004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdf881d6f1c27f00004d896e0849bd0882d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24604d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424600100004c893048c7c303000000ff15823500004989c64156488b0424ff156b3500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424504d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd2882d6f1c27f00004d896e0849bd6082d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24684d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424680100004c893048c7c303000000ff153a3400004989c64156488b0424ff15233400004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424684d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd7882d6f1c27f00004d896e0849bdc082d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424704d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24704d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424704c893048c7c303000000ff15cd3200004989c64156488b0424ff15b63200004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424704d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdd882d6f1c27f00004d896e0849bde882d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6c24784d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15883100004989c64156488b0424ff15713100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8b6424784d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd0083d6f1c27f00004d896e0849bd3883d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424800000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424800000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd5083d6f1c27f00004d896e0849bd8883d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8bac24880000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424880100004c893048c7c303000000ff15522f00004989c64156488b0424ff153b2f00004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424880000004c893048c7c303000000ff15012e00004989c64156488b0424ff15ea2d00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424880000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda083d6f1c27f00004d896e0849bde083d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424800000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004c8ba424900000004d896500498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c893048c7c303000000ff153b2c00004989c64156488b0424ff15242c00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424900000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd0084d6f1c27f00004d896e0849bd4084d6f1c27f00004d892e41564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8bac24980000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424980100004c893048c7c303000000ff15ed2a00004989c64156488b0424ff15d62a00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424880000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd5884d6f1c27f00004d896e0849bd9884d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424a00000004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bc98b3d1f1c27f00004d89661849bce0b3d1f1c27f00004d8966104d896e0849c7060b0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004c8ba424a00000004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdb884d6f1c27f00004d896e0849bd0085d6f1c27f00004d892e41564d8d6fe04c3b6d107303ff55504d89ef49c745f8030000004c8bb424a80000004d8975104c8bb424a80000004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd1885d6f1c27f00004d896e0849bd2885d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8bb424b00100004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8bac24b00000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424b00000004c893048c7c303000000ff159e2700004989c64156488b0424ff15872700004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d897510415e4d89750849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8ba424b00000004d8966104d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be4085d6f1c27f00004d89750849be7885d6f1c27f00004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f8030000004c8bb424a00000004d897424104c8bb424b00000004d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bc9085d6f1c27f00004d89660849bca085d6f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424104d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2418498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78c3d1f1c27f00004d8975104c8bb424800000004d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc085d6f1c27f00004d896e0849bdf885d6f1c27f00004d892e4156498d47e8483b45107303ff55504989c748c740f80200000049bec017d5f1c27f00004c8970084c8bb424880000004c893048c7c303000000ff154c2100004989c64156488b0424ff15352100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd1086d6f1c27f00004d896e0849bd602ed5f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424504d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424900000004c893048c7c303000000ff155b1f00004989c64156488b0424ff15441f00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd5087d6f1c27f00004d896e0849bd6888d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424584d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8bb424900000004c893048c7c303000000ff156a1d00004989c64156488b0424ff15531d00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd8888d6f1c27f00004d896e0849bd1889d6f1c27f00004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8bac24900000004d896c24104c8bac24980000004d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc3889d6f1c27f00004d89650849bc7889d6f1c27f00004d8965004d8d5fe04c3b5d107306ff5550ca00604d89df49c743f8030000004c8b6424184d8963104c8ba424980000004d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bb9089d6f1c27f00004d895c240849bb608ad6f1c27f00004d891c244d8d57e84c3b55107306ff5550ca00704d89d749c742f80200000049c74208010000004c8b5c24284d891a4d8d5fd04c3b5d107306ff5550ca00744d89df49c743f80500000049b94059d1f1c27f00004d894b2049b998b3d1f1c27f00004d894b1849b9e0b3d1f1c27f00004d894b104d89530849c7030b0000004d8d57e04c3b55107306ff5550ca00784d89d749c742f8030000004d895a104c8b9c24980000004d895a0849c702050000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049ba788ad6f1c27f00004d89530849bac88ad6f1c27f00004d89134d8d4fe04c3b4d107306ff5550ca00784d89cf49c741f80300000049ba688cd1f1c27f00004d8951104c8b9424980000004d89510849c701050000004d8d57e04c3b55107306ff5550ca007a4d89d749c742f8030000004d894a1049b9e88ad6f1c27f00004d894a0849b9388bd6f1c27f00004d890a4d8d47e04c3b45107306ff5550ca007c4d89c749c740f80300000049b9688cd1f1c27f00004d8948104c8b8c24980000004d89480849c700050000004d8d4fe04c3b4d107306ff5550ca007d4d89cf49c741f8030000004d89411049b8588bd6f1c27f00004d89410849b8a88bd6f1c27f00004d89014d8d47e84c3b45107306ff5550ca007e4d89c749c740f80200000049c74008010000004d89084d8d4fe84c3b4d107306ff5550ca007d4d89cf49c741f8020000004d8941084d89114d8d57e84c3b55107306ff5550ca007a4d89d749c742f8020000004d894a084d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d897508415e4d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24c0000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78c3d1f1c27f00004d8975104c8b7424704d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bdc88bd6f1c27f00004d896e0849bdf885d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424784c893048c7c303000000ff15f41500004989c64156488b0424ff15dd1500004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd188cd6f1c27f00004d896e0849bd602ed5f1c27f00004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24184d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb4059d1f1c27f00004d895d2049bb98b3d1f1c27f00004d895d1849bbe0b3d1f1c27f00004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104c8b6c24784d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bcb08cd6f1c27f00004d89650849bcc88ad6f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24b8000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78c3d1f1c27f00004d8975104c8b7424584d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd088dd6f1c27f00004d896e0849bdf885d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424604c893048c7c303000000ff15231100004989c64156488b0424ff150c1100004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd588dd6f1c27f00004d896e0849bd602ed5f1c27f00004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b6c24604d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc988fd6f1c27f00004d89650849bc608ad6f1c27f00004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049c74308010000004c8b6424184d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049ba4059d1f1c27f00004d8954242049ba98b3d1f1c27f00004d8954241849bae0b3d1f1c27f00004d895424104d895c240849c704240b0000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104c8b6424604d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bb6890d6f1c27f00004d895c240849bbc88ad6f1c27f00004d891c244d8d57e04c3b55107306ff5550ca00704d89d749c742f8030000004c8b5c24484d895a104c8b5c24604d895a0849c702050000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89531049bab890d6f1c27f00004d89530849ba1095d6f1c27f00004d89134d8d57e84c3b55107306ff5550ca00784d89d749c742f80200000049c74208010000004d891a4d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8953084d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24a8000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78c3d1f1c27f00004d8975104c8b7424604d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd2895d6f1c27f00004d896e0849bdf885d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424684c893048c7c303000000ff152c0b00004989c64156488b0424ff15150b00004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd7895d6f1c27f00004d896e0849bd602ed5f1c27f00004d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f80200000049c7442408010000004c8b6c24184d892c244d8d6fd04c3b6d107306ff5550ca00504d89ef49c745f80500000049bb4059d1f1c27f00004d895d2049bb98b3d1f1c27f00004d895d1849bbe0b3d1f1c27f00004d895d104d89650849c745000b0000004d8d67e04c3b65107306ff5550ca00604d89e749c74424f8030000004d896c24104c8b6c24684d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc0896d6f1c27f00004d89650849bcc88ad6f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d4d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac24a0000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424084d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049be78c3d1f1c27f00004d8975104c8b7424504d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bd5896d6f1c27f00004d896e0849bdf885d6f1c27f00004d892e41564d8d6fe84c3b6d107303ff55504d89ef49c745f80200000049c74508010000004c8b7424484d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f80500000049bc4059d1f1c27f00004d89662049bcd843d5f1c27f00004d89661849bc1844d5f1c27f00004d8966104d896e0849c7060b0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd817d5f1c27f00004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b7424584c893048c7c303000000ff155b0600004989c64156488b0424ff15440600004989c64d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510030000004d89750849c74500010000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e10415d4d896e0849c706070000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049bc204cd5f1c27f00004d8965104d89750849c74500050000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda896d6f1c27f00004d896e0849bd602ed5f1c27f00004d892e4d8d67e04c3b65107306ff5550ca00404d89e749c74424f8030000004c8b6c24084d896c24104c8b6c24584d896c240849c70424050000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d89651049bc3098d6f1c27f00004d89650849bc608ad6f1c27f00004d8965004d8d5fe84c3b5d107306ff5550ca00604d89df49c743f80200000049c74308010000004c8b6424184d89234d8d67d04c3b65107306ff5550ca00684d89e749c74424f80500000049ba4059d1f1c27f00004d8954242049ba98b3d1f1c27f00004d8954241849bae0b3d1f1c27f00004d895424104d895c240849c704240b0000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d8963104c8b6424584d89630849c703050000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d895c241049bb0099d6f1c27f00004d895c240849bbc88ad6f1c27f00004d891c244d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e08415d488d6424084d892e4156f60424010f85040100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8bac2490000000498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f2feffff488d6424684d8d77e04c3b75107303ff55504d89f749c746f80300000049bd78c3d1f1c27f00004d896e104c8b2c244d896e0849c706050000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be5099d6f1c27f00004d89750849bef885d6f1c27f00004d8975004d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049be204cd5f1c27f00004d89742410415e4d8974240849c70424050000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bca099d6f1c27f00004d89660849bc602ed5f1c27f00004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4156f60424010f85010100004c8b34244d8b2e4c8b342441ff76084d8b75004d8b65084d8b5d104c8b6c2440498b55104d8d6fe04c3b6d107306ff5550ca04584d89ef49c745f80300000049c74510010000004d89650849c745000d0000004d8d67e84c3b65107306ff5550ca04684d89e749c74424f8020000004d896c240849c70424030000004d8d6fc04c3b6d107306ff5550ca04584d89ef49c745f80700000049c745300100000049c745280100000049ba4059d1f1c27f00004d8955204d895d184d89651049c74508050000004d897500498d47e8483b45107306ff5550ca04604989c748c740f8020000004c8968084c8930ff12415d4c892c24483b65187303ff5558e9f5feffff488da424c800000048c7c001000000c3f40000000000|@19803,1,@4475,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@6432,@6504,@6432,@6504,@6432,@6504,@5076,@5347,@5411,@5159,@5162,@5162,@5162,@5411,@5159,@5162,@5162,@5162,@5162,@5400,@5156,@5400,@5156,@9293,@5400,@5156,@5400,@5156,@9342,@8205,@5400,@5156,@5400,@5156,@6432,@6504,@9343,@7989,@9344,@9345,@7989,@9344,@9346,@7989,@9344,@6432,@6504,@6432,@6504,@9347,@7989,@9348,@7989,@5076,@5347,@5400,@5156,@19153,@19055,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@9349,@8205,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@5076,@5347,@5411,@5159,@9350,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5411,@5159,@9351,@9352,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@6432,@6504,@5076,@5347,@5076,@5347,@5076,@5347,@5076,@5347,@5076,@5347,@5076,@5347,@5076,@5347,@5076,@5347,@5400,@5156,@5400,@5156,@6432,@9353,@6242,@6432,@9354,@7989,@9355,@7989,@9356,@7989,@9357,@6242,@7906,@8089,@9358,@6242,@7906,@7906,@7997,@7997,@7997,@7997,@6432,@6432,@6432,@9359,@9360,@5400,@5156,@9359,@9360,@5400,@5156,@9359,@9360,@5400,@5156,@9361,@7989,@9344,@9359,@9360,@5400,@5156,@9359,@9360,@5400,@5156,@9362,@7989,@9344,@9359,@9360,@5400,@5156,@9363,@9364,@5400,@5156,@9363,@9364,@5400,@5156,@9363,@9364,@5400,@5156,@9365,@7989,@9344,@9363,@9364,@5400,@5156,@9363,@9364,@5400,@5156,@9366,@7989,@9344,@9363,@9364,@5400,@5156,@5076,@5347,@9367,@9367,@9367,@6432,@5076,@5347,@5076,@5347,@9367,@9367,@9367,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@5400,@5156,@5400,@5156,@9373,@7989,@7906,@9374,@7989,@7906,@5076,@5347,@5076,@5347,@9370,@5400,@5156,@9370,@5400,@5156,@9370,@5400,@5156,@9370,@5400,@5156,@5076,@5347,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9367,@9367,@9367,@5400,@5156,@5400,@5156,@5076,@5347,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@5400,@5156,@5400,@5156,@5400,@5156,@5076,@5347,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@9370,@5400,@5156,@5400,@5156,@5076,@5347,@9375,@9375,@9375,@9375,@9375,@9375,@9375,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5400,@5156,@5076,@5347,@5400,@5156,@19823,@9379,@5400,@5156,@9385,@7989,@9344,@9386,@5400,@5156,@9390,@7989,@9344,@9386,@9391,@7989,@9344,@9386,@5400,@5156,@9392,@7989,@9344,@9386,@9393,@7989,@9344,@9386,@9394,@7989,@9344,@9386,@9395,@7989,@9344,@9386,@9396,@7989,@9344,@9397,@7989,@7906,@9398,@7989,@9344,@9399,@7989,@7906,@5400,@5156,@9359,@9360,@5400,@5156,@9363,@9364,@5400,@5156,@9400,@7989,@9344,@9401,@9402,@5400,@5156,@9403,@7989,@9344,@9401,@9402,@5400,@5156,@9404,@7989,@9344,@9401,@9402,@5400,@5156,@9405,@7989,@9344,@9401,@9402,@5400,@5156,@9406,@7989,@9344,@5400,@5156,@9407,@7989,@9344,@9370,@9408,@7989,@9344,@9367,@5400,@5156,@9409,@7989,@9344,@9359,@9360,@5400,@5156,@9410,@7989,@9344,@9359,@9360,@9411,@7989,@9344,@9367,@9412,@7989,@9344,@9367,@5400,@5156,@9413,@7989,@9344,@9363,@9364,@5400,@5156,@9414,@7989,@9344,@9363,@9364,@5400,@5156,@9415,@7989,@9344,@9363,@9364,@5400,@5156,@9416,@7989,@9344,@9363,@9364,@5400,@5156,@9417,@7989,@9344,@9370,@9418,@7989,@9344,@9367,@9419,@7989,@9344,@9420,@7989,@5076,@5347,@6432,@9421,@7989,@8217,@18249,@18245,@9367,@5076,@5347,@8211,@9422,@7989,@8208,@8211,@9422,@7989,@8208,@9258|67,0,@18225 79,0,@17108 102,0,@16888 114,0,@10493 124,0,@4660 143,0,@18226 155,0,@18228 165,0,@10541 289,0,@11270 349,0,@18228 359,0,@10633 581,0,@10496 595,0,@10875 613,0,@10009 627,0,@11270 642,0,@18229 652,0,@10541 776,0,@11269 836,0,@18229 846,0,@10633 1068,0,@10496 1082,0,@10875 1100,0,@10009 1114,0,@11269 1179,0,@18230 1193,0,@10496 1215,0,@9493 1264,0,@10496 1282,0,@10854 1296,0,@18234 1349,0,@18234 1364,0,@10448 1492,0,@10496 1506,0,@18235 1532,0,@18236 1669,0,@10876 1713,0,@10877 1772,0,@11269 1831,0,@11270 1892,0,@18236 1923,0,@16888 1935,0,@10493 2014,0,@10495 2034,0,@18237 2051,0,@18239 2068,0,@18241 2179,0,@18243 2290,0,@18247 2302,0,@10468 2472,0,@10496 2487,0,@18251 2502,0,@11271 2613,0,@14742 2623,0,@11271 2724,0,@10496 2748,0,@10544 2762,0,@11271 2855,0,@18251 2899,0,@11271 2951,0,@11271 3069,0,@18294 3083,0,@18295 3135,0,@18296 3257,0,@18298 3356,0,@14470 3568,0,@10574 3621,0,@10496 3643,0,@10573 3682,0,@10496 3704,0,@18299 3740,0,@18300 3757,0,@18302 3819,0,@18304 3833,0,@10496 3855,0,@9493 3904,0,@10496 3922,0,@10854 3936,0,@18305 3989,0,@18305 4004,0,@10448 4034,0,@10468 4139,0,@10468 4347,0,@18306 4361,0,@10541 4547,0,@9475 4619,0,@10101 4730,0,@17022 4920,0,@10496 4950,0,@18307 5002,0,@18307 5017,0,@10468 5122,0,@10468 5349,0,@9475 5421,0,@10101 5532,0,@17022 5622,0,@10875 5737,0,@10496 5767,0,@18308 5820,0,@18308 5877,0,@10540 5960,0,@9475 6032,0,@10101 6143,0,@17022 6436,0,@10875 6548,0,@10496 6578,0,@18309 6631,0,@18309 6830,0,@18310 6844,0,@18311 6960,0,@9475 7032,0,@10101 7143,0,@17022 7231,0,@18314 7510,0,@10496 7540,0,@18316 7593,0,@18316 7792,0,@18310 7806,0,@18317 7922,0,@9475 7994,0,@10101 8105,0,@17022 8193,0,@18314 8472,0,@10496 8502,0,@18318 8555,0,@18318 8754,0,@18310 8768,0,@18319 8884,0,@9475 8956,0,@10101 9067,0,@17022 9155,0,@18314 9434,0,@10496 9464,0,@18320 9517,0,@18320 9716,0,@18310 9730,0,@18321 9846,0,@9475 9918,0,@10101 10029,0,@17022 10117,0,@18314 10396,0,@10496 10426,0,@18322 10479,0,@18322 10616,0,@9475 10688,0,@10101 10799,0,@17022 10889,0,@18315 11004,0,@10496 11034,0,@18323 11087,0,@18323 11224,0,@9475 11296,0,@10101 11407,0,@17022 11497,0,@18315 11612,0,@10496 11642,0,@18324 11695,0,@18324 11719,0,@18325 11915,0,@18330 11929,0,@18331 12045,0,@9475 12117,0,@10101 12228,0,@17022 12364,0,@18315 12566,0,@11239 12678,0,@10496 12708,0,@18333 12761,0,@18333 12960,0,@18330 12974,0,@18334 13090,0,@9475 13162,0,@10101 13273,0,@17022 13409,0,@18315 13611,0,@11239 13723,0,@10496 13753,0,@18335 13806,0,@18335 13943,0,@9475 14015,0,@10101 14126,0,@17022 14216,0,@11239 14331,0,@10496 14361,0,@18336 14414,0,@18336 14471,0,@9948 14554,0,@9475 14626,0,@10101 14737,0,@17022 14801,0,@18337 15068,0,@10496 15098,0,@18339 15151,0,@18339 15259,0,@18340 15305,0,@9475 15377,0,@10101 15488,0,@17022 15502,0,@18340 15628,0,@18315 15672,0,@18315 15947,0,@10496 15977,0,@18344 16030,0,@18344 16189,0,@18345 16203,0,@18346 16319,0,@9475 16391,0,@10101 16502,0,@17022 16590,0,@18353 16801,0,@10875 16913,0,@10496 16943,0,@18354 16996,0,@18354 17155,0,@18345 17169,0,@18355 17285,0,@9475 17357,0,@10101 17468,0,@17022 17556,0,@18353 17874,0,@10496 17904,0,@18356 17957,0,@18356 18116,0,@18345 18130,0,@18357 18246,0,@9475 18318,0,@10101 18429,0,@17022 18517,0,@18353 18728,0,@11239 18840,0,@10496 18870,0,@18358 18923,0,@18358 19082,0,@18345 19096,0,@18359 19212,0,@9475 19284,0,@10101 19395,0,@17022 19483,0,@18353 19694,0,@11239 19811,0,@10496 19841,0,@18360 19893,0,@18360 20011,0,@18310 20025,0,@18361 20079,0,@18362 20239,0,@18315 20351,0,@10496 20381,0,@18363 20433,0,@18363 20551,0,@18330 20565,0,@18364 20619,0,@18365 20779,0,@11239 20891,0,@10496 20921,0,@18366 20973,0,@18366 20988,0,@10468 21093,0,@10468 21198,0,@17007 21252,0,@18367 21382,0,@18449 21574,0,@9475 21646,0,@10101 21757,0,@17022 21817,0,@17007 21871,0,@18450 22001,0,@18485 22193,0,@9475 22265,0,@10101 22376,0,@17022 22436,0,@10468 22541,0,@10468 22646,0,@10468 22751,0,@10468 22856,0,@10468 23010,0,@18486 23096,0,@9475 23171,0,@10101 23282,0,@17022 23395,0,@18487 23481,0,@9475 23556,0,@10101 23667,0,@17022 23764,0,@11239 23817,0,@11238 23921,0,@11238 24072,0,@18488 24158,0,@9475 24233,0,@10101 24344,0,@17022 24536,0,@18489 24622,0,@9475 24697,0,@10101 24808,0,@17022 25152,0,@11238 25343,0,@18490 25429,0,@9475 25504,0,@10101 25615,0,@17022 25847,0,@18491 25933,0,@9475 26008,0,@10101 26119,0,@17022 26503,0,@11238 26733,0,@18492 26819,0,@9475 26894,0,@10101 27005,0,@17022 27428,0,@11238 27535,0,@10496 27570,0,@18493 27626,0,@18493 27725,0,@10496 27760,0,@18494 27816,0,@18494 27918,0,@10496 27953,0,@18449 28009,0,@18449 28111,0,@10496 28146,0,@18485 28202,0,@18485 28301,0,@10496 28336,0,@18495 28392,0,@18495 28491,0,@10496 28526,0,@18496 28582,0,@18496 28681,0,@10496 28716,0,@18497 28772,0,@18497 28871,0,@10496 28906,0,@18498 28962,0,@18498 29061,0,@10496 29101,0,@18499 29154,0,@18499 29183,0,@18500 29374,0,@10496 29388,0,@11302 29556,0,@10496 29570,0,@17382 29584,0,@17384 29679,0,@11238 29853,0,@18501 29936,0,@18502 29980,0,@18504 30025,0,@18506 30069,0,@18508 30114,0,@18510 30193,0,@11302 30349,0,@10496 30504,0,@18512 30518,0,@10496 30540,0,@9493 30589,0,@10496 30607,0,@10854 30621,0,@18513 30674,0,@18513 30689,0,@10448 30719,0,@18514 30878,0,@17108 30973,0,@18225 31017,0,@18225 31179,0,@10875 31206,0,@18514 31365,0,@18225 31460,0,@18225 31504,0,@18225 31666,0,@18225 31693,0,@18514 31827,0,@18514 32036,0,@11238 32146,0,@10496 32176,0,@18516 32200,0,@18517 32212,0,@18519 32313,0,@10496 32348,0,@18520 32401,0,@18520 32416,0,@12641 32517,0,@10496 32552,0,@18521 32605,0,@18521 32620,0,@15553 32721,0,@10496 32756,0,@18522 32809,0,@18522 32824,0,@10009 32925,0,@10496 32960,0,@18523 33013,0,@18523 33028,0,@10542 33129,0,@10496 33164,0,@18524 33217,0,@18524 33232,0,@16087 33333,0,@10496 33368,0,@18525 33421,0,@18525 33436,0,@16090 33537,0,@10496 33572,0,@18526 33625,0,@18526 33686,0,@18516 33751,0,@18527 33765,0,@10496 33787,0,@9493 33836,0,@10496 33854,0,@10854 33868,0,@18528 33921,0,@18528 33936,0,@10448 33966,0,@18529 34125,0,@10875 34152,0,@18529 34311,0,@17108 34347,0,@18530 34359,0,@17060 34460,0,@10496 34495,0,@9585 34548,0,@9585 34563,0,@18532 34664,0,@10496 34699,0,@14528 34752,0,@14528 34767,0,@18533 34868,0,@10496 34903,0,@9587 34956,0,@9587 34971,0,@18534 35072,0,@10496 35107,0,@18535 35160,0,@18535 35175,0,@11193 35276,0,@10496 35310,0,@9568 35363,0,@9568 35378,0,@17047 35479,0,@10496 35513,0,@9570 35566,0,@9570 35581,0,@18519 35682,0,@10496 35716,0,@9567 35769,0,@9567 35784,0,@15553 35885,0,@10496 35919,0,@18536 35972,0,@18536 35987,0,@18537 36088,0,@10496 36125,0,@18538 36175,0,@18538 36240,0,@18539 36254,0,@10496 36276,0,@9493 36325,0,@10496 36343,0,@10854 36357,0,@14560 36410,0,@14560 36425,0,@10448 36683,0,@10875 36984,0,@18338 37259,0,@10573 37274,0,@18540 37375,0,@10496 37410,0,@9585 37463,0,@9585 37478,0,@18541 37579,0,@10496 37614,0,@14528 37667,0,@14528 37682,0,@16004 37783,0,@10496 37818,0,@9587 37871,0,@9587 37886,0,@18542 37987,0,@10496 38022,0,@18535 38075,0,@18535 38090,0,@10535 38191,0,@10496 38226,0,@9568 38279,0,@9568 38294,0,@11148 38395,0,@10496 38430,0,@9570 38483,0,@9570 38498,0,@15989 38599,0,@10496 38634,0,@9567 38687,0,@9567 38702,0,@14832 38803,0,@10496 38838,0,@18543 38891,0,@18543 38906,0,@15991 39007,0,@10496 39042,0,@18544 39095,0,@18544 39110,0,@16001 39211,0,@10496 39246,0,@18545 39299,0,@18545 39314,0,@15123 39415,0,@10496 39450,0,@18546 39503,0,@18546 39518,0,@18547 39619,0,@10496 39654,0,@18548 39707,0,@18548 39722,0,@15121 39823,0,@10496 39857,0,@18549 39910,0,@18549 39925,0,@18550 40026,0,@10496 40060,0,@18551 40113,0,@18551 40128,0,@15998 40229,0,@10496 40266,0,@18552 40316,0,@18552 40381,0,@18553 40395,0,@10496 40417,0,@9493 40466,0,@10496 40484,0,@10854 40498,0,@14569 40551,0,@14569 40566,0,@10448 40596,0,@18337 40755,0,@10875 40782,0,@18337 40941,0,@18315 41001,0,@18315 41122,0,@10496 41154,0,@18554 41202,0,@18315 41323,0,@10496 41355,0,@18555 41394,0,@18315 41524,0,@10496 41556,0,@18556 41580,0,@18302 41592,0,@18557 41693,0,@10496 41728,0,@9585 41781,0,@9585 41796,0,@18558 41897,0,@10496 41932,0,@14528 41985,0,@14528 42000,0,@18559 42101,0,@10496 42136,0,@9587 42189,0,@9587 42204,0,@18560 42305,0,@10496 42340,0,@18535 42393,0,@18535 42408,0,@17552 42509,0,@10496 42544,0,@9568 42597,0,@9568 42612,0,@18561 42713,0,@10496 42748,0,@9570 42801,0,@9570 42816,0,@18562 42917,0,@10496 42952,0,@9567 43005,0,@9567 43020,0,@18563 43121,0,@10496 43156,0,@18543 43209,0,@18543 43224,0,@18564 43325,0,@10496 43360,0,@18544 43413,0,@18544 43428,0,@18565 43529,0,@10496 43564,0,@18545 43617,0,@18545 43632,0,@18566 43733,0,@10496 43768,0,@18546 43821,0,@18546 43836,0,@18567 43937,0,@10496 43972,0,@18548 44025,0,@18548 44040,0,@18568 44141,0,@10496 44176,0,@18549 44229,0,@18549 44244,0,@18569 44345,0,@10496 44380,0,@18551 44433,0,@18551 44448,0,@18570 44549,0,@10496 44584,0,@18552 44637,0,@18552 44696,0,@18554 44755,0,@18555 44816,0,@18556 44881,0,@18571 44895,0,@10496 44917,0,@9493 44966,0,@10496 44984,0,@10854 44998,0,@18572 45051,0,@18572 45066,0,@10448 45104,0,@18237 45116,0,@18573 45275,0,@10875 45302,0,@18557 45403,0,@10496 45435,0,@9585 45487,0,@9585 45502,0,@18573 45661,0,@10875 45688,0,@18558 45789,0,@10496 45821,0,@14528 45873,0,@14528 45888,0,@18573 46047,0,@10875 46074,0,@18559 46175,0,@10496 46207,0,@9587 46259,0,@9587 46274,0,@18573 46433,0,@10875 46460,0,@18560 46561,0,@10496 46593,0,@18535 46643,0,@18535 46708,0,@18576 46722,0,@10496 46744,0,@9493 46793,0,@10496 46811,0,@10854 46825,0,@18577 46878,0,@18577 46893,0,@10448 46925,0,@18239 46987,0,@18578 47001,0,@10496 47023,0,@9493 47072,0,@10496 47090,0,@10854 47104,0,@14568 47157,0,@14568 47172,0,@10448 47202,0,@17007 47256,0,@18579 47386,0,@18610 47446,0,@17007 47500,0,@18611 47630,0,@18616 47774,0,@10496 47788,0,@18617 47814,0,@18620 47912,0,@10496 47926,0,@18621 47952,0,@18623 47967,0,@18624 48126,0,@10875 48153,0,@18624 48312,0,@18619 48348,0,@18241 48404,0,@18620 48463,0,@18623 48478,0,@18626 48579,0,@10496 48614,0,@9585 48667,0,@9585 48682,0,@18627 48783,0,@10496 48818,0,@14528 48871,0,@14528 48886,0,@15601 48987,0,@10496 49022,0,@9587 49075,0,@9587 49090,0,@18628 49191,0,@10496 49226,0,@18535 49279,0,@18535 49294,0,@15120 49395,0,@10496 49430,0,@18629 49483,0,@18629 49498,0,@15548 49599,0,@10496 49633,0,@9568 49686,0,@9568 49701,0,@18630 49802,0,@10496 49836,0,@9570 49889,0,@9570 49904,0,@18631 50005,0,@10496 50039,0,@9567 50092,0,@9567 50107,0,@15550 50208,0,@10496 50245,0,@9572 50297,0,@9572 50410,0,@10496 50424,0,@18632 50450,0,@9651 50502,0,@9651 50615,0,@10496 50629,0,@18632 50655,0,@18633 50707,0,@18633 50820,0,@10496 50834,0,@18634 50860,0,@18635 50910,0,@18635 50975,0,@18636 50989,0,@10496 51011,0,@9493 51060,0,@10496 51078,0,@10854 51092,0,@18637 51145,0,@18637 51160,0,@10448 51240,0,@18638 51254,0,@10496 51276,0,@9493 51325,0,@10496 51343,0,@10854 51357,0,@18503 51410,0,@18503 51425,0,@10448 51455,0,@18639 51574,0,@18640 51623,0,@16676 51682,0,@14470 51894,0,@18641 51947,0,@10496 51969,0,@18642 52024,0,@18642 52084,0,@11239 52149,0,@10496 52167,0,@18643 52189,0,@18647 52302,0,@10496 52316,0,@18648 52342,0,@18650 52455,0,@10496 52469,0,@18648 52495,0,@18651 52608,0,@10496 52622,0,@18652 52648,0,@18653 52745,0,@18642 52804,0,@18647 52863,0,@18650 52922,0,@18651 52983,0,@18653 53048,0,@18654 53062,0,@10496 53084,0,@9493 53133,0,@10496 53151,0,@10854 53165,0,@18655 53218,0,@18655 53233,0,@10448 53263,0,@10468 53392,0,@18338 53729,0,@18310 53743,0,@18656 53862,0,@9475 53937,0,@10101 54048,0,@17022 54192,0,@10496 54224,0,@18657 54263,0,@18338 54434,0,@18315 54564,0,@18310 54578,0,@18658 54712,0,@10496 54744,0,@18659 54783,0,@18338 55121,0,@18310 55135,0,@18660 55254,0,@9475 55329,0,@10101 55440,0,@17022 55584,0,@10496 55616,0,@18661 55655,0,@18338 55951,0,@18310 55965,0,@18662 56099,0,@10496 56131,0,@18663 56170,0,@18338 56341,0,@18619 56471,0,@18310 56485,0,@18664 56619,0,@10496 56651,0,@18666 56690,0,@18338 56861,0,@18619 56991,0,@18310 57005,0,@18667 57139,0,@10496 57171,0,@18668 57258,0,@18315 57459,0,@11239 57631,0,@18330 57645,0,@18669 57764,0,@9475 57839,0,@10101 57950,0,@17022 58094,0,@10496 58126,0,@18670 58165,0,@18337 58336,0,@11239 58466,0,@18330 58480,0,@18671 58614,0,@10496 58646,0,@18672 58733,0,@18315 58934,0,@11239 59106,0,@18330 59120,0,@18673 59239,0,@9475 59314,0,@10101 59425,0,@17022 59569,0,@10496 59601,0,@18674 59688,0,@18315 59889,0,@11239 60019,0,@18330 60033,0,@18675 60167,0,@10496 60199,0,@18676 60238,0,@18677 60412,0,@11239 60542,0,@18330 60556,0,@18679 60690,0,@10496 60722,0,@18680 60761,0,@18677 60935,0,@11239 61065,0,@18330 61079,0,@18681 61213,0,@10496 61245,0,@18682 61304,0,@18657 61363,0,@18659 61422,0,@18661 61481,0,@18663 61540,0,@18666 61599,0,@18668 61658,0,@18670 61717,0,@18672 61776,0,@18674 61835,0,@18676 61894,0,@18680 61955,0,@18682 61970,0,@14470 61980,0,@18683 62027,0,@14470 62037,0,@18702 62084,0,@14470 62094,0,@18710 62150,0,@18722 62171,0,@18727 62192,0,@18731 62213,0,@18735 62355,0,@10496 62369,0,@10875 62395,0,@18739 62448,0,@18739 62463,0,@17093 62473,0,@10753 62483,0,@10609 62504,0,@17093 62514,0,@18124 62524,0,@10493 62545,0,@17093 62555,0,@18124 62565,0,@16888 62586,0,@17093 62596,0,@18134 62606,0,@10571 62631,0,@18740 62685,0,@18749 62712,0,@18751 62766,0,@17125 62818,0,@10633 62881,0,@10632 62895,0,@18753 62918,0,@18754 63024,0,@18758 63169,0,@17208 63307,0,@18759 63352,0,@18761 63367,0,@17030 63421,0,@18757 63473,0,@10633 63491,0,@18763 63579,0,@17007 63685,0,@18764 63848,0,@18765 63908,0,@18766 64105,0,@18770 64119,0,@16657 64276,0,@18771 64290,0,@10632 64536,0,@14470 64620,0,@10468 64882,0,@18772 64937,0,@10496 64955,0,@18773 65043,0,@18773 65161,0,@18774 65175,0,@18775 65227,0,@18786 65349,0,@18640 65448,0,@14470 65660,0,@18787 65712,0,@10496 65734,0,@18788 65825,0,@18788 65845,0,@18789 65865,0,@18816 65885,0,@18842 65897,0,@10468 66226,0,@10875 66295,0,@10496 66313,0,@18542 66335,0,@9586 66384,0,@9586 66399,0,@10468 66728,0,@10875 66797,0,@10496 66815,0,@18863 66837,0,@18864 66886,0,@18864 66951,0,@18865 66965,0,@10496 66987,0,@9493 67036,0,@10496 67054,0,@10854 67068,0,@18866 67121,0,@18866 67136,0,@10448 67224,0,@18867 67238,0,@10496 67260,0,@9493 67309,0,@10496 67327,0,@10854 67341,0,@18868 67394,0,@18868 67409,0,@10448 67489,0,@18869 67503,0,@10496 67525,0,@9493 67574,0,@10496 67592,0,@10854 67606,0,@18870 67659,0,@18870 67674,0,@10448 67754,0,@18871 67768,0,@10496 67790,0,@9493 67839,0,@10496 67857,0,@10854 67871,0,@12557 67924,0,@12557 67939,0,@10448 68019,0,@18872 68033,0,@10496 68055,0,@9493 68104,0,@10496 68122,0,@10854 68136,0,@18873 68189,0,@18873 68204,0,@10448 68284,0,@18874 68298,0,@10496 68320,0,@9493 68369,0,@10496 68387,0,@10854 68401,0,@18875 68454,0,@18875 68469,0,@10448 68549,0,@18876 68563,0,@10496 68585,0,@9493 68634,0,@10496 68652,0,@10854 68666,0,@13385 68719,0,@13385 68734,0,@10448 68814,0,@18877 68828,0,@10496 68850,0,@9493 68899,0,@10496 68917,0,@10854 68931,0,@18878 68984,0,@18878 68999,0,@10448 69029,0,@18879 69148,0,@14032 69197,0,@10633 69326,0,@14470 69538,0,@18881 69591,0,@10496 69613,0,@18883 69709,0,@18883 69748,0,@10496 69768,0,@18883 69799,0,@18879 69918,0,@14032 69967,0,@10633 70096,0,@14470 70308,0,@18884 70361,0,@10496 70383,0,@18886 70479,0,@18886 70518,0,@10496 70538,0,@18886 70569,0,@18879 70688,0,@14032 70737,0,@10633 70866,0,@14470 71078,0,@18887 71131,0,@10496 71153,0,@18889 71249,0,@18889 71288,0,@10496 71308,0,@18889 71339,0,@18879 71458,0,@14032 71507,0,@10633 71636,0,@14470 71848,0,@18890 71901,0,@10496 71923,0,@18201 72019,0,@18201 72058,0,@10496 72078,0,@18201 72109,0,@18879 72228,0,@14032 72277,0,@10633 72406,0,@14470 72618,0,@18892 72671,0,@10496 72693,0,@18894 72789,0,@18894 72828,0,@10496 72848,0,@18894 72879,0,@18879 72998,0,@14032 73047,0,@10633 73176,0,@14470 73388,0,@18895 73441,0,@10496 73463,0,@18897 73559,0,@18897 73598,0,@10496 73618,0,@18897 73649,0,@18879 73768,0,@14032 73817,0,@10633 73946,0,@14470 74158,0,@18898 74211,0,@10496 74233,0,@18900 74329,0,@18900 74368,0,@10496 74388,0,@18900 74452,0,@18901 74502,0,@12712 74553,0,@18902 74603,0,@13299 74652,0,@18903 74700,0,@18904 75206,0,@18905 75224,0,@10854 75269,0,@10496 75291,0,@18907 75387,0,@18907 75473,0,@11238 75673,0,@10496 75687,0,@11106 75701,0,@11108 75758,0,@18908 75844,0,@11238 76044,0,@10496 76058,0,@11106 76072,0,@11108 76129,0,@18909 76215,0,@11238 76415,0,@10496 76429,0,@11106 76443,0,@11108 76500,0,@18910 76586,0,@11238 76786,0,@10496 76800,0,@11106 76814,0,@11108 76871,0,@18911 76957,0,@11238 77157,0,@10496 77171,0,@11106 77185,0,@11108 77242,0,@18912 77328,0,@11238 77529,0,@10496 77543,0,@11106 77557,0,@11108 77613,0,@18913 77879,0,@10496 77899,0,@18907 78059,0,@18914 78121,0,@18944 78135,0,@10496 78157,0,@9493 78206,0,@10496 78224,0,@10854 78238,0,@18945 78294,0,@18945 78309,0,@10448 78339,0,@18879 78458,0,@14032 78507,0,@10633 78636,0,@14470 78848,0,@18946 78901,0,@10496 78923,0,@18948 79019,0,@18948 79058,0,@10496 79078,0,@18948 79109,0,@18879 79228,0,@14032 79277,0,@10633 79406,0,@14470 79618,0,@18949 79671,0,@10496 79693,0,@18951 79789,0,@18951 79828,0,@10496 79848,0,@18951 79879,0,@18879 79998,0,@14032 80047,0,@10633 80176,0,@14470 80388,0,@18952 80441,0,@10496 80463,0,@18954 80559,0,@18954 80598,0,@10496 80618,0,@18954 80649,0,@18879 80768,0,@14032 80817,0,@10633 80946,0,@14470 81158,0,@18955 81211,0,@10496 81233,0,@18957 81329,0,@18957 81368,0,@10496 81388,0,@18957 81419,0,@18879 81538,0,@14032 81587,0,@10633 81716,0,@14470 81928,0,@18958 81981,0,@10496 82003,0,@18960 82099,0,@18960 82138,0,@10496 82158,0,@18960 82189,0,@18879 82308,0,@14032 82357,0,@10633 82486,0,@14470 82698,0,@18961 82751,0,@10496 82773,0,@18963 82869,0,@18963 82908,0,@10496 82928,0,@18963 82959,0,@18879 83078,0,@14032 83127,0,@10633 83256,0,@14470 83468,0,@18964 83521,0,@10496 83543,0,@18966 83582,0,@10496 83604,0,@18966 83707,0,@18967 83751,0,@11238 83917,0,@18968 84043,0,@11238 84209,0,@18969 84296,0,@18967 84340,0,@11238 84506,0,@18970 84632,0,@11238 84798,0,@18971 84884,0,@11238 85050,0,@18972 85297,0,@18973 85426,0,@10875 85510,0,@11238 85676,0,@18974 85802,0,@11238 85968,0,@18975 86315,0,@9475 86591,0,@18966 86676,0,@10496 86690,0,@11106 86704,0,@11108 86801,0,@10496 86816,0,@11106 86831,0,@11108 86886,0,@18976 87133,0,@18977 87151,0,@10854 87196,0,@10496 87218,0,@18979 87314,0,@18979 87353,0,@10496 87373,0,@18979 87554,0,@11238 87817,0,@18980 87831,0,@18998 87996,0,@11238 88260,0,@18999 88274,0,@19005 88442,0,@10875 88526,0,@11238 88790,0,@19006 88804,0,@19012 89149,0,@19013 89163,0,@19019 89328,0,@11238 89592,0,@19020 89606,0,@19025 89752,0,@19026 89766,0,@19029 89817,0,@19030 89831,0,@19031 89846,0,@19032 90005,0,@11239 90096,0,@10496 90110,0,@17382 90124,0,@17384 90176,0,@11239 90233,0,@19033 90247,0,@19037 90262,0,@19032 90421,0,@11239 90512,0,@10496 90526,0,@17382 90540,0,@17384 90592,0,@11239 90649,0,@19038 90663,0,@19040 90678,0,@19032 90837,0,@19041 90928,0,@10496 90942,0,@17382 90956,0,@17384 91008,0,@11239 91065,0,@19042 91079,0,@19045 91094,0,@19046 91253,0,@11239 91344,0,@10496 91358,0,@17382 91372,0,@17384 91425,0,@11239 91481,0,@19049 91495,0,@19051 92096,0,@10496 92203,0,@19052 92329,0,@19151 92443,0,@10468 92636,0,@10496 92654,0,@19328 92676,0,@17258 92728,0,@17258 92743,0,@10468 92877,0,@11238 92946,0,@10496 92964,0,@19329 92986,0,@19330 93038,0,@19330 93053,0,@10468 93187,0,@17107 93353,0,@17445 93422,0,@10496 93440,0,@18541 93462,0,@19331 93514,0,@19331 93529,0,@10468 93632,0,@10468 93765,0,@17445 93867,0,@17108 93915,0,@11239 93984,0,@10496 94002,0,@16004 94024,0,@19332 94076,0,@19332 94091,0,@10468 94194,0,@10468 94369,0,@19333 94438,0,@10496 94456,0,@16017 94478,0,@19334 94534,0,@19334 94561,0,@19335 94581,0,@19343 94643,0,@19347 94657,0,@10496 94679,0,@9493 94728,0,@10496 94746,0,@10854 94760,0,@19348 94816,0,@19348 94831,0,@10448 94861,0,@19349 95058,0,@19351 95072,0,@11224 95229,0,@19352 95243,0,@10632 95438,0,@10633 95567,0,@14470 95650,0,@10468 95914,0,@19353 95969,0,@10496 95987,0,@19354 96083,0,@19354 96098,0,@18879 96217,0,@14032 96266,0,@10633 96395,0,@14470 96607,0,@19355 96660,0,@10496 96682,0,@19356 96778,0,@19356 96817,0,@10496 96837,0,@19356 96868,0,@10468 97039,0,@10496 97062,0,@19354 97242,0,@19357 97291,0,@9475 97366,0,@10101 97477,0,@17022 97491,0,@19357 97625,0,@10496 97657,0,@19360 97710,0,@19360 97791,0,@10496 97814,0,@19354 97994,0,@19361 98043,0,@9475 98118,0,@10101 98229,0,@17022 98243,0,@19361 98377,0,@10496 98409,0,@19364 98462,0,@19364 98543,0,@10496 98566,0,@19354 98620,0,@10875 98752,0,@19365 98801,0,@9475 98876,0,@10101 98987,0,@17022 99001,0,@19365 99135,0,@10496 99167,0,@19368 99220,0,@19368 99235,0,@18879 99354,0,@14032 99403,0,@10633 99536,0,@14470 99748,0,@19369 99801,0,@10496 99823,0,@19371 99862,0,@10496 99884,0,@19371 99981,0,@10496 99995,0,@11106 100009,0,@11108 100104,0,@18967 100313,0,@19372 100331,0,@10854 100375,0,@10496 100397,0,@19374 100438,0,@10496 100456,0,@19374 100568,0,@19374 100615,0,@11239 100668,0,@19375 100716,0,@11239 100769,0,@19376 100817,0,@11239 100870,0,@19377 100918,0,@11239 100971,0,@19378 100986,0,@19379 101149,0,@19382 101202,0,@19383 101287,0,@19384 101333,0,@19386 101412,0,@19388 101530,0,@19391 101647,0,@19393 101692,0,@19395 101736,0,@19397 101781,0,@19401 101834,0,@9475 102116,0,@19371 102199,0,@10496 102213,0,@11106 102227,0,@11108 102322,0,@19403 102566,0,@10496 102580,0,@17382 102594,0,@17384 102657,0,@11239 102747,0,@10496 102762,0,@17382 102777,0,@17384 103082,0,@9036 103224,0,@10496 103238,0,@19333 103264,0,@19448 103320,0,@19448 103371,0,@9055 103504,0,@10496 103518,0,@11106 103532,0,@11108 103586,0,@19333 103696,0,@10496 103726,0,@19450 103782,0,@19450 103847,0,@10496 103867,0,@19451 103889,0,@19455 103933,0,@19455 104364,0,@10496 104399,0,@19456 104455,0,@19456 104470,0,@10468 104575,0,@15123 105115,0,@10875 105192,0,@10496 105215,0,@18119 105237,0,@9568 105281,0,@9568 105346,0,@10496 105369,0,@18119 105391,0,@9570 105435,0,@9570 105500,0,@10496 105523,0,@18119 105545,0,@9567 105589,0,@9567 105654,0,@10496 105677,0,@18119 105699,0,@9651 105743,0,@9651 105808,0,@10496 105831,0,@18119 105853,0,@18633 105897,0,@18633 105962,0,@10496 105984,0,@18119 106006,0,@18535 106050,0,@18535 106115,0,@10496 106137,0,@18119 106159,0,@14528 106203,0,@14528 106268,0,@10496 106290,0,@18119 106312,0,@9587 106356,0,@9587 106421,0,@10496 106446,0,@18119 106468,0,@9585 106512,0,@9585 106577,0,@10496 106599,0,@18119 106621,0,@18543 106665,0,@18543 106730,0,@10496 106752,0,@18119 106774,0,@18544 106818,0,@18544 106883,0,@10496 106908,0,@18119 106930,0,@9572 106974,0,@9572 106989,0,@18916 107035,0,@18967 107054,0,@19457 107100,0,@10875 107119,0,@19458 107165,0,@17445 107184,0,@19054 107230,0,@19459 107537,0,@11239 107597,0,@11239 107684,0,@10496 107698,0,@17382 107712,0,@17384 107739,0,@19461 107798,0,@19462 107858,0,@19463 108193,0,@19464 108235,0,@10496 108258,0,@19354 108272,0,@19465 108325,0,@19467 108339,0,@19472 108381,0,@10496 108404,0,@19354 108418,0,@19465 108471,0,@19473 108485,0,@19477 108527,0,@10496 108550,0,@19354 108564,0,@19400 108617,0,@19478 108631,0,@19482 108673,0,@10496 108696,0,@19354 108710,0,@19465 108763,0,@19483 108777,0,@19487 108819,0,@10496 108842,0,@19354 108856,0,@17107 108909,0,@19488 108923,0,@19492 108965,0,@10496 108988,0,@19354 109002,0,@10874 109055,0,@19493 109069,0,@19497 109111,0,@10496 109134,0,@19354 109148,0,@10874 109201,0,@19498 109215,0,@19502 109257,0,@10496 109280,0,@19354 109294,0,@10874 109347,0,@19503 109361,0,@19507 109403,0,@10496 109426,0,@19354 109440,0,@10874 109493,0,@19508 109507,0,@19512 109549,0,@10496 109572,0,@19354 109586,0,@10874 109639,0,@19513 109653,0,@19517 109695,0,@10496 109721,0,@19354 109735,0,@10874 109788,0,@19518 109802,0,@19522 109844,0,@10496 109870,0,@19354 109884,0,@10874 109937,0,@19523 109951,0,@19527 109993,0,@10496 110019,0,@19354 110033,0,@10874 110086,0,@19528 110100,0,@19532 110142,0,@10496 110168,0,@19354 110182,0,@19465 110235,0,@19533 110249,0,@19537 110291,0,@10496 110317,0,@19354 110331,0,@17107 110384,0,@19538 110398,0,@19542 110440,0,@10496 110466,0,@19354 110480,0,@17107 110533,0,@19543 110547,0,@19547 110588,0,@10496 110616,0,@19354 110631,0,@17107 110685,0,@19548 110699,0,@19552 110740,0,@10496 110766,0,@19354 110780,0,@19553 110834,0,@19555 110849,0,@19559 110890,0,@10496 110916,0,@19354 110930,0,@19553 110982,0,@19560 110996,0,@19564 111082,0,@10496 111108,0,@19354 111164,0,@19565 111178,0,@19569 111256,0,@10496 111282,0,@19354 111338,0,@19570 111352,0,@19574 111392,0,@10496 111418,0,@19354 111432,0,@10874 111484,0,@19575 111498,0,@19579 111538,0,@10496 111564,0,@19354 111578,0,@10874 111630,0,@19580 111644,0,@19584 111684,0,@10496 111710,0,@19354 111724,0,@10874 111776,0,@19585 111790,0,@19589 111830,0,@10496 111856,0,@19354 111870,0,@10874 111922,0,@19590 111936,0,@19594 111976,0,@10496 112002,0,@19354 112016,0,@17107 112068,0,@19595 112082,0,@19599 113104,0,@19600 113287,0,@10496 113445,0,@19603 113459,0,@10496 113481,0,@9493 113530,0,@10496 113548,0,@10854 113562,0,@19604 113618,0,@19604 113633,0,@10448 113738,0,@19605 113772,0,@19606 113815,0,@18879 113934,0,@14032 113983,0,@10633 114112,0,@14470 114222,0,@10559 114236,0,@10498 114427,0,@10496 114449,0,@19606 114545,0,@19606 114584,0,@10496 114604,0,@19606 114710,0,@19605 114744,0,@18954 114787,0,@18879 114906,0,@14032 114955,0,@10633 115084,0,@14470 115194,0,@10559 115208,0,@10498 115399,0,@10496 115421,0,@18954 115517,0,@18954 115556,0,@10496 115576,0,@18954 115682,0,@19605 115716,0,@19607 115759,0,@18879 115878,0,@14032 115927,0,@10633 116056,0,@14470 116166,0,@10559 116180,0,@10498 116371,0,@10496 116393,0,@19607 116489,0,@19607 116528,0,@10496 116548,0,@19607 116603,0,@17445 116665,0,@14473 116679,0,@17457 116775,0,@19608 116789,0,@19610 116871,0,@10496 116885,0,@11106 116899,0,@11108 117207,0,@11239 117304,0,@19611 117318,0,@19613 117401,0,@10496 117415,0,@17382 117429,0,@17384 117533,0,@19614 117547,0,@19616 117629,0,@10496 117643,0,@11106 117657,0,@11108 117797,0,@11238 118093,0,@19617 118107,0,@19619 118189,0,@10496 118203,0,@11106 118217,0,@11108 118357,0,@11238 118653,0,@19620 118667,0,@19622 118749,0,@10496 118763,0,@11106 118777,0,@11108 119081,0,@19623 119095,0,@19625 119194,0,@19626 119208,0,@19627 119307,0,@19628 119321,0,@19629 119420,0,@19630 119434,0,@19631 119732,0,@19632 119746,0,@19634 120044,0,@19635 120058,0,@19637 120393,0,@19638 120407,0,@19639 120702,0,@19640 120716,0,@19642 120802,0,@10496 120816,0,@11106 120830,0,@11108 120937,0,@19643 120951,0,@19645 121238,0,@10496 121252,0,@11106 121266,0,@11108 121576,0,@19646 121590,0,@19648 121676,0,@10496 121690,0,@11106 121704,0,@11108 122014,0,@19649 122028,0,@19651 122316,0,@10496 122330,0,@11106 122344,0,@11108 122451,0,@19652 122465,0,@19654 122551,0,@10496 122565,0,@11106 122579,0,@11108 122686,0,@19655 122700,0,@19657 122802,0,@19658 122816,0,@19659 123162,0,@19660 123176,0,@19662 123283,0,@19663 123297,0,@19664 124299,0,@10496 124418,0,@11238 124483,0,@19665 124497,0,@19667 124536,0,@17107 124710,0,@17445 124767,0,@19668 124781,0,@17258 124864,0,@10496 124878,0,@17382 124892,0,@17384 124987,0,@17108 125191,0,@17445 125248,0,@19675 125262,0,@19683 125345,0,@10496 125359,0,@17382 125373,0,@17384 125468,0,@17108 125672,0,@17445 125729,0,@19684 125743,0,@19689 125849,0,@19690 125863,0,@19692 125965,0,@19693 125980,0,@19698 126064,0,@10496 126078,0,@11106 126092,0,@11108 126198,0,@19699 126212,0,@19701 126252,0,@10875 126316,0,@19702 126330,0,@19704 126370,0,@10875 126434,0,@19705 126448,0,@19707 126964,0,@10496 127083,0,@11238 127145,0,@19708 127159,0,@19667 127242,0,@10496 127256,0,@17382 127270,0,@17384 127365,0,@17108 127566,0,@17445 127623,0,@19710 127637,0,@17258 127723,0,@10496 127737,0,@11106 127751,0,@11108 127859,0,@19715 127873,0,@19701 128181,0,@10496 128300,0,@11238 128362,0,@19717 128376,0,@19667 128459,0,@10496 128473,0,@17382 128487,0,@17384 128582,0,@17108 128783,0,@17445 128840,0,@19719 128854,0,@17258 128954,0,@19734 128968,0,@19698 129053,0,@10496 129068,0,@11106 129083,0,@11108 129191,0,@19739 129206,0,@19701 129303,0,@19741 129317,0,@19765 129692,0,@10496 129811,0,@11238 129873,0,@19766 129887,0,@19667 129970,0,@10496 129984,0,@17382 129998,0,@17384 130093,0,@17108 130294,0,@17445 130351,0,@19768 130365,0,@17258 130451,0,@10496 130465,0,@11106 130479,0,@11108 130587,0,@19773 130601,0,@19701 130909,0,@10496 131028,0,@11238 131090,0,@19775 131104,0,@19667 131187,0,@10496 131201,0,@17382 131215,0,@17384 131310,0,@17108 131511,0,@17445 131568,0,@19777 131582,0,@17258 131682,0,@19790 131696,0,@19698 131781,0,@10496 131796,0,@11106 131811,0,@11108 131919,0,@19795 131934,0,@19701 132281,0,@10496 132400,0,@11238 132460,0,@19797 132474,0,@19667 132516,0,@17445 132577,0,@19799 132591,0,@17258 132858,0,@10496 8888:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4071|13,0,@18231 8889:D3,24|483b65187305ff5558cd0148b820dad5f1c27f0000c3f400|@18263,1,@4073|13,0,@18262 8890:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@4072| 8891:D3,24|483b65187305ff5558cd0148b860dad5f1c27f0000c3f400|@18267,1,@4075|13,0,@18265 8892:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18266,1,@4074|13,0,@10508 8893:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@18269,1,@4076| 8894:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@18270,1,@4077| 8895:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18297,1,@4078|13,0,@10508 8896:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4079|13,0,@18231 8897:D4,48|483b65187305ff5558cd0148baf0e7d5f1c27f000049c7c00100000048c7c303000000ff251f000000f4000000000000|@18448,1,@4089,@8898|13,0,@18369 8898:D12,2160|483b65187306ff5558ca0d0152505341504c8b742418498b5618488b442410ff124989c641564c8b742420498b5610ff124883f805750949c7c603000000eb204883f803750949c7c601000000eb114883f8010f852506000049c7c6050000004983fe050f85db000000488b4424104883c0027115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883e801486bc0047115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c00149c7c52100000048d1f849d1fd489949f7fd4c8d2455010000004983fc01750949c7c401000000eb394983fc017d0949c7c503000000eb0749c7c5010000004983fd017502eb1b4983c4207115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fc01750949c7c521010000eb2549c7c5410100004d2bec7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c501eb164983fe03750949c7c561010000eb0749c7c5210100004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f8030000004d89631049bcd063d4f1c27f00004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca00684d89e749c74424f80200000049ba28e8d5f1c27f00004d895424084d891c2441544d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849c70424050000004d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004d89651849bcf0ded3f1c27f00004d89651049c745080900000049c74500090000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc88e8d5f1c27f00004d8965004d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d896c240849bdd0e8d5f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849bc10e9d5f1c27f00004d89650041554983fe0575774c8b6424184d89e54983fc07750c49bd30e9d5f1c27f0000eb434d89ed4d89ec4983fd05750c49bd48e9d5f1c27f0000eb2b4d89e44d89e54983fc03750c49bda0e9d5f1c27f0000eb134d89ed4983fd01750f49bde8e9d5f1c27f0000e9f0000000488d64243048b870ead5f1c27f0000488b5d08ff234983fe0375744c8b6424184d89e54983fc07750c49bd50ebd5f1c27f0000eb434d89ed4d89ec4983fd05750c49bd48ecd5f1c27f0000eb2b4d89e44d89e54983fc03750c49bd78ecd5f1c27f0000eb134d89ed4983fd01750c49bda8ecd5f1c27f0000eb76488d64243048b870ead5f1c27f0000488b5d08ff234c8b6424184d89e54983fc07750c49bdc0ecd5f1c27f0000eb474d89ed4d89ec4983fd05750c49bda0edd5f1c27f0000eb2f4d89e44d89e54983fc03750c49bde8edd5f1c27f0000eb174d89ed4983fd010f850f02000049bd18eed5f1c27f000041554983fe0575224c8b6c24204983ed047115488d64243848b8d0c6d0f1c27f0000488b5d08ff23eb204c8b6c24204983ed0a7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983fd017e02eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7064f0000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049bc30eed5f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8eed5f1c27f00004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be00efd5f1c27f00004c89334883fb01750c48bb30efd5f1c27f0000eb1348b830efd5f1c27f0000ff153e0300004889c34883fb01750c48bb90efd5f1c27f0000eb1348b890efd5f1c27f0000ff15110300004889c34883fb0175035beb12488b0424ff15f30200004889c3488d6424084883fb0175035beb12488b0424ff15d00200004889c3488d6424084883fb01750c48bb10f0d5f1c27f0000eb1348b810f0d5f1c27f0000ff159e0200004889c34883fb017504415eeb12488b0424ff157f0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e960010000488d64243048b870ead5f1c27f0000488b5d08ff23488d64242848bae81cd1f1c27f000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be68f0d5f1c27f0000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb68f0d5f1c27f000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90f0d5f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234983fd01756d4c89f3488b4424184c8b442408ff15ae0000004889c34c8b7424204d8b4e08488b042449c7c003000000ff15890000004989c6488d64241049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbf4883c418c34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e963fffffff400ffffffffffffff01|@18444,1,@4080,@6808,@7065,@4983,@8900,@8901,@8902,@8903,@8904,@8899|124,0,@9475 155,0,@9475 257,0,@9475 305,0,@9475 430,0,@16004 479,0,@18371 572,0,@15123 674,0,@18374 721,0,@18376 766,0,@18378 802,0,@18379 826,0,@18380 850,0,@18383 871,0,@18386 891,0,@18391 927,0,@18395 951,0,@18404 975,0,@18406 996,0,@18408 1013,0,@18391 1043,0,@18409 1067,0,@18417 1091,0,@18420 1116,0,@18422 1150,0,@9475 1184,0,@9475 1280,0,@18423 1329,0,@18429 1373,0,@18430 1392,0,@18431 1404,0,@18431 1429,0,@18434 1441,0,@18434 1520,0,@18439 1532,0,@18439 1648,0,@18391 1669,0,@10077 1713,0,@18442 1850,0,@18442 1928,0,@18443 1946,0,@10202 1960,0,@4656 1979,0,@9487 8899:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4086| 8900:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4081| 8901:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4082| 8902:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4083| 8903:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4084| 8904:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4085| 8905:D3,40|49bb60d57f0bc37f00004d8b1b4989e5488b65304881ec9000000041ffd34c89ecc3f40000000000|@18446,1,@4087|2,0,@19883 8906:D3,72|49bb80d57f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c641ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f400|@18447,1,@4088|2,0,@19884 8907:D4,48|483b65187305ff5558cd0148bae0f1d5f1c27f000049c7c00100000048c7c303000000ff251f000000f4000000000000|@18448,1,@4093,@8908|13,0,@18452 8908:D8,1888|483b65187306ff5558ca0d0152505341504c8b742418498b5618488b442410ff124989c641564c8b742420498b5610ff124883f805750949c7c603000000eb204883f803750949c7c601000000eb114883f8010f851005000049c7c6050000004983fe050f85c0000000488b4424104883e801486bc0047115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c00149c7c52100000048d1f849d1fd489949f7fd4c8d2c55010000004983fd01750949c7c501000000eb394983fd017d0949c7c403000000eb0749c7c4010000004983fc017502eb1b4983c5207115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fd01750949c7c321010000eb2549c7c3410100004d2bdd7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983c301eb164983fe03750949c7c361010000eb0749c7c3210100004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f8020000004c8b24244d896508488d64240849c74500010000004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c241049bdd063d4f1c27f00004d896c240849c704243f0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500050000004d8d5fd84c3b5d107306ff5550ca00704d89df49c743f8040000004d896b1849bdf0ded3f1c27f00004d896b1049c743080900000049c703090000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd88e8d5f1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849bb10e9d5f1c27f00004d895d004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f8020000004d896b0849bd40e8d5f1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d084d89650041554c8b6c24104d89ec4983fd0975334983fe05750c48b808f2d5f1c27f0000eb1c4983fe03750c48b818f3d5f1c27f0000eb0a48b850f3d5f1c27f0000e9cb0000004d89e44d89e54983fc0775334983fe05750c48b848f4d5f1c27f0000eb1c4983fe03750c48b818f3d5f1c27f0000eb0a48b860f4d5f1c27f0000e98c0000004d89ed4d89ec4983fd0575304983fe05750c48b8e8f2d5f1c27f0000eb1c4983fe03750c48b818f3d5f1c27f0000eb0a48b8a8f4d5f1c27f0000eb504d89e44d89e54983fc0375304983fe05750c48b800f3d5f1c27f0000eb1c4983fe03750c48b8d8f4d5f1c27f0000eb0a48b8f0f4d5f1c27f0000eb144d89ed4983fd010f857301000048c7c0010000004983fe0575224c8b6c24104983ed047115488d64242848b8d0c6d0f1c27f0000488b5d08ff23eb204c8b6c24104983ed0a7115488d64242848b8d0c6d0f1c27f0000488b5d08ff234983fd017e02eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7064f0000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bdd8efd5f1c27f00004d892e498d5fe8483b5d107306ff5550ca01404989df48c743f8020000004c89730849bec0efd5f1c27f00004c89334883fb0175054889c3eb09ff15a30200004889c34883fb017504415eeb12488b0424ff15840200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e960010000488d64242848b808f5d5f1c27f0000488b5d08ff23488d64242848bae81cd1f1c27f000048c7c303000000ff15030200004989c54d8b75004e8d2475010000004983fc01750f49be68f0d5f1c27f0000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157f0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb68f0d5f1c27f000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90f0d5f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234983fd01756d4c89f3488b4424184c8b442408ff15b30000004889c34c8b7424204d8b4e08488b042449c7c001000000ff158e0000004989c6488d64241049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbf4883c418c34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e963fffffff4000000000000ffffffffffffff01|@18484,1,@4090,@6808,@7065,@4983,@8910,@8909|128,0,@9475 230,0,@9475 278,0,@9475 403,0,@16004 496,0,@15123 595,0,@18374 639,0,@18378 684,0,@18372 754,0,@18453 772,0,@18463 784,0,@18465 817,0,@18474 835,0,@18463 847,0,@18475 880,0,@18461 898,0,@18463 910,0,@18478 940,0,@18462 958,0,@18480 970,0,@18481 1024,0,@9475 1058,0,@9475 1197,0,@18437 1241,0,@18436 1371,0,@18482 1392,0,@10077 1436,0,@18442 1573,0,@18442 1651,0,@18443 1669,0,@10202 1683,0,@4656 1702,0,@9487 8909:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4092| 8910:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4091| 8911:D4,48|483b65187305ff5558cd0148baf0e7d5f1c27f000049c7c00100000048c7c301000000ff251f000000f4000000000000|@18448,1,@4094,@8898|13,0,@18369 8912:D4,48|483b65187305ff5558cd0148bae0f1d5f1c27f000049c7c00100000048c7c301000000ff251f000000f4000000000000|@18448,1,@4095,@8908|13,0,@18452 8913:D4,48|483b65187305ff5558cd0148baf0e7d5f1c27f000049c7c00100000048c7c305000000ff251f000000f4000000000000|@18448,1,@4096,@8898|13,0,@18369 8914:D4,48|483b65187305ff5558cd0148bae0f1d5f1c27f000049c7c00100000048c7c305000000ff251f000000f4000000000000|@18448,1,@4097,@8908|13,0,@18452 8915:D4,48|483b65187305ff5558cd0148baf0e7d5f1c27f000049c7c00100000048c7c307000000ff251f000000f4000000000000|@18448,1,@4098,@8898|13,0,@18369 8916:D4,48|483b65187305ff5558cd0148bae0f1d5f1c27f000049c7c00100000048c7c307000000ff251f000000f4000000000000|@18448,1,@4099,@8908|13,0,@18452 8917:D4,48|483b65187305ff5558cd0148bae0f1d5f1c27f000049c7c00100000048c7c309000000ff251f000000f4000000000000|@18448,1,@4100,@8908|13,0,@18452 8918:D4,48|483b65187305ff5558cd0148baf0e7d5f1c27f000049c7c00100000048c7c307000000ff251f000000f4000000000000|@18448,1,@4101,@8898|13,0,@18369 8919:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4102|13,0,@18231 8920:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4103|13,0,@18231 8921:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4104|13,0,@18231 8922:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4105|13,0,@18231 8923:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4106|13,0,@18231 8924:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4107|13,0,@18231 8925:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4108|13,0,@18231 8926:D4,40|483b65187305ff5558cd0148ba00ffd5f1c27f000048c7c301000000ff251e000000f40000000000|@18609,1,@4114,@8927|13,0,@18581 8927:D13,1576|483b65187305ff5558cd0d5250534c8b742410498b5618488b442408ff124989c641564c8b742418498b5610ff124883f805750949c7c503000000eb204883f803750949c7c501000000eb114883f8010f85e003000049c7c5050000004983fd05750949c7c231010000eb164983fd03750949c7c261010000eb0749c7c22101000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1b48b8f814d1f1c27f000041554152ff15be050000415a415d4889c3f6c30174164989de4983ee014d6bf60170094c89f34883c301eb1848c7c00300000041554152ff1583050000415a415d4889c348c7c00300000041554152ff1563050000415a415d4989c64d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049bcd063d4f1c27f00004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d89621849bcf0ded3f1c27f00004d89621049c742080900000049c702090000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc88e8d5f1c27f00004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849ba10e9d5f1c27f00004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc40e8d5f1c27f00004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544983fd05750c49bc28ffd5f1c27f0000eb1c4983fd03750c49bc2000d6f1c27f0000eb0a49bc2000d6f1c27f000041544983fd050f858f0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be8800d6f1c27f00004d89750849c74500570000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca800d6f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be0001d6f1c27f00004c8930eb0a48b82801d6f1c27f0000ff15d90200004889c34883fb01750c48bb90efd5f1c27f0000eb1348b890efd5f1c27f0000ff15ac0200004889c34883fb0175035beb12488b0424ff158e0200004889c3488d6424084883fb017504415eeb12488b0424ff156a0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e94b010000488d64242048bae81cd1f1c27f000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be68f0d5f1c27f0000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb68f0d5f1c27f000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90f0d5f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234983fd0175694c89f3488b4424104c8b442408ff15ae0000004889c34c8b7424184d8b4e08488b042449c7c001000000ff15890000004989c6488d64242049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbfc34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e967fffffff40000000000ffffffffffffff01|@18608,1,@4109,@6808,@7065,@4983,@8929,@8930,@8931,@8928,@7054,@6552,@4933|184,0,@10021 367,0,@16004 460,0,@15123 561,0,@18374 607,0,@18378 652,0,@18372 710,0,@18582 728,0,@18590 740,0,@18590 793,0,@18593 842,0,@18594 890,0,@18597 905,0,@18598 930,0,@18434 942,0,@18434 1085,0,@10077 1129,0,@18442 1266,0,@18442 1344,0,@18443 1362,0,@10202 1376,0,@4656 1395,0,@9487 8928:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b81802d6f1c27f0000c3f4000000|@10402,1,@4113|75,0,@18606 8929:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4110| 8930:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4111| 8931:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4112| 8932:D4,40|483b65187305ff5558cd0148ba2803d6f1c27f000048c7c301000000ff251e000000f40000000000|@18615,1,@4120,@8933|13,0,@18613 8933:D13,1576|483b65187305ff5558cd0d5250534c8b742410498b5618488b442408ff124989c641564c8b742418498b5610ff124883f805750949c7c503000000eb204883f803750949c7c501000000eb114883f8010f85e003000049c7c5050000004983fd05750949c7c231010000eb164983fd03750949c7c261010000eb0749c7c22101000048c7c30300000048c1e3184881ebffffff00f6c30174084883fb017d15eb154c0fb673ff4e8d3475010000004983fe237402eb1b48b8f814d1f1c27f000041554152ff15be050000415a415d4889c3f6c30174164989de4983ee014d6bf60170094c89f34883c301eb1848c7c00300000041554152ff1583050000415a415d4889c348c7c00300000041554152ff1563050000415a415d4989c64d8d67e84c3b65107306ff5550ca00644d89e749c74424f8020000004c8b1c244d895c2408488d64240849c70424010000004d8d5fe04c3b5d107306ff5550ca00744d89df49c743f8030000004d89631049bcd063d4f1c27f00004d89630849c7033f0000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849c70424050000004d8d57d84c3b55107306ff5550ca00784d89d749c742f8040000004d89621849bcf0ded3f1c27f00004d89621049c742080900000049c702090000004d8d67e84c3b65107306ff5550ca006c4d89e749c74424f80200000049c7442408010000004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc88e8d5f1c27f00004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d8954240849ba10e9d5f1c27f00004d8914244d8d57e84c3b55107306ff5550ca00784d89d749c742f8020000004d89620849bc40e8d5f1c27f00004d89224d8d67e84c3b65107306ff5550ca006c4d89e749c74424f8020000004d895424084d891c2441544983fd05750c49bc00f3d5f1c27f0000eb1c4983fd03750c49bcd8f4d5f1c27f0000eb0a49bcf0f4d5f1c27f000041544983fd050f858f0000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d89751049be8800d6f1c27f00004d89750849c74500570000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bca800d6f1c27f00004d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be0001d6f1c27f00004c8930eb0a48b82801d6f1c27f0000ff15d90200004889c34883fb01750c48bb90efd5f1c27f0000eb1348b890efd5f1c27f0000ff15ac0200004889c34883fb0175035beb12488b0424ff158e0200004889c3488d6424084883fb017504415eeb12488b0424ff156a0200004989c6488d642408415649c7c5030000004e8d34ad0400000049f7de4d03f74c3b751072054d3bf77203ff55504d89f749d1ed4d896ef841c646ff4149c7c511000000e94b010000488d64242048bae81cd1f1c27f000048c7c303000000ff15fe0100004989c54d8b75004e8d2475010000004983fc01750f49be68f0d5f1c27f0000e9ad0000004d89e34983c3224c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b157a0100000f87c50000004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bb68f0d5f1c27f000048c7c123000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e1948d1e9f3a4418066ffbf498d47d8483b45107306ff5550ca00404989c748c740f80400000049bd90f0d5f1c27f00004c8968184c89701049be302dd1f1c27f00004c89700849be08c3d0f0c27f00004c8930488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234983fd0175694c89f3488b4424104c8b442408ff15ae0000004889c34c8b7424184d8b4e08488b042449c7c001000000ff15890000004989c6488d64242049c7c501000000498d47f0483b45107306ff5550ca00604989c748c740f801000000c640ff404c89284c89308060ffbfc34d89ec4983ec0249d1ec43c60426004d89ec4983ec024d89e5483b65187306ff5558ca0060e967fffffff40000000000ffffffffffffff01|@18614,1,@4115,@6808,@7065,@4983,@8935,@8936,@8937,@8934,@7054,@6552,@4933|184,0,@10021 367,0,@16004 460,0,@15123 561,0,@18374 607,0,@18378 652,0,@18372 710,0,@18462 728,0,@18480 740,0,@18481 793,0,@18593 842,0,@18594 890,0,@18597 905,0,@18598 930,0,@18434 942,0,@18434 1085,0,@10077 1129,0,@18442 1266,0,@18442 1344,0,@18443 1362,0,@10202 1376,0,@4656 1395,0,@9487 8934:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b81802d6f1c27f0000c3f4000000|@10402,1,@4119|75,0,@18606 8935:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4116| 8936:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4117| 8937:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4118| 8938:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4121|13,0,@18231 8939:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4122|13,0,@18231 8940:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18297,1,@4123|13,0,@10508 8941:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4124|13,0,@18231 8942:D4,432|483b65187305ff5558cd014c8b304a8d1c75010000004d8d47e04c3b45107305ff5550cd094d89c749c740f803000000498958104989400849beb85d7cf1c27f00004d89304989c148c7c001000000ff15730100004989c541f6c50175104d8b650049c7c6010000004d89ebeb0b48b8d8c8d0f1c27f0000c341f6c30175314d8b4b084d89f24983c202711048b8d0c6d0f1c27f0000488b5d08ff234d89cb4d89d6483b65187306ff5558ca0078ebc94983fe010f8c9d0000004983fe03751049be30c9d0f1c27f00004b8b44a6fcc34c89f04883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25af000000774c4d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca00704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ee4c893049c7c611000000eb2048b8f8c7d0f1c27f0000488b5d08ff2348b868c8d0f1c27f0000488b5d08ff2341f6c50175304d8b65004d8b5d0849d1ec4d89f249d1ea468824104d89f44983c4024d89dd4d89e6483b65187306ff5558ca0160ebca8060ffbfc3f40000000000ffffffffffffff01|@18700,1,@4128,@8944|58,0,@8943 112,0,@9493 142,0,@9475 194,0,@9496 329,0,@9487 345,0,@9490 8943:D3,216|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34983fc017d05e99c0000004c8b6a084d89ee4d8b6d004e8d2c6d010000004d3be57c0949c7c503000000eb0749c7c5010000004983fd03746e4d89e54983c51049d1ed4f0fb6342e4e8d2c75010000004983c402711048b8d0c6d0f1c27f0000488b5d08ff234d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8a8f8d0f1c27f0000488b5d08ff23f400|@18685,1,@4125|119,0,@9475 200,0,@9872 8944:D5,632|483b65187306ff5558ca09035341504151483b442410750d488d64241848c7c001000000c35048baf80bd6f1c27f0000488b0424488b5c2410ff15590200004989c641f6c6010f85b70100004d8b2e4d8b75004c3b35360200007502eb404d8b264e8d2465010000004983fc010f853701000049bcd8c8d0f1c27f0000498d7608498d7c240848c7c100000000483bc9f3a6740a488d642408e9110100004d8b6d084c3b6c2418750c49c7c601000000e9ba0000004983fd017d0a488d642420e9d50000004c8b7424084d8b264e8d2465010000004d3bec7c0949c7c403000000eb0749c7c4010000004983fc030f84a10000004d89ec4983c41049d1ec4d89f64f0fb634264e8d3475010000004d89eb4983c3027115488d64242048b8d0c6d0f1c27f0000488b5d08ff234d8d67e84c3b65107306ff5550ca00684d89e749c74424f8020000004d895c24084d8934244d8d77f04c3b75107306ff5550ca00304d89f749c746f8010000004d89264983fe01750e488d64240849c7c601000000eb7e4c892c24483b65187303ff5558e991feffff488d64242048b8a8f8d0f1c27f0000488b5d08ff23488d6424084d8b65084d0fb676084e8d3475010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0c488d64240849c7c60100000041f6c601754d4d8b3641ff36498b4608488b5c24184c8b4424104c8b4c2408e8cdfdffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642420c3488d64241848b8f80cd6f1c27f0000488b5d08ff23f4|@18701,1,@4129,@9493,@8945|40,0,@18686 117,0,@9493 286,0,@9475 412,0,@9872 617,0,@18696 8945:D4,2632|483b65187305ff5558cd0d525053488b1424488b442408ff124989c641f6c6010f851a0600004d8b364d8b2e41ff76084983fd41730a488d642420e9f80500004981fdfd0000000f87e60500004981fdb90000000f857d050000488b542408488b0424ff124989c641f6c6010f85580500004d8b364d8b2e4981fdeb0000000f859e000000488d6424084d8b460848c7c00100000048c7c3090000004c8b0c24ff15ba0900004989c6488d64240841f6c6017562488d6424084d8b364d8b2e4d8b66084c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241048c7c001000000c34981fdbd0000000f85ff000000488d642408498b46085aff124989c641f6c6010f85d9000000488d6424084d8b364d8b2e4d8b66084981fd810000000f8cb00000004981fdbf0000000f8f9c0000004981ed800000007115488d64240848b8d0c6d0f1c27f0000488b5d08ff234983fd017d07488d642408eb614981fdff0100007f534c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848b828d2d0f1c27f0000488b5d08ff23488d642408eb05488d64240848c7c001000000c3488d64241048c7c001000000c34983fd457554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bde0c7d0f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdb90000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc0d2d0f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fde50000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd100cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdcd0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd280cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fded0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd400cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fddd0000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd580cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fde90000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd700cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdc50000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd880cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34981fdc30000007554488d6424204d8b6e084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bda00cd6f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34d8b76084983fd13720d4983fd1b7707488d642408eb384983fd41742d4983fd61721a4983fd65770d6a016a07ff742410e9c6010000488d642420eb05488d64242048c7c001000000c3488d642408ff34244156e9d0000000488d64242048c7c001000000c34c8b7424184d8b76084f8b6caefc4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c418c3488d64242048c7c001000000c3488d6424084d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849bdd8c8d0f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488b542410488b0424ff124989c641f6c60175314d8b2e4d8b75004d8b6d084983fe1372084983fe1b7702eb094983fe41740358eb104c892c24483b65187303ff5558ebbb58488b1424ff124989c6488d64240841f6c601756c488d6424184d8b2e4d8b75004d8b6d084981feb9000000740848c7c001000000c34d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdd8c8d0f1c27f00004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64241848c7c001000000c34c8b7424084983fe010f85ac0000004c8b6c24104d89ee4981fdff0100007e0e488d64243049c7c601000000eb734d89f64d89f54983fe017d07488d642438eb6a4d89ed4d89ee4981fdff0100007f564d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c428e9c1010000488d64243848b828d2d0f1c27f0000488b5d08ff23488b542420488b0424ff124989c641f6c6010f85d40000004d8b2e4d8b75004d8b5d084983fe610f82ae0000004983fe730f8f9d0000004c8b6424084983ec027115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c8b6c24104983ed014d6bed0a7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983c5014983ee014d03ee7115488d64243848b8d0c6d0f1c27f0000488b5d08ff234983ed607115488d64243848b8d0c6d0f1c27f0000488b5d08ff234c891c244c896424084c896c2410483b65187303ff5558e971feffff488d642430eb05488d64243049c7c601000000e9c00000004c8b6c24104d89ee4981fdff0100007e0a488d642430e99e0000004c8b6c24084983fd010f8f8a0000004d89f64d89f54983fe017d07488d642438eb674d89ed4d89ee4981fdff0100007f534d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d89f64d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4883c428eb21488d64243848b828d2d0f1c27f0000488b5d08ff23488d64243049c7c60100000041f6c601755d4d8b364d8b2e4d8b66084c8b34244d8b7608488d6424084f8b6caefc4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c3f4000000|@18694,1,@4126,@8946|386,0,@9475 512,0,@9507 607,0,@9486 700,0,@9511 793,0,@18687 886,0,@18688 979,0,@18689 1072,0,@18690 1165,0,@18691 1258,0,@18692 1351,0,@18693 1644,0,@9493 1846,0,@9493 2074,0,@9507 2161,0,@9475 2197,0,@9475 2231,0,@9475 2258,0,@9475 2490,0,@9507 8946:D3,1192|483b65187306ff5558ca09035053415041514c8b7424104983fe010f85ab000000488d6424084c8b7424104d89f54981feff0100007e0d488d64241848c7c001000000c34d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b828d2d0f1c27f0000488b5d08ff23488b1424488b442408ff124989c641f6c6010f85fe0200004d8b2e4d8b75004d8b45084983fe610f82960000004983fe730f878c000000488b5c24104883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c0014983ee014903c67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883e8607115488d64242048b8d0c6d0f1c27f0000488b5d08ff2341594883c418e971feffff4981fec30000000f82b70000004981fecd0000000f87aa000000488b5c24104883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c0014983ee014903c67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234881e8c20000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c0147115488d64242048b8d0c6d0f1c27f0000488b5d08ff2341594883c418e9adfdffff4981fe830000000f82be0000004981fe8d0000000f87aa000000488b5c24104883eb027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b4424184883e801486bc0107115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c0014983ee014903c67115488d64242048b8d0c6d0f1c27f0000488b5d08ff234881e8820000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c0147115488d64242048b8d0c6d0f1c27f0000488b5d08ff2341594883c418e9e9fcffff488d642408eb05488d6424084c8b7424084983feff7c0a488d642418e9a20000004c8b7424104d89f54981feff0100000f8f880000004d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b828d2d0f1c27f0000488b5d08ff23488d64241848c7c001000000c3488d6424084c8b7424084983feff7c0a488d642418e9a20000004c8b7424104d89f54981feff0100000f8f880000004d89ed4d89ee4983fd017d07488d642418eb654d89f64d89f54981feff0100007f514d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d89ed4d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410c3488d64241848b828d2d0f1c27f0000488b5d08ff23488d64241848c7c001000000c3f400|@18695,1,@4127|190,0,@9507 277,0,@9475 313,0,@9475 347,0,@9475 374,0,@9475 443,0,@9475 479,0,@9475 513,0,@9475 543,0,@9475 570,0,@9475 639,0,@9475 675,0,@9475 709,0,@9475 739,0,@9475 766,0,@9475 967,0,@9507 1163,0,@9507 8947:D6,864|483b65187305ff5558cd014c8b304d89f54e8d3475010000004983fe070f8cf70000004d89ee4e8d2c6d010000004983fd05731048b82046d1f1c27f0000488b5d08ff234e8d3475010000004983fe0575054989c5eb5b49c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c74500020000004c0fb67008458875084c0fb6700945887509418065ffbf4c3b2dcf020000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe05753249be6843d1f1c27f0000498d7508498d7e0848c7c102000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c6010000004983fe037505e9250100004c8b304d89f54e8d3475010000004983fe090f8cf70000004d89ee4e8d2c6d010000004983fd07731048b82046d1f1c27f0000488b5d08ff234e8d3475010000004983fe0775054989c5eb6449c7c6050000004e8d2cb50400000049f7dd4d03ef4c3b6d1072054d3bef7205ff5550cd014d89ef49d1ee4d8975f841c645ff4149c745080000000049c74500030000004c0fb67008458875084c0fb67009458875094c0fb6700a4588750a418065ffbf4c3b2daf010000750949c7c603000000eb4b4d8b75004e8d3475010000004983fe07753249be380ed6f1c27f0000498d7508498d7e0848c7c103000000483bc9f3a6750949c7c603000000eb0749c7c601000000eb0749c7c601000000eb0749c7c6010000004983fe03740949c7c003000000eb0749c7c0050000004c8b304e8d347501000000498d5fe0483b5d107306ff5550ca01414989df48c743f8030000004c8973104889430849be50747cf1c27f00004c893348ba48d2d5f1c27f000048c7c001000000ff15e00000004989c641f6c60175644d8b2e4d8b75004d8b650841f6c60174434d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb1748b8f0d2d5f1c27f0000488b5d08ff2349c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6017504498b06c348b8500ed6f1c27f0000488b5d08ff23f4000000000000|@18709,1,@4131,@8871,@18704,@10347|54,0,@10364 216,0,@10347 325,0,@10364 496,0,@18704 630,0,@8948 643,0,@18204 759,0,@18207 843,0,@18705 8948:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18203,1,@4130| 8949:D6,464|483b65187305ff5558cd014c8b284d89ee4e8d2c6d010000004983fd057e534e8d3475010000004983fe057f1048b8a8f8d0f1c27f0000488b5d08ff234c0fb6700a4e8d3475010000004981fef1000000750949c7c603000000eb0749c7c6010000004983fe03750949c7c005000000eb0749c7c0030000004c8b304e8d347501000000498d5fe0483b5d107306ff5550ca01414989df48c743f8030000004c8973104889430849be08777cf1c27f00004c893348c7c001000000ff15370100004989c641f6c6010f85ab0000004d8b2e4d8b750041ff75084c89f048bb780fd6f1c27f00004156ff1502010000415e4989c54983fd017e15488d64240848b8880fd6f1c27f0000488b5d08ff2341f6c6017402eb174c89f0ff15c90000004989c64d8b364e8d3475010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004c8b24244d896508488d6424084d8975004d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c60175264d8b364d8b2e4d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6017504498b06c348b80810d6f1c27f0000488b5d08ff23f40000|@18719,1,@4133,@6864,@6558,@8951|47,0,@9872 169,0,@8950 222,0,@18712 256,0,@18713 447,0,@18716 8950:D3,128|483b65187305ff5558cd054989c44c8b72104d3be6750848c7c001000000c34d89e54983c5104c8b720849d1ed4f0fb6342e4e8d2c75010000004983c4024d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18203,1,@4132| 8951:D21,4048|483b65187306ff5558ca0901505341504c8b34244d89f54983fe05750949c7c621000000eb2e4d89ed4d89ee4983fd03750949c7c615000000eb194d89f64983fe07750949c7c611000000eb0749c7c6050000004156488b542410488b442418ff124989c641f6c6010f857a0200004d8b2e4d8b75004983fe610f85fc01000041ff7508488b542418488b0424ff124989c641f6c6010f85d40100004d8b2e4d8b750041ff75084981feef0000000f85160100004c8b6c24184d89ee4983fd050f85c7000000488b542420488b0424ff124989c641f6c6010f859e0000004d8b364d8b2e4d8b76084981fdf10000007507488d642408eb4d4981fdb1000000743f4c8b7424184983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff15470f0000488d642408e9920e00006a016a01ff742410e9750c0000488d6424084c8b6c24104983fd0575214d89f048c7c00100000048c7c3010000004c8b4c2418ff15fc0e0000e93f0c00006a016a014156e9240a0000488d64240848c7c001000000e9110a00004d89f64983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff15ad0e0000488d642408e9dc0900006a016a01ff742410e9bf0700004981fef10000007502eb104981feb10000007407488d642408eb504c8b6c24184d89ee4983fd05753d4d89f64983fe05752748c7c00100000048c7c3010000004c8b04244c8b4c2420ff153f0e0000488d642408e9610700006a016a01ff742410e944050000488d6424084c8b7424104983fe05752348c7c00100000048c7c3010000004c8b4424204c8b4c2418ff15f20d0000e90c0500006a016a01ff742430e9ef02000048c7c001000000e988020000498b45084983fe13720d4983fe1b7707488d642408eb454983fe41743a4c8b7424084983fe057525488d6424104c8b4424084159488d64240848c7c30100000048c7c001000000ff257f0d00006a016a01ff742428eb23488d642408488b5c24084158488d642410e917fdffff488d64242048c7c001000000c3488b542428488b0424ff124989c641f6c6010f858a0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442418010f84ea0000004c8b7424184d89f54983c6607115488d64243848b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c241841544153ff15920c0000415b415c4c89e34883eb607115488d64243848b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15490c0000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64243848b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64243848c7c001000000c34c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c428c3488d64243848c7c001000000c34883f801754f4d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d64240849c70601000000498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c420c3488d642428c3488b542430488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442420010f84ea0000004c8b7424204d89f54983c6607115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15190a0000415b415c4c89e34883eb607115488d64244048b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15d0090000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244048b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000e990fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff15f4070000415b415c4c89e34883eb607115488d64244848b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff15ab070000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9e6fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff15cf050000415b415c4c89e34883eb607115488d64244848b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff1586050000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9d1fbffffebf9488b542430488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442420010f84ea0000004c8b7424204d89f54983c6607115488d64244048b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242041544153ff15a8030000415b415c4c89e34883eb607115488d64244048b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff155f030000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244048b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408eb0c488d64241848c7c001000000e9e9fdffff488b542438488b0424ff124989c641f6c6010f858c0100004d8b364d8b264d8b5e084983fc610f8c0a010000f6442428010f84ea0000004c8b7424284d89f54983c6607115488d64244848b8d0c6d0f1c27f0000488b5d08ff234d3be67d0949c7c603000000eb0749c7c6010000004983fe030f85bd000000f64424080174244d89ee41f6c501741b488b4424084d89f648d1f84983ee01490fafc670064883c001eb18488b442408488b5c242841544153ff1583010000415b415c4c89e34883eb607115488d64244848b8d0c6d0f1c27f0000488b5d08ff23a8017413f6c301740e4989dc4983ec014c03e07002eb0d4153ff153a010000415b4989c449c7c5030000004c891c244c896424084c896c2410483b65187303ff5558e9dffeffff488d64244848b80815d1f1c27f0000488b5d08ff234c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000eb6c4c8b7424104983fe0375554d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c410eb0c488d64242048c7c001000000e9e6fdfffff40000000000|@18720,1,@4134,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@4933,@6552,@8952,@8952,@8952,@8952,@8952,@8952|834,0,@9475 962,0,@9475 1054,0,@10022 1451,0,@9475 1579,0,@9475 1671,0,@10022 1984,0,@9475 2112,0,@9475 2204,0,@10022 2517,0,@9475 2645,0,@9475 2737,0,@10022 3052,0,@9475 3180,0,@9475 3272,0,@10022 3585,0,@9475 3713,0,@9475 3805,0,@10022 8952:D9,840|483b65187306ff5558ca0903505341504151488b1424488b442408ff124989c641f6c6010f85a80200004d8b2e4d8b75004d8b45084983fe610f8c950000004983fe730f8f8b000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff150d0300004158415e4983ee607115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15c302000041584889c3415948c7c0030000004883c418e92cffffff4981fe830000000f8cb60000004981fe8d0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15580200004158415e4981ee820000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c6147115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff15f001000041584889c3415948c7c0030000004883c418e969feffff4981fec30000000f8cbd0000004981fecd0000000f8fa9000000f6442410017415488b4424104883e801486bc01070064883c001eb1a488b44241048c7c32100000041564150ff15850100004158415e4981eec20000007115488d64242048b8d0c6d0f1c27f0000488b5d08ff234983c6147115488d64242048b8d0c6d0f1c27f0000488b5d08ff23a801741441f6c601740e4c89f34883eb014803d87002eb104c89f34150ff151d01000041584889c3415948c7c0030000004883c418e9a6fdffff488d642408eb05488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3488d6424084c8b7424104983fe0375544d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47f0483b45107306ff5550ca00404989c748c740f8010000004c89304883c408c3488d64241848c7c001000000c3f400000000|@18721,1,@4135,@4933,@6552,@4933,@6552,@4933,@6552|140,0,@9475 308,0,@9475 335,0,@9475 503,0,@9475 530,0,@9475 8953:D3,24|483b65187305ff5558cd0148b8c016d6f1c27f0000c3f400|@18769,1,@4137|13,0,@18767 8954:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18768,1,@4136|13,0,@10508 8955:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18297,1,@4138|13,0,@10508 8956:D3,24|483b65187305ff5558cd0148b8281bd6f1c27f0000c3f400|@18263,1,@4140|13,0,@18803 8957:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@4139| 8958:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@18269,1,@4141| 8959:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@18270,1,@4142| 8960:D3,24|483b65187305ff5558cd0148b8101ed6f1c27f0000c3f400|@18263,1,@4144|13,0,@18829 8961:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@4143| 8962:D3,24|483b65187305ff5558cd0148c7c005000000c3f400000000|@18269,1,@4145| 8963:D3,24|483b65187305ff5558cd0148c7c003000000c3f400000000|@18270,1,@4146| 8964:D3,40|483b65187305ff5558cd09483bc3750848c7c003000000c348c7c001000000c3f400000000000000|@10506,1,@4147| 8965:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4148|13,0,@18231 8966:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4149|13,0,@18231 8967:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4150|13,0,@18231 8968:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4151|13,0,@18231 8969:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4152|13,0,@18231 8970:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4153|13,0,@18231 8971:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4154|13,0,@18231 8972:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4155|13,0,@18231 8973:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18880,1,@4156|13,0,@10508 8974:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4157|13,0,@18231 8975:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be38927cf1c27f00004c8930c3f400000000|@18997,1,@4167|47,0,@8976 8976:D4,328|483b65187305ff5558cd054989c641ff36498b460841ff761041ff76184d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdb0937cf1c27f00004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bed09d7cf1c27f00004d893048bbd832d6f1c27f0000ff15d80000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b24244c896020488d6424084c8968184c89701048c74008050000004c8b34244c8930488d642408c3f4000000000000|@18996,1,@4166,@5108|65,0,@8977 109,0,@8981 122,0,@18995 8977:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18988,1,@4159,@8978| 8978:D8,1344|483b65187306ff5558ca0903504d8d77e84c3b75107306ff5550ca08014d89f749c746f8020000004c8b2c244d896e0849bdf0997cf1c27f00004d892e4889d84c89c34d89f0ff152c0500004989c64983fe010f85dc0400004c8b34244d8b6e084d8b5d004d89dc4983fb030f852502000041ff75104d89f641ff761048c7c001000000ff15e60400004989c6415648c7c001000000ff15cc0400004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd603ed3f1c27f00004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc8031d6f1c27f00004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8b6d084d8b5d004d89dc4983fb057515488d64241848b8a892d1f1c27f0000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24084d895d104d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304883c408c34983fc010f852502000041ff75084d89f641ff761048c7c001000000ff15a70200004989c6415648c7c001000000ff158d0200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628030000004d896e204c8b2c244d896e18488d64240849c746100100000049bd603ed3f1c27f00004d896e0849bda06ad1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500190000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bc8031d6f1c27f00004d8966084d892e4d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f80300000049c74510010000004d89750849c74500290000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004c8b6c24104d8b6d084d8b5d004d89dc4983fb057515488d64241848b8a892d1f1c27f0000488b5d08ff234983fc01751e4d8b6d104d8b65004983fc03750a4d8b6d084d8b6d00eb044d8b6d08eb084d8b6d084d8b6d004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff404d892c244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f80400000049c74518010000004c8b5c24084d895d104d89650849c7450003000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8b24244c896010488d6424104c8968084c89304883c408c34d8b65084d8b5d104d89f64d8b6e10488d6424084d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d89660849c70605000000498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700849bed888d1f1c27f00004c8930c3488d642408498b06c3f400|@18989,1,@4160,@6243,@6242,@6243,@6242,@8980|50,0,@8979 237,0,@14030 251,0,@10632 330,0,@18986 459,0,@10915 796,0,@14030 810,0,@10632 889,0,@18986 1018,0,@10915 1321,0,@10854 8979:D3,464|483b65187305ff5558cd054c8b204c8b68084d8b34244983fe0b0f85a30100004d8b7424084d8b6424104d8b5424084d89d34d8b124983fa0375564c8b4a084d89ca4d8b49084d8b094983f903750949c7c103000000eb0749c7c1010000004983f903752c4d8b63084d89d34d8b5b084d8b5b084d3be3750949c7c403000000eb0749c7c4010000004983fc03756ceb724d89da4d8b1b4983fb0175514c8b4a084d89cb4d8b49084d8b094983f901750949c7c103000000eb0749c7c1010000004983f90375274d89d44d8b6424184d8b5b084d8b5b184d3be3750949c7c403000000eb0749c7c401000000eb0749c7c4010000004983fc03740848c7c001000000c34d8b66084d8b1c244983fb030f859e0000004d8b5e104d8d77e04c3b75107306ff5550ca00384d89f749c746f80300000049c74610010000004d896e0849c7060d0000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500030000004d8d77e04c3b75107306ff5550ca00384d89f749c746f8030000004d895e104d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b89030d6f1c27f0000488b5d08ff2348c7c001000000c3f400000000|@18985,1,@4158|437,0,@18981 8980:D3,448|483b65187306ff5558ca0901534150a8010f8594010000f6442408010f8582010000ff30ff70084c8b6c24184d8b75004d89ed41ff7508488b542418498d47e8483b45107306ff5550ca04404989c748c740f8020000004c8970084c8b7424104c8930ff124989c64983fe010f850b0100004c8b7424104d8b364c8d2d080000004f8d6cb5fc41ffe5e93b000000909090e949000000909090e957000000909090e965000000909090e973000000909090e985000000909090e993000000909090e9a1000000909090488b4424085b488d64241041584883c408e921ffffff488b4424085b488d64241041584883c408e90bffffff488b4424085b488d64241041584883c408e9f5feffff488b4424085b488d64241041584883c408e9dffeffff488d64240858488b5c24104883c40841584883c408e9c5feffff488b4424085b488d64241041584883c408e9affeffff488b4424085b488d64241041584883c408e999feffff488b4424085b488d64241041584883c408e983feffff488d6424284d8b36498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d642410eb05488d64241048c7c001000000c3f400000000000000|@18990,1,@4161| 8981:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b85832d6f1c27f000049b99832d6f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@18994,1,@4164,@5104|26,0,@18991 36,0,@18993 8982:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4162| 8983:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4163| 8984:D3,16|483b65187305ff5558cd01c3f4000000|@18994,1,@4165| 8985:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be809f7cf1c27f00004c8930c3f400000000|@19004,1,@4174|47,0,@8986 8986:D4,328|483b65187305ff5558cd054989c641ff36498b460841ff761041ff76184d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdf8a07cf1c27f00004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bea8a17cf1c27f00004d893048bb9033d6f1c27f0000ff15d80000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c74028010000004c8b24244c896020488d6424084c8968184c89701048c74008010000004c8b34244c8930488d642408c3f4000000000000|@19003,1,@4173,@5108|65,0,@8987 109,0,@8988 122,0,@19002 8987:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18988,1,@4168,@8978| 8988:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b87033d6f1c27f000049b98033d6f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@18994,1,@4171,@5104|26,0,@19000 36,0,@19001 8989:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4169| 8990:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4170| 8991:D3,16|483b65187305ff5558cd01c3f4000000|@18994,1,@4172| 8992:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be58a37cf1c27f00004c8930c3f400000000|@19011,1,@4181|47,0,@8993 8993:D4,368|483b65187305ff5558cd054989c641ff36498b460841ff761041ff761841ff762041ff76284d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdf8a47cf1c27f00004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849bea8a57cf1c27f00004d893048bb5034d6f1c27f0000ff15f80000004989c44d8d77e04c3b75107306ff5550ca00104d89f749c746f80300000049c74610010000004c8b2c244d896e08488d64240849c7060d0000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89750849c74500030000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004c8b5c24084d895e084c8b5c24104d891e498d47c0483b45107306ff5550ca00704989c748c740f80700000048c740300100000048c74028010000004c8b1c244c895820488d6424184c8960184c8968104c8970084c8b34244c8930488d642408c3f400|@19010,1,@4180,@5108|73,0,@8994 117,0,@8995 130,0,@19009 8994:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18988,1,@4175,@8978| 8995:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b83034d6f1c27f000049b94034d6f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@18994,1,@4178,@5104|26,0,@19007 36,0,@19008 8996:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4176| 8997:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4177| 8998:D3,16|483b65187305ff5558cd01c3f4000000|@18994,1,@4179| 8999:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be58a77cf1c27f00004c8930c3f400000000|@19018,1,@4188|47,0,@9000 9000:D4,312|483b65187305ff5558cd054989c6498b0641ff76084d8d77e84c3b75107305ff5550cd054d89f749c746f8020000004c8b6a084d896e0849bdc0a87cf1c27f00004d892e4d8d47e84c3b45107306ff5550ca01404d89c749c740f8020000004d89700849be70a97cf1c27f00004d893048bb1835d6f1c27f0000ff15d00000004989c54d8d67e04c3b65107306ff5550ca00204d89e749c74424f80300000049c7442410010000004c8b34244d89742408488d64240849c704240d0000004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849c70603000000498d47c0483b45107306ff5550ca00604989c748c740f80700000048c740300100000048c740280100000048c74020010000004c8968184c89701048c740080500000049bed8c8d0f1c27f00004c8930c3f40000|@19017,1,@4187,@5108|57,0,@9001 101,0,@9002 114,0,@19016 297,0,@9493 9001:D4,128|483b65187305ff5558cd054c8b304d8b364983fe03752b4c8b70084d8b364983fe03750949c7c603000000eb0749c7c6010000004983fe03750848c7c001000000c34c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff153b0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3f4|@18988,1,@4182,@8978| 9002:D4,112|483b65187305ff5558cd056a016a016a016a01488b5a085449b8f834d6f1c27f000049b90835d6f1c27f000049c7c201000000ff154f000000415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f4000000|@18994,1,@4185,@5104|26,0,@19014 36,0,@19015 9003:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4183| 9004:D3,16|483b65187305ff5558cd01c3f4000000|@18992,1,@4184| 9005:D3,16|483b65187305ff5558cd01c3f4000000|@18994,1,@4186| 9006:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be20ab7cf1c27f00004c8930c3f400000000|@19024,1,@4192|47,0,@9007 9007:D3,536|483b65187305ff5558cd054989d0ff30488b78084c8b60104c8b70184c8b1f4c8b57084c8b4f184c8b6f20488b5728498d7fe8483b7d107306ff5550ca047f4989ff48c747f8020000004d8b40084c89470849b860ad7cf1c27f00004c89074d8d47e04c3b45107306ff5550ca847e4d89c749c740f803000000498978104d89680849bd38ae7cf1c27f00004d89284d8b2b4983fd030f85b50000004d8b6b084d8b5b184d8b6d00498b33488b5ef848c1e30848c1eb074883cb014883fb01750c48bf4882d1f1c27f0000eb584889df4889f94c8d1cbd0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca4e774d89df48d1ef49897bf841c643ff404c89df48d1e948c7c001000000f348ab4889d94c89df48d1e9f348a5418063ffbf4c89df4d8d5fe04c3b5d107306ff5550ca84774d89df49c743f80300000049897b104d896b0849c70301000000eb004d8d6fc84c3b6d107306ff5550ca045f4d89ef49c745f806000000498955284d8945204d894d1849c74510010000004d8955084d895d004d8d5fe04c3b5d107306ff5550ca00704d89df49c743f80300000049c74310010000004d89730849c7030d0000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c70603000000498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c8970084c8b34244c8930488d642408c3f400000000000000|@19023,1,@4191|84,0,@9008 132,0,@9009 195,0,@10817 9008:D4,168|483b65187305ff5558cd054d8d77d04c3b75107305ff5550cd054d89f749c746f80500000049c74620010000004989461849bdb05fd1f1c27f00004d896e1049c746080100000049c70601000000498d47e0483b45107306ff5550ca04404989c748c740f80300000049bdd035d6f1c27f00004c8968104c89700849bed888d1f1c27f00004c89304c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff251d000000f400000000|@19022,1,@4189,@8978|51,0,@10542 107,0,@19021 125,0,@10854 9009:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@4190,@5098| 9010:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef0ae7cf1c27f00004c8930c3f400000000|@19028,1,@4194|47,0,@9011 9011:D4,160|483b65187305ff5558cd05ff304c8b3424498b46184c8b72084d89f5498b1e4d89ee4d8b45084d8b4e10ff15880000004989c24c8b34244d8b2e4d89f64d8b66084d89f64d8b5e10488d6424084d8d77d84c3b75107306ff5550ca003c4d89f749c746f8040000004d8956184d895e104d8966084d892e498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3f400|@19027,1,@4193,@8978| 9012:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd50b07cf1c27f00004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@19036,1,@4197|51,0,@9013 9013:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@19034,1,@4195,@9014| 9014:D4,568|483b65187305ff5558cd094889da4c8b753841564c8b2c244d89ee41ff75284d89f64d89f541ff76304d89ed4d89ee41ff75384d89f641ff7640ff75084c8d3517000000415648896508ff124883c408415e4c897508e947010000488b65084883c408415e4c8975084c8b7424184c8b6424204d89e54d897424284c8b7424104d89ed4d89ec4d8975304c8b7424084d89e44d89e54d897424384c8b34244d89ed4d8975404c8b681841f6c50175634d8b75004d8b5d084d8b4d104d8b65184d8b55204d8d6fd04c3b6d107306ff5550ca015e4d89ef49c745f8050000004d894d204d8955184d895d104d8965084d8975004d8d77f04c3b75107306ff5550ca01204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85c80000004d8b364d8b16498b7e084d8b4e10498b76184d8b46204c8b304c8b68084c8b60104d8d5fd04c3b5d107306ff5550cac0774d89df49c743f8050000004989732049897b184d8943104d894b084d8913498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930ff15ae0000004c8b7424184c8b6424204d89e54d897424284c8b7424104d89ed4d89ec4d8975304c8b7424084d89e44d89e54d897424384c8b34244d89ed4d897540488d64242848c7c001000000c3488d6424284c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbf0f4d0f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23f40000|@19035,1,@4196,@4850|536,0,@9850 9015:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd90b37cf1c27f00004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@19039,1,@4199|51,0,@9016 9016:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@19034,1,@4198,@9014| 9017:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bd68b47cf1c27f00004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@19044,1,@4202|51,0,@9018 9018:D3,72|483b65187305ff5558cd05488b5208ff124989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bed8b47cf1c27f00004c8930c3f4000000000000|@19043,1,@4201|53,0,@9019 9019:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@19034,1,@4200,@9014| 9020:D3,104|483b65187305ff5558cd05a801753f4c8b284d8d77e84c3b75107306ff5550ca04204d89f749c746f8020000004d896e0849bdb0b57cf1c27f00004d892e4c8b6a084d89750048c7c001000000c34c8b720849c7060100000048c7c001000000c3f4000000000000|@19050,1,@4204|51,0,@9021 9021:D4,24|483b65187305ff5558cd05488b5a08ff251b000000f40000|@19034,1,@4203,@9014| 9022:D3,24|483b65187305ff5558cd0948c7c001000000c3f400000000|@17281,1,@4205| 9023:D3,40|483b65187305ff5558cd014c8b304983fe01750848c7c003000000c348c7c001000000c3f4000000|@17472,1,@4206| 9024:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70001000000c3f40000|@17472,1,@4207| 9025:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@17472,1,@4208| 9026:D3,40|483b65187305ff5558cd014c8b304983fe03750848c7c003000000c348c7c001000000c3f4000000|@17476,1,@4209| 9027:D3,64|483b65187305ff5558cd014c8b304c8b6808498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c70003000000c3f40000|@17476,1,@4210| 9028:D3,56|483b65187305ff5558cd014c8b70084c8b6810498d47e8483b45107306ff5550ca00604989c748c740f8020000004c8968084c8930c3f400|@17476,1,@4211| 9029:D3,64|483b65187305ff5558cd014883f803750c49bef8f9d4f1c27f0000eb0a49bee058d1f1c27f000049bd48c3d0f0c27f00004d89750048c7c001000000c3f40000|@19342,1,@4212|19,0,@16888 31,0,@10493 41,0,@4660 9030:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4213|13,0,@18231 9031:D3,24|483b65187305ff5558cd0148b81061d6f1c27f0000c3f400|@18769,1,@4215|13,0,@19350 9032:D3,24|483b65187305ff5558cd0148b8985ad1f1c27f0000c3f400|@18768,1,@4214|13,0,@10508 9033:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@19359,1,@4216| 9034:D3,24|483b65187305ff5558cd01488b4010c3f400000000000000|@19363,1,@4217| 9035:D3,16|483b65187305ff5558cd01488b00c3f4|@19367,1,@4218| 9036:D4,32|483b65187305ff5558cd054c8b420848c7c301000000ff251c000000f4000000|@19445,1,@4233,@9037| 9037:D20,2272|483b65187306ff5558ca0901505341504c8b7424104d8b2e4e8d246d010000004983fc01750f49bd8067d6f1c27f0000e9b10000004d89e34983c30a4c89d84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15730800000f87970100004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca005c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc0000000049d1eb4d895d0049bb8067d6f1c27f000048c7c10b000000498d7308498d7d0848d1e9f3a44c89e14d89f6498d7608498d7d0d48d1e9f3a4418065ffbf4d8b75004e8d3475010000004983fe01750f48bba0d5d0f1c27f0000e9990000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d990700000f87b00000004d89da4a8d1c950400000048f7db4903df483b5d107205493bdf7206ff5550ca00784989df49d1ea4c8953f8c643ff414983eb024ac7449bfc0000000049d1ec4c89234c89f1498d7508488d7b0848d1e9f3a44983c61049d1ee42c604330a8063ffbf49be18e07f0bc37f0000498b06ff15c507000049be18e07f0bc37f0000498b064c8b402048bb78c5d0f1c27f0000ff159c07000048c7c00300000048c7c301000000ff15800700004989c6eb2a488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff2341f6c60175634d8b1e4d8b6e084c3b1d350700007502eb344d8b234e8d2465010000004983fc05752f49bc9867d6f1c27f0000498d7308498d7c240848c7c102000000483bc9f3a67402eb0c41f6c5017506498b4500eb1b4d89ee483b65187306ff5558ca0040eb9748b800d9d0f1c27f000048bab067d6f1c27f0000488b5c2410ff15b90600004989c641566a016a0148bae86bd6f1c27f0000488b4424104889e3ff1590060000ff3424488b5c241048b8586cd6f1c27f0000ff15700600004889c3488b0424ff155b0600004989c64156ff75084c8d35a5020000415648896508ff75084c8d359601000041564889650848c7c00700000048c7c3010000004c8b442420ff15150600004883c408415e4c89750848ba50fcd0f1c27f0000488b5c241049c7c003000000ff15e70500004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706030000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff484d89342449c7c5030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff484d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4883c408415d4c896d084883c428e9b2020000488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d6d040000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be806cd6f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bda06cd6f1c27f00004d896e10498946084c8b6c24284d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbc06cd6f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23488b65084883c408415e4c8975084c8b304c3b356f0300000f850a030000488d642420ff75084c8d35fc01000041564889650848c7c00700000048c7c3010000004c8b442410ff15330300004883c408415e4c89750848ba50fcd0f1c27f0000488b1c2449c7c003000000ff15060300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c706030000004d8d6ff04c3b6d107306ff5550ca00404d89ef49c745f80100000041c645ff404d89750049c7c6030000004d8d67f04c3b65107306ff5550ca00604d89e749c74424f80100000041c64424ff484d8934244d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c706030000004d8d67f04c3b65107306ff5550ca00404d89e749c74424f80100000041c64424ff484d89342449c7c5030000004d8d77f04c3b75107306ff5550ca00304d89f749c746f80100000041c646ff484d892e4d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e41ff3641ff7608488b442410ff15aa0100004889c2498d47e0483b45107305ff5550cd044989c748c740f8030000004c8b7424184c8970104c8b7424084c8970084c8b34244c8930488d642408ff124c8b34244d8b064d89f6498b4608488d64241848bb186dd6f1c27f00004883c408ff253e010000488b65084883c408415e4c8975086a016a016a014c8b284d89ee4c3b2d15010000751b4c8934244c8b70084c897424084c8b70104c89742410e9810000004983fe03752549be806cd6f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b76104c89742410eb564d8d77e04c3b75107305ff5550cd014d89f749c746f80300000049bda06cd6f1c27f00004d896e10498946084c8b6c24184d892e49bc58c0d0f0c27f000049bd50c6d0f1c27f00004c8924244c896c24084c89742410415e415d415c498d47d8483b45107306ff5550ca00704989c748c740f80400000049bbc06cd6f1c27f00004c8958184c8960104c8968084c8930488b5d08ff23488d642440488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01|@19446,1,@4234,@4613,@4846,@4911,@4873,@9053,@4613,@4613,@4873,@9053,@9054,@9054,@9049,@9038,@19406,@9052,@4846,@4851|40,0,@19405 178,0,@19405 250,0,@9535 418,0,@19888 437,0,@19888 454,0,@9463 500,0,@9487 521,0,@9487 578,0,@19406 642,0,@9571 652,0,@19407 682,0,@19435 714,0,@19438 815,0,@9896 1248,0,@19440 1311,0,@19441 1337,0,@4613 1347,0,@9469 1404,0,@19442 1521,0,@9896 1968,0,@19444 2056,0,@19440 2119,0,@19441 2145,0,@4613 2155,0,@9469 2212,0,@19442 9038:D6,744|483b65187305ff5558cd0d52536a016a016a014c8b742420498b56284889e3ff12ff3424ff742410ff7424206a016a016a014c8b742450498b5628488b4424484889e3ff12ff3424ff7424104c8b7424204983fe037557488d642460498d47d8483b45107303ff55504989c748c740f80400000049be0868d6f1c27f00004c89701848c740100100000049be5868d6f1c27f00004c8970084c8b34244d8b7618488d6424084c8930488b5d08ff234c8b7424084d89f54c3b35530200007502eb384d89ed4d8b75004e8d3475010000004983fe01752849bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67505e9fc0000004c8b742460498b5620488b442438ff124989c641564c8b742468498b5620488b442410ff124989c54c8b34244d89f44d3bf5750e488d64240849c7c603000000eb594d89e44d8b34244e8d3475010000004d8b5d004c89d94e8d1c5d010000004d3bf3752a4d89e4498d742408488d642408498d7d08483bc9f3a6750949c7c603000000eb0749c7c601000000eb0c488d64240849c7c6010000004983f6024983fe037557488d642460498d47d8483b45107303ff55504989c748c740f80400000049be7068d6f1c27f00004c89701848c740100100000049be5868d6f1c27f00004c8970084c8b34244d8b7618488d6424084c8930488b5d08ff234c8b742460498b5610488b442458ff124989c64d8b76104983fe030f859a000000f604240175794c8b34244d8b264c3b25d9000000750949c7c503000000eb4c4d8b2c244e8d2c6d010000004983fd01753349bdd8c8d0f1c27f0000498d742408498d7d0848c7c100000000483bc9f3a6750949c7c503000000eb0749c7c501000000eb0749c7c5010000004983fd03750e4d89f6498b5e08488d642428eb055b4883c4204c8b742438498b5608488b44241041584883c438ff22488b442430488b1c24ff153c0000004889c3488d6424084c8b742458498b5608488b4424304883c42041584883c438ff22f400|@19413,1,@4219,@9039,@9493,@9493|118,0,@19409 140,0,@19411 216,0,@9493 450,0,@19412 472,0,@19411 590,0,@9493 9039:D4,240|483b65187305ff5558cd094989c64889d841f6c6010f85d000000041ff364d8b76084983fe010f85850000004c8b34244d89f54c3b35ce0000007507488d642408eb3f4d89ed4d8b75004e8d3475010000004983fe01752b49bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb06488d642408c34d8d77e84c3b75107305ff5550cd014d89f749c746f802000000498946084c8b2c244d892e488d6424084c89f0c34889c34c89f0e844ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000|@19414,1,@4220,@9493|90,0,@9493 9040:D5,840|483b65187306ff5558ca0d0152505341504c8b742418498b5630498d47e8483b45107305ff5550cd044989c748c740f8020000004c8b34244c8970084c8b7424104c8930ff124989c64983fe037457488d642418498d47d8483b45107303ff55504989c748c740f80400000049be4869d6f1c27f00004c89701848c740100100000049be5868d6f1c27f00004c8970084c8b34244d8b7608488d6424084c8930488b5d08ff23ff742408f604240175414c8b3424498b064d89f641ff76084c8b742428498b5628ff124989c64983fe03740e488d64241049c7c603000000eb1d415d4c892c24483b65187303ff5558ebb9488d64240849c7c6010000004983fe037557488d642418498d47d8483b45107303ff55504989c748c740f80400000049be7869d6f1c27f00004c89701848c740100100000049bea869d6f1c27f00004c8970084c8b34244d8b7620488d6424084c8930488b5d08ff234c8b34244983fe030f85040100004c8b5424104d8b324e8d2c75010000004c8b6424184d8b5c24184d89de4d8b1b4e8d1c5d010000004983fd017505e9ba0000004983fb0175084d89d6e9ac0000004f8d4c1dff4c89c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d0445010000004c3b0569010000777e4c89c74c8d34bd0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003f4d89f748d1ef49897ef841c646ff414983e8024bc74486fc0000000049d1e94d890e4c89e94d89d2498d7208498d7e0848d1e9f3a44983c5104d89e44d8b6424184c89d9498d74240849d1ed4b8d3c2e48d1e9f3a4418066ffbfeb1a488d64242048b8f8c7d0f1c27f0000488b5d08ff234c8b74241041564c8b742420498b5e18488b442410ff15e10000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408ff15a50000004989c641564c8b742420498b5610488b0424ff124989c64d8b364c3b7424087457488d642420498d47d8483b45107303ff55504989c748c740f80400000049bec869d6f1c27f00004c89701848c740100100000049be5868d6f1c27f00004c8970084c8b34244d8b7608488d6424084c8930488b5d08ff23584883c420c3f4000000000000ffffffffffffff01|@19421,1,@4221,@4836,@9041|110,0,@19417 132,0,@19411 290,0,@19418 312,0,@19419 606,0,@9487 763,0,@19420 785,0,@19411 9041:D3,192|483b65187305ff5558cd0953a8010f859d000000ff30488b40084883f8017531498d47e8483b45107303ff55504989c748c740f80200000048c74008010000004c8b34244c8930488d6424084883c408c3488b5c2408e8a5ffffff4989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c3488d64240848c7c001000000c3f400|@19422,1,@4222| 9042:D3,264|483b65187305ff5558cd014c8b284d89ee4e8d2c6d010000006a016a016a016a014983fd017e7a4e8d3475010000004983fe017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff234c0fb670084e8d3475010000004983fe5f750949c7c603000000eb0749c7c6010000004983fe03752e49be686ad6f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418eb2c49be906ad6f1c27f00004d8b2e4c892c244d8b6e084c896c24084d8b6e104c896c24104d8b76184c89742418415e415d415c415b498d47d8483b45107306ff5550ca00784989c748c740f8040000004c8958184c8960104c8968084c8930c3f400000000000000|@19426,1,@4223|60,0,@9872 117,0,@19424 163,0,@19425 9043:D3,168|483b65187305ff5558cd014c8b304e8d34750100000049c7c4010000004d3be6720949c7c601000000eb5b4d89e54983c51049d1ed4e0fb62c284e8d2c6d010000004983fd5f7502eb1e4983fd0174184d89e54983c5024d89ec483b65187306ff5558ca0150ebb54d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892e4983fe01750948c7c003000000eb0748c7c0010000004883f0024883f002c3f40000|@13717,1,@4224| 9044:D4,112|483b65187305ff5558cd014c8b284c3b2d73000000750848c7c003000000c34d8b75004e8d3475010000004983fe01753049bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a6750848c7c003000000c348c7c001000000c348c7c001000000c3f4000000000000|@19428,1,@4225,@9493|51,0,@9493 9045:D3,16|483b65187305ff5558cd01c3f4000000|@19430,1,@4226| 9046:D5,728|483b65187305ff5558cd0d5250534c8b7424084d89f54c3b35db0200007502eb3a4d89ed4d8b75004e8d3475010000004983fe01755449bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb2f415d49be786bd6f1c27f00004d8b264d8965004d8b66084d8965084d8b76104d89751048c7c0010000004883c410c34c8b742410498b5610488b442408ff124989c641ff3641ff760841ff76104d8b6e184c8b7424204d8b264d89e34a8d0c6501000000492bcd7115488d64243048b8d0c6d0f1c27f0000488b5d08ff234883c1014d89f64d89dc4e8d145d010000004983fd010f8cbe0100004883f9010f8c9f0100004d8d5c0dff4d3bda7615488d64243048b82046d1f1c27f0000488b5d08ff234d89f64e8d2465010000004983fd01750d493bcc75084d89f1e9a70000004883f901750f49b9d8c8d0f1c27f0000e9920000004889c84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b25560100000f87090100004d89e34e8d0c9d0400000049f7d94d03cf4c3b4d1072054d3bcf7206ff5550ca02704d89cf49d1eb4d8959f841c641ff414983ec024bc744a1fc000000004989cc49d1ec4d89214983c51049d1ed4d89f64b8d342e498d790848d1e9f3a4418061ffbf4d8b314e8d0475010000004c8b7424284d8b560848c7c00100000048c7c301000000ff15e50000004989c64c8b2c244983fd03488d642408753d4c8b6c24084983fd0374324d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed8c8d0f1c27f00004d8975004d89eeeb004c8b6c24104c8b24244d896500488d6424084d8975084c8b34244d897510488d64241048c7c0010000004883c410c3488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8e0c2d0f1c27f0000488b5d08ff23488d64243048b8e0c2d0f1c27f0000488b5d08ff23f400000000000000ffffffffffffff01|@19433,1,@4227,@9047,@9493|56,0,@9493 95,0,@19432 203,0,@9475 272,0,@10364 324,0,@9493 585,0,@9493 656,0,@9487 677,0,@9446 698,0,@9446 9047:D3,1152|483b65187306ff5558ca090750534150415141524c8b7424184d89f54c3b7424100f85c4010000488d6424084c89e9482b4c24187115488d64242048b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b2c244d8b65004d89e64e8d1465010000004c8b5c24184d89dc4983fb010f8c620100004883f9010f8c430100004d89e44d89e34d8d640cff4d3be27615488d64242048b82046d1f1c27f0000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb017512493bce750d4d89ee488d642420e9b90000004883f9017514488d64242049bed8c8d0f1c27f0000e99f0000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d690300000f87970000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca02384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500488d642408498d7e0848d1e9f3a4418066ffbf4883c418498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930c3488d64242048b8f8c7d0f1c27f0000488b5d08ff23488d64242048b8e0c2d0f1c27f0000488b5d08ff23488d64242048b8e0c2d0f1c27f0000488b5d08ff23488b14244d89ed4983c51049d1ed4c8b7424084f0fb6342e4a8d047501000000ff124989c64983fe030f8513020000488b4c24184889cb482b4c24207115488d64242848b8d0c6d0f1c27f0000488b5d08ff234883c1014c8b6c24084d8b65004d89e64e8d1465010000004c8b5c24204d89dc4983fb010f8cb00100004883f9010f8c910100004d89e44d89e34d8d640cff4d3be27615488d64242848b82046d1f1c27f0000488b5d08ff234d89ed4e8d3475010000004d89db4d89dc4983fb01750d493bce75084d89eee9ab0000004883f901750f49bed8c8d0f1c27f0000e9960000004889c84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d770100000f87ef0000004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca0a384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004989cb49d1eb4d891e4d89e44983c41049d1ec4d89ed4b8d742500498d7e0848d1e9f3a4418066ffbf41564889db4889d84883c3027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234889c04883c0027115488d64243048b8d0c6d0f1c27f0000488b5d08ff234c8b4424184c8b4c24104c8b542408e845fcffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424204883c410c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488d64242848b8e0c2d0f1c27f0000488b5d08ff23488b5c24184883c3027115488d64242848b8d0c6d0f1c27f0000488b5d08ff23488b4424204c8b4424104c8b4c2408415a488d642420e998fbfffff400000000000000ffffffffffffff01ffffffffffffff01|@14859,1,@4228|61,0,@9475 149,0,@10364 217,0,@9493 435,0,@9487 456,0,@9446 477,0,@9446 560,0,@9475 649,0,@10364 707,0,@9493 891,0,@9475 921,0,@9475 1013,0,@9487 1034,0,@9446 1055,0,@9446 1087,0,@9475 9048:D3,40|483b65187305ff5558cd014883f85f750848c7c003000000c348c7c001000000c3f4000000000000|@19434,1,@4229| 9049:D4,912|483b65187305ff5558cd0d50534c8b4424084d8b304e8d3475010000004156488b04244989c14883e8027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b5a08ff155d0300004989c641f6c6010f85ff0200004d8b2e4c8b6424104d8b1c244d89de4e8d1c5d010000004983fd010f8cc90200004d3beb7615488d64241848b82046d1f1c27f0000488b5d08ff234d89e44e8d3475010000004d3bee75084d89e6e9a40000004983fd01750f49bed8c8d0f1c27f0000e98f0000004c89e84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1c45010000004c3b1d9f0200000f873e0200004d89da4e8d34950400000049f7de4d03f74c3b751072054d3bf77206ff5550ca00384d89f749d1ea4d8956f841c646ff414983eb024bc7449efc000000004d89eb49d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a4418066ffbf4d89eb4983c3027115488d64241848b8d0c6d0f1c27f0000488b5d08ff23488b0c24492bcd488d6424087115488d64241048b8d0c6d0f1c27f0000488b5d08ff234883e9017115488d64241048b8d0c6d0f1c27f0000488b5d08ff234c8b6424084d8b14244d89d54e8d0c55010000004983fb010f8c4f0100004883f9010f8c300100004d8d540bff4d3bd17615488d64241048b82046d1f1c27f0000488b5d08ff234d89e44e8d2c6d010000004983fb01750d493bcd75084d89e5e9a80000004883f901750f49bdd8c8d0f1c27f0000e9930000004889c84883c01e49c7c51100000048d1e849d1ed4833d249f7f54c8d1445010000004c3b15320100000f879a0000004d89d14e8d2c8d0400000049f7dd4d03ef4c3b6d1072054d3bef7206ff5550ca025c4d89ef49d1e94d894df841c645ff414983ea024bc74495fc000000004989ca49d1ea4d8955004983c31049d1eb4d89e44b8d341c498d7d0848d1e9f3a4418065ffbf4d8d67f04c3b65107306ff5550ca00604d89e749c74424f8010000004d892c24415d4d8965004d89750848c7c0010000004883c408c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8e0c2d0f1c27f0000488b5d08ff23488d64241048b8e0c2d0f1c27f0000488b5d08ff23488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64241848b8e0c2d0f1c27f0000488b5d08ff23488d642408415d49c74500010000004c8b34244d897508488d64240848c7c001000000c3f400000000ffffffffffffff01ffffffffffffff01|@19436,1,@4230,@9050|51,0,@9475 133,0,@10364 179,0,@9493 351,0,@9475 386,0,@9475 413,0,@9475 484,0,@10364 536,0,@9493 757,0,@9487 778,0,@9446 799,0,@9446 820,0,@9487 841,0,@9446 9050:D3,656|483b65187306ff5558ca09035053415041514c8b6c24184d89ee4983fd017f0d488d64242048c7c001000000c3488b5424104d89f64d89f44983fe017d0a488d642420e9320200004c8b7424084d8b2e4e8d1c6d010000004d89e44d89e54d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84f80100004d89ed4983c51049d1ed4d89f64f0fb6342e4a8d047501000000ff124989c64983fe03750d488d64242048c7c001000000c34c8b7424184d89f44983fe017d0a488d642420e99e0100004c8b4424084d8b304d89f54e8d1c75010000004d89e44d89e64d3be37c0949c7c403000000eb0749c7c4010000004983fc030f84610100004d89f64c89f04983c61049d1ee4d89c04f0fb634304e8d3475010000004983fe5d0f85080100004c8b24244983ec02488d6424087115488d64241848b8d0c6d0f1c27f0000488b5d08ff234889c04989c6493bc4750d488d64241848c7c001000000c3488b5424084d89f64983ee027115488d64241848b8d0c6d0f1c27f0000488b5d08ff234983fe017d0a488d642418e9890000004d89c04e8d2c6d010000004d3bf57c0949c7c503000000eb0749c7c5010000004983fd03745e4983c61049d1ee4d89c04f0fb63430488d6424084a8d047501000000ff124989c64983fe03750d488d64241048c7c001000000c3488d642408498d47f0483b45107303ff55504989c748c740f8010000004c8b34244c8930488d642408c3488d64241848b8a8f8d0f1c27f0000488b5d08ff234889c04883e8027115488d64242048b8d0c6d0f1c27f0000488b5d08ff23488b5c24104d89c04159488d642418e9a0fdffff488d64242048b8a8f8d0f1c27f0000488b5d08ff23488d64242048b8a8f8d0f1c27f0000488b5d08ff23f40000000000|@19437,1,@4231|316,0,@9475 375,0,@9475 544,0,@9872 574,0,@9475 615,0,@9872 636,0,@9872 9051:D4,72|483b65187305ff5558cd014c8b304d8b2e4983fd0175154d8b6e104d89ee483b65187306ff5558ca0040ebe2498b46084d8b461048bbf81ad1f1c27f0000ff251c000000f4000000|@10064,1,@4232,@4846|54,0,@10062 9052:D3,80|49bbb0d57f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da41ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000000000|@9888,1,@4237|2,0,@19885 9053:D3,80|49bbd8d57f0bc37f00004d8b1b4c897d004989e548896540488b65304881ec90000000488b7d384889c64889da4c89c141ffd34c89ec4c8b7d0048837d20017501c3488b4520488b5d08ff23f4000000|@9440,1,@4235|2,0,@19886 9054:D4,536|483b65187305ff5558cd09a8010f85eb0100004c8b284c3b2d130200007502eb344d8b75004e8d3475010000004983fe01752649bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb044889d8c34c8b334e8d3475010000004983fe01750f49bb00d9d0f1c27f0000e99b0000004d89f44983c4024c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1445010000004c3b15670100000f873f0100004d89d14e8d1c8d0400000049f7db4d03df4c3b5d1072054d3bdf7206ff5550ca08744d89df49d1e94d894bf841c643ff414983ea024bc74493fc0000000049d1ec4d89234c89f1488d7308498d7b0848d1e9f3a44983c61049d1ee43c604332e418063ffbf4d8b334e8d3475010000004d8b65004e8d2465010000004983fe0175044c89e8c34983fc0175044c89d8c34f8d5426ff4c89d04883c01e49c7c11100000048d1e849d1e94833d249f7f14c8d0c45010000004c3b0d9b000000776f4d89c84a8d04850400000048f7d84903c7483b45107205493bc77206ff5550ca007e4989c749d1e84c8940f8c640ff414983e9024ac74488fc0000000049d1ea4c89104c89f1498d7308488d780848d1e9f3a44983c6104c89e1498d750849d1ee4a8d3c3048d1e9f3a48060ffbfc348b8f8c7d0f1c27f0000488b5d08ff2348b8f8c7d0f1c27f0000488b5d08ff234889d8c3f40000000000ffffffffffffff01ffffffffffffff01|@19447,1,@4236,@9493|53,0,@9493 108,0,@9571 480,0,@9487 496,0,@9487 9055:D3,72|483b65187305ff5558cd054989c6498d47e0483b45107306ff5550ca04404989c748c740f8030000004c8b6a084c8968104c89700849be30e27cf1c27f00004c8930c3f400000000|@19449,1,@4239|55,0,@9056 9056:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@19445,1,@4238,@9037| 9057:D4,32|483b65187305ff5558cd014989c6498b06498b5e084d8b4610ff2519000000f4|@19454,1,@4240,@5013| 9058:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4241| 9059:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4242|55,0,@9594 9060:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4243|30,0,@9991 9061:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4244| 9062:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4245|55,0,@9594 9063:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4246|30,0,@9991 9064:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4247| 9065:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4248|55,0,@9594 9066:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4249|30,0,@9991 9067:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4250| 9068:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4251|55,0,@9594 9069:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4252|30,0,@9991 9070:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4253| 9071:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4254|55,0,@9594 9072:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4255|30,0,@9991 9073:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4256| 9074:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4257|55,0,@9594 9075:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4258|30,0,@9991 9076:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4259| 9077:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4260|55,0,@9594 9078:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4261|30,0,@9991 9079:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4262| 9080:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4263|55,0,@9594 9081:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4264|30,0,@9991 9082:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4265| 9083:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4266|55,0,@9594 9084:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4267|30,0,@9991 9085:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4268| 9086:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4269|55,0,@9594 9087:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4270|30,0,@9991 9088:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4271| 9089:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4272|55,0,@9594 9090:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4273|30,0,@9991 9091:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4274| 9092:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4275|55,0,@9594 9093:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4276|30,0,@9991 9094:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4277| 9095:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4278|55,0,@9594 9096:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4279|30,0,@9991 9097:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4280| 9098:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4281|55,0,@9594 9099:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4282|30,0,@9991 9100:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4283| 9101:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4284|55,0,@9594 9102:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4285|30,0,@9991 9103:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4286| 9104:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4287|55,0,@9594 9105:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4288|30,0,@9991 9106:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4289| 9107:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4290|55,0,@9594 9108:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4291|30,0,@9991 9109:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4292| 9110:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4293|55,0,@9594 9111:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4294|30,0,@9991 9112:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4295| 9113:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4296|55,0,@9594 9114:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4297|30,0,@9991 9115:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4298| 9116:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4299|55,0,@9594 9117:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4300|30,0,@9991 9118:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4301| 9119:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4302|55,0,@9594 9120:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4303|30,0,@9991 9121:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4304| 9122:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4305|55,0,@9594 9123:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4306|30,0,@9991 9124:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4307| 9125:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4308|55,0,@9594 9126:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4309|30,0,@9991 9127:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4310| 9128:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4311|55,0,@9594 9129:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4312|30,0,@9991 9130:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4313| 9131:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4314|55,0,@9594 9132:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4315|30,0,@9991 9133:D3,40|483b65187305ff5558cd054c8b304c8b6a084d3bf5750848c7c003000000c348c7c001000000c3f4|@19470,1,@4316| 9134:D3,80|483b65187305ff5558cd054989c6498d47d8483b45107306ff5550ca04404989c748c740f80400000048c74018010000004c89701049be28dbd0f1c27f00004c8970084c8b72084c8930c3f400000000|@19470,1,@4317|55,0,@9594 9135:D3,48|483b65187305ff5558cd054c8b304c8b6a084d3bf57505488b4010c348b87810d1f1c27f0000488b5d08ff23f4000000|@19470,1,@4318|30,0,@9991 9136:D3,32|483b65187305ff5558cd0148b8c0d6d5f1c27f0000488b5d08ff23f400000000|@18233,1,@4319|13,0,@18231 9137:D3,64|483b65187305ff5558cd014989c6498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7000d000000c3f40000|@19609,1,@4320| 9138:D3,32|483b65187305ff5558cd054989c6488b5208498b06498b5e084d8b4610ff22f4|@19612,1,@4321| 9139:D3,64|483b65187305ff5558cd014c8b304983fe0d75234c8b7008498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4|@19615,1,@4322| 9140:D7,344|483b65187305ff5558cd01ff30488b5808ff7010ff7018ff70204883fb017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15460100004989c641564c8b7424184d89f54c3b352a0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424184156488b442418ff15c60000004989c64156488b442410ff15ae0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424184d89663049c74628030000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424204c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c410c3f40000000000|@19618,1,@4323,@8290,@8291,@9493,@9141|39,0,@10101 113,0,@9493 150,0,@17022 9141:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@10111,1,@4324|32,0,@9475 9142:D7,344|483b65187305ff5558cd01ff30488b5808ff7010ff7018ff70204883fb017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15460100004989c641564c8b7424184d89f54c3b352a0100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b7424184156488b442418ff15c60000004989c64156488b442410ff15ae0000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c74638030000004c8b6424184d89663049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424204c8b6c24084d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c410c3f40000000000|@19621,1,@4325,@9144,@9145,@9493,@9143|39,0,@10101 113,0,@9493 150,0,@17022 9143:D3,96|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70003000000c3f40000|@10111,1,@4328|32,0,@9475 9144:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608010000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@4326| 9145:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4327|89,0,@14034 9146:D4,88|483b65187305ff5558cd01ff30488b4008ff15590000004989c6498d47d8483b45107306ff5550ca00404989c748c740f80400000048c74018030000004c8b2c244c896810488d6424084c89700848c7000f000000c3f400|@19624,1,@4329,@9147| 9147:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@4330| 9148:D3,112|483b65187305ff5558cd014883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70605000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@13717,1,@4331|19,0,@16320 9149:D3,112|483b65187305ff5558cd014883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70601000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@13717,1,@4332|19,0,@16320 9150:D3,112|483b65187305ff5558cd014883f8017d1048b80095d4f1c27f0000488b5d08ff234d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849c70603000000498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70011000000c3f40000|@13717,1,@4333|19,0,@16320 9151:D3,72|483b65187305ff5558cd014c8b304c8b6808498d47d8483b45107306ff5550ca00604989c748c740f8040000004c8968184c89701048c740080100000048c70003000000c3f40000|@19633,1,@4334| 9152:D4,104|483b65187305ff5558cd014c8b284c8b70084d8b264983fc0d75134c89f04c89eb49c7c001000000ff2552000000498d47d8483b45107306ff5550ca00604989c748c740f80400000048c74018010000004c8968104c89700848c70017000000c3f4000000000000|@19636,1,@4335,@5380| 9153:D3,72|483b65187305ff5558cd014c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c7000b000000c3f40000|@11941,1,@4336| 9154:D5,368|483b65187305ff5558cd01ff304c8b70084d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500050000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff15230100004989c64d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c704241d0000004c8b2c244d89ee4983fd01750a488d6424084d89e5eb334d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f8030000004d8965104d89f64d897508488d64240849c745001f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049bcc06ad1f1c27f00004d8966184d896e104c8b2c244d896e08488d64240849c7060b000000415648c7c001000000ff15550000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3f40000000000|@19641,1,@4337,@8430,@8431|256,0,@10633 9155:D4,64|483b65187305ff5558cd01ff15470000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c7001d000000c3f400000000|@19644,1,@4338,@9156| 9156:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@4339| 9157:D4,80|483b65187305ff5558cd01ff30488b4008ff15510000004989c6498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8970104c8b34244c897008488d64240848c70005000000c3f400|@19647,1,@4340,@9158| 9158:D3,184|483b65187305ff5558cd01a8010f85960000004c8b28488b40084d8b75004d8b65084d8d6fe04c3b6d107306ff5550ca01504d89ef49c745f8030000004d8965104d89750849c74500010000004d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e886ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f4000000000000|@10112,1,@4341| 9159:D3,72|483b65187305ff5558cd014c8b304c8b68084983fe0175044c89e8c3498d47e0483b45107306ff5550ca00604989c748c740f8030000004c8968104c89700848c7001f000000c3f4|@19650,1,@4342| 9160:D4,88|483b65187305ff5558cd014883f801751048b83027d5f1c27f0000488b5d08ff23ff15490000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70007000000c3f4000000000000|@19653,1,@4343,@8089|19,0,@17208 9161:D4,136|483b65187305ff5558cd014989c6498d47e0483b45107306ff5550ca00404989c748c740f80300000048c74010010000004c89700848c7002900000041f6c601752b4d8b264d8b6e084d8b24244983fc0d75114d89ee483b65187306ff5558ca0140ebd849c7c601000000eb0749c7c6030000004983fe037506ff2520000000c3f4000000000000|@19656,1,@4344,@6504| 9162:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70021000000c3f40000|@12129,1,@4345| 9163:D3,72|483b65187305ff5558cd014c8b304c8b68084c8b6010498d47d8483b45107306ff5550ca00704989c748c740f8040000004c8960184c8968104c89700848c70015000000c3f40000|@19661,1,@4346| 9164:D3,56|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70005000000c3f40000|@12402,1,@4347| 9165:D3,16|483b65187305ff5558cd01488b00c3f4|@19666,1,@4348| 9166:D4,152|483b65187305ff5558cd014c8b204c8b40084d8b6c24084d8b742410498b5c24184983fd0575604d8b2e4983fd0375574d8b76084d8b2e4983fd0d75244d8b6e084d8d77f04c3b75107306ff5550ca08214d89f749c746f8010000004d892eeb0749c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff23498b06ff252900000048b87832d1f1c27f0000c3f40000000000|@19673,1,@4352,@9167|112,0,@10926 137,0,@10238 9167:D13,1096|483b65187306ff5558ca09015053415049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d77e84c3b75107303ff55504d89f749c746f8020000004c8b2c244d896e0849bd30187df1c27f00004d892e49c7c4010000004d8d6ff04c3b6d107306ff5550ca00504d89ef49c745f80100000041c645ff404d89650041554d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049bcb05fd1f1c27f00004d8965184d89751049be6086d1f1c27f00004d8975084c8b34244d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e41566a016a01488b44243048bb6086d6f1c27f00004989e0ff158b030000488d64240858ff1577030000ff15690300004d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004c8b6c24284d896e0849bdd8187df1c27f00004d892e4156ff152903000048ba28d4d4f1c27f000048bb6086d1f1c27f00004c8b4424084c8b0c24ff15fe0200004989c6415648ba68d4d4f1c27f0000488b44243048bb6086d1f1c27f00004c8b442410ff15cd0200004989c641564d8d6fe04c3b6d107303ff55504d89ef49c745f80300000049c74510010000004c8b7424304d89750849c745000d0000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d8975084c8b7424084d8975004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610010000004d896e0849c7062900000041f6c501752b4d8b5d004d8b65084d8b1b4983fb0d75114d89e5483b65187306ff5558ca0060ebd849c7c501000000eb0749c7c5030000004983fd03750e4c89f0ff15cc0100004989c6eb00498d47e8483b45107306ff5550ca00404989c748c740f80200000048c74008010000004c8930ff15930100004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b742420498b06ff153d0100004989c549c7c60100000041f6c501753e4d8b55004d8b65084d8d5fe84c3b5d107306ff5550ca00744d89df49c743f8020000004d8973084d89134d89de4d89e5483b65187306ff5558ca0060ebbc4983fe017507584883c420eb37498d47e0483b45107306ff5550ca00404989c748c740f8030000004c8b2c244c896810488d6424084c89700848c7001f0000004883c4204c8b34244d8b06488d64240848bac07ed3f1c27f000048c7c301000000ff15800000004889c248c7c001000000ff124989c64d8b2e4983fd0d7529488d6424184d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0c488d64241849c7c6010000004983fe01751048b80895d1f1c27f0000488b5d08ff23498b06c3f4|@19674,1,@4353,@6432,@8123,@7906,@6504,@7958,@7904,@8002,@9171,@8316,@5234|94,0,@9168 179,0,@10542 197,0,@10839 268,0,@19670 340,0,@9170 361,0,@16626 371,0,@10839 401,0,@16627 416,0,@10839 971,0,@14470 1077,0,@10926 9168:D3,64|483b65187305ff5558cd054989c44c8b6a084d89ee498b45004d89f54d8b364983ec014d03f4711048b8d0c6d0f1c27f0000488b5d08ff234d897500c3f40000|@19669,1,@4349|42,0,@9475 9169:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19671,1,@4350| 9170:D3,64|483b65187305ff5558cd05498d47e0483b45107305ff5550cd044989c748c740f80300000048c74010010000004c8b72084c89700848c7000d000000c3f40000|@19672,1,@4351| 9171:D3,176|483b65187305ff5558cd01a8010f85930000004c8b30488b40084d8b76084983e6094983fe01750949c7c503000000eb0749c7c5010000004983f5024d8d77e04c3b75107306ff5550ca01204d89f749c746f80300000049c74610010000004d896e0849bda8c3d1f1c27f00004d892e4156e889ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400|@10112,1,@4354|101,0,@11239 9172:D4,216|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849be201b7df1c27f00004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bcb81b7df1c27f00004d89264c892c244c89742408eb1a49bea087d6f1c27f00004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d893049c7c101000000ff2519000000f4|@19681,1,@4359,@9177|71,0,@9173 116,0,@9174 140,0,@19677 9173:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4355| 9174:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4356| 9175:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4357| 9176:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4358| 9177:D14,4984|483b65187306ff5558ca09035341514c8b184c8b60084c8b6810ff70184c8b70204d8b084d8b40084d8d57e84c3b55107306ff5550ca007b4d89d749c742f8020000004d8942084d890a41524c8b5424184983fa017f10488d64242048b84847d1f1c27f0000c34983fc030f85830000004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f402e9180f000041f6c4010f85830000004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f402e9210b00004983fc017505e9480700004d8b65004983fc03753c4d8b6d084d8b65004983fc0d75254d8b65084d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d896500eb0749c7c501000000eb0749c7c50100000041f6c501752f498b45004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff23e9030400004d8b2b4e8d2c6d010000004983fd017f15488d64242048b8a8f8d0f1c27f0000488b5d08ff234d0fb66b084e8d2c6d010000004981fd83000000720b4981fdb50000007702eb144981fdc300000072144981fdf50000007602eb0949c7c403000000eb164983fd4f750949c7c403000000eb0749c7c4010000004983f40241f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b76084d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d89750849c74500010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f80200000049c74608010000004d892eeb0749c7c6010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f8020000004d895d0849c74500070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d892b4d8d6fd04c3b6d107306ff5550ca00584d89ef49c745f8050000004d895d204d89751849c745100100000049c745080100000049c74500010000004d8d77e04c3b75107306ff5550ca00304d89f749c746f80300000049c74610010000004d89660849c706030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbd887d6f1c27f00004d895c24084d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd106fd1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e415648c7c001000000ff15aa0e00004989c048ba8048d1f1c27f0000488b442410488b5c24204c8b4c24084c8b542418ff157b0e00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d5fe8483b5d107306ff5550ca00404989df48c743f8020000004c89730849be4032d1f1c27f00004c89334883fb017508415e4883c420eb12488b0424ff15060e00004989c6488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175424d8b264d8b6e084d8b14244983fa0175204d8d77f04c3b75107306ff5550ca01184d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0148ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca01484d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca01284d89f749c746f8020000004d895e0849c706070000004d8d67e84c3b65107306ff5550ca01604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca01304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f80200000049bc6030d3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca01404d89ef49c745f8020000004d89750849be106fd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca01204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24104c8b442420ff15800b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049bcd887d6f1c27f00004d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408e953fcffff41f6c60175424d8b264d8b6e084d8b14244983fa0175204d8d77f04c3b75107306ff5550ca00184d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0048ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00484d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00284d89f749c746f8020000004d895e0849c706070000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00304d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb86dd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b442410ff15c00800004989c64d8b2e4983fd0575244d8b6e084d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb0749c7c60100000041f6c6010f85ec00000041ff3648c7c001000000ff15670800004989c048ba8048d1f1c27f0000488b0424488b5c24284c8b4c24104c8b542420ff15390800004989c5488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bec89bd1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd486fd1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be986dd1f1c27f00004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c420c341f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d896e1849c746100100000049c746080100000049c706010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbd887d6f1c27f00004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bea836d3f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15830400004989c048ba8048d1f1c27f0000488b442410488b5c24204c8b4c24084c8b542418ff15540400004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c341f6c60175414d8b164d8b6e084d8b0a4983f90175204d8d77f04c3b75107306ff5550ca001c4d89f749c746f8010000004d8916eb184d89ee483b65187306ff5558ca0058ebb949c7c60100000041f6c601757b4d8b164d89d54d8b124983fa01750949c7c203000000eb0749c7c2010000004983fa0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00584d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00384d89f749c746f8020000004d895e0849c706070000004d8d5fe84c3b5d107306ff5550ca00704d89df49c743f80200000049c74308010000004d89334d8d77d04c3b75107306ff5550ca00384d89f749c746f8050000004d895e204d896e1849c746100100000049c746080100000049c706010000004d8d6fe04c3b6d107306ff5550ca00504d89ef49c745f80300000049c74510010000004d89650849c74500030000004d8d67e84c3b65107306ff5550ca00604d89e749c74424f80200000049bbd887d6f1c27f00004d895c24084d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d8965084d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be106fd1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00204d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648c7c001000000ff15090100004989c048ba8048d1f1c27f0000488b442410488b5c24204c8b4c24084c8b542418ff15da0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642428498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080700000048c70001000000c3f400|@19682,1,@4360,@5057,@5149,@5057,@5149,@5057,@5149,@5062,@9167,@9178,@5057,@5149|94,0,@10373 137,0,@9872 278,0,@9872 507,0,@9872 550,0,@9872 1078,0,@19680 1162,0,@10236 1207,0,@10672 1339,0,@10384 1447,0,@10236 1935,0,@13934 1984,0,@10236 2028,0,@10672 2152,0,@19680 2200,0,@10236 2685,0,@10236 2729,0,@10660 2902,0,@10384 3014,0,@10966 3059,0,@10675 3103,0,@10659 3659,0,@19680 3744,0,@10236 3788,0,@13974 3882,0,@10384 3990,0,@10236 4533,0,@19680 4618,0,@10236 4662,0,@10672 4756,0,@10384 4864,0,@10236 9178:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4361| 9179:D5,256|483b65187305ff5558cd01ff30ff70084c8b70106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca00104d89ef49c745f8020000004d89650849be90327df1c27f00004d8975004d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d89660849bc28337df1c27f00004d89264c892c244c89742408eb1a49be9888d6f1c27f00004d8b2e4c892c244d8b76084c89742408415d415c4d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e415648c7c001000000ff154c0000004989c048ba8048d1f1c27f0000488b442410488b5c24084159488d64241049c7c201000000ff2519000000f4|@19688,1,@4366,@5057,@5149|66,0,@9180 111,0,@9181 135,0,@19685 217,0,@10384 9180:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4362| 9181:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4363| 9182:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4364| 9183:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4365| 9184:D3,24|483b65187305ff5558cd01488b4018c3f400000000000000|@19691,1,@4367| 9185:D3,88|483b65187305ff5558cd014c8b70084983fe05752c4c8b68104d89ee4d8b6d004983fd03750949c7c503000000eb0749c7c5010000004983fd037505498b4608c348b8a089d6f1c27f0000488b5d08ff23f4000000000000|@19697,1,@4368|67,0,@19694 9186:D4,120|483b65187305ff5558cd014c8b6818488b40204d8d77e84c3b75107306ff5550ca01204d89f749c746f8020000004d896e0849c7061b0000004156ff154f0000004989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f400000000000000|@19700,1,@4369,@5717| 9187:D3,56|483b65187305ff5558cd014c8b700841f6c601750848c7c003000000c34983fe01750848c7c003000000c348c7c001000000c3f400000000|@19703,1,@4370| 9188:D3,40|483b65187305ff5558cd014c8b70084983fe01750848c7c003000000c348c7c001000000c3f40000|@19706,1,@4371| 9189:D3,24|483b65187305ff5558cd014c8b30498b06c3f40000000000|@19709,1,@4372| 9190:D4,232|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849beb8377df1c27f00004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc50387df1c27f00004d89264c892c244c89742408eb1a49be288cd6f1c27f00004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d893048ba3830d3f1c27f000049c7c101000000ff251f000000f4000000000000|@19714,1,@4377,@6201|71,0,@9191 116,0,@9192 140,0,@19711 204,0,@13933 9191:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4373| 9192:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4374| 9193:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4375| 9194:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4376| 9195:D4,32|483b65187305ff5558cd014c8b30498b4610ff2520000000f400000000000000|@19716,1,@4378,@5717| 9196:D3,16|483b65187305ff5558cd01488b00c3f4|@19718,1,@4379| 9197:D4,32|483b65187305ff5558cd014989c6498b06498b5e084d8b4610ff2519000000f4|@19724,1,@4384,@9198| 9198:D5,1120|483b65187306ff5558ca09014989c66a016a0141f6c001756a4d8b184d8d67e84c3b65107306ff5550ca08484d89e749c74424f8020000004d895c240849bde03e7df1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca08584d89ef49c745f8020000004d895d0849bb783f7df1c27f00004d895d004c8924244c896c2408eb1b49bd688dd6f1c27f00004d8b65004c8924244d8b6d084c896c2408415d415c4d8d4fe84c3b4d107306ff5550ca08704d89cf49c741f8020000004d8961084d89294d8b26498b46104d8b76184883fb017f0b48b84847d1f1c27f0000c341f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bca08dd6f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849bef86ed1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b70084c3b35550100007502eb334d8b2e4e8d2c6d010000004983fd01753b49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb1949c7c00300000049c7c201000000ff15020100004989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f4|@19730,1,@4391,@9203,@9493|63,0,@9199 108,0,@9200 133,0,@19720 215,0,@10373 604,0,@19723 653,0,@10236 697,0,@10671 786,0,@9475 834,0,@9493 1001,0,@10378 9199:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4380| 9200:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4381| 9201:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4382| 9202:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4383| 9203:D9,808|483b65187306ff5558ca0907534152ff30ff702041ff3141ff710848ba3851d1f1c27f0000488b442418ff15380300004989c54d8b75404d8b5d60f64424200175634c8b6c24204d8b6d004d8d67e04c3b65107306ff5550ca00684d89e749c74424f8030000004d896c24104c8b6c24104d896c240849bd18447df1c27f00004d892c244d8d6ff04c3b6d107306ff5550ca00584d89ef49c745f8010000004d896500eb244d8d6ff04c3b6d107306ff5550ca00484d89ef49c745f8010000004c8b6424104d89650041554d8d6fd84c3b6d107306ff5550ca00484d89ef49c745f8040000004d8975184c8b7424104d8975104c8b24244d89e64d89650849bc68447df1c27f00004d8965004d8d67d84c3b65107306ff5550ca00684d89e749c74424f8040000004d895c24184c8b5c24084d895c24104d89f64d8974240849be20457df1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e41564c8b7424404983fe037f14488d64244848b8408ed6f1c27f0000e9ff00000049c7c5010000004d8d77f04c3b75107306ff5550ca00204d89f749c746f80100000041c646ff404d892e41564d8d47e84c3b45107303ff55504d89c749c740f8020000004c8b34244d89700849bed8457df1c27f00004d8930488b44243848c7c301000000ff15410100004c8b3424498b06488d64240848bb588ed6f1c27f0000ff151d0100004989c641566a01f64424080175654c8b6c24084d8b75004d89ed41ff7508498b06498b5e08ff7424184c8b4424604c8b4c24284c8b542430ff15d70000004c8b6c24084d89ee4983fd0175054989c4eb0c4c89f3ff15b30000004989c4415d4c8924244c896c2408483b65187303ff5558eb94584883c450ff15870000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bdc07dd1f1c27f00004d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100300000048c740080100000048c70001000000c3f4|@19732,1,@4392,@9211,@9212,@9210,@5119,@4953,@5076|29,0,@10448 120,0,@9204 256,0,@9205 321,0,@9206 423,0,@19726 514,0,@9207 557,0,@19727 733,0,@10788 9204:D4,32|483b65187305ff5558cd05488b5a084c8b4210ff251f000000f4000000000000|@10453,1,@4385,@5098| 9205:D3,144|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c641f6c6017557488d6424084d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8b642408488d6424084d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b742408498b561058488d642408ff22f40000|@19725,1,@4386| 9206:D3,144|483b65187305ff5558cd0552504c8b742408498b5618488b0424ff124989c641f6c6017557488d6424084d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d8b642408488d6424084d8966084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b742408498b561058488d642408ff22f40000|@19725,1,@4387| 9207:D3,144|483b65187306ff5558ca0d014989c64c89c0f6c30175774c8b234c8b6b084d8d57e84c3b55107306ff5550ca0d704d89d749c742f8020000004d8962084d89324c8b62084d89e34d8b0c244d8d67e84c3b65107306ff5550ca0d6e4d89e749c74424f8020000004d894c24084d8914244d892349c7c4010000004c89e04c89eb483b65187306ff5558ca0d40eb84c3f4|@10041,1,@4388| 9208:D3,64|483b65187305ff5558cd014989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849bef8467df1c27f00004c8930c3f400000000|@19729,1,@4390|47,0,@9209 9209:D3,152|483b65187305ff5558cd054c8b304c8b6a084d8b5d004d8b2b4e8d2c6d010000004d8b264e8d2465010000004d3bec73054c89e9eb034c89e1498d7308498d7e0848d1e9483bc9f3a67214770949c7c601000000eb1049c7c603000000eb0749c7c6ffffffff4983fe0175154d3bec760848c7c003000000c348c7c001000000c34983fe017e0848c7c003000000c348c7c001000000c3f4|@19728,1,@4389| 9210:D18,3328|483b65187306ff5558ca09074c8b2b4d89ee4c3b2d6f0d000075584c3b355e0d0000753f488b43104c89c34883eb02711048b8d0c6d0f1c27f0000488b5d08ff234c8b60084c8b70184883fb017f0f49bd4847d1f1c27f0000e9490c0000e94509000048b87810d1f1c27f0000488b5d08ff234d89f54c3b35fb0c0000755b4c3b2dea0c000075424c8b73104c89c34883eb02711048b8d0c6d0f1c27f0000488b5d08ff234d8b26498b46104d8b76184883fb017f0f49bd4847d1f1c27f0000e98e080000e90b05000048b87810d1f1c27f0000488b5d08ff234d89ee4c3b2d840c00000f85930000004c3b356f0c0000757a488b431048ba3830d3f1c27f00004c8b7424084d89d14c89c34d89f0ff15430c00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb847d1f1c27f00004c8930c2080048b87810d1f1c27f0000488b5d08ff234d89f54c3b35c90b00000f85980000004c3b2db40b0000757f488b43104c8b700841f6c601750a48c7c001000000c208004c89c34d89c84d89d1ff15830b00004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb847d1f1c27f00004c8930c2080048b87810d1f1c27f0000488b5d08ff234d89ee4c3b2d090b00000f85960300004c3b35f40a00000f85790300004c8b731041ff364d8b76084d8b264d89e54983fc030f8508010000498b460848bae81cd1f1c27f000048c7c303000000ff15b00a00004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4076d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000e9190100004983fd010f8505010000498b460848bae81cd1f1c27f000048c7c303000000ff15960900004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5876d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000eb0a49bd7076d1f1c27f00004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb847d1f1c27f00004c8930c2080048b87810d1f1c27f0000488b5d08ff2348c7c001000000c2080041f6c60175414d8b1e4d8b6e084d8b034983f80175204d8d77f04c3b75107306ff5550ca091e4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0956ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09564d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09364d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09664d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09364d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09464d89ef49c745f80200000049bca08dd6f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca09264d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca09464d89ef49c745f8020000004d89750849bef86ed1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca09264d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c7060100000041564883eb027115488d64240848b8d0c6d0f1c27f0000488b5d08ff234c8b70084c3b35f80400007502eb334d8b2e4e8d2c6d010000004983fd01753a49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb1848ba208fd6f1c27f000049c7c003000000ff124989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb847d1f1c27f00004c8930c2080041f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bc6030d3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849beb080d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415648ba208fd6f1c27f000049c7c00300000049c7c201000000ff124989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849beb847d1f1c27f00004c8930c20800f4000000|@19733,1,@4395,@9493,@4983,@4983,@4624,@4624,@9177,@4625,@4625,@6201,@4626,@4626,@4628,@4628,@4627,@4627|51,0,@9475 81,0,@10373 101,0,@9991 151,0,@9475 184,0,@10373 204,0,@9991 249,0,@13933 351,0,@10378 367,0,@9991 519,0,@10378 535,0,@9991 611,0,@10077 745,0,@10236 790,0,@10729 885,0,@10077 1019,0,@10236 1064,0,@10730 1142,0,@10731 1273,0,@10236 1453,0,@10378 1469,0,@9991 1873,0,@19723 1922,0,@10236 1966,0,@10671 2055,0,@9475 2103,0,@9493 2137,0,@19731 2269,0,@10378 2458,0,@10378 2852,0,@13934 2901,0,@10236 2945,0,@10808 3023,0,@19731 3121,0,@10378 3310,0,@10378 9211:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8a07cd1f1c27f0000c3f4000000|@10402,1,@4393|75,0,@10779 9212:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4394| 9213:D3,48|483b65187305ff5558cd014c8b70084d8b2e4983fd037505498b4608c348b8a88fd6f1c27f0000488b5d08ff23f40000|@19738,1,@4396|31,0,@19735 9214:D4,24|483b65187305ff5558cd01488b4018ff251b000000f40000|@19740,1,@4397,@5717| 9215:D4,344|488dbc2440ffffff483b7d187305ff5560cd016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a016a014889e3ff1530010000ff3424ff742410ff742420ff742430ff742440ff7424504c8b7424604c8b6c24684c8b6424704c8b5c24784c8b9424800000004c8b8c24880000004c8b842490000000488bbc2498000000488bb424a0000000488b9424a8000000488b8c24b0000000488b9c24b8000000498d8768ffffff483b45107306ff5550cace7f4989c748c740f81200000048899888000000488988800000004889507848897070488978684c8940604c8948584c8950504c8958484c8960404c8968384c8970304c8b34244c897028488d6424084c8b34244c897020488d6424084c8b34244c897018488d6424084c8b34244c897010488d6424084c8b34244c897008488d6424084c8b34244c8930488da42498000000c3f400000000000000|@19763,1,@4417,@9216| 9216:D5,552|483b65187305ff5558cd094c8b70104d8b2e4d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bce85a7df1c27f00004d892641564d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bc385c7df1c27f00004d892641564d8d77e04c3b75107306ff5550ca09204d89f749c746f8030000004d896e104989460849bc785e7df1c27f00004d89264156498d57e0483b55107306ff5550ca09204989d748c742f8030000004c896a104889420849bec85f7df1c27f00004c8932498d77e0483b75107306ff5550ca0d204989f748c746f8030000004c896e104889460849be08627df1c27f00004c89364d8d77e04c3b75107306ff5550ca4d204d89f749c746f8030000004d896e104989460849bd38657df1c27f00004d892e415648b8e092d6f1c27f000048b93893d6f1c27f000048bf4893d6f1c27f000049b85893d6f1c27f000049b95893d6f1c27f0000ff35d6000000ff35c800000049ba5094d6f1c27f000049bb6094d6f1c27f000049bc5893d6f1c27f000049bd5893d6f1c27f000049be7094d6f1c27f000048890348894b08488953104889731848897b204c8943284c894b304c8b4c24084c894b384c8b4c24104c894b404c8b0c244c894b48488d6424184c8953504c895b584c8b5c24104c895b604c8963684c8b6424084c8963704c896b784c89b3800000004c8b34244c89b388000000488d64241848c7c001000000c3f40000|@19764,1,@4418,@19755,@19755|55,0,@9217 105,0,@9218 155,0,@9219 205,0,@9220 253,0,@9223 301,0,@9226 316,0,@19751 326,0,@19753 336,0,@19754 346,0,@19755 356,0,@19755 378,0,@19760 388,0,@19761 398,0,@19755 408,0,@19755 418,0,@19762 9217:D7,264|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15180100004989c641f6c60175054d8b36eb5249c7c60100000041f6c6017538498b064c8b3424498b5e08488d642408ff15df0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158d00000075464d89de4c3b357900000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e935fffffff400000000000000|@19742,1,@4398,@4625,@4625,@5416,@4914|213,0,@9991 9218:D7,504|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15080200004989c641f6c60175084d8b36e93801000049c7c60100000041f6c6010f851a0100004d8b364c8b2c244d8b5d084d89dc4d8b5b10498b5b204d89e5488d6424084d8b65004d8b2c244e8d2c6d010000004983fd01750f49b800d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b153b0100000f87910000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff15f60000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b159400000075464d89de4c3b358000000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e94ffefffff4000000000000ffffffffffffff01|@19743,1,@4399,@4626,@4626,@5343,@4914|120,0,@9571 334,0,@9487 446,0,@9991 9219:D7,264|483b65187305ff5558cd054989c6524c8b2c24498b45104c89f3ff15180100004989c641f6c60175054d8b36eb5249c7c60100000041f6c6017538498b064c8b3424498b5e08488d642408ff15df0000004989c6498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c3488d64240848c7c001000000c341f6c601756e4d8b264d8b6e084d8b14244d89d34c3b158d00000075464d89de4c3b357900000075254d8b6c24104d8d77f04c3b75107306ff5550ca00204d89f749c746f8010000004d892eeb2d488d64240848b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb8c49c7c601000000e935fffffff400000000000000|@19744,1,@4400,@4628,@4628,@5378,@4914|213,0,@9991 9220:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b8c091d6f1c27f0000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@19746,1,@4402,@9222,@4953|29,0,@19745 9221:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4401,@4625,@4625|139,0,@9991 9222:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff700841ff36498b4608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@4403,@5416| 9223:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b82092d6f1c27f0000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@19748,1,@4405,@9225,@4953|29,0,@19747 9224:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4404,@4626,@4626|139,0,@9991 9225:D4,408|483b65187305ff5558cd0953a8010f856b0100004c8b30ff700841ff364d8b76084c8b6c24104d8b6510498b5c24204d89ed4d8b65004d8b2c244e8d2c6d010000004983fd01750f49b800d9d0f1c27f0000e99c0000004d89eb4983c3024c89d84883c01e49c7c21100000048d1e849d1ea4833d249f7f24c8d1445010000004c3b15090100000f87dd0000004d89d14e8d048d0400000049f7d84d03c74c3b451072054d3bc77206ff5550ca087c4d89c749d1e94d8948f841c640ff414983ea024bc74490fc0000000049d1eb4d89184c89e9498d742408498d780848d1e9f3a44983c51049d1ed43c604282e418060ffbf4c89f0ff15b40000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e8c5feffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64241848b8f8c7d0f1c27f0000488b5d08ff23488d64240848c7c001000000c3f4000000ffffffffffffff01|@10112,1,@4406,@5343|74,0,@9571 369,0,@9487 9226:D5,64|483b65187305ff5558cd05524c8b3424498b461048c7c30100000049b88092d6f1c27f0000ff15350000004c8b3424498b5e08488d642408ff251a000000f400|@19750,1,@4408,@9228,@4953|29,0,@19749 9227:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4407,@4628,@4628|139,0,@9991 9228:D4,168|483b65187305ff5558cd0953a8010f85860000004c8b30ff700841ff36498b4608488b5c2410ff15940000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d6424084156488b442408488b5c2410e895ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642418c3488d64240848c7c001000000c3f4|@10112,1,@4409,@5378| 9229:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4410| 9230:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4411| 9231:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4412| 9232:D3,32|483b65187305ff5558cd0148b86893d6f1c27f0000488b5d08ff23f400000000|@19759,1,@4413|13,0,@19756 9233:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4414| 9234:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4415| 9235:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19752,1,@4416| 9236:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@19767,1,@4419| 9237:D4,992|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849be906d7df1c27f00004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc286e7df1c27f00004d89264c892c244c89742408eb1a49be8895d6f1c27f00004d8b2e4c892c244d8b76084c89742408415e415d4d8d4fe84c3b4d107306ff5550ca09604d89cf49c741f8020000004d8969084d89314c8b60084c8b70184883fb017f0b48b84847d1f1c27f0000c341f6c60175414d8b1e4d8b6e084d8b134983fa0175204d8d77f04c3b75107306ff5550ca091a4d89f749c746f8010000004d891eeb184d89ee483b65187306ff5558ca0952ebb949c7c60100000041f6c601757b4d8b1e4d89dd4d8b1b4983fb01750949c7c303000000eb0749c7c3010000004983fb0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca09524d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca09324d89f749c746f8020000004d89660849c706070000004d8d67e84c3b65107306ff5550ca09624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca09324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f80200000049bc6030d3f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca09224d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca09424d89ef49c745f8020000004d89750849beb080d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca09224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c70601000000415649c7c00300000049c7c201000000ff15dc0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849beb847d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f4000000|@19772,1,@4424,@9203|71,0,@9238 116,0,@9239 140,0,@19769 218,0,@10373 607,0,@13934 656,0,@10236 700,0,@10808 870,0,@10378 9238:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4420| 9239:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4421| 9240:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4422| 9241:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4423| 9242:D4,24|483b65187305ff5558cd01488b4018ff251b000000f40000|@19774,1,@4425,@5717| 9243:D3,24|483b65187305ff5558cd01488b4008c3f400000000000000|@19776,1,@4426| 9244:D4,216|483b65187305ff5558cd014989c6498b06498b5e084d8b76106a016a0141f6c60175674d8b264d8d6fe84c3b6d107306ff5550ca09104d89ef49c745f8020000004d89650849bed8707df1c27f00004d8975004d8d77e84c3b75107306ff5550ca09304d89f749c746f8020000004d89660849bc70717df1c27f00004d89264c892c244c89742408eb1a49beb896d6f1c27f00004d8b2e4c892c244d8b76084c89742408415e415d4d8d47e84c3b45107306ff5550ca09604d89c749c740f8020000004d8968084d8930ff2520000000f400000000000000|@19788,1,@4434,@9249|71,0,@9245 116,0,@9246 140,0,@19778 9245:D3,112|483b65187305ff5558cd054c8b7208498b5670ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f400|@19676,1,@4427| 9246:D3,120|483b65187305ff5558cd054c8b7208498b9688000000ff124989c641f6c60175484d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348c7c001000000c3f4000000000000|@19676,1,@4428| 9247:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4429| 9248:D3,24|483b65187305ff5558cd0148c7c001000000c3f400000000|@19676,1,@4430| 9249:D11,2144|483b65187306ff5558ca0901534150ff30ff7008ff7018ff70204c8b7424284c89f34983fe017f10488d64243048b84847d1f1c27f0000c34c8b742418498b4610ff304d89f641ff364c8b34244d89f54c3b35590800007502eb384d89ed4d8b75004e8d3475010000004983fe01752f49bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a6750c49c7c601000000e9c10000004d8d6fe84c3b6d107305ff5550cd094d89ef49c745f8020000004c8b34244d89750849c74500070000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049bca08dd6f1c27f00004d8966084d892e4d8d6fd04c3b6d107306ff5550ca09404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c74500010000004d8d77e84c3b75107306ff5550ca09204d89f749c746f80200000049bca047d1f1c27f00004d8966084d892e41564889db4883eb027115488d64244848b8d0c6d0f1c27f0000488b5d08ff234c8b68084c3b2d1d0700007502eb344d8b75004e8d3475010000004983fe01754049bed8c8d0f1c27f0000498d7508498d7e0848c7c100000000483bc9f3a67402eb1e49c7c0010000004c8b4c243849c7c201000000ff15c40600004989c6eb264d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c70607000000498d5fe8483b5d107306ff5550ca00404989df48c743f80200000049bdf096d6f1c27f00004c896b084c89334883fb017504415eeb12488b0424ff15510600004989c6488d64240841564c8b7424084d89f54c3b35300600007502eb414d89ed4d8b75004e8d3475010000004983fe010f85d800000049bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67405e9b000000048ba3851d1f1c27f0000488b442410ff15ce0500004989c64d8b6e404d8b5e604d8d77e04c3b75107306ff5550ca00284d89f749c746f8030000004d896e104c8b6c24384d89ec4d896e0849bd587b7df1c27f00004d892e4d8d6fe04c3b6d107306ff5550ca00584d89ef49c745f8030000004d895d104d89e44d89650849bc087c7df1c27f00004d8965004d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d8969084d8931eb6d4c8b6424384d8b34244d8d6fd84c3b6d107306ff5550ca00504d89ef49c745f8040000004c8b5c24084d895d184d89e44d8965104c8b6424304d89650849bcb87c7df1c27f00004d8965004d8d4fe84c3b4d107306ff5550ca00604d89cf49c741f8020000004d8969084d89314c8b74241841f6c60175424d8b264d8b6e084d8b1c244983fb0175204d8d77f04c3b75107306ff5550ca00124d89f749c746f8010000004d8926eb184d89ee483b65187306ff5558ca0042ebb849c7c60100000041f6c601757c4d8b264d89e54d8b24244983fc01750949c7c403000000eb0749c7c4010000004983fc0375564d89ee4d8b6e084d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849c706010000004d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f80200000049c74508010000004d897500eb0749c7c5010000004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004c8b6424284d89660849c706070000004d8d67e84c3b65107306ff5550ca00624d89e749c74424f80200000049c7442408010000004d8934244d8d77d04c3b75107306ff5550ca00324d89f749c746f8050000004d8966204d896e1849c746100100000049c746080100000049c706010000004d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f80200000049bc8897d6f1c27f00004d8965084d8975004d8d77e84c3b75107306ff5550ca00224d89f749c746f8020000004d896e0849bd4032d1f1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca00424d89ef49c745f8020000004d89750849be4880d1f1c27f00004d8975004d8d77d04c3b75107306ff5550ca00224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004d8d67d04c3b65107306ff5550ca00424d89e749c74424f8050000004c8b2c244d896c2420488d64240849c74424180100000049c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f80200000049c74508010000004d8965004d8d67e84c3b65107306ff5550ca00624d89e749c74424f8020000004d896c240849bdd830d3f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00524d89ef49c745f8020000004d8965084d8975004d8d77d04c3b75107306ff5550ca00224d89f749c746f8050000004d896e2049c746180100000049c746100100000049c746080100000049c706010000004156488b5c24404883eb027115488d64244848b8d0c6d0f1c27f0000488b5d08ff23488b4424204c8b70084c3b35590100007502eb334d8b2e4e8d2c6d010000004983fd01753b49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb1949c7c00300000049c7c201000000ff15060100004989c5eb274d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bed830d3f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c700010000004883c440c3f4|@19789,1,@4435,@9203,@9493,@5076,@9493,@9253,@9203,@9493,@9493|47,0,@10373 114,0,@9493 230,0,@19723 337,0,@10377 370,0,@9475 419,0,@9493 548,0,@19781 639,0,@9493 679,0,@10448 754,0,@9250 805,0,@9251 916,0,@9252 1354,0,@19786 1403,0,@10236 1447,0,@10805 1672,0,@13938 1801,0,@9475 1854,0,@9493 2021,0,@13938 9250:D3,136|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c641f6c601754d488d6424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7424084d8b7608498b1658488d642408ff22f400|@19785,1,@4431| 9251:D3,136|483b65187305ff5558cd0552504c8b742408498b5610488b0424ff124989c641f6c601754d488d6424104d8b2e4d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7424084d8b7608498b560858488d642408ff22f4|@19785,1,@4432| 9252:D3,168|483b65187305ff5558cd054c8b72184d89f4493bc67502eb364c8b304e8d3475010000004d89e54d8b24244e8d2465010000004d3bf4755f4d89ee498b0e488d7008498d7d08483bc9f3a67402eb484d8d77e84c3b75107305ff5550cd044d89f749c746f80200000049c74608010000004c8b6a084d892e498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c34c8b7210498b5608ff22f4000000000000|@19785,1,@4433| 9253:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4436| 9254:D3,48|483b65187305ff5558cd014c8b70104d8b2e4983fd037505498b4608c348b84098d6f1c27f0000488b5d08ff23f40000|@19794,1,@4437|31,0,@19791 9255:D4,24|483b65187305ff5558cd01488b4020ff251b000000f40000|@19796,1,@4438,@5717| 9256:D3,16|483b65187305ff5558cd01488b00c3f4|@19798,1,@4439| 9257:D5,816|483b65187305ff5558cd01ff304c8b70084d8b264d89e54983fc030f8508010000498b460848bae81cd1f1c27f000048c7c303000000ff15140300004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd4076d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000e9190100004983fd010f8505010000498b460848bae81cd1f1c27f000048c7c303000000ff15fa0100004989c64d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849be4032d1f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849bd5876d1f1c27f00004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f8050000004d89752049c745180100000049c745100100000049c745080100000049c7450001000000eb0a49bd7076d1f1c27f00004d8d67e84c3b65107306ff5550ca00204d89e749c74424f8020000004c8b34244d89742408488d64240849c70424070000004d8d77e84c3b75107306ff5550ca00304d89f749c746f80200000049c74608010000004d89264d8d67e84c3b65107306ff5550ca00604d89e749c74424f8020000004d8974240849be4032d1f1c27f00004d8934244d8d77e84c3b75107306ff5550ca00304d89f749c746f8020000004d8966084d892e498d47d0483b45107306ff5550ca00404989c748c740f8050000004c89702048c740180100000048c740100100000048c740080100000048c70001000000c3f40000000000|@19800,1,@4440,@4983,@4983|39,0,@10077 173,0,@10236 218,0,@10729 313,0,@10077 447,0,@10236 492,0,@10730 570,0,@10731 701,0,@10236 9258:D3,680|483b65187305ff5558cd014d8d77e84c3b75107305ff5550cd014d89f749c746f8020000004989460849bd20857df1c27f00004d892e41564d8d4fe84c3b4d107305ff5550cd014d89cf49c741f8020000004989410849be90867df1c27f00004d8931498d7fe8483b7d107306ff5550ca01024989ff48c747f8020000004889470849be00887df1c27f00004c89374d8d57e84c3b55107306ff5550ca81024d89d749c742f8020000004989420849be70897df1c27f00004d8932498d5fe8483b5d107306ff5550ca81064989df48c743f8020000004889430849bee08a7df1c27f00004c8933498d4fe8483b4d107306ff5550ca89064989cf48c741f8020000004889410849be508c7df1c27f00004c89314d8d77e84c3b75107306ff5550ca8b064d89f749c746f8020000004989460849bdc08d7df1c27f00004d892e4d8d67e84c3b65107306ff5550ca8b464d89e749c74424f802000000498944240849bd48907df1c27f00004d892c244d8d5fe84c3b5d107306ff5550ca8b564d89df49c743f8020000004989430849bdd0927df1c27f00004d892b4d8d6fe84c3b6d107306ff5550ca8b5e4d89ef49c745f8020000004989450849b858957df1c27f00004d894500498d57e8483b55107306ff5550ca8b7e4989d748c742f8020000004889420849b8e0977df1c27f00004c89024d8d47e84c3b45107306ff5550ca8f7e4d89c749c740f8020000004989400848be689a7df1c27f0000498930498d77e8483b75107306ff5550ca8f7f4989f748c746f8020000004889460848b8f09c7df1c27f0000488906498d4790483b45107306ff5550cace7f4989c748c740f80d00000048895860488948584889505048897048488978404c8940384c8948304c8950284c8b14244c895020488d6424084c8958184c8960104c8968084c8930c3f400000000|@19846,1,@4606|43,0,@9259 88,0,@9261 132,0,@9263 176,0,@9265 220,0,@9267 264,0,@9269 308,0,@9271 354,0,@9274 399,0,@9277 443,0,@9280 488,0,@9283 532,0,@9286 576,0,@9289 9259:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bea8857df1c27f00004c8930ff251d000000f400000000|@10015,1,@4442,@4916|66,0,@9260 9260:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4441,@4624,@4624,@4914|126,0,@9991 9261:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be18877df1c27f00004c8930ff251d000000f400000000|@10015,1,@4444,@4916|66,0,@9262 9262:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4443,@4625,@4625,@4914|126,0,@9991 9263:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be88887df1c27f00004c8930ff251d000000f400000000|@10015,1,@4446,@4916|66,0,@9264 9264:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4445,@4626,@4626,@4914|126,0,@9991 9265:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bef8897df1c27f00004c8930ff251d000000f400000000|@10015,1,@4448,@4916|66,0,@9266 9266:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4447,@4627,@4627,@4914|126,0,@9991 9267:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be688b7df1c27f00004c8930ff251d000000f400000000|@10015,1,@4450,@4916|66,0,@9268 9268:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4449,@4628,@4628,@4914|126,0,@9991 9269:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bed88c7df1c27f00004c8930ff251d000000f400000000|@10015,1,@4452,@4916|66,0,@9270 9270:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4451,@4629,@4629,@4914|126,0,@9991 9271:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be508e7df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4455,@4916|73,0,@9272 9272:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc08c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4453,@4931,@9273,@4914|58,0,@9594 72,0,@4624 9273:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4454,@4624| 9274:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bed8907df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4458,@4916|73,0,@9275 9275:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc18c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4456,@4931,@9276,@4914|58,0,@9594 72,0,@4625 9276:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4457,@4625| 9277:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be60937df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4461,@4916|73,0,@9278 9278:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc28c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4459,@4931,@9279,@4914|58,0,@9594 72,0,@4626 9279:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4460,@4626| 9280:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bee8957df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4464,@4916|73,0,@9281 9281:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc38c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4462,@4931,@9282,@4914|58,0,@9594 72,0,@4627 9282:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4463,@4627| 9283:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be70987df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4467,@4916|73,0,@9284 9284:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc48c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4465,@4931,@9285,@4914|58,0,@9594 72,0,@4628 9285:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4466,@4628| 9286:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef89a7df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4470,@4916|73,0,@9287 9287:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc58c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4468,@4931,@9288,@4914|58,0,@9594 72,0,@4629 9288:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4469,@4629| 9289:D5,88|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be809d7df1c27f00004c8930ff152c000000ff251e000000f40000000000|@19802,1,@4473,@9292,@4916|59,0,@9290 9290:D4,40|483b65187305ff5558cd05488b420849b8e099d6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4472,@4953|17,0,@19801 9291:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4471,@4625,@4625|139,0,@9991 9292:D3,88|483b65187305ff5558cd01a801753e4c8b30488b400841ff36e8e2ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000|@10112,1,@4474| 9293:D3,952|483b65187305ff5558cd094d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd28a37df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd98a47df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd08a67df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd78a77df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bde8a87df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bd58aa7df1c27f00004d892e41564d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849bdc8ab7df1c27f00004d892e41564d8d57e84c3b55107305ff5550cd094d89d749c742f8020000004989420849be50ae7df1c27f00004d89324d8d67e84c3b65107306ff5550ca09044d89e749c74424f802000000498944240849bed8b07df1c27f00004d8934244d8d4fe84c3b4d107306ff5550ca09144d89cf49c741f8020000004989410849be60b37df1c27f00004d89314d8d77e84c3b75107306ff5550ca09164d89f749c746f8020000004989460849bde8b57df1c27f00004d892e4d8d6fe84c3b6d107306ff5550ca09564d89ef49c745f8020000004989450849bb70b87df1c27f00004d895d00498d4fe8483b4d107306ff5550ca09764989cf48c741f8020000004889410849bbf8ba7df1c27f00004c8919498d77e8483b75107306ff5550ca0b764989f748c746f8020000004889460849bbc0bc7df1c27f00004c891e498d7fe8483b7d107306ff5550ca4b764989ff48c747f8020000004889470849bb88be7df1c27f00004c891f498d57e8483b55107306ff5550cacb764989d748c742f8020000004889420849bb50c07df1c27f00004c891a4d8d5fe84c3b5d107306ff5550cacf764d89df49c743f8020000004989430849b818c27df1c27f00004d89034d8d47e84c3b45107306ff5550cacf7e4d89c749c740f8020000004989400848b8e0c37df1c27f000049890048890b488953084889731048897b184c8943204c8b04244c894328488d6424084c894b304c8953384c895b404c8963484c8b6424284c8963504c8b6424104c8963584c8b6424204c8963604c896b684c8b6c24184c896b704c8973784c8b34244c89b380000000488d6424084c8b34244c89b388000000488d64242848c7c001000000c3f4000000000000|@19810,1,@4524|43,0,@9294 88,0,@9296 133,0,@9298 178,0,@9300 223,0,@9302 268,0,@9304 313,0,@9306 358,0,@9309 404,0,@9312 449,0,@9315 493,0,@9318 537,0,@9321 582,0,@9324 626,0,@9327 670,0,@9330 714,0,@9333 758,0,@9336 802,0,@9339 9294:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849beb0a37df1c27f00004c8930ff251d000000f400000000|@10015,1,@4477,@4916|66,0,@9295 9295:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4476,@4624,@4624,@4914|126,0,@9991 9296:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be20a57df1c27f00004c8930ff251d000000f400000000|@10015,1,@4479,@4916|66,0,@9297 9297:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4478,@4625,@4625,@4914|126,0,@9991 9298:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be90a67df1c27f00004c8930ff251d000000f400000000|@10015,1,@4481,@4916|66,0,@9299 9299:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4480,@4626,@4626,@4914|126,0,@9991 9300:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be00a87df1c27f00004c8930ff251d000000f400000000|@10015,1,@4483,@4916|66,0,@9301 9301:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4482,@4627,@4627,@4914|126,0,@9991 9302:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849be70a97df1c27f00004c8930ff251d000000f400000000|@10015,1,@4485,@4916|66,0,@9303 9303:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4484,@4628,@4628,@4914|126,0,@9991 9304:D4,88|483b65187305ff5558cd054989c54c8b62084d89e6498b1c244d8b7608498d47e0483b45107306ff5550ca08604989c748c740f8030000004c8968104c89700849bee0aa7df1c27f00004c8930ff251d000000f400000000|@10015,1,@4487,@4916|66,0,@9305 9305:D6,168|483b65187305ff5558cd05488b4208488b5a10ff15b70000004989c641f6c60175054d8b36eb0848c7c001000000c341f6c60175684d8b264d8b6e084d8b14244d89d34c3b157e00000075404d89de4c3b356a00000075244d8b742410498d47f0483b45107306ff5550ca00404989c748c740f8010000004c8930c348b87810d1f1c27f0000488b5d08ff234d89ee483b65187306ff5558ca0040eb9248c7c001000000c3f40000|@10001,1,@4486,@4629,@4629,@4914|126,0,@9991 9306:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be58ac7df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4490,@4916|73,0,@9307 9307:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc08c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4488,@4931,@9308,@4914|58,0,@9594 72,0,@4624 9308:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4489,@4624| 9309:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bee0ae7df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4493,@4916|73,0,@9310 9310:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc18c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4491,@4931,@9311,@4914|58,0,@9594 72,0,@4625 9311:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4492,@4625| 9312:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be68b17df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4496,@4916|73,0,@9313 9313:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc28c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4494,@4931,@9314,@4914|58,0,@9594 72,0,@4626 9314:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4495,@4626| 9315:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849bef0b37df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4499,@4916|73,0,@9316 9316:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc38c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4497,@4931,@9317,@4914|58,0,@9594 72,0,@4627 9317:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4498,@4627| 9318:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be78b67df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4502,@4916|73,0,@9319 9319:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc48c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4500,@4931,@9320,@4914|58,0,@9594 72,0,@4628 9320:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4501,@4628| 9321:D4,96|483b65187305ff5558cd054c8b284c8b60084c8b5a084d89de498b1b4d8b7608498d47d8483b45107306ff5550ca08704989c748c740f8040000004c8960184c8968104c89700849be00b97df1c27f00004c8930ff251e000000f40000000000|@10039,1,@4505,@4916|73,0,@9322 9322:D6,216|483b65187305ff5558cd05524d8d6fd84c3b6d107303ff55504d89ef49c745f80400000049c74518010000004c8b34244d8b66184d89651049bc28dbd0f1c27f00004d89650849bc58c1d0f0c27f00004d89650041554d89f6498b46084d89f6498b5e10ff15960000004989c64983fe01752e4d8d47e84c3b45107303ff55504d89c749c740f80200000049c74008010000004c8b34244d8930488d642408eb15498b06488b1c24ff154a0000004989c0488d6424084c8b3424498b46084d89f6498b5e10488d642408ff2520000000f400000000000000|@10018,1,@4503,@4931,@9323,@4914|58,0,@9594 72,0,@4629 9323:D4,176|483b65187305ff5558cd09a8017574ff30488b40084c8b34244d8b364c3b35a5000000752a488d6424084d8d77e84c3b75107305ff5550cd094d89f749c746f8020000004989460849891e4c89f0c3e8acffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3498d47e8483b45107305ff5550cd084989c748c740f80200000048c7400801000000488918c3f4000000000000|@10038,1,@4504,@4629| 9324:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be78bb7df1c27f00004c8930ff251c000000f4000000|@10045,1,@4508,@4916|59,0,@9325 9325:D4,40|483b65187305ff5558cd05488b420849b8489ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4507,@4953|17,0,@19804 9326:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4506,@4624,@4624|139,0,@9991 9327:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be40bd7df1c27f00004c8930ff251c000000f4000000|@10045,1,@4511,@4916|59,0,@9328 9328:D4,40|483b65187305ff5558cd05488b420849b8589ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4510,@4953|17,0,@19805 9329:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4509,@4625,@4625|139,0,@9991 9330:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be08bf7df1c27f00004c8930ff251c000000f4000000|@10045,1,@4514,@4916|59,0,@9331 9331:D4,40|483b65187305ff5558cd05488b420849b8689ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4513,@4953|17,0,@19806 9332:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4512,@4626,@4626|139,0,@9991 9333:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849bed0c07df1c27f00004c8930ff251c000000f4000000|@10045,1,@4517,@4916|59,0,@9334 9334:D4,40|483b65187305ff5558cd05488b420849b8789ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4516,@4953|17,0,@19807 9335:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4515,@4627,@4627|139,0,@9991 9336:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be98c27df1c27f00004c8930ff251c000000f4000000|@10045,1,@4520,@4916|59,0,@9337 9337:D4,40|483b65187305ff5558cd05488b420849b8889ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4519,@4953|17,0,@19808 9338:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4518,@4628,@4628|139,0,@9991 9339:D4,80|483b65187305ff5558cd054c8b6a084d89ee498b5d004d8b7608498d47e8483b45107306ff5550ca08404989c748c740f8020000004c89700849be60c47df1c27f00004c8930ff251c000000f4000000|@10045,1,@4523,@4916|59,0,@9340 9340:D4,40|483b65187305ff5558cd05488b420849b8989ad6f1c27f000048c7c301000000ff251a000000f400|@10043,1,@4522,@4953|17,0,@19809 9341:D5,184|483b65187306ff5558ca09014989c64c89c0f6c3010f85980000004c8b234c8b6b084d8b14244d89d34c3b15a800000075674c3b1d97000000754e4d8b6424104d8d5fe84c3b5d107306ff5550ca09704d89df49c743f8020000004d8963084d89334d8d67e84c3b65107306ff5550ca09684d89e749c74424f80200000049894424084d891c24eb1348b87810d1f1c27f0000488b5d08ff234989c44c89e04c89eb483b65187306ff5558ca0940e95fffffffc3f4000000|@10041,1,@4521,@4629,@4629|139,0,@9991 9342:D3,312|483b65187306ff5558ca0903a8010f8517010000f6c3010f850e0100004c8b20488b40084c8b33488b5b084d8b2c244d8b6424084d8d57e04c3b55107306ff5550ca09734d89d749c742f8030000004d8942104d89620849c702050000004d8d5fe84c3b5d107306ff5550ca09674d89df49c743f8020000004d89730849c703030000004d8d67e84c3b65107306ff5550ca092f4d89e749c74424f8020000004d894c240849c70424010000004d8d77c04c3b75107306ff5550ca093f4d89f749c746f80700000049c746300100000049c746280100000048bf4059d1f1c27f000049897e204d8956184d895e104d8966084d892e4156e804ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12767,1,@4525|218,0,@10496 9343:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4526|32,0,@9475 87,0,@11193 9344:D3,160|483b65187305ff5558cd01a8010f8583000000ff30488b40084c8b34244d8b2e4983fd0d75664d89f64d8b76104983e6094983fe01750949c7c603000000eb0749c7c6010000004983f6024983fe037534e8aaffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3488d642408eb05488d642408e96affffff48c7c001000000c3f400|@9893,1,@4527| 9345:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4528|32,0,@9475 87,0,@11193 9346:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4529|32,0,@9475 87,0,@11193 9347:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4530|33,0,@9475 88,0,@11193 9348:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4531|33,0,@9475 88,0,@11193 9349:D3,312|483b65187306ff5558ca0903a8010f8517010000f6c3010f850e0100004c8b20488b40084c8b33488b5b084d8b2c244d8b6424084d8d57e04c3b55107306ff5550ca09734d89d749c742f8030000004d8942104d89620849c702050000004d8d5fe84c3b5d107306ff5550ca09674d89df49c743f8020000004d89730849c703030000004d8d67e84c3b65107306ff5550ca092f4d89e749c74424f8020000004d894c240849c70424010000004d8d77c04c3b75107306ff5550ca093f4d89f749c746f80700000049c746300100000049c746280100000048bf4059d1f1c27f000049897e204d8956184d895e104d8966084d892e4156e804ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f400000000|@12767,1,@4532|218,0,@10496 9350:D4,152|483b65187305ff5558cd01a801757c4c8b30ff7008498b0641ff7608ff158e0000004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b24244d896608488d6424084d892e4156488b442408e8a4ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642410c348c7c001000000c3f400000000|@10112,1,@4533,@5162| 9351:D3,96|483b65187305ff5558cd094989c64889d841f6c601754141ff364d8b76084889c34c89f0e8d7ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3c3f4000000000000|@10402,1,@4534| 9352:D10,1832|483b65187305ff5558cd0950534d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b2c244d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15030700004989c64156488b0424ff15ec0600004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049bca8c3d1f1c27f00004d8966104d896e0849c7060500000041564d8d77e84c3b75107303ff55504d89f749c746f80200000049c74608010000004c8b6424084d89e54d89264d8d67d04c3b65107306ff5550ca00604d89e749c74424f80500000049bb4059d1f1c27f00004d895c242049bbd843d5f1c27f00004d895c241849bb1844d5f1c27f00004d895c24104d8974240849c704240b0000004d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d89661049bc78c3d1f1c27f00004d89660849c7060500000041564d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d89ed4d892e498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be78c3d1f1c27f00004c893048c7c303000000ff15300500004989c64156488b0424ff15190500004989c54d8d77e04c3b75107306ff5550ca00204d89f749c746f80300000049c74610030000004d896e0849c706010000004d8d6fe04c3b6d107306ff5550ca00404d89ef49c745f8030000004d8975104c8b34244d897508488d64240849c74500070000004d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fd04c3b6d107306ff5550ca00404d89ef49c745f80500000049bc4059d1f1c27f00004d89652049bc98b3d1f1c27f00004d89651849bce0b3d1f1c27f00004d8965104d89750849c745000b0000004d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004d896e1049bda8c3d1f1c27f00004d896e0849c7060500000041564c8b7424204d8b2e4e8d2c6d010000004983fd01750f48b8d89ad6f1c27f0000e9af0000004d89ec4983c40a4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d7a0300000f874b0300004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bcd89ad6f1c27f000048c7c10b000000498d742408488d780848d1e9f3a44c89e94d89f6498d7608488d780d48d1e9f3a48060ffbfff15250300004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e41564c8b7424284d8b2e4e8d2c6d010000004983fd01750f48b8f09ad6f1c27f0000e9af0000004d89ec4983c40c4c89e04883c01e49c7c31100000048d1e849d1eb4833d249f7f34c8d1c45010000004c3b1d6c0200000f87300200004d89da4a8d04950400000048f7d84903c7483b45107205493bc77206ff5550ca00784989c749d1ea4c8950f8c640ff414983eb024ac74498fc0000000049d1ec4c892049bcf09ad6f1c27f000048c7c10d000000498d742408488d780848d1e9f3a44c89e94d89f6498d7608488d780e48d1e9f3a48060ffbfff15170200004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e41564c8b7424304d8b2e4a8d0c6d010000004883f901750f48b8089bd6f1c27f0000e9990000004989cd4983c5064c89e84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d2445010000004c3b255e0100000f87150100004d89e34a8d049d0400000048f7d84903c7483b45107205493bc77206ff5550ca02704989c749d1eb4c8958f8c640ff414983ec024ac744a0fc0000000049d1ed4c8928c6400861c640096cc6400a6c4d89f6498d7608488d780b48d1e9f3a48060ffbfff151f0100004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004c8b6424104d8966084d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d6424104883c420c3488d64243848b8f8c7d0f1c27f0000488b5d08ff23488d64243048b8f8c7d0f1c27f0000488b5d08ff23488d64242848b8f8c7d0f1c27f0000488b5d08ff23f4000000ffffffffffffff01ffffffffffffff01ffffffffffffff01|@19814,1,@4535,@5162,@5162,@5162,@5400,@5156,@5400,@5156|85,0,@11238 254,0,@11239 352,0,@10496 367,0,@17382 382,0,@17384 441,0,@11238 536,0,@11238 743,0,@10496 757,0,@11106 771,0,@11108 828,0,@11239 873,0,@19811 1009,0,@19811 1135,0,@19812 1271,0,@19812 1397,0,@19813 1748,0,@9487 1769,0,@9487 1790,0,@9487 9353:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4536|33,0,@9475 88,0,@11193 9354:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4537|33,0,@9475 88,0,@11193 9355:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4538|33,0,@9475 88,0,@11193 9356:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4539|33,0,@9475 88,0,@11193 9357:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4540|33,0,@9475 88,0,@11193 9358:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4541|33,0,@9475 88,0,@11193 9359:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4542|33,0,@9475 88,0,@11193 9360:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4543|89,0,@14034 9361:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4544|32,0,@9475 87,0,@11193 9362:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4545|32,0,@9475 87,0,@11193 9363:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4546|33,0,@9475 88,0,@11193 9364:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4547|89,0,@14034 9365:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4548|32,0,@9475 87,0,@11193 9366:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4549|32,0,@9475 87,0,@11193 9367:D6,848|483b65187305ff5558cd014d8d77e04c3b75107305ff5550cd014d89f749c746f8030000004989461049bd985fd1f1c27f00004d896e0849c7062b00000041564c8d35080000004d8d7486fc41ffe6e96b000000909090e972000000909090e979000000909090e980000000909090e984000000909090e988000000909090e98c000000909090e990000000909090e994000000909090e998000000909090e99c000000909090e9a0000000909090e9a4000000909090e9a800000090909049bc783ad2f1c27f0000e9a000000049bc583bd2f1c27f0000e99100000049bc383cd2f1c27f0000e98200000049bc183dd2f1c27f0000eb7649bcf83dd2f1c27f0000eb6a49bcd83ed2f1c27f0000eb5e49bcb83fd2f1c27f0000eb5249bc9840d2f1c27f0000eb4649bc7841d2f1c27f0000eb3a49bc5842d2f1c27f0000eb2e49bc3843d2f1c27f0000eb2249bc1044d2f1c27f0000eb1649bce844d2f1c27f0000eb0a49bcc845d2f1c27f00004d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15890100000f876c0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b353a0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15e00000004989c6415648c7c001000000ff15c60000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01|@19815,1,@4550,@9369,@9368,@9493|43,0,@10541 193,0,@12187 208,0,@12194 223,0,@12201 238,0,@12208 250,0,@12215 262,0,@12222 274,0,@12229 286,0,@12236 298,0,@12243 310,0,@12250 322,0,@12257 334,0,@12264 346,0,@12271 358,0,@12278 386,0,@10766 597,0,@9493 631,0,@17022 824,0,@9487 9368:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4552|89,0,@14034 9369:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4551|33,0,@9475 88,0,@11193 9370:D7,568|483b65187305ff5558cd014d8d77d84c3b75107305ff5550cd014d89f749c746f8040000004989461849bd300ed5f1c27f00004d896e1049bdb00dd5f1c27f00004d896e0849c706070000004156ff15140200004989c44d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15880100000f876c0100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b35390100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15df0000004989c6415648c7c001000000ff15c50000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c70019000000c3488d64240848b8f8c7d0f1c27f0000488b5d08ff23f4ffffffffffffff01|@19816,1,@4553,@9372,@9371,@9493,@6466|43,0,@17048 57,0,@17044 107,0,@10766 318,0,@9493 352,0,@17022 545,0,@9487 9371:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4555|89,0,@14034 9372:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4554|33,0,@9475 88,0,@11193 9373:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4556|33,0,@9475 88,0,@11193 9374:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4557|33,0,@9475 88,0,@11193 9375:D7,1168|483b65187305ff5558cd015048b8b09bd6f1c27f0000ff15a40400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bcf8e2d5f1c27f00004d8966104d896e0849c7060f0000004d8d67d04c3b65107306ff5550ca00404d89e749c74424f80500000049bde89bd6f1c27f00004d896c24204d897424184c8b2c244d89ee4d896c241049bd300ed5f1c27f00004d896c240849bdb00dd5f1c27f00004d892c244d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f8020000004d89650849c745000300000041554d89f64d8b2e4983fd0175784d89f64d8b76084c8d2d080000004f8d6c35ff41ffe5eb0ceb16eb20eb2aeb34eb3eeb4849be507fd3f1c27f0000eb4649be687fd3f1c27f0000eb3a49be807fd3f1c27f0000eb2e49be987fd3f1c27f0000eb2249beb07fd3f1c27f0000eb1649bec87fd3f1c27f0000eb0a49bee07fd3f1c27f0000eb594d89f64d8b76084983fe05750c49bef87fd3f1c27f0000eb404983fe03750c49be1880d3f1c27f0000eb2e4983fe09750c49be3080d3f1c27f0000eb1c4983fe07750c49be5080d3f1c27f0000eb0a49be8860d2f1c27f00004d8b2e4e8d2c6d010000004983fd01750f49bc58f6d1f1c27f0000e9b30000004d89eb4983c3124c89d84883c01e49c7c41100000048d1e849d1ec4833d249f7f44c8d1445010000004c3b157e0200000f87590200004d89d14e8d248d0400000049f7dc4d03e74c3b651072054d3be77206ff5550ca006c4d89e749d1e94d894c24f841c64424ff414983ea024bc74494fc0000000049d1eb4d891c2449bb58f6d1f1c27f000048c7c113000000498d7308498d7c240848d1e9f3a44c89e9498d7608498d7c241148d1e9f3a441806424ffbf4d8b34244e8d2c75010000004983fd01750f49bee87ad1f1c27f0000e9a80000004d89eb4983c3044c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15a20100000f87700100004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e9498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c604262849d1ed43c6442e0129418066ffbf4c3b355b0100007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648c7c001000000ff15010100004989c6415648c7c001000000ff15e70000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c408c3488d64241048b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@19822,1,@4558,@9377,@9378,@9493,@9376|14,0,@19817 68,0,@18332 121,0,@19819 153,0,@17048 168,0,@17044 271,0,@14475 283,0,@14476 295,0,@14477 307,0,@14478 319,0,@14479 331,0,@14480 343,0,@14481 368,0,@14482 386,0,@14483 404,0,@14484 422,0,@14485 434,0,@12502 461,0,@11623 601,0,@11623 673,0,@10766 884,0,@9493 918,0,@17022 1115,0,@9487 1136,0,@9487 9376:D3,128|483b65187305ff5558cd01a80175634c8b28488b40084d8d77e84c3b75107306ff5550ca01204d89f749c746f80200000049c74608030000004d892e4156e8bdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348c7c001000000c3f40000000000|@10112,1,@4561| 9377:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4559|33,0,@9475 88,0,@11193 9378:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4560|89,0,@14034 9379:D17,1736|483b65187306ff5558ca09015053415048bae81cd1f1c27f0000488b44241048c7c303000000ff151c0700004989c6415648bae81cd1f1c27f0000488b44241048c7c303000000ff15f30600004989c54d8d77e84c3b75107306ff5550ca00204d89f749c746f80200000049c74608010000004d892e4d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f8020000004d89750849bef8dad0f1c27f00004d8975004d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be409ed6f1c27f00004c8930ff15380600004989c641564c8b7424184c89f34983fe017d15488d64242048b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15fb050000ff15ed050000ff15df0500004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48bed1f1c27f00004d8966104d896e0849c7060f0000004d8d67d04c3b65107306ff5550ca00404d89e749c74424f8050000004d897424204c8b6c24104d89ee4d896c241849c74424100100000049c74424080100000049c70424010000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d89650041554d89f64c89f34983fe017d15488d64242848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15f90400004989c64d8d67e04c3b65107306ff5550ca00404d89e749c74424f80300000049c7442410010000004d8974240849c70424290000004c8b34244d89f54983fe01750a488d6424084d89e6eb324d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d89ed4d896e08488d64240849c7061f00000041564c8b6424084d8b34244e8d2c75010000004983fd01750f49bea063d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15cb0300000f87af0300004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf4c3b358d0300007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648b8589ed6f1c27f0000ff15300300004989c6415648c7c001000000ff15160300004989c64d8d6fb84c3b6d107306ff5550ca00404d89ef49c745f80800000049c745380300000049c745300300000049c74528010000004d8975204c8b34244d897518488d64240849c74510010000004c8b34244d897508488d6424084c8b34244d897500488d6424084d8d77e84c3b75107306ff5550ca00204d89f749c746f8020000004d896e0849c7061900000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24104d896e0849c7060d000000415648b8f008d5f1c27f0000ff153b0200004989c64d8d6fd84c3b6d107306ff5550ca00404d89ef49c745f80400000049c74518030000004c8b24244d896510488d6424084d89750849c745000f0000004d8d77d84c3b75107306ff5550ca00204d89f749c746f8040000004d896e1849c746100100000049c746080100000049c706030000004d8d6fe84c3b6d107306ff5550ca00404d89ef49c745f80200000049c74508010000004d8975004983fd017504415eeb334d8d77e04c3b75107306ff5550ca00204d89f749c746f8030000004c8b24244d896610488d6424084d896e0849c7061f00000041564c8b7424084d89f54c3b35490100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742408415648c7c001000000ff15e30000004989c6415648c7c001000000ff15c90000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300300000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c420c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23f4ffffffffffffff01|@19843,1,@4562,@9381,@7989,@9493,@7906,@9382,@7989,@9493,@9383,@7906,@9384,@9380,@4836,@4983,@4983|18,0,@10077 51,0,@10077 151,0,@9592 239,0,@19841 282,0,@10101 361,0,@11192 516,0,@10101 696,0,@17602 922,0,@9493 956,0,@17022 970,0,@19842 1199,0,@17007 1474,0,@9493 1511,0,@17022 1713,0,@9487 9380:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@4567|64,0,@10541 98,0,@9475 9381:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4563|33,0,@9475 88,0,@11193 9382:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4564|33,0,@9475 88,0,@11193 9383:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bdc8a0d4f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@4565|64,0,@16379 98,0,@9475 9384:D3,88|483b65187305ff5558cd01a801753aff30488b4008e8e6ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8589ed6f1c27f0000c3f4000000|@10402,1,@4566|75,0,@19842 9385:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4568|32,0,@9475 87,0,@11193 9386:D13,1464|483b65187305ff5558cd09505348bae81cd1f1c27f0000488b44240848c7c303000000ff15ef0500004989c54d8b75004e8d2475010000004983fc01750f49bec09ed6f1c27f0000e9ad0000004d89e34983c30e4c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b15330500000f870e0500004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e49bbc09ed6f1c27f000048c7c10f000000498d7308498d7e0848d1e9f3a44c89e1498d7508498d7e0f48d1e9f3a4418066ffbf41564c8b7424104c89f34983fe017d15488d64241848b83020d1f1c27f0000488b5d08ff2348c7c001000000ff15e4040000ff15d60400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c746180300000049bc48bed1f1c27f00004d8966104d896e0849c7060f00000041564d8d77e04c3b75107303ff55504d89f749c746f80300000049c74610010000004c8b6c24104d896e0849c7060d000000415648b8f008d5f1c27f0000ff154b0400004989c54d8d77d84c3b75107306ff5550ca00204d89f749c746f80400000049c74618030000004c8b24244d896610488d6424084d896e0849c7060f00000041564c8b6424104d8b34244e8d2c75010000004983fd01750f49bea063d5f1c27f0000e9b70000004d89eb4983c3064c89d84883c01e49c7c61100000048d1e849d1ee4833d249f7f64c8d1445010000004c3b155d0300000f872b0300004d89d14e8d348d0400000049f7de4d03f74c3b751072054d3bf77206ff5550ca003c4d89f749d1e94d894ef841c646ff414983ea024bc74496fc0000000049d1eb4d891e4c89e94d89e4498d742408498d7e0848d1e9f3a44983c5104d89ec49d1ec43c60426284d89ec49d1ec43c64426013149d1ed43c6442e0229418066ffbf4c3b351f0300007502eb334d8b2e4e8d2c6d010000004983fd01752e49bdd8c8d0f1c27f0000498d7608498d7d0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb00415648b8589ed6f1c27f0000ff15c20200004989c6415648c7c001000000ff15a80200004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300100000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b6c24084d892e4d8d67e84c3b65107306ff5550ca00404d89e749c74424f8020000004d8974240849c70424190000004d8d77d84c3b75107306ff5550ca00104d89f749c746f8040000004c8b2c244d896e18488d64241049c746100100000049c746080100000049c706030000004d8d6fe84c3b6d107306ff5550ca00504d89ef49c745f80200000049c74508010000004d8975004983fd0175054d89e6eb2a4d8d77e04c3b75107306ff5550ca00304d89f749c746f8030000004d8966104d896e0849c7061f00000041564c8b7424084d89f54c3b35670100007502eb3a4d89ed4d8b75004e8d3475010000004983fe01753149bed8c8d0f1c27f00004d89ed498d7508498d7e0848c7c100000000483bc9f3a67402eb0c49bec00ad5f1c27f0000eb054c8b742408415648c7c001000000ff15010100004989c6415648c7c001000000ff15e70000004989c54d8d77b84c3b75107306ff5550ca00204d89f749c746f80800000049c746380300000049c746300300000049c74628010000004d896e204c8b2c244d896e18488d64240849c74610010000004c8b2c244d896e08488d6424084c8b2c244d892e488d642408498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700848c700190000004883c418c3488d64242848b8f8c7d0f1c27f0000488b5d08ff23488d64241048b8f8c7d0f1c27f0000488b5d08ff23f400ffffffffffffff01ffffffffffffff01|@19845,1,@4569,@9388,@7989,@9493,@9389,@7989,@9493,@7906,@7906,@9387,@4983|15,0,@10077 64,0,@19844 201,0,@19844 273,0,@10101 346,0,@11192 423,0,@17007 526,0,@17602 752,0,@9493 786,0,@17022 800,0,@19842 1172,0,@9493 1209,0,@17022 1411,0,@9487 1432,0,@9487 9387:D3,168|483b65187305ff5558cd09483bc3750848c7c001000000c34d8d77d84c3b75107305ff5550cd094d89f749c746f80400000049c74618010000004989461049bd985fd1f1c27f00004d896e0849c7061700000041564883c0027115488d64240848b8d0c6d0f1c27f0000488b5d08ff23e88bffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c3f4000000|@10111,1,@4572|64,0,@10541 98,0,@9475 9388:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4570|33,0,@9475 88,0,@11193 9389:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4571|33,0,@9475 88,0,@11193 9390:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4573|32,0,@9475 87,0,@11193 9391:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4574|32,0,@9475 87,0,@11193 9392:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4575|32,0,@9475 87,0,@11193 9393:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4576|32,0,@9475 87,0,@11193 9394:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4577|32,0,@9475 87,0,@11193 9395:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4578|32,0,@9475 87,0,@11193 9396:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4579|32,0,@9475 87,0,@11193 9397:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4580|33,0,@9475 88,0,@11193 9398:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4581|32,0,@9475 87,0,@11193 9399:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4582|33,0,@9475 88,0,@11193 9400:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4583|32,0,@9475 87,0,@11193 9401:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4584|33,0,@9475 88,0,@11193 9402:D3,112|483b65187305ff5558cd01a80175584c8b30488b40084d8b2e4983fd11753841ff7608e8d8ffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c8970084c8b34244c8930488d642408c348b8d83ed3f1c27f0000488b5d08ff2348c7c001000000c3f4|@10112,1,@4585|89,0,@14034 9403:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4586|32,0,@9475 87,0,@11193 9404:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4587|32,0,@9475 87,0,@11193 9405:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4588|32,0,@9475 87,0,@11193 9406:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4589|32,0,@9475 87,0,@11193 9407:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4590|32,0,@9475 87,0,@11193 9408:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4591|32,0,@9475 87,0,@11193 9409:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4592|32,0,@9475 87,0,@11193 9410:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4593|32,0,@9475 87,0,@11193 9411:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4594|32,0,@9475 87,0,@11193 9412:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4595|32,0,@9475 87,0,@11193 9413:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4596|32,0,@9475 87,0,@11193 9414:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4597|32,0,@9475 87,0,@11193 9415:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4598|32,0,@9475 87,0,@11193 9416:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4599|32,0,@9475 87,0,@11193 9417:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4600|32,0,@9475 87,0,@11193 9418:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4601|32,0,@9475 87,0,@11193 9419:D3,104|483b65187305ff5558cd09483bc3750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8cdffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f400000000|@10111,1,@4602|32,0,@9475 87,0,@11193 9420:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4603|33,0,@9475 88,0,@11193 9421:D3,104|483b65187305ff5558cd014883f805750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4604|33,0,@9475 88,0,@11193 9422:D3,104|483b65187305ff5558cd014883f803750848c7c001000000c34883c002711048b8d0c6d0f1c27f0000488b5d08ff23e8ccffffff4989c6498d47e8483b45107306ff5550ca00404989c748c740f8020000004c89700849be60bed1f1c27f00004c8930c3f4000000|@10111,1,@4605|33,0,@9475 88,0,@11193 4608:MO1|@9424 4609:MO1|1 4610:MO1|0 4611:MO1|0 4612:MO1|0 4613:MO1|@9470 4614:MO1|@9477 4615:MO1|@9483 4616:MO1|0 4617:MO1|@9780 4618:MO1|@9809 4619:MO1|0 4620:MO1|@9941 4621:MO1|2 4622:MO1|0 4623:MO1|0 4624:MO1|@10002 4625:MO1|@10002 4626:MO1|@10002 4627:MO1|@10002 4628:MO1|@10002 4629:MO1|@10002 4630:MO1|@10002 4631:MO1|@10002 4632:MO1|@10002 4633:MO1|@10095 4634:MO1|@10002 4635:MO1|@10002 4636:MO1|@10002 4637:MO1|@10002 4638:MO1|@10002 4639:MO1|@10002 4640:MO1|@10002 4641:MO1|@10002 4642:MO1|@10002 4643:MO1|@10002 4644:MO1|@10002 4645:MO1|@10002 4646:MO1|@10002 4647:MO1|@10002 4648:MO1|@10002 4649:MO1|@10002 4650:MO1|@10002 4651:MO1|@10002 4652:MO1|@10002 4653:MO1|@10002 4654:MO1|@10002 4655:MO1|@10002 4656:MO1|@10200 4657:MO1|0 4658:MO1|0 4659:MO1|0 4660:MO1|@10493 4661:MO1|@10507 4662:MO1|@10002 4663:MO1|1 4664:MO1|0 4665:MO1|@10568 4666:MO1|1 4667:MO1|@10507 4668:MO1|1 4669:MO1|@10507 4670:MO1|1 4671:MO1|@10507 4672:MO1|@10680 4673:MO1|@14076 4674:MO1|0 4675:MO1|@10507 4676:MO1|1 4677:MO1|0 4678:MO1|1 4679:MO1|1 4680:MO1|1 4681:MO1|1 4682:MO1|@11020 4683:MO1|@10002 4684:MO1|@10468 4685:MO1|@11120 4686:MO1|1 4687:MO1|0 4688:MO1|@11310 4689:MO1|0 4690:MO1|@12660 4691:MO1|@11342 4692:MO1|@11353 4693:MO1|@12546 4694:MO1|@11366 4695:MO1|@11584 4696:MO1|@11367 4697:MO1|@10002 4698:MO1|@11382 4699:MO1|@11390 4700:MO1|@11430 4701:MO1|@11522 4702:MO1|@11490 4703:MO1|@11503 4704:MO1|@11551 4705:MO1|@12481 4706:MO1|@11592 4707:MO1|@12377 4708:MO1|@11629 4709:MO1|@11657 4710:MO1|@11858 4711:MO1|@11747 4712:MO1|@11798 4713:MO1|@11835 4714:MO1|@11895 4715:MO1|@11942 4716:MO1|@11954 4717:MO1|@12032 4718:MO1|@12130 4719:MO1|@12180 4720:MO1|@12287 4721:MO1|@12303 4722:MO1|@12332 4723:MO1|@12361 4724:MO1|@12424 4725:MO1|@12444 4726:MO1|@12558 4727:MO1|@12573 4728:MO1|@12610 4729:MO1|0 4730:MO1|@13492 4731:MO1|@12847 4732:MO1|@12847 4733:MO1|@12546 4734:MO1|@11430 4735:MO1|@11366 4736:MO1|@12968 4737:MO1|@13628 4738:MO1|@13085 4739:MO1|@13290 4740:MO1|@13301 4741:MO1|@13302 4742:MO1|@13303 4743:MO1|@13341 4744:MO1|@13304 4745:MO1|@13322 4746:MO1|@13492 4747:MO1|@13515 4748:MO1|@12968 4749:MO1|@13543 4750:MO1|@13565 4751:MO1|@13581 4752:MO1|@13604 4753:MO1|@13515 4754:MO1|@12558 4755:MO1|@13984 4756:MO1|@14169 4757:MO1|@14244 4758:MO1|@14206 4759:MO1|@14207 4760:MO1|@13085 4761:MO1|@14422 4762:MO1|@14261 4763:MO1|@13290 4764:MO1|@14290 4765:MO1|@14290 4766:MO1|@11522 4767:MO1|@14326 4768:MO1|@16107 4769:MO1|@14872 4770:MO1|@15961 4771:MO1|@15974 4772:MO1|@16018 4773:MO1|@16075 4774:MO1|@16033 4775:MO1|@16050 4776:MO1|@16076 4777:MO1|@16085 4778:MO1|@16098 4779:MO1|@16236 4780:MO1|@10002 4781:MO1|@10002 4782:MO1|0 4783:MO1|0 4784:MO1|0 4785:MO1|0 4786:MO1|0 4787:MO1|32 4788:MO1|@9493 4789:MO1|48 4790:MO1|0 4791:MO1|41 4792:MO1|@10507 4793:MO1|1 4794:MO1|0 4795:MO1|@17368 4796:MO1|@10468 4797:MO1|1 4798:MO1|@17465 4799:MO1|@17468 4800:MO1|0 4801:MO1|0 4802:MO1|0 4803:MO1|0 4804:MO1|0 4805:MO1|@17934 4806:MO1|@15123 4807:MO1|@10468 4808:MO1|@18264 4809:MO1|@10468 4810:MO1|@18264 4811:MO1|@10468 4812:MO1|@18264 4813:MO1|@10507 4814:MO1|0 4815:MO1|0 4816:MO1|0 19887:MVO1|0 19888:MVO1|@9431 19889:MVO1|1 19890:MVO1|1 19891:MVO1|1 19892:MVO1|0 19893:MVO1|0 19894:MVO1|1 19895:MVO1|1 19896:MVO1|@9938 19897:MVO1|1 19898:MVO1|@9961 19899:MVO1|1 19900:MVO1|1 0:MB8|0000000000000000 1:MB4096|4372656174656420737472756374757265204d4c436f6d70696c65720a73696f6e0a0a69670a670a540a46554e4354494f4e530a35290a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2:MB8|0000000000000000 3:MB8|0000000000000000 4:MB8|0000000000000000 5:MB8|0000000000000000 6:MB8|0000000000000000 7:MB8|0000000000000000 8:MB8|0000000000000000 9:MB8|0000000000000000 10:MB8|0000000000000000 11:MB8|0000000000000000 12:MB8|0000000000000000 13:MB8|0000000000000000 14:MB8|0000000000000000 15:MB8|0000000000000000 16:MB8|0000000000000000 17:MB8|0000000000000000 18:MB8|0000000000000000 19:MB8|0000000000000000 20:MB8|0000000000000000 21:MB8|0000000000000000 22:MB8|0000000000000000 23:MB8|0000000000000000 24:MB8|0000000000000000 25:MB8|0000000000000000 26:MB8|0000000000000000 27:MB8|0000000000000000 28:MB8|0000000000000000 29:MB8|0000000000000000 30:MB8|0000000000000000 31:MB8|0000000000000000 32:MB8|0000000000000000 33:MB8|0000000000000000 34:MB8|0000000000000000 35:MB8|0000000000000000 36:MB8|0000000000000000 37:MB8|0000000000000000 38:MB8|0000000000000000 39:MB8|0000000000000000 40:MB8|0000000000000000 41:MB8|0000000000000000 42:MB8|0000000000000000 43:MB8|0000000000000000 44:MB8|0000000000000000 45:MB8|0000000000000000 46:MB8|0000000000000000 47:MB8|0000000000000000 48:MB8|0000000000000000 49:MB8|0000000000000000 50:MB8|0000000000000000 51:MB8|0000000000000000 52:MB8|0000000000000000 53:MB8|0000000000000000 54:MB8|0000000000000000 55:MB8|0000000000000000 56:MB8|0000000000000000 57:MB8|0000000000000000 58:MB8|0000000000000000 59:MB8|0000000000000000 60:MB8|0000000000000000 61:MB8|0000000000000000 62:MB8|0000000000000000 63:MB8|0000000000000000 64:MB8|0000000000000000 65:MB8|0000000000000000 66:MB8|0000000000000000 67:MB8|0000000000000000 68:MB8|0000000000000000 69:MB8|0000000000000000 70:MB8|0000000000000000 71:MB8|0000000000000000 72:MB8|0000000000000000 73:MB8|0000000000000000 74:MB8|0000000000000000 75:MB8|0000000000000000 76:MB8|0000000000000000 77:MB8|0000000000000000 78:MB8|0000000000000000 79:MB8|0000000000000000 80:MB8|0000000000000000 81:MB8|0000000000000000 82:MB8|0000000000000000 83:MB8|0000000000000000 84:MB8|0000000000000000 85:MB8|0000000000000000 86:MB8|0000000000000000 87:MB8|0000000000000000 88:MB4096|20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 89:MB8|0000000000000000 90:MB8|0000000000000000 91:MB8|0000000000000000 92:MB8|0000000000000000 93:MB8|0000000000000000 94:MB8|0000000000000000 95:MB8|0000000000000000 96:MB8|0000000000000000 97:MB8|0000000000000000 98:MB8|0000000000000000 99:MB8|0000000000000000 100:MB8|0000000000000000 101:MB8|0000000000000000 102:MB8|0000000000000000 103:MB8|0000000000000000 104:MB8|0000000000000000 105:MB8|0000000000000000 106:MB8|0000000000000000 107:MB8|0000000000000000 108:MB8|0000000000000000 109:MB8|0000000000000000 110:MB8|0000000000000000 111:MB8|0000000000000000 112:MB8|0000000000000000 113:MB8|0000000000000000 114:MB8|0000000000000000 115:MB8|0000000000000000 116:MB8|0000000000000000 117:MB8|0000000000000000 118:MB8|0000000000000000 119:MB8|0000000000000000 120:MB8|0000000000000000 121:MB8|0000000000000000 122:MB8|0000000000000000 123:MB8|0000000000000000 124:MB8|0000000000000000 125:MB8|0000000000000000 126:MB8|0000000000000000 127:MB8|0000000000000000 128:MB8|0000000000000000 129:MB8|0000000000000000 130:MB8|0000000000000000 131:MB8|0000000000000000 132:MB8|0000000000000000 133:MB8|0000000000000000 134:MB8|0000000000000000 135:MB8|0000000000000000 136:MB8|0000000000000000 137:MB8|0000000000000000 138:MB8|0000000000000000 139:MB8|0000000000000000 140:MB8|0000000000000000 141:MB8|0000000000000000 142:MB8|0000000000000000 143:MB8|0000000000000000 144:MB8|0000000000000000 145:MB8|0000000000000000 146:MB8|0000000000000000 147:MB8|0000000000000000 148:MB8|0000000000000000 149:MB8|0000000000000000 150:MB8|0000000000000000 151:MB8|0000000000000000 152:MB8|0000000000000000 153:MB8|0000000000000000 154:MB8|0000000000000000 155:MB8|0000000000000000 156:MB8|0000000000000000 157:MB8|0000000000000000 158:MB8|0000000000000000 159:MB8|0000000000000000 160:MB8|0000000000000000 161:MB8|0000000000000000 162:MB8|0000000000000000 163:MB8|0000000000000000 164:MB8|0000000000000000 165:MB8|0000000000000000 166:MB8|0000000000000000 167:MB8|0000000000000000 168:MB8|0000000000000000 169:MB8|0000000000000000 170:MB8|0000000000000000 171:MB8|0000000000000000 172:MB8|0000000000000000 173:MB8|0000000000000000 174:MB8|0000000000000000 175:MB8|0000000000000000 176:MB8|0000000000000000 177:MB8|0000000000000000 178:MB8|0000000000000000 179:MB8|0000000000000000 180:MB8|0000000000000000 181:MB8|0000000000000000 182:MB8|0000000000000000 183:MB8|0000000000000000 184:MB8|0000000000000000 185:MB8|0000000000000000 186:MB8|0000000000000000 187:MB8|0000000000000000 188:MB8|0000000000000000 189:MB8|0000000000000000 190:MB8|0000000000000000 191:MB8|0000000000000000 192:MB8|0000000000000000 193:MB8|0000000000000000 194:MB8|0000000000000000 195:MB8|0000000000000000 196:MB8|0000000000000000 197:MB8|0000000000000000 198:MB8|0000000000000000 199:MB8|0000000000000000 200:MB8|0000000000000000 201:MB8|0000000000000000 202:MB8|0000000000000000 203:MB8|0000000000000000 204:MB8|0000000000000000 205:MB8|0000000000000000 206:MB8|0000000000000000 207:MB8|0000000000000000 208:MB8|0000000000000000 209:MB8|0000000000000000 210:MB8|0000000000000000 211:MB8|0000000000000000 212:MB8|0000000000000000 213:MB8|0000000000000000 214:MB8|0000000000000000 215:MB8|0000000000000000 216:MB8|0000000000000000 217:MB8|0000000000000000 218:MB8|0000000000000000 219:MB8|0000000000000000 220:MB8|0000000000000000 221:MB8|0000000000000000 222:MB8|0000000000000000 223:MB8|0000000000000000 224:MB8|0000000000000000 225:MB8|0000000000000000 226:MB8|0000000000000000 227:MB8|0000000000000000 228:MB8|0000000000000000 229:MB8|0000000000000000 230:MB8|0000000000000000 231:MB8|0000000000000000 232:MB8|0000000000000000 233:MB8|0000000000000000 234:MB8|0000000000000000 235:MB8|0000000000000000 236:MB8|0000000000000000 237:MB8|0000000000000000 238:MB8|0000000000000000 239:MB8|0000000000000000 240:MB8|0000000000000000 241:MB8|0000000000000000 242:MB8|0000000000000000 243:MB8|0000000000000000 244:MB8|0000000000000000 245:MB8|0000000000000000 246:MB8|0000000000000000 247:MB8|0000000000000000 248:MB8|0000000000000000 249:MB8|0000000000000000 250:MB8|0000000000000000 251:MB8|0000000000000000 252:MB8|0000000000000000 253:MB8|0000000000000000 254:MB8|0000000000000000 255:MB8|0000000000000000 256:MB8|0000000000000000 257:MB8|0000000000000000 258:MB8|0000000000000000 259:MB8|0000000000000000 260:MB8|0000000000000000 261:MB8|0000000000000000 262:MB8|0000000000000000 263:MB8|0000000000000000 264:MB8|0000000000000000 265:MB8|0000000000000000 266:MB8|0000000000000000 267:MB8|0000000000000000 268:MB8|0000000000000000 269:MB8|0000000000000000 270:MB8|0000000000000000 271:MB8|0000000000000000 272:MB8|0000000000000000 273:MB8|0000000000000000 274:MB8|0000000000000000 275:MB8|0000000000000000 276:MB8|0000000000000000 277:MB8|0000000000000000 278:MB8|0000000000000000 279:MB8|0000000000000000 280:MB8|0000000000000000 281:MB8|0000000000000000 282:MB8|0000000000000000 283:MB8|0000000000000000 284:MB8|0000000000000000 285:MB8|0000000000000000 286:MB8|0000000000000000 287:MB8|0000000000000000 288:MB8|0000000000000000 289:MB8|0000000000000000 290:MB8|0000000000000000 291:MB8|0000000000000000 292:MB8|0000000000000000 293:MB8|0000000000000000 294:MB8|0000000000000000 295:MB8|0000000000000000 296:MB8|0000000000000000 297:MB8|0000000000000000 298:MB8|0000000000000000 299:MB8|0000000000000000 300:MB8|0000000000000000 301:MB8|0000000000000000 302:MB8|0000000000000000 303:MB8|0000000000000000 304:MB8|0000000000000000 305:MB8|0000000000000000 306:MB8|0000000000000000 307:MB8|0000000000000000 308:MB8|0000000000000000 309:MB8|0000000000000000 310:MB8|0000000000000000 311:MB8|0000000000000000 312:MB8|0000000000000000 313:MB8|0000000000000000 314:MB8|0000000000000000 315:MB8|0000000000000000 316:MB8|0000000000000000 317:MB8|0000000000000000 318:MB8|0000000000000000 319:MB8|0000000000000000 320:MB8|0000000000000000 321:MB8|0000000000000000 322:MB8|0000000000000000 323:MB8|0000000000000000 324:MB8|0000000000000000 325:MB8|0000000000000000 326:MB8|0000000000000000 327:MB8|0000000000000000 328:MB8|0000000000000000 329:MB8|0000000000000000 330:MB8|0000000000000000 331:MB8|0000000000000000 332:MB8|0000000000000000 333:MB8|0000000000000000 334:MB8|0000000000000000 335:MB8|0000000000000000 336:MB8|0000000000000000 337:MB8|0000000000000000 338:MB8|0000000000000000 339:MB8|0000000000000000 340:MB8|0000000000000000 341:MB8|0000000000000000 342:MB8|0000000000000000 343:MB8|0000000000000000 344:MB8|0000000000000000 345:MB8|0000000000000000 346:MB8|0000000000000000 347:MB8|0000000000000000 348:MB8|0000000000000000 349:MB8|0000000000000000 350:MB8|0000000000000000 351:MB8|0000000000000000 352:MB8|0000000000000000 353:MB8|0000000000000000 354:MB8|0000000000000000 355:MB8|0000000000000000 356:MB8|0000000000000000 357:MB8|0000000000000000 358:MB8|0000000000000000 359:MB8|0000000000000000 360:MB8|0000000000000000 361:MB8|0000000000000000 362:MB8|0000000000000000 363:MB8|0000000000000000 364:MB8|0000000000000000 365:MB8|0000000000000000 366:MB8|0000000000000000 367:MB8|0000000000000000 368:MB8|0000000000000000 369:MB8|0000000000000000 370:MB8|0000000000000000 371:MB8|0000000000000000 372:MB8|0000000000000000 373:MB8|0000000000000000 374:MB8|0000000000000000 375:MB8|0000000000000000 376:MB8|0000000000000000 377:MB8|0000000000000000 378:MB8|0000000000000000 379:MB8|0000000000000000 380:MB8|0000000000000000 381:MB8|0000000000000000 382:MB8|0000000000000000 383:MB8|0000000000000000 384:MB8|0000000000000000 385:MB8|0000000000000000 386:MB8|0000000000000000 387:MB8|0000000000000000 388:MB8|0000000000000000 389:MB8|0000000000000000 390:MB8|0000000000000000 391:MB8|0000000000000000 392:MB8|0000000000000000 393:MB8|0000000000000000 394:MB8|0000000000000000 395:MB8|0000000000000000 396:MB8|0000000000000000 397:MB8|0000000000000000 398:MB8|0000000000000000 399:MB8|0000000000000000 400:MB8|0000000000000000 401:MB8|0000000000000000 402:MB8|0000000000000000 403:MB8|0000000000000000 404:MB8|0000000000000000 405:MB8|0000000000000000 406:MB8|0000000000000000 407:MB8|0000000000000000 408:MB8|0000000000000000 409:MB8|0000000000000000 410:MB8|0000000000000000 411:MB8|0000000000000000 412:MB8|0000000000000000 413:MB8|0000000000000000 414:MB8|0000000000000000 415:MB8|0000000000000000 416:MB8|0000000000000000 417:MB8|0000000000000000 418:MB8|0000000000000000 419:MB8|0000000000000000 420:MB8|0000000000000000 421:MB8|0000000000000000 422:MB8|0000000000000000 423:MB8|0000000000000000 424:MB8|0000000000000000 425:MB8|0000000000000000 426:MB8|0000000000000000 427:MB8|0000000000000000 428:MB8|0000000000000000 429:MB8|0000000000000000 430:MB8|0000000000000000 431:MB8|0000000000000000 432:MB8|0000000000000000 433:MB8|0000000000000000 434:MB8|0000000000000000 435:MB8|0000000000000000 436:MB8|0000000000000000 437:MB8|0000000000000000 438:MB8|0000000000000000 439:MB8|0000000000000000 440:MB8|0000000000000000 441:MB8|0000000000000000 442:MB8|0000000000000000 443:MB8|0000000000000000 444:MB8|0000000000000000 445:MB8|0000000000000000 446:MB8|0000000000000000 447:MB8|0000000000000000 448:MB8|0000000000000000 449:MB8|0000000000000000 450:MB8|0000000000000000 451:MB8|0000000000000000 452:MB8|0000000000000000 453:MB8|0000000000000000 454:MB8|0000000000000000 455:MB8|0000000000000000 456:MB8|0000000000000000 457:MB8|0000000000000000 458:MB8|0000000000000000 459:MB8|0000000000000000 460:MB8|0000000000000000 461:MB8|0000000000000000 462:MB8|0000000000000000 463:MB8|0000000000000000 464:MB8|0000000000000000 465:MB8|0000000000000000 466:MB8|0000000000000000 467:MB8|0000000000000000 468:MB8|0000000000000000 469:MB8|0000000000000000 470:MB8|0000000000000000 471:MB8|0000000000000000 472:MB8|0000000000000000 473:MB8|0000000000000000 474:MB8|0000000000000000 475:MB8|0000000000000000 476:MB8|0000000000000000 477:MB8|0000000000000000 478:MB8|0000000000000000 479:MB8|0000000000000000 480:MB8|0000000000000000 481:MB8|0000000000000000 482:MB8|0000000000000000 483:MB8|0000000000000000 484:MB8|0000000000000000 485:MB8|0000000000000000 486:MB8|0000000000000000 487:MB8|0000000000000000 488:MB8|0000000000000000 489:MB8|0000000000000000 490:MB8|0000000000000000 491:MB8|0000000000000000 492:MB8|0000000000000000 493:MB8|0000000000000000 494:MB8|0000000000000000 495:MB8|0000000000000000 496:MB8|0000000000000000 497:MB8|0000000000000000 498:MB8|0000000000000000 499:MB8|0000000000000000 500:MB8|0000000000000000 501:MB8|0000000000000000 502:MB8|0000000000000000 503:MB8|0000000000000000 504:MB8|0000000000000000 505:MB8|0000000000000000 506:MB8|0000000000000000 507:MB8|0000000000000000 508:MB8|0000000000000000 509:MB8|0000000000000000 510:MB8|0000000000000000 511:MB8|0000000000000000 512:MB8|0000000000000000 513:MB8|0000000000000000 514:MB8|0000000000000000 515:MB8|0000000000000000 516:MB8|0000000000000000 517:MB8|0000000000000000 518:MB8|0000000000000000 519:MB8|0000000000000000 520:MB8|0000000000000000 521:MB8|0000000000000000 522:MB8|0000000000000000 523:MB8|0000000000000000 524:MB8|0000000000000000 525:MB8|0000000000000000 526:MB8|0000000000000000 527:MB8|0000000000000000 528:MB8|0000000000000000 529:MB8|0000000000000000 530:MB8|0000000000000000 531:MB8|0000000000000000 532:MB8|0000000000000000 533:MB8|0000000000000000 534:MB8|0000000000000000 535:MB8|0000000000000000 536:MB8|0000000000000000 537:MB8|0000000000000000 538:MB8|0000000000000000 539:MB8|0000000000000000 540:MB8|0000000000000000 541:MB8|0000000000000000 542:MB8|0000000000000000 543:MB8|0000000000000000 544:MB8|0000000000000000 545:MB8|0000000000000000 546:MB8|0000000000000000 547:MB8|0000000000000000 548:MB8|0000000000000000 549:MB8|0000000000000000 550:MB8|0000000000000000 551:MB8|0000000000000000 552:MB8|0000000000000000 553:MB8|0000000000000000 554:MB8|0000000000000000 555:MB8|0000000000000000 556:MB8|0000000000000000 557:MB8|0000000000000000 558:MB8|0000000000000000 559:MB8|0000000000000000 560:MB8|0000000000000000 561:MB8|0000000000000000 562:MB8|0000000000000000 563:MB8|0000000000000000 564:MB8|0000000000000000 565:MB8|0000000000000000 566:MB8|0000000000000000 567:MB8|0000000000000000 568:MB8|0000000000000000 569:MB8|0000000000000000 570:MB8|0000000000000000 571:MB8|0000000000000000 572:MB8|0000000000000000 573:MB8|0000000000000000 574:MB8|0000000000000000 575:MB8|0000000000000000 576:MB8|0000000000000000 577:MB8|0000000000000000 578:MB8|0000000000000000 579:MB8|0000000000000000 580:MB8|0000000000000000 581:MB8|0000000000000000 582:MB8|0000000000000000 583:MB8|0000000000000000 584:MB8|0000000000000000 585:MB8|0000000000000000 586:MB8|0000000000000000 587:MB8|0000000000000000 588:MB8|0000000000000000 589:MB8|0000000000000000 590:MB8|0000000000000000 591:MB8|0000000000000000 592:MB8|0000000000000000 593:MB8|0000000000000000 594:MB8|0000000000000000 595:MB8|0000000000000000 596:MB8|0000000000000000 597:MB8|0000000000000000 598:MB8|0000000000000000 599:MB8|0000000000000000 600:MB8|0000000000000000 601:MB8|0000000000000000 602:MB8|0000000000000000 603:MB8|0000000000000000 604:MB8|0000000000000000 605:MB8|0000000000000000 606:MB8|0000000000000000 607:MB8|0000000000000000 608:MB8|0000000000000000 609:MB8|0000000000000000 610:MB8|0000000000000000 611:MB8|0000000000000000 612:MB8|0000000000000000 613:MB8|0000000000000000 614:MB8|0000000000000000 615:MB8|0000000000000000 616:MB8|0000000000000000 617:MB8|0000000000000000 618:MB8|0000000000000000 619:MB8|0000000000000000 620:MB8|0000000000000000 621:MB8|0000000000000000 622:MB8|0000000000000000 623:MB8|0000000000000000 624:MB8|0000000000000000 625:MB8|0000000000000000 626:MB8|0000000000000000 627:MB8|0000000000000000 628:MB8|0000000000000000 629:MB8|0000000000000000 630:MB8|0000000000000000 631:MB8|0000000000000000 632:MB8|0000000000000000 633:MB8|0000000000000000 634:MB8|0000000000000000 635:MB8|0000000000000000 636:MB8|0000000000000000 637:MB8|0000000000000000 638:MB8|0000000000000000 639:MB8|0000000000000000 640:MB8|0000000000000000 641:MB8|0000000000000000 642:MB8|0000000000000000 643:MB8|0000000000000000 644:MB8|0000000000000000 645:MB8|0000000000000000 646:MB8|0000000000000000 647:MB8|0000000000000000 648:MB8|0000000000000000 649:MB8|0000000000000000 650:MB8|0000000000000000 651:MB8|0000000000000000 652:MB8|0000000000000000 653:MB8|0000000000000000 654:MB8|0000000000000000 655:MB8|0000000000000000 656:MB8|0000000000000000 657:MB8|0000000000000000 658:MB8|0000000000000000 659:MB8|0000000000000000 660:MB8|0000000000000000 661:MB8|0000000000000000 662:MB8|0000000000000000 663:MB8|0000000000000000 664:MB8|0000000000000000 665:MB8|0000000000000000 666:MB8|0000000000000000 667:MB8|0000000000000000 668:MB8|0000000000000000 669:MB8|0000000000000000 670:MB8|0000000000000000 671:MB8|0000000000000000 672:MB8|0000000000000000 673:MB8|0000000000000000 674:MB8|0000000000000000 675:MB8|0000000000000000 676:MB8|0000000000000000 677:MB8|0000000000000000 678:MB8|0000000000000000 679:MB8|0000000000000000 680:MB8|0000000000000000 681:MB8|0000000000000000 682:MB8|0000000000000000 683:MB8|0000000000000000 684:MB8|0000000000000000 685:MB8|0000000000000000 686:MB8|0000000000000000 687:MB8|0000000000000000 688:MB8|0000000000000000 689:MB8|0000000000000000 690:MB8|0000000000000000 691:MB8|0000000000000000 692:MB8|0000000000000000 693:MB8|0000000000000000 694:MB8|0000000000000000 695:MB8|0000000000000000 696:MB8|0000000000000000 697:MB8|0000000000000000 698:MB8|0000000000000000 699:MB8|0000000000000000 700:MB8|0000000000000000 701:MB8|0000000000000000 702:MB8|0000000000000000 703:MB8|0000000000000000 704:MB8|0000000000000000 705:MB8|0000000000000000 706:MB8|0000000000000000 707:MB8|0000000000000000 708:MB8|0000000000000000 709:MB8|0000000000000000 710:MB8|0000000000000000 711:MB8|0000000000000000 712:MB8|0000000000000000 713:MB8|0000000000000000 714:MB8|0000000000000000 715:MB8|0000000000000000 716:MB8|0000000000000000 717:MB8|0000000000000000 718:MB8|0000000000000000 719:MB8|0000000000000000 720:MB8|0000000000000000 721:MB8|0000000000000000 722:MB8|0000000000000000 723:MB8|0000000000000000 724:MB8|0000000000000000 725:MB8|0000000000000000 726:MB8|0000000000000000 727:MB8|0000000000000000 728:MB8|0000000000000000 729:MB8|0000000000000000 730:MB8|0000000000000000 731:MB8|0000000000000000 732:MB8|0000000000000000 733:MB8|0000000000000000 734:MB8|0000000000000000 735:MB8|0000000000000000 736:MB8|0000000000000000 737:MB8|0000000000000000 738:MB8|0000000000000000 739:MB8|0000000000000000 740:MB8|0000000000000000 741:MB8|0000000000000000 742:MB8|0000000000000000 743:MB8|0000000000000000 744:MB8|0000000000000000 745:MB8|0000000000000000 746:MB8|0000000000000000 747:MB8|0000000000000000 748:MB8|0000000000000000 749:MB8|0000000000000000 750:MB8|0000000000000000 751:MB8|0000000000000000 752:MB8|0000000000000000 753:MB8|0000000000000000 754:MB8|0000000000000000 755:MB8|0000000000000000 756:MB8|0000000000000000 757:MB8|0000000000000000 758:MB8|0000000000000000 759:MB8|0000000000000000 760:MB8|0000000000000000 761:MB8|0000000000000000 762:MB8|0000000000000000 763:MB8|0000000000000000 764:MB8|0000000000000000 765:MB8|0000000000000000 766:MB8|0000000000000000 767:MB8|0000000000000000 768:MB8|0000000000000000 769:MB8|0000000000000000 770:MB8|0000000000000000 771:MB8|0000000000000000 772:MB8|0000000000000000 773:MB8|0000000000000000 774:MB8|0000000000000000 775:MB8|0000000000000000 776:MB8|0000000000000000 777:MB8|0000000000000000 778:MB8|0000000000000000 779:MB8|0000000000000000 780:MB8|0000000000000000 781:MB8|0000000000000000 782:MB8|0000000000000000 783:MB8|0000000000000000 784:MB8|0000000000000000 785:MB8|0000000000000000 786:MB8|0000000000000000 787:MB8|0000000000000000 788:MB8|0000000000000000 789:MB8|0000000000000000 790:MB8|0000000000000000 791:MB8|0000000000000000 792:MB8|0000000000000000 793:MB8|0000000000000000 794:MB8|0000000000000000 795:MB8|0000000000000000 796:MB8|0000000000000000 797:MB8|0000000000000000 798:MB8|0000000000000000 799:MB8|0000000000000000 800:MB8|0000000000000000 801:MB8|0000000000000000 802:MB8|0000000000000000 803:MB8|0000000000000000 804:MB8|0000000000000000 805:MB8|0000000000000000 806:MB8|0000000000000000 807:MB8|0000000000000000 808:MB8|0000000000000000 809:MB8|0000000000000000 810:MB8|0000000000000000 811:MB8|0000000000000000 812:MB8|0000000000000000 813:MB8|0000000000000000 814:MB8|0000000000000000 815:MB8|0000000000000000 816:MB8|0000000000000000 817:MB8|0000000000000000 818:MB8|0000000000000000 819:MB8|0000000000000000 820:MB8|0000000000000000 821:MB8|0000000000000000 822:MB8|0000000000000000 823:MB8|0000000000000000 824:MB8|0000000000000000 825:MB8|0000000000000000 826:MB8|0000000000000000 827:MB8|0000000000000000 828:MB8|0000000000000000 829:MB8|0000000000000000 830:MB8|0000000000000000 831:MB8|0000000000000000 832:MB8|0000000000000000 833:MB8|0000000000000000 834:MB8|0000000000000000 835:MB8|0000000000000000 836:MB8|0000000000000000 837:MB8|0000000000000000 838:MB8|0000000000000000 839:MB8|0000000000000000 840:MB8|0000000000000000 841:MB8|0000000000000000 842:MB8|0000000000000000 843:MB8|0000000000000000 844:MB8|0000000000000000 845:MB8|0000000000000000 846:MB8|0000000000000000 847:MB8|0000000000000000 848:MB8|0000000000000000 849:MB8|0000000000000000 850:MB8|0000000000000000 851:MB8|0000000000000000 852:MB8|0000000000000000 853:MB8|0000000000000000 854:MB8|0000000000000000 855:MB8|0000000000000000 856:MB8|0000000000000000 857:MB8|0000000000000000 858:MB8|0000000000000000 859:MB8|0000000000000000 860:MB8|0000000000000000 861:MB8|0000000000000000 862:MB8|0000000000000000 863:MB8|0000000000000000 864:MB8|0000000000000000 865:MB8|0000000000000000 866:MB8|0000000000000000 867:MB8|0000000000000000 868:MB8|0000000000000000 869:MB8|0000000000000000 870:MB8|0000000000000000 871:MB8|0000000000000000 872:MB8|0000000000000000 873:MB8|0000000000000000 874:MB8|0000000000000000 875:MB8|0000000000000000 876:MB8|0000000000000000 877:MB8|0000000000000000 878:MB8|0000000000000000 879:MB8|0000000000000000 880:MB8|0000000000000000 881:MB8|0000000000000000 882:MB8|0000000000000000 883:MB8|0000000000000000 884:MB8|0000000000000000 885:MB8|0000000000000000 886:MB8|0000000000000000 887:MB8|0000000000000000 888:MB8|0000000000000000 889:MB8|0000000000000000 890:MB8|0000000000000000 891:MB8|0000000000000000 892:MB8|0000000000000000 893:MB8|0000000000000000 894:MB8|0000000000000000 895:MB8|0000000000000000 896:MB8|0000000000000000 897:MB8|0000000000000000 898:MB8|0000000000000000 899:MB8|0000000000000000 900:MB8|0000000000000000 901:MB8|0000000000000000 902:MB8|0000000000000000 903:MB8|0000000000000000 904:MB8|0000000000000000 905:MB8|0000000000000000 906:MB8|0000000000000000 907:MB8|0000000000000000 908:MB8|0000000000000000 909:MB8|0000000000000000 910:MB8|0000000000000000 911:MB8|0000000000000000 912:MB8|0000000000000000 913:MB8|0000000000000000 914:MB8|0000000000000000 915:MB8|0000000000000000 916:MB8|0000000000000000 917:MB8|0000000000000000 918:MB8|0000000000000000 919:MB8|0000000000000000 920:MB8|0000000000000000 921:MB8|0000000000000000 922:MB8|0000000000000000 923:MB8|0000000000000000 924:MB8|0000000000000000 925:MB8|0000000000000000 926:MB8|0000000000000000 927:MB8|0000000000000000 928:MB8|0000000000000000 929:MB8|0000000000000000 930:MB8|0000000000000000 931:MB8|0000000000000000 932:MB8|0000000000000000 933:MB8|0000000000000000 934:MB8|0000000000000000 935:MB8|0000000000000000 936:MB8|0000000000000000 937:MB8|0000000000000000 938:MB8|0000000000000000 939:MB8|0000000000000000 940:MB8|0000000000000000 941:MB8|0000000000000000 942:MB8|0000000000000000 943:MB8|0000000000000000 944:MB8|0000000000000000 945:MB8|0000000000000000 946:MB8|0000000000000000 947:MB8|0000000000000000 948:MB8|0000000000000000 949:MB8|0000000000000000 950:MB8|0000000000000000 951:MB8|0000000000000000 952:MB8|0000000000000000 953:MB8|0000000000000000 954:MB8|0000000000000000 955:MB8|0000000000000000 956:MB8|0000000000000000 957:MB8|0000000000000000 958:MB8|0000000000000000 959:MB8|0000000000000000 960:MB8|0000000000000000 961:MB8|0000000000000000 962:MB8|0000000000000000 963:MB8|0000000000000000 964:MB8|0000000000000000 965:MB8|0000000000000000 966:MB8|0000000000000000 967:MB8|0000000000000000 968:MB8|0000000000000000 969:MB8|0000000000000000 970:MB8|0000000000000000 971:MB8|0000000000000000 972:MB8|0000000000000000 973:MB8|0000000000000000 974:MB8|0000000000000000 975:MB8|0000000000000000 976:MB8|0000000000000000 977:MB8|0000000000000000 978:MB8|0000000000000000 979:MB8|0000000000000000 980:MB8|0000000000000000 981:MB8|0000000000000000 982:MB8|0000000000000000 983:MB8|0000000000000000 984:MB8|0000000000000000 985:MB8|0000000000000000 986:MB8|0000000000000000 987:MB8|0000000000000000 988:MB8|0000000000000000 989:MB8|0000000000000000 990:MB8|0000000000000000 991:MB8|0000000000000000 992:MB8|0000000000000000 993:MB8|0000000000000000 994:MB8|0000000000000000 995:MB8|0000000000000000 996:MB8|0000000000000000 997:MB8|0000000000000000 998:MB8|0000000000000000 999:MB8|0000000000000000 1000:MB8|0000000000000000 1001:MB8|0000000000000000 1002:MB8|0000000000000000 1003:MB8|0000000000000000 1004:MB8|0000000000000000 1005:MB8|0000000000000000 1006:MB8|0000000000000000 1007:MB8|0000000000000000 1008:MB8|0000000000000000 1009:MB8|0000000000000000 1010:MB8|0000000000000000 1011:MB8|0000000000000000 1012:MB8|0000000000000000 1013:MB8|0000000000000000 1014:MB8|0000000000000000 1015:MB8|0000000000000000 1016:MB8|0000000000000000 1017:MB8|0000000000000000 1018:MB8|0000000000000000 1019:MB8|0000000000000000 1020:MB8|0000000000000000 1021:MB8|0000000000000000 1022:MB8|0000000000000000 1023:MB8|0000000000000000 1024:MB8|0000000000000000 1025:MB8|0000000000000000 1026:MB8|0000000000000000 1027:MB8|0000000000000000 1028:MB8|0000000000000000 1029:MB8|0000000000000000 1030:MB8|0000000000000000 1031:MB8|0000000000000000 1032:MB8|0000000000000000 1033:MB8|0000000000000000 1034:MB8|0000000000000000 1035:MB8|0000000000000000 1036:MB8|0000000000000000 1037:MB8|0000000000000000 1038:MB8|0000000000000000 1039:MB8|0000000000000000 1040:MB8|0000000000000000 1041:MB8|0000000000000000 1042:MB8|0000000000000000 1043:MB8|0000000000000000 1044:MB8|0000000000000000 1045:MB8|0000000000000000 1046:MB8|0000000000000000 1047:MB8|0000000000000000 1048:MB8|0000000000000000 1049:MB8|0000000000000000 1050:MB8|0000000000000000 1051:MB8|0000000000000000 1052:MB8|0000000000000000 1053:MB8|0000000000000000 1054:MB8|0000000000000000 1055:MB8|0000000000000000 1056:MB8|0000000000000000 1057:MB8|0000000000000000 1058:MB8|0000000000000000 1059:MB8|0000000000000000 1060:MB8|0000000000000000 1061:MB8|0000000000000000 1062:MB8|0000000000000000 1063:MB8|0000000000000000 1064:MB8|0000000000000000 1065:MB8|0000000000000000 1066:MB8|0000000000000000 1067:MB8|0000000000000000 1068:MB8|0000000000000000 1069:MB8|0000000000000000 1070:MB8|0000000000000000 1071:MB8|0000000000000000 1072:MB8|0000000000000000 1073:MB8|0000000000000000 1074:MB8|0000000000000000 1075:MB8|0000000000000000 1076:MB8|0000000000000000 1077:MB8|0000000000000000 1078:MB8|0000000000000000 1079:MB8|0000000000000000 1080:MB8|0000000000000000 1081:MB8|0000000000000000 1082:MB8|0000000000000000 1083:MB8|0000000000000000 1084:MB8|0000000000000000 1085:MB8|0000000000000000 1086:MB8|0000000000000000 1087:MB8|0000000000000000 1088:MB8|0000000000000000 1089:MB8|0000000000000000 1090:MB8|0000000000000000 1091:MB8|0000000000000000 1092:MB8|0000000000000000 1093:MB8|0000000000000000 1094:MB8|0000000000000000 1095:MB8|0000000000000000 1096:MB8|0000000000000000 1097:MB8|0000000000000000 1098:MB8|0000000000000000 1099:MB8|0000000000000000 1100:MB8|0000000000000000 1101:MB8|0000000000000000 1102:MB8|0000000000000000 1103:MB8|0000000000000000 1104:MB8|0000000000000000 1105:MB8|0000000000000000 1106:MB8|0000000000000000 1107:MB8|0000000000000000 1108:MB8|0000000000000000 1109:MB8|0000000000000000 1110:MB8|0000000000000000 1111:MB8|0000000000000000 1112:MB8|0000000000000000 1113:MB8|0000000000000000 1114:MB8|0000000000000000 1115:MB8|0000000000000000 1116:MB8|0000000000000000 1117:MB8|0000000000000000 1118:MB8|0000000000000000 1119:MB8|0000000000000000 1120:MB8|0000000000000000 1121:MB8|0000000000000000 1122:MB8|0000000000000000 1123:MB8|0000000000000000 1124:MB8|0000000000000000 1125:MB8|0000000000000000 1126:MB8|0000000000000000 1127:MB8|0000000000000000 1128:MB8|0000000000000000 1129:MB8|0000000000000000 1130:MB8|0000000000000000 1131:MB8|0000000000000000 1132:MB8|0000000000000000 1133:MB8|0000000000000000 1134:MB8|0000000000000000 1135:MB8|0000000000000000 1136:MB8|0000000000000000 1137:MB8|0000000000000000 1138:MB8|0000000000000000 1139:MB8|0000000000000000 1140:MB8|0000000000000000 1141:MB8|0000000000000000 1142:MB8|0000000000000000 1143:MB8|0000000000000000 1144:MB8|0000000000000000 1145:MB8|0000000000000000 1146:MB8|0000000000000000 1147:MB8|0000000000000000 1148:MB8|0000000000000000 1149:MB8|0000000000000000 1150:MB8|0000000000000000 1151:MB8|0000000000000000 1152:MB8|0000000000000000 1153:MB8|0000000000000000 1154:MB8|0000000000000000 1155:MB8|0000000000000000 1156:MB8|0000000000000000 1157:MB8|0000000000000000 1158:MB8|0000000000000000 1159:MB8|0000000000000000 1160:MB8|0000000000000000 1161:MB8|0000000000000000 1162:MB8|0000000000000000 1163:MB8|0000000000000000 1164:MB8|0000000000000000 1165:MB8|0000000000000000 1166:MB8|0000000000000000 1167:MB8|0000000000000000 1168:MB8|0000000000000000 1169:MB8|0000000000000000 1170:MB8|0000000000000000 1171:MB8|0000000000000000 1172:MB8|0000000000000000 1173:MB8|0000000000000000 1174:MB8|0000000000000000 1175:MB8|0000000000000000 1176:MB8|0000000000000000 1177:MB8|0000000000000000 1178:MB8|0000000000000000 1179:MB8|0000000000000000 1180:MB8|0000000000000000 1181:MB8|0000000000000000 1182:MB8|0000000000000000 1183:MB8|0000000000000000 1184:MB8|0000000000000000 1185:MB8|0000000000000000 1186:MB8|0000000000000000 1187:MB8|0000000000000000 1188:MB8|0000000000000000 1189:MB8|0000000000000000 1190:MB8|0000000000000000 1191:MB8|0000000000000000 1192:MB8|0000000000000000 1193:MB8|0000000000000000 1194:MB8|0000000000000000 1195:MB8|0000000000000000 1196:MB8|0000000000000000 1197:MB8|0000000000000000 1198:MB8|0000000000000000 1199:MB8|0000000000000000 1200:MB8|0000000000000000 1201:MB8|0000000000000000 1202:MB8|0000000000000000 1203:MB8|0000000000000000 1204:MB8|0000000000000000 1205:MB8|0000000000000000 1206:MB8|0000000000000000 1207:MB8|0000000000000000 1208:MB8|0000000000000000 1209:MB8|0000000000000000 1210:MB8|0000000000000000 1211:MB8|0000000000000000 1212:MB8|0000000000000000 1213:MB8|0000000000000000 1214:MB8|0000000000000000 1215:MB8|0000000000000000 1216:MB8|0000000000000000 1217:MB8|0000000000000000 1218:MB8|0000000000000000 1219:MB8|0000000000000000 1220:MB8|0000000000000000 1221:MB8|0000000000000000 1222:MB8|0000000000000000 1223:MB8|0000000000000000 1224:MB8|0000000000000000 1225:MB8|0000000000000000 1226:MB8|0000000000000000 1227:MB8|0000000000000000 1228:MB8|0000000000000000 1229:MB8|0000000000000000 1230:MB8|0000000000000000 1231:MB8|0000000000000000 1232:MB8|0000000000000000 1233:MB8|0000000000000000 1234:MB8|0000000000000000 1235:MB8|0000000000000000 1236:MB8|0000000000000000 1237:MB8|0000000000000000 1238:MB8|0000000000000000 1239:MB8|0000000000000000 1240:MB8|0000000000000000 1241:MB8|0000000000000000 1242:MB8|0000000000000000 1243:MB8|0000000000000000 1244:MB8|0000000000000000 1245:MB8|0000000000000000 1246:MB8|0000000000000000 1247:MB8|0000000000000000 1248:MB8|0000000000000000 1249:MB8|0000000000000000 1250:MB8|0000000000000000 1251:MB8|0000000000000000 1252:MB8|0000000000000000 1253:MB8|0000000000000000 1254:MB8|0000000000000000 1255:MB8|0000000000000000 1256:MB8|0000000000000000 1257:MB8|0000000000000000 1258:MB8|0000000000000000 1259:MB8|0000000000000000 1260:MB8|0000000000000000 1261:MB8|0000000000000000 1262:MB8|0000000000000000 1263:MB8|0000000000000000 1264:MB8|0000000000000000 1265:MB8|0000000000000000 1266:MB8|0000000000000000 1267:MB8|0000000000000000 1268:MB8|0000000000000000 1269:MB8|0000000000000000 1270:MB8|0000000000000000 1271:MB8|0000000000000000 1272:MB8|0000000000000000 1273:MB8|0000000000000000 1274:MB8|0000000000000000 1275:MB8|0000000000000000 1276:MB8|0000000000000000 1277:MB8|0000000000000000 1278:MB8|0000000000000000 1279:MB8|0000000000000000 1280:MB8|0000000000000000 1281:MB8|0000000000000000 1282:MB8|0000000000000000 1283:MB8|0000000000000000 1284:MB8|0000000000000000 1285:MB8|0000000000000000 1286:MB8|0000000000000000 1287:MB8|0000000000000000 1288:MB8|0000000000000000 1289:MB8|0000000000000000 1290:MB8|0000000000000000 1291:MB8|0000000000000000 1292:MB8|0000000000000000 1293:MB8|0000000000000000 1294:MB8|0000000000000000 1295:MB8|0000000000000000 1296:MB8|0000000000000000 1297:MB8|0000000000000000 1298:MB8|0000000000000000 1299:MB8|0000000000000000 1300:MB8|0000000000000000 1301:MB8|0000000000000000 1302:MB8|0000000000000000 1303:MB8|0000000000000000 1304:MB8|0000000000000000 1305:MB8|0000000000000000 1306:MB8|0000000000000000 1307:MB8|0000000000000000 1308:MB8|0000000000000000 1309:MB8|0000000000000000 1310:MB8|0000000000000000 1311:MB8|0000000000000000 1312:MB8|0000000000000000 1313:MB8|0000000000000000 1314:MB8|0000000000000000 1315:MB8|0000000000000000 1316:MB8|0000000000000000 1317:MB8|0000000000000000 1318:MB8|0000000000000000 1319:MB8|0000000000000000 1320:MB8|0000000000000000 1321:MB8|0000000000000000 1322:MB8|0000000000000000 1323:MB8|0000000000000000 1324:MB8|0000000000000000 1325:MB8|0000000000000000 1326:MB8|0000000000000000 1327:MB8|0000000000000000 1328:MB8|0000000000000000 1329:MB8|0000000000000000 1330:MB8|0000000000000000 1331:MB8|0000000000000000 1332:MB8|0000000000000000 1333:MB8|0000000000000000 1334:MB8|0000000000000000 1335:MB8|0000000000000000 1336:MB8|0000000000000000 1337:MB8|0000000000000000 1338:MB8|0000000000000000 1339:MB8|0000000000000000 1340:MB8|0000000000000000 1341:MB8|0000000000000000 1342:MB8|0000000000000000 1343:MB8|0000000000000000 1344:MB8|0000000000000000 1345:MB8|0000000000000000 1346:MB8|0000000000000000 1347:MB8|0000000000000000 1348:MB8|0000000000000000 1349:MB8|0000000000000000 1350:MB8|0000000000000000 1351:MB8|0000000000000000 1352:MB8|0000000000000000 1353:MB8|0000000000000000 1354:MB8|0000000000000000 1355:MB8|0000000000000000 1356:MB8|0000000000000000 1357:MB8|0000000000000000 1358:MB8|0000000000000000 1359:MB8|0000000000000000 1360:MB8|0000000000000000 1361:MB8|0000000000000000 1362:MB8|0000000000000000 1363:MB8|0000000000000000 1364:MB8|0000000000000000 1365:MB8|0000000000000000 1366:MB8|0000000000000000 1367:MB8|0000000000000000 1368:MB8|0000000000000000 1369:MB8|0000000000000000 1370:MB8|0000000000000000 1371:MB8|0000000000000000 1372:MB8|0000000000000000 1373:MB8|0000000000000000 1374:MB8|0000000000000000 1375:MB8|0000000000000000 1376:MB8|0000000000000000 1377:MB8|0000000000000000 1378:MB8|0000000000000000 1379:MB8|0000000000000000 1380:MB8|0000000000000000 1381:MB8|0000000000000000 1382:MB8|0000000000000000 1383:MB8|0000000000000000 1384:MB8|0000000000000000 1385:MB8|0000000000000000 1386:MB8|0000000000000000 1387:MB8|0000000000000000 1388:MB8|0000000000000000 1389:MB8|0000000000000000 1390:MB8|0000000000000000 1391:MB8|0000000000000000 1392:MB8|0000000000000000 1393:MB8|0000000000000000 1394:MB8|0000000000000000 1395:MB8|0000000000000000 1396:MB8|0000000000000000 1397:MB8|0000000000000000 1398:MB8|0000000000000000 1399:MB8|0000000000000000 1400:MB8|0000000000000000 1401:MB8|0000000000000000 1402:MB8|0000000000000000 1403:MB8|0000000000000000 1404:MB8|0000000000000000 1405:MB8|0000000000000000 1406:MB8|0000000000000000 1407:MB8|0000000000000000 1408:MB8|0000000000000000 1409:MB8|0000000000000000 1410:MB8|0000000000000000 1411:MB8|0000000000000000 1412:MB8|0000000000000000 1413:MB8|0000000000000000 1414:MB8|0000000000000000 1415:MB8|0000000000000000 1416:MB8|0000000000000000 1417:MB8|0000000000000000 1418:MB8|0000000000000000 1419:MB8|0000000000000000 1420:MB8|0000000000000000 1421:MB8|0000000000000000 1422:MB8|0000000000000000 1423:MB8|0000000000000000 1424:MB8|0000000000000000 1425:MB8|0000000000000000 1426:MB8|0000000000000000 1427:MB8|0000000000000000 1428:MB8|0000000000000000 1429:MB8|0000000000000000 1430:MB8|0000000000000000 1431:MB8|0000000000000000 1432:MB8|0000000000000000 1433:MB8|0000000000000000 1434:MB8|0000000000000000 1435:MB8|0000000000000000 1436:MB8|0000000000000000 1437:MB8|0000000000000000 1438:MB8|0000000000000000 1439:MB8|0000000000000000 1440:MB8|0000000000000000 1441:MB8|0000000000000000 1442:MB8|0000000000000000 1443:MB8|0000000000000000 1444:MB8|0000000000000000 1445:MB8|0000000000000000 1446:MB8|0000000000000000 1447:MB8|0000000000000000 1448:MB8|0000000000000000 1449:MB8|0000000000000000 1450:MB8|0000000000000000 1451:MB8|0000000000000000 1452:MB8|0000000000000000 1453:MB8|0000000000000000 1454:MB8|0000000000000000 1455:MB8|0000000000000000 1456:MB8|0000000000000000 1457:MB8|0000000000000000 1458:MB8|0000000000000000 1459:MB8|0000000000000000 1460:MB8|0000000000000000 1461:MB8|0000000000000000 1462:MB8|0000000000000000 1463:MB8|0000000000000000 1464:MB8|0000000000000000 1465:MB8|0000000000000000 1466:MB8|0000000000000000 1467:MB8|0000000000000000 1468:MB8|0000000000000000 1469:MB8|0000000000000000 1470:MB8|0000000000000000 1471:MB8|0000000000000000 1472:MB8|0000000000000000 1473:MB8|0000000000000000 1474:MB8|0000000000000000 1475:MB8|0000000000000000 1476:MB8|0000000000000000 1477:MB8|0000000000000000 1478:MB8|0000000000000000 1479:MB8|0000000000000000 1480:MB8|0000000000000000 1481:MB8|0000000000000000 1482:MB8|0000000000000000 1483:MB8|0000000000000000 1484:MB8|0000000000000000 1485:MB8|0000000000000000 1486:MB8|0000000000000000 1487:MB8|0000000000000000 1488:MB8|0000000000000000 1489:MB8|0000000000000000 1490:MB8|0000000000000000 1491:MB8|0000000000000000 1492:MB8|0000000000000000 1493:MB8|0000000000000000 1494:MB8|0000000000000000 1495:MB8|0000000000000000 1496:MB8|0000000000000000 1497:MB8|0000000000000000 1498:MB8|0000000000000000 1499:MB8|0000000000000000 1500:MB8|0000000000000000 1501:MB8|0000000000000000 1502:MB8|0000000000000000 1503:MB8|0000000000000000 1504:MB8|0000000000000000 1505:MB8|0000000000000000 1506:MB8|0000000000000000 1507:MB8|0000000000000000 1508:MB8|0000000000000000 1509:MB8|0000000000000000 1510:MB8|0000000000000000 1511:MB8|0000000000000000 1512:MB8|0000000000000000 1513:MB8|0000000000000000 1514:MB8|0000000000000000 1515:MB8|0000000000000000 1516:MB8|0000000000000000 1517:MB8|0000000000000000 1518:MB8|0000000000000000 1519:MB8|0000000000000000 1520:MB8|0000000000000000 1521:MB8|0000000000000000 1522:MB8|0000000000000000 1523:MB8|0000000000000000 1524:MB8|0000000000000000 1525:MB8|0000000000000000 1526:MB8|0000000000000000 1527:MB8|0000000000000000 1528:MB8|0000000000000000 1529:MB8|0000000000000000 1530:MB8|0000000000000000 1531:MB8|0000000000000000 1532:MB8|0000000000000000 1533:MB8|0000000000000000 1534:MB8|0000000000000000 1535:MB8|0000000000000000 1536:MB8|0000000000000000 1537:MB8|0000000000000000 1538:MB8|0000000000000000 1539:MB8|0000000000000000 1540:MB8|0000000000000000 1541:MB8|0000000000000000 1542:MB8|0000000000000000 1543:MB8|0000000000000000 1544:MB8|0000000000000000 1545:MB8|0000000000000000 1546:MB8|0000000000000000 1547:MB8|0000000000000000 1548:MB8|0000000000000000 1549:MB8|0000000000000000 1550:MB8|0000000000000000 1551:MB8|0000000000000000 1552:MB8|0000000000000000 1553:MB8|0000000000000000 1554:MB8|0000000000000000 1555:MB8|0000000000000000 1556:MB8|0000000000000000 1557:MB8|0000000000000000 1558:MB8|0000000000000000 1559:MB8|0000000000000000 1560:MB8|0000000000000000 1561:MB8|0000000000000000 1562:MB8|0000000000000000 1563:MB8|0000000000000000 1564:MB8|0000000000000000 1565:MB8|0000000000000000 1566:MB8|0000000000000000 1567:MB8|0000000000000000 1568:MB8|0000000000000000 1569:MB8|0000000000000000 1570:MB8|0000000000000000 1571:MB8|0000000000000000 1572:MB8|0000000000000000 1573:MB8|0000000000000000 1574:MB8|0000000000000000 1575:MB8|0000000000000000 1576:MB8|0000000000000000 1577:MB8|0000000000000000 1578:MB8|0000000000000000 1579:MB8|0000000000000000 1580:MB8|0000000000000000 1581:MB8|0000000000000000 1582:MB8|0000000000000000 1583:MB8|0000000000000000 1584:MB8|0000000000000000 1585:MB8|0000000000000000 1586:MB8|0000000000000000 1587:MB8|0000000000000000 1588:MB8|0000000000000000 1589:MB8|0000000000000000 1590:MB8|0000000000000000 1591:MB8|0000000000000000 1592:MB8|0000000000000000 1593:MB8|0000000000000000 1594:MB8|0000000000000000 1595:MB8|0000000000000000 1596:MB8|0000000000000000 1597:MB8|0000000000000000 1598:MB8|0000000000000000 1599:MB8|0000000000000000 1600:MB8|0000000000000000 1601:MB8|0000000000000000 1602:MB8|0000000000000000 1603:MB8|0000000000000000 1604:MB8|0000000000000000 1605:MB8|0000000000000000 1606:MB8|0000000000000000 1607:MB8|0000000000000000 1608:MB8|0000000000000000 1609:MB8|0000000000000000 1610:MB8|0000000000000000 1611:MB8|0000000000000000 1612:MB8|0000000000000000 1613:MB8|0000000000000000 1614:MB8|0000000000000000 1615:MB8|0000000000000000 1616:MB8|0000000000000000 1617:MB8|0000000000000000 1618:MB8|0000000000000000 1619:MB8|0000000000000000 1620:MB8|0000000000000000 1621:MB8|0000000000000000 1622:MB8|0000000000000000 1623:MB8|0000000000000000 1624:MB8|0000000000000000 1625:MB8|0000000000000000 1626:MB8|0000000000000000 1627:MB8|0000000000000000 1628:MB8|0000000000000000 1629:MB8|0000000000000000 1630:MB8|0000000000000000 1631:MB8|0000000000000000 1632:MB8|0000000000000000 1633:MB8|0000000000000000 1634:MB8|0000000000000000 1635:MB8|0000000000000000 1636:MB8|0000000000000000 1637:MB8|0000000000000000 1638:MB8|0000000000000000 1639:MB8|0000000000000000 1640:MB8|0000000000000000 1641:MB8|0000000000000000 1642:MB8|0000000000000000 1643:MB8|0000000000000000 1644:MB8|0000000000000000 1645:MB8|0000000000000000 1646:MB8|0000000000000000 1647:MB8|0000000000000000 1648:MB8|0000000000000000 1649:MB8|0000000000000000 1650:MB8|0000000000000000 1651:MB8|0000000000000000 1652:MB8|0000000000000000 1653:MB8|0000000000000000 1654:MB8|0000000000000000 1655:MB8|0000000000000000 1656:MB8|0000000000000000 1657:MB8|0000000000000000 1658:MB8|0000000000000000 1659:MB8|0000000000000000 1660:MB8|0000000000000000 1661:MB8|0000000000000000 1662:MB8|0000000000000000 1663:MB8|0000000000000000 1664:MB8|0000000000000000 1665:MB8|0000000000000000 1666:MB8|0000000000000000 1667:MB8|0000000000000000 1668:MB8|0000000000000000 1669:MB8|0000000000000000 1670:MB8|0000000000000000 1671:MB8|0000000000000000 1672:MB8|0000000000000000 1673:MB8|0000000000000000 1674:MB8|0000000000000000 1675:MB8|0000000000000000 1676:MB8|0000000000000000 1677:MB8|0000000000000000 1678:MB8|0000000000000000 1679:MB8|0000000000000000 1680:MB8|0000000000000000 1681:MB8|0000000000000000 1682:MB8|0000000000000000 1683:MB8|0000000000000000 1684:MB8|0000000000000000 1685:MB8|0000000000000000 1686:MB8|0000000000000000 1687:MB8|0000000000000000 1688:MB8|0000000000000000 1689:MB8|0000000000000000 1690:MB8|0000000000000000 1691:MB8|0000000000000000 1692:MB8|0000000000000000 1693:MB8|0000000000000000 1694:MB8|0000000000000000 1695:MB8|0000000000000000 1696:MB8|0000000000000000 1697:MB8|0000000000000000 1698:MB8|0000000000000000 1699:MB8|0000000000000000 1700:MB8|0000000000000000 1701:MB8|0000000000000000 1702:MB8|0000000000000000 1703:MB8|0000000000000000 1704:MB8|0000000000000000 1705:MB8|0000000000000000 1706:MB8|0000000000000000 1707:MB8|0000000000000000 1708:MB8|0000000000000000 1709:MB8|0000000000000000 1710:MB8|0000000000000000 1711:MB8|0000000000000000 1712:MB8|0000000000000000 1713:MB8|0000000000000000 1714:MB8|0000000000000000 1715:MB8|0000000000000000 1716:MB8|0000000000000000 1717:MB8|0000000000000000 1718:MB8|0000000000000000 1719:MB8|0000000000000000 1720:MB8|0000000000000000 1721:MB8|0000000000000000 1722:MB8|0000000000000000 1723:MB8|0000000000000000 1724:MB8|0000000000000000 1725:MB8|0000000000000000 1726:MB8|0000000000000000 1727:MB8|0000000000000000 1728:MB8|0000000000000000 1729:MB8|0000000000000000 1730:MB8|0000000000000000 1731:MB8|0000000000000000 1732:MB8|0000000000000000 1733:MB8|0000000000000000 1734:MB8|0000000000000000 1735:MB8|0000000000000000 1736:MB8|0000000000000000 1737:MB8|0000000000000000 1738:MB8|0000000000000000 1739:MB8|0000000000000000 1740:MB8|0000000000000000 1741:MB8|0000000000000000 1742:MB8|0000000000000000 1743:MB8|0000000000000000 1744:MB8|0000000000000000 1745:MB8|0000000000000000 1746:MB8|0000000000000000 1747:MB8|0000000000000000 1748:MB8|0000000000000000 1749:MB8|0000000000000000 1750:MB8|0000000000000000 1751:MB8|0000000000000000 1752:MB8|0000000000000000 1753:MB8|0000000000000000 1754:MB8|0000000000000000 1755:MB8|0000000000000000 1756:MB8|0000000000000000 1757:MB8|0000000000000000 1758:MB8|0000000000000000 1759:MB8|0000000000000000 1760:MB8|0000000000000000 1761:MB8|0000000000000000 1762:MB8|0000000000000000 1763:MB8|0000000000000000 1764:MB8|0000000000000000 1765:MB8|0000000000000000 1766:MB8|0000000000000000 1767:MB8|0000000000000000 1768:MB8|0000000000000000 1769:MB8|0000000000000000 1770:MB8|0000000000000000 1771:MB8|0000000000000000 1772:MB8|0000000000000000 1773:MB8|0000000000000000 1774:MB8|0000000000000000 1775:MB8|0000000000000000 1776:MB8|0000000000000000 1777:MB8|0000000000000000 1778:MB8|0000000000000000 1779:MB8|0000000000000000 1780:MB8|0000000000000000 1781:MB8|0000000000000000 1782:MB8|0000000000000000 1783:MB8|0000000000000000 1784:MB8|0000000000000000 1785:MB8|0000000000000000 1786:MB8|0000000000000000 1787:MB8|0000000000000000 1788:MB8|0000000000000000 1789:MB8|0000000000000000 1790:MB8|0000000000000000 1791:MB8|0000000000000000 1792:MB8|0000000000000000 1793:MB8|0000000000000000 1794:MB8|0000000000000000 1795:MB8|0000000000000000 1796:MB8|0000000000000000 1797:MB8|0000000000000000 1798:MB8|0000000000000000 1799:MB8|0000000000000000 1800:MB8|0000000000000000 1801:MB8|0000000000000000 1802:MB8|0000000000000000 1803:MB8|0000000000000000 1804:MB8|0000000000000000 1805:MB8|0000000000000000 1806:MB8|0000000000000000 1807:MB8|0000000000000000 1808:MB8|0000000000000000 1809:MB8|0000000000000000 1810:MB8|0000000000000000 1811:MB8|0000000000000000 1812:MB8|0000000000000000 1813:MB8|0000000000000000 1814:MB8|0000000000000000 1815:MB8|0000000000000000 1816:MB8|0000000000000000 1817:MB8|0000000000000000 1818:MB8|0000000000000000 1819:MB8|0000000000000000 1820:MB8|0000000000000000 1821:MB8|0000000000000000 1822:MB8|0000000000000000 1823:MB8|0000000000000000 1824:MB8|0000000000000000 1825:MB8|0000000000000000 1826:MB8|0000000000000000 1827:MB8|0000000000000000 1828:MB8|0000000000000000 1829:MB8|0000000000000000 1830:MB8|0000000000000000 1831:MB8|0000000000000000 1832:MB8|0000000000000000 1833:MB8|0000000000000000 1834:MB8|0000000000000000 1835:MB8|0000000000000000 1836:MB8|0000000000000000 1837:MB8|0000000000000000 1838:MB8|0000000000000000 1839:MB8|0000000000000000 1840:MB8|0000000000000000 1841:MB8|0000000000000000 1842:MB8|0000000000000000 1843:MB8|0000000000000000 1844:MB8|0000000000000000 1845:MB8|0000000000000000 1846:MB8|0000000000000000 1847:MB8|0000000000000000 1848:MB8|0000000000000000 1849:MB8|0000000000000000 1850:MB8|0000000000000000 1851:MB8|0000000000000000 1852:MB8|0000000000000000 1853:MB8|0000000000000000 1854:MB8|0000000000000000 1855:MB8|0000000000000000 1856:MB8|0000000000000000 1857:MB8|0000000000000000 1858:MB8|0000000000000000 1859:MB8|0000000000000000 1860:MB8|0000000000000000 1861:MB8|0000000000000000 1862:MB8|0000000000000000 1863:MB8|0000000000000000 1864:MB8|0000000000000000 1865:MB8|0000000000000000 1866:MB8|0000000000000000 1867:MB8|0000000000000000 1868:MB8|0000000000000000 1869:MB8|0000000000000000 1870:MB8|0000000000000000 1871:MB8|0000000000000000 1872:MB8|0000000000000000 1873:MB8|0000000000000000 1874:MB8|0000000000000000 1875:MB8|0000000000000000 1876:MB8|0000000000000000 1877:MB8|0000000000000000 1878:MB8|0000000000000000 1879:MB8|0000000000000000 1880:MB8|0000000000000000 1881:MB8|0000000000000000 1882:MB8|0000000000000000 1883:MB8|0000000000000000 1884:MB8|0000000000000000 1885:MB8|0000000000000000 1886:MB8|0000000000000000 1887:MB8|0000000000000000 1888:MB8|0000000000000000 1889:MB8|0000000000000000 1890:MB8|0000000000000000 1891:MB8|0000000000000000 1892:MB8|0000000000000000 1893:MB8|0000000000000000 1894:MB8|0000000000000000 1895:MB8|0000000000000000 1896:MB8|0000000000000000 1897:MB8|0000000000000000 1898:MB8|0000000000000000 1899:MB8|0000000000000000 1900:MB8|0000000000000000 1901:MB8|0000000000000000 1902:MB8|0000000000000000 1903:MB8|0000000000000000 1904:MB8|0000000000000000 1905:MB8|0000000000000000 1906:MB8|0000000000000000 1907:MB8|0000000000000000 1908:MB8|0000000000000000 1909:MB8|0000000000000000 1910:MB8|0000000000000000 1911:MB8|0000000000000000 1912:MB8|0000000000000000 1913:MB8|0000000000000000 1914:MB8|0000000000000000 1915:MB8|0000000000000000 1916:MB8|0000000000000000 1917:MB8|0000000000000000 1918:MB8|0000000000000000 1919:MB8|0000000000000000 1920:MB8|0000000000000000 1921:MB8|0000000000000000 1922:MB8|0000000000000000 1923:MB8|0000000000000000 1924:MB8|0000000000000000 1925:MB8|0000000000000000 1926:MB8|0000000000000000 1927:MB8|0000000000000000 1928:MB8|0000000000000000 1929:MB8|0000000000000000 1930:MB8|0000000000000000 1931:MB8|0000000000000000 1932:MB8|0000000000000000 1933:MB8|0000000000000000 1934:MB8|0000000000000000 1935:MB8|0000000000000000 1936:MB8|0000000000000000 1937:MB8|0000000000000000 1938:MB8|0000000000000000 1939:MB8|0000000000000000 1940:MB8|0000000000000000 1941:MB8|0000000000000000 1942:MB8|0000000000000000 1943:MB8|0000000000000000 1944:MB8|0000000000000000 1945:MB8|0000000000000000 1946:MB8|0000000000000000 1947:MB8|0000000000000000 1948:MB8|0000000000000000 1949:MB8|0000000000000000 1950:MB8|0000000000000000 1951:MB8|0000000000000000 1952:MB8|0000000000000000 1953:MB8|0000000000000000 1954:MB8|0000000000000000 1955:MB8|0000000000000000 1956:MB8|0000000000000000 1957:MB8|0000000000000000 1958:MB8|0000000000000000 1959:MB8|0000000000000000 1960:MB8|0000000000000000 1961:MB8|0000000000000000 1962:MB8|0000000000000000 1963:MB8|0000000000000000 1964:MB8|0000000000000000 1965:MB8|0000000000000000 1966:MB8|0000000000000000 1967:MB8|0000000000000000 1968:MB8|0000000000000000 1969:MB8|0000000000000000 1970:MB8|0000000000000000 1971:MB8|0000000000000000 1972:MB8|0000000000000000 1973:MB8|0000000000000000 1974:MB8|0000000000000000 1975:MB8|0000000000000000 1976:MB8|0000000000000000 1977:MB8|0000000000000000 1978:MB8|0000000000000000 1979:MB8|0000000000000000 1980:MB8|0000000000000000 1981:MB8|0000000000000000 1982:MB8|0000000000000000 1983:MB8|0000000000000000 1984:MB8|0000000000000000 1985:MB8|0000000000000000 1986:MB8|0000000000000000 1987:MB8|0000000000000000 1988:MB8|0000000000000000 1989:MB8|0000000000000000 1990:MB8|0000000000000000 1991:MB8|0000000000000000 1992:MB8|0000000000000000 1993:MB8|0000000000000000 1994:MB8|0000000000000000 1995:MB8|0000000000000000 1996:MB8|0000000000000000 1997:MB8|0000000000000000 1998:MB8|0000000000000000 1999:MB8|0000000000000000 2000:MB8|0000000000000000 2001:MB8|0000000000000000 2002:MB8|0000000000000000 2003:MB8|0000000000000000 2004:MB8|0000000000000000 2005:MB8|0000000000000000 2006:MB8|0000000000000000 2007:MB8|0000000000000000 2008:MB8|0000000000000000 2009:MB8|0000000000000000 2010:MB8|0000000000000000 2011:MB8|0000000000000000 2012:MB8|0000000000000000 2013:MB8|0000000000000000 2014:MB8|0000000000000000 2015:MB8|0000000000000000 2016:MB8|0000000000000000 2017:MB8|0000000000000000 2018:MB8|0000000000000000 2019:MB8|0000000000000000 2020:MB8|0000000000000000 2021:MB8|0000000000000000 2022:MB8|0000000000000000 2023:MB8|0000000000000000 2024:MB8|0000000000000000 2025:MB8|0000000000000000 2026:MB8|0000000000000000 2027:MB8|0000000000000000 2028:MB8|0000000000000000 2029:MB8|0000000000000000 2030:MB8|0000000000000000 2031:MB8|0000000000000000 2032:MB8|0000000000000000 2033:MB8|0000000000000000 2034:MB8|0000000000000000 2035:MB8|0000000000000000 2036:MB8|0000000000000000 2037:MB8|0000000000000000 2038:MB8|0000000000000000 2039:MB8|0000000000000000 2040:MB8|0000000000000000 2041:MB8|0000000000000000 2042:MB8|0000000000000000 2043:MB8|0000000000000000 2044:MB8|0000000000000000 2045:MB8|0000000000000000 2046:MB8|0000000000000000 2047:MB8|0000000000000000 2048:MB8|0000000000000000 2049:MB8|0000000000000000 2050:MB8|0000000000000000 2051:MB8|0000000000000000 2052:MB8|0000000000000000 2053:MB8|0000000000000000 2054:MB8|0000000000000000 2055:MB8|0000000000000000 2056:MB8|0000000000000000 2057:MB8|0000000000000000 2058:MB8|0000000000000000 2059:MB8|0000000000000000 2060:MB8|0000000000000000 2061:MB8|0000000000000000 2062:MB8|0000000000000000 2063:MB8|0000000000000000 2064:MB8|0000000000000000 2065:MB8|0000000000000000 2066:MB8|0000000000000000 2067:MB8|0000000000000000 2068:MB8|0000000000000000 2069:MB8|0000000000000000 2070:MB8|0000000000000000 2071:MB8|0000000000000000 2072:MB8|0000000000000000 2073:MB8|0000000000000000 2074:MB8|0000000000000000 2075:MB8|0000000000000000 2076:MB8|0000000000000000 2077:MB8|0000000000000000 2078:MB8|0000000000000000 2079:MB8|0000000000000000 2080:MB8|0000000000000000 2081:MB8|0000000000000000 2082:MB8|0000000000000000 2083:MB8|0000000000000000 2084:MB8|0000000000000000 2085:MB8|0000000000000000 2086:MB8|0000000000000000 2087:MB8|0000000000000000 2088:MB8|0000000000000000 2089:MB8|0000000000000000 2090:MB8|0000000000000000 2091:MB8|0000000000000000 2092:MB8|0000000000000000 2093:MB8|0000000000000000 2094:MB8|0000000000000000 2095:MB8|0000000000000000 2096:MB8|0000000000000000 2097:MB8|0000000000000000 2098:MB8|0000000000000000 2099:MB8|0000000000000000 2100:MB8|0000000000000000 2101:MB8|0000000000000000 2102:MB8|0000000000000000 2103:MB8|0000000000000000 2104:MB8|0000000000000000 2105:MB8|0000000000000000 2106:MB8|0000000000000000 2107:MB8|0000000000000000 2108:MB8|0000000000000000 2109:MB8|0000000000000000 2110:MB8|0000000000000000 2111:MB8|0000000000000000 2112:MB8|0000000000000000 2113:MB8|0000000000000000 2114:MB8|0000000000000000 2115:MB8|0000000000000000 2116:MB8|0000000000000000 2117:MB8|0000000000000000 2118:MB8|0000000000000000 2119:MB8|0000000000000000 2120:MB8|0000000000000000 2121:MB8|0000000000000000 2122:MB8|0000000000000000 2123:MB8|0000000000000000 2124:MB8|0000000000000000 2125:MB8|0000000000000000 2126:MB8|0000000000000000 2127:MB8|0000000000000000 2128:MB8|0000000000000000 2129:MB8|0000000000000000 2130:MB8|0000000000000000 2131:MB8|0000000000000000 2132:MB8|0000000000000000 2133:MB8|0000000000000000 2134:MB8|0000000000000000 2135:MB8|0000000000000000 2136:MB8|0000000000000000 2137:MB8|0000000000000000 2138:MB8|0000000000000000 2139:MB8|0000000000000000 2140:MB8|0000000000000000 2141:MB8|0000000000000000 2142:MB8|0000000000000000 2143:MB8|0000000000000000 2144:MB8|0000000000000000 2145:MB8|0000000000000000 2146:MB8|0000000000000000 2147:MB8|0000000000000000 2148:MB8|0000000000000000 2149:MB8|0000000000000000 2150:MB8|0000000000000000 2151:MB8|0000000000000000 2152:MB8|0000000000000000 2153:MB8|0000000000000000 2154:MB8|0000000000000000 2155:MB8|0000000000000000 2156:MB8|0000000000000000 2157:MB8|0000000000000000 2158:MB8|0000000000000000 2159:MB8|0000000000000000 2160:MB8|0000000000000000 2161:MB8|0000000000000000 2162:MB8|0000000000000000 2163:MB8|0000000000000000 2164:MB8|0000000000000000 2165:MB8|0000000000000000 2166:MB8|0000000000000000 2167:MB8|0000000000000000 2168:MB8|0000000000000000 2169:MB8|0000000000000000 2170:MB8|0000000000000000 2171:MB8|0000000000000000 2172:MB8|0000000000000000 2173:MB8|0000000000000000 2174:MB8|0000000000000000 2175:MB8|0000000000000000 2176:MB8|0000000000000000 2177:MB8|0000000000000000 2178:MB8|0000000000000000 2179:MB8|0000000000000000 2180:MB8|0000000000000000 2181:MB8|0000000000000000 2182:MB8|0000000000000000 2183:MB8|0000000000000000 2184:MB8|0000000000000000 2185:MB8|0000000000000000 2186:MB8|0000000000000000 2187:MB8|0000000000000000 2188:MB8|0000000000000000 2189:MB8|0000000000000000 2190:MB8|0000000000000000 2191:MB8|0000000000000000 2192:MB8|0000000000000000 2193:MB8|0000000000000000 2194:MB8|0000000000000000 2195:MB8|0000000000000000 2196:MB8|0000000000000000 2197:MB8|0000000000000000 2198:MB8|0000000000000000 2199:MB8|0000000000000000 2200:MB8|0000000000000000 2201:MB8|0000000000000000 2202:MB8|0000000000000000 2203:MB8|0000000000000000 2204:MB8|0000000000000000 2205:MB8|0000000000000000 2206:MB8|0000000000000000 2207:MB8|0000000000000000 2208:MB8|0000000000000000 2209:MB8|0000000000000000 2210:MB8|0000000000000000 2211:MB8|0000000000000000 2212:MB8|0000000000000000 2213:MB8|0000000000000000 2214:MB8|0000000000000000 2215:MB8|0000000000000000 2216:MB8|0000000000000000 2217:MB8|0000000000000000 2218:MB8|0000000000000000 2219:MB8|0000000000000000 2220:MB8|0000000000000000 2221:MB8|0000000000000000 2222:MB8|0000000000000000 2223:MB8|0000000000000000 2224:MB8|0000000000000000 2225:MB8|0000000000000000 2226:MB8|0000000000000000 2227:MB8|0000000000000000 2228:MB8|0000000000000000 2229:MB8|0000000000000000 2230:MB8|0000000000000000 2231:MB8|0000000000000000 2232:MB8|0000000000000000 2233:MB8|0000000000000000 2234:MB8|0000000000000000 2235:MB8|0000000000000000 2236:MB8|0000000000000000 2237:MB8|0000000000000000 2238:MB8|0000000000000000 2239:MB8|0000000000000000 2240:MB8|0000000000000000 2241:MB8|0000000000000000 2242:MB8|0000000000000000 2243:MB8|0000000000000000 2244:MB8|0000000000000000 2245:MB8|0000000000000000 2246:MB8|0000000000000000 2247:MB8|0000000000000000 2248:MB8|0000000000000000 2249:MB8|0000000000000000 2250:MB8|0000000000000000 2251:MB8|0000000000000000 2252:MB8|0000000000000000 2253:MB8|0000000000000000 2254:MB8|0000000000000000 2255:MB8|0000000000000000 2256:MB8|0000000000000000 2257:MB8|0000000000000000 2258:MB8|0000000000000000 2259:MB8|0000000000000000 2260:MB8|0000000000000000 2261:MB8|0000000000000000 2262:MB8|0000000000000000 2263:MB8|0000000000000000 2264:MB8|0000000000000000 2265:MB8|0000000000000000 2266:MB8|0000000000000000 2267:MB8|0000000000000000 2268:MB8|0000000000000000 2269:MB8|0000000000000000 2270:MB8|0000000000000000 2271:MB8|0000000000000000 2272:MB8|0000000000000000 2273:MB8|0000000000000000 2274:MB8|0000000000000000 2275:MB8|0000000000000000 2276:MB8|0000000000000000 2277:MB8|0000000000000000 2278:MB8|0000000000000000 2279:MB8|0000000000000000 2280:MB8|0000000000000000 2281:MB8|0000000000000000 2282:MB8|0000000000000000 2283:MB8|0000000000000000 2284:MB8|0000000000000000 2285:MB8|0000000000000000 2286:MB8|0000000000000000 2287:MB8|0000000000000000 2288:MB8|0000000000000000 2289:MB8|0000000000000000 2290:MB8|0000000000000000 2291:MB8|0000000000000000 2292:MB8|0000000000000000 2293:MB8|0000000000000000 2294:MB8|0000000000000000 2295:MB8|0000000000000000 2296:MB8|0000000000000000 2297:MB8|0000000000000000 2298:MB8|0000000000000000 2299:MB8|0000000000000000 2300:MB8|0000000000000000 2301:MB8|0000000000000000 2302:MB8|0000000000000000 2303:MB8|0000000000000000 2304:MB8|0000000000000000 2305:MB8|0000000000000000 2306:MB8|0000000000000000 2307:MB8|0000000000000000 2308:MB8|0000000000000000 2309:MB8|0000000000000000 2310:MB8|0000000000000000 2311:MB8|0000000000000000 2312:MB8|0000000000000000 2313:MB8|0000000000000000 2314:MB8|0000000000000000 2315:MB8|0000000000000000 2316:MB8|0000000000000000 2317:MB8|0000000000000000 2318:MB8|0000000000000000 2319:MB8|0000000000000000 2320:MB8|0000000000000000 2321:MB8|0000000000000000 2322:MB8|0000000000000000 2323:MB8|0000000000000000 2324:MB8|0000000000000000 2325:MB8|0000000000000000 2326:MB8|0000000000000000 2327:MB8|0000000000000000 2328:MB8|0000000000000000 2329:MB8|0000000000000000 2330:MB8|0000000000000000 2331:MB8|0000000000000000 2332:MB8|0000000000000000 2333:MB8|0000000000000000 2334:MB8|0000000000000000 2335:MB8|0000000000000000 2336:MB8|0000000000000000 2337:MB8|0000000000000000 2338:MB8|0000000000000000 2339:MB8|0000000000000000 2340:MB8|0000000000000000 2341:MB8|0000000000000000 2342:MB8|0000000000000000 2343:MB8|0000000000000000 2344:MB8|0000000000000000 2345:MB8|0000000000000000 2346:MB8|0000000000000000 2347:MB8|0000000000000000 2348:MB8|0000000000000000 2349:MB8|0000000000000000 2350:MB8|0000000000000000 2351:MB8|0000000000000000 2352:MB8|0000000000000000 2353:MB8|0000000000000000 2354:MB8|0000000000000000 2355:MB8|0000000000000000 2356:MB8|0000000000000000 2357:MB8|0000000000000000 2358:MB8|0000000000000000 2359:MB8|0000000000000000 2360:MB8|0000000000000000 2361:MB8|0000000000000000 2362:MB8|0000000000000000 2363:MB8|0000000000000000 2364:MB8|0000000000000000 2365:MB8|0000000000000000 2366:MB8|0000000000000000 2367:MB8|0000000000000000 2368:MB8|0000000000000000 2369:MB8|0000000000000000 2370:MB8|0000000000000000 2371:MB8|0000000000000000 2372:MB8|0000000000000000 2373:MB8|0000000000000000 2374:MB8|0000000000000000 2375:MB8|0000000000000000 2376:MB8|0000000000000000 2377:MB8|0000000000000000 2378:MB8|0000000000000000 2379:MB8|0000000000000000 2380:MB8|0000000000000000 2381:MB8|0000000000000000 2382:MB8|0000000000000000 2383:MB8|0000000000000000 2384:MB8|0000000000000000 2385:MB8|0000000000000000 2386:MB8|0000000000000000 2387:MB8|0000000000000000 2388:MB8|0000000000000000 2389:MB8|0000000000000000 2390:MB8|0000000000000000 2391:MB8|0000000000000000 2392:MB8|0000000000000000 2393:MB8|0000000000000000 2394:MB8|0000000000000000 2395:MB8|0000000000000000 2396:MB8|0000000000000000 2397:MB8|0000000000000000 2398:MB8|0000000000000000 2399:MB8|0000000000000000 2400:MB8|0000000000000000 2401:MB8|0000000000000000 2402:MB8|0000000000000000 2403:MB8|0000000000000000 2404:MB8|0000000000000000 2405:MB8|0000000000000000 2406:MB8|0000000000000000 2407:MB8|0000000000000000 2408:MB8|0000000000000000 2409:MB8|0000000000000000 2410:MB8|0000000000000000 2411:MB8|0000000000000000 2412:MB8|0000000000000000 2413:MB8|0000000000000000 2414:MB8|0000000000000000 2415:MB8|0000000000000000 2416:MB8|0000000000000000 2417:MB8|0000000000000000 2418:MB8|0000000000000000 2419:MB8|0000000000000000 2420:MB8|0000000000000000 2421:MB8|0000000000000000 2422:MB8|0000000000000000 2423:MB8|0000000000000000 2424:MB8|0000000000000000 2425:MB8|0000000000000000 2426:MB8|0000000000000000 2427:MB8|0000000000000000 2428:MB8|0000000000000000 2429:MB8|0000000000000000 2430:MB8|0000000000000000 2431:MB8|0000000000000000 2432:MB8|0000000000000000 2433:MB8|0000000000000000 2434:MB8|0000000000000000 2435:MB8|0000000000000000 2436:MB8|0000000000000000 2437:MB8|0000000000000000 2438:MB8|0000000000000000 2439:MB8|0000000000000000 2440:MB8|0000000000000000 2441:MB8|0000000000000000 2442:MB8|0000000000000000 2443:MB8|0000000000000000 2444:MB8|0000000000000000 2445:MB8|0000000000000000 2446:MB8|0000000000000000 2447:MB8|0000000000000000 2448:MB8|0000000000000000 2449:MB8|0000000000000000 2450:MB8|0000000000000000 2451:MB8|0000000000000000 2452:MB8|0000000000000000 2453:MB8|0000000000000000 2454:MB8|0000000000000000 2455:MB8|0000000000000000 2456:MB8|0000000000000000 2457:MB8|0000000000000000 2458:MB8|0000000000000000 2459:MB8|0000000000000000 2460:MB8|0000000000000000 2461:MB8|0000000000000000 2462:MB8|0000000000000000 2463:MB8|0000000000000000 2464:MB8|0000000000000000 2465:MB8|0000000000000000 2466:MB8|0000000000000000 2467:MB8|0000000000000000 2468:MB8|0000000000000000 2469:MB8|0000000000000000 2470:MB8|0000000000000000 2471:MB8|0000000000000000 2472:MB8|0000000000000000 2473:MB8|0000000000000000 2474:MB8|0000000000000000 2475:MB8|0000000000000000 2476:MB8|0000000000000000 2477:MB8|0000000000000000 2478:MB8|0000000000000000 2479:MB8|0000000000000000 2480:MB8|0000000000000000 2481:MB8|0000000000000000 2482:MB8|0000000000000000 2483:MB8|0000000000000000 2484:MB8|0000000000000000 2485:MB8|0000000000000000 2486:MB8|0000000000000000 2487:MB8|0000000000000000 2488:MB8|0000000000000000 2489:MB8|0000000000000000 2490:MB8|0000000000000000 2491:MB8|0000000000000000 2492:MB8|0000000000000000 2493:MB8|0000000000000000 2494:MB8|0000000000000000 2495:MB8|0000000000000000 2496:MB8|0000000000000000 2497:MB8|0000000000000000 2498:MB8|0000000000000000 2499:MB8|0000000000000000 2500:MB8|0000000000000000 2501:MB8|0000000000000000 2502:MB8|0000000000000000 2503:MB8|0000000000000000 2504:MB8|0000000000000000 2505:MB8|0000000000000000 2506:MB8|0000000000000000 2507:MB8|0000000000000000 2508:MB8|0000000000000000 2509:MB8|0000000000000000 2510:MB8|0000000000000000 2511:MB8|0000000000000000 2512:MB8|0000000000000000 2513:MB8|0000000000000000 2514:MB8|0000000000000000 2515:MB8|0000000000000000 2516:MB8|0000000000000000 2517:MB8|0000000000000000 2518:MB8|0000000000000000 2519:MB8|0000000000000000 2520:MB8|0000000000000000 2521:MB8|0000000000000000 2522:MB8|0000000000000000 2523:MB8|0000000000000000 2524:MB8|0000000000000000 2525:MB8|0000000000000000 2526:MB8|0000000000000000 2527:MB8|0000000000000000 2528:MB8|0000000000000000 2529:MB8|0000000000000000 2530:MB8|0000000000000000 2531:MB8|0000000000000000 2532:MB8|0000000000000000 2533:MB8|0000000000000000 2534:MB8|0000000000000000 2535:MB8|0000000000000000 2536:MB8|0000000000000000 2537:MB8|0000000000000000 2538:MB8|0000000000000000 2539:MB8|0000000000000000 2540:MB8|0000000000000000 2541:MB8|0000000000000000 2542:MB8|0000000000000000 2543:MB8|0000000000000000 2544:MB8|0000000000000000 2545:MB8|0000000000000000 2546:MB8|0000000000000000 2547:MB8|0000000000000000 2548:MB8|0000000000000000 2549:MB8|0000000000000000 2550:MB8|0000000000000000 2551:MB8|0000000000000000 2552:MB8|0000000000000000 2553:MB8|0000000000000000 2554:MB8|0000000000000000 2555:MB8|0000000000000000 2556:MB8|0000000000000000 2557:MB8|0000000000000000 2558:MB8|0000000000000000 2559:MB8|0000000000000000 2560:MB8|0000000000000000 2561:MB8|0000000000000000 2562:MB8|0000000000000000 2563:MB8|0000000000000000 2564:MB8|0000000000000000 2565:MB8|0000000000000000 2566:MB8|0000000000000000 2567:MB8|0000000000000000 2568:MB8|0000000000000000 2569:MB8|0000000000000000 2570:MB8|0000000000000000 2571:MB8|0000000000000000 2572:MB8|0000000000000000 2573:MB8|0000000000000000 2574:MB8|0000000000000000 2575:MB8|0000000000000000 2576:MB8|0000000000000000 2577:MB8|0000000000000000 2578:MB8|0000000000000000 2579:MB8|0000000000000000 2580:MB8|0000000000000000 2581:MB8|0000000000000000 2582:MB8|0000000000000000 2583:MB8|0000000000000000 2584:MB8|0000000000000000 2585:MB8|0000000000000000 2586:MB8|0000000000000000 2587:MB8|0000000000000000 2588:MB8|0000000000000000 2589:MB8|0000000000000000 2590:MB8|0000000000000000 2591:MB8|0000000000000000 2592:MB8|0000000000000000 2593:MB8|0000000000000000 2594:MB8|0000000000000000 2595:MB8|0000000000000000 2596:MB8|0000000000000000 2597:MB8|0000000000000000 2598:MB8|0000000000000000 2599:MB8|0000000000000000 2600:MB8|0000000000000000 2601:MB8|0000000000000000 2602:MB8|0000000000000000 2603:MB8|0000000000000000 2604:MB8|0000000000000000 2605:MB8|0000000000000000 2606:MB8|0000000000000000 2607:MB8|0000000000000000 2608:MB8|0000000000000000 2609:MB8|0000000000000000 2610:MB8|0000000000000000 2611:MB8|0000000000000000 2612:MB8|0000000000000000 2613:MB8|0000000000000000 2614:MB8|0000000000000000 2615:MB8|0000000000000000 2616:MB8|0000000000000000 2617:MB8|0000000000000000 2618:MB8|0000000000000000 2619:MB8|0000000000000000 2620:MB8|0000000000000000 2621:MB8|0000000000000000 2622:MB8|0000000000000000 2623:MB8|0000000000000000 2624:MB8|0000000000000000 2625:MB8|0000000000000000 2626:MB8|0000000000000000 2627:MB8|0000000000000000 2628:MB8|0000000000000000 2629:MB8|0000000000000000 2630:MB8|0000000000000000 2631:MB8|0000000000000000 2632:MB8|0000000000000000 2633:MB8|0000000000000000 2634:MB8|0000000000000000 2635:MB8|0000000000000000 2636:MB8|0000000000000000 2637:MB8|0000000000000000 2638:MB8|0000000000000000 2639:MB8|0000000000000000 2640:MB8|0000000000000000 2641:MB8|0000000000000000 2642:MB8|0000000000000000 2643:MB8|0000000000000000 2644:MB8|0000000000000000 2645:MB8|0000000000000000 2646:MB8|0000000000000000 2647:MB8|0000000000000000 2648:MB8|0000000000000000 2649:MB8|0000000000000000 2650:MB8|0000000000000000 2651:MB8|0000000000000000 2652:MB8|0000000000000000 2653:MB8|0000000000000000 2654:MB8|0000000000000000 2655:MB8|0000000000000000 2656:MB8|0000000000000000 2657:MB8|0000000000000000 2658:MB8|0000000000000000 2659:MB8|0000000000000000 2660:MB8|0000000000000000 2661:MB8|0000000000000000 2662:MB8|0000000000000000 2663:MB8|0000000000000000 2664:MB8|0000000000000000 2665:MB8|0000000000000000 2666:MB8|0000000000000000 2667:MB8|0000000000000000 2668:MB8|0000000000000000 2669:MB8|0000000000000000 2670:MB8|0000000000000000 2671:MB8|0000000000000000 2672:MB8|0000000000000000 2673:MB8|0000000000000000 2674:MB8|0000000000000000 2675:MB8|0000000000000000 2676:MB8|0000000000000000 2677:MB8|0000000000000000 2678:MB8|0000000000000000 2679:MB8|0000000000000000 2680:MB8|0000000000000000 2681:MB8|0000000000000000 2682:MB8|0000000000000000 2683:MB8|0000000000000000 2684:MB8|0000000000000000 2685:MB8|0000000000000000 2686:MB8|0000000000000000 2687:MB8|0000000000000000 2688:MB8|0000000000000000 2689:MB8|0000000000000000 2690:MB8|0000000000000000 2691:MB8|0000000000000000 2692:MB8|0000000000000000 2693:MB8|0000000000000000 2694:MB8|0000000000000000 2695:MB8|0000000000000000 2696:MB8|0000000000000000 2697:MB8|0000000000000000 2698:MB8|0000000000000000 2699:MB8|0000000000000000 2700:MB8|0000000000000000 2701:MB8|0000000000000000 2702:MB8|0000000000000000 2703:MB8|0000000000000000 2704:MB8|0000000000000000 2705:MB8|0000000000000000 2706:MB8|0000000000000000 2707:MB8|0000000000000000 2708:MB8|0000000000000000 2709:MB8|0000000000000000 2710:MB8|0000000000000000 2711:MB8|0000000000000000 2712:MB8|0000000000000000 2713:MB8|0000000000000000 2714:MB8|0000000000000000 2715:MB8|0000000000000000 2716:MB8|0000000000000000 2717:MB8|0000000000000000 2718:MB8|0000000000000000 2719:MB8|0000000000000000 2720:MB8|0000000000000000 2721:MB8|0000000000000000 2722:MB8|0000000000000000 2723:MB8|0000000000000000 2724:MB8|0000000000000000 2725:MB8|0000000000000000 2726:MB8|0000000000000000 2727:MB8|0000000000000000 2728:MB8|0000000000000000 2729:MB8|0000000000000000 2730:MB8|0000000000000000 2731:MB8|0000000000000000 2732:MB8|0000000000000000 2733:MB8|0000000000000000 2734:MB8|0000000000000000 2735:MB8|0000000000000000 2736:MB8|0000000000000000 2737:MB8|0000000000000000 2738:MB8|0000000000000000 2739:MB8|0000000000000000 2740:MB8|0000000000000000 2741:MB8|0000000000000000 2742:MB8|0000000000000000 2743:MB8|0000000000000000 2744:MB8|0000000000000000 2745:MB8|0000000000000000 2746:MB8|0000000000000000 2747:MB8|0000000000000000 2748:MB8|0000000000000000 2749:MB8|0000000000000000 2750:MB8|0000000000000000 2751:MB8|0000000000000000 2752:MB8|0000000000000000 2753:MB8|0000000000000000 2754:MB8|0000000000000000 2755:MB8|0000000000000000 2756:MB8|0000000000000000 2757:MB8|0000000000000000 2758:MB8|0000000000000000 2759:MB8|0000000000000000 2760:MB8|0000000000000000 2761:MB8|0000000000000000 2762:MB8|0000000000000000 2763:MB8|0000000000000000 2764:MB8|0000000000000000 2765:MB8|0000000000000000 2766:MB8|0000000000000000 2767:MB8|0000000000000000 2768:MB8|0000000000000000 2769:MB8|0000000000000000 2770:MB8|0000000000000000 2771:MB8|0000000000000000 2772:MB8|0000000000000000 2773:MB8|0000000000000000 2774:MB8|0000000000000000 2775:MB8|0000000000000000 2776:MB8|0000000000000000 2777:MB8|0000000000000000 2778:MB8|0000000000000000 2779:MB8|0000000000000000 2780:MB8|0000000000000000 2781:MB8|0000000000000000 2782:MB8|0000000000000000 2783:MB8|0000000000000000 2784:MB8|0000000000000000 2785:MB8|0000000000000000 2786:MB8|0000000000000000 2787:MB8|0000000000000000 2788:MB8|0000000000000000 2789:MB8|0000000000000000 2790:MB8|0000000000000000 2791:MB8|0000000000000000 2792:MB8|0000000000000000 2793:MB8|0000000000000000 2794:MB8|0000000000000000 2795:MB8|0000000000000000 2796:MB8|0000000000000000 2797:MB8|0000000000000000 2798:MB8|0000000000000000 2799:MB8|0000000000000000 2800:MB8|0000000000000000 2801:MB8|0000000000000000 2802:MB8|0000000000000000 2803:MB8|0000000000000000 2804:MB8|0000000000000000 2805:MB8|0000000000000000 2806:MB8|0000000000000000 2807:MB8|0000000000000000 2808:MB8|0000000000000000 2809:MB8|0000000000000000 2810:MB8|0000000000000000 2811:MB8|0000000000000000 2812:MB8|0000000000000000 2813:MB8|0000000000000000 2814:MB8|0000000000000000 2815:MB8|0000000000000000 2816:MB8|0000000000000000 2817:MB8|0000000000000000 2818:MB8|0000000000000000 2819:MB8|0000000000000000 2820:MB8|0000000000000000 2821:MB8|0000000000000000 2822:MB8|0000000000000000 2823:MB8|0000000000000000 2824:MB8|0000000000000000 2825:MB8|0000000000000000 2826:MB8|0000000000000000 2827:MB8|0000000000000000 2828:MB8|0000000000000000 2829:MB8|0000000000000000 2830:MB8|0000000000000000 2831:MB8|0000000000000000 2832:MB8|0000000000000000 2833:MB8|0000000000000000 2834:MB8|0000000000000000 2835:MB8|0000000000000000 2836:MB8|0000000000000000 2837:MB8|0000000000000000 2838:MB8|0000000000000000 2839:MB8|0000000000000000 2840:MB8|0000000000000000 2841:MB8|0000000000000000 2842:MB8|0000000000000000 2843:MB8|0000000000000000 2844:MB8|0000000000000000 2845:MB8|0000000000000000 2846:MB8|0000000000000000 2847:MB8|0000000000000000 2848:MB8|0000000000000000 2849:MB8|0000000000000000 2850:MB8|0000000000000000 2851:MB8|0000000000000000 2852:MB8|0000000000000000 2853:MB8|0000000000000000 2854:MB8|0000000000000000 2855:MB8|0000000000000000 2856:MB8|0000000000000000 2857:MB8|0000000000000000 2858:MB8|0000000000000000 2859:MB8|0000000000000000 2860:MB8|0000000000000000 2861:MB8|0000000000000000 2862:MB8|0000000000000000 2863:MB8|0000000000000000 2864:MB8|0000000000000000 2865:MB8|0000000000000000 2866:MB8|0000000000000000 2867:MB8|0000000000000000 2868:MB8|0000000000000000 2869:MB8|0000000000000000 2870:MB8|0000000000000000 2871:MB8|0000000000000000 2872:MB8|0000000000000000 2873:MB8|0000000000000000 2874:MB8|0000000000000000 2875:MB8|0000000000000000 2876:MB8|0000000000000000 2877:MB8|0000000000000000 2878:MB8|0000000000000000 2879:MB8|0000000000000000 2880:MB8|0000000000000000 2881:MB8|0000000000000000 2882:MB8|0000000000000000 2883:MB8|0000000000000000 2884:MB8|0000000000000000 2885:MB8|0000000000000000 2886:MB8|0000000000000000 2887:MB8|0000000000000000 2888:MB8|0000000000000000 2889:MB8|0000000000000000 2890:MB8|0000000000000000 2891:MB8|0000000000000000 2892:MB8|0000000000000000 2893:MB8|0000000000000000 2894:MB8|0000000000000000 2895:MB8|0000000000000000 2896:MB8|0000000000000000 2897:MB8|0000000000000000 2898:MB8|0000000000000000 2899:MB8|0000000000000000 2900:MB8|0000000000000000 2901:MB8|0000000000000000 2902:MB8|0000000000000000 2903:MB8|0000000000000000 2904:MB8|0000000000000000 2905:MB8|0000000000000000 2906:MB8|0000000000000000 2907:MB8|0000000000000000 2908:MB8|0000000000000000 2909:MB8|0000000000000000 2910:MB8|0000000000000000 2911:MB8|0000000000000000 2912:MB8|0000000000000000 2913:MB8|0000000000000000 2914:MB8|0000000000000000 2915:MB8|0000000000000000 2916:MB8|0000000000000000 2917:MB8|0000000000000000 2918:MB8|0000000000000000 2919:MB8|0000000000000000 2920:MB8|0000000000000000 2921:MB8|0000000000000000 2922:MB8|0000000000000000 2923:MB8|0000000000000000 2924:MB8|0000000000000000 2925:MB8|0000000000000000 2926:MB8|0000000000000000 2927:MB8|0000000000000000 2928:MB8|0000000000000000 2929:MB8|0000000000000000 2930:MB8|0000000000000000 2931:MB8|0000000000000000 2932:MB8|0000000000000000 2933:MB8|0000000000000000 2934:MB8|0000000000000000 2935:MB8|0000000000000000 2936:MB8|0000000000000000 2937:MB8|0000000000000000 2938:MB8|0000000000000000 2939:MB8|0000000000000000 2940:MB8|0000000000000000 2941:MB8|0000000000000000 2942:MB8|0000000000000000 2943:MB8|0000000000000000 2944:MB8|0000000000000000 2945:MB8|0000000000000000 2946:MB8|0000000000000000 2947:MB8|0000000000000000 2948:MB8|0000000000000000 2949:MB8|0000000000000000 2950:MB8|0000000000000000 2951:MB8|0000000000000000 2952:MB8|0000000000000000 2953:MB8|0000000000000000 2954:MB8|0000000000000000 2955:MB8|0000000000000000 2956:MB8|0000000000000000 2957:MB8|0000000000000000 2958:MB8|0000000000000000 2959:MB8|0000000000000000 2960:MB8|0000000000000000 2961:MB8|0000000000000000 2962:MB8|0000000000000000 2963:MB8|0000000000000000 2964:MB8|0000000000000000 2965:MB8|0000000000000000 2966:MB8|0000000000000000 2967:MB8|0000000000000000 2968:MB8|0000000000000000 2969:MB8|0000000000000000 2970:MB8|0000000000000000 2971:MB8|0000000000000000 2972:MB8|0000000000000000 2973:MB8|0000000000000000 2974:MB8|0000000000000000 2975:MB8|0000000000000000 2976:MB8|0000000000000000 2977:MB8|0000000000000000 2978:MB8|0000000000000000 2979:MB8|0000000000000000 2980:MB8|0000000000000000 2981:MB8|0000000000000000 2982:MB8|0000000000000000 2983:MB8|0000000000000000 2984:MB8|0000000000000000 2985:MB8|0000000000000000 2986:MB8|0000000000000000 2987:MB8|0000000000000000 2988:MB8|0000000000000000 2989:MB8|0000000000000000 2990:MB8|0000000000000000 2991:MB8|0000000000000000 2992:MB8|0000000000000000 2993:MB8|0000000000000000 2994:MB8|0000000000000000 2995:MB8|0000000000000000 2996:MB8|0000000000000000 2997:MB8|0000000000000000 2998:MB8|0000000000000000 2999:MB8|0000000000000000 3000:MB8|0000000000000000 3001:MB8|0000000000000000 3002:MB8|0000000000000000 3003:MB8|0000000000000000 3004:MB8|0000000000000000 3005:MB8|0000000000000000 3006:MB8|0000000000000000 3007:MB8|0000000000000000 3008:MB8|0000000000000000 3009:MB8|0000000000000000 3010:MB8|0000000000000000 3011:MB8|0000000000000000 3012:MB8|0000000000000000 3013:MB8|0000000000000000 3014:MB8|0000000000000000 3015:MB8|0000000000000000 3016:MB8|0000000000000000 3017:MB8|0000000000000000 3018:MB8|0000000000000000 3019:MB8|0000000000000000 3020:MB8|0000000000000000 3021:MB8|0000000000000000 3022:MB8|0000000000000000 3023:MB8|0000000000000000 3024:MB8|0000000000000000 3025:MB8|0000000000000000 3026:MB8|0000000000000000 3027:MB8|0000000000000000 3028:MB8|0000000000000000 3029:MB8|0000000000000000 3030:MB8|0000000000000000 3031:MB8|0000000000000000 3032:MB8|0000000000000000 3033:MB8|0000000000000000 3034:MB8|0000000000000000 3035:MB8|0000000000000000 3036:MB8|0000000000000000 3037:MB8|0000000000000000 3038:MB8|0000000000000000 3039:MB8|0000000000000000 3040:MB8|0000000000000000 3041:MB8|0000000000000000 3042:MB8|0000000000000000 3043:MB8|0000000000000000 3044:MB8|0000000000000000 3045:MB8|0000000000000000 3046:MB8|0000000000000000 3047:MB8|0000000000000000 3048:MB8|0000000000000000 3049:MB8|0000000000000000 3050:MB8|0000000000000000 3051:MB8|0000000000000000 3052:MB8|0000000000000000 3053:MB8|0000000000000000 3054:MB8|0000000000000000 3055:MB8|0000000000000000 3056:MB8|0000000000000000 3057:MB8|0000000000000000 3058:MB8|0000000000000000 3059:MB8|0000000000000000 3060:MB8|0000000000000000 3061:MB8|0000000000000000 3062:MB8|0000000000000000 3063:MB8|0000000000000000 3064:MB8|0000000000000000 3065:MB8|0000000000000000 3066:MB8|0000000000000000 3067:MB8|0000000000000000 3068:MB8|0000000000000000 3069:MB8|0000000000000000 3070:MB8|0000000000000000 3071:MB8|0000000000000000 3072:MB8|0000000000000000 3073:MB8|0000000000000000 3074:MB8|0000000000000000 3075:MB8|0000000000000000 3076:MB8|0000000000000000 3077:MB8|0000000000000000 3078:MB8|0000000000000000 3079:MB8|0000000000000000 3080:MB8|0000000000000000 3081:MB8|0000000000000000 3082:MB8|0000000000000000 3083:MB8|0000000000000000 3084:MB8|0000000000000000 3085:MB8|0000000000000000 3086:MB8|0000000000000000 3087:MB8|0000000000000000 3088:MB8|0000000000000000 3089:MB8|0000000000000000 3090:MB8|0000000000000000 3091:MB8|0000000000000000 3092:MB8|0000000000000000 3093:MB8|0000000000000000 3094:MB8|0000000000000000 3095:MB8|0000000000000000 3096:MB8|0000000000000000 3097:MB8|0000000000000000 3098:MB8|0000000000000000 3099:MB8|0000000000000000 3100:MB8|0000000000000000 3101:MB8|0000000000000000 3102:MB8|0000000000000000 3103:MB8|0000000000000000 3104:MB8|0000000000000000 3105:MB8|0000000000000000 3106:MB8|0000000000000000 3107:MB8|0000000000000000 3108:MB8|0000000000000000 3109:MB8|0000000000000000 3110:MB8|0000000000000000 3111:MB8|0000000000000000 3112:MB8|0000000000000000 3113:MB8|0000000000000000 3114:MB8|0000000000000000 3115:MB8|0000000000000000 3116:MB8|0000000000000000 3117:MB8|0000000000000000 3118:MB8|0000000000000000 3119:MB8|0000000000000000 3120:MB8|0000000000000000 3121:MB8|0000000000000000 3122:MB8|0000000000000000 3123:MB8|0000000000000000 3124:MB8|0000000000000000 3125:MB8|0000000000000000 3126:MB8|0000000000000000 3127:MB8|0000000000000000 3128:MB8|0000000000000000 3129:MB8|0000000000000000 3130:MB8|0000000000000000 3131:MB8|0000000000000000 3132:MB8|0000000000000000 3133:MB8|0000000000000000 3134:MB8|0000000000000000 3135:MB8|0000000000000000 3136:MB8|0000000000000000 3137:MB8|0000000000000000 3138:MB8|0000000000000000 3139:MB8|0000000000000000 3140:MB8|0000000000000000 3141:MB8|0000000000000000 3142:MB8|0000000000000000 3143:MB8|0000000000000000 3144:MB8|0000000000000000 3145:MB8|0000000000000000 3146:MB8|0000000000000000 3147:MB8|0000000000000000 3148:MB8|0000000000000000 3149:MB8|0000000000000000 3150:MB8|0000000000000000 3151:MB8|0000000000000000 3152:MB8|0000000000000000 3153:MB8|0000000000000000 3154:MB8|0000000000000000 3155:MB8|0000000000000000 3156:MB8|0000000000000000 3157:MB8|0000000000000000 3158:MB8|0000000000000000 3159:MB8|0000000000000000 3160:MB8|0000000000000000 3161:MB8|0000000000000000 3162:MB8|0000000000000000 3163:MB8|0000000000000000 3164:MB8|0000000000000000 3165:MB8|0000000000000000 3166:MB8|0000000000000000 3167:MB8|0000000000000000 3168:MB8|0000000000000000 3169:MB8|0000000000000000 3170:MB8|0000000000000000 3171:MB8|0000000000000000 3172:MB8|0000000000000000 3173:MB8|0000000000000000 3174:MB8|0000000000000000 3175:MB8|0000000000000000 3176:MB8|0000000000000000 3177:MB8|0000000000000000 3178:MB8|0000000000000000 3179:MB8|0000000000000000 3180:MB8|0000000000000000 3181:MB8|0000000000000000 3182:MB8|0000000000000000 3183:MB8|0000000000000000 3184:MB8|0000000000000000 3185:MB8|0000000000000000 3186:MB8|0000000000000000 3187:MB8|0000000000000000 3188:MB8|0000000000000000 3189:MB8|0000000000000000 3190:MB8|0000000000000000 3191:MB8|0000000000000000 3192:MB8|0000000000000000 3193:MB8|0000000000000000 3194:MB8|0000000000000000 3195:MB8|0000000000000000 3196:MB8|0000000000000000 3197:MB8|0000000000000000 3198:MB8|0000000000000000 3199:MB8|0000000000000000 3200:MB8|0000000000000000 3201:MB8|0000000000000000 3202:MB8|0000000000000000 3203:MB8|0000000000000000 3204:MB8|0000000000000000 3205:MB8|0000000000000000 3206:MB8|0000000000000000 3207:MB8|0000000000000000 3208:MB8|0000000000000000 3209:MB8|0000000000000000 3210:MB8|0000000000000000 3211:MB8|0000000000000000 3212:MB8|0000000000000000 3213:MB8|0000000000000000 3214:MB8|0000000000000000 3215:MB8|0000000000000000 3216:MB8|0000000000000000 3217:MB8|0000000000000000 3218:MB8|0000000000000000 3219:MB8|0000000000000000 3220:MB8|0000000000000000 3221:MB8|0000000000000000 3222:MB8|0000000000000000 3223:MB8|0000000000000000 3224:MB8|0000000000000000 3225:MB8|0000000000000000 3226:MB8|0000000000000000 3227:MB8|0000000000000000 3228:MB8|0000000000000000 3229:MB8|0000000000000000 3230:MB8|0000000000000000 3231:MB8|0000000000000000 3232:MB8|0000000000000000 3233:MB8|0000000000000000 3234:MB8|0000000000000000 3235:MB8|0000000000000000 3236:MB8|0000000000000000 3237:MB8|0000000000000000 3238:MB8|0000000000000000 3239:MB8|0000000000000000 3240:MB8|0000000000000000 3241:MB8|0000000000000000 3242:MB8|0000000000000000 3243:MB8|0000000000000000 3244:MB8|0000000000000000 3245:MB8|0000000000000000 3246:MB8|0000000000000000 3247:MB8|0000000000000000 3248:MB8|0000000000000000 3249:MB8|0000000000000000 3250:MB8|0000000000000000 3251:MB8|0000000000000000 3252:MB8|0000000000000000 3253:MB8|0000000000000000 3254:MB8|0000000000000000 3255:MB8|0000000000000000 3256:MB8|0000000000000000 3257:MB8|0000000000000000 3258:MB8|0000000000000000 3259:MB8|0000000000000000 3260:MB8|0000000000000000 3261:MB8|0000000000000000 3262:MB8|0000000000000000 3263:MB8|0000000000000000 3264:MB8|0000000000000000 3265:MB8|0000000000000000 3266:MB8|0000000000000000 3267:MB8|0000000000000000 3268:MB8|0000000000000000 3269:MB8|0000000000000000 3270:MB8|0000000000000000 3271:MB8|0000000000000000 3272:MB8|0000000000000000 3273:MB8|0000000000000000 3274:MB8|0000000000000000 3275:MB8|0000000000000000 3276:MB8|0000000000000000 3277:MB8|0000000000000000 3278:MB8|0000000000000000 3279:MB8|0000000000000000 3280:MB8|0000000000000000 3281:MB8|0000000000000000 3282:MB8|0000000000000000 3283:MB8|0000000000000000 3284:MB8|0000000000000000 3285:MB8|0000000000000000 3286:MB8|0000000000000000 3287:MB8|0000000000000000 3288:MB8|0000000000000000 3289:MB8|0000000000000000 3290:MB8|0000000000000000 3291:MB8|0000000000000000 3292:MB8|0000000000000000 3293:MB8|0000000000000000 3294:MB8|0000000000000000 3295:MB8|0000000000000000 3296:MB8|0000000000000000 3297:MB8|0000000000000000 3298:MB8|0000000000000000 3299:MB8|0000000000000000 3300:MB8|0000000000000000 3301:MB8|0000000000000000 3302:MB8|0000000000000000 3303:MB8|0000000000000000 3304:MB8|0000000000000000 3305:MB8|0000000000000000 3306:MB8|0000000000000000 3307:MB8|0000000000000000 3308:MB8|0000000000000000 3309:MB8|0000000000000000 3310:MB8|0000000000000000 3311:MB8|0000000000000000 3312:MB8|0000000000000000 3313:MB8|0000000000000000 3314:MB8|0000000000000000 3315:MB8|0000000000000000 3316:MB8|0000000000000000 3317:MB8|0000000000000000 3318:MB8|0000000000000000 3319:MB8|0000000000000000 3320:MB8|0000000000000000 3321:MB8|0000000000000000 3322:MB8|0000000000000000 3323:MB8|0000000000000000 3324:MB8|0000000000000000 3325:MB8|0000000000000000 3326:MB8|0000000000000000 3327:MB8|0000000000000000 3328:MB8|0000000000000000 3329:MB8|0000000000000000 3330:MB8|0000000000000000 3331:MB8|0000000000000000 3332:MB8|0000000000000000 3333:MB8|0000000000000000 3334:MB8|0000000000000000 3335:MB8|0000000000000000 3336:MB8|0000000000000000 3337:MB8|0000000000000000 3338:MB8|0000000000000000 3339:MB8|0000000000000000 3340:MB8|0000000000000000 3341:MB8|0000000000000000 3342:MB8|0000000000000000 3343:MB8|0000000000000000 3344:MB8|0000000000000000 3345:MB8|0000000000000000 3346:MB8|0000000000000000 3347:MB8|0000000000000000 3348:MB8|0000000000000000 3349:MB8|0000000000000000 3350:MB8|0000000000000000 3351:MB8|0000000000000000 3352:MB8|0000000000000000 3353:MB8|0000000000000000 3354:MB8|0000000000000000 3355:MB8|0000000000000000 3356:MB8|0000000000000000 3357:MB8|0000000000000000 3358:MB8|0000000000000000 3359:MB8|0000000000000000 3360:MB8|0000000000000000 3361:MB8|0000000000000000 3362:MB8|0000000000000000 3363:MB8|0000000000000000 3364:MB8|0000000000000000 3365:MB8|0000000000000000 3366:MB8|0000000000000000 3367:MB8|0000000000000000 3368:MB8|0000000000000000 3369:MB8|0000000000000000 3370:MB8|0000000000000000 3371:MB8|0000000000000000 3372:MB8|0000000000000000 3373:MB8|0000000000000000 3374:MB8|0000000000000000 3375:MB8|0000000000000000 3376:MB8|0000000000000000 3377:MB8|0000000000000000 3378:MB8|0000000000000000 3379:MB8|0000000000000000 3380:MB8|0000000000000000 3381:MB8|0000000000000000 3382:MB8|0000000000000000 3383:MB8|0000000000000000 3384:MB8|0000000000000000 3385:MB8|0000000000000000 3386:MB8|0000000000000000 3387:MB8|0000000000000000 3388:MB8|0000000000000000 3389:MB8|0000000000000000 3390:MB8|0000000000000000 3391:MB8|0000000000000000 3392:MB8|0000000000000000 3393:MB8|0000000000000000 3394:MB8|0000000000000000 3395:MB8|0000000000000000 3396:MB8|0000000000000000 3397:MB8|0000000000000000 3398:MB8|0000000000000000 3399:MB8|0000000000000000 3400:MB8|0000000000000000 3401:MB8|0000000000000000 3402:MB8|0000000000000000 3403:MB8|0000000000000000 3404:MB8|0000000000000000 3405:MB8|0000000000000000 3406:MB8|0000000000000000 3407:MB8|0000000000000000 3408:MB8|0000000000000000 3409:MB8|0000000000000000 3410:MB8|0000000000000000 3411:MB8|0000000000000000 3412:MB8|0000000000000000 3413:MB8|0000000000000000 3414:MB8|0000000000000000 3415:MB8|0000000000000000 3416:MB8|0000000000000000 3417:MB8|0000000000000000 3418:MB8|0000000000000000 3419:MB8|0000000000000000 3420:MB8|0000000000000000 3421:MB8|0000000000000000 3422:MB8|0000000000000000 3423:MB8|0000000000000000 3424:MB8|0000000000000000 3425:MB8|0000000000000000 3426:MB8|0000000000000000 3427:MB8|0000000000000000 3428:MB8|0000000000000000 3429:MB8|0000000000000000 3430:MB8|0000000000000000 3431:MB8|0000000000000000 3432:MB8|0000000000000000 3433:MB8|0000000000000000 3434:MB8|0000000000000000 3435:MB8|0000000000000000 3436:MB8|0000000000000000 3437:MB8|0000000000000000 3438:MB8|0000000000000000 3439:MB8|0000000000000000 3440:MB8|0000000000000000 3441:MB8|0000000000000000 3442:MB8|0000000000000000 3443:MB8|0000000000000000 3444:MB8|0000000000000000 3445:MB8|0000000000000000 3446:MB8|0000000000000000 3447:MB8|0000000000000000 3448:MB8|0000000000000000 3449:MB8|0000000000000000 3450:MB8|0000000000000000 3451:MB8|0000000000000000 3452:MB8|0000000000000000 3453:MB8|0000000000000000 3454:MB8|0000000000000000 3455:MB8|0000000000000000 3456:MB8|0000000000000000 3457:MB8|0000000000000000 3458:MB8|0000000000000000 3459:MB8|0000000000000000 3460:MB8|0000000000000000 3461:MB8|0000000000000000 3462:MB8|0000000000000000 3463:MB8|0000000000000000 3464:MB8|0000000000000000 3465:MB8|0000000000000000 3466:MB8|0000000000000000 3467:MB8|0000000000000000 3468:MB8|0000000000000000 3469:MB8|0000000000000000 3470:MB8|0000000000000000 3471:MB8|0000000000000000 3472:MB8|0000000000000000 3473:MB8|0000000000000000 3474:MB8|0000000000000000 3475:MB8|0000000000000000 3476:MB8|0000000000000000 3477:MB8|0000000000000000 3478:MB8|0000000000000000 3479:MB8|0000000000000000 3480:MB8|0000000000000000 3481:MB8|0000000000000000 3482:MB8|0000000000000000 3483:MB8|0000000000000000 3484:MB8|0000000000000000 3485:MB8|0000000000000000 3486:MB8|0000000000000000 3487:MB8|0000000000000000 3488:MB8|0000000000000000 3489:MB8|0000000000000000 3490:MB8|0000000000000000 3491:MB8|0000000000000000 3492:MB8|0000000000000000 3493:MB8|0000000000000000 3494:MB8|0000000000000000 3495:MB8|0000000000000000 3496:MB8|0000000000000000 3497:MB8|0000000000000000 3498:MB8|0000000000000000 3499:MB8|0000000000000000 3500:MB8|0000000000000000 3501:MB8|0000000000000000 3502:MB8|0000000000000000 3503:MB8|0000000000000000 3504:MB8|0000000000000000 3505:MB8|0000000000000000 3506:MB8|0000000000000000 3507:MB8|0000000000000000 3508:MB8|0000000000000000 3509:MB8|0000000000000000 3510:MB8|0000000000000000 3511:MB8|0000000000000000 3512:MB8|0000000000000000 3513:MB8|0000000000000000 3514:MB8|0000000000000000 3515:MB8|0000000000000000 3516:MB8|0000000000000000 3517:MB8|0000000000000000 3518:MB8|0000000000000000 3519:MB8|0000000000000000 3520:MB8|0000000000000000 3521:MB8|0000000000000000 3522:MB8|0000000000000000 3523:MB8|0000000000000000 3524:MB8|0000000000000000 3525:MB8|0000000000000000 3526:MB8|0000000000000000 3527:MB8|0000000000000000 3528:MB8|0000000000000000 3529:MB8|0000000000000000 3530:MB8|0000000000000000 3531:MB8|0000000000000000 3532:MB8|0000000000000000 3533:MB8|0000000000000000 3534:MB8|0000000000000000 3535:MB8|0000000000000000 3536:MB8|0000000000000000 3537:MB8|0000000000000000 3538:MB8|0000000000000000 3539:MB8|0000000000000000 3540:MB8|0000000000000000 3541:MB8|0000000000000000 3542:MB8|0000000000000000 3543:MB8|0000000000000000 3544:MB8|0000000000000000 3545:MB8|0000000000000000 3546:MB8|0000000000000000 3547:MB8|0000000000000000 3548:MB8|0000000000000000 3549:MB8|0000000000000000 3550:MB8|0000000000000000 3551:MB8|0000000000000000 3552:MB8|0000000000000000 3553:MB8|0000000000000000 3554:MB8|0000000000000000 3555:MB8|0000000000000000 3556:MB8|0000000000000000 3557:MB8|0000000000000000 3558:MB8|0000000000000000 3559:MB8|0000000000000000 3560:MB8|0000000000000000 3561:MB8|0000000000000000 3562:MB8|0000000000000000 3563:MB8|0000000000000000 3564:MB8|0000000000000000 3565:MB8|0000000000000000 3566:MB8|0000000000000000 3567:MB8|0000000000000000 3568:MB8|0000000000000000 3569:MB8|0000000000000000 3570:MB8|0000000000000000 3571:MB8|0000000000000000 3572:MB8|0000000000000000 3573:MB8|0000000000000000 3574:MB8|0000000000000000 3575:MB8|0000000000000000 3576:MB8|0000000000000000 3577:MB8|0000000000000000 3578:MB8|0000000000000000 3579:MB8|0000000000000000 3580:MB8|0000000000000000 3581:MB8|0000000000000000 3582:MB8|0000000000000000 3583:MB8|0000000000000000 3584:MB8|0000000000000000 3585:MB8|0000000000000000 3586:MB8|0000000000000000 3587:MB8|0000000000000000 3588:MB8|0000000000000000 3589:MB8|0000000000000000 3590:MB8|0000000000000000 3591:MB8|0000000000000000 3592:MB8|0000000000000000 3593:MB8|0000000000000000 3594:MB8|0000000000000000 3595:MB8|0000000000000000 3596:MB8|0000000000000000 3597:MB8|0000000000000000 3598:MB8|0000000000000000 3599:MB8|0000000000000000 3600:MB8|0000000000000000 3601:MB8|0000000000000000 3602:MB8|0000000000000000 3603:MB8|0000000000000000 3604:MB8|0000000000000000 3605:MB8|0000000000000000 3606:MB8|0000000000000000 3607:MB8|0000000000000000 3608:MB8|0000000000000000 3609:MB8|0000000000000000 3610:MB8|0000000000000000 3611:MB8|0000000000000000 3612:MB8|0000000000000000 3613:MB8|0000000000000000 3614:MB8|0000000000000000 3615:MB8|0000000000000000 3616:MB8|0000000000000000 3617:MB8|0000000000000000 3618:MB8|0000000000000000 3619:MB8|0000000000000000 3620:MB8|0000000000000000 3621:MB8|0000000000000000 3622:MB8|0000000000000000 3623:MB8|0000000000000000 3624:MB8|0000000000000000 3625:MB8|0000000000000000 3626:MB8|0000000000000000 3627:MB8|0000000000000000 3628:MB8|0000000000000000 3629:MB8|0000000000000000 3630:MB8|0000000000000000 3631:MB8|0000000000000000 3632:MB8|0000000000000000 3633:MB8|0000000000000000 3634:MB8|0000000000000000 3635:MB8|0000000000000000 3636:MB8|0000000000000000 3637:MB8|0000000000000000 3638:MB8|0000000000000000 3639:MB8|0000000000000000 3640:MB8|0000000000000000 3641:MB8|0000000000000000 3642:MB8|0000000000000000 3643:MB8|0000000000000000 3644:MB8|0000000000000000 3645:MB8|0000000000000000 3646:MB8|0000000000000000 3647:MB8|0000000000000000 3648:MB8|0000000000000000 3649:MB8|0000000000000000 3650:MB8|0000000000000000 3651:MB8|0000000000000000 3652:MB8|0000000000000000 3653:MB8|0000000000000000 3654:MB8|0000000000000000 3655:MB8|0000000000000000 3656:MB8|0000000000000000 3657:MB8|0000000000000000 3658:MB8|0000000000000000 3659:MB8|0000000000000000 3660:MB8|0000000000000000 3661:MB8|0000000000000000 3662:MB8|0000000000000000 3663:MB8|0000000000000000 3664:MB8|0000000000000000 3665:MB8|0000000000000000 3666:MB8|0000000000000000 3667:MB8|0000000000000000 3668:MB8|0000000000000000 3669:MB8|0000000000000000 3670:MB8|0000000000000000 3671:MB8|0000000000000000 3672:MB8|0000000000000000 3673:MB8|0000000000000000 3674:MB8|0000000000000000 3675:MB8|0000000000000000 3676:MB8|0000000000000000 3677:MB8|0000000000000000 3678:MB8|0000000000000000 3679:MB8|0000000000000000 3680:MB8|0000000000000000 3681:MB8|0000000000000000 3682:MB8|0000000000000000 3683:MB8|0000000000000000 3684:MB8|0000000000000000 3685:MB8|0000000000000000 3686:MB8|0000000000000000 3687:MB8|0000000000000000 3688:MB8|0000000000000000 3689:MB8|0000000000000000 3690:MB8|0000000000000000 3691:MB8|0000000000000000 3692:MB8|0000000000000000 3693:MB8|0000000000000000 3694:MB8|0000000000000000 3695:MB8|0000000000000000 3696:MB8|0000000000000000 3697:MB8|0000000000000000 3698:MB8|0000000000000000 3699:MB8|0000000000000000 3700:MB8|0000000000000000 3701:MB8|0000000000000000 3702:MB8|0000000000000000 3703:MB8|0000000000000000 3704:MB8|0000000000000000 3705:MB8|0000000000000000 3706:MB8|0000000000000000 3707:MB8|0000000000000000 3708:MB8|0000000000000000 3709:MB8|0000000000000000 3710:MB8|0000000000000000 3711:MB8|0000000000000000 3712:MB8|0000000000000000 3713:MB8|0000000000000000 3714:MB8|0000000000000000 3715:MB8|0000000000000000 3716:MB8|0000000000000000 3717:MB8|0000000000000000 3718:MB8|0000000000000000 3719:MB8|0000000000000000 3720:MB8|0000000000000000 3721:MB8|0000000000000000 3722:MB8|0000000000000000 3723:MB8|0000000000000000 3724:MB8|0000000000000000 3725:MB8|0000000000000000 3726:MB8|0000000000000000 3727:MB8|0000000000000000 3728:MB8|0000000000000000 3729:MB8|0000000000000000 3730:MB8|0000000000000000 3731:MB8|0000000000000000 3732:MB8|0000000000000000 3733:MB8|0000000000000000 3734:MB8|0000000000000000 3735:MB8|0000000000000000 3736:MB8|0000000000000000 3737:MB8|0000000000000000 3738:MB8|0000000000000000 3739:MB8|0000000000000000 3740:MB8|0000000000000000 3741:MB8|0000000000000000 3742:MB8|0000000000000000 3743:MB8|0000000000000000 3744:MB8|0000000000000000 3745:MB8|0000000000000000 3746:MB8|0000000000000000 3747:MB8|0000000000000000 3748:MB8|0000000000000000 3749:MB8|0000000000000000 3750:MB8|0000000000000000 3751:MB8|0000000000000000 3752:MB8|0000000000000000 3753:MB8|0000000000000000 3754:MB8|0000000000000000 3755:MB8|0000000000000000 3756:MB8|0000000000000000 3757:MB8|0000000000000000 3758:MB8|0000000000000000 3759:MB8|0000000000000000 3760:MB8|0000000000000000 3761:MB8|0000000000000000 3762:MB8|0000000000000000 3763:MB8|0000000000000000 3764:MB8|0000000000000000 3765:MB8|0000000000000000 3766:MB8|0000000000000000 3767:MB8|0000000000000000 3768:MB8|0000000000000000 3769:MB8|0000000000000000 3770:MB8|0000000000000000 3771:MB8|0000000000000000 3772:MB8|0000000000000000 3773:MB8|0000000000000000 3774:MB8|0000000000000000 3775:MB8|0000000000000000 3776:MB8|0000000000000000 3777:MB8|0000000000000000 3778:MB8|0000000000000000 3779:MB8|0000000000000000 3780:MB8|0000000000000000 3781:MB8|0000000000000000 3782:MB8|0000000000000000 3783:MB8|0000000000000000 3784:MB8|0000000000000000 3785:MB8|0000000000000000 3786:MB8|0000000000000000 3787:MB8|0000000000000000 3788:MB8|0000000000000000 3789:MB8|0000000000000000 3790:MB8|0000000000000000 3791:MB8|0000000000000000 3792:MB8|0000000000000000 3793:MB8|0000000000000000 3794:MB8|0000000000000000 3795:MB8|0000000000000000 3796:MB8|0000000000000000 3797:MB8|0000000000000000 3798:MB8|0000000000000000 3799:MB8|0000000000000000 3800:MB8|0000000000000000 3801:MB8|0000000000000000 3802:MB8|0000000000000000 3803:MB8|0000000000000000 3804:MB8|0000000000000000 3805:MB8|0000000000000000 3806:MB8|0000000000000000 3807:MB8|0000000000000000 3808:MB8|0000000000000000 3809:MB8|0000000000000000 3810:MB8|0000000000000000 3811:MB8|0000000000000000 3812:MB8|0000000000000000 3813:MB8|0000000000000000 3814:MB8|0000000000000000 3815:MB8|0000000000000000 3816:MB8|0000000000000000 3817:MB8|0000000000000000 3818:MB8|0000000000000000 3819:MB8|0000000000000000 3820:MB8|0000000000000000 3821:MB8|0000000000000000 3822:MB8|0000000000000000 3823:MB8|0000000000000000 3824:MB8|0000000000000000 3825:MB8|0000000000000000 3826:MB8|0000000000000000 3827:MB8|0000000000000000 3828:MB8|0000000000000000 3829:MB8|0000000000000000 3830:MB8|0000000000000000 3831:MB8|0000000000000000 3832:MB8|0000000000000000 3833:MB8|0000000000000000 3834:MB8|0000000000000000 3835:MB8|0000000000000000 3836:MB8|0000000000000000 3837:MB8|0000000000000000 3838:MB8|0000000000000000 3839:MB8|0000000000000000 3840:MB8|0000000000000000 3841:MB8|0000000000000000 3842:MB8|0000000000000000 3843:MB8|0000000000000000 3844:MB8|0000000000000000 3845:MB8|0000000000000000 3846:MB8|0000000000000000 3847:MB8|0000000000000000 3848:MB8|0000000000000000 3849:MB8|0000000000000000 3850:MB8|0000000000000000 3851:MB8|0000000000000000 3852:MB8|0000000000000000 3853:MB8|0000000000000000 3854:MB8|0000000000000000 3855:MB8|0000000000000000 3856:MB8|0000000000000000 3857:MB8|0000000000000000 3858:MB8|0000000000000000 3859:MB8|0000000000000000 3860:MB8|0000000000000000 3861:MB8|0000000000000000 3862:MB8|0000000000000000 3863:MB8|0000000000000000 3864:MB8|0000000000000000 3865:MB8|0000000000000000 3866:MB8|0000000000000000 3867:MB8|0000000000000000 3868:MB8|0000000000000000 3869:MB8|0000000000000000 3870:MB8|0000000000000000 3871:MB8|0000000000000000 3872:MB8|0000000000000000 3873:MB8|0000000000000000 3874:MB8|0000000000000000 3875:MB8|0000000000000000 3876:MB8|0000000000000000 3877:MB8|0000000000000000 3878:MB8|0000000000000000 3879:MB8|0000000000000000 3880:MB8|0000000000000000 3881:MB8|0000000000000000 3882:MB8|0000000000000000 3883:MB8|0000000000000000 3884:MB8|0000000000000000 3885:MB8|0000000000000000 3886:MB8|0000000000000000 3887:MB8|0000000000000000 3888:MB8|0000000000000000 3889:MB8|0000000000000000 3890:MB8|0000000000000000 3891:MB8|0000000000000000 3892:MB8|0000000000000000 3893:MB8|0000000000000000 3894:MB8|0000000000000000 3895:MB8|0000000000000000 3896:MB8|0000000000000000 3897:MB8|0000000000000000 3898:MB8|0000000000000000 3899:MB8|0000000000000000 3900:MB8|0000000000000000 3901:MB8|0000000000000000 3902:MB8|0000000000000000 3903:MB8|0000000000000000 3904:MB8|0000000000000000 3905:MB8|0000000000000000 3906:MB8|0000000000000000 3907:MB8|0000000000000000 3908:MB8|0000000000000000 3909:MB8|0000000000000000 3910:MB8|0000000000000000 3911:MB8|0000000000000000 3912:MB8|0000000000000000 3913:MB8|0000000000000000 3914:MB8|0000000000000000 3915:MB8|0000000000000000 3916:MB8|0000000000000000 3917:MB8|0000000000000000 3918:MB8|0000000000000000 3919:MB8|0000000000000000 3920:MB8|0000000000000000 3921:MB8|0000000000000000 3922:MB8|0000000000000000 3923:MB8|0000000000000000 3924:MB8|0000000000000000 3925:MB8|0000000000000000 3926:MB8|0000000000000000 3927:MB8|0000000000000000 3928:MB8|0000000000000000 3929:MB8|0000000000000000 3930:MB8|0000000000000000 3931:MB8|0000000000000000 3932:MB8|0000000000000000 3933:MB8|0000000000000000 3934:MB8|0000000000000000 3935:MB8|0000000000000000 3936:MB8|0000000000000000 3937:MB8|0000000000000000 3938:MB8|0000000000000000 3939:MB8|0000000000000000 3940:MB8|0000000000000000 3941:MB8|0000000000000000 3942:MB8|0000000000000000 3943:MB8|0000000000000000 3944:MB8|0000000000000000 3945:MB8|0000000000000000 3946:MB8|0000000000000000 3947:MB8|0000000000000000 3948:MB8|0000000000000000 3949:MB8|0000000000000000 3950:MB8|0000000000000000 3951:MB8|0000000000000000 3952:MB8|0000000000000000 3953:MB8|0000000000000000 3954:MB8|0000000000000000 3955:MB8|0000000000000000 3956:MB8|0000000000000000 3957:MB8|0000000000000000 3958:MB8|0000000000000000 3959:MB8|0000000000000000 3960:MB8|0000000000000000 3961:MB8|0000000000000000 3962:MB8|0000000000000000 3963:MB8|0000000000000000 3964:MB8|0000000000000000 3965:MB8|0000000000000000 3966:MB8|0000000000000000 3967:MB8|0000000000000000 3968:MB8|0000000000000000 3969:MB8|0000000000000000 3970:MB8|0000000000000000 3971:MB8|0000000000000000 3972:MB8|0000000000000000 3973:MB8|0000000000000000 3974:MB8|0000000000000000 3975:MB8|0000000000000000 3976:MB8|0000000000000000 3977:MB8|0000000000000000 3978:MB8|0000000000000000 3979:MB8|0000000000000000 3980:MB8|0000000000000000 3981:MB8|0000000000000000 3982:MB8|0000000000000000 3983:MB8|0000000000000000 3984:MB8|0000000000000000 3985:MB8|0000000000000000 3986:MB8|0000000000000000 3987:MB8|0000000000000000 3988:MB8|0000000000000000 3989:MB8|0000000000000000 3990:MB8|0000000000000000 3991:MB8|0000000000000000 3992:MB8|0000000000000000 3993:MB8|0000000000000000 3994:MB8|0000000000000000 3995:MB8|0000000000000000 3996:MB8|0000000000000000 3997:MB8|0000000000000000 3998:MB8|0000000000000000 3999:MB8|0000000000000000 4000:MB8|0000000000000000 4001:MB8|0000000000000000 4002:MB8|0000000000000000 4003:MB8|0000000000000000 4004:MB8|0000000000000000 4005:MB8|0000000000000000 4006:MB8|0000000000000000 4007:MB8|0000000000000000 4008:MB8|0000000000000000 4009:MB8|0000000000000000 4010:MB8|0000000000000000 4011:MB8|0000000000000000 4012:MB8|0000000000000000 4013:MB8|0000000000000000 4014:MB8|0000000000000000 4015:MB8|0000000000000000 4016:MB8|0000000000000000 4017:MB8|0000000000000000 4018:MB8|0000000000000000 4019:MB8|0000000000000000 4020:MB8|0000000000000000 4021:MB8|0000000000000000 4022:MB8|0000000000000000 4023:MB8|0000000000000000 4024:MB8|0000000000000000 4025:MB8|0000000000000000 4026:MB8|0000000000000000 4027:MB8|0000000000000000 4028:MB8|0000000000000000 4029:MB8|0000000000000000 4030:MB8|0000000000000000 4031:MB8|0000000000000000 4032:MB8|0000000000000000 4033:MB8|0000000000000000 4034:MB8|0000000000000000 4035:MB8|0000000000000000 4036:MB8|0000000000000000 4037:MB8|0000000000000000 4038:MB8|0000000000000000 4039:MB8|0000000000000000 4040:MB8|0000000000000000 4041:MB8|0000000000000000 4042:MB8|0000000000000000 4043:MB8|0000000000000000 4044:MB8|0000000000000000 4045:MB8|0000000000000000 4046:MB8|0000000000000000 4047:MB8|0000000000000000 4048:MB8|0000000000000000 4049:MB8|0000000000000000 4050:MB8|0000000000000000 4051:MB8|0000000000000000 4052:MB8|0000000000000000 4053:MB8|0000000000000000 4054:MB8|0000000000000000 4055:MB8|0000000000000000 4056:MB8|0000000000000000 4057:MB8|0000000000000000 4058:MB8|0000000000000000 4059:MB8|0000000000000000 4060:MB8|0000000000000000 4061:MB8|0000000000000000 4062:MB8|0000000000000000 4063:MB8|0000000000000000 4064:MB8|0000000000000000 4065:MB8|0000000000000000 4066:MB8|0000000000000000 4067:MB8|0000000000000000 4068:MB8|0000000000000000 4069:MB8|0000000000000000 4070:MB8|0000000000000000 4071:MB8|0000000000000000 4072:MB8|0000000000000000 4073:MB8|0000000000000000 4074:MB8|0000000000000000 4075:MB8|0000000000000000 4076:MB8|0000000000000000 4077:MB8|0000000000000000 4078:MB8|0000000000000000 4079:MB8|0000000000000000 4080:MB8|0000000000000000 4081:MB8|0000000000000000 4082:MB8|0000000000000000 4083:MB8|0000000000000000 4084:MB8|0000000000000000 4085:MB8|0000000000000000 4086:MB8|0000000000000000 4087:MB8|0000000000000000 4088:MB8|0000000000000000 4089:MB8|0000000000000000 4090:MB8|0000000000000000 4091:MB8|0000000000000000 4092:MB8|0000000000000000 4093:MB8|0000000000000000 4094:MB8|0000000000000000 4095:MB8|0000000000000000 4096:MB8|0000000000000000 4097:MB8|0000000000000000 4098:MB8|0000000000000000 4099:MB8|0000000000000000 4100:MB8|0000000000000000 4101:MB8|0000000000000000 4102:MB8|0000000000000000 4103:MB8|0000000000000000 4104:MB8|0000000000000000 4105:MB8|0000000000000000 4106:MB8|0000000000000000 4107:MB8|0000000000000000 4108:MB8|0000000000000000 4109:MB8|0000000000000000 4110:MB8|0000000000000000 4111:MB8|0000000000000000 4112:MB8|0000000000000000 4113:MB8|0000000000000000 4114:MB8|0000000000000000 4115:MB8|0000000000000000 4116:MB8|0000000000000000 4117:MB8|0000000000000000 4118:MB8|0000000000000000 4119:MB8|0000000000000000 4120:MB8|0000000000000000 4121:MB8|0000000000000000 4122:MB8|0000000000000000 4123:MB8|0000000000000000 4124:MB8|0000000000000000 4125:MB8|0000000000000000 4126:MB8|0000000000000000 4127:MB8|0000000000000000 4128:MB8|0000000000000000 4129:MB8|0000000000000000 4130:MB8|0000000000000000 4131:MB8|0000000000000000 4132:MB8|0000000000000000 4133:MB8|0000000000000000 4134:MB8|0000000000000000 4135:MB8|0000000000000000 4136:MB8|0000000000000000 4137:MB8|0000000000000000 4138:MB8|0000000000000000 4139:MB8|0000000000000000 4140:MB8|0000000000000000 4141:MB8|0000000000000000 4142:MB8|0000000000000000 4143:MB8|0000000000000000 4144:MB8|0000000000000000 4145:MB8|0000000000000000 4146:MB8|0000000000000000 4147:MB8|0000000000000000 4148:MB8|0000000000000000 4149:MB8|0000000000000000 4150:MB8|0000000000000000 4151:MB8|0000000000000000 4152:MB8|0000000000000000 4153:MB8|0000000000000000 4154:MB8|0000000000000000 4155:MB8|0000000000000000 4156:MB8|0000000000000000 4157:MB8|0000000000000000 4158:MB8|0000000000000000 4159:MB8|0000000000000000 4160:MB8|0000000000000000 4161:MB8|0000000000000000 4162:MB8|0000000000000000 4163:MB8|0000000000000000 4164:MB8|0000000000000000 4165:MB8|0000000000000000 4166:MB8|0000000000000000 4167:MB8|0000000000000000 4168:MB8|0000000000000000 4169:MB8|0000000000000000 4170:MB8|0000000000000000 4171:MB8|0000000000000000 4172:MB8|0000000000000000 4173:MB8|0000000000000000 4174:MB8|0000000000000000 4175:MB8|0000000000000000 4176:MB8|0000000000000000 4177:MB8|0000000000000000 4178:MB8|0000000000000000 4179:MB8|0000000000000000 4180:MB8|0000000000000000 4181:MB8|0000000000000000 4182:MB8|0000000000000000 4183:MB8|0000000000000000 4184:MB8|0000000000000000 4185:MB8|0000000000000000 4186:MB8|0000000000000000 4187:MB8|0000000000000000 4188:MB8|0000000000000000 4189:MB8|0000000000000000 4190:MB8|0000000000000000 4191:MB8|0000000000000000 4192:MB8|0000000000000000 4193:MB8|0000000000000000 4194:MB8|0000000000000000 4195:MB8|0000000000000000 4196:MB8|0000000000000000 4197:MB8|0000000000000000 4198:MB8|0000000000000000 4199:MB8|0000000000000000 4200:MB8|0000000000000000 4201:MB8|0000000000000000 4202:MB8|0000000000000000 4203:MB8|0000000000000000 4204:MB8|0000000000000000 4205:MB8|0000000000000000 4206:MB8|0000000000000000 4207:MB8|0000000000000000 4208:MB8|0000000000000000 4209:MB8|0000000000000000 4210:MB8|0000000000000000 4211:MB8|0000000000000000 4212:MB8|0000000000000000 4213:MB8|0000000000000000 4214:MB8|0000000000000000 4215:MB8|0000000000000000 4216:MB8|0000000000000000 4217:MB8|0000000000000000 4218:MB8|0000000000000000 4219:MB8|0000000000000000 4220:MB8|0000000000000000 4221:MB8|0000000000000000 4222:MB8|0000000000000000 4223:MB8|0000000000000000 4224:MB8|0000000000000000 4225:MB8|0000000000000000 4226:MB8|0000000000000000 4227:MB8|0000000000000000 4228:MB8|0000000000000000 4229:MB8|0000000000000000 4230:MB8|0000000000000000 4231:MB8|0000000000000000 4232:MB8|0000000000000000 4233:MB8|0000000000000000 4234:MB8|0000000000000000 4235:MB8|0000000000000000 4236:MB8|0000000000000000 4237:MB8|0000000000000000 4238:MB8|0000000000000000 4239:MB8|0000000000000000 4240:MB8|0000000000000000 4241:MB8|0000000000000000 4242:MB8|0000000000000000 4243:MB8|0000000000000000 4244:MB8|0000000000000000 4245:MB8|0000000000000000 4246:MB8|0000000000000000 4247:MB8|0000000000000000 4248:MB8|0000000000000000 4249:MB8|0000000000000000 4250:MB8|0000000000000000 4251:MB8|0000000000000000 4252:MB8|0000000000000000 4253:MB8|0000000000000000 4254:MB8|0000000000000000 4255:MB8|0000000000000000 4256:MB8|0000000000000000 4257:MB8|0000000000000000 4258:MB8|0000000000000000 4259:MB8|0000000000000000 4260:MB8|0000000000000000 4261:MB8|0000000000000000 4262:MB8|0000000000000000 4263:MB8|0000000000000000 4264:MB8|0000000000000000 4265:MB8|0000000000000000 4266:MB8|0000000000000000 4267:MB8|0000000000000000 4268:MB8|0000000000000000 4269:MB8|0000000000000000 4270:MB8|0000000000000000 4271:MB8|0000000000000000 4272:MB8|0000000000000000 4273:MB8|0000000000000000 4274:MB8|0000000000000000 4275:MB8|0000000000000000 4276:MB8|0000000000000000 4277:MB8|0000000000000000 4278:MB8|0000000000000000 4279:MB8|0000000000000000 4280:MB8|0000000000000000 4281:MB8|0000000000000000 4282:MB8|0000000000000000 4283:MB8|0000000000000000 4284:MB8|0000000000000000 4285:MB8|0000000000000000 4286:MB8|0000000000000000 4287:MB8|0000000000000000 4288:MB8|0000000000000000 4289:MB8|0000000000000000 4290:MB8|0000000000000000 4291:MB8|0000000000000000 4292:MB8|0000000000000000 4293:MB8|0000000000000000 4294:MB8|0000000000000000 4295:MB8|0000000000000000 4296:MB8|0000000000000000 4297:MB8|0000000000000000 4298:MB8|0000000000000000 4299:MB8|0000000000000000 4300:MB8|0000000000000000 4301:MB8|0000000000000000 4302:MB8|0000000000000000 4303:MB8|0000000000000000 4304:MB8|0000000000000000 4305:MB8|0000000000000000 4306:MB8|0000000000000000 4307:MB8|0000000000000000 4308:MB8|0000000000000000 4309:MB8|0000000000000000 4310:MB8|0000000000000000 4311:MB8|0000000000000000 4312:MB8|0000000000000000 4313:MB8|0000000000000000 4314:MB8|0000000000000000 4315:MB8|0000000000000000 4316:MB8|0000000000000000 4317:MB8|0000000000000000 4318:MB8|0000000000000000 4319:MB8|0000000000000000 4320:MB8|0000000000000000 4321:MB8|0000000000000000 4322:MB8|0000000000000000 4323:MB8|0000000000000000 4324:MB8|0000000000000000 4325:MB8|0000000000000000 4326:MB8|0000000000000000 4327:MB8|0000000000000000 4328:MB8|0000000000000000 4329:MB8|0000000000000000 4330:MB8|0000000000000000 4331:MB8|0000000000000000 4332:MB8|0000000000000000 4333:MB8|0000000000000000 4334:MB8|0000000000000000 4335:MB8|0000000000000000 4336:MB8|0000000000000000 4337:MB8|0000000000000000 4338:MB8|0000000000000000 4339:MB8|0000000000000000 4340:MB8|0000000000000000 4341:MB8|0000000000000000 4342:MB8|0000000000000000 4343:MB8|0000000000000000 4344:MB8|0000000000000000 4345:MB8|0000000000000000 4346:MB8|0000000000000000 4347:MB8|0000000000000000 4348:MB8|0000000000000000 4349:MB8|0000000000000000 4350:MB8|0000000000000000 4351:MB8|0000000000000000 4352:MB8|0000000000000000 4353:MB8|0000000000000000 4354:MB8|0000000000000000 4355:MB8|0000000000000000 4356:MB8|0000000000000000 4357:MB8|0000000000000000 4358:MB8|0000000000000000 4359:MB8|0000000000000000 4360:MB8|0000000000000000 4361:MB8|0000000000000000 4362:MB8|0000000000000000 4363:MB8|0000000000000000 4364:MB8|0000000000000000 4365:MB8|0000000000000000 4366:MB8|0000000000000000 4367:MB8|0000000000000000 4368:MB8|0000000000000000 4369:MB8|0000000000000000 4370:MB8|0000000000000000 4371:MB8|0000000000000000 4372:MB8|0000000000000000 4373:MB8|0000000000000000 4374:MB8|0000000000000000 4375:MB8|0000000000000000 4376:MB8|0000000000000000 4377:MB8|0000000000000000 4378:MB8|0000000000000000 4379:MB8|0000000000000000 4380:MB8|0000000000000000 4381:MB8|0000000000000000 4382:MB8|0000000000000000 4383:MB8|0000000000000000 4384:MB8|0000000000000000 4385:MB8|0000000000000000 4386:MB8|0000000000000000 4387:MB8|0000000000000000 4388:MB8|0000000000000000 4389:MB8|0000000000000000 4390:MB8|0000000000000000 4391:MB8|0000000000000000 4392:MB8|0000000000000000 4393:MB8|0000000000000000 4394:MB8|0000000000000000 4395:MB8|0000000000000000 4396:MB8|0000000000000000 4397:MB8|0000000000000000 4398:MB8|0000000000000000 4399:MB8|0000000000000000 4400:MB8|0000000000000000 4401:MB8|0000000000000000 4402:MB8|0000000000000000 4403:MB8|0000000000000000 4404:MB8|0000000000000000 4405:MB8|0000000000000000 4406:MB8|0000000000000000 4407:MB8|0000000000000000 4408:MB8|0000000000000000 4409:MB8|0000000000000000 4410:MB8|0000000000000000 4411:MB8|0000000000000000 4412:MB8|0000000000000000 4413:MB8|0000000000000000 4414:MB8|0000000000000000 4415:MB8|0000000000000000 4416:MB8|0000000000000000 4417:MB8|0000000000000000 4418:MB8|0000000000000000 4419:MB8|0000000000000000 4420:MB8|0000000000000000 4421:MB8|0000000000000000 4422:MB8|0000000000000000 4423:MB8|0000000000000000 4424:MB8|0000000000000000 4425:MB8|0000000000000000 4426:MB8|0000000000000000 4427:MB8|0000000000000000 4428:MB8|0000000000000000 4429:MB8|0000000000000000 4430:MB8|0000000000000000 4431:MB8|0000000000000000 4432:MB8|0000000000000000 4433:MB8|0000000000000000 4434:MB8|0000000000000000 4435:MB8|0000000000000000 4436:MB8|0000000000000000 4437:MB8|0000000000000000 4438:MB8|0000000000000000 4439:MB8|0000000000000000 4440:MB8|0000000000000000 4441:MB8|0000000000000000 4442:MB8|0000000000000000 4443:MB8|0000000000000000 4444:MB8|0000000000000000 4445:MB8|0000000000000000 4446:MB8|0000000000000000 4447:MB8|0000000000000000 4448:MB8|0000000000000000 4449:MB8|0000000000000000 4450:MB8|0000000000000000 4451:MB8|0000000000000000 4452:MB8|0000000000000000 4453:MB8|0000000000000000 4454:MB8|0000000000000000 4455:MB8|0000000000000000 4456:MB8|0000000000000000 4457:MB8|0000000000000000 4458:MB8|0000000000000000 4459:MB8|0000000000000000 4460:MB8|0000000000000000 4461:MB8|0000000000000000 4462:MB8|0000000000000000 4463:MB8|0000000000000000 4464:MB8|0000000000000000 4465:MB8|0000000000000000 4466:MB8|0000000000000000 4467:MB8|0000000000000000 4468:MB8|0000000000000000 4469:MB8|0000000000000000 4470:MB8|0000000000000000 4471:MB8|0000000000000000 4472:MB8|0000000000000000 4473:MB8|0000000000000000 4474:MB8|0000000000000000 4475:MB8|0000000000000000 4476:MB8|0000000000000000 4477:MB8|0000000000000000 4478:MB8|0000000000000000 4479:MB8|0000000000000000 4480:MB8|0000000000000000 4481:MB8|0000000000000000 4482:MB8|0000000000000000 4483:MB8|0000000000000000 4484:MB8|0000000000000000 4485:MB8|0000000000000000 4486:MB8|0000000000000000 4487:MB8|0000000000000000 4488:MB8|0000000000000000 4489:MB8|0000000000000000 4490:MB8|0000000000000000 4491:MB8|0000000000000000 4492:MB8|0000000000000000 4493:MB8|0000000000000000 4494:MB8|0000000000000000 4495:MB8|0000000000000000 4496:MB8|0000000000000000 4497:MB8|0000000000000000 4498:MB8|0000000000000000 4499:MB8|0000000000000000 4500:MB8|0000000000000000 4501:MB8|0000000000000000 4502:MB8|0000000000000000 4503:MB8|0000000000000000 4504:MB8|0000000000000000 4505:MB8|0000000000000000 4506:MB8|0000000000000000 4507:MB8|0000000000000000 4508:MB8|0000000000000000 4509:MB8|0000000000000000 4510:MB8|0000000000000000 4511:MB8|0000000000000000 4512:MB8|0000000000000000 4513:MB8|0000000000000000 4514:MB8|0000000000000000 4515:MB8|0000000000000000 4516:MB8|0000000000000000 4517:MB8|0000000000000000 4518:MB8|0000000000000000 4519:MB8|0000000000000000 4520:MB8|0000000000000000 4521:MB8|0000000000000000 4522:MB8|0000000000000000 4523:MB8|0000000000000000 4524:MB8|0000000000000000 4525:MB8|0000000000000000 4526:MB8|0000000000000000 4527:MB8|0000000000000000 4528:MB8|0000000000000000 4529:MB8|0000000000000000 4530:MB8|0000000000000000 4531:MB8|0000000000000000 4532:MB8|0000000000000000 4533:MB8|0000000000000000 4534:MB8|0000000000000000 4535:MB8|0000000000000000 4536:MB8|0000000000000000 4537:MB8|0000000000000000 4538:MB8|0000000000000000 4539:MB8|0000000000000000 4540:MB8|0000000000000000 4541:MB8|0000000000000000 4542:MB8|0000000000000000 4543:MB8|0000000000000000 4544:MB8|0000000000000000 4545:MB8|0000000000000000 4546:MB8|0000000000000000 4547:MB8|0000000000000000 4548:MB8|0000000000000000 4549:MB8|0000000000000000 4550:MB8|0000000000000000 4551:MB8|0000000000000000 4552:MB8|0000000000000000 4553:MB8|0000000000000000 4554:MB8|0000000000000000 4555:MB8|0000000000000000 4556:MB8|0000000000000000 4557:MB8|0000000000000000 4558:MB8|0000000000000000 4559:MB8|0000000000000000 4560:MB8|0000000000000000 4561:MB8|0000000000000000 4562:MB8|0000000000000000 4563:MB8|0000000000000000 4564:MB8|0000000000000000 4565:MB8|0000000000000000 4566:MB8|0000000000000000 4567:MB8|0000000000000000 4568:MB8|0000000000000000 4569:MB8|0000000000000000 4570:MB8|0000000000000000 4571:MB8|0000000000000000 4572:MB8|0000000000000000 4573:MB8|0000000000000000 4574:MB8|0000000000000000 4575:MB8|0000000000000000 4576:MB8|0000000000000000 4577:MB8|0000000000000000 4578:MB8|0000000000000000 4579:MB8|0000000000000000 4580:MB8|0000000000000000 4581:MB8|0000000000000000 4582:MB8|0000000000000000 4583:MB8|0000000000000000 4584:MB8|0000000000000000 4585:MB8|0000000000000000 4586:MB8|0000000000000000 4587:MB8|0000000000000000 4588:MB8|0000000000000000 4589:MB8|0000000000000000 4590:MB8|0000000000000000 4591:MB8|0000000000000000 4592:MB8|0000000000000000 4593:MB8|0000000000000000 4594:MB8|0000000000000000 4595:MB8|0000000000000000 4596:MB8|0000000000000000 4597:MB8|0000000000000000 4598:MB8|0000000000000000 4599:MB8|0000000000000000 4600:MB8|0000000000000000 4601:MB8|0000000000000000 4602:MB8|0000000000000000 4603:MB8|0000000000000000 4604:MB8|0000000000000000 4605:MB8|0000000000000000 4606:MB8|0000000000000000 4607:MB8|0000000000000000 19848:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19849:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19850:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19851:MWVB32|0000000000000000506f6c7950726f63657373456e764572726f724e616d6500 19852:MWVB32|0000000000000000506f6c795468726561644d75746578556e6c6f636b000000 19853:MWVB32|0000000000000000506f6c795468726561644d75746578426c6f636b00000000 19854:MWVB32|0000000000000000506f6c7954687265616454657374496e7465727275707400 19855:MWVB32|0000000000000000506f6c79546872656164466f726b54687265616400000000 19856:MWVB32|0000000000000000506f6c79546872656164436f6e6456617257616b65000000 19857:MWVB32|0000000000000000506f6c7957616974466f725369676e616c00000000000000 19858:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 19859:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19860:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19861:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19862:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 19863:MWVB24|0000000000000000506f6c7946696e697368000000000000 19864:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 19865:MWVB32|0000000000000000506f6c795468726561644d6178537461636b53697a650000 19866:MWVB32|0000000000000000506f6c794164644172626974726172790000000000000000 19867:MWVB32|0000000000000000506f6c7951756f7452656d41726269747261727900000000 19868:MWVB32|0000000000000000506f6c795375627472616374417262697472617279000000 19869:MWVB32|0000000000000000506f6c7947657446756e6374696f6e4e616d650000000000 19870:MWVB32|0000000000000000506f6c794d756c7469706c79417262697472617279000000 19871:MWVB32|0000000000000000506f6c79436f6d7061726541726269747261727900000000 19872:MWVB32|0000000000000000506f6c795265616c426f786564546f537472696e67000000 19873:MWVB32|0000000000000000506f6c794c6f636b4d757461626c65436f64650000000000 19874:MWVB40|0000000000000000506f6c794765744c6f774f7264657241734c61726765576f7264000000000000 19875:MWVB32|0000000000000000506f6c79536574436f6465436f6e7374616e740000000000 19876:MWVB32|0000000000000000506f6c79436f707942797465566563546f436f6465000000 19877:MWVB32|0000000000000000506f6c7952656d61696e6465724172626974726172790000 19878:MWVB32|0000000000000000506f6c794469766964654172626974726172790000000000 19879:MWVB24|0000000000000000506f6c795265616c47656e6572616c00 19880:MWVB24|0000000000000000506f6c794f7241726269747261727900 19881:MWVB24|0000000000000000506f6c7953697a65446f75626c650000 19882:MWVB24|0000000000000000506f6c7953697a65466c6f6174000000 19883:MWVB24|0000000000000000506f6c79476574414249000000000000 19884:MWVB40|0000000000000000506f6c79437265617465456e747279506f696e744f626a656374000000000000 19885:MWVB32|0000000000000000506f6c7950726f63657373456e7647656e6572616c000000 19886:MWVB32|0000000000000000506f6c794261736963494f47656e6572616c000000000000 polyml-5.7.1/PolyPerf/0000755000175000017500000000000013204034553013537 5ustar daviddavidpolyml-5.7.1/PolyPerf/PolyPerf.vcxproj0000644000175000017500000001564513204034553016727 0ustar daviddavid Debug Win32 Release Win32 Debug x64 Release x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B} PolyPerf DynamicLibrary true v140_xp MultiByte DynamicLibrary false v140_xp true MultiByte DynamicLibrary true v140_xp MultiByte DynamicLibrary false v140_xp true MultiByte Level3 Disabled true _CRT_SECURE_NO_WARNINGS;POLYPERF_EXPORTS;%(PreprocessorDefinitions) true psapi.lib;%(AdditionalDependencies) Windows Level3 Disabled true _CRT_SECURE_NO_WARNINGS;POLYPERF_EXPORTS;%(PreprocessorDefinitions) true psapi.lib;%(AdditionalDependencies) Windows Level3 MaxSpeed true true true _CRT_SECURE_NO_WARNINGS;POLYPERF_EXPORTS;%(PreprocessorDefinitions) true true true psapi.lib;%(AdditionalDependencies) Windows Level3 MaxSpeed true true true _CRT_SECURE_NO_WARNINGS;POLYPERF_EXPORTS;%(PreprocessorDefinitions) true true true psapi.lib;%(AdditionalDependencies) Windows polyml-5.7.1/PolyPerf/PolyPerf.cpp0000644000175000017500000006474113204034553016017 0ustar daviddavid/* Title: PolyPerf.cpp Copyright (c) 2011 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include "../polystatistics.h" // Statistics currently provided. These are copied from statistics.cpp // although the statistics returned may not match. enum { PSC_THREADS = 0, // Total number of threads PSC_THREADS_IN_ML, // Threads running ML code PSC_THREADS_WAIT_IO, // Threads waiting for IO PSC_THREADS_WAIT_MUTEX, // Threads waiting for a mutex PSC_THREADS_WAIT_CONDVAR, // Threads waiting for a condition var PSC_THREADS_WAIT_SIGNAL, // Special case - signal handling thread PSC_GC_FULLGC, // Number of full garbage collections PSC_GC_PARTIALGC, // Number of partial GCs N_PS_COUNTERS }; enum { PSS_TOTAL_HEAP = 0, // Total size of the local heap PSS_AFTER_LAST_GC, // Space free after last GC PSS_AFTER_LAST_FULLGC, // Space free after the last full GC PSS_ALLOCATION, // Size of allocation space PSS_ALLOCATION_FREE, // Space available in allocation area N_PS_SIZES }; enum { PST_NONGC_UTIME = 0, PST_NONGC_STIME, PST_GC_UTIME, PST_GC_STIME, N_PS_TIMES }; #define N_PS_USER 8 /* This DLL is a plug-in for Windows performance monitoring. The whole interface is extremely messy and seems to have remained unchanged from NT 3.5. The localised string names displayed in the performance monitor are held in the registry and need to be set up before this DLL can be loaded. Wix v3 supports the strings directly and this replaces the old method of using lodctr with .ini and .h files. The DLL is loaded by the performance monitor. In XP that seems to be part of the management console application mmc.exe and perfmon.exe seems to be just a stub. */ extern "C" { /* These are the functions exported from the DLL. The names here appear in the HKLM\SYSTEM\CurrentControlSet\Services\PolyML\Performance registry key. This DLL is loaded by mmc.exe and these functions are called to begin and end monitoring and to extract the current performance values from the shared memory. */ __declspec(dllexport) PM_OPEN_PROC OpenPolyPerfMon; __declspec(dllexport) PM_CLOSE_PROC ClosePolyPerfMon; __declspec(dllexport) PM_COLLECT_PROC CollectPolyPerfMon; }; // Export the functions without any decoration. #ifndef _WIN64 #pragma comment(linker, "/export:OpenPolyPerfMon=_OpenPolyPerfMon@4") #pragma comment(linker, "/export:ClosePolyPerfMon=_ClosePolyPerfMon@0") #pragma comment(linker, "/export:CollectPolyPerfMon=_CollectPolyPerfMon@16") #endif class PolyProcess { public: ~PolyProcess(); static PolyProcess* CreateProcessEntry(DWORD pID); PolyProcess(); unsigned char *sharedMem; // Pointer to shared memory DWORD processID; // Process ID WCHAR *processName; // Unicode name }; // This is the structure of the decoded statistics. These values // are set from the ASN1 coding. // The types of the fields must match the types set in the registry // by the installer (PolyML.wxs). For counters that is numberOfItems32 // and for sizes they have to be DWORDs. The information we display // for sizes is always a ratio of two sizes (i.e. % full) so we // have to scale the values consistently to get them to fit. // Since we also provide type information in the PERF_COUNTER_DEFINITION // structure it's possible we may be able to override that but it's // not clear. typedef struct { PERF_COUNTER_BLOCK header; // Statistics decoded UINT32 psCounters[N_PS_COUNTERS]; // numberOfItems32 #define SIZEOF_COUNTER (sizeof(UINT32)) DWORD psSizes[N_PS_SIZES]; // rawFraction/rawBase (i.e. 32-bits) #define SIZEOF_SIZE (sizeof(DWORD)) FILETIME psTimers[N_PS_TIMES]; // timer100Ns #define SIZEOF_TIME (sizeof(FILETIME)) UINT32 psUser[N_PS_USER]; // numberOfItems32 #define SIZEOF_USER (sizeof(UINT32)) } statistics; PolyProcess::PolyProcess() { sharedMem = NULL; processName = NULL; } PolyProcess::~PolyProcess() { if (sharedMem) ::UnmapViewOfFile(sharedMem); free(processName); } // Try to open the shared memory and if it succeeds create an entry for // this process. PolyProcess *PolyProcess::CreateProcessEntry(DWORD pId) { char shmName[MAX_PATH]; sprintf(shmName, POLY_STATS_NAME "%lu", pId); HANDLE hRemMemory = OpenFileMapping(FILE_MAP_READ, FALSE, shmName); if (hRemMemory == NULL) return NULL; // Probably not a Poly/ML process unsigned char *sMem = (unsigned char*)MapViewOfFile(hRemMemory, FILE_MAP_READ, 0, 0, 0); CloseHandle(hRemMemory); // We don't need this whether it succeeded or not if (sMem == NULL) return NULL; if (*sMem != POLY_STATS_C_STATISTICS) { UnmapViewOfFile(sMem); return NULL; } // Looks good. PolyProcess *result = new PolyProcess; result->processID = pId; result->sharedMem = sMem; // Find the name of the process. HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pId); if (hProcess != NULL) { HMODULE hMod; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) { WCHAR processName[MAX_PATH]; size_t len = 0; processName[0] = 0; if (GetModuleBaseNameW(hProcess, hMod, processName, sizeof(processName)/sizeof(WCHAR)) != 0) { // Remove any ".exe" or similar at the end len = wcslen(processName); if (len > 4 && processName[len-4] == '.') len -= 4; processName[len] = 0; } // Add the process Id in the name _snwprintf(processName+len, MAX_PATH-len, L" (%lu)", pId); // Copy it into the heap result->processName = _wcsdup(processName); } CloseHandle(hProcess); } return result; } class ASN1Parse { public: ASN1Parse (statistics *s, unsigned char *p): stats(s), ptr(p) {} void asn1Decode(); unsigned getLength(); INT64 parseInt(unsigned length); UINT32 parseUnsigned(unsigned length); DWORD parseSize(unsigned length); void parseAStatistic(int subTag, unsigned statlen); void parseTime(FILETIME *ft, unsigned length); statistics *stats; unsigned char *ptr; }; // Decode the ASN1 encoding. If the decoding fails we just leave the // values as zero rather than returning any error. void ASN1Parse::asn1Decode() { unsigned char ch = *ptr++; if (ch != POLY_STATS_C_STATISTICS) return; unsigned overallLength = getLength(); unsigned char *endOfData = ptr+overallLength; while (ptr < endOfData) { // Decode a statistic unsigned tag = *ptr++; unsigned statLen = getLength(); switch (tag) { case POLY_STATS_C_COUNTERSTAT: parseAStatistic(POLY_STATS_C_COUNTER_VALUE, statLen); break; case POLY_STATS_C_SIZESTAT: parseAStatistic(POLY_STATS_C_BYTE_COUNT, statLen); break; case POLY_STATS_C_TIMESTAT: parseAStatistic(POLY_STATS_C_TIME, statLen); break; case POLY_STATS_C_USERSTAT: parseAStatistic(POLY_STATS_C_COUNTER_VALUE, statLen); break; default: ptr += statLen; // Skip it; it's not known } } } // Return the length of the next item unsigned ASN1Parse::getLength() { unsigned ch = *ptr++; if (ch & 0x80) { int lengthOfLength = ch & 0x7f; unsigned length = 0; // Ignore "indefinite length", it's not used here. while (lengthOfLength--) { ch = *ptr++; length = (length << 8) | ch; } return length; } else return ch; } // General case for integer. INT64 ASN1Parse::parseInt(unsigned length) { if (length == 0) return 0; INT64 result = *ptr & 0x80 ? -1 : 0; while (length--) result = (result << 8) | *ptr++; return result; } UINT32 ASN1Parse::parseUnsigned(unsigned length) { INT64 value = parseInt(length); if (value < 0) return 0; // Can't display negative nos return (UINT32)value; } DWORD ASN1Parse::parseSize(unsigned length) { INT64 value = parseInt(length); if (value < 0) return 0; // Can't display negative nos return (DWORD)(value / 1024); // Return kilobytes } void ASN1Parse::parseTime(FILETIME *ft, unsigned length) { unsigned char *end = ptr+length; UINT32 seconds = 0, useconds = 0; while (ptr < end) { unsigned char tag = *ptr++; unsigned elemLen = getLength(); switch (tag) { case POLY_STATS_C_SECONDS: seconds = parseUnsigned(elemLen); break; case POLY_STATS_C_MICROSECS: useconds = parseUnsigned(elemLen); break; default: ptr += elemLen; } } ULARGE_INTEGER li; li.QuadPart = (ULONGLONG)seconds * 10000000 + (ULONGLONG)useconds * 10; ft->dwHighDateTime = li.HighPart; ft->dwLowDateTime = li.LowPart; } void ASN1Parse::parseAStatistic(int subTag, unsigned statLen) { unsigned char *endOfStat = ptr+statLen; unsigned tagId = 0; while (ptr < endOfStat) { unsigned char tag = *ptr++; unsigned elemLen = getLength(); switch (tag) { case POLY_STATS_C_IDENTIFIER: // The identifier of the statistic // We rely on the fact that the Id occurs before the value. tagId = parseUnsigned(elemLen); break; case POLY_STATS_C_COUNTER_VALUE: if (subTag = POLY_STATS_C_COUNTER_VALUE) { UINT32 cValue = parseUnsigned(elemLen); // A counter value occurs in these statistics switch (tagId) { case POLY_STATS_ID_THREADS: stats->psCounters[PSC_THREADS] = cValue; break; case POLY_STATS_ID_THREADS_IN_ML: stats->psCounters[PSC_THREADS_IN_ML] = cValue; break; case POLY_STATS_ID_THREADS_WAIT_IO: stats->psCounters[PSC_THREADS_WAIT_IO] = cValue; break; case POLY_STATS_ID_THREADS_WAIT_MUTEX: stats->psCounters[PSC_THREADS_WAIT_MUTEX] = cValue; break; case POLY_STATS_ID_THREADS_WAIT_CONDVAR: stats->psCounters[PSC_THREADS_WAIT_CONDVAR] = cValue; break; case POLY_STATS_ID_THREADS_WAIT_SIGNAL: stats->psCounters[PSC_THREADS_WAIT_SIGNAL] = cValue; break; case POLY_STATS_ID_GC_FULLGC: stats->psCounters[PSC_GC_FULLGC] = cValue; break; case POLY_STATS_ID_GC_PARTIALGC: stats->psCounters[PSC_GC_PARTIALGC] = cValue; break; case POLY_STATS_ID_USER0: stats->psUser[0] = cValue; break; case POLY_STATS_ID_USER1: stats->psUser[1] = cValue; break; case POLY_STATS_ID_USER2: stats->psUser[2] = cValue; break; case POLY_STATS_ID_USER3: stats->psUser[3] = cValue; break; case POLY_STATS_ID_USER4: stats->psUser[4] = cValue; break; case POLY_STATS_ID_USER5: stats->psUser[5] = cValue; break; case POLY_STATS_ID_USER6: stats->psUser[6] = cValue; break; case POLY_STATS_ID_USER7: stats->psUser[7] = cValue; break; // Anything else is an unknown tag; skip } } else ptr += elemLen; // Skip it - not expected here break; case POLY_STATS_C_BYTE_COUNT: if (subTag == POLY_STATS_C_BYTE_COUNT) { DWORD cValue = parseSize(elemLen); switch (tagId) { case POLY_STATS_ID_TOTAL_HEAP: stats->psSizes[PSS_TOTAL_HEAP] = cValue; break; case POLY_STATS_ID_AFTER_LAST_GC: stats->psSizes[PSS_AFTER_LAST_GC] = cValue; break; case POLY_STATS_ID_AFTER_LAST_FULLGC: stats->psSizes[PSS_AFTER_LAST_FULLGC] = cValue; break; case POLY_STATS_ID_ALLOCATION: stats->psSizes[PSS_ALLOCATION] = cValue; break; case POLY_STATS_ID_ALLOCATION_FREE: stats->psSizes[PSS_ALLOCATION_FREE] = cValue; break; } } else ptr += elemLen; // Skip it - not expected here break; case POLY_STATS_C_TIME: if (subTag == POLY_STATS_C_TIME) { FILETIME ft = { 0, 0}; parseTime(&ft, elemLen); switch (tagId) { case POLY_STATS_ID_NONGC_UTIME: stats->psTimers[PST_NONGC_UTIME] = ft; break; case POLY_STATS_ID_NONGC_STIME: stats->psTimers[PST_NONGC_STIME] = ft; break; case POLY_STATS_ID_GC_UTIME: stats->psTimers[PST_GC_UTIME] = ft; break; case POLY_STATS_ID_GC_STIME: stats->psTimers[PST_GC_STIME] = ft; break; } } else ptr += elemLen; break; default: ptr += elemLen; // Unknown - skip } } } // Pointer to table of processes with the Poly/ML run-time static PolyProcess **polyProcesses; static DWORD numProcesses; // Open: Find the current ML instances. DWORD APIENTRY OpenPolyPerfMon(LPWSTR lpInstanceNames) { // Get the list of all process IDs. Because we don't know // how many there are we increase the buffer size until the // size returned is less than the buffer size. DWORD buffItems = 10, numItems; DWORD *processIds = NULL; while (true) { processIds = (DWORD*)malloc(buffItems * sizeof(DWORD)); if (processIds == NULL) return ERROR_NOT_ENOUGH_MEMORY; DWORD bytesNeeded; if (! EnumProcesses(processIds, buffItems * sizeof(DWORD), &bytesNeeded)) return GetLastError(); if (bytesNeeded < buffItems * sizeof(DWORD)) { numItems = bytesNeeded / sizeof(DWORD); break; } buffItems = buffItems * 2; free(processIds); } // How many of these processes provide the Poly/ML shared memory? // Make an array big enough for all processes to simplify allocation. polyProcesses = (PolyProcess **)malloc(numItems * sizeof(PolyProcess*)); if (polyProcesses == NULL) { free(processIds); free(polyProcesses); return ERROR_NOT_ENOUGH_MEMORY; } for (DWORD dw = 0; dw < numItems; dw++) { // See if this is a Poly/ML process PolyProcess *pProc = PolyProcess::CreateProcessEntry(processIds[dw]); if (pProc != NULL) // We can use this polyProcesses[numProcesses++] = pProc; } free(processIds); return ERROR_SUCCESS; } // Delete the entries. DWORD APIENTRY ClosePolyPerfMon(void) { if (polyProcesses != NULL) { for (DWORD dw = 0; dw < numProcesses; dw++) delete(polyProcesses[dw]); free(polyProcesses); } polyProcesses = NULL; numProcesses = 0; return ERROR_SUCCESS; } static LPVOID allocBuffSpace(LPVOID * &lppData, LPDWORD &lpcbTotalBytes, DWORD &dwBytesAvailable, DWORD size) { if (dwBytesAvailable < size) return NULL; LPVOID pResult = *lppData; *lppData = (LPVOID)((char*)pResult + size); memset(pResult, 0, size); *lpcbTotalBytes += size; dwBytesAvailable -= size; return pResult; } // This is the entry that actually does the work. DWORD APIENTRY CollectPolyPerfMon( /* IN */LPWSTR lpRequest, /* lpRequest is either "Global" (all counters) or a list of counter numbers to return. These are the indexes into counter table in the Perflib\009 registry entry. */ /* IN OUT */LPVOID* lppData, /* IN OUT */LPDWORD lpcbTotalBytes, /* OUT */LPDWORD lpNumObjectTypes) { DWORD dwBytesAvailable = *lpcbTotalBytes; LPVOID lpDataStart = *lppData; *lpcbTotalBytes = 0; // Bytes written *lpNumObjectTypes = 0; // Object types written // For the moment we ignore the lpRequest argument and return all the counters. // First find out where our strings are in the list. This depends on // the strings installed by other applications/services so will vary // from machine to machine. The installer will have added keys under // our "service". If these can't be read then there's nothing we can do. HKEY hkPerform; LONG err; err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\PolyML\\Performance", 0, KEY_READ, &hkPerform); if (err != ERROR_SUCCESS) return err; DWORD dwType, dwSize, dwFirstCounter, dwFirstHelp; dwSize = sizeof(dwFirstCounter); err = RegQueryValueEx(hkPerform, "First Counter", 0, &dwType, (LPBYTE)&dwFirstCounter, &dwSize); if (err != ERROR_SUCCESS) { RegCloseKey(hkPerform); return err; } dwSize = sizeof(dwFirstHelp); err = RegQueryValueEx(hkPerform, "First Help", 0, &dwType, (LPBYTE)&dwFirstHelp, &dwSize); if (err != ERROR_SUCCESS) { RegCloseKey(hkPerform); return err; } RegCloseKey(hkPerform); // The actual strings are inserted by the installer. See PolyML.wxs. unsigned stringCount = 0; // Object header. Just one object. PERF_OBJECT_TYPE *pObjectType = (PERF_OBJECT_TYPE*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_OBJECT_TYPE)); if (pObjectType == NULL) return ERROR_MORE_DATA; pObjectType->HeaderLength = sizeof(PERF_OBJECT_TYPE); pObjectType->ObjectNameTitleIndex = dwFirstCounter + stringCount*2; // First string is the name of the object pObjectType->ObjectHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pObjectType->DetailLevel = PERF_DETAIL_NOVICE; pObjectType->NumCounters = 0; pObjectType->DefaultCounter = -1; pObjectType->NumInstances = numProcesses; // Counter block for each counter. // First the numbers PERF_COUNTER_DEFINITION *pCounters = (PERF_COUNTER_DEFINITION*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_COUNTER_DEFINITION) * N_PS_COUNTERS); if (pCounters == NULL) return ERROR_MORE_DATA; for (unsigned i = 0; i < N_PS_COUNTERS; i++) { pCounters[i].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pCounters[i].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pCounters[i].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pCounters[i].DetailLevel = PERF_DETAIL_NOVICE; pCounters[i].CounterType = PERF_COUNTER_RAWCOUNT; pCounters[i].CounterSize = SIZEOF_COUNTER; pCounters[i].CounterOffset = offsetof(statistics, psCounters)+i*SIZEOF_COUNTER; pObjectType->NumCounters++; } // The sizes are dealt with specially. We need to divide the values and express // them as percentages. Each displayed value is followed by a base value. PERF_COUNTER_DEFINITION *pSizes = (PERF_COUNTER_DEFINITION*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_COUNTER_DEFINITION) * 6); if (pSizes == NULL) return ERROR_MORE_DATA; // First - Heap usage after last GC pSizes[0].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[0].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[0].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[0].DetailLevel = PERF_DETAIL_NOVICE; pSizes[0].CounterType = PERF_RAW_FRACTION; pSizes[0].CounterSize = SIZEOF_SIZE; pSizes[0].CounterOffset = offsetof(statistics, psSizes)+PSS_AFTER_LAST_GC*SIZEOF_SIZE; pObjectType->NumCounters++; pSizes[1].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[1].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[1].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[1].DetailLevel = PERF_DETAIL_NOVICE; pSizes[1].CounterType = PERF_RAW_BASE; pSizes[1].CounterSize = SIZEOF_SIZE; pSizes[1].CounterOffset = offsetof(statistics, psSizes)+PSS_TOTAL_HEAP*SIZEOF_SIZE; pObjectType->NumCounters++; // Second - Heap usage after last full GC pSizes[2].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[2].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[2].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[2].DetailLevel = PERF_DETAIL_NOVICE; pSizes[2].CounterType = PERF_RAW_FRACTION; pSizes[2].CounterSize = SIZEOF_SIZE; pSizes[2].CounterOffset = offsetof(statistics, psSizes)+PSS_AFTER_LAST_FULLGC*SIZEOF_SIZE; pObjectType->NumCounters++; pSizes[3].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[3].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[3].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[3].DetailLevel = PERF_DETAIL_NOVICE; pSizes[3].CounterType = PERF_RAW_BASE; pSizes[3].CounterSize = SIZEOF_SIZE; pSizes[3].CounterOffset = offsetof(statistics, psSizes)+PSS_TOTAL_HEAP*SIZEOF_SIZE; pObjectType->NumCounters++; // Third - Unreserved space in allocation area pSizes[4].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[4].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[4].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[4].DetailLevel = PERF_DETAIL_NOVICE; pSizes[4].CounterType = PERF_RAW_FRACTION; pSizes[4].CounterSize = SIZEOF_SIZE; pSizes[4].CounterOffset = offsetof(statistics, psSizes)+PSS_ALLOCATION_FREE*SIZEOF_SIZE; pObjectType->NumCounters++; pSizes[5].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pSizes[5].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pSizes[5].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pSizes[5].DetailLevel = PERF_DETAIL_NOVICE; pSizes[5].CounterType = PERF_RAW_BASE; pSizes[5].CounterSize = SIZEOF_SIZE; pSizes[5].CounterOffset = offsetof(statistics, psSizes)+PSS_ALLOCATION*SIZEOF_SIZE; pObjectType->NumCounters++; // Then the times PERF_COUNTER_DEFINITION *pTimes = (PERF_COUNTER_DEFINITION*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_COUNTER_DEFINITION) * N_PS_TIMES); if (pTimes == NULL) return ERROR_MORE_DATA; for (unsigned k = 0; k < N_PS_TIMES; k++) { pTimes[k].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pTimes[k].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pTimes[k].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pTimes[k].DetailLevel = PERF_DETAIL_NOVICE; pTimes[k].CounterType = PERF_100NSEC_TIMER; pTimes[k].CounterSize = SIZEOF_TIME; pTimes[k].CounterOffset = offsetof(statistics, psTimers)+k*SIZEOF_TIME; pObjectType->NumCounters++; } // Finally the user counters PERF_COUNTER_DEFINITION *pUsers = (PERF_COUNTER_DEFINITION*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_COUNTER_DEFINITION) * N_PS_USER); if (pUsers == NULL) return ERROR_MORE_DATA; for (unsigned l = 0; l < N_PS_USER; l++) { pUsers[l].ByteLength = sizeof(PERF_COUNTER_DEFINITION); pUsers[l].CounterNameTitleIndex = dwFirstCounter + stringCount*2; pUsers[l].CounterHelpTitleIndex = dwFirstHelp + (stringCount++)*2; pUsers[l].DetailLevel = PERF_DETAIL_NOVICE; pUsers[l].CounterType = PERF_COUNTER_RAWCOUNT; pUsers[l].CounterSize = SIZEOF_USER; pUsers[l].CounterOffset = offsetof(statistics, psUser)+l*SIZEOF_USER; pObjectType->NumCounters++; } pObjectType->DefinitionLength = *lpcbTotalBytes; // End of definitions; start of instance data // Instance data - One entry for each process. Includes the instance name (i.e. the process) // and the counter data. for (DWORD dw = 0; dw < numProcesses; dw++) { PERF_INSTANCE_DEFINITION *pInst = (PERF_INSTANCE_DEFINITION*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, sizeof(PERF_INSTANCE_DEFINITION)); if (pInst == NULL) return ERROR_MORE_DATA; PolyProcess *pProc = polyProcesses[dw]; pInst->UniqueID = PERF_NO_UNIQUE_ID; // Better to show the name pInst->NameOffset = sizeof(PERF_INSTANCE_DEFINITION); // Name follows DWORD len = (DWORD)wcslen(pProc->processName); DWORD byteLength = (len+1)*sizeof(WCHAR); // Length including terminators pInst->NameLength = byteLength; byteLength = (byteLength + 7) / 8 * 8; // Must be rounded up to an eight-byte boundary. pInst->ByteLength = byteLength + sizeof(PERF_INSTANCE_DEFINITION); WCHAR *pName = (WCHAR*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, byteLength); wcscpy(pName, pProc->processName); // Now the statistics including a PERF_COUNTER_BLOCK DWORD statSize = (sizeof(statistics) + 7) / 8 * 8; statistics *pStats = (statistics*)allocBuffSpace(lppData, lpcbTotalBytes, dwBytesAvailable, statSize); if (pStats == NULL) return ERROR_MORE_DATA; pStats->header.ByteLength = sizeof(PERF_COUNTER_BLOCK)+statSize; ASN1Parse decode(pStats, pProc->sharedMem); decode.asn1Decode(); } pObjectType->TotalByteLength = *lpcbTotalBytes; *lpNumObjectTypes = 1; // Single object return ERROR_SUCCESS; } polyml-5.7.1/PolyML.rc0000644000175000017500000001034013204034553013477 0ustar daviddavid// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "windows.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (United Kingdom) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""windows.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Menu // IDR_MENU MENU BEGIN POPUP "&File" BEGIN MENUITEM "&Quit", ID_FILE_QUIT END POPUP "&Edit" BEGIN MENUITEM "&Copy", ID_EDIT_COPY MENUITEM "&Paste", ID_EDIT_PASTE END POPUP "&Run" BEGIN MENUITEM "&Interrupt", ID_RUN_INTERRUPT END POPUP "&Help" BEGIN MENUITEM "&About Poly/ML...", ID_HELP_ABOUT END END ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ABOUT_POLYML DIALOGEX 0, 0, 217, 113 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,7,92,50,14 LTEXT "Poly/ML v 5.7.1 Copyright David C.J. Matthews, Cambridge University Technical Services and contributors 2000-17.\n\nThis is free software and released under the GNU Lesser General Public License.",IDC_STATIC,24,30,167,47 ICON IDI_ICON,IDC_STATIC,7,7,20,20 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN IDD_ABOUT_POLYML, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 210 TOPMARGIN, 7 BOTTOMMARGIN, 106 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON ICON "poly.ico" ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 5,7,1,0 PRODUCTVERSION 5,7,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080904b0" BEGIN VALUE "CompanyName", " " VALUE "FileDescription", "PolyML v5.7.1" VALUE "FileVersion", "5.7.1.0" VALUE "InternalName", "PolyML" VALUE "LegalCopyright", "Copyright © David Matthews, CUTS and contributors 2000-2017" VALUE "OriginalFilename", "PolyML.exe" VALUE "ProductName", "PolyML" VALUE "ProductVersion", "5.7.1.0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x809, 1200 END END ///////////////////////////////////////////////////////////////////////////// // // AFX_DIALOG_LAYOUT // IDD_ABOUT_POLYML AFX_DIALOG_LAYOUT BEGIN 0 END #endif // English (United Kingdom) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED polyml-5.7.1/poly.10000644000175000017500000000502013204034553013041 0ustar daviddavid.TH POLY 1 "Poly/ML Version 5.7.1 2017" .SH NAME poly \- the Poly/ML Standard ML implementation .SH SYNOPSIS .B poly .SH DESCRIPTION .I poly starts the Poly/ML shell. Poly/ML is an implementation of Standard ML written by David Matthews originally at the University of Cambridge and maintained as a project supported by contributors. .SH OPTIONS .TP .B \-v Print the version of Poly/ML and exit. .TP .B \--help Print a list of the arguments and exit. .TP .B \-q Suppress the start-up message. .TP .B \-i Interactive mode. Output a prompt for each input line. This is the default if input is from a terminal. .TP .B \--use FILE Reads input from FILE as though executing the ML command 'use "FILE";' before the ML shell starts. .TP .B \--eval STRING Compiles and executes STRING as ML before the ML shell starts. .TP .B \--error-exit Normally if the ML code raises an unhandled exception control returns to the ML shell. With this option the shell exits on an unhandled exception. .TP .B \--with-markup Include extra mark-up information when printing. This is only suitable when Poly/ML is run under an environment that is able to decode the additional information. .TP .B \--ideprotocol Run the IDE communications protocol rather than the normal read-eval-print loop. Only suitable for running within a development environment. .TP .B \--script The input is a shell script. The first line is skipped if it begins with #!. .TP .B \-H " size" Sets the initial heap size. The size may be written as a number optionally followed by K, M or G representing kilobytes, megabytes or gigabytes. If none of these is given the number is taken as megabytes. .TP .BI \--minheap " size" Set the minimum heap size. The heap will not shrink below this value. .TP .BI \--maxheap " size" Set the maximum heap size. The heap will not grow above this value. .TP .BI \--gcpercent " percent" Set the target percentage of time that the code should spend in the garbage collector. The heap sizer will attempt to set the heap size to achieve this target consistent with the minimum and maximum heap sizes given by the arguments and also consistent with keeping paging under control. .TP .BI \--gcthreads " threads" Sets the number of threads used in the parallel garbage collector. Setting this to 1 forces the garbage collector to be single-threaded. The value 0, the default, is taken to be the number of processors (cores) available. .TP .BI \--debug " options" Set various debugging options for the run-time system. .fi .SH SEE ALSO .PP .B http://www.polyml.org The Poly/ML web site. polyml-5.7.1/polyc.in0000755000175000017500000000677013204034553013472 0ustar daviddavid#! /bin/sh prefix=@prefix@ exec_prefix=@exec_prefix@ BINDIR=@bindir@ LINK=@CXX@ LIBDIR=@libdir@ LIBS="@LIBS@" CFLAGS="@polyc_CFLAGS@" DEFAULT_COMPILER="${BINDIR}/poly" COMPILER=${DEFAULT_COMPILER} # Extra options for Windows. config.status sets these conditionals to either "" or "#". @NATIVE_WINDOWS_FALSE@EXTRALDFLAGS="" @NATIVE_WINDOWS_TRUE@@ARCHX86_64_TRUE@EXTRALDFLAGS="-Wl,-u,WinMain" @NATIVE_WINDOWS_TRUE@@ARCHINTERPRET64_TRUE@EXTRALDFLAGS="-Wl,-u,WinMain" @NATIVE_WINDOWS_TRUE@@ARCHI386_TRUE@EXTRALDFLAGS="-Wl,-u,_WinMain@16 -Wl,--large-address-aware" @NATIVE_WINDOWS_TRUE@@ARCHINTERPRET_TRUE@EXTRALDFLAGS="-Wl,-u,_WinMain@16 -Wl,--large-address-aware" @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_TRUE@EXTRALDFLAGS+=" -mwindows" @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_FALSE@EXTRALDFLAGS+=" -mconsole" @NATIVE_WINDOWS_TRUE@SUFFIX="obj" @NATIVE_WINDOWS_FALSE@SUFFIX="o" # Msys passes the Windows TEMP in temp (lower case) # On other systems allow TMPDIR to override /tmp. @NATIVE_WINDOWS_TRUE@TEMPORARYDIR=${temp:-/tmp} @NATIVE_WINDOWS_FALSE@TEMPORARYDIR=${TMPDIR:-/tmp} # Extra options for Mac OS X @EXPMACHO_TRUE@EXTRALDFLAGS="-Wl,-no_pie" TMPOBJFILE=${TEMPORARYDIR}/polyobj.$$.$SUFFIX trap 'rm -f "$TMPOBJFILE"' 0 compile() { echo "val () = use (List.nth(CommandLine.arguments(), 2)); val () = PolyML.export(List.nth(CommandLine.arguments(), 3), main);" | ${COMPILER} -q --error-exit "$1" "$2" } link() { if [ X"$2" = "X" ] then ${LINK} ${EXTRALDFLAGS} ${CFLAGS} "$1" -L${LIBDIR} -Wl,-rpath,${LIBDIR} -lpolymain -lpolyml ${LIBS} else ${LINK} ${EXTRALDFLAGS} ${CFLAGS} "$1" -o "$2" -L${LIBDIR} -Wl,-rpath,${LIBDIR} -lpolymain -lpolyml ${LIBS} fi } printhelp() { echo "Usage: polyc [OPTION]... [SOURCEFILE]" echo Compile and link a Standard ML source file with Poly/ML. echo echo " -b poly Use 'poly' as compiler instead of ${DEFAULT_COMPILER}" echo " -c Compile but do not link. The object file is written to the source file with .$SUFFIX extension." echo " -o output Write the executable file to 'output'" echo " --help Write this text and exit" exit } usage() { echo "$1" echo "Usage: polyc [OPTION]... [SOURCEFILE]" exit 1 } checkml() { extension="${1##*.}" case "$extension" in sml|ML) return 0 ;; o|obj) return 1;; *) test -r "$1" && file -b "$1" | grep -q text ;; esac } sourcefile="" outputfile="" compileonly="no" while [ $# -gt 0 ] do case "$1" in --help) printhelp ;; -b) shift [ $# -eq 0 ] && usage "Expected file name after -b" COMPILER="$1";; -c) compileonly="yes";; -o) shift [ $# -eq 0 ] && usage "Expected file name after -o" outputfile="$1";; *) [ X"$sourcefile" = "X" ] || usage "Only one source file name allowed" sourcefile="$1";; esac shift done [ X"$sourcefile" = "X" ] && usage "No input files" [ -r "$sourcefile" ] || usage "Error: $sourcefile: No such file" case "$compileonly" in yes) if [ "x$outputfile" = "x" ]; then basename=${sourcefile##*/} outputfile=${basename%.*}.o fi compile "$sourcefile" "$outputfile" ;; no) if checkml "$sourcefile" then compile "$sourcefile" "$TMPOBJFILE" && link "$TMPOBJFILE" "$outputfile" else link "$sourcefile" "$outputfile" fi ;; esac polyml-5.7.1/config.guess0000755000175000017500000012355013204034553014325 0ustar daviddavid#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: polyml-5.7.1/modules/0000755000175000017500000000000013204034553013447 5ustar daviddavidpolyml-5.7.1/modules/Makefile.am0000644000175000017500000000005713204034553015505 0ustar daviddavidAUTOMAKE_OPTIONS=foreign SUBDIRS= IntInfAsInt polyml-5.7.1/modules/IntInfAsInt/0000755000175000017500000000000013204034553015575 5ustar daviddavidpolyml-5.7.1/modules/IntInfAsInt/StringChar.sml0000644000175000017500000000430313204034553020356 0ustar daviddavid(* Title: Rebuild the basis library: String and char. Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Char and String *) useBasis "StringSignatures"; structure Char: CHAR = struct open Char val maxOrd = FixedInt.toInt maxOrd val chr = chr o FixedInt.fromInt val ord = FixedInt.toInt o ord end; structure String: STRING = struct open String val maxSize = FixedInt.toInt maxSize val size = FixedInt.toInt o size val sub = fn (s, i) => sub(s, FixedInt.fromInt i) val substring = fn (s, i, j) => substring(s, FixedInt.fromInt i, FixedInt.fromInt j) val extract = fn(s, i, j) => extract(s, FixedInt.fromInt i, Option.map FixedInt.fromInt j) end; structure Substring: SUBSTRING = struct open Substring val base = fn s => let val (a, i, j) = base s in (a, FixedInt.toInt i, FixedInt.toInt j) end val size = FixedInt.toInt o size val sub = fn (s, i) => sub(s, FixedInt.fromInt i) val substring = fn (s, i, j) => substring(s, FixedInt.fromInt i, FixedInt.fromInt j) val extract = fn(s, i, j) => extract(s, FixedInt.fromInt i, Option.map FixedInt.fromInt j) val splitAt = fn (s, i) => splitAt(s, FixedInt.fromInt i) val slice = fn (s, i, j) => slice(s, FixedInt.fromInt i, Option.map FixedInt.fromInt j) val trimr = fn i => trimr(FixedInt.fromInt i) and triml = fn i => triml(FixedInt.fromInt i) end; val ord : char -> int = Char.ord val chr : int -> char = Char.chr val substring : string * int * int -> string = String.substring; val size: string -> int = String.size; polyml-5.7.1/modules/IntInfAsInt/Makefile.am0000644000175000017500000000056313204034553017635 0ustar daviddavidAUTOMAKE_OPTIONS=foreign all-local: IntInfAsInt clean-local: -rm -f IntInfAsInt install-exec-local: $(mkdir_p) $(DESTDIR)$(moduledir) $(INSTALL_PROGRAM) IntInfAsInt $(DESTDIR)$(moduledir) uninstall-local: -rm -f $(DESTDIR)$(moduledir)/IntInfAsInt IntInfAsInt: ../../poly$(EXEEXT) ROOT.sml echo "use \"$(srcdir)/ROOT.sml\";" | ../../poly$(EXEEXT) -q -error-exit polyml-5.7.1/modules/IntInfAsInt/Date.sml0000644000175000017500000000263413204034553017174 0ustar daviddavid(* Title: Rebuild the basis library: Date Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Date . *) useBasis "DateSignature"; structure Date: DATE = struct open Date val date = fn { year, month, day, hour, minute, second, offset } => date {year=FixedInt.fromLarge year, month=month, day=FixedInt.fromLarge day, hour=FixedInt.fromLarge hour, minute=FixedInt.fromLarge minute, second=FixedInt.fromLarge second, offset=offset} val year = FixedInt.toLarge o year and day = FixedInt.toLarge o day and hour = FixedInt.toLarge o hour and minute = FixedInt.toLarge o minute and second = FixedInt.toLarge o second and yearDay = FixedInt.toLarge o yearDay end; polyml-5.7.1/modules/IntInfAsInt/ArrayVector.sml0000644000175000017500000004365713204034553020572 0ustar daviddavid(* Title: Rebuild the basis library: Arrays and Vectors Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) useBasis "MONO_VECTOR"; functor MapMonoVector( structure Old: sig type vector type elem val maxLen : FixedInt.int val fromList : elem list -> vector val tabulate : (FixedInt.int * (FixedInt.int -> elem)) -> vector val length : vector -> FixedInt.int val sub : (vector * FixedInt.int) -> elem val update: vector * FixedInt.int * elem -> vector val concat : vector list -> vector val mapi : ((FixedInt.int * elem) -> elem) -> vector -> vector val map : (elem -> elem) -> vector -> vector val appi : ((FixedInt.int * elem) -> unit) -> vector -> unit val app : (elem -> unit) -> vector -> unit val foldli : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldri : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> vector -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> vector -> 'a val findi: (FixedInt.int * elem -> bool) -> vector -> (FixedInt.int * elem) option val find: (elem -> bool) -> vector -> elem option val exists: (elem -> bool) -> vector -> bool val all: (elem -> bool) -> vector -> bool val collate: (elem * elem -> order) -> vector * vector -> order end ): MONO_VECTOR = struct open Old val maxLen = FixedInt.toLarge maxLen val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = FixedInt.toLarge o length val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val tabulate = fn (n, f) => tabulate(FixedInt.fromInt n, fn q => f(FixedInt.toInt q)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val mapi = fn f => mapi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) end; structure CharVector: MONO_VECTOR = MapMonoVector(structure Old = CharVector); structure BoolVector: MONO_VECTOR = MapMonoVector(structure Old = BoolVector); structure RealVector: MONO_VECTOR = MapMonoVector(structure Old = RealVector); structure Word8Vector: MONO_VECTOR = MapMonoVector(structure Old = Word8Vector); useBasis "VectorSignature.sml"; structure Vector: VECTOR = struct open Vector val maxLen = FixedInt.toLarge maxLen val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = fn l => FixedInt.toLarge(length l) val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val tabulate = fn (n, f) => tabulate(FixedInt.fromInt n, fn q => f(FixedInt.toInt q)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val mapi = fn f => mapi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) end; useBasis "MONO_ARRAY"; functor MapMonoArray( structure Old: sig eqtype array type elem type vector val maxLen : FixedInt.int val array : (FixedInt.int * elem) -> array val fromList : elem list -> array val vector: array -> vector val tabulate : (FixedInt.int * (FixedInt.int -> elem)) -> array val length : array -> FixedInt.int val sub : (array * FixedInt.int) -> elem val update : (array * FixedInt.int * elem) -> unit val copy : {src : array, dst : array, di : FixedInt.int} -> unit val copyVec : {src : vector, dst : array, di : FixedInt.int} -> unit val appi : ((FixedInt.int * elem) -> unit) -> array -> unit val app : (elem -> unit) -> array -> unit val foldli : ((FixedInt.int * elem * 'b) -> 'b) -> 'b -> array -> 'b val foldri : ((FixedInt.int * elem * 'b) -> 'b) -> 'b -> array -> 'b val foldl : ((elem * 'b) -> 'b) -> 'b -> array -> 'b val foldr : ((elem * 'b) -> 'b) -> 'b -> array -> 'b val modifyi : ((FixedInt.int * elem) -> elem) -> array -> unit val modify : (elem -> elem) -> array -> unit val findi: (FixedInt.int * elem -> bool) -> array -> (FixedInt.int * elem) option val find: (elem -> bool) -> array -> elem option val exists: (elem -> bool) -> array -> bool val all: (elem -> bool) -> array -> bool val collate: (elem * elem -> order) -> array * array -> order end ) : MONO_ARRAY = struct open Old val maxLen = FixedInt.toLarge maxLen val array = fn (i, a) => array(FixedInt.fromLarge i, a) val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = fn l => FixedInt.toLarge(length l) val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val copy = fn {di, dst, src} => copy {di=FixedInt.fromLarge di, dst=dst, src=src} val copyVec = fn {di, dst, src} => copyVec {di=FixedInt.fromLarge di, dst=dst, src=src} val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val tabulate = fn (n, f) => tabulate(FixedInt.fromInt n, fn q => f(FixedInt.toInt q)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) val modifyi = fn f => modifyi(fn (i, e) => f(FixedInt.toLarge i, e)) end; structure CharArray: MONO_ARRAY = MapMonoArray(structure Old = CharArray); structure BoolArray: MONO_ARRAY = MapMonoArray(structure Old = BoolArray); structure RealArray: MONO_ARRAY = MapMonoArray(structure Old = RealArray); structure Word8Array: MONO_ARRAY = MapMonoArray(structure Old = Word8Array); useBasis "ArraySignature.sml"; structure Array: ARRAY = struct open Array val maxLen = FixedInt.toLarge maxLen val array = fn (i, a) => array(FixedInt.fromLarge i, a) val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = fn l => FixedInt.toLarge(length l) val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val copy = fn {di, dst, src} => copy {di=FixedInt.fromLarge di, dst=dst, src=src} val copyVec = fn {di, dst, src} => copyVec {di=FixedInt.fromLarge di, dst=dst, src=src} val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val tabulate = fn (n, f) => tabulate(FixedInt.fromInt n, fn q => f(FixedInt.toInt q)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) val modifyi = fn f => modifyi(fn (i, e) => f(FixedInt.toLarge i, e)) end; useBasis "MONO_VECTOR_SLICE"; functor MapMonoVectorSlice( structure Old: sig type vector type elem type slice val length : slice -> FixedInt.int val sub : (slice * FixedInt.int) -> elem val full: vector -> slice val slice: vector * FixedInt.int * FixedInt.int option -> slice val subslice: slice * FixedInt.int * FixedInt.int option -> slice val base: slice -> vector * FixedInt.int * FixedInt.int val vector: slice -> vector val concat: slice list -> vector val isEmpty: slice -> bool val getItem: slice -> (elem * slice) option val appi : ((FixedInt.int * elem) -> unit) -> slice -> unit val app : (elem -> unit) -> slice -> unit val mapi : ((FixedInt.int * elem) -> elem) -> slice -> vector val map : (elem -> elem) -> slice -> vector val foldli : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (FixedInt.int * elem -> bool) -> slice -> (FixedInt.int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool val collate: (elem * elem -> order) -> slice * slice -> order end ): MONO_VECTOR_SLICE = struct open Old val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = FixedInt.toLarge o length val base = fn s => let val (a, i, j) = base s in (a, FixedInt.toInt i, FixedInt.toInt j) end val slice = fn (v, i, l) => slice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val subslice = fn (v, i, l) => subslice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val mapi = fn f => mapi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) end; structure CharVectorSlice: MONO_VECTOR_SLICE = MapMonoVectorSlice(structure Old = CharVectorSlice); structure RealVectorSlice: MONO_VECTOR_SLICE = MapMonoVectorSlice(structure Old = RealVectorSlice); structure Word8VectorSlice: MONO_VECTOR_SLICE = MapMonoVectorSlice(structure Old = Word8VectorSlice); useBasis "VectorSliceSignature.sml"; structure VectorSlice: VECTOR_SLICE = struct open VectorSlice val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = fn l => FixedInt.toLarge(length l) val base = fn s => let val (a, i, j) = base s in (a, FixedInt.toInt i, FixedInt.toInt j) end val slice = fn (v, i, l) => slice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val subslice = fn (v, i, l) => subslice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val mapi = fn f => mapi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) end; useBasis "MONO_ARRAY_SLICE"; functor MapMonoArraySlice( structure Old: sig type elem type array type slice type vector type vector_slice val length : slice -> FixedInt.int val sub : (slice * FixedInt.int) -> elem val update: slice * FixedInt.int * elem -> unit val full: array -> slice val slice: array * FixedInt.int * FixedInt.int option -> slice val subslice: slice * FixedInt.int * FixedInt.int option -> slice val base: slice -> array * FixedInt.int * FixedInt.int val vector: slice -> vector val copy : {src : slice, dst : array, di : FixedInt.int} -> unit val copyVec : {src : vector_slice, dst : array, di : FixedInt.int} -> unit val isEmpty: slice -> bool val getItem: slice -> (elem * slice) option val appi : ((FixedInt.int * elem) -> unit) -> slice -> unit val app : (elem -> unit) -> slice -> unit val modifyi : (FixedInt.int * elem -> elem) -> slice -> unit val modify : (elem -> elem) -> slice -> unit val foldli : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldri : ((FixedInt.int * elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldl : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val foldr : ((elem * 'a) -> 'a) -> 'a -> slice -> 'a val findi: (FixedInt.int * elem -> bool) -> slice -> (FixedInt.int * elem) option val find: (elem -> bool) -> slice -> elem option val exists: (elem -> bool) -> slice -> bool val all: (elem -> bool) -> slice -> bool val collate: (elem * elem -> order) -> slice * slice -> order end ): MONO_ARRAY_SLICE = struct open Old val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = FixedInt.toLarge o length val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val copy = fn {di, dst, src} => copy {di=FixedInt.fromLarge di, dst=dst, src=src} val copyVec = fn {di, dst, src} => copyVec {di=FixedInt.fromLarge di, dst=dst, src=src} val base = fn s => let val (a, i, j) = base s in (a, FixedInt.toInt i, FixedInt.toInt j) end val slice = fn (v, i, l) => slice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val subslice = fn (v, i, l) => subslice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) val modifyi = fn f => modifyi(fn (i, e) => f(FixedInt.toLarge i, e)) end; structure CharArraySlice: MONO_ARRAY_SLICE = MapMonoArraySlice(structure Old = CharArraySlice); structure RealArraySlice: MONO_ARRAY_SLICE = MapMonoArraySlice(structure Old = RealArraySlice); structure Word8ArraySlice: MONO_ARRAY_SLICE = MapMonoArraySlice(structure Old = Word8ArraySlice); useBasis "ArraySliceSignature.sml"; (* Depends on VectorSlice. *) structure ArraySlice: ARRAY_SLICE = struct open ArraySlice val sub = fn (v, i) => sub(v, FixedInt.fromLarge i) val length = fn l => FixedInt.toLarge(length l) val update = fn (v, i, e) => update(v, FixedInt.fromLarge i, e) val copy = fn {di, dst, src} => copy {di=FixedInt.fromLarge di, dst=dst, src=src} val copyVec = fn {di, dst, src} => copyVec {di=FixedInt.fromLarge di, dst=dst, src=src} val base = fn s => let val (a, i, j) = base s in (a, FixedInt.toInt i, FixedInt.toInt j) end val slice = fn (v, i, l) => slice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val subslice = fn (v, i, l) => subslice(v, FixedInt.fromLarge i, Option.map FixedInt.fromInt l) val foldri = fn f => foldri (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val foldli = fn f => foldli (fn(i, e, a) => f(FixedInt.toLarge i, e, a)) val appi = fn f => appi(fn (i, e) => f(FixedInt.toLarge i, e)) val findi = fn f => fn v => Option.map (fn(i, e) => (FixedInt.toLarge i, e)) (findi(fn (i, e) => f(FixedInt.toLarge i, e)) v) val modifyi = fn f => modifyi(fn (i, e) => f(FixedInt.toLarge i, e)) end; (* Rebuild IntVector etc. They are defined in terms of polymorphic vector, array etc and also we want the "Int" to be arbitrary precision. *) useBasis "IntArray"; useBasis "Text"; (* Rebuild the Text structure that includes Char, String etc. *) (* Array2 *) useBasis "Array2Signature.sml"; structure Array2: ARRAY2 = struct open Array2 type 'a region = { base : 'a array, row : int, col : int, nrows : int option, ncols : int option } val array = fn(i, j, a) => array(FixedInt.fromLarge i, FixedInt.fromLarge j, a) val sub = fn (a, i, j) => sub(a, FixedInt.fromLarge i, FixedInt.fromLarge j) val update = fn (a, i, j, v) => update(a, FixedInt.fromLarge i, FixedInt.fromLarge j, v) val tabulate = fn t => fn (i, j, f) => tabulate t (FixedInt.fromLarge i, FixedInt.fromLarge j, fn (q, r) => f(FixedInt.toLarge q, FixedInt.toLarge r) ) val row = fn (a, i) => row(a, FixedInt.fromLarge i) and column = fn (a, i) => row(a, FixedInt.fromLarge i) val dimensions = fn a => let val (x, y) = dimensions a in (FixedInt.toLarge x, FixedInt.toLarge y) end val nCols = fn l => FixedInt.toLarge(nCols l) val nRows = fn l => FixedInt.toLarge(nRows l) local fun mapRegion{base, row, col, nrows, ncols} = {base = base, row = FixedInt.fromLarge row, col = FixedInt.fromLarge col, nrows = Option.map FixedInt.fromLarge nrows, ncols = Option.map FixedInt.fromLarge ncols } fun modifyi' t f r = modifyi t (fn (i, j, v) => f(FixedInt.toLarge i, FixedInt.toLarge j, v)) (mapRegion r) and foldi' t f b r = foldi t (fn (i, j, a, b) => f(FixedInt.toLarge i, FixedInt.toLarge j, a, b)) b (mapRegion r) and appi' t f r = appi t (fn (i, j, v) => f(FixedInt.toLarge i, FixedInt.toLarge j, v)) (mapRegion r) and copy' {src, dst, dst_row, dst_col} = copy {src = mapRegion src, dst = dst, dst_row = FixedInt.fromLarge dst_row, dst_col = FixedInt.fromLarge dst_col } in val modifyi = modifyi' and foldi = foldi' and appi = appi' and copy = copy' end end; (* Monomorphic two dimensional arrays. They are defined in terms of Array2 and also for IntArray2 we want the base type to be arbitrary precision. *) useBasis "IntArray2.sml"; polyml-5.7.1/modules/IntInfAsInt/InputOutput.sml0000644000175000017500000001047313204034553020637 0ustar daviddavid(* Title: Rebuild the basis library: IO Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* IO *) (* This is much simpler if we ignore PrimIO. *) useBasis "STREAM_IO.sml"; useBasis "IMPERATIVE_IO.sml"; signature TEXT_STREAM_IO = sig include STREAM_IO where type vector = CharVector.vector where type elem = Char.char val inputLine : instream -> (string * instream) option val outputSubstr : outstream * Substring.substring -> unit end; signature TEXT_IO = sig (* include IMPERATIVE_IO *) structure StreamIO : TEXT_STREAM_IO where type reader = TextPrimIO.reader where type writer = TextPrimIO.writer where type pos = TextPrimIO.pos type vector = StreamIO.vector type elem = StreamIO.elem type instream type outstream val input : instream -> vector val input1 : instream -> elem option val inputN : instream * int -> vector val inputAll : instream -> vector val canInput : instream * int -> int option val lookahead : instream -> elem option val closeIn : instream -> unit val endOfStream : instream -> bool val output : outstream * vector -> unit val output1 : outstream * elem -> unit val flushOut : outstream -> unit val closeOut : outstream -> unit val mkInstream : StreamIO.instream -> instream val getInstream : instream -> StreamIO.instream val setInstream : instream * StreamIO.instream -> unit val mkOutstream : StreamIO.outstream -> outstream val getOutstream : outstream -> StreamIO.outstream val setOutstream : outstream * StreamIO.outstream -> unit val getPosOut : outstream -> StreamIO.out_pos val setPosOut : outstream * StreamIO.out_pos -> unit (* End of include IMPERATIVE_IO *) val inputLine : instream -> string option val outputSubstr : outstream * Substring.substring -> unit val openIn : string -> instream val openOut : string -> outstream val openAppend : string -> outstream val openString : string -> instream val stdIn : instream val stdOut : outstream val stdErr : outstream val print : string -> unit val scanStream : ((Char.char, StreamIO.instream) StringCvt.reader -> ('a, StreamIO.instream) StringCvt.reader) -> instream -> 'a option end; structure TextIO: TEXT_IO = struct open TextIO val canInput = fn (s, n) => Option.map FixedInt.toLarge (canInput(s, FixedInt.fromLarge n)) val inputN = fn (s, n) => inputN(s, FixedInt.fromLarge n) structure StreamIO = struct open StreamIO val canInput = fn (s, n) => Option.map FixedInt.toLarge (canInput(s, FixedInt.fromLarge n)) val inputN = fn (s, n) => inputN(s, FixedInt.fromLarge n) end end; signature BIN_IO = sig include IMPERATIVE_IO where type StreamIO.vector = Word8Vector.vector where type StreamIO.elem = Word8.word where type StreamIO.reader = BinPrimIO.reader where type StreamIO.writer = BinPrimIO.writer where type StreamIO.pos = BinPrimIO.pos val openIn : string -> instream val openOut : string -> outstream val openAppend : string -> outstream end; structure BinIO: BIN_IO = struct open BinIO val canInput = fn (s, n) => Option.map FixedInt.toLarge (canInput(s, FixedInt.fromLarge n)) val inputN = fn (s, n) => inputN(s, FixedInt.fromLarge n) structure StreamIO = struct open StreamIO val canInput = fn (s, n) => Option.map FixedInt.toLarge (canInput(s, FixedInt.fromLarge n)) val inputN = fn (s, n) => inputN(s, FixedInt.fromLarge n) end end; polyml-5.7.1/modules/IntInfAsInt/Word.sml0000644000175000017500000000361413204034553017231 0ustar daviddavid(* Title: Rebuild the basis library: Word Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Word, LargeWord etc. *) useBasis "WordSignature.sml"; (* This depends on Word, Int, etc but the dependencies on Word don't affect this. *) structure Word: WORD = struct open Word val wordSize = FixedInt.toLarge wordSize val fromInt = fromLargeInt and toInt = toLargeInt and toIntX = toLargeIntX end; structure LargeWord: WORD = struct open LargeWord val wordSize = FixedInt.toLarge wordSize val fromInt = fromLargeInt and toInt = toLargeInt and toIntX = toLargeIntX end; structure SysWord: WORD = struct open SysWord val wordSize = FixedInt.toLarge wordSize val fromInt = fromLargeInt and toInt = toLargeInt and toIntX = toLargeIntX end; structure Word32: WORD = struct open Word32 val wordSize = FixedInt.toLarge wordSize val fromInt = fromLargeInt and toInt = toLargeInt and toIntX = toLargeIntX end; structure Word8: WORD = struct open Word8 val wordSize = FixedInt.toLarge wordSize val fromInt = fromLargeInt and toInt = toLargeInt and toIntX = toLargeIntX end; val () = if LargeWord.wordSize = 64 then useLocal "Word64.sml" else (); polyml-5.7.1/modules/IntInfAsInt/ROOT.sml0000644000175000017500000000711113204034553017075 0ustar daviddavid(* If we already have int as arbitrary precision we don't need this. This also deals with the problem of building with 5.6 where FixedInt is missing. *) case Int.precision of NONE => let fun printError() = print "Module not required\n" in (* Create an empty module and exit. *) PolyML.SaveState.saveModule("IntInfAsInt", {functors=[], sigs=[], structs=[], onStartup=SOME printError }); OS.Process.exit OS.Process.success end | SOME _ => (); local val dirName = case PolyML.getUseFileName() of NONE => "." | SOME s => OS.Path.dir s in fun useBasis fileName = let open OS.Path val {isAbs, vol, arcs} = fromString dirName val basisFile = toString{isAbs=isAbs, vol=vol, arcs=arcs @ [parentArc, parentArc, "basis", fileName]} in use basisFile end fun useLocal fileName = use (OS.Path.joinDirFile{dir=dirName, file=fileName}) end; RunCall.setDefaultIntTypeArbitrary true; (* Set the default for overloadings. *) useLocal "Integer.sml"; useLocal "List.sml"; useLocal "StringChar.sml"; useLocal "ArrayVector.sml"; useLocal "Word.sml"; useLocal "RealStringCvt.sml"; useLocal "Date.sml"; useLocal "InputOutput.sml"; (* Thread? *) (* Socket? *) (* Use saveModuleBasic because we want to include values and types *) local open PolyML.SaveState fun dolookup (look, tag, kind) s = case look PolyML.globalNameSpace s of SOME v => Universal.tagInject tag (s, v) | NONE => raise Fail (concat[kind, " ", s, " has not been declared"]) val structVals = map (dolookup(#lookupStruct, Tags.structureTag, "Structure")) ([ "IntInf", "LargeInt", "Int", "FixedInt", "List", "Char", "String", "Substring", "CharVector", "BoolVector", "Word8Vector", "Vector", "CharArray", "BoolArray", "RealArray", "Word8Array", "Array", "CharVectorSlice", "RealVectorSlice", "Word8VectorSlice", "VectorSlice", "CharArraySlice", "RealArraySlice", "Word8ArraySlice", "ArraySlice", "IntVector", "IntArray", "IntVectorSlice", "IntArraySlice", "Text", "Array2", "Word8Array2", "CharArray2", "BoolArray2", "IntArray2", "RealArray2", "Word", "LargeWord", "SysWord", "Word32", "Word8", "IEEEReal", "StringCvt", "Real", "LargeReal", "Date", "TextIO", "BinIO" ] @ (if LargeWord.wordSize = 64 then ["Word64"] else [])) val functorVals = map (dolookup(#lookupFunct, Tags.functorTag, "Functor")) [ ] val sigVals = map (dolookup(#lookupSig, Tags.signatureTag, "Signature")) [ "INTEGER", "INT_INF", "LIST", "CHAR", "STRING", "SUBSTRING", "STRING_CVT", "MONO_VECTOR", "VECTOR", "MONO_ARRAY", "ARRAY", "MONO_VECTOR_SLICE", "VECTOR_SLICE", "MONO_ARRAY_SLICE", "ARRAY_SLICE", "TEXT", "ARRAY2", "MONO_ARRAY2", "WORD", "IEEE_REAL", "REAL", "DATE", "STREAM_IO", "IMPERATIVE_IO", "TEXT_STREAM_IO", "TEXT_IO", "BIN_IO" ] val typeVals = map (dolookup(#lookupType, Tags.typeTag, "Type")) [ "int" ] val valueVals = map (dolookup(#lookupVal, Tags.valueTag, "Value")) [ "length", "ord", "chr", "substring", "size", "real", "trunc", "floor", "ceil", "round" ] val startVal = [Universal.tagInject Tags.startupTag (fn () => RunCall.setDefaultIntTypeArbitrary true)] in val () = saveModuleBasic("IntInfAsInt", structVals @ functorVals @ sigVals @ typeVals @ valueVals @ startVal) end; polyml-5.7.1/modules/IntInfAsInt/Integer.sml0000644000175000017500000000406413204034553017713 0ustar daviddavid(* Title: Rebuild the basis library: integer Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) type int = IntInf.int; (* Integer *) (* Define this first. It's explicitly referenced in the INTEGER signature. *) structure Int = struct type int = IntInf.int end; (* This uses Int.int so needs to be rebuilt. *) useBasis "INTEGER"; signature INT_INF = sig include INTEGER val divMod : int * int -> int * int val quotRem : int * int -> int * int val pow : int * Int.int -> int val log2 : int -> Int.int val orb : int * int -> int val xorb : int * int -> int val andb : int * int -> int val notb : int -> int val << : int * Word.word -> int val ~>> : int * Word.word -> int end; structure IntInf: INT_INF = struct open IntInf val toInt = toLarge and fromInt = fromLarge val precision = Option.map FixedInt.toLarge precision val sign = FixedInt.toLarge o sign val log2 = FixedInt.toLarge o log2 val pow = fn (i, j) => pow(i, FixedInt.fromLarge j) end; structure LargeInt: INTEGER = IntInf; structure Int: INTEGER = LargeInt; structure FixedInt: INTEGER = struct open FixedInt val toInt = toLarge and fromInt = fromLarge val precision = Option.map toLarge precision val sign = FixedInt.toLarge o sign end; val () = case FixedInt.precision of SOME 31 => useBasis "Int31.sml" | SOME 63 => useBasis "Int63.sml" | _ => (); polyml-5.7.1/modules/IntInfAsInt/RealStringCvt.sml0000644000175000017500000001023713204034553021044 0ustar daviddavid(* Title: Rebuild the basis library: Real and StringCvt Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Real *) useBasis "IEEE_REAL.sml"; structure IEEEReal: IEEE_REAL = struct open IEEEReal type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } local fun toNewDA {class, sign, digits, exp } : decimal_approx = {class=class, sign=sign, digits = map FixedInt.toLarge digits, exp = FixedInt.toLarge exp } and fromNewDA ({class, sign, digits, exp } : decimal_approx) = {class=class, sign=sign, digits = map FixedInt.fromLarge digits, exp = FixedInt.fromLarge exp } in val toString = toString o fromNewDA val scan = fn getc => fn src => Option.map(fn (v, c) => (toNewDA v, c)) (scan getc src) and fromString = (Option.map toNewDA) o fromString end end; (* There's a complication. We need access to both the old and new versions of the StringCvt.realfmt datatype. *) local structure OldStringCvt = StringCvt in structure StringCvt: STRING_CVT = struct open StringCvt datatype realfmt = SCI of int option | FIX of int option | GEN of int option | EXACT val padRight = fn c => fn i => padRight c (FixedInt.fromInt i) and padLeft = fn c => fn i => padLeft c (FixedInt.fromInt i) end; structure Real = struct open Real val radix = FixedInt.toLarge radix val precision = FixedInt.toLarge precision val sign = FixedInt.toLarge o sign val toManExp = fn r => let val {man, exp} = toManExp r in {man=man, exp= FixedInt.toLarge exp} end and fromManExp = fn {man, exp} => fromManExp{man=man, exp=FixedInt.fromLarge exp } val toInt = toLargeInt and fromInt = fromLargeInt val floor = toLargeInt IEEEReal.TO_NEGINF and ceil = toLargeInt IEEEReal.TO_POSINF and trunc = toLargeInt IEEEReal.TO_ZERO and round = toLargeInt IEEEReal.TO_NEAREST val toDecimal = fn r => let val {class, sign, digits, exp } = toDecimal r in {class=class, sign=sign, digits = map FixedInt.toLarge digits, exp = FixedInt.toLarge exp } end val fromDecimal = fn {class, sign, digits, exp } => fromDecimal {class=class, sign=sign, digits = map FixedInt.fromLarge digits, exp = FixedInt.fromLarge exp } local fun rfmt (StringCvt.SCI(SOME s)) r = fmt (OldStringCvt.SCI(SOME(FixedInt.fromLarge s))) r | rfmt (StringCvt.SCI NONE) r = fmt (OldStringCvt.SCI NONE) r | rfmt (StringCvt.FIX(SOME s)) r = fmt (OldStringCvt.FIX(SOME(FixedInt.fromLarge s))) r | rfmt (StringCvt.FIX NONE) r = fmt (OldStringCvt.FIX NONE) r | rfmt (StringCvt.GEN(SOME s)) r = fmt (OldStringCvt.GEN(SOME(FixedInt.fromLarge s))) r | rfmt (StringCvt.GEN NONE) r = fmt (OldStringCvt.GEN NONE) r | rfmt StringCvt.EXACT r = fmt OldStringCvt.EXACT r in val fmt = rfmt end end end; useBasis "RealSignature.sml"; (* This uses IEEEReal and the new StringCvt and decimal_approx *) structure Real: REAL = Real; structure LargeReal = Real; val real : int -> real = Real.fromInt val trunc : real -> int = Real.trunc val floor : real -> int = Real.floor val ceil : real -> int = Real.ceil val round : real -> int =Real.round; polyml-5.7.1/modules/IntInfAsInt/Word64.sml0000644000175000017500000000024113204034553017374 0ustar daviddavid(* Only built if LargeWord is 64-bits *) val () = if LargeWord.wordSize = 64 then () else raise Fail "LargeWord.wordSize <> 64"; structure Word64 = LargeWord; polyml-5.7.1/modules/IntInfAsInt/List.sml0000644000175000017500000000227113204034553017227 0ustar daviddavid(* Title: Rebuild the basis library: list Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) useBasis "ListSignature"; structure List: LIST = struct open List val take = fn (l, i) => take(l, FixedInt.fromInt i) val tabulate = fn (n, f) => tabulate(FixedInt.fromInt n, fn q => f(FixedInt.toInt q)) val length = fn l => FixedInt.toInt(length l) val nth = fn (l, i) => nth(l, FixedInt.fromInt i) val drop = fn (l, i) => drop(l, FixedInt.fromInt i) end; val length : 'a list -> int = List.length; polyml-5.7.1/modules/IntInfAsInt/Makefile.in0000644000175000017500000003116413204034553017647 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = modules/IntInfAsInt DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_CFLAGS = @FFI_CFLAGS@ FFI_LIBS = @FFI_LIBS@ FGREP = @FGREP@ GIT_VERSION = @GIT_VERSION@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSFLAG = @OSFLAG@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gitinstalled = @gitinstalled@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ polyc_CFLAGS = @polyc_CFLAGS@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/IntInfAsInt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign modules/IntInfAsInt/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-exec-local install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-local all-local: IntInfAsInt clean-local: -rm -f IntInfAsInt install-exec-local: $(mkdir_p) $(DESTDIR)$(moduledir) $(INSTALL_PROGRAM) IntInfAsInt $(DESTDIR)$(moduledir) uninstall-local: -rm -f $(DESTDIR)$(moduledir)/IntInfAsInt IntInfAsInt: ../../poly$(EXEEXT) ROOT.sml echo "use \"$(srcdir)/ROOT.sml\";" | ../../poly$(EXEEXT) -q -error-exit # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/modules/Makefile.in0000644000175000017500000004460413204034553015524 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = modules DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_CFLAGS = @FFI_CFLAGS@ FFI_LIBS = @FFI_LIBS@ FGREP = @FGREP@ GIT_VERSION = @GIT_VERSION@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSFLAG = @OSFLAG@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gitinstalled = @gitinstalled@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ polyc_CFLAGS = @polyc_CFLAGS@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign SUBDIRS = IntInfAsInt all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign modules/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/README.md0000644000175000017500000000565613204034553013272 0ustar daviddavidPoly/ML logo # Poly/ML Poly/ML is a Standard ML implementation originally written in an experimental language called [Poly](http://www.polyml.org/Doc.html#poly). It has been fully compatible with the [ML97 standard](http://sml-family.org/sml97-defn.pdf) since version 4.0. For a full history, see [here](http://www.polyml.org/FAQ.html#history). Poly/ML takes a conservative approach to the Standard ML language and avoids incompatible extensions. It has added various library extensions particularly the thread library. Poly/ML's active development and unique features make it an exceptional implementation. ## Table of Contents * [Features](#features) * [Basis](#basis) * [Platforms and Installation](#platforms-and-installation) * [Support](#support) ## Features * Fast compiler * Preferred implementation for large projects such as [Isabelle](https://isabelle.in.tum.de/) and [HOL](https://hol-theorem-prover.org/). * [Foreign function interface](http://www.polyml.org/documentation/Tutorials/CInterface.html) - allows static and dynamic libraries to be loaded in Poly/ML and exposes their functions as Poly/ML functions. See [here](https://www.mail-archive.com/polyml@inf.ed.ac.uk/msg00940.html) for an example of static linking. * [Symbolic debugger](http://www.polyml.org/documentation/Tutorials/Debugging.html) * [Windows programming interface](http://www.polyml.org/documentation/Tutorials/WindowsProgramming.html) * [Thread library](http://www.polyml.org/documentation/Reference/Threads.html) - provides a simplified version of Posix threads modified for Standard ML and allows Poly/ML programs to make use of multiple cores. The garbage collector is also parallelised. ## Basis The documentation for the Poly/ML Basis library can be found [here](http://www.polyml.org/documentation/Reference/Basis.html) and includes information on global values and types as well as structures, signatures and functors. More in-depth documentation can be found at the SML Family website [here](http://sml-family.org/Basis/manpages.html). ## Platforms and Installation Poly/ML has native support for i386 (32- and 64-bit) and bytecode support for unsupported architectures. For more information, see the [download](http://www.polyml.org/download.html) page. ### Debian/Ubuntu ```bash $ apt-get install polyml ``` ### OS X ```bash $ brew install polyml ``` ### FreeBSD ```bash $ cd /usr/ports/lang/polyml && make install ``` ### Git To build: ```bash $ ./configure $ make $ make compiler $ make install ``` To clean: ```bash $ make clean-local clean distclean ``` ## Support Support for Poly/ML can be found on Stackoverflow using the [polyml](http://stackoverflow.com/questions/tagged/polyml) and [sml](http://stackoverflow.com/questions/tagged/sml) tags or on the Poly/ML [mailing list](http://lists.inf.ed.ac.uk/mailman/listinfo/polyml) provided by the University of Edinburgh. polyml-5.7.1/PolyML.sln0000644000175000017500000002561213204034553013677 0ustar daviddavid Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.24720.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libffi", "libffi\libffi.vcxproj", "{6D86BC6F-E74E-40C5-9881-F8BB606BCA78}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyLib", "libpolyml\PolyLib.vcxproj", "{0BA5D5B5-F85B-4C49-8A27-67186FA68922}" ProjectSection(ProjectDependencies) = postProject {6D86BC6F-E74E-40C5-9881-F8BB606BCA78} = {6D86BC6F-E74E-40C5-9881-F8BB606BCA78} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyML", "PolyML\PolyML.vcxproj", "{DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyMainLib", "libpolymain\PolyMainLib.vcxproj", "{0326C47A-00AF-42CB-B87D-0369A241B570}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyPerf", "PolyPerf\PolyPerf.vcxproj", "{D9F58E8D-5FCD-4401-8D88-0C28732BD77B}" EndProject Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "wininstall", "wininstall\wininstall.wixproj", "{788BA1C9-699E-4F92-9FAF-C7437A419042}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polyicon", "wininstall\polyicon\polyicon.vcxproj", "{D4DF6521-6183-4E24-A327-55C72519836E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyImport", "PolyImp\PolyImport.vcxproj", "{1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 IntDebug|x64 = IntDebug|x64 IntDebug|x86 = IntDebug|x86 IntRelease|x64 = IntRelease|x64 IntRelease|x86 = IntRelease|x86 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Debug|x64.ActiveCfg = Debug|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Debug|x64.Build.0 = Debug|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Debug|x86.ActiveCfg = Debug|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Debug|x86.Build.0 = Debug|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntDebug|x64.ActiveCfg = IntDebug|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntDebug|x64.Build.0 = IntDebug|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntDebug|x86.ActiveCfg = IntDebug|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntDebug|x86.Build.0 = IntDebug|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntRelease|x64.ActiveCfg = IntRelease|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntRelease|x64.Build.0 = IntRelease|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntRelease|x86.ActiveCfg = IntRelease|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.IntRelease|x86.Build.0 = IntRelease|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Release|x64.ActiveCfg = Release|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Release|x64.Build.0 = Release|x64 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Release|x86.ActiveCfg = Release|Win32 {6D86BC6F-E74E-40C5-9881-F8BB606BCA78}.Release|x86.Build.0 = Release|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Debug|x64.ActiveCfg = Debug|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Debug|x64.Build.0 = Debug|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Debug|x86.ActiveCfg = Debug|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Debug|x86.Build.0 = Debug|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntDebug|x64.ActiveCfg = IntDebug|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntDebug|x64.Build.0 = IntDebug|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntDebug|x86.ActiveCfg = IntDebug|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntDebug|x86.Build.0 = IntDebug|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntRelease|x64.ActiveCfg = IntRelease|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntRelease|x64.Build.0 = IntRelease|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntRelease|x86.ActiveCfg = IntRelease|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.IntRelease|x86.Build.0 = IntRelease|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Release|x64.ActiveCfg = Release|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Release|x64.Build.0 = Release|x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Release|x86.ActiveCfg = Release|Win32 {0BA5D5B5-F85B-4C49-8A27-67186FA68922}.Release|x86.Build.0 = Release|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Debug|x64.ActiveCfg = Debug|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Debug|x64.Build.0 = Debug|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Debug|x86.ActiveCfg = Debug|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Debug|x86.Build.0 = Debug|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntDebug|x64.ActiveCfg = IntDebug|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntDebug|x64.Build.0 = IntDebug|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntDebug|x86.ActiveCfg = IntDebug|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntDebug|x86.Build.0 = IntDebug|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntRelease|x64.ActiveCfg = IntRelease|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntRelease|x64.Build.0 = IntRelease|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntRelease|x86.ActiveCfg = IntRelease|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.IntRelease|x86.Build.0 = IntRelease|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Release|x64.ActiveCfg = Release|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Release|x64.Build.0 = Release|x64 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Release|x86.ActiveCfg = Release|Win32 {DF3B373E-67DF-4AB4-8B1E-F54C5810E2CF}.Release|x86.Build.0 = Release|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.Debug|x64.ActiveCfg = Debug|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.Debug|x64.Build.0 = Debug|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.Debug|x86.ActiveCfg = Debug|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.Debug|x86.Build.0 = Debug|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntDebug|x64.ActiveCfg = IntDebug|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntDebug|x64.Build.0 = IntDebug|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntDebug|x86.ActiveCfg = IntDebug|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntDebug|x86.Build.0 = IntDebug|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntRelease|x64.ActiveCfg = IntRelease|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntRelease|x64.Build.0 = IntRelease|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntRelease|x86.ActiveCfg = IntRelease|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.IntRelease|x86.Build.0 = IntRelease|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.Release|x64.ActiveCfg = Release|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.Release|x64.Build.0 = Release|x64 {0326C47A-00AF-42CB-B87D-0369A241B570}.Release|x86.ActiveCfg = Release|Win32 {0326C47A-00AF-42CB-B87D-0369A241B570}.Release|x86.Build.0 = Release|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Debug|x64.ActiveCfg = Debug|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Debug|x64.Build.0 = Debug|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Debug|x86.ActiveCfg = Debug|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Debug|x86.Build.0 = Debug|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntDebug|x64.ActiveCfg = Debug|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntDebug|x64.Build.0 = Debug|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntDebug|x86.ActiveCfg = Debug|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntDebug|x86.Build.0 = Debug|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntRelease|x64.ActiveCfg = Release|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntRelease|x64.Build.0 = Release|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntRelease|x86.ActiveCfg = Release|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.IntRelease|x86.Build.0 = Release|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Release|x64.ActiveCfg = Release|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Release|x64.Build.0 = Release|x64 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Release|x86.ActiveCfg = Release|Win32 {D9F58E8D-5FCD-4401-8D88-0C28732BD77B}.Release|x86.Build.0 = Release|Win32 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Debug|x64.ActiveCfg = Debug|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Debug|x86.ActiveCfg = Debug|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.IntDebug|x64.ActiveCfg = Release|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.IntDebug|x86.ActiveCfg = Debug|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.IntRelease|x64.ActiveCfg = Release|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.IntRelease|x86.ActiveCfg = Release|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Release|x64.ActiveCfg = Release|x64 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Release|x64.Build.0 = Release|x64 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Release|x86.ActiveCfg = Release|x86 {788BA1C9-699E-4F92-9FAF-C7437A419042}.Release|x86.Build.0 = Release|x86 {D4DF6521-6183-4E24-A327-55C72519836E}.Debug|x64.ActiveCfg = Debug|x64 {D4DF6521-6183-4E24-A327-55C72519836E}.Debug|x86.ActiveCfg = Debug|Win32 {D4DF6521-6183-4E24-A327-55C72519836E}.IntDebug|x64.ActiveCfg = Debug|x64 {D4DF6521-6183-4E24-A327-55C72519836E}.IntDebug|x86.ActiveCfg = Debug|Win32 {D4DF6521-6183-4E24-A327-55C72519836E}.IntRelease|x64.ActiveCfg = Release|x64 {D4DF6521-6183-4E24-A327-55C72519836E}.IntRelease|x86.ActiveCfg = Release|Win32 {D4DF6521-6183-4E24-A327-55C72519836E}.Release|x64.ActiveCfg = Release|x64 {D4DF6521-6183-4E24-A327-55C72519836E}.Release|x64.Build.0 = Release|x64 {D4DF6521-6183-4E24-A327-55C72519836E}.Release|x86.ActiveCfg = Release|Win32 {D4DF6521-6183-4E24-A327-55C72519836E}.Release|x86.Build.0 = Release|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Debug|x64.ActiveCfg = Debug|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Debug|x64.Build.0 = Debug|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Debug|x86.ActiveCfg = Debug|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Debug|x86.Build.0 = Debug|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntDebug|x64.ActiveCfg = IntDebug|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntDebug|x64.Build.0 = IntDebug|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntDebug|x86.ActiveCfg = IntDebug|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntDebug|x86.Build.0 = IntDebug|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntRelease|x64.ActiveCfg = IntRelease|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntRelease|x64.Build.0 = IntRelease|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntRelease|x86.ActiveCfg = IntRelease|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.IntRelease|x86.Build.0 = IntRelease|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Release|x64.ActiveCfg = Release|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Release|x64.Build.0 = Release|x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Release|x86.ActiveCfg = Release|Win32 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal polyml-5.7.1/polymlInterpreted.pyp0000644000175000017500000002476313204034553016267 0ustar daviddavid polyml-5.7.1/polyml.pyp0000644000175000017500000002767613204034553014067 0ustar daviddavid polyml-5.7.1/polyimport.10000644000175000017500000000263013204034553014300 0ustar daviddavid.TH POLY 1 "Poly/ML Version 5.7.1 2017" .SH NAME polyimport \- the Poly/ML import program .SH SYNOPSIS .B polyimport .I importfile .SH DESCRIPTION .I polyimport reads in a Poly/ML import file and runs it. Import files are generated using the PolyML.exportPortable function. .SH OPTIONS .B \-H " size" Sets the initial heap size. The size may be written as a number optionally followed by K, M or G representing kilobytes, megabytes or gigabytes. If none of these is given the number is taken as megabytes. .TP .BI \--minheap " size" Set the minimum heap size. The heap will not shrink below this value. .TP .BI \--maxheap " size" Set the maximum heap size. The heap will not grow above this value. .TP .BI \--gcpercent " percent" Set the target percentage of time that the code should spend in the garbage collector. The heap sizer will attempt to set the heap size to achieve this target consistent with the minimum and maximum heap sizes given by the arguments and also consistent with keeping paging under control. .TP .BI \--gcthreads " threads" Sets the number of threads used in the parallel garbage collector. Setting this to 1 forces the garbage collector to be single-threaded. The value 0, the default, is taken to be the number of processors (cores) available. .TP .BI \--debug " options" Set various debugging options for the run-time system. .fi .SH SEE ALSO .PP .B http://www.polyml.org The Poly/ML web site. polyml-5.7.1/PolyImp/0000755000175000017500000000000013204034553013370 5ustar daviddavidpolyml-5.7.1/PolyImp/PolyImport.vcxproj0000644000175000017500000003230613204034553017127 0ustar daviddavid Debug Win32 IntDebug Win32 IntDebug x64 IntRelease Win32 IntRelease x64 Release Win32 Debug x64 Release x64 {1BA3E7A2-D64F-4CE3-9FE5-7846B855C19F} PolyImport Application true v140_xp Unicode Application true v140_xp Unicode Application false v140_xp true Unicode Application false v140_xp true Unicode Application true v140_xp Unicode Application true v140_xp Unicode Application false v140_xp true Unicode Application false v140_xp true Unicode Level3 Disabled true MultiThreadedDebug true true Windows 6.0 false Level3 Disabled true MultiThreadedDebug true true Windows 6.0 false Level3 Disabled true MultiThreadedDebug true true Windows 6.0 false Level3 Disabled true MultiThreadedDebug true true Windows 6.0 false Level3 MaxSpeed true true true MultiThreaded true true true true Windows 6.0 false Level3 MaxSpeed true true true MultiThreaded true true true true Windows 6.0 false Level3 MaxSpeed true true true MultiThreaded true true true true Windows 6.0 false Level3 MaxSpeed true true true MultiThreaded true true true true Windows 6.0 false {0ba5d5b5-f85b-4c49-8a27-67186fa68922} polyml-5.7.1/polyexports.h0000644000175000017500000000665113204034553014570 0ustar daviddavid/* Title: polyexports.h Copyright (c) 2006, 2011, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This header contains the structures used in saved state created by "export". */ #ifndef _STANDALONE_H #define _STANDALONE_H 1 // Get time_t #ifdef HAVE_TIME_H #include #endif // Get uintptr_t #if HAVE_STDINT_H # include #endif #if HAVE_INTTYPES_H # ifndef __STDC_FORMAT_MACROS # define __STDC_FORMAT_MACROS # endif # include #endif #ifdef HAVE_STDDEF_H # include #endif #if defined(HAVE_WINDOWS_H) # include #endif // There are several entries typedef struct _memTableEntry { void *mtAddr; // The address of the area of memory uintptr_t mtLength; // The length in bytes of the area uintptr_t mtFlags; // Flags describing the area. uintptr_t mtIndex; // An index to identify permanent spaces. } memoryTableEntry; #define MTF_WRITEABLE 0x00000001 // The area is writeable by ML code #define MTF_EXECUTABLE 0x00000002 // The area contains executable code #define MTF_NO_OVERWRITE 0x00000004 // With MTF_WRITEABLE: Don't load over the top #define MTF_BYTES 0x00000008 // Contains only byte data and no addresses typedef struct _exportDescription { unsigned structLength; // The length of this structure unsigned memTableSize; // The size of each entry in the memory table unsigned memTableEntries; // The number of entries in the memory table memoryTableEntry *memTable; // Pointer to the memory table. void *rootFunction; // Points to the start-up function time_t timeStamp; // Creation time stamp unsigned architecture; // Machine architecture unsigned rtsVersion; // Run-time system version } exportDescription; extern exportDescription poly_exports; #ifdef __cplusplus extern "C" { #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include # ifdef LIBPOLYML_BUILD # ifdef DLL_EXPORT # define POLYLIB_API __declspec (dllexport) # endif # elif defined _MSC_VER // Visual C - POLYLIB_EXPORTS is defined in the library project settings # ifdef POLYLIB_EXPORTS # define POLYLIB_API __declspec (dllexport) # else # define POLYLIB_API __declspec (dllimport) # endif # elif defined DLL_EXPORT # define POLYLIB_API __declspec (dllimport) # else # define POLYLIB_API # endif extern POLYLIB_API int PolyWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow, exportDescription *exports); #else int polymain(int argc, char *argv[], exportDescription *exports); #endif #ifdef __cplusplus }; #endif #endif polyml-5.7.1/samplecode/0000755000175000017500000000000013204034553014113 5ustar daviddavidpolyml-5.7.1/samplecode/PolyML/0000755000175000017500000000000013204034553015267 5ustar daviddavidpolyml-5.7.1/samplecode/PolyML/CodeTree.ML0000644000175000017500000000525713204034553017224 0ustar daviddavid(* Example code for let fun addOne x = x+1 in addOne 2 end *) local open PolyML.CodeTree RuntimeCalls val addFn = rtsFunction POLY_SYS_aplus val one = mkConstant (RunCall.unsafeCast 1) val addOne = mkFunction(mkCall(addFn, [mkLoad(~1, 0), one]), 1, "addOne") val two = mkConstant (RunCall.unsafeCast 2) val block = mkEnv([mkDec(1, addOne)], mkCall(mkLoad(1, 0), [two])) val run = genCode block () val result = valOf (evalue run) in val r: int = RunCall.unsafeCast result end; (* Another example showing how ML values can be incorporated in the code. The code is roughly equivalent to the ML code but the function being defined takes two arguments rather than a tuple. let fun concatWithSpace(a,b) = a ^ " " ^ b in TextIO.print(concatWithSpace("Hello", "World\n" end *) let open PolyML.NameSpace PolyML.CodeTree (* Simple case: just cast this as a constant. *) val printCode = mkConstant (RunCall.unsafeCast TextIO.print) (* More complicated case. Using this gets access to any inlined code for "^". *) val concat = codeForValue(valOf (#lookupVal PolyML.globalNameSpace "^")) (* fun concatWithSpace(a,b) = a ^ " " ^ b The function we're defining takes two arguments but ML functions such as "^" always take a single argument which may be a tuple. *) val space = mkConstant(RunCall.unsafeCast " ") val concatWithSpace = mkFunction( mkCall(concat, [mkTuple[ mkCall(concat, [mkTuple[mkLoad(~2, 0), space]]), mkLoad(~1, 0) ] ]), 2, "concatWithSpace") val hello = mkConstant(RunCall.unsafeCast "Hello") val world = mkConstant(RunCall.unsafeCast "World\n") val block = mkEnv( [mkDec(1, concatWithSpace)], mkCall(printCode, [mkCall(mkLoad(1, 0), [hello, world])] ) ) val code = genCode block in code(); () end; (* Example of building a loop. *) let open RuntimeCalls; open PolyML.CodeTree; fun printInt n = TextIO.print(Int.toString n ^ "\n"); val code = mkBeginLoop( mkIf( mkCall(rtsFunction POLY_SYS_equala, [mkLoad(1,0), mkConstant(RunCall.unsafeCast 10)]), mkConstant(RunCall.unsafeCast 0), mkEnv( [mkNullDec(mkCall(mkConstant(RunCall.unsafeCast printInt), [mkLoad(1,0)]))], mkLoop[ mkCall(rtsFunction POLY_SYS_aplus, [mkLoad(1,0), mkConstant(RunCall.unsafeCast 1)]) ] ) ) , [(1, mkConstant(RunCall.unsafeCast 0))] ) in genCode code () end; polyml-5.7.1/samplecode/ide/0000755000175000017500000000000013204034553014654 5ustar daviddavidpolyml-5.7.1/samplecode/ide/use.sml0000644000175000017500000001512513204034553016171 0ustar daviddavid(* Title: Modified version of the "use" function which saves state Author: David Matthews Copyright David Matthews 2009 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is an example version of the "use" function that the IDE may call in the prelude before a build. It takes a directory name and returns a "use" function that saves the state and dependencies in ".save" and ".deps" files within that directory. It should be called as e.g. val use = ideUse ".polysave" to define a version of "use" for the rest of the compilation. *) fun ideUse saveDirName = let (* If we are building under the IDE we need to record the dependencies and also save the state before each file we "use". *) val saveDirectory: string option ref = ref NONE val dependencies: string list ref = ref [] open OS.Path (* Get the root directory and save directory (typically .polysave). Do this once when this function is called and convert them to absolute paths using the current directory when this is called. Assume that the root directory is the parent of the save directory. N.B. Because the directory may not yet exist we can't use OS.FileSys.fullPath. *) val saveDirPath = mkAbsolute { path = saveDirName, relativeTo = OS.FileSys.getDir() } (* The root directory is the directory that is assumed to be the root of the project. For each source file within this directory with path a/b/c.ML there will be a corresponding saved state file .polysave/a/b/c.ML . If "use" is called on a file that is not within the root directory no information will be saved for that file. *) val { dir = rootPath, ...} = splitDirFile saveDirPath fun preUse fileName = let open OS.Path (* Create a directory hierarchy. *) fun createDirs path = if path = "" orelse (OS.FileSys.isDir path handle OS.SysErr _ => false) then () else ( createDirs (OS.Path.dir path); OS.FileSys.mkDir path ); (* Compute the full path to the actual file taking account of any change of directory then make it relative to the root. *) val filePathRelativeToRoot = let val fullFileName = OS.FileSys.fullPath fileName val pathFromRoot = mkRelative { path = fullFileName, relativeTo = rootPath } (* Is the file in the root directory or a sub-directory or is it in some other directory? *) val { arcs, ...} = fromString pathFromRoot in case arcs of topArc :: _ => (* If the first part of the path is ".." then it's in some other directory. *) if topArc = parentArc then NONE else SOME pathFromRoot | _ => NONE (* No path at all? *) end handle Path => NONE (* Different volumes: can't make relative path. *) | OS.SysErr _ => NONE (* If fileName doesn't actually exist. *) in case filePathRelativeToRoot of NONE => () (* Do nothing: we can't save it. *) | SOME fileName => let local val baseName = concat(saveDirPath, fileName) in val saveFile = mkCanonical (joinBaseExt{ base = baseName, ext = SOME "save"}) val depFile = mkCanonical (joinBaseExt{ base = baseName, ext = SOME "deps"}) end (* Reset the save directory before we save so that it isn't set in the saved state. That means that "use" won't save the state unless it's explicitly asked to. *) val saveSave = ! saveDirectory in (* Create any containing directories. *) createDirs(OS.Path.dir saveFile); saveDirectory := NONE; (* Save the state. *) PolyML.SaveState.saveChild (saveFile, List.length(PolyML.SaveState.showHierarchy())); (* Restore the ref. *) saveDirectory := saveSave; (* Write out the dependencies. *) let open TextIO val f = openOut depFile in List.app(fn s => output(f, s ^ "\n")) (!dependencies); closeOut f end; (* Add this file to the dependency list. *) dependencies := ! dependencies @ [fileName] end handle (ex as OS.SysErr args) => (print (String.concat["Exception SysErr(", PolyML.makestring args, ") raised for ", fileName, "\n"]); raise ex) end in fn originalName => let (* Find the actual file name by following the suffixes. This mirrors what "use" will do. *) (* use "f" first tries to open "f" but if that fails it tries "f.ML", "f.sml" etc. *) fun trySuffixes [] = (* Not found - attempt to open the original and pass back the exception. *) (TextIO.openIn originalName, originalName) | trySuffixes (s::l) = (TextIO.openIn (originalName ^ s), originalName ^ s) handle IO.Io _ => trySuffixes l (* First in list is the name with no suffix. *) val (inStream, fileName) = trySuffixes("" :: ! PolyML.suffixes) val () = preUse fileName in PolyML.use fileName (* Now call the underlying use to do the work. *) end end; polyml-5.7.1/samplecode/Networking/0000755000175000017500000000000013204034553016242 5ustar daviddavidpolyml-5.7.1/samplecode/Networking/HTTPSample.ML0000644000175000017500000000153713204034553020423 0ustar daviddavid(* Example code to read from the Poly/ML website. *) let val s : Socket.active INetSock.stream_sock = INetSock.TCP.socket(); val SOME poly = NetHostDB.getByName "www.polyml.org" val addr = INetSock.toAddr(NetHostDB.addr poly, 80) (* There seems to be a bug in Solaris 8 which means that select indicates that there is data to read even when there isn't. *) fun readit () = case Socket.select{rds = [Socket.sockDesc s], wrs=[], exs=[], timeOut=SOME(Time.fromSeconds 10)} of { rds = [], ...} => () | _ => let val text = Socket.recvVec(s, 1) in if Word8Vector.length text = 0 then () else ( print(Byte.bytesToString text); readit() ) end in Socket.connect (s, addr); Socket.sendVec(s, Word8VectorSlice.full(Byte.stringToBytes "GET / HTTP/1.1\r\nHost: www.polyml.org\r\n\r\n")); readit(); Socket.close s end; polyml-5.7.1/samplecode/processes.ML0000644000175000017500000004157513204034553016367 0ustar daviddavid(* Title: Process package for ML. Author: David C. J. Matthews Copyright (c) 2007 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is provided for backwards compatibility. New programs should use the Thread structure directly. *) structure Process: sig type 'a channel val channel: unit -> '_a channel val send: 'a channel * 'a -> unit val receive: 'a channel -> 'a val fork: (unit->unit)->unit val console: (unit->unit)->(unit->unit) val choice: (unit->unit)*(unit->unit)->unit val interruptConsoleProcesses: unit->unit end = struct open Thread.Thread Thread.Mutex Thread.ConditionVar val debug = ref false and identifiers = ref 0 and ids = ref 0; (* Each process created by fork, console or choice has this information as thread-local data. *) datatype processData = PROC of { synchro: (synchroniser * direction) list ref, (* The synchroniser chain. *) blocker: conditionVar, (* Condition var to block this process. *) processNo: int (* An identifier for debugging. *) } and synchroniser = SYNCH of { state: choicestate ref, (* The state of this choice. *) synchLock: mutex (* A mutex to protect the state variable. *) } and choicestate = ChoiceUntaken | ChoiceTaken of direction and direction = DirLeft | DirRight; val procTag = Universal.tag(): processData Universal.tag (* Get the process data for this thread. If it was created by a Thread call directly it may not yet have any process data so we need to make it now. *) fun get_process_data(): processData = case getLocal procTag of SOME p => p | NONE => let val pnum = (identifiers := !identifiers+1; !identifiers); val pData = PROC { synchro = ref [], blocker = conditionVar(), processNo = pnum } in setLocal(procTag, pData); pData end datatype 'a channel = CHAN of {senders: 'a procVal list ref, receivers: 'a option ref procVal list ref, chanLock: mutex, Id: int} (* This represents a suspended process. The 'a is either a value to be sent or a "basket", a reference to hold the result. *) withtype 'a procVal = conditionVar * processData * 'a fun channel () : 'a channel = CHAN {senders = ref [], receivers = ref [], chanLock = mutex(), Id = (ids := !ids+1; !ids) } datatype 'a synchResult = NoMatch | FoundMatch of 'a procVal (* Prunes the synchroniser list to remove committed choices. Returns the first non-committed synchroniser or the first committed synchroniser with a choice that is taken in the "wrong" direction (i.e. which ndicates that this process must not be allowed to communicate). *) fun getActiveSynchroniser(PROC{synchro, ...}, unlockAfter) = let fun getSynch [] = [] | getSynch(l as (SYNCH{state, synchLock}, dir) :: t) = ( lock synchLock; case ! state of ChoiceUntaken => (* This is untaken. Stop here. *) ( if unlockAfter then unlock synchLock else (getSynch t; ()); (* We need to lock any others. *) l ) | ChoiceTaken d => (* This is taken. Stop here if it is taken in a different way. *) ( unlock synchLock; if d = dir then getSynch t else l ) ) val newSynchList = getSynch(! synchro) in (* We can update the list for this process. We don't need to lock the synchro variable since it is only updated either by the process itself or when this process is waiting on a channel, which is locked before access. *) synchro := newSynchList; newSynchList end (* Try to find a matching process. toSearch is the list of corresponding processes i.e. receivers if we are trying to send, senders if we are trying to receive. The result is a pair of the updated version of the toSearch, with the matching process removed if a match has been found and the matching process's data. *) fun synchronise (toSearch: 'a procVal list, thisProcess) : 'a procVal list * 'a synchResult = let (* Release the lock on the synchroniser for the process that is looking for a partner. This is only called if no matching process can be found. *) fun releaseLock(PROC{synchro = ref synchro, ...}) = List.app (fn (SYNCH{synchLock, state=ref ChoiceUntaken}, _) => unlock synchLock | _ => ()) synchro (* Commit the choices and release the locks. If some entries are shared between the two processes then we may find some entries already set. *) fun commitChoices(PROC{synchro=synchro as ref synch, ...}) = ( List.app (fn (SYNCH{synchLock, state=state as ref ChoiceUntaken}, dir) => (state := ChoiceTaken dir; unlock synchLock) | _ => ()) synch; synchro := [] (* Since all are taken we can set this to the empty list. *) ) (* Get the first synchroniser and lock it unless it is already committed. *) val mySynch = getActiveSynchroniser(thisProcess, false (* Leave locked. *)) (* Get the list of synchronisers for a potential matching process. Generally any process on the sender list will match a receiver and vice versa. The exception is if the two processes are alternative choices. We have to be careful with the synchroniser lists. We've already locked the list for our process so we mustn't lock any synchronisers that are shared. *) datatype matchResult = MrTaken | MrAlternatives | MrOK of (synchroniser * direction) list fun getMatchingSynchs(PROC{synchro, ...}) = let fun getSynch([], _) = MrOK [] | getSynch(l as (SYNCH{state, ...}, dir) :: t, myL as (SYNCH{state=s, ...}, myDir) :: myT) = if s <> state then (* Different references - safe to lock. *) lockSynch(l, myL) else (* Same reference - already locked. *) if dir <> myDir (* These are different choices. *) then MrAlternatives (* Not allowed to communicate. *) else (* OK, same choice: test the rest*) getSynch(t, myT) | getSynch(l, []) = (* The list of synchronisers for the original process is empty or has run out before this. *) lockSynch(l, []) and lockSynch(l as (SYNCH{state, synchLock}, dir) :: t, myL) = ( lock synchLock; case ! state of ChoiceUntaken => (* This is untaken. Stop here. *) ( getSynch(t, myL); (* We need to lock any others. *) MrOK l ) | ChoiceTaken d => (* This is taken. Stop here if it is taken in a different way. *) ( unlock synchLock; if d = dir then getSynch(t, myL) else MrTaken ) ) | lockSynch _ = raise Match (* Suppress warning *) in getSynch(! synchro, mySynch) end fun findAProcess [] = (* Find a process that matches and return the new list of partners and the new list of runnable processes. *) (* No match *) ([], NoMatch) | findAProcess((entry as (_,d,_)) :: t) = case getMatchingSynchs d of MrTaken => (* This process is a committed choice in a different direction. Drop it from the list since it can never communicate. *) findAProcess t | MrAlternatives => (* This process is an alternative choice with our process. It can still communicate, just not with us. Skip this and try the next. *) let val (clist, result) = findAProcess t in (entry :: clist, result) end | MrOK _ => (t, FoundMatch entry) (* Return the new list. *) in case mySynch of (SYNCH{state = ref (ChoiceTaken _), ...}, _) :: _ => (* This choice is already taken - kill this process. Actually all we do at this stage is pretend that the process cannot communicate, and suspend it. Later it may be removed from the channel. *) (toSearch, NoMatch) | _ => (* No synch or uncommitted choice. *) case findAProcess toSearch of t as (_, NoMatch) => (releaseLock thisProcess; t) | t as (_, FoundMatch(_,p,_)) => (commitChoices thisProcess; commitChoices p; t) end (* We need to ensure that interrupts are delivered synchronously when synchronising rather than risk receiving an interrupt while holding a lock. *) fun blockInterrupt (f: unit->'a) = let open Thread val oldState = getAttributes() in case List.find (fn InterruptState _ => true | _ => false) oldState of SOME(InterruptState InterruptDefer) => f() (* Continue to defer. *) | SOME(InterruptState InterruptSynch) => f() (* No need to change. *) | _ => (* Unset(?) or asynchronous. Have to make synchronous. *) let val () = setAttributes[InterruptState InterruptSynch] (* Call the function. It may raise an Interrupt exception if it has to wait. In that case we still need to restore the old state. *) val result = f() handle exn => (setAttributes oldState; raise exn) val () = setAttributes oldState; in result end end fun send (CHAN {senders, receivers, chanLock, ...}, v:'a) = blockInterrupt(fn () => let val () = lock chanLock; val myProcessData as PROC { blocker, ...} = get_process_data() in case synchronise(!receivers, myProcessData) of (newlist, FoundMatch (p,_,basket)) (* Success *) => ( basket := SOME v; (* Put the sent value into the receiver's basket. *) receivers := newlist; signal p; (* Wake up the new thread. *) unlock chanLock ) | (newlist, NoMatch) (* Failure *) => (* Set the new receiver/sender list to include this process, and suspend ourselves, releasing the lock. *) ( senders := (blocker, myProcessData, v) :: !senders; receivers := newlist; (* Wait until we're woken up and release the lock. This may result in an exception but if the exception is raised the lock will be reacquired so we must unlock it in the handler. *) wait(blocker, chanLock) handle exn => (unlock chanLock; raise exn); (* We don't need the lock any longer. *) unlock chanLock ) end ) fun receive (CHAN {senders, receivers, chanLock, ...}): 'a = blockInterrupt(fn () => let val () = lock chanLock; val myProcessData as PROC { blocker, ...} = get_process_data() in case synchronise(!senders, myProcessData) of (newlist, FoundMatch (p,_,v)) (* Success *) => ( senders := newlist; signal p; (* Wake up the sending thread. *) unlock chanLock; v (* This is our result *) ) | (newlist, NoMatch) (* Failure *) => (* Set the new receiver/sender list to include this process, and suspend ourselves, releasing the lock. *) let val basket = ref NONE; (* Create a basket to receive the result. *) in receivers := (blocker, myProcessData, basket) :: !receivers; senders := newlist; (* Wait until we're woken up and release the lock. This may result in an exception but if the exception is raised the lock will be reacquired so we must unlock it in the handler. *) wait(blocker, chanLock) handle exn => (unlock chanLock; raise exn); (* We don't need the lock any longer. *) unlock chanLock; valOf(!basket) (* This should have been set to SOME v by the sender. *) end end ) fun new_process f synch attrs = (* Make a new process. *) let val pnum = (identifiers := !identifiers+1; !identifiers); val data = PROC { synchro = ref synch, processNo = pnum, blocker = conditionVar() } fun fun_to_fork () = ( setLocal(procTag, data); (f () handle _ => ()) ) val newproc = fork(fun_to_fork, attrs) in if !debug then (PolyML.print("new_process:", data); ()) else (); newproc end fun fork f = let (* Get the parent's synchroniser and remove any redundant entries. *) val synch = getActiveSynchroniser(get_process_data(), true) val _ = new_process f synch (* Share the parent's synchroniser. *) [EnableBroadcastInterrupt false] (* Does not accept broadcasts. *) in () end and console f = let (* Get the parent's synchroniser and remove any redundant entries. *) val synch = getActiveSynchroniser(get_process_data(), true) val threadId = new_process f synch (* Share the parent's synchroniser. *) [EnableBroadcastInterrupt true] (* Accepts broadcasts. *) in (* Return a function that will interrupt the process. *) fn () => interrupt threadId end and choice (f, g) =(* Fork a pair of "choice" processes. *) let (* Get the parent's synchroniser and remove any redundant entries. *) val synch = getActiveSynchroniser(get_process_data(), true) (* If the parent is already a Choice (whether Taken or not), we run the new processes in Parallel with it. The reason for this is that if we have choice( (choice(a,b); c), d) we allow both a and c (say) to communicate (N.B. "choice" creates two new processes and returns immediately so c runs in parallel with a and b). It is actually equivalent to a.c + b.c + d . *) val newSynch = SYNCH{state = ref ChoiceUntaken, synchLock = mutex()} in new_process g (synch @ [(newSynch, DirLeft)]) [EnableBroadcastInterrupt false]; new_process f (synch @ [(newSynch, DirRight)]) [EnableBroadcastInterrupt false]; () end val interruptConsoleProcesses = broadcastInterrupt end; polyml-5.7.1/Tests/0000755000175000017500000000000013204034553013101 5ustar daviddavidpolyml-5.7.1/Tests/Fail/0000755000175000017500000000000013204034553013754 5ustar daviddavidpolyml-5.7.1/Tests/Fail/Test032.ML0000644000175000017500000000037213204034553015354 0ustar daviddavid(* It seems that ML97 allows free type variables in datatypes, unlike ML90. *) (* Actually that appears to have been an error, so this is now in the Invalid directory. *) fun f x = let datatype t = A of 'a val b = A x val A c = b in c end; polyml-5.7.1/Tests/Fail/Test042.ML0000644000175000017500000000035613204034553015357 0ustar daviddavid(* This is rejected even though the second "where type" doesn't change anything. *) (* In 5.3 the message isn't very helpful. *) signature S = sig type t type u sharing type t = u end where type u = int where type t = int; polyml-5.7.1/Tests/Fail/Test073.ML0000644000175000017500000000042213204034553015355 0ustar daviddavid(* Testing Posix is a problem because the Posix structure is not available in Windows. *) (* This caused an assertion failure when the save vector overflowed. *) Posix.Process.sleep (Time.fromMilliseconds 15000); rubbish; (* Generate a "failure" i.e. the correct result *) polyml-5.7.1/Tests/Fail/Test018.ML0000644000175000017500000000116013204034553015354 0ustar daviddavid(* Stephen Weeks found this bug in which a type error results in a crash. Now fixed by checking each top-level declaration rather than the topdec as a whole. *) (* This should give a type error rather than crashing. *) val b = ref false val r = ref NONE functor F (type t val x: t val f: t -> string) = struct val _ = if !b then print (concat [f (valOf (! r)), "\n"]) else (b := true; r := SOME x) end structure S = F (type t = int val x = 13 val f = Int.toString) structure S = F (type t = real val x = 13.0 val f = Real.toString); polyml-5.7.1/Tests/Fail/Test050.ML0000644000175000017500000000015113204034553015347 0ustar daviddavid(* Structure tests. *) structure S: sig datatype t = A | B | C end = struct datatype t = A | B end; polyml-5.7.1/Tests/Fail/Test025.ML0000644000175000017500000000066213204034553015360 0ustar daviddavid(* Test for printing error messages with type abbreviations. *) signature A = sig type t = int type s type u = s * int val f : u -> t val x : u end; signature S = sig structure A: A val f : A.u -> int end; signature T = sig structure A: A val x: A.u end; functor F (structure S: S and T: T) = struct open S val q = f T.x end; functor F (structure S: S and T: T) = struct open T val q = S.f x end; polyml-5.7.1/Tests/Fail/Test028.ML0000644000175000017500000000020313204034553015352 0ustar daviddavid(* This should fail because 'a becomes scoped at the fun. *) fun x () = (let val id: 'a->'a = fn z => z in id id end; fn z=>z:'a); polyml-5.7.1/Tests/Fail/Test029.ML0000644000175000017500000000073413204034553015364 0ustar daviddavid(* Example of datatype replication from the Definition of Standard ML. *) (* This uses opaque signature matching which means that the declaration of x does not elaborate. *) signature MYBOOL = sig type bool val xor: bool * bool -> bool end; structure MyBool:> MYBOOL = struct datatype bool = datatype bool (* from the inital basis *) fun xor (true, false) = true | xor (false, true) = true | xor _ = false end; val x = MyBool.xor(true, false); polyml-5.7.1/Tests/Fail/Test004.ML0000644000175000017500000000032613204034553015352 0ustar daviddavid(* This should fail because it is an expansive polymorphic expression. *) val x = let val id: 'a->'a = fn z => z in id id end; (* It's now allowed but sets it to a unique monotype. This causes it to fail. *) x 2; polyml-5.7.1/Tests/Fail/Test026.ML0000644000175000017500000000047313204034553015361 0ustar daviddavid(* This is valid in ML90 which maximises equality after applying any sharing constraints but should fail in ML97. *) functor F( S: sig type s datatype t = C of s eqtype u sharing type s = u val x : s end ) = struct fun f y = S.C S.x = y end; polyml-5.7.1/Tests/Fail/Test067.ML0000644000175000017500000000014613204034553015363 0ustar daviddavid(* Check for escaping datatypes. Case 4. *) fun a x = x and b () = let datatype s = S in a S; 0 end; polyml-5.7.1/Tests/Fail/Test056.ML0000644000175000017500000000010113204034553015350 0ustar daviddavid(* Structure tests. *) structure S: sig type t end = struct end; polyml-5.7.1/Tests/Fail/Test027.ML0000644000175000017500000000054613204034553015363 0ustar daviddavid(* Bug detected in Poly/ML 26/10/99. *) (* This function permits equality on functions due to a failure to propagate the equality attribute on flexible records. *) let fun eqforfun (x: int->int, y: int->int) = case ({a=1,b=x}, {a=1,b=y}) of (xx as {a=1,...}, yy as {a=1, ...}) => xx = yy | _ => false in eqforfun(fn x=>x, fn x=>x) end; polyml-5.7.1/Tests/Fail/Test009.ML0000644000175000017500000000020713204034553015355 0ustar daviddavid(* Tests for exporting local datatypes. All these examples are invalid in ML97. *) val rec f = fn x => let datatype t = C in f C end; polyml-5.7.1/Tests/Fail/Test068.ML0000644000175000017500000000017013204034553015361 0ustar daviddavid(* Check for escaping datatypes. Case 5. *) fun f () = let val a = ref nil datatype s = S in a := [S] end; polyml-5.7.1/Tests/Fail/Test058.ML0000644000175000017500000000013213204034553015356 0ustar daviddavid(* Structure tests. *) structure S: sig exception x of int end = struct exception x end; polyml-5.7.1/Tests/Fail/Test065.ML0000644000175000017500000000016113204034553015356 0ustar daviddavid(* Check for escaping datatypes. Case 2. *) fun f x = let datatype s = S in if x = S then 1 else 2 end; polyml-5.7.1/Tests/Fail/Test055.ML0000644000175000017500000000007213204034553015356 0ustar daviddavidstructure S: sig eqtype t end = struct type t = real end; polyml-5.7.1/Tests/Fail/Test053.ML0000644000175000017500000000014413204034553015354 0ustar daviddavid datatype s = X; structure S: sig datatype t = X end where type t = s = struct datatype t = Y end; polyml-5.7.1/Tests/Fail/Test062.ML0000644000175000017500000000012213204034553015350 0ustar daviddavid(* Structure tests. *) structure S: sig val x: int end = struct val x = true end; polyml-5.7.1/Tests/Fail/Test066.ML0000644000175000017500000000016613204034553015364 0ustar daviddavid(* Check for escaping datatypes. Case 3. *) val rec a = fn x => x and b = fn () => let datatype s = S in a S; 0 end; polyml-5.7.1/Tests/Fail/Test060.ML0000644000175000017500000000021313204034553015347 0ustar daviddavid(* Structure tests. *) structure S: sig datatype t = A | B of int type int end = struct type int = bool datatype t = A | B of int end; polyml-5.7.1/Tests/Fail/Test020.ML0000644000175000017500000000024713204034553015352 0ustar daviddavid(* The following is wrong. In Poly/ML the overloading becomes Word8.word and so the conversion fails. *) let fun f x = x+0w1000 in f 0w1: Word8.word; "WRONG" end; polyml-5.7.1/Tests/Fail/Test007.ML0000644000175000017500000000025713204034553015360 0ustar daviddavid(* Tests for exporting local datatypes. All these examples are invalid in ML97. *) fn x => let datatype t = C val _ = if true then x else C in 5 end; polyml-5.7.1/Tests/Fail/Test037.ML0000644000175000017500000000014113204034553015353 0ustar daviddavid signature S = sig type u type s = u * u datatype t = C; sharing type s = t end; polyml-5.7.1/Tests/Fail/Test031.ML0000644000175000017500000000015313204034553015350 0ustar daviddavid(* These examples are invalid. *) val f = (fn x => x) (fn x => x); structure A = struct end val y = f 7 ; polyml-5.7.1/Tests/Fail/Test012.ML0000644000175000017500000000066413204034553015356 0ustar daviddavid(* This example uses opaque matching to create types which are distinct from the base type (int) and from each application. *) (* This particular example also caused a problem with the code-generator which had to be fixed. *) structure A = struct type t = int val x = 1 fun succ y = y + 1 end functor f() :> sig type t val x : t val succ: t-> t end = A structure B = f() and C = f(); (* This should fail. *) val it = B.succ C.x; polyml-5.7.1/Tests/Fail/Test054.ML0000644000175000017500000000010013204034553015345 0ustar daviddavidstructure S: sig datatype t = X end = struct type t = real end; polyml-5.7.1/Tests/Fail/Test033.ML0000644000175000017500000000041613204034553015354 0ustar daviddavid(* It seems that ML97 allows free type variables in datatypes, unlike ML90. Actually that was an error so this is the same as p014. This fails because t is not an equality type. *) fun f x = let datatype t = A of 'a val b = A x in if b = b then x else x end; polyml-5.7.1/Tests/Fail/Test048.ML0000644000175000017500000000022513204034553015360 0ustar daviddavid(* This should fail. *) let val g = #b fun f (x as {a, ...}) = if x = x then g x else g x val _ = f{a=1, b=0.0, c = true} in () end; polyml-5.7.1/Tests/Fail/Test022.ML0000644000175000017500000000027413204034553015354 0ustar daviddavid(* This is wrong but is allowed in 5.2 *) signature S = sig datatype x = A | B end; structure S: S = struct structure T = struct val A = 1 end datatype x = A | B open T end; polyml-5.7.1/Tests/Fail/Test041.ML0000644000175000017500000000014613204034553015353 0ustar daviddavid (* This should definitely be illegal. *) signature S = sig eqtype t end where type t = int->int; polyml-5.7.1/Tests/Fail/Test044.ML0000644000175000017500000000041513204034553015355 0ustar daviddavid(* This will fail in ML97 although it was valid in ML90. Sharing is not transitive. *) functor F( structure A: sig type t val x: t end structure B: sig end structure C: sig type t end sharing A = B sharing B = C ) = struct val q = A.x : C.t end; polyml-5.7.1/Tests/Fail/Test059.ML0000644000175000017500000000016413204034553015364 0ustar daviddavid(* Structure tests. *) structure S: sig datatype t = A | B of int end = struct datatype t = A | B of bool end; polyml-5.7.1/Tests/Fail/Test063.ML0000644000175000017500000000020013204034553015346 0ustar daviddavid(* This was incorrectly accepted in 5.3 *) structure S: sig datatype a = A | B | D end = struct datatype a = A | B | C | D end; polyml-5.7.1/Tests/Fail/Test019.ML0000644000175000017500000000115413204034553015360 0ustar daviddavid(* This was reported as a bug in several implementations which failed to detect a type error. Poly/ML correctly detects it but I'm including this in the regression set just to make sure we don't accidentally allow it in the future. *) structure S: sig val f: 'a option -> 'a option end = struct val make: unit -> 'a option -> 'a option = fn () => let val r: 'a option ref = ref NONE in fn z => (!r before (r := z)) end val f = make () end val _ = S.f (SOME 13) val _ = case S.f (SOME (fn z => z)) of NONE => 15 | SOME f => f 17 ; polyml-5.7.1/Tests/Fail/Test016.ML0000644000175000017500000000022113204034553015347 0ustar daviddavid(* It's crucial that this file does NOT end with a newline. This should give an error message but shouldn't get into an infinite loop! *) 0 0;polyml-5.7.1/Tests/Fail/Test061.ML0000644000175000017500000000024513204034553015355 0ustar daviddavid(* Structure tests. *) structure S: sig datatype 'a opt = NONE | SOME of 'a end where type 'a opt = 'a option = struct datatype 'a opt = NONE | SOME of 'a end; polyml-5.7.1/Tests/Fail/Test072.ML0000644000175000017500000000110013204034553015346 0ustar daviddavid(* This gives a Fixed Record error but should not give an internal error. *) (* Test fom Lars Hupel - Bug ticket 16. *) type tracer = { enabled: bool, parent: int } type trace_data = { ctxt: bool, tracer: tracer } fun with_parent {enabled, parent} = {enabled = enabled, parent = 0} fun disable_trace {parent = parent, ...} = {enabled = false, parent = 0} fun generate_result {ctxt, tracer = {enabled, parent}} = 0 > ctxt fun ask data = let val {ctxt, ...} = data in case generate_result data of true => with_parent ctxt end; polyml-5.7.1/Tests/Fail/Test074.ML0000644000175000017500000000030313204034553015354 0ustar daviddavid(* Flexible records do not inherit the correct "level". *) local fun f x = let val {a, ...} = x in a end; in val q: int = f {a=true} end; polyml-5.7.1/Tests/Fail/Test057.ML0000644000175000017500000000011713204034553015360 0ustar daviddavid(* Structure tests. *) structure S: sig structure T: sig end end = struct end; polyml-5.7.1/Tests/Fail/Test052.ML0000644000175000017500000000017513204034553015357 0ustar daviddavid(* This gives a fault when we try to set the constructors. *) structure S: sig datatype t = X end = struct type t = int end; polyml-5.7.1/Tests/Fail/Test002.ML0000644000175000017500000000026413204034553015351 0ustar daviddavid(* Test for mismatched infixed operators. 2 of 2. *) infix << ; infixr >> ; fun a << b = a ^ b and a >> b = a ^ b; (* These are illegal in ML97 but not ML90. *) "a" >> "b" << "c"; polyml-5.7.1/Tests/Fail/Test015.ML0000644000175000017500000000027613204034553015360 0ustar daviddavid(* This fails (correctly) because f must be applied to an equality type. *) local val f = valOf o #foo fun g x = (x=x; f x); val _ = f{foo=SOME 1, bar=2.0} in val g = g end; polyml-5.7.1/Tests/Fail/Test030.ML0000644000175000017500000000020413204034553015344 0ustar daviddavid(* These examples are invalid. *) structure B: sig val f: 'a->'a end = struct val f = (fn x => x) (fn x => x) end ; polyml-5.7.1/Tests/Fail/Test047.ML0000644000175000017500000000021413204034553015355 0ustar daviddavid (* This should fail. *) let val f = #a val g = #b val x = if true then f {a=1, b=2, c=3} else f {a=3,b=3, d= 4} in 1 end; polyml-5.7.1/Tests/Fail/Test051.ML0000644000175000017500000000015113204034553015350 0ustar daviddavid(* Structure/Signature match test. *) structure S: sig datatype t = X end = struct type t = int*int end; polyml-5.7.1/Tests/Fail/Test043.ML0000644000175000017500000000021313204034553015350 0ustar daviddavid signature S = sig type t type u structure S: sig type s end where type s = t->t sharing type S.s = u end; polyml-5.7.1/Tests/Fail/Test006.ML0000644000175000017500000000020213204034553015345 0ustar daviddavid(* This fails because z is polymorphic. *) structure S: sig val z: 'a -> 'a end = struct fun f i = i val z = f f end; polyml-5.7.1/Tests/Fail/Test010.ML0000644000175000017500000000023613204034553015347 0ustar daviddavid(* Tests for exporting local datatypes. All these examples are invalid in ML97. *) val rec f = fn x => let local datatype t = C in val z = f C end in 3 end; polyml-5.7.1/Tests/Fail/Test035.ML0000644000175000017500000000013713204034553015356 0ustar daviddavid(* Various tests. *) signature S = sig type s type t = s*s sharing type s = t end; polyml-5.7.1/Tests/Fail/Test070.ML0000644000175000017500000000054713204034553015362 0ustar daviddavid(* Bug with polymorphic variables. This is arguably a loop-hole in the Definition of Standard ML. This has been a long-standing bug but only showed up when it caused run-time errors in 5.4 SVN. *) structure S = struct datatype ref = datatype ref end; fun f () = let val a = S.ref [] val _ = a := [1] in !a end; f(): (int->int) list; polyml-5.7.1/Tests/Fail/Test040.ML0000644000175000017500000000050513204034553015351 0ustar daviddavid(* This fails in ML97 although it would work in ML90 because at the point where t is declared it is not an equality type. *) functor F(structure S: sig type s datatype t = C of s val x: s eqtype u sharing type s = u end) = struct val q = S.C S.x val r = q = q end; polyml-5.7.1/Tests/Fail/Test038.ML0000644000175000017500000000016713204034553015364 0ustar daviddavid(* This is illegal. *) signature S = sig type t type u type s = int -> int sharing type t = u = s end; polyml-5.7.1/Tests/Fail/Test064.ML0000644000175000017500000000013413204034553015355 0ustar daviddavid(* Check for escaping datatypes. Case 1. *) fun f x = let datatype s = S in S end; polyml-5.7.1/Tests/Fail/Test008.ML0000644000175000017500000000017513204034553015360 0ustar daviddavid(* Tests for exporting local datatypes. All these examples are invalid in ML97. *) fun f x = let datatype t = C in f C end; polyml-5.7.1/Tests/Fail/Test014.ML0000644000175000017500000000024513204034553015353 0ustar daviddavid(* Should fail - Checks that we get the updated generic information. *) let fun g (x as {b,...}) = {c=b, d=b} fun i (x as {a,b,...}) = g (g x) in 1 end; polyml-5.7.1/Tests/Fail/Test071.ML0000644000175000017500000000007713204034553015361 0ustar daviddavid(* Check that "it" is not in the initial basis. *) val s = it; polyml-5.7.1/Tests/Fail/Test011.ML0000644000175000017500000000016113204034553015345 0ustar daviddavid(* Tests for exporting local datatypes. All these examples are invalid in ML97. *) let datatype t = C in C end; polyml-5.7.1/Tests/Fail/Test021.ML0000644000175000017500000000062213204034553015350 0ustar daviddavid(* Check that successive right assocative operators work correctly. *) (* Include the default precedences just so we're clear. *) infix 7 * / div mod infix 6 + - ^ infixr 6 -- infixr 5 :: @ ++; val op ++ = op :: ; val op -- = op -; (* This is wrong but was not faulted in 5.2 and earlier. Must not mix left- and right-associative operators of the same precedence. *) val q = 1 -- 2 * 3 + 4; polyml-5.7.1/Tests/Fail/Test069.ML0000644000175000017500000000026613204034553015370 0ustar daviddavid(* Check for escaping datatypes. Another case. *) functor F() = struct datatype s = S end local val a = ref nil structure R = F() open R in val () = a := [S] end; polyml-5.7.1/Tests/Fail/Test039.ML0000644000175000017500000000055713204034553015370 0ustar daviddavid(* The following is legal in ML97 but not in ML90. *) functor F( structure S: sig eqtype s datatype t = C of int -> int sharing type s = t end) = struct val x:S.s = S.C(fn i => i+1) val y = x = x end; (* But of course this must fail. *) structure Z = F(structure S = struct datatype t = C of int -> int type s = t end); polyml-5.7.1/Tests/Fail/Test023.ML0000644000175000017500000000022113204034553015345 0ustar daviddavid(* This should fail but is not correctly checked in 5.2. *) let datatype t = A | B type s = t * int val q: s = (A, 1) in q end; polyml-5.7.1/Tests/Fail/Test003.ML0000644000175000017500000000026213204034553015350 0ustar daviddavid(* After I removed the restriction on free type variables in type constructors this compiled. Now fixed. *) fun 'a f x = let type t = 'a list in [x]:t end; f 3: bool list; polyml-5.7.1/Tests/Fail/Test046.ML0000644000175000017500000000024613204034553015361 0ustar daviddavid(* Should fail - requires equality type. *) let fun f (x as {a, ...}, y as {b, ...}) = x = y in f ({a=1, b=2, c = fn x => x}, {a=1, b=2, c = fn x => x}) end; polyml-5.7.1/Tests/Fail/Test036.ML0000644000175000017500000000012313204034553015352 0ustar daviddavid signature S = sig type s = int datatype t = C sharing type s = t end; polyml-5.7.1/Tests/Fail/Test005.ML0000644000175000017500000000023513204034553015352 0ustar daviddavid(* Checks on free type variables arising from expansive expressions. *) functor F() = struct fun f i = i val z = f f end; structure S = F(); S.z 1; polyml-5.7.1/Tests/Fail/Test034.ML0000644000175000017500000000066713204034553015365 0ustar daviddavid(* Frank Pfenning's example. This is almost certainly wrong but depends a bit on what structure sharing implies for the types. *) signature A = sig datatype t = C | D type s = t * t end; signature B = sig structure S : A end; functor F (structure S' : A structure T1 : B sharing T1.S = S' structure T2 : B sharing T1.S = S') = struct type r = int end; polyml-5.7.1/Tests/Fail/Test013.ML0000644000175000017500000000014313204034553015347 0ustar daviddavid(* This is invalid but previously worked. *) let fun f x y = x+y in f 1 2; f 2.0 3.0; "WRONG" end; polyml-5.7.1/Tests/Fail/Test024.ML0000644000175000017500000000117013204034553015352 0ustar daviddavid(* Tests for well-formedness i.e. that a type with value constructors does not share with a type function. *) signature S = sig datatype t = A end where type t = int * int; signature S = sig datatype t = A type s sharing type s = t end where type s = int * int; signature S = sig datatype t = A type s = int * int sharing type s = t end; signature S = sig datatype t = A end; signature R = sig include S end where type t = int * int; signature R = sig structure Q: S end where type Q.t = int * int; signature S = sig type t = int->int end where type t = int * int; signature S = sig eqtype t end where type t = int->int; polyml-5.7.1/Tests/Fail/Test001.ML0000644000175000017500000000026413204034553015350 0ustar daviddavid(* Test for mismatched infixed operators. 1 of 2. *) infix << ; infixr >> ; fun a << b = a ^ b and a >> b = a ^ b; (* These are illegal in ML97 but not ML90. *) "a" << "b" >> "c"; polyml-5.7.1/Tests/Fail/Test045.ML0000644000175000017500000000017313204034553015357 0ustar daviddavid (* This fails in ML97. *) structure A = struct end; signature SIG = sig structure B : sig end sharing A = B end; polyml-5.7.1/Tests/Succeed/0000755000175000017500000000000013204034553014454 5ustar daviddavidpolyml-5.7.1/Tests/Succeed/Test147.ML0000644000175000017500000000164013204034553016062 0ustar daviddavid(* Bug in optimiser transformation. A function argument that returns a tuple can be transformed to take a container but only if it is not curried. *) (* Cut down example from Isabelle that caused an internal error exception. *) fun one _ [] = raise Fail "bad" | one pred (x :: xs) = if pred x then (x, xs) else raise Fail "bad"; fun foo (scan, f) xs = let val (x, y) = scan xs in (f x, y) end; fun bar (scan1, scan2) xs = let val (x, ys) = scan1 xs; val (y, zs) = scan2 x ys; in ((x, y), zs) end; fun bub (scan1, scan2) = foo(bar(scan1, (fn _ => scan2)), op ^); val qqq: string list -> string * int = bub(one (fn _ => raise Match), (foo((fn _ => raise Match), String.concat))); (* Further example - This caused a segfault. *) PolyML.Compiler.maxInlineSize := 1; fun f g = let val (x,y) = g 1 2 in x+y end; fun r (x, y, z) = fn _ => (x, y+z); val h: int-> int*int = r (4,5,6); f (fn _ => h); polyml-5.7.1/Tests/Succeed/Test032.ML0000644000175000017500000000257413204034553016062 0ustar daviddavid(* Simon Finn pointed out that there might be a bug in this area and there was. We can't use the optimised representation for top-level datatypes because they may get incorporated into structures. This didn't apply in ML90 because there wasn't any way to get a top-level datatype into a structure. *) datatype t = X | Y of int * int; functor F(S: sig type s datatype t = X | Y of s val def: s end) = struct open S fun f (Y d) = d | f X = def end; structure S = F(struct type s = int * int datatype t = datatype t val def = (0,0) end); if S.f(Y(1,1)) = (1,1) then () else raise Fail "FAIL"; local datatype t = X | Y of int * int; in structure S1 = F(struct type s = int * int datatype t = datatype t val def = (0,0) end); val isOk = if S1.f(Y(1,1)) = (1,1) then "OK" else "FAIL"; end; structure Q = let datatype t = X | Y of int * int; structure S1 = F(struct type s = int * int datatype t = datatype t val def = (0,0) end); in struct val isOk = S1.f(Y(1,1)) = (1,1); end end; if Q.isOk then () else raise Fail "wrong"; structure Q = struct structure T = let datatype t = X | Y of int * int; structure S1 = F(struct type s = int * int datatype t = datatype t val def = (0,0) end); in struct val isOk = S1.f(Y(1,1)) = (1,1) end end end; if Q.T.isOk then () else raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test117.ML0000644000175000017500000000120213204034553016051 0ustar daviddavid(* Bug in installing a pretty printer for datatypes with more than one type argument. Reported by Makarius in SVN 1193. *) datatype ('a, 'b) foo = Foo of 'a * 'b; PolyML.addPrettyPrinter (fn depth => fn (pretty1, pretty2) => fn Foo (x, y) => PolyML.PrettyBlock (2, false, [], [PolyML.PrettyString "FOO", PolyML.PrettyBreak (1, 0), PolyML.PrettyString "(", pretty1 (x, depth - 1), PolyML.PrettyString ",", PolyML.PrettyBreak (1, 0), pretty2 (y, depth - 1), PolyML.PrettyString ")"])); if PolyML.makestring(Foo(100, "abc")) = "FOO (100, \"abc\")" then () else raise Fail "pretty printing"; polyml-5.7.1/Tests/Succeed/Test145.ML0000644000175000017500000000672413204034553016070 0ustar daviddavid(* Cut-down example from Isabelle code-generator. During testing this showed up a bug in the X86 code-generator. *) structure Generated_Code = struct datatype num = One | Bit0 of num | Bit1 of num; datatype int = Zero_int | Pos of num | Neg of num; type 'a one = {one : 'a}; type 'a times = {times : 'a -> 'a -> 'a}; fun nat _ = raise Fail "bad" fun uminus_int (Neg m) = Pos m | uminus_int (Pos m) = Neg m | uminus_int Zero_int = Zero_int; fun plus_num _ = raise Fail "bad" fun sub _ _ = raise Fail "bad" and plus_inta (Neg m) (Neg n) = Neg (plus_num m n) | plus_inta (Neg m) (Pos n) = sub n m | plus_inta (Pos m) (Neg n) = sub m n | plus_inta (Pos m) (Pos n) = Pos (plus_num m n) | plus_inta Zero_int l = l | plus_inta k Zero_int = k; fun minus_int _ _ = raise Fail "bad"; type 'a power = {one_power : 'a one, times_power : 'a times}; fun times_inta _ = raise Fail "bad" val times_int = {times = times_inta} : int times; val one_inta : int = Pos One; val one_int = {one = one_inta} : int one; val power_int = {one_power = one_int, times_power = times_int} : int power; fun less_num (Bit1 m) (Bit0 n) = less_num m n | less_num (Bit1 m) (Bit1 n) = less_num m n | less_num (Bit0 m) (Bit1 n) = less_eq_num m n | less_num (Bit0 m) (Bit0 n) = less_num m n | less_num One (Bit1 n) = true | less_num One (Bit0 n) = true | less_num m One = false and less_eq_num (Bit1 m) (Bit0 n) = less_num m n | less_eq_num (Bit1 m) (Bit1 n) = less_eq_num m n | less_eq_num (Bit0 m) (Bit1 n) = less_eq_num m n | less_eq_num (Bit0 m) (Bit0 n) = less_eq_num m n | less_eq_num (Bit1 m) One = false | less_eq_num (Bit0 m) One = false | less_eq_num One n = true; type 'a ord = {less_eq : 'a -> 'a -> bool, less : 'a -> 'a -> bool}; val less_eq = #less_eq : 'a ord -> 'a -> 'a -> bool; fun less_int (Neg k) (Neg l) = less_num l k | less_int (Neg k) (Pos l) = true | less_int (Neg k) Zero_int = true | less_int (Pos k) (Neg l) = false | less_int (Pos k) (Pos l) = less_num k l | less_int (Pos k) Zero_int = false | less_int Zero_int (Neg l) = false | less_int Zero_int (Pos l) = true | less_int Zero_int Zero_int = false; fun less_eq_int (Neg k) (Neg l) = less_eq_num l k | less_eq_int (Neg k) (Pos l) = true | less_eq_int (Neg k) Zero_int = true | less_eq_int (Pos k) (Neg l) = false | less_eq_int (Pos k) (Pos l) = less_eq_num k l | less_eq_int (Pos k) Zero_int = false | less_eq_int Zero_int (Neg l) = false | less_eq_int Zero_int (Pos l) = true | less_eq_int Zero_int Zero_int = true; datatype float = Float of int * int; fun min A_ a b = (if less_eq A_ a b then a else b); fun power s = raise Fail "bad" fun is_float_nonneg _ = raise Fail "ab" fun uminus_float (Float (m1, e1)) = Float (uminus_int m1, e1); fun plus_float (Float (m1, e1)) (Float (m2, e2)) = (if less_eq_int e1 e2 then Float (plus_inta m1 (times_inta m2 (power power_int (Pos (Bit0 One)) (nat (minus_int e2 e1)))), e1) else Float (plus_inta m2 (times_inta m1 (power power_int (Pos (Bit0 One)) (nat (minus_int e1 e2)))), e2)); fun minus_float f g = plus_float f (uminus_float g); fun less_eq_float a b = is_float_nonneg (minus_float b a); fun is_float_pos (Float (m, e)) = less_int Zero_int m; fun less_float a b = is_float_pos (minus_float b a); val ord_float = {less_eq = less_eq_float, less = less_float} : float ord; fun inf_float a b = min ord_float a b; end; polyml-5.7.1/Tests/Succeed/Test163.ML0000644000175000017500000000264113204034553016062 0ustar daviddavid(* Some tests on C memory operations. *) fun check f a b = if f a = b then () else raise Fail "Mismatch"; (* 64-bit operations are not implemented in 32-bit mode. *) fun checkEx f a b = (if f a = b then () else raise Fail "Mismatch") handle Foreign.Foreign _ => (); open Foreign.Memory; val m = malloc 0w32; val r = ref 0w0; set32(m, 0w0, 0wx12343421); set32(m, 0w1, 0w0); set32(m, 0w2, 0w0); set32(m, 0w3, 0w0); set32(m, 0w4, 0w0); set32(m, 0w5, 0w0); set32(m, 0w6, 0wxabccccab); set32(m, 0w7, 0wx12211221); (* These are often handled differently depending on whether the offset is a compile-time constant. *) check get32 (m, 0w0) 0wx12343421; check get32 (m, !r) 0wx12343421; check get16 (m, 0w14) 0wx1221; r := 0w14; check get16 (m, !r) 0wx1221; checkEx get64 (m, 0w1) 0w0; r := 0w1; checkEx get64 (m, !r) 0w0; check get8 (m, 0w24) 0wxab; r := 0w24; check get8 (m, !r) 0wxab; set8(m, !r, 0wx88); check get8 (m, 0w24) 0wx88; set64(m, 0w1, 0wx123456) handle Foreign.Foreign _ => (); checkEx get64 (m, 0w1) 0wx123456; set16(m, 0w4, 0wxffee); check get16 (m, 0w4) 0wxffee; setFloat(m, 0w2, 1.0); if Real.==(getFloat(m, 0w2), 1.0) then () else raise Fail "Mismatch"; r := 0w2; if Real.==(getFloat(m, !r), 1.0) then () else raise Fail "Mismatch"; setDouble(m, 0w2, 2.0); if Real.==(getDouble(m, 0w2), 2.0) then () else raise Fail "Mismatch"; if Real.==(getDouble(m, !r), 2.0) then () else raise Fail "Mismatch"; free m; polyml-5.7.1/Tests/Succeed/Test138.ML0000644000175000017500000000035013204034553016057 0ustar daviddavid(* Bug related to detecting usage patterns for recursion. *) fun foldr f n [] = n | foldr f n (hd :: tl) = f (hd, foldr f n tl); fun g z = let val (x, _) = foldr (fn (h, t) => (ref(#2 t); t)) (0, 0) z in x end; g[1]; polyml-5.7.1/Tests/Succeed/Test095.ML0000644000175000017500000000070513204034553016065 0ustar daviddavid(* This caused a problem at one stage. When constructing the optimised code for pattern matching we have to merge multiple occurrences of the same special constant and that requires the equality function to be evaluated at compile-time. This was picking up the wrong equality function. *) structure S = struct type addrs = word fun f (n: word, ic: addrs list) = case (n + hd ic) of 0w1 => 1 | _ => 2 end; polyml-5.7.1/Tests/Succeed/Test128.ML0000644000175000017500000000231213204034553016056 0ustar daviddavid(* If type abbreviations contain type variables that are not present on the right-hand side we have to reduce the abbreviation before unification and applying the value restriction. The first part of the example was provided by Phil Clayton. *) signature A = sig type ('a, 'b) t val mkT : int -> ('a, int) t end structure A :> A = struct type ('a, 'b) t = 'b fun mkT n = n end signature B = sig type 'a t val x : ('a t, int) A.t end structure B :> B = struct type 'a t = unit val x = A.mkT 2 end; type 'a t = int; val x: 'a t = 1 +1; (* A further example from Phil. *) signature A = sig type ('a, 'b) t val mkT : int -> ('a, int) t end structure A :> A = struct type ('a, 'b) t = 'b fun mkT n = n end signature B = sig type 'a t val x : ('a t, int) A.t end structure B :> B = struct type 'a t1 = unit type 'a t = 'a t1 * 'a t1 (* two levels of phantom types *) val x = A.mkT 2 end; (* A further check. This has worked correctly for a long time because of the way equality is handled. Include it here just in case it gets broken by a change in the future. *) fun f (x: real t) y = x = y; polyml-5.7.1/Tests/Succeed/Test132.ML0000644000175000017500000000127113204034553016054 0ustar daviddavid(* This caused a segfault in 5.5 and earlier due to an error in the optimiser. These examples are a special case because they could result in infinite inline expansion. *) datatype 'a ft = FT of 'a ft -> 'a; fun Y f = ( fn (FT x) => (f (fn a => x (FT x) a) ) ) (FT ( fn (FT x) => (f (fn a => x (FT x) a) ) ) ); fun Fact f n = if n = 0 then 1 else n * f(n-1); val fact = Y Fact; fact 4; (* This crashed. *) (* A slightly different example. This is infinitely recursive. *) fun Z() = let val f = fn(FT g) => g (FT g) in f (FT f) end; polyml-5.7.1/Tests/Succeed/Test090.ML0000644000175000017500000000113513204034553016056 0ustar daviddavid(* Exporting datatype constructors from structures. *) structure T1 = struct datatype f = A | B end; open T1; structure T2: sig datatype f = A | B end = struct datatype f = A | B end; open T2; (* Explicit signatures cannot rebind constructors but that doesn't apply to the result if there's no signature. *) structure T3 = struct datatype f = A of bool | B datatype g = A of int end; open T3; A 1; datatype t = datatype f; A true; functor F1() = struct datatype f = A of bool | B datatype g = A of int end; structure T4 = F1(); open T4; A 1; datatype t = datatype f; A true; polyml-5.7.1/Tests/Succeed/Test114.ML0000644000175000017500000000110513204034553016050 0ustar daviddavid(* Cut down version of bug reported by Phil Clayton in SVN 1180. *) structure RedBlackDict = struct type 'a maplet = string * 'a datatype colour = Red | Black datatype 'a tree = Node of 'a node | Tip withtype 'a node = 'a tree * colour * 'a maplet * 'a tree; datatype 'a map = Map of {t : 'a tree, bh : int}; fun min (Map {t, ...} : 'a map) : 'a maplet = ( let fun leftmost (l, _, A, _) = case l of Node n => leftmost n | Tip => A in case t of Node n => leftmost n | Tip => raise Empty end ) end; polyml-5.7.1/Tests/Succeed/Test158.ML0000644000175000017500000002042313204034553016064 0ustar daviddavid(* Various tests for the OS.Path structure. The Unix tests are taken largely from the documentation. The Windows tests are inferred from the documentation which isn't always clear. *) datatype sys = Windows | Posix; open OS.Path; fun check s true = () | check s false = raise Fail ("check " ^ s); val check' = check ""; val sys = if isRoot "/" then Posix else Windows; (* Windows uses either / or \ as a separator but the output routines generally produce \. To simplify the checks map backslashes into forward slashes in some cases. *) val mapSep = case sys of Posix => (fn c => c) | Windows => String.map (fn #"\\" => #"/" | c => c); (* fromString *) val testFromTo = [ { s = "", p = {isAbs=false, vol="", arcs=[]}, w = {isAbs=false, vol="", arcs=[]} }, { s = "/", p = {isAbs=true, vol="", arcs=[""]}, (* In Windows this means the "root" directory on the current drive. *) w = {isAbs = false, vol = "", arcs = ["", ""]} }, { s = "//", p = {isAbs=true, vol="", arcs=["", ""]}, w = {isAbs = false, vol = "", arcs = ["", "", ""]} }, { s = "a", p = {isAbs=false, vol="", arcs=["a"]}, w = {isAbs=false, vol="", arcs=["a"]} }, { s = "/a", p = {isAbs=true, vol="", arcs=["a"]}, w = {isAbs=false, vol="", arcs=["", "a"]} }, { s = "//a", p = {isAbs=true, vol="", arcs=["","a"]}, w = {isAbs=false, vol="", arcs=["","", "a"]} }, { s = "a/", p = {isAbs=false, vol="", arcs=["a", ""]}, w = {isAbs=false, vol="", arcs=["a", ""]} }, { s = "a//", p = {isAbs=false, vol="", arcs=["a", "", ""]}, w = {isAbs=false, vol="", arcs=["a", "", ""]} }, { s = "a/b", p = {isAbs=false, vol="", arcs=["a", "b"]}, w = {isAbs=false, vol="", arcs=["a", "b"]} }, { s = "c:\\", p = {isAbs=false, vol="", arcs=["c:\\"]}, w = {isAbs = true, vol = "c:", arcs = [""]} }, { s = "c:", p = {isAbs=false, vol="", arcs=["c:"]}, w = {isAbs=false, vol = "c:", arcs = [""]} }, { s = "c:\\abc", p = {isAbs=false, vol="", arcs=["c:\\abc"]}, w = {isAbs=true, vol = "c:", arcs = ["abc"]} } ]; fun test { s, p, w } = let val res = fromString s val ts = toString res in case sys of Posix => check s (res = p) | Windows => check s (res = w); check s (ts = s orelse mapSep ts = s) end; val () = List.app test testFromTo; (* validVolume *) val v1 = validVolume{isAbs = true, vol = ""}; case sys of Posix => check' v1 | Windows => check' (not v1); val v2 = validVolume{isAbs = false, vol = ""}; check' v2; val v3 = validVolume{isAbs = true, vol = "C:"}; case sys of Posix => check'(not v3) | Windows => check' v3; val v4 = validVolume{isAbs = false, vol = "C:"}; case sys of Posix => check'(not v4) | Windows => check' v4; val v5 = validVolume{isAbs = false, vol = "\\\\server\\share" }; case sys of Posix => check'(not v5) | Windows => check' v5; (* getParent *) val testGetParent = [ { s = "/", p = "/", w = "/" }, { s = "a", p = ".", w = "." }, { s = "a/", p = "a/..", w = "a/.." }, { s = "a///", p = "a///..", w = "a///.." }, { s = "a/b", p = "a", w = "a" }, { s = "a/b/", p = "a/b/..", w = "a/b/.." }, { s = "..", p = "../..", w = "../.." }, { s = ".", p = "..", w = ".." }, { s = "C:\\", p = ".", w = "C:\\" }, { s = "\\\\server\\share\\", p = ".", w = "\\\\server\\share\\" } ]; fun test { s, p, w } = let val res = getParent s in case sys of Posix => check s (res = p) | Windows => check s (res = w orelse mapSep res = mapSep w) end; val () = List.app test testGetParent; (* splitDirFile *) val testSplitFile = [ { s = "", p = {dir = "", file = ""}, w = {dir = "", file = ""} }, { s = ".", p = {dir = "", file = "."}, w = {dir = "", file = "."} }, { s = "b", p = {dir = "", file = "b"}, w = {dir = "", file = "b"} }, { s = "b/", p = {dir = "b", file = ""}, w = {dir = "b", file = ""} }, { s = "a/b", p = {dir = "a", file = "b"}, w = {dir = "a", file = "b"} }, { s = "/a", p = {dir = "/", file = "a"}, w = {dir = "/", file = "a"} }, { s = "c:\\a", p = {dir = "", file = "c:\\a"}, w = {dir = "c:\\", file = "a"} } ]; fun test { s, p, w } = let val res as { dir, file } = splitDirFile s in case sys of Posix => check s (res = p) | Windows => check s (res = w orelse mapSep dir = #dir w andalso mapSep file = #file w) end; val () = List.app test testSplitFile; val testAbsolute = [ { s = "/a", p = true, w = false }, { s = "c:/a", p = false, w = true } ]; fun test { s, p, w } = let val res = isAbsolute s in case sys of Posix => check s (res = p) | Windows => check s (res = w) end; val () = List.app test testAbsolute; case sys of Posix => let val testMkRelative = [ (* These are all relative paths in Windows. *) { s = { path = "a/b", relativeTo = "/c/d" }, p = "a/b"}, { s = { path = "/", relativeTo = "/a/b/c" }, p = "../../.." }, { s = { path = "/a/b/", relativeTo = "/a/c" }, p = "../b/" }, { s = { path = "/a/b", relativeTo = "/a/c" }, p = "../b" }, { s = { path = "/a/b/", relativeTo = "/a/c/"}, p = "../b/" }, { s = { path = "/a/b", relativeTo = "/a/c/"}, p = "../b" }, { s = { path = "/", relativeTo = "/"}, p = "." }, { s = { path = "/", relativeTo = "/."}, p = "." }, { s = { path = "/", relativeTo = "/.."}, p = "." }, { s = { path = "/a/b/../c", relativeTo = "/a/d"}, p = "../b/../c" }, { s = { path = "/a/b", relativeTo = "/c/d"}, p = "../../a/b" }, { s = { path = "/c/a/b", relativeTo = "/c/d"}, p = "../a/b" }, { s = { path = "/c/d/a/b", relativeTo = "/c/d"}, p = "a/b" } ]; fun test { s, p } = let val res = mkRelative s in check (#path s ^ " " ^ #relativeTo s) (res = p) end; in List.app test testMkRelative end | Windows => let val testMkRelative = [ { s = { path = "a/b", relativeTo = "c:/c/d" }, w = "a/b" }, { s = { path = "c:/", relativeTo = "c:/a/b/c" }, w = "../../.." }, { s = { path = "c:/a/b/", relativeTo = "c:/a/c" }, w = "../b/" }, { s = { path = "c:/a/b", relativeTo = "c:/a/c" }, w = "../b" }, { s = { path = "c:/a/b/", relativeTo = "c:/a/c/"}, w = "../b/" }, { s = { path = "c:/a/b", relativeTo = "c:/a/c/"}, w = "../b" }, { s = { path = "c:/", relativeTo = "c:/"}, w = "." }, { s = { path = "c:/", relativeTo = "c:/."}, w = "." }, { s = { path = "c:/", relativeTo = "c:/.."}, w = "." }, { s = { path = "c:/a/b/../c", relativeTo = "c:/a/d"}, w = "../b/../c" }, { s = { path = "c:/a/b", relativeTo = "c:/c/d"}, w = "../../a/b" }, { s = { path = "c:/c/a/b", relativeTo = "c:/c/d"}, w = "../a/b" }, { s = { path = "c:/c/d/a/b", relativeTo = "c:/c/d"}, w = "a/b" } ]; fun test { s, w } = let val res = mkRelative s in check (#path s ^ " " ^ #relativeTo s) (res = w orelse mapSep res = mapSep w) end; in List.app test testMkRelative end; case sys of Windows => ( (* Special cases for the relative path \\abc. This is relative to the current volume. *) check "" (mkAbsolute{path="\\abc", relativeTo="c:\\def\\xyz"} = "c:\\abc"); check "" (concat("c:\\abc\\def", "\\ghi") = "c:\\ghi") ) | Posix => (); (* OS.Path.joinDirFile should raise InvalidArc if the file name does not correspond to an arc *) (OS.Path.joinDirFile {dir="abc/def", file="ghi/jkl"}; raise Fail "incorrect") handle OS.Path.InvalidArc => (); polyml-5.7.1/Tests/Succeed/Test049.ML0000644000175000017500000000044013204034553016060 0ustar daviddavid(* This broke in 5.3 RC1 *) signature A = sig datatype t = A | B end; structure A: A = struct datatype t = A | B end; structure B = struct open A datatype s = datatype t end; (* This wasn't a problem, but include it anyway. *) structure B = struct open A datatype s = datatype A.t end; polyml-5.7.1/Tests/Succeed/Test042.ML0000644000175000017500000000035413204034553016055 0ustar daviddavidfunctor BasicNameSetFun(N : sig type name end) = struct structure N = N datatype T = Empty end; datatype name = A (* N.B. No semicolon. *) structure R = struct type name = name list end structure Names = BasicNameSetFun(R); polyml-5.7.1/Tests/Succeed/Test167.ML0000644000175000017500000000041213204034553016060 0ustar daviddavid(* This gave a Subscript exception in the simplifier. *) datatype t = A of int * string | B of int * int * int; fun g s = let val q = [A (1, s)] in case q of B(i, j, k) :: _ => k (* This wants a missing field. *) | _ => raise Fail "bad" end; polyml-5.7.1/Tests/Succeed/Test073.ML0000644000175000017500000000032413204034553016056 0ustar daviddavid(* Side-effects should still be performed even if the result is known. *) val r = ref false; fun g b = r := b; fun f s = (g s; true); fun p s = not (f s); val _ = p true; if ! r then () else raise Fail "Wrong"; polyml-5.7.1/Tests/Succeed/Test123.ML0000644000175000017500000000407213204034553016056 0ustar daviddavid(* The first part gives an internal error. *) local fun f {data, ...} = () fun g {base = {rows, cols, ...}, row:'a} = () fun h (reg as {base, row:int, ...}) = let val _ = f base (* Eventually, fixes base as {rows, cols, data} *) val _ = g reg (* Fixes reg as {base, row} *) in () end val tt : { rows: int, cols: int, data: string } -> unit = f in end; (* This part reports an Empty exception. *) structure Vector2 :> sig type 'a vector val sub: 'a vector * int * int -> 'a end = struct (* open IterateX*) fun badArg _ = raise Fail "bad" fun repeat f cnt init = let fun iter (n,v) = if n = cnt then v else iter(n+1,f(n,v)) in if cnt < 0 then badArg ("repeat","count < 0") else iter (0,init) end type 'a vector = { rows: int , cols: int , data: 'a Vector.vector } datatype traversal = RowMajor | ColMajor fun tabulate tr (r, c, f) = raise Size fun sub (v as {cols=c, data=d,...}, i, j) = raise Size (*d // (i * c + j)*) fun dimensions ({rows=r, cols=c,...}) = (r, c) fun getRegion {base, row, col, nrows, ncols} = let val (lRows, lCols) = dimensions base in raise Subscript end fun mapi tr f (reg as {base, row, col, ...}) = let val (nrows, ncols) = getRegion reg fun select (i, j) = let val (i', j') = (i + row, j + col) in (i', j', sub (base, i', j')) end in tabulate tr (nrows, ncols, f o select) end fun foldi tr f x (reg as {base, row, col, ...}) = let val (nrows, ncols) = getRegion reg fun foldval (i, z) = let val (j, k) = case tr of RowMajor => (row + i div ncols, col + i mod ncols) | ColMajor => (row + i mod nrows, col + i div nrows) in f (j, k, sub (base, j, k), z) end in repeat foldval (nrows * ncols) x end end; polyml-5.7.1/Tests/Succeed/Test018.ML0000644000175000017500000000051413204034553016056 0ustar daviddavid(* Bugs in handling of single-character strings. *) fun verify true = () | verify false = raise Fail "error"; verify(String.isPrefix "a" "a"); verify(String.isPrefix "a" "abcd"); verify(String.isSuffix "a" "a"); verify(not(String.isSuffix "a" "abcd")); verify(String.isSubstring "a" "a"); verify(String.isSubstring "a" "abcd"); polyml-5.7.1/Tests/Succeed/Test157.ML0000644000175000017500000000111213204034553016055 0ustar daviddavid(* Something that looks like it should be an integer or word constant but isn't should be lexically analysed as an integer constant followed by an identifier. This is similar to the problem with real constants identified in Test026. *) fun test 0 _ = () | test _ _ = raise Fail "wrong"; val () = let val xz = 1 in test 0xz end; val () = let val wxz = 1 in test 0wxz end; val () = let val xw9 = 1 in test 0xw9 end; val () = let val x = 1 in test 0x; () end; (* Another one identified. *) val () = let val w1 = 1 in test ~0w1 end; val () = let val xw1 = 1 in test ~0xw1 end; polyml-5.7.1/Tests/Succeed/Test100.ML0000644000175000017500000000045013204034553016045 0ustar daviddavid(* Bug in handling of polymorphic values. This produced an internal exception. *) local val q = op :: datatype s = S in fun p s = q (S, s) end; functor F() = struct datatype s = S end; local val q = op :: structure R = F() open R in fun p s = q (S, s) end; polyml-5.7.1/Tests/Succeed/Test050.ML0000644000175000017500000000034613204034553016055 0ustar daviddavid(* This produced a Subscript error in the printing code. *) functor F(S:sig type T end) = struct type T = S.T end; structure S = struct datatype a = B datatype t = A structure R = F(type T = (int * t) list); type T = R.T end; polyml-5.7.1/Tests/Succeed/Test025.ML0000644000175000017500000000141213204034553016052 0ustar daviddavid(* Check that locks work correctly. *) open Thread.Thread Thread.Mutex val a = ref 0 and b = ref 0 and c = ref 0 val mut = mutex() fun f s n () = let val () = lock mut val aa = (a := !a+1; !a) and bb = (b := !b+1; !b) and cc = (c := !c+1; !c) val () = unlock mut in if aa <> bb orelse aa <> cc orelse bb <> cc then print(concat[s, "-> a = ", Int.toString aa, " b = ", Int.toString bb, " c = ", Int.toString cc, "\n"]) else if aa < 10000 then f s (n+1) () else () end; fork(f "A" 0, [InterruptState InterruptAsynch, EnableBroadcastInterrupt true]); fork(f "B" 0, [InterruptState InterruptAsynch, EnableBroadcastInterrupt true]); fork(f "C" 0, [InterruptState InterruptAsynch, EnableBroadcastInterrupt true]); f "D" 0 (); polyml-5.7.1/Tests/Succeed/Test028.ML0000644000175000017500000000160313204034553016057 0ustar daviddavid(* Check the real number comparison operations. All operations return false on Nans except for != *) fun verify s = if s then () else raise Fail "FAIL!!"; val Nan = 0.0/0.0; verify(Real.==(1.0, 1.0)); verify(not (Real.==(1.0, 1.1))); verify(not (Real.==(1.1, 1.0))); verify(not (Real.==(Nan, Nan))); verify(not (Real.!=(1.0, 1.0))); verify(Real.!=(1.0, 1.1)); verify(Real.!=(1.1, 1.0)); verify(Real.!=(Nan, Nan)); verify(1.0 < 1.1); verify(not (1.1 < 1.0)); verify(not (1.0 < Nan)); verify(not (Nan < 1.0)); verify(not (1.0 < 1.0)); verify(not (1.0 > 1.1)); verify(1.1 > 1.0); verify(not (1.0 > Nan)); verify(not (Nan > 1.0)); verify(not (1.0 > 1.0)); verify(1.0 <= 1.1); verify(not (1.1 <= 1.0)); verify(not (1.0 <= Nan)); verify(not (Nan <= 1.0)); verify(1.0 <= 1.0); verify(not (1.0 >= 1.1)); verify(1.1 >= 1.0); verify(not (1.0 >= Nan)); verify(not (Nan >= 1.0)); verify(1.0 >= 1.0); polyml-5.7.1/Tests/Succeed/Test121.ML0000644000175000017500000000274413204034553016060 0ustar daviddavid(* The rounding settings were not being carried over correctly between the RTS and compiled code. *) fun check x = if x then () else raise Fail "Wrong"; open IEEEReal; exception NotImplemented; (* setRoundingMode may raise an exception if it isn't implemented or only permits certain rounding modes. *) let val () = setRoundingMode(TO_POSINF) handle Fail _ => raise NotImplemented val () = check(getRoundingMode() = TO_POSINF); val pos = 1.0/3.0; val () = check(pos * 3.0 > 1.0); val neg = ~1.0/3.0; val () = check(neg * 3.0 > ~1.0) in () end handle NotImplemented => (); let val () = setRoundingMode(TO_NEGINF) handle Fail _ => raise NotImplemented val () = check(getRoundingMode() = TO_NEGINF); val pos = 1.0/3.0; val () = check(pos * 3.0 < 1.0); val neg = ~1.0/3.0; val () = check(neg * 3.0 < ~1.0); in () end handle NotImplemented => (); let val () = setRoundingMode(TO_ZERO) handle Fail _ => raise NotImplemented val () = check(getRoundingMode() = TO_ZERO); val pos = 1.0/3.0; val () = check(pos * 3.0 < 1.0); val neg = ~1.0/3.0; val () = check(neg * 3.0 > ~1.0); val () = check(Real.==(~neg, pos)); in () end handle NotImplemented => (); let val () = setRoundingMode(TO_NEAREST) handle Fail _ => raise NotImplemented val () = check(getRoundingMode() = TO_NEAREST); val pos = 1.0/3.0; val neg = ~1.0/3.0; val () = check(Real.==(~neg, pos)); in () end handle NotImplemented => (); polyml-5.7.1/Tests/Succeed/Test029.ML0000644000175000017500000000021113204034553016052 0ustar daviddavid(* A type constraint was missing in the REAL signature. *) functor F (R: REAL) = struct fun f(x: R.real) = R.+(x, R.Math.tan x) end; polyml-5.7.1/Tests/Succeed/Test004.ML0000644000175000017500000000100513204034553016045 0ustar daviddavid(* Check some word operations. These probably won't be checked elsewhere because we're converting from arbitrary precision. *) fun verify true = () | verify false = raise Fail "wrong"; (* These assume 31 bit arithmetic. TODO: Add tests for 63-bits. *) verify(Word.wordSize <> 31 orelse Word.fromLargeInt 10000000000 = 0wx540BE400); verify(Word.wordSize <> 31 orelse Word.fromLargeInt ~10000000000 = 0wx2BF41C00); verify(Word.fromInt 1 = 0w1); verify(Word.wordSize <> 31 orelse Word.fromInt ~1 = 0wx7FFFFFFF); polyml-5.7.1/Tests/Succeed/Test026.ML0000644000175000017500000000064313204034553016060 0ustar daviddavid(* Previously the lexical analyser assumed that a number followed by E or e was always a real number and if there was no valid number after it this was an error. *) val e = ("a", "b") ; (* Vesa Karvonen's original example. *) #1e ; (* Other test cases. *) val e = 3; fun f a b c = c(a+b); f 1e~; val example = 1 and Example = 2; f 1example~; f 1Example~; val e = 1.1; fun f (a: real) b c = c(a+b); f 1.2e~; polyml-5.7.1/Tests/Succeed/Test152.ML0000644000175000017500000000070613204034553016060 0ustar daviddavid(* Creating a negative sized array should raise Size. *) (let val v = Array.array(~12, 4) in raise Fail "failed" end) handle Size => (); (let val v = Array.array(Array.maxLen+1, 4) in raise Fail "failed" end) handle Size => (); (let val v = Array.tabulate(~12, fn i => i) in raise Fail "failed" end) handle Size => (); (let val v = Array.tabulate(Array.maxLen+1, fn i => i) in raise Fail "failed" end) handle Size => (); polyml-5.7.1/Tests/Succeed/Test067.ML0000644000175000017500000000025313204034553016062 0ustar daviddavid(* Example of datatype replication from the Definition of Standard ML. *) datatype t0 = C; structure A: sig type t val C: t end = struct datatype t = datatype t0 end; polyml-5.7.1/Tests/Succeed/Test096.ML0000644000175000017500000000115413204034553016065 0ustar daviddavid(* Inlined loops with more loop variables than registers to hold all of them, at least on X86/32. This was originally just a coverage test but it turned out to be broken in 5.3 and earlier. Since this will go into an infinite loop there's an explicit check here. *) if PolyML.Compiler.compilerVersionNumber <= 530 then raise Fail "Will loop" else (); PolyML.Compiler.maxInlineSize := 100; fun f x = let fun f (i, j, k, l, m, n, p, q) = if i = 10 then q else f(i+1, j+1, k+1, l+1, m+1, n+1, p+1, q+1) in f(x, x+1, x+2, x+3, x+4, x+5, x+6, x+7) end; if f 1 = 17 then () else raise Fail "failed"; polyml-5.7.1/Tests/Succeed/Test124.ML0000644000175000017500000000053513204034553016057 0ustar daviddavid(* This builds a large list but with the tail in the first word of the pair. That causes a segfault in older versions of the garbage collector because it overflows the stack during the mark phase. *) datatype 'a liszt = Nill | Conns of 'a liszt * 'a; fun mk 0 = Nill | mk n = Conns(mk (n-1), (n,n)); val a = mk 100000; PolyML.fullGC(); polyml-5.7.1/Tests/Succeed/Test056.ML0000644000175000017500000000051713204034553016063 0ustar daviddavid(* Checks on free type variables arising from expansive expressions. *) functor F() = struct fun f i = i fun z x = (f f) x end; structure Q = F(); Q.z 1; (* This is acceptable because the signature coerces the type to a monotype. *) structure S: sig val z: int -> int end = struct fun f i = i val z = f f end; polyml-5.7.1/Tests/Succeed/Test027.ML0000644000175000017500000000113313204034553016054 0ustar daviddavid(* The identity type constructor complicates the matching since it is the only case where an explicit type variable can match a type construction. *) functor F (RNGY : sig type t end) : sig type 'a tt (*type 'a c*) val ir : ('a -> 'a tt) -> ('a->'a) -> 'a -> 'a tt structure RNGX : sig type t end end = struct structure RNGX = struct type t = RNGY.t end type 'a c = 'a type 'a tt = RNGY.t -> 'a c fun ir bir b2a xy nr = b2a( (bir xy) nr) end; type 'a Id = 'a; fun f (x: 'a Id -> 'a) = (); val g = f : ('a Id -> 'a) -> unit; val h : ('a Id -> 'a) -> unit = f; polyml-5.7.1/Tests/Succeed/Test086.ML0000644000175000017500000000145313204034553016066 0ustar daviddavid(* Tests on coercions that apply between structures and signatures. *) functor F(): sig val a: exn and b: string->exn val checkA: (unit -> unit) -> unit val checkB: (unit -> unit) -> string type t val c: t and d: int->t val checkC: t -> unit and checkD: t -> unit end = struct exception a and b of string datatype t = c | d of int fun checkA f = f() handle a => () fun checkB f = (f(); "bad") handle b s => s fun checkC c = () | checkC _ = raise Fail "bad" fun checkD (d 1) = () | checkD _ = raise Fail "bad" end; structure S = F(); S.checkA(fn () => raise S.a); if S.checkB(fn () => raise S.b "test") = "test" then () else raise Fail "failed"; S.checkC S.c; S.checkD (S.d 1); polyml-5.7.1/Tests/Succeed/Test080.ML0000644000175000017500000000102413204034553016052 0ustar daviddavidPolyML.Compiler.printInAlphabeticalOrder := false; val (c, a, b) = (3,1,2); local structure s = struct val r = true val ww = false end in val w = 3 val aaa = 4 type t = int infix foo exception e structure f = s open f datatype s = x | y end; val a = 2 functor f () = struct end signature s = sig end type t = int functor q(): s = struct end; signature s = sig end and p = sig end; functor g () = struct end and f () = struct end and h () = struct end; fun f a b = 1 infix a fun f a b = 2 val z = f 0 0 and z' = 1 a 1; nonfix a; polyml-5.7.1/Tests/Succeed/Test009.ML0000644000175000017500000000037713204034553016065 0ustar daviddavid(* Bug in combination of exception pattern matching with val bindings. *) exception E of string list; fun f x = let val E [y] = x in y end; fun g x = let val y = ref x in f(!y) end; if g(E["OK"]) = "OK" then () else raise Fail "Wrong"; polyml-5.7.1/Tests/Succeed/Test068.ML0000644000175000017500000000031413204034553016061 0ustar daviddavid(* Check for special cases of single character strings. *) if StringCvt.padLeft #"O" 2 "K" = "OK" then () else raise Fail "wrong"; if StringCvt.padRight #"K" 2 "O" = "OK" then () else raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test058.ML0000644000175000017500000000215213204034553016062 0ustar daviddavid(* include must copy values, exceptions and, with the latest changes, value constructors. *) signature S1 = sig val x : int type t datatype s = A | B of t | C of int val y : int end; signature S2 = sig val a: int include S1 val b : int end; functor F(Q: S2) = struct fun f (Q.A) = Q.x | f (Q.B _) = Q.b | f (Q.C i) = i datatype s = datatype Q.s end; structure P = F(struct val x = 1; type t = bool datatype s = A | B of t | C of int; val y = 3; val a = 4 val b = 5 end); if P.f(P.A) = 1 then () else raise Fail "WRONG"; signature S2 = sig val a: int include sig val x : int type t datatype s = A | B of t | C of int val y : int end val b : int end; functor F(Q: S2) = struct fun f (Q.A) = Q.x | f (Q.B _) = Q.b | f (Q.C i) = i datatype s = datatype Q.s end; structure P = F(struct val x = 1; type t = bool datatype s = A | B of t | C of int; val y = 3; val a = 4 val b = 5 end); if P.f(P.A) = 1 then () else raise Fail "WRONG"; polyml-5.7.1/Tests/Succeed/Test154.ML0000644000175000017500000000066513204034553016066 0ustar daviddavid(* Bug in X86 code-generation. Because the tag is subtracted AFTER the operation an operation that actually overflows may not be correctly detected. *) fun t (x: LargeInt.int) = x + x * 1073741824; (* Use ! and ref here to prevent the compiler interpreting it. *) if ! (ref t) ~1 > 0 then raise Fail "wrong" else (); fun s (x: LargeInt.int) = x + x * 4611686018427387904; if ! (ref s) ~1 > 0 then raise Fail "wrong" else (); polyml-5.7.1/Tests/Succeed/Test169.ML0000644000175000017500000000056313204034553016071 0ustar daviddavid(* Extract from some code generated by Isabelle. *) fun eq _ a b = a = b; fun less_eq_list A_ (x :: xs) (y :: ys) = (if eq A_ x y then less_eq_list A_ xs ys else less_eq_list A_ (x :: xs) ys); (* less_eq_list always terminates by raising Match so the andalso is dead code. *) fun less_list A_ xs ys = less_eq_list A_ xs ys andalso not (less_eq_list A_ ys xs); polyml-5.7.1/Tests/Succeed/Test134.ML0000644000175000017500000000064713204034553016064 0ustar daviddavid(* Check the pathological cases of exception aliasing. *) fun check true = () | check false = raise Fail "Wrong"; exception R of int and Q of int; functor F (exception A of int) = struct fun f (R 1) = 1 | f (A 2) = 2 | f (R 2) = 3 | f (A 1) = 4 | f _ = 5 end; structure A = F(exception A = R); check(A.f(R 2) = 2); check(A.f(R 1) = 1); structure B = F(exception A = Q); check(B.f(R 2) = 3); check(B.f(R 1) = 1); polyml-5.7.1/Tests/Succeed/Test127.ML0000644000175000017500000000114513204034553016060 0ustar daviddavid(* There was a bug in the GMP version of the code where not all the result was being returned. *) fun verify a b c = if PolyML.IntInf.gcd(a, b) = c then () else raise Fail "Verification failed"; verify 9000988026767242076147268431373884447608090492573059 24797715036919699953447189576200253247082031218688000 1053; verify 200000000000000000000000000000000000000000000000000000000000000000 50000000000000000000000000000000000000000000000000000000000000000 50000000000000000000000000000000000000000000000000000000000000000; verify 367111367871840337041 367111367871840337041 367111367871840337041; polyml-5.7.1/Tests/Succeed/Test155.ML0000644000175000017500000000033113204034553016055 0ustar daviddavid (* These raised Size exceptions *) fun test1 (r:real) = Real.toLargeInt IEEEReal.TO_NEAREST r; fun test2 (r:real) = Real.toLargeInt IEEEReal.TO_ZERO r; test1 2.23E34; test1 2.23E35; test2 2.23E34; test2 2.23E35; polyml-5.7.1/Tests/Succeed/Test148.ML0000644000175000017500000000140013204034553016055 0ustar daviddavid(* This caused an InternalError exception during the "open". The problem was that the "garbage-collector" introduced in commit 1893 had a bug where it assumed that if it processed the "general" value for a binding the binding had been fully processed. However the "general" value for "tuple" is reachable both through the closure of "f" and also through the entry in the structure itself but only the latter has the "special" entries that refer to the fields. *) local val r : ((int -> int) * (int->int) * int ref * int ref) option ref = ref NONE in fun doDo p = r := SOME p end; structure Test = struct val tuple = (fn _ => raise Fail "bad", fn _ => raise Fail "bad", ref 0, ref 0) fun f _ = (doDo tuple; 0) end; open Test; polyml-5.7.1/Tests/Succeed/Test102.ML0000644000175000017500000000151213204034553016047 0ustar daviddavid(* A little bit of Isabelle that provoked a bug. The internal expansions of prod_ord were being treated as recursive. *) fun prod_ord a_ord b_ord ((x, y), (x', y')) = (case a_ord (x, x') of EQUAL => b_ord (y, y') | ord => ord); val int_ord = Int.compare; fun hd_ord f_ord (f, g) = prod_ord (prod_ord int_ord (prod_ord int_ord int_ord)) int_ord (f, g); (* (* It should be equivalent to this but only if the expansions of the arguments are done first. *) fun prod_ord8(a_ord, b_ord, x, y, x', y') = (case a_ord (x, x') of EQUAL => b_ord (y, y') | ord => ord); fun hd_ord5(f_ord, f, f', g, g') = prod_ord8(fn ((x, x'), (y, y')) => prod_ord8(int_ord, fn ((p, p'), (q, q')) => prod_ord8(int_ord, int_ord, p, q, p', q'), x, y, x', y'), int_ord, f, g, f', g'); *) polyml-5.7.1/Tests/Succeed/Test160.ML0000644000175000017500000000336313204034553016061 0ustar daviddavid(* Tests for overflow in div and mod. *) fun dv (i, j) = LargeInt.toInt(LargeInt.div(LargeInt.fromInt i, LargeInt.fromInt j)); fun md (i, j) = LargeInt.toInt(LargeInt.mod(LargeInt.fromInt i, LargeInt.fromInt j)); fun check(i, j) = if i = j then () else raise Fail "wrong"; case Int.maxInt of SOME m => check(m div 2, dv(m, 2)) | NONE => (); case Int.maxInt of SOME m => check(m div ~2, dv(m, ~2)) | NONE => (); (* Should not overflow. *) case Int.minInt of SOME m => check(m mod ~1, 0) | NONE => (); (* Should not overflow. *) (* Dividing the minimum int by ~1 should raise overflow. *) case Int.minInt of SOME m => ((dv(m, ~1); raise Fail "wrong") handle Overflow => ()) | NONE => (); (* Random number generator. *) local fun rmod x y = x - y * Real.realFloor (x / y); val a = 16807.0; val m = 2147483647.0; val random_seed = ref 1.0; in fun random () = let val r = rmod (a * ! random_seed) m in (* This can overflow 31-bit fixed precision. TODO: Find a random number generator that doesn't *) random_seed := r; Real.toInt IEEEReal.TO_NEGINF r handle Overflow => random() end end; fun doFor f 0 = () | doFor f n = (f(); doFor f (n-1)); fun doit () = let val a = random() and b = random() fun checkDiv(i, j) = if i div j = dv(i, j) then () else raise Fail (concat["Error - ", Int.toString i, " div ", Int.toString j]) and checkMod(i, j) = if i mod j = md(i, j) then () else raise Fail (concat["Error - ", Int.toString i, " mod ", Int.toString j]) in checkDiv(a, b); checkMod(a, b); checkDiv(~a, b); checkMod(~a, b); checkDiv(a, ~b); checkMod(a, ~b); checkDiv(~a, ~b); checkMod(~a, ~b) end; doFor doit 100; polyml-5.7.1/Tests/Succeed/Test131.ML0000644000175000017500000000316313204034553016055 0ustar daviddavid(* Bug test for pushing a value that won't fit in a 32-bit literal. *) (* Original test from Rene Neumann *) datatype bexp = Tt | Ff | V of IntInf.int | Not of bexp | And of bexp * bexp | Or of bexp * bexp; fun bexp_rec f1 f2 f3 f4 f5 f6 Tt = f1 | bexp_rec f1 f2 f3 f4 f5 f6 Ff = f2 | bexp_rec f1 f2 f3 f4 f5 f6 (V nat) = f3 nat | bexp_rec f1 f2 f3 f4 f5 f6 (Not bexp) = f4 bexp (bexp_rec f1 f2 f3 f4 f5 f6 bexp) | bexp_rec f1 f2 f3 f4 f5 f6 (And (bexp1, bexp2)) = f5 bexp1 bexp2 (bexp_rec f1 f2 f3 f4 f5 f6 bexp1) (bexp_rec f1 f2 f3 f4 f5 f6 bexp2) | bexp_rec f1 f2 f3 f4 f5 f6 (Or (bexp1, bexp2)) = f6 bexp1 bexp2 (bexp_rec f1 f2 f3 f4 f5 f6 bexp1) (bexp_rec f1 f2 f3 f4 f5 f6 bexp2); fun hashcode_bexp x = bexp_rec (2037113697 : IntInf.int) (1965105786 : IntInf.int) (fn x_0 => IntInf.+ (IntInf.* ((1562730118 : IntInf.int), x_0), (1569390485 : IntInf.int))) (fn _ => fn res_0 => IntInf.+ (IntInf.* ((1384320508 : IntInf.int), res_0), (1390980875 : IntInf.int))) (fn _ => fn _ => fn res_0 => fn res_1 => IntInf.+ (IntInf.* ((238441399 : IntInf.int), res_0), IntInf.+ (IntInf.* ((231781032 : IntInf.int), res_1), (245101766 : IntInf.int)))) (fn _ => fn _ => fn res_0 => fn res_1 => IntInf.+ (IntInf.* ((2025552342 : IntInf.int), res_0), IntInf.+ (IntInf.* ((2018891975 : IntInf.int), res_1), (2032212709 : IntInf.int)))) x; (* Alternative test. *) PolyML.Compiler.maxInlineSize := 1; fun f (a,b,c,d,e,f) = f; if f(0,0,0,0,0,2037113697:LargeInt.int) = 2037113697 then () else raise Fail "Compilation error"; polyml-5.7.1/Tests/Succeed/Test172.ML0000644000175000017500000000023313204034553016055 0ustar daviddavid(* Regression test for bug with caching X87 values. *) fun f x = let val res = x+ 1.0 in if Real.isFinite res then res else raise Fail "bad" end; f 3.0; polyml-5.7.1/Tests/Succeed/Test065.ML0000644000175000017500000000056413204034553016065 0ustar daviddavid(* Example of datatype replication from the Definition of Standard ML. *) signature MYBOOL = sig type bool val xor: bool * bool -> bool end; structure MyBool: MYBOOL = struct datatype bool = datatype bool (* from the inital basis *) fun xor (true, false) = true | xor (false, true) = true | xor _ = false end; val x = MyBool.xor(true, false); polyml-5.7.1/Tests/Succeed/Test055.ML0000644000175000017500000000037113204034553016060 0ustar daviddavid(* This should fail because it is illegal to redeclare 'a when it is bound explicitly or implicitly in an outer scope. *) (* That was a misunderstanding. This is actually legal. *) fun x () = let val 'a id: 'a->'a = fn z => z in id end: 'a->'a; polyml-5.7.1/Tests/Succeed/Test053.ML0000644000175000017500000000102713204034553016055 0ustar daviddavid(* Equality for datatypes in signatures is more complicated if type abbreviations or sharing constraints have set types to equality types. *) functor F(S: sig type t = int * int datatype s = X of t end) = struct fun f(x, y: S.s) = x = y end; signature Q = sig type a eqtype b end; functor F(S: sig structure R : Q sharing type R.a = R.b datatype s = X of R.a end) = struct fun f(x, y: S.s) = x = y end; functor F(S: sig eqtype r structure R : Q where type a = r datatype s = X of R.a end) = struct fun f(x, y: S.s) = x = y end; polyml-5.7.1/Tests/Succeed/Test094.ML0000644000175000017500000000130213204034553016056 0ustar daviddavid(* The code-generator rewrites if..then into indexed cases. This is a check that it correctly ignores duplicates. *) fun f i = if i = 0 then 0 else if i = 1 then 1 else if i = 2 then 2 else if i = 3 then 3 else if i = 4 then 4 else if i = 5 then 5 else if i = 6 then 6 else if i = 7 then 7 else if i = 8 then 8 else if i = 0 then raise Fail "bad" else if i = 1 then raise Fail "bad" else if i = 2 then raise Fail "bad" else if i = 3 then raise Fail "bad" else if i = 4 then raise Fail "bad" else if i = 5 then raise Fail "bad" else if i = 6 then raise Fail "bad" else 7; fun test n = if n = 8 then () else (f n; test(n+1)); test 0; polyml-5.7.1/Tests/Succeed/Test126.ML0000644000175000017500000000114613204034553016060 0ustar daviddavid(* On X86/64 these resulted in InternalError exceptions because the offset was too large to fit into a 32-bit integer. *) val a = fn ~1 => "A" | ~2 => "B" | ~3 => "C" | ~4 => "D" | ~5 => "E" | ~6 => "F" | ~7 => "G" | ~8 => "H" | _ => "" ; if a ~2 = "B" andalso a 0 = "" then () else raise Fail "error"; val e = fn 0wx7FFFFFFF => "A" | 0wx7FFFFFFE => "B" | 0wx7FFFFFFD => "C" | 0wx7FFFFFFC => "D" | 0wx7FFFFFFB => "E" | 0wx7FFFFFFA => "F" | 0wx7FFFFFF9 => "G" | 0wx7FFFFFF8 => "H" | _ => ""; if e 0wx7FFFFFFC = "D" andalso e 0w0 = "" then () else raise Fail "error"; polyml-5.7.1/Tests/Succeed/Test144.ML0000644000175000017500000000021613204034553016055 0ustar daviddavid(* Check for bug with missing BeginLoop *) let fun f n m = (n, m) handle Fail _ => f n m fun g x = #1 (f x x) in g 3 end; polyml-5.7.1/Tests/Succeed/Test062.ML0000644000175000017500000000053213204034553016055 0ustar daviddavidinfix ++ +++; fun a ++ b = a ^ b; fun a +++ b = b ^ a; val x = "a" ++ "b" +++ "c"; (* This next has changed in ML97. In ML90 two different operators always associated to the left. *) infixr ++ +++; fun a ++ b = a ^ b; fun a +++ b = b ^ a; val y = "a" ++ "b" +++ "c"; (* In ML90 x and y are the same. *) if x = y then raise Size else (); polyml-5.7.1/Tests/Succeed/Test066.ML0000644000175000017500000000024613204034553016063 0ustar daviddavid(* Example of datatype replication from the Definition of Standard ML. *) datatype t = C | D; signature SIG = sig datatype t = datatype t val f : t -> t end; polyml-5.7.1/Tests/Succeed/Test060.ML0000644000175000017500000000030613204034553016052 0ustar daviddavid(* This was forbidden in ML90 but is legal in ML97. *) functor F( S: sig eqtype s datatype t = C of int->int sharing type s = t end ) = struct end; polyml-5.7.1/Tests/Succeed/Test017.ML0000644000175000017500000001423413204034553016061 0ustar daviddavid(* More assorted tests from updating the basis library. *) fun verify true = () | verify false = raise Fail "wrong"; structure S = PrimIO( structure Vector = CharVector and Array = CharArray and VectorSlice = CharVectorSlice and ArraySlice = CharArraySlice val someElem = #" " type pos = int val compare = Int.compare); val S.RD r = S.openVector "abcdefghijk"; verify(valOf(#readVec r) 2 = "ab"); verify(valOf(#readVec r) 2 = "cd"); #close r (); (valOf(#readVec r) 2; raise Fail "wrong") handle IO.ClosedStream => (); val S.RD r = S.openVector "a"; verify(valOf(#readVec r) 2 = "a"); verify(valOf(#readVec r) 2 = ""); Timer.checkCPUTimes(Timer.totalCPUTimer()); fun ieeeVerify(SOME(iee, subs), ieeMatch, str) = if iee = ieeMatch andalso Substring.string subs = str then () else raise Fail "wrong" | ieeeVerify _ = raise Fail "wrong"; ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 1.23X"), {exp = 1, sign = false, class = IEEEReal.NORMAL, digits = [1, 2, 3]}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 1.23E3X"), {exp = 4, sign = false, class = IEEEReal.NORMAL, digits = [1, 2, 3]}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 1.23E 3X"), {exp = 1, sign = false, class = IEEEReal.NORMAL, digits = [1, 2, 3]}, "E 3X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " ~1.23E 3X"), {exp = 1, sign = true, class = IEEEReal.NORMAL, digits = [1, 2, 3]}, "E 3X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " .23E 3X"), {exp = 0, sign = false, class = IEEEReal.NORMAL, digits = [2, 3]}, "E 3X"); (* Valid, but E 3X isn't part of the number. *) verify(not(isSome(IEEEReal.scan Substring.getc (Substring.full " . 23E 3X")))); (* Not valid. *) ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 000.000X"), {exp = 0, sign = false, class = IEEEReal.ZERO, digits = []}, "X"); verify(not(isSome(IEEEReal.scan Substring.getc (Substring.full " E2 3X")))); (* Not valid. *) ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 0X"), {exp = 0, sign = false, class = IEEEReal.ZERO, digits = []}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 1X"), {exp = 1, sign = false, class = IEEEReal.NORMAL, digits = [1]}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 12X"), {exp = 2, sign = false, class = IEEEReal.NORMAL, digits = [1, 2]}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 0.00X"), {exp = 0, sign = false, class = IEEEReal.ZERO, digits = []}, "X"); ieeeVerify(IEEEReal.scan Substring.getc (Substring.full " 10.X"), {exp = 2, sign = false, class = IEEEReal.NORMAL, digits = [1, 0]}, ".X"); (* Valid. The decimal point is not part of the number. *) fun timeVerify(SOME(t, subs), tMatch, str) = if t = Time.fromMilliseconds tMatch andalso Substring.string subs = str then () else raise Fail "wrong" | timeVerify _ = raise Fail "wrong"; timeVerify(Time.scan Substring.getc (Substring.full " 0.00X"), 0, "X"); timeVerify(Time.scan Substring.getc (Substring.full " 1.23X"), 1230, "X"); timeVerify(Time.scan Substring.getc (Substring.full " 0.001X"), 1, "X"); timeVerify(Time.scan Substring.getc (Substring.full " 10.X"), 10000, ".X"); (* Valid. The decimal point is not part of the number. *) timeVerify(Time.scan Substring.getc (Substring.full " 0 .X"), 0, " .X"); timeVerify(Time.scan Substring.getc (Substring.full " .12X"), 120, "X"); verify(let val SOME x = Time.fromString " 0.001X" in Time.toNanoseconds x end = 1000000); verify(let val SOME x = Time.fromString " 0.000001X" in Time.toNanoseconds x end = 1000); verify(abs(let val SOME x = Time.fromString " 0.000000001X" in Time.toNanoseconds x end) <= 1); (* May be below the resolution. *) verify(List.collate Int.compare ([1,2,3], [1,2,3]) = EQUAL); verify(List.collate Int.compare ([1,2], [1,2,3]) = LESS); verify(List.collate Int.compare ([2,2], [1,2,3]) = GREATER); verify(String.concatWith "a" ["X", "Y", "Z"] = "XaYaZ"); verify(String.concatWith "a" [] = ""); (* These examples are given in G&R 2004. *) verify(String.fromString "\\q" = NONE); verify(String.fromString "a\^D" = SOME "a"); verify(String.fromString "a\\ \\\\q" = SOME "a"); verify(String.fromString "\\ \\" = SOME ""); verify(String.fromString "" = SOME ""); verify(String.fromString "\\ \\\^D" = SOME ""); verify(String.fromString "\\ a" = NONE); verify(Char.fromString "\\q" = NONE); verify(Char.fromString "a\^D" = SOME #"a"); verify(Char.fromString "a\\ \\\\q" = SOME #"a"); verify(Char.fromString "\\ \\" = NONE); verify(Char.fromString "" = NONE); verify(Char.fromString "\\ \\\^D" = NONE); verify(Char.fromString "\\ a" = NONE); verify(String.fromString("a\\ \\bc") = SOME "abc"); verify(Char.fromString("\\ \\bc") = SOME #"b"); verify(Substring.isPrefix "abc" (Substring.substring("XXXabcdYYY", 3, 4))); verify(not(Substring.isPrefix "abcd" (Substring.substring("XXXabcdYYY", 3, 3)))); verify(Substring.isPrefix "abc" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isPrefix "" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isPrefix "" (Substring.substring("XXXabcdYYY", 3, 0))); verify(not(Substring.isPrefix "abc" (Substring.substring("XXXdabcYYY", 3, 4)))); verify(not(Substring.isSuffix "abc" (Substring.substring("XXXabcdYYY", 3, 4)))); verify(not(Substring.isSuffix "abcd" (Substring.substring("XXXabcdYYY", 3, 3)))); verify(Substring.isSuffix "abc" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isSuffix "" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isSuffix "" (Substring.substring("XXXabcdYYY", 3, 0))); verify(Substring.isSuffix "abc" (Substring.substring("XXXdabcYYY", 3, 4))); verify(Substring.isSubstring "abc" (Substring.substring("XXXabcdYYY", 3, 4))); verify(not(Substring.isSubstring "abcd" (Substring.substring("XXXabcdYYY", 3, 3)))); verify(Substring.isSubstring "abc" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isSubstring "" (Substring.substring("XXXabcdYYY", 3, 3))); verify(Substring.isSubstring "" (Substring.substring("XXXabcdYYY", 3, 0))); verify(Substring.isSubstring "abc" (Substring.substring("XXXdabcYYY", 3, 4))); verify(Substring.isSubstring "abc" (Substring.full "xyzabcdef")); polyml-5.7.1/Tests/Succeed/Test092.ML0000644000175000017500000000020713204034553016057 0ustar daviddavid(* Datatype replication should export the constructors from an abstype. *) abstype t = X with datatype p = datatype t end; val q = X; polyml-5.7.1/Tests/Succeed/Test165.ML0000644000175000017500000000033113204034553016056 0ustar daviddavid(* Bug with unused loop variable register being reused. *) fun g r = let val x = ref 0 fun f () = let val () = x := !x+1 in if !x = 1 then f() else () end; in f () end; g(); polyml-5.7.1/Tests/Succeed/Test081.ML0000644000175000017500000000127613204034553016064 0ustar daviddavid(* Reading very long string. This didn't fail but just took a long time since the process was quadratic in the length of the string rather than linear. *) (* This code writes a very long string to a temporary file and then compiles it. *) let val fname = OS.FileSys.tmpName(); val f = TextIO.openOut fname; val _ = TextIO.output(f, "val _ = \"\\\n"); fun outlines n = if n >= 1000 then () else (TextIO.output(f, "\\A long line-A long line-A long line-A long line-A long line-A long line-A long line-\\n\\"); outlines(n+1)); in outlines 0; TextIO.output(f, "\\\";"); TextIO.closeOut f; use fname; OS.FileSys.remove fname end; polyml-5.7.1/Tests/Succeed/Test115.ML0000644000175000017500000000017513204034553016057 0ustar daviddavid(* Uncaught exceptions in a thread. Caused a segfault in SVN 1189 on X86. *) Thread.Thread.fork(fn () => raise Match, []); polyml-5.7.1/Tests/Succeed/Test116.ML0000644000175000017500000000137713204034553016065 0ustar daviddavid(* This produced an InternalError exception in SVN 1192. *) structure Q = struct type t = int fun s _ = 0 end; (* There are three properties of this example which are needed to show the bug. There must be no result signature on the functor. There must be no semicolon between the functor declaration and the structure. There must be a result signature on the structure declaration. *) functor F(S: sig type t val s: string -> t end) = struct type t = S.t val s = S.s end (* N.B. No semicolon here. *) structure T: sig type t val s: string -> t end = F(Q) ; (* Additional check that F can be applied to more than one type. *) structure R = struct type t = string fun s _ = "hello" end; structure A: sig type t=string val s: string -> t end = F(R); polyml-5.7.1/Tests/Succeed/Test020.ML0000644000175000017500000000431113204034553016046 0ustar daviddavid(* I've redone some of the string comparison routines so these are a few checks especially for the special cases of single-character strings. *) fun check f = if f() then () else raise Fail "Test failed!!\n"; check (fn () => not ("abc" > "abc")); check (fn () => "abd" > "abc"); check (fn () => "abc" > ""); check (fn () => "abcd" > "abc"); check (fn () => "a" > ""); check (fn () => "b" > "a"); check (fn () => not("a" > "a")); check (fn () => not("a" > "b")); check (fn () => not ("" > "a")); check (fn () => "abc" > "a"); check (fn () => not ("a" > "abc")); check (fn () => not ("abc" < "abc")); check (fn () => not ("abd" < "abc")); check (fn () => not ("abc" < "")); check (fn () => not ("abcd" < "abc")); check (fn () => not ("a" < "")); check (fn () => not ("b" < "a")); check (fn () => not("a" < "a")); check (fn () => "a" < "b"); check (fn () => "" < "a"); check (fn () => not ("abc" < "a")); check (fn () => "a" < "abc"); check (fn () => "abc" >= "abc"); check (fn () => "abd" >= "abc"); check (fn () => "abc" >= ""); check (fn () => "abcd" >= "abc"); check (fn () => "a" >= ""); check (fn () => "b" >= "a"); check (fn () => "a" >= "a"); check (fn () => not("a" >= "b")); check (fn () => not ("" >= "a")); check (fn () => "abc" >= "a"); check (fn () => not ("a" >= "abc")); check (fn () => "abc" <= "abc"); check (fn () => not ("abd" <= "abc")); check (fn () => not ("abc" <= "")); check (fn () => not ("abcd" <= "abc")); check (fn () => not ("a" <= "")); check (fn () => not ("b" <= "a")); check (fn () => "a" <= "a"); check (fn () => "a" <= "b"); check (fn () => "" <= "a"); check (fn () => not ("abc" <= "a")); check (fn () => "a" <= "abc"); check (fn () => String.compare("abc", "abc") = EQUAL); check (fn () => String.compare("abd", "abc") = GREATER); check (fn () => String.compare("abc", "") = GREATER); check (fn () => String.compare("abcd", "abc") = GREATER); check (fn () => String.compare("a", "") = GREATER); check (fn () => String.compare("b", "a") = GREATER); check (fn () => String.compare("a", "a") = EQUAL); check (fn () => String.compare("a", "b") = LESS); check (fn () => String.compare("", "a") = LESS); check (fn () => String.compare("abc", "a") = GREATER); check (fn () => String.compare("a", "abc") = LESS); polyml-5.7.1/Tests/Succeed/Test111.ML0000644000175000017500000000052313204034553016050 0ustar daviddavid(* Bug in X86 code-generator with "containers" that are not actually used. The container was being popped from the stack before the function was called resulting in a segfault. *) PolyML.Compiler.maxInlineSize := 1; fun f (x: int) = ((x, x)); fun h s = s+s; fun g y = let val a = ref 0 val _ = h y val _ = f y in ! a + y end; g 0; polyml-5.7.1/Tests/Succeed/Test141.ML0000644000175000017500000000020213204034553016045 0ustar daviddavid(* This should raise the Size exception. *) (TextIO.canInput(TextIO.stdIn, ~1); raise Fail "No exception") handle Size => (); polyml-5.7.1/Tests/Succeed/Test007.ML0000644000175000017500000000034413204034553016055 0ustar daviddavid(* Check that mutable values are not "captured" at compile-time. *) let val x = ref 0 fun f () = !x val a = f() in x := 1; if a = 0 andalso f() = 1 andalso !x = 1 then () else raise Fail "WRONG" end; polyml-5.7.1/Tests/Succeed/Test037.ML0000644000175000017500000000052313204034553016057 0ustar daviddavid(* Bug in SVN 630. *) (* The problem was that the bound variable count was being reset so that tt was getting the same bound variable as S.t. *) functor U (S: sig type t val y: t end) = struct structure T: sig val x: S.t type tt end = struct val x = S.y type tt = int end end; polyml-5.7.1/Tests/Succeed/Test031.ML0000644000175000017500000000027513204034553016055 0ustar daviddavid(* Bug in OS.Path.makeCanonical reported by Scott dot Owens at cl dot cam dot ac dot uk *) if OS.Path.mkCanonical "/a/b/../../c" = OS.Path.mkCanonical "/c" then () else raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test076.ML0000644000175000017500000000544013204034553016065 0ustar daviddavid(* Assorted tests on flexible records. Some should fail. *) let val f = #a val g = #b fun h x = let val i = f x and j = g x in 1 end val _ = h {a = 1, b = 2, c = 3} val _ = h {a = true, b = [], c = 0.0 } in 1 end; let fun f {a, ...} = a fun g {a, b} = a fun h x = let val i = f x and j = g x in 1 end in 1 end; local val f = #a val g = #b fun h (x as {a, b, ...}) = let val i = f x and j = g x in 1 end val _ = h {a = 1, b = 2, c = 3} val _ = h {a = true, b = [], c = 0.0 } in val h = h end; (* flexrecord2 *) val _ = let val g = #foo val _ = g {foo = 13} val _ = g {foo = "yes"} in () end; (* flexrecord2 *) (* flexrecord3 *) val _ = let val g = #foo val _ = g {foo = 13, goo = 1.0} val _ = g {foo = "yes", goo = 1.0} in () end; (* flexrecord3 *) (* flexrecord4 *) val _ = let val g = #foo val _ = g {foo = 13, goo = 1.0} val _ = g {foo = "yes", goo = false} in () end; (* flexrecord4 *) local val g = #b fun f (x as {a, ...}) = if x = x then g x else g x val _ = f{a=1, b=0, c = true} in val f = f end; let fun g (x as {b,...}) = x fun i (x as {a,b,...}) = g (if true then g x else g {a=2, b = 1, c=3}) in 1 end; (* Setting the generic has an effect on an instance constrained by value polymorphism. Both foo and bar in g have types which are free variables. *) local val f = #foo val g = valOf o f val _ = f {foo=0, bar=1} in val f = f and g = g end; local val f = #foo val g = (valOf: int option -> int) o f val _ = f {foo=0, bar=1} in val f = f and g = g end; local val f = #foo val g = valOf o f val _ = f {foo=0, bar=1} val _ = g {foo=SOME 0, bar = true} in val f = f and g = g end; (* Check that equality is inherited correctly. The equality attribute is a property of the generic as well as the instance. In this example the generic instance for g is an equality type but f is not. *) local fun f (x as {a, ...}) = (x=x; a) fun g {a, ...} = a fun h x = (g x; f x) val _ = h{a=1, b=2} in val f = f and g = g and h = h end; (* In this example it is the INSTANCE which is an equality type. ???? *) local val f = #foo fun g x = (x=x; f x) val _ = f{foo=0.0, bar=0.0} in val f = f and g = g end; (* This demonstrates that the flexible record can be made rigid anywhere withing the topdec. *) structure S = struct val f = #foo end val _ = S.f{foo=1, goo=2}; (* Shows that we can make the record rigid using the signature. *) structure S : sig val f : {a: 'a, b: 'b} -> 'a end = struct val f = #a end; polyml-5.7.1/Tests/Succeed/Test139.ML0000644000175000017500000000024113204034553016057 0ustar daviddavid(* Bug fix for byte vector equality. *) if BoolVector.tabulate(16, fn n => n < 8) = BoolVector.tabulate(16, fn n => n < 10) then raise Fail "Wrong" else (); polyml-5.7.1/Tests/Succeed/Test120.ML0000644000175000017500000000027513204034553016054 0ustar daviddavid(* This deadlocked with pthreads but not on Windows. *) val w = let val x = SOME (ref 3) in Weak.weak x end; PolyML.fullGC (); case !w of NONE => () | SOME _ => raise Fail "Not removed"; polyml-5.7.1/Tests/Succeed/Test012.ML0000644000175000017500000077143713204034553016073 0ustar daviddavid(* This caused a problem in the Sparc version because the stack frame grew to more than 4096 bytes. Thanks to Rob Arthan for reporting it. *) type STATE = int; type STATE_STACK = STATE list; datatype ('tok, 'lc, 'pp) INPUT_STACK_ITEM = Token of 'tok * 'lc | Parsed of 'pp; type('tok, 'lc, 'pp) INPUT_STACK = ('tok, 'lc, 'pp) INPUT_STACK_ITEM list; datatype ACTION = Shift of STATE | Reduce of ((string * int) * int) | Dynamic of STATE * ((string * int) * int) | Accept | Error; (* type ('lc)ACTION_TABLE = ('lc * ACTION) list PPArray.array; type GOTO_TABLE = (string * STATE) list PPArray.array; type ('tok, 'lc, 'pp)REDUCTION_TABLE = (('tok, 'lc, 'pp)INPUT_STACK -> 'pp) list E_DICT; datatype RESOLUTION = DoShift | DoReduce | DoError; type ('tok, 'lc, 'pp)RESOLVER = ('tok * 'lc) * ('tok, 'lc, 'pp)INPUT_STACK * ((string * int) * int) -> RESOLUTION; type ('tok, 'lc)CLASSIFIER = 'tok -> 'lc; type ('tok, 'lc, 'pp, 'st)ERROR_ROUTINE = 'tok * ('tok, 'lc, 'pp)INPUT_STACK * STATE_STACK * 'st -> ('tok*'st); type ('tok, 'st)READER = 'st -> ('tok * 'st); exception SYNTAX_ERROR; exception PARSER_ERROR of string; local fun get_action (actions : (''lc)ACTION_TABLE) (s:STATE) (lc:''lc) : ACTION = ( (let open PPArray in lassoc3 (sub(actions, s)) lc end handle Fail _ => Error) handle PPArray.Subscript => raise PARSER_ERROR "invalid state" ); in fun lookup_action (resolver : ('tok, ''lc, 'pp)RESOLVER) (actions : (''lc)ACTION_TABLE) (tok : 'tok) (stk : ('tok, ''lc, 'pp)INPUT_STACK) (s : STATE) (lc : ''lc) : ACTION = ( case get_action actions s lc of Dynamic (s', altsymn) => ( case resolver((tok, lc), stk, altsymn) of DoShift => Shift s' | DoReduce => Reduce altsymn | DoError => Error ) | easy => easy ); end; fun lookup_goto (gotos : GOTO_TABLE) (s:STATE) (nt : string) : STATE = ( (let open PPArray in lassoc3 (sub(gotos, s)) nt end handle Fail _ => raise PARSER_ERROR "invalid non-terminal") handle PPArray.Subscript => raise PARSER_ERROR "invalid state" ); fun lookup_reducer (reducers : ('tok, ''lc, 'pp)REDUCTION_TABLE) (nt:string) (alt : int) : ('tok, ''lc, 'pp)INPUT_STACK -> 'pp = ( case e_lookup nt reducers of Value tab => nth alt tab | Nil => raise PARSER_ERROR "invalid non-terminal/alternative" ); fun slrp'parse (s0 : STATE) (actions : (''lc)ACTION_TABLE) (gotos : GOTO_TABLE) (reducers : ('tok, ''lc, 'pp)REDUCTION_TABLE) (resolver : ('tok, ''lc, 'pp) RESOLVER) (classify : ('tok, ''lc)CLASSIFIER) (error : ('tok, ''lc, 'pp, 'st)ERROR_ROUTINE) (reader : ('tok, 'st) READER) : 'st -> 'pp = ( let open PPArray; val init_ss = [s0]; val init_is = []; val fetch_action = lookup_action resolver actions; val fetch_reducer = lookup_reducer reducers; val fetch_goto = lookup_goto gotos; fun go (tok, st) = (fn (ss, is) => let val lc = classify tok; val s = hd ss; in case fetch_action tok is s lc of Shift s' => go (reader st)((s' :: ss), Token(tok, lc) :: is) | Reduce((nt, alt), r) => ( let val reducer = fetch_reducer nt alt; val A = reducer is; val ss' = ss from r; val is' = is from r; val s' = fetch_goto (hd ss') nt; in go (tok, st) (s' :: ss', Parsed A :: is') end ) | Accept => ((ss, is) ) | Error =>( go (error (tok, is, ss, st)) (ss, is) ) | Dynamic _ => ( raise PARSER_ERROR "conflict resolution error" ) end ); in (fn st => ( case go (reader st) (init_ss, init_is)of (_, [Parsed res]) => res | _ => raise PARSER_ERROR "stacks corrupt at end of parse")) end ); fun format_stack (do_tok : 'tok -> string)(stk : ('tok, 'lc, 'pp)INPUT_STACK) : string = ( format_list (fn Token (tk, _) => do_tok tk | _ => "...") (rev stk) " " ); fun default_error (do_tok : 'tok -> string) (tok: 'tok, stk : ('tok, 'lc, 'pp)INPUT_STACK, _ : STATE_STACK, st : 'st) : ('tok*'st) = ( raw_diag_line("*** ERROR Syntax error ***"); if any stk (fn Token _ => true | _ => false) then raw_diag_line(do_tok tok ^ " not expected after: " ^ format_stack do_tok stk) else raw_diag_line(do_tok tok ^ " not expected here"); raise SYNTAX_ERROR; (tok, st) ); val (default_resolver : ('tok, 'lc, 'pp)RESOLVER) = (fn _ => raise PARSER_ERROR "shift/reduce conflict" ); fun simple_resolver (prec : (('tok * 'lc) * ('tok * 'lc)) -> RESOLUTION) : ('tok, 'lc, 'pp)RESOLVER = (fn (toklc, stk, ignored) => case stk of Token toklc' :: _ => prec (toklc', toklc) | _ :: more => simple_resolver prec (toklc, more, ignored) | [] => DoError ); end; (* of structure SlrpDriver *) open SlrpDriver; *) datatype CN_LEX_CLASS = LCAbs | LCAmpersand | LCAnd | LCAnnotation | LCAnnotationLabel | LCArbitraryAda | LCArray | LCAt | LCAuxiliary | LCBar |LCBBody | LCBecomes | LCBegin | LCBy | LCCase| LCCharacterLiteral | LCColon | LCComma | LCComment | LCCompLabel | LCConstant | LCCon | LCCrd | LCDecLabel | LCDeclare| LCDelta | LCDigits | LCDiv | LCDotDot | LCDot | LCElse | LCElsIf | LCEnd | LCEos | LCEquals | LCExit | LCFatDot | LCFor | LCFunction | LCGoesTo | LCGreaterEquals | LCGreaterThan | LCGrkGamma | LCGrkDelta | LCGrkXi | LCIdentifier | LCIf | LCImplement | LCImplementedBy | LCIn | LCIs | LCKSlot | LCLBrace | LCLChevron | LCLessEquals | LCLessGreat | LCLessThan | LCLimited | LCLoop | LCLSqBrack | LCLStrachey | LCMinus | LCMod | LCNotEquals | LCNot | LCNull | LCNumericLiteral | LCOf | LCOrd | LCOr | LCOthers | LCOut | LCPackage | LCPlus | LCPPartLabel | LCPrime | LCPrimedIdentifier | LCPragma | LCPrivate | LCProcedure | LCRBrace | LCRChevron | LCRecord | LCReferences | LCRefinedBy | LCRem | LCRenames | LCReplacedBy | LCReturn | LCReverse | LCRRange | LCRSqBrack | LCRStrachey | LCSemi | LCSeparate | LCSpecLabel | LCStarStar | LCStar | LCStmtLabel | LCStringLiteral | LCSubType | LCThen | LCTill | LCType | LCUse| LCUsing | LCVPartLabel | LCWhen | LCWhile | LCWith | LCXor | LCZ; local val slrp'a711=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551),(LCUsing,Shift 619), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]; val slrp'a710=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCSeparate,Shift 402), (LCPragma,Shift 481),(LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551) ,(LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a711; val slrp'a709=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCSeparate,Shift 400), (LCPragma,Shift 481),(LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551) ,(LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a710; val slrp'a708=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a709; val slrp'a707=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a708; val slrp'a706=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a707; val slrp'a705=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a706; val slrp'a704=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a705; val slrp'a703=[[(LCFor,Shift 596),(LCPackage,Shift 533),(LCPragma,Shift 481), (LCFunction,Shift 565),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462), (LCEos,Reduce(("declarative_part",0),0)), (LCBegin,Reduce(("declarative_part",0),0)), (LCEnd,Reduce(("declarative_part",0),0)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a704; val slrp'a702=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCAuxiliary,Shift 313),(LCEos,Reduce(("visible_part",0),0)), (LCEnd,Reduce(("visible_part",0),0)),(LCPrivate,Reduce(("visible_part",0),0)), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a703; val slrp'a701=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCAuxiliary,Shift 313),(LCEos,Reduce(("visible_part",0),0)), (LCEnd,Reduce(("visible_part",0),0)),(LCPrivate,Reduce(("visible_part",0),0)), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a702; val slrp'a700=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCAuxiliary,Shift 313),(LCEos,Reduce(("visible_part",0),0)), (LCEnd,Reduce(("visible_part",0),0)),(LCPrivate,Reduce(("visible_part",0),0)), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a701; val slrp'a699=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCEos,Reduce(("private_part",0),1)),(LCEnd,Reduce(("private_part",0),1)), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a700; val slrp'a698=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a699; val slrp'a697=[[(LCFor,Shift 596),(LCPragma,Shift 481),(LCFunction,Shift 565), (LCPackage,Shift 358),(LCUse,Shift 509),(LCType,Shift 551), (LCProcedure,Shift 530),(LCLChevron,Shift 462),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a698; val slrp'a696=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a697; val slrp'a695=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a696; val slrp'a694=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a695; val slrp'a693=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a694; val slrp'a692=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a693; val slrp'a691=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a692; val slrp'a690=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a691; val slrp'a689=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a690; val slrp'a688=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a689; val slrp'a687=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a688; val slrp'a686=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a687; val slrp'a685=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCEos,Reduce(("sequence_of_statements",0),1)), (LCElsIf,Reduce(("sequence_of_statements",0),1)), (LCElse,Reduce(("sequence_of_statements",0),1)), (LCEnd,Reduce(("sequence_of_statements",0),1)), (LCWhen,Reduce(("sequence_of_statements",0),1)),(LCCharacterLiteral,Shift 105)]]@slrp'a686; val slrp'a684=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a685; val slrp'a683=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a684; val slrp'a682=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a683; val slrp'a681=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a682; val slrp'a680=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a681; val slrp'a679=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a680; val slrp'a678=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a679; val slrp'a677=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a678; val slrp'a676=[[(LCPragma,Shift 481),(LCReturn,Shift 655),(LCExit,Shift 527), (LCIdentifier,Shift 447),(LCFor,Reduce(("name_colon_opt",0),0)), (LCWhile,Reduce(("name_colon_opt",0),0)),(LCTill,Reduce(("name_colon_opt",0),0)) ,(LCLoop,Reduce(("name_colon_opt",0),0)), (LCDeclare,Reduce(("name_colon_opt",0),0)), (LCBegin,Reduce(("name_colon_opt",0),0)),(LCCase,Shift 646),(LCIf,Shift 651), (LCNull,Shift 197),(LCLChevron,Shift 462),(LCGrkGamma,Shift 181), (LCGrkDelta,Shift 524),(LCAnnotation,Shift 168),(LCCon,Shift 459), (LCCharacterLiteral,Shift 105)]]@slrp'a677; val slrp'a675=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a676; val slrp'a674=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a675; val slrp'a673=[[(LCConstant,Shift 664),(LCLStrachey,Shift 236), (LCMinus,Shift 155),(LCPlus,Shift 154),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a674; val slrp'a672=[[(LCLStrachey,Shift 236),(LCOthers,Shift 221),(LCMinus,Shift 155) ,(LCPlus,Shift 154),(LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a673; val slrp'a671=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 112),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a672; val slrp'a670=[[(LCConstant,Shift 664),(LCLStrachey,Shift 236), (LCMinus,Shift 155),(LCPlus,Shift 154),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a671; val slrp'a669=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a670; val slrp'a668=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a669; val slrp'a667=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a668; val slrp'a666=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a667; val slrp'a665=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96),(LCBecomes,Shift 642)]]@slrp'a666; val slrp'a664=[[(LCLStrachey,Shift 236),(LCReverse,Shift 661), (LCMinus,Shift 155),(LCPlus,Shift 154),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a665; val slrp'a663=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a664; val slrp'a662=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a663; val slrp'a661=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a662; val slrp'a660=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a661; val slrp'a659=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a660; val slrp'a658=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a659; val slrp'a657=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCPragma,Shift 481) ,(LCAnnotation,Shift 563),(LCPackage,Reduce(("context_clause",0),0)), (LCProcedure,Reduce(("context_clause",0),0)), (LCFunction,Reduce(("context_clause",0),0)), (LCSeparate,Reduce(("context_clause",0),0)),(LCUse,Shift 509), (LCLChevron,Shift 462),(LCAnnotationLabel,Shift 440),(LCSpecLabel,Shift 485), (LCStmtLabel,Shift 439),(LCDecLabel,Shift 438),(LCVPartLabel,Shift 437), (LCPPartLabel,Shift 436),(LCCompLabel,Shift 435),(LCArbitraryAda,Shift 13), (LCImplementedBy,Shift 693),(LCRefinedBy,Shift 691)]]@slrp'a658; val slrp'a656=[[(LCSemi,Shift 249),(LCLStrachey,Shift 236),(LCMinus,Shift 155), (LCPlus,Shift 154),(LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a657; val slrp'a655=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a656; val slrp'a654=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a655; val slrp'a653=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a654; val slrp'a652=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a653; val slrp'a651=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a652; val slrp'a650=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOthers,Shift 115),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a651; val slrp'a649=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a650; val slrp'a648=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a649; val slrp'a647=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a648; val slrp'a646=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a647; val slrp'a645=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a646; val slrp'a644=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a645; val slrp'a643=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a644; val slrp'a642=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a643; val slrp'a641=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCElse,Shift 637),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a642; val slrp'a640=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCThen,Shift 635),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a641; val slrp'a639=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a640; val slrp'a638=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a639; val slrp'a637=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a638; val slrp'a636=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a637; val slrp'a635=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a636; val slrp'a634=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96),(LCLessGreat,Shift 72)]]@slrp'a635; val slrp'a633=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a634; val slrp'a632=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a633; val slrp'a631=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a632; val slrp'a630=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a631; val slrp'a629=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a630; val slrp'a628=[[(LCPragma,Shift 481),(LCType,Shift 551), (LCImplement,Reduce(("basic_dec_list",0),1)),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a629; val slrp'a627=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a628; val slrp'a626=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a627; val slrp'a625=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a626; val slrp'a624=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a625; val slrp'a623=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a624; val slrp'a622=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a623; val slrp'a621=[[(LCLStrachey,Shift 236),(LCMinus,Shift 155),(LCPlus,Shift 154), (LCStringLiteral,Shift 141),(LCCharacterLiteral,Shift 450), (LCNumericLiteral,Shift 140),(LCNot,Shift 610),(LCAbs,Shift 609), (LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a622; val slrp'a620=[[(LCPragma,Shift 481),(LCType,Shift 551),(LCSubType,Shift 44), (LCIdentifier,Shift 443),(LCAnnotation,Shift 22)]]@slrp'a621; val slrp'a619=[[(LCSeparate,Shift 484),(LCPackage,Shift 505), (LCFunction,Shift 532),(LCProcedure,Shift 530)]]@slrp'a620; val slrp'a618=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a619; val slrp'a617=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a618; val slrp'a616=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCPragma,Shift 481) ,(LCAnnotation,Shift 563),(LCPackage,Reduce(("context_clause",0),0)), (LCProcedure,Reduce(("context_clause",0),0)), (LCFunction,Reduce(("context_clause",0),0)), (LCSeparate,Reduce(("context_clause",0),0)),(LCEos,Reduce(("compilation",1),1)), (LCUse,Shift 509),(LCLChevron,Shift 462)]]@slrp'a617; val slrp'a615=[[(LCLimited,Shift 347),(LCPrivate,Shift 342),(LCRecord,Shift 550) ,(LCArray,Shift 495),(LCDelta,Shift 621),(LCDigits,Shift 620),(LCOrd,Shift 487), (LCRRange,Shift 628)]]@slrp'a616; val slrp'a614=[[(LCLimited,Shift 344),(LCPrivate,Shift 340),(LCRecord,Shift 550) ,(LCArray,Shift 495),(LCDelta,Shift 621),(LCDigits,Shift 620),(LCOrd,Shift 487), (LCRRange,Shift 628)]]@slrp'a615; val slrp'a613=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCNot,Shift 610), (LCAbs,Shift 609),(LCOrd,Shift 694),(LCIdentifier,Shift 96)]]@slrp'a614; val slrp'a612=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCPragma,Shift 481) ,(LCAnnotation,Shift 563),(LCPackage,Reduce(("context_clause",0),0)), (LCProcedure,Reduce(("context_clause",0),0)), (LCFunction,Reduce(("context_clause",0),0)), (LCSeparate,Reduce(("context_clause",0),0)),(LCUse,Shift 509), (LCLChevron,Shift 462)]]@slrp'a613; val slrp'a611=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCOrd,Shift 694), (LCIdentifier,Shift 96)]]@slrp'a612; val slrp'a610=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCOrd,Shift 694), (LCIdentifier,Shift 96)]]@slrp'a611; val slrp'a609=[[(LCLStrachey,Shift 236),(LCStringLiteral,Shift 141), (LCCharacterLiteral,Shift 450),(LCNumericLiteral,Shift 140),(LCOrd,Shift 694), (LCIdentifier,Shift 96)]]@slrp'a610; val slrp'a608=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCUse,Shift 509), (LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)), (LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)), (LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a609; val slrp'a607=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCUse,Shift 509), (LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)), (LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)), (LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a608; val slrp'a606=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCUse,Shift 509), (LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)), (LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)), (LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a607; val slrp'a605=[[(LCReferences,Shift 490),(LCWith,Shift 489),(LCUse,Shift 509), (LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)), (LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)), (LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a606; val slrp'a604=[[(LCXor,Shift 638),(LCOr,Shift 640),(LCAnd,Shift 639), (LCSemi,Reduce(("expression",0),1)),(LCRRange,Reduce(("expression",0),1)), (LCDigits,Reduce(("expression",0),1)),(LCDelta,Reduce(("expression",0),1)), (LCBecomes,Reduce(("expression",0),1)),(LCComma,Reduce(("expression",0),1)), (LCCrd,Reduce(("expression",0),1)),(LCThen,Reduce(("expression",0),1)), (LCIs,Reduce(("expression",0),1)),(LCGoesTo,Reduce(("expression",0),1)), (LCBar,Reduce(("expression",0),1)),(LCTill,Reduce(("expression",0),1)), (LCLoop,Reduce(("expression",0),1))]]@slrp'a605; val slrp'a603=[[(LCPackage,Shift 321),(LCFunction,Shift 532), (LCProcedure,Shift 530)]]@slrp'a604; val slrp'a602=[[(LCGoesTo,Reduce(("discrete_range",1),1)), (LCBar,Reduce(("discrete_range",1),1)),(LCTill,Reduce(("discrete_range",1),1)), (LCLoop,Reduce(("discrete_range",1),1)),(LCDelta,Shift 621),(LCDigits,Shift 620) ,(LCRRange,Shift 628),(LCBecomes,Reduce(("subtype_indication",1),1)), (LCSemi,Reduce(("subtype_indication",1),1)), (LCCrd,Reduce(("subtype_indication",1),1)), (LCComma,Reduce(("subtype_indication",1),1))]]@slrp'a603; val slrp'a601=[[(LCOrd,Shift 568),(LCGrkDelta,Shift 590), (LCSemi,Reduce(("procedure_specification_1",0),2)), (LCAnnotation,Reduce(("procedure_specification_1",0),2)), (LCLChevron,Reduce(("procedure_specification_1",0),2)), (LCIs,Reduce(("procedure_specification_1",0),2)), (LCRenames,Reduce(("procedure_specification_1",0),2)),(LCGrkGamma,Shift 181)]]@slrp'a602; val slrp'a600=[[(LCEnd,Reduce(("component_pack",0),1)), (LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a601; val slrp'a599=[[(LCRRange,Shift 633),(LCDelta,Shift 621),(LCDigits,Shift 620), (LCBecomes,Reduce(("subtype_indication",1),1)), (LCSemi,Reduce(("subtype_indication",1),1)), (LCCrd,Reduce(("subtype_indication",1),1)), (LCComma,Reduce(("subtype_indication",1),1))]]@slrp'a600; val slrp'a598=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a599; val slrp'a597=[[(LCIdentifier,Shift 512),(LCCharacterLiteral,Shift 105)]]@slrp'a598; val slrp'a596=[[(LCStringLiteral,Shift 279),(LCCharacterLiteral,Shift 105), (LCIdentifier,Shift 96)]]@slrp'a597; val slrp'a595=[[(LCDelta,Shift 621),(LCDigits,Shift 620),(LCRRange,Shift 628), (LCBecomes,Reduce(("subtype_indication",1),1)), (LCSemi,Reduce(("subtype_indication",1),1)), (LCCrd,Reduce(("subtype_indication",1),1)), (LCComma,Reduce(("subtype_indication",1),1))]]@slrp'a596; val slrp'a594=[[(LCRem,Shift 159),(LCMod,Shift 158),(LCDiv,Shift 157), (LCStar,Shift 156),(LCAmpersand,Shift 153),(LCMinus,Shift 152), (LCPlus,Shift 151),(LCBecomes,Reduce(("binoptail",0),0)), (LCSemi,Reduce(("binoptail",0),0)),(LCRRange,Reduce(("binoptail",0),0)), (LCDigits,Reduce(("binoptail",0),0)),(LCDelta,Reduce(("binoptail",0),0)), (LCComma,Reduce(("binoptail",0),0)),(LCCrd,Reduce(("binoptail",0),0)), (LCAnd,Reduce(("binoptail",0),0)),(LCOr,Reduce(("binoptail",0),0)), (LCXor,Reduce(("binoptail",0),0)),(LCGreaterEquals,Reduce(("binoptail",0),0)), (LCGreaterThan,Reduce(("binoptail",0),0)), (LCLessEquals,Reduce(("binoptail",0),0)),(LCLessThan,Reduce(("binoptail",0),0)), (LCNotEquals,Reduce(("binoptail",0),0)),(LCEquals,Reduce(("binoptail",0),0)), (LCIn,Reduce(("binoptail",0),0)),(LCNot,Reduce(("binoptail",0),0)), (LCDotDot,Reduce(("binoptail",0),0)),(LCThen,Reduce(("binoptail",0),0)), (LCIs,Reduce(("binoptail",0),0)),(LCGoesTo,Reduce(("binoptail",0),0)), (LCBar,Reduce(("binoptail",0),0)),(LCTill,Reduce(("binoptail",0),0)), (LCLoop,Reduce(("binoptail",0),0))]]@slrp'a595; val slrp'a593=[[(LCRem,Shift 159),(LCMod,Shift 158),(LCDiv,Shift 157), (LCStar,Shift 156),(LCAmpersand,Shift 153),(LCMinus,Shift 152), (LCPlus,Shift 151),(LCBecomes,Reduce(("binoptail",0),0)), (LCSemi,Reduce(("binoptail",0),0)),(LCRRange,Reduce(("binoptail",0),0)), (LCDigits,Reduce(("binoptail",0),0)),(LCDelta,Reduce(("binoptail",0),0)), (LCComma,Reduce(("binoptail",0),0)),(LCCrd,Reduce(("binoptail",0),0)), (LCAnd,Reduce(("binoptail",0),0)),(LCOr,Reduce(("binoptail",0),0)), (LCXor,Reduce(("binoptail",0),0)),(LCGreaterEquals,Reduce(("binoptail",0),0)), (LCGreaterThan,Reduce(("binoptail",0),0)), (LCLessEquals,Reduce(("binoptail",0),0)),(LCLessThan,Reduce(("binoptail",0),0)), (LCNotEquals,Reduce(("binoptail",0),0)),(LCEquals,Reduce(("binoptail",0),0)), (LCIn,Reduce(("binoptail",0),0)),(LCNot,Reduce(("binoptail",0),0)), (LCDotDot,Reduce(("binoptail",0),0)),(LCThen,Reduce(("binoptail",0),0)), (LCIs,Reduce(("binoptail",0),0)),(LCGoesTo,Reduce(("binoptail",0),0)), (LCBar,Reduce(("binoptail",0),0)),(LCTill,Reduce(("binoptail",0),0)), (LCLoop,Reduce(("binoptail",0),0))]]@slrp'a594; val slrp'a592=[[(LCRem,Shift 159),(LCMod,Shift 158),(LCDiv,Shift 157), (LCStar,Shift 156),(LCAmpersand,Shift 153),(LCMinus,Shift 152), (LCPlus,Shift 151),(LCBecomes,Reduce(("binoptail",0),0)), (LCSemi,Reduce(("binoptail",0),0)),(LCRRange,Reduce(("binoptail",0),0)), (LCDigits,Reduce(("binoptail",0),0)),(LCDelta,Reduce(("binoptail",0),0)), (LCComma,Reduce(("binoptail",0),0)),(LCCrd,Reduce(("binoptail",0),0)), (LCAnd,Reduce(("binoptail",0),0)),(LCOr,Reduce(("binoptail",0),0)), (LCXor,Reduce(("binoptail",0),0)),(LCGreaterEquals,Reduce(("binoptail",0),0)), (LCGreaterThan,Reduce(("binoptail",0),0)), (LCLessEquals,Reduce(("binoptail",0),0)),(LCLessThan,Reduce(("binoptail",0),0)), (LCNotEquals,Reduce(("binoptail",0),0)),(LCEquals,Reduce(("binoptail",0),0)), (LCIn,Reduce(("binoptail",0),0)),(LCNot,Reduce(("binoptail",0),0)), (LCDotDot,Reduce(("binoptail",0),0)),(LCThen,Reduce(("binoptail",0),0)), (LCIs,Reduce(("binoptail",0),0)),(LCGoesTo,Reduce(("binoptail",0),0)), (LCBar,Reduce(("binoptail",0),0)),(LCTill,Reduce(("binoptail",0),0)), (LCLoop,Reduce(("binoptail",0),0))]]@slrp'a593; val slrp'a591=[[(LCGrkXi,Shift 531),(LCZ,Shift 573),(LCLBrace,Shift 178), (LCLSqBrack,Shift 175)]]@slrp'a592; val slrp'a590=[[(LCGrkDelta,Shift 590), (LCSemi,Reduce(("procedure_specification_1",2),3)), (LCAnnotation,Reduce(("procedure_specification_1",2),3)), (LCLChevron,Reduce(("procedure_specification_1",2),3)), (LCIs,Reduce(("procedure_specification_1",2),3)), (LCRenames,Reduce(("procedure_specification_1",2),3)),(LCGrkGamma,Shift 181)]]@slrp'a591; val slrp'a589=[[(LCGreaterEquals,Shift 150),(LCGreaterThan,Shift 149), (LCLessEquals,Shift 148),(LCLessThan,Shift 147),(LCNotEquals,Shift 146), (LCEquals,Shift 145),(LCNot,Shift 129),(LCIn,Shift 630), (LCSemi,Reduce(("relation",0),1)),(LCRRange,Reduce(("relation",0),1)), (LCDigits,Reduce(("relation",0),1)),(LCDelta,Reduce(("relation",0),1)), (LCBecomes,Reduce(("relation",0),1)),(LCComma,Reduce(("relation",0),1)), (LCCrd,Reduce(("relation",0),1)),(LCAnd,Reduce(("relation",0),1)), (LCOr,Reduce(("relation",0),1)),(LCXor,Reduce(("relation",0),1)), (LCThen,Reduce(("relation",0),1)),(LCIs,Reduce(("relation",0),1)), (LCGoesTo,Reduce(("relation",0),1)),(LCBar,Reduce(("relation",0),1)), (LCTill,Reduce(("relation",0),1)),(LCLoop,Reduce(("relation",0),1))]]@slrp'a590; val slrp'a588=[[(LCOrd,Shift 695), (LCSemi,Reduce(("function_specification_1",2),5)), (LCAnnotation,Reduce(("function_specification_1",2),5)), (LCLChevron,Reduce(("function_specification_1",2),5)), (LCIs,Reduce(("function_specification_1",2),5)), (LCRenames,Reduce(("function_specification_1",2),5)),(LCGrkXi,Shift 531), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a589; val slrp'a587=[[(LCOrd,Shift 695), (LCSemi,Reduce(("function_specification_1",0),4)), (LCAnnotation,Reduce(("function_specification_1",0),4)), (LCLChevron,Reduce(("function_specification_1",0),4)), (LCIs,Reduce(("function_specification_1",0),4)), (LCRenames,Reduce(("function_specification_1",0),4)),(LCGrkXi,Shift 531), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a588; val slrp'a586=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a587; val slrp'a585=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a586; val slrp'a584=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a585; val slrp'a583=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a584; val slrp'a582=[[(LCNumericLiteral,Shift 185),(LCCharacterLiteral,Shift 105), (LCIdentifier,Shift 96)]]@slrp'a583; val slrp'a581=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a582; val slrp'a580=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a581; val slrp'a579=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a580; val slrp'a578=[[(LCCharacterLiteral,Shift 105),(LCIdentifier,Shift 96)]]@slrp'a579; val slrp'a577=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a578; val slrp'a576=[[(LCBegin,Shift 682),(LCDeclare,Shift 704),(LCFor,Shift 504), (LCWhile,Shift 653),(LCTill,Reduce(("iteration_scheme_opt",0),0)), (LCLoop,Reduce(("iteration_scheme_opt",0),0))]]@slrp'a577; val slrp'a575=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a576; val slrp'a574=[[(LCGrkXi,Shift 531),(LCLBrace,Shift 172),(LCLSqBrack,Shift 169)]]@slrp'a575; val slrp'a573=[[(LCGrkGamma,Shift 181),(LCGrkDelta,Shift 524)]]@slrp'a574; val slrp'a572=[[(LCRenames,Shift 577),(LCOrd,Shift 695),(LCPrime,Shift 451), (LCBecomes,Reduce(("primary",3),1)),(LCSemi,Reduce(("primary",3),1)), (LCRRange,Reduce(("primary",3),1)),(LCDigits,Reduce(("primary",3),1)), (LCDelta,Reduce(("primary",3),1)),(LCComma,Reduce(("primary",3),1)), (LCCrd,Reduce(("primary",3),1)),(LCAnd,Reduce(("primary",3),1)), (LCOr,Reduce(("primary",3),1)),(LCXor,Reduce(("primary",3),1)), (LCGreaterEquals,Reduce(("primary",3),1)), (LCGreaterThan,Reduce(("primary",3),1)),(LCLessEquals,Reduce(("primary",3),1)), (LCLessThan,Reduce(("primary",3),1)),(LCNotEquals,Reduce(("primary",3),1)), (LCEquals,Reduce(("primary",3),1)),(LCIn,Reduce(("primary",3),1)), (LCNot,Reduce(("primary",3),1)),(LCDotDot,Reduce(("primary",3),1)), (LCAmpersand,Reduce(("primary",3),1)),(LCMinus,Reduce(("primary",3),1)), (LCPlus,Reduce(("primary",3),1)),(LCRem,Reduce(("primary",3),1)), (LCMod,Reduce(("primary",3),1)),(LCDiv,Reduce(("primary",3),1)), (LCStar,Reduce(("primary",3),1)),(LCStarStar,Reduce(("primary",3),1)), (LCThen,Reduce(("primary",3),1)),(LCIs,Reduce(("primary",3),1)), (LCGoesTo,Reduce(("primary",3),1)),(LCBar,Reduce(("primary",3),1)), (LCTill,Reduce(("primary",3),1)),(LCLoop,Reduce(("primary",3),1)), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a573; val slrp'a571=[[(LCIs,Shift 613),(LCOrd,Shift 568)]]@slrp'a572; val slrp'a570=[[(LCIdentifier,Shift 443)]]@slrp'a571; val slrp'a569=[[(LCIdentifier,Shift 443)]]@slrp'a570; val slrp'a568=[[(LCEnd,Reduce(("component_list",0),1)),(LCIdentifier,Shift 443)]]@slrp'a569; val slrp'a567=[[(LCIn,Shift 476),(LCOut,Shift 284), (LCIdentifier,Reduce(("mode",0),0)),(LCCharacterLiteral,Reduce(("mode",0),0))]]@slrp'a568; val slrp'a566=[[(LCStringLiteral,Shift 279),(LCIdentifier,Shift 543)]]@slrp'a567; val slrp'a565=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a566; val slrp'a564=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a565; val slrp'a563=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a564; val slrp'a562=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a563; val slrp'a561=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a562; val slrp'a560=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a561; val slrp'a559=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a560; val slrp'a558=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a559; val slrp'a557=[[(LCCrd,Shift 602),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a558; val slrp'a556=[[(LCDot,Shift 515),(LCSemi,Shift 364),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104)]]@slrp'a557; val slrp'a555=[[(LCOrd,Shift 695),(LCBecomes,Shift 647), (LCCrd,Reduce(("parameter_specification",0),4)), (LCSemi,Reduce(("parameter_specification",0),4)),(LCPrimedIdentifier,Shift 104), (LCDot,Shift 449)]]@slrp'a556; val slrp'a554=[[(LCOrd,Shift 695),(LCSemi,Shift 295),(LCBecomes,Shift 645), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a555; val slrp'a553=[[(LCOrd,Shift 695),(LCPrime,Shift 451), (LCBecomes,Reduce(("primary",3),1)),(LCSemi,Reduce(("primary",3),1)), (LCRRange,Reduce(("primary",3),1)),(LCDigits,Reduce(("primary",3),1)), (LCDelta,Reduce(("primary",3),1)),(LCComma,Reduce(("primary",3),1)), (LCCrd,Reduce(("primary",3),1)),(LCAnd,Reduce(("primary",3),1)), (LCOr,Reduce(("primary",3),1)),(LCXor,Reduce(("primary",3),1)), (LCGreaterEquals,Reduce(("primary",3),1)), (LCGreaterThan,Reduce(("primary",3),1)),(LCLessEquals,Reduce(("primary",3),1)), (LCLessThan,Reduce(("primary",3),1)),(LCNotEquals,Reduce(("primary",3),1)), (LCEquals,Reduce(("primary",3),1)),(LCIn,Reduce(("primary",3),1)), (LCNot,Reduce(("primary",3),1)),(LCDotDot,Reduce(("primary",3),1)), (LCAmpersand,Reduce(("primary",3),1)),(LCMinus,Reduce(("primary",3),1)), (LCPlus,Reduce(("primary",3),1)),(LCRem,Reduce(("primary",3),1)), (LCMod,Reduce(("primary",3),1)),(LCDiv,Reduce(("primary",3),1)), (LCStar,Reduce(("primary",3),1)),(LCStarStar,Reduce(("primary",3),1)), (LCThen,Reduce(("primary",3),1)),(LCIs,Reduce(("primary",3),1)), (LCGoesTo,Reduce(("primary",3),1)),(LCBar,Reduce(("primary",3),1)), (LCTill,Reduce(("primary",3),1)),(LCLoop,Reduce(("primary",3),1)), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a554; val slrp'a552=[[(LCIdentifier,Shift 570)]]@slrp'a553; val slrp'a551=[[(LCIdentifier,Shift 443)]]@slrp'a552; val slrp'a550=[[(LCColon,Shift 672)]]@slrp'a551; val slrp'a549=[[(LCAnnotation,Shift 559),(LCEos,Reduce(("annotation_list",0),0)) ,(LCSemi,Reduce(("annotation_list",0),0)),(LCIs,Reduce(("annotation_list",0),0)) ,(LCRenames,Reduce(("annotation_list",0),0)), (LCPackage,Reduce(("annotation_list",0),0)), (LCProcedure,Reduce(("annotation_list",0),0)), (LCFunction,Reduce(("annotation_list",0),0)), (LCSeparate,Reduce(("annotation_list",0),0)),(LCLChevron,Shift 462)]]@slrp'a550; val slrp'a548=[[(LCPragma,Shift 481),(LCPackage,Reduce(("pragma_list",0),0)), (LCProcedure,Reduce(("pragma_list",0),0)), (LCFunction,Reduce(("pragma_list",0),0)), (LCSeparate,Reduce(("pragma_list",0),0)), (LCReferences,Reduce(("pragma_list",0),0)), (LCAnnotation,Reduce(("pragma_list",0),0)), (LCLChevron,Reduce(("pragma_list",0),0)),(LCWith,Reduce(("pragma_list",0),0)), (LCUse,Reduce(("pragma_list",0),0))]]@slrp'a549; val slrp'a547=[[(LCPragma,Shift 481),(LCPackage,Reduce(("pragma_list",0),0)), (LCProcedure,Reduce(("pragma_list",0),0)), (LCFunction,Reduce(("pragma_list",0),0)), (LCSeparate,Reduce(("pragma_list",0),0)), (LCReferences,Reduce(("pragma_list",0),0)), (LCAnnotation,Reduce(("pragma_list",0),0)), (LCLChevron,Reduce(("pragma_list",0),0)),(LCWith,Reduce(("pragma_list",0),0)), (LCUse,Reduce(("pragma_list",0),0))]]@slrp'a548; val slrp'a546=[[(LCPragma,Shift 481),(LCPackage,Reduce(("pragma_list",0),0)), (LCProcedure,Reduce(("pragma_list",0),0)), (LCFunction,Reduce(("pragma_list",0),0)), (LCSeparate,Reduce(("pragma_list",0),0)), (LCReferences,Reduce(("pragma_list",0),0)), (LCAnnotation,Reduce(("pragma_list",0),0)), (LCLChevron,Reduce(("pragma_list",0),0)),(LCWith,Reduce(("pragma_list",0),0)), (LCUse,Reduce(("pragma_list",0),0))]]@slrp'a547; val slrp'a545=[[(LCUsing,Shift 619),(LCLChevron,Reduce(("using_list",0),1)), (LCFunction,Reduce(("using_list",0),1)),(LCPackage,Reduce(("using_list",0),1)), (LCIdentifier,Reduce(("using_list",0),1)), (LCAnnotation,Reduce(("using_list",0),1)),(LCSubType,Reduce(("using_list",0),1)) ,(LCPragma,Reduce(("using_list",0),1)),(LCProcedure,Reduce(("using_list",0),1)), (LCType,Reduce(("using_list",0),1)),(LCFor,Reduce(("using_list",0),1)), (LCUse,Reduce(("using_list",0),1)),(LCBegin,Reduce(("using_list",0),1))]]@slrp'a546; val slrp'a544=[[(LCOrd,Shift 568),(LCReturn,Shift 582)]]@slrp'a545; val slrp'a543=[[(LCFor,Shift 504),(LCWhile,Shift 653), (LCTill,Reduce(("iteration_scheme_opt",0),0)), (LCLoop,Reduce(("iteration_scheme_opt",0),0))]]@slrp'a544; val slrp'a542=[[(LCWhen,Shift 671),(LCEnd,Reduce(("others_part",0),0))]]@slrp'a543; val slrp'a541=[[(LCAt,Shift 625),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a542; val slrp'a540=[[(LCDot,Shift 514),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104)]]@slrp'a541; val slrp'a539=[[(LCRenames,Shift 580),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a540; val slrp'a538=[[(LCSemi,Shift 360),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a539; val slrp'a537=[[(LCSemi,Shift 357),(LCOrd,Shift 695), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a538; val slrp'a536=[[(LCOrd,Shift 695),(LCCrd,Shift 187), (LCPrimedIdentifier,Shift 104),(LCDot,Shift 449)]]@slrp'a537; val slrp'a535=[[(LCColon,Shift 669)]]@slrp'a536; val slrp'a534=[[(LCBBody,Shift 404),(LCIdentifier,Shift 576)]]@slrp'a535; val slrp'a533=[[(LCIdentifier,Shift 543)]]@slrp'a534; val slrp'a532=[[(LCLBrace,Shift 271),(LCLSqBrack,Shift 268),(LCZ,Shift 471)]]@slrp'a533; val slrp'a531=[[(LCIdentifier,Shift 600)]]@slrp'a532; val slrp'a530=[[(LCSemi,Shift 410),(LCIs,Shift 709), (LCRenames,Reduce(("subprogram_specification",1),1))]]@slrp'a531; val slrp'a529=[[(LCSemi,Shift 409),(LCIs,Shift 708), (LCRenames,Reduce(("subprogram_specification",0),1))]]@slrp'a530; val slrp'a528=[[(LCIdentifier,Shift 229),(LCSemi,Reduce(("name_opt",0),0)), (LCWhen,Reduce(("name_opt",0),0))]]@slrp'a529; val slrp'a527=[[(LCWhen,Shift 667)]]@slrp'a528; val slrp'a526=[[(LCEos,Reduce(("k_slot",0),3)), (LCLChevron,Reduce(("k_slot",0),3)),(LCFunction,Reduce(("k_slot",0),3)), (LCPackage,Reduce(("k_slot",0),3)),(LCIdentifier,Reduce(("k_slot",0),3)), (LCAnnotation,Reduce(("k_slot",0),3)),(LCSubType,Reduce(("k_slot",0),3)), (LCPragma,Reduce(("k_slot",0),3)),(LCProcedure,Reduce(("k_slot",0),3)), (LCType,Reduce(("k_slot",0),3)),(LCFor,Reduce(("k_slot",0),3)), (LCUse,Reduce(("k_slot",0),3)),(LCCon,Reduce(("k_slot",0),3)), (LCGrkGamma,Reduce(("k_slot",0),3)),(LCGrkDelta,Reduce(("k_slot",0),3)), (LCNull,Reduce(("k_slot",0),3)),(LCExit,Reduce(("k_slot",0),3)), (LCReturn,Reduce(("k_slot",0),3)),(LCIf,Reduce(("k_slot",0),3)), (LCCase,Reduce(("k_slot",0),3)),(LCCharacterLiteral,Reduce(("k_slot",0),3)), (LCTill,Reduce(("k_slot",0),3)),(LCLoop,Reduce(("k_slot",0),3)), (LCWhile,Reduce(("k_slot",0),3)),(LCSemi,Reduce(("k_slot",0),3)), (LCEnd,Reduce(("k_slot",0),3)),(LCPrivate,Reduce(("k_slot",0),3)), (LCAuxiliary,Reduce(("k_slot",0),3)),(LCBegin,Reduce(("k_slot",0),3)), (LCElsIf,Reduce(("k_slot",0),3)),(LCElse,Reduce(("k_slot",0),3)), (LCWhen,Reduce(("k_slot",0),3)),(LCIs,Reduce(("k_slot",0),3)), (LCRenames,Reduce(("k_slot",0),3)),(LCSeparate,Reduce(("k_slot",0),3)), (LCOrd,Shift 581)]]@slrp'a527; val slrp'a525=[[(LCLBrace,Shift 178),(LCLSqBrack,Shift 175),(LCZ,Shift 461)]]@slrp'a526; val slrp'a524=[[(LCOrd,Shift 581),(LCEos,Reduce(("statement",3),4)), (LCAnnotation,Reduce(("statement",3),4)),(LCCon,Reduce(("statement",3),4)), (LCLChevron,Reduce(("statement",3),4)),(LCGrkGamma,Reduce(("statement",3),4)), (LCGrkDelta,Reduce(("statement",3),4)),(LCPragma,Reduce(("statement",3),4)), (LCNull,Reduce(("statement",3),4)),(LCExit,Reduce(("statement",3),4)), (LCReturn,Reduce(("statement",3),4)),(LCIf,Reduce(("statement",3),4)), (LCCase,Reduce(("statement",3),4)),(LCIdentifier,Reduce(("statement",3),4)), (LCCharacterLiteral,Reduce(("statement",3),4)), (LCTill,Reduce(("statement",3),4)),(LCLoop,Reduce(("statement",3),4)), (LCFor,Reduce(("statement",3),4)),(LCWhile,Reduce(("statement",3),4)), (LCElsIf,Reduce(("statement",3),4)),(LCElse,Reduce(("statement",3),4)), (LCEnd,Reduce(("statement",3),4)),(LCWhen,Reduce(("statement",3),4))]]@slrp'a525; val slrp'a523=[[(LCOrd,Shift 581),(LCEos,Reduce(("statement",1),1)), (LCAnnotation,Reduce(("statement",1),1)),(LCCon,Reduce(("statement",1),1)), (LCLChevron,Reduce(("statement",1),1)),(LCGrkGamma,Reduce(("statement",1),1)), (LCGrkDelta,Reduce(("statement",1),1)),(LCPragma,Reduce(("statement",1),1)), (LCNull,Reduce(("statement",1),1)),(LCExit,Reduce(("statement",1),1)), (LCReturn,Reduce(("statement",1),1)),(LCIf,Reduce(("statement",1),1)), (LCCase,Reduce(("statement",1),1)),(LCIdentifier,Reduce(("statement",1),1)), (LCCharacterLiteral,Reduce(("statement",1),1)), (LCTill,Reduce(("statement",1),1)),(LCLoop,Reduce(("statement",1),1)), (LCFor,Reduce(("statement",1),1)),(LCWhile,Reduce(("statement",1),1)), (LCElsIf,Reduce(("statement",1),1)),(LCElse,Reduce(("statement",1),1)), (LCEnd,Reduce(("statement",1),1)),(LCWhen,Reduce(("statement",1),1))]]@slrp'a524; val slrp'a522=[[(LCXor,Shift 638),(LCSemi,Reduce(("xor_relation",0),2)), (LCRRange,Reduce(("xor_relation",0),2)),(LCDigits,Reduce(("xor_relation",0),2)), (LCDelta,Reduce(("xor_relation",0),2)),(LCBecomes,Reduce(("xor_relation",0),2)), (LCComma,Reduce(("xor_relation",0),2)),(LCCrd,Reduce(("xor_relation",0),2)), (LCThen,Reduce(("xor_relation",0),2)),(LCIs,Reduce(("xor_relation",0),2)), (LCGoesTo,Reduce(("xor_relation",0),2)),(LCBar,Reduce(("xor_relation",0),2)), (LCTill,Reduce(("xor_relation",0),2)),(LCLoop,Reduce(("xor_relation",0),2))]]@slrp'a523; val slrp'a521=[[(LCOr,Shift 456),(LCSemi,Reduce(("or_else_relation",0),3)), (LCRRange,Reduce(("or_else_relation",0),3)), (LCDigits,Reduce(("or_else_relation",0),3)), (LCDelta,Reduce(("or_else_relation",0),3)), (LCBecomes,Reduce(("or_else_relation",0),3)), (LCComma,Reduce(("or_else_relation",0),3)), (LCCrd,Reduce(("or_else_relation",0),3)), (LCThen,Reduce(("or_else_relation",0),3)), (LCIs,Reduce(("or_else_relation",0),3)), (LCGoesTo,Reduce(("or_else_relation",0),3)), (LCBar,Reduce(("or_else_relation",0),3)), (LCTill,Reduce(("or_else_relation",0),3)), (LCLoop,Reduce(("or_else_relation",0),3))]]@slrp'a522; val slrp'a520=[[(LCOr,Shift 636),(LCSemi,Reduce(("or_relation",0),2)), (LCRRange,Reduce(("or_relation",0),2)),(LCDigits,Reduce(("or_relation",0),2)), (LCDelta,Reduce(("or_relation",0),2)),(LCBecomes,Reduce(("or_relation",0),2)), (LCComma,Reduce(("or_relation",0),2)),(LCCrd,Reduce(("or_relation",0),2)), (LCThen,Reduce(("or_relation",0),2)),(LCIs,Reduce(("or_relation",0),2)), (LCGoesTo,Reduce(("or_relation",0),2)),(LCBar,Reduce(("or_relation",0),2)), (LCTill,Reduce(("or_relation",0),2)),(LCLoop,Reduce(("or_relation",0),2))]]@slrp'a521; val slrp'a519=[[(LCAnd,Shift 455),(LCSemi,Reduce(("and_then_relation",0),3)), (LCRRange,Reduce(("and_then_relation",0),3)), (LCDigits,Reduce(("and_then_relation",0),3)), (LCDelta,Reduce(("and_then_relation",0),3)), (LCBecomes,Reduce(("and_then_relation",0),3)), (LCComma,Reduce(("and_then_relation",0),3)), (LCCrd,Reduce(("and_then_relation",0),3)), (LCThen,Reduce(("and_then_relation",0),3)), (LCIs,Reduce(("and_then_relation",0),3)), (LCGoesTo,Reduce(("and_then_relation",0),3)), (LCBar,Reduce(("and_then_relation",0),3)), (LCTill,Reduce(("and_then_relation",0),3)), (LCLoop,Reduce(("and_then_relation",0),3))]]@slrp'a520; val slrp'a518=[[(LCAnd,Shift 634),(LCSemi,Reduce(("and_relation",0),2)), (LCRRange,Reduce(("and_relation",0),2)),(LCDigits,Reduce(("and_relation",0),2)), (LCDelta,Reduce(("and_relation",0),2)),(LCBecomes,Reduce(("and_relation",0),2)), (LCComma,Reduce(("and_relation",0),2)),(LCCrd,Reduce(("and_relation",0),2)), (LCThen,Reduce(("and_relation",0),2)),(LCIs,Reduce(("and_relation",0),2)), (LCGoesTo,Reduce(("and_relation",0),2)),(LCBar,Reduce(("and_relation",0),2)), (LCTill,Reduce(("and_relation",0),2)),(LCLoop,Reduce(("and_relation",0),2))]]@slrp'a519; val slrp'a517=[[(LCAt,Shift 626),(LCRecord,Shift 508),(LCOrd,Shift 694)]]@slrp'a518; val slrp'a516=[[(LCStringLiteral,Shift 279),(LCIdentifier,Shift 102)]]@slrp'a517; val slrp'a515=[[(LCStringLiteral,Shift 279),(LCIdentifier,Shift 102)]]@slrp'a516; val slrp'a514=[[(LCOrd,Shift 695),(LCPrimedIdentifier,Shift 104), (LCDot,Shift 449)]]@slrp'a515; val slrp'a513=[[(LCUse,Shift 516),(LCOrd,Reduce(("name",0),1)), (LCDot,Reduce(("name",0),1)),(LCPrimedIdentifier,Reduce(("name",0),1)), (LCBecomes,Reduce(("name",0),1)),(LCSemi,Reduce(("name",0),1)), (LCRRange,Reduce(("name",0),1)),(LCDigits,Reduce(("name",0),1)), (LCDelta,Reduce(("name",0),1)),(LCComma,Reduce(("name",0),1)), (LCCrd,Reduce(("name",0),1)),(LCAnd,Reduce(("name",0),1)), (LCOr,Reduce(("name",0),1)),(LCXor,Reduce(("name",0),1)), (LCGreaterEquals,Reduce(("name",0),1)),(LCGreaterThan,Reduce(("name",0),1)), (LCLessEquals,Reduce(("name",0),1)),(LCLessThan,Reduce(("name",0),1)), (LCNotEquals,Reduce(("name",0),1)),(LCEquals,Reduce(("name",0),1)), (LCIn,Reduce(("name",0),1)),(LCNot,Reduce(("name",0),1)), (LCDotDot,Reduce(("name",0),1)),(LCAmpersand,Reduce(("name",0),1)), (LCMinus,Reduce(("name",0),1)),(LCPlus,Reduce(("name",0),1)), (LCRem,Reduce(("name",0),1)),(LCMod,Reduce(("name",0),1)), (LCDiv,Reduce(("name",0),1)),(LCStar,Reduce(("name",0),1)), (LCStarStar,Reduce(("name",0),1)),(LCPrime,Reduce(("name",0),1)), (LCGrkXi,Reduce(("name",0),1)),(LCRenames,Reduce(("name",0),1)), (LCAt,Reduce(("name",0),1)),(LCThen,Reduce(("name",0),1)), (LCIs,Reduce(("name",0),1)),(LCGoesTo,Reduce(("name",0),1)), (LCBar,Reduce(("name",0),1)),(LCTill,Reduce(("name",0),1)), (LCLoop,Reduce(("name",0),1)),(LCAnnotation,Reduce(("name",0),1)), (LCLChevron,Reduce(("name",0),1))]]@slrp'a514; val slrp'a512=[[(LCCrd,Reduce(("argument_association",1),1)), (LCComma,Reduce(("argument_association",1),1)), (LCGoesTo,Reduce(("discrete_range",1),1)),(LCBar,Reduce(("discrete_range",1),1)) ,(LCTill,Reduce(("discrete_range",1),1)),(LCLoop,Reduce(("discrete_range",1),1)) ,(LCRRange,Shift 628)]]@slrp'a513; val slrp'a511=[[(LCComma,Reduce(("expression_list",0),1)), (LCCrd,Reduce(("expression_list",0),1)), (LCGoesTo,Reduce(("discrete_range",1),1)),(LCBar,Reduce(("discrete_range",1),1)) ,(LCTill,Reduce(("discrete_range",1),1)),(LCLoop,Reduce(("discrete_range",1),1)) ,(LCRRange,Shift 628)]]@slrp'a512; val slrp'a510=[[(LCType,Shift 488),(LCIdentifier,Shift 443)]]@slrp'a511; val slrp'a509=[[(LCAt,Shift 426),(LCIdentifier,Reduce(("alignment_opt",0),0)), (LCCharacterLiteral,Reduce(("alignment_opt",0),0))]]@slrp'a510; val slrp'a508=[[(LCRenames,Shift 595)]]@slrp'a509; val slrp'a507=[[(LCRenames,Shift 578),(LCIs,Shift 701)]]@slrp'a508; val slrp'a506=[[(LCBBody,Shift 322),(LCIdentifier,Shift 574)]]@slrp'a507; val slrp'a505=[[(LCIdentifier,Shift 466)]]@slrp'a506; val slrp'a504=[[(LCIdentifier,Shift 229),(LCSemi,Reduce(("name_opt",0),0)), (LCWhen,Reduce(("name_opt",0),0))]]@slrp'a505; val slrp'a503=[[(LCIdentifier,Shift 229),(LCSemi,Reduce(("name_opt",0),0)), (LCWhen,Reduce(("name_opt",0),0))]]@slrp'a504; val slrp'a502=[[(LCIdentifier,Shift 229),(LCSemi,Reduce(("name_opt",0),0)), (LCWhen,Reduce(("name_opt",0),0))]]@slrp'a503; val slrp'a501=[[(LCTill,Shift 467),(LCLoop,Reduce(("till_opt",0),0))]]@slrp'a502; val slrp'a500=[[(LCElsIf,Shift 652),(LCElse,Reduce(("elsif_part",0),0)), (LCEnd,Reduce(("elsif_part",0),0))]]@slrp'a501; val slrp'a499=[[(LCElse,Shift 677),(LCEnd,Reduce(("else_part",0),0))]]@slrp'a500; val slrp'a498=[[(LCElsIf,Shift 652),(LCElse,Reduce(("elsif_part",0),0)), (LCEnd,Reduce(("elsif_part",0),0))]]@slrp'a499; val slrp'a497=[[(LCComma,Shift 649), (LCCrd,Reduce(("positional_association",0),1))]]@slrp'a498; val slrp'a496=[[(LCOrd,Shift 673)]]@slrp'a497; val slrp'a495=[[(LCGoesTo,Reduce(("discrete_range",1),1)), (LCBar,Reduce(("discrete_range",1),1)),(LCTill,Reduce(("discrete_range",1),1)), (LCLoop,Reduce(("discrete_range",1),1)),(LCRRange,Shift 628)]]@slrp'a496; val slrp'a494=[[(LCBecomes,Reduce(("fixed_point_constraint",0),1)), (LCSemi,Reduce(("fixed_point_constraint",0),1)), (LCCrd,Reduce(("fixed_point_constraint",0),1)), (LCComma,Reduce(("fixed_point_constraint",0),1)),(LCRRange,Shift 628)]]@slrp'a495; val slrp'a493=[[(LCBecomes,Reduce(("floating_point_constraint",0),1)), (LCSemi,Reduce(("floating_point_constraint",0),1)), (LCCrd,Reduce(("floating_point_constraint",0),1)), (LCComma,Reduce(("floating_point_constraint",0),1)),(LCRRange,Shift 628)]]@slrp'a494; val slrp'a492=[[(LCIs,Shift 614)]]@slrp'a493; val slrp'a491=[[(LCIdentifier,Shift 443)]]@slrp'a492; val slrp'a490=[[(LCIdentifier,Shift 443)]]@slrp'a491; val slrp'a489=[[(LCIdentifier,Shift 443)]]@slrp'a490; val slrp'a488=[[(LCIdentifier,Shift 443)]]@slrp'a489; val slrp'a487=[[(LCIdentifier,Shift 443)]]@slrp'a488; val slrp'a486=[[(LCArbitraryAda,Reduce(("any_label",5),1)), (LCImplementedBy,Shift 692),(LCRefinedBy,Shift 690)]]@slrp'a487; val slrp'a485=[[(LCOrd,Shift 585)]]@slrp'a486; val slrp'a484=[[(LCComma,Shift 688),(LCCrd,Reduce(("arg_ass_list",0),1))]]@slrp'a485; val slrp'a483=[[(LCOrd,Shift 687),(LCSemi,Shift 389)]]@slrp'a484; val slrp'a482=[[(LCIdentifier,Shift 482)]]@slrp'a483; val slrp'a481=[[(LCBegin,Shift 685), (LCEnd,Reduce(("package_implementation",0),1))]]@slrp'a482; val slrp'a480=[[(LCPrivate,Shift 697),(LCEnd,Shift 304)]]@slrp'a481; val slrp'a479=[[(LCIs,Shift 701)]]@slrp'a480; val slrp'a478=[[(LCComma,Shift 666), (LCCrd,Reduce(("positional_parameter_association",0),1))]]@slrp'a479; val slrp'a477=[[(LCOut,Shift 285),(LCIdentifier,Reduce(("mode",1),1)), (LCCharacterLiteral,Reduce(("mode",1),1))]]@slrp'a478; val slrp'a476=[[(LCColon,Shift 566)]]@slrp'a477; val slrp'a475=[[(LCSemi,Shift 569),(LCCrd,Reduce(("parlist",0),1))]]@slrp'a476; val slrp'a474=[[(LCOrd,Shift 568)]]@slrp'a475; val slrp'a473=[[(LCReturn,Shift 583)]]@slrp'a474; val slrp'a472=[[(LCLBrace,Shift 265),(LCLSqBrack,Shift 262)]]@slrp'a473; val slrp'a471=[[(LCRenames,Reduce(("subprogram_specification",1),1)), (LCSemi,Shift 253)]]@slrp'a472; val slrp'a470=[[(LCRenames,Reduce(("subprogram_specification",0),1)), (LCSemi,Shift 252)]]@slrp'a471; val slrp'a469=[[(LCWhen,Shift 654),(LCSemi,Shift 246)]]@slrp'a470; val slrp'a468=[[(LCLStrachey,Shift 236)]]@slrp'a469; val slrp'a467=[[(LCIn,Shift 663)]]@slrp'a468; val slrp'a466=[[(LCLoop,Shift 680)]]@slrp'a467; val slrp'a465=[[(LCBar,Shift 668),(LCGoesTo,Reduce(("case_choice_list",0),1))]]@slrp'a466; val slrp'a464=[[(LCRChevron,Shift 525)]]@slrp'a465; val slrp'a463=[[(LCKSlot,Shift 463)]]@slrp'a464; val slrp'a462=[[(LCLBrace,Shift 172),(LCLSqBrack,Shift 169)]]@slrp'a463; val slrp'a461=[[(LCFatDot,Shift 572)]]@slrp'a462; val slrp'a460=[[(LCZ,Shift 460)]]@slrp'a461; val slrp'a459=[[(LCStarStar,Shift 608),(LCBecomes,Reduce(("factor",0),1)), (LCSemi,Reduce(("factor",0),1)),(LCRRange,Reduce(("factor",0),1)), (LCDigits,Reduce(("factor",0),1)),(LCDelta,Reduce(("factor",0),1)), (LCComma,Reduce(("factor",0),1)),(LCCrd,Reduce(("factor",0),1)), (LCAnd,Reduce(("factor",0),1)),(LCOr,Reduce(("factor",0),1)), (LCXor,Reduce(("factor",0),1)),(LCGreaterEquals,Reduce(("factor",0),1)), (LCGreaterThan,Reduce(("factor",0),1)),(LCLessEquals,Reduce(("factor",0),1)), (LCLessThan,Reduce(("factor",0),1)),(LCNotEquals,Reduce(("factor",0),1)), (LCEquals,Reduce(("factor",0),1)),(LCIn,Reduce(("factor",0),1)), (LCNot,Reduce(("factor",0),1)),(LCDotDot,Reduce(("factor",0),1)), (LCAmpersand,Reduce(("factor",0),1)),(LCMinus,Reduce(("factor",0),1)), (LCPlus,Reduce(("factor",0),1)),(LCRem,Reduce(("factor",0),1)), (LCMod,Reduce(("factor",0),1)),(LCDiv,Reduce(("factor",0),1)), (LCStar,Reduce(("factor",0),1)),(LCThen,Reduce(("factor",0),1)), (LCIs,Reduce(("factor",0),1)),(LCGoesTo,Reduce(("factor",0),1)), (LCBar,Reduce(("factor",0),1)),(LCTill,Reduce(("factor",0),1)), (LCLoop,Reduce(("factor",0),1))]]@slrp'a460; val slrp'a458=[[(LCDotDot,Shift 622),(LCBecomes,Reduce(("sr_expression",0),1)), (LCSemi,Reduce(("sr_expression",0),1)),(LCRRange,Reduce(("sr_expression",0),1)), (LCDigits,Reduce(("sr_expression",0),1)),(LCDelta,Reduce(("sr_expression",0),1)) ,(LCComma,Reduce(("sr_expression",0),1)),(LCCrd,Reduce(("sr_expression",0),1)), (LCAnd,Reduce(("sr_expression",0),1)),(LCOr,Reduce(("sr_expression",0),1)), (LCXor,Reduce(("sr_expression",0),1)), (LCGreaterEquals,Reduce(("sr_expression",0),1)), (LCGreaterThan,Reduce(("sr_expression",0),1)), (LCLessEquals,Reduce(("sr_expression",0),1)), (LCLessThan,Reduce(("sr_expression",0),1)), (LCNotEquals,Reduce(("sr_expression",0),1)), (LCEquals,Reduce(("sr_expression",0),1)),(LCIn,Reduce(("sr_expression",0),1)), (LCNot,Reduce(("sr_expression",0),1)),(LCThen,Reduce(("sr_expression",0),1)), (LCIs,Reduce(("sr_expression",0),1)),(LCGoesTo,Reduce(("sr_expression",0),1)), (LCBar,Reduce(("sr_expression",0),1)),(LCTill,Reduce(("sr_expression",0),1)), (LCLoop,Reduce(("sr_expression",0),1))]]@slrp'a459; val slrp'a457=[[(LCElse,Shift 637)]]@slrp'a458; val slrp'a456=[[(LCThen,Shift 635)]]@slrp'a457; val slrp'a455=[[(LCBar,Shift 670), (LCGoesTo,Reduce(("aggregate_choice_list",1),1))]]@slrp'a456; val slrp'a454=[[(LCComma,Shift 674),(LCCrd,Reduce(("named_association",0),3))]]@slrp'a455; val slrp'a453=[[(LCGoesTo,Shift 650)]]@slrp'a454; val slrp'a452=[[(LCOrd,Shift 694)]]@slrp'a453; val slrp'a451=[[(LCBecomes,Reduce(("primary",1),1)), (LCSemi,Reduce(("primary",1),1)),(LCRRange,Reduce(("primary",1),1)), (LCDigits,Reduce(("primary",1),1)),(LCDelta,Reduce(("primary",1),1)), (LCComma,Reduce(("primary",1),1)),(LCCrd,Reduce(("primary",1),1)), (LCAnd,Reduce(("primary",1),1)),(LCOr,Reduce(("primary",1),1)), (LCXor,Reduce(("primary",1),1)),(LCGreaterEquals,Reduce(("primary",1),1)), (LCGreaterThan,Reduce(("primary",1),1)),(LCLessEquals,Reduce(("primary",1),1)), (LCLessThan,Reduce(("primary",1),1)),(LCNotEquals,Reduce(("primary",1),1)), (LCEquals,Reduce(("primary",1),1)),(LCIn,Reduce(("primary",1),1)), (LCNot,Reduce(("primary",1),1)),(LCDotDot,Reduce(("primary",1),1)), (LCAmpersand,Reduce(("primary",1),1)),(LCMinus,Reduce(("primary",1),1)), (LCPlus,Reduce(("primary",1),1)),(LCRem,Reduce(("primary",1),1)), (LCMod,Reduce(("primary",1),1)),(LCDiv,Reduce(("primary",1),1)), (LCStar,Reduce(("primary",1),1)),(LCStarStar,Reduce(("primary",1),1)), (LCThen,Reduce(("primary",1),1)),(LCIs,Reduce(("primary",1),1)), (LCGoesTo,Reduce(("primary",1),1)),(LCBar,Reduce(("primary",1),1)), (LCTill,Reduce(("primary",1),1)),(LCLoop,Reduce(("primary",1),1)), (LCPrimedIdentifier,Shift 106)]]@slrp'a452; val slrp'a450=[[(LCIdentifier,Shift 102)]]@slrp'a451; val slrp'a449=[[(LCUse,Shift 623),(LCOrd,Reduce(("name",3),1)), (LCDot,Reduce(("name",3),1)),(LCPrimedIdentifier,Reduce(("name",3),1)), (LCBecomes,Reduce(("name",3),1)),(LCSemi,Reduce(("name",3),1)), (LCRRange,Reduce(("name",3),1)),(LCDigits,Reduce(("name",3),1)), (LCDelta,Reduce(("name",3),1)),(LCComma,Reduce(("name",3),1)), (LCCrd,Reduce(("name",3),1)),(LCAnd,Reduce(("name",3),1)), (LCOr,Reduce(("name",3),1)),(LCXor,Reduce(("name",3),1)), (LCGreaterEquals,Reduce(("name",3),1)),(LCGreaterThan,Reduce(("name",3),1)), (LCLessEquals,Reduce(("name",3),1)),(LCLessThan,Reduce(("name",3),1)), (LCNotEquals,Reduce(("name",3),1)),(LCEquals,Reduce(("name",3),1)), (LCIn,Reduce(("name",3),1)),(LCNot,Reduce(("name",3),1)), (LCDotDot,Reduce(("name",3),1)),(LCAmpersand,Reduce(("name",3),1)), (LCMinus,Reduce(("name",3),1)),(LCPlus,Reduce(("name",3),1)), (LCRem,Reduce(("name",3),1)),(LCMod,Reduce(("name",3),1)), (LCDiv,Reduce(("name",3),1)),(LCStar,Reduce(("name",3),1)), (LCStarStar,Reduce(("name",3),1)),(LCPrime,Reduce(("name",3),1)), (LCGrkXi,Reduce(("name",3),1)),(LCRenames,Reduce(("name",3),1)), (LCAt,Reduce(("name",3),1)),(LCThen,Reduce(("name",3),1)), (LCIs,Reduce(("name",3),1)),(LCGoesTo,Reduce(("name",3),1)), (LCBar,Reduce(("name",3),1)),(LCTill,Reduce(("name",3),1)), (LCLoop,Reduce(("name",3),1)),(LCAnnotation,Reduce(("name",3),1)), (LCLChevron,Reduce(("name",3),1))]]@slrp'a450; val slrp'a448=[[(LCColon,Shift 228),(LCOrd,Reduce(("name",0),1)), (LCDot,Reduce(("name",0),1)),(LCPrimedIdentifier,Reduce(("name",0),1)), (LCBecomes,Reduce(("name",0),1)),(LCSemi,Reduce(("name",0),1)), (LCRRange,Reduce(("name",0),1)),(LCDigits,Reduce(("name",0),1)), (LCDelta,Reduce(("name",0),1)),(LCComma,Reduce(("name",0),1)), (LCCrd,Reduce(("name",0),1)),(LCAnd,Reduce(("name",0),1)), (LCOr,Reduce(("name",0),1)),(LCXor,Reduce(("name",0),1)), (LCGreaterEquals,Reduce(("name",0),1)),(LCGreaterThan,Reduce(("name",0),1)), (LCLessEquals,Reduce(("name",0),1)),(LCLessThan,Reduce(("name",0),1)), (LCNotEquals,Reduce(("name",0),1)),(LCEquals,Reduce(("name",0),1)), (LCIn,Reduce(("name",0),1)),(LCNot,Reduce(("name",0),1)), (LCDotDot,Reduce(("name",0),1)),(LCAmpersand,Reduce(("name",0),1)), (LCMinus,Reduce(("name",0),1)),(LCPlus,Reduce(("name",0),1)), (LCRem,Reduce(("name",0),1)),(LCMod,Reduce(("name",0),1)), (LCDiv,Reduce(("name",0),1)),(LCStar,Reduce(("name",0),1)), (LCStarStar,Reduce(("name",0),1)),(LCPrime,Reduce(("name",0),1)), (LCGrkXi,Reduce(("name",0),1)),(LCRenames,Reduce(("name",0),1)), (LCAt,Reduce(("name",0),1)),(LCThen,Reduce(("name",0),1)), (LCIs,Reduce(("name",0),1)),(LCGoesTo,Reduce(("name",0),1)), (LCBar,Reduce(("name",0),1)),(LCTill,Reduce(("name",0),1)), (LCLoop,Reduce(("name",0),1)),(LCAnnotation,Reduce(("name",0),1)), (LCLChevron,Reduce(("name",0),1))]]@slrp'a449; val slrp'a447=[[(LCComma,Shift 665),(LCCrd,Reduce(("discrete_range_list",0),1))]]@slrp'a448; val slrp'a446=[[(LCComma,Shift 662), (LCCrd,Reduce(("index_subtype_definition_list",0),1))]]@slrp'a447; val slrp'a445=[[(LCGoesTo,Reduce(("discrete_range",0),2)), (LCBar,Reduce(("discrete_range",0),2)),(LCTill,Reduce(("discrete_range",0),2)), (LCLoop,Reduce(("discrete_range",0),2)),(LCBecomes,Reduce(("constraint",0),1)), (LCSemi,Reduce(("constraint",0),1)),(LCCrd,Reduce(("constraint",0),1)), (LCComma,Reduce(("constraint",0),1))]]@slrp'a446; val slrp'a444=[[(LCComma,Shift 486),(LCColon,Reduce(("identifier_list",0),1)), (LCCrd,Reduce(("identifier_list",0),1)),(LCSemi,Reduce(("identifier_list",0),1)) ]]@slrp'a445; val slrp'a443=[[(LCBecomes,Shift 643),(LCSemi,Shift 29)]]@slrp'a444; val slrp'a442=[[(LCSemi,Shift 350),(LCBecomes,Shift 641)]]@slrp'a443; val slrp'a441=[[(LCArbitraryAda,Reduce(("any_label",6),1)), (LCReplacedBy,Shift 548)]]@slrp'a442; val slrp'a440=[[(LCArbitraryAda,Reduce(("any_label",4),1)), (LCImplementedBy,Shift 689)]]@slrp'a441; val slrp'a439=[[(LCArbitraryAda,Reduce(("any_label",3),1)), (LCReplacedBy,Shift 702)]]@slrp'a440; val slrp'a438=[[(LCArbitraryAda,Reduce(("any_label",2),1)), (LCReplacedBy,Shift 699)]]@slrp'a439; val slrp'a437=[[(LCArbitraryAda,Reduce(("any_label",1),1)), (LCReplacedBy,Shift 696)]]@slrp'a438; val slrp'a436=[[(LCArbitraryAda,Reduce(("any_label",0),1)), (LCReplacedBy,Shift 611)]]@slrp'a437; val slrp'a435=[[(LCEos,Reduce(("address_clause",0),6)), (LCLChevron,Reduce(("address_clause",0),6)), (LCFunction,Reduce(("address_clause",0),6)), (LCPackage,Reduce(("address_clause",0),6)), (LCIdentifier,Reduce(("address_clause",0),6)), (LCAnnotation,Reduce(("address_clause",0),6)), (LCSubType,Reduce(("address_clause",0),6)), (LCPragma,Reduce(("address_clause",0),6)), (LCProcedure,Reduce(("address_clause",0),6)), (LCType,Reduce(("address_clause",0),6)),(LCFor,Reduce(("address_clause",0),6)), (LCUse,Reduce(("address_clause",0),6)),(LCEnd,Reduce(("address_clause",0),6)), (LCPrivate,Reduce(("address_clause",0),6)), (LCAuxiliary,Reduce(("address_clause",0),6)), (LCBegin,Reduce(("address_clause",0),6))]]@slrp'a436; val slrp'a434=[[(LCSemi,Shift 434)]]@slrp'a435; val slrp'a433=[[(LCEnd,Reduce(("component_clause",0),6)), (LCIdentifier,Reduce(("component_clause",0),6)), (LCCharacterLiteral,Reduce(("component_clause",0),6))]]@slrp'a434; val slrp'a432=[[(LCSemi,Shift 432)]]@slrp'a433; val slrp'a431=[[(LCRRange,Shift 632)]]@slrp'a432; val slrp'a430=[[(LCEnd,Reduce(("component_pack",1),2))]]@slrp'a431; val slrp'a429=[[(LCIdentifier,Reduce(("alignment_opt",1),4)), (LCCharacterLiteral,Reduce(("alignment_opt",1),4))]]@slrp'a430; val slrp'a428=[[(LCSemi,Shift 428)]]@slrp'a429; val slrp'a427=[[(LCMod,Shift 624)]]@slrp'a428; val slrp'a426=[[(LCEos,Reduce(("record_representation_clause",0),9)), (LCLChevron,Reduce(("record_representation_clause",0),9)), (LCFunction,Reduce(("record_representation_clause",0),9)), (LCPackage,Reduce(("record_representation_clause",0),9)), (LCIdentifier,Reduce(("record_representation_clause",0),9)), (LCAnnotation,Reduce(("record_representation_clause",0),9)), (LCSubType,Reduce(("record_representation_clause",0),9)), (LCPragma,Reduce(("record_representation_clause",0),9)), (LCProcedure,Reduce(("record_representation_clause",0),9)), (LCType,Reduce(("record_representation_clause",0),9)), (LCFor,Reduce(("record_representation_clause",0),9)), (LCUse,Reduce(("record_representation_clause",0),9)), (LCEnd,Reduce(("record_representation_clause",0),9)), (LCPrivate,Reduce(("record_representation_clause",0),9)), (LCAuxiliary,Reduce(("record_representation_clause",0),9)), (LCBegin,Reduce(("record_representation_clause",0),9))]]@slrp'a427; val slrp'a425=[[(LCSemi,Shift 425)]]@slrp'a426; val slrp'a424=[[(LCRecord,Shift 424)]]@slrp'a425; val slrp'a423=[[(LCEnd,Shift 423)]]@slrp'a424; val slrp'a422=[[(LCEos,Reduce(("enumeration_representation_clause",0),5)), (LCLChevron,Reduce(("enumeration_representation_clause",0),5)), (LCFunction,Reduce(("enumeration_representation_clause",0),5)), (LCPackage,Reduce(("enumeration_representation_clause",0),5)), (LCIdentifier,Reduce(("enumeration_representation_clause",0),5)), (LCAnnotation,Reduce(("enumeration_representation_clause",0),5)), (LCSubType,Reduce(("enumeration_representation_clause",0),5)), (LCPragma,Reduce(("enumeration_representation_clause",0),5)), (LCProcedure,Reduce(("enumeration_representation_clause",0),5)), (LCType,Reduce(("enumeration_representation_clause",0),5)), (LCFor,Reduce(("enumeration_representation_clause",0),5)), (LCUse,Reduce(("enumeration_representation_clause",0),5)), (LCEnd,Reduce(("enumeration_representation_clause",0),5)), (LCPrivate,Reduce(("enumeration_representation_clause",0),5)), (LCAuxiliary,Reduce(("enumeration_representation_clause",0),5)), (LCBegin,Reduce(("enumeration_representation_clause",0),5))]]@slrp'a423; val slrp'a421=[[(LCSemi,Shift 421)]]@slrp'a422; val slrp'a420=[[(LCEos,Reduce(("length_clause",0),5)), (LCLChevron,Reduce(("length_clause",0),5)), (LCFunction,Reduce(("length_clause",0),5)), (LCPackage,Reduce(("length_clause",0),5)), (LCIdentifier,Reduce(("length_clause",0),5)), (LCAnnotation,Reduce(("length_clause",0),5)), (LCSubType,Reduce(("length_clause",0),5)), (LCPragma,Reduce(("length_clause",0),5)), (LCProcedure,Reduce(("length_clause",0),5)), (LCType,Reduce(("length_clause",0),5)),(LCFor,Reduce(("length_clause",0),5)), (LCUse,Reduce(("length_clause",0),5)),(LCEnd,Reduce(("length_clause",0),5)), (LCPrivate,Reduce(("length_clause",0),5)), (LCAuxiliary,Reduce(("length_clause",0),5)), (LCBegin,Reduce(("length_clause",0),5))]]@slrp'a421; val slrp'a419=[[(LCSemi,Shift 419)]]@slrp'a420; val slrp'a418=[[(LCEos,Reduce(("type_representation_clause",2),1)), (LCLChevron,Reduce(("type_representation_clause",2),1)), (LCFunction,Reduce(("type_representation_clause",2),1)), (LCPackage,Reduce(("type_representation_clause",2),1)), (LCIdentifier,Reduce(("type_representation_clause",2),1)), (LCAnnotation,Reduce(("type_representation_clause",2),1)), (LCSubType,Reduce(("type_representation_clause",2),1)), (LCPragma,Reduce(("type_representation_clause",2),1)), (LCProcedure,Reduce(("type_representation_clause",2),1)), (LCType,Reduce(("type_representation_clause",2),1)), (LCFor,Reduce(("type_representation_clause",2),1)), (LCUse,Reduce(("type_representation_clause",2),1)), (LCEnd,Reduce(("type_representation_clause",2),1)), (LCPrivate,Reduce(("type_representation_clause",2),1)), (LCAuxiliary,Reduce(("type_representation_clause",2),1)), (LCBegin,Reduce(("type_representation_clause",2),1))]]@slrp'a419; val slrp'a417=[[(LCEos,Reduce(("type_representation_clause",1),1)), (LCLChevron,Reduce(("type_representation_clause",1),1)), (LCFunction,Reduce(("type_representation_clause",1),1)), (LCPackage,Reduce(("type_representation_clause",1),1)), (LCIdentifier,Reduce(("type_representation_clause",1),1)), (LCAnnotation,Reduce(("type_representation_clause",1),1)), (LCSubType,Reduce(("type_representation_clause",1),1)), (LCPragma,Reduce(("type_representation_clause",1),1)), (LCProcedure,Reduce(("type_representation_clause",1),1)), (LCType,Reduce(("type_representation_clause",1),1)), (LCFor,Reduce(("type_representation_clause",1),1)), (LCUse,Reduce(("type_representation_clause",1),1)), (LCEnd,Reduce(("type_representation_clause",1),1)), (LCPrivate,Reduce(("type_representation_clause",1),1)), (LCAuxiliary,Reduce(("type_representation_clause",1),1)), (LCBegin,Reduce(("type_representation_clause",1),1))]]@slrp'a418; val slrp'a416=[[(LCEos,Reduce(("type_representation_clause",0),1)), (LCLChevron,Reduce(("type_representation_clause",0),1)), (LCFunction,Reduce(("type_representation_clause",0),1)), (LCPackage,Reduce(("type_representation_clause",0),1)), (LCIdentifier,Reduce(("type_representation_clause",0),1)), (LCAnnotation,Reduce(("type_representation_clause",0),1)), (LCSubType,Reduce(("type_representation_clause",0),1)), (LCPragma,Reduce(("type_representation_clause",0),1)), (LCProcedure,Reduce(("type_representation_clause",0),1)), (LCType,Reduce(("type_representation_clause",0),1)), (LCFor,Reduce(("type_representation_clause",0),1)), (LCUse,Reduce(("type_representation_clause",0),1)), (LCEnd,Reduce(("type_representation_clause",0),1)), (LCPrivate,Reduce(("type_representation_clause",0),1)), (LCAuxiliary,Reduce(("type_representation_clause",0),1)), (LCBegin,Reduce(("type_representation_clause",0),1))]]@slrp'a417; val slrp'a415=[[(LCEos,Reduce(("representation_clause",1),1)), (LCLChevron,Reduce(("representation_clause",1),1)), (LCFunction,Reduce(("representation_clause",1),1)), (LCPackage,Reduce(("representation_clause",1),1)), (LCIdentifier,Reduce(("representation_clause",1),1)), (LCAnnotation,Reduce(("representation_clause",1),1)), (LCSubType,Reduce(("representation_clause",1),1)), (LCPragma,Reduce(("representation_clause",1),1)), (LCProcedure,Reduce(("representation_clause",1),1)), (LCType,Reduce(("representation_clause",1),1)), (LCFor,Reduce(("representation_clause",1),1)), (LCUse,Reduce(("representation_clause",1),1)), (LCEnd,Reduce(("representation_clause",1),1)), (LCPrivate,Reduce(("representation_clause",1),1)), (LCAuxiliary,Reduce(("representation_clause",1),1)), (LCBegin,Reduce(("representation_clause",1),1))]]@slrp'a416; val slrp'a414=[[(LCEos,Reduce(("representation_clause",0),1)), (LCLChevron,Reduce(("representation_clause",0),1)), (LCFunction,Reduce(("representation_clause",0),1)), (LCPackage,Reduce(("representation_clause",0),1)), (LCIdentifier,Reduce(("representation_clause",0),1)), (LCAnnotation,Reduce(("representation_clause",0),1)), (LCSubType,Reduce(("representation_clause",0),1)), (LCPragma,Reduce(("representation_clause",0),1)), (LCProcedure,Reduce(("representation_clause",0),1)), (LCType,Reduce(("representation_clause",0),1)), (LCFor,Reduce(("representation_clause",0),1)), (LCUse,Reduce(("representation_clause",0),1)), (LCEnd,Reduce(("representation_clause",0),1)), (LCPrivate,Reduce(("representation_clause",0),1)), (LCAuxiliary,Reduce(("representation_clause",0),1)), (LCBegin,Reduce(("representation_clause",0),1))]]@slrp'a415; val slrp'a413=[[(LCEos,Reduce(("subunit",1),5)), (LCLChevron,Reduce(("subunit",1),5)),(LCAnnotation,Reduce(("subunit",1),5)), (LCPragma,Reduce(("subunit",1),5)),(LCReferences,Reduce(("subunit",1),5)), (LCPackage,Reduce(("subunit",1),5)),(LCSeparate,Reduce(("subunit",1),5)), (LCWith,Reduce(("subunit",1),5)),(LCUse,Reduce(("subunit",1),5)), (LCProcedure,Reduce(("subunit",1),5)),(LCFunction,Reduce(("subunit",1),5))]]@slrp'a414; val slrp'a412=[[(LCEos,Reduce(("subunit",0),5)), (LCLChevron,Reduce(("subunit",0),5)),(LCAnnotation,Reduce(("subunit",0),5)), (LCPragma,Reduce(("subunit",0),5)),(LCReferences,Reduce(("subunit",0),5)), (LCPackage,Reduce(("subunit",0),5)),(LCSeparate,Reduce(("subunit",0),5)), (LCWith,Reduce(("subunit",0),5)),(LCUse,Reduce(("subunit",0),5)), (LCProcedure,Reduce(("subunit",0),5)),(LCFunction,Reduce(("subunit",0),5))]]@slrp'a413; val slrp'a411=[[(LCEos,Reduce(("body_stub",4),2)), (LCLChevron,Reduce(("body_stub",4),2)),(LCFunction,Reduce(("body_stub",4),2)), (LCPackage,Reduce(("body_stub",4),2)),(LCIdentifier,Reduce(("body_stub",4),2)), (LCAnnotation,Reduce(("body_stub",4),2)),(LCSubType,Reduce(("body_stub",4),2)), (LCPragma,Reduce(("body_stub",4),2)),(LCProcedure,Reduce(("body_stub",4),2)), (LCType,Reduce(("body_stub",4),2)),(LCFor,Reduce(("body_stub",4),2)), (LCUse,Reduce(("body_stub",4),2)),(LCBegin,Reduce(("body_stub",4),2)), (LCEnd,Reduce(("body_stub",4),2))]]@slrp'a412; val slrp'a410=[[(LCEos,Reduce(("body_stub",3),2)), (LCLChevron,Reduce(("body_stub",3),2)),(LCFunction,Reduce(("body_stub",3),2)), (LCPackage,Reduce(("body_stub",3),2)),(LCIdentifier,Reduce(("body_stub",3),2)), (LCAnnotation,Reduce(("body_stub",3),2)),(LCSubType,Reduce(("body_stub",3),2)), (LCPragma,Reduce(("body_stub",3),2)),(LCProcedure,Reduce(("body_stub",3),2)), (LCType,Reduce(("body_stub",3),2)),(LCFor,Reduce(("body_stub",3),2)), (LCUse,Reduce(("body_stub",3),2)),(LCBegin,Reduce(("body_stub",3),2)), (LCEnd,Reduce(("body_stub",3),2))]]@slrp'a411; val slrp'a409=[[(LCEos,Reduce(("body_stub",2),7)), (LCLChevron,Reduce(("body_stub",2),7)),(LCFunction,Reduce(("body_stub",2),7)), (LCPackage,Reduce(("body_stub",2),7)),(LCIdentifier,Reduce(("body_stub",2),7)), (LCAnnotation,Reduce(("body_stub",2),7)),(LCSubType,Reduce(("body_stub",2),7)), (LCPragma,Reduce(("body_stub",2),7)),(LCProcedure,Reduce(("body_stub",2),7)), (LCType,Reduce(("body_stub",2),7)),(LCFor,Reduce(("body_stub",2),7)), (LCUse,Reduce(("body_stub",2),7)),(LCBegin,Reduce(("body_stub",2),7)), (LCEnd,Reduce(("body_stub",2),7))]]@slrp'a410; val slrp'a408=[[(LCSemi,Shift 408)]]@slrp'a409; val slrp'a407=[[(LCSeparate,Shift 407)]]@slrp'a408; val slrp'a406=[[(LCIs,Shift 406)]]@slrp'a407; val slrp'a405=[[(LCIdentifier,Shift 564)]]@slrp'a406; val slrp'a404=[[(LCEos,Reduce(("body_stub",1),4)), (LCLChevron,Reduce(("body_stub",1),4)),(LCFunction,Reduce(("body_stub",1),4)), (LCPackage,Reduce(("body_stub",1),4)),(LCIdentifier,Reduce(("body_stub",1),4)), (LCAnnotation,Reduce(("body_stub",1),4)),(LCSubType,Reduce(("body_stub",1),4)), (LCPragma,Reduce(("body_stub",1),4)),(LCProcedure,Reduce(("body_stub",1),4)), (LCType,Reduce(("body_stub",1),4)),(LCFor,Reduce(("body_stub",1),4)), (LCUse,Reduce(("body_stub",1),4)),(LCBegin,Reduce(("body_stub",1),4)), (LCEnd,Reduce(("body_stub",1),4))]]@slrp'a405; val slrp'a403=[[(LCSemi,Shift 403)]]@slrp'a404; val slrp'a402=[[(LCEos,Reduce(("body_stub",0),4)), (LCLChevron,Reduce(("body_stub",0),4)),(LCFunction,Reduce(("body_stub",0),4)), (LCPackage,Reduce(("body_stub",0),4)),(LCIdentifier,Reduce(("body_stub",0),4)), (LCAnnotation,Reduce(("body_stub",0),4)),(LCSubType,Reduce(("body_stub",0),4)), (LCPragma,Reduce(("body_stub",0),4)),(LCProcedure,Reduce(("body_stub",0),4)), (LCType,Reduce(("body_stub",0),4)),(LCFor,Reduce(("body_stub",0),4)), (LCUse,Reduce(("body_stub",0),4)),(LCBegin,Reduce(("body_stub",0),4)), (LCEnd,Reduce(("body_stub",0),4))]]@slrp'a403; val slrp'a401=[[(LCSemi,Shift 401)]]@slrp'a402; val slrp'a400=[[(LCPackage,Reduce(("references_clause",0),3)), (LCProcedure,Reduce(("references_clause",0),3)), (LCFunction,Reduce(("references_clause",0),3)), (LCSeparate,Reduce(("references_clause",0),3)), (LCReferences,Reduce(("references_clause",0),3)), (LCAnnotation,Reduce(("references_clause",0),3)), (LCLChevron,Reduce(("references_clause",0),3)), (LCWith,Reduce(("references_clause",0),3)), (LCUse,Reduce(("references_clause",0),3))]]@slrp'a401; val slrp'a399=[[(LCSemi,Shift 399)]]@slrp'a400; val slrp'a398=[[(LCPackage,Reduce(("with_clause",0),3)), (LCProcedure,Reduce(("with_clause",0),3)), (LCFunction,Reduce(("with_clause",0),3)), (LCSeparate,Reduce(("with_clause",0),3)),(LCPragma,Reduce(("with_clause",0),3)), (LCReferences,Reduce(("with_clause",0),3)), (LCAnnotation,Reduce(("with_clause",0),3)), (LCLChevron,Reduce(("with_clause",0),3)),(LCWith,Reduce(("with_clause",0),3)), (LCUse,Reduce(("with_clause",0),3))]]@slrp'a399; val slrp'a397=[[(LCSemi,Shift 397)]]@slrp'a398; val slrp'a396=[[(LCCrd,Reduce(("argument_association",0),3)), (LCComma,Reduce(("argument_association",0),3))]]@slrp'a397; val slrp'a395=[[(LCGoesTo,Shift 648)]]@slrp'a396; val slrp'a394=[[(LCCrd,Reduce(("arg_ass_list",1),3))]]@slrp'a395; val slrp'a393=[[(LCEos,Reduce(("pragma",1),6)), (LCAnnotation,Reduce(("pragma",1),6)),(LCCon,Reduce(("pragma",1),6)), (LCLChevron,Reduce(("pragma",1),6)),(LCGrkGamma,Reduce(("pragma",1),6)), (LCGrkDelta,Reduce(("pragma",1),6)),(LCPragma,Reduce(("pragma",1),6)), (LCNull,Reduce(("pragma",1),6)),(LCExit,Reduce(("pragma",1),6)), (LCReturn,Reduce(("pragma",1),6)),(LCIf,Reduce(("pragma",1),6)), (LCCase,Reduce(("pragma",1),6)),(LCIdentifier,Reduce(("pragma",1),6)), (LCCharacterLiteral,Reduce(("pragma",1),6)),(LCTill,Reduce(("pragma",1),6)), (LCLoop,Reduce(("pragma",1),6)),(LCFor,Reduce(("pragma",1),6)), (LCWhile,Reduce(("pragma",1),6)),(LCReferences,Reduce(("pragma",1),6)), (LCPackage,Reduce(("pragma",1),6)),(LCSeparate,Reduce(("pragma",1),6)), (LCWith,Reduce(("pragma",1),6)),(LCUse,Reduce(("pragma",1),6)), (LCProcedure,Reduce(("pragma",1),6)),(LCFunction,Reduce(("pragma",1),6)), (LCSubType,Reduce(("pragma",1),6)),(LCType,Reduce(("pragma",1),6)), (LCImplement,Reduce(("pragma",1),6)),(LCElsIf,Reduce(("pragma",1),6)), (LCElse,Reduce(("pragma",1),6)),(LCEnd,Reduce(("pragma",1),6)), (LCWhen,Reduce(("pragma",1),6)),(LCPrivate,Reduce(("pragma",1),6)), (LCAuxiliary,Reduce(("pragma",1),6)),(LCBegin,Reduce(("pragma",1),6))]]@slrp'a394; val slrp'a392=[[(LCSemi,Shift 392)]]@slrp'a393; val slrp'a391=[[(LCCrd,Shift 391)]]@slrp'a392; val slrp'a390=[[(LCEos,Reduce(("pragma",0),3)), (LCAnnotation,Reduce(("pragma",0),3)),(LCCon,Reduce(("pragma",0),3)), (LCLChevron,Reduce(("pragma",0),3)),(LCGrkGamma,Reduce(("pragma",0),3)), (LCGrkDelta,Reduce(("pragma",0),3)),(LCPragma,Reduce(("pragma",0),3)), (LCNull,Reduce(("pragma",0),3)),(LCExit,Reduce(("pragma",0),3)), (LCReturn,Reduce(("pragma",0),3)),(LCIf,Reduce(("pragma",0),3)), (LCCase,Reduce(("pragma",0),3)),(LCIdentifier,Reduce(("pragma",0),3)), (LCCharacterLiteral,Reduce(("pragma",0),3)),(LCTill,Reduce(("pragma",0),3)), (LCLoop,Reduce(("pragma",0),3)),(LCFor,Reduce(("pragma",0),3)), (LCWhile,Reduce(("pragma",0),3)),(LCReferences,Reduce(("pragma",0),3)), (LCPackage,Reduce(("pragma",0),3)),(LCSeparate,Reduce(("pragma",0),3)), (LCWith,Reduce(("pragma",0),3)),(LCUse,Reduce(("pragma",0),3)), (LCProcedure,Reduce(("pragma",0),3)),(LCFunction,Reduce(("pragma",0),3)), (LCSubType,Reduce(("pragma",0),3)),(LCType,Reduce(("pragma",0),3)), (LCImplement,Reduce(("pragma",0),3)),(LCElsIf,Reduce(("pragma",0),3)), (LCElse,Reduce(("pragma",0),3)),(LCEnd,Reduce(("pragma",0),3)), (LCWhen,Reduce(("pragma",0),3)),(LCPrivate,Reduce(("pragma",0),3)), (LCAuxiliary,Reduce(("pragma",0),3)),(LCBegin,Reduce(("pragma",0),3))]]@slrp'a391; val slrp'a389=[[(LCPackage,Reduce(("pragma_list",1),2)), (LCProcedure,Reduce(("pragma_list",1),2)), (LCFunction,Reduce(("pragma_list",1),2)), (LCSeparate,Reduce(("pragma_list",1),2)), (LCReferences,Reduce(("pragma_list",1),2)), (LCAnnotation,Reduce(("pragma_list",1),2)), (LCLChevron,Reduce(("pragma_list",1),2)),(LCWith,Reduce(("pragma_list",1),2)), (LCUse,Reduce(("pragma_list",1),2))]]@slrp'a390; val slrp'a388=[[(LCPackage,Reduce(("with_or_use_clause",1),1)), (LCProcedure,Reduce(("with_or_use_clause",1),1)), (LCFunction,Reduce(("with_or_use_clause",1),1)), (LCSeparate,Reduce(("with_or_use_clause",1),1)), (LCPragma,Reduce(("with_or_use_clause",1),1)), (LCReferences,Reduce(("with_or_use_clause",1),1)), (LCAnnotation,Reduce(("with_or_use_clause",1),1)), (LCLChevron,Reduce(("with_or_use_clause",1),1)), (LCWith,Reduce(("with_or_use_clause",1),1)), (LCUse,Reduce(("with_or_use_clause",1),1))]]@slrp'a389; val slrp'a387=[[(LCPackage,Reduce(("with_or_use_clause",0),1)), (LCProcedure,Reduce(("with_or_use_clause",0),1)), (LCFunction,Reduce(("with_or_use_clause",0),1)), (LCSeparate,Reduce(("with_or_use_clause",0),1)), (LCPragma,Reduce(("with_or_use_clause",0),1)), (LCReferences,Reduce(("with_or_use_clause",0),1)), (LCAnnotation,Reduce(("with_or_use_clause",0),1)), (LCLChevron,Reduce(("with_or_use_clause",0),1)), (LCWith,Reduce(("with_or_use_clause",0),1)), (LCUse,Reduce(("with_or_use_clause",0),1))]]@slrp'a388; val slrp'a386=[[(LCPackage,Reduce(("annotated_context_clause",2),1)), (LCProcedure,Reduce(("annotated_context_clause",2),1)), (LCFunction,Reduce(("annotated_context_clause",2),1)), (LCSeparate,Reduce(("annotated_context_clause",2),1))]]@slrp'a387; val slrp'a385=[[(LCPackage,Reduce(("annotated_context_clause",1),2)), (LCProcedure,Reduce(("annotated_context_clause",1),2)), (LCFunction,Reduce(("annotated_context_clause",1),2)), (LCSeparate,Reduce(("annotated_context_clause",1),2))]]@slrp'a386; val slrp'a384=[[(LCPackage,Reduce(("annotated_context_clause",0),3)), (LCProcedure,Reduce(("annotated_context_clause",0),3)), (LCFunction,Reduce(("annotated_context_clause",0),3)), (LCSeparate,Reduce(("annotated_context_clause",0),3))]]@slrp'a385; val slrp'a383=[[(LCPackage,Reduce(("context_clause",3),2)), (LCProcedure,Reduce(("context_clause",3),2)), (LCFunction,Reduce(("context_clause",3),2)), (LCSeparate,Reduce(("context_clause",3),2))]]@slrp'a384; val slrp'a382=[[(LCPackage,Reduce(("context_clause",2),2)), (LCProcedure,Reduce(("context_clause",2),2)), (LCFunction,Reduce(("context_clause",2),2)), (LCSeparate,Reduce(("context_clause",2),2))]]@slrp'a383; val slrp'a381=[[(LCPackage,Reduce(("context_clause",1),3)), (LCProcedure,Reduce(("context_clause",1),3)), (LCFunction,Reduce(("context_clause",1),3)), (LCSeparate,Reduce(("context_clause",1),3))]]@slrp'a382; val slrp'a380=[[(LCEos,Reduce(("main_program",0),1)), (LCLChevron,Reduce(("main_program",0),1)), (LCAnnotation,Reduce(("main_program",0),1)), (LCPragma,Reduce(("main_program",0),1)), (LCReferences,Reduce(("main_program",0),1)), (LCPackage,Reduce(("main_program",0),1)), (LCSeparate,Reduce(("main_program",0),1)),(LCWith,Reduce(("main_program",0),1)), (LCUse,Reduce(("main_program",0),1)),(LCProcedure,Reduce(("main_program",0),1)), (LCFunction,Reduce(("main_program",0),1))]]@slrp'a381; val slrp'a379=[[(LCEos,Reduce(("library_unit_body",0),1)), (LCLChevron,Reduce(("library_unit_body",0),1)), (LCAnnotation,Reduce(("library_unit_body",0),1)), (LCPragma,Reduce(("library_unit_body",0),1)), (LCReferences,Reduce(("library_unit_body",0),1)), (LCPackage,Reduce(("library_unit_body",0),1)), (LCSeparate,Reduce(("library_unit_body",0),1)), (LCWith,Reduce(("library_unit_body",0),1)), (LCUse,Reduce(("library_unit_body",0),1)), (LCProcedure,Reduce(("library_unit_body",0),1)), (LCFunction,Reduce(("library_unit_body",0),1))]]@slrp'a380; val slrp'a378=[[(LCEos,Reduce(("secondary_unit",1),1)), (LCLChevron,Reduce(("secondary_unit",1),1)), (LCAnnotation,Reduce(("secondary_unit",1),1)), (LCPragma,Reduce(("secondary_unit",1),1)), (LCReferences,Reduce(("secondary_unit",1),1)), (LCPackage,Reduce(("secondary_unit",1),1)), (LCSeparate,Reduce(("secondary_unit",1),1)), (LCWith,Reduce(("secondary_unit",1),1)),(LCUse,Reduce(("secondary_unit",1),1)), (LCProcedure,Reduce(("secondary_unit",1),1)), (LCFunction,Reduce(("secondary_unit",1),1))]]@slrp'a379; val slrp'a377=[[(LCEos,Reduce(("secondary_unit",0),1)), (LCLChevron,Reduce(("secondary_unit",0),1)), (LCAnnotation,Reduce(("secondary_unit",0),1)), (LCPragma,Reduce(("secondary_unit",0),1)), (LCReferences,Reduce(("secondary_unit",0),1)), (LCPackage,Reduce(("secondary_unit",0),1)), (LCSeparate,Reduce(("secondary_unit",0),1)), (LCWith,Reduce(("secondary_unit",0),1)),(LCUse,Reduce(("secondary_unit",0),1)), (LCProcedure,Reduce(("secondary_unit",0),1)), (LCFunction,Reduce(("secondary_unit",0),1))]]@slrp'a378; val slrp'a376=[[(LCEos,Reduce(("library_unit",1),1)), (LCLChevron,Reduce(("library_unit",1),1)), (LCAnnotation,Reduce(("library_unit",1),1)), (LCPragma,Reduce(("library_unit",1),1)), (LCReferences,Reduce(("library_unit",1),1)), (LCPackage,Reduce(("library_unit",1),1)), (LCSeparate,Reduce(("library_unit",1),1)),(LCWith,Reduce(("library_unit",1),1)), (LCUse,Reduce(("library_unit",1),1)),(LCProcedure,Reduce(("library_unit",1),1)), (LCFunction,Reduce(("library_unit",1),1))]]@slrp'a377; val slrp'a375=[[(LCEos,Reduce(("library_unit",0),1)), (LCLChevron,Reduce(("library_unit",0),1)), (LCAnnotation,Reduce(("library_unit",0),1)), (LCPragma,Reduce(("library_unit",0),1)), (LCReferences,Reduce(("library_unit",0),1)), (LCPackage,Reduce(("library_unit",0),1)), (LCSeparate,Reduce(("library_unit",0),1)),(LCWith,Reduce(("library_unit",0),1)), (LCUse,Reduce(("library_unit",0),1)),(LCProcedure,Reduce(("library_unit",0),1)), (LCFunction,Reduce(("library_unit",0),1))]]@slrp'a376; val slrp'a374=[[(LCEos,Reduce(("compilation_unit",2),1)), (LCLChevron,Reduce(("compilation_unit",2),1)), (LCAnnotation,Reduce(("compilation_unit",2),1)), (LCPragma,Reduce(("compilation_unit",2),1)), (LCReferences,Reduce(("compilation_unit",2),1)), (LCPackage,Reduce(("compilation_unit",2),1)), (LCSeparate,Reduce(("compilation_unit",2),1)), (LCWith,Reduce(("compilation_unit",2),1)), (LCUse,Reduce(("compilation_unit",2),1)), (LCProcedure,Reduce(("compilation_unit",2),1)), (LCFunction,Reduce(("compilation_unit",2),1))]]@slrp'a375; val slrp'a373=[[(LCEos,Reduce(("compilation_unit",1),2)), (LCLChevron,Reduce(("compilation_unit",1),2)), (LCAnnotation,Reduce(("compilation_unit",1),2)), (LCPragma,Reduce(("compilation_unit",1),2)), (LCReferences,Reduce(("compilation_unit",1),2)), (LCPackage,Reduce(("compilation_unit",1),2)), (LCSeparate,Reduce(("compilation_unit",1),2)), (LCWith,Reduce(("compilation_unit",1),2)), (LCUse,Reduce(("compilation_unit",1),2)), (LCProcedure,Reduce(("compilation_unit",1),2)), (LCFunction,Reduce(("compilation_unit",1),2))]]@slrp'a374; val slrp'a372=[[(LCEos,Reduce(("compilation_unit",0),2)), (LCLChevron,Reduce(("compilation_unit",0),2)), (LCAnnotation,Reduce(("compilation_unit",0),2)), (LCPragma,Reduce(("compilation_unit",0),2)), (LCReferences,Reduce(("compilation_unit",0),2)), (LCPackage,Reduce(("compilation_unit",0),2)), (LCSeparate,Reduce(("compilation_unit",0),2)), (LCWith,Reduce(("compilation_unit",0),2)), (LCUse,Reduce(("compilation_unit",0),2)), (LCProcedure,Reduce(("compilation_unit",0),2)), (LCFunction,Reduce(("compilation_unit",0),2))]]@slrp'a373; val slrp'a371=[[(LCEos,Reduce(("compilation",2),2))]]@slrp'a372; val slrp'a370=[[(LCEos,Reduce(("compilation",0),1))]]@slrp'a371; val slrp'a369=[[(LCEos,Reduce(("renaming_declaration",5),4)), (LCLChevron,Reduce(("renaming_declaration",5),4)), (LCFunction,Reduce(("renaming_declaration",5),4)), (LCPackage,Reduce(("renaming_declaration",5),4)), (LCIdentifier,Reduce(("renaming_declaration",5),4)), (LCAnnotation,Reduce(("renaming_declaration",5),4)), (LCSubType,Reduce(("renaming_declaration",5),4)), (LCPragma,Reduce(("renaming_declaration",5),4)), (LCProcedure,Reduce(("renaming_declaration",5),4)), (LCType,Reduce(("renaming_declaration",5),4)), (LCFor,Reduce(("renaming_declaration",5),4)), (LCUse,Reduce(("renaming_declaration",5),4)), (LCEnd,Reduce(("renaming_declaration",5),4)), (LCPrivate,Reduce(("renaming_declaration",5),4)), (LCAuxiliary,Reduce(("renaming_declaration",5),4)), (LCBegin,Reduce(("renaming_declaration",5),4))]]@slrp'a370; val slrp'a368=[[(LCSemi,Shift 368)]]@slrp'a369; val slrp'a367=[[(LCEos,Reduce(("renaming_declaration",4),6)), (LCLChevron,Reduce(("renaming_declaration",4),6)), (LCFunction,Reduce(("renaming_declaration",4),6)), (LCPackage,Reduce(("renaming_declaration",4),6)), (LCIdentifier,Reduce(("renaming_declaration",4),6)), (LCAnnotation,Reduce(("renaming_declaration",4),6)), (LCSubType,Reduce(("renaming_declaration",4),6)), (LCPragma,Reduce(("renaming_declaration",4),6)), (LCProcedure,Reduce(("renaming_declaration",4),6)), (LCType,Reduce(("renaming_declaration",4),6)), (LCFor,Reduce(("renaming_declaration",4),6)), (LCUse,Reduce(("renaming_declaration",4),6)), (LCEnd,Reduce(("renaming_declaration",4),6)), (LCPrivate,Reduce(("renaming_declaration",4),6)), (LCAuxiliary,Reduce(("renaming_declaration",4),6)), (LCBegin,Reduce(("renaming_declaration",4),6))]]@slrp'a368; val slrp'a366=[[(LCSemi,Shift 366)]]@slrp'a367; val slrp'a365=[[(LCEos,Reduce(("renaming_declaration",3),4)), (LCLChevron,Reduce(("renaming_declaration",3),4)), (LCFunction,Reduce(("renaming_declaration",3),4)), (LCPackage,Reduce(("renaming_declaration",3),4)), (LCIdentifier,Reduce(("renaming_declaration",3),4)), (LCAnnotation,Reduce(("renaming_declaration",3),4)), (LCSubType,Reduce(("renaming_declaration",3),4)), (LCPragma,Reduce(("renaming_declaration",3),4)), (LCProcedure,Reduce(("renaming_declaration",3),4)), (LCType,Reduce(("renaming_declaration",3),4)), (LCFor,Reduce(("renaming_declaration",3),4)), (LCUse,Reduce(("renaming_declaration",3),4)), (LCEnd,Reduce(("renaming_declaration",3),4)), (LCPrivate,Reduce(("renaming_declaration",3),4)), (LCAuxiliary,Reduce(("renaming_declaration",3),4)), (LCBegin,Reduce(("renaming_declaration",3),4))]]@slrp'a366; val slrp'a364=[[(LCEos,Reduce(("renaming_declaration",2),10)), (LCLChevron,Reduce(("renaming_declaration",2),10)), (LCFunction,Reduce(("renaming_declaration",2),10)), (LCPackage,Reduce(("renaming_declaration",2),10)), (LCIdentifier,Reduce(("renaming_declaration",2),10)), (LCAnnotation,Reduce(("renaming_declaration",2),10)), (LCSubType,Reduce(("renaming_declaration",2),10)), (LCPragma,Reduce(("renaming_declaration",2),10)), (LCProcedure,Reduce(("renaming_declaration",2),10)), (LCType,Reduce(("renaming_declaration",2),10)), (LCFor,Reduce(("renaming_declaration",2),10)), (LCUse,Reduce(("renaming_declaration",2),10)), (LCEnd,Reduce(("renaming_declaration",2),10)), (LCPrivate,Reduce(("renaming_declaration",2),10)), (LCAuxiliary,Reduce(("renaming_declaration",2),10)), (LCBegin,Reduce(("renaming_declaration",2),10))]]@slrp'a365; val slrp'a363=[[(LCSemi,Shift 363)]]@slrp'a364; val slrp'a362=[[(LCReturn,Shift 579)]]@slrp'a363; val slrp'a361=[[(LCEos,Reduce(("renaming_declaration",1),6)), (LCLChevron,Reduce(("renaming_declaration",1),6)), (LCFunction,Reduce(("renaming_declaration",1),6)), (LCPackage,Reduce(("renaming_declaration",1),6)), (LCIdentifier,Reduce(("renaming_declaration",1),6)), (LCAnnotation,Reduce(("renaming_declaration",1),6)), (LCSubType,Reduce(("renaming_declaration",1),6)), (LCPragma,Reduce(("renaming_declaration",1),6)), (LCProcedure,Reduce(("renaming_declaration",1),6)), (LCType,Reduce(("renaming_declaration",1),6)), (LCFor,Reduce(("renaming_declaration",1),6)), (LCUse,Reduce(("renaming_declaration",1),6)), (LCEnd,Reduce(("renaming_declaration",1),6)), (LCPrivate,Reduce(("renaming_declaration",1),6)), (LCAuxiliary,Reduce(("renaming_declaration",1),6)), (LCBegin,Reduce(("renaming_declaration",1),6))]]@slrp'a362; val slrp'a360=[[(LCRenames,Shift 578)]]@slrp'a361; val slrp'a359=[[(LCIdentifier,Shift 562)]]@slrp'a360; val slrp'a358=[[(LCEos,Reduce(("renaming_declaration",0),6)), (LCLChevron,Reduce(("renaming_declaration",0),6)), (LCFunction,Reduce(("renaming_declaration",0),6)), (LCPackage,Reduce(("renaming_declaration",0),6)), (LCIdentifier,Reduce(("renaming_declaration",0),6)), (LCAnnotation,Reduce(("renaming_declaration",0),6)), (LCSubType,Reduce(("renaming_declaration",0),6)), (LCPragma,Reduce(("renaming_declaration",0),6)), (LCProcedure,Reduce(("renaming_declaration",0),6)), (LCType,Reduce(("renaming_declaration",0),6)), (LCFor,Reduce(("renaming_declaration",0),6)), (LCUse,Reduce(("renaming_declaration",0),6)), (LCEnd,Reduce(("renaming_declaration",0),6)), (LCPrivate,Reduce(("renaming_declaration",0),6)), (LCAuxiliary,Reduce(("renaming_declaration",0),6)), (LCBegin,Reduce(("renaming_declaration",0),6))]]@slrp'a359; val slrp'a357=[[(LCEos,Reduce(("use_type_clause",0),4)), (LCLChevron,Reduce(("use_type_clause",0),4)), (LCFunction,Reduce(("use_type_clause",0),4)), (LCPackage,Reduce(("use_type_clause",0),4)), (LCIdentifier,Reduce(("use_type_clause",0),4)), (LCAnnotation,Reduce(("use_type_clause",0),4)), (LCSubType,Reduce(("use_type_clause",0),4)), (LCPragma,Reduce(("use_type_clause",0),4)), (LCProcedure,Reduce(("use_type_clause",0),4)), (LCType,Reduce(("use_type_clause",0),4)),(LCFor,Reduce(("use_type_clause",0),4)) ,(LCUse,Reduce(("use_type_clause",0),4)), (LCSeparate,Reduce(("use_type_clause",0),4)), (LCReferences,Reduce(("use_type_clause",0),4)), (LCWith,Reduce(("use_type_clause",0),4)),(LCEnd,Reduce(("use_type_clause",0),4)) ,(LCPrivate,Reduce(("use_type_clause",0),4)), (LCAuxiliary,Reduce(("use_type_clause",0),4)), (LCBegin,Reduce(("use_type_clause",0),4))]]@slrp'a358; val slrp'a356=[[(LCSemi,Shift 356)]]@slrp'a357; val slrp'a355=[[(LCEos,Reduce(("use_package_clause",0),3)), (LCLChevron,Reduce(("use_package_clause",0),3)), (LCFunction,Reduce(("use_package_clause",0),3)), (LCPackage,Reduce(("use_package_clause",0),3)), (LCIdentifier,Reduce(("use_package_clause",0),3)), (LCAnnotation,Reduce(("use_package_clause",0),3)), (LCSubType,Reduce(("use_package_clause",0),3)), (LCPragma,Reduce(("use_package_clause",0),3)), (LCProcedure,Reduce(("use_package_clause",0),3)), (LCType,Reduce(("use_package_clause",0),3)), (LCFor,Reduce(("use_package_clause",0),3)), (LCUse,Reduce(("use_package_clause",0),3)), (LCSeparate,Reduce(("use_package_clause",0),3)), (LCReferences,Reduce(("use_package_clause",0),3)), (LCWith,Reduce(("use_package_clause",0),3)), (LCEnd,Reduce(("use_package_clause",0),3)), (LCPrivate,Reduce(("use_package_clause",0),3)), (LCAuxiliary,Reduce(("use_package_clause",0),3)), (LCBegin,Reduce(("use_package_clause",0),3))]]@slrp'a356; val slrp'a354=[[(LCSemi,Shift 354)]]@slrp'a355; val slrp'a353=[[(LCEos,Reduce(("use_clause",1),1)), (LCLChevron,Reduce(("use_clause",1),1)),(LCFunction,Reduce(("use_clause",1),1)), (LCPackage,Reduce(("use_clause",1),1)),(LCIdentifier,Reduce(("use_clause",1),1)) ,(LCAnnotation,Reduce(("use_clause",1),1)), (LCSubType,Reduce(("use_clause",1),1)),(LCPragma,Reduce(("use_clause",1),1)), (LCProcedure,Reduce(("use_clause",1),1)),(LCType,Reduce(("use_clause",1),1)), (LCFor,Reduce(("use_clause",1),1)),(LCUse,Reduce(("use_clause",1),1)), (LCSeparate,Reduce(("use_clause",1),1)), (LCReferences,Reduce(("use_clause",1),1)),(LCWith,Reduce(("use_clause",1),1)), (LCEnd,Reduce(("use_clause",1),1)),(LCPrivate,Reduce(("use_clause",1),1)), (LCAuxiliary,Reduce(("use_clause",1),1)),(LCBegin,Reduce(("use_clause",1),1))]]@slrp'a354; val slrp'a352=[[(LCEos,Reduce(("use_clause",0),1)), (LCLChevron,Reduce(("use_clause",0),1)),(LCFunction,Reduce(("use_clause",0),1)), (LCPackage,Reduce(("use_clause",0),1)),(LCIdentifier,Reduce(("use_clause",0),1)) ,(LCAnnotation,Reduce(("use_clause",0),1)), (LCSubType,Reduce(("use_clause",0),1)),(LCPragma,Reduce(("use_clause",0),1)), (LCProcedure,Reduce(("use_clause",0),1)),(LCType,Reduce(("use_clause",0),1)), (LCFor,Reduce(("use_clause",0),1)),(LCUse,Reduce(("use_clause",0),1)), (LCSeparate,Reduce(("use_clause",0),1)), (LCReferences,Reduce(("use_clause",0),1)),(LCWith,Reduce(("use_clause",0),1)), (LCEnd,Reduce(("use_clause",0),1)),(LCPrivate,Reduce(("use_clause",0),1)), (LCAuxiliary,Reduce(("use_clause",0),1)),(LCBegin,Reduce(("use_clause",0),1))]]@slrp'a353; val slrp'a351=[[(LCEos,Reduce(("deferred_constant_declaration",0),5)), (LCLChevron,Reduce(("deferred_constant_declaration",0),5)), (LCFunction,Reduce(("deferred_constant_declaration",0),5)), (LCPackage,Reduce(("deferred_constant_declaration",0),5)), (LCIdentifier,Reduce(("deferred_constant_declaration",0),5)), (LCAnnotation,Reduce(("deferred_constant_declaration",0),5)), (LCSubType,Reduce(("deferred_constant_declaration",0),5)), (LCPragma,Reduce(("deferred_constant_declaration",0),5)), (LCProcedure,Reduce(("deferred_constant_declaration",0),5)), (LCType,Reduce(("deferred_constant_declaration",0),5)), (LCFor,Reduce(("deferred_constant_declaration",0),5)), (LCUse,Reduce(("deferred_constant_declaration",0),5)), (LCImplement,Reduce(("deferred_constant_declaration",0),5)), (LCEnd,Reduce(("deferred_constant_declaration",0),5)), (LCPrivate,Reduce(("deferred_constant_declaration",0),5)), (LCAuxiliary,Reduce(("deferred_constant_declaration",0),5)), (LCBegin,Reduce(("deferred_constant_declaration",0),5))]]@slrp'a352; val slrp'a350=[[(LCEos,Reduce(("private_type_declaration",3),7)), (LCLChevron,Reduce(("private_type_declaration",3),7)), (LCFunction,Reduce(("private_type_declaration",3),7)), (LCPackage,Reduce(("private_type_declaration",3),7)), (LCIdentifier,Reduce(("private_type_declaration",3),7)), (LCAnnotation,Reduce(("private_type_declaration",3),7)), (LCSubType,Reduce(("private_type_declaration",3),7)), (LCPragma,Reduce(("private_type_declaration",3),7)), (LCProcedure,Reduce(("private_type_declaration",3),7)), (LCType,Reduce(("private_type_declaration",3),7)), (LCFor,Reduce(("private_type_declaration",3),7)), (LCUse,Reduce(("private_type_declaration",3),7)), (LCImplement,Reduce(("private_type_declaration",3),7)), (LCEnd,Reduce(("private_type_declaration",3),7)), (LCPrivate,Reduce(("private_type_declaration",3),7)), (LCAuxiliary,Reduce(("private_type_declaration",3),7)), (LCBegin,Reduce(("private_type_declaration",3),7))]]@slrp'a351; val slrp'a349=[[(LCSemi,Shift 349)]]@slrp'a350; val slrp'a348=[[(LCPrivate,Shift 348)]]@slrp'a349; val slrp'a347=[[(LCEos,Reduce(("private_type_declaration",2),6)), (LCLChevron,Reduce(("private_type_declaration",2),6)), (LCFunction,Reduce(("private_type_declaration",2),6)), (LCPackage,Reduce(("private_type_declaration",2),6)), (LCIdentifier,Reduce(("private_type_declaration",2),6)), (LCAnnotation,Reduce(("private_type_declaration",2),6)), (LCSubType,Reduce(("private_type_declaration",2),6)), (LCPragma,Reduce(("private_type_declaration",2),6)), (LCProcedure,Reduce(("private_type_declaration",2),6)), (LCType,Reduce(("private_type_declaration",2),6)), (LCFor,Reduce(("private_type_declaration",2),6)), (LCUse,Reduce(("private_type_declaration",2),6)), (LCImplement,Reduce(("private_type_declaration",2),6)), (LCEnd,Reduce(("private_type_declaration",2),6)), (LCPrivate,Reduce(("private_type_declaration",2),6)), (LCAuxiliary,Reduce(("private_type_declaration",2),6)), (LCBegin,Reduce(("private_type_declaration",2),6))]]@slrp'a348; val slrp'a346=[[(LCSemi,Shift 346)]]@slrp'a347; val slrp'a345=[[(LCPrivate,Shift 345)]]@slrp'a346; val slrp'a344=[[(LCEos,Reduce(("private_type_declaration",1),6)), (LCLChevron,Reduce(("private_type_declaration",1),6)), (LCFunction,Reduce(("private_type_declaration",1),6)), (LCPackage,Reduce(("private_type_declaration",1),6)), (LCIdentifier,Reduce(("private_type_declaration",1),6)), (LCAnnotation,Reduce(("private_type_declaration",1),6)), (LCSubType,Reduce(("private_type_declaration",1),6)), (LCPragma,Reduce(("private_type_declaration",1),6)), (LCProcedure,Reduce(("private_type_declaration",1),6)), (LCType,Reduce(("private_type_declaration",1),6)), (LCFor,Reduce(("private_type_declaration",1),6)), (LCUse,Reduce(("private_type_declaration",1),6)), (LCImplement,Reduce(("private_type_declaration",1),6)), (LCEnd,Reduce(("private_type_declaration",1),6)), (LCPrivate,Reduce(("private_type_declaration",1),6)), (LCAuxiliary,Reduce(("private_type_declaration",1),6)), (LCBegin,Reduce(("private_type_declaration",1),6))]]@slrp'a345; val slrp'a343=[[(LCSemi,Shift 343)]]@slrp'a344; val slrp'a342=[[(LCEos,Reduce(("private_type_declaration",0),5)), (LCLChevron,Reduce(("private_type_declaration",0),5)), (LCFunction,Reduce(("private_type_declaration",0),5)), (LCPackage,Reduce(("private_type_declaration",0),5)), (LCIdentifier,Reduce(("private_type_declaration",0),5)), (LCAnnotation,Reduce(("private_type_declaration",0),5)), (LCSubType,Reduce(("private_type_declaration",0),5)), (LCPragma,Reduce(("private_type_declaration",0),5)), (LCProcedure,Reduce(("private_type_declaration",0),5)), (LCType,Reduce(("private_type_declaration",0),5)), (LCFor,Reduce(("private_type_declaration",0),5)), (LCUse,Reduce(("private_type_declaration",0),5)), (LCImplement,Reduce(("private_type_declaration",0),5)), (LCEnd,Reduce(("private_type_declaration",0),5)), (LCPrivate,Reduce(("private_type_declaration",0),5)), (LCAuxiliary,Reduce(("private_type_declaration",0),5)), (LCBegin,Reduce(("private_type_declaration",0),5))]]@slrp'a343; val slrp'a341=[[(LCSemi,Shift 341)]]@slrp'a342; val slrp'a340=[[(LCEnd,Reduce(("package_initialization",0),1))]]@slrp'a341; val slrp'a339=[[(LCImplement,Reduce(("basic_dec_list",1),2))]]@slrp'a340; val slrp'a338=[[(LCLChevron,Reduce(("using_dec",0),7)), (LCFunction,Reduce(("using_dec",0),7)),(LCPackage,Reduce(("using_dec",0),7)), (LCIdentifier,Reduce(("using_dec",0),7)), (LCAnnotation,Reduce(("using_dec",0),7)),(LCSubType,Reduce(("using_dec",0),7)), (LCPragma,Reduce(("using_dec",0),7)),(LCProcedure,Reduce(("using_dec",0),7)), (LCType,Reduce(("using_dec",0),7)),(LCFor,Reduce(("using_dec",0),7)), (LCUse,Reduce(("using_dec",0),7)),(LCBegin,Reduce(("using_dec",0),7)), (LCUsing,Reduce(("using_dec",0),7))]]@slrp'a339; val slrp'a337=[[(LCSemi,Shift 337)]]@slrp'a338; val slrp'a336=[[(LCZ,Shift 336)]]@slrp'a337; val slrp'a335=[[(LCBy,Shift 335)]]@slrp'a336; val slrp'a334=[[(LCZ,Shift 334)]]@slrp'a335; val slrp'a333=[[(LCImplement,Shift 333)]]@slrp'a334; val slrp'a332=[[(LCLChevron,Reduce(("using_list",1),2)), (LCFunction,Reduce(("using_list",1),2)),(LCPackage,Reduce(("using_list",1),2)), (LCIdentifier,Reduce(("using_list",1),2)), (LCAnnotation,Reduce(("using_list",1),2)),(LCSubType,Reduce(("using_list",1),2)) ,(LCPragma,Reduce(("using_list",1),2)),(LCProcedure,Reduce(("using_list",1),2)), (LCType,Reduce(("using_list",1),2)),(LCFor,Reduce(("using_list",1),2)), (LCUse,Reduce(("using_list",1),2)),(LCBegin,Reduce(("using_list",1),2))]]@slrp'a333; val slrp'a331=[[(LCEnd,Reduce(("package_implementation",2),4))]]@slrp'a332; val slrp'a330=[[(LCBegin,Shift 686)]]@slrp'a331; val slrp'a329=[[(LCEnd,Reduce(("package_implementation",1),3))]]@slrp'a330; val slrp'a328=[[(LCEos,Reduce(("package_body",0),9)), (LCLChevron,Reduce(("package_body",0),9)), (LCAnnotation,Reduce(("package_body",0),9)), (LCPragma,Reduce(("package_body",0),9)), (LCReferences,Reduce(("package_body",0),9)), (LCPackage,Reduce(("package_body",0),9)), (LCSeparate,Reduce(("package_body",0),9)),(LCWith,Reduce(("package_body",0),9)), (LCUse,Reduce(("package_body",0),9)),(LCProcedure,Reduce(("package_body",0),9)), (LCFunction,Reduce(("package_body",0),9))]]@slrp'a329; val slrp'a327=[[(LCSemi,Shift 327)]]@slrp'a328; val slrp'a326=[[(LCIdentifier,Shift 326)]]@slrp'a327; val slrp'a325=[[(LCEnd,Shift 325)]]@slrp'a326; val slrp'a324=[[(LCIs,Shift 710)]]@slrp'a325; val slrp'a323=[[(LCIdentifier,Shift 561)]]@slrp'a324; val slrp'a322=[[(LCBBody,Shift 322)]]@slrp'a323; val slrp'a321=[[(LCEos,Reduce(("pdec",2),1)),(LCEnd,Reduce(("pdec",2),1)), (LCLChevron,Reduce(("pdec",2),1)),(LCAnnotation,Reduce(("pdec",2),1)), (LCSubType,Reduce(("pdec",2),1)),(LCPragma,Reduce(("pdec",2),1)), (LCFunction,Reduce(("pdec",2),1)),(LCPackage,Reduce(("pdec",2),1)), (LCType,Reduce(("pdec",2),1)),(LCIdentifier,Reduce(("pdec",2),1)), (LCFor,Reduce(("pdec",2),1)),(LCUse,Reduce(("pdec",2),1)), (LCProcedure,Reduce(("pdec",2),1))]]@slrp'a322; val slrp'a320=[[(LCEos,Reduce(("pdec",1),1)),(LCEnd,Reduce(("pdec",1),1)), (LCLChevron,Reduce(("pdec",1),1)),(LCAnnotation,Reduce(("pdec",1),1)), (LCSubType,Reduce(("pdec",1),1)),(LCPragma,Reduce(("pdec",1),1)), (LCFunction,Reduce(("pdec",1),1)),(LCPackage,Reduce(("pdec",1),1)), (LCType,Reduce(("pdec",1),1)),(LCIdentifier,Reduce(("pdec",1),1)), (LCFor,Reduce(("pdec",1),1)),(LCUse,Reduce(("pdec",1),1)), (LCProcedure,Reduce(("pdec",1),1))]]@slrp'a321; val slrp'a319=[[(LCEos,Reduce(("pdec",0),1)),(LCEnd,Reduce(("pdec",0),1)), (LCLChevron,Reduce(("pdec",0),1)),(LCAnnotation,Reduce(("pdec",0),1)), (LCSubType,Reduce(("pdec",0),1)),(LCPragma,Reduce(("pdec",0),1)), (LCFunction,Reduce(("pdec",0),1)),(LCPackage,Reduce(("pdec",0),1)), (LCType,Reduce(("pdec",0),1)),(LCIdentifier,Reduce(("pdec",0),1)), (LCFor,Reduce(("pdec",0),1)),(LCUse,Reduce(("pdec",0),1)), (LCProcedure,Reduce(("pdec",0),1))]]@slrp'a320; val slrp'a318=[[(LCEos,Reduce(("private_part",1),2)), (LCEnd,Reduce(("private_part",1),2))]]@slrp'a319; val slrp'a317=[[(LCEos,Reduce(("visdec",4),1)),(LCEnd,Reduce(("visdec",4),1)), (LCPrivate,Reduce(("visdec",4),1)),(LCAuxiliary,Reduce(("visdec",4),1)), (LCLChevron,Reduce(("visdec",4),1)),(LCAnnotation,Reduce(("visdec",4),1)), (LCSubType,Reduce(("visdec",4),1)),(LCPragma,Reduce(("visdec",4),1)), (LCFunction,Reduce(("visdec",4),1)),(LCPackage,Reduce(("visdec",4),1)), (LCType,Reduce(("visdec",4),1)),(LCIdentifier,Reduce(("visdec",4),1)), (LCFor,Reduce(("visdec",4),1)),(LCUse,Reduce(("visdec",4),1)), (LCProcedure,Reduce(("visdec",4),1))]]@slrp'a318; val slrp'a316=[[(LCEos,Reduce(("visdec",3),3)),(LCEnd,Reduce(("visdec",3),3)), (LCPrivate,Reduce(("visdec",3),3)),(LCAuxiliary,Reduce(("visdec",3),3)), (LCLChevron,Reduce(("visdec",3),3)),(LCAnnotation,Reduce(("visdec",3),3)), (LCSubType,Reduce(("visdec",3),3)),(LCPragma,Reduce(("visdec",3),3)), (LCFunction,Reduce(("visdec",3),3)),(LCPackage,Reduce(("visdec",3),3)), (LCType,Reduce(("visdec",3),3)),(LCIdentifier,Reduce(("visdec",3),3)), (LCFor,Reduce(("visdec",3),3)),(LCUse,Reduce(("visdec",3),3)), (LCProcedure,Reduce(("visdec",3),3))]]@slrp'a317; val slrp'a315=[[(LCSemi,Shift 315)]]@slrp'a316; val slrp'a314=[[(LCZ,Shift 314)]]@slrp'a315; val slrp'a313=[[(LCEos,Reduce(("visdec",2),1)),(LCEnd,Reduce(("visdec",2),1)), (LCPrivate,Reduce(("visdec",2),1)),(LCAuxiliary,Reduce(("visdec",2),1)), (LCLChevron,Reduce(("visdec",2),1)),(LCAnnotation,Reduce(("visdec",2),1)), (LCSubType,Reduce(("visdec",2),1)),(LCPragma,Reduce(("visdec",2),1)), (LCFunction,Reduce(("visdec",2),1)),(LCPackage,Reduce(("visdec",2),1)), (LCType,Reduce(("visdec",2),1)),(LCIdentifier,Reduce(("visdec",2),1)), (LCFor,Reduce(("visdec",2),1)),(LCUse,Reduce(("visdec",2),1)), (LCProcedure,Reduce(("visdec",2),1))]]@slrp'a314; val slrp'a312=[[(LCEos,Reduce(("visdec",1),1)),(LCEnd,Reduce(("visdec",1),1)), (LCPrivate,Reduce(("visdec",1),1)),(LCAuxiliary,Reduce(("visdec",1),1)), (LCLChevron,Reduce(("visdec",1),1)),(LCAnnotation,Reduce(("visdec",1),1)), (LCSubType,Reduce(("visdec",1),1)),(LCPragma,Reduce(("visdec",1),1)), (LCFunction,Reduce(("visdec",1),1)),(LCPackage,Reduce(("visdec",1),1)), (LCType,Reduce(("visdec",1),1)),(LCIdentifier,Reduce(("visdec",1),1)), (LCFor,Reduce(("visdec",1),1)),(LCUse,Reduce(("visdec",1),1)), (LCProcedure,Reduce(("visdec",1),1))]]@slrp'a313; val slrp'a311=[[(LCEos,Reduce(("visdec",0),1)),(LCEnd,Reduce(("visdec",0),1)), (LCPrivate,Reduce(("visdec",0),1)),(LCAuxiliary,Reduce(("visdec",0),1)), (LCLChevron,Reduce(("visdec",0),1)),(LCAnnotation,Reduce(("visdec",0),1)), (LCSubType,Reduce(("visdec",0),1)),(LCPragma,Reduce(("visdec",0),1)), (LCFunction,Reduce(("visdec",0),1)),(LCPackage,Reduce(("visdec",0),1)), (LCType,Reduce(("visdec",0),1)),(LCIdentifier,Reduce(("visdec",0),1)), (LCFor,Reduce(("visdec",0),1)),(LCUse,Reduce(("visdec",0),1)), (LCProcedure,Reduce(("visdec",0),1))]]@slrp'a312; val slrp'a310=[[(LCEos,Reduce(("visible_part",1),2)), (LCEnd,Reduce(("visible_part",1),2)),(LCPrivate,Reduce(("visible_part",1),2))]]@slrp'a311; val slrp'a309=[[(LCSemi,Reduce(("package_specification",1),9))]]@slrp'a310; val slrp'a308=[[(LCIdentifier,Shift 308)]]@slrp'a309; val slrp'a307=[[(LCEnd,Shift 307)]]@slrp'a308; val slrp'a306=[[(LCSemi,Reduce(("package_specification",0),7))]]@slrp'a307; val slrp'a305=[[(LCIdentifier,Shift 305)]]@slrp'a306; val slrp'a304=[[(LCEos,Reduce(("package_declaration",0),2)), (LCLChevron,Reduce(("package_declaration",0),2)), (LCFunction,Reduce(("package_declaration",0),2)), (LCPackage,Reduce(("package_declaration",0),2)), (LCIdentifier,Reduce(("package_declaration",0),2)), (LCAnnotation,Reduce(("package_declaration",0),2)), (LCSubType,Reduce(("package_declaration",0),2)), (LCPragma,Reduce(("package_declaration",0),2)), (LCProcedure,Reduce(("package_declaration",0),2)), (LCType,Reduce(("package_declaration",0),2)), (LCFor,Reduce(("package_declaration",0),2)), (LCUse,Reduce(("package_declaration",0),2)), (LCReferences,Reduce(("package_declaration",0),2)), (LCSeparate,Reduce(("package_declaration",0),2)), (LCWith,Reduce(("package_declaration",0),2)), (LCBegin,Reduce(("package_declaration",0),2)), (LCEnd,Reduce(("package_declaration",0),2))]]@slrp'a305; val slrp'a303=[[(LCSemi,Shift 303)]]@slrp'a304; val slrp'a302=[[(LCCrd,Reduce(("actual_parameter",0),1)), (LCComma,Reduce(("actual_parameter",0),1))]]@slrp'a303; val slrp'a301=[[(LCCrd,Reduce(("positional_parameter_association",1),3))]]@slrp'a302; val slrp'a300=[[(LCCrd,Reduce(("parameter_association",1),1))]]@slrp'a301; val slrp'a299=[[(LCCrd,Reduce(("parameter_association",0),1))]]@slrp'a300; val slrp'a298=[[(LCOrd,Reduce(("actual_parameter_part",0),3)), (LCDot,Reduce(("actual_parameter_part",0),3)), (LCPrimedIdentifier,Reduce(("actual_parameter_part",0),3)), (LCBecomes,Reduce(("actual_parameter_part",0),3)), (LCSemi,Reduce(("actual_parameter_part",0),3)), (LCRRange,Reduce(("actual_parameter_part",0),3)), (LCDigits,Reduce(("actual_parameter_part",0),3)), (LCDelta,Reduce(("actual_parameter_part",0),3)), (LCComma,Reduce(("actual_parameter_part",0),3)), (LCCrd,Reduce(("actual_parameter_part",0),3)), (LCAnd,Reduce(("actual_parameter_part",0),3)), (LCOr,Reduce(("actual_parameter_part",0),3)), (LCXor,Reduce(("actual_parameter_part",0),3)), (LCGreaterEquals,Reduce(("actual_parameter_part",0),3)), (LCGreaterThan,Reduce(("actual_parameter_part",0),3)), (LCLessEquals,Reduce(("actual_parameter_part",0),3)), (LCLessThan,Reduce(("actual_parameter_part",0),3)), (LCNotEquals,Reduce(("actual_parameter_part",0),3)), (LCEquals,Reduce(("actual_parameter_part",0),3)), (LCIn,Reduce(("actual_parameter_part",0),3)), (LCNot,Reduce(("actual_parameter_part",0),3)), (LCDotDot,Reduce(("actual_parameter_part",0),3)), (LCAmpersand,Reduce(("actual_parameter_part",0),3)), (LCMinus,Reduce(("actual_parameter_part",0),3)), (LCPlus,Reduce(("actual_parameter_part",0),3)), (LCRem,Reduce(("actual_parameter_part",0),3)), (LCMod,Reduce(("actual_parameter_part",0),3)), (LCDiv,Reduce(("actual_parameter_part",0),3)), (LCStar,Reduce(("actual_parameter_part",0),3)), (LCStarStar,Reduce(("actual_parameter_part",0),3)), (LCPrime,Reduce(("actual_parameter_part",0),3)), (LCGrkXi,Reduce(("actual_parameter_part",0),3)), (LCRenames,Reduce(("actual_parameter_part",0),3)), (LCAt,Reduce(("actual_parameter_part",0),3)), (LCThen,Reduce(("actual_parameter_part",0),3)), (LCIs,Reduce(("actual_parameter_part",0),3)), (LCGoesTo,Reduce(("actual_parameter_part",0),3)), (LCBar,Reduce(("actual_parameter_part",0),3)), (LCTill,Reduce(("actual_parameter_part",0),3)), (LCLoop,Reduce(("actual_parameter_part",0),3)), (LCAnnotation,Reduce(("actual_parameter_part",0),3)), (LCLChevron,Reduce(("actual_parameter_part",0),3))]]@slrp'a299; val slrp'a297=[[(LCCrd,Shift 297)]]@slrp'a298; val slrp'a296=[[(LCEos,Reduce(("procedure_call_statement",0),2)), (LCAnnotation,Reduce(("procedure_call_statement",0),2)), (LCCon,Reduce(("procedure_call_statement",0),2)), (LCLChevron,Reduce(("procedure_call_statement",0),2)), (LCGrkGamma,Reduce(("procedure_call_statement",0),2)), (LCGrkDelta,Reduce(("procedure_call_statement",0),2)), (LCPragma,Reduce(("procedure_call_statement",0),2)), (LCNull,Reduce(("procedure_call_statement",0),2)), (LCExit,Reduce(("procedure_call_statement",0),2)), (LCReturn,Reduce(("procedure_call_statement",0),2)), (LCIf,Reduce(("procedure_call_statement",0),2)), (LCCase,Reduce(("procedure_call_statement",0),2)), (LCIdentifier,Reduce(("procedure_call_statement",0),2)), (LCCharacterLiteral,Reduce(("procedure_call_statement",0),2)), (LCTill,Reduce(("procedure_call_statement",0),2)), (LCLoop,Reduce(("procedure_call_statement",0),2)), (LCFor,Reduce(("procedure_call_statement",0),2)), (LCWhile,Reduce(("procedure_call_statement",0),2)), (LCElsIf,Reduce(("procedure_call_statement",0),2)), (LCElse,Reduce(("procedure_call_statement",0),2)), (LCEnd,Reduce(("procedure_call_statement",0),2)), (LCWhen,Reduce(("procedure_call_statement",0),2))]]@slrp'a297; val slrp'a295=[[(LCEos,Reduce(("subprogram_implementation",0),6)), (LCLChevron,Reduce(("subprogram_implementation",0),6)), (LCFunction,Reduce(("subprogram_implementation",0),6)), (LCPackage,Reduce(("subprogram_implementation",0),6)), (LCIdentifier,Reduce(("subprogram_implementation",0),6)), (LCAnnotation,Reduce(("subprogram_implementation",0),6)), (LCSubType,Reduce(("subprogram_implementation",0),6)), (LCPragma,Reduce(("subprogram_implementation",0),6)), (LCProcedure,Reduce(("subprogram_implementation",0),6)), (LCType,Reduce(("subprogram_implementation",0),6)), (LCFor,Reduce(("subprogram_implementation",0),6)), (LCUse,Reduce(("subprogram_implementation",0),6)), (LCReferences,Reduce(("subprogram_implementation",0),6)), (LCSeparate,Reduce(("subprogram_implementation",0),6)), (LCWith,Reduce(("subprogram_implementation",0),6)), (LCBegin,Reduce(("subprogram_implementation",0),6)), (LCEnd,Reduce(("subprogram_implementation",0),6))]]@slrp'a296; val slrp'a294=[[(LCSemi,Shift 294)]]@slrp'a295; val slrp'a293=[[(LCIdentifier,Shift 293)]]@slrp'a294; val slrp'a292=[[(LCEnd,Shift 292)]]@slrp'a293; val slrp'a291=[[(LCBegin,Shift 683)]]@slrp'a292; val slrp'a290=[[(LCEos,Reduce(("subprogram_body",1),3)), (LCLChevron,Reduce(("subprogram_body",1),3)), (LCFunction,Reduce(("subprogram_body",1),3)), (LCPackage,Reduce(("subprogram_body",1),3)), (LCIdentifier,Reduce(("subprogram_body",1),3)), (LCAnnotation,Reduce(("subprogram_body",1),3)), (LCSubType,Reduce(("subprogram_body",1),3)), (LCPragma,Reduce(("subprogram_body",1),3)), (LCProcedure,Reduce(("subprogram_body",1),3)), (LCType,Reduce(("subprogram_body",1),3)),(LCFor,Reduce(("subprogram_body",1),3)) ,(LCUse,Reduce(("subprogram_body",1),3)), (LCReferences,Reduce(("subprogram_body",1),3)), (LCSeparate,Reduce(("subprogram_body",1),3)), (LCWith,Reduce(("subprogram_body",1),3)), (LCBegin,Reduce(("subprogram_body",1),3)), (LCEnd,Reduce(("subprogram_body",1),3))]]@slrp'a291; val slrp'a289=[[(LCIs,Shift 707)]]@slrp'a290; val slrp'a288=[[(LCEos,Reduce(("subprogram_body",0),3)), (LCLChevron,Reduce(("subprogram_body",0),3)), (LCFunction,Reduce(("subprogram_body",0),3)), (LCPackage,Reduce(("subprogram_body",0),3)), (LCIdentifier,Reduce(("subprogram_body",0),3)), (LCAnnotation,Reduce(("subprogram_body",0),3)), (LCSubType,Reduce(("subprogram_body",0),3)), (LCPragma,Reduce(("subprogram_body",0),3)), (LCProcedure,Reduce(("subprogram_body",0),3)), (LCType,Reduce(("subprogram_body",0),3)),(LCFor,Reduce(("subprogram_body",0),3)) ,(LCUse,Reduce(("subprogram_body",0),3)), (LCReferences,Reduce(("subprogram_body",0),3)), (LCSeparate,Reduce(("subprogram_body",0),3)), (LCWith,Reduce(("subprogram_body",0),3)), (LCBegin,Reduce(("subprogram_body",0),3)), (LCEnd,Reduce(("subprogram_body",0),3))]]@slrp'a289; val slrp'a287=[[(LCIs,Shift 706)]]@slrp'a288; val slrp'a286=[[(LCIdentifier,Reduce(("mode",3),2)), (LCCharacterLiteral,Reduce(("mode",3),2))]]@slrp'a287; val slrp'a285=[[(LCIdentifier,Reduce(("mode",2),1)), (LCCharacterLiteral,Reduce(("mode",2),1))]]@slrp'a286; val slrp'a284=[[(LCCrd,Reduce(("parameter_specification",1),6)), (LCSemi,Reduce(("parameter_specification",1),6))]]@slrp'a285; val slrp'a283=[[(LCCrd,Reduce(("parlist",1),3))]]@slrp'a284; val slrp'a282=[[(LCIs,Reduce(("formal_part",0),3)), (LCGrkDelta,Reduce(("formal_part",0),3)), (LCGrkGamma,Reduce(("formal_part",0),3)),(LCReturn,Reduce(("formal_part",0),3)), (LCSemi,Reduce(("formal_part",0),3)),(LCAnnotation,Reduce(("formal_part",0),3)), (LCLChevron,Reduce(("formal_part",0),3)),(LCRenames,Reduce(("formal_part",0),3)) ]]@slrp'a283; val slrp'a281=[[(LCCrd,Shift 281)]]@slrp'a282; val slrp'a280=[[(LCOrd,Reduce(("operator_symbol",0),1)), (LCSemi,Reduce(("operator_symbol",0),1))]]@slrp'a281; val slrp'a279=[[(LCEos,Reduce(("annotation_list",2),2)), (LCSemi,Reduce(("annotation_list",2),2)),(LCIs,Reduce(("annotation_list",2),2)), (LCRenames,Reduce(("annotation_list",2),2)), (LCPackage,Reduce(("annotation_list",2),2)), (LCProcedure,Reduce(("annotation_list",2),2)), (LCFunction,Reduce(("annotation_list",2),2)), (LCSeparate,Reduce(("annotation_list",2),2))]]@slrp'a280; val slrp'a278=[[(LCEos,Reduce(("annotation_list",1),2)), (LCSemi,Reduce(("annotation_list",1),2)),(LCIs,Reduce(("annotation_list",1),2)), (LCRenames,Reduce(("annotation_list",1),2)), (LCPackage,Reduce(("annotation_list",1),2)), (LCProcedure,Reduce(("annotation_list",1),2)), (LCFunction,Reduce(("annotation_list",1),2)), (LCSeparate,Reduce(("annotation_list",1),2))]]@slrp'a279; val slrp'a277=[[(LCSemi,Reduce(("function_specification",0),2)), (LCIs,Reduce(("function_specification",0),2)), (LCRenames,Reduce(("function_specification",0),2))]]@slrp'a278; val slrp'a276=[[(LCSemi,Reduce(("function_specification_1",3),6)), (LCAnnotation,Reduce(("function_specification_1",3),6)), (LCLChevron,Reduce(("function_specification_1",3),6)), (LCIs,Reduce(("function_specification_1",3),6)), (LCRenames,Reduce(("function_specification_1",3),6))]]@slrp'a277; val slrp'a275=[[(LCSemi,Reduce(("function_specification_1",1),5)), (LCAnnotation,Reduce(("function_specification_1",1),5)), (LCLChevron,Reduce(("function_specification_1",1),5)), (LCIs,Reduce(("function_specification_1",1),5)), (LCRenames,Reduce(("function_specification_1",1),5))]]@slrp'a276; val slrp'a274=[[(LCSemi,Reduce(("function_specification_statement",3),4)), (LCAnnotation,Reduce(("function_specification_statement",3),4)), (LCLChevron,Reduce(("function_specification_statement",3),4)), (LCIs,Reduce(("function_specification_statement",3),4)), (LCRenames,Reduce(("function_specification_statement",3),4))]]@slrp'a275; val slrp'a273=[[(LCRBrace,Shift 273)]]@slrp'a274; val slrp'a272=[[(LCZ,Shift 272)]]@slrp'a273; val slrp'a271=[[(LCSemi,Reduce(("function_specification_statement",2),4)), (LCAnnotation,Reduce(("function_specification_statement",2),4)), (LCLChevron,Reduce(("function_specification_statement",2),4)), (LCIs,Reduce(("function_specification_statement",2),4)), (LCRenames,Reduce(("function_specification_statement",2),4))]]@slrp'a272; val slrp'a270=[[(LCRSqBrack,Shift 270)]]@slrp'a271; val slrp'a269=[[(LCZ,Shift 269)]]@slrp'a270; val slrp'a268=[[(LCSemi,Reduce(("function_specification_statement",1),5)), (LCAnnotation,Reduce(("function_specification_statement",1),5)), (LCLChevron,Reduce(("function_specification_statement",1),5)), (LCIs,Reduce(("function_specification_statement",1),5)), (LCRenames,Reduce(("function_specification_statement",1),5))]]@slrp'a269; val slrp'a267=[[(LCRBrace,Shift 267)]]@slrp'a268; val slrp'a266=[[(LCZ,Shift 266)]]@slrp'a267; val slrp'a265=[[(LCSemi,Reduce(("function_specification_statement",0),5)), (LCAnnotation,Reduce(("function_specification_statement",0),5)), (LCLChevron,Reduce(("function_specification_statement",0),5)), (LCIs,Reduce(("function_specification_statement",0),5)), (LCRenames,Reduce(("function_specification_statement",0),5))]]@slrp'a266; val slrp'a264=[[(LCRSqBrack,Shift 264)]]@slrp'a265; val slrp'a263=[[(LCZ,Shift 263)]]@slrp'a264; val slrp'a262=[[(LCSemi,Reduce(("procedure_specification_statement",2),1)), (LCAnnotation,Reduce(("procedure_specification_statement",2),1)), (LCLChevron,Reduce(("procedure_specification_statement",2),1)), (LCIs,Reduce(("procedure_specification_statement",2),1)), (LCRenames,Reduce(("procedure_specification_statement",2),1))]]@slrp'a263; val slrp'a261=[[(LCSemi,Reduce(("procedure_specification_statement",1),2)), (LCAnnotation,Reduce(("procedure_specification_statement",1),2)), (LCLChevron,Reduce(("procedure_specification_statement",1),2)), (LCIs,Reduce(("procedure_specification_statement",1),2)), (LCRenames,Reduce(("procedure_specification_statement",1),2))]]@slrp'a262; val slrp'a260=[[(LCSemi,Reduce(("procedure_specification_statement",0),3)), (LCAnnotation,Reduce(("procedure_specification_statement",0),3)), (LCLChevron,Reduce(("procedure_specification_statement",0),3)), (LCIs,Reduce(("procedure_specification_statement",0),3)), (LCRenames,Reduce(("procedure_specification_statement",0),3))]]@slrp'a261; val slrp'a259=[[(LCSemi,Reduce(("procedure_specification",0),2)), (LCIs,Reduce(("procedure_specification",0),2)), (LCRenames,Reduce(("procedure_specification",0),2))]]@slrp'a260; val slrp'a258=[[(LCSemi,Reduce(("procedure_specification_1",3),4)), (LCAnnotation,Reduce(("procedure_specification_1",3),4)), (LCLChevron,Reduce(("procedure_specification_1",3),4)), (LCIs,Reduce(("procedure_specification_1",3),4)), (LCRenames,Reduce(("procedure_specification_1",3),4))]]@slrp'a259; val slrp'a257=[[(LCSemi,Reduce(("procedure_specification_1",1),3)), (LCAnnotation,Reduce(("procedure_specification_1",1),3)), (LCLChevron,Reduce(("procedure_specification_1",1),3)), (LCIs,Reduce(("procedure_specification_1",1),3)), (LCRenames,Reduce(("procedure_specification_1",1),3))]]@slrp'a258; val slrp'a256=[[(LCRenames,Reduce(("subprogram_specification",1),1))]]@slrp'a257; val slrp'a255=[[(LCRenames,Reduce(("subprogram_specification",0),1))]]@slrp'a256; val slrp'a254=[[(LCEos,Reduce(("subprogram_declaration",1),2)), (LCEnd,Reduce(("subprogram_declaration",1),2)), (LCPrivate,Reduce(("subprogram_declaration",1),2)), (LCAuxiliary,Reduce(("subprogram_declaration",1),2)), (LCLChevron,Reduce(("subprogram_declaration",1),2)), (LCAnnotation,Reduce(("subprogram_declaration",1),2)), (LCSubType,Reduce(("subprogram_declaration",1),2)), (LCPragma,Reduce(("subprogram_declaration",1),2)), (LCFunction,Reduce(("subprogram_declaration",1),2)), (LCPackage,Reduce(("subprogram_declaration",1),2)), (LCType,Reduce(("subprogram_declaration",1),2)), (LCIdentifier,Reduce(("subprogram_declaration",1),2)), (LCFor,Reduce(("subprogram_declaration",1),2)), (LCUse,Reduce(("subprogram_declaration",1),2)), (LCProcedure,Reduce(("subprogram_declaration",1),2))]]@slrp'a255; val slrp'a253=[[(LCEos,Reduce(("subprogram_declaration",0),2)), (LCEnd,Reduce(("subprogram_declaration",0),2)), (LCPrivate,Reduce(("subprogram_declaration",0),2)), (LCAuxiliary,Reduce(("subprogram_declaration",0),2)), (LCLChevron,Reduce(("subprogram_declaration",0),2)), (LCAnnotation,Reduce(("subprogram_declaration",0),2)), (LCSubType,Reduce(("subprogram_declaration",0),2)), (LCPragma,Reduce(("subprogram_declaration",0),2)), (LCFunction,Reduce(("subprogram_declaration",0),2)), (LCPackage,Reduce(("subprogram_declaration",0),2)), (LCType,Reduce(("subprogram_declaration",0),2)), (LCIdentifier,Reduce(("subprogram_declaration",0),2)), (LCFor,Reduce(("subprogram_declaration",0),2)), (LCUse,Reduce(("subprogram_declaration",0),2)), (LCProcedure,Reduce(("subprogram_declaration",0),2))]]@slrp'a254; val slrp'a252=[[(LCEos,Reduce(("return_statement",1),3)), (LCAnnotation,Reduce(("return_statement",1),3)), (LCCon,Reduce(("return_statement",1),3)), (LCLChevron,Reduce(("return_statement",1),3)), (LCGrkGamma,Reduce(("return_statement",1),3)), (LCGrkDelta,Reduce(("return_statement",1),3)), (LCPragma,Reduce(("return_statement",1),3)), (LCNull,Reduce(("return_statement",1),3)), (LCExit,Reduce(("return_statement",1),3)), (LCReturn,Reduce(("return_statement",1),3)), (LCIf,Reduce(("return_statement",1),3)), (LCCase,Reduce(("return_statement",1),3)), (LCIdentifier,Reduce(("return_statement",1),3)), (LCCharacterLiteral,Reduce(("return_statement",1),3)), (LCTill,Reduce(("return_statement",1),3)), (LCLoop,Reduce(("return_statement",1),3)), (LCFor,Reduce(("return_statement",1),3)), (LCWhile,Reduce(("return_statement",1),3)), (LCElsIf,Reduce(("return_statement",1),3)), (LCElse,Reduce(("return_statement",1),3)), (LCEnd,Reduce(("return_statement",1),3)), (LCWhen,Reduce(("return_statement",1),3))]]@slrp'a253; val slrp'a251=[[(LCSemi,Shift 251)]]@slrp'a252; val slrp'a250=[[(LCEos,Reduce(("return_statement",0),2)), (LCAnnotation,Reduce(("return_statement",0),2)), (LCCon,Reduce(("return_statement",0),2)), (LCLChevron,Reduce(("return_statement",0),2)), (LCGrkGamma,Reduce(("return_statement",0),2)), (LCGrkDelta,Reduce(("return_statement",0),2)), (LCPragma,Reduce(("return_statement",0),2)), (LCNull,Reduce(("return_statement",0),2)), (LCExit,Reduce(("return_statement",0),2)), (LCReturn,Reduce(("return_statement",0),2)), (LCIf,Reduce(("return_statement",0),2)), (LCCase,Reduce(("return_statement",0),2)), (LCIdentifier,Reduce(("return_statement",0),2)), (LCCharacterLiteral,Reduce(("return_statement",0),2)), (LCTill,Reduce(("return_statement",0),2)), (LCLoop,Reduce(("return_statement",0),2)), (LCFor,Reduce(("return_statement",0),2)), (LCWhile,Reduce(("return_statement",0),2)), (LCElsIf,Reduce(("return_statement",0),2)), (LCElse,Reduce(("return_statement",0),2)), (LCEnd,Reduce(("return_statement",0),2)), (LCWhen,Reduce(("return_statement",0),2))]]@slrp'a251; val slrp'a249=[[(LCEos,Reduce(("exit_statement",1),5)), (LCAnnotation,Reduce(("exit_statement",1),5)), (LCCon,Reduce(("exit_statement",1),5)), (LCLChevron,Reduce(("exit_statement",1),5)), (LCGrkGamma,Reduce(("exit_statement",1),5)), (LCGrkDelta,Reduce(("exit_statement",1),5)), (LCPragma,Reduce(("exit_statement",1),5)), (LCNull,Reduce(("exit_statement",1),5)),(LCExit,Reduce(("exit_statement",1),5)), (LCReturn,Reduce(("exit_statement",1),5)),(LCIf,Reduce(("exit_statement",1),5)), (LCCase,Reduce(("exit_statement",1),5)), (LCIdentifier,Reduce(("exit_statement",1),5)), (LCCharacterLiteral,Reduce(("exit_statement",1),5)), (LCTill,Reduce(("exit_statement",1),5)),(LCLoop,Reduce(("exit_statement",1),5)), (LCFor,Reduce(("exit_statement",1),5)),(LCWhile,Reduce(("exit_statement",1),5)), (LCElsIf,Reduce(("exit_statement",1),5)),(LCElse,Reduce(("exit_statement",1),5)) ,(LCEnd,Reduce(("exit_statement",1),5)),(LCWhen,Reduce(("exit_statement",1),5))]]@slrp'a250; val slrp'a248=[[(LCSemi,Shift 248)]]@slrp'a249; val slrp'a247=[[(LCEos,Reduce(("exit_statement",0),3)), (LCAnnotation,Reduce(("exit_statement",0),3)), (LCCon,Reduce(("exit_statement",0),3)), (LCLChevron,Reduce(("exit_statement",0),3)), (LCGrkGamma,Reduce(("exit_statement",0),3)), (LCGrkDelta,Reduce(("exit_statement",0),3)), (LCPragma,Reduce(("exit_statement",0),3)), (LCNull,Reduce(("exit_statement",0),3)),(LCExit,Reduce(("exit_statement",0),3)), (LCReturn,Reduce(("exit_statement",0),3)),(LCIf,Reduce(("exit_statement",0),3)), (LCCase,Reduce(("exit_statement",0),3)), (LCIdentifier,Reduce(("exit_statement",0),3)), (LCCharacterLiteral,Reduce(("exit_statement",0),3)), (LCTill,Reduce(("exit_statement",0),3)),(LCLoop,Reduce(("exit_statement",0),3)), (LCFor,Reduce(("exit_statement",0),3)),(LCWhile,Reduce(("exit_statement",0),3)), (LCElsIf,Reduce(("exit_statement",0),3)),(LCElse,Reduce(("exit_statement",0),3)) ,(LCEnd,Reduce(("exit_statement",0),3)),(LCWhen,Reduce(("exit_statement",0),3))]]@slrp'a248; val slrp'a246=[[(LCEos,Reduce(("block_statement",1),6))]]@slrp'a247; val slrp'a245=[[(LCSemi,Shift 245)]]@slrp'a246; val slrp'a244=[[(LCEnd,Shift 503)]]@slrp'a245; val slrp'a243=[[(LCEos,Reduce(("block_statement",0),8))]]@slrp'a244; val slrp'a242=[[(LCSemi,Shift 242)]]@slrp'a243; val slrp'a241=[[(LCEnd,Shift 502)]]@slrp'a242; val slrp'a240=[[(LCBegin,Shift 681)]]@slrp'a241; val slrp'a239=[[(LCBecomes,Reduce(("auxiliary_expression",0),3)), (LCSemi,Reduce(("auxiliary_expression",0),3)), (LCRRange,Reduce(("auxiliary_expression",0),3)), (LCDigits,Reduce(("auxiliary_expression",0),3)), (LCDelta,Reduce(("auxiliary_expression",0),3)), (LCComma,Reduce(("auxiliary_expression",0),3)), (LCCrd,Reduce(("auxiliary_expression",0),3)), (LCAnd,Reduce(("auxiliary_expression",0),3)), (LCOr,Reduce(("auxiliary_expression",0),3)), (LCXor,Reduce(("auxiliary_expression",0),3)), (LCGreaterEquals,Reduce(("auxiliary_expression",0),3)), (LCGreaterThan,Reduce(("auxiliary_expression",0),3)), (LCLessEquals,Reduce(("auxiliary_expression",0),3)), (LCLessThan,Reduce(("auxiliary_expression",0),3)), (LCNotEquals,Reduce(("auxiliary_expression",0),3)), (LCEquals,Reduce(("auxiliary_expression",0),3)), (LCIn,Reduce(("auxiliary_expression",0),3)), (LCNot,Reduce(("auxiliary_expression",0),3)), (LCDotDot,Reduce(("auxiliary_expression",0),3)), (LCAmpersand,Reduce(("auxiliary_expression",0),3)), (LCMinus,Reduce(("auxiliary_expression",0),3)), (LCPlus,Reduce(("auxiliary_expression",0),3)), (LCRem,Reduce(("auxiliary_expression",0),3)), (LCMod,Reduce(("auxiliary_expression",0),3)), (LCDiv,Reduce(("auxiliary_expression",0),3)), (LCStar,Reduce(("auxiliary_expression",0),3)), (LCStarStar,Reduce(("auxiliary_expression",0),3)), (LCLoop,Reduce(("auxiliary_expression",0),3)), (LCThen,Reduce(("auxiliary_expression",0),3)), (LCIs,Reduce(("auxiliary_expression",0),3)), (LCGoesTo,Reduce(("auxiliary_expression",0),3)), (LCBar,Reduce(("auxiliary_expression",0),3)), (LCTill,Reduce(("auxiliary_expression",0),3))]]@slrp'a240; val slrp'a238=[[(LCRStrachey,Shift 238)]]@slrp'a239; val slrp'a237=[[(LCZ,Shift 237)]]@slrp'a238; val slrp'a236=[[(LCLoop,Reduce(("till_opt",1),2))]]@slrp'a237; val slrp'a235=[[(LCTill,Reduce(("loop_parameter_specification",1),4)), (LCLoop,Reduce(("loop_parameter_specification",1),4))]]@slrp'a236; val slrp'a234=[[(LCTill,Reduce(("loop_parameter_specification",0),3)), (LCLoop,Reduce(("loop_parameter_specification",0),3))]]@slrp'a235; val slrp'a233=[[(LCTill,Reduce(("iteration_scheme",1),2)), (LCLoop,Reduce(("iteration_scheme",1),2))]]@slrp'a234; val slrp'a232=[[(LCTill,Reduce(("iteration_scheme",0),2)), (LCLoop,Reduce(("iteration_scheme",0),2))]]@slrp'a233; val slrp'a231=[[(LCTill,Reduce(("iteration_scheme_opt",1),1)), (LCLoop,Reduce(("iteration_scheme_opt",1),1))]]@slrp'a232; val slrp'a230=[[(LCSemi,Reduce(("name_opt",1),1)), (LCWhen,Reduce(("name_opt",1),1))]]@slrp'a231; val slrp'a229=[[(LCFor,Reduce(("name_colon_opt",1),2)), (LCWhile,Reduce(("name_colon_opt",1),2)),(LCTill,Reduce(("name_colon_opt",1),2)) ,(LCLoop,Reduce(("name_colon_opt",1),2)), (LCDeclare,Reduce(("name_colon_opt",1),2)), (LCBegin,Reduce(("name_colon_opt",1),2))]]@slrp'a230; val slrp'a228=[[(LCIdentifier,Reduce(("loop_body",0),4)), (LCSemi,Reduce(("loop_body",0),4))]]@slrp'a229; val slrp'a227=[[(LCLoop,Shift 227)]]@slrp'a228; val slrp'a226=[[(LCEnd,Shift 226)]]@slrp'a227; val slrp'a225=[[(LCEos,Reduce(("loop_statement",0),6)), (LCAnnotation,Reduce(("loop_statement",0),6)), (LCCon,Reduce(("loop_statement",0),6)), (LCLChevron,Reduce(("loop_statement",0),6)), (LCGrkGamma,Reduce(("loop_statement",0),6)), (LCGrkDelta,Reduce(("loop_statement",0),6)), (LCPragma,Reduce(("loop_statement",0),6)), (LCNull,Reduce(("loop_statement",0),6)),(LCExit,Reduce(("loop_statement",0),6)), (LCReturn,Reduce(("loop_statement",0),6)),(LCIf,Reduce(("loop_statement",0),6)), (LCCase,Reduce(("loop_statement",0),6)), (LCIdentifier,Reduce(("loop_statement",0),6)), (LCCharacterLiteral,Reduce(("loop_statement",0),6)), (LCTill,Reduce(("loop_statement",0),6)),(LCLoop,Reduce(("loop_statement",0),6)), (LCFor,Reduce(("loop_statement",0),6)),(LCWhile,Reduce(("loop_statement",0),6)), (LCElsIf,Reduce(("loop_statement",0),6)),(LCElse,Reduce(("loop_statement",0),6)) ,(LCEnd,Reduce(("loop_statement",0),6)),(LCWhen,Reduce(("loop_statement",0),6))]]@slrp'a226; val slrp'a224=[[(LCSemi,Shift 224)]]@slrp'a225; val slrp'a223=[[(LCEnd,Reduce(("others_part",1),4))]]@slrp'a224; val slrp'a222=[[(LCGoesTo,Shift 679)]]@slrp'a223; val slrp'a221=[[(LCGoesTo,Reduce(("case_choice",0),1)), (LCBar,Reduce(("case_choice",0),1))]]@slrp'a222; val slrp'a220=[[(LCGoesTo,Reduce(("case_choice_list",1),3))]]@slrp'a221; val slrp'a219=[[(LCWhen,Reduce(("case_statement_alternative",0),4)), (LCEnd,Reduce(("case_statement_alternative",0),4))]]@slrp'a220; val slrp'a218=[[(LCGoesTo,Shift 678)]]@slrp'a219; val slrp'a217=[[(LCWhen,Reduce(("case_statement_alternative_list",1),2)), (LCEnd,Reduce(("case_statement_alternative_list",1),2))]]@slrp'a218; val slrp'a216=[[(LCWhen,Reduce(("case_statement_alternative_list",0),1)), (LCEnd,Reduce(("case_statement_alternative_list",0),1))]]@slrp'a217; val slrp'a215=[[(LCEos,Reduce(("case_statement",0),8)), (LCAnnotation,Reduce(("case_statement",0),8)), (LCCon,Reduce(("case_statement",0),8)), (LCLChevron,Reduce(("case_statement",0),8)), (LCGrkGamma,Reduce(("case_statement",0),8)), (LCGrkDelta,Reduce(("case_statement",0),8)), (LCPragma,Reduce(("case_statement",0),8)), (LCNull,Reduce(("case_statement",0),8)),(LCExit,Reduce(("case_statement",0),8)), (LCReturn,Reduce(("case_statement",0),8)),(LCIf,Reduce(("case_statement",0),8)), (LCCase,Reduce(("case_statement",0),8)), (LCIdentifier,Reduce(("case_statement",0),8)), (LCCharacterLiteral,Reduce(("case_statement",0),8)), (LCTill,Reduce(("case_statement",0),8)),(LCLoop,Reduce(("case_statement",0),8)), (LCFor,Reduce(("case_statement",0),8)),(LCWhile,Reduce(("case_statement",0),8)), (LCElsIf,Reduce(("case_statement",0),8)),(LCElse,Reduce(("case_statement",0),8)) ,(LCEnd,Reduce(("case_statement",0),8)),(LCWhen,Reduce(("case_statement",0),8))]]@slrp'a216; val slrp'a214=[[(LCSemi,Shift 214)]]@slrp'a215; val slrp'a213=[[(LCCase,Shift 213)]]@slrp'a214; val slrp'a212=[[(LCEnd,Shift 212)]]@slrp'a213; val slrp'a211=[[(LCIs,Shift 526)]]@slrp'a212; val slrp'a210=[[(LCThen,Reduce(("condition",0),1)), (LCTill,Reduce(("condition",0),1)),(LCLoop,Reduce(("condition",0),1)), (LCSemi,Reduce(("condition",0),1))]]@slrp'a211; val slrp'a209=[[(LCEnd,Reduce(("else_part",1),2))]]@slrp'a210; val slrp'a208=[[(LCElse,Reduce(("elsif_part",1),5)), (LCEnd,Reduce(("elsif_part",1),5))]]@slrp'a209; val slrp'a207=[[(LCThen,Shift 676)]]@slrp'a208; val slrp'a206=[[(LCEos,Reduce(("if_statement",0),9)), (LCAnnotation,Reduce(("if_statement",0),9)),(LCCon,Reduce(("if_statement",0),9)) ,(LCLChevron,Reduce(("if_statement",0),9)), (LCGrkGamma,Reduce(("if_statement",0),9)), (LCGrkDelta,Reduce(("if_statement",0),9)), (LCPragma,Reduce(("if_statement",0),9)),(LCNull,Reduce(("if_statement",0),9)), (LCExit,Reduce(("if_statement",0),9)),(LCReturn,Reduce(("if_statement",0),9)), (LCIf,Reduce(("if_statement",0),9)),(LCCase,Reduce(("if_statement",0),9)), (LCIdentifier,Reduce(("if_statement",0),9)), (LCCharacterLiteral,Reduce(("if_statement",0),9)), (LCTill,Reduce(("if_statement",0),9)),(LCLoop,Reduce(("if_statement",0),9)), (LCFor,Reduce(("if_statement",0),9)),(LCWhile,Reduce(("if_statement",0),9)), (LCElsIf,Reduce(("if_statement",0),9)),(LCElse,Reduce(("if_statement",0),9)), (LCEnd,Reduce(("if_statement",0),9)),(LCWhen,Reduce(("if_statement",0),9))]]@slrp'a207; val slrp'a205=[[(LCSemi,Shift 205)]]@slrp'a206; val slrp'a204=[[(LCIf,Shift 204)]]@slrp'a205; val slrp'a203=[[(LCEnd,Shift 203)]]@slrp'a204; val slrp'a202=[[(LCThen,Shift 675)]]@slrp'a203; val slrp'a201=[[(LCEos,Reduce(("assignment_statement",0),4)), (LCAnnotation,Reduce(("assignment_statement",0),4)), (LCCon,Reduce(("assignment_statement",0),4)), (LCLChevron,Reduce(("assignment_statement",0),4)), (LCGrkGamma,Reduce(("assignment_statement",0),4)), (LCGrkDelta,Reduce(("assignment_statement",0),4)), (LCPragma,Reduce(("assignment_statement",0),4)), (LCNull,Reduce(("assignment_statement",0),4)), (LCExit,Reduce(("assignment_statement",0),4)), (LCReturn,Reduce(("assignment_statement",0),4)), (LCIf,Reduce(("assignment_statement",0),4)), (LCCase,Reduce(("assignment_statement",0),4)), (LCIdentifier,Reduce(("assignment_statement",0),4)), (LCCharacterLiteral,Reduce(("assignment_statement",0),4)), (LCTill,Reduce(("assignment_statement",0),4)), (LCLoop,Reduce(("assignment_statement",0),4)), (LCFor,Reduce(("assignment_statement",0),4)), (LCWhile,Reduce(("assignment_statement",0),4)), (LCElsIf,Reduce(("assignment_statement",0),4)), (LCElse,Reduce(("assignment_statement",0),4)), (LCEnd,Reduce(("assignment_statement",0),4)), (LCWhen,Reduce(("assignment_statement",0),4))]]@slrp'a202; val slrp'a200=[[(LCSemi,Shift 200)]]@slrp'a201; val slrp'a199=[[(LCEos,Reduce(("null_statement",0),2)), (LCAnnotation,Reduce(("null_statement",0),2)), (LCCon,Reduce(("null_statement",0),2)), (LCLChevron,Reduce(("null_statement",0),2)), (LCGrkGamma,Reduce(("null_statement",0),2)), (LCGrkDelta,Reduce(("null_statement",0),2)), (LCPragma,Reduce(("null_statement",0),2)), (LCNull,Reduce(("null_statement",0),2)),(LCExit,Reduce(("null_statement",0),2)), (LCReturn,Reduce(("null_statement",0),2)),(LCIf,Reduce(("null_statement",0),2)), (LCCase,Reduce(("null_statement",0),2)), (LCIdentifier,Reduce(("null_statement",0),2)), (LCCharacterLiteral,Reduce(("null_statement",0),2)), (LCTill,Reduce(("null_statement",0),2)),(LCLoop,Reduce(("null_statement",0),2)), (LCFor,Reduce(("null_statement",0),2)),(LCWhile,Reduce(("null_statement",0),2)), (LCElsIf,Reduce(("null_statement",0),2)),(LCElse,Reduce(("null_statement",0),2)) ,(LCEnd,Reduce(("null_statement",0),2)),(LCWhen,Reduce(("null_statement",0),2))]]@slrp'a200; val slrp'a198=[[(LCSemi,Shift 198)]]@slrp'a199; val slrp'a197=[[(LCEos,Reduce(("compound_statement",2),1)), (LCAnnotation,Reduce(("compound_statement",2),1)), (LCCon,Reduce(("compound_statement",2),1)), (LCLChevron,Reduce(("compound_statement",2),1)), (LCGrkGamma,Reduce(("compound_statement",2),1)), (LCGrkDelta,Reduce(("compound_statement",2),1)), (LCPragma,Reduce(("compound_statement",2),1)), (LCNull,Reduce(("compound_statement",2),1)), (LCExit,Reduce(("compound_statement",2),1)), (LCReturn,Reduce(("compound_statement",2),1)), (LCIf,Reduce(("compound_statement",2),1)), (LCCase,Reduce(("compound_statement",2),1)), (LCIdentifier,Reduce(("compound_statement",2),1)), (LCCharacterLiteral,Reduce(("compound_statement",2),1)), (LCTill,Reduce(("compound_statement",2),1)), (LCLoop,Reduce(("compound_statement",2),1)), (LCFor,Reduce(("compound_statement",2),1)), (LCWhile,Reduce(("compound_statement",2),1)), (LCElsIf,Reduce(("compound_statement",2),1)), (LCElse,Reduce(("compound_statement",2),1)), (LCEnd,Reduce(("compound_statement",2),1)), (LCWhen,Reduce(("compound_statement",2),1))]]@slrp'a198; val slrp'a196=[[(LCEos,Reduce(("compound_statement",1),1)), (LCAnnotation,Reduce(("compound_statement",1),1)), (LCCon,Reduce(("compound_statement",1),1)), (LCLChevron,Reduce(("compound_statement",1),1)), (LCGrkGamma,Reduce(("compound_statement",1),1)), (LCGrkDelta,Reduce(("compound_statement",1),1)), (LCPragma,Reduce(("compound_statement",1),1)), (LCNull,Reduce(("compound_statement",1),1)), (LCExit,Reduce(("compound_statement",1),1)), (LCReturn,Reduce(("compound_statement",1),1)), (LCIf,Reduce(("compound_statement",1),1)), (LCCase,Reduce(("compound_statement",1),1)), (LCIdentifier,Reduce(("compound_statement",1),1)), (LCCharacterLiteral,Reduce(("compound_statement",1),1)), (LCTill,Reduce(("compound_statement",1),1)), (LCLoop,Reduce(("compound_statement",1),1)), (LCFor,Reduce(("compound_statement",1),1)), (LCWhile,Reduce(("compound_statement",1),1)), (LCElsIf,Reduce(("compound_statement",1),1)), (LCElse,Reduce(("compound_statement",1),1)), (LCEnd,Reduce(("compound_statement",1),1)), (LCWhen,Reduce(("compound_statement",1),1))]]@slrp'a197; val slrp'a195=[[(LCEos,Reduce(("compound_statement",0),1)), (LCAnnotation,Reduce(("compound_statement",0),1)), (LCCon,Reduce(("compound_statement",0),1)), (LCLChevron,Reduce(("compound_statement",0),1)), (LCGrkGamma,Reduce(("compound_statement",0),1)), (LCGrkDelta,Reduce(("compound_statement",0),1)), (LCPragma,Reduce(("compound_statement",0),1)), (LCNull,Reduce(("compound_statement",0),1)), (LCExit,Reduce(("compound_statement",0),1)), (LCReturn,Reduce(("compound_statement",0),1)), (LCIf,Reduce(("compound_statement",0),1)), (LCCase,Reduce(("compound_statement",0),1)), (LCIdentifier,Reduce(("compound_statement",0),1)), (LCCharacterLiteral,Reduce(("compound_statement",0),1)), (LCTill,Reduce(("compound_statement",0),1)), (LCLoop,Reduce(("compound_statement",0),1)), (LCFor,Reduce(("compound_statement",0),1)), (LCWhile,Reduce(("compound_statement",0),1)), (LCElsIf,Reduce(("compound_statement",0),1)), (LCElse,Reduce(("compound_statement",0),1)), (LCEnd,Reduce(("compound_statement",0),1)), (LCWhen,Reduce(("compound_statement",0),1))]]@slrp'a196; val slrp'a194=[[(LCEos,Reduce(("simple_statement",4),1)), (LCAnnotation,Reduce(("simple_statement",4),1)), (LCCon,Reduce(("simple_statement",4),1)), (LCLChevron,Reduce(("simple_statement",4),1)), (LCGrkGamma,Reduce(("simple_statement",4),1)), (LCGrkDelta,Reduce(("simple_statement",4),1)), (LCPragma,Reduce(("simple_statement",4),1)), (LCNull,Reduce(("simple_statement",4),1)), (LCExit,Reduce(("simple_statement",4),1)), (LCReturn,Reduce(("simple_statement",4),1)), (LCIf,Reduce(("simple_statement",4),1)), (LCCase,Reduce(("simple_statement",4),1)), (LCIdentifier,Reduce(("simple_statement",4),1)), (LCCharacterLiteral,Reduce(("simple_statement",4),1)), (LCTill,Reduce(("simple_statement",4),1)), (LCLoop,Reduce(("simple_statement",4),1)), (LCFor,Reduce(("simple_statement",4),1)), (LCWhile,Reduce(("simple_statement",4),1)), (LCElsIf,Reduce(("simple_statement",4),1)), (LCElse,Reduce(("simple_statement",4),1)), (LCEnd,Reduce(("simple_statement",4),1)), (LCWhen,Reduce(("simple_statement",4),1))]]@slrp'a195; val slrp'a193=[[(LCEos,Reduce(("simple_statement",3),1)), (LCAnnotation,Reduce(("simple_statement",3),1)), (LCCon,Reduce(("simple_statement",3),1)), (LCLChevron,Reduce(("simple_statement",3),1)), (LCGrkGamma,Reduce(("simple_statement",3),1)), (LCGrkDelta,Reduce(("simple_statement",3),1)), (LCPragma,Reduce(("simple_statement",3),1)), (LCNull,Reduce(("simple_statement",3),1)), (LCExit,Reduce(("simple_statement",3),1)), (LCReturn,Reduce(("simple_statement",3),1)), (LCIf,Reduce(("simple_statement",3),1)), (LCCase,Reduce(("simple_statement",3),1)), (LCIdentifier,Reduce(("simple_statement",3),1)), (LCCharacterLiteral,Reduce(("simple_statement",3),1)), (LCTill,Reduce(("simple_statement",3),1)), (LCLoop,Reduce(("simple_statement",3),1)), (LCFor,Reduce(("simple_statement",3),1)), (LCWhile,Reduce(("simple_statement",3),1)), (LCElsIf,Reduce(("simple_statement",3),1)), (LCElse,Reduce(("simple_statement",3),1)), (LCEnd,Reduce(("simple_statement",3),1)), (LCWhen,Reduce(("simple_statement",3),1))]]@slrp'a194; val slrp'a192=[[(LCEos,Reduce(("simple_statement",2),1)), (LCAnnotation,Reduce(("simple_statement",2),1)), (LCCon,Reduce(("simple_statement",2),1)), (LCLChevron,Reduce(("simple_statement",2),1)), (LCGrkGamma,Reduce(("simple_statement",2),1)), (LCGrkDelta,Reduce(("simple_statement",2),1)), (LCPragma,Reduce(("simple_statement",2),1)), (LCNull,Reduce(("simple_statement",2),1)), (LCExit,Reduce(("simple_statement",2),1)), (LCReturn,Reduce(("simple_statement",2),1)), (LCIf,Reduce(("simple_statement",2),1)), (LCCase,Reduce(("simple_statement",2),1)), (LCIdentifier,Reduce(("simple_statement",2),1)), (LCCharacterLiteral,Reduce(("simple_statement",2),1)), (LCTill,Reduce(("simple_statement",2),1)), (LCLoop,Reduce(("simple_statement",2),1)), (LCFor,Reduce(("simple_statement",2),1)), (LCWhile,Reduce(("simple_statement",2),1)), (LCElsIf,Reduce(("simple_statement",2),1)), (LCElse,Reduce(("simple_statement",2),1)), (LCEnd,Reduce(("simple_statement",2),1)), (LCWhen,Reduce(("simple_statement",2),1))]]@slrp'a193; val slrp'a191=[[(LCEos,Reduce(("simple_statement",1),1)), (LCAnnotation,Reduce(("simple_statement",1),1)), (LCCon,Reduce(("simple_statement",1),1)), (LCLChevron,Reduce(("simple_statement",1),1)), (LCGrkGamma,Reduce(("simple_statement",1),1)), (LCGrkDelta,Reduce(("simple_statement",1),1)), (LCPragma,Reduce(("simple_statement",1),1)), (LCNull,Reduce(("simple_statement",1),1)), (LCExit,Reduce(("simple_statement",1),1)), (LCReturn,Reduce(("simple_statement",1),1)), (LCIf,Reduce(("simple_statement",1),1)), (LCCase,Reduce(("simple_statement",1),1)), (LCIdentifier,Reduce(("simple_statement",1),1)), (LCCharacterLiteral,Reduce(("simple_statement",1),1)), (LCTill,Reduce(("simple_statement",1),1)), (LCLoop,Reduce(("simple_statement",1),1)), (LCFor,Reduce(("simple_statement",1),1)), (LCWhile,Reduce(("simple_statement",1),1)), (LCElsIf,Reduce(("simple_statement",1),1)), (LCElse,Reduce(("simple_statement",1),1)), (LCEnd,Reduce(("simple_statement",1),1)), (LCWhen,Reduce(("simple_statement",1),1))]]@slrp'a192; val slrp'a190=[[(LCEos,Reduce(("simple_statement",0),1)), (LCAnnotation,Reduce(("simple_statement",0),1)), (LCCon,Reduce(("simple_statement",0),1)), (LCLChevron,Reduce(("simple_statement",0),1)), (LCGrkGamma,Reduce(("simple_statement",0),1)), (LCGrkDelta,Reduce(("simple_statement",0),1)), (LCPragma,Reduce(("simple_statement",0),1)), (LCNull,Reduce(("simple_statement",0),1)), (LCExit,Reduce(("simple_statement",0),1)), (LCReturn,Reduce(("simple_statement",0),1)), (LCIf,Reduce(("simple_statement",0),1)), (LCCase,Reduce(("simple_statement",0),1)), (LCIdentifier,Reduce(("simple_statement",0),1)), (LCCharacterLiteral,Reduce(("simple_statement",0),1)), (LCTill,Reduce(("simple_statement",0),1)), (LCLoop,Reduce(("simple_statement",0),1)), (LCFor,Reduce(("simple_statement",0),1)), (LCWhile,Reduce(("simple_statement",0),1)), (LCElsIf,Reduce(("simple_statement",0),1)), (LCElse,Reduce(("simple_statement",0),1)), (LCEnd,Reduce(("simple_statement",0),1)), (LCWhen,Reduce(("simple_statement",0),1))]]@slrp'a191; val slrp'a189=[[(LCEos,Reduce(("k_slot",1),4)), (LCLChevron,Reduce(("k_slot",1),4)),(LCFunction,Reduce(("k_slot",1),4)), (LCPackage,Reduce(("k_slot",1),4)),(LCIdentifier,Reduce(("k_slot",1),4)), (LCAnnotation,Reduce(("k_slot",1),4)),(LCSubType,Reduce(("k_slot",1),4)), (LCPragma,Reduce(("k_slot",1),4)),(LCProcedure,Reduce(("k_slot",1),4)), (LCType,Reduce(("k_slot",1),4)),(LCFor,Reduce(("k_slot",1),4)), (LCUse,Reduce(("k_slot",1),4)),(LCCon,Reduce(("k_slot",1),4)), (LCGrkGamma,Reduce(("k_slot",1),4)),(LCGrkDelta,Reduce(("k_slot",1),4)), (LCNull,Reduce(("k_slot",1),4)),(LCExit,Reduce(("k_slot",1),4)), (LCReturn,Reduce(("k_slot",1),4)),(LCIf,Reduce(("k_slot",1),4)), (LCCase,Reduce(("k_slot",1),4)),(LCCharacterLiteral,Reduce(("k_slot",1),4)), (LCTill,Reduce(("k_slot",1),4)),(LCLoop,Reduce(("k_slot",1),4)), (LCWhile,Reduce(("k_slot",1),4)),(LCSemi,Reduce(("k_slot",1),4)), (LCEnd,Reduce(("k_slot",1),4)),(LCPrivate,Reduce(("k_slot",1),4)), (LCAuxiliary,Reduce(("k_slot",1),4)),(LCBegin,Reduce(("k_slot",1),4)), (LCElsIf,Reduce(("k_slot",1),4)),(LCElse,Reduce(("k_slot",1),4)), (LCWhen,Reduce(("k_slot",1),4)),(LCIs,Reduce(("k_slot",1),4)), (LCRenames,Reduce(("k_slot",1),4)),(LCSeparate,Reduce(("k_slot",1),4))]]@slrp'a190; val slrp'a188=[[(LCEos,Reduce(("label",1),3)), (LCAnnotation,Reduce(("label",1),3)),(LCCon,Reduce(("label",1),3)), (LCLChevron,Reduce(("label",1),3)),(LCGrkGamma,Reduce(("label",1),3)), (LCGrkDelta,Reduce(("label",1),3)),(LCPragma,Reduce(("label",1),3)), (LCNull,Reduce(("label",1),3)),(LCExit,Reduce(("label",1),3)), (LCReturn,Reduce(("label",1),3)),(LCIf,Reduce(("label",1),3)), (LCCase,Reduce(("label",1),3)),(LCIdentifier,Reduce(("label",1),3)), (LCCharacterLiteral,Reduce(("label",1),3)),(LCTill,Reduce(("label",1),3)), (LCLoop,Reduce(("label",1),3)),(LCFor,Reduce(("label",1),3)), (LCWhile,Reduce(("label",1),3)),(LCFunction,Reduce(("label",1),3)), (LCPackage,Reduce(("label",1),3)),(LCSubType,Reduce(("label",1),3)), (LCProcedure,Reduce(("label",1),3)),(LCType,Reduce(("label",1),3)), (LCUse,Reduce(("label",1),3)),(LCElsIf,Reduce(("label",1),3)), (LCElse,Reduce(("label",1),3)),(LCEnd,Reduce(("label",1),3)), (LCWhen,Reduce(("label",1),3)),(LCSemi,Reduce(("label",1),3)), (LCPrivate,Reduce(("label",1),3)),(LCAuxiliary,Reduce(("label",1),3)), (LCBegin,Reduce(("label",1),3)),(LCIs,Reduce(("label",1),3)), (LCRenames,Reduce(("label",1),3)),(LCSeparate,Reduce(("label",1),3))]]@slrp'a189; val slrp'a187=[[(LCEos,Reduce(("label",0),3)), (LCAnnotation,Reduce(("label",0),3)),(LCCon,Reduce(("label",0),3)), (LCLChevron,Reduce(("label",0),3)),(LCGrkGamma,Reduce(("label",0),3)), (LCGrkDelta,Reduce(("label",0),3)),(LCPragma,Reduce(("label",0),3)), (LCNull,Reduce(("label",0),3)),(LCExit,Reduce(("label",0),3)), (LCReturn,Reduce(("label",0),3)),(LCIf,Reduce(("label",0),3)), (LCCase,Reduce(("label",0),3)),(LCIdentifier,Reduce(("label",0),3)), (LCCharacterLiteral,Reduce(("label",0),3)),(LCTill,Reduce(("label",0),3)), (LCLoop,Reduce(("label",0),3)),(LCFor,Reduce(("label",0),3)), (LCWhile,Reduce(("label",0),3)),(LCFunction,Reduce(("label",0),3)), (LCPackage,Reduce(("label",0),3)),(LCSubType,Reduce(("label",0),3)), (LCProcedure,Reduce(("label",0),3)),(LCType,Reduce(("label",0),3)), (LCUse,Reduce(("label",0),3)),(LCElsIf,Reduce(("label",0),3)), (LCElse,Reduce(("label",0),3)),(LCEnd,Reduce(("label",0),3)), (LCWhen,Reduce(("label",0),3)),(LCSemi,Reduce(("label",0),3)), (LCPrivate,Reduce(("label",0),3)),(LCAuxiliary,Reduce(("label",0),3)), (LCBegin,Reduce(("label",0),3)),(LCIs,Reduce(("label",0),3)), (LCRenames,Reduce(("label",0),3)),(LCSeparate,Reduce(("label",0),3))]]@slrp'a188; val slrp'a186=[[(LCCrd,Shift 186)]]@slrp'a187; val slrp'a185=[[(LCEos,Reduce(("specification_statement",4),4)), (LCAnnotation,Reduce(("specification_statement",4),4)), (LCCon,Reduce(("specification_statement",4),4)), (LCLChevron,Reduce(("specification_statement",4),4)), (LCGrkGamma,Reduce(("specification_statement",4),4)), (LCGrkDelta,Reduce(("specification_statement",4),4)), (LCPragma,Reduce(("specification_statement",4),4)), (LCNull,Reduce(("specification_statement",4),4)), (LCExit,Reduce(("specification_statement",4),4)), (LCReturn,Reduce(("specification_statement",4),4)), (LCIf,Reduce(("specification_statement",4),4)), (LCCase,Reduce(("specification_statement",4),4)), (LCIdentifier,Reduce(("specification_statement",4),4)), (LCCharacterLiteral,Reduce(("specification_statement",4),4)), (LCTill,Reduce(("specification_statement",4),4)), (LCLoop,Reduce(("specification_statement",4),4)), (LCFor,Reduce(("specification_statement",4),4)), (LCWhile,Reduce(("specification_statement",4),4)), (LCOrd,Reduce(("specification_statement",4),4)), (LCElsIf,Reduce(("specification_statement",4),4)), (LCElse,Reduce(("specification_statement",4),4)), (LCEnd,Reduce(("specification_statement",4),4)), (LCWhen,Reduce(("specification_statement",4),4)), (LCSemi,Reduce(("specification_statement",4),4)), (LCIs,Reduce(("specification_statement",4),4)), (LCRenames,Reduce(("specification_statement",4),4))]]@slrp'a186; val slrp'a184=[[(LCRBrace,Shift 184)]]@slrp'a185; val slrp'a183=[[(LCZ,Shift 183)]]@slrp'a184; val slrp'a182=[[(LCLBrace,Shift 182)]]@slrp'a183; val slrp'a181=[[(LCEos,Reduce(("specification_statement",3),4)), (LCAnnotation,Reduce(("specification_statement",3),4)), (LCCon,Reduce(("specification_statement",3),4)), (LCLChevron,Reduce(("specification_statement",3),4)), (LCGrkGamma,Reduce(("specification_statement",3),4)), (LCGrkDelta,Reduce(("specification_statement",3),4)), (LCPragma,Reduce(("specification_statement",3),4)), (LCNull,Reduce(("specification_statement",3),4)), (LCExit,Reduce(("specification_statement",3),4)), (LCReturn,Reduce(("specification_statement",3),4)), (LCIf,Reduce(("specification_statement",3),4)), (LCCase,Reduce(("specification_statement",3),4)), (LCIdentifier,Reduce(("specification_statement",3),4)), (LCCharacterLiteral,Reduce(("specification_statement",3),4)), (LCTill,Reduce(("specification_statement",3),4)), (LCLoop,Reduce(("specification_statement",3),4)), (LCFor,Reduce(("specification_statement",3),4)), (LCWhile,Reduce(("specification_statement",3),4)), (LCOrd,Reduce(("specification_statement",3),4)), (LCElsIf,Reduce(("specification_statement",3),4)), (LCElse,Reduce(("specification_statement",3),4)), (LCEnd,Reduce(("specification_statement",3),4)), (LCWhen,Reduce(("specification_statement",3),4)), (LCSemi,Reduce(("specification_statement",3),4)), (LCIs,Reduce(("specification_statement",3),4)), (LCRenames,Reduce(("specification_statement",3),4))]]@slrp'a182; val slrp'a180=[[(LCRBrace,Shift 180)]]@slrp'a181; val slrp'a179=[[(LCZ,Shift 179)]]@slrp'a180; val slrp'a178=[[(LCEos,Reduce(("specification_statement",2),4)), (LCAnnotation,Reduce(("specification_statement",2),4)), (LCCon,Reduce(("specification_statement",2),4)), (LCLChevron,Reduce(("specification_statement",2),4)), (LCGrkGamma,Reduce(("specification_statement",2),4)), (LCGrkDelta,Reduce(("specification_statement",2),4)), (LCPragma,Reduce(("specification_statement",2),4)), (LCNull,Reduce(("specification_statement",2),4)), (LCExit,Reduce(("specification_statement",2),4)), (LCReturn,Reduce(("specification_statement",2),4)), (LCIf,Reduce(("specification_statement",2),4)), (LCCase,Reduce(("specification_statement",2),4)), (LCIdentifier,Reduce(("specification_statement",2),4)), (LCCharacterLiteral,Reduce(("specification_statement",2),4)), (LCTill,Reduce(("specification_statement",2),4)), (LCLoop,Reduce(("specification_statement",2),4)), (LCFor,Reduce(("specification_statement",2),4)), (LCWhile,Reduce(("specification_statement",2),4)), (LCOrd,Reduce(("specification_statement",2),4)), (LCElsIf,Reduce(("specification_statement",2),4)), (LCElse,Reduce(("specification_statement",2),4)), (LCEnd,Reduce(("specification_statement",2),4)), (LCWhen,Reduce(("specification_statement",2),4)), (LCSemi,Reduce(("specification_statement",2),4)), (LCIs,Reduce(("specification_statement",2),4)), (LCRenames,Reduce(("specification_statement",2),4))]]@slrp'a179; val slrp'a177=[[(LCRSqBrack,Shift 177)]]@slrp'a178; val slrp'a176=[[(LCZ,Shift 176)]]@slrp'a177; val slrp'a175=[[(LCEos,Reduce(("specification_statement",1),5)), (LCAnnotation,Reduce(("specification_statement",1),5)), (LCCon,Reduce(("specification_statement",1),5)), (LCLChevron,Reduce(("specification_statement",1),5)), (LCGrkGamma,Reduce(("specification_statement",1),5)), (LCGrkDelta,Reduce(("specification_statement",1),5)), (LCPragma,Reduce(("specification_statement",1),5)), (LCNull,Reduce(("specification_statement",1),5)), (LCExit,Reduce(("specification_statement",1),5)), (LCReturn,Reduce(("specification_statement",1),5)), (LCIf,Reduce(("specification_statement",1),5)), (LCCase,Reduce(("specification_statement",1),5)), (LCIdentifier,Reduce(("specification_statement",1),5)), (LCCharacterLiteral,Reduce(("specification_statement",1),5)), (LCTill,Reduce(("specification_statement",1),5)), (LCLoop,Reduce(("specification_statement",1),5)), (LCFor,Reduce(("specification_statement",1),5)), (LCWhile,Reduce(("specification_statement",1),5)), (LCOrd,Reduce(("specification_statement",1),5)), (LCElsIf,Reduce(("specification_statement",1),5)), (LCElse,Reduce(("specification_statement",1),5)), (LCEnd,Reduce(("specification_statement",1),5)), (LCWhen,Reduce(("specification_statement",1),5)), (LCSemi,Reduce(("specification_statement",1),5)), (LCIs,Reduce(("specification_statement",1),5)), (LCRenames,Reduce(("specification_statement",1),5))]]@slrp'a176; val slrp'a174=[[(LCRBrace,Shift 174)]]@slrp'a175; val slrp'a173=[[(LCZ,Shift 173)]]@slrp'a174; val slrp'a172=[[(LCEos,Reduce(("specification_statement",0),5)), (LCAnnotation,Reduce(("specification_statement",0),5)), (LCCon,Reduce(("specification_statement",0),5)), (LCLChevron,Reduce(("specification_statement",0),5)), (LCGrkGamma,Reduce(("specification_statement",0),5)), (LCGrkDelta,Reduce(("specification_statement",0),5)), (LCPragma,Reduce(("specification_statement",0),5)), (LCNull,Reduce(("specification_statement",0),5)), (LCExit,Reduce(("specification_statement",0),5)), (LCReturn,Reduce(("specification_statement",0),5)), (LCIf,Reduce(("specification_statement",0),5)), (LCCase,Reduce(("specification_statement",0),5)), (LCIdentifier,Reduce(("specification_statement",0),5)), (LCCharacterLiteral,Reduce(("specification_statement",0),5)), (LCTill,Reduce(("specification_statement",0),5)), (LCLoop,Reduce(("specification_statement",0),5)), (LCFor,Reduce(("specification_statement",0),5)), (LCWhile,Reduce(("specification_statement",0),5)), (LCOrd,Reduce(("specification_statement",0),5)), (LCElsIf,Reduce(("specification_statement",0),5)), (LCElse,Reduce(("specification_statement",0),5)), (LCEnd,Reduce(("specification_statement",0),5)), (LCWhen,Reduce(("specification_statement",0),5)), (LCSemi,Reduce(("specification_statement",0),5)), (LCIs,Reduce(("specification_statement",0),5)), (LCRenames,Reduce(("specification_statement",0),5))]]@slrp'a173; val slrp'a171=[[(LCRSqBrack,Shift 171)]]@slrp'a172; val slrp'a170=[[(LCZ,Shift 170)]]@slrp'a171; val slrp'a169=[[(LCEos,Reduce(("statement",8),1)), (LCAnnotation,Reduce(("statement",8),1)),(LCCon,Reduce(("statement",8),1)), (LCLChevron,Reduce(("statement",8),1)),(LCGrkGamma,Reduce(("statement",8),1)), (LCGrkDelta,Reduce(("statement",8),1)),(LCPragma,Reduce(("statement",8),1)), (LCNull,Reduce(("statement",8),1)),(LCExit,Reduce(("statement",8),1)), (LCReturn,Reduce(("statement",8),1)),(LCIf,Reduce(("statement",8),1)), (LCCase,Reduce(("statement",8),1)),(LCIdentifier,Reduce(("statement",8),1)), (LCCharacterLiteral,Reduce(("statement",8),1)), (LCTill,Reduce(("statement",8),1)),(LCLoop,Reduce(("statement",8),1)), (LCFor,Reduce(("statement",8),1)),(LCWhile,Reduce(("statement",8),1)), (LCElsIf,Reduce(("statement",8),1)),(LCElse,Reduce(("statement",8),1)), (LCEnd,Reduce(("statement",8),1)),(LCWhen,Reduce(("statement",8),1))]]@slrp'a170; val slrp'a168=[[(LCEos,Reduce(("statement",7),1)), (LCAnnotation,Reduce(("statement",7),1)),(LCCon,Reduce(("statement",7),1)), (LCLChevron,Reduce(("statement",7),1)),(LCGrkGamma,Reduce(("statement",7),1)), (LCGrkDelta,Reduce(("statement",7),1)),(LCPragma,Reduce(("statement",7),1)), (LCNull,Reduce(("statement",7),1)),(LCExit,Reduce(("statement",7),1)), (LCReturn,Reduce(("statement",7),1)),(LCIf,Reduce(("statement",7),1)), (LCCase,Reduce(("statement",7),1)),(LCIdentifier,Reduce(("statement",7),1)), (LCCharacterLiteral,Reduce(("statement",7),1)), (LCTill,Reduce(("statement",7),1)),(LCLoop,Reduce(("statement",7),1)), (LCFor,Reduce(("statement",7),1)),(LCWhile,Reduce(("statement",7),1)), (LCElsIf,Reduce(("statement",7),1)),(LCElse,Reduce(("statement",7),1)), (LCEnd,Reduce(("statement",7),1)),(LCWhen,Reduce(("statement",7),1))]]@slrp'a169; val slrp'a167=[[(LCEos,Reduce(("statement",6),1)), (LCAnnotation,Reduce(("statement",6),1)),(LCCon,Reduce(("statement",6),1)), (LCLChevron,Reduce(("statement",6),1)),(LCGrkGamma,Reduce(("statement",6),1)), (LCGrkDelta,Reduce(("statement",6),1)),(LCPragma,Reduce(("statement",6),1)), (LCNull,Reduce(("statement",6),1)),(LCExit,Reduce(("statement",6),1)), (LCReturn,Reduce(("statement",6),1)),(LCIf,Reduce(("statement",6),1)), (LCCase,Reduce(("statement",6),1)),(LCIdentifier,Reduce(("statement",6),1)), (LCCharacterLiteral,Reduce(("statement",6),1)), (LCTill,Reduce(("statement",6),1)),(LCLoop,Reduce(("statement",6),1)), (LCFor,Reduce(("statement",6),1)),(LCWhile,Reduce(("statement",6),1)), (LCElsIf,Reduce(("statement",6),1)),(LCElse,Reduce(("statement",6),1)), (LCEnd,Reduce(("statement",6),1)),(LCWhen,Reduce(("statement",6),1))]]@slrp'a168; val slrp'a166=[[(LCEos,Reduce(("statement",5),1)), (LCAnnotation,Reduce(("statement",5),1)),(LCCon,Reduce(("statement",5),1)), (LCLChevron,Reduce(("statement",5),1)),(LCGrkGamma,Reduce(("statement",5),1)), (LCGrkDelta,Reduce(("statement",5),1)),(LCPragma,Reduce(("statement",5),1)), (LCNull,Reduce(("statement",5),1)),(LCExit,Reduce(("statement",5),1)), (LCReturn,Reduce(("statement",5),1)),(LCIf,Reduce(("statement",5),1)), (LCCase,Reduce(("statement",5),1)),(LCIdentifier,Reduce(("statement",5),1)), (LCCharacterLiteral,Reduce(("statement",5),1)), (LCTill,Reduce(("statement",5),1)),(LCLoop,Reduce(("statement",5),1)), (LCFor,Reduce(("statement",5),1)),(LCWhile,Reduce(("statement",5),1)), (LCElsIf,Reduce(("statement",5),1)),(LCElse,Reduce(("statement",5),1)), (LCEnd,Reduce(("statement",5),1)),(LCWhen,Reduce(("statement",5),1))]]@slrp'a167; val slrp'a165=[[(LCEos,Reduce(("statement",4),5)), (LCAnnotation,Reduce(("statement",4),5)),(LCCon,Reduce(("statement",4),5)), (LCLChevron,Reduce(("statement",4),5)),(LCGrkGamma,Reduce(("statement",4),5)), (LCGrkDelta,Reduce(("statement",4),5)),(LCPragma,Reduce(("statement",4),5)), (LCNull,Reduce(("statement",4),5)),(LCExit,Reduce(("statement",4),5)), (LCReturn,Reduce(("statement",4),5)),(LCIf,Reduce(("statement",4),5)), (LCCase,Reduce(("statement",4),5)),(LCIdentifier,Reduce(("statement",4),5)), (LCCharacterLiteral,Reduce(("statement",4),5)), (LCTill,Reduce(("statement",4),5)),(LCLoop,Reduce(("statement",4),5)), (LCFor,Reduce(("statement",4),5)),(LCWhile,Reduce(("statement",4),5)), (LCElsIf,Reduce(("statement",4),5)),(LCElse,Reduce(("statement",4),5)), (LCEnd,Reduce(("statement",4),5)),(LCWhen,Reduce(("statement",4),5))]]@slrp'a166; val slrp'a164=[[(LCEos,Reduce(("statement",2),2)), (LCAnnotation,Reduce(("statement",2),2)),(LCCon,Reduce(("statement",2),2)), (LCLChevron,Reduce(("statement",2),2)),(LCGrkGamma,Reduce(("statement",2),2)), (LCGrkDelta,Reduce(("statement",2),2)),(LCPragma,Reduce(("statement",2),2)), (LCNull,Reduce(("statement",2),2)),(LCExit,Reduce(("statement",2),2)), (LCReturn,Reduce(("statement",2),2)),(LCIf,Reduce(("statement",2),2)), (LCCase,Reduce(("statement",2),2)),(LCIdentifier,Reduce(("statement",2),2)), (LCCharacterLiteral,Reduce(("statement",2),2)), (LCTill,Reduce(("statement",2),2)),(LCLoop,Reduce(("statement",2),2)), (LCFor,Reduce(("statement",2),2)),(LCWhile,Reduce(("statement",2),2)), (LCElsIf,Reduce(("statement",2),2)),(LCElse,Reduce(("statement",2),2)), (LCEnd,Reduce(("statement",2),2)),(LCWhen,Reduce(("statement",2),2))]]@slrp'a165; val slrp'a163=[[(LCEos,Reduce(("statement",0),1)), (LCAnnotation,Reduce(("statement",0),1)),(LCCon,Reduce(("statement",0),1)), (LCLChevron,Reduce(("statement",0),1)),(LCGrkGamma,Reduce(("statement",0),1)), (LCGrkDelta,Reduce(("statement",0),1)),(LCPragma,Reduce(("statement",0),1)), (LCNull,Reduce(("statement",0),1)),(LCExit,Reduce(("statement",0),1)), (LCReturn,Reduce(("statement",0),1)),(LCIf,Reduce(("statement",0),1)), (LCCase,Reduce(("statement",0),1)),(LCIdentifier,Reduce(("statement",0),1)), (LCCharacterLiteral,Reduce(("statement",0),1)), (LCTill,Reduce(("statement",0),1)),(LCLoop,Reduce(("statement",0),1)), (LCFor,Reduce(("statement",0),1)),(LCWhile,Reduce(("statement",0),1)), (LCElsIf,Reduce(("statement",0),1)),(LCElse,Reduce(("statement",0),1)), (LCEnd,Reduce(("statement",0),1)),(LCWhen,Reduce(("statement",0),1))]]@slrp'a164; val slrp'a162=[[(LCEos,Reduce(("sequence_of_statements",1),2)), (LCElsIf,Reduce(("sequence_of_statements",1),2)), (LCElse,Reduce(("sequence_of_statements",1),2)), (LCEnd,Reduce(("sequence_of_statements",1),2)), (LCWhen,Reduce(("sequence_of_statements",1),2))]]@slrp'a163; val slrp'a161=[[(LCBecomes,Reduce(("qualified_expression",0),3)), (LCSemi,Reduce(("qualified_expression",0),3)), (LCRRange,Reduce(("qualified_expression",0),3)), (LCDigits,Reduce(("qualified_expression",0),3)), (LCDelta,Reduce(("qualified_expression",0),3)), (LCComma,Reduce(("qualified_expression",0),3)), (LCCrd,Reduce(("qualified_expression",0),3)), (LCAnd,Reduce(("qualified_expression",0),3)), (LCOr,Reduce(("qualified_expression",0),3)), (LCXor,Reduce(("qualified_expression",0),3)), (LCGreaterEquals,Reduce(("qualified_expression",0),3)), (LCGreaterThan,Reduce(("qualified_expression",0),3)), (LCLessEquals,Reduce(("qualified_expression",0),3)), (LCLessThan,Reduce(("qualified_expression",0),3)), (LCNotEquals,Reduce(("qualified_expression",0),3)), (LCEquals,Reduce(("qualified_expression",0),3)), (LCIn,Reduce(("qualified_expression",0),3)), (LCNot,Reduce(("qualified_expression",0),3)), (LCDotDot,Reduce(("qualified_expression",0),3)), (LCAmpersand,Reduce(("qualified_expression",0),3)), (LCMinus,Reduce(("qualified_expression",0),3)), (LCPlus,Reduce(("qualified_expression",0),3)), (LCRem,Reduce(("qualified_expression",0),3)), (LCMod,Reduce(("qualified_expression",0),3)), (LCDiv,Reduce(("qualified_expression",0),3)), (LCStar,Reduce(("qualified_expression",0),3)), (LCStarStar,Reduce(("qualified_expression",0),3)), (LCThen,Reduce(("qualified_expression",0),3)), (LCIs,Reduce(("qualified_expression",0),3)), (LCGoesTo,Reduce(("qualified_expression",0),3)), (LCBar,Reduce(("qualified_expression",0),3)), (LCTill,Reduce(("qualified_expression",0),3)), (LCLoop,Reduce(("qualified_expression",0),3))]]@slrp'a162; val slrp'a160=[[(LCNot,Reduce(("multiplying_operator",3),1)), (LCAbs,Reduce(("multiplying_operator",3),1)), (LCStringLiteral,Reduce(("multiplying_operator",3),1)), (LCCharacterLiteral,Reduce(("multiplying_operator",3),1)), (LCNumericLiteral,Reduce(("multiplying_operator",3),1)), (LCIdentifier,Reduce(("multiplying_operator",3),1)), (LCOrd,Reduce(("multiplying_operator",3),1)), (LCLStrachey,Reduce(("multiplying_operator",3),1))]]@slrp'a161; val slrp'a159=[[(LCNot,Reduce(("multiplying_operator",2),1)), (LCAbs,Reduce(("multiplying_operator",2),1)), (LCStringLiteral,Reduce(("multiplying_operator",2),1)), (LCCharacterLiteral,Reduce(("multiplying_operator",2),1)), (LCNumericLiteral,Reduce(("multiplying_operator",2),1)), (LCIdentifier,Reduce(("multiplying_operator",2),1)), (LCOrd,Reduce(("multiplying_operator",2),1)), (LCLStrachey,Reduce(("multiplying_operator",2),1))]]@slrp'a160; val slrp'a158=[[(LCNot,Reduce(("multiplying_operator",1),1)), (LCAbs,Reduce(("multiplying_operator",1),1)), (LCStringLiteral,Reduce(("multiplying_operator",1),1)), (LCCharacterLiteral,Reduce(("multiplying_operator",1),1)), (LCNumericLiteral,Reduce(("multiplying_operator",1),1)), (LCIdentifier,Reduce(("multiplying_operator",1),1)), (LCOrd,Reduce(("multiplying_operator",1),1)), (LCLStrachey,Reduce(("multiplying_operator",1),1))]]@slrp'a159; val slrp'a157=[[(LCNot,Reduce(("multiplying_operator",0),1)), (LCAbs,Reduce(("multiplying_operator",0),1)), (LCStringLiteral,Reduce(("multiplying_operator",0),1)), (LCCharacterLiteral,Reduce(("multiplying_operator",0),1)), (LCNumericLiteral,Reduce(("multiplying_operator",0),1)), (LCIdentifier,Reduce(("multiplying_operator",0),1)), (LCOrd,Reduce(("multiplying_operator",0),1)), (LCLStrachey,Reduce(("multiplying_operator",0),1))]]@slrp'a158; val slrp'a156=[[(LCNot,Reduce(("unary_adding_operator",1),1)), (LCAbs,Reduce(("unary_adding_operator",1),1)), (LCStringLiteral,Reduce(("unary_adding_operator",1),1)), (LCCharacterLiteral,Reduce(("unary_adding_operator",1),1)), (LCNumericLiteral,Reduce(("unary_adding_operator",1),1)), (LCIdentifier,Reduce(("unary_adding_operator",1),1)), (LCOrd,Reduce(("unary_adding_operator",1),1)), (LCLStrachey,Reduce(("unary_adding_operator",1),1))]]@slrp'a157; val slrp'a155=[[(LCNot,Reduce(("unary_adding_operator",0),1)), (LCAbs,Reduce(("unary_adding_operator",0),1)), (LCStringLiteral,Reduce(("unary_adding_operator",0),1)), (LCCharacterLiteral,Reduce(("unary_adding_operator",0),1)), (LCNumericLiteral,Reduce(("unary_adding_operator",0),1)), (LCIdentifier,Reduce(("unary_adding_operator",0),1)), (LCOrd,Reduce(("unary_adding_operator",0),1)), (LCLStrachey,Reduce(("unary_adding_operator",0),1))]]@slrp'a156; val slrp'a154=[[(LCNot,Reduce(("binary_adding_operator",2),1)), (LCAbs,Reduce(("binary_adding_operator",2),1)), (LCStringLiteral,Reduce(("binary_adding_operator",2),1)), (LCCharacterLiteral,Reduce(("binary_adding_operator",2),1)), (LCNumericLiteral,Reduce(("binary_adding_operator",2),1)), (LCIdentifier,Reduce(("binary_adding_operator",2),1)), (LCOrd,Reduce(("binary_adding_operator",2),1)), (LCLStrachey,Reduce(("binary_adding_operator",2),1))]]@slrp'a155; val slrp'a153=[[(LCNot,Reduce(("binary_adding_operator",1),1)), (LCAbs,Reduce(("binary_adding_operator",1),1)), (LCStringLiteral,Reduce(("binary_adding_operator",1),1)), (LCCharacterLiteral,Reduce(("binary_adding_operator",1),1)), (LCNumericLiteral,Reduce(("binary_adding_operator",1),1)), (LCIdentifier,Reduce(("binary_adding_operator",1),1)), (LCOrd,Reduce(("binary_adding_operator",1),1)), (LCLStrachey,Reduce(("binary_adding_operator",1),1))]]@slrp'a154; val slrp'a152=[[(LCNot,Reduce(("binary_adding_operator",0),1)), (LCAbs,Reduce(("binary_adding_operator",0),1)), (LCStringLiteral,Reduce(("binary_adding_operator",0),1)), (LCCharacterLiteral,Reduce(("binary_adding_operator",0),1)), (LCNumericLiteral,Reduce(("binary_adding_operator",0),1)), (LCIdentifier,Reduce(("binary_adding_operator",0),1)), (LCOrd,Reduce(("binary_adding_operator",0),1)), (LCLStrachey,Reduce(("binary_adding_operator",0),1))]]@slrp'a153; val slrp'a151=[[(LCMinus,Reduce(("relational_operator",5),1)), (LCPlus,Reduce(("relational_operator",5),1)), (LCNot,Reduce(("relational_operator",5),1)), (LCAbs,Reduce(("relational_operator",5),1)), (LCStringLiteral,Reduce(("relational_operator",5),1)), (LCCharacterLiteral,Reduce(("relational_operator",5),1)), (LCNumericLiteral,Reduce(("relational_operator",5),1)), (LCIdentifier,Reduce(("relational_operator",5),1)), (LCOrd,Reduce(("relational_operator",5),1)), (LCLStrachey,Reduce(("relational_operator",5),1))]]@slrp'a152; val slrp'a150=[[(LCMinus,Reduce(("relational_operator",4),1)), (LCPlus,Reduce(("relational_operator",4),1)), (LCNot,Reduce(("relational_operator",4),1)), (LCAbs,Reduce(("relational_operator",4),1)), (LCStringLiteral,Reduce(("relational_operator",4),1)), (LCCharacterLiteral,Reduce(("relational_operator",4),1)), (LCNumericLiteral,Reduce(("relational_operator",4),1)), (LCIdentifier,Reduce(("relational_operator",4),1)), (LCOrd,Reduce(("relational_operator",4),1)), (LCLStrachey,Reduce(("relational_operator",4),1))]]@slrp'a151; val slrp'a149=[[(LCMinus,Reduce(("relational_operator",3),1)), (LCPlus,Reduce(("relational_operator",3),1)), (LCNot,Reduce(("relational_operator",3),1)), (LCAbs,Reduce(("relational_operator",3),1)), (LCStringLiteral,Reduce(("relational_operator",3),1)), (LCCharacterLiteral,Reduce(("relational_operator",3),1)), (LCNumericLiteral,Reduce(("relational_operator",3),1)), (LCIdentifier,Reduce(("relational_operator",3),1)), (LCOrd,Reduce(("relational_operator",3),1)), (LCLStrachey,Reduce(("relational_operator",3),1))]]@slrp'a150; val slrp'a148=[[(LCMinus,Reduce(("relational_operator",2),1)), (LCPlus,Reduce(("relational_operator",2),1)), (LCNot,Reduce(("relational_operator",2),1)), (LCAbs,Reduce(("relational_operator",2),1)), (LCStringLiteral,Reduce(("relational_operator",2),1)), (LCCharacterLiteral,Reduce(("relational_operator",2),1)), (LCNumericLiteral,Reduce(("relational_operator",2),1)), (LCIdentifier,Reduce(("relational_operator",2),1)), (LCOrd,Reduce(("relational_operator",2),1)), (LCLStrachey,Reduce(("relational_operator",2),1))]]@slrp'a149; val slrp'a147=[[(LCMinus,Reduce(("relational_operator",1),1)), (LCPlus,Reduce(("relational_operator",1),1)), (LCNot,Reduce(("relational_operator",1),1)), (LCAbs,Reduce(("relational_operator",1),1)), (LCStringLiteral,Reduce(("relational_operator",1),1)), (LCCharacterLiteral,Reduce(("relational_operator",1),1)), (LCNumericLiteral,Reduce(("relational_operator",1),1)), (LCIdentifier,Reduce(("relational_operator",1),1)), (LCOrd,Reduce(("relational_operator",1),1)), (LCLStrachey,Reduce(("relational_operator",1),1))]]@slrp'a148; val slrp'a146=[[(LCMinus,Reduce(("relational_operator",0),1)), (LCPlus,Reduce(("relational_operator",0),1)), (LCNot,Reduce(("relational_operator",0),1)), (LCAbs,Reduce(("relational_operator",0),1)), (LCStringLiteral,Reduce(("relational_operator",0),1)), (LCCharacterLiteral,Reduce(("relational_operator",0),1)), (LCNumericLiteral,Reduce(("relational_operator",0),1)), (LCIdentifier,Reduce(("relational_operator",0),1)), (LCOrd,Reduce(("relational_operator",0),1)), (LCLStrachey,Reduce(("relational_operator",0),1))]]@slrp'a147; val slrp'a145=[[(LCBecomes,Reduce(("primary",6),1)), (LCSemi,Reduce(("primary",6),1)),(LCRRange,Reduce(("primary",6),1)), (LCDigits,Reduce(("primary",6),1)),(LCDelta,Reduce(("primary",6),1)), (LCComma,Reduce(("primary",6),1)),(LCCrd,Reduce(("primary",6),1)), (LCAnd,Reduce(("primary",6),1)),(LCOr,Reduce(("primary",6),1)), (LCXor,Reduce(("primary",6),1)),(LCGreaterEquals,Reduce(("primary",6),1)), (LCGreaterThan,Reduce(("primary",6),1)),(LCLessEquals,Reduce(("primary",6),1)), (LCLessThan,Reduce(("primary",6),1)),(LCNotEquals,Reduce(("primary",6),1)), (LCEquals,Reduce(("primary",6),1)),(LCIn,Reduce(("primary",6),1)), (LCNot,Reduce(("primary",6),1)),(LCDotDot,Reduce(("primary",6),1)), (LCAmpersand,Reduce(("primary",6),1)),(LCMinus,Reduce(("primary",6),1)), (LCPlus,Reduce(("primary",6),1)),(LCRem,Reduce(("primary",6),1)), (LCMod,Reduce(("primary",6),1)),(LCDiv,Reduce(("primary",6),1)), (LCStar,Reduce(("primary",6),1)),(LCStarStar,Reduce(("primary",6),1)), (LCThen,Reduce(("primary",6),1)),(LCIs,Reduce(("primary",6),1)), (LCGoesTo,Reduce(("primary",6),1)),(LCBar,Reduce(("primary",6),1)), (LCTill,Reduce(("primary",6),1)),(LCLoop,Reduce(("primary",6),1))]]@slrp'a146; val slrp'a144=[[(LCBecomes,Reduce(("primary",5),1)), (LCSemi,Reduce(("primary",5),1)),(LCRRange,Reduce(("primary",5),1)), (LCDigits,Reduce(("primary",5),1)),(LCDelta,Reduce(("primary",5),1)), (LCComma,Reduce(("primary",5),1)),(LCCrd,Reduce(("primary",5),1)), (LCAnd,Reduce(("primary",5),1)),(LCOr,Reduce(("primary",5),1)), (LCXor,Reduce(("primary",5),1)),(LCGreaterEquals,Reduce(("primary",5),1)), (LCGreaterThan,Reduce(("primary",5),1)),(LCLessEquals,Reduce(("primary",5),1)), (LCLessThan,Reduce(("primary",5),1)),(LCNotEquals,Reduce(("primary",5),1)), (LCEquals,Reduce(("primary",5),1)),(LCIn,Reduce(("primary",5),1)), (LCNot,Reduce(("primary",5),1)),(LCDotDot,Reduce(("primary",5),1)), (LCAmpersand,Reduce(("primary",5),1)),(LCMinus,Reduce(("primary",5),1)), (LCPlus,Reduce(("primary",5),1)),(LCRem,Reduce(("primary",5),1)), (LCMod,Reduce(("primary",5),1)),(LCDiv,Reduce(("primary",5),1)), (LCStar,Reduce(("primary",5),1)),(LCStarStar,Reduce(("primary",5),1)), (LCThen,Reduce(("primary",5),1)),(LCIs,Reduce(("primary",5),1)), (LCGoesTo,Reduce(("primary",5),1)),(LCBar,Reduce(("primary",5),1)), (LCTill,Reduce(("primary",5),1)),(LCLoop,Reduce(("primary",5),1))]]@slrp'a145; val slrp'a143=[[(LCBecomes,Reduce(("primary",4),1)), (LCSemi,Reduce(("primary",4),1)),(LCRRange,Reduce(("primary",4),1)), (LCDigits,Reduce(("primary",4),1)),(LCDelta,Reduce(("primary",4),1)), (LCComma,Reduce(("primary",4),1)),(LCCrd,Reduce(("primary",4),1)), (LCAnd,Reduce(("primary",4),1)),(LCOr,Reduce(("primary",4),1)), (LCXor,Reduce(("primary",4),1)),(LCGreaterEquals,Reduce(("primary",4),1)), (LCGreaterThan,Reduce(("primary",4),1)),(LCLessEquals,Reduce(("primary",4),1)), (LCLessThan,Reduce(("primary",4),1)),(LCNotEquals,Reduce(("primary",4),1)), (LCEquals,Reduce(("primary",4),1)),(LCIn,Reduce(("primary",4),1)), (LCNot,Reduce(("primary",4),1)),(LCDotDot,Reduce(("primary",4),1)), (LCAmpersand,Reduce(("primary",4),1)),(LCMinus,Reduce(("primary",4),1)), (LCPlus,Reduce(("primary",4),1)),(LCRem,Reduce(("primary",4),1)), (LCMod,Reduce(("primary",4),1)),(LCDiv,Reduce(("primary",4),1)), (LCStar,Reduce(("primary",4),1)),(LCStarStar,Reduce(("primary",4),1)), (LCThen,Reduce(("primary",4),1)),(LCIs,Reduce(("primary",4),1)), (LCGoesTo,Reduce(("primary",4),1)),(LCBar,Reduce(("primary",4),1)), (LCTill,Reduce(("primary",4),1)),(LCLoop,Reduce(("primary",4),1))]]@slrp'a144; val slrp'a142=[[(LCBecomes,Reduce(("primary",2),1)), (LCSemi,Reduce(("primary",2),1)),(LCRRange,Reduce(("primary",2),1)), (LCDigits,Reduce(("primary",2),1)),(LCDelta,Reduce(("primary",2),1)), (LCComma,Reduce(("primary",2),1)),(LCCrd,Reduce(("primary",2),1)), (LCAnd,Reduce(("primary",2),1)),(LCOr,Reduce(("primary",2),1)), (LCXor,Reduce(("primary",2),1)),(LCGreaterEquals,Reduce(("primary",2),1)), (LCGreaterThan,Reduce(("primary",2),1)),(LCLessEquals,Reduce(("primary",2),1)), (LCLessThan,Reduce(("primary",2),1)),(LCNotEquals,Reduce(("primary",2),1)), (LCEquals,Reduce(("primary",2),1)),(LCIn,Reduce(("primary",2),1)), (LCNot,Reduce(("primary",2),1)),(LCDotDot,Reduce(("primary",2),1)), (LCAmpersand,Reduce(("primary",2),1)),(LCMinus,Reduce(("primary",2),1)), (LCPlus,Reduce(("primary",2),1)),(LCRem,Reduce(("primary",2),1)), (LCMod,Reduce(("primary",2),1)),(LCDiv,Reduce(("primary",2),1)), (LCStar,Reduce(("primary",2),1)),(LCStarStar,Reduce(("primary",2),1)), (LCThen,Reduce(("primary",2),1)),(LCIs,Reduce(("primary",2),1)), (LCGoesTo,Reduce(("primary",2),1)),(LCBar,Reduce(("primary",2),1)), (LCTill,Reduce(("primary",2),1)),(LCLoop,Reduce(("primary",2),1))]]@slrp'a143; val slrp'a141=[[(LCBecomes,Reduce(("primary",0),1)), (LCSemi,Reduce(("primary",0),1)),(LCRRange,Reduce(("primary",0),1)), (LCDigits,Reduce(("primary",0),1)),(LCDelta,Reduce(("primary",0),1)), (LCComma,Reduce(("primary",0),1)),(LCCrd,Reduce(("primary",0),1)), (LCAnd,Reduce(("primary",0),1)),(LCOr,Reduce(("primary",0),1)), (LCXor,Reduce(("primary",0),1)),(LCGreaterEquals,Reduce(("primary",0),1)), (LCGreaterThan,Reduce(("primary",0),1)),(LCLessEquals,Reduce(("primary",0),1)), (LCLessThan,Reduce(("primary",0),1)),(LCNotEquals,Reduce(("primary",0),1)), (LCEquals,Reduce(("primary",0),1)),(LCIn,Reduce(("primary",0),1)), (LCNot,Reduce(("primary",0),1)),(LCDotDot,Reduce(("primary",0),1)), (LCAmpersand,Reduce(("primary",0),1)),(LCMinus,Reduce(("primary",0),1)), (LCPlus,Reduce(("primary",0),1)),(LCRem,Reduce(("primary",0),1)), (LCMod,Reduce(("primary",0),1)),(LCDiv,Reduce(("primary",0),1)), (LCStar,Reduce(("primary",0),1)),(LCStarStar,Reduce(("primary",0),1)), (LCThen,Reduce(("primary",0),1)),(LCIs,Reduce(("primary",0),1)), (LCGoesTo,Reduce(("primary",0),1)),(LCBar,Reduce(("primary",0),1)), (LCTill,Reduce(("primary",0),1)),(LCLoop,Reduce(("primary",0),1))]]@slrp'a142; val slrp'a140=[[(LCBecomes,Reduce(("factor",3),2)), (LCSemi,Reduce(("factor",3),2)),(LCRRange,Reduce(("factor",3),2)), (LCDigits,Reduce(("factor",3),2)),(LCDelta,Reduce(("factor",3),2)), (LCComma,Reduce(("factor",3),2)),(LCCrd,Reduce(("factor",3),2)), (LCAnd,Reduce(("factor",3),2)),(LCOr,Reduce(("factor",3),2)), (LCXor,Reduce(("factor",3),2)),(LCGreaterEquals,Reduce(("factor",3),2)), (LCGreaterThan,Reduce(("factor",3),2)),(LCLessEquals,Reduce(("factor",3),2)), (LCLessThan,Reduce(("factor",3),2)),(LCNotEquals,Reduce(("factor",3),2)), (LCEquals,Reduce(("factor",3),2)),(LCIn,Reduce(("factor",3),2)), (LCNot,Reduce(("factor",3),2)),(LCDotDot,Reduce(("factor",3),2)), (LCAmpersand,Reduce(("factor",3),2)),(LCMinus,Reduce(("factor",3),2)), (LCPlus,Reduce(("factor",3),2)),(LCRem,Reduce(("factor",3),2)), (LCMod,Reduce(("factor",3),2)),(LCDiv,Reduce(("factor",3),2)), (LCStar,Reduce(("factor",3),2)),(LCThen,Reduce(("factor",3),2)), (LCIs,Reduce(("factor",3),2)),(LCGoesTo,Reduce(("factor",3),2)), (LCBar,Reduce(("factor",3),2)),(LCTill,Reduce(("factor",3),2)), (LCLoop,Reduce(("factor",3),2))]]@slrp'a141; val slrp'a139=[[(LCBecomes,Reduce(("factor",2),2)), (LCSemi,Reduce(("factor",2),2)),(LCRRange,Reduce(("factor",2),2)), (LCDigits,Reduce(("factor",2),2)),(LCDelta,Reduce(("factor",2),2)), (LCComma,Reduce(("factor",2),2)),(LCCrd,Reduce(("factor",2),2)), (LCAnd,Reduce(("factor",2),2)),(LCOr,Reduce(("factor",2),2)), (LCXor,Reduce(("factor",2),2)),(LCGreaterEquals,Reduce(("factor",2),2)), (LCGreaterThan,Reduce(("factor",2),2)),(LCLessEquals,Reduce(("factor",2),2)), (LCLessThan,Reduce(("factor",2),2)),(LCNotEquals,Reduce(("factor",2),2)), (LCEquals,Reduce(("factor",2),2)),(LCIn,Reduce(("factor",2),2)), (LCNot,Reduce(("factor",2),2)),(LCDotDot,Reduce(("factor",2),2)), (LCAmpersand,Reduce(("factor",2),2)),(LCMinus,Reduce(("factor",2),2)), (LCPlus,Reduce(("factor",2),2)),(LCRem,Reduce(("factor",2),2)), (LCMod,Reduce(("factor",2),2)),(LCDiv,Reduce(("factor",2),2)), (LCStar,Reduce(("factor",2),2)),(LCThen,Reduce(("factor",2),2)), (LCIs,Reduce(("factor",2),2)),(LCGoesTo,Reduce(("factor",2),2)), (LCBar,Reduce(("factor",2),2)),(LCTill,Reduce(("factor",2),2)), (LCLoop,Reduce(("factor",2),2))]]@slrp'a140; val slrp'a138=[[(LCBecomes,Reduce(("factor",1),3)), (LCSemi,Reduce(("factor",1),3)),(LCRRange,Reduce(("factor",1),3)), (LCDigits,Reduce(("factor",1),3)),(LCDelta,Reduce(("factor",1),3)), (LCComma,Reduce(("factor",1),3)),(LCCrd,Reduce(("factor",1),3)), (LCAnd,Reduce(("factor",1),3)),(LCOr,Reduce(("factor",1),3)), (LCXor,Reduce(("factor",1),3)),(LCGreaterEquals,Reduce(("factor",1),3)), (LCGreaterThan,Reduce(("factor",1),3)),(LCLessEquals,Reduce(("factor",1),3)), (LCLessThan,Reduce(("factor",1),3)),(LCNotEquals,Reduce(("factor",1),3)), (LCEquals,Reduce(("factor",1),3)),(LCIn,Reduce(("factor",1),3)), (LCNot,Reduce(("factor",1),3)),(LCDotDot,Reduce(("factor",1),3)), (LCAmpersand,Reduce(("factor",1),3)),(LCMinus,Reduce(("factor",1),3)), (LCPlus,Reduce(("factor",1),3)),(LCRem,Reduce(("factor",1),3)), (LCMod,Reduce(("factor",1),3)),(LCDiv,Reduce(("factor",1),3)), (LCStar,Reduce(("factor",1),3)),(LCThen,Reduce(("factor",1),3)), (LCIs,Reduce(("factor",1),3)),(LCGoesTo,Reduce(("factor",1),3)), (LCBar,Reduce(("factor",1),3)),(LCTill,Reduce(("factor",1),3)), (LCLoop,Reduce(("factor",1),3))]]@slrp'a139; val slrp'a137=[[(LCBecomes,Reduce(("term",1),3)),(LCSemi,Reduce(("term",1),3)), (LCRRange,Reduce(("term",1),3)),(LCDigits,Reduce(("term",1),3)), (LCDelta,Reduce(("term",1),3)),(LCComma,Reduce(("term",1),3)), (LCCrd,Reduce(("term",1),3)),(LCAnd,Reduce(("term",1),3)), (LCOr,Reduce(("term",1),3)),(LCXor,Reduce(("term",1),3)), (LCGreaterEquals,Reduce(("term",1),3)),(LCGreaterThan,Reduce(("term",1),3)), (LCLessEquals,Reduce(("term",1),3)),(LCLessThan,Reduce(("term",1),3)), (LCNotEquals,Reduce(("term",1),3)),(LCEquals,Reduce(("term",1),3)), (LCIn,Reduce(("term",1),3)),(LCNot,Reduce(("term",1),3)), (LCDotDot,Reduce(("term",1),3)),(LCAmpersand,Reduce(("term",1),3)), (LCMinus,Reduce(("term",1),3)),(LCPlus,Reduce(("term",1),3)), (LCRem,Reduce(("term",1),3)),(LCMod,Reduce(("term",1),3)), (LCDiv,Reduce(("term",1),3)),(LCStar,Reduce(("term",1),3)), (LCThen,Reduce(("term",1),3)),(LCIs,Reduce(("term",1),3)), (LCGoesTo,Reduce(("term",1),3)),(LCBar,Reduce(("term",1),3)), (LCTill,Reduce(("term",1),3)),(LCLoop,Reduce(("term",1),3))]]@slrp'a138; val slrp'a136=[[(LCBecomes,Reduce(("term",0),1)),(LCSemi,Reduce(("term",0),1)), (LCRRange,Reduce(("term",0),1)),(LCDigits,Reduce(("term",0),1)), (LCDelta,Reduce(("term",0),1)),(LCComma,Reduce(("term",0),1)), (LCCrd,Reduce(("term",0),1)),(LCAnd,Reduce(("term",0),1)), (LCOr,Reduce(("term",0),1)),(LCXor,Reduce(("term",0),1)), (LCGreaterEquals,Reduce(("term",0),1)),(LCGreaterThan,Reduce(("term",0),1)), (LCLessEquals,Reduce(("term",0),1)),(LCLessThan,Reduce(("term",0),1)), (LCNotEquals,Reduce(("term",0),1)),(LCEquals,Reduce(("term",0),1)), (LCIn,Reduce(("term",0),1)),(LCNot,Reduce(("term",0),1)), (LCDotDot,Reduce(("term",0),1)),(LCAmpersand,Reduce(("term",0),1)), (LCMinus,Reduce(("term",0),1)),(LCPlus,Reduce(("term",0),1)), (LCRem,Reduce(("term",0),1)),(LCMod,Reduce(("term",0),1)), (LCDiv,Reduce(("term",0),1)),(LCStar,Reduce(("term",0),1)), (LCThen,Reduce(("term",0),1)),(LCIs,Reduce(("term",0),1)), (LCGoesTo,Reduce(("term",0),1)),(LCBar,Reduce(("term",0),1)), (LCTill,Reduce(("term",0),1)),(LCLoop,Reduce(("term",0),1))]]@slrp'a137; val slrp'a135=[[(LCBecomes,Reduce(("binoptail",1),3)), (LCSemi,Reduce(("binoptail",1),3)),(LCRRange,Reduce(("binoptail",1),3)), (LCDigits,Reduce(("binoptail",1),3)),(LCDelta,Reduce(("binoptail",1),3)), (LCComma,Reduce(("binoptail",1),3)),(LCCrd,Reduce(("binoptail",1),3)), (LCAnd,Reduce(("binoptail",1),3)),(LCOr,Reduce(("binoptail",1),3)), (LCXor,Reduce(("binoptail",1),3)),(LCGreaterEquals,Reduce(("binoptail",1),3)), (LCGreaterThan,Reduce(("binoptail",1),3)), (LCLessEquals,Reduce(("binoptail",1),3)),(LCLessThan,Reduce(("binoptail",1),3)), (LCNotEquals,Reduce(("binoptail",1),3)),(LCEquals,Reduce(("binoptail",1),3)), (LCIn,Reduce(("binoptail",1),3)),(LCNot,Reduce(("binoptail",1),3)), (LCDotDot,Reduce(("binoptail",1),3)),(LCThen,Reduce(("binoptail",1),3)), (LCIs,Reduce(("binoptail",1),3)),(LCGoesTo,Reduce(("binoptail",1),3)), (LCBar,Reduce(("binoptail",1),3)),(LCTill,Reduce(("binoptail",1),3)), (LCLoop,Reduce(("binoptail",1),3))]]@slrp'a136; val slrp'a134=[[(LCBecomes,Reduce(("simple_expression",1),3)), (LCSemi,Reduce(("simple_expression",1),3)), (LCRRange,Reduce(("simple_expression",1),3)), (LCDigits,Reduce(("simple_expression",1),3)), (LCDelta,Reduce(("simple_expression",1),3)), (LCComma,Reduce(("simple_expression",1),3)), (LCCrd,Reduce(("simple_expression",1),3)), (LCAnd,Reduce(("simple_expression",1),3)), (LCOr,Reduce(("simple_expression",1),3)), (LCXor,Reduce(("simple_expression",1),3)), (LCGreaterEquals,Reduce(("simple_expression",1),3)), (LCGreaterThan,Reduce(("simple_expression",1),3)), (LCLessEquals,Reduce(("simple_expression",1),3)), (LCLessThan,Reduce(("simple_expression",1),3)), (LCNotEquals,Reduce(("simple_expression",1),3)), (LCEquals,Reduce(("simple_expression",1),3)), (LCIn,Reduce(("simple_expression",1),3)), (LCNot,Reduce(("simple_expression",1),3)), (LCDotDot,Reduce(("simple_expression",1),3)), (LCThen,Reduce(("simple_expression",1),3)), (LCIs,Reduce(("simple_expression",1),3)), (LCGoesTo,Reduce(("simple_expression",1),3)), (LCBar,Reduce(("simple_expression",1),3)), (LCTill,Reduce(("simple_expression",1),3)), (LCLoop,Reduce(("simple_expression",1),3))]]@slrp'a135; val slrp'a133=[[(LCBecomes,Reduce(("simple_expression",0),2)), (LCSemi,Reduce(("simple_expression",0),2)), (LCRRange,Reduce(("simple_expression",0),2)), (LCDigits,Reduce(("simple_expression",0),2)), (LCDelta,Reduce(("simple_expression",0),2)), (LCComma,Reduce(("simple_expression",0),2)), (LCCrd,Reduce(("simple_expression",0),2)), (LCAnd,Reduce(("simple_expression",0),2)), (LCOr,Reduce(("simple_expression",0),2)), (LCXor,Reduce(("simple_expression",0),2)), (LCGreaterEquals,Reduce(("simple_expression",0),2)), (LCGreaterThan,Reduce(("simple_expression",0),2)), (LCLessEquals,Reduce(("simple_expression",0),2)), (LCLessThan,Reduce(("simple_expression",0),2)), (LCNotEquals,Reduce(("simple_expression",0),2)), (LCEquals,Reduce(("simple_expression",0),2)), (LCIn,Reduce(("simple_expression",0),2)), (LCNot,Reduce(("simple_expression",0),2)), (LCDotDot,Reduce(("simple_expression",0),2)), (LCThen,Reduce(("simple_expression",0),2)), (LCIs,Reduce(("simple_expression",0),2)), (LCGoesTo,Reduce(("simple_expression",0),2)), (LCBar,Reduce(("simple_expression",0),2)), (LCTill,Reduce(("simple_expression",0),2)), (LCLoop,Reduce(("simple_expression",0),2))]]@slrp'a134; val slrp'a132=[[(LCBecomes,Reduce(("sr_expression",1),3)), (LCSemi,Reduce(("sr_expression",1),3)),(LCRRange,Reduce(("sr_expression",1),3)), (LCDigits,Reduce(("sr_expression",1),3)),(LCDelta,Reduce(("sr_expression",1),3)) ,(LCComma,Reduce(("sr_expression",1),3)),(LCCrd,Reduce(("sr_expression",1),3)), (LCAnd,Reduce(("sr_expression",1),3)),(LCOr,Reduce(("sr_expression",1),3)), (LCXor,Reduce(("sr_expression",1),3)), (LCGreaterEquals,Reduce(("sr_expression",1),3)), (LCGreaterThan,Reduce(("sr_expression",1),3)), (LCLessEquals,Reduce(("sr_expression",1),3)), (LCLessThan,Reduce(("sr_expression",1),3)), (LCNotEquals,Reduce(("sr_expression",1),3)), (LCEquals,Reduce(("sr_expression",1),3)),(LCIn,Reduce(("sr_expression",1),3)), (LCNot,Reduce(("sr_expression",1),3)),(LCThen,Reduce(("sr_expression",1),3)), (LCIs,Reduce(("sr_expression",1),3)),(LCGoesTo,Reduce(("sr_expression",1),3)), (LCBar,Reduce(("sr_expression",1),3)),(LCTill,Reduce(("sr_expression",1),3)), (LCLoop,Reduce(("sr_expression",1),3))]]@slrp'a133; val slrp'a131=[[(LCSemi,Reduce(("relation",3),4)), (LCRRange,Reduce(("relation",3),4)),(LCDigits,Reduce(("relation",3),4)), (LCDelta,Reduce(("relation",3),4)),(LCBecomes,Reduce(("relation",3),4)), (LCComma,Reduce(("relation",3),4)),(LCCrd,Reduce(("relation",3),4)), (LCAnd,Reduce(("relation",3),4)),(LCOr,Reduce(("relation",3),4)), (LCXor,Reduce(("relation",3),4)),(LCThen,Reduce(("relation",3),4)), (LCIs,Reduce(("relation",3),4)),(LCGoesTo,Reduce(("relation",3),4)), (LCBar,Reduce(("relation",3),4)),(LCTill,Reduce(("relation",3),4)), (LCLoop,Reduce(("relation",3),4))]]@slrp'a132; val slrp'a130=[[(LCIn,Shift 631)]]@slrp'a131; val slrp'a129=[[(LCSemi,Reduce(("relation",2),3)), (LCRRange,Reduce(("relation",2),3)),(LCDigits,Reduce(("relation",2),3)), (LCDelta,Reduce(("relation",2),3)),(LCBecomes,Reduce(("relation",2),3)), (LCComma,Reduce(("relation",2),3)),(LCCrd,Reduce(("relation",2),3)), (LCAnd,Reduce(("relation",2),3)),(LCOr,Reduce(("relation",2),3)), (LCXor,Reduce(("relation",2),3)),(LCThen,Reduce(("relation",2),3)), (LCIs,Reduce(("relation",2),3)),(LCGoesTo,Reduce(("relation",2),3)), (LCBar,Reduce(("relation",2),3)),(LCTill,Reduce(("relation",2),3)), (LCLoop,Reduce(("relation",2),3))]]@slrp'a130; val slrp'a128=[[(LCSemi,Reduce(("relation",1),3)), (LCRRange,Reduce(("relation",1),3)),(LCDigits,Reduce(("relation",1),3)), (LCDelta,Reduce(("relation",1),3)),(LCBecomes,Reduce(("relation",1),3)), (LCComma,Reduce(("relation",1),3)),(LCCrd,Reduce(("relation",1),3)), (LCAnd,Reduce(("relation",1),3)),(LCOr,Reduce(("relation",1),3)), (LCXor,Reduce(("relation",1),3)),(LCThen,Reduce(("relation",1),3)), (LCIs,Reduce(("relation",1),3)),(LCGoesTo,Reduce(("relation",1),3)), (LCBar,Reduce(("relation",1),3)),(LCTill,Reduce(("relation",1),3)), (LCLoop,Reduce(("relation",1),3))]]@slrp'a129; val slrp'a127=[[(LCSemi,Reduce(("xor_relation",1),3)), (LCRRange,Reduce(("xor_relation",1),3)),(LCDigits,Reduce(("xor_relation",1),3)), (LCDelta,Reduce(("xor_relation",1),3)),(LCBecomes,Reduce(("xor_relation",1),3)), (LCComma,Reduce(("xor_relation",1),3)),(LCCrd,Reduce(("xor_relation",1),3)), (LCThen,Reduce(("xor_relation",1),3)),(LCIs,Reduce(("xor_relation",1),3)), (LCGoesTo,Reduce(("xor_relation",1),3)),(LCBar,Reduce(("xor_relation",1),3)), (LCTill,Reduce(("xor_relation",1),3)),(LCLoop,Reduce(("xor_relation",1),3))]]@slrp'a128; val slrp'a126=[[(LCSemi,Reduce(("or_else_relation",1),4)), (LCRRange,Reduce(("or_else_relation",1),4)), (LCDigits,Reduce(("or_else_relation",1),4)), (LCDelta,Reduce(("or_else_relation",1),4)), (LCBecomes,Reduce(("or_else_relation",1),4)), (LCComma,Reduce(("or_else_relation",1),4)), (LCCrd,Reduce(("or_else_relation",1),4)), (LCThen,Reduce(("or_else_relation",1),4)), (LCIs,Reduce(("or_else_relation",1),4)), (LCGoesTo,Reduce(("or_else_relation",1),4)), (LCBar,Reduce(("or_else_relation",1),4)), (LCTill,Reduce(("or_else_relation",1),4)), (LCLoop,Reduce(("or_else_relation",1),4))]]@slrp'a127; val slrp'a125=[[(LCSemi,Reduce(("or_relation",1),3)), (LCRRange,Reduce(("or_relation",1),3)),(LCDigits,Reduce(("or_relation",1),3)), (LCDelta,Reduce(("or_relation",1),3)),(LCBecomes,Reduce(("or_relation",1),3)), (LCComma,Reduce(("or_relation",1),3)),(LCCrd,Reduce(("or_relation",1),3)), (LCThen,Reduce(("or_relation",1),3)),(LCIs,Reduce(("or_relation",1),3)), (LCGoesTo,Reduce(("or_relation",1),3)),(LCBar,Reduce(("or_relation",1),3)), (LCTill,Reduce(("or_relation",1),3)),(LCLoop,Reduce(("or_relation",1),3))]]@slrp'a126; val slrp'a124=[[(LCSemi,Reduce(("and_then_relation",1),4)), (LCRRange,Reduce(("and_then_relation",1),4)), (LCDigits,Reduce(("and_then_relation",1),4)), (LCDelta,Reduce(("and_then_relation",1),4)), (LCBecomes,Reduce(("and_then_relation",1),4)), (LCComma,Reduce(("and_then_relation",1),4)), (LCCrd,Reduce(("and_then_relation",1),4)), (LCThen,Reduce(("and_then_relation",1),4)), (LCIs,Reduce(("and_then_relation",1),4)), (LCGoesTo,Reduce(("and_then_relation",1),4)), (LCBar,Reduce(("and_then_relation",1),4)), (LCTill,Reduce(("and_then_relation",1),4)), (LCLoop,Reduce(("and_then_relation",1),4))]]@slrp'a125; val slrp'a123=[[(LCSemi,Reduce(("and_relation",1),3)), (LCRRange,Reduce(("and_relation",1),3)),(LCDigits,Reduce(("and_relation",1),3)), (LCDelta,Reduce(("and_relation",1),3)),(LCBecomes,Reduce(("and_relation",1),3)), (LCComma,Reduce(("and_relation",1),3)),(LCCrd,Reduce(("and_relation",1),3)), (LCThen,Reduce(("and_relation",1),3)),(LCIs,Reduce(("and_relation",1),3)), (LCGoesTo,Reduce(("and_relation",1),3)),(LCBar,Reduce(("and_relation",1),3)), (LCTill,Reduce(("and_relation",1),3)),(LCLoop,Reduce(("and_relation",1),3))]]@slrp'a124; val slrp'a122=[[(LCSemi,Reduce(("expression",5),2)), (LCRRange,Reduce(("expression",5),2)),(LCDigits,Reduce(("expression",5),2)), (LCDelta,Reduce(("expression",5),2)),(LCBecomes,Reduce(("expression",5),2)), (LCComma,Reduce(("expression",5),2)),(LCCrd,Reduce(("expression",5),2)), (LCThen,Reduce(("expression",5),2)),(LCIs,Reduce(("expression",5),2)), (LCGoesTo,Reduce(("expression",5),2)),(LCBar,Reduce(("expression",5),2)), (LCTill,Reduce(("expression",5),2)),(LCLoop,Reduce(("expression",5),2))]]@slrp'a123; val slrp'a121=[[(LCSemi,Reduce(("expression",4),2)), (LCRRange,Reduce(("expression",4),2)),(LCDigits,Reduce(("expression",4),2)), (LCDelta,Reduce(("expression",4),2)),(LCBecomes,Reduce(("expression",4),2)), (LCComma,Reduce(("expression",4),2)),(LCCrd,Reduce(("expression",4),2)), (LCThen,Reduce(("expression",4),2)),(LCIs,Reduce(("expression",4),2)), (LCGoesTo,Reduce(("expression",4),2)),(LCBar,Reduce(("expression",4),2)), (LCTill,Reduce(("expression",4),2)),(LCLoop,Reduce(("expression",4),2))]]@slrp'a122; val slrp'a120=[[(LCSemi,Reduce(("expression",3),2)), (LCRRange,Reduce(("expression",3),2)),(LCDigits,Reduce(("expression",3),2)), (LCDelta,Reduce(("expression",3),2)),(LCBecomes,Reduce(("expression",3),2)), (LCComma,Reduce(("expression",3),2)),(LCCrd,Reduce(("expression",3),2)), (LCThen,Reduce(("expression",3),2)),(LCIs,Reduce(("expression",3),2)), (LCGoesTo,Reduce(("expression",3),2)),(LCBar,Reduce(("expression",3),2)), (LCTill,Reduce(("expression",3),2)),(LCLoop,Reduce(("expression",3),2))]]@slrp'a121; val slrp'a119=[[(LCSemi,Reduce(("expression",2),2)), (LCRRange,Reduce(("expression",2),2)),(LCDigits,Reduce(("expression",2),2)), (LCDelta,Reduce(("expression",2),2)),(LCBecomes,Reduce(("expression",2),2)), (LCComma,Reduce(("expression",2),2)),(LCCrd,Reduce(("expression",2),2)), (LCThen,Reduce(("expression",2),2)),(LCIs,Reduce(("expression",2),2)), (LCGoesTo,Reduce(("expression",2),2)),(LCBar,Reduce(("expression",2),2)), (LCTill,Reduce(("expression",2),2)),(LCLoop,Reduce(("expression",2),2))]]@slrp'a120; val slrp'a118=[[(LCSemi,Reduce(("expression",1),2)), (LCRRange,Reduce(("expression",1),2)),(LCDigits,Reduce(("expression",1),2)), (LCDelta,Reduce(("expression",1),2)),(LCBecomes,Reduce(("expression",1),2)), (LCComma,Reduce(("expression",1),2)),(LCCrd,Reduce(("expression",1),2)), (LCThen,Reduce(("expression",1),2)),(LCIs,Reduce(("expression",1),2)), (LCGoesTo,Reduce(("expression",1),2)),(LCBar,Reduce(("expression",1),2)), (LCTill,Reduce(("expression",1),2)),(LCLoop,Reduce(("expression",1),2))]]@slrp'a119; val slrp'a117=[[(LCCrd,Reduce(("positional_association",1),5))]]@slrp'a118; val slrp'a116=[[(LCGoesTo,Shift 644)]]@slrp'a117; val slrp'a115=[[(LCGoesTo,Reduce(("aggregate_choice",0),1)), (LCBar,Reduce(("aggregate_choice",0),1))]]@slrp'a116; val slrp'a114=[[(LCGoesTo,Reduce(("aggregate_choice_list",2),3))]]@slrp'a115; val slrp'a113=[[(LCGoesTo,Reduce(("aggregate_choice_list",0),1))]]@slrp'a114; val slrp'a112=[[(LCCrd,Reduce(("named_association",1),5))]]@slrp'a113; val slrp'a111=[[(LCCrd,Reduce(("component_association",1),1))]]@slrp'a112; val slrp'a110=[[(LCCrd,Reduce(("component_association",0),1))]]@slrp'a111; val slrp'a109=[[(LCBecomes,Reduce(("aggregate",0),3)), (LCSemi,Reduce(("aggregate",0),3)),(LCRRange,Reduce(("aggregate",0),3)), (LCDigits,Reduce(("aggregate",0),3)),(LCDelta,Reduce(("aggregate",0),3)), (LCComma,Reduce(("aggregate",0),3)),(LCCrd,Reduce(("aggregate",0),3)), (LCAnd,Reduce(("aggregate",0),3)),(LCOr,Reduce(("aggregate",0),3)), (LCXor,Reduce(("aggregate",0),3)),(LCGreaterEquals,Reduce(("aggregate",0),3)), (LCGreaterThan,Reduce(("aggregate",0),3)), (LCLessEquals,Reduce(("aggregate",0),3)),(LCLessThan,Reduce(("aggregate",0),3)), (LCNotEquals,Reduce(("aggregate",0),3)),(LCEquals,Reduce(("aggregate",0),3)), (LCIn,Reduce(("aggregate",0),3)),(LCNot,Reduce(("aggregate",0),3)), (LCDotDot,Reduce(("aggregate",0),3)),(LCAmpersand,Reduce(("aggregate",0),3)), (LCMinus,Reduce(("aggregate",0),3)),(LCPlus,Reduce(("aggregate",0),3)), (LCRem,Reduce(("aggregate",0),3)),(LCMod,Reduce(("aggregate",0),3)), (LCDiv,Reduce(("aggregate",0),3)),(LCStar,Reduce(("aggregate",0),3)), (LCStarStar,Reduce(("aggregate",0),3)),(LCThen,Reduce(("aggregate",0),3)), (LCIs,Reduce(("aggregate",0),3)),(LCGoesTo,Reduce(("aggregate",0),3)), (LCBar,Reduce(("aggregate",0),3)),(LCTill,Reduce(("aggregate",0),3)), (LCLoop,Reduce(("aggregate",0),3))]]@slrp'a110; val slrp'a108=[[(LCCrd,Shift 108)]]@slrp'a109; val slrp'a107=[[(LCUse,Reduce(("attribute",1),2)), (LCOrd,Reduce(("attribute",1),2)),(LCDot,Reduce(("attribute",1),2)), (LCPrimedIdentifier,Reduce(("attribute",1),2)), (LCBecomes,Reduce(("attribute",1),2)),(LCSemi,Reduce(("attribute",1),2)), (LCRRange,Reduce(("attribute",1),2)),(LCDigits,Reduce(("attribute",1),2)), (LCDelta,Reduce(("attribute",1),2)),(LCComma,Reduce(("attribute",1),2)), (LCCrd,Reduce(("attribute",1),2)),(LCAnd,Reduce(("attribute",1),2)), (LCOr,Reduce(("attribute",1),2)),(LCXor,Reduce(("attribute",1),2)), (LCGreaterEquals,Reduce(("attribute",1),2)), (LCGreaterThan,Reduce(("attribute",1),2)), (LCLessEquals,Reduce(("attribute",1),2)),(LCLessThan,Reduce(("attribute",1),2)), (LCNotEquals,Reduce(("attribute",1),2)),(LCEquals,Reduce(("attribute",1),2)), (LCIn,Reduce(("attribute",1),2)),(LCNot,Reduce(("attribute",1),2)), (LCDotDot,Reduce(("attribute",1),2)),(LCAmpersand,Reduce(("attribute",1),2)), (LCMinus,Reduce(("attribute",1),2)),(LCPlus,Reduce(("attribute",1),2)), (LCRem,Reduce(("attribute",1),2)),(LCMod,Reduce(("attribute",1),2)), (LCDiv,Reduce(("attribute",1),2)),(LCStar,Reduce(("attribute",1),2)), (LCStarStar,Reduce(("attribute",1),2)),(LCPrime,Reduce(("attribute",1),2)), (LCGrkXi,Reduce(("attribute",1),2)),(LCRenames,Reduce(("attribute",1),2)), (LCAt,Reduce(("attribute",1),2)),(LCThen,Reduce(("attribute",1),2)), (LCIs,Reduce(("attribute",1),2)),(LCGoesTo,Reduce(("attribute",1),2)), (LCBar,Reduce(("attribute",1),2)),(LCTill,Reduce(("attribute",1),2)), (LCLoop,Reduce(("attribute",1),2)),(LCAnnotation,Reduce(("attribute",1),2)), (LCLChevron,Reduce(("attribute",1),2))]]@slrp'a108; val slrp'a106=[[(LCPrimedIdentifier,Shift 106)]]@slrp'a107; val slrp'a105=[[(LCUse,Reduce(("attribute",0),2)), (LCOrd,Reduce(("attribute",0),2)),(LCDot,Reduce(("attribute",0),2)), (LCPrimedIdentifier,Reduce(("attribute",0),2)), (LCBecomes,Reduce(("attribute",0),2)),(LCSemi,Reduce(("attribute",0),2)), (LCRRange,Reduce(("attribute",0),2)),(LCDigits,Reduce(("attribute",0),2)), (LCDelta,Reduce(("attribute",0),2)),(LCComma,Reduce(("attribute",0),2)), (LCCrd,Reduce(("attribute",0),2)),(LCAnd,Reduce(("attribute",0),2)), (LCOr,Reduce(("attribute",0),2)),(LCXor,Reduce(("attribute",0),2)), (LCGreaterEquals,Reduce(("attribute",0),2)), (LCGreaterThan,Reduce(("attribute",0),2)), (LCLessEquals,Reduce(("attribute",0),2)),(LCLessThan,Reduce(("attribute",0),2)), (LCNotEquals,Reduce(("attribute",0),2)),(LCEquals,Reduce(("attribute",0),2)), (LCIn,Reduce(("attribute",0),2)),(LCNot,Reduce(("attribute",0),2)), (LCDotDot,Reduce(("attribute",0),2)),(LCAmpersand,Reduce(("attribute",0),2)), (LCMinus,Reduce(("attribute",0),2)),(LCPlus,Reduce(("attribute",0),2)), (LCRem,Reduce(("attribute",0),2)),(LCMod,Reduce(("attribute",0),2)), (LCDiv,Reduce(("attribute",0),2)),(LCStar,Reduce(("attribute",0),2)), (LCStarStar,Reduce(("attribute",0),2)),(LCPrime,Reduce(("attribute",0),2)), (LCGrkXi,Reduce(("attribute",0),2)),(LCRenames,Reduce(("attribute",0),2)), (LCAt,Reduce(("attribute",0),2)),(LCThen,Reduce(("attribute",0),2)), (LCIs,Reduce(("attribute",0),2)),(LCGoesTo,Reduce(("attribute",0),2)), (LCBar,Reduce(("attribute",0),2)),(LCTill,Reduce(("attribute",0),2)), (LCLoop,Reduce(("attribute",0),2)),(LCAnnotation,Reduce(("attribute",0),2)), (LCLChevron,Reduce(("attribute",0),2))]]@slrp'a106; val slrp'a104=[[(LCComma,Reduce(("expression_list",1),3)), (LCCrd,Reduce(("expression_list",1),3))]]@slrp'a105; val slrp'a103=[[(LCOrd,Reduce(("selector",0),1)), (LCDot,Reduce(("selector",0),1)),(LCPrimedIdentifier,Reduce(("selector",0),1)), (LCBecomes,Reduce(("selector",0),1)),(LCSemi,Reduce(("selector",0),1)), (LCRRange,Reduce(("selector",0),1)),(LCDigits,Reduce(("selector",0),1)), (LCDelta,Reduce(("selector",0),1)),(LCComma,Reduce(("selector",0),1)), (LCCrd,Reduce(("selector",0),1)),(LCAnd,Reduce(("selector",0),1)), (LCOr,Reduce(("selector",0),1)),(LCXor,Reduce(("selector",0),1)), (LCGreaterEquals,Reduce(("selector",0),1)), (LCGreaterThan,Reduce(("selector",0),1)),(LCLessEquals,Reduce(("selector",0),1)) ,(LCLessThan,Reduce(("selector",0),1)),(LCNotEquals,Reduce(("selector",0),1)), (LCEquals,Reduce(("selector",0),1)),(LCIn,Reduce(("selector",0),1)), (LCNot,Reduce(("selector",0),1)),(LCDotDot,Reduce(("selector",0),1)), (LCAmpersand,Reduce(("selector",0),1)),(LCMinus,Reduce(("selector",0),1)), (LCPlus,Reduce(("selector",0),1)),(LCRem,Reduce(("selector",0),1)), (LCMod,Reduce(("selector",0),1)),(LCDiv,Reduce(("selector",0),1)), (LCStar,Reduce(("selector",0),1)),(LCStarStar,Reduce(("selector",0),1)), (LCPrime,Reduce(("selector",0),1)),(LCGrkXi,Reduce(("selector",0),1)), (LCRenames,Reduce(("selector",0),1)),(LCAt,Reduce(("selector",0),1)), (LCThen,Reduce(("selector",0),1)),(LCIs,Reduce(("selector",0),1)), (LCGoesTo,Reduce(("selector",0),1)),(LCBar,Reduce(("selector",0),1)), (LCTill,Reduce(("selector",0),1)),(LCLoop,Reduce(("selector",0),1)), (LCAnnotation,Reduce(("selector",0),1)),(LCLChevron,Reduce(("selector",0),1))]]@slrp'a104; val slrp'a102=[[(LCOrd,Reduce(("selected_component",0),3)), (LCDot,Reduce(("selected_component",0),3)), (LCPrimedIdentifier,Reduce(("selected_component",0),3)), (LCBecomes,Reduce(("selected_component",0),3)), (LCSemi,Reduce(("selected_component",0),3)), (LCRRange,Reduce(("selected_component",0),3)), (LCDigits,Reduce(("selected_component",0),3)), (LCDelta,Reduce(("selected_component",0),3)), (LCComma,Reduce(("selected_component",0),3)), (LCCrd,Reduce(("selected_component",0),3)), (LCAnd,Reduce(("selected_component",0),3)), (LCOr,Reduce(("selected_component",0),3)), (LCXor,Reduce(("selected_component",0),3)), (LCGreaterEquals,Reduce(("selected_component",0),3)), (LCGreaterThan,Reduce(("selected_component",0),3)), (LCLessEquals,Reduce(("selected_component",0),3)), (LCLessThan,Reduce(("selected_component",0),3)), (LCNotEquals,Reduce(("selected_component",0),3)), (LCEquals,Reduce(("selected_component",0),3)), (LCIn,Reduce(("selected_component",0),3)), (LCNot,Reduce(("selected_component",0),3)), (LCDotDot,Reduce(("selected_component",0),3)), (LCAmpersand,Reduce(("selected_component",0),3)), (LCMinus,Reduce(("selected_component",0),3)), (LCPlus,Reduce(("selected_component",0),3)), (LCRem,Reduce(("selected_component",0),3)), (LCMod,Reduce(("selected_component",0),3)), (LCDiv,Reduce(("selected_component",0),3)), (LCStar,Reduce(("selected_component",0),3)), (LCStarStar,Reduce(("selected_component",0),3)), (LCPrime,Reduce(("selected_component",0),3)), (LCGrkXi,Reduce(("selected_component",0),3)), (LCRenames,Reduce(("selected_component",0),3)), (LCAt,Reduce(("selected_component",0),3)), (LCThen,Reduce(("selected_component",0),3)), (LCIs,Reduce(("selected_component",0),3)), (LCGoesTo,Reduce(("selected_component",0),3)), (LCBar,Reduce(("selected_component",0),3)), (LCTill,Reduce(("selected_component",0),3)), (LCLoop,Reduce(("selected_component",0),3)), (LCAnnotation,Reduce(("selected_component",0),3)), (LCLChevron,Reduce(("selected_component",0),3))]]@slrp'a103; val slrp'a101=[[(LCOrd,Reduce(("indexed_component",0),2)), (LCDot,Reduce(("indexed_component",0),2)), (LCPrimedIdentifier,Reduce(("indexed_component",0),2)), (LCBecomes,Reduce(("indexed_component",0),2)), (LCSemi,Reduce(("indexed_component",0),2)), (LCRRange,Reduce(("indexed_component",0),2)), (LCDigits,Reduce(("indexed_component",0),2)), (LCDelta,Reduce(("indexed_component",0),2)), (LCComma,Reduce(("indexed_component",0),2)), (LCCrd,Reduce(("indexed_component",0),2)), (LCAnd,Reduce(("indexed_component",0),2)), (LCOr,Reduce(("indexed_component",0),2)), (LCXor,Reduce(("indexed_component",0),2)), (LCGreaterEquals,Reduce(("indexed_component",0),2)), (LCGreaterThan,Reduce(("indexed_component",0),2)), (LCLessEquals,Reduce(("indexed_component",0),2)), (LCLessThan,Reduce(("indexed_component",0),2)), (LCNotEquals,Reduce(("indexed_component",0),2)), (LCEquals,Reduce(("indexed_component",0),2)), (LCIn,Reduce(("indexed_component",0),2)), (LCNot,Reduce(("indexed_component",0),2)), (LCDotDot,Reduce(("indexed_component",0),2)), (LCAmpersand,Reduce(("indexed_component",0),2)), (LCMinus,Reduce(("indexed_component",0),2)), (LCPlus,Reduce(("indexed_component",0),2)), (LCRem,Reduce(("indexed_component",0),2)), (LCMod,Reduce(("indexed_component",0),2)), (LCDiv,Reduce(("indexed_component",0),2)), (LCStar,Reduce(("indexed_component",0),2)), (LCStarStar,Reduce(("indexed_component",0),2)), (LCPrime,Reduce(("indexed_component",0),2)), (LCGrkXi,Reduce(("indexed_component",0),2)), (LCRenames,Reduce(("indexed_component",0),2)), (LCAt,Reduce(("indexed_component",0),2)), (LCThen,Reduce(("indexed_component",0),2)), (LCIs,Reduce(("indexed_component",0),2)), (LCGoesTo,Reduce(("indexed_component",0),2)), (LCBar,Reduce(("indexed_component",0),2)), (LCTill,Reduce(("indexed_component",0),2)), (LCLoop,Reduce(("indexed_component",0),2)), (LCAnnotation,Reduce(("indexed_component",0),2)), (LCLChevron,Reduce(("indexed_component",0),2))]]@slrp'a102; val slrp'a100=[[(LCOrd,Reduce(("name",3),1)),(LCDot,Reduce(("name",3),1)), (LCPrimedIdentifier,Reduce(("name",3),1)),(LCBecomes,Reduce(("name",3),1)), (LCSemi,Reduce(("name",3),1)),(LCRRange,Reduce(("name",3),1)), (LCDigits,Reduce(("name",3),1)),(LCDelta,Reduce(("name",3),1)), (LCComma,Reduce(("name",3),1)),(LCCrd,Reduce(("name",3),1)), (LCAnd,Reduce(("name",3),1)),(LCOr,Reduce(("name",3),1)), (LCXor,Reduce(("name",3),1)),(LCGreaterEquals,Reduce(("name",3),1)), (LCGreaterThan,Reduce(("name",3),1)),(LCLessEquals,Reduce(("name",3),1)), (LCLessThan,Reduce(("name",3),1)),(LCNotEquals,Reduce(("name",3),1)), (LCEquals,Reduce(("name",3),1)),(LCIn,Reduce(("name",3),1)), (LCNot,Reduce(("name",3),1)),(LCDotDot,Reduce(("name",3),1)), (LCAmpersand,Reduce(("name",3),1)),(LCMinus,Reduce(("name",3),1)), (LCPlus,Reduce(("name",3),1)),(LCRem,Reduce(("name",3),1)), (LCMod,Reduce(("name",3),1)),(LCDiv,Reduce(("name",3),1)), (LCStar,Reduce(("name",3),1)),(LCStarStar,Reduce(("name",3),1)), (LCPrime,Reduce(("name",3),1)),(LCGrkXi,Reduce(("name",3),1)), (LCRenames,Reduce(("name",3),1)),(LCAt,Reduce(("name",3),1)), (LCThen,Reduce(("name",3),1)),(LCIs,Reduce(("name",3),1)), (LCGoesTo,Reduce(("name",3),1)),(LCBar,Reduce(("name",3),1)), (LCTill,Reduce(("name",3),1)),(LCLoop,Reduce(("name",3),1)), (LCAnnotation,Reduce(("name",3),1)),(LCLChevron,Reduce(("name",3),1))]]@slrp'a101; val slrp'a99=[[(LCOrd,Reduce(("name",2),1)),(LCDot,Reduce(("name",2),1)), (LCPrimedIdentifier,Reduce(("name",2),1)),(LCBecomes,Reduce(("name",2),1)), (LCSemi,Reduce(("name",2),1)),(LCRRange,Reduce(("name",2),1)), (LCDigits,Reduce(("name",2),1)),(LCDelta,Reduce(("name",2),1)), (LCComma,Reduce(("name",2),1)),(LCCrd,Reduce(("name",2),1)), (LCAnd,Reduce(("name",2),1)),(LCOr,Reduce(("name",2),1)), (LCXor,Reduce(("name",2),1)),(LCGreaterEquals,Reduce(("name",2),1)), (LCGreaterThan,Reduce(("name",2),1)),(LCLessEquals,Reduce(("name",2),1)), (LCLessThan,Reduce(("name",2),1)),(LCNotEquals,Reduce(("name",2),1)), (LCEquals,Reduce(("name",2),1)),(LCIn,Reduce(("name",2),1)), (LCNot,Reduce(("name",2),1)),(LCDotDot,Reduce(("name",2),1)), (LCAmpersand,Reduce(("name",2),1)),(LCMinus,Reduce(("name",2),1)), (LCPlus,Reduce(("name",2),1)),(LCRem,Reduce(("name",2),1)), (LCMod,Reduce(("name",2),1)),(LCDiv,Reduce(("name",2),1)), (LCStar,Reduce(("name",2),1)),(LCStarStar,Reduce(("name",2),1)), (LCPrime,Reduce(("name",2),1)),(LCGrkXi,Reduce(("name",2),1)), (LCRenames,Reduce(("name",2),1)),(LCAt,Reduce(("name",2),1)), (LCThen,Reduce(("name",2),1)),(LCIs,Reduce(("name",2),1)), (LCGoesTo,Reduce(("name",2),1)),(LCBar,Reduce(("name",2),1)), (LCTill,Reduce(("name",2),1)),(LCLoop,Reduce(("name",2),1)), (LCAnnotation,Reduce(("name",2),1)),(LCLChevron,Reduce(("name",2),1))]]@slrp'a100; val slrp'a98=[[(LCOrd,Reduce(("name",1),1)),(LCDot,Reduce(("name",1),1)), (LCPrimedIdentifier,Reduce(("name",1),1)),(LCBecomes,Reduce(("name",1),1)), (LCSemi,Reduce(("name",1),1)),(LCRRange,Reduce(("name",1),1)), (LCDigits,Reduce(("name",1),1)),(LCDelta,Reduce(("name",1),1)), (LCComma,Reduce(("name",1),1)),(LCCrd,Reduce(("name",1),1)), (LCAnd,Reduce(("name",1),1)),(LCOr,Reduce(("name",1),1)), (LCXor,Reduce(("name",1),1)),(LCGreaterEquals,Reduce(("name",1),1)), (LCGreaterThan,Reduce(("name",1),1)),(LCLessEquals,Reduce(("name",1),1)), (LCLessThan,Reduce(("name",1),1)),(LCNotEquals,Reduce(("name",1),1)), (LCEquals,Reduce(("name",1),1)),(LCIn,Reduce(("name",1),1)), (LCNot,Reduce(("name",1),1)),(LCDotDot,Reduce(("name",1),1)), (LCAmpersand,Reduce(("name",1),1)),(LCMinus,Reduce(("name",1),1)), (LCPlus,Reduce(("name",1),1)),(LCRem,Reduce(("name",1),1)), (LCMod,Reduce(("name",1),1)),(LCDiv,Reduce(("name",1),1)), (LCStar,Reduce(("name",1),1)),(LCStarStar,Reduce(("name",1),1)), (LCPrime,Reduce(("name",1),1)),(LCGrkXi,Reduce(("name",1),1)), (LCRenames,Reduce(("name",1),1)),(LCAt,Reduce(("name",1),1)), (LCThen,Reduce(("name",1),1)),(LCIs,Reduce(("name",1),1)), (LCGoesTo,Reduce(("name",1),1)),(LCBar,Reduce(("name",1),1)), (LCTill,Reduce(("name",1),1)),(LCLoop,Reduce(("name",1),1)), (LCAnnotation,Reduce(("name",1),1)),(LCLChevron,Reduce(("name",1),1))]]@slrp'a99; val slrp'a97=[[(LCOrd,Reduce(("name",0),1)),(LCDot,Reduce(("name",0),1)), (LCPrimedIdentifier,Reduce(("name",0),1)),(LCBecomes,Reduce(("name",0),1)), (LCSemi,Reduce(("name",0),1)),(LCRRange,Reduce(("name",0),1)), (LCDigits,Reduce(("name",0),1)),(LCDelta,Reduce(("name",0),1)), (LCComma,Reduce(("name",0),1)),(LCCrd,Reduce(("name",0),1)), (LCAnd,Reduce(("name",0),1)),(LCOr,Reduce(("name",0),1)), (LCXor,Reduce(("name",0),1)),(LCGreaterEquals,Reduce(("name",0),1)), (LCGreaterThan,Reduce(("name",0),1)),(LCLessEquals,Reduce(("name",0),1)), (LCLessThan,Reduce(("name",0),1)),(LCNotEquals,Reduce(("name",0),1)), (LCEquals,Reduce(("name",0),1)),(LCIn,Reduce(("name",0),1)), (LCNot,Reduce(("name",0),1)),(LCDotDot,Reduce(("name",0),1)), (LCAmpersand,Reduce(("name",0),1)),(LCMinus,Reduce(("name",0),1)), (LCPlus,Reduce(("name",0),1)),(LCRem,Reduce(("name",0),1)), (LCMod,Reduce(("name",0),1)),(LCDiv,Reduce(("name",0),1)), (LCStar,Reduce(("name",0),1)),(LCStarStar,Reduce(("name",0),1)), (LCPrime,Reduce(("name",0),1)),(LCGrkXi,Reduce(("name",0),1)), (LCRenames,Reduce(("name",0),1)),(LCAt,Reduce(("name",0),1)), (LCThen,Reduce(("name",0),1)),(LCIs,Reduce(("name",0),1)), (LCGoesTo,Reduce(("name",0),1)),(LCBar,Reduce(("name",0),1)), (LCTill,Reduce(("name",0),1)),(LCLoop,Reduce(("name",0),1)), (LCAnnotation,Reduce(("name",0),1)),(LCLChevron,Reduce(("name",0),1))]]@slrp'a98; val slrp'a96=[[(LCEos,Reduce(("proper_body",0),1)), (LCLChevron,Reduce(("proper_body",0),1)), (LCFunction,Reduce(("proper_body",0),1)),(LCPackage,Reduce(("proper_body",0),1)) ,(LCIdentifier,Reduce(("proper_body",0),1)), (LCAnnotation,Reduce(("proper_body",0),1)), (LCSubType,Reduce(("proper_body",0),1)),(LCPragma,Reduce(("proper_body",0),1)), (LCProcedure,Reduce(("proper_body",0),1)),(LCType,Reduce(("proper_body",0),1)), (LCFor,Reduce(("proper_body",0),1)),(LCUse,Reduce(("proper_body",0),1)), (LCReferences,Reduce(("proper_body",0),1)), (LCSeparate,Reduce(("proper_body",0),1)),(LCWith,Reduce(("proper_body",0),1)), (LCBegin,Reduce(("proper_body",0),1)),(LCEnd,Reduce(("proper_body",0),1))]]@slrp'a97; val slrp'a95=[[(LCEos,Reduce(("body",1),1)),(LCLChevron,Reduce(("body",1),1)), (LCFunction,Reduce(("body",1),1)),(LCPackage,Reduce(("body",1),1)), (LCIdentifier,Reduce(("body",1),1)),(LCAnnotation,Reduce(("body",1),1)), (LCSubType,Reduce(("body",1),1)),(LCPragma,Reduce(("body",1),1)), (LCProcedure,Reduce(("body",1),1)),(LCType,Reduce(("body",1),1)), (LCFor,Reduce(("body",1),1)),(LCUse,Reduce(("body",1),1)), (LCBegin,Reduce(("body",1),1)),(LCEnd,Reduce(("body",1),1))]]@slrp'a96; val slrp'a94=[[(LCEos,Reduce(("body",0),1)),(LCLChevron,Reduce(("body",0),1)), (LCFunction,Reduce(("body",0),1)),(LCPackage,Reduce(("body",0),1)), (LCIdentifier,Reduce(("body",0),1)),(LCAnnotation,Reduce(("body",0),1)), (LCSubType,Reduce(("body",0),1)),(LCPragma,Reduce(("body",0),1)), (LCProcedure,Reduce(("body",0),1)),(LCType,Reduce(("body",0),1)), (LCFor,Reduce(("body",0),1)),(LCUse,Reduce(("body",0),1)), (LCBegin,Reduce(("body",0),1)),(LCEnd,Reduce(("body",0),1))]]@slrp'a95; val slrp'a93=[[(LCEos,Reduce(("basic_declarative_item",2),1)), (LCLChevron,Reduce(("basic_declarative_item",2),1)), (LCFunction,Reduce(("basic_declarative_item",2),1)), (LCPackage,Reduce(("basic_declarative_item",2),1)), (LCIdentifier,Reduce(("basic_declarative_item",2),1)), (LCAnnotation,Reduce(("basic_declarative_item",2),1)), (LCSubType,Reduce(("basic_declarative_item",2),1)), (LCPragma,Reduce(("basic_declarative_item",2),1)), (LCProcedure,Reduce(("basic_declarative_item",2),1)), (LCType,Reduce(("basic_declarative_item",2),1)), (LCFor,Reduce(("basic_declarative_item",2),1)), (LCUse,Reduce(("basic_declarative_item",2),1)), (LCEnd,Reduce(("basic_declarative_item",2),1)), (LCPrivate,Reduce(("basic_declarative_item",2),1)), (LCAuxiliary,Reduce(("basic_declarative_item",2),1)), (LCBegin,Reduce(("basic_declarative_item",2),1))]]@slrp'a94; val slrp'a92=[[(LCEos,Reduce(("basic_declarative_item",1),1)), (LCLChevron,Reduce(("basic_declarative_item",1),1)), (LCFunction,Reduce(("basic_declarative_item",1),1)), (LCPackage,Reduce(("basic_declarative_item",1),1)), (LCIdentifier,Reduce(("basic_declarative_item",1),1)), (LCAnnotation,Reduce(("basic_declarative_item",1),1)), (LCSubType,Reduce(("basic_declarative_item",1),1)), (LCPragma,Reduce(("basic_declarative_item",1),1)), (LCProcedure,Reduce(("basic_declarative_item",1),1)), (LCType,Reduce(("basic_declarative_item",1),1)), (LCFor,Reduce(("basic_declarative_item",1),1)), (LCUse,Reduce(("basic_declarative_item",1),1)), (LCEnd,Reduce(("basic_declarative_item",1),1)), (LCPrivate,Reduce(("basic_declarative_item",1),1)), (LCAuxiliary,Reduce(("basic_declarative_item",1),1)), (LCBegin,Reduce(("basic_declarative_item",1),1))]]@slrp'a93; val slrp'a91=[[(LCEos,Reduce(("basic_declarative_item",0),1)), (LCLChevron,Reduce(("basic_declarative_item",0),1)), (LCFunction,Reduce(("basic_declarative_item",0),1)), (LCPackage,Reduce(("basic_declarative_item",0),1)), (LCIdentifier,Reduce(("basic_declarative_item",0),1)), (LCAnnotation,Reduce(("basic_declarative_item",0),1)), (LCSubType,Reduce(("basic_declarative_item",0),1)), (LCPragma,Reduce(("basic_declarative_item",0),1)), (LCProcedure,Reduce(("basic_declarative_item",0),1)), (LCType,Reduce(("basic_declarative_item",0),1)), (LCFor,Reduce(("basic_declarative_item",0),1)), (LCUse,Reduce(("basic_declarative_item",0),1)), (LCEnd,Reduce(("basic_declarative_item",0),1)), (LCPrivate,Reduce(("basic_declarative_item",0),1)), (LCAuxiliary,Reduce(("basic_declarative_item",0),1)), (LCBegin,Reduce(("basic_declarative_item",0),1))]]@slrp'a92; val slrp'a90=[[(LCEos,Reduce(("dec",4),1)),(LCLChevron,Reduce(("dec",4),1)), (LCFunction,Reduce(("dec",4),1)),(LCPackage,Reduce(("dec",4),1)), (LCIdentifier,Reduce(("dec",4),1)),(LCAnnotation,Reduce(("dec",4),1)), (LCSubType,Reduce(("dec",4),1)),(LCPragma,Reduce(("dec",4),1)), (LCProcedure,Reduce(("dec",4),1)),(LCType,Reduce(("dec",4),1)), (LCFor,Reduce(("dec",4),1)),(LCUse,Reduce(("dec",4),1)), (LCBegin,Reduce(("dec",4),1)),(LCEnd,Reduce(("dec",4),1))]]@slrp'a91; val slrp'a89=[[(LCEos,Reduce(("dec",3),1)),(LCLChevron,Reduce(("dec",3),1)), (LCFunction,Reduce(("dec",3),1)),(LCPackage,Reduce(("dec",3),1)), (LCIdentifier,Reduce(("dec",3),1)),(LCAnnotation,Reduce(("dec",3),1)), (LCSubType,Reduce(("dec",3),1)),(LCPragma,Reduce(("dec",3),1)), (LCProcedure,Reduce(("dec",3),1)),(LCType,Reduce(("dec",3),1)), (LCFor,Reduce(("dec",3),1)),(LCUse,Reduce(("dec",3),1)), (LCBegin,Reduce(("dec",3),1)),(LCEnd,Reduce(("dec",3),1))]]@slrp'a90; val slrp'a88=[[(LCEos,Reduce(("dec",2),1)),(LCLChevron,Reduce(("dec",2),1)), (LCFunction,Reduce(("dec",2),1)),(LCPackage,Reduce(("dec",2),1)), (LCIdentifier,Reduce(("dec",2),1)),(LCAnnotation,Reduce(("dec",2),1)), (LCSubType,Reduce(("dec",2),1)),(LCPragma,Reduce(("dec",2),1)), (LCProcedure,Reduce(("dec",2),1)),(LCType,Reduce(("dec",2),1)), (LCFor,Reduce(("dec",2),1)),(LCUse,Reduce(("dec",2),1)), (LCBegin,Reduce(("dec",2),1)),(LCEnd,Reduce(("dec",2),1))]]@slrp'a89; val slrp'a87=[[(LCEos,Reduce(("dec",1),1)),(LCLChevron,Reduce(("dec",1),1)), (LCFunction,Reduce(("dec",1),1)),(LCPackage,Reduce(("dec",1),1)), (LCIdentifier,Reduce(("dec",1),1)),(LCAnnotation,Reduce(("dec",1),1)), (LCSubType,Reduce(("dec",1),1)),(LCPragma,Reduce(("dec",1),1)), (LCProcedure,Reduce(("dec",1),1)),(LCType,Reduce(("dec",1),1)), (LCFor,Reduce(("dec",1),1)),(LCUse,Reduce(("dec",1),1)), (LCBegin,Reduce(("dec",1),1)),(LCEnd,Reduce(("dec",1),1))]]@slrp'a88; val slrp'a86=[[(LCEos,Reduce(("dec",0),1)),(LCLChevron,Reduce(("dec",0),1)), (LCFunction,Reduce(("dec",0),1)),(LCPackage,Reduce(("dec",0),1)), (LCIdentifier,Reduce(("dec",0),1)),(LCAnnotation,Reduce(("dec",0),1)), (LCSubType,Reduce(("dec",0),1)),(LCPragma,Reduce(("dec",0),1)), (LCProcedure,Reduce(("dec",0),1)),(LCType,Reduce(("dec",0),1)), (LCFor,Reduce(("dec",0),1)),(LCUse,Reduce(("dec",0),1)), (LCBegin,Reduce(("dec",0),1)),(LCEnd,Reduce(("dec",0),1))]]@slrp'a87; val slrp'a85=[[(LCEos,Reduce(("declarative_part",1),2)), (LCBegin,Reduce(("declarative_part",1),2)), (LCEnd,Reduce(("declarative_part",1),2))]]@slrp'a86; val slrp'a84=[[(LCEnd,Reduce(("component_declaration",0),4)), (LCIdentifier,Reduce(("component_declaration",0),4))]]@slrp'a85; val slrp'a83=[[(LCSemi,Shift 83)]]@slrp'a84; val slrp'a82=[[(LCColon,Shift 660)]]@slrp'a83; val slrp'a81=[[(LCEnd,Reduce(("component_list",1),2))]]@slrp'a82; val slrp'a80=[[(LCSemi,Reduce(("record_type_definition",0),4))]]@slrp'a81; val slrp'a79=[[(LCRecord,Shift 79)]]@slrp'a80; val slrp'a78=[[(LCEnd,Shift 78)]]@slrp'a79; val slrp'a77=[[(LCGoesTo,Reduce(("discrete_range",0),2)), (LCBar,Reduce(("discrete_range",0),2)),(LCTill,Reduce(("discrete_range",0),2)), (LCLoop,Reduce(("discrete_range",0),2))]]@slrp'a78; val slrp'a76=[[(LCCrd,Reduce(("discrete_range_list",1),3))]]@slrp'a77; val slrp'a75=[[(LCOf,Reduce(("index_constraint",0),3))]]@slrp'a76; val slrp'a74=[[(LCCrd,Shift 74)]]@slrp'a75; val slrp'a73=[[(LCCrd,Reduce(("index_subtype_definition",0),3)), (LCComma,Reduce(("index_subtype_definition",0),3))]]@slrp'a74; val slrp'a72=[[(LCLessGreat,Shift 72)]]@slrp'a73; val slrp'a71=[[(LCRRange,Shift 71)]]@slrp'a72; val slrp'a70=[[(LCCrd,Reduce(("index_subtype_definition_list",1),3))]]@slrp'a71; val slrp'a69=[[(LCSemi,Reduce(("constrained_array_definition",0),4))]]@slrp'a70; val slrp'a68=[[(LCOf,Shift 659)]]@slrp'a69; val slrp'a67=[[(LCSemi,Reduce(("unconstrained_array_definition",0),6))]]@slrp'a68; val slrp'a66=[[(LCOf,Shift 658)]]@slrp'a67; val slrp'a65=[[(LCCrd,Shift 65)]]@slrp'a66; val slrp'a64=[[(LCSemi,Reduce(("array_type_definition",1),1))]]@slrp'a65; val slrp'a63=[[(LCSemi,Reduce(("array_type_definition",0),1))]]@slrp'a64; val slrp'a62=[[(LCBecomes,Reduce(("fixed_accuracy_definition",0),2)), (LCSemi,Reduce(("fixed_accuracy_definition",0),2)), (LCRRange,Reduce(("fixed_accuracy_definition",0),2)), (LCCrd,Reduce(("fixed_accuracy_definition",0),2)), (LCComma,Reduce(("fixed_accuracy_definition",0),2))]]@slrp'a63; val slrp'a61=[[(LCBecomes,Reduce(("fixed_point_constraint",1),2)), (LCSemi,Reduce(("fixed_point_constraint",1),2)), (LCCrd,Reduce(("fixed_point_constraint",1),2)), (LCComma,Reduce(("fixed_point_constraint",1),2))]]@slrp'a62; val slrp'a60=[[(LCBecomes,Reduce(("floating_accuracy_definition",0),2)), (LCSemi,Reduce(("floating_accuracy_definition",0),2)), (LCRRange,Reduce(("floating_accuracy_definition",0),2)), (LCCrd,Reduce(("floating_accuracy_definition",0),2)), (LCComma,Reduce(("floating_accuracy_definition",0),2))]]@slrp'a61; val slrp'a59=[[(LCBecomes,Reduce(("floating_point_constraint",1),2)), (LCSemi,Reduce(("floating_point_constraint",1),2)), (LCCrd,Reduce(("floating_point_constraint",1),2)), (LCComma,Reduce(("floating_point_constraint",1),2))]]@slrp'a60; val slrp'a58=[[(LCSemi,Reduce(("real_type_definition",1),1))]]@slrp'a59; val slrp'a57=[[(LCSemi,Reduce(("real_type_definition",0),1))]]@slrp'a58; val slrp'a56=[[(LCSemi,Reduce(("integer_type_definition",0),1))]]@slrp'a57; val slrp'a55=[[(LCSemi,Reduce(("enumeration_type_definition",0),3))]]@slrp'a56; val slrp'a54=[[(LCCrd,Shift 54)]]@slrp'a55; val slrp'a53=[[(LCBecomes,Reduce(("range_constraint",0),2)), (LCSemi,Reduce(("range_constraint",0),2)), (LCCrd,Reduce(("range_constraint",0),2)), (LCComma,Reduce(("range_constraint",0),2)), (LCGoesTo,Reduce(("range_constraint",0),2)), (LCBar,Reduce(("range_constraint",0),2)), (LCTill,Reduce(("range_constraint",0),2)), (LCLoop,Reduce(("range_constraint",0),2))]]@slrp'a54; val slrp'a52=[[(LCBecomes,Reduce(("constraint",2),1)), (LCSemi,Reduce(("constraint",2),1)),(LCCrd,Reduce(("constraint",2),1)), (LCComma,Reduce(("constraint",2),1))]]@slrp'a53; val slrp'a51=[[(LCBecomes,Reduce(("constraint",1),1)), (LCSemi,Reduce(("constraint",1),1)),(LCCrd,Reduce(("constraint",1),1)), (LCComma,Reduce(("constraint",1),1))]]@slrp'a52; val slrp'a50=[[(LCBecomes,Reduce(("constraint",0),1)), (LCSemi,Reduce(("constraint",0),1)),(LCCrd,Reduce(("constraint",0),1)), (LCComma,Reduce(("constraint",0),1))]]@slrp'a51; val slrp'a49=[[(LCBecomes,Reduce(("subtype_indication",0),2)), (LCSemi,Reduce(("subtype_indication",0),2)), (LCCrd,Reduce(("subtype_indication",0),2)), (LCComma,Reduce(("subtype_indication",0),2))]]@slrp'a50; val slrp'a48=[[(LCEos,Reduce(("subtype_declaration",0),5)), (LCLChevron,Reduce(("subtype_declaration",0),5)), (LCFunction,Reduce(("subtype_declaration",0),5)), (LCPackage,Reduce(("subtype_declaration",0),5)), (LCIdentifier,Reduce(("subtype_declaration",0),5)), (LCAnnotation,Reduce(("subtype_declaration",0),5)), (LCSubType,Reduce(("subtype_declaration",0),5)), (LCPragma,Reduce(("subtype_declaration",0),5)), (LCProcedure,Reduce(("subtype_declaration",0),5)), (LCType,Reduce(("subtype_declaration",0),5)), (LCFor,Reduce(("subtype_declaration",0),5)), (LCUse,Reduce(("subtype_declaration",0),5)), (LCImplement,Reduce(("subtype_declaration",0),5)), (LCEnd,Reduce(("subtype_declaration",0),5)), (LCPrivate,Reduce(("subtype_declaration",0),5)), (LCAuxiliary,Reduce(("subtype_declaration",0),5)), (LCBegin,Reduce(("subtype_declaration",0),5))]]@slrp'a49; val slrp'a47=[[(LCSemi,Shift 47)]]@slrp'a48; val slrp'a46=[[(LCIs,Shift 657)]]@slrp'a47; val slrp'a45=[[(LCIdentifier,Shift 45)]]@slrp'a46; val slrp'a44=[[(LCSemi,Reduce(("type_definition",4),1))]]@slrp'a45; val slrp'a43=[[(LCSemi,Reduce(("type_definition",3),1))]]@slrp'a44; val slrp'a42=[[(LCSemi,Reduce(("type_definition",2),1))]]@slrp'a43; val slrp'a41=[[(LCSemi,Reduce(("type_definition",1),1))]]@slrp'a42; val slrp'a40=[[(LCSemi,Reduce(("type_definition",0),1))]]@slrp'a41; val slrp'a39=[[(LCEos,Reduce(("full_type_declaration",1),6)), (LCLChevron,Reduce(("full_type_declaration",1),6)), (LCFunction,Reduce(("full_type_declaration",1),6)), (LCPackage,Reduce(("full_type_declaration",1),6)), (LCIdentifier,Reduce(("full_type_declaration",1),6)), (LCAnnotation,Reduce(("full_type_declaration",1),6)), (LCSubType,Reduce(("full_type_declaration",1),6)), (LCPragma,Reduce(("full_type_declaration",1),6)), (LCProcedure,Reduce(("full_type_declaration",1),6)), (LCType,Reduce(("full_type_declaration",1),6)), (LCFor,Reduce(("full_type_declaration",1),6)), (LCUse,Reduce(("full_type_declaration",1),6)), (LCImplement,Reduce(("full_type_declaration",1),6)), (LCEnd,Reduce(("full_type_declaration",1),6)), (LCPrivate,Reduce(("full_type_declaration",1),6)), (LCAuxiliary,Reduce(("full_type_declaration",1),6)), (LCBegin,Reduce(("full_type_declaration",1),6))]]@slrp'a40; val slrp'a38=[[(LCSemi,Shift 38)]]@slrp'a39; val slrp'a37=[[(LCEos,Reduce(("full_type_declaration",0),5)), (LCLChevron,Reduce(("full_type_declaration",0),5)), (LCFunction,Reduce(("full_type_declaration",0),5)), (LCPackage,Reduce(("full_type_declaration",0),5)), (LCIdentifier,Reduce(("full_type_declaration",0),5)), (LCAnnotation,Reduce(("full_type_declaration",0),5)), (LCSubType,Reduce(("full_type_declaration",0),5)), (LCPragma,Reduce(("full_type_declaration",0),5)), (LCProcedure,Reduce(("full_type_declaration",0),5)), (LCType,Reduce(("full_type_declaration",0),5)), (LCFor,Reduce(("full_type_declaration",0),5)), (LCUse,Reduce(("full_type_declaration",0),5)), (LCImplement,Reduce(("full_type_declaration",0),5)), (LCEnd,Reduce(("full_type_declaration",0),5)), (LCPrivate,Reduce(("full_type_declaration",0),5)), (LCAuxiliary,Reduce(("full_type_declaration",0),5)), (LCBegin,Reduce(("full_type_declaration",0),5))]]@slrp'a38; val slrp'a36=[[(LCSemi,Shift 36)]]@slrp'a37; val slrp'a35=[[(LCEos,Reduce(("type_declaration",1),1)), (LCLChevron,Reduce(("type_declaration",1),1)), (LCFunction,Reduce(("type_declaration",1),1)), (LCPackage,Reduce(("type_declaration",1),1)), (LCIdentifier,Reduce(("type_declaration",1),1)), (LCAnnotation,Reduce(("type_declaration",1),1)), (LCSubType,Reduce(("type_declaration",1),1)), (LCPragma,Reduce(("type_declaration",1),1)), (LCProcedure,Reduce(("type_declaration",1),1)), (LCType,Reduce(("type_declaration",1),1)), (LCFor,Reduce(("type_declaration",1),1)), (LCUse,Reduce(("type_declaration",1),1)), (LCImplement,Reduce(("type_declaration",1),1)), (LCEnd,Reduce(("type_declaration",1),1)), (LCPrivate,Reduce(("type_declaration",1),1)), (LCAuxiliary,Reduce(("type_declaration",1),1)), (LCBegin,Reduce(("type_declaration",1),1))]]@slrp'a36; val slrp'a34=[[(LCEos,Reduce(("type_declaration",0),1)), (LCLChevron,Reduce(("type_declaration",0),1)), (LCFunction,Reduce(("type_declaration",0),1)), (LCPackage,Reduce(("type_declaration",0),1)), (LCIdentifier,Reduce(("type_declaration",0),1)), (LCAnnotation,Reduce(("type_declaration",0),1)), (LCSubType,Reduce(("type_declaration",0),1)), (LCPragma,Reduce(("type_declaration",0),1)), (LCProcedure,Reduce(("type_declaration",0),1)), (LCType,Reduce(("type_declaration",0),1)), (LCFor,Reduce(("type_declaration",0),1)), (LCUse,Reduce(("type_declaration",0),1)), (LCImplement,Reduce(("type_declaration",0),1)), (LCEnd,Reduce(("type_declaration",0),1)), (LCPrivate,Reduce(("type_declaration",0),1)), (LCAuxiliary,Reduce(("type_declaration",0),1)), (LCBegin,Reduce(("type_declaration",0),1))]]@slrp'a35; val slrp'a33=[[(LCColon,Reduce(("identifier_list",1),3)), (LCCrd,Reduce(("identifier_list",1),3)),(LCSemi,Reduce(("identifier_list",1),3)) ]]@slrp'a34; val slrp'a32=[[(LCEos,Reduce(("variable_declaration",1),6)), (LCLChevron,Reduce(("variable_declaration",1),6)), (LCFunction,Reduce(("variable_declaration",1),6)), (LCPackage,Reduce(("variable_declaration",1),6)), (LCIdentifier,Reduce(("variable_declaration",1),6)), (LCAnnotation,Reduce(("variable_declaration",1),6)), (LCSubType,Reduce(("variable_declaration",1),6)), (LCPragma,Reduce(("variable_declaration",1),6)), (LCProcedure,Reduce(("variable_declaration",1),6)), (LCType,Reduce(("variable_declaration",1),6)), (LCFor,Reduce(("variable_declaration",1),6)), (LCUse,Reduce(("variable_declaration",1),6)), (LCImplement,Reduce(("variable_declaration",1),6)), (LCEnd,Reduce(("variable_declaration",1),6)), (LCPrivate,Reduce(("variable_declaration",1),6)), (LCAuxiliary,Reduce(("variable_declaration",1),6)), (LCBegin,Reduce(("variable_declaration",1),6))]]@slrp'a33; val slrp'a31=[[(LCSemi,Shift 31)]]@slrp'a32; val slrp'a30=[[(LCEos,Reduce(("variable_declaration",0),4)), (LCLChevron,Reduce(("variable_declaration",0),4)), (LCFunction,Reduce(("variable_declaration",0),4)), (LCPackage,Reduce(("variable_declaration",0),4)), (LCIdentifier,Reduce(("variable_declaration",0),4)), (LCAnnotation,Reduce(("variable_declaration",0),4)), (LCSubType,Reduce(("variable_declaration",0),4)), (LCPragma,Reduce(("variable_declaration",0),4)), (LCProcedure,Reduce(("variable_declaration",0),4)), (LCType,Reduce(("variable_declaration",0),4)), (LCFor,Reduce(("variable_declaration",0),4)), (LCUse,Reduce(("variable_declaration",0),4)), (LCImplement,Reduce(("variable_declaration",0),4)), (LCEnd,Reduce(("variable_declaration",0),4)), (LCPrivate,Reduce(("variable_declaration",0),4)), (LCAuxiliary,Reduce(("variable_declaration",0),4)), (LCBegin,Reduce(("variable_declaration",0),4))]]@slrp'a31; val slrp'a29=[[(LCEos,Reduce(("constant_declaration",1),6)), (LCLChevron,Reduce(("constant_declaration",1),6)), (LCFunction,Reduce(("constant_declaration",1),6)), (LCPackage,Reduce(("constant_declaration",1),6)), (LCIdentifier,Reduce(("constant_declaration",1),6)), (LCAnnotation,Reduce(("constant_declaration",1),6)), (LCSubType,Reduce(("constant_declaration",1),6)), (LCPragma,Reduce(("constant_declaration",1),6)), (LCProcedure,Reduce(("constant_declaration",1),6)), (LCType,Reduce(("constant_declaration",1),6)), (LCFor,Reduce(("constant_declaration",1),6)), (LCUse,Reduce(("constant_declaration",1),6)), (LCImplement,Reduce(("constant_declaration",1),6)), (LCEnd,Reduce(("constant_declaration",1),6)), (LCPrivate,Reduce(("constant_declaration",1),6)), (LCAuxiliary,Reduce(("constant_declaration",1),6)), (LCBegin,Reduce(("constant_declaration",1),6))]]@slrp'a30; val slrp'a28=[[(LCSemi,Shift 28)]]@slrp'a29; val slrp'a27=[[(LCEos,Reduce(("constant_declaration",0),7)), (LCLChevron,Reduce(("constant_declaration",0),7)), (LCFunction,Reduce(("constant_declaration",0),7)), (LCPackage,Reduce(("constant_declaration",0),7)), (LCIdentifier,Reduce(("constant_declaration",0),7)), (LCAnnotation,Reduce(("constant_declaration",0),7)), (LCSubType,Reduce(("constant_declaration",0),7)), (LCPragma,Reduce(("constant_declaration",0),7)), (LCProcedure,Reduce(("constant_declaration",0),7)), (LCType,Reduce(("constant_declaration",0),7)), (LCFor,Reduce(("constant_declaration",0),7)), (LCUse,Reduce(("constant_declaration",0),7)), (LCImplement,Reduce(("constant_declaration",0),7)), (LCEnd,Reduce(("constant_declaration",0),7)), (LCPrivate,Reduce(("constant_declaration",0),7)), (LCAuxiliary,Reduce(("constant_declaration",0),7)), (LCBegin,Reduce(("constant_declaration",0),7))]]@slrp'a28; val slrp'a26=[[(LCSemi,Shift 26)]]@slrp'a27; val slrp'a25=[[(LCEos,Reduce(("object_declaration",1),1)), (LCLChevron,Reduce(("object_declaration",1),1)), (LCFunction,Reduce(("object_declaration",1),1)), (LCPackage,Reduce(("object_declaration",1),1)), (LCIdentifier,Reduce(("object_declaration",1),1)), (LCAnnotation,Reduce(("object_declaration",1),1)), (LCSubType,Reduce(("object_declaration",1),1)), (LCPragma,Reduce(("object_declaration",1),1)), (LCProcedure,Reduce(("object_declaration",1),1)), (LCType,Reduce(("object_declaration",1),1)), (LCFor,Reduce(("object_declaration",1),1)), (LCUse,Reduce(("object_declaration",1),1)), (LCImplement,Reduce(("object_declaration",1),1)), (LCEnd,Reduce(("object_declaration",1),1)), (LCPrivate,Reduce(("object_declaration",1),1)), (LCAuxiliary,Reduce(("object_declaration",1),1)), (LCBegin,Reduce(("object_declaration",1),1))]]@slrp'a26; val slrp'a24=[[(LCEos,Reduce(("object_declaration",0),1)), (LCLChevron,Reduce(("object_declaration",0),1)), (LCFunction,Reduce(("object_declaration",0),1)), (LCPackage,Reduce(("object_declaration",0),1)), (LCIdentifier,Reduce(("object_declaration",0),1)), (LCAnnotation,Reduce(("object_declaration",0),1)), (LCSubType,Reduce(("object_declaration",0),1)), (LCPragma,Reduce(("object_declaration",0),1)), (LCProcedure,Reduce(("object_declaration",0),1)), (LCType,Reduce(("object_declaration",0),1)), (LCFor,Reduce(("object_declaration",0),1)), (LCUse,Reduce(("object_declaration",0),1)), (LCImplement,Reduce(("object_declaration",0),1)), (LCEnd,Reduce(("object_declaration",0),1)), (LCPrivate,Reduce(("object_declaration",0),1)), (LCAuxiliary,Reduce(("object_declaration",0),1)), (LCBegin,Reduce(("object_declaration",0),1))]]@slrp'a25; val slrp'a23=[[(LCEos,Reduce(("basic_declaration",5),1)), (LCLChevron,Reduce(("basic_declaration",5),1)), (LCFunction,Reduce(("basic_declaration",5),1)), (LCPackage,Reduce(("basic_declaration",5),1)), (LCIdentifier,Reduce(("basic_declaration",5),1)), (LCAnnotation,Reduce(("basic_declaration",5),1)), (LCSubType,Reduce(("basic_declaration",5),1)), (LCPragma,Reduce(("basic_declaration",5),1)), (LCProcedure,Reduce(("basic_declaration",5),1)), (LCType,Reduce(("basic_declaration",5),1)), (LCFor,Reduce(("basic_declaration",5),1)), (LCUse,Reduce(("basic_declaration",5),1)), (LCImplement,Reduce(("basic_declaration",5),1)), (LCEnd,Reduce(("basic_declaration",5),1)), (LCPrivate,Reduce(("basic_declaration",5),1)), (LCAuxiliary,Reduce(("basic_declaration",5),1)), (LCBegin,Reduce(("basic_declaration",5),1))]]@slrp'a24; val slrp'a22=[[(LCEos,Reduce(("basic_declaration",4),1)), (LCLChevron,Reduce(("basic_declaration",4),1)), (LCFunction,Reduce(("basic_declaration",4),1)), (LCPackage,Reduce(("basic_declaration",4),1)), (LCIdentifier,Reduce(("basic_declaration",4),1)), (LCAnnotation,Reduce(("basic_declaration",4),1)), (LCSubType,Reduce(("basic_declaration",4),1)), (LCPragma,Reduce(("basic_declaration",4),1)), (LCProcedure,Reduce(("basic_declaration",4),1)), (LCType,Reduce(("basic_declaration",4),1)), (LCFor,Reduce(("basic_declaration",4),1)), (LCUse,Reduce(("basic_declaration",4),1)), (LCImplement,Reduce(("basic_declaration",4),1)), (LCEnd,Reduce(("basic_declaration",4),1)), (LCPrivate,Reduce(("basic_declaration",4),1)), (LCAuxiliary,Reduce(("basic_declaration",4),1)), (LCBegin,Reduce(("basic_declaration",4),1))]]@slrp'a23; val slrp'a21=[[(LCEos,Reduce(("basic_declaration",3),1)), (LCLChevron,Reduce(("basic_declaration",3),1)), (LCFunction,Reduce(("basic_declaration",3),1)), (LCPackage,Reduce(("basic_declaration",3),1)), (LCIdentifier,Reduce(("basic_declaration",3),1)), (LCAnnotation,Reduce(("basic_declaration",3),1)), (LCSubType,Reduce(("basic_declaration",3),1)), (LCPragma,Reduce(("basic_declaration",3),1)), (LCProcedure,Reduce(("basic_declaration",3),1)), (LCType,Reduce(("basic_declaration",3),1)), (LCFor,Reduce(("basic_declaration",3),1)), (LCUse,Reduce(("basic_declaration",3),1)), (LCImplement,Reduce(("basic_declaration",3),1)), (LCEnd,Reduce(("basic_declaration",3),1)), (LCPrivate,Reduce(("basic_declaration",3),1)), (LCAuxiliary,Reduce(("basic_declaration",3),1)), (LCBegin,Reduce(("basic_declaration",3),1))]]@slrp'a22; val slrp'a20=[[(LCEos,Reduce(("basic_declaration",2),1)), (LCLChevron,Reduce(("basic_declaration",2),1)), (LCFunction,Reduce(("basic_declaration",2),1)), (LCPackage,Reduce(("basic_declaration",2),1)), (LCIdentifier,Reduce(("basic_declaration",2),1)), (LCAnnotation,Reduce(("basic_declaration",2),1)), (LCSubType,Reduce(("basic_declaration",2),1)), (LCPragma,Reduce(("basic_declaration",2),1)), (LCProcedure,Reduce(("basic_declaration",2),1)), (LCType,Reduce(("basic_declaration",2),1)), (LCFor,Reduce(("basic_declaration",2),1)), (LCUse,Reduce(("basic_declaration",2),1)), (LCImplement,Reduce(("basic_declaration",2),1)), (LCEnd,Reduce(("basic_declaration",2),1)), (LCPrivate,Reduce(("basic_declaration",2),1)), (LCAuxiliary,Reduce(("basic_declaration",2),1)), (LCBegin,Reduce(("basic_declaration",2),1))]]@slrp'a21; val slrp'a19=[[(LCEos,Reduce(("basic_declaration",1),1)), (LCLChevron,Reduce(("basic_declaration",1),1)), (LCFunction,Reduce(("basic_declaration",1),1)), (LCPackage,Reduce(("basic_declaration",1),1)), (LCIdentifier,Reduce(("basic_declaration",1),1)), (LCAnnotation,Reduce(("basic_declaration",1),1)), (LCSubType,Reduce(("basic_declaration",1),1)), (LCPragma,Reduce(("basic_declaration",1),1)), (LCProcedure,Reduce(("basic_declaration",1),1)), (LCType,Reduce(("basic_declaration",1),1)), (LCFor,Reduce(("basic_declaration",1),1)), (LCUse,Reduce(("basic_declaration",1),1)), (LCImplement,Reduce(("basic_declaration",1),1)), (LCEnd,Reduce(("basic_declaration",1),1)), (LCPrivate,Reduce(("basic_declaration",1),1)), (LCAuxiliary,Reduce(("basic_declaration",1),1)), (LCBegin,Reduce(("basic_declaration",1),1))]]@slrp'a20; val slrp'a18=[[(LCEos,Reduce(("basic_declaration",0),1)), (LCLChevron,Reduce(("basic_declaration",0),1)), (LCFunction,Reduce(("basic_declaration",0),1)), (LCPackage,Reduce(("basic_declaration",0),1)), (LCIdentifier,Reduce(("basic_declaration",0),1)), (LCAnnotation,Reduce(("basic_declaration",0),1)), (LCSubType,Reduce(("basic_declaration",0),1)), (LCPragma,Reduce(("basic_declaration",0),1)), (LCProcedure,Reduce(("basic_declaration",0),1)), (LCType,Reduce(("basic_declaration",0),1)), (LCFor,Reduce(("basic_declaration",0),1)), (LCUse,Reduce(("basic_declaration",0),1)), (LCImplement,Reduce(("basic_declaration",0),1)), (LCEnd,Reduce(("basic_declaration",0),1)), (LCPrivate,Reduce(("basic_declaration",0),1)), (LCAuxiliary,Reduce(("basic_declaration",0),1)), (LCBegin,Reduce(("basic_declaration",0),1))]]@slrp'a19; val slrp'a17=[[(LCEos,Reduce(("sequence_of_statements_or_block",1),1))]]@slrp'a18; val slrp'a16=[[(LCEos,Reduce(("sequence_of_statements_or_block",0),1))]]@slrp'a17; val slrp'a15=[[(LCEos,Reduce(("web_clause",12),3))]]@slrp'a16; val slrp'a14=[[(LCEos,Reduce(("web_clause",11),1))]]@slrp'a15; val slrp'a13=[[(LCEos,Reduce(("web_clause",10),2))]]@slrp'a14; val slrp'a12=[[(LCArbitraryAda,Shift 12)]]@slrp'a13; val slrp'a11=[[(LCEos,Reduce(("web_clause",9),2))]]@slrp'a12; val slrp'a10=[[(LCEos,Reduce(("web_clause",8),3))]]@slrp'a11; val slrp'a9=[[(LCEos,Reduce(("web_clause",7),2))]]@slrp'a10; val slrp'a8=[[(LCEos,Reduce(("web_clause",6),3))]]@slrp'a9; val slrp'a7=[[(LCEos,Reduce(("web_clause",5),3))]]@slrp'a8; val slrp'a6=[[(LCEos,Reduce(("web_clause",4),3))]]@slrp'a7; val slrp'a5=[[(LCEos,Reduce(("web_clause",3),3))]]@slrp'a6; val slrp'a4=[[(LCEos,Reduce(("web_clause",2),3))]]@slrp'a5; val slrp'a3=[[(LCEos,Reduce(("web_clause",1),3))]]@slrp'a4; val slrp'a2=[[(LCEos,Reduce(("web_clause",0),1))]]@slrp'a3; val slrp'a1=[[(LCEos,Accept)]]@slrp'a2; in val slrp'actions=Array.fromList slrp'a1; end; polyml-5.7.1/Tests/Succeed/Test149.ML0000644000175000017500000000107513204034553016066 0ustar daviddavid(* Some tests for the HashArray structure. *) open HashArray; val a = hash 10: int hash; update(a, "a", 1); update(a, "b", 2); update(a, "k", 3); (* Happens to hash to the same as "a" *) update(a, "l", 4); val sum = fold (fn (_, a, b) => a+b) 0; fun verify true = () | verify false = raise Fail "failed"; verify(sub(a, "a") = SOME 1); verify(sub(a, "b") = SOME 2); verify(sub(a, "c") = NONE); verify(sub(a, "k") = SOME 3); verify(sub(a, "l") = SOME 4); verify(sum a = 10); delete(a, "a"); verify(sub(a, "a") = NONE); verify(sub(a, "k") = SOME 3); verify(sum a = 9); polyml-5.7.1/Tests/Succeed/Test153.ML0000644000175000017500000000047013204034553016057 0ustar daviddavid(* Bug to do with raising an exception inside a new thread. The actual problem was that the same location on the stack was used for the normal return address and the exception case. *) PolyML.Compiler.maxInlineSize := 1; fun wrap _ _ _ _ _ () = raise Match; Thread.Thread.fork (wrap 1 2 3 4 5, []); polyml-5.7.1/Tests/Succeed/Test054.ML0000644000175000017500000000023513204034553016056 0ustar daviddavid(* This segfaulted on x86-64 with 5.3rc1 *) datatype ('a, 'b, 'c, 'd, 'e, 'f, 'g) t = X of 'a | Y of 'b; (X 1: (int, int, int, int, int, int, int) t) = X 1; polyml-5.7.1/Tests/Succeed/Test122.ML0000644000175000017500000000366113204034553016060 0ustar daviddavid(* Real number bugs reported by Phil Clayton together with some additional tests. *) fun check x = x orelse raise Fail "Test failed"; let val a = Real.nextAfter(1.0, 2.0) in check(a > 1.0 andalso a < 2.0) (* This was actually a code-generator bug. *) end; (* The old version of the basis library documentation said that this should print the digits. That was removed before the book was published but not fixed in the source. *) check(IEEEReal.toString {class = IEEEReal.NAN, sign = false, digits = [1,2,3], exp = 0} = "nan"); val pNan = valOf(Real.fromDecimal { class = IEEEReal.NAN, sign = false, digits = [], exp = 0}) and mNan = valOf(Real.fromDecimal { class = IEEEReal.NAN, sign = true, digits = [], exp = 0}); check(not(Real.signBit pNan)); check(Real.signBit mNan); check(not(#sign(Real.toDecimal pNan))); check(#sign(Real.toDecimal mNan)); check(not(Real.signBit(abs(Real.posInf * 0.0)))); check(not(Real.signBit(abs(~ (Real.posInf * 0.0))))); check(not(Real.signBit(Real.abs(Real.posInf * 0.0)))); check(not(Real.signBit(Real.abs(~ (Real.posInf * 0.0))))); check(Real.fmt (StringCvt.SCI NONE) mNan = "nan"); check(Real.fmt (StringCvt.FIX NONE) mNan = "nan"); check(Real.fmt (StringCvt.GEN NONE) mNan = "nan"); check(Real.fmt StringCvt.EXACT mNan = "nan"); check(not (Real.isNan 0.0)); check(not (Real.isNan ~1.0)); check(not (Real.isNan Real.posInf)); check(not (Real.isNan Real.negInf)); check (Real.isNan pNan); check (Real.isNan mNan); check(Real.isFinite 0.0); check(not (Real.isFinite pNan)); check(not (Real.isFinite mNan)); check(not (Real.isFinite Real.posInf)); check(not (Real.isFinite Real.negInf)); (* The exceptions with invalid specifications should be raised when Real.fmt is applied to the spec. *) check((Real.fmt(StringCvt.SCI(SOME ~1)); false) handle Size => true); check((Real.fmt(StringCvt.FIX(SOME ~1)); false) handle Size => true); check((Real.fmt(StringCvt.GEN(SOME ~1)); false) handle Size => true); polyml-5.7.1/Tests/Succeed/Test082.ML0000644000175000017500000000134613204034553016063 0ustar daviddavid(* Variant of p060. This tests the error when the connection is refused. *) val x = INetSock.TCP.socket(): Socket.passive INetSock.stream_sock and y = INetSock.TCP.socket(): Socket.active INetSock.stream_sock; val SOME me = NetHostDB.getByName "localhost"; val localhost = NetHostDB.addr me; Socket.bind(x, INetSock.toAddr(localhost, 0)); (* Socket.listen(x, 5); *) ( let val (_, port) = INetSock.fromAddr(Socket.Ctl.getSockName x) in Socket.connect(y, INetSock.toAddr(localhost, port)); (* Shouldn't get here. *) raise Fail "wrong" end ) handle OS.SysErr(_, err) => if err = OS.syserror "ECONNREFUSED" orelse err = OS.syserror "WSAECONNREFUSED" then () else raise Fail "bad error"; (* We could also get ECONNABORTED here perhaps. *) polyml-5.7.1/Tests/Succeed/Test033.ML0000644000175000017500000000163213204034553016055 0ustar daviddavid(* Tests for bugs in real conversion. Also tests that Real.~ flips the sign bit. It's not clear from the Basis Library book whether this is correct for zero but for consistency we assume it. Reported by Matthew Fluet fluet AT tti-c AT org *) fun verify true = () | verify false = raise Fail "wrong"; verify(Real.toLargeInt IEEEReal.TO_NEAREST (valOf(Real.fromString "1234567890.12345678901234")) = 1234567890); verify(Real.toLargeInt IEEEReal.TO_NEAREST(valOf(Real.fromString "1234567890.123456789012345")) = 1234567890); verify(Real.toLargeInt IEEEReal.TO_NEAREST(valOf(Real.fromString "1234567890.1234567890123456")) = 1234567890); verify(Real.toLargeInt IEEEReal.TO_NEAREST(valOf(Real.fromString "1234567890.1234567890123456789")) = 1234567890); verify(not(Real.signBit 0.0)); verify(Real.signBit (Real.~ 0.0)); verify(Real.signBit (Real.~ 1.0)); verify(Real.signBit (valOf (Real.fromString "~0.0"))); polyml-5.7.1/Tests/Succeed/Test151.ML0000644000175000017500000000030613204034553016053 0ustar daviddavid(* Bug in arbitrary precision emulation reported by Anthony Fox. *) fun f x = IntInf.<< (1, Word.fromInt x) val a = f 64 val b = f 32; if a - b = (f 64 - f 32) then () else raise Fail "failed"; polyml-5.7.1/Tests/Succeed/Test048.ML0000644000175000017500000000044113204034553016060 0ustar daviddavid(* The Definition does not actually put any restriction on what can follow a datatype replication so the following would appear to be legal. *) structure S2: sig datatype t = datatype char end = struct datatype t = datatype char end; type 'a s = 'a * 'a; datatype t = datatype s; polyml-5.7.1/Tests/Succeed/Test093.ML0000644000175000017500000000012613204034553016060 0ustar daviddavid(* Structure test *) structure S: sig datatype t = X end = struct datatype t = X end; polyml-5.7.1/Tests/Succeed/Test022.ML0000644000175000017500000000123413204034553016051 0ustar daviddavid(* Reported by Makarius: the second case raised the Bind exception. I've added some more tests that also gave the wrong result because of the same bug. *) datatype ('a, 'b) pair = Pair of 'a * 'b; Pair (1, 1) = Pair (1, 1); Pair (1, Pair (1, 1)) = Pair (1, Pair (1, 1)); val x = ref 1; Pair (1, x) = Pair (1, x); Pair (x, (1,1)) = Pair (x, (1,1)); Pair ((1,1), x) = Pair ((1,1), x); datatype ('a, 'b, 'c) Triple = X of 'c | Y of 'b | Z of 'a; (X 10000000000: (int ref, int ref, LargeInt.int) Triple) = X 10000000000; (X 10000000000: (int, int ref, LargeInt.int) Triple) = X 10000000000; (X 10000000000: (int ref, int, LargeInt.int) Triple) = X 10000000000; polyml-5.7.1/Tests/Succeed/Test041.ML0000644000175000017500000000044713204034553016057 0ustar daviddavid(* Test of code-generation of equality across signature matching. *) structure S:> sig eqtype 'a t val mkT: 'a * int -> 'a t end = struct datatype 'a X = X of 'a type 'a t = 'a X * int X fun mkT(x, n) = (X x, X n) end; if S.mkT(3, 4) = S.mkT(3, 4) then () else raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test089.ML0000644000175000017500000000115013204034553016063 0ustar daviddavid(* Test to construct polytype from type abbreviation by opaque matching. *) structure S:> sig eqtype 'a t val mkT: 'a -> 'a t end = struct type 'a t = 'a fun mkT x = x end; PolyML.makestring(S.mkT 1); (* Check the pretty-printer. *) if S.mkT 1 = S.mkT 1 then () else raise Fail "error"; if S.mkT 1 = S.mkT 2 then raise Fail "error" else (); (* And from datatype. *) structure S:> sig eqtype 'a t val mkT: 'a -> 'a t end = struct datatype 'a t = X of 'a val mkT = X end; PolyML.makestring(S.mkT 1); if S.mkT 1 = S.mkT 1 then () else raise Fail "error"; if S.mkT 1 = S.mkT 2 then raise Fail "error" else (); polyml-5.7.1/Tests/Succeed/Test044.ML0000644000175000017500000000032713204034553016057 0ustar daviddavidsignature A = sig type t end; signature S = sig type a type b type c include A where type t = int * c sharing type a = b end; structure S: S = struct type a = int type b = int type c = int type t = int * int end; polyml-5.7.1/Tests/Succeed/Test085.ML0000644000175000017500000000051213204034553016060 0ustar daviddavid(* Minimal version of example program that produced Subscript exception in SVN 913. *) structure A = struct structure B = struct datatype t = X end end (* No semicolon here. *) open A; (* Semicolon here. *) B.X; (* Raised Subscript exception. *) PolyML.prettyRepresentation (B.X, 2); (* Raised InternalError. *) polyml-5.7.1/Tests/Succeed/Test059.ML0000644000175000017500000000047713204034553016073 0ustar daviddavid(* This caused an exception in the code generator. *) local val x = ref 0 in fun f i = (if not false then x:= i else(); "hello") end; val x = ref 0; fun f i = ( if (if not false then (x:= i; !x = i) else true) then 1 else 0; "hello"); fun f i = ( if not false andalso (x:= i; !x = i) then 1 else 0; "hello"); polyml-5.7.1/Tests/Succeed/Test063.ML0000644000175000017500000000014113204034553016052 0ustar daviddavid(* An example from the Definition. This is now legal. *) datatype t = f; val rec f = fn x => x; polyml-5.7.1/Tests/Succeed/Test130.ML0000644000175000017500000000062113204034553016050 0ustar daviddavid(* Fix to bug in code-generation for structure matching. If the only difference between the original and final structure was a "coercion" from a constructor to a value the code to do this was lost. *) structure S1 = struct datatype s = A of int end; structure S2 : sig type s val A: int -> s end = S1; S2.A 1; signature S = sig val e: exn end; structure s : S = struct exception e end; s.e; polyml-5.7.1/Tests/Succeed/Test140.ML0000644000175000017500000000050713204034553016054 0ustar daviddavid(* Now that argument functions may have multiple arguments rather than a single argument that may be a tuple it is necessary to load the function before overwriting it in a tail-recursive call. *) PolyML.Compiler.maxInlineSize := 0; fun g (a, b, c, d, e, f) = f (a, e, d, b, c, a); g (1, 1, 1, 1, 1, fn _ => ()); polyml-5.7.1/Tests/Succeed/Test019.ML0000644000175000017500000000015513204034553016060 0ustar daviddavid(* This failed an assertion on the PPC architecture. *) fun f x = Word.andb(x, 0wx108000); PolyML.fullGC (); polyml-5.7.1/Tests/Succeed/Test016.ML0000644000175000017500000000066413204034553016062 0ustar daviddavid(* Bug in the equality compiler. This caused a seg fault. *) datatype ('a, 'v) trie = Trie of 'v option * ('a * ('a, 'v) trie) list; val x = Trie (NONE, [(0, Trie (SOME ~2, []))]); val y = Trie (NONE, [(~2, Trie (NONE, [(0, Trie (SOME 1, [])), (0, Trie (NONE, []))])), (0, Trie (SOME ~2, [(0, Trie (SOME 2, [])), (1, Trie (SOME ~1, []))]))]); x = y; polyml-5.7.1/Tests/Succeed/Test061.ML0000644000175000017500000000023113204034553016050 0ustar daviddavid(* This is ok. *) fun x () = let val id: 'a->'a = fn z => z in id id end; (* This is ok. *) fun x () = let val id: 'a->'a = fn z => z in id end: 'a->'a; polyml-5.7.1/Tests/Succeed/Test072.ML0000644000175000017500000000103313204034553016053 0ustar daviddavid(* Newly created files should not have execute permission. Note: this only applies to Unix. The definition of OS.FileSys.access says that it should accept but ignore A_EXEC if it doesn't make sense. *) if OS.Path.concat("a", "b") = "a\\b" then () (* Windows *) else let val fileName = OS.FileSys.tmpName(); open TextIO OS.FileSys val f = openOut fileName in output(f, "hello\n"); closeOut f; let val isExecute = access(fileName, [A_EXEC]) in remove fileName; if isExecute then raise Fail "FAIL" else () end end; polyml-5.7.1/Tests/Succeed/Test074.ML0000644000175000017500000000106713204034553016064 0ustar daviddavid(* this structure compiles OK *) structure HashTable = struct type hashedstring = string fun hash s = s fun unhash s = s end; (* This structure reports Exception- InternalError: incrUseCount: no entry 2 raised while compiling *) structure Prettyprinter = struct datatype printmode = compressed | uncompressed | verbose fun print mode = let fun printid s = (case mode of compressed => HashTable.hash s | uncompressed => HashTable.unhash s | verbose => HashTable.unhash s) in printid end end; polyml-5.7.1/Tests/Succeed/Test057.ML0000644000175000017500000000125213204034553016061 0ustar daviddavid(* Check that line buffering and no buffering work correctly. *) val temp = OS.FileSys.tmpName(); val (writer, _) = TextIO.StreamIO.getWriter(TextIO.getOutstream(TextIO.openOut temp)); val sLine = TextIO.StreamIO.mkOutstream(writer, IO.LINE_BUF); val sNone = TextIO.StreamIO.mkOutstream(writer, IO.NO_BUF); (TextIO.StreamIO.output(sLine, "First line \n line "); TextIO.StreamIO.output(sNone, "Second")); TextIO.StreamIO.flushOut sLine; let open TextPrimIO val WR { close, ... } = writer in close () end; val sTxt = TextIO.openIn temp; val s = TextIO.inputAll sTxt; TextIO.closeIn sTxt; if s = "First line \nSecond line " then () else raise Fail "failed"; OS.FileSys.remove temp; polyml-5.7.1/Tests/Succeed/Test052.ML0000644000175000017500000000130413204034553016052 0ustar daviddavid(* This produced a signature match error in the structure declaration even though it had already matched in the functor result. *) signature LONGID = sig type node type t val x: t end; functor Longid (): LONGID = struct datatype node = T type t = node list val x = nil end; signature AST_ATOMS = sig structure Longcon: LONGID structure Longvid: sig type t val longc: Longcon.t end end ; functor AstAtoms (): AST_ATOMS = struct structure Longcon = Longid () structure Longvid = struct structure L = Longid () open L val longc = Longcon.x end end; structure AstCore = AstAtoms () : AST_ATOMS; polyml-5.7.1/Tests/Succeed/Test150.ML0000644000175000017500000000014613204034553016054 0ustar daviddavid(* Bug in code generator reported by Lars Noschinski *) fun f xs = (xs : ''a) val _ = (fn x => f x); polyml-5.7.1/Tests/Succeed/Test109.ML0000644000175000017500000000402113204034553016054 0ustar daviddavid(* This produced an InternalError exception. That check has been removed but the test has been included because it may be useful to revisit this. *) type polarity = int datatype rep = Atom of int * int | Struct of rep list | Vect of int * rep | Func of rep * rep ; exception REP of string * rep list; exception LIMIT of string * string; PolyML.Compiler.maxInlineSize := 1; fun card_of_rep (_: rep): int = (PolyML.print "card_of_rep"; raise Match); fun is_lone_rep (_: rep): bool = (PolyML.print "is_lone_rep"; raise Match); fun kk_case_switch _ = (PolyML.print "kk_case_switch"; raise Match); fun all_singletons_for_rep _ = (PolyML.print "all_singletons_for_rep"; raise Match); PolyML.Compiler.maxInlineSize := 60; structure S = struct exception E fun vect_from_rel_expr a b c d e = ( PolyML.print a; PolyML.print b; PolyML.print c; PolyML.print d; PolyML.print e; PolyML.print a; PolyML.print b; PolyML.print c; raise E ); fun lone_rep_fallback kk new_R old_R r = if old_R = new_R then r else let val card = card_of_rep old_R in if is_lone_rep old_R andalso is_lone_rep new_R andalso card = card_of_rep new_R then if card >= 4096 then raise LIMIT ("lone_rep_fallback", "too high cardinality (" ^ Int.toString card ^ ")") else kk_case_switch kk old_R new_R r (all_singletons_for_rep old_R) (all_singletons_for_rep new_R) else raise REP ("lone_rep_fallback", [old_R, new_R]) end and atom_from_rel_expr kk (x as (k, j0)) old_R r = case old_R of Func (R1, R2) => let val dom_card = card_of_rep R1 val R2' = case R2 of Atom _ => R2 | _ => Atom (card_of_rep R2, 0) in atom_from_rel_expr kk x (Vect (dom_card, R2')) (vect_from_rel_expr kk dom_card R2' old_R r) end | _ => lone_rep_fallback kk (Atom x) old_R r fun yy a kk x c d y = (if a then atom_from_rel_expr kk (c, d) else fn _ => raise Match) y end ; polyml-5.7.1/Tests/Succeed/Test088.ML0000644000175000017500000000210113204034553016057 0ustar daviddavid(* Some more cases of polymorphism conversion. *) (* This changes the polymorphism at some level. *) structure S: sig type 'a t val x: 'a t val f : 'a t -> int val g: int -> 'a t end = struct type 'a t = int val x: 'a t = 1 fun f (n: int): 'a t = n (* int -> 'a t*) fun g (x :'a t): int = x (* 'a t -> int *) end; if S.x = 1 then () else raise Fail "Error"; if S.f S.x = 1 then () else raise Fail "Error"; (* Slightly different version that completely hides the relationship with int. *) structure S:> sig type 'a t val x: 'a t val f : 'a t -> int val g: int -> 'a t end = struct type 'a t = int val x: 'a t = 1 fun f (n: int): 'a t = n (* int -> 'a t*) fun g (x :'a t): int = x (* 'a t -> int *) end; val x = S.x; if S.f x = 1 then () else raise Fail "Error"; if S.f S.x = 1 then () else raise Fail "Error"; (* The signature adds polymorphism to a monomorphic function. *) structure Dispatch: sig type 'a union val Char : word -> 'a union; end = struct type 'a union = word fun Char (x:word) : 'a union = x; end; polyml-5.7.1/Tests/Succeed/Test002.ML0000644000175000017500000000303213204034553016045 0ustar daviddavid(* Various tests. Some of these are included elsewhere in this directory. *) signature S = sig type s type t sharing type s = t end; signature S = sig type s datatype t = C sharing type s = t end; signature S = sig structure T: sig datatype t = X of int end datatype s = Y of bool; sharing type s = T.t end; (* The following is legal in ML97 but not in ML90. *) functor F( structure S: sig eqtype s datatype t = C of int -> int sharing type s = t end) = struct val x:S.s = S.C(fn i => i+1) val y = x = x end; (* But of course this must fail. *) (*structure Z = F(structure S = struct datatype t = C of int -> int type s = t end);*) (* The following is legal because sharing between an eqtype and a type makes the type into an eqatype. *) functor F(structure S: sig eqtype s type t val x: t sharing type s = t end) = struct val q = S.x = S.x end; (* This was previously rejected but is actually legal. *) signature S = sig datatype t = C end where type t = bool; (* I don't know whether this is legal or not. *) signature S = sig eqtype t end where type t = int; (* This is legal. *) signature S = sig type t type u sharing type t = u end where type u = int; (* This is legal. A and C share so their types share. *) functor F( structure A: sig type t val x: t end structure B: sig end structure C: sig type t end sharing A = B = C ) = struct val q = A.x : C.t end; polyml-5.7.1/Tests/Succeed/Test119.ML0000644000175000017500000000041013204034553016053 0ustar daviddavid(* Word.div and Word.mod on X86 left the contents of the dividend register untagged resulting in a crash if a GC happened before the register was reloaded. *) PolyML.Compiler.maxInlineSize := 1; fun f (a: Word.word) b = b mod a; (f 0w1 0w6; PolyML.fullGC()); polyml-5.7.1/Tests/Succeed/Test104.ML0000644000175000017500000000144613204034553016057 0ustar daviddavid(* This caused an InternalError exception in the compiler. *) PolyML.Compiler.maxInlineSize := 80; type typ = string; type indexname = int; datatype term = Const of string * typ | Abs of string * typ * term | $ of term * term; infix 9 $; exception TERM of string * term list; fun dest_equals (Const ("==", _) $ t $ u) = (t, u) | dest_equals t = raise TERM ("dest_equals", [t]); fun term_depth (Abs (_, _, t)) = 1 + term_depth t | term_depth _ = 0; datatype thm = Thm of int * {maxidx: int, prop: term} fun rep_thm (Thm (_, args)) = args; val lhs_of_thm = #1 o dest_equals o #prop o rep_thm; fun make keyfun = let fun keypair x = (x, keyfun x) in map keypair end; fun sort_lhs_depths defs = let val keylist = make (term_depth o lhs_of_thm) defs in map #2 keylist end; polyml-5.7.1/Tests/Succeed/Test084.ML0000644000175000017500000000042013204034553016055 0ustar daviddavid(* Examples from the Revised Definition p90 These examples are valid in ML97 but not in ML90. *) val f = (fn x => x) (fn x => x) structure A = struct end val y = f 7 ; structure A: sig val f: int->int end = struct val f = (fn x => x) (fn x => x) end ; polyml-5.7.1/Tests/Succeed/Test137.ML0000644000175000017500000000033313204034553016057 0ustar daviddavid(* Verify that the correct exception is raised for negative values. *) (TextIO.canInput(TextIO.stdIn, ~1); raise Fail "wrong") handle Size => (); (TextIO.inputN(TextIO.stdIn, ~1); raise Fail "wrong") handle Size => (); polyml-5.7.1/Tests/Succeed/Test143.ML0000644000175000017500000000025513204034553016057 0ustar daviddavid(* Bug with determining when to detuple the result. *) PolyML.Compiler.maxInlineSize := 0; let fun f x = ! (ref (fn y => (y, x))) val r = #2 (f 1 2) in r end; polyml-5.7.1/Tests/Succeed/Test015.ML0000644000175000017500000000117313204034553016055 0ustar daviddavid(* Bug report from Sebastian Skalberg. There was a problem with the code added in version 4.1.2 to handle flexible labelled records. *) structure VHI = struct fun update_typs {typs,thy} typs' = {typs=typs',thy=thy } fun translate_type args = #thy args fun parse_usertype pos = translate_type fun parse_internaltype args = #thy args fun parse_expr inner pos args = translate_type args | parse_expr inner pos args = parse_internaltype args fun parse_formal args = update_typs args (parse_usertype "var" args) fun parse_index args = update_typs args (parse_expr false "index" args) end; polyml-5.7.1/Tests/Succeed/Test171.ML0000644000175000017500000000117213204034553016057 0ustar daviddavid(* Real.fromString is affected by the rounding mode at run-time but the conversion of literals should not be. *) val () = IEEEReal.setRoundingMode IEEEReal.TO_POSINF handle Fail _ => (); val lPos = 10e100; val () = IEEEReal.setRoundingMode IEEEReal.TO_NEGINF handle Fail _ => (); val lNeg = 10e100; val () = IEEEReal.setRoundingMode IEEEReal.TO_ZERO handle Fail _ => (); val lZero = 10e100; val () = IEEEReal.setRoundingMode IEEEReal.TO_NEAREST handle Fail _ => (); val lNearest = 10e100; if Real.!= (lPos, lNeg) orelse Real.!= (lPos, lZero) orelse Real.!= (lPos, lNearest) then raise Fail "Rounding affects literals" else (); polyml-5.7.1/Tests/Succeed/Test030.ML0000644000175000017500000000242113204034553016047 0ustar daviddavid(* Bug in CODETREE.ML which resulted in Subscript exception in the compiler. Reported by Lucas Dixon ldixon at inf dot ed dot ac dot uk *) PolyML.Compiler.maxInlineSize := 80; structure Output = struct fun output_width x = (x, 99) end; structure Markup = struct type property = string * string type T = string * property list val none = ("", []); end structure Pretty = struct datatype T = Block of Markup.T * T list * int * int | String of string * int | Break of bool * int; fun length (Block (_, _, _, len)) = len | length (String (_, len)) = len | length (Break (_, wd)) = wd; val str = String o Output.output_width; fun markup_block m (indent, es) = let fun sum [] k = k | sum (e :: es) k = sum es (length e + k); in Block (m, es, indent, sum es 0) end; val blk = markup_block Markup.none; fun block prts = blk (2, prts); end; fun foo l s x i = [] @ map (fn (i,s) => Pretty.block [(case x of NONE => Pretty.str "a" | SOME openi => (if (openi = i) then Pretty.str "b" else Pretty.str "c")), Pretty.str "d"]) l; polyml-5.7.1/Tests/Succeed/Test047.ML0000644000175000017500000000121613204034553016060 0ustar daviddavid(* Datatypes with a single constructor are normally represented as the value, i.e. the contructor is an identity function. We optimise the case of constructors of tuples so that B values are triples containing the tag, a and b. We MUSTN'T do that for ref. *) datatype 'a t = T of 'a type q = {a: string, b: string}; datatype s = A | B of q t | C of int; let val x = B(T{a="O", b="K"}) val B(T{a,b}) = x in a^b end; datatype s = A | B of q ref | C of int; let val x = B(ref{a="WRO", b="NG"}) val B r = x val _ = r := {a="O", b="K"} val B(ref{a,b}) = x in if a^b = "OK" then () else raise Fail "Wrong" end; polyml-5.7.1/Tests/Succeed/Test107.ML0000644000175000017500000000464213204034553016063 0ustar daviddavid(* Bug found. Final references for the inner loop were being processed in the wrong order. *) PolyML.Compiler.maxInlineSize := 40; type location = { startPosition: int, endPosition: int }; datatype ptProperties = PTprint of string | PTparent of unit -> exportTree | PTpreviousSibling of unit -> exportTree | PTnextSibling of unit -> exportTree | PTfirstChild of unit -> exportTree withtype exportTree = location * ptProperties list datatype direction = Up | Down | Left | Right; fun find([], _) = NONE (* No change *) | find(PTparent p :: _, Up) = SOME p | find(PTpreviousSibling p :: _, Left) = SOME p | find(PTnextSibling p :: _, Right) = SOME p | find(PTfirstChild p :: _, Down) = SOME p | find(_ :: tl, dir) = find (tl, dir); fun navigateTo(searchLocation as {startOffset, endOffset}, lastParsetree as ({ startPosition, endPosition, ... }, tree)) = if startOffset = startPosition andalso endOffset = endPosition then (* We're there already. *) lastParsetree else if startOffset >= startPosition andalso endOffset <= endPosition then (* It's this node or a child. *) let val child = find(tree, Down) in (* See if the element we want is actually a child. *) case child of SOME child => let (* See which child it is. *) fun findChild(location as {startPosition, endPosition, ...}, child) = if startOffset >= startPosition andalso endOffset <= endPosition then SOME (location, child) else case find(child, Right) of NONE => NONE | SOME next => findChild(next()) in case findChild(child()) of NONE => lastParsetree (* In this *) | SOME child => navigateTo(searchLocation, child) end | NONE => lastParsetree (* No children. *) end else raise Fail "bad"; fun pos(s, e) = {startPosition=s, endPosition=e}: location; val n1 = (pos(1, 2), [PTprint("a")]); val n2 = (pos(3, 4), [PTprint("b"), PTnextSibling(fn () => n1)]); val n3 = (pos(1, 4), [PTprint("c"), PTfirstChild(fn()=>n2)]); case navigateTo({startOffset=1, endOffset=1}, n3) of ({endPosition = 2, startPosition = 1}, [PTprint "a"]) => () | _ => raise Fail "bad"; polyml-5.7.1/Tests/Succeed/Test108.ML0000644000175000017500000000042513204034553016057 0ustar daviddavid(* Code generator bug. *) fun prod_ord a_ord b_ord ((x, y), (x', y')) = (case a_ord (x, x') of EQUAL => b_ord (y, y') | ord => ord); fun fast_term_ord (_: int*int) = EQUAL; val term2_ord = prod_ord fast_term_ord fast_term_ord; val ord = prod_ord fast_term_ord term2_ord; polyml-5.7.1/Tests/Succeed/Test101.ML0000644000175000017500000000474713204034553016063 0ustar daviddavid(* Tests for various cases of arbitrary-precision arithmetic that require emulation. The tests depend on assumptions about how the compiler will generate code and may need changing in the future. *) fun check x = x orelse raise Fail "Test failed"; (* This is used to avoid constant folding in the compiler. *) fun I x = let val x = ref x in ! x end; (* The maximum short precision number. *) val maxShort = Word.toLargeInt(Word.<<(0w1, Word.fromInt (Word.wordSize-1))-0w1); val minShort = ~maxShort-1; val aLong = maxShort+1; (* A long precision number. *) check(PolyML.objSize maxShort = 0 andalso PolyML.objSize minShort = 0 andalso PolyML.objSize aLong <> 0); val zero: LargeInt.int = 0; val one: LargeInt.int = 1; fun f x = I x > zero; check(f maxShort); check(f aLong); fun f x = I x < aLong; check(f 0); check(not(f aLong)); fun f (x: LargeInt.int) = I x <= x; check(f aLong); fun f x y = let val (_, a: LargeInt.int) = I (zero, x) in a < y end; check(f 0 1); check(f 0 aLong); fun f x = I x + one; check(f maxShort = maxShort+1); (* Overflow check *) check(f aLong = aLong+1); fun f x = I x + aLong; check(f maxShort = maxShort+aLong); check(f aLong = aLong+aLong); fun f (x: LargeInt.int) = I x + x; check(f maxShort = maxShort*2); check(f aLong = aLong*2); fun f x y = let val (_, a: LargeInt.int) = I (0, x) in a + y end; check(f maxShort 1 = maxShort+1); check(f aLong 1 = aLong+1); fun f x = I x + one; check(f maxShort = maxShort+1); (* Overflow check *) check(f aLong = aLong+1); fun f x = I x + aLong; check(f maxShort = maxShort+aLong); check(f aLong = aLong+aLong); fun f (x: LargeInt.int) = I x + x; check(f maxShort = maxShort*2); check(f aLong = aLong*2); fun f x y = let val (_, a: LargeInt.int) = I (0, x) in a + y end; check(f maxShort 1 = maxShort+1); check(f aLong 1 = aLong+1); fun f x = I x - one; check(f minShort = minShort-1); (* Overflow check *) check(f aLong = aLong-1); fun f x = I x - aLong; check(f minShort = minShort-aLong); check(f 0 = ~aLong); fun f (x: LargeInt.int) y = I x - y; check(f minShort 1 = minShort-1); check(f 0 aLong = ~aLong); fun f x y = let val (_, a: LargeInt.int) = I (0, y) in I x - a end; check(f minShort 1 = minShort-1); check(f aLong 1 = aLong-1); fun f x = Real.fromLargeInt(I x); check(Real.toLargeInt IEEEReal.TO_NEAREST(f 3) = 3); check(Real.toLargeInt IEEEReal.TO_NEAREST (f aLong) = aLong); fun f (x: LargeInt.int) = I x * 2; check(f aLong = aLong+aLong); check(f minShort = minShort+minShort); check(f maxShort = maxShort+maxShort); polyml-5.7.1/Tests/Succeed/Test051.ML0000644000175000017500000000051013204034553016047 0ustar daviddavid(* This caused a Subscript error when printing. *) functor Longid (S: sig end): sig datatype node = T of int type obj val r: obj end = struct datatype node = T of int type obj = node list val r = nil end ; functor AstAtoms () = struct datatype T = A datatype S = B structure Longcon = Longid () end ; polyml-5.7.1/Tests/Succeed/Test043.ML0000644000175000017500000000067413204034553016063 0ustar daviddavid(* Bugs fixed in OS.Path.joinDirFile. *) fun checkPathFns s = let val result = OS.Path.joinDirFile(OS.Path.splitDirFile s) in (* On Windows / is accepted as a path separator but replaced by \\. *) if result = s orelse result = String.map(fn #"/" => #"\\" | c => c) s then () else raise Fail "FAIL" end; checkPathFns "single"; checkPathFns "a/b"; checkPathFns "a\\b"; checkPathFns "\\ab"; checkPathFns "C:\\ab"; checkPathFns "/ab"; polyml-5.7.1/Tests/Succeed/Test156.ML0000644000175000017500000000112613204034553016061 0ustar daviddavid(* Functions with free variables were turned into stack closures but these could not be called tail-recursively. This code sets the maximum stack to detect the problem early on but with large enough examples this can exhaust the memory. *) PolyML.Compiler.maxInlineSize := 1; fun f x = let fun g y = if y = 0 then 0 else f (x-1) in g x end; Thread.Thread.setAttributes[Thread.Thread.MaximumMLStack (SOME 3000)]; f 10000000 handle exn => (Thread.Thread.setAttributes[Thread.Thread.MaximumMLStack NONE]; raise exn); Thread.Thread.setAttributes[Thread.Thread.MaximumMLStack NONE]; polyml-5.7.1/Tests/Succeed/Test159.ML0000644000175000017500000000022113204034553016057 0ustar daviddavid(* This caused an InternalError exception. *) PolyML.Compiler.maxInlineSize := 1; fun f (x: real, y: real) = (y, x) handle Bind => (y+1.0, x); polyml-5.7.1/Tests/Succeed/Test006.ML0000644000175000017500000000670013204034553016056 0ustar daviddavid(* Equality for vectors has to be dealt with specially now that we generate special equality functions for datatypes. *) fun check f = if f() then () else raise Fail "Wrong"; check (fn () => Vector.fromList [1,2,3] = Vector.fromList [1,2,3]); check (fn () => Vector.fromList [1,3,3] <> Vector.fromList [1,2,3]); check (fn () => Vector.fromList [true, false] = Vector.fromList [true, false]); check (fn () => Vector.fromList [true, false] <> Vector.fromList [true, true]); check (fn () => Vector.fromList [#"a", #"b"] = Vector.fromList [#"a", #"b"]); check (fn () => Vector.fromList [#"a", #"b"] <> Vector.fromList [#"b", #"b"]); check (fn () => Vector.fromList [0w1,0w2,0w3] = Vector.fromList [0w1,0w2,0w3]); check (fn () => Vector.fromList [0w1,0w3,0w3] <> Vector.fromList [0w1,0w2,0w3]); check (fn () => Vector.fromList [[1], [2,3], [4]] = Vector.fromList [[1], [2,3], [4]]); check (fn () => Vector.fromList [[1], [3,3], [4]] <> Vector.fromList [[1], [2,3], [4]]); check (fn () => IntVector.fromList [1,2,3] = IntVector.fromList [1,2,3]); check (fn () => IntVector.fromList [1,3,3] <> IntVector.fromList [1,2,3]); check (fn () => BoolVector.fromList [true, false] = BoolVector.fromList [true, false]); check (fn () => BoolVector.fromList [true, false] <> BoolVector.fromList [true, true]); check (fn () => CharVector.fromList [#"a", #"b"] = CharVector.fromList [#"a", #"b"]); check (fn () => CharVector.fromList [#"a", #"b"] <> CharVector.fromList [#"b", #"b"]); check (fn () => Word8Vector.fromList [0w1,0w2,0w3] = Word8Vector.fromList [0w1,0w2,0w3]); check (fn () => Word8Vector.fromList [0w1,0w3,0w3] <> Word8Vector.fromList [0w1,0w2,0w3]); (* Arrays *) let val v = Array.fromList [1,2,3] in check(fn () => v = v) end; check (fn () => Array.fromList [1,2,3] <> Array.fromList [1,2,3]); check (fn () => Array.fromList [1,3,3] <> Array.fromList [1,2,3]); let val v = Array.fromList [true, false] in check(fn () => v = v) end; check (fn () => Array.fromList [true, false] <> Array.fromList [true, false]); check (fn () => Array.fromList [true, false] <> Array.fromList [true, true]); let val v = Array.fromList [#"a", #"b"] in check(fn () => v = v) end; check (fn () => Array.fromList [#"a", #"b"] <> Array.fromList [#"a", #"b"]); check (fn () => Array.fromList [#"a", #"b"] <> Array.fromList [#"b", #"b"]); let val v = Array.fromList [0w1,0w2,0w3] in check(fn () => v = v) end; check (fn () => Array.fromList [0w1,0w2,0w3] <> Array.fromList [0w1,0w2,0w3]); check (fn () => Array.fromList [0w1,0w3,0w3] <> Array.fromList [0w1,0w2,0w3]); let val v = IntArray.fromList [1,2,3] in check(fn () => v = v) end; check (fn () => IntArray.fromList [1,2,3] <> IntArray.fromList [1,2,3]); check (fn () => IntArray.fromList [1,3,3] <> IntArray.fromList [1,2,3]); let val v = BoolArray.fromList [true, false] in check(fn () => v = v) end; check (fn () => BoolArray.fromList [true, false] <> BoolArray.fromList [true, false]); check (fn () => BoolArray.fromList [true, false] <> BoolArray.fromList [true, true]); let val v = CharArray.fromList [#"a", #"b"] in check(fn () => v = v) end; check (fn () => CharArray.fromList [#"a", #"b"] <> CharArray.fromList [#"a", #"b"]); check (fn () => CharArray.fromList [#"a", #"b"] <> CharArray.fromList [#"b", #"b"]); let val v = Word8Array.fromList [0w1,0w2,0w3] in check(fn () => v = v) end; check (fn () => Word8Array.fromList [0w1,0w2,0w3] <> Word8Array.fromList [0w1,0w2,0w3]); check (fn () => Word8Array.fromList [0w1,0w3,0w3] <> Word8Array.fromList [0w1,0w2,0w3]); polyml-5.7.1/Tests/Succeed/Test112.ML0000644000175000017500000000032513204034553016051 0ustar daviddavid(* Printing records as tuples. *) if PolyML.makestring {1=true} = "{1 = true}" then () else raise Fail "makestring"; if PolyML.makestring {1=true, 2=false} = "(true, false)" then () else raise Fail "makestring"; polyml-5.7.1/Tests/Succeed/Test129.ML0000644000175000017500000000142513204034553016063 0ustar daviddavid(* Some bugs in Word32 on 64-bit and a bug in arithmetic right shift with a constant shift value. *) fun check a b = if a = b then () else raise Fail "Bad"; check(Word32.toIntX 0wx0) 0; check(Word32.toIntX 0wx1) 1; check(Word32.toLargeIntX 0wx7FFFFFFF) 2147483647; check(Word32.toLargeIntX 0wx80000000) ~2147483648; check(Word32.toLargeIntX 0wx80000001) ~2147483647; check(Word32.toIntX 0wxFFFFFFFE) ~2; check(Word32.toIntX 0wxFFFFFFFF) ~1; check(Word32.toLargeX 0wx0) 0wx0; check(Word32.toLargeX 0wx1) 0wx1; check(Word32.toLargeX 0wx7FFFFFFF) 0wx7FFFFFFF; check (let val r = ref 0w4 in Word.~>>(!r, 0w1) end) 0w2; (* Checks that fromLargeInt returns the same result as fromInt *) check(Word32.fromLargeInt ~1) 0wxFFFFFFFF; check(Word32.fromLargeInt (IntInf.pow (2, 32))) 0wx0; polyml-5.7.1/Tests/Succeed/Test097.ML0000644000175000017500000000560213204034553016070 0ustar daviddavid(* Tests for functions added to the Array and ArraySlice structures. *) fun check f = if f() then () else raise Fail "Wrong"; val a = Array.tabulate (10, fn i => i); check(fn () => Array.vector a = Vector.fromList(List.tabulate(10, fn i => i))); check(fn () => Array.findi (fn (_, 3) => true | _ => false) a = SOME(3, 3)); check(fn () => not(isSome(Array.findi (fn (_, 11) => true | _ => false) a))); check(fn () => Array.find (fn 3 => true | _ => false) a = SOME 3); check(fn () => not(isSome(Array.find (fn 11 => true | _ => false) a))); check(fn () => Array.exists (fn 3 => true | _ => false) a); check(fn () => not(Array.exists (fn 11 => true | _ => false) a)); check(fn () => not(Array.all (fn 3 => true | _ => false) a)); check(fn () => Array.all (fn x => x < 10) a); check(fn () => not(Array.all (fn x => x < 9) a)); check(fn () => Array.collate Int.compare (a, a) = EQUAL); val b = Array.array(10, 0); check(fn () => Array.vector b = Vector.fromList(List.tabulate(10, fn _ => 0))); Array.copy{src = a, dst=b, di=0}; check(fn () => Array.vector b = Vector.fromList(List.tabulate(10, fn i => i))); check(fn () => (Array.copy{src = a, dst=b, di=1}; false) handle Subscript => true); check(fn () => Array.collate Int.compare (a, b) = EQUAL); Array.update(a, 9, 10); check(fn () => Array.collate Int.compare (a, b) = GREATER); Array.update(b, 2, 11); check(fn () => Array.collate Int.compare (a, b) = LESS); check(fn () => Array.collate Int.compare (Array.array(0, 0), Array.array(0, 0)) = EQUAL); check(fn () => Array.collate Int.compare (Array.array(0, 0), a) = LESS); check(fn () => Array.collate Int.compare (a, Array.array(0, 0)) = GREATER); check(fn () => Array.collate Int.compare (Array.array(1, 0), a) = LESS); check(fn () => Array.collate Int.compare (Array.array(1, 1), a) = GREATER); val sa = ArraySlice.slice(a, 2, NONE); val sb = ArraySlice.slice(a, 6, SOME 3); check(fn () => ArraySlice.vector sa = Vector.fromList [2, 3, 4, 5, 6, 7, 8, 10]); check(fn () => ArraySlice.vector sb = Vector.fromList[6, 7, 8]); check(fn () => (ArraySlice.slice(a, 6, SOME 5); false) handle Subscript => true); check(fn () => ArraySlice.findi(fn (_, 3) => true | _ => false) sa = SOME(1, 3)); check(fn () => not(isSome(ArraySlice.findi(fn (_, 3) => true | _ => false) sb))); check(fn () => not(ArraySlice.all (fn x => x < 9) sa)); check(fn () => ArraySlice.all (fn x => x < 9) sb); ArraySlice.copy{src=sb, dst=a, di=1}; check(fn () => Array.vector a = Vector.fromList [0, 6, 7, 8, 4, 5, 6, 7, 8, 10]); (* Check for overlapping areas. *) ArraySlice.copy{src=sb, dst=a, di=7}; check(fn () => Array.vector a = Vector.fromList [0, 6, 7, 8, 4, 5, 6, 6, 7, 8]); check(fn () => ArraySlice.vector sb = Vector.fromList[6, 6, 7]); val sc = ArraySlice.slice(a, 4, SOME 3); check(fn () => ArraySlice.vector sc = Vector.fromList[4, 5, 6]); ArraySlice.copy{src=sc, dst=a, di=3}; check(fn () => Array.vector a = Vector.fromList [0, 6, 7, 4, 5, 6, 6, 6, 7, 8]); polyml-5.7.1/Tests/Succeed/Test010.ML0000644000175000017500000000024713204034553016051 0ustar daviddavid(* The code to prevent infinite loops when printing circular structures accidentally caught this case of a unary tuple. *) datatype t = X of {a: int} | Y; X{a=99}; polyml-5.7.1/Tests/Succeed/Test106.ML0000644000175000017500000000025613204034553016057 0ustar daviddavid(* This produced an internal error exception because the equality attribute had been removed in the third pass. *) abstype t = T of int with fun eq a (b:t) = a = b end; polyml-5.7.1/Tests/Succeed/Test099.ML0000644000175000017500000000570313204034553016074 0ustar daviddavid(* Tests for functions added to the CharArray and CharArraySlice structures. *) fun check f = if f() then () else raise Fail "Wrong"; val a = CharArray.tabulate (10, fn i => Char.chr(i+ Char.ord #"0")); check(fn () => CharArray.vector a = "0123456789"); check(fn () => CharArray.findi (fn (_, #"3") => true | _ => false) a = SOME(3, #"3")); check(fn () => not(isSome(CharArray.findi (fn (_, #"A") => true | _ => false) a))); check(fn () => CharArray.find (fn #"3" => true | _ => false) a = SOME #"3"); check(fn () => not(isSome(CharArray.find (fn #"A" => true | _ => false) a))); check(fn () => CharArray.exists (fn #"3" => true | _ => false) a); check(fn () => not(CharArray.exists (fn #"A" => true | _ => false) a)); check(fn () => not(CharArray.all (fn #"3" => true | _ => false) a)); check(fn () => CharArray.all (fn x => x < #"A") a); check(fn () => not(CharArray.all (fn x => x < #"9") a)); check(fn () => CharArray.collate Char.compare (a, a) = EQUAL); val b = CharArray.array(10, #"0"); check(fn () => CharArray.vector b = CharVector.fromList(List.tabulate(10, fn _ => #"0"))); CharArray.copy{src = a, dst=b, di=0}; check(fn () => CharArray.vector b = "0123456789"); check(fn () => (CharArray.copy{src = a, dst=b, di=1}; false) handle Subscript => true); check(fn () => CharArray.collate Char.compare (a, b) = EQUAL); CharArray.update(a, 9, #"A"); check(fn () => CharArray.collate Char.compare (a, b) = GREATER); CharArray.update(b, 2, #"B"); check(fn () => CharArray.collate Char.compare (a, b) = LESS); check(fn () => CharArray.collate Char.compare (CharArray.array(0, #"0"), CharArray.array(0, #"0")) = EQUAL); check(fn () => CharArray.collate Char.compare (CharArray.array(0, #"0"), a) = LESS); check(fn () => CharArray.collate Char.compare (a, CharArray.array(0, #"0")) = GREATER); check(fn () => CharArray.collate Char.compare (CharArray.array(1, #"0"), a) = LESS); check(fn () => CharArray.collate Char.compare (CharArray.array(1, #"1"), a) = GREATER); val sa = CharArraySlice.slice(a, 2, NONE); val sb = CharArraySlice.slice(a, 6, SOME 3); check(fn () => CharArraySlice.vector sa = "2345678A"); check(fn () => CharArraySlice.vector sb = "678"); check(fn () => (CharArraySlice.slice(a, 6, SOME 5); false) handle Subscript => true); check(fn () => CharArraySlice.findi(fn (_, #"3") => true | _ => false) sa = SOME(1, #"3")); check(fn () => not(isSome(CharArraySlice.findi(fn (_, #"3") => true | _ => false) sb))); check(fn () => not(CharArraySlice.all (fn x => x < #"9") sa)); check(fn () => CharArraySlice.all (fn x => x < #"9") sb); CharArraySlice.copy{src=sb, dst=a, di=1}; check(fn () => CharArray.vector a = "067845678A"); (* Check for overlapping areas. *) CharArraySlice.copy{src=sb, dst=a, di=7}; check(fn () => CharArray.vector a = "0678456678"); check(fn () => CharArraySlice.vector sb = "667"); val sc = CharArraySlice.slice(a, 4, SOME 3); check(fn () => CharArraySlice.vector sc = "456"); CharArraySlice.copy{src=sc, dst=a, di=3}; check(fn () => CharArray.vector a = "0674566678"); polyml-5.7.1/Tests/Succeed/Test118.ML0000644000175000017500000000226713204034553016066 0ustar daviddavid(* This produced a "jump too large" exception on X86. *) (* The problem occurred because extending a pending branch requires five bytes for the 32-bit jump instruction and if the previous pending branches were less than five bytes apart extending the shortest branch might push the other branches outside the 8-bit range. *) datatype t = A1 | B1 | C1 | D1 | E1 | F1 | G1 | H1 | I1 | J1 | K1 | L1 | M1 | A2 | B2 | C2 | D2 | E2 | F2 | G2 | H2 | I2 | J2 | K2 | L2 | M2 | A3 | B3 | C3 | D3; fun f a b c = let val x = case a of A1 => c | B1 => b | C1 => c | D1 => b | E1 => c | F1 => b | G1 => c | H1 => b | I1 => c | J1 => b | K1 => c | L1 => b | M1 => c | A2 => c | B2 => b | C2 => c | D2 => b | E2 => c | F2 => b | G2 => c | H2 => b | I2 => (print "hello"; print "there"; c) | J2 => b | K2 => c | L2 => b | M2 => c | A3 => c | B3 => b | C3 => c | _ => c in x+c+b end; polyml-5.7.1/Tests/Succeed/Test161.ML0000644000175000017500000000033513204034553016056 0ustar daviddavid(* Checks for bug in NetHostDB. *) fun checkIt s = if NetHostDB.toString (valOf(NetHostDB.fromString s)) = s then () else raise Fail "checkIt"; checkIt "127.0.0.1"; checkIt "10.0.0.34"; checkIt "10.1.1.34"; polyml-5.7.1/Tests/Succeed/Test091.ML0000644000175000017500000000104413204034553016056 0ustar daviddavid(* Problem handling polymorphism. *) fun q () = let fun f (x, y) = (PolyML.print(x ()); PolyML.print(y ()); ()) and g x = f (x, fn () => raise Fail "bad") in f (fn () => true, fn () => false); f (fn () => 1, fn () => 1) end; q(); fun q () = let fun f (x, y) = (PolyML.print(x ()); PolyML.print(y ()); ()) and g x = f (x, fn () => raise Fail "bad") in f (fn () => true, fn () => false); f (fn () => 1, fn () => 1); g (fn _ => 4) end; (q(); raise Fail "wrong") handle Fail "bad" => () | _ => raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test170.ML0000644000175000017500000000037413204034553016061 0ustar daviddavid(* These were left over from the old single-character special case. *) val arr = Word8Array.array(1, 0w0); Word8ArraySlice.vector(Word8ArraySlice.slice(arr, 0, SOME 1)); val a = CharArray.array(1, #" "); CharArraySlice.vector (CharArraySlice.full a); polyml-5.7.1/Tests/Succeed/Test035.ML0000644000175000017500000000031313204034553016052 0ustar daviddavid(* Bug in sparc assembly code. *) if IntInf.andb(1234567890123456789, 1) = 1 then () else raise Fail "FAIL"; if IntInf.xorb(1234567890123456789, 1) = 1234567890123456788 then () else raise Fail "FAIL"; polyml-5.7.1/Tests/Succeed/Test162.ML0000644000175000017500000000064413204034553016062 0ustar daviddavid(* Negative values require special treatment in Foreign.sml *) val c = Foreign.breakConversion Foreign.cInt16; fun checkValue v = let val m = Foreign.Memory.malloc (#size (#ctype c)); val _ = #store c (m, v); val result = #load c m before Foreign.Memory.free m in if result <> v then raise Fail "Incorrect" else () end; checkValue ~1; checkValue 1; checkValue 0; checkValue 32767; checkValue ~32768; polyml-5.7.1/Tests/Succeed/Test070.ML0000644000175000017500000000074613204034553016063 0ustar daviddavid(* Examples of type definitions in which unwrapping the type construction gets back to a type variable. This used to work for a single level but has now been fixed for arbitrary levels. *) type 'a t = 'a; let val f : 'a -> 'a t t t t = fn x => x in f 1 end; type ('a,'b) x = 'a; let val f : 'a -> (('a, bool) x, int) x = fn x => x in f 1 end; (* Discovered another example. *) let val f : 'a -> (('a, bool) x, int) x = fn x => x fun g () = if true then f 1 else f 2 in g end; polyml-5.7.1/Tests/Succeed/Test135.ML0000644000175000017500000000046013204034553016056 0ustar daviddavid(* Bug in interaction between the debugger and pattern matching - this crashed. *) PolyML.Compiler.debug := true; fun processConstrs(_, 0) = () | processConstrs([], _) = () | processConstrs({a, b} :: next, toDo) = ( processConstrs(next, toDo-1) ); processConstrs([{a=1, b=2}], 1); polyml-5.7.1/Tests/Succeed/Test040.ML0000644000175000017500000000046613204034553016057 0ustar daviddavid(* This failed because the "level" was not being correctly calculated when using an overloaded function as a value rather than calling it. *) local datatype a = A | B fun s (l:(a*a) list) = List.map (op =) l in val x = s [(A, A), (B,B)] end; if x = [true, true] then () else raise Fail "wrong"; polyml-5.7.1/Tests/Succeed/Test038.ML0000644000175000017500000000062313204034553016061 0ustar daviddavid(* Check that successive right assocative operators work correctly. *) (* Include the default precedences just so we're clear. *) infix 7 * / div mod infix 6 + - ^ infixr 6 -- infixr 5 :: @ ++; val op ++ = op :: ; val op -- = op -; (* This failed in 5.2 and earlier but is valid. *) val q = 1 :: 1 + 2 ++ 3*4 :: nil; (* This failed in SVN prior to SVN 639. *) val q = 1 :: 1 + 2 :: 3*4 :: nil; polyml-5.7.1/Tests/Succeed/Test077.ML0000644000175000017500000000015713204034553016066 0ustar daviddavid(* Code-generator bug. Found by Rob Arthan 28/11/01. *) fun f _ = let val (a, b) = raise Fail "bad" in a end; polyml-5.7.1/Tests/Succeed/Test064.ML0000644000175000017500000000022513204034553016056 0ustar daviddavid(* This is valid, but previously failed. *) fun f (i, d, q, r) = if r then i+d=q else i+d=q; if f(1, 2, 3, true) then "OK" else raise Fail "WRONG"; polyml-5.7.1/Tests/Succeed/Test008.ML0000644000175000017500000000031613204034553016055 0ustar daviddavid(* This caused a Subscript error in the back end of the compiler at one stage. *) PolyML.Compiler.maxInlineSize := 1; fun f y = let fun a x = b (x+y) and b x = a x in a y end handle exn => raise exn; polyml-5.7.1/Tests/Succeed/Test014.ML0000644000175000017500000000122513204034553016052 0ustar daviddavid(* Bug in handling of relational operators in LargeWord. *) if LargeWord.< (0w1, 0w2) then () else raise Fail "WRONG"; if LargeWord.< (0w1, 0wx80000002) then () else raise Fail "WRONG"; if LargeWord.> (0w1, 0w2) then raise Fail "WRONG" else (); if LargeWord.> (0w1, 0wx80000002) then raise Fail "WRONG" else (); if LargeWord.<= (0w1, 0w2) then () else raise Fail "WRONG"; if LargeWord.<= (0w1, 0wx80000002) then () else raise Fail "WRONG"; if LargeWord.>= (0w1, 0w2) then raise Fail "WRONG" else (); if LargeWord.>= (0w1, 0wx80000002) then raise Fail "WRONG" else (); case LargeWord.compare(0w1, 0wx80000000) of LESS => () | _ => raise Fail "WRONG"; polyml-5.7.1/Tests/Succeed/Test146.ML0000644000175000017500000000125313204034553016061 0ustar daviddavid(* Bug in transformation of arguments which are curried functions. It is not safe to transform "f" in the argument to "bar". Although it is curried the application to the first argument "()" is not immediately followed by the application to the second. *) local val r = ref 0 in (* Foo should be called exactly once *) fun foo () = (r:= !r+1; fn i => i) fun checkOnce () = if !r = 1 then () else raise Fail "bad" end; fun bar f = let val r = f() in (r 1; r 2; List.map r [1, 2, 3]) end; bar foo; checkOnce(); exception A and B and C; fun rA () = raise A and rB () = raise B; fun h (f, g) = let val a = f() in g(); a () end; h(rA, rB) handle A => (); polyml-5.7.1/Tests/Succeed/Test105.ML0000644000175000017500000000130113204034553016046 0ustar daviddavid(* Another Isabelle crash: This caused a segfault. *) datatype term = Const of string * int | $ of term * term; PolyML.Compiler.maxInlineSize := 1; fun aeconv(t, u) = case (t, u) of (Const(s, _), Const(y, _)) => s = y | _ => false; PolyML.Compiler.maxInlineSize := 80; infix 9 $; exception TERM of string * term list; fun dest_equals (Const ("==", _) $ t $ u) = (t, u) | dest_equals t = raise TERM ("dest_equals", [t]); datatype thm = Thm of int * {tpairs: (term * term) list, prop: term}; fun is_trivial(Thm (_, {prop, ...})) = aeconv(dest_equals prop); fun doFilter raw_eqs = List.filter is_trivial raw_eqs; doFilter[Thm(1, {tpairs=[], prop=Const("==", 0) $ Const("a", 0) $ Const("a", 0)})]; polyml-5.7.1/Tests/Succeed/Test168.ML0000644000175000017500000000046513204034553016071 0ustar daviddavid(* This is a check that return addresses are correctly identified as references to code cells. *) fun f () = (OS.Process.sleep(Time.fromSeconds 3); print "Done\n"); val _ = Thread.Thread.fork(f, []); fun f () = print "A new function"; PolyML.fullGC(); fun f () = print "A new function"; PolyML.fullGC(); polyml-5.7.1/Tests/Succeed/Test071.ML0000644000175000017500000000066213204034553016061 0ustar daviddavid(* Code-generation bug. *) let fun f x = if x = 1 then "a" else if x = 2 then "b" else if x = 3 then "c" (* Note duplication of the next case. *) else if x = 6 then "d" else if x = 6 then "f" else (* Missing case here *) if x = 8 then "h" else if x = 9 then "i" else if x = 10 then "j" else if x = 11 then "k" else "l"; in if f 8 = "h" andalso f 6 = "d" andalso f 7 = "l" then "OK" else raise Fail "FAIL" end; polyml-5.7.1/Tests/Succeed/Test011.ML0000644000175000017500000000020513204034553016044 0ustar daviddavid(* This caused a segmentation fault. *) datatype t = S | B of (int * t) list; B [(1, S)] = B [(1, S)]; polyml-5.7.1/Tests/Succeed/Test125.ML0000644000175000017500000000022313204034553016052 0ustar daviddavid(* The Standard ML syntax allows "op" in an exception binding. Poly/ML wasn't allowing it. *) infix & %; exception op &; exception op % = op &; polyml-5.7.1/Tests/Succeed/Test136.ML0000644000175000017500000000076113204034553016063 0ustar daviddavid(* This caused the intermediate code optimiser to blow up. *) fun I x = x infixr & datatype ('a, 'b) pair = op & of 'a * 'b infixr 1 &&&> fun (f &&&> g) h (a & b) = f (fn a' => g (fn b' => h (a' & b')) b) a ; ( I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I &&&> I ) ; polyml-5.7.1/Tests/Succeed/Test079.ML0000644000175000017500000000020113204034553016056 0ustar daviddavid(* This crashed in the Power PC version. *) (* Changed because Process has been removed. *) Thread.Thread.fork(fn () => (), []); polyml-5.7.1/Tests/Succeed/Test021.ML0000644000175000017500000000014713204034553016052 0ustar daviddavid(* Conversion of negative hex numbers had an error. *) if ~0x4 = ~ 0x4 then () else raise Fail "FAIL"; polyml-5.7.1/Tests/Succeed/Test069.ML0000644000175000017500000000044513204034553016067 0ustar daviddavid(* This failed with the latest changes. We need "open" to process the constructor list of a datatype. *) functor F(S: sig type s datatype t = A | B of s end) = struct open S datatype p = datatype t end; structure S = F(type s = int*int datatype t = A | B of int*int); S.A; polyml-5.7.1/Tests/Succeed/Test075.ML0000644000175000017500000000120013204034553016052 0ustar daviddavid(* Some parsing problems. All of these were rejected by 4.1.1. *) (* This is valid but caused problems. I think it's a relic of SML90. *) type t = int signature S = sig end; (* This is valid. Empty specifications are legal. *) signature S = sig ; ; ; end; (* The syntax here is odd. It requires the word "type" to be repeated. That's to distinguish between signature T = sig ... end where type s = int and type t = bool and signature T = sig ... end where type s = int and S = S' In the latter case we're defining a new signature. *) signature T = sig type s type t end where type s = int and type t = bool and U = S; polyml-5.7.1/Tests/Succeed/Test039.ML0000644000175000017500000000046313204034553016064 0ustar daviddavid(* This violates an assumption that all structures produced by a core-language expression are global. structure "T" is still local when "open S" is processed. *) structure S = struct structure T = struct val x = 1 end end (* N.B. No semicolon in here. *) open S; T.x; polyml-5.7.1/Tests/Succeed/Test164.ML0000644000175000017500000000111213204034553016053 0ustar daviddavid(* This example gets the compiler into a loop repeatedly trying to re-optimise the function. We need to add a time-out thread to interrupt it. *) val m = Thread.Mutex.mutex(); local open Thread.Thread Thread.Mutex fun thrd () = ( OS.Process.sleep(Time.fromSeconds 5); lock m; broadcastInterrupt(); unlock m ) in val t = fork(thrd, []) end; (* This is the actual code. *) datatype chain = Link of (int * (int -> chain)); fun ints(n) = Link(n+1, ints); Thread.Mutex.lock m; Thread.Thread.kill t handle Thread.Thread _ => (); polyml-5.7.1/Tests/Succeed/Test098.ML0000644000175000017500000000652513204034553016076 0ustar daviddavid(* Tests for Word8Array and Word8ArraySlice. *) fun check f = if f() then () else raise Fail "Wrong"; val a = Word8Array.tabulate (10, fn i => Word8.fromInt i); check(fn () => Word8Array.vector a = Word8Vector.fromList(List.tabulate(10, Word8.fromInt))); check(fn () => Word8Array.findi (fn (_, 0w3) => true | _ => false) a = SOME(3, 0w3)); check(fn () => not(isSome(Word8Array.findi (fn (_, 0w11) => true | _ => false) a))); check(fn () => Word8Array.find (fn 0w3 => true | _ => false) a = SOME 0w3); check(fn () => not(isSome(Word8Array.find (fn 0w11 => true | _ => false) a))); check(fn () => Word8Array.exists (fn 0w3 => true | _ => false) a); check(fn () => not(Word8Array.exists (fn 0w11 => true | _ => false) a)); check(fn () => not(Word8Array.all (fn 0w3 => true | _ => false) a)); check(fn () => Word8Array.all (fn x => x < 0w10) a); check(fn () => not(Word8Array.all (fn x => x < 0w9) a)); check(fn () => Word8Array.collate Word8.compare (a, a) = EQUAL); val b = Word8Array.array(10, 0w0); check(fn () => Word8Array.vector b = Word8Vector.fromList(List.tabulate(10, fn _ => 0w0))); Word8Array.copy{src = a, dst=b, di=0}; check(fn () => Word8Array.vector b = Word8Vector.fromList(List.tabulate(10, Word8.fromInt))); check(fn () => (Word8Array.copy{src = a, dst=b, di=1}; false) handle Subscript => true); check(fn () => Word8Array.collate Word8.compare (a, b) = EQUAL); Word8Array.update(a, 9, 0w10); check(fn () => Word8Array.collate Word8.compare (a, b) = GREATER); Word8Array.update(b, 2, 0w11); check(fn () => Word8Array.collate Word8.compare (a, b) = LESS); check(fn () => Word8Array.collate Word8.compare (Word8Array.array(0, 0w0), Word8Array.array(0, 0w0)) = EQUAL); check(fn () => Word8Array.collate Word8.compare (Word8Array.array(0, 0w0), a) = LESS); check(fn () => Word8Array.collate Word8.compare (a, Word8Array.array(0, 0w0)) = GREATER); check(fn () => Word8Array.collate Word8.compare (Word8Array.array(1, 0w0), a) = LESS); check(fn () => Word8Array.collate Word8.compare (Word8Array.array(1, 0w1), a) = GREATER); val sa = Word8ArraySlice.slice(a, 2, NONE); val sb = Word8ArraySlice.slice(a, 6, SOME 3); check(fn () => Word8ArraySlice.vector sa = Word8Vector.fromList [0w2, 0w3, 0w4, 0w5, 0w6, 0w7, 0w8, 0w10]); check(fn () => Word8ArraySlice.vector sb = Word8Vector.fromList[0w6, 0w7, 0w8]); check(fn () => (Word8ArraySlice.slice(a, 6, SOME 5); false) handle Subscript => true); check(fn () => Word8ArraySlice.findi(fn (_, 0w3) => true | _ => false) sa = SOME(1, 0w3)); check(fn () => not(isSome(Word8ArraySlice.findi(fn (_, 0w3) => true | _ => false) sb))); check(fn () => not(Word8ArraySlice.all (fn x => x < 0w9) sa)); check(fn () => Word8ArraySlice.all (fn x => x < 0w9) sb); Word8ArraySlice.copy{src=sb, dst=a, di=1}; check(fn () => Word8Array.vector a = Word8Vector.fromList [0w0, 0w6, 0w7, 0w8, 0w4, 0w5, 0w6, 0w7, 0w8, 0w10]); (* Check for overlapping areas. *) Word8ArraySlice.copy{src=sb, dst=a, di=7}; check(fn () => Word8Array.vector a = Word8Vector.fromList [0w0, 0w6, 0w7, 0w8, 0w4, 0w5, 0w6, 0w6, 0w7, 0w8]); check(fn () => Word8ArraySlice.vector sb = Word8Vector.fromList[0w6, 0w6, 0w7]); val sc = Word8ArraySlice.slice(a, 4, SOME 3); check(fn () => Word8ArraySlice.vector sc = Word8Vector.fromList[0w4, 0w5, 0w6]); Word8ArraySlice.copy{src=sc, dst=a, di=3}; check(fn () => Word8Array.vector a = Word8Vector.fromList [0w0, 0w6, 0w7, 0w4, 0w5, 0w6, 0w6, 0w6, 0w7, 0w8]); polyml-5.7.1/Tests/Succeed/Test023.ML0000644000175000017500000000101613204034553016050 0ustar daviddavid(* To check that we've handled equality correctly on datatypes whose representations aren't known when we compile the functor. *) functor F(S: sig eqtype t datatype s = X | Y of t end) = struct fun eq(x: S.s, y) = if x = y then () else raise Fail "FAIL" end; datatype s = X | Y of int; structure R = F(struct datatype s = datatype s type t = int end); R.eq(X, X); R.eq(Y 9, Y 9); datatype s = X | Y of int * int; structure R = F(struct datatype s = datatype s type t = int * int end); R.eq(X, X); R.eq(Y(4,5), Y(4, 5)); polyml-5.7.1/Tests/Succeed/Test003.ML0000644000175000017500000000361113204034553016051 0ustar daviddavid(* A few random tests for BoolVector and BoolArray. *) fun verify true = () | verify false = raise Fail "wrong"; val a = BoolVector.tabulate(20, fn i => i mod 2 = 1); (* While working on converting these tests I actually discovered a new bug. *) verify(a = BoolVector.fromList[false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true]); val b = BoolArray.tabulate(20, fn i => i mod 2 = 1); verify(BoolArray.vector b = BoolArray.vector(BoolArray.fromList[false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true])); val b = BoolArray.tabulate(20, fn i => i mod 4 = 1); verify(BoolArray.vector b = BoolArray.vector (BoolArray.fromList[false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false])); verify(not(BoolVector.sub(a, 0))); verify(BoolVector.sub(a, 9)); verify((BoolVector.sub(a, 20); false) handle Subscript => true); verify((BoolVector.sub(a, ~1); false) handle Subscript => true); verify(BoolVector.map (fn i => not i) a = BoolVector.fromList[true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false]); verify(BoolVector.foldl (fn(a, b) => a orelse b) false a); verify(BoolVector.foldr (fn(a, b) => a orelse b) false a); val d = BoolVector.fromList [true, true, false, true, true]; val c = BoolVector.foldl (fn(a, b) => a :: b) [] a; verify(BoolArray.vector(BoolArray.fromList c) = BoolVector.fromList[true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false]); verify(BoolVector.concat[d, d] = BoolVector.fromList[true, true, false, true, true, true, true, false, true, true]); polyml-5.7.1/Tests/Succeed/Test046.ML0000644000175000017500000000106013204034553016054 0ustar daviddavid(* This caused a Bind exception. *) signature HOLPP = sig type ppstream datatype frag = QUOTE of string val lineWidth : int -> int val pp_to_string : int -> (int -> 'a -> unit) -> 'a -> string end; signature Portable = sig include HOLPP end; structure Portable :> Portable = struct type ppstream = int datatype frag = QUOTE of string fun lineWidth _ = raise Fail "bad" fun pp_to_string _ = raise Fail "bad" fun pp_to_string linewidth ppfn ob = "" end (* Portable *) ; datatype frag = datatype Portable.frag; val q2 = QUOTE "" : Portable.frag; polyml-5.7.1/Tests/Succeed/Test113.ML0000644000175000017500000000025713204034553016056 0ustar daviddavid(* Bug in reported in SVN 1182 by Phil Clayton *) datatype ''a t = A of ''a | B of int; B 1; (* Further check for nullary constructors. *) datatype ''a s = C of ''a | D; D; polyml-5.7.1/Tests/Succeed/Test036.ML0000644000175000017500000000043513204034553016060 0ustar daviddavid(* Reported by Phil Clayton. *) fun verify true = () | verify false = raise Fail "wrong"; val test = IntInf.pow; verify(test (~1, ~1000000) = 1); verify(test (~1, ~8) = 1); verify(test (~1, ~6) = 1); verify(test (~1, ~4) = 1); verify(test (~1, ~2) = 1); verify(test (~1, ~1) = ~1); polyml-5.7.1/Tests/Succeed/Test005.ML0000644000175000017500000000027213204034553016053 0ustar daviddavid(* Bug in Word.word functions with top bit set. *) let val i = ~ 0w4; val j = Word.toLargeInt i in if Word.toLargeInt(i mod 0w272) = j mod 272 then () else raise Fail "WRONG" end; polyml-5.7.1/Tests/Succeed/Test083.ML0000644000175000017500000000305713204034553016065 0ustar daviddavid(* Test of polling and non-blocking sockets. *) (* Updated to the new non-blocking calls. *) fun verify true = () | verify false = raise Fail "wrong"; val x = INetSock.TCP.socket(): Socket.passive INetSock.stream_sock and y = INetSock.TCP.socket(): Socket.active INetSock.stream_sock; val SOME me = NetHostDB.getByName "localhost"; val localhost = NetHostDB.addr me; Socket.bind(x, INetSock.toAddr(localhost, 0)); Socket.listen(x, 5); Socket.acceptNB x; val xPoll = valOf(OS.IO.pollDesc(Socket.ioDesc x)) and yPoll = valOf(OS.IO.pollDesc(Socket.ioDesc y)); fun printPoll(p, l) = let open OS.IO in (if isIn p then ["In"] else []) @ (if isOut p then ["Out"] else []) @ (if isPri p then ["Pri"] else []) @ l end; verify(null(List.foldl printPoll [] (OS.IO.poll([OS.IO.pollIn xPoll, OS.IO.pollOut xPoll], SOME(Time.fromSeconds 1))))); let val p1 = List.foldl printPoll [] (OS.IO.poll([OS.IO.pollIn yPoll, OS.IO.pollOut yPoll], SOME(Time.fromSeconds 1))) in (* This gives [] in Windows but ["Out"] on Linux*) verify(p1 = [] orelse p1 = ["Out"]) end; let val (_, port) = INetSock.fromAddr(Socket.Ctl.getSockName x) in Socket.connectNB(y, INetSock.toAddr(localhost, port)) end; verify(List.foldl printPoll [] (OS.IO.poll([OS.IO.pollIn xPoll, OS.IO.pollOut xPoll], SOME(Time.fromSeconds 1))) = ["In"]); verify(List.foldl printPoll [] (OS.IO.poll([OS.IO.pollIn yPoll, OS.IO.pollOut yPoll], SOME(Time.fromSeconds 1))) = ["Out"]); val SOME(sock1, _) = Socket.acceptNB x; val NONE = Socket.acceptNB x; Socket.close sock1; Socket.close x; Socket.close y; polyml-5.7.1/Tests/Succeed/Test103.ML0000644000175000017500000000153313204034553016053 0ustar daviddavid(* Code-generator bug in X86 development version. The stack adjustment is wrong. *) datatype cterm = Cterm of { thy_ref: int, t: int, T: int, maxidx: int, sorts: int}; PolyML.Compiler.maxInlineSize := 1; fun read_prop s = Cterm {maxidx = ~1, thy_ref = valOf(Int.fromString s), t = 0, T = 0, sorts = 0}; PolyML.Compiler.maxInlineSize := 40; val transitive_thm = ( let val qqq = ref 0 val xy = read_prop "123"; val yz = read_prop "124"; val xythm = let val _ = let val ct as Cterm {thy_ref, t, T, maxidx, sorts} = xy in if maxidx = ~1 then ct else Cterm {maxidx = t, thy_ref = thy_ref, t = t, T = T, sorts = sorts} end; in 0 end; in case xy of Cterm{sorts=0, ...} => () | _ => raise Fail "bad" end ) (*handle Match => raise Match*); polyml-5.7.1/Tests/Succeed/Test034.ML0000644000175000017500000000170113204034553016053 0ustar daviddavid(* Tests for Substring.isPrefix, Substring.isSuffix with single character strings. Reported by Richard Harrison rdharrison2 at hotmail dot co dot uk *) fun verify true = () | verify false = raise Fail "wrong"; verify(Substring.isPrefix "a" (Substring.full "abc")); verify(Substring.isPrefix "a" (Substring.full "a")); verify(not(Substring.isPrefix "a" (Substring.full "bc"))); verify(not(Substring.isPrefix "a" (Substring.full "b"))); verify(not(Substring.isSuffix "a" (Substring.full "abc"))); verify(Substring.isSuffix "a" (Substring.full "a")); verify(Substring.isSuffix "a" (Substring.full "bca")); verify(not(Substring.isSuffix "a" (Substring.full "b"))); verify(Substring.isSubstring "b" (Substring.full "abc")); verify(Substring.isSubstring "a" (Substring.full "a")); verify(not(Substring.isSubstring "a" (Substring.full "bc"))); verify(not(Substring.isSubstring "a" (Substring.full "b"))); verify(Substring.isSubstring "" (Substring.full "a")); polyml-5.7.1/Tests/Succeed/Test013.ML0000644000175000017500000000036013204034553016050 0ustar daviddavid(* Bug found in the basis library. *) CharVector.foldri(fn (_, a, b) => a :: b) [] "abc"; CharVector.foldri(fn (i, a, b) => (i, a) :: b) [] "abc"; val yy = IntVector.fromList [1, 2, 3]; IntVector.foldri(fn (i, a, b) => (i, a) :: b) [] yy; polyml-5.7.1/Tests/Succeed/Test024.ML0000644000175000017500000000053213204034553016053 0ustar daviddavid(* For some reason the tests for the sign for ZERO values in Real.fromDecimal was reversed. *) if Real.toString(valOf (Real.fromDecimal (valOf (IEEEReal.fromString "0.0")))) = "0.0" then () else raise Fail "WRONG!!\n"; if Real.toString(valOf (Real.fromDecimal (valOf (IEEEReal.fromString "~0.0")))) = "~0.0" then () else raise Fail "WRONG!!\n"; polyml-5.7.1/Tests/Succeed/Test133.ML0000644000175000017500000006253013204034553016062 0ustar daviddavid(* This example resulted in a code blow-up. The match compiler generates thousands of cases. Now fixed by using a naive pattern-by-pattern match. *) structure Nbe = struct datatype Univ = Const of string * Univ list | Free of string * Univ list | DFree of string | BVar of int * Univ list | Abs of (int * (Univ list -> Univ)) * Univ list; end; fun c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vp, v_vo, v_vn, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vp, v_vo, v_vn, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vp, v_vo, v_vn, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vp, v_vo, v_vn, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vm, v_vl, v_vk, v_vj, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_vi, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vg, v_vf, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vl, v_vk, v_vj, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vi, v_vh, v_vg, v_vf, (Nbe.Const ("RedBlackTree.b.const", []))])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_vc, v_vb, (Nbe.Const ("RedBlackTree.e.const", [])), v_v])), v_t, v_s, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.r.const", []))])), v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.r.const", []))])), v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", []))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vh, v_vg, v_vf, v_ve, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, v_b, (Nbe.Const ("RedBlackTree.r.const", []))])), v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, (Nbe.Const ("RedBlackTree.e.const", [])), (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_vd, v_vc, v_vb, v_va, (Nbe.Const ("RedBlackTree.b.const", []))])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, (Nbe.Const ("RedBlackTree.tr.const", [v_c, v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.r.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.e.const", [])), v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.r.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.r.const", []))]))] = (Nbe.Const ("RedBlackTree.tr.const", [(Nbe.Const ("RedBlackTree.tr.const", [v_d, v_z, v_y, v_c, (Nbe.Const ("RedBlackTree.b.const", []))])), v_t, v_s, (Nbe.Const ("RedBlackTree.tr.const", [v_b, v_x, v_w, v_a, (Nbe.Const ("RedBlackTree.b.const", []))])), (Nbe.Const ("RedBlackTree.r.const", []))])) | c_RedBlackTree_balance_const [v_a, v_b, v_c, v_d] = (Nbe.Const ("RedBlackTree.balance.const", [v_a, v_b, v_c, v_d])); polyml-5.7.1/Tests/Succeed/Test001.ML0000644000175000017500000000047313204034553016052 0ustar daviddavid(* Code-generator bug. We have to set the maximum inline function size to something small to prevent "return" from being expanded in-line. *) PolyML.Compiler.maxInlineSize := 2; fun f g x = let val old = !x fun return y = (x := old; y) in return (g x handle exn => (return (); raise exn)) end; polyml-5.7.1/Tests/Succeed/Test078.ML0000644000175000017500000000077313204034553016073 0ustar daviddavid(* Test simple TCP connection. There was a problem with "connect" on Windows. *) val x = INetSock.TCP.socket(): Socket.passive INetSock.stream_sock and y = INetSock.TCP.socket(): Socket.active INetSock.stream_sock; val SOME me = NetHostDB.getByName "localhost"; val localhost = NetHostDB.addr me; Socket.bind(x, INetSock.toAddr(localhost, 0)); Socket.listen(x, 5); let val (_, port) = INetSock.fromAddr(Socket.Ctl.getSockName x) in Socket.connect(y, INetSock.toAddr(localhost, port)) end; Socket.accept x; polyml-5.7.1/Tests/Succeed/Test142.ML0000644000175000017500000000025313204034553016054 0ustar daviddavid(* Polymorphic declaration. Ensure that Bind is raised. *) (let val SOME (f: 'a -> 'a) = NONE in f (f 1); raise Fail "No exception" end) handle Bind => () ; polyml-5.7.1/Tests/Succeed/Test173.ML0000644000175000017500000000050113204034553016054 0ustar daviddavid(* Problem with LargeWord. Derived from Isabelle generated code. *) PolyML.Compiler.maxInlineSize := 1; fun set_bit x n b = let val mask = LargeWord.<< (0wx1, Word.fromLargeInt (IntInf.toLarge n)) in if b then LargeWord.orb (x, mask) else LargeWord.andb (x, LargeWord.notb mask) end; set_bit 0w4 3 true; polyml-5.7.1/Tests/Succeed/Test087.ML0000644000175000017500000000062313204034553016065 0ustar daviddavid(* Tests for handling of complex polymorphic declarations. *) let fun f x = x val c = (f, f) val (a, b) = c in a(b 1) end; let val c = (nil, nil) fun f(a::_, b::_) = a+b | f _ = 0 in f c end; let val a = { x=NONE, y=NONE } fun f {x=SOME (x: int), y=SOME(y: int) } = x + y | f _ = 0 in f a end; let val SOME f = SOME (fn x => x) in f (f 1) end; polyml-5.7.1/Tests/Succeed/Test166.ML0000644000175000017500000000235613204034553016070 0ustar daviddavid(* Test for condition variables. *) open Thread; open Thread Mutex ConditionVar; val avar = conditionVar() and amutex = mutex(); val bvar = conditionVar(); val cvar = conditionVar(); val dvar = conditionVar(); val stop = ref false val avalue = ref 0 fun incValue threadNo () = let val () = lock amutex fun loop() = ( wait(avar, amutex); if ! stop then () else ( avalue := !avalue + 1; signal bvar; loop() ) ) in signal dvar; loop(); signal cvar; unlock amutex end; fun addCount 0 = () | addCount n = ( signal avar; wait(bvar, amutex); addCount (n-1) ); lock amutex; fork(incValue 1, [EnableBroadcastInterrupt true, InterruptState InterruptSynch]); fork(incValue 2, [EnableBroadcastInterrupt true, InterruptState InterruptSynch]); fork(incValue 3, [EnableBroadcastInterrupt true, InterruptState InterruptSynch]); wait(dvar, amutex); addCount 10000; OS.Process.sleep(Time.fromSeconds 2); stop := true; signal avar; wait(cvar, amutex); signal avar; wait(cvar, amutex); signal avar; wait(cvar, amutex); if !avalue = 10000 then () else raise Fail "Incorrect"; polyml-5.7.1/Tests/Succeed/Test045.ML0000644000175000017500000000252513204034553016062 0ustar daviddavid(* Three different bugs to do with where-type constraints. *) signature EXPORTTREESIG = sig (* Export tree. *) type ptProperties include sig type exportTree end where type exportTree = int * ptProperties list end; functor INITIALISE_ ( structure VALUEOPS : sig type location end where type location = int; structure EXPORTTREE: EXPORTTREESIG structure MAKE : sig type exportTree end where type exportTree = EXPORTTREE.exportTree; ) = struct end; (* I think I've identified these. *) functor INITIALISE_ ( structure EXPORTTREE: sig type exportTree end where type exportTree = int structure MAKE : sig type exportTree end where type exportTree = EXPORTTREE.exportTree; ) = struct end; (* I think I've identified this one. *) signature EXPORTTREESIG = sig type ptProperties include sig type location end where type location = { file: string, startLine: int, startPosition: int, endLine: int, endPosition: int } include sig type exportTree end where type exportTree = location * ptProperties list include sig type navigation end where type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} end; functor F(structure E: EXPORTTREESIG) = struct end; polyml-5.7.1/Tests/Succeed/Test110.ML0000644000175000017500000000163313204034553016052 0ustar daviddavid(* Check integer conversion. *) fun verifyBase radix n = valOf(StringCvt.scanString (LargeInt.scan radix)(LargeInt.fmt radix n)) = n fun verify n = if verifyBase StringCvt.DEC n andalso verifyBase StringCvt.HEX n andalso verifyBase StringCvt.OCT n andalso verifyBase StringCvt.BIN n then () else raise Fail "failed"; (* Random number generator. From Isabelle. *) local fun rmod x y = x - y * Real.realFloor (x / y); val a = 16807.0; val m = 2147483647.0; val random_seed = ref 1.0; in fun random () = let val r = rmod (a * ! random_seed) m in random_seed := r; Real.toLargeInt IEEEReal.TO_NEGINF r end end; fun doFor f 0 = () | doFor f n = (f(); doFor f (n-1)); verify 0; verify 1; verify ~1; verify 100000000000000000000000; verify 100000000000000000000001; verify 9051234567; doFor(fn () => (verify(random()); verify(~(random())))) 100; polyml-5.7.1/Tests/RunTests.sml0000644000175000017500000001265213204034553015413 0ustar daviddavid(* Run the regression tests. *) fun runTests parentDir = let val defaultInlineSize = ! PolyML.Compiler.maxInlineSize fun runTests (dirName, expectSuccess) = let (* Run a file. Returns true if it succeeds, false if it fails. *) fun runTest fileName = let open PolyML.Compiler (* Max inline size is not available as a CP parameter and some tests adjust it. Set it to the default before each test. *) val () = maxInlineSize := defaultInlineSize (* Set it to the default *) val () = debug := false (* Reset this *) (* First in list is the name with no suffix. *) val inStream = TextIO.getInstream(TextIO.openIn fileName) val stream = ref inStream val lineNo = ref 1; fun getChar () : char option = case TextIO.StreamIO.input1 (! stream) of NONE => NONE | SOME (eoln as #"\n", strm) => ( lineNo := !lineNo + 1; stream := strm; SOME eoln ) | SOME(c, strm) => (stream := strm; SOME c) (* Create a private name space for each test otherwise declarations in one could affect another. *) fun makeSpace(globalLook, globalAll) = let open HashArray val table = hash 10 infix 8 sub fun lookup s = case table sub s of NONE => globalLook s | SOME r => SOME r fun enter(s, v) = update(table, s, v) fun all () = fold (fn(s, v, l) => (s, v) :: l) (globalAll()) table in { lookup = lookup, enter = enter, all = all } end val { lookupFix, lookupSig, lookupVal, lookupType, lookupFunct, lookupStruct, allFix, allSig, allVal, allType, allFunct, allStruct, ...} = PolyML.globalNameSpace; val fixSpace = makeSpace(lookupFix, allFix) val sigSpace = makeSpace(lookupSig, allSig) val valSpace = makeSpace(lookupVal, allVal) val typeSpace = makeSpace(lookupType, allType) val funSpace = makeSpace(lookupFunct, allFunct) val strSpace = makeSpace(lookupStruct, allStruct) val localNameSpace: PolyML.NameSpace.nameSpace = { lookupFix = #lookup fixSpace, lookupSig = #lookup sigSpace, lookupVal = #lookup valSpace, lookupType = #lookup typeSpace, lookupFunct = #lookup funSpace, lookupStruct = #lookup strSpace, enterFix = #enter fixSpace, enterSig = #enter sigSpace, enterVal = #enter valSpace, enterType = #enter typeSpace, enterFunct = #enter funSpace, enterStruct = #enter strSpace, allFix = #all fixSpace, allSig = #all sigSpace, allVal = #all valSpace, allType = #all typeSpace, allFunct = #all funSpace, allStruct = #all strSpace } (* The tests in the Fail directory should all raise exceptions in the compiler as a result of detecting errors. *) exception CompilerException in ( while not (TextIO.StreamIO.endOfStream(!stream)) do let fun discardOut _ = () val nameSpace = PolyML.globalNameSpace val code = PolyML.compiler(getChar, [CPOutStream discardOut, CPNameSpace localNameSpace]) handle Fail "Static Errors" => raise CompilerException in code() end; (* Normal termination: close the stream. *) TextIO.StreamIO.closeIn (! stream); expectSuccess (* OK if we expected success. *) ) handle CompilerException => (TextIO.StreamIO.closeIn(!stream); not expectSuccess) | exn => (TextIO.StreamIO.closeIn(!stream); false) end; open OS.FileSys OS.Path val testPath = joinDirFile{dir=parentDir, file=dirName} val dir = openDir testPath fun runDir (fails: string list) = case readDir dir of NONE => fails (* Finished *) | SOME f => if String.isSuffix "ML" f then ( print f; print " => "; if runTest(joinDirFile{dir=testPath, file=f}) then (print "Passed\n"; runDir fails) else (print "Failed!!\n"; runDir(fails @ [joinDirFile{dir=dirName, file=f}])) ) else runDir fails val failedTests = runDir [] in closeDir dir; failedTests end; in (* Each test in the Succeed directory should succeed and those in the Fail directory should fail. *) case runTests("Succeed", true) @ runTests("Fail", false) of [] => true (* All succeeded *) | failedTests => (print "\nFailed Tests: "; print(String.concatWith " " failedTests); print "\n"; false) end; polyml-5.7.1/documentation/0000755000175000017500000000000013204034553014650 5ustar daviddavidpolyml-5.7.1/documentation/Papers/0000755000175000017500000000000013204034553016102 5ustar daviddavidpolyml-5.7.1/documentation/Papers/poly/0000755000175000017500000000000013204034553017065 5ustar daviddavidpolyml-5.7.1/documentation/Papers/poly/intro.html0000644000175000017500000012410313204034553021107 0ustar daviddavid Introdution to Poly Note to online version
This document was originally published as a Cambridge University Technical Report (TR29) and as part of my PhD thesis, Programming Language Design with Polymorphism, Cambridge University Technical Report TR49. It describes an early version of the Poly language. David C. J. Matthews, August 2003.

INTRODUCTION TO POLY

D.C.J. Matthews,May 1982
Computer Laboratory,
University of Cambridge

Abstract
This report is a tutorial introduction to the programming language Poly. It describes how to write and run programs in Poly using the VAX/UNIX implementation. Examples given include polymorphic list functions, a double precision integer package and a subrange type constructor.

Introduction to Poly

Poly is a programming language which supports polymorphic operations. This document explains how it is used on the VAX.

1. Commands and Declarations

The system is entered by running the appropriate program (e.g. /mnt/dcjm/poly at Cambridge). The compiler will then reply with a prompt (>). To exit from Poly at any time type ctrl-D (end-of-text) or ctrl-C (interrupt). There are three types of instructions which can be typed to Poly; declarations of identifiers, statements (commands), or expressions. An example of a command and the output it produces is

> print("Hello");
Hello

Note the closing semicolon which must be present to indicate the end of the command. If you forget it the compiler will print a # as a prompt to indicate that the command is not yet complete.

An example of an expression is

> "Hi";
Hi 

Poly prints the value of an expression without the need to type the word 'print'.

Commands can be grouped by enclosing them with the bracketing symbols begin and end or ( and ). For instance

> begin
# print("Hello");
# print(" again")
# end;
Hello again
Any object in Poly can be bound to an identifier by writing a declaration. For instance
> let message == "Hello "; 
declares an identifier 'message' to have the value of the string 'Hello '. It can be printed in the same way as the string constant.
> message;
Hello 

Names can be either a sequence of letters and digits starting with a letter, or a sequence of the special characters + - * = < > etc. Certain names are reserved to have special meanings and cannot be used in declarations. Those words can be written in upper, lower or mixed case, all other words are considered to be different if written in different cases. When declaring a name made up of the special characters remember to put a space between the name and the == or colon which follows it. Comments are enclosed in curly brackets { and }. They are ignored by the compiler and are equivalent to a single space or newline between words.

2. Procedures

Statements or groups of statements can be declared by making them into procedures.

> let printmessage == 
#     proc()
#       (print("A message ")); 

A procedure consists of a procedure header (in this case the word proc and parentheses ( and ) ) and a body. The procedure body must be enclosed in bracketing symbols (in this case '(' and ')') even if there is only one statement.

This is simply another example of a declaration. Just as previously 'message' was declared to have the value "Hello#", 'printmessage' has been declared with the value of the procedure.

The procedure is called by typing the procedure name followed by ().

> printmessage();
A message 

The effect of this is execute the body of the procedure and so print the string.

Procedures can take arguments so that values can be passed to them when they are called.

> let pmessage == 
# proc(m : string) 
# begin 
# print("The message is :");
# print(m) 
# end; 
This can be called by typing
> pmessage("Hello");
The message is :Hello 
or by typing
> pmessage("Goodbye"); 
The message is :Goodbye 

3. Specifications

As well as having a value all objects in Poly have a specification, analogous to a type in other languages. It is used by the compiler to ensure that only meaningful statements will be accepted. You can find the specification of a declared name x by typing ? "x";.

> ? "message";
message : string 
This means that message is a constant belonging to the type 'string'.
> ? "pmessage"; 
pmessage : PROC(string) 
This means that pmessage is a procedure taking a value of type string as its argument. Since message has that specification the call
> pmessage(message);
The message is :Hello 
will work. Likewise the call
> pmessage("Hi");
The message is :Hi 
will work because "Hi" also belongs to type string. However
> pmessage(pmessage); 
Error - specifications have different forms 

will fail because 'pmessage' has the wrong specification. Incidentally, the specification of the procedure is the same as the header used when it was declared, ignoring the differences in the case of some of the words.

4. Integer and Boolean

So far the only constants used have been those belonging to the type string. Another type, integer provides operations on integral numbers.

> print(42); 
42 
The usual arithmetic operations +, -, *, div, mod, succ and pred are available.
> 42+10-2; 50 
However, unlike other languages all infix operators have the same precedence so
> 4+3*2; 14 

prints 14 rather than 10. Also - is an infix operator only, there is a procedure neg which complements its argument.

Another 'standard' type is boolean which has only two values true and false. Its main use is in tests for equality (the = operator), inequality (<>) and magnitude (> < >= <=).

> let two == 2;
> 1 = two;
false
> 2 = two;
true
> 3 <> 4;
true 
> 4 >= 5;
false 
The expression '1 = two' has type boolean. Identifiers can be declared to have boolean values in the same way as integers and strings.
> let testtwo == two > 1; 

declares testtwo to be 'true' since 'two' is greater than 1. There are three operators which work on boolean values, &, | and ~. ~ is a prefix operator which complements its argument (i.e. if its argument was false the result is true, and vice-versa). & is an infix operator which returns true only if both its arguments are true. | is also an infix operator which returns true if either of its arguments is true.

5. If-Statement

Boolean values are particularly useful since they can be tested using if. The if-statement causes different statements to be obeyed depending on a condition.

> if two = 2 
# then print("It is two")
# else print("It isn't two");
It is two 
tests the value of the expression 'two = 2' and executes the statement after the word then if it is true, and the statement after the word else if it is false. This could be written as a procedure,
> let iszero == 
# proc(i: integer) 
# (if i = 0 then print("It is zero") 
# else print("It isn't zero")); 
which could then be called to test a value.
> iszero(4);
It isn't zero
since 4 is not zero. If-statements can return values as well as perform actions in the then and else parts. An alternative way of writing 'iszero' could have been
> let iszero == 
# proc(i: integer) 
# (print( 
# if i  = 0 
# then "It is zero" 
# else "It isn't zero"
# )); 

This version tests the condition, and returns one or other of the strings for printing. This can only be used if both the then and else parts return values with similar specifications (in this case both sides return string constants). The version of the if-statement which does not return a value can be written with only a then-part. If the then-part returns a value there must be an else-part (otherwise what value would be returned if the condition were false?).

6. More on Procedures

Procedures can be written which return results. For instance a further way of writing 'iszero' would be to allow it to return the value of the string.

> let iszero == 
# proc(i: integer)string
# (if i = 0 then "It is zero" 
# else "It isn't zero"); 
> ? "iszero";
iszero : PROC(integer)string
Calling it would then cause it to return the appropriate string which would then be printed.
> iszero(0);
It is zero 
Another example is a procedure which returns the square of its argument.
> let sqr ==
# proc(i: integer)integer (i*i); 
declares sqr to be a procedure which takes an argument with type integer and returns a result with type integer. The body of the procedure evaluates the square of the argument i, and the result is the value of the expression. The call
> sqr(4); 
16 

will therefore print out the value 16.

Procedures in Poly can be written which call themselves, i.e. recursive procedures. These are declared using letrec rather than let.

> letrec fact == 
# proc(i: integer)integer 
# (if i = 1 then 1 
# else i*fact(i-1)); 
This is the recursive definition of the factorial function. The procedure can be called by using
> fact(5); 
120 

which prints the result. letrec has the effect of making the name being declared available in the expression following the ==, whereas let does not declare it until after the closing semicolon.

7. Variables

Constants are objects whose value cannot be changed. There are also objects whose value can change, these are variables. Variables are created by declarations such as

> let v == new(0); 
The procedure 'new' returns a variable whose initial value is the argument.
> v; 
0 
A new value can be given to v by using the assignment operator.
> v := 3; 
> v; 
3 
Thus v now has the value 3. The new value can depend on the old value.
> v := (v+2); 
Sets the value to be 5. The parentheses are necessary because otherwise the order of evaluation would be strictly left-to-right. Variables can be of any type.
> let sv == new("A string"); 

declares sv to be a string variable. The specification of a variable is not as simple as it may seem and will be dealt with later.

8. The While Loop

It is often necessary to repeat some statements more than once. This can be done using the while statement. For instance

> let x == new(10);
> while x <> 0
# do
# begin
# print(x*x);
# print(" ");
# x := pred(x)
# end; 
100 81 64 49 25 16 9 4 1 
prints the square of all the numbers from 10 down to 1. The body of the loop (the statement after the word do) is executed repeatedly while the condition (the expression after the word while) is true. The condition is tested before the loop is entered, so
> while false
# do print("Looping"); 

will not print anything.

9. Operators

We have already seen examples of operators such as + and &. In Poly operators are just procedures whose specifications include the words infix or prefix. They are declared in a similar way to procedures, for instance

> let  sq == proc prefix (i : integer)integer (i*i); 
has declared sq as a prefix operator. It can be used like any other prefix operator:
> sq 3; 
9 

The difference between a prefix operator and other procedures is that the argument to a prefix operator does not need to be in parentheses. Infix operators can be defined similarly.

10. The Specifications of Types

All objects in Poly have specifications. This includes types such as string, integer and boolean.

 > ? "boolean";
boolean : TYPE (boolean)
   & : PROC INFIX (boolean; boolean)boolean;
   false : boolean;
   print : PROC (boolean);
   true : boolean; 
   | : PROC INFIX (boolean; boolean)boolean;
   ~ : PROC PREFIX (boolean)boolean
END 
Types in Poly are regarded as sets of "attributes". These attributes are usually procedures or constants but could be other types. The attributes of a type can be used exactly like ordinary objects with the same specification. However, since different types may have attributes with the same name, it is necessary to prefix the name of the attribute with the name of the type separated by $.
> integer$print(5);
5 
This invokes the attribute 'print' belonging to integer and prints the number. Most types have a print attribute which prints a value of that type in an appropriate format. $ acts a selector which finds the attribute belonging to a particular type. It is not an operator so operators always work on the selected name rather than the type name.
> ~ boolean$true;
false 

11. Records

Poly allows new types to be created in the same way as new procedures, constants or variables. One way of creating a new type is by making a record. A record is a group of similar or dissimilar objects.

> let rec == record(a, b: integer);
This declares 'rec' to be a record with two components, a and b, both of type integer.
> ? "rec";
rec : TYPE (rec)
   a : PROC(rec)integer; 
   b : PROC(rec)integer;
   constr : PROC(integer;integer)rec
END 
'constr' is a procedure which makes a record by taking two integers, and 'a' and 'b' are procedures which return the 'a' and 'b' values of the record.
> let recv == rec$constr(3, 4); 
creates a new record with 3 in the first field (a) and 4 in the second field (b). The result is given the name 'recv'.
> rec$a(recv);
3
> rec$b(recv);
4 

show that the values of the individual fields can be found by using 'a' and 'b' as procedures. They must of course be prefixed by 'rec$' to show the type they belong to.

Records can be made with fields of any specification, not just constants.

> let arec == 
# record(x:integer; p: proc(integer)integer); 
declares a record with fields x and p, x being an integer constant and p a procedure.
> let apply ==
# proc(z : arec)integer
# begin
# let pp == arec$p(z);
# pp(arec$x(z))
# end; 
is a procedure which takes a constant of this record type and applies the procedure p to the value x and returns the result. In fact, it is not necessary to declare pp in the body of the procedure. An alternative way of writing apply is
> let apply ==
# proc(z : arec)integer 
# (arec$p(z)(arec$x(z))); 

12. Unions

Another way of constructing a type is using a 'union'. A union is a type whose values can be constructed from the values of several other types. For instance a value of a union of integer and string could be either an integer or a string.

> let un == union(int: integer; str: string); 
This has created a type which is the union of integer and string. A value of the union type can be constructed by using an injection function. This union type has two such functions, their names made by appending 'int' and 'str' onto the letters 'inj_', making 'inj_int' and 'inj_str'. ('int' and 'str' were the 'tags' given in the declaration, in a similar way to fields in a record).
> let intunion == un$inj_int(3); 
This has created a value with type 'un' containing the integer value 3.
> let stringunion == un$inj_str("The string"); 
creates a value, also with type 'un', but this time containing a string. Given a value of a union type it is often useful to be able to decide which of its constituent types it was made from. For each of the 'tags' there is a procedure whose name is made by prefixing with the letters 'is_', which returns 'true' or 'false' depending on whether its argument was made from the corresponding injection function.
> un$is_int(intunion); true 
prints 'true' because intunion was made from 'inj_int'. However
> un$is_str(intunion); 
false 
Values of the original types can be obtained by using 'projection' functions, which are the reverse of the 'injection' functions. Their names are made by prefixing the tags with 'proj_' to make names like 'proj_str' and 'proj_int'.
> un$proj_int(intunion);
3
> un$proj_str(stringunion); 
The string 
print the original values. It is possible to write
> un$proj_str(intunion);
Exception projecte raised 
because 'intunion' has type 'un', just like 'stringunion'. However, 'proj_str' is expected to return a value with type string so when this is run it will cause an error. The effect will be to raise an 'exception' called 'projecterror' which means that a projection procedure was given an argument constructed using a different injection procedure.
> let unprojstr == un$proj_str;
> ? "unprojstr"; 
unprojstr : PROC(un)string RAISES projecterror 

shows that 'proj_str' may raise 'projecterror'. Exceptions will be dealt with in more detail later on.

13. The Type-Constructor

It is often useful to be able to construct a type which is similar to an existing one but with additional attributes. This can be done by using the type-constructor.

> let nrec ==
# type (r) extends rec;
# let print ==
# proc(v : r)
# begin
# print(r$a(v)); 
# print(",");
# print(r(v))
# end
# end;
> ? "nrec";
   nrec : TYPE (nrec)
   a : PROC (nrec)integer;
   b : PROC (nrec)integer;
   constr : PROC (integer; integer)nrec;
   print : PROC (nrec)
END 
This declares 'nrec' to be a new type which is an 'extension' of an existing type 'rec'. It then lists the new attributes, in this case just the procedure 'print', which are declared just as though they were ordinary declarations. The name 'r' in parentheses which follows the word 'type' is the name for the new type within the body of the type constructor, so the argument of the procedure 'print' is given the type 'r'. It is important to remember that the new type is a completely separate type from 'rec'. Values can be changed from the old to the new type and vice versa, but they cannot be used interchangeably. The specification of nrec is similar to that of rec except that there is now an extra procedure 'print'.
> let nrecv == nrec$constr(5,6);
> nrec$print(nrecv);
5,6 
makes a value with type nrec, and prints it using the new 'print' attribute. It is possible to write simply
> print(nrecv);
5,6 
because there is a procedure 'print' which looks for the 'print' attribute of the type of the value given, and then calls it. This is the way integers and strings are printed (they both have 'print' attributes). Many of the other operations such as ':=' and '+' work in a similar way. A further alternative is to write an expression.
> nrecv;
5,6 

In this case the compiler looks for the 'print' attribute and applies it.

14. A Further Example

This record could be extended in a different way, to make a double-precision integer. Suppose that the maximum range of numbers which could be held in a single integer was from -9999 to 9999. Then a double-precision number could be defined by representing it as a record with two fields, a high and low order part, and the actual number would have value (high)*10000 + (low). This can be implemented as follows.

 > let dp ==
# type (d) extends record(hi, lo: integer);
# let succ ==
# proc(x:d)d
# begin
# if d$lo(x) = 9999
# then d$constr(succ(d$hi(x)), 0)
# else if (d$hi(x) < 0) & (d$lo(x) = 0)
# then d$constr(succ(d$hi(x)), neg(9999))
# else d$constr(d$hi(x), succ(d$lo(x)))
# end;
# let pred ==
# proc(x:d)d
# begin
# if d$lo(x) = neg(9999)
# then d$constr(pred(d$hi(x)), 0)
# else if (d$hi(x) > 0) & (d$lo(x) = 0) 
# then d$constr(pred(d$hi(x)), 9999)
# else d$constr(d$hi(x), pred(d$lo(x))) 
# end;
# let print ==
# proc(x:d)
# begin
# if d$hi(x) <> 0
# then
# begin
# print(d$hi(x));
# if abs(d$lo(x)) < 10
# then print("000")
# else if abs(d$lo(x)) < 100
# then print("00")
# else if abs(d$lo(x)) < 1000
# then print("0");
# print(abs(d$lo(x)))
# end
# else print(d$lo(x))
# end;
# let zero == d$constr(0,0); 
# let iszero ==
# proc(x:d) boolean
# ((d$hi(x) = 0) & (d$lo(x) = 0))
# end; 

This is sufficient to provide the basis of all the arithmetic operations, since +,-,* etc. can all be defined in terms of succ, pred, zero and iszero.

15. Exceptions

In the section on union types above mention was made of exceptions. In the case of the projection operations of a union type an exception is raised when attempting to project a union value onto a type which was not the one used in the injection. An exception is simply a name and any exception can be raised by writing 'raise' followed by the name of the exception.

> raise somefault;
Exception somefault raised 
raises an exception called 'somefault'.
> let procraises
# == proc(b: boolean) 
# (if b then raise afault); 
has specification
PROC(b: boolean) RAISES afault 

Various operations, as well as projection, may raise exceptions. For instance many of the attributes of integer, such as 'succ' raise the exception 'rangeerror' if the result of the operation is outside the range which can be held in an integer constant. 'div' will raise 'divideerror' if it is asked to divide something by 0.

As well as being raised exceptions can also be caught, which allows a program to recover from an error. A group of statements enclosed in brackets or 'begin' and 'end' can have a 'catch phrase' as the last item. A catch phrase is the word catch followed by a procedure. e.g. 'catch p' will catch any exception raised in the group of statements and apply p to its name.

>let proccatches ==
# proc(excp: string) (print(excp)); 
> begin
# procraises(true);
# catch proccatches
# end;
afault 
'proccatches' has been declared as a procedure which takes a argument of type string. The exception is raised by 'procraises' and, since it is not caught in that procedure it propagates back to the point at which 'procraises' was called. The catch phrase catches the exception and calls the procedure with the name of the exception as the argument. The catching procedure can then look at the argument and decide what to do.
> begin
# procraises(false);
# catch proccatches
# end; 

does not print anything because an exception has not been raised and so the procedure is not called.

If the block containing the catch phrase returns a value, then the catching procedure must return a similar value.

> let infinity == 99999;
> let divi ==
# proc infix(a, b: integer)integer 
# begin
# a div b
# catch proc(string)integer (infinity)
# end; 

This declares 'divi' to be similar to 'div' except that instead of raising an exception it returns a large number. Since 'a div b' returns an integer value the catch phrase must also return an integer.

16. The Specification of Variables

The specification of a variable in Poly is not, as one might expect, a constant of some reference type or a separate kind of specification, but each variable is in fact a separate type. Since a type in Poly is simply a set of constants, procedures or other types, a type can be used simply as a way of conveniently grouping together objects.

> let intpair ==
# type
# let first == 1;
# let second == 2
# end; 

This has declared 'intpair' to be a pair of integers containing the values 1 and 2. 'intpair$first' and 'intpair$second' can be used as integer values directly.

The specification of an integer variable is

TYPE
assign: PROC(integer);
content: PROC()integer 
END 
A variable is a pair of procedures, 'assign' which stores a new value in the variable, and 'content' which extracts the current value from it. The standard assignment operator ':=' simply calls 'assign' on the variable. The compiler inserts a call to 'content' automatically when a variable is used when a constant is expected. 'assign' and 'content' can both be called explicitly.
> let vx == new(5);
> vx$assign(vx$content() + 1);
> vx$content(); 
6 
As an example of a more complicated variable, suppose we wanted to write a subrange variable, similar to a subrange in Pascal, which could hold values between 0 and 10.
> let sr ==
# begin
# let varbl == new(0);
# type
# let content == varbl$content;
# let assign ==
# proc(i: integer) 
# (if (i < 0) | (i > 10
# then raise rangeerror
# else varbl$assign(i)) 
# end
# end; 
'varbl' is an integer variable which is initially set to 0. 'assign' checks the value before assigning it to 'varbl', and raises an exception if it is out of range. 'content' is just the 'content' procedure of the variable. It can be used in a similar way to a simple variable.
> sr := 2;
> sr;
2
> sr := 20;
Exception rangeerror raised
> sr;
2 

17. Specifications in Declarations

The double-precision type declared above has one drawback. The specification contains the 'hi', 'lo' and 'constr' attributes in the specification of the type which would allow someone to construct a value which had the type 'dp', but had, for instance, fields outside the range -9999 to 9999 or with different signs. This could make some of the operations fail to work. We need a way of hiding details of the internals of a type declaration so that they do not appear in the specification, and so cannot be used outside. In Poly a specification can be given to something explicitly as well as having it inferred from the declaration.

> let aconst: integer == 2; 
declares 'aconst' and forces it to have type 'integer'. The specification is written in the same way as the specification of the argument of a procedure.
> let quote : proc(string)
# == proc(x: string)
# begin
# print("`"); 
# print(x);
# print("'")
# end; 
is another example of explicitly giving a specification to a value. An explicitly written specification is the specification of the name which is being declared. It need not be identical to the specification of the value following the '=='. However it must be possible to convert the specification of the value to the explicit specification (the 'context').
> let avar == new(3);
> let bconst: integer == avar; 
declares 'avar' to be an integer variable and 'bconst' to be an integer constant. In the latter case the specification is necessary, otherwise 'bconst' would have been a variable and would have been another name for 'avar'. The conversion of a variable to a constant in order to match a given specification is one example of a 'coercion' of a value to match a 'context'. There are several others which can be applied depending on the particular specification. For instance the specification of a procedure may be changed from an operator to a simple procedure or vice versa.
> let plus:
# proc(integer;integer)integer raises rangeerror 
# == integer$+ ; 
declares 'plus' as a procedure which is the same as the '+' attribute of integer except that it is not an infix operator.
> plus(3,4);
7 

The list of exceptions raised by the procedure must be included in the specification. The exception list in the specification given must include all the exceptions which may be raised, but may include others as well. A special exception name any can be used to indicate that a procedure can raise any exception. Any exception list will match a context with exception list 'raises any'.

The specifications of the arguments and result must all match.

> let dble:
# type (d)
# succ, pred: proc(d)d raises rangeerror;
# print: proc(d) raises rangeerror;
# zero: d;
# iszero: proc(d)boolean;
# end
# == dp; 

creates a new type 'dble' with the specification given. The specification is the same as that of 'dp' but with some of the attributes of dp missing.

In the case of types the specification of the value must possess all the attributes of the explicit specification, but the explicit specification need not include all the attributes of the value. If a type is regarded as a set of named attributes then it is possible to take a subset of them and make them into a new type, simply by giving the new type the required specification. The specification of each attribute must itself match the specification that is given for it.

This mechanism provides a way of 'hiding' internal operations from the specification of a type. The specification of 'dble' above has only those attributes which are necessary to use it, and none of the operations which are used internally.

18. Types as Results of Procedures

So far we have considered procedures which take constants as arguments or return constants as results. In Poly values of any specification can be passed to or returned from a procedure. For instance

> let subrange 
# == proc(min, max, initial: integer)
# type (s)
# content: proc()integer; 
# assign: proc(integer) raises outofrange
# end
# begin
# type
# let varbl == new(initial);
# let content == varbl$content;
# let assign == 
# proc(i: integer)
# (if (i < min) | (i > max)
# then raise outofrange 
# else varbl$assign(i))
# end
# end; 
This procedure is similar to the definition of the subrange type 'sr' previously. However the bounds of the type are now arguments of a procedure so their values can be supplied when the program is run. Also new subrange variables can be created by calling the procedure.
> let sv == subrange(0,10,0); 

This creates 'sv' as a variable of this subrange type. As with any procedure the arguments can be arbitrary expressions provided they return results with the correct specification.

19. Types as Arguments to Procedures

Types can be passed as arguments as well as being returned from procedures.

> let copy ==
# proc(atype: type end)
# type (t)
# into: proc(atype)t;
# outof: proc(t)atype
# end 
# begin
# type (t) extends atype;
# let into == t$up
# let outof == t$down
# end
# end; 
This procedure takes a type and returns a type with two operations 'into' and 'outof'. 'up' and 'down' are procedures which are created when 'extends' is used, and provide a way of converting between the original and the resulting types. The specification of 'atype' merely says that it must be passed a type as an argument, but since it does not list any attributes then any type can be used as an actual argument (this is effectively saying that the empty set is a subset of every set). The procedure can be called, giving it an actual type as argument.
> let copyint == copy(integer);
The specification of the result is
TYPE (copyint)
into: PROC(integer)copyint; 
outof: PROC(copyint)integer
END; 
The specification of copyint allows mapping between integer and copyint since the type integer has been included in the specification.
> let copy5 == copyint$into(5);
> copyint$outof(copy5); 
5 
has mapped the integer constant 5 into and out of 'copyint'.
> let copychar == copy(char); 

creates a similar type which maps between char and copychar.

20. Polymorphic Procedures

There are often cases where, in addition to passing a type as a argument, one or more values of that type are passed as well. For instance a procedure to find the second successor of a value might be written as

> let add2 ==
# proc(atype:
# type (t)
# succ: proc(t)t raises rangeerror
# end;
# val: atype)
# (atype$succ(atype$succ(val)));
The specification of 'val' is that it must be a constant, and its type is 'atype'. However 'atype' is also an argument to the procedure so the specification really means that this procedure could be called by giving it any type with the required attributes, and a constant which must be of the same type as the first argument.
> add2(integer, 2);
4 
Similarly
> add2(char, 'A'); C 
However
> add2(integer, 'A'); 
and
> add2(string, "A string"); 

both fail, in the first case because 'A' is not integer, and in the second because string does not have a successor function.

21. Implied Arguments

Many types have a 'print' attribute which prints a constant of the type.

> let pri ==
# proc(printable: type (t) print(t) end; val: printable)
# (printable$print(val)); 
declares 'pri' as a procedure which takes as arguments a type and a constant of that type and prints the constant using the 'print' attribute. This can be called by writing
> pri(integer, 3); or > pri(char, 'a'); 
since both 'integer' and 'char' have a 'print' attribute. Having to pass the type explicitly is really unnecessary, since it is possible for the system to find the type from the specification of the constant. It would be possible for the system to convert 'pri(3)' into 'pri(integer,3)' since '3' has type integer. In Poly types which can be deduced from the specifications of other arguments can be declared as 'implied' arguments. A argument list written in square brackets, [ and ], can precede the normal argument list and those parameters, which must be all be types, are inferred from the other actual arguments when the procedure is called.
> let prin == 
# proc [printable: type (t) print: proc(t) end]
# (val: printable)
# (printable$print(val)); 
  
This can now be called by writing
> prin(3);
or
> prin("hello");
and is in fact the definition of 'print' in the standard library. Alternatively 'prin' could have been declared by giving it an explicit specification and using 'pri'.
> let prin: proc[printable: type (t) print: proc(t) end]
# (printable)
# == pri; 
This is another form of conversion which can be made using an explicit specification. Using implied parameters can simplify considerably the use of procedures with types as arguments, and allow infix or prefix operators to be used in cases where they could not otherwise be used. For instance, consider an addition operation defined as
> let add == 
# proc(summ: type (s) + : proc infix (s;s) raises rangeerror
# end;
# i, j: summ)summ
# (i + j); 
would be used by writing
> add(integer, 1, 2);
3 
However, by writing
> let +
# : proc infix [summ: type(s)
# + : proc infix (s;s)raises rangeerror
# end]
# (i, j: summ)summ raises rangeerror
# == add; 

'+' can become an infix operator, since it has only two actual arguments. Similar definitions are used for many of the other declarations in the library.

22. Literals

We have already seen how constants can be written as "Hello" or 42. These are known as literal constants, because their values are given by the characters which form them, rather than by some previous declaration. They are however, only sequences of characters, it is only by convention that "Hello" is a string constant and 42 an integer constant. This is only important when we wish to use some other definition than the 'standard' one. For instance, if the type integer were restricted to the range -9999 to 9999 then the constant 100000 would be an error if it were treated as an integer. The definition of double-precision integer above, would, however, be able to represent it.

In Poly, therefore, literals have no intrinsic type, they must be converted into a value by the use of a conversion routine. The compiler recognises certain sequences of characters as literals rather than names or special symbols. The three forms of literal constants recognised by the compiler are 'numbers', 'double-quoted sequences' and 'single-quoted sequences'. 'Numbers' begin with a digit and may consist of numbers or letters.

42 0H3F6A 3p14159 
are examples of 'numbers'. 'Double-quoted sequences' are sequences of characters contained in double-quotes. A double-quote character inside the sequence must be written twice.
"Hello" "" "He said ""Hello"""
'Single-quoted sequences' are similar to double-quoted sequences but single rather than double-quotes are used.
'Hello' '' 'He said ''Hello''' 
When the compiler recognises one of these literals it tries to construct a call to a conversion routine which can interpret it as a value of some type. For instance, the standard library contains a definition of 'convertn' which the compiler calls if it finds a 'number'. That definition has specification
PROC(string)integer 

All conversion routines must have similar specifications, but the result type will differ and some exceptions may be raised. The literal is supplied as a constant of type 'string'. The conversion routine can examine the characters which form the literal and return the appropriate value. It may of course raise an exception if the characters do not form a valid value, if either the value would be out of range or if the literal contains illegal characters.

There are also two other conversion routines in the standard library, 'converts' which converts double-quoted sequences into string values, and 'convertc' which converts single-quoted sequences into values of the type 'char'. These definitions can be overridden by preceding the literal by the name of a type and a $ sign. For instance

> let int == integer; 
> let one == int$1; 

applies the 'convertn' routine belonging to 'int', so that 'one' has type int rather than integer.

23. Lists

Lists are a convenient example for polymorphic operations. List types can be constructed by the following procedure.

> let list ==
# proc(base: type end) 
# type (list)
# car : proc(list)base raises nil_list;
# cdr : proc(list)list raises nil_list; 
# cons: proc(base; list)list; 
# nil : list; 
# null: proc(list)boolean 
# end
# begin
# type (list)
# let node == record(cr: base; cd: list);
# extends union(nl : void; nnl : node); 
# let cons == # proc(bb: base; ll: list)list
# (list$inj_nnl(node$constr(bb, ll)));
# let car ==
# proc(ll: list)base
# begin
# node$cr(list$proj_nnl(ll)) 
# catch proc(string)base (raise nil_list)
# end;
# let cdr ==
# proc(ll: list)list
# begin
# node$cd(list$proj_nnl(ll))
# catch proc(string)list (raise nil_list)
# end;
# let nil == list$inj_nl(void$empty);
# let null == list$is_nl
# end
# end; 

'void' is a standard type which has only one value (empty), and is used to represent the 'nil' value of the list. The list structure is made using a recursive union with each node containing a value of the 'base' type and the next item of the list, or containing a nil value. 'cons' makes a new node of the list, 'car' and 'cdr' find the 'base' and 'list' parts of a node respectively, and 'null' tests for the value 'nil'. 'car' and 'cdr' both trap the exception which would be raised if a projection error occurred and raise 'nil_value' in its place.

A particular list type can now be created, for instance a list of integers.

> let ilist == list(integer);
> let il == ilist$cons(1, ilist$cons(2, ilist$cons(3, ilist$nil))); 
A polymorphic 'cons' function could be declared to work on lists of any base type.
> let cons ==
# proc[base: type end;
# list: type (l) cons: proc(base; l)l end]
# (bb: base; ll: list)list # (list$cons(bb, ll)); 
It is now possible to write simply
> let il == cons(1, cons(2, cons(3, ilist$nil))); 
Polymorphic 'car', 'cdr' and 'null' functions can be written similarly. As further examples some other polymorphic list functions are given.
> letrec append ==
# proc[base: type end;
# list: type (l)
# car: proc(l)base raises nil_list;
# cdr: proc(l)l raises nil_list; 
# cons: proc(base; l)l;
# null: proc(l)boolean end]
# (first, second: list)list
# ( if null(first) then second
# else cons(car(first), append(cdr(first), second)) );
> letrec reverse ==
# proc[base: type end;
# list: type (l)
# car: proc(l)base raises nil_list;
# cdr: proc(l)l raises nil_list; 
# cons: proc(base; l)l;
# nil: l;
# null: proc(l)boolean end]
# (ll: list)list
# ( if null(ll) then list$nil
# else append(reverse(cdr(ll)), cons(car(ll), list$nil)) ); 
A useful function would be one which would print the data part of a list if the base type could be printed.
> letrec pr ==
# proc [base: type(b) print: proc(b) end;
# list: type(l) car: proc(l)base raises nil_list;
# cdr: proc(l)l raises nil_list;
# null: proc(l)boolean
# end ]
# (ll: list)
# begin
# if null(ll)
# then print("nil") 
# else
# begin
# print("( ");
# print(list$car(ll));
# print(". ");
# pr(list$cdr(ll));
# print(") ")
# end
# catch proc(string) () 
# end; 
The list created above can now be printed.
> pr(il); 
( 1. ( 2. ( 3. nil) ) ) 

Other polymorphic functions on lists can be declared in a similar way.

24. Conclusion

This document is intended as an introduction to Poly and to give some idea of the ways in which it can be used. It is not a rigorous description and various details, such as the precise checking rules for specifications, have been deliberately skated over in order to explain the language simply. A companion document, the Poly Report, is the reference for the precise details of the language.

polyml-5.7.1/documentation/Papers/poly/polymanual.html0000644000175000017500000032643013204034553022144 0ustar daviddavid Poly Manual

Poly Manual

David C.J. Matthews

An original version of this document was published as University of Cambridge Computer Laboratory Technical Report 63 and appeared in SIGPLAN Notices Vol 20 No. 9 Sept. 1985.

Chapter 1. Introduction

Poly is a general purpose high-level programming language. It has a simple type system which is also very powerful. Higher order procedures, polymorphic operations, parameterised abstract types and modules are all supported by a single mechanism.

Poly is strongly typed. All objects have a signature which the compiler can use to check that operations applied to them are sensible. Type errors cannot cause run time faults.

The language is safe. Any faults that occur at run time will result in exceptions which can be caught and handled by the user. All variables must be initialised before they are used so faults due to undefined variables cannot occur.

Poly allows higher order procedures to be declared and used. A higher order procedure is one which takes a procedure as a parameter or returns a procedure as its result. Since Poly is statically scoped (the value bound to an identifier is determined by the static block structure) the procedure that is returned may refer to the arguments and local values belonging to the procedure that returned it, even though that procedure is no longer active.

Poly allows polymorphic operations. For example, in many languages such as Pascal or MODULA-2 programs to sort arrays of integers, arrays of strings or arrays of real numbers are textually almost identical. They differ only in the actual operation used to compare two elements of the array. In Poly one program can be written which will sort arrays of any type provided elements can be compared.

Poly allows abstract types to be created and manipulated. A"hash table" type can be defined that allows an arbitrary object to be stored along with a string which acts as a key. There would be a look-up function that will return the object stored with a given key. These can be written so that only the functions to create a table, enter a value against a key, and return the value with the key, are available to the user of the hash table. This has the advantages that the writer of the hash table function can change the way it is implemented provided it has the same external properties. The user can make use of the hash table knowing that he will not be able to upset its internal structure by accidentally using a function which was intended to be private.

Abstract types can be parameterised so that a set of types with similar properties can be defined in a single definition. A specific type can then be made from that. For example, a single hash table type could be declared from which hash tables to hold any particular type could be derived.

Types in Poly are similar to modules in other languages. For example, types can be separately compiled. An abstract type which makes use of other types can be written as though it were polymorphic - it will work if it is given any type (module) which has the required operations. Its operation may be simply to return a new type (module) as its result. This new type may be used directly or as a parameter to other polymorphic abstract types. There is a mechanism for constructing large programs out of their modules and recompiling those which have been modified since they were last compiled.

Chapter 2. The Type System

The purpose of a type system is to avoid mistakes due to using a value in a way that was not intended, while making meaningful operations easy to express. For example, if we have two matrices with the same dimensions, it should be just as easy to write the instruction to add them together as if they were integers. However it should not be possible to add an integer to a matrix. A type system could be designed in which all these rules were built into the type checker. This has the problem that new types with new rules cannot be added in. A better way is to have a few simple rules which allow new types to be added and checked but which can be used to catch most of the faults which could be made. The Poly type system is based on this idea.

All objects have a signature which is checked by the type-checker. The signature corresponds to a type in other languages, but is more general to take account of the greater power of the type system. For example, in a language like Pascal, a parameter to a procedure may have type integer. This gives enough information for the compiler to check that the procedure is correctly used; it can only be applied to an integer value, but it does not specify precisely which value. It can be applied to 1, 2, 3 etc. but not to strings such as "hello" or "goodbye". The checking done by the compiler ensures that certain kinds of faults will not happen when the program is run, but it cannot prevent all faults.

In Poly this approach is generalised to include procedures, types and exceptions as well as values. The signature of an object contains the information which the compiler uses to check that it is correctly used without restricting it to precisely one object. Expressions and variables can be made to return any kind of object and the signature of the result can be worked out by the compiler, provided of course that all the signatures in the expression match. Specifications have a standard textual form which allows them to be written in a program or output by the compiler. The rules for matching each kind of signature and their textual forms are described below.

2.1. Values

The simplest kind of object is the value which can be operated on but does not do anything itself. Examples are the number 42 or the string "hello". A value is said to belong to a type or have a particular type, which in Poly is always a named type. The signature is the name of the type. For example, the signature of the number 42 is integer and that of "hello" is string. Two values only match if they belong to the same type.

Syntax

<value signature> ::= <identifier> |<value signature>$<identifier>

2.2. Procedures

Procedures are objects which perform a computation. They often take parameters which can be used by the procedure and always return a result. They may also have side-effects or raise exceptions. Examples of procedures are "+" which adds together two values and "print" which prints a value. "+" is an infix operator which takes two values as parameters, and returns a single result.

3 + 4

"print" is a procedure which has the side-effect of printing the value.

print(3+4);

prints out the value 7. It incidentally also produces a result, but it has type void which has only one value, and is ignored.

Procedures can take procedures or types as parameters as well as simple values and can also return them as results. Procedures match if their parameters and results all match. The various forms of procedures will be described in the section on the procedure constructor.

Syntax
<procedure signature> ::=

proc <mode list> <implied parameters> <actual parameters> <signature>

<mode list> ::= <empty> | <mode> <mode list>
<mode> ::= infix <digit> | infixr <digit> | early | inline
<implied parameters> ::= [ <parameter list> ] | <empty>
<actual parameters> ::= ( <parameter list> )
<parameter list> ::= <empty> | <parameter> |<parameter>; <parameter list>
<parameter> ::= <identifier list>: <signature> | <signature>
<identifier list> ::= <identifier> | <identifier list>, <identifier>

2.3. Types

Poly has a novel view of types in that they are treated as being objects as well as having a role in checking the signature of values. Each type has a set of objects associated with it and a type mark. The type mark is used purely by the compiler in checking the signatures of objects and corresponds to the notion of a type in other languages, while the set of objects makes a type in Poly very similar to a module. All types have both a set of objects (which may however be empty) and a type mark, but one or the other may be more important in different circumstances.

2.3.1. Sets of Objects

As an example of the set of objects, the type integer has various operations such as addition, subtraction, multiplication etc. which can operate on values of the integer type. Any program which works on integers will ultimately be written in terms of these basic operations. Similarly the type real will have these operations along with others which convert between integer and real.

The signature of a type is the signature of the objects which make it up. Every object in a type has a name, and all the names in one type are different, although objects with the same name frequently exist in different types. So for instance, many types have a print procedure which takes as its parameter a value of the type, and prints it.

The name of an object in a type is intended to suggest the semantics of the operation, but there is no guarantee that the + operations in all types are commutative; in the type string it is used for concatenation. ( This would require a completely new level of semantic checking which is outside the scope of a conventional compiler. The CLEAR system [Burstall and Goguen] attempts this kind of checking.).

Most of the objects in types are procedures, but a type can contain simple values as well as other types. For instance there may be a first and a last value which give the maximum and minimum values. There is a distinction between objects which are part of the type and those which been created by operations of it and are said to belong to the type or have that type. For example, there is no 3 in the type integer but the number 3 has type integer.

As types are regarded as sets it is reasonable to be able to take subsets or select a particular object from a type. For example,

type (atype)
x
, y: atype;
add: proc(atype; atype)atype;
sub: proc(atype; atype)atype
end

this is the signature of a type with four objects, called x, y, add and sub. x and y are both values of this type, and add and sub are procedures which take a pair of values, and return a value. The name atype in brackets after the word type is the name used to represent the type itself inside the type signature. This type will match any of the following

type (t) { Only the name has changed }
x, y: t;
add: proc(t; t)t;
sub: proc(t; t)t
end

type (atype) { The objects are in a different order }
sub, add: proc(t; t)t;
y: t;
x: t;
end

type (at) { A subset }
x: at;
add: proc(at; at)at
end

type (atype) { Another subset }
add: proc(atype; atype)atype
end

type { Another subset - No need for an internal name }
end

This last example is the empty type which matches any type. The text in curly brackets is comment and ignored by the compiler.

2.3.2 Type Marks and the Specifications of Values

The function of the type mark is in the checking of the signatures of values. Each type has a distinct type mark which is used to identify values which have that type. The signature of a value is simply the type mark of the type to which it belongs. Checking the signatures of two values to see if they match reduces to seeing if they are the same type mark, there is no question of comparing the signatures of the types themselves.

The reason is that there may be many types with the same signature (short and long precision integers may have the same set of operations, +, – etc. but they are different types). The compiler produces type marks in various circumstances so as to guarantee that two different types will always have different type marks. The converse of this is that there are many circumstances in which two types which are in fact identical may have different type marks, and values associated with them will be incompatible. An expression which returns a type always has a type mark which differs from any other, in particular if an existing type is bound to a new name then they will have different type marks. Values which have the old type have a different type mark from the new one and so are incompatible, despite the types being in fact identical.

2.3.3 Sets and Marks

There are circumstances when one or other of the two ways of viewing a type becomes more important. Some types are used only as collections of objects and there are no values associated with them. The type mark for those types is irrelevant. Equally there are occasions in which a type is used where the set of objects is irrelevant. Any type matches the empty type "type end" which has no objects in it. The type mark of the matching type is still there and is used by the compiler.

This is important because of the matching rules for procedure parameters if one or more is a type. A procedure which takes a type as a parameter may use the formal parameter name in the signature of other parameters. For example a procedure may have signature

aproc: proc(atype: type end; x: atype)atype

This procedure takes two parameters, a type which may be any type, and a value which has the same type as the actual parameter. Its result also has this type. This kind of procedure is known as polymorphic. It can therefore be applied to

aproc(integer, 99)

in which case the result will have type integer or

aproc(string, "hello")

returning a string. This procedure might be the identity function which simply returns its second parameter (the value) as its result. What is happening is that the actual type parameter is matched to the formal parameter using the matching rules for types (the formal parameter must be a subset of the actual parameter), and then the type mark of the formal parameter is replaced with the type mark of the actual parameter in the other parameters and the result. The other parameters therefore match if they have the type mark of the actual parameter. The signature of the result is obtained by replacing the formal parameter's type mark by the actual parameter. It is also possible to obtain the type from the type marks of values, and this is used to remove the need to explicitly pass type parameters in many cases.

The reason for considering types both as sets and as marks is that it becomes possible to write polymorphic operations which make use of objects in types. For example a sorting procedure can be written which will work on any values provided they belong to a type whose values can be compared for ordering. How this is done will be described in detail in the section on procedures.

Syntax
<type signature> ::=

type <internal name> <signature list> end

<internal name> ::= <empty> | (<identifier>)
<signature list> ::= <empty> | <object list>
<object list> ::= <object> | <object>; <object list>
<object> ::= <identifier list> : <signature>
<identifier list> ::= <identifier> | <identifier>, <identifier list>

2.3.4. Exceptions

The fourth kind of object in Poly is the exception. The mechanism of exceptions is based on that of Standard ML.

Syntax
<exception signature> ::=

exception <implied parameters> <actual parameters>

Chapter 3. Expressions and Values

The basic element of a Poly program is the expression. An expression has a value and a signature which ensures that the value is correctly used. Expressions consist of identifiers and constructors and operations on them, either procedure applications or selections from types.

3.1. Identifiers

An identifier is a name which represents an object. The binding of a name to a particular object is made by a declaration. An identifier may be any string of alphanumeric characters starting with a letter, or a string of one or more "special" characters. The underline character "_" is considered as an alphanumeric. Each of the following are identifiers, separated by spaces.

a Message integer j + := >>>>>> L999a
An_extremely_long_identifier

The "special" characters are often used for infix operators, but can be used for anything. They are

! # %& = - + * : < > / \ ? ~ ^ | . @

Certain words are reserved and cannot be used as identifiers because they are used for special purposes. These are

and begin cand catch cor do early
else end exception extends if infix infixr
inline let letrec proc raise record struct
then type union while : == .

Identifiers written in different cases are regarded as distinct, except that reserved words may be written in either or mixed case. In this manual reserved words are always shown in bold font while identifiers are given in italics.

Syntax
< identifier> ::=

<letter> | <identifier><letter>|<identifier><digit>

Comments in Poly are written between curly brackets "{" and "}". Any text in the brackets is completely ignored and the whole comment is simply regarded as a separator between words in the same way as a space or a new line.

3.2. Selectors

A selector selects an object from a type.

integer$+

selects the "+" operation from the type integer, while

string$+

selects "+" from string.

Syntax
<selector> ::=

<identifier>$<identifier>|<selector>$<identifier>

3.3. Constructors

Constructors make values from other values. There are general constructors for procedures and types as well as three constructors which make special kinds of types: records, unions, and structures. There are also constructors for values which allow literal constants to be entered in a program.

1 999 "hello" 'A' 0xff

Literal constants are either numbers or strings of characters. Numbers are strings of digits or letters starting with a digit, and strings are any sequence of characters unclosed in quotation marks. By default numbers are converted to type integer and strings to either char if they are enclosed in single quotes ('), or string if they are in double quotes (").

3.4. Declarations

The result of any expression can be bound to an identifier by a declaration.

let result == 4+3* 2;

The identifier result can be used in place of the value that is bound to it.

result+6

will yield the value 16. As well as taking the value from the expression, the identifier also inherits its signature. The signature of result is therefore integer. This works for any expression including those which yield procedures or types.

let p == print;

declares p to be the same as print so

p 10;

will print the value 10.

An explicit signature may be given for an identifier.

let i: integer == 10;

The result of the expression must have this signature for the compiler to allow it. It is useful if a complex expression is being bound to an identifier to check the signature of the result when it is being bound rather than when it is used.

The identifier in an ordinary declaration is declared after the expression is evaluated.

let i == i+1

is valid provided i has been declared before. However when recursive procedures or types are being declared a different kind of declaration is needed.

letrec p == ....

letrec introduces a recursive declaration, and the p used in the expression will be the p that is being declared. Recursive declarations can only be used for procedures or types and will be described in more detail below.

Several declarations can be grouped together with and.

let a == 1 and b == 2

This declares both a and b. Grouping declarations together in this way is useful for mutually recursive declarations.

letrec p == .... and q == ....

Syntax
<declaration> ::=

let <binding> and .... and <binding> | letrec <binding> and .... and <binding>

<binding> ::= <identifier> : <signature> == <expression> | <identifier> == <expression>

3.5. Blocks

Commands can be grouped by enclosing them in the bracketing symbols begin and end or ( and ).

2* (3+4);

begin print "Hello"; print " again" end

A block can consist of several expressions separated by semicolons or just one. While begin and end or round brackets can be used in either case, it is usual to use begin and end to group several expressions together, and round brackets to group parts of an expression which are to be evaluated first. The value returned by the block is the value of the last expression. All the other expressions must return values with type void. Empty blocks are allowed and these return void.

Declarations may appear in the block as well as expressions. The identifier is then available in any of the other expressions after its declaration.

begin let x == 2; x + 3 end

This block returns the value 5. x is not available outside the block, but it is available in inner blocks.

begin
let p == print;
begin
let ten == 10;
p ten
end
end

An identifier declared in a block "hides" an identifier with the same name in a outer block.
Syntax
<block> ::=

begin <expressionlist> catchphrase end | ( <expressionlist> <catchphrase> ) | ( ) | begin end

<expressionlist> ::= <expordec>; ... ; <expordec>
<expordec> ::= <expression> | <declaration>

3.5.1. Conditionals

An expression can return different results according to the value of a test.

if 3 > 4 then 1 else 2;

The result of the conditional is the expression following then if the condition is true and the expression after else if the expression is false. In this case the result will be 2, since the condition is clearly false. The expression to be tested must have type boolean which contains the two values true and false. The two expressions returned by the then- and else-parts must be the same. The else-part may be omitted if the then-part returns a void result.

if x > 3 then print "yes"

Conditionals may return procedures or types but the then- and else-parts must both return values with compatible signatures.

if ... then integer$pred else integer$succ

The expression returns a procedure which takes an integer parameter and returns an integer result.

Syntax
<conditional> ::=

if <expression> then <expression>else <expression> |
if <expression>then <expression>

Related to the if-expression are cand and cor. Syntactically they behave like infix operators of precedence -1 and -2 respectively but they are actually reserved words.

x = 1 cand y =2

is the same as

if x = 1 then y = 2 else false

and

x = 1 cor y =2

is the same as

if x = 1 then true else y = 2

3.5.2. Repetition

An expression can be repeated while some condition holds.

while @x > 0 do x := pred(@x)

decrements x until it is zero, by repeating the second expression until the first returns false. The expression after the while must have type boolean and the expression after do must have type void. The result of a "while-loop" has type void.

The "while-expression" is sometimes convenient, but it is usually both clearer and more efficient to use a recursive procedure.

Syntax
<while loop> ::=

while <expression> do <expression>

 

Chapter 4. Procedures

A procedure is an encapsulated piece of program which may take some parameters and returns a result.

4.1. The Procedure Constructor

A procedure is made by the procedure constructor, called a lambda expression in some languages, which is a expression preceded by a procedure header. The procedure header gives the names and signatures of the parameters as they will be used in the expression and the signature of the result.

proc(i: integer)integer . i + 1

This is a procedure which takes a parameter called i in the block, which is a value of type integer and it returns a result which is a value of type integer. The expression returns a result which is one more than the parameter. This expression is evaluated when the procedure is called and so it is equivalent to the successor function for integer.

The procedure constructor is an expression which returns a procedure as its result. It can be used directly in an expression, but usually it is bound to an identifier.

let imax == proc(i, j: integer)integer . if i > j then i else j

The identifier is then used in an expression

imax(1, imax(2, 3))

4.2. Recursive Procedures

Recursive procedures are declared using letrec.

letrec fact == proc(i: integer)integer . if i = 1 then 1 else fact(i-1) * i

This has made the usual recursive definition of the factorial function. Recursive procedures are the preferred way of making loops and repeating expressions in Poly.

4.3. Operators

Procedures can be declared so that they can be used as infix operators. Infix operators have a precedence which determines how tightly they bind. For example, the expression

1* 2+3* 4

would return 20 if it were evaluated strictly from left to right, but yields 14 if it is evaluated using the normal algebraic rules. In this case the multiplication operator * is said to have a higher precedence than the addition operator +. In Poly the precedence of an infix operator is given as a number between 0 and 9, the higher the number the greater the precedence.

let rem ==
proc infix 7 (i, j: integer)integer . i - i div j * j

This declares rem to return the remainder after dividing i by j.

73 rem 4

In this case rem has been given a precedence of 7, which is the same as the multiplication and division operators. The precedence of the other operators is given in the description of the standard definitions. Operators with the same precedence declared with infix associate to the left. Operators can be made right associative by using infixr.

4.4. Polymorphic Procedures

The imax procedure declared above takes integer values and returns the larger of the two, which is of course also an integer. A similar procedure can be written to return the greater of two strings (in alphabetical order).

let smax == proc(i, j: string)string . if i > j then i else j

smax is exactly the same as imax except for the change in the names of the types. A similar procedure could be written for any type, provided of course that values of the type can be compared with a > operator. In Poly a single procedure can be written to handle all these cases, such a procedure is called polymorphic.

let pmax == proc(a_type: type(t) > : proc(t;t)boolean end; i, j: a_type)a_type .if i > j then i else j

It works by requiring an extra parameter, a_type, which is the type of the values (recall that types can be passed as parameters to procedures). The important thing about this type is that it must have a > operator which compares two values of the type and returns a boolean value. The type signature

type(t) > : proc(t; t)boolean end

expresses this constraint. The other two parameters and the result must be of this type. pmax can therefore be applied to any type which satisfies the constraint, and a pair of values of the type.

pmax(integer, 1, 2)

returns an integer result, while

pmax(string, "abc", "abd")

will return a string. However

pmax(integer, 1, "abc")
pmax(string, 3, 4)

will be rejected by the compiler because the signatures do not match.

max(boolean, true, false)

will also fail, because boolean does not possess a > operator.

4.5. Implied Parameters

It is not very convenient to have to write an extra parameter when calling polymorphic procedures, especially since it is just the type of the other parameters. Poly allows a polymorphic procedure to be written so that the type parameters need not be given explicitly but are passed implicitly.

let max ==
proc[a_type: type (t) > : proc(t;t)boolean end](i, j: a_type)a_type . if i > j then i else j

The type parameter in this case is enclosed in square brackets to indicate that there will not be a corresponding actual parameter.

max(3,4)

looks at the actual parameters, finds that they are integers and so passes the type integer implicitly.

max("abc", "bcd")

passes the type string.

max(3, "abc")

is incorrect because the parameters must have the same type.

Implied parameters are a very powerful facility. All the operators such as + and > are polymorphic procedures which take the type of their explicit parameters as an implied parameter. Their only action is to select and apply the appropriate procedure from the type (This does not mean that adding two integers together requires two procedure calls. These operations are implemented as inline procedures and the compiler optimises it down to a single "add" instruction.) For example, the definition of + in the standard header is

let + { addition } == proc early inline infix 6 [inttype : type (t) + : proc (t; t)t end] (x, y : inttype) inttype} . x inttype$+ y

The words early and inline are directives to the compiler. early tells the compiler that this procedure should be evaluated as soon as possible. This usually means that the compiler will attempt to execute it when it is compiled if its parameters are constants (Since procedures can have side-effects the compiler must not attempt to evaluate all procedures at compile-time. Consider, for example, a procedure which returns the current date and time). inline tells the compiler to insert the code for this procedure at the point of call rather than generate a procedure call. Both early and inline are hints to the compiler rather than instructions, and the compiler may choose to ignore either or both. \syntax{<procedure signature> . <expression>} { <procedure constructor> ::=<procedure signature> . <expression> }

Syntax
<procedure constructor> ::=

<procedure signature> . <expression>

 

Chapter 5. Exceptions

Normally expressions in a block are executed one after another until the end of the block is reached. There are occasions, however, when an unusual case occurs and an escape is needed.

let p == q div r

For example, a program containing a divide operation could possibly fail if r were zero. Explicitly checking for zero before making the division would be tedious and unnecessary in most cases, so what happens is that an exception is generated. Exceptions are error conditions together with a string which identifies the cause of the failure. Dividing by zero, for example, results in an exception with the string divideerror. An exception can also be generated by using raise.

raise an_error

generates an exception with the name an_error.

Exceptions generated in a block may be caught by a handler. A handler is given control when any exception in the block happens and either returns a result or raises another exception. The handler is a procedure whose parameter is a string, the exception name, and result must be compatible with the result the block would return if the exception had not happened.

begin
i div j
catch proc (name: string)integer
begin
print("Exception-");
print(name);
9999
end
end

This block returns the result of dividing i by j unless an exception occurs. In that case it prints out Exception- followed by the name of the exception, and returns the (large) value 9999.

The handling procedure can be any which has the correct signature, but frequently it is written as a procedure constructor after the word catch . Any exceptions raised by the handler are, of course, not caught by it, but appear in the next block out. In addition, if the block contains declarations they are not available to the handler. This is because an exception could occur while the declarations were being made so the identifier would have no value.

begin
let val == i div j;
let otherval == i+1;
catch proc (name: string)...
begin { Cannot use val or otherval here }
end
end

If an exception is not caught in a block it automatically propagates to the containing block. This in turn can handle it, or allow it to propagate to the next block out. An exception raised in a procedure but not caught in it causes the procedure to return and the exception appears at the point where the procedure was called. The calling block will catch the exception if it has a handler or it will propagate back further.

Syntax
<raise expression> ::=

raise <identifier>

<catch phrase> ::= catch <expression>

 

Chapter 6. Specialised Type Constructors

There are three specialised constructors which make different kinds of types. They are normally used to provide the "concrete" type which implements an abstract type. The development of abstract types will be described in the next chapter.

6.1. Records

A record type allows objects composed of a group of values to be put together and taken apart.

let int_pair == record (first, second: integer) } makes a type with the operations for making pairs of integers. The names first and second are known as field names and the signature, in this case integer is the field signature. The result of this declaration is a type int_pair has three operations in it, constr, first and second.

Every record has a constr procedure which takes objects with the field signatures and makes them into a record value. The constr in int_pair takes two integer values and packages them up as a value of the int_pair type.

let pair_val == int_pair$constr(1, 2);

The field names first and second are procedures called selectors that take apart values of the int_pair type and return the first and second values respectively.

int_pair$first(pair_val)

will return 1 and

int_pair$second(pair_val)

will return 2. Records can be made with elements of any signature and any number of elements.

let prec == record (val: integer; pr: proc (integer)integer);

makes a record to hold a value and a procedure. A value of this type can be made by

let prec_val == prec$constr(1, integer$succ)

and the selecting functions val and pr now return an integer value and a procedure respectively.

prec$pr(prec_val)(99) + prec$val(prec_val)

Note, however that each invocation of the record constructor, as with the other constructors, yields a type with a new unique type mark. This means that two record types with identical field names and signatures are regarded as different types. A more convenient syntax for selection is available which allows

pair_val.first pair_val.second

to be used with exactly the same meaning as

int_pair$first(pair_val) int_pair$second(pair_val)

This syntax is not restricted to record selection but can be used with any procedure that is an object in a type and takes one argument of that type. The meaning of X.Y is

X_type$Y(X)

where X_type is the type to which X belongs. So for example,

99.succ.print

is equivalent to

integer$print(integer$succ(99))

Syntax
<record constructor> ::=

record ( <field list> )

<field list> ::= <field> | <field>; <field list>
<field> ::= <identifier list> : <signature>
<identifier list> ::= <identifier> | <identifier> , <identifier list>

6.2. Unions

The record constructor makes types whose values are groups of objects. Another constructor, the union constructor, makes types whose values may have any of a set of signatures.

let int_or_str == union (int: integer; str: string)

This has created a type whose values can be either integers or strings. The names before the colons (int and str) are called tags and a tag and its signature (after the colon) is called a variant. An integer or string may be converted into this type by injection operations.

let int_form == int_or_str$inj_int(99)
let str_form == int_or_str$inj_str("hello")

The names of the injection operations are made by prepending the word inj_ to the tags. The original string and integer values can be obtained by projecting the union value.

int_or_str$proj_int(int_form)
int_or_str$proj_str(str_form)

The names of these operations are made in a similar way to the injection operations and return a value with the appropriate signature. Of course it is possible to apply the wrong projection.

int_or_str$proj_str(int_form)

Since int_form contains an integer it cannot be made to return a string, and so this operation will cause an exception with the name projecterror. To avoid getting exceptions, the union value can be tested to see if it is a particular variant.

if int_or_str$is_str(int_form) then ...

will not execute the expression after then because the test will return false. However

int_or_str$is_int(int_form)

will return true. The alternative syntax for fields of records can be used when projecting or testing unions.

int_form.proj_int
str_form
.proj_str
int_form
.is_int

As with records the variants may be procedures or types as well as values and it is possible to have two variants with the same signature.

let a_union == union (one, another: integer; p: proc (integer)integer)

The two variants one and another are different, so

a_union$proj_one(a_union$inj_another(99))

will result in an exception.

Syntax
<union constructor> ::=

union ( <field list> )

6.3. Structures

The third built-in type constructor makes structure types. Structures are very similar to records in that their values are composed of groups of objects. The difference is that there is an additional value nil in the type and there are operations to compare structure values. Structures are mostly used in recursive declarations to create lists and trees. In fact most structures can be represented using record and union constructors but they are useful enough to be provided separately.

letrec int_list == struct (hd: integer; tl: int_list)

This has created a type which can construct lists of integers. It has five operations together with the the nil value. constr can be used to make int_list values.

let a_list == int_list$constr(1, int_list$constr(2, int_list$nil))

The nil value is used to end the list. Without it there would be no way to construct a structure since a value of the type is needed before a node can be made. The selector procedures, hd and tl are used to select the parts of the structure in the same way as for a record.

int_list$hd(a_list) int_list$hd(int_list$tl(a_list))

If a selector is applied to nil an exception nilreference is raised, since there is no value that can be returned. There are two operations = and <> which compare two structure values. = only returns true if they the structures are identical, that is they were made with the same call of constr or they are both nil.

let b_list == int_list$constr(2, int_list$nil)

has made a list with the same hd and tl values as the tail of a_list but

b_list = a_list.tl

will return false.

Syntax
<structure constructor> ::=

struct ( <field list> )

 

Chapter 7. Type Constructor

As well as the using the constructors described above it is possible to make a type by extending an existing one. This usually involves adding new procedures or replacing existing ones.

let new_int ==
type (int) extends integer;
let sqr == proc (i: int)int . i*i
end

This declares new_int to be a type which is an extension of the existing type integer. The name in brackets, int, is used inside the constructor to represent the type being made. For instance the parameter and result of sqr both have type int. The result of this constructor is a type which has all the operations which integer had, but in addition it has a sqr procedure which returns the square of its parameter. This new type is different from integer so it cannot be used directly on values with the integer type. The conversion operation up must be used to make an integer value into a new_int one.

new_int$sqr(new_int$up(99))

There is a similar operation down which will convert values in the opposite direction

10 + new_int$down(new_int$sqr(new_int$up(11)))

These two operations are added to the new type when an old type is being extended to allow conversion of values from the old to the new types. They can be redefined if necessary or, as we shall see, "hidden" so that conversion of values is not possible.

The above example shows how a new type can be made which is slightly different from an existing one.

7.1. A New Type

The same approach is used to construct a completely new type. We have already seen that a record can be used to make a pair of integers and this pair can be extended to make a double precision integer type. Suppose that the maximum range of numbers which could be held in a single integer was from -9999 to 9999. Then a double-precision number could be defined by representing it as a record with two fields, a high and low order part, and the actual number would have value (high)*10000 + (low). This can be implemented as follows.

let dp ==
type (d) extends record (hi, lo: integer);
let succ ==
proc (x:d)d
begin
if x.lo = 9999
then d$constr(succ(x.hi), 0)
else if x.hi < 0& x.lo = 0
then d$constr(succ(x.hi), ~9999)
else d$constr(x.hi, succ(x.lo))
end;
let pred ==
proc (x:d)d
begin
if x.lo = ~9999
then d$ constr(pred(x.hi), 0)
else if x.hi > 0 & x.lo = 0
then d$constr(pred(x.hi), 9999)
else d$constr(x.hi, pred(x.lo))
end;
let zero == d$ constr(0,0);
let iszero == proc (x:d) boolean . x.hi = 0 & x.lo = 0
end;

This is sufficient to provide the basis of all the arithmetic operations, since +, -, * etc. can all be defined in terms of succ, pred, zero and iszero. Of course they can be included in the type if required.

7.2. Information Hiding

As it stands this type includes the operations hi, lo and constr which were inherited from the record type as well as the new operations. These old operations are a nuisance, they are not part of the double-precision type as such and they provide a security risk since it would be possible for someone to produce a value which appeared to be a double-precision number but, for example, had a positive high order part and a negative low order part. Unwanted operations can be masked out by giving an explicit signature which contains only those operations which are actually required.

let dble:
type (d)
succ, pred: proc (d)d;
zero: d;
iszero: proc (d)boolean
end
== dp;

This has created a new type dble which takes objects from dp but only takes those which are explicitly given in the type signature. It is impossible to create a value of the dble type or take it apart except with the given operations. An alternative would have been to have given the explicit signature in the original declaration.

let dp:
type (d)
succ, pred: proc (d)d;
zero: d;
iszero: proc (d)boolean
end
==
type (d) extends ... { The body of dp as before. }
end

 

7.3. Conversions

This double-precision type suffers from the problem that the only constant value is zero. All other values have to be made by using succ or pred. It would be convenient if other constants could be made. One way would be to define a procedure inside the type constructor which would convert an integer value into a dble one.

let make_double == proc (int: integer)d. d$constr(0, int)

This assumes that no integer value is greater than 10000. If larger integer values are possible then the body of the procedure would be

d$constr(int div 10000, int mod 10000)

integer values can now be made into dble ones.

dble$make_double(42)

The maximum value is limited by the maximum possible integer, so very large double-precision numbers still cannot be made. It would be nice to be able to have large literal constants such as 12345678 in a program. A solution to this is to convert literals directly from their string representations i.e. from the string "12345678". This is done by defining a conversion procedure with the name convertn inside the type.

let convertn ==
proc (rep: string)d
begin
letrec getch ==
{ Returns the result of converting the first i characters. }
proc (i: integer)d
begin
if i = 0
then zero
else
begin
let this_ch == rep sub i; { Obtains the ith. character }
if this_ch < '0' | this_ch > '9' { Must be a digit }
then raise conversionerror
else
{Convert the first i-1 characters}
{then multiply by 10 and add in this digit}
getch(i-1)* d$ make_value(10) + d$ make_value(ord(this_ch) - ord('0'))
end
end;
getch(string$ length(rep))
end

This procedure reads the string and converts it into the numeric value. If any of the characters is not a digit then it raises the exception conversionerror. We assume that + and * operations have been defined for the type.

With this operation it is possible to write expressions like

dble$12345678 + dble$99999

The compiler automatically generates a call to dble$convertn when it recognises these constants. It is usual to declare conversion routines as early so that the compiler will do the conversion, rather than leaving the conversion until the program is run. If a number is not preceeded by a type name then the conversion used is the value of convertn which is in scope. The standard header contains the binding

let convertn == integer$ convertn

so that numerical constants are converted to integer by default.

There are two other conversion operations, convertc for strings in single quotes, and converts for strings in double quotes. These default to char$convertc and string$converts respectively.

7.4. Generic Types

Types in Poly can be treated as ordinary values. We have already seen how the ability to pass types as parameters to a procedure allows polymorphic operations, we shall now see how being able to return a type can be useful.

A type which could be used to hold lists of integer values was described above. It was defined as

letrec int_list == struct (hd: integer; tl: int_list)

A type for lists of strings would be almost identical.

letrec str_list == struct (hd: string; tl: str_list)

Indeed lists of any type could be defined in the same way. The signature of the type in each case is basically the same.

type (list)
hd: proc (list)integer;
tl: proc (list)list;
constr: proc (integer; list)list;
nil: list;
<>, = : proc (list; list)boolean
end

We can define a list type for an arbitrary element type using a procedure.

let list ==
proc (element_type: type end)
type (list)
hd: proc (list)element_type;
tl: proc (list)list;
constr: proc (element_type; list)list;
nil: list;
<>, = : proc (list; list)boolean
end .
begin
letrec list_type == struct (hd: element_type; tl: list_type);
list_type
end

This procedure can be applied to any type, since any type matches the empty type "type end".

let int_list == list(integer);
let str_list == list(string);
let dble_list == list(dble);

The result is always a list with the same operations, but different signatures.

let a_list == int_list$ constr(999, int_list$ nil);
let b_list == str_list$ constr("hello", str_list$ nil);

The list types are different types, so only operations of the correct type are possible.

int_list$ hd(a_list);
str_list$ hd(b_list)

are valid, but

int_list$ hd(b_list);
int_list$ tl(b_list);
let c_list == int_list$ constr(999, b_list)

are not.

Syntax
<type constructor> ::=

type <internal name> <declarations>
<extension> <declarations> end

<internal name> ::= (<identifier>) | <empty>
<declarations> ::= <dec list> | <empty>
<dec list> ::= <declaration> | <dec list>; <declaration>
<extension> ::= extend <expression> | <empty>

 

Chapter 8. Standard Definitions

Poly is extremely flexible because much of the system is built on top of the language rather than built into it. It can be changed as required by redefining or adding new definitions. The standard definitions contain types and procedures which are likely to be of use to many programmers. For efficiency reasons some are written in assembly code or are handled specially by the code generator, but they all have signatures like ordinary definitions and can be redefined if required.

8.1. Primitive Types

8.1.1. void

void is used as a form of place-holder when a type is expected. For example, procedures which have side effects but no result are considered as returning a value of type void. It has only one value empty, and its signature is simply

void :
type (void)
empty : void
end

8.1.2. boolean

Boolean is the type used in tests. It has two values true and false. The complete signature is

boolean :
type (boolean)
true, false : boolean;
& : proc infix 4(boolean; boolean)boolean;
| : proc infix 3(boolean; boolean)boolean;
~ : proc (boolean)boolean;
<>, = : proc infix 5(boolean; boolean)boolean;
repr : proc (boolean)string;
print : proc (boolean)
end

The &, | and ~ operations correspond to the normal boolean operations AND (the result is true only if both the arguments are true), OR (the result is true if either arguments are true) and NOT (the result is true if the argument is false and vice-versa). <> and = compare the two arguments and can be regarded as exclusive-OR and exclusive-NOR respectively. repr returns the string "true" if the argument is true and "false" if it is false. print prints the string representation on the terminal.

8.1.3. integer

The type integer is the basic type used for numbers. Its signature is

integer :
type (integer)
first, last, zero : integer;
+, - : proc infix 6(integer; integer)integer;
* , div, mod : proc infix 7(integer; integer)integer;
pred, succ, neg : proc (integer)integer;
~ : proc (integer)integer;
<, <=, <>, =, >, >= : proc infix 5(integer; integer)boolean;
convertn : proc (string)integer;
repr : proc (integer)string;
print : proc (integer);
end

first and last are the minimum and maximum values that an integer can have. last is frequently one less than the negative of first.

+ and - are the usual infix addition and subtraction operations. They raise the exception range if the result is outside the valid range.

* is the infix multiplication operator which also raises range is the result is out of range.

div is the division operator and mod returns the remainder. They both generate divide if they are asked to divide by zero, and div may generate range when first is divided by minus one.

pred and succ respectively subtract and add one to a number, raising range if the result is out of range.

neg returns the negative, raising range if its argument is first.

~ is the same as neg.

<, <=, <>, =, > and >= are the usual infix comparison operations.

convertn is the operation which converts literal constants into integers. It recognises strings of digits as decimal (base 10) values unless the first character is a '0' in which case it treats it as an octal value or hexadecimal if it starts with '0x'. conversion is raised if the string does not fit one of these forms or rangeerror if it is too large.

repr performs the reverse of convertn by generating a string from a number. It is always generated as a decimal number.

print prints the string representation on the terminal.

8.1.4. long_integer

long_integer is very similar to integer but it allows larger numbers to be handled. Its signature is

long_integer :
type (long_integer)
first, last, zero : long_integer;
+, - : proc infix 6(long_integer; long_integer)long_integer;
* , div, mod: proc infix 7(long_integer; long_integer)long_integer;
pred, succ, neg: proc (long_integer)long_integer;
~ : proc (long_integer)long_integer;
<, <=, <>, =, >, >= : proc infix 5(long_integer; long_integer)boolean;
convertn : proc (string)long_integer;
repr : proc (long_integer)string;
print : proc (long_integer);
from_integer : proc (integer)long_integer;
to_integer : proc (long_integer)integer;
end

The signature is the same as that of integer with the addition of from_integer and to_integer which convert between integer and long_integer. to_integer generates a rangeerror exception if the value is too large to fit into an integer.

8.1.5. char

The type char is the type of character values. It has signature

char :
type (char)
first, last : char;
<, <=, <>, =, >, >= : proc infix 5(char; char)boolean;
convertc : proc (string)char;
pred, succ : proc (char)char;
repr : proc (char)string;
print : proc (char);
end

Characters are regarded as being ordered according to the underlying character code. The ordering will usually follow alphabetic order. first and last are the smallest and largest characters and pred and succ give the previous and succeeding characters according to the ordering. pred and succ raise the range exception if a value would be produced outside the range. The comparison operations compare values according to the ordering.

8.1.6. string

Character strings have type string.

string :
type (string)
mk : proc (char)string;
<, <=, <>, =, >, >= : proc infix 5(string; string)boolean;
converts : proc (string)string;
length : proc (string)integer;
print : proc (string);
repr : proc (string)string;
+ : proc infix 6(string; string)string;
sub : proc infix 8(string; integer)char;
substring : proc (string; integer; integer)string
end

mk converts a character into a single length string, while sub selects a character at a particular position. The character positions are numbered from 1 to the length of the string, returned by length. Selecting a character outside this range results in a subscript exception. Subcripting a zero length string will therefore always result in an exception. substring extracts a string from another. It takes as parameters a string, an integer which gives the starting position in the string, and a second integer which gives the number of characters to select.

string$substring("hello", 3,2);

results in the string "ll". If the first parameter is outside the string or there are not enough characters in the string then subscript is raised. Two strings can be concatenated by +.

8.2. Variables and Vectors

So far the language described has been purely applicative, that is procedures can be applied to values, but there is no way to change the value associated with an object. Variables and vectors can be created and used in Poly but they are not built into the type system.

8.2.1. new

Variables are created by the procedure new which has the following signature.

new : proc [base : type end ] (base)
type
assign : proc (base);
content : proc ()base
end

new is a procedure which takes a value of any type and returns a type with two operations assign and content as its result. For example,

let v == new(99);

declares v as a type with signature

v: type
assign : proc (integer);
content : proc ()integer
end

The type is here being used as a way of packaging together a pair of procedures, there is no such thing as a value of this type.

The parameter type of assign and the result of content were found from the type of the original argument (99 has type integer). The current value associated with the variable is found using the content procedure.

v$content()

will return 99, the initial value associated with it. The value can be changed using assign.

v$assign(v$content()+1);

sets the value to 100.

Variables can be passed as parameters and returned as results from procedures like any other value. However, note that

let vv == v;

makes vv the same value as v which means that it refers to the same variable, and hence changes to vv will affect the value returned from v and vice versa.

It is not necessary to write "$content()" after every variable name in order to extract its value, the compiler will attempt to call the content object of a type if it is given one when it expects an ordinary value. There is also an infix assignment operator defined in the standard header which allows use of the normal syntax for assignment.

v := v+1

is therefore equivalent to

v$assign(v$content()+1)

8.2.2. vector

vector is a procedure which creates an array of variables.

vector: proc [base : type end ] (size: integer; initial_value: base)
type
sub: proc (integer)
type
assign : proc (base);
content : proc ()base
end;
first, last: integer
end

It takes as parameters the size of the array (i.e. the number of variables) and a value which is the initial value for each.

let v == vector(10, "init")

A particular variable is selected by applying the sub procedure to a number between 1 and the size (the index). The result will be a variable which can be assigned a value, or its value can be read.

v$sub(4)
v$sub(5) := "new string"

Attempting to apply sub to a value outside the range causes a subscript exception.

first and last are two integer values that are set to the minimum and maximum index values (1 and the size respectively). If the size parameter given to vector is less than 1 it will raise a range exception.

8.3. Iterators

Many programs involve the processing of lists or sets of values processing each one or searching for one which satisfies some condition. The standard header contains definitions to make these easier. All of these work using a standard interface, a type, called an iterator which represents an abstract sequence of values. An iterator has the following signature.

type (iterator)
continue : proc (iterator)boolean;
init : proc ()iterator;
next : proc (iterator)iterator;
value : proc (iterator)base_type
end

Values of the iterator type are elements of a sequence such that each has a value of some base type associated with it and a way of getting to the next element. They can be regarded as elements of a list, but equally they can be a range of integer values. init generates the first element of the sequence, and continue tests it to see if is a valid entry (the sequence may be empty or exhausted). If it is valid then value may be used to extract the associated value and next used to return the next element in the sequence. To see how this works we will examine two procedures which use iterators.

8.3.1. for

The for procedure is designed to apply a given procedure to every member of a sequence. Its signature is

for : proc [base : type end ]
(iterator :
type (iterator)
continue : proc (iterator)boolean;
init : proc ()iterator;
next : proc (iterator)iterator;
value : proc (iterator)base
end;
body: proc (base))

It takes an iterator and applies the procedure body to each element in turn. The body of for in Poly is

begin
letrec successor ==
{ Loop until the condition is false }
proc inline (counter: iterator)
begin
if counter.continue
then
begin
body(counter.value);
successor(counter.next)
end
end { successor };
successor(iterator$init()) { The initial value of the iterator. }
end { for };

The successor loops generating elements of the sequence and applying body to each value until the sequence is exhausted.

8.3.2. first

The other procedure which operates on iterators is first which searches a sequence until a condition is found. It has signature

first : proc [base, result: type end ]
(iterator :
type (iterator)
continue : proc (iterator)boolean;
init : proc ()iterator;
next : proc (iterator)iterator;
value : proc (iterator)base
end;
test: proc (base)boolean;
success: proc (base)result;
failure: proc ()result
)result

As well as the iterator, first takes three other explicit parameters, all procedures. The first is the test which is applied to each value. If it succeeds (returns true) then the success procedure is called with the value as its parameter. If the sequence is exhausted before the test has succeeded the failure procedure is invoked. The result of first is the result of either success or failure.

Chapter 9. Compiler and Environment

This part of the system is still under development and is not guaranteed to remain stable. Parts of it are also heavily UNIX dependent.

The current environment support provides facilities for compiling text files and remaking a system from its composite modules, compiling those which have been modified. There is a simple history mechanism for re-executing commands.

The system is used interactively with Poly expressions and declarations being typed in by the user and the reponses printed by the computer. Poly is used as a command language as well as a programming language, so all commands are simply Poly procedure calls and have their signatures checked by the compiler. Commands must either return values of type void, in which case they are simply executed, or they must return values of a type which has a print operation so that the result can be printed. Variables and procedures with no parameters are allowed provided their results are void or can be printed.

9.1. environ

environ is the type which is the nearest equivalent to a file directory in Poly. It has signature

environ :
type (environ)
enter : proc (environ; string; declaration);
lookup : proc (environ; string)declaration;
delete : proc (environ; string);
print : proc (environ);
in : proc (
type
enter : proc (string; declaration);
lookup : proc (string)declaration;
delete : proc (string);
over : type (iter)
continue : proc (iter)boolean;
init : proc ()iter;
next : proc (iter)iter;
value : proc (iter)declaration
end
end
)environ;
out : proc (environ)
type
enter : proc (string; declaration);
lookup : proc (string)declaration;
delete : proc (string);
over : type (iter)
continue : proc (iter)boolean;
init : proc ()iter;
next : proc (iter)iter;
value : proc (iter)declaration
end
end
end

declaration is a type which the compiler uses to represent objects that it has created.

A value of the environ type is a set of procedures which map strings onto declaration values. The compiler uses the value of current_env as the environment in which to compile something. It uses the lookup procedure to find the value and signature of identifiers and calls enter to store the result of making declarations. A particular value of the environ type is made by using the in procedure to package up a type with the appropriate operations. The inverse operation out can be used to extract the type.

There is a procedure mkenv which can be used to create environ values. It has signature

mkenv : proc (environ)environ

It returns an environment which can be seen as an extension of the environment which was given as the parameter. New declarations result in entries in this new environment and they can be found by using the identifier. However, looking up an identifier which has not been declared in this environment results in a search in the environment originally passed as the parameter. This can be regarded in the same way as nested declarations in Poly where an identifier is first looked up in the current block and if it is not found there the enclosing blocks are searched. Typically mkenv is called with either the current environment or the global environment as parameter.

let new_env == mkenv(current_env);
current_env := newenv;
let new_env == mkenv(global_env);

The global environment contains declarations such as integer which it is expected that nearly all programs will require.

The computation involved when entering or looking up an identifier may be considerably more than just operating on a table. The make procedure, for example, uses an environment in which looking up an identifier may involve recursive calls to the compiler to compile the object.

9.2. ?

? prints the signature of an object which has previously been declared. It has signature

? : proc (string)

For example, the statement

? "?";

prints

? : proc (string)

It is useful to be able to check the signature of an object before using it.

9.3. #

# runs a text file through the compiler and executes the result. It has signature

\# : proc (string)

At present the string parameter it takes is an ordinary UNIX file name, without any processing of wild-cards.

9.4. sh

sh runs a line of text through the UNIX shell. It can be used to execute any command, including starting up interactive programs. It has signature

sh : proc (string)

For example,

sh "emacs fred";

will start up and run the "emacs" editor on a file called "fred". The Poly system will wait until the process is finished before continuing.

9.5. make

The make command in Poly is similar in function to the "make" command under UNIX. It constructs a Poly object by recompiling only those parts of it which have changed since it was last made.

It is generally good programming practice to break a large program down into several parts, usually called modules, and develop each independently. A module usually provides several related functions and so can be represented in Poly as a "type". Such types may or may not have values belonging to them. For example, a module to construct stacks could be the type "stack" and all stacks would be of that type, but a module for a set of trigonometrical functions would be simply a set of related procedures.

A module may be complete in itself or require other modules to make it work. The latter case is represented in Poly by a procedure which takes some types as parameters and returns a type as the result. So, for example, a module for a parser may use modules for the symbols and for the parse tree.

An important point about these modules is that each can be compiled independently and then the program can be made by applying the modules which are procedures to their parameters. The process of applying a module to other modules is known as binding. Like any other procedure application in Poly it is subject to the normal rules for signature matching.

When a module is changed, for example to correct a bug, it must be recompiled and rebound. The purpose of the make procedure is to ensure that everything which must be recompiled has been and to rebind all the necessary modules. Note that a change to the signature of the module may require changes to other modules that use it, otherwise a signature fault may be generated by the compiler. A change of signature may not always require all the using modules to be recompiled. For example, a module which is a type may have several operations used by different using modules. Changing the signature of one of these operations will require changes only to those modules which actually use that operation.

The make procedure assumes that the source text of the modules is held in some UNIX text files in a set of related directories. As an example suppose we have a set of modules which are combined in the following fashion to make a program.

let a == b(c, d);
let e == f(g, h);
let i == j(a, e, h);
let z == k(i, e);

z is the result of binding the modules together and is the final program. The source text is arranged in a series of directories with the root directory called z.

z contains k, i and e and h.
z/k is the source text for k.
z/i is a directory containing j and a.
z/i/j is the source text for j.
z/i/a is a directory containing source files b, c and d. }
z/e is a directory containing source texts f and g.
z/h is the source text for h.

In addition each directory has a file called poly_bind which are the instructions for binding together the modules to make the result.

z/poly_bind contains "let z == k(i, e);"
i/poly_bind contains "let i == j(a, e, h);"
e/poly_bind contains "let e == f(g, h);"
a/poly_bind contains "let a == b(c, d);"

Supposing h has been modified and we wish to remake z. The command

make "z";

looks for a file "z" and examines its access permission. It discovers that it is a directory and so tries to compile the file "z/poly_bind". This contains the command

let z == k(i, e);

For each identifier in the command it looks up a file with that name in the current directory and only if that fails does it treat it as an ordinary identifier. k is a text file so it compares the time that it was last modified (kept by the operating system) with the time on which an identifier called k was last declared (kept by the Poly system). It sees that the file has not been modified since k was declared so it uses that declaration. If it had found that the file was newer it would recompile k (by a recursive call to the compiler) before returning the newly compiled version. It does not perform any other consistency checks relying on the type checking to ensure that k really is a procedure which can correctly be applied to i and e.

It next encounters i which it discovers is a directory and so it executes the file z/i/poly_bind. j is treated in the same way as k, but a is again a directory. It recurses again to process a and checks b, c and d. Finding that all these are text files and are up to date and that a is newer than each of them, it concludes that a is up to date and uses its current value without rebinding.

e, being a directory, is processed in the same way as a. f and g are both found to be up to date, but h is not found in the directory. The directories are regarded as nested blocks so that if a file is not found in the current directory the make program looks in the immediately enclosing one (i.e. the parent directory). It fails to find h in i and so tries z. There it finds the source text for h and discovers that it has been modified and must be recompiled. It recompiles it, returning the newly compiled h as its result. e must now be rebound so the declaration is executed and the new value returned as the result.

The next identifier in the declaration of i is h itself. The program remembers that h has been checked and uses the new value, rather than repeating the check on when the files were modified. It does this whether it has recompiled the file or just checked that it does not need recompiling. It executes the declaration of i because e and h have been remade and returns this as its result.

In the declaration of z the next identifier is e. Again it uses the fact that e has been checked to save processing the declaration of e again. Finally it can rebind z and the construction is complete. If make is rerun immediately after this it will simply check everything and not rebind any of the files.

Note that each file must be "in scope" when it is required. Because h is used by both i and e it must be in the path to both of them i.e. in the z directory.

9.6. Persistent Storage

The Poly system runs under a persistent storage system, that is any declarations of identifiers or values in variables can be retained from one session to the next on permanent storage. The database is held on a file and objects are read in from it as required. Once read in they are retained in store until the end of the session when those which are to be retained are written out again. The criterion for writing something out to the database is whether it is reachable from the root procedure which is the one used when Poly is started up. In the normal Poly system this essentially means that any declarations made in the global environment will be retained. When the user exits normally from Poly all the reachable objects are written back and the database is updated. The database can also be written back by executing the procedure commit(); which writes back the database and exits from Poly. It is currently not possible to write the database and continue.

9.7. history

The normal Poly system reads commands from the input stream, usually the terminal, and compiles and executes them. It also remembers the last few commands typed so that they can be re-executed if necessary. The commands in the table can be printed by the history procedure.

history();

There are three procedures which execute commands from the history table. Each command prints the command before executing it, and also enters the command it will execute in the history table. The previous command can be executed by the !!procedure.

!!();

Another command can be executed using the !- procedure. It has signature

!- : proc (integer)

The integer parameter is the number of the command counting back from the current one, so

!- 1;

is equivalent to

!!();

The third command ! has signature

! : proc (string)

The string is the first few characters of the command to be executed, so to re-execute the last declaration,

! "let";

can be used. The command found is the first one whose characters match, working from the last command back. polyml-5.7.1/documentation/Papers/poly/overview.html0000644000175000017500000007735713204034553021644 0ustar daviddavid An Overview of the Poly Programming Language

This document was presented at the First Workshop on Persistent Objects, Appin, Scotland in August 1985 and published as a Cambridge University Technical Report (TR99) in November 1986.

An Overview of the Poly Programming Language

David C.J. Matthews

Poly is a general purpose programming language based on the idea of treating types as first-class values. It can support polymorphic operations by passing types as parameters to procedures, and abstract types and parameterised types by returning types as results. Although Poly is not intended specifically as a database programming language it was convenient to implement it in a persistent storage system. This allows the user to retain data structures from one session to the next and can support large programming systems such as the Poly compiler and a Standard ML system.

1. Poly and its Type System

Poly[Mat85] is based on the idea of types as first class values first used in the language Russell.[Dem79] In the terms used by Cardelli and MacQueen[Car85] it uses the abstract witness model of a type. Treating a type this way means that polymorphism, parameterised types and modules are all handled by the general concept of function application.

1.1 Types as Values

A type in Poly is a set of values, normally functions. For example the type integer has operations +, - etc. Other types may have these operations, the type real also has + and - but will not have a mod (remainder) operation. The operations need not be functions, integer also has zero, first and last which are simple values, and other types may contain types. All values in Poly have a signature, called a specification in earlier reports, which is only used at compile-time. It is the analogue of a type in languages like Pascal and corresponds in many ways to the idea of a type in Ponder\cite{Ponder}. There are three classes of value in Poly, the simple value which corresponds to what are normally thought of as values in, say Pascal, numbers, strings, vectors etc.; the procedure or function which operates on values and the type which is a set of values. Each kind of value has a signature. To show why this view of types is useful we will consider some properties of other languages, and how they are handled in Poly.

1.2 Polymorphism

A polymorphic function is one that can be applied to values of many different types. The phrase is sometimes used where overloading would be more appropriate, for example the + operator in Pascal. In Pascal, or languages like it, there are operators which can be applied to values of more than one data type and their meanings are different according to the type of their arguments. They can be thought of as a set of overloaded operators in the same way as operators in Ada can be overloaded. Truly polymorphic functions are somewhat different. They are functions which are applicable to values of a wide variety of data types, including types which may not exist at the time the function is written. The fundamental difference is that a new polymorphic function can be written in terms of other polymorphic functions, while a function written in terms of overloaded functions must be defined for each data type even if the program is the same for each. For example

function min(i,j: integer):integer
begin
if i < j then min := i else min := j
end
;
function
min(i,j: real):real
begin
if i < j then min := i else min := j
end;

The ML [Mil84] programming language provides polymorphic operations on an all-or-nothing basis. This allows one to write an identity function which simply returns its argument, and this function is applicable to values of any type. One can also write functions which operate on lists of any type or on functions of any type. This generally works very well but has problems when one wants to write an operation which operates differently on different data types. For example it is still necessary to overload = since comparing two integers is different to comparing two lists of real numbers. The min function cannot be written as a single function in ML. What is required is a way of writing operations which are type-dependent.

A type in Poly is characterised by the operations it has. Both real and integer have < operations though they will be implemented in different ways. Many other types may have < operations since Poly allows the user to make new types. Poly allows a function to be written which selects certain operations from a type and values of any type with those operations can be used as a parameter. For example there is a single < function which works on types which have a < operation and simply applies the operations to the arguments. The effect is as though < were being overloaded. However, we can write a function in terms of this, such as the min function. This will also work on values of any type which has a < operation. For example, min is a function which will work on values of any type with the < operation. Such a type has signature

type (t) < : proc(t;t)boolean end

This type has an operation, <, which takes two values and returns a boolean. We will first write a version of min which takes three parameters; a type and two values of this type and returns a value of the type. It has signature:

proc(t: type (t) < : proc(t;t)boolean end; t; t)t

We can write the whole function.

let min ==
proc(t: type (t) < : proc(t; t)boolean end; x, y: t)t
begin
if
x < y then x else y
end;

It can be applied to integer values

min(integer, 1, 2)

or string values

min(string, "abc", "abd"

or values of any type with a < operation. The first parameter is a type which must have a < operation which compares two values of the type, and the second and third parameters must be values of the type. When we call

min(integer, 1, 2)

the actual parameters are matched to the formal parameters from left to right. First the types are matched by checking that the type given has the appropriate operation, and then the values are matched. They are not of course the same type as t, since they have type integer, but we invoke a matching rule which says that if we have matched an actual type parameter to a formal type then we can match values of corresponding types. In addition the type of the result becomes matched so that the result has type integer. This can be thought of as a systematic renaming of t with integer.

1.3 Implied Parameters

Having to pass the types explicitly is often a nuisance so there is a sugared form which gives a way of omitting the types and having the compiler insert them automatically using the types of the parameters. The only difference to the definition of the function is that the types are written in square brackets before the other parameters. The definition of min would then be:

let min ==
proc
$[$t: type (t) < : proc(t; t)boolean end$]$ (x, y: t)t
begin
if x < y then x else y
end
;

It can be used by just giving the values.

min(1, 2);

min
("abc", "abd");

This sugaring also allows us to define operators such as + and < which simply apply the operation with the same name from the types of their arguments giving the effect of overloading.

let + ==
proc infix 6 $[$t: type (t) + : proc(t; t)t end$]$ (x, y: t)t
begin
t$+ (x, y)
end;

2. Parameterised Types

So far we have seen how having types as parameters to a procedure allows us to write polymorphic operations. Types can also be returned from procedures and this provides a way of defining types which are parameterised by either types or values. As an example, suppose we wanted to construct an associative memory in which to store values of arbitrary type together with a number which would identify each. This could be defined as follows

let associative ==
proc(element: type end)
type (assoc)
enter: proc(assoc; integer; element)assoc;
lookup: proc(assoc; integer)element;
empty: assoc
end
begin
type (assoc)
extends struct(next: assoc; index: integer; value: element);
let empty == assoc$nil;
let enter ==
proc(table: assoc; num: integer; val: element)assoc
begin
assoc$constr(table, num, val)
end;
letrec lookup ==
proc(table: assoc; num: integer)element
begin
if table = assoc$nil
then raise not_found
else if table.index = num
then table.value
else lookup(table.next, num)
end
en}
end;

This is a very simple minded definition but it illustrates the point. We start by giving the header of the procedure which includes the signature of the argument, in this case that element is a type but that any type will do, and the signature of the result. The result is a type with three objects, a value which denotes the empty table and procedures to enter and look up items from the table. It is implemented in terms of a struct (a record with a nil value and equality) which makes up a list of index/value pairs. enter just returns a new list with the new pair "cons-ed" onto the front (We could have written simply let enter == assoc$constr; since the arguments are in the same order). A better implementation would check to see if there was already an entry with that index and return a list with the old entry replaced by the new one. lookup searches the list for an entry with the required index and either returns the value or raises an exception.

There is no particular reason why we should use integers as the indexing value, it would be perfectly possible to use any type which had an equality operation. The procedure header would then be

proc(element: type end;
index_type: type (i) = : proc(i;i)boolean end)...

with integer replaced everywhere in the body by index_type. A more efficient implementation for index types with an ordering would be to use binary trees rather than lists. We would then have to add a > or < to index_type, or at least replace the = by one of these. Now, since types are values we could incorporate an if-statement into the procedure and use one or other of the implementations depending on the value of a further parameter. We might want to do this because one implementation may be more efficient for, say, small tables and the other for larger ones. For the example we will assume a parameter use_binary_tree. The procedure will now look something like this.

proc(element: type end;
index_type: type (i) = , < : proc(i;i)boolean end;
use_binary_tree: boolean)...
begin
if use_binary_tree
then
type .... {Binary tree implementation}
end
else
type .... {List implementation}
end
end

This could now be called as

let a_table == associative(string, integer, true);
let another_table == associative(string, integer, size > 30);

In the second case the expression may not be able to be evaluated when the call to the procedure is compiled, but this does not matter. We do not know at compile-time which of the two implementations of the type will be used, but we know that either of them have all the operations required so they will do equally well. There is however a problem with this idea of types which this example shows quite nicely. Since the expression may not be evaluated at compile-time how do we know when two values have the same type? The type system must ensure that we apply the lookup procedure which understands the representation of the particular associative memory. It would be catastrophic to try to look up a value assuming that the value represented a tree when it was in fact a list. We need the type system to assure us at compile-time that the expressions

let y == X$enter(X$empty, 1, "hello");
X$lookup(y);

where X stands for a type or type-returning expression, will not give faults at run-time because of a mistake in interpreting the representations. There are several possible approaches to the problem of which Poly and Russell illustrate two. In Russell values can have types such as

associative(string, integer, size > 30)

provided nothing in the expression involves a global variable (Variable in this context means something whose value can be changed by assignment.) This essentially means that all functions have to be "variable-free", not just those which directly return types. Given this restriction it is possible to say that if two expressions are syntatically the same in a given context then they return the same value. If however, size were a variable, or associative looked at the value of a global variable, then we could not say with certainty that two values with type

associative(string, integer, size > 30)

had the same type. Taking a purely synatactic view means that expressions like

associative(string, integer, 2 > 1)

and

associative(string, integer, true)

are not the same type. In Poly types are only regarded as the same if they are the same named type. So while values with types which are expressions can sometimes be produced there is very little that can be done with them. To be useful a type-returning expression has to be bound to an identifier.

let a_table == associative(string, integer, true);
let a_val == a_table$enter(a_table$empty, 1, "hello");
let another_table == associative(string, integer, true);
let another_val == another_table$enter(another_table$empty, 1, "hello");

a_val and another_val have distinct types a_table and another_table.

A side-effect of this is that "types" such as

list(integer)

cannot be used directly. We have to write

let int_list == list(integer);

and then use int_list as the type. However this is not such a problem as might at first appear. Since we can write functions which take implied parameters we can write an append function which will work on values of any type with the appropriate hd, tl etc., irrespective of their actual implementations.

3. Modules

A module is conventionally thought of as a collection of types and functions which can be separately compiled. It has an interface which is the types of these functions so that other modules can make use of it without having to know the precise implementation.

Types in Poly can be thought of in the same way. A type is a collection of operations and its signature gives their "types" (We usually think of a type as being something like integer which has values, but a type in Poly can be any collection of objects. So a collection of floating point functions sin, cos etc. could be combined as a type even though there is no such thing as a value of this type.). A module which makes use of other modules, imports them in conventional terms, can be represented as a procedure which is applied to types and returns a type. One of the big advantages of this view of modules is that binding modules together is done using statements written in Poly and type-checked using the normal Poly type-checker. There is no need, as with MESA and C-MESA[Mit79] for a separate module binding language.

The module system for ML[Har85] is essentially a system built on top of the kernel language. Structures and functors correspond to values and functions in the kernel but the ML type system makes it impossible to unify these concepts.

4. Persistence in Poly

Poly is an interactive system in which the user types expressions and declarations and these are compiled and executed immediately. When objects are declared they are added to the objects the system knows about and they can be used in subsequent expressions. Such systems are quite common and usually work on a core image which can be saved from one session to the next. This is fine provided that the core image does not grow too big. However as the core image gets larger the costs of reading it in and writing it out get more serious. Also the cost of garbage-collection rises. There is a further question about the security of the data if the machine crashes while writing out a large image.

For these reasons Poly is implemented in a persistent store [Atk81a][Atk81b] which can be thought of as a core image where objects are only read in when they are actually required. The cost of loading objects from the image, or database, depends on the amount of the store which is used by a program rather than the total size of the image. A simple transaction mechanism ensures that the database remains in a consistent state in the event of a machine crash or if the program is killed halfway through writing out. Some experiments have been done on using multiple databases so that large programs such as the compiler can be shared between several users.

Using this persistent store the Poly compiler has been boot-strapped so that it is just another procedure. A Standard ML compiler has also been written which uses the same back-end as the Poly compiler.

In a typical interactive programming system there is a single name space for all identifiers, but as the number of declarations have grown it has become necessary to divide up the name space into separate environments. An environment is very similar to a directory in a filing system or to a block in a programming language. When an environment is selected all new identifiers are entered into it and looked up in it. There is the equivalent of the scope rules in a programming language so that an identifier is looked up in a series of nested environments until it is found. It could be thought of as a Poly type since it is a collection of objects, but it cannot be quite the same because declarations can be added or removed dynamically to an environment while a Poly type must be "frozen".

5. Conclusions

Poly was designed as a general purpose language and has been used successfully for some medium scale projects (there is about 20000 lines of code in the Poly and ML compilers). After some years of programming in it the type system has proved to work very well. Treating types as first-class values seems to result in a generally simpler language than languages where types are treated as purely compile-time objects. Experience with Standard ML suggests that pattern-matching and exceptions with parameters (exceptions in Poly cannot carry parameters) are something that should be added. Some kind of type inference based on unification could be used to reduce the amount of type information which must be given explicitly, though it cannot remove it completely. The presence of a persistent store tends to break down the distinction between compile-time and run-time, since the compiler is just another function to be applied. Compile-time does have some meaning in this system however. Compiling an expression means checking the interfaces between functions and their arguments so that the result can be guaranteed not to produce a type-checking error later on. If we compile a procedure then we want to produce a type for the procedure as a whole and remove the type information within it. Not only does this improve the efficiency of the procedure but it also gives us a degree of certainty that the procedure will not fail. It is a little way along the road to proving the correctness of the procedure. There is a cost in this static type checking in Poly in that some procedures which are in fact type-correct will fail to pass a static type-checker, but the advantages of static type-checking more than outweigh the disadvantages.

References

[Atk81a] Atkinson M.P., Chisholm K.J. and Cockshott W.P. "PS-Algol: An Algol with a Persistent Heap." Technical Report CSR-94-81, Computer Science Dept., University of Edinburgh.
[Atk81b] Atkinson, M.P., Bailey P., Cockshott W.P., Chisholm K.J. and Morrison R. "Progress with Persistent Programming." Technical Report PPR-8-81, Computer Science Dept., University of Edinburgh.
[Car85] Cardelli L. and MacQueen D. "Persistence and Type Abstraction." Proc. of the Persistence and Data Types Workshop, August 1985.
[Dem79] Demers A. and Donahue J. "Revised Report on Russell." TR 79-389 Dept. of Computer Science, Cornell University.
[Fai85] Fairbairn J. "A New Type-Checker for a Functional Language." Proc. of the Persistence and Data Types Workshop, August 1985.
[Har85] Harper R. "Modules and Persistence in Standard ML." Proc. of the Persistence and Data Types Workshop, August 1985.
[Mat85] Matthews D.C.J. "Poly Manual" SIGPLAN Notices. Vol.20 No.9 Sept. 1985.
[Mil84] Milner R. "A Proposal for Standard ML" in "Proceedings of the 1984 ACM Symposium on Lisp and Functional Programming", Austin, Texas 1984.
[Mit79] Mitchell James G. et al. "MESA Language Manual." XEROX PARC, 1979
polyml-5.7.1/documentation/main.css0000644000175000017500000000105713204034553016311 0ustar daviddavidBODY { font-family: arial, sans-serif; font-size: 11pt; line-height: 1.4em; color: #000000; background-color: #FFFFFF; } CODE { font-size: 11pt; font-family: Courier New, Courier, mono; } .packet { margin: 4px; margin-left: 1em; padding: 2px; padding-left: 1em; padding-right: 1em; white-space: pre; font-family: Courier New, Courier, mono; font-size: 11pt; border: 1px dotted; } .packet-name { /* font-weight: bold; */ color: #770000; } .function { font-family: "Courier New", Courier, mono; } polyml-5.7.1/documentation/Tutorials/0000755000175000017500000000000013204034553016636 5ustar daviddavidpolyml-5.7.1/documentation/Tutorials/Appl-1-4.gif0000644000175000017500000000446113204034553020525 0ustar daviddavidGIF89a€Â÷ÿÿÿ¾¾¾]]]q‚’‚‚‚EEEÃÃÃÃÃaaaYYYiii444’’’8AA¦Ï a¦¦¦ßAa¶ÇÇ÷÷÷¶¶¶ÿAAA˲ËÿÿÿÿçÇšššÇÇÇÿŠŠÿÿçççmmmªªª,ŠUççûŠŠŠŠŠŠŠŽŽŽMMMÿÿ˲ËÿçÇuuuššš²‚ã¢ûÛ û² Óš$ׂe¢y((,Šaóóï‚Qªia8ëº ²²¶ÓŠ ÃÃÇšiA0óÛ<’’–qquóÛ (óË ÃŠIIE¾Ž<ãË Ûªã² iimóëߪª¦Y0²ŠÛšÓÓ×A8$8$$aa]¢Žuªqó² Û’ ²yI0iQ4ãª×($Ža4aA÷×MóÏ$¦‚ü!ºÿ‚(Ds±ˆ‚:"ý¤Ä%ꩉN$Ô ×E|A±Šsº"ߤÅ-®©‹^LÃX¦1’1Lf Poly/ML Interface to the C Programming Language

Poly/ML Interface to the C Programming Language

Nick Chapman    June 6, 1994

  1. Introduction
  2. Dynamic Libraries
  3. Creating a Dynamic Library
  4. Calling Simple C-functions
  5. A family of calln functions
  6. Predefined Conversions
  7. Volatile Types: vol, sym and dylib.
  8. Calling C-functions with return-parameters
  9. A family of callnretr functions
  10. C structures
  11. A family of structn Conversionals
  12. Lower Level Calling Mechanism: call_sym
  13. Creating New Conversions
  14. Enumerated Types
  15. C Programming Primitives
  16. Example: Quicksort
  17. Volatile Implementation

1 Introduction

It is now possible for Poly/ML to call functions which have been written in the C programming language. These functions are accessed from a dynamic library, and so don't have to be statically linked into the Poly/ML runtime system. The C interface is contained in the structure CInterface, which is built into every ML database. The facilities available allow dynamic libraries to be loaded and for symbols to be extracted from these libraries. symbols which represent C-functions can be executed.

The arguments to a C-function need to be in a format which the C-function can understand. Similarly, the return value from a C-function will be in a standard C format. All such C-values are represented in ML using the abstract type vol. Values of this type are volatile because they do not persist from one ML session to the next. There are facilities to convert between ML-values and vols, together with a collection of 'C-programming' primitives to manipulate vols.

2 Dynamic Libraries

exception Foreign of string
val load_lib : string -> dylib
val load_sym : dylib -> string -> sym
val get_sym : string -> string -> sym

The function load_lib takes an ML string containing the pathname of a dynamic library. This should preferably be a full pathname. If it is a relative pathname it will be interpreted with respect to the directory in which the ML session was started from. The return value is a dylib representing the dynamic library. If the dynamic library cannot be found, the exception Foreign is raised with a string describing the problem.

If the file named by the filename exists but is not in the correct format for a dynamic library, the underlying C-function dlopen prints an error message and then kills the ML session. So far, I have been unable to catch this error.

Once a library has been opened, a symbol may be extracted from the library with the function load_sym. This takes a dylib representing the dynamic library and an ML string naming the symbol. The return value is a sym representing the symbol. If the symbol is not contained in the dynamic library, the exception Foreign is raised with a string describing the problem.

Often the return value of the function load_lib is passed directly to the function load_sym . This combination is captured by the function get_sym, which takes two strings naming the dynamic library and the symbol, and returns the sym representing the symbol, or raises the exception Foreign.

fun get_sym lib sym = load_sym (load_lib lib) sym;

Values of type dylib and sym share the volatile nature of vol ; they do not persist from one ML session to the next. This is explained in more detail in Section 7.

3 Creating a Dynamic Library

Suppose we have written a C-function called difference, which computes the difference of two integers. The function is contained in a file named sample. c.

int difference (int x, int y) {
    return x > y ? x - y : y - x;
}

To create a dynamic library containing this function we carry out the following steps at the shell prompt:

Pinky$ gcc -c sample.c -o sample.o
Pinky$ ld -o sample.so sample.o

These steps create a dynamic library named sample.so. Often many symbols will be retrieved from the same dynamic library, and so it is useful to partially apply the function get_sym to the name of the common library. Most of the examples in this document use symbols retrieved from the library samples.so.

val get = get_sym "sample.so";

4 Calling Simple C-functions

To call the C-function difference we use the function call2 from the structure CInterface. This function allows us to call C-functions that take two arguments:

val call2 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion
                -> 'a
           * 'b ->            'c

The first parameter of call2 is the sym representing the symbol that we wish to call. This is usually obtained from a call to get_sym. The second parameter is a pair of Conversions describing the two arguments to the C-function; the third parameter is a Conversion describing the return value of the C-function. The fourth parameter is a pair containing the actual arguments to be passed to the C-function. Notice how the type of each argument matches the type variable contained in the corresponding Conversion parameter.

The purpose of a Conversion is twofold. Firstly, it specifies the C-type required by the C-function. This needs to be known at the lowest level so that the correct argument passing and return conventions can be used when calling the C-function. Secondly, the Conversion performs the conversion between a C-value (in this case a C integer) and an ML-value. The conversion necessary to call the example C-function difference is INT which has type int Conversion .We can now define an ML function as a wrapper around the underlying C-function.

val diff = call2 (get "difference") (INT,INT) INT;

Because the Conversion INT has type int Conversion, the type of diff is constrained to being int->int->int - which is just what we require. We can now apply the ML function, for example: (diff (13,50)), which evaluates to 37.

5 A family of calln functions

There is a family of calln functions from call0 to call9.

val calln :
   sym -> 'a1 Conversion *  ... * 'an Conversion
       -> 'b Conversion
       -> 'a1 * ... * 'an -> 'b

We need a collection of functions because we cannot give a legal ML type to a function which takes a list of Conversions without forcing them all to have the same type parameter. C-functions with more than nine parameters can still be called, but the lower level calling mechanism must be used, see Section 12.

6 Predefined Conversions

In the structure CInterface, there are various predefined Conversions. The name of each Conversion indicates the C-type required/returned, whereas the ML type of the Conversion constrains the resulting type when the Conversion is used as an argument to a calln function.

val CHAR: char Conversion
val DOUBLE : real Conversion
val FLOAT : real Conversion
val INT : int Conversion
val LONG : int Conversion
val SHORT : int Conversion
val STRING :string Conversion
val VOID : unit Conversion
val BOOL : bool Conversion
val POINTER :vol Conversion

The Conversions CHAR, DOUBLE, FLOAT, INT, LONG and SHORT are primitive in the sense that they convert between small fixed-size C types.

The Conversion STRING converts between an ML string and a C pointer; the pointer points at a null terminated array of characters. This Conversion is built out of the CHAR Conversion and the C programming primitives, see Section 15.

The Conversion VOID is really a one way Conversion intended for the result of C-functions that return void. Attempts to use this Conversion the other way around raise the exception Foreign with an appropriate message.

The Conversion BOOL is build on top of the Conversion INT. It converts between an ML bool and a C integer.

The Conversion POINTER is basically the identity Conversion. No conversion is performed and the underlying vol becomes accessible.

7 Volatile Types: vol, sym and dylib.

There is a problem with the definition of the ML-function diff given above. The call to get_sym (within the partial application get) returns a value of type sym which like values of type vol does not persist from one ML session to the next. If after the definition of diff we were to commit the database and leave the ML session, we would find that on restarting the ML session, the function diff no longer operates as expected, but instead causes the exception Foreign to be raised:

> commit();
> diff (13,50);
val it = 3
> quit();
Pinky$ ml
> diff (13,50);
Exception- Foreign "Invalid volatile" raised

One solution is to redefine the ML function diff as:

fun diff args =
cal12 (get "difference") (INT,INT) INT args;

The new version of diff is very similar to the old version, except that the subexpression get "difference" will be executed every time the function is applied to the tuple of arguments, instead of just once. This causes the library and symbol to be reloaded on every invocation of the function diff ensuring that the vol is valid. Efficiency wise this is not as horrific as it sounds. The underlying dynamic library manipulation functions appear to cache what has already been loaded, and so do little work on a subsequent calls to load the same library or symbol.

8 Calling C-functions with return-parameters

Although C is strictly a call-by-value language, call-by-reference is often simulated with the use of parameters of a pointer type. When a function is called with a parameter that has a pointer type, the called function can then modify the value pointed at by the pointer. For example, the C-function below diff_sum computes both the difference and the sum of two integers. The function has four parameters-two input parameters and two return-parameters.

void diff_sum (int x, int y, int *diff, int *sum) {
  *diff = x > y ? x - y : y - x;
  *sum = x+y;
}

With C, this function would be invoked with something like:

{
  int diff,sum;
  diff_sum(x,y,&diff,&sum);
}

To call the C-function diff_sum from ML we use the function call4ret2. This allows us to call C-functions that have four parameters, the last two being return-parameters.

val call4ret2 : sym
  -> 'a Conversion * 'b Conversion -> 'c Conversion * 'd Conversion
  -> 'a            * 'b             -> 'c             * 'd

Now we can write an ML wrapper function:

fun diff_sum x y =
   call4ret2 (get "diff_sum") (INT,INT) (INT,INT) (x,y);

Evaluating (diff _sum 13 50) results in (37,63).

9 A family of callnretr functions

There is a limited family of callnretr functions defined to call C~functions that have n - r input-parameters followed by r return-parameters. This family contains functions for n ranging from 1 to 5, with r as either 1 or 2. (Exception: there is no call1ret2 because this makes no sense.)

val call1ret1 : sym -> unit -> 'a Conversion -> unit -> 'a
val callnretr :
   sym -> 'a1 Conversion * ... * 'an-r Conversion
       -> 'an-r+1 Conversion * ... * 'an Conversion
       -> 'a1 * ... *'an-r -> 'an-r+1 * ... 'an

For other combinations of n and r; requiring a non-final parameter in the parameter list to be a return-parameter; or requiring the actual return result together with the use of return parameters, the lower level calling mechanism can be used (Section 12).

10 C structures

C functions may be called which take/return C structure values. For example, the following piece of C defines a typedefed structure called Point, and a function which manipulates these Points called addPoint.

typedef struct {int x; int y;} Point;

Point addPoint (Point p1, Point p2) {
  p1.x += p2.x;
  p1.y += p2.y;
  return p1;
}

To create the necessary Conversion for Points we can use the Conversional, STRUCT2. This function takes a pair of Conversions and returns a new Conversion suitable for a C structure containing those types. The type of STRUCT2 is:

val STRUCT2 : 'a Conversion * 'b Conversion -> ('a * 'b) Conversion

We now define an ML wrapper function for addPoint:

val POINT = STRUCT2 (INT,INT);
fun addPoint p1 p2 =
   cal12 (get "addPoint") (POINT,POINT) POINT (p1, p2);

Now, (addPoint (5, 6) (8,9)) evaluates to (13, 15).

11 A family of structn Conversionals

There is a family of structn functions from struct2to struct9.

val structn : 'a1 Conversion * ... * 'an Conversion
               -> ('a1 *... * 'an) Conversion

Manipulation of structures with more than nine components can be achieved with the use of the lower level calling mechanism, see Section 12.

12 Lower Level Calling Mechanism: call_sym

Occasionally it is necessary to access the dynamic calling mechanism at a lower level. The collection of functions calln and callnretr are all defined in terms of the function call_sym, which has the following type:

val call_sym : sym -> (Ctype * vol) list -> Ctype -> vol

The second argument to call_sym is a list of Ctype/vol pairs, which allows C-functions of any number of arguments to be called. This function is more cumbersome to use than the calln and callnretr functions because the two stages of; specification of the C-type, and conversion between ML-values and C-values (vols) have been separated. The specification of the C-type is achieved by using a constructor of the datatype Ctype:

datatype Ctype =
Cchar | Cdouble | Cfloat | Cint | Clong | Cshort | Cvoid
| Cpointer of Ctype
| Cstruct of Ctype list
| Cfunction of Ctype list * Ctype

The following collection of functions is used to convert from and to values of type vol.

val fromCstring : vol ->string
val
fromCchar : vol ->char
val
fromCdouble : vol ->real
val
fromCfloat : vol ->real
val
fromCint : vol ->int
val
fromClong : vol ->int
val
fromCshort : vol ->int
val
toCstring : string -> vol
val
toCchar : char -> vol
val
toCdouble : real ->vol
val
toCfloat : real ->vol
val
toCint : int ->vol
val
toClong : int ->vol
val
toCshort : int ->vol

For example, this is how to define diff directly in terms of call_sym.

fun diff x y =
  fromCint (call_sym (get "difference")
    [(Cint, toCint x),(Cint, toCint y)] Cint)

Manipulation of C structures is achieved with the following two functions:

val make_struct : (Ctype * vol) list -> vol
val break_struct
: Ctype list -> vol -> vol list

13 Creating New Conversions

Recall a Conversion encapsulates three things: an underlying C-type; a function to convert from the C-value (of type vol) to an ML value of a given type; a function which converts from the ML value back into the C-value (of type vol). Sometimes it is useful to be able to create new Conversions, or to retrieve the components from an existing Conversion.

val mkConversion : (vol -> 'a) -> ('a -> vol) -> Ctype -> 'a Conversion
val breakConversion
: 'a Conversion -> (vol -> 'a) * ('a -> vol) * Ctype

The function mkConversion creates a new Conversion from its three components. The function breakConversion takes an existing Conversion and returns a triple containing the components. For example, the standard conversion INT might be defined as:

val INT = mkConversion fromCint toCint Cint

A good reason for creating a new Conversion is to give a different ML type to values of type vol which are to be used in a particular way. For example, we may be interfacing to a collection of C-functions that take/return pointers which are being used to implement a particular abstract type, for example a tree node. By creating a new conversion we can use the ML type system to avoid mixing values of this new type with other normal vols.

abstype node = Node of vol
with val NODE = mkConversion Node (fn (Node n) => n) (Cpointer Cvoid)
end

fun lookupNode s = call1 (get "lookupNode") STRING NODE s
fun printNode n = call1 (get "printNode") NODE VOID n

The types of these two functions are:

val lookupNode : string -> node
val printNode
: node -> unit

14 Enumerated Types

Another reason for creating a new Conversion is for when we want to call a C-function that takes/returns values of an enumerated type. For example, suppose colour is declared as:

typedef enum {
  white,
  red = 5,
  green,
  blue,
  /* leave room for extra colours in the future */
  black = 100
} colour;

This example shows that C enumerations are just sugar for integers, so much so, we can even specify which constructors correspond to which integer values. When an enumeration is declared that specifies integer values for just some constructors, (as in colour above): if the first constructor is unspecified, it is assigned 0; successive unspecified constructors are assigned successive integer values, e.g. green is 6.

We would like to convert C-enumerations like colour into an equivalent ML datatype, together with functions to convert between values of the datatype and ML integers. This can be achieved automatically by using the script proc-enums, contained in the scripts subdirectory of the source tree.

Usage: proc-enums <struct-name> {<filename>}+

The first parameter to proc-enums is the name of the generated ML structure. The remaining parameters specify C-files in which to search for C typedefed enumeration declarations. No formatting conventions are assumed, i.e. arbitrary white space and comments are allowed within the declaration. Other declarations and definitions are ignored. The generated file is named <struct-name>.ML.

For the colour example, we would type 'proc-enums colour colour.h' at the shell prompt. This would generate a file colour.ML containing the following ML definitions.

structure colour = struct

datatype colour
= white
| red
| green
| blue
| black

exception Int2colour

fun int2colour i = case i of
  0 => white
| 5 => red
| 6 => green
| 7 => blue
| 100 => black
| _ => raise Int2colour

fun colour2int i = case i of
  white => 0
| red => 5
| green =
| blue => 7
| black => 100

end (* struct *)

Once these definitions have been generated we can create a new Conversion:

val COLOUR =
  mkConversion (int2colour o fromCint) (toCint o colour2int) Cint;

Now, suppose we have a C-function nameOfColour,

#include "colour.h"
char* nameOfColour (colour c) {
  switch (c) {
    case white: return"white";
    case red:   return"red";
    case green: return"green";
    case blue:  return"blue";
    case black: return"black";
    default:    return"Error: No such colour";
  }
}

we can write a ML wrapper for this function as:

fun nameOfColour c =
   call1 (get "nameOfColour") COLOUR STRING c;

Now we can execute, (nameOfColour blue), which evaluates to the ML string "blue".

15 C Programming Primitives

Occasionally, we need to manipulate C-values in greater detail. The following example shows how an ML wrapper can be written for the C-function diff _sum, without using a callnretr function.

fun diff_sum x y =
    let val diff = alloc 1 Cint
        val sum = alloc 1 Cint
    in
        cal14 (get "diff_sum") (INT,INT,POINTER,POINTER) VOID
            (x, y, address diff, address sum);
        (fromCint diff, fromCint sum)
    end

This example uses two of a collection of six ML functions allowing basic C-programming.

val sizeof  : Ctype -> int
val alloc   : int -> Ctype -> vol
val address : vol -> vol
val deref   : vol -> vol
val assign  : Ctype -> vol -> vol -> unit
val offset  : int -> Ctype -> vol -> vol

These functions are intrinsically unsafe-incorrect usage can cause the ML session to die.

The application (sizeof t) returns the size (in bytes) of the Ctype t.

The application (alloc n t) returns a vol encapsulating some freshly allocated memory of size (n*sizeof t) bytes. Unlike allocation facilities in C which return a pointer to the newly allocated space,the result of alloc encapsulates the space directly.

The underlying implementation of alloc does in fact use malloc to gain some newly allocated space, and does in fact consist of a pointer to this space. However, all the above ML functions work at an extra level of indirection to the corresponding C-operation. This extra indirection is removed before the C-value is passed to a real C-function.

The application (address v) returns a new vol containing the address of v. This function corresponds to the C operator &.

The application (deref v) returns a vol which is the result of dereferencing the address contained in v. This function corresponds to the C operator *. If v is not a valid address, the ML session will die with a segmentation error.

The application (assign t v w) copies (sizeof t) bytes of data from w into v. This function corresponds to the C operator =, or the standard C function memcpy.

The application (offset i t v) returns a new vol that is offset (i*sizeof t) bytes in memory from v. The closest corresponding operator in C is structure dereferencing (.). Pointer arithmetic can be achieved by combining the function offset with the functions address and deref.

The functions address and deref create the same aliasing as the corresponding C operators. For example, the following sequence of C statements causes the final value of i to be 123:

{
  int i = 0;
  int *p = &i;
  *p = 123;
}

Likewise, the following sequence of ML statements:

> val i = toCint 0;
> val p = address i;
> assign Cint (deref p) (toCint 123);
> fromCint i;
val it = 123

16 Example: Quicksort

The following example shows how the C-programming primitives are intended to be used. The example involves interfacing to the standard C-function qsort. On many Unix systems this function can be retrieved from a dynamic library in /usr/lib.

val getC = get_sym "/usr/lib/libc.so.1.7";

The function qsort takes four parameters.

void qsort (void *base, int nel, int width, int (*compar)());

The first parameter, base, is a pointer to an array of elements to be sorted; the second parameter, nel, is the number of elements in the array; the third parameter, width, is the size (in bytes) of each element; the fourth parameter, compar is a comparison function which must return an integer less than, equal to, or greater than zero. See the qsort manual page for more details.

In our example we wish to sort pairs of strings. The first string is the key to be sorted, while the second string is arbitrary data. In C we would represent this pair as a structure, and would write the comparison function compare using strcmp.

typedef struct {
  char *key;
  char *data;
} pair;

int compare (pair x, pair y) {
   return strcmp(x.key, y.key);
}

We want to define an ML wrapper qsort which takes a list of string pairs and returns the sorted list. Other than the C-programming primitives, the only additional function needed is volOfSym. This is needed to supply the fourth argument to qsort, a pointer to a comparison function. The application (volOfSym s) returns the vol encapsulated in the symbol s.

val volOfSym : sym -> vol

We can now defined qsort, together with two auxiliary function fill and read.

val (fromPair,toPair,pairType) = breakConversion (STRUCT2 (STRING,STRING));

fun fill p [] = ()
  | fill p ((key,data)::xs) =
         (assign pairType p (toPair (key,data));
          fill (offset 1 pairType p) xs)

fun read p 0 = []
  | read p n = fromPair p :: read (offset 1 pairType p) (n-1)

fun qsort xs =
   let
      val len = length xs
      val table = alloc len pairType
      val compare = volOfSym (get "compare")
      val sort = ca114 (getc "qsort") (POINTER,INT,INT,POINTER) VOID
   in
      fill table xs;
      sort (address table, len, sizeof pairType, compare);
      read table len
   end

The function fill takes a pointer into some allocated space (which must be big enough), and a string pair list. It fills the array with structures created from the list. The function offset is used to move along the allocated area.

The function read is the inverse of fill. It takes an array of structures and an integer n and reconstructs a list of n string pairs.

The ML function qsort operates by first allocating enough space for the array of structures, then using fill to fill this array from the argument list xs. A call to the C-function qsort is made to sort this array. Notice how the first argument to sort is (address table) which generates the required array pointer for the C-function qsort. Finally, a list is reconstructed from the sorted array using read.

Now we can evaluate the following:

> qsort [("one","fred"), ("two", "dave"), ("three", "bob"), ("four", "mary")];
val it =
  [( "four", "mary"), ("one", "fred"), ("three", "bob"), ("two", "dave")]

17 Volatile Implementation

The C-data contained in a volatile is managed in a separate space from normal ML data which is stored in the heap. There are two reasons for this. Data contained in the ML heap is liable to change its address during garbage collection, and C-functions cannot cope with this. The second reason is safety. We do not want foreign C-functions to obtain a pointer into the ML heap. Because the C-function is running in the same Unix process, it is always possible for it to corrupt the ML heap; however the most usual cause of corruption is caused by off-by-one errors. If the C-data is stored in the ML heap this would cause a neighbouring heap cell to be corrupted.

Every ML value of type vol has two components: (1) An ML heap cell; (2) A slot in the vols array, a runtime system variable declared and managed in the file Driver/foreign.c . The ML heap cell indexes a slot in the vols array. This slot contains three items: (1) A back pointer, pointing at the corresponding ML heap cell. (2) A C-pointer, pointing to the actual C-data; (3) A boolean, indicating whether this volatile owns the space pointed to by the C-pointer.

The combination of vols array index and the back pointer found there enables the validity of a volatile to be checked as it is dereferenced. If the volatile is invalid then the exception Foreign is raised.

The collection of functions that convert ML values into vols (e.g. toCint and toCfloat), together with the functions alloc and address create new volatiles; that is, volatiles that own the space pointed to by the C-pointer in their vols array slot. This space is obtained from a call to malloc. There is always exactly one owner of any piece of malloced space. The deref and offset functions create vols that point to previously allocated space and so are not regarded as the owner.

Volatiles are garbage collected in such a way that malloced space is freed when there are no remaining references to the ML cell which owns that space. However, by itself this scheme is too vicious. For example:

val a = address (toCint 999);

When a garbage collection occurs, although the space owned by a (containing the pointer) will be preserved, the space allocated to hold the C-integer 999 will be reclaimed because there are no references to its owner, the anonymous expression (toCint 999)

If we now evaluate the expression (fromCint (deref a)), it will result in whatever garbage happened to be pointed to by the redundant C-pointer contained in the volatile a. What is needed is a way to ensure that the volatile a holds an ML reference to the anonymous volatile (toCint 999) for the duration of its lifetime. In a similar manner, any volatile that does not own its own space, i.e. the result of the expression (deref (address (toCint 999))), needs to hold a reference to the owner of the space it points at. This scheme of maintaining references is implemented in Volatile.ML in the directory Prelude/Foreign, and is completely transparent to the user.

In some unusual situations we might want to allocate some space which persists after all ML references to it have disappeared. For example, we might have to allocate space for a buffer, and then hand a pointer to this buffer over to a foreign C-function. This can be achieved in two ways. We could carefully maintain an ML reference to the vol encapsulating the buffer. Alternatively, we could use the dynamic library manipulation functions to use the real C-function malloc.

polyml-5.7.1/documentation/Tutorials/Debugging.html0000644000175000017500000003365413204034553021432 0ustar daviddavid Source Level Debugging in Poly/ML

Source Level Debugging in Poly/ML

Poly/ML includes a source-level debugger.   You can use it to set breakpoints in the program and print the values of local variables.  To turn on debugging for a particular piece of code set the compiler variable PolyML.Compiler.debug to true.  You can freely mix functions compiled with debugging on with functions compiled with debugging off, you simply can't set a breakpoint in a non-debuggable function or print its internal state.   The debugging control functions are all in the PolyML.Debug structure. It is often convenient to open this structure before debugging a program.

An Example Session.

To see how debugging works we'll follow through an example session.  We have a small function that is supposed to add together a list of pairs of integers but it has an error in it which causes it not to terminate.  We turn on debugging and compile in the program.

> PolyML.Compiler.debug := true;
val it = () : unit
> fun addList a l =
    let
        fun f (b,c) = a+b+c
    in
        case l of
              [] => a
            | (x::y) =>
                let
                    val v = f x
                    val l' = y
                in
                    addList v l
                end
    end;


val addList = fn : int -> (int * int) list -> int
> open PolyML.Debug;

We set a breakpoint in the function f using the breakIn function and apply the function to some arguments.

> breakIn "f";
val it = () : unit
> addList 0 [(1,2), (3, 4)];

The function prints the line number and stops at the breakpoint.

line:3 function:addList()f
debug>

The name addList()f is the full name of the function and we could have used this in place of f when setting the breakpoint.  The "debug>" prompt is almost identical to the normal Poly/ML ">" prompt.   The only difference is that variables which are in scope at the breakpoint are available as though they were declared globally.  So we can print the values of a, b, c and l.

debug> a;
val it = 0 : int
debug> b;
val it = 1 : int
debug> c;
val it = 2 : int
debug> l;
val it = [(1, 2), (3, 4)] : (int * int) list
debug>

In addition anything in the original top level is also available, provided it is not masked by a local declaration, so we can continue the program by calling the continue function which we opened from PolyML.Debug.

debug> continue();
val it = () : unit
line:3 function:addList()f
debug>

This continues and we find ourselves back in f at the breakpoint again.   We expect that and check the value of a.

debug> a;
val it = 3 : int
debug>

However when we check b something seems to be wrong and printing l confirms it.

debug> b;
val it = 1 : int
debug> l;
val it = [(1, 2), (3, 4)] : (int * int) list
debug>

We don't seem to be making any progress.  We go up the stack to the recursive call of addList in order to check that the value of l' is correct.  We have to go up twice because l' is not local to f nor is it available at the point where f was called.  It is only available at the point where addList was called recursively.

debug> up();
line:9 function:addList
val it = () : unit
debug> up();
line:12 function:addList
val it = () : unit
debug> l';
val it = [(3, 4)] : (int * int) list
debug>

This looks fine so the problem was not that l' had the wrong value.  We print the values of everything using the dump function to see if that helps.

debug> dump();
Function addList()f: c = 2 b = 1 l = [(1, 2), (3, 4)] a = 3
Function addList: x = (1, 2) y = [(3, 4)] f = fn l = [(1, 2), (3, 4)] a = 3
Function addList: l' = [(3, 4)] v = 3 x = (1, 2) y = [(3, 4)] f = fn
l = [(1, 2), (3, 4)] a = 0

val it = () : unit

At this stage it is clear that we are passing the original value of l rather than what we intended, l'.  We abort the function by typing control-C and f.

debug> ^C
=>f
Compilation interrupted
Pass exception to function being debugged (y/n)?y
Exception- Interrupt raised
>

This returns us to the top level.  We now fix the error and clear the breakpoint.

> fun addList a l =
    let
        fun f (b,c) = a+b+c
    in
        case l of
              [] => a
            | (x::y) =>
                let
                    val v = f x
                    val l' = y
                in
                    addList v l'
                end
    end;

val addList = fn : int -> (int * int) list -> int
> clearIn "f";
val it = () : unit

As a final check we turn on tracing to check that the values are as we expect and run the program with the same input as before.

> trace true;
val it = () : unit
> addList 0 [(1,2), (3,4)];
addList entered l = [(1, 2), (3, 4)] a = 0
  addList()f entered c = 2 b = 1 l = [(1, 2), (3, 4)] a = 0
  addList()f returned 3
  addList entered l = [(3, 4)] a = 3
   addList()f entered c = 4 b = 3 l = [(3, 4)] a = 3
   addList()f returned 10
   addList entered l = [] a = 10
   addList returned 10
  addList returned 10
addList returned 10
val it = 10 : int
>

This seems to have worked fine so we can now turn off PolyML.Compiler.debug and compile the function without debugging.

 

Reference

Tracing program execution

    val trace = fn : bool -> unit
The trace function turns on and off function tracing.  Function tracing prints the arguments and results of every debuggable function.

Breakpoints

    val breakAt = fn : string * int -> unit
    val breakIn = fn : string -> unit
    val breakEx = fn : exn -> unit
    val clearAt = fn : string * int -> unit
    val clearIn = fn : string -> unit
    val clearEx = fn : exn -> unit

Breakpoints can be set with the breakAt, breakIn or breakEx functions and cleared with clearAt, clearIn or clearExbreakAt takes a file name and line number and breakIn a function name.  The file name and line have to given exactly otherwise the breakpoint will not work.  breakIn is more flexible about the function name.  It can be the function name used in the declaration (e.g. f) or the full "path name".  The latter is useful when the program contains several functions with the same name since setting a breakpoint in f stops in any function called fbreakIn and breakAt simply record that you want a breakpoint.  There is no check when they are called that the appropriate location actually exists and you can set a breakpoint for a function and then compile it later. breakEx sets a breakpoint for a particular exception and causes the program to stop at the end of the function that raises the exception unless it is also handled there. The argument is the exception to trap. It is possible to trap exceptions that take a parameter. Just provide it with a dummy parameter to create a value of type exn that can be passed to breakEx. The actual parameter value will be ignored and the debugger will be entered whenever the exception is raised with any parameter value.

When a breakpoint is reached the program stops with a debug> prompt.   This is a normal Poly/ML top-level and you can type any ML expression.  The only difference is that local variables in the function being debugged are available as though they had been declared at the top-level.  You can print them or use them in any way that you could with a normal variable.  This includes local functions which can be applied to local values, constants or globals. You cannot change the value of a variable unless it is a reference.  At a breakpoint you can continue or single-step the program or you can raise an exception.  This is usually the most convenient way of aborting a program and getting back to the normal top-level unless the program has a handler for the exception you raise.

Single Stepping and Continuing

val continue = fn : unit -> unit
val step = fn : unit -> unit
val stepOver = fn : unit -> unit
val stepOut = fn : unit -> unit

continue runs the program to the next breakpoint.  stepstepOver and stepOut are different ways of single-stepping through a function.    step runs the program up to the next breakable point which is often the next source line.  If evaluation involves calling a function then it may stop at the beginning of the function.  By contrast stepOver stops at the next line within the current function only.  stepOut goes further and stops only within the function which called the current function.  If a called function includes a breakpoint they always stop there.

Examining and Traversing the Stack

val up = fn : unit -> unit
val down = fn : unit -> unit
val dump = fn : unit -> unit
val variables = fn : unit -> unit

up and down move the focus between called and calling functions allowing you to view local variables at different levels.  This is particularly useful for recursive functions.  The variables function prints all the variables in scope at the current point.  dump gives a complete stack trace.

Notes

The current implementation includes most values but not types or structures.     A recursive function is not available within the function itself.

The compiler adds debugging information which considerably increases the run time of the program.  It is probably best to turn debugging on only when it is needed.

The example shows debugging when all the variables have monomorphic types.  The debugger does not have access to any run-time type information so it cannot always know how to print a value inside a polymorphic type.  For example

> fun map f [] = [] | map f (a::b) = f a :: map f b;
val map = fn : ('a -> 'b) -> 'a list -> 'b list
> breakIn "map";
val it = () : unit
> map (fn i => i+1) [1,2,3];
line:1 function:map
debug> a;
val it = ? : 'a

If you know the type is int you can add a type constraint.

debug> a:int;
val it = 1 : int
debug>

It is though equally possible to use the wrong constraint and crash Poly/ML.   Future versions of Poly/ML may treat polymorphic variables as opaque which would prevent this but also prevent "safe" coercions.

 

polyml-5.7.1/documentation/Tutorials/mlEdit.html0000644000175000017500000007417313204034553020756 0ustar daviddavid Source for mlEdit example
(*
    Copyright (c) 2001-7
        David C.J. Matthews

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.
    
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.
    
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*)
(* Example text editor. *)
fun mlEdit () =
let
    open Window Message Menu Edit Class Dialog CommonDialog MessageBox Caret
    open DeviceContext Font Printing Transform Painting Color
    open Keyboard

    (* Define values to be delivered when the menu items are selected.
       The Id is delivered as part of a WM_COMMAND message. *)
    val menuOpen = 1
    and menuQuit = 2
    and menuSave = 3
    and menuSaveAs = 4
    and menuCut = 5
    and menuCopy = 6
    and menuPaste = 7
    and menuFind = 8
    and menuPageSetup = 9
    and menuPrint = 10
    and menuAbout = 11

    val app = Globals.ApplicationInstance()

    (* Borrow the Poly icon from the application program. It happens to
       be icon id 102. If this doesn't work return NULL. *)
    val polyIcon =
        Icon.LoadIcon(app, Resource.MAKEINTRESOURCE 102) handle _ => Globals.hNull;

    local
        (* Create sub-menus. *)
        val fileMenu =
            let
                val fileMenu = CreateMenu();
            in
                AppendMenu(fileMenu, [], MenuId menuOpen, MFT_STRING "&Open");
                AppendMenu(fileMenu, [], MenuId menuSave, MFT_STRING "&Save");
                AppendMenu(fileMenu, [], MenuId menuSaveAs, MFT_STRING "Save &As...");
                AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR);
                AppendMenu(fileMenu, [], MenuId menuPageSetup, MFT_STRING "Page Set&up...");
                AppendMenu(fileMenu, [], MenuId menuPrint, MFT_STRING "P&rint...");
                AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR);
                AppendMenu(fileMenu, [], MenuId menuQuit, MFT_STRING "&Quit");
                fileMenu
            end;
    
        val editMenu =
            let
                val editMenu = CreateMenu();
            in
                AppendMenu(editMenu, [], MenuId menuCut, MFT_STRING "Cu&t");
                AppendMenu(editMenu, [], MenuId menuCopy, MFT_STRING "&Copy");
                AppendMenu(editMenu, [], MenuId menuPaste, MFT_STRING "&Paste");
                AppendMenu(editMenu, [], MenuId menuFind, MFT_STRING "&Find");
                editMenu
            end;

        val helpMenu =
            let
                val helpMenu = CreateMenu()
            in
                AppendMenu(helpMenu, [], MenuId menuAbout, MFT_STRING "&About mlEdit...");
                helpMenu
            end

    in
        (* Create the main menu and append the sub-menus. *)
        val menu = CreateMenu();
        val _ = AppendMenu(menu, [], MenuHandle fileMenu, MFT_STRING "&File");
        val _ = AppendMenu(menu, [], MenuHandle editMenu, MFT_STRING "&Edit")
        val _ = AppendMenu(menu, [], MenuHandle helpMenu, MFT_STRING "&Help")
    end;

    (* The "state" of the editor. *)
    type state = {
        edit: HWND, (* Handle to the edit window. *)
        devMode: DEVMODE option, devNames: DEVNAMES option, (* Printer settings *)
        fileName: string
        }

    fun wndProc(hw: HWND, msg: Message, NONE): LRESULT * state option =
        (
        case msg of
            WM_CREATE _ => (* Create an edit window and return it as the state. *)
            let
                val edit =
                 CreateWindow{class = Class.Edit, name = "",
                    (* The style does not include horizontal scrolling.  That causes us to use word-wrapping. *)
                    style = Edit.Style.flags[Edit.Style.WS_CHILD, Edit.Style.WS_VISIBLE, Edit.Style.WS_VSCROLL,
                                    (*Edit.Style.WS_HSCROLL, *)Edit.Style.ES_LEFT, Edit.Style.ES_MULTILINE,
                                    Edit.Style.ES_AUTOVSCROLL(*, Edit.Style.ES_AUTOHSCROLL*)],
                    x  = 0, y = 0, height = 0, width = 0, relation = ChildWindow{parent=hw, id=99},
                    instance = Globals.ApplicationInstance(), init = ()}

                (* Create a 10 point Courier font. *)
                val hDC = GetDC edit;
                val height = ~10 * GetDeviceCaps(hDC, LOGPIXELSY) div 72;
                val _ = ReleaseDC(edit, hDC);
                val hFont = CreateFont{height=height, width=0, escapement=0, orientation=0,
                       weight=FW_DONTCARE, italic=false, underline=false, strikeOut=false,
                       charSet=ANSI_CHARSET, outputPrecision=OUT_DEFAULT_PRECIS,
                       clipPrecision=CLIP_DEFAULT_PRECIS, quality=DEFAULT_QUALITY,
                       pitch=FIXED_PITCH, family=FF_MODERN, faceName="Courier"}
            in
                SendMessage(edit, WM_SETFONT{font=hFont, redrawflag=false});
                (LRESINT 0, SOME{edit=edit, devMode=NONE, devNames = NONE, fileName=""})
            end

        | _ => (DefWindowProc(hw, msg), NONE)
        )

    | wndProc(hw: HWND,
              msg: Message,
              state: state option as SOME{edit, devMode, devNames, fileName, ...}) =
        case msg of
            WM_SETFOCUS _ =>
                (* If we get a focus request we set the focus to the edit window. *)
                (SetFocus(SOME edit); (DefWindowProc(hw, msg), state))
    
        |    WM_SIZE{height, width, ...} =>
                (* If we get a size change we set the size of the edit window. *)
                (MoveWindow{hWnd=edit, x=0, y=0, height=height, width=width, repaint=true}; (DefWindowProc(hw, msg), state))
    
        |    WM_NCDESTROY =>
                (* When the window is closed we send a QUIT message which exits from the application loop. *)
                (PostQuitMessage 0; (DefWindowProc(hw, msg), state))
    
        |    WM_CLOSE =>
                (* User has pressed the Close box.  If it's ok to close we could call
                   DestroyWindow ourselves.  Just as an example we return NONE which
                   passes it to the default window procedure and does it for us. *)
                (if checkForSave(hw, edit, fileName) then DefWindowProc(hw, msg) else LRESINT 0, state)
    
        |    WM_COMMAND{notifyCode = 0, wId, control} =>
                (* Menu selections arrive here. *)

                if wId = menuQuit
                then
                    (
                    if checkForSave(hw, edit, fileName) then DestroyWindow hw else ();
                    (LRESINT 0, state)
                    )

                else if wId = menuOpen
                then
                let
                    val on = {
                        owner = SOME hw,
                        template = TemplateDefault,
                        filter =
                            [("Text Files (*.txt)", "*.txt"),
                             ("ML Files (*.sml)", "*.sml"),
                             ("All Files (*.*)", "*.*")],
                        customFilter = NONE,
                        filterIndex = 1,
                        file = "",
                        maxFile = 1000,
                        fileTitle = "",
                        initialDir = NONE,
                        title = NONE,
                        flags = OpenFileFlags.flags[OpenFileFlags.OFN_HIDEREADONLY],
                        defExt = NONE
                    }
                in
                    case GetOpenFileName on of
                        NONE => (LRESINT 0, state)
                    |    SOME {file, ...} =>
                        (* If it's been modified we need to ask before overwriting. *)
                        if checkForSave(hw, edit, fileName)
                        then
                        (let
                            val f = TextIO.openIn file
                            (* Text input will convert CRNL to \n.  We need to
                               reverse the process. *)
                            fun nlToCrnl s =
                                String.translate(fn #"\n" => "\r\n" | c => String.str c) s
                        in
                            (* Should we save any existing file? *)
                            SetWindowText(edit, nlToCrnl(TextIO.inputAll f));
                            TextIO.closeIn f;
                            SendMessage(edit, EM_SETMODIFY{modified=false});
                            (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames,
                                          fileName=file})
                        end) handle exn =>
                            (MessageBox(SOME hw,
                                concat["Unable to open - ", file, "\n"(*, exnMessage exn*)],
                                "Open failure", MessageBoxStyle.MB_OK);
                            (LRESINT 0, state))
                        else (LRESINT 0, state)
                end

                else if wId = menuSave andalso fileName <> ""
                then (* Save to the original file name if there is one. *)
                (
                    saveDocument(hw, fileName, edit);
                    (LRESINT 0, state)
                )

                else if wId = menuSaveAs orelse wId = menuSave (* andalso fileName = "" *)
                then
                (
                    case saveAsDocument(hw, edit) of
                        NONE => (LRESINT 0, state)
                    |    SOME newName =>
                            (LRESINT 0, (* Use the selected file name. *)
                                SOME{edit=edit, devMode=devMode, devNames=devNames,
                                     fileName=newName})
                )

                else if wId = menuFind
                then
                let
                    open FindReplaceFlags
                    (* Create a "Find" dialogue. *)
                    val find =
                        FindText{owner = hw, template = TemplateDefault,
                                 flags=flags[FR_DOWN, FR_HIDEWHOLEWORD],
                                 findWhat="", replaceWith="", bufferSize = 100}
                in
                    ShowWindow(find, SW_SHOW);
                    (LRESINT 0, state)
                end

                (* Cut, Copy and Paste are all handled by the Edit window. *)
                else if wId = menuCut
                then (SendMessage(edit, WM_CUT); (LRESINT 0, state))
                else if wId = menuCopy
                then (SendMessage(edit, WM_COPY); (LRESINT 0, state))
                else if wId = menuPaste
                then (SendMessage(edit, WM_PASTE); (LRESINT 0, state))

                else if wId = menuPageSetup
                then
                    (
                    (* Put up the dialogue and change the settings if necessary. *)
                    case PageSetupDlg {owner=SOME hw, devMode=devMode, devNames=devNames,
                                     flags=PageSetupFlags.flags[], paperSize={x=0,y=0},
                                     minMargin={top=0,bottom=0,left=0,right=0},
                                     margin={top=0,bottom=0,left=0,right=0}} of
                        NONE => (LRESINT 0, state)
                    |    SOME {devMode, devNames, ...} =>
                            (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames,
                                          fileName=fileName})
                    )

                else if wId = menuPrint (* "Print" menu item. *)
                then
                let
                    (* Put up the dialogue box to get the settings. *)
                    val printSettings =
                        PrintDlg {owner=SOME hw, devMode=devMode, devNames=devNames,
                                  context=NONE,
                                  flags=PrintDlgFlags.flags[PrintDlgFlags.PD_RETURNDC],
                                  fromPage=1, toPage= ~1, minPage=1, maxPage= ~1, copies=1};
                in
                    case printSettings of
                        SOME {devMode, devNames, context = SOME hdc, flags, fromPage, toPage, ...} =>
                        (let
                            (* If the "Selection" button has been pressed we only print the
                               selection. *)
                            val printWhat =
                                if PrintDlgFlags.anySet(flags, PrintDlgFlags.PD_SELECTION)
                                then
                                let
                                    val from = ref 0 and to = ref 0
                                    val _ = SendMessage(edit, EM_GETSEL{startPos = from, endPos = to})
                                    val text = GetWindowText edit
                                in
                                    if !from < 0 orelse !from > size text orelse
                                       !to < 0 orelse !from > size text
                                    then ""
                                    else String.substring(text, !from, !to - !from)
                                end
                                else (* "All" button pressed or "Pages" pressed. *)
                                    GetWindowText edit;
                            val textLength = size printWhat

                            (* Tell the spooler to start the document. *)
                            val jobID = StartDoc(hdc, {docName=fileName, output=NONE, dType=NONE})

                            (* Find out how big a character is. From this we can work out
                               how many characters fit on a line and how many lines on a
                               page. Since we're using a fixed width font this is fairly
                               easy. *)
                            val _ = SetMapMode(hdc, MM_TEXT)
                            val white = RGB{red=255, blue=255, green=255}
                            val black = RGB{red=0, blue=0, green = 0}
                            val pageWidth = GetDeviceCaps(hdc, HORZRES)
                            and pageHeight = GetDeviceCaps(hdc, VERTRES)

                            (* Create the same font as we're using on the screen. Since this is
                               a fixed width font it makes calculating the number of characters
                               fairly easy. *)
                            val charHeight = ~10 * GetDeviceCaps(hdc, LOGPIXELSY) div 72;
                            val hFont = CreateFont{height=charHeight, width=0, escapement=0, orientation=0,
                                   weight=FW_DONTCARE, italic=false, underline=false, strikeOut=false,
                                   charSet=ANSI_CHARSET, outputPrecision=OUT_DEFAULT_PRECIS,
                                   clipPrecision=CLIP_DEFAULT_PRECIS, quality=DEFAULT_QUALITY,
                                   pitch=FIXED_PITCH, family=FF_MODERN, faceName="Courier"}
                            val oldFont = SelectObject(hdc, hFont); (* Use this font. *)

                            val textMetric = GetTextMetrics hdc;

                            fun printPage pno index =
                            let
                                (* If we are printing a range of pages we need to check whether
                                   we are in the range. *)
                                val printThisPage =
                                    if PrintDlgFlags.anySet(flags, PrintDlgFlags.PD_PAGENUMS)
                                    then pno >= fromPage andalso (pno <= toPage orelse toPage < 0)
                                    else true
                                val pageRect = {top=0, left=0, bottom=pageHeight, right=pageWidth}
                                (* Calculate the number of lines and columns. *)
                                val nLines = pageHeight div #height textMetric;
                                val nCols = pageWidth div #maxCharWidth textMetric

                                (* Output the lines to fill the page. *)
                                fun outputLines lineNo p =
                                    if lineNo >= nLines
                                    then p (* Return last pointer. *)
                                    else
                                    let
                                        (* Find the point to split the line.  We stop at the end of
                                           the text, a line break, the last word break on the line
                                           or the maximum number of characters. *)
                                        fun findEnd lastBreak i =
                                            if i >= textLength then (textLength, textLength)
                                            else if i-p > nCols
                                            then
                                                (
                                                case lastBreak of
                                                    NONE => (* No breaks on the line - break just before here. *)
                                                        (i-1, i-1)
                                                |    SOME b => b (* Break at the last break. *)
                                                )
                                            else if i < textLength - 1 andalso
                                                    String.sub(printWhat, i) = #"\r" andalso
                                                    String.sub(printWhat, i+1) = #"\n"
                                            then (* End of line - stop here. *)
                                                (i, i+2)
                                            else if Char.isSpace(String.sub(printWhat, i))
                                            then (* Remember this. *)
                                                findEnd (SOME(i, i+1)) (i+1)
                                                (* Actually tabs need to be handled more carefully. *)
                                            else findEnd lastBreak (i+1)

                                        val (endLine, nextLine) = findEnd NONE p
                                        val thisLine =
                                            if p >= textLength
                                            then ""
                                            else String.substring(printWhat, p, endLine-p)
                                    in
                                        if printThisPage
                                        then
                                            (
                                            TabbedTextOut(hdc, {x=0, y= lineNo * #height textMetric},
                                                thisLine, [], 0);
                                            ()
                                            )
                                        else ();
                                        outputLines (lineNo+1) nextLine
                                    end
                                val nextPage =
                                    if printThisPage
                                    then
                                        let
                                            val _ = StartPage hdc;
                                            (* Fill the page with white. *)
                                            val _ = SetBkColor(hdc, white);
                                            val _ = SetTextColor(hdc, black);
                                            val _ = ExtTextOut(hdc, {x=0, y=0}, [ETO_OPAQUE], SOME pageRect, "", []);
                                            (* Print the text. *)
                                            val next = outputLines 0 index
                                        in
                                            EndPage hdc;
                                            next
                                        end
                                    else (* Format the page but don't print it. *) outputLines 0 index
                            in
                                if nextPage >= size printWhat
                                then ()
                                else printPage (pno+1) nextPage
                            end

                            val _: unit = printPage 1 0
                        in
                            EndDoc hdc;
                            (* Restore the original font and delete the new one. *)
                            SelectObject(hdc, oldFont);
                            DeleteObject(hFont);
                            DeleteDC hdc; (* Now delete the device context. *)
                            (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames,
                                          fileName=fileName})
                        end
                            (* If any of the functions failed simply delete the device
                               context and return the original state. *)
                            handle (exn as OS.SysErr _) => (
                                print (exnName exn); AbortDoc hdc; DeleteDC hdc; (LRESINT 0, state)))
                    |    _ => (LRESINT 0, state)
                end

                else if wId = menuAbout
                then (aboutmlEdit hw; (LRESINT 0, state))

                else (DefWindowProc(hw, msg), state)

        |  FINDMSGSTRING{flags, findWhat, ...} =>
            if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_DIALOGTERM)
            then (* The "find" box is going away. *)
                (
                    SetFocus(SOME edit);
                    (LRESINT 0, state)
                )
            else if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_FINDNEXT)
            then (* The Find Next button has been pressed. *)
            let
                (* Get the whole of the text - not very efficient. *)
                val text = GetWindowText edit
                val startPos = ref 0 and endPos = ref 0
                (* Get the starting position. *)
                val _ = SendMessage(edit, EM_GETSEL{startPos=startPos, endPos=endPos})

                val isDown = FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_DOWN)
                (* Get the starting position for the search. *)
                val startPos = if isDown then !endPos else !startPos - 1

                val findLen = size findWhat
                (* Get the options. *)
                local
                    val toLower = String.map Char.toLower
                in
                    val doMatch: string * string -> bool =
                        if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_MATCHCASE)
                        then op =
                        else fn (s1, s2) => toLower s1 = toLower s2
                end

                fun doFind p =
                let
                    val isMatch =
                        p >= 0 andalso size text - p >= size findWhat andalso
                            doMatch(String.substring(text, p, findLen), findWhat)
                in
                    if isMatch then p
                    else if isDown
                    then if p = size text then p (* Finish *) else doFind(p+1)
                    else (* Find up *) if p = 0 then ~1 (* Finish *) else doFind(p-1)
                end
                val foundAt = doFind startPos
            in
                if foundAt >= 0 andalso foundAt + findLen < size text
                then
                    (
                    SendMessage(edit, EM_SETSEL{startPos=foundAt, endPos=foundAt + findLen});
                    SendMessage(edit, EM_SCROLLCARET);
                    ()
                    )
                else MessageBeep(MessageBoxStyle.fromWord 0wxFFFFFFFF);
                (LRESINT 0, state)
            end
            else (DefWindowProc(hw, msg), state)

        |    _ => (DefWindowProc(hw, msg), state)

    (* If this document has been modified we want to ask before quitting or
       opening a new document. *)
    and checkForSave(hw, edit, fileName) =
        case SendMessage(edit, EM_GETMODIFY) of
            LRESINT 0 => true (* Unmodified - continue. *)
        |    _ => 
            let
                val res =
                    MessageBox(SOME hw, "Save document?", "Confirm",
                               MessageBoxStyle.MB_YESNOCANCEL)
            in
                if res = IDYES
                then if fileName = ""
                then saveAsDocument(hw, edit) <> NONE
                else saveDocument(hw, fileName, edit)
                else if res = IDNO
                then true (* Continue anyway. *)
                else false (* Cancel - don't exit or open. *)
            end

    and saveDocument(hw, fileName, edit) =
    (* Write the document to the given file name. *)
        let
            (* Write the file as binary.  That way we don't need to
               convert CRNL to NL before writing. *)
            val f = BinIO.openOut fileName
            val s = GetWindowText edit
        in
            BinIO.output(f, Byte.stringToBytes s);
            BinIO.closeOut f;
            (* Document is now unmodified. *)
            SendMessage(edit, EM_SETMODIFY{modified=false});
            true (* Succeeded. *)
        end handle exn =>
            (MessageBox(SOME hw,
                concat["Unable to save to - ", fileName, "\n"(*, exnMessage exn*)],
                "Open failure", MessageBoxStyle.MB_OK);
             false)

    and saveAsDocument(hw, edit) =
    (* Ask for the file name before trying to save. *)
        let
            val on = {
                owner = SOME hw,
                template = TemplateDefault,
                filter =
                    [("Text Files (*.txt)", "*.txt"),
                     ("ML Files (*.sml)", "*.sml"),
                     ("All Files (*.*)", "*.*")],
                customFilter = NONE,
                filterIndex = 1,
                file = "",
                maxFile = 1000,
                fileTitle = "",
                initialDir = NONE,
                title = NONE,
                flags = OpenFileFlags.flags[],
                defExt = NONE
            }
        in
            case GetSaveFileName on of
                NONE => NONE
            |    SOME {file, filterIndex, fileTitle, ...} =>
                let
                    (* If the user typed a file name without an extension use
                       the extension from the appropriate filter. *)
                    val suffix =
                        case filterIndex of
                            1 => ".txt"
                        |    2 => ".sml"
                        |    _ => ""
                    val fileName =
                        if Char.contains fileTitle #"."
                        then file else file ^ suffix
                in
                    if saveDocument(hw, fileName, edit)
                    then SOME file (* Return the selected name. *)
                    else NONE
                end
        end

    and aboutmlEdit hw =
    (* Called when the user selects "About..." from the help menu. *)
    let
        (* Dialogue template containing three items: an OK button, a static picture and
           a piece of text. *)
        val pictureId = 1000 (* Could use any number here. *)
        open Static.Style
        val template =
            {x = 0, y = 0, cx = 210, cy = 94, font = SOME (8, "MS Sans Serif"), menu = NONE,
             class = NONE,title = "About mlEdit", extendedStyle = 0,
             style = flags[WS_POPUP, WS_CAPTION],
             items =
              [{x = 73, y = 62, cx = 50, cy = 14, id = 1,
                class = DLG_BUTTON (flags[WS_CHILD, WS_VISIBLE, WS_TABSTOP]),
                title = DLG_TITLESTRING "OK", creationData = NONE, extendedStyle = 0},
               {x = 7, y = 7, cx = 32, cy = 32, id = pictureId,
                class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, SS_ICON]),
                title = DLG_TITLESTRING "", creationData = NONE, extendedStyle = 0},
               {x = 15, y = 39, cx = 180, cy = 21, id = 65535,
                class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, WS_GROUP]),
                title =
                    DLG_TITLESTRING
                       "mlEdit - An example of Windows programming in Poly/ML\
                       \\nCopyright David C.J. Matthews 2001-7",
                creationData = NONE,  extendedStyle = 0}] }

        (* Dialogue procedure. *)
        fun dlgProc(dial, WM_INITDIALOG _, ()) =
            (
                (* Send a message to the picture control to set it to this icon. *)
                SendMessage(GetDlgItem(dial, pictureId), STM_SETICON{icon=polyIcon});
                (LRESINT 1, ())
            )

        |    dlgProc(dial, WM_COMMAND{notifyCode = 0, wId=1 (* OK button *), ...}, ()) =
                (* When the OK button is pressed we end the dialogue. *)
                (EndDialog(dial, 1); (LRESINT 1, ()) )

        |    dlgProc _ = (LRESINT 0, ())

    in
        DialogBoxIndirect(app, template, hw, dlgProc, ());
        ()
    end

    val className = "mlEditWindowClass"
    (* Register a class for the top-level window.  Use the Poly icon from the application. *)
    val myWindowClass = RegisterClassEx{style = Class.Style.flags[],
        wndProc = wndProc, hInstance = app,
        hIcon = SOME polyIcon, hCursor = NONE, hbrBackGround = NONE, menuName = NONE,
        className = className, hIconSm = NONE};
    
    
    val w = CreateWindow{class = myWindowClass, name = "mlEdit", style = Window.Style.WS_OVERLAPPEDWINDOW,
        x  = CW_USEDEFAULT, y = CW_USEDEFAULT, height = CW_USEDEFAULT, width = CW_USEDEFAULT,
        relation = PopupWindow menu,
        instance = app, init = NONE};
in
    ShowWindow(w, SW_SHOW);
    SetForegroundWindow w;
    
    RunApplication();
    (* Must unregister the class before returning otherwise RegisterClass will
       fail if we call mlEdit again. *)
    UnregisterClass(className, app)
end;
         
polyml-5.7.1/documentation/Tutorials/Motif.html0000644000175000017500000050265513204034553020617 0ustar daviddavid Poly/ML for Motif

Poly/ML for Motif

Quick Reference Manual

Mike Crawley

Chris Read

 

Copyright (c) 2000 Cambridge University Technical Services Limited
Copyright (c) 1992 Abstract Hardware Limited.
Copyright (c) 1992 Open Software Foundation, Inc.
Copyright (c) 1989 Digital Equipment Corporation.
Copyright (c) 1988 Massachusetts Institute of Technology.
All Rights Reserved.

Permission to use, copy, modify, and distribute these signatures and their documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both the copyright notices and this permission notice appear in supporting documentation, and that the names of Digital, MIT, OSF, AHL and CUTS not be used in advertising or publicity pertaining to distribution of the signatures and their documentation without specific, written prior permission. Digital, MIT, OSF, AHL and CUTS disclaim all warranties with regard to these signatures and their documentation, including all implied warranties of merchantability and fitness, in no event shall Digital, MIT, OSF, AHL or CUTS be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of these signatures and their documentation.

Motif is a Trademark of OSF.
X Window System is a Trademark of MIT.

 

Contents

1 Getting started with Motif
1.1 What is Motif
1.2 What are Widgets
1.3 Creating an application
1.4 Managing and Realizing Widgets
1.5 What are Arg lists and Resources
1.6 Changing and examining Widget state
1.7 What are Callbacks

2 Widget Classes
2.1 ArrowButton
2.2 BulletinBoard
2.3 CascadeButton
2.4 Command
2.5 ErrorDialog
2.6 FileSelectionDialog
2.7 InformationDialog
2.8 List
2.9 MainWindow
2.10 MessageDialog
2.11 OptionMenu
2.12 PanedWindow
2.13 PromptDialog
2.14 QuestionDialog
2.15 Scale

2.16 ScrollBar
2.17 ScrolledList
2.18 ScrolledText
2.19 ScrolledWindow
2.20 SelectionDialog
2.21 Text
2.22 ToggleButton
2.23 WarningDialog
2.24 WorkingDialog

3 Resource Tables
3.1 ApplicationShell
3.2 Composite
3.3 Core
3.4 Object
3.5 RectObj
3.6 Shell
3.7 TopLevelShell
3.8 TransientShell
3.9 VendorShell
3.10 WMShell
3.11 XmArrowButton
3.12 XmBulletinBoard
3.13 XmCascadeButton
3.14 XmCommand

3.15 XmDrawingArea
3.16 XmDrawnButton
3.17 XmFlleSelectionBox
3.18 XmForm
3.19 XmFrame
3.20 XmGadget
3.21 XmLabel
3.22 XmList
3.23 XmMainWindow
3.24 XmManager
3.25 XmMenuShell
3.26 XmMessageBox
3.27 XmPanedWindow
3.28 XmPrimitive
3.29 XmPushButton
3.30 XmRowColumn
3.31 XmScale
3.32 XmScrollBar
3.33 XmScrolledWindow
3.34 XmSelectionBox
3.35 XmSeparator
3.36 XmText
3.37 XmTextField
3.38 XmToggleButton

 

 

Chapter 1

Getting started with Motif

1.1 What is Motif

Motif is a user environment built on top of the X Window System and is designed to make interaction with your computer easier and more productive. Applications written for Motif are intended to follow a particular style of appearance and behaviour, so that you do not have to learn new techniques for working with each separate application program.

This document is intended to give enough information so that you can start programming Motif applications in Poly/ML without having to read all the standard OSF (Open Software Foundation) material. However, you will need more detailed information at later stages in your work and you should have the following three books at hand.

OSF/Motif Style Guide   This will guide the programmer to design and implement applications so that they are consistent with the OSF/Motif user interface.
OSF/Motif Programmer's Reference   This describes in detail each Motif function and its associated resources.
PolyML for X Reference   This describes how to use each individual function provided in the Poly/ML implementation of Xlib - the low level interface to the X Window System.

In addition to the reference material in these books, we recommend that you read a Motif programming manual from the following list.

Motif Programming Manual   Volume 6 of the well known O'Reilly set of manuals for X. Written by Dan Heller.
Programming OSF/Motif   Prentice-Hall publish this book by Douglas Young.
Visual Design with OSF/Motif   Addison-Wesley publish this book by Shiz Kobara.

1.2 What are Widgets

The Motif widget set is constructed on top of the Xt intrinsics, which are in turn constructed on top of the X Window System. A widget is an object providing a user interface abstraction, for example, a scroll bar. The Motif widget set aims to provide a set of useful abstractions that a programmer can join together to construct the application, often without having to invent any new additional behaviour or abstractions. The main advantages of the widget set are that all applications built with the same widget set provide the same set of abstractions, and the time to implement the application is drastically reduced, leaving the programmer more time to improve the program that is behind the user interface.

Each widget is a combination of an X Window, a well defined behaviour, and some state information. Each widget is a member of exactly one widget class which provides the functions and data for all members of that class. Widget classes may be inherited by subclassing.

A great deal of the visual appearance and some of the behaviour of each individual widget or an entire widget class can be customised by the user. This is typically done by using files of settings for the fields within the widget classes that affect colours, fonts, sizes, and so on. These fields are collectively known as resources, and this document contains tables of the permitted resources for each widget class.

1.3 Creating an application

An application must create a set of widgets to present to the user. First of all the application must create the application shell widget. Most applications only have one shell widget - this is the window which the window manager places and resizes on the screen. All the other widgets created by the application are typically children of this shell widget.

The structure XWindows contains all the definitions for the Xlib level of the interface. The structure Motif contains all the definitions for the Motif interface.

open XWindows ;
open Motif ;
...

val XtAppInitialise: string -> string -> string ->
                         string list -> Arg list -> Widget
...

The first parameter to XtAppInitialise is the name of the Display to open in the manner of the Xlib function X0penDisplay - this function is documented along with all the other Xlib functions in the Poly/ML for X Reference Manual. The second parameter is the name of this application, and the third parameter is the name of this class of application. Both these names are significant in loading the resource database and finding the resource values for all the widgets used inside this application. Finding resource values is discussed in more detail in a later section. The string list parameter is a list of fallback resource values and the Arg list parameter is a list of preset resource values. The preset resource values are always used in preference to resource values found in the database or in the fallback list. The fallback list provides values to use when values are not found in either the preset list or in the resource database. The resource values that each class of widget can accept are described in the sections about each individual widget class later in this document. The widget returned is an ApplicationShell widget on that display.

The following is the start of a small example program.

val shell =
    XtAppInitialise "" "xed" "Editor" [] [XmNwidth 400, XmNheight 400] ;

The display is opened and the first shell widget is created with preset width and height values.

Now that a shell widget has been created the other widgets in the application can be created. The functions to create different types of Motif widgets have differing names but they all have the same type.

val XmCreate<...>: Widget -> string -> Arg list -> Widget

The parameters specify the parent widget, the name of this widget, and any preset resource values. If no resource values are preset then they default to values in the user's resource files, or values in the fallback list, or to compiled-in defaults.

The next part of our example is as follows.

val main = XmCreateMainWindow shell "main" [] ;

val bar = XmCreateMenuBar main "bar" [] ;

val fileMenu = XmCreateCascadeButton bar "file" [XmNlabelString "File"] ;
val editMenu = XmCreateCascadeButton bar "edit" [XmNlabelString "Edit"] ;
val viewMenu = XmCreateCascadeButton bar "view" [XmNlabelString "View"] ;
val helpMenu = XmCreateCascadeButton bar "help" [XmNlabelString "Help"] ;

val command = XmCreateText main "command" [XmNeditMode XmSINGLE_LINE_EDIT] ;

val hscroll = XmCreateScrollBar main "hscroll" [XmNorientation XmHORIZONTAL] ;
val vscroll = XmCreateScrollBar main "vscroll" [XmNorientation XmVERTICAL] ;

val work = XmCreateDrawingArea main "work" [] ;

The code above creates a hierarchy of widgets. Each class of widget that can have child widgets is a subclass of Composite and provides a behaviour that manages those children. For example, in the code above, a MenuBar widget has four children which are all CascadeButtons. The MenuBar lays out the buttons horizontally and provides a behaviour for the buttons according to the movement of the mouse and the pressing of the mouse buttons. The MainWindow widget has the MenuBar, scroll bars and a drawing area as children, and provides a standard layout for these widgets.

1.4 Managing and Realizing Widgets

When a widget is managed it is added to the geometry-managed displayable subset of its parent's children. If a widget is not managed then it cannot be displayed and does not have its size and position changed by its parent. Managing and unmanaging can therefore be used to make different parts of an application appear and disappear, without the expense of creating and destroying widgets.

Realizing a widget is the process of creating and mapping an X window for the widget, and then recursively realizing the managed subset of the widget's children. Changing the managed subset will only have visible effects if the parent is already realized, or when the parent widget becomes realized later.

val XtManageChild: Widget -> unit
val XtUnmanageChild: Widget -> unit

val XtManageChildren: Widget list -> unit
val XtUnmanageChildren: Widget list -> unit

val XtRealizeWidget: Widget -> unit
val XtUnrealizeWidget: Widget -> unit

XtManageChild and XtUnmanageChild will manage and unmanage one widget at a time. XtManageChildren and XtUnmanageChildren can be given lists of widgets with a common parent and can be quicker than working on one widget at a time.

XtRealizeWidget is given the root of a widget tree and recursively creates and maps all the X windows required by the managed children in the tree.

XtUnrealizeWidget is given the root of a widget tree and recursively destroys all the X windows created by the managed children in the tree.

Our example continues with managing and realizing the widgets we have just created.

XtManageChildren [fileMenu, editMenu, viewMenu, helpMenu] ;
XtManageChildren [bar, command, hscroll, vscroll, work] ;

XmMainWindowSetAreas main bar command hscroll vscroll work ;

XtManageChild main ;
XtRealizeWidget shell ;

At this point the application becomes visible on the display and will look very similar to the application below.

Appl-1-4.gif (2353 bytes)

1.5 What are Arg lists and Resources

A resource is a named field inside a widget that can be set with a value by the user in one of several ways. These resources are used to change the behaviour or the appearance of the widget. The names of all these resources are printed in tables in this manual for every widget class that is available in Motif. For example

XmCascadeButton Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNcascadePixmap XmCPixmap Drawable
XmNcascadingCallback XmCCallback (callback)
XmNmappingDelay XmCMappingDelay int
XmNsubMenuId XmCMenuWidget Widget

The purpose of each resource is fully documented in the OSF/Motif Programmer's Reference.

1.5.1 Initialising with Arg lists

There are several ways to set the initial value of a resource. When a widget is created the user passes in an Arg list which contains preset resource values. These values are copied into the widget in preference to all other values. The Arg datatype is designed to provide an easy way of passing in values of many different types as a single Arg list. The constructors have names such as

val XmNshadowThickness: int -> Arg
val XmNsliderSize: int -> Arg

and can be used as destructors as well. Arg is actually implemented as an infinite datatype - it is the type exn - which means that signatures for functors that use only a few of the Arg destructors need not know the names of all the other destructors - which would be the case with a standard datatype. Instead they need only include the lines they need, as in the following example.

signature MOTIF_SIG = sig
   type Widget

   type Arg sharing type Arg = exn

   val XmCreateCascadeButton: Widget -> string -> Arg list -> Widget

   exception XmNshadowThickness of int
   exception XmNsliderSize of int
end ;

When compiling code that uses the signature above the compiler knows that the Arg list needed by XmCreateCascadeButton is the same type as exn list, and this will allow you to construct and destruct these lists using the exception constructors. If you pass in an exn that is not recognised by the Motif interface then it is rejected and an exception is raised.

1.5.2 Loading the resource database

If a resource value is not specified in the Arg list at creation time then the widget searches the resource database for that field.

A complicated process of merging together separate resource files into a single resource database is performed when the function XtAppInitialise is called. This process is fully documented in user manuals for X Windows, especially in Chapter 11 of Vol 1 of the O'Reilly series of X Manuals. Here we only give a simple example of how the resource files are located - which is enough for most users.

First the process attempts to load a class-specific resource file using the application class name and a search path which is stored in an environment variable. The third parameter to XtAppInitialise is the name of this class of application, and the search path is typically stored in the XFILESEARCHPATH environment variable as follows.

setenv XFILESEARCHPATH $HOME/%T/%N%S

The loading process replaces the %T component of the path with app-defaults and the %N component with the class name. The suffix component %S is not normally used here. In simpler terms, if the user has a directory called app-defaults in his home directory, and in that directory there is a file with the same name as the class name of the application, for example Editor, then that file is loaded into the resource database. Note that class names start with a capital letter by convention.

Then the process attempts to load another class-specific resource file using the application class name and a search path which is stored in the XAPPLRESDIR environment variable, which typically has a value like

/usr/motif/lib/app-defaults

If, in this directory, there is a file with the same name as the class name of the application then that file is merged into the resource database we have constructed so far.

The process then looks for a property which holds the default resources on the root window of the user's display. These defaults are often put in place by the xrdb program. These are merged into the database if they are found, otherwise the process looks for a file called $HOME/.Xdefaults and merges that into the database instead. Often the root property set by xrdb is a copy of the .Xdefaults file at the time the X server was started. If the user changes the .Xdefaults file then he should use

xrdb .Xdefaults

to copy the new version into the server.

Note the order of the merging process. The preset Arg list parameter overrides the values in the .Xdefaults file, which override the values in the XAPPLRESDIR directory, which override the values in the XFILESEARCHPATH directory, which override the values in the fallback resource list parameter.

Typically the user creates a file for each application class in his app-defaults directory. This keeps the resource settings for each application separate from one another, and keeps the .Xdefaults file small.

1.5.3 Finding resources in the database

The second and third parameters to XtAppInitialise are the name of this application instance, and name of this class of application. These names are used to construct the full names of the resource fields in the widgets.

For example, if the application name is xed and there is an XmMainWindow widget with the name main, then the resource fields XmNforeground and XmNshowSeparator have the full names

xed.main.foreground
xed.main.showSeparator

The levels in the widget hierarchy are represented by the names of the widgets from oldest parent down to youngest child with dots as separators. Therefore it is not a good idea to place dots inside the ML strings to be used for widget names.

The resource constructors/destructors have the prefix XmN in order to make them distinct from other ML identifiers. This prefix is not needed in the resource database and explains why the resource field XmNforeground of the widget main is printed as main.foreground in the example above.

If any entries in the database match these names then those values will be copied into the widget. Here are some example lines from a resource database

xed*foreground:   black
xed.main.showSeparator:   True
Editor.main.background:   wheat
*XmMainWindow.commandWindowLocation:   COMMAND_ABOVE_WORKSPACE
xed*ShowArrows:   False

The full name xed.main.foreground matches the database line xed*foreground because the * character is a wildcard character that matches any number of levels in the widget hierarchy. The value from the database is automatically converted to the correct type for the resource field. In this case, the value black is converted to a Pixel by the built-in converter that allocates named colours and returns their pixel values. If a conversion fails then a message is output to the user and the resource field defaults to a compiled-in default.

The full name xed.main.showSeparator matches the database line xed.main.showSeparator exactly and the string True is converted to the corresponding ML boolean value true.

If resources cannot be matched by name, then the search tries to match by class instead. There are three classes to be aware of: firstly the application class, secondly the widget class, and thirdly the resource class. Resource classes are listed in the resource tables for each widget class. Each class name is prefixed by XmC to make them distinct from other ML identifiers. This prefix is not needed in the resource database.

In our example the application class is Editor, which means that the database line Editor.main.background will set the XmNbackground field of the main widget to wheat. If we had other applications with different names, but they were members of the same Editor application class, then they too would have their main.background resources set to wheat. In this way it is possible to change the user preferences for a whole class of applications with one line in the resource database.

In our example the widget class for main is XmMainWindow, which means that the database line *XmMainWindow.commandWindowLocation will set the XmNcommandWindowLocation field of the main widget to XmCOMMAND_ABOVE_WORKSPACE. In fact, because of the * wildcard it will set this field in every XmMainWindow in every application we run. In this way it is possible to change the user preferences for a whole class of widgets with one line in the resource database.

Note that the resource database string COMMAND_ABOVE_WORKSPACE has a corresponding ML value called XmCOMMAND_ABOVE_WORKSPACE which is one of the constant constructors of the XmCommandWindowLocation datatype.

datatype XmCommandWindowLocation   = XmCOMMAND_ABOVE_WORKSPACE
| XmCOMMAND_BELOW_WORKSPACE

To specify one value from a range of predefined constants, remove the Xm from the ML constant and use the remaining letters and underscores in the resource database.

The last line of our example is xed*ShowArrows. This will set all resource fields in the xed application that have a class of XmCShowArrows. The resource field XmNshowArrows in the scroll bars that we manage inside the main window have this resource class. In this way it is possible to change the user preferences for a whole class of resources with one line in the resource database.

If the resource value could not be found in the resource database then it looks through the fallback resources specified with the XtAppInitialise function. If the resource value has still not been found then it is set to a compiled-in default.

1.6 Changing and examining Widget state

The current value of widget resources make up the widget's state. To get the current value of a resource, or a list of resources, use the following functions.

val XtGetValue: Widget -> string -> Arg
val XtGetValues: Widget -> string list -> Arg list

The string to pass in is the resource name corresponding to the Arg required. For example, the Arg constructor XmNforeground has the corresponding string "foreground". The code for this example would look like

val (XmNforeground pixel) = XtGetValue widget "foreground" ;

Because the Arg type is an infinite datatype - it is the type exn - you must use the exception names as destructors to get the values out. In the above example the identifier pixel will be bound to the int returned inside the XmNforeground exception packet. This allows the system to be flexible and allow any type to be packaged up and stored as a widget resource.

To set a widget's resource value use one of the following functions.

val XtSetValue: Widget -> Arg -> unit
val XtSetValues: Widget -> Arg list -> unit

Construct the Arg values by applying the Arg exception constructors to the basic ML values. The widget will decide if it wants to accept the new value, or reject it, and may decide to move, resize or redraw itself - the user does not have to do this. For example, setting the current value and slider size on a XmScale widget is done by

XtSetValues scale [XmNvalue 42,XmNsliderSize 100] ;

1.7 What are Callbacks

Callbacks are used to apply ML functions when the user performs some user interface abstraction, such as clicking on a scrollbar, or selecting from a menu. This is a much higher level of abstraction than programming at the X Event level using Xlib. Each widget typically provides several callbacks that the programmer can attach ML functions to. These functions get called when specific user actions are performed - the resource tables later in this manual indicate which callbacks are valid for each widget, and the OSF/Motif Programmer's Reference can tell you more details about the actions that trigger the callbacks. Each callback within a widget has one of the following names from the XtCallback datatype.

datatype XtCallback = XmNactivateCallback | XmNapplyCallback

| XmNarmCallback | XmNbrowseSelectionCallback

| XmNcancelCallback | XmNcascadingCallback

| XmNcommandChangedCallback | XmNcommandEnteredCallback

| XmNdecrementCallback | XmNdefaultActionCallback

| XmNdestroyCallback | XmNdisarmCallback

| XmNdragCallback | XmNentryCallback

| XmNexposeCallback | XmNextendedSelectionCallback

| XmNfocusCallback | XmNgainPrimaryCallback

| XmNhelpCallback | XmNincrementCallback

| XmNinputCallback | XmNlosePrimaryCallback

| XmNlosingFocusCallback | XmNmapCallback

| XmNmessageCallback | XmNmodifyVerifyCallback

| XmNmotionVerifyCallback | XmNmultipleSelectionCallback

| XmNnoMatchCallback | XmNokCallback

| XmNpageDecrementCallback | XmNpageIncrementCallback

| XmNpopdownCallback | XmNpopupCallback

| XmNresizeCallback | XmNsimpleCallback

| XmNsingleSelectionCallback | XmNtoBottomCallback

| XmNtoTopCallback | XmNunmapCallback

| XmNvalueChangedCallback

The function XtSetCallbacks is used to attach a list of (XtCallback,function) pairs to a Widget. It has the following interesting type

val XtSetCallbacks: Widget ->

(XtCallback * (Widget * 'a XEvent * 'b -> 'b)) list ->

'b ->

int -> 'a -> unit

The first parameter is the widget to set the callbacks on. The second parameter is a list of (XtCallback,function) pairs which will replace the current set of callbacks for this widget. This works in the following way - if the user performs an action which causes the widget to trigger its XmNvalueChangedCallback, and if there is a corresponding pair (XmNvalueChangedCallback,f) in the list then the function f will be applied. Each function in the list has the same type

Widget * 'a XEvent * 'b -> 'b

When the widget calls the function, it passes itself as the first element of the tuple followed by the 'a XEvent that triggered the callback, and lastly the 'b user defined state for the widget. The function must return a new 'b value to use as the user defined widget state.

The next parameter to XtSetCallbacks is the 'b to use as the initial state for this widget. Only one callback is ever applied at any one time - the 'b state is passed from one callback to another in a series of state transformations. If a callback function wishes to look at or change part of the widget resource state it can call XtGetValues and XtSetValues.

XtSetCallbacks then returns a function of type

int -> 'a -> unit

which can be used for sending 'a messages to the widget. If the pair (XmNmessageCallback, f) is included in the callback list then f will receive 'a XEvent messages which it can destruct with the Message XEvent destructor. This is a way of sending strongly typed message information between collections of widgets. The int parameter is the delay in milliseconds before sending the message - this is often useful for sending wakeup messages, or for performing auto-repeats.

 

 

Chapter 2

Widget Classes

This chapter describes the major widget classes available in Motif and gives a picture showing their appearance. A diagram next to each picture shows the widget class hierarchy for this class. Tables are included showing the resource names that are applicable to each class. The ML types of related Motif functions are also shown, along with a short description of how the widget is generally used.

Resource names such as XmNforeground begin with an XmN prefix when used as Arg destructors or constructors. When compiling resource files the prefix is not needed.

Resource class names such as XmCPosition begin with an XmC prefix when used as the names of ML strings. When compiling resource files the prefix is not needed.

Constant constructors in datatypes such as XmARROW_DOWN have an Xm prefix in ML, but when used as values in a resource file the prefix is not needed.

2.1 ArrowButton

Core
XmPrimitive
XmArrowButton

Description:

ArrowButton widgets are button widgets generally used to change the geometry or view of part of an application. The widget consists of an arrow indicating the direction of the desired change. Shadows are placed around the arrow to give the appearance that the ArrowButton has been pressed in when the button is selected. The XmNarrowDirection resource is used to choose which way the arrow will point.

Resources:

XmArrowButton Resources
Name   Class   Type
XmNactivateCallback   XmCCallback   (callback)
XmNarmCallback   XmCCallback   (callback)
XmNarrowDirection   XmCArrowDirection   XmArrowDirection
XmNdisarmCallback   XmCDisarmCal1back   (callback)
XmNmultiClick   XmCMultiClick   XmMultiClickType

Functions:

datatype XmArrowDirection = XmARROW_UP | XmARROW_DOWN | XmARROW_LEFT | XmARROW_RIGHT

datatype XmMultiClickType = XmMULTICLICK_DISCARD | XmMULTICLICK_KEEP

val XmCreateArrowButton: Widget -> string -> Arg list -> Widget
val XmCreateArrowButtonGadget: Widget -> string -> Arg list -> Widget

val XmIsArrowButton: Widget -> bool
val XinIsArrowButtonGadget: Widget -> bool

2.2 BulletinBoard

Core
Composite
Constraint
XmManager
XmBulletinBoard

Description:

BulletinBoard is a general container widget used as the basis for most dialog widgets. It provides simple geometry management for its children, without forcing any positioning constraints on them. It can be set to reject geometry requests that result in overlapping children by changing the XmNallowOverlap resource to false.

Resources:

XmBulletinBoard Resources
Name Class Type
XmNallowOverlap XmCAllowOverlap bool
XmNautoUnmanage XmCAutoUnmanage bool
XmNbuttonFontList XmCButtonFontList XFontStruct list
XmNcancelButton XmCWidget Widget
XmNdefaultButton XmCWidget Widget
XmNdefaultPosition XmCDefaultPosition bool
XmNdialogStyle XmCDialogStyle XmDialogStyle
XmNdialogTitle XmCDialogTitle XmString
XmNfocusCallback XmCCallback (callback)
XmNlabelFontList XmCLabelFontList XFontStruct list
XmNmapCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNnoResize XmCNoResize bool
XmNresizePolicy XmCResizePolicy XmResizePolicy
XmNshadowType XmCShadowType XmShadowType
XmNtextFontList XmCTextFontList XFontStruct list
XmNtextTranslations XmCTranslations XtTranslations
XmNunmapCallback XmCCallback (callback)

Functions:

datatype XmDialogStyle = XmDIALOG_MODELESS | XmDIALOG_PRIMARY_APPLICATION_MODAL | XmDIALOG_FULL_APPLICATION_MODAL | XmDIALOG_SYSTEM_MODAL

datatype XmResizePolicy = XmRESIZE_NONE | XmRESIZE_ANY | XmRESIZE_GROW

datatype XmShadowType = XmSHADOW_ETCHED_IN | XmSHADOW_ETCHED_OUT | XmSHADOW_IN | XmSHADOW_OUT

val XmCreateBulletinBoard: Widget -> string -> Arg list -> Widget
val XmCreateBulletinBoardDialog: Widget -> string -> Arg list -> Widget
val XmCreateForm: Widget-> string -> Arg list -> Widget
val XmCreateFormDialog: Widget-> string -> Arg list -> Widget

val XmIsBulletinBoard: Widget-> bool
val XmIsForm: Widget-> bool

2.3 CascadeButton

Core
XmPrimitive
XmLabel
XmCascadeButton

Description:

CascadeButton widgets are used to construct menu systems. It is the only widget that can have a Pulldown MenuPane attached to it as a submenu via the XmNsubMenuId resource.

To create a menu system CascadeButtons are placed inside a MenuBar. Each of these buttons has a MenuPane attached to it as a submenu. These submenus may also contain CascadeButtons which have further submenus, and so on.

CascadeButtons must have RowColumn parents - a MenuPane and a MenuBar are special cases of a RowColumn widget.

Resources:

XmCascadeButton Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNcascadePixmap XmCPixmap Drawable
XmNcascadingCallback XmCCallback (callback)
XmNmappingDelay XmCMappingDelay int
XmNsubMenuld XmCMenuWidget Widget

Functions:

val XmCreateCascadeButton: Widget-> string -> Arg list -> Widget
val XmCreateCascadeButtonGadget: Widget-> string -> Arg list -> Widget
val XmCreateSeparator: Widget-> string -> Arg list -> Widget
val XmCreateSeparatorGadget: Widget-> string -> Arg list -> Widget
val XmCreateMenuBar: Widget-> string -> Arg list -> Widget
val XmCreateOptioMenu: Widget-> string -> Arg list -> Widget
val XmCreatePopupMenu: Widget-> string -> Arg list -> Widget
val XmCreatePulldowrLMenu: Widget-> string -> Arg list -> Widget

val XmCascadeButtonHighlight: Widget-> bool -> unit

val XmIsCascadeButton: Widget-> bool
val XmIsCascadeButtonGadget: Widget-> bool

2.4 Command

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmSelectionBox
XmCommandBox

Description:

Command widgets are special purpose widgets designed for the entry of textual commands with a history mechanism for retaining previous commands. The widget allows new commands to be entered, or old commands can be selected from a history list and edited to make new commands. Each new command is automatically added to the history. The XmNcommand resource is used to get or set the current command string. The XmCommandError can be used to display an error message at the bottom of the history list.

One additional WorkArea child may be added to a command widget.

Resources:

XmCommand Resources
Name Class Type
XmNcommand XmCTextString XmString
XmNcommandChangedCallback XmCCallback (callback)
XmNcommandEnteredCallback XmCCallback (callback)
XmNhistoryItemCount XmCItemCount int
XmNhistoryItems XmCItems XmString list
XmNhistoryMaxItems XmCMaxItems int
XmNhistoryVisibleItemCount XmCVisibleItemCount int
XmNpromptString XmCPromptString XmString  

Functions:

val XmDIALOG_COMMAND: XmDialogType

val XmDIALOG_COMMAND_TEXT: XmDefaultButtonType
val XmDIALOG_PROMPT_LABEL: XmDefaultButtonType
val XmDIALOG_HISTORY list: XmDefaultButtonType

val XmCreateCommand: Widget -> string -> Arg list -> Widget

val XmCommandError: Widget -> XmString -> unit
val XmCommandGetChild: Widget -> XmDefaultButtonType -> Widget

val XmIsCommand: Widget -> bool

2.5 ErrorDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

An ErrorDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, and the error icon which resembles a Stop sign. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCal1back XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_ERROR: XmDialogType

val XmCreateErrorDialog: Widget -> string -> Arg list -> Widget

2.6 FileSelectionDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmSelectionBox
XmFileSelectionBox

Description:

A FileSelectionDialog allows the user to choose one file from among the files and directories in the file system. The dialog has the following components :-

The Filter text field is used for editing the mask which specifies both the base directory and the filter applied to display the entries in that directory. Pressing the RETURN key after editing this field resets the base directory and reapplies the filter. This is equivalent to pressing the Filter button.

The Files list shows the list of filenames that result from applying the filter to the files in the base directory. Clicking on a filename in the list copies it to the Selection field. Double clicking copies the filename to the Selection field and presses the OK button.

The Directories list shows the list of directories found in the base directory. Clicking on a directory in the list inserts that directory name into the mask in the Filter field. Double clicking inserts the directory into the mask and presses the Filter button to reapply the filter to the new base directory.

The Selection text field shows the currently selected filename appended to the current base directory. If this is not the filename that you require you may either edit it by hand, or use the methods described above to choose another filename.

The OK button does not change any of the fields, it simply causes the XmNokCallback to be applied. This function typically gets the value of the XmNtextString resource, and then performs some action with that filename. If the XmNautoUnmanage resource is set to true then the dialog automatically unmanages itself.

Pressing the Filter button reapplies the filter to the filenames found in the base directory, and updates the Files list.

Pressing the Cancel button applies the XmNcancelCallback function, and if the XmNautoUnmanage resource is set to true then the dialog automatically unmanages itself.

Pressing the Help button applies the XmNhelpCallback function.

Resources:

XmFileSelectionBox Resources
Name Class Type
XmNdirListItemCount XmCDirListItemCount int
XmNdirListItems XmCDirListItems XmString list
XmNdirListLabelString XmCDirListLabelString XmString
XmNdirMask XmCDirMask XmString
XmNdirSpec XmCDirSpec XmString
XmNdirectory XmCDirectory XmString
XmNdirectoryValid XmCDirectoryValid bool
XmNfileListltemCount XmCFileListItemCount int
XmNfileListIteme XmCFileListltems XmString list
XmNfileListLabelString XmCFileListLabeiString XmString
XmNfileTypeMask XmCFileTypeMask XmFileTypeMask
XmNfilterLabelString XmCFilterLabelString XmString
XmNlistUpdated XmCListUpdated bool
XmNnoMatchString XmCNoMatchString XmString
XmNpattem XmCpattern XmString

Functions:

datatype XmFileTypeMask = XmFILE_REGULAR | XmFILE_DIRECTORY | XmFILE_ANY_TYPE

val XmDIALOG_FILE_SELECTION: XmDialogType

val XmDIALOG_APPLY_BUTTON: XmDefaultButtonType
val XmDIALOG_CANCEL_BUTTON: XmDefaultButtonType
val XmDIALOG_DEFAULT_BUTTON: XmDefaultButtonType
val XmDIALOG_DIR_LIST: XmDefaultButtonType
val XmDIALOG_DIR_LIST_LABEL: XmDefaultButtonType
val XmDIALOG_FILTER_LABEL: XmDefaultButtonType
val XmDIALOG_FILTER_TEXT: XmDefaultButtonType
val XmDIALOG_HELP_BUTTON: XmDefaultButtonType
val XmDIALOG_LIST: XmDefaultButtonType
val XmDIALOG_LIST_LABEL: XmDefaultButtonType
val XmDIALOG_OK_BUTTON: XmDefaultButtonType
val XmDIALOG_SELECTION_LABEL: XmDefaultButtonType
val XmDIALOG_SEPARATOR: XmDefaultButtonType
val XmDIALOG_TEXT: XmDefaultButtonType

val XmCreateFileSelectionBox: Widget -> string -> Arg list -> Widget
val XmCreateFileSelectionDialog: Widget -> string -> Arg list -> Widget

val XmFileSelectionBoxGetChild: Widget -> XmDefaultButtonType -> Widget
val XmFileSelectionDoSearch: Widget -> XmString -> unit

val XmIsFileSelectionBox: Widget -> bool

2.7 InformationDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

An InformationDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, and the information icon which resembles an Information sign. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCaliback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_INFORMATION: XmDialogType

val XmCreateInformationDialog: Widget -> string -> Arg list -> Widget

2.8 List

Core
XmPrimitive
XmList

Description:

List widgets are used to select of one or more entries from a list of text strings. The XmNselectionPolicy resource determines one of several different selection modes the list may operate in. The XmNitems resource is used to pass in the list of strings to select from. The XmNselectedItems resource is used to set or get the currently selected items.

Resources:

XmList Resources
Name Class Type
XmNautomaticSelection XmCAutomaticSelection bool
XmNbrowseSelectionCallback XmCCallback (callback)
XmNdefaultActionCallback XmCCallback (callback)
XmNdoubleClickInterval XmCDoubleClickInterval int
XmNextendedSelectionCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNitemCount XmCItemCount int
XmNitems XmCItems XmString list
XmNlistMarginHeight XmCListMarginHeight int
XmNlistMarginWidth XmCListMarginWidth int
XmNlistSizePolicy XmCListSizePolicy XmVisualPolicy
XmNlistSpacing XmCListSpacing int
XmNmultipleSelectionCallback XmCCallback (callback)
XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy
XmNselectedItemCount XmCSelectedItemCount int
XmNselectedItems XmCSelectedItems XmString list
XmNselectionPolicy XmCSelectionPolicy XmSelectionPolicy
XmNsingleSelectionCallback XmCCallback (callback)
XmNstringDirection XmCStringDirection XmStringDirection
XmNtopItemPosition XmCTopItemPosition int
XmNvisibleItemCount XmCVisibleItemCount int

Functions:

datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED

datatype XmSelectionPolicy = XmSINGLE_SELECT | XmMULTIPLE_SELECT | XmEXTENDED_SELECT | XmBROWSE_SELECT

datatype XmVisualPolicy = XmVARIABLE | XmCONSTANT | XmRESIZE_IF_POSSIBLE

val XmCreateList: Widget -> string -> Arg list -> Widget
val XmCreateScrolledList: Widget -> string -> Arg list -> Widget

val XmIsList: Widget -> bool
val XmIsScrolledWindow: Widget -> bool

2.9 MainWindow

Core
Composite
Constraint
XmManager
XmScrolledWindow
XmMainWindow

Description:

The MainWindow widget can be used to manage the primary view of an application. This widget has a number of optional components including a menu bar, a command window, a message window, scroll bars, and a work area. The required components are first created and managed and are then passed to the function XmMainWindowSetAreas so that they can be organised together to create the application's primary view. The XmNcommandWindowLocation resource can be used to control the positioning of the command window relative to the other windows.

Resources:

XmMainWindow Resources
Name Class Type
XmNcommandWindow XmCCommandWindow Widget
XmNcommandWindowLocation XmCCommandWindowLocation XmCommandWindowLocation
XmNmainWindowMarginHeight XmCMainWindowMarginHeight int
XmNmainWindowMarginWidth XmCMainWindowMarginWidth int
XmNmenuBar XmCMenuBar Widget
XmNmessageWindow XmCMessageWindow Widget
XmNshowSeparator XmCShowSeparator bool

 

Functions:

datatype XmCommandWindowLocation = XmCOMMAND_ABOVE_WORKSPACE | XmCOMMAND_BELOW_WORKSPACE

val XmCreateMainWindow: Widget -> string -> Arg list -> Widget

val XmMainWindowSetAreas: Widget -> Widget -> Widget -> Widget -> Widget -> Widget -> unit

val XmMainWindowSepl: Widget -> Widget

val XmMainWindowSep2: Widget -> Widget

val XmMainWindowSep3: Widget -> Widget

val XmIsMainWindow: Widget -> bool

 

2.10 MessageDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

A MessageDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, but does not have any predefined symbol icon. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_MESSAGE: XmDialogType

val XmDIALOG_CANCEL_BUTTON: XmDefaultButtonType
val XmDIALOG_DEFAULT_BUTTON: XmDefaultButtonType
val XmDIALOG_HELP_BUTTON: XmDefaultButtonType
val XmDIALOG_MESSAGE_LABEL: XmDefaultButtonType
val XmDIALOG OK BUTTON: XmDefaultButtonType
val XmDIALOG_SEPARATOR: XmDefaultButtonType
val XmDIALOG_SYMBOL_LABEL: XmDefaultButtonType

val XmCreateMessageBox: Widget-> string -> Arg list -> Widget
val XmCreateMessageDialog: Widget-> string -> Arg list -> Widget

val XmIsMessageBox: Widget-> bool

val XmMessageBoxGetChild: Widget -> XmDefaultButtonType -> Widget

2.11 OptionMenu

Core
Composite
Constraint
XmManager
XmRowcolumn

Description:

An OptionMenu is a specific instance of a RowColumn widget containing a label and a cascade button. Pressing the cascade button pulls down a menu pane so that one of the menu pane items can be selected. The menu pane is then removed and the selected item is displayed inside the cascade button. The XmNlabelString resource is used to set the label, and the XmNsubMenuId resource is used to set the menu pane.

Resources:

XmRowColumn Resources
Name Class Type
XmNadjustLast XmCAdjustLast bool
XmNadjustMargin XmCAdjustMargin bool
XmNbuttonAcceleratorText XmCButtonAcceleratorText XmString list
XmNbuttonAccelerators XmCButtonAccelerators string list
XmNbuttonCount XmCButtonCount int
XmNbuttonMnemonicCharSets XmCButtonMnemonicCharSets XmString list
XmNbuttonMnemonics XmCButtonMnemonics KeySym list
XmNbuttonSet XmCButtonSet int
XmNbuttonType XmCButtonType XmButtonType list
XmNbuttons XmCButtons XmString list
XmNentryAlignment XmCAlignment XmAlignment
XmNentryBorder XmCEntryBorder int
XmNentryCallback XmCCallback (callback)
XmNisAligned XmCIsAligned bool
XmNisHomogeneous XmCIsHomogeneous bool
XmNlabelString XmCLabelString XmString
XmNmapCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmenuAccelerator XmCAccelerators string
XmNmenuCursor XmCCursor Cursor
XmNmenuHelpWidget XmCMenuWidget Widget
XmNmenuHistory XmCMenuWidget Widget
XmNmenuPost XmCMenuPost string
XmNmnemonic XmCMnemonic int
XmNmnemonicCharSet XmCMnemonicCharSet string
XmNnumColumns XmCNumColumns int
XmNoptionLabel XmCOptionLabel XmString
XmNoptionMnemonic XmCOptionMnemonic int
XmNorientation XmCOrientation XmOrientation
XmNpacking XmCPacking XmPacking
XmNpopupEnabled XmCPopupEnabled bool
XmNpostFromButton XmCPostFromButton int
XmNradioAlwaysOne XmCRadioAlwaysOne bool
XmNradioBehavior XmCRadioBehavior bool
XmNresizeHeight XmCResizeHeight bool
XmNresizeWidth XmCResizeWidth bool
XmNrowColumnType XmCRowColumnType XmRowColumnType
XmNsimpleCallback XmCCallback (callback)
XmNspacing XmCSpacing int
XmNsubMenuld XmCMenuWidget Widget
XmNunmapCallback XmCCallback (callback)

Functions:

val XmCreateOptionMenu: Widget-> string -> Arg list -> Widget
val XmCreateSimpleOptionMenu: Widget-> string -> Arg list -> Widget

val XmOptionButtonGadget: Widget -> Widget
val XmOptionLabelGadget: Widget -> Widget

2.12 PanedWindow

Core
Composite
Constraint
XmManager
XmPanedWindow

Description:

A PanedWindow is a composite widget that arranges its children vertically. The width of a paned window is equal to the widest child. The height of each pane can be adjusted by dragging the sash in the separators between the panes.

Resources:

XmPanedWindow Resources
Name Class Type
XmNallowResize XmCBoolean bool
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNpaneMaximum XmCPaneMaximum int
XmNpaneMinimum XmCPaneMinimum int
XmNrefigureMode XmCBoolean bool
XmNsashHeight XmCSashHeight int
XmNsashIndent XmCSashIndent int
XmNsashShadowThickness XmCShadowThickness int
XmNsashWidth XmCSashWidth int
XmNseparatorOn XmCSeparatorOn bool
XmNskipAdjust XmCBoolean bool
XmNspacing XmCSpacing int

Functions:

val XmCreatePanedWindow: Widget -> string -> Arg list -> Widget

val XmIsPanedWindow: Widget -> bool

2.13 PromptDialog

Core
Composite
Constraint
XmManager
XmBulletinboard
XmSelectionBox

Description:

A PromptDialog widget is a specific instance of a MessageBox widget. It has an editable text field, OK, Cancel and Help buttons, and a prompt label. The XmNtextString resource is used to set the editable text string, and the XmNselectionLabelString resource is used to set the prompt.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCal1back XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_PROMPT: XmDialogType

val XmCreatePromptDialog: Widget -> string -> Arg list -> Widget

2.14 QuestionDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

A QuestionDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, and the question icon which resembles a question mark. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCailback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_QUESTION: XmDialogType

val XmCreateQuestionDialog: Widget -> string -> Arg list -> Widget

2.15 Scale

Core
Composite
Constraint
XmManager
XmScale

Description:

A Scale widget is used to display and select a value from within a range of values. The XmNminimum and XmNmaximum resources set the range of the values, and the XmNvalue resource can be used to set and get the current value. The XmNtitleString resource is used to set the title label.

Resources:

XmScale Resources
Name Class Type
XmNdecimalPoints XmCDecimalPoints int
XmNdragCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNhighlightOnEnter XmCHighlightOnEnter bool
XmNhighlightThickness XmCHighlightThickness int
XmNmaximum XmCMaximum int
XmNminimum XmCMinimum int
XmNorientation XmCOrientation XmOrientation
XmNprocessingDirection XmCProcessingDirection XmProcessingDirection
XmNscaleHeight XmCScaleHeight int
XmNscaleMultiple XmCScaleMultiple int
XmNscaleWidth XmCScaleWidth int
XmNshowValue XmCShowValue bool
XmNtitleString XmCTitleString XmString
XmNvalue XmCValue int
XmNvalueChangedCallback XmCCallback (callback)

Functions:

datatype XmOrientation = XmVERTICAL | XmHORIZONTAL

datatype XmProcessingDirection = XmMAX_ON_TOP | XmMAX_ON_BOTTOM | XmMAX_ON_LEFT | XmMAX_ON_RIGHT

val XmCreateScale: Widget -> string -> Arg list -> Widget

val XmIsScale: Widget -> bool

2.16 ScrollBar

Core
XmPrimitive
XmScrollBar

Description:

A ScrollBar widget is used to indicate how much of a data set is currently being displayed in some other widget. The scrollbar can be adjusted by the user so that any part of the data set is displayed. The XmNminimum and XmNmaximum resources set the range of the data set, and the XmNvalue resource can be used to set and get the current position. The XmNsliderSize resource should be set to indicate how much of the set is currently visible.

Resources:

XmScrollBar Resources
Name Class Type
XmNdecrementCallback XmCCallback (callback)
XmNdragCallback XmCCallback (callback)
XmNincrement XmCIncrement int
XmNincrementCallback XmCCallback (callback)
XmNinitialDelay XmCInitialDelay int
XmNmaximum XmCMaximum int
XmNminimum XmCMinimum int
XmNorientation XmCOrientation XmOrientation
XmNpageDecrementCallback XmCCallback (callback)
XmNpageIncrement XmCPageIncrement int
XmNpageIncrementCallback XmCCallback (callback)
XmNprocessingDirection XmCProcessingDirection XmProcessingDirection
XmNrepeatDelay XmCRepeatDelay int
XmNshowArrows XmCShowArrows bool
XmNsliderSize XmCSliderSize int
XmNtoBottomCallback XmCCallback (callback)
XmNtoTopCallback XmCCallback (callback)
XmNtroughColor XmCtroughColor int
XmNvalue XmCValue int
XmNvalueChangedCallback XmCCallback (callback)

Functions:

datatype XmOrientation = XmVERTICAL | XmHORIZONTAL

datatype XmProcessingDirection = XmMAX_ON_TOP | XmMAX_ON_BOTTOM | XmMAX_ON_LEFT | XmMAX_ON_RIGHT

val XmCreateScrollBar: Widget -> string -> Arg list -> Widget

val XinIsScrollBar: Widget -> bool

2.17 ScrolledList

Core
Composite
Constraint
XmManager
XmScrolledWindow

Description:

A ScrolledList widget is a composite widget consisting of a list widget contained within a scrolled window. list widgets are used to select of one or more entries from a list of text strings. The XmNselectionPolicy resource determines one of several selection different modes the list may operate in. The XmNitems resource is used to pass in the list of strings to select from. The XmNselectedItems resource is used to set or get the currently selected items.

Resources:

XmScrolledWindow Resources
Name Class Type
XmNclipWindow XmCClipWindow Widget
XmNhorizontalScrollBar XmCHorizontalScrollBar Widget
XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy
XmNscrollBarPlacement XmCScrollBarPlacement XmScrollBarPlacement
XmNscrolledWindowMarginHeight XmCScrolledWindowMarginHeight int
XmNscrolledWindowMarginWidth XmCScrolledWindowMarginWidth int
XmNserollingPolicy XmCScrollingPolicy XmScrollingPolicy
XmNspacing XmCSpacing int
XmNverticalScrollBar XmCVerticalScrollBar Widget
XmNvisualPolicy XmCVisualPolicy XmVisualPolicy
XmNworkWindow XmCWorkWindow Widget

Functions:

datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED

datatype XmSelectionPolicy = XmSINGLE_SELECT | XmMULTIPLE_SELECT | XmEXTENDED_SELECT | XmBROWSE_SELECT

datatype XmVisualPolicy = XmVARIABLE | XmCONSTANT | XmRESIZE_IF_POSSIBLE

val XmCreateList: Widget -> string -> Arg list -> Widget
val XmCreateScrolledList: Widget -> string -> Arg list -> Widget

val XmIsList: Widget -> bool
val XmIsScrolledWindow: Widget -> bool

2.18 ScrolledText

Core
Composite
Constraint
XmManager
XmScrolledWindow

Description:

A ScrolledText widget is a composite widget consisting of a text widget contained within a scrolled window.

Resources:

XmText Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNautoShowCursorPosition XmCAutoShowCursorPosition bool
XmNblinkRate XmCBlinkRate int
XmNcolumns XmCColumns int
XmNcursorPosition XmCCursorPosition int
XmNcursorPositionVisible XmCCursorPositionVisible bool
XmNeditMode XmCEditMode XmEditMode
XmNeditable XmCEditable bool
XmNfocusCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNgainPrimaryCallback XmCCallback (callback)
XmNlosePrimaryCallback XmCCallback (callback)
XmNlosingFocusCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmaxLength XmCMaxLength int
XmNmodifyVerifyCallback XmCCallback (callback)
XmNmotionVerifyCallback XmCCallback (callback)
XmNpendingDelete XmCPendingDelete bool
XmNresizeHeight XmCResizeHeight bool
XmNresizeWidth XmCResizeWidth bool
XmNrows XmCRows int
XmNscrollHorizontal XmCScroll bool
XmNscrollLeftSide XmCScrollSide bool
XmNscrollTopSide XmCScrollSide bool
XmNscrollVertical XmCScroll bool
XmNselectThreshold XmCSelectThreshold int
XmNselectionArray XmCSelectionArray XmTextScanType list
XmNselectionArrayCount XmCSelectionArrayCount int
XmNtopCharacter XmCTextPosition int
XmNvalueChangedCallback XmCCallback (callback)
XmNverifyBell XmCVerifyBell bool
XmNwordWrap XmCWordWrap bool

Functions:

datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED

datatype XmScrollingPolicy = XmAUTOMATIC | XmAPPLICATION_DEFINED

datatype XmTextScanType = XmSELECT_POSITION | XmSELECT_WHITESPACE | XmSELECT_WORD | XmSELECT_LINE | XmSELECT_ALL | XmSELECT_PARAGRAPH

val XmCreateText: Widget -> string -> Arg list -> Widget
val XmCreateScrolledText: Widget -> string -> Arg list -> Widget

val XmTextGetString: Widget -> string
val XmTextSetString: Widget -> string -> unit
val XmTextSetInsertionPosition: Widget -> int -> unit

val XmIsText: Widget -> bool
val XmIsScrolledWindow: Widget -> bool

2.19 ScrolledWindow

Core
Composite
Constraint
XmManager
XmScrolledWindow

Description:

A ScrolledWindow is a widget that can manage two scroll bars and a work area. If the XmNscrollingPolicy resource is set to XmAUTOMATIC then all the scrolling behaviour is provided by the ScrolledWindow widget and the user just has to make the work area big enough to display all of the data. Other modes of operation exist for cases where this is inappropriate, such as displaying the text from a very long file.

Resources:

XmScrolledWindow Resources
Name Class Type
XmNclipWindow XmCClipWindow Widget
XmNhorizontalScrollBar XmCHorizontalScroliBar Widget
XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy
XmNscrollBarPlacement XmCScrollBarPlacement XmScrollBarPlacement
XmNserolledWindowMarginHeight XmCScrolledWindowMarginHeight int
XmNscrolledWindowMarginWidth XmCScrolledWindowMarginWidth int
XmNscrollingPolicy XmCScrollingPolicy XmScrollingPolicy
XmNspacing XmCSpacing int
XmNverticalScrollBar XmCVerticalScrollBar Widget
XmNvisualPolicy XmCVisualPolicy XmVisualPolicy
XmNworkWindow XmCWorkWindow Widget

Functions:

datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED

datatype XmScrollBarPlacement = XmBOTTOM_RIGHT | XmTOP_RIGHT | XmBOTTOM_LEFT | XmTOP_LEFT

datatype XmScrollingPolicy = XmAUTOMATIC | XmAPPLICATION_DEFINED

datatype XmVisualPolicy = XmVARIABLE | XmCONSTANT | XmRESIZE_IF_POSSIBLE

val XmCreateScrolledWindow: Widget -> string -> Arg list -> Widget

val XmScrolledWindowSetAreas: Widget -> Widget -> Widget -> Widget -> unit

val XmIsScrolledWindow: Widget -> bool

2.20 SelectionDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmSelectionBox

Description:

A SelectionDialog includes a scrolled list, an editable text field, labels and four buttons which are labelled OK, Cancel, Apply and Help by default. Use the XmNlistItems resource to set the contents of the scrolled list, and the XmNtextString resource to set and get the value of the editable text field.

Resources:

XmSelectionBox Resources
Name Class Type
XmNapplyCallback XmCCallback (callback)
XmNapplyLabelString XmCApplyLabelString XmString
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNlistItemCount XmCItemCount int
XmNlistItems XmCItems XmString list
XmNlistLabelString XmCListLabelString XmString
XmNlistVisibleltemCount XmCVisibleItemCount int
XmNminimizeButtons XmCMinimizeButtons bool
XmNmustMatch XmCMustMatch bool
XmNnoMatchCallback XmCCallback (callback)
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNselectionLabelString XmCSelectionLabelString XmString
XmNtextAccelerators XmCAccelerators XtAccelerators
XmNtextColumns XmCColumns int
XmNtextString XmCTextString XmString

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_SELECTION: XmDialogType

val XmDIALOG_APPLY_BUTTON: XmDefaultButtonType
val XmDIALOG_CANCEL_BUTTON: XmDefaultButtonType
val XmDIALOG_DEFAULT_BUTTON: XmDefaultButtonType
val XmDIALOG_HELP_BUTTON: XmDefaultButtonType
val XmDIALOG_LIST: XmDefaultButtonType
val XmDIALOG_LIST_LABEL: XmDefaultButtonType
val XmDIALOG_OK_BUTTON: XmDefaultButtonType
val XmDIALOG_SELECTION_LABEL: XmDefaultButtonType
val XmDIALOG_SEPARATOR: XmDefaultButtonType
val XmDIALOG_TEXT: XmDefaultButtonType

val XmCreateSelectionBox: Widget -> string -> Arg list -> Widget
val XmCreateSelectionDialog: Widget -> string -> Arg list -> Widget

val XmSelectionBoxGetChild: Widget -> XmDefaultButtonType -> Widget

val XmIsSelectionBox: Widget -> bool

2.21 Text

Core
XmPrimitive
XmText

Description:

The text widget provides both single and multi-line text editors with cut/copy/paste facilities. Use the XmNeditMode resource to choose single or multi-line editing. Use the function XmTextSetString to copy a string into the widget, and the function XmTextGetString to get it back again. Line breaks within multi-line strings are represented by "\n" characters.

Resources:

XmText Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNautoShowCursorPosition XmCAutoShowCursorPosition bool
XmNblinkRate XmCBlinkRate int
XmNcolumns XmCColumns int
XmNcursorPosition XmCCursorPosition int
XmNcursorPositionVisible XmCCursorPositionVisible bool
XmNeditMode XmCEditMode XmEditMode
XmNeditable XmCEditable bool
XmNfocusCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNgainPrimaryCallback XmCCallback (callback)
XmNlosePrimaryCallback XmCCallback (callback)
XmNlosingFocusCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmaxLength XmCMaxLength int
XmNmodifyVerifyCallback XmCCallback (callback)
XmNmotionVerifyCallback XmCCallback (callback)
XmNpendingDelete XmCPendingDelete bool
XmNresizeHeight XmCResizeHeight bool
XmNresizeWidth XmCResizeWidth bool
XmNrows XmCRows int
XmNscrollHorizontal XmCScroll bool
XmNscrollLeftSide XmCScrollSide bool
XmNscrollTopSide XmCScrollSide bool
XmNscrollVertical XmCScroll bool
XmNselectThreshold XmCSelectThreshold int
XmNselectionArray XmCSelectionArray XmTextScanType list
XmNselectionArrayCount XmCSelectionArrayCount int
XmNtopCharacter XmCTextPosition int
XmNvalueChangedCallback XmCCallback (callback)
XmNverifyBell XmCVerifyBell bool
XmNwordWrap XmCWordWrap bool

Functions:

datatype XmTextScanType = XmSELECT_POSITION | XmSELECT_WHITESPACE | XmSELECT_WORD | XmSELECT_LINE | XmSELECT_ALL | XmSELECT_PARAGRAPH

val XmCreateText: Widget-> string -> Arg list -> Widget
val XmCreateScrolledText: Widget-> string -> Arg list -> Widget

val XmTextGetString: Widget -> string
val XmTextSetString: Widget -> string unit
val XmTextSetInsertionPosition: Widget int -> unit

val XmIsText: Widget -> bool
val XmIsScrolledWindow: Widget -> bool

2.22 ToggleButton

Core
XmPrimitive
XmLabel
XmToggleButton

Description:

A ToggleButton is used to display and set boolean or one-of-many states. When used for boolean states the ToggleButton uses a filled or empty square indicator to show the set or unset state. When used for one-of-many states the ToggleButton uses a filled or empty diamond to show the set and unset states. Pressing a boolean ToggleButton toggles the state from set to unset. Pressing one button in a RowColumn widget that has its XmNradioBehavior resource set to true, will set that button and unset all the others. In this case all the ToggleButtons automatically set their XmNindicatorType resource to XmONE_OF_MANY.

Resources:

XmToggleButton Resources
Name Class Type
XmNarmCallback XmCCallback (callback)
XmNdisarmCallback XmCDisarmCal1back (callback)
XmNfillOnSelect XmCFillOnSelect bool
XmNindicatorOn XmCIndicatorOn bool
XmNindicatorSize XmCIndicatorSize int
XmNindicatorType XmCIndicatorType XmIndicatorType
XmNselectColor XmCSelectColor int
XmNselectInsensitivePixmap XmCSelectInsensitivePixmap Drawable
XmNselectPixmap XmCSelectPixmap Drawable
XmNset XmCset bool
XmNspacing XmCSpacing int
XmNvalueChangedCallback XmCCallback (callback)
XmNvisibleWhenOff XmCVisibleWhenOff bool

Functions:

datatype XmIndicatorType = XmN_OF_MANY | XmONE_OF_MANY

val XmCreateToggleButton: Widget -> string -> Arg list -> Widget
val XmCreateToggleButtonGadget: Widget -> string -> Arg list -> Widget

val XmIsToggleButton: Widget -> bool
val XmIsToggleButtonGadget: Widget -> bool

2.23 WarningDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

A WarningDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, and the warning icon which resembles an exclamation mark. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_WARNING: XmDialogType

val XmCreateWarningDialog: Widget -> string -> Arg list -> Widget

2.24 WorkingDialog

Core
Composite
Constraint
XmManager
XmBulletinBoard
XmMessageBox

Description:

A WorkingDialog widget is a specific instance of a MessageBox widget. It has a message field, OK, Cancel and Help buttons, and the working icon which resembles an hourglass. The XmNmessageString resource is used to set the message string.

Resources:

XmMessageBox Resources
Name Class Type
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCaliback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

Functions:

datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END

val XmDIALOG_WORKING: XmDialogType

val XmCreateWorkingDialog: Widget -> string -> Arg list -> Widget

 

Chapter 3

Resource Tables

The following type conversions are implicit in the Poly/ML implementation of the Motif library. Wherever it refers to the C type in publications about the Motif library the corresponding ML type is substituted.

Note that often the Motif documentation often incorrectly specifies the type Window instead of Widget when describing resource lists.

Note also that in the current implementation the type XmString is identical to string.

short   int
enum   datatype
int with predefined values   datatype
unsigned char with predefined values   datatype
Atom   int
Cardinal   int
Dimension   int
KeySym   int
Pixel   int
Pixmap   Drawable
Position   int
String *   string list
Window   Drawable (or Widget)
XmString   XmString = string
XmStringCharSetTable   string list
XmStringTable   XmString list
XmTextPosition   int

 

3.1 ApplicationShell

ApplicationShell Resources
Name Class Type
XmNargc XmCArgc int
XmNargv XmCArgv string list

 

3.2 Composite

Composite Resources
Name Class Type
XmNchildren XmCChildren Widget list
XmNnumChildren XmCNumChildren int

 

3.3 Core

Core Resources
Name Class Type
XmNaccelerators XmCAccelerators XtAccelerators
XmNancestorSensitive XmCBoolean bool
XmNbackground XmCBackground int
XmNbackgroundPixmap XmCBackgroundPixmap Drawable
XmNborderColor XmCBorderColor int
XmNborderPixmap XmCPixmap Drawable
XmNborderWidth XmCBorderWidth int
XmNcolormap XmCColormap Colormap
XmNdepth XmCDepth int
XmNdestroyCallback XmCCallback (callback)
XmNheight XmCHeight int
XmNinitialResourcesPersistent XmCInitialResourcesPersistent bool
XmNmappedWhenManaged XmCMappedWhenManaged bool
XmNsensitive XmCSensitive bool
XmNtranslations XmCTranslations XtTranslations
XmNwidth XmCWidth int
XmNx XmCX int
XmNy XmCY int

 

3.4 Object

Object Resources
Name Class Type
XmNdestroyCallback XmCCallback (callback)

 

3.5 RectObj

RectObj Resources
Name Class Type
XmNancestorSensitive XmCBoolean bool
XmNborderWidth XmCBorderWidth int
XmNheight XmCHeight int
XmNsensitive XmCSensitive bool
XmNwidth XmCWidth int
XmNx XmCX int
XmNy XmCY int

 

3.6 Shell

Shell Resources
Name Class Type
XmNallowShellResize XmCAllowShellResize bool
XmNgeometry XmCGeometry string
XmNoverrideRedirect XmCOverrideRedireet bool
XmNpopdownCallback XmCCallback (callback)
XmNpopupCallback XmCCallback (callback)
XmNsaveUnder XmCSaveUnder bool
XmNvisual XmCVisual Visual

 

3.7 TopLevelShell

TopLevelShell Resources
Name Class Type
XmNiconName XmCIconName string
XmNiconNameEncoding XmCIconNameEncoding int
XmNiconic XmCIconic bool

 

3.8 TransientShell

TransientShell Resources
Name Class Type
XmNtransientFor XmCTransientFor Widget

 

3.9 VendorShell

VendorShell Resources
Name Class Type
XmNdefaultFontList XmCDefaultFontList XFontStruct list
XmNdeleteResponse XmCDeleteResponse XmDeleteResponse
XmNkeyboardFocusPolicy XmCKeyboardFocusPolicy XmKeyboardFocusPolicy
XmNmwmDecorations XmCMwmDecorations int
XmNmwmFunctions XmCMwmFunctions int
XmNmwmInputMode XmCMwmInputMode int
XmNmwmMenu XmCMwmMenu string
XmNshellUnitType XmCShellUnitType XmUnitType
XmNuseAsyncGeometry XmCUseAsyncGeometry bool

 

3.10 WMShell

WMShell Resources
Name Class Type
XmNbaseHeight XmCBaseHeight int
XmNbaseWidth XmCBaseWidth int
XmNheightInc XmCHeightInc int
XmNiconMask XmCIconMask Drawable
XmNiconPixmap XmCIconPixmap Drawable
XmNiconWindow XmCIconWindow Drawable
XmNiconX XmCIconX int
XmNiconY XmCIconY int
XmNinitialState XmCInitialState XWMStateHint
XmNinput XmCInput bool
XmNmaxAspectX XmCMaxAspectX int
XmNmaxAspectY XmCMaxAspectY int
XmNmaxHeight XmCMaxHeight int
XmNmaxWidth XmCMaxWidth int
XmNminAspectX XmCMinAspectX int
XmNminAspectY XmCMinAspectY int
XmNminHeight XmCMinHeight int
XmNminWidth XmCMinWidth int
XmNtitle XmCTitle string
XmNtitleEncoding XmCTitleEncoding int
XmNtransient XmCTransient bool
XmNwaitForWm XmCWaitForWm bool
XmNwidthInc XmCWidthInc int
XmNwinGravity XmCWinGravity int
XmNwindowGroup XmCWindowGroup Drawable
XmNwmTimeout XmCWmTimeout int

 

3.11 XmArrowButton

XmArrowButton Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNarmCallback XmCCallback (callback)
XmNarrowDirection XmCArrowDirection XmArrowDirection
XmNdisarmCal1back XmCDisarmCallback (callback)
XmNmultiClick XmCMultiClick XmMultiClickType

 

3.12 XmBulletinBoard

XmBulletinBoard Resources
Name Class Type
XmNallowOverlap XmCAllowOverlap bool
XmNautoUnmanage XmCAutoUnmanage bool
XmNbuttonFontList XmCButtonFontList XFontStruct list
XmNcancelButton XmCWidget Widget
XmNdefaultButton XmCWidget Widget
XmNdefaultPosition XmCDefaultPosition bool
XmNdialogStyle XmCDialogStyle XmDialogStyle
XmNdialogTitle XmCDialogTitle XmString
XmNfocusCallback XmCCallback (callback)
XmNlabelFontList XmCLabelFontList XFontStruct list
XmNmapCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNnoResize XmCNoResize bool
XmNresizePolicy XmCResizePolicy XmResizePolicy
XmNshadowType XmCShadowType XmShadowType
XmNtextFontList XmCTextFontList XFontStruct list
XmNtextTranslations XmCTranslations XtTranslations
XmNunmapCallback XmCCallback (callback)

 

3.13 XmCascadeButton

XmCascadeButton Resources
Name Class Type
XmNactivateCallback XmCCallback (Callback)
XmNcascadePixmap XmCPixmap Drawable
XmNcascadingCallback XmCCallback (callback)
XmNmappingDelay XmCMappingDelay int
XmNsubMenuId XmCMenuWidget Widget

 

3.14 XmCommand

XmCommand Resources
Name Class Type
XmNcommand XmCTextString XmString
XmNcommandChangedCallback XmCCallback (callback)
XmNcommandEnteredCallback XmCCallback (callback)
XmNhistoryItemCount XmCItemCount int
XmNhistoryItems XmCItems XmString list  
XmNhistoryMaxItems XmCMaxItems int
XmNhistoryVisibleItemCount XmCVisibleItemCount int
XmNpromptString XmCPromptString XmString

 

3.15 XmDrawingArea

XmDrawingArea Resources
Name Class Type
XmNexposeCallback XmCCallback (callback)
XmNinputCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNresizeCallback XmCCallback (callback)
XmNresizePolicy XmCResizePolicy XmResizePolicy

 

3.16 XmDrawnButton

XmDrawnButton Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNarmCallback XmCCallback (callback)
XmNdisarmCallback XmCDisarmCallback (callback)
XmNexposeCallback XmCCallback (callback)
XmNmultiClick XmCMultiClick XmMultiClickType
XmNpushButtonEnabled XmCPushButtonEnabled bool
XmNresizeCallback XmCCallback (callback)
XmNshadowType XmCShadowType XmShadowType

 

3.17 XmFileSelectionBox

XmFileSelectionBox Resources
Name Class Type
XmNdirListItemCount XmCDirListItemCount int
XmNdirListItems XmCDirListItems XmString list
XmNdirListLabelString XmCDirListLabelString XmString
XmNdirMask XmCDirMask XmString
XmNdirSpec XmCDirSpec XmString
XmNdirectory XmCDirectory XmString
XmNdirectoryValid XmCDirectoryValid bool
XmNfileListItemCount XmCFileListItemCount int
XmNfileListItems XmCFileListItems XmString list
XmNfileListLabelString XmCFileListLabelString XmString
XmNfileTypeMask XmCFileTypeMask XmFileTypeMask
XmNfilterLabelString XmCFilterLabelString XmString
XmNlistUpdated XmCListUpdated bool
XmNnoMatchString XmCNoMatchString XmString
XmNpattern XmCPattern XmString

 

3.18 XmForm

XmForm Resources
Name Class Type
XmNbottomAttachment XmCAttachment XmAttachment
XmNbottomOffset XmCOffset int
XmNbottomPosition XmCPosition int
XmNbottomWidget XmCWidget Widget
XmNfractionBase XmCFraction int
XmNhorizontalSpacing XmCSpacing int
XmNleftAttachment XmCAttachment XmAttachment
XmNleftOffset XmCOffset int
XmNleftPosition XmCPosition int
XmNleftWidget XmCWidget Widget
XmNresizable XmCBoolean bool
XmNrightAttachment XmCAttachment XmAttachment
XmNrightOffset XmCOffset int
XmNrightPosition XmCPosition int
XmNrightWidget XmCWidget Widget
XmNrubberPositioning XmCRubberPositioning bool
XmNtopAttachment XmCAttachment XmAttachment
XmNtop0ffset XmCOffset int
XmNtopPosition XmCPosition int
XmNtopWidget XmCWidget Widget
XmNverticalSpacing XmCSpacing int

 

3.19 XmFrame

XmFrame Resources
Name Class Type
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNshadowType XmCShadowType XmShadowType

 

3.20 XmGadget

XmGadget Resources
Name Class Type
XmNhelpCallback XmCCallback (callback)
XmNhighlightOnEnter XmCHighlightOnEnter bool
XmNhighlightThickness XmCHighlightThickness int
XmNnavigationType XmCNavigationType XmNavigationType
XmNshadowThickness XmCShadowThickness int
XmNtraversalOn XmCTraversalOn bool
XmNunitType XmCUnitType XmUnitType

 

3.21 XmLabel

XmLabel Resources
Name Class Type
XmNaccelerator XmCAccelerator string
XmNacceleratorText XmCAcceleratorText XmString
XmNalignment XmCAlignment XmAlignment
XmNfontList XmCFontList XFontStruct list
XmNlabelInsensitivePixmap XmCLabelInsensitivePixmap Drawable
XmNlabelPixmap XmCLabelPixmap Drawable
XmNlabelString XmCLabelString XmString
XmNlabelType XmCLabelType XmLabelType
XmNmarginBottom XmCMarginBottom int
XmNmarginHeight XmCMarginHeight int
XmNmarginLeft XmCMarginLeft int
XmNmarginRight XmCMarginRight int
XmNmarginTop XmCMarginTop int
XmNmarginWidth XmCMarginWidth int
XmNmnemonic XmCMnemonic int
XmNmnemonicCharSet XmCMnemonicCharSet string
XmNrecomputeSize XmCRecomputeSize bool
XmNstringDirection XmCStringDirection XmStringDirection

 

3.22 XmList

XmList Resources
Name Class Type
XmNautomaticSelection XmCAutomaticSelection bool
XmNbrowseSelectionCallback XmCCallback (callback)
XmNdefaultActionCallback XmCCallback (callback)
XmNdoubleClickInterval XmCDoubleClickInterval int
XmNextendedSelectionCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNitemCount XmCItemCount int
XmNitems XmCItems XmString list
XmNlistMarginHeight XmCListMarginHeight int
XmNlistMarginWidth XmCListMarginWidth int
XmNlistSizePolicy XmCListSizePolicy XmVisualPolicy
XmNlistSpacing XmCListSpacing int
XmNmultipleSelectionCallback XmCCallback (callback)
XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy
XmNselectedItemCount XmCSelectedItemCount int
XmNselectedItems XmCSelectedItems XmString list
XmNselectionPolicy XmCSelectionPolicy XmSelectionPolicy
XmNsingleSelectionCallback XmCCallback (callback)
XmNstringDirection XmCStringDirection XmStringDirection
XmNtopItemPosition XmCTopItemPosition int
XmNvisibleItemCount XmCVisibleItemCount int

 

3.23 XmMainWindow

XmMainWindow Resources
Name Class Type
XmNcommandWindow XmCCommandWindow Widget
XmNcommandWindowLocation XmCCommandWindowLocation XmCommandWindowLocation
XmNmainWindowMarginHeight XmCMainWindowMarginHeight int
XmNmainWindowMarginWidth XmCMainWindowMarginWidth int
XmNmenuBar XmCMenuBar Widget
XmNmessageWindow XmCMessageWindow Widget
XmNshowSeparator XmCShowSeparator bool

 

3.24 XmManager

XmManager Resources
Name Class Type
XmNbottomShadowColor XmCBottomShadowColor int
XmNbottomShadowPixmap XmCBottomShadowPixmap Drawable
XmNforeground XmCForeground int
XmNhelpCallback XmCCallback (callback)
XmNhighlightColor XmCHighlightColor int
XmNhighlightPixmap XmCHighlightPixmap Drawable
XmNnavigationType XmCNavigationType XmNavigationType
XmNshadowThickness XmCShadowThickness int
XmNstringDirection XmCStringDirection XmStringDirection
XmNtopShadowColor XmCTopShadowColor int
XmNtopShadowPixmap XmCTopShadowPixmap Drawable
XmNtraversalOn XmCTraversalOn bool
XmNunitType XmCUnitType XmUnitType

 

3.25 XmMenuShell

XmMenuShell Resources
Name Class Type
XmNdefaultFontList XmCDefaultFontList XFontStruct list

 

3.26 XmMessageBox

XmMessageBox Resources
Name Class Type
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNmessageAlignment XmCAlignment XmAlignment
XmNmessageString XmCMessageString XmString
XmNminimizeButtons XmCMinimizeButtons bool
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNsymbolPixmap XmCPixmap Drawable

 

3.27 XmPanedWindow

XmPanedWindow Resources
Name Class Type
XmNallowResize XmCBoolean bool
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNpaneMaximum XmCPaneMaximum int
XmNpaneMinimum XmCPaneMinimum int
XmNrefigureMode XmCBoolean bool
XmNsashHeight XmCSashHeight int
XmNsashIndent XmCSashIndent int
XmNsashShadowThickness XmCShadowThickness int
XmNsashWidth XmCSashWidth int
XmNseparatorOn XmCSeparatorOn bool
XmNskipAdjust XmCBoolean bool
XmNspacing XmCSpacing int

 

3.28 XmPrimitive

XmPrimitive Resources
Name Class Type
XmNbottomShadowColor XmCBottomShadowColor int
XmNbottomShadowPixmap XmCBottomShadowPixmap Drawable
XmNforeground XmCForeground int
XmNhelpCallback XmCCallback (callback)
XmNhighlightColor XmCHighlightColor int
XmNhighlightOnEnter XmCHighlightOnEnter bool
XmNhighlightPixmap XmCHighlightPixmap Drawable
XmNhighlightThickness XmCHighlightThickness int
XmNnavigationType XmCNavigationType XmNavigationType
XmNshadowThickness XmCShadowThickness int
XmNtopShadowColor XmCTopShadowColor int
XmNtopShadowPixmap XmCTopShadowPixmap Drawable
XmNtraversalOn XmCTraversalOn bool
XmNunitType XmCUnitType XmUnitType

 

3.29 XmPushButton

XmPushButton Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNarmCal1back XmCCallback (callback)
XmNarmColor XmCArmColor int
XmNarmPixmap XmCArmPixmap Drawable
XmNdefaultButtonShadowThickness XmCDefaultButtonShadowThickness int
XmNdisarmCallback XmCDisarmCallback (callback)
XmNfillOnArm XmCFillOnArm bool
XmNmultiClick XmCMultiClick XmMultiClickType
XmNshowAsDefault XmCShowAsDefault int

 

3.30 XmRowColumn

XmRowColumn Resources
Name Class Type
XmNadjustLast XmCAdjustLast bool
XmNadjustMargin XmCAdjustMargin bool
XmNbuttonAcceleratorText XmCButtonAcceleratorText XmString list
XmNbuttonAccelerators XmCButtonAccelerators string list
XmNbuttonCount XmCButtonCount int
XmNbuttonMnemonicCharSets XmCButtonMnemonicCharSets XmString list
XmNbuttonMnemonics XmCButtonMnemonics KeySym list
XmNbuttonSet XmCButtonSet int
XmNbuttonType XmCButtonType XmButtonType list
XmNbuttons XmCButtons XmString list
XmNentryAlignment XmCAlignment XmAlignment
XmNentryBorder XmCEntryBorder int
XmNentryCallback XmCCallback (callback)
XmNisAligned XmClsAligned bool
XmNisHomogeneous XmCIsHomogeneous bool
XmNlabelString XmCLabelString XmString
XmNmapCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmenuAccelerator XmCAccelerators string
XmNmenuCursor XmCCursor Cursor
XmNmenuHelpWidget XmCMenuWidget Widget
XmNmenuHistory XmCMenuWidget Widget
XmNmenuPost XmCMenuPost string
XmNmnemonic XmCMnemonic int
XmNmnemonicCharSet XmCMnemonicCharSet string
XmNnumColumns XmCNumColumns int
XmNoptionLabel XmCOptionLabel XmString
XmNoptionMnemonic XmCOptionMnemonic int
XmNorientation XmCOrientation XmOrientation
XmNpacking XmCPacking XmPacking
XmNpopupEnabled XmCPopupEnabled bool
XmNpostFromButton XmCPostFromButton int
XmNradioAlwaysOne XmCRadioAlwaysOne bool
XmNradioBehavior XmCRadioBehavior bool
XmNresizeHeight XmCResizeHeight bool
XmNresizeWidth XmCResizeWidth bool
XmNrowColumnType XmCRowColumnType XmRowColumnType
XmNsimpleCallback XmCCallback (callback)
XmNspacing XmCSpacing int
XmNsubMenuId XmCMenuWidget Widget
XmNunmapCallback XmCCallback (callback)

Note that XmNwhichButton is obsoleted by XmNmenuPost.

 

3.31 XmScale

XmScale Resources
Name Class Type
XmNdecimalPoints XmCDecimalPoints int
XmNdragCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNhighlightOnEnter XmCHighlightOnEnter bool
XmNhighlightThickness XmCHighlightThickness int
XmNmaximum XmCMaximum int
XmNminimum XmCMinimum int
XmNorientation XmCOrientation XmOrientation
XmNprocessingDirection XmCProcessingDirection XmProcessingDirection
XmNscaleHeight XmCScaleHeight int
XmNscaleMultiple XmCScaleMultiple int
XmNscaleWidth XmCScaleWidth int
XmNshowValue XmCShowValue bool
XmNtitleString XmCTitleString XmString
XmNvalue XmCValue int
XmNvalueChangedCallback XmCCallback (callback)

 

3.32 XmScrollBar

XmScrollBar Resources
Name Class Type
XmNdecrementCallback XmCCallback (callback)
XmNdragCallback XmCCallback (callback)
XmNincrement XmCIncrement int
XmNincrementCallback XmCCallback (callback)
XmNinitialDelay XmCInitialDelay int
XmNmaximum XmCMaximum int
XmNminimum XmCMinimum int
XmNorientation XmCOrientation XmOrientation
XmNpageDecrementCallback XmCCallback (callback)
XmNpageIncrement XmCPageIncrement int
XmNpageIncrementCallback XmCCallback (callback)
XmNprocessingDirection XmCProcessingDirection XmProcessingDirection
XmNrepeatDelay XmCRepeatDelay int
XmNshowArrows XmCShowArrows bool
XmNsliderSize XrnCSliderSize int
XmNtoBottomCallback XmCCallback (callback)
XmNtoTopCallback XmCCallback (callback)
XmNtroughColor XmCTroughColor int
XmNvalue XmCValue int
XmNvalueChangedCallback XmCCallback (callback)

 

3.33 XmScrolledWindow

XmScrolledWindow Resources
Name Class Type
XmNclipWindow XmCclipwindow Widget
XmNhorizontalScrollBar XmCHorizontalScrollBar Widget
XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy
XmNscrollBarPlacement XmCScrollBarPlacement XmScrollBarPlacement
XmNscrolledWindowMarginHeight XmCScrolledWindowMarginHeight int
XmNscrolledWindowMarginWidth XmCScrolledWindowMarginWidth int
XmNscrollingPolicy XmCScrollingPolicy XmScrollingPolicy
XmNspacing XmCSpacing int
XmNverticalScrollBar XmCVerticalScrollBar Widget
XmNvisualPolicy XmCVisualPolicy XmVisualPolicy
XmNworkWindow XmCWorkWindow Widget

 

3.34 XmSelectionBox

XmSelectionBox Resources
Name Class Type
XmNapplyCallback XmCCallback (callback)
XmNapplyLabelString XmCApplyLabelString XmString
XmNcancelCallback XmCCallback (callback)
XmNcancelLabelString XmCCancelLabelString XmString
XmNdialogType XmCDialogType XmDialogType
XmNhelpLabelString XmCHelpLabelString XmString
XmNlistItemCount XmCItemCount int
XmNlistItems XmCItems XmString list
XmNlistLabelString XmCListLabelString XmString
XmNlistVisibleItemCount XmCVisibleItemCount int
XmNminimizeButtons XmCMinimizeButtons bool
XmNmustMatch XmCMustMatch bool
XmNnoMatchCallback XmCCallback (callback)
XmNokCallback XmCCallback (callback)
XmNokLabelString XmCOkLabelString XmString
XmNselectionLabelString XmCSelectionLabelString XmString
XmNtextAccelerators XmCAccelerators XtAccelerators
XmNtextColumns XmCColumns int
XmNtextString XmCTextString XmString

 

3.35 XmSeparator

XmSeparator Resources
Name Class Type
XmNmargin XmCMargin int
XmNorientation XmCOrientation XmOrientation
XmNseparatorType XmCSeparatorType XmShadowType

 

3.36 XmText

XmText Resources
Name Class Type
XmNactivateCal1back XmCCallback (callback)
XmNautoShowCursorPosition XmCAutoShowCursorPosition bool
XmNblinkRate XmCBlinkRate int
XmNcolumns XmCColumns int
XmNcursorPosition XmCCursorPosition int
XmNcursorPositionVisible XmCCursorPositionVisible bool
XmNeditMode XmCEditMode XmEditMode
XmNeditable XmCEditable bool
XmNfocusCallback XmCCallback (callback)
XmNfontList XmCFontList XFontStruct list
XmNgainPrimaryCallback XmCCallback (callback)
XmNlosePrimaryCallback XmCCallback (callback)
XmNlosingFocusCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmaxLength XmCMaxLength int
XmNmodifyVerifyCallback XmCCallback (callback)
XmNmotionVerifyCallback XmCCallback (callback)
XmNpendingDelete XmCPendingDelete bool
XmNresizeHeight XmCResizeHeight bool
XmNresizeWidth XmCResizeWidth bool
XmNrows XmCRows int
XmNscrollHorizontal XmCScroll bool
XmNscrollLeftSide XmCScrollSide bool
XmNscrollTopSide XmCScrollSide bool
XmNscrollVertical XmCScroll bool
XmNselectThreshold XmCSelectThreshold int
XmNselectionArray XmCSelectionArray XmTextScanType list
XmNselectionArrayCount XmCSelectionArrayCount int
XmNtopCharacter XmCTextPosition int
XmNvalueChangedCallback XmCCallback (callback)
XmNverifyBell XmCVerifyBell bool
XmNwordWrap XmCWordWrap bool

Note that XmNvalue is already declared of type int in the resource tables for XmScale and XmScrollBar, and it cannot therefore appear in the table for XmText as a string. To access this value you have to use the functions XmTextSetString and XmTextGetString instead.

 

3.37 XmTextField

XmTextField Resources
Name Class Type
XmNactivateCallback XmCCallback (callback)
XmNblinkRate XmCBlinkRate int
XmNcolumns XmCColumns int
XmNcursorPosition XmCCursorPosition int
XmNcursorPositionVisible XmCCursorPositionVisible bool
XmNeditable XmCEditable bool
XmNfontList XmCFontList XFontStruct list
XmNgainPrimaryCallback XmCCallback (callback)
XmNlosePrimaryCallback XmCCallback (callback)
XmNlosingFocusCallback XmCCallback (callback)
XmNmarginHeight XmCMarginHeight int
XmNmarginWidth XmCMarginWidth int
XmNmaxLength XmCMaxLength int
XmNmodifyVerifyCallback XmCCallback (callback)
XmNmotionVerifyCallback XmCCallback (callback)
XmNpendingDelete XmCPendingDelete bool
XmNresizeWidth XmCResizeWidth bool
XmNselectThreshold XmCSelectThreshold int
XmNselectionArray XmCSelectionArray XmTextScanType list
XmNselectionArrayCount XmCSelectionArrayCount int
XmNvalueChangedCallback XmCCallback (callback)
XmNverifyBell XmCVerifyBell bool

Note that XmNvalue is already declared of type int in the resource tables for XmScale and XmScrollBar, and it cannot therefore appear in the table for XmTextField as a string. To access this value you have to use the functions XmTextSetString and XmTextGetString instead.

 

3.38 XmToggleButton

XmToggleButtonResources
Name Class Type
XmNarmCallback XmCCallback (callback)
XmNdisarmCallback XmCDisarmCallback (callback)
XmNfillOnSelect XmCFillOnSelect bool
XmNindicatorOn XmCIndicatorOn bool
XmNindicatorSize XmCIndicatorSize int
XmNindicatorType XmCIndicatorType XmIndicatorType
XmNselectColor XmCSelectColor int
XmNselectInsensitivePixmap XmCSelectInsensitivePixmap Drawable
XmNselectPixmap XmCSelectPixmap Drawable
XmNset XmCSet bool
XmNspacing XmCSpacing int
XmNvalueChangedCallback XmCCallback (callback)
XmNvisibleWhen0fr XmCVisibleWhenOff bool
polyml-5.7.1/documentation/Tutorials/WindowsProgramming.html0000644000175000017500000010436213204034553023367 0ustar daviddavid Windows Programming in Poly/ML

Windows Programming in Poly/ML

David C.J. Matthews

David C.J. Matthews 2001. Updated 2009.

This is a brief introduction to programming with the Windows™ interface in Poly/ML.  It is arranged as a tutorial around the mlEdit example, a small example text editor.  It is not intended as a full description of writing programs for Windows and is no substitute for a more general guide.  If you are planning to develop an application using this interface it is probably worth purchasing a book or CD_ROM reference for Windows such as the Microsoft Developer Network library.

This introduction assumes some familiarity with programming in ML and perhaps some experience of other windowing systems, such as X-Windows.  It does not assume any experience of programming with Windows and, for experienced Windows programmers, it will cover familiar ground.  It does, though, point out some of the differences between the ML interface and that of other languages.  The interface functions in ML are very similar to the underlying C functions.  The main differences are in the types of the arguments and a few other changes necessary for ML.   For more information see the Windows Interface Reference.

Acknowledgements

The original version of the Windows interface was written at AHL by Panos Aguieris.  It uses the Poly/ML CInterface structure written by Nick Chapman to provide nearly all the interface.  It was extensively modified and expanded by David Matthews.

Index

1. Windows, Messages and Window Procedures
2. Creating the child window
3. Creating the parent window
4. Menus
5. Sending Messages
6. Dialogues
7. Common Dialogues
8. Printing and Painting

1. Windows, Messages and Window Procedures

When thinking about a window we tend to think of a top-level application or a document window.  From the point of view of programming, though, this is just one variety.   In fact each label, menu and text box is a window but because they form part of a bigger application they tend to be overlooked.  These are child windows.   Nearly every window has to deal with two main areas of concern.  There has to be a way of displaying the contents of the window and there has to be a way of handling user input, whether by the mouse or from the keyboard.

Most communication with windows is by sending messages.  A message may be sent as a result of user input, such as moving the mouse or typing a character at the keyboard.  It may also be sent by the application to change the appearance of the window or to get information from it.  There are over two hundred different message types defined by Windows and it is possible to define your own for use within an application.  Many of these are only relevant in special circumstances and only a few are used regularly.  It's worth noting in passing that messages can be sent from one process to a window in another process and that hidden windows, windows which don't appear on the screen but are only ever used to receive messages, are one of the standard ways of communicating between processes in Windows.

The appearance of a window is largely governed by how it responds to different kinds of messages.  Every window has a window procedure which processes messages sent to the window.  When you create a window you give the class of the window you want to create and the new window uses the window procedure for that class.  You can either use a standard class, such as Edit, or you can create your own class using your own window procedure using RegisterClassEx.  You will nearly always need to create at least one class for your top-level window. 

To see how this works in practice let's look at an extract from the mlEdit example.  

fun wndProc(hw: HWND, msg: Message, state as SOME{edit, fileName, ...}) =
    case msg of
    |   WM_CLOSE =>
        (if checkForSave(hw, edit, fileName) then DefWindowProc(hw, msg) else LRESINT 0, state)
    .....
    |   _ => (DefWindowProc(hw, msg), state)
    .....
and fun checkForSave ....

This extract from the window procedure, wndProc, processes the WM_CLOSE message.   This message has no parameters and is generated by the system when the user clicks in the close box of the window (the box at the top left of the window with a cross in it).   Every message is sent to the window procedure.  When writing a window procedure we are often only interested in handling a few of the possibilities so Windows performs a default action if we don't want to handle the message.  Even if we do handle it we can pass it on for default processing when we have dealt with it.  The default action for WM_CLOSE is to destroy the window by a call to DestroyWindow.  In our application we want to ask the user whether to save the window if the text being edited has been modified.  This process also gives the user the opportunity for second thoughts and they may cancel the closure.  This is handled by our function checkForSave which returns true if it is safe to close the window.   Window procedures in ML return a pair as their result.  The first field of the pair is the Windows result value.  For many messages a result of LRESINT 0 is suitable.  In this example we return SOME(LRESINT 0) if we don't want the window to be destroyed. 

The full type of a window procedure in ML is
    HWND * Message * 'a -> LRESULT * 'a
The third argument is the state of the window and an updated version of the state is returned as part of the result.  This allows the window procedure to process a message and update the state as part of the process.  It is an ML extension which is not part of the underlying message system.  In our extract we return the previous state unchanged.

The mlEdit example works by constructing a parent window using a custom class and our own window procedure and then making a child window within it using the system Edit class.   The Edit window deals with all the keyboard input so saving us the need to write this ourselves.  Our window procedure has to process messages to do with menu selection and other messages sent to top-level windows. 

    WM_SETFOCUS _ =>
        (
         SetFocus(SOME edit);
         (DefWindowProc(hw, msg), state)
        )
    
|    WM_SIZE{height, width, ...} =>
        (
         MoveWindow{hWnd=edit, x=0, y=0, height=height, width=width, repaint=true};
         (DefWindowProc(hw, msg), state)
        )

The WM_SETFOCUS message is sent when the user clicks on a window and is intended to set the keyboard focus to that window (i.e. selects the window to receive keyboard input).  The edit child window occupies the centre of our window so the WM_FOCUS message will be sent directly to it if the user clicks within that area.  Since we are not interested in receiving characters in our top-level window we set the focus to the edit window if the user clicks on the border.   While it isn't essential to process this message at all for the mlEdit application to work correctly, by doing so we improve its usability.

The WM_SIZE message is sent if the window is resized.  Among the parameters to the window are the height and width of the client area, the area excluding the border and the menu bar.  This is the area we want to use for our edit window so we use MoveWindow to set its size.  Calling MoveWindow causes the edit window to receive a WM_SIZE message.  The window procedure for the edit window uses this to adjust the format of the text within the window to suit the new size.  We do not need to be concerned about how this happens in our application.  WM_SIZE is also sent when a window is created.  This is convenient and means we do not need to set the size of the edit window when we create it.

2. Creating the child window

So far we have not described how the edit window is created.  We need it to be a child window of the top-level window and the easiest way to do that is to create it when the WM_CREATE message is received.  This message is sent as part of the process of creation of the top-level window.

fun wndProc(hw: HWND, msg: Message, NONE) =
    (
    case msg of
        WM_CREATE _ => (* Create an edit window and return it as the state. *)
        let
            val edit =
             CreateWindow{class = Class.Edit, name = "",
                style = Edit.Style.flags[Edit.Style.WS_CHILD, Edit.Style.WS_VISIBLE, Edit.Style.WS_VSCROLL,
                            Edit.Style.ES_LEFT, Edit.Style.ES_MULTILINE, Edit.Style.ES_AUTOVSCROLL],
                            x  = 0, y = 0, height = 0, width = 0, relation = ChildWindow{parent=hw, id=99},
                            instance = Globals.ApplicationInstance(), init = ()}
            (* We also set the font for the edit window here.  This has been omitted. *)
         in
            (LRESINT 0, SOME{edit=edit, devMode=NONE, devNames = NONE, fileName=""})
        end

    | _ => (DefWindowProc(hw, msg), NONE)
    )

This extract of the window procedure shows the creation of the edit window as part of processing WM_CREATE.  We use CreateWindow which makes a window of a specified class and returns a handle to it.  Once we have processed the message we set the state to SOME of a record containing a handle to the edit window.  (Instead of doing this we could use GetDlgItem to find it each time we needed it, but this is easier).  At this stage we just pass zeros for the size of the window since we will use the WM_SIZE message to set its size.   The id value for the child window (we use 99) is irrelevant in this example since we never use it.  The style does not include horizontal scrolling so the edit window uses word-wrapping.

3. Creating the parent window

It's now time to see how we create the main window itself.  Since we want to use our own window procedure we need to register a class even though we will only create a single window of this class.

val polyIcon = ...
val menu = ...
val className = "mlEditWindowClass"
val app = Globals.ApplicationInstance()
(* Register a class for the top-level window.  Use the Poly icon from the application. *)
val myWindowClass = RegisterClassEx{style = Class.Style.flags[], wndProc = wndProc, hInstance = app,
    hIcon = SOME polyIcon, hCursor = NONE, hbrBackGround = NONE, menuName = NONE,
    className = className, hIconSm = NONE};


val w = CreateWindow{class = myWindowClass, name = "mlEdit", style = Window.Style.WS_OVERLAPPEDWINDOW,
    x  = CW_USEDEFAULT, y = CW_USEDEFAULT, height = CW_USEDEFAULT, width = CW_USEDEFAULT,
    relation = PopupWindow menu, instance = app, init = NONE};
in
ShowWindow(w, SW_SHOW);
SetForegroundWindow w;

RunApplication();
UnregisterClass(className, app)
end;

In the mlEdit example we use the icon from the Poly/ML application.  It isn't necessary to provide an icon: Windows will provide a default one if NONE is given for hIcon.  We use the WS_OVERLAPPEDWINDOW style for the window which is the standard for a top-level window and gives a standard border with a system menu and minimise, maximise and close boxes.  CW_USEDEFAULT is used for the size and position of the window.   The user can always move or resize it once it has been created.   We create the window with the PopupWindow value and pass the menu to be used.  Once the window has been created we call ShowWindow to make it visible and SetForegroundWindow to make it appear above other windows.

Some messages are sent to the window procedure as a result of calling the functions such as CreateWindow.  Generally, though, messages are queued and have to be explicitly dequeued and passed to the window procedure.  In C this is done by a message loop with GetMessage and DispatchMessage.  In ML we use the RunApplication function which deals with all this.  RunApplication returns when a WM_QUIT message is received.  To ensure that this happens we have to put this message into the queue.  The easiest way to do this is to call PostQuitMessage when the window is about to go away.  We have already seen how DestroyWindow is called as a result of processing the WM_CLOSE message.  DestroyWindow sends WM_DESTROY and WM_NCDESTROY messages to the window procedure to allow it to clean up properly.  WM_NCDESTROY will be the last message to be sent to this window procedure so we call PostQuitMessage while handling it.

|    WM_NCDESTROY =>
        (
         PostQuitMessage 0;
         (DefWindowProc(hw, msg), state)
        )

We need to call UnregisterClass when RunApplication returns.  Classes are automatically unregistered when the application terminates but in this context the application is the whole Poly/ML session so if we want to run mlEdit again within the same session we need to unregister the class.   Otherwise the next time we call RegisterClassEx with the same name it will fail because the class is already registered.

4. Menus

We have already seen that a menu can be set up by passing its handle as part of the PopupWindow value to CreateWindow.  Let's see how the menu itself is created and how it is processed.

There are a number of ways a menu can be created but perhaps the simplest is to build it up using calls to CreateMenu and AppendMenu.  The structure we want for our menu is a bar containing File, Edit and Help menus each with several menu items.  In general a menu consists of multiple items, each of which may either be a command item or may pull up a sub-menu.

val menuOpen = 1
and menuQuit = 2
and menuSave = 3
...
val fileMenu =
    let
        val fileMenu = CreateMenu();
    in
        AppendMenu(fileMenu, [], MenuId menuOpen, MFT_STRING "&Open");
        AppendMenu(fileMenu, [], MenuId menuSave, MFT_STRING "&Save");
        AppendMenu(fileMenu, [], MenuId menuSaveAs, MFT_STRING "Save &As...");
        AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR);
        AppendMenu(fileMenu, [], MenuId menuPageSetup, MFT_STRING "Page Set&up...");
        AppendMenu(fileMenu, [], MenuId menuPrint, MFT_STRING "P&rint...");
        AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR);
        AppendMenu(fileMenu, [], MenuId menuQuit, MFT_STRING "&Quit");
        fileMenu
    end;

We create the file menu by calling CreateMenu and then AppendMenu for each item.   Every item, apart from separators, has a different item ID.  The values are arbitrary but we need to use different values for each because these are the values which will be passed to our window procedure when a particular menu item is selected.   Separators, which appear as horizontal lines when the menu is pulled down, are used to improve the layout.  The ampersands (&s) precede the character which will be underlined in the menu.  These provide keyboard shortcuts for menu items.  Typically the first character is used but sometimes we have to use another character in order to give all the items in a menu different characters.

val menu = CreateMenu();
val _ = AppendMenu(menu, [], MenuHandle fileMenu, MFT_STRING "&File");
val _ = AppendMenu(menu, [], MenuHandle editMenu, MFT_STRING "&Edit")
val _ = AppendMenu(menu, [], MenuHandle helpMenu, MFT_STRING "&Help")

We can create the edit and help menus in exactly the same way.  When they have been created we can build the full menu.  The argument to AppendMenu is MenuHandle rather than MenuId since these are sub-menus.

As with all other input selecting a menu item causes the system to send a message to the window.  It sends a WM_COMMAND message with information about the particular menu item.  The wId value in the messagecontains the identifier which was used when the menu was created. 

|    WM_COMMAND{notifyCode = 0, wId, control} =>

        if wId = menuQuit
        then
        (
        if checkForSave(hw, edit, fileName) then DestroyWindow hw else();
        (LRESINT 0, state)
        )
        else ...

The simplest item to process is when Quit is selected.  We process it in almost the same way as we process WM_CLOSE, except in this case we have to explicitly call DestroyWindow since the default action for this message is to do nothing.  Note that since we process WM_NCDESTROY by calling PostQuitMessage the message loop in RunApplication will exit when the window destruction is complete.

5. Sending Messages

So far we have seen how we process messages but not how our application can send them.   An application sends messages using either SendMessage or PostMessage.   The main difference between them is that SendMessage does not return until the window procedure has processed the message and so it is able to return a result to the caller.  It functions essentially as a, possibly remote, procedure call.

We can use SendMessage to process some of the menu items.

        else if wId = menuCut
        then (SendMessage(edit, WM_CUT); (LRESINT 0, state))
        else if wId = menuCopy
        then (SendMessage(edit, WM_COPY); (LRESINT 0, state))
        else if wId = menuPaste
        then (SendMessage(edit, WM_PASTE); (LRESINT 0, state))

The Cut, Copy and Paste items from the edit menu are handled by sending messages to the edit window.  The edit window processes these by copying data to and from the clipboard.  In this example we are not interested in the result that SendMessage returns but we use it rather than PostMessage to ensure that the command is fully processed before, for example, we accept any characters as input.

Another case where we can use SendMessage is to see whether the text has been modified and so whether we need to save it before quitting.

fun checkForSave(hw, edit, fileName) =
    case SendMessage(edit, EM_GETMODIFY) of
            LRESINT 0 => true (* Unmodified - continue. *)
        |    _ => ... (* Save it. *)

We send the edit window an EM_GETMODIFY message.  If the reply is LRESINT 0 (i.e. false) it has not been modified and we don't need to do anything.  Otherwise we need to save the document, or at least ask whether we should save it.

6. Dialogues

A dialogue box is a special kind of window which is used to present information to the user or to request information.  They contain one or more controls and a button usually labelled OK and often a Cancel button.  The simplest form of dialogue is the message box.  This presents a piece of text and has one or more buttons.  

let
    val res =
        MessageBox(SOME hw, "Save document?", "Confirm",
                   MessageBoxStyle.MB_YESNOCANCEL)
in
    if res = IDYES
    then .... (* Save document. *)  ...
    else if res = IDNO
    then true (* Continue anyway. *)
    else false (* Cancel - don't exit or open. *)
end

We use a message box in mlEdit to ask whether we should save the document if it has been modifed.  The MB_YESNOCANCEL value for the style means that the message box will have three buttons: Yes, No and Cancel.  The message box is an example of a modal dialogue.  Modal dialogues are those which need a response before the application can continue.  The application is disabled until the dialogue has been dismissed by clicking one of the buttons.  In contrast a modeless dialogue acts just like another window and the user can interact with either the application window or the dialogue box.   MessageBox returns with an identifier which indicates the button which was pressed.   If Yes, we need to save the document; if no, we don't.  If Cancel was pressed we need to cancel the operation which caused this dialogue to be presented.  For instance, if the user accidentally clicked on the Close box of the window and then pressed Cancel we do not pass the WM_CLOSE message to the default window procedure.  It is good interface design practice to provide some way for the user to cancel an action.

A more sophisticated dialogue is used when the user selects "About mlEdit..." from the Help menu.  MessageBox is not sufficient for this dialogue since we want to include an icon in the dialogue box so we use one of the general dialogue functions.   The layout of a dialogue can be given either in a resource file or as a template.   Resource files are often a convenient way of holding dialogues as well as menus and other strings.  They lend themselves particularly to producing localized versions of programs, i.e. programs with the user interaction tailored for a particular language and/or culture, since all the text that needs to be localized can be stored in the resource file.  A resource file is either an executable file (.EXE) or a dynamic library (.DLL).  To use a resource file you will need a suitable resource compiler which will normally form part of a development environment such as Microsoft Visual C or Borland C++.  You can then load the resource file and get a handle to it using LoadLibrary.  It is possible to make use of resources in the Poly/ML program using the instance handle returned by ApplicationInstance.  We actually do this in mlEdit to get a handle to the icon.

(* Borrow the Poly icon from the application program. It happens to be icon id 102. *)
val polyIcon = Icon.LoadIcon(app, Resource.MAKEINTRESOURCE 102);

For this example, though, we use a template for the dialogue.

val pictureId = 1000 (* Could use any number here. *)
open Static.Style
val template =
    {x = 0, y = 0, cx = 210, cy = 94, font = SOME (8, "MS Sans Serif"), menu = NONE,
     class = NONE, title = "About mlEdit", extendedStyle = 0,
     style = flags[WS_POPUP, WS_CAPTION],

     items =
      [{x = 73, y = 62, cx = 50, cy = 14, id = 1,
        class = DLG_BUTTON (flags[WS_CHILD, WS_VISIBLE, WS_TABSTOP]),
        title = DLG_TITLESTRING "OK", creationData = NONE, extendedStyle = 0},

       {x = 7, y = 7, cx = 32, cy = 32, id = pictureId,
        class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, SS_ICON]),
        title = DLG_TITLESTRING "", creationData = NONE, extendedStyle = 0},

       {x = 15, y = 39, cx = 180, cy = 21, id = 65535,
        class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, WS_GROUP]),
        title = DLG_TITLESTRING
               "mlEdit - An exmple of Windows programming in Poly/ML\
               \\nCopyright David C.J. Matthews 2001",
        creationData = NONE,  extendedStyle = 0}] }

The dialogue contains three items: a button with the title "OK", a static picture with style SS_ICON, and a piece of static text.  Along with the layout of the dialogue we also need a dialogue procedure.  A dialogue procedure is almost the same as a window procedure.  It processes messages sent to the dialogue in the same way as a window procedure does. The only difference is that a dialogue procedure does not call DefWindowProc.

fun dlgProc(dial, WM_INITDIALOG _, ()) =
    (
        (* Send a message to the picture control to set it to this icon. *)
        SendMessage(GetDlgItem(dial, pictureId), STM_SETICON{icon=polyIcon});
        (LRESINT 1, ())
    )

|    dlgProc(dial, WM_COMMAND{notifyCode = 0, wId=1 (* OK button *), ...}, ()) =
        (* When the OK button is pressed we end the dialogue. *)
        (EndDialog(dial, 1); (LRESINT 1, ()) )

|    dlgProc _ = (LRESINT 0, ())

We only process two messages here: WM_INITDIALOG and WM_COMMAND.  WM_INITDIALOG is sent when the dialogue is created.  We use GetDlgItem to get a handle to the static picture control and then send it a STM_SETICON message to set the picture.  We only need to do this when the dialogue is initialised.  The static control will take care of displaying the picture whenever the dialogue box is visible.  WM_COMMAND messages are sent by buttons as well as by menus and in this example we process the message by calling EndDialog to close the dialogue box.  The value of wId in this case is the identifier of the OK button.

To construct and display the dialogue box we call DialogBoxIndirect with the template and the dialogue procedure.   The parent of the dialogue is our main window (hw).  This window will automatically be disabled until the dialogue box has been closed.

DialogBoxIndirect(app, template, hw, dlgProc, ());

7. Common Dialogues

For many purposes a standard dialogue box can be used and Windows provides a number of these.  For instance, most applications include a way for the user to open a file and it would be tedious to have to program this from scratch for each new application.   It is far easier to use a standard dialogue.  More to the point, by using a standard dialogue the interface to the user is similar to that of other applications, reducing the learning load.

The mlEdit example uses a number of these.  GetOpenFileName and GetSaveFileName are used to select the file to open and for the Save As menu item.  FindText is used for the Find menu item.   PageSetupDlg and PrintDlg are used for the Page Setup and Print items.  They generally work in the same way, creating a modal dialogue requesting the information and returning when the OK or Cancel button is pressed.   The ML functions take a configuration structure and return an option type.  If the user cancels the operation they return NONE, if the user presses OK they return a new configuration structure with the requested information filled in. FindText works differently.  It creates a modeless dialogue and instead sends FINDMSGSTRING messages to the parent window.

8. Printing and Painting

One area we have not touched on is actually how we draw to the screen.  By using the Edit window to draw the text our application does not actually need to concern itself with exactly what happens when an area of the screen is uncovered and how characters in the text are converted into dots on the screen.  This is all dealt with by the Edit window class.

When it comes to printing the file these issues become apparent.  Printing to a printer and drawing to the screen are handled in exactly the same way in Windows.  In both cases we need to draw the document into a device context.  A device context is an abstraction used for printers, the screen and also for bitmaps and metafiles in memory.  Although there is an obvious difference in the printed page and an image on the screen in terms of the physical output as far as preparing the image is concerned they are both rectangular areas of dots (pixels).  They may differ in size, in the range of colours possible and in the number of pixels per inch (resolution).   Since we don't need to be concerned with drawing to the screen in this application we will focus on printing the file but we could easily arrange the code so that it could be used for both.

We get a device context for the printer by giving the PrintDlgFlags.PD_RETURNDC option to the print dialogue.  It would also be possible to get a device context using CreateDC.   Once we have the device context we can find the size of the page.

val _ = SetMapMode(hdc, MM_TEXT)
val pageWidth = GetDeviceCaps(hdc, HORZRES)
and pageHeight = GetDeviceCaps(hdc, VERTRES)

We now need to find a font to use.  We want a 10 point Courier font which we obtain using CreateFont.  This is a fixed width font which simplifies calculating the page width.

val charHeight = ~10 * GetDeviceCaps(hdc, LOGPIXELSY) div 72;
val hFont = CreateFont{height=charHeight, width=0, escapement=0, orientation=0,
       weight=FW_DONTCARE, italic=false, underline=false, strikeOut=false,
       charSet=ANSI_CHARSET, outputPrecision=OUT_DEFAULT_PRECIS,
       clipPrecision=CLIP_DEFAULT_PRECIS, quality=DEFAULT_QUALITY,
       pitch=FIXED_PITCH, family=FF_MODERN, faceName="Courier"}

The character height calculation looks odd, giving us a negative value, but is a pecularity of CreateFont.  All the other arguments are fairly obvious. 

val oldFont = SelectObject(hdc, hFont);

val textMetric = GetTextMetrics hdc;

We now select this as the font to use.  SelectObject can be used for various other sorts of object, such as pens, brushes and bitmaps.  Whenever you select in a particularly kind of object the previous object of that kind is returned as the result.   It's generally good practice to select it back before you finish with a device context.  Having selected this font we then call GetTextMetrics to find the width of the font.   From this and the page width we can compute the number of characters on a line.    The height of the page divided by the height of a character gives us the number of characters on a page.  We are now ready to print a page.

We get the text from the edit window using GetWindowText.   The print dialogue gives the user the option of printing the currently selected area of the window rather than the whole file or a range of pages.  To find the selection we send the edit window an EM_GETSEL message.

We prepare the page by setting the colours and filling the page with white.  These are likely to be the defaults anyway but there's no harm in making sure.

val white = RGB{red=255, blue=255, green=255}
val black = RGB{red=0, blue=0, green = 0}
val pageRect = {top=0, left=0, bottom=pageHeight, right=pageWidth}

SetBkColor(hdc, white);
SetTextColor(hdc, black);
ExtTextOut(hdc, {x=0, y=0}, [ETO_OPAQUE], SOME pageRect, "", []);

ExtTextOut is one of the ways of drawing text but it is also a convenient way of filling an area with a colour.  The ETO_OPAQUE option causes the rectangle to be filled with the background colour.

Actually drawing each line is done using the TabbedTextOut function.  We extract a line from the document and draw it .

TabbedTextOut(hdc, {x=0, y= lineNo * #height textMetric},  thisLine, [], 0);

Each line is drawn beneath the previous one until the page is full or we have drawn all the text.

All this is the same whether we are printing a file or drawing to the screen.   When printing, though there are a few extra function calls we need.  Before each page we call StartPage and after the page we call EndPage.  We also need to bracket the whole document with calls to StartDoc and EndDoc.  When the document is complete we also need to restore the original font, delete the Courier font we created and delete the device context.

val jobID = StartDoc(hdc, {docName=fileName, output=NONE, dType=NONE});
...
EndDoc hdc;
SelectObject(hdc, oldFont);
DeleteObject hFont;
DeleteDC hdc;

We could use this code to draw to the screen if we were not using the edit window.   In that case we would process the WM_PAINT message and bracket the calls with BeginPaint and EndPaint.

polyml-5.7.1/documentation/Overview.html0000644000175000017500000006510213204034553017350 0ustar daviddavid Poly/ML Source Code Overview

Overview of the Poly/ML Source Code

Poly/ML has a history of over 25 years and the source has undergone many changes in that time. Many of the file names no longer reflect the current function of their code. This is intended as a brief introduction to the source code to enable maintainers and those wanting to experiment with the code to find their way round it. The source code is fairly well commented at the level of individual statements.

The source code is comprised of three parts. The run-time system is written in C++ with a small amount of assembly code. The compiler is written in Standard ML and the basis library consists of several Standard ML files.

The source code changes with each release so the documentation will need to be updated. This version reflects the state of the 5.4 release.

The Poly/ML Compiler

The Poly/ML compiler is written in Standard ML. Each file is a module, either a signature, functor or structure whose name matches the name of the file. This is a consequence of using the Poly/ML "make" system to build the compiler. The larger modules will have a signature file, a functor which contains most of the code and a small file which defines the structure as an application of the functor to its arguments.

Compiler control

mlsource/MLCompiler/Debug.ML - Structure
mlsource/MLCompiler/COMPILER_BODY.ML - Functor
mlsource/MLCompiler/CompilerBody.ML - Structure

CompilerBody is the main body of the compiler. The compiler consists of four major passes but the final code-processing pass in particular involves several minor passes. CompilerBody controls each of the major passes. The source code is parsed into a parse-tree which is then type checked and subsequently code-generated into a code-tree. The parsing, type-checking and code-generation passes may each fail because of errors in the source and if one pass fails the later passes are not attempted. The final pass which transforms and optimises the code-tree and generates the final machine code will never fail unless there is an internal compiler error.

Debug contains definitions of most of the "tags" that control the compiler. These are the internal representation of the properties that may be passed in to PolyML.compiler. Most of these are used to control the output of debugging information.

Identifiers

mlsource/MLCompiler/STRUCTVALSIG.sml - Signature
mlsource/MLCompiler/STRUCT_VALS.ML - Functor
mlsource/MLCompiler/StructVals.ML - Structure

StructVals contains the fundamental datatypes that describe all Poly/ML values, types, type-constructors, functors, structures and signatures. These are all entities that can appear in the top-level name space. The compiler operates on name-spaces that contain these entities, looking up existing identifiers and making new identifiers as a result of top-level declarations. The actual "values" associated with values, functors or structures are described using the CodeTree datatype (see BaseCodeTree). This allows for inline functions to contain the full range of code. Structures are actually represented as tuples and functors as functions, which by default are inline. As well as top-level entities the datatypes also include versions of values and structures that occur only during the compilation process.

Lexical Analysis

mlsource/MLCompiler/Symbols.ML - Structure
mlsource/MLCompiler/Syms.ML - Structure
mlsource/MLCompiler/IntSet.ML - Structure
mlsource/MLCompiler/SYM_SET.ML - Functor
mlsource/MLCompiler/SymSet.ML - Structure

Symbols defines the ML reserved words. Syms, IntSet, SYM_SET and SymSet provide a way of handling sets of symbols during parsing.

mlsource/MLCompiler/LEXSIG.sml - Signature
mlsource/MLCompiler/LEX_.ML - Functor
mlsource/MLCompiler/Lex.ML - Structure

The lexical analyser processes the input text skipping over comments and blank space. It sets a group of refs to information about the current sysmbol.

Parsing

mlsource/MLCompiler/PARSE_DEC.ML - Functor
mlsource/MLCompiler/ParseDec.ML - Structure
mlsource/MLCompiler/PARSE_TYPE.ML - Functor
mlsource/MLCompiler/ParseType.ML - Structure
mlsource/MLCompiler/SKIPS_.ML - Functor
mlsource/MLCompiler/Skips.ML - Structure
mlsource/MLCompiler/UTILITIES_.ML - Functor
mlsource/MLCompiler/Utilities.ML - Structure

ParseDec is the main recursive-descent parser. It calls in to the lexical analyser to get the next symbol and calls functions in ParseTree, Signatures and Structures to build the parse-tree as it goes. ParseType does this for the type-expressions such as type constraints or in signatures. Skips and Utilities contain helper functions for parsing.

Parse Tree

mlsource/MLCompiler/STRUCTURESSIG.sml - Signature
mlsource/MLCompiler/STRUCTURES_.ML - Functor
mlsource/MLCompiler/Structures.ML - Structure
mlsource/MLCompiler/SIGNATURESSIG.sml - Signature
mlsource/MLCompiler/SIGNATURES.sml - Functor
mlsource/MLCompiler/SignaturesStruct.sml - Structure
mlsource/MLCompiler/PARSETREESIG.sml - Signature
mlsource/MLCompiler/PARSE_TREE.ML - Functor
mlsource/MLCompiler/ParseTree.ML - Structure

The parser generates a tree structure to represent the source program during the parsing pass. The type-checking and code-generation passes work on this parse tree. ParseTree contains the definitions for the core language, Structures the definitions for structures and functors and Signatures the definitions for signatures. The datatypes for the parse tree are local to each of these modules so each module contains all the code that needs to walk over the parse tree. Each of these modules makes use of the parse tree support modules to perform particular tasks.

Type Checking

mlsource/MLCompiler/TYPETREESIG.sml - Signature
mlsource/MLCompiler/TYPE_TREE.ML - Functor
mlsource/MLCompiler/TypeTree.ML - Structure
mlsource/MLCompiler/COPIERSIG.sml - Signature
mlsource/MLCompiler/COPIER.sml - Functor
mlsource/MLCompiler/CopierStruct.sml - Structure
mlsource/MLCompiler/PRINT_TABLE.ML - Functor
mlsource/MLCompiler/PrintTable.ML - Structure

TypeTree contains the main type-checking code and various other functions to support operations on types. Copier is used to make a copy of a signature when it is instantiated to a structure. PrintTable contains a list of current overloadings of overloaded operations. Previously this included user-provided pretty-printers but this has now been removed.

Parse Tree Support

mlsource/MLCompiler/VALUEOPSSIG.sml - Signature
mlsource/MLCompiler/VALUE_OPS.ML - Functor
mlsource/MLCompiler/ValueOps.ML - Structure
mlsource/MLCompiler/PRETTYSIG.sml - Signature
mlsource/MLCompiler/Pretty.sml - Structure
mlsource/MLCompiler/DATATYPEREPSIG.sml - Signature
mlsource/MLCompiler/DATATYPE_REP.ML - Functor
mlsource/MLCompiler/DatatypeRep.ML - Structure
mlsource/MLCompiler/EXPORTTREESIG.sml - Signature
mlsource/MLCompiler/ExportTree.sml - Functor
mlsource/MLCompiler/ExportTreeStruct.sml - Structure
mlsource/MLCompiler/TYPEIDCODESIG.sml - Signature
mlsource/MLCompiler/TYPEIDCODE.sml - Functor
mlsource/MLCompiler/TypeIDCodeStruct.sml - Structure
mlsource/MLCompiler/DEBUGGERSIG.sml - Signature
mlsource/MLCompiler/DEBUGGER_.sml - Functor
mlsource/MLCompiler/Debugger.sml - Structure

There are various support modules involved in the process of type-checking and code-generation. ValueOps contains operations on identifiers. As well as simple identifiers it also deals with various sorts of overloaded identifiers as well as the type-specific functions such as PolyML.print. It contains many of the functions to display ML values. Pretty defines the type used in the Poly/ML pretty printer. DatatypeRep produces an optimised representation for the value constructors of a datatype depending on the number and types of the constructors. ExportTree is used in the construction of the abstract view of the parse-tree that is made available through the IDE interface. TYPEIDCODE produces code for the type-identifiers associated with types and datatypes. These contain the type-specific printing and equality functions. Debugger is used to build the data structures and hooks used for debugging ML code if the code is compiled with PolyML.Compiler.debug set.

Code Generation

mlsource/MLCompiler/CodeTree/BaseCodeTreeSig.sml - Signature
mlsource/MLCompiler/CodeTree/BaseCodeTree.sml - Structure
mlsource/MLCompiler/CODETREESIG.ML - Signature
mlsource/MLCompiler/CodeTree/CODETREE.ML - Functor
mlsource/MLCompiler/CodeTree/ml_bind.ML - Structure

The third pass of the compiler generates an intermediate code structure from the parse-tree. BaseCodeTree contains the datatype definition for this structure and a few additional functions. CODETREE contains the optimiser and processing functions that transform the tree structure generated from the ML code into an equivalent tree structure for the low-level code generator. The optimise function performs inline function expansion, tuple optimisation and various constant folding operations. Later passes remove redundant declarations especially those added as part of the inline expansion process and compute life-time values for the remaining declarations. Life-time information is used by the low-level code-generator to aid register allocation.

Code Generation - X86

mlsource/MLCompiler/CodeTree/CODE_ARRAY.ML - Structure
mlsource/MLCompiler/CodeTree/CODEGEN_TABLESIG.sml - Signature
mlsource/MLCompiler/CodeTree/CODEGEN_TABLE.ML - Functor
mlsource/MLCompiler/CodeTree/CodeGenTable.ML - Structure
mlsource/MLCompiler/CodeTree/CODECONSSIG.sml - Signature
mlsource/MLCompiler/CodeTree/X86CODESIG.sml - Signature
mlsource/MLCompiler/CodeTree/X86OUTPUTCODE.ML - Functor
mlsource/MLCompiler/CodeTree/X86OPTIMISE.ML - Functor
mlsource/MLCompiler/CodeTree/X86LOWLEVEL.ML - Functor
mlsource/MLCompiler/CodeTree/GENERATE_CODE.ML - Functor
mlsource/MLCompiler/CodeTree/GCode.i386.ML - Structure
mlsource/MLCompiler/CodeTree/CodeCons.i386.ML - Structure

The final part of the compilation process is to generate machine code for the particular architecture. GCode (GENERATE_CODE) processes the code-tree and builds a list of instructions. CodeGenTable is used to keep track of declarations and register allocations. X86LOWLEVEL is the first part of this process. X86OPTIMISE is a peep-hole optimiser that looks for sequences of instructions that can be reduced. The final part of the process is handled by X86OUTPUTCODE which takes the instruction sequence and produces a code-object, a vector containing the X86 machine code and also the constants used in the code. CODE_ARRAY is a helper structure that provides byte and word operations on the code-object.

Bootstrapping

mlsource/MLCompiler/CompilerVersion.sml - Structure
mlsource/MLCompiler/MAKE_.ML - Functor
mlsource/MLCompiler/Make.ML - Structure
mlsource/MLCompiler/INITIALISE_.ML - Functor
mlsource/MLCompiler/Initialise.ML - Structure
mlsource/MLCompiler/ml_bind.ML

CompilerVersion is a tiny structure with the current version information. Make is a wrapper for the compiler and includes a cut-down version of the "use" function to enable the basis library to be compiled. Initialise contains declarations needed for bootstrapping. Before the basis library can be compiled there are certain identifiers that have to be added to the initial name-space. In particular, the compiler itself and various compiler switches and datatypes have to added at this stage. ml_bind is the root when building the compiler using PolyML.make. It sets up the compiler for bootstrapping.

Support Library

mlsource/MLCompiler/Boot/Address.ML
mlsource/MLCompiler/Boot/Misc.ML
mlsource/MLCompiler/Boot/HashTable.ML
mlsource/MLCompiler/Boot/UniversalTable.ML
mlsource/MLCompiler/Boot/StretchArray.ML
mlsource/MLCompiler/Boot/ml_bind.ML

The Boot directory contains a few library structures that are used throughout the compiler. These are gradually being replaced by the Standard Basis Library.

The Run-time System

The Poly/ML run-time system (RTS) is written mostly in C++ with a few files in C and assembly code. All interaction between ML code and the operating system goes through the run-time system. Most interaction is through RTS calls.

Stub Functions

libpolymain/polystub.c
polyimport.c

Every executable program has to have an initial entry point, (main or WinMain) and this is provided by either polyimport or polystub. polystub is used to create the polymain library. All other RTS files are compiled into the polyml library. polyimport is normally only used during the initial installation and reads a heap that has been exported in the portable (text) format. polystub is used when building an executable by linking in an object file that has been exported with PolyML.export.

Globals and Support Modules

libpolyml/mpoly.cpp
libpolyml/mpoly.h
libpolyml/run_time.cpp
libpolyml/run_time.h
libpolyml/diagnostics.cpp
libpolyml/diagnostics.h
libpolyml/rts_module.cpp
libpolyml/rts_module.h
libpolyml/globals.h
libpolyml/noreturn.h
libpolyml/sys.h
libpolyml/version.h
config.h
winconfig.h

mpoly.cpp contains the main entry point to the RTS and is immediately called by the main program in either polyimport or polystub. run_time.cpp contains the main despatch table for RTS calls from ML code and also various functions that do not fit elsewhere. diagnostics.cpp contains some functions to produce debugging information from the RTS. rts_module defines the RTSModule base class that is used for the more specific modules. sys.h provides symbolic definitions for run-time system calls. The information in it should match basis/RuntimeCalls.ML. globals.h defines the PolyWord and PolyObject classes that provide symbolic access to machine words as well as other global definitions. noreturn.h provides a way of indicating that a function does not return normally. version.h is a small file containing the current RTS version. config.h is produced automatically by the configuration process. winconfig.h is an equivalent for Windows when compiling under Visual C++.

Arithmetic and Strings

libpolyml/arb.cpp
libpolyml/arb.h
libpolyml/reals.cpp
libpolyml/reals.h
libpolyml/realconv.cpp
libpolyml/realconv.h
libpolyml/polystring.cpp
libpolyml/polystring.h

arg.cpp contains the arbitrary precision package. It now uses GMP to do the actual arithmetic if GMP is installed and otherwise uses its own code. reals.cpp contains real number (floating point) operations. realconv is a slightly modified version of the real to string conversion functions written by David M. Gay.

Basis Library Support

libpolyml/process_env.cpp
libpolyml/timing.cpp
libpolyml/process_env.h
libpolyml/timing.h
libpolyml/io_internal.h
libpolyml/basicio.cpp
libpolyml/network.cpp
libpolyml/basicio.h
libpolyml/network.h
libpolyml/errors.h

libpolyml/proper_io.h
libpolyml/proper_io.cpp

These files contain the operating system interfaces needed to support the Standard Basis Library. proper_io.cpp contains some wrap-around functions to avoid bugs and inconsistencies in some operating system calls. errors.h contains a table that maps between error numbers (the value stored in errno on Unix) and their textual equivalents.

State Saving and Exporting

polyexports.h
libpolyml/exporter.cpp
libpolyml/exporter.h
libpolyml/elfexport.cpp
libpolyml/elfexport.h
libpolyml/machoexport.cpp
libpolyml/machoexport.h
libpolyml/pecoffexport.cpp
libpolyml/pecoffexport.h
libpolyml/pexport.cpp
libpolyml/pexport.h
libpolyml/sharedata.cpp
libpolyml/sharedata.h
libpolyml/savestate.cpp
libpolyml/savestate.h

These files provide mechanisms for exporting the heap in various forms. Different operating systems use different formats for object modules: ELF on Linux and BSD Unix, Mach-O on Mac OS X and PE-COFF on Windows. Poly/ML also has its own portable text format that is usually used only for the initial installation and pexport.cpp contains the code to both export and import this format. sharedata.cpp is used to reduce the size of the heap by combining values that are equivalent. Although not strictly related to exporting it is usually used before a heap is exported. savestate.cpp contains code to export and import the heap as a saved state.

Operating-System Specific

libpolyml/Console.h
libpolyml/Console.cpp
resource.h
PolyML.rc
libpolyml/PolyControl.h
libpolyml/windows_specific.cpp
libpolyml/unix_specific.cpp
libpolyml/xwindows.cpp
libpolyml/xcall_numbers.h
libpolyml/xwindows.h
libpolyml/os_specific.h

Parts of the RTS are specific to either Windows or to Posix platforms i.e. Unix and Cygwin. unix_specific.cpp contains code to support the Unix and Posix structures in the basis library. windows_specific.cpp supports the Windows structure. Console.cpp provides a simple console window in Windows and PolyML.rc is the resource file with the menus and icons. xwindows.cpp contains the X-Windows and Motif interface. It is only included if the appropriate configuration option is set.

Hardware Specific

libpolyml/machine_dep.h
libpolyml/x86_dep.cpp
libpolyml/x86asm.asm
libpolyml/power_dep.cpp
libpolyml/power_assembly.S
libpolyml/sparc_dep.cpp
libpolyml/sparc_assembly.S
libpolyml/int_opcodes.h
libpolyml/interpret.cpp

Poly/ML is compiled into machine code and uses its own linkage conventions. When calling from ML to the RTS there needs to be an interface which saves the ML state and loads the C state for the RTS. Arguments and results need to be transferred. There is a C++ file and an assembly code file for each of the X86 (32 and 64-bit), PPC and Sparc architectures. On other architectures a portable, interpreted byte code is used and the interpreter takes the place of the machine-specific module.

Multi-Threading

libpolyml/processes.cpp
libpolyml/processes.h
libpolyml/locking.cpp
libpolyml/locking.h

Support for multi-threading is mostly contained in processes.cpp. locking.cpp provides implementation for the PLock, Plocker and PCondVar classes that are used in various places to provide mutual exclusion.

Memory Management

libpolyml/gc.cpp
libpolyml/gc.h
libpolyml/bitmap.cpp
libpolyml/bitmap.h
libpolyml/memmgr.cpp
libpolyml/memmgr.h
libpolyml/osmem.cpp
libpolyml/osmem.h
libpolyml/save_vec.cpp
libpolyml/save_vec.h
libpolyml/scanaddrs.cpp
libpolyml/scanaddrs.h
libpolyml/check_objects.cpp
libpolyml/check_objects.h

The main part of the garbage collector is in gc.cpp. bitmap.cpp provides the Bitmap class that is used to mark allocated words in the memory. memmgr.cpp provides classes to manage the various segments of memory: local segments for local heaps and permanent segments for object file heaps and saved states. osmem.cpp is used for the actual allocation and de-allocation of memory using calls specific to the operating system. save_vec.cpp defines classes that support a save-vector for each thread. When in the RTS a thread may need to allocate memory or access values in the ML heap. It always does this through its save vector which may be modified if there is a garbage collector. scanaddrs.cpp provides classes process data structures in the heap by following pointers. This is used in the garbage collector and also when exporting the heap. check_objects.cpp is used for debugging.

Poly/ML Extensions

libpolyml/foreign.cpp
libpolyml/foreign.h
libpolyml/objsize.cpp
libpolyml/objsize.h
libpolyml/poly_specific.cpp
libpolyml/poly_specific.h
libpolyml/profiling.cpp
libpolyml/profiling.h
libpolyml/sighandler.cpp
libpolyml/sighandler.h

As well as the standard basis library Poly/ML contains various additional structures. foreign.cpp contains the foreign-function interface (CInterface structure). objsize.cpp supports PolyML.objSize and PolyML.showSize. poly_specific.cpp has various additional functions. profiling.cpp supports profiling for time and space. sighandler.cpp supports the Signal structure that allows an ML function to be called as the result of a signal.

Basis Library

The basis library is compiled when Poly/ML is built for a particular platform. Apart from the entries added by the initialisation process all entries in the name space come from the basis library. The library is mostly compiled into a basic name space created during the initialisation process. When this is complete a new name space is built using functions from the basis library and all the declarations are copied over with the exception of some of the support modules that are only used internally in the basis library.

Build control

exportPoly.sml
basis/build.sml

These files are used to control the build process.

Values and Infixes

basis/InitialBasis.ML

Most of the library is arranged as modules (structure or functors and their signatures). InitialBasis contains various values and infix declarations that can appear free in the basis and in particular those that are needed to compile the rest of the basis. A few additional value declarations are made later in the process, in particular the General structure is opened after it has been compiled.

PolyML structure

basis/InitialPolyML.ML
basis/PrettyPrinter.ML
basis/FinalPolyML.sml
basis/TopLevelPolyML.sml

The PolyML structure is unusual in that it is actually built in several phases. There is a version of the structure created in the initialisation process that contains special definitions such as PolyML.print that are infinitely overloaded and cannot be written in ML. InitialPolyML is compiled at the start of building the library and extends the structure to include some functions, such as onEntry, that are used within the basis library itself. PrettyPrinter, FinalPolyML and TopLevelPolyML are compiled after the rest of the basis library. PrettyPrinter contains a pretty printer, FinalPolyML contains the definition of PolyML.compiler and TopLevelPolyML contains code for the IDE protocol.

Support Modules

basis/LibraryIOSupport.sml
basis/LibrarySupport.sml
basis/VectorOperations.sml
basis/VectorSliceOperations.sml
basis/PolyVectorOperations.sml
basis/BasicStreamIO.sml
basis/ExnPrinter.sml

A few modules are compiled during the build process and removed later.

Standard Basis Library

basis/Array.sml
basis/Array2.sml
basis/BIT_FLAGS.sml
basis/BinIO.sml
basis/BinPrimIO.sml
basis/Bool.sml
basis/BoolArray.sml
basis/Byte.sml
basis/CommandLine.sml
basis/Date.sml
basis/General.sml
basis/GenericSock.sml
basis/IEEEReal.sml
basis/IEEE_REAL.sml
basis/IMPERATIVE_IO.sml
basis/INTEGER.sml
basis/INetSock.sml
basis/IO.sml
basis/ImperativeIO.sml
basis/Int.sml
basis/Int32.sml
basis/IntArray.sml
basis/IntArray2.sml
basis/IntInf.sml
basis/LargeWord.sml
basis/List.sml
basis/ListPair.sml
basis/MATH.sml
basis/MONO_ARRAY.sml
basis/MONO_ARRAY_SLICE.sml
basis/MONO_VECTOR.sml
basis/MONO_VECTOR_SLICE.sml
basis/NetHostDB.sml
basis/NetProtDB.sml
basis/NetServDB.sml
basis/OS.sml
basis/Option.sml
basis/PRIM_IO.sml
basis/PackRealBig.sml
basis/PackWord8Big.sml
basis/Posix.sml
basis/PrimIO.sml
basis/Real.sml
basis/RealArray.sml
basis/STREAM_IO.sml
basis/Socket.sml
basis/String.sml
basis/StringCvt.sml
basis/SysWord.sml
basis/Text.sml
basis/TextIO.sml
basis/TextPrimIO.sml
basis/Time.sml
basis/Timer.sml
basis/Unix.sml
basis/UnixSock.sml
basis/Vector.sml
basis/Windows.sml
basis/Word32.sml
basis/Word32.x86_64.sml
basis/Word8.sml
basis/Word8Array.sml

These all contain structures, functors and signatures defined in the Standard Basis Library.

Poly/ML Extensions

basis/RuntimeCalls.ML
basis/Signal.sml
basis/SingleAssignment.sml
basis/Thread.sml
basis/Universal.ML
basis/UniversalArray.ML
basis/Weak.sml
basis/HashArray.ML
basis/processes.ML
basis/SML90.sml

These are extensions added by the Poly/ML system. RuntimeCalls lists the RTS call numbers. Signal provides a way to handle Unix signals (and console interrupts in Windows). SingleAssignment provides a reference that can be assigned to once. Thread provides multi-threading and processes contains a definition of the old Poly/ML Process structure for backwards compatibility. Weak provides weak references i.e. references that can be used to detect when a value is no longer referenced. HashArray provides a hash table structure. SML90 provides backwards compatibility for ML/90. It was defined in the original standard basis document but later removed.

polyml-5.7.1/documentation/IDEProtocol.html0000644000175000017500000004532513204034553017672 0ustar daviddavid IDE Communications Protocol

IDE Communications Protocol

Poly/ML release 5.3 introduces support for an Integrated Development Environment to extract extra information about a program. This documents the protocol used to exchange information with the front-end. It is written on top of functions that extract the information from the compiler's parse tree. Some applications may find it more convenient to interact directly with these functions and implement their own protocol. This document is primarily aimed at writers of IDEs or plug-ins who are interacting with the normal ML top-level.

Lexical

The basic format uses a binary XML-like representation in which the escape character (0x1b) is used as a special marker. It may be followed by other characters that determine how the remainder of the input is to be treated. Strings are sent as a sequence of bytes terminated by the escape character. If the escape character itself appears in the string it is sent as two escape characters, except within compilation input (see below). Where a value represents a number it is sent as base ten, possibly preceded by ~ or -.

Packets and Mark-up

There are two different ways in which escape combinations may occur. Within the communications protocol data is exchanged between the IDE and the Poly/ML front-end using packets of data. These begin and end with an escape sequence and use escape sequences, usually escape followed by comma, to separate the elements. The opening escape sequence is always escape followed by an upper case character and the closing sequence is always escape followed by the lower case version of the opening sequence. For many cases, the format of the packet is fixed but there is an exception in the case of marked-up text. Marked-up text can arise in the case of error messages or some other output from the compiler where extra information can be inserted at arbitrary point within the text of the message. Such mark-up uses the same format as the protocol packets but the opening section is delimited by escape followed by semicolon. Having a standard format provides for upwards compatibility since an IDE can easily skip mark-up that it does not recognise.

Output mark-up

Poly/ML can be run in a mode where it produces enhanced output but otherwise runs a normal top-level. This can be used by the IDE to give the user access to a normal interactive ML session. The --with-markup option to Poly/ML runs the normal Poly/ML top-level loop but causes it to add mark-up to some of its messages. Currently it is used in two cases; in error messages and in messages showing where an identifier was declared.
The format of the information showing a location is:

ESC 'D' filename ESC ',' startline ESC ',' startlocation ESC ',' endlocation ESC ';'
This is followed by the identifier itself and then the closing packet:
ESC 'd'

An error message packet consists of

ESC 'E' kind ESC ',' filename ESC ',' startline ESC ',' startlocation ESC ',' endlocation ESC ';'

"kind" is either 'E' indicating a hard error or 'W' indicating a non-fatal warning. This is followed by the text of the message and then the closing packet:

ESC 'e'

Mark up in the future will follow the same pattern allowing the IDE to skip unrecognised mark-up. This mark-up is also used in some of the packets within the full IDE protocol.

Full IDE protocol

When run with the --ideprotocol option the top-level loop runs the full IDE communication protocol. This can also be started by PolyML.IDEInterface.runIDEProtocol() from within PolyML.

This is intended primarily for compiling files while they are being edited, either as the result of an explicit request from the user or automatically. When this option is given the front-end retains the parse tree and requests can be made to extract information from the parse tree.

When the IDE mode is started, PolyML sends the following message to std-out:

ESC 'H' protocol-version-number ESC 'h'
where protocol-version-number is the version number identifying the particular version of the PolyML protocol. Requests to PolyML should wait until this message has been sent by PolyML. The current version of the protocol is 1.0.0.

Requests to PolyML are in terms of byte offsets within the last source text. If the text has been edited since it was last sent to ML the IDE must convert positions within the current source text into positions within the original before sending requests to ML and do the reverse conversion before displaying the results.

Requests from IDE to Poly/ML.

Simple requests about the current parse tree all have the same format. They contain a request code that describes the kind of information to return and a pair of positions. Frequently the start and end positions will be the same. PolyML searches for the smallest node in the parse tree that spans the positions and returns information about that node. It always retains the actual span for the node in the result so that the IDE can highlight the actual text in the display.

Every request contains a request identifier which is returned in the result. This allows the IDE to run asynchronously. A request identifier is an arbitrary string generated by the IDE. The request identifier used in a compilation request has a special status. This identifier is used to mark the version of the parse tree that results from the compilation and must be included in commands that query the parse tree. In that way Poly/ML is able to tell whether a request refers to the current tree or to an older or newer version.

The format of a request packet is:

ESC CODE request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC code
The start character is an upper case character, the end character the corresponding lower case character.
The CODE is, currently, one of the following
O Return a list of properties for the node
T Return type information
I Return declaration location
M Move relative to a given position
V Return a list of references to an identifier

Responses follow a similar structure to the request. The start and end code for a response is the same as the start and end for the request. All responses contain the actual start and end points of the current tree. If there is no parse tree the start and end offsets will be zero. An unrecognised command will return an empty response for forwards compatibility. Where a command is invalid or unrecognised the response will be

ESC CODE request-id ESC ',' parse-tree-id ESC ',' startoffset ESC ',' endoffset ESC code

In particular, because the IDE may issue requests while a compilation is running the parse tree id in the request packet may not match the current parse tree within Poly/ML. In that case the parse tree id in the result packet will contain the current parse tree and not the parse tree id in the request. The IDE must keep a list of requests it has sent along with the parse tree id it used and if it receives a response with a different parse tree id it should reissue the request adjusting the offsets to account for any changes.

O Request:

ESC 'O' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC 'o'
O Response:
ESC 'O' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset commands ESC 'o'
The commands are a set of strings separated by ESC ','. At the moment the strings are all single characters and identify the set of valid commands and sub-commands: i.e. T,I,J,S,V,U,C,N and P. For forward compatibility the IDE should accept but ignore other strings.

T Request:

ESC 'T' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC 't'
T Response:
ESC 'T' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC ',' type-string ESC 't'
Returns the type of the selected node as a string. There is no currently mark up in the type. If this is not an expression this returns
ESC 'T' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC 't'

I Request:

ESC CHAR 'I' request-id ESC ',' ESC ',' parse-tree-id ESC ',' startoffset ESC ',' endoffset ESC ',' request-type ESC 'i'
I Response:
ESC 'I' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC ',' filename ESC ',' startline ESC ',' startlocation ESC ',' endlocation ESC 'i'
Thse requests return information about an identifier. Finds an identifier at a given location and returns the location where that identifier was defined, if the request-type is 'I'; where the identifier was added to the current name space using an "open" declaration, if it is J and the location where the structure that was opened was declared, if it is S. The first two locations as usual indicate the position of the use of the identifier. The remaining information relates to the declaration. Returns
ESC 'I' request-id ESC ',' parse-tree-id ESC ',' startoffset ESC ',' endoffset ESC 'i'
if this is not an identifier or did not come from opening a structure, where appropriate. The information is similar to a D block in mark-up.
I Return declaration location
J Return the location where an identifier was opened
S Return the location of an identifier's parent structure

M request:

ESC CHAR 'M' ESC ',' parse-tree-id ESC ',' startoffset ESC ',' endoffset ESC ',' action ESC 'm'
The action string defines the direction of the move. Currently all moves are single character strings.
"U" Move to the parent node
"C" Move to the first child node
"N" Move to the next sibling
"P" Move to the previous sibling
M Response:
ESC CHAR 'M' parse-tree-id ESC ',' startoffset ESC ',' endoffset ESC 'm'
PolyML selects the parse tree node at the given location and moves relative to it. If the move is not possible the location remains unchanged. If the move is successful then the new move location is returned in the packet.

V Request:

ESC 'V' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC 'v'
V Response:
ESC 'V' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC ',' start-ref1 ESC ',' end-ref1 ESC ',' .... start-refn ESC ',' end-refn ESC 'v'
Returns the list of local references to an identifier if the parse tree location refers to a local value identifier. The results are a sequence of start and end offsets. If the specified location is not a local value identifier the result is
ESC 'V' request-id ESC ',' parse-tree-id ESC ',' start-offset ESC ',' end-offset ESC 'v'

Compilation.

In order to compile a piece of text the IDE sends it to ML through the protocol. Because any previous compilation may have executed code and affected the global state it is assumed that the IDE will set up some form of context for the file by previously saving some state. Typically, this would require it to have compiled all the files that this particular piece of source text will depend on and to have saved it in a saved state. A compilation request therefore has the following structure:

ESC 'R' request-id ESC ',' sourcename ESC ',' startposition ESC ',' prelude-length ESC ',' source-length ESC ',' prelude ESC ',' source-text ESC 'r'
'prelude' is a piece of ML code to compile and execute before the user-supplied code. Typically this will include a call to PolyML.SaveState.loadState to load the initial state for the compilation.
'source-text' is the ML code that is being compiled and executed.
'sourcename' is the name to be used as the file name when reporting locations.
'startposition' is the value to be used as the initial offset in the file. The usual case is that this is zero or a null string which is taken as zero.
'prelude-length' and 'source-length' are the number of bytes in the prelude and source text respectively. Since the prelude and source text may be large it is much more efficient to use these lengths to read the input. Because these lengths are provided it is not necessary to search for the escape code within the text and so if the escape character appears within the text it is not itself escaped.

Poly/ML responds with a result block. The format of the result block depends on the result of the compilation and possible execution of the code. The result block has the form:

ESC 'R' request-id ESC ',' parse-tree-id ESC ',' result ESC ',' finaloffset ESC ';' errors_and_messages ESC 'r'
"result" is a single character indicating success or failure.
"finaloffset" is the byte position that indicates the extent of the valid parse tree. If there was an error this may be less than the end of the input. It may be the start of the input if there was a syntax error and no parse tree could be created. As usual "request-id" is the ID of the request. The "parse-tree-id" will normally be the same as the "request-id" indicating that the compilation has updated the parse tree, even if type checking failed. However, if there was a failure, such as during parsing, that meant that no new parse tree could be produced the ID returned will be the original parse tree ID, or the empty string if there was none.
Error packets within the errors_and_messages have the same format as described above for mark-up.

The result codes are
S - Success. The file compiled successfully and ran without an exception.
X - Exception. The file compiled successfully but raised an exception when it ran.
L - The prelude code failed to compile or raised an exception.
F - Parse or type checking failure.
C - Cancelled during compilation.
The parse tree will be updated to reflect the result of the compilation and the current parse tree identifier used by Poly/ML will be set to the identifier supplied in the request.

For a result code of S (compiled successfully) there may be warnings.

For a result code of L (prelude code failed) the result packet contains the exception packet that was returned and has the form:

ESC 'R' request-id ESC ',' parse-tree-id ESC ',' 'L' ESC ',' startOffset ESC ';' error_message ESC 'r'

For a result code of F (parsing or type checking failed) the result packet contains a list of one or more error packets. The format of the result packet is:

ESC 'R' request-id ESC ',' parse-tree-id ESC ',' 'F' ESC ',' endOffset ESC ';' error_packets ESC 'r'

Where the error packets have the same format as described above for mark-up.

For a result code of C (cancel compiled) the result may or may not contain error packets depending on whether the compilation had produced error messages before the compilation was cancelled.

For a result code of X the errors_and_messages result packet contains the exception message first within a X tag, as a string. The string may also containing output mark-up such as the D-style mark-up showing the location where the exception was raised. Thus the format of the packet with exception data is:

ESC 'R' request-id ESC ',' parse-tree-id ESC ',' 'X' ESC ',' startOffset ESC ';' ESC 'X' exception_message ESC 'x' error_packets ESC 'r'

Cancellation.

Compilation is run as a separate thread and may be cancelled using the K-request.

ESC 'K' request-id ESC 'k'

The request identifier is the identifier used in the R-request that should be cancelled. Unlike other requests this packet does not have its own identifier nor does it have a direct response.

The action on receiving a cancel request depends on the current state of the compilation. If the compilation has already finished no action is taken. Poly/ML will have already sent a result packet for the compilation. If the compilation is in progress Poly/ML will attempt to cancel it by sending an interrupt to the compilation thread to ask it to terminate. If the thread is actually in the compiler at the time the interrupt is received the result will be a C result code but if it is actually executing the result of compilation this code will receive the Interrupt exception. Assuming it does not trap it the result will be an X result code. The thread may actually have completed before the interrupt is processed so any other result is also possible.

 

polyml-5.7.1/documentation/Reference/0000755000175000017500000000000013204034553016546 5ustar daviddavidpolyml-5.7.1/documentation/Reference/PolyMLProfiling.html0000644000175000017500000000270513204034553022466 0ustar daviddavid The PolyML.Profiling structure

PolyML.Profiling structure

The PolyML.Profiling structure ...

structure Profiling:
  sig
        val profile: profileMode -> ('a -> 'b) -> 'a -> 'b
        val profileData: profileDataMode -> unit
        datatype profileDataMode = ProfileLiveData | ProfileLiveMutableData
        val profileDataStream:
           ((int * string) list -> unit) -> profileDataMode -> unit
        datatype profileMode =
            ProfileAllocations
          | ProfileLongIntEmulation
          | ProfileTime
          | ProfileTimeThisThread
        val profileStream:
           ((int * string) list -> unit) ->
             profileMode -> ('a -> 'b) -> 'a -> 'b
end
polyml-5.7.1/documentation/Reference/PolyMLException.html0000644000175000017500000000540113204034553022467 0ustar daviddavid The PolyML.Exception structure

The PolyML.Exception structure

The Exception sub-structure contains functions that assist in tracing exceptions.

structure Exception :
sig
    val exceptionLocation : exn -> location option
    val raiseWithLocation : exn * location -> 'a
    val reraise : exn -> 'a

    val traceException : (unit -> 'a) * (string list * exn -> 'a) -> 'a
	 val exception_trace : (unit -> 'a) -> 'a
end

Exception packets in Poly/ML normally contain information about the location, typically the file name and line number, where the exception was raised. The exceptionLocation function extracts this information if it is available. raiseWithLocation can be used to provide an explicit location and override the default. reraise is written in terms of exceptionLocation and raiseWithLocation. It is typically used where a function needs to catch an exception and wishes to raise it again after doing some clean-up. Using the raise instruction of ML would set the location to be the clean-up code whereas reraise will retain the original location.

exception_trace and traceException can be used to produce information about the stack when an exception is raised. They both take an argument that is a function to be executed and if an exception is raised within the function that is not caught they produce information from the stack. exception_trace prints this to standard-output whereas traceException uses the second argument, a function, and calls that with the list of function names and the exception packet. Note that if the function being traced handles any exceptions the trace will only show the stack from that point down.

 

polyml-5.7.1/documentation/Reference/XWindows.pdf0000644000175000017500000215322613204034553021036 0ustar daviddavid%PDF-1.3 %Çì¢ 6 0 obj <> stream xœ5PËNÃ0äUnT(ïG) Úv¼vlÇpÄ‘U޹ RVj9 þžØI´‡õìÌÎÊ3θ«²ÇdJ¢A ï?d 詪 ÇpŸ’èÒ7RmP÷B3 †f “Þ\?ý$T* RBúJzó‹ µ¥•åÕ žMê¡c•ä Ozµ2¹¸ÀA#›­…ëÙd£¹µÙ·óÇÎÞî~pÐô¶ŠÀ˜s¯=¦ðL\ýF¤Wendstream endobj 7 0 obj 301 endobj 79 0 obj <> stream xœ½XMoãF½ó#tœv§¿?޳I€˜ÙY›Ã\hŠ–˜H¢LRcøßo5»ªHIïf€, Ø@»ÙUõªêÕë~ZI¡V2ÿàßzótó´RÓý©÷«Üß|ÿ)„•)˜èV÷7åµJZh¥VÁÃ6­î÷7ïëïîÿ€ýÑ,÷ßMû¤]ÝÁÆ­ «ûõÍûÏ=nöËÍA$ãµyχ¼Å‰hLò¸ô0ŒÓ‡Ê©eÄÕªq1ÀñeíçŠ6éiãúWÁ¦td§ÉK^„ •Å¥ãzÚç„ô ×TJê~Yô<­’H^{›=·IØhný}úX ë}ý©ylúæPOƸï%¥„*G&½ Í8˜ùh9œ_ÃØŽ§qÊ¿•ÂsøÝãäD¨=¼/íf‚LÔ¬Íd? g%˜·‡n×m^°‚pÒÇÝëÍÈD®|"Œ¤0*ÑYÅipC¦87äÐô_0˜ä¸Í›µ˜l/|´öÜæoÅw›'½é÷í0`6­A6ÛWE¹Àð ÀÆÅóm…7L Sè* jòí ŒJbOœ7ôÙº}|ÁÜã¾öeuX#L:¨ÄŸBË·”H/t⦷í@_$K_ íæP§Òù¼âšX°\k-&P Ž.AH¸Ðêö—Ð6Ä #7Sµ§õÇŽH]™ÄæñP(µôÎJ jíWw™`<’ÿu‚ìšûË%‹Ò¾6-ÇS„ع`†cAîMÜòMݾ«oK %¨¤¬–©xîÛq,Ö hwLǾ-„JƒË‚+È“ÒrR·Æ×+^éè¯*ÞÈt…¢åª[Ô»s‹„Ö»ªÝOÇÂèÕ³PaŠOŠÏx.:/Éäxêõ8x¡î¥ä<Ž8 € áiœzÄ)ÊZßlàê„%,áJqYÚÉK½9»HÁy]i1s ‘xÌ×tQV@÷ꛫê+hIûÛC½;­©© ”s¨B§9f¸vܵx´Ë¤Üà¡f½ˆ )3/×û¦¯YÒqënQ> stream xœU±j1 †w?…ÆU²Ï²5¶PèÐ¥ÁC‡.éÝe\áÒ@_¿¶Ï†ƒ Ÿ>K¿½!•ÕÎq1«Y+ëǸÀK2Oµ ¨be€t2Û%>si1;ûÎYz§ªÅLÒdvŸÅ`‹ƒøŽói¾Ì?ã\JÞ! I+1òÖ1Ôà¢/]ìɗܪ;¶ÙîÖÜ[äh%ÀþÎýº4Ynå€êĺ6û¹ÆÁèœö8ß¿×z‘sHK±Ñãxm0äö{;vÑ‘t8ý5šg’ïsê³C îâûuªžÏщUù1oC©¼&ø0eýº b”endstream endobj 96 0 obj 242 endobj 100 0 obj <> stream xœí[[s7~çWð˜ÎE÷KÇuë[ÒΤ®ã0 ¯[cšìÚúß÷¬´ÚVÂC²`†ìÑJGGÒ÷›–§6F¤óOñ·?j=µžÚĵ…?ýQû¢Ûz}Þ&íî}+tíäÿ‚x[ ßÝQëÕéÝ¿[D3xÜ´^ýôóÙù/—Wðýæ:ôúN›¶AFRÉsY^ˆÁm¡0ÂÔ81ĉáÈ0B Q¿]FÌè¢i–M\›@DÉ¢m0ïφ×—I†hh'ÄOoèâô¦5ÒTµ;” Šõ}‘ëL)2XÝë1✆õýþίI ëòmC7¹F ®‚¦6»OúÖ«@_ÔXËü1ï£b˜nÑ$´PÇMÖ‹ÕNÆ™]'¬$º>pU-È¿^ü*W€fL³ Ûó ø“÷(øÃØž?´ÎŸ›d4r¼TˆQÚ“ñÀqÈ Æ¤(ûIš†Þ`` ú÷=µÁ4HVŠø'oc!¤»a]7ƒ$Œ «ÊíÂ4JAšj¹ºGM…TSõúöÏø%ñÛcñ€uQ`Õ±~íIÌMÄ&Dzu(xž Î¯À‡ýNEDÔvt¿ðÐÈMÕë`½­¡ÛŠ÷àuFõŠàO)LêŽCò2$ôQQˆÐ2úz›d%ŸÜf68hz9ISÛŸM²x`ËRú°³¦êMb'Üíì"àߎ[ÛùŽ ›° 邬ú±;Òoó& ±QŽÚÂÅdÓátæ „4¼â[áhˆ¬B¬ûxBÂâG,C#`r$ÌwÂýÎ>e;×°L˜Õ:A‡cð1_Mˆëë¼Èr™à§¥¦4(óqYÈsmQÖ îì½ÍìØçåŒ;f-DLS_.Xa1U À³LæÙô¤ð9àÛ“Ûá6ui5ˆŽ,šÝù-ÄÜàÐôöÂuÓˆζH€¤‚EqéÜ®Mv$Q¬ pÝoþ¨ÃÞaI€«!Ýc8¨i©ÍùxàpNXµÿÈNŠHLÑr«zß dá´L¸o&³“Uµ¨tc²ŒÀÎ΢Úcpt%âr$ÂB©°U§§Q^ÀdÒ4Òë9ð9 Êâ0)I@ë$¸H“~a˜ ãa[>;kï½CÔ”æùãÃpfÝÃ(…ÍVmôA£©z½ÈrU·Û¬Ù ›Tƒ,EEƒßÃô8hÕóýˆÑ|!¡^“LCÔA°ŠìDSarp¸?ÐÚ¬¬p/#ñ ¯ã¾wž¦îâ ¤dôx½­`ïÍ6Ý/mšú(_@ÒÁÝfÐmšŒ­%ÄLUx´fÔM2²ƒJ½ÿà!ù¾ø[ËžK}C„‹ldÖºañL@À^mòìª_(¿Ô¯©ŠßÕ¿E„ßï&!Så½Êäóü±b ŸÐMŽìýÜfÏ ý%ä%7öSMR$mÄ ã!ÔˆL VÏe·…qH”%’lj×,"ÑCï·I8ÇÐômѼsÐôu·h/Ä>¢nU„®ì_6‰AÒÔŸ–á‰álypŒDycD^™”dzûÂÙ-¼SÀùêÙEÞŸq;>Jׄr ¶¥–ûÍä}ØT½–P´2†¼vECc…ë+{ŸÌÓY`V”XZ!H°HŽíàÐt˜©Î‚eÁ‘ªsà+û8{ˆÂWð™Šð¯©G{ù‹±Òáu˜*u£±2õÕpú˜&. Rˆê²ÄöìjoQÔ³üõ/²Ç×'G"¾µg Ö¾VØ¢±ÂõŸÃéÇ·tª$ÊßJ[ºÎø"6F”¨0Ï¿S £©ZMU ç#±›ØÎ…uˆ1ÀݼÄeÀ=iåž9Î_wÛï[ùç•Cqóendstream endobj 101 0 obj 1506 endobj 120 0 obj <> stream xœí\ÝSÛ8gúGä±7Stúþ¸· íL¡Ї{qÑúbê˜Rþû[[–âÄ $ÜÑs< 3aF^­W»¿]­´’¿0"\þÕÿG—;ßw¾HÕæÿ.{ç;¿Ÿ:0ÈH*ùàübÇu ƒJ@»œ_î<ç¿ÿ ¤Ú,Š ÎÇ;Ï?•„".…o:µ6·Ó‘- †°Ä²~Dq•HdÓ¢äÈ@`E)·Ñœ©ŠvT¿›5)w)"šJ5Ø] ý+¯‰e“X!Ã$eõ»_Vâ ͘ñâ|žUGBR¬ëÖdTÔ Ø»¶×‰'dXúÆñMÝ ïÄ¿§¶DJaâ ßãŠN€.¼–ˆ1äüÔ*^´Æ.ãaûԔ¼EÕ…"ŠdIÎÒ”xy?½™ÎŠd2f“,¿L®^”$š!!±—éÓûi!2I¥‚)ߦ³¢æeÇžpæä#„/`€(D•ß%BJhÁ—š¦÷Qµ (ÓAóT”4»L‚’¥…D™+DErf‹Ó²™jÖ¦uóá^S5z©µ†4¬*Py…z6 à©e›MT5ÒÆ0mëa¹ ô°¬šÕ¿é(Ö²Ïzo\ð 4:šÍÙÇáySé¡B+‡ÌHVYŒ‚׋ ¯óY–Ç­Å)Â\/ËøÈ¦y|Ë÷¾cWåê¯×é:+p¶‡™›Ø—âp;¤s›ö ¢åˆó ÒlZÍQ¢¼ …sÜ*X3ƒßÇù$ý ¹ÑÏ(ˆÆ‚Þ×ïpr{õÕu‹† $l5ßkŒõÕŒy[Í4¢æ}ûljcV&6î5 sÿx‰@Äd0þqvÇÀ¼JãȘÙ‰„èø ×°ÑYÊzìïÉeLÇڶeÛžÚQ™m4­+"&X÷ ÎK ~¾Ë­½Ë¢07ñ®ÿ'Ä<8Îo–63Ôßvuvë[©Õ£éŠ;Ù±«rõ7Õoú_Óà‘bóÐN&³wg£ÜÚiÔE„þêŠÚuìª\½Íýç´áDøÿ«Ÿé¬p‡,J ×Õözã±$ˆðpÒ`?¯6R‰DÄpÏô¦¢C›`äóÄ6˜pƒ˜a~Qmì $%“žo´HÖ`À€œ0/äá°É["Eæî‡t×)ƒˆ <ŸR}Îóg×ÉÄõ\9Õ¼\ ë „·¥cWåêïB‡…0@pd¡£W‡7ûÎÇ)„€0uºP?ÏÅ&””7qÿšSàúáÁº®_w¦ ­|†r8ôëÜÙáè(êŽB!!tÛØÿ¡ê ‰¨žn ú»N`@/žÒÌ­“«¿KNu¥ÜyRà‡²óÀ?+òtúe5ðñð·M®þ.“Àg:r¸.T•ÀÏÊ6BÊ2\¥›í%Õ5@Ê‘(÷)]ó7p„³"Ëã» ÃD [„ŠÞÁ¼ÿñµÎóÌCù>˜Ÿ¹6Äüí²‰##¤öбåUŽUÙ”<8áÞ"äl·+<(üv~Ë@62È‘Q*ÉsOxUœx=ñÓ +)$¹¡þõÅQ2ûvwÅ™!£éò :ŒÞº§ñ½‰êØžA(ÏQ}”N‡åÕð;kà5BE®n‘}·°ý‘' 5Î^“ŸëáUÆÖ*]5oïðÚÓMYÕ° ëÄPO›ö8[ø„Iyð††\Á_eöEnƒç—œë26ÕHŠ{ªØ¾ª®xÈLŽ3wÑVÃëÂ7\¢EùÈ&ðqæÊN, '‰NœÜâG˜äÎ Ëå@Xó§v’i•31X(î98iwYùmK÷ÃÌ]ÕTˆ“ônj©çÚɳ˓zÌR…ïÛÄñzÄ«ÀóNE XÏÏM<‚H í2´ä¬­]Ï7K 9£ôB6ÿ˜NÇÕÚŒƒaÛí¦bJÊ“aOáÍÔž*¿³txêêº8¨Õ#Tø@NÅÔ y8¦1ºv³Hù±¥€î >­˜Rͯ‰,~$„Qó!u-mwdîg&ÑÌ*’IÐH ø$Ï ICàe“Sû#¥Y<·^±Îu‘í‚EïpÞÓ%^è4R¢¡‘²ðj ¨§&Mà dó•Èg&õtc°Órõ7÷®ƒ¯Îî”ÿåµ”endstream endobj 121 0 obj 2019 endobj 124 0 obj <> stream xœí\[oÛ6~ö#ôØ Çûeomڬź!®{qm5ÕæH©,/MýŽ(‘–-:Q‚4‘#@çGÒw®<Ì×#áò§þ;=?øzð5"vÌý™žG/Ç¿œ*IdÓ">¨Hd(¢„DJÂÜDãóƒgÓŸÇÿ½fMúCK‡yt„Fs¦¢ñìàÙßyM,›Ä &)ƒ Jš%‰@š1#ë¡O‹Â2†0źL‹zPÁòÕØ›‰#dX:ÂÙe= {báö‰Ë!‰”„×C¥KScÈsøÅkÉMd‘TòRrn׌Ԥ-3E\ Ç}Žó8Ú͈/±{(‚Hµ¤¡Í%)¦Hx‰DIrȼNF£CjÊ'v öA”–óŒ M¸“â4«Åð‚뱬ø+Igv‚)˜à¢ž¸¬D °aCR®LÝ3üZÒ(xɘÒ!¡…º™ê)0öU.jóuø²á ÛŒD·7ÅF~ûå7´’i¯èLWš!ƒ€‚†b°¶bŒâü?«)ã Î?Ø1æH»ÅcЕ<¨ #ɈìÃgÝƾÊõðï`¼iùîªà·ºÁIyÝàmÝøP9Cp\Ú½«§ñ<ž,â .H¸ ™—úÜ{à߆]øÁΤ›Op\̬€ÏBNA´ÿ±Ú©ŒQÝNï—q~õ2^GË|‘åÏK ÜJ‰L£ä{lYAFÓ.ûŒŠäâb^qibúXø:®Cû°Ta`ÐÑ!!åk¡–fœÌÃ*KRX²§‰ð^2öU®ÁƵ0RI³i#¬ ’,íb¼WùĈ´;¡/“ôÌ’Bî¹JÖNòä<)d2 w’Æ‹°2Bj, éçÞƾÊ5X—ÊqÃ¥²–ºT%ŒÒ£R¿QÀgA™¿Èã‰uqTOñk\œ%÷ AÆø†‚EYÔ¯J{|>">áyê\‡z|ÒnøÌ.¬Wˆï÷®<`Edå:óŸÌ'i8 c Q©6áÚWðôU®¡†(œ¬0-µ³¹ÜcÚ—¶˜®£ˆG¤’n¡ËùÔ˜Ð_µÚNŽSG\š^|ïÁx˜(NWVí ùÔ~{>9‹GEñ¶E²” «ØáF&"ƒÖ …}À0-oD´mÁDçïÿ.Icé@½¨È!ý"‚\O>ŠÏÎã´œà’ 2X„í ¤€ÂèÇ2‹Ñ@n[ Ù5'6ƒ1ÍHYb?4Ü^ûƒáÂbbŒŠ{Zr vRÄt(¼í½ãðsÙˆïøæù ¥3ÎOãi1IÏêұȬ:²„q* ß-3é1†i/8¢¤m/ug5,fJzÚ…~Kl%8’„)â#ëÁ¹D°ƒ›ËòY’ÂÜ–n!ŒÈ=v í!ÛzXÿgÓ{Ë3›±º¤h¥Qvrý´ _‘›çv®k²Q¢|MvË-8ÇÿßÁz ³]aì«\à v¬÷x=ŽÞ”?ÿ,³ÿßendstream endobj 125 0 obj 1994 endobj 128 0 obj <> stream xœí\ÝS9çþ ?îU¾?î HBR•,Y`oyØ—Á0c“ñx—Ü_-ÍH3㬡jSöØETIj©»õë©5|aDFØýÔÇ÷ß¾ˆo Æ÷£ã˃:2ÈH*ùèòæ " #ƒGJ@»]Þü$ÿyù_ªMg¨¡ZðèrrðÓ•A(âR„¦s{c ;[×%Â˺‹ RͨÔH"£˜nF ,ßFs¦üØq½6k<¤ˆh*Õè°3ö÷¢,Ûƒ2LRV¯}äÙAš1ع^”ž“ëº5—u£‚é«¶YȰ “?ëVX‹°Ž["¥0 ?•?N€.‚–ˆ1ä üâçÝÝ8dœ lØè7·ð$ öJŒ MIà÷ä.+>Û¬Èg·o\·ÂHjJ[Ýçn‚”nÿ–OÊ;ß%4ð%q}G‹±¹.®VùòM­ €áfô[† ‚$¦á‡Ìë„"ĉJ›E\7…µ¤,òëei•zámý§ÆþÛK»…£ÐÏ4 -Ô 7•/†tæµ ö £´WÙBþòé{ÎQ ¦£/¦B³‹;:¤QÌh4QÚ7Ñ÷ï½Á($¥Þgî …`D‰êZ 8"ˆÄoóÂŽË|>ó½’#Á4‰½Ÿó™3¢ª‰Z€¾ì±éˆr!ÚtÇßKKªN…¨R ¿‡•Œ˜#fº S6d:\ŠpÔ[Ûƒª• Y]€¯xiŠoAâÙÜ`ÕQu¤ ž1”{}¶:eu°õÁæ·w#€!Lžgª‡¨éÅc •oq*Î¥1|—ÉØà“¾†Õo—+Ý•] *«*¨€×‹A…õƒÊÕ'ð >®¸$QÐgãÊ"dlšG ¾l‚ßòòîãìfžNÈ@Áånr5]é„}&z ]ÏV§O#2Ì-q“æ0ÒG$O!ržM< G°}PÆùù¨@OÿËÒßý$Î’ýuºäD aØU%¬;•432ˆ Š‘Îø¾6ÂEh+¬}_çÌDݯ;᯳iPw –æ‰ —OD9wÂŒ’¬á`$i¶“ÐþvŠÄv^ØÚ=@ž%"0’R~©Û˜”A̬N (†€Á˜ØŸÓ° q2= šô2I QÈ8^uIû°9¨°)yƒj‘@µL ú2DBAÃJö±|÷XÖ9´iÝҴ⦉/œÈ4> pÕÃçŒc¼ Œjm06ç*®à°Õ߀™Ðpj[OÔuŒMßDF #´YõŒþ´Aá/Ž×Q§v~oËâ{EœÖ »Ú€l á¦ò5\“Ãç<Ø6–*ÖM&>‡¥ÒðX šçU² DZvoä:'‡‹åuYdã* †£Á˜<;EÒ˜!~ÂØ– gSùlÓ5½À‘*o|œ-ò‰­î¾b lýQcRêX;´Å4{¨†0‹—î~)¯*L#ªbÒòÉÞ”g7U‡@†›ùóúV˜Œ˜°f ÑŠ0ùÑu8QÍ£Ñy#BÒ4WþTMFÈël3&:,rl§žÎÿ†ñ@þg+0Qàó"ÿß<Ö,(bLuoðËl:ý~t½,ËP£uµ‹¡ÿñMH £-–ù¸M–´t-Ú'å!›â²z¢0©[á> ¸¤ŸÆzLi‹E«€È5"Âf…vÐ*ÆšŠ"‚Ù¨Õ² ƒ ª#îŸ)RWÂÎyŸˆ'ý„ë%QjX`ë²ò}TLtÜUø ‚ BÏËr~_á»*hèhÎÒÌyC¢G,*RŽtó\&òÀhlKò%ƒi!&ÉçÆq† -/%n%Fˆî¹ÑJµ·Q(Cœ‘.]XG¡]µÏ®ÎÁ¼³Ùí´ ÛB:£ea³j :œM:’°—†ÆrÑ[»(‹å¸ŒÝ8‘³Ð'=¤B#¹*—½ðÙ*uð‰ˆKŸFN6±x0>c[7•¯p»÷.¹Mªtó9ûê}‹»‰üØh à†„¤aìÅÃ4÷Æ›´5p%\á¿óægàÁX7ycý46Q¥ùÙÞfeîÏcp¤Œ/ l(Û^róÁÝÓ×D澩pØÆÀx­·¤‚õ]{¢dt¶,¶I¶dŸñ­ÀÙ?:]@'âųñt9© È]°púš«CŽˆˆ½‹í¸Ø$÷$6q4Ó} Ûß‹§¢>'ˆºFÔßà}ÞÂMåëÇûÎWÙz¶¨Tëe›HÜp›¾­\Uys½ÎmRÑó<›²¥Ã"ÜT¾›Ãs2aÌW͉ø^ÿÔ Î鉷Ýþ,Àßx¹õ™Ó"{¸ËÇþ 0‰øÈIý6P!NšÌìcÚø¨B”пó¡Õn*_;lX¯„'ÙøH€ð` õP•ôodÀL´!Û³‹I¸©|í„!ô³.÷λo‰Çâ'…ÍJ{zRUzà`#Ø3OÿOî²Ùm-’ÊYŸxÖÿ„Ñ1Ö~?¨ 4#i}ëâv ÆP»°åQ1þìŸu‚¸&A9›Î+0Àé_°E„›Ê׿Éyµ¹¬‡ú@¥ZEdï.PËó]Ôgþ_m¸o‡ã×á_o ÷©t÷Ü}ó½O?6š/6ÐkÎ6Æy ã±ÚÅøÉ4øœ-¾&­Üá¯òºÁ[»ùÀSåÖ;+ÈMûgÆX0í£ü¬Èoóô«=Ùr¿ú¹Á[¹£ hRÞuÿ]9€:Ö:û ŽÕÒÿÊÀB,6u‡÷Ý"Ⱦ»ýrà~þÔ@endstream endobj 129 0 obj 2250 endobj 132 0 obj <> stream xœí\KsÛ6¾ûWè˜ÎÄ(ÞÞì$M3“‡ki::ôBKHÂV–Šªüú R"訞օ(gòv%ðíbw±ð—híOý÷ìúäËÉ—rmþ¯Ùõè|ròã¥#” ’&O*4R`„F‚›1¨M®OžÍ~˜üaè%iÓŸ::HG§†PIJÄh2?yö{Qó6±ŠpLÌ–æÌ’0 Q¼nºZ—Ž1”uk6+ëFa†¯Ú~ÉÕ10¦*—iêò©‡NØeD²Ë¸+–a¤ÿ|ø]Ô•#2h±ì¹ {dàZ°WqØ¿ÌÖŸu?ê1F)lÙ¡0¦*Wœ1ÂîX@ÿÇú²ì=—P 왬`Íé` Ç=äþ{-î΋ËÍB÷!ßœ¤ƒÛï#E>{ù}|•Ù~äc1øõ#ìÜ@ÊŒ£é½š¯=º€”õF“ØÈCaLU®¡ú>¶TÇT÷¨‚mÆ&ÄaA­VKÛfx0^ª2®ÈÈÉ"ªžêÞ cªrƒúPS²¿úúS±Ú,çQ•a("÷ˆ£ ƒƒù0c‰œ›!‚sº7Î7ËY™WgEåÖ­’d凵ÝOÀ*ðY,Hfqà¿.²›ÏùlýêîÆM,€!!´ZoŠžÌÁ@rµßA•$R•k°Ñì÷m3Côm¾Ôîúƒ @‘ðâ—e‘_mÊ|ZeüûÃÙô'Šqƒb$=Ši Å"Žâ‹E¶Ôï²õŸQ¸ óoÄ÷XŒÃÂÀà@ýÈQÞƒµa?P‡ð°jÆb¦9ܨnƒz\fe<§È8à2¢¤Énc’Œ©Ê5\M &P3ïá’uWò››þ»& Id)’ص$S•ë(€ï½sHp|ÜsË:Þ\¹§>#r›/ç+ÛŒàJùxòö]Õˆk²'óžK) 0çÃJ$¦*×p½uÚBuì÷Ü Nò[N¥‰+w?0á}=ÆTå®Áo©¥cpÏêdü¡È?åñĸ0¬¶~5=J’1U¹†{° æÒRÈÌùÇ(è}”7×Ù§¾œ"¶áñ#ƒ;aÄ cªr ^éÜÙÒ­Ö©kü·+•Þ-õ‡b®‹çn^ ¨}OÑ"x©oÊÏ®“)€E(àtãü[O2 F`ª±Äð1»®·ù_¿åëM¶¸Ôs›'¯ @äXnõ¿.´^ ‰¤áeHEq¾ØÜ“j7Ÿ"á1ñfg°êÜ#@º;3­f²–üL/ •Ú)žÛnÔ…ˆ0¼ÖåE~§ŽšRã(zäO/6­.†€€¬yÁ°¹j&aò Ó³ùÜñE7Ú ÄPwwþ­E¦1øÓÈ"›eh}*J£_φÚÄ¥Ô89÷Rû•Œ¯–´ëܤb#ƒÉÆ9•¼ÜqN/Š•+Ó0„4eº(óÊcÅ0²YU¢‡”Qê—f¬ÚÕ5Å]\f\\Ñ™4¶üHÄa‚_ùšT”ê֤☓8}ià[j¯æ4 ûµ0zàðŽ€Bá9ì×(Ì ãû¼öLe¿ùÃtU»»á˜k<}S½Z0þ¢þ±v©‹¥«ŒÂÔ`>”í•«kç`pËÉŠúg5!²Åþ>»î‰¤(à¤Søz$h|dP=ØòïÄÐ(:ÑŽF¶ž©¶Á› ©´ßÛ÷õ2Øê*b q¿Ï:©} Ú¸Âú.LN¨=;Èw'ï 0&ÿµòÕ„Aû¸Ð{¤VµjI£4]ÙËjïý~¸]ÖI&EÀòþ°5Âf\vF…ìg{Q?3³5«aþª4A1.eÚ0¼q¥’¢‘z9ëS÷½XÓg¾×Bœãêv¾æ}¿*óq°?½u’BÔ'ªKu5šÔÇ@ g6 X«9ƒÁÞ3§v[¯;£j?$`2f43‡Â˜ª\ƒ=G[E˜tœ?Áí9ꔯR5¦Wá¥ETÕª ¥‡¼ûÔ½¸³3Pæ»U1Ó[#s€PHï=ò™91F²ð|;+·G€‹=Ä>5‘‘± lûÐ^êõö2p$ ‘QÿxÈ8Â$¸¬=þF[N B÷.BÜ’7ïS€ý¤sÿι¤o7ïE;'­E[W½AŠýõqõIW•W] …ï:ÏËëìÆ¥x‰UOâEŽæ„/ò;O{GQgŽ÷h.Ö_ÖÚ\l÷¶ŠFϮ骮+8U¾4ÜGÄL¾±sy|öWú¾cß«Éè×ûó7x\Å‘endstream endobj 133 0 obj 1870 endobj 136 0 obj <> stream xœí[Ks7¾+ù<:UïÇÞ,i×I%Ê:’\öa/cqlÏ.òpÅùõi`ÄÉ‘b+#FÅ*©  t÷×/ðÓ#2ÁöÓþ¿œ|:ø4!n,ü»œOŽ.þqfèÄ #©ä“‹÷~™#HN‚ ÎÊbzT5óâêßÕ¬|ngh˜iT8èÛ7-ŸÚÑŽÕUS®-’ ÌUW´Ê]s`ú¸.‹¦|UýfW¹n΄›«—sOñ¤h Gñr¸r%&‡„ØãÑí”[~e¸TÎ:”-MW„ðîeqŽ8•´ùOO[ -ÔÚÃt}Vfè+/+_ù…¼?«O‹èþBsßû w’ïa™@LGÕ1Ò)"3aPþCJÅŒ‹ö[JÁÊ‚9½^•ά©EX|UX[eµPc”¯_Îã’ö(Ž•¯ý5í F*Ðí †‘è‚„÷ák.èÅu³<+¯ì7ÜŒÖáÔëÿY8_À(J³A+¾ +´TqÅQ9›ùqŒIέïM~¹.ëÏ?–ŸÁ™dUIÄÙà oüp0–‘A. èßÃ˲9)ß׳ffÑÞqÆbI£\8V¾î σ¿a†VCÐ0Cóž!Èž÷~S-¦K7ªmüèÜä½6ÃJÝ{÷NcF¹p¬|Áè/üš¶óPÞÇ$ïÃ3F—úÞÇçtÑ ÁÛsÅçÉ!¡¦"fÞiœWó«Y¢¤!^ûÞdíx¤’}M»~Š·i e½DKfc–“rÕÔN¨LŠã°ßç(lÆQIÜQm”¡;‰œ_¿s®€€æñ¨yÑC$‰”7z£×Í|ÄŠô8}>FÌDLZM¢ ð‡'Mbƒð¢ß—år^6õg‡?¨È J_ðúÉýçIDEäi³‘WO$%µ¦©«w×ͦ ’‘wúäÉþŒ'Û¢J9WƇªÒ&=8sƒÄ ep\6¦$,Þì«礎%¨åªjªe›LçJÝãóê÷2äטà-õ^OäÐ]!ÕY¾UÉõôáÎ)QÍ›£e=-ë7Õ´ùè¶QÌÖ¢é½x=)¯Z*œ"Aé–¤ÿn—YÔåÂjQ ÚŠ"ªwn”nEÛ }ç­¬fÓvÓ>6pDt¯z8Ÿ2Ê…cå †6J»·;ßÞ­A)OPjdˆïH‚R1J?‹)–—1.‚÷ÙêUq Š8×1c8ï=8X¸Š°ÏÍQáZˆ”!&âèÿ?ÔËëÅôy;Ÿ‹ÔîÚBÊÛ:ÃN¼ÖËjw±I‘äk»øF™Ç@•%ĶCOy¶‘ÂÜ‹ü~Y€Q ®-âÜÐÕ¯JJ$‡iÀrñí‡ë:é€Â®]B|Lƒ¿=õ;è Ὼ+BFȨe7k "[‰¤H4ÏÊ8¤ˆ q£øí~0‘rë#¤U5ÀGä’›RwŽ6/tˆo©PàÝGÞ×€VvPØdPXelð´¸J:$ 4’[ói˜~VT«ÒÃ$ìD:Ýø²M«ž˜¦÷K«!ìÒF<9ÝâÖIÜ2¹z了ثŽr–Õ"àœŽ@Ñ”õ&™I¡2}³±BÀSDú)ùƒŠBÉÑf÷&cf¸u\„°AãÀB]–YC aÞs0cì(Ž•¯ýµ ‚;ž£ÿŒBRŒË[¿ŸbˆOÖZ6 “°Ÿ|«DZ¶êz2öQdŠm˜Bsƚ梒n+Wõåõ̶‚|ì!€ðwÅ© —±ÿx]âmÈnßÀòµbׯ]Nü($$5œ}.F¥þÁ—;Øë«ð†èôBÆç£ ÈpóÑMÝ” =†´StK—Y&è%$§ËåU¨òA¨J5 \¤„ŠÞ‘8¾¡—h—™c>"<{Ü=ŸGìwÕiÚ‰]r‘=‰ýÒŽN¿^Ì;¹œ{~×j·[ênAÀ„HÕ†»%l R„@kö4ÿ'Ì«æÈÀÄuµqÙÿ QNW0à¤Û¡ÓbQ|Øûqƒ¨â_³”ôwX8V¾ö8 f[QVeŸ2—Í—Ë…í“úÒþ%¾sÉwガùH…$cëÇ{Ò¶ÂØ{ë÷]}zGÛh¿¡²O @Û\킎H†ëb±ª|ð A¾’Ï÷ó()‰–õ÷¾G9b*’öílƒ´’b{?û¢u\ÇÒàa Jpàè/xœ·xÖiÁÒË„Töi”m!ÏŠÕ*þÌ/=ÄÜðÀÁÏσ™€|ëËÀ#Ʋ‡E¤KOºÝþ ’åÞMµzÖ¢†¼Õ½nNÛv¼í&Åg<«…Šdq«Ý:ÙÒ ißèl¦Õ_€3FE¦þ÷ö]" œ÷ë…*û¼ÃK|9[ÖÝ´„à~ké'…*ÈSÄôc£„{´°Dš%ZY‰ZÏ%‡4ºGfc^®ÊYî=E{åóyÑ>c1 *všŽ_‘½> á1½qÞ sK²'8“ÇgûøNöm¤e ÅÑ.šU¨ýh¹­Úü²K##8ò±CRé§ÄeßµQu¼=Ï„•¹gNmÞûs1÷^Ü`ÄIì:lÒ¿°$«p@Bš^P5ñïi¬ç¤û¯‹É/öó'˜F endstream endobj 137 0 obj 2179 endobj 140 0 obj <> stream xœí\KsÛ6¾kú#xLg"‹Å³·æÑ¤“ØMmÏ$‡^TIÕ‘-›’Ó:¿¾I”À0Š›& ­ñŒ<wOÀ~Ø]`éëŒȨÿ©~Ï/&×“ë Š¶ðk~‘=:›üp¢T&‰Q¨EvövR*@fa™’®n²³‹Éƒù÷g9ymùi!Gy6u‚FsTÙÙùäÁïy%,ÛŠ” Ý^æ'/"ˆF4²júc½) eTW­³ù¦jT®û²íù,"•AðüïªÕIEÇú&I”¢À«¦—›óBN*MÕÆÀC÷Á+ä&3ÄH&¹GÎ á¡}S(3Â¥Ú'ö­Ííå¼L8ø’†/Ê. kwÉ(#¢Fd¼È•›NdÙ”ÿ DñˆpçŸ# ¼Fqj7¯Žgö¡¨À©lCTÅ’ˆÏ‚x‰ÜØ-8ŠA«d,ÕR¶G“ÐB})©Ty,÷:V4w1Vüd÷»6” áA  ²*éL¤³*pÖ-«ÌŠJ¾eV¯òÕUÁ¯ Á”m¾YØu§ý &ÓXºÿS1U\®IìeÄßÞúw»ß߈©ÄÒˆ©ÛŠ#†ñéâƒ}¾¸,Æuæ)j²Y[&JçÜthüØ–ÙêEjBeq/ŒŠ­‘WùÅlYiiM„@¾­5EjÓ*›øïÎú·í­þœÓSÌÔýuò‘¹Yص‰Ytª¸îµw¹M¿ƒ{ûQû3½ƒÆ[ éò¬ƒh¯žÙÕ…Ýä·Ýa…ñ1&º“¹I³Rh;˜Ÿ¢q¹‰™:[ ¥/A/ Ü™+„QŸ¾/Ú¼ëPu6QlÁnÏFÊCXT¤'š0*l¸[ù «žc`¢ úݾNÞ&–Éc.¸×a¼70ç@ ö+%0C$7oèä¤ÿBM.t°ý¡(¦Šk¼ TÉTÇLA(e»Ìd13Ýl6«ËW¹]—Qž0.cWzëé‰]ÚÙºLÚ¥q(„½å…½mT¹$k(îQ[ORïHG«Íbuyì>ßvû`)] ‰ûXJ›·¬&ŸûÞ|Œ'ÿñ"Ÿß,gÛ3. ´>šI3ãRL×xÃÝ0FBH•YÅÞØ{}c×ÝႦD1Ø¥L‹;ÅTqÝ ~…WüüX-ýÁËUCñìh–°´CQL׈£Ý=4ì\²‹—ß½»Éûâ-O®wφµ¶I*¦Šk¼ÎÃ4ìPz×y¨³£7¶Ò„µG:2, 8páÙôÓg^Ê!mÈ Í®«ÐdÈmb.aBß-ËÖú'©˜*®ûA!¥vý‰‰)ôÄ.m¦^nÉÑ­v’Š©âÂÑ‚lùµ{ºU–2Œ rOOòUÑìÂ,ÐÒmâœHª“XÆÑ+¦Šk´) BËåDQ47ÍAOËËnF¨/ñ-Û66oøƒÚ¥÷uùny¥E¨P*ÀzigE‚ Ååµ?‚“uíU+2Dêð×B—ZÖ·d¥èQAlDÉz°óòrÌ fL}ÇSŠ?±›ÙbÙIy‰ÄžIç(âš–‘atŠ,6²ŠJSPþª4 ¾Zw—)3NÇCíÂÐSÅõõ£ž;3ÿs7{ÖðÐÄ> stream xœí›KÛ6€ïþ:¦@Ìr8|ö–lÒéÂM{èE+k¶µkk‘æß‡¤õ²Ä´©SliÙ0`£™áHšOCjèû„H¨ûÔ¿Ùzv?»OÀËšŸl<_̾½6,1ÄH&y²¸í 14QÂÊE²XÏžýfñ§ÕÕæ@×0¢5³ú‹åìÉïNáR˜ZtßæÛ|“åî@B%•õ! °w©T"‰Q¨…s‰6dá\0š£òºY=8ö5猀fR%óÝ?¶µ²ì++bP2¬Ç~æÃ!Ñ4áÜì*o6HFu-M³ª*ë~/û1m‘ÊF¸üPKí˜T4ãøÓ–D) â«jéõ„½ÍUcà©ýâûÈïÇ%·!‰dÎŒó-¼ &œ6cVµŸ_7ëôîç²*n?î=ð¾+)S¬9ã"Jh¡"¤Œ¥u1<Á¸Â†|¬5özlhŽqløîG/JÐðÆ P9¥9jNŒ}x̆Ð$G½-vÅM±*<õÈ *ÙàòñoÀBM$S霖a¬qM˜"ªýs4†h;=˜£-åÀ+û7„&¶7Û²*=iš(hkcV®¼®"š·×äåv[ú:j}2°Eo/~ïvé»|çP[źØL¸fj[Æù€x¾Ÿqxàuƒõótù,ˬÿ ØBÁÏ5w£4Œ5® ãoº"j AŠ×H±0R«•Gí$›·Õ5 2f'ÒFÊ/8»3É™( cëh$†yýÏ@jý ì´ØcG‘ÕØa;/åv¬vôª\©cnÊñ’21Æ×™;9œ?ò uWåªÜ!ãv†Lñ’!QÆÒvýóHêh:¿¦´iÝ{Íȶ»ÏPæi¨‡¯5§˜§bk\Ó-rÚCJ ‘ê^tö‘z±M‘(®›‹ðÁ‰\ô4½YåAðìLSRz)¥a¬qejD™ Rö½—"a ?åÆÉ¬o+k⮂„t-ˆË»‘¨ ckº«´>‡føjD1üá*g„JFxI˜Ø cë jŸ ”ŽÚ&ÝOë»U¾Î}¹“”m[UZû28n¦K,Ú[¥a¬qG’ã>3mqhÞÑðâê}YdùSƒÕ-º£¯òÍ»ê}!†QÜÍ3ÍëÇÍΣ«ÃW¤µ=ä¡Û?ÑKë×iå»hˆ”í†Èp&»ÝJA×éäóãT ckºˆA‡˜u˜ ÛOÑCìMñ×:½ ×·C‰SL‡S1Œ5.œl?‰³1R¡AªÛ+ÑCê:¿Èwá·nnŸ¼”—}ò€þgm5ÓHéQMê¶=ôzë…œ0[ÑjiºzøL£HaØe³QÔ†±Æuu+€Ýø^»ßŠÍÒo­å’0mÛñrK»½ƒÃÿ¥œ|:œŠa¬q=þéh"êå"ùeæ>Ÿ–ƒ]tendstream endobj 145 0 obj 1103 endobj 149 0 obj <> stream xœ­ZÛ’ÛÆ}ßç|_RåT‰ÐÜ/•²ËòÆ9’c­6Ñ:±,cI, $(€w“(ÎÅvœËG§3Ó’ VªŠöAÚ0˜î>}útC/G$£#â~Âß“ÅÉË“—#Ú­Å¿&‹ÑGç'wïèèüê$Þ:vÿ°4c#¥H¦Fç‹“÷>ýÅùó*9\>Ÿž¼÷Ùç÷?ùõ/|ñðË߸ ʘpá‘ûul„I¥º•3·bõhÌ»_?xüáéùéû¿ûíÅ“ì+ùáÏÿ‡÷¿þúƒî)ËFZúmž>ûæÛ§n‘ vÎ'—ÅtvUÎ_<ÿ¶Z.êéÏVÍËuûj³ºïžÁã6³Š)áŒñ¦€d$ŒÉ ÕOºÓd‚X©ÃÆ…_b„[–æyg.ÉÕ,¬½rK"³2;ðd¹XUÅ¢Xv7ÓLS.¬‹î˜ÔdÒšøê|éÝš1KiX{øÀ­1ˆ¸kwŸÉ‘Bã†ÍU>éŽÀyfà¤ñBÝmÊ3…/¿¨ÊË;ݶ*”‰x缈gÒD໦›vÝÜ ˆÆ´ë|9Í›ÎÁ2«I¼rÚmC3k¸|ë#kËã;¯ê¦ÛAe°gôîE·Ä2&DôM¾î€"ˆÌ,££±{%çfÇKâUç ¥EÜwÛ!6³}´ëð~&lÄxU¼ ' ñœEÕy‘ŠŒqŽ1œ†€Öoç夻ÓB0 sE(«lÒ´4ñ-ÛrZTÿ¹s)"pÓz 1ž A¢9yN ñ {ÝñÅeÞú·1™Q%ížïÁ¥_µÈdÐÂzÎàÏÔ,8ˆ°èºzQ®Û¬;>Jà‹Ž¥žè(_5up1e,ºóx¤;9Ëìȫ*Ü*µØ30B ÄÆcDÁ‰½Y!5ŒÐñçh?á ›åd]Ö8°¡ÑäYSoVíÏM5ÍkëÂñ„ë¹G,£·CЭ£Â-ù(Ô:î;Áðƒlté–$œ•iÞ÷¯Î$PŽÚˤbt'ÎUZDƒŽS™ß•0\¹ÚT°n×…èż‹“P™d<žvR»í¯»Xqma·½Xå«UUNr÷¼GÔ"#pïãhb61t^ù°@v +ø[aŒ™*d¿§QB# ‘,ˆ¶õUp I¬6+êE±n<ˆŒ¶tÏ3„Ëg‰—:‘òX¦*—³ ¡ðØ«õ¸Cí±ä(Á(D]¨2l .¢Aëšb4?« ñ1WB¯÷bƒr®ä®«˜Õ†ï¹JfR½ï*ÎðÙ]08aþ`œšC«ë ܹˆ>Š£˜qU=$u äÀ )ºõ*²¯A)šOÂu¦añî%²‡D÷Wù²•UR—yûÂs-Ð}BIÏo ëѪ¼.º³1á² .½¡4Ѽ)|.@XÀPc€+èŠe>@h;näÙÆBiM©²¬Î6,Q‹¤Ô«Dð:Š¥dZúm² \Á êÒÓ=wb%TH`Ûr=|Á ­:€*ÍyÜr†‡)’¬—§ÓP\@±%p_M±ô”êò‹SŠ ‘=š˜5ù"bJ²C'gØÛ²a”`ÌC!-äAhѦ¼¬ò˪Á5 ŽÝ͹c„·Kï·Q(¸Zoš ¤DI8¤r›6TBfà̇yLMªXAx€¼’X{°TFÙ#±PwÂÁÆç/uVéCI‚¥Å+hêBo°:—³e¾Þ4EJ‘•\Äž*ƒß±Î„oVÁ`"8²E!g(w6}˜ŒJ…²yQ7^¬pËáÂ^Àª§²—6Ô`É4Fù¦*báàÓ/ªªQ±&u­€> vAnß N*&ù¦ ͨ:ˆ¥°JÄ’)”m³¦îʼ'2·7žt9”=‹ ®Q‚"q¹f}È¥CÓ!ï*‡/…cº¤ž 7Œ'ºœeêø“JDb™Yìꦜ•Að®íìqùñ¶xàëU£HÚ·hJ§¶¦±Rl¥/?XAzÅs¨ÊU¤ÝZÐéP…A–E¥±ã¤7pˆjÈC3{¤}QVAAƒ9ÉJ¸9xê®ßeF«Ýx vÀiz@C“”˜†¤„Á\)ªÐ$jଖa˜Ë³dgO‹*\6¨§ob©GiyUlãKЙþI ykÐd(µž\ÏìÁžÌt³î§Ï¾¹¹öIýþÇ?µ¯ÿü—çßUûëßÛeu÷7߷˾ûáÇnퟛïZVÏþõzúïêõâ?ÏüéuUü·{ßññ:sš8íMãuÈÁQ€¾[èŒN½ì‹»VëCÆÀbƌڗXp#G îõ&Óx™G ‰”¤Á2D¥¸|éÝ „eâ¨LÛ’§‰@œÞß"­VuÛ£2ºw`R·m[ÉŽ‘ÏÃä Ú€.ŠæGÝF¹>fn@c£ drO+ᆸ¨˜ýd[‚™Ø\ÜsKŸA¡*áåÐ l#@‹„^o$2ÖMk›âäêØWñ=»bŃöÂ,Ü~ÐÄùJûåÙý‡÷ÎB§‘TèWCtƒ’ô1ò-\Ø3†iþ†@ŸO¹Þ1äñùÙý/>õ©lýå>È/ƒf¥ XTƒ™©áˆÇL]7Ó¢yRN=áRÂ]sб 0ÄÿoJÑv÷ó?Û âvendstream endobj 150 0 obj 2813 endobj 222 0 obj <> stream xœ­\IäÆr¾Ÿ}ìÛ{¦©Ü—£ÞXÀ[lyÍÁ 8Uœnjji‘U3šƒðl>Ø€×_ìHfFD’Å®î– Äa‘™‘_|ñEp¾¿¼éŸòßÍþÕ÷¯¾¿‘Ó5üÏfó«7¯¾ü&ª›ØD§œ¹yóþUþ¼‰âÆ[¸noÞì_ýRª¿|óÜâìÞ¨šÜÿfûê—oÓ-R5ÆÙX.}Ó½ï†î°éÒYÝ'\ù#ÙÈüHïo\½6=RÃ’mzd#c0ÚO÷nÊËu}ç­jdPÎßÜÎîý»¡Üìê›}µSº¼û«i9MÐ:ârާ釩D(WÛÍ©\ôðø|í¯Z¼Q ‡·ŸÊUx§°øžiÛ®ñ^H¼ñw§ítŸ[ •dŒò5üËä•ÏÏãVûÿgnnUL϶ÓO~ÓžÚii ¤è韦‡ËF-qc¹æ}ÀݶCWV[-íà‰¸Ö|-6A):‚nÌ7ã×ÐmúvWL4VèÈûxÞ×ÓZ]nÄѱÏOC VOÃ/N®FMhuºG‡ŠÖPd÷– lz²‚WZUû“OÑÈùÎïnË!»&!ÏtÈ€2/rÀ±ø‚ãõßcy—ÙÀÚ :Ï¼ÎØ8íjl¦‡FDò†¯ï&€ÅÁ./\Fžoœöxãñq‚ጡÊèźFY¥æô—ô¶¬(ÈÉiÇãyÈ9EÇÆG ²—ZØ“~ºï7Ň”ø¦ûâÂFä99REru|^‰XGœ…%¦ð”KÇâûA“uö]{W,n~«]r½94œºNçvús­¤%3<€%:ôyoèO 5ôÇÃtê· ‘z›ü_Ëœ<ÞCC> —÷þ|ؤŸM¶1àiÑé•=«‹=Ó )ï ÞµXyÅà; ü‘¢t›sŒk„§xÜKæ1ᤊ mwÓ­€¥’o|‹Ù 26ŸßÔFÛ¿Ýõï ÀK3”üaB4´šò ËÏØö_÷võä‡}IW:¡7§«GsÛª·F.êåñ#¸B.SÊÒ‰Œ„TáZv(ÆvMˆ7²ÉG'UŒžw¸Ë30®dnÙMv Ì-€Q¾ŠØ xjÖ ÉÁ‘ó¦Ä3–7ZöµC÷é5&¯ô3m¯œÆ­lŽ}pÈÖÒV „ÞA€_[ô•sjJ»H$„‘N"懫i´P7Éú”¹b‚ÚÁQžVñÐŽRÁÅhñ±ý‘R+E÷'J®ßµ"ÎùÅn×moó4,\“Q€A7p:y‘\G*Zdº/§…Àuþñ›[^¯ô]*‰Ú ¢ûvüý²©×þgó©\òÚ-sŒ'ï}ŽwC»ßwCAQÙXæqyh,^ YP“³òvÃô§6y¾ }"‡©ýP‚Qqâ[¡`3&w}ιpÂi‘Ú¡Ra‘P.¼¦)n $Wô·ý¾ßµ^%$¾ïuÁƒ@ÆÏQW˜–²dÕ«^jיּX­uúÄÿ$Ãe•‹ñÒj..Æ àìÌ$ÚÈ…€ïÊÊÆxÎÀ•f«€us Ç È. Eª SWâÖ-M`²–\áýÂkf¡¿ª€ýî8”S£#*¬_öÍWûŒÄÎß–+D¨Ú‡‡]¿i)[HÍŠÒ8?¦òŽ6x"1ë¨H®ßT>ÇH;>ìÚYJŠøøZ±TJ%««Ï$Œ›TS’€óÄCß\báçØ– IuXº9ä"Ú„RQA9úÐåz>ž$.œ¼#)qŽßU “+>aŽº`ƒâùPn ’ðª?ô –û±T!&¤úqaA¦HEÈ ŸYQf¦TP ð”jó?gÉ3Ú}wÊXj<”¼BÓºóíBpytÂÚ^2ÿje2|.«òšÀ«¢`.PjJç\œH÷Ãq?Ý›Hœp ÃLe5¼lÚ…OQÒ¯eÁÖs¼ëÚ"àZ* < ™÷kؕײt $!¨è˜»,G/­¥™¬SFSÑ„ç—W\i‹MIÜ?îbAKuác ZüÉ>AH*lPOìWžT\r¾—.}¾ 8:à¶€d³³ËØPRÕl%Å=3Ì)ˆBk²n`í }É4VғߥpÂåPÔ Áñž7%Å%çã2xè¶çMÎ’ Q Ù€ Xk9dœRÚ¼tÞ#­Õæ‹ÐkÌ"§°£ÒeÍ4 …´ƒ›ðS »޾ÂLøéìèW©êÏ)eÞcÉwW½sœÜó‹BJÓ1„•rÕýw‡6±Ø¦à˜eIó«Ã~3”7KKV]‰î¶0€ÈÙ =j‹ …$npw,h© ñ€ãž3$œÉg³€"UÖü”kIð– žZÿxló«fZ•ëE|Â=ÏkLý«[“îsf®„µ»¡k·9—ÛFpùž ?»Ä—ßHpˆJÚ 'E™ãÝá7Ô|ηÏUsçÀî”%X2TB_ºT¦ÒÀ‡báä’ÕÄÄŠìó̰PE.òËUËU”7‰¸“þX¸2” ày…*›y*VN1,¼»ïÏúMê»È™€? ®¬N‰{,ŽX¸x>)‡ÈÂD%.¦þí²˜L š` >õD_l$–ú2orˆè)‹IÎbü B§I()_JœïÎýîTrže¡´? Xë ÂU`À„ìûÔB!.XSÑ‹ Ÿ"S/”$ïɽÖÍ}¥SEúÈ€š¬dmíc¿í¶Yƒ‚´$¨Ì­ˆ¹s—²”[ºvÔgËÐ4¢%}E X}e°©´À«5¡¶¤F,cè¬ÿIÖËh¾¤jðô‚®Òö÷¤(N±ÿåW72a26£S¿ö&Ü(SÕÔ_þûü‡ÿüŒzxÿõÿöãößw?îÿç¿ÿwüq÷‡éþõOßýi÷Ïÿ´†÷U×Ú$Œ„ÌœûmFs™Ìfxü˜S*HH,C´»Ôz‚Úûc±¯0~‰þ")ƒW i­o“ tÍU2ív‡Œ@‡;㦄žã~Ê}·ÏìçØB“ ;¡¯¬Ð7e ’ÇaO½©ÄŠ_)f´EwCJ˜Š’¡? }‡#–¤D•R@mJ9ï×yï€ÞñÒå$áEÊÍ"QQB ÈŒX›XMLëíºN¿ýX,¥8=>jj—dè% ©¯RUÖX… VµP‹OI8,Êâ$Dr¬]2«ãð¡ì3Hb`Çó©<¸=Á\Ý ÂÝ(N×EP~êÛcÁã\2òî’¹Hü…N$÷>¢ÚŠ}5˜&¹1[—T‚˜Zn8À~Ї™Ú’Ñîºx5OrFÏò¬ùê»]¡™r±Ø¼,Ø*ü?lŠ9(!{TäùÒX6ƒæ¼ qâ:Sf2Àš­ZÒ©ŸW)cq³ÈÓkăȑ±Äy¶ýŸoÎ;Ô1„ ‹J VµXdô”â*ýËjÇ{)`UëHÝð¾Ý0¶y.Ì«¦ƒd•«8Š4¬‡w Y‚òJ{ªšX@”)¯ÆPr{‘Ó€4éÉ«óÎÓ^Çx{Ý঩T°Ç9F-™¶»2{áéöëÌlyŒn1¡¯ª&åtéùúÂó)d›öU{Q‰ß#¶À(xn‡­÷©Ðœª,]놕‰ÈöVáy²KvÆ4¶¦<ÃpõYÕá?œ”˃¤ ¦F²Öš\à¥jtõ™»Ôtøãm·AàIÊ-2T£ÓÕ}1¨´ÄλS»Ùe1 h¦æ¡ðÅ}=§òçó€²xÅŠÙx¦ T‘–‰&’‹’T}²=žñKØ¥ðÄ…'˜ ÄçSSÁÆKîê®}6RL Þ\Ï.xàãa„æMÒ'­èú®á8ÛÛÔ·Ú1iÆDö¹AÞï 6-q‹r¬[%€š¨y]B í%eAšÚNL†ØÓ¶;µý.WÞ"u¡¯EXqÃ_“¼lR¡þ%æi«hdf6…Å_祀oK9î>™¹£N™†p¯1^•:Þ+Mö HüÉNŽ(ûò8'ÅAÏ26bðsIˆ»]›­%’l«È• 齨¨Ê› rW·S4‘§P5¥”dªÜnq:Ú Vb®ä;È jmµOâ¤KŸž‘ýh€Z8bŠi\#Û(’q¾8lQ»V—’B’ÝS:Úë8ÀM.‡†­õOIÄyKѨGª#x6”{Ñ/…ž—½ŒŽnbF¯ 5JíïE#˜i>‡<Û€3ÿÞ©KÑÉñWe/Ìx>x2ÅêÛ‰ËÁQF&Dí=ö³º´o.oÀ"ÉŠU+Cq<ÖŸ8¤iܰ^ âX8€ïñ71lb•,O7‚wc63t»§ÓÒ\8‰te{ ^.f&‡þ®/d8}U$…­×ƒèÒÒ:ÕmÚ¢ýìò;~&ǃ(Ç~å%ªžP¼ ³(|x¿>ÝüùxŠÅ³ç ùø(”Üh¹;·C‹¢—D5N]WÈ“çïîªtõàb¸=‘4j+Ö ~ªø)­xy¢ ÅÝs‰Å2GŒôÑÕPi±L¬Ô¢¤ƒä(‰’*ý±Ýcò‡²‹Šð~Ož\Œ>Bdö@ô¹œ—åLáö8½ ï/Fú¾IóbO¿(iÅñ…î×½¼•7áÐdpà‚Ï’* ñç!KS š´ä/&¹lÒbQ„‚á.¦ÍR &Uég[Z ~>=E!¾eȯªyáPu¶iãŠG_Á‰u)ÍQŠ_­YþFì‹C?Þ—Ùšô5’Pת±÷üõ_â²Sù£½TMÀL{~ÆòiØ<5žÕÕwÝð±\­Æ›ºÜòN·r·ãkìCzþ\­ãø¢&¾€ºÜ¯{†rÛãWO>}îs¡ÿA,’±~Øté ùtà~°íã©tFt2EuF´%R–Ó6ržêE@«JO&ÉŒK¤Yâ“ÎWüŠX¿"ðAÈ’óŸ‡òÍvúâ$ò føVÓÌ%/¨µÏÓ .F"wÝ{šÐ`UñÊT.{Rc|eÀ¤úP†S˜WœÂðd ñ‘x(ªJN˺*IH̪Cé–$Gb5µÀzªù/ÆAfk8uþÇ/náP-ÕÆ=ðêKI^’¿T¸L§OWÏ>*¢ÙWÃ$í…½Ù4Q@Ó9Ü?U2Ήⱘ€z^càøoUÀïéòl}qyçŠó? ݶߜÚ"5X¨æx®ñ8lK§:%M—lØž’öÊ Wƒò³™þn”Ÿr2Îð§øu‚{ü¿F|â)­—½yn–¦=ŽDí®ð³ãð¡) 2Žr^Õ ”©Š}’—©ØP‹ËÁŽÅ¢.R±±Ë[ƒà>ð®À°º ‰/{qêñq¢y²u.«Ï^Œ'ì‡$Óò'Ì—‡·Ö†èw-ÿ}-–ÿÖ›ªñ¨iViÛ½;ßÝ!®ûúþÕñø n¹ª‡63†üöÍÍß¼Jÿü6|_Zendstream endobj 223 0 obj 5235 endobj 232 0 obj <> stream xœ­ZKÜÆ>¹(9&÷¹Év©~?ŽŽÇÀ±eDÇ—ÃÕŽ=3‘3+)†‘ Ãö%Èûù[SÍîª&9œ‘´‡ì®®ÇW_Uõ“+ø‚…éoµ¹óäΓïŸáŸj³øéÃ;÷Þ·va o¥Ó‹‡×wâ|áE!8_Xk(¿x¸¹óFõ“‡ŸÀûNß¿ìßcjq /z§¤]<\Þyã£6½l†/ÛÂK#$lÞy3¼¢ '¥7éÑU·ï?ä²`‚¹ô´¬öé¡…åã³wJ|Q2ƒ/.Ÿ¦§°'Ó¸O™ÂZÆUzôî~Ù¿§ f|zƽçðŸJ’û…/¼FÉ•/”“<½ú¨ÿXÊhüúýúºnëmÕo¦A|ÃðP¼àqI/†Kro MBrÞ¹TLƒ¾ÅâRøpÝÿöàºß…oQ„2<ò…äN OWÛe ]8 >î?æmuSvý#*¡ËmÿL9, ÞìÒ¾Ö)\­nËýªé_–ª°ZéôÃþ¦ì­$D¡ ø´ü4™Éq²]Ý%ý§íéó¬›íã™W›^ÇBÂ!tߤm¸Ñø¬j6»u½¯/ÂOÊLKÂÖ[\Ä ŽP'Åp¥q¿]Û) @ÏÛíÁÙËvÙ[ñRÃ~»¼ÁÃ2¾ÃÙ¹Q#×µ…³ÂÈ—ó8æ ¯ÛŠP´¯ ¾¼n¢ºÀ$nÕìºÞ%(LèAÜmÓ¹…¢è(×kL»N¢ x·M‚igÄ äí’³@0z5­ ñ, ®{ÝÖõoë^q’ƒNé¬R¢ jÒz± Ûá"ç×@왜Dv`$ÔX ¢kBkô/F>×ÝÔñ  {QtI€;/™:íÌ·é‘•”pËÕº¼Z×I :³¢³\“›CÌFKp` `)Ov…v^½¯ÊB{Aãù.Å&„+%üÈ]8`Å€¼k‡ŽùñýY~tÍÐn×Í:ú^BÙ‘óN@k™üxÓ|u»›5ë"l¡ ˆßïû0zc8§²¸Õã²½ÊI– ‡V©Àêj£b…sdפE`2õò"Òdy^8yº8BØ$0–8´„:q‚ÅN™µUd¯¹°\êœéIæòÓ[LŽÑ$ÚÆ@ µXD,{@ÖeÃog”VŠhÄZðšèìbÔ8@)ª…Z`#›&N‘Ÿ%µšžA9Š—7ïç”Á§ P­Úê° °Š0âA1ý1Å|˜¾ 6Ó_DL#íR®Ûº\>O¡g3”.›-F¯Ôж¿ÁféXPbÖå¦+’ëIé(Ú1ÛÌŒóÚ8Ê—‡¤«q*Xs_'¶ã…S½Þ]m£I*!M»0#Ï|ßöƒ Ù) y5È@ñ\#[f–ê݃ˆQÆ­ÖM„Ap(Õ7ÆYlŸÊy;Õ1TR,“?\çg¿ÈXÿCh±ÏB€õ5lë;×'›óØÃ• Öƒ¿¼  m¨>k°GÀ¥3ó¢y ¡ß™Xè‹°#±ÀX Á“eÕŸŒàrN½Çù±9¬—é[¦(Åß”©X䃞6X¼YM¨—Ke–Cz¤Ì1‰òávõ —ô´ä×H²¼&<[Ö]Õ®vèP$;?ð¿ô0åi éB£dP×íÄÉÁ®9ïiÝ9Oˆe…²£Ã” o ö·WIx€OaŸ…ï• `Õ;™èSµPA¡¼ZP÷fW4vÄÚÁÉ™j×ÖÕª9t) ZNÇ…Š¤ÂôõB!¬Î¡¬qÙJQ}Ÿ†X~|Œf»~ž<ŠH:Ò´P•RR>GÓ¸Ÿ¸V¬£¤›ê¦LÎ-r­}{,|/&¤tÆ Ÿ(• * »M*DÀ7A$üx{L›$¦– E¿šË‹¨qëŽJ]aÈ™Áû1Ï9CÄm¶Q¶=ÖOä‚€Q̹ Âô‚Ü–1ÊC)Á…Þ”¥ ½°‹¤83FLG÷¨4 LgŽm½"R1dg24OLŽ•@¥¢3vY;HJi ßþHƒ¨  ß% rIåSL:*¨ÁìÔ¸a¾Æh–2çVl" jÆÞ»'6?TK‚¡ì:¬I8§vFµ‚T¾L¼G6°}Š!Æ©®Éà‘ŽÇøÏŽz ÐêL01F©¶fŠ@:q·É»$£€®Û‹hK®ù²UÞ€¸Ê±õÀ«%ÏÝКqKo#š%be } 8è ‘™~µ>,kô%E ê_QyäBÇŸralS€þ­hןßOÍ µ1¹û{«g›2µ5„ ¨¤·cì#ɧ›™ÜcG¨Ÿ$Œ‘,ûáýàþ¡í ÄÃsðHîNº.1@>—n<?)K.èà·‚–˜he }HÙ¯¨uB7q£W홋ãÜ>йòl·^U«}Ì!*ðn |d]®b•¡ƒòå¹=Éqú…DðòAr™Øh 5“äº)µþ ·ˆ¾§ e©÷ªqa¼<Ê 2·žš+üÖXÜù@Jä~ƒT|•rÔŒÁçs@u«ÍjçY2ŒJü`0pµ®7Hrÿ£I 1Šd¨ªCrJJZJXêxËèü32L( ÃqyÚŽ‚|"÷?-Étä'Ì[5ö“Tí^JJ[5FÿAE“Ç„¯JRDátPÝ£hÈð¸¡÷¨Ã@ MxíÆ¦gaô‚ŒڄÇ@‰Jã´aG5÷¾#釢SÅx³a6JÍåùœÏO…Òú»IÂ*ñ©î{³(ð =Y`&®¸ËMßÜlµ™—ü(0…å¸ÇæP(±èàcúa´šmW„4£Æ¡ßíë]—öñ^ŸëÀͲ„ò°o6å~U'õg3bÈÌ«u]FtQ£(J»C7·ýòá”e4PÁžmP„²òŒmÖèαÑècÜ ì›MÙ®¹ÑÐcfª7h×?%ƾád˜})CïZ÷Cfî']ÈÅGè´àUaxdšP‘º³Œëå;ŸØX˜ ÑT7yôÔŒ1=BÖµšÑX(ŸHÜhŸKÀÝ"Œ™.Ãü1ðÍH$æNjí0g††:Ón=t|ðùåEhÿði/åG~q ÷x@®¸Á%˜.„éøl‘:/u¾ñyò’²ç*æ%Î —gÈ‹^Âz¶1:ÇÛá…ðbÒáÛ;ÂÞýÜI5TlÔ/¾»ø‚Yz´¥IúóÄX87IÿàŸß_þh×~ûÑŸ|ùí¿6Íòëõç›ÿüû¿›o¾ºÝ5Ë9´ŒÐ9ÊÇÑýš`)‰“£ï ŒEA½£Y¥u+¨•¶É¸*÷{Ÿ³a.JsÅþX³è|e0ߦb¤s‚¨˜3Ìüˆ|7¤*Ûöy"üÎæ‹\tÈ Â‰ä±.ÐüþÄè½KK2›¯&UmÓaѦ™H*7åy¡¸—ÔØÖÏèkî’Ï •&LI«î(¿õý*Å&þ¾ÅÁÛ TÅãqáiÄ&y±«ßß÷¡afý¬ªÓµpÓ<Î× En:Îôrªæ°K÷ˆÂ-ˆI——Rä&zÙ¥>î%Wà}f.¬KHc&gQ€™ŠT÷*c Ðp ~C:‘TÞy .C_I}ÇK÷}éþGhV“ÁÏ$Wø]È š*g¢5å—Ù ZÌù’l.¤mO˜|»j›í&þ./:`l5ö54;žXÃÚPá’º/g>ê¦ì÷õ&y¡+w.)Ê´e¹ÇT"JhCØž˜{?$ô“;ÓOÛÕžšµjp1ߢ2¯ó‹p‹n’!'÷SfjØAÀ®v¦à¾H™FçYÏ g,©äE ÁD3×IÚ7Ïf~@­¢|ó=¦µþRCø÷?¥‰é"endstream endobj 233 0 obj 3918 endobj 248 0 obj <> stream xœ¥W[oÛV ~ϯðcÄê¹_6`ÀÖu[è ÛÃ^û8Q'K©$7í¿Ï…”å8Áº!@Rù‘üΧ+Vñ‹åw{¸úxõqÅ“ ¶‡Õ›«—ï½XùÊaÔj³¿Ê/ð•g+«Á®W›ÃÕ ®¾Ù|_ç¾^TÎ ðßì®^ü]¸¨”Ѿ˜Þ‡}B· ñ‘–3Ì”G¼â9¤µ+Sy+Ž!%¤¬cÈŠ{§¤M¾Ûr¸<õ\‹Š;aìj½ðýk(ÎæÔÙV^!ËÙ?¤t*'¥ÇtnÆ)½È!IÁ\±ÖÛ©-„϶_kt”Ì q÷P¬p&ÓxN*ÛTÖ2ŽŽo§]òÓ€¢Ä½ç×ðOÁxÙµ´þ§Vkácl^yÓaÒ+Äÿ:ÙT¥¬æÅv¨³£«4ÇR¿D‹¯”3øMª2V*|³naŒf@Y†žãq[NÖNéb¼Ë­¢€õX¼¸b84Ý®O]„y Rsz½K( V KÆwÍçC}Ÿ¼_6$ ¹­´ 6•’¼6»Ù·õÔ´!Á$¡¥Z`±Ó]H¨ˆØT†em x¾âÒ"z}×fWQY#Ðõ¦LvÑ|WiiæcØ•cŒôèØteq4§xP4®c¹ù~Ï#>†qlú®”!¹ôV=•Üø<›Û!ÔS>XÊ–æ9TÉ Á9uóÍ>åÃ*å¨w_. y,ã&Ý<4Ó÷) ¥{Š9õ¥Fã$ÚvC]"pA…?$¯˜rü®pÔ댭“-4\Îõüép—Aú—ÞÕÁ-zÒJï…ŸM7C¼½+hs5w:š,,Ó˜K½ú1ÍùZ:€‘ÉÜ ‘ô|?ô‡2FPqÕL 3ÕCÛ„ÄL‘= õãt„äIgÃLtˆŽØþw™È”çïÛ//{› lOëÜ´m¡Éènêf %®ã\>—óçm¸Ÿ ¹4šÊ¹k\ MÎVŠÎë ~Ž6ôPÿ]6à§±@'FÍÛÒt·cÁF1Ck߆ºË Áz MëûO÷l†ë$,zÝýã±þÔìòBÃÔ¥— -ÛÆ…ÂÐû¾m{,DQ!0è·¥ù@óØý±ÛFÌ2;Æ– ïcàkýôÈr,p8åˆðnp‡ŒÅ÷?„í4VùºZ¬â e¤K÷W6,l¢È§Õ8Ž˜? õC}ӆן›q¿M8 ̟;”Ф ;hý=ÌhBoú¾-°ha–ïæÜJÈ/1¿˜Ô/¯ÎÒÑBÑ#LÄÐóõ‰(ØX³dó‹‰üÜwÓY*’,>Äd]ÿÿ)î *O§òê8Œýp–Œ~ñÓ‘ZüŸ&¼,ظ§ÚspæË‚ Ñ´Ñ_™Ë# Æ…¹ŒÌ@éLjPRÒI#ÞsBRJ…ÉÖ’WÚ€ž^ ÎBns 1‡qId^$QÀ1ȇý±-ÎJ(lÁ>ãëÓDC§z˜ [(¸ÅQT}ß6Û:FÊMG€‰•³Ó|_ÔxR'1R¸ 춯w™Yá\o%Š\$”Fã4^#L#–z€Aµ Ÿ™yÎÇþJãœôt½6S‡×i ,íâhóØEqÖ//ùR…ëàâü”تë)•–qŠLŠÇÎ øÂÒxY1I\Üt×ÐÙ\ÌŸ®k€tV”·aÊèi;GÒ½FE*ùsÚeG÷ÅcùvRÌýÉ;Œ°•e…š“?Q9”ÎÔY‹Ã4Çy¶¤´šJC²—d2d–.e&.|žJ Q¿Ï–†¾‹²ó‘oÜ ¢œUeóËsc× r¾QWÑŽž|K¬t¦?0Až|Lœ(Tø”ÃðMî)l¹µly¶eOà³bÞ«S©*žiw /évÉÍÃì7W¢ÙY ÷}Wð›XNêòë­ÈÇZ—»9„¼ˆ)–ßL'>”…SB>úã°³³4ÂÑñ&Áƒ»va—hîõfõûUüû¨Xùendstream endobj 249 0 obj 1523 endobj 255 0 obj <> stream xœÅX[oU~·øû‚TPöôÜ/iÑpm¶Km¡ ¶Î:ÞÖY'^; UU¡¢RúŒ/ÜÊõW2çºÞØ Aª>¤>;;—of¾™³{F$Ãö_ø;Øéíõö2âÎâŸÁN¶Ùx‘¬?ìEÑÜþÇD3)1’Y§wæíWúw{D0xÜßêyçò¥·Þ=÷Þ•÷¯]µ¤&áÁ÷ög®™Ê„”îä÷&§YÎÜï77nÞúñµ—?úøÂíÛö¡"¼ý““54üÜÜþ¹Þ¼Ü}s{Ý:·éTjH¦„8|øégŸØc–<ûvðøþ£/ßVî~ýôà—‡ß­ßýí×ß·žluÇÅÚű±6‘^u’ýÁÖå¶£~—[|et|¡™x¯Œ•Å<Á:S™ßmï²Ô»8p2Öè…å#uc ÊqUôB ¡t ­tf3&æ]8‹eSa¡öjxg•Uƒ¨Ll6ŸÖ`€&±' éIÜ9ª†3ÏãpÏ"„ËE;‚¡)šØïÔòBË.~êSHZ¬¦¶³µ$§!1K¼2¹y0*=‡PØL7ò®GU—†£X=‰dJvêe?4ooGåêÙÍA«nÝÔ„­Rc$ÿ›ÔH‘îÕ'§&g†DÒÙSD¬U'E°(2‘_ dNÒO)"\,¥èù®Å ÃÞ²” û!GÌKž†«ÏDoXšä10B =e>rŠ¡J4évÈ¥8¤…L€¯È{Ç4IíÝÈÒé6²µ¸ˆªät¸ CQS¹¼Ðu_l*ÚÛÓ²˜•Nãv6¶¨òe6kñ´Ë(‚Ùš:º8(DÛun·hšT4M±”feäÒc×Ç4»[<\H^èÝ:l£PðJv—žòpPº‹„{‘#.Ó…äzQo;Kö# ON¥Å4-lÓH}+tÞ‘Ï.pá‚ú±[0“Ђ»7ì'"—ÍöÑæ¸ø9Ã1Q÷®ÙÜõ>ÝU³òZ\×—§¸!÷¡†ÁBãQ¿÷<5†ú†^y´¡xÇ"!QÛVó:lÔ‹Wôo¯¶r‰>Åíµ…äß›]5 1°Hî/˜þ2J\‘¿ÙÏ>èÙÛñendstream endobj 256 0 obj 1763 endobj 277 0 obj <> stream xœÅX[o#× ~wú#æqSX§ç~Ù¢â^6ú:²~Kc[­n;#íÆ(òßÃs!gFi·M€`5Ló<É<ó¡âLT<þ+?››7*‘døc±©îæ7¸² ,Xiu5ºÉDxå ÈM5ßܼöëù¿Aׇ‘nÌ{ úóåÍ›÷QEH¦­ Etß<5m³]4ñOF1n¹-Ld“ÎU–§¼‰&„l¢I&‚×Ê%ÝEq®†š3É„—ÖU³‘îC[”íPÙ± ¬TÅ÷7)æ• ÎcwH)¹/Òzq(Bæ³ìÛ·(\~*RðÉ úI×¶Ì9.PñŸ‡eÒ3€¢$B·ðŸžÂx¦œ‡ßt5“!Ú6éÈ÷¯ÛdÆ3íÚ>Ô?¾Í&¤‘Uõ±^žSV×õâ?Q,=€êtÿ)ŠÓJb²ï¢âw«›õÛ‡¯Ó=ãÞŠò÷?FÑLÇŒ°ÕLp´¸âøÓËêÐ|‰ã¢âçŸ(Œ"ˆ1Aߨúצ[´«ýaµÛÜÆ­ 5 ÂÆè6D:4i¦³VèÝÝméG%âù>ë94ü—Ýz×Nem& Ù<ä,ÛØ<ªÂïÚ+Äñu_&‡“ÔMwÊ\\'&óž«Ë„’nšl(Ršð=Å ò )E³?'š N\³Ú&úŸ¡IŸi Èü²×ûwwè3.þŸèU*¦&ã÷gšµËÝ4N.¸és kQJ!¨ht&‰GA>CÜmt*ŠGžñAM„©CQ®Ê8†§S ®©a0ÖëõkBöXÃÉ}—Ë=T|4ÄÂÔ–"Ú]uûu]@’ýòJù7öd¾ÔíòS©"BxÚŠ•BÖýW¬oëõ¦ÖõŸÆ>WŸš¹0à®r­Œ–ŽîëRvqÈëö+)ƒ¹|üZ])m5RÒY‡æ‚žØØl¿…}U*&({%FÎJ[ aÑÞü%knÐ (m›}Ût¹Ö#_è¾ÖküT1SVAºä8—Ï«¸;pâ¼·­`BqÜ®žví¦ÔŸÚïî¸Î%WMs?EØ©?Ë‘ñË‚¹>‘• ”øE»ËE‘¦^_®¾ŠŸ…KÜ6…¬5 %l„üé£Kðjh>AñÛ’§òn·i0 MaàW .%];&­:y¸Ì”³Ð“jŒxÚsr¥@bü²È$kf‹ôg%¤}ÏÛK±b=ñS|]u¥›­ mp‘k–0Û/a‡v‡ïYàv¼î§—ÕùGlî—ŒbpŽ:Ú@«pþ©Köo;šøp-â~âC³jËÝÔm±O¿ýfé¦Ù³N^×´å[¯lE92Ü'\äÔT›Wÿº‰ÿ~†jØŸendstream endobj 278 0 obj 1979 endobj 281 0 obj <> stream xœÕYIoÛF¾ ù¼Å)¬élo–-]i‘:>ôà -ÑŽZ‰r´$ο¤DItì ( $Àð ç-ßûæ{ÔÇ‚VP÷ÿŸ,FG æ×Ò“Eñúrôý…Ö…"V ÅåÍ(l`…å„3Vh…ﶸ\ŒÎ&/.ÿF{#ÚöcoGe1FCk¤ÐÅåttvµŠÆªm¬‰Š <ÀÙ¼r&@ŒVÅ¥ëõÆod‚PNM\-'›¸¨ñõaí·2 ª’áôs\Å3)¤s*·¤ˆÖ”ɸôv3õv@¨²qYËÎñ=·…%Vq%çÒi‹¦ùÍœHi÷EuS­ªzât_Ñ#,¼Òòö+™Õ²“L®YÁ±Ü§WRÀðbÌ­‹ ¼1'Œx7%#TBvëÕ|¾tËBÃXzõäÍr¾\{{E §ð¨ù›j>_û= Ùôn^ÖUØ5æ\¡o¦c‰,&êèî?ÊE5mÜ4†ex:òŸnM¤”×VUåÍ×}Å3Ãˆæ “¦‰RŠù-—>¢°Ž _îb!5‡tZµþ!V— ¾Taì®\ Ì9"ÖÕM?•s¿ßCsµ}ˆ!þEÆ!uòÛ¯/J®äDpš4þÉ¿KFyŽÜ›û|qb,˜=[Ñœ›mÇØ¬K=Åޣ씳Mö³ÇŒÙ¯òûwVßóøªö‚•é-ß¹%ì8*L7¼«!@0Ôø~É@yt1fõfÿ€ùlíW¹ Àµ|èö>Ãm=ÛÄ(rŽY9òcfæ|ß>ºŒ×Ëå<†%m×p¬-R©…}Éô蚢NÃU2íøÐŸï¼¬V‚2ºà!·òt‹´è-'—Jým’ËåÓ'w H‰áÐišÿGÙj'xÖh ¾wG¬<7®»1ÈÿÞüý—:¾Vjª»)ï\ xHdz§î„UUîWüÇ’k°æe„"’¥g“ˆ¯n 'h»í¹!^úš3% H1åWÞÇóiµž­ªiH™¦ã§Ümn¿Éɳïswöû¼Œ¢J…ãµ8üXRšîf÷Õ|½Ÿ“;ß¾qÝrɺ¹’€ ØöêlQ®ÿYŸ_—ëê?+ä«Ë ÇËëiúX¾:5®7³ž;µn„ºs—T¬#q›Ÿ„P…@% ÃBm‚ Òé*+º,‚ˆù3â 2o½Ýbáêðäù(oÀ×ómåÖ1oÏGRʬ”¶w9b# *lq ¼µêÝNÏáÄÍuª1"ÿ˜jr!jP_Â]@=ˆ{ÙË<…¿v9tÌ#e8òÕêv»¨ê(ÒËu.W+œ“Ù`0TØN/íÎÅ2Ï]ò>È\|A¦éj2{<ƹ‚ •r³ùPE±-€ANd&ò˜P»ŒÃ¨} ˆÙÊš›á&PÃ>¹Õ}¹¸›Wç¬TÈTÔLDŽ©!ÏiŸ?,×Uô ¨>'©”¿iõ¬žC `X®ÖÌ¥*öf¶ôYçǹ¶ŽÝN6ÛUÝR{âKè ʤ:/·>.å„”´ÏnÉÍ¡%”uìÎt:È_cQÆ2nW\WSÒ‹fQÚ8MSÝÁ/„„×øVîá€ñLi“(s8†3Ãgǯ[œÇÉsglÊ]_^7<òðµô|€4§M‚ε¿)Ј봴 KxXÖÿA†áØNM”›ˆ96¹<«§³I¹ §ãÐ-M.ó‡ sp‡daò Ó›Ác#Ü@¦h!Ê £¦N¹éù`\UæÖæk$fëÑ(8Ìúv¹]÷×N †Lµi²WÔ ã—Ó¸ªci˜d·]ÄŽ‘Íú‚_Å“Q’%³åMö&çÍKï$”›ÔŸB++ÝÐQ™˜-­ÊŸ=Ú°P&~ÀÉØÛx¤1N˜Gðت[CxÇ ‘fõN‘DõÕˆÁWôÓU#I¼N€Ù´ìµV¤{Mµê)HÓ§MASúDP7êÁNA’tè¥b=”Šöˆ9Tå¥OPl`Ø-Õù)Æ‘Žµ¶S£À!Èö\f» Nâ%ÊL¾Û´W4ÔºùwäJ;éôr½Ž5—4çç(w"±Ë“%—:ÇQ/뺺rA;õg»r¡ÜÌ>åžÏpªúbÛÀÎØR‘½-›q{ #V÷´¬àù+õ`Ä(Îv1\&ûH’dPb¬ÚG‰’T@ ?®÷@’/ëéŠû 1gø£ AnO‚ÄòFÁ J"D¬ L˜‘Dyu›P"©Íüp%Œb-åH‚z¤Jò”¼> stream xœµ[YÜÆ~Wü#~²ƒ]ºïCF,;qøŠ¼ˆ@ÀᮘÌάHŽe%ÈOõUEr83« ¶ÑË㫯ª{Þ]°Š_°ðOþïêþÙ»gï.x+ÿYÝ_¼¸~öÅ+/.|å0êâúöYšÀ/<»°ÆõÅõý³Ï¸ûüúð­ó“o½¨œðýõúÙg¯Ã'\TÊhŸ‡^5·M×lWMø“–3Ìä?ñЧ%­½0•·Òé°¤‘uX²âÞ)iã·«¼¹y%*W“oßtùc3þØV^!óÞ_Eq*'¥/âÜôCœÈAHÁ\­WC´°|ûs]>”Ì”Áõû< {2]ö‰Ç6•µŒ—¿Öñ; º(ZâÞóKø—ZÒñ•Ôªb Ž)|X[Ç)]SoÒ×SëY[)!ªØwÛ>|(må¸-ÞFѸ­¸PE´Õf×7}<°ä•á¸J± 잇¾}§;P<+Ó Cª2V*^Ô·Ù7qw¡@ÿZåá‡n§+Ø]”%m×MT0•#ÝÜ$S ©]™þ! ¹J;-øáy´,ƒoëný¾¬(UY±îšjYÑ0]yqÆñ| |}_÷ÿìiš;ÿ$MoÚ¤fð#]‘wwÇx%…)ZyØÔÛ&ŸAs_†GRÍÁVétˆÃ¨Ãºo~jk6G¸û?$ÈÏQktÙía$ÕÁAI¬*Ö°Ùí×ßÃÑÚÃ<í]ò¼è>ÊŒt¼,™ò` 9•ì®kší)Ù˜6O’-.\<@yuV:í*çmqž´xRq\=I¸°n”WZb"8.›Ù °®À <“É;¿êîö÷éˆÊT’Ë"Êâ\(n‹]'(2ÊáWrÚ±Bšçiû0â`ð͸¿b•aœÃþ æ’åÖõPâ9”¨„ÅP¯¿ÞmvÖ%È+Öþ†<˜TºÅOGÏ¡H'1óýûpúz÷ªY?ÏÀ—eúÍn·¹ ÃW0Î¥qÍ*ÉÓ¾ ÞñüPôÉÄ8'B"Ê_€åhž·Ëó¢6ìFR ^ôÑnœ‡'{ÝEm2+ OfÝŒäŸðK“ÂðD¼'Ë[å|åšá?‹.*$@™Ù6dòœ¾iúU×> ínû|)„BzãÆL@÷:ÅË|ˆËm9Îë¯6›˜ !·ÃÉ‹h+ô¦ùN“ÂãôÛýv„Š'f•à®J׬C>²ª‡œM@º2\'‡Ô£Ì üb}µÛnb®UºÈ*Èv_ǰS °×IAì!<½("݇ †K”c×uMÿ™†Ô˜íwÛu»½‹ã²¹q•]¦\JaÊÍ€t%­©‘ÁŽ¥[à2Nº"ý)23š“dFÚSlÕïâAžgÊè®ÍCYð(›qœ#%¨•ÖþH6~&SOö3[yòJ  J³‹’Æ(̬Oh}ÈѬ5¥á$êî6ÙÕÃe»à´ã A”è—·˜­œÀå}OŸnêÜ ’.»}r*œ³|¸nŠN ±YîÈ_ä]–Qk.»‡‘”/ã!r˜J§0®†/3Š)n°lrøZÁÕ–p”[åÔ´§\/’0ˆ-)ÿ²Ä–tžð2ˆë0š‚…@1Ëi·»¡0nª÷=Vïƒ.í\ÛŸ ÈP¸CÛ.6ØÞtõ]ñAË0JÛmŠÆ†åjhºÞëä—PæÚ2t\7  göC·‡äŸ¹ð• õ½ÖÓͱ‚ ê&%ÏÙ耒õQa,ø•A7WeÒuàMK;€W%±Cy"p‡‘šª¢ŠŽ˜Xµ|· be¦â4£ú 1¡ôZÒ¡€BÊ"&¶àÉ4Rûì A'ØqöÊœ êåܶº’FV¡3ƒÉœÚÅŸ3#޲âï²lœ#Z­Úºp`p'ÎE¶×‡œW2ñhfeļâÎ¥ ÌÁÂêå–ñP­,UKÖá3Š>†â]˜‡¦­8XX*®Ë—àÛŠÜ"t¯Jo5¤D¥O?ٶů€ÖWÎάÉ<¸Ý!¢ST3.¥ Ø-a+º¸ £’ñ\ío±â;V»€y”Uó&ÿD°äh%q ‹Š)Ü`H *8µEŠTFcÑ0=] !«*$~HK9U²çX}¢jFûþþºP9ØnŸ¥fDÿv·ß”l猚C=P!ŠüEnøòçKV4è‘ßÕC»½Šws¡ €÷3Ívµ+i]=D_b¶Å)²í£Wc5Þt«ì§r:ŒDrB£0®’™l 5ü>éÅ3=…隂کY]œhgI‹¡<êTCÓU9x¤A÷[.±"/lVÇ>1g€À©'Z ^+äA¡Å¡ZÔ+´B“ ¯?²Ð#™’Gƒ¾”"öL…V(ÒåA¡á&¸-´¦ª¹’!ÀÌBíYª.ÀsjëäÐÉcÌñÌ¢ROò°¯!¸uc` É–:¯ã¡¸_ ö‹×IÇ"Äï»vHøwœÃ5±ì€>}•mÔËà ͵=Öý}”N†ê ¯j„.Ù ¿Ë—¬¢û$e&ÍÚƒ@3+ÞgÆ3j7ïûÂ,ŒFµ+S Ûƒ6zXÈ }›+Y(ò½F(³ÈÔ»’VÌÓÔÇÍ{Fo§j«.ëÈX®çz“·»}6¯"èÚî¶Ûæ®ÎGRLOk_æ¤È´CúòwïÛL$ÔTËa"À‚Çüª·wMñ--¦ÕUÂ#îSÄ“SaíÔÀ»ò‚®ßê¥ß°ÔAzQ¯ÿZPÄ9Š}³{4`0J$]Ú*j´é÷›!…F ÝÁ®€9X£] ,x¿¹¹ò|à|‚a±‘Ýè`½@£mÉÀ«±ðÿè”]©¬ŒGˆÊ=žf}™qÁ¸ñ[‡íòþ2`¬yÄy"äÊM-I—ñ"ÔÕó–ïÓÏ zæÈñéEƒ ©q~Ð c}{¨K¯Z¿Î%wˆ‹‰å‡]áÔ¶-·Ñ¢X‹d¢Í$·ëÚ"ÆÛ:Gª ‹ïÜØòPam”@ͺóÎM­8³X*sXã.vÓ¦†_¤ÜÈ4û_Q;ï0°ñ´¢b/ÚÌï¼lÂ$W»û{¼Ôx¹5êŠBå+N ¦'š^/DÀAʇ©~¤e-ñþ; À¹z²OØý6/È›—K“fTræPFSyñ!«ÈfþÇWÔØW˜’†Ý]S úc‰sS¯J2˜DsãÏh‹!¼ 脪v^Êq‡»þ«I¯£Òž˜+RZ¼E½ß¥èd5#ér1`átÆê%€€(bDÛ~ŸM¡4öÊÄáÐ߇Nƒç¢rÝöPe¤zª .‘Ñ@ JR™$Þ;á àÂa1B¯ÍŒÃTëýª´;%V†¿ÚdsY¨3øŒç£ï º·ÿèKYIô\Â-MÔΟJ`¥Ha}“îdð*6#k ŲÌÌ;´@½œ£ÓJ•ë)°ÀüSZÔ@œL]î cê"þúmWç]<ÖŸ~^Õ›Å4.áàD6³þO}³_ïŽÖPFÌ+§»L¶@‘ TLUÉ9Y%SùêÛºGÚHܪ^ ¹®Wéµ`>Õ¶è¨(Þn´ß9õ"ô9õi±o==­²ÿò§Ø °E#3û¦íšÕpTŸ@àG(w™´—Ô[>|šS_€T¦Ø´ƒE:c‚:ˆ]S‚ˆQ2åJF%û µÅ$ö›$Á¬>P)-ò²0rN%ÿ*eʀġ‡ö.‡,W|J“c®¢+ÑŽž2z†“+––ÍÛÛœ×8]]Ô™((2õ) —/}¯€Kè® …øñ6D5½j.),ÑHúccŽæÛ# $¸)ÔÌYLdzßíeƒüã±\ì±.±ˆ/BµÆôUÌ”ãÌ̼€À€nŸLcÓ–§ƒ.𢹠¥ÒÙda¬¤«Þ]W:êPKYtŽÛ#Ñü[扆PÔv6z™C;‡†àô’\OPë„"M­rú±V•Cï »I3ZX(>àð%nÁÂÆÈ#Vý/[ØŒ:õo Ά› >2üð6ñaÉCïü1|M` U½\’ÔbÞß|ÒlÖo>ÏDÐ kϺ…¶OÂÜ ½±”;Žcš9õŒM3ÄÅ3ÏØ„ëp“ˆÙ“ˆµ2ê‘-t`º&ì75ëél øAý3¢N‹œý6ÜfdƦyåÎ4j›0ñ^ñi ¿àBHåÇ/aŒõ£îQy e(öÊϼ„‘ÞkЯ9Ò 5áfÿ yÆ´±]#í,Žj£Ðú§_Ä Š´£`=Ó å2@«zÔ£X D>Æ\?­0,Fc™<åÌ˳ܗܧ5Ýå´:þxPï‡ÄøI&uh7¡PŸ² ÷w»‡в¦6œTn,^ìu$øXê¶Úð Ù…Û£+þ¢çcº­_føð…¡‹IO¦¶]³Nå)xš¦8ØÆgâù/`Uj@./“DA7£×F£7~§UÂÑë§’óíYxcfÝ’«lJYÏZø³eI›“έ¹¨l‚[9%ˆS(p9åäQœ¥çÅØ±e»"GZ¶|ôó£[¶ZºâÔ²Ô„›µl¹–Ý l~ÍÝž:@ùÉyÂÏCØÄÝ0/éÙkbôEpfC$0ûbæ¶Vaßoì£A}x Bd‹Q:é£0®èÖx˜^Ñ—†ÏjøÒhø’† ˆØÂflõ´Ù µW¿Ì5½  Sræg÷'鉯v‡uiëŽ(àǵY¡ªÃBb\!«™Á‡¦$IB{º?tºq J7££Tâo]K÷ NŠ‘Ó/?·É¸ÊÂ=¦‚T/ÇÇTÓüi*LŽ/ÚcLOX=š ÚѶ= ½± íeæÂÚÐ[Ä£Tú×yþù/B¶líendstream endobj 286 0 obj 4345 endobj 289 0 obj <> stream xœµ[YÜÆ~ü#~’ºï#FÈN0[ZÄû°@ÍpµŒg‡#’ciÿ}ª¯j^3³^% œ&»ºŽ¯¾ªj½_‘‚®ˆûÿÝ<¼xÿâýŠúgéŸÍÃê›ë_½Öz¥ «¹‘«ë»áº²¬`”®´‚o»º~xñróÅõ`½áÃõk¿ŽˆÕZ#¸^]o_¼¼mãb5\¬ Ëã°[óÊ-‘…áܪøèm×û)/#&>-7}|¨áóáÙ÷eZȉJ ·âSؓȴOå©BkBE|ôc¿õëdA”Ϩµô þQr»²…UL '¹°…0œÆ¥7þeV%ÓÛ¯«»ª­ö¿™ñI‡¢ Ÿ´løIju!QHjÝš57¤`L­Ö̺#HÿÛCÙýæ~eª]±øÆ‡z·ór؂ˤ–ûÒ?‚Pþî‰ÂJeÌP%Þã2IY†GF -ã£M³÷_…âxš¾~wlŽûK§ø¼«ú¨zJtZÜÜùg´°Œ¦½ßÖ}å¶Y¥‹¯÷MT´„¡6£Ý-aé埚ø.§&™x¨4…_|ŽÒÔLi*m\îó›éÙ£{d *Q¼O=ñÜ2õ>z -¤a«µÓ°b,Zíá!ŽÛB2•ý¥¿÷ a×Z8žÊ †`ÓßW>´˜,43SËBæ×›6\|¾¹ è†ç6'Tó© òDí…ðq¨?V»Î;§…–"}ô»5Jq5–rçc©ÿV·Õ¦ÿ¶Ù¥Åã–¶ Ô¤ÅWaKsäWå&:«d"ú>PKø\ v’¯®¹…sof@ÿë®®¢«X©Å@ÍÁ78)”¤se š6Ý4m[u‡¨,‚eÍ~[ïßùçîVØ¡v½˜ÄB¦=»ãÛϪÝÖk]€)ìã/ß÷p¬cë%º€„•´ñe !iØüÑ¿çn_îÛjÛýiÿ®­ª=üûdén¿XÌ?Ô¦7·u××ûh9@’Âã\<8·ƒƒwÑ©Ó[t´æ°KK߯ÜOò½‹C`“ü¡mÖ1À™[d{ÜTÁíÀO¥0IàWâá”Ø©»@†Ð9,º*ÊË[Ë6‹ ³ãn×DgÖySöÕ6%G—F‡c\b6J¨f”잸ŠIl«÷ Â¾ˆa fûïSb CãC 6–XLeÕï!ûpMxÚ»j¯bgN£ ú\Î1ÕJ‘:'mʃÿ†€ãs”ÖlÖ_T`zØìw‹1¶¥ƒ$;²í46bÙ³cÃGÆR 8ª¥‘žÔûmuˆîÁŠJ„ÇûäÛ™HöÁi5'h‚6¸ÕÀšðøá][(a1ú¶®º@¹Š˜S@ñ¿PFˆ%u† †Ñÿ u~*à¿)]ÿ‹ß/¾` {š^`O™ý¸Üo•À¢­þ?¢j@Ñ%]¹ŒD”z¾®T¡ Eöçöñ ‰óHvIGEü¨±,}ôú¾îb®£ ë¢ð J¦ÂO‹{A@{ ðƒŽöwœ”âÛwËô ‚vÌ?wÕqÛœ¤QŠŠ¢Eˆ( P•ýzõ|‹!OhksOhå­Ï]Ðgµø‘Š«YÉ k#f5bß0+‚Pé‹'è€_H‡Ò'“XËI2Þ&¼L™Eˆ¿/÷«1ûܾžNe}ÜT‡¾¥ù¬¿·X7Þü Z÷B %Iîòa9N]¶%3w% ­Ò–urLSŠÙwPb%ã|Ž*‚"R t üÙR@;UTÛÏ£ci‰›Á›AÝJ:õ…trÈVÕ"‚Rfæ{ó]d¯ÆbB2á…YÔ‡>ɱ̽;BUSç†7éÃwð•`<¨µçìIlªÝӪĴÐVˆ¥`jǘÄz䀸SE\"˜¿B#ZJ"Þ|¸ob¥çdXÙ^¨ÁäZL–†OjWS°EôajÜsH§ É vìêX³0×-FŒæu½6‹,ì€þãªtܧlߢ.–¹D]†LA©@Ëu÷Íq·*)r÷}“ZjŠbUóGZ¢ ÁŠ ªó7ÀIb0â°½çZfI%©»q­xîrD(#É% dŒ¨qwö•ReÜÆ®Ð]>aZÈ'û’Aò ×qM­fDÝê…&Hn°eOŒ¦vö7¨«¤ðz™»ƒ ͼ2VìÜ5ÄÇÍ<ÿUíÌ2!Nšk„ˆCÛDe+cÓG}{ F¢—âpÜﵩ2‘ž¶©lvÉq›J©¥æ%ëxÒ¼ÄÀ§¦yñùÀ€b ìÄøØN`‡4`gÛJBG¬MªrrÈÑ›;&±?‰µ(KÆRà2ÆÎìJ Ö¬ètš°dßæÂèȸ0›²îf…ÀP ˜¸'ËsÑæm_ÖûàÞ” dæ@ÍâªÀar†{®ªta¤ÎÃ"<‹ÒãP‚j ãœÃ¡.ÀÂ`ÓÃyCq Xp2 ‰AP³<ür… ë™>ê†B#£#°bê>ڦ͂ûp' ÖÛ˜xxîß·Ÿä8MÞä<8)ù¾ì¢’!$-¹SÌNTì LM^¿0Rð(ƒs" ….‚»SÁ´1u(Á!h}6²Ta&6Ä`ù…mbNV¯}œN¿]<÷y# †”ªƒ$œ•$˜:Ø ^zjð!Šôˆ]_vUŒtËÐáúú!u«­kQЉg@:À°\ún—K–QeU `3oZ žŽÄ㦘yå8÷gsÃ8:–\}ð‡ôos1È’—œú®i“#ÒL‡]^ö%sès²‡8÷I–NkÒIlŽBg[§F݇<'”:´ÆBy¬Mý‚¼feÅ „BUíÅ,!Oå¢îÚ’¸ Lefª=êLtÂ:-±K…sA›ï_,qÜi‡\½ÐÅËõƸŠ Ðu{zààPÌbþ»‹ë ä†ñ>•ªÂRÓ¦6${{öM•Iè‰BódQéW2HXç ÀœçÒ£mÚ”?Á§Ý~ˆ‹ÉÉ| ƒ‹nHç]k€ò|?n©LäF‚òÌ÷^œaÔ93à`ʵ†?&T`|ìBðI"ÅŒaÙŒr‹UðhܼæBƒ»³1¯.—+F-ÂÍ7åö_É ¹ëŸ&1³0¤ZùÉο ¡&ÐòmÕAèÒhžä‰ÕXÐZ6ÒêX¦ &¥@ìäœÇƒggbo×P,’Q°Åå»ENÈ/7&Ñl>L°Z>¡ÂuÊëÛŒ‰ª` YQ,ÄPì Ñ^ŠqT÷él®É2ûœj4M8,gJTy¬”è‚G-ž¬F*´N«Î+sA‡7é 'Q%Îk2 ¯ å8b§þüL,^Àÿ_m6Uwª|¦]Co‡º„/y»kâ§ÑÛ•Ì÷×"®zBævÙ L¿Å(Íó¦*ú-Ë—KOLU—f˜¨ÁV¯?LJ2T/ 0dI ý»ØÙó³rž›a‡hšçkM›S7™úôxÜ[¶oë¾-[¬¤ÔxfòÕk¦éÊiÒ9¯oQXEwm”¨^V€¬²Ý]8ŒÍ››bùÎióÛñà‹ö0~uU0’¬›OÊ"AûåXµy=”`†ãç³ë»%]3@9 ~¼fîrŒp~Hð*Ì ‡¶€?XvŽJGréàÎßv(£)XÌg°ÐÓ’‡j?6x|ÿ)%Ý,,Éþíϸ{8Í[ÿ5™9ûI×·yZjò]ü6—µ·/o°cæªO† úeÂÙLZÃÒpcôå.¨ƒ¾¨»BÎ.«>Ÿ ÓÌ;[½ïç,,k d1Þûp-YªŸ$i÷ÉfXÕM£"ÞTÁyùÝÈ;ßyJ˜û¯ žé.AS@?·øÍ#ÞnÔ¹Ø*?žðV×®smŒ‹îzûr[uu ¤ Ú]pí§]Iü¿,xÏÀǽn©››a’‰z)f‹i7e˜ú¾þG âÝmæˆ5§¥ —®ÐÑÎ-ɘ ŠH,’‘ˆirZ*m'BRm ±'ÉàfØ8ÏKÙ%1 íΈÙÍAáëegr7]®zÓ«<ìîvM¾‚ÅY‚»9ßÚ Z@¢i^ÊöÚ u°³ñf~™ÂsÐTÅb϶ÒNÅ⑨û‚æ¾Ì–©@O¶$ò·KrAÞŸ_f—¹¹œýÙá5Wôn×ñD{gôv‰(óëÛt¯Í÷CPåÃa®tCŽÍegˆKÇ úpÖÈŽØ›?%â¶úl_§ µûMcò7ý1,@E ^£fÍx’ݧòÌlliºÔæÜÑV°ñ>6Ræ2)|6°x>é¢Íq\ÿÚ:Å£ˆ±äz¯ƒlDäÿ¼òo¢±¨%g«×#öm¾îœlíH;wO[_¬Æ¹å#XV“$iÐUþß:ˆIKÊbú¢²ÒåÄK Ìu¹™ ^G7GN9¸Ñ1rJ! FнÑ»ˆRÒ Ò=]¥'˜þiM/«”Ò mÆþçIÏs@À Ö°#ðýÒŸëï׫_^¸?ÿå ½’endstream endobj 290 0 obj 4139 endobj 293 0 obj <> stream xœ­Y[kÉ~ùÃæÅ žÞº_l°×ÁY0‰WD½´fz¤ÎަÇÝ=¶EÈϩ۩¾ä A A©ºê\¿óSŸW¤ +â~âßÍÃÅç‹Ï+ê×ÒŸÍÃêíÕÅO—–­laSbuµ»Е%+-a]®®.^0òãÕ¿`¯±£½–Æ0ص½xqí¶PV%m\º¬vU[6•û—äQDÅÑ‚†#µ^©Âjn¤;’ƒÈÒYPk×~ï&^·;׬ †)½ZöÞ´q³nÖ…åŠñx÷/Na8·IœÛ®÷R’WËM5ÖþZ¦œ¨´¸ýWáN"Ó=^mUhMhÚø¡ßú}l‘¬D­¥/á—X²ñšKQj2ëΖþ“¶*÷a÷Ø{šŠƒÏ’ùûS{èÜF® CurUïE£º L$Ñ6û¦«:¯0‡chÚ|éV4È·Ç¥÷oýç OÒç_Ü’(”æ‚&óíO•¿ °¿qùØ6þs·³tä—z[yÓ0U˜l›Ûà*Æ¥IŸ?º%SH#}JŸû²Ý~M'r‘N,ÛªX64W…‚‹× ¢šÂ?ÝîwU·iëc_7‡WKwšQ¥Vkð¨å$ÄàUgz£Náq×¼`Qb 5¿Ž?7û¦]ºJª‚šìµ;6N*ï.[(IÓÁû&ˆpÁ Ü%1ôÃé˜B1û&[Ò ·!5êÃÖ ˆtè¡|ð›™.±xÕ.â! ó(Hdµ¡)76 æÉë )/¹I[¿Öý½?òKŠd˜¶êŽQ"1몘žà7M’û&Þo$Wc­Ö\ƒ oQð.W•·#d˜xzÙuM2šsq”».û¨¶ 9üQnVH‚vOæX0Ió ‰ub-jRÿ!œ Ö`Œ­Ô>”G±Nah¨_‚î2S£$¼(µ“42„éttäOK™—å•"©\}‹8‰~63:»QtvŽ97mJËÃ6ºV¯(Æ&5?€(æ’‰Íî\Y!ÓÏ€„²A Ïs¼|b3”cÊ`L?› ‡*'Íbp›YpK‚ ƒ[I9ó|ÿ—º;… ᢔ¢#‚é iAÂÝž'ÛU!_™ 4}Óš”b†,jþdt¯¡ ŠØÈ×£(— Å´úg(¡@) JrаEMw÷Íi¿qa,K{O]-+…œV Sä°øåÓß³d™e_Öž¦@i`‹80šàÀ]a ù:•ƒÙ~:£ éäªÝ”A2MñŒ˜ ’Z™t[Às ¼J#ô~ f±‡ú™3·M2—°éþCÓÇăܘ8ã¡ìûª],‘`®±ýþæHÊÕ–utd°êÛ¦:¦Ê6•@ø´MG\ÿ£>õÄ%k²N·t=˜@³¼'ã5çˆ×?$¥¸@½¤•.iJîÊz_mˆ¤IdBYïBi¨(“À eH§*dÆÅò!ƒÛÖÛ9±‰ÞsigYéºë½×ÖŠ\Žüœ$ÈÌ¥Döë©jϺ²Yr,)SNÂx®ß¹0Aˆ9vi­ž'në€.°Îsê:tÙD — ým5’Ÿ©Š"Lï‚ œQéóð¥ç!ÐŒ)ȱþVíãL«9HƒE³«ú.®êlàŒiYþ»æ²Ú¾ô6ô0H*Þ5ï]uz9³„Ï.Ìôÿ]óìA 5iyÓ–w]ñ†çR|>Ð4Õö{m1{•/2z!Ò|‡ÄÔÆÆrO®)”Á¼?,àF†÷d°¨VN‚º?…&«J§Ð:B‘IWßGÇ-Fú0¤A£Õ‡ø5…zJ›}8’c® ÙLv®±RΣ Øù”ÒŒN…“‘Ô,‡“’Ó=¿ƒ”;hWf›æW?]2MWîGv\‹¦ €î®àD0BDN ‚…ŠE€ä*ý1ª`e®¯mW °lÒºq‡uݰ@¥Tó*D†‚ü™0& 2 IXÕÅöÐ-ÁJ9évÎ[PHàH(>ܨE™9"8¹þˆÂù“Ä)éÊŸ#Còj2HY„ìõŸåxVnØ<BË{ ¦ëõy{0Wa”¢˜@Ésû?=yÒ‰`ùíŒúzZÃçõôƒ#™ÿ°Tð,ñÇ‘¡-æ%ÙD#1—cùN*®r4¥ÓëE¥©±tÐ9ÕÎ7íÝé!ÐypN1úàu°¤¯«¸nt 4‰²ÐÇKŽ˜ð)Ñﬠ¯!+?˜…!‡D¦>¢ÎseÜä Ö0`¡-ÅÂJð {C#œ:bÄrB¼¾Ž$ŠP„ùÄhÁ¾(u“0äÓõÝ¡i«í² HBQe##dù–ÌÀPñZlsr£ z ­ÇFYº1m0SX‡ÏT“Ç‚`=HÅör•$Ø—@Ó#ƒ…lK'¤Žƒ¢7bÈ8-°°'èwyhˆzJ±m†~ƒ0\@?à°Öê²ænæ0‚þm†~HSÖBÿ,’m¤ãáÜù¼ ô‚ ª“¹¾Ç—ql-€JÇ@¶-û²ôëþC0åÀwù;«—¿³z|a;2÷íõ¡Çoüòè›»¡ˆÝF_ßé $¼ÈÇóècô‘[]å)×òUóZõŸ38ãÈϤtü®ù1aâ ­ŒÍ„!æ)Õ*Eô„ßL Ü’Ç>C ÁÍ(bôÙ Ò\]tR ‰›®~8î«Ïùé„…‘E˜gÚçkF=èðX¬E›¶ø‹Í‡´8ª\’§,‚Ž2ú܈óï”sC2€!yH»+7±yj˜žL+“Œ”àÜ&À~è\d îÇÉ-4Dç}ù[<ÁPlõ‚Åý´{ì¨!ô¹s¶çÊ vμ)ÑïÜûqpÏ©Qgo Z¥Z`²‰üŠŸ,&'=ëM¹ß?Æêi æâ®m¼ÀbØ3 .C?7±”8„ÏÀ±¯¡NYgE?-Yn Ó‘ºl¡}_õïª]yÚ÷Kù£\MΓ.ŸÓ/cÿ2(ÖƒÚbP»Q-gåè´ÁG˜MÓ¦™0ð!žlÛD졯@s¶±8»QœÅ1Ê–fOªì¼x›ˆ‡«Aæ»FùÎ"wÕe)J‘É|£lñY vt§º/o#TèBPœ¯æI‹|îÙâì¦;ÝvÕçSdî‘Ѧå^*ìç](FSËLš¥€qØ&7’oöaëž9HN„³@ëÆ¤$×ñŘ„+dž¤~ê¾>5dÓy^P;P™_Çb½p¡¼8z`£™ý¦L œÔdòÒ1|ŠhgÜ뉧γ/XÜ¢…«B¼]à” Ûçtìb gZ¸FÂ`&  ©“7éXåf$ã¹ÉÌ.N1åÎ9ùopÏö¼g@Ø¡7?† _©±÷šguYu…L™f;Fàl¦>Ô}_qsÏq_¶¡Ëu/¯¨CmPÌA(šNYB.S f8z*[hX‚w8¯AwM4uNC”XzvØFÁ™°|M öÊ3Ñ‘·™²ùEyþ!ü¶ÞD:¡ÂìÓÕ-t$îYRŒëúØëÍ!¡/Ë$_º8SÓvoÔäž3RªÆH¼smzŸ¦DÓE¼Xà0r÷”í¾øãe¼Òä’†’³— È|lën^ˆ^+ëm[=èrq]G†(þËÕê× ÷ó_QÚ›“endstream endobj 294 0 obj 2893 endobj 297 0 obj <> stream xœ½YmoÛÈþnäG—MŠˆÝ÷—-p>ôÒ‡Cë¸|ÈZ¢l¶’¨Tl£è¿Ù·YR¤œ\.) ÛÀjwgæ™™gfV¤  â~âÿÕîâÃŇõkéßj·¸¼¾øÓ•Ö UXÍ\\o.º°¬`”.´‚;„]\ï.^¬^^ÿö>Ü¿ôûˆX,a£5‚ëÅõúâÅû6nVÃͺ°\1ÜžïÝYέŠK7]ïR^FL\-W}\Ôp}Xû{™6r¢ÒÆõ}\™D&9•[R…քЏôS¿öûdA”kÔZú þˆ¨¹]ØÂ*¦„Ó\ØBNãÖwþ0+„’éôUµ©Új¿òÂ$¨¯H2Š4\iÙðJju!QIFçÄ.¹!cj±dÖ™$ýÞçWWn3S…@ŒÞ¼¹¼œ•Bi!iÒòý U§B&Ìë¾ó‹`"U,V®"¾’‰$äîýËY-©ƒ)_,PËA§¨¥W“‹ÂZ™õEç5%¬°T£¦”ytA™âS]¹ÑæËt…(”,è îKªz]\a¸Êº:egµµ¢àTѬ­úÚí¸íla,ˆt^ßù¨b´°B$€®^ù[lc¨ð«Õ‚ØäÈrïCH4“Äy“ 2Œf)%ÚêÐV]µ÷.“…4ˆO>S(+™®ÞßnƒR¶ Ú&r]­ê]¹õy` ÊSì­ëÛˆƒËÍØÝ¸E[(m’ÒM£J%¡ÇÃ!&·˜ÉU»*;¯  }ÒìmãÖ4ä­Fäï;Xb¥Ýùþeá]Â%8,_^àþà’_îR`Š1È?›ê>:…Kšo‹`KIRdôwe8ycM:ÆqZLcˆi!žŒ¡à'- ÆZÙV2¡ErDwx™Ú´>{V­}øpÐIXšV^SàyCèç‹.ˆ$Y}_È ÂñÞ]ÓõË®¾Ý×ÏV %À~zƒŒxŠfáeù9J\r 9nØØu}¢C´q‘ö—ÛcUDJ¥’$P~ J)Ž´Ø´‘?3茇rwØV<0q–4~ÎK¯…Ò˜â¸V [ øŒ‘蔮܅“×XNÊUÀÏ9!¤„_ ¿Þ .g&I Ù©xÕl›vWñ)LÕ9 ]µŽ!K&|³ßÂ#‰ë›¿¡PìþuÕWí®Þ{…ä²5)+îïêUt°¢X³îB´rª¬Ýª­bì‘‚[ ‘9§BÊ=Á“áÍbòØ\oއD§\O|µ\ @;¶I6eˆ"ªN åŸ@RéùK“¦!V­TÈaÍ1*š½ˆ­Œéc‡Ú+5MÅIÎ?t‘íT!yôtfÑg›ò¸í#;ÆÕIE¦ŒŸÅÒJý–l‚ÿ$UÈTI EÅ&OÕûº¯CÝVe+Ø*€Qg‘êÊšÂÀ¬ÜS°….ˆƒj’n.—@±ÃÒÜÁ ‡˜š:³Ž#¤˜(Ä"­ßûˆš!òÊ‘ оBeô7Àf†Lõ¬jïëàÈ5£ÐºMYo»(“ äý˸Õ$—>ëcì@bÓ§Ô(obþêM¤=›qù˜£ ¹,@ʼnÐI÷ópŸ£ÃBãÄ:y]™SVv§1ç‡^wÕÅ~ÊëP¿”¤#¯;ÂÖû¦YAsB•©FRLó œ¨i(X¡OÚ HsTtÖ¬=P·ßÉŽ<çØcÝLV%ž§“Ö¦ê¡îü2!‚!²ñ<‘'ª†º°Æ$ýzWµ£!ŒbäVm ÉA‘¤oÙ—7Ð#Ê.R8Nô©3‚xÈÝeõ°ª}Ýø&Õ€ŽŒ%½ßýRïT=Ç}ΞL ׌K+| S6¶eJ0eIÑû:4™^Q,}ß½ûg4×Jì1ʶ«~pTÍå !ué[­¿ó.¥.®Ò™"hË4]8”%Œa SнôºÊ”AàãBG‹‰À¨~÷¶oÚ Ø åxÃL?íÂÇÐ.QŒÔðñÏ.QõÉ0 :K/}™ˆãFà kžŒy<ÄXÒLâ„Ø½Ž&ÂÀUÎxp\ 1FÀ3žiB†ª†`† ð7`'ŒÞ†Í ÔḀ̈˿Æ#‹&B¾ Zœ¼7'öÇg#®ûpdæRœêÏÒ´CU96Ô_G×mÊb×Ôc˜»![àX8×[  ý”9Ð ‚%ñ·Y‘+ݧ¯÷ýT£¹KalšÔP‹ ü1dµ 37ŽÐ:³1 ×ã;Ÿvæ:x×ɺNžÄŽ·©í{Ó¾|8“ÈÌqnÈ }X¾UTî &ÕŠè °0ƒ2‚ýÏ>(d¨ÁzÑÃàu»…âÔö„¿hJZÌÊ(ÆuûÄŒÃnŽo´{´2OIÚ§g¸x¨*ì™ÌOBëæ †ÔuóÆ5¬ðÿæ¶à[JŒ›¤‡jNÉÎ?¸™±¿oo»P±`á)¯™¾dF åN18âì†ÓzèN^o±‹ãc~ÒNÏ †ØikN>òd$ ´CK<éBxnª¯mÃìNR‰{s™ºKÒ•gÆßn2j)¸Ÿ;úAtÌYÏÔXû2p¶P‰]k›]‹ã>—hù§QâJ~C” ]rÝwzþÔ£pŸ |ðþ½2À¦î£R5VÌ'Ñ9Íûç¥fhEO‡ç¶mì¥È3ä.óÎq;Jí7ÍÌ_…#ütà¶|]5OãŒH˜Põ8œ#œ g—¾"·I4p’xþÿ‰‰{ó ö4Fµž _œg¾$7Q2¯T˜·_€—µO#2Ÿ6®+vo#HR¥š»ŠŸS=ƒ¦ÀæÇ!$-60(•˜{Ä(ÃG,ªyÓëÔ`@} ” 'QÎW 7 PËñ‘cÓ6»3¹¹8BÇD< N±¿—ô‚Ï-L –¡ÏÛÇX,¸Ê}g”£¦Ï6¿…E­ûÆH;€ó}C¬dÐ~%|î@5ß8.T⺺áDå&ðþñPÅnå/Fó…eèâ¿L{ãs£HŒ×Qÿßéq_I^§y! ëZn?‘.ar7_ÒH¸¯§ªúõQ‹X)ŸÃ/NÎY=>×´dø½L%xÆ/”¼ª8°mtÊ-$Ý ôãù«¯Ñ!ê_W¢|ÖÌ‹Š¹;›þç–þv½ø×…ûù Èendstream endobj 298 0 obj 2421 endobj 301 0 obj <> stream xœµZÛŽI}ñýè•Üå¼_Xd¯XZ-¡E²ÊÝ5ž‚îêÙîjÛ#ÁÀ>ðü?Iä-2ëÒ—Y,ÙrvVfd\NœˆÌ¤¢ âþÄWÛ›n~XP?–þYm¯no^¼µla+«˜‹Û»›ð]X²ÐÆåâv{󌱯nÿs̵¬2†ÁüÛõͳïÝÊ*¡¤Co›»fßt«Æý$yEQñ'ZѰ¤Ö UYÍtKrYº%+jàÚÏ]ÅÍy9sÉ*j˜Ò‹å`îû}œ¬Êɺ²\1÷~éÅ© ç6‰óáÐû)Ɉ‰£õªƒ–c¿©ÓDNT\Ž£°'‘ilUiMhšøm¿öó$è"i‰ZKŸÃ_bNÇK® üO,–̺µ¥ÿäusXíÛ‡¾Ýu?_ ­ÈDe©R‹%ld9œÇ}t{ßÌíÀh%…NGþþ]¿Û7ßì6»ýaneM+%ãÜ»c·r"¸y‚TD˜ô‹·˜¨(³6-|_w¿$uêä5}ŠšŠq’WnûmýàW£èQßÌVJX–Æú}f¼b–¥ wwÉ!ùÙÍÚ/ÍÆ.+Ê…ˆÃŸÂ”ÎCõæ7RpX’ö?<™ÀG,ʹjÖxS/Áñ* šYRêÔÈüïm…“ÊN¥£T™‰t`RË’¿n›­$•fh»ѯ Óè‚ÁŠà—2Ÿ5éQÃÍ'!>Ƈ¸©¸”è¼ÞSæ…ÓÊäi^ÇUÜ7‡*b7ˆq¸aÒüÝÑ‹(@s—ô|÷ÕCµ qøó}ë]‚§Ð¤ßûð¹aÚòÂÑŽ^|ÃXß>D.ø¢P]p?æ@*éíŒlXE¸¹Þ7 ŒD+ï’å5ºàœá‚ª)S&êTPy7ãÎU¥.ȸ4IøÇ° 5 õ~hú¾í>Ƙ$R$­®wo›õó¸,˜Äñ_ó¿^Ñì»u·~üV’šå/^AÐÄq«Ðnèÿ„ ÒO¹ ®$£jê‚ê ó.¸äpCt0ç#߄Р¡Æ åº¢ÚCZÂ"Ö]tg˘Fúz³ æø´Ô$MÄuÁû¨EðºÛ¥ùN‡jƒÿ¹•ZrC²Ø}ö — Zð¤èäϺR–§ÉŸÚCûaL !O1y¶Ûm³në¾ÙxדàñyñÇj>× yqE3ü…Øvþ8¬Rã)©öÌ1~Ì%8Ǭï±9$G0$žü.¬AŒ…sœbå !¤AëƒSì"I€¼š\Çä#¸HžõyßöuÒ¿ 5Ù¿¢J­Ï¹teˆ P-ˆ20Á)8t%9£“LïialÓuàŒnØ?Ò2Ž7ŸÂ×\;h- ø;gx€ oؘ*ôUÀê¸8x¢n€ôIMÛ]°d›ÍU˜Öa¦HË~lºf–8ĸ× „1n2nöûÝ¾Š±Á!øãø›$±J—¾‡V{³€%El.i ѽÑHÐäŸÝ®¶Ö²àµÃ¤ÖmLKTˆ¢¶ë¨_Œ³¶[7_b4Žç ~héeF¢”µ3ðM- ùfH9À„¥¾ÆÆbÁàU½þ}HSÒ¸¤òïÀtH¼Ð1 }7}H!\C²rlS©²OL•YÚTMm .aŒžØ´/YÚ©iAWûèœ&£I›¸ä ‰‰Íúߎ]‚ÀÃð˜%¬h~#ȳÁøŽ®Lÿj¬‚5³îêõr×…|À‰Q™Ö~( XW]°¯4S(Ø÷åjÕfó‚„sôÂҜʠ*æ„̪0³¢9™äiv4sÕþ>„¾'‹² ‹1ÙJÁÄØ PX`Ö£T4 gƒðYµ¢<ÌóèÙt.„(ÃXË‚@ÖÏ3k®øË ócè\a!÷ÍCD6šyØnŸMLÜAÈÉÔûm¿¯÷1G1…Óƒˆuœ1T«ÒRÿÓ©j "Ð{ n0ç 8µÅ(+ËUC q]¹ÊÊ ©8½ÄhATŒ Ÿ­WãTiÔg"ž”MÊ`¯Œ @_%’ԌѨœ„s 2Ã1ý^$8Ôʱë 2¢:¼Ù‡ä¹„+™#éúZ5b#˜(Q-TGj™©”ÅFËKUT/V Þ5T`k½su*l¤¯Õ°-T]§ #v6ßF[ºxE:‡UTNy eüß ¹LÃéÆNÐÝþ41(CçMå!Eéo£B!8ˆžáF`(u–Ö š¹Â4¼†J¤ÇC¡‰dåtO 9*¸KŒ/“÷ÓK„ôU³ÙDøåcÚíû™YxÆ“2ûA榙Èõxæn”Žjˆ9î–'¬g-jŒGtèXEgob¥$¤ÅÒÐÃ6ÄÆóÅ€H>íæñ*˜Ғ¤3XdÁ.Y&Nn~ŽüûÒBNT¨*–Mp†þBNW| öJ ‡ôØz>è,=ÒŽSaSæ‰ôXã€`Dž™’Ì\²¦±À¢€ï¤S]JÐ@¹$Ïz=ì" 1¥¯MÎV›QÉ W™â…V¬ÊEªƒ-ðõÜ©)Y W~ÈÈ`´™íRMrI}©(Г£÷!v&Õ C8ÆÌ 5¢’ûKQBæ;£4MŽ­Q%µQsGÓ3ÞÓŽýÜ2¬r ``Ræ¸9 ¦R^ê]…D $à¶§[@n°vD…AÖ4舚üÁ¨#ª´:Ò’û‹´Ñ @юçC朮Ù(©Ï$T=¸}{ß1Ó¾hb<œÒiM›ÓfQ§Ï6C9x‹µÈ ¿•%‚²\å ›¡¿ÈRb3”UšÒ´Fj†BÙi‘çf(Ôœi°l†‚I)5RÙQÇëbQ!¾äž¢9ñ]Q>Xº]îŠ.)w9/ït$6'Ë!*“(m¿«a‹“Ƨ($†Å¸&¢*Ù4ÔõÆÝj .w>Dӳܬ>æêpÄìsbïœ\~#êîZ&8〘c“êsÛßG»‹Ü‹‡ÌóèÄ{©&ÞÓ:o`˜PS’µÔŒ¯Ør‰ÙŽC½¯G±CHKá. ñ±Å&‡# ȯPnéFNƒÆ1/ŠQc3»³e˜‚isGRT®òsœËÊ,/y©§Cþþbß‘ä6ÜÝhë×è³ÌµlR¿ú1“;³Çm°†k¯qôí>dDJZsÝôÍ~Ûv± y‘Ó©¥‰¾p{ü}‡ç¶u›ZÙÅ5ÓìŠcn[ô'ãéÁŠÜbi&«íbfRIÈnÓÔ]²µÉ¯Š,õM~U0ÈB® ScW2Ë”6§Ÿš$³C:zM„=ís–<0cù¤›¡%ß>A½– TA΄BÚ; gFj5: xæ /³Šÿ4þe•&?ü@’R´ÍTñs¨­'}Bnå4&å•!E üÍ´Å™,×&e{— £&×2,—÷±–hbgK^,f¬´sÅ ÔøW3ZÌt®”µc¼KÅ à÷¥bF3l?¹˜a ;F¹ùËý› LÆæ/Ä¿À°Iu©b&wgºXšÚ|Ȳ4UÛ«¹›ˆ(\0×ö÷ )ã^ìåƒß2‹ àÔ¾ÑÙ—§‹^êäÃ’í{¹“¯U¾L;ÑÉ7™ãoä»­qýÁ½L¾iÝËP…•^.¥lšíÚÝu¤wÄb}< Ý•ùÕGÉ™ìÍ»ß&”Ɉôm …ÅÒ¿yãî²=¨éV»Œ© ¡¡ù:ÒägLJ‡D_DQ«¯ê #sW¥fÚ#=§Á`c׈Ó8ö9(ÈUŸzvM‰uí:ˆêÈ 6!3ö¨â}RÝC ‚— ê̘#º÷z ¤xÁ­©„_øåo|üÂ09Í¿W?þõïÿøñÓÃþ/ÿ<|úÏ‹×`°¯S¶+‡ÏÁ–0Â{ÅŠ…÷…Âs•$êëæ®/ù¦ ^“7é‹%x<°üx´zDƒ>>¤¨bˆûÍ!¾ÆsCîÙž+Cœ”ܵwaIWãÌ{(®S_ϼ– èWÓîÝ_²Õ±k{LlÉ÷—¿L <_ðœ=#ÕÄ rfÏß=vQ ‘¯ûúˉ#²ÔFîLÆ~úL«üš%‹ü‹›‚psâìÿÊ'á^$y¾¾þ> stream xœÍWMo#E½[üˆ9f%ÜtW/iI8@b!¹ÌŽÇì {ìÌŒ7DÚOõgÆöØ ¬@ÈR"•««^U½WÝ~((auŸø¿ÚÌfó¶ô¯Úß-f_Ýj](b57²X¬fá+,`¬Ð c[,6³«êÍâô7|ì?÷~Tst´Fp],–³«û.:«±³&–+à˜Àù¼s.’Î­Š¦÷ýà2N(P­e5D£ÆðÁöc™9UÉqù­˜“Ê”§v&E´¦LDÓOÃÒûIB•6f-ûÿˆˆÜ–XJ8äÂa8‹®¿ùÃ@„’éôm½ª»º­|2‰ðME1ÂBH ãÌj"3HàSiç‚Jì?s°®$é}ïžZÀ¡ujÈPþù6„ …ÁŠŸ[,¬ÁC˜0Ÿå:†04]Ö»áƒ3ƒÁYêÔ¬oœ ëçÑrS¯Êýz¸qþ÷W÷oœƒ¦Ø!H“øz²¦ÁŠÎ7뫮٠Ͷ};Õ'Ä2¥Š9b9 øê© ÀˆÔj æTd D3‘Ê\íÛÊpžÉLeŠÓÕþk{÷—DXCìy@]iN»h ™Ì÷Wmè#c, }¿‰–\¤9¾ª  3»È7­l´]eÒTÁn]¶uÆá€ri.xŸï[æ#¤§N¥vÛˆU”1x¿97ŒPîÄ\oÁ÷Ø´KY§PYñÈ£OI‰¤6E^m»¨EàÌÓ„An ò¤®[Y®YáJ“ã–åÈ?õôïíFp˜úpc0\aYuÜ`JXHU]S‡iº‡@ÞvM›BRy¼p4=^8H_à™&Ûõ¶Û”»3rç—¨S¹‹S¹ÿÚôûr}½.ûim'o¯m¥à?Õö\6>ž/¥ð­ïcóBŸR÷KeNê⟫ÜÊ/¨<ÁxIåG¨qq“|—oø‹Â7” rê{×ý¾ßâ Íò0‡Ðî9>ðýéJ øQÞcíJ¼•Iì¿Ûe•dBTÍuª\vI²! ™.£‡ ©zî), ©¶ÛÑâÀ{˘‰kõÅó¨ð1×ÚªÛn¢Qºô4|± ‹Ì¢6´—rûÂPœÉ8–æ‡Çku8MX|@ã bìPˆËr(‡§/÷X˜Pcd£`ꈻ”ççÒÆiªºò)yOˆ>º;Ç»ª\ûÄs¿>üŽÀ÷ÅgÕ¹S!ɵۇ'˜&Üîëýr›Ý]ì†Oƒ=wnÑíëƒ$œòóYn𮮆ì2wüõF>ë–öÕT>fbŸÌ£øl†÷»Ðüý™ïw/tÿ3’S\!™#5|¿(~™¹Ï_Ã*­Üendstream endobj 307 0 obj 1193 endobj 310 0 obj <> stream xœ¥YYoÉ~×îàã0;} ÀG¼»À&H,"q€¼Œ†#‰Å¡‡Ck…$ÿ=ÕGṎ#Jp À’›ÕÝu|UõUóË‚3±àñ§ü®ï/¾\|Yˆ´†¿êûÅ»ÕÅo?¹,Xiõbus‘7ˆEà g`Ý,V÷?Hý›Õ¿@Ö‡‰lÌ{ ò«õÅŸ£ˆL[ÊÒ§æ¦éš]ÝÄŒbÜr[>Lä#[Xœò&©@ed"x­\’­Ëåj,¹”LxiÝb9‘ýgW„íXر ¬Tåî·Iæ• ¨Îõ¡O()¹/«UÝ—EÇ絟*TÜââú¡¬ÂÜà=ÉlËœãé×I΀/ÐK"ñþ)>–N,„Ï™ìT΃Ëõb)C<ܤ=’If¢¼Œk#Æ1Ì٠ц÷]SõÍûvÛv÷ÕþMºk8ÞŸÙÓîã¢TÌÈ€j>âowëic\x¼ºkšt¸4àk.øœ$…cZk3HNÔYJïøw > €ž¼ñªéÿ¾Ù­ÛäCǼ èÃÜ=‡É¥àÑ]Ü嘵V¤-«( ÿ×^i4g_ðê¤A7‡ËXŠÇXåÐA1# ñ\'Ù¯Õ6à™ç„êÏSo_fo+¦J|誇êz› ¡%S’£—HÒš .Q¡¿mÇ|’,H-ÎȾÝnÛzõ¸ÏGÃÌÑŠT;"`ÁŒIsξv?ÁÄr0ræä—Mœè!ëVê¢g4ù8‚Ñ ‚ù&Ž»M?ÜïÊýZœóâóáT ¡¿)Øß¦óIH˜‚5øêÔ²(}õ¸+6hç0‘úê×gð8×Á'Àîϸ¡.úB©ÐT)~Ÿ+ŠæÊ?“)  Qà¡ìQdà×1öýP¯ªˆót§‡ÂïÐ׿Ë„¢¤Áˆ—T’_§ù)ä“”‡Êü9?•T%§˜šÀ7•8p¹¯8ÎCt…xbá)£låÚ=ñðȶç¯9-«Æ2£ÌUo»Ûã}³+G *®}.¤K)ôØ$(_¥p>äó§´Ãhf¼Ãòv•k3l&44õæûæPÂî¨ëôwMi0Â(\|À¾ðµÐ\Ç85L9ft Ol\Ü=ÁÞœ¢Ö‡W)Wo¯RD ¡jBòpK´ ìG£è™ ’ã©x×df“OäƒÛÇ}Ž'Òa1Êm×7‰u@è¤"¾ÖîJQ#É;•#ljÀêŽ%¥ÀzIÖÿ|“K¤¡õ§'až1Ô?5T ,㼡È+6‡rµÔ„…]Û—«áL?” í±¤ØÀ¢ë ±íÜW‡Ã\4À¡Å˜à%ó 9QÁúÏâ'‘¬ Ò¤›¶ˆkU²Æ¡s÷ÀòÜ5;0O æAÀé–„©I뙫¯C*þŸñ3¯•€saœVþ:>0ÈyO3ßã¬sœ#*>5ý±Û%½âžj\©ûã”Æ;4@=SKÚ´ÞèÓú:ª//Øé“pynÂäg[wј ÂóµÓÓ<™\jÎ,ÔÑ)›\W}Õã°Ól ¢5câŒÐq3ô,Ic L¥ÿóŒt2„ÝÀ@‰2€?RªózåYìý¶ä*ð!-ìóŠ]Á9›úÇ®zDi©äóšEÁ«ºÊ³Â¸1Oç˜äÍìÊ—$Îw¢ÓŒø_ÍqÝ’x¼Fʧlyfߪ;6“K?ãä›®©ûáá€cxùZ?¦Ó™wž›¢£¡$ÎdÞý÷éöuû©Y_ @·_·í6¿LÀºPÐq'Ü}ÝþÛùå©ê“i}âÙuûn{l†}ô¢ñd_pÓ}ÝHKèOHv=íIË%oÇ*Žl›ìŠË“›®Gú)A´p²)¥Ìøªýæ×f;Uiu£±ë¿ó¬#Ñ÷Úéâ´D}h€cmöý¦Ý]Îëøxfcä'¼f•‹)à(=jÞ~SV²u;8gcŒ\µ[i†v½XxðÔúk2„Y7ôÔ …i /éÐk¼W¤Á!‡uÑÀXG`¡2ÅAœ›éô .5 R‘уÏib„uòœ@¦€`$u ¹“–³6Pû-=Tär ~7uÝmn A¡ß5tˆz€zé6^ê u^*¯! Œ§vx슫„ã'CLÅOÚ³åÁ¾¨‚ E|ŒÚ³Ü—ÜRȉáÄc` mö…ˆóÁ†–“iÐ|ÃT YmÎÜ5P­, îrÆSÊñ>‰Áœ¥s¨éÊaçܵכ>û1Äá-¬êºã65;å„Ñ p<”iJAs&ð•ÆŽ@@›DEzsØo«â$)èMì‘âo¬™ŽuwU·~((Ê‚; ­X²žîª¶7Z7|ð>5saTéŠ1Z=–Î ¼q«‘÷f‚Ëè–Á<¿ý.¡(5aÔJ:ë°€¹@ƒtIn¦°$Ü~Whº™Ó‘³’–BX> stream xœµ\Yä¶~ßøGÌ[l`Fæ}ø!€81`/{ƒøa_z»5%=ÝkµÆãͯOQ$«$Šêî]ÇXÀ4Y¬ó«ƒýË kø ÿÒÿ·/~yñË Ÿåÿmo¾xõâÓ¬½1·Òé›W÷/âüÆ‹Fp~c ¬¡üÍ«Ço?yõoxßÉéûwã{LÝÜÁ‹Þ)io^í^|üºO/›é˶ñÒ „w>¯èÆIéMzôæ4ŒrÙ0Á\zºÙé¡…å㳿oò‹’™üâî9=…=™Îû´á‘i¬e\¥Gß»ñ=Ý0ãÓ3î=¿…ÿ¨D¹¿ñ7¨@¹òr’§W?2:ýC{ßöía;n¦|Ãò¡xÃã’^L—äÞ6‰º¶íbø/nî„GÒã»_µ§mß½ºãá³ÚÊB5žssçóØ>zõÐÖv¬1ÞªéÁ\#µF¶|Ù·›¡ýò¸?ö›·µíœi8ϯß?¶°ð¢ôA%Ò¶ã:§ñ¹ff^nâ–Z Ÿy±l¦@À^æEŽ÷#çy£ÏìâÁ¸m¤ÅÝNãÇ>(ŒÏ¤µÛî£v”»„C+—øµ;=möá¹pÕ.«Ø¨t²Ñ^°ÌŸwoÓþL¡2´ñŒK$óþØ'õ‚]üœÎ;iMìVŠH.p§yrvLæý"ƒâ3\üù¡-‘ûÆß"V3ëŒa5ÿ"c„cùdÏÝaw‰Ò $«2‹éQßžº]®Ý7y»Ía—h9Ö·ÃSˆo«FX³å„âB˜@›ÙœN#yÜâ"Ûôl—xI zGB4Ú0žvC…âÂy ©¼<#=`OL¡ ›Q3h¡A5&Ò¹PöZfK£¯d¶fi>¥gLpR”ý»D”6ütJŒSŽÉ}q+3+wíÐöÝa<„2Rj©FÓ“ y'Œo¤ÊÞÆN½ x¥Ðáw‡nèÈÒ¸ÊÔÿ:îÚ+º…ýSÔ§à̤Æsf …Ñç,´†K4ëhg`<Ê ´Í¾K»WœEëÛN´sùáÓa×~tˆŒUº‘c™=èúYöÍ\Žfuw:))µä@1:†¿õ›¤ù^åßý¸ÝìÛš‡†o•Ͷz[ 4À0:77€ïOíÓî8úþÚ²F¤§ë§8G­JÖ_n<ýW]ßn‡ÕM´teÆ5ÑÍ 0Ǽï×F#Ñ啊mÁò‘Ú‡ÍÐm¸o‘·xW=jä•ú áèàílýõS™Æh[²nòýU¬{¿óÞȬƒýS»º)ØóhJ“M KCWf® —ìF 9?l’ƒµ.™¸—™-cÜË6€'n([É´½pã„m¬Ç õæiH–!ȇ‡ã):$$‚„KnÇ |ŒŽÀÏ\óîÛü=„ªÒå 9gup ½øÜ-8W(°8GÓá8¤e­òK®ÞIí— ¸;r,€¿©© @ÌfÜO£éqÕpƒ»½é6û#mÏ3‡.÷ClÏ}—Ý–7¨gÛËæøÞ¶7%z³ßSô°!Î6r¡EæðcÆ›ZaH:e© … &±:àî,*à¾Ôù Ÿ'2H02‹íËãa-²HJ]áe ‰£ü®D 0@Ë3§óÅf÷ÝfئXk•Îb{¨QãN3xÚ¾» ÀÏyXõi?œFu– ö`¦—Ô9$šçgÙtÁw Àžö ¾Ií+mƒ¸Q®1Ð ƒthÈbëî£|•'|F7 j[J{º*tnâÂÿ~ ëÌÇ—ž ب½¿Àé¬*æ’M`0ÂV é¹@u~Øœ²Ó"óà9fÄ-?ÏÄÿ&p1‹m5~ÝfMIïÄáJŒŽÛ}×A•f8% áƒÝvsÈ1Hb`Ø„”½å“\ñ1kàp®¿¹OñÕ3}…ЏÆH‹éK]EÂbë(+*k¤s†(ô6jeÈêJ NËa¨Š£K1 B×®¢K â…UÌ„&´_Ò Û(ê¹ï†Í›}Û$£æc9ƒèÌL~8Í`Ãè8$‘ %À –˜g0bêx6‘±€»ààÞÎ åò¬D×z¤ÉF|œñ 0‚9¹¢è:¦ëƒ=l£Ùf*ì ¡±z 5+4ë÷ÏQl“V åTŒaèøSkŽÀ]ÍIüÙÖ!ÿ "DòKÊá³èÃÇˆÆ “Ÿ‹óPå™WEe84@@— +]Ò|Ùî÷§êQÁ1ÔÈmRªÀx²˜XzIÉ+X7•pòë Œ„¼í~k÷É=ÌÕKm_gP…ïûãcú^`pøoÛg÷ª»(K€’ç¿LüV_»‹"”hÏv<d‰°¿ò@åä@Táï„b`Ú•bÈm—Ð ±×EfCœÙˆË{¿P¦ìuÙЈ²KßaBLab–×høn5‚©6 ¾Ü"É’ÅÂåJ@d²ì!y®ÒEáiV RaE DZ ªà,Ȭ£uщ(Íj5ãв7¨¥ šÂÀ8WŒåö¡C[GcFqWòsFÿЋޡ\Á“ñ{±æ›`$Ø)öÛ!½§© }g¥—&¨Rñ»Kµ±ó/ll®tÑ ‘èÄES-]4´ÅD=ʾ‰!KUÁ1‰‚« ˆ ¹‹g:×óP¾ö²(¨k¡§ÇŒ±#~IîzÈ†Š‚„ç¼rË”HSÕkâ(fN<]6%Yõöø¶›$2¥9²œ€)—þäj†½)Ýj¬è0…d 4v²á!™Œ°zÉ}¥Ðà.¹JÇ®aâ)d9zŽ&ìuø¦~´Œo)¥ šu³ÂÑmŠ9!úÊnS[É‹R¸`ÈÌLQ-¹H£‹¨–hß”5oÝ}— ú <;¸äj>uìSf2Öœª BZÌ p4ß¹îTÚèÒ©.ÌŸ7–‚ãÿÁü¥XŽMÎH>‡²1+eH¢^Áü¥z°ÛÓ´Ýù¤„*Í9qô ‹CÍ%Tý Á³p*´ù±ä- ‚[öD™Ãðë 2Ì{Z‡$…Cn¿ß`–ÝoyI‡l£˜½p'a*¯Ã)[ªƒ3dkç4ØòÊ¢[/ñÌX~¶Ö\ÓbP7cíÙ™˜ØÕc[±È`૎EFíùø÷µ"cèÖ™kjœ+·@b`öù ÓÊ¡ CÇH߮ݷ¹r¨¦µª©š˜^)ÏeÉ0 .‹ 8ÓE=ͨkFÿÁi|Ræ÷T Ÿ· Gá÷í 0é6á ¢VvníØKàF-Ïm9ÖÌNmÿkÒ.ÁÑå·ùŽÂÎm#Ì«ˆvœ­ùÝ·UÁ³â3·ÎIXÞ°îÐn’cŽñhe„v“§rU—ÛBÞbD*4NÓ½‘<¾j3œÚÉt&“ËÓ§ÃÜ:.{’~QÖJlVxŒ]{¿yÚI7GWk²*Ìá£Ó8æ[Rz2k‘6¤–XS¡! HÀ¹yúà­ŒQ i—;Ò”ë–ÔR…*#U9¹øqHÌ$eë§6U95‚Òª¡ÿ®0#™ð@R+rÞÒ¼vCç6±YqÌWºéì iV»uO‡‰:Á„×`€knRR á§æEÎÙ g`°è^Ò$fAhU¥¥\Áùpyµ­+"ÔÂÚ… ‘ÿ»ö.©yÐÂBÏó¸2€$!dѹgF‰ád´Œ®\„0«–Rç ?¹éÎݺ9w'ˆCÃëÂM#Åïj’„\Í ÌžV/Úý+ïl ¸z„Ï5A» B(–** Eª¼å퀫ÔrTJ|>ë†m¸ã§»ŒÐRc1«èÌSk¤vì‡Íág:¶çp°Ï“¸ Ý ñó4Ôqœ’ /œ×zýI•)€ÖÙÞ‡`Pè™æew8Þu4 u Ü_«{zjš^ºàv' ¨7+¬gZŠÔËꦠNé…;g†ôu½I¥ï—dz<³ ¯lEƒ?·‡¶Ï]Þ0//ýÌD+ƒëŽFUòÞ/Cw_½Gn2b õ“ð_«È£º5ÙwY7³Þ EÔ™| SdCj›ÝžÕ¨3Ô_ÎDõöQ.T‡Ëæáâ‚ÛSŸuÌÒÙ]w‚¬<»Os±½4ÏJvßQW¢z‰-]Ò’PÚ×ßWœè# P³¾äú½ØR]¨ßl ä‚úh1 EÈ‘÷×Ex¡~¯/5cK­!e¨åa¦{j‡Œ!½ð%r‡ Ћ·v'ÒÐͬs%¢ûÐÝ@Arˆç!U+T=ÛË$o~ÎWŒ Ë:AI¹v+ ­IÏáÌå˜PS„Ñ—Û¯W¢”¥ù‰jgd2‚a$º“ÙÀˆó:Q¼Xž™nŽe[/øY‚Ö¬ó6<Ã7\œç³¡š¥»eœ¦Mß÷bŽÔt?/æ@üGç Õ˜^Ðùô‡›‡¿j0›ñ÷&ò@JÂó'‡“?äWˆ—¿™£å4'> stream xœíZYoÇ~'ü#~rn§ïÃÈv 0Dd`ÈËhwHN°—f†¢øï]}UÏE.•Ø€$h¶ê:¾úªº?®(a+êÿ¤7û‹W,|Ëÿlö«ï¯/þøÞñ•#Ns-W×·q[9º2 ¾«Õõþâ®ÿpýokÝh¬ãÄZ㯷ßÜø!Œ©•KŸÞ×·u[6µÿI B5Õé'FX\Ò˜•&Ϋü’DV~Iœ•„±›´¹Ž\sÂ,×fµýW›ëá`CœÐ\¤½ßqˆÂeq>t}˜È@HNmúZmúôÑÀòñÛ_«rA¤Ë²þÉY3 ß(¨žQâ$‹š¿ùÇ¡™/ièIšW¬ ®c©Œk‚ÆÂOŸª]:§¥è:~‘.¬bÁòF¦ÏßùOŽHÁÑ#jº>³Þf©ÂT¿›qY¬Ç4• «‡BÍŒÁašS^“Š(§£&ß´wû:Dj"˜Èõ]°Ì"Â^sN¼i†š˜ÆŸ‚!zuŠÂ’r¨zÓ|Uçã[êp³ûànÌÆ‹¾Ó™ÉâiuD oF8Mv­Çç¤rìWê±9la¬"Úá²ac0¾¢:yz¨Zk[÷u»oqCE‰°”½´a·iëú°¬ gÀƒ‡¶ù±†Í©oއo—´aä˜ÖAoF¬øI×qçéœÎT>ÐRÐMWP•”å(¼}8l¼ ~¤°ÄH™×JÁ” QÖª‰4±Îä(ëNÑÉÉ0ò‚Ù yÜÕzê6Á¥ÁãY¶óí±ÍðEUÖyÓw µD «ºî˜B—y]¥…›ªšÁ Z M!ˆ=0¯”h’7»]²+gZžq¤.É(s¯'œuõØô÷ ¦”-®ÕD‹:é–T% 52ëªÙïë­ß`÷üÔ%UþqÛt§]•dçˆéûSB"ÇùË´uŠ ' óÐvA´ÈÐ%þS¤fD¸ãCT7€¾&ª[ûZuY‰™?û›wOª^eMhA<¡$\31Õ7OzYßFa<<ÞG æ hcÄP¡¯J[;:8ø‡ÔèØàx6M¤’@Ù§U©@\ûÊÊáF_œ¢17žÍán  `©qY¢@,ø«B]ÿÐÖë†XfÆá²þœõ+PD˜Eø¶ W‹Q¹$FK”| +Á®WÍþ´+{3 ^æ~ó­ï«Ã]ÙÔPüw}“JÀïû¶ùðÐÇ1•HNÁ†K"‘8¶KR‚úoæn®êJ&‚XcLM”Ĉ±<Ûùñ%Ü€ A5b¡”ô2 #ÿË»ÛäiF#)-iÏIw;ƒøþ<†-…•¡Æ „ílîpìSÀ+&³ÇV;ðm¡ˆãhÑ*rUàžÂ!8fV–  ¨*Ÿˆr™•£tšØà˜…¹IzVŽçO]Ý~ÂtrÔm®PŠ­ïêCÝVÉSO”D|¬–鸕P8L²S6ëߎ}sû´pzƒ VŠ–†"YŒàå ‡:„þ e–爕ǬLnh¶~]mRV\f»Ý§-˜y%ïrZÐCÞå 'ä«.YS,ñp(‡Â‰MQš$€îÝ!YÁ1L•ÕvÛx’s™‡Ê뾡­’ ÚC¶O)›i8cóÁoÂ:\{Zh—}^P̃ókpûi$°¢©‘ 0x ö¤-râ–U7)v[w»>¥HªYÛÇÛä×Ðüùé>Ç$«@taF>.B÷óTŠ7®°œ½ŒB0n‹õs@r´ì&;”¤Yž—B ‚—Oàs˜P€s­†Z˜ž œÒTÞ«’s,¾0 Á‡eS@ Ÿ¤q¹gª# ÉÙkÿÛJ(G$@l´0TÛ)ÀǼÂäkGy噆A)-å"ÖD¢ŠX亓fm½?&QÁ1³V>Í)[CÏñë´ˆq/ç<(:4Ÿ©$Ž0húÛö¸O fÜ,Ɇ ™`[|hÚÿžì`M³kº1 ²ÕȽ °+eAs!%¥Ù¥‘€üdQMoò`gí_”âN €_.k7ŒË¡+)êôl‘¨%–Søt"/½oîî“Y¹E}¤Ø‘Ò $m)7£žäw«° òp@”l ø‰ÅȨ±£æ€``-.ðæ<ù,.IëÆ†{ñlJð’-€(7›¦ÕP Ë:ž'é”3EQÖñÛ"Îä¼»dÒH95O¬•ÏäXßþ|ßl’k…ì*1N匋ui}Yrö]ݧhp\OÝe-ÀR¾Ž'ã|Df°rX8 d³4ç0í¿gì¶ÞÖ§”J…Æ¡>lSi¨£¸È˜×Ÿ7õ©OôòC©E—0u±Ù4ßäàS@ðµŠÀEö1d)“gu”qRž°¯šˆ¡t§g $uO„E¶P1xì+Õÿ GÄ0½ 1q„ž¶8ÁRToŽû:wª¤F—[m¡Õ”]€ŒÛ™]H…ÙþEºïÛ”ïSVþŒ «¥ä€UqžU¬DBú¸ŽÑaƒ™öé”c[©îžyí"@2?v‰oSß‘„£$ ËùF=Õù ?¶ÕcõabÈ·ˆ ¬ÿ”€¾¼ÀQ?ßeiàÍUøPµÛ!³ïœ1Ëßú–œµ´pÌ„n¾¤Ý+^Ðܼý8ùüê|Ü¿Qo´ý^B™E?î7| µð<èÔOuÛ?ÍÕÓõ[LîÀ„6LÒ3'í€VšW _9 ßJ}7ejÌ,¾@ž—Ÿ;~îá“P™>Eÿ>-Þk.|ÓôßêQ€Ë¿\¯þ~áÿüM&óendstream endobj 319 0 obj 2934 endobj 322 0 obj <> stream xœ½ZKÜÆ¾/Œü†¹ENvé~? ø +ŽÀŽiè  5Ë]1˜®ÉI› ÿ=Õª&9œÑ®# H@O³»º_}UÝ¿®XÅW,üåÿ×Û‹_/~]ñ8†ÿ­·«o¯/¾ziíÊTÞJ§W×·é¾ò¢œ¯¬5”_]o/ž­¿¼þ'Ìwr<ÿ*Îcju½SÒ®®o.ž½éód3žl+/°A˜óìo¶õý°t*ãáÞ}¦S½~µ¯w7uó¢Ût=îéËšÛwÙ¸ÒèÀÙ§™°÷³•ÕGCs³xdÜL¤ƒ}ÂÜs§UÂ’÷íý.N”¶rÜŠéÙæ;}â¬á“+{0(×àz*…lwØ6»ð»2•ä’t˜,+·¨Šëtnqƒ³î³Â¬Ðd•¯“€aÄ„Fº¨ Å*ÃxØ”ÁÀ_b€×ûzÿpϤy¼0çÎà¬aPíßD VªxÄ#>ênsPqFŸý;/Ä$¹ñ:/£!¾„BOĵ/£Vá7€; 6f•mÅ)}sócý‘¾•¦Ýíé³8?+6ûò•XüHàV)€îú¦Ù7+‚N¾ ãÍÒgãí¸µKß…áô¸NŒˆÍ¡™îbÚòÕx»OЉÛÕCósû±ÙÌ««‚ÄŸaxIÆõ>#  ÎUkzïv Yœd¢»q·ƒIð1s9¤ì%e%tAŒ àQQ Òo²7@àã1ôe3œXÒÄx(ƒ“O[ $o"l<2¨U&`NB#2EÔOG#^áà"ÁƒßJ×!×—Ùˆ°»›  @j)LгyGD w?¥+Ù÷÷”äN“ÀÍJú/5¸µ}kX×›&'%¨Ñq[¯÷ù“DXWCîÞ‡»Q–+ ƒ(žxE7 ©3`ñ©±rÖÑ@…h› ÊÌ «îCí‘e–%bGœñ.p–Ž ÇÒ#yóìUƒ–v–\±(nvÓëÃ0äÀT!Ì)e䕇Záì"T1Å5@ÓŠ‚þé<ÓiÔfI ZÉ¢³dè³é¬‘‰Ûþ‘n¿ù2™H…¶n [çhÐAŠÈd.e(Ç [–ß»ËÌl¬!æx‹?8€ÚpÛÞ½#hÓ3Þ&¥¤„rºAä…#=Iq™cIpwÒÑPÀEõM?óö 3”ö4´TC‰ ›{‚“3]I`zV5’ ¬ÅÊÏ«ÌN…¥Ü}Î'€…é±O@yÁ ‰o®rž¹j—×°Œ03.¯¹áüÑþ¢¨ :ö( ²³ó £ù„Á¦j‘ýÅy/Nø‹VThL·7ÓíDå·½AêOLýÐÝÍÂxæ7N<ÆolÅͶNzò¨ÓšÜåÊ© *‘àp@eî%æ„  ‹Òy'`ÙÅQ1úÄž °GÂ.§Á&R®¢š›•} S¿#×*‰â¿?‘f0Ûkª(UB~гz¶ñ¦°ò3©2€»¡>zÔ/£sSŽ4‘)ì>%ú¸ª¯r.®€žõKhÇ%&)Cޤ”“«Fgƒž¦ýÄ’ùX)¡æ™…v÷”f:;:ôÛ}Ýî’Þx£~Ì¨è† åXP:EÌ Í&SEÎÜCašZa§÷£¼~žá(¬ŒS3:ö¸~¦šíèî°ÀS?õ¨Íåˆ'}ŸÝ6äpJ!©AÁ%Ô½ä¢í.•1]šÍ] (¡šÔÓn+Ö¹à€žQ-PêÔÐÕ|VAìe—GYë\zžÉri« ”œ¢¼¥Óy1ŠÊ¶ÏLMªW߇«¯¾ÍE䡈»¦þL:JÀ‡âE; GÇG첟CaD¡WïŽf†p SU¯»û_A«¥!ÚínÚÝ]f9ºpÍ1‡e¥/v\bõçf9k¡«¦zÿ0äÍ âÇutCuÛaÞ MêÐ~À Ålk>ÞÃy‡Ò?Ÿ_-q/!L.¶úä4ã+?Ó¹¦@ýµ?Ͻ{ÔŠÓ‚ÛËÓk¾}Ôš³ä*óg–càñUƒdàñT% *užoT½ѾïëlÁÒ#~x…%ÞÑ5djÆç) T¸ §Û„QWÁsò®âFp|7[&­$ÔËi›öÀPùÔæXb [¸ 1b(<ü’>!§pO9eB ì4Vª)`N6”Xˆ¦ûàºG† K‡ñ¦ùòRp(K¸&¿,·BJÑ»‹K°x%™<½ØÓ…ƒ/ŠÕÞíº>ËuÅ5à˜S3~n`åœ.!°pµz Ò)¯^ò:øÖ,{²×9N½ð êyGqŽƒ—ˆD†üí0–+”ÿÀ aC»;!œÃ'¨©ˆÉ¡0ÿ#ÈGï‚Ô2¢‡óæ´G¾§V¨ÎµüÍ·”FRIvŽqÃDClrÑ£Ár­1•’Q‹wÄþ´¤ŽÏ‡wí:Ô“’ÒAöÑnA€²×¬Î%ñþ…fxnXzGÑ7À8†"h|%@†Lì MJÇp%õìþs*^  Ïåð_1UnÀ–ûÊð) ¿ÌxG»ï¿ #ß]¯þ~ÁW-(w <€x^IÔÁb}sq{òUß,§)+û{a¹* nxÕ÷â§~zYvtæ3îæ€nC@Œ·ûñùÏKÀ’ÆN.[„Å!ƒÀhÐW˜:-î(ÃûÄÕ_¿jöñŒ¡_Ì$å†o'»æ2YY™òdbhr¹àCás\°»BaãVpd噞b|tç4{ áJã)äóýYð$ìÏõ „¡—óæùä¦>~žLÚÇpéÝ ‚ÿ“Ÿð ¥éž¯Ã’I³yðÄ^:¤Î©Ëïêm–‚‡«Q²»é2$O/>`Ë32FéÝEÉè©§°ªK‰‰?‘ÂaøK\3tïˆ@|h÷ؤ¢8i:ÛJYM gô"ó\¦Ú!uï+\EQYz9¤åwðí3ı´ñ°^Üí6T MŸk;*^k'Û‚pKÎïá´"-e«hFd-e‹äž†UnÖˆ¦‹V.WE•×)*¦þÖí±ý`KM=ºš^ò´ûä\Æ:>¿É´£L¾'¡iÔô¿Où7ºR³,½jévCû¶Ý¤-Ãû*AË‚—{~ GºFïvø`%\ΉëD¸¿¾xñâÇÌ¥]Éû¾]†Áꬆ°Š;Nš6t‚§&:›3c¾ä€DŸ1_òp-,¢'þé»Xÿ³’¤ž¿6ûå‡ [À]éÙX‘Ò;ýÙ¤,à›ˆy"`÷&愦Оs¥Ö>Aê·›ò­ëñ~ֹћã´,†(Ìû^“½(ÑU¤™ð÷_\ªz÷endstream endobj 323 0 obj 3593 endobj 326 0 obj <> stream xœÕY[oÜÖ~ò#ö- =9÷Kƒp”Ø àÄ®£~0 P+®–ÍîrMR–õØ·M ô­? ?´snCrÅ•äzƒ¶ A‡‡gf¾™ùfæðÝŒ6£þ'ý]lNÞ¼›±°–ÿ,6³¯ÏO¾|íøÌ§¹–³óåI|Íëjv¾9yÂí炽Öö:N¬å°ÿüòäÉ¿…q"µriéu¹,›r»(ý#%ÕT§GŒ°x¤13MœVù#¨¬ü‘„9+… {I¸îœsÂ,×f6í}Û¤Íz¸Ù'4IöÓ ±B¸¬ÎEÛ…(É©M«Å¢K‹Žkßy£ :/^Þ¤UIU–ÌÖÄÊòÆÝeا‹ŒsŽÂ/5ûc.”$T‚™Üù³Uxå|UN9„&Lš¡C,J¡¨çe÷Ú¯rгwÓó¯ÏêuÝlŠ];¥‚QD7/¯·‹®ª·~§¤D3%Ó“¦ì®›m8BhB…déAµe–gr¸= ˜F¡a›ÏÈì‚EÒ,ˆ“ÄXžŸ\–Ÿm+¯I(–ÝÙvuS¤#Ê¡C« ö\X¿êfsƼ™|¨%§DJ–]ØÁÎûße¸ÊEõY:\mYºkê]:B({¡lb $†zܦ%kDF/"Ê acmR¥m±IÒƒí¦Ú^Öa7¸ "*/“°&!ZÑßß/Ss…Ù;)êÓ,*?TmמU¥W½ÐbaÖQ'I´ÌÒƒŽâ4y»Kb¨ÙÂÉL+°DEC¢÷1g 7zqßžÏ~ÄWxÆf†j6…5“€lÊ“åAÝcÅÄ  ÂUJaÒ={ùâåë^¢ÕG”fQÔŒÄýðôÕT>sÎ0ÒÓˆ‰ÖJ«±8Q†ïùG˜2¿ºô™Ù%ÿ:"øiJdoNæÒmZîèâ)Iëz{•b¸,¯–Ûúúj•¸Å ŠÜR§¸1Š÷œ±ÍÁ$°àtEL~ /‘‹°‘BØo÷Œì Õ…Ù1S óâñê¸ ÉÛ'Õ2|€{L€À#šf@ÞWíu±NÅ4f"b¢Z¿­»”‡‚Ûlæ®)Û2ÚdˆäYãt²XCºK—ß=ZmÐ9¨fѶכ²M¥Áõ9:Àº ôe¹,®×]Â5Æy„ï‰â.Õ L~G„£E»hÊ‘àÄpÔ'ˆrQÈ”«j‘NÐ Ãv•GK~¯¤Cô›™Ží³èc†|tÔLA\tååÛ/&} )¹ãûÒR×WóyôŒñ„Éöje.ô^GÇô…žR‘Ùd U •6im^M|¡°¨ù9óZ’úEHé|ôK8»¹©ÚrÈRÝ豑ÐÞ2‹€ôí‚\¢ûÙ¬Æâ·Ùu‰ï,Ç‚~» ©*ëá! i`¹dÙðøÇº+SX9ÆújyÈ "&›Såºl)ö^)Ú`Íq~Gaç”Æx[¯ËæólcØÜÍì²J[L¡¶º¨ÖUæÍÕÈJ Uá0š¦iŸ«8½IòtÏÉ“ê}vvöCØë|õNƽêRxèúb¥z»¾n ƒ<ÕãH¿·eðí‚–ðúñÚ8ª³õû›oŸõ!I„ /ãàþË\9–õó^KIw,-9…HÕ<ÐfÀ(§Õ ¼¶É©ÐtfÅï/ÔЊjŒÙ 4ô©+°Ö ò uÞsv½-ïÊ¢’í˧` (™'d?DÂÌK`¶Žv}øóÿþ·žüþã_åп¼ß5¿D£=7ú€Q@cãùYA<Ñ4?ç]é[W,9oÒp¡Î;gM Äÿ,uJ°½ù(‚õÌsvÝ´usšéÒjþÐɯª@wƒ÷æ0oéYz;%÷¾þ|}»[Å·'sHùV 1‡–DCéècþ—Vì5ò¾(#ý—ío¤°ɯµçÀй82çž)„Ðľ\l)FΛ^½MÀ„óŒƒê»íò‹X@ç¿KQÈ(Æ[oãœ)?Aè{Wß >¤ÀcTˆ/íú¦)nŠ‹uˆQ ‘Áé}Š<´{‡+ß B !I_ÖRÛã8ƒ©óG{­C ú½}j¾yU'üí²\`à Êzü°ðþMI¯z›Òa°Sº=Ø´Ç‹eà†±áÏRÝsî ˆzÝÓ¹JC±­Â¹¾¨ýš¹'9ЕPÍ|ËCiý§ÛÌÂÒ¬·Å‡‰§ˆõ#ÃÙ·@=Æ:ÿ6õ;b`Ý^ކr€b…kWÅ.r½%Ì¡ƒ¿ŠÉhüÊK­Ó0mÃéºìªz•x‘9>nS´?Çö &6kÝ8aT)¯šú:¿Šù<ȸ_‹ŸGÏt?­ê®ÝÅ¡Oßì« ÜùòûJúhöÞ:"(^)FrZUö@ä's>cCU€ß>[Å»Ò1þíüdžrè?…ò«éôp‚P˜ùGéñ´¹‚ù5õ‚a¹êbiòp pç> Ep“Þ ÔÙoŒ´ñ]pVï§|¥Õ{"\0¶)Ì ×ÆÑ#‡¯Q}òмí}°‰hÓßÊëë$D‚n8wæáF³Ï¤èl÷¨{Ø :e Gî%Ú‰MƒcÕ^¢‘éÝO0AMüéT`ì£m¸û¢ÿ_´÷ŸBôâ8xl)0·cl3»M¡*ѸOD5rÔçùËîõÍ⡃ßo.ª.NµÀMÖ juj)¡Dà΀ð!7£2,ux÷|Yµ»u‘äp† Ömt# ¡8oÆ›w—fp"œ.ÀA™ú±†>.Ø­EOßDeœê˽Þ[[ˆüþËÀjo«Œ.TŽÝaÖ)7ry¤ä¸ò•#l5: ¼ÈŠ(2'ÿ¢)]Ù$– {ãÇçƒ7k.½4u7ÃT%`€Õûløa©›BJú„C›>©%s\ª‘XC8ï/‘>»‰rÀ# Øx÷˜b€<-˜fá7Aù»É÷~©gLröN¥Ð¹#•Q”Kjœ4&¸Â} a8WÈ=ð>Õ„ûA—³·o;')˜ÿê<è{a ¶¿˜ÿ7Iø€‰Ðn/¢FMç$ò#àG1ÝÜ||ÊßWË#Š)$ž¥™ÂìÙÖ&"ßûÿçHðP¨¨PáBÔÿüç¦I¬endstream endobj 327 0 obj 2427 endobj 330 0 obj <> stream xœ¥[YÇ~Wü#ö-6 Žû>äÁ’#Å@$Ò&P½Ì’³»‘j8”´òßS=Ý]5¹Zl ·§:¾úªªùéŠüŠ…éÿëݳOÏ>]ñ~,ÿo½»zyýìÇ·Ö^™Â[éôÕõí³ø¿ò¢œ_Yk(u½{öýú‡ëÃ|'‡óWý<¦®V0Ñ;%íÕõæÙ÷Ú4Ù 'ÛÂK#$læü¦èÂIéMº9vý‡\L0—FËu—-,ÇþT扒™éVr™½¯¶+„â6_û: ”ÁÉò¬‡C’¥õEÜ>Œ8ØßH×ï¯XaÀÕJèBs0¢ Ê®ìýõÀ”Ù#ß¿j¶ñ&R^ ü!š—bÒ-N5e±5·ýéÀŠ$:úæŸoš·ÕæE:Á©nšfÛ[ý ƹÇ^qVxHúìM[Uûó£>ìÇûÛÒ‡/·§Š¾óvù;ß%S§3ÔÏžÕáýðèˆwÃn6ú* Îw38X„_ú( ¶:Ô_«íòV½\á*á¿‹*¤)Œ†K @ˆVaæÏÕqÝÖ‡®nö/– ÂsczwsV Ÿ± 3‡¶É¦ D¶çÏõ&*¸*C¿*£å;æð¼ÇªK!‹ Ôr².^8£³:Ž@mÙn’ù¥Õ.;Ðñ¾<$/d‘ñX=DYÒtãúÒQÑÀ! û¬9å¶ßEÐ˪¹mö)< 좓[¸hvè}¹«6É»4Óx£¥.¤FýépØ´•# ÷çc.Û*³Æ±@·¼‹Ûé`H›¶5G©žŽ)Hw÷õ1%«IBÓ¨è®joËHdˆ*–Ó&æaDªºÍQIú±"f«€ü‰91a‘ä¬Ëtb ÑÝ,„qe”ÿíhÃаÊ}ò/ ÜèÂÞéþàä~ìš]ýk”öJ*°=ªIJ7¸™B£Íç5`úH CŒ:EKƒ`¢¤Ë’ÞÔÇöL®&8Ëw|ˆ‡‚0çìo(á2‚ås>dBÆoXi ÃÎu<8w6žq¯(Eeò’â „^À~p81ÞæŒ‹e†æ åmÞêEr`]ýönûp¸O<†ÃCavf.#ñ‘gÞgìñ€ œ›ÈܹÀ°IÄRgƒÛÔû»þ<)½rçJ 5W©ý/yžÉ¸²˜Ž”–!O©2ŒY n}ç§#ÝMàZ ,Xešà”›ÁÁ\^ãXµŸ“ ¿jŽAZˆØ¶ßöD@•ÈwïËcúÜ‚ †v:u9ð/a0ó e½~ÓöSèVŒ SGa8áe9u†P(˜Ì¸––‹óèXïÖå¶ZZüÌ)$)Ì@F–Ê d—äTƒd~Ž®ÞE‚xp{TÝ1©@H¡­¥y:•µ…‚ã;=)’ %eóÓ>Ç;&¨vÏ™Ó# ™ b'²Àt,ßeŸƒØDŽMùåhóXŽyžDÇŸÇ¡ùÅ%Å?_’°µr,áPêsˆ îæyWf^Ë9+Y‹D~ Ù~6¨£±¨ŒZ;Öå˦»OÈÇÆ^ž ˜¬7z&NCôxW?>OdÅsTTÆ %¨Èz³î4ùÒü ‰!î_&«Å@>¤˜?¦åIΦ:¤Û/·èˆÍ¾JN¬-Ö°?$ÿ‡½¥Á~s´ãˆ,/ËÍ_Ê®7.¥$böp¿ 9 óTmÛä¼Òr$¹½†T…èÀ/·É¥Ä±=ÖBžÙƒX… „dBÌ›ïb»%Ôü™¥ÂÝót*ͨ%¸Ýæ¬}ì^èkÆÏ»2ZðŰ®Êçr¡zâ“L©H¸)(ì\#ç…¸îÇš†Df Än¡(Ã=˜G ;SÃF¬§Cø¨Îß_ŒˆÌúKåň‹È Ÿˆô¢QYÇrW¥€#5N=Ö¿V(,‹åò1æâš‡>ŸMÈèê½;l0,D¤Ó I•ð‡|ñYÊv^Í Ô68æ6çÃIªÁ4„ÙQ¼ÐÜ ~R¼~j¼$IJ ÅûÐû˧Oá>‡áÙ$b†Þ-Çäcå5ååãöºÎêq{>éGå›Ð$„9Ì?l°Wá•®A“вê/uw§‚/KrOÒ»²(·!ÿì¡&êRkª=-ér|î§éì@+Gê!w£–ÀP—«ô—å‚©Öx‹u³;$«PÞdcšºOs9Uk°h+›á§¢ƒ€ c;QÌP剣TêQ£p–“fÛr ØÔ¶iM, ms|¹¦×R#†˜»«bôÁ)É¿‰¸ÂX†¨±­wuÛOT½Ófâ¤Càˆb‘G†œÏÏd£ð)ÇyÙxá°¶q ùþ&]Ç Ê!w ¬ºìª( ´DšiõE*Ž@Œ1‹¯§4Ü"¸"ë­¾†\Ýe0ј´ùÌ1Ù½g¨lT†´Cþ¼KB7”`¨µ˅ïí#"gÒExP4 ¨›ØdÍ1 ¿;Ý«O§ôF¾#änØ|‰M*ÎŒ½_r©M…ÖÊŒ*{¥§ÇŢ͙L9LÃô`À£˜C\DGçØÈ5®À Ô$å‚hÛiOd`4FãêwU|y;t‹faQO.v ¨0% S Ëd¿¡Ü'Ñ”wõ]LÈC‡ñ/é’{êÜ |¹Å®è7¼or×ÐÃŒ]ù1S‰Œ+y­T\[èR¬›Cé v”Ђ fˆÃ@mža6‘‚„åùøhÈ)m‡’_j0PƒólƒáMè'^ê/ð©Ó´½@ð\ë ÅtÀ×m™ŸÛPŠ0«Žz}ÿW?m²úº®]rHO±¦»/»dâáÝ—\.iØR‹éWjZs®Ì° –ÐPQ~ ñ ƒFŒH$'…Â×}ÍMWÖÙ“{¡cÐðäÔ^>õc¦QXçß@Ðq ¡¾o@#e˜ï-¶{¢Ø^Ý—©„¬BƒZMðü<ó x‡ x.Jø¾7ªÂùÀû°Æ;È-‰ÊR+ÝÁP\g90­©x×É–Žš…ºWL$x0-,Ð6ù…«(œEò9>:Ïö'ìŸùawc{Zì!„Â-‘&":t~³ÌFDh¡4AHÂ5‚%¿N"âÜ«K·N ÂÆ¸ÞSb˜8ÖúÅò€-=8C¶  …œc½éb,=œžŽžv¤Õ,Õ­–£ŠÁK§30¨¨f1{ŠŸgoÀ@ŒžÆÎš™Ö™Ÿb6Jåæ*œ"LO Ü“>o_ü°JÌ«O1 FâmT¡ót‹‰9@jЉyKi –k›þM`¹5/È´_(ºz4 øf77Ê­•³Ä ‚ý¼Èk©!>Æ<Ýøüõ¥eU|H¿9ÎíäÉU4ÎXøï›ýX$ˆ(²£R$ .0®.ååÇ:­Êϵ‘Ôìª÷ëz“X6 /Q1G EVÅæ]"‡ÉU}ÐÔozâ[šø ï˜?§ íñíÑð½Á´6Ò @Jöµð("ÉQ Oé¦6ì§<´F¶A9N /¨²€”ÉÈõØ 8ØÄó0ê,ó¯ •!BSum½ŽOûe8*½,EþcéUÈ6óQéFæˆÊQW7¥«,z, MØ-MðÈ& KÿÁ„6ƒûßGŒyØ–ëjGöªèhä6JÓ[­&WÁµ›U—a&G]ÏÕ%(ǹ:5؉‹;JÖC{À†öO^ô_QÕBÚñ©Ÿ¬Â"«T(e …¡„ RŠy¦–F5.=Ü$ ž•<õMÎWÜb@;ÉܦDBŽUˆõï_§{:ªÔÀ^§À«¸˜PøÚaílñWPš¨„2¼Sãã²+«ã˜Å‹aƒŸ¨LŠaŒ`sV ³“\vú¡\ SôÊ{ñE%}m1 ;ÏU‡…¬ýø6¼„ —Öà9ñ×¢]Uø-Rþ•™(À(úÓ‡×Ñø3„÷?‡P³éH>‚b1õý?b9i0‡7«˜üµyuþwD"q™UÀ=cR95ÞåÑßû_qüñúêïÏ¿ÿÚŽ’Îendstream endobj 331 0 obj 4244 endobj 334 0 obj <> stream xœÅYÛnE}7ùˆ}#HvÓ÷‹#!B HŒÈ/ãÝ^{`=ãÌì:ä奄ÕììÌn%YJ¤vOwÕ©SU§Úo”° ?ùÿåÝÙÛ³· ×Ê˻ŷWg_¿r|áˆÓ\ËÅÕú,}ÀŽ.Œ‚uµ¸º;{*èWWÁ^ëF{'Örص:{ú&laœH­\^zå×¾óÍÒ‡_)A¨¦:ÿŠ–Ž4f¡‰3ªp¤“U8’0g¥0qï2_.öw^pÂ,×fq1Úûg—7ëý͆8¡¹Èw?æ+„+æ\÷Ûø!#9µyµZnó¢ãÓÚUÙ(¨.‹«wyÜÝÖÄÊÊÆŸ·«¸O%æ;‡d²œ+¾°²6ú)¤$ZèÅwáp¿y¨6ñK,ELß¼ðëºñßíº¾í.Ãï |Ây‰Ð‹®zW]o¢Y’Ái1áâ›xš$ŒâîtLXf§ì‰½»¦ŽH]p a‘rqÁ(q’™ÆþÞ¬æÌEð?ÎZ´€)E˜àÉ@þ¸¿´W+ã&¾rþ‚  ˆ á±kÃþ×ï›|¾4¦Äz[ýs9Rˆ¾•ÎÂ*øk¦Á‹Ä]Œ4Þ…%G$¶Ø¿< g j c|‰У㊲úø5Ïæa_áØ1 Ï»›ÝPHM²@Ñ_&z09<ç‘c?‹‘Ò+Ay}1†#0ê~Y?ñ}Xæ!´ï»´a†0.ͯI ×ö¶ŠÔã”¶,¯Ö}‚Â9AñØ6×8fDIòë\L(7£¼7Äp‡¸®êþ~SÅ[o†T~±êi[ÂçW¹¾pcÊçó\Œ†Hw@ç9 e–Vy'™¨ à„Ø .›sQQÒ~¦¨¼«›U›ÑP Ëò¼‘LKÀÕ$A\b¡ðý²«ï·uÛ\ÎÙË_¦uò zSøæ§u¶š›b]•â­eÓ÷(F(Q#ºŒµ¾÷Ûó¸ [^œK5)\£•B‡7±qè[œˆFŽP(úåæ]ŸØ.Q-ñÄÛ”sÜ„ ð´¡&©bÏýô–¶n2©Õåž­/í +;áöð±ÖìÄÅ'£ ;…eÅ  ˆÎÜ‘‡Ñq#3§ô¶²%°€¿…ûÈœ9O½œAs³£àºpWcŒ(¨Vˆåßîê‡è;'š!LÕ&E ÒARŠQKµƒs*ÆUg6ù± ÅÂþd¿®ºc¡ a(IªÆ`#–cvøB(êìa¤5QÊ`IüÂ'%ì1U»ÎX‹»Ê¥w/[ï;ÿP·»YVH/!Jð ŸôÉÀÁÔ–Ýë´ dˆÖX„··™6´xþö3.Œ%fjÈßð»?JNî q*¨3ªóñI „µ‡„…D/ÑÅ¥ÂÊ3{ó1¿Î30{ pÞòªË^B=SXT¶_öùÃ0­÷Ò"îPž”r Õ;uÓf·83…RWCÙ?@WlŠfZ¢,Eɪ.ÉÁ`”H~Åô•jÆM‰Àwm* ä(’w›cì§X•ì#`a è4,{-$^µÛÄ @¬JÅ'ŽМÔé|¿m»ì7(XÀ'˜¨à°Ø‡•„š :_ÀÍ…³ Ò‰ˆ‚œ’å7¯ü²Ý´]J¬ä òG—$ö´ÎûS"\3bBK‡–§µN×_¥Ü×Ò"“ßßg&Ž(øþˆ*àž,¢\Ÿ˜\Fþ\NEô‡''1ö]8êÔÞaÆíu\²{‡‰L„Y“=f"{‰ £SØ1ŸÂ,&ÍSwOÃf!¥ùü³Ó("ÑvJcSâA^ßL¿¾™)OT 3´–{˜ÅR¢‰dšÏ¦ØpÚÓ}Ê@E³ªI.ÌÊv¬iŸ*Û_¥d£Ôi^úáÛGæhÙutH#ä {vùÐå%Ei§‘t3åM!¯«ei¼Cˆþ¾éZPmÚiÙÝ¢œä(æf=êÛ]·ôócñ(…GÿíÜzd¨³c ·>©>—Qÿcüa§¢­@<Æ?g´¡ cÔ8©>jÊ,9.¦UxÒ›ë'³ÚJÃûë]³ fD®Û0bKh3Ð]ÁÛª¹IpCõ¡l@Ñ„K,X`Å®ËpÏ@¡ œ>$Åþ÷ý}ÒFçöIµÊšCZ-G¤>ÏÕ‘RÔÊU kõpŽ^'UÆ©Ñ'=@/„†yÏ©±ªžS:s“wÝÄâ…rŸú|Óä5ËPgVÙ#gpö‚yßLôÖ|Y8ì?£PÌyýP÷u~\ zZ`c¨ïîüª®¶~Sœ(ŽãUž ìñiñÃT jhëYéIh‡ƒ:ö'F.%@ç >Çü0ÚâÎÊoü6ó\(„îº'89V}ß–Zr6 ^—ÃáŒáŽ!Û>JÕð’–BóvøFá}Ñ6zR&EadâqH å• ¹W`ñ! lb/|„‹)­8LDæñæ/=Εf³ÑH¼Ñdâßbš\9œÔt˜ð9–“Þw™â{éåSך ¬ð™gá=bþewïú0ÂT)#DøŽ=HáB™ÏÜâÛÅÇ|[@ƒæÕ<^B’s³Ǻ²ÕšÞ©Õäj͆²Ú•¿Žõ)ÒÀwö `mI)Éž!€XJ‰Od§Ã9.œsxí ‚ým»Û¬r³PÃëš4­Bp´ã3³ó‰‡ïèd—Ðû"Ãc:}ÕMU7Ñáﯿ…ŸRvϤendstream endobj 335 0 obj 2082 endobj 338 0 obj <> stream xœÅW[‹E~D?&à”uê^ŠB‚ŠB¢1™Á ôN÷îö:Ó3™îÉfA‘<Dó¦þƒx÷zê:·žˆ" »¤rêÔwnßwúQA ÔýÄ¿ÓùèÑèQþ,ý™Î‹Û“Ñë÷µ.±šYLNGá–Ph…>„-&óÑéÍÉÚ¾m?övTc4´Fp]LªÑ‡«h¬¶5±\1Ž8›[ÎDùUñè¤ëýEà„2jâi9íã¡F÷áìý2rª’auOñM*Ó;µ;RDk "Ýé+o' U6žµðþ¹-,±Š)á K„áM?ñ—J¦Û÷ëÓzU·Sÿ˜DøŠ¦ €@piÙ¶K°šÈ ’›[˜zü¿T8—ÔÂR¢ Í/Ó§Ÿýð½3æ’ÆË?ý|ñÕsúâïŸuŸþòàǧ/~­¾]_^üþÛë?»Wæß]<ûæËYý< ` b¥d;§…²˜7%ý+\€-€P!Sä·f³{³²­»¡$“í˜i¢”eâLñߘ¿”þ«eL f"V©{#âÃ#ƒN7G¨Ø^L®µõ¶Ë™w`ˆ¡9Íš÷#hЩ[š¶ŒKŒPè]¢w?¸j£w¡³‡¾|rv°°ÆT±ã—ÝݲûܧU 6Uÿ-w„¦Ü„ã­±0–¦^{s8©ˆl7–wênºj–}³h=|iAaÀ[i©†ŠºÛ¦’ÉDÚt©€„´ 6 m*ðc_à"uN9[ûÙ`èLòwÙôçþ”!{°l:K³ÍòlŸ4}sгRÑÕ}dNÓëýŸQ6O<Úè »­R¤Pûñq+Óë¦/Of<Ç›ÌV§‹À6û8gcÝÕ‘‚4eÙmãפÍwˆO‡Âx2Òyì,,S,'tu¶ž×Þ1ׄs™ûŒŒ‘r±ˆXhpµdÛ‰Á\ ¹Âfu®É麺†!ƒ|1Ø^ò“a9ަ»ãè‚ÒÅí¦Ÿ—KüýѪªWƒmû¿rÆ.>ïLc’i.ñºm|:'¦¦¿Ë<{ú`^žÕÇ£媡Ãp¢L†¹ÛTœC޵E SþnF†2”( Sb‚Z–}Ù_-}à ”qˆƒÙ¥Òªºóàö{ͪë£#Î2S}qh|wËø0MÕ¿ÉÇüxñ)@f|´Ø 36Ø%o<¼é‹ÀóŠr„’5u=}=%ïî EOÎë¡ÀaÈ;ÑдíúFNB‰½A÷b\ÄÉÓªî׫vPä9G¾Ü,R;ÕÜ}L`óÌÔ‹ÁÁp$­Äpoìévh^À6 ÏÅFã«fZöu$DºaðËóº? án„dn¢Õ1R-¡f,gõi?_0˜.Y å¤I¢ÃUÐLñ’m„(ø§õ9e'¾JÞ+2ˆJXÊ.q3öbÚg›%!Q?䱺 òj¥2©ë*J&lÆ8TÖ­Í8‡x~²<Ä,îãSÕÐh«bÚ8˜Õe—x´a;5ǘ¨± @J)¶9S¹]sÖ6¯NË@†¸õ²5ÃÇ´Qðòü£ìgê]ݢå~9 ŸØ¢&3jv ÜQ ͪ<]Ì—«¦kÚ3ƒb+pv †*Œô”ÎáUP˜eåQåÇDõžÃpSÉ`Êj…,'Ò©û¦°æe{¯¬–ò—h+Íü{t{G±bOTÿ¹Z\Ȳ¬´0œd·r‘—Ã#2¬¤ñ#ûË„¦â:•ÀvfzOÍ|ûáÞÝoŸ½ÏTIRãíé…¡®né…kyÈåLó¡\»¤,´‡“·žGª’|@ e:ʯ2ÉB–Ó´[KµÅ±N-.Q™7úó24¸vI.Ëizš‰tx0eÝpdÙΚ6É‹P¹¹æÁ˜‚ÌŸIëÀq¶¤ÙéP> stream xœÅWm‹7þnú#ö[/P«½«¥…\_h!%4çBZîËÞZN¶ØkßzæJ~|FZIöÚkç ÁpæÆ³£ç™™g4{_PõŸø]­&÷“û‚-}U«âz6ùö•e…%V1%ŠÙbÒ?…¥…–h—Ål5¹âìÙì_ô5vàk1†¡ÿl>¹zí]€¡¤¦WnáZ×TÎÿ$9¡ŠªøèCj](b57Ò‡äYú¬\ß*Î=§Œ€aJÓïmÕ¡³&–+ÆãÙÏb8· Îݶ ‚dÔDkYuѨ1|oû­LŽœªdœÿ­x&•éœ@[­)$ÇÝ<øIÌEÊX ßàÑ#g ̼d'×S.Š)³>¸ Ï`šIð@¨C]×ݪÜüÕÔÝX½¦ÉyÊ4QJ±ðÌÌ»âÿÂpÃ?»mÕÖ›®^7‘ÂP»L “€T,§=ƒÙ[7v£Dˆ¬ˆã¾ÆUØëàÅ®©<ïÉ1R”Öu»¶Ù†á*w}×c¬ɸ­ÿw)·Ø{Ѻ^`V•L2ô&C˜ÕÙí.þ:œ%(v`VÓaq8¶5Êç¸É 7SoßìV.ä\(Â!Óìb}èTòÇ&c<Sl E†Zž—]Ù=l’l™ej”Í0%#’~qsýkÝn»Sý8uþãÀù4OÕ“­Ëx2ƒ7¦Gy.î y±TÖf‚g¦*B ûÓJZ¸8­p+ÆÅ5 +ŠÊ#i0¬,1Ú¤ ÛMÏoöÜ鮪¿ra¦à]«ŒIjNóËø &e©u÷»ºuóÚòì~×ïŒË|"ŽP`'Á´‰ì»X§]¸IÐjߢýhåDê> stream xœµYYÇ~_øG~²±Ý÷!#ɇ'HœE’½Ì’³’³š!µÞŸê£ªgÈY.…8X@º{ê>¾*~Zp&<þ•ÿW»›O7Ÿ"á«ÝâÏ·7ßýêܲà”7‹Ûû›üXɤ g†‹ÛÝÍ7«ooÿソ_¦w\/–ð0x­Üâv}óÍû¾<¶ãÇŽe¥ñÍŸâüRÁ–£»á>ŠqÉ}9mV‡rè€|>û¹Á‡Š[|¸~,§À“äÓÆ#ËœãB—£_ëôÎ0nC9!ˆWð.’‡E`ÁJ«£ä:0í•(Oÿ>–L[ƒ_ÿÚÞ·}»_%fÄ·•Ld’AŽIŠà˜!!•Êo¤ !X0F&ójnÀr±”!êdÒcàÌ\|¯ãÚ Xoºm×~Û ‡áU’ V ùæØ]?ºö`Ò@xÛ7ñP{gÐÐñ(0eÇ£ænÛŽˆXÇ4’ø1¸èƒ¶îöÅQ>†I>;Œ>_*®™÷b±„7Lš^üôfÌ!^(Ô⟛áØlóõœ¯–lƵ›9f­é«Û,™7¢OÅN‚µK° ¯‹#àÈQ |£·@Pi)!`=èß~n¶‰€gž“·§NHÄœ„ÓÉ’)¸*7Ë?&rš .Qž»®KL–Âp¦•+qpÏþ#w©Âäy+ÒûeÞVÞ\<ÏB豆njöøàÑ^‹ úÿØí'Ü•£K䬃¾šs¸BuŒXbk¤¦+dj©€½ÈÔˆp…ºãd˜qw¾þ2wŸç“‡rgKë*T“äÈvXõ›‡Ã¦Û¿ž+oR³ ,$!Ù`B6Ü»}ɸ²ý[.Ï:*ÏÝö黿üÏ•‹åË`áÙn‹ØšJÉ礳NiAÏŽmª ¬†“v 1§Žñ”«›0RJ[âÒM:ˆg¾ÃWÝn·9ÚÔGÀ[J|}è°¬hŽD ( ushîšszÞìsŠ5ŸÊÐHæ“ Bš¸õØxÒÚ1O¥{ƒÖ–œj÷ýñpìÛ\w¡¬ƒLD·É«¼¡ 9´ÃÞX‘,rÉ R0£Œ!9‡îد²c´bZ;dÐôhe(?†C×gg¶6JRJiiάë­8“;A÷ŸËC)¨ð´=Rt„MŠ$€.ü¹œ’äY·€Y’Ç!;”¶nY¦ÆLV¢€æos(̽?•‘6mh©œfÊ»ì4¥r.v÷EWÏ=µý\·«ÔöO¨€'äò’Ç…¤ï‹Ç“Õgäîw™?J©ìyÄs‹‡Ç! †qÕ®G»‡ÜÌ!Ž „Æi*AU •¶–Bh_L+¾Ë ˆ˜Ü€ž)(R(«®‡€M=Z KâÞí×›ý‡tž@ÞYÒ$ÍBËÀ ÖMóŒ¢3PýÅ IÄܸ9Ld¬áÕ›±è— à„¸jФ=5d¶é·›ìPRžx9!/e!‡ke«HG\…r¬ÚÔf3´#˜ 0'ÿµÙ¯»‚\½æHâq˜EÈŠ)5”ó‚JJ³²þŽ­¢œzÜ>ËÇ6*§–ÿú¯Ý~™l—mb`4mrÈ0ÑO¦C¿|äŽéGr³œcœ‚·9€uÀ(îrûðAQÍN–Ì#(gKPpgQLJ¾ûÐ7»]Û'ý-\ò™Nc=*¿nmž— njC9Úm×%m„?8¬ÉC£ôÍyU­jrܯ¢§‡l^è{5ëö-ô—} )îHµCOifk‘ïöÛ§Ø#Q7÷Ù¬06è¯åÄ‚?Mq$ ~9Å­¡t{h†= :¤>K)).Uƒ¡$„·gEk4ZQúi}Ö$µ”§¡VJ€–ÔºV}Û`²›ÆÏÅ%SmŠŒwVN{Å$» _eDС`J"‰ÈŸ±¼SÁ½o¶%>Àušžwà§þÒ’å„>gØÚÂÙ26Œ™8ÎúRfÆÙwoó¬ —êd”-Wd¬³_2Æ›”xQ‡X]L3bËÇÒCL*äþÓ¤gk=ZËÕRÅ …ÖÓ‘÷Í®-²€xÂüÙç±:¶Fþ¿fßÀ}FO-¶j¹Ï¶ß'µ-ÀjNÆšyJ4¦BÀI©œé@ɤ!¦CÙ,çÇ͉.RÂÑqr˜‰hpfðWh•çÀéÔõ}IU€IB]!Gè.Z&F¿9å/î)Þ½}]º Ϭ(FյΊ(m²a –¡¾ê+&eÌ]b¬FM×u³÷"_믖1æt>‰”ß[ç>#¶ZÛ“¸JÑ)ĵ<ƒ»BßX‹ˆ¥¡9¤®#1/1„2q…–Xåf<;ÝD|¡g_ŒæR;“󔨄ê¾Ì¹×¼¾bm"£ÙÌï±6¹%0æÀã$çÅ‚±H`ێИëÑ!i•Ë ´¯l‘¾ˆ+û:™n¾*84ª$qÜ甋‹¬®™«¢Õì ăYXø ^‚`?+iEQöM"N=4ƒ¼*ÏzÒÇýæSƈ*. 4~Ÿ&•! {Ü-KÅ–M"¸ 9òûÉî( Üé%¡Ü$À€SÇàí¾íäÁÜðHŸ8â5JÙ oû‚ØlÝ4å^34µº)Ìû/‚ÕÃqU€ hˆ3ÇÇBWLÕ Åhºî)q–\`뤙g¹8i†p-­ Ã‡ÍoÐcò†¤²«KÏëDbb€øK.Bá¯ç=žtÌØéSe?Úý¹±Š½¥¬k– E]Éëü"$­7v€Å›äÌÔq'‡M=Aµ±º ­–×j'³ÜóüÁ¥Ò‚õâ‚ ô©ýb4,({¾‡ƒ(ׄ©#ãÜ$ȸϕ¡û§Ò¤ —T¤ÈgÙÓqÒS±]ëHÏæË+ë¼K§âr†ž1u—óO¡waËù±)|¤ ÅN©d“%aö²Õ‚£…` ÕÓÏèé/““Åë…RþªôHô™%3Ôò‘OåúäŽíìör^X4V^ Çég¢ÛXo¤¯‹?Ì>îOL9l£¦eÕÑÒ«6÷9“ï7øË­)ê¯$Ø`çÚ»‚ISÍnP¹µ²“ ËòyÝN:? nµÿ¥'‡jîuûÕžÖ}Ò¹Z›çǶ¥ä0eüTÆßêt>¥8L M–EsE-øîüèçGïGˆû pÏP!qB°ph¤»÷߯Ãn¿‰ÿ<èÖ endstream endobj 355 0 obj 2474 endobj 358 0 obj <> stream xœÅY[oW~ú#,ž@Šç~iÕJ´T K-µ ¼,Îoeï{“ß9·Y¯½NL¨"8™=3óÍ7·Ãç%lDýOú{¶ºø|ñyÄÂYþk¶ý:½xþÖñ‘#Ns-GÓùEü€çj4]]<òÙôµ®'ë8±–ƒüôêâé{/Â8‘Z¹tô¶œ—벞•þWJª©N¿b„Å+i⌰Ê_)Àdå¯$ÌY)L%åb_rÌ ³\›Ñ¸'ûa„õ¾°!Nh.’îÁb…pÙœ›6|ÈÀHNm:-fm:4p}<{UdAAu>¼Ú¥SÐIUÖÜÖÄʲà›ö*È)À"£Äœc—ðG˜6b W<ø)ŒÈåhÌ¿\…ofâ¼¼d„JÅÒU/Ëy±]¶W›m± Ù8˹!Zk>›zQø·´B¦›n¯S8 W9ÂåæÇd"y£´°¬õ‚´æñÊ›¨ŸYb)½g^¸ËP¢Ë ¶uç‚H—áÿ.’„QžïpiF¸ôBÔ,¬øë¶NÖHcr,ÚâË €ÒÙè@~Ú¡´C@*8•‰ó³?rD ´¸çú‡§žïá9øÓ°?ªïÏËr3[W×mÕÔÉ…~s`ó+’'¦‹rH§DJÌõ¯6 ÀÑ*‰Ï·õÌ[  Ë­Ëv»®7á’)ÐF3˜!ŒKL ¨6HCð‘rÀÜEEÆ*Jå8å}Æz~ ¶Ÿ†e³Yóf fï2 .ËšœHJî}r£±€ü¦PlrR2²ÒëÄÐW›ëe a†ØÝþÖÔu9kË«ÁÀ[ ¥ÔÊo–©Žê;25ØÜY®‹ €‹ó’Uà]›æDªÿE¨lÚúáÔ~]' „4—e±)SrR‘a}ÇBó25óD(êˆT¸Ì‰Øã !-–ÜwU}Õ$‚B—È’»$)9j©ê¨™R…$kËõ¼˜e#98Ù“§9ÒÄ~"cù¨YÞ>Ÿ¼¹ ß;Â9¦ôžùWÈDüg4Gí6& Ã<©6±„9jivu¶ÏW©I–m›„>µø}±m›UÑVcÿ«1„Œƒ¢ìsÚn¼®X.ƒf¸›aÚ-Ê:›¨¸»Ï÷àº;çM[¬ÛMH\Áˆ°&ßñz Å í1 p£RgàÇu“È?Ä>%‰ÕX±wÑ(GÊ›7©‘ ›ëˆ%Ð¥œU?D ¡­k¥Ñ©:!î9–Ú;c0«UQÇPH(„,ß¼¬ê2 ;ØSÝÃ’dT}êX(M”Ž1Ëm}VÔuÓ&º£mŸ©ÈiEÍ!7Ä@f Ž•új®Ýq —½Þ-ж¼ úÁmá²²2» Ó^¶i u¡©/Sk‚yOw–Õ‰–Ivõ4´Ã|ï6ö;ø\hœvU»h¶h0a‘²N{V‚Ž`eÙADrRÂ+HBf²?/ê<”b[.Ú¶\]·©_Îía ŒÄ–ºÝäH…¾u*ñše¯.2ïv>êMˆ¤;”‹6Áİ*×eyÁeŒsÅðs0rÐÁ¡]µŒ½ÍAæàX¾.ªè´«1ËÊ/³ò:[|Ô«„´DƒzØ¿Çâ/ýT„Wí6Cµ#v϶v‘P iüdoXðý‹ÚmlüPælŽXJD_â%Réð$ÐB8yfIåÊ ž-Æ#a(6‰&ÐsÄ—Ë&M Ù¾‹x[e°ø]¯›Oëbµ*×åKž8¨¾£u\ Ø }++»‰GNiÔÔTyirZpdFlQÌ·]L¶MÕn ÄËÔw`ªqý¶ƒzR`)|È »ÞFÁÈ)0öMš0ÂO©Î;™4ƒ°:·*€G„Ü¢ÀÃü— °ëȱYx·E7¿Ë” 0¼J™ÑhÀ¶õÒääø }ªVÓæ¦_vþôûª¬>-RîÀÔ™ °H€¯¾c2¹Ì¤÷[ò®ºj‘0\†ŒIÙ¯9÷8™œßUØüøî[îÿ0¾xÚ¸hƒmœŸ¹hw³{U9€Š3†‘Ö ûyª'TŽ*Ó Ý’™{u‡°t^;ùŸ4ëóN|@Õ ·„¯U=ü »Íã=kÜAŸE^jBw?kìGûŽg¯â•O&Y}MMê¥òmâŒPî| “vGq|>©=Ä=ï=geÏ$¼ùVª;¿{Yvê1 6nþÛcRW8¡> $~W·ascÝ.Ý©70‹kuêÁI"L}:¾í,²~H؜Ծþ0££©ø4 ¸>J÷÷ÝK,%ÐtQ6<-ýàh÷|‹K¿¦èðuõ¥\ÆmÚ.„Ï~—Hä®v@ä»Uù±ÿîŽç›å=Ñ8|¼Ë3ÜS‡^Á–P­Ê¦Ö3…!٪DŽù]NíCDapÝýqÙu„[à2NÌo˜žr€žÜˆÈϦ',ªì,܆¹¨¡;èã»bÆ 'üº®aý@ÎuÐÁ Û=œ%è €SäøÞ÷Kþ½O=®s®³tìèéYÜÄ9úûtôç…ÿùMů.endstream endobj 359 0 obj 1964 endobj 362 0 obj <> stream xœÅWÛnÛF}×WðѬíÎÞ7E 8p>ô«hüÂHT¤Æ¦d’ª# ßÙ«H‰²]´Ia B³»s9çÌð¡  êþâïü~ò0y(ÀÛÒÏü¾x3›|õVëB«¹‘Ål9  °Œ0€B+¼CØbv?¹˜¿šýþ†÷ý§ÞŠbŠŽÖ®‹ÙbrqÛDgÕwÖÄrÅ8>à|®œ‹$†s«¢é}ÛùƒÀ eÔDk9ï¢QãõÁö}™9UÉqñ­ø&•éʙњ‚ˆ¦º…÷“„*m`-\â?"Fn K¬bJ¸È…%Âpˆ®ïüaF„’éôÛjY5U=÷I _Ñ”WZÖ¿¬&2Éeða b¥d¾¼‚Jl+¦Ìºœ¤wÆ— 0w@h¢Ñ3Üq½n·w¥3sL”Œöý/we]µcyMÀ, ¶i¢”bþÀ̹âÿ1åT±ý6æ¬Y~¯j_Ç ÑdðRÅÏŒcüîJl®¡ÜûþYÞù 14W&ÃówiJ$@z`W¯}ç'¦JO¿õa(KŽëºÍ&Cqˆ@@9ç›}CZ'XìÒ0Ÿëª7ëm·ÞԯǀƱàa*–ÓÁlU½À("3´(¬#Ï-jø˜`“HÈ[î깋Ë_E,]ÑTÝ®©CµáÉÜ…°@#¾EêÍ¢Úv+ƒɼYzW œåGÏ7›Ð¬^†Ö¦‹x‘Î>®ë…÷ÄN+ƒdöŽˆKjåK_N­ÇÆTUMÆ©Í% (!89žQŒ¨Í_Ní›®Y×þj#Ô³Ôáýj·çü¢ìn#‹)7êˆØ=Ó íÄll·ƒâçd¶•L>Çì>žŽ˜Ò“ : ¶› G‰©°‚(.Oš‹ÔÖ&3¶[•¨&²ÏCW+“[Ù&ä ž4k[¶mµˆ* <÷¯ÛD_%3Êß2àÞ"~ÞÆµBò¼kTu¯\÷tç>#Y-V•/Ê”+ôÄá7u”Oì•§ù®iÂ!$*·,‰G—¢ƒÜžEŽñÊ€Ú~ × •‘øT¹Ï«Ìfå «9ßjqF³QÀÙ˜f‰SÍÚÄ\1§UÕ¾)ýÉ9Ð)þˆ‚›nÓŒ"wj aŠÉ d\›ÿ^ÈžàýõÆÇœ#ôס´â~— ÷Œ–0Ø¿çÌ|—„+ñeí}{ª¶c’vT€¤jÆ~ÀÑUS„ÒÃ|®š»ûx¡‡Ü¿. %]'Ò¿´Ë㵘:Í¢Ãyµ(»²Ûo}p]at÷ç €çkóÓ¦û­­–»»~ 6â¯SïßQ~,·Û OnúCîçˆûÕÝc¹ßÚñ—(üû|ÓËk% ™,ˆ-Ž™Ì|Ç`œÉÃð»H¾Öú3D¸]*]Ý!Çqùí'w$Ô—ÓÁ1‹Pâ“O. T:}9öª9•Æú{’ ‚Ëd¾_ÆY òŒÝ4c`Q¦-ö•µXí¬û^ßQÞy®õ~tÕv;© ƒl¦ÜàÔAR¦Îãj=Ï(€ð*°ÍpiŸQ‹õ¼ìª8è¤6½±†³«‰{> stream xœÅW]oëD}ϯðc¯D–ý^H@+ñÀâ6H<ô%M\jHìÖvZúïïìzgÇN… EJ”Éììœ33Ǔǂ3(xx¥ÏÍ~ñ¸x, Úèc³/¾_-¾üäEá™7¨bu·@áya5Úu±Ú/.¤ù°ú}ùzÁœè¿Ú..~ . ˜2Ú'Ó§ò®lËzS†Ÿ´dÜp“~CHk ü•N‡SÖ!$ï”´Ñw“.—ÇžKÁÀ c‹åÈ÷¦MÎæØÙ2/éîïb:ÌIé)Û®“Ü%ëzÓ'£ÅðƒíÇ59Jnȸ}NV¼“kº'Â6ÌZäøS¿~¹ –À{øßÔ¹°P óZDœÒ:¤\KáCpÏ ÍHT8 ,³šjpÙÄè–I/ZÙ]¯ƒU„;9y>¥Ü¸Ë”¿ÖÛ²íæ*½ô ƒ¥°Ì#âUpÅïÊI•b¼<¤.°"'Uv_%dh XŒt±}$‚ ¸°ŽË!­õ.pÌñÜ+—MÀð”ò‹Á¬f‚çÌu %$Sžh]~#!O2GºmšÝ,>0¿|¡‚ØÁûú¥NÉ(k©‚ýú¯3p†ò.âñÜÙóxºeÆ‘ôM0y¦¸tó°o.n>Dä¡ ¨A¿ž£ ÓJŒÁ\–ݦ­úª©SþãÁ +lL§qXøþ꾜»AN¹pã¦SÌU§MLj{Üs:´†ží¹qBJ3œÎÞêMÈ=xÊà•[®-ûC[ÇR3éÐô”J” ê‰Û4ù\XÒf0á¥V“i—š˜K úTõ¶Ú¬ûªþ= ”Úó}Ùß—mÊ ¬¡ÐýÀTž¬BY08m³ýðgGp Cü4m‘¡ È sX ØEˆŽ)ŽIÆZjã¨@å0§Vø£‰ ´³yÅQ† it—2 »¢â˜‰â\=%=Ó'o€‡ã-„"NûëîÏŸï®3úI×ZƒÃu.J ¼³Ä¼=’WOe=J1ÆsØ=\ÙÌYV-r§¿ÊÌë0çh‘.Bω›]Õõ³ðÂŽwR ·uŸr æŒMh!ò* qpF†Ç'Žü2¤=¼)C<ô€w"vÎÃ:BÍùN§€iƒ¤'º#‚ÏTw3VꓱGày;j›]Àe€lMO+“pY8Ÿ’jYž;~HÓãø¬dý0‹§E5ØH™–æ.Q`x®ô?Èsºæ¥°I …ÁÕ…ÌÑ+â3uM›¤ ×/¾(]¸s¤"OØ«6†]LÞÃ( °¹0›¦®Ë\å±U ÃÒ<œ7,-sA&âf'âö±ªدº7u+ø_dë4Á¬ZT뿯ZU=¯LqŽßs52çÕS š‘¥SؤJc½>£J˜Pð.G9É{Ë| üçâ2ÔaVqfÅFN´Ì:PÕÕ>–ÿج‡=¹šìZ§åGê,@É »Ef&gÖ¦aß ²â³XÒH­|î©®_ïvå6é§3^åÞ5m f |LB(Ëh¿9· ñB7¹ŒåvŠå%­G õTœ'ºãjUü²¯Ïê:—öendstream endobj 367 0 obj 1198 endobj 370 0 obj <> stream xœÅXYoÛF~7ú#øÖ°¶{)Z Mk´@×Ú>ä…–é„D*$e[ÿ¾³Ç,©Ëq0`ÃËáìÌ7ß\|_P êÒßÅêìýÙû‚…3ü³XßÎϾ¸2¦ÐÄaU1¿=‹/°ÂqÂ+ŒÒóÕÙ³Åóù_ oÅT~ä¨,f 謦˜ßœ={Ý%a=6Ä Í\àe¾ñ"ŠX!œNG×ý^d‚PNm:-C:4 >žýP¢  oîÓ)ÜIÞSù#MŒ¡L¦£Ÿ†› §Õ.1çØ9ü’ÉrW8â4×Ò[.‘V°$úgx™©¾}UÝV]Õ,Âe Ì×b„E•ŽOU2gˆÊF e¸acÄ)ż’*/fÜyŸT†› ³þiˆɨãçòáåª\÷¿Þ¾ZtUÕsd–Þ˜qC´Ö<¼8÷’ð?¸ˆm×ÉGóþª‘Œ„# :µ°Áö¸$’jdïÊeP`‰¥‰}ƒ:ëˆ` qÜ4u6DqƒÖ̾ÊÀkÊÑšºŽ:È,%Ô€5Š d}µm’5Ò¤ÐP>œðH) iN;´5¨°xôÕáѾۯŸ½~ŽžS‰æ|yÜÍ—l×ïª~ÑÕë¡n›Ǩv;¦u1O ïÌßVÇ.à3ìQíñ–Jb$¦Üí¦Yx;¼¤°DIººjØtMŸø q–@’n0î«ò¡^…À{PB·Y¡(uj º"\(+wÅ€3"ãyÊ å&W‚XQ_âY{Î(q<—¡ºé‡r¹¬B‘L–ó|Ñ.ÛÎCäÍ„ÔÀŸ²Â³DúÍ:$@kŒFm7D}H7–’ëCg¶D3¡ö!3„ñì`BDŽ× HˆÏ”B eÔ_Ú—É©óp3‡‚­åøpÓõmiE”ž¼÷]W&„˜cx|@(FÑÒòzY‚ۤΠ. R=€H%¥õ]%¹žÎ¤T,¿ü{ÝoÊex4ãôÖg½¯ERGÊ_F -µ—]$5«Ü†«jYõ]‚FŽ&F³¡ðˆ±y¼l×¹B9T¼½@ÁÇ®]]&§¡ÖËÇ-HPBU挳'@9㾂s‰.«϶ ЊÁ9>9p[7‰©JŽñ«º?êæ¦ ”ïâÙÃó$m CÌlÖ›á"ËåæÞÆ&EÊMj±é0®hÇv±øë®Z,S*×ööD{¡Ö'!6PöŸ6Ð1U_ÄJ¹ÊXæe|a‚Ã<"PÙ${¤‡a†9–ø`Ô‚>˜¤Ó\¾÷<=b#>:´ñ:/Úfõ ¨?uÉ'¹é|ÄÝøà#ݽôIƒdtÙZ~Êe ô‡í„LÞ^ø4 ú µÙêCý\?Áî]ý{˜Ø ð&Z>H3Lùû "î¤Åî €Ä²ÐBÎÿs¼J–^µí„\TQzd0Ó„ þ)ƒ€œ&³¾J£”QjÊU§'X $F»ó{F*ñP>Ðÿ¡MÕxæ/Z?Æ4©Ì;‰„b±‚]-T±óm„Dår¯ÿ4SØÒ¸}|\»ÆéÄRÔ±¯ey$lnÒ‰éýР§hR*–ŒP™]ªbù–0GgËß–q9€¥ÏVe2È­bû&cS96 ¦ `TB«7}šÑ„ï•,ûÒU‡A ÍwG0fÂ2À=šÇ•j]ö}ݼIï‘™ZÆ[7Ù®JÝ•ƒ«Ð‹eH€ÄÒéTüâèìδš6Ï0‚«]ûÀ,¦ò@×6UÊXQÕ#‚C¦%œŠ^Sà9ôD´4´I¿›»Ì§íh²\†ˆÁ¬j'ï6…šešB©J뀔y°Î1ã0ýçï)!P`Þ'Ã]ZmÞ>X3`ŒÇú˜ }»B 8͘ÝT·åf9¤ÁÁÐ<Ó”ãBD §¹þm»YÞ¤Œ¶2Ók(ßå‘7ÛŸÈIY(ÖËrQT+¢™ Å çIìÙþ…²™íåjfG é«yÞ#ªa@ªú:Á·Is;».išÔ"×ÑwoºvÓàºÄ]ñ×õCšH¬=Üš}Âé¼€T’Jv7—îqvô¥È¹é²ƒû¦Q߯Õ^—ÌëçeÊ jså¹×¬6Ó­ÀϽ93«cµ*‰y/î×±Á¬›çðjQ–j*¤©’e¨¿b}È®ÅSÑ÷ónŽìú2n}êœyìºSÈÞ£¬59ÔEIèøa+å•õ[/ÛkÝGŒœã0ŽŒ™\rNÕnXbaÉ™Ö˰¦¾…é¸ {µß†9 Án×];à6 ­AÖÀÞUÝÕ}ÊìƒqZ@è§ÿËZlžX¿«GhŽä仚̄?«d:ùYÍ@ðãPAr¿(|ÂwµGꪻÃÃ#_ÖöŸ~Y¹…/kßÏ‹ßÎüÏßÏ^ƒñendstream endobj 371 0 obj 1867 endobj 374 0 obj <> stream xœµWMoã6½ý:fšËáð³E ´Ø=ôÐfm¹(¶ÒhKެÄÍ¿ï"éÉI›E€ ‡ófÞ<î Πàþ'þ]®g÷³û‚-ýY®‹_³÷—NŽ9-´,7³áŽF‘]‹õìí»ÅgòµîÈ× f­ ÿÅjvñwÁ¤V.š.«›ª«šeå)d\sƒ!¤1…fΠU>$RÊʇdà¬D|—ñr<ôœ VhSÌ|¯ºè¬ s¨Æ» é0‹èR:×Û>JRp­å²FCáÛïerD®“qµ‹Vº“«tO€­™1’ãý*ø)ªEª8ßÓ/9Uã9KÿÉb.œ­Â‘ÕvÙÕ›¾n›†SÇ]’9к˜ÓE ?´¸­¦nÀ´†ÔÅ?»¶o½›°Ì@†²lï.«ÇzKNݧ¡q)ÆÍC³ì£§¤îhHíªþ¡k¶þ*¦¹M5è‡ÜÀ2”˜š²®›6”ÕC· ¢y“SD¦¤ûc ´DÈî“F˸„„¨H PYMëØY…25ì:r… “ÛÚE¦[%ÓåíM´)©ä&s8%s´‚¡sÔðEáѶêÃÃp—ocCŅ»+%1$ €0ª †P‰c ?: o˜Q£®"2mÚ—ìS(¤b¬Î7îÛ|BFàšP["£!Òhxå]éi1AÚÄr‘s¨¶‘ªÞä9­ÑAÂäùMU¶ƒïcyKgy–ŒÂ§<$¢?‰]MÝG^H—ê7ÿ9D’ 0Gª›~žáåâç8ŽÍǧ&æ"ImìËÿΠ!ÒÙ‡23çá„^;&9æÊÿ46€¾º¸z笤éщ‘?N£Qšy†¡ùBå0Ï*§’pó¢r #™q€;N€ ^µÇR‚nBE¤gîéÄÑ@¨,ë2Nµ•&Ù>ºB…æâ°!_ikGi(«³Â}µxøb¤`WCW©FyJ2j I«E1Fh!]=¼y9£×a*ÑóI’áÕõ§ÜnÛHSðˆG겯VQ…Šté®îoƒU0mðTÇ)?‘˰l›¦ZÆ(RSDzP¬êíæ®Œt zOC/¨·"™ÎÈ XJ—H8–A1’ÁË6%ÇUJ®íÿ®›Ux ¨„¨õvÓCEœÑ“Š7V@’ }^2.Û˜í.R¾”éÙ âÇEÊâCWîÊë»É‰žÕ ä›)àó‚ÞœQʸ‡äö ™j}Fþ¦ |‘ü)/ÉŸÌKeäé2Mæ˜[’öE”'Ü:Y½)«&•Ê+Å´ü=?z];”“ÞlyÅŠNÔ„}>)MáÙíRþ»33GgHZ3ž9ÍÜǸÕPdc]jYÕ /z߂ȋ%ÑMö҃ÄÐÑBüöC÷Ì{Ú tCr!”&^ƒxåÒ±Ÿ;ú¨›_ÿ¦þV{ÇöU{Ç!ê4u´)È4:7uÄ¢ß7[:€òT|Ä.A»½> stream xœÅXKoÛF¾ ý¼5¢íξ7A äQ ‡^b A äBKtÄ@¦ŠŠ« ?¾³OQ"e«mÚÂ@ ofgçñÍ73ü\Pu?ñ÷ünòyò¹–~ÍïŠW³ÉWZŠXÍ,f·“p Ë(´B³»É“ùÓÙ'”7¼/?õrTS´Fp]Ì“'Ú(¬úšX®ÇœÌK'"‰áܪxt³íüEà„2jâi9ïâ¡Fõáì—2 rª’àâ>žâ›T¦w*w¤ˆÖD<úµ[x9I¨²ñ ¬…gøˆ–Û«˜Îra‰0¢è{™¡dº}UÝVmÕÌýcÍW49‚JËú*Áj"³‘ܦ¡ VJæÃ+¨Ä°bʬóIza|™0o§ÐD£dÐñÎXB©€ì{³X·WÕª*·Õ˜_S‰‘ P¿&J)æoÍœ(þ.§ˆí7ÑgÍò{Õöy4 *UÜxÏ8Úˆ`˜\C¹—ýR®¼C Í‘y×7ÏëÒ”H€ôÀ®©}æ'¦HOòŠÊ’`Ýt£Þ ”óÎ!儯÷M4EhðÔ•¿ŸqÖxo,5ú¼7M¿ Ü¤£‡GG>xòá©w[Fs¼÷s Bûò¦ÚÎÛzÓÕëæùȘ ”*¦è†å4X?[ŽbF &Då΂éø1Lç*!æv×Ì]¦ÔÕsÒÓVÝ®m¶î?¸$¨L…ÂÅ¿TŒ—&)ÞÝÅÊ—\¤ôÝD.¡Lg跱ʈÃË«²«|ís,!Çl1ý먓1'Ö€aIì‹wÑ­Œéåûì 5öðV çTþõm4Œë\þ]H  4Oáð43åËC4u´ X¨ÐmÕz[@£Ôf—Éa˜F1”tx‘yÜÖÊŠäãÛ]Õî_UÛîõ®Ý®Ûgþe HÝ—\º®¿VþŠE^@4^r¥«7›U¸5e˜*Š€˜:^AÊ}ôö¬^!;d\›¨¾1Õ=LïÂñ|Xô×ËrS½^•[% DC&§1Ê{Ó–÷åMpÓË,Si~xþªšweó1È£v„#¿X~ʃ+kŠa.ñ3`Å{j\·œ3úµ,$.§–s$%éârQ~ö²á4“Ìo8bÛ.à"Óð³ÝLÁÿ`÷ æð7QùoׂÕùPÜÄúz:Ò‰O¡ê‡ÆB&àûe=_^ÏÛª mHa³J·Ë¶*³É‹˜:œ++<šº¿ioºâ¬e9~Y;OİÃX-.pBa3T©p(|{'B%?hnùÿ$êX«ÿšÁ©­\õóÖŽ” –,6ƒ£2yÙ~ÜݽB!…æå§]ãF[°zi#/1Ü30ÇCû¢ìÊn¿é1u«‘ †ó—Aúc(î"…q8¡›ÕˆtR¾0Œ­Ä¿Œ¼4¶¡Õ»V‡ q¬Ãptfü¸ŽNg_ãFe›t\‡È£†L“Õ¼þ® %¨‰É˜?…É+ŽhWÌnY†mSÅs&öÑt½‹y·Üô*ÝJgfº[7GÙ*³0®±Û4#ãrxØcë†D8Ì&ñßÜ‘"¸æÛô¼1ÄæeÇUŒd‚ì&Çòd¡D›¼$0x?‘ÙóÑg*ÄFB˳qi3KED)š¿ÀôxK!yZÑ›"mj–¿®Ü†±R'ëÓP1Ø:9Q:×gÜ­˜[mÒË‹ qvW7U¬?!òŸL‹­8Ë€Tƒ{`z}ë?¤1`òxïMtÝÄú3:—d¯» <røvÕ[ÃîTúeˆ„üÁíà—%˜ƒ¿\É2)ñ+äPšå]X nz~}³BU®OÕ<¢8uìSÀ¶‹$kY~z»Ûl’éZeƒÚÈ}ÈÒ‚Rq¬´ÿb:Sù{U´×%ƒË½9^Ùõv³ ã€ì/íû$ðdIJl¾Ú°aa;O’ˆ_ŒŸgÅÛ‰ûùü‚:endstream endobj 379 0 obj 1623 endobj 382 0 obj <> stream xœÅZÛŽ$G}öúa¤™rÞ/XBÚ‹–¸È»#a ªé®©¥§«]Õ½³k!¹üü€_x„ÿ#òY·îž^!K¶\“]qâĉÈürA º îŸøßåýÅ—_.¨–þ³¼_<»¾øø¥e [XÅ”X\¿¾?  KZÂs¹¸¾¿øH]¿µÆÖZVÃ`ýõêâ£/ÜÊ ¡¤^V¯«¶Ú,+÷'É ¢ˆŠ¢ ¯Ôz¡ «¹‘î•L–Fpí×.ãÇyå+¨aJ/®k󮁻¿X–+Æã·Ÿzs ùMæÜt;ÿC F2bâÓr¹‹5¼><ûY™r¢ÒÃÕC| ß$2}Ço[Zšþ|·òë$ø"y‰ZK/á_bÎÇW\ø?±¸bÖ½[úŸ¼¨ºe[owu³ùqøÕ0ŠL–*µ¸‚!ƒk®ïª¹/0R(ei?ЦàR¢}Ÿï«öý³ªÛ½ª¿ªæ¾¦aÜ$§½Þo–Î0·’[›ø‡¶ÚíÛM矋B#âvÁ0ª ®qõM aýÙí¢ó4Gƒ›6á.-[®›..å¢l’ó»h?µÑ2}¼I¿'„N ’4-ì¶î™uP°É5Õ²~Rùˆp#¬÷¥Â=f-ÓFö¤—z`þ4ꆄ¨Sêž2¿öù¾íšöÕ]é-ìdŠè>ÖÆ‘„'¿\†¯Kù¹»«}8¨)´ei£á™-¸²bìUHfÓvÖe{›-0tègS0&4¾¢ôKo€Íôâe¹‰®§ð#±wtA‰â ¶^¿÷odˆ¿UÝm×¥û§$mÖ/…¼ —†ÐAì†(ಛZ.§›'4 XU~1$&³œ> &°V«1Æ—˜ ÞJ?$¸Ã‡ŸsãÿôpW/#|¥éÝw¯¼!m‚šI6A›bGÑ‘©ðº^W cÌ`êlˆ)"˜|ƬÖ3nÎëc ñч’ò¡Äò÷ö¼B(‘´òuÙíàÞ·(›Xýí|ûjWo·Ù½ J×âLÿ:Àzʆäü >a‘}O Cå”ݬƇ=nT‚ýÌ Pdœ²À¢‡ülÇÈŠa÷/M!$š9p4ÄO#™?ÞѬ°kÖwA•"vZ¤¬PÈ5­'* ÊÛ¡ì[b‘åË›µÿ5ƒzÄP‡Ô›U½,aã!ª’ÂÆé8ªé«„#øVUW·Ñ~cÒ®»Lð­ÁÎñ"1ÈOçQDTS“6WnVóšò˜Šcù ÏŒ“‚ĤSp÷vn˜ _ bi&A!¬=öµ\®¸â€¼Q¦FÏ€'Lf í4š®«oB…ãna§{Ì~+›Xô”Å¥~“ðq’eØr]v]Ô& GñZµª¶»»„'i14O7‘© K¯ýl³Ýï~µ ö Ð}9ø ÛÊͦÙÅïQŠ!8Ì.€DÓ¾‹$N§(]Ê.y •Q2ƒ¸V.rÃ:{~R';S€Y‚:7§¤‘l¨ugrÞŸòú»J)©µ|>CµHÏÊ9K V#<+W¿(w^²ìB&+îæ¬€º…Ѷá«ÐÉpL·¶êöë]ç ý(|ÿ÷˜xWb>Öã¸ðÌ™§!ÙPJö[Ð\Ðû(´0÷8°g=& ˆ'V×#Mš¡÷¹ë/PêôZ×±ÚôWÆ/cð©ô1(uëî2â\ 3a}C“6pÒBI5z)$.·$—D‚S}¿#il³*Ïb ò˜`Fà÷ áÔ4%;ÅLúˆš¥Sb†nMléOvv–b6QìÀw¦iÕª@‹r"2‰ #qáùúAæN{X˜ rK:-Lؤ~$÷òdaRÄL¿Ê6DGٺ欎û•IäŽ*W&É‘z•‰ÂÖiñg¯ã{© ù1ƒ¬ÑÉóÃre\%gŒêšZ`‚\#,}‹È}sÌ[D¨ãˆH‰¹ƒU|Žý|; >ˆëÿ˜5èHõìL:ÇØœj± :: ÅmÖBæxpŽ¡9HN·hÊÐz™¶Hóާ)4:O¡¤90‡Rºßk]ÆtÎ<$M2Enà.#x)aSäôLíup”ô”NŸ¥™šgi]KÄ‘=»Gð5jPl š9í ‚fŸ¨;-š³¡õh' $)¶1ÞóZ%Øäi"ù¨ïŸµSŒ·ú¨‘ŠáXÞ‰Ù”}\w¡’Ó¸»€\!B'=N¡9§<™˜ÙR+,‘'IÜä‰d—èæœh æWŸÄëØÔ¬Üs Ú fÐ$qÎQ˜”©Ê3 ô¸ç œ>Öà,ŽÄ¹Áíö:‰ KäpÅ'rmĨÍ;—è0¬#ÿM.ÌP_¿jî«äUÆRÌŽ\ƒÇ€x(R¹^7‘?ÅÜ|™-5*8?\BÌ-ÌÒOvº$}I_änbáå‹l1j£e”àXé°ÅEä#"åHºÍŒ2¤âi*Â4j6(@Z™ ûUëŠKáÆçÃÞtÛ6SP½­W> –ZA‹Ì.Bx~>®cªE¢¤œæi#©s³þSv€b|¿‹ìÁòÍC*m¢œMFŽà5‹ÆWä’^¶©TP•µár·/ã1w qvòªXi® X˜¸Í£Ïô5¨Ûìj‚…;ŒŠà|’)ô³’ZrtO‹@¸¡U’r~üyOÚúÇ.@›LÏÌp-“cyj'm%q9AüîÏ >`¢uÀRÄŠ_A7¸’@÷[‡[‚g®Ý]³_¯bYR\;œÚ¶m«mg£Â5Ø2GƒÃ$éiõä^Ô÷§À!$f,™ø4¹ÁCÜ¥§\•J‰P|Fÿ{Ãö4s­&d·ßn£kuVHM›æDâ)†ÇK¢úŒðfS²ûøé‚:.J·ÜúˆI/PòÞýùwïÿá­$þþ_/¶M÷›Ë7_¯«?ýçŸ?ضo¾þã÷ß|sÿ·7ßüå÷«¿þ=ðƒ§óŸ;Þ/n¢Ä­?„*\D²&ÿ" >•ùáùº*Û§mU†A•)ˆâöÄò_'1 ]ß‹ö0ÇêWÔ‚€†¨\AÝQJÑPB:+‘ãý~cØ;r«ºxï¹s{^·khÒ¤;×4”Ò·å:‚ϼñnÏ¿Hàs~¿hˇ$"ÜÌ"Û\ý$Už_õ²ZîÊÍmXï މæÖß4Í:ÊLZyaîe÷›:´Lçi'{Ü9Üémù0<àÆ(6çm,}9ÐÉÜ_•Pt‡,§XÞ§AT),gå»rZÇš)WL†A™z2 (k¨t㺫w,û6ª|ífÞé ŸD±¯Á•šÐ‰×¼Ó hQ1’L‚äöä“y·áfúC·ôÖ §RÖÝV›ª„=AóM(÷ú_sÆàžŒÇ…¯”g:7›4ßÁ r•Ð~øFó\±*óy)ì#½‰†*"g,’'g˜óžc zg:'í®¼õŠÍÔmký·õÛyV‚X-ÜñI?¿¿ã{e4Ï[gÚ£«N¨(_›|Õ§7΃|¢xŒ½-ëÄï’à­¢^{¨¯"§Á’¿ÚP ÷ëpyOBå™ §b‚žÕUo‚•±zrRãQ§£Ä.s³³lÚU½¹õ”åŽmòð° ŠÕ]3î¸C%ñx mÚõª†BÑ¡Zw‚ÓæYùî.6BËñ!Òà‹‡öùÃ."™à¸ê¦\Ʋ¯rÙÿÃmÛì7éòH>êÙÖïª$\Œ4£c3æF&/½/·aàdöNáÎs=žEK·¿IVäáè¡]\ÿk×OüŸ:Þ´`UÅW Ž|\}ðX¿þW ©BëÜ™ªîæ’¾Ëò óùºÞ>{ÿü®^¯ÚPd&ž”Ø™s:ŸÅQÔ¡|w÷¡^Ũ[wÂe -øªj›Ëè.žG¦AÀùê–ŸÍüº¹u¹ŒíhwMôxt%¦§—\`p¡c‹»w“¤<ŽŽsq# kñªíÈ&ŸÝ7Ɇ«é¸ôC.cÜ×é&Ïé}à MÏÞñY~NIE>÷»«êÛ”6§ð.EñCüÀ¯¡Ê©I´˜ «l&î~Ïäçùê@?Zܵal,jÄxÄÒ÷ÜÑXÁ8A¹uz«Ã°A¤!pãäìAÔ)ªŠ[†'âqñcÈ~½QŠU °ŸD”!S|KïÊtû’q40–B-)&ɪz²‰‘M"qJp’ŠælfٮѦÇ"Ýö»SÁ]]Î7”ê8Ü2Ðøò*RÛÂèÑTæðqe²wЊ*EY&ênòyÚ£PîšáiAÝP8¹²N÷Üù"rÚ»§ßé"󹸱ˆÐî]GÍÇ"”L]+ò-…ð€WOàArÓ}*æã¢à™ê—Í‹pòáÆ·„†-Ð7JÇ7©åŸ¨L7#ÅhÄ IR2âÜO¯Ÿ_¸þ æRendstream endobj 383 0 obj 3584 endobj 388 0 obj <> stream xœ½ZYÜÆ~_øGÌ[l@C÷}8@Y6¶ãÈ dè…;ÃÝe‘…áܪ¸tÙþ‡”„WËÝ5lÖþ^¦9QéÃýǸ g™Î©Ü’*´&TÄ¥_†½ÿNDÙ¸F­¥/à?"Jn7¶°Š)á$¶†Óøé…ÿ1+„’é×o««ª«š?L‚øŠ¤KÑ‚†--oI­.$ )ü7[nHÁ˜Úl™uWþo»¶ñŠBqÜu¨š¨ÉDRÀÐû5Zp™®Ú^Å%i(þöÆ‹IuÁµM¿ýX7ûÖ-3Y(ÐEZö_P½J²–]µ öNç4í÷´B'+y—e¹)›ëj_¸?pSÐFüÛ&j”š¯jÕ›”жIìʾzá—asšVkU[pA³ñ?£¥…T2é¤?u•Wu+šÖë>^4šDºE gi‹&èÄ22]¡í’c¤ãoÛ «¹?m¹2oÞ‚e`•ù¯Â2@j”µZõã\7y_õ!Þ\4Hð[(a™ú)5jfM —Œt]5UW•~GhÚâ*^R€ß¡6ºêºn› Qð}‰½Šj3ó>R(Š;ìðŒƒÿ“ …‘Œá÷åÕ!Hbø1ò."’a?Ô}}öve•žZŒ‚s)öÐΗ¬ÓèZus‚V³‚l h/4”u4È-u²KüœR4ré– ¸J_]–»eÌÿOd¬à ÜàdE¼ iºÇ›¤{Rǵ»,„&:ѸÌ[ƒïÞfÛÕWþç pXØ™äÄ ” -À•rn¢w;Á­Nwßʾ'Á}0¼ûµH‚ûIN3ˆOÃ?šÃÝ«´Ç¹:5»¡iP[j‘m÷1â8ϰ‰A®%FÖ*$Õ]JF–"Ê@ z;0Z0‚1CÖ8Þlõ {ü÷›Žžä®Žý â4ûùñ-ø$܈ ‰Iëý©þ° È €Ÿ€ø¿)1uëBŒLqÚá$*ahƒe(˜jlVHk’³]xÓ¾Œú’ö¤™ÝR w{|s ÿª<¬ç™¯[Ïä·)*e¸•lfFcÎ~DÏ–‹äm7eMµÆ4ŽÖ’"ÜWß$€…&,©d;¯»öÔ$8™Í õ!&x§(6ó+wÁb¦&œf+°‡±S”‚ †tÓ±À­â?B²J‹šÏ•Ù¬¹ã¡lªímÙÿéMÌœK¥¿!½Ƈ|ùpˆÔÐpô „¥§Q…}zª@%î÷úb×£š!G$ùïÖaŽK޹%áFõd4nú&’5«G1€~Ž>Ío$ÁýL&Ág&{Ì)æ*p9;s‚ßÚŸº2ÒAè$À¸$&”2ÒŒEA€pôܘv„è ù´Ûç0þ¡ˆÃåä˜Ç¨¿s²Ô_£FÔÃõQæ?ªBC}ˆ¨P‚ºxŒ¨@…–P¡ ¾yÜ1åj»XÚdÌX8'iyÌX8{”°Œ á3 1 !`•°LäëR•ïß2€§P )À7¬q‘`P²`‘Ý“œ-/¢•E_~І9Çï\Šó·°®Ù³ÿ»CÑUnG%0 êŠnÈ¿ R¥gZ1CÙ€wŒÌ]3LuUÿCT,9f €†9+sиóeU oÊCÌk&{ðHëïæ÷‘ ¹¬Ìù˜ГY4Êöo)2.<åk‚UÕëW˵ðÝ–2oæjSâà9èãâ÷¶n|œsÀq‹dmï‹·ãüÚÕƒ}íûSSád9Ÿ;µQÇÍ#jó&E½Ñç(â«©-hMPýÕµ7vzAÖòv~Ϥ˓´íúe$hû»&î ŽÊO÷¸9”ÄÂ¥ÚàçjêÒñÊbç¥ïv ™÷U?$¸Æp½Þ-/?Fu‚¥8#ã-ÒSþ5˜ÆBЊ™C£%13‰û¿‹yLr0ã² K¿j7fÔÔn/»ëÓm`BCDÔB¹â®pÙ´D,Zä×8°éR¿À{ú‚ªBëEå7!qî º)S Úµ=aÓKt†Bë´¾ÞÝ#²Ä²öÙ/õä!ðe².˜ÆdP¬_R.±w½Í‰Á×î@0;~¡Ú/CäûîçÔ× sU–]ÿÔBAq™6R.($(·¡@!Tb—ó"X¡¢H*û*-IgTŸÊÝp¸‹ÅÓù$ì§² Í#ñs&TÅ®†í=º®xîšZvæ91´×]GüoÔÞ·§nw7ÇЊF2%hYõ “ÔpÌu%°’ð}¨Y<1¬Ž?3[ µØ~„ô×GŠgóè`EÓkmÐ@”4P-$ÿím*2(w—®ºn(æQØi„8õ2Qð> ±¶N‘Å YÕj#šö…=ÑÁ@ê^uÛCu5Äj€pBñú]ºÐܵĬî„@û=â?~µÊ{Ôh óÃ#‡ð±¶ù©êw]}tòÚžœÉ©ROm3r‰†_k3¶i€–®}w_†qµ4C¼˜õÁkßëNÁzÒQ?½Ð'(à‘vvl:ç#FÌu“´$‚ÍíÇQXU:;Ò˜eéMòÄó¹¢¥¾¢k˜ÏúÑ(5ÐÊø¢ ™‘")Oà°,ş̌2d?D Ýi,XL†ªÜ¼ñk*1ü­ŸjM›m`I/#–å°/o«( ¥h˜® Ú¦@ѪCD9ŽFÍH+ÉiÃ/@9…`µ³ü^óGJr¡4ªç–äP†2TB*ÉýÑ%ÑYw2׿Õ¿ø>Ë_\q¶Èc·ñàN˜™«]Îa˜;í†"+ž@˜(æa¾7ŸÜ)Èÿy${ÙïN]8ºr|Å„‰ÏóA ]Ω¹Ä™ÜZZÃ&=ÏF› õŒ³x(&†ÓÃ3<È<¦ö3¼lÑ©=ÑÃhfWiÖMXž›M©G½ßÓÐ×û*±.±Ò¨¡åŠ2\“´ìêßBƒÉóiEeç^ØGGá™+<^"8YÁå—FCÀû1õEÔ  £SCÏQQ¦¨’ G•ÉLZA,¦†J¾e\;*ýb×ëÜö$ñoš~¨Ê(“…ŠNÏ{Áž c~l‡6- =j_GêfõÛ`C@=Jˆ¯>¦i°u‰fËê:\«_¸«`9Fä9é·Í>ʪRÇsjÊÆý걂…Ëee´4 "ì´S[â°2`òJDç p4õ‰™ÎñPZЙa=“«ñ¾>Ä×ì‹Gö½;á’ )s0)… fIû¨Ò ¦ŒÞ½Dƒ«UgƒG0OÂ7ñCÜM¤ :ÄÇ›*hÚ"žÂï¯üÁá§ïï Þø‰fzRµXN÷9ŽNó<‚¬¦Õ}9˜y–;Å*ÂÈ’T™\)à“À"º?ÄÍt€ îÏ 6*ñ3g£¢¡…PcC'È2H¼/O‰s©œœšv&\Çù3MÎ8ŽŸmrEEPd6G‡9'\)ó¼{JÊñ{˜ßÚxîÚxìá«@²Ú³Ôýä+…ËXþlíáËÂi¨‘YÚ¡ŠÄª„Ü¿Á¼$% ãÒLàÜ“•h}uUBᛲ¸§º {–éiPS"–.8ê÷aí§ÆtSyuoŠF.÷*å?Ÿoþyæþýi5Sendstream endobj 389 0 obj 3367 endobj 392 0 obj <> stream xœ½ZYoÇ~gü#ö-–Áõ}ÄHÙq ’HD !ÀpwH޵»³š™ÉüúT_Õs-)ÉJ À„{{ºëøªê«šù°"]÷/þÝì/>\|XQ¿–þlö«®.^¾¶le «˜««›‹ð]Y²ÒÖåêjñ­`/®~½ÆŽöZVÃ`ÿÕöâÛ·n e…PÒÆ¥×ÕMÕV‡Må~’¼ Ѝø-h8Rë•*¬æFº#9ˆ,Ý‘µFpí÷nâå|¸sÍ j˜Ò«õhï»6nVÃͺ°\1ï~åÅ) ç6‰sÝõþA B2bâj¹é㢆ãÃÚ_Ê´‘•·÷qî$2ÝãÕV…Ö„¦í·~Ÿ[$+Qké%üGÉÇþXs) "@MfÝÙÒ?ruWwn7“…¦„ƃnN‡M_7÷‹ …:]{ꪰβ*íï类Zr,3…Ð&mûóK‚1^H…{6Íþè/à…°°!¬6‡Ê ÃÀEÂ&}ûîwqÑ.&²_záe!¤Hf<îÊCµÞ—Ý{ÿ£4…¶"¡®;]{ƒŠBY’»¯Û&ÚGuÓòzß$+(<~[ùc×\ë‚r¶ZSê´dþÇÛ¶<ÞÕ›n]=xýÀÚàMwj«Î?ÎY¡³½7»ú¸nÚú¶Ž Y@L`+¶à\Éá#NÉÂKC¥*± ì"ƒÛ—ÝE ¥P(‡¦àR"Â~lŽÑâDÒîÇ8».¹–ëBglQÅmA•¡Š\ "e¸`À’?ºúp»óW1ˆDÂÓÖëºÑ ´¹Ûï…Ð*-77~+-¤ä,Ø/jЖ¦C;¯«3¸FÈU›ú›ÊŒ´4­wÍ© Ù Ö•IwµÕ¦/“È-üÌñ¶0R¤}gâœÎDrzßD+*.’J!(¨‹gž º­o£Ò|¹Èc§†%ŒMüKœ±ÓömÕõEŒXÍU.†Èf9KblÛ2&ÊXÂÂ}ÈÀ–X™´-¯w˜ Á‡iç> –МwN]ƒ‚¢¦‚«9¡xWFqÕ Ž½VP3•I«â±Pæ  Ó•û*&,Æ8mLK7}ª³pMŠ£SX4…ÔX¼Uô8–±ôø¡I[ )>?S¨¶j®LNeCe$¸­Žý÷&‡"KP¢Ÿ“㙡S Žý|ÃýBcžoðiûuaÇR{À¨l£Ü€F(kL˾Œ’š¼X.Å¿]4*øC¹ý[ÙobÕB&Ý-åëP!SôTmÛ´Qçøx„tN7i¹)DnQá¢Fâ3(ä.N‘Ì,@Í&XC,p(fŒ…@ÞÀPÙì³]”‹ ä‹ý]yÞ£°6¦_Œ¢7X´ä„dâÏ—K8€œ†Lš\†p"Þ“[ïï€Ã{·ñRtt”@%Ð KjåH¦ +ŽOñHjQY,ñœaО—ü‹rýeäJ#¥9LÌj3¦Åµ1I›rwZdLà % òþA0q›k_Ž¥5¸ªÓ»Ÿ~å±þ˜R$EÃTÇ®l*†®š*1vÝW¡‚’ QnšvßE«@Ã¥†æ›ïX?ìËcLJÈ‹[vq†È ]Zè–€£°y(»“ŒsúÔ©Sþ!fš%Éÿˆ—LÈ{lïÁA`#Óƒš‹½Q¢dC¬võ…›¡ÎO3W'ZNXn ê³d…Çð´dDM9¦Ïuxy&½´ ÛǶºšr=0¼ŒÜŸûhÍxZCî‰PÊ)·1®Õg5Õmۜۗץ/O „B:÷>üèïè ü@TíºèncmR >W?& [¿Ü" ”âÉ,g˜2…2Aün ··µ(„É­ýÇ`l( ˆÂª}Ä\ زTÎ>"•YŠªåªÁ®¡ 1ª 6Uí&>O –¬MèÓ\;ÌsÉ*ëC¢¼–èQtM öë‹"¥*‹ïÁ*¨s¢— &Ôâ‰Áácy÷ã :uâ'X—X>µ®‚xÌ,èP!Ì̺ª§‹±u]|±‰q¡ôg7>k\ŠÉ9Ú–¦gQ«ÅĶґ.9¶--€ž$ÉÉ»óÅ9™…çϬ嚸$Öò]É3ˆÇAAÉR¾áÂ>¥oLÃ~®ëëãq— µÍ…z0OZNæn¬ÐñÍn·Fc,æÒÇ]jTÝäl2Ä ¦˜Ð1úS½ÛýýXB´½ Bn—Ú‚KòÜJìRGâ &7ûîÍŽu2ÊHÝN»0i—Ì Ñ¢1¥€šÓã'sMGóêCÙ'ö³ù]ï=¾Ö‰ñ(a§£ŠþÁ8%–@ufæîâ ;”³³<É寘¹CéÊÅgÌýâºõÈî8þlý‡ˆ šG†!:ÆkKûÞ¾ 4Î@÷K;O‡¿×ÐPÅ·@B…ÐçµéP…©ûÿ©Î®Ž)Þ¥§®I:Î@Á,s4<èÆ'1ݽyá_úNž†?ìÝ‹H‘ Ø!îûÞ»„6W—ºÑÚÈ{^8ÇQÐEI¸Ü dÙ²5ËøìÈìß/s3˜‰}_µ·§}HÕp=§z1U¯Ý[5«œI™{ÏÁcòq*/Õé&5˜ÂÞ±öaø:FÔEê#ò(—DƒÓË®/Û>&Y‘§ý±¢q!j>ª×ƒ[lŸ€ÂæÙb[íÊ8Þòã¸<Þ ÕúyÌÍØ_6{a6º©¿k«jÝüv³óO(MçþH Þç2’‡z @ÓÕXÔ!"¿i›}4 5lÒr­y–Ô¿Ø C•šF¢òU{™š‚SlìCÁ‰— ÚAïNÇž˜L«nÁ~3þbqzðÝœMÁY†ª!î›O|¤¥sì×cNq:¥ÖÚ{-—‘Ö‚©Èôe9ó†$U«‡>²]‹õ¾åf Y*ÌœnÏ)ÈsL¾`­švâ£k†‘¥¤Ð_ æe´×f<ÁXsg:ÆÇ!ˆ#°þg†CwF!™»é§ñãj¯ŒW†ò¤2Hýwó@Š »s²•ñÃ(Ïûu.K‚ úiÈI¾Ü€|ÆûŒs’Ëð5Â@ðÛÍ9ɹørÉ&«M–ûW4†Ê9  ¬ø·ì#Ü,Šo ŸÇÀV’'ŠK·ŸŽÇœ/ªv½«núcwošöPùù†Ÿ.MËÃ’®uØ ëxÓžš)¦=*….2#É |`v_oñ%N 2,¥BÞUõmšTÙ<„ë‡W'CåüÞàó®}ð&{"ØÁÙ’È/p%Úׇøjšƒ•ø6 Úè1Â|Uusé=Óø½4T–åäf}TÙÀåIôÑù V7èU’€ŸÚ¢/wgkAÜ›c:n϶e_öÇ”ÊíÙr£ùûæm°17A¬ãÖõõ0qJ÷Ž›ÊïæçÖ‡ôaΠá>¿ï§«Õ?/Ü¿ÿ^T—vendstream endobj 393 0 obj 3350 endobj 396 0 obj <> stream xœÍZÉn$ǽÓó}ÉìšÜ>È 0`[æA^JÝE²F½MUQʰ¿Ý‘•‘‘µu“4É0c×dçË‹/óÓŠ|ÅÂø÷fõéêÓŠ÷ßÒ_›ýê7W¾³ve o¥Ó«›»«ø¾ò¢œ¯¬9”_Ýì¯Þo¾¸ùãŽ_÷ã˜Z­a wJÚÕÍöêýmƒƒÍp°-¼4BÂaÌ×aˆ.œ”Þà§Ú®ÿ!—Ìá×rÓáG ÓÇo.Ó@ÉL¸}¯°&Ói*|2…µŒ+üô×nÛÓ3¿qïù5ü¡pç~å o„QaçÊÊIŽC¿ï, etúõwÕ]ÕT‡M¿˜†í–Å §ôb8%÷¶Ð´I%—–]+¦Áþbµ>I÷c¿©ÚMSŸºúxø*üJ¨ÂscVk8—`¶~ß4eÿ¶^¥ež¾n6K›‘¼’“ãO¹*¸:ý´E“YÁ’ûa¾0ŒÛtÚ¶>Üïz+WxÇ’Ã6u³yÜEÿH[CN?&O*ëÒªÝ.pSî¿)^®(šÍu?? ‘•æ/Û%  £h¿çÒ.Z¢ÓHù:«(—¶²Ÿ\Á¸¦%w]}ŠfYC ÂJpK‰¹yLÁ¬[~âœX¶+” •À:mQy—Œöm¹Á:GAû7ê­Õ*ÿ3Ò%¨Ž‡„ —ä…ö}ði¾jS¿«z7H¼™ŒôCÌt!µKë<Ç¥wÚ ƒÉŠs‘­©6]™âI‰ÂØ|ÎèoîÃBÉ0=NÈB{ÁÒ§§˜ýžyŽsŒ I'œ¡Ù`‘h7 þeV7ÆZÞû¦:` 0#ÒÀ®j¢w-¤µ;÷x‡>äy_]œ˜&*°˜<à¯Å4¼'¼êƒ ­ÐÚ–1=õ–ãš_\íÂ9 ¤id>€"§¦ädrXŸ¡ &¡- ÃÀ’\/M’÷µ/œ²é×Ñ€pÞŠKSîëC >#|ø\õvEް¹l0'­)4C·Ié^âÆ’7·¸3ŽN–«¤!©·Ý¦²ÆÎÜ@éI[Õ÷x Ï=™±Ü°wEéô÷øÊs*{ǶîêŸúŸËž `)nóê!!ðœÜòtÎú°Üé*„qçÈ2›ãã!yCÑW§Íîˆxdev2I½Oþñ©Žá è ‘Khz …îÑi1ñ>øˆ”ÆQʪûÏ µMy«†g…+)åÒY£289«1DðHú¼æH€@Ž›Ñ‘ œ×³4í_î0s¡ÒÏ3WH—>îËûCÝ=n#.zà@¹^Üa((INè(ÐLÑØŒëÌ$ûÜ7U‰ !­Í€U0t¤ Þ" C'(ˆt5v¶‚Ùªöz©0ƒB ~±0/Öå`!3Çéü¡b2)^œ¹ð+ f´¹®y<„8自lŠ,ØEˆÌ JÐ¥ØàVNÌÄx‘rÍÓÇÁLZÈ`? sêRð§*xfV ¸UÙ½ /9áe®ã†¤¼hÒK"hE(ìÁõŒÔT…H^bÕ³ý÷ߣ§ÂxεÛ÷_C4áwàLiÿú|ý|ÝÃÞuhÝ¿o¿¸îƒ”Ç¿üÿ%¿¬-@¬Ò"®.1ÌrŠpAxlêûúÖæù{Ê)̼ &¸\… ¶4™?µ4Drr……íO«è4³†¾êh`úiB“Â..ùS(Ð^ÐÀ:R î†ý̈ØA–jŠÒTGU‡1±c™cÄ“@fZ èZ œ«Åò(b/íøÒâçãKð B÷ØKŽ»PÁ‡ »>€Q#Jû “ÎF(ÀHÈ­‘/!Dc@“øüñ4üÄ e›dè7¥HÜ)T(¨Æþ/[E¾0€û<å³ôSHÉ<ñîgYP`š&÷ÿ)Š×&wÚ 5’¡iã´ÜÐé¹ë:çófêWA¥hÇQ%s†–——l¸ü v½ŠâÅ>çðÞÌapšh+h3Û$šÁ2§F€É-î±ÙÖ‡ºš<¶A"!âȿؘ8$‡ÖФÀ¸kÊMन((pæB}㞯M$‡™¬y|ìÂÚ 1¢¾Ã³«`¹ôñã8Mß:|“ƒ]æø1¬ÇÈ‹Ubç,«†çÕ‚ðe~V¨§„ëýÆ_)q1EºÎ”"©,¼Gb…µÔ„˜i‘±ø,ùnއ¶n»D’t‘›œH­×ЦBù±/ËÝÍÝC²×iÁoq+AêÈ&¤hY ¶§‡#"¦êu SVÍ)‘IVèí“àªBÑ¢”¸éJTò%°8G{×÷Ê2”ê !IhBÍ<5Ìû)Oý<òÅ*¨Ž:ÒÌci†NÎ+ŠŒêÓ#"L#D ¤˜ŠÈî郈¾Þí ûêŒ[oR•uTQ.V2^˜tãHæ†:/BÒp‚£2~W€2«KŸD¯ß'ã?G¦¸Up"_òÀzÈM!\Ó@´$…áò„‚Ó ËÓiWSPœ"4Ç…&m¹¯üµÊêu‹.vYB4ëõèàÂQ­CDÞ’²HàúU‚–ͱiª(„+"M½È1Ã+ÔRFNÉ⇺Ø]•8"#ä/ü>Æ÷ÜÏ-©Õ¼4æ\LÍ͸¥ 3‹8ôG†¦Qä5—¡)ª7À0ßM”oŒñ/–×ÿùÛßH¿IËg0ŸE¢,ÐÙô}ér-f`o,‚¸óc…'üzÙ¤Fg‘ãP[;Wg[¯~-jϬ0šåÎþQÁJ¼öG¤W>‹?ÕS yº-;‚(ʧoÚƒ~qôZç¹íª=fì ‚)½„wócAVŒîd©æº|½w;U0É£z`þ`ÙK÷Y1S¯1²Àôj¶°ÈE` ^Mo”  Eåe›G‹$&è³Z“ÚØ!ñ>àÞ¼Ì7ŽpcÉ j '¿æ’“Õ¦Ú•¡œµu$**‰K=E‡á>èùè^E[³jØ>´éÆ9Hzâ–á­‡´LάêòaÎ ®>Ÿ >´ÔÉ1/‰¢$´dÎÎÑJFn›= * Ì+š_ô¤•QƒèÎbÜLîuÌ̓l°‹ÐbF+ö@게€ÕÕÚûÜWeûØTx¥Bs4–̨ëé;M*Ôóº{jŽ] 9Ç&ê¨ùä‚‚ÞK6Föp½!)’ïŽ;¼‘‚ɳ\ýÔ~µ\8ƒ<µ¹µý±zª¶kºo7Ø–JËþ!îd(s”Ýå¿}¿ô5úøÜÜ_Îç~‹(4”[µRî³´™rûëŬ8IÆBVõÊL ¸ƒ,æáù ±»WCv>04–“F1¬qƒ©´©ôÂ$h-I€¥_Úh?T­ Ä"4å¶.-¦PoòYäƒté'Ä@EDgŠæNÆË¬4·¦»é2%Š O¸&áù^XkCn3 ¥ÞP’Ìl#‹%yÀèš@7‘¦3çr°²kñå©ÆØ —´j**Ž4Ø'°RÒ鬡[Ê„Q¶7U÷Øds.œç0p¦™‰,ô;íNõqþ@° v7¡/^¨ÛIÿNiÓ¿ í N3y¸–F­Cæõ% fKi§LÀñIÛnØò{´…Ì0ÎÍ‚À0=‡øú}!²If'ááA“éu]„÷S}ö(3=éW=Jï`ùå‹çãó„$8w¢Ü‰ý&'Ї¤i‚ðÚn[—š-Ïù¤Ù Yô²¥W)ÉŒ—”<(\åD›Åç áÖÄS¿ùyƒõrÂÇ`–4ú·?l¹_Ùñ\Z«\Œ:¬PJP·´ü2µYôÇg¡ ˆ©‰õç*ÉÖ6?›ÝNÁs:¿ ÈOM|–eއMUŸur‚Pôx†ç:û&±TI¯uvkºü2™Ò~LPOMÜk$›.+«L©±ïÆë»háÔ%ž®±F®l Lc0œ6¿J?ÝñL›¹=sçòsÕÄwY<\H»ÙŽ¡m+8ƒÝ-›èÂ%åbž¬¡ì‡Çc_¾9_Œ^ÎÞ…ÿM‚äÛó%÷B”.JÑÍRNÉ .¦ —t¿…t É¥t$Æ ]´ô|î^')„)]€ªVý·@ó£´Þ Çì<­à÷9A8šO2¢:6ßÈüê¾?A‹6öy•,7jð/Í`n)Í<ôTf·™!CU¹ Y,cÞâ_~´ !æ²ìÛÕûôX8¼½¦»¥ž¨ §•›úî9)¥Ë™ìgó‹°,ûéÜQ#©Ý ûm}{³úÇUøï¿“åôendstream endobj 397 0 obj 3608 endobj 400 0 obj <> stream xœÍZKoãF¾Oü#|L°·ßX É&Ù{ØÍø0‡¹p$Úf†5"Ûùõ[Íîª&)Jã8‡,T“]ϯ¾ªîO׬à×,üK×Û7ŸÞ|ºæÃ3ü³Þ^wûæï¿xqí o„Q×·woâ üÚ³k«á¹¾¾Ý¾ùR©¯n…µÎOÖzQ8'`ýíæÍ—ïÂ. e´O~©îªCµ[Wá'- f˜I?ñ‚ÇOZ{m o¥Óá“DÖá“÷NI;¬]§ÍåxåJÜ c¯W“µïi±/¶…—FÈ´÷·ƒ8…“Ò£8º~x‘ƒ‚¹ô´\÷é¡…ÏÇgÿ*q¡dnÓSØ“iÜgPÛÖ2Ž ÿÝo†ulVâÞóø/Ùxê•Ôª` Ô>|[Ç/ï6û°ZðBh…â¶õ.ùÀ;ƒ l_&µvƒ‚Œ“ exäÀdŽ£üë¦EŸ*‹ßœ¡ .¼ÇGënÐUØB †Q=õÕ ·Î̲B 6‡aw>+PÊÇ-å³2Ã>^g¸®+·qs]hoUzº¯Ÿªfø‚p…ᆣš]RÉ9úÀ`J|ìQ¢j]ß=×»ûð‹´—Â\¡…‡ƒÿ…)Œ‘(ÃõÒ ¢U^¯8 ÆÞâ¾Òd¦ tÜ¢jÕ§cýÛ°Ÿ˜hÜD/€ÄŠ‘s’„Ê2¬Ûã.ÅWd‰¾:¤8ª0Jð—Ä)೟‹ƒ›hv²ÒÊuµ$“`2ÁäÜiBJÜ¿îÓëRRÈ”_Të~X 8båì¯`ó®L,¬,”õ`â`jÈôðûÏwé[*çCö3 6eÁNpÜvŸð„ÁÇ_ŠÜs²nZÆ mÉí®J{IxYÖ `L–q Û¬ëM5¨¬@¥ÔcÝ?`,XéO”‚¤Â0½:D¥ÀïZsÿJ¥LNRÊ0­.™ó®mÄ€®Š ð˜âÅ r8XàAÛSà»™$À`¸ÿcÄbϼÆÝÛˆx¶Á]LD+À#jšˆuÓ$´›ÄV²T¾œK‡Äbóœ¶ÅŸŠk†qÔ,†‡õ”^Y/¯ÈÖä)^H¥Ík<åóY…–)aõ߃EºsA鬔ó „4öQ½Õ¨?eXJÉWeZTÕ,¨: Jp7€Kî–ÒÍ%ÁFaIAŠe¬8AñÙtE~„`jÎ#ÓQðA•§Á'8³/ >¨òÊs”ê»ç,‚ × *"Pª~„WNõ+Ÿê.Iæ¤#;!¡°Š¬òáÔ§U”RjI¡ö{uhoRÒÌ¡¤e¶jÿÐêßÛ]ª"ŽòHÙ$oCÒÃö“änI2–KÌo±ÄymÈ Õ¡¯×ñ;Pb$£µMMV09mÖ©NC(:úÆ9…<›Æ.s¢]‘‚À)zùÛÝ}³MŠ£T5Uò¬²ÊSll÷Ǿ(…Ò¡H.»ø8°8•c¡mªIð\?Z$ Æ.`<`‘È6áu=Ñ6õ®ì‡ÕÒƒm$þÒ=w}µn2bì%d¨¾ßµQWàÈN»S$ã:—‘Ü`WË=Ù?}€Oˆq(ûº¬ÁƒJzξkš†ÌxwÜ­á½]„?Šþtì(QAG|<ï®ÀÜÌy4ÌOßÇ5Óîª;·´&øá5—wHÏ%Z×}dá™yÜï@7CªAçP£(>ÖÉp&Ó’£å Ê5ù¤¯›ê&Á˜³”ì]_ï÷éiB F/¬¨ø7s|zqÉ}_ï†÷M€|âà›²{Xµ_tUä•:¤Yfø±©»ø%­³ÒÉañ' -¹î›rW­¶e÷íá ý2~õXoú‡ø&„¸¦Ê2ü˜J¦ "&ÿsR Ý'‘ér«CN:?[ 6Hò|j“€þøZèQˆ“Œ6QŽ€þªiVTÅ1ÕéjͨIìŽÐÝ>³¨z·i“˜ÚV|¼Úb‡À Z£ÑÓg Ài´nêý؉*T™L(–Ò{x%8¡ˆ) ÀuÁ Z‹8 (}hÔÐ6àâB%2E´âÝ?#¬RD¡½Þ–÷ÕÛþõmÊÅSÄ¥?ÿ7K¼â2Úè: il„ÛˆõF¹ì=–E¡©kŠ êÂ#¨ØÐWºaè"As *àÏ ™ U¬HXÌH걌Ãç@ Æ)JÊòCS¥¤‚HÈêX|˜˜BÐôÙÒºwÿ¸ì“Á¼PüÂÚn ÷—úÒw»:µÉŒÉ-ã/·7d…\ºÿz+¤…SÙ\%4×™²^2ÌIüA–À:SÙzûŒœDYKÝnùt&Ü€¨(èðS¼ÙE³ÆSˆr›Xó“Ôî߯Oߣ‰02A¤8˜ÎeòúÍà}n€B¹¼¯ø²D1!!%£nóÏ õ¡¾ÿþ¡<`W#ªz­ß‘5–ŽKÒ @(&NFÐ"œ6z#Ý#ÉLÁe Ô(<œ™½¼X-,œ6˳«Ø+‡!@fÒE#¿Ä{7ÕUœ) òû…Átîj'Ê N±»” ‹y»<¾ÍËù C à°~©È¯ªn}¨÷¡Çúz)äáÏ™æÐí2Öƒx^“i‘˜CÐHO¾Ḑ;BÒZFу `Â'¥©6Åð Í(¬ºz[7ñ´OÊ‚ûì—v±8A  3ï$Î ¼ˆÐ€[ž<59$±¹ïÊèAQPSŒ„Ù…ÓÊYG}ì*œÐŽâ¸Y%`aG2^ˆ„€møÍFT!Y¦³ÚMJ‰¦kS hM£2œ˜h£hNžÌfÀq³Pä3[Ä07…Õ4ÌŽA„€oJÍ’0°_:_¸4õ|NÉJùÔqy -ù L.¤ãkXMHVO`ùâc—MÕõÉÁq¼e-É30 p³Q«/Ò¨l8é$@£DQÊ ‘Fˆâóˆ‰à[{šÓ]¥Ñ¶ íz*Õ{+$=É=Ä6—0ñ.Ã$tp¬ ³Bà|ìÀòÐ"›Fç±ØgÝ ø`ȃ»S˜+M-ÞÜqy1; ùé/;?HÌfÔg‚€«ÓGûyè›àù+tØvî §ix¹/kl53¢2=±‚ËÜÄTO8^RŸœD†Ý•¸ôivj&Yƒ­‹Ts#8À0ÖK ÷{„ Åé4þ°jª»>1'+Ýè¬n—Ø));#’áH@ÏÄÿÂNýqœ&èÉ–¢d™<ÃQ.0ŽXmDñéÉû/ŸnžWe·N½£„Ö#;òýW7)hµÒ§4‚cV"¡0ì’m„{l°xR6Mœòs’j…<Œä)‘@U}§Ô~Dec¼{&‚”e¤Q!#¼k©Äô”H¿@²jIE¢/¨2Ì,™:ìQ ê^aË©½8'ßMRÚ˜ÙÔsz'«!l> stream xœí[Ko䯾+þs\'¦ß5ÀYÇÉ6²±upùÀ¡$Ú£™Y’cYA~|ª_ÕäCä5| Ø…¨b³»_}UÕûaA º îOüwuñáâÂúgéŸÕýâ/WüFë…*¬æF.®n. taYÁ(]hk»¸º¿xµúôê7¼/¿ôrD,– hàzqµ¾xuÝDaÕÖ…åŠqø€“ù܉ÈÂpnU|ô¾íü‹”„Ÿ–«.>Ô°|xö÷2 r¢’àú!>…o™¾S¹GªÐšP}Õ­½œ,ˆ²ñµ–^Â_"îÜ.laSÂí\ØBN£èwþeV%ÓÛßT7USmWþc¶¯H:-hXÒ²þ’ÔêBâ&… 2LÓ¥…•’yõ "Ál±dÖIzaVÈÂË Z!q[_4¥{ÊYA)jêá«z[]zi^0ËôÓÒm7…4ÆÎ‹[ÝÞW[hQžܵSZ\26$î4ºPJ1/{åDágPpzýq5¬è!š±}U ,ª¸ñzä -ð?F A¬ð²?•¿€) A;¸øãùu4)$·éîWåû·ž`g${ùg¿’((ai+{3~6%÷Ý»]½í¢Ö,ô\Yc¥™‘=lk/¹d B ÜjI D¡g¾Í§gê79ý¦nýSÆ aç>ôf·kÖ_ïÖa_º Ôòs´Â!f ‡×Š ú ­î²b(e¿ªb®ûªÇgLÆßüÞ=¨!ܨ¯?ÂÒ 6Ö£dZœ¡™Q!e!Ä™‡'Ù˜’Á/¬vÁ'•6é}Àäz[v^˜ƒZŒÈñ)™Tp˜}Ô²Ñ&ínŽ RIc7ùUDÊÈ燆_z×&)>å)ð,Elr–ÝMZS¢ícEЋʴe@{ƒ<¿kOèA©Â9Á ö[d¨.;Ðìï“ç¢ø Î]ÖMXSìÚ‘$Sò#iˆ_Bá5DŒaÏò”É2Æ{Ê 6 ÿçïpÌÈ—…{òpÝ.n„jžv÷~¼a, •‹µE·ÛjÕUën à¥\øºdk˜~"EGOR‘vvn5Íà ÆtŽ.„ͺìÊîqŸ¨/³X-ÌÐò? Jg˜Õ²Î’þ;óÎ}|GÉ#òúEÕ®šzßÕ»íë)‹B„YçKWû3|äêD>‡¼—ÓQ*€¡tå ²Ü¸ö7‡íÊí)&M )ÈÍÛć>Š°Ô†]€ïYŽÑ‹8¯])ö „we®…®_ýL/i,!Ÿi\£Ü†¾ìVá@ž]>²ëO=:q€<¡ÒZo»¸>52yÜzýxb’ > {#Š¥gÛ]xtEÓéƒUÍÍ®¹÷ßœÑhàÄõö6&fÐ3Ê.~Lº^R Žz»ª×0 Ô$r˜Kn¤+ƒA¹C>÷éí:„-XNÇs|Ôä°þ2œTez5fˆÊjÈJrÁ©1<ë¶þ)6A¯Ò^ ˜¸çô—'X0êåˆe¤>ÃÊðeÄ‘•¡®É•ñ逆)eGmIæGûúçjaN)äý÷»¦Š Iäxêî‚jlb©¾lPCàÎWËÛ(H–W÷q4CõaÓÕûÐÙŒ²Á¸«ï«àëK{"uV²„üáÅžv½iÚí¨36ÓÙ¨$¬ãlIeQ#Í+ ¦dK·&–ˆÊ†«±…U.ßž—.A×FËù| ‡#+h¤Jb*> >Ä K>¿óñඤ1  4µj%.Ì”ühIÖUö93Teèu¹fBñ]Ð-áÇF®XŠ&Tбcs±“BžD€%ÁëWѬýÎÇäËÿ®¿¿ÜÇ i©Ž‹Œcá?Ðïcf†BB 'Di—6øqGÆA«È„«JCÌðø½ Ð%NpÞÅ÷¨Îñ0U Mù$€Q¯—ÒvÍaÕšÒµ[±iþ6%\W5С+M#V›2« ãP“9N³#rx³0jšÆçÞoËûDr³CA­Q5)_pTi™(bvl‘Á®Ú®ˆ ¤s Eœ¯0 ¹Þ‰üíÂD\66 䉧 Љ£Ž§(P¹ÙD=2Ž>t"ÿÜWë:öð–\pPÇÕ=?v.“A2Ë”1ºŽé—+kÆFæ¹@ø¤‰c '%áäš›2Æ‚-(A?vØgª˜XäeÔ8U˜~½ö¡ÕJ‚ wÓîRš2Hû’—ÀF9å%ÊñLʈðÉÄ|íÌ“÷Žr‚¹ÂÙX&¸sÌÜ‘òÞq§‰«kTœSjŸbša{y¶>Qyø—ëÅÎ ®ZÚ'¨â …2on$›>‚¼2#l¢­ð‘y+D‰Ay›Êv£u^ â…‹ØäׯþS5»`re å‹q_>Ôëî.$ éŠIGžÈý'ék`ÀP%3„ÌIx<‹{(25 yžÕ% Î,è¼½à    j0wˆŽ…Z‚[Ä:Ðgš*®GÊôuWâ™u…„rtB«"'ü³´ ¹NiÊu¤UGÐ=K«…²ËØðа=G¾ŒN¯³#cB•4÷Tïv‡[Oò ÄÏ ÓÉ#<F&,Ö]÷okñKïå–"üî6©îíÊŒ5û&l4×Nt|âü‹ŠL-V»MÔMI÷MõáP„‡õ•Ehœ¢¿M.±æ‰ÂµÀìÒ‚%7A“Îs‚ùd³ Õ…#28­hïÊÄCYFðé1©#[\å~kBê_6.Ó®……QÔTeH±Ï$Z"Ócðô½9#RÀ4h ƒnØœÊãß\†„»?ýÌÖT›² ùÈÝ2Ò¸^lÌ[#ɨ¶&z‰~çLЊ™`;Yæ¹Ö1E|–~g‡o±õ4lœ/Ž5LrLÌLrƒ‚¡Nx¯«¼é"'†Ýi9濽¸ì‘ C¦,¤ŽŠ€§,¤¡²§Çê ]¦GG=µqëòü³gf.ºÄoùŒ¦õ 3O[ò9áR›@º‘ø¨b-ïýˆ…¤l±p:ó¥\Crø\šUy­y¿Ê޶1/BDë\»ÎqÉÞôi¦¾·”á`°7¯‚’½µ›$Žàað~”`?Ž% Иl¹éÛÝx@MC šï<õ‡iÆ/ïŸ(w{(w,úmˆf‚¾’ S£zc‚~Û_&‡(áÝÓ<’:[y¦Ä´è·¬SçÎäfê -åÜë©r÷̸ÑèbE®àó(WðÒLô&&õÀ-ÂLžËLÍéMnvNž 98¾ÉÍýÞŒçc³—|9&W44p^R….OxÓº;2ý,¼Œl]õÿçÌc<<À·˜:Vå>IC%/Ћ“4èÄcè=T§é-Èõ6_IJßpEºG{xŸ ˜ÙC½ ¸çÜ-cÜÃ2\1˜! (¶kݘ$_/[mê}ß*nDÁ2G 9–¹û1ù {Åi5Ì4Ü8(þf†ýõö?Ñ´dGæöèˆbKêûÙTACe÷¢4Ïý&Ðe÷døG¶÷¸™¾þ6Ï·O†ºÌ5ɳBÝkù¯W‹^¸?ÿ[Þá°endstream endobj 405 0 obj 3609 endobj 408 0 obj <> stream xœÅX[o×~ò#ø˜âé¹_¨@ãíCƒºŽRÀ/kr%mKriîʲö¿wÎef¹ä’¦\7…K>{.sùfæ›ù0ãLÌxü)¿ë«Wf"­á¯ÅzöÃíÕïÞ9 ,Xiõìöî*³ÀgÎÀº™Ý®¯¾Õö»ÛÀ^F{ƒdÞKØ»¼úö—¸EH¦­ eém}WïêÍ¢ŽŸŒbÜr[> &ò•ÎÍ, Ny¯T ²‰W2¼V.í]”ÇÕþιdÂKëfóÑÞw»²Ùîov,(+UyûIæ• (Îû®O)¹/«Õ¢/‹®Ïk®p£â—OeÞäßIj[æ¸ñ/ý2í3` ´’A\Ã?:K.˜ –72驜“ëÙ\†x¹Ig$3,ùD ƵèƒwU\U`A"?½Iozf”D…Ûf“3šë²Ø_£jÞë¯te7…œ¹œyΓŽYkeÚ{·ÂÿµWxüy[På¤A ÕÝ«b)Xж±Ê'8*0Z´“Tú|åÇjUõœ°Uzzâöé" X”?ÆoÕûUò–LÒoþût•fBÑUzk\Ê£}ÃÚ/é¹bGŒ?sçã¦I;ç``œÍ(sq‰F©$´þ¿¨´jº´*3Òé37¼nÛÝò§v™sŒ‹ &¶«»IAÖ0"‚É@„øœ~~Þ;iç¶}õév èàÇଚ†`Ö“€)ŒÓŠ´¹_k¸ÅÃÒC’"c|ŸÜ+¸bZб{÷<™µL4ñM®¼ýܣݱcÖÅÒcÇ|?ŸŽ3ëšÔæ¼¹»\×ɬÚ2%Ôä¯ `¤ÔhE DË¢Ô‡eôâ‚£[~ÎQ§I‰zÑ|SwÅtžzê¡.IFHMé7§¨h) ¦¨œ}÷Å `Óú* qÀW…÷{Æ+ûÅ¢UÑ‘*9úŽª²cÒQ<¥D2¨BÈXÈF°Þy|Ó´†l)ÈS¯‚M”Öþåš&ox0¨óê +@…„ÃwÛ;ºÓ¢ß¶¥:séÔÈ’o=É|¨"ò°ƒ‚ù";œ4ƒÿ3LbõbõNyY2®ÔØËë¶ ã4%‹zJÍc>Ñê"<…êb!w‚‹6g$ëˆBFo6UŸ6+Ï,`€ÒO!ƪAH†´‰jÒß‹«LðÈÚÇr ÂdQ!Û°”G¶U7I7 /qRúu[Üñ®©JË ¨'(.ë¿îšûì#KBØÓnêÝT¿ƒ™xXÏSêT‰PÆb âù\€²L"'1’éÍ®þØ´“!k 8M!œOH$¹rœ¥OçöËZ8áRž6]jç€AË…Hµ6›tYõUÿ¼à(gXÂÍqA¤Ýƒçœa’Óÿ×™3c˘MF¨™–ñcÝ-vͶoÚÍ«)dm W»Ÿd¿éB(uÂ!æ‘wAVA£Æ…wÃeŽv^œÈd£Ñ‹w›E”;™•3 ÁŽD«+ ⃺Ì@¨ þá%í®¾ßµ›e¡HJSÛ6ŸêÄUÁ`Š­ò^ (Ú„caÐ9‹v½-¬E âv“± ·Ð¹ŒÅ”K”¢” ˜“b¬Ê1‘tÔ€ÖQNWdp–µ” zÌmÒQ¡8MJbZðÔ;VHЦ®ÙÜgºIr+1»KkG‰Y^™·y .†Jєԃ—¥âøn·Í2BL¶N…"yR  ØÔ>¼„‹MrO@‹ê+…Ád’Œ©ÖÚG£OVTCX_ Cr<®úf›=5WÒ–cçr.ƒ…Ø ä¡É‹±¼ uÆ)f˜²…*=ç%-¼DëL–25UŸNÆ¡nŸ-Œ ©±««ùP¼¡Z­Êk<¾Ïð‰t…† iQQ´C¨]½ªúæcA 7×¹f¾„Ô8/ý1eÓ|O†¨ëuÁ:è€ð*©l"(æK-W*¼ÜºgK|<‘Óöì"XÅ} ãžàúYûf¬ÆOÕ]_'ZEÌ{¶|³+M?Ô°ÄØC@ù81¥#ù}OpN˜±‡¢×‡T;õüvÏ^süÆøð…‘8(pðTá’“"ç¡0ŸN¢]YÓ‚ê×b`ÖÒ¡ÓË>¨nÜœícºj]pmöølÁLlðÕ ¢RâÜ¥±KL˜CH2Ÿ›8WºœÚþ¡¼•÷Æt…9úÛÀcð cåðn7M¿ î “ÔUŸÇîeh^BM^!Ü!éI™EGöG¾Þ®ªM=_WÝ?ÓG õ\R`¤+¥‡“Ýãûò D¯žšÍ²-TÌñùTz"ø0_å†`º]».ÒèbÕlç{)RO°T¿KŠ„*¦¡6‰Ê•`;y‹8¢‚5,Žã‡‘·+–úüÈûm½è«È¢®K à‡ðsGNŒ¬=¼ ‘]FÖy\÷õFÖÔ ð’€é²¥S[+èxÊ—©ÉëÅ3^z²Ð{(¨îÌþatmUú<Ú„ÎñRÅ:ÒLRŸòÛk¶7ÁøÜ¤þ˜È˜Týx|úåiÂÆØZ {qô-P« 'Äï Ý¯«_?Ý|º~¾y¾~ºyj–ýÃõÃÍCÝÜ?ôÿ~÷]sñQŽä‘µ„à‡~=pa‰·½–ûB©v£+Æ.91¥†"ᬷä/šRëB&‡Ô1k…âýæCê?ÞÎþvþÖøendstream endobj 409 0 obj 2052 endobj 412 0 obj <> stream xœÍZ[oÛF~÷úGè±AMîÜ/-°@o»] ÝÄ6û@K´ÌV¢’Žì¿gngDŠ’¤À.ÄÎp8s®ßùÎa>,HIÄý‰?—Û«WÔ¯¥ËíâûÛ«¿¾Õz¡J«¹‘‹Ûû«ð]XV2JZÁÂ.n·W_-ßÜþû ?Þ_ø}D, Øhàzq»ºúê}7«ãͺ´\1¸=ß¹-²4œ[—îúÁ¿HyI1qµZqQÃñaíç*mäD¥«C\…;‰L÷ÔnI•Z*âÒ/ÃÊï“%Q6®Qké ü%¢ävaK«˜NraKa8[ó/³R(™Þ~[ß×]Ý.ýeÄW$)EKŽ´ìøHju)QH¡ç®-¸!%cjQ0ëT’~ïz9wžS Åâyïö^FZr––êes]÷n™™Ò›Œ1<ÔswS]R&’½ÿñìºdZ¦ ÊY¨$%×f¿€ûÁ©nkW/‡ª]o‚j`†pÝ›úÞ«±A¤I–»®­}pR 'Ðy•g¯C;Ì›qHcb“?C¾šÕðpÎ ÕûRK¬šmÝöÍ®íç=Ä!ñrF¢=ÔÍÚ‹ÆT)•Æó礅4gÒÒ‹1%OÅ’ˆ/XŒ‚ƒÀ^Áˆ¿¸w~¬ûe×ìPæ›9Q˜(-UNø…ƒRî¥ÛùTe€½„!:ýØù<`ºäV¤<8¼MBÎÝ0¯™Jf®ÚÕ,"˜ÒZÅ_yÍlf+ –À,¼l—Cò¦`àŒÖU8”§Œ%ãü(«NÂðÐ/9îqØ4m€ÃiõØ¥¤´ÉGðT\ì}¤ZWq¬ÅP-ÜbÁµ.ÀîAC˜A{£1Zj%ì42¢†Úh¥KU„P5Ý,¢3”¨êÓ~N“Ašû %§œbµ (™iéúcÔ0 ó®ØÇ*GXlÚx ØÇgŠ.5:Ýûk(©ÂRÄ£Ýæù°¹7¹„ÊÈ“Nûn7ì¼eàª\ –»M,ÁJæ<úðX¸æÀ«ë!ܰ#“ù ÚF¯A’½–\xÉÖ7 ä·÷&p„ðRµDë Z>Ë. ›:,æ0ƒbY¢˜Ô×ïR÷‰©Ox(ÿ~ïêÆû77ðókœÓ}íAk‹'ÿ|ÿæ?s¹U@~ÀU@èÒ2!ü]$ BËcà¦N X:_°&- =©>n9pBŒÛ¹ërœßxù0{±}›`掱ÂÙ•¤°Yí"T…ØÝîBÕ7¨ùP’Æ9§eT¤ðÞ7OµXÀeešnw! ™,C ª6Ä–r´Í!u~bÁ Àg è Á˜nü\|¥ëÒ¼¾}\#BÛ‰ûVª“ØN`D,r²ˆ´d\]<¤¯¶u4Ðèn( ØM ‘D‹G!Å;=•¡¼ŽÔy2Ç-ÿáP‚ Ĭ=”/«à2hcJB$R¡îzxõ&‘ÁHœe&ŽhÚµ7 ?~O}ô¯U"¹¬BXSëñ¼Û¸‘0“ì²BP‰ó¸š}ÈKÀ?+1/àRé8.T˜í÷»!±&ÎÌÇYè2N¦G!irT[ûyÊ¢©aÂÌw€™TÛ\0¶ûXF„ͬ¶­ÛЧ¢ný7Qªu2-~½îví*€8UòtÎ]|ÈnŽÛGÛrtfͦ¾‰ÕÞh‚Á¦ÞÇ'À;Œfâè…DOhŽ_,v]³nZÿ¾rd9ݪêŠÝ_ú:$t"D"ù‡.%n"Ë€5…ÍðˆBC€¹ßTm]l«þdñÓñ§"T#ÿ&ô¿Ò? eÚEG£îÎîЂÅÕßU¤íÚÁ¬žl›@$È#˜¼ÞlÒ[`d‹ž:ºDaK¦¼Kþ³$m=4m¨ f,êv(¶»ˆIDa¢¬â±Pj¹iöÇ^®bÈGžL€)d þgÕˆñ Ðé%øþ d4¿ 5Ù¨,pßÒD!§TžC&P´ÛáÝШ¯A­Ï8~q?Uó݉tÝ °í€1ˆs((•;e\3løë~žöm²4³[[—Õ&Ã:’7JçOÒÀв9÷°ºCîÌIzKxHØCÆksû~ûâqˆVžD/ìí½héþès{Ûfh „’;n^RŸ*4Å þß n‹F*‰/I”Lr:Ö‚„P@ø æH}œ ½{nS^kì’†êéLŒ¹ t’1ÈôÔ >9 EÁÞj¸ iÈzy*ó>‡y'‘06Ú·ÞåÔ§­÷#ïzH—®Ã4Š> stream xœÍZ[o¹~7ò#ô˜t­)ï—-Z`·ÛlE»ñCò2–Æö4ÒH™Åv}‡äá\(­“.Š"À.@sÈsýÎwõyE º"î_øÿfõùêóŠkñ›ýêÇ›«ßÿbÙÊV1%V7wWþº²d¥%¬ËÕÍþêµ0onþ{쵬0†Áþ›íÕën e…PÒ†¥_ª»ª­šMåþ$yAQáO´ þH­Wª°šéŽä ²tGÔÁõ°w.çãkVPÔ^­'{?¶a³oÖ…åŠñp÷ƒ8…áÜFqn»~ø‚Œ˜°Znú°¨áx¿ö×2näDÅÅícX…;‰Œ÷ j«BkBãÆ¿õÛaŸ[D+Qké5üGxɧþXs) "@MfÝÙrøä­×@)Ð*œr@±¸¦aíîЄE&dTªï‚£˜±"Ê_½jªA2. Ai<ô±îÜ*ã`-¥j}[–™ XØ/ïê¦òf`¦0$ªW7Ûê©nîÝ-Ç”Íp##…°&èÔy9ÜVˆ™ót»ˆŽš}ø©-‡ouÁ­ˆ^x|ß·áú¹q¹-À[1®Ý]HNu¼·*7Á€’‰xÍ %(*î3Ñ k®l!ØjM©»†¥øeÖâe ÁU Ö)”!ÍÜClÿ0„á„víP-0·Buë.ˆ'(¦æÈ¨”hêþn’š0Œ˜væ·ìÒý»ªìúuWß7õ«M9H­x!ˆÆó£=•c;uAf¢Ñô‡»á|ZhÆ3JËq( nœ ÒˆåVFã™ûˆ|â‚ÚûrÞ[o,·ar*6…ÜŠKQhj n0Üʶ 9¯("A_~ c(bF…i¨µš[Ÿ ¼&àaz!ºÐÒÄ•Wí¡Ô¢\ek+-ý`¨fÊ ›Ï8A"Ž€Aü`R€Y`ëÛeº<÷É9!û¢÷i8—Ö03öp Rè­-ÀÖ ãGÍ%*r-FÂ~#ZÄϯ=¸ âäÐ"Ê=Hb Iß -xŒLóB´`†3´Wð™"r™ °,‡L #.£ «2p7‹€Õ˜£#¸]â˜ñ”¡1œÁD¼›¹%ã|‚Ñ@ÀfßHŸdÖPƒ¤Vò+ï¦Ë»½)Àá6©ò?Lg.³ æó‡g ê:ÂåÝ©Ùôõ¡ÂQ.•|7â*0A©_^d„.ˆA˜ÿùϹ°gÎã¸gs؃DžÅúwh¼M –ÓT!úîû Õ#NÒV÷íáÔlï»1’ÇsnC‰Bq¤ŠŸFÛP±õ®ò!@ÁµXú¾>Ã_¸s:£BIÐ Š.ŸÖéðáúÐÖ÷uã`“1³ûuà2B"S8îʦZïËîSTK[üã«ÝnÝõQR‹ê>)ÁBL"ÙɃóµNMæ@wºÖ²$Q¥f;Ä"ƒ2Ì2.¯÷~Ød" Ûp¿«bxovõql Fä“”Ã'Á°¤°Pƒ'ÅÖ™¥ð±Å ÜŸ¤džÅ ·ösWrƒ#€’6ؘuˆˆ %ƒ¦l|¼ èv!S=y{1W›‘Õ÷Tåf •Ò×Ñq UVù,½ñi­„I®=<ÐLÆÀ¬|>€`ÉÀ¡ÊAþó´ô^ƒÇ,1¾ùRîR«‘7 ÜpŽ‚Š!qv*owCš ÷–ůÖ QBSNùTwk„±Å¾´öᇺéƒÑŒÅpÌùÁIö®¯†Š  ²HvuW1-ÆFšP™Uƒ¨^Cm²‚¾Ä*T¡](fÓÿ‘]|HIåH¤~±eØÌ2‹„,ƒrñãºOâYÄûç&XJèÄÈ˧3e š°i¢]—þÜz0¥»ß,%>Få  k0E·\þƒ'µN æ½®çî æÈñ£ÀRÔ'cRY&>›‚B>±òíýiïKˆSLÿPúÖ€÷Ü*gX ¹Í(ô¼ÊJ ‹þýi‚Ǧ~UEi¡»Î°½„Ç[tÎ ›GÏXÁ‹¨ªKŒ"¯.Ð*=8"Âñ¡dÛŒè@¾]ôÅXi¢Jž”À¦XÏ©ýtBuôFPÐÆÅDC%ÂRÓg™…,ÁQÎeE¡J%ŸùHAPЏùÉ ÉŸ×V¡íù¼Ü¶9ø°WÚ¤&o[7e_u¾bK¸ûÔLJzJ6ô 1…ü¹ÊcÄÞØÐÊBZlÛjWöõ— ”Ò¨- µtJ‚]]u÷ì"œIÓÀ0ÐR$ôœ|/êŽ qls0þÖ“É ùšœðTmÁxx qiXZ.GÊÎдþÒ^çUj)¤D^èóùÀܘbr’ˆ¹¬Ö8yùЬ¬ Š*‹#€Xäܨ„zIÿPn@U-p:;y&É5N¢ÀWŸ‡å dq¼ñ¥Ü-_8×`SE ³ŸTÎmÙ—ýó1Ã9&É•2ŽMÚ—µìÂî`¼I™K=>\Ê9Êþ»åÉ¡N‰TfßÛCè˜4 (…™Ð—ê™)Ú—ÍlÏiš?O¥~å—™dÒ7p¡½üÚ û©ê6m}t½ä÷¹äsÃ~å™ä껈ŽTeFŸ\â˜5ßAú@Ô {Y.Ù–‹ÜØ¢ ™j[ ŽEüiY{¹ÞŠ">üýð6\jG!αtšfk°(„àX±ÂŽ+›ào0HN©,Î6÷8•‡/9Ó¹yÇ ¯(˜A<=¶th—ÔÈ:âˆ@Ee&ŸRáà¯Üu‡°•pääïz ÔEà³× |p kàyf¦púbb¦@nƒÓ b‘JY Oy[µ­Ÿ\» ±8ŸÍìø ¥Ñß÷USµ@‡¶ Asïßž"HBçFpˆ…˜Çsòœ¾¿ŽÜE/Ÿ+’‰Žmõ¥>œü˜Eѧ©õбi*4±GõÏ—ˆÒØ}=”èeÕúâ£ÔÊ •÷¹‘ЂØ)ÊjÕ üØ<çõoŠ81ôo¼úŽp!æCÙUîUp°6pXCµhÂ2s‰º˜|žäx«rhè0Ò‹ ŠpFƒÀs­ϲù² ¸ìƒWˆ1Ko“4}ò@/ ûˆ:ä=ÏaÀAšªz/;F¿ ôÞÂ%¦nÿPÆ •Üêñù>¢Í§F$*».| ‡à/}P35†ÀÙ„ …YK:¦vá5 äRNÎKÏYrÔŠ<•û8ñu<„`oàüz‹/'T`ýʾ^š?‡#¾µÕ¦‡B€£%@$ó‚¨n“f ¹çŠòå”é]ÿÌÓÕ»}y_¿ÞšS> 9\<¡™s|ÔOÁ„!âƒi ­WQ9È<7K´êC]„ÌýæÑHNÇcX„Æ;U†õ®º‹óA°yØÚÆ»ÚuêOÁ®RéL[* ¢Ò¯ºì%-ËúŸ:ú/±–)5Î?­ÝØL¾<ÖOÕ.$×ø»‘hÐÔkzÐÒBkùøúéúùã›8—éE&xz>¶À|å¶VŽû®ì6ïêñÏCúoÐÞhÅ2>.¢íÂ@?-ú`R3Åžb24ÐÆÊ¥²Ø ©©UbãÑ5Z˜eìtg"Z½/Ðe $ fÑH®AÕ˜D!´ÂRŸ%ÀüÌBà×è©g.‘ZIRŸ}N‚ë˜í {JIŠYuï‡?Ž_¥™>Êô#",vÁŠ2DR¤Yʇ·!ëL¢=Ù†°í´É¶ܽ°óDyݾSëg›"=¾#ȱô–¾b€K}‰{ž·© R±©½;ø`Éœ¿b wqÓáŽHÓ†ˆ$Ÿò¾$K½ èæyóªÂÏÆî—ejVà2¨g4U3Ôƒ/ÓËxB=pB’ Ù„å oŸ€(M°xØYÔ ‰y†3ÖÛ ÁŠ€J}ÃwÔÃ`³M?tÂDâBÍh”Of-¦É<ƒ=aN'ãC¢Yþó°Ç‰]üzƒ¤ÑòˆÄR¬®#ØS ª—°—&þ#êϰ&{1÷²JføD‰JÓ½|FÛ¹­¦¢]<€&´ØÙ»Ãº©cFGA#ïâ ¬Ç5³¹:Gš/?nü6ÈGÓé¦È÷—›Õ?¯Ü¿ÿ\(_endstream endobj 417 0 obj 3158 endobj 420 0 obj <> stream xœ½Z[oÛÈ~7ò#ô˜&;÷Ë.RÀÉnÚÚmšø!~¡%ÚbW’Šm´ýï=Ù9CJãËè"À 9çòï|g¸_¤¤ âþ…¿ËíÙ׳¯ :®Å?ËíâÝåÙŸ>i½P¥ÕÜÈÅåÍ™€.,+¥ ­àÂ..·g¯—o.ÿû Ÿî/Æ}D, Øhàzq¹:{}Õ…ÍjºY—–+Æá·çÂm‘¥áܪ°tÝピ—„V«å5¼Þ¯ýµŠ9Qqãê.¬Â™DÆsj·¤J­ aéoÃjÜ'K¢lX£ÖÒsø–Û…-­bJ8Ë…-…á4lý2>ÌJ¡d|úS}Swõn9&Á|E¢S´¤þ•–M_I­.%)lîØB ñg‹‚Yç’÷þT÷Ë®ÙM»û!÷f&JK•ZàŸåF÷ÐåºÎÀ mF³èØO]åv1]r+¢mw—!XLÉÁú~ *w8'%:†åæ°[:;ÝNnJMU<ªéÝšu)µq­o¶ÍƧCt¹ˆ§ mÎvJKc¬ùÛ³ 1¥¡ºú~YïÇ}à‘U2Ú8¬«q•Ñ’ÓxJ3xg”64n<ôõè"DØ(`PŵßÍ àGG<Å%JÊ,:´®ºjY¸õª¦Ôº\{™·¤îúr|/™eñ±wí°W„[›£DŒ& `R2–×fÓÆ Qƒt7.€=z´l·ûM}ri%‹Yî÷Õ²ÙÝŽ?HÈ›Š…Rí|Ù’s<ïÆÃJ— íC¢KÆôëæfð!T%—4†ê:ðaK||Ü”„H¡§8"°2.Õµ?Y—ÊRtê° i¢Ñ¡^…}TbÑ5>â|º² %æIïçjâh ÃÚ[&b9ÀÄ DP½W„ŠÇ¨`‘LœØw>[¢T_Ö}ï¢P)·w˜@x„àpèv7`¨E^Ä„Kß͔‹«ÁšØÛI©".—¦.XÃZý2X£4V”Ù.ËWº$æä×öC8Ø­i£ÏÚ°™ÑǯK! É…J#~ƒÿ2µ“|¦–U¬÷±X•TGÅêé:Óâ%ñå‚bÂZ –\.ºþA£Vú¡íD!-_!_RRŒx¶A€Å ›þò>ßÊÊ”¹Xó€yŠ~ˆèÊ–Xá7m Ì öæþpÝ×_¾T…ëù©.Ch”µ©Tï‡2Чž _7ò«';¨§´M½õGA„¤@ö˜—Võf¨ßZ«ù¥F†o]6¯ `Àd††„+ž°¶Z5Ž¡«Í踎B+³Ýaw[Ç>¢‘qÅ€•yb!‘F`–ö§øiû[5¤‰«ˆ¿jÓzrf\«Ó÷*Tp÷žîà­<_Ý{ƒÀ[™¤^À€‡:Øž9'ÙïÙ8ô{‹lž#Ì•×ÔÅÅ—Þy t` &Z4Ò\aÚ!•à˜œg2hB§ÚÜE‚VÈ.•Ï ²ÚÄ¥‡>ÊHËhÖ+S(Œ0Ђò(*У˜xNE žb9¼ÔpäÉ®¹õpQÐ(O5팟»vÀnŠq]ÕûÐ5—ñáz· 5j6©ðLÏGBÔÆ üdÅ(&å!tUèAôyß›~h–£0ÎX†”×Þ`±¨£¸\Cg‡æ8fÛùqÂ.ã[4"é))`…¥Oö,a0ÅØ6Ûê¶>õ©„@ÐD qj(æáÕÎ#‰ÿ(T¡ì ÿ¢Ò ±TÖ$—\Œã+ŸÒmúcÄRØQTOšËì€Gš ìÑ(5Î=/SMQv¢%ˆá¡««ýÚЙX±9À€ÕÉ´'l\pàczTúÛªÿ-°"M¥{¨fðÔb³ê«Í&°„Ö‡vû²ÁìÖ]…´ HáØB:Ô…8ɛ،fü’QÇÕõ¦.ƒC$M¶‰ G/Ï;CßçVÓ㌉”„m[¢Bæ_A]ŽeS»Û<Æ$^'ÜŽ¬uÒ ’åóóGÁtsÍ<ÏÏ×(Ê:À ZRšjCò…T¡Kà}‹2?×xZ†5ÃDÌÒ/7±v8XNÝLÃh£SE m/Æó¶Þ9èy:̤U®–羫V–`L>‚ìK¤¹5 ï ê®k»ó†Åœ’ ãaLᆱ¿5í¡¹1 ›Ft¸ÝÝ.)t…8mJƒ÷Û*$_\‹ÝG*£0ó§Mꛎ…mx«àéRƒsÑÞœJsªbYƒ%çeLA ° Ìm³yôƒ³‚‚J=éÛJ¾ú)&ð"ë® 7 @cYq+—!¤†˜’j±pT›p×…Øga ä†xšª×s3B.yötK|˦ÙÕþö`¢aGçŽrw5ؾêûÀO§Ê\¢µFLJi(lJ±hR{ê””YÊúº¹],RðøˆrÚn†b bԼƹÝGÿˆ|ò–åI'ŒÆö¼ „鉌ˆÓR›\‰ø{#íî±0ó™{£™7"ïŽÒêT?yÃŒ~˜¨ß/ñ®“Øýð vþ®RŠ’XŽèé‡p¹C#ZÌ‹ ¯Õ”û±vf×jÂÝÇŸ`ä͈’®5ê> •b°eä•ÔMmÅÝÆ…ÚâMºÆë¬$†þ‡` Õ:é¹®¾íÚÃn5c2š_ # Gøm²ÝMæI47/L]i,<Ýû}ø…;Ô¥K0x @.öÌ5Áx°ð#Š×|ÌÝΊ£¸{S(¨Úoª]]8qÝÒÕUôñþÖXt÷!XIÝ„'ÒýDŽÇnÄL£P¸ŽÑ²hãðÎX îf+¨w…—: À§PÓ¬ÂùÐüö·å¦ÙOc @jÉ\ËžL&@÷H,qŸâcP³–[ €à~’ wÆ9ñ«‡¢Š‰`¥›ØÆ³rP…ùÐl6ÝÒGغ~I~ê}ÖTàÐô·#Üì†-»Ý<ÜÆ\*({tq|àS½ªÝmÈPÁœ§Ý… h¨·ÌÆ>Wax`´œÂÑRÔ«[Ï`J˜„…} ?ÍÐáº_ZÜŒpÀ0f$ °Hª€[bIC y}.c)t”bÛý?9ŠG޵EÝGý2Ï`îQü¥ÙKÅ‚®¡æýã=ûŽDº¾!]5‡Qjžq÷£ç˜ÑWj›²Gœeé.+ŸZàãÎÚͳô(_>¶ÍÎF„f±‹L~¦<åŸ×Õ¾ôhm&ÉÀ÷-È­¿·«'·ŸÆó„-¹›Ò¬‹¯›èÃGäÏ»_¡1wCuÿ9BœÌÌŽ 4¥ŽÓp¯|_„ãTu»_¿]×0 ÿ ‰’ 7ę̀‘טÉnÞï5 ;ľLɪnöŠ9'ý˜­ j@P‚x˜ÕÅEw{Ÿ‘Äxá1»â6.¨85¾Tqäkª€ÁYJç’cU Õð°ÏpØœ=Ü8ŽÏÛÓ½Ÿ|áÓ=ÃN÷þÚî–íî›ß=/–Ìî÷¸Ì1 qgÌý¸sB{Þƒ°ûøucŒ¬mᙓ«£“Ä3w#õKïÛj1^|*ÇîÃuøŒ°ò]yI7Åôö˜~ÇKݵGú_²_‚~÷¥ï)Ðar¢#L¦àÛåc¦ õý¦?=Ö¿ä³ÀèÂÏ—‹ž¹ÿ[õ6¶endstream endobj 421 0 obj 3009 endobj 424 0 obj <> stream xœ½[ےܶ}Wé#æ-v¼Ãà~ñ[|K\•8Ž£§ârÍ j˜Ò«õhì/m¬òÁº°\1¾ýçÁœÂpn£9o»~x‘‚‘Œ˜ð´Üôᡆéý³¿–q '*>Ü>„§ðM"ãw†e«BkBãÀ¿õÛaœ_D/Qké ü%–|¼æRDÀ2™usKoX[•~ôx÷´[•ˆæÿë8|‹œÅMª6õëªsa:.t´¡¿Œ¥ºP}üD˜ŽKjN‡m}¸s?à¦PJD¶Õ¦/w»aÁ Êt4£¹ fËÅü{ŠÇÉݪŠÁ6]câûoüXF BlûèYø GÛʃ÷­ó~èi>nÓøgJôKÓ²ʾênÜÏÖLÓB°ÕŒß²aÈÃ}½ ó+J£ãîý\ZS&Ò2ÂÚ„•ý³+ûúCXÒèäa,¸’k‚Îi"%£‡™‚pŠžmë»úv“2:ñ8+çêÒÛv€ð6“áჇ­%VF#Ë·»jð ιñqw «çÚÚ„°Û§0”»`¿"Ñë§ã1D4®¾j×»ê¶÷û` €—û€p ûת!Ü [X‹ð¹‚³—àÚ2;ÅõLæ4Ìøð¡Þö(˜)tZj§ÑÑÑ÷U}燲ÂRK×…–ÆÎ!E¥d—Ö¶/vŒÐÑ÷¿6ƒ·Öœ@΄§#X'øÂ̱¯þa,b¨| ¹|l0¡ß9Srf•œâ*6ÅbŽ£Z@2²`ÀËBþô†×é¹,ÇhܺkYN1p®0ñý®/Û>VH5C“•d âÑû°ªð¥´p-ܹä­jB´je.ZÚß·Uµnþ°Ù o Y‘>áâØÚ¸‹ïBîƒ,÷å¸ý®îëfÈ"l H_·m³÷Qhã&Ûa&âê6Õ!ä¢X|ØWíMˆ}N0«û¼3*‚Iòt¨ûÓ â7L"B·Õ8cÌD¼‰ƒÿè̬F¿)± ;‰G€kæ°c;˜m¦˜'eH<€^IѨ`¨{ïWKuˆÏ BzŠZ"⿞@K(—Ï-e ÝŒ •š,¬3N™c˜â®Ø)“•-(8-Ç0q‚Ô}µ;úïÈ‚óY`T%RaWµ¶Š·6X/,ŸÑ!<.©ÞÛ&|‰¢Æûà)ÈJ…ù,še"=¿]U{Û´û Åa‡ä°1Nÿ)-~¨9‘£ó”‡)€ðøDãË®[Úzð=.ôëfÜUK{,„cìø­›¥¹(C…ìðµ'TØG"Qmð+×Lʔڗ>¶3­GŸƒé¥Ær­i—Lp‚?íÑÍahÝ•¿â#­8C¡¢3R>1ï=b$pâm»; p2÷9±ã:b†i’ !Õuè'_Ö À$C\ò>ÖX ø’Eˆ)šx>Áí ð“nãˆ[Z?w—,M¸ é°+’ás^$ã¬`É7è«ìÐßË@‚Ç'•mn_6 ¹èǶúP7§åü.1(÷Ïe[[1aÇ›§sŒ)ôsSkÆ'‹âôZµ ¢Hƒz:¯2…3è<-~n\9Î#ÇE%™Ô"N@þKIíõnò¤¯y5äL¿éuµ qÊSçgÜ„:E‘1{ŽÙÒ _ ‚+Xwšž@ÍÂÐ;%.²„1˜%ʧÂèªo½•Tpd‚<Ý6§v}Œ%°4Z”®^FE¯¹ ø1Ð3H‚Íîé.°>TWÆÆç ×¼E *0ÚµivËÉïO•;TF ±.t«6ŠK"Põ½dŸnÃnH·ñCU¹‰ôÌs÷Þ‡F :ë:‡˜qÔf\r€ýè@å<¾† î^úÏ/Žo~ùüþýbȸÓÿ}1$»Þ?Ìþûß%œ¯A„¸Fò΂ûlùmXä#'½b!-º:†Åà§D|ê°×¦ÅB?3ë Å^¸IÌzá ¬Oóq4“o… J÷%onªæ] «°Yv¹»i(J±ÄF7Aý #Äxê…l”-ì/_/¦LêªÑ|íãÚÄ˸5`´p:’D;ÛÔ)ôÉz7<êd„–‹ŒçfM0"©TH]ØoÅ'P0¯˜e;Ÿ_nBŒ…„ÙŒÉi's4IWî}C” Â¡€¯ƒ\U©°—ÛÞ“’MeLªñ¡£Í"ÔB õãûßù*"U%àÅ)¶ßËh;£šå[éÄSJ8w¾kåz¨Ϫ˜H¥ÅJý´Xí¹€À²zŒ…g¨v’H^¬k¥c<@ ‚oë&±ßvhú’VxþH¦©•ï¨ Ã&Ù±~¬v"„žâ¾i#* ˆÌ‡ÜŠbyÐÄ( T€ßFä:JŒ žWΘ±ç=r¡®!RdÝä^½ ìdÅ-JÝ S„ón Ïà/@ ¨&ú y–«/úú ‘aŸFP ˆ˜ßw}}ôprÇX!ßC:ôÂqÍÀJÕ8‰|ÕôQ‡ót¼7ÖWÂÂÇ“ 9K²,Ò-‹GwöЧYg2«;G²ICìc¯LØT'ªØ¡©ïÜw_[@Gß‚¨îZw ÀHd¼·IAˆp첽ˆ (PS]QǃJZ˜Ô™îÀ×ÇðõŸÆÃZ÷BÐ} lø„ü‹kÒê;1 –i¦~÷¦ãôûqWªõ¾ìÞ%^Ë3ûº‹-¼ìÀò)X (΢µ;½N°xLüP¶± §Rsìaí{îüU!ܶaZ nvõ1_”mÔN„)I£7ÜŠ–I‹¡¯äñªu–>¥Êxž#ý¢R v„Kžê‚%báìªâTwÝE)E\ô)´ºé¼ôñ.1±…c`P7c…yHmžU²/]¸R¡>p=ñV¨8<ØDgcC(qdu8ä?½¼¤òÔ7û²¯¢Í˜¡“Óór·{ ß éR„/Z`³•s>xÅåìÊPW2 Ö½/¯÷à}(À‚q¨™$¿œ pFÙ„‰;¡ŒÞ©¢8a;†‰,Yê^lÀÈMí{“Ü£c'þ¡î£xeŒLå÷È®×mdEQþl,†¬'Û4‚æµÞ,‚¤‹Úë.ZsЛBÈqÒK®âåy]1 sÜ9ä%5Òd.,Ò¡bèœ猹¶54»‚ÃÚa=µ2a"µL[„ÂÄèt#& “ÝX%ˆøuB/´bš&°¾­Ê%Ç”\†¾Ç@›é3 dÉS±" Qm]Wnr‹#ö!Dºwù8W»:ƒÌy3óZ²ÜøÊ‘'R×H×T¯»-…9òÓuš]ý‰MÜÌê¼ÕWbg‰XÆæž•¼AO1VÞö¡úë4–òÉ7‚à41x)!ø™-ÊZE×¶HƒŸf[DÅÅ.ê1s‡e‚òýM)iM!‹¸žóH}~SÃ' Á³¡*]ž‚šEa¥æ£Ö]F¢z~‡&Sé/i9#½ Ù*Œ¹HÈÜsÛìüõ 0–Ê‘‡°·ÍÕ‰õÀ6›SëEìšZá8yµ†UcOöû˜ÖD¢³ Ǻ`„2xå¦^lÈS§'0‚^rH L«’\¼t™I-*á™;§BXdW)QU»Ûu¸ A¨ú«ˆ´š˜hú˜³Ñɰpš èI Òpz9Vþ}}wŠà†/r•:YžÊ‡wPqºý‚R9A<=~nHDEAÒ1àÒý“åˆL.ήˆ¥ŠR\s¢^eQýé-„‚;Á"n)¥\Þ ÒÜJ0âXÄû0,Ã.H1Âís°kÁ>ÑìÒüÊâ'?IÍ)‹Ç^2Ð/ê‘ꃇ-×éRpÕ>… @l’°eí=lh*Óñ*-$@Ô3/ lOºÉYº 7Ýl­¦„b žnà-}hÐ|±M¹=½ÏÒÍÌ]}ðOÝE~’r·¯âK,˜Â„N1ЇÔ1‘@üJ¥NPµ©[#çe¹»9o§€g¤X¾Ð´‰BÁ²ùÊuêíbÑå‰â×àÒ æ{wˆ×„Ô“&ŽkáM€sõ¢ëN2;M²Æ5³º¹Š÷Ò`ßÄnÖàjÎ6žƒïç5·k‚MÏó?*Êd‘(#]kà‰î_vûǵô .ÿ‚¥œm¡fÄCK­|ê®ñ¡é[ø³2@¸ëO”¦¤SrÓó-(Z u_‡~¨ÍÛ™"©û€Ì¨(Æul¤§Íà5H ÷iÑ¿D¥Kö»DZ™¹lÈ8í®-÷õ&ªLN³Süî´ó©ò‹ „—µPO‡mõúPm+9â6ž”Üü[©Ô èA aǽ“én»ß1xPõ‰/Jùf_Á¯ç:xu¡×CÙ3jõá¬ј ‚7d.s?¶ÌÓ…ø·§ØËÉú–‹Ö¾Ðãc'cej?Ü7¡9ÌÃõÿßÙ"R\깡‡=ŠF\Îó$mà¹<©›‹Ùï ®{Vž§î¦–/ÌóM¡±)ùñ…E³C’®¯ÊmÕ> stream xœ­Zß‹äÆ~_ yÉ0ÜKl˜‘û÷Cg;v Æ$çßCÌÎhweÏHcIã½%8à—HHþ‹È{þ¾T«««GíøÎgîm«»ºê«ªï+í· Vð ðßÍþêÛ«o|x–þÙì^_½ÿÂÚ…)¼•N/®o¯â |áE!8_X{(¿¸Þ_½»yïúkXïäéúհީŠz§¤]\o¯Þýc‹‹Íéb[xi„„šça‰.œ”Þࣛ®^ä²`‚9|ºÞôøÐÂöñÙïÖi¡d&-Ü>àS8“étN™ÂZÆ>ú¼ßëtÁŒÇgÜ{¾„¿Zî¾ðF,W¾PNr\úrxYÊèôö‹ò¶lËz3¦Á|ÃÒ¥xÁã–^œnɽ-4©‡5+éX!„Y¬„WÐÃÏ®ï‡]+”"ï½³Û­Úãnø‰T…ð,]®¹Ìã…Fã³>n1½·*ùôÓæì„cµçiͦ©‡ÝUa$ݰo›]7˜( «µ:>ì®ê»a±-Œ"Ü ˜°¸ûõùYßUM‹Þ\Š wîÊÝíªÌb•¬*Û®Üôh„Ò…ô,x87¢Ù=Þ5uWÄð€-ZÛÅ ã%4†§Š—W…òÇ®L΂›ì¬n6Fà&!™¿#QHåÅh?\DH0È,ê²FÇAF§ýúîƒÁs®ÐJ§Ý6my×6Çz»i"drëÍzs•oN–+Yø ˜¾Ú•K¼.óéi×W‡þ@Ú‚YJö°~mEa Ú¬ ¬pSqúâªi«»ªÞ7pžRrâ÷hŠØ¥èîÖu¹Ú¯»oÒµ¼¦Òò©êŒà…ó2¹í­ä¾šÜ–²/]ÀKGW;Þ$ÿäœ|¨êmƒH4àôxµo:Ìжx¢;l²o³«§·Ö ²G¤C×õ}&Ág|ì³áÕpí‹@ÊôçWï~òÞ¯îÆ@UN(i±¶yãÒÑ%F\Z¨§ûðÈFxÊ÷u»YÎ"˜AZ ^~RívÏÛÍŽxRi7²å¬flK»usÛi(Ñê$d’)Jï\£Ù\d;„OÀz!ćš:£û@ø~_•_îªM9[Ž̨±b½ØŸ]ÉëÌ×^Ɔ' ž„ØäÚþ4ŒÑÅGn6Æ–Ÿ•ò‘¡?%Æp>Ž1¨m¦Ýi8ÇŽc •"Ç´H7Œ„àËA¦nzLy&©WlÛ¤#¹”0è2g3)‰.3àn’ Õ«r‡á–Þ&´ì›kˆ¶Ð:WþÐ]Úå]oÊÈ´óg©¤KNu-òÎáê éy•DtÂ¥X.¨c—1~Bí&dpV_Øj^th?¨ÉÜir›#ˆÍ{ºÆ…L¸»=Á5©žã¤Î3BÎ SíKÔßPÆ îeÒßqÖôaƒ¥ÏRÊôVÒƒéJÖ•c—ú‚cì$ÙŸÔßÌùËä ª.·o©¿¹¥Üêo V¹o¾ŽþÎ¥6Ëo¨–6ÒßP±-1àŸ ¿a™"¸õ7ÔSGY3ÕßpƒÜP~TZœR„¾§8ýÛ—öòí¹˜Û6••©"‚*ó`¬ÈÕ˜ŠùûÏ< (kÃ(uáì-tRÃðõÕúçÿ†ûj†'üëÿþáø°ýåÿ³ÿû×ýÛ÷»/þ±)Há´0‰;é²…r6´—aGˆZLB˜ÒÉ/ÖõÝl¬ÒºU˜6….–_Gù`Tn¥‡Ôfé™2ÂlƒG65àÆ`› ̶„|f.æsùjShtÔÇÓôëiã\ÃNâdîãA {}0›¶ $ÕQ9¡3‚ÚËG'ö¬u)¹Úu…óá }ÂòÃ}™ÆŽZRX'Á*=Ïôèî˜è(„&«^¤RV:Ò}ƒßªqËE¨”ð“öt ¬½p…Ô0A}›ÉPWm“h²ÎŸósȘôp½Û5˜"Óìо¾Ù¥96fK>DwCàTLg4¿è $±•¹쎩7$‹ð%aT®®ïKìÔŠ"¿Ø¼ö à³TW‘Ei'NmÙõmµécࡳHN=l¸L‡â¨JòÑm“XµÄN'ò9„O£‚´væ"Ÿ%"® 1­›¶*oÈC>ŠŒcüU¼–dœ0‹õ*LÇyüñ|ݦ‰ 2Y:ù­êu/®†©vrô\ŸU|y.±«Ò0Æ;ÌÜ'þœ½Ì@­Dic É«‘ AÜàT†¦N³7kmb=œg"¶Ù»H¤a¨‚馨!€ƒ["žÕ©É0!æ—¼/«»¤à >Lꀗ†:KN’ºC`&¡ÇYp1  Å‡Çcµ»ô¡æM£b<¥"‹¯ oÝ9Î%G­¥ÆLæžäõ…€ e„²ÀܤÆÓ'&ÖrMäÛå™(Ðú>vÎí¨}„©í½(ãgJ¨c\ÑáÏ}sXîÊÛ~yÓô}³__¸ï¿ŸëF< „PùtÌDèÃÄäðÙ ýÄ!ª–;ãÙ ß8õèÁ2¬]2×’ßüK—ñyzšm¨aÔ’µÒ{“S»šˆ•èä£:çÐéñ‘æ0ë@(¢Žv‘Ë¡Ã'³¿¬öÕnÝÆa;”\Á¨Ð/g- šÅS³yޖ뙿Z>.–÷³1Õ ï i¾Ëy˜‡9oÓQ²&•«4³C%áÔöqÛ{*˜!KÍø«Ð[çN÷‚ÞWhæÇÙûUjê¨*Ïùë9fø–!Uø2dé:„§ ŽfJD—äh\Š5ZØüÕ!3“ÚaÝu˜¬B’h>mVú‰V‚Ô ¸ÜN‰á /¢“BSq¹M±J°#˜?6ˆóÉÙ ÓCÖÛIqfùI“|<_·/÷Hý,8îB'i±YÄáÏÖÆpD0´žég»ËíŽá r"ªVŽd±`j˜ÔD ƒ¦C4FšêåWIl‚Fd’ÂñÐÍ!vÒÙAÙ0ŒB&-ûy„–‰kŸZÑâ‡Ä褠Ÿ 1W^‘§ -ÎŽÎîÂÁ=tôH—=ÏüŽ•œn„Ód Py7HÍ ÙÃÏž}\u‡ÝI±PvôÍÒ‡+‘ T5a˜jˆ‘lšº.o6Û< T{šç>OÍÃQ7ëûrèÏçÉϨ?¥S(êD?_¦šž‹`<£7çß„:™çsjÅu> stream xœÕYKoǾù9.trm§ßÀ Ë!,8‹@x,w›â8»³«™YS:Žaø\òøù ù{©~ÕÎÎÉ%mHB³§ª«¾ª¯|;¡„Mhø“ÿ¯NÞž¼°xVþ™¯&ŸŸüúkÇ'Ž8͵œœ_¤ØÄщQp®&ç«“OÿÕù7p׺½»Žk9Ü?_œ|r®0N¤V.}í¯|ãë¹?R‚PMuþ#,‰4f¢‰3ª RÀ“UI˜³R˜xwž•‹þÍ)'Ìrm&Ó½»lòeÝ¿lˆš‹¬ûy|±B¸òœË¶‹2x$§6ŸÎæ]>4 >}1+Õåpq“OA'UEO4[c(+×-â=¾(^bα§ð—óñT(I¨3¹ ²UüäÉ«u|·€Wå¹áÈÀ•'ÜTõbo:¢ÐÚ›'IÕzE‰¶ï$][Úu~µ‰z'Nšrµ‹ƒ3]Þ²m}qˆÕ¬ÿ@K¨a´Dͦz·šmÆ,ŠH‰Nú¼‰3K ×EñMz£S†!d—K?fDZÔ:kÃ)Óœ8“ix»æ¼ÿHîŒ=ô¢"Ðê«?Œ+N™ ‚BéAx%wŒÃc!Ð%?«¹Â@Âc ^œewZMå#,g!90LÆ;N±1ÀÔ½€ÝUSÎÁfÎ >‰5ž|1«Ks²€S^œºªÚÕ¬‹ $Q’×ã ôðÀã@ÒZŠ!HZ‹btëëÈœΙÛGÉXSÒyåÛvö&zQÀ„>HÌžÐÃÏïÂ<.‰vßã×;o‰Àdª|síë,‰1Vbµ».ÁÆå1JÑ”Ë‚× ûªBãá"G—Tf¿’9V>®}6XTu—Î`bVuÛÍ–KuG,ãÁUw=W€‘6¢`tñÚw½F‰§9¬’dœ÷-¢´ƒ8MWÔ“¾8B©‘Å ŸŽ‰Sàz*J°]mëyW­ëW³••h(\—ëÏÆ$:BÒÄÕ¬oÝ’*m¹x±¬.sH;d¶ðŸwÉÝ’O©rÉIb¦Šošu“CGQY@›¯ëE¬ŠR$1%*§LZbé ˜ý;?ßvUýfÔ H:ìZ>³ð¾Õ` ¢Q×NTkªôûÏRÌÊ¡ŽóãáŸ/gm{ëû |1†yzöÚP‡Ù2*'tH’ëÿmTîK HÁ 43Î7ñÐ÷aqQ:<ŽtßúæÛxjghzJoOf±óÙ fN É³&ÀЇÁ ’¸€`žfâ„+³²»8M!ÃìZ§Æ 5˜ómÓd"ÓDi;L HOƱë»'€«7K†l‡tÄvÑ!R[t'ÚÁw;ÿ?»_YäQâ8¢[µÅ¹V•‡§3@üx]/ßç› È4Ÿ6~SæØ;­›Œnä-ê8½H²S³­ëìVÀ¡—`íûzžK™åØ&\7ëz½mÓ›bã%’¤©ÂgÊíÓ„;TyœHRPÁ»`D2îlUÐP‹ý‡o–þi~ £8ÖÚ9+$ZÚòëÒ.*$òDÐl .°BR…÷ÿCé4¢ÀÞ<ÏŽuSìE¤àû¯îšêrÛùöIÎ7x¹é{ê°´P6àãi¨APÁb³êÛySmB<þf´•Uz@ÈþÝÜoJ"Õ„º¡‘”/ÐXÀÒJŠíN;Z2ЭÕ{Ñ ?Å—³ªM1t'#ý—³;Æ:ó™e¦hÆB ïáÖôòµX$ ¶ æ_ã»mSǧÀFãD».ó©Ë3°@'\žOX0¶ì(Â?q9 /øoX;¼ûþOÿþOjÏhò÷_þõÃâoË«þã_í‡å«üß}óÝòû¿$Gr00D‡‚ l›CB«ä‘ր4Å'/ÛÛ¦]7_ú˜vj‚,Äø4Âàvàe{š+‚fØgfZC $P‹ôò²…{›Ù¢(´a+Àû÷aš„r¥BË"Âx-ówgU;Úc";û8íg1$ÃÎeÇ<‹ê¾xZ«6‹èΊøê4ߟƒCå‚ £µNÙzžØX‹ÖûD±€ |Q¨ÍiŽÇêP1bOámA|[KE¼ûílYø“b£Öƒ2J²0fïŠbUw‡ŸLŸªxv¹^/3aB¤˜Àô²ò÷ͧ;P·ü§éÖê(ÝO?¿Õ’™»4Lj±œâ`òHýÂeùÙzQ]U¾ù(^¿Çö˜¨ë+=È!T(<"404/“T¬”cý>÷`l¥DJ.³fL0ð‰ª<úµ¢k¶>*°VW©ÀAS„­JYO«Ý>d“.a°¨ø9ðÕ"Ó˜ÐÈå`Âë÷«xæw}W5í-J©Šn( ¶Á¯ÿ)¼ªqc—\ †Ì ÜT„–תý¦áHRe »\žîsû6,,ÎÙ-ØHÜg °q?Ž©ýHo'¿ÃPÚ9ÜÚûÍúQß+ÄCçÂà鮳þŸÈ æÜ!ÚaŸ3êðMÚ<„­BÞ»(ïGF…ÖÆEI,Ø)…%ûÚìß“/g·¤r 1Aô.¢±°s@‡%Ä,p¼A–ßm7%ÓÇ!ŽÔ [³=ĠܪAòp+q>Ï+N¥)z}þñËå¬ö00&o ƒXzsÒí”𠃦Îö¸;+ _#Ñø~»9øSjì¬þ´“â`E½Çj;ívõf•õ€Å_4FÏd‡I†­ñÃòNû(´zýC€¯ì-°|ìRs?(NŒfÖÃËÒW§9±5EœÒŒ£Ð„¥>ŸLØT23L£ñ÷ëûÓèëëêªû<- d˜ Šnê§9,Ä.,^ä} „w;W¯—Ièûñ÷™£+ è690›([féÄ8GNl¿=Ÿüþ$üù/Y©Øendstream endobj 434 0 obj 2256 endobj 438 0 obj <> stream xœíYËnÜØÝ óÜŨoîûá O€ñd«³ð¦ÕMYŒºÉ6IYÑß§î«H6Ù’F™d°ú>ªNÕ©:uûkA +¨ÿ“þÝ.¾^|-Xø–ÿÙŠ?­/~÷ɘBg„UÅúæ"n`…ã„3V gHW¬o¶ß¯ÿ ë­¯_…uT+X謦Xï.Þ|nÓb=^lˆš ¸À¯yç—(b…p:}ºîú°‘ B9µéëfÛ§Žßþ²É Õyáî!}…;©Ê÷”þ“&ÆP&Ó§ý.¬S„j—¾1çØ%ü%“å®pÄi®¥·\:"­`iéÏa3'R«¼ûSyS¶e½ —)0_Óì#,éøøHæ Qh¤q W¼°°H à†ËT±âÎû¤Ââo›}°ÀKñš«Ûê¦ÿ¡y¨ßáVn3Z?6»ê¦*8"æxÞµ¯º.Dq“ñYý1œ/ £œçØ4M¸uÅ”#V±bÅ(q’™ó&½oê¾mö£˜”ÿ£NãµbÖi›ÏH¥ÑcŒ”ÆdlúÍ¿Þ.bÙa¥³p„‚# “'(‡8k"Í!<$º€Rþ¿€¤Þ) y?ÓKÛgþ8JŒzêÏ»öËý¡ GIMª¾ .­8#@.ï‡]Â¥‹Rî+#óå»ê;¼yš¦`#Ð;ƒuu {áX A¹…½a+÷ÁwhÃmà3ˆ¸?Ý qÕb~7ä¸P4pÓ6‡œ‚æ6þ“…l16 Ni›+Aù˜(ê’ üæ¿Á†"PÓA ´ÂÎ|5|Œh8BÄ1£ÎSDÀ2lɱU:êò­KL² wlË®+w)w ‰åkn#¡ H)«øy3_hϘ² )+ðÿÉ@¹N=çÊJXß·RXE*Š_ʺlùIÅ 5ûcdìofyì㯱T½|SÅ0:¡Ò »q=CbHX…å5,–HÙû ‹¡Ýi–á³XkÜ`nb1%ÀùiÚzo ø®žõþ³%„JK¼¢‹UŒ1DH̆𦑆Ð#cžföJhðPI±¶S†C¹0ÞÙÌÉ9³!†?Ÿ0Û‚®áÙsd6w¹)µ¡RzY=ÆØzLçÎ:%õhŸ*lXÙ6Yz%ò™OõD«Pô>Exª—ø.}IÌG"ßA*1¼{dû‹zôÈž_Dx`2ÜëN ôS.ñAÉL âϰ£ ß|¿—/ut’élN )€@œ>6 > ÍÝýñªo«úKÈ5è%”‰ Çßš«ÇC*òÊbŸºÎuŒb??§o-´‚ ì 4/Í[ÇíF•ÌÍÇcrÝp$RÙ¼Â'ÛTï.êzðwð.œS Ð]÷óMKòýdœæDCR/ñùMÌÉi|óÈÈý6¦¤Â$ì?•1tc¦Å †˜ªëf~Jí¦~΃Vkóë‹öe.ïÊÇîñý3ŠÇê?Ì‘˜„00ÆSkœµmvåÔÉ”C‡s²ß/ëf Å1$êë9”åYi,!Û&•ZIm6dW.6ß#°oü§ƒÌb=‹Æ@X¨¢-ñ™âEsv(oŸI”ÿJc 8©7žQþ? ¾ II‰V""éÍñK‡Út ›aDƒJG~©2¨ÿÌ̵ó¤áT@T ª¾¦M‘ãbb·›XI äòÛÝTJ\Wõ&«Æ¹ÔÁ<¢¦þ-r²‹­íÔc¨0 p^çñbÓ=j2eÿ  ï3—Ê’€1ÅïøEϸsï ´:Vá¬+ÀjäÓª=##d*E}2Ë;=ÔÙvSw{”£zgc ˜åÏ«IPI̱×È?ZàoŸiÏ4Ž vüµ|̺‰‹‚?)w@Ä %ÓvnVœÈ› øü›‡Åš¢ZÏ'þÉ¥šá{¾H«q.¸î7U¥2äŠaØé¯#S ÞZÔf-‹Þw™ØüS3J8‰Ý]noÚ]ÖNÌæåqx²„R…êËT|©í«6óš›T ™´ —249\ý„•Î&1ú)X¯XªÖâ Å•o7ífÛ§Ñ‚ ÁŸ²šüËÆÏÉC?brœË3Â,‹uçéGàÍP÷ÏÖTA&†Ç·°lgg%ÿpÂçHvŠ£QøÕ»«÷Rl©Á§¬ðÉÏï…óâKÞ²;O " 2.ÎøJíÄ4’#Ác–gÂ(üœø{BÆ®ž jÇê«ó?ãûwÝ FPó*å „%o5‘¿ê´$RâƒÄ“CËxù@†ô£|þ£ˆ:¶l)’!ƒþGY5Ͳ™jÒÉ?¬Œ{¾ íß=²Í¡ži Ž%ùhªô`”²Û\ÈŸ×Å?.üŸö4 endstream endobj 439 0 obj 2377 endobj 442 0 obj <> stream xœÅZÛnÇ}'üûèÜIß/À–•X°+$ç!/Ãå{9³š™%Í Ÿê[ÍôîìEŠƒ€€(õvwUWª:U« RÐq?ñ÷êéâãÅÇõké×êiñÍÍÅï¯,[ØÂ*¦Äâæþ"  KZº\Ü<]|)Åïn~†½Æf{-+Œa°ÿæîâ˸-”BI—®ªûª«šUå>’¼ Ѝø-h¸Rë…*¬æFº+9¨,Ý•µFpí÷®¢p>ݹd5LéÅ2ÛûÏ.nVÓͺ°\1eíÕ) ç6©sÛþ %1qµ\ qQÃõaí»2mäD¥Å»—¸ 2‰Lrü³U¡5¡iãÃß'ÁÉJÔZz D3M”‚å%óïäÚ€ÉÅbɬ»\ú3¬Ð…ß/hA„¤É×ÕºZ ïšÍv˜óØ2m_2](¥˜?uã¶Â¿…á"^ôº‰ÞÔL&WýWQCXr:)n< 8(ëôƒß†R¿÷¹\û Laú|ª¿J(KÖþ¶+_ÊÛµ·š`³,\þÉ_& Êñ²·ÏU3¼/û_üv°»%É ëº÷¯…$ÓbïÂÒ“¶M=o'æ°Ø¿„Påw_¿6ñQBëäÑ¡üõ€Yàq¸BÀVÎ:HAP‘T|qK¶„›ôÌÊ=³wë‚ÍÊd¬?̪M¹.´`^&€?¸÷ëîaûT5ÑNœ¢“‡àÐ%£D‚Ó`§ŒŒ‚ý[ ¬`<‡Kœœ…—Mò4ÂEá. [®7é¾ZÕ_Tþ$s±¨Ò£w?ÕeBïø¢ l›°ÞÞã­J¢µ‚¹&øÊ ´x[f3¥á,•2=äÕ ¬L2r»¡n„L"^êþÑë ±A$êÝÆx¡š§ð,›»uUÌã‹©‚ÀÎ% „MG÷ïZR*çö™ò¥n€ky'-ÏkI•€§ç¸8Œ&·d &¨N¶:7±ÌÐRBJóº+‡rxÝÌd‰<#è‚P›\ñÇýÀú¾zýÐU}ŸP0”ÂòïÙW¼e_¥#n €,áÂÞ}èè7Ûah›=qvðÌœDž$B]9túm3TÝOÎÙ/gKü¡*Ÿ«üL.ïÈ ?´µ“ø¾ê¶É$j~Xbvê»zô^ ¡~êÁJôå†S,?õ‰2ùgÉÇdžDü,™GŸyíOåæb­:@oÝ´ý¶;€VAÍ¡ƒ¯ûú¶^×ÃëHš¹DL3¯‡n»@ä_á÷¯¹`uâ‰WU_ÿ«ºªîêJr&S©#2·Ž, „ウWÌÊgGœúçvµís;Áü4Œ>tí¦êfÍ|ìÉoÚuÛ椞ñÜ_šªûKWÞF@*ñÖ` &쮉1ûÙ¸)KÌE붯BÓ éBJÌše³‚õÖçSiJª¹¼M1ž‚O\@K³¾7´=ÜàœcÛ¬¡mˆi‘#š¨ˆºk|Hï÷¹F§ CWßn‡=’B’·{Æ{&¢N8;a$ÖƒÇð2­fµóº†ºyðV‘àý½&ÔØ $ަÜåS¬ú\ Ñ“=Cp†f/9ÎëÊp±’œj‚SJbÓ¡—áê3žÃÒtLPu]}ðæò=ÃYÁ±¤ °LÛ6ÄN»í£óÀáÒª ¥€Úi¹oÓ°qò¨I!$Xºûò)z[Agî½6ñö ;PŽÑy»MiÄH‘ÇÜ©b;ºI؉ӑ”ëbþUãÔtµ®ãD OFÆPÄ× ¼ß®‡zgƒrµ8qGò¥D±*›ý7ôžÎÅ  GÒ1ûŒ1æô˜à’‰Á†Gºçׯ¤§ÆÒè"0!v %OB‰Ù\Çj±jŸ¨ÒÍSr‚Å êkn÷;a}÷íz¨¬NdùØg Ž¹Ï¥´®ö8¡$~ Ã¨oÔœk'Äó„o¡<Ë=ß²qBœù–3çœó†„Lï8Þi0üg+Èg9Eä·¾zßbØàW«rÛ§ k' z¬ê.™_ÌÞ£ œ”±q›K»©â(9RÈÄ»$dDFsÞÕýÏm(mÌyYr(Î]Ü$™?=Mà~°Ýûí{œ‡ ÏD„§Øáü0£wÎÆe,êÆbN\Åzd‡¨h!m%Âjæô8Q£Ò±€Öµ>Éæ€Úr{*_ѵʵàZhi¸úcøsÉaNoªx$˜ýÜÜb7S¦/Ö#©Ì+õPÇ(â…e)Ú3Ñc´ïuðP  ’ß7u·ÚﯮB Nä]¼Ê*ð«–˹Kó.îMÛ|ñà‡9‡ï¶HÄNòíX$»99žä2"òÊý¾Ü¥ ¹hrf§>Iw—Ñ'€V¬ õ*ù“Ò´õ1ho™Á:“L×u§ÅS>x†a´b‚r¨ÔnvUPpÔ§>É-AË'è4µÍbDF!¹ÞÏ-}p0(¾FéÝ~sÝíúA8‚†0Šô9®ÍG˜ÿžÃîD˜ž¦´#ݰEnŒº9£Â¸l¤4)ÀXVxc€e’'åÔõ݆òPxŒRÒ¤õ bÁ²D̲§sò0pŸËÿ÷sodeFÎÒßÄVJ‡çÌèÞÞ,þvá~þùÆ1¾endstream endobj 443 0 obj 2673 endobj 446 0 obj <> stream xœÍZ[oÜÆ~Wó#ö-N eç~IÐ’"œµU$ f—²Xì’’+YHûß{æv†ärW’Û… gÎõ;ß9£ßV¤ +âþÄ7û«ß®~[Q¿–þÙìWßÜ\ýñ­Ö+UXÍ\ÝÜ^…èʲ‚QºÒ Îvu³¿zµùâæ°ßðñþµßGÄj ­\¯n¶W¯Þwq³oÖ…åŠq¸Àíyí¶ÈÂpnU\úµü‡”„WËÍ5Ö¾/ÓFNTÚ¸}ˆ«p'‘éžÊ-©BkBE\z3lý>Yeãµ–^Ã_"JnW¶°Š)á$¶†Ó¸õÿ1+„’éë·ÕmÕUÍÆ_&A|E’R´ áHËÆGR« ‰BJö0MW”VJæÍ+ˆ°ÕšY§“ô›YŸºý‚DHë]5|_6Û]Õ]»ŸQmÒ ?w»øÓ% ×”ÉB‚sÖLJ)æ?ºq[áÿ |²Ýã!j¯ÈMÜŇ%‡*n¼Ž4Ø€£!Üï½/wþS‚6‰îOR`4*Ò•ßvåCùëÎÛV@ÀY–¾[ÿÙ­­a‘©VkJ Ú 1øêórá¦ïî«ÆÇg…e"ïK·^&ܤ­Ÿ÷C9Tq«±ÒL.¥¢ „±ÉÞ÷_øÝ`0Æä“»/ÌQà÷¯ê /ã…°öÒ©åéÚÒ¾cSAÒ5—àG¸jÍ æ(5ç=4 Ÿ-]=±ôHÉdiþs,™î$‚ÃCþ¬™Ë”y÷ØDe„Ö =†ò㙀…@Öøˆµ"á¬=úªÙ†LšÊü§íF±íÁAÜ $§a7Ú;¤üV—»wÉS|í » %õÔ¡çdÝV»òч–)àÃ$Ó¾êûòCV°ñ§ÀÁýu÷ḯ¼é(L>†N>À}giHC¨hŒ9NHiFRÜ¿ è£}«MýYÕG5 ±xÓW‚‚2ö®›më÷‚ñÓr±¬šâ…ÑW ëgîY• ¢ü§¢V÷!6¸&h½`Q €lY2É0š ƒ…ðÎÉX7¼ù‰sy ®Ûc³ê¶YÖ—AµáL}ytå<ì´6Šðÿ’Öñ¶¸[ –~àóþœ›TaÀ=Ql= ú%7Qdo«áØ5}Œv#dJ7iôPTϬç7£ýïʀϴÊ$ïoÊ„;Ìèd'“ß ¨«È…‹€µÍ‡ONn . 9ö6‡¬d$Ù÷1™²0]_m‘!Gç5ˆ¥QÓ¡%”`ä$)<ë¼Ö±=@ZGU¡š„SBD{ˆK’ë$E0\FQ§hªÉ—Á(ÒH–tê!øbô±åuå%ÃL½¯¢¥•À诛h)0þBJ4ßí‚âL´1Ié ¡ÔßG€¹R;Vb~@©M./È—'ÌfR—®é!l·¤ù¾Þíê¾Ú´ÍÖß&!ù%:å×HÏ Ãð­nÛ.XUDšÅP¡ËÁ&4JÒ/ZÈÔ$pp ÂUšéËæçœ:¼˜&ûè¶%x²ÏÅdù›•"V‰e¥¨I â¡ZûàÿåîŒe 6.7á\ˆíÈss:½f¦ö6ncö…’c±/‡MD/fÜ‹x—*vé`”bNž•}͉=Æ7P>3½jîüi©‚%Ÿ¾¬R Ã]j,ã<.ÀœbsèÚÈ5•Á„ۀѸ¸îK(=M Æ!ZϧÜÿKQçPƒg¦õmÕoºúà>újÉ8.f¡ªN“ìç» )ƒ ĸˆJ‚RÔüÉŠ(¯$MˆÀÖ€ &=7]•>`:ˆ!±$ÕCÜL´¼ð}d±x3P*Ipl¼«­·ô>`ÝtúétKP·\ĹƹÅ0oMÑ[Ç9pI®j þ@@Z͓ۻ'†íCô4t}Æòô}ÛøÎž*@ƒH}N¥ ÆZsáROîp?~€U¹i‡¬*w×g“"U:Š$è™%üÙáßÑNÄè´ñuuçT'3ÿø&j¢,zcÂÒ ¹Ón#R&Mæo1¬*h&žô²–X~»êCÝU\-d!2‚gW3E2„.qÅsùr‹"Ó–¡·Á¯â‚ÌX™ª¨5è„)Ÿ¶”=Q²¢tÔb?Ú‡]sFpˆ¼…b¦ÑçŒ"-Yt‡6À ´C{èʦKîãQ&—ò ¯œa™)%.*…”— >ãW€ó Mõpªà…KÀ/¬ 8G~YŒúîÅGï"k…Ž:ÇAt«€8 ŸXG€#‹/»®¾ZIЉÄwEbÃJêÓ ÇŸá”Æ*wˆ?4ñ"c°5iÁ›þ*¦ Á‚ [rS‹×·Ý¶¿N´Šk5õÄfNÀk!ø”aŠrá N1Œe2´Ilšâ9wu“| Yë†CηœÛiÒ™ ôÕ çEÇC´È³y­Å„­¢ Üu}Xû£g™EÆrÙâ ƒåçðµ™±ŠØÌ²±Ë]߯°Ð¹oØvUäÐBÓY`Á‰XÇ&M«Ø£ŸÖ´Bs‘!{L\-Tœ†ʾ5’; ˆ$ÙrA]Í>[UÐ H®Ì¼j.Û;D£cyFåŒ š@~r•µ[ë®êÛÝ1!¡Õn†–H¹ å'VÎÅÑ5Ž ¸¼‰“ÍÙhò¤S…²Êm®$5»]‰ÿd·2“ÀÑâ8•}±!¶„Ð8÷›_¤#óŠ<à$»@¬NÐ1WžËÐErŠ„†¢Z‡¦ÐcªÎ[O8 ‹f”ùe¨!€&ïõ&‘[A—ýs(¨ºÍ:utÒaÚ4"ˆÖoS]Ö3ëñN/ã^´F“ýT>¡ñrA…þØW{Ä´ÈRw1ÏÆnB!¦Ð#P¦!”6HkÚ„®¸P4r¤Pj ®é†£í3KõW-„2VK¬ªŠTPºÈŸyŒµŸ“<ìRí0pHhNaͯ>µOެ²Ü]G EN‘J;ê¾#Ö ⳦îï¢UÖ°ýC<ªk&´Ã]: —À4ç4 Ý¿­nËã.dwSÂi,Gp@[Ÿvqïæt¦™ézîgFÖ}½Müø{¹¬%âÏš+GÖEð’ z†CÀSñM;²]Çâ1¨2 FŸ›?¡iâˆ; ¹¤Ç9N”Ç{±ª¥«ô˯bk÷TÍlz¬‰Ìן3y;ûxõþÕwm¿ðªô»à‡k×7@[Å¿®G¯©Ô=+¥½éumô\û½í™ ^¾ EûŸIBŠôà’„ ÝOíPßúLTPgrMObÎå³P s5¸$ €œõ¯£àx™€oªò¾úß øéü±u¹0’P: –3 mí,}êjN … ó’¤.Ï„˜¾r¾LÒ¿/b–\¸8÷ “—Ò¯œd>ò>¼oO­ÇÐ1}ÒíO7í k ÀE"À“C¿ JÍëîšYän¦¤B ù›{%kªr¸óÕAh“ødb7ãÈ‘@©L´îÊXsG³ŸØ#[©°ÛI_ÚüHPK| Ëžš9éŒÜ£:Ê4Þöe(‹Ó 1Àj¡uĽ’\`ó¶9v],Ž–³ Mƒ†á6ÇÄôÈøÄç8Ÿ½p ôˆ{cXG¨?O&]§…-é(®¡K”)Ö  Úyíùc<“=Õ̧yUr¦-ðjEn£hÙÕ…táè1|A ™@?»¼E‚ vÐ]»O¤i<Ћ:Y,ý¿ÄU§ø}ÕÝGiÅ䯺TDE.ñ¯SšJ•ÙÞÙ>Ý!˜x¦zs7S¢ìó&5Ô¥öéC8ÑPkÃø¹]BÚX|F‘ eŠ•wȣ·ÊII+¦ 5ò©Ž*ŠmYîu—–¨™û@*M^$ÁŠk%§!ê°Ãœ<ÎL.¹˜úp(AÏøÜ¿Žš XÝÕ›˜ŠÒIïåðÑàD¤ýÖët0E""i*1Ab/íg‹þ—µÆó§‰$†[ùï%˜»F„N¿ÏÁÕEmžßÆyw³úë•ûóoF†endstream endobj 447 0 obj 3156 endobj 450 0 obj <> stream xœµZYÜÆ~Wò#öMv°Kõ}ØHǧÛPVû Bj†»Ëhf8âp$+ÈOõQÕ$‡;+[€²»Î¯¾ªæ» Vñ þòÿ«í“wOÞ]ð¸†ÿ­¶¿yòìÚ‹ _y#Œº¸¹}’^àž]X ëúâfûä m¾¼ù7<ëüäY/*ç<³~òÅ«ð•2Úç¥ëæ¶é›Ýª ?iY1ÃLþ‰WÌUÆK‹çßë¾Þ…ux×0¥óúÐ4(¬øþp_Ge…¨4“øè®‹OªÊ:†òvÃ}µ°"5îëÝz“~A44âíq·Ú.Ê!A©yþe•„ã¨T^ì¸(„ÂØªÑœ¹"pÒÂUÌ9”÷PoãªÐÁ8øúÐn›*ÛAqç?¿°`Wunבjà âš‹+΃—Ä’ŽÖà›}ÝšC<vÔ ×³æª2’¤l~[5û°ËeøM¹Jh Ùvwš:ÆŽÔ"ôCw›ÓŽ+·o†c¿kwwqUiNF«ÃØ2—vMŒ&Á+94Ãa¨‡æ2ËÍu±ä}“JBž>3¤™-Þ=ö}~ØV %ÆÃ•qE`OËnãžãí!YÜ¿ûdqÈÙøÛ¦¹ò™Ž‘YÁ 9½¸q¦xï®YGe¤­´dŠœ°Î¡f 7'ºhA‹äšlQ§ýTH"Å ûfŸÝËË]?4ëœ6Òz? mÈ:ËÄ9†¦ß¶»zS‘ äð综‡#OeÉ|å8FËnĈ€8ô–¶û˜<äµ´¨e½ÙdÓd•÷)š¤eL¸Q^’(I^i-Èö}“œkMNÓ)å[Švˆ|§E5P£é[Îë3OÖI+k=iµï›u»ê7›T¡xåÀä¯uÓ_fÔÖº“¨qÜÉ3n1е¥㊬#7³•as²€Ú†’¤@›¤èùõ“ÎR (pÏF1:‚vð Šý*û _ï2(V hó¶rʈqf§^]µëßV>žáF7I}9e>ú"½­øñÙ/?ç‚cTÉ”næó7)Z#Rb¬n0u=Ã}“B c…t)Xóøþª9`ŠyGY‘Ò–|AšÃÐæ‚ÄìW½ÏKV*ʽvƒ*!‡ =¹íúŒvBr\\7oŽwwþvü|‰\) )Ñ•RD€<ô]Â(w¦Ò~À)>¸tR85Ъizyå)S>´»u—CÖxBÌ9š¸á¥ÀrÕ<˜—H øjv,:BæiúšJ¯ª¤3§.(lë·™H&s:äÀÜŠ™6‚SIÜtɦ“ýÚœ“â·äVGpL\pÕm÷›&×T¥+mÄRS…?-CŽªá]_o·ÈD êg)V•,Qv< ¥†Z:…Ì¡à}0ö3± œŠ6ɺƒ*‚xÖ߇×åL?Šq?2ÒqˆîŒ[`ã’Lø4ƒ¬®”þÜ>oêÕiL¿½ë»ãný4: –ÊBÆÖˆ7œâùé¡ÉøóÚ zÊJúæpÜ ™ó(ë)ó0Ä3³zÄ,'KoÁ¨õ]ƒuO"f«òÀ·õLsfµTÎ¥«„§àô‰<Õö›:¿/8Qþ •ÅÁ¥@…Yi÷~¸çEó¥NeDŠS¥ üBŽãTCŒæÐ¼Í,˜WÌSýž„­> [àµÌΨ¡F 1(^ÿwQ(©0"³ÐmLÒ̾êŽ=¸>"t|B(ÂØRŽ÷ÇŒEÒ÷2§Ó%zß!OC Ü»uݯÆs@.õïD!ÌXô!à#/Q¤YäaѦ˩ Ün¸Ì̈ñTjA¡\È©)gLe P«I¬¤^Õ¨fã(oú¦ùOê&c¹!º÷²ÍƒŽp ^jSK[=B_ á1úÂp©æÞî«'ó © Œ¤Ôæ1©œ¤@¦î¤ôú#”„qv JF‘ eû °ÚR…ÃZegæ·^Q÷ãs[•.#,=»æB£Y‰­„rDÿõmzh6߂ʤ‰#Üv›|¡~(;‰Þh­³¡-•ž71W!-K’ç´çLRóóô6m¦¤Íž¦7µÕÅËYI#>gÙkŽS—š=W9)d™èôýqŸŒÜÏ&Tc%ª‰Áj)çÒ0+6WË#*'ŽgÐÛÝüœØûÓ°='`š¥> : *’qUÓˆG¬;BzHYIÙöêe3üT¦5sï:òùü xžôrz®cÂNæx®p"é ¤×ˆ§ÄO—Ükv OæJ@2b„9ÙÃÍ[yÈ0zÄe—.|àâSŸµ·¤¡Í'’ßbjÖ¢C‚ªb`,'®Ò\/¾;¶}nØ}Ð~T¨h^Tf|#… ÅËQR†h…Õ2Çu“vgÛ»]rU9¼¬¢ò€=fhLhñ´’u6GÜÁi"™X3ÀþPÔl®ñ°Ð†9¤~èëý9$£Ê•(Ì”X÷XµŒ˜å¼TW“næ4q8˜ÿ¥¨݉Ód¨Wß¿ÏjzA̬!ºÄ(†¥„ÍJGVx¶à„GûúsIŠÐˆói„y¼\¨¥¥á]¤“e E„çŽÞS‰ˆs&l•!<¬š“•KLPîfÃÎÔØYAþ=õ Ÿ3äDa¥>!À@³KJM›Ɉ2-Õé¤LS€ÑÈ’ ¢ gî ÖÈÞdêa…é㨬ÝçÂ4Å,ið¹F:¹‡ <“ îç,œ§ýxtLƒH Мö{¸ö^êüH{WÚ§NMsí…Òª,¶™n$VŸ` ²I©9¬1ƒf­4¥q¬O]#<é5 .G´·îûö=’8Njp´ëÊ}V)«ÒŠÇʪâÀ( ¶˜ôÀ–ðˆuûç‚6´E¸|<äĺ]æ°#¥JÔ¬›ÔÓ†JVÎÊþ²Â ÚCl›!7£4ÕŒêê}»ÊUL;Žxð4ln6ŠiÑ2ìt® ÑÊO.4eIÈn4!ûê °ÄU·[b8QIâ ­„4SÞ?­»r¥6€Î|Ômß7€¼S­îð¾S8*~mqmÓ6NKƒ®!öõº¯÷ù‡p/Sn œB¤–ÕžXx—‡aŽU`L|P‡î*_Æ„a™£az“¯]`«’ÁúÉ’Ï® {ØNC± W±6NРOq9žAe¾*¢¼ˆ>ßíÃÑ+bÒc—ŸYMɾ:æv7Î:ЯRXSôÇɶw¾´Ì‹Û.æ•(0àÌ+È)#mB•›ô¾QŽêh†å0 §‚Ý¾Êæ%Ð˘€J±³òa°!}H¶y_or¼;FQR,Óxq/hm£Æð»¾þ€Ý%”^)(®þ†ˆß¹nÞ7ýðm·Æ+ãˆË—çË°Ý §2-m|ܵ ‚…ª¤Ão1nϨöã#ªáž‘ŸjU¤|=µô¢ž¬ð—ŠfUŒðúË.Mp8˜~ÞzùZYšõoøüª¼›8xê˨o(¼ÀD^Ó6OÓ¶>Š{Ózx4P/ú:ºUi@¶ÇÝð:{‰Ç$›„†ˆ 毧6œ:ïõ o}ý°m•›Úö›þîˆPh*É)¥†W€…Ò›ðTe á•ì•äÒŒª$¥ð”§èПÐï%Ò'IáÛ¬ n¢í-±×ŒÛ¢’P"5áñÙ0Ò*—‹ìílßyB͸…ì÷"! ,Õ»¯yµ‰°ã€ª²òþ™âØ@/BD瘅_¨¶Ò$Z託â/N*篳•l´´çãîúCØÑph‡”N›IÏ2PU)Uô]„ Sµ©SÿLÑþr%ÃÄËÍæ9B ·ê(ók·[)*êC–¡ð9òí ´`1=™‚‚*–NýôÚ±ÜÌÓ·u&|k` àЊP[YXhz¬ïSƵt£pLN†[VléA¦ÃPo£fÊO‚ãªÁ·ôåšÔaC³› *üK,{ÊJ˜•LëýÃ,!+<‡ZûO¤çËì ΄æ+Ò7!Óùëz¨‡{¤Ú¢ÜžÐjË :ÈÓu¦Z/. §Dð¿g^|é™’Ñ«pQÆgïÉß¿¡\¹:;p=ÎÎtɯыÑHÐ>ñò}Gn NS+\J‡In w\§Ôú®9¬ú6~øÕ"ðáÆLó1gN?£®¬”§íQ4|§u)©˜,îèa@+MmÇd²šXrsi„‘²§ûø¹d¢¡÷µóa$`5§‹÷q­w|ôeÒ¹Z¯Ê½~’ä ÓO>'œ´©ÃUÚWÄöÛ”}¯p)ËljQŒÐÔÑÔkW¢Œ¿Ÿã´-´I|þ5" î}Œ²ÃkÏ š›?5+4<·dBIwò…_¶P^ö)ÚíèóÐÅë\¹”3'3=ÈL ŽxT¾ÑeNÓ MÝoÚ œP„äè Ñ?”lᣠ¡Š‰Ï|ÊF@ʾ›€) ÅÕ›Îz‡ˆ¾Dà‚Ê›zH sñ'áï_ñ¢endstream endobj 451 0 obj 3808 endobj 454 0 obj <> stream xœ½Z[ÛÆ~ßöGè­6°bç~IIÓ´Ú$u¨ö…+q½j´Òš’ìúß÷ÎÌ’âJZ;)°jÈ9×ï|ç̼Ÿ±ŠÏXøKÿ/¯Þ_½ŸñîYþoñ8ûææêo¬™Ê[éôìæþ*¾Àg^T‚ó™5ø†ò³›Ç«W‹×7ÿÁz'ûëçÝ:¦fs,ôNI;»Y^½ºmÓbÓ_l+/Ø ¬ù:,Ñ•“Ò›ôèn·ï^ä²b‚¹ô´^ìÓC‹ÏÇg¯óBÉL^¸ü˜žbO¦ó>Mxd*kWéÑ?öËn®˜ñé÷ž_ã•$÷3_y#Œ ’+_)'yZú¶{YTÊèüö›æ¾i›Í¢ÛLC|òR¼âñ“^ô?ɽ­4 ©mX3—ŽUB˜Ù\ø ‚î~Û?Ô›ð«ÀŽÊäÏ«â&K¶8´¢[l+éE¶Ì>Ú@iåÝ@ V1IzíšöC÷Ô©,«Ö´i¥ó.‹»_=6U·©„—yéªý¸Ú5×á7Mp§Žä•Îf7®ëÝ~~¿Ms؆ÙÍ»€Öù1,ñ®I«}±~'-F„å§«]x!´aEÅK ñ@Æßwp^)iä)qwOñ‹ˆCOæY¬~ß,£÷Œ¨,·³9>?‹¡lðž…Gã[·¯¦ÂLVÎj••ý 9SêJj•ßÝߤOŽCJÊJ32aVß áó«mó´®Q\é+æxVí.f£š<ö)èÈ­3¹à> P'“A÷¼ÿ¦éìqMz^ì>„Ð2]]ðž¾k€oÈúŒonPL¼‡n¥–^§ð”œeÜJh1D‡Éøn£±á>a)jšv“> _É~tÅ,QçÓ+Z‹{îÇL /ýêÝfÛ6ˈ\ƒà °XãQs ­‘—e|&F[ a)4“5S\žñÄuŠ£I¯Õ>‰clþ`*ÚŽ Klw±}Œ… øsÓE©)°^’+è>*Ò@Ê—Zã95«DÆ8ãyé”Õ³ád ž\ c^© ôHiåå9­bÄ+›àCÞv1DÙ¤gjG¡)`¸=¬3Ú òBDà#@¬#Z { u± cYÑ68ØOP)Ù¶É( æ\·':!•,”Sßm™=Æ/2® »}²±+5ÿ[qš@æÃ*ö,]g@,>õ~E¸LCSôŠÀ!Ž›q©K‚Ñ$lˆÜˆI_èǯ6Ò⸺"—ÈÜ@ËfÙE¦„>Å‘(Í¥fp9DžzJþa«óM½üg½ï²WéÊ*о‡)9‘g%Uš¶› …ǰ;¬ÓðD" ؘ}{[hægTrÁÅ…tRK"ž òÖÂŒ'“Ï49(AÅÑ›T 9¡JölÜe±eÌ7©jã9AØ|jŒ×¹Y«én‚ß³´õú³À· )þoݲé5ëDæJŠ/øæqɽ€)uÌË{Ò–ù„²ìÅ£³s1ÃÞ ùfgçfi&Cå†Ç§fa€Yê_np.¬vÇŒ²?“ví—ï>5„ÛŸ²,%‰ë#G>#ͧ}>DîflñP&WX&ܘñ÷IÊ)VÄ9ö"?ÏÆ0ì_’?¤ÑÂÑÉ¢)+›ÚCÀÏÔ4¯C ¯>ÓØ±^ ¹øÑ±v0äÎ/Lñ/ï0Ã{é•ÚI‰:ˆßÊ%×1Jѯ¨1QïRd‚PÈÞ)pZ¨´gœ¶KZNù¨c}çR“Œžàý&ý=âOž1¾¨òv¿Å‰©¬4C±£@h3Md¦Yä1H8b3±ó§’åæD¤8#ñïj}•–Lj§õ.§+Šaþ ƹ ؽåð¿ì”Ez›çžò÷4cÓáèjDÙò„y2ËU˜ Q3ðåÇ­JÒ8îùãV[Jø·zÈO­Ùå§^×)!#^uw@L™\“îÿüÛá,ž*,ݨ³tKˆ2éÊ)Ù6‹Æ\¡Œ÷©ÖëCŸß#r›.“pîr›«HjÓúM TöÃÏ¡OÕtôó·A*@Õi¿MÂI€­BÏ$nþȰ¼0×ý¡ÝÄÆBcùxÝ™ì+?sX6?sw¤?WéË9.9w{dmº'"¦ÁÁᄵƒ~AôË.£×'UwÿJ…™AýÛŸ?m‘á™ ÌnN}·>ì&+‹ëŽÀ<ÂÄܘxá&ê6HÉõé)‘àXFõ&ö'àOcÂð)‘ÐNÂêÎ1y^½Nî×ôåí¾åŒ(·ê¶ÛuÊ—’‹ó?§LæŒ*ëaÏç>Êð,Lø‰=;[”M ò·.ÞôÈ–\„á(ÅATLB([õŸ1Ln¼Û¡;°ÅLhèØ6e8„û‘>YÖ ¥pKŠ@îúÒ­S$:A­äÅg‰yæÀËìy›™"¶5¶sÉÃñ´ÒÍ/8Ø{h߯9è$XÔ P¾mv‹võjÅW“´ü–/OIfÏ:a)Œž÷*D1ΨRYKÚݶȟ4ƒq\¹`:ÕÀoû§H6Ð`(IGÉw‡ß¥Áa¸‰ÒkÓs‚v=bB—i)÷'ìë|> Zc‰—ž¾²£%Õ¯r5 PTX-\·‹ß•Ü ÑIŸåòYjåÇ0©EqŽŸ:L‹ ¢Â¡ 6||°½hÙWáFÅþ2ů ‘Ì×yœÆåOñ #ˆX4»I¸Ò5>w§4 ÒÙÑMÛ@ÒܘÁÛÒg<Çà«ô¶p´Ë×ù8Ír:þšØ¹Žg†¼<¼[–MxâD$øEœðJ|Ó˜Ò"Þ.×ÉnÝ‘ÝF"ð3È£r£ysîïˆ×Å-£É e8 ‰)ä“fذ†y†#ÍN"zå¹ï›6í¯9M ^z©†•`:¹’Ÿ±_HeF²¼]¯î®'1NU„ §ÎKÞ?ùÙ%XJS^!Ë)Ñz•†j¾wð’qž@³~zZ‡B ÜŒW¯þz3û×UøûÛì§#endstream endobj 455 0 obj 3417 endobj 458 0 obj <> stream xœ­YYoÜF~WöGÌÛ: O§ïÃAÈæÀ.°Gâ °~ð Å¡<\ŒH™‡å×oõU=5² Å@lÍꪯª¾úºç㊶¢þOú»¾½úxõqųüW}»úÛæê›·Ž¯qšk¹ÚÜ\ÅØÊÑ•Qð\­6·W¯”ýzó?XkÝÑZljµÖo¶W¯Þù%Œ©•KÞ67ÍÐtuã_)A¨¦:½b„E“Ƭ4qFXåM pYy“„9+… kë´¹8\¹æ„Y®Íj}´öýëÃņ8¡¹H{Ü!V—ݹ§ð!'9µéiUOé¡óñÙß«¼PPnïÓSØ“ª¼O[c(Ë ÿ9mÃ:Xd”˜sì5üOFÏó±J*!Lî¼m-C6äðÒšœ‚]Õm÷m÷Á¿‘”(¥dz3ôóÔv ño„…Í9Ë`t)o†™÷ƒd 7€PŽå“æˆ0Td£MŸiéx^7Á%‘lîCÓ5C55!t ¡s“w¿Ž©àBYùøæÓ®IèZ†;Í|b†pFÑϘFØÌiòç‚J‹Îœ›9ù$ˆf.§­í¢”*™ó6õÉ, ;÷J²üñ¾½ªááφ’<øRÊŸ¥Áñ²,¸’¸æšp †”6¬û›„=sú(•úXÛü¨ŸÃ2IÅv¼«Æ1b!ÀSŠ©»©öcóz©ù¹"Ò™ìë»ßºz©~…†mX.ÐmŸ<4Y}LÐ:4=ëú)¥ÖIƒMÖŽu5D'%$Lñ“D")ÒÑ3 –ɨ9ªŸmMÕ¥MJ>„ Œ¹¼ør&°Òž“‰i˜—±ÚOî¸È.%DkËŽ1 \âò›j¿OΟ³/Õ£A…¡”=ÕI*€Bœp›·]½Ÿ·™ÞqÌI´ÓÁt„`^ÀÝiW…äœG³÷‘Òu 7Av±'Gßeð´9¯ g; 6r…–ÄÐÄBØC~´@™8Unú¸ãYG×(›Ýz¼ÀœÔªÆ”(N‘ÿj(‡fKRRhaëömDÔãd¢¹‹i¡‘…ïîöm]Mmß… ”òý›ý¶¿Mıº&ö‡‡Âž°1(©\Ô(0Ià¿'Aá0-‘Í"à "…Ùȱ¾ü«Ín{ <¯²3ï~ÞÏãnqÁ‰ÝÍÜÕ4•UIËû Df0@vgCÇpô†ûÝ<厡.WáõüU3ä¤q‰óô_ý8%õ`)öWSÉ ;(?Ì$ìæ“eÌ”Q€)qÈpFçÛ1{ÐxmžÆë®^;ÌIlâ¥V©«´€H9;ÜP KüD]´]1d‰´XJm:`™§þpñÅè^{Y…B/&u›ŠÜ¶XTÍÐe3ÂãļО‡D‡\]ˆN`23Ñ1¥2ÞEi†AM»ý›·^¬ù (˜·aÜXc Ò">¯Ñüzˆ“„3‚d¾Øa¿ }×&aýÎî¬Á’Ñ6—ÊÎðÇb›A+:¯êA  Vz2’–Yþá.«ZŽ2¡ߤˆà”ŽÖždo¼”w ”× hˆé°öS§Ÿ…zB2:ˆ&XÒž¤Ä$N矬ÿŠ+gîÚi98 ˆJ½òÚÎÑ$ê`Ïd”Gõû#±xr‡þOÁèS¿ChÐ:HAûêC"Xér¡~»ì„$rìÞ÷Çù6–š}Í0SD{ $*¼Z8*S#ÄMOÙÑëpèèdá·;”ò˜ÂºýSdEhFcK?§Y͈*ÚfLÕå3Â¥;ª®*sˆòÄÏÜQSƒG ©‹`¨®÷©k9‹¹'0?… Z=…«ÏäšÂ Ä$(RçüØŒõÐÞyÞ,aí˜ÖÇS(êKèmî¬Fv‰ úJQVœD°ð¢®»õÍЇ–”@Ó†³Ó–„þ²Žºó–é­8õiâ €z3H=Iý¢Êaøñlôó˜H@”«ƒ%6ßUYT L§¶ Ø•<|@éb6H˜'±Y§yÊÈòHÀeØ@ H(°iÿIÞ¸ÿ ÙB?]Å7]˜áÙ¸­Pò¤ÀþýŸÍOiÂ)o©Ï„C2*ÓTa Ôó0$ayu†Ž!Û Í¾©Ò˜†fâ(¶wiÔÁtP\>§B­ÆIvÛŽã];F–£Á~Ê’TdqÇ3 öœûOèô´aµ?´`ƒ<6Dµï‡hÖ6~ˆº…!ºIùÞ¡êÆ}55?%¬A3oõ»_ú4ª¡Úl£emé’ÇÖþ%r†„ã¹^pbáˆ.  Ü Nö 2åý«í8Ç_×»v¿}ÿuÈ®¿>Ìþwîÿbjbf@`ÿŽCýß¶Ûö÷iâ»Ò‚ÛfœÊ;Åü¢)Ÿ!”"îxne­~A»ÐÙá𕨳»÷‹ „z‰“ƒ}JÀá©Ü@,)Æ~âå·ú‡SwÞ:;¹Ô•ý=Y– ”ùƒt&èc¬Ôþœ„‡ÏŸ„ŸŽîs•ÕSqùÝ}d ň”æ ƒƒTá!Û‹£\-iÎØrÍ×·ùRÅ!7NKÁ*êqr/ìïáà*Qc¯T]¼Å‡—–'—æ‡ëê>i ƒ7†G­z—Y[€ƒ£o—ª‚9½ý¾XZæ ô—»Ì_:xZ:ß“G0Œ'ðhûÙàKø·@Dß6^ê7±–]Œ)#mêѤËMÒÃùºÏAºÜi< é/*öe¸•ÿÑèäB)h& e²QOÚKÐZ`5ÔÓÙ¨-(/”{ÕåàŸvaÜáŒÍ»€2å‚6 gPüü–öÐâÓˆ+Ž7vå’Áÿ&𖴌ܩj»tÚ¢Äh¼@Â;yg𫊅 aFæÏo«»¬öt™ùÑ ó?óà\ Ys«@»,å#çö7H$úüN÷@û.TLùué"=þ´Yýzåÿü§ ºendstream endobj 459 0 obj 2279 endobj 462 0 obj <> stream xœµX[oÜÖ~Wú#øОœû%@Èq °S×Z z0л”ÅtÅ•I®e·ðCÞ$èïiÿ]æÜ†¤–•ÖŽ’p.sýfæ;|[P êÒßÕåÑÛ£· kùÏê²x´<úê¥1…&ΫŠåùQ¼À Ç g¬0dHW,/¬.‚óVŒÏ/Â9*‹tV S,×G^µé°6Ä Í(ðgNüE¬N§¥×].2A(§6­–«>-מ–ù  :\_§UÐIUÖSù%MŒ¡L¦¥gý:œS„j—Ö˜sì~Éd¹+qšké-—ŽH+X:z.s"µÊ·_VçU[5« Lùšf§aQ¤ãc‘Ì¢ÐHåæÔ.$U^,¸ó.©pöqÕ­Úúª¯·Í×s’¹$Ži],À?kd¸³¼¨æpYs9~gË­Ev¬-›nSöÕ·Ûä„!ÇaÛ®ëöº9+#\èìßù®YyƒýII‰¡4ç¢/ÿ™2i¦7Š„5Éy^ë£ Ìk9O‹]»z‘VTyu[7)EÎ":ˆ,q€×|nœrDËç|’>’&ÐVˆúßàî03F˜G˜•m“Žr9u`!Œ|0ÈóáâÑ‘í®èŒ@Ùe{®ëfdqH @4/Ù%·¥CËë7Ño‹t4‡¾lØ9%ZbÔ۪ߵM!¼`Ì7Ù38” Ê> PÒñ=祴Yºëc¢±œ’(©>0òJÃì)7†ïAGRŒËºêúz3¢•ïRÓŒ€s °a-;,#`cb’„@«r"ûø·ó¹rdÎ Šïµ¥ÿŸš™ôK(<Ôù¯ªÝç$Âf? Ì~ÈnCù‚×Ù‘ë`#, i¦€ƒL7Šuµõ…C ­?l£ln}77dƒ‹ÙDz­R‡—l€b“R®™Íw×õ¾!9”vÚ>Žç„Êx…vZUMü Y1µç 4Tù™PeZñìAÝEÌBsYÍ«ô˜¾zHÀ•F"N ’RÜì#~Êql°wV(Øåè­a\¥8J¢N¯¾¬›*Aø ¯ózôv!,#ŠÞ¨œ2°vqY^]%XAoË£`?Ø)Ï'Í„ña.]Ô›ÜÂC²° ¡½ÆŽP6À|³˜ëã¬Éº!ŽeÈ÷¦­îvý1 ð…0ÖUt êôcQt ZaUýU$5 @Lˇœ·×uW7Ø¡øRövQæ™3MOÁCIyàNù.ŠÖFHDÎf7Ï$P6›¥~¿}Ü–©ëI:mÀvæòõ¦šå0`¹@:"òÕ ðRØÊ¬Ö3Η(4(×£¾ÿùÇÿü75šîþïû_>n>^þú[Tà +¼‹ ZÞ˜ïÒB¨r€¡—ɬM²q¾½(Ûgª²­›7!Îo;>Ú~9Ù"(ìxû‡zÝ_„=ˆ7jÚït«Ø°4´u…í´?Ž â ß“ ©%^ót0Þ3…Æöò0»&jB|€Y„rß·õëNŽ$”=ZÅ÷³WëeL¥Zœ…¸J7çIÕ%Šê—@'Œ2âN(/R%iB[¹Ébÿ‡üë7ÎqžùýÓ¾ÝÅ7‚ò -_]|“Ú:NÝ„sà“žoÁè2·«ùg«‡¶|«4¨} ¹H;$7h—ì÷,{T/ý!õÊè|„÷Hÿý¨?Ôy, 4€bCýL ö Ì^½8·òGø¤}³»Œu £L0,³D9ØžY¡Å8_‹ðÊ„¡ +T£¶ñ•¹.û²ÿpU%òÀkàö_# ‘Ðö9žfø$JÿÞ±y=ª@/@ ‹‡˜ÆþËÀþìUíaÃòäâ5–œ „ÐÌÝRÌLaTPõûRê¹k~y¢l]Mï LìÔHsµåœ“È&¬Mýq~ÜOd§ðû” ápˆGàñø2šå•‰Z8À[fUSç/(þQ"·ùãA&²ÖÜ \‰žJ%‘x'Žl`"bÇjX¿«×»XìPUZãà/ÕfÝ%â¥Æ‚$Sp­¦²÷o ‹ãÔ>‹U üÂ4­ƒ½ï%À݇ïA¡ú‚9ÀÛ%>RU{Ö^Ud–Ù@Uû/0P Ëߎ<±áûÄæÉé“ LÎ0ø¬²løZ“I ÍàåÇu[… Ef˜3ø~rú¼n¼ëqÏÀøtƒÚçåûaÏ¿^øäÞ£}Åb¹„GËüG †CÖ·güóäôd³ñÒ»ïÞ×]²œB/Uú–ЙÝTô¸:/w›­uþ“âÔËGÛ]³ŽÏHoNF'~Žw%‘øµäÅé‹„;©1¦U‹Š‚ZOÁoô"½§ ÁËý[Ò1ƒyH.áñe¢oÏ'RJè)ŸFó‡ï”<†Ù­’ãúv¥÷r\7o†CGsãÈŽ6ÝLÙqRžVõ›‹/9~¡Ìû†ó¾U ,úÙÖ)Œ³ÍÔ˜Ý75ÎÃx–Ÿ@Ñn31£ ~b8óëŸÀKüñDñÕy77Õ< °C~Ž(o°$³´[9"ö´Cág®Oµ£Çႊ ìOR~Gr‡DíRèûЮy™ ½÷þÔ·,þqä~Õ pÄendstream endobj 463 0 obj 2008 endobj 468 0 obj <> stream xœ½XÛnÛF}7òzLZk»÷KŠpš)¦n, ~ð #Q ‰rD*µQôß;{%)Ò²¬Ú…XÍÎ}çœá×Fd„í_øº:ùzòuDÜYüoº½šœüðÑБAFRÉG“ù‰¿@F”€s1š¬NžKübò'ÈjÓ‘5iMA~2;y~iEE\ Ž>æó|“—ÓÜþ$ÂËðAÄ«Tj$‘QL «’˪DÄhΔ“ã¬-9¦ˆh*ÕhÜ‘½ÚaÙVÈ0IY°}æÜAš1Ýù\Õî"')Öá4›ÖáPzö.‹‚ Ëx8û+œ‚M,¢¶DJaß×3'' 1KÄr ÿpï9t¤!É’i'ãI&Gcj¬ráî|Ë–NF§œ¾½8[.Yd›êÍMQÕ/­„²—b<—o×e}Qo¶>.!'ñòøg§#‚i,éçõÚ™i¥k‚‘áDíóáu>϶ËÚú‘< IåC](ʺñ€ï$tŸ¿å«õ¶œUÉ>“âHû—6ŽFÞûE8ÈìæÿñcoEÎ/ÎóM§«Çñ¢#¿„–s®Q*„÷wHŠÎªi^6*”yŒ>Q‡vêŽõ£óÒµO•€ñ{›ôS1«κ„qH“…£­ Œ8?(thͧ´~ÿ}—_u2Oàæ#˜gìЇùØöw±qL4GJÂÀ¢i"|5Î6_¶«¼´¸DŒ°hÕéÐv©8!&®-‘ä:IÝ^ŒU$ȼ† Ž‘ÄÄÚ¤£€§²:«o¯0qЍ¡‡Tý'{bÇL"¾ž÷³ôw_Å|ŸFB%дŠO]Eáœ1ª»›|Zë2]eFµ®¾Ž¿'N ó&VEÙÌC¼©esMìôò*»yÀ­–­W·uNÒ5žp¿sÏ{sÑØ¯/³>1BÚÞ\·çwg»à BfL÷PpÕ…ÝNiZÀ±¯0]À|€†èÃuêÚEº¹¼NB-iÜÉh $@£$d(öx'“Ý{ívéϤg#€#À¦Ý áÜûcQkS\§7°Ëà)G†H ¿öÞLyå^=ÕH™Át]†§*Yrå›`WêÈó²ˆ,žqàÍiøÌ·¥{lU(Z¥u`“×ÛSœž uÕ §‡( ú¬I嬸V̶~\Ãh”25ݳ|9súa LtwÊÄh"UAwoO[”7ØbÖF&eePþ'G›nÙM1”Ç1P7Sªo¢/aV„y 3G®_˜‚Ùh¨¯¦Üýöá÷É—-Ø Œ")¢ ›´ßÂ`§ÛÍÆC Uˆ™&#ÄÀŠ‘j³Ì3ß`ŽPu,²*(V‚Ɔ}{q–™BqïÌi`ˆJ][Uå"‡6T<í=ùr™»Í‡2D‹½æÍõêÈ„S½Î½yÈ€ÂBöÌ÷jcÔDßÑð»ç°²úÜ"R—’ ©•|JÍw:¤VÂêhx“µÈ±ÕY¬çäuZÖ¨ ¤ÉQÈ"`i»Â»l MÛ¬œ fÚĦçÓ#gC¸û°ÿG7²ïJx½¤ÙŒóg¥¯<ˆy®îà-LdÏÆÐWZ%Ι}:NtÊÒ`êóc{¨Q FÓ˜ºjï‘}–8¿zÑ'9?†õǂǽ+€V‹&I;&Jï„\„'Nô]ÿQì[r­ßø}v!lp´ËÚ/nãhà*=Þ:»¹£7 '¸Ñ4G™­ò*{bTlÄ8E¥½B„!"µ‰`|ÕuÈz'S°}ˆºß ü$Z#Ìùzå==µ[åC“DS‡>2ôzÇÊhà, ;<Öõ7“Ñ'öï_=endstream endobj 469 0 obj 1620 endobj 472 0 obj <> stream xœÍZYÇ~_øGû$â¤ïÃF$H„’ØÚÀû —9ëdI®f†^)¿>U}ÔœäR–$ ÕS]çW_uóÊ|ÅðOúw³»úpõaÅÃZþg³[ýéæê·?Z»2…·ÒéÕÍÝUü€¯¼(ç+k@†ò«›ÝÕ‹Í·7ÿ‚ýN÷¯Ã>¦VkØè’vu³½zñ®I›Íp³-¼4B¸ç¸ENJoÒÒû¶ rY0Á\Z-7]Z´ >®ýµÌ%3yãö)­Â™Lçs*\2…µŒ«´ô¦Û†}º`Ƨ5î= ©¤¹_ùÂaj®|¡œäiëmøXÊèüõÕ]ÕTûM8Lƒú†e£xÁ£H/†"¹·…&% _:v­˜ÿ‹ÕZx4IGÇ5?wÕ?P¦\f³ºö;\\ ^€O|:jþçcÙuU³_RűÂxXŠRÞ>ó@†ÈKÕ¦þ¦jqY¸Â1OÞ{¹-¸P94ƒƒ¤.3Y ·Þÿœ¤«4I)C€Am-}³)ƒ[µËnÞâ¢*Œ$weV+$SZ}ª¶›² V¬ÎæóB"+PÙûœ9÷eYV5m± ª1nWkÈÃá?ñ›]ùñoå.ºeÑ£ü+9ªwa¯‡l×Ùìã.o•´ukJHíÔx›ßÒ¶÷©ô˜°T%MRÒ*²Ã]V\«ì©}6Y¢· )~H5Á­”gNÁ%[Xp}6£©ºc³¯¶ËžÎ+Dô¼²b¬Ã‚Û-£šüR¿?Ôm—àÄHÇgN&gÔ]JKY¥³§ºh«Œ tähu÷߇4µœ,æÖ1×ùÛÛ·UJ'VxmΦÓ?Òš×T´pòbŽ!0.cë»o§¶Q¯ØJ²Â»²Ë G&ƒµNŽ½Ë±î™Û÷um’ëat×gæ1\;¡É‰m›â Ji;k)ž³³çǾ/¬7ã°—=a’¶’Š¢+²:‚œÀ\aQ”‘‰Ðö²‹ÚûÃñ!ënEìTë|õ€çiéõÛ¿ç4ÓÄ[Þ”]½_óVS.‡üøø˜×)‚¥ªÙ”m•òH÷…¼ßfJäa÷!¦ƒ2–úùSdÇžyŠû ‘ÛCr–·TÁûC†×S„]ˆGÑÇü=ŠGv1ÃpËyö€q-ÒFèD㈠縔 Jk©‚ö =§µO1Hš1ªñslñeø?iIñxìæZUå&“0AnºOèi=A\Ù‚Ôºýwp‚ÁÖž»þÍ5‰¥T­ÛX¡ž9*†2J÷ÙSL˜‰¾E7‰EpESÔI¿¬¥ÃJq1˜È´¿åäšÈ@j] ÒÈψ€ö¼ë6礠Ùã\°øòYŽU›»2TŒqвº qh+Áðõ® A ò“¸hΩÖËÄ|5 a£œ¢)'‡E¤,  Ê€ºˆÍúš œP• ú*r àAÇÀ&¥: {Âg§(yGQr[à‹fâ ã8Mþõ®î¨ÅφYB1jëÿT)œšßl£T+­§"C»M0¡ü8óf¼Á! „7NsÁAZ¡¾YÝ×wKÝLž:íW`‡ØÞy6ð˜X›\Š~TŽm,´ï^>nªÇœµóáU¹/*Fq½ý©ÞG@WànEðñ´¬›ÁJ“z/É}MY§&Ž3'…ŸêÈSæ)|=p—ŠP2r×{¢»@yf‰f¢{ªíu"š@@³±ëgƪ¾ˆäƒ%Çÿ l{½¿;,yL;œHÝ×—O¿mò„4|Dö1E9i7½˜Ÿ}`nžÊãÏ\5s¶^ û¶ñ}Ì «8bÖ?A¨c–¾çhÌSiŸ/ص4‹>w·Àœ¦«¡Œð ®çµU@æ;¡%õ‚¶=ä¾Ù#Þ¦.ü›³\É ÜÙK,¶† 7àˆh„ ¼DL $ £ ±„b‡^á³ »t½â•£(Ô…ê׆( `OPD¼r‘FšŒ¢xƒÄÝù ¬S;P…³n )^ †÷ƒÑi€õZÚ~Æ,p&Foï1ÇÙ‚“$ g¦÷‰ÒXÊÇžÑF€uºù{ìåÄæÏÅ_ †tä¶z™ã71ö®Þ” þ p|! ×ÄÃSÑÍð ox(nßÊmІ’1rŸŽUó)Tº§ëE[Â-h0dsÄ-ãá Ï;ï¸ý8 Ž¥§ÈÆÎÖÐ<=ƒð“ƒî–Š•9º¥x\"ŽëMŠ2DžæóDqRN îO+˜ 6ùBÅI{Ë&#•Ö"/ö#Ót‹ì K˜t²'Ëì8C3ExI•7œ'M¯QžiüОŸi } ØIî!†”¾œQàõ ŸgP•<]Tx!Ó#ÿh¦þʈ˜å™9Xuîöп'_ð¥çƒ™ÒšnªòHÕÏù%Î4ZŒ;ÏW˜iœœ_£ëž”> ÜJNgÇ??Uâà"¨d'3U”Dƒ™Æ÷ý?Ï48kúñLBËGwНNŒšÚééLƒ/BÜO@ÁQÎ4Îö•qÚay¦±ZÒÍÊ"e‡`KÔB…¿*éÓþC ï„\ae o,™}–Â+HQNÓágS÷þ¾’‚È_fî†n¾€¹ó‘·r»20ÈŒ=Ÿýˆ\Ñt8áöýtz ? KPµT‹/`À~‚ñÕ8¾‘Bo,TòS”E¡¾ÊõÕÏUÔø§‘¦{™Ö'†¾ï›¬ƒ¶î¨šÎ ±tÇq›X—ñTµ½HÈc­Õe"v½JL)‚Ȧª^¥âfòyk a`;˜DêŸSnÿ¹È.škÏ»XtÇgl*@‚BÛL¬Z9r˧ÇÄŠ¬ÐÄÚôˆƒKÀ'A„O)ø¸°Æ×+c6ý©Þû0fF?ì» Çjdvó‹E 'Pø9ëß§vËûv‹"‚—8&”Å~Ý2þÌÑ1°ÃóuÐÏ9ÿe¼ /e½!X8'p{F¹ ý»]6 Øœ"¨¿è|‰/Åî7¼ÂD\ŽÀD*BÝwõZ0ºm;îët¼H4ê’ãSìÿlóóÁóä6Ð:Ã$ü‹#î~û)ßL+ki,.?žÈe`Ê» ’ùnIÝßE4QLºYÒgºÊýð–n&âûèS@z!.Éì»všSjPöç3¼s]´ gŸ¤ ðe©ôù}©2#E4RFkÏù5éÃc§PJ§Fâ==¯÷ÚôÉ%ä…뉤>;gpZ«EˆØ]‡Yøë~&´üÂ%f÷¼Ž¨Üs¿+°„9ƒŸhyÑ•çÏÎÙß$8wMÀk5ùõÄ"URÀMûç®ÿ‘Aôë‡êCô¹róß¿œ2 ÇùB¨:aôè¶ôCÅ߉,ÛÂHhƉx:}ãÐ ²—²‰÷¹Yýp…þ ÷ ¸üendstream endobj 473 0 obj 2854 endobj 476 0 obj <> stream xœÅZÛŽãÆ}ìGèÑFVtß/òÇ6bÀX öq€}áHœ’8KRžY'ù÷TߪyG³1 ° ´šÝÕU§ªNU÷Ç )膸¿øÿîxóñæã†ú±ôßî¸ùæö櫟,ÛØÂ*¦Äæöþ&|@7–l´„q¹¹=Þ|¡Ø—·¿Â\cGs-+Œa0ÿvóÅ/n e…PÒÆ¡Ÿªûª­N»Êý$yAQñ'Zа¤ÖUXÍtKrYº% jàÚÏÝÅÍùpæ–Ô0¥7ÛÑÜ÷mœ¬†“ua¹b<îý/Na8·Iœ»®÷R’GË]5,ÆþV¦‰œ¨4¸Š£°'‘ilUhMhšøc¿÷ó$è"i‰ZKßÂ?"HÎ$ÛP²âÆŸ“ Q(®6[fÝâ2lXöeÿéÑï XÁ,K'ù¾9õßÖmµëëæä€“R–Žôg7d A¸~ñcußß6?Õü‰µ,Aåü{ù?û¶qŸº [FÀ$ ä-£…¥Ô¼ è/}(ÛŸûö”,U!¨º,åÚôæÞ+U”°ÇÍ—8ÜUe[Ÿ>|à$™ª>õoý!`˜m6[J>„ú_Ûë>ôÃþCAŸê}ÿ€_I„Áè+7<Ú®ìvÕ©ÇÏ„PKŸ¹áÑfûjü×rQHo×÷m}wî«îë™fáK¯ZS‚¾ûŸ`nÅ aÅÕævy…¹W¦_iîû&*C“BjôJ·pÐŒsÎ&¶Þ'ßÁO¹ÕK¾…kø £5ŽõÉ¡Wbjˆ8:²ß±|~ÅWƒ½¾ùÔW?XFß¹áév¯ûñr889»ïžë.+˜ÒdŠ»¦9äÏÝxø<‚ô¾<úÑA™œ5 %†£6çÓ¾[0Í <¬Îüy+$«vÙHkñéŠ kRæ²ÒEww+*J—´á†Ç@­Æß árÁg§ |Ë)ø.¤kpæBh©Bzl?œ•ÏBœò´°_Ö t‘ ö-ÑÖè/S:á’–r.¹…”g„ J¼}¨–ùLAs|ÜX•’WHh ³6˜ÐAbº97…Ê9ºóóÎmŠMJSHØÅ…]¢Eõe}êÜ0ã H 4€þ˜ÿYÖLŒHxºA ”@JmÐ6÷M{,SnNÄ‘–À/(…’óU˜9²%„4CëÀ4«tZ±<í#´²2¶<ú£qj@áVN±å¦R{¨S0[‘cÛ=&.Ä”«]ýÆÓ8& •CÅTpôl•²‹ŒÒ½‹cOá–X™ìZEƒˆÐÎfß:w‰c!E.p9ç˜~¢v™CŽô0C'@ÆÒtÊ_‚/p)1jŽÀŒ ’E[#½œB ˜à@ÂÁõMüOä5 i†âȬµj»`5aó[í"Ú+îÍ9zœ"_²(”¡».C¡ðR ¦¡1h‘õgk½;?zà0 V˜ìÛU±µèp°±ƒ"—¦¨»»@í—hcÈq_è±B àÅ “mBFÒ9%¹Š_…¸7B d„T-ghq+fª~ÉéR€d†äŠ=.FVÅ£ƒ!üÉI ¬«ê"HΔŸ0”œRä2¢@Î2Ö‚UdëÛˆa#¶ v`æ„®±'×[GoÑ;éKsƒ$ ’_î9…S¬ÚÑÍ êí¸ â/Ë c ƒx¯»D¾òÎ#÷7’­Eª¹ý…~d\‹¥Ô«+F hç­%E 85¥â êØ:+b}õ‡ÐêñÙƒÊI©¸‚ÿØŠ£]Úþ––w]Øh:1˜âc·ŠSƒ%dÛ# dCG„;ĦõR32j­8òÕŽÂËŒAÒÛV€c#·NЀò׎þ1‰‹œ1é ˆè \§8€XŠj|M€•„ãÝAn@Iɯ°yîßy˜7—UùŽ!+ * $å1•ZB!«ìêß«· O†¼ß…óü¬ôÅödÞÜùÂXJsæ^q´,ìÓ9Ô ]ïE±$ÈdéLlŒDåËçtôL¾/ÄÉ.¢‡LJÙ(ÇàŽø…TkÍb/B3iýcuŒƒšé•ÑëIM&ôh”6.)òDZùG(Þ¿Ôg9‰–f^¼ Ä»o‡&Ú e~Š ÂŽÎ䢫ޡ¨e.z ýìë]àô[aÔB$ÞBÂP©už!%V ûám¬n 0—\o§¤Eá2Ý\ˆ•Oc²ãtUƒ~Ú%{:8f£b4c–É5súËcŸ;)PgäSþ:ÙÏÑ6hÑîÚ¥5ì 5‹ÂAéÌsÞºV8¶0¤‚¼0UdN†7ÙSá˜ti%鸈!"r’÷‡>çæÜSˆ>K}‹w=Ç>à†™@ˆ ê”NµuI·Xh•+ƒ ê›8&-Òœ§‡*™Þ]ŽpÄܱéúE@€3ó|‡ûZ £ˆ+çÒîÕ¡Š÷J€)²S¥DåPø×w¦}j Æ4ô¸»º¯Kt#¿b‰ R)±Õÿþ‹%ÍMÔ¹óW‰]UuJéqwY‘U¹X}…Av¸ùû/P#ù¢ª `œÊ±ÂÀÌÈ1NÕ‡2ªÇù´Õb¨µ3y…zþïΊ:¹ýR­`¾ÚÜæÝÇ>¯q}Õ·õ·ˆdxÒA:Æ5vMÈë®õëˆÇ¶‰H€êÉÉÕZð^Ȇ‚°|MyˆÙxUæ³Ëe⩉‘ÃäŠíâ KdD’ée¤«}Ж°…”kÜQ¥ªçxýC¥q`8câ;€õ$RNÛ'Ú=>ÂÈß7ø­§”&7„ÈÓã«?]C:RŸÏ‰ržÎÄlð–k‰×¬„~ÒïïUÛ¼‘ÀU¦"Ä‘ƒ›­wù‡à| *ãØ‘=Ô§ªŒÝ}áºq|e®pe2GßWÏH„}±¶­‚¤!xNMî8<æÇ)±’fwa‹@6À§<3Gôn­É¬é!(^¢vZH ám‡—’‚ÍúŒÏ7Ô쬵 ê²XîÆG: 2ߨ§´6 ˆ“H sƒdÑ›OÍi‹ž ^ÃÔà¢1Š©Ð+T;{¿Ábꢗ¢—£G8ÎG'•!ä N5¹‹=T]×¢|pM_bß…`;…I•Jv››QÇG9™?9°™]½p=ŒæJ@ Ø‹Èy”5ò«¥˜p”æx‘[ÎÑU¤»¬N \¸»8GçJñÈr£ç'ÎŽµ'€Æ×,û8>+Qîñ}É=B£–"ÞE§Ð™º¿‡#žÑ ,›9•¯}6×½4I°gA‚CC‘=èÚŧ[Ó—ÇP›€1Ü Oé®DB+øîÞîgÜÒÓDîî/<é|7ÚŽ9~ªöí|ÞŸæCÃ`°5Ý„æãr‹’²Ï”ôØìÿI\¾»ÝüýÆýýKÊKgendstream endobj 477 0 obj 3343 endobj 480 0 obj <> stream xœÍ\YIr~æG4ôâK,ç}ØÆîxµ0Àbwz±2Ð/%²º›6›äì‘Ú¿Þ•™YÅâÑÚ1l ° T³2ãøâ‹#õËhäÀÿòÿÏŸÞüòæ—Ù?+ÿ7ºùýí›ú‹÷7®‰^{s{ÿ&ý@ÞDÕ()o¼ƒ5L¼¹}zóýü‡Ûÿ„÷ƒ®ßŸõï s3ƒc0ÚßÜ.Þ|·Ë/»úeßD픆à;¿ÃWl´Ž.?ú¼?ô?”ºJ„ü´òC˧gÿÞ–µpåÅÅ—ü¾)lùN‡\ã½&?úé°èß³p1?“1Ê÷ð?&ï<ÞÄ&:å îÜÄÆ-ó«Ÿú«Æ8[~ý—î¾Ûuëyÿ1 Ûw¢J62-U½¤Œ¾±´I§ñ™¶¡Ñ°Í™ÑM°ªÿÓÇûþs¢±š6{xì?$}ã¢,2Ùf åé컓L4,(dy¾Zîy%l~¸Ü—…@ ^åGßíöå$"Ò™Ûu²PŒ&A®Ú,кtåé<ZªËg@¶`œ]p„ã’åzÑ}íöI©Ú5"ø›™”¨~•_˜¯ž÷Ë_ûŸªÆY²®~ç¸ñH~ñØfÍ(Içù5m'ZÂè—–ÔÇrü}ûÔ?Uðké%íø~³{jËͺץu ¾¨§Ýg›W‚tñv½ð´‡uöKå½êVu›Ú‚XšUò´ld檬ö´\ÿ~ó¼^ô;²à…š …µ 2/ªxj¿¦÷›¤ H›Á#xðÐÇbe«:Ïþ_³³8ÒåôÙ[ÀšÀ ЏwÏ]/–ÔŠ°%sj½MR›fÑÝ·Ï«C‘‰5VbùãS÷”áÙô6í²ö5<-~ÕË>b”ŠEšÝ|ù]‚É%Šî1¹ùe„–dzxl ž©`Ê_–ÙÖÀ·„sg°ÂxC`ñ¼ïz÷QàS†ìüËcri0i/ãfvsëÊñA¡Ýwë´ÄLÃëQÚ!æmvňM‡–>bàWBÓÓá8yYDÞY‚´ÐŒ!QlwÙ•àìZ”7Ý¢ÉG×Z•±ù„H¡el>V'K™úb›<Å[IñSºÙçeÒ^ç%^q:MñèdwÈ›JŽ?G ¨f™ZÄÆ¥hd ™Å2­¾b_w?ô‚3“!4ä?~HË:§É:6Åa‚ÓõNZOgºßPø0Ì3µ°²2ÕŒ½UJIGý\ÌRÌMâÜnù5Ç^!#}#àû •ÁØq…]H¢<Ç@à,I>ûbf’TqAÜš¸(I¦ ϬE­‡Zä(¯­¤°·ÙfûåÃzùÝÓ,aÉÄ. o•'9gkö8^²€–*PH!t•†`ú t•QÒFÎøyï‘ÆðâÇÛ;¯Å[ÙÊXbJdΦ0è•ùÀÄSöŸ Bz—ÀMÐFn2–”½±è¼‰×‹N)q Df‚ôÏSŠDà?NO\‹ÔÀ}]"´°dôDpû÷A£’äy=ÙgÖ ÉržÁpMS6{h“‚qËÁ$û ä@DE€ú7{÷/rê¾v]Ê? P¶F(¯áò9»2T ë›û¤c' 5´®G€ÇìØÀíNË_—‹ç¶gKGé>¸!#Û§„XÚZ"Éèû?ÛO•‰qjï$pTŠ|óÍÓ6KÌD õ`]ëÂM 9à!y„rR•ÍOÞ©Ô¯”C¼0ã´ÃbbZÞ[ð×™yXC†rØçßËHà‘äŒ%çYÑÉk:-'Ê$¦‚åˆwd®à¢–Âæò¡à Ò õ·ÞìJn* %}1b^j¯€±}æ+ømhqC ¾Öœ©HTI ¯Ôá ÁžJV²‚ËXGBKr&`Œe¹ÓÌhxö»òs07ÁV´kè’–`ëÊRÖ¶ëæ‡¬0{¡ÔP!íúaÕ¦j‰»uëùjSH($(5âJ`ØZQý`ÿØnóS¥‡Idï˜ä«›Ïˆ0¤!rÆ0‚­£*ìPy´Þ–¨`+x[f4%Ð' Å K)^ãA|üî}FBË|aòœ³z×PüLù[OéðKúÀ¹}ĉ¨pã&i™Ínù°,.d _ß¿Üýp÷Cù“R†¶´/Nö,3X@e"ÏÛm!¾† {Ýn¶êîûÝkˆ,LAæ›dÎæýà1m"‚¾…ä²n©êF¡2¾¾£ð׬z•{å j] ãáýK6Yø¾°£4“ >í~ž ûÆG± pTHËN?æóD†"”/ËEªAaú^Þ¤,BŒ¤ógwý¾P A¥¡´ïÙøp¬GÛáKIc£I0厔êe%¶cGÆÇnùð˜Q (Þˆö׬xXÔÂL‡¤DéÃ;~cÑ•W¢Æ8iF‚ž)ªìÓ– òþ8·(+á¶}ÔÃm{À§o,Õ ¹QϾ¦.Ç%àÄkV›‡å·»÷Ljéí–*ž’ñ)a–ZRT0+ØfEݵä €$øGFe ¾ Ã¢ì²dθ߶sx½·1 q0P¼ûy›¥Î%fYóÌ-‚'Ñ]DlÔµ˜žÚlL1Ò³RË®«£h½´‚-8uÆ<_’÷i/¨B¿á:vÔœ/©„ÌÙžò&Ë‹³c*l¾‰‘Y)ý6w‚ Ëõ²)Üqê,EŽ¡? M°tÞŸê}’?)Çév³H‹çü©^0Ç!…í#úÈŽžÅsªÕ¦87‚/DòÜq-£ÚÞÀɰÝC¹ªì:Nb–ë!¹PzĪÊ-œ‹p•—Aš^Äýëe2pËæ´—U£oô2*˜°—1°W^¦ÛlI쎌1•ÍG¥9‹DvCÔXx/fð³D§°hâ(Ùð)ôuzÿTSÖcжc·l¶vKlñÉkÂö3,5N²[*¬L|KˆËa.-hψéBÓ4¢èpÎ_3kt9*¢ö‹®*jèœi6c¼TÇá\*2¤ËêC_R£pår&.@w¯™e!*¬±“ ÌÔ€îtT4,ËRp–9Ù+…µß嵑YG>bÅñ4¤AžU7“™å¡¿0\Þ ïe‹V¶zÉêÌ´µ¡:,j…Q ä²@7¦ø`O9¬iOöþüTô I)5Nêoû´$© uýlclÏÓëÆúQ²\j’BÞ)9¿”ôÃÈq –žÀ)K¤6”N‘øß¸AW‘slÇ0-|Wd(šz­”h X…Ý'¤õ"‡­Óm"BEßmÓɬ±âÊY FK´w GI=®Ž¤„œ4§&>ÖŽøLhøxçKD ñõ%¢o™Qþh'þN‰ÔÙq ŸÌ1ÞgÔJŽÑ­>x]Nê=4Œ‹íXV¢ÚDwaÔTÁ}ËTQJ€‡I‡ÇìÎqKûÌyÿ*-.^¨?e`Är:wõöóÝòsÆÏ.Q,,±VAj}ô{¤W¥—£Ñ—¤Æq¡™£ Ÿ« Íe‡ ÍȸÉÎç›§ßBÔ2'Z+'jÐ4êã䨓.i­¡¤¯üt¬t¯(@Yæ: Ρq¿œjN‚‹@WÔœd¤rã|³[çö8ðe²Zvná+ç~—Ê.8dÍ–šá6¸#C0ä˜iïÁ’r½(bYp(¿™@£Ä¨Ps÷ýŽºÖAë\³´]ðpu=øU‰4[@‰éÀ7×õ`ùâ(gJCÃ>{‰*@&lUÖÿÖ0€PŠÄΫðz¬=6“ÊË%™18@pÜ–÷<‡².ñáåŠi«,àhô±²ˆx”L‹;ˆÀ‚t$ø=lŠÓªòœžº ^ºPeo5wú_xø¬?ÇædœÁ¿†ö’Ü#?z}FÏãý9÷™¨y?1P¨œ».y‡àNÝCNÞ]˜ÈŽyÉâëðÔ²éu‹‡Ò¨é'ís¦=°J1ŠMWƒ'àY®ÿ+Û˜4Åz¿Û<•G1® ¦D’A7 "WŒ«á4MC‡ "¶@à˪Ş$3xµ~U$ðèW«ªÂ7q„‘~Çx¸Ê½¡9Jó™\r—ŸFâ5eE¥© W©¼šÌ*-à€½;= ãP,Wôe²ÊCpÇ*7žp•ʱåp„@ü±+T. -q®âm +¿]áš”5P8Ð’q³qp€s=T+ü¨16\ò°Ù/çYºJ¹8O)7žštb~­n#vyüH·X–$ÎVé6xGç|¬Ö-N­RTfÝú Xêgë¯Ö‘ã¿Z·ÑÛ ÝjLGǺ…pù¦É?j}«:Ÿ› Ìu·PqÐüí±9/™“åõzc𓍧™S®Vµ.M9ó›da'ÄgxÃBMÆŸü[ŸbmñªÁ?§_ Óšþb‚ÃÉ‹Nãky¿€,‘ûÓO›vñ![á°¶)†ž‹×“¦ì|éþy=Ç]ö§]Xnd´‹2š$åÑèÎ+?9òWJ×B³ež©ŽBr FL?õN‰OȾ(+-òëÆV“8ÆŸÁLMŸÝÏ™6±1ÌQû Z!ŒK:7ËÈ“A^|0uî1ñì;3¯jêœø”aò 3º*õãf½ßìËÔþ÷ð¤ŽÆ<¡Ý•ñiÇn󩘽¡ÍüÄüa+°é£ˆòý=±íšG¯+.ÐoH)5~ÜÐ0¹¤MN ¶¤Ù#ãã.:¬˜:¹XÇÄ»hÌ_=®íÈÔ9ÃКïâfDÌãt¥^ø‚1ƒB  èÊÝBàɈòG¬$†åÒa¿Î;’×Ñä2`+éþÓß–ëE¹Ž ã§NÓÑ…dÐ'›%MthŠ2»vYæ 6ͨqUJ»¸M «o\,h;2”ÁɱŒûv¹êosœÀ4é]Ë S}¤©PGÙÚåªúXOÕ(ú~¿ÉñDJnB,ÛC™s‚<'އg+ÉÆÜ|C«¾³mÁ}çÏ«t£I³¥Xþ‘{ˆXø6ÕU‡‰[8ùV ¶Ü¹@v†ôXG™Æþ°ÙBICß§«¿Æòìñ^=æŽNÍ)e6ðU¶ %¾LY=Ž«°îÿøã¤y£yÙ¹FKžŸøÛ#õΕ«n]ˆrèE©ìïâxÒ=/øöj³~HI ÆFK¾îºE·xŸ©g”açyZy‚Ù+KñäÓ_׫â‹/3ÊWçEÎ¥)Àæ-QØ_—¦aö¤&]Eú~îv/2Û”±…»>¬X~¥ÎÜ4ÎWó¸;çHËr`lG‚ÔX7 › 2ƒ <—4¹ÁÓ-;¬Nø#“nWYäÀ4yü¸œgÿv<ˆþ˜ävUìÄ52;bùúF¾ä_.`ô¥ÌQÌÉBú†!¸¸ØíbO˜“å•iOj²H _œîŸÂøÿŽYÁ Èp1(í³xBÍÍ¿!N[þG1^¨¥'Žt>RC\2½Á p•‚œ¡]¼-ÿ®‰ôô•ü ø±ü&ƒxu+nÄ=¯[îĹÆÊ\è±ñ,€w T˜é¹ïÍCþ(¡zEÕBÂÞQ­GFâBÛ]É™e5¯µ\äá,ÌÈ&†%ª‘7º ‡W+ªxù”¿&ñ^?ù}ŠLu.ß&Æ[ωäqÆjN„«)Æó×|ÞíéšÄšÈÿ¢GZ¡ž!9ãŒG…=ŒiªÜ9(võ[©¥®ÁùgA"ö¾éáv‚†¯ËµFødYð.ïrÿ¯yOhïÿAùŽ'þ'·ÕnÁ.·»e&üÃíÍŸßàÿ/›–yendstream endobj 481 0 obj 5125 endobj 484 0 obj <> stream xœÅZYÇ~_øG~‰ˆã¾ àÄG øA¶ÖÈ>èeDÎj'á’ÔÌPÒþûTU=CÉ•‘l£·ÙGÕW_}U=ï¬â þÉÿ]=Þ¼¿y¿àq ÿ³z\üõöæë_½XøÊaÔâöþ&ý€/<[X ãzqûxó¨¯nÿ sŸÌõ¢rNÀüÛõÍ‹»0…‹JíóЯÍ}Ó5ÛUþ¤eÅ 3ùO¼âiIk¦òV:–”pd–¬¸wJÚ8w•7—ã™KQq'Œ],'sßty²O¶•—Fȼ÷·ñ8•“ÒãqÞöCü!‡C æòh½ò …åÓØßkœ(™ÁÁõÇ< {2ûÄk›ÊZÆqâÏÃ:ÎÓ` ´÷ž¿„ÍÚx)µª˜‚k ÖÖÉÖ?ÄUTå¼ÁÃî¶qŒWÖ ^Ý!]âØÑÒWÚ;œØÇy‡®©Â\e+«Úæ§û¸0«¤¡3ñrÜVZy¼ÏG•PšŽ†le¸å8o½Ë Z§8ÚªÏðaFàØv—Ìï*æˆyâ§¶ÃBV^Y]´Í£`YA“WÍ~hÓ¹ŽM«À|ޏûG»MS¼rŠá!>ösÖG+§UžÓöùBŠ;t~W·}½”FU¹çÀ "­ÛñÀ¢2J£­¿¼ûyW¯94ÝSt±1á¯S³Jp+¦æåž7Ôí¦Yþ  Ö£+¢o—\ºJY§Ñ€õð§ÛäÏc ®dÞ9ÔuMG‡ËS„ÍbqÖŽ¼ÒÎàíïÛzK À G ¯›M3$ŒH0=€n DÁ*/$ú¬îû]Fç´úª­qqXCâÒo30a)pãYvL+¼üÇÌžyCM†\½às8cÉx@ôZòm%!ul1ÍbšPö!šª2V*¼O½9$“¨ \—o·™w“þòQ—ÒšŠÂ&xýPŽ‚±põv=gŒ³Ó#ã” Á~Æ| ay³j¿Há7ÞâíÏs,é5Ù;ÛC‡ªÓÍÉÇ}Ó}ÈL'8£Ý»KÜÃ1.™cà`•Ï8Jà>íÐ7›H´BY(üýÇv³Éfbž<7‡Ùd# OâÏ{Îu^Ò3 ã™*—"q$?Ké2éæó7ñ€eb~ op¸kúÝ¡KÙHÅó+äÄ#VÁI9Y¹ªŒ$:µÝLÔh­/ñÏçg=É)Ag7*bÉ’Ú„tüªm%¥$:îv‡ Á’P‰™ òªµæŠmåìŒ)s. ÆÔG¹¤~W·Û*8€œ/nN6ýÃŒhƒÿgx°»ß¶H8ѰšaùEÃΙ줼ÁŒ)<$çç(´›%}©Ž¶ºNá ´·lùY$Ü͈Î0ãôˆ#׿Ãh£Ä\Xœ"œX"@‘ÎDÀ:ÀÀ¼ýð÷óœ¹L² Ç …ä¸÷),3ú‚ÁgàÄ%/î ;Ê„`YŨJ¸Ì§`MKÛÜRj·‚Ÿ} Â§ ¾$…<ò)„Sš_€OF'¡Pè4GF ÊÓ„#QÀgª‚aQo8§û%5'èrƒ Ë)%žãJ!]sBaZÒï ‡¾¾Îa¶ˆ”)…Aq!<ÉëB]_ÿ*,_„kh-¢á6ä-ÈOòÞ JÎJg™>òàÝëfø!K;8 ‹îì8qÞð }£ˆœêááe4й§€¹Ë1d¼Bƒý˜·jLÈc½ûœmfˆwpÔx`\cxrb²£QŽ\ó´Ï¢‚Jœþ›l=‚$lLHä÷1ƒë°¤`•‰gê Ò£Jç¶žÞ ª6ñð§ŽpàH7K²D.Ž^?mQBúF÷ÖŸÎŽÔÄ2ª.gOŒïÃ!­Y­Û®Y »®M‘®¡:q´ÑŸ’íB©ÍD²âö¼íNSÿöçh¨Üœ©ß¼xóUD$ÎÅøó–Ò~j©o»w‡ÇD‡ .Q¸sH(]Bv‘A¼-¡ìõ!~fN|’+AHºÞë}Î4’¼køS–ðêXÏÇÔîŽÌó)ÂqAû쀕(£‡\ÆÃ‰Ý¨îÞåP$ØìrÆJ’ˆúWæíUé’tY©IN›Ôé·dó|]åÛ O›´D9ä:Ì—î?¹¤Üf)™Ø ƒ² gj×<œ ÞØSº…vZGZP'åóÀTÏ›²ðh7A²mÝÜׇM\GBÈ if. ¦é_lsmú§†’Ÿª}ØS+“…úmyQ·ÌTÐ,¡¦0ÿ®éW]ÛQßÌád…R77fì8•ÏFfÔ˜¡ää ÍE5ú*yMñCYé¨ÓÿÏ©i7öò±·cs£®w†´c1­ÔÏt~º0QßÔÝ*ƒJj®=$΂°¢P¹]q&Oü«ô•(J©Uz¦.Gïa_ådϬÕª]“ÙÆ;‹³S™„âfªÇvÛÍF‹+Ëo±Ý%ésŒÛ Fˆœg«ýŒ ë²ËK_§¹ð—9«RjYå奻\:‹$”V›6×`8‚–˜Îè£.A¨‰Ê’©ô˜ÖyCÓí»f b„‡,åÖî>/­8¿È•I> ´Gš}ìk ’©³÷È£îvWEËqϨê‡æ1o`™,¶ÏX¶’®ßl×¹ÔŨ7:¼D™*)Ñ¿= “¼²#n}Ê™Œ9šZwX>JF 8oTØÆ(5bN…¡ö#sžiÙÝãþ®t&²¿ íwaéó%‡R†.pG8ó¡ÁZ9ªÚÜs<7Æg²_TQøƒ]·Î•àJR1r]³®2sOQôí¦ß¥òŠ|}ü†2Yz•ù &Í34Hbº$©aôè`¦Èfá¹e”áúÒ¦D;Æv¸7u"Q½âºW1ÍÙx‚ia©ôŸ`Z]ÁtÉ•VŒh¢ô>Œ ËåÃÆ–µ:nY¦r¦4Z¯!Š%3…äruñ¹ ÁÏ GJh$})Gòo…ÔŽJºtë$µŒÏðaÎYF,êý~Ó®"Éõu:uëõ&%ð°³ä —ɸ©©(Ë3 f ìײ†©$ Л÷º¡ƒ’/6êóÌYyU¯NŸÏj¯§wg@°8‚D»•ðXòBÈê24º-YÑ€ì¡Ràýè°°l½Í®7¥sùPgsŒÞî>äðŠ+Rä<­HbuMÍ9]dßüåÑîºàø¾Û="Kè}±il@AÎÐI?Q+ORæ¨×ë6Ø,"GñP vVA}D·$.!'Q¯9RM A¾ÒÆþÞê.›7õÛ††º—Ì)slJË)§¿é=ê&éh:·à i¢3(DáõWª ¢~{Êž;JÐBú˯ èPS>BøøÐ®!ŠDÏ"$1qIIîÜÐyV‡®Ë¤D0Qã`¹ÇÚ3ïPÕ;£Žž¡Nø ü©zú²TãåŒ% Ž(¬ÊBM”Ó½'…ÃM›z‹y®¯OTwªôËó– ­A®K…BxÜÖDâ#%Eg „E}…®yhRY ¦²D ˆXg½Á±ë©S{1›:%x}–ÄÆ0hSÁS5Ÿ„Öç«I>•Ç® }**¨é*ÔÙ'ëßQ^ÖSôÎ9yúg±Õ…ÆÝ6éH»^t²­Eùƒš à¾U"ÛÕ Cѣżþª[‚\€»:î¸ðžrMzfHcÆí‹*çgËèe<}psÚTÂÞGÏòÿ#oE-B]ûð‰IŸCÓ8;z‰ÂÔ§Iæ^ûG1òÊg~ƒÀ¶ÔÇØóÒ—op T·¥K=úöF—÷ª/ñ 6^JE²eøFÙrú!ΫSÿf[†'V$Ëä󘌧:ó ¢ÂGQ§W,KÂ+ˆÉ†¿‚Übjµê> ßÊ„†èÈýË<Ýúîs—àf¬‚…"Óÿ·ž4¨±>ÿ|p‹'Î}çéóÁ]èw—o&òôа -xÆž*ÊkBø‰¦úæ^Þ¼›|kÛŒýiWý ®ãV|»Nïry½÷ަÑ5ÿöPwéš©­¿$~h\<Ë‚ÜDÚš LžeCž1&O³wDÞ–òÒƒÎÿѬæœY¿¿]ürþù7ÐÓKáendstream endobj 485 0 obj 3208 endobj 488 0 obj <> stream xœÅZYoÉ~ü#øhboßÇ ݬ‘~‰LÀ~ðˈJLxÈ3C[Þ_¿ÕWõÌpHIÞÝ,¸ÕÓÝõÕõUužQÂfÔÿ¤ßËÝÕç«Ï3Æò¯ånöÓâê‡cfš8#¬š-ÖWñ6sœpÆfFÃÒÍ»«×Ë7‹ÿÀ|+úóça•³9LtV 3[¬®^jÒdÝŸlˆš ØÀÏù»Ÿ¢ˆÂé4tÛváC&åÔ¦ÑjÙ¥AËDZVy¢ :O\}M£°'UyŸÚib e2 ½ëVaž"T»4Æœc×ðL'w3GœæZú“KG¤,Mý>æDj•¿¾©×uSï—a3Ç×4 Å‹K:Þ_’9CR«©mç’*ÀŸÏæÜy‘T˜ûþÛ>ÀiL¤«ŒKpÅgÖІ}bé,,¡` õó¥Ú¦%,Ń~z½Ú4õ²Ûö×U»¬÷ÝõªŽ¿_ê¦Ún?½‰ðJ¢hÞø¯~à¡Âæ…>.êÇî—Ǿlø“üuc’0Êy½oöw~\pâ¸ÌHÿÅͥĂTsF‰“ì-Óþï†Å¿ Äíæîçûª ‘œN]_Œå °gÀu¸·W0÷àÍÝqWKM¶® úsFÀa¼>)Þ,?K=eipr*¸BKíŽÍ>Rhb-C º¯“óp†fõ%„h#P'Õö&rXÖ¡OÖácJ$sòdEf]¶ôÁQ%€*M†é~³ON­¸ÌNÝE÷å`Ä µ<…§ Ö(™ø6}ÆJ·dŒËqõwõº[0¸¸Ä¹7›»û ¥#\Ñ?Ì߀"Ã/›©ÃÁ®\#ªÏ="§åYün½&+­À+‚ˆæ³ˆ+;§EFâàEœ:7£Ñ¾>½!“V 1Ú;ĈwÅú§ìLÙ|ø÷I R/7¯êð)· 'šÉ d†0UbîÛäpÖa¼ŸÄì}×—“ò G˜AXºCŠâ0–Õ{lëi8Äaï‘\5˜ &R{ÉF$Ø´uv œAË3}}ÈnÁ¥ìÓ¤¬ì˜xˆ ®;£W ùB`)Õ,SV\±K2ÁÑG<ÿ™Ê¼äç„2@ÀH“±²Qr™²X‰„äÅ;iC%ãõ ÙÈK"X÷~ÔOxç„ Ä0>ÔL?¹Lxý#-Ì †ÏªMÎÅ.\ù!˜åŒÍˆo7m—2„¦¸]J% €Â,s°7…6p»é‹“SmL!–P ‰%ËYßÕM{Ƴ­$>Q<û©©¤ÚdT¿Ä!ÕÊCOLéCÙ>ÿ|™cR”Tk ö¬ñSÜ\q“g¶›_ëLŠ$¢¼ÉaR&}eŒÁ*çcR€À\oçã«rDFÛ†yÇæ\Dµ~|DíÓ˜€·7›Ï~œÌX€Ózè‹éô<©§‹d)Àг0™àt¡6[u7ée¾(ATûÕä¦P Ê¿s×häB+ŽÉ}ÜöY¦fÆòÒ© ¢ùJݬÍ.Ås-Ño‹é9fåØz@ +­åa÷pìªÌØÀ¶­WAràCâ"Æ[œŒ\DCÜ _‚~KF* ÍÛÛ2T¿Ê;Ç€<–ØöG°Ûw·‡æ‰K€ÌÙ±÷]GýHˆT+à¨èÅ“?×–¨C™F±ÙÉ“ØÜÛ4ÙDQˆ îæ=eSžàg ?4õ²^%Ö&-VX±šî È,°_Ë–¦¢•Lœ ]Z¬ì]RoU êÞŸräΩÎ@‘¢å¸bƒ½5^Zlëu7o2ÎoSJbƒt]aì€'©!ü‰bêR¾"úÙâ¤ÀOx@è-qÐ×ÔÃöØ¦Ä \'Côd„63lλr–å&Ç.ë9Øœ¯¿O²’o8¡šÔÛôr¹^o³ é¯È Á7Yá‚= ÁÃåFîcߨs§xGߟ¶ÈûøžÂ¯d6ð½½½Á@™’‹X8áæ÷¥;HE -ÌwKÇLBAØ-}·œð˜Ó8N¼f³OLÂcbE&!J‹3ù|‹¾€¶­,’Û’¥¨Fúô Ö'K#c„Õô4ãöN? P¦é‘¶<ÈJs›$ %ôŒ }Ö£8¿WKsa!nŒùi©›v)§úֽ‰c×ë)ÚN„žS·c¾½6j ŸOÝ`ÜÒtC7[ –HVõ«}š'Bx#,¼/× ™Ë;ñ †„à[—¢p˜vh÷1ÅWÄÝìWõcV„`‡Ùµ©¶&Õyá»U.oPqLÏS·Ñ÷9 ƒÝnöu¼s`ZºÑ®×)JéÆtZûÖ žþÐæ[í+¥Qàn7wûÍ«e•ïÌ–¥©êB`<·þ¨m:“-)ÝO:]ÂÏyÂEEiOvUÓÖšÓSW¤ØðÝŠòRÀ`|bÃü±¶ákËr³Š•½¤83¹ )u6 Ù¹"»Ngâå¶>uï ½©¾Þó×Ü!Ûºj}NêáaZ–¤X€\¢( iÓ µåŽ >&Oå6âTnNö rC&5˜yôi `}úô¿ð²¶d¢^©OÑ>.]Óh#l ÏmÊ­œ"ÊûÜZã½ët~ •;úùª^WÇm—¢Bxéðd*Ⱦ¥Kv;îËÒ§8ó‚”b +À’¡3 ÏàúÃ( ¾ Ñ`AÖUÿMXÚÒ]5t Öñ’µg'²û*§t†þ>u=5u®Æ®MJ´°»­cûx tT$û;•R íççvÊWÔã(.|@Ž6÷Õž»·yáËò„kTmi,:‹!ÜòФV­ôOð/háBL”áÒa'ü’…+kÑÇŠ…³ò®£X8>-X¸.K& ÷ÈÃUv°!¶©e;*°FV-å3¬š—*}êh’9œ½Õ›jîVÛö‚©S¥‹ÕÓÌ7(t¨(A?áòþÃ@x‚(1áÔ¾úÁ´•.QB <ì±ûàËÚ€¤†*²äûKÓóýÊø¾‚ˆïýÍ!_j­ã¥ñ"9(²1Ì>$4í¬nϼº‚(æûíñÑ•ŽŽ:õb)<4 § A¾° ŽoûÞU†Ò`âùÃùß²KM=£òïJ ¤Ì½\Ö ºPV<ãqU9*ÓxX†w./=l:Àp|# ñ£P¦ Ç?½W¡Á›ª?ëÁ¶VÀM˜É‡ós²’Ç rðÀòêåÏá˜òuÔ˜¡ì=`ô .h5;9bÁLëÞÑ…Cþ²˜ýûÊÿü2ž°endstream endobj 489 0 obj 3030 endobj 492 0 obj <> stream xœÍXËŽÇݼÌp)b¹Þ- Œã6`@Éh`k!àÍQ'ö¨ÙœÉ"«då¥?#¯Ë­Ç½Í&›ÔŒH‚ *VݺsÏ=Õï&œ‰ Ê¿ó›³wgï&"­á?ó›É7—g_]9 ,Xiõäry–ˆIàg`ÝL.oΞYûåå_`¯ƒ½A2ï%ì¿\œ={·É´5¡,]T˪­Öó*þdã–Ûò“`"›tnbYpÊ›hRË&šd"x­\Ú;/—«ÝSÉ„—ÖM¦ƒ½oÚ²Ùînv,(+U¹û<¹Ã¼RݹÚté '%÷eu6ïÊ¢óyí»nTÜââ⾬ÂÜà=)lËœã7þÐ-Ò>¹À,‰ÄsøKåxªœ‡ÿéÉT†hÛäÚëíMµŽ´eJ(]lu›qq*ƒà<œ‚‚8ïÓËM¾aXqÇ™–}~u›üƒã [Íë/ªtTzæy »ÞV£¨pLH¿þC²§™îäµf]îp^âZ÷ªk·9ÝûªÀ$Ggº¦ÀLhS–¶›Š¦NrܘL!ÛÖ›6Cëõõ±<*ýÓó0Œ;aVÃJhòí¬@U (“#ÈN!´ ¸•¢ÐNf¸Ö׿sGëÉ…øtqËÒQ…f›R4ÉÉð,.Á®à <<Ùäq C™èí¶¨eÞ‹DôÖ“ªë6…=w4ø3ãÃÙéçÙb‘ÕGÄÿáŒYްÈÕ“@À¤Gš¼f¥ iõzÖå 5$Âz º¹®À22] ÖßqLŠõá}ïƒñaÔ‰©2Ѱòøž3¼—3EÔÂ^Mk7¥° ‘ ·*3ŽQâ qPGiûQ·Ù®º¢Å4p¶áâ©åLC ¶¦—xö{Ü'áê.Ï—`¬Ç£Õ¼Ë3 Ðï89?këîíMÕÕy$A–!ÍEáÀâ¼” iAÓï¶uºšÏö;g« ©\óþ­³Å¥òD¦%S*vLéÃ±Ž™*Ð.¨aÁ¥æˆ”û\1œ^»Ý¯Ú#CxC\º)±[¬Sæÿ¦å¥¹ $œhÁmø…æ4 &çOݲ©æMnI¨‘Ê?­eƒ¬Ãò-ÛæiÆëCž1æQ d„„ê3{-O·IKxû¢Ýd¡ži«ö( :ŠeŽTKYqÈV2ô0ó· ÞøG—K…ƒjiP)‡÷ô1 ê%5ò°ÈõRJÑÛb§^ÖÉÃGéÎí%J'I¯ìI :Œò@Åkë÷€1Uΰ(•uŒ%c…ÑT aD|úÃýn0±{|m*ˆ¥wøf*k¨[,à$6~ZË߯¢Ò—é’Òÿ~½©Õó‚uéékÌË»2ã€i¶«Ùís”q†Šòdµ^g#aJ?TËîå2ÿ`¢ƒx⢾Ƨžqt'W4çW%« ‘Ðp“§‚‚ÙÍ ¸Ë=½º*´çAh“Bù¦Z¥ãð€7½>ËÞ)4‰B`1§³˜ÿ®ië¿5øõOöß+»ÙjõþüjÛÅÑŸ x˜²Ž8ìÇÂt\“º«ZÀßî±ÑÑ$`¼ÉüøQ.;ññ?…k‚¤—íË»D@/ä3Rþ°„0{oŒ#÷d|Þá? î9¿jî*ú¸Âìõ>ÿ…KÈx”¥°Ý~=bœé?ŽÖl*àâA¼|øÝ—ú"s œ² ¯¨ hóÙúz•?Ø[Ö#R\Ñ‹¥ß_Sƒýc©«¦IÞ$Nˆ_wRN´pÇ]-5&_uPŸÈ[ñˆwjÞXbé¯Õúÿç§}Ì{:#ý³ðódõKçWÿã¹úˆŒ*ø<<=™ÓÂMŸ‡§'s:Ɔ½ÛŸ„ ’ÖIÇ ºw[|tÇ9ùÓYüó?á\3endstream endobj 493 0 obj 2060 endobj 497 0 obj <> stream xœíYYoÛF~÷¯àc XÛ½-à  hPGmòдÍB&e‰²ã¦ýï=I‘ÔÕ:AQlc5»;óÍõÍê>ÈdØþ„¿³»³û³ûŒ¸µøgv—½Ÿ}{¥T&‘QL‹l|}æ7ÌPD É”„3¸ÉÆwg/fߌyÍÚò#'‡y6A£9SÙx~öâ·U–ma… “”ÁVæÒФ32,M×µÛHÂë°:™ÕaQÁñ~íÕ$ 2,£àü1¬ÂXÄ{r»$‘R˜ð°ô¦ž;9°4aCÎáš›Ì #©äVsn׌Ñn3E\Џû*¿ÎWy9s— P_âhAÄihûHbII©†®q,š¨±& 'ûC¾ž­Še]Tå…ßEˆjo£"e6 ŠNiŒ¸ÑŽ×庘;™DBшãtH_ ÚJ*ÖV>†ó#ªõjã£a†ã%ŵ—$„«è½U>«'å͉sŠ„6§¦FÔ(ÍöÝUÕ“ÅâÉéNÒ$y»œ-ªuîüË ¢š¨¶UQ&t<åÉ_&´ QÝ)„tD9ÐSpûHß>ä«Ådéì"Ô"0¥p÷–p¦ätLë['H"”§E†âxË£OƒˆRUóä!§—ˆƒÒñöÒËc,š‹òն삘‰ñ¨v÷¾¨oýá_8—¡aª"•W²ÜèT`œ°:qZ¼)Õ(óÌýD؈€™¦ú ˜oòëúíõÿÌjS§ÂÅc)¶'¥¯ë¥H¥"ÜM‹§&Ë «§NS9 °àz—Û$6‡Üf8¢©|]^»*nnƒÛ¾pýøïº‹¾×Dfˆ…¦¯M*ãQKÙØ8’¦µÀ7l$Ì¿Ëiõõ¤]œk”æQoç\Ž$\Åü’B5̽†JôûÒ ™' ’à–C{™/ªÇ¯k˜R[À&dÖ ñÇ`´.ñ/ý\äPi|U­Š?ªÒñ¾Ë馮‹òÆK Ì~g%I$Ó„¡]gA”r)·œ¥‘F&·†"å†'ÖÙj„§>šÏoü¡1­ãõ©aÞ!½0 °¸·®6nà"h8apëù˜p ¡ô5’i”ÚS¥õ!ÑG*©’‘ÓóX@•NÝqÖ &;LtÄ”DÒ{d?fLŸV®[zIEyW¯VÈýèÁEz¨©¢Ç«´+Ö‰‚l9ê¿æ«º˜uÝØqF t.Ò]B©ÒNšš]Að“~Xj°Ë€  v1J{!D®ïg=¤:2е¢ÝGÚN"Û8tŠg]Wwk­‡"½§&¶…¶é³n¤ƒŠtCb¤›ÃŠA½Åx NHþÌ‘N[¾œ“C¥¡G*ÔáçT‘ÌÚ. #ºš$IS IÌ&5`m…¡—!Ú+æ¢y…ˆDÐÎ8YT¥ó„H°ù¿”q3˜ciDçßá5ê<¤€0CæQ0Ô²»aì£QrÍÒ‹À2(£hjîù:<³Ø%ˆ()m-»¶OFp8’kÏ+&‹à Ýø÷uÙØs윊 ~¸j7MA 15}ïŽãˆà±y˜Í)£{ä[¸Œ(ä½}¾Ù€çdÒ夭L®ùÜÚnË÷I…°TP·oámëru³¹Ë…\"F’;ë0`iŒ’c>ìóÇHbB¶½>ŸÔ“úiIm2©…=¤dBTã;_š¡»$ºðSeŸ?n‚¬0<êògeC.Ý Iz¢¶Brm!Ú}cì<)ªvæbÄŒî%îP{ :o"ü³ên¹©Ã “@ë.£Ñöõˆg§põ=ÁÜ!I·n|Â#t`ÌM=Ó#™+ƒÖ:žåëØW´RÝ–ºu}ç© #1$æUp'Ð(_Vuh:8ƒòM'ÖØ= 9+¡ÊRÜR§ìó™¢ö–B#£ ­¯7«r=?vž0ýîºòF mðUa¡Tbœ Íê±Xû$âD¼§‘LÀPH¦Wßw»£‘¹¹¡Çx[ývðÁa¢ÁcÄr+³Mü\…TÌ~ÓÁ‡²`QûûùëØ”óXW4X²ûõ±Ö®ݱïåiT¼p­°U <› Âù¬OÔ;Hô !Ê“8XÂû$ľ–º ´ß&4CÈU˜VÀ6¡ÒR^Nç$ÑØqPˆ„aµbPÝ”#Àz¸-cÒÀ‚:ºeiñþ±_E¤à±[¼~TqûNäõSÅÝñãt¸†& -¿[Ö¬Ë(OÃ=àÅTzz ãñ碗ù}¤PɵÃr?Q;˜½›åÙ}¾ÁCe0)?Ùø¢(ës;¯ûÿ`Rp§Î¯öß¿üyP éñ °2ˆ¸§plãœìVÎúeH¹N'÷ûÑý¾ÝR‡œª¥Ç`ÕŽ¦g ñ'` m-`G`ÖŽéçPrÖZmìò³|Ù¢dƤ³ïö!æú)â‘ j€iP º@ViGÌùÑÖ«‹È骆 l¾ ‚n¶‹?޳ŸÏìÏßP¥ùÜendstream endobj 498 0 obj 2036 endobj 501 0 obj <> stream xœÅZ[o·~ú#öÑAv§¼_Ò8@Ó¦H÷æH èeµ;²¦]Í*»³–6FúÛ{È!ç­a…aË 8<ä¹|ç;‡üyA º îOø¹y¸úùêçõcñÇæañíõÕoßZ¶°…UL‰ÅõÝUû]X²ÐÆåâúáê•2_\ÿ æÛ›kYa ƒù×Û«W?¹)”BI†Þ–w塬7¥û•äQD…_Ñ‚¶Kj½P…ÕÜH·$‡-K·dA­\û¹› œwg®XA Sz±êͽ9„ɪ;Y–+ƃìßûí†s·s{lü‡6Ɉ £ëM5,ߎ}¿Ž9QqpûFA&‘QŽ?¶*´&4N|Ólý< ºˆZ¢ÖÒ%ü#Ú3É”¬¸ñçäBŠ«ÅŠY·¸ôß¼_ïü:¦0uú¶zwß|对.ÃÃýô¶Ü4ëúÝ®µ-”±q«oü:¢ „EKVµ?öŠ2V0]QRXAõ´äëý#ÊÜ~¹îÄN.(oZî·û¦Ù?¤#3ù9DSyè«msÿQö÷eßΟïÐŒ–R3kç7å]+[A 6ikMµž‘ýÓß÷(^ÈB+~ÎA|òq'ŸKó™äËèn/9[ïüŒNšý#å‹K,ßî ¯*ÄgÚ ›ÞBùðØœÝ03»:Ê~í†l!8®þûC¹öóx!lô’ϯÉò Ÿàïýkòk.­¬àL“€ìL‚©Ö8×a7B㱚õóWYÔ€5ÂXBÀ¦ÄŒN×¹}ÆãnÔø<’á¹?Œ'>‡2Ë‘åØ çé/“^s>]$’’öÛÞIï/‘É+î×ñ—¿óÎĸ…Üúb8}x^ž—OË{¿ŽÐ¡V™Íÿ±„ }Ú4Ñ }×Ï±Ý •n7útÙAd_â oÒ¼Ž'LoaìßXÆÐ¿á€›CõØTû:¸tŸ˜#[ªJA¨ȱý?ú˜W…‚H; \Ã"£9KO@ñ ã1q4{?‘wñëCùx(¥:îŠâì–ÖHJ‘ÿ(˜I4м·¾¯êwÞ/%3ª^]µVM„n­ÀC¸¥Hƒ:E ¿{ð…ÚÇZ4{s(&L4×zwÜË(¢/ 4]ÍXFáBÓäv»sЮ2¨À"(Eh¬H¦T/ÑÖ½ÀcpRD…dF­1ú7ûÚ¤U·U½nüdn»EÑñ|lÊ?Îa#šÆjƒ˜ê†œlÔê\äÀ·T¡òªcˆ&M3*oáÑÕqLÅ-¯AE+pl ¤%yB6È` ‚æe¿6ÝPÈÆ¡°@& @1œ†Æ,Mß»ê!¤K-|ÙÚP[ÔÅí© I’$*@Æj îýc n…Œ<¦SeÉü›ý¡.!„Ã%Ðü”a¼Y+ˆÐ‚øÒ¨gÃŽn“ØôLùž0ÄulH1½Ü—"7_ø0Y)Qh‡‚³éU;°ˆRfœÐ%ĹP¨¹”#lÌÄe|Ž -9&—Í:Ò]– ývŒ×e‹šY›btjMìº)1À µ ¿Që\Šh·6{xô–¢û©ómFzœÓµ;lÊ®­·2eq±Ì,Ô± ΣÂÎ-IX1:ÖA¹’ÌýòºõW£JôìߎMåÄŠ“¼ò¶è{ ”LÚ$§¹ÜJęͺMÃ`Y bLRq3Œ Ôh¨6#ÏpU ïÛ•¥³’}”¡PAv`F—Å)ú<°î›/rxÄD¢³-t0G»ÈýA<%Qˆ=àmg @ðr8”êïgv\iè¡Æ"¿è$!–ÓÈg¨Ý@ƒGŠÏ©á ãϱô;kòÒP¤hmQ´Þn,C“«ÖË@w…2‰:–Æ@B utd7 ›‹4PÉè' ©`|2SðTL%û@˜+$B¯C©âžHîÐA!|ÔÀ€Áº#ÑÔ¨^®i±*BéGÊvu—ÆöÖ2à—âÌ ¼´'5y)!Xâä¨nˆ0pÁÎÇÙcÁR‚a ½yµ^ÞNÀ šóÑt€® Î.{X]+Lèõ¾^Eñ¥6 ¸T"¸EDÄÂL”WÝeéþ+‘z¬Ç6ú¦µ›c^H™Ÿ§í60ÒHž‡ô¾cÅ~=ûÒûuÞ ŽÕs¤Sò„¹ÂLu;w^…œäœ“g (MúTyÙƒž¿œƒ$ sI+æA›NeQÁ°Cp,¡‚ô›åÀI V—G¥ÀÀÆLräQIZá•‹›«½›B¥øßìNÇê} ™î{–ÁàrØñÂ&+,‘²NVÜ|ƒCAñwû>kͱ7°ÞÊØäéÉÔ´ ¨kL MÅ€qýù¿±i?ÕŒ“]ñUžë€õÜCdÐ%UèÎ3 mZ(¦:µMozHºx(×u{W#€™Td¬ó´” P§¹ÎoÀj*L„‘÷-»|î×lòt­xö²í$ñÐ,ÅÞVð %¦éÚ3ÚTvy}²ÓöéÖðÑR“$Çù¹x©ŒöÕ „J\´a/ ×B˜`Žä§ .‚^(’ת‡j·>´ T™`ô-³ÕÀS~Žï9úî>J•u®OŽŽ4Ž*=ø$“ǦE¯çþrOf¢—&…±ÐGÎÒÖ?›¼±ùþ|†¬ê^.Õ҅#)=§Úìëcs×ÛÜ]”aC ‰ÅѤsì•›˜j 4Q':ËØM°Dtzíu@p…ÕGù¼)ãùðöªa®_¼ý¼_:Áo-ÇËC8ç±Ü¢äºz÷—ÿP{R2çXuŸà¹¶¡àîToÜQÚl1Œ²|®8Ab’j@„ÜËWôämx—Lb4âoçò¬ÈiKÁÚ Óà›) Ø4[æîÄ)vûÞÆÄËaØ *ÝþÚ`.‘HîÄÚ2à:$C«°Òž(œó†eûpew9¨ñú÷ÛIâ¼â;® Ó«%es:ÔÞµ¾òFhðòîXE'd 5SÁäní°ÁsÞíãûf©O©Pwåö]<‡¤ѺŒnLïëÑ zoµù’îÙ‚GÖɉN˜ócdp£êD9Šð¢Á”Åç ß#Áó/,fý f0‚^t(Cè>Æš|ÁªtÒa*é]»¹,|4±Q#ô^¸n#ŒJÃ;ݬfd }ÙS‡ ‡Péz·i #m "\;“[9ƪÐÜ çgW¸á‰Îà†zA ±X¸§—éÀ&>á}íeÉf¥ÁþH¢3¡uN–»\µ&5DE\’cë´.)l9RçeAxÎÃlº±è= )Eöó©'7†êqÒ™Jº$µÐⳞN§ãâÎé1ß›Zq®Ý9ú©M²›»ÈÞ}öÝÊXg3/_žª&Æ9”qô—ò°¥'ˆ@€Ã!èϹ•{樺Ço@Ãà§l;3pþ—l‚vß þeýo¿6P ‹ÝÒ™!¾ÛT‹’wUK«ñ»Xt×e:æÚ^Š¥`u%³Á > stream xœ­ZÛŽãÆ}Ÿü„×ÁŠéûÅÉH1`{Éñüp$j†¶†ÔR”gFþ=Õ·jR¤¸ZÃX` šÝÕU§N*î§)芸?ñßÍóͧ›O+꟥6Ï«¿ßÝüéVë•*¬æF®îv7Ẳ¬`”®´‚=„]Ý=ß¼Û|u÷¬7|¸~í×±ZÃBk׫»íÍ»û..VÃź°\1¸5sKda8·*>z8öþEÊ Âˆ‰OËMjØ><ûW™r¢ÒÂíK| g™Î©Ü#UhM¨ˆ¾í·~,ˆ²ñµ–¾‡¿D´Ü®laSÂY.l! §qéþeV%ÓÛ·Õ®êªfã“`¾"éR´ aKˆ[R« ‰F*Ö0ÉV)n¼{¹&…¡rµfÖÝIúÅ¿”{o) Ác¾+®n«Mÿµ·€š‰ä—hëÆû³ÂX™ž¯ÿê·%ŒÍ­µLÐ¥µî¼²yÜû[¯©p£Õš’ ª/›úŸÃ¾îG¶R­g÷”ªàVLíå¸×ýÐbð¨ɺ?ºG7Â]îþ«¹¯c8¬™ƒ Ï›úÖDû…FûòõëÙp Œ°¶°{Ñ÷ïúöðmµëß?´}ß>ßÖOÑ0Jx‘€ú!Þ£ÏÑwî–Z’0ØM/üçc ŸLˆ ¤Áe³f¶ø0}” æM§14aÓvMÕÑi0Â,þ “C '± NÔ|‹TÇMWúºm¼û™(,U ®ÞæD'Ûüo¬ 2y=ÏAÎ f¬AàŸÓ¦?ú‹YðK[”Íœp0 ×ÌB÷ü,Å ­lÊ÷Çú—H"šàUñ­ˆM ÀW2’|ù /"Û$%HŽ=Dz%L§CüñPk4Ãm›q:ˆVWýœ\"I¶Í¶nýs>7heÙX©F.È1ª‹¼;­í,k:F ÃDòw»óÈå†Â=)„˜:O²ðÛáYžŽ/ëÞûA™rŒ;E.”ØèØÖp…yýäw PžÌëRL  WÂL:óî©>Æ#Å{‡gpoIxòüéXíN>߀ljÀ|{y 1˜ MÍ‚m·­º¸T2~å5Z€8¢­K82P+-†ü qDxé‚+š¶¡ÕÒñÚ8´?7m,ÌBêtõ—æ}d*m6»¶‹+GÇU¯åó!¤Z6”Ÿû˜BÑäýmW>>F<  F†8-ƒ˜Õ&mÑüð…¾®ºõCÙl«m¤c!ð¢3Žó« Û¦{¼†“ X:¼mb2™œ89¦T¢:¬ª¦˜¯f.DX"G3-ç„Çr¦wUêšcLuÁ;³DT!ï§$¦À‰.‹à$PV™þmpUÉeºï5´ø쌖@:c¿A:†b¼ÞC5ŽD"QÊ$¤¹8Î& Ð7#JŒÁ19Ò€dòpE“¡ýY:5HÁY¡" AÑ¥1ã]9ÈH¨v.å8™Â©@­›GT…òQ( L¥ï«Ç²DHPíhlõCŒªå¨ýS‚‚¢D A=nîê`ך¹â¥íÜ…à*ˆmzûíäÃZ]/¨j å>/ªã¥*¯òý^Ð=IJg{›Ù>(÷yíôް«rºó‹ÅéÀëÜYNåØëàaÙ™×a# Û,&µãMäçÆQâtq„³¤õk2CçRÖšX¦4`MÁï(?³Â[\r$K°(NµÁ«uÀ×ÉJ=¼ÄÞyO²AzÏXtu!)P— ÌAá+¡¯9W+ÔæÀ|:…xÁR¨öUJ ‘5eI ¤>jQÇh&FßU÷N]&¡ìèô^ùmÑ&§á©G]'ÎYRž =ŽÖPT”¯ñÊ ÇñåBΕ\Úñm~Ç LD xTà„‰ô”‰>žúcåE‰WyàžéþãF¿§9°R5›ýi2G²‚¨,®ç+&B4ò•Rô÷ç«…9H¾ºßH)Y‚Fö¿ñù)ÌxšrÍÔÆ¸ü»bjóq·»líñ%#©3ƒ­K1uÅ4#!˳™²ëÇbƒrp~?•ÅãçmžÂtª–v¹„LÕÌ\MÉ ò–9 …SêÀ…D溫 cbïÃÅ7 ¨ÙªÔÞ…Ú¸ÞQ@nŒùm<Ù€¢[ªÕëžcET{³:6b˜ØeWy… ²:Ô´q,l ª¦ë´ 5¡ .p}jâ)©”s‹™—®JxV»ûdAÐïÚS—”FÎÚÖžÕÛ&°ã*0ðsÿ]h †½÷Û¡ÞÀ1Þt?å¾§‰·ÑeZ s7±PuÔnFa°W‰á²ÜÈáaÚæID,ŠP!&ÎîÔø &X0ët ݱ« "7´m$TbPñ0ø]AïJ6 {Š“†-lQ7ÐY¹ jÁâd íÊ8’PëèR#ç-á4 ¬€J`0‘œ£9;q9–ÏéD!q:ôRoƒèbP‚ãŒ/.Д²kOÍÖ£ˆ»¾#-þo·€.äí°÷rügµšÞ¤P‘1«°–)ƒ_ b~p-r"ä^5ΦLq­;—ºñ €¢ÀÉ*FQôÆñ©«OBÜM[z%9IbÚ '@óCΰ‚Es¬á3ó®²ÛÆ\ƒâLÓ(ÎÍ(¬ðCˆopJKš¹ +\‚èbÜô™ó9ÎhKw…"ûÒov!"tVd¥$*Å”rÚbŸûÜs ^è> stream xœ½XËnäÆÝë²ãrP—«n½Ç˜¶'/ gÜ P sZl©í»‡d$ÀAµám6Þøœü[n=I6Ùò $¨xYuçž{Н JXAÝOü»º={}öº`~-ýYÝ/Ï>xi¡°Ä*P¢X®Ï ¬°´Ð×e±¼={¢éÓåWhkìÈÖ1Ð~yuöä™0 BI—^V목êUåIN¨¢*>b„…-µ.±šé¶äè²t[fàÚÛ®âá|h¹Â (],F¶—M4VCcM,WÀãÙywˆáÜ&w^µ‘¡“@M\-W]\Ô¸}Xûc™ 9Uiñê.®â™T¦s|ØŠhMY2üswåí$æ"e‰YËÎñ—žƒfc˜y >N® ¦\ °nséßb‰qö‚*$Ë ¿lªàôq±Érš(¥À¿°t¦ø¿0\Ä=ö±dªmÕ>‹Îá’sGqãÀÑOçfÓPîmß”[¿!†ær#¶è˜ßEá@Sô/q½¬¯·$Œ(cS¿õ; Â(À¬ý$J¦á¢t¥ÀJºw^TíªÙì»Í®ö€ –)U,°VZ6Íݸ)8Æ"xò¸+¿Ž0,âjcÖ€ò Ÿz¶káF°áŒÆ`¬–*ïÀƒ¥×2®µw~‰¢ƒ"Ÿ»ocÀ¦sºsµç)¿÷nɈ±É–ö˜Ú­vaMéL»æjS—]È„Àžù%¢¬6Éñ7aÉJeÒ1Uóal€”×mµî¢ãVdlÚuÎÍ|ö±)yKåãîÂñä…k5ÎNî6ÝÇ'ÒäÌíö1› ޲w¦É©fs}Ï3òënÉ`î´˜xoÁ<^Ç“þ#ˆ€¥2κý*’ìv]·»%n#îMvqy<Â÷•ʈé½Ä¥Ã_6¾pDa«%G·U‹$ú|¤È¥Ô*ç2v£&U¸ }·©¯="2#¨#ÔBMNÕ~&²MÛÏšìl׆J ”C¨´‚À{嫜î[qwHHSJð#4ÆÁ“¥‹«êº©ªè1ðüh»©“ËZõ©¸)ýÞÀ±¹D7e÷ÖÄô@ºÏ{éØËŸG]êÓ“‡did.çsÿ¾cûÌ÷d~¶€¤HXH„K¹q³ÅNgËŧ1.+;Ê»&RP1¬û„˜5Úp%‘˜‘þ÷;~,ʼnïGqÙ•ÝÃ¾Š“lÓŧè®wŽcˆ Fù²ˆ\nfM• R»uH<¶o¦¯ß?÷ÏžÅ=$6°Ñ©bo=*™Å^Á( ˘9=:wÈ+!Íc_’Û¼'¼þæþ9=xNßÎOL0„c^Gó³‡:z"tö¼+ïOÔ»QX“ ¡÷f&_Ïu¥1_‚©aº¦NsjؤŽùãi:ûœê!¬¹‹Ç°ž¡ì$”ÄeS%Æ×,ÚÀÑà^Ï©õ1ä×Tû¦jw"%kÁä°‡!ZŠ)1šgî;Œa!²H‰ðEEmR3ûÍ}µmI¬“âü>Ð,ÖXõ[§¤É"÷¾¼Ýo«óØoHÞú1‡çÈ»Ý$nC¸ÎŒ3çnÜ K=é{ÔöÉ0â(){|•ÊPvÔ-ý°­¯|ÒëÊæi™Æ·¤6½Bò2QOe؀ݵU“ø=ㆠŒKÖw€LT£IUö²4wB–ŽüŒ]¡Ó*ºÂ‰¶‘º9î3á0ÇS“P/ŠZ äXrî)‚ƾ ‡˜4ÝëèöfwØúà8s-‘/mS,Ui ›[›t}ØFxA/.ê]†ÔÙ:·) Ž´éuUW v”ߢg*=y‡öc”g@f̰ƒ¾” ^ªÐ’ÔßýrÝ12Ë®õr$ÉuÔ½úyÊQÚ7ÞmØ€2™;éÐv©ïˆ0t³¢§ŠU‘/ÏsÕ‰’R™Ñx0`±o²ÚÉjÕhòéo´òW^¤~D%›d€óÜ·ÎVû†Býi³ ÞÔ«í¡ Ö‘]ß'UH oêãë$ÞÔÙµý@žÜ]æ0zmd/“:d,O–w´QP£dM~_>¡çôò©g_p:2åàŠyÐnÒ £ŒF Þ,d¸<ì7«r»õ8âÐà Î6¼*Øü§—õNØ%¢ZWM4µZËHЍQ$ f¦×„Áa>@Y"å¡XA¹}h»*^’pª+–ÿS*’”‹óÌ@ÔÏ2ü œ&LŒ!2føÙ Ó­´ÃéFó_íš:dÉCHq”¸ÿu¾…ù¨`èéâûöVX¼E¨‡ øo…÷ß}ñå_ÿñK`_ÿáß?ˆ&/ÿ³úáÅ~×¾ùùƒWÕWß¾ÿç¿~\ýýíöííîêî§ßÜF™9¾® ¾M‚âîC‘?cÃ×DáoRñ„Õº> stream xœµYÛnãF}7òzÌ£Nß/ ²ÀÄO°˜ Ù±‘‡y¡%Úf"‹’ÅÀ~üVߊ¤DËÒ& 6Ð(vU:uººýyF ›Qÿ“þ./>_|ž±°–ÿ,g?Ü\|óÁ˜™&Ϋf7wñ6sœpÆfFÃÒÍn/¾^¼ºùì­Úσ•³9:+…™Ý,/¾þÔ$c=46Ä Í8ð6o¼‰"V§ÓÒmÛ…™ ”S›V‹E— l×~*²¡ :.wi|R•ý”~Ic(“ié}· vŠPíÒs޽†_2EîfŽ8͵ô‘KG¤,™~ s"µÊ_(ïʦ\/‚3ákš“b„Å-nÉœ! ƒ4Ɇ6cŒ8¥x€WRà³9w>'Œ9a”pÿ4Ä€å ,GŒv2#rÙ”EW¾»|00D;!ŽX?ëûlm ?çp﫳!RJ•Öšl§Ðšs.‰ã¢—Zó`~v%€ÌuxÚ$$ Ç,ÊöÛ,YØT ð€ ðŒe,ÁöK± Xb)âý1'öQŒf2mÞ6Å®¸]…*I ®ãù«ù?ÂN å˜ô»ËߊÕ6[ Ns¹WU8É…é` ÁD€æœjbœ9ÎEŸŠ0}Ülãßw¿Åv]Ã93J¦N‰ü*ãÌwvzÀ'&|GAÜw6ƒ·¾~Z§ ¤AˆºâÏgè´‘ΞÀŸûÅadßÇf‘TØš¥>¤ÌåÖZZñõhýºàÐ2KÉwdÁˆV{ô@&¸Ã2ö!öLy°NÙ‘'!@#ö<\a #'ù¾›¬ŒÕ Ôr\˜7Íýö±\§°ÃvïbkÏ9# ù¾€®m_$•ý๸×Q.àkŒª\T_Ŭ¹%ÆfX»‡2éS(Û˦ÈiqžElOÀVe7^ È3<]S PTp”Q3k*r¥ôÿù¾ëq&Yv÷NCx<—GÖÄ TDþK<ˆ%&£‚\:H‹Î<;­ÝC9åˆf( ~Ézed©Eý¸A…ÒÙQ½Ž|âaqȧäžq“ýWë´¦©’/cÊ¥9Š)8TŽ!3š2Íši”œ:b OÆÛ4ÚPnFSˆ?­m^iË. !ŠáPT7i3NEN)çIë\nê  Ëé ^B‡Çî’/´d¬ÖþÔszZgabè Bë(`h½¢+º§ÍĹûüY5¡¹ï.¯¶ëEWÕ!¯i®ï5kl?g~~Ò”,ªÕ¦Üüº*ÖåÏEûú¡ìˆŸjÝ¡¥uRÙç·¿ª›ò¾©·ëeÞ_Kc´}Ž?‹ø¤ƒŠÅÕPâyï«uùïjÙ=ü€Žeà\wOqT{ÙÁÞcGG3¹,6c?/0jhÝì«“nþYWë³ò}ppWÕju–£Ñgç¿û°=¸¡ýÀÝT½‹~ª™r1îƒMù y\wÕfÓû0RžãCYvJ׿4Õ}u¢l}üµ5ÌI8]Õñ“—qÊ–ç`´½ÝUëe½û¹^"Ríé‚|³sâålÞ5ÅF†öÇ?7u»mâDáRqŒÍ·u½ê=ÑS”ìrUmÆÅ9*•ûµ9I޽Ñir´ü‡;‰o‹öá—»»4Vü4ß;xŸ./gq>ƒß4‹!½Ž7âÈüðBÀˆ&ô©÷’Ã!èmÙ.šjãG‡o§æBÿ£}ðsˉ4æÜLš~ˆTª4¯Ò€«(NŒƒ1eß TNSA»®©n·]ìȃJNŒH3r1%Âr;~£˜˜|µÁ§µ~òÅ¢oÛ2L0fZ†ó÷î!Mê¢ù'X§´EaÚ†ýü£ŽÍ±n¯08–É sŒ “‚)—1ž—ÚþQÐÉ Pìøû!ç\¯…ñ!iý)_5 \%p’]–mW­ ß§Wáj ‰åx=ÙUqŒâàÛè ïm¯7Ü·%¾RÞ5õcXU ¿(…mýXð±FpEsùR®Ú2m#LÞå™8ÛzÛ,ÊO¯HÆ ²(.îë7à,pTѽ+˜ Lh~Œ†Î?»ð£, 0«ü4’åiY~µÆ·èó\ćx£„™–¤ey© ýs]îN߉…KÈÊþ•'®´B9¼9c£(‹W½ó®ˆ”é\X†^}&Áiˆ<€k²‘y îµ±¨+HÛ‰è­Áƈ¿H'SpÕ«ej}x¤ïã‰[©ž'o®Ài5x9ý¸¨ƒ ÀŸ¦X¾©Æ®­ÚTr¸l$:#³àiS-ŠÕ*l(v«ÔAÂÖáðüX§§SEX_ Á»m9à@àýÜ5UÞE±½(\¤QŒâ›§ºv0*§:(ÿgÕ¨nÂLÁàð¢(£tæa“£þs€’`¹µjÄ"jáƒßk²ªÝ¬Š”2g¨IÌáþÌóÒ먧”áÿgà„J XtØnbFôÂR.ªøëÅÏ!i ˜È¡:ž@mL‹ZÿX¤vr¨§"“rp@%pŒÁ'§Š’æ~,¡¹äYÌÚŠôs1æ²)š®ZlWEÉ¢‘½ öj§eÿˆµ^”M䜆¦S}a£ÔCÛ@3÷~R»ç˜7þ5¢Í-¬äÞpïÏK­†…:8ƒêÓ8j-ž%g˜DibZ €ä#"’ø|ÅôTc8ܸãB?~hÃr¤“ ™ÜÄ—§ofÿºð?ÿ°!Ðçendstream endobj 517 0 obj 2088 endobj 520 0 obj <> stream xœ­[K䯑¾çGôm-«‹Î÷c=Œµk{[ÒÚXæÂ©bwÓª*ÖUêcüF23#’®î1$ˆdFÆã‹/"²>ß°Šß°ðOúïöðæó›Ï7||–ÿ³=ÜüáîÍï?xqã+o„Q7w÷oâ üƳ«á¹¾¹;¼ù­ßÝýÖ:?YëE圀õw»7¿ý{XÂE¥Œöéчæ¾é›ã¶ Ò²b†™ô'^ñøIkoLå­t:|R‚È:|²âÞ)iǵ۴¹,WnDÅ0öf3Yû±O‹M¹ØV^!ÓÞïFq*'¥Ïâ|Îã‹„Ì¥§õöœZø||öç:/”Ì䇻§ôöd:ï3ÛTÖ2žþå¼×iÐEÖ÷žß¿T”\hqã@ÉFºñœR©ÊHs³>|\Ç ës}þzwP¢^ä“üé‡?^ŽÛsÛÇSòÊr›wÿðÈWŠI‡Ëÿ¾Ý7QxË*m8Oøßµµõq߀õŒ’/¬üÐüÚôC“_àJ-^ðœÄèN_ÃóìÊYå·W÷x„=ÎÍ.ËÏÝU©Ž]wÊòh+®-ýÒõtÔ¥äŽ$ G¹˜g”L~M Ô·ÕWåm>_Ú_Q`vÕ6í¨Š¼X mq×Ö‰¢;õ у•:çWÙõå ÏyB©žÂË^0ÒМcÐLAl#¥ßq3²räaõ_ë1"¸¯$)çküªUVeå>ôõé±ÝchÁñ˜ÌûEßY‡«›¾±6®–0…ëŒ Í)…º•:?lâÑ@ïl~C5`ÃPmÚóc3º „½´:kìÔ~iöãc] îóãÑI'¬DÉêý¥ÅôˆÑÚ!|úè¾>Ƶ’WÁª=&H·ˆ“õZ«Æ€ÖLÂm%¬ÎƬFß'Æä×o H¢¹þôÃftXi0‘ó°TŒü9œâ¯õðËÚþÚU†ùüú|îÛO—sÆO.MÖO;$#s©0“μv~¢6Ó*+ì|›ßeRâ»ÙâÊb®lÏi!S¨€á”|QZ”³Ù¶o“!%‘zM_ÄΫ£DÞÚ5ËtGÔêîÇ×9X…:G K¼íšáÜë"Ÿ€ ðl}“²žÍÎ]òá0;~Jù– ;IÈÎÐvjÆC—”­ FÞÔ°»MÇ0¶ˆœ(Z¢TŸ’vÁí BÓiE†>‰ 1kJ}Þ)“‘Yµï²º¬Ë68tÇQR¡ —cxmc rá}^øØw‡&ç5Û°†2›A’–g©ë!S…̘Ͼ— Qi©ÝšFDyªq­®äÝÔ5EpCë©ÝïÑa™zÁ„A"gf´‘ÖRÑ®2ðø#ÐŒá¼Ú‡cûv#ÊÈ`~Œž €a¨ãlJ]GZø®3(5ù.ð¦,áSä_žyJëw£u!/p—½èÝ6 > ïåÜåA‘\½ÛÅìXí¤A¡r,'õ5A_p_‘+ô»§„êN*ObÝf[Ê2¢³‹xJcÙÂ`&Lk†¢]´4À&FÙv{9%—nÎKá<ÑøèÐEí@HxŽ9obrȨ\è©Å9º&‹9M;›ý e"È ¡4ɵä O7@L|þê²Âh÷ wÀ.™€3ƒŒJ„?¿ÏŸˆ]£!±3ßk4à6‘q,"ƒ i”áL­ÆæÕQÖYL Ý¥ÅSàþè9¥€Täs ¯•vÂn“^¤EÇË:4•Qx¾¾.û3…ɉ™`Á LÛîpº$j§t *œ ™ÃÔ¶  ”θr—³¬ã–¾ßƒ8§„žRcÈuÇ]{|H@­¯{8û2¹Àü=ªi¨ÒnŽôî±>'ÇvÚU¸E+Š CrP‘Y,Eþq@RyÒSÄ{-Å˾5J•(C0ËxB ^Ís÷]H6‚zÐa!¼VM½ÍùW JÌ`Ì©©}Á”e"›ržDðNZlFqɲ!ÆÅ›C¢mÀ/¼E¤ÓOÛF›J(â-r ò\ø¾µö€%ä3%ti9{ AȸÑpù”ªŒpFé7;ãä?cÒˆ'Wäèm«''ÎŽY'pöU Gâ(Ò»ýþgLOËÚ'ðY¡rý“oB_€ ¨õ°éñLR Ò託!¥6ðr)ÄTy°Iº=)¹2ÎY°XZ'ޱÎÜT{IÓÊÉE¾__ÿaÛ7XG¸D(ÚøXUV0<×þ Ûu—!²(³ú„û5*%èÈTZLòXC0Ás¼ÌÒ9=ãV¢®¯‰«*@CZ«°ußí÷]6¯²„¶Ç‡.2ï)AØhåC}˜—„†~ ~(6¸ÇäE×ÿöãwïúq”ÔT ™én8ü.Ù\aÙòîÇÿÌ JLÕçñø @t>ÂO’…8¹çÇðõkßfÅÒº[,-·Œ›.‚E8Q±Ø'ðBEE|¨MrC摌­1ûf›Äfá—”— rUiL±Z‹¼óØ“1±€—\j41¦Lé± ,rº÷K¬Y逗qŒ‹ûÔ €`¡ ›‡¾»c¦!å2†å]µ`Èx¿ËAfÅŬ‰Hy³°TdiP3TL›iq—Ù¬çeóMÇUé0Dü)ÆuhhXl“œûËq[S‚—/19¯ˆ¡†@UÔ§Sßú¶>ç®¶rÈŽËP¾r:•êZAœµlÓY>îèU`8¹‚Ì,S«¤¨Ø· Ô§vwÓ·2ã†3tšã³Th—>*ÒHˆ0?-08‡HšlüÌYjhQPCƒÚZP:zl~P~ÒJ¼\t½Î‹úLѧœË¬&†V€Û.ýŠR\óùRï9Ö·GPÚ,ËkÈþv—ËkiqzÔŸÀPVÙ¥Ô")ÎÏ_q|Åí2*†…ß3½¤:×},ËÔ´Ï DB2¨~²©þÙô]~*±%ý‰Þ8²B‰£bTé×!'µ×ÿî´ÆÆpx-ƒœ?«‰ªo/ÐÍw}“‡ÀÒòé˜J‰…Í6U]¸ßI'LjŠ>ʸ Bðy“<½ìTÇèA߆blÛ·ŸR±"nhâüÏåNçù¼Ü-7Ÿµª©sÛƒKwÕtP1ìIüí¸o†!ºá~ÍŠ°Ÿ¹N„ú%§zÏÊ3G…سgÒ—stƒcˆý£k›ëO‰…ô×=u±LÇv6/bé”ß×d¨àýÛ„H–"zU†•Ð Ù,WœÖbQ»¶6Å’§\ÿeyúïcY8©=ðŽÐŽà+ã#ŸÅ1êìDg,"¼˜¡5ÇÝ)®ÐXÚuØå÷Ž”2$œ7^Q„á·_ùÇïbv,,ýMÜ~íä( x† II„>>*é)íʬYPií(GtE‹ªo¶@碇(ð]è/m S!8'¸óàØ“éÏí–Æ ÉS¬ýC™¯Ø²Yn<O”ÊPŒ"CU¯Å4·]ôCCƒ®ß…O3¬“zpJÆÝ‘ÓCI™¶õ»áø{0ØïûðÛ!ü_2%nû—¸þûÉúÍtý¿½A—ŠËÅäóâûµåÅ×ÅäëbòuX½ èc !¦ýÏMj3©r˜V‡ìÇNPß 1µ`Ý ™üâ)ôO9[6ŽÜ‚N^G׃$ÂhÌDSÎW*WÇËp¾M±i¸r‹ØQ?°Í±i‰)Ò9­[¶Ä‹¶ž4ÌRqîñ¯”:Í×ߟ´JœÈ¶¿‹‘Õ˜”87ðÄ/3‘“ØÅÆn¤ÀÜvªãü[—£ç}Ò ¤á¹€ï ¿ÀÔPýâ)¨Ùj ¾?äޠĢ=J]c&zr˜ûiZQ͵*ãs&=ôJºÅ±%_Ö3ZcŒ¼^¿÷—=Žœ˜Exkq8C3éÕÝ®gÖÔp3›~C†´àÜS[ JÃÙ*ãÑBq?­ÏA]T˜#Úæ)ÅŸÄÖUbp¡žC¤ñ\¨¨7Pã±Æü5'‚ÐtÀfS{|{lÏMêC…sÓH,sjHÙ¸[³{h†Ä©¥Q˜Uð>ÛT0ç7¡4ñ/1áä™–®pa`k·a$7žâ䙄Bdj¾ÔÛó>õ¸tHän6ƒÂy»³+häÕ+yZhÛoäi·ù¼DÐqZ_Œõ隀G½ þ6Ë9Íãe¹»z˜¼vShJèRiÊ šF€8ER[cíõÕÝWï34} v¨l™[¤Un°ùÚÍ.tE¢:Œ'©]K$vçT…XNé©ôíÃcÂç‘ë§q¡.n_}Œa²>ct”-«!yAè{<Ò® T±íŽ)€4 d8 õ3õ2¬ÓfÝ’qdÄÏEQAYšŒwy%wz6)2E=v}ûÏ4¬ÅMÖ#W 3jjŒ @©h… 1OUNÞËЊ«=‚À!©ÞÖ8·ä~Ú—#o´ó¦œ…<”Ã#|C.˜ƒ]"–a¦ìe¥]ÍV³wkO‰VÄ)®Jª–ðeC*]ÝûÅÐÐtQ›;F/fU°Òû3ÐU÷±mîT©i³Ž‡Ñ 5‹7P5"k­£=λ6OŸv1À±^…µÇt4 ¬Ð·¦ënX)ê €òS›„ùãK;;Ïøkuí™âs]ûµº¬øè‹º¶+§¥ÖÅR׊ɶyé–ÇîÃÒPÜiÇ$ ÐÀ&ᢓ›·_gÀ)E,õ»mùÏ›p{F²Ø¸Ë„xƒ0Ën[ €‚›ØëÓá‚À²¯œF9![.[tRàåÖ^ Â&w3ŒÇštªW¸ÆŸMÉR.Y'¡‰‡e{Æ\­Ñe.Ç{a j1–b+ö5T Y»æ×vÛ¤;‡ªq5»-óÜ%Ï&kü]Mm-õAêý þùñ;uÛVß=æ27”Ø„$x7Ôò*r?T¿“| DÕ <ÐÚ•¨på……mwÎ}]E†>Þ»ÀΔ„¯ *Š‹À\WnbLÏ»f¼6uÑ÷ –má)}1Ë—0¨š øHU ØV¼¦?~€Ÿ¼·ûö/›ª²äüÌbÁpßw‡ä±’É"|c“,û’Æ|‹÷ ¼B°™÷ÍŠå”Æ8Öt¹LôÜ÷K»ð”'è·D˜Ácð`ÏÿL2ü ØÐ¯&JdRjÞJ½U÷ºWÉ»¥@†r—ìnž?1\ñÏþÆ!áÇffe„_t£/ý‚Ì,,[¨éPÜ)4¥ÿëîæ¿ß„þY¾žendstream endobj 521 0 obj 4948 endobj 524 0 obj <> stream xœ­ZKä¶¾¯÷Gô-^`ZáûÀ‡ØÎÃ;Îr˜‹¶[³­EÔ+©wv‚üøE²H=ºgÆ1ØØEV}õÕWE}Ú‚nˆû ÿïÞ|zóiCDZøßîaóíí›ßÿ¢õFVs#7·÷oütcYÁ(Ýhk»¹}xóõîÝíG˜ox>;Î#b³…‰Ö®7·û7_ßua²Ê'ëÂrÅ8¼ÀÍù£›" ùUaè}?ŒR^FL-wCÔ°¼ûk'r¢âÄýc…wßS¹!UhM¨C?ûqž,ˆ²aŒZKoàvn7¶°Š)áv.l! §aê¿Ç‡Y!”ŒOÿRÝW]ÕìÆ—Iؾ"ñP´ ~IËò%©Õ…ÄMjîæl¹!cj³eÖAŽ¿=”ÍøBSH=߃UÎ]Õõ¿ßÖ×&.v¬›qÔÜp´NWŽƒ¢ ŒÉ0øX7Ü(… <ÚçPvûÇqXD»´Ax€bâ´¡~¨úq‹ÆE<Ï}ÙÕ f "iÜúpðË2Ç”G½õt¡Úô¡í*ï"e ~ßRêœÉÆ_O]µ«ûê8nIBYßÝŸü6»6&¿­FrRp%)zc_…ý°dJçξ_‘VˆË-xÑrˆ.÷ûM°+×2ÚæCÕT]yÝÅ! :ñ: 8l]`à¹!8-eÚ¢mê&@À .ç€3…&<-z<ÆQŽpyž0=‰P](Í™^zLùèÒa”©ÿãH‚"dF§R²«GjïÇ1ZÀËMz~8lQbâmS>c¬ ZÇ—ýµ ¾¢:-°õÀÒ€e«Á·Î¶ÔxÓ|öèá:EgÕÝîS ³fÖ]yî«€2"q<g“]«º »5JÄ™ûú+Çjãp …t5xNeRIñ"'À²·åñCÛÕÃá¡Ï!Áš†Ê%ÀˆB·!0ÓBÇu.ò @IX‡švIAK\T ÞUÃòÑŸÊ+#«a.‚G-« 6Ô»òè#~Ë9˜žYï;ŽPÁý˜ ò·jáŽpFñÑS„©¸£zˆcBÅyuÇ4Rá¾êë®|_'h!-žsˆ dù­}?”ÞòœÅ`JÌ  5†MÙìë P>7õ}Û=Œ³!n-ž¤«úóqèÃú:Ån¹ëÚÞ»Ö’!–ÁðÀÌ6¥°º?G¯3 ´Dâ"OIBº0ðNïB'!oS‚Ükj—³ËA­AÆP´ThÏÇ}صä¨]Êãc»R$Bw|ŒÀ‹$n,JËâÉBLBz¡FLžnÒb‹ä"œŽbÑÈCœ)ä&$,pk<@WR»`^ uI¤Y¦yÑ.„X°!—©ÿ©º¶ðz‡™È‘ üç¤"¯?¸%Üz—–C9<Ä%å”_ÒÄlhÝ¥—DÀ¬ÒàÔõ<ÐüaMV*%,Œ2-—ž\ÈfâvϺjÜûsàíyóT>ž ~ ÂIÿQ†ªtÝžxa{–“뉰)Ö bQ 'èda¥¥/„Úh³´pXZA¥ÍeVÜè¹dÊÒÉ õÙIZuza(LT£Í½`‡êhžý>œEà£ÙQ(UôÄtò:i…ºÄ ´r÷j‘á°ÊQcá¬ïÊÓ·çaXC¡ÌZ”c}ÈŸ’itx 30-¸žM÷Q!Ìñ¯ª §µ±rÅ÷bî{¦qI–ð$/ÛZ@à£æ˜àF1 š‡ª.„¯+õŠá›§–¯®ÇnÜÇOÇ‘OóržÀ*öŠ È;Œ f¬ tØ*yQ˜Â>9 óhXTqÉ]yŠx“®Z¶S¿»‹D)YžN »b“EvУ´J¤"!ê?ÈÊñ´^ B Z®ºmÀ˜*œaBøzg4å1’&_5û£tÆ`1¹Œ[*àºÙןëýÙ/ ‚ÈÕl¹á}Í-œÄS}ÙU§a Aà!ð¼„XûG;üXö«á¦\ÁgâæbêQL €‡®*‡ÈfÒ–Ó+ûµM¸J õ_®<ì€"H/È<*EáÞëR;Ô Ïª†^ -¦`LwaHò¬}³"m N!e°¤‚Ú:R‹5˜ |ˆ¢ _óB ¹®¿RJ`a½JB›*ÈëqdË I<Õ‘ 4Gµ˜*j†oõé\Sa·©R $ìäæ¼˜d"3^{!ø¨Æ¼~-ø”£µ£@ª‚— ʘþ¥Â^ÔäJ,•»™òªdVq^Ê®Öó\£y¡ç\“aM¢\{LH‰¢¿Þ®y‘¾&ÂcÓÄo ä×)s×âd>³»,ñŒw¨ 5ª(Î,ÇÂ?+! Rœï^˜”cúOçNõ%'xß‚‘Oùï"+ó×–.eFqzÖ*KaÝ m‡5¼¦ÞþÖHÊ@5û ¶ÚÛS ƒäZÂ4+]0AC¦+ÁÑ’NèìíU/¹r&{Ý ÀUÓ¹a(v›Oޮמ|ðÑ×Ò‚9ÅèYëÀ>-[Ûì/Ž»@f¥UÈéyH‹¤#â`ef±[vð*À™a£ô;5‰Ávu‡¾…ä)1e· 0N<ŽF|ˆEºqš15Šëò¡ Í}ÀŒU:#ØÀÚuùJÜÉ™9”`e¦ó Z²¯ž•#±ÝÊ” «Ê] oPlŠeª2'à &“óÂÔÔ‚H4'S²{MüaL$Y}—²’Îw…YI¤Þï¯ÉJš ì¹˜”TêÑ^¡½-ȈÂ]¯LLåN¯e—kýL—]îÞ­Ç Ä(èôE¨üì–[WvÄu®¨4én\([DãjA,Rr;÷ƒ6(Z2Îv7>jÆÙÌÝ×ÍÑ«¡æ#Y¼ ~”|Ñ#1±ìŽdÏ£À®>ŠØ!dUº…i‘®NÏ^VRçN÷3œF1,öf¨4³6p³ž"äõÊ)µÔ3”𙿤R¥ê¶î‡2\Ês  ‚|•¨FåZoFàlÑX‡òx!@f‰Ç}i°Ò*A õ—NàÊBŠúÄy1ý‘«‰ÐŒE­K>³Û櫱+£ß@q¬Èû žWŽÌUÓ.úÒÑöZéø7Ì‹/Üä¿×1ñWÇuŽt·üú¥àGX&Ö‚®MåÈoW äÅ]Û5UçŸÿ5Y˜HR+z$W>k¸PÓqw)bcQ§–þ›ÛXK(Lpgɸc1·«àˆkõбêcr2)ëdÍv•øŒÒp.-0ßí«];sP”S‘ñx\ƒr>ÃsT‚lÏÇׄˆÙ¸0³¬r€ûd„bž{Aœ³ôµZD ŒÒ¬wÄ„ú°é‡ª¼P_p H*]cÎÉf—4·T©‰žÉ#…=iO"ATCC'{‹µt¥ïATb†Iá>аˆÙPd@Š£dQº¹Û+»TC6)³*ƒI_y•eÙ"õ[µ”i–b:e¼›¡ i ígK ¡Ó d جð\m8М¢Ï ü•¢b)› )ì\7¿ÉÜõôñ»¼ÔèÐX”'LÝhªíp¡ûì’+rÕu9Â’~}‹C˜ôÚ…Ë*ÚQ“È9æÜ­‚šW}“ š¡«Ô°"G¿5í«f™_á®(Þ³Œ÷‘þk?® b7[w‰i¬— ö‚ÈÍ2.…’yÂ_Ú‰åÍ­qŸ}éùáXÞDÜw³›€ ÂÑ=Á”ÚÊÔ}uû˜¸/¢âãw_¡ß|a7Oô›'v÷n *×;˜n#GKH½|#“Ë™ç{é\ð)Gª·*õ£Ç;ª}E‚ÒE? V ¬TG­·ç„DánÞ&—Q¯²TüÆÆ–¦f´ÐWáÛX÷é˜JZ¥ÞE03Tûê„2Rf½ÂÔgéóÅ«´4ý0âR]ÆòÅÝæäW7JÄ?ÝnþùÆýý?À' endstream endobj 525 0 obj 3452 endobj 528 0 obj <> stream xœí[KǾËú{´å¸ß>HvlPìÄ^ 9è2KÎ.Çær¨RÒùñ©~UÏ£¹9r0 XÀ°§§»ê«¯¾ªî}wA*zAÜñßõÝ‹w/Þ]Pÿ,ý³¾»x}õâËŸ,»°•UL‰‹«›ázaÉ…–ð\^\ݽø\‹/®~±ÆNÆZVÃ`üÕæÅçÿvC(«„’6>ú©¹iúf¿nÜO’WD¢ Sj}¡*«¹‘nJK–nÊŠZ#¸öc×ñã|+ˆ¨2• Õ³A¤`¹Š²g-wäm›|ºÞuC`)æ ÆêãÖ?å„Oö5%‡H9œ)”ë¶_ïOŸÞÁªÉ¬ëÀ³`¢rfo"OýJ–iüÑB3‹Áô}ˆLȤH˜éþá}È éa ôƒ]qÁ§Ö­ƒa©3,Îò¡f`%ÂÏËØ´zØ‹Ï/ÔéÅ´¾w§:­r¶ÄIº÷ÇD²Ï®Ý7+ððq{Ù—>›0ìTPõI‚ýEËs^E ä…^`ÈJôKÂx#c«õCÈ@#¸ê]{»ŸƒfIôP±s“šŠ“&_wáƒJœ·ëS^Ö•a³üµi÷õ±‰”Hy2Gý±.tWOƒ9P°! ˜ç’#£Àä˜z6ÊÁÂð­Ð ±O4—K‹q(:¦ŸC8¼Ú©!€Éß1ÆŠ?ãþÛÀ: %]9j o=MW ìÌÐg~* EN展‘ÌRÇÍA f®QlsŽòw &]·Q 0—(¹<ñVFRœã9^I¸7g|ûùGúÕGPî–ÿ{úÕ={ûþb°zû°E±ª„53«B]fD2ÿ/°U(¦@ûQŽÕÞ}„e¹µSáAÒ8-£>vm 6œ†°u–Çhè‚•W\ €žšRt•)H™×Á£†dUߟ:dΒϲr?Ô¶RÒ…qlöÜgQjb‰5s#@.GÎDÝB’ØMÈzPŠ“yØÂW$º`=%p•’,”žÿHßÜuqÛ£j㽦gÏ4]pì™BÑ„UßÝ¥ØÎý‰’%º0¡‚šÁ,¿Þ×»]\52t_E€ŽBáûøöM7¹&9÷—E جŒ v‡úRŠÃkÀ§HÉàØk¬n /È)&°n?´C”¼°Â¥KĆc'Q(Ó´aå€V(ðGºçЃ0öXõÍ®>¶ï#ÀTÖxM€®Â"»"£PµÔáDM—£†"Oa 3• i šî}Ô­–#ß7IUHú Tèæ:HD.e%¨3¼'¨ŽïöÉ `媯@ÿ×»äD“½Žu$1këCx¦GTѬۗ¨ÀY‘;adV¯Q#°YpÛׇm»>Î=;عÇT£&øtQî@—<Âizzh?ÞÕ~ÕÜÉdLw, ‡Ò£SR‡©L¤Û:Æ#˽„RŒ Ñœ‰%@¸-LN }¬¨&XUwÇH]àemƒ·áçIAu”“ý¦9DÕ•&ˆ³È]$ ‰…EßCèYzñ»¯Ã˜ÙYp±–i¢ËÀ5Š„ªbÍÐuékÚiQÔð¯ëÍßë£?•Ž$ešo[Z…uÂeÓ÷á«AFŸØJª¢ï¹P3øöJûÑ•ë<SDµÈ"ˆ*tÌÃB%Ä´âzîÒWÂòª;©óù ’«&ò)+…iua¥ì¬'\Å’ GI±•²Ôƒ}&JRÒ… ¸õõdàªJ0Åì¸eUîT(=¸.¯!ÀN°péô¨ }HŽ  È¡µè4]t‡èh¨×²ô­]¢d4‘ R§ORÐænNö9—4=|¹Û%­å™Å%e­c1? E_:ô!{}Ûîv?‡ÝlJö„ÍiŽ)9të¾;žŒÁ•¸¯üx¨!Û<ô- x!ØÅ‰â4Ÿ^ 2÷1zÅP€JÙG~±BLó/ ȪM$:FrQ²Q1˳F ¬É&Šž $™Ã®Þ§"óaòˆ%9Ö¡NߎÎ1Rõ¨Q–šP<#¬ÞlZ±P ¨(Ë­à(ÿ@2¤É»zøÕ Í—jLS<(¨ÞHSÌfæzõÃ7Q©À„zÔ~L4«ÁÚ3e…E«qy8¯våçcT¸9쿽Ú·Ýév'¤âä€S¿²¨C†ö·ØÓb®-pçI†[d÷aCœdûsÛö•:ã¦boØ•R„Ø©!¡(¢Øÿ; ¹‘ sÍüÉ\Y€ eEÓ‡–wÔ{ûe),Þm=Æ«b0“t BÛ¦aVß౉ÐR·ƒfo$œÒi@‡ãyI<r§>»“j±Sí < ¤[‹y·8 -ri˜XÚø9H8æÚ_+ õ_Èíõ±>Þü*Lg±úÝ×õ"eJ DêW!w («Ó#?¸ÛµádÆ5ˆ±îøOyôU¢‘•¶®šœÙòÌ[cjô9ÉæÌ 3ꊨ´³ —Rv.î3·>žW "MÙ4/÷M*eæâ‘"§X\¯»DUŠçVUl¢C½ËD.ƒc¸Ê—¥åóŽßä3CwêÃ¥wN¡Qgô‹¥“kÜ]ÆÍŠœŽÍÇÐ^þD.%c¸ˆ—¡aÛì妞¯¨‚´Ô‰,Á²´ iAš0öáÀ0Ê⥷®›¬âó“Ã\­H/q)ç«ó[Š©yˆ X1jìnj I´Qš$Ê­°„}&êºèv4KB–r÷ÌY áàO•ÓÛoàm ¾Åñ0D®FkÆZIŒŽ½Š–í5÷ÎrÊ ìqÿ2ÍØ$) @¿¥h¨‡mŒ¨ï™*|hiTO³Ž#'®œV-‘Êg•Ï6î¤æŒûãþÇϾ ”ì ¼*r³ãÌYþ„©ÝŒßt§ë]svNGd&òˆQtÙðuønºÝ®‹®dbtSˆ; ãcû¿”»âîFï°¹KWÆ. ~QP8æÔ(—s}O©šÛ>Ü/úAá¼ìj4"–9¢üA¬¤Û²#WiØbâdz‚Mû*IÎã¦fsrÈih‘|Ë$f',LÁµ:—9îÐ?žhÐ|x),vä¶M{›ðni.‰¢Èoaïcˆ<—K¶X\F!ÊòÍTÀÀ,6bP2'4åìæÀu½^¦¯_³Ë!Ly.Æœ‘«Ð{¬ð„;lÈ··&-`‰äömÜd¸\HijOE±äø­ žOå¹›¬§¤ZxÏmMŽx„^P $vAFwÝs-QUØ’k碼Ì[ÒlVE/´ÅžËò„kO›ÞE::ÿ±àNOàe,Üx Âª8ÌË@¢j “&CëTæ.M°ÀBBœý+w¸û•øV¹Ãœho¢=\.H‡÷4ßH…-‘ ~Vâ€0bxjð‰4¯$'K©un²d-9ªª7›¸“»v9ߺ˦|~dnÔÈZeõÙC>‰…*s #öˆ+WPe;<Œbªz\H£R _¹lk?7æÚv¿oúr¤Pn ß"aïðu¤CßMÛøõ¡ èÒ_Çú´ øsÎ%²pj?:1Õ™ù€«È^©öȈȘZnÀšxe&fÙ`ÏM´ÿÑ¿Bó>øªDƒ8ü#)TUIÈ%ÿ|ìútcâ=Œ1Ï@~E²8×Áˆd’w—Mj¢)»•[â.-[ä绤h –5XµÄkG.'ÏZ @4Z‰ç¾Û±¾c/sÍæÞþ}׸Â:7ËóYhÁVëØÎžphê7I3gÏI“(TF„f`lšÐ}wW 1þïhÁç÷Õ\»Œ©å‰Ñ ªéÊIÿéE¼°‘ ë]ZtÜx,ZVÊf¢²t62=‚‰'ÇéxXåS¼:™ã8ŸÎ®‚Ìh•Áú5–ƒxOL°e•4ZL8$´‘¯}mëýme¸T?'0'g£ûÉùôcú²Z¾ÌgX4®ÁñÀµ°Xwamšaûæm߬ãõ°¡X±çÔ™¯÷?¾]å}ÊñUËõàÌ œV“Å¥°ÉüfÉB¤tï¤Ü/Ú»nšaâ·Þ7ÝiØùÀ“Ñ[²Eáæö h\àB"ÐsfùõàeÍg‰£Ëÿ5 §ùŸ -ƒFP¬‹7µKY²P<Œn(€çm6ª1gMJDX¡\ܵœÈ¯'üÕ„¢XB2t ÒM¼Ôã¸O„´+-ð§O»Á®åë®ù’`w80¸?^Ê1tº‹u×Dì qÕ\‡}Jø@ ܲŸ;w§˜™L Ûî´ÛÄ}S…è:óÅýI•˜áÂ]$Å}–Ë×!¶@SàÕ6 °@ùÀl¥ûrÃÐ^cUͨÌj{h£žÀèrm.—ScN%PrÉ\ìžMûŒ!)¿õŸW‹Hµù­Çn|¨Š—ÌËTžÔo¤àms—G)ûîÓš°¨" ¸N·˜hþ+‘ãðö‹*:É÷5ò_0‚xXw±;éiѱKïï·Ê'manXî[/è)êN,Ì“·ˆµ&â&=|;Í]†RvvŒ7¾Åâ>þzuñÏî¿ÿ܇swendstream endobj 529 0 obj 4236 endobj 532 0 obj <> stream xœµ\K“ãÆ‘¾çGôQŠbëý8ìAËZE¬%íhÂÖÆÎ0$ºk6Ñ’ÓÓÿøÍze@Ý=ëµ#d¢²²¾ÌüòQýéŠ5üŠ…ÿæÿ]ß½úôêÓÏÊÿ¬ï®¾ÿê_ÞY{eo¥ÓWï¯_¥ð+/Áù•5ð å¯Þß½úfýíûÿ÷¬ß_Å÷˜ºZÁ‹Þ)i¯Þo^}óaÌ/›úeÛxi„„Â;ß…Wtã¤ô&?ú¸?ÄrÙ0Á\~Ú®ù¡…ϧgÿÖ–%3åÅÍC~ k2]ÖéÂ#ÓX˸Êþý°‰ï醟Ÿqïùø‡Ê’û+ßx#Œ ’+ß('y~õ÷øcÑ(£Ë¯ßu×ÝØíÖq1 âV6Åž>éEýIîm£QH«Ã;+éX#„¹Z ¶ Ó¶ú?„o‡¤€/ãig ™,~|»‡o“^ºû¼]+á›Y-»¤×pnЬÇô"o¤ùѰˊæ?x¸í²žü§¬Òïï·m\](XQÍcxd§/nÛqóß4pþªæ0!n¯=äctš±÷Ã]WÔËXyÚÞ Ç¸€ ãÆÖذ²h¸^‚6Hh¤#ü,aU°ÆY]Ñﮇñ.ª*¢]5Ü¢èýv7ÒÚŠag[gÂNÌÒ5Lq[d^·ëŒ5-TÑóm·)ßsL¡§Î9¿Œ?^ÃÏü˜pσ_ðŒÏàç£PKå|VÒ‚¡y›ÎY:§#né¢Û,†ÔN‰0ä¿i÷·]4B Ÿb®l+úø`q{,°¤ÓbÁÆq JkŽ ‚¨V4¢¾MåAlìƒ#é_'€*fÍÊ·ƒ…ÄAã!Š;Ý¢¡¢+sŠ1mñdoº]7¶ñ|¤I\QÅ}{8tã.) …ñ9R"B£O-h‚ípç.œ^v"4„N¶ ´c]A¾ËƸ]ò1X‚@ãýý·îðG<¼¹¯Ñá@LY®I0ëDÙìo§1ª[÷×ýî&îKÆOÍY›¿ŒÃäÔ_†ÈAúü9?’Cn‘6¤ƒH׊Pí¶+ŠWŒésw‚|ÀaÈ{„ØTÎgŸÖäý“'Xü*®&ë9~á!-î™×hŸ«Ã#ذ 3•ÔdÛ~_ð` Awñþëç7?ÿwTƒ­ÝIòÞ'¸Cè½$À `—m‘ÇðB‰gœ<øq‰¦p—cתÈsLû„“ãàù°ñßÚ »Õß»qx—«‘œ c¦’â| Ù¹rðWoË+ß·›¿dµZ‡ë”½œDoÐR áÇ´*€\xªH8_Ñ|OÎ÷²B!àš§Â†Äó>Èj RÛn¿ÏÁÖ%?šœZô¸ÈèÀéaÜD Ö“èB¾¬»ûBi’//¿kw7Q ÉM|·Ø½÷]ÛØöûn“#Y¤+ˆh^‚*j\rH¬·ýýê®ÝGz¨tC” Žå0öëCñìæÐpGàšû,xäæCÌÜœ8àú Ú¾ÝïˆÆ…|ñ°# At.Ðó.øŠöã¶k2=C(þ„®Óˆ9gŸq~ëI½!VBø™ÀŒ–âÒ†Û„Y þ¥XÙ¹kïßd…|¢/$ßk¤*A&qÛæŸ ngÎÆCæj(KvÈÁ 5K!Ø»àUÒÕeÖ)¬ÇM%* °’Úø¯ZÚ1{ñ8ö-¦ž’ÛqHHç C”°ää\â'Û}!™™^æÄÙO–]Î:BGYÇ›ä83t©p9ñ¢÷ YšEçà=ÿÜÖqVé GŸK(’!¶'3÷¢Fè¢æ™…_Î-‚{³l÷*cŠþp¬~Ž~Ù`ʙпKå0?Læ ¬Q1´¦‡Ìh5'XóbÈI4Š7É Hoýì”áÄ$å«`iÝ6•#B@ô¸ÊHŒWRðzÈÇÊms|ñĬ÷%b’å.;«]^„ÂõØÝ@ÊUÂÇ ¡™º¤èÚqsº;ÊÿÃáe÷ ’ýMÀ\y ìF€Ãü¡Ýî‡ü¾àèÛ) TN_ʺòÉ:Al<ù§u^Gé2–»ÖŽ ŒTÙ§l{¢§@äÞÂ>ßuëÒí2¡ã ¼òÌdZ±潟PøÞ»î¦D-ȃ4ºÍëãnâY2@a‚2Ì_J²2§%Œ‚Ô !õpÛå Ì7ÇyàºXa˜ž"|^ U¹Í.1²FW£‡UHS>æàâFørdàÉ9¹í’hI Çйé@O.›I“Ql,ú_Q++id¨DN½ßb‰b7”ÀhÜ˦ÉÈõ Çþß$š¥ÀÛPv„ÆVÆi{mæQš,²„)Îg¹Þ$Ž)_‡Ÿªœ·éfº(Ë܈µCÙ—ˆf,ë<è¥Okq,[9$q(èLq³u£§†DØDFW‰5kò3IE òfš¼ÎE´è ‰eà©yýmáŽÈÛÍØÞßök伯SxýtÖšÍ[[§ ßó$Ú 9ÀZ‡¹KW(§h™5ªëcÉ~ØUÜi8Žë.—±3€:>5’Q2tÌs•ÄX—‚IÆ ³¸×’y@ÎHÏv™ª2M¥¥n¼»C®OI`Ò’4¹æÿ9;>cñ´sèÐÎ >„„yH„lÀÉ%q9ÕL0¤BJlÑ ÚC÷9òv,œ”z¡¦#˜'*¡Ú§/;˜ÄPæ‰J6t™ma¢Ï:“;SmÉÅ>ZzyRæ2É@¦ÅÕ9®¹äS\7)2 €”ƒÐhBU ¨ÉDh&[RiÛí¡=<ÞwÙ„GvûãÛߎúÝfxøóª ,ýkÚxLÏC|þþñím¿ÝäF“;âHöÿ‘B·ŸvëíqÓý´»îÆ~cúJöe’Ü2— þ3 $T=æJÌ+”àÉ>ÉcUÉ 9N]Õ± ›ôx¤Q)ž:ÅÊWVwé©j˜Á4oS æ–Í2Í® ›ÑgU9W‹ ïO™ÎÂ' ÑÖçèÚBØóˆ§\ƒp&ñ§àTF¼`í°U&º `âÑ.ïT‡ÂkQè›$€Ì^¨8)àå§ÆWð¬ñŒ<œ250°5qÛ3oj6DëÎ@ $®ù£Ã@e¨úÝn6}ørihÀ ѦàÊï3·¹En`Aµ(È9¾|qµ\ÁîÑõ~LÙ¨ïK™Ûô4£» å°Ièÿiw<ür<À?ßnÛý"¢¼¬ )Yë1çsO©N0>Ìï^5&´Ï‡y(ºå»®wׂT×p<`BPðÜ!é+Ñ},ÎÃa–u1Þ‚²=XêÕSÅ"«¨ª1ù‘4| àÖµ ;O¨³  çɪ²}`_YØ’”X›DÁ¡ ¥uëê^g*id¢ =òX zŠ:{}<œ+Šå{‘C>UØ:O!„Þ #zSF´ ΃eC.ý‰¨þ¤YB x;pƒ³¤;ÁÒ m/Ó¬H5U´â8on³½…Æñ5ºÑ¾äE»M;ö‰Ï†º‚ÃPóUã&ªÜÃñ?„VI3k •Uä¸/ߊ …禤“ l"8z£gÆuÖ+€ŠœÃÈ+U”ÉSÂ>O½b>5eQ7¥—Å+®x®;Íy•>À9t7í6ÎÁEQxþx,I& ÍO¦‚Ù辻˽y™næÆ¡YãN‹…U©àݽÞå¼8†kÔNŸÿDªu鹃B%ÖNïÇ!Ñ>0fM6»¶gØ:÷!ÂèÂzå“týO ÙwǾuèø"Y`ê?|îv¿l6ø~€š±ôêõ¿Ì åõ†ÎmðõAXpUa(ijÛUïôõv»ógd(U bÊpûs!´by¹Œèàɋ q9fÛ0âÒý®”„B­D`wüº]€2’‡Ý‡o³Ü’zÃ×9ÂkP,Æ©ûöp[Š~†¡ÿºI 1ØŸ%’ŠAÆjO‚¡3œcÂù{8×_£ZD ÁØ]ß>Þ ‹tYpYT«.4¬aÚuM5LfXÕ~ÁÅ©GB‰£ìí|ÉXC*sZ2–TX<“x K­?|Î*š¾_Ãv¡?){œ#‹ CÖÀ6&4:êl(vŽÐM¼ˆ¢Òª/ߘݹIãÔ,jÒ®‚³ñžÀ¹Ï3ƒ ŒŠ†0>œÔÍ& q$…sô•1ÙÆŒÏýuÁHª<·óRj¢“¯wyº윌qÌ[0¾²ËeV‘uR¤˜T ©(̲_´È9ñÿ– x‚F,°*û¦¶ñzöûì·€ }ZÚª…jQ|K¡eIOCŽ@†ú$›ÂáÁ ”­ÿFꀬñpTÉ‘K=ôwX4Á}¹é˜âKl@QúùË+Bãµ›»þª·’ŒäÛ¤Êaª¢†¢âqº3#Ô-.iSU¶PÝ Ì7/ ÝAн@øEÉÅâ wü1Õ–>¨’|±^¬>¯¡.!¨éö!Æø0R0õ!Ç]÷阇 C“ƒßÿ¹¡“€Ö†$Ö[G©p©8+E)`äN“Äßú}ñhZP³ã §á¨u™’ްxØy±@ÄUøŸ½Ø¦»u.±Âímù6ºŒÐÜÔÔ»)£u!ÏGž››!¥I§ï²n üò%Ýøgˆ ÆoÂ@Æôtgb+‡YE%¶&Æ|VìL¤@´¡MJ‰Þ®$L`ø–&•h6Õ3Üó¬œÊ=dAÊ<'úxAs<×ãPÆqÂ<}Û]cs‡Z#ØîЧXÀ°J]ÒU5„¼yFóóh–@búXn&„DK;†#ÊkA-›Õ¸ã%‹#eÕQ>Û‰4e9t"_Faèÿ§Ú‰UæIܪÀPz³àp г @1µ^övÕ˜(M<1F'{@’¢—ÂcQݰÔ|±Ø0‡ø^²(_ÌvÕ?ð¦C‡+:}Ág— –/½hi†…Œ ZVŸL4L'w^©8R–Yti÷%·ÎP°´ÂãÕ•Yµ¦¦3w%-r¶="£ÃyÂ]Õt‰B¬a·k i4$Y4J™¿P•½¦>s9 øgÑgµ¶K<> IÌAŽ»|°a…D 4ÖëR啇”/Õ-âu›ku Nƒ¨Éœëq‰Üœ C3ÔçÀœRÁ‰—!ó7abÓíBï}ØÖm›eGÀͨÊvñ2œsjâ)m‡j‚9u#<´zÔ•î©0æ¤RÏ l6g‡`Í ŸøÒ•œsPÎÔ>tÄÌtÈø,³=(Ì=Ï·ß&º¨‚ü5Ù½“åÞ,..P _øš$ƒWùkÆ ü ÅK“ŒêÈ–f1s’öæ1W¨Þ¯fNš•>äÓæuí}‰)ΦxŒÓ¨BÉieÓÅqÃS á੤u¸ÍYƒ­À“6%È)?ç’tb ¯qšŒU•ÚI2F)ZNÅ wg§ôŽüL‡é™ÕPKvœlð…§ ¹ðiC"øiCÄR#ì©]kWµÞê]Wì2Y]\(äN‡ÉÄiýü 0¤/Ô€±tÛ…vÀÐ7Oçn±kˆM8IW^IUæÒmÏÔ‘JáA…*ÅüîŽÑX>ÄQi¥ù©¡Ð2ÿ_º±L`¸XÒ ªAøKâ½D Ù‡ã·s¶Z²† –~ ÁèøÌ3Lª~àŒ¦Ò1ƒ@¤qŠ*‹­î˜ ºp¸ôój6¶Ê&”€ðЄ —š¾9›`ëóœ½ •ú鎢×÷qîîºMß—§M¨ª"Í-c³†ai¼?²-é$/pz&ýq‚ãÃ7_ò'—´‡õصûÂÃt(M+ý°ûðmÝJ…6=0½ áC!I©HfÈ7Ÿ0}v3’¶E©á–Ã$çvû¿ãé8FÉS*ñØú¡É–t1* Ewh±e§öÖ:3b— 9]ÀÇü…^¶Ÿ6 …Ц–VŸ8äz’2ã˜îi,~³2ƒ žÓßN=¹šzò§,,i:OxÖ,XùéEpwç-ÁHŒ½KéÀ¶X‡s˜Bâ¤óùÇì4•rò&²®3?í–ŠÐñgóìnéw㺌5ªp© d¡Y ï¾@o ¢±ô…V)¼ükßý¶í×gZ¥:Üžk•:YÝoYç‘B ÙCÕ›/#…U½g2Ø‚•ûqÈ.:οÆ[Ã\Nýf¬ Î‚ò×ËO±A »^¾`.㢯+÷*âžÂØò`2KÃhÕð¦˜ß5 ¸ÃyëâÌBÏÑ3j»´ž:>)CwvšmmwT÷vj Í?ªàÿst†MÂçžM›qºæ¥½è@`qø8SÏÜ}µ†üâºüiA„úîB1bºÝj_V#'TÀæû­Ûò¢jÍŸ­]?ݦ«¨ÉÅm¦ Ëóôz$ŠBçèfŠ$R¸KL£½¯”L½…øW*ÂDÚÔ(´ù2ó½ê¾¤ Â¥*zsÌ„zaYþÃØÞ £ºæEW±ð',!êÇ,ÆI £&ý¬ôrr%+ÞTÅÁüÏ ÞÒÒHHä#üeç”94¯þÄ@ú³x·:N–µ¯Ï $L¬#íý=ù ©5ºŽ·Ã}Ö5ÓˆûÇïòµ Së0`öÇ Î"¤4§Kc%{yé_·ínQa6–UÓ”ÕôF˜ÐFúúï÷N.°gW:™(]˜hÚ÷wý6ýõ+þšÆìó Ò•TU?ÿyTÝ—CœjØíshÿáýÕ¼ ÿý_ö'endstream endobj 533 0 obj 5446 endobj 536 0 obj <> stream xœÍYÛŽÇ}ßä#øèf»ï— ɉ li(@^Fäì.ã]’%-Ïé[ ‡œ¥vWJ°äf±»ºÎ©SUÍ÷3ÎÄŒÇ?åïÅÝÅû‹÷3‘Öê_‹»ÙËË‹ï^9 ,Xiõìòê"AÌŸ9ƒu3»¼»øÆÙß]þ ¶>ŒlƒdÞKØ_./¾yM„dÚšP–^·Wm×®müÈ(Æ-·å#ÁDÞÒ¹™eÁ)oâ– .›¸%Ákå’í¢®-ç’ /­›ÍG¶ÿ슱=4v,(+U9ûEr‡y¥BuçÝ®O_pRr_V›E_¶Ïk?6ÕPq[—Ë*Î䦞“®m™s\TÿõËdg‹%‚øÿÑS1ž+çñz6—!îmÒW¾ow‹nµíW›õïó·Æ(JÍ‚°v6y®Ó—.oÚ©¤`ø—>DÑ3e ù÷ªk›¾ýáÕÔAF3o|ýòÕ~½ˆ>EK˜³¦|°H[ìÒºf\S€ãJ`< Úu×loV‹d«­2¢n’7šYE<êÛO #ÜÂhU7iÖ)Ì2±©:ѵý¾[g' ÈC6Sa L€VÕdúöÂ1éLM–áö.øz¿3!WöìÖ0ÑBÕ}Mº:È`‘^s!¢©ÌÜ-tæÒ˜ç±—õöû]›câz]cúqÕßÔU£%…/š3)\]»ÏPIkªe»ëWë¦"n‘ÒUÖ,»¦ %$9ñ1‡(ð`(øïnÛ õ¼Þ4§|X­¯“¥d†»Ê¹>‡P ßÞ5wyO줓ºM¾‚@>Ö=7}Q-/Í)y¸2¼Ý–Hy LÚÕ¯ËüQª:¹Ûæ£!#¡¨]¬~›!™C› UП¿Ä<ä¼×uõï»ìn«É[[2«¥Ü´I¼¤Å……~~»r~‡(ÙvûÛ>'E—V™[Xãd<™€žÉà|åe³ü©éS%І9mˆ)SÙ˜µZÖ¶]·éRŒæÒZfR¨!Œ»„š)SÂxÓ¬¯F˜Šð€0BXjb§ !Ä–Ò¦9p’)ì ± ‰$¬›»mÉ_«DtÝ®«þi"\F‘P:ÏKc+yeO‘©½¿Ï1ñPÊêå‡|!ëiLs»/ êJÒ«MWJ¡6~â’ƒGç½<­˜1›€ÆH$-à†)ÉÝ‘€‹x¸zÔ5“ÒR}ë®÷w …+)bmŸI=Pa²¼5«\±°µüXô°ƒ°âÉnõ›Â­¬Ã{REíA‘wmϪ°Xî¾R”²à ºQä! }·JY“¾b84Z m yPnȃ*iX€rŒ@5GsbpSsÙ#ÆÄ<év5Œ¨syjŸÄ™²¾Í9ì¤%¥ÀéØ"…zq»ÚÎïšÝ¯É\!uõbSÂí4c$‚±Ô˜@W˶ʳ¶ÃK?ê™ö¢ž²íÚ«Í~7(E„ÔÛ7mÿ î¾ný<ìã<ŒËn_êÈqèZrGSF×¾‡Rúà\ IÉHf Žqˆ­?×FÖ*ª ÆS¨¨ÔzÙyÙìnæ›ß G’½G™¢TÄ.Нô‡ö·«r›¯ù%(*c§81FéHj{ŹÂÀf„gQDó{¸= „7ç& ÒÌ 2PˆS•<† ÔPáÑP{$Ô¨xÊ€mºeimLŒ[]¦D:ÿ#fŽ¢aVÍor–;„"ŸžQq¹Pu­*ú%ì9lkÃà熎³h%:qC½Zs[2 ³"\CÖc_Önx˜hV»J¤5©{÷¡  §RÛÍÑý¦PÃ,§]/Ë¥Q×99S „`ÞÒ ý׫r?æ(´ÎI9:' °µ†3åëu»n;èíòÛ’lZòQ?é™12TØvûw%/ÑÕ8Mpn®¨ ÇÉšÿ%¸+Ow é…`¢:|Ä ;¨4Ï•G±³“¸µ¤VÍmbFé‹U|·1틵¦{½ýKÑ÷êÚÊ Š~)*´‡]±gÐòÃÉ2kJ”¦)ì¾Î[ÚÒl< % mý´–”P–ªÆ£[Åï^K`c¦å7)ðP!Wу2ãm1cÿ„!ä—¶ˆRú¢[ü”®é`áÉÓådܲ˰»Œ@Ú ÷e–u«=M›÷Û%'é´vWŠâR|QŠŒ×ŠU-¾.Ŭ ßšÛÒyN²Kî.Û´“ âÅ,‹œ’yþ§Óµ^•=J8¸ JO™ï׫~2’£8EæKÆJe¾¾¹_¿µ£*Ô7Ÿ¸9¸»ïtu)äñ-S¥®«*ÎâÔÁ»b˜T¡Â÷‡iô$¸¡MvY‹ü\ùb4(#Ã>ã‘¢—Jj}àÉI mÑäÙ›mÕ A]cäþu•ޓ~ %õ“À&îí QZbÓ å¸•öÝ8mX$qÞ5Ï½ÔøM·(µ×/;Å•È'5¸Â†oWHþ‘hº†6m_;ïÞêÀBiÈpÛì&»¬øêe(À¼W7hZ&ÑU˜[¨ƒšžP$L”6ûyÕ¾¹]-&ãj¢ݦ¡ƒ(²ÀÕ˜|S6W3 nW¼+NÓ:×eYˆš¢ªtÍ}Óßo³‚àÆAÚÏ‹Ës9Ð\Qó{l샩¿‚õïIãq0Iî5s)M’û‰¯ôê E÷°vXôÜÏ"ä^à”i^ôH»Ò_jíN_ež—LeMêpÒ‚¼NžòôBÔ¸(=«+ô´±×,…< …\Oò—M †‰O†¤A¿^w›ýzú‘*¤†UÔZ.¾v-¯Ùò`-‡ÇÅ¿´™3ÐŽ0þMâóå|µîëî43?©Ž ¢95Λ/ªãj↥Ã2‚Þý§jù»‘½‰þ@IǦñ×ίPÒß55›ÜÐUt4jGy£Ÿ,¾°.ÖÃGsöÁáñmBˆºÅvõ©½} ÖÌä!äZÏ…=Ó­xMCÏiÿ?Ý ü.'Qzªùï yÑ ¤ZÎ ¯cˆé—Îc)×”‡‡RîN®¾ÿ„ fwI-Îg$ý<›ýùröËEüów;³ßendstream endobj 537 0 obj 2311 endobj 540 0 obj <> stream xœÅXÛnÛF}ú|t€p»÷K H"-Ð6­­‡<ø…¡h™­DÙ$ÙßÙ«H‰R­¶ia FV³³sfÎÌù!ÈdØþ„ßåzö0{Ȉ;‹¿ÊuöÝ|öõ•R™DF1-²ùíÌ_ ™¡ˆ’) >¸ÉæëÙEùjþ;Øk6´ÏæY†Fs¦²ùbvqÓc94VÈ0I<`mÞZ4cF†£O]ï.†0Å:œe¸÷g?Ña Ûp obß©ì‘DJaÂÃÑOýÂÙ „¥ gÄòþá!r“d$•ÜFÎ âš‘`úÑ]¦ˆKo_U·U[5¥{L@øGPïÒСKb)H¥¼ U$#!¨K/Ç @³œ‹I8cŠFÂ^à )° a]Wý媾ÿ¹èþ˜‘ëœ*$¥¤îÒÜZÂÿ^ÌÎó}À§hò]uoB€p¤Á§dÚ¡`+TŸ ¤  ±¶Ÿ‹•s ‘Æ) Ãàœ+ ¥'4–îý¥»Âoæßž½k‹mñiåÒÌ)b›ÖMÝOf‚b†”>§@ ­¸³¾~nBÜ\©H´¾x:‚âçF¡ï—@Bñ ‰]–‡!Þ×OëÂ%œQ¤ˆ ùf2n â|öÛvù¸®\è\"FR{_³œ-f#…”ƒXöI)Áb×Oמp=…[•õWUg©†bGôwÕT¼D!B¹Õø ¢;£iØL°,‡œLÙ^â&@(fÊÙ ÆAê#T,ºÝ´“€¡5”üetuWâ˜Ä´n}Ë¡b@‘ÑûH(FŒ¥™7*8ðUŒ«û®êʶ¾ïëMófÒ1G†H9Îè|ºˆ@°eG‡ÌسRˆ)xûØ”6GN ÔM¯«z_Œ 7f¯ £#îžË×á= 8¦iìÖMØ+}ÊGçJhìI9,¦ 3‚´„œžâ-¤ËÔ®ý&"¹bH;Ö_HÎlB=r»$¥ºò3ƒˆ ñâ·ö †ìàýJÈ §“)„Ù‡Ó2«»àƒsJvÅ “Š2†xÀxb»E|Æ¿ö>Ã'áA‚ª•§¬~’HV´UØóB&~L®¶±”8¢qHàÄ(ž»0M8gñ•…‡lç:¥ÑpÛ„3£qLëÍE[-‹v±ªºÎWJA…W{s›–{¨G£ÉuÓÖ˺¹y…¦õHfQæ0A (­~GõÃçò ‚ü/ ‡çœ)àN“þ¥â㯛ºéÃÊ5”“¶ÿ•‚€ž—GŠ @ëšÒ›dû" !`ºA‹ýÁ=!"`!I’XúWûWcÃÇ,ÿb*44áaé1¬ör7CÌÿ6ŒqØO~Ê -Ò”-ÿ-ÄÀÈKþ|hWnüÊ€>ÞU|Q7Eï_‡!B$N¥ñ!øþJ<i'ØÝ^ñI9¢7ŒÍâ˜gɘùãrƒËô½`j&}k,–q ³V‰ÈÁÁå¡V ЉAbBa”Æò É€F”%® BaÉ‹CCx2<[‚pÂ̹¤W„%)ö)¬;¬ '°]Ç+h‡UáõX+Àò€ù Gø5ÂX$jõU{ßV½GfwœÑI[­Š¾þì|ÃÒP$Þ©|øöjP›Z jì€ÊT¦¦9oê¨xLÓöúƽÏ@z2}Tm°…Éï/ª®·}ƒSÈôÙäÖ·Gö¯ uö”ðÔaS™> stream xœµZk‹Éý>Ù¡°:õ~lH ë ›@vCÖ°!_ÚR{FY$·Zòãsª«êV¿43ƒZÕU÷yî¹·úãŠU|Å¿ôwópóñæãŠ÷ÏòŸÍÃêûÛ›ßýâÅÊWÞ£V·nâ |åÙÊj<׫ۇ›o­ûíí¿±ÖùÑZ/*çÖßno¾}–pQ)£}zôKó¡i›Ã¦ ?iY1ÃLú‰W§WÛTÖ2žþ­Ûöë4l‘­Ä½ç¯ðŸŠ’ -VF6ÒõzJ¥*#Íj-|Ø\Gc¿iº×ûÝé—fÓÕ‡»}s/;¡T>ë®·Wg";éØîîv‡ð\ŠÊ ÅÓóv´æ•q^Ò;Û¦ÝîÂ/JTR°,ùï—¢b¿•vkÅF«hóöîòÐô'+SI.UÚ£;®¯à‡·XPW T˜Æ¨…ï”É*½9õjâuÒ²Ù쾉šW9æé¬ûf1ŽmÅ™íÇ×Kgb°:P-*Î5«¤… °¹NM,¾¤†àþVc,öç>*í´ÈN­1ØðCzøe¾ns Ï|e¬+q²Ýê.ž®dÅ £Ÿ>dAµrOI´A|®êó¯ýªÒš”FY¶¢ðºRó‘Çñ¹dIFñú–¬£1„·.¿½ß»”ʆy÷„Òc™ÕÊSPv÷u¿ ¢ZKO0Ñ|sh’VÐãõ´äSë]±’1°µÈV’³L]²'}ž´Qá©lˆN8B¤«’Å&ûºÛÑ$¼²ÞçÀ;òqk§q3ڽصW]CAÇó.ï"¦¢Æøl©ã%o¬È±›úBßp’àTŸÏKÆ}E¡ÿÏÃ:’ ­`a–F@:Û®Ù.ÙFóŽìðjéxŒ+ Ÿwo®îÃi¡äÓ{1mmΧwo¯o¦C}ä#ÁÆ/Û¥PÉ“‚øhråä+OC£d!Õݯׄ”–ŠÛì»ÛðÈ"Ô­úrJŒÃ ææ»å"¢”q¾êËŒ•ñümÝÕÝ—S“ ›ð"Ó_ÿ=„xŸ 8Tˆ,Æ"R*&¡x)A1.ÿ™/8k¯ÄkN}~㑃¦`aU@/Uä?4çM»;…lýnÉ­BUžðŽYù¥Ûå *zÂeY&'³ŠÊT•µÿp9l‚ P¸§jÓPá »î±g* 媤¥×G5H<ʰ‹2ÂÇ•T[Úâ|ŠÖôÙ=V.ÚZ¨Or XËɼUwÌtÒ 1c--2ÕÊ =)`Èz6+fP&‰Ðåbf5ŸƒnJG/8UIâ„ç¦;§gΊ9 Њd .HKŰ„€¥´Ù-)€Îk*¿—îtéÒb&‰Gì¢ ä†.?¥Ú‹ÀÏFó*ÏŠ¼Ç ñP'†,‘ùT¤7ÇT j 2c§tx‡ =aÔã®»O»¡ã1|h„‚jÛ´ð¡¢xågv·‘„Â0H*±:² Ð_bÞUŒi2L×´§¶É8_”ØŒÕüS.`ÐR´4=ˆ‡ÚRÚyiYÄ Rª<ÏQ‰Ò—xJVGSáŒ[½ùSAZF¨U -ñ®sèlB´7’Q“ºmëÜ'œŒeÒ3¯³2õû=E¦dc+# 4 êEˆ‚r1¡Ä5dÊÄJ¹°6/»këÓýnQσBQ$µÍÇ Ô‹™ƒ3f#õÝc©ª(4ñó6€˜Þ¨`ÜeÕm)eR> ¥~a s³—š«Œ—d LÎÜú979»Éó)´ñÍÙ:°<:ìe´hDȃçûãe=(BŒæwÞ÷{£«VŽ¥¶B°,ááxHAR,´*69ãLp鞘)IJfŠŒŸ55EatFãt˜‰/0Ô6çË>"¶ D‡xêãn¿Oଈ‹\×HqF)r9ôí̶J)¶˜¥üùØ5IW[L@=$˜T: „cyãAÑž-Áƒ@H™+ú'K}nîÀ9 t^¦YópÊÍ›¤Ô—ÈDPi¨GKdŽ úPçAuê>:Íñ „Ž1ì7ÁÿŸ2M™ÚìûÁ¾ÀÉvç€CçD /,¾/‘B—‚1 f×”ëK°U|¦L1k)ºaY0öxÞ%#6ÅÁQçóé¡ç¢ŽtB•ŽZÁŸ?D FÙUŒú•ÇTi´¥ñ]â­’•.ލÏ9^ü¬êšÐª-1ĵThEýÄEy|3iÀô%òÛFRkšë½n ç2Dm·¥¿Öá¹B–öï‰ð•ýQ-™Òã86}‰ÓÍGºÃYQ&ò?%óÌf XM-Z{k$ ÇÛ†¿Rmg¿Ž)¾•¦=)R4›I+¤vj˜‹Ú¨ênJç64 ž¢{•¤ñ¥¿œŒ4œ¥ÀŽGÞ—œË# ÔÀ)¢þ¹X¯"Ƙ¦@-£ ÇŸÃ)PhW ñžQu!4 ¢ ’ ùõlÒg\·H]úv8["&ó~U²‡åºðÖ?8ØPÑ|¨SvzOh¾àÔS{œs³O»m“ ËK?Ôç.r?á`ÇSÚÖ:šv7-qA©ƒXö¡fi:°jç¦ý”«'bÓ´Uâ`¼€oÉáˬvJ»ÃæØ†Ð‰N Sy˯; %Ÿ9/e„·žéz¼¼JÌÀû¨fB°…yFçLi%aÕUHsÄ<îšCðM“Ô1‚œ/¡òç3¾¯·?Õ] …åývùpQEMcӶǶ·‚€ÆžHîûØuÂÕ¬LJw]²£‘„ÏCsçg‡cæ1ÊnZ>^vmLQø‘­'3ÆDpámOexKSC]Íù˜Ó |Žb Ê9Ç‹ó—{…S ÷ÅTY -ijš}ƒ$Ë*B %ˆLrâ†:P _ÜBCÑ;W%ïÃ%Eðˆ`N]¦ÌEëp7¦b¥ xhêCrƒæL‰HÈÕ¸™™ÍF\AŒ"9‚¦$n.0–f(íû]×Ömd‘bhÄ>‡•„‘X¹!zj` Ì* CA! lÑ„gn>‰Ð‚ϺėjŒöfÛl@x2Ù[Kt÷³… ÃË]ØåH”åZï]Â4g/¸5 Å®ð©'ÇáhbËN½ÝîB)¨÷‘m#µ¤vaƒª§í‹×*D=ÚžòŽª¤£B~Ì“e¡+]øo1crî10òìœ:µl2°A±è1ðX(ÔØúÄòC&˜Pdp/ŒªûCB7ÎøØ'IÊÆs¼Tvõ,HÀ•óׂÄÀ‚È¢Ù·³à€|tñöš˱Ñ3iK±qý&Ñil¬%Ð,Ü&ŒúLŒ ™ò„®ÏÄ¥.Yyˆ€rð·b-\Í«Âq:¯ï’åÂóCš)„­‰m.Ѿä,/3“Óœ–ÑÞ¥~,޾'ékK-=ƒéîw‡æUb”Šû.!íÊPgBZPG“3#Ncýlú´Ù_"ID“)[€@m¨ffÁ¡5Œ Ö}Ôœîzc)pkãÈ€á £3Ô:¥¬‚BœFÛà­¹½AÅ&Oí6)×B¯J‘¿`ÀãyŠÃËQ ×ü ¯7Ÿ»x~èÚ-Ýuç”5‚+P‰ñ p°,òGs£Ç¢¦d"@èÓ7ŠÇýñÒ.fÁ:-^81†ÇÆ íÙ½óò•Lës^è}Іä᎟™¹lýN¦Óñ Íø#™õçÏv‡n¾uY((öä²ãåyäü¶Ž9´y||[÷æKg)[бþ|Å8á ïÆÖ™8Ix7 ¸ô­°¢¹k—^ão‚Þ×›_G¿YNR]ù*(hez­ÒÇZ_÷QALg'h²Åif¨ZôQÖs_‡X7%·£Zòáá›,rïàðЄZyÚ}nöW>ò*MšpŒM>UÄIhüâïžžQdâ]T¾ÂàŸ›kŽÅ^þL+ˆ[˜ÖW‹ûûJËøSãO¾ê2ܧð½vŽraÅUhœ'â^P½Ù¤‰Ò(º– Îa—?«”ác;Ryx‘¶b­X¸±ef7hó5Ìqh¨ðÙ!ŸSs¨—&À‹r“úpJeHyÚãxHÅ) €¨]ëu¨|ÒL,r™ÅXÿÊ+|`—m ýùvõ›ðï¿ædðendstream endobj 545 0 obj 3242 endobj 548 0 obj <> stream xœ½ZÛnÜÈ}Wö#æqÑ0}¿l€Þ{€¼Ä‚<ø…ž¡44f†2ÉYKûõ©fwUó&É2’ÀÀÛn6««N:UœOVð Òß»ÓÕ§«O>¬á_»Ó懛«¿¼µvc o¥Ó››Û«øßxQÎ7ÖÀÊonNWßî¾»ùûïßû˜Úla£wJÚÍÍþêÛ÷mÚlÆ›má¥^ö¼ [tá¤ô&-}èúáA. &˜K«å®O‹Žk¿•¸Q2ƒ÷ŸÓ*¼“i|O–La-ã*-ý£ßûtÁŒOkÜ{~ ÿQÉr¿ñ…7¨`¹ò…r’§­ÿ…2Ÿ~[ÝVmuÞ /Ó`¾ax)^ðx¤ã#¹·…&#­{„åÎ ¯µÜ«˜†ˆÍVøp'=lgÅð€²……ɬwUÿSÙªní Û´w+laŒÃ#7a'ü?\}óxŸng\uß'ó`ÉÁ™Fºá,…Ø £crØû{yp…cäƒlÚp6…âøo¿þ8ìWp)/Üþm¹VŸûåÁy£¤µÕǺV…,”÷ϼær®ûUÿ psÁ^€Î°ûÝã9½KY‹àìˇ'ü~RÞ óÌÙ•°i^çÍímW æHQx¡{ÚëÎkÌ€¿®ZÎáP©3±üM{w9UƒõÊ’ú£­àdf0^ͤŸ½xŽgí áŒN‡¼‹(‚#ȱծþ&> Ž´ÎaúC•’xDŒ.¸Å˜Ià…öÝ6mŠ0Z"…{iŸ¼Ä"(œ«mBƒóÇã±J'[îñ&ƒ‡çÆá¾æ’RÄ Üõ9’Œg^# ʈ fZ¼V·Í8|²o’§¸P¸–b†hÁÄ«ïÝ Î÷. êƒ÷÷«ðL•ÉÍ6b”• Ò²…È„S¬gu¡À`^ó<ºìOéN«°!.x6@ÂL™ÙÍK¸õþPvâ‡`šÛt¨Ü=ótÙ÷U;MêP´øÌñ¼žŸ<`7(UÞÛ/Å,JrêÓxƒ(F¾p!ݬàSÀÁ+ÂV ÎVr®· RºÙý…\q Ød¿ x’Áí|=àà¶…w‰¨¤ˆe觪۵õ}_7çï×àbnLD©d‘Šoâ¥æo&ÔÊâÍçevz® ¥È Ho/ç]0aˆ)+˜r£ f-‹tüJ6áBJ Í R†b¾O§(Ëäø$Ox­·Žö÷}[¸ôÑx̦Â88Zµµ*(%¤#`,¬Âæ wt uZX"HÀúðJ˜wøÆúŒ™É­\Kå¿X–h¾Xpo“K)`¡­ípÆÑ¼SXrãZáÒ%Þ7¨N >”²IÝ2a'B…è JI§É·UIRE[ZnÎ mIWÇ*Õp°R+JD €\ÿw}=õ-!í:¢À©†¤ÑGB•(Àï½6TbɶÊý¿²X@8–ÇKµšÎà+FÉUµm|+d¹¤4Úª»û®H¯€ír°SI6Ò‘u_G5+‚ש¾¦¤(ƒdËBõ(ûú|—ÒÔ2jlžŒS—(Xý¸aל÷×IúFfÞ6—¶?\'E¾rK‹|fã&ÅÁñ€¸IŠ6ç÷ߥÐI] UJÐz¸ŽšÇ}0Ån䜋š^–êQ­¨~0“À[xlttBù1™UÝ52ávqgÉܲ,¬m`µE á9åè—šÚÄ\¨YôÊ~ŸJ2xÊM,%tŠèÏå„#_"8© ÜÏf3Ä1TªÓ>•«x[i Ý6¾D‡113$Wªó]?,K<çr:¤<ŒáÞûú¡:¦+Kh\(8oŽGäD)çèZ×aŠâòB¶pèc‰Ÿác`xE/zš¥–þssÞþQµÍ7^ñ„k¢1—#þAÿF ÿ:ÛB*4·Ó(g:Óà•Î|P jæýP‚˜º_“QÉÏzC’d|Áû"Ô{ý%Þ‡nP½è}oéÅ P"èQwe-0¹’u¡MÚ©¬WÓAƒ¯ÉÕîº'¦'£íoËó]•`Y‚vÕ2¡HPµeÝUû"¦¡5ì8‰Ðzßrû˜Š´ãÞ6éôÐtyªîk³Í©¦KCå™7@<bÅÄP|ªO—zàYƆRÇÄ´Pø›õ À傼O½‚7/èƒ'.;JpKÓ•§*áYӹ뗂J¸+û kÔ†$Š>×Ñ= CAy(Ê#+ê¾«Ž· =Ìå‹â­@ aˆïÛ&EÅ8BÔþzÀÜÍÂäÀ‰á׋Ù8~ÀŽ^ŒnÁIJ{å± BYŠñÀ'÷ʇIÕê›3 ƒruË£à ¹E/³95ƒoÕ¢Áž>›äëh ↡§¦¼<4é…£^õsZ’ÀèŸJ¯iš<¢Œ&›†"”.¥´Ä·Ç‚;™Î$†Ócä\3ÀE•ómJxÐROE-Õ€Ððs­8J¶ñ\A…:K;4—ã -G¹ë/åñø˜\ü\Cq¯º¿é¥ÁTfr™Z  A®ãqDêˆàà’4Õ][Þê]—ô(X€·À/UÂ2ü‹ÈÝSh1ðC¬¨ é"Là_°kMžâötçÞîÒ\ºlÆÂý¡m.w‡ä8Ÿ›6ê-¨ø½(3Aiל/9ÑÈh‚÷É]`¾ 9)L#4õÑI}™‘,ýØÔgœ ‡“ay.Ät0œjkES ¢|™{+‘%€ô¸ZR¹Òf©¾”$Á¿ gÍsu¼_fÙÊpªŠž¢iÌýLà$ÂC÷ ä<¦¼¥,*Th>7“Î%ø7âki= /ºÄ¿LAߨW§@a2“¯‰Ÿd–Ó I PAGŸ ¿ÄÎ"d‹!çh’SÕMòy謑ev¥¹9;Gµ”ÉÅ|ò®ÑóÌÓp±Ý×ç²cG !5>¦ª±YC›û*IN`C|a÷ØõÕ©@ è"ßWÈfÐE+C†_G@¥þ¶Œq@“ŠO!B­J˜ñÑPcÔ«€§œïùБÐ÷Æ—}*ÇÞg5ÔD¦&8fY?á?ÇæS&¨¢r‚nƒ/†ÎŒ«¹ÚžœÐx%,íÅtS$3êÓ=qàß’ãú2h\ú 䈇s‹;bˆæœâJ––™×É?[©A1ùY …@–毸§²ß¡õ޲ý€GªlO nºQ@G‚/×4ñΣH£(N‡¦­ÿˆ¥rÅ1Cz®ÄfSæ‘NžŒZMs’A¦M‡ëUÛ×»x@8UJ7 Lj®à OßÞ~‰u“ (ëc*vâÞÌ!4pöó7u„ÎdÈ@ݽN¸wy*¹(Ð]`¯1æ!{d1|Ë•îrw…:_-šz‰Ä&ý¼0‡“žœäš¤8žêí ùtŽì$ûÂŒ\Ðg”~ —éç5iÒS™èrR|$ªc£áСY±˜oqm–_ÐFW…ÐÉ놆¹.Kî[$^oÑ8h«)å]ß“Œ D-QŸhÇ—ÌÀ(>Ä0 (]Ñ è. ÷ójÅ0‹÷ÿÉ Ì’Ù·eÚËEþüyÆjc©Ú”ˆQ-HˆQïÄ=•™’T'<.hdJ-‰eâ9¨½J~„¹ $BÙ*ÌöRÍG©è•<ùç¸3̇ó7î}u×V©v+#¤ø“7áæš?'ß¿B9I3Å”Âd­ÈÍâh2še w¶~ç©8ß¶QñÅ,Ù¼€M¦£ñÚél ¬H”9b•椩4£Ä¦iz9ÅèSÑ0ÃM(ñnò!*d¹.‡Ö> stream xœÍX[ÛD~ú#üX¤z˜sæ^—H›H‰—x— l’Mœ–•øñœÏLìØN7¨…*Ò®4>žsý¾ó%gPpÿ‰ÿ÷“‡ÉCá,ý[ÜßÌ&Ÿß8,sµ,f·“æ(/Œ¢sUÌî'Ï-ÿlö'ÙZ×±uȬE²Ÿ-'Ïßx@&µrñ覺­öÕfQùGJ0®¹Ž€As¥1…fΫü•‚BVþJÎJa‚í":mËXÔ¦(;¶¿í£±næ„F}ÂaV—ÂùýP‡‚Dnãé|QÇCC×7g?Γ¡à:.ßÅSòÉUòÒÖÌÉð§zìÕ"U œƒôGÕ¸J2.)Mtþn^¹‹%éöN*†"µcº Ž€ LGÕbõ¬:øc´Ìr'ãyýG5Ø^ÃeŠü‡o‡\’ •°Á 3Z%H&­‚`º?®«±²|Z¸ë&á; djë³õºLžÕÑA2ôG’lµMÝÞccµQ©4ïš:îT*Ä|Ì8C0)¨:š9‘C¯·1tgdrz¨êØ}a2n·û4BÈKÙB5œFçÚåXÕÝCÉ©k»G°°&¥úk“ÚA¯H`“Ù"–Äz€'»ùá0 K>_½×¡26›Ò–‚&ÞÏs鋨iüÃ×ËåÍØèXÝ仜idÈ3F~Ym–«ÍÝØ…Z3Éáòl;Â7ñU‰œQŸuÃ/û»ã}j"5pêª?² %˜æÌ¦¥ÍV»È¤soª—{bÉ¿6ø—œi@þ5Ηóz^?îBB’²u¨ó |¿Z¯S² ˜Üé/›É’\X[SmZÕVT HÏþî›÷jyV)*;SÚW ™rذÀwÕa±_íêÕvór¨H­i<-Ä—fÃtE2sü›iU·ÓíõÖ2™ n›…"ðÕ×€8A6Œ1q˜”FŸÁ³ÃgdƒŽ§Ž®6‘ çï\q5Â…ËcsA£ÂƒJу°c8eGdV Í”o©·¥ýJ ¶4­ ©2O¦ÒNÖã´[saGºžó%Ò¬ c¯šýÃððk9¶Fÿí|yÈòL¯§h)¶p‘áL`§l´š€çS~Õ?kÐnéÁaÈþ¸YÕÃ@ ˆs L…J“AYÏÿÉœXZ:RWt?ÑвL]k$C7ÆC2¥U ´§âñÃ-$6‘²ö8Ó5=óRÛm—GÔ µMgȼoó ] ©%àzpœ§¤ôõ¢|‚Má&×Bjy>úgiy¡€æ‰ii×§.\›bßTX{Â~ôMsAn3/H#0•æ‰C5å­·¬\¹¾Ä‘˜7úIâXu)Á« -¿ºÇŠó>‰œ¼ËNe¢×9p*Ê‘£ŒLV•IÒø%¥I#DCƒÓízµÙ~–§Ê¼ò£©ôƸ–ŸÙj] ^Fè%µŒ—o#ŒÛvÔÓzµÛ\¨HÈ t£p¬Î«sTÁI{'¯wó‡cuÉ•óB,Î0NjZ¹ªaš¸`þ'!F”lž¤Å†·É€ ÆiL4}w*Íå€ëÌAiM±eIxvôUôÒ[í&x7 åe7C½;ßwþ;µ‹‹CÇ™¿Rø]¯ûq¢<Ìò³†&†0.ãìƒIÁË\ÕÆ‘‹Oó‹ý«YñóÄþër„´endstream endobj 553 0 obj 1497 endobj 556 0 obj <> stream xœ½–Ko7ÇïB>Ä bÉácH(¤‰{襱9ô¢¬VŽ[²W«ÆùörIj×Ú]?b,x0þçõo ÎDÁý'~—׳ÛÙm!‚-}•×Å»Åì×Oˆ…a¥ÕÅb=kˆÂ! 4C¹bq={]¾Y|#+»þóàÇU1'Gg•Äb±š½þ§ŽÎ¦ëŒÌI’.ð>o½‹fVJg¢é˾ …d¸ÖeÙD#RøÖöç29Jn’ãê{´Ò\§{*o2 ‘ M5«à§7.Ú„sâú£¢rW8æ å•+Ç”•"º~‡)£ÓéOÕºª«m.Ó$ßð””`¢ é R8d:‹´ÑPB0§5„ò*®©PÌÁùœtp&¨Ú2\¥˜Ò6àóEÕ|ôfi LâvuuYïÛÕPjsÇ©®€t2c „# ïJÿSÖ©h?nbÚ$.Övu“ÉRP#mHNR 4 Yˆà}ÿ]^…–Yž‹g}!j<ÄùûpHQÊnÿ~jÛl›Ü„ßa»iË ,õ%i6ô­Mð¾ø±Qbš½fy7’5M³r6¥­2 r¦…H‚.ËS‘ëž¿ E¾ý·aõÔOcOýÛúòp]… ”aRäV6mÛæ -ŸL]MÓµ¾7.ý±µ*uç¢ “µWåæUµ÷fðvùίa72 ‡åŒc.ÌÍæ®ºb#½BÊ’¶ÂW\ êrH¯•ðl½÷ïîëo§ódµ‘¶/ïÈH è˜!¢ôJÿGµ/ëÍM³ÙmφƒbNÓæÓ^ ëΔʬ=‚Ób= †þe„P:uz}Ø–^WB3"ÅÞWM(Ÿ ýQhNÛ­38lwhƒ"ø[—÷:vÌp=9JûÐZç#œëövzTéò><¡÷- mÁS’˜>ŸÕ£ùÜ)í4%ÚÿŸÎQ]eü¾í•ía6Ÿ¿ÿØIQ¡@Nù2¨%E œæêç­NÒ YÒO6An ÐoEO ©d#x&†[?&/€çÞ´ô'–f•Ia‚Z1µ¬«z™HÄø¾Ù^†ãôÓù=•4 ŽêiÑ$ZË Zû0?ŠžœÀ¬ ý¬I€œ†õœG¸;ÑBÅi@ñÑl=òïÁv¡³ÓëY®à‘´=Öòé´5ú}¸O[pœ:à–#B·z·çõòæë¦Ü¸k‡‰ÞÓp|ïu;MK¿ÏáU,^ž»zš»á­Ì³V¿eÜXæ³C@ý²Û]Å1PîY¯c 2p#^êuLï_;ži›(i pÕuV$N¸´4#vÖßÿ4XÏüç?û’Ãendstream endobj 557 0 obj 1024 endobj 560 0 obj <> stream xœ½YioÉý®ÍàÇ `Nú>`‹÷ˆ- °_ÆÔȇâÐäpµú÷y=Ó]s°I‹Žw!@G³»ªºª^ÕëÒ§+ø‚…¯øsuõéêÓ‚wkéÇê~ñâúê/o¼XøÂaÔâúöª?Àž-¬Æº^\ß_}ëÄŸ¯?b¯ó“½^Π쿾¹úö]ØÂE¡ŒöqéMu[íªÍª iY0ÃLüˆ¼iíÂÞJ§ƒH “uYpï”´ÝÞUT.Ç;—¢àN»XNöþ²‹›Íx³-¼4BFÝÏ;s '¥Oæ¼ß·ÝA#sqµ\µqÑB|¿ö2m”̤ś‡¸ L'=ݵMa-ãiãëö¦Û§á‹ä%î=†o*çã¥Ôª` ×>ÈÖÝ‘Ñ%ÓØYUX\9Š}»í4ñBŠ¢jUÿ©Ú‡eá ǼŠëí]•¯-¸PÉô¿¿ÌéÄauRPd¯À•‡~_ ¡³ä·Þ:Æè„fØõæÍµhS8ÎôSn&y0(m-»¬°&Ýõ} >䩦_‚.›Î5ëd-¥!/•]:„QŽ×››zU¶½r%‘säÖ‡» žíC±Âh–>xì–.ãRª5‡˜?’ó¤ð¡ÏϼNA(7ñB‚Ût÷6çt}Žó»]¹½«Wûï{·¤ŸôœÜ^å|Ž„ƒÃ6VE4à&§N°B‹däMÔ#qG)ΫáøÝÛä™ê×°éb™¤µM¿f”Éëí>V©LºGÛ$`éOG»³Â^0Nîª>£ò¼ßìÚª»« ,e‚ºI«ŽRrU®×õæCÎ5RÆ‘áïzíRk›´¿l:íp!,Jùðø|W•9Á§ð§|Ȇ£‹·¾”n¦›jO^÷Ïër“ –´…f.yò¡nïºÓ¸¡%“Ú»zŸï…t6éøòj"€?o "ƒ@Þ§å«j¿ÚÕÛ¶n6Í g¸Á¡Pyë‹Ðu¾ìõ¹œ.ùîmÕÎàã<ê ”ÓU ¡RŠ’ìö°Yû:`x´™äŠ}³ÙùJ’«X!óië‡hÈ2ÖOôëF@N– 2CÈûeWv™ÉQô5ÙSob5žÒ8«t¿íñ‡èS»z›O=4ÚyZ6.·0ÂQ‚<…Fï‘›\(¡{yXCÛ7ÑJS áz]oª®Ç›hŸÊRÛîê÷‡¶Êf'¬u…ÆÚÀ6Òöˆ¹[ñ·rT·±òXA–Wû˜ta ¥Å˜€¸ÛP‹¼V]¦Ú(ñ×rBÁˆ ‘Ñdb'χF#ù1¡F1j{ËïÒš$aõ¦kh™JQóî7.±(´—ˆ †‚ƒî·í㺊ÓãƒÝâìàËr;9ç•;>»sŠÛxîŸM½9«pz¥Ã¦Î6¹¥P‰ñ‚ƒú8ÕÓƒÇMt±²$¶-;#tå] Jf> ÷’‘K{6z@õïú¦/‹ÊŒ{9úˆ® ³=Ú:5Á‹Èv)è“c?Måý->8‚óvIqz¾ûp¸ï»– ƒr¹íó,lî} µpƒU±ÓéÐBbþ¯³A±\>‰¡{j­Ä¬ä€á¢ãÁYË}¯Ý¢=ÓŽ )G¹› ê's\NMta•óG4§ yšzâm—2žŽÒ¯‰qÎê~´D8âÀ·Í.¦zœ=ç£ËÊrxXIêÜO.ÇKÉC9ÔÓjþŸþ‚xè‘[É]B3A!ØÄnb|ZÛ–ûlýE rÁÒ…QW~lÚ×å¾ÍÙiX˜‚ò,'Nƒ¹ïˆ{qh³²ÀØ 7ú3²¤ ¾YošC¢]³g „ rɳž{†®Eœ2ˌЃÁY?ïšÄ´Og?V ‰bΈ²TsÈÓ&”XÄF÷0ÐÃQ}é@â <õÔ$GÎB9•6}ävx ¼‚y"Nä±P[CILJÀÅ–ôð€k‡'Ò9àZGk—J bDMl÷<ÐÇ9pQ„f¸˜™<¦S£kqkÆ~;…[¼@/fÍh‹Â%ð:pEò’¡òñº” 7 í`Œù3ÀE™K ý‡º­vÙôÁŽŸ…-Ìv†Jxvk ÂèÒÏâ¥uèàg±†HZåG^ôoNä¶^õÕ:§Œ‚9"'ž'»„â¬oþÊ0ùYœyëøqf8ó³„Cª 3fŸi¦ZqýDºû…ÐK=2kÃ(©èŽ¢ØðR]P«/ï„Æ\<ÕMHꨚ¹“ÀäP(pÌÐë;Q05ƒ]GÍ›uÅØœ²€' *HûióÓ7¯Êý]N  ÅÙÿTAÉ«æð~]Rã 9äŽ<þròGįh/”´O¥ ÇãÏ鸳CÍqù0L¦û9Œ8E©~a×ñœ²wè:JaD+ŠÐ¨ëHßd¯s1F¤§g—Ïj¤ö×2=,úçßלՀóÛaà>yü‡Ùˆæ'ÿG8‚§’”É ÆÁ³Ä¬hRãÂHïø3zÆŽÈ ªW âÍ®Œìž "…‘Õ ‰÷±«Us¿«j Í&NQÄ”ŸMCácǹt\sÆÍ}bée™žŠË/ÏŒ£±²ÏÙÜXÇÆðÍÆ:ÝTò‡rÿßlª¥ýÝü&Œ­»¬é¡õGÌoȺN”ex^r1qÓ©ÑͰG7A8 ŒsûNÎCÀÎa©þzó—÷¾Á&Nå07 ÙŽ·OÇùÉ7<@íkL.Nüw íÁª§¶‡~ýÞÿÓáFnÚç¶ÓT?¾ˆ¢ÁÅ™¾M£~PC­¨ÏßC÷ { “„©Ç/)éœ9{®¤C®RBžþŒKH¸¦S³Úí•qÌ4eWÊšcŸhš´N|Âé~-ó$Kct¦ÏŠ/éÀúÒôúþzñ¯«ðõ?™ˆkãendstream endobj 561 0 obj 2191 endobj 564 0 obj <> stream xœµWIsÛ6¾kú#xLg"ïaOg:“¥MÍ¡±9ôÂH´­ÆZ"RYþ}@¤Hʱg4c¡‡·|oûð±à î?ñ{¹™}œ}, œ¥¯å¦x±˜ýöÖ˜B3g„UÅârÖ^€Â!C€ÂhÒ!]±ØÌž,]üOòVôåçAŽËbN‚ÎJaŠÅjöä¿CÖ}aÜÐ(È€—yîE³B8Þ×M¸‚qä6ž–Ë&Rßžý]&AÁu\}ާd“«d§òGšÃAÆ£šUSŒkÏÀ9xJdôÜŽ9ZzÏ¥cÒ ˆ¢ïÂedR«tûmuYªí2S便)(`ЪtØW Î0•´¢•AsJa€WrE ÀbŽÎǤ‚02 ´m0%™T6ðî¢j.𲩦b˜'Ù9¦µÆpeáEé /¡óuã3H^DëgÑA:²¤T ¢ä+e)‘–‹ û©¼ ,³<£] z0&%óõË /),LçŒÏÖÛf¬¸ùì;‚Æ×/ÿ:n—Íz·{õ:ÁãvÝL&)íšBÌ)Õ¸—¾øºj¥Éö›òËÌ kélÝqkÆ©—¤ÛñT›WË1B—»CuuØ·«¸¶.Õâûrùáä·(—=¸$2ÙÊþ¦ÜVoÊúÃØß§‘°–¶§H-µÅ4ªèëWœÙŒ§j•ÇÁèA™„Þµ4¬1)©«& ÔÑÆ á á£r+v½ô442…î#HK jaݲ  ìÓ˜<Ù-Ûæ¥MâœÓ)“gär·™‡±*4U?Ñ Ï=4¶Ô` G“4í¶ílÆ@ “‡":hzDŠ…ìm•S;Γ»¬1TÞj*­‚ÓüÏ[áÍ2dVà•’ gRÄ-±rçˆÕz¿¿¹µ‚G¦VyËßB­‚sA“¦Dtkð®äêÕ¡ü\¾oã;Ýì÷â7ô`öÑèM攃(M³#Åßñ›Î¿º“¥+'ÓÓ\„(6“òG¨ˆ@qËÆP41„N¡oÔZîäiÇü´•!SÚžÔº_èã8@Üuóãt~/IȸËSìkÊ_çÜã{ÏJ•×|û²#¢©’ʲ­4N¯Ò<Šš¶‰§tkûŒH³¦{œXJò'úicLçaþð á1§tø^k4Í3kü»3?»GspÀ«‘i•ûd°v¤@ÓA]§5•ÇL·G5H5Q"@ïeèžx±ö¸Öüœj¸W^è™m•t÷Í ÕŒ/¯x¡ôÐ „éH:gÊí¤'„qævO<ÇQ"y²ñ"Ösq™júX7íz7ÄÊ`°ß¯Ëq¯|w^Õ¶QVÜZÿå¦e)t[ªT«jß\žBïr¯Å®B†<»_N¡@䯙løE¹zS6aÂJÅL7 ®§Ðq´Šeæ·ÕáÐZ%EÿPÕÇ›¦IüsQü;óŸocyzÏendstream endobj 565 0 obj 1339 endobj 568 0 obj <> stream xœÍWÛn7}òû˜CrxMѱS¤š‡ÆzH¼¬¥u¬B7kWQ äã;är¸Zi-Ø.z ‡gΜŽî ÎDÁÃOú;]ŽîFw…ˆ6ú3]“Ñë^žy#*&7£ö€(ÒÀ¸á&}$˜hCZ[æ-8BBÖ!$Þ)°Ñwš.‡CϱdÂIc‹qÏ÷ó69›CgË< éî·sžà\×M<(¤ä.YËi“Œ÷¶ŸKrnÈ8Û'+ÞÉ5ÝÓ6ÌZ.Èñ×fý4rA, ïÅ+ü•8–VB óZÆ<Á:¤\céCpÏ`òœIQLiG?]UÍÕî:~ Š>ØÏW³u0ƒÂl]¾ÿ[ƒ”N5Tî±0žY¥‰eÆ}'ÁÿWT:~¿IR°R“:ªúMJM!!.j0ÓÖÃqˆ¾_ËE à˜ãY0)±˜‚žU1žóXE쾿Œç’#éâñdƒëýe/RÌ@#YÝ¡.Ðn5oi‘¡O¬ÃBõQ<Áûê~•rPÖ¾¦üó0{å]¤Ásg‡3Ž +†MD û2=ŹLž˜òTæï‡ ª –]÷‘¿Ý~Ù-«ˆ^"—µiK8–‚aã°O?@rxÙÊ]ÁÉ˱Ì=l1:}¶Ÿ±œ²¤¹›ÝjàÇ·+e!¨«&2!+eÍIW̦çtµæ^Ÿíêd“Ê¢ù* õ:Å£î¨7mqÉÍÇÔlˆxÜÂÀh‘%÷è9{²»xܼ>82µl»»ˆáÝe2_ /äúŸ-Y £,îU¹çwŽÎön[îËëµ4`Ë>gÙ¸X«ÿ‘eƒ¸ïOœnÇè¨&y>fÇÀ“òï­ê̆3ÈqIRýÿløMxÞ0z¤ ¤`qÏM¡ùÅb‘Êù…¢‹ƒ§È»ã}¤љ܀i!ÔGÞoöíÞàq8ÑiEMl cÓv¢ð"ë¡Y§NF(mYŠS¼›v@£áÎe÷/±£bB("6ü¡ŸôÎÑŠyæËéô‡à‘RpÔA¦¼÷PùŽ`z£4®u§dº¼vRQ—¤C­ØÓg` >]È'×GiþäúT±Êßk§=“(Wƒ (ðp72]¶; :ó»«[Yã—}ö¶> stream xœÍXÛnE}_ñóF²¾wW"ÂM Ä+႘ìŽíAëõzf|C‚WÄ7Á¯Q}ÝÉÆ±,„,%J»¦úTÕ©ªÓ9/(au?ñïùéä|r^0–þšŸÏf“G¯Œ)4#¬*fG“ð+€ÎXa4úPÌN'æŸÌ~A{+¶í§ÞŽÊbІ`¥0Ål1yðcõ¶±! 4x³yêL±B€ŽGoÚÎÈ¡œÚxZλxhÐ}8ûºL†‚êd¸¸Š§x'UéžÊib e2½èÞNª!ž1öÿ9@@s-r DZÁ¢é¡ÿ˜©UúúUuT5Õjî/S_Ó#,¸¾í’!*ƒ´*Øpà Æ(Å}z%UX^L9¸˜”7æ„Q¹¿J©lJÀáAÕÍ^6õq½ cšÌ§Ü­5÷_Íœ)þ#L ºYÇ G 1íãˆ,:ÕÂú@ÂEp¬¥¥ÂÛ^–KïÀKs"¶ÑyW¿`<ÿêsÿ‰ÄàxºsúÙðìð»³zå!8.ÙÛ‹UÝ&‚Ú—WǤš³>¸YEÔҘĴ®¼~G܈^‚õµf´«ÏdJëñ|ñ,Ûb8TJÇ“qÜi'û°Ÿ6ǧ•w!5,W± ›rF°ÇRL°…e—•HÍdŠý Ð?Ïp«yýQÕºcîŠ ù®“j 03„ñì/”xÐ †p“iFÆãFþ3©‹)f°Ô„¡€Ê;‡Ñ‡}íŽ,QVñD¶r&!´J]3´›Ÿ¹3 ÚØMÁõªìÂíR¦iþÕQª¤Ý‡¨«—ù”i1¥ó÷mW¯×Á Fö‰7žnÁ·cžWí¼©×]}¶z<–t. 0k$hhˆÙ;xÄlFôpnõ=ó6•èèb5w|D–p!“›¶êÚØÀ†å±“ˆ­aÍvm¥FáúÂÛ=‰sRJH„3¾ôn}zîÛu(;.,€mÊ-Æ’ÜÖJËm…|¦&‘0ÏË&NS®O¦~ œE®8Ì9 “¿ž·q2)’£¦:¿¨ÚIÎYB6/—i¬c&,GgMt‚I±›üÖ«cG»b°œÙ¸X€1è1ÍúŽÀ Äóžß°ßj–×ec•„nvh÷qÇ«v›rPJ‡:û¸ªc,@”[ºQ€DMB¹éÉÜZƒéÑÀJUí]Õ¬›ª Æ®¶SS-Ë®¾ŒtÒ†Ù¡ëìæ,ÔÊRÌíWë꧆w#ð·RˆU§†9 ¬ ›2±OC›DŠES¦=ÄyòrdPP)ÎòMhŽ<Íê6а½å­¨ŽHä…û‡¹í¸ž¶‘ÈAÜi¬ÏÎ0¶ž¢RÅÞH:×iÐ(1…Ô¸&½j½þã§Ÿ__¾öUÉýý÷?ok/¿\üùרìÊ*˜ bõ¾PwE1' Ù4ã7§åqõ즫^6‹ªyF„vscÛàyµîNü/±¶¸3Ìö/ê_GÇä§QÚ$ÁÆîY°eÝ2*ØúygFN³^?ôCí²‘b¢ïÌ;ò g’Šm>Åi (Í߃Âg/#–ÝATáj\ÚþjÉÞ—W›|³ÌÙý›_Uó®\/Ç‹ÌÐó­5]˜({óä¿-ÆÙ€O lG|ëõø°(»²»YW¡op ðñ:â`1,¯½OÃ(TØdþâàÙ—uÓvÑn¬Ôo‡Æßn³dÁÊ{—죕?KâÖÀ—šÜ p#$û=â+Añ­˜_5ub‰ÛËFdËry·7¡<£Ý<1x~·”£ÿY€kÂ23´»ÙÀýŒJ>ù'A¿ ™8ƒþsíöÙ߬ÃgÀש~ÇCàŽ‰oã]Žã8A÷(•u}]-Û(ã@oJòŸ¤”#ëœ º#¡óHؽKc£¨œ¢ûÉiZeÍýÿ"é³âû‰ûùD>fendstream endobj 573 0 obj 1607 endobj 578 0 obj <> stream xœ½XYoÛF~ú#ø˜Övï#E $=Ò)à:Ba~¡¤µÃV—I*±ÿ}gO‘-)qÛˆàÕìÌ7ó͵¾/0"v?ñs¶Ýî âÏÒÇlY¼™Œ¾½2´0ÈH*y1¹… ¤0¸PÎE1YŽ^hùròÈjÓ“5iMA~2½¸v"„".…‰GWöÖÖv5³î+Á–XƯ"A¥R…DF1-œJ…S‰ˆÑœ)/;‹ÆYWrLÑTªbÜ“½©£°ì +d˜¤,Ú~íá ͘Ip¦Më/I±Ž§å¬‡ Ô‡³_Ë$ȰL‡óÏñlb‘ìx·%R “$ø¾{9±HQ"Æ øäT‘‚ˆ¼ ÞO¦4„œcjœráï€óQw+¤DâàªÙ–‹+;ÿ­lþ¾ð–0F Xì~ÿ¶¶vµ“Îa=‰7‹­uC¬©ÄHJÀ£àCRmâ$áw®š71!Íøló*: GÎ-É´Ï$þ:4~*þ¾Fç¬éùçU)@FißwÎ(œsÏÇ?x]œe«•'wL¸@Š›bL0$Ì)Û9vÙzΖ¯6ÎD0ÎÉIó‰˜lòõæ¨%# %E%Ò@›—ýð¸Šh¸R)Ûòá &Ant Rcö´Cu`1æ0f,%é÷îÈ Ž™äÝ».¥,UЧ®ëÚˆÄÈw!ÆjÎÁ˜< é.‘›@ÃNzÛ½ã`áÜT΀EÍÔO;ÕèP9¶N ê°Er«: ê°Ö 54¤˜<ôÏún»´>+¸DŒä’oCyÃ-è9Ò%d"æ{v÷GŽàHH¸üÚhÈÙjgÕ7¶qÇT#¥Sb·}ƒ„D0Òs g7ƒfÌi„Ùã.üd›Y]mÚj½z5„Žr(2×î ³ æÉGÛØÈ$Û·ÛÕÌéñP9DWåáXÛv[ûˆÁ„ã‚ëC(O-¸à®A «Äì¶±~xz„'£ë:NÊH:ü3çEž2 ·,ÛÈ;&·‚eyg4<{( máèg¹ O³‡Ìžë`SI“½û±¶ekß9 ~Ôhö´ì[Û^VváaÂ`œ…/·¯”ëP2ݺþ°îô)ø& #ŽÝ@E$ȼžÏýýÁ¤4Å"3òo³£=ð:yíõ‚É-öÚûuX¨Cýüúr[úŒ uÇÙý'ðÿ£ìÜ®ªèQˆsyF›ÏIó\®ì¬-Ww {¨gP>ëÍŸ6eï3ÁvJÍYñЩ¸kâÐÑG vêÜ£”÷„îEBBï#ÇBt„ö±6ˆr,ú1óFɽÍY ÇÒå„h¡{Õêî<ô_šg'ù A¶£"gÄA£cÀ#•¬?Êÿ«å®J0`@Baîï+»ÙÞÍŸ:a-ûÓü°cÌí¦ýx¨¾7ã:âëÛÛÆ†¬6,JãyÙ–^L;𵕀,žr“JfZµËrsYÎWÄéck›K[¿¯V®„¥* 朢ڤ‰u2‚i†Ä}ÌlX T$~7© ÷Uǵ^ýšó3:Óù§~{6Âf;}£›‡0œö1J× H?ŠyJ=7ÝÈw¤£iFÜ‹NoÁ8Ë2Äs;ºáœ@ÂÚúµ;¸VBv³7î§f÷—šÏû»/×P8½ËNm愚ýÕ:&ü‹‡÷ÛÒã¥.tyƒk·ËxÈD^—×·þ:†PËtVÆŒ¨¨™•«E,6XíÈßܼб9²¼?y7e®ó¦·gŽæ±Èh\õ„ÊÎCäš›—~M é’Öw«¨`· ¯Á}¯Ú$c$å³o ðò09Öõ¼‰›«R¡;»õ[RºF㾋^·eÝÆ¾$qf0†Œ ù…´±²Å»C/j°2e|U“¶rà? ÛMYCíŽ#™ó¬J~3¥“;³ER’€–ÂÑF¿¥ ÉÔÒ.×õ£Gàê"¿eêõ2zÆp~Ý‚œV¦¹ F¥ØÓÓ{/®ìC&<ŠLvn/Fç¿ Mýd‡·–ÐùeàŽ Rôοèð Ð\ˆ^À"¿ôZ{3…ƒ*El%‰ÛÏãZ¶h«MØ+ài=à½çiàh`ðMZË4ëÉci¼KuŸè?OŠßGîçZN³endstream endobj 579 0 obj 1627 endobj 582 0 obj <> stream xœ­Y[oãÖ~wó#ô˜{î—`·iÚ6ˆ»q 'È -Q6[‰Ô’”×Îå¿wÎmHJ¤ì †]àèÌ™ûÌ7ÃO ’ÑqñÿÕîâÓŧõgé¿Õnñîúâ/µ^¨Ìjnäâzs貌QºÐ Þvq½»ørõçëÿÂ}Ç÷—þ‹%\´Fp½¸^_|ùS/«áeY®îÎ[wEf†s«âÑmÛyBÊ3ˆ‰§ùª‹‡žgÿÌÓENTº¸þO'‘‰OáŽT¦5¡"}èÖþžÌˆ²ñŒZK/á%· ›YÅ”p’ › Ãi¼zã‰Y&”LÔ‹MÑÕÊ3“ ¾"I)šÑð¤eÃ'©Õ™D!žb»ä†dŒ©Å’Y§’ V %XÒü©+Ú+wÌ4 5o>”U1Å\êLYÂâ½ï÷^!šq–ŽŠUùEÑú èiÓyw_D k#’†Uð$ãÒ$ vÑ=’‹ä³ÛèpÂt/aä̬L,ê?#™5ŠI‡œÊ^>2”¯¬Òƒ m;)ój[á®ÍZ¢ ¦5’šD]îò»"‚[¦Î(ã©MFˆD?‡-±2‘¯væV'2ÊRPµ]Þø7Ï„erd  ’q.KÐËÂoÁßÔdL|g•WÛ <¤ԪÖÑ\ s$‹Î(CE†²ÎôØY:ò<}U@ÖûTλ|*p-Í$Aß<¸†XqN¨¡o5Çlŗe¥Zƒ't’5»u±ïî焥ⵄE6p—Zzêùg•q‘™ <¨%-õ÷7u³Ë»½„1/­Ïô$Ê…Fk÷|8Í4Ѭ?÷—”Iz¬Ùè…^3Î2nhb÷CH>¨Ò˜ õ!Ö%ʱm@vDkImRBî󶲣ߘò7?¼+»]¾Ÿ¬± ¸–É¥—SIˆK->vµ ™­ Ýh2›óåã N2¥å ô£h’±n¦XCûb„'[ÿx5û¼€Ð0™3ia n 2Çø ¥¥)f3؆×IŠÏåz¨Ï ®qÌŠû¢¼ wYVÇrGÚ¥”µ'9õLUó‘wcW–dÅ6¤FÀ¾|,¶íL°VŽk`ý§¶˜Ë?I =gBÅíi'´XC_¡y €uÇ–£RèÄ04RWGEú@,諸 %ú²1بºÓ»SÚL‰yWVUYÝy/Á£¼Î;õ¨ëŸ13µëU|Üs]kv«s”ë£váÍ1›ôµÚEU|NðŠêÐþXÂÆªøàŽ”.RíÌ·‡¥pµb¬S{¸}{&ß Bš?ªÕþÔ¿u[ve]ÅòO”8SÚò焌@¿¸‰NZ´ï p­ ëï-êˆÑ£BúT†þŒUÞ9gÊÖ*¿Å[ÔÖ«ºÔ— kÅ$ æLyFÔEZsC&3—˜ˆ¥ €:©´h¦²;£™Å)2_¯‹õLÕ`^PdTgÊöÏf$y5øÌ$•ªÆIõˆðt €YM_I®3ÀЋ%€á>Â*£ VÒçnÑa˜KÈÆ(õZÕàÑ™LÉÎ&ýÓé½UBNi²u³.«ÆÊ™Ø¡Nv(|>’ómswØ…ŸS.†ÚÃ&(æãuU´ðÖÓ>¹f8ÿo{wb€¿rø Ày°í’/ˆÑ8ªtO{o®Pß;¯~ƒØZBY¢é·¿ÝᘘC$ qF’“~ºÜãÅ1×t¹wèZ‚ !¡¤¤¿¥Ô¼D…ïšu¦˜¿æUøðý»oʦí^¤Â·ƒËÝ;–+Éä‡o;éë8œ.ãOžL¡”¸þBpä(Þ LÕÉým×$`1Űv.¿ŠÙD ÚqÌÙºþ-ÄK-yó>•’1£©@^5V&ü[$ÈÄQ­_NÉ×ISmÝGKï{ä~4Tº ‡€å¨ÆÖâíŽIÛ«¢¹r؉™SÄÌŠSÁµ[G¾˜8qmóc±þ6oÿ×S³I»ã1k¯2Ô¶±á¨¤g ‡¡9–á@š‘ý+#!fÈÿÑE5¢Ç7Ÿßf Œp»=È|·VŒæë¢]5åÞáà7Smྥê_\ßS ¢…»•›ÐǸ”صÿH¿+ÞÏåJ\Òas¨VˆÎÝ%Þ;`{¾…œ÷Ý^ÀªÔÑ:ôdiOSÜÛÜÌŠ  .Sœn¦—ǽË]ãV2åî8`ü·ôG«…%׆Y1ûóDËK…E‚àe0¯:ŽF÷±ŒÁñÓùU»Sfœÿ™°@+­õq DüÐ<Å‰ÛÆFóR û~éƒ ªšä8~Â5lÁò%®4áÇm[c®ˆ#;Âàƒ¡0‹qN¬ëd'qÅ!Æ9~†šØrÍ:°gô>ÌEøÁ«É÷e,RÊÍKjìŽÙ¢±(àΣ%¸c0›ß§˜òä[ ÈG¸ê´Ý}}¡ m„ÉWMñéP&ø C tK‘ûoÍnÉpÿz³†ökƒÑw-z~°ŽÝƒ £†2I8ï¿•Ý—›.ú„2´Çt¡¿îM±™ßPe± ææ÷áS7Ü­9Ænz ñj¥2ˆÁ1?&búNC)‘ ;È w'?M3ž[„ëç7¼_2Äß-`Ù3_e¯bYÙóôÐï2ZŒŠ=|[ÞFñà :ÁTÝF¿ªþ+Ê`}dù1Z îÛn‡Sptá4ûT¶ÇîUVªpºòîPR”`pÔO¦Ç_jvÅ®nž¢ð¢ÿ‚0¹šXåÛÕa›wˆ‚¸:I³ñé¬Ç«¶©¿×c1Ÿ¡E`iëÚb»ñ¡ü÷ëÅ¿.ÜßÿIú1gendstream endobj 583 0 obj 2522 endobj 586 0 obj <> stream xœ¥Z[oܸ~wó#û´ xXÞ/»hl/i€HuмÈ3²£®çIÛûë{(‘‡¢¤‘’€Ã!Ïõ;ß9œ/+JØŠú?áßÍîâËÅ—ëÖâ?›Ýê׫‹?¾w|åˆÓ\ËÕÕíEÿ¶rte¬«ÕÕîâGkºúìµ.Ûë8±–Ãþ«íÅ×~ ãDjåÂÒûò¶¬Ëý¦ô)A¨¦:|Äë4f¥‰3Â*¤‘•?’0g¥0ÝÞM¸\ w®9a–k³Zg{?Õa³n6Ä ÍE¸ûu'±B¸(ÎMÓv_d $§6¬›6,8¾_ûG7 ªãâö!¬ÂTÅ{:µ51†²¸ñŸí¶Û§ÀÑJÌ9v É^òÜk¡$¡ÔäΟ­º¯\}.çœ ýa‰P ozS¶ïªÇò~î" [Vaçíi¿i«ÃÞïŽØ¸^—í©Þ7ݲ"\Û¨XÛKÄ,¡TÄÝÍѯ9o=e(7Õ«²3‚`„Ãç㜅!t[vaUR'§· ½µ/vá`q‹'T»â®$QbãpÁ†ÞfF)ÖB;Â$[­óFâÝÇ_ýG’h#d4sqŠçp­Qub”piYfº^BI‰f2ÆIÕ™î±ͱ?Ô»â¾ú½ß¯¡69ÇÖM•EM?]úu®ˆ–…¹Œ¡-5YÐ@€°xð}Y4íº©îöÕ«MÑI¥ØÝ —ý|Es-vÓ'ÊÆ¥§6žÍ(Ânƒ’J ±$Do GJŽî•Ì511d~ÞZå}Öû²ü›”cxA7M¬Á@ÝG'%ݘl^Ÿ~"!übl”HCÍ0t»e 9Ä£š»` ¦0„NMÄÒEØôùË `o[ôö7i ·´­þØß† Rì{ürD6IûÒÕ}ækcûõ¶ÚmÙÞI¤Ly'³”c‹ÀO²½;Ç1¥ˆ‘ˆxŽY°üRÙ·ÝNiM]Öu"w߇0µf»€ïVê¡;ë ‡˜,¤!>8”¡¥ï'cƒ’3 áxÜüPµŸ»UÎvéÜg€˜š’rLÄ4²KØù”k"…”“va ÚO=D¨´ÎL '‰ÒFæ9ƒ·Jؤ„´UñÛ!£-å&«Òš2—û *3ÁcôN†ÆÂiWñ¤Ç’Éq4¢5zâ,b¡¯{7Yv2¯T‹Ð%¥Á2øˆ»™Ðä&·É ,Ã.­-*ךr­9{ÜËо"¬T¹óÎèdУI'ÊfÒ5 1‚c-ðö»T*,9ÃÇT«1¿é¤¶ pÌ4Åo8†‚ÕsáaDX8Ó(ÂrDþ*¥û²•µK¨ÌüAÑb×N7o£Æ ¬)1ÃfÊœ¢)7uYD´õDR´¯ÍJ¤ê´/B)JB$ãO0‚‰H»ÌÅ*Ð6¬3÷4§›¦Dy%°Š‰‘¦4K%2²-…Ô´|¬š¶ÚßuŠiøcê°Ð ìO¡ºWHd81lDB·E[„ßð!•œ}¬°šHçf(54!S.¦–ìæpªûî Ž}ôÐΗÁMІ™<Á'N°qka[ò8ÀaXÄqÎÄ˨ ó¥eÊt××àÑbwß}$b[¾ ,z/ 4ïy` ‰FSŸAób¹s­ôe àÛÛ¹T‚ËJôÐr.AíAÊr[T÷MmhƾÔ@YLƒòqSc %¾Á°¼þOµßö JcäÍœH+ŒâY$únÕâ÷ê¢jz£z*«TLŒ‡QšÆÛÈ °ÜÌF~ðš—Û“ŽZvÖŽ™gØ¥u(Òõëíö<»ôÑÊfÙ¥#º½˜Ûmr:Îh™¢ ÙrÓöáÛVlÚB3jãmËdHZäÇí!ÐÙÞ×Þ)ÂPñP?…ÌÊL),01FG–“ÖELA>êXúz*ÀjXxÞ¶‘˧Cü½ ”~2PÄ6ByP2YÆžÛ*h8¦R¿ ×[E6\E¦îpÚÎ)œ];ýRÅl— 4³Øˆ…y•–ÌN™¦phÐ>kèîgž&sªËƒ”ÉxìÃçjÎÕ‰Ö~îϵã@¡Û¦=O£ ®UÇÑ=3ØÃ‡NÀ(‹,42SNg¦ÕuufÚ£´ŽEVŒž^ Co ø•Ïz¾!¼?»”dnm´žÁq;}­’ͺä…Î ÂÏ<&º‹gplsºA “ƒòPû¦×À̵|èYèVŒÂ§¿VJÛs®Íš¼µðÔ[¹ÜâècÇèt6fes>viÔì²cãG™ì€qæûI>à€*†;w8;óšsû ž“Xª¶ ñ£ÓÑéx ¶²’¥aÀú¾¼í›,Dwoõ¾¬/ûµ‚p®ó¡ìMP¡rmYïª},sRbG]|m”Úi"eÃ×+Z- cÐ4a‡ú¾Á'-'&ïëšN&ìÏa1sYÝÇb¡À,NçO™‰QÌÖlb—aè€uÓt²š ›àÀ\ü/lð¹à6d“ò„~jd+°„†6J3Šñ±Ç Y†ÏE§N21ð|\Ó $GÇ¢iælå+Æäã¯U»+ŽsVR’(ƒãŽË¹Ã´ÿYOjã?¾[‡(•„FGÕã™k R4 ú–ÞÿÖŽõÜÍ] @ÿﻳÇKå˜Í&§¥Ü0¬7¯åw›s¡£ðÞo¦5²ðï{øÉp×@C#ŸãP “Lƒj‰?¥ùüwò§3C¤¥¡ MOzs¥t€e0'Œ? q̥⸋¥ ÈyX¼©ÂÓݶsSn-•^RqÞÐÜQâ¹w†4Y[3klì”¾ÓØÝMÝV 5Ú¥ `óÛ™ÀДŒÂÂ7*ªX†qõrŽêÿÏ^ªK¿°I ñ4;ü¡)û 8 Œ¼‘#ó-«&¬*ƒU3EEÓo‚GD_¬æåö.ˆ žJ¿DC:%µåK÷ÀQž×øŒ .‘Ÿ{¾2ä«Ê5`#Õèë³’ïCÞÓ´õiÓžês ÐS ‰mü\T'¥¾7ª{› rh*|Øé˜Üô…ShtASýhB$²¯ä”Μ®úüíjõï ÿçÿ¤búendstream endobj 587 0 obj 3165 endobj 590 0 obj <> stream xœµ\[ãÈu~Ÿìhø%0¢ë~ñ›×Iœlccu¶ÄîfV-õ’Òή}N‘UçT)©µc€€C²Šçòï\J?<°†?°ð'þ»}ýðÇøt-ý³}}øúÓ‡ßüÅÚÓx+~øôôa~€?xÑάw(ÿðéõï·ÿòéá~'óû7Ó}L=làFï”´Ÿv~ý?C¼Ùä7ÛÆK#$,îù]¸E7NJoâ¥Çñ4=ÈeÃsñj»=Å‹^?_û6Ý(™I7î>Ç«°&Ói.\2µŒ«xé§ÝtŸn˜ññ÷ž„¿Tܹð7¨°såå$·~7=,etzú/ÝS7t‡í´˜†í–>Š7|~¥ù+¹·ÆM:¿¶ìF:Öa6‡OÒógvãéwC×®½Õ‡ ¾ó¯oÓNy#…HÒØö_uc¸,hƧ[·ÇpÍ7ƺtëqØõ‡ö4ß­@ÒÚ¥oº}{êœ^cánsaƒžcé5§c—T2­vz™näv†b=ýsˆ[Sœ®?ůÐBùÅ „W¨ÿa’ W B›/~žÕï™×i“íã~zZð`³æÊ>wÝW‡. K8^®Zñ°úa›TO[œ¾EóF)K‚ÛžÚÃó¾kVõÍÁtø¤o°. nžù×nÜý[xáo×t.T㹇Àž-¼0<óiÞa½€` oLvüíùôÍkûÜ­½<ß(ÔëÓù°M_$]£­"ÃyšPuþØ¢‘éÐ!i­=D§U ÅÞ§ €ˆ¥QÉ!fC¹ ‰.úÚ½‡Ÿã˜3éÞÏýéez€‘µII-š¢wµô'‹†»³¥‘±ÆkWÙ¸”ƵƷÙOмÏ}jB” à[cA¥Eäv©¯ÛådÂ4Ì«$ÌožÖT [•EóÝß¾îO¯íÛš&µk„s¨ÉãðÚN€*a«õØQŠ#œÇn÷1ªÑ;_r>­P»î-jÁ5†“ÎÂ%ÐרÚóxŠ3ò´Ç ˜°p»†k͓Ў‡îcô\-]RÔqˆžkrÕ׃my…±âëv÷§ö4Å4n£tZâe¬ÁoœO·tÃ0/ êv«´=tãy'EJ0åÒsÑ)9‹AÝóp<&‚@Ã4å[ÿS·Ÿ¾"Š4¶ô pP.e©“…•˜†KÄÂ?ü~=?s‰zü*ú®ä€ìbé Ù Çãy˜c(åEöQÑâÔ _¼áx@ —(“Çþ4[#@¹Ç•Ï.ß9AÊd'’5–¡é·‡è¤¨„©ÔFo‚0—0ä±ÝÆï0ú÷¤®…€/+êÒ.“¨è¾Ü»áJ¯Iìu!P㥸ö‚¿wÃÈê•ç¹D›dI•úï³×¸U8ÓÂŽÀ îæ»¿}ÛÿtmŒ¬$¾x[ð\ñ¿/¿ \S‘ß}œµç8¼™µä±@Ο ´·i½«dKöúñÀF8´Â—ÿ½ZáÅÅ¥ÐhïOHYíåów„Ñ\טø1Ùÿš.Ào%ÁõݰhGî—`v¢¥H¯,ðï‘%D<„H¤yécG„l–t…tPE$O€0µB, ÷¥›D+Q11 `¹éÖŸgCQ¥j$`‡í·Q 1t¤ˆWö„aç4“Àx¡J†M¢ª"¿ÛS=¥žÏ¯Ý, ÎµsJÁÛ;¼6tß8ÍQëF5ïB<×h£ù«—¤¾ý>ÆR¨ö­N)Šoj½ëÅ’ÀŒùÕ¸FóÓ…ST¡e¶€@á¿-¹Èqìш3þ®ï—¤i~ÓÄ ¢¡èóôn6>'€·ŸU t×(w¡{Žh ,nŒâf>ÆãzŽ˜Ë‘k¬S.ZâwA ðc‹òF¡ Í–*¦&não£ò¼Mwš€LO¼ô=!xº]qô¦$†ô_FcŽþ¶oÝæµ¿$dUò6ž1Î">î»c6ã}ÚÙçÍë|UAº¯ˆ?}ŒPĸKKo÷ýÛfÎo?Fšg z¤DÓŸ ›€s"¶­ß•äñù‹bð(­äÿÐ]NûtHÎл £‚»<&„Cw:‡1’\Hý4~ÌjÄW äÈ..¯dÈ?ÒFÇÓpÞÂ:sV1'$E/.§1WÂ'¦dPWÒâÛÌ‹JØø±ßEç0O0QÜLT ¨ç«‚–|É>0…@¥Ä/µà}å°4çS—à CÅñ®-J!Æ/,[å&*YÏ$j²LŠ@ÝËÝÈÀë1QÇ8ɘ¨)•SF¾[¦®è>•Ò%nDª§Ÿ£ïA2š¶Þ$Ÿ‘HÇæ$ȧl8ÈçBê`)Vg›…[=£È~)†ÏòrB¢Î¾dlF(ŒÊW¹x(¯¢•ÍàÚX«V2ˆlçEEÆ‹ë–Ûö3dŒ²ºýÏH_¨ÂF«9ŒN™DúÁô'¨£­2‡[#U{YªpÃbünÇ1Z:°DÍ1ö£y ÿ—tH rÚÅŸ‚ú84°ËZl‰!ï˜m˜˜pËÜï —[òÉLöÆ¡™ Ýg c¤Š‹¢XÊ,˜õB»Sâ/Tx/ó&íMüÏøÊ_0bF.q²ï¤È]?»bäœUð*U>7nØ E½µò•Y™ òàªüwiKùÞ÷fëz¬ù6º ¤TkŽŸûý>"Œ¶¢‚+å.åõB¸Å–,òüšÂ‡D»¶Bª“)V×=‹ϼ/Tȳ˜?ÙP·›)‰TÓëS(t™­‡2¢µßÛÆ0“U4ÌÁóù;MÝX*ü­ã#,®&ç7« *· ú]|)ó½T b)H…0R(vŒ°|QÃàÏk¬.¤ˆ•2@ÊÄ)¢:$Ùm4Cˆ‰qºòÔÐ(<õpLuAuñ›ä‚QŸf­Œ¿tjðSFܶÄZjyEN\6:ªÜÈ0„´•T¯‚i&f+Mû>S¤¡îÅÌ©‹üÑ*4̹€èà^º”Ç0ƒFñ}xFEc3“ïl¡ÖJ OOÕ¯¤¦çåÀ50‚¶ûs—³—(Ô‡ax­}FV3“þù Û, ßÅÜýtytÇóôò>†nÈeÏ˃IÚ2ŽßÓ”òÉ”JOSÊ,ûœœ:Ø%ÅH¸´R* §s®d©R‰½DÁøruA©ÕÕ_»×hÃV ¿Œçÿ ÌU©Šâj–·ÀÉâK®äd ]¬)ÃÚDÈPÞWD*¥k²™Bõ‘_jú€ˆì±‘Å,6lc…¡ªÝ-S£þç—X˘²úe’’kôþ\ˆ‘•¯Ý¸²÷íе§Ø›LÌJóÝO[jâ¾Ô M_J!ʪ"÷ÜNŠBp2Ø£hgå%⌆‘Y0 EÍÆ¬²íLQ‡Á/ƒÖÂHCý™ýµdÇWe>«)½˜dò~5ª2”üd]×-6Z”ðµ,³2§ùçy"ì–¡Ëv)aRÒWn¼¨‚*[3&@{08[2¬/æ¡•#+­U׌T@øCÇïR¢¦ÒG:*©ò»…·TŠ¿ub} ĤU¾ÁtCéšJO&ò~·Ë °,¡:ò§hõÀ™Òdwsñ E×d¦ØÐuk«¡P•×^$$ò]]*/Ä­LžÅÏ/Çýœ†fŠA-\Lê1¶ôÞPæêS |G­YkXg‚ y§Å¢ví…Fü½Ð¸þ‚m•û:T>ÄÆeãH#”™Dæþ¥l8GoIÌÓ1¦•ÓlÙ\zTû•­ÂÆ(=¿´U3 %ÖDÃÀ±½Ñމ»iÉñçì5°4Œ¾ýS?a3ö5—£Áè 5BVŒ#Þûdn˜u0!‰Å?uCÆÿ1ìÄK‡‰ãô‚ÐР¡“˜0ä%ÓnØ·oo‘„20K^²›1u:4åEžb*¸N¹DèUbæX—¥³±œÕrüú0Å5ƒÝ BÛmÏû]tUMÉï%3GãÞRß$¢-„.‘eüØ}æe±ƒ†Ÿd+ir>Ì/ò`e C6¹K6X‘~à‚ƒè#¬!èÇ¢Zö8ü™©Á¿^8žOc¿ë" *I&¾{Ži©m,—çî¸(Mn€ð=ñ“ d9¸2Á$ºÖý—, êìòÄŸ§.ÞÏ­¢/È"BF¿J +¿Z1Êã°ë†D²ÕGPÒà +ó+ ‹åWƒCRI§Û8Ö ¨Îì5ú9c£cYçg»?ïb1•5®ž 3L%9Ï. §(¨aïÍjN0»ƒðiè Ssî&†®VÇkBz·’¼_,IïK;"ªDâQc«]m@ßÍx:]jK±dŠá|æ·L/1aB Uu÷Qñ¬u• ÍÔfqfÁFÔyikèžû#Öf˜ÂV/µ—Åïì‹oPK‰0z-5Q~ÂäEªžÜ>>ŽÛóÕöq–áòä˜ ÖÍÇCŠÌÓý/¿D›hdœ&ïSÃH+å®¶ênˆƒs´Ÿù¶ "ê²u˜ùœ¯V|_Úø°àHkÖ(Äe¯Þeç.L]ûÌÜÆ62̇ðªÿ {9”ÇóÔlWiL¯p…ÕIÅ.Á·gXKgp›:ÃrYŠõa5]]9RðÅåõ\Vý PsfÌkÇ*‡È6ÜãM”¾P8–xùô…ÇÄœÚýn´+G¦ôÔöû4Ÿ)DÆ>bÁÖ‚]Åøæ2oli-N«©Ð>ÃÍýW²K€'§¨¦=®2Z`—ŽçÄRÈ”°Ã0´}œ®Û…,“’-<…´5éåWé°·X‡Èe£Âô9sYt»_EÚ |.-: E˜N³ü=Cpà,–ή÷“þz~¼¨#lèRQPý1g±`®ÕAÑÐW¹~ê¨lXBP»=+`|5Óç¯übȽX°˜å£sX·l$ïnÙ c ÑïËFUæƒ1Užù €/`Äħó2QM­„–SN­ˆF.Núý‘Ô`š:ÜŒ˜ab!ÔÆKS+:ä2Ë©•)H8*•&ná=VÆn0¸Ð ó‹ H[çÝÓþW p#ÃÙhWMÎÜ2DܵnބėÇFšpTfÉàò™Èܨ«Çˆ‚?ͬ¸p€ áÈì¼ïY “ÚÁއå:$:C‘ôê¨ „êAô‰¡q¹>%¤ƒ/b•;?ÜŽêÚø²‘• 9å×xðŒ,#"Zo£ëì— Ö á®:;^»8ìÏ£Ñ\ØžçVË‘øÐ©ÅÑï«mÎP“ï+z¯~Qb¡ãF¿ÔЦÔÓøì(lÅQRKb”Uî9üç ¤¬^®Í/Â(#—•x-™n1K3  m.:m{­,ȈQY†‘À¿J癘CnÏ8Ao—1ônŒv"éøÅ4®d„CKüªøê_I`¡W—3ž™`C{KusqèŸ_â2ÎÓ p4à¯Um9œ·“Wº:ÇÓiþe¨'Ú50 DUL~(q—åŽð¼E“VQ¤Iº”K«äâIø"ôÅ»;Í`[Y¢:KG‹c……YN¯èÙ µ8þv”®]v7UŠËŽž¤pˆæJ­‘7i|ÚÐlÖÿÖÙyµ[CÔ™ÊÚ^­|mÔÅpx.·02Ĩ“˜…Â0~¡Næ~q3 ²{¢ÔŒâF¡ËšQ6ÿe œu°lÙtÈ'èïü••© Åm‘ñĪ@ŽÇn„”YQázÃO‘¶‰n0ÃÞU ¿ÌòŽ1Ûhwkà!ü¸„´T1½:è)%SÔê!3f],8þ?bƒ«²Â9‡p^)Kˆ° öŒé Æ/¥A^ò²itØ…±!–¥üC:¦ŸŠu¨ªhl3æ™\ ¾Ý-’Ì{&¦á«[f'l8#¹œË—ôC%7ëÆšŽ[Ô¸h]TÄWú(ûí¤[}1ákƒÓXÜ­d±A†˜2á Ã\¦4¼žø¡ÖAˆØ C–®  ª’ÂDî¢Cè7ÃèV¾ÔÔ¡¾ø€B&ëðfˆ¯ÙâçKŠíåƒ*x+’¸lÐs»hs‚±­¼Øßl&¤Y/¯ë™0…]ÙÕà²a7áXZ¡£û‚Œ ç¼pi 2Uq¤XÕ@ ‰‡Ds„[à6€†¢)Ý«“;N[ú=Ž6k¯\?4¾h;–íÕ‚ßâYhcJóž®»ÇöÀú¼MÞÀ‹Ó·üÛ§‡ÿüþü9ªêendstream endobj 591 0 obj 5218 endobj 594 0 obj <> stream xœÅXÛn$W}7y„÷~AiºæÜ/d”(Œ„Fø!RQî®öÔЮ¶Ç{½ ~,ýZ]/~qqöô3˶°Š)±¸Øœ…taÉBKŒËÅÅõÙ‡–üôâæ;™kYa Ãü‹õÙ‡_¸)”BI‡>«6U[5«Ê}’¼ Ѝø‰4l©õBVs#Ý–&K·eA­\û¹«x8Ï\²‚¦ôb9™ûÛ6NVãɺ°\1Ï>÷æ†s›Ì¹ìz¿ÂHFL-W}ÔØ>Œý²L9Qip}Gq&‘éï¶*´&4MüU¿öó$°H(Qkéü#‚åÓx,¹p“Y·· †µ~oªñ‰&kÛª?´Må¤0ÊŠøe³kã©Jê<ûªÞ5ç¢`B'«w?—†˜´Aÿ2'µIoëf½sà û‡4ìg¸Ài^^z -¬åiýÈ MRí.»Õ¡N`ºVɽË5Æe6ëÎ Ù‚p£ejvMÝ ëêತ‘â1‹»ÂbK†<ßD?ãj Ã’kUbK „H±Çá@ºsž¶Ó°µ6"M«ºX>Ì“} ég NUZü²Œ‹ÕiìÆ£…bUy­7 Í–\–¾¨(ÏuøÇº¹Zvý®­žøM,Œ"ò$ìZ+=—f€—ÒtÀjלÐWM¬ÉD²®ï"*ZæbËygupwX¥ÅF$«^†¨ £µžËƒÈÅ5MsAµ˜fŸ¥°&ÄŒà?šuõ|ôy!(–«ì"`Âà†Ø9Lð…©ï‰RòÃ3þ7uW_n½œ¢pù¼«H7ñÀ.©HÂtÔS§ dr£ éJ iÚºþ#w¿žÎ2íù¤EÊp’Éf]í{6f °¡ÍùU6!ÊÆêiA ÙGAO)#ö!ú d›¶©Võ{´>}_Eþ¤‹û2*ÄŒ…Tñ£,¯+š±+·Ý.†•ÙÇIÎ<=G}§ìšzjf§h!|S}óÕïÿð»/ß„œM»üýÇûo¾¾ùç¿×?Ü“ëo^ýuý·oŸuÍöéŸÿó¯Ö_þÿ?üèº}õ¯¯ÿ´}ñmhLÓ…ÃMJvÔÁ¨ÃhŠ‚…–+™›öÇÕ¶ê«_·;«“\ÏUÛGç…ÎÙq7§–LÀ‘i$º6¡TB"(a2žwûHsšeªîYtC›*n¼#> l)ÑøLhï7å6R¢!¹œFNÀä;¿›vÝ2•ÑÇmy[Æš=p– wùóX”d毛þôŒ¹‰‡¦îgÑ` ‡€±—ÌéÐøü®‰ÛЏúòÍ=ÎCŸxZ Þ«9G½Ÿèˆ$˘ÛHèˆih?š ߸)~ùh>’ÈOÆÅÔöóöêpj](t£Ï>Än‰Î1åÌeXYt³Šqµ°GYY£›fÕTû€Þ´Îbòó}¤%žà ¿‹U 6>•+#æÈÖ uºtšZƒú¡9_îÛIôÓVS^WÅ=€Hœë™åD8ö$DZç{òçù%‰M s¾•5”Ò•gM§oÙiÓÿà¹VkX Ýg8Ô¹/Õª[µõ¾G'{6‡!ƒÌ¡JMÑŽ=ùø$%TÚ=T§d¡ÝFß5)ñ§Ö9™7‡fål] §/kZñ¥VÒ|•¥oÝÖlVß5qtŒ›{³õ£ž¡rïª7a¦2T&ÝÈÎw;œsÓÑŠÍ'—].ê#EúiDMDe¢z"2˲d-ØIæºyU\¨¤µoSNØ·Ž²YG"Çò4¸*],]Ì®³v}k”¬þºª½Éª„ \gf¨û]b Yÿªjª¶ì«$å† O:°Ä-1 ¥üGqˆëù¾ØõõƇ‘Kˆ¢ánq@ášä+^hÈ 1djC‹J¥bÚBCõia¼ËšmÕ¥ˆ!9ÿÍà œ—ï €ts%”Ûnõ¦îúbVº¡ÂtÈcÜJxÄÊK7v*Ýž7±™$ÙÙªmÎã ª!KòÝõ“xa@óVã4tls~Zõçq¢²r´üúß|ûÃýɸg˜ÿ‹ò{Þxa ß Ú…š¾ëÛÔá®ùV5§å.w»mÔ*’åKâò}_®Ò–î­—š¬t¨F ŸÅÞc(3Ó ×›ƒ?§Q¸® ñÞç¬?%|Iº.óêÏN¥ç(:î£Ä=‚ŽõÔ)Þ®;=ß|â*¤‹ñ„%©Ä> ¸[ä¸ãB¿£3¶sŸÓ,y;²ôñ¬I¡4â9{¬?À¦4¿d>¦!µ™!W™I;»& 1TåíË]WEåÒØc4pȬÕÞøéiwHÜ.dš6×ù›H¢£‡¬øt@-µÇO+÷hHöñÍI+-X:§o{Ÿx»y8Ê.> ¤PV—«Ý9i6<ÌÜÖñ͹¬±§Ç k>Tï}ú®èÓBQ:ãÇ5<ˆò·Št¯’9`éᓊüß„ aÃóuÂaùM80;Z=y3ÐÌõªŒ¢]pwY3¹&*„¥CŠËÚ,cWF'Jï}±+#ü”f-~O…ÔÑËÛª­’IÜ!§Ž”å’Yǃlª¯\ºø˜}r±øÍ™ûù/:-.Áendstream endobj 595 0 obj 2048 endobj 600 0 obj <> stream xœÍYmoÛÈþîÞò¥w…ÅÛ÷—-àÜKjàЦ±qu|a$:f!‘ŽHÇqÑßYîά(Q²š\E€;`½Üyæ™™gVf¬à3þ¥ÿ/ÖgÎ>Ìø°†ÿ[¬g/¯Ï¾}cíÌÞJ§g×·gñ>ó¢œÏ¬3”Ÿ]¯Ï¾^|sýOØïäöþù°©Ù6z§¤]/Ͼ~»I›Íöf[xi„„ ž‹°ENJoÒÒ»®>ä²`‚¹´Z.ú´háø¸öç7Jfpãò1­ÂLã=UX2…µŒ«´ôS¿ö邟ָ÷üþ£’å~æ o„QÁrå å$O[o†E¡ŒÆ¯ßT·Õ¦jÃeÌ7 âGz±}$÷¶Ðd¤çS×ÎÓ€¿˜Í….éaï÷U·ØÔ÷}Ý6¿Ÿ:Y¨ÂscfsðÏK€1|t}WMÝ DÁ¹BTo.›Á5ök´¿¯6Í+°s‹`÷íúÀåÆ<ðö¡Y;ÃNÅ Ã5†`Sõ›¦ ¦`R!¸}4”»Âz+é6a æ-ZV/«ho –ý}ýU5Ð@èB)I,êº6Ì:quQ—}5A2@Xa<ëþn8CRu̶î>¬ù@NŸW 0b8vŒ‡Ý œ”Äð÷¦\WÉ©¹Æ“úMݼ/kT¡Å{/o‡k$§¶Y=]Þþð©îúE ©Äz[wé Ç5~q[®ºê|¸ÖB’¯è ¨(—qتÈ×|¬’hÜbS†‚Ïðõm’ž‚S÷èIæþ²Å5G,¨:Ì1gq_Óö }Ͱ œ#–Š!óZðjóX'‡÷ ‚Zp&ÆQù%èÇqË'H•Š üú_Õ¦-¿´¤tùG,UPV§}H@º»öa…”…ª„ë]•Šg„YÙàçÆáÚåÕ_ÑMg00?•}ÝÌy2Õ3*_‘” `(ZxÊmk­* ©ÑÀë"™Æ¤A¾+£m"Ø!ÐàuÙ¸Ýbš@ÑtÊÄ€Hév˜¹—%Tà#n½èïà/RI²‰.œGX¥ñðâ:ï…Ún˜8¼·l– /mäè²WñWxÇ1`åj•paR£Í˪«ß7&C!|5§¦Uÿ&tŽäÈn ÅÅcBRvEŠ‘Ë멸 ¨°ÔÏ(!'5ZýXGëæÒBafÌÿMµ.ë&•¡É×eõUC .µÂk«1Á¥eÄÂT‘áôÜ/ËÛ>Ud`»·»uÇ‚|‹U]aæ¨ô¿íÒ±žò`Ñ6MEÝE‡âè-ÒvU‡•ÔY"Ïe,!¼p9øÑ*uï’¦‚Ó1‚`¿1ræ9wÀ>yšè€C‰¾Á¼ÒÄÝWUí^åJÜ®ÿ’úænÙ…â¡Cfì¨ÁB°]!/˜Ûç¢bŒNîÒÖR‘>AHhÒ®¤# 烠޽Mž(#$@–›[Èí"© H 7æUT » ‡K’_¿è\’â¸-ëÕ,DWG²«M@jÕ§Eu!ÚÛº /ÐÒ¿×MT ²VK»IUm GNN‰ M š`™ú9ˆt±(eHa¾@©Ï­w»8…ÙÃñ}œ@\ØÐÃÇQ øTË)˜VÓ0RD?¨†°_C± Eƒ5¥£àxØ! 9`”¤ª~sUõ¯7í@ ¬t” Õ¦Oš@Y ÉS¬l^ÉQƒ e8KΛÄFãÕ–ã׉à\åºð‰îÜæâÙ»÷Ô˜³APcÀ=¨.©xÄþg¶$ÎÓ=ªAÎW]‚Âtb ž˜º,ÈîP]Aç {?–+¬¢Yà z`ïÓp”ªŸ¥Ú÷›ò±|·Š¦]Ouþ'@’«›~ÿ†¼‘ 4oü¹\=Tû·N}òÌÙÙˆ‡&Êì¹p0÷ºÐå¡a…„ÜJ©!r)ˆŸalÞøvKa×êX¬)¨˜tGá=¾Oøýmé#IÔÚwì‰E¿ûŒ•]Ðèôˆm.vïù6û“™„iT[ÚsÂ[˜SY·õ8X…–=] JÏbõÀD Ê•R$_ê%ÙȆn³ccž‰O±)B! 3œž¦"|+21SaJÊÓøEl(á™2«äu1 ° r‰ä¬ý¯þ9Ýo©>ÌÑ „¡Ÿý <(û6?È¡ÙLÐÆ :£«Û†:0nÉ31‰l^mÍQA\Óø<Øß ¶#À&%ó£Ñt0¥qiØýÌl¹NÁ4NÛñýc)r‘öi¿%Ÿ§B®ÂÓ$yþ¥!ŸN‹g€Ï#à—1f+6âXlbòYí„› P~k9–·¤ìæ-T€0}Œóöc¼ŠËü’r 9Š1x³5.Ú`’8†E‹o&k±¾B@NÐãa—₎ü•Â5ú"&=ž†œ»rÓ}û.ñOk­ŸúƒIÈK©ÆÈ0Þ/I2-“ÜÛŸ±B~ô¿2…éu•Ò{o  ]s\p¢T:($臊±çÒï:n‚<Пí87Œfèl’ ¯®$Cïêá ŽÓËÜ]ü^Éütìð.j鉅ÃdxmÈg""笠€Ÿ“,=©«¼‹~Œ™+ä˜Écé¨DÇÙwüZ‡7Na 2õP€›•Ó7ÊÚƒ!SÓ!{Ž¬Í¾Sk,’¶M=@N¼ÁMÕ 2;tG ˆo»ás¦'J.1GTÀ>p|øb¬—«ìH"ÈüxÃþìœ?=e͇§ÐX£1kYöeCÏ`ÀhhfîžWð‹‹Í¤s;Mv4ÑÞ¤AYp^ÕñwÎU²Ôx&ÿ÷‘kSjêÞÉá8ß+!·¼#÷¾¬ûuy7êÆS7~#É×ëðºnNvû»vŠ …?bÀöîchq²ÿß=lºX¤ž÷?ï•¢pù—£­Ë!IŒ?Ùûm@Ÿ÷þTøÑû ø±dzžu¸óÛyø•ñdÔ/›¾z_eØ¿ŒîÆžìðëúÓÿŒî'øýº­3àyò˜,/´÷Ùìé©ö¦Zôeó>³Mi{ìþÑ~=ü–#÷l0>ùÓmxõr7ãåQÚÝ\ Ër³Üþlü`IÆ€¬+8–Ü‚qE’Ïs!?^þp=ûÛYø÷wkõÔendstream endobj 601 0 obj 2624 endobj 604 0 obj <> stream xœ­YYoÜÈ~ò#ûbo uú>$€ck+9±„X~¡)Êb2âŒ9ËÊfÿ{ª¯âðÐHB6Ðìúê«c¾-(a êÿÒÿåÍÁ·ƒo ÖòåÍâoçúèøÂ§¹–‹ó«ƒx€-]ëjq~sðÒñŸÏÿ{­ìuœXËaÿùåÁË ¿…q"µriécuUµUSVþ“„jªÓ'FX¼Ò˜…&Ϋü•TVþJœ•„½e.vwqÂ,×fq4Øû¹M›õîfCœÐ\$Ù¯ƒ:Ä á²:_6]8È@INmZ-Ê.-¸>®½/òFAu^¼¼M« “ª,'<[c(Ëí.Ã>¶ÈVbαCøGF͹â FÖÂÆw M„e‹#îüå*œù¯ßëˆ¤Âæ'ü½]­«¶»ûg½ÙËð]‚ÃÒ÷ÕU, £<û¬ß+À•Nå‡/ëMxùSêGŒ'™yHø§º¹\Ý>NøÛ¶¸-¾,ƒ•$'Üq=ïˆÕ:Š3>(þä}Ýt”¿GúEÜÞnˆr’O…+ž"û¬þO5/˜Ü¯A>©‰dS A(ãrÕø{©Åç—«²+š¯Ñ5þtPŒ(%F–bÄ0cÆÇÂÚ@õþØçŸï}õ˜hŽgD8€!—H!ðÉ~7—Äq ªtmWW›WAJ(ãŽ)8Ç!®!°üŽO'þã»óÅ?€íjˆdO,  *$îQ I¸bpa[\ÝK›#*L´É$<äÀ} ( äùæ×ãw§ç½L GžMžuÄ83wø9Â…Ìóæýñé»hÚ!ßkà6‹„}~¼ ÖfÆej¬›¯axÉŠÓMqwdG‘öÖ"û¤‹×‚ŽV#ÞeZ”Ç´x]7ñNàoÇtg“p«8RÔíu]¦wjÆò®cd(Ãí^áå²®š|¥ÇãðLÆ8à–AÚð,ìSÁz½¬Ë¢«£.€maM֥ޱFœ4ÇZ»m0™Å3±BùˆRDè$b—“Ê:ûœ˜„ûäɈÉ''¯OßÎ!‚ F(:¿G$Ól¼ÕÍMÑ„D&5¤Q–?¤ENÁÔ&µh¿no¢±h…Pè˜ÍaÊ…Fô`«ÖE[tU¾¬“‘õ%¦m.”ÍF¾ @À¯ÏÞ'V FækѳҺèYÍ#4Ók·ËeÔ žMÒÓvÕpÚ­à™Ì/«Ã–PªdFÜ÷ð àrm3lVÿN°–çGkˆI­§f¯ÛÁã=ÓP‹(!& ƒÌBL´žbš%u€Øñ›§½4ÉýÙ¤ lîÒN_ŸÌò›€R,óN3e|Ø=h„‚ÍRnÄÈ5ܹýˆˆîŒið^+ïu \r÷Hˆ§çt”4¾|Þk:OŒº½¦Kll¨¤ýÿð*€€=©úmµ)ÛzíO½šSѧ~¦#jÈ…»”5–¬$:óâ¬êr!!@XöDÊ6ÀÙ¥w³Ø"‚9‡éÕ¶)sz#eµÕzY”± óµ¦BZêME…˦ª~@©#0XE,£7ëÈÐŽ¸ì˜ª¬ÿQÍ·4ï]çòV©5£×2ìsî"]IÃlÖìjÕ&rfl&•î¨ëË€(Þ“*"ã¶nŽé $*õt/W‰¹9ÃDq›É\;‰—t×)¾DKY h­¬Ì¡˜øU!³Šå¶JÐí’’d`Êñtì  àX Ü­“¡¨#vÖ÷ KÎ!fGl_ÅÍ bû^ótçqÖw£Ù¸p!j¾Éʳ7›U—¼)øŽÍÚª¸¼Kª‹Ð ¨<œ ,`cй3Vr>4¯Ú¨¡óŸa±o/Aµ.…‘ œcί»”H5æê¿\°½Ìô`L ¾ºõímð ð ´íy™Ä^MK 0ÙÈö>6òžÈç/¢ ¡4¡À/UwžõLRýèI @­¨!ãa“ú˜³Xn H ˜c…ìaL îu-“M苬ï0!#\"/<ÙÀ¾RNê¶«›TÜAÇ1Ž N{]åç4!¹˜ Ò¸ÊÑ®.·Ë8à\Í%RÉ\×Uíº­º¾Sñ}†ùR ;MRãÆ§˜éÅ&AÒ¢)W}{”‰!÷qœH©±@GBÔ•ÚG§]*›T<)‰Ê¿è¨/x Ë—Æ> mŽšª«LCFNK2i'D9°SY,—}ž ƒ’®-½×¡XvKjº,%R´'Oǧ’QÌÅz†­ÎÓA/ŒE•öð¹7Ö4™Ð-Q 3Iàí3†gÙØRkOÏ“gJ½“Çgãè0ß©†á|¸• "”¨@Y­s4L';Ò?™ÄÜŧ,ÊUÛÇÛíf–Ñ´,16êÅ‹:êP˜1Þs–ôìÄŸò$›—­€tì N{Û"C²‰âAÏ‚o¸ÅÁÆUQ/«ËŸ`L//ÕÈÒ¯¿Dùz85uÌc…4›8‰EA«`-Cú¡‰OÄgÕ² üþá¶©Úè20Ƽq‘0 %×ÎSgŽAâ'Þà(áá¡î;þf•1 8ÆE`(p¨E°€‰PL`ü¶O‰gUs‰NW]}u7 ¦´O~> stream xœµ[Ûn#Ç}Wü|‹ ˆã¾_öÍY‰ÄNvDöe–­˜P¤v†’¼ùúTMwWÏ•Ù2°ÑLwu]Nª.~^±‚¯þ‹ÿßÜ]|¾ø¼âí³ô¿ÍÝê/Wß¾³ve o¥Ó««›‹ð_yQÎWÖÀʯ®î.¾Þ|sõxßÉîûëö=¦VkxÑ;%íêj{ñõ‡:¾lº/ÛÂK#$l€ï|‡¯èÂIéM|ô±9µrY0Á\|ZnNñ¡…åó¿•éEÉLzqûŸÂžL§}*|d kWñÑßOÛö=]0ãã3î=¿„ÿ¨(¹_ùÂaJ®|¡œäñÕëöcQ(£Ó×瀞ª®›v3 â–Å –ô¢»$÷¶Ð$¤—SÛ®Ó ±Z GÒAqõ§‡»ê€(SH.Ó±NÍ|¸¼:øJÖƒ øÇ¦ÚW›Óîx˜ƸÂx«ã:ïïÛÂ*B$%nv_U >®pÌÓ–·í‰¹-¸PÉ8½­+³éýòt¼+&Ê œÅðÕ¬âà}|û\D1c“6ŸU=yôÿܾ­«ÓC}hb@µÜËÑA”4Iíþ Uãô`%Oq¼‰é&Vd.‰Ñ´’yôdﻢµ)Y'õ3j4žHj„/¸fIñ¿W·ô$ÙC+„*8#Ü”í’ÜZ‰d™û²iÕ²– ¼Æ÷Àq@½"lˆr…M¤ó=íÛVABƒh´áS»4+4ó¤ÆzÊâ@‚ɤ˜ŸŽß×í&R‚¾¸ë®¸¡mz±ü¸¯¦@°BJ‡sà§JS:`Õiw7¹ Ą势RLà.­P€ÖI[ÙbÎ÷-&Ñnd1!ÉŒÉbîÆQ€T;Ø¿ŽR N N4^¹ŽLÍ©¼k'´v/0ÙÛ‡º0$u!µ¢ó_ÍhœUj#ΚHZÐô=8•õ§ê4g#öZ°•·´•‚ô|³´.ÄvÏŸîëc+ˆGvŠ‚¼>Å@0Lâ}™Ô$ MYò÷Фa`:gÒ@„sʳ_‚‡hm\:ú¡Œ^+Å•YൎÛäÜå¾i‚Ãé´¶K}Y(ÿ¯ªÓšÖÒö³E]}~>Nç‡ÖSÌ+i•¶šó R ð|ÚŽ‘©8eà«{HGzëË}dVh’ùMØŸ8زO¤ …aœÖÍÀ_~,÷Qï.§‚ÃmĶkp>N‘¼;œ¦Ïn,GÌLÔþ÷U³©w÷˜¯ÞLâ³_3¦µ˜gàßí9o«IœñNI××ï«Óû” žËÿ˜’"d»y8Pæ”<…R_Èè\xŸÞ½-Ÿ‚᥀àäb`xÀ#AÞpŽbkJ§åaµ =½º/›ÓºÃ{/º"D×㌄M™I \“7ÁÁ9cÎ ;M6Ö!ËCµñÓIò‰†þH« hˆvxHH‚ØñmÙĀю`ìpŒð`¬N_Wª³/â‚üî&Ä” ll OüãY*%4·cMj&“åwMXÁið‡´BYïwÁ ˜®2ænn™™=+؆ò¢ò‚Òmj4%Ÿq9tˆµ4*]ÇPt‰Š#š•H¨uéI¹Ê³zs³DÞI‘V‰N(®í鸟²”÷öå‰ÂòŠkÓxyVÞgÔiT®¢®£2B6Uý—œåd…çœÜ.4 ›Ì§3ýŒlêi×T—ø7iÐ÷¥…PDK„ªÙšuÇ)M‘B!Y8:QH݈ì„6§cqÍûî)]ä¢ò¼pˆÝL|›Éä •¶$±_¹n» ßH«KPa­õcæ4±X‡*±…ÃD¯­@˜uC?è ¡D SmÒ1AÎ_mŽwÕ¤ò@KÂþjʃà)â? ¬†Œª°]DnpO+ x”¥$øœQ߇oŠè.³¦>.bŒ›¡m€*J¬ç™“ˤ"Ú² 7Ã^J»bFÂŽMÖRc8Ú¾ÙÎÚF¢C‰q»¦Ãó7À‘☜ôƒ}¸ç9„~­6§ÝáS{JU(φÔlª€h»æJ.=j€¶ÕnL6 ‘R‰VµîaÄ]Pª@?|ýt[¥†ê`Í aÀ¸"è?£l¹:J»3í,7)³¾2r|ø&Š!ë’v‚ÿÍ™œŸÓlSÆœ ŠÌZI˜ê•“o§¨|8›lZ1snÞZÀÿ€'@žï‘ bzÎËqjÅT€}óV™»—|œ4í¢SÀ{Ú-9ÂQFb5Ú9Ù·ÊÈc0ERùôGäƒì_ ‘ h¥'µ u`:Ȥçw© ‰¡%áa¦KYÏdº)E{Q˜”úðGeóÛ}UN–ÍÛ'ÔÆ®C¼HËȯ‚TïÊ“ø·0yxž$ý1Á¶ecrž¥=ÎB*؈å2È[lÈi`›)¦ÛÙç<àœl–¨ ëªØNJ>™l(¹Rz$R¦¤Ý²’&IZÕw»üm‚[!c­“Å Û’¶¹ŒZ·ù*jw ›·EA{<²°P³@dŒ<Ïež¸Ù›jTBzàŽ”˜ˆ®÷”Ýw11!Ð3XPQýðŒ e‚g­”œ ¢©ZçZ¹‰LPg|Ë4בGôh.$KÒá!‘Á\KO(&íH7$ùÝ åJFW×  JÛÂBõ1ZY*òå/Ai^g‚Ym/czQ\}~ù}•£ÆÀ3÷UyÅswP§ã]yÚmÊý¾•ÚÈ‚éLp£·‚R;mç&†>x$éú8 ý`§—3åtŒa¿H~|ˆ–µHž}?ãvêIæ³iÔø›k|«Gñ%G:l¦(PðP1†Ý²j[DCt¨xl¢Âu¦¹£;X/’¾ñ>#F›æ„À¹×À¨õ÷pØ%¨fŠ®ÂÀŸïë*b˜B³ç‹sc™3âŽ2¯.9™oºøž»9Âÿ Svv—Z~ýuY;*v¸skŒÝ '†¼ÑA>Ð˪P@M¸Ü»Œ®Yâév·II“ót”ÛrN1èÁôœôXW÷qE.xnàE ©aŒ(þî0ŒFÏ’úÞU±™,4d_õ„•£HôØg¡K¢ÀD'®d†¡ED†3ªn™&0]0I´…6kU µ™”Êš QN˜ýiü.Wàh"O¸PWŽ[y¶ÌL¾o½[äûk¶Ðš§ŠQuq`Ô—Ã~,ëmõ› ŠtÙ»_ñQ¢ 9àÔ#ƒ4ñ˜ˆîx]’•ý¢>H>bÙÄkGˆJžÛÈ»D»Z#Qß.µ3• ÝòO.0äúÌaÁ´I{³EUÈ£m—Ãží ¦»R•ÕŠ´eço€:4Èq6jö‡ëx*f©‹)s±;H=~Ž%CåÚ3&v ¼Î†ŠÁXbÈóÄí2:–lÈÒPVZ¡ë›@ÓôÌ |î:ªlë¿ÁzÝDïM7§p[!qÝ’eèÕï[íÔ-ÂwL‘-ƒ]†BøBiOÒWi2Êç©§Ô‰÷óc4Ô4VòN Õ©‹«ŒîežÊ[Ü5Ì·¢6ç¸~K—Ï´t'éµâþŽ˜ùçd¾ îæÊ4iô1+4uÿð¾?;w‡Å>)%ÖÁ1=ΗMÔÂ&Nœñå ~%¦Dð§<3Õ9 ©øYî†OÛ»hjx>›õJ"½é§S²¸”JH¶ì®w- ÎY ±·;Î#¼èÅ-èp„æpÒ8SöUœ¥À¤´^­±[lâ(GêÍvÃlºE}Vn$BœO–ZxÅàm.(Ò•ºÈÆ+S»èùþeT½ÃÛŽ¾¸‰‡Èœ6Ï^€á¤’Ìs‡m7âT™Š.‹íêhuøä,itÌEJ—ß‘Á2¿“=[·wèÌéAEGäL¢Œ:³ôF"æ (o‹E ¶„o²{@¤@jOŸÒvÖ¸%íBˆ Oá“ÁÊuD6½,øq¬-_9ýMæp«~Ý ]¦ol¾žÚô:‘K¼»žÄì?Upb`fMJŒ†#f8,.B–„=åè®ý9Vß›Gƒ:Yçú¤K:e‹ß7«GÃrkîåØVÄ9*¡»Õ2Š<þUæ™4iH(R7h+õ ¨ö'êîuîŽóuvB§ÎÀ³Hy»m–l#·ã†v‹XÔêͶBB\bWO ùpw2ç¥e¡Â+“øìŠˆŒCznÇJÉC/Cü˜þƒ ¹°”bïëj[}u ö0Ô¥l4‘Ðoì@¤SÀœŽwÍ›©¨ÁkgF|Ýþô⇫տ.øj.ÖäxíÐüEáì”׫ºº¸™ýáÈ€/…WV‚auïp=8øåÈ?ßýøïÞµòá$¾÷ËT¸âQÝà–jª7`¨°èœFâ ^ë$¼û*Ý“¼ÿáíÏ?}ßž‡«‰-…Óˆ|!2y<ðcIô™ÙV¼òkÓU§¸¿~éuÜáhf&1Ô Ê fl×R:€Ê-ùìÓ-•¤J$M´£ã¤¯Æ³æ™¿"TMÑÀjB ÊÐuµ©v±@p6ãn‰ÎÊN&L¾i¬$[–û‡*ñ÷l ºÞãS·g íÛÝ&ßÍjlxzÚ/eh8ÉæˆV“$Öî®{Œz®Ñ˜X Ë™ç*y(-šÏ[«·9æ‚Ék»ävyêAMP$ŠËñê`> stream xœµZÛnÉ}ò¸ÀG;Ç}¿ì"dx/rµ„À” crh3¡8ôÌв‚$À>fƒüÁþLòe©¾Õ°g†íM ÀZÝÕÕU§ªNÕèÝŒtFÜOüqwñîâÝŒúµôßânöüæâÙKËf¶°Š)1»Y]„tfÉLKX—³›»‹'V<½ùì56ÛkYa ƒý7Ë‹'¯ÜÊ ¡¤K/«UÕTÛEå~%yAQñW´ A¤Ö3UXÍt"9¨,È‚Z#¸ö{ñr~¸sÎ j˜Ò³y¶÷¶‰›Õáf]X®w_yu ùMê¼n;‚’Œ˜¸Z.º¸¨A|Xû¦L9QiqyWáN"Ó=þ٪КдñçÝÒï“`‹d%j-½„¢s̹ðLfléìâ ÓxY³ª›;·ÎiÁ¤HnéÞVQ3)uzØ¢ÞúEQ(Ž.yï–¸\ƒBÛuØÊLwÙ^hXeÑšÆÕ‡±€zÅ4x"^^n6“pÒ…’át]m—×Õ¦Zt Â/ën½z˜2u£é¾ûu÷3ée»¦öc¤çj|\ð.-,E—û;.ŠÊ´¯­ºh,Ûà«ãÙÞ¨©š:Þ"§ÙÆ97´ pzî®SŒùß­·Ëõ¢ì¼ƒ¸ݬD—þR¾dÚŽ|©P?Ä—’ô’U¹ÞTËÂë@ ©HòÀÏVnÍŠY´äÿEƒû'žŸ–Ê6š×X–^ßmW{! #-’>¶—¡(¦©Þí«¶«}À ^PŽ1t¿Èœs- èôÞ‚4–ËxÓZî÷YaòÇ+ÍEÂA¹ÙWÑ£´·çª©}Ì2H1A8)ócAl Í(ºˆÖèajÈ®¹PËBAfJË—ñ¼6/·!™Yp¦’R8'éø9à\o,åÿû—æ 8 I¥Ã0ƒ|* Ñ™âA¸InÇ®¥LàbSn[(k>^Xaü6‚VZ2‘ ËD¦PuéN±txQß휉B >»‚ É-pWã $P+¨èkò‡oÿðÇß÷¯€bÅ|_íïwÿ\~¶ünóïï¿mÿó¿-?Û…´É O»7»›zå|ÕÕI…ªÊCiþ}6î® ¨~]z“C^Rhà÷±Ðƒµj.#6´1É7¯¾ŠB¤³u³¨%k(Tèó“‚iñÕT‰tÔ¥°d}pz&ÛQbÇÂM.|Î…ò%îM¸äeÕæV°²`ü<]©Îx˜Eõ€ÿ:ë’µæ”Ü©ú9g ÈÓœ´8Ô%·÷&4% OVyØÅÑ \µŸG˜À’ ]Ň @ ) JEH„ïËá†`¾?DÈûªñÒ(|Á†a—Ža2žÿ4VJïëÅOm|¾)·^oßx¿CÀ3rJì—vu»oª6‚›PLŽSÛ÷Ûu°@ Ô甀ŒvÜ_‚93K‰Ð­ÿ¢^VçéŒJPmÀ…g)áCáø™¹Pv$Óâ,  €áTŸP “i+|êý€Í3,ðõcH<ÿúÛ„FØ*lrÕC ÂÍ)pOl@–Y¦ŽoFÄÞ>ŒwNÅ @Á謃I®¶Qq@RÊGÂJ“€T“Å÷ ”}‘Ž" \ßUõ¾‹´UZqºU’£{׸^ððùŒ%w¤G›ú> Ñü÷_x0 /uÍÐ! Gaç °/¢R€ßň˼D—ã "k*ˆnŸ7¸³s/Ä­åB†$Xèè6ABZ{<¾n“ù/“µ/sã^æ¶ w2àöi×OÆ`DMÒ5·ãÓ8ÔPÑ%ÍqxÕ¼ÙߦŮNaÖ…J3®ý·ƒÒ5&Á !F¡{Lj0`z¤ [Béø>Iãzi#GyÕbý£ª}ÖTݾÙzÊX5$~(9Fëã1m ÅåÀ‡ àrš\:Õû‹+ ùi×dÛÔ5õ&r_Mí@à°ŸhC×& ³òô¶ßº dÏÝc.Ý"ölå6^ï²m0 € X"#Í/ê$B* ªî*z¹þŒ›Oó X˜ôéúrJ'ˆbp¢“.…Ö»÷ü¿.¡£¦ž¤]`WŽ3€ÕªÜoºx±t(F×ó€{ˆ#DÞ[U ò2géAŤs(¼0'<¬ÁK!À00ð Y$NnÑçåfêZÍ(õG…8\ÆNÐ;ILuA)ЖȾŸJZAÐ*,XÔü"‡E)²ã ÄZR¿­ Œ–­ßÍ]žäÉXSW×ߟ„N ú B0íëÃß â\ºû¸øo’îŠ÷Lˆ€¼éæaKZ5¥›|µGœN˜kÏs§ßÕ1Ð¥ÆáL(|Cÿð á¹7¾¤[bKM2M¼È”âùµÛEU°ËfÀ±¬ÛiÚ¨ÁtA€`/8åÏ`za{ˆ•»Ýf»hèû™JŸ±yQ@ÃÉúáä6Æ„TºçX^„‡œö†â=*! óehî(Ï:gé1Ù7wØÌ¹"óÇ´#Ay‰¼úH†‚¦^ ›é”PSÖ„Ie<‰™L—€‰;Ru•êJÇTp4ÓuàÆ?·€Á·uÄëûîû) ±ƒY‘ïc–¬¶åëM˜È/adÿP'$ÁD÷:¾# .Cã*Å‚ˆ1ä =¯+~N%þõ£v6Äy'x²Ì:¾ÍðÏã"¡QÐy Í%œƒÐXDOjN]Ûq{ܸéÌ{Ë$èä£%/ Cðúé1aäè0®à"‹è«ÁÊv¼Ší·);öŸFºõ&bY6œug7/ZTaÕüØ¢Å1ÍaÄÙ®~ÝñtlÆ šï ‚Z  d€sçWÓýí\°3¥yƒ»,»²{Ø¥!ÌAžg\w­Ò¥-ÓA»„YÒXxOòÉ_Ožñi> ¥©u3Q•÷ǵ̦i Éa"8= ¢uBÑñ‘¼!Ÿ82·žíòó_vbHwäiW£ÁÁ£O9÷iÙ¡1Ö=½Óyü¢‚ \ï•û|’à ˜Ê§)m>oú,†dPñ‹‹ëÚ8é‡.ç³êÏFõƒ—&å ŽIºÝ h®±œøì·ŒõJÌ1¥Ód@Ê‹äßžì]Ed_Þóa’F¾W¯¢`Êð©$èEÇJ¹\·®`·ñ¼eý'Ôô0cÉ8!r×`÷ÕýdB´ýGvj÷1W–áÛ'¯÷‰ÞZ†¬­ì›üþÃY"x¾ËçIzÙU˱€\en>-‡;¦ªG”Ûô̶NLapÞ³¬PU¸\õ8MoŸ^ÆÂbÆè”øµ?|(Ükžô¸ÿÓ¡Ëžÿ;ö£1Ûøï·èsÈœã/§¶_\V•s÷m‰X¹kTÝ:ZýW ©‰µ^rì¶Õ›2„Bã&­B™’„S;c4´ñRÅÁŸ”¼©¶®Ù«"Wý'ïr*ÏWw¹ÏËåo£öÚ`K–¾6²›Â#¹¨š¦nŠøJj¥¦/ÿZLúoé¶ÿƒ„OÂ/zÞ¿?Æãp€Áð PtŸÃm½»?¦ðøúòfö› ÷ó_¹dâXendstream endobj 613 0 obj 2728 endobj 617 0 obj <> stream xœ½ZK¯GÞ_å/ ÍŽDºÓ®÷#Hˆ„ÄwáÅÑžißÛöL÷¤§ïÃ(ŠxI;„X@$²â7ðÇ8ÕUuª_3öÜ`b)–Ê5ÕçùÏ$£ âþ„¿WÛ³ÏÎ>[Ðn-þµÚ.¾wqöèS­*³š¹¸x~æ@–eŒÒ…Vp†°‹‹íÙ»«÷.^À~Ãûû—Ý>"KØhàzq±>{÷² ›U³Î,WŒÃÜžÇn‹Ì çV…¥gû¶û!åaÄ„Õ|Õ†E Çûµåq#'*n\ß…Uø&‘ñ;…[R™Ö„аôãvÝí“Q6¬Qké9üOÉíÂfV1%œäÂfÂp¶>í~Ì2¡düõ§Åó¢)ªU÷1 â+•¢õGZÖ?’ZIÒʹÏ.¹!cj±dÖ©$ýçŸí“USÕ“¼ÓÍf\£·Þ¬šI%(šYØ>Z¤¨òg›bïöq‘ ¦j¯‹`Re­ ‹ûîënä’`´¸ÞÉc2Å9¥}yDf¥2åÉ‚ù¹2Ñ£«°f‰ç••?)â¾¶hnƒDF鸚oº5’)V?k–a„·qHˆÅ¨)÷Iwˆ¢èDwÍt”©É«u½]îò$éä[rF3Š,)uæeݾmÝ–uÕ)ÊuÆ´Žý¸ËBˆ0ת:„”åF ò»›.ð™­0ž7õ¶[eäRÔk]Ü–« ‡”eÑ0—ï¾ô64œñè¿âÕ³`l!U\¬óf}Þ,2m1Ø·õ;èÖ9D<är´xåsÈÀ膽׃fœEÉêêò½hE#ãÇʽ7¥¿tUTE“·Ew®€(T„E¥kŸØ"ã’OÝÃDüÚ~çϤÀ¨,Vå;þÐ%ÀO¦asç)o|Ÿ1`´ýÍ6 ‹äxÏ^†6ð‰g)…È¢®3AÔ¶-·Eí ±@E{«ºZÇÐ#œ´š‡çeÍÆÉ¨3ÊP®A2ZŠhøÆÉ8Õ!zÇZN†á#„[@%j§R%ç¯ëyH>a%©n‰Ia´É«—euÕéL3AÉD?89îÞ5®°4!' ³]Ч%ù ´ù5dö]·W9ÈÇš¸—›øûýÍnÍ©æpÓîqÕÆ½·åºèòALsÁG ž‡4æÚŒâwÉ58ªIHC3Š­°zíËínó*ehš«:˜ ²?F’G@ð¢2r`ð,V¶”7?iš»2€›„2(RÆÊA"lQºý! ™%ˆ÷»,Ýß4iu›ML®ba¾ÙÔáFÑVwž¶Xbq£Af Æ-ϘÇ€ÉÁ$Z×b­òPÃ4$à°‚Í^DmƒQÐÜ–À©´ŒÒÝÑ"ðëèÔ¢Z‡$“@Hn1Á?¼ñÈУõ¾˜#4.¬D\»õ²rMz,'$¯J­CFê´VǼOtuµ)ýÏ)ü>åÛþ<¸NaÅKö—”OQ"‚s-’~m¹ñÆ„JL$JåŒW¡/8 °„ ›:8 È/"]é«D„¸+ÔD®D¸ƒ&î³€‰½ùòª©o<Aià vO“ð½ìðÊç4t ƒiY7åUY…`"Ž ¼S-‘ÏLÁöDGU¶þç°J_Tã¦-öY0±&š~„ ¢ÜLÝP§FÜÐÃþÛp$Áûò(|ˆr æ}6—†Åµ*øÒÊ( R_I)³6u•ø›BŒ{]ùHH4€±ð ‚ǘ«t=}d¯ó;ZÝ™/a¡¸ðÂ;2NôLÞ¹30Ç ü0e¡7såX¹äº@™±’µÛɵ¡£ˆÂ ":”ƒç!}À¦Œ"´/û` (mÙM¤Æh¨Gmˆ`15hŠ<¥jŒaPÙ$ªâ¾ œ”sôÛË£j/ÑbICÚ%%*»›Ö:d%ƒò´Á9î3 O±kRíÌL¾#P"¯w×c»;ÈÐY¦Ý7€Å¢²ŠÀƒ2®mNqüô£Öƪ$èª4÷ ئ¡oÔÜsבÆ=X9Àö¹MU®×GΊ § Åî‹ð ÅTïÓb_´s2òÙÔ:ºN\¤‡týãHÇ8A* Ó$Â<4ܧE³\»@T¹Âì r À6 ‡:Y Q=Ož˜Á©Í© BVºmÌ(Ê”¾´öõŒAíycJÎSôϤNÑ”u¬h]—+\D`;^= ;¤˜v¢=ó?¤òbäåÍÕÍÒÇ´lÐ`Ðlùr "Ep2B‡@dY2 AòHüˆE¾ü µkïu€žíˆ–{óüÖ4tG ¾ ‹LmÓ5ö-TǵH´@õø‰Míé1”3Á°À÷p91£C~ u"Ùœ!°-P£hY`ò›u!Pö¹6á<êc°ÁNµŽ1œüªð ¢ØR,)ó&œÁ™¢Ðc¸·Ñp˜Ì«+«C\@‚ˆ49jhPLárÏX`YÛ¡žÊUïÔ¬móu‘K›4gøð>‡VØÇ²˜•8Å¡“!s $¦—_Ù4¢xµ¦&[6N#Uê\_§º r¢ŠOÆ i8YV«Í/9Лk‰CNØŸo#@MÆ­é&4ÝLˆiQŒF«­êMÝlóÎóÂMô°6 Pä_¸V{©socÉ-ïG¹©¨ßFi?Fªj®ÊU]…xæV#¥ÙæhgšFÙyê¹À/ÜN!¢g„8åoÅCR牥#bUö\g¤Õ©á²^ŽSÓ‘fÜq¹8{´&Ò¦Þúh,Öƒ×6Àè®k€Ïî–†&ÃX¼¾uÀÂBÇeN‡ïCÞ ,Ë8#1ϲF&–e¡昇iÄ.{%öèŒÝ¹*M¾sÌnH‡ã{ª1ï´ŽÙ#ç8‘w>ÆF ”Ø^ÍŽŽ€³@ÿ1jÐk«Çá54E?B¹NcÔgï$áÇê¦i‘n†XÙzwº¸S|82šéµ-èô–Q¹>z”¨o³9éß<îñ#¿@ז÷‘Â&Ì;Ñ Ô *‡‡‡Nv‰îÅð “ÿ/¯ó¥²ÇÈ2gÆ5N”ü¥g¸“AÜ wd5^si¹aHJ†w[”ãì9 ïø^¤¥[0ìãË='µy3äqÔ"›#ÈÃgc²Ï#›ýõ@ä9Øñv÷=r:ýÂN«X_ï~õ&œ€ÖVS,{it. ½Ñ—Ñx*#§Gñbzh¢Æ=¡AC{bô&ŠR ˆð;°äQøMB5ŪÆ…lÐÈ‚Šõå{¡ip6ÑC†Üã,‰ôêåiâ=à!…¸Öé'šš–.Nš+J¤±ÏoªUŒÈuhYøk£3f dÓ®íùªÁÛ‘iàó]÷ØÍO0câ}‹woÇèC,–&±‡-ÖåÅ>±Vj:i;h!O.Á:ÂͺdŒ2}‚yícBüpô* ª,·o-À® œ ˧]dÏXKœ[‚:ËÇûŸ½¥á8#Û”Nw¾ùæ&Ü'>z¼ NëøRÓ½¢\XH™…pÓ³îÝåý¿øåÏûçî–Ðùů÷ûõ¿¼ûÇ£¿þmÛ¼ø÷ן|ýIXùâ_ñÕöOŸkûõ'_¾¿¯6~syù—ÿ¼øêŸ_|þX|ô¥7=Ót᪃óô’…6#:&û7ŒB÷.¦,Îè¾ßá?-ï·ù®+BÖ=RÃñL  Ñìí÷ÏÅÜ’‚µK×Ä*åo.¼Û”H=Ä«](:½‚(öï%a Bº&ÌJGJ÷,LJümop Ážþi_›î,Mó‰øA“ß9êã“ñôlqùÝ@t(AÙŸ& eÕNEš;¸/$´è®O—nNª =¢ÝGhyÔáµÜiºÝTe;ï>L ìÒ=˜á5ꮇ³S½ ö´ßP¯£r¹Ö‹ê¡¹cvÍZïz¾¡Twåºgm>½•â*=**Ê«8û°4µ(ç!Þ€ÊS#~]¼SÅ 9ÍfÆÞ=Ï®¡™ªö@{:Ý$ ˆ˜Þô̇Gº/ë¹áËÅÏÎÜŸÿNòYendstream endobj 618 0 obj 3598 endobj 622 0 obj <> stream xœ­ZYoÜF~ô#æ1ª¾ªúê`>¯HAWÄý‰oîÎ>Ÿ}^Q¿–þÚÜ­Þ^œýðÁ²•-¬bJ¬.®Ïº²d¥%¬ËÕÅÝÙwV}ñØkìd¯e…1 ö_lϾ»t[(+„’6.}¨®«®j6•ûIò‚(¢âO´ áJ­Wª°šé®ä ²tWÔÁµß»‰óñÎ5+¨aJ¯Ö“½Ÿº¸Y7ëÂrÅx|ûg/Na8·Iœ«~ð)Ɉ‰«åfˆ‹®kÿ,ÓFNTZÜÞÇUx“ÈôŽW[Zš6þ>lý> X$”¨µô üC,a¼æÚÀ‰ÕšYw·ôGÞUý¦«÷CÝ6?†SS+2QXªÔj Yú¸C·ÕÒ ŒŠ9¶¢)¸”(ß/]UÕûúë]¹_zL«B”¾>4'—Û)À4D&Ùø{z÷ð‚E˜Ý’Ç!$ݲÇ׸* ÑI¼ö½Œˆ¸6½¨)˜A¡ïëípûÆ_À nHⶪonÝ2c‘M÷~+¥À®(o+F a ZºÚá¼-8“éüƒWÂEÙ¤B{pk`?Ø(ÀMár€Œùßú}PÜʦçªM}^mãÕÒZ=Ô“šÒ¸ØUák–v+>Ærnb]HÎDºð]WÆ 5SÉ÷n ÂDê„Tyµ«}˽°~9D”´É$õ¶ò@]à!C   ™9*i¹ŠQRò¤Ço!ò„#OJ×}@1vþ€Wš‹´­ÜÕˆ˜M‹C‹Æ ß—}e7–g³/rˆ,iBë·fþÕì~ÙÅ;æ(­9¼¥õÌî÷u³õ‚0Y(‹ÂÝG]™DQ^ |:stˆ«“¸ÛhMQPÆäøBÇE`Ï™9¡„D¬º›Ã]°×çèÐÑ&¤°†¥Í‘@àFq£4¿ ¶V(kòZ €®|*ø¢´J²§åê£\Fãæ»ÀY„J‘ÜçÐ*niÂô*ò>azBÑ„³äŽMÛ¬ÿWu­gÁ\H¤‡Ú.„´XRHsnNžžBK½-·D 4Dzëa9ÌxaòaÕuáq`và˜Lýa7ôE$JPŒÙJQ–ÞÊä ¯Ð›OƒÐÔ‰yûQ¬Ë9Oam A6n›DÝ‚%˜"ÅS`]¼-y>È’éÀkÓGŠ&K^Öö{¤$¼¢í†È® *§r2.Ñ"ÑÈÂÓÇ$~³4ó)¤â* çR4EJEE¸æH‘ñf(‰¸Â€}I¸¿‰\ li& ù“j¤ðžË¬6ü[]WÉE×L‹×]3 ep‡¯WêS¦œ$UûªûdÀ,øF‚ ‰nY!»mgpΊ.÷¤HNLßÀ·*C†´Å'C?ªî®¡ À;ñ­PE¹Ä˜‹ÊûÛz™UQ𤽠a)%ãbÉ-¸$A¨ÌâVBDÁ ¥Y°x6ä1–˜ÐÎìf ™žŠ<Ù#‰³ éÖ#î¢ÇÉø0—™wb@ó‚ 串rL16zФ+;qm¸  i0@2j`v!ñ±œÏL.FŸº¯#Çrà,rZÀ²‹ôiNƒ7õ±p"«•(Æ ºP ©/ïª`0Ϋќ ¼ Bñ ‚m±c„f“¾oÖ1´‰€G5ÓÃû]Ù,ò$’)ò:r”(t.&bpÅŸW_7Õ n‹ ]\åÜÆ†nŠcêê»êÓ÷EÔ]"ú0hjI‹uSu¹‹ ”q4ØÝKqÌ”C…ÑË2ÿ§ò V55¢/iŽiJišÎ1§!?βSÙ¥CÒ ušmuÞTÛ°é·Øê±² !wl4ó¯QEc1ÃA¨œn ¥ë&’>ã®»BF<ïBù¯ ܾ­vUj]{Cç¸7KÀN¥ïÛ¸Js²©K|‘ƒÃ&E–ÈeˆU ¸!†ñqFb€g@ÇY¼ÅÈDÂIËeÇ/ø–+Wb§z.¨E Ê1êyæ©ÚMÈín\0q $¯œGFÜ®rG”YZBåŒò× æ×…ÜÏŸÊΡ™pW&Àçš71’ 9×G“[/c|HúÜ*@¢Ã\ƒö‘¤µÔ ­”  C‡‰öýÐvå?Àh46´÷·1ÁJàM5šG„@„eªHni’…\PS 5mä Cu.îãôÌË/üS†Sãà&wц`påT,4ÑKj*Ñß¶‡]¨x(4øXS}I¡oÐ&ˆ5d™Ç"+ø¸–ÈG¨•I€m†è¦¬›"BPÒ„qŸÌÕ#à¨FØ‹iœ4]~¨ÊíÛz5­cLÝN^þ}J3Ä»ªÙ¡5u¹ :<ø—Љ£?ZW° ¯gdž(-tÿ+]{.~We†À}Xœ¼0Šãvã ¸ÑݵÄ<  ‚Z2Ø&Îþ‚”0X>ì£i†ÀU}'º%7wT®»õÓ+Ý ²1*°PÈ„Ài† ¯Ì÷·i7¸LzÞ'–ƒæš3ŒÞõßS%DX޼®nn¼K‚©¬4ì ¯~Êáàf͸¤:È,–RóˆÐNM牢öB€/ búÌ’ 3™ej²{m,´_Ê%a(‘5¡ ¹ÍP67áœ÷¡˜²–^¹|ßÖÍð4¹9†ÆFÔs°™xöÄ‘ |7QýLÕ§b½ÄºOÃ%›z›)¬£©RKŒ6²Ç\òÙޱ€Àq‰ã€GoŒq &PSØW¤'ü÷¥ž8–䘌\å=ÍÕRñKÄLJTH‰\`å×ä)E€Þ‘}ôiìzôð©Cý-ð«àìD†ð4% À0]µG€üÓÒ5llb#5uÿ°—Áÿ}9gÔtħ§…ºò‡ŽMuˆÏП œvܶC¿o@#d±o ª1­ .Ô4´UO©všY±@bO[c÷1×_áTiQ¹ë›c§½ZXG¡78‘…ÔöL€ÓXOåx–îYË‘ê#@~ZŒJ&¥ûX棺Ná·þœÇÀ‘:V C¨ wq×ü­ÝøžC-5ÕvÞ´(p$¥ÅÇýQ áGl}Ü;ÿ 7’†wŠEu`œ§Ó®6Ù¢`X¢~}JÓ®þžw8 bÄV€åøÌ•ÎfþÅÊ‚TI»0lÛ¾‰ª<›Äá,#8šÃÑǨ1OT9ÚÓ6ÛÚu¼Ë1h;8ŸNX·§ÐÑꕬöâiéž¹k¬AÅMúˆ,à§<+}d4hˆ`S§ÙbQ} Š”¯†JŠ_æú/…ÊÅ[‘bÑÝ :ÑuÛݕÉh°¼p#®©b‰Û–4SØWüeÍFJsƒ“?… N¦çGÃåc½ -„¢Sܾ¨æÈ¿ª€]Ýtí!LQ$JŽæøÜ. «]»l¦F¸:-,rûU¹‰3š%þ7?ÏmA(þ€Wµ‹T@˜yô«ø!* U²«¬¢ÂÇ“„C_2D ›Ñìy®?yV¼–ÎwidC(*šžöSu+”Òœ?©ÔS’͘1%ÓEx5vÌßÎ]´ð™OQ „árêÛ¹W꫟¹?ÿÆ ¦endstream endobj 623 0 obj 2747 endobj 626 0 obj <> stream xœÕZYoÇ~'„ü†…_"ÜI߇ ?Øq ˆÇ&`V w‡âÄ»;ë™YÑÌáßžê«z..)FfOwu_}UÝ?­HAWÄýÄß›ýÅO?­¨K¿6ûÕçW¿ÿVë•*¬æF®®n.ÂteYÁ(]ik»ºÚ_<ß||õw˜oøpþÚÏ#bµ†‰Ö®WWÛ‹çoÚ8Y 'ëÂrÅ8làæ|æ¦ÈÂpnUºîzÿ!åaÄÄÑrÓÇA ˇ±/Ë4‘•&nïâ(ìIdÚ§rCªÐšP‡þÔoýMzý2fYc1ÀÖß KMƒVêã1^’+W5§Ñg‡º»­¶^e‚C¡nƒàj„™òeg ¹ÇšD¢ªèBhðbÂ!¶Õ³HZ\n¦³.ÖrîKœ-óÁØ {°HCÁX`ØdÂ'" YïˆÞ.(r° Æ"‰>¯!(y‘4œ?ï`É ’¥!˜À»*„#RÎICµÛ]FBXæ‹XL-cbÚÅÖ¶-˜Äø×T’`«¡LÉ€¢?k©œê©¥ªümý.šF¹òcYrÜi[C©¹†âÅñùä`áÒ X D%È ä ×UhØ ¶Û0%³¹ëTFÿ TÉÇ:÷ §FTŽî‹|óqê_íchjœ‹³¨0æÚwÓŠyt]‰Ÿ;“sôÅŠmtƒYÇ®µëÌ`ã.dZ(6Õ7¬È¤õlAf%yŒKødèZŸ#ðîNÇc4ŸÖ¡MÛGZáó'/ÍWñÒBQ¾ÀرÙoG—°îÉLÝ•ç0X^à9רÞö×Õ¡l"e°:Þ¶ÞPê×íºŒ&Õ 9dÀ,[`K> ÒjŒ²ÏËíWeïFé.¿±D\LÆ…Rïâ}¾ŒèÉmî’u§]ßE:êÊvê* ·<Þ¸>„hÀ»-Ñä%D‹ùÄ#h&7wÑÂ2`šbã‚eÖæ"3'FÑ]îº8&rÏò~NÙ›S´ŸÉw T€¤¹]²Ù¶UDAfÆ€ ùN(µP#o"dz%¡ ¢ð2õ®îoc>„:@9O_þºRj<ÃrS\ªÁ"3ÓÖèÏ ˜¦ s_7D*ó®ÜÅÓš|«0@å|ï•äbïªC¤Çd’ qp¼"xkÉ.Fó>€OO”×ä¸}޶&tìaI`G07, ¬ø’Àyt ›µOäviÑ8D–vüã=DþßèX©ÿÿu6õ“ÀjÝ .é^m@ §Ô$ žËûUùc• |ü¬ä¿8‡¸bê p>ú(¨€ráá õwjöÑíÞ<ÿòÅ‹«øê Jt‹D{aÓÍm›ÖÆ+ã/çÓþ6š0xzt5Ÿ”I-sY¬ÌEŒ¹«·Õ÷Uù.t!Qd2¿pˆ×£ä:H¥^—˜aCe46ý›ñ9i-*Ò]Pãþ ©µc«¼yþìûÏŸ?%—÷ðïîSª.oῇ€ YìO–RûšCååm®Ýõ… ãUz³Dä /}¾ïâè\~átþÖV:nm!I ͤ%ò¨„‚$ïß»]lKñ_…'I $ŸÐä×ÓrÒgüºù"X×($t”€ÝÏ·ƒ×ËÝw¯Ç±£^̰L¨_%SiƒŽ¾Ô[¤g)LµÈWj¡».¨ÌôþÐÕøÜ ´­ªä>DŽdëÃLñò“‡t¿ç!ó§=P‡ ìiŒÓÈü¾_‚Pæøüñýo˜\™m¬xý 6í‘ /šþxµúË…ûùTÄúendstream endobj 627 0 obj 3387 endobj 630 0 obj <> stream xœÍZÍŽI¾9ò}Aò.Óµùÿ³${whÑ¢õŽ%DMwõL³=]íªn{‡W³/7€¯ÀƒY™YÕUÓ3ƒŒ„,yìtVdü|ñE¦ßÌXÁg,üJ?·goÎÞÌx·†?·³—gŸ¼òbæ o„Q³‹ÕYü€Ï<›Y ëzvq{öÜ».þ{ìõ¢pNÀþ‹åÙó×a …2Ú§¥WÕªjªí¢ ÿ¤eÁ 3éŸxÁ£Hkg¦ðV:DJPY‘÷NIÛí]¤Ãeç\Ü cgóÁÞË&m6ýͶðÒ™Î~Ñ©S8)=ªsÕî»9()˜K«åbŸ-ˆk¿(q£d—ïÒ*œÉ4žÓ™m kÇ¿Ú/»}|^âÞósøMuš¿çƒÆº`£°3+}¡ºh|÷—ßÿáw¿ý[Ø®Jþ÷?¿gËîþñ÷íþº|ÿf®—ï7_þµ|ÿ}ô‰°|Æ9ÄT‹£PŠ›kð«ŽÁQ¶°šÂûâ°¯_U»Î&Y'9šYî½=ï>€ucÝ£¾x¿Pã ×_¿¬6›¸Î ÍœìCËÖx…¿>TÍÝ—ÕÝm¹›‚æ\rlÕl.,èdx÷ÑEØ WNª$çn—`k™ZµŸ&‡Á’¡FºÎa|DêB›,Øû¶Üt\á-v®V0« Án‡íºC–…òˆƒùÏ:Iªà’oœsÉAïÙœ3@5ã;{KGs‚ê{´g+nOœâGgæœYoñHÍŒxì™–óÇØÛC-¤ª¹Wu½mܬÛñ×—Ï?ÆÏ™@k„6¨›ð=‘m÷¹ƒer_~4 YaƒDø2€/P,lþæn›ä*kÑŸûò»{ UMy7„è—ÏãéC<þ¤s:® œ>Ä2}ŠS™L_Ç¥J:@Œ=°«šE1!!…ÐI¬€zøˆàK@B+ò5úi,JR|ú0!#X¡9ý³GAá Œ]¦”Íõá¶ê£L!9U“}¬sÁ è-!PXÀ¾hulÆY‡ìüÐùÄ(j¥û¨Ê°3 ±¥FòM¬[p™X-Ö?¨oL‘N7UjMЬ´o;Ý¡œ‡>«7`SúZ;Wu“ЮŒÑ#™Ò*¯R[eù¨R*ç€K¥$~ýîfݵtî Ã9fËMXÅ=i´(#ö-$ŸÄ7åöºB—9†'­šú¶[ ×hûŸ9ciUÙ¬}|§˜¥&7vgi´}½]líúm˜Ñ¹ƒÓ]ÇÁ.¨póˆÜÐ4úŒF#z}kdm¡û’£^UûC³mSž€@qäØ-úÿÛqL«»+t¿&óë²Y¢«2zÚ}¹~U…4þPªÅ¾n&ͼ« CØ^µ‹f½Û¯ëí§“¸éܘè3(]£Žö Àˆh\Ÿ_hPÚa,»B7u” Há¶Õa»Zuî…"j9J&¯Ƙ¥ · €H JÐaÞD%$p=gLÖ"åˆÖNeøIr÷¡¢YÄ¢ã“v=JòyòÙ=žt*׈#O*j÷yòuPóêIp :hE'=ÉAšô—€VC|hà/൒LmÖÛëè/ààžÈ}¶ËsòÀt½MŽžå‡°UPlÙØQ=O. NB?ù˜v—è¼´Ä©ºÞÕ â X®ÛݦLœáþ»¨ª #`Z:äžYGn[¯âIÀK*¿{­nÛõÕ&–ô¹Ô&63ä1)ö5ú±fÀVIÅÉv <Åxܹî¢g©À­Mµ)÷± …iÆ ¨¢ÉÎrC½M@%8nÖ¶y~º*Û*5ɬy²ž9ý¤%ø÷NÊ\áÉé62I”ð—+tçãtèY”t7Võ)7‡¨:`ÊfªpBõ¹´P¨Àuî9™ÌÜÀŽ“äxœ|Zf²M\J­ïߣï-%‘Ûz5Í ´l½M†y}L @$'¸÷é’aÔ¶zÄ#†àqÏÓÉÄÈ âj'ˆÑ9†‹Q–Suä9²ûe¹üM ½uî8|#Æ ®(M ',:çrÊ´‡Í¾íð$!Њn[.(Р·;2Nã_xâE©% –DLœäµNj7Aß²çN”sYE55·èÔTyÞÝ$8Bïw´:ÙŸˆfH2ÁhÂ9f8Çs:Ñì½dŠÐ¼ÝV×XΔ¨ÛÁ}Y¸s¢‹Ÿõ=710+CǦiÓÚú ›ó¨„bÒ¡]—yëp2oM£jxGPúd¼“e0¤þø^©Sàžƒ>Á)Ñ486 m{­2û £U=jsFñqQïaè4Xs›x¬fê œOk€O+&¨¸ô ´De  R¡ < UÆsªHù_Cu ?È¢>Õ ñÂã"¶*i™GÔ)¢w'»ˆxäà\º¡ö¬JûӘʔ„íž òz•º—£‹ŠG€÷<5OðthéëL _#vM’Ÿuf~™h†YßÓ#@ 5Ÿ%ª5Ë[R­©7iÜp.PÜ¥£{„×1lêo£‹ña|-¡ÈìãÁ+DzWº’š\™â®8¥ÉU¼b tN¨”—. 8kÇT’[ºzÉcÄm7õõz¯^;O/ ƒ» .F€ÞMÈõf<øP:?0!JD܇;q|+Ž‹4••Üàó«T.@–´Qˆ… µŸÜ[¶©¢ GÉ–Bð'¦ŒØæDÍ™âäø[æ{¦‰L©ãÀ‰\oÚs䈖ìQXXª¾*$Ð’£4w\Åñ“#i‹Ì3L¥È,x(?¿ ­“‘"sEâÒÆˆÌÐbË„ÉÁˆì·fY5€šâRƪþE¹H qNŸàukÒ‹I¢m…©¦³Ç–ö¸è¾¡Ñ‡I–/4—AûxK¬ ¥9=6XK?´z-yQ7Ø]êŠ2—ž¤ÇȆëK,n2ˆIeh4­OtàÅΊÍxïBds—ü z5À­­0AAŽÐvXS¿ª÷Øu­˜2]{ GS8NW)à cšØ¯@Lç¨b¢1®Ó–n(,ËêízÍåÁéÓÒÇ䋇*yôuæSB抻TªhÀb³ŽÚÇï `¨ct“Vîv›hmd0œeß–@ªÏxžÒ$yS^£Ìwÿkw7)úVS¸kÑÛo:¼-c¾ùqÝÏwÖxíŠ'²‹Ã1È4¸z÷µ¡'z¤|¾ÈŒQƒZ@æîš˜w*Ì‘XÀ & xÒ'нjê?UÛô”pô:?‡* ("Ô•£ÅÝã¼èòið8î?ÿ¼Ú^­J˜‚§hÄ\Ã!Â=G¸Q’Öeš÷aÞǽ‰ O¿Ùfå:I†‡¾÷M.#½G½üjËz¯½½HÉ£ö~q1ûú,üúƒoGendstream endobj 631 0 obj 2636 endobj 635 0 obj <> stream xœ½YÙnE}·øˆV^’§¨}!É$,‘„Ø"F,¢=Óãt2[zz26/(â!>ñü·ªºª×ñL°A–l«úö]ÎÝ«_%‘ÛŸêïx~ôêèUBÜYø3ž'Ÿ½ÿT©D"£˜ÉÙôÈ¿@C%$Qxp“œÍîß;{ôš5éGŽód„Fs¦’³ÉÑýX6‰2LR,͉%H3fdut±.Ý‹„!L±®NÓqY*`ïÏ>O!Ã2N¶Õ)ÈÄ"ÈÉì‘DJa«£/ʉ£KScÈ1üâ•æ&1ÈH*¹ÕœÄ5#é¹{™".Exûi6ÍŠl1v¨/q0Š âYÚdIŒB"*iÌØÇð§Éˆk’p´§× §€F\©H™^}àYPA <$ÓN@Ìq XYê×é¬b¡qTt’MÓÍÌaÍ’”ŠêÁ‡öÀLÚóϲòQM/$b:ê²*–—E:ï3Z®Ê|é”gi#‚ã O© h.'ðÐEMq¹™gŽ¡„Ÿ–kgÿˆeí¥H*E:‚»na {&§+ ° á(çïdk{L5R:Ä@ùܹš(D(W}û°¢c‘Î34h#ä¨ üÌM¾!m•fw£mÓMiIökk°E«í£l=.rg¹óåÈ)Iš U§ŒFLˆ˜píêZ* ÔçY¹)Î.Æ+“=à áÂák !ãÁ¦t¶q„–+:]UP$––A– ¬8†°ãáAºð¥$Ñ18 º2Èóqkä&ÆFY\W5KsóEUbp¬0ƒjmÖYñnp7åš¶SÙ=èòâÐ¥þyZ¦éÚ»™ @óO‡\æA º¼½7¡ h§i>óJc¾i¡3‚Kh1»gìíÔeŽ8ô Ö³|1Y:“ ‰ƒó·ëÁ, 3‰€X¾ö®ÅB¹*Ò|MB2‰X®¶yù<*ªƒô{¡-eô *#€ÙšÖö…E#›Ü«¢E‰Ø¥|ž@7mC/·}64T‰ã…ëÌWo~üé‡ßÿr†ÇZû·ªÀìÅ/³/}óÛwŠ?ª6ékÕA³ñãD`wܱk¤ï_\¡­s–’†SYZfÑJ#BT ßW±«‘ûxœæóÕ¬æDìk,rnº,±}ÒCJì™Ó’MÇ&q½ª|¤h´%[ïhœ ÀáôÍó†é[ÇKa¨2$xT¤Ûôb–yÿ@±Ž‰0úÈqãˆàXÁÏŸ,óEÙ´O³q™..=oÑCböôP„aÈ!6ý¡#Ù,÷å¥ì›1$ AHoRÚÛþp–®×Õ8ÀÉM|¿É×å‘#"­f^i˜Û¼±§Yé圔e‘_lJßè ä&&!ìgùÚ©LôXD†thºôi½ )AÈ~o7‚Ôû¼­Æ-|nhìZù\jú>ç¶´µá;Ô•ÿ&6†Yñ]¥=KO ù= žŠp<©Öôº™W ½ÒVÆ´ƒæOhÑ’V À1½C›©âh8Â8.S-(ìšP6 ¯¡´… ö§Ã¡ôŸäWÙ¬W¤.ÒñËËb¹YLâs%d­l¢4Ðw Ìð[®(tÀE½a»_8øk'çÁÉ?_äeî}k'Âcü OÎë0×ÛŒëŽÎ”}“°mhäž–ìpìçVK·ÊƒáýƒaØ?\_¨·%ð\5?7ìèú² §åýð=jœA®®z• .° ´`>(€bÇÇ›— Œ—Ó¨­}µD̬]ÀïÀÖ&WWõ P(×ÛVþôCÆarW!êÄCaÇT±¦x÷º<Ùœ"Nœwçþ8Þª0:»Q?¤±^ CªîÒmãzFœ¨o @3‘ÉîãÑÕª -ÉÞo5|º³@±%×koÙZíp¨nRÊA–/ÑÛ¶aïUœ€$9…œ †’á·Uó~¹©Ê—2v÷tëzæ&¶¡vŽqÿx±Ú”_mJø=ªš!ÑÞ9î ,3&îÇCò@Sè^ª%o1»ÞÉRÙ¶¨ß±GÖ#VƘJíj1\:ÏQ(ÿu‰¹þÔ!G•ñB¤XΟ8J¾1~<…A“r§Æ ¢qq^„Ĩ˜‰'U‚YÓáp‰aÆë\¸,oUÜr¼úŸ„vÎã&0ÏÒEÌ…i' À|+f={BäÕ7@þŒÆ&Æl™¾t‡ éú‚Íë Ý’“èà)ØT±”LvĤ²é*Zl ¼I/w\]2û©€µËF®ËFl¤7^Ì”êßÒ‰úºloáõJæTò…ƒAå2݈3ÑÐæf $î•sUwŽŸ³bYÅ3ѵϱ½ýí_© JdW, î›MÛñö̰Î7ùLSJv}³4ÃýkØæ•õ[ùœÚ`´_Oš—둃ý?F ÞZjYºÛ¶ß]º»]KöÆ‹³ò“³äë#ûóÒk¥Lendstream endobj 636 0 obj 2009 endobj 640 0 obj <> stream xœ­[KoÜF¾ ùB.I·ß{pìd7@¼ñÆÊÚ‡\¨ÊâfDNHŽ-öÇo5»»š¯™¡† š¬GUõUuûk’Ñkâ~¿ۇ«?®þ¸¦ý³øÏöáú»›«¿übٵͬbJ\ßÜ]ùèµ%×ZÂsy}ópõ5%ä››ÃbcG‹-ËŒ–ðÂÍîêën e™PÒ†G¿wESTÛÂýIòŒ(¢ÂŸhFý'µ¾V™ÕÜH÷I:+iœêÖ®ûµÛ œWnXF Súz3Zû[«ábY®²_öêd†sÕ¹m»þE J2bÂÓ|Û…‡>ïŸý= 9Qñáî)<™DF9½Ù*Ӛиð§nׯ“à‹è%j-}¿Ä’7\ŠŒ0“Y÷mÙ¿òX¶Ç|ï×O6ØŒ1>ýîÐK£g,*µ-¿(Z÷˜™ÌX!Âóî¾W—êŒäÀb…Vô^á™´ŒÄÏ>GIDð(½ÈÂ3KÑØÞ÷”dÆpy^H}·ˆ9š J㫯ê^,#‘4*ýüC@"S*îoS?¼íWêLèhrØìÒLJ-éþuÒ¹&ÀæzãlRàR·þ¡È«ÞŸ€]¡„žù“2|82Urö‰þtt¦™EÜ–mð'aw2ÿ= ÔP„­·ž1­ãËwà•^MØT¢èú Ð(%*ž-c@(%`pÎ7ÑÛùiÄêUˆµ™0vîaˆä¨ýS¹ëî#º5b,¯v(BF£î‹ò£_Ë¢6®í^DŒÒ¨ÂÓ}Ù'!j 4b¹,B˜© g˜Š’(d ÞèŠ^).áõ¯vu¯“Ì$†øø«Þ€4|ÄŒXVm¹+bqõÛ•ü©öð”àS¡øØ!`æ<>ô’©È˜ªÚ§@“ƒ*«íþè%rõ;’Qµh*㈞ó¶ºm¹ 9›0µ­›Mð‰qøûdW4í28{¼‰ 8>U+£ 柲 Þ°ˆ˜n ÀÆ)ŠH»`b™™yKpßÿÓ=ì*ø™í•&Zÿ<_·­= •6 }´++ð~ÛcZ¨ŒYüÂYPS¡V¨]q#ôœò]}Øì‹».ì5@9v¤EA¢ã ÛÖMUôE”S—ÍÆeVËç0Ó«±¤1¡ä𒸤¸ßÉó–£F)ÆiÊ„M±Ï»ò1Ô¥quá÷‰YepßëP ´À|ŸLRß¶¡#l˜†La¿Xu&É›Á !õÙµ^„Ä .¹q9ìl+wm ÙERž 4^7À&§i‡ƒ×E~yãÕu!W…" ~`¸Å·^¼{b@~á _LJA>¤7¢­Ïy—wχÞgƒe1i}xWtï7ž^v]SÞ;ÁÖ¸úwò¯>Xá&¾øêýwùö÷·åŸy¯±vш€f‘Q‚éáu“?å·{¬QÒÅú ÑæVü÷Œ˜b¥H¡ÎH)«E×è·sl GβÊíû¸BP²E±Ö°ÚÛrF@Ùý­ÉËîyÝŽ {qC5§¥\>”s–À¦—ÕÇw]í“Ðå=™¾1Þ—‹ƒWßîóʃßIcŠ®ÝÎÖl~2Üýóe¬1äçÇ¢i “þRìʦðM“C„>#ç¶®÷I¥+Œy—?¿V;_Ç.ÇäXª üþ±¨º7yûû: £åBg„Ú˜¬÷eü¾1¡÷º®º·M}È?ŸX‡†ÕÒ%]_¯ê}Ý rÑ´UË®þ½lã«cÓÖ¸yúœgÓÒ “î/¼ÌµºÁ„Ó¥e‘Šf4•Õ…’òºûµ-îŽû¹¬x_ToòÃÁ3n`ýÀEôéå/÷Oùsh.€üp)×ÚáËã«}ÞúþBAg®N[½úó®wl¤Ã×6ÀÆ•áê"ö¬Çîçc¿‡/û%ë^®öÏøê¼/ë$l9lgæÉÔë¢Ý6塃êÛ%âLÂR¥úNÿÒg`ÓÏCçi ‰<냧7àlŒ¼ê»¤÷‘€AŸøFv»$0 $/ÆßݱÚ:M{ M)ARçû/Ïny¦Sÿ‘LJ»fÝ?;V3‡Àß•@=šú™NJÚãmø€²$5àË2°x¢U\yçܧ5¾ž{Ï DÄx{ðû©¹F›ú–j»ÅrqŽén¸‘™ShD˜O©û"˜Ë-‹5¼)ºcF=ͰÖï\XÔ·àuÍqûóýÑ7 L6sÉÅ\Èy«Á”ZšGôï¥Dt`ˆ‘Ô- y›Û"¶VŠi;×"9ÉωË>q][4Ø|$86OZkìHë°Í®œt— h.CÝ‚N@§"_Ú:ÈIÆÚ¸Ä‡&dáòîyio”uS—¨Ù£G+× “®}·8Ðð£3ˆ¢qrrì¡P¥ãñ‰ák#M¦©3N ­Aöù6|üİå­cR€l…ñãǬ€]hÛSsÚ?ƒ¤i±PÆM5PÑ0³µ]îç äDñ®úíÒßd¢Õ7½i ª,Ê.ŽëúñóMÑFíˆÄÈ ,º÷!ÄåMqß–·{PÅ7­ Ð'@Ú—2:s°Ádpªû}çÀ ÎãòˆƒP¯³p ‰ß\ª[“éÄ€à—ø°ÿFàôôÁ'ZB%&Úc}f m,Fêm´å?ES¿‰—Z»«#â|À²ˆU©gٽɻ4ªƒÑ÷‹ud„ ¦hWPGäX–ã¾ó»Íݧq@þƒ·S)Žj öÌà@m{Š?@‚ÙY™êmI&ˆõÞSÕ”ÎÜŸïHÆC…=›µwÅÇèL«ÐÈh á±  É‚£2¡Ösçmý‰„›*R4äÖ0µÙpÉ]½ok{<ă ­è y“i;2EÐØ’i9r)ŽG/ý+ŠêE(ŠJ0>F†;ÄÐ;QHŒLƒ¿OÄ5ÍÃÙ<â"ÛJÚЄ"#ˆi‹A5ĨOû |Šá™OUG ð‰ŽêÆÙ¿êqjk¡âQÍ'£mÈîª?éìwËùªwkþPK JÆÝÊÛmJšùÉ‰ÔøðÉ‹Ç6’$ä;ÜU1Ÿ\¯ø¨G­éљĩ¡ Äy:9ˆ6¼‹ÒBˆ -ÓñÝ…¼nùt’U Ä™”5ˆ–Ë¥F»C ,_!a)ÉÉ8,›„è‰ð HÑÿ›ö¹fv!<(W ÑÁû±|Tõ\º°Ï“5Z2iV;Î8ÆAÖ1j¨ŸFÍ©úàˆs˜›¡™[Qеëð.åf¤SaUÀ‚eÔ:::ÙM-ý8tÀ|ƒ0.¡ÐâÄ«9Á*p>“Á=…K)MÇÒ÷uÈ“l2Rq'šg‹­[Ã’§c²‡„T!LSð¥ ÃØÛï†%L+µT“4V.O˜¥+»K«ÚãÄAL¼B$ðØ`dE¢ ÈÞL)ÛÃ>¢s ¥×ã¤RslOû:N5!R„Æ Qì~ûfÎqÂ4™÷bƒ…Ƕh¾Šwé\¼i;±U¸{‹áQàÏ8[n|bâ8תçtð¬;€TQ‚drÄĉ‡øyCÛNyšãí÷‹\ÈEº0ñáM~H3l×3aP-ΰ’ ß2oº¨‹ù7‚\¦‹CUñ4xœ,„ &WPhÁœç€p“ÒQœUB@P#¦mˆr™ ÙEìb PEa[<r7}î|+8K³²²‹ å§îÙ¡¦iwö3ªÙñF%8MÎüc9[ÔM¼B¸ iÙ±.rærG(SÔ&·+¾¨Bž€p£d:Ùw|JÜÁ†XД¬jv¬;汓)ÜŒ´Añ€¼ÃÐ ãÆ)zÝéDŒxí J'{³Èe3B«ã{TšZWš[ÊÜÃé¡„5ÇîÒí¼˜?*p¼b}z£4¡˜e„—á`ÁMáu¢Í1W*2¿\‰=Å à1 ¬öE¯¶¥X,»°WD ½‰—ð4' IÅi€/cË,®‹ÁâΟRE®¶EÛÕþâ–p¡1»£¥2ÁŠ@¸d€tI8Æ6Â’sP±û²iêØAÒïå÷7×ÿ¼r?ÿ‘%å#endstream endobj 641 0 obj 3591 endobj 644 0 obj <> stream xœµ[ÛnäÆ}‚|ÃÀO aú~q€ë N‚xØy¡f¨ãÑP&9++_ŸjvW5Éá\VØ`-–j6»ërêÔéÞßV¬à+þ¤¿7O7¿Ýü¶âÃ3ükó´úúîæÏ?Y»2…·ÒéÕÝÃM|¯¼(ç+k`åWwO7_nþt÷ïäxüzÇÔj ½SÒ®î¶7_þ»MƒÍx°-¼4B˜waˆ.œ”Þ¤G÷]?¼ÈeÁséi¹éÓC ÓÇg+q dn_ÒSø&Óø*<2…µŒ«ôèÇ~;ŒÓ3>=ãÞó[ø¡ÒÊýÊÞ£ÂÊ•/”“< ýexYÊh|û§ê¡j«ýfø˜†å†›âSz1ž’ƒ‰µÁq6 ZK« »\ ö ‡_Þ=VK‹¬°B»ñ¢\!µ¦-}ÓVe_½¯ŸžwÕÏõ~Û ëf¬P8âeqe¼p4ÇÃa¿éëfJ_­ðƒ›aönø…,´´è›rÌUŸB#öOåóó0VF1œ¾Ú.í ܪ Gsÿ°>ôÿ<ôðó›]ÙuKköð5A_ë÷ëdN^mVkØŒqÓh K¯máa¸ç8ÏCÓ¦­ÀŠ)Ã#[(ez¯{ŽïB|zÚÙ¦þCܸR+ŒÆçÂdxª ð/>îcJXÆõœXæmŠ>í.©­úC»Ï® „ê—#D2þú¶¶Ä„åÒKÜ¥×Và¾ïwÕ’é…(œ6øÅaˆ*Œ• W\î˯Ü:qζi½ÓõÅ@L)ÁhÜÈk,¾÷…ƒÏ ¾I±¹M{õÆ¢«6å¡KàÎ-ÆjƒË޹)Ä(JºªvÍ-`aŽì¸=^CFí›ôÌ1J£Õ¾ja)Á”¦¸/—\.aÙ^1ÃÿÑôõÃë’oŒãcõ1†©´LbèÆ`„°W^àÒû"mÒkÜ„AÁ‡LðEÏ(Cë:—b0/çäܺôÎÏ»rg]C½(”ŒIG4PÊ‘³šçä)(òê=ù gZöª#Ww}¹ÁÊ!ÐÕ¿ÖûÃ8x…>Ô´ÛèÚ°5+òŽûÇá©‹k´n[Eh€xc:û!4˜@3u&6ºú~‹è Dß\ßí XÈ©ôì5–Á ZЦO[‚¥y ÿ'ÞÈ*—¼HvîKü TP|½ú½¯öÛ.úQ(*|æÇCßÕÛ*Um-.°î»d Îõh/'‘ÓAðY}UôñÍn}C€ƒ7»:Vª`4«ðóÕ¶H à¼Â…bVðàLŸûDlÁä8h~®·1F4Ôx&©Â6HZ4³ ±†áv ,Tub]Üï^OVE' Dý.sUd@É&Î@váCžvÊ£ž¢¹Ï%íÐõ˜;ÚÉÓF¨Ò«>GØ«¶¹M>åÞäÃÇÑÒ‹`è 3ª¸_—Û¿—ýÇJVi|÷q‘å°‚1²eÕ¶ñ£°+=ò÷°ëcþÍ?.ƒÃü„~6úå)êýcÕ¦|€/JIùuxÖ9½Y=÷ƒe%D±Ê¤-„J´8Lf ÕšTªdúó±îån ÜÀYüÐ6C`äú(i“8Å©¤-2Øá¬ïv;ÌIëj˜Ú´\(¤—¸QŠW+‰#”}ßÖ÷ ªÃ®È3¨>„P°S²’²Û÷©‘D*ýÐ6‡}*K¶ãg”mè%·§ó`ƒ[b†„åq&:å²Ü4¤LÍè]côJ‚ùmõPBôor~:霣¥2à ¨/ùáa‡`L®¨Ÿ1ôEÁ•¸‡²Þu ^efk°Ù}Š>! Ü¢+S£2_ïZ*€ ?£¿ÐÊ":\Ú"–B\BS‡ŸCÚ⽤ Þ–u—¿+9X‰€Éq_` …Ã3›ƒÊ9på(†ƒ•ªí)ˆmž,–€´ »ÖZĆÝét+À‚£)`_ƒ),ä4‘Ýo+èÈ£‰€1KÂí×l: &ʼï6‘0q†÷‡û”\ä¨Àie€aîg™yRªÏB³l cLÜÊ] ÿ†~óúŒ\IÐÖªî«dxºsh==àÀ€Å9p÷/ĹÜѦEK¼ “AÊ$¡'´U/Ø3)`…‚Zƒõ_(‘Íþ2uÍMè²´?³”W–ìöÒÑ*io[ű©ô•ƒ]‚¶Âb‘yÿºO«R–ºÿ¾üý„euàn0­g@·Ž­8¸°%#tjÊ“ÄÏþ2˜ ŠžçÉJŠÛòÊ##wj£sè¤ԱɎߵO~ÔON!ÖGÛ¯Ty6) Ú…âd„|qL±¿J£†Lèg_3EGZJhÕ¼Á´AðÅPþ%­XYb7gÅÀ/5ë—ƒøDls¬¥(À‘ó½ƒ·Ž£¡r„†´'û½ž–V ’awD?FÒ õ¿#i…Ð1V§¬µ`÷9Åsê'þ9¾úgÓ*ø5Y?4^‹©³Ž#,}ïB ËÌ)»Çæ°Û&÷JO™¼€@s. ()OF9ÕZ(/ž ¹E9}›8 WŽZãe½Gª:ZZ¤ª¹–/ÈÞ]R q³œ¸‹X „œõ»BjZh’c×|ŽÝ¡UÎ2˱™Ë\g€¦AÓ§Çñ³–ÀἚy–´ ®)×Qtì6¹ÊW[¤iJ’° ?¼€D-Ý”ç•ü çÊ,•úæ©ìë Ö` :vœUFmˆÿe=Å0Y†~)iqÕJQŸ– /œÄ°™‰ZWˆ\@Þî"H¾´ÙkÓ=µèNAÏžHÑɸ°FQÔ(ñšÈ>T³Ñ&“àóâ°Œ$–ËÙY̤§|ó1cÉyêXɉʬÐú_)ìÂê¡}$¨:*÷'Köàïiëwá8öâÞî[ %‚Ï‚~â,,Ž"K žv ˆ“F‡@€Dœ¥í ®nÚX3Ý€ïóŠ®8­nÄþÙú‚W´¡,_ò N•@‚+é®ò˽þÜ6J¨©idá¬<æ‚]{\0Z?šj÷P$VÌ5͛뚞)-iÑ2¨dDóʧ&>^Kvã§NAá}xjš¡ïä$«¨K)7mÓUÏ< ¨Öc Æi£(©Â™® ~ Ö%Ù4øà‘Ïjø¾é“Éòiõ ‹½Ô]¤:rlµM³‡€™kmŠ, `‘„<“~æ¦óׄT8WÓ~Ræbž’ãÉñB³ëˆõpÐc—+Z *fÂå K\>BŠÉî Ý2‘á+ƒp—¶t›k8ö}ƒ´9·Ûç™±‚Õçèj©Ì3ö&œ+R;ùü~ ¤æ½bVŠ‚svÆN§ÈV).u“Éã#…Ô‰@9±DëÇ4üXŠÓš\>•«¿ûýY)uCM·xÜ2ϾúHsÄdè”à‰Û%½™ñ‹‹¾WjÔèÐY˜–~";̺= ¦ÈóÍ}·9´ KaÍgÄy`j§©˜~’8@uŽxçYп:޳(»Mˆ ʯŠÒö|ŒØKÒ#íô´t€ú¡ àq! fâ¦AWå3繤oû\”œ¤;M¹1ç–J?VøTL|:.! …yîíý1P™?_ìX¬”#<ÎØéâq ^=±¹U­‘ëx-ÏDQÓC'°î›u:§‡F@eÅýÒñ;Wtb;”ô"¹Øä^ó‡>­ƒg-'k0ÖI%f¦3!o§ZD¸›@jûY-‚…–’γðð^ù9eLÅóQʼn{†[ýv9p•}nZA¯†ÇðZpç\r;‘¯Mt ôHjOSò’žP¤•áSB2ôÝDNògᑯ¤\¨g&_Œè"V„ó<Ï®Åôœ}gÁ[q òrÓ°Ó&/˜ý¬=޲WÀ"¦´òÖ4bò EýDÄtްn¢ôÉŒA˜¼%Y•>£ˆ·\Pú”#c§ì —BÉùç8† *m÷)Ì"ÜB²KŠÞÌq6#mÆÎáz tÔœ‡ëpr¿PÚNj}ÆÌµ¾È ÃI©"ºŸû[\ïÒŽÍñNS¢+ÈT\Ô¶ŽÓš“«?nêtF¸ÕLü´ÚùÌWJ<ÌEñ¶ÚU=ömÐæqºòTâ‘SfFIÏà—Œ…¹íóá`³GÇXOÞ*±}°œ4ŸÄ¨¤Ãñ¾~ªÐ¾ù¸w‰C ¹’|ª%©Î o O4õ!zÝqXžVî\ÝŒž£M!¬iÅš‹[ÜWéü:ôbî܆¢'¡/£¢ú¼0ª…"òDdVf¶Õì#J†ã2+sÞÄûÓ"\*ÏÌŒ.Šf÷ÐA‰ÌÂ$ÝjsV·¶c[œ ŽÛ4ú¢KjÀ&|Œ[°”<^¨Í'Kfhâ.6—9»U§”|“¯ ½©Òmè"äXßwùòÝy}ßgo(rTô}­È#}˜Ÿ$Rqò* ÷Äÿ¿í‚ä¤<ï¦ÀVmŽ·}òXÀ×Ù}dzwTT¸@K,æÓï¦8:<ùwSFvd¡è‹¹ǸºnGíñ§^WÞ*Pú…ë*2…ÎèºJª¦&;~_õßWÍSÕ·Þ„«r¹N߯4&Ãïòä èc]î^†ÿÂÂÃÿ É ¯›-ùx Ý;,]á•ÔÇü¸òÆÊww«Ý„?ÿ*éRpendstream endobj 645 0 obj 3669 endobj 648 0 obj <> stream xœ¥Y[sÛD~Ïð#üFaìeï—20S -Ì@)M <äE±•DàH®¤$5ðã9{•d¯&3Étuî—ïœÝ~˜aDfØþ„¿Ë›“'fÄÅ?Ë›Ù7g'_¼3tf‘TòÙÙå‰g 3ƒgJÀ¹˜Ýœ<#˜~vök3!6i%€áluòìwKB(âR˜pô®¼,Û²^–ö“`K,Ã'‚ˆ©ÔL"£˜V$›¥ÐÖt£9SŽv”³1å‚"¢©T³Å„ö¼ ÄrL¬a’² û…3iÆL4ç¢ë##)Öá´XöáPxö} –ñpuNA'Qs["¥0‰„?ö+G' 1JÄ2‡_Ü[Ni²dÚùÉ8G’ÉÙ‚+\8ž»bíäh¤qŠéï¯ËþuÙÜ”}»}îtƒ“„Fo¾m‹ûâbí¬âQC#ãâk'Œ#Â’°ó)=8fp´øs{dÇL'Ýo›ªvÑbÊÉÒwå²/ê+/Y¤ˆRûäQBë]=Nwþ™=^0ˆ†Ä/(A†}nŒ¦8 qÔF‘»òr–A”%ÂJ{O·u0‘«‘¾øø<[PCš " ˜´”‡½<Ö6M?ß4]ÕWM=謹ÊùEÓ®Êö}µê¯ç«rÓ_ûàm ;Æô«f6¸7ª1WbÄ*ô÷{ô_ºŒPMó#É:lk1‰Û´8¾ÊÔR&ŽJ#è:±cÖˆñË|Z(äWˆ˜oç‹öêö¦¬C0Âbaô¾Vl™’ØLP$°"¼‚)¼ˆ–Jøpºqþw W¹¬>ñP“T]»ò# Êê´E¬?J'¾Z2"ÒÙâ;™dÒD<¸¿®²ƒ$!±¦¯íèfBG£–E¬K*t¤» Š©šàBŠš„«…—FÒ‘êÞ¦ËY#èÛ å!ÀðpÔ´a¤Å;ÀH¶©>Þ”M(£™+8Ƥ¨W¡†0å1ëÛ@§`ÂÆ Ñ*•PU¡aX5×C¹.RÐY”ª(cU~R—¡78—»ÑŸ˜ºn¼ ˜q¦SÇ À€à:Psú“”½¬Ð|Ã-ÄA¥a€cÓ©óP°‹«¯|ï’K:­u†,ÊJÝØlɇzgÌš‘ÁÎK"AÀ<˜Ž(S1ÝÆSÃúcb¢.]‚) ³›H;N`r»ÙÄ(r…–íb]^ú][˜Ô  w냩$"®m‰­\LokÿØ$å1­m¹†ÄÞ9“8––­€GZiû&4 Káê»= cx$%ãʃ“Èn»¸ÞK쯲mò°K˜@ð)NÙµãÐP”$HìSF Ï+‘aq¯`²w€ ~Ý€íD©X+çÐn°…¼bžÁ<Æd<¼.«+G K€!i†ÁNzh2Á¿ †\ˆ8ÌÐ4Tw <­iÑ\ý·•™àNY ÌÉ;A=ÀŒ (µªnBåð¡˜Ëu—w™‚~¹3‹Ýêy°*ÒMì‰U…:{$œgTŠ}~‘°ó)UåÔØºI wþì"` ì[T²ÅMfcjcYÂÁ=ÉÑËð™èœ÷ñ°¹ˆãL¦Ëùpå:X‰ v6X²'ëëá¥7î$ ?ó8+¹NTÛM€ 5̳2Yp@sLÈô"³*ú¢ßn2—U¿î¿\ïY‰8‰ß27„—ÍfûªmnÞZDïÛÂ@j´½V¯$ÿìóÿPonûŸo{ø=fö$Žö»ãÌõz;°lƒ§§—ÓÃÞþTlNá[æò™ñõ‡î×Fɦtø4½<å¬ò»ªL—[¸ËÂù1†ßFäP/ÐÈB=Ö•×mqWõÛÐÃr謌'¯šö .š‡‚Š¥æˆmoš¶¿~_v»L BñŒèD+(ú`^ãwÅ“”elãL¦ åZ¶Së`‹„]ð!ë2†Õt ‹×SCçxw¤ŸãCg; ZN´)¸à3ýˆ'×5ó(6jû…¥úÜ¿1Mwºâ¦ ÀÎÓB\tû„{õ;Õúyx©¢‚!-wƒcú@}S,ÿ¬ê«Ó¾i3 ›i£7MÿkW^Þº¸p®aG*ôº¬z<|¼XßÛ°oÂFîßMJÇ›æe³nZÈÉó=ôŽ_œHƒÎ®©—ì³lG§ËSæ1ëa&¿3,à[è´ÞßA !˜Oë>>µ9 Ìq•²äJç~Œ„/©vMŽ|PQ±Ê†WÓÄë¾NôŽõ’ê´XLÔŠq+Sâ1Bç˜ìñ„ë®ên‹ubÓ©6~sN­w&­}‘ÌxßZ3>FK;J3–Žö‚ŒÅ)BU?K#Ó½<|Øí§‰r¸€ÿö‹Q'<ýɸ¿)öûÔOöv]Ôå –® “œÙ㜠oíš™±!2w6ûåÄþü ùmÌendstream endobj 649 0 obj 2021 endobj 652 0 obj <> stream xœÝZKsä¶¾«ò#æ»jÅàýðÍÙ8ÉVe7Ž-{}Ø 5CI´Gä,‡#E©ÊOƒ$È™‘ä=¥¶J[…FwÝ_7ðyE º"î_ø}ñùâóŠcñ¿õýêÏWúAë•*¬æF®®n.üteYÁ(]ik»ºº¿øjýõÕ¯0ßðñüËa«K˜hàzuµ¹øêS&«ñd]X®‡ ÜœoÝYέ C×û~øò‚0bÂh¹îà†åýØßË8‘'nÃ(ìIdܧrCªÐšP†þÑo†y² ʆ1j-}DÜ®laSÂI.l! §aê/ÃǬJƯ¨nª®jÖÃfÄW$ŠÔ/iÙxI *–*JD ÷“˜d+³7^¿ÔÆšÕ%³îPr˜½/ªŸšMÕ}ã>²¶Óñ¸×m»}ã†/ãø%%…Ô[fÝnÛî¾Üá—ZDÞ†ŸÒ×î·ákÐÝ0~}×ìûr»­6¸‚@-L÷vãù×?öe_-ìý>ü´°w”6ýî¡jú÷åþ·=.ÁMt üÑý$tA¨:ÙÖûÞ¯L-ˆ4S¹žÚC‡_‘•£Ì›öCÛßµ»ò7Yž ;=yƦ‚·U×Õ›ê‡jSwÕºÇÅ©#“ø/‹'~ûï’«_RM ã”ÏŒ…X»ÛÃ}Õ ª‚S× i '–aè/Õ~ÝÕ»¾n›o–<ß¹2¸·Q$D„°ÃÕÝ€F a£?íBˆ Ý»Ý×na÷ge$jñ¾ºßk¦cD¸ž/PùA Rù¡z? pYm¾¯ú"$†ˆ¾ À‡]ã¼Þ‹MuA Æ—Ãnâ8Xu—ÛêfX@ †­öÐ{¡@á„Û8¼n»Æs2Ž>]µ-ûúaø@J£(ƒ ºÐF)ù<‰%.º+;o]Þ#1vö~I&’´u³VeThã”xÉ5Ø”º CÅ™?aWßÖMŒÆ…ˆMF—R¢êëÿx !rÎ_k_-ÀÉÀÚЙ퓾¤á3}1Ž_×Íp7d ÎÒª‹²·7A&A©<µì1徉Éβø}Óöá{­µB±ÖÛænn rðI&Ní· ¿¶ƒ¼Rx[*P×Þ–œOp iIHÂάó±ÞôwÃo ¼AÈ×Ù’Jð)X@„ØÌ”¢Âd®O.Y¦UPÎÔ³Ú͵ܞ9gøâÃUÃÉ£¾ä7ñD½cWÿ»Úî=:¨‹~qòDÕqpSípa +jI¥úœJ/Á`§ ¦Qµ\Pd/I·ÆëV2šÃD2w,¬ä\@VÂì©ïÙÆËi¤Fä~‚Ê>D0­Fîò!X¸®û}@©V"N]È6L@$=6×°àQcr¸i» (EÌÜá„fï¯ã¢ s毽?}]„, 5f䆢þêý¡Ü½³ägQå]@g.¢„Ô!WUãñÀŸLå~ßERª¢Ï¬k ;›%rá2¿‰Ó~ÆSä KR$ꊂú?tU’‘fª8²±8صÞ=€È òC°ÊmÍ+£ƒœm,ºUð`!TH€©0ÀŒgË]}¢äÓRk’ËqH8j§0§{” v6옙)zbæÀO,U‰ˆ4ѳ9Æ…¾¬›g8fDÐÙáFKº sƒSG…#wŠ¡ò]³;ôÿ<ôð÷m0G¦å°FœvqÕnf«6Û§£kjÈÒq¾§ ”h€/@ÝãŠa›¹£2¢bùߺ201iOu­ŽØyr#À×€ ¿Ú‡Áó¥VŠÍƒIYËÑ…Ô`¬¶Ïó!(È$Ö†×uÜ ”%¿õªª( Ò­Sªà$õYÐÿ(ÁTüª±·UÕêèçYuotAœßE·1t2j5JeºÀ{-A'>ê¯À,ÁHñâü­g%?TR² º Ê ”1@×õu]ãÊÄg–5jÏÁ<žZ`{åexžê'ày記Ï`¤Tó) € ¡ÛD* e(¦€› \¡HVjBÎRÀq3¬¼× wíÔ‰CýÔÜ—»£ˆz%®Íÿ¬ã6_Ö]­¢cXSwn†M…r=ç‹¿}ìÛn˜/\‹’¾®n0‹øˆ)X¦óvÔã<ùdLÁŠ#cÖk(U†¤]9w¿k;dáŠNk-ŸçpEL¿ÄOI‘¥{$Ql[¤ó0‰ý£»ö°Ý„H$Š_úÎPf䘄GýË“B-sxÏö]pa"½ßcÕà¢Æ´ÁÎ8¢©ôjaDØçTíC K¦¢˜à(+†¨4ñX„ʹ§óiÔÚÇ»ªy_úf¬t´kÊXžfw2à©÷›¥ €Æ+ŽÑïÛícU§XzY×H˜ž‰/8‰(ÒÏ SZ&×*muð¡íÚW7‡Å*Z(¶1çÁ}E®š’2שgt ½ßo˦ Î!88§˜:Ç‹a PÀ¶X€±bÙŸ`l0M Œµõb'0†’,.ñ \1ôŸ ÙtO•ú?v‰ºÓT^¤ )væé§¯çƒwõ:ø‚¢4îtçÓ¨à&]r"o¥D_Û¡r¹+Iq2vÊ,Yè´¸¢œgÚÄàUÛ]ë ˜] F›§¦¼÷'"íÌ+§}ßMÙû*‹ÿMÕqlºQWagÅŸšP)âÄÃ>’+“êèãu„OÀ»‰®ŠÔE¼<ðvÑ‹àáB<¤@HG=úrïÒ uÀ ×6cNÔ9$ûÍ¡‹ 8¬ÄÖݾô§UœcßrV¸S`­\]Ü­ïóBLÀOe­ÂÑqÆî#€¢®»þ] œµD\†KisÔdvK2j‰d ”é&í1õeMJ]ACJsì•Ûƒ7Ì´\Š»öéÖ Ñ;°.ô"¹˜KHLséúŠ‚y]J”éL ×'X1§ñšSgŒ)ÕAÏõ áÊ8 P0lE¾ø2ÅʼÁ)Óy$„ò ( 2ŠcÝ!º-xâ´#äfÚd—r»¯bk›(4Á’*âó„áô >¨z¾ì1sÇ>{ÌÔÁeÆRB´„ðJä‡É-eóÖ¨áÈ`÷;/œ†øƒ‘m]ÿ¡B˜hÄbEÍz9ÌÝi#¹L½›XèñÚ’Ú¥\&[VLKoGJ™QH(gmƒ$ðC{j=ÅÁ +Ú0cyvuÆ\±€/FW¼å\çšÿ¾ B3™Ý 8Kð<¦(؊λ ÄA±øÅk™FãRè³#+>3-7¸f2-ÞâŒigoŒ`!p ;½Íx·š:¾Zsé>-òÚjMAPˆ0·Ápwa…åÃC]=b+°°*¯·ÕÒžN ]nØS¹ûr¼Z>Ûxb/ïö?‡=‡Nõ‹¶,––×ÀG ^…‰c:¹f¯g¨Å×+@À6a5Ki×71Ñ&6zwbų™{ §!°n³vDtæîÜQ, ˜Hw%‡> €%¾¶oï«H7Ƭ²YW®.ˆÑ–ršëatex@åp‘z;Ï©RîâÄs@ig]3‚†ž7•2‰œÁÇf¨)…MO%†'ÑÒ=ÊËi©ñ„4™hΨ'lVi‹-§ê!8ƒ&HvOãA¤)Eçp>æz@©¯·­Öáa‡pÊ¡ˆ},NfAs"Óé÷$V›µÄO 4\™¡OF‹ÎfqÞz[W18¦}«íB&†¾Ñ+-'ûMK€á¡j`Ò”c zÔI‚_ÿôÊ=R1³f+Sù+:á^yÏŸé< €Ù ~üBQ’ãêÄCÄèµÒÔE?oNjØœìË$úçCÕ=Å'u‹•>mç"D £LFA.£iöcþFxÐÄt+_Yü|¹²~ñ¥ƒ{•±•ÞâÍ.gêÅ1`t—Œ­¥ÑÓ±Iƒ\¦Wö‹õü.j5@Ï•šL-ä̱Y|GÙzè)›Ú‘Kùäñõà¤@k$nÿb*9JN˜lFO•¤EE« †ŒJŽâߨ’€C&Bz6?IOÏpDB>Kab¢0Ÿ¹@`ФøÄËÛI­š)L–o0:ÿºÝ] pÔçM¹®·u_û³"=GIdø1¾pB2«„>W»€öD BhE a}¢™·A8X•"‘ÿˆJ6®  3%ÛTÜ—Myë­Å—6¨ýc'x†¤©Õ”àÌM'šuÛ„»9€Ó2Ë¢î*wjŽ3 N¦LI!µé¹»qƒÐøÒ﹜m…wµú×…û÷?)·Xendstream endobj 653 0 obj 3622 endobj 656 0 obj <> stream xœÅZYoÉ~ò#ˆ}ÚfoßÇ>ðl ˆ×°zÈ EޤÉRz8´¬üúT_5§xi±5<ìé®þꫪ¯jöëŒ6£þOú{ùxõõê댅gù¯åãìÝõÕOŸŸ9â4×rv}w_`3GgFÁs5»~¼ú‘Qù×ëÿÀbëz‹'Ö(xázuõã_Â8‘Z¹ôèsqWÔÅfYøŸ” TS~b„Å-™i⌰Êo)Àf­¬7ÝY)LX»L‡‹îÊ9'ÌrmfóÞÚ×i±î.6Ä ÍE:ûm0‡X!\6çvׄÉ©MOË&=4°}|öE^(¨ÎWOé)œIU>'\[c(Ë ÿÙ¬Â:Xd”˜sì ügã¹0þ%gsîüÞ*¼ò¡Ø-ërÛ”ÕæçøVß\Ç´žÍá 'à>þ¥ë‡bêÎFw½h‰P íû¥h~+7«* Æˆ…Ó/OoÓ¥5—ù†MS—·û¦ØMÙ% ÑÔäïö›¥¿‚_)QÂòôK]4ûz¶p‹6ñÌ#m~¸Ü×À2ÿœ"Ïî ΃•Ö Å‹žyR¥„ÌæTuòå†:p·õÏœg…Ë—)–å_ŠàÜ9PX ÌdÌ_G¬2„\ φÝ)QÔå@ZìR$qЍ.6“(ˆehê zI‚—$e{ X •/ÛÔû%¸£ árLƒmfV ºwSÖ>Î9ñçKÃñõ»E¹Ë8%ZP×ú2²„×hÞ·ø¾,¶™†Ã;HI„´î“6y„˜Í^-w‘3ÖøhN4_”»Èn‰6hÒSÙǬP¬óÓr³\ïW‘À@Î¥>tØ6‰ÊMvpµ+‘O‚00¢Ÿ‘°AäM¿GÒh î»X.ZJ?×-á´±( ªzUno¢Û RzÒs[¾‡OϘËÿæËªG%„ê–½«”T,„ Æ}KUÎEöåCQÞçäò¬y“Rè-5b5e,ävÛzUÔ)x¬Á8 V…mAùYéÆf1×V€©³V¼HJNÎ2Û’tW`jE}³¨3†ÒH‡{x9u›Ìá›Í‹ÉÏ(êÜrƒÑ&–A´A„<ÛsÛ¢¾ß?Æ >W*Ä.R[@2ÉÖå®!‰DOòe>6y§5²:PŽ˜ßÖÅýb')¾ÞTÉd(Ù!ÛÅ.—H«•>°²yˆGÅ”“™#½ìë# A[ÄÜ¥¨d§¤Nˆƒ¶‰xz¨ÐkJc°.×ÙZ_Y±ìðˆdÏ|Ül÷Í¿6ëç÷y‹QQx°XcM8ô3øQ{@åX€Oöz óJõ"![‹Âˆ¯ê”­MʸÊ!(‡…‹ ÞàláÖ.Є0…vv„ cI…‹7T.]X4ƒªè&ˆiˆ´AD‘hµWéþ±HBG˜»3–שëáê`*‚w“¼¡3!G5D³ÓçH^™[‘*¦CˆÆ…¾hÛO9¬J×TƒÞ$ƒ© â¢­¿@]H¥`áÔsY€ªÓê‚ÍÞ…ìýæjˆZk/2ìƒÏ×Ñ2~Ò¾µ–É?ÁET Ê5–‰è,ßµ[Ô1çõþ¡\¯ÒÞ£.Äð ê5÷WÒ‘z×1jhó‘ÏÛ †·q¼K=¼ä›}íNèî| ˜ÃE@|é°ö[LïpcKq–r“­žVÍÏQú”œoõ¡^Ëf±¹èAsÚÚ|ž9=Žéò[¹ÚGWøJæ°S áZIψÒB‚·R↹¥i/v»_ÿžT¡ÑÙ-©ùà@ ̺Ó:‘2*ÆÊ çi@˜4XѾwY ºôëË¢NA§Øi9b/3žžC/ (Ç_÷Eý|Ú§i;Ý(^Pm Ùx2É?ˆ9èkEŸJçMæ’âÄZDªj& ÐhŠ©‘®ðm; †šˆ£á3F Ãìyd&C[þäé®$V ›×ÞÑgGFS.IŒ— Ô£žQÄ´§3•"<ÊÏ=ÌÙ‚—¨1é3 ç†|ÖMŸ!5¾¤ÌØ;к˜ÜEæ~¤ï ÷0 ‘mZ(7»r… ±Â‰Ž}|ö·£A (ȱÓAa»‹°Q~./âsGûLAä¿m3=¶} Lþ1ÏO™BÊfÚ ?Á´#0mް²XÜi[~/Ò'ëg™C€­Ðã©”¦Z_°ôy'dÝ´·\OO³RŒkw¤«¼e€IŒÈeÛIðÔëg]Zuÿ•y#¯Î™Ø2Da²JüSÃ|Sãé½2¶¡ås$”º6ÏúG ƒBuZr‡œ³³¿sôáO"´®—’Që 22aRF Þ¨ÔŸU…7Àïƒîy —¼ZÈÌìÈ¡ã@c uÎ2j[Æj‚ÎI¹ç# ®ÇóëΦGÁ…ÍNw4£2ŠøùòxF¥’P>8£zÿ½h‘`9q%Vú®çˆ´hJí0ÿ€ö£­ 7_ºÃ’ÞáÈw‹e*½’#~¿¯«ýf•†7乎•.ÜòSùýq±#Ê:ÿ·ÅÁ CºOÖhhöŒŒ’޾Ï–Ê>þ_Ž›ŸÞ¢ cà ê:gî0+¶ kÛ.!=Åü·#Öýø,ˆt‡úßý¦lR$6¨G‡h°!ù¾½•~a&qäZi&ZpÔ° æ[¦O™LIÓšIþ<³OYý‚í<|o?ì@öÖâË ¾g)Ïù˜›?ã¿_Ï~½òþÚ"}Rendstream endobj 657 0 obj 2548 endobj 660 0 obj <> stream xœµZYÛÈ~ŸìУ XL߇ƒÖÀ®0!@_.w·Õ‡zwÝ<¾êû¶¾ºï«Î_ –i›®}tÀzÂM2¨—´Ðµø“{´¦š–‚HJ +hù¾êƒ¼Ëͯ·ms¿óQ°¦€ÐÈãò®ðøÛúKµu´,AØD¡À÷x¡pãQ¡pË]¹1T…° EsÆæ$Çw´ „Hf8ÆÙQs›öºj'ïÎYêO¢•R‚ŽŒ²ÐÌ52] $¦ v‰Äø‚´R!eN0É ά™Ë3°Çgs{{Wy\ qà鎾{T@¢;ÂÛ„Û(MRŽ2Lù÷Á"¸ãSmê«Ì†X”ùÙç!Õe"½¿­»>VÈŒ”ËÍ Þªä,ÀÁãVš$²obòC$â#_ˆ²èiŸ\ż÷”-”¥Aw¯¥ hQ5½?ýÄ=D’šïäž}Ã_cñlé½á“ ½VwJÖr"&žÑ<ÕÞ«Xã Óƒr¬Äó÷¾«|%€pë¬ýMÓÆ"Í8µ§TOÞX,»Ñ{óAàœÒu-Nô’ Ä ™]ž•\M£¹2f)f¢` {ÖÞkõb¶c ÷ïtðmpº$&Wñ6d« ¬TïwÕ¶ìë/‹€ÒÆml<ĪI í‹M±¦6í|H¤tþ§î)ógiÞ´¥÷‡EU ¨ƒÔéÒòj;« …9Ö‹ùÈ».aµM‘7¦PŒ6?¬Ä“ ÃÛR~¯ÊeAXŒXß>E0r•BVï¢EäÉ 7ͶiG*àЂÿ¸ Žßû`‘ 40©F«‚*’Ì)Ø5·­åó1tnnóH€Ÿ¦ì|Ýø'$Χ¿DØ2…žn›»·Qs¡Å錉 e ¡SÐòï€Zn ¾Ú ›ÆãÑž©¿WSxt¬"Æ@ANË‘Õa‡?Î Ü#@¤ÚËà4T;zÚ§šâXm´`žçW†Ä€XˆîuÙ—ýÓÞÛ&À5–¥gÖ4俎2„ÕŸ§œéõÇ%sb[pFDB|€ Ï")ükǯ•¯}î¿'Ä„ä¤H¡NH©w= 0Šéè¼€QŠ;œ³¯±Äp»Ä’a9õCâpÖ°z-uÿ×¶|¨û§e198¤`HŽË¸|'çÂ^ïnß÷M[-‹ÊøadN»-¼úv[îü4¦èÒØ¤±g‰EƒøŸ¶h(c‰!ÿ|¨Ú¶¾®ÞU×u[…•“C°˜ÍɹjšmDécÞ—Õ¿w±7ÏÊ¡µDÂOÕ®ÿ¹ì~]&ap\è‚P›zNšy oØÂ˜n|Óìú·m³/o˾Z†‡Åòåã_Gî’d+z*~‡§£‡—Xùú¾í  >åÝ|tÚïŒqÛ‚ÕšÁÑ‘K¾©ºM[ïûºÙ½œm÷@Ì©RCöuù¹š“ F‘dÿÇÐ19D›¶8¾w·JIÿóñUäY*7ô“ó¶„þÈL*Ë7÷»³"9'Ìk@8rÊS§<˜g,RõcÂkÖI~t«ÄR§H|xYÄM©’bÉåp´À^ïï†hYûÍ^„ båáÀ›ˆÂIgai͹5÷Žÿâ~1S1©Mº²Û k®QwÏåü\ÌËPøI¯Cnp´4{½ˆn§ƒçÑuÛ+î6n™ô ½³‰OëgŸ›a¹_€$·EA+mDR4."I•Ù5Áϧ¤M XŒDI;1 ÐD.ñ ˜m0*›€ù¡þ}à°”’ Ä`\˜‚äz“±}l å*Í9€„†p v‘ ÷TÒ ,áF+ðí¶Ú—!uÜž“áË}àÙF3¦¿Ñc0‘‹ejù2b¤ÝŒ“7z‰CAäžÂˆ_#7³`ðc”'Ód­É¥sõq[•-&¾û˜Aè`³=NnH”A-‹àek9ÃOÕ÷1%8‡j;^ç8•òjðÌX ³%’à6BI)löG‘ÄCÅ“ñMÒ`·xY½¢(E.–œ‡ÖÝoÔ Zò9TÂVåƒÕ Vjì ñÊvÒÊèhG½Å÷sëkÚú6"Ùå Þ{,eºͱ1(]¬•š²éFñÛôMéÎ5"ëøÖÓ2ƒ“þÑìŒ ï7®ømkP‹…[a"µ…²_]‹5Í;”›h À—m1ð$»²mÂ3·ï@ßOËÞ™’Ëèh«>Io¸ üÿÛAQpsÎ#-¥¿÷ÖÔ1z‚ŸÛªss[s#>&¤4~ä¬nÊûmÓXõ×v_53…",ÓŠˆÁ‘âà&ç `6'Ñ™: {4&S˜2 ‰14 ÷g' æº-và3L‡Úü}tbÔ}€ÎÓÄï½D^¼Ž9« íW±‡]ô8€¥DÿŽ`#§È@ÏÁ†C"ävp¦Ôá&ÿ*‚]’sH Hk¦zdå `ëۘȮh"ç{¨Sxzé)€p™’-JÁ 3[”Rù‡¸€°)£gÉ,£©†ýåæ¾Ma…Ü„ú}È¡€-P†-r?ãÉ®N#”-˜OG;ç9Nwã¾-ž ŠXDþö>Š„ÉÕgož/ðþºK{$u˜R•ò«21es0D_uà´0–R 0Ó3¶Ä¸Ëáô4³‡ÑÅŒ’åÃçj÷s¹¾wk%¤¯AƒÉ~t¥8(í4÷¦WÛ  tÊþ2ÄšqóïÓü7l°D^BI˜¿È³Ä²}Ò#òï`ŽGvï×|^ `~0›žæãþ·´ ”’É~Bï® Yƒ0~s MtþÈY­ïÓþ Z˜vßw‡AÅ&!(b8^ OOw1îPU^Ø„¸»qƒãhp¦M€\‹wF³¬E>E« | G|•å uÎÒÐÙŒÈM}×Dõl†j}wW]×qánÖ[RåjVi+Ϫ´Qjº=`ùg›ƒ=™àc|ÄùÀ×çžèk˜ñÌ’Ü Ã 4à ~Ê‚{?+Öà*‘\W?ì2¼«"l¤ vÕcìÒZŠ,¼ˆ²˜ã¥ ½xª2vÒ Îrœp¾a?º[;A¤T_ê®ÏJQ‚`S?=í™áÞá¶ÚUm™~³" ÷cª–GÊ©/…ÃÙ/íSiúúæi® Á[$o¥ª‡Ð¢9LÂ)7f?g‰öeò9‚°âv¦¨åIka—ŸzìÒƒZ„ • oõPwudVî×vÑŠrNáÊñDm‚ãØþuµA a3\#†”F&îjC$‹Šî;ø ˰l¸ñ†£o+¤:À¾9v‹&”ç>Î..ºM[EÚãvçêÄB£Â%¸Uvr!ãÇüoø•¥råLÉ GœP(8–ùÏ ä®/·Û*ͼ=ëªùå’uQM^úø÷pÅá‡IjX¨=Èb>=÷˜ÿérõ¯ ÷çõ¼l£endstream endobj 661 0 obj 2942 endobj 664 0 obj <> stream xœ½[[·~7ü#ö­)`Mx¿$@Äm‘uê: Ä}K³»j´Òf4²ãþú~’‡3£ÑeÝ ØÅ!Ïå;ß9¤½a¿aáOúwùøâ׿Þð~,ÿ³|¼ùþöÅ×Xñ•7¨›Û»ñ~ãÙÕ×7·/¾âÌüþöŸ˜ìüh²•³Ü®^|õ>Lá¢RFû4ô®¹kÚf»lÂOZVÌ0“~âKZ{c*o¥ÓaI ™vAtï”´ýÜeÚ\g.DÅ0öf1šû6M6ÃɶòÒ™öþ®§rRú,·}×È!¤`.ÖË. Z,Ç~¨óDÉL\}J£Ø“é¼OlSYËxžø×nÕÏÓÐEÖ÷ž¿Â_*J>6ÈBjU1…c ÖÖý'¯êíýz{¾PªâŒå º‡& ¢¬ÈçXÚý®‹H¡ò©wwý\V«²ë0d+£´ËCí.ŒùŠã "5ÃanZîÓz»ê§ ]*ǯ¶š¤ÜÍú¯´àY{?î^“ØS­h^éU–¯Ùw;üfJS1Æù9m¬š»ú°éå—Ö!ãD5Uý²ÒÞäƒýüÐl›ý8 §ó¾M/ÛBº XòCBÑÿö”|Œ ›´Ûï×6Í«~UI-³2?÷vD´—…Ü’—9¥É4m>áäz¯Ý¡­ï›Þ±tAñ‘š“ÜÊ,Åþ!-# )U\d·ÙµõÓ¾?þAXYl¼€§z‰€sÞ@kë§Mÿµb•€êò×›u³í÷ò•aùXÝ>ùˆ:«rYÇy®R"À¾Ù41Ò„­¤Éê]oŸ]’FʳwqÒOìŒÏ5ÏêÚ×MòF®¤»à¤UZÕ[ŸW½}hÖmK‘Õ?F––IÛÆ1£<ª‹¤xÈÇzÿË>…¡'(,fŠ•©ë~MÁ+áH{F£¡À3Xˆ½nß<ÕmÝ5›èQ²œ,ÜÐUB1Šõà×I%È­ë¬`^6~桵sŽÌ¸O #iöñä\õÁ \¥È–Xwy>ãîh Cæm›§,§à„hmõŸ‘Å’ZÑšõf“¿·VÏE-1D9U&.+ñ4Áí«dOf}–ö‡Šž\1æÏ<ãPÏY!Mû*ZÜ:x¬ˆ—Ò¥hˆ¶†Ÿ`aBm“¢LHò³ÒF‹qÏI[u—eg¬æ­Ë@Ò­Sx‰,Žã{°ó(À9sy£»Œî“< +Á(~:„ä|Xv‡¶y׬Ö-–zƒ@šË ¸ê(R_Í-n*^Žõ®Ù¯ÿE«.¢šCRãjX§6„›yCçy j„"d¬·«yêTYC^ûý¡ëvÛ·p³ý©œ¯„&f‘bYy­³ÉÿrG!BÌ"YÍÂ\ö8lë®kŸ"„+°:ò­K–¾±<ä nGÉÎUÞ 6á!paÚä¡Ùgðvˆ…™ð hÀŸÇXéó§„½@N$w=¶o2”"¥¡²KެÀÉ¢;ÈÖ&Ѽ“R`Š.SV}¨÷)WY]µi›zõ9S ïÆ¹1 ¬±äÁH%8ë9GC¯²Z¿¯Wß-—p³YRe‚• ‰Ú6QFPÚ. ‚b~6’eâ.¸6¡ù>ZÇû⃳€hLBm»V»Åv×-žÚÝS}ıxLqÂÈ9­œ%ˆ,@Œ]§HÀ«Dº„¦`›˜® ØkŠîeœ¡|ÑQp:c¨€8á(‘w Æwñ®ÛÈn¦¦¬bÅ-ßÿÔt?çca$Ûl´Oß×ËÌ£ Ç_îÛÝ!£ÓØBI”ÌJ=l—Ý:Ò.ä?tIΙ(žGÕD¾\H7T›½þCÙÖ D k{T˜xFõÀì²çJ|ÎJ2H°ŒáÞÍ-IÉê)z¬ð‡f™rƒEÔš v¬_&ÊBÆXÞïiý[³ÉôÓS<ô¦2K¯7‡¦J‘#=aݨƃ7p5e»˜Î)%\R0{É{QgPu$F¬Ÿ€ëNX5q~‡ê@dY6CŠøX‘J8Ê@g탰_Äë!¡^Û‘€JÌ‚ G~¬‹¢\R¹ôa&£kœ—Ñ.\xòŽ ÿfUÍ…^Hˆ¤äÿjä…œB èyŸEúRÓ~±§8 Ö>pE œ<È¡à ae¯sŒçJªipÍÅÑI)b>ßæ¤*COð;ž£70 Δ’ CšÒÞ¸&%–ÆØ@Gú ¦M®hQxj¦¬Q4R§%x £Ì}*ñ ‹Â¬Tü¶MÁUM„}—rThpM¨ñv—Σ5âÝ¡Í Š_Qê´æ·§Íz») êN“ðmnËïSPjiÐ-§ãPCÆx7íYÙJ:qæÛÓª@íJµÓc½Š H ¤J¯° ¬…ÂÛ0%'sCÑrçLkjÕtïšMÝ­?&»#)¸¡<Çp#­óã"&l¬©>>í¶¹Á‹*n.¦˜c«^¤ÆHbŒØ×ÈM•)ÝåÊ\M·…•¼2— ¿Û§ØdÌ•Tš•‰ã”öCMȸbG]>Ç u@_¢2—ÊS³6ÕhðoŽšºAvNú3wXP œÏU”Bøg÷\,¤†™“™kXL›  EÄtm™ ¢P–ú’˜ fg¥Ÿe*†‚{ÀTô;Ö¥ëüELÅ’½Ÿwü!S)±SL¥æZ¦2m×·>@FëQgs*Ehb1¶ç1•€ò„æ…¨€%Mº(BÊ1Eõaˆ_bÁ¯Õ?êi”qÓ.ŒÀ±d#­`­ãÿÌÅœ"j÷ãîm¯4)1ÊGÍl„¶¥ñòa3 ® 7RR?äUL:t Oì쥈NéFõ“šnÐi¥¢M¡0¸W+õPŸAý*ŽÓöÖïzU·F ò‹³s×®šÙkÏåÚlÒ—qÚ–¦!õe¤TÇxÊJsg&AÓö¡Á)줖ä•àrꚣ%/ôd¤7GŒi?µýhÉR9J° º©TŽ¥‘zÈ5,&^¬‘‘¡#pñ5Ú|n¿ûœ”ÊÊ=]•Ó=z F¼— W…Äh'-÷lOfZî(Ɉ®Î0«ön×>&¥Ù 3³Îe3”Û)å%˜ÇdÌ1þúê±ÈÜ%oȉ˜—<~¢hônJžÅ€ä<7)c¯(Ó/)®í¹¸79¥iw9®ÏV‰@ˆ¼Ò$º%÷Ó*1tåfš®ƒ—‚[:?SüèŠ îSg^ˆ”­tyiñÜ·ã·£š“Møñˆñžœ‹*]øýóƒY`“Á€þT¼*¼ö¬ZC/y¾¦”„[å’¥’?½j.• ’,â°j”å)Êq=* —]'Ra½¦Â‰JÉAôKI^®,†¥$ذ µÀØF“’Ò‚Wžk“­óë¡Peåèo3Ídå©ÖÌ·§ôÔƒ°9.)UhR1±.]³³~t”í‘•ÈQ_ïž2üj"GŸÿœ0]zgÔîû‚VØÐö,z™«g CB ¥Ð # >ƒ„áCáH˜ÜfV¥sµÜå'F”®ò€^ƨ\#ù1í7º\S5:•òûÙ:S %.±@ª^µ¢¾ÜÙ8E„XºCÅ©·”n¨l“šTu æ2 Í&qäYL\ãYÜRzæ}_)í'y9Œ‘3ÏûðÇ‹ª)ï[Uj±m–@ùóy?’#8Ä(Ô¯Èÿ¡\×UâeŠ¿@þ]ã¯ß ËoÂi5¸cÿÊ´¯r€v¡qšU ªpe˜ÎË|Ÿ"fpáþz·}yhâÞTÔiM*K°PïßD]! •÷=Ï5•eŽšeE¨qj»Òš¾P‰÷ñ™ }áLx»:–bò¥ 4X†.ˆ~ž,Óõû«9s$‘&lÑ$hOîiÒÏëU÷0ë”B£àG8,€NÓtÄ/£iâóS+ÈBÍþ›df !ûº9áݤx…Ї9Zo2Ëb宽[“E?}é‘«ŠÌŸ2è*ÂB~ñâ¼T¼ëô—½1yZ†Z˜8ñf½ïÎ+¼PáÃ6åg¤,L ¦D ¤¸=s˜7»Gç°_vŒ·»õ6?©õ‚ss‹¤24‰¢ !‡tà`Q)öŸ)ë»fÙAÝq¾/¨Ép^^ŽÑ—Wiv^hñ¿Wð—èĽ½Æ"9€‡áJ‡d”ÁžwÈtÂñVçœ}=(qáaK™Ÿ>Ó›cKŠèêßN`’k? ìlÜ÷ñŽÚ_>ä=ºˆX–˜FòО¨Â·½²y/¢{Ó ${Û¡œ£Ô0³Å®]ßÇ'«ð ç©æ‰;x LÌ9Š¥~qÞòJxfp³L5 Ûaêü}N=dtÅúŒ£ v×åaJR!¬­¤œ¨pÎ5£gâ§ø0ž=Rý·óΆuÿ_3Îö]{xŒd6´ëJ^èbîùÓíÍß_„?ÿyYKendstream endobj 665 0 obj 3585 endobj 668 0 obj <> stream xœ­[ÙŽÛF}÷ø#ú- ÐâÔ¾˜Û 0âq&i$~ð [b»K¢B±mw0?·¶[\%µ4`YË]Î9÷Vé+RÐ+âþâÿëݳ?žýqEý³ôßzwõòæÙ?ÖúJVs#¯nîž…è•e£ôJ+CØ«›Ý³¯×ßÜüïÞåß#âj/Z#¸¾ºÙ<ûú]_Vý—ua¹b&pï¼p¯ÈÂpnU|t{ìü‡”„Ÿ–ë.>Ô0|xöï2½È‰J/n>ŧ0'‘ižÊ=R…Ö„ŠøèÇnãß“Q6>£ÖÒkøGÄ•Û+[XÅ”p+¶†Óøê[ÿ1+„’é럫»ª­ök?™„å+’6E †´¬?$K•VD‰ž›wŵ,ìzŬۓô/{OˆB‹“Ü—û÷Õqn£ ¦ÒÊ9ø¥Ó‚3–̳®Ÿ‡/™) ±iE¥{d fµI–ÜÖÇ.ÚW›¬ÞÜÍ­ÜÍ!Ezçíoõ~ÓøeÓÂ’ÖóéÕòÂ%ߢˊYó0i ÁµWZãÍÒž¯Ÿ`†îÞ»”ê‚2‘¢ïSÚ “…‚¸Iý›¤ÄÊôyc…jžÌxŸ0=ˆQ]hf1ÚjÝ쟿h«ÍÂÞa&&ÂÖ!qdpŽÑ&-µi7Uû[½éîgƒC\hñ·™%NïRËÙ @ü°JN¿—˜WgÌ* eË&ô]°”@€UÆ( U¶U¹(!寚¤Þ‡4"Dâ³®jëÆƒw9ºjSïªý±nö~p+0޲ sR=)4,cL?t´dý>¬{Î6‚_–E0=›—j©IûìYØØ;ÎÞ32á$ ú8}oÝ„gJ–ý_ïË®:^{˜3šVúé¾ö˜Iá ŠOïãÌÊ4Ȧz¾¯âò¥¤znùÉ%ûÊ&£Ði]Û&º› žÜ´.;ð©{Î0\‚G×Ia¨Pgg6˜OVÒà]sXm«;À\@ä¡#õçjë×)¤Ç Ñt¤ƒ‘—bæ«#²)CŠ^ȼø9 †l§·ÔŽ yÑô1íY¦¯º;VÛ»´S«0Ëî‚Ù¢9¾½+¨îËc09 ž£ É÷MÔ†jzÉ^¤ÎÖV[ðòǘÓJcäÌ{¦!ó¾Òì ãëåÆ @$”3ÝÆ9€Lf Ü%‚Âjß?ìÂ`Œ‚Èí‚ê4ÛMX¨™“Þz<Ä…j† R}fwO L¯ ÌÝô‚@ºƒ`F†éAöùl*»²{ûkÈ Šøþ¯à/]ß([|ßt1ݤ“0Ãt«÷ëíÃ&²¤ŒÊŒÐ 9aNô¼^¸Ž;”I{)£w!‹ •‚£Ñ»8Ä)'†O¹äXfí›ýêϪm®ãêyUÉ’k9yÆ¥™HnyYn~Ø£ V‚åöa6!N˜Àh¬Ú6–Í¢°Vdí}|ØvGŸ Žk8ªÈAÓº¾$ReWíAmûêt„>% afjÄDV— yf¦IÖFT§šàBB„ $ÿå-¤û2>c±Éã7XAf°N•†ìfÌ«^ISýd«7Õ Öë–þËèA²Á'v¦M@-B擟S9(.rû¬Çø\Ê W&§ BçÒÎìŒÜ¸2BNWàÞi—'~¦N„pÁªtWÉ$ªH_½Çð_eMõŸ¦‹D®\cÇ=‚2Ð+„Æ%Ö»ˆ60˜´8ØïÀ Š’)¢EÎ5×âv¬VÓ†,ì‡Î¬ÖbO„ì1ZC¡&š]çVä] (о³Ë-ù޹æ÷ìà5½r‘ž|'E>š¹Î8®çùçÞidä³3"ÅzäæÃCáZ„¯]Šrk±EyÒ°dÎÕ&#öí±Ù>„0a°89¿T)åe¶ÎÓÖ”ÑÜ>rJ1¤…(ŒÅ&P¨®ŒFc=Nmпo¦*;àR|Qÿ>}Þk Ï,|n‰ËG”¢W¬@êEŸÀÄ,³âDcÊÁ6ž¸02re#6Eʹ£-O¬´ˆÿ‘]=`+5–KÍ,xö%ù‹Ûè•XÖ‡™Q:áÑÇðH3‰@>nÞ$¨ ®ç¦WÀ7 Ýèú‘Þ˜Np Õ÷âÄjµgÆ–‹EßÞWN6àYUêiN/&ôoO,ŒM¡¤Cpï5='ý×§7´?ØpÓM»àF+ß„N إׯêµNGE# ªFÝ»toÀ]ÑpÝOxÊt8®8×3ue'U겊‰@h"Hù #®´–Q¯bM‰#Œ£ LÀY¯C-D¨cé†!ªl¼ 9+Ü© ÏÇ•± ÇÒ ‡È½ûlÕ:±¢b“t\`*WÙ3I‡Ôg(bðó}¹æÒk¨’œPï¾·s`ešÒtÞ]†åNVÛl·¼¨»ô2*—Ø®} ©Ë¨š^Aêí¬§©ÇNø°ÛSæ“w€3vé‹{‡òxÄÕY>2óŒÒíû“P–ï¾¹FÌÝD@tYº…$ j°—[ïA˜DW‚ÈÌ,Øw%0fô@rCÔi‚ ø"õN!sÌÐ5&ÌÞF>x{ÐiÀVGפCnß“›™°A© Yæm¼RÀÌ„ß)3cHtT§ÎÕÝ×qJðY¾á¥4É2ùÎ_§ý0!ß„tíß|xž¢”¹KCxÌS} ¤þºÛµã¨*R¼Ì—Ÿ—VœÏvŽ26 ŠÔ[Õ¸ §>ñåM}\— !£¬3~Aʧq<^f§Ìö.êÖßDjeõíÜeê¶z×FPÕjäIµ·~hÓUHc‹%€ÿäÔœXî¬Û*¾j]Ù‡·9ŸZ.Œ°£ó”Ð!úUQl‘íÓ 1gP–âÛMµ×àì+MUïÛ*] ÀÍ]xÏ×ï¾ Š“xùc¤‹êW.‘{ÞÆ&›ëé`e=×AÕëOÍ’2pX.FÅ,è–ôñÓŽ<¨» 1í’ötÌù:–˜ ;§"ã)†&éÕ+yúÜÍÅÙ ÂÀ`vŒÉÏQtBó@–›¨øÃ s(8ùgQ¨h á1ª¶úwŽ ’¹;“¡´»Ó’y"Št#¤äOíË~ç7¹„PlådÞ!Óg "¨Q¢Ç‡XÊÅ΅׵܆XÿZÈuÔ%D£úhËúXE–QÏíót’`¶žF}Y*WÔÑRâ˜q³»òpˆ`±â p|Á ª2Tú#Rs'é“kTY³HÚ@¢jz Öã]îi9¨ Üíb‰Éé6AEåk¢Ø'–VŸ£Ù…†å¢hWN±â1Lm‰È¶˜qË…Ÿöâ—¢âÛ6ÇtØ©y¾‘ðe±šqO¥¨BFÒ5ñtKÛ4}ÂáY§ù(V'© ,ÿÖmöðéòC¦|FpÍíqí~é ÌpŒœeMoAìhtË>œCøŸ+âÝÈz»‰|ïzjo°d U›Ws[Whú9+R3£J…×G|Ï)ÖèîŽ0]?¤k ÍÂOB!þ‚qÇzt" Ÿœõ¦É÷`Î\‘lÄJ›Bh8Í éÑ]Gë5)ÄS½cêüÓÆcÕ~Œƒ2Ší9¼-¤Þ¤y_íÝicj~ >@!øýçC &óÂü©!u #õéüÛ¦`nÿK¤¹tí®c½—x˜”Ç=è!…ž‘ÁûIØä Þí%°9<Ú?m7îNÌíÐP#Ü÷-'¦–Ë€P5gY9§ƒã1áà¼4I!“/}ûžI»MUª‘ùçICÈ‘ŒŸ3\ðé÷7Wÿ}æþþ*~vendstream endobj 669 0 obj 4254 endobj 672 0 obj <> stream xœíZKÛ8¾÷Îðmf¶–ïGX`2`˜`±Ic“Ã\Ô¶º[¿"ÉéÉüú-Ь¢,«mw°{k44EëñÕWE~ž±‚ÏXøKÿ/ÖWŸ¯>Ïx?†ÿ-Ö³×7W{çÅÌÞ£f7wWñ>ólf5ŒëÙÍúêÎÜ_oþ“?˜ìEᬆn–W?| S¸(”Ñ> ½«îª¦Ú,ªð“–3̤ŸxÁã’ÖÎLá­t:,)Af£]Ý;%m?w‘6—ÙsQp'ŒÍæþÞ¤Éf8Ù^!ÓÞ?õâNJâܶ]ÿ!!si´\tiÐÂòqì%N”Ìààò1žLã>ý±Ma-ã8ñ·nÙÏÓ  Ô÷ž_Ã?*J~h¹Ôª` Ž)|X[÷ŸüzæzXšk¶{¨P‡lÈ*Œ·Íô%ym~Y5M½¬æMµ¬›*ÙÀGB©4á÷¦¼ï×v0êptÛ ÁÁ’Ú¨B<Ö›e/ˆÐ ‰ç8ÜOdXe«Ûx,§¹@íÜ•«¶_SˆBX…Š,7Q‘ŒOƒív§*Ð ™a B5i§8/VuµIk&ðaÄ‚€s§¡‡²‹ÛB;ò¡¶ZªªåT\H8½pøùûýí<ÌšKã\Ìæ 2˜+â:]³_tû¦z—´ÿ¶l?M91=©> F2¨zW0&qpW6ñ p”¾»N¦cœMwðýÇ4Ï(çéäÍ—¤Á™'ÂðwÍq_mª¦ìª^}JÚ’Ï—Sz[*'Po?o7ßÝ÷Šù¼¯Ún:8+¬æQ¥àHQ”/Ñ‹¤e•†Vž<+*–sž›ÝJJƒJØlSÄ;nÑ{ïö º•”…æá»f‹¶q´ì¢jÛzsŸf a=¢'ï<1a Iš»m³®–E¯I#mqö?ƒu[õ§Q<œ° Mj .(H΄£fŠŽÞKŠõ6ÙÙ{B¿ )žŽ¢ÎA‹è€^€xVBô„o¢XÇé¤ÐRãFßUmýgõ¥µJÈü8" ò…6‹®Ž‘"Á©Â¥Q^Àë=”›ûè§’ƒGùc<ÜâyëM xÙ«ÐB°¨¯e½®à§í¦_HƒQ•%+Ÿ^iw Ú¥õ\‹ú»5”#´}Ê”×ÉFšKG>ÜEƒX zBõf±Ú/“ƒ*P´¤^wmrgÅÈùo=tÛ,«¦í.aÎPY7Ñø½%ø<0N8LjˆEYÀj<›$Øø@WBòs–MªƳ¥Åñs¡ñ=&›Ãh¿Û%ã rJÕÌWÕ]—¶ƒ‹³Û„?ÖÑn ²zðíôÉ¡]¶ªÖ»1̃0Öä¥êû:⼃e(õf8óŽòöi ;w¬aÉ j¸(.IGBQ@~Šç㎩cô±ê,(0œD×û9˜RœyJ-Òa•帑Ÿ‘¡O>²©§¨[—Ñœ& àacÌà·”5NÁç\:)fdÅu™!Õõ5Š`¸ÔhØÕ¶%ù•¢‘âO¥ l\äü/‰Qw‰Í@6ŠÜ¼EŽ–õ:Èq^¢ü˜«'ù $•¬ü_þˆšb… LŸD?äàŒ$õÅy9Âd ÁÈ¿ñB`KshG`È´Ç;fmË‚†Î›S´"ôX— ÿ pBƒ·ërµªšëÐ&ä¤&î>!5†Éä‘áçnìã ›‘íÚ)ã8ϰ÷<ãYAqt¹ñYzbŒ[tL`üŒþ1ÛHçp¬{(#¢rÈ2"0ã.³>Pú Íy°'^Íê+¡´ð£ì¹½mÀS—赑çüÖûì÷/EÚK‘öR¤å" Uú¼"-0{ïÌ‘[AþÂsl°ìRœH÷°H ª%p½ H÷æßgüþ˜–hÄPx†_‘ûkFg¨jrxH’ÌeJ¿ìÒ°ÍŸ™ %óPÕ÷)è<§øLÁau>Y>€£€ÿ³j¶×ÉétÞÒæ !”€¨é×åcEƒ·›CÃþ;mÏ$• åj?™a $0Ù&pñ” ¤Òøæ~•Á\¸jyQ1 NÑ"ßnÓÂ^ËŒ……„&³Vãš3¤I¢Ó5g; ‡Ã²æLQËM0©l”ÔóIhØq(Á3‡Œ”bŠ ¥E‰‰Ú”õ11@µpzû“© É’ø d‘ä`ËúC× ÂÊ]1Tjo1`ØÝÃvß%FÄ áCSÖ gŒÌ\©HáÌ3z½¥® †È—ô¹RQj¨2S¼&¸îf .)ÒíTœ›9G;ý9Ús¬…SUTƒ84äí2b.ý¦Â"Ôš²Ä3Ø X4„¥úÆV[(£Äˆ^{;În0“é3ÂQ*âôoª}NÍšj³Ì>ÔDíoü1§ÌûoªÇä1\}ÔššH'?u2Neéé áãè@ÊuÕUMÛ#3Às»“7ôgrØQLÎÏFÕè_CxVÅLÊsý%â4óIo?ðŒ¢ýT•©Ø°Ä}N¡âc#÷{^¡p„=ù„×—Õ)ºÐ9QzzŒ©â.*?@±üÉêC w¢úx)9^JŽ—’ãr/ú£Y1ƒ’Ãbž/9rü+“É%5‡'†vx-¤úÛ‰4wAcc™©#>zÐhÔÐé䞀6ö|ð̃jå)®™ MXî.¬ À»ó…龜ø¾†ÄŸUøøº¿Ôø€ÙØËl¸P åèFCbêmsè/„Ž/ F8˵½s_V8æqîS6ýç¦0ù®sX:NqÙm£Á\ õ£Šoò–ñìI`K>ܳˆ*P5öÝzH !’€à‡„3àép‡`Ì69½ÍW†oË]®ÝÀr¾½FXꚆÙï ¢¨–ýNÂSÞ ?@÷j 7üˆ@t[IÞÿ8Ù{ËÐd^6 ÙD}ÝÄTÐI0ôu—PÒfTµ¯’J`d0&4‘…K”ç*&ïr•0Ú1fÆêx|•"$5Uß4åcy»ê-§Ð BìùßPñ\Éì7u¼>ä€$ñú|1´"NîÕûÚ]q{zw°_o­Ç–$ÈwÛß&Á‘9¸5hB:Íû¯›$‘²T‡tåOØ3°@µÞ Î»‘ízäáBêDÔ%‰÷c¯Jðàíd3|ãBhäCö eá݃-Æ$EÝÓ*ÕŠpG6TÙOÍý~“±‚šŽSdtÑxs@mJ‹y {¡¨¡=ǰ ™Ô["iïw)åCö0Ô"Ʊ£ëø‹^KÓgS<¤ñ^JÉ\4Á›ª]4õ.$‡WS‡¶7æÒ¶–Î~xš+õÍÍ* tåµ.wmJ \NܺºCçîѼšhXå.K¹ŠÁ+C‡©€P¹8¸Í-¼6"t Už+ZñfI‹Á#ºY2šn–Ê$¼ÈÏ}¦ž¸D%S’AámÌøx—Êkr“©ç°±½©‘$%€iwxù-Ã$•EJ¥¿”»åzrP£Šqãä: ¹mnì7Øç’°ÊI¦±™¹íbCWöOˆ.z~ sgpðü _‡/ëv·*ÓQeFê5™ó{rW0†Þ5º~8ã¶0‚âÞîQ ¨Rò5só©MD†ëü`ªKß+E>ZâѬ¢Þ\µªïë”|€GFõ]jô(ê.ž94 .{©¬3ÃÆÔà±K–ëÐ@PÁ¢td±Z@Ý¢¸Nœ{6Q$•M$ïý~‘Nñ‚ß?ÄE¢m™ˆ¦‚¬h ¸3n>x4å“wùÍD¸›Ç7TœÞoÐ5ÍýRǦ_ÿ J@0X.àr–ZPáÁÇ© €°ú bü”C…¦Ü8N°¹©Œ…Pè/0uFãHpÅq>ƒò˹síTÔ¡½Ì æRƒn̨õ¤ÞÈ*-{î6÷ý“Ö|àæ„¡à£æUÝR<…·.¹ÊA–¿KÒ6W^‹¦ª°%:h´ôîD›üô ‡9×G;¤`=#WôHûu½½Aw9¤“ ©©•6áå†úV¡$Ê×§åP¨›oòÃõͨ=œôŠ:#¹ãE—¢SbÏé²úKê C-"T&P@{lg½Q·ÃUꯚª\~M‰Š ›aû\ýr3û×Uøû/¿¶¾Ñendstream endobj 673 0 obj 3199 endobj 676 0 obj <> stream xœ­[moÜÆþný ú7Ø}iÑi š&±Ôü…¾£$ÖwG™äYQ}g¹;³$w§3¶A-¹³óòÌ33«ÏW¬àW,üIÿ®¶¯>¿ú|ŇgøÏj{õ÷ÛWzkí•)¼•N_ÝÞ½Š/ð+/ Áù•5ð å¯n·¯Þ¬þxû_XïäxýÍ°Ž©«Xè’öêvýê͇6-6ãŶðÒ „5ß…%ºpRz“}ìúáE. &˜KOËUŸZø||öC‰ %3¸pý”žÂžLã>Uxd kWéÑ¿úõ°NÌøôŒ{ϯá/•$÷W¾ðF$W¾PNò´ôýð²(”ÑøöÛê®j«ÝjØLƒø†á¡xÁã'½’ƒŠµA‰8óaÑ´ºpÊáÃôðÃï† Y¡„įöÃVÜFêô¬ OTa¼uøèK|äµq¨¥ªmëuuÓV뺭¢j lªðçMÜŽ9ub·§z·v¶ô¨œ§$+<Á·ëå· vWnºá›B^´k¹‹–ñ…Sô°$ò…öÆàù»f[¥Í•°hë\@˜`ôtµ©«]ú¬aÏžÀÀ;ñõ‡2JêÀ vÕÔT­—üBÚB;úâ»ýÇ›hEŽ~Z„µ"~§o÷«~ßVo“æ*»O‹žû;Òg³KŽn¸³3s„] ÊùX¶ñ”Bà9r|LXh´àg,wvgäy§]²’Rzî|“ýß'#“…ªöKr_$ïKÞ¥$…Þ}µ«Ú²¯å+YhápÿrIë®`6ñ§òñm•ôã4êpeøùç}ÕõKz†Ó–ªúLZ&ÑqãÙÁi”¸]ŸY©²”Ékx=é#)i.<(Í‚o£Ò@úÿ 9 Ä®¢=-ûFÁùÁÝ~·êëè!ÒAlr”(~¬{᳨_ø‚ðZ»¦O6’Zà±·åã`s I—m>ÿ˜'ÃR¨Bzû9„æSÝUƒþÀPZ»™?ú™`ÚiÜœÁÍ<ÆyÄЖ—lt–Çú©Õú:†qçgV0„†ù¸PvæêÖОñv€MyÄÛ­  :âí]foÿwÓ×wÏKÞ¡!Ãfì±GÖ‚ŒJw { ±Ãì8ó€Ëp;ókpvŘ<ãéu }LiŸeÔ®Væƒ:$ddeQ°/uõ„‘¸¸ü¸Á¼!¬vSÛ €E¶ß5˜å½@ÓUe Ù`0‹¹ÇÍV hÁO$åî¾BôÕ9Aöæ&ðÙ]ƒÌC3Ky¯Gí1ʾÒÉMœ'*ÔVÛj;ÈïáüäKªj“낞½Ðü”MÞǘrbÛÍrÑio•9§õõ&šFw7sB`àd¯3‘*´R´²À´ÂI7uÒ,ä:ÅÑ`ËÕ¡]>Ý·Í~·W €)ræW°\¹Cèz°ßt˜Ú$)æ” {-%GD!H-”qa]õz—L§ÀöÎÎL70?ˆ8±Sõ[Ýõõî~ØÒ-âͪ­RjàÄ/vcH(Š™w‚;‚œœ#Œ!VTnzòEcŠCÐ’+ÿ^0ÊðÝÕD-ÿWµMÊ_ àyT›¢–gºmÚÅ ÉÂs2}ÿÛc ¡qû¦«–¬¨ {ˆ™_ Ä]ôÓ“í‚™%‰–ýüä¦ëÓ‘Àɤ Ô{J$r%1mŒ5É)Ø·e½KšŽVöð4Ò_@LÍu‚b „ó€œM_>“ ×ü2Q÷;Ììà}€ùä*)³[@BŠõ˜˜X9«èb+{3å™/·r:4Ä"HŠ;1sñsš2§F* G*y‰WPµÊuÀf“B•;3UVÀkN¸€î¬;•ÇÃ#nhÕ)ŠØ16ºDÖÊ÷wûÍæ†Ü"yé‹UE3BÒ‡r… ãnÏ?”…”nº” ¡â™qÎró„ª4lÂΦåõ3z¦öÖ,› ª|Gš’` J‘¹ÎÛ<§”è >üRwuâ;{ÎÐ&mu¼?r¦àÆÖ’ÂÌA%‚}NNèô¸õœÆ@»<&5pÁqë¦Å³í„ö¸Ë»z[obB¢c½I) €‚³Y©ÁèíæyJ †R~JFpœúCÃ: üÎSséqS®¨e ðm$n¡íÂs ; 稭 •-»ê)Ù x—£;M[Ñ´õî®j릘Ã}‡ÕËôP÷^“(ðIxË2ׄ>Žxr<îG,žô5×Èž,'‰rëÔ±yø,Åç‰!dˆI?5<°.Aš°´>—¡:wàSÉ4#h§*R*sXÆI%ÏõX’¡ ð8,‚G»×Ä(–·9¡@7ΨšZ2Ü}s 3×T#.Þ<]sÊ%›:º%XEŒ;4©<üœbu·Úì׋e;ðQψÕ\æJÒ° )¡ \˜ îhb†w}&©§@gèÅ…Áà`(½rp^b«8Š‚:–SÛ:U¼ &9Ò1ëä BR…@s#eÇF£~l$!Ÿ7jFF–ìÌ(íªƒÄ¨mÔnËMú®bÄUÛª{Lfe9wA1“ø1E.1Úœ”9Ç.âÒø šÞ˜¥Ä}XÎÃ×åþR÷Ðì7©¢1@¯íŒ)ã;6”ü¹S‡L ²Š"…a1Ô$À?”eó4háþ/RåÙâ1†ÔQ~ÙVýC“HZê—¯£V˜gžz2.bE©]2êoªrÝ% ¸_8,c(UWo7V‘<ÝïÛrû} p–*+ê7ˆŸŸ†/[0jWŽ 4C•5kD­ƒŸ2MØ×CmAC7”XŒÒuµM–¾|~µ-wå}E! 9nVÞ.áHŠÎª§·eÝáÈzêð&lZ;™ ‚5‰Ë„¼ƒŸƒ¯¯ÑÂp«ÉñhÄÄfSRC@Veþ¹ÜŽ`â$_15¹®K”-”[â Œáá"¥“>ú±wÞf†Äfsq’å½¼hH9*‹³»ŠÜü)S¦öÄÜ›<|£…yDb5¥ýnÿ™ƒgêŒÛui©Ì7ÒŒÊóü‡2 ?j‚,]'‰(ö!x(Žˆl "†‰ÜƦór€¼ãwÀæ#$‹°zÃK\’Fùí52#ÚqO±_n ×Mò4.Är.æŒ]rî¦4/æ´p-ÀÒ–Õª~çÁr‹ûňÐg%ÈÃòu4Jé#´…š6ψȤ8=ˆéúÄnÂ…´â§C¡ï8ÀaOÃnŒCï¢kjð"ç9Òp§gâ™q )ÓP’]x€ Àd÷ ã%Åì(®ÈŒ_-’Ïéa+SnIkQÖ9šÐîåðAÈáÆ³ñoú¯k…ÎéŽq¦ï9úÊËž€íÛ@Kè–HÓ®«6òF*4<#òF^°ÌFߣ'zªäNŽúDÍ;êË =0Ž ¹„ùÐ Vzq#’ßA#¨zfåÇê_(µ{ÈaôOúº¨ï•P éÍËÒR‘Ï,íHä/ dD¦$ɇãe$eÌãÍ< ¥¼šØÔ¨E´_ª8iÉÚ¬MÔ†.Š |«þ°ªi®s85­˜÷£®y‰wã8QØ0AL®­ Äà"ƒ µ|¨²pêÓ ¡Á/óÕÌ]• §g%^keùj^wL‘}ûz‹yrƒòçËŠ¡ ›S:‚È ý:OsÎD!“„»ªZcVÔJ¤(Û  Bµ€›ÛÄs¼^æÂpB\Jn6Ãèâ ÊMû)­sù¶Ðh7¹ÝªÊ÷mãr0ù¾ &ØE+³˜b!ƒÅ<æL×Éø €™…7€"Þw…àw£ëºÉÛe¸}(ôhÔuª¯áŒ:+^¡UX~$ÓZ îÂ8Ë^ÜàñI\ 1PÀáfÁlè-ïS¼Oüº¯Úç_†•áŽ6uÚš”þ‚’áúj±SyÃCë"ÜÂáÚ²©ðéª#˜~LlÉTuNƒG.h>¤Ò¡ÍàCv îjÈ—ئrŒrÖûxľ¢—ÓIþÙ–O8 ÄWPìÝü-yÏ÷?¼ùØ4Ã.H†§fß¾Ì쇊„Þ2¾´È´ðÛ„dLÒTð¸4qw¸8ìÇÇӥvžæZ ߟ,õùÞÃÂÒŸšu}—nèMå]Â\4µ -"Õ»΢©ß=#Š+›{`åoG, x¥ÂýÇhZsÜ´Þtå¶z7ôͮۦé¯Wõf=ü7üú1ý»M§é¢àBKøBç_Óé3ÆN¼fÀ-zuDœéŠß¿,ëǯ˜êã»ö~¿ùR™0¥ŠÎ~#?3A`$†… u‰D¹€T\¼­ú}›n%˜‚¼´o÷˜ý¼&Lƒ)7f‰¹A9¢B Éa ô©ˆ–$&©Œœ̬åØ_Î.íž@6A îÝSä_]¡ö9?JM?{²,—Üœ›ÑËF±5­ÔV‘0Z—ÛnÁY—liÃ-F ”±-ÃXÊΧ‡“ 2mÇÜl›P\{uŽ3 +§µï¨_cFÃè…Ý/u HLì}éÖø¦AßTT!¬ÊžúìÊ×;j6Ð` a…ó|ck|§“ؼµ9˜V‡[~Ú ÜâõfmU®^Ø,Y×Xp ¹©/°î¾Åß-±Ó'¬ô¹Íd_%¦-?`kp’“WëÓ¡VŒœ*ùŒÊëOQ{“Zè9ßÞ•Yó R¿ÊeèNòªç]wÄVŠ…iÒÔV-ý>†¤‡Íâo¥XÈ¥Ì~â.àw@Äd—ÐBR/™QAéi6×¹?±B•#š½ƒõnY¿Â†¬=ƒ¹eýþ’Ä46×ê5ë>ßžG9µØ‘S36b°ƒ Tãpâò{áÑ*ÑXJ:M»®w£ËÎÜ]j«MÙ×_RlKµÞ€c<_Zxi7qäGD/ð£optÉI̦­ïTêpae6èXlò¶¡)Þ="¦äßë ‰´ÃìÌü<ÁONy2»~{õë«ðçÿQ4endstream endobj 677 0 obj 4224 endobj 680 0 obj <> stream xœµZÛŽÛF}ä#„¼ÄYh¸}¿d± d× Ä€±ØØdæ…ÖP¶Ö’(“T”ùû­¾U“%&1 اÙ]]uêÔ©â|™‘‚Έûÿ]ln¾Ü|™Qÿ,ý³ØÌþywó×w–ÍlaSbv·¼ /Й%3-ṜÝmn^QJ¾¿û,6v°Ø²Âh /Ü=Þ¼ºwK(+„’6>zW-«¦Ú.*÷#É ¢ˆŠ?¢ [j=S…ÕÜH·%›•4Îtk×~í"Îû+oYA Szv;XûÐÄŪ¿X–+ÆãÙ?zs ùMæ|h;ÿ"#1ñi¹èâC Û‡g?•i!'*=|<ħp&‘émUhMhZø¶{ôë$ø"y‰ZKçð—˜òñ-—¢ ®É¬Û[úWvage´I;׫­ßY@Ðh|ÖUÑà +Z+4©Û7þ]Î ch2«ûäí§º  ï¢ëÓ|t0+¬Qfx2ÜSRtç¢vÏl¡´aéåæqµ-»ªu?BjRHšj]v«ßܘ†wЇÞ,]€W^´Ž&PÍù9ûÛ]0âiÓE«Åê›Ê‡ÐÇ-ñùaµ}ôû2Y(ˆQz\LÇI»ƒĉŒpæ×¾®ÚE³Úu«zûÃT$D‹*x Å7þ¥»`øøØWp!úÙf .%âèç}Õ<ý×ßÃB3s=2¨)”RɃËýváL÷[Â*ޝ73>h,—ÜŒœn J MŒ;…aàSf<ô‡û•´9ò1ÄùBl*p’Hh[ùËP e²q]\-Êõú)9€™dS\jˆM‡•["@ä‘ T >‹AÍh´-¹ÞbN„|n6oPò¼l2…d\©q6Y5vøÀü3qí¿{*¬ßµ)†$ûµY}\m}†qFédÓ›eŒVHÅm¹©Þ/šªÚÆúø6ãxЍ]–ë¶š{KTÁ¸1NBÉP!pб2žÎ­€¸¥…Ûè"çJ­Çx¢ì˜Á»+GW2BZt0cH¡e›j²Á¦·½D‹J#Íœ ç<&´¢ãŒ8Ö nQÚï«1¡È–=¾š(°@b†QÿOýº)cMQu¥ÇJÃа/€qä1JA_Êá°Tçiª$sÙ¹DÕ`¨8gQÎpɨBO8bõ{ÙŽ|B¬¬<÷þE†ÐŠ^bˆ":@XŒø›ä)Ãlf¨ˆ#ëR(]~QFî>N`-³&Õ[û5YXSË!NÚX¬¨âcŽ…°2TSgòÝ¢•™øË.°@Á)¾Bq,ê]¹ Ç@ëÁñWàtŽÚ*]hµ î±Ê3¹ÇÚÆ(’ÃS¸#`ËØ<œ o’ŒÅˆ9(¶‰¡+(Í“µ)£ šiâe ®AîÄzžÿàjð@Æ%B? ”0@ðSǤÙf±oš@ÛÀ+ÜâñmÊ ‡‘òõKáp‹¡k; LÿŽã¨Äê¤Î8fû¤ŸƒS­T&^=}H´ Ur~]6±ÂmMÂȇ}×ÕØuž$Bñ1B@qîüM*‘2­G ±&Öè*ù“·IAQäL%hg.žÖ& ‘D&ìbR0MÒ…ÛªKLØ6·ñvÇ2›€­¤î7!Í!  ¹–º€7ÒãV™4Û£} M®Žñ>Su[Q(Ï(qßõ궆î3·“A40« ïÅ.V2•ý3Å+'$ XtBµ¸ÌcN8Ã5¬ Î𱉌g{…dêR b˜±—î4=HÆcDA¤3$ÖëÆ°T»Ñc¸’2aZæTnvÄ*–É I`ÃÜQ^w£³Ó°¬+¯¼Ž‚ëh= Ña`n¤…cÞï<0|·–$ã¹…œ’gG±€×>|ªCÝrÂÜq¬'ˆ¥zŒZ}³óè÷ü¡dÚÃs”|46q ¤}Þ”(žr L—©÷‘ÈYFeÐÌ@ÞRã©Ñ;½†¨·ÿP¬ï ð×H„Ô\K7 K¡¶26$¡?ûƒEMuª}¹‹a±y–ƒ%{Ôª@£¥Q ö?&â¾²ML܌ՌK./§R‹_"Î)…›Œ[…Á9ç´ ïÒw¢‰“ò<ܲ ‚ŒTGœÐ1Yc/£zE®è9§óÈûUô¿ø2¸™$óWÅe_”<þú²qDÔ óùŠxg#p|± ØTäRo>yÙ4bsrǢοÁ0æZ>Œvq€Ûgõ Lb©†`Ýe‘w?¯¶CÜ´kEøð»PÝ<ÆK¨·é­eSoüS7¼ÇÉšo•GCè6·›:F²BZžåÖ7M~°=c9„u$bb{Qw¸ n|ŽÛ¬K·MèZ!w‘UßĹ·$ß®¢cŒÉ3ëe¹Z·“Ó;7p¶8µùHÇMèQM¹jqÂK%Fõû¢Ú%6:–ÄÂcìþ×ZðÉs†C;i†r¿ìñÞ}ŠÁ„J¢ómú ªíqWäÚkCÄð¶n[­iÏ«Õã·1¿´Ä€hب…{Aò ›ëÜZß±…ßï %²ïý;ç<¼µù$4rÞ<&~Åy[G²”B ä0›¤8›¬ÜQhíñ—ŽwŒ|Òëÿµjû5ôÙï÷>´ó2–ö…ü×<£în¹+o^ìr÷ S^u9£ãC^×1 Jç°M>€#ä•׺|ä/»p3au¿o&bôªÄF€f«‘ú>gKÀ+"ï0ýuŒ ë*´Ý\G‘TÍo»]©qk§Ûî ÁÃahkKÏé¼ 2ê~˜ Ò@ðƒôÜùoëCì×:TÌ™óûÈð88´h“/2·|½j*Td²4—Á³æsBܯ ½Ðü×õa›¯€»ÿWº>#”¶ü²Ë–ðkÆ9§,áÏòJÈ̇ýxžšãôLHºq'§Ä3 û÷Ýìç÷çÿÓIendstream endobj 681 0 obj 2745 endobj 684 0 obj <> stream xœí[[oÛÈ~7öGè­YÀbç~Ù¢m²À.¶hâbS /´LÛjdÑ‘¨8úã{æv†R¢Ü¦}é"@Ðä\Îå;ßwfüyA*º îOüwõpñùâó‚úgéŸÕÃâW¿}§õBUVs#W·áº°¬b”.´‚1„]\=\¼Z}õxßðþûKÿ‹%¼hàzqusñêã.¾¬ú/ëÊrÅ8LàÞùƒ{EV†s«â£ë}ç?¤¼"Œ˜ø´^uñ¡†áóŸêô"'*½xóŸÂœD¦y÷HUZ*⣷ÝOVDÙøŒZK/á/Wn¶²Š)áV.l% §ñÕþcV %Ó×ïšÛf×lW~2 ËW$mŠV4 iYH &–*­ˆR:5ïR°+leɬۓô/¿Þú˜Jh,ÒÕ_C0ÉÆPÜø‰ÀÆÂBÂ&8èûz½o~YooÚ'oX%i5þl™p“vñ;÷h©I%)DÀ’’Ê ÇzÛ>5»ÿl,pNëõz·:lê®y¸~òCîý¦‚Wäñ1oÖ»fÕ­[o¡+B-LG¥¬(“ÅÒ'¦{Ó>óR] {bÊ8.S•±v~{ô£SkfG…É%aŨïš}W¯>ý’í¢eÅæOÏ`¾·‚õ;Qˆê%s ùæÓrwwxh‚UÅ)OŽìö>¾–ŒV±.ž|%ÆÖ/#M8K†|̃°´ºfµþ®ñ«f`*1¤ï›˜ÎsoègR)cÓë_ÂØà7ŽyÝîâ|‚ 3oÚà À.ñ´ýø½j!z1y»ûÚƒ# ÓÏ~òÊJe’'ÛC.ê¾wi-n©ÞŽgîÂk‚)„ƒ®MF’4…ñ*…”w¯­¤áfl(pz?üÚe¥ÜÒãÊ{‘[æ²:O1ÿ³¿‡•¬[îKÜëªNøÃ$¾øXï÷SQáã¥MxØyÛÆ-ôò „D³@¬Oâ&¶ø¶œ™AÀ%¬o#Z3ðÃñÉv?­ïîL)LÅ…I.¬&s‰iU¹Dœ*Gtžg*”àg¦ƒ6´p²vžãäq»ÊÄŠ5âRIö“† Y†}›¥oÖÁÚµ*#b{‹‘/ÌÌ&ýDTT‚*9LVQÍ“‰¯#Ñ L8®4³¸ãÇÖ8 È>>s½¹9ÔÒ€Œ’ë4žºGBP‹Òê¯Â²p „šÇ¸!íÊzœºÐ/J‡•þ¦îêîùÑïX¸,`iÇX£Þô1Õ¸´D'ý~\ b ?Åd‘°)ƒ,äŸñýž ’«´š¾¸*d`—þ«7Í~µ[?ºEý0‰ .ŒJ‡@¨½=lÑT>&4mtç±ôèq³&Åßþ1Ø ­µýÜñ¼”Cy`¾Ç¢?®´)ƒŸdø›š½kS” ë2&5¢\º£SHžSš¸!ÑËŸB0C” <ìq5kX*§K®¡,›”Ÿm‹<Ÿ¥mî××›õöΛ…:ô™…hÁîìz¿:ì‚k¸«z2±îª8£!&íïçÛà#{õ8‚#ߘƒ%È¢ô}½K^üˈsWïn‚Ë!u ²µzŸ@ !° (¤¬6i[_&€i·©£¹¯%hÇû¦éöç™Eu„n‡4L#?Ö‰N¢fgÀ †ÇAýž ‰8˜Q’¬R)¹” u„gNðÓ›fÿéÒ/_TÚêÌÏ´âR"ÓZ]*æ ‘øi\iÙ9ÙeõF†²ÞGl3LãB·õ¦½kþGBVÖ9É¢aÇ|zH)a-ŠÖ/q¡À“˜Açæ´•F |m`¹03aïûœ÷MýôÖà®âǤÀi ‚IzÜ×NÞs4ìõ¡‹“)ŽÑ¶iê¸Vcõ-@8š;D+”í4Ï×8¢=F}ɨˆÅÏã÷6m€(ˆhž‰l‚r—D–! rÂ! )¶ ʸrÃI¬Ú-)Tp5¦u—é¤Ï‡S¤º\Áùb¨*ØT²Óävô¾"™r¥œRrŽùǘ¦)ÀC=Èç˜çB§ðý]³mvQ”eÖ!+†ß_ÃJ¡¡Ú}3Y^]ÅÌo¾„ErÝCžmx¦„e¢{¬V<=»RèØgL= =Ç@àÉ{ Ì +R¸»)÷¢KQ.å9þra(¶?\Çš¡œ¢>“õê^‘*•: ?è¼ ågƒuˆhM³Ý rD¿ƒDàTý+h ½(ÞúZùç)uY*!{êøÌòµ[ß4K˜ÈR¿|Ç.1ê®Û­XšTß8R·ˆcÌA¶/E`rŸô=s-¢”›ëc@TÐVõ&„18•(4† Ä»•, ‡ð*`†BhjaU»ÈÃW›uˆsµ^ô†¨2$ÇÊ}d."Q`í›eDlÚ…}ïmÀ–!êFÔÔE>óþàú¯‡U®~}ð§: Ü(kûrì~FÀ®yS_ƒ”‰9þœP¸¤^ðŒ0ÚçxqK¬•Ö,©ÁÐ-=.©DÈùÚC>qÍ8‹ö*FšéÓ1ÅÈòQE¡•ÄmJ¢]˜‰=Ãf·Ou-/<ó#èÙ²’ÎõRÚ|®Ø¥1öääm–¶ëÚ‡H¯HŽLÔDð²Eä‡DpÍôjÔš0 &OК@Z\·\ áoº8®»qja[XÃ’ùRÐ ËжMÔV3DœX#½¡Uÿüç[û§C¡+ÍlÁÚW±¸ …’2iW b Äg0 D.d>lÉÚU¡¤HWð#Eç ve ';]ý³Àì‰W@XPZÌ:3‹X¨éRÅGXîG±.ò(Õ“AÖ±#â5í,6ç&ˆû@»R6¡] CÐ=’j èì‰ÙO«#5Ž™jWã¤p©Àõ'd A`Ná’)AEèHá.¹ò}Ð"•‹È„Ò5‹\Ë”È2t¬QüÔ§Ú^Œb(fÙk)†ÎœìéL–½’aßâkœFHRÒã,Þ{¿7+{En:`8 =n^öL²èr>žšS½–aÞ¼mñ™‰qˆ·«"ê¸[€ ¿É%ì™]ÕùxZo6ÑÔ( ç„p&Õ/SÂ:#äË•°ÌçbÉ‘=:x¢ I#Ù1@Õ)DîžÆbÃóén_K:Cd²3ÐÀذ9<Šú9ñ‚_åä¯ròÿVN&;Ÿ”“Æ$ N¾PNJȸ²ÁQ!±²£œä¹u;+'!¡5öâ•”"9=CN ƒ?ÉIAÑI¹*)ÇÏBt˜UM,Kô¹´+„>mbævàU)hB=]´HDvF+õÎ+óy8S%u¨éi~Ðd‘Ðù´tNs‰«úƒCmIÆï_mòþßÈ ó× Üj4çòd5ó1¼ùRMT4k¶UÀ} '¨Nï×››ˆ @]c#Ÿu©‘”œìÍêhž Ï?‡\oSyË—IQÂK¹sr``Ųñ^TJ%š± ©B*yäÔ&J°¬YÂíódè0 éËopÓÜjPE\NÍ(Á–Zþ¯‚*ÇÄa¿̘hcô.ELbKª°Ö1’ùã҇ɇsÌ67"ŽdD¬ò€ÝiȯÖÈrx>xšâ‰ñjs;ʳ|×WÉ·°¨™Úv`G¼è²Zm±}À ®)#ã¹—H*Djn© íá`~)gÐ í]ÒÕ°A•ä.Q>1U=z‚0b§n8ƒdl_UÉ–„ú6”ó˜›ÊP4¬C/KTàñËá7¿!7™ªþ8÷¿›ª@òˆþ7»¬Néê²:w#xf{ŸíÁ ¬=½}2GzqFŽ2wªÈPߨd$Cý{2Sû (>ê±cYîÉ8¥—›zƒ|Sìœ|cîÖoïêAбñÅ(`Ú ¹Í 3‚E7Ü¥ [ÃÁ'˜,È0lÁF­_ª³X]]z–{ gœ®p[0N§HW4¶1=+“Neosض͸ô¾Ì¿öP(ñœîIˆÇa·s ;ÍŒ Qb)iFl¢PdgêÅKǪËKƒ´0 TH`¬xßW¡¡Úà:{*4V\çG£FZë´@Õ®ÿ„ÐŒöV´dr>ÈÔ\—é™–3›…X¨Rçvõi*r'º¨2³Å#•XËGp|B†GAÉÔ©&>ëÉP´T”¡FV´3!@H—×ò½À|ýö°CHâŽ¼àØ“fOLЕ—zNUîÔ˜™MÊ&TCðÖ›˜É›°½èÎòeä”ÖŽ:ZΓbÎýÂÔy1§ð2ß äü7eÕš½~CïÏm‡ ¦ˆ<ênZ‹‰È;Ù rØýŽ$vØ|<"‡©û?Øæ[ЖðË@宸;Á9Ä‚X(<&¨M'û"çò$ߘ¹r¦•>/À-ï»[p¢ŒC¿nìÄT¿K® vÓ‚ÏÝ•Î*´GЏ²å ˜‘½J_ïº5æŸkwc^Ä gîÂ5švÕ>wÇéñëÁ‚%sžö~ØöÙÂW‹¿^¸?ÿÇ.å"endstream endobj 685 0 obj 3691 endobj 688 0 obj <> stream xœíZÛŽãÆ}ŸìGè-0bú~q€ëÀNœõÙ¿p$jĬDÎ’ÔŽ÷ïSÍî®&)JÔ~4Ø(^ºªN:UÝW$£+âþÂÿ›ãÝÇ»+Ú_‹ÿmŽ«¯îþúβ•ͬbJ¬vwþº²d¥%\—«‡ãÝ”²¿<ün6vt³e™ÑxØÞ}ñÞÝBY&”´áÒ»bW4Eµ)ÜO’gD~¢õ¯Ôz¥2«¹‘î•Ö¬¤qK·FpÝß» çÃ;×,£†)½Zîýµ 7«áÍ:³\1¾ý¶_Nf8·q9m×?Ha‘Œ˜p5ßtᢆ×ûkßçñFNT¼¸} Wá›DÆïôf«LkBã?tÛþ> ¾ˆ^¢ÖÒ{øGø•²æRdD€™ÌºwËä‘Qfm\ë¾»;¬Cº_(6囈5HXðܰ«‰¸(æy!ãJÒ3"â‡ìsDôɈÖÏûíR,1ÌKuÁ›`„˜Ã†8‰¸´Cí=%”FL½ø¤µÜÝдÁ"™ÕyÛ]à„Ž‹Ü—OûàkÎ3&y¼û˜?÷þeÀøâmàLªY¼óBj‡t5cZïBú1ߟ]Ô|dp5d7cຠ÷‹¥iÃÏÂ"3”5ô¬B#kvû¼‹s—ûœ7]™Ÿ{ûܪ13ë&¸ $’M}|>]áï—p?AÔž¿!ØX|6›Ãi[´ý„hà º}Ñ€«L™%?g!JœL÷ñR ¿ªú±Ýœï°5Ä•ÞüúYÿAÖ¾ð×ã ˜å2O7ß'™~VRÈ;~3_CÎz ]ƒ;”Õ1aÞ¿ƒÏç³À3éâ‹ ®˜F=Ä‚j‚ ænò¿4ø- &B>´Á[š"‚#·9œ «\"¥HØJÓè°ÒÃŒfFyíu³õ„¥†)¤Ë¿|?H­]SCj‰¾íêçÀº2“àØ=¾áаZA¨¦ã¥ºëêcaD„ß ¡…Ê«-"3úÖ©R¬9Êê)°3ÕXÍ’Í2ã€5 äÔg ìe1`oYX€±ö¼’Ÿ— ¸Qj,±!8’_ýÐõ€ƒ·.ôP†5ÉÌäO„ PE‚;UNïC±eßòxêD¤6“:ÛÒBGÄ‚K4Y7B•T UaÙTo@i TLMY̪XE€Œ_à ³oƒ')G•uªU‘{¢ƒ (¨¾º® p3]ðÀ}übßùÝæ>\@ž—Qñ«Ï;f!–€Fǵ;ä•£H… ¾žWPŒ™”gË.áˆ\ž”œ-KŠÏ#–ÔP-ÒžÀ×bágŠÂ‰áYAAñE}çYH)h¡§ŠMä×"8…g2ý½O6¢˜\ʃ¨#¹âSÂÍ5/]{å$(ˆ9ÎÑAâ¨äÖr•‰ø#cX˱&*ËP½yõÁ¬Fß]SóŽ*…˜"úýs[)Ñ}—ËP_ȰõZJ8¦-®}ª ƶ|•oÌ;oˆ ßÏI €蚢i´ ¥Ä´Øº¦^ªA;éM@‰ÍOwï³C ˵çß÷¬l>`1ŠÝ{ÓÕ…ñx*ª¢†¢sˆàÁñίëêÍS ¢~Í ` ‡ýÀŧ R4á1¶ÞÜÞ4†š8¢ÈdÈ] g¿0øðEr6Pƒ~dœAºã¥}À ô®%"ðÿNEhÛ%Fã×& H”“œêÌfsƒíC[xÀÓ€ 6Î#ÈÔ,Wut ´+ Ž €##àš:Wƒ£¥MѶ¡î;9®qÄì— µT ™´šÏ¾žU}Ñ@ÔŽ±ú‚ëºþ_n-/e[ô (bF Ä’6"ͺÊÃ!øI+d‹™®£ðT¡%ƒ‹ÛEÉRgƒ¥]ñTÚ}wäjªB t±o¦š/µEQ¨³œüÊ|Þ1¬. }âq÷ hÂ8È8¨ºýð•Ñ~kB:@¢Ð#åH@M9ˆ}±p…Þ`fù’J0oµfÎHåñðà«„Á4üü¬ÖL¦î—Á¸eô˜ñ 6@„’Z¿ ò)q5»œh‚_ðKÿ6í6¢ß4ùKþxˆå3¤Áõßxh^NîfI¥»Ó éýOuYu!QŒEŠœ{ó©*»Yç1·ádÀT(z”z…þóç*–,­£ï»ü· ΂˜ kÆÞš8¦÷‹tr[ Ci¡&r,Jþs{Ä?;ÿƒv²%’×ßæá`àµÐgLzÛ<ŽjBeœ",:5èSîôÁš ó¤"ºÝ.d¢Ùªãf¤õÛÏÏQ{¦É´S”~Œè0„„7Ë8—j±Ç5µtq Í;GC+zA±e웣˜“Í¿“5¯\#°5'6.’NA0·TFo]«²S4j³ó\.&b‘º1ʺÏá>MScR5¡‡s¯²Šºt (yÛ鸢™ÚV·%ÿzý<™ù@¯°öξ´*^‚æiTztD§‰Ïë Â7/¹Ô*OuE»iÊggÆ—sA…%XªTh]¸íÂÞ…RznOÑYìè¤â·tºý˜ƒ ä_|úÒ.Ôýœ' 2:kTÿ@6ã@.•?ÇwtD™gZŸBAÃæ'¨ÙyWnâ®ä¬•_†’—I~—Gºª—P$†5øú_ª¸ÅêΨ±O¤²­Aýác3ÃÉ&Éw„V¥-¸øYÊ1UÊ =3cElŠ£d:•×öUÚ„¦ Nç—Ä e¨Qã|ÙÀ@ÉQvq ʨ­±S“ ·)p½Ë` è²25°nžØîKè–šMgŠáÈÃ3ýêï<×äG²°Ì4¬ŽühpÚ[VÐÁuAv+G*“{7º„à˜yÜgàzfê2ÈÑ+s×—'¯¦Éç;Ìâg^“õ—¸.‹"š VKAn¹¡œ#çC¾ ‹¢ Òæ†sç†ém4-WÛÖêÙ­—Áw&½‡{)B<ÙÍó£j·'dÊBïô¾-Ä„ ý§ÛÔl6Í´mùxˆÍž‹ïÌ…IÇvâ˜k)̸:¼Ýu8·ÖJ¥¶ cÍ{Tbµþ".a¦F¹ M{+² T-!c¾"€&0ä÷®Ï tèYPÝ< Ê‚KŒ2>pƒizïÉì¦Í»ñˆ†bLŽÅ1àJz|fntÐ`òîÔTŽnœƒIEŤñgÎ3¸!Ám¹¡OÔŒO:©ÊE×Å1 ÍÚ¢ ¡ÈÆ ¹Šd08i¨NêÅ#2ný*qÚ¦n"q7õGDÕÕ6² w£UDZœNgA´0œäbÂAËY?š@8Ï«Á9¤*ò!àeÆFÄQŽH(gáÚ©=EÁÖµÁüi÷õÉ—D§ó©À >UuöK•›M2  P0‹mX´‰àؾÜùxBÿ¬Ø4£w¾³`EêËÒŠS@Û`&6¦ˆ–t„§kN>lÌÁqýwÐoW‚4Ò þ}@­2øŠy+„Œ. Ä:8!°àdƒNš9‡ÚI1üNÝ”Oɦ5CœIïËMȤ Ïõç‘÷uJÆÞ! žë94ÅÜ[ì9L“í¦’¦ûqØU˜Œ+1õ(4ió+uà jÏö@‡ýʸIí´ásÇz܆ÇûXó$òÞU/1Wool½@ÞsTÛG?mtlÀpp[üörnÔµ'σm§ÅÙ:wç·'þq§1Ñgýø¼ÁÃ…$øÉÁù<7¦LåâºlsÓ‚ö€>ÜLvr^2ú¡›é„ÎçŽåÓ>„9*[:Kµ= {ü¸5§Aœ$Fé[ §ñaÿæL’ÇÔ¶¯Ü‰‚v u½q' è1ÉŠ¦x‚~2žÔ”{liäÔ™ôsG°O-«Ò% ¼)$NŠ~©†½rù†$18 0‰ß0eFDÚ|Hç¬Å>`pHjA\ÒñJ)ÇS¢ð£Â'F„wi5)>g=°Ûa çcÊÖxS@¡á4ât™b ØE¦°·};‡(7þc(J_w ß “‚…ÕðTIµ  Òˆ¥ç)¿–@Ç'H­i`H4J¼kCw^<¡h¡*Ò4†‰RRZE§™êº}ÜHûÚŒðó¥§}é6?Æ.C&×nš",Þe'‚ Ǭ#zZ4G¯­Ã™åÎ ¨›?ØCONÂN2Òeµ+šÒß œÉç=â´ äöÌú“Gõ‚­ø…h+%Ô$ÚŠ³3A§@ï`Z__Þ~KhÝ -‹wÆ£,†™åB·n¨DÙñ“¯¼’˜á©ü*”™Rª{W@I~ ’ƒ3LöÙ²jÜÜëñc˜‰ÎÙxjêSå…°p=!rjšx)ÎÏÅ œR‡º/c¹ž: tæ-'v}íT9óé¸ùÓl‰î¬À±Ö¶xó;ã&‘g#ghå9»x⥯Šß>¬þ}çþþ{3£Uendstream endobj 689 0 obj 3988 endobj 692 0 obj <> stream xœÝYÛn$I}7ˆ'> g‘;ÉûeHƒvµŒ„FÚ±WXb@”»Ëví¶«{ºÊö ZF¼ðAH¼#ñ_D^"ªª»íöhhV;£ì¬Ìˆ'Nf¾›q&f<þ)/nOÞ¼›‰4†-ng¿>?ùùçf–§¼™_äÄ,H&…˜9 kè0;¿=y±øìü[˜ïÕxþ<Íãz6‡‰ÁkåfçË“o·e²Ov,(+l缌S óJ[†.»>}(ã’û2Z-ú2è`ù<ö› '*nqâò¡ŒÂžÜà>u²Ì9.túm¿Ló ã6”1‚8…ÿéby˜¬´:Z®Ó^‰2õ"},™¶¿~S_ÕÛº]¤Í ˜o9:%˜ÈK9^RÄÆ¢EB¨_bêqíì$™ ÜøËLËj`Ð<ˆø¦Úfv‚Ž¢­.ì$`…•ý ƒmbÃ+û¡oÑ ë'‹Ú? 3·Ëî´ld YïÑÛȨ.ËàX@ëç$8L5’¾¯¶Co!&ëzL™[®°)fÙA÷å K‰¤qË»3N =¶aê( { ¢£ÐLSÉ ŽSI쥒Tü+ˆ®E¡¦Ñ},9§wršM°ŸÖAàS7Ü*z6œè¹Ê¥ïƒ¢vðdECûHâaœRÑþqãÞ; B£$¾Ì -#_RÒuõÁމ@êØèä¸c“ïŠÑÎay‰“Ÿ]i \“Xèoª¾„4Ò€›†ô@Õ”n\“¤· •ŽJÔ ¦íÂHª†B@hžN„9zÆ‚¦É<V¡[ù,¹ ‰4&çZ =@ÙýŽÌF7x¬Ý‰Xdj"Ú ¢=P-4°ƒÊ+¹Ó¡©í¨McH•Ú%4E †í¨^ƒ³„}NÅ€t…fÑiIðš]²?ÐÞÖ}¿¾÷kø/wy(kI:³ë«Nð])óؤ8áT^oY‰œW$[^õ¨ÚHþK?œŠ˜$Ê’¹Ok­èT”µ@S~©ÊÂJ:f<¢ùcrx4ð˜è˜SÃSÑÊ@!Äq¥Ø½‰÷oÓ€&Q œHÓÕ%$ *W“r*úJ:ÊîOJälÐäÇò 0#Y÷)ôêãm^8€Í“"lKz8ì (ûÛ )²œ´<Ö…:ìo| ¥oP¦KÈ:;dØMƒ' ç‚L4W&ŠxuXdÇÒ'é—C‡Pw‹}DJ¤¡/(R+ërà€P[ uý“ESš?P©&ÚéKð†ºËÉ/%H3=ÌaOQÎë'l]õ͆” @ô\î> §ž¡çä]n†=A’¾h ®‡>ÜÜÖÅ-¨ Òó‰|Pp)·õö<çž!Q¬&ÛÖõ²+‰Âݦ*’ Â¨=U%ãoK—ß–ÎA´|UГš˜a×\…É-Ó®:ÿ®ÌA@õÔæ*öwÃ|Ý.êÓd%IÍPhªÕ¡í:I/Ï·ó±tÂûs8PbêÑßÐ)ÏóQ;.ù"‡K´ÁXñ ¶…øCe»]yöä5ãË™ˆ\ˆ/?ñUf gp4e&½ã¼ÿøÇ?ýá_ÿLtE$öhÿ·ß¯^ÿíãßÿ4‹®)®šî/«Ýý_ï—?ÝdÞy¯ ÷#>ªg!ä·#É"ni18¢º8«ûW‹u{Öü¹Îð‚­AðÉÅÔ:"óÕè‹Cíc.´‡-ñ%"_ÿþÏ^"Æ¥µÒ9I€cÏs!Øé£ÃÛoêE_µ×ùK¯ÃqËŸeŒÆ·é;³±ºçLûYY^ ’iÕt}Ie#‰ŸŸ|9QQ0†‚È©Â?×Wÿ·xí%¦â@3á¿õtCy8I¹D±0KÈ'[:œ)AÏ i~ÒsJ<Þ>ãÕë‘e~Y6^Q.vk,t~x—Üûà‘× ø,nóI¯A_žÏ¾>‰þ¤ObŠendstream endobj 693 0 obj 2423 endobj 696 0 obj <> stream xœ½Z[ÛÖ~_äGyr‹=÷K‚p›Ø1P§­W€÷Á/´–»ËB¢dŠÊnúë;ç2CR¢Vëdˆƒ£s™3óÍ7ßúóŒ|ÆÂŸü÷r}ñùâóŒÇ1ük¹žý}qñ—÷^Ì|á0j¶¸¹H øÌ³™Õ0®g‹õÅ ÎÕw‹ÿÂdçG“½(œÕ°`q}ñâ*Lá¢PFû<ô¾º©ÚªYVá'- f˜É?ñ‚§-­™Â[étØR‚ÍF»`ºwJÚ8w™—ÙsQp'ŒÍGs?¶y²N¶…—FÈ|ö«hNá¤ôhΧ]r0R0—GËe—-lŸÆ~.q¢d¯ïó(œÉ4ž¯m kljÿì®ã< ¾@/qïùKøÏ¤çR«‚)¸¦ðao—ìêÿU»4}?å á†ärã…mZÖߤ¥ÂÖñ<ÜÝEc¹-¸Phl8%ŽºÂ)‡·ZÕ»®˜4–‚?‡ë)kEœ~ÊL¯Äó˜y_7×›8U|‰Ã'ŒÔ¦àÒ?E!„4qîÕnÙÖÛ®Þ4ßOÙ óܘx3ËT\³H¶ \Ãal¯.«îírÓ\ž ˜lyŽ»Ù7Ë`D˜)ÁëÚâFu\íaˆ Û愈&¸‰häÑM³ú-ŽòÂr‚í§„y!µSy(Îr)N±=åÊèt¸˜±˜ë²)o«6Z¥d …h“y€IŽÙµ«ºŒzéÉ5},ð ÎÜo#À‹Ö\¿i»|SÈZCI[/“§æÒ2€ gEŸ#ÂF2¼cŽœ QÂ4ÔÑéÞKFnÓ0‚÷C´F¿¤—8·Üe_)Ñ?_¬ë¦^Çɼýaû5B›50ëåº|Hó•- ³ç¦ãU$ü¤ÅnÒL3Èß2 Y` kž")à—qŠDã!qÅî2.,„Ÿ¯ÙtP'( ”8¬GàöVNÀþe†=ëKÔ\ÖÞ×»*g¬ñœ`Þa~K6åyUXíôÐ#à$¯Ì‘;!•%ÑÐM&u àbv›B17LÉÝ$‡ ˆú /”‚Íîn³_]ç„ôÚ¢Ÿ3e:&쨢;qhý²\­²ù®ÐŽxŠpçÒ©BƒïFQ+cDy¨Ÿ#Vn·«zYbfh˜.(Õ»»²ËÜÏû ß'Åá™ïwirp'v»µÖ˜·-çèÇošk¢JÊÖ;ËL)´Ç Ü£9âIÿ!R!!µ±|Ø8,CÅç§mǸÀ%Ræl\„7Ž Ô&2–n;ði l]fĶ‚²®Ï„Ì\‹ ÉÒK§0JO¨ŸB+Üx@ ,ywß\§Q¹ïM»¿«£ â5}|îr.2OÕ­'ÆA¡\®˜AüèyàMN%È­ñü@QI?IÖr}àW(ÁDqg¢í ýq´¡Ž)Ú¢»Ë©•ˆ8Ù@ø‰TRŽÀ¸­Öe¤T ¥L“o7-ÝÌœ“Éhm¯B“?ƒ„sD†›aùäü8ÄõR˜c‡ _g ÀP  €ö'†@EÏ€à÷?§ì Õ°Y)Y i@ÉQÿ8jËfW'*¨Rв¥{¯¯IíM›Q2DËž…c¡ oAG”q…éärÑ4Œî!ú,L' Xä Âs i27IŠ“Øm‹œ/È[Õ.¿€ÂPŠÑ»7á’^+ت÷é±ýk¹BÑÌèeÝïÖ½Žvwß'ÉOþ±-ïËO«$F Ñyeþ·Œ}ÎH}Ùì}“͈<=¼c±ùÍWµù(@|îu† ¹†—¿5Ù2x?Œ”) u(·R&@°@Ó˜ƒŽA7Ì^0#ñ™lÊ|cè <ÙiÍ=-þ`dhl uÊ Y†G:Õ“/kšÀ­ %4vvø8²1°¶pœTÈäeuxÁM>ý²%Š;Koƒõ¦­HÜQÕÛNÃJov‰N¶¿Ã%¹@jæ $èg¦Õc!£iÇJ¸AhLްõïv³ÅÛ :´j»:“óÇE(Ø£uÞ…ZÌþsÁg506ø XJÍ :>@zÖV7'Â/ý4eÆC‰’á1ÀcWxñþÕ/—oúeA§ŠSÏu¢¬q?:ñuz"8Ç©qó¯÷SPzöRa/+|žJÍωýÐb$ÜŽ•­vñºm7·m¹Æ#£HX*FÂÀ6ÂÖ ÈŸ#z ¥½¡ò¤¸}¤ÊÆ¢Ss6jj@•—Ú!¡žäîÔQé6Ûùªú5㇭–j•sÅNv¢rR}»}·_æAˆ Zv—j<µh-µÕ¤"!4q§ëº\mn3…Ë€š±&Þ‘ÑÐбÔïx8ÑFv:½â¿^Ùyzœ÷6öSзàwûæKV+z•¤ˆ/F7Œï¡¡mšìÏùP ñœ]•[ ~ÈT݉¦¡-tOᲔ˙€ÄzÚßK” Ûü7MT*Pôs¨ÂS]¸Ñ‘¦z”¨Dx&R®m‘øhGYÕv¹ÜxN¹’ŒS[0=ÂæÒÁ¼ûǪܥ¯C>|k /3ÓM«<Zÿø#÷˜Ò“ðÏì1eãâN†‡ú‰FðÄþ}£FÒ^»®­›Ûœ´͵êѯüq§§ß ï7±ÐuWOhŠ\½ùóì4þüg¬†endstream endobj 697 0 obj 2607 endobj 700 0 obj <> stream xœ½X]oW}ú#ö­Tªoï÷ˆJ ÔKðЗ³!®b;¬ÿ¾çÞ½sýµ¶p«"mîÎÌ9sæÌ~®8?ù÷hròùäs%Ò3ú5šT O~{ï\eYpÊ›jxyÒ½ ª ™¢r6t¨†““G£_†ÿà¼W«çé×Õƒ×ÊUË“G·ù°]=ìXPV*8ˆgžÅ#†y¥‚ÍÎç‹ô¢PŒKîóÓz´ÈÌwÏ^×tPqK/îòSøä†ü4ñ‘eÎq¡ó£·‹‹tÎ0nC~&B¿â?#U`ÁJ«cä:0í•ÈG?¦—%ÓÖÐÛï›Ë¦m¦£äÌ |ËéR‚‰Îd«&Rl,E$„éó;ÐyÅU2Ä;™tøìÛ4Eà™vŽ2²¨¿>îLH#+Vùä9ÖÁÄ ßèãY³øpúüºžÏSÄ–iAßÅ'¸0Wžè ô(³£¨ŸÄGƒ 1 ΂ƒ/õuŽÑs~ÀÌÓìPII~µžòå¦=ñ=éMžÀ{èÈà)Á®ýt;iR5Ì EQ,æ))ó%WÀu-òÍ2jÏL„µ³›tiX(WiF㟺´ó„¡ÅU‚Šp±¼b+?Àui”i=é (ÈiJÃå¬Í –\™}fïÆÓ‹Y2k˜ÌWó¸•4‰w-Î {¸>w«G·®¾DùÞüA!ƺj—+î‰'ÿlg)©YÒÑ´‹q“ëÊR„¡ÂÊtâÃiüãËaõ¸o B¿^Pš/M¥™4Ûæär'‰®H$*´`Í{‰I,úüí³³³¾lZ0©)ÅE{f&³NPBÏ;Æ”Êxí·øͤ„¥Wë››ëñ¨^Œg ä†Gâ žºigŸÚz’ª¢2¡ üg¹€Ý{WkÚ`]ÅO–gÑèºq·gD9Å1Îï; =ÝvÚ“ó{Û¿r@Šc«“ÇX9z5·‹la½ÿUtëH{{Á¤£ƒ¨|Iò’6æ´…¾(XýÁØãR”NbÅ[êýÙe1j÷®D8ؽ²8Êa”§§}ÃáîjL·BЕ®ºÉâír—>$:“äq»%úÏI^«X{;¢‰w¨D«˜õ2oCY?|R[ëP\…@qG™ì´ ÁÕæÉþæå»áÒòv<h nÍßé³\2©4•ìùë7ï^ö6šËÚ4¼"`Šn.Ì ¸¿ MOÅšëE϶%ãîMìGKPÔª‘egÚÍÀ ôý^ç#šûñõâæM!iÛòò¾–%­trÿƳ¥kû6 a¿ŽÅ(¶ËO:Êa!¶åÎYêDn´E<îâ6ÄàxÑ£R«ÊPú’øJÀz²ÖLÇôÍPÆÃr¹¼Ž(¥Ð¹Ë<55f.—®|ßl/gm·Ñ+ËEQ÷% _Y @T~·¦|K%éŒ1è4åä[ßÕC”vÒåæÜ^ß±S@éZ&”]__6 ÇÉ@°Ç8¨xÍ_f Ub Ä jÿÞµVƒ=–_XX' œŒ_jïÛ(Ú•Ï+k(™\_¬ÃÈÕeê=´w´.=ñ=½£ã¶Hh[ë³+_g4ã—-¨žöe%ªmÌvVV–ó!Ý|ù…¥ùºì2á¦êé2Uíé²zùÍ]Ïâzï ^XÐ0 öc Ëö ·t_—Iþ=–¿¸[9ëÖü=¸ËT©èº,Ý1þü ¼Z×endstream endobj 701 0 obj 1882 endobj 704 0 obj <> stream xœ½Z[oÇ~Wû#ˆ¼4ÄéÜ/ ZÀ‹Ö€]§¶å¡/kje³H™\Gö¿ï7·³Ëå’2[Æ0ÃÃÙ3çúïÌäãŒ31ãñOù{qññâãL¤µú×â~ö׫‹?½ rX°ÒêÙÕíEþ@ÌŸ9ƒu3»º¿ø^ûÇ«ÿ`³;›ƒdÞ|pusñý/q‹L[ÊÒ›ö¶Ý´«E2ŠqËmùI0‘E:7³,8åM© ³5>ª¼V.í]”ÃÕpç\2á¥u³ùÎÞoÊf;ÜìXPVªrö³¤óJ…ªÎ»m—>PRr_V›EWÄçµ4u£â¶.Þ<–UœÉM='™m™s\Ô/»›´ÏÀÕK"q‰ÿ謹tb&\od²S9—ëÙ\†(ܤo`¼c&~ sØYbð¶í®_ý´¾[oëåêf“Œ«jëãö2.JW;7Œ^`Î]­ÿû´,­t%YS‰¡•„ÊŽYkeÚzwâßÚ«úõ—‡’3N’ íö‡â,EË­ò)Ù\½€Ày®ÒÞ_›»$À3Ï)³&|ð˜e îÕ¼ç›æ±yw—‚¤%S’×€Ìÿ’ e‚Kùäî»å¶+þÔᘈO«eÚ8—V1©a‹àHQ.ŽØ²ƒobË^@e$&tG¢@âî·_VEeí(‘ºæó"pÇŽú<¬lÜYE®Ë/%ß¹µÄû_:Ã`PõàÙã8ÓÊ=®…;ìñ'þ9ŠæÊ!ý¤ðc ¿ÿ8ítïQ¢#§?Û¼ÿt߮Р%¨˜ºœs)p-úYõ¤Ü7+7ÜŽÊx·(Öj¾ÍÅ é”Híbùû6}*£ º)·QBj7Ê-`$2B”Õõ-Iµµ“ޝñÔÔÖRñÏ1 QFIt¨jÙ¨lºi£Œ00V¤-Î0{LÀxjbTÏ2;x •§­Ç­Ã\©kïò(•!¬-Ž~í9qG÷="KÏOiÖôŒ U£”!´bÅâÆe­ÀRA“gb~ÌKŒ¢ËBÅÒðd¢XÇe³,œ”3ÖmÛn½!qEsê šÎ»QKÐBÈj\:Z1$¯uþ¥²'®UÝÖæ1šSŽ÷^‰ ¦­§yöÙ2Ÿu›ó@ŠŒ ò˜‰©~¤€ ¦tÇf•‡zLŽTŸðÕmÌœ®tOíä]ÔŠR;Jòé@üâ¶DS…æ™2®ÑMÌ¢Y­ÖõêòËUÖˆsCü³k7«ÒY…Vƒ.:ÝëœE)ŒbÈõ"ÏShmçäyÇ'‡iÞ¹¬4opàÿéM·¾¿œl訂‹C÷5`)Öí¢ÝtÓ®*mšå¶Œ'–y%ˆà|^´„@fçw£Wýž–ÀŸˆ/EÍ~”B«Õü Íl¼è#DôG¿;dy¼A#Þ6…¦·Íò®½ù®pGçè„*„(:õUÜ ëû¨þ’ËðL7snÀ"OVê©èhb¥#F¥4]–lÚîÓf• U¼d‹@{&Ú&º _WLpJHòùá® ›}l!nrcñ†”°«CÛÜäl¸*(©ûnlE·£lʃÑSìÃÔ>A E¼/T™}±C–ò˜ãæŠÄ›œs(u¼º•;'ž #¼çl§SCî4•QCµ—Zÿ'OñâYˆ§ngX©Uàh=ên›é ²^9=HºŠI±CÊ1&QöA#GÃÎw%I @j7¶)0ÆD- Ò!ö·½a9Ö±_Z …¥¿³‘¯®¾oVÍûvS¢¬­í(›Ç38J1¯"i7Lñþư÷©"/l»æî®à_p®:ì¢T²âØîCf}èÝÀ—x—ø5ìžG€*Ôµ•£ÎÝÈc ™ž ëÔŒ|TPŒÛϹü>î"z¦RÈ+Î÷|41ȈhÄ]Nà£I¨™Q•* ˆM—Å«ÞQüŽ+cˆr Ÿ‚ᄯJV¡ÁÑdQX$üæƒ1Ç\¹Å4A‹×˜ÏÎx°GЄñg%hébÿ(C;Ó‰ÄÐ'ž†­H Gi¾(wM %…¦Œ†žK§vsÈØR¸t{3ÉùRF#:+ÑHOmŠëÝÂò °'+Æ%û›ÜÌ#K• þñgmAK/ ûþ"1-!&©¬²G:‡c·÷õFÐK’Zgxoh䊦•‹»ñ»ª qŽB±`(Õqé]5=vO¾«Þæsˆ¡ £ë¯Ã§éƒÉZ^0+è4?~ë7Ò¤^’å83B<ýB8õž¸í6ËÕû‚Ù/?Ê«/£ý{Iÿ2Š”ö„‡ÑocÀþ“SìçñNû7z¥´±Ø%úëÛœg÷ÇEÞ»­Ø¿å—Oÿ?þu/Ÿ;’.;òäùõŠN?q /.N{áL%þù/¿«(zendstream endobj 705 0 obj 2374 endobj 708 0 obj <> stream xœ½ZÛnG}òD^6ÄÞ¾_6È^{áˆÄ`!ðˈY³&94‡´,`?~«oÕ3á(ÂÂ@Œ4{ºëzêTµ?Ï(a3êÿ¤¿«³ÏgŸg,¬å¿«Ù¿.ÎþþÖ˜™&Ϋf7gñ6sœpÆfFÃÒÍ.Vg?,~¼øì·¢¿öQ9›ÃFg¥0³‹ë³>lÓfÝßlˆš ¸Àïyæ·(b…p:-]u»ð!„rjÓjµØ¥EÇǵ_ª¼QP7^ߥU¸“ª|Oí—41†2™–~Ý]‡}ŠPíÒsŽÃd’ÜÍqšké%—ŽH+XÚz>æDj•¿~[ßÔÛz½—)_Ó¬#,éxÿH&V:KĘ™ºw.Œ"´žsçuRaóÝÔyÆ©d6Å»M‘Áy¶Ã¢ù®îü2·ÄجÌî6ÈÌ a 5¼kÖ×mتˆÃäe2)$ÓŒH6›ƒ=­‘aç¢]­ªõuwLRÎõÓHºlº]ò¹¦.«ßÞäC‹I ¶šõÇîˆ Ö‚7ÀÌœX¿ù^ÔÝbÛlvM»þÇ”\Ç´z;Acä_D!ÇpJ¤ËÁrù®Þ½ý<šh26(‡´ËºÙ¯^¿Sä3ºz,ÄQTŠ¡‰Æ·{“YŒþ÷¯ýž_Ìþ€to΄€ÐFÉ™DY®f’pÅœšmë³›£¸1º!ᆔPËýyàd€ãùo¯_?{óbJQm‰ÀèÚlÛ `+Hþœéõv—|éB½_Yâ&—¯ X€›Ãˆ)êwáçÁ=7÷«!ß(˜bîïd ¿~WG¸°ÄZþ˜ a’hÁxÈQ§²R÷›fQ-—A Ò ‘Õh¢¶`Ef³W›.­1Š€þO¦9»k2qeÅ ¸ÀTZ”Ø“à(´MZƒ ’寶÷«zdQ³¬)à,Æå¾‹Æ ‰dø‚5ëèD öÎ | §´ËÛÚOÑ]¤Ï xšéCWóÕf³ÌŽÕþX«j‚*ŸW$ÒQ¨M¿ÆþÛa 3¢5Ë]FáÁXA^žÈj²•Hég5$ `h–z[W8¹ÿ€Žàï ó@´s/µ…bPÙ€ÚS¤µ’Ä‚èpñüTZ(ˆþÖ¼†Ô4Ê䥛m» _Kb$2…d ÈWM˜C·Éð”ÆPI³§*] :‰u*§T$íºj·ß®ƒ³Ð‡\Å5”+ÌØP’_ 5ù _ÁH¶ÕyùÕMARAí‰Ð`n4X?¤¥3íùÓÄ$ºbþ<Ÿ'c”DTøÖ¦hŠå}_ÁDÝyvž#Ÿ@ì ¢ "©w6Cpíâ’UŒgÑ*°ÂÆÂ—‚(ÇiάûLS Øæ ™t†!ši•µ¹|Vj­£i zOá à(DXéσ°µÁï.Þ¾zórÊÒ—YÅG‘쀱cÀÞ´ÛUõö”ÞdS؈sŒƒÙK®Ä+Štþ‘æŽ3`K4UÕ¥Au>³:¼¼—Eð•YÎ~I…Yô»½kº:DÐxCéPâ¹°ÄÐÃàÙVð ‚0E®¿.êM†íƒ.AÉCÞù>C‹dÄJ<ân’CCÏE»kv·ÉĺdÑ÷¹ñ`K\¿è|Ì´`$ýœØ.72 ž‚ ]›êéfóÈ=lØê%¡ ‘ð7FK$«¿Äj h ¬éFÌI‰ÅÁ—) ´“Ó P¬ãXÓºI6ιC2iÍ ‹‚ÿ‡>,û<å$'†£¸u—¸º_²p¦öêÝxbè<¯˜7 ìØFµÌ¼Ž·e}wñ$èmÃ0{±­îª«eÈ| ‰â°>Ìÿ™˜½%椠šŒºг´S'ì×)J¡Ë†Åó õâ¿ü?Šè8j ÷ŽÓ¾ôÅVðÝý:‰)ÁЩ¾ñôžzG ˆã‘OüGJeÍBÞa™Ä ¿Í=D8„²Ÿ‚!jƒ7$dåQS9æçtaéW{6Oâ ‹šNÈ÷Ó¤í þ%ÝÐxÏ ÷–p,ÃØOî…¸h×6v®Òðrça ­±ùûSm·¥X~{]Çzño:T Èr0!¸xàjÕ†’C½ÔJ›'’¼?1(Q¤åÖß‚ÅäQ ‰² QlJhOÂRjlÌeþªZîëcðÇ!‚Üpq<b‘ä’!¥|,VN§à겦 Ý ¯«]µ»ßL@˜åüVg¬BÎχñÿ¢]ïžWÛ:|¾€°`<—‹ÿ~ñƳ“%îÀÄö?Ûv…›!è ò=¤øŒ+ûêÕ¢]7‹P¾n½åÕº‚îKÝ» Š/³¾Ê@­•”Ÿ6\_z¨ã6{µÞìwy·hQfÄ`º)fÄUÛ.£HT@“jN*?ðàéóÇ>÷H-‡°zÄÈ¿7_WÕ¦ǃ§.ëW­xœ7»{Š‹NiÔvg…ý«¨}È~¿·˱ÇYîuÕ}êß!›N©s2žíd=²Ü‚Ì©ñ¨Yk/þcç£Ð‚=ÉA ó8µÊ¡Võ*õ†cS|`jÇN¢Þ¦:¸—/ÆI•.¯õ&Z¦”œh—È'ú©Z*‰†bI ·H…ÌŠ2²Â¡’ÊuzŸdUSº€êcT @\8tÖä¹7s8×3<ä¦MÎv¥X-ö]l–  磱sXEE aÖØš_×ËTd èØ”ôÀ·“ä.²“4RÐ÷ñ‘€°eê|½)ž²áÙ*þø¬üØ¥íY$¶»¾‹ÕØæ×_7‰•ôšÈ:=@Br‹b< Æ «ÑU\„æ &ë½®¿¤ì´GX)þ ÃSØÃõ r³‹“aè'©FuÒÄ\zÆ×ïWðXL±qЯ¨*c”I¼Ll“3r„c °5½¡d³M¡ÉÐWÝþ*é«•'¢¸K‡æ ¯}(Þñwhž&5œÐg ÅJPM¨‰Ñ"-Nà6ûî6Ëj°×~(z ÔNÆôW¶ŒMŠÝõ¡Ý%J33a«Ÿ¤ñòJñáÇóäYçÊ£aæ~‘å³2GämÎŽãtŸ„¢˜ª £óÔh‚ˆc÷>ÖHN)7«qº„‰Dq4¦ 7hæl{•••¡hµœ×]fE(¹Æ[®·ÍD"4m4 ó­Yyöšéóî¶Ìâ»Ûv¿ ÀâgWåé ¿‘hÙ”Éqy8šÎo*sè|7;ô¦–p¥Ll÷5IЬ°­fÕ,«mz²¾äŸÎ#wLbâ¸gT‰ßžg ÆeQJc>ºYFë©>Ä)Øvôì•øò— WˆÛu´ì%îòäÑ?f!Tõæx̪áÓtÍPß)¹ŸÂÛaúçCea6%~‹¾BKÿ®ÝÌ—åöXŽŠ$ êí0ï¤r¥‘S‹½k“B ÊS¦>¼bHœÃ¢5È*èjp|¼ìÚ”+JQwpL÷ž£1× ŸÌ²}#A †C—„üóƒÜaþa®ùs‚X9A-‚k|`‘ x˜ýÚ)×cQ †bÜ­sêQ‡1ÚK=Îñù¡ÔóZ ™èZlH ˜q˜þÙ¥Á¹€xÌ£EÀl° ëd»ÎÏpžÚŒðë%¥úAþ%°`k«‡…˜{©”a½Ç¬è=^`ÁòbøD?EŠbßÛ¨Îøý!”Ü_rȶÚfê+6úGÂbÀ@¦ò ržPJ—7ûRƒ­–cþcü¿¯*üg¹Ì™k°ÎöùOV¾°w0ýÿ„·,ÿçúË;endstream endobj 709 0 obj 2901 endobj 712 0 obj <> stream xœÍZmÔÈþ¾Ê˜oÓé÷—œ‰ËEÇI"°«ˆ/ÞY/ë0c¶‡…üúT»»«mg–½»H'$@žv¿T=õÔSÕþ´¢„­¨ÿÿÝì.>]|Z±áYúg³[ýpyñ—7ޝqšk¹º¼½/°•£+£à¹Z]î.ž0fŸ^þ[7ì8±FÁ —7O®üƉÔÊÅGoÊÛ²-ëMéR‚PMuü‰¦4f¥‰3Â*?¥€=keýÖ•Â c7qq1¹æ„Y®Íj=û¾ƒõx°!Nh.âÚχí+„KÛ¹îúáE›äÔÆ§Å¦ Lž½(Ò@AuzxsŸÂšT¥u†ckb eià/ýÍ0N-’•˜sìü%ÃΧY % •pLîüÜjxå¶ñc-áNH§ÙºajC4ui½]QÊ]YG£s‘׿:ŒgD:žÆwwÍa;lQpB™äéyÙÇ}»ìÞþ® K:b%“iÉrçrJ 7i±ëhrÊ Z§€T$ õM|¦œMÏn‹mW’aJ8iõçûý¶Ú}ÕÔÃ.˜CÚ¼·bØ1gÄ9‘Ö¬ËÏÃ’X‹¾Ç0fÒyË/ûx^©tÚIá ‰4<·LË(áùí¯þÑZXI”t«5˜üɇŸ>úŸ$–¶É6å×ë㵚¢ÜÀ9`§‰«zÇÒD1—ƒ…šè§Ô‚/Q9ô²/ØùR2Í/ÑѾdòØ•kNÁŠœqR"Îÿþú°ÝF§IÍÒ[»&œÒ"á¦ÜFWåRÜWõÍ0–+¢]~dyÆèípb)‰–¸Å‰ÑE*؃ç€L˜4s¢B€£‡ú¸š ,½»?6XÓuÕõ¶Lë䨼mÚä„ÓþÐÝ Ç’`Kg¿Õ, ó8ãéæ^’V¥õ>€¬…”©)~Çœ±)&¸PVŽƒÀšŽäõUý!ҋĘL*D[œf9 Z«Ùü” Ž€.Ó@®3&÷ëmà SˑգÝÀm£êœºH!ÜÈôzsñÏ”–§íÎ8¾q×teÜÓTž·Äãâ˜Ç ž"WŒoæL›èÛCdVKŒµéñë„7؃FF=‡7“ʇì—·L`dÃS›2ÉCVdB:†òG:ëméSh…é%%¯[rt!é0ØîÂiÍÑi‘í 7¯…0Äâ&a âA#quÓdz0‰P¾nËpDHv–c°šwѤÖàÖOEØBdaÖ–£¸“€ ÊÙÜ¢èuèšÄÝ‘,œ¤ï×~ˆ!ŠZ›PÓTu´†S8UÙ¾ib.fgɼüRìöÛòY4¬3FöxfÐQ*¹¥Õè„"YÆécTEå¦,Á˜; Ý‹gfÉÍá ‹ÍÜ`œ!‡$£H3L$€±$ ´‘ìé<ÂÎìíiM]Ƹ‘8.ð@|v–°â¶˜AÙ®£ÍµCî=É÷ïŸÍØàÊÎ$‹ÿ€çŠ‹in×( >é§M>s±=”]LíN/ˆNE&¯r1Ú $‘&|ÛŽ_„ø’žm0÷.’ñ´@ü-j¯hw·fÀ‹®½6å&”/?TÃB*3nÿ˜cØÿÒN-… mñþÉwGâò¦©ÿÜG÷9‹êñcÝ ºFJL’P „dƒU€ALoâ© 5PÐsñéw¡pZ8*”™<Á#”£¯švWlOžŠQê¹òÌ©vM×G€À^7ÇÚBp1É´¾uX ,U)}`fæ˜; 7f°fêú¢ [€X). KKGØ;ƒá¥¡‚"H?`TÀhÙX'x©ïÿ;%gÊ1”šÝiì@ú1úvŽéò§}¤9“¾b4)ï‹òÜÐxt_ê^tO}ß67èNâl ØGôï·é]d.p‚@ðõÑÏZŸxÓ(ŠÝâëªÛKE€tBï¯yQ¿èY­°·â†Ÿß¥Ò" ¨›<Ñj¾2UælÐêûTVâÌby´M…˜¡ô(cŠÜ½™§'ê/’Á *Ž!Í8O¶ú\Ý”qc–NžñÑ⪥"ÃÒÌ])t%Au~èRëÎ䌟ҠáXô- UkfÅéEÎíh¨g•ä¬i,™ÉZ/ ENìû}ò¢Á~CÓ¦Kæðvå°‰'Q™îˆ1HB‡tÂÆW§LIn y'¦1*²Âì*ïýDIŒp+ÏF·¯pœûÕ05éwœ®ñ&Ó5·Ä:)ǃr_ä¨]ì©W ÊbP‹X×Á©RxêŠ&§¦$eÆÍÙnÓ–±§ggz¡.l–ö§3`š;®)$I¦fq KV{¿ý¿.™Ý·@h"YÏø=_]½-ûw/{Ô%Åb¯[,  Þ’xàC½A›r2ԨݣrMÁs“ð*Ð9žc€ ñE‰´H;wUŠtÅqo(Œùø Qç@Uo¶‡@\ í†S®c™Aê[_´G¶÷·ÖŽÍ0SÞCi—s,e˜œ¶±ÑEEÖ‰qŸÅt!ÜüÆÂóvÞ:`ºØ&ê2DSUV¥ù¢/" Úžë°ñ¼§œò,q~¾ÑZ<×ý] Ó®vÜ _Zlžg8˜Y²-·UŒy DƒÂc´|ÞM_ ¹p¦( Ã)΄vÓ~ö´®Š—a^oæFòïp‹ZŠL×ߨþz)mõ*àJ(…•êO£HWPØŒZ‡§"Ý–`? uýSÜ$÷˜\Yü¬Ù7¹Àªå .€cQÄÏùP·£kÍ KƒmËþІ–˜ð"ÛK£íæ¼Pîö‰-FWùòÞl‚»mÕ!r-X݆LF•ÅëâzùfD“ïúÞ½ôcþy¹ú×[U°7H¡Â'{ )åÉÏ·›ý%[^Üžü~g¶B²=è¿õðóaäðÏ‹Ÿ_]¾]¸Ûb^ö·!Ѱœ¢Ô/£jc0¿­X‚ʳ¨ÃMYÞtQOpp•EUAÉì¿ ª„ùbAâ­M†¶¤!™TƒðbðU± ÷V€’×ºŠ¢L; ¾ŸÆ¯,K åÀð‰’¯ËtèÑ^†¢@K‹ñöu½a8î¨ì¢àñ@íj ¯ø Ö¾™O!Œ‡ê#$B(P¡°Ñ‹G&3þÞEåmq_Äû˜Á9(€ÖÇl‡Îéú6¡`£Kcup×Ðù—«(¡ egvûÓÿi· Nb|±öW»4ÞV½ýZÇ=I“«—âË ¨ˆ,ëìÛ2ÇöàK-6¹pDB•1®ÉÒ`8w<ýò}0¤G>$Á‡Ì7›id¿/{u„ÜwúýSÚ©)Ÿ·ñ»:©AÑ#Êû€è5dᆷ¸ï»£ÕVÊ‹Á4ÍÛ}dެ¦åuÇ$9«@BrK)édø‚ÆÕÃwj£+–û;”¹þ·îðYÑÿùšÁÍendstream endobj 713 0 obj 3115 endobj 716 0 obj <> stream xœ½Z[oÇ~ú#ˆ¼4ÄéÜ/ ZÀm‚Ä@í¶±û¡/kjem!‘2—Ьþú~³;s†»\.%W) XÆh.çúïœõçgbÁãŸôsu{öùìóBtkùÇêvñ—‹³?þâܲà”7‹‹«³þ€Xɤ gq‡‹‹Û³oW¸ø7ö{µ¿Ùíãz±ÄÆàµr‹‹Ë³oÿµM›íþfÇ‚²Rá¸çUÜb˜W*Ø´ô±Ýu…b\rŸV«Õ.-:\߯ý\åŠÛ¼ñò!­âMnò;u\²Ì9.tZúÛî²Ûg·!­‰Ä9þÒIò°,Xiu”\¦½ië‡î°dÚš|ú—úªÞÖëU÷˜ø–g¥ý•Aî_)`bc³DB„©w—šÃ®Pe)CÔÉt›¨ÛÕ¶¹Û5›õwSWKÍ‚°v±„‚AÁŽñÐÅu=õ‚TLëlÕïêÝû7¯W›õÛê¶ž”šë=©±±3…fV‘¾¿Æ%H`¬ÏŽ©×M¶rðxÈf»º_¯¢ÝÁ‚vY”»\:räöj³½m»[‰¶pXÂ?ME|}Õmåp%ù­Ùå5O%¬½_­êú²=ï´X 3·}ßc"›qè=uÞ;Òª¸»w$x8´}hÚ~F¥Ñ'ÍUo.kJùZoì(¯÷á¿Ó^0£ÈQ{媬×U›*¥$›N…H½ÎÛ ™©Þ%þÅ]È:„­Ù׆°6æzžâ)˜ ÇV7œç‡¶ŒÔ&…\¡’_Võ]άƒÂD’D$ä}–˜â5' Ú©üEÞ¡Ær3Ì»‡fwÝÉ ™Õ&Çß7¹;Aðek â›.〒ˆë•pˆL$qxU „Å«*þL¯Æ‹YÈb†¬êm°SÚå÷?¤T³AD*x5bÌÂÀ‡Èü%ìk-¸E=ý±èIJsï’²N’$u›š¢¸äq©U¾üèVp¸Ü{®zFPݤÐòœp½¨Ò]d,p;ÿî‡mõP}¼é¤Ö±`Èü›åŸS2ˆB8ÐÎ6ëO]rèEoÙ)x¿v¿î#m)œgQä%b. iô§—ôм(²¸ï<5“ïsJ¢c#į¾±<,®ŒÑô!VÊ¡•;ÙÁÿJ¹yèãE+²N—°Ó»¿Ol&µé̦…;yìO|øé´H\QUøþHèZ@®ÚëÕöÓýmcÚ2%JÐëp‰M$ÇRP* ŠR1:VåéÒn½»K4¤èו·¶b…CˆRŸ‚HBà öúh{誆üÿa’Ÿ@i!ÌÿAò%Ùôª7VÛó„E¡x2…€’Bus³IA =ŸxXáõ}[oÛdÀˆ?¸Òjj&/Sï?xz¼¹z,^<Õ¤¶ÉLÎ’™êªmnº+$8ƒ§q ëÍ”%Eß%¢c„_ìA 29¥ýMñܦRdJop[¥$ ÁÐǾH=)Ƈ[ÓÓx!Oe-5ðÚÐĸ/E𔢉MEâqîOåøÔS±Y>O‘P¾fÜì®7÷Ÿ®S%vz»z§Å††*Õ¶ÌfŒClî·0ýe¢´è¾Å0àbC§T‰ÍL¨JV=‹e› w[Å¡¡PÈ3!Êw Í:OÓe!AMÛo  •9Ñ*‰i)³ä¿".³3Ë·¾4dÊPž>æ 1ÅM˜\ww7ͪŠu²ŸrËØê*ù´)·d¼|…<6É;V­ ]Päk&Ü ãXØh hÏ¿91áv€GCÑ7=á6H‰ãüßl‚ = ‘‘£ÉØ4ŒÛ”ìâi$î²ó<[¼Þ‹óÿ•GÚ˜8æGb5Ö;NßÛŸ« ‰^N2K[î|ïþüR1/Õ8ùž\G°?Õš›> stream xœÅZÛnÇ}'òû'}¿8OŒlÀD:1 H~-‡â&{¡w—–•¯Ïé[õÌ^Ijí@€Íöô¥êœªSÕóëˆ5|ÄŸüïxvöëÙ¯#Ÿ•ƳÑ?nÏþö³#ßx#ŒÝÞŸ¥øÈ³‘Õx®G·³³o¸`ßÞþƒ ö¢qVã…Û»³o>„!\4ÊhŸýÜÝwËn>îÂOZ6Ì0“â OSZ;2·Òé0¥ÄžvaëÞ)iãØq^\öGž‹†;aìè|0ö—elúƒmã¥2¯}·Ó8)}ÙÎÇÕ:¾È±IÁ\~ÚŽ×ù¡ÅôéÙm(™)ï>ç§X“é²N<¶i¬e¼ |·¾‹ã4lQ¬Ä½çoð—Úeãsiþ§F燹u|åæË_·³äPÞXN«OÆ‹yùE‰FxQÞ/f³v~·Ê¿HÁÊÉç‹å¬þ8™¯ãÚ4ŠÓZ3z.m£½eºi»Š…ƒã­Êÿ¾Ûz0±áèÁ38[ôÿòÓÓ¬‹T¦‘\–9Ö«hÀsÁ@#¼%ð–ôÕ›|q®aÌ–=ß),|å>§“Õ:ÇÃ|aëâ¾LªUy†˜6™J Ñ’O?­º†o z—Õ9‚s+Ë^'Ñ$äZ¦ÿ‰G«ÿ' ¾•}Æ­[œÆ½}AÓ½õ2Äbc†¦§0’Ó æ®ŒÞ婹ä‰pÈ[sàŸï¯n&ÿíòÆ b­1…³ë]û†5%×bèc¥*{i§OyÛð$fß/–9ëÉÝ.g¸W9CJºò·#ä P#úÄ[ó'ðâ¨òž¦ãüÿáƒW¦ÌÕ¶‹JŠÜˆ¼ð§1xMÄÐB$®BÔL!‡5Jš?øøùAO¤L­âÈ iŠý%¤rR~g ãÂs^ {#Þ_…¸ý 2x…Á©1n„p¡Ð#ÕÍ1á²;»ß«§7€–õ4WK@ æk0TõÛw77»¼Ä%Ô1é0è´ k«MñÓÇ$a‘…\±ð—©¹s²œ¹}|œNÆíz’2èÆ¸/Žz\.>-ÛY’eð è0`Ç–Bw;.Š9­Y’;ƒþ~ž à\”Àl™ElÐZ9eu«ó,Á 1ôÛðR&y³Ê×X¥)Ònû©[¦ƒ@êz¾‘ÑBÊ`eÕÅÇu›”h´à~‹€½b; ø×$Q}c4©ùe·Z<-Ç ïç¡2*qË”Џ_.f™#ZÒ&v&Â2[Ü›k#?Þµëöc»êšÝ€>Vr# ÷Á€¬¬d§²²`Ž÷È—?\ßÖõ^9ÙzÎ7ÖÛÁzW±€ãðWÅ}o¼¼þa™ ¼ï¨"½M†‡Àç–˜tRzÞÉM(,V¢X˜• hä¶°q†Ð1kÇù¡â”&ó.CXXJ# ÖæšRñÃdœÏi8Áô! -m…;¸øx:INx½¦áÄ­P9q1äÖv¬Î–½LVYß!Åî/Ÿæs˜m&±¬ÔC%¿I¥ùI! òsf$ººº¸þ~_teäû o˳,ås}<”òCÁ`i[lÚÖjD”R“_VorÄ´²b­{l—íº+³KCpÛÓcÔ$_ܼ½ÌÙYŠº—äX#eÇ&³Ï·§}šNÓÞpl¦©äî—UÔ²@•“ý UAŽ{†"Ì@Æá¥S" {@C@âÍíþìM)èâînÑN£*QqÕXó“® <)å|5«Y±H. ûà‚°Èœ«"mo@¼àºø¾ê3',¯€(‘…¹c0ëÚÍt W+÷mð*H£!vsjo²Fq–¢cæm3HÈùáÕ»¼¦îi€HL<tú/E÷2%¸DåYQv›=C=Iô]?¤P™ 953‹âdÑUqæu|Us_’å•õÔÿK3"ópM½Œ^I:f¦¢c7¤ENä*!ºƒÒ¢.>!0‚¼‹t¸|ûÓu]Íb+'[Í¢ *¼·ÚõÅÕÎdï®õ½JÛ(DEs°Í‘1혰ƒæ-Ð+¼?3‰9èEÅ^è%í [*èZ?¬×¶eøieB_í°éRÑášnW“é•ÑZÇ9{Ä ¹ô”f€@PÐ’Ñ ?ý|uñ®®ç£9ÑzVSz°ÞÞtaJ¯b·ÐÊÄZQäá<¡ŒÝ.²µ¢ ‹6EƒQ¼{¤FsŠ6Dàöœ˜1ÉK«~°K=¸kU( ;VkˆˆôºÙÔ]8¨£ƒ¦øk¿p¨A!õ’8Új'·@+z’#‡qßW¹/ ã®ÑP;%:LV»ŠcA×wü€$ép{b¿aM¨oû=ï»Õx9y ün×¼¡7ÂÍPŸg—lÎkHMί×FÑÐHNÕRù"i«áÊ`*º)S¹c$åÐú±›OÊåaèØjrüýÓ|\ •P)k’pažš ‚Õo“»ÜÓ µ921¸S$lW(h¦¥æƒˆ°uÚÐ+™å2áTr3äÈP ¯»å}›¶ýã„*›JU%é\Ðy뼄 }¢^IЉpó@ììV«n^Ê)IÝMƒnsbpy·Ÿô–¥Av.ö€PB‹=´ë¼[5}»ì²b…Ò/Sôò§¯Žßi‰P‚å½ZF{}šÇ¤’,ô ‘õtë‡<7üY¨ä´Ì>°ˆJ½™=Ú¸Væ]Õ/ß j[OÆOÓv9Ü×A=ËçÜa ï¾JÓ G’µVpd3´…¥ ÅÒÚúåÛHýó …œÜH›—¥!ÁµØl0y¬ŽuVK²Gùê¼9^×&µ¯¨ŽÉ±Tš¢˜~¾Xç xFNêf+Nñ¾$æ+î¨3ýfW Ñ"…òÊ@x8j¦Œ[Â;c’²¡ò&-•ú’áÎÊܴï~2¤=Ÿm‚û“6ËE¸ãØ[(Ÿlµ\(÷WÛË2$%ÅOɲP6æ¾,š›×/¾ê‹¬Nî5¡Y£jóýpúÁ$NÔr»IÔ¤TÈäBÄ¡ëÍ™ÌÖ™hõ=d2ܸ!™úYÁ ;ê‡î!÷ˆdSUØ~ž…Do‡¹émíXï \¥úçŠ0!‘tàž!f\j¢a Rví[ ôú‰Å!Ä fOyé°¨ṫ3©c­ØH%¿õÃZ,öݤû·ËÒ8Ô½d]û¡‚ÚûlEá}%·4¨1Ôñæƒ-ýaœã0¡9Œ_§e¶6±ª(sn“ CQFvÁœSd ÞiEV=÷ Eöòòf[‘½"Áö(Úá"5äUÕ~Æë¡óÞîû/|‚ïÅ êAA•zVžq²^öå˜Õþê÷É1¾ÒàAyœ"ÏÀžÙ0¤¸>ü•â¾£¼°Çã„?ÿ_ÒÀôendstream endobj 721 0 obj 3183 endobj 724 0 obj <> stream xœÍZÛŽÜÆ}_ø#æÍN éôý"#dØX†¢]@‚‘j–#1˜!G$W»äãSÝì.^gfw­ ¦š]·SuªŠóeE [Qÿ'þ½Ù_|¹ø²báYúk³_ýtuñ—wƬ4qFXµºÚ^t/°•ã„3¶2înuµ¿øaó§«Ây+†ç×á•«5tV ³ºº¾øáu<¬‡‡ qBsü™þˆ"V§ã£M^d‚PNm|šmÚøÐÀõݳWY:(¨N¯oãSIU’“ûGšC™Œ~m¯Ã9E¨vñsŽ=ƒÿȨ¹[9â4×Òk.‘V°xôCx™©Uzû]¾Íë¼Üa Ô×4Åë®t|x%+4b<↭#N)ü+)8lYsçRá4'ÌÞP’He“>\æíû7—Å¿òWE´„×¹HRÚæYxh‰aÜ ­qÄh'Ó5/'·8Áåf|ËšsÑ[­!\1Pà·ªÞg»¤£âG©0¾‡IBUoÊRœÖ.f†ƒ» ÑZ³pöÊ…ÿ‡¦×ï1††ƒ£#Pšç1ðÈÂ¥ZØ)°ä®9€ÕÔýÙ¯Ù.ša)Fzäý¶»Íø°%£~®³Ûìã.€Dr"8MXÿ-\' £<éwÌe,üÐ ÐD²t~W4á!Dº¹4ß”EÛ…Õr¯…Ì=aìËÿ_c×\ú´`ÑÊÎÅ  ±êŠ4O²äD£¿¤†²DIÝY"ÙÙ€ü¯-™e WŠð¾ üéËû2*,Á:’ÝI8H4élÈ8À“YJ®7ÔW–Û®ˆH*lzt¨«C^·÷Ñ\îxú—Ïén ç*©ôcð9˜à@ÏðæLª.ªˆÞ•/¿¥öQM ì'&Иá9€@à#q\Ô;¢±"|CwÚ@1SšµÕ~Ùrm÷Ññ–+Ǻbצ)4”ã>`l¤ò½¢°ßÈÈTë ¯„ •bVm—TRtÒîè(IhJ’¨%Å èͰ#ùðK´2IÍv7ùrëÃ5ˆöœ-Ü™<è¢Á¡n$eÚ&-mèT!.­Ãª}µY{H„3¨a§È%ŒAî¿}[5E[Te:,¨bB]o«xñš(Qn\¾þ½ Á«“nï[êÅÛßå›6+?uDê%8-ݸ/IxS”C!]ÿ@!2UûSf¼Éî¾S–¼ËñºÜ$1\ðljáNœ·åEsÈ7ˆ)õƒB. 8fÌŸç÷ÐÈÍ<?eM>òëiüÍ §gýú¾(_ÖÙ×¢cýQR,‰œ×?E;ùP^œ×ƒŸófSŸtÏ—j•Iµ×}ÄOW]ªÃý‹Iõöm¬ä‚;„gŸß3ÎÒð²IþÎÊëÅÊëH?ôc2Ï®¢0x"'íó}d/ÃMzø1¸ŠG‘yÝD…¹5XŠë<²tØéå2°;„™û1tÀîþ”èdìǦÚåm¸@bpcëFÖ,JÚåÛ¹Š&YþÚ]÷+™®ØVu„KG7ÕþµÅÇb×ÍÐmp…áw¬…oʤoA˜÷!ÿTçYS• Ê;’T:{¥°ÇVÁo3¢|ÇóØèD~7[æÐe—­1ék FOú¼§÷}QûèGapUq³OG™K*jê ìà¶ôv톶٠!P~ÖM…Œh…[¦¦-v»é8nÃv»*aZß$«‰ÑU”©±Yka4ñºa³ÃaWl2$Tý 3é@ùðëŽãnïJ†OÝ4ùöf×CA+JÙd@Ë"±ùR× ÒsÌãó6ö/Š!œAÔ4k§È°„ Dù>»‹Èð³5ŽpT²!ƒùânÈ 1\Nãu<³8L«‹¬<ó ôÞŽ>9· -H޺ο+;oÓÊ>e²Ô0Äðš#2‹rS瑆„ï!݈†€¯œ@«n?›˜š±¤Ãg‚"KC95î!ïYL¬Cíw¸É,Àš§ë¶œ§ÓÁ@ –‚Z‡x\waÕ”øòÂ*b{ÞVU¶“*B£ìÐ1"Ø—úÛè+ê°¶VW”e¸­=Ì5­Òb–8‹Ëón  ¤ãŸYÛ{c‰P!ˆÄN5 ³^ºÿE—wE«pz‹ÍÝl7n z*TDŽþT|¦ŠïÆÂEûîç\±—}ä{~Ö ëÇé’ï3›¢–E?HèCœû!<~ ©}ynbQÐ`3³¢p¡ 5 ›nPëüàÝ4¥„A uÏRàtŒ#ÑÉ!z2 1pÇw©qT˜ôƒ†cËÞ­±‚'’äg1†‚aYZ|µMvrßaS´L„1±ûzŸ•‘ÍÔ ¡šÐX$û½dÊw+p¨9BÛ¤¤ï@ÛècÑ„fÈÆØ*á(’ѱ”Ø|'¢ àǰQ´¸B¡][çÀpKû¥b¨rEC[m0ÙS e˜O£1h£©tON[ÞÃ`Ä0œ±ézFûZ®ðpSÔ²…´¢²ò‹¾2K÷âJöu$š†JæÜƒiÚàЇ¼LÒ¯EúÐ)0¶‹;<è¹­@Š{<•k\挩\k5sˆëñTçŸbÂt]Òd±À¼-óH9ÞïtO“1°b/[bè;š˜…NNzUˆÁeè rV}žÖy›eÄ p&Ãêpû¹kM Wa† {Šg§¬‚\(G¬Fò'K€XC †AÒbð«£ÃçnÃÓz¼=ÞYK!“.³ï H—å%*à&ÖäûíM¹IõRxëCC»lQä[²éâ¿É2$ÌJÈÆÓ%i¹ ešËIOe±’æX`7>ÅPzÊ£m~p¿+Åý±[l(©ÒaV•Xü²mT=iÿ¹»Ìö¨Eÿ“†“åX€K¼àõ¶ÓBó%ÚH:ãÀ«eú‰NÎïÇ—ë´öÎKšç©± ­²J; ¡0~ٮγëp©¶ë7,ù]Ñ´Ïá $ªO‚÷ZXêÓhœÝMA5V¨…ÑB"i èêž}ßþ‚aa#³,æ¿C#põT-tJ‹*¬Õ¹òŽ6xC?ã0…£ÅÓ´OþDrÌCM[Õ8ù±Løú¶hà ɡÔɾƒî.·Nàçñ…ñë>}U¢w6q²À«ñÚvá3´ÛIàû7þÌ/W«¿_°UöÃðËüW$HeeÀwŠ9ÖùÅöè/¹&º#+ð$ð¥ö÷ùª~Êuùú÷_P"Óo& €I>’öêõoW—K(a"oý¦“•‚Õ×Ò[ÿÕ÷ü 9»§ðu83Ô ¶”þ‘ö#“›ÌÍC1P"ð¡¸ãêý÷M,tÆöy>xÇ:y7­$À!~BšŒyG*ʳøFøÑÎêÉ`ì®nÒ1‰•M–~Á¿ÿip ÚóÇñaðyté7_j\üfÝ…ÿˆžIÝAXú?ÿÆj¡úendstream endobj 725 0 obj 2800 endobj 728 0 obj <> stream xœíZ[oÇ~ò#øæ¸·s¿´hÇ–£Úl´îC­$)“ËÈίï7;3g/\R²Ê䥆ØYÎΜ9—ï|çœý4b±ð'ý=»=ùtòiÄëgù¯Ùíè‡ÉÉŸßz1ò…7¨Ñäê$¾ÀGž¬Æs=šÜž|Ï…x>ù;ßYìEá¬Æ “Ë“ï?„%\ÊhŸ½-¯Êu¹œ•á'- f˜I?ñ‚Ç-­™Â[étØRBf£]Ý;%m½v–—í•cQp'Œ;k?®ÓbÓ^l /éìµ8…“Ògq~ÙTõ‹B æÒÓé¬J-¶Ï~šæ…’™üðò>=Å™Lçsêk›ÂZÆóÂ×Õe½NCYKÜ{~Šÿ¨(y× c©UÁ®)|Ø[ׯLnÊ!ƒVà¦mWH­é¨WeõþüÝü·ò§ù2üj}¡\þ±Ú ‹rEzºÚ.gÕ|U¿,]á¹Ê¿¬Ëj»^Ö[HÝd·¨¢¨ÜLú¬† D¨ŸºÂzž·¸‰BAµZ(בŠs(AˆüzµZ—µ"¡ghƒô>ÇûLížoòž›»ðÈ«ú|ûr6ÿ.î ”Ìå÷ïÖ«z5t ÇÈ(×U:Êsr—/áÑX:U®Fãð£Ìá§U¾¼[ô$3…²"ﱜÞ&)x÷ÌïçËËU-†. ü%?.êTÁµÍ9»Š—ŽÔ=xÒ×^ 1Ä”Ëæ›xŠ4^eiVõÉœÆ*2}—B{Áò½¿Ü‘Ee~uÐa2k}>ñýyXóãdô ÔNfQÜñÜM;¡Gªš±ÖåÉÕ^¸ë!X‚;©"Ðö+p&€Þ»³þH'J‹ŽvÂNKÙ9í§³7“wCñ'M8/+á4B—2BPúÕj};­’Yf³æ¥8Mè£'[^æPä¢k^ø²,„tÑ——õo‹Õò:9Žc‚g¹Ú^ßÔgÂÜŠª¬’µ¹Ó,EâDRB¨¦)z–‚b¤œÃwkhÎk8 ÑÚ1r¿EÆV'xßðór|öòåËóÏk<†F,%­Õ:K'-…`yŸ‘2‹×B,æD¾Ü!ÄŠxÖ Öz;@–§CŽ®DVyÓ·m¾ZÛãh5/-H*3«dG–L¶ÒA¹e¡4AzÜù¼ãb¾©’šmc}òB>«þ»rqYï*2’´s=ÞcÉyS¥g^7HT¦s¸¢ü¹ÙÞÝ-æ !¡#BÎà12„ÔÝ ¶Œu|s[WÚnÊu‘5Zæµ?×»Ÿo¢Í”‡^)áÏ«h$ï­Û«Ç^ K«ñ‚ìš®¼½‹úàðbIt$GÝÒ{‘ñZ»ì“¨8i¡ý*¾«™âù†×%ÙÌæNÓ:)T~u_šy¶ÉùC°¼v@fQßV€i¹¡Hi|iO¤œ¦‡Â’Úë«+POCÉfµÝöY‚§h,™9íª¡5Mκ,½©o™bËÛB(AÌb0¶€™,dÊ®•3oÊùÚ†Ô>y]gëg;¢•1Ipy$ÜJ ú*/«u³ÍÊÍæj»XÔ†Ð"8BVe+Wx"ÉP/Ã&Ì­·@ª¤tÕòÙ¸ìaÕŽœëkI |0T =Ò¢P9ibzyÃÓ@&»Á~ ì=öÈ›(!4H`­‚J#4©@Ä `ok Hû†Ð%é`SºÛÁ´ˆ +#ú0±4™îjµX¬’n!,ï<¥kT1šòâmy›¶µ‚2_ÂÐÕ©†YoþÝ)$ežÁ•k?爣Ca"`_$ʰü_«Í$w“{I±HÁháÛ¸å·h|B4j‘‚ñøL º÷óå«õ6üò@´!£˜ŒÜb8q"¿Ù¦{ñáÝNšä ›tQ¼žÁµ²Û]Ê•µ¸éÝbŠ„}Bƒ¿X×ͬYùв3ý¨€B§VÄ¡,­ÞØ.ws¤ïõvXDçÜV .'FpsŒŠQÀ…5¶Â~6WWŒo~~{þâusžWìx禃èkŸ··BU¨äõQ¾yQeqO¤’‚ô¢†] ná„EÍáæ‰-œ¥ú &˜ºî•B{™§T-,Šb⬣.J™’s"ÀËU•TÀ›*ºÜ¥ÞUkT~$šhË5ulŸºÌ6l}S¦Â áw›~-UQªò…””B7ýZ·ÊA ಗüû÷Dú0¡y”®i09B´ >˜‹°_ý÷@tbg~¼ó¼C^×óö÷ m¦žÊ‹Bã\…iº˜^öMm`?ËÃÑ)ðƒy– ´6SB‚9JÿO»Q–žÚ˜¾é uºËÍåïçÕM¢&,õÀa€ÓnÕ‘ù¸Ö' )ÿ=Ù›³ÖÇ‘­µ^Pëohí|Y튂?á†Üu½ù}vP¿¨Ã‡¦çÔpE¥×Щ.Véý®„Š G1Iýá- vº¼^ÄOˆÇÍg;Ë“» šW&\›×@ÍûîKî](Kù¾š~ÞcMxvÀ¦‡Íù`z÷º¼ªN§HÒ§×Q®HüãE“ÿ–n!õtý:–  ıý+r„ ŸA·ÍtY^M·‹ª½xÃkDéj}Y®ßÏ/«›çÏ"‹nð?ˆ$ÆIÅÔ¤°H²V$  +_¬¯··eìPA`.bWë²®gßÿLpé¿endstream endobj 729 0 obj 2957 endobj 732 0 obj <> stream xœµXKoÛF¾«ýºÕ¬í¾½¥hHœ6à|¡%Êfa‰ IÅM}g_CJ¢l7qaÀÖ³;¯o¾™áç)%lJýOú»XO>O>OY8ËëéoóÉ/Œ™j⌰j:_Mâ6uœpƦFÃÒMçëÉÙâçù_ oÅP~䨜Î@ÐY)Ìt¾œœ]5IX… qBs ¼Ì /¢ˆÂéttÝvá"„rjÓi±èÒ¡çãÙë" ª³àò>‚Nª²žÒib e2½í–ANª]:cαsø%“ånêˆÓ\Ko¹tDZÁ’è§p™©U¾ý¡\•M¹Ye Ì×4;Å‹O:>|’Aˆ•Î1.Æô΄Q„ƒ×3î¼O*ïÚ²yUÖë²k¾Ž>Í( Ÿþ¸ æ2"8Ï!YT?–­?æ–Xê²Ým°Ÿ¸̡öÚfmxDPb™uÃW–é\8‘_¹˜&‘\çÀÕMŠ3_YoCz9#–c~ÃeK”U<_lT›2&&=¦3H©€œ€¦˜xm5hÀ²l.«ew;7*‚é{ÃvàM¹Cíáº&T²||ïí÷ ð(³Ñ/[@y¹*vwÝ£ÏäH±ÝÞU‹¢«êÍOᎲo™ŸOæ@²GpÆ¢€SÁGQ ¿RÆxFA¤¢¶ú§|]m‚}TbØ»v,tF8™~¦ØyåáD@Òém4ÈKqi÷ÌUŒ›¬k•Bå9€Ù‡ÝW›eŒRD“åã I‰¢.ÓAÒ͈¦*Û^%å‚Xm³à¦nÖÅ]Ê«‘ÂaŠ®<‘a‰;L@Woß–«î$NuϡݮÙ$…Ö2wì°Bþ;ACi›“Ul"«;xÃúõX®þ¡-»öTÁPÍsÁ±øpS'Í·ßdþ}æ ÓH†£.Ü–ÕM”å]Ldˆ(< Gùú²ìÊf]mÊå¸w\8(]µŸŸ›¦H Ó !ú¥Ê=Wìsòa ,Ô†Åâˆ1`H†HþNÐf¡b¬T6z(ó¡’HfyʉP(ÏÁ+æ/ù{Ù.šjë™î×1_¹„øk½ÇÆóèØáûÜw`$þO—ï¢k+½[ÙÞÕn³ð&„ o(“ÿ³¨×)ˆ’¡Ç×î6QX+I)мOB®JYNÁ!KK–³PmVž²%0Ó@ƒÍ]ÝT_Ò¨¥,—™×Xßo”Ä6Ü£B_èÉÔù󙀱Órh86Ï!ËTB‹ƒ6Ë…Bד›Ðw‘³>ý‘ ƒY4;X4m™³rõs˜ÀŠm*Ž<ÎntäS> stream xœU±j1 †w?…Æղϒ5¶PèÐ¥ÁC‡.éÝe\áÒ@_¿¶Ï†¿>I¿µ‚E[¢åq1«YªÖÓ¸ÀK2Ou ¨ìx€t2[Zõi1;rÃC:g8ꬣ„Ü&³û,98h“ói¾Ì?ã\JÁ£eË­DHÛH`Tñ1”‘>{æ‹uƒ—ÊŽm¹¿%÷):Øß±_—ó-,¨žo»Ÿ«ŒÞk·óý{­”M:›z¯M”<~ÓÞŽô–»8ý55ï´¡ï©ßf±ÔÁ÷ëT¹oѯDªô˜ŸzãצÄ?Ñ> stream xœµXÛrÛD¾7/¡;ÚN¼ÝóHšžO¤†™BQm%Ø’#Ëiô`†áŠ€k^ƒÃ[ñïJ»ŽäÔrwráxµþÿïÿöû«“#aûW'½“ÞIDÜšÿN¢ÝAïú§‰‡=¿µoÿ1ÑHJŒd4˜ô®Ü¹:ø®GƒÇƒQïÊÝû÷n?¸ñðñ£§Oì©Lýàoûµ¯™ˆ„”nå÷K©ê ÿº¯ŒG}æ¾ïÞºùì»Æƒñ?ÜC믻Gf»÷{»G7ÑW7vÃM¤Dõü×ä›o¿¶«Œ{¿ÿõÛ?¿ý2~1±®hd$•ÜZ… 1âˆk4Q.ÆÝ«äàU†Î¦ EŠ '™}TµK¬J¦U†Œ€¸¨@Zã*ºQ\ÆåÙ4qRD •µ•cg™#°_ûrÿ4ÉJ EÚ]¯l— â˜i¿uw^–yö´Hf3‡¢ãÌ?̽mL=j„[„p©§é§·Ù=HÆI…ÀeÔ'…Éj{ãtøýVï¥Åp>ŽËäq^¦‡gÞ6dMèªzpqœÌ“Yé}`½øù8/&ñ´‰ž3Ä+RáçVÌoó‘¦GóbŠºñ×¶7ঠR³óŠd這—G ùY‹üµU¯°ê$?+“¢é`+º˜Ä§Év+àTw’¾ÿzš/J2k(² óí|8ŸÝË‚MºvŽÖ‰×2 ܆>îñô8Κ\¬Ÿçyœ7­o ÷iZn®kÖ]Ï$gKek+9 †ím›jÎ:Éã­'°º<æGm&DŒ:Q‹Nª?Ï–˜ÞJ Ô­ª½kKä@γ÷ ‘ƒd01mÚ4»«öA2Kh÷´µ¨ û3ßÐò²2,6høk”Âàã=4ü`ûÒ ý_¤³ôe:^*aÛ˜¸nAK£Ü;LºÙ‡ò-zç:}®}Wg QΨ„À!òz`éÔò__F /ŸûåpÌÒ¦&ücÙ Ž“‹„² ž(¤% n²QzšŽæñØ>ã NŠw?«}ñÅ=®HÊy‘%#gØ¥Ü=Ì]ª”éÀnÓiÞÈ“Ó S8Ü+8îÌç¼£:D¥Âm·¸WŒˆU¿­ )У_:޳Ñ8)f5™œé•'”ãñØ ¦½0®Nãð¬?‰KǶH.êÃq-7f‚¶*aALIÚÑÒû@LBr_.ƒ ¢‡›ÿ$q/0($U~ñ¥Ã4¦ÊKøÙ©7R6º@¡ÈPc‚¬rŸX!¯òYš¹+PUH¢2RÀ´5Qy!Fª…jJ–j¦’µ53«é‘L…ã=ŽCÄN‰\ÁY½ª¹÷ S@ÜX-¤Y%&ŒEØ€j_e&èƒp#Ãîº&î-€òÜšAšh¶P•Ä @\ Wæ}’Ãx>®DÊ t Ñ”¢{Ç(BÕ[I+#JêÆÙ@ÑÕxÓ"÷M…†¼ƒâ–Ô'ä‘,…S‚ºãšg~ˆÀ¡®ß­J‘#G÷¡W> stream xœíX;oG.°N–²a®÷½{ RÈ €pl.„'òMÞIwG+J¢"@bŽÓ¤L þ!ÉŸÊì“<òD‰Ý Danfgæ›oföxÔLjô±ùøïѬwÔ;ê+ _£YÿÖ°wóqBû J$•¼?œôœé'¸¯ÈE8ëí*¯ Ÿ²NZÊ EZ 0Ž{;O ¡ˆK‘xÑãl’UY1ÊÌ#Á–XúGw¤R}‰Å´0G2ˆY mBO4gÊꎼs¶¬9 ˆh*UÐÒÝ«¼²\VV(a’2ï{׆ƒ4cIg¿n¬! )Ö^šŽ/Tp¼“}•E†e޽|büØ´%R “ x¿[=X”H’ð‡»ÈÛ0Áæ&MÌÙÂe0zw”òà®9°‰‚³CÙ #JS˜ñ +œLò„†lž °gR,‹ ÅÔ‹N­1N«½LbLR+Èlm %µ^ÆG!© ø¤€- å„„øë¬ß}‘M^œjœÎ²™Q¢)ª‚Û}_~LU¬Tå“JJä–x"$u`Djš`œ×O 1ÆÆ×™ NlJß"XëX´jžù.¨ùĉ…Žd¼¨¼²£¼j½¼A4Jgα@ŒÅ¤'Ui0 'HÚ(.]TzI¨xÌ[ KŠŽ„:—d¦C´:¬J‡ ¦qÄ£rêá#„†ºWÙÑ<«diÄ4?(k{6åH'œv€³‘ûµg«&"è¥ÓºŒÅ"†eÍ G’ÅIÖ¤yá+Hæ‰ÜÆ®É] V9 XhMH‡Õ&ßðÁžè.Ó6‡9ô¢Xá°„Þ+„“Ì,óPE&]K˜¤.ëÆ3œpÑÁjiɉ\ã7”\m[CÇLÊuìÒA˜Æ5Í«*[ÝÜ…5`‡%iÖ¬={CÁl·{ï·ì›“ï,Ýbg¾û󯳞•¯N§ÿøì°¿~³·óæøíÙ;aìí¼úvšý-Ưy9þ´>}ƒÇ§oúç÷ñÏïÏ–õ½hEÑø‚õ«š“_}2ûõÙKð•}ÇýÔ¼ï\Å‹½- Œl“ÀÐOX®#z~†C³ÒØ…Yý¹;Ôˆ4œ*™¶§2à+”f„¦0`ìªK›´99´µâÑ„ÊØ…ã|’»Q Oýù¥+Ç‹Aóä Ÿ4Òú¹­’Dœá@ä׵ç-åXÒåÛeÑTå4è‡Ù L@‹'°‹Ï³ƒøÉ¥€2ÝF™-…ûÙp8QŒø6Dô €õ\Ð ¾5oš²hå»ñ\uºúJÞœ_2*¾›vòè{¼»ÅÉ2a[n¾pÃ]BØ›L8Bôôw<ôkU¤H× àÁ·Ó:”Ò ÕõÈ{]±XqçÃî2Àf’]ð-"—Švê+¸¶„µ¦œ#a:a`gò¨Êj»’¤=*LßrV¦Áóëžã ÑŽ5 ïTÇÍY–S»( ÇTë6>Çy1.£ÀÁõ*=N÷§Y´µÏZ¶UY.<Êx/_·4ÏZü¬çû+ޝ››g-Çf)w8΋fƒÏÞgU´ãq™>}T¶LÍ“µD­˜ÎÏ1'«M?ó}Wwd»²D–úkš×þPCkNI;}Ë›ŽÂ­õ¥Ô‘‡§Ž‡Á‹JgÓ,­³ÀDôc1Ñܘ®˜xÅÄó˜x{šÖâÕ@¼¢áÿ§á†ÒÍ£åâ'‘…yõÓñš°·s}„Å|¶ï‚f^ÊŦ¹9·¯$ö€ÅÛ`•uÞäeQ{Ò3¯S×÷®¹vQð“¬ä ¤)ºko=ÃK'Žïî§áª¦‰þPÙÿ!ªø6ù0ùhîÚŸc÷£Ë½ì¤uâñg¶ÞüÓ6–»ùïû_÷Ìç?ËŠÎendstream endobj 749 0 obj 1479 endobj 754 0 obj <> stream xœíZKoG¾ û#x³H³ý~ø¶‰$HœõzuðÁŠY“{fdEXä¿oõ«z^$5¶÷°@`@šÝÕÝU_U}U=ŸV¤ +âþÅÿ7û‹OŸVÔ¥ÿ6ûÕ÷×£õJVs#W×·a]YV0JWZ aW×û‹ç›ï®‡ù†÷ç_ùyD¬®`¢5‚ëÕõöâù»&NVýɺ°\1¸9ÿpSda8·*Ý´_HyA1qt½éâ ñaì§ušÈ‰J·qö$2íSº!UhM¨ˆC¿v[?ODÙ8F­¥—ðGēە-¬bJ¸“ [ÃiœúÖ/f…P2­~SÞ–MyØøÍ$_‘t)ZÐ Ò²¾H *–*ˆ2&1ÉVf)n‚~µ*¸å«+fÝ¥¤ŸÝÞß”›z[Î\ãík CЈIÊæŠÑÂRjüO¿”oÊ]¹nТ‹Ëê[/J”°4ö7x"Ü$émyØþø¹øÍКT¾/÷~2)4Óé7‘覑“DSº‰éG´–…:’†/чiºBS'¦:ÕÁÚ VÍzöýM\­,Ë7rž@ÄèË{?uÆdÁ'¦w,G~d R3þeT®æâä%^ÇKp¡íb‘ëC`vÆx:ѾŽ\Q*žô²­þF(Ü\Ü µ®8À2FiyFa°š.F@¼á˜«6ÊÔ¤±¶ì¢>,±h”:.–šLA-=‡¨¸%H@šÁö YòÃ]µ‰ÊT”&[Ü0P‘C0¤#ÈRéXåç`c® ©<„1%,zzÝÔJ¼åC îpo™ünÝFK C’&ß—‡²Yw¥7¼P…ÌŽÑÆPt¤d ¡Ó_ãØ{$pS«äPÓPfX4ÓÜ!òÕÁÁ¯¹ûÃqÊÐr °Ôyg9ïZÓ»,†«¥Ä4 Pà°Bá là§`ÛÖ÷M(¥88—äôŒVžµI†aOÐÀà§5- IiÎÄíéH¼ ˆÅ™F~Ó ¦î¯³Å‚ÿ,B;êT÷1cFÜk mu³­à¸!·ˆ³¦Ü­»Ê»Ó°¯? ä!f1kâM¨“‹Ð ž“€ T‹™2–™[ÝTïƒ2ø¤AŸ\£\ÍÇ!ü¢—^ýr·ä#ÖN ÎÔÌòò~„IçïGܦ–!0,æ©—´þ|!£¶WòfV#.{^I]ÛEŸQXºG,!:èeìÄO²OUˆÇUíñÍ%„T6ÒŒS,vnz‡Ç…±—h‚ð>ÇŽúØ›ÛzåJJ’讋Ý_Èì™ÇÕn©\ÿ ¹e ëH°½B4È™;˹±ˆëJD>: ɖΊ! …gÀ.Aé^wÕ r(„?t ÿžÀEFÇ!ê,×NáÓöª…àÍ`S|¤K N³gä2žK›…f¦…”H,jŒüŠŽüˆ  ìœ6eÛ…ÙW\r<âï’Û¨U—rŸaéjÿ„»5Uj „J‰éµ Iæz-4bmÙ|ÆŠ$QÌ©Ì݈®º¡LOÝÜ7 ÚLdΦÀ'ÄÆò´ã+Á†p:àVè`)zq%Ì %•|lʶ2„+¨’øH¦@ÏD¦éûj·gÛÔ‡mS7T©.lº&˜ºi—•ÄrŸ…JJøÔÒWi;ÉîTáÆXV’žçà ™E¥µëˆ —‘èß›¦ çäî’’Íĵ˜²×ÞÅO’>NÏ]ò2ÆT¡õôô½mz$o~šî+ÉÒæ‡Ä®ë ‡49"Ìé<:$x?PgbF5úI¶œÝê)|Ýô è3|PìÛ=94,õl‘õ|–ÃWGCy:A>£&½ sž&D{9jÞ‚³¨Ùjú)–„Ð*– QC-éB« ÃÄe7TYrÛß='—äÝw)‡@ñkÈÏ|>å˜;wÅülÑ{Xœ3À7äèbºfóÅ!£^ à;ÛìXmsÞ:`c>¡ Š šöo»8—AÄ™Ðb QHŒã$¬§¥Ån<~j¹¹ïºúà/ËÜ‹f–’aBÍh_÷µŸ‚`n6ðð6µS©­àC ü~ßv š¹½ý1ÕS *Æy–k1Õ¬Í|÷ÉÎX$Us|¢ø¹‹AJ*ªÇ¨°¨Ï”\÷Íb!ìž0âY·zlNʰfÚN (Á‚©2ÁLqùQ÷Œ¢¡gu%‚ýŠýºýо˜#„Žù)›´ø½?%}ÓçØž2Žw$¡—sò¤{<ÁXò®”vïFãX`Ƕ‚pÆŸÙ­+Íàèü+Ž>'O|cyò›Éû÷]uÛ“pvFšÕ8å×”ô,E¼ÇrX‹öüplC€Th'ÁH1ì»ýœ"7‘¹Ñ×Ô»£À°=£(÷D™„½ªS´ÈÙ…8‡(¨øÍÈü”ø£°þ6â¢üÛˆ? ú'‰wº—3â1’õ¡øbDÚõÛÔ°EøKùøÚ•/G\[5*ˆ&eñ @~13ñTW¢c2zrÞIÏ:P<$M,y!Ž* Vã!1«qhyÕœóúf½Û…ÊÏw‰‘õÎ&—@¼Âx:ó¶,¶Ò”ð0©jc†T ÆH~Å”çipŽƒ÷.äÂý€Ë™´ò~Ÿr'gÕ!‰B’UÄ 5÷1KBšÒUȱؓ…îµþÒ­¤"ƒÃ‚Í8AÕ}¼K ‘X'>¶ÀÃÇ ÀóòóÚ©´.U¯¼`ròΪ )õIšpõ.$6ñëu³-âqÁ6BlâP×Nä'iß,:âÁóûA"W‚a•³ž¹Êº¹©ºfÝø› àݹçqÂk÷eG$Ü·¤ã¶NÔÊc3Ü}à‰oà®Xf7‹û T­b¨žö {äb«L¢¡ûp† 9캦q4 *Ø‘áaDS(‰Æ OÄDÊš"KXI!èe1‘hÍÒèr@ágçc"qõÄLLÔEîlŠq(¢ò| w”v¤½/)F›ðb¾ø3–ÅLJ-0Tö öM"æAÖ‡÷ñã>‹vîW³’’i=) bx]Ì{ÁOØbº0:×<±H™%‡Ô%ƒ3U“HTƒ(öå¢XÎÀ±ù*Y£â㉲<³Wu3·O©H^bMr~›Ðã•P+RÂ&_ÆÍm使Ãûü° ìH÷……Y*hÜë×}¨â)E«$Ü„¾Ã˜ûŽ÷±Π`ÏO ëDä ï}Ç#>TØ-Ø3R×Q@/ô(zqÎé¨ëHÝ'£ÆçĆ (ÄÂÇ£=ä9ÅF®9ííȽbÙî^ÒÈY'ò€CÅn¦ÞGÝ{ØDÝ»-dèðn €pbec¨ã׈¼¦ìî›ØµŽO»Â½AÎÂó-O×`ņöq b¥y÷>SWg²7÷Q_èïÙÃ!R3!óëd³>´•׈W Úb…0w‚ÞÅÓA¦‡¯Wÿºpÿþ ¹q¡endstream endobj 755 0 obj 3111 endobj 758 0 obj <> stream xœÕYKo$Õ^"ùd×Y$÷å¾e$F „ ½`!•«Ë¸gúå®j·L`†Ñ,ˆPvl¢H‘ò?ò£rîëTWwµív&ˆÈ’-ݺsÏùÎw¾s}9 „ ¨ÿIËÙÉåÉ倅±ü§œ Þ¼þØñ#Ns-£ó“¸€ ãj0š¼Ê¸}mô&[×™ì8±FÁ‚ÑøäÕüƉÔÊ¥¡ÇÕyµªæeå?)A¨¦:}b„Å-h⌰Êo)Àf­¬7ÝY)L˜[¦ÃÅöÌ!'ÌrmÃÎÜ?®Òd½=Ù'4éì7‚9Ä á²9gu20’S›F‹²Iƒ¶coy¢ :Ž7iΤ*Ÿ®­‰1”剿kÆaž_d/1çØ)ü’Ñòn@†BIB%\“;¿·Šæ®›f1÷ó'Šãö“0ÆQÒâ%ü%\2&ÓP=+¦S?Ì„Øä™ËU5®šj5›Ì«`¦V`¼Èv6“Y¸‡#­u#-¡TÉlìq•ÜaµÉ£Å”„AI“< >š'Ø£r0š‹IF‚±4º‰Þt,Þ¾š$Ú›Qx­Qܪ|Ä$ÑT5p"/­Š:¬æ  Aóêf‘ ¤ÖæÀz/Eh@PŒ³ƒÅúl|$q–gÓ‹ypçP@’‘ƒ!D"Ìã«É2.ââ–×”ÓI™ÜE-Ï'<­I_&%%€o@ Ë °Ÿü΢™,æïÂïóë>lF¤txý«èa¨È@©æqLKÇuÂSè΋ F @1;î*Ç)P ·4ÄX­Õ:!„Ù»³j¼A‰áˆÍ³”³”L¯U2B˜ÇJvÄ.·ÀB`¼ßŽ@ðmåᆤ-(£ùΚtcUea † ¤°>“Ò^¦®š”ðеÇfL1ƒ6«u•ÐGÍ(X¬p¦Ì8/¦uaðP52½§B nܧ!»¿ª>üú«I•oøý7Ož-¿\ÿùÇw?ÿWýÊl1~ññÃç¯Ì¾|òìò—ÿì%ú¶*hð«•6l=Š·ÕÒ"`®—É^Ã1ÿªúAÜÔYØU vHOBÔFúMÑ\/ƒ'$Xðìí÷¦EYͪyp§41—]÷›RI…íÌþý|´ö(F Cúäàô7@«³Ä|ª^úüë½ Ü!Bޱ˜b¿¬Êõ´hª6ËŒ"œbaYœ§$f”g‡üi߀ºšßº‚Û=Ø·÷l±˜ž `\YÈá! ÓAUIy»½Lê|ÊÃU±)€Žpiø–J½½™ÌÇ‹ ®Ž\ë¿uŽ]z—õÛð5vúôi/uqÏ•0gÈ=¹'êzXÕ%ð¢ç¯}ÔÅ}Ñ:ó]¼Îè"g§è½;ÓZ*cL"ID }(ÅJ\#‹ JÈ\  7­}“æ"n™µUÈ#œÀúÒÄ 2C¬CŠXUuS”©šs‰âåiÿŽsE‘Ùö´X;×)¶À‹¼¥¤"§¶­‘Œ"Õ¦uY”Å*:"Iï4yÉqd§qµLŒi„Ââ4Oæ%ÁcÏãQAa…ón]Ý\TÙ³»˜^ È|àû@½e³^¥~§¨ŸöAŽùò†ÕmÑ»1xBI„Ùûk/+ï´77^²ì+,“ur´2‚#œ¦ Bª1Id “ýš3‹! ÔÃä-ækc×]ݾIC UÉѵ™»V‡%Í¥á¦v'%8¾#¹@†Qiw rÚJ}ðn›Ý\M¦nܾŸM×Ïp´ÆSŽJ0’”¢nmc% öL[R‰.úÙ¹· êã“ú `~U§ûKÉòàrßþE=ñÔžòYHÍÊy“È”²ÄÞ²%>Èt{—¸€Ja¬­ÂÑÈ6ܲ,׫:-6­àJRZf—̹´ybËÛ»$<.…Ë ËJ$€¬R.ÓCÔ&{TP…tÍH¾{B+^öt¾óõ"KbH­<º.<:‚"Ow»'§wܱgÂóèk9DÞiÌLèX÷ f+ÁZ„ÞDŠbwƒ!ܲq~å)4q jÕJÕVçe²F·5i=F@j# c£íWCå´œœM¡œÅ^N@éj5Ò-!PæøÜ§-0ønÚ:Ÿc—¬óá`jwr~»´ü¦H`–ºÃK·\OQBu\¸’¾…ÉýÓw߆8ÝÐ?ýýoãÿþÅŸ_üå‡Yo`ÚJèkøÿ ƒÒ‘–ÿ_;¨ÇÕå=xÄ?uÙnV½ÄŠï¶2^œ6ǵA?³JÍäKl¡|ß‚"ûxàU„{ËCgÔC ±%q³~±ŠïuFÒªVàe‚’;–[ìœå-QI§ is~özè*´-'ÿäâ}B}¸>kžÒ;-Ámòšá³dŸ¤<ü<&«ÙÔ—&®©i›Ímqmð}÷xq­Q—¢¸æËÀÍâÚ|ãÜäîCB@ì’{^mzîs³€†³8âÿÀÅc²×ý,8¶%OS“ðÀîâa±'q®¡ÛnAt±XOÇÉ+±é:ÿÈ‚å®Õ۾ÓÍzJâýõ¶á·ËíöE÷>r®l¨èj> stream xœ­ZK$G>"ü#šFš®Í÷Ã7㇌d,Xä= ¤šîš™²{ªz»jfX# ¸Y 8ó8#Nü>"_‘UÕÕmÐH»Rv>"#¾ˆø"²Þ.HAÄýÅÿWWo¯Þ.¨Kÿ­¿¸¹zõZë…*¬æF.nî®Âº°¬`”.´‚=„]Ü<^}¸úùÍ·0ßðáü¥ŸGÄb ­\/nÖWþv'«ád]X®‡ÜœÝYέŠC·]ïR^FL-W}Ô°}û¢L9Qiâú%ŽÂ™D¦s*7¤ ­ qèË~íçÉ‚(ǨµôþQr»°…UL '¹°…0œÆ©oübV%Óê×Õ]µ«š•?L‚øŠ¤KÑ‚†--nIAÅR%‰(³a“la`–âÆë—+PS‹%³îRÒÏþ¤Ý´»ÇrûUÛ×wïÜBM I)‹»µw^BQPÂÒØÜ\ƒp“$ëªfýÙsÕôy©i¡©N ¾mÛ͵^¸´ è’’Â  üR7ëö×q›tóé®|)o7®õ¿ùµ`?e¥ÇÕL$ ¦‹åÕî·Ñê¦ÊÇ*"æÄõã#që¦ëËͦZ¸©e¼6Ùó‡9,á…X2‡0¨¿qÕ­võ¶¯Ûæ£9C3QXªÀ‚7+m¸Å̓G uóð^©^Y(‹*} –³ÖòdÌÇêÑÏ#  ”wŠ0Øþ”A ˜Tó9Ó-9DUXÔ« P]€lðqƒG&ósA‰š [&;"[Ø©¸ªš™y¤`Íùˆ•†déü(\Rà±#ùR‘"ºD§=Œ+ˆØ Qä¥'ú€ ®…¸"`{ôÚ9½ÄUôðonƦVdðc2Ä»°1QšŒÄ×V§Ë¯cQÙš³±§1Ò²’Ñ7Ÿ'ã[¼ã®ª>(`®•϶iƒëH¸A“Ù@¥³¸¿Q õôžxf@·¤é0.´˜Fja•©÷PÅWíÑ[¹r„/Ì-‚ ”å˜c‚{XÉÒµ!skVh£þ'O¦Ž êéÍExå5 Ñ“`3'¸f]¯À}€Ó€$…~øPõv)ò6uE]p†¹nbT.éò.ú™,'lIÓ‰Ý6 ˜+ª²ZÕ?á_,=åúQ ñK¥%V&…•]â¤$ËÌE¹( £¦åá>K@yŽÈ)áa÷ÛÍgB–¹S¥Iæd…ȵ¨Eu”Í:Ò%pŪl¢wKdès8  „܆©ß=U1®rŠÎ˜¥2™ïÊMWyX3 ‰¤My—€ÆdÒ[ݧ1!§x乪;܇ x4;J†àê@| iùQ[ÃNÙ²ˆñâÁ4•†»ª%n®CÚ`±¢»ˆàÕ•.¤u?K…UÛ$‰¥×ᢠÒ0è›Ô„Ap°ˆ=¶% ¢Zr ¢™Ê9á½Ãx·ª¼;IWn^bÎQ™p”Á|Êjäªï’•©A4ÆñTƒˆrlN u™xO"«ÎF:*å><Áõ<<)7{˜0ºG£2ÀÄ®GsÆššëÕÇ êRNêN¸ÎÁÂ’B-¤+«|¯áoÕïþþ¿½L§þcõã›?ÿûÕŸžÿYmÛõ_¾ÿôÇŸ<þõÛ?¾ýé¿f“ß"62ÈÂ@òßD2Ñ9È6ʬ3µ­ºXÊMÊqà¿$ZB„¶ž›ûIÛÜÕ÷O»jPË!èUãÐ"‘×åòÆ¥Ã騼­FË †¨q1ž~•ÓƒBÞý®Ñ/ö׺ßFk·mWcÙëf(Tê›_·uÓçµî—‘È]ý}…ë,zÔ›×Õª‡À6<×ý::÷¶Ý­«Ý7õºÀ-†³á±0::µ¼mŸ«Ë w»z]½®Öõ„Ä]ÖHƒNØ(©â@+A@$áòV'zð`?–ü°zŽŒ2]’£jbìkƒ>äT Ò^ØZ`.iÓi´€ÑÅ(¦AÊÖ†òÕ):1`ÿÙü1ÆqHflÚr€ÔO0ǃÚæçueé:³j2f¯ª%fF†\à×}}Xk¤çÛrt f!9éø¹*<‡ÑuµEî*%d]7÷!à+˜î{lƒ€ß6q ±,7P0®O!‘XHLƒ_=Yõ•~UvßÍ!ŠºÞV”íìÆ  ¡1•~ý亴gí E°@‹æà-5ÕUp®˜*n vº¯6ÌTY§È³'|c‰˜œ 38ØÖÊIï 8ÃbwP h{.éÏrçÞ™uÍ·t:ÄÑëèÿà×IÛýûÄ`ú>ÒueèáËû{O£ ñþU@ çnXçôå*º¹eèºßE|3ÆØpï{ !ÄN,y„3’9ËqF 1˜ ÁçC% Š}„êòׄC-³ÿKM;¨‡Ø¡DO±Ã©Ü‡Î°>E2?PmÝ!ì"“ãéŮڔ}íó”@JcÓ³ ”Bv.egªêY…À°%ôAáüg]ÚÕˆ\ÀÕ÷uØÖU阥cõ€C¦cØ$.®N OœqtÚ“F§F‘¿Qf3U½4ñi»>”Óîn¹©îúäJ9 ¶O}|Ÿ' AQ{«v×DêN Éí¾tƒËê!*>S-ɬ Sbʵ»«#ìããÉìk1)#–Ü@qA°¡n'> ˜ÜófÔQCBm•è°’Ôæïp”J¢×1cq››`m×D{ݬ6O)»ƒ²wÏÝâP." 3lßbR1CæÈþ7ðO=gÈ“A ŒFÝãçÄÛbåk!¶¢ÊÑRì³LÏ%¨ä³QR0#UX<¢Á 4ûës {2¾P£ÎËw¦Ð¹1Â{#X‰nëßW›.¦âìÀ¥Î öµoSJ7È—ÛÆmç0d¥BÆ´Â^üþtzÚ´€v¤Kà+¸MG8Ýo”Žd£«o7ëܹ–9“Üp‹nn ²œ]æ$}êâ‹{ùƒrC–R3ÏI¦”Lj0ä¶Û}ãT»Òåƒ`há|£^ꬩÔ$?BrR™ä¦7 ÄJfgÙ=§8@ñm‹*–[`›.› (ò ë^À.ä'£s>"hAò#Tʉý:jH…Ø!wÅtØnRÁ‚Õ3%Н+FR1óºbé)çŽj%Ã&É¢M†Bè’¹ àŽ1Í“ï§1ok1#¸ˆä Àl"(¬Cû¤¡‡W•ùùØÔ÷íc¼“ÎwÂШ÷ã`Ãy/ø%tðíA ¿P÷æ—†]0\ñ-‘U«TÒ î‚ÑjPôÀQ`°ZŸúÒ!8`*‹´É˜AUÓ¾åf[!¤å±™wÕÑyá>ƒ÷ô&Cg Ï9ÎDŒ±S,jŽÁ ]:9ÐÝͤ?¾„ •?ÓéS3ü–ê]‘d¦̬83PƒsU¨ÌÙmè`@YÏzÝ8ÿ¥Jˆ=½Ѝí¦\Å©èåØõ\ÇÖè㶉«)6éϺ$9C)çôï[62!‰ËeÞË4xèK ƒùìLb0jHzUƒ®~vðþ_ :fÎK²ƒ¯„Œžø½û¤ÊN‘r÷•Üi¹_ŠS´VÙ÷»úö) ÍÕy Ÿ^Úô˜7øøf ŠÆ'¯SØ!ý¦n–ÑÞà|?yàµaÿN­G˜‡!“_L˦¼Zî!ßÓV›:ÔÏîE4—ßé ª”8Ô¸÷™ÍÆ¿.ˆ4 ý©{hŸ6 ý¾“ xkBuI†/ždŸþêdÿ*)z ¹ÿíŒðeæ~)„ÃY}„C­4mä”sµŠ{¼õÖþìfñ›+÷÷_0Tmendstream endobj 764 0 obj 3114 endobj 767 0 obj <> stream xœ­YÍ‹Ç? }Émr² šR}Äø E†l'Þ Hèíî]µ4Ó=ÛÝ»ã•-œlÄ:É9rA¹ÅøoHþ§¼ª®ªžî™]Ä‚VT½ªzŸ¿ß{½§ŒÈÛÿ;]œœNˆ[ ¿ÒÅäÑìàÁ¡¡ƒŒ¤’OfÇÝ21x¢¬‹Élqp0üÑìk36i%àÀ,;¸÷ÔŠЏÆ/æÇy—in·CXbé·"Ý•JM$2Šia¯d ³Úªn4gÊɦþq¶.9¥ˆh*Õd:}V{a¹.¬a’2ÿöC§ÒŒ™ ÎQÓºƒ”¤XûÕ$mý¢‚뻵_%Aa³•_…7±ï8³%R “ øY›99¾^"Æûðwš?ïƒÆ!vÖ:ˆ’Å â.ÎÿÿXa&¸¿ã¯é›×ó?þûÁÎßæË*»|÷÷ìò¿?{›g—úßbkìú@K£‘áÆ]=³² I®Y¸úb髨 Á²æÝ¥v NKÉ´»•AÊðÉ”‚w5fo’6i/–Μ"jhpúïÚ$}ùy•u[ ab‚ë>±K`/f:H?<ªÎ$ÕpÔûÆK2”{”Ï«ÕÕ‚kWΪå¯÷º²jÛjÑÉmØrëo–˪)Ú`0£8Dúc»4eX –N)¿cê¶~Y•ÇÅÉYæ§gyãòNA¼b.VîqÂÁQ­¯7oò2ûôhî,€ã_¼¹³øáÅ·§?ÿ×5 Ï(ï™á›dÇ]už´ùU[_lé­ˆKs$E,¿ž¸`]p3BÔ5â²ç” wÑ8ì €|¸ö>»•¸¬„Œ.]'®°³¸ì®!¡zÆÄvw—âÁWƒgùÈS@Zu]dÐddddï3,Ùš¯]10ÄMPë þ¡ hÕÑV”ßœ~„!ëð )ô>ì£tóøÖðª”"ƒ"'vê`cú|Ôt£ò ÐàU!*eXL]-d]Õ" åëØâÃÆ_Âz寲ˆ§8À~ï:à‡}˜ l•"‚ÜÀwêf¾k–]ÅDÉÓânÞt\"9bbÄ%ÁgqAmÝgÑþÕÝ wH)G~ 0ÖEë®æ"O\Эž¸>‹ìœÈ‡Tv2ù8d‘mÍ¢B>‹0{ŽÒH#‹Úê˜oÍ~i—Ä<­ºøH¥ãü ÈQ”p³7¶…èBĘöL5OÚâܽ<¡âYÏjšô¸«‚ê8 ¯•Óûteú¸÷ÛMꤪ‹“¢»VÃz| šß®qn‚0Ü[¤ÁtEd4ÛT¹¯äk’lÆ"<è9Ž@FjºËgË¥Ï Í )5çÇ­o±ˆ"Ѿ³¶)ºy` £RÒ Ë)­ê²KHÉ'ÉhX%ÙÌ3,1Ý’gŠ›]×&"oa1ûûÒc*bˆå7%b¥ß°È(ds€#Tªc‹Œó¾í EF°'åÀø¢ Þµnï±íºßƧ.jÔèQC½ ží”ËÂUÏî•U—ÐršX‰E™ÎÏ2ßÌr†7›© íÊ@w-ij|C-xlqûÚ™}/ûÆ{¾ò}”q&HœB`”Š!ºhB4`ökeU¾ÊëÊå§H :¦3˜ ¿nJpÛƒ®Ð~nº§YðRC$‡9ô声õ}"x4vmï MÅ*èj‘JÆá!‡ |œT†ëͤ²}“û㥈³ñU޼ïkã˜G¬:‹¯òyƒ<üA±ëQÔl~DÏT›¹pÞ-!ãð5ìGí¾–!Ô­‚  V$0šf/VzK“GÅF0éfèAü&–MëuÓ`ø$²TÛÖÅÑYüPHÆßúÀ²­ÛÄf?”Y}EµíØbúx×Ãc?”ÉIçOŽ¡EŠ£E:/:pèá® Í%ÑmeU/’ùüÂc 0ƒýL5(¦çÕÙ<óÌ%ú¿ 'p6`²º7ßGÑ ¦÷ú˜aÂ&œ/Ž»fSµÙ©ÁnÜÃQlõö´Ýg&‘L 1hôá¡>˯ùn@Œ@,~7ø©CŠ`Õ?g—ß}Ÿ­ìwƒw"þmào×ým€´jö^þ6y‡0ÅàÓÁã|ž·ëß¼¡ú5¡7üè½6Ä3PÒ¹0Äû [ûnï&ÚOg“/ìÏÿb‹endstream endobj 768 0 obj 2069 endobj 772 0 obj <> stream xœ½X[k$×~ èO¤M^Ø9>÷KB6ì’Ö‹³;ÛIZ3g¤ÞÌtº[r²˜Å6kƒ_ ~3øÁìÈHþRê\{z4’FkÇFP}êÔí«ª¯û¤ÀˆØýÅÿ³ÕÁÉÁIA¼,ý›­ŠßO^{¤T!‘QL‹bº8 ¤0QB %ánŠéêàÕÙ¯§á¼f›ç'þæÅÍ™*¦óƒWßoãa¹yX!Ã$e`À¹ëޤ32Š»Þ+†0Å:JËY… ®²?–é Ã2œŸG)ØÄ"Ù±N$‘R˜ð(zÐÏý9°4QFŒ!wà‡GÏMa‘Trç97ˆkFâÑw½2E\ФýÈ.lkë™7&À}‰SP‘p¥¡›WH±É#ÂÈ.»Ž!¯Ê„“ð‡ïÙnÖVë¾jêß캚rdˆ”ÅÔ\„’L«Î¦ ÍS(öÌÉ b ³ä‹­ƒLrCS|¾ª8¢pÁH+’*pdkÛ–½õéå°¡RÅÎýT"-u’öÇ>cD#Œ™HG«zÞø³I(Kû“1­SmWe]Y_tNå*ûÛV6…‹e*Eßdte$Í-€®‰ž1.“ü"$3!SÄe%Åpã:ú/I^-CV!qvç8[¸*Läd¦ Ò ” ²Ô?{½îz[úì2¨-ÎJÍ"Z„,Ò­Ü*8¸gj‰6©”‡±=1U¹“ªúÈë$‡+¯M QHî ¸€ü1TêGy9æ&%¼³õ<@!F²¸O]€62ÙÛì‚ÜC°œQ'‚)†±dcHQ¤“ׄT®'±¬ÐGÆe]/«YéÚÙ—ž+h’Ò8 —AÎi6P®³†¯ò”’YYGH“ç“­À)Ÿ& r¥“[ÕQÝ´ÞÃfóŽª|ëaq'NCE:×´wâÈ5Xò óÈPœDkl¹ôàaUMRÐwBò!yy´W}4$–;—OËÐ ªR8ëoM» …’qºÕ]³²—̤p»2 GÉIwŸí8E9&I3ŒÔÆDn}]=J™›¸4ïÁzƒÐC—õi¬28šË}ÃPÃL+q©Òr¿ e5y®U}g— [ØP”§ËßêÛÓYÚÚЂo”Ýßwá ^Í5;/†TžkóÖ©{Üën`w"·¼Ï¾{÷3"Ó®.fZ¨Ìâ`cÙY§"´̇”Äami’ß?¡Ö‰»¹Ê²1%0p1+hÇF¸eS·ÙvSlìÔ B/‘Q¢òêûÙ6ÙO¹‘8¼;êa#}0ÞH_ýrù×U3ÿdÝÆmôÑÉ+/ξ{züŸùóî½=™?Ë?ü:î¬W^<]ü÷Ù·Ûù“ï¾Rwæû~5?_5Ý“Ç}zÃVƒ8Ä~úFB˾ì/Ö;@ìƒfn/ï©ß]^káøC ³¥g¾=(¸/¢^¥ø‡¶<ŒjáaX|˜\¯öv}ôrŠ>®–Ö= ÃVÃ\­¿õ7º&d°õ`½WÂîÙ¾¬|€Î’gו)»[ÏÇqhcàß:©\éü;UÛŸÆ4÷ycï4¿^/l[ÝÊØÃ¦~PÕ6|èòæ\ûî—嬻á±7KÕMfßlªº·FßÓhÔ|Ô4}¶—ÉÒ•Z¡nàp`¾îã—¡q7Fh¸ï, „P+ʯ/Åh¨¾ÌAŽ)Œ³«hÓx›Öe]ÿl”¾Ò“5%gWjºg#ÍîôpËðàðeu÷lät_­ìÃP³kl®CM³ÏÜï]_îAÕ=Ùs¾¹¥>´å¶º{2² S—»Ãt¼Æë¹ÇÔŽúlBnG’ë‹fvÚ êyÛ`áåÛ.W‹Ê¶Ý޽Ÿ]_˪ {—¹O)?þ5`B±û¨NÆØ`Ë3û³c?ù2Øß„Äÿû÷§ÅŸÜßÿµ¬%endstream endobj 773 0 obj 1904 endobj 778 0 obj <> stream xœµ[KÜÆ¾/ ä/Ì-6°K÷ûá›)‰IqœM ΃šáJ´wÈ5‡«µä[ ò/rÉÈ_K5»»šï™Y)X@8ìîêz|õUuó‡ É膸¿ðÿvñÃÅÚ=‹ÿm÷›¯®/>ÿƲͬbJl®o.üº±d£%<—›ëýŧ”³Ï®¿ƒ—¼lYf´„×»‹O_¹W(Ë„’6<ú¦¸)š¢Úî'É3¢ˆ ?ÑŒú)µÞ¨Ìjn¤›’ƒÌJ'º5‚ëîÝmXœ÷ß¼b5LéÍÕàÝo›ð²ê¿¬3Ëãaí/;q2ùâ¼>´Ý@ B2bÂÓ|Û†‡¦÷Ï~™Ç9Qñáî!<…5‰ŒëtÛV™Ö„ÆŸ·»î= ºˆZ¢ÖÒKøGxÉ™dJVÜø}*‘)*6W̺Ée7¦-÷ÅÝô H%âŠeÕ^º§Wññ%™Ôëæ®†ß‹Ç Exõu=ê~醂èÝ M]·_†S!†»_Ã÷õnNÜ—u[Þ¼?®H½+Ú¼¼ÅÑ’ÐÁè'ÝÏi¼û}°öM½½?¤ášE“×u<, "—7eѤ¡ÌD+¾¿¹_˘eÑnËCç2Œg’騟¿ÎEφ0¬óp:÷ê“â°mÊ»¶¬«/ü¨a€2‘YªÈ*!:­ßâõÛÎÕ˜ÛGÔÎCYíêî©ÌxX|ܹ¼hlôò}±ïÞ#™f:>|b„0îÜ„çhøòÐ=‚‘Ír(Ú ŒÅgm†É£ªZ/4Õ.ÅiR3ù𨮺gô,£ÐoË+¨…ˆ¡Ñ¹ßºG6“B3\{hYžV!Ð%¸¿÷º9ÓH’1Aâ躙]T`x„ÌçETÀŠûÎk^3‰8Z,/zÅ%Ë´u1CÝSæ¼ó{æšàvŠÊ?SÂbÜw–Ò™TDö5íüÑÊèíù!O4‡goŠªhò¶èÐL€­4Ú*¯vÑZ©±£pΣ—?×$=vaП“B؉ …?`ï ΗÈæ üú­ßÄ9R®ìrVÆU7'™a4ÝýÁ+¨[(n''ãÒÄGs\qñС8çf$&Îû*D·˜ÙEó.¼È(Auƨ‡0³cûh‹Y¬)îB@RF£Ùë&bÒ|jµž<'[í2"ŽÄ<›<Î3&E1M7ÅmÞ–ÝJLƒH˜–; X2¶²ÇYÉ›ÚKI!á 8µq° ì› '—Ah‚œmÂh}²véT»ÉYƒAnaj)uð9%ñm·÷.~»ð€\Æ2¬^Bb˜Wešóü|Dågzœk=!¥ugÒºu“kœžnë›0štO—F4Px)–VÓ±wœœø(<[Ûã#¼ƒó³¼ã*þÔÑN<Åú¹LW¡j£M5Eñò¹Dj@S«‰c‰4¾·’Hp?ÉÎN"޼}ð&¼Çd 1Wq®ÎZ*-úÅÛòvüX„z ÍŒ’S#‚êÎPŸö4 ù‰T‘P”q‹Î§8*øwå“!pS¢õš”eU¶e~Û½m³{wÓð®¥cÁ]0·¨üºèúaZT kW&/«àhÖ(d…EãÍi2ªÅÙ)÷¯£",9‰¼‚{q¡Qû»Õ…E§¨+o0ðš– ST£g#ʉć#ÊA|¥aNj’°&o8ÛÄH2 Û!)‰þ Ò<”_³é[ÕU¤Ô¢¹P ’8lëàÍ­9™X2·¥˜ùÏ· ä.Žœåìô“Êh¯îÎoQ{/ë'MLO¨éË»Håiþú¶˜Ã)Ö±Ë8]¡Æ"9\CU›V^ÍÊêz H:Qq‰²õ ¸‡HC­Áü1Ôr…žûGÄR¹î´Á|ÊÌ™1çR¨(†¾ Ž¥2JFœùL4¥ ìcUD Ù”dŽ¢)Oü/y:A¼ú¤ H #ló ´ €!¤ +ƒ=wFâÂñ†‘ƒ‹œ‹NõÑ“<.v^ÃÔD\ˆ‹”ªÔŽÈ¿Ñj(:šOÎeRô-–ýŒ ú`À•…‘°Æa%ÎuJÌå¾JVÝæl؃”bzwÌŒé]eB«íæpfÌŒƒ}6•Qb?¼ ~ `!)ÖÆŸ¿è¹ ·œí€€ØÊÌw@ ¶Ðè¡U²™œÝÓQñã]SØE‘wå#¶#9rT‰íËÛ[H¿€»Cg{רçf\{ZýxPЙü™®´,Å>n› 3îÂ"JObR036-Ðz™@?TdJ§^`³++°E·–€ ÈŸ¥œiÉpáÜÓ:[CGé+8A˜Ô1z2ÍE¼š~P3ƒò1û,€´á¨CìhÁn ŸÑÊüƘ¢HÆ®ÝíCÌi·¹SpOŒ„÷±»§8Ÿ¦<`7k-˜é§q?\¢—õR&K°t,ëÿ…<üR…òߕЩîY*ìt‡Íˆ^±ÕŸkÑè×óXÎ¥^Èüˆ»`X›Q§„7ä¡Ò'j\©ä;äÛU–vÒëv¸ŠQÛ×QP>ͽYW50˜` `i—AzBÌLQJøZHuFS1Ö dšªz‚Ÿ Í€®ui†|õP¤X~­÷AH™\l—€žÛw‡@9S>‚]ë\$›6å›ÒÇ wçIØC›Ô¥”É5|>N)L«1»9šÂ¾ý”\’o?Ë͈k]#æê‰Q?mÞ›¿kríÞ#Û€ñ¬k©Ë¹CØL÷HQRcã“ÀŠÔðŒÞá!èZÃgÇ©»kp2 p7p’cþ.„JGƒ¸EåÚV‡º*éXß?8·cš,—8çön¡ =ë‘[ä±óLÅX6¨„$¦]¤Ïε䤗șZ~r(‡Ò™™/=ˆ;:»©}Îa6!üö>F9KQ~¶³j6¥œDÏPNÅää˜ûW`ªr >Ô¡ xJêØAíáð¥ûÁ¸sÞéy #ÅBNR×äH±,­˜œuôö9FÏh]­iýøÚ5ªNÚaG ð öÍôÐqËê¦hJ?Š °›8%üÓ«=æ·î;\Šc~–ôb­DÞf Ûµéìnµ_IÝ¡ 6ö½ Å®O{ʰ”Dƒ-Ô&ˆçç×ZimôgŽÈU”Ñk!ù€ŽÐñšûØ`OµëÞ øæM~{(²À×´Æ» ÏbžÃ ã.<ÌÞea×Ç1“£I˜GªGUêÀ’š“èªëa71¤/ÅĤm0fÍÇ`mzÌÅâÊ››5Ú)aIÛªBôj…A€0ŠÎÄOM3êG”=†Kýìg¡ +5§ðÆuÇ=l¶„µòƒJXÆÈi7‚“€‘Œ¬l!ÅÑ©XSé’ÖlÎ[‡jĉýÝž@NT ;¶½¡XTŒlÚ~)c31ñ’>žÄf‹MDðkŽ5ü>vò¤Âæþ®ü¤h9£óõŸÕñàHD¤¶©oÃ5ÐèE¹ûáq²uD‹¤‘Ý¢‹s@AÅhŽ@àkÓ/ºõÇ™~ÑË?Îô‹NÒôN÷rfzD²ÅNŸ!ÙD-òƒG™³¨YD·¶HZÎç q³‚RÈõz\!«¦¼•îÏŒ¸g˜”ú¥¿ö7õ'$@¡ONuxH­æMœ'SÕÍÞ"¸l`Ì©=¤*‡Ë zÍ03ÝŠû]}µ¯ãQÎ0LÀ8ýHÞ›ÝZ#wíÖJƒ]Ú¦-K_¼iòÎÀP,òôÍD¾;â.â]ß¶8Äêƒ0“g1­®ì²œL}¹´7ˆVyÒÞXbÛ»wÇ ,¦z›‹¥vÚG:Ä'©)ýÊ͸ZÝ v¤Y1•™š¬wƒ#I|›(ùåÈ`íÅ»RT£±ýM£—“´l±‹‚/!ž¦Èý„¿F™äe Ó‰ÁtÊÑÝ^‹yQfä¿~‰ßVo™qñ´;¾»¢½Î”ÿª{®¡ð@ö!M£tj›îUõN7(™tK¹Àx¦sÈÔ«ðæsa’’ξRí# Ö¿ÉiS£bn¯s¦êàó…7Õ—Õ¶8´Ñ´CcA”>38ö½¬¡Öîød—n±ß•M{?ïÌ’÷ËÙ¨“ÿY¯y0ãk’Ú#òC Š7‹cÀUÏ˪Ègç4À95ÞÓ;'H7 ë¬h…‚S,»»€ùüË u?ÅÏ[Ý  ²aÀQÝ÷ªÿ,þøç?üþÇŽ!³¨®ýäßûúûŸþñßݬ€üò•jwUtS]»w5`´A§A3LkE¬ßF_oBÖµÒ}» ¡í®<¹wŸþxW|È@¾JÎ S¨° ~…òŸg©]íž¾+ª¶[P¦´pú¤Ñ=ïîF÷>„ìZ?qX/²Ÿ4ùƒ»j†C»ß_C6Å›øEâpì«oŠm›WofGÇ•·õ}’WS„¨²jC(C5Á ûXòéõæ×îï)[8endstream endobj 779 0 obj 3749 endobj 782 0 obj <> stream xœÕZKǾï¯àQvÇý~$ÈA±d[€²q”µãƒò˜%gwG g(r¸›•#rb9È%W; _K’Ÿü£TOwWÏCîr#ÔÓÏz|õUŸHFGÄý ÿŽgÏžh;ÿÏF?>9øð‰Ö#•YÍœøtdYÆ(i{;:™Üpò æÞÔÎ#bt­\N&÷ž.ÂdÕ¬3Ëãp€›sßM‘™áܪ0tºlÚ…”g„Fóq5lïÇ>ÍãDNTœ8¹ £p&‘ñœÂ ©LkBEzÜLÚy2#ʆ1j-=„¿D¸¹ÙÌ*¦„»¹°™0œ†©_¶‹Y&”Œ«ŸgÅ¢¨Æía®¯H|ͨßÒ²î–D,U¼å|èÜ#A@®ð”#fÝ›d;ùA±/ÊySÖÕ†¶f"³T©Ñ<Ðr£[trÑÞÑL!ñWe5©Ûa™)@nH3MHš³vÉ4ÓQà§A…„i”ö"G[O)—a?jx”ʲh‚ª4aQŠM•Êe\Üø{S“1ƒÊ*~; RÅ™õ²hÕÊ`½ÑRžÞ›ä³ü¼˜<ý ½-É ê†÷gímÊoQœƒÜ8§öÎÒ2 MÉKëˆòÒ Dê4ËzR½&Û Rcèß®IMgR›xZ„û Àz-òE‘·÷eàw< §¹(ããE[Ü{·$e¦:d”$É,ñ°q½ªÂ(>à éL ‰«÷-¥šõ ‘dB¨uC‘Z¼ ŠTZ³nˆp‚«+0ãÒDñ¬fÁˆ%{Þ¯>n(Àdßz10M`iÀ¼Ò¹—nŽÍ¸&<^¹¨ü˜6ùâ2Ü‘4Ÿ7ÁN¤AÁ€õDÁ¨ä¶Ñ•cÑÎêé´ŽÎ,ô†· '=: A¨17›ˆÛã 4޽(õa0OJ…*‘™äN³zQ ©9§QŒïEþj@þz@þü†÷Ê4oá1DCÈÕC87A‰A@p-!qÿý4:ÕÖt¯à®Ei ÚâÐïUuæçH•¢ën$.±¦çž7Wu…ªâ~ñ–ÛGÉi‘/›24EÑ1sÂè-]=>ûrusÍ,ŒATº›…¹€†ú~z/¯&Þv ×Pg¾ù¸z¹,O§×m˜€¨/IÜÞù‘¹À](aæ6F Ñ™¡M3ë“™_Ç|5îy“õÇM^ÎæÓ"\×Ò„bóù´çŽTµûK؉ »n€ÄráƒJ”GU7áq$ç€{äUx0£(ƒ`ä’3.ŒDÂÈ8­ê7+_^O¤¾Ť\ΧmPç`ž õ:ؑ觛†gq6lÊê|U.œ·ï ¢vØ}ÀfB$ºÇPxã‰iŽ¢]®N+iU!Ú²Iï9N"ɼË`ËŽøê›(IDK‰äe”n¤m”Á³UÀ`³–ò¼ ñ!xX>:4„#ïàÒ€Ý<˜öõºgðÆ-¥Bq4Õ€O­fû ‘(ä- <°mÀ çHÅp¢X€;Ï›4ÂÆ©g+/9ÿ zùŽqQ(Ç<6É—ö•áv§¨¢œ'Cá ÉϲžïC& ºŒy¸Ë‘G–d¸D›USüê7¿üã7­™#œýýøõÛÕÕ·Åò¿Néw¯Âÿß|ýoùíÛÙ ¡BâNF›€*Üö'‘@Âõ<P3£Q± ‰¤2°«“­Û•C €äÞqɼ›ûq=^-UÁbd"ÍÁ1…û8ö•¸à8²,ªÉÃË¢jÚ%Dc£œÖõ´ ÝGnèX?x™ :9ôU\§)†š‹ü*?¸¶ýÖ®…¬?D£I+YTÔqÝ”g×?oi)|ì:)š¼œœê?h?·¨6Dò_¶Rðbâv£±‚°$ÁŸ®¯ôŒY¦6DÈX£ ™ýe¬øÿ\†éså!ÀÔ#æâH(oìU‘Ö?(e¢LtœGØJIé³|ê FýT8Œ›™(l-ëÑb=¹WÎ9ÕÞ×F´T®¾¦]”ããŠÒxÐ…ßÖ!o goÀÜ…©øà}g`Ùµý'ÇadCW™p,7Ô‹Á™ãWæV²t`ðºõ¹#÷NÑ<¸IØ.¢ë9.™ýx~^TÅ"oŠI/ð*¢šNÑ… ¤@­'=$ñäT™ ,­Ýö ¹ŽZ^ź™;ˆ¯Ùñ+I‰)}çh¹V¯HÅ“e±¸ %XÆ‹Ž¡8 ¿IÙ%Ö§Å<âbÊÇêE¬ ‚ø®ûÜDPŸY¸hO¢"D<‹Å ©±LŠ0Æ„íÔªŽ¼òä0 ó^"¾ )dzRD «P· )D"b(8bØ‚ ¸œ¦ˆÁ:ÙÌÕE²jã'Ö² ¦ÂúYí5Ï,GógB£CðÛ›tkâX,#)°Í”tģ*£ù{¾bC³<ŒR¡ÕvOQ·=…î<%¾[#Õè†TNÁ¦k™Üù"?= nŒ¸\LB%S!|—H0cu7¹ì§&üL‡)É–rƒ‹‘¥»kLáìóqS^ƈISõ¹)¼ða²•H¢ëè †¨Û¨ý{x£´¨ÍøF–”Ùy#Kj˜øLÈ•PW¶øL„„Ù€/îA®¡U_ù¤_qJ$1&µÆ!)¦ÕƒÈ1àò]ˆSø´0F’þ½9P熱†"{B0OÖ#·rÉ6i‡6T-¥4½ áœî“è[ÒœÔoôÑp£ÆæØ4&¸[‚‰öoð_B2OÖ\û“`?ôÇUžPc‡ÇtvÞʈhâˆþôÏ«ó-‡(—¯‡¹­YÂÕ\±^Æ®¡'î÷·”5\-CÆ­éÞvö%éÜÛw Ev4Î#™á®’ªn&3`¡(êèãR«[²(êªëEU³¼e)œe&¥ò)ª1Öƒ´¯e}™X,jçgwÚ )8vª…¬û‚u͸š*ðÑ0åsw)o C‚?â¬íìݱÈôÃ(N£.êÍ{îÙ›=7üy^H`½iQ{0©AJ”šŠÓ€v@wÅâµÁRĸ¬“ìb!W»„VËf‘û®¨àÎz6A´sÕz1)¡\Êá¹Võ3ýú¿H5ÐŽ_a%ùU”åN¿2|° v«¶Sf½ a R‡dÎs<=_ÎC¨!}®ÇPà :7¦³‚cPïyÃÆ//D¦.SW‰î²ÝÀ`BAÐvÍÙÇcß-r…§^zôÐ,…Ìbû™®Œ*0ÙÞv¦Æ~ãå²<-§eŒD¦ŽçõÎSL²³CC·+²ªjPž #Å´öé1÷,¹·1eÁn ·µ4–_ÚoBVç oT@ÆüÅUøS›© à@ÍoéPì[£—{i †„aÎsð[±™õvž`‹A 1“öþÁII8fû`)•Ž~e ÙhIŠ ¸–üYj6s¼Î@*´5f]B¨ox6 5Ïtd®RGEè²Që:FxŽ÷ûÕ¸X6‘ùôMSCʈ<èpmãxmÇ/ÊE³ÚB*Á$µÜÉõt¦;?Mð;>ªÎí‡ï¨œcÛ. YˆìWFëêqYùàžF€àÙN¤ñ×T=cA‚;–ÒüãvÇðl6ocÜÀ€Xï%ŸÅHºë2:µÅÞf`?è#²TþþÎ|RGÃ'©Ÿ1TßI¡!°sª)R Û³s_ö™®V,L£oo(1÷c‡ÔPúß=A‰/ü˃ù×ËËwǧÇÏ~¿ºzóôÞŸþó··ïþõúå2yùÝ«_½~ #¯Þ©×¿~óÏá¸1Âþµ ‡¾ÿþRèäMÞ\Ï[™ô»#0Í/Êñò£Úg¢ýfÁ<Æwû$Õóëûá·m°g˜0ÿnxògÓÜ+C@OîÚÝ#ÖÖåB/‡RÓ»DÒ8C¢ô6M±]M1$ö::@|D¿+³ÖÑᘤlvtx;kýïÖ~ùè[^®Ž]×úLN´»¬š´Ê ÷Îw»HÃÏnå¶ ‡'£Ÿ¸?ÿeAž°endstream endobj 783 0 obj 3156 endobj 788 0 obj <> stream xœµZK$G>"Í@jN¬­éÚ|?ö¶¶W–±GÖJ^5Ý5;µÛÝÕ[U³ÃBâX\8 ñ °„´G~GøCD¾"«º«{­dKÙ™•™_Ä÷Eä¼™‘‚Έûÿ¿XŸ¼9y3£~,ýo±ž}pvòø3Ëf¶°Š)1;»8 èÌ’™–0.ggë“G”‹÷Î^ÁdcG“-+Œ–°àlyòè¹›BY!”´qè³ê¢j«Í¢r?I^ETü‰4|Rë™*¬æFºOr8³’ÆÝÁµŸ»ˆ›óáÌ9+¨aJÏæ£¹/Ú8Y 'ëÂrÅxÜû©?Na8·é8ç]ïR8$#&Ž–‹>jø|û¸L9QipyGaO"Ó>þڪКÐ4ñÇýÒÏ“`‹d%j-=…ÿD3ÉfŒ¬¸ñ÷äBŠ«Ù\ÂÍüšOšg¿Ü6ßA°‚Y–nÒ\ø DA9ûWnÈ‚p“†ºj³|ö¶ÚôO¼1h¡ŒMç>ošÕ©ž»q æ˜SÆ$Ôÿ|]o–ÍuZ§)I—û¨-¯ËóU…kýo£µ‹fYáJ– óƒ¶Ü^Ö‹îCøÕÛ ÐA…ˆ¿þf {sæ\Ö˜3gs8£?AÕ-ÚzÛ×ÍæIX5†7…¥ l °œÈ|Ðô—n2“É€‡«EÕV7±.¥ñ§ËÒ[˜ŒÂþaì­Ÿñ¢ŒzßÀ$jÒM–m™œÃðò×%–X™ éŒèOD ÁdZ]nvl¡M~\4Á·J›t–`C0Ò"mRv1:!¸8.]¯›?8Ü…‹„Çuµö›ðN·91C˜Fx·]'*ËÒê³Ë*+ÍÔÅÕ}/>:>v xIÈ3é⵿øœ^P˜8§Ô¡ÅècÐjN“õú&…·e8îDMÁWu&„)µ D1LY!sj™Þ¦êúzS:Hûƒ •JÛµÕË8Î!dÚ;Œ¹,ƒß¹†‹ðQ”&o]F()&Nð~4‚Er†xsô'pÕ±C +ä1[Où5ºPB³Á…ºýOÛ)\4íºZzl YHL$šÔàÕ+ 'Ó)  ¿–FG´ŽDlKØ“3RŽíA c¬Ùq‡*ŒBºúƒÛ";~èQp•®^oê¾.ûjW«íøŒKÌS7!uqNÈÑc,VuµI ÂëöÑ÷\!Úsê"†bþ)7Á±Zx1ŠÍC0Ð>Šªj8Wbü?01ýa³Þ#’¦+ÝÊ™ã7ÄÄ&éejyšºnÚéÜ(€@b]/Ìßf÷´2d*Ô-3‰2yfê§hˆ>Äk°•Kû™Ê·#b†(ßq(N‹ÊôãTÛ#•ÊäÛÓS™ê‹|„±ÛÝn áÑÊÔAÎ` lš º^P2¤Ì(ìc­ª2H}ð5(>f “;”¡‘o‰çÛÓð cÉDÓ 5Ô. 1©F{`dkmä1‡Æ” ÷"q#˜ƒåÂw¢plº®>_ùÚ‡»6&–ˆ.Ä^¼ç¿ÇRØÀ(ÛT©,1Ñfyuö†2¿'Ø;?Ñ\zE¨€ æ‚£°ütFSØõHgø{›Ö7uÿ\ýü?ûòoAê¤åýhûu÷å¿yõ÷õ¿ßýî«—øÎúëW¿}ó½w“ |†ÍbG¨ë•ÿðY`8% :ëf›’˵[[t; Oš•@FNS£„ÞÖýÍ'M__ÜDÊÌ.%ç8¼KÏSÓÜNõ<‰Çð oY– •vÙoyºßüRAuvTn—fèï¯u¿¶Ý6]ÍLß2Å@}þiSoúÖA«í@·”€¼‡²ñï–æ& Óhì;h€aô2’ºç…ݾʰÚÍ}.Ø~›`Ü@Ö”¤¹Ñ(T·[Œ`NQKcò¥@(%·Ã€õ8n³F‘–Kð©Îò2ɂСÁÞgîJL]¯îSNY$‚-d²M$"ñý¢? öÕˇeµæÕÛVVõæe’ dŸÚ‘’¹i‘@®/«C­מ’ÈÏŸ§š,ÿOÊîõ$a¸¬zì@ÏÆõЊŸ_wwü6 FðcEA²©$(®»jU-úÔ†‚&(C†õ–Ù5Ö-P3YŸÞ;t¬–;â «è~èCv0|h$Ý (l-¶É§”YtÝe½Z¦\Á‘ ï~ÁA,ÙÜ\8KRóLÚwŒ¥"23Íko-1P øÖ²sR ™²ïÿbAø^uÌ9ßéb€WÙNKë®Mã‰NwÓ.ÝÛB|äbîñ2ù£­Ve_{‹A©«4>aÆ6¬j?ÑÜv„Mu´qîÀÊ>ÉÏþ!è|¿K)›“œê—¡úgîõëÌÉV4|·^  ˆgÇï1©3œVãY/µäci<Ù »ÚnÓŽ‚æúc¾ª.B8ø†?ÖÖW}W‡ ×ñ'4ןí&à‹H¨bG,?1|GœC¢| ÂdF,+Ì?ý3`+mÿ¯¿,ÿî›_·ûÏ?ß]_2• ±ÿ/}ù£êf]nòrôý­ËKJÔÑ'õ;iĤ/_W7_Ó4ím½ù°]Õ]¿7øâÑûû—dRÅähP¹OvQJQqøýP ×Т–Ž ®E¥¥£<í ¾d±×9þæ‹Pœb“Ö›,¡›bùÞ½8Ž0É­8ˆÂNUR>3ÌÃ9þ GPŸ×i-U˜¾¦(lú&øÂLßóÁ>“;RŠ:”˜eÈÒUÁå”§S§Lí-ÿ‘L[&Ûà+DµVcÎCÂÅø "™ÀZ(!Ý'o<0&@ið'#]dbšp{†”Yy¯ºÓhT›³d[mÛª ¼ÆA-‹ÜZÙAŒêýw.qê¤gº”©MºÙ¿y–m±È¤Ü¿c HGÝùo&ºKÛÌí²j‹È'ƒþå³r²_F.Cz¤Ôb[ê®ÖŒçaùÏȲ0Õ ÎÔ AÎgeíj²H¶f’ä…™¸0˜z_æÈXüº4ÏóƒYƒEw:åê¤ýwÝŸší6‡/†‹«6 #íþB}zT®I„%…[µì³³ÙOOÜ¿ÿº vÚendstream endobj 789 0 obj 2875 endobj 794 0 obj <> stream xœ­XËn#Ç]ÐÚÀ O€a¹ÞÉÊF xaÈX@fán±[m²›ênRVŒ“]03ù‚YecÈ6½ó6Ùå‡rëu›MR¢, f€bUÝç9÷T_M(aêÿÒÿ³åÉÕÉÕ„…µüßl9yÿôäÝçÆL4qFX59=?‰ØÄq› wH79]ž<™ýêô ØoÅöþiØGåd •ÂLNË“'Ÿµi³ÞÞlˆš 0à÷¼ç·(b…p:-u}8È¡œÚ´ZÌú´hàú¸öa‘7 ªóÆò:­‚Mª²Ê/ib e2-}Ô—aŸ"T»´ÆœcOá™ÿýÿòÛ%Ï¡Ÿÿ§Û|÷î/þòÖòõß\ý⟇¢ÀâÒ‰v–¸TØS¿× fwnV)DÃÏyìžÅKýœÖZØp« NAp¨¥¥"ìý¸X}Òôóó›à%”ÃÑœ©æ<\- ˜¢¯ýÄG…ÍK]U—lªºF­$ZéìÉYÓ,žúå)¬+×L…6£,:::feÎÑoÚâº8[Tx4ü6:z=¯ËæÏ£o=ë g%‹=ßlª¶—Õ󪜷Õlð€j±å¸_å‚H—òòP©¦Üc@ú´úf,/ªnÖÎWý¼©Ÿê).‰cÚû¥ &.Ætzš’9be†Oµ‰†bÍ«:®iéxö­ØÑ\Q•––Õ2„@¡7LNíYÂ2åa¡È Š´2ï’QgŒÂ2÷©Cçæýe<Í QÖå½}“nTh·O±i¢(Ëð E Çр꼭;&¹ÆãEŸ‚qRªí>ëNe—Š.™ÖÔåp–Å* „ûsDI™£UÞØ´xظ½X¤ËFæ}—8K™7®Š6ÌP…¤Ö?M1¬¬V‰ÕŒP «ZÎë‹ÐµBC1»S0너-ÕÔ™ ÏŽ\_V¹»}éYH¹œþOûv=ë×mÁþqÑ}yêÀ ÃЛƒCÔÒX¼xíGÁ½îæ–Hq¼t:Ä캴*I ' }KsýZ¦ÂpbÁDH–†òë,Ø'‚ú'¢F“l„ k˜ÝÁ‰&’a¦&òÃcF„%”i¹·ßˆ˜në]i¥Í܆’øÇþ)ÍŒóìNðŽ:có›¸ä”ÆÖ“lp ^Kù ÌO… r=®3V€Ëv* <šq@‰üX²‰lÚn‡½©ØŠ¾oçg뾊³Ÿ0”Hi¨2è¦ö=¡ˆØÛ:$Ö·þ·Z/¼Ì¨i(QNj¬{]\Ä|J ü ség‹y$/(¾Fˆõ™L9ôÕM»,‹›Xm³jT“î²Y/¹ ˆœã™_ÀÙ©ð¶Å0R,év Ôh¼÷<2¬a¤½”þ³K«ˆâ–Êjf³ìE…S«]G8SB›;z|V¬»˜èrå¶H".ƒ¸ù|HäÌl©1.`€Žƒ ¦yâÂoënë(`bq”E›GµfèóEUWmÑÇ¡)}FlÞÞ6ˤ•” ùÀj?Èf5]¯º§É¢Õ˜¹ëËù,7cùÞË Ë<·3ý€&@p™ÍãœÊ¥3Â, W+:T¯Y»µ¾¢’˜Aë¿ú÷!­ÿ­*_ý÷ïÿøsùêÍß–GÔ¾áú±Õ¾ó5©ýçÕÕºêBcxµuX‡ÈýñƒÜ‡uå¡#Íž¸æ^köüÛH³oéýÃgSQ§Gä:Pyý³äú®Z7¨ o¡Îá´£ÏAï=éñ;Cïnñðý½>6•˜Õ;úlœŸ#Šü•þðü ‹wy ä T"Ôx¢Ü`øX9ä|D¸Q6¯Ü)Ìnç!Dg·xèû]îùìÉÚmþ´)P·Pă‚À+j wÆ_ª®¦€ñâôýh‹ ÆçG," ¡ ‰im>K$ÁöÙ;žїûF}˜K4O&åé›Ô<åø"üio˜€Bï@@H†až©æ›Ô]Öì?„Avä„ÁòN /(~õ+R;0£Æ‰ÍÅÐø9ä@—$&è‹°ÈγAk ,%pßòQ&RøŽ˜È ;5u”>Ü?xÕÑ;ϧ}ÉqqT¢ä\Ör{Ræš*T5[‘ˆý$‚¢†ö ú6¡ˆêHj óNÅ ,aܸ;˜ÿÌv¾ÙŒlÌ@ †U°Ã]„Ú^‰lÃÔ9Y‡9ßçëzæ!:Å-â'Þ¶MV'aI=íâGæÈ˜\(¤ö›C8„Wt~¶ôâÓªÿ°¨ËEþ.2†ŸöPðk0I ,²Ý‚¢£b1Sa$RµôV7Ynð¸XĤB CÈõ‡Sª%‡Û«M}‘ä9¤ßa|0!Çñ–8ÙÁže¾¦"u‰áé"v«¯yÅ»ÓGÆÓ|W7_ýï‡ñ¸úö—åÛßUÝfõº|µx¹|}ÿå Šóø³ëƒÓÉoOüßÿp$endstream endobj 795 0 obj 1967 endobj 798 0 obj <> stream xœÍYII¾·æn)q˜AråľÌm€‘8°¶[‹”]ݦ*³œ•ÕmšXÈÀ ĉË\ùùA¼Èˆx¹UWW·-„,Ùrd,oùÞ÷–z•‘œfÄÿ‰ÿ.7g¯Î^e´[Kÿ,7Ùw/Î>=·,³¹UL‰ìâê, ™%™–°.³‹ÍÙ'”«ï\¼„ÍÆŽ6[–-áÀÅêì“~ e¹PÒÆ¥swåW-ÿ$yNQñÍi¸RëLåVs#ý•dVÒxÑ­\w{—ñq>ܹ`95Lél1ÚûË&nVÃÍ:·\1ßþ¼'7œÛ$Îå®íR’W‹e5\Ö~P¤œ¨´¸º‹«ð&‘éNm•kMhÚøÃvÕí“`‹d%j-}‰ 9“,3`dÅM§'"W\e fýå2Zv[€eÛ×myõÆÔ$—”²xg}Õ=#rJXZû­_²¹ Ü$µw®Z}q ÷|æ¿xHª´ý²®×ÏüòÖ%—Ù‚’Ü ììF§ŒH&û~SÜ—k‡'»oÝQ0C·å®¬VõžÕZÝ{Ö Z?îly[ïʶ¬+<­¸HØýi]VmÖ½[ߺ¦)WîÜ­ÊÆ-{ ˆâ{ùUÆsa“o¿:7 ÆU.5—z¼Ü: ÜnÙ”[”pšLä–*¯“4“ ÓÅM2FOvî6xšk‚º*¬)aYÚ×[C3\Ú¸MwÉ5Óɧ—1^Óí&F;“&-wÝ7$â«aAy/^ÙÞ„óÌ@ªôL[Ç;µÅØhƒ~TçZ˜ôxÀï?pZ šv»UÚ­16;¸u¯É\A¨¥ån'Ðç4I)à•¹P £f TÿL½No3JÄôF uìtåîæ~-$¹²/@^À»ß£Ï¢ ŒEjrÛÈ8šK‰hX•Õu4 á,­×U¤ ipíîÆ%M̧rÎó¶Ù/Û}ã)ý¨Øý掩G:¸>x1XÌöö~¾÷ô|ÒÝ ˜ž‰¡‹}„Y™¬Qì‚A ÚŽí¹skl·Êýà\©1xú(S Õ}Wš´ôè 2R¤WbPÑœoÏ¢Js'Ò’âÓè19\(7 µèb€_‰Þ¸×ªð¶`øÌ± íL̺l#™o€½ù’þmô!ð Á‰ÊŸfj(IäØÔ$B©‰©á)+&¦f¹´FNL­7HT)ª}ª‚ ÀðŒÒiÖRC|ì·Û¸hîtÍbí®bŒ*¯ÇØMõ¾Ù_Bòe=ÒTqÝŽb! ØÒjnO¦ÅÉEÁh÷ñÐòe3Z$†©,†fwÌjòmX²Rƒ¦ÖŒÁ}åÿÈ ƒmFŒ«-›SÑ+)è|‹¢""y_æ´àctŠu‰¢Ðˆ±›º¬+±¾*Ú¶)/ÁýÝ­Pz ÁëæcÙ Â\„ ´ kкa9î–åGdTè±Í—˜üBS§Å1§dÓ±<§;;ñ;Ãàø9¾b¼>zþ òxQ×/Ü«h0¾Öeˆ²"HW©BOç¡!©êfS¬×o¢·´L¦ÙÝÔûPírðßÓ—×pÄEë9 ø˜! %1ú! ‹@‰ª¼JP”;˜6(C7¾GTƒÕÌ#£*ŽL¢ÒB‡†¢6{×¹ôÓÏ3ê«Ô4—ñ“‹ÌB5œIŸ'»QË_ܯ߼þǯBJýíÕ»?“—oÿóûÕ»¯åêÝ¿¿õO+Û¬3á-¡Ý_ÄúÚ(„ø6¦cígQ©]l>'c(î,`Î2*Q¿÷ÜíÊ/Á¯önì)Jý¤„ Qx?ƒ€uEÒâÀ$ÁŸã¢ñ4 }õ¢ãIÉ“_œ&Šêzíâ7elúvO3Y•E>\3ï )v áy¾4ï[¸0Lä} ')Šƒ%ó nЧG÷ÝM½K¤Á9•Þ?±<1}ë_TujF¹åùô@O!qc¯Ò¶n³E0¾Ž3Ý4âaøƒ2k“Io! »¨'Àƒn<¬ÎÿØe½Z}VV; Ƙf˜8.zŒn_V¨'!!Œ*8$w‹äóz¹Þ§É´àÂ’ùÌepõKAèýlËé¹ööu÷Orýýw«_üáíêÝþ››?½|ûǯÖÿúëgðÿoìn·°-@$¦˜m-1žwó ”ï­]˜6€‘ﺕ¡¹ Pß‹n“ôžÅÑkZ½Ú–›CD ‡( ¢ä0CSp yŸi«´tÙ\ê š[õd‚–’Ì bp®ÔG»èc´içSTÂí‰ ={]ïbL/о;PnÝA·»)·¡~ñ½ÓBSɧõH.DJÄ1&çcîçç“’ehÝßo,¤þ„8ʰqë'pŠêɨØ3ÖšýŽÉA†ÊZl'жÞtzC«(6výt :cLnÝ*ϵ¶âi {ŒªB͆L’)ùT]¡2¤þ·DùPRM­ƒ’t¢ã‚wd7k5—žïWÑŽŒàïyWuú=Ž6ﬖô0Ü”Üè™Ù™eGšŒ»ªŸh(ûÄ>‚°ÁänŸÿp0ÿi.ç´Ï 8Íå+¤cÓ\"{+m¦¹jüqá¾fò—r—8É›”PË}“a¤Å–bPϙĠ;DΊˤŠ`'[†þw–Ô9`¯{ñܵ˜|’.Ÿýô@@ä-¡qîõÅEö³3ÿç¿ñWendstream endobj 799 0 obj 2228 endobj 803 0 obj <> stream xœ½YKoY^"YlY°@*vƒ_îûÁ.Ì šHL#*ÝÕq‡î.»ºlÇa¢ FQ`V¬`Ç!ø,a5ˆsoÝ{nUuÙØ YJ¤Û÷yßù¾Sç%¬ þ/þ?[œœ,Œ¥ÿfëâ‡Çß?2¦ÐÄaUq¼8è°ÂqÂ+Œ†=¤+Ž×̾wüæ[ÑŸæQYÂDg¥0Åñüàƒ_6q²îO6Ä Íàç<öS±B8‡žoÛ° B9µq´œµqÐÀöÝØ'eš(¨NçWqΤ*Sù!MŒ¡LÆ¡·ó0Oª]cαGðŒ7w…#Ns-ýÍ¥#Ò §ž„ÅœH­Òê£jQ5ÕfSp}MÓ£aÝ–Ž÷·d`b¥Ó˜0aÒc°=ü˜<ç­Z8Jta\!øá«êWׯ¾þÊO—x¥?ÿvþ‹ß}9wñ­õï_~ùöͪzýÑÛo¬ë—_œ÷ŸS/BGÓB;K\tò±Ÿkˆ†×¦«]ŸÅç®x²éöݦ~Vk-lØU§ ¸ ¦‡¹ŸU«jÖ.ëÍÓº].®ÃŠpŠ^¯áIåé€ßø!x16MÛV›ùÇ—Õ¦ G+F 3)ž×õê‘>„qeÁÒ‡ŒÂ£XŽMu~QmÛº™XúQS^•ÏW.¿…å1ñäø‚‰åËM;±2Ü–Í‹*_X86µÌ.~ ˜½„Ðå®P rL@öXÀXÈSÅœ*šê`qc•Ÿ&4€°€ àÙÑ“O…B½fÉy?Ÿ¬aƒ¬øÒy³»dƒ‹m—¬ m²Â"š`CZ92¹&V£YÏšåºlBÑP– “§}ÅCã¡9€™5i°ƒâ0î†í½Fw_ŒVÈÑËU>¼Ž‹­uã¼7E/$¬Ê¢F ›Â˜z¼e“aLýfç Å]2ô¬Kb°¾X .Ãb¨ÞÚZ|qÄ0€w „ íœA”ãh‡H<ü"#©H“£ÿæ$D5h„Û’Ò”K¼u/9„UñCHh¨.°lÒñ®gON>}ül* ”·9…pÞ;i@søä4ƒ`Df<‡ˆI°|µ.Ï‚= >ŠóCa€œ‰+Â3±È!b¬•6Ù§ „ìëîÂŒ L€{cNGLW™º¥R̨Á²—ÝH´H†]íðù=DwŽgð¹À ÓˆƆH¥÷t sD3=’Òõզʲ_¢Éwe¿ÿm°tÏ®AÒþ÷ï Šÿ?u °Kñ]ëkèþ]E•ªÄv]Ý  ¬Åʹé ö å÷­:±6ç"o.Š!lete; Þ@iÄ–Þ­x^î L¾o¹y«*7t—]ôÀy,Í…Ê­Ó œ‹Gÿ©c¡°ç zúZ T7Ò›CÐPÀTGJw{ÖÝËëÇÄ/ªÙò›ØHQŽœÊ…Býƒ±Y\ôHHf&3Äjã.·†:ø“ ÕOÉžKu› ”Ãív|¥çO)šN>«ZDÉŸ¤Íwt6ÕX÷V+ë¶áHùzlD£«†]$A •É6÷Ëð¸%†2“™ê !wH•Ó»N½SÀòÎ7>,&‰´Dçö|ok©sSiÐ/Ð@dÐ ¹S ö–ãa>#Ìð»Š#=0ç’|Ø#“Y¦ÆfŽÃšæxÉaMÄòÕoƒ9¹'tÚ1‰f8À´Ü©FÛÝÚir %?<Ș)ɯ‘£Ž5?hȉ½MN£`ûпÑÜaÿª+'€Ò¨wÕ1NPÁ†… Sx²0tܼÚ.£®ßfjH"逰U#WRB™ÉÁq_5ͨ{:в±ô20SÉ[Öv%ã,¶·¬Ì˜ø~ïð`C…QŒ4l+޹e¼ôí²ÝÏ=Ûö´1Ïqroß³Yb]Àò÷„¬â5Ã⊹5@àT¹›oªrk0?ÎŘøY“9^ÔÂPP²hiaÆð+ÌZ˜jäW÷×ÂŒ 9ü¢‰©Y¾s0ÐU†2á$e¬B°þ06#¨ï&O\vI«r¥Î,lꊚ{¦˜Ûy|üÕª¬Û/ÿÔáSºÅ¿þ±zúùw¶—úúÅÛ¯ïö¥PχÃéïäúÏ6ëò,¥WÈð{}¤7´/²R‡q)ÜèÛu5X¦í´RO¿ làWy-"ðÄZ6RÍ>Þ LËM…[0”6þÖ1%Ê’7HTüßÀZkøendstream endobj 804 0 obj 2521 endobj 807 0 obj <> stream xœ­ZËŽdG]"µøˆbÅ M]çûaÄÂ` /À6vÛÌÂBª®ºÕ}›zMÕínÚ6±ÀBÖ|;/ùÿCäÍŒÈûêªêÁÉ£ÉÊG䉈'òúõ„|Ÿô÷|}ñúâõ„7cø×|=ùùåÅ;Ÿz1ñ…7¨Éåò".àÏ&Vøž\®/^pé~ry “ïLö¢pVÂËÅÅ‹Wa …2Ú§¡OËe¹/7ó2ü¤eÁ 3é'^𸥵Sx+[J°ÙhL÷NIÛ̧Ãe{æTÜ c'ÓÎÜ/÷i²iO¶…—FÈtö{9…“Ò£9W‡ºYÈÁHÁ\Íë4haû8öá 'JfppñFáL¦ñœæÚ¦°–qœø«zÑÌÓ€¢Ä½ç/á?j ã©´þ¥&SáÃÞºYò~y˜ï«]]m7ïÆU]7 UxnÌd y ÷ ‹.oƒ+œ!¯•÷aÌÒ2©plÇŒòl€°…á–ãк\§ý¬°ÙU– K0ìSd€ûñØêÐŒ±BÓØ¡¬6^fûªú&n œŽÖlÓ–Ú2\^Çëq[håÑÆ»Íz¶Û…q©á> ÇË:– 4ý¡Ú,š}LŸàp²Ô3ƒmñFæˆ=Uï¨ á)zv³}D<ÎDˆê—‡åh΢Ü%8¬ÔÇfQm®›û„L#ƒš=!VÀ‘‚ƒÛyˆí¿)Â~pIÀÊ9Ää³z7¯ïöåGÛºZ>þzvøýXlq‡ÝbÀ ¼0Òàí>» éuÖÞÂF´ å5Â7‹ÂîÆä°Y•óº\á'Á¨ ºåò&Æ™®0”¬qÌJ+å»Áš‚kÕCðH`xHoA~¼;ÄÀ°ÚkÑÍ !µC‡=ÆtrÖhÕ‹_SHgÑÖW).˜óŽî»¿O.xè}š e7*y¡²/ö)ªTÁ7äDÌ<©ˆª²=ŠSâMš£˜$oÄ 2)ñèãØ:ÆÞû™tÓA]. Ndë„„cÒlˆcvO¥jP2F‘”.m3«Slhém{Áh‹B0…cOóX‘b ¥º@RJQÑ[î·ë_l7?¼†$lÎÔ`†zKpCzë>¸*ê ‡pÑ‹GHF…ô´P&P˜dˆbµŒ;2PìÓ;ÜÔŽ„£ GŠå˜nBäig]nÊý¬Ži=• rÊi‡h™’ï5 C®ÐBiDs_îV1‚¡ôÙ.¤PÄÑåÕWÈý®B°ŽmÑ’šŒz*f|Hs§bøT¡Š@BÕ¦ õ%N£¸é³ÇY¤„µ9ç x–«e:_2Üõf¶H¢=±WKCT>è—ûf\ò šðV÷UñKuú1¥¬‚ZhºžÈŽ7)¨~23¦!ܽ3½Ã@)Rý«zbj|šÒ$ô;P‘ ¢‡ üѨò¿—¿{üÃþÕ”=‡þ÷ëÛoÿöå‹ÛoÿñÑí›?¿¹ýçúßßýé«ë¿ü`ý×Û7¯ôÝè…²èׂ ì™$Ÿr«»êPó¿ò$h ZÕÂ[†{ûPIÁ×9jšY=«we´„ÙýEu¨®ªUU7i^XNEðg©^3é†Ó?ßl¯s µ˜¡Àñôø[(faö7Ç6ød¶¯«ÙjõøqwŸ8»Ùüé}ÚËPRæŸ6;6ÝŒMƒ8àÜõ–GaÔ@„>FlJn(×L â_Í8€0üà¾ÜÔ/4”*A\pµÝ®}9…q’£{©&)hR¸çûûÙÃìjUÒÚæ·¸68O«ù9þüãXN…‚<à ^HÄW´á9pBOh@ìž'4Læ³çëŒ|k,…Ð% T†¥x ‘Ô8’QÙ:!H üû½zç¨SïGž²$ç²ã”»ýsžÈ·<¢;û Dï8¥F(f¦í‰Ù:ñ¸ääÿ–è臮âjTÎnûñ}†uáeçóí_­” ï%ƒg³qVÎ}Þr»Zm‘é”m‘íõ»Q\)¨ÿ ÿ§!ê­j~ý-†ƒÚKîÌ…ê¶<ÏuBPßÿd5Lñ%ݰì©ÀxhÃS-œ({‡T–ÆåF ©÷e‚â mYÞ¥ÎÍOëGVl‘2<§ˆÍ¶N€+F7¿¯Ê‡K°ðp¯åYØ ½HÎr§åôH6ºE>n/—D¥­¬ º;ß®w+HúxÏÖ‚ç7‘ÎMu#‡Åú<÷qêÇŽ2kóP¨âCÀ!¡*üñȱwõ3^&¬ËYñPÕ7 z^cqôOçGGµòâÿóªsDñ ŠeÇ–cÅò8ßäW1z.nÀ…Ñ,w:OÊ»‘"Þ"–ïIáÑ5&ÈÃàèr•Ñ ±¤ê0ã§J*úëóG:.”¥6Ž ³çå%Çò³XÌËøœ8ž—@øÜäo.m0Ac{_N€üÑF" F êÞÛÚ)ú0ŽNfoÎeŸÖò|K–É·ÃËáÛÐÏ(Ëê@ñ½ <¼v¿Ž‚ÒÒ­7Ò£Ü:ZÜçÅÌç଱WzËä“_ #ùAš+a‡|z_Bòiú±òQN¼e 2V9*z$Lë=iŽOË–·&Ùn»äcͰµ Ýý9Ö@œ×]mlR oˆ¼¯°Ÿä+^ÖH[$ÂJc£„ ÉsÝ;6Eþ€rB IO¶ŸHz¼×šø¦%‘¤;/“¡[rf¨#„ ³º„¥|‘?¨õu„‰iÔ9ç6B[)v*t>_YŠÞ>“ˆÜˆôõš’ªÛœB,INmFÖkNÒבSDÇ•âIáˆçN.çrøѺ][‰ZGÏ탛 ¾©AòÂ;_Ÿåã1Žô}óŽßI‹.WB°‹¡L“9.žùÿ?t>|$ªá]wضiº–Q{6Cº,\óGѯ;# ٲ孺útÚcH§²¿!­ôDzq=÷}O-\N~sþü@î§endstream endobj 808 0 obj 2625 endobj 812 0 obj <> stream xœÝWËŽE] 6ѤA¢kêý`4‚ÉÌI `!†‡±kbCÛíi·‡ŒD`A#PX°âXÂ'°àx ·žžqœx‚²B^ؾU]uî¹çžª>*0"vŸøÝwŽ:Gñ±ôÕ—ºÍ‚ÝÃNšZº† ZH‰‘,ºãÎÆ‹Ït?ìÁ`¸;èl¼ôò•˯l]½~íµWÝ€T2üæþ–šÑBHé#¿û'•*Jæÿww·?}awûÍ··¶þpƒÚ°"ŒýæâÅ\˜ý|×E÷»Å ÀO©FJÈ„Â+SP©52¢Zd”KuóuMT±WwnéK{ûOîïþù÷_OÀ/ŸÅŒJ„\ïm¾ûþ;.Ì2/?~;{ïsûÏÖü‹ùσ¯îlÜuã€ÆMRÉݦaKà ;¨n»=;ë7£i;ª'ϹÇ(G†‹%¥È`î7xë²§ˆ#m¤Ž›6ÖîÖUÝÌÂ^†žÛ DµˆS§£[¶Škc ¨BxR·y$ M¥ìUUªŽ”Îö{­ UY•D¥(JxÂ0¬à7leûí•ÉtÞ®ÄHˆI{ÎüäÑä¦›Ê bŠÐ8d]Ì@3žb““ÜД‹ßE# §¬ÛaÏGG!1Í™ø§ ðC©ŠÁzRÄ©š˜4õHcª6l£(Åêx;ð’ÐKJÎ?O™Ð úI@.”ÊÈë‰]JÅíW#›p.°Ç$‰æ8M )†–bA´ÐÅ ôSâx§a…ÑØ>ë3ˆ‘þxvƒ¨Ñ&!ë@†¶ñ‰IÄ5SëÑ)(+Y¬P5¶78 Ý‚Uiî°7‹ÒS‚&rFm`Ç0–‰Hì®ÖÃ)vŸöÚºyXo8íeëzL½H…²œNí™#}Ðõ+ø€f“µï¸+“4™iŠ„äAt€ÚH`Cr†ë½±xJȈÐÿFVžiñ‚)íüûäÖjÿ¾óÙ/O˜¯1oP'ÒT®4ïef³™Ÿhwè;ž.NYzsù¥àÞÉocà° ´‡½Q•ÉQ&»|[Gv‰bl-»álá—6€ŸdÆæv‹Á9‚˜<4«çMß®ažjWbþ›¯W2ÿ˸>½ýÉÞ)‡sÚGç=µÂŽO\Qᔞ§œ#©ÏîYÍ9Ä©?Éë0j×Ù9Éæ;‰æ gy~¼­ÇÉ`Eæ¶×Üœƒg2…™ôhš’ÉÔ §Î ì,é@fÓ^Ùhô( AMÞ>žŽFéÄüÀ>5‰‡GTåÎá_SQbà"’*úݽýéû§OoC/O×Ô”¸uQýß{i'\çùa5…”¦K5åˆc£ÏRµŒXA§*žlÌûè¸7]R$8–*»DLs²c×Ke—HsJ—Ë}Ž?› `WBéûʾœ#cˆSi.#7s™0¢ŠÁ`Æ1tíj¦æòÜÍ50Åù24¢Æ<û-û1¨IÁ¡íÇBÁí*•ù£x_,áâƒØòEg6¬çU7q×?y–t‚8¯#Ü-6T£AäÞ.R°ŽfñÒÃt&Ô6MÝx \þ8ÄK°IîÞVÜ0a&¿Ç¸Ï¿¤}Dãendstream endobj 813 0 obj 1229 endobj 825 0 obj <> stream xœÅ˜ëkUÀ?ÿ…€_*¸7÷ýÈ·Úú‚Z´,ØjìNš»3›™ÝÄ@†b‰"hĝТ-‚ˆOð?ðòÜ™{ïì$ëlš6H`gïã¼~眻[F$ÂöÏýï;[­ˆ”2ÿ¯?Ž^êuVîd$•<ê­wª $28Rä"ê;×Ç/ô6a±6ņ"­lè :×îÚ%„".…q¢;Éz’'i?±_ †°ÄÒ}E©ŽT*’È(¦…=’ÎRh«ºÑœ©rmß]ÎæWv)"šJukßÉÝb9¿X!Ã$eîîë¥:H3f¼:kÅ´ÜH@Iе“Æý©*8¾’½û… K/ì8)܉…¿§4["¥0ñ oMå:¾ð^"Æთš_ïƒÆ>vÖ:ˆâ‘b>m8>_yo÷+»˜…«~ø¬¸÷ðç“Õo’Éñ'øp{²0^up¥ÑÈpSw3)úùp2féjµ­™”#C¤Œº µaXÕ>„hcÅ ÛV‘TŒï¿Ñ¬ô¥à,Nt=ó¾õîx‘‰¹ÓnÌò"ËiÈÀн/âüþlœ¤¥ƒbLø -ƒ©!A•ðd¥*)îI g›á!ҬʸHjoH+ó”Í¥†%MÍÉsi2Xd!Hj–[ÈUÄ‚J]Â\z߸UÊ`‹ Ç•*3$ $—íNÂVìíöP /ÛH*‡<¥þކé}+í2EƒìéÂP‘–ßÙlTÉ5é±Ë £´h¦ŠRû³³áÀ'…FM7†…3‹iå¥Ižg9j‡EBJP˧¿.€%yôüä¸8úeµØþråヅљF…” O ø‹…:ÔN ‘”Ÿ!†I¡Ú‰¸†Êr3]Ö*œºcEP…òy¯’ÿ°Cꃶ +FEp+V êݬ´àµ+)‹XÍ›WcqB¼=oÓJªmáVó†C¤"!ëêZ®ý²7‡ŽãI™_¨ÃÁábüÜ"ÕLþ€Å^‹ ¡æïò¨QX©™W÷rãqO€˜€, ±ï~[„ØßîöÆKÐâ4âÉѲQ˜G‹«`kZÄ&Åéf$lµQ+ZKîs·Sj YêôP:”Ìé"# A ·r­EÑPÑ[¹b0!œáŠcâc2ÇešD ®æmkiWà~-Ÿ 8✶Q¥#JzQègÀ¯œ?éú[×Û².“P-˜¨P‡iñÿëg*œýì÷EÃßO–€ÆŒ@Lè§ #ÁÙyzF‡R[ƒ†±h$ßi5 •ûp¼zc¡zضÂs$íìhk! ÓþZO²ï™3 1¦FÜTº• L)m5.¥vÖ˜ƒ¢/ M8€nŽºÄTÏÄX¨7íLð&ÐA-êT½00z#Øøsûÿóàê·aÊ;zpup-)+®Œ³ÍhOK˜¡†#Ù~ṯ·á»¬ 5&É·]zQ‚M0ÖUr~¾‚ϵb§ÒRB‡:OF‰ƒCM&‡Œ€Z„YªÈ\j èŽa>‹‹‰Ë ØžµîU,‘æA÷lÝ)Eêü›V¦ƒ‘¦~¨äÉÖ,)¦Õ|…í8ì/ë¹  ÅT-Ç ZToq²íTÓ:<ãkê³YÅx?üTÑïÏrWø¡Ä{͆i•f«Ó›»£ášŸÇh(&ÅÐý¶‘g2ô©,í†ÅÊ›WLãtç !“Î%¥ñðn"äIœ'¡‹hoù8$K ŒÕ¿¼ÿîÑ_å¥ 7¡øúÑã“ÕµýÃ{›³ÁÞ·û ß{x{ã'@$ùèÊøxm ö (®‡ãõ´ªE¡h'yüø.BAšAn]^îEouìß¿hendstream endobj 826 0 obj 1456 endobj 829 0 obj <> stream xœÝZËräX]aæ#j7C„KsßvÝn:‚Æ6ÐC0€\%Û¢ëÕ’ªÙ²dEðü ¿DÞWêQRU¹ƒA8¢í¾u%åÍÎHFgÄýÄß‹õÅÇ‹3ê×Ò¯Åzöúöâëk­g*³š9»½¿Йe£t¦ÜCØÙíúâ«Ånÿ û ïîŸû}DÌæ°ÑÁõìvyñÕ﫸Yu7ëÌrÅ8<Àíyå¶ÈÌpnU\º«!åaÄÄÕ|ÑÄE ·k?ËÓFNTÚ¸|Š«ðL"Ós ·¤2­ qéçÍÒï“Q6®Qké%ü#¢åvf3«˜Îra3a8[ßû‹Y&”LW_÷EUlþaÌW$Šf4ÜÒ²î-)¸XªdaÓ+ð=|˜"ç¼:³$3ÍÁ‡~ý‡?}ÿé{·]p¯ÿ×?ê?þ­¸ÿwýƒõß÷ÕÝØ0´d¦¬Él 뛢^Tå®)·›ÙÉDf©R³9xËrâ{³]û“2·&X Tõ°_÷×çRÆšK·ÐV''nC¨h¦ˆ¶'oP_Æp šÖs¿D€:YðÉ{%³RÓ ¿Î¨â$=ºy,"L¤Ôißb[UE@g™bwû¥LZFÒcžwÑv"#ÏÉ7f&ÓÊ&³«|óPøÓ0pIËwûr)ŽÐ½ÏËU´”i’°ÒlãÓ[ã¿\çÏOˆ‘xýã—ÉNж—›´æ²2¬Õ1œs® ¤1ƒ`S‡"þªR´Û,x ye‰•)+óà~e5Þú9, jXŠr6†Î¹`!µ9…U¦U›i& `ž^=:þ¶Ü,½4É ±Ó‡O¯¢»ɨ¦ªJðnQ¡AJô¬¿w¹yð6 çss%XZ¼Ë½Ï)œ˜cºx¨¶ûx7'ÄÞ¦øÜE $LsܵDgKN1[î#Ø á5šæžÓCßnæ>°Ô Q˹ñîöÍ/7«ç«U^:Çù–±œ§är°LYL§ñp2`-­d  »§Â¹*òêUU„d6ŽOÚ~Ê@8”àŒž00zNÌÁzøê‰M†‹ò‹b9~xF¦”îsàÔaš®vª{f€i†ýPšÓÜn¾xØWmúPHL×’ƒBG8ü'¹á¦¼[Å ãv^|àÜnIÓÉžSº EgðÑ·!p­¡è•e•ÇPÆdvƒJt· „ÇR|½&ˆHZÚ×MÒŒQÚÕÉžV[Øž´„Ûð}ø€‹…É uŽr‰I+Õ6€šBKkÛ&iK#2bNµ…И~Ü–Å®yµ"ã‚§ ™—éÝ*ß“Q2ö JBýÙQ¿ôôÑ()PÝŸ¥µ4ü HT¢žÁ 9Á‹¶Œi‚E¥Í¤ ©æMúàßWÛÕ¶Zç»T÷ 2ÐoÊzŸ¯Æ\ÏUÆU µS H@·o"Ê, ëS½ß%h­ZkÇúz>`Yàݶ¡»Ë—cnZÆS0^­VfœÉÆER)®OK"%8ð6DOAÿ%ú§Þc’uO9ô—Ë}“}Tæô¦Ô¡rS4Xã¤vÁA‰Ù œ‹ˆ˜Hí'¦pÀšBaž×±3Ʀc-˺2v ¤uv\V¢6ú„.‚!´:§ ϶-úcSÁûx)Ô„­23$žíaòMU " Õ=],|^¼+ÿ.¼ÚWõ¶¥Ÿ+ÉÄoóúCáI$K°=Ê ´6/aN„NOð¼ëýØ4Ø”Žétz×”î”òÔ‰ø9nµÂŽˆˆh!fÐä£i?xÈu :3tf]þ5v¦¼+;£­¡ë´8Ö`ÙÜ6A©‡RŠÙ½Mó{öôY¡em_ ™.„Æ¥–L$g Hº†~†ñª7Àmg"¬µ¥£¢Úvôˆ¨‹«êd08€ð¼æ®ìùñl`@“c,r®Vån¾†RâÏíN‰&õ°ÁÚŽô(6˜6#Þ=l$ Œ±8 íBB[l%Vš."W ÐÌÀ àz~–åP ÆL?]%”uŒÎy:ÀзE†¥†õ‘áf„ŠG†ëänz"Œ´è¤_×íÜÌͧ{tç¾AŽÏÇlqCàsÆmºªig<1ê n;ÿÄÍ™Býþ&ö\T±ê d¼rlI÷n5ª•™›¡Hч™ËDÔœ§ô)ˆtût\½ÈwôÓŸ1§© #íó:UX3´*êýª ¢‚¤À”ãã÷†Ïõ:_~GåhPà†Ç1Ÿ€¸× »Ú‰¦Ï)Onÿðnß¼]çã 4ôå ¹ñíýØm­:2íûï^—ÍTcá² “öÞ5 Mô ·xî²ñ Ì"³îëØÚ¹”$Cáè$§ÁIG—¨µ§+„™9ú™3¥æ´’à{$šÅ2Å0~I[q,ç©=83†üýwï¿‚K€ñ€‘)GšWnè¿›¾ ©ÓÊ]F>W-u¶zr‡±éúofÀQªvÀZŸÞþ@55Øæ?†«…ÒCuWk#ÆZ™ÎÃÛJc†”;¸¾;íI‹Óž‰R O&çÎË&÷7Å‘¬òŠ;z“º^ŽÓö0/öç´N(¡YqéxØâÛš4#qBcï†o7åáÛ!†^©·û*¼fN|ã›â—ÌÆ¦½å§u³¿;î/ä‚ÿ{Áß}‡]uÆù‚š±™ü€s=&–åÑQ:ulƒ ÔQ‚€l:“•3ßäâ†5Âðë É׮ń{ÇQ®’üjâ'ž=á<ÑhgšÓïñ:ÃOÖŠvç­÷vJØ›¼Ÿý8 j™ÄHà5rgÌ zsáéùˆï ঞ~YÁƒèའã_*=k¤‘ˆ’zQÅfêwgLÁ®‹]5•$Yûj¹>rð í±ê¡ë Z¿(ž¢~䇖øþ÷¢pƒ W’P°Ä &íààl¾GàT#¡…¼3Ûpr¨é)6öÛXhD4žŒOcH²z0‡ wv µø ƒ‰ù> stream xœíYK$G¾|ä©FÚNçûÁm=Æ€d¬eg$V2¯žîœíZwWõVUïÎXaa-ÿ3_OÞ½<{ç±ãGœæZN.¯ÏâlâèÄ(XW“ËõÙÛLò¯_>cëÆŽk|p¹8{ûIgÂ8‘Z¹´ôØ_ûÚ—sßýI B5ÕéOŒ°¸¥1MœVu[ ðY+Û¹î¬&ØÎÓáb×rÊ ³\›Ét`ûƒ:ë]cCœÐ\¤³wˆÂew®š6|ÈÀINmZÍÛ´h`û¸öíY6TçÅÅË´ gR•Ï ×ÖÄʲáí"Ø)À"£Äœcà— ž?ôÁã»îv "'F8øÝ…ã‹w~ô“~tÓ™KAÓ.ÿ}óãÏüßvû—OúµæÅ?F#Ö‡W;KœtaÃ÷|3¯‹M[Tå7âgCVpIÓz2¿ ¦G‘1ÂO.¼m„dÁÕ6 À‘–çÕëªN(h«d6í–,1Š!ÖŠ›õlÓ­ C„å™j‹*|N‰±x’oÿ³9~eãg “:–³ut beÅáÃþ­Ò‡h ñ§nà w…Ó´Ì|÷ƒp˜#Œ£§á|A”ã4£t»IÀQ)Ðùé<-Z•×–>®I  Ï7ú¸(Ÿç9Zeö6Ëj»Š®rB![woqƪaŒœÒ.ß½*§Sa4ÑŒC”Yz/°,št-aMvÃ×uU“ã|ÕÂÞóõóßñõo^|þï¯~é_ùíŸÖ'«œñ7gìeº €g(ònPs¿i#Ö’ëðƒ«»8ÜFSV¡{iCÆ8…[ÅŸ‚ 8„$~¸Z…,à2‹e€æçÕªªÏ}BïN­A‘4»òáv‘ï)™na)GÀ|~~A©ÍDÞ¥PÂÎÞÖ‘û€ƒCý_G(S2ï¹múwº#gwK@…Ÿ´´¹kU5E[„rA¸µüî×9Ò¹‰WVcBoV³2É)s_ŽO!n@3ŠŸôF–ÓÒ?%—¸ÂeÞÊ“€Yx”àäãQ<Â;³@¾ Ÿ•²û,k«]€3Dî˜ÄýØÑ©T0…ùuHð 廑ÚÞaPèyíM°å ¨ŽUÁÓÚû2É»áS*`¨¾áW(ŠH•ÓÀ» QŽa¯1wø2çÑ(@rHW† é'ïçW×éþ!óEãös,y.ru%8B>/ÞJ… ìðþ›âƯ’¦Ò^8b€K/‡Ôp¨ÿ©fäP]e\F•;–W]¥tÞ°(þ&½^¶ob…1!S°­rakD>g Ûv‡ëu.Mï 7ð µö» Σ  X„äQg¢‰tŒå øzžxùf1ÛÛH Îéÿˆf?g”æ¬b¨£cá8@bå^5ñä±oŠOü÷!0a/# 7ÁFðåFÐKÍs˜ðKn»nÑì~ Š¢X¢¼,í2Y2‡/Éý§ã'¾®@ :s{dˆÕ‹ÐyµIÊDË`Ü1×rÙéZfM6ƒ{ê¾K<ª¼ Šùóå,AÇ{"öÝ öxIŽ5µèu…Œ£ ³õªÈX ÁòÁÇÅ>’H&ç°LgÒµfOsÖŸÝl¢zPœA€®o³ÐŽEx™”ž›\S4mêñ¦H.†Rjƒ2¤,?ÑÚÏZÿ­ÕífycUÆ58Ź€4¶#]w©mÆiƒÁ€ucV§@E÷pêP ‹×³æãô$AI-^i˾­~Õ\ p&¹PŠfÏDZQI½®ÊTmr‰uÆ¡ÊXJ ªÜ‹À…oß›5˵O§²™ YBDHÜYùuZG C’6é Œ›{T…OÙë¶&}ìXÌW¾iR¹ŠÍs»Œiôœå[s¥€ µ> stream xœ½YYO[W–úhõGÜÇT*'g_^*Y„” ¤í«c_'^À¾$áÇvù)³ÞÅÃ’šFH!<ßìÛñUE «¨ÿI¿'‹ÑÕèªb–MÕÁùèé~Ūó‹Qþèžÿ£ÄTÚ:âªóÅèÉéOçGÎT{¢:ŸŽžüòÇÛ?Ô_ž(€ª´ ä<áé©ãði®¥‡ ±ÒŒ&x@Üç?ÌáVø€ç_y’$Ú«és$9¥­M¤:22âD£ægOåŒPÊò™ ž¸ÇŒ"œªjăZ<üqùÇU‚”%¢ÖA¦ å4«¥M”oÁ£šEùBD_íO§'AeE(cEƒÙ2Àpâ¬Î›(Žfl×"=°l>†0 ¶)—8&@Ž8ŠX™5äQ›«|è5ûÍjYp¡ .ŃÐÏÁE"Ý\&•‚õÒXµw)q+Y©’‚bû bX–ÿåù×Ë)Z"µ¹^×›,PMg:cˆL'[£!ÖC£OæãeÂÒ’0ž(0,Ã;ÜÂú’Ô‡|ËŽogõMf$á¢$æ,J±Â¢¥ ”ªZwo¥ÓrãM¡”²¿Y›!žØP.ÓÖÂÍÁuÓ¬â4'²àpÝ);”Œ½ŽÁwD‹¢Ítöc½Îh•BÁ‡y¼ž~X­£mÒj³?QÌó¦Sá|è¶õädVŸÍg“ºˆÐb'@ì·§uòÆ â¨Ë )#ÛÖ'K“”ù$ªš6ÑbUÚ):®˜¤DURÏ„éò÷=“H8 ó8‰Æ“$ ª/‡ýÓlùþ¬Y­£ƒ)/ˆÇ+”¶$(¨Ø‹íÁxº?™Ô›ÔZ8¡¥2‡8šsTÎC×–¢èÇÛ‹MÍOøQ[ôpD†àpƶõ¢%1ŠçæÒ¬GQ"µÃpø¶WóU,½TÁÛ°®=ÛõzÓå+%+‘u cÿ³uÈx!ˆ‘¶4OÒ¾T¶eünžVI·:³zK«Á)°n´ý&õ,êi¼7ëaÔaî*¥ž8$‡^”yÜs€ØVñèt­ÜS‚¸qvËuG‹Ëy½¨ƒ=Úw“’>͸™%;d»p¢p[º¼ª—ï›E‡ÑS‡|¯ÇÍ$®¥Dë2”?¤ù-\Qì–å«0Ìÿ’bD¬¿IŽ`*¬é™¨Ò†øìÙ–;¸Ç«¶ƒcD‹­Àˆ#:„èL!–…¡´¢Áò»DX~«Á}©G4X}ƒÕn>œÏÂD’°iØr)(«àHàe“LØPí{ÃÖ,o‘ÛºŒw^#ºf¨áaà'(Œã}3^´wµ3­e=Ó`Œ'ë¼8ÀžFËØVÝÕ]íê>†¥i\¬U’CÞ)vŒQÃQ Oëy=ÞÔ9_©s»j>|zíÉé…Jh$V[¯ 7MÝ_¾Ë"«}}Z]ÁuHlxQü'|ò–×GáßA «˜áÄØøy[?(·3ÿ^œÄÄÑF"«ƒå·§ï¡ßÚ›WãM+¡|¹d°'Ý{%»%ád_q¼¬÷ëI“wEÖýj㿉eƒÄž®®—íC»‘vœAð‡íë°žÏ7Çg“u·¢{M/%ö2qÀ𾑠V–ï­šzý2¾2Â)«ÛÝõsÚñÑ4ÓÂå|Í·oŒ·}ïÔà.ȵ=ÁüC[¼¼À$ÿÇççÕ¯#ÿó/Võ²ƒendstream endobj 838 0 obj 1826 endobj 845 0 obj <> stream xœµZYsã¸~wåGèqSµæ7ðh[Þ£j'vl'ÎC^4Çà -j(j<Þ›ä¤â"ÉÒì¦\5®Ñ}|ÝàçYY Y©ìïåóÙç³Ï3dÖܯåóìòáì‡;…gªPs:{øp6 ™*g‚Á:›=<Ÿ}‡(ýóÿ`³T£Í R0 xX}÷½á‚r¦ìÒ]õ¡êªõ²Òb¤(yÉíŸP–BÌx¡‘L³$ 3gR«®$%Âì]Zá$ÞyŽ $1³óÑÞvv37‹Bމ•}aÔ)$!Ê©ó~ÛBJâRÚÕŲ·‹Øk?/ÜFRr·¸z±« ³dNŽ96/„(‘Ûøk¿2ûØÂY )…¾‡¬ÇrN„„ÿÑÙ9Vš73$WÝÅvY­5 E)³AaK„Ú%¦¾·ºÁÑÜ"/õÚ9’`=ØyŽ–‰wýg, ¡ü÷}W¿ßõÕv8*ñ3,f`\Ïl^9]Š—x¬+¸ŒRÇê *Ntýõ²ZtõúÉPšñŒb°8¡¼›PŠ¥˜R>Ö«þã *-:Z°Š5xÕÝr×,új^wÕ²¯Ûõ`]Z”ÊÙ ¡ÒpŨ(K$ý*Ø p&•^¡cû—¶¯?¼ ¾­X ÎñÄ,»*#Ij¤»êó®ÚFþ罃flòÍòYzM½¹|½úX7«nð1D%Hw¥eFº`™EIý5•‚'×Ô6m÷¼ØÀÕ¯Ÿªw‹í'ï2ÞY ×‹c--ýõ×zÛo§îFÈw³´¿Ì=“:XÌÒE.P–…5l@¥ã‡yî®Êü­¼yWœ$¹ }Þ4ÕW6Ä™ŽæÂ†EaÃHz¶õŸžv]ìÞŒFöܧœòÊùHLYF~¬H ¢ý¸”ùØÌ®âv<s4uD+UHÆPꕃË‚7ì»¶™·FŽ($FnýeØ‹$Ôlw"œ3{äR“l»O ‹¥ .¨|’³˜õ±Ô "·Jp¸°râße¾˜ŠÀ…{Ÿ¶GTbq¬Ãñ4¡¶Þ0á·Ýê]ëë$wgU ±Æµõ¼\¡¹`£QáA<Ÿ”¸éê§ÚXH•€_¼…NQå°‘Jš–ÔSô»íª/u»Û: ±wË?RÃÉ5n¦>ózÑU‹As£‡cž‹¨¢Y?¥ÁO'Fɉüqð€tŽs×>ßÎBÈ#Ë…+j²`ÖôWÍbk Ç, ÇUåÌI?§q"«”“j÷Ç«<±.®žçË€àOý¾1ñCK .]±"âøºTò¨ýÿïâïõv·hôº„uNk\?Aèån›ÅzH(Z NŽ÷Cîcþàå#@Zú Ûç&'À4§Áë8uí:k=Ýâ ß‹õõ³9ž‚tI}?ÆrÑ΂IbQÙCDdç´ˆíºmÛEHÌ x¶sU~ϲì"p&r N¤ ÎPÝ\˜;‡¶‡þ´r·#‰÷ÿ\dÓ¸/B‰½/¦oÔϤ‡ýŸ Ù¹­¿VKwŒ½å,X’¦ø€í¶[/…Êã¥L€Ù~)÷}ÛUAÈ G9VÈØX/A¤°_ÂóàF„àÇ‹à©S=^ÖýOC¢¥BÄâÚ6fQûm’€‚XE¾Y:FfZQ/¡ÄW]0”â~rG–æ©ÀÑF³<Å…¨šØÞ° ]»ÞÝf”.dš–mVéLçZ«!/C³‹ßª¶o-#À¤Ïžž`N™Ö¼Çù” ƒnÆO…úÛ®Ý,ž " Ž! uBô°Ô¾×xc×ÉÝ!†|UØÏ§|ïŒXË1çzÛj7_,þäÒĪ®«WÐÔ­Ì|eø;-°8!’'Íü£*tâí¶ÓHçReœKçî„Õý‹XÉKÏ51[ƒÿê#€§Dìä²îë÷›zi­ršNô¬«½ø¶Kç'œ{²LÛ„¡£ƒWâ;º›Õên7Lhu> œÈ='Êø /q¸<Ôó£€u^>yFÞè‰î­)ïqß§~‡Æ7î—]eÆLaŒgɵÛħ“I˜#¶[co¢óGxQʽkS”3JÎ9¹ÌXJ±¬ù²[f¥} Þ2Qò­ô÷¾•¢ìÔ{O  )ÈI2C{¬eLJNâ¾ÂÆá#SgÙËkëÉq·s yâX›døßc’ç0¦†àǺin6 h]îûz³i,þ¤2iö©Ë÷R¹Et™²´¤û¶©­Y„¤h.0ß0ùdLj¡ÛRÉfG§ìjoX_„ÞÒWä$ß>™‡%VpNüL¬–àÞüwUËÝ6ù¬„«hB;KOp¬€_Ö>ù£ÌsJí{b)ª•éøh%nv½×"|5“}';¤ÅõÃì¯gú眮8ýendstream endobj 846 0 obj 2512 endobj 852 0 obj <> stream xœµZKsǾ3ù8:UæzÞ#EšÉ’I¦ÌC.+`Im v!‰þ½ÉÿpÏìÌì`¶ BŽSª’ªÓÏéÇ׳ú4#÷'ü;8útôiF=-þ3˜½º9úáJ뙪¬æFÎnîŽ:³¬b”δÂÎn޾›ÿíæßpÞðüü±?GÄìZ#¸žÝ,޾û×&Vùa]Y®î̉;"+ùUô¡ë=#åaÄj=ïQƒøöºŽ9QñàâK ‚N"£žÆ‘T¥5¡"Þô NVDÙ@£ÖÒïá/,·3[YÅ”p– [ Ãi8zë™Y%”ŒÜWÍ]³iVs¯L‚ùŠD§hE‘–å")„XªhÒ:â¦3ë|þÇó!RJAôÂùõÊÛ@ ú:Òú³vÓÌû6üQ T†ß¤ý>D•*‚)FôQ9¦†TDêÙ1¥ÎöMÖýøµíúÎÿ LÅK®# 9O ©àƒBH”oRxy6È#‘kÌsäMs×ß8:Ó•¶éž×WíýGO– 0‘}îj q#loˆF”cÜÿcæ&³T¨ˆK0_3¥P¥Ji#öü°”Ï,G®Ãèò:0¹›&«iÝz€UË!6nWãh”ÉÙƒ³ “<Ôõø± zôø€–•±dÖÝvÓ ¹FL%(2)ˆ·áG†Ám9âì¸8ýûº]…>»Ã(EFÈJ¾/4 b'f¾iWMP kšˆÒúþ™JǹâÓë2bÂøn³h6©êJÕ³Ëd D•û~Y¯šÔ"=ˆØZ¶/g¯ûöñ1DìÅ.–±m?„!ÃŒ‰ê¿´«…Ÿu°8)ØÂ#y€€í¥á±Y P¹âzá’°®e²5VO|ºi3‡ V»F–)|s]L‰ñÉÇÄê;õJZq–]˜ñŒW&$åÙF£Ë¨î–2àO•B»î¼4ûöˆÖÅ ñ©ÛlÉ£LbKç(U$ÉÃtÁxÌŸg7?åUtŒ%Ýüð}5˜Q”ÊÆH%t°¹?­ûöîi¸F•-vÏEÎdžuZùÕjʧëy=$ªá•°£ƒÜ ÃzÃæ(Ë &&1Ә̡]föm kù ÁDޏWÇr9l´®VÒVýÙ“*+Ç­ºÙôÍ Ð2A›Ž.‡Õ  8'EÖ% D%Åd•sóv¾lƥŽNý£æk_™îI§dòƒÿ<€f¼!²+À@­.›Ò3ú†SáZŸ>(ÄÐ¥Çþ°Fß6Ÿ¶íç1,ÈlsÄ‚ièšÌ=á¦m7h@TÀœ¡ XLÌYåI¸×š1h«aÚ@˜MÚ†8BJBcšiÙŠAʘ S\®œ·Çê…O’p½î’»grzÐ]Àb…¶e—é±ZHel cµ8”Œ¥…™ší9Œ!ÅÊØ$€_óp쌮Ù\HœI¨#îWçøåß³¹{ò‡!¬ò¨Þq¤÷&`­f»+sVÆp*¬ª u™Â×ëMûÛ:Þ•V&=VÔËåÓɇmß·«ûAø›¦›RHÍ+ýBŒHá]úïA1€å\ o—óõª_÷uߤ„O•RM-jÆA) ¿<5_%îÞ@ Ñy`!þƤ‰y€ U|p*Þ·_êÇ DiÀ‰ Ey%FUR%Ò!~¨©ï2%ã³óºkÝv QqšÖÆA1dIo€(.Ÿcœâ_",>a¢‚/A-s¯Í©=GµŒ$Kñ·ÐúPß7î5oÜ:v°½Ÿ÷'/ž÷¬îëÄfãí=²Y†¨¬A”B&«ÁÊÙdåÌ1cÇØ¸§“ô5“c³›3L­DŠ;-SÝ©½nË–…¨Ì¡U=ÌÔÆš±Ð¡å.0å3Øåj¾Ü.šËÕ]³i×›ô>•Š_+DælÙ:‰¾ê¸ÿL˜®6lY¬²&}òîö›4‘Tþ~\"PªB©hʉÜ?¤jðÑÙöðwŠ…D¿ hl“ù³C¡ ÅŒ ”T“LïÚ°ìû]tøÐ#ë¡¥Ÿ"•á,%tïÐÚø„¨iŹ@D)UHwºÝtëÍ?š§±Ù¤/ Ù‹P‰õ.»á³ óÒ‚^1£0¥à¼A„©²:`y¬;VpÌŠr*toÛn~ð–àVâ–UiB¢Èµ.½AŽ,Ú¿6)BR/½ùä¢tÙŽ»÷ç™CãƒOÆäˆÓ?Wqü"\ÿÿWˀ뉭HZMö~ÿñföó‘ûó;$†Cendstream endobj 853 0 obj 2400 endobj 858 0 obj <> stream xœÅZKsǾӾ犣]%Žçý8Š–9š¤¤rYKr#pa ’ʶçO¤ç¹»ƒŠ¥r±Š,fº{úñõcði‚™`ûþÎn>|š·ÿÌn&Gç?œ:1ÈH*ùäüòÀ ƒ'JÀº˜œß|G¸üþü_°Y›ÑfC‘Vœ_|÷»…PÄ¥0aé´¾¬—u;«íG‚!,± DîÚ)…IÜøº»pûè"j‰CžÁ/î%ä) ÿñÉ!5–¶pG~^½mínŠåé·M}ç¨ÄX¢ú0wr‘P4òÄô™#@ÆD§Uf‰ˆ99$ÄJBÏw>HB°Ü`@í¥ö¡ÿÃsð0¸[ôOkÁ ቉„ËXû­¤‹sJÅ?³{ÿ¶hÚ£úÖž`i£bë¹— ÔV{ÌVæaQSi b01¾´¥}Ütµ·.×+/C ´v2 t“ÁébÝz·4«vÓÚªA>‘TÃu­^~ߥC,‘ Äíý{ýù¦úõÍ¢k.?{ID”L[²&ão1ã{y‚g]ÕÕÇÕ꣣iïO£‡Þ+…WcLÇÃ'ËzµòÆ€ºxX*‹«j ŸÞϱ 'yA8{ÙÉÓz^W«:‰GùSÅ£›â&#ST{pÑèMû—n 0µÀâö¾®«OÖUì ‡T u\ª{Gá•1&„(¸ì6ï!ÅÕ"n°—0$Œ‘ªö•ù}Ó^,HX‡" ï’‚©DR—<€å /»­"Ò‘ªpu©{*ŠE'7‰Ìô2JGd‰Žøc&MÓÖ/káÕê:Á‹&)¢ˆâÃVt“Ë´~3â!žÆÃxœ-æÍEb Äí] æcXy½ð‰q“Ô=óžIÂDOù˜<‚($’"·FqÙ·'Ò F†òˆkw¾T0Ø$Э—¯š«ëzJ‰XòYBбCLy(¯ÏŽ~j–‘‰Y’•òXÃL·¥èÖjGJgŠ!êÐå?;ˆ 0Ònïqõ1”28¡r}Z‡‚ŒÛR#Ež.EŒéý€gˆq<ÊtRÉ@°)¹Œ`b`dºÁã´þ´ŽæOÂ:ZV”÷‹9CÏ9»´ëXÀ†¾œ…¢,³«#8:®î„Œ½š^žÍ–uݦœ“¸²‘̽Ž!•VW!#jPhtlQ‚³=n%s›5íñ"F09/ƒìcr1“JÔ ÒǹFJʧÆyVÄyÒ¯ÃóÁ{²?'ÿxНeO³gó­o 4Ôœ¥Ú¶GOž QÊaÛ¢¾(2#½p8´E;€5‡8_R—mQ—ðÎ*âã<·ð¨ˆ¯›[ø„HŸYþ»#³ØÝTúvñM}UuÍm¨“¨õIÌʽøÐ›ùÊ-£*ü5)EJǬ1J6cݼYü¸˜/–]ž’ƒ »˜‚âåy;-‡ e{³^{_81"y%罨»ª™÷áÂv°ŽÆ‹’{‚ú} Rµ?QjJDÁÝ>$UpòTUðMC“ŸÛËzÙ u¾Kй0ò544‘*¢ÉExž€–Üdu©¢ @ûvŒTõWyêEòb7ãó®YvëjÙõ3±/žo–Ë#|º}êÕæ¤BPœ„²ÊÝh‹r^D°BÔ<ÂÉEQ›àzê<ˆr(0H*Ódip EáAt#ÏXYÞ¶WÃÛÁ»]â’¹ !O¶g¼Í8àÞ_7óÚbˆ»‘&À)•[µ´*pZœ:×=Ô–÷âÀèíª¾\ûË@Û ù,SŶëÒÝ9šnô2ïšUT¢K(ÑVl˜eòSëùüUÕ^̃Ûr*¥47€*ö›Ð ¿¡v]änç–Ž“Ù÷](?´Jú׸é7«ºKLǵÔ>ê, Lõ£``}™Ý„BÏV'm•gx€š™7N“hŸ\D¯=žÅÈtÝå×H_^#¢sD—émˆf©ð×ËyèŠíÜ—@úb{ø¢s™îÚzi}ühÝu‹vüÜ™=ð`æMK%fÿÛÇ´PuA…é«|IûªžªeQ"‘‚ ô6O£è}S@Øv<û–.»Ø!áâÈfð€U6í=ñ•¢4µ ÏWÞ€èÄ$Åo@éT‡Ñ"FÐÁèÌd9ìä¨ZÕgÍ¿ûÊ(¨{PËSýIs_÷QŸ^”I?¦4©“y5«o¼M ü`8u)]Ä`ƒû—ž¾5¢8ÃUGiÚ-À×n¼Â¬ˆ¼pÖ®nJ1mÏC'cúo•,¼î¡[¤´DÉ䔎«û‘>µÜ_ŸZçÄšvLŒ<‚-xÖ8¶år?³|å?h¤gƒ.E1†b£8|i kÙÍ8±€È—ªÀ!C{‡Ë•†nÅiƒ`JME8ð=üËóÉ/öçÿ$hendstream endobj 859 0 obj 2339 endobj 868 0 obj <> stream xœ­ZIsÛ8¾ûWðØS£±/GÇɤSw<’“Ì¡/ŒL'œÈ’CQéÎüæÙ~Â<AÐÚ)W%Uøöå{üZaD*lÿ†ÿg_/¾VÄ…ÿfÕó»‹Ÿ'JUÅ´¨î.ü¤2QB*%7ÕÝãÅO³¿Üýîk–Þ¿t÷0¯.á¢Ñœ©êîþâ§ßºá²L/+d˜¤ Ø;WöŠ@š1#‡£«Þ=HÂëá´žõáòþì—:\dX†‹÷¿§À‹À§±G)… ŽÞô÷îž@XšáŒCžÁ?|ÜTI%·’sƒ¸fd¸úw÷0E\Šðô¤yhºf1s̈/qPŠ âIš’$`b!ƒD„+{é’c°#ˆ~IÕA¸o½ܨÁ²] Bõï›îC»¸_Ú_8cÓá‡ßÝ]b¢á.óüˆ~LW—„XÑèN~óïÓÏõ“ýq¤ãyã½ ‘–Á:ÜŒ”¥ô”ÁÇžòíà5*EpårÕöíÒ«c¥Ž´ %Ïì)%c¢ã)õô•@D“LòÎúáù¼^|iŸI§ öÞ½ ‡›ÏNšUûÏæõbæcƒƒø'ˆTEY> ðH§é|(Ã=ãûûUçYrˆRÂÆÄŒ$˜QŸL;Ä*Ó1L–Þ 1^à&øÙšùëÏõâSsS¯¾D±"ˆÄµ„žÏb9_v©œt úl‡\¯»Õ²‹ä%-™H-ÿ‹®7™ iþÛ¢hbÖÕç>w‰FÌ”üDòªp¼ugË8ÖÅpD‰ û'©@R”ŒÀÏçÿz¨&+î›OÍÐ3(’ª¤1Í«ÕñoÛ?Ò ‰%yC!v¶B·Ã™b$”²rðGá²Ió’w¼“fÖCò Acu¤%ñù™7Ô¡Ú„‹¯žo¤#,ó}ƒëùõqÚw¡S¸ŠU*¿çûí}8Ã8ø£ž¯› þÑqò¾]­ëù†¥ò¾Õí'Ñc€êôFy¢ Ý«Èðü´úpó‹sXǘîW¾šH$u©<ÿ ~¸y=[.¦Vc)ñÀç×è7–þ ™Pˆb²¡˜6H°³¤LÍÓÞ9„B0áXfËù¤ùÖ®¬b׈üž 0v”éÈk³•M;˜øððGc—lº‘«D"j–0ˆu6j±jÖ÷K—êÞZ¢+°!º .1…CÊJ‡¼t(FmEîG뛈cg<Œ)ÎÁèôv°Ò"š0ÌÐýÀ¯p.J Iœ€²,‡ _ùVÏ¡- æ·6œŒç»OŒtœ‰öjóó €0¡„ñÑŽv•…æ¢b#é¦Á¹›ùL¦G\1ªm°¸»“º]5o|áÌ)d¨á\Ò¬úPM´R—$ð;ël¶]y+kD¢A)Y¹”2 ×¼kNšßº@ÞþCU%þR™Ã&ÍS ¢³°–‰µì×eß>8…ب[ÑA¢tÊÄh¼%¬j&Í}keŽÐY„C̈RŠ@q‰’2ͯëà-mÙØGo‡è)š³ù6ÐQ˜š˜@ýu(F€Cy¹ƒ¨ŠÛ!“ô!¹;ʴ2æÊò×åÂS·!/ YÐR$SuŽŸOaðW4Wˆ{“õÍ4¥Ž•k;Bþ”\»6“à%eHwéäUÐÞèXùÈ‹e6/:œ¨æ¯žÛ³—wÕß µ¶xˆŠb¨M žçŠTQAŒ¨ºæâaç&¬\Ël7âÆÑCš²-h×oß¼Œ,A›ÇN@[€ÔLÙÝ\Ý?C‰=¬T¶hZ¶hòûífmFŒb?ÒfÄV4èCV‰/ýTh`¤–;@å6‡!òÞ½ÂIkä¼Å”Œþ81%Ï 1[k(h<®ðÚZ䥫ýôÙ…?FŒ˜ íБT‘àŃÍGGùíC¤J¢,%–L A^–ƒá…5oHØò+ø!f­‡üvI)7Þðà¶{ÎÈÿ>ìRB3wZ?6ÃR`, ݾ¥³vÅØö,”žÖ¥{ W92BÆ•Ys³ P7šò>ŽÂ$¬~¿È'­*I8ÐgßtÖ5ͳƒ.ÅG]b×]ÍúÖýÀh—DÍ›Z‹89ŽÝ–Gf¸[3É’@³o†µ†ANeÊÏàG˜ ìïFBÒd`|ÚÌýc×ó&lü!3UœÒKÿ0ÔÀFïà3‚1iH‰‘8ÀH%pŒí`”£§XORiäÓñæÔ6mºoaü0ãøáG6nÇ÷¹!ÃãBrܦ›ÊªPxò@-‹„®çõÊÍBΔ’7ùÆ~ú¹}è_„¥(Ó{" ©ˆh!èD’ÞùÞQ —(·* í,‹°[­ŸŒ”gÖ_®ûÏ/ëU? i0Ó¸“Û9¥Ihj\0+ÊÈ’¨Ël¥ÇEÍâ[†½ó¢"ä$#Ïü­ãùÁù•o,¢MNK3l§$J˜Ž/…δ 6y|š·}%wГ0‹‡I‹l£5íëY@Ë86Ä/CÓ0H²8l ]ÃÒŽk%à\Œ/=Í›PHEÙkâÅÝ3> stream xœ½[[SÉ~'û#ô¸©Zzû~y”{©2˜Y;©¼È0%Bx%±¶öæät÷ôefޱV¥¨²ËMϹõ¹|çtû· %lBýOû÷ÍÃÁo¿MXXKݶHVbαŸà%ïÈ¡0þ%'‡ÜyÚ*|òë|ý4[¼Z<5g³õE f-E«ýÒa»vȘ§Ç«/³õ: , c¬ýŽ‹ŸZ-À‰—…˜`‘X®¢vòu¾Þ¬³*™Oˆò%,"r¼Y5Ͳ£‚Pˆ°ˆ||zœ¿2a ‹ÈW—Ím×f]£ý<ï»§ØñÞ5al?ÑÒâá줪ÐÑÜ è÷¾÷{áCêTr‚f½y³šùun‰–6™ÿ÷yt7F4åíÚ·°B%Qi£<œg„Rfój«¹Q 9ëjþþÞ[ùóçà÷yŒ§ÏšàŽR'sh …x£åºEtUe iÿlÞßÏ7ÍÅük³(^™ã•§v—¼ÒFbóÛÍ}¦#“Ú t´-tt_¨ùòv¾¼»|Z4‰u‰šÁ¤²´PcvHí±=tH'ɾ”X¤Ž@´·ëνäÊÙC¢ê±ÝÜÏ—ÅIoÃTÆèÙôÌÿêäzò7pô9ø(¥%%@ƦN®Ô‹Usðé…Åü‘øèz – asôvzu-#\dU[gè€Ób×7@%yZðýJ-8ÐR­Ô§'ç×…ŸâlüD©Ö~gÓö—©êýrz~"]+]Zvó§qsj>bNNÙ^ÍÉ”ú`Îwoß]žM/ G#øþ8M׎ïOÏßyvl*]ÊÂïƒ+*N “&ÛN+Ù~êè[‰ÚýZ‰ZµV:;›žÇbÀ‚çÚ±åÈÍØ‘Û^•ï+#A¬}*ô€iŒ{pÞë÷¥è1;"5ï×¼¾ÐVîWh DxħGïÎ 7*÷ÆMr¢uÕÜΧg!¾­"šg»å°Ýèa‹»ÀÍû´›á„ƒÿÔš·å#™jLNÇ4Ñt¿šhJbÖ8÷Yêm•öݹiP‰ºŠ[í+£tŨ…P„Æ+´(ÍöRìηW»IK„ŽèøêôŸ'Uä(½?nÂB䨷’\(ĎʾÅn¹ TŒe¡÷k#¨?’Æx¿¾œž_uq…oG÷ÆÊ ‚¾²fù:v®PJx*&ï.CÎþ># Æäö–  ¡„°Ž†ÿïHÃ$´ØÎ…½¦7›ùï¡S¢]î&g›æêÆ÷‹W³¶Ñ&÷Õa?à#¥mnmBGÊ–לDR‹SõRÝk—?Loo»m‰(ý"ÖTí„’Ý2úaºXÄ@£sËzsô¸x ²: wÙ+±v¥-ƒ½E¬Uh³Ao±RU¹¾ªÏˆwÔ,ë¶è@Éß#£ÌÇÁÑÎN–¸£š½@È‹ÅlÙ)µƒƒ²û²¤ÂDGiÖ¢÷±m¢ŸÏšÛÚ íÿɸî»èê&‚/è1L‚+È›IL ǪVÝöò´y¼lÂdBB¿bm’Ì6ïþeÜ­*¾ÄÀŸ£µÌ´$Jlø%ÛR(KÜî óÒX–€T•˜/N?´MS>]åŠ.LA7%›X\@#÷ƒ7’€Ffœvqyz6 ù_Rby.‘ÿR·Îe‚1$Xæ+µvƒþi Þ MÚiÞ¢©«ï¡y¨Móè7ªËqŽËZÝdFÝÕ¼ÑòÔžaÒA"ôÞ൸¾<=äƒ#ÒUß„·€j¤©žÔbOx,I ¸Lýl·D†®\¨2÷)Í6—¼—µ^AuŠáãTKá=’¢9ëW—€ÂuBŠÁ£ûÙò®ysÛGl'Ì´F#îopAXq¡w$û ©R&ûç@’ÇÒÚf³š|ÚÄ‚(äóœÐSESÞ»óðÃ3ŒÊ±Q.ï;*ûêj³zŠ×)É´Ê· +š"fÔ˜Á5V›4–o4†ýtU ioä‰)2_Ý<-<}ú@($q–ƒíKžðBŠpÙ¿„ð³M•ümÖÚˆ° U(5ní?'äq\D²2œU"Q9®¿Wt¾ƒ“ÿ9Ñÿj¾xÑŽ‰Y2;´hf«éª™Åj HóQ‰æÛ:ÔÓæäµ…iŽtåËÍ‘4åÄ Ã^.Eǽµxƒr€ˆ—°ª²Vg—F‹<šTFPmÑâ¨Ó—s„&ÇòÜ”>p瘂Æ5_pÔÐI¸>Új±åwO«’½ ·Âõ™*å‡ÑúQæ]tv[u} …Jd7éyVŒ6Л«fÑ@7Þ~hHæŠì0ÛŽ=êĸû?~Ê÷-¡e°œ¯±P77XÃfÑ©¢@Ë[»`Tà&³ÏÓåm§ˆc•oVM|îæGÅ×”9ÏÔýšÛ!c¡Â„Ö¸5–TDqÚoî µeoÔpÍ"ûœ®e“B§@Ë  åÝ_­ËC¿CtØ4¯æ0kQiâd¾\=>Ï6ÑK©9ázrv}µ\vR«ÆKà5ÃÁg“Ê UÛ~¼M˜`!‰”ùiA©°­I'²9zZ­cÆfÜ^``Ýÿî÷Ó ûFÐf©£0ÕƒNò™z>¶+ÇÅ·Ï÷•¾ ‹ŒZ±²f쎳9·ãŸ>Ìîâí¿òo{r4`eÍË•»˜MîäõÊ“‡ùŽC«©¬oÿwHßžUó³—Xµ.>/Ó:†°r® áÞ9=7¡1ä1Ž)µ°k·¾$ù ²Jí˃|Wó‡Ï‹R®AÛ)ÖÚ©æhvÁŸoÔaÞl¦ AC û¶µ €ÁxÉyªÂÄ3˜xÁÑê^ö=é¸ùaÙT#ý{>Ä7Š Ô:LÒ80‡á1pU,br’ód À#1íÇòœ&¾‚5[î«G8ªŸÖŽ›õf¬ ï(MÄ¿µ Už =ÛÑ9î=—!gë•íÈ6®Ä™®—Aã*·]=1¤³(LÛGf‚h“Ÿ*~I#^ÈàRçCs²nõâj;ñu¦ž«Ò8õ~,àÔC2¾Ú¬æË»ÄD¸ÌDbLªzÃÅK™Ä¡“Ïü2_Jä9äÅ·óe.!ŠeàUps¼[ óV¢¯Énµpòq k‘>¶OÇ8q¥6Å0ä~–¹UÏñUà;¹­ ;Ž±Û‰Û%ô1³å]û’Ï›ŠL sœª–s·“ïgëâœãa0»ÑUs÷Ð#I…—Ÿ·Fú2_Pv<`ÍqòØ’eI3[Ã<û ý*¬P{ëþˆ'vÝ:ÒIãæk뚺žÓ`XFºÂn0z»VϰÌcÆ.5OB÷ í/×Ëñ”ÑÒå ØÖ??…Ob)…8–Â`ãehË=Æëùb‘*Cçš[b•]UWz¶ßÑ·¤Ú(°¡»Ð*r),{™ÊwU?4<ƒ=üKZÛ™ÇÅ·»4©S:”kRKaC³š«è—$ϵ›Eü{àrIŠÚ©‚"ƒï\Š £hЬŸ—^/žÖÕÃç$šÂ¢WUÑ뢵¾ÎdÆhgY†úÒ?Ç(÷À؇Â,¤1Œ8>éOg[Mú+šø¤¿žðõÜ_Çz‚7 ˜1V7ÝÇ(9õÖÇ(~*!Ežž`€¥zŒÂXÿx‡‚€Ý‘„ ÙUÐ,ǘ¢}”½’/h¿¦?#KpeÑwÙψÒg®»¿è‹ÀÎë‘~UÚ"uij o¬R×MM•Èw"W- ü£Ð`ŠKþ-÷°©Bc£öø"”ì#u\ªvŽ#¼ŸòçŽÉ` MÀv´r5écX+žcê°ã± žØi©ßýÚ:6y¬0[<µ‘ÿ§— E.Ü„ûŸÿH&.endstream endobj 878 0 obj 3130 endobj 883 0 obj <> stream xœ­ZYoÉ~ׯàã°&}–½>kW+ pò2&ÇÖÄÉ%‡±_Ÿêž¾8,rf­@€´zªªëüªºÿœ‘ŠÎˆû OW^ý9£~-þY<Ín®þ~¯õLUVs#gŸ¯úè̲ŠQ:Ó h;{xºúeñ·‡Ã~ÃËý×~³kØhàzö°¼úå_»°Y•›ue¹b¸=/ÝYέ KŸöÿòŠ0bÂj½è¢òýÚ»:näDÅËoaxù4nIUZ*ÂÒ‡né÷ÉŠ(Ö¨µôüAr;³•UL '¹°•0œ†­ÿô³J(¿¾o>7»f½ðÌ$ˆ¯H<­hOÒ²’$K%%»Mׂ€AôkfÝdæ§½~#¿·MçõÇœL¬Û<ýV?5½fx¥HT—%/‚b@¯‘§õr]S,9XR'»Àòuó¹>¬zkR™¤y†Ò7Ø¢ÍLÁž)xÀ¦oü9)³°ºY{Â|Oǵî.¬q¥¢êëî±×©¤ºP"K Ù”c¿m6OM·ûÑ›]V–ÅsSB_ñ¡y•¡«±– ï)|ß/6ëyûßfß+¼ZÄCPÊ1´`{§ðxª¿‡XL‘h²í„‰äE JÍ<•ˆ5—x®·‡Þ¬x’W›>#@€h–‡þð6²ÈR*D©³Y!sM8ú]û½YõyTË#!ƒQ7¦pšIÆ»áI¥‰J}{ój³Úìžêí>†¨NéalYÁ–L:Ô|±kšõ¼öª•tºèÿù¯ðÊJ• Úøtiu%(M©B`Q+“ÄÚ)6ž7«fѵ›õïßÖ=§e#£4–alxf3É{ç‡OǬéó˜Û)l¼m¡˜”å›ïÝÝn³uÿà dÐNÒqŸ/(M%íGp~Áe$`)"0ª%J%û6ƒüì)võzß6>»B΄êŸ*‹W[InI$±Ù½kýV&*®EÚê–À‚ZÛ,q™úØ”¬ÿ±]/}>¢2BGm~{ÙçŠ[sD×íÚO‡®O“JUŠgUýd~&zR°òf³[6»í2ÔHÄ0„eæ9|^=¶«å®·—gb%ÆD<ë0¯›m>EOwBJ8Çà. 9eD¤^ÇCð8U:–ØH •B>瘈›}ë2X_€2”­|–vïý"µ•¶$.núŒAÛqÔ zl9ÇÒAŠlOœÁ¤½}µª÷œè†  J ¦ù=péHj8Cª¤Ým½Ù‹RWÛµ?˜FäÂzÄWLÓÜm,ÔI‡”@õJÖøÖç€ö½PªŠ$§¦òyzª×ˤC™µ¥PêÂñ̤¨» YZ /bfìü ¬+,i7PGyšÌs¢ÙrMÈà\f¤x¥s1I ”©µ)F'¡ 匽 Š2wšÙ#E)ÍZNá -+ŒæÜ±rÁøºchÂŽøj˜Fþ¾CÇËøÈ¡ˆT4ÄP. }5Ї±ÅÜÛ;Ôüûõ¾«W«X½g@ÉâQL"EÅÐ äŸ`÷ëðúQ™Íný2@KYÑ/÷‰U&c®Ñ^YLû¡Ý‡.šv™ÒÚ¥îcæµ"îSCU2Úô/1üØvïן7‘qnòƃ1†l–ÇÍŒUò]†9S™ðpÚðaS/ßìl¤¸Øç÷¾lHêè)v^(Ð-üþ84»oBWŠ_Ô¢EårSÎ3¨ò.KâF5Óœcuê@7_[¯Ü>HLLÃ$¬ƒa$•Ãáƒ9 æõ—žÔ±È@–j6º‰– *•B¯Á Úíá o(›\WDïµn”cræ'h=(z²Øo'ëÝÖÛûºÝ7aˆ'@ú4!hy!EyQC 9è#=P‚ÌoÒpç[<“•ʘ³¯ýš™«Ú8Û¡ËßàBBç*-µ¤uÅ,Ï”P-Mà:4áí&|ÁIj=±ÉÀ}³‡Ê”$TàoòýÞæ–lîP¼B ìÀ†ßTY²7¹qJjAzo•–rLŠ5tv!Ì ñïðEžw°“aRì  âþz·orÄBJF‚s˜NïÅü¹P‰ëL}ÅFXy>šiˆaüÛ<û‚¼M®Ÿ}ãZŸWoš}÷ê°Ûoòè'M©9–ÃD¡¦é,R+ã˜qÐ YzPÌå|5Πk·ÛUæ‘ö³Eyˆ 3ÈÄå¡-XØ©øx—æ9dÇtsÎìãýÒ['àðLŸ¤Va0>HÍEš³J䀻€ DÅR WØP­Dj¢?ÿ£ùA«fE«k‹ØÐz´ó´îB*ã$©jÓ†4®éR¥ sSBÀU3öµh½$E½œèy1¥š$»&´ ¼Ò&×T¼/Xª¡«øúœë›­”L_Ƽ- ɽó8 Ðû¦^Þ´˜åM ‡AÓœÃ*4[f{åzd"Å…så"o9‚&Á¬ÒŸ£rxC¾o¶q’Ђ™t•g3àÖŠò£’=+ +E‡•e‚gÃ^ Š÷ñM€²«ù¥ëÏklÅ„ŽNRÜ Ì•‘žÌ臠WÂjQž Q4÷êç@zâ¢Ë¥Ã’œ»~$Ä•»±Ž¾–ØÂöÄ !ˆsBtuÌ*D¶¿ñ—_}²´þÞ5àîòÚ%Í丽óf½L×,¿mºösC)teÓ øè!-r̲ù^”œŒRçM÷r·è›¤•0i° èÅT:¥[=j†³a uLRF:_¿ì6‡8 cU„”ÄäÐã€Ø«U»½­÷_šIYUk䘺D3È1¹ßwí—‘ý¶D¯øÿRHW¯¿¬Â-(›‘늵BìsFð Gø0*œPÑ¡:û"…éád ¾®÷ᙊ‰‡(䵘G—Q̆°…\¾º?ù<õ]ƒ¦H¿§ñá©Í}´¹.: >~úî¦.5§%)EO¶¸¸YfjËΣ7Ùb˜;óDÊ^8€Vr›£žòÙÃ!œb×A)¡‚ÅÃ)$-a´ëEºKq”(F+ß#e~»«·íbÿëw¿ /¶: ð6ûîwR‡Õ©7)Õ†åw2žNïêõr0—sù·K¡›V¢ »*\þ”íñ+7ÍÈצã<0‚éy…ù›ôfêüó Pž!¹aÑ,GÛL6œxƒ(Úuãç®Â½1ÐQ’£[@?íÕ©‘(C\ënU¯›”î2Zù)–Ñâý¼«.yÆxþ~^éŠg—¿ŸO9nô~žb~Ð?1è/Êvò`DV:¡8†™‰éSõ•9zX̦wgA!ÀQnS¸ž…c©þdJ?GŸˆ€ÊŠÞŠa¬8Š“PÉó؇L€®îšäG¹¦ý¡Aü¨œ x_£È‡‰†0eØ#UšþŸ›2¦á˜4Éä=Ö²Òµáš"¯s$¯§Ù‚¯> ùÊ{ày|¢¡ñLó‚ÿßÛˆ¿¢½)_C`’Ìh,ÍzMÑŠ¨á,d^ÜC$,µ5£OH$«¤Mc‹Â˜3óX´Q.n«–¯ÏÉP²{â)Ój“]üj9Ò¥4‘|UbýŸé®ýF$P£ó%Óe¹®]öÃW0Q>îÚV‰DÒYùüÃïdî .{¶r,R‚.3Ïjp"äÿ´É\—EÈh•_­\Ñÿú0ûãÊýü©ü‰]endstream endobj 884 0 obj 2819 endobj 887 0 obj <> stream xœ­XÛŽG}·òóH$Üôýò+HYDÀ«eQ^Œ=ÀDö8Œ-ðÛɤ¦¯ãqïFÈÒZ[>Uuªº?W”°ŠŸø½ÚÎ>Ï>WÌËÒ×j[=Y̽v¼rÄi®eµø0 XåheÈUµØÎ0E]ü‹­;Xì8±FÁ†Åzöàí°„q"µrQôºþPwu»ª‡Ÿ” TSb„•ÆTš8#¬T ðY+;¸î¬Ư]Eãb¼rÎ ³\›j~°öÏ..Öãņ8¡¹ˆ¶{wˆÂ%wÞï{¿‘“œÚ(]®ú(4 >Èž/ÓBAu®o£lR•ìøckb eiáïýÚ¯S€EB‰9ÇÂÒ…ñ„ħ¦õÁ±€©“®Ø.V àØY"¸|PJ(K5p»€ª‚ºie¸ÖívÙ®3F#44Š‘9‡¨Gì¬%é—÷/¶Ë¡à´ô5öY,ÊÖf`™S]ßÚUÖ£’…%†é1˜žn×6ûàÕ°¦hmTSžZÄNoO­¿öO¿ö¡Ó7êâ¡0ÜПt* ‰õV Uqƒº‰ÿ÷s#´ @BÝÕ&›v;Üæ‹¾ÞEšˆœr þ”3O+ŠŽÂøÂóÄ(-â¨tE¿à“tÇõ_7ëþSVŸç4­0ô(ïä½×>vŸÝU?ŸÖ b [¶ûͲJñÝDàjÓo»nÝ´ð[dBK`eQ£jJÌWíºþ¥­/¾tûHPg4›âMzœ§¹\®Ú¦Ý÷ËÍæ€ê¥*3 /³ëU»Ù-×Ïbc0é'(Ú€áCωÙï–!’ê$b Fò])‹ovJ,W-/NPJeGnÓ|ÈÑ0ß̇ÂíJ‹`¢tÏ£¦æMäiSÛ±o·ã«Q榭!ëPs©*n‡ž èæžÜ÷]óþKL4 ·:“çYŠŽ.”£RYz…›RÃ)w.>-Û1Å\ÝX†Š¢ã05£ËÁmíp¥4ÏXFͰ¦'°DÑ©0* =‡+ Ó\2[eR-‰=’Éc™Í(‘Q±îx¡CŒ8ŽÈ½ŒÒä>d•”‡)z*¹ðû:YŸ¸»Üã"Å"kjE¬žäõåoõn[÷Ý·@ÿÃ"—G‹€jÒLm¾•IN×yÎöL&‰qV¡>ÎÏSG8{‹žNC¿r›|]¯ @p–«;sÂì}n@gžW&¬v WŒ>yíøöF64 Z.·#ºpÓ~|Oe vM_?izàágÍ&ŒÒ O ¬Æ)}ÃMIé&¨ dàH¹±Ù¶”åˆ,ÆKãǘãß¼j¾Ž­æ\û9V=®Øðb•^‡w¹ . ÄUС‰õ/‰ÿø•§™ÕJúµ7ov]_¯óÌn’f> /Contents 6 0 R >> endobj 78 0 obj <> /Contents 79 0 R >> endobj 94 0 obj <> /Contents 95 0 R >> endobj 99 0 obj <> /Contents 100 0 R >> endobj 119 0 obj <> /Contents 120 0 R >> endobj 123 0 obj <> /Contents 124 0 R >> endobj 127 0 obj <> /Contents 128 0 R >> endobj 131 0 obj <> /Contents 132 0 R >> endobj 135 0 obj <> /Contents 136 0 R >> endobj 139 0 obj <> /Contents 140 0 R >> endobj 143 0 obj <> /Contents 144 0 R >> endobj 148 0 obj <> /Contents 149 0 R >> endobj 221 0 obj <> /Contents 222 0 R >> endobj 231 0 obj <> /Contents 232 0 R >> endobj 247 0 obj <> /Contents 248 0 R >> endobj 254 0 obj <> /Contents 255 0 R >> endobj 276 0 obj <> /Contents 277 0 R >> endobj 280 0 obj <> /Contents 281 0 R >> endobj 284 0 obj <> /Contents 285 0 R >> endobj 288 0 obj <> /Contents 289 0 R >> endobj 292 0 obj <> /Contents 293 0 R >> endobj 296 0 obj <> /Contents 297 0 R >> endobj 300 0 obj <> /Contents 301 0 R >> endobj 305 0 obj <> /Contents 306 0 R >> endobj 309 0 obj <> /Contents 310 0 R >> endobj 313 0 obj <> /Contents 314 0 R >> endobj 317 0 obj <> /Contents 318 0 R >> endobj 321 0 obj <> /Contents 322 0 R >> endobj 325 0 obj <> /Contents 326 0 R >> endobj 329 0 obj <> /Contents 330 0 R >> endobj 333 0 obj <> /Contents 334 0 R >> endobj 337 0 obj <> /Contents 338 0 R >> endobj 349 0 obj <> /Contents 350 0 R >> endobj 353 0 obj <> /Contents 354 0 R >> endobj 357 0 obj <> /Contents 358 0 R >> endobj 361 0 obj <> /Contents 362 0 R >> endobj 365 0 obj <> /Contents 366 0 R >> endobj 369 0 obj <> /Contents 370 0 R >> endobj 373 0 obj <> /Contents 374 0 R >> endobj 377 0 obj <> /Contents 378 0 R >> endobj 381 0 obj <> /Contents 382 0 R >> endobj 387 0 obj <> /Contents 388 0 R >> endobj 391 0 obj <> /Contents 392 0 R >> endobj 395 0 obj <> /Contents 396 0 R >> endobj 399 0 obj <> /Contents 400 0 R >> endobj 403 0 obj <> /Contents 404 0 R >> endobj 407 0 obj <> /Contents 408 0 R >> endobj 411 0 obj <> /Contents 412 0 R >> endobj 415 0 obj <> /Contents 416 0 R >> endobj 419 0 obj <> /Contents 420 0 R >> endobj 423 0 obj <> /Contents 424 0 R >> endobj 427 0 obj <> /Contents 428 0 R >> endobj 432 0 obj <> /Contents 433 0 R >> endobj 437 0 obj <> /Contents 438 0 R >> endobj 441 0 obj <> /Contents 442 0 R >> endobj 445 0 obj <> /Contents 446 0 R >> endobj 449 0 obj <> /Contents 450 0 R >> endobj 453 0 obj <> /Contents 454 0 R >> endobj 457 0 obj <> /Contents 458 0 R >> endobj 461 0 obj <> /Contents 462 0 R >> endobj 467 0 obj <> /Contents 468 0 R >> endobj 471 0 obj <> /Contents 472 0 R >> endobj 475 0 obj <> /Contents 476 0 R >> endobj 479 0 obj <> /Contents 480 0 R >> endobj 483 0 obj <> /Contents 484 0 R >> endobj 487 0 obj <> /Contents 488 0 R >> endobj 491 0 obj <> /Contents 492 0 R >> endobj 496 0 obj <> /Contents 497 0 R >> endobj 500 0 obj <> /Contents 501 0 R >> endobj 504 0 obj <> /Contents 505 0 R >> endobj 508 0 obj <> /Contents 509 0 R >> endobj 515 0 obj <> /Contents 516 0 R >> endobj 519 0 obj <> /Contents 520 0 R >> endobj 523 0 obj <> /Contents 524 0 R >> endobj 527 0 obj <> /Contents 528 0 R >> endobj 531 0 obj <> /Contents 532 0 R >> endobj 535 0 obj <> /Contents 536 0 R >> endobj 539 0 obj <> /Contents 540 0 R >> endobj 543 0 obj <> /Contents 544 0 R >> endobj 547 0 obj <> /Contents 548 0 R >> endobj 551 0 obj <> /Contents 552 0 R >> endobj 555 0 obj <> /Contents 556 0 R >> endobj 559 0 obj <> /Contents 560 0 R >> endobj 563 0 obj <> /Contents 564 0 R >> endobj 567 0 obj <> /Contents 568 0 R >> endobj 571 0 obj <> /Contents 572 0 R >> endobj 577 0 obj <> /Contents 578 0 R >> endobj 581 0 obj <> /Contents 582 0 R >> endobj 585 0 obj <> /Contents 586 0 R >> endobj 589 0 obj <> /Contents 590 0 R >> endobj 593 0 obj <> /Contents 594 0 R >> endobj 599 0 obj <> /Contents 600 0 R >> endobj 603 0 obj <> /Contents 604 0 R >> endobj 607 0 obj <> /Contents 608 0 R >> endobj 611 0 obj <> /Contents 612 0 R >> endobj 616 0 obj <> /Contents 617 0 R >> endobj 621 0 obj <> /Contents 622 0 R >> endobj 625 0 obj <> /Contents 626 0 R >> endobj 629 0 obj <> /Contents 630 0 R >> endobj 634 0 obj <> /Contents 635 0 R >> endobj 639 0 obj <> /Contents 640 0 R >> endobj 643 0 obj <> /Contents 644 0 R >> endobj 647 0 obj <> /Contents 648 0 R >> endobj 651 0 obj <> /Contents 652 0 R >> endobj 655 0 obj <> /Contents 656 0 R >> endobj 659 0 obj <> /Contents 660 0 R >> endobj 663 0 obj <> /Contents 664 0 R >> endobj 667 0 obj <> /Contents 668 0 R >> endobj 671 0 obj <> /Contents 672 0 R >> endobj 675 0 obj <> /Contents 676 0 R >> endobj 679 0 obj <> /Contents 680 0 R >> endobj 683 0 obj <> /Contents 684 0 R >> endobj 687 0 obj <> /Contents 688 0 R >> endobj 691 0 obj <> /Contents 692 0 R >> endobj 695 0 obj <> /Contents 696 0 R >> endobj 699 0 obj <> /Contents 700 0 R >> endobj 703 0 obj <> /Contents 704 0 R >> endobj 707 0 obj <> /Contents 708 0 R >> endobj 711 0 obj <> /Contents 712 0 R >> endobj 715 0 obj <> /Contents 716 0 R >> endobj 719 0 obj <> /Contents 720 0 R >> endobj 723 0 obj <> /Contents 724 0 R >> endobj 727 0 obj <> /Contents 728 0 R >> endobj 731 0 obj <> /Contents 732 0 R >> endobj 735 0 obj <> /Contents 736 0 R >> endobj 739 0 obj <> /Contents 740 0 R >> endobj 747 0 obj <> /Contents 748 0 R >> endobj 753 0 obj <> /Contents 754 0 R >> endobj 757 0 obj <> /Contents 758 0 R >> endobj 762 0 obj <> /Contents 763 0 R >> endobj 766 0 obj <> /Contents 767 0 R >> endobj 771 0 obj <> /Contents 772 0 R >> endobj 777 0 obj <> /Contents 778 0 R >> endobj 781 0 obj <> /Contents 782 0 R >> endobj 787 0 obj <> /Contents 788 0 R >> endobj 793 0 obj <> /Contents 794 0 R >> endobj 797 0 obj <> /Contents 798 0 R >> endobj 802 0 obj <> /Contents 803 0 R >> endobj 806 0 obj <> /Contents 807 0 R >> endobj 811 0 obj <> /Contents 812 0 R >> endobj 824 0 obj <> /Contents 825 0 R >> endobj 828 0 obj <> /Contents 829 0 R >> endobj 832 0 obj <> /Contents 833 0 R >> endobj 836 0 obj <> /Contents 837 0 R >> endobj 844 0 obj <> /Contents 845 0 R >> endobj 851 0 obj <> /Contents 852 0 R >> endobj 857 0 obj <> /Contents 858 0 R >> endobj 867 0 obj <> /Contents 868 0 R >> endobj 876 0 obj <> /Contents 877 0 R >> endobj 882 0 obj <> /Contents 883 0 R >> endobj 886 0 obj <> /Contents 887 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R 78 0 R 94 0 R 99 0 R 119 0 R 123 0 R 127 0 R 131 0 R 135 0 R 139 0 R 143 0 R 148 0 R 221 0 R 231 0 R 247 0 R 254 0 R 276 0 R 280 0 R 284 0 R 288 0 R 292 0 R 296 0 R 300 0 R 305 0 R 309 0 R 313 0 R 317 0 R 321 0 R 325 0 R 329 0 R 333 0 R 337 0 R 349 0 R 353 0 R 357 0 R 361 0 R 365 0 R 369 0 R 373 0 R 377 0 R 381 0 R 387 0 R 391 0 R 395 0 R 399 0 R 403 0 R 407 0 R 411 0 R 415 0 R 419 0 R 423 0 R 427 0 R 432 0 R 437 0 R 441 0 R 445 0 R 449 0 R 453 0 R 457 0 R 461 0 R 467 0 R 471 0 R 475 0 R 479 0 R 483 0 R 487 0 R 491 0 R 496 0 R 500 0 R 504 0 R 508 0 R 515 0 R 519 0 R 523 0 R 527 0 R 531 0 R 535 0 R 539 0 R 543 0 R 547 0 R 551 0 R 555 0 R 559 0 R 563 0 R 567 0 R 571 0 R 577 0 R 581 0 R 585 0 R 589 0 R 593 0 R 599 0 R 603 0 R 607 0 R 611 0 R 616 0 R 621 0 R 625 0 R 629 0 R 634 0 R 639 0 R 643 0 R 647 0 R 651 0 R 655 0 R 659 0 R 663 0 R 667 0 R 671 0 R 675 0 R 679 0 R 683 0 R 687 0 R 691 0 R 695 0 R 699 0 R 703 0 R 707 0 R 711 0 R 715 0 R 719 0 R 723 0 R 727 0 R 731 0 R 735 0 R 739 0 R 747 0 R 753 0 R 757 0 R 762 0 R 766 0 R 771 0 R 777 0 R 781 0 R 787 0 R 793 0 R 797 0 R 802 0 R 806 0 R 811 0 R 824 0 R 828 0 R 832 0 R 836 0 R 844 0 R 851 0 R 857 0 R 867 0 R 876 0 R 882 0 R 886 0 R ] /Count 151 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <>stream 0 0 0 0 53 66 d1 53 0 0 66 0 0 cm BI /IM true /W 53 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–x4H7«<z' A½ÂA¾›ÂMôÞ—¤Þ¯Õêý]z¾¾½~¿ÿýÿÿÿÿûùžðžÝúýíÿïöÖï¶ûiŽ×m-µÛKm-°–a-ƒ#>…†@¹ EI endstream endobj 11 0 obj <>stream 0 0 0 0 123 133 d1 123 0 0 133 0 0 cm BI /IM true /W 123 /H 133 /BPC 1 /D[1 0] /F/CCF /DP<> ID & °h  eò ÃX@ò …˜@ðˆ1‡„kááC5á!¨‚ èaéð‚ è ÃÐMéô›ÐMé7¤ÒoI½/I¾›ÒoWÒo«ÒoKé½_«Õ¾½_«Õú¿õ~¯ß_«÷×ë÷ûÿ¯_ÿoÿÿǯÿÿï&«ÿÿëëýþÿý.ÿ÷_®ýÿK¿uúÛý{­×ºÛ_Koô¶×ºÛKuî¶ÒÛ]Òí-´¶ÒØk¶–Ú[a-†–Ú[ ¶ÂXa„¶Aaƒ l0‚ÃC.¬3Xh b ,0°dP Ád ÓÀ@ EI endstream endobj 12 0 obj <>stream 0 0 0 0 96 102 d1 96 0 0 102 0 0 cm BI /IM true /W 96 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨“ ?ÿù1„` MnûUºïýn¿]þ»×k¿õÚï÷_î—ý®ÿÖÚÿÝzï\{ÿ[6 ­¿×ëµÞ¿Û_û­×ëýµÿ´·þ¶ÿ_®×zÿµßî·_®ÿ]ë¿uúïÝ~»÷_®×ëmâ·ë÷ë÷ë÷ë÷ë~  EI endstream endobj 13 0 obj <> stream 131 0 0 0 0 0 d1 endstream endobj 14 0 obj <>stream 0 0 0 2 67 104 d1 67 0 0 102 0 2 cm BI /IM true /W 67 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡¤x2ä5ÈXa°ü#Àö‚oÒ ö‚aúA¾Ò¿Ûâ›é¿úoïßÿ¿oÿý¿ÿÿïÿÿÿÿÿÿÿÿëÿÿúõÿë×ëÿK´»ý.뙦—¶—¶—¶—°a/a„†!xaxaxÿÿÿÿÿÿÿÿÿÿÿÿþ¿ø\?äÔù  EI endstream endobj 15 0 obj <> stream 103 0 0 0 0 0 d1 endstream endobj 16 0 obj <>stream 0 0 0 38 46 104 d1 46 0 0 66 0 38 cm BI /IM true /W 46 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨¸0|3Œ‡Oaa˜z<v‚ ;H> stream 75 0 0 0 0 0 d1 endstream endobj 18 0 obj <>stream 0 0 0 14 44 104 d1 44 0 0 90 0 14 cm BI /IM true /W 44 /H 90 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–p<ƒpôÑ Þ“zA½/§Öú}¿ÿÒ¿ÿÿÿÿÿÿü‚ƒ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿy5>ÐCï¾ûþÿ¿þÿûÿÿïÿÿð EI endstream endobj 19 0 obj <> stream 50 0 0 0 0 0 d1 endstream endobj 20 0 obj <>stream 0 0 0 39 46 102 d1 46 0 0 63 0 39 cm BI /IM true /W 46 /H 63 /BPC 1 /D[1 0] /F/CCF /DP<> ID #`ÿ“QšD0¶¿kÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿïûÿìƒ÷3TÿOVÿ»«õaãzáøa†¸¬5&¢Ã  EI endstream endobj 21 0 obj <> stream 53 0 0 0 0 0 d1 endstream endobj 22 0 obj <>stream 0 0 0 38 63 104 d1 63 0 0 66 0 38 cm BI /IM true /W 63 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡œðkH%dža<Ò ¢€­< ƒhžéÐMé7·ÓtúN—íþ—ßcÿ÷ÿÿïÿÿoÿïïs]ûû~ß߆ý¿aøaûáƒðf³àÇ0£ ÒŸ ÙOü‹žƒôý~ÿÿÿ¤ºö«¥à½´¾¶×m-´¸ia´ÌÅXbÂÁ‚€€ EI endstream endobj 23 0 obj <>stream 0 0 0 4 90 102 d1 90 0 0 98 0 4 cm BI /IM true /W 90 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨Šƒÿò Âið`ƒ ÚÚþ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿ”×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïOôð@Â(Tƒ¿ÿÀ@ EI endstream endobj 24 0 obj <> stream 97 0 0 0 0 0 d1 endstream endobj 25 0 obj <> stream 101 0 0 0 0 0 d1 endstream endobj 26 0 obj <> stream 66 0 0 0 0 0 d1 endstream endobj 27 0 obj <>stream 0 0 0 2 67 104 d1 67 0 0 102 0 2 cm BI /IM true /W 67 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–x0`ÙT×Â"†Ðôƒ ›Ên7XV>ŸJµ}'Òýõúõÿë×ÿýÿÿ¯ÿÿÿÿÿÿ¿ÿÿßÿýþÿ÷û÷ÿÛö×ýµÛ]´mv×ÛKÃi{ %á†^Åx0¼^?ÿÿÿÿÿÿÿÿÿÿÿÿëÿ…ÁrÃ?ÿ!·¦@à EI endstream endobj 28 0 obj <> stream 52 0 0 0 0 0 d1 endstream endobj 29 0 obj <>stream 0 0 0 40 96 104 d1 96 0 0 64 0 40 cm BI /IM true /W 96 /H 64 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Ð\ŒmŸÿêŸ~«Ýÿ¯é÷êŸÌþ«óMÕÿú¶­õÿõêêý]^¯¿V·ýzÿÓ«uêêý}ý×®¯Ó}ÿ^¯¿ZßÝzº¿Wßôúºý]_ÿ«}´úÿUzÿ[^»úßTž«þž½é„Aà‚ yDȤÂÿÿà EI endstream endobj 30 0 obj <> stream 70 0 0 0 0 0 d1 endstream endobj 31 0 obj <> stream 65 0 0 0 0 0 d1 endstream endobj 32 0 obj <>stream 0 0 0 38 53 104 d1 53 0 0 66 0 38 cm BI /IM true /W 53 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–x4H7«xDáÞ‚ = ÞMé7¤Þ“zOíézMûëzêúêþ½üÿ$¾P rj¿ÿÿÛýzïÿß½m¯Öë·]û¥¶–Úí¥¶–h-† aˆXa`Á@@ EI endstream endobj 33 0 obj <>stream 0 0 0 4 74 102 d1 74 0 0 98 0 4 cm BI /IM true /W 74 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨ïÿò%d„Á¢c: Õ®áýýü?¿·ÿ¿þþÿÿï÷ÿ¿ÿÿÿ¿ÿÿ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôûÁÊ(ÿø€ EI endstream endobj 34 0 obj <> stream 102 0 0 0 0 0 d1 endstream endobj 35 0 obj <> stream 81 0 0 0 0 0 d1 endstream endobj 36 0 obj <> stream 55 0 0 0 0 0 d1 endstream endobj 37 0 obj <>stream 0 0 0 0 123 169 d1 123 0 0 169 0 0 cm BI /IM true /W 123 /H 169 /BPC 1 /D[1 0] /F/CCF /DP<> ID !`x_üš…$Àðo!› ~¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÌ6ó» \î`ׇÁò@*ä†x0ü~ð߆·á¿oÛöý¿oÛÿÛû÷öþÿöÿöÿÿïÿ¿ÿÿïÿÿÿÿúÿÿÿ¯ý~¿ÿÒÿÒÿë×ë×Òúô½/_KÒô¼%è-Bö^ÔZ`–B„ Ø®"((S°aªvœ@@ EI endstream endobj 38 0 obj <>stream 0 0 0 60 95 171 d1 95 0 0 111 0 60 cm BI /IM true /W 95 /H 111 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡´HÙ @˜@ðAáŒ<# 8x@‡ ƒAð‚oH7¤Ã ¾›ÂMûz õ½&ý½+Ò½'Öú}oÛÒýõ¾¯_ßý+ÿÛ×ëÿÿ½ÿ÷ûÿÅÿÿüš¯ÿúïÿýÿKÿÿßúÿoô¿ßî·_¯ö×ën½w­µî·Koí-ÒÛKzípÚ]¥†ÒØim ¶ÂXa„¶Aaƒ l ¦ BØY E0P EI endstream endobj 39 0 obj <> stream 128 0 0 0 0 0 d1 endstream endobj 40 0 obj <>stream 0 0 0 -3 42 169 d1 42 0 0 172 0 -3 cm BI /IM true /W 42 /H 172 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿþBÁ‚Ø[õûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿúë® ”Oÿÿ÷ÈJò>  EI endstream endobj 41 0 obj <> stream 104 0 0 0 0 0 d1 endstream endobj 42 0 obj <>stream 0 0 0 62 111 219 d1 111 0 0 157 0 62 cm BI /IM true /W 111 /H 157 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡‚@!‚§„P0ôfôoAô›àÛÐoÛzwïíûûû{ý>Õá„øÞýïßïÞýþýïßïÞýþýïßÿ§ú÷ú¯z÷úòBé?Þ¯Õÿ¤ÿz¿Wþ“ýêý_úO÷«õzý?Þ¯Õÿ¤ÿz¿Wþ“ýëôÞ¿¿W¯Óêý^¿O­ûõzý>·ïÕëôÿz¿W¯Óë~ý^¿O­ûõzý?Þ¯ÕëõzýCÕ{Aëzh<&ƒ‰0 ¤h7ÿÿÀ@ EI endstream endobj 43 0 obj <> stream 45 0 0 0 0 0 d1 endstream endobj 44 0 obj <>stream 0 0 0 -16 87 231 d1 87 0 0 247 0 -16 cm BI /IM true /W 87 /H 247 /BPC 1 /D[1 0] /F/CCF /DP<> ID &±€< ôãû“Uï÷þ÷ï÷þ÷ï÷þ÷ï÷þ÷ï÷þ÷þÿ~ÿ~ÿ~÷þÿ~÷þÿ~ÿ~ÿ~ÿ~ÿ~ÿï~ÿï~ÿïï÷ïï÷ïï÷ïï÷ï÷ï÷ïï÷ï÷ï÷ï÷ï÷ï÷ï÷ï÷þ÷þÿ~÷þÿ~÷þÿ~÷þÿ~÷þÿ~ÿ~ÿ~ÿ~ÿ~÷ÿï~ÿïïöÿïïï÷ïï÷ïï÷ïï÷ïï÷îÿû[P EI endstream endobj 45 0 obj <> stream 117 0 0 0 0 0 d1 endstream endobj 46 0 obj <>stream 0 0 0 0 171 169 d1 171 0 0 169 0 0 cm BI /IM true /W 171 /H 169 /BPC 1 /D[1 0] /F/CCF /DP<> ID %Øp?¯¿õÉ© Ûd äBùDøa(kjë %ý«­¯ôÿý¥ÿþHOô¿ûÿÒÿÛÿÿKÿoõÿ¯ý¿ÒÿïýÿKÿoÿý/ý¿ÿô¿öÿ¯õÿÛý/ÿÿoô¿öÿÿÒÿïú×ÿoõÿ¯ý¿Òÿÿöÿ¯õ¿÷ý/ý¿ÿô¿ûý_úÿÛÿÿJÿßõÿ§ÿ¿ÒÿïýÿKÿoÿý/ý¿×þ¿öÿ¯õ¿÷ý/ýÿïô¿öÿÿÒÿïúÖÿßõÿ¯ý¿ÒÿïýÿKÿ¿÷ý/ý¿ÿô¿öÿ_úÿÛþ¿Öÿßõÿ§ÿ¿ÒÿÛÿÿKÿoúÿ_ý¿×þŸþÿKÿ¿÷ý/ý¿ÿô¿öÿ_úÿïúÖÿßõÿ¯ý¿Òÿïõë¿ï׊ïV/!H@¢¤L7ºýÖ  EI endstream endobj 47 0 obj <> stream 107 0 0 0 0 0 d1 endstream endobj 48 0 obj <>stream 0 0 0 0 114 169 d1 114 0 0 169 0 0 cm BI /IM true /W 114 /H 169 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;?üš…![ÅdF÷ Ê´Áü>áýü?¿¿¿·ïïïÿ¿¿þÿûÿÿ·ÿ¿ÿÿïÿÿûÿÿÿÿïÿÿÿÿßÿÿÿÿÈÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ¿ÞžžB˜‰*oü@ EI endstream endobj 49 0 obj <>stream 0 0 0 -5 69 169 d1 69 0 0 174 0 -5 cm BI /IM true /W 69 /H 174 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¦A?ÿÿÈ:Œ¬4ím[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüI@Oÿ&¡  5¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýÿþýÊͰŸ§¿¶Ÿíÿ·Ûîûíµ¶øm­°ka…Ø0AaŠÃXadÏ EI endstream endobj 50 0 obj <> stream 61 0 0 0 0 0 d1 endstream endobj 51 0 obj <>stream 0 0 0 60 71 169 d1 71 0 0 109 0 60 cm BI /IM true /W 71 /H 109 /BPC 1 /D[1 0] /F/CCF /DP<> ID •ÿ“Q °ÕJöí_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿßÿÿÊÿïßì†Wû þÓ÷Oí}¿^û}o«|+uo·ì6¶áƒkb¶š”5b€Ád ¹ ®€€ EI endstream endobj 52 0 obj <>stream 0 0 0 0 159 169 d1 159 0 0 169 0 0 cm BI /IM true /W 159 /H 169 /BPC 1 /D[1 0] /F/CCF /DP<> ID %x_ÿòjA<ÈEa•`ði…†šÃL,?½oXt½põén»u¶–ëÚ[uºö–Ýn—k·[iz[~Ú^–Úí×¥¶»uº]®Ýn—k·[izí¥·]¥ºí×in»u¶—®Ú[uë·[iz[k·^–Ú[in»iw[®Ú[uº]®Ýz[il{_µ×Zõ¥¯ZZ}ë§Î©é>•êßMéz·Óz^­é7׫zMõzO«}7¥ôÞ¯¥zMêß^­é7ÕêúMôÞ—¤ß·¥êßMézMêÞ—Óz·×¤Þ­õzO«}7¥é7«}zMë}^•ëzPþõ‡¦ž@ôÐy&JDÿÿÿü@ EI endstream endobj 53 0 obj <> stream 137 0 0 0 0 0 d1 endstream endobj 54 0 obj <>stream 0 0 0 0 148 172 d1 148 0 0 172 0 0 cm BI /IM true /W 148 /H 172 /BPC 1 /D[1 0] /F/CCF /DP<> ID & xAàƒÂ(('á~‚ü$ß ›õ|…&“y I¼0—ú~–÷Wú¿ÿWÿô¿ÿïïÒÿÿù 3_úÿÿ×ÿÿÿÿýÿÿÿÿÿýÿÿÿõÿÿÿÿÿ^¿_ÿé}zýzú_ú^—¥éz^—„½á/Ax%áä5êâ …×;p<7Áòkò •ø0ü~ ? ? ûÃ~ß°ý¿oÛöý¿oÿoïßïÛÿïßïßÿþÿÿÿý¿ÿÿÿý/ÿÿÿ¯ÿõúõúÿÒÿÒÿÒúô½/_KÒô½/Ax_/KPAxK°AaHmÈP„ÉålŸ ‚à¹Þ€yçt€ EI endstream endobj 55 0 obj <>stream 0 0 0 60 85 171 d1 85 0 0 111 0 60 cm BI /IM true /W 85 /H 111 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡´P R€ðƒÁÂ)Ì<#¨`=ð‚ = ½ Þ“z ½&ô›Ò}&õoKé½[Òú}[ÒþôŸý[ëû¥öµë_ý/ÿýÿÿ¨ÿÿçb5Oüè ÿÖÿÿÿþÿÖëÿûþ–ßþõÚïým¯uºï÷[in»uÚíÖém¥¶–ÃK „¶[a,0a°Áƒ¶  @ EI endstream endobj 56 0 obj <> stream 147 0 0 0 0 0 d1 endstream endobj 57 0 obj <> stream 87 0 0 0 0 0 d1 endstream endobj 58 0 obj <> stream 60 0 0 0 0 0 d1 endstream endobj 59 0 obj <> stream 92 0 0 0 0 0 d1 endstream endobj 60 0 obj <> stream 74 0 0 0 0 0 d1 endstream endobj 61 0 obj <>stream 0 0 0 60 104 169 d1 104 0 0 109 0 60 cm BI /IM true /W 104 /H 109 /BPC 1 /D[1 0] /F/CCF /DP<> ID %Ÿÿüš„!\„ 0[Mm5õþÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿýÿÿßëÿý×(_õöÿº÷õ¿Û_zû_nµmut°Xuim„°ÃKa„¶NaŠÃ&£†Aƒƒ)ÃR@ÃÌø€ EI endstream endobj 62 0 obj <>stream 0 0 0 60 84 171 d1 84 0 0 111 0 60 cm BI /IM true /W 84 /H 111 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÚH™ 0˜@ðAèÖAàA€ôÂ7 ƒAô›ÂMè&õ}ß·¤Þ—¤Þ¯Õé>­õë}>¿MëýÒûúÒׯýú×ÿÿÿ¯ÿÿÿÿþÿÿÿþÈþáéúîŸûýÿîÿí¿¾Ýx3‹¶@ã?ۭ׺Ývëm}-µÛKm-´¶×  ¶Ka„¶K 2 £ %†!a…ƒƒ EI endstream endobj 63 0 obj <> stream 113 0 0 0 0 0 d1 endstream endobj 64 0 obj <> stream 89 0 0 0 0 0 d1 endstream endobj 65 0 obj <>stream 0 0 0 60 99 171 d1 99 0 0 111 0 60 cm BI /IM true /W 99 /H 111 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–HÉ 5Ÿ0ƒÁ<#X< @ÃO@´tÞA†‚ôƒh'Òm&ô›¦ôƒjúMÕé>ýZ_·Ý[ß]uoôÇÿïÿïÿÿÿ¿ÿþÿýßÿ¿¿ÿßß \Ößþß·ÿ·íû~ß·÷á‡íûÃÃØ~ †Ã"~ ƒ Á!®+ÛÈ)¨È£ÿÿ!ûÂÓôý?ÿõÿÿÿ]þ¾«¯¥çK½Úï]¯Öß¶—¥·ö–Ú[im¥¶—ia†Øil °Á„Åa…ƒ Á–P EI endstream endobj 66 0 obj <> stream 100 0 0 0 0 0 d1 endstream endobj 67 0 obj <>stream 0 0 0 60 104 171 d1 104 0 0 111 0 60 cm BI /IM true /W 104 /H 111 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ØCÃ<†’‰QÂ}BÂ! @ßI‡ÐAå8´˜pZ¼.˜~“Ö­ý7Z¿÷ôþ­ÿ¿ÿ«ÿôÿûÿÿÿûÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú¯ÿÿ믪࠱ÓIÿÿÿ&£Ú"„ é0ä   EI endstream endobj 68 0 obj <> stream 108 0 0 0 0 0 d1 endstream endobj 69 0 obj <> stream 116 0 0 0 0 0 d1 endstream endobj 73 0 obj <> endobj 74 0 obj <> endobj 93 0 obj <> endobj 97 0 obj <> endobj 98 0 obj <>stream 0 0 0 0 161 176 d1 161 0 0 176 0 0 cm BI /IM true /W 161 /H 176 /BPC 1 /D[1 0] /F/CCF /DP<> ID & x!yÆQ? ÁÈ™`ƒÁÂJÃáPÍxDL5CÂ#`¨ð&ô7„ƒzzO„Iôaé>“zMé7¤Þ“é7¤Þ—¤ßMëé7ÓëzOÕêú_·¥ýêýzý7¯þ•÷¥ÿõÿ®¯ý¯ÈdF¿ÿKÿõÿÿÿÿþ£ÿÿþMW¿ÿÿÿÿßÿöüàYÿëûÿßû¯÷ßÿ[[ÿmoíoþÚþÚßÚÛî»[}×ko¶¶ÖÚÛ[ku°ÖÚÛ[ m¢u†Ií¤öO 0“Ø0“à .Á‚ á†xdL4ÂxdT3Ã%A€¸1 ᧃða<ƒ:¯È1w<À€ EI endstream endobj 102 0 obj <>stream 0 0 0 60 117 175 d1 117 0 0 115 0 60 cm BI /IM true /W 117 /H 115 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ¤k) ±¬ y @L x xO“ ¨ aè oA0ð‚ é7¤Ò½ Þ•é7«zMõêßW¤Þ¿Þ“ë~ý^¿Þ¯ÿW¯÷ï¯×ÿÞ¿ÿÿ÷ñÿÿÿÿÿÿ&«ÿ×ÿÿ¿õÿûÿ]ûþ—ûÿ]û¥þõߺ]û¥¿Ú[ÖÚíÂípév–Ým„°Ú[il0‚Øa,0 a„°Ê°p°Åa‚à  Ø-ƒR®  EI endstream endobj 103 0 obj <>stream 0 0 0 61 132 173 d1 132 0 0 112 0 61 cm BI /IM true /W 132 /H 112 /BPC 1 /D[1 0] /F/CCF /DP<> ID )@ÿÿÿ“P`«B¬½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿßÿÿò?ï÷¯¿Ý~ÿn½¿õöëÛõ´½¿VÒÕ‡äQ&J6l0–Á„°Åma…†Rj$&òZhO EI endstream endobj 104 0 obj <> stream 132 0 0 0 0 0 d1 endstream endobj 105 0 obj <>stream 0 0 0 15 84 175 d1 84 0 0 160 0 15 cm BI /IM true /W 84 /H 160 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Êt ’a0AàƒÂxAéáƒzÐMéÒo¦ô½[ëÕ¿ô›ÿßïKÿÿoÿ¯ÿÿÿÿÿÿÿÿÿÿþC\×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåoOÿÿüsÈQ<>¾}÷ß}ÿ}ÿ}ÿýÿýÿ÷ÿÿßÿÿÿÿÿ€€ EI endstream endobj 106 0 obj <> stream 135 0 0 0 0 0 d1 endstream endobj 107 0 obj <>stream 0 0 0 60 104 175 d1 104 0 0 115 0 60 cm BI /IM true /W 104 /H 115 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ¦u iCÁL†¡fx ôD˜7x@ƒz0ð‚ è Þ‚o úo 7Óá&úoI½/Vú}o§Öú}n“þ¾ž¤kÿ­_þ¿_ÿÿÿùÙB~IG“Uÿÿÿ÷__ÿ·ÿõ¿ëþßõ¿ëÝoúí×û¥·í¥þÝn»iw[im®õ†Ka¥¶–a°ÂXe@U± ÂÁ…ÖÁ‚È2U EI endstream endobj 108 0 obj <> stream 105 0 0 0 0 0 d1 endstream endobj 109 0 obj <> stream 120 0 0 0 0 0 d1 endstream endobj 110 0 obj <>stream 0 0 0 60 87 175 d1 87 0 0 115 0 60 cm BI /IM true /W 87 /H 115 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨Ø5ƒKd v>Á Ñ°ƒì ûO°`À}£ e>ÐA¾Ð@Ãâ}7Â~›é¾Ÿ«éþú~¿¾¾¯ßþ¿úý=þ—¯úé×A/\W …ÂYA,‚°¾A´³!¦¥iUÈe¬`¸K a,%…ÐZè,%Ö‚ÒÐZ …¢°”*A§’Ðl¢P Ù: `Q‚ápº ¥ü/¯¯×¯¯þ¿ýßõÿuÿµßíw^×uØk¶»av]†d`lá• Sì'Á„ø0Að`Ÿ!¥[À@ EI endstream endobj 111 0 obj <> stream 106 0 0 0 0 0 d1 endstream endobj 118 0 obj <> endobj 122 0 obj <> endobj 126 0 obj <> endobj 130 0 obj <> endobj 134 0 obj <> endobj 138 0 obj <> endobj 142 0 obj <> endobj 146 0 obj <> endobj 147 0 obj <>stream 0 0 0 0 136 148 d1 136 0 0 148 0 0 cm BI /IM true /W 136 /H 148 /BPC 1 /D[1 0] /F/CCF /DP<> ID & {)ÁJAh PS$ È2á‚<"$à@Ðð&O ÃÐ Þ è ÃÐMáÞoIô›ÐMé7¤Þ“é7ÕêúMé_O«é_úMëôúß^¯Õêÿÿ¥ýþ—ú¿ÿ®¤c_ÿ¥ÿÿÿñÿÿÿÿòj¿ÿÿÿ·ä ý×ûÿÿ¶¿ýµÿí­þ»ïÛ_Û[û[­¿kmmýa†½l5ºÃ v¶Öka„P¶ÐO 5á†O`ÂO 0“Ù ž0“Ã" <…ÃO á„òå¯ °-È3“yÅCP EI endstream endobj 151 0 obj <>stream 0 0 0 1 111 145 d1 111 0 0 144 0 1 cm BI /IM true /W 111 /H 144 /BPC 1 /D[1 0] /F/CCF /DP<> ID *@Ÿÿüš‚®BZkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿûÿÿ¿ë¿ÿûû^K¯÷ûuïý¥íþßí¥ì4¾ÿ 4¾ødö? /kÃàÂðd`iqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×Xÿÿ“Q9›€€ EI endstream endobj 152 0 obj <>stream 0 0 0 51 103 147 d1 103 0 0 96 0 51 cm BI /IM true /W 103 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Òf†ò kFC8 òO0ƒÑHm<"¬§ @Ã] Ýè Ú%Íé=>“i7¤ßûi>“ÿLwëÿOþÿßÿäÕ_ÿþßï! Öÿû~þÃ÷ö·íøaûÃ~Áø0~& ðd' Š®A “!¤¥×-È*‹äÄÿÿþA‹ð@ü ý?O×íuûÿÿë×ëþ—ëi~¶’áVÒðIl4¶Ka¥°a²œaˆXaa…ƒƒk EI endstream endobj 153 0 obj <> stream 118 0 0 0 0 0 d1 endstream endobj 154 0 obj <>stream 0 0 0 52 110 186 d1 110 0 0 134 0 52 cm BI /IM true /W 110 /H 134 /BPC 1 /D[1 0] /F/CCF /DP<> ID 3 #0,ÿɨ9.…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäOÈ0ÁðDP3xAø@ý›ðˆ`áú ú ‡è ßÃáý¾~ß þúoÛëé¿ý¿¿þýþÿ÷ûÿÿ¿ýÿÿÿÿûÿÿÿÿÿÿ¯ÿÿÿýúÿÿ¯_ÿô¿úõúÿÒïí/®×´»K´»®]‚Â*J6 %†K Ô([†X`² “Px0P EI endstream endobj 155 0 obj <>stream 0 0 0 14 71 147 d1 71 0 0 133 0 14 cm BI /IM true /W 71 /H 133 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ¨|4HjÁ„ÂzxD ¯@ƒ}7¤úW«}>·ïÕëûÿ×­ÿýÿÿÿÿÿÿÿÿÿäÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåmÿÿÿò*V0 p}ðûï¾ûïûïûþÿ¿ïÿ¿ÿïÿÿ¿ÿÿü@ EI endstream endobj 156 0 obj <>stream 0 0 0 51 88 147 d1 88 0 0 96 0 51 cm BI /IM true /W 88 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ªhRª2 cX xAàƒÂ«z Ã`xAôoAðo„Þo¦ô›Òõ õé7¯ÓzúMÿ½/<75¯õ¯þ¿ÿÿÿüí@oä+ù5_ûÿë×ÿ÷þ¿íwþ·û÷KýµÞ»÷KoÝ.ëm-µÛKm-†–a-†Ø0–…† ,0Y³ dð EI endstream endobj 157 0 obj <> stream 86 0 0 0 0 0 d1 endstream endobj 158 0 obj <>stream 0 0 0 52 77 145 d1 77 0 0 93 0 52 cm BI /IM true /W 77 /H 93 /BPC 1 /D[1 0] /F/CCF /DP<> ID $€_ÿɨ! ¶¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿþÿÿ²WàøAú}§ëÈ„ïÿí}ïßß÷öëïÕ·Âß ­¿`ÚØ­­¬0°Â“Pxa@@ EI endstream endobj 159 0 obj <> stream 96 0 0 0 0 0 d1 endstream endobj 160 0 obj <>stream 0 0 0 9 78 145 d1 78 0 0 136 0 9 cm BI /IM true /W 78 /H 136 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿÿÈe“Ãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(2œ.TL,ɨ?!° a^ƒáð|>ø}ðûÀ@ EI endstream endobj 161 0 obj <>stream 0 0 0 0 81 170 d1 81 0 0 170 0 0 cm BI /IM true /W 81 /H 170 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿÿù ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿy[«ÿÿà EI endstream endobj 162 0 obj <> stream 134 0 0 0 0 0 d1 endstream endobj 163 0 obj <>stream 0 0 0 61 91 173 d1 91 0 0 112 0 61 cm BI /IM true /W 91 /H 112 /BPC 1 /D[1 0] /F/CCF /DP<> ID &™ÿù5 °e×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿýͧ„„kÈEAý¯÷ûûþÿoíÿ­[õ†ùm¶£oØml[µµµ†š‰ cP`  EI endstream endobj 164 0 obj <>stream 0 0 0 1 130 175 d1 130 0 0 174 0 1 cm BI /IM true /W 130 /H 174 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ®t Âpim'"ô†¨”>||'ÑV„áð‚ ôn@ÂÐA‡„ƒp´›ô¤úAÿÒ¥êúOÓêÿé>¿_úÿéÿ¯×¯ÿÿëÿÿÿëõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿ¿ÿÿïÿÿûÿ÷ïÿß¿þÿ~þßþÿk·î½®ß¸]¿l.ß°Âí®ØE †KØix`Áì%áˆ^ðaxax0^ClŸWãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ¿®@ðÎ> stream 140 0 0 0 0 0 d1 endstream endobj 166 0 obj <>stream 0 0 0 61 132 175 d1 132 0 0 114 0 61 cm BI /IM true /W 132 /H 114 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ®S†Q84È6H³‚%A¼| øAôøD˜aôBwÒ ôn@ƒÒ Ái7^Ýi7ûÖ­ÿý7êßïÿêÇÿ¿þÿÿÿ¿ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ë¯ªäQ2âQi*ÿÿÿù5A°o!—©` EI endstream endobj 167 0 obj <> stream 146 0 0 0 0 0 d1 endstream endobj 168 0 obj <>stream 0 0 0 60 101 175 d1 101 0 0 115 0 60 cm BI /IM true /W 101 /H 115 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Êj I ³ qL†™^x@ðž H‚ < A½Â7¤Þ“zMè&õ}&úoKÒoWêõ~¯WÒý½ué?ùÅ5¯_¯ÿZÿþ¿ÿÿ×ÿÿÿÿÿÿÿûÿÿî@ž~§éí§éïú}û¯Þÿû~ÿµ·÷îÖÛîûa­Ã[d¶ØiaµÛ-† 2ul0–&,1Xaa…ƒƒÛÈ)k EI endstream endobj 169 0 obj <>stream 0 0 0 1 57 173 d1 57 0 0 172 0 1 cm BI /IM true /W 57 /H 172 /BPC 1 /D[1 0] /F/CCF /DP<> ID ÿ& ÁVµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúþºäA¼¢ŸÿÿÿÈA¬†^˜ÿÿÿÿÿÿÿþ@ÅàŠ¼ 𞞟zéÿzÿÿÿï×ïµÖÖÖØY EI endstream endobj 170 0 obj <> stream 72 0 0 0 0 0 d1 endstream endobj 171 0 obj <> stream 133 0 0 0 0 0 d1 endstream endobj 172 0 obj <>stream 0 0 0 0 56 94 d1 56 0 0 94 0 0 cm BI /IM true /W 56 /H 94 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿþCe_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò€™¨ò!cù5\¾ƒáð|>ûP EI endstream endobj 173 0 obj <>stream 0 0 0 75 20 94 d1 20 0 0 19 0 75 cm BI /IM true /W 20 /H 19 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¤fPƒÓÓ׿Žú“Uý­­­… EI endstream endobj 174 0 obj <> stream 79 0 0 0 0 0 d1 endstream endobj 175 0 obj <> stream 44 0 0 0 0 0 d1 endstream endobj 176 0 obj <>stream 0 0 0 -3 100 94 d1 100 0 0 97 0 -3 cm BI /IM true /W 100 /H 97 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡ ™ÿÿmOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóá¥!¥ÿ&«×ÿÿÿÿÿÿzÿÿï×zÿÿÿ÷¯zÿ÷¯ÿ^ð¼=vð—#<†qœGÿÿð EI endstream endobj 177 0 obj <>stream 0 0 0 -6 79 94 d1 79 0 0 100 0 -6 cm BI /IM true /W 79 /H 100 /BPC 1 /D[1 0] /F/CCF /DP<> ID "¢ÿÿ“P† Ì5 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿûÿî¿ïçU_¿Û¯oöÿ†—¶—°×Ø0—†+Ø^ð`¼/ÿÿÿÿÿÿÿÿÿÿÿÿÖ?ÿ“Po€€ EI endstream endobj 178 0 obj <> stream 110 0 0 0 0 0 d1 endstream endobj 179 0 obj <>stream 0 0 0 29 64 95 d1 64 0 0 66 0 29 cm BI /IM true /W 64 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡˜j Âd4á„+Ѭ0‚ôo >‚oH7÷¤úMÿ«é_}5¨þ¿×üüš'šÁ¯Éª×ÿÿþßëþõþÚ_íþ–þÚ[k·]¥†ÒØa-†ج[ ÝF @ EI endstream endobj 180 0 obj <> stream 85 0 0 0 0 0 d1 endstream endobj 181 0 obj <>stream 0 0 0 -5 140 94 d1 140 0 0 99 0 -5 cm BI /IM true /W 140 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID "À`ð×ß_}rjH ) jðÁ_ëýþ¿ßëýþ¿ÿßëýþ¿Í[ýéÿ[þ›ÿÿIÿïõÿ¦ÿ_úoÿý&ÿÿÒûýé¿×þŸþÿIÿïôŸþÿ_úoõÿ§ÿ¿Òûýé¿×þ›ýéÿïôŸþÿ_úoõÿ¦ÿ_úoÿý'ÿ¿×þ›ýéÿïôŸþÿIÿïÿý&ÿ_úûýé¿Òûøÿ¦?â™ úÓ§ EI endstream endobj 182 0 obj <> stream 119 0 0 0 0 0 d1 endstream endobj 183 0 obj <>stream 0 0 0 -5 83 94 d1 83 0 0 99 0 -5 cm BI /IM true /W 83 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;Õ¿ù5 à£àþíøÿ¿¿¿¿þÿ~ÿÿïÿþÿÿÿßÿÿù#_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ, ?ù˜ià EI endstream endobj 184 0 obj <> stream 149 0 0 0 0 0 d1 endstream endobj 185 0 obj <>stream 0 0 0 -6 34 94 d1 34 0 0 100 0 -6 cm BI /IM true /W 34 /H 100 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿþBëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ä„e+ÿÿü‚çÇÿÿÿòx zO^ôÿ_ÿßúÚßkk @ EI endstream endobj 186 0 obj <> stream 141 0 0 0 0 0 d1 endstream endobj 187 0 obj <>stream 0 0 0 29 79 94 d1 79 0 0 65 0 29 cm BI /IM true /W 79 /H 65 /BPC 1 /D[1 0] /F/CCF /DP<> ID "¢ÿÿ“P† Ì5 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿûÿî¿ïçU_¿Û¯oöýa¥‚¶”l5Ø0–­…†°`¤Ô1  EI endstream endobj 188 0 obj <>stream 0 0 0 3 51 95 d1 51 0 0 92 0 3 cm BI /IM true /W 51 /H 92 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡”CxOAèÖú7¤ßO¤ßúWïÿúßÿÿÿÿÿÿPkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò‚¿ÿòExd@(‡ßøß÷ß÷ýÿÿÿÿßþ  EI endstream endobj 189 0 obj <> stream 80 0 0 0 0 0 d1 endstream endobj 190 0 obj <> stream 62 0 0 0 0 0 d1 endstream endobj 191 0 obj <>stream 0 0 0 29 56 94 d1 56 0 0 65 0 29 cm BI /IM true /W 56 /H 65 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨‹ÿÿ!tÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿ¿ÿ!¡ü‚ôíé÷ò§ïïûýõo«|ÚÊÃý†×±û ÚðÂÈb€Á@@ EI endstream endobj 192 0 obj <>stream 0 0 0 -7 54 94 d1 54 0 0 101 0 -7 cm BI /IM true /W 54 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨‹ÿÿÿ!uÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø‘ ÿù5 t ßÿÿÿÿÿÿÿþA‰øOÓí=ÿ¿Û÷ß·Û­·Ø6°ÁÖdž d*Èjt@ EI endstream endobj 193 0 obj <> stream 64 0 0 0 0 0 d1 endstream endobj 194 0 obj <>stream 0 0 0 29 74 95 d1 74 0 0 66 0 29 cm BI /IM true /W 74 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID & AÔ à‚ xA„ð茧„m>nuºM¤Ý Ýz÷«§ûúþÿýÿÿÿíÿÈ!­¿¿oÛöý‡áƒö†K…á•Èg+ÁòB™ ,‚­_ÿÿùáá?N»õÿí/ý~º]뤶’è%°Â b°ÂÚÁ“Ñ! ¼@ EI endstream endobj 195 0 obj <> stream 46 0 0 0 0 0 d1 endstream endobj 196 0 obj <>stream 0 0 0 29 61 95 d1 61 0 0 66 0 29 cm BI /IM true /W 61 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡”j ð@òÀ°ƒÂD`¯7 ½Þ“zMé>“}7¯¤ÿtŸõ!´k¯ý¯ÿÿù5_þ÷ÿ ÑÞ{a?½×ïmvÿöýßn¶ßaû ­†–¬5†  @ EI endstream endobj 197 0 obj <> stream 77 0 0 0 0 0 d1 endstream endobj 198 0 obj <> stream 68 0 0 0 0 0 d1 endstream endobj 199 0 obj <>stream 0 0 0 0 64 94 d1 64 0 0 94 0 0 cm BI /IM true /W 64 /H 94 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨¥?ýÿï¾û{ï¾ûïÌÃ/¶COöï ¿ÿÛöîßo¶öo¶C4ÖÞÞÃï ðöööÞÞß{{{ööûÛï~÷ï~ÿ|ˆ÷&~ŸO§ï¯ÿÿÿé×´—ü/a%ÂKu᥷[a-†–à l%†!ma…†  ¢¨€ EI endstream endobj 200 0 obj <> stream 39 0 0 0 0 0 d1 endstream endobj 201 0 obj <>stream 0 0 0 -5 114 94 d1 114 0 0 99 0 -5 cm BI /IM true /W 114 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID "ÀNx§ú묚‡$?ëëëÿ…ÿ×××ÿ_____ý}}}~K¯¯é~—é~—ÿé~—é~—õú_¯é~—õú_¯é~—õøKÿô¿Kô¿¯ÒýKô¿¯ÒýKô¿KúýKô¿Kô¿ÿKô¿Kô¿¯×ô¿Kúü%ÿú_¥ñ___ý}'CXY}kZž EI endstream endobj 202 0 obj <> stream 122 0 0 0 0 0 d1 endstream endobj 203 0 obj <>stream 0 0 0 29 124 94 d1 124 0 0 65 0 29 cm BI /IM true /W 124 /H 65 /BPC 1 /D[1 0] /F/CCF /DP<> ID "¢‘QÿÿòjÔ† Ì5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿÿýßÿÝ×ÿwóªÎ«ý÷ûjÚûtÝ{}úÃI´°VÕ†±°Òa¥°i0iaŠ VÂaa Ö 0Rjƒ  2€@ EI endstream endobj 204 0 obj <> stream 78 0 0 0 0 0 d1 endstream endobj 205 0 obj <> stream 129 0 0 0 0 0 d1 endstream endobj 206 0 obj <> stream 43 0 0 0 0 0 d1 endstream endobj 207 0 obj <>stream 0 0 0 28 73 123 d1 73 0 0 95 0 28 cm BI /IM true /W 73 /H 95 /BPC 1 /D[1 0] /F/CCF /DP<> ID & \„ © âY `á„k è o7 ƒIúoA7«ôßñMÿÿüšªö¾–Úí…Ød„lö<5ƒ[éiip´´ …È lȰfÑ ðºëúßÿ÷!tò0{`øAìCÙ¨W < ƒ}7¤úÞ“êß_Þ¿ÿÿÿÿÿÿÿïýwî‘¿Om$÷«¶¾ÒXa„Øaج0Ÿ Ö k _@Ö$ ä@ EI endstream endobj 208 0 obj <> stream 84 0 0 0 0 0 d1 endstream endobj 209 0 obj <> stream 125 0 0 0 0 0 d1 endstream endobj 210 0 obj <>stream 0 0 0 -6 78 95 d1 78 0 0 101 0 -6 cm BI /IM true /W 78 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & `èK¸"\!VÁ„Öô0ú15‹H5¤Ö“é>¯¤þúOþ¿^¿ÿõëÿÿñÿÿÿÿÿÿ&«ÿÿûÿï÷ïÿþß¶»¯k¶»k¶¸a®ÃØ0E W††.3Èfãÿÿÿÿÿÿÿÿÿÿÿÿþ¹ µÿÿùÔ@@ EI endstream endobj 211 0 obj <> stream 69 0 0 0 0 0 d1 endstream endobj 212 0 obj <>stream 0 0 0 -6 36 94 d1 36 0 0 100 0 -6 cm BI /IM true /W 36 /H 100 /BPC 1 /D[1 0] /F/CCF /DP<> ID &«ÿþBëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúþR¿ÿÿüƒ{€€ EI endstream endobj 213 0 obj <> stream 42 0 0 0 0 0 d1 endstream endobj 214 0 obj <> stream 127 0 0 0 0 0 d1 endstream endobj 215 0 obj <>stream 0 0 0 29 71 95 d1 71 0 0 66 0 29 cm BI /IM true /W 71 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–k ¹ ð@ðƒÁѬW„†*ÐA½&ôoI½&õ½'ûÒoý+÷Öÿÿ_¦ÿÿøïÿÿÿþMV¿ÿÿ­µÿzÿëuïÞ¶Òÿm-´·­†ÛKa„°Ã-ŠÃ ,& $2†@@ EI endstream endobj 216 0 obj <>stream 0 0 0 30 77 95 d1 77 0 0 65 0 30 cm BI /IM true /W 77 /H 65 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡¦|4÷¯z÷¯éÿz÷¯zþŸóRzý7¯Ózý>·íõëé7ÿMëôÞ¿ßO¯Ózý7¯Ózÿé7ÓýëôÞ¿Mëÿ¤ßO÷¨ q*aÿÿ EI endstream endobj 217 0 obj <> stream 71 0 0 0 0 0 d1 endstream endobj 218 0 obj <> stream 63 0 0 0 0 0 d1 endstream endobj 219 0 obj <>stream 0 0 0 29 52 95 d1 52 0 0 66 0 29 cm BI /IM true /W 52 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID 65 8a°ƒ´Iø nn›„ûp½ºëþ×Òú¥©5 \Âä2Ôd˜È0%A]pKK u„ºÐZÂÑ &2 DÌè]_ɪ¯þ»®Úí¯apà ÍCá .Að`ƒÀ@ EI endstream endobj 220 0 obj <> endobj 224 0 obj <>stream 0 0 0 0 67 96 d1 67 0 0 96 0 0 cm BI /IM true /W 67 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID & `è’Éààá< ôjD0ÎðøMè&ôïA·Ûz·ß÷ÿßüš¯×÷kµÚá…Á‚ã_ýéZõ¥Ö––‚ÂXAd6è ‚áä „È5Wƒ ÷†ø{í÷·ûy ž;Óôý7ûÓÿÿÿÿëúÚÿévpU°×m-†–ÃKgQV…°°aa‚ÈO EI endstream endobj 225 0 obj <> stream 38 0 0 0 0 0 d1 endstream endobj 226 0 obj <>stream 0 0 0 -4 94 94 d1 94 0 0 98 0 -4 cm BI /IM true /W 94 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;Vù5 àÔü†¡ðþßÛ÷÷÷÷ÿßÛÿÿþýÿÿßÿü~ÿ¿ÿÿÿõ Òkÿýõõõð¾C§ãÿÿþS‚ÿáýýÿ÷ÿÿÈlïÿÿ×úÿÿñÿõÿÿý~½õÿ××Òõõð¾Á|ƒBˆ¯à EI endstream endobj 227 0 obj <>stream 0 0 0 -5 114 94 d1 114 0 0 99 0 -5 cm BI /IM true /W 114 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID !`Çÿù5 à®F?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÿÿü§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ"@ÁR ÿÿŸ ,Ìà EI endstream endobj 228 0 obj <> stream 111 0 0 0 0 0 d1 endstream endobj 229 0 obj <> stream 123 0 0 0 0 0 d1 endstream endobj 230 0 obj <> endobj 234 0 obj <>stream 0 0 0 -1 71 94 d1 71 0 0 95 0 -1 cm BI /IM true /W 71 /H 95 /BPC 1 /D[1 0] /F/CCF /DP<> ID & cÿþA²¿ÿÿÿÿÿÿÿ‰ ÿ&¨ø5šÿ°ýý¿oÿoÛöþýý¿oÿoÛöþýý¿oÿoÛöÿöý¿oÛÿÛöÿöý¿oÛÿÛöý¿ýß}÷ý÷ý÷ßß}÷ý¨€ EI endstream endobj 235 0 obj <> stream 36 0 0 0 0 0 d1 endstream endobj 236 0 obj <>stream 0 0 0 -5 113 94 d1 113 0 0 99 0 -5 cm BI /IM true /W 113 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨”Wÿÿÿ!H+ƒÁ‚­ÒÛKm{­×m-ºõÛKn¶Òí-×n»KuÛ­´»]ëm-´»]´·­´»]ëm-µÞ»KmvëŠÚß­­úÒ×­-tºÒÓ×½=>ôKý[Ò¾ŸI½[Ò¾ŸVúoJõ~›ÒoJýô›Ò½_I¾›Òo[éô›Öú}&ô‚0) ?ÿÿÿçÁ§>X€ EI endstream endobj 237 0 obj <>stream 0 0 0 -6 109 96 d1 109 0 0 102 0 -6 cm BI /IM true /W 109 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÈjYÓ QB ã '‚apƒ\"(apŠ€Ð׃ ¶ºÇ„}øA>“è/WÐ^—¥ÿ¥é}zú_ú_ú_ÿéëÿÑ u/×ÿëòs]ÿÿÿÿÿÿÿÿ÷¿A° È+ @@ EI endstream endobj 238 0 obj <>stream 0 0 0 -6 78 95 d1 78 0 0 101 0 -6 cm BI /IM true /W 78 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡ªu © Áàß`ö} ûDáì A¿AûH0ø¦úo¦ú~¯¦ÿöÿûÿßïÿþÿßÿÿÿÿÿÿÿÿ×þ¿ÿëÿ_¯ÿô»K¿´»Kºá„»K0KÃ^¯`¼0¼‡àÉ•Çÿÿÿÿÿÿÿÿÿÿÿÿ]r”ÿÿäÄ@ EI endstream endobj 239 0 obj <>stream 0 0 0 -6 98 96 d1 98 0 0 102 0 -6 cm BI /IM true /W 98 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Èu 9Ó QL<xAáaÞÂ%Ã1è ÃÂÒ áÞoA7¤Þ“é^o¯I½[ëÒ}oßKûÒýÿÒþêúÿú<×þ¿×ÿÿÿÿÿÿÿÿÿ{ùÇžŸïÿ}×ûïõ¿µ¿¾ëmwÝwÛ[kmm­µ¶¶ÖÃXa…°Â'ðÃIì„éá•a€ž§ƒ á„ð`žA° V€€ EI endstream endobj 240 0 obj <>stream 0 0 0 0 64 96 d1 64 0 0 96 0 0 cm BI /IM true /W 64 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID &  †’ÁàáÐxAè†á ðƒAôŸA0ô¾›Õ¾½|7áÞŸÿmÿÿßÿÿÚÿkµÁ‚ãÿõÿÖ¿×äK­5î»®×´¸iv—ä@«ŸÄ/axax2 6rÿÿÿÿÿÿÿ,>%8eàø>ø|>ø}÷ß}÷ß5P¾|5<<@ EI endstream endobj 241 0 obj <>stream 0 0 0 -5 94 94 d1 94 0 0 99 0 -5 cm BI /IM true /W 94 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID !`­ÿ“PÁN _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•0ÍÊÐ7Áðø>ùN¡ø0ü7íøoÛöýþý¿þÿ÷ûÿÿÿÿÿÿÿÿúõÿëÿK×ëÒô½/ áà”D(U;À0LÁ¨@ EI endstream endobj 242 0 obj <> stream 58 0 0 0 0 0 d1 endstream endobj 243 0 obj <>stream 0 0 0 -6 71 96 d1 71 0 0 102 0 -6 cm BI /IM true /W 71 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨ÀfÆÈlWØ }‚°ŸaØD`pýƒ;íÀÃâ7Âo„ý7Ó|/Ûá~ß__ß_¿Wÿõ×ÿõÿ_ébµ¥®K ¨¯ ØÓÈ4‹d2а\†p¬%…ÂZZZZ KKAh. D¬ dX( a­E md+Ð\"WÒ}}/_ý}úõúÿÿ®ÿ®Úÿë¶¾»kÚí®Ø]°» "GØ`“ìBðµàÁ>O/SÀ@ EI endstream endobj 244 0 obj <> stream 114 0 0 0 0 0 d1 endstream endobj 245 0 obj <> stream 82 0 0 0 0 0 d1 endstream endobj 246 0 obj <> endobj 253 0 obj <> endobj 257 0 obj <>stream 0 0 0 9 89 145 d1 89 0 0 136 0 9 cm BI /IM true /W 89 /H 136 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;ï“Uß}ÿûíï¾ûï¾ÌÀ‘í‡Øo¿°ßoÛûößnöý‡íûo·íû~ß·vl†Ù®ðßxa÷····°ööö{{{{o½½½¾öööûÛý¾öÿo½ûý¿Ûÿï!!ð@ü ~Ÿ„þýon?¾¿__ë\š­uô» ¸KÌÀ‘mþ»iw[®ÃKëm.Òà /ia†\4°Ã¶ ¶+ ,0°ÂÃÒÖ  EI endstream endobj 258 0 obj <>stream 0 0 0 0 145 170 d1 145 0 0 170 0 0 cm BI /IM true /W 145 /H 170 /BPC 1 /D[1 0] /F/CCF /DP<> ID ; _ÿ“P0Lᙯÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Û?ÿÿÿÿÿÿÿÿ×ÿÿõÿÿ__ý}}|/…ð_!  ÿÿÿùH >C4G‡ðþþþþþÿûÿïÿÿûÿÿÿÿÿÿÔŸÿ¥ÿÿãÿÿÿýzÿÿÿúÿÿÿú_ÿëÿ¯ÿúÿéëëëëÿ…úð¾×Âø_ð_ ÊQõÿð EI endstream endobj 259 0 obj <> stream 112 0 0 0 0 0 d1 endstream endobj 260 0 obj <>stream 0 0 0 3 184 176 d1 184 0 0 173 0 3 cm BI /IM true /W 184 /H 173 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡Ép^C ÆC œì0+x ðžo¤zMè øJäÔ y'è$ßÓúߤÿߤþ¿ÿ¤ßÿþ¾¿ÿÿkñõúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ÿÿÿKÿý/ý/ý/ý/KÒõô½/Az^ð‚ô¼^^A¬Oˆ\ÎÉç딀ÖÈm ùp/ ¦“ÃÁ¿aøoØ~Ø~ß·íÿíû~ÿ~ÿ~ÿýÿ÷ÿþÿýÿÿÿÿÿÿÿÿ×þ¿ÿõÿׯÿ^¿_ú^—×¥ëõéxKÒð—¥áá/‚^APKÈj‹ÄB…;•àçb`x7 EI endstream endobj 261 0 obj <>stream 0 0 0 -1 87 173 d1 87 0 0 174 0 -1 cm BI /IM true /W 87 /H 174 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨™ÿÿÿa^×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüJ ÿù5@Vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿä3áéí§éýî¿öý÷ïï·ß¶û­¿ ¾Û[ ¬0ß`ÚÆ°Ö ,X0² @@ EI endstream endobj 262 0 obj <>stream 0 0 0 29 79 95 d1 79 0 0 66 0 29 cm BI /IM true /W 79 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID & `ÖD8 å@o>ŸF ¯ ƒ} ÜÔ.›­'ý¿V?ýõýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýW  ¼d'ÿÿòj Èi  EI endstream endobj 263 0 obj <>stream 0 0 0 75 21 122 d1 21 0 0 47 0 75 cm BI /IM true /W 21 /H 47 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¦\ƒÓïo}½½½öÿo~÷ïïîÿÿ%>ëZþ=u&«Öû]a… EI endstream endobj 264 0 obj <>stream 0 0 0 30 80 94 d1 80 0 0 64 0 30 cm BI /IM true /W 80 /H 64 /BPC 1 /D[1 0] /F/CCF /DP<> ID &ÿòj¦°°Ò[¥°×zí,6—im®Ýn–Ú[k¶—u¶–Ú[®Ú[µÖû[ZZZõ„¿Aë§Þ{Ò½&õ}&úoI½&õ½&úoIô›Õ¾¯I½ Ž¡å Áÿÿÿà EI endstream endobj 265 0 obj <> stream 40 0 0 0 0 0 d1 endstream endobj 266 0 obj <> stream 83 0 0 0 0 0 d1 endstream endobj 267 0 obj <>stream 0 0 0 -5 112 96 d1 112 0 0 101 0 -5 cm BI /IM true /W 112 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & x$<3—°jx ôðˆ‚z>“rj)ÃY?­ý?¯é7ÿÿ¯ÿV¿ÿÿÿÿúÿÿÿÿÿÿúÿÿ_¯ý/ý/KÒô¼%áä4âÃàø|§ø0ü~ðß·íýû~ßÿûÿ÷ÿÿÿÿÿýÿׯÿ^—þ—¥éxKÒðKÁ ((S³Pd+ P  EI endstream endobj 268 0 obj <>stream 0 0 0 -5 99 94 d1 99 0 0 99 0 -5 cm BI /IM true /W 99 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID ; eèÇMC°k~ ? û~öýý¿¿oÿ¿ÿ÷ÿïÿÿýÿ¯ÿ^¿_ú_ú_^—¥éxK  ˆ\.LÁ¾Vƒ/&@£ÍaškOì? û~ß·íû~ßÿ~ÿ~ÿÿÿÿÿÿÿÿëõÿ¯×¯×¥ëéz^ð‚ˆ¨P¡ANü3ÍCL@ EI endstream endobj 275 0 obj <> endobj 279 0 obj <> endobj 283 0 obj <> endobj 287 0 obj <> endobj 291 0 obj <> endobj 295 0 obj <> endobj 299 0 obj <> endobj 303 0 obj <>stream 0 0 0 29 78 122 d1 78 0 0 93 0 29 cm BI /IM true /W 78 /H 93 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨Š×ÿÿÈ]ÿÿÿÿÿÿÿÿÿü…×Â%Á¿ÂÐ~‰Äˆ ß7Ó ß ü7×Ó}7ÿ߿߿ÿûýÿÿÿÿÿÿÿ×ÿÿýzÿõÿ¯×¯ÿ]¥Ú÷]¥¦–ƒ `ˆÄYJ Â^Ñ…áŠö†ã2 Ђè€€ EI endstream endobj 304 0 obj <> endobj 308 0 obj <> endobj 312 0 obj <> endobj 316 0 obj <> endobj 320 0 obj <> endobj 324 0 obj <> endobj 328 0 obj <> endobj 332 0 obj <> endobj 336 0 obj <> endobj 340 0 obj <>stream 0 0 0 -5 108 94 d1 108 0 0 99 0 -5 cm BI /IM true /W 108 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;À×;8iƒ‡MC8f‡äÁø7á‡á¿ û~öý¿oÿoÛ÷ûû÷ÿÛûÿßïÿþýÿÿÿ¿ÿÿßÿþÿÿÿÿÿýÿ¯ÿÿõÿÿúýÿ×þ¿^¿_ú_ú_^¾—¥õëá/KÒô¼ôkà‚ˆ¨(PP§|ÄÐ@@ EI endstream endobj 341 0 obj <> stream 121 0 0 0 0 0 d1 endstream endobj 342 0 obj <>stream 0 0 0 30 77 123 d1 77 0 0 93 0 30 cm BI /IM true /W 77 /H 93 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡LÁfxAé蜟†˜o·‹ ÷·¾ÞßɪO÷´øa^>ßíþßþßéÿz÷¯é÷úéÿz÷¯5'þ¾“}?Þ¿MëôÞ¿Mëû}zúMÿÓzý7¯Óë}>·ÿMëôÞ¿MëôÞ¿úMôÿz‚ 6¿ÿð EI endstream endobj 343 0 obj <> stream 91 0 0 0 0 0 d1 endstream endobj 344 0 obj <>stream 0 0 0 -7 80 94 d1 80 0 0 101 0 -7 cm BI /IM true /W 80 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¹ÿÿÿúÍ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýr·ŸÿÿúίÇÿÿÿÿÿÈ5w„§éúýÿÚîýûûuÛíµ¶øaµ°ý‘…ƒ%ÉlVC4K ,†¡|‚¥  EI endstream endobj 345 0 obj <> stream 41 0 0 0 0 0 d1 endstream endobj 346 0 obj <> stream 88 0 0 0 0 0 d1 endstream endobj 347 0 obj <> stream 67 0 0 0 0 0 d1 endstream endobj 348 0 obj <> endobj 352 0 obj <> endobj 356 0 obj <> endobj 360 0 obj <> endobj 364 0 obj <> endobj 368 0 obj <> endobj 372 0 obj <> endobj 376 0 obj <> endobj 380 0 obj <> endobj 384 0 obj <>stream 0 0 0 30 108 95 d1 108 0 0 65 0 30 cm BI /IM true /W 108 /H 65 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÔxƒM?ÓÓý=~ÿO_»Õ{ý=~ïUïôõûÕ~jNŸõ½/ýºo]~›§ýoIÿî›×_¦ëý[ÒÿÛ¦õ×éºÿVô¿öé½cúiÿ½'þ›ÿÒký½/öŸÖô«ý½%þ¿Vô©ÿOIA dh¨ ÿÿÿà EI endstream endobj 385 0 obj <> stream 126 0 0 0 0 0 d1 endstream endobj 386 0 obj <> endobj 390 0 obj <> endobj 394 0 obj <> endobj 398 0 obj <> endobj 402 0 obj <> endobj 406 0 obj <> endobj 410 0 obj <> endobj 414 0 obj <> endobj 418 0 obj <> endobj 422 0 obj <> endobj 426 0 obj <> endobj 430 0 obj <>stream 0 0 0 0 67 96 d1 67 0 0 96 0 0 cm BI /IM true /W 67 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡˜C ©0ƒÁÓÂGPAôoV‚}[Òo«Öú}oýo¯_ýoßÿõú¿þ¿ÿÿÿ×ÿúÇWÿõWé]Ju^áIª¶¿i{i{ öNÂö+à Ø^¨܆?±ýÿÿo÷ ÑO ýí¯ÞëÝïíûýûmoì7Ý­†l>à a†–ÊqV¬5ƒ ,†–° EI endstream endobj 431 0 obj <> endobj 435 0 obj <>stream 0 0 0 -3 69 96 d1 69 0 0 99 0 -3 cm BI /IM true /W 69 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID & \ðkÂOO½ÿÿÿÿÿÿþÿ÷ÿßÿ÷ÿßûß÷ý¿ý÷ï~÷ý½ûßoö÷ïoo|®¿oÛöý¾ßïÛÝ¿o¿Ûí¾ ½‹ïûï¾ÿ½¾ûÿßåo‚먀 EI endstream endobj 436 0 obj <> endobj 440 0 obj <> endobj 444 0 obj <> endobj 448 0 obj <> endobj 452 0 obj <> endobj 456 0 obj <> endobj 460 0 obj <> endobj 464 0 obj <>stream 0 0 0 0 67 96 d1 67 0 0 96 0 0 cm BI /IM true /W 67 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡”t ¹ ðAàá ðŠpw @ÞH7 ŸI½&úoIþô¿o¯ÿ¿ãÿôýIª¯úì%ë¸^×p—avÂî—avÒÛ ¶Û a†» %†+k a¬ ´ÐZ OAðôFz7Óz7Óz á7ÂoKá7ÂøO×ÕõôÿõÿÒïÿõ¶¿î—k·[k¶—a-†Ã:[†,0²U@@ EI endstream endobj 465 0 obj <>stream 0 0 0 -4 88 94 d1 88 0 0 98 0 -4 cm BI /IM true /W 88 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID *¡©ÿ“PÁNÿÿÿÿÿÿÿÿÿÿÿü‚Žÿÿÿÿÿýÿ×ÿ__ à¼ÿÿÊpƒøýÿÿßÿÿ!£¿ÿúþ¼ÿÿ×ÿÿõúõÿÿ___K××Âúù¡C1DG×ð EI endstream endobj 466 0 obj <> endobj 470 0 obj <> endobj 474 0 obj <> endobj 478 0 obj <> endobj 482 0 obj <> endobj 486 0 obj <> endobj 490 0 obj <> endobj 494 0 obj <>stream 0 0 0 0 67 96 d1 67 0 0 96 0 0 cm BI /IM true /W 67 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡°R ƒÂƒÂD€ïA êß ½ßmû}·«ýûû{ßO¿µ{^+Åÿ¿þÿò 4òÄxAÞð›èêú7áßÐoÒî­ôŸ«é=~ÿ¥þ¯ÿ_ÿÿñÿÿ×ÿɪÿ_ÿõþÿ×~é¿Ýn–þÚ_[avëa„¶ÒÃ5Œ-ŠÃX`°ÂȪ  EI endstream endobj 495 0 obj <> endobj 499 0 obj <> endobj 503 0 obj <> endobj 507 0 obj <> endobj 511 0 obj <>stream 0 0 0 0 67 96 d1 67 0 0 96 0 0 cm BI /IM true /W 67 /H 96 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡–C ¹àðàéá†zMè Þ“zMé^¯ÓzßúMÿ­õëûÿ­ÿþ¿ý7ÿÿÿüwÿÿÿÿÿÿÿÿþMV¿ÿÿÿÿëýµÿýëÿþ·ýw®ýëµÞ¿ÛKm.ÒÝv[iaƒÅa…† C+X€ EI endstream endobj 512 0 obj <> stream 124 0 0 0 0 0 d1 endstream endobj 513 0 obj <>stream 0 0 0 56 43 69 d1 43 0 0 13 0 56 cm BI /IM true /W 43 /H 13 /BPC 1 /D[1 0] /F/CCF /DP<> ID ÿø€ EI endstream endobj 514 0 obj <> endobj 518 0 obj <> endobj 522 0 obj <> endobj 526 0 obj <> endobj 530 0 obj <> endobj 534 0 obj <> endobj 538 0 obj <> endobj 542 0 obj <> endobj 546 0 obj <> endobj 550 0 obj <> endobj 554 0 obj <> endobj 558 0 obj <> endobj 562 0 obj <> endobj 566 0 obj <> endobj 570 0 obj <> endobj 574 0 obj <>stream 0 0 0 -5 50 94 d1 50 0 0 99 0 -5 cm BI /IM true /W 50 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID üš‚å8/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâDÙ†”@ EI endstream endobj 575 0 obj <> stream 59 0 0 0 0 0 d1 endstream endobj 576 0 obj <> endobj 580 0 obj <> endobj 584 0 obj <> endobj 588 0 obj <> endobj 592 0 obj <> endobj 596 0 obj <> stream 90 0 0 0 0 0 d1 endstream endobj 597 0 obj <> stream 136 0 0 0 0 0 d1 endstream endobj 598 0 obj <> endobj 602 0 obj <> endobj 606 0 obj <> endobj 610 0 obj <> endobj 614 0 obj <> stream 73 0 0 0 0 0 d1 endstream endobj 615 0 obj <> endobj 619 0 obj <> stream 109 0 0 0 0 0 d1 endstream endobj 620 0 obj <> endobj 624 0 obj <> endobj 628 0 obj <> endobj 632 0 obj <>stream 0 0 0 -5 111 96 d1 111 0 0 101 0 -5 cm BI /IM true /W 111 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ¤jYD™Á<< ðƒÂ ý < D2ÈÒ è Þ‚ á&úoI½_I¾Ÿ[÷Òoý'û×÷ûÿ_߯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý$dT7ÿþf Yà1 EI endstream endobj 633 0 obj <> endobj 637 0 obj <>stream 0 0 0 -5 157 96 d1 157 0 0 101 0 -5 cm BI /IM true /W 157 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Èl ‚¼&}ú¯~·ëÝê¿÷z¯ýÞ«Ýëú÷z¯ÞŸëþšýèŒNS¯º¿ßzZ_¾Þ·ý:_ÞÞºýtú·ßZþôÿ}éi?¿}Zú½?ßzZ_¾ßßékûtÞ¿õ¥ûíéZþôÿ}éi~ûõ}ë¤þßzÿÓ¤ÿ}éiï«}õ¥ûï¬wÕ?½éWîÿÞ•?½ëýWûê·Õ>½ô¿Óê·Õ?÷ÿ¤“ÿzI§6KA¹ ÿÿÿç£< ðo EI endstream endobj 638 0 obj <> endobj 642 0 obj <> endobj 646 0 obj <> endobj 650 0 obj <> endobj 654 0 obj <> endobj 658 0 obj <> endobj 662 0 obj <> endobj 666 0 obj <> endobj 670 0 obj <> endobj 674 0 obj <> endobj 678 0 obj <> endobj 682 0 obj <> endobj 686 0 obj <> endobj 690 0 obj <> endobj 694 0 obj <> endobj 698 0 obj <> endobj 702 0 obj <> endobj 706 0 obj <> endobj 710 0 obj <> endobj 714 0 obj <> endobj 718 0 obj <> endobj 722 0 obj <> endobj 726 0 obj <> endobj 730 0 obj <> endobj 734 0 obj <> endobj 738 0 obj <> endobj 742 0 obj <>stream 0 0 0 9 93 148 d1 93 0 0 139 0 9 cm BI /IM true /W 93 /H 139 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡ªjÉ“ ¡| ð@ðƒÁ¢LƒÂ%À€ða–ôoD0Ôz ½z^‚aé?Mé^Ž Éáßméýý·{ÿÿÿ&©]ýv»\0¸kÿÿ_¥ÿÖ½~—Z_¥¥Ö–‚Ò aeÌ)๬˜ \!¦U/† ì=½¼0ÿaï°ÿo½ûÛþ÷ï óðAú~ƒoOÿ_¿[ÿþþ¿þ¿Úÿê¶—þl*à—n¶ÒípÃK†–4¶ ¶D¬1 a…†   !­T@ EI endstream endobj 743 0 obj <>stream 0 0 0 0 156 170 d1 156 0 0 170 0 0 cm BI /IM true /W 156 /H 170 /BPC 1 /D[1 0] /F/CCF /DP<> ID 2'ûù5À2ú °Qä„üðàþþßÃû~þÿûûûýûÿïïÿþÿ~ÿÿïÿ·ÿÿÿïÿÿ~ÿÿÿÿ~Cnoÿÿÿÿÿûÿÿ nkÿ_ÿÿ×ÿýõÿ×××Âø_ò ñÿÿÿÿ)¿Èfƒðïáÿðÿûÿïÿþÿÿÿ¿ÿþCZÿ¥ÿÿÿÿÿãÿõëÿÿúÿÿÿúýëÿþ¿úýzÿëÿ¯¯¯¯¯¥ëá}|Âø/‚ùqxÿþ  EI endstream endobj 744 0 obj <>stream 0 0 0 60 130 172 d1 130 0 0 112 0 60 cm BI /IM true /W 130 /H 112 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Ìx¡ýëÞ½ëúÞ½ëú§ýëÞ¿Þ½ëÞ‰5öÿÒý½/Û×éô¯ÛÿKöô¿o_§Öú½/ÛÒý½~Ÿ[ëöô¿oK÷ûÒ}o¯ÛÒý¿ôŸïIþõú}+÷ûÒý½/Û×éõ¾ŸïKöô¿oý'ûÒýô¯ïH û N$¤5¸oÿÿð EI endstream endobj 745 0 obj <> stream 99 0 0 0 0 0 d1 endstream endobj 746 0 obj <> endobj 750 0 obj <>stream 0 0 0 -5 112 94 d1 112 0 0 99 0 -5 cm BI /IM true /W 112 /H 99 /BPC 1 /D[1 0] /F/CCF /DP<> ID !a£ÿüš† pU!ö½/KÒÿÒô¾½}/ý/KÒúõô½/ý/KÒúõô¾½}/KþÒá¥Ú]×kÚ]¥ßÊtÒö^Ú^ßìW†½ý¯kÚð׿µí{û^ß·á¿oØ~ß·íøoÛö·íû~߆ý¿oØ~ß·á¿oØ~ß·íøoïÃ~ĉaÿÿü̳࣠EI endstream endobj 751 0 obj <> stream 148 0 0 0 0 0 d1 endstream endobj 752 0 obj <> endobj 756 0 obj <> endobj 760 0 obj <>stream 0 0 0 29 78 122 d1 78 0 0 93 0 29 cm BI /IM true /W 78 /H 93 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡·ÿÿ o¯ÿÿÿÿÿÿÿÿÿþ@ƾ‚ÂÂÂ5„~‚ ú7êôêú õ}'ÿIýô¿õÿëÿ_ÿúãÿÿÿÿÿþMSÿÿýþÿ÷û÷^ÿ]¿uÛ^ç—uöO¶|6—°a'ÃY±^O†.1òˆx€ EI endstream endobj 761 0 obj <> endobj 765 0 obj <> endobj 769 0 obj <> stream 57 0 0 0 0 0 d1 endstream endobj 770 0 obj <> endobj 774 0 obj <> stream 94 0 0 0 0 0 d1 endstream endobj 775 0 obj <> stream 145 0 0 0 0 0 d1 endstream endobj 776 0 obj <> endobj 780 0 obj <> endobj 784 0 obj <>stream 0 0 0 -6 102 96 d1 102 0 0 102 0 -6 cm BI /IM true /W 102 /H 102 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ¨u ¹ P,<<x@ðˆ€ÃÂ0ôxA0ôƒz7¤Þ“zMé7¤Þ·¤ßO­é7׫é7þ•ûëé?ßýz·ÿÿëÿ÷¯ÿÿÿÿÿÿÿÿÿëÿ[ýÿÿ½ÿ¥¿ßþõÚï_í¥þÚ_î–Ýv»¥·[im¥¶–Ú[im¥°ÂXl ¶ %†Aa‘ðÂÁ‚Á‚Èm €€ EI endstream endobj 785 0 obj <> stream 98 0 0 0 0 0 d1 endstream endobj 786 0 obj <> endobj 790 0 obj <> stream 56 0 0 0 0 0 d1 endstream endobj 791 0 obj <> stream 76 0 0 0 0 0 d1 endstream endobj 792 0 obj <> endobj 796 0 obj <> endobj 800 0 obj <>stream 0 0 0 30 60 94 d1 60 0 0 64 0 30 cm BI /IM true /W 60 /H 64 /BPC 1 /D[1 0] /F/CCF /DP<> ID ù5^S†~Ùí‡ì>þØ~ý¶÷ößo÷ÛöýþßoÛÿÛöþîïls[}íï·û{{{çëöûoÛöþý¾ßÛû÷í¾Ûÿ¶ûo†ß#‡Åþÿð EI endstream endobj 801 0 obj <> endobj 805 0 obj <> endobj 809 0 obj <>stream 0 0 0 -5 113 96 d1 113 0 0 101 0 -5 cm BI /IM true /W 113 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & pp(={×û×½O¿×½{×ôÿ½yž¯÷ÓëôÞ¿Mëýé?ß^¯Õêýz·þ“õz¿Þ“ÿÓzý7¯×«ôÞ¿W«õ~ú_·¯Ózýz·ÿMëõz¿Mëÿ¤ßý^¯Õêý~Þ¿Mëõêßý7¨N$l4Èoÿüø4gÁ¼@ EI endstream endobj 810 0 obj <> endobj 814 0 obj <>stream 0 0 0 8 99 145 d1 99 0 0 137 0 8 cm BI /IM true /W 99 /H 137 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡§ÿÿä Õá¯ÿÿÿÿÿÿÿÿÿÿÿø’°ßó@e%ÃA5OßïÛ÷öþý¿oïÛ÷öþýý¿¿oßÛû÷öþý¿oßÛû÷öþýý¿oïÛ÷ûöýþý¿oßÛû÷öý¿¿oÛû÷öþý¿¿oÛ÷ûö=÷ß÷ß÷ß÷ßß}ÿ}÷ý÷ý÷ßj  EI endstream endobj 815 0 obj <>stream 0 0 0 0 156 170 d1 156 0 0 170 0 0 cm BI /IM true /W 156 /H 170 /BPC 1 /D[1 0] /F/CCF /DP<> ID ;Ðÿüš‚` ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎë,íXm`ùØØiçb Ó‡Áòeòà~ ? ø7á¿aû~߆þýý¿oïßïÛÿïßïÿ¿ÿûÿÿÿ÷ÿïÿÿÿÿ_úÿÿÿýÿׯÿ^¿_ýzú_^¾—×¥éxKÒõð‚ð—‚^^A”KÈm‹ÄB‚¨()Ù k©ÙÙX)€ EI endstream endobj 816 0 obj <>stream 0 0 0 1 59 173 d1 59 0 0 172 0 1 cm BI /IM true /W 59 /H 172 /BPC 1 /D[1 0] /F/CCF /DP<> ID ÿ& ÁV Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý]pXÿÿ“[ÊÖ  EI endstream endobj 817 0 obj <>/Length 997>>stream 2Z@7†0­Zö½¯kû^×µý¯kÚþÔšás³0<,à£jˆ¨GdÀðQÂí/ÿÿ“ ¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÚ_ÿí¥ÿþÚ_ÿÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿûiÿÿí¥ÿþÚ_ÿí¥ÿÿÿ¶—ÿûiÿ¶—ÿÿþÅþ×ÿíÿþ×ÿíþ×ÿÿíþ×ÿíÿþ×ÿíþ×ÿÿíþ×ÿíÿþ×ÿíþ×ÿÿíþ×ÿíÿþ×ÿíþ×ÿÿíþ×ÿ¦×§ú¦×‚øAµäKùdzV¼ëd~Agdÿ ˲ւ!¥#ä2C/j±2- €Â! 7?íý¯ö¿Úÿû_íµÿö¿ÚÿkµÚídh2xaIHdÌ@ endstream endobj 818 0 obj <>stream 0 0 0 60 121 175 d1 121 0 0 115 0 60 cm BI /IM true /W 121 /H 115 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÖuÄÊHC\Œ0@òÊ„OAá4ô@ƒ†ž"Ξ‚ § ƒw¤Ú$îm é7^“i7ÓÓé7ßzzWýïŠûÿ¿ÿßÿþMWöÿûþÿý¼‚ƒ_ïíýûû~ßß·íøaû~Ãöü0ü0ü2` pÃðd3ðd 1Ã"£ä4Í0|‚¡.A•K ²S<"ÿÿÿü†~ðAøAú~ƒõôÿô×ÿ¯ÿÿÒÿÿþ¶—ªõØUÒ[ á%°’ÛKoá„¶ a¥† %°Â["ÂÃ°ÂØX0X0Y @<†ÕP EI endstream endobj 819 0 obj <>stream 0 0 0 59 121 223 d1 121 0 0 164 0 59 cm BI /IM true /W 121 /H 164 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÚEARCL+ е‚‚„FÂÁ”P€ðx@‡ ›Âz ½ Þ‚oI¾›ÒoIõ¾›Òõo¯î7ÿ¯ÿïù5Uÿuïô¶×uívÂ[avÂì0K 2 ¢»!MakÈlÙ>´µÒÒÒÐ]h.‚áh; 󹆭š‚¶Dá•…Â뮺ëúþ¿ÿ÷ýÿÈerÕöA7>ÉîƒÛ¨0ø‘€öo`ƒ¦ðoI‡¤ÿzMé7­õêßúßúMÿ¯÷ÿÿëÿÿÿÿÿÿÿÿÿï_ÿõ¿ÿk½}oúD3æÞôŸkïIí¤´»¥ÛAö†AöцöB °Å2žá‚ VAð`ƒY @0ÖA´¸abCWLàÛÐ EI endstream endobj 820 0 obj <> stream 130 0 0 0 0 0 d1 endstream endobj 821 0 obj <>stream 0 0 0 -7 109 94 d1 109 0 0 101 0 -7 cm BI /IM true /W 109 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID "a›ÿþMC’ˆ† ¶ÿKýµúïÝ~¶×ëoõúÛ_­¿×ëm~¶þ>·ëçÁ­mþ–ßëõ·ú[¯Ößéwî¿[¥þÚýmþ—ûkõ·úým¯Ößëõ¶¿[kÿÖÚýlÖýo×ïÖÿÖýoýo×í~Öð EI endstream endobj 822 0 obj <> endobj 823 0 obj <> endobj 827 0 obj <> endobj 831 0 obj <> endobj 835 0 obj <> endobj 839 0 obj <> stream 144 0 0 0 0 0 d1 endstream endobj 840 0 obj <>stream 0 0 0 63 136 173 d1 136 0 0 110 0 63 cm BI /IM true /W 136 /H 110 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨‚ƒWÿÿÿÿÈ p<†qd–Ò[imûin–Ú]øm.ÒÛKzÛ^ÒÛKn·]´¶ÒÛK¿m-´·Koí-´¶ÒÞ¶×m-´»öÒÝ-ŠÚý­­­ô´´¿KKK­tµý===?Ñ0ž•é7íé7¤úMôÞ·¤Þ“ûzMé7¥~Þ“zO¤Þ“zMé>­ôÞ•é7¤ß¾“zH= émδC(ÿÿÿÿÿ€€ EI endstream endobj 841 0 obj <>stream 0 0 0 0 83 98 d1 83 0 0 98 0 0 cm BI /IM true /W 83 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID )@\š€päÔC¨f†½Á¿aøoÛöýý¿oßïÛÿßïÿÿûÿÿÿ_ÿëõÿ¯×ׯ¥õëè/_…á//KÁÄ.T¾ ”sXlä2ôò $xaû~ö·ïíýûûûÿ÷ÿ¿ÿÿëÿ×ÿú_ú_ú^—þ—¥á/Aj a0‚ˆ¨(R²` EI endstream endobj 842 0 obj <>stream 0 0 0 0 85 104 d1 85 0 0 104 0 0 cm BI /IM true /W 85 /H 104 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡´H™ a $˜ ðáAw„0ôÂ7 ›ÂA½&ôzMé7¤Þ“é7¥ûzMé~úWï¥zý>¿Þ—ïׯ÷ú_û^:õÿñÿÿÿòj¿ÿÙèÞÿ×öÿþþ×öþ·÷Ýmýmýmö×öÖÚÛ[ko¶Ž-†“Û pÚOa„¸a¤ö áƒ'†!<0¸4òÂChŠ€€ EI endstream endobj 843 0 obj <> endobj 847 0 obj <>stream 0 0 0 0 90 98 d1 90 0 0 98 0 0 cm BI /IM true /W 90 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID +¦RÁ 895Ô ѦÐ0ü7á¿oÃÛöý¿oßÛûöýþýþý¿ÿöÿöÿÿïÿ¿ÿÿÿoÿÿÿÿÿÿÿÿÿÿþ½ÿÿþ½úÿÿKÿKÿý/¯_¯_Kë×Òúð—ׄ½/KÒðKÐZd3uÂ`‚ˆ… ¬˜€ EI endstream endobj 848 0 obj <>stream 0 0 0 0 84 98 d1 84 0 0 98 0 0 cm BI /IM true /W 84 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨ì2ÿÞD¬ƒH<!«_@û‡ðþß¿¿¿¿¿ÿ~ÿûÿÿ·ÿÿûÿÿßÿù ÈÿÿïÿÈfšÿ×ÿÿõÿ×Âø^?ÿþPþADýýýÿ÷ÿÿÿÿò/úÿÿñýÿÿ¯ýÿ×ÿýô½ð¾¾UÓ!§VF †PL­£ÿà EI endstream endobj 849 0 obj <>stream 0 0 0 0 78 98 d1 78 0 0 98 0 0 cm BI /IM true /W 78 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨”·ÿÈ‚0`ºÚÿÿÿÿÿÿÿÿÿÿÿòwÿÿÿÿÿÿëÿþ¾¿ø_ ¾¼ÿÊoOÿ÷ÿÿÿÿÿÁ~¼úÿÿ_ÿÿëÿ_ýÿ××ÿK××ÂêL#@ÀL­Óÿà EI endstream endobj 850 0 obj <> endobj 854 0 obj <>stream 0 0 0 0 94 104 d1 94 0 0 104 0 0 cm BI /IM true /W 94 /H 104 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¡´C y bù ,dŒ ×Ô †¸@µÐ Ã\ ƒ~‚¸IµÐMúLz ô½'Òô½~ŸKÒÿÒÿÒõúõÿÒÿë×õÿPŸDÔy ¡××È ÿÿÿÿ“UÿþÈF÷ÿ¯ûÿïö¿íþ»ýû®ßë·úíûkþÚí®Úí®ß¶Ž.ÃIöÂ^IöKà 'Ø0KÃO†!>^ >CXCä6ˆ¨€ EI endstream endobj 855 0 obj <>stream 0 0 0 0 37 98 d1 37 0 0 98 0 0 cm BI /IM true /W 37 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID òj!$/Úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý?Á‰0ð EI endstream endobj 856 0 obj <> endobj 860 0 obj <>stream 0 0 0 0 55 101 d1 55 0 0 101 0 0 cm BI /IM true /W 55 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Á fÁ€Äz'ƒÂ>=ÐMé7¤Þ•ôÞ­õèœ>þïø·þþMWëßÚöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú÷hÎ+ÿ EI endstream endobj 861 0 obj <>stream 0 0 0 0 95 98 d1 95 0 0 98 0 0 cm BI /IM true /W 95 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨Š†_ÿüˆ0ƒ`<& Ø[Uÿ×¥õéézú_^¿^—¥ÿ¥ëõézýz^¿^—¯×¥Ú÷]¥Ú÷\¡4½µöëÛKÛý´½´½µöëÛ_n½´½Úö½ý¯kÃûûûßáøoïÃøaÿá‡ÿ†·íû~ß·íû~ß·íû~ß·÷íü?‡§~à„(T"OÿÿÀ@ EI endstream endobj 862 0 obj <>stream 0 0 0 0 111 98 d1 111 0 0 98 0 0 cm BI /IM true /W 111 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID @ÜÀ7Óÿ\š™ Úð`°Âà ZÚ¿¥}ÿïõö¿ïôN¿÷ú¿õÿ·ý­ÿ¿é÷þÿ¥ÿ·úÿ×þßéíþ¿õÿßé?ýÿ¿é÷ý?ëÿßêÿ×þßé÷ú¿õÿ·ú_ÿÿ¤ÿ÷ý?ëÿßé?ÿþßéÿû¥ÿ·úÿ×þßé÷þÿ¥ÿßûþ—þßéÿû¥ÿ·úÿ×þßé÷þÿ¥ú÷ý?¡ÅáaÆÊ°ÝwX€ EI endstream endobj 863 0 obj <>stream 0 0 0 0 90 98 d1 90 0 0 98 0 0 cm BI /IM true /W 90 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID &¨˜SõÉ'\0^]¥Úýv—ÿ__ýõõÿÑ!ý/Òÿý/Òÿý/Òÿý/ÿÒý¯Òý¯Òý¯Òÿý/Òÿý/×úý/×úý/×úý/ÿÒþ¿_Òÿý/×úý/×úý/×úý/ÿÒý/ÿÒý¯Òý¯Òý¯ÒOÿÒøþ“é?<$R²`_׬@ EI endstream endobj 864 0 obj <>stream 0 0 0 0 92 104 d1 92 0 0 104 0 0 cm BI /IM true /W 92 /H 104 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ØHÉ A£Aà‰àôÂA‡ ƒ&o 7¤Þ‚oVô›Ò½&ô›ÿI¾›ÖôŸÛ×Ò¿~¯WÖúþôŸÿ½_þ¯ýú¿ÿûÿÿÿòj«ÿ_ÿ¿ßÿ¥þßõ¿ëõ·ú[ÖëÝn½Öémþ–Ú[~év–Ú[u¶Û¬6ÛAl4°ØKa„a† Ã:,1 !¨# ØD@ EI endstream endobj 865 0 obj <>stream 0 0 0 0 79 98 d1 79 0 0 98 0 0 cm BI /IM true /W 79 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID "¡·ù5§Ham_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉh(Áð| ä3tðoÃÛðß·íûýûûÿ÷ïÿÿÿÿëÿý~¿ÿÒÿë×ëÒô½/KÂ^Ó ¢¸ˆPP¤” € EI endstream endobj 866 0 obj <> endobj 870 0 obj <>stream 0 0 0 0 94 101 d1 94 0 0 101 0 0 cm BI /IM true /W 94 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & xsA$\'" ÔHž ÞoK“Q pÔ·† ŸuúJÿ_ûÿÒÿüƒs_ÿÿÿÿõÿÿÿÿ×ÿÿÿÿýzýzýz^¿^—„½á/ϧ\>”€ü†aðÃðß°ý¿oÛû÷ûöÿû÷ÿïÿÿÿÿÿúÿÿKÿý/¯_¯KÒð—¥á/Ai1®!¢¸ˆPPR¤   EI endstream endobj 871 0 obj <>stream 0 0 0 0 62 104 d1 62 0 0 104 0 0 cm BI /IM true /W 62 /H 104 /BPC 1 /D[1 0] /F/CCF /DP<> ID 0 D†Á–AuxAØAè ØF =°‚ ð›Šáêééºû§«Þ¾ëÿú¿ÿ]/Ö§ñôµýtµÂX\%Ô‚ä3Iä à–AL%„–\, Z A•@¹T F°mÂÐ]h.µ!´ý__¬Wõþ¿õëòj¿kþëÿk¿Úî½®þØ]´{í¥ì0“ì0—¶O²¯ B|0¼Oƒ(ø€ EI endstream endobj 872 0 obj <>stream 0 0 0 0 90 98 d1 90 0 0 98 0 0 cm BI /IM true /W 90 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Ü…ÏÿÓ/ƒµµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóa©ÿɪÿÿ¯ÿÿÿïÿÿý~½ÿþÿú÷ÿ¯úðõý.¼<.Ρ±Ù¯ÿÿÀ@ EI endstream endobj 873 0 obj <>stream 0 0 0 0 90 101 d1 90 0 0 101 0 0 cm BI /IM true /W 90 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÚPÐ@ð@ðƒÂô0ð}zAô˜z õoI¾½[Òo§Öýô¿oKû÷×ÿß«ÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿ×ÓÓ¿<0@ò…Hÿþ  EI endstream endobj 874 0 obj <>stream 0 0 0 0 98 101 d1 98 0 0 101 0 0 cm BI /IM true /W 98 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ®l÷¯éÿzÿz÷¯÷¯(Oß_«Õþú}~¯_ß«ÕÿÒ¿~¯Wÿ«Õúõoþ¯ßKöõú¿}~¯Wûéõú½_ï¯WÿJýú½_þ¯Wêõú½_¯Û×êõúo_«Õÿêõú½_«Õþúõ¿õOÐzh<aL °ßþ  EI endstream endobj 875 0 obj <> endobj 879 0 obj <>stream 0 0 0 0 138 101 d1 138 0 0 101 0 0 cm BI /IM true /W 138 /H 101 /BPC 1 /D[1 0] /F/CCF /DP<> ID & Ú`ƒfýWï¿_´ÿÕîõý>ý^ï_Óå Ê_~ŸÿJþÿWWêûþŸWþµ¿ºõ÷éÖþë÷ß]o«ýzu¾®¿ÿ]_¦ûþ½]_««ÿõ÷éÖþëÕÕú¾ÿ¯_ýÕ¾®½}úuþêÿý]_««×ß§_ú¿¿×ß§[û¯WWëïî½}úu¿ºõÕúû«ÿ}Xïªÿ}'þ¯ÿ]ú«ÿ×[ê½{é«×O´ÓÓL ðƒ0ƒÊ!°l†Q?ÿÿ€€ EI endstream endobj 880 0 obj <>stream 0 0 0 0 98 98 d1 98 0 0 98 0 0 cm BI /IM true /W 98 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID A§ÿ“R,A‚Á Öõ†«zÝwKm/öÒÛKn½vÒÛý-´¶ÿKm-¿ÒÛKoô¶ÒÛ¯]´¶ý´½-´¶ë×n¶×ÒÛKoâ¶·ë¯ÒÒý-{Ó×’7«z_MêÞ•é?·¥ôÞ­ézMûzMé?Þ“z_·¤Þ“ýé7¤ßúMé_·¥zIë}ÃÂa Î&ÿþ  EI endstream endobj 881 0 obj <> endobj 885 0 obj <> endobj 889 0 obj <>stream 0 0 0 0 100 98 d1 100 0 0 98 0 0 cm BI /IM true /W 100 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ÔEA«ÿäSá…µû_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿú§§ú|‘õ½&ú}oI¿ô›÷Ò½&ÿÒo¦õô›éõ¾›Õô¯¦õ}+öô¾›×Òo¦õô›÷Ò½&ýô¯I¿ô›öô¾›Öô¯ïT„LJ°ßþ  EI endstream endobj 890 0 obj <>stream 0 0 0 0 70 98 d1 70 0 0 98 0 0 cm BI /IM true /W 70 /H 98 /BPC 1 /D[1 0] /F/CCF /DP<> ID ù5D€Ìík/ä5ªÛ¸~ßl?ûmöû¾ßï·í¿ûo¿·÷îûwû}¿öÿÛ÷ß¶ûîßííþß{íþÞßíþÞßí÷¾ßííþÞx¿o¿Ûöÿöÿí½ÛÿÛîýûoïß¶ûûo»íûo‡|7àÛå@fø½ÿà EI endstream endobj 891 0 obj <> endobj 88 0 obj <> endobj 87 0 obj <>stream xœyXTWóþ]Wî½e½jvÁ^5£±¢hb¯Ø©‚"½#ÂRvwv—Ò«Š(¬ "®XcMµÅè—¦‰I4êcLæ’C~ùŸ»hú÷ÿ•g؇½‡sÎ̼óÎ;³2¦kF&“õšïº`®ËÜÑs»¬?Núd8@&ì"¾('§‰i`WÃÏólšžj'ÚõA-¾Ò›‘Ëdóm˜¾Å? ÒiÄœ‘Nã§L™ì4;È/|‹W°Ób¯È¿ ¯HúÇ6§•!>[ü"ã^rš½m›Ó é?"œVøEø…Gûùvž;'$(4*Ò/Üiqˆ¯_x0èç-šì³v±K|ˆïº%sBýÖ/¶y™k¸ÿòy+æGnYùFÔÖUoF®^³ÍËmal÷šczŽòÒà©ãÆOxeâ¤Qƒ^}AÞ(ënf‚0tÏ±Ì f=³”™ËLa^b3˜eŒ+3•y™Â,gæ1¯3ã˜¡Ì f>3žƬdÞ`&0ÙUÌ›Ì+Ìf5³€™ÈŒdܘ…Ì$f³†YļʌfÖ2‹f23†YÇ,aæ0¯1ALOz\/¦?cËte0};FÁôe¦óÃØËº3ó©óŽnuFæ"3w±ërNî!ÿ¤ë„®›ž6:Ö‰­æ^âŠ9‘àßê6£[m÷žÝ»¿ûBM¿g{†ôü¢—Éö5ÛDÛk½ÓzÿÒÇ«ÏvÎvÞv¾Š»}'÷½!¼ ìþ«_¹ýTû[kž:¦:žé¿ªÿ¶þOظ?pè@ýÀ«/º¾ø•r†òSU’걓ÚyÔ¯²¤ÕËzýÚ¥©¾,â]‹ „,òv{Ü-¸³©óâÉ2ø!â]`a7i‰ ÖÃ&~&Þ™Ž»„q¯p½~•û…2`ÁaqA… ÚwËÅàö‰‚zWÄCd¤¦ÅCÇ¿4 ÚÔ™ÀG»³ ÇŒõpÞ‚ZÞÂé&ÂNƒ)ß`PÇž6XÉ^ ÃlÆÐe¦o¡šàKh¤ËFqä¾( KêmH,K¯îñxq7‹ç,2@N.šÄBN‘)ç {Fè‚ôáÆhïÎ[!IŸ‘¬×«GôDÕ6§-ìVÝx½ž^ÑÃèM½ÃáÒçÈ QçÏÇ 3¤šò2«‹ ‘ßQ³%$8Öw­ÅûÂÍs—ÎîVÒó¿TS³Ÿñ7Û]F=‘µW´¶Zwná‚ñ 5ð¼nž·ÌC?ewÚÞn¨Œž©$Õóþ¾ {ºúÐðÑn+Ö†)7‘áȬTwîRøªÈ%êcÙ¯C5M¢mµµ/º`9vˆ£…¸íºhHá75Æî®ßWyøá³—“ù³©‘~‡åíQâ¯B^Q.T™Je†Rà+-¬~£.„Bs%l–`_ »aW².(ðÉR²ÇlÂã6·%زÂ~üsØ;d6$††‘3›Q´À8(ÁF†1\¯Ÿ~pÆ)9žnŸ$¨ õ†hzá¸ÿ v+81½ã³ü$ƒ¾wC^µJ¼ÁA•Á°ÇTc2J9\kaý´+¨)^°¼é%ki—êËtuZƒ¢ø)µä3 žj‹ø³D®cEm›¼=§}¼Pyq):]ZªòÍe‹¿Q6Ÿf˜‘Œ%#‰ñBúŽF\Š6h‹\Eš!>1âõª4ÒŸô\2 ¦Ãäš5ÝÏ&Ý€¯à-2o¿÷î{_œ¤ ogV…)Ö «~—Á¸KÕ‰ âfAg³(;ãÓD9–¡`)4úÚ+n`(~*@¹ÁPTÔÔ|2» ø÷ßZB숳ëš;Üá´‡J½ PÎ_¦ÙBv ×p$¹xõýW¨BÇq÷ÉYnÛâ"UŠoÛ~G–ŸªÃðW‚¦w±íKéíÇ©ú­\ô¦ P•»ë5××Wm6»•Í£A›8qéCú7 'á„–KËb!=^—¾]£ŠÞ°"p]á¬GǪý]‡ ‡+÷ïjj*¬ìFboÎ:qî2œo[d%1äîí}„ÜBjLOI-ZÙQ@óWCó7ß¿ˆNÔ¦~lÇŽÏS“@ jǰ|¨RŠ{h  )œJä;H/âEv¢US¾éÎmõáv¶É×Ù8VÞބ߸ ¥ N∊Œ ›‰:Q"ÁxTâPôRvt%…eà²Çû£­—R¯ÂxÇtûÈÍ߯=ïÀå¦7.ÌœóÁ5c‚×<×¨Õ ¥VØcæ71P´ÇárÞ®:åÃ×á( —­JF¡@Ö«:\ÜYÔvÜ(©ãÞƒÏbÛ\×æÎ‡—€È’Ü=6Ìeûik«èH輦Š?óÆ¿Äi8H€8Ð&Dû,[«~ñÒs舃>´\øèØ´u*tí¡Èï{snÓlÛVî]JÉdÈêçÇQÕÖZÔt”2Íßñ ÛäJùý‰CÍv7¾ŠÌ]´µW<Änaž;Ûhh5…ƒÔ/R}˜ˆO³p”Ê{>f±ËGyµYY ËQ&¨Sc!–÷lŒÝµw_eóaÿÖé# ãEl”Ãf¹ßrЮÿczJn3¶Y«È@2j´}8V:é0žЕ¥Pæ¯a7ì2â6™ªê˜ô\™Q–xD©¦u’ CϧþiHlÃ,Ž‚™sæÂ 2ZJµLãèAÌ?Õ)'QÜù[…`Q†L ‹)|Æ`ãöA¾çl•ÜÙÙ)ž£”«0ǰ8 v¹”ž¼…݆›_dÒ->£·h·£“Ý*É¢»ïÄÁ«ÎHYü#ö²§"çt?ê™9Ü•ZìõR¯ÛÁ¼÷¾˜ºº}•M§V×­qõY·(R©hEŽLýƒ¢Ñø“ie"Í8æÁU3F6ÛÁ}W”ã\”×®wì?©1W¯Àû­­ðþ—_ÂðÆ+*Ò+Y8qBWK³gÈ™[W,áûJT{K*]º.4|xiÜ®]¥å5Õñܵ›”q…^•³©'†¬šîê]á½/R Ù ѹ¾)W´3‰Z—èEýמ™…îèzëü•½©o¿Ñ \¹g)Œ†0Øé†M9êƒPù™ÅÙ¹ü%²ZÀnl=ÚÀbßÕ¤é±þèÑ oC‘ª3U‰ŽÝÛô•YÔK ;mÍØHSH¼[&àkï´à@ÿ·äõ¤P† Uû ¹MÊ=ĦbÚ=à¿oÄîäBY\‚.1M¯Òø-ÖÇC$ïyžäîˆíy-Ž[Ta}{àêÉwŠ[á4ÜŠ9öêÁ7L“`­|däè7£öûŸzøµ·lÐÔÆtšG!\” üª´}…»ëÊ÷ïiP/ªpu­Xpµ«žáêe ¾H¡åÐ>Mèøþ9J(VÃh£¶À ¬°ú8÷ ï7¤¥R¤­Ã*t’V=£˜t£H£À:W’¥1‹öÙÁa¯«˜DIÀòG‹°9gAXøK÷ üÆÁàUYJC‚!½øȪV}ÌIu,C±¾Ê°Ù>ÀJ/ö>¡ñª¦€ƒš›;xÅ]³æFâ²þ³^†(ç°ë-IÊô¢tØ|h"UDÆÅBJYŽŠ+•´ð›ŒGOBðõøà°–˜Æ€=*ߺÀìé;ùçÍÂ3ó¼’Y;†§"é÷{°v¹_”R÷Ø?HÅÃŽãÿÐ3üÿ› 5£6‡[°ÞŒõü)8Ê Ç~}Ü^±Íø‹€õØÃIÆéKVÂkdŠ GG Èï=ñ.¼Ç?&]>'Ë”½£”Nýr˜RJ§ìÅzNqœÂ·ˆ¯~˾ˆxÖ_Ùr$êR­µ?íüª¤ŠöÑúäD½*Ý=8*–BÊÕôú‚ÔËú¬WVÕ{–HwÕŽx¬¶øW¢¯Eìn±“JÓ(´¾Í^‘Ðî|J¨½–|ì,VáÆ-\€v"Õ/ËiMX-5£C†q ==Ø72,!P“`RÝúKžg¯Â×€]+Îhk:~óÀøéïJ¹?Ê—ssò×PY£'/“áćlÀ¡äe,ØÿÄxé8…´ìääËT üjÁ™²Oi»[ä$õJÃ,4çVº³úáëGŒÐòþŸ’ÝœÓQW?j={]yÊ}-7?0"d9¼S-)ô™a§¬½ã]gWãHw©fÝÃHÑM .RäÏÿFvõ†6ãaØ 'tf÷Åœâq¾ø¾pÄ¿ÁË3 ÀÓ³1 å°¹áÈ3M%ÛµØÁÑñòíöŠëâ0q‚@†Öûä­l€‹Ž-{.}÷ñã-d`µ23tÏSZª×'«•›–]·:a̜уìßX¥j[߆²^qïËØRmUtqB-å3~CؼÁ3ɘ ™ªÔ—AVÔóôX`M<£1'Wyôè{ëïišÁ§\B›Ç(Ÿúɸr•Uúâ! >>|ˆƒäíiTÐfŠ*Ô‘´Ëô„‘ÏÆ ¤|ˆ…ô ÷×'Vlr-wx?$‡þé ÷¼áð?Eð¼uïT ‘â‚kÂt]³m,œµëP´Š´_ø{ýYÉMYëæ2C[{Z‰÷ÿôdçôIÔ¿w]ƒ[G•AO¼e1`ŸÃ4ÌÖCž~&.ܹR¨‚b]U$B4ßáÌ­K˜³t{ª13AY^”U Å|cØn¿ðPÿ¶|zçÛ“?*E5GÛÇ×»¶4z>}Kcc‹²W{3%—[çdÔ¡iÔ“©”b#Û' ¿Lb£­J1mò?Á!Àßì¸Eƺ³§M´>ž§/úvZòÊXñÖG†ü×ó ÛI®Íž÷Ö, –ÃJýÍHZÇ6R÷K­²Ôý¬;×L|”¾Y{Ârò,£RìM;ñDçx&»(³s<® þãx¦¼N›ª}z²ŠðÄD¸ëÇ3s:z†ï„àX ù¦üÊg°Sˆ­¡¡|2¤3üÐE¨«ÎÍ®(jðjðÚï•—TZ>%•îÜ^ã†,0Cƒ¾AÇ[â9OÐf&–éèï€ýä弎.TNKv(,0F¬ ŸI››J–“‘âÆ?v¢ÇiJRÑwÀ`1šá³æé j{¥dN!kgfîy)¨‘º }u˜»1JrX^›^­ÕjôZÕ ’GXÜoó–… Ô¯ÑQ[½ŒÛéšó\å:Ð2¤uÓÈ*‡AX -óÖyë½al2n±.ñÝsâ3“kÁ±2ósJÄB‡IáŸ>ãŸóªx÷ŒŒÖX9F¶/þ)J§û ÇŒÕ5< S——mHã\ºÇšiªv›}p¢Tœ£Åî7…m°ñå1¶¢jª!QµÄ@!XÍÓºqwî»dä Ò+ã•總”Ê=Ùû …Àßhôš©ÚBKÓ\-ÉI!CûÆÞq—?¶4®RÆãxa 7úåÄðµ>G(>&7);G©•í¬äà³òöXñ!{gfÞuàË)Rôt¡àC‘â+Í òþIÚtêaâѱl#lîKpmÏM¶ ¾á°îYn\fêp,¡/¨‘ê­Æëöïc_¹'N(s¸W•I•ƱÔÂúPP¦ƒÌéœòí¤Ê¦6½$#ɧí`É%¼þ¿àâÍÜwŸ¡7©ÉҀΤqŒKà%ÖøÊ:Ñ»lsn4“Jþ˜Ö”;.Èñߨ§2ûí,ÊÎùLÊÍÝ}:åuÆ jEP¨+LË »gdLë09›& ¦_¤ „@Ê[颫åßEÄž õZÜha-!»Ô`¬7U+¡D¢‰P}€Îƒ"kq'²jáÔ©É¬Ž•ÄUô°y !x¬ÁÓ¬¾Ã5;“äézŠi¿È²·ÿÆÙ%è"º9 K‡ÛŸ>ýM„ST}ˆŠrÚ·Sì/DûÁRÍøù@¿¿mÚßàj²!@E>ø;mˆ£92WCË“tŽd8«èxÄ}þÁÁoê*Ó«•ñšÐxðá}ëÂÌêj›Onz‡t!½É_ÒM9œööä‰Ä;Y·Jœã(;O—ãÖ !•ȸEÇiÒµZÚ&$ç?½ƒª¶œ]¾q[€§Ïn¿û*JM&å¬ÁP³L²e3¥<±ŽR^Š~UF¤Ñ»iŒyaTó´³|Ñ›pªg§ÿÍjíæúœ#7©¶}Äýð°ìíªÝZ5X§S&'ivÀvHÊŒ.IÌÊ  ¾&”´zº<¤Æœ“ãUZƒ’s£8ÚŸ«[*±O›`!I&ƒFL%ý‰ò߳жђs堒Ƚ…1pã»GðñOç«Ý’3U…[i“°…_6tòsÕmuö89&ßþ®£¬É-Ťá"N¾ˆ Ò÷YWäâ×ȘÍ×CýÞ`HR‘¶ 'Ûàr¶°öÖoƒy½…™™Ò˜.DZ8©86*=>1C9™ÔØUÿùQ6›° ¶ÕA¡ SØõd² YÎ&Cжz ½Îkìt’¥Óè4ê˜P˜P^™UR˜©¼»mpÕ?>"£ñKÁz·UÖÝ~3~3\ìòwËIó?¨J8³øuçÀ3VùïÂkÂC=¦ ÑèIÊȲ5˜fÄøï”$XXY•x=å$üg༛{²ðî•ü*‹šcË7•ng˜+a\Úš/-ÚÒô†"åH… Gá rü©].TA~˜Zi)Ê+†@4ð1îl œ1œ/ç;ŠˆÊ;búÚèëÇΓ„2ª±ñ,:”´Îœ‡J¹X„á‚;«IY¸#M­™E1ËÓdµ:ÙÒºÙÏß±À·Å§ÂåÊëgásæ%zÎ Ó¾îYz°µvßs« 2 ÊÆ=GrëÿÌ´pk¢žØÖ¨¼u:}º>Y¯K¦$ èPÇåC™ò‹2¹Ö†[“¹wƒj^m-4ó­õ›¼B׎¸œý»¯Ïß¡ ŸÒêZ”YD× ;lÆ>TƒÑ*õX\Žã„‡–Qâv·.+$Z¯OHR’ï;Þ´qÇf*3»Jükë7¯_<ûæUqþï8‹€oÛX ¿ˆqˆù+ìMÍîÿÚ)ÜŠƒ¤Œ.ÂrÓî‘ÁnÚ@w%:p{Ò t ´j ûmjstIZ*øÔªQnO˜ nåay)&½A üPoW‘VŽêôªÆÌÜå¡£§ó›¿ ¯¼®RüìÃIˆEYg½”fc] 5þ”gqDš”%¯Þz{ãÄG_a/Én<_)§ˆšvW.· ;“óôYÀWÔ”×ÕE礘TĹ ÛòL•9PçXQ£IÑ¥P7ؾT…}M%`„,ǺÐüøøPuH:-Û•U¤/±½—”—bÔ€cLDlppeZžV…Îë‰óúmt;×ÄVdçó •h{/ŠôÕn§`Iw Þ\Zº»`OVZKF­2ñ&ÍÊ.ëÏÇϹÖÇ8KNËÖ9ACºº®ŠŠÏÐfh!ÍÊÿE(»N—7¿õ[¨ªÈ-.QbV¿ÿùbkÄð‰ùöÞ%áT‰K°´Wtà"üV(çÙÊ–œâËióE(ƒmu¤z\(ñ[ªCªÙuð’×ÛRž2‰dQ†iy¯7ϳÌü(â ­êÁ§´¹pvôŒZ 3½TOÉÛÂ=”Z²}\‡2ûœ¶œùf ³‡IÕ«üÚå¿V¯¯Ñ–0i–ÒÍBl³È}žY–›©×gÿuVÞ²ùÈô€åéAîJ¯Æ•%}¹Gû‘îÿ}}ûËhþy}ûü½ƒ_×Wi2 ”Z]hl†øœè²$Þ™ë¥.hw) ÙyèQÉ’9œ¥;²/(»w\Ñ£[SNÈîéÑÓУÃü?ô§•/ endstream endobj 892 0 obj 7071 endobj 85 0 obj <> endobj 84 0 obj <>stream xœ¥–ylwÇgâÄùA¹WÒ…Ý (вeéRP¸á ,IC !8ÎÇqÇGâ#¶ãgÇW_œ8$& HB¹D»(Ç–RqvWªºí-Úm÷7hX±“”EÕj¥ªª~i=½ßïû¾ïó†$âã’$ÇoKI[›š<MêÎËF^Ìb~M23☙< Û8#þ»§Ú„茱“§àœÉxõD¼xÁ#Éõ›Þ[S*‘KóÅy2áÜ5ó„K–/_&L.Iós²K„©Ù²$NIÜ‘øeŽ™ñœŒ> Nx÷È$„ƒc$³œùVàêr4?ÔÌoõ@°¹Þ®y?ÃYtìµdP@…Ê­]!Pèt zšMzÑt I^Ë}tƒŸf$ü0X,ÎÖû8ºÕÞè;ò©@o¨“‰2™Ìf´`Ù–Ç®4‹¯ h­Ð V›MxÎËþÛ6ˆáÝ1fe€ÄEx¬ gS¾jŸ±Î\k†*d°k›Gmp„ꄘ1 Èá…§Öb¤«-UÏåí:9 Ö¶>„#ü »R/¯ÐA’‚Û_ƒ¥Ö{¼ß=ô1è5v²û!äUƒ"Ýì:l¢W2ÿ6…À.ƒ¤J04 Ä–={W€÷ãG'ØG œXBéMwÜï‰pkþÊcäÌxA‰NS5HÑRs¸õXËàµu¡¬É­Ù ‡ßÅ<ü»»_y\*¿Ö`2éôÔ–ÕK«3edµ?}æ2Ý÷Á`¸Z¡ßÐZÄ)—ùÆ$M„¡#xÿ wyOɧ ›Õ 6ð)Ìuf–ÐNW›Õf¨D\5<ƒ ×š Á¨¢ÒØ*Yw~0’Ø ì¯ØYìëÂ;î\=? О̪Dáˆ/këõ~È£ÜÜ ­§T»k¶å*5v´¶Úƒ–FzC‡@WTQ.«Ø/.2(eÉúÏ<Œã"èλûÝð,Õ˜ÌFÎ/uÉà%œ0ŸáÀ ÷ájA?Î<ùBz×:6ž}k »vö•?`¿õÙä _È‘Rzq8êˆ:;hWDp/ÂÈêt2*Ïc—Â. ù]îçš óz„d¦}ÎüE`9‚ÜÕÖÒêl Ü:-Ðe+*5Z9W‘ÒP½çPÔ{âƒÔƒÛ$»6î w{JaT”*¥•Š-PÔp´X"Nªõæ¡>ÎQQ×V«Óuy´V¬kÅ&¥FdT*´y G~/äñ»lT£³)frõ"¿è¿©‰ =Äó?鋇ñâa“Ì ¡¡LeHí¬9ìît ^ýcx;;§€%¼sOy\O h/i I¤«ØqEÛý•Tw“£ZÐ!•·R"­ÊÞz%÷K¼ª?Ý¡Ž”©’6©}Ws±c¯ N ƒ­×¿÷Ä~ŠÛ5°˜sÌø^ ÏÜâá~†|Ã?èæÌ] z?†_³yÁ ¶¤ƒ*·<_W m Dì‚„¹ü—mû%=Ûa¨=è“R‡ Ïaâ*¦ün5èæU=µgÖn…P>oþÁ#/{õB ‘Oo3OM1‡ó @ „šôv(ÛÈ•.öý/=Œ#~¥·±Úö.ÿ2V»ŽÄ%ýdÜÿ¥ŽÑªñôœ´A/Ý §Œ=€œÞу×HŠÁkktƒ…¾Ã ø.?…õü¼8알v#ùõm¼þÞù Ù„“õef%Ô™+ª Õ iA1´µ¼çÜÙðÕî/h‡ÏÖ‡ÐÙœ®÷æf±3jF<æv€§‘Šbò´¿ P««®B¦WÈ3é¼EµïCšóXr30h>Aunÿ¸¾îÀ™‹G¯wá©p }šÓ¨/++“ª\z{=¨j*ƒ•,g—nf*Þã¾sÄtÑí8¬Ö&ç÷ دÎWY¨-Q©e„*Ì)&Q`óx….e&ßd¦¤'r}b@¿`u„é í?ÿÞulºËÚyõ£Ìûí³©Z1È@4ëÚοà‰x žƒóíæá»² ä2Êó ²‹c×Îǯ:šéŽÁóCg ³2³JÙxé:w]FY!Œô±$YÂþ)ˆ“q"Ù'ðpµGP³~ÿ¶­™jÙ ¤wêœ< Ã{j"yûKÄEAåѶ&§ÃõBÞªÎèã¿G˜iíäåû¸ïcÇW)l€¥ 3 ²,5\“G¡ 5ׇ‹óå%y¿Ç$üþɧÿ¸EÝÃc|x ¡‡L²v6·¦²óÓcl<<ºp¥=L±‹6 Þ4?ò ã‰Ç.оðеG€†ºó6V›^K{‡–æ¦g¥Â‹!ÂÍõœ&$ãx:Y`i´8¹ªYÍn•–kè:J”™ºãm½º¡Î ÕHé»ÿŒ­w˜bŸekóê5oB’Š_£† 3¨ýƒçm0DÁã —wth*i_r‹ÊRÚhðs¥úa„ärQÌcnsé‹qš`?vÔVéÐäë‹•FJ#òÿy›:¯» ¤€ÄüÏ^ºôÑ<o=Ž7ƒùk½UºâZ%fgîb§/gW°qo§(õ…J=÷;Œ.E“Í n?ö»· Úૼ> endobj 81 0 obj <>stream xœcd`ab`ddäuuw Övö Ž4 (üfü!ÃôC–¹æŸ· Ë“Ÿ‹Xç~_#ôÝMð»3ÿwFF7ï¨4çü‚Ê¢ÌôŒ gMCKKsÇÜÔ¢ÌäÄ<ßÄ’ŒÔÜÄ 'G!8?93µ¤ROÁ1'G!¤£X!(µ8µ¨,5l«s~nAiIj‘‚o~JjQ^rfQrNj2Èø†F^Æ Œ] @ÄÄÈÈ”È÷Ÿ¥èñ…ßY{~^ÚÃØ½çÇæ_;¾÷‰~Ÿô;ï{Ú勵—ýÎýö{ÒïIßó~§}_ú}Ù÷Üïiß'Éý©ÿc,ú»ûwø÷Àïe@¢»0üwàï2 ÑÝò|%‹~Ú/aû-<•}× î=ÓyxÛÝ€Æ endstream endobj 894 0 obj 295 endobj 76 0 obj <> endobj 75 0 obj <>stream xœcd`ab`ddäñvõ‹ô Óvö 2ñåH3þaú!Ë\ð»ï×·ŸM¬ë¾Ïún$ø]Ÿÿ»Ž3#£›W¤s~AeQfzF‰‚†³¦‚¡¥¥¹‚cnjQfrbž‚obIFjnb “£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š²Ò9?· ´$µHÁ7?%µ(1™Á…‰‘‘=ã?cÃë|ÿ`h\ý}Ó³Y«»Ÿ}/yÅüCò‡²hescuw9GÁ¼òåËÌYýä·|wþo-½ßì@(ôMý»øwÍuß¹¦O¯ën¯ëê¨m“+õ Ëñëæp3Ü÷]å»ðÉ‹/fìî®Y/ÏW>ÿ§ýüßKf}Ï›Êö;qûz®[Ür\,æóy8—Oæá¹5›‡—ÊÂw³ endstream endobj 895 0 obj 312 endobj 71 0 obj <> endobj 70 0 obj <>stream xœuSmLSg¾·…Þ;Dtš.eº¶F÷:¸ÈŒN'nCY„D‰C>¬‚ÀmR(ʤ@ ·§_X(B[>J«n€¢È„-8¦n¨Û¢™,3K–}©‹‰3Ù|o}YÜ[›–óë}ó<Ï9ç9çÐT„ˆ¢iznæ»i;vl[®JKOL (…E´°X$<'.ÄŽûÚP]äàâÈñhÛÓhí<”0ŸÓôæ-Y*ÖPV¸·@§|I§L\³&Y¹±D]V˜ŸË)Óruê’\y+34ù…ja¥rcq±2=Ì(W¦«ËÕezõî‡IUšm…N]¦LÓìV—qEEÒTDª¨²8—¢²¨•Ô2j3•A¥R[©íT•BÍ!¥S ÕI¯¢ý¢HQ±è¬¸ bIDvÄ/èÍyÚ˜¢ˆó98ÇÛ=#Ôië5±‡~”|yÆê6Èp| xȰ±3Ì·èÀu¼¹Ñø[ëá¼\l§þP-Ô°†³ž€ûm¤ñQ°Áh¬…bМd-Ñ',"KJ wÑÏÒžéÓ¶®pae¼À8r-™áÂÆø6-T ¸Sö"2·A{l`|äº4|A=>ÇãÐλßwšÚöª\›dËQ¿¹à±'À#ëï-¹G¶†ñŸ@k£»-À÷eä.ÜÐN»óðt\vwîw6µ@¬ì‡nöñÐB‘Ì}#”*ý“&šôñ&ò-—ÖèEÕžþï/ͽ‚ò.Íôˆ…gW gad׉‚cÙ»€]³53•óÔôöuuõÜ ½§Æ»G€ýè¼:Q‘Ïà÷š6$ÃzvݲÏ/Œ{äŽG÷Žë;×q]1U‘Á¤—×רa²Sž:!KÙ—“•74Ždh}ÛM£÷…6ø°¿iZ%8×Í£.Í‘GE${£Ÿò¶DG_:=—¢þyå¹³ endstream endobj 896 0 obj 1348 endobj 91 0 obj <> endobj 90 0 obj <>stream xœ­y xUÖv…&]²¦-I«ÙdYd•YÚ@ö²odO:K§—ÓÝÙ÷îÎN'$6ÙA”mEQæT¼™ñ¿•tþqœy¾ïK?Ož§»«úÞ{Î{Þó¾§ì˜®];;»žÎo/~kãê1óW¬™8Aú`°8ÀNØE|YF2ˆéõ/®ö GßvgöÅœÞ8¡#³³[¸lóüà˜°í¾~ƒFÎ5hâŒÓÍ ôÛîé4h…{„Ÿw {}0hm°çvñƒæ Z#Ý>hw¸wØNo¯öUç†DFx‡ ZìåÄ0ªuËçÆyn\1/6ØkÓÛóC¼7¯\ê³ê­0ßÕ ÃýÖ,ŠØ¾vqäŽuKvú;/ p_¿,:ÐcCic{ºN7cüÐ×_}cÂÄY“F$N9{ʨ©£‡lymÌ ½º6Øuod›˜ ½v/0Ì8f³™YÉ,`f0㙡Ìfóó:ó*3ŒYÍ,dÞ`&0¯0k˜EÌDf8³–YÌLbF0ë˜%Ìdf$ãÌ,e¦0£˜õÌ2f*3šÙÀ,g^cÆ0™Ì&W½’@ú’ÀÍ»è²ë•ânv}#ÔÛä¾Ú à^0 üL\@{ͨòU¶U°¾:Õ›Bx€¸KÞ«5…þê&›¸Äl­seâÖå|z¡.;â@«NO žmß8ÆlôŒwÖsl¹á€±lpBW§çl즰Ê*“!Ï`TÆ~öò“dœAcTƒÆ)p-„l£é#Ø à°¾EÇÙbØ•­ªçˆUÌãÑž\·'‘ò^¿vé}®q·îúRŒ´ÙÁ—2q2Þå«.7”]%B¤€p1Fèlú’Xƒd½.=i8Ñ;Z5yº Èpªj‚2ÁƆê—èb!< FzÃ;PE~8ºÍÎ1=1a‡:1r]ðÂe½Ë–‘c…®*º$"*21pk‹ï± ûÏœ©è®Æ˜&€M´o‰´:\¿°ü2z_Ç.øˆ'v« Ó6Ž«¡ŠFd‘Å*8¤ÄåìOWÞ½x!ßy@þÍ•èô»9\˰4&”î0¯†yà⼂S\ý™%ƒUöìG9i›•½~µ;zRU‰õš*íànx C"¾Ä{hÕȅ©2—îþpö¾7IßW Cú¿‰ö¯ÃyyÉ MÑiÔ:!hüÒ$àÖO>€SqÚ-'s/è}”í(hµ£±o]#‡ÓÆ—ÑÕZ·§î®ÁÉÆzé]taà [À“ˆmÖ[#iì’uº4‘“YŽ„Gg)=‡f ¬¥ ôx~Úyà °ÂàCsPÆž†²´²`\NlŽd:IOˆ tN †c=4ÁihÔÒÛ\ ±Õ° rMÙù8}qI5jLÐ:ARd¬›„ÂÓU ª–NPEÓPîÌÜiãzý*˵Y:ò¤F¬¸)Cuë(>Ū¥»åȬ€ yGhÙpÖž’£tñz8ªkR2 ŽT+ÅF‹ê¿wÉLÌLɧ|0åd䣾µ§£¡íм³räM¦a}ýšè¶ÃÙ7uùJ±‚m4æ_*ld–<@ŸC‚ÛÎ9R(q^Eëì’÷ٞܳæ=î§1L죞­7f°üQÃkë—mžFdÊû)ü£²Ëáî«W¿ / m]žï¾‚Uüü¬€ÊÑéÞÝ¿~5ãS"+P® 7xÒ·ƒ° W±ß·Œ_¼`ÃŒa‚JñE«ˆÝdbñ>7ŒÁ¦BŒ@®ÊUdª}¥<ëDz&ìÊ央­gŠ tî”M oÉKq¥}˜<…tß¹p4¦Ýå½D­ªRœ`•P¹û–LôÇ<¾8â)éIúŽ&v”™øŸÆ`7ìùÃw¨H(qáÝ`›%äpØA84„§*V>bi†ƒp ²Ê­Ê VSäø‚sä¶È­Û‚6×QŠ*kd‹èdEŸºVÙ¥~Šx±Ïi~ ‹#òímì[©ÙG•âO,ö¼lH«8ÚäVå<€t2ŠðDñÝH”_<´§®R‰–®Ä¥´¢SÅnÙé[Á·*|oè~íØMÆsµ‡,¶½õ§ Zâm[óci$b¸ç¥‚WïÈÄ¿‰_òMçß˨“x*@ç©¡_m •xjIt”J¨Q+É b!Kð´<ðL'KeÆ!ÊR¾´B¼À\ î´Bv±BŽª$}È7ŽdÃ3Š–7š®´íJ{}D°ojóö)Ñ™}¾Šô52Œoħè Ñ4+oÔÊ‹Á¬/Ö—k zˆæÚÊþñ¥lfºAŸ¡Ƕ=rÌM2è³+‚ì2¥x”­†#Oèfýô›u;`l6úIg{.!ʶÙ,ÍÌ•é·#m­ã(w<CvËZǵÎâK![¥Ñ@Rª°i®OãÆccÀ‰¬$SÉdâF<ñ52߯iß¡¹<ÈNT:Y¯L%CÍ vÀ½M6îÁãx7ì9vw'áf¥1´EÀ•€É¢ì@YoñVÑ©%¬Òáúe,¹ÕOqçã=¾öøÑÚãÀ]=?™Ø“žoM›ëémÞ¢L°€Ìܺ®™q-ΟQ|¿ðÓwÈ£bô÷¤ë,÷m‘QJÅ£K๒­Þ¦ló{FÜ{ 'ŒUP Ç;bÖAñ3Ùç¤hÁyíøO¹D ãx« ,ß;?¢Øç^Fÿ÷ÿy4²ØëÊÊòRé):uªNé7l"$Ã&ðÜÑø\‚FÎ`á³pÔ—•{€{’GxIGõ{ÄÐðŠ™x°u ŸOO’Í•¨!Jh[GË6’–m6ÚノÓé¹&ÊÛœÚHš ôê› At§uk¦u›J”ÑãÈ Šé´éʺëYÕ:½RÊܶ'²Vo|À£C´”,"ãÈâAÜq<™€ q)ŽÁɸU ·É×üÒÿk,Âþá­¯pè’Kv‘—§½*m˜|­êæQñXÖÐ:›ÿåÑEŽ3QÀ‘¸ ×8‘ÌV’ÿ>ˆïP0{;ñ±ü}¸y|ÁU¹S©†!²è•¾›£BÖ¬ÞÎ ’hè@ÁèÊ(³D %´AßûœçÉ¢?Kžx&’õž`¯xT“èqá„2š¼Dú>ŽÜGûÔZ•& àÉ`üc‚#ÃüC\€›÷ö]šÄ>ºõÉç-SÖKŒ:±CØpÊ—9V»—|%Ã…â0å6Ò 9ù×ï¼sÐT iÅB’&&¸ˆ’¨êÚbsE“Oýú·^[?X ìÌ€äÚ³½î31Ö@3fZë;Ù¹RS¡­•½UxAŠ*{"Ã(¼Ìã,9ö@ææãïF~M^V’§¿kÏè£Áô m•{áShø­Oi±”ÇòŽß•ãd¼Ù¨h˜üÛbçlX¿GÒ™›+e­ƒÚuf1Ì¡èqêl1æ{ì£|ÿ×”•¸+L>U0Z˜ˆiòŽfÆËqT¯+!J®RŒ‘ömçžoÏòŸPÚi¤¦Ý)³.=½ÓOqç\çqx„§’œYIdðàYBä»þÇV·1ÀÍ#¤0Ú Sâ«yüöh ÄÆÔÃŵ–ú}§¬î«ó%äÎõ¡È;bÃÃíÈ[W‰C%“Ó:“o;ü¯Ø¡Ð¾Nûâ~¸ßÞw°c¡°A‰ú;ì·yÏ09-yÇa*fub²‡GCåÚ"PLRàé)}[Å×Ê <⌣ÿú)筚/â`>·ÑÏsÖ4ß3·£m¡>#¸DH‹QG6Òò3 †²2Áh㮲ƒî‡ôJ¾ìá¿||2pwRrGWŽ{§¸¶6qáÙþ Uûï`—̉FÁ’K±ÂBf™òVj•é:HJ´šäÖ»Æâiõò^¼Ö¯$¸:RYZ£þ8{îGÚ%ÝuÉŽÈDWÌäï¦Á¶•q¾œÿNµ•þ_Ùº‹ÛC"­4Q'­x‚ŠÙ;¨GûÙO¾­ê§ˆÅ|Êc åÔ˜òŒµ`îvÕW†¿NF*'ò*®Ÿ‡ëÜ·Dþ%!¿üiý³æé$-ÌbÇ•—Páß°}¯/Z‹a)xî÷Þï{Z½¸ë¥_ÔdA>•)i¦ übÂ`3¤Ox˜ø¹cÌÅÍõëÊ$‹ÐçÕ+)f ³‰¯Øhë{í®¤%ï]à #›=óË…œb%Îc÷ed~@µ~.ÚŸ×À—ÚŸ:öžIå£\Æ*Ž®D‘¼”lnh×+›êÏýíþD2Â,ü^®`2û{9ä_ç|j$•Co“×È$âNûëZqk®~^õÞ©©¤}­¢’b„ƒm8Ýlwû2ö¯”á\©­ µ‘¡¸‹á~)5¯v¼TM”U±çS‡–§oQ¹üßᑐ äª)YZŸ%»ÎpÊXA…nCG²—h2÷)?dˆ{ùº0Kp@dHhˆ5ÔVSi©ëôÅTòM¨q€ªÐ‹øáÅõ4÷WñGÑ‘'/ÚV{‚³N:ß°’é[³ƒÔùˆG×öp¤éõIi‚ßšÀZý“h8dÓ&ž~rÞõe¾æxÒG±œâauÚî´KhÕÜ‚Mó§ÍÎ<º^X}J{QߨÏKí³zti¯Çlƒ1?[ƒÉTÒ¶ý¢ï]ZÝ>ÿ»<^òÅ4s‡ÇÅ÷m¸§}~râ®Llä; ›ÜO;—ºo˜óûQ I$'0‘ýÓkþS³Åb·¼ôÀ%ÃóYT8¸c%ԤπhHÑi4ªWHŽ#éŠuêBJïF§ª}°‹’G ~­.â·YÔÈPà0‚ŽY ÆôB(„ŒÜŒ¼N9KƒÇÖb(e÷K2lÆ^oLÏd\9——sáx‹Ñ"í!H›ÁÔ ¯0&H{(Óç© ¢’RÓÈ`ÒËQŒ`ÿûë©"ª…ÝЬoÖ=ãþ'ìÅÓ×·¬…§èXM4½ªÆðžÑµP«¯•®òHð>)Ù^ZòýÚK§Õ&ãx2dôc]H÷J\#ˆ}ÿC•ôdÉ`äˆDöÞC”— &3äB3‡WÙz8$yL_ýÝvðƒ-Fßç“ÆÅîkU¤õ,vwÒ„`WuG†§q$ÿꦵëՋଯp¢`wUc°98r{¶¹WVÞýñêGŸæ+ 94{8q»¿.ÐßߦóÖ»PÃ=¼éÆÙï ÑOÙÚÎtKÐ_ñ.¿ë˜­°A u$Mw$ÁVc´´¥F½5†¾Sƒ.=qÉu‰uš½äé«÷™.¤ß¨ ‡@êÈv”èò3ÕùÙÑSIºãX4§HC—g×w Cë ¾ÒõÇ @[àäoŽ™ ¦T Ƭ̢°ÑñGÒ”¡’>r*Sb:(¾Õ®.oµ.åÿMÚO+¡’Zþ¦ç-_šÚXcmèo©¾÷ŽÕ®my€Ó._­ì§ˆSáÏø Ïj÷#ÀYÎÝT¾¶–]¦VíÐÊÐ…¥ýwŸo“×¾M%[€›±ÐeI 9¶ªf—¹ª ½ÞÕ ¬n8š_ÜÑ3^“”>´e«6jßÒ.œ³=llã^váÒáæ#eBNçG°cçoߺ٣áØé–[8#K`fi,¥b‹¬ÕNü‚/jª®ýÐÐ9] ¥¡íœ®œÐ[B!Rµjš,kÛéHÖŠFuQ{éÕžÊöËB Ã-àÖ§¤1°7Æ·ý☩-„R0ffqj¹Ó³Ò®0LœÆãbœ›“sòøMiüªõ§ì k`{Çø3+R .9™ÖÛ%r¯ü/;Ä|9ì‚Kˆ%+%7’œ½¨·—æœÒð¼ö¶Ï9YgØ™xð7ª°ï P¢HâwïÝ{´¢ÊÖ¸¿øˆ¬P]`{°Ö¥£[t9‰G·œ˜®^1ËqÖ)Ò$*Ë Š‹sÍí×ë—èâ`'¸B$~ý‘•ßÞÑe%è\ÖlY½J·èUF›¡Š’C‹®BÂR¤)­ŠÁZ[þãZ¯Õ¾M9ªÂ8Z))ñ!Ò¤v·á]£•ºï}úÝ'ˆ1FÔJŸ+ÍCÿi´ÞÞóþ¯¦ëÿÛ9¼¤£c½¾š›¿õùLþÓÿo&ßѳUfqXûPòú%,»ÕOqçˆ=yüèŸ8øa%k0äUáñÅ-›>ðlþ4ê{"Ÿåæ§4‘=XŠRC~ɾwOçTÀ!h ­ð®ò0­ðÑ­ Úº3À{‡³4©¬oJ°ÐÖ°‹F³«ì\ŸÎ²ù%\öË`Z6»ÎÈÛ' %uzÊG°¬£lþ¢7ï  K­M¥e3ºÍÑLõº,Êa»ÏBU{Ù,jǰ›ÑCºã X À×ú–#Q¶Í%SE•Þ¤ÏÓ¿¹úSÈH/ðA—¶VGSŠ)¹hEfgâ 1Ó_oËêøÐ©ãÓß<½-ÕŒìÝF«ÃK¸ü$MŽá-*zg'z(IùŸq™(c‰CJœžþ“N¯ƒà·Hw´—§ùýÝÉfÁC§†8nGUbYyyÉî÷ÖµÌO^ØHì"ÿ§Ì­€×XJ˜‘ñƒkf;ìñ@&†ˆOù\‰Ê-ÑÈI/Ðjʸ0ùâAEŽ©$÷BaAvÖuJàzÊUq3‰]䎉dÀ¢„W¸dØzø0Ê޳pÚt:çTFyуïwr:q¶àœ§vßXe¸¨„7ô Ë‚ßÞæ¢T«é 5\Z¦&³àÆ d/†ï÷ô‹ - i,)ÈÊÉûÝ3+j̪öhúÒX>4–~Hñ¬¯Ú^qSzƒÆè_äA•7„Ø­ªüïB„¾6žì QøÙáOr«!¥FHÑÄ%C(ÄäÄ—ªŸÎÔüËØf»GÍ2œÜšÂ“—=ýcìhO|Yz’YÓÚ»ÒŽEĪƒÇú)®á4Ñ•wÝ­Ù¥ÜùZ®\½¸aþ¯-+ýk<ÿqÓÑp‰{0éÌ„¯ÏcÜÚâ"ä'5…URÿpwuÐÔµ#ûþqñÏhÿÍ­¿5ªy·Ñ–¸¼eÍÜw¾&öHà;5ÑGámnîœ 3¦ÎÿÖÙº‹·Hzy…ó*\y–ê]2¬Å•üY²ku;j|Y.£»¼·ôzÝë§ø›(Ã+¼?K‡º®Žu6î æÔ–Ú‹#ãS¼Ÿò¸M ½>þJ*¸­„ýpÒºÍ1[Ý­î0‡#}¿…]Ïïo9[.>oòqà bšà…SpÄÒT}loaÅõÛK·øg,WnúöÑ“ŸÙ¼§vðT†ëNò É%¦%ë-ø^3ŽoÆsÒS^/™X‚NqývF‰;¬„y¡ãý¦Ï‚7`NÆÄý³¼~5JBÅg–ƒßÔ]μ78âK®ò^°ª2æ[Õ9xïÁE¸”sª _ø4·êáRLÙȼµ0–S]²Hµ,~ìšÀ­ ­M™¢ÉvRZ¿Odx¤õE¾ŒŠe“Á_êöfúS'ª¸6ê^µII¿|ÍôõU»~ñg'jó›:Çè$!ŒÂkœ¬u>~Î?RÛ·¿ABü†¬çŸ£®í¯¿!CÚÍ5üùçhû·Ý—‰Î8“§¦mKŽOK]B}GËŸ>Á (œ;P>ñsÒ‹ØÏ}uÒÚc`*m(Ø_Så—ª½V(ÿàTÓYàîx}Æ›f®[¡$ëÈ•ô43ÜIdåI•íLûeZñ.üÛ³4™‹ò²²ƒÑ`0g„Úüå+”II¿eöÖgØ]‚•øñCJw¨rlÀë½]¶E„çÅ !%1Ù±´3FGn\[ïhØ{ä`ye|r©P·+­” »2ëñwÛPs…ê¿aåØý‡÷)¯`××~Ä7Ì~ÒOA<€?ó_TŸýˆæù‹ÉïŽ>{åìÖèZ›ÙZ{ÌâÛÑK…Àí?91I·:t›2pËvm˜>U®KƒT}š’9E›J• ¥ÂAùM‹F‘ ƒ¶¹Í)}ÏOÙn³Â^®1ÄmÂÃ%h‡½îßÿñ‹åׇZ„ŽqÔ³ª9+Ã/I/•Ll)é‹þ¸p༽8{cßB©š¸lIDøê1«xh!n¡’—¢•{ä\Ûv{¬|‰h娻ÙÿSèp] šx¸®ÂžëÐ~%öžúA2pjFMɦ,FùÝÈ3d2o ³}ÈÒ‡8$v M¡ÉÊ»÷!*ÞŽc—”Á—˜Á.ßár+ö»åßo±aô]©9£+/ÌxL˜-nq~¾n`Íêú4êǰ÷G÷ ³´™iT iÓ•Q)›£ƒ'¸f»XRM:º%©qJr”Æ-µ(ÛhÊÊòKšNÝ„PéšSâcô‚MœâjÐW†»‡{ù„ºRe¼ædì{&ªó«/­¬¨ˆ­Ü‘à—æ:õòhêÔ¹¿E…TÙø1õ×ñÚ˰R´ñ¨¼T–›‘ N…ªâ¸4D‡ á1+\ÃbŠñMÇâļÄ8URbr!Œ‘´%ÞKÈ×QSá§ŠOTe¤–¦*qð¢\¢I£nI¡õú!ž¼i_˜\X’_P˜—ˆ‚Î*óýtm¦6SkÒæW’_\˜¯É‰Í‘¶ô¼ôq­þqÿÃêÇõ/ýHã÷R¨Ê!&¾yô/c5“—ÿß!4Ä!å·î7KB½,¥B£ ñ&_Áböi<^Ñ¢Þnâ=ak@E¼µdwî¾sÛÞ™N^$OB©Ò fä}'O€h³ÊŠ$…º¨ÃúÙ0SzhŠ>—~%×InÖFU;'¿ûΑCøÜ´ÑoÏÚUÛ¼5éBPÓÚÌàÆnaþ;}Š>ÿáA+=ÄSíÙG_´|p´&„8m”4hSªS´‰Ôò'q„e3¯ížåA}§Êî´-ÇUâOÿµoñÒn֤“âKF¯£ÎeÀ¶-“×xÆÇ îæMÀ#ݨ‡ù/àû%ü’Nÿø«}ïU4¤W ^º”pˆ‚È‚¸]é\/ªUf[Iu)åˉGkë~ù¡{×iæݬ¹=z\6÷èÉ0ÿÐ$ ó endstream endobj 897 0 obj 8348 endobj 116 0 obj <> endobj 115 0 obj <>stream xœX XS×¶>!prœ< ¶÷¯óÐö:¶j­ÇjÅZEpDQ‘™H3ac²ÂŒ cÂ$£ëP¬SÕ ¶C½õ>m«bëmmÕW}ë´›ï{oâkß»—/ùøvö>kïý¯µþõ¯#cìí™L6pÉÒå‹Ö®š¼ÐÍÝ}êë/#¥WdÒ«vÒ_äé$á7åo^ñ¾#Þ‚Áƒpê`F.“-Y±q¡rW´Êß×O=r‰#§ÎžýÖH×`•ÿvï‘nÞj?Ÿ`o5\£Üî~c¤kPÐÈÕÖ'ÂF®ö óQEøìèÞu¡2xW¸ÚG5ÒM¹ÃGÂ0Ìœ®Ñ!Û×-ˆQîX¹p—Ï‹v®Z¬ò ó[­ö/Ü}YDd·GTð6Ï·^{Ýkö”عïLÓÌ›0câÌIoNf˜×™QÌæf3›ÍldV1‹™¿1c˜™%Ìf,³”™ÊŒcÖ0ï1îÌ2f:³–YÎLd<˜™Ì$Æ“YǸ1 ˜·˜õÌJf!3‹qf0™w™ÌfóF`œ/Fdú0<Ó—Æôc†3ý™·)˜Œ=5xA¶ZvÑN´«• òxùiûiöÕƒÒ¾e°…,Q¬SÜàæöqîÓÒwLßKý&ôKí߯Tÿëþ2 n ã@÷ß š?ÈaËj¡aOÚî„15+â€# ¥0þsò…qfé–$Ê,í3ËÊîÊ¥Ë7°%5ÔZÄŠ¤§‚à j(ëØ…Ä?~gjtJ‹žM«ÐšR*ÞÀçš—–÷ܰ‘ÅQä·ì$ÐÞtªÙñªw_]œ 9ù°‡«‰.W튉õÞ·½íÑt.̺nífw³ãwt· wúçHCù&(Ù.,`cUÔt-‹GHû–ÞNg‹éUô[p1ëtäÑWû?=U¬ü@ ‘;]ëöZ×½n».Ž}¼îðÜ÷¼ü£¢¬û¦šñk³ ,Ö!—v¢Œ¯ ÔØ$]dеɏ7^ùþx*ðÓÇ  ~šjàªMeõ×Gƒ™ÿyu:éÿϱèˆâ¾ŸËÄžÐ(”¼äø þƒGT;T²%µÏ£ct7¶UP%."ãæá8c46¨º§BéT-űŠÅþ$œ¸2‡ð^tí6jñôø…x8¨Ã_ž²î f»!0£—ÙñK ÆY6RT%œAㇰßUºl \6IÃâZ%©ò““ÐÎ]_y›ÈÁj¬g¨¡®ßÛ©ažî²Á\Ï¢Ã…Ž›–—çTˆËHOœ0ö»†^v¬š!¾ð¥¬Ô‚-ri-þÆ›Œ†,(ãö…C”@°ÉÉâfE„ïk“Q¨ÅL¹LÚ""õãâ_ ‚4ˆ­Ì#”pçPI3%"Rð!• [ŸÕPû¾DoôÆ/Ğؿ1 !N?¾†vh÷ãOè(o2“wu»ñàûË—¯^»´|Ênó]Å.îfüÒŒfGj'—b‡¿Ÿà}As@¸Î–ÖPw„‚Fô’rÙÆÔÝþ/á4Ö©­>`[éÖWˆlòkĉ ¾?éÙÙC{ëëD ´_¤Xã5kÞ¢®vütåò•KmkÜ…ž¸|#ÎÊqµtOhŽËÚÜÒÞ<«éÔ¨zGÏz³K%) ,®èÌØãWª¯—†¢¬ý¢”[£èYñ×Þ©éTê­ÞO4Kù] }yA.EI7ùR¨ ŽNKJIté ‹WÔm6®£”ÀSäFåä}¤ÿqrw:î7‡A¢V !:1e✰mÀM™ù 'áÄ»Ï:.œÙ<§XÌŠÉŒmÎê>+œDeÆ¿YíÎ`+ž·p–ñçϺøÕ¹3&/^¾ø¿{Ç2Îþ ÷amp({ø#:á i?ÿu£Wt¿èô°^WìóÔuÿW¾³ÝqðêJoy +®Ê¥¹H™ºZ‘}ÿg2Œô›<ž "Cݯ±fvtrFTоn­V óaþ‰Ø;œá_|ýü™+@S@U0†³Ån/ 0?<Ç㡈:âFÜ"v‘ÃäiºáŠÊ½xH ÛH>?T¦„ ŸÂ]8íðeáÑ=ç‹nà hÑ–¸m¢;­7X”¸6qMhÄ4àzâá¢Ë-ò òÏoY"VvjÂÙžncqø=‰3qÆLœD\D¢è<ÆKšŸèp–’Gú|Ho)ïÉ;b–á(ËûrÌ¥œŽmXzà1öæÐ ¤ìh1V•Ö]xbßž·y†à1¾›.­ô˜´ëe!¬îe•qÏYe…3̲«ÔÑÊ7uVFAîúý\ï…HÔ½7tj‚mnÃ÷ f%ý3ö§ÃK<<¶.™LC¸Ûx¸·˜©ñá–#–M4~hæmlHâ‹ÚC KˆQáÔ‰á8\± b[öAe…ðàùtì6 Ç-¨ó`{øæº¢+§;ûØœ“µ©A8À‚Kîw:‚*\ÉÿóüO8@0„•EÖWi,ÝkL84kÝûÑ+ÜE'˾nSÄ®7qo‘ö9½#,î½2‘wÝè èúÙ™ ¸ù‚#œ‹²Ö»Ï}xm¸Ó%¢ñk½úì“ONž>´Écõ–-žâT?>K·_ÝÜׯu4hëcêDSQuöC”ÝÀ•UÕWE5®MÜ ÷ß,ÆúUlîõEóßÜZP%:&1V<üŠU ®^°¹™OWâPú´ý»Öèëö ñyÞ•S[Ì&C<$gÆA*$'ë Ù™ÅÙ»9ìG.òãçþ¤¼ ©É(Ö”Àuà:Ðfn™¿u¼ø‚™)Ž æ óp§Çø)æóêìÈ,UNHöÒ"ø˜«mjüñ›âàÐ,Á“ÓøœB, +;…¥kRtÂÓˆ¢¼ô¶z¶ïßžÆü ´%ÿG¼Çˆ;¦lZSxS%¤•§†gõ¾8I ª†‚RCk‘Ðæ{JWG©eZÓ7Ç%¼)0çy^tQ½¬K\È¥wñ(ß+p¥âß©ùtÆ¿¡2º x½¬ÇË\fñ¶i4ÇâZ‚¯±?|²j㯧ˆ Ytä?o­0ÃAîλ·I_,¶¥sZzFØÏ¦*`ëtâ&[ Ф¬Œ€pð†å\X\»¸‹ÕŸïo¢Dž¤†`½˜¬Û£„£§.B¾¶JH¨W›4…\·Ë¾4ÿ§Q†C-8æ³ÊJ³lHcÖm¶'ÓfÏèå‰{$ƒü¥ïõ¯nî(“_€>"Fл­¦ÛqóàdM#ÝzäˆÃ-¡—€íÒ¾;cFÙpŒi'lhâxoÎŒbK:ûºðJ¥2<\©¬ ¯««¬¬lôŒÂëGݺŒk«IûÙ”VâEüÐëåÙ ãô#6eù¥Yö…’hï®Qø{o4A9p¶Boÿ‰ð§šu꜄À¹ÐÜ$`Õã°“-a×Ü]×Ú«"har± 3uÖ «œsþj{¥[d-èY§Ð¥Sã©è½ˆkïE<ÙÛ8ñ…YƆ¸öÛ8‹éÔÆf¼ßfc5”~oÐCJ»þEWAdä‘á ‡º?o$XTEþ´Q— ¨‚ÂfkÀ¦›ÐÕ‚rë‰ri³uE9 ¢imd£Ãº”u…ØÆ®'Ÿ:èÙôÚø£ £/fúA%–ÄðŒ”íDHäô¬'~êÐÖÝB©!ªçq4ˆHG¶:+¬‚rsÍ=CqV%g`s<[IŸì䢘r(‚VÈ*Í®ì­ç8¯ ½/žÇø4FaãmÆ·m.=¬'¦šYéÖt£Á!Ù5ñ•AÇõû««ìn¼“r²’E R\]û-³u,,6ÅV—Ô´È7Œ™Å†=PÜßO-Ž‘ÅdÐúÉ#–\\þ¤µ=¯ñ˜H‹Ú[ ÚKFìˆöñ‚dàܶíû¸íN+ŽÍ¶fm²ÉÚ‚GÕ;„L]A'Žíöº ZÄyä|¼GÔ»)[­aKz™¶u’äâÜò‡•‰èÜY¶Û§êÁe/T@A+×Ó!€ä/Ǩâ‘Å lÚççqR {E×qï>v¨}~ù®™ÐçŒ{€Å¾dLf:lïýûtAâÔA9(_tHt®gí¶ÿ³³ØÏú±ÊV™4–×5DB4p½× í ߈ç[ÜëŽøÚuãR…S[ÇÁc«Šc– D£ˆzQn¼´è_.ISÙiÁÛâw(…¸}Êò„`MXx7G»›»º•ï^t+s$g—ÿIéÊe#!‚Š càÔæ}jíWþ µÉzûëŠ?hó.×ã~ ¾oõ^.)©÷ _6׆0Ù-äNòÊO½’ú?õÒ&Ü ÏÕV©AKS,’hŠm"›ÒÜhŠA޾"å´§4ÒöuÁÜnwÕAh`¯usüªi2¹Ð~o·1+ï4Æg ©–íušDtyªZÈ£óÕÓÒ¥ÎMR«•?£œ?€ž¸’þd;N-ee…õB¶âë¸À|ÞXž™ Åœu[|æ–F[ãÝ£DïçäXÑUMˆh¾8Döä’[²ø8·M± éIÑiÉŕĔ5=9væoÙ®ô©W5çæ2ó¬Obõ ×¹4«ù¢hiñƒ‘\eüÀϯЬ9%šÚ®Èð#é1Ÿ— T^éôÚ42p™s\rr:Äp)»«³s yE³ög+‹µ™ .Õ»›òÊ´Ù yb—¢ÀÙíØj%ÏŒ¿9Üé¡4kù$2ø “)ø¾†ˆÒ윜\ÚkWGCU‘1Á勨ÌsÆA87NO1•È-¯ù¸YdaïMC»“'ËȘl~ŽÇ_ݽzöÚá:ud©XP´®ë”:Hƒ´ìXÐrîkWÏlû£© B¬ýÑʱ8œØûñ]­äÊ'TsÛ¡ý#4äýhôÎrŠîgùå«ëW&’ñdÂrÒ÷ë­f™ñ„õ#Ãw»È³Œ‡8•_¾ÿ^f p¹ÆÜjê½èÅD?=FÔ§ÂzPrSà q¾±¾qëõTo¤F¦†Wëw‹µz”ed®åȃ×ÉCê3)Ç£ßX¯2hEòj|ÎT@MÆA÷†C5%͆k\5I[ŒÝž\%Åò…y{ò¡‚«Š*ŠÕfèµÜ&Ûµ©ñÉåñù‰»Sðñq.Öfé)Û–VUUÐ_óDr—9XÃÂóÊmk`¸Ë%7|Ä5ÓÀØI¥ù…Õì¤ÑLŸ’×øâV:` ™ßÙ„:ÓJ󸻤Ð6 :°Ä"ÿâ¯MNM g}/#àÝMPíó.'J)-{þÓŸn>pñìÑKðöwƒ $}çÎ~sg]b™©ª¬®(m6O(9z¬ñ p·¿Þ<}ñ†—¹ÿ™ÎóPG<ë7Ö®Èö.†²KhE:%WAGqàEo{Iàaõš@Ý&HçÈ„€/«ër=cÙÝ·JDC.œ€:‚^òQéG%Ç ÕÝ>m3$‰ab—©;û¿Ð_Mcº ׊>ìI.LÊ#wÐÇYSaЕ Ž¢¿¦ˆx€,#ô›˜ÒåuEBiA–¡ Ø ³M¿…QcVQ¸–‡’”ìè"2øÛÍèhö£ˆ#¾/-̈.?ÍB¶gR@úÚ²^8µàÆzÈÚcþs ˘¥>T!9+ß¼6t” RÌ!Œ›v|¯—äܹÙ;zŸ²Í)ùþ‚’ ƒ4}|$mp:9žv˜OÈEϙѓ:à)R`¿Í÷ýNx\Ÿ6 8Ujdr\aJN†ˆ³ˆ¬„̤JüN"’W¦Ä%%§A—œYS[iªt§(6šq&åŠ êiÉxˆ ’ ï[R¶…s¸Sz_‘J6 E(’ E4¨›Ê³svç {›–ŸÎééí# –¿½èƒ·”ïçŸQŠ99ùy`äêÕ¥qÁÚ³¾]Œö8ä—û(<ïgڼнô&³.È¥…ÃåíÉ£‰” õÛ2xaf­ás¨§dßÚòÌP05:H—Èøè¸¨ÂÔ=ÔÁ²U„Y•Ÿ ‘.ér@ÀÁ×t¡úe⢅€æfh.¨×®«Ìþ;W¼÷ÆfB>pÆ=å%e :ƒ¨*[ÚZÜýB[Ûq6Eã¨éðìz:¿ç‹ñ¯ÿ¼}öAibNýK…h.¬<²¶ÆXÖÐæ{ze³”'½(q’$´_ð Ê~þû#;½ƒØyzÆlóp$9È/‡m‘f]®>—~³ ú<]ä¹´_8ñ÷[§Þs¹lõB+2·LøÎœGÁùð Í3Z/pÛ[2Fáh¶ZühÝHÈh2JÑSBpÍ&€_ ]\$ L,”°¬)`ItžÂÜ×ÒOèk­ìßÇÜ¿¿¥ÿ†ùÐð Ñ endstream endobj 898 0 obj 5055 endobj 113 0 obj <> endobj 112 0 obj <>stream xœcd`ab`ddäórñŒr Ôvöõõ44‰Èÿfü!ÃôC–9ûw߯5?›XW~Oún&øÝ˜ÿ»3#£›O´s~AeQfzF‰‚†³¦‚¡¥¥¹‚cnjQfrbž‚obIFjnb “£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š±Ô9?· ´$µHÁ7?%µ(ÑŠŸ‰‘‘]ã?£ohßFÑãÝ_»¿29 º¢xq^^qq^Þââ+/^!ÇWºð§ýÂß˦M›Áö;qû*®ËÜr\,æóy8—Läáa`YAP· endstream endobj 899 0 obj 243 endobj 251 0 obj <> endobj 250 0 obj <>stream xœ¥Yt×¶GÖhÓ°!Ì„J5z³±)Æ›æÞ-¹ÊM–ë‘\å^$÷ ˜f01‡=Æ„äAèáå²’+ÖuþúW–±”÷È_ÿ¯¿$¼Ö03çÜ{Î>ûìseF™¿G™™™ ´_¹fõÆ5ÓVÚlÛ¶PÿãtcÌtï¿§+HÂ1ºÃo6 ÞŸ0f˜næP”4}<„˜™­Ù¸se 82ØÛÓ+tÜä•SÆÍ^¸pþ¸åþîÁÞ®ûÆÙì õr÷ßJ.üÆm tõvœ9n¹Ÿß¸-ú7BÆmqqswëqº2Ð_, ugèæ@QÔ6ëå‘®Ž6+¢ÝvlZ)vßi»*ÈÃnu°çæ5!^[Ö†zo]'ñÙ¶>Ì×~C¸ß¾í#ü]æOßµ`ÆøÝ gîYôñâYÑKfK?›óQÌÒ¹“?™2oªÓ§Ó(j5žÚIÙR«¨…ÔLêCʉ²£VS‹¨© Ôfj µ˜šEM¤¶Pk©ÙÔ$j+µŽšC}Dm£ÖSs©É”=µú„šBm§6R󨩔eM}JM£)j5ŸšNí 6Q+©”%5ZJYQƒ(µŒM ¦>§ÆPC¨÷©¡”35–Fí¢8j8ÅP»)žAõ£Xª?5’@-¡FQ”=I eN_5 1ûé½¥ï})p\7Ÿa.6ÿNh#¼FϧDï‰öŠÎ2#™xæI¿•ýÚû[õ¿7 bÀ3 ©Åë…ƒFŠtcpÄàÿâ6¤sèì¡QC»†9k>pxùðŒpÑÆ.dOÜ9ò‹QÛGµŒúÙr’e®å +‘Õ«V¯Fm=Z>ºsÌø1c^¿¿â}¯÷ƲcÇvqqm¼Ä_·|ܽF|úÁm]Å ]hu­Ù½NÛ)@ët­ìWtq45‹!šÇ i©|}j „?Ø-ñ4^é,èfUî~þ©¨ª<< $‚[ƒcE=öžkuCÕf ó [ºXyC‚ʘÚå~¸w™e¤Ñ2£‹k‰? xñšçB4“ÖÌzIÀÇ·Šûî‘ÕDÒØÍeñPº‰šÑÌÌÃŒ‚V†æ9)ä qŒÃµºj­Yi§@÷¹î=¶ê K™«,Ê ¦)¢8LÓQà›SœÂg¥ÕB ĺ‡oŠv œïΤÓòúð3A7C/Ê‹C®C5d+ ³rò¡˜iC¤þýèð(©RÉûõPh,þÍR‘–éºD q ˆNË)·L;œ L`d„صqï™›_?¨ç{ƒ.hÍt";²ÎèûËÎ wEù¸sué¥.Ü2:†¬ÑG¿÷ã¸cñ }Jò"å÷ åô?»´·…Øq8ÄWCÖåS§jªÉS4ñ—¬E×´fЉüž tÈŒÕHU’ØÈ8¹4jßj`>]sãáéÆ?ЈҢtÈäÕiŠt…,û6¡˜ZµºöÎDpÆË7á1sñ NFƒÑ‡¿ó}ÈA'Ñ·,¢XXat=ÎßjÐðñèÕh´°´šI¤ü´Ô°¥¾‚F ã¸H(1⃙`ðÿ@ÖO°µ0RLÐPEüïFhJè¾t\Dš‹ô…n,ëë’äG2™TŸÐß¼9Y&ÔËTžÀl6¸­‚¾["ò!õñºo°þ¼ÎS!Ê Q¨®c7Ë̸ܠh€ÜšÌ‚ËÈÞ•·³ªE·'ýΗ%¢†ªÞn¦½ÒüCºÅZä¨5»Ñ‰B;—uˆíÛ~M·$È ”N#ú“»px.b‘#$º¯Þäç)^;•ÿb‘ݯ[µÇÉcËü^luhÍJ:Q#ÁÖ.ô'[T*ÈgZB!œÃhoY¢ï$Š€Ð–¨,çjP¼kq{L,È ÞÊ£Ôzc(ìK¤°+Ia‡FpîX%2ER9±îüX4dÆ/Xˆ…3&ã!xÈ‹©È™¿x‰†pØÏbWØ~óøÑ•¯oܼl3g¶íмÁÄ-z¯ÇŠBÝU¶9QåýWÔO§%宕ÛÁ‚iÓðP<øñTDh-=x÷ƒ¨c\—)Ä—£‘¬ýîEŸ¯±»þð‘öÚ7O9ØsFpº/›©©é¢zòŽ k6llñDW&NÄ_ ñÚQtÐ[^d䥴֯«Q0£ƒî&s( $À¬2B»ª[bÂ|”‰ ·‚.Ú]êTêŒX¬³,r×@©¿2ÅQ^§¨õ=ˆ)SsÞét̉¨/¢N걯ÕAOhOv tº»l1ÔúJ’â¼£¹Ðòݵv$ #±¿×áuè=<Y"᣼Ø/†„dJãñÀñiñÀÌ^øš€¦üãõƒŠexH9Ÿ\ ¹ÀèA£O#Ö¢éoyŒäyá`Ö„œœéFÿÑÇA‚—/Ð04`Þ+lî¼/*À‹?›ð—lw«M9®¿.’½p¡ýÒ k?™³aÝŠUnߟá Àa¯ dw÷PÙÝ"´™UWÀ!Älø³xÐô‰xòÛd4>ñ¸JÏqÔ²e#ÄÃf˜¿?ü£¸Â–ß¿|øÜ„£»r>gú’VЉjP²Gƒ‰ÇPd;ºöQ\†G¼˜JMi]y܉[¬CìøFƒln4ûîXl²É2cİ@¿+q-ºtú Ú~Åì ^«4}-@ž—ÙDˆ…ÄŒhHx½ *„BÈ„‚,U­´QÖÌóÎo~j’ÕEÕðÅÊ"Ev&±ˆ,§¼¬ªVÒ¸=tOR€XæïÌŒå+æzú–…ð²è„ ‚}š@eÚÚ}©@ÊÌýÝ GÃþ¸ø¡^kàv"븷µ££µõôéÖ½öö{÷:ò ¼Š}ŒÌ`ë꽓¦¬8ÚÚÒtôtf„yͦµ·ólqh²Ó2Ägøx5ùhN¨KåvewÀ5hcþ³0K5 (ärbOMÎLÊ/²<Ù³Ó v¿ìœü¤þ58·T_œ«* 2,‹Ê –ƒ#àII6>Á»ZÊóÓ! ˜:&ÂR ­mvo£vÓÍît¢‘‡H W |7hF"7”üÐ ¡{*@ù¦n‰¯ñ Í6æÓÑDjQžV [®û §3„&ÇÉS9÷òE¶¶R:+pû‘‚D~X]òëèš”ocaãà5m“«æB8'W§äC ÎÏIAÜT\”S—Ëò:jBõ‹ªžn÷k )æ]«ƒ³fïË^Ÿ-LMSÝ“'Þ§ ¬5m"=BX¯Þ©…ÑFуnÉÿ_Çkí{c?ìj'ZÑy¬sÔðXô:Ëžin8 _1–þ€ûqxíß6í¿4~7zøÉ;tT¥×U lŸ2ßrßúèÀ|]{¹u Ⱦ}Òù¤4Oi0œl¿Ù²*.¶9 2%ƒÁC°kÛ úé»Ý{Ülgò=«Ôðá>øÚ#¶O™` ãjŽÐ‰K¼V¬fÙ²ßÐGhÊÝ×]mNKóy¥TÙÜlÄ‹zò$ Œ%JÀ£jÉ·Å<¯Ç6¿aK4àü‘ÆÒR>(/¾¶`Ä\оV›NCS >%znžkÂÍs¿§{)œ[¼ÀÈÅ?b)ýám¯[n\ì<ñÑái¾é\š“«„Ì€Ë¡£ªO¨~û«Z@LkuçÙºÐÊÀÀÐÐÀÀÊкºÊÊ:Ûâ‘Æ^†„¸2I~‡àãÑ]º*Æ~{5ßè6¿U@²X9gÄ.#˜ìÛlÙ’yöõyqüÑ= ò;Qy©7¢3àJx¹#x3{·.wqU•ˆ¹]u)GÓËÓKÒÕ^½˜Çlè+T… 9\›¯6þ4=sû§ÇM²#~‡y·“Îùž¹aY+Jc3wç{„ãLûɓב¨xfp&—é_š^ò즂A7’_k¢P«Œ¸"[íšUØ»!Ç¿Þý_aSŒÜ°8„~·d¥ß港ütVïâôü¥qÞK¡¾‘CÿY‘8“žq-èî#Y ­dj23]ÿVq†±œ$ž¡YÄ‘èéÞ«Owß>FvO¦!܃<ƒ¼HUű%UD+Ó›~ØGŒ$8Úwé¿àšxõ¿ÎëVˆÞ‚À ˆHå Õè .úþõu7´[âhB«þH{§ŠioÍR&³ÕD‚PÝ"Ô×­&ÏQ=±× ×d‘:±á°¢ÞäÌ¥¿ñ½zÖN@ZaÉûýM´MtüâB5`UÕPpé“U"­Ù2‰C9,€Ì…L 4Ëh£™ÆÓñ‡Bô‹!*ëÞ¿è–8™ìa–‰¢»Cßý†åd¡oHïhŽ,Œæý L«‹ïQER’tG,Ó=Z›U=~LO°vؾÝúÌk=®ýÍSÏi<ôѬW¯=AC¹>ûTˉýiÿf߯ûûÝÓè%Ÿ%…'ìQh¹ÌìŒ,(fª"+#Â×_ÛýêÁƒÓ/8“”Ä tÎ$%uúq¾‡êƒpŠÞ… Óé”Ú賉 Ò/SJ<ÀR¤Ñ›ã=bS‚™tz:&¾ Çã=X%D*Sé¿~5¢'  #!z' ãzïß5Ä6ü'-¤¶‚YD†á“Èx›ðj~ÝÌ5Ï„U}@`Ú¸IùL Cël¡« Exë%€ÿ1÷1# ù·{z®tßÎ]D´þ+ÐíA_±€Ìç$8Á.-3¢Íž$É'1 (¥>"ñ1ø¯€<îõ±>6À¢U¢¶QÆØp8J$ èeú[ÿ§GLOzzO–¼ë¤§èpõª¹¿=1ÀÃÍßu"ðc©]ÁX^]ohLÆš*z¾%ß–´7u§e_ïAÛå eá@>äodRünlŸ¶1õpÒ‰¤¶½è'ËJ#²R*^AßìÎÏÏk+`^UFÎišy4ÓåÍLÌ ­$ÂödT(ËzÎa4ºf}͵“’’µÙ­wúÜk‘”ˆûÃ.&<[*ö—p™HBÀ³æ·WåeJBJúžÉá»´¼$ d=ª#‚ßÝÛœ4µœa¬AýÑp3 š,@MJ6Yéî%KL #-Ž,ozý%2?ïÑêììïãQ+nÉÉQ(”úWhߌ!ˆÝFrqá͸^2Ù`"©¦þ9O5¹Þ`< j4E‹´fE¨¼ÿýÀž/½vn0÷ç‹-°Åü% ×\Ûu>šÛ±|,b¦´ÏSèRä~*ÍdèDͤþÄúC·MÑ(lŽ…“ðh¼oúBæHø F8ìƒ3ÙÏlÈ& ‰×¾}ûúTÂËmp¿Ïøž²AÇõ_3´T߆‘+ åоµál|å úDDT×!4JÉÈ92x]ZÐ~³?ì$«Ää~ìÁViL‚8ÝÏ·6]ţѩ°‚{î)w]ö?!¹šVLð‰<­„ƒP«OèÎCmÈ™.’ÍË)Ê S-)”¦Å“ÙŠÃ]Ø-.1^áV^$ËMF°¯eNj.QÊL™º¸R«JÈág^œ~qÆ…ÞÆIk ØÑX²k½RT¢,6‰ó[í*vM•¦KÒÀŸ Ï«:rX£®äº?žcrìelBshcÖïЗo¬Ø|8äA°Çý¹Xî-cú” mwîê¡·Œ:è%›`Ïü’ŽqwƒÏ£×x:[tµxBÿ ™ýë4 ç<ÆæÛ#<]¸<…UJ”1çξûÝ™ +nܲr¼Pè—û-¾ƒ–HÚé™”(ÄÑÆÍ!žî£VÌc^Ô×±¹¢TŸ¯Cùxk.#²EÚþ¸þæ‘ý´)꿽ðïn endstream endobj 900 0 obj 6630 endobj 273 0 obj <> endobj 272 0 obj <>stream xœcd`ab`ddäs ôuötÑvö 14‰Èÿfü!ÃôC–¹ëwÝ?½YW~ÿ ôÝRð» ÿwfFF7Ÿhçü‚Ê¢ÌôŒ gMCKKsÇÜÔ¢ÌäÄ<ßÄ’ŒÔÜÄ 'G!8?93µ¤ROÁ1'G!¤£X!(µ8µ¨,5b©s~nAiIj‘‚o~JjQ“ƒ,ƒ<È.öØÿ™˜¦2ðÉ# ~ÄÌgìþ¡ÁüÃëGèÔIÓ&vÏåXP9½F®³«¹«³»¡Yò÷Ýß)õ-- Ýõ’Ý•ÓZ&·}¿ó;UbRûäÖ)ݳæN_0½ujÃ$ùß»¾û±b˜êó}¹èôI“¦uOïžÛ0©yÂï;ßS%Zú›'6usÔTÖ—UNkÚ"ÿ}ÛoŸßÛ~û6¶4´vWJ–Í­Ÿ%×Û3¹§·{ÚdI¾úé?¾Oÿ2…íwå$ö£\g¸å¸X*óy8òðœááe`§‰™º endstream endobj 901 0 obj 370 endobj 270 0 obj <> endobj 269 0 obj <>stream xœYw\TgÖ¾ãÀÜ+¶¨¹ &¹;–DIb,(V"vË€ UªôêÌzï"e ЉML11–èn¢Fײ&Ñè®®9—¼ìæ{ï I6Éî—ßþ^øcîœû–sžóœç¼#c¬ú02™làºî‹ÜÜ'¸¸Í÷˜:Mzâ ¾ _ì#¾$_Gr^´ŠèN±>ü¢0svÆ„A8í9F.“¹.÷t ‹ ðó´wtg?ÕÙy¦ý¼`ßð€m^!ön^‘þ¾Á^‘ôCýêÐm¾‘±“íçÙ¯’Þˆ°_åáíëÓ»¬KhpXT¤o¸½[¨oxèß\>/6d›‡Ûü¸PŸ·\Â|W,Øî¾0Üo¥k„ÿªE‘«G­Y¸6&Èkݲ]ÁÞëûÏœ8`–ód§©Ó¦ÏxåÕ~òý2›V&øCçšÄŒd62+˜Œ33™Åx2îÌBf ó2³’qeœ˜ÑÌ"f*3†YÍ,f¦1c™5Ìf:ãȬe–23˜qÌ:æf<³žYμÊx0nÌ|f&3‘ÙÀ¼Å¸0³˜`Æ–@—±cF0ƒ˜ÁÌf(ó<Ã3Øá2fõ1cE_yG6O¶·Oÿ>­ry‹üG«MVŸZûZ­Ø xÁû 7Ÿ«àľ'mÒl®õÓôû¶¿nÀ˜A:nxnÐèAƒÚžãŸ;0xÂàO‡È†$¹14êy›ç÷ðùúa#‡å»0|ãð+¶ëlcmoÙ·«á€Fh€Ï¡VÇ™Ù(ð…ÐÂì|0rºp˜-V+>&NÖ“TŠÃ}8-ðw¨§†YrSŒç‘#mÖ$QA7¾²‹!›Lâ'f L.¦ŠƒxcINÞ ³è2ÁÂ@«è~Ù¬NHÒjÓõZ%éKv“ç±Éú¤Y¡[¡î°“aÑ­gtFrbHF²]ô–@×… É 6²šŠà gЍŠˆØÔáõÁµw/uT »­©çlL²s(Ã-Òöâiþ[ï·I7ÿ¹‚û(ÈìTkûQ.ø(ÉyW[k¸{éè=¾+°È\é:s :bŽ@~kÀµé­âðVzÊþ¸mä¢?öå‹Ô ‰×ë“3„´]a‹§G'9…Ãqxîi]†^¯×é•ZmR„s^ûâê«w^#¬q-q]H8Â’¿‚cqj3r¹Â³HJ8wˆö<ÎÆè‚âƒ)ÛnOv ·Ç¬ˆÔ½N3 \òj¼ MÉd ñ°%ãÐÇú+³ÂO7‰ú=!ŒZÜg1œœ!›IuJ²V믵 §û .L¥¨5\¥gl†¿X‚˪ÁBŠÐSlq1ɶž%…ÿ¡%ü,(ج&8Ì} ÕNñ±ä‰&Ê“4qJu Dƒ  Ð<«€(½~gf¬.F \¤´Ö~iñh$+Á"";$GŸ5œx2‹Åúžïw«šr°+cÁîBlêîc›%¡\Ñ`x ûèx ôeñþ3 `£!R¢9ê6å{Õ4Þ1a­”Aƒð/ø¢üP÷|þi’x°è|õö½og#ò•ørÃÞkÐÉÝy…ÌÈZò)µ¸„}T={ÃBÒWIÆ‘¯x|=Yì[N˜-Ë^#¬’bZÅ~&ˆÎrq¹8žÏ/¹J ìÈ¿j2׺]aü¶¦åÀÝQæ6EMÏ™f“U‚ØOQŽ­½©Q«Éàœ¤ š¦f(´F˜,Ð*Âþr±Cy|aÊ2•Ìœ1Š #ÃïN©8óæ"YÉ“a€}¯uÂ;•­ÊšÃG*Ì𴆕‡VùÁzðäfÅ/¥Fº‰ÎŒk[&7ÒìÀ‡’[ž¦Â6ªrk£+ÅíÈ1Ó‰=õàU´;ÙYi:¤\Ï¢«ÑÚ̺¥Á!¥(²DÖs‡÷zË#ÉZ?8ôSºzÍAeó©ÓÆZhƒŽXÓV)¡5?£#½SŽæîWyM¡>+†¾¶ó†‰S{¾.LÎÒƒ]k•âUj²²öäTª²*€«•Rb6M‰Px")àkÙ–:mcf–¢¸žW%Šœ¨f’͸¾ —V£·DVbV»¼[Ó=ƒ¯…ì(a®Ëêc‹ëæQø¦’Éd4ÙN¼qM(M¢MyzV‚Fj½2…L$üú©°¦W¬þØÿ`àI@¾+ý¼óÔ™Ë ŽÁeÀ^Md!%ŠèÁP§¤± ëÌ8Ú$‘ˆDUFiÜO&ð®¸FQÕþpøÒ÷_á&ß&/¸{ÄnSž`ɼŸ¨«'ï×Ìä*¶ñŽu•î“ÓîÄ–ŒvñX¦RÕt))²dou¥·âêF|³\)wå¢îäkPß”vys§Ò«}uñJ§WG“!Äþ‘NÀ Gž”—&@z¼^›”®Ü¹tI´'µ­ÇN)­ mY‡ª[+[öטá{È'ý³6Ha_~wwòÁîçZ-Ž]ŠòîZüšG"àN"ÈKd,ñ#~hO0Œ{t@?ô³üRXÞìûžççßÐC}˜}½í³ŽóëOÃUø@Õ¸åÀÊ"7 ŽêY\ÃÖ¨fƒ´Þ–Ï`†CÅi¶ü9ÛY\ƒŽ”v`4™ˆƒˆ»’¸ÿs8O«èxö&œ8°¾Ñ»r#Hß„õþ›ü7/Þ1UšV¶¾‹–aüÁŒ&٥Ƿ‘“c°8šG…™ô{¤xüi™©Ð ×…MJDsÛZb÷Ô´–v´ùµ/p"r_ £ç©.‘,qºL£ÔHOQGa=C “vŽÎ^z»,ûÆNê'lÄ÷y|S¯}ã2ogeÏÄÞ“( ßC+ßC£D{,Žïó8œ-™dŠ’(±K¢›Aj:q»ËŽI)²×Y4D4·}6™/…ÛO+îxÏQ¶c“—b®Æk‚àŽeè¤ÀI`ZZJx®]‚ëžÐÕï:¨º­éÔ²3‰aOËëãG’;|0Š7åâtì+$ªÓâ –ó6ÅÕ×›ÊÛŽ¯ßëùF€«W"­¸r™õëŠûkwHÄG6·à´»—[0iŸ ®aÄã59Ã¥ü±§ ”&„pòÏ燴&(ËêrÊ Ú *a’¸è’]{ö”TV×Ŷx©¼£c£ï:Ÿ|zLaÍ› ƒ ¼Û”q»býÁTµÛ«ã#ÒÝ"açþÉb\ޝ]÷ò­•áE‚gÝ2˜NeÒVÈÈRå&„JÈË*-,æ°Ÿ‘ŸçŽ…s7o‚ëæÍà:CyŠxòŸŸOZïï¿’fš­ß©ƒg>†Re/úÉ:thk½owK9ð"ò&q›éCµ©´±±jß±ê›Ê$ª85QBP#ýëEÐtŠ ›îÙ|Ïí^0P(¢@܆·i‰6ždïåmß §ù©['k(˜G)p:ÔÏ/!(œ(~Žu1´Ù7Éà3ŒÿL.çð•›®ƒ”!S«NËІ–m7Ò²LÆ6Ÿ‹jÎP6d˜ÒsàpÊápðâÞt‚håe÷C…ô*}VpÑ T–Ýi¥¹(«öTñ*Àî$.B»c;M1Jï}ƵË WÂ1î“ÛPrãÂpƒ•”'s5d×*ŸéG©HþVBŽÙ¸ XôwŠ_òðûÿ“„üQ¾H8lŠ6ã¶š‡Hp†M÷HdùB«é"¼Ë=y¸ =Ö?qÀc ü£—ð;ôöS†–äšM‹éð>pÂÿš¾¸¿Ý))OÍNÚ¥OKÒ+36E‡Â2H;›z7½+íaLT¤Vñ¤/¶ÒYpf¶³ûý òºãÈyçhô4‹Cz ä4©Ñ`ÿ…$Óí)ß‚%ð-±è0š¥Z/t[xLRÆ Vc‰Ûç>G">¤u•Ÿ?ÒõŸK!†°ÿ½äžý²´«M¹/ð½ˆlàŠ @B¨¬Ý"“X3Ω’]¥qÐ.G?‰›_6“—qµ—Bïèéè¨åv\%ͬõȋ—:N]º¼Ö³K‚C‚VÀÙZª¯e³ÔÁ‹Çÿ†/SF“cD·œoÛÑìãàëÛÐvÈÔÜ&d ÕH§A^çh¯´ÎXÈËM¤:¸Û:ÙÜÍ–ÁüüŽsÅå¼cö"”pÇM§ïß¿¹‰ ¯²£A_ùgèÎJ¸OÓê5)‚jcxõ†CãéÑGÍ™Jd‹[7•$*O¬ß›þ8òaT‘®&º8©1<8UôÄj:Q6á˜TA_Ù1ϰïÞ‹ý¬¬ü¡°0¿¸¾þýÍ×’$ áôé“'߸Ý!²zå3=†GÌXaé-ñŠÓˆîáü³"„ÆÔûÞ~’T+XñÄÌþê¹CöW¥àrä·ÏÙ^ÍÉýœKøD|ë'ÁéÁÎÙòÖì¹™õ'¼Çןk„†{6äûºKpÕ,d½¦Ày?‹O+)uú izë„ H'ð¡Mî?Ç*bˆ†*î|”åÝÀ—»Ús‹LP)®Ñ^áCø\‘¨j‚xë K¿Î›™Oúô²R-•°ù€Vt6ÜKýVRã4¼è ~È­zî+ÛJ{ v:B«4´©íͨyÚ§¥ŠùÜÒœ¼¥Ž×O§ûeÇÛP“‘¦}†Fêx û¤Ž7R·š„ÀJKÇû1‹ z†äï2dÔ‚]äò«¸Þz•ˆçq Po ‰Ç!/*(Ì?vfv§.¶ÃNXm‘¼lQ653=S§S’¥dŒµ¨bËW†àÜS¾Á–•×Tàâd››J·¬ç41(¨Ø:çÔð8”@»ÔÆC ¨³³3³Õ%’öR¸'›EÑ‚'qäQ ±›ÿO’|öïJòÁ,5f%±!.™8â}Aœõ;¨›ÊÛ'¤nF·ëT‚zU|¯ÛéšøÜòìÜ÷%·‡è’è‹Þd‰›ÿ6$Q·gj”#I1añ õ{¹S¯{Ðsn 6§ÙìÔÝI9)Ùé:mš^;‡¬´% VJÖ‘ºEÔ:>P5ûw•ÉÿkÀþò"áÜc,”ZWŸ_aûoílyeyeYÕñu'Õ‡%éþä:ŽÆ—&Ý!/¹oÚè­ÜíÉï?v¢¢~÷¡K¶ÀªˆíÊ ÏMš@XÛ%ÖÐÀXémœzáøC³ø#Ÿ[a0^—R| Ê*”ùaá»[¨]fŠ’¼Ñ³Š,ƒ¬¿•à8™Â1Æ[Œ®³m„!/õ0Ä•~ýTïÆQÂD Ò®³˜òOΗ-%5Mà\cνlÑ¥ÇËoyZ »sr+9‹DÄN|Žý«¥¾}hn?×ð™äå‡,¨MÁáÂVˆi‚4I°“Ûޱϴ·öàÉ-ï! 21€ ÆüÜþอ7êý•äòo¿'?í”’«Å´)ª’!/ݹ™Ä{|~åT*çüiTðïN6„çè uœ—bZ³ òΗæ¿¢ÉÏá¡Ê/)>ÈÝp)Sa#·ø8äÕ—çæ Åe”Ä:'• ÕÇ—ŸÒYWó¨Lt’ã¶J^š1ËyaZ: D—R¤1?¸Ž#ΟZ³5l‡_½_gcEiNŽðÔ[O{hÉWb9ÅJŠ~}f&h)ÿj²Ãòv€ZºG"¾¤¯ò¿¸Æç÷ž³ä<~Ù·ê.ê3(×kµ‚Z™ ‘U yþ™ß‹·iGv?¸"5Vü;{N€/¸GS:ˆŒØ-˜3~mÊK>±Þ°ËÖs„}¸šÊ$Ç›W('È^éôØ+Åø˜ÂÐZêë+ßjoÛ²Ä;Vµj‡@ú¾Â7ÇþYÕkÚeŽ ríõ×Ã]Ww}ùù‘£Ç„g¨C›“&ü—ÔE|^.ÇýüB ˉS_^Y´Ðh¬®†®5¬6p玸­ Oz<¢¦“¿Â³€Å$žã^§£òÞ\ìßþNé…(ÖñŽpõ»{pegjW©s”Á7ØÁ- qœùLéZ¢÷²w]´ˆ\ŸAÞÞ¦ C‘ûtw&ñAïåP¢tóX‚ù{€éDM4@ÒÆO’ŒjTgaÂ><ÎBDqLux}|`2œ‡3y'J\Ì­ø(¡d&íÁ_£]Q'$ÇÄ„i"¤{i%JlÙæŠß±h-ÇÝ,ߨƒ@aÞ2"—~“Ø¥ªTì‡.ãáb®§†(Ul»áÐIÇ‹!/='m£ñ Ú—:;t—¼iÀ@ÞK¡NsOФ¦Í¦àÈÅÁ–¿þ©´å_}vîqhc6íÖã—M\gN¨mn­>ÚT”#>Ú•S ÜÝŽ¹.³×¹x«”$˜ÄhR(LcíâÄY?¡è 8dÿu|¾½UÖŒ}ÐMº»)ÁëT7Â(Ï-à@˜è%Ùû<•æüÒfhâÚB½½BB¼¦<\‹ƒÐùË¿>|;ü[2¥A¸ÕðáGð%wÙåc¢$VÎî¯m8¿§qåÑZ;M¹B{Ûg`î6¸gn¦¬¹3`§ÎW—¬ÑgêÒµ™\œª„g^E…åg<*‰†…8•¿o/ÎSÔësÂcu,û=+¬Ux€‘Lª›hÕÜ,7éãY"CyrÀO'½€ƒq’éohMÉæÄQ •òd±Œß—Ú¥PïÁÙ¶æÊG¨ Ø EÉzJasüFõjJО…›ÊÓ Zƒ¸dÐÄ)IíSÔUJFBQIkÇ êk˜ô† Œ"ƒ¶//y/@ÙU|¸¦ugÃöà±›f|9ûáäû·ñ98ë&yi›gj JùlkHLï¢Í^)“xôárœÿâáÃìö¾[Ó~üÐ'TµjëÂ}3ãC!ŒókˆlÙc*ïø`Û‡#É`2{6)Y ¤5hûÝhöã/‘~1ËàÕmÊÈü273/ÑW ŸÃA]'N?€×Ç:Âë£$oïžËü;¯I׃bù¼ Z“¼Qضo%ÄQxÚ1~¤ß!¾¿5{J|Èü£ôÄþºTmž Îˆ‰£J$Ö_¢¦äÅL.êž_Dróqk•‚lÎeÍ6(ë'ØXͬêßw_~ÿþ(«í? «ÿ@†ù?íK o endstream endobj 902 0 obj 6062 endobj 92 0 obj <> endobj 9 0 obj <>/FontBBox[0 -75 184 263]/FontMatrix[1 0 0 1 0 0]/FirstChar 0/LastChar 244/Widths[ 0 0 0 131 0 103 0 75 0 50 0 53 0 0 97 101 66 0 52 0 70 65 0 0 102 81 55 0 0 128 0 104 0 45 0 117 0 107 0 0 61 0 0 137 0 0 147 87 60 92 74 0 0 113 89 0 100 0 108 116 0 0 0 132 0 135 0 105 120 0 106 0 0 0 118 0 0 0 86 0 96 0 0 134 0 0 140 0 146 0 0 72 133 0 0 79 44 0 0 110 0 85 0 119 0 149 0 141 0 0 80 62 0 0 64 0 46 0 77 68 0 39 0 122 0 78 129 43 0 84 125 0 69 0 42 127 0 0 71 63 0 0 38 0 0 111 123 0 36 0 0 0 0 0 0 58 0 114 82 0 0 112 0 0 0 0 0 40 83 0 0 0 0 121 0 91 0 41 88 67 0 126 0 0 0 0 0 0 124 0 0 59 90 136 73 109 0 0 0 0 0 99 0 148 0 57 94 145 0 98 56 76 0 0 0 0 0 0 0 130 0 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] >> endobj 89 0 obj <> endobj 86 0 obj <> endobj 83 0 obj <> endobj 77 0 obj <> endobj 72 0 obj <> endobj 274 0 obj <> endobj 271 0 obj <> endobj 252 0 obj <> endobj 117 0 obj <> endobj 114 0 obj <> endobj 8 0 obj <> endobj 2 0 obj <>endobj xref 0 903 0000000000 65535 f 0000437121 00000 n 0000561030 00000 n 0000435863 00000 n 0000437169 00000 n 0000413395 00000 n 0000000015 00000 n 0000000386 00000 n 0000559848 00000 n 0000546816 00000 n 0000437238 00000 n 0000437498 00000 n 0000437885 00000 n 0000438171 00000 n 0000438236 00000 n 0000438524 00000 n 0000438589 00000 n 0000438866 00000 n 0000438930 00000 n 0000439176 00000 n 0000439240 00000 n 0000439468 00000 n 0000439532 00000 n 0000439824 00000 n 0000440086 00000 n 0000440150 00000 n 0000440215 00000 n 0000440279 00000 n 0000440576 00000 n 0000440640 00000 n 0000440930 00000 n 0000440994 00000 n 0000441058 00000 n 0000441317 00000 n 0000441564 00000 n 0000441629 00000 n 0000441693 00000 n 0000441757 00000 n 0000442100 00000 n 0000442431 00000 n 0000442496 00000 n 0000442766 00000 n 0000442831 00000 n 0000443190 00000 n 0000443254 00000 n 0000443597 00000 n 0000443662 00000 n 0000444120 00000 n 0000444185 00000 n 0000444487 00000 n 0000444789 00000 n 0000444853 00000 n 0000445127 00000 n 0000445550 00000 n 0000445615 00000 n 0000446028 00000 n 0000446348 00000 n 0000446413 00000 n 0000446477 00000 n 0000446541 00000 n 0000446605 00000 n 0000446669 00000 n 0000446976 00000 n 0000447301 00000 n 0000447366 00000 n 0000447430 00000 n 0000447805 00000 n 0000447870 00000 n 0000448187 00000 n 0000448252 00000 n 0000514719 00000 n 0000514487 00000 n 0000554289 00000 n 0000448317 00000 n 0000448347 00000 n 0000514067 00000 n 0000513853 00000 n 0000553362 00000 n 0000413563 00000 n 0000000405 00000 n 0000002557 00000 n 0000513450 00000 n 0000513242 00000 n 0000552490 00000 n 0000510955 00000 n 0000510698 00000 n 0000551558 00000 n 0000503518 00000 n 0000503093 00000 n 0000550629 00000 n 0000516715 00000 n 0000516176 00000 n 0000545891 00000 n 0000448387 00000 n 0000413707 00000 n 0000002578 00000 n 0000002892 00000 n 0000448463 00000 n 0000448539 00000 n 0000413851 00000 n 0000002912 00000 n 0000004492 00000 n 0000448971 00000 n 0000449314 00000 n 0000449619 00000 n 0000449685 00000 n 0000449987 00000 n 0000450053 00000 n 0000450390 00000 n 0000450456 00000 n 0000450522 00000 n 0000450895 00000 n 0000530985 00000 n 0000530762 00000 n 0000558917 00000 n 0000525597 00000 n 0000525172 00000 n 0000557992 00000 n 0000450961 00000 n 0000414005 00000 n 0000004514 00000 n 0000006607 00000 n 0000451039 00000 n 0000414152 00000 n 0000006629 00000 n 0000008697 00000 n 0000451129 00000 n 0000414299 00000 n 0000008719 00000 n 0000011043 00000 n 0000451219 00000 n 0000414446 00000 n 0000011065 00000 n 0000013009 00000 n 0000451309 00000 n 0000414593 00000 n 0000013031 00000 n 0000015284 00000 n 0000451399 00000 n 0000414740 00000 n 0000015306 00000 n 0000017075 00000 n 0000451489 00000 n 0000414887 00000 n 0000017097 00000 n 0000018274 00000 n 0000451579 00000 n 0000451669 00000 n 0000415034 00000 n 0000018296 00000 n 0000021183 00000 n 0000452064 00000 n 0000452371 00000 n 0000452729 00000 n 0000452795 00000 n 0000453135 00000 n 0000453417 00000 n 0000453725 00000 n 0000453790 00000 n 0000454046 00000 n 0000454111 00000 n 0000454373 00000 n 0000454633 00000 n 0000454699 00000 n 0000454975 00000 n 0000455362 00000 n 0000455428 00000 n 0000455750 00000 n 0000455816 00000 n 0000456159 00000 n 0000456434 00000 n 0000456499 00000 n 0000456565 00000 n 0000456795 00000 n 0000456982 00000 n 0000457047 00000 n 0000457112 00000 n 0000457373 00000 n 0000457637 00000 n 0000457703 00000 n 0000457967 00000 n 0000458032 00000 n 0000458369 00000 n 0000458435 00000 n 0000458679 00000 n 0000458745 00000 n 0000458980 00000 n 0000459046 00000 n 0000459290 00000 n 0000459536 00000 n 0000459601 00000 n 0000459666 00000 n 0000459903 00000 n 0000460157 00000 n 0000460222 00000 n 0000460515 00000 n 0000460580 00000 n 0000460838 00000 n 0000460903 00000 n 0000460968 00000 n 0000461253 00000 n 0000461318 00000 n 0000461626 00000 n 0000461692 00000 n 0000461980 00000 n 0000462045 00000 n 0000462111 00000 n 0000462176 00000 n 0000462511 00000 n 0000462576 00000 n 0000462642 00000 n 0000462936 00000 n 0000463001 00000 n 0000463229 00000 n 0000463294 00000 n 0000463360 00000 n 0000463626 00000 n 0000463871 00000 n 0000463936 00000 n 0000464001 00000 n 0000464276 00000 n 0000415189 00000 n 0000021205 00000 n 0000026514 00000 n 0000464328 00000 n 0000464635 00000 n 0000464700 00000 n 0000464979 00000 n 0000465243 00000 n 0000465309 00000 n 0000465375 00000 n 0000415344 00000 n 0000026536 00000 n 0000030528 00000 n 0000465473 00000 n 0000465732 00000 n 0000465797 00000 n 0000466113 00000 n 0000466451 00000 n 0000466743 00000 n 0000467069 00000 n 0000467366 00000 n 0000467630 00000 n 0000467695 00000 n 0000468039 00000 n 0000468105 00000 n 0000468170 00000 n 0000415499 00000 n 0000030550 00000 n 0000032147 00000 n 0000531892 00000 n 0000531337 00000 n 0000557068 00000 n 0000468268 00000 n 0000415646 00000 n 0000032169 00000 n 0000034006 00000 n 0000468358 00000 n 0000468695 00000 n 0000469019 00000 n 0000469085 00000 n 0000469507 00000 n 0000469811 00000 n 0000470064 00000 n 0000470273 00000 n 0000470536 00000 n 0000470601 00000 n 0000470666 00000 n 0000470980 00000 n 0000539719 00000 n 0000539337 00000 n 0000556136 00000 n 0000538858 00000 n 0000538632 00000 n 0000555211 00000 n 0000471279 00000 n 0000415801 00000 n 0000034028 00000 n 0000036081 00000 n 0000471383 00000 n 0000415948 00000 n 0000036103 00000 n 0000038198 00000 n 0000471486 00000 n 0000416095 00000 n 0000038220 00000 n 0000042639 00000 n 0000471589 00000 n 0000416242 00000 n 0000042661 00000 n 0000046874 00000 n 0000471692 00000 n 0000416389 00000 n 0000046896 00000 n 0000049863 00000 n 0000471808 00000 n 0000416536 00000 n 0000049885 00000 n 0000052380 00000 n 0000471911 00000 n 0000416683 00000 n 0000052402 00000 n 0000055782 00000 n 0000472014 00000 n 0000472300 00000 n 0000416838 00000 n 0000055804 00000 n 0000057071 00000 n 0000472411 00000 n 0000416985 00000 n 0000057093 00000 n 0000059535 00000 n 0000472514 00000 n 0000417132 00000 n 0000059557 00000 n 0000064233 00000 n 0000472617 00000 n 0000417279 00000 n 0000064255 00000 n 0000067263 00000 n 0000472720 00000 n 0000417426 00000 n 0000067285 00000 n 0000070952 00000 n 0000472823 00000 n 0000417573 00000 n 0000070974 00000 n 0000073475 00000 n 0000472913 00000 n 0000417720 00000 n 0000073497 00000 n 0000077815 00000 n 0000473024 00000 n 0000417867 00000 n 0000077837 00000 n 0000079993 00000 n 0000473127 00000 n 0000418014 00000 n 0000080015 00000 n 0000081582 00000 n 0000473230 00000 n 0000473521 00000 n 0000473587 00000 n 0000473869 00000 n 0000473934 00000 n 0000474216 00000 n 0000474281 00000 n 0000474346 00000 n 0000474411 00000 n 0000418169 00000 n 0000081604 00000 n 0000082869 00000 n 0000474522 00000 n 0000418316 00000 n 0000082891 00000 n 0000085439 00000 n 0000474625 00000 n 0000418463 00000 n 0000085461 00000 n 0000087499 00000 n 0000474728 00000 n 0000418610 00000 n 0000087521 00000 n 0000088886 00000 n 0000474844 00000 n 0000418757 00000 n 0000088908 00000 n 0000090180 00000 n 0000474947 00000 n 0000418904 00000 n 0000090202 00000 n 0000092143 00000 n 0000475050 00000 n 0000419051 00000 n 0000092165 00000 n 0000093558 00000 n 0000475153 00000 n 0000419198 00000 n 0000093580 00000 n 0000095277 00000 n 0000475256 00000 n 0000419345 00000 n 0000095299 00000 n 0000098957 00000 n 0000475359 00000 n 0000475648 00000 n 0000475714 00000 n 0000419500 00000 n 0000098979 00000 n 0000102420 00000 n 0000475825 00000 n 0000419647 00000 n 0000102442 00000 n 0000105866 00000 n 0000475941 00000 n 0000419794 00000 n 0000105888 00000 n 0000109570 00000 n 0000476057 00000 n 0000419941 00000 n 0000109592 00000 n 0000113269 00000 n 0000476147 00000 n 0000420088 00000 n 0000113291 00000 n 0000116974 00000 n 0000476250 00000 n 0000420235 00000 n 0000116996 00000 n 0000119122 00000 n 0000476353 00000 n 0000420382 00000 n 0000119144 00000 n 0000121983 00000 n 0000476456 00000 n 0000420529 00000 n 0000122005 00000 n 0000125237 00000 n 0000476559 00000 n 0000420676 00000 n 0000125259 00000 n 0000128342 00000 n 0000476662 00000 n 0000420823 00000 n 0000128364 00000 n 0000132469 00000 n 0000476765 00000 n 0000420970 00000 n 0000132491 00000 n 0000135740 00000 n 0000476855 00000 n 0000477163 00000 n 0000421125 00000 n 0000135762 00000 n 0000138092 00000 n 0000477287 00000 n 0000477540 00000 n 0000421280 00000 n 0000138114 00000 n 0000140565 00000 n 0000477664 00000 n 0000421427 00000 n 0000140587 00000 n 0000143334 00000 n 0000477767 00000 n 0000421574 00000 n 0000143356 00000 n 0000146586 00000 n 0000477870 00000 n 0000421721 00000 n 0000146608 00000 n 0000150490 00000 n 0000477973 00000 n 0000421868 00000 n 0000150512 00000 n 0000154003 00000 n 0000478089 00000 n 0000422015 00000 n 0000154025 00000 n 0000156378 00000 n 0000478192 00000 n 0000422162 00000 n 0000156400 00000 n 0000158482 00000 n 0000478295 00000 n 0000478617 00000 n 0000478877 00000 n 0000422317 00000 n 0000158504 00000 n 0000160198 00000 n 0000478988 00000 n 0000422464 00000 n 0000160220 00000 n 0000163148 00000 n 0000479091 00000 n 0000422611 00000 n 0000163170 00000 n 0000166587 00000 n 0000479194 00000 n 0000422758 00000 n 0000166609 00000 n 0000171808 00000 n 0000479284 00000 n 0000422905 00000 n 0000171830 00000 n 0000175112 00000 n 0000479361 00000 n 0000423052 00000 n 0000175134 00000 n 0000178238 00000 n 0000479464 00000 n 0000423199 00000 n 0000178260 00000 n 0000180394 00000 n 0000479567 00000 n 0000479872 00000 n 0000423354 00000 n 0000180416 00000 n 0000182526 00000 n 0000479983 00000 n 0000423501 00000 n 0000182548 00000 n 0000186245 00000 n 0000480099 00000 n 0000423648 00000 n 0000186267 00000 n 0000189229 00000 n 0000480215 00000 n 0000423795 00000 n 0000189251 00000 n 0000191370 00000 n 0000480331 00000 n 0000480608 00000 n 0000480674 00000 n 0000480845 00000 n 0000423950 00000 n 0000191392 00000 n 0000193554 00000 n 0000480969 00000 n 0000424097 00000 n 0000193576 00000 n 0000198598 00000 n 0000481072 00000 n 0000424244 00000 n 0000198620 00000 n 0000202146 00000 n 0000481162 00000 n 0000424391 00000 n 0000202168 00000 n 0000206478 00000 n 0000481252 00000 n 0000424538 00000 n 0000206500 00000 n 0000212020 00000 n 0000481342 00000 n 0000424685 00000 n 0000212042 00000 n 0000214427 00000 n 0000481432 00000 n 0000424832 00000 n 0000214449 00000 n 0000215989 00000 n 0000481535 00000 n 0000424979 00000 n 0000216011 00000 n 0000219327 00000 n 0000481638 00000 n 0000425126 00000 n 0000219349 00000 n 0000222506 00000 n 0000481741 00000 n 0000425273 00000 n 0000222528 00000 n 0000224099 00000 n 0000481844 00000 n 0000425420 00000 n 0000224121 00000 n 0000225219 00000 n 0000481947 00000 n 0000425567 00000 n 0000225241 00000 n 0000227506 00000 n 0000482050 00000 n 0000425714 00000 n 0000227528 00000 n 0000228941 00000 n 0000482153 00000 n 0000425861 00000 n 0000228963 00000 n 0000230402 00000 n 0000482256 00000 n 0000426008 00000 n 0000230424 00000 n 0000232105 00000 n 0000482359 00000 n 0000482583 00000 n 0000482648 00000 n 0000426163 00000 n 0000232127 00000 n 0000233828 00000 n 0000482759 00000 n 0000426310 00000 n 0000233850 00000 n 0000236446 00000 n 0000482862 00000 n 0000426457 00000 n 0000236468 00000 n 0000239707 00000 n 0000482952 00000 n 0000426604 00000 n 0000239729 00000 n 0000245021 00000 n 0000483055 00000 n 0000426751 00000 n 0000245043 00000 n 0000247165 00000 n 0000483132 00000 n 0000483197 00000 n 0000483263 00000 n 0000426898 00000 n 0000247187 00000 n 0000249885 00000 n 0000483374 00000 n 0000427045 00000 n 0000249907 00000 n 0000252412 00000 n 0000483477 00000 n 0000427192 00000 n 0000252434 00000 n 0000256528 00000 n 0000483580 00000 n 0000427339 00000 n 0000256550 00000 n 0000259352 00000 n 0000483670 00000 n 0000483735 00000 n 0000427486 00000 n 0000259374 00000 n 0000263046 00000 n 0000483846 00000 n 0000483912 00000 n 0000427633 00000 n 0000263068 00000 n 0000265889 00000 n 0000484023 00000 n 0000427780 00000 n 0000265911 00000 n 0000269372 00000 n 0000484126 00000 n 0000427927 00000 n 0000269394 00000 n 0000272104 00000 n 0000484216 00000 n 0000484512 00000 n 0000428082 00000 n 0000272126 00000 n 0000274209 00000 n 0000484623 00000 n 0000484981 00000 n 0000428237 00000 n 0000274231 00000 n 0000277896 00000 n 0000485092 00000 n 0000428384 00000 n 0000277918 00000 n 0000281661 00000 n 0000485182 00000 n 0000428531 00000 n 0000281683 00000 n 0000283778 00000 n 0000485285 00000 n 0000428678 00000 n 0000283800 00000 n 0000287496 00000 n 0000485375 00000 n 0000428825 00000 n 0000287518 00000 n 0000290140 00000 n 0000485465 00000 n 0000428972 00000 n 0000290162 00000 n 0000293178 00000 n 0000485568 00000 n 0000429119 00000 n 0000293200 00000 n 0000296859 00000 n 0000485658 00000 n 0000429266 00000 n 0000296881 00000 n 0000301209 00000 n 0000485761 00000 n 0000429413 00000 n 0000301231 00000 n 0000304504 00000 n 0000485851 00000 n 0000429560 00000 n 0000304526 00000 n 0000308824 00000 n 0000485954 00000 n 0000429707 00000 n 0000308846 00000 n 0000311665 00000 n 0000486057 00000 n 0000429854 00000 n 0000311687 00000 n 0000315452 00000 n 0000486160 00000 n 0000430001 00000 n 0000315474 00000 n 0000319536 00000 n 0000486250 00000 n 0000430148 00000 n 0000319558 00000 n 0000322055 00000 n 0000486353 00000 n 0000430295 00000 n 0000322077 00000 n 0000324758 00000 n 0000486464 00000 n 0000430442 00000 n 0000324780 00000 n 0000326736 00000 n 0000486567 00000 n 0000430589 00000 n 0000326758 00000 n 0000329206 00000 n 0000486670 00000 n 0000430736 00000 n 0000329228 00000 n 0000332203 00000 n 0000486773 00000 n 0000430883 00000 n 0000332225 00000 n 0000335414 00000 n 0000486876 00000 n 0000431030 00000 n 0000335436 00000 n 0000338159 00000 n 0000486979 00000 n 0000431177 00000 n 0000338181 00000 n 0000341438 00000 n 0000487082 00000 n 0000431324 00000 n 0000341460 00000 n 0000344334 00000 n 0000487172 00000 n 0000431471 00000 n 0000344356 00000 n 0000347387 00000 n 0000487275 00000 n 0000431618 00000 n 0000347409 00000 n 0000349346 00000 n 0000487378 00000 n 0000431765 00000 n 0000349368 00000 n 0000349686 00000 n 0000487455 00000 n 0000431912 00000 n 0000349707 00000 n 0000351391 00000 n 0000487532 00000 n 0000487907 00000 n 0000488262 00000 n 0000488566 00000 n 0000488631 00000 n 0000432067 00000 n 0000351413 00000 n 0000352966 00000 n 0000488696 00000 n 0000489006 00000 n 0000489072 00000 n 0000432222 00000 n 0000352988 00000 n 0000356173 00000 n 0000489183 00000 n 0000432369 00000 n 0000356195 00000 n 0000358409 00000 n 0000489273 00000 n 0000489558 00000 n 0000432524 00000 n 0000358431 00000 n 0000361619 00000 n 0000489656 00000 n 0000432671 00000 n 0000361641 00000 n 0000363784 00000 n 0000489754 00000 n 0000489819 00000 n 0000432818 00000 n 0000363806 00000 n 0000365784 00000 n 0000489917 00000 n 0000489982 00000 n 0000490048 00000 n 0000432965 00000 n 0000365806 00000 n 0000369629 00000 n 0000490146 00000 n 0000433112 00000 n 0000369651 00000 n 0000372881 00000 n 0000490244 00000 n 0000490568 00000 n 0000490633 00000 n 0000433267 00000 n 0000372903 00000 n 0000375852 00000 n 0000490731 00000 n 0000490796 00000 n 0000490861 00000 n 0000433414 00000 n 0000375874 00000 n 0000377915 00000 n 0000490959 00000 n 0000433561 00000 n 0000377937 00000 n 0000380239 00000 n 0000491057 00000 n 0000491307 00000 n 0000433716 00000 n 0000380261 00000 n 0000382856 00000 n 0000491405 00000 n 0000433863 00000 n 0000382878 00000 n 0000385577 00000 n 0000491503 00000 n 0000491798 00000 n 0000434018 00000 n 0000385599 00000 n 0000386902 00000 n 0000491896 00000 n 0000492193 00000 n 0000492542 00000 n 0000492804 00000 n 0000493995 00000 n 0000494389 00000 n 0000494853 00000 n 0000494919 00000 n 0000495205 00000 n 0000495240 00000 n 0000434190 00000 n 0000386924 00000 n 0000388454 00000 n 0000495292 00000 n 0000434337 00000 n 0000388476 00000 n 0000391271 00000 n 0000495377 00000 n 0000434484 00000 n 0000391293 00000 n 0000393438 00000 n 0000495462 00000 n 0000434631 00000 n 0000393460 00000 n 0000395360 00000 n 0000495547 00000 n 0000495613 00000 n 0000495952 00000 n 0000496251 00000 n 0000496567 00000 n 0000434786 00000 n 0000395382 00000 n 0000397968 00000 n 0000496608 00000 n 0000496891 00000 n 0000497177 00000 n 0000497441 00000 n 0000434941 00000 n 0000397990 00000 n 0000400464 00000 n 0000497526 00000 n 0000497858 00000 n 0000498082 00000 n 0000435096 00000 n 0000400486 00000 n 0000402899 00000 n 0000498167 00000 n 0000498427 00000 n 0000498734 00000 n 0000499075 00000 n 0000499380 00000 n 0000499703 00000 n 0000499970 00000 n 0000435251 00000 n 0000402921 00000 n 0000405636 00000 n 0000500055 00000 n 0000500371 00000 n 0000500699 00000 n 0000500954 00000 n 0000501239 00000 n 0000501528 00000 n 0000435406 00000 n 0000405658 00000 n 0000408862 00000 n 0000501613 00000 n 0000501972 00000 n 0000502282 00000 n 0000435561 00000 n 0000408884 00000 n 0000411777 00000 n 0000502367 00000 n 0000435708 00000 n 0000411799 00000 n 0000413373 00000 n 0000502444 00000 n 0000502727 00000 n 0000503008 00000 n 0000510676 00000 n 0000513220 00000 n 0000513832 00000 n 0000514466 00000 n 0000516154 00000 n 0000525150 00000 n 0000530740 00000 n 0000531316 00000 n 0000538610 00000 n 0000539316 00000 n 0000545869 00000 n trailer << /Size 903 /Root 1 0 R /Info 2 0 R >> startxref 561080 %%EOF polyml-5.7.1/documentation/Reference/PolyMLSaveState.html0000644000175000017500000002562413204034553022441 0ustar daviddavid The PolyML.SaveState structure

PolyML.SaveState structure

The PolyML.SaveState structure provides a way for a program to save changes without the expense of exporting and building a new executable. Unlike the PolyML.export function which saves the complete state it is possible with the functions in this structure to save just the modifications. In addition it avoids the need for a linker which is needed to turn an exported object file into an executable. Because only the modifications are saved a saved state can only be loaded into the executable that created it.

structure SaveState:
sig
    val saveState : string -> unit
    val loadState : string -> unit
    val saveChild : string * int -> unit
    val renameParent : {child: string, newParent: string} -> unit
    val showHierarchy : unit -> string list
    val showParent : string -> string option
    val loadHierarchy: string list -> unit
    structure Tags:
    sig
        val fixityTag: (string * NameSpace.Infixes.fixity) Universal.tag
        val functorTag: (string * NameSpace.Functors.functorVal) Universal.tag
        val signatureTag: (string * NameSpace.Signatures.signatureVal) Universal.tag
        val structureTag: (string * NameSpace.Structures.structureVal) Universal.tag
        val typeTag: (string * NameSpace.TypeConstrs.typeConstr) Universal.tag
        val valueTag: (string * NameSpace.Values.value) Universal.tag
        val startupTag: (unit -> unit) Universal.tag
    end
    val loadModule: string -> unit
    val loadModuleBasic: string -> Universal.universal list
    val saveModule:
           string *
           {functors: string list,
             onStartup: (unit -> unit) option,
             sigs: string list, structs: string list} -> unit
    val saveModuleBasic: string * Universal.universal list -> unit
end

Simple Saved State

For many purposes the simple saved state is sufficient. This is created with saveState and loaded with loadState.

val saveState : string -> unit
Saves the current state to a file whose name is given as the argument. It saves the current values of all the mutable data (i.e. refs and arrays) that were present in the executable together with any other data that is now reachable from it
val loadState : string -> unit

Loads a saved state file. This overwrites any changes made before the load with the contents of the load file. It does not affect mutables created since the session began nor does it affect function arguments or local variables.

Hierarchical Saved States

The single level saved state created by saveState contains all the data that is accessible by the program apart from immutable data present in the executable. Hierarchical saved states extend this idea by allowing a program to save only the data that is not present in a previously loaded state. Saving a state that contains only the new data creates a "child" of the existing saved state which is the "parent". When the child is loaded in a new session the parent must also be loaded in order to provide the full state. Since the parent may itself be a child of another saved state this forms a chain of related saved states. A particular parent may have several children depending on it. When loadState is called with a file name that refers to a child saved state it automatically loads the parents using information held in each file.

The run-time system retains information about the last file that was loaded or saved and its parents. The information is updated whenever loadState, saveState or saveChild are called.

val showHierarchy : unit -> string list

Returns a list of the file names in the current hierarchy. The first item in the list is the top-most saved state, the next is the immediate child of that state and so on. The last item will be the file name that was actually given as argument to loadState, saveState or saveChild.

val saveChild : string * int -> unit

saveChild (f, n) writes out a saved state to file name f at hierarchy level n. n may be between zero and the current hierarchy level, inclusive. saveState(f) is equivalent to saveChild(f, 0). Typically, saveChild will be called with a new file name and a value for n which is the length of the current hierarchy list. This will make a new child which contains only the information added since the last call to loadState, saveState or saveChild. However, it is possible to use a different value and this will cause the saved state to include data from other saved states of the same or deeper hierarchy.

val renameParent : {child: string, newParent: string} -> unit
val showParent : string -> string option

A child saved state contains the file name of its parent so that when the child is loaded the parent can be loaded automatically. If the parent file is moved for any reason renameParent can be used to modify the parent file name held in a child so that it can be loaded from the new location. showParent returns the current value of the parent file name for a child saved state. If the saved state has no parent showParent returns NONE.

Modules

A module is a collection of bindings, primarily structures, signatures and functors, that can be saved and later reloaded. It is similar to a saved state in that a module can only be loaded into the same executable that saved it. However, it is possible to load multiple modules without them interfering.

The module system is designed with two different levels. The high-level functions, loadModule and saveModule are likely to be useful for most purposes while the lower-level functions, loadModuleBasic and saveModuleBasic will only be required in special circumstances.

val loadModule : string -> unit

loadModule takes the name of a module and loads it into memory. The start-up function, if any is executed and if it returns successfully the structures, signatures and other components are added to the name-space. The module name can either be a file path if it contains a directory separator e.g. ./foo or it is looked up in the path given by POLYMODPATH.

val saveModule : string *
           {sigs: string list, structs: string list, functors: string list,
            onStartup: (unit -> unit) option} -> unit

saveModule takes a file name and names of structures, signature and functors, together with an optional "on-start-up" function and writes them out as a package.

val loadModuleBasic : string -> Universal.universal list

loadModuleBasic is the low-level version of loadModule. The module name is interpreted in the same way and the module is loaded into memory but instead of executing any start-up function or adding components to the name-space the list of the components as a list of Universal.universal values is returned. It is up to the caller how to interpret the result.

val saveModuleBasic: string * Universal.universal list -> unit

saveModuleBasic is the low-level version of saveModule. It takes a file name and a list of Universal.universal values and saves the result as a module. The entries in the list can contain anything. However if the resulting module is loaded with loadModule certain values will be treated specially. Values tagged using the tags listed in the Tags structure will be added to the name space or in the case of the startUpTag, executed as a start-up function. In particular saveModuleBasic must be used if the module should load values or types rather than structures, functors or signatures.

polyml-5.7.1/documentation/Reference/docstyle.css0000644000175000017500000000142413204034553021107 0ustar daviddavidul.nav { margin:0; padding:0; list-style:none; height:36px; line-height:36px; background:#D60B22; font-family:Arial, Helvetica, sans-serif; font-size:13px; } ul.nav li { border-right:1px solid #EBB9BD; /* The divisions */ float:left; } ul.nav a { display:block; padding:0 28px; color:#F7C1C1; text-decoration:none; } ul.nav a:hover, ul.nav li.current a { background:#F7001D; } pre.mainsig { display: block; font-family: Courier New, Courier, mono; font-size: 11pt; white-space: pre; margin: 1em 0; } .identifier { font-family: Courier New, Courier, mono; font-size: 11pt; } .entryblock { } .entrycode { margin-bottom: 0; } .entrytext { margin-left: 2em; } p { margin-top: 0em; margin-bottom: 1em; }polyml-5.7.1/documentation/Reference/PolyMLMake.html0000644000175000017500000001503713204034553021414 0ustar daviddavid The Poly/ML Make System

The Poly/ML Make System

Introduction

PolyML.make is a function to help maintain consistency of programs made up of several modules. PolyML.make works on modules (files containing functors, structures and signatures) and tries to ensure that a module is consistent with respect to the modules it uses.

The Poly/ML compiler has two modes of operation: normal mode and 'make' mode. When the compiler is operating in 'make' mode and it encounters the name of a functor, structure or signature, it determines whether it is necessary to remake that object from its source code.

The make system assumes that source code for functors, structures and signatures is kept in files whose names resemble those of the objects. The variable PolyML.suffixes contains the list of filename suffixes recognised by the make system, in the order that the system tries them. The default list is ["", ".ML", ".sml"].

For example, if the object is called 'name', the system first tries to find a file called name, then tries name.ML, and finally tries name.sml if neither of the other files exists. Alternatively, 'name' may be a directory containing a file called 'ml_bind.ML'. If the make system fails to find any matching file then it assumes the object is pervasive and will use the existing version of it.

Example

For example, suppose we have a system in which the structure Sort is created by applying the functor SORT to the structures Combinator and List and that Combinator is itself created by applying the functor COMBINATOR to the structure List.

To use the make system, we would create a directory Sort with subdirectory Sort/Combinator and the following files:

File Contents
Sort/List.ML Code for structure List
Sort/Combinator/COMBINATOR.ML Code for functor COMBINATOR
Sort/Combinator/ml_bind.ML Code to create Combinator
Sort/SORT.ML Code for functor SORT
Sort/ml_bind.ML Code to create Sort

These files should have the following format:

Sort/List.ML

structure List =
struct (* body of List *) end;

Sort/Combinator/COMBINATOR.ML

signature LSIG =
sig (* body of LSIG, as used by COMBINATOR *) end;

functor COMBINATOR(structure L : LSIG) =
struct (* body of COMBINATOR *) end;

Sort/Combinator/ml_bind.ML

structure Combinator =
COMBINATOR(structure L = List);

Sort/SORT.ML

signature CSIG =
sig (* body of CSIG *) end;

signature LSIG =
sig (* body of LSIG, as used by SORT *) end;

functor SORT (structure C : CSIG structure L : LSIG) =
struct
(* body of SORT *)
end;

Sort/ml_bind.ML

polyml-5.7.1/documentation/Reference/Foreign.html0000644000175000017500000005640113204034553021033 0ustar daviddavid The Foreign structure

Foreign structure

This is the new foreign-function interface

signature FOREIGN =
sig
    exception Foreign of string

    structure Memory:
    sig
        eqtype volatileRef
        val volatileRef: SysWord.word -> volatileRef
        val setVolatileRef: volatileRef * SysWord.word -> unit
        val getVolatileRef: volatileRef -> SysWord.word
        
        eqtype voidStar
        val voidStar2Sysword: voidStar -> SysWord.word
        val sysWord2VoidStar: SysWord.word -> voidStar
        val null: voidStar

        val ++ : voidStar * word -> voidStar
        val -- : voidStar * word -> voidStar
        
        val memoise: ('a -> voidStar) ->'a -> unit -> voidStar
        
        exception Memory

        val malloc: word -> voidStar
        val free: voidStar -> unit

        val get8:  voidStar * Word.word -> Word8.word
        val get16: voidStar * Word.word -> Word.word
        val get32: voidStar * Word.word -> Word32.word
        val get64: voidStar * Word.word -> SysWord.word
        val set8:  voidStar * Word.word * Word8.word -> unit
        val set16: voidStar * Word.word * Word.word -> unit
        val set32: voidStar * Word.word * Word32.word -> unit
        val set64: voidStar * Word.word * SysWord.word -> unit

        val getFloat:   voidStar * Word.word -> real
        val getDouble:  voidStar * Word.word -> real
        val setFloat:   voidStar * Word.word * real -> unit
        val setDouble:  voidStar * Word.word * real -> unit

        val getAddress: voidStar * Word.word -> voidStar
        val setAddress: voidStar * Word.word * voidStar -> unit
    end
    
    structure System:
    sig
        type voidStar = Memory.voidStar
        val loadLibrary: string -> voidStar
        and loadExecutable: unit -> voidStar
        and freeLibrary: voidStar -> unit
        and getSymbol: voidStar * string -> voidStar
    end
    
    structure LibFFI:
    sig
        eqtype abi
        (* List of ABIs defined in libffi for this platform. *)
        val abiList: (string * abi) list
        (* The default Abi. *)
        val abiDefault:         abi

        (* Type codes. *)
        val ffiTypeCodeVoid:    Word.word
        and ffiTypeCodeInt:     Word.word
        and ffiTypeCodeFloat:   Word.word
        and ffiTypeCodeDouble:  Word.word
        and ffiTypeCodeUInt8:   Word.word
        and ffiTypeCodeSInt8:   Word.word
        and ffiTypeCodeUInt16:  Word.word
        and ffiTypeCodeSInt16:  Word.word
        and ffiTypeCodeUInt32:  Word.word
        and ffiTypeCodeSInt32:  Word.word
        and ffiTypeCodeUInt64:  Word.word
        and ffiTypeCodeSInt64:  Word.word
        and ffiTypeCodeStruct:  Word.word
        and ffiTypeCodePointer: Word.word

        eqtype ffiType
        val ffiType2voidStar: ffiType -> Memory.voidStar
        val voidStar2ffiType: Memory.voidStar -> ffiType

        val getFFItypeVoid: unit -> ffiType
        and getFFItypeUint8: unit -> ffiType
        and getFFItypeSint8: unit -> ffiType
        and getFFItypeUint16: unit -> ffiType
        and getFFItypeSint16: unit -> ffiType
        and getFFItypeUint32: unit -> ffiType
        and getFFItypeSint32: unit -> ffiType
        and getFFItypeUint64: unit -> ffiType
        and getFFItypeSint64: unit -> ffiType
        and getFFItypeFloat: unit -> ffiType
        and getFFItypeDouble: unit -> ffiType
        and getFFItypePointer: unit -> ffiType
        and getFFItypeUChar: unit -> ffiType
        and getFFItypeSChar: unit -> ffiType
        and getFFItypeUShort: unit -> ffiType
        and getFFItypeSShort: unit -> ffiType
        and getFFItypeUint: unit -> ffiType
        and getFFItypeSint: unit -> ffiType
        and getFFItypeUlong: unit -> ffiType
        and getFFItypeSlong: unit -> ffiType
        
        val extractFFItype:
            ffiType -> { size: word, align: word, typeCode: word, elements: ffiType list }
        val createFFItype:
            { size: word, align: word, typeCode: word, elements: ffiType list } -> ffiType

        eqtype cif
        val cif2voidStar: cif -> Memory.voidStar
        val voidStar2cif: Memory.voidStar -> cif
        val createCIF: abi * ffiType * ffiType list -> cif
        val callFunction:
            { cif: cif, function: Memory.voidStar, result: Memory.voidStar, arguments: Memory.voidStar } -> unit

        val createCallback:
            (Memory.voidStar * Memory.voidStar -> unit) * cif -> Memory.voidStar
        val freeCallback: Memory.voidStar -> unit
    end
    
    type library
    type symbol
    val loadLibrary: string -> library
    val loadExecutable: unit -> library
    val getSymbol: library -> string  -> symbol
    val symbolAsAddress: symbol -> Memory.voidStar

    structure LowLevel:
    sig
        type ctype =
        {
            size: Word.word, (* Size in bytes *)
            align: Word.word, (* Alignment *)
            ffiType: unit -> LibFFI.ffiType
        }
        
        val cTypeVoid: ctype
        and cTypePointer: ctype
        and cTypeInt8: ctype
        and cTypeChar: ctype
        and cTypeUint8: ctype
        and cTypeUchar: ctype
        and cTypeInt16: ctype
        and cTypeUint16: ctype
        and cTypeInt32: ctype
        and cTypeUint32: ctype
        and cTypeInt64: ctype
        and cTypeUint64: ctype
        and cTypeInt: ctype
        and cTypeUint: ctype
        and cTypeLong: ctype
        and cTypeUlong: ctype
        and cTypeFloat: ctype
        and cTypeDouble: ctype
        
        val cStruct: ctype list -> ctype

        val callwithAbi: LibFFI.abi -> ctype list -> ctype -> symbol -> Memory.voidStar list * Memory.voidStar -> unit
        val call: ctype list -> ctype -> symbol -> Memory.voidStar list * Memory.voidStar -> unit
        
        val cFunctionWithAbi:
            LibFFI.abi -> ctype list -> ctype -> (Memory.voidStar * Memory.voidStar -> unit) -> Memory.voidStar
        val cFunction:
            ctype list -> ctype -> (Memory.voidStar * Memory.voidStar -> unit) -> Memory.voidStar
    end

    type 'a conversion

    val makeConversion:
        {
            load: Memory.voidStar -> 'a, (* Load a value from C memory *)
            store: Memory.voidStar * 'a -> unit -> unit, (* Store value and return free function. *)
            ctype: LowLevel.ctype
        } -> 'a conversion

    val breakConversion:
        'a conversion ->
        {
            load: Memory.voidStar -> 'a, (* Load a value from C memory *)
            store: Memory.voidStar * 'a -> unit -> unit, (* Store value and return free function. *)
            ctype: LowLevel.ctype
        }

    val cVoid: unit conversion
    val cPointer: Memory.voidStar conversion
    val cInt8: int conversion
    val cUint8: int conversion
    val cChar: char conversion
    val cUchar: Word8.word conversion
    val cInt16: int conversion
    val cUint16: int conversion
    val cInt32: int conversion
    val cUint32: int conversion
    val cInt64: int conversion
    val cUint64: int conversion
    val cShort: int conversion
    val cUshort: int conversion
    val cInt: int conversion
    val cUint: int conversion
    val cLong: int conversion
    val cUlong: int conversion
    val cString: string conversion
    val cByteArray: Word8Vector.vector conversion
    val cFloat: real conversion
    val cDouble: real conversion
    
    (* When a pointer e.g. a string may be null. *)
    val cOptionPtr: 'a conversion -> 'a option conversion

    type 'a closure
    
    val cFunction: ('a->'b) closure conversion

    val buildClosure0withAbi: (unit -> 'a) * LibFFI.abi * unit * 'a conversion -> (unit -> 'a) closure
    val buildClosure0: (unit -> 'a) * unit * 'a conversion -> (unit -> 'a) closure
    val buildClosure1withAbi: ('a -> 'b) * LibFFI.abi * 'a conversion * 'b conversion -> ('a -> 'b) closure
    val buildClosure1:  ('a -> 'b) * 'a conversion * 'b conversion -> ('a -> 'b) closure
    val buildClosure2withAbi:
         ('a * 'b -> 'c) * LibFFI.abi * ('a conversion * 'b conversion) * 'c conversion -> ('a * 'b -> 'c) closure
    val buildClosure2: ('a * 'b -> 'c) * ('a conversion * 'b conversion) * 'c conversion -> ('a * 'b -> 'c) closure
    val buildClosure3withAbi:
         ('a * 'b *'c -> 'd) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion) * 'd conversion ->
            ('a * 'b *'c -> 'd) closure
    val buildClosure3: ('a * 'b *'c -> 'd) * ('a conversion * 'b conversion * 'c conversion) * 'd conversion ->
            ('a * 'b *'c -> 'd) closure
    val buildClosure4withAbi:
         ('a * 'b * 'c  * 'd -> 'e) * LibFFI.abi * ('a conversion * 'b conversion * 'c conversion* 'd conversion) * 'e conversion ->
            ('a * 'b * 'c * 'd -> 'e) closure
    val buildClosure4:
        ('a * 'b * 'c  * 'd -> 'e) * ('a conversion * 'b conversion * 'c conversion* 'd conversion) * 'e conversion ->
            ('a * 'b * 'c * 'd -> 'e) closure
    val buildClosure5withAbi:
        ('a * 'b * 'c * 'd * 'e -> 'f) *
            LibFFI.abi * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion ->
            ('a * 'b * 'c * 'd * 'e -> 'f) closure
    val buildClosure5:
        ('a * 'b * 'c * 'd * 'e -> 'f) *
        ('a conversion * 'b conversion * 'c conversion* 'd conversion * 'e conversion) * 'f conversion ->
            ('a * 'b * 'c * 'd * 'e -> 'f) closure
    val buildClosure6withAbi:
        ('a * 'b * 'c * 'd * 'e * 'f -> 'g) * LibFFI.abi *
            ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion ->
            ('a * 'b * 'c * 'd * 'e * 'f -> 'g) closure
    val buildClosure6:
        ('a * 'b * 'c * 'd * 'e * 'f -> 'g) *
            ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) * 'g conversion ->
            ('a * 'b * 'c * 'd * 'e * 'f -> 'g) closure

    (* Remove the "free" from a conversion.  Used if extra memory allocated
       by the argument must not be freed when the function returns.  *)
    val permanent: 'a conversion -> 'a conversion

    (* Call by reference.  *)
    val cStar: 'a conversion -> 'a ref conversion
    (* Pass a const pointer *)
    val cConstStar: 'a conversion -> 'a conversion
    
    (* Fixed size vector.  It is treated as a struct and passed by value or embedded in a structure. *)
    val cVectorFixedSize: int * 'a conversion -> 'a vector conversion
    (* Pass an ML vector as a pointer to a C array. *)
    and cVectorPointer: 'a conversion -> 'a vector conversion
    (* Pass an ML array as a pointer to a C array and, on return, update each element of
       the ML array from the C array. *)
    and cArrayPointer: 'a conversion -> 'a array conversion

    (* structs. *)
    val cStruct2: 'a conversion * 'b conversion -> ('a * 'b) conversion
    val cStruct3: 'a conversion * 'b conversion * 'c conversion -> ('a*'b*'c)conversion
    val cStruct4: 'a conversion * 'b conversion * 'c conversion * 'd conversion -> ('a*'b*'c*'d)conversion
    val cStruct5: 'a conversion * 'b conversion * 'c conversion * 'd conversion *
                      'e conversion -> ('a*'b*'c*'d*'e)conversion
    val cStruct6: 'a conversion * 'b conversion * 'c conversion * 'd conversion *
                      'e conversion * 'f conversion -> ('a*'b*'c*'d*'e*'f)conversion
    val cStruct7: 'a conversion * 'b conversion * 'c conversion * 'd conversion *
                      'e conversion * 'f conversion * 'g conversion -> ('a*'b*'c*'d*'e*'f*'g)conversion
    val cStruct8: 'a conversion * 'b conversion * 'c conversion * 'd conversion *
                      'e conversion * 'f conversion * 'g conversion * 'h conversion -> ('a*'b*'c*'d*'e*'f*'g*'h)conversion
    val cStruct9: 'a conversion * 'b conversion * 'c conversion * 'd conversion *
                       'e conversion * 'f conversion * 'g conversion * 'h conversion * 'i conversion ->
                       ('a*'b*'c*'d*'e*'f*'g*'h*'i)conversion
    val cStruct10: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j)conversion
    val cStruct11: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k)conversion
    val cStruct12: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion ->
                   ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l)conversion
    val cStruct13: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion ->
                   ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m)conversion
    val cStruct14: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion ->
                   ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n)conversion
    val cStruct15: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o)conversion
    val cStruct16: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion * 'p conversion -> ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p)conversion
    val cStruct17: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion * 'p conversion * 'q conversion ->
                    ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q)conversion
    val cStruct18: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion * 'p conversion * 'q conversion * 'r conversion ->
                    ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r)conversion
    val cStruct19: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion * 'p conversion * 'q conversion * 'r conversion * 's conversion ->
                    ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s)conversion
    val cStruct20: 'a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion * 'g conversion *
                   'h conversion * 'i conversion * 'j conversion * 'k conversion * 'l conversion * 'm conversion * 'n conversion *
                   'o conversion * 'p conversion * 'q conversion * 'r conversion * 's conversion * 't conversion ->
                    ('a*'b*'c*'d*'e*'f*'g*'h*'i*'j*'k*'l*'m*'n*'o*'p*'q*'r*'s*'t)conversion

    val buildCall0withAbi: LibFFI.abi * symbol * unit * 'a conversion -> unit -> 'a
    val buildCall0: symbol * unit * 'a conversion -> unit -> 'a
    val buildCall1withAbi: LibFFI.abi * symbol * 'a conversion * 'b conversion -> 'a -> 'b
    val buildCall1: symbol * 'a conversion * 'b conversion -> 'a -> 'b
    val buildCall2withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion) * 'c conversion -> 'a * 'b -> 'c
    val buildCall2:
        symbol * ('a conversion * 'b conversion) * 'c conversion -> 'a * 'b -> 'c
    val buildCall3withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> 'a * 'b * 'c -> 'd
    val buildCall3:
        symbol * ('a conversion * 'b conversion * 'c conversion) * 'd conversion -> 'a * 'b * 'c -> 'd
    val buildCall4withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion) * 'e conversion ->
            'a * 'b * 'c * 'd -> 'e
    val buildCall4:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion) * 'e conversion ->
            'a * 'b * 'c * 'd -> 'e
    val buildCall5withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion ->
            'a * 'b * 'c * 'd * 'e -> 'f
    val buildCall5:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion) * 'f conversion ->
            'a * 'b * 'c * 'd * 'e -> 'f
    val buildCall6withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) *
                'g conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g
    val buildCall6:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion * 'f conversion) *
                'g conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g
    val buildCall7withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion) *
                'h conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h
    val buildCall7:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion) *
                'h conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h
    val buildCall8withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion) *
                'i conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i
    val buildCall8:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion) *
                'i conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i
    val buildCall9withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion) *
                'j conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j
    val buildCall9:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion) *
                'j conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j
    val buildCall10withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion) *
                'k conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k
    val buildCall10:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion) *
                'k conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k
    val buildCall11withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion) *
                'l conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l
    val buildCall11:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion) *
             'l conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k  -> 'l
    val buildCall12withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion) * 'm conversion ->
                'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm
    val buildCall12:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion) * 'm conversion ->
             'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm
    val buildCall13withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion * 'm conversion) *
            'n conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n
    val buildCall13:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion * 'm conversion) *
            'n conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n
    val buildCall14withAbi:
        LibFFI.abi * symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion * 'm conversion * 'n conversion) *
            'o conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o
    val buildCall14:
        symbol * ('a conversion * 'b conversion * 'c conversion * 'd conversion * 'e conversion *
             'f conversion * 'g conversion * 'h conversion * 'i conversion * 'j conversion * 'k conversion *
             'l conversion * 'm conversion * 'n conversion) *
            'o conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o
end
structure Foreign: FOREIGN

polyml-5.7.1/documentation/Reference/Basis.html0000644000175000017500000010745513204034553020511 0ustar daviddavid Poly/ML Basis Library

Poly/ML Basis Library

A list of the items in the Poly/ML basis. These are the pre-defined structures, values, types and functors. Many of them are from the Standard Basis Library and are not described in much detail here. The entries that are specific to Poly/ML are explained in greater detail.

Structures

Array Array2 ArraySlice Asn1 BinIO BinPrimIO Bool BoolArray
BoolArray2 BoolVector Byte Char CharArray CharArray2 CharArraySlice CharVector
CharVectorSlice CInterface CommandLine Date Foreign General GenericSock HashArray
IEEEReal INetSock IO Int Int32 IntArray IntArray2 IntArraySlice
IntInf IntVector IntVectorSlice LargeInt LargeReal LargeWord List ListPair
Math NetHostDB NetProtDB NetServDB Option OS PackRealBig PackRealLittle
PackWord16Big PackWord16Little PackWord32Big PackWord32Little PackWord8Big PackWord8Little PolyML Position
Posix Process Real RealArray RealArray2 RealArraySlice RealVector RealVectorSlice
RunCall RuntimeCalls Signal SingleAssignment SML90 Socket String StringCvt
Substring SysWord Text TextIO TextPrimIO Thread ThreadLib Time
Timer Universal UniversalArray Unix UnixSock Vector VectorSlice Weak
Windows Word Word8 Word8Array Word8Array2 Word8ArraySlice Word8Vector Word8VectorSlice
Word32 Word64            
 

Signatures

ARRAY ARRAY2 ARRAY_SLICE ASN1 BIN_IO BIT_FLAGS BOOL BYTE
CHAR COMMAND_LINE DATE FOREIGN GENERAL GENERIC_SOCK IEEE_REAL IMPERATIVE_IO
INET_SOCK IO INTEGER INT_INF LIST LIST_PAIR MATH MONO_ARRAY
MONO_ARRAY2 MONO_ARRAY_SLICE MONO_VECTOR MONO_VECTOR_SLICE NET_HOST_DB NET_PROT_DB NET_SERV_DB OPTION
OS OS_FILE_SYS OS_IO OS_PATH OS_PROCESS PACK_REAL PACK_WORD POSIX
POSIX_FILE_SYS POSIX_IO POSIX_PROC_ENV POSIX_PROCESS POSIX_SIGNAL POSIX_SYS_DB POSIX_TTY PRIM_IO
REAL SIGNAL SML90 SOCKET STREAM_IO STRING STRING_CVT SUBSTRING
TEXT TEXT_IO TEXT_STREAM_IO THREAD TIME TIMER UNIX UNIX_SOCK
VECTOR VECTOR_SLICE WEAK WINDOWS WORD

Functors

ImperativeIO PrimIO StreamIO

Values

! :: := @ ^ app before Bind
ceil chr Chr concat Div Domain EQUAL Empty
exnMessage exnName explode Fail false floor foldl foldr
getOpt GREATER hd ignore implode isSome length LESS
map Match nil NONE not null o ord
Option Overflow print real ref rev round size
Size SOME Span str Subscript substring tl true
trunc use valOf vector        

Types

array bool char exn int list option order
real ref string substring unit vector word  

Infixes

infix  7 * / div mod
infix  6 + - ^
infix  4 = <> > >= < <= 
infixr 5 :: @
infix  3 := o
infix  0 before

Standard Basis Library

Poly/ML supports the ML Standard Basis Library. The documentation is available as a book, The Standard ML Basis Library, by Emden Gansner and John Reppy.  This is a short overview with specific reference to the implementation in Poly/ML.

signature GENERAL
structure General: GENERAL

Mainly standard exceptions. All of the values in the General structure are available unqualified at the top level.

signature OPTION
structure Option: OPTION

The option type, defined as datatype 'a option = NONE | SOME of 'a, together with associated functions. Some of these are available unqualified at the top level.

signature BOOL
structure Bool: BOOL

Functions on type bool.

signature INTEGER
signature INT_INF
structure Int: INTEGER
structure LargeInt: INTEGER
structure Position: INTEGER
structure Position: INTEGER
structure IntInf: INT_INF

Int, LargeInt and Position are the same structure and provide operations on type int. In Poly/ML that is an arbitrary precision integer. Poly/ML does not support any fixed precision integers. IntInf provides additional functions, such as logical operations on integers. Note: there are functions to compute LCM and GCD in PolyML.IntInf.

Int32 provides a fixed precision 32-bit integer

signature REAL
structure Real: REAL
structure LargeReal: REAL

Real and LargeReal are the same structure in Poly/ML. They provide functions on type real.

signature MATH
structure Math: MATH

The mathematical functions on type real.

signature IEEE_REAL
structure IEEEReal: IEEE_REAL

Functions to manipulate IEEE real numbers, such as controlling rounding and handling not-a-number.

signature WORD
structure Word8: WORD
structure LargeWord: WORD
structure SysWord: WORD
structure Word32: WORD
structure Word64: WORD

Operations on machine words treated as unsigned quantities. Functions which would overflow simply wrap round. Poly/ML implements Word.word as a 31 bit quantity on 32-bit platforms and a 63 bit quantity on 64-bit platforms. In version 5.5 and earlier LargeWord and SysWord were implemented using a double precision version. From version 5.5.1 they are implemented as 32 and 64-bit versions as Word32 and Word64 respectively. Word64 is only available on 64-bit architectures. SysWord is used in the Windows and Posix structures. Word8.word is an unsigned byte.

signature CHAR
structure Char: CHAR

Operations on values of type char.

signature STRING
structure String: STRING

Operations on values of type string.

signature STRING_CVT
structure StringCvt: STRING_CVT

Additional string functions used primarily when converting between strings and string representations.

signature SUBSTRING
structure Substring: SUBSTRING

Operations on substrings. These are segments of strings defined by a base string, an offset and a length and are designed to allow substrings to be manipulated without the storage overhead of creating the substrings themselves.

signature TEXT
structure Text: TEXT

The Text structure collects together various structures related to characters.

signature LIST
signature LIST_PAIR
structure List: LIST
structure ListPair: LIST_PAIR

Functions on lists and lists of pairs.

signature VECTOR
signature ARRAY
structure Vector: VECTOR
structure Array: ARRAY

Polymorphic vector and array.

signature MONO_VECTOR
signature MONO_ARRAY
structure Word8Vector: MONO_VECTOR
structure CharVector: MONO_VECTOR
structure BoolVector: MONO_VECTOR
structure IntVector: MONO_VECTOR
structure RealVector: MONO_VECTOR
structure Word8Array: MONO_ARRAY
structure CharArray: MONO_ARRAY
structure BoolArray: MONO_ARRAY
structure IntArray: MONO_ARRAY
structure RealArray: MONO_ARRAY

Monomorphic vectors and arrays. Generally these are designed to be storage-efficient at the expense of time. CharVector.vector is the same as string so provides vector operations on strings. Word8Vector.vector is used in various places throughout the library as a binary analogue of string. BoolVector and BoolArray use single bits for each value.

signature ARRAY2
structure Array2: ARRAY2
signature MONO_ARRAY2
structure Word8Array2: MONO_ARRAY2
structure CharArray2: MONO_ARRAY2
structure BoolArray2: MONO_ARRAY2
structure IntArray2: MONO_ARRAY2
structure RealArray2: MONO_ARRAY2

Two dimensional arrays.

signature VECTOR_SLICE
signature ARRAY_SLICE
structure VectorSlice: VECTOR_SLICE
structure ArraySlice: ARRAY_SLICE

Polymorphic subvectors and subarrays.

signature MONO_VECTOR_SLICE
signature MONO_ARRAY_SLICE
structure Word8VectorSlice: MONO_VECTOR_SLICE
structure CharVectorSlice: MONO_VECTOR_SLICE
structure IntVectorSlice: MONO_VECTOR_SLICE
structure RealVectorSlice: MONO_VECTOR_SLICE
structure Word8ArraySlice: MONO_ARRAY_SLICE
structure CharArraySlice: MONO_ARRAY_SLICE
structure IntArraySlice: MONO_ARRAY_SLICE
structure RealArraySlice: MONO_ARRAY_SLICE

Monomorphic subvectors and subarrays.

signature BYTE
structure Byte: BYTE

Provides functions to convert between characters and Word8.word values and between strings and Word8Vector.vector values. In Poly/ML these can generally be implemented as a cast so do not incur any time or space overhead.

signature COMMAND_LINE
structure CommandLine: COMMAND_LINE

Access to the command line and arguments. Does not include arguments taken by the run-time system.

signature TIME
structure Time: TIME

Functions on times. Poly/ML implements this as microseconds since 1st January 1970 in Unix and nanoseconds since 1st January 1601 (FILETIME) in Windows.

signature DATE
structure Date: DATE

Functions on dates including conversions to and from Time.time.

signature TIMER
structure Timer: TIMER

Functions to return CPU time and garbage collection time.

signature PACK_WORD
structure PackWord8Big: PACK_WORD
structure PackWord8Little: PACK_WORD
structure PackWord16Big: PACK_WORD
structure PackWord16Little: PACK_WORD
structure PackWord32Big: PACK_WORD
structure PackWord32Little: PACK_WORD
signature PACK_REAL
structure PackRealBig: PACK_REAL
structure PackRealLittle: PACK_REAL

Operations to pack and unpack integers and reals into byte vectors.

signature IO
structure IO: IO

The IO structure contains types and exceptions used within the other IO structures.

structure TextIO: sig ... end

The TextIO structure is the top level of the IO stack for textual input and output. This is level likely to be used most often. Input and output are side-effecting and, if necessary, characters such as newlines are translated between the ML and operating system codes.

signature TEXT_STREAM_IO
structure TextIO.StreamIO: TEXT_STREAM_IO

This substructure access to a lower level of textual input and output. Output is not significantly different from that of TextIO but input is applicative rather than imperative. In essence this means that input functions return both a value, character or string, and a new stream. Reading from the new stream continues the input, reading from the original stream returns the previous value. This is intended to simplify backtracking in parsing and works particularly well with the scan functions in the library.

signature BIN_IO
structure BinIO: BIN_IO

BinIO is similar to TextIO but for binary input and output. While TextIO works on types char and string, BinIO works on bytes (Word8.word) and byte vectors (Word8Vector.vector). Unlike TextIO binary I/O does not perform any translation of characters.
BinIO.StreamIO: STREAM_IO
Similar to TextIO.StreamIO.

signature PRIM_IO
structure BinPrimIO: PRIM_IO
structure TextPrimIO: PRIM_IO

The primitive I/O functions are the lowest level of the stack. They provide access to the underlying readers and writers.

signature IMPERATIVE_IO
functor ImperativeIO ( ... ): IMPERATIVE_IO
signature STREAM_IO
functor StreamIO ( ... ): STREAM_IO
signature PRIM_IO
functor PrimIO ( ... ): PRIM_IO

These functors can be used to build new stacks to provide input and output on data structures other than characters and bytes.

signature OS
signature OS_FILE_SYS
signature OS_IO
signature OS_PATH
signature OS_PROCESS
structure OS: OS

The OS structure contains a large number of functions for accessing operating system facilities. Most of them are grouped into substructures. OS.FileSys contains functions for examining directories and files. OS.Path operates on file path names. OS.Process provides functions to terminate the current ML program with various results, examine the environment and to run sub-processes. OS.IO provides the ability to poll a set of file descriptors.

signature COMMAND_LINE
structure CommandLine: COMMAND_LINE

CommandLine provides access to the command line arguments. Note that the Poly/ML run-time system recognises and removes various arguments and these are not included in the arguments available to the ML program.

signature SOCKET
structure Socket: SOCKET

Operations on sockets, providing access to network facilities from ML. Socket does not actually contain functions to create sockets. Instead these are found in the INetSock, UnixSock and GenericSock structures.

signature INET_SOCK
structure INetSock: INET_SOCK

Creates internet domain sockets and provides functions on internet addresses.

signature UNIX_SOCK
structure UnixSock: UNIX_SOCK

Creates Unix domain (local) sockets. This structure is not provided in the Windows implementation.

signature GENERIC_SOCK
structure GenericSock: GENERIC_SOCK

Can be used to create sockets in any domain supported by the system.

signature NET_HOST_DB
structure NetHostDB: NET_HOST_DB
signature NET_PROT_DB
structure NetProtDB: NET_PROT_DB
signature NET_SERV_DB
structure NetServDB: NET_SERV_DB

Look up names in various tables. NetHostDB looks up an internet address using DNS. NetProtDB looks up a protocol in (on Unix) /etc/protocols. NetServDB looks up a service in (on Unix) /etc/services.

signature UNIX
structure Unix: UNIX

Provides access to Unix-specific functions, such as forking a process. This structure is not provided in the Windows implementation.

signature POSIX
signature POSIX_ERROR
signature POSIX_SIGNAL
signature POSIX_PROCESS
signature POSIX_PROC_ENV
signature POSIX_FILE_SYS
signature POSIX_IO
signature POSIX_SYS_DB
signature POSIX_TTY
structure Posix: POSIX

Provides access to a wide range of Unix system calls. This structure and the signatures are not provided in the Windows implementation.

signature WINDOWS
structure Windows: WINDOWS

Windows-specific functions. This structure is not provided in the Unix implementations.

Poly/ML Extensions

There are a number of extensions to Poly/ML. Most of these are described in greater detail in other documents.

structure Asn1: ASN1
signature ASN1

Operations on ASN1 binary encoding. There are functions to help convert between tree structures and byte vectors. This is experimental.

structure CInterface
signature CInterfaceSig

This is the older version of the foreign-function interface. The new version is in the Foreign structure. See the full documentation.

structure Foreign
signature FOREIGN

This is the new version of the foreign-function interface.

structure HashArray

Provides a hash-table type and operations.

structure PolyML

Contains a large number of operations specific to Poly/ML. See here for full information.

structure Process

This is the original implementation of parallelism in Poly/ML. It has now been reimplemented using the Thread structure. It is provided for backwards compatibility only.

structure RunCall
structure RuntimeCalls

RunCall contains various low-level operations for interface to the run-time system. RuntimeCalls contains symbolic definitions for entry points to the run-time system. These structures are intended only for use in the basis library itself and should not be used in user code unless absolutely necessary. It is very easy to use them in a way that will cause a crash or break the garbage-collector resulting in a failure at some point in the future.

structure Signal
signature SIGNAL

Provides a way of handling Unix-style signals. On Windows this deals only with the interrupt signal, SIGINT. See here for full information.

structure SingleAssignment

Provides references that can only be assigned to once. Once a variable has been assigned a value that is fixed and further attempts to assign a new value result in an exception. The main reason for providing this is that once the value has been assigned it is marked as an immutable cell and this has advantages in efficiency for the garbage collector. Locked cells that contain the same value can be shared with PolyML.shareCommonData. See here for more information.

structure SML90: SML90
signature SML90

Provides backwards compatibility with ML90. This was included in an earlier draft of the Standard Basis Library but was withdrawn before the final release.

structure Thread: THREAD
signature THREAD
structure ThreadLib

The Thread structure provides a way of creating parallel threads and synchronising between them. ThreadLib is an extension library for the Thread structure. See here for full information.

structure Universal
structure UniversalArray

The Universal structure provides support for a universal union type that can contain a value of any type. It is used in various library functions. See here for full information.

structure Weak
signature WEAK

Provides the ability to construct weak references, that is references that can be used to detect when all other pointers to the reference have been removed by the garbage collector. They are intended to allow a program to recover resources when they are no longer reachable. See here for full information.

polyml-5.7.1/documentation/Reference/PolyMLNameSpace.html0000644000175000017500000002467413204034553022402 0ustar daviddavid The PolyML.NameSpace structure

The PolyML.NameSpace structure

The PolyML.NameSpace structure contains functions associated with a name-space, a collection of values, types, structures, functors, signatures and infix settings. It is used primarily in connection with the compiler.

In the Standard ML language there are separate classes of identifiers for values, type constructors, structures, signatures and functors. In addition infix status is essentially another identifier class since infix status and priority can be set for an identifier whether or not there is actually a function with that name. Value identifiers include datatype and exception constructors as well as identifiers bound with val or fun bindings. Name-spaces are ways of holding and managing collections of identifiers. Nothing in the NameSpace structure assumes a particular implementation of a name-space; it is more of an interface than an implementation.

structure NameSpace:
    sig
        structure Functors:
sig
val code = fn: functorVal -> CodeTree.codetree
type functorVal
val name = fn: functorVal -> string
val print = fn: functorVal * int * nameSpace option -> pretty
val properties = fn: functorVal -> ptProperties list
end
structure Infixes:
sig
type fixity
val name = fn: fixity -> string
val print = fn: fixity -> pretty
end
structure Signatures:
sig
val name = fn: signatureVal -> string
val print = fn: signatureVal * int * nameSpace option -> pretty
val properties = fn: signatureVal -> ptProperties list
type signatureVal
end
structure Structures:
sig
val code = fn: structureVal -> CodeTree.codetree val contents = fn: structureVal -> nameSpace
val name = fn: structureVal -> string
val print = fn: structureVal * int * nameSpace option -> pretty
val properties = fn: structureVal -> ptProperties list
type structureVal
end
structure TypeConstrs:
sig
val name = fn: typeConstr -> string
val print = fn: typeConstr * int * nameSpace option -> pretty
val properties = fn: typeConstr -> ptProperties list
type typeConstr
end
structure Values:
sig
val code = fn: value -> CodeTree.codetree
val isConstructor = fn: value -> bool
val isException = fn: value -> bool
val name = fn: value -> string
val print = fn: value * int -> pretty
val printType = fn:
typeExpression * int * nameSpace option -> pretty
val printWithType = fn: value * int * nameSpace option -> pretty
val properties = fn: value -> ptProperties list
type typeExpression
val typeof = fn: value -> typeExpression
type value
end
type nameSpace =
{allFix: unit -> (string * Infixes.fixity) list,
allFunct: unit -> (string * Functors.functorVal) list,
allSig: unit -> (string * Signatures.signatureVal) list,
allStruct: unit -> (string * Structures.structureVal) list,
allType: unit -> (string * TypeConstrs.typeConstr) list,
allVal: unit -> (string * Values.value) list,
enterFix: string * Infixes.fixity -> unit,
enterFunct: string * Functors.functorVal -> unit,
enterSig: string * Signatures.signatureVal -> unit,
enterStruct: string * Structures.structureVal -> unit,
enterType: string * TypeConstrs.typeConstr -> unit,
enterVal: string * Values.value -> unit,
lookupFix: string -> Infixes.fixity option,
lookupFunct: string -> Functors.functorVal option,
lookupSig: string -> Signatures.signatureVal option,
lookupStruct: string -> Structures.structureVal option,
lookupType: string -> TypeConstrs.typeConstr option,
lookupVal: string -> Values.value option}
end val globalNameSpace: nameSpace
type nameSpace =
{allFix: unit -> (string * Infixes.fixity) list,
allFunct: unit -> (string * Functors.functorVal) list,
allSig: unit -> (string * Signatures.signatureVal) list,
allStruct: unit -> (string * Structures.structureVal) list,
allType: unit -> (string * TypeConstrs.typeConstr) list,
allVal: unit -> (string * Values.value) list,
enterFix: string * Infixes.fixity -> unit,
enterFunct: string * Functors.functorVal -> unit,
enterSig: string * Signatures.signatureVal -> unit,
enterStruct: string * Structures.structureVal -> unit,
enterType: string * TypeConstrs.typeConstr -> unit,
enterVal: string * Values.value -> unit,
lookupFix: string -> Infixes.fixity option,
lookupFunct: string -> Functors.functorVal option,
lookupSig: string -> Signatures.signatureVal option,
lookupStruct: string -> Structures.structureVal option,
lookupType: string -> TypeConstrs.typeConstr option,
lookupVal: string -> Values.value option}

The nameSpace type is a record of functions. For each class of identifier there is a lookup function that takes a string and returns an option type, an enter function that takes a string name and adds a values to the table and an "all" function that returns a list of all the identifiers of that class. It is important to note that the nameSpace type does not imply any particular implementation, it is simply an interface. Typically, it will be implemented in terms of one or more hash-tables but it is perfectly possible to implement something more complex. For example, PolyML.make, is implemented by passing to the compiler a name-space that has a side-effect of checking, and if necessary recompiling, a file when called to look-up a structure, functor or signature.

val globalNameSpace: nameSpace

globalNameSpace is the default name-space. The interactive top-level, the use function and PolyML.make, all use this.

type valueVal
type typeVal
type fixityVal
type functorVal
type signatureVal
type structureVal
Values of these types are the data structures used to represent the different kind of identifiers. Values of type valueVal are used to hold information about value identifiers, typeVal is used for type constructors, fixityVal for infix status, functorVal for functors, signatureVal for signatures and structureVal for structures. There are no constructors available to create values of these types; the only way these value can be created is by compiling ML source code.
type typeExpression

typeExpression is used to represent the type of a value. This is not really part of a name-space but is included here, along with displayTypeExpression as a convenience. Values of this type are returned as PTtype nodes in the parse-tree.

val displayVal: valueVal * int * nameSpace -> pretty

The displayVal function returns a text representation of the value as a pretty structure. The structure returned is similar to way values are printed at the top level and include both their value and their type. The int argument controls the depth when printing complex values. The nameSpace argument is used to assist in displaying appropriate type constructors in the type.

polyml-5.7.1/documentation/Reference/PolyMLCompiler.html0000644000175000017500000010025013204034553022301 0ustar daviddavid The PolyML.Compiler structure

The PolyML.Compiler structure

The PolyML.Compiler structure contains functions associated with the compiler. For historical reasons it also contains functions and values associated with the Poly/ML top-level. Many of the values are associated with debugging the compiler itself and are not of general usefulness.

structure Compiler :
  sig
    datatype compilerParameters =
        CPOutStream of string->unit
    |   CPNameSpace of PolyML.NameSpace.nameSpace
    |   CPErrorMessageProc of
	            { message: PolyML.pretty, hard: bool, location: PolyML.location, context: PolyML.pretty option } -> unit
    |   CPLineNo of unit -> int
    |   CPLineOffset of unit -> int
    |   CPFileName of string
	 |   CPPrintInAlphabeticalOrder of bool
    |   CPResultFun of {
            fixes: (string * NameSpace.Infixes.fixity) list, values: (string * NameSpace.Values.value) list,
            structures: (string * NameSpace.Structures.structureVal) list, signatures: (string * NameSpace.Signatures.signatureVal) list,
			 functors: (string * NameSpace.Functors.functorVal) list, types: (string * NameSpace.TypeConstrs.typeConstr) list
            } -> unit
	|   CPCompilerResultFun of
	         PolyML.parseTree option *
			 ( unit -> {
			        fixes: (string * fixityVal) list, values: (string * valueVal) list,
					structures: (string * structureVal) list, signatures: (string * signatureVal) list,
					functors: (string * functorVal) list, types: (string * typeVal) list}
            ) option
            -> unit -> unit
	|   CPProfiling of int
	|   CPTiming of bool
	|   CPDebug of bool
	|   CPPrintDepth of unit->int
	|   CPPrintStream of string->unit
	|   CPErrorDepth of int
	|   CPLineLength of int
	|   CPRootTree of
	     {
		    parent: (unit -> PolyML.parseTree) option,
			next: (unit -> PolyML.parseTree) option,
			previous: (unit -> PolyML.parseTree) option
		 }
	|   CPAllocationProfiling of int
	|   CPDebuggerFunction of int * valueVal * int * string * string * nameSpace -> unit

    val compilerVersion : string
    val compilerVersionNumber : int

    val printDepth : int ref
    val errorDepth : int ref
    val lineLength : int ref

    val printInAlphabeticalOrder : bool ref

    val prompt1: string ref
    val prompt2: string ref

    val reportExhaustiveHandlers: bool ref
    val reportUnreferencedIds: bool ref
    val reportDiscardFunction: bool ref
	val reportDiscardNonUnit: bool ref

    val debug: bool ref
    val timing: bool ref
    val profiling: int ref
    val allocationProfiling: int ref

    val lowlevelOptimise: bool ref
    val inlineFunctors: bool ref
    val createPrintFunctions: bool ref
    val maxInlineSize: int ref
    val narrowOverloadFlexRecord: bool ref
    val traceCompiler: bool ref

    val parsetree: bool ref
    val codetree: bool ref
    val codetreeAfterOpt: bool ref
    val assemblyCode: bool ref
    val pstackTrace: bool ref

    val fixityNames : unit -> string list
    val functorNames : unit -> string list
    val signatureNames: unit -> string list
    val structureNames: unit -> string list
    val typeNames: unit -> string list
    val valueNames: unit -> string list

    val forgetFixity : string -> unit
    val forgetFunctor : string -> unit
    val forgetSignature : string -> unit
    val forgetStructure : string -> unit
    val forgetType : string -> unit
    val forgetValue : string -> unit
  end
datatype compilerParameters

The compilerParameters datatype is used to construct a list of options for the PolyML.compiler function. These options control various aspects of the compilation. The options are arranged so that only those options that are actually required need to be included. If the option is not included in the list the compiler uses a default value. In each case the default value is listed.

CPOutStream of string->unit

Provide an output stream for output from the compiler. It is also used for printing the results unless CPPrintStream is provided. Default use TextIO.print to print to TextIO.stdOut.

CPNameSpace of PolyML.NameSpace.nameSpace

Name space to look up and enter results. Identifiers not defined locally within the code are looked up in this name space. When the compiled code is executed the results are added to this name space by calling the appropriate enter function. Default: PolyML.globalNameSpace

CPErrorMessageProc of
{ message: PolyML.pretty, hard: bool, location: PolyML.location, context: PolyML.pretty option } -> unit

Called by the compiler to generate error and warning messages. message is the message as a pretty-print data structure. isHard indicates whether this is a fatal error or a warning; it is true if this is an error, false if a warning. location is the file-name, line number and position. context is an optional extra piece of information showing the part of the parse tree where the error was detected if that is appropriate. Default: print a message to the stream provided by th CPOutStream option or TextIO.stdOut if that is not provided.

CPLineNo of unit -> int
  CPLineOffset of unit -> int
  CPFileName of string

CPLineNo, CPLineOffset and CPFileName can be used to provide information that go to form values of the location type. These values appear in many different situations when the compiler is reporting information; examples include error messages, the debugger and parse-trees. The compiler itself makes no interpretation of the values, simply recording the information and associating it with the start and end of lexical and parsed items. This allows user code that calls compiler to make its own interpretation. However, various ML functions, such as use and make and the interactive debugger, assume that CPFileName is the name of the source file and CPLineNo the number of the line. CPFileName is fixed for a particular call to compiler whereas the compiler calls CPLineNo and CPLineOffset for each lexical item. The default values are the empty string for CPFileName and functions that return zero for CPLineNo and CPLineOffset.

CPPrintInAlphabeticalOrder of bool

This controls whether the default result function should sort the results by alphabetical order before printing them. If an alternative result function has been set using CPResultFun or CPCompilerResultFun this option is ignored. Default: value of printInAlphabeticalOrder.

CPResultFun of {
fixes: (string * fixityVal) list, values: (string * valueVal) list,
structures: (string * structureVal) list, signatures: (string * signatureVal) list,
functors: (string * functorVal) list, types: (string * typeVal) list} -> unit

Provides a function to be included in the resulting code of the compiler to apply to the results of bindings. It is only called when the top-level code has been executed and has not raised an exception. Default: print and enter the values into the name-space provided by CPNameSpace or PolyML.globalNameSpace.

CPCompilerResultFun of
PolyML.parseTree option *
( unit -> {
fixes: (string * fixityVal) list, values: (string * valueVal) list,
structures: (string * structureVal) list, signatures: (string * signatureVal) list,
functors: (string * functorVal) list, types: (string * typeVal) list}) option -> unit -> unit

Function to process the result of compilation. This can be used to capture the parse tree even if type-checking fails. Default: Execute the code and call the result function if the compilation succeeds. Raise an exception if the compilation failed.

CPProfiling of int

This is no longer used.

CPTiming of bool

This is no longer used.

CPDebug of bool

Control whether calls to the debugger should be inserted into the compiled code. This allows breakpoints to be set, values to be examined and printed
and functions to be traced at the cost of a significant run-time overhead. Default: value of debug.

CPPrintDepth of unit->int

This controls the depth of printing if the default CPResultFun is used. It is also bound into any use of PolyML.print in the compiled code and will
be called to get the print depth whenever that code is executed. Default: Get the current value of printDepth i.e. the value set by PolyML.print_depth.

CPPrintStream of string->unit

This is bound into any occurrence of PolyML.print and is used to produce the outut. Default: the value of CPOutStream or TextIO.print if it is not provided.

CPErrorDepth of int

Controls the depth of context to produce in error messages. Default : Get the current value of errorDepth i.e. the value set by PolyML.error_depth.

CPLineLength of int

Bound into any occurrences of PolyML.print. This is the length of a line used in the pretty printer. Default: Get the current value of lineLength i.e. the value set by PolyML.line_length.

CPRootTree of
{
parent: (unit -> PolyML.parseTree) option,
next: (unit -> PolyML.parseTree) option,
previous: (unit -> PolyML.parseTree) option
}

This can be used to provide a parent for parse trees created by the compiler. This appears as a PTparent property in the tree. The default is NONE which does not to provide a parent.

CPAllocationProfiling of int

Controls whether to add profiling information to each allocation. Currently zero means no profiling and one means add the allocating function.

CPDebuggerFunction of int * valueVal * int * string * string * nameSpace -> unit

This is no longer used and is just left for backwards compatibility.

val printDepth : int ref

printDepth controls the depth of output to produce when printing output either in the result or in PolyML.print. Its value is also set by PolyML.print_depth.

val errorDepth : int ref

errorDepth controls the depth of output to produce when printing error messages. Its value is also set by PolyML.error_depth.

val lineLength : int ref

lineLength controls the length of a line when printing output either in the result or in PolyML.print. Its value is also set by PolyML.line_length.

val parsetree: bool ref
val codetree: bool ref
val codetreeAfterOpt: bool ref
val assemblyCode: bool ref
val pstackTrace: bool ref

These switches control whether the compiler should produce debugging output. The default is false for each. parsetree controls printing of the parsed ML source, codetree controls printing of the intermediate code, codetreeAfterOpt controls printing that code after the optimiser, assemblyCode controls printing the low-level machine code and pstackTrace the printing of the low-level pseudo-stack.

val compilerVersion: string
val compilerVersionNumber: int

compilerVersion and compilerVersionNumber contain information about the version of the compiler. For version 5.5.2 these contain "5.5.2 Release" and 552 respectively.

val prompt1: string ref
val prompt2: string ref

prompt1 and prompt2 contain the prompts for input used by the default Poly/ML top-level read-eval-print loop, PolyML.shell. prompt1 contains "> " and prompt2 contains "# " by default. They are included in the Compiler structure for historical reasons.

val reportExhaustiveHandlers: bool ref

The Poly/ML compiler produce a warning message if it is given a pattern match sequence which is not exhaustive, that is there are values that are not matched by any of the patterns. This warning message is not produced in the case of a handler where unhandled values are simply reraised.

There are circumstances where it is important that certain exceptions must not be caught, or if they are caught the handler must be reraise them in order to ensure that they return control to the outer level. This reference controls whether the compiler should produce a warning if an exception handler matches all exceptions rather than only specific exceptions. It may also be helpful to check for the situation where an exception handler is intended to match a single exception but because the exception identifier has been mistyped it is treated as a variable matching all exceptions. It defaults to false.

val reportUnreferencedIds: bool ref

This reference controls whether the compiler should produce a warning for identifiers that are declared but never used. Currently it is restricted to value bindings. It defaults to false.

val reportDiscardFunction: bool ref
val reportDiscardNonUnit: bool ref

These references control whether the compiler should produce a warning if a value is discarded. In an expression sequence or a let-binding only the value of the last expression is returned and the values of expressions followed by semicolons are discarded. Typically they are evaluated for their side-effects and return unit. reportDiscardFunction, default true, produces a warning message if the value being discarded has a function type but not otherwise. reportDiscardNonUnit, default false, produces a warning unless the discarded value has unit type.

val printInAlphabeticalOrder: bool ref

This reference controls whether the default result function for the compiler should sort the bindings being produced into alphabetical order. It provides the default value if the CPPrintInAlphabeticalOrder is not provided. It defaults to true.

val lowlevelOptimise: bool ref

This reference controls whether the compiler should perform low-level optimisations. This defaults to true and should not normally need to be changed.

val inlineFunctors: bool ref

This reference controls whether the compiler should treat ML functors as inline functions. All type checking is performed when the functor is declared but code-generation is deferred until the functor is applied to its argument structures. This defaults to true and should not normally need to be changed.

val createPrintFunctions: bool ref

This reference controls whether the compiler should generate default print functions for datatypes. This defaults to true.

val maxInlineSize: int ref

This reference controls how the compiler chooses to implement functions. If a function is small it is treated as an inline function and its code is expanded wherever it is used. If it is large it is compiled into a separate function and a call is made to it when it is used. Certain functions, such as recursive functions that are not tail-recursive or functions that are being passed as arguments or returned as results, cannot be treated as inline. The value represents the maximum size of a small function in some notional size units. It defaults to 80. Increasing the value will make the compiler treat more functions as inline.

val narrowOverloadFlexRecord: bool ref

This reference controls the way the Poly/ML compiler treats flexible records, i.e. record patterns containing "...", and overloading. The ML Definition says that these are resolved by the context but does not define exactly what that context should be, allowing different compilers to interpret this differently. With this reference set to false, the default, the Poly/ML compiler uses the whole of the topdec as the context to find a suitable fixed record type or to find the type of an overloaded function. When it is set to true the compiler uses the immediate val or fun binding as the context. The effect of this is that it may produce an error message unless appropriate type constraints have been included. However, that may ensure that the code is portable to compilers which take a more restrictive view than Poly/ML.

val traceCompiler: bool ref

This reference controls whether the compiler should produce an exception trace if an exception occurs within the compiler. This defaults to false.

val fixityNames : unit -> string list
val functorNames : unit -> string list
val signatureNames: unit -> string list
val structureNames: unit -> string list
val typeNames: unit -> string list
val valueNames: unit -> string list

These functions return the appropriate list from PolyML.globalNameSpace. They can all be written in terms of functions in the NameSpace structure and are included in the Compiler structure for backwards compatibility only.

val forgetFixity: string -> unit
val forgetFunctor: string -> unit
val forgetSignature: string -> unit
val forgetStructure: string -> unit
val forgetType: string -> unit
val forgetValue: string -> unit

These functions delete entries from PolyML.globalNameSpace. They are included in the Compiler structure for historical reasons.

val debug: bool ref

This reference controls whether debugging information is included in the compiled code. The value of this reference is used unless the CPDebug option is provided. Setting this to true increases the run-time by many factors.

val timing: bool ref

Setting this reference to true causes the compiler to include timing information in the output after each topdec. The timing information includes information about various passes of the compiler and also the execution time of the topdec. Its value is also set by the PolyML.timing function.

 
polyml-5.7.1/documentation/Reference/Universal.html0000644000175000017500000000614013204034553021405 0ustar daviddavid The Universal structure

Universal structure

The Universal structure provides a universal union type. It allows value of any type to be stored in a single table without knowing in advance the types to be stored. Note that this is not the same as a dynamic type. The values are discriminated by the tag, not by the type. There may be more than one tag that can be used with values of a particular type and these are treated as completely different. Universal is built in for efficiency reasons but it is perfectly feasible to implement it in Standard ML using exception bindings.

structure Universal:
  sig
    type universal
    type 'a tag
    val tag: unit -> 'a tag
    val tagInject: 'a tag -> 'a -> universal
    val tagIs: 'a tag -> universal -> bool
    val tagProject: 'a tag -> universal -> 'a
  end
type universal

The type of the universal union.

type 'a tag

The type of a tag that can be used to mark a value of the argument type.

val tag: unit -> 'a tag

Create a tag that can be used to identify a value of a particular type.

val tagInject: 'a tag -> 'a -> universal

Inject a value into the union. This marks the value with the tag.

val tagIs: 'a tag -> universal -> bool

Test whether the value was marked with the tag.

val tagProject: 'a tag -> universal -> 'a

Project a value from the union. The tag must match the tag that was used to create union value otherwise a Match exception will be raised.

polyml-5.7.1/documentation/Reference/Weak.html0000644000175000017500000001332513204034553020327 0ustar daviddavid The Weak structure and signature

Weak structure

The Weak structure contains functions for constructing weak references and arrays. A weak reference is a way of detecting when a resource is no longer in use and can be recovered. It is, in effect, a way of extending the concept of garbage-collection to user code.

signature WEAK =
sig
    val weak: 'a ref option -> 'a ref option ref
    val weakArray: int * 'a ref option -> 'a ref option array
    val weakLock: Thread.Mutex.mutex
    and weakSignal: Thread.ConditionVar.conditionVar
end;

structure Weak: WEAK;
val weak: 'a ref option -> 'a ref option ref

Constructs a weak reference.

val weakArray: int * 'a ref option -> 'a ref option array

Constructs an array containing weak references.

val weakLock: Thread.Mutex.mutex
val weakSignal: Thread.ConditionVar.conditionVar

A lock and a condition variable that is broadcast when the garbage collector has recovered a token.

The idea behind weak references is to allow user library code to recover resources when they are no longer in use. This is only relevant for resources, such as file descriptors, that exist outside the Poly/ML memory and need to be recovered.

The garbage-collector recovers space in the heap by identifying cells that are reachable from roots, generally the stacks of threads, and treating everything else as garbage. This can be extended to external resources by associating a token with the resource. While the token is reachable the resource is considered to be in use. Once the token ceases to be reachable the resource can be recovered.

A weak reference is used to detect when the token is no longer accessible. To make use of this the library code must allocate a normal reference value, the token, whenever it constructs or links to the external resource and include the token within the data it returns to the client code. The contents of the reference are not relevant; it can be a unit ref, what matters is the identity of the reference. When the library creates a token it makes an entry in its own data structure within a weak reference or array. That entry is set to SOME token. Note that the type of a weak reference is 'a ref option ref i.e. it can only contain an option type holding a reference value.

Provided the client code continues to use the resource and has a reachable pointer to the token there will be no change to the state. If, though, it discards the data associated with the resource and hence the pointer to the token the resource is considered to be released and the library may recover the resource. If the garbage collector detects that there are no other pointers to the token except the weak reference it will change the weak reference from SOME token to NONE, so there are no longer any pointers at all.

To actually release the external resource the library must check the weak references or arrays within its own data structures and look for entries that have been set to NONE. Depending how the library code works it may be appropriate to do this synchronously whenever a request is made to allocate a new resource. An alternative would be to create a new thread to manage the process asynchronously. To aid this the thread should lock the weakLock mutex and suspend itself by calling Thread.ConditionVar.wait or Thread.ConditionVar.waitUntil, passing weakLock and weakSignal as arguments. The weakSignal condition variable is broadcast after a garbage-collection if the garbage collector has modified a weak reference. Because there may be several libraries using weak references the receipt of the signal does not guarantee that a resource associated with any particular library has been released.

The garbage-collector is only run when necessary and detection of released resources may happen very infrequently, depending on factors such as the size of the heap. To force a collection the library can call PolyML.fullGC.

polyml-5.7.1/documentation/Reference/SingleAssignment.html0000644000175000017500000001175413204034553022716 0ustar daviddavid The SingleAssignment structure

SingleAssignment structure

The SingleAssignment structure provides a reference that can be assigned a value only once.

structure SingleAssignment:
  sig
    type 'a saref
    val saref: unit -> 'a saref

    exception Locked
    val saset: 'a saref * 'a -> unit
    val savalue: 'a saref -> 'a option
  end
type 'a saref

The type of a single-assignment reference. It is similar to the standard ref type constructor.

val saref: unit -> 'a saref

Construct a single-assignment reference.

exception Locked

This exception is raised if an attempt is made to assign a value twice to the same reference.

val saset: 'a saref * 'a -> unit

Assign a value to the reference. If it has already been assigned a value this will raise Locked. Note that this function is not thread-safe. A mutex must be associated with reference if there is the possibility that two different threads may attempt to assign to the same reference.

val savalue: 'a saref -> 'a option

Extract the current value of the reference. If it has not yet been assigned a value it will return NONE. If it has, it will return SOME v where v is the value that was assigned.

The reason behind the SingleAssignment structure has to do with the way the Poly/ML storage management system deals with mutable and immutable data. Immutable memory cells are given a value when they are created and once created never change. They are used for lists, tuples, vectors and other datatypes. In contrast, refs and arrays are mutable data. They are given a value when they are created in the same way as immutable data but their contents can change by assignment. In addition Standard ML also distinguishes between mutable and immutable data in the treatment of equality. Immutable data structures are considered equal if their contents are the same, mutable cells are considered equal only if they are the pointers to the same cell.

Because of these differences mutable data has to be handled separately from immutable data by the garbage collector. Using mutable cells imposes an extra cost on each collection when compared with immutable data. In addition it is possible to reduce the heap size by merging immutable cells that have the same contents. In some circumstances the garbage collector may do this automatically; more often it is done explicitly using PolyML.shareCommonData.

The SingleAssignment structure allows for a combination of mutable and immutable data. A value of type saref is initially mutable but once it has been assigned a value it is marked as immutable. This allows the garbage-collector and sharing code to treat it as purely immutable once it has been locked.

A typical use for a single-assignment reference is when a data structure is being built by multiple threads. A saref can be used within the data structure to represent a portion of the structure to be built and a thread created to build it. When the thread completes it assigns the saref with the results of its work. The full structure is now immutable with all the advantages of immutable data.

polyml-5.7.1/documentation/Reference/Threads.html0000644000175000017500000004337413204034553021041 0ustar daviddavid The Thread structure and signature

Thread structure

Earlier versions of Poly/ML have provided a form of concurrent execution through the Process structure. Version 5.1 introduces new thread primitives in the Thread structure. This structure is modelled on the Posix thread (pthread) package but simplified and modified for ML. The aim is to provide an efficient implementation of parallelism particularly to enable ML programs to make use of multi-core processors while minimising the changes needed to existing code. The Process structure will continue to be available as a library written on top of these primitives but new programs should use the Thread structure directly.

The thread package differs from pthreads in a number of ways. There is no join function to wait for the completion of a thread. This can be written using mutexes and condition variables. Cancellation and signal handling are combined into the interrupt functions. (The Poly/ML Signal structure handles signals for all the threads together). The effect of explicit cancellation is achieved using the interrupt function. This causes an interrupt to be generated in a specific thread. Alternatively an interrupt can be broadcast to all threads. This is most likely to be used interactively to kill threads that appear to have gone out of control. The normal top-level handler for a console interrupt will generate this. Threads can choose how or whether they respond to these interrupts. A thread that is doing processor-intensive work probably needs to be able to be interrupted asynchronously whereas if it is communicating with other threads the presence of asynchronous interrupts makes correct programming difficult.

signature THREAD =
sig
    exception Thread of string
    
    structure Thread:
    sig
        type thread;
        
        datatype threadAttribute =
            EnableBroadcastInterrupt of bool
        |   InterruptState of interruptState
        |   MaximumMLStack of int option (* Added in 5.5.3 *) 
        
        and interruptState =
            InterruptDefer
        |   InterruptSynch
        |   InterruptAsynch
        |   InterruptAsynchOnce
        
        val fork: (unit->unit) * threadAttribute list -> thread
        val exit: unit -> unit
        val isActive: thread -> bool
        
        val equal: thread * thread -> bool
        val self: unit -> thread
        
        exception Interrupt
        val interrupt: thread -> unit
        val broadcastInterrupt: unit -> unit
        val testInterrupt: unit -> unit
        val kill: thread -> unit
       
        val getLocal: 'a Universal.tags -> 'a option
        val setLocal: 'a Universal.tag * 'a -> unit
        
        val setAttributes: threadAttribute list -> unit
        val getAttributes: unit -> threadAttribute list

        val numProcessors: unit -> int
    end

    structure Mutex:
    sig
        type mutex
        val mutex: unit -> mutex
        val lock: mutex -> unit
        val unlock: mutex -> unit
        val trylock: mutex -> bool
    end

    structure ConditionVar:
    sig
        type conditionVar
        val conditionVar: unit -> conditionVar
        val wait: conditionVar * Mutex.mutex -> unit
        val waitUntil: conditionVar * Mutex.mutex * Time.time -> bool
        val signal: conditionVar -> unit
        val broadcast: conditionVar -> unit
    end

end;

The Thread substructure

exception Thread of string
The Thread exception can be raised by various of the functions in the structure if they detect an error.
type thread
The type of a thread identifier.
datatype threadAttribute =
        EnableBroadcastInterrupt of bool
    |   InterruptState of interruptState
    |   MaximumMLStack of int option
and interruptState =
        InterruptDefer
   |    InterruptSynch
   |    InterruptAsynch
   |    InterruptAsynchOnce
The type of a thread attribute. Thread attributes are properties of the thread that are set initially when the thread is created but can subsequently be modified by the thread itself. The thread attribute type may be extended in the future to include things like scheduling priority. The current thread attributes control the way interrupt exceptions are delivered to the thread.
EnableBroadcastInterrupt controls whether the thread will receive an interrupt sent using broadcastInterrupt or as a result of pressing the console interrupt key. If this is false the thread will not receive them. The default for a new thread if this is not specified is false.

InterruptState controls when and whether interrupts are delivered to the thread. This includes broadcast interrupts and also interrupts directed at a specific thread with the interrupt call. InterruptDefer means the thread will not receive any interrupts. However, if the thread has previously been interrupted the interrupt may be delivered when the thread calls setAttributes to change its interrupt state. InterruptSynch means interrupts are delivered synchronously. An interrupt will be delayed until an interruption point. An interruption point is one of: testInterrupt, ConditionVar.wait, ConditionVar.waitUntil and various library calls that may block, such as IO calls, pause etc. N.B. Mutex.lock is not an interruption point even though it can result in a thread blocking for an indefinite period. InterruptAsynch means interrupts are delivered asynchronously i.e. at a suitable point soon after they are triggered. InterruptAsynchOnce means that only a single interrupt is delivered asynchronously after which the interrupt state is changed to InterruptSynch. It allows a thread to tidy up and if necessary indicate that it has been interrupted without the risk of a second asynchronous interrupt occurring in the handler for the first interrupt. If this attribute is not specified when a thread is created the default is InterruptSynch.

MaximumMLStack was added in version 5.5.3. It controls the maximum size the ML stack may grow to. It is an option type where NONE allows the stack to grow to the limit of the available memory whereas SOME n limits the stack to n words. This is approximate since there is some rounding involved. When the limit is reached the thread is sent an Interrupt exception.

      
val fork: (unit->unit) * threadAttribute list -> thread
Fork a thread. Starts a new thread running the function argument. The attribute list gives initial values for thread attributes which can be modified by the thread itself. Any unspecified attributes take default values. The thread is terminated when the thread function returns, if it raises an uncaught exception or if it calls "exit".
val exit: unit -> unit
Terminate this thread.
val isActive: thread -> bool
Test if a thread is still running or has terminated.
val equal: thread * thread -> bool
Test whether thread values denote the same thread.
val self: unit -> thread
Return the thread identifier for the current thread.
exception Interrupt = SML90.Interrupt
The Interrupt exception can be generated in another thread either by a broadcast to all threads or directed to a single thread.
val interrupt: thread -> unit
Send an Interrupt exception to a specific thread. When and indeed whether the exception is actually delivered will depend on the interrupt state of the target thread.
val broadcastInterrupt: unit -> unit
Send an interrupt exception to every thread which is set to accept it.
val testInterrupt: unit -> unit
If this thread is handling interrupts synchronously, test to see if it has been interrupted. If so it raises the Interrupt exception.
val kill: thread -> unit
Terminate a thread. This should be used as a last resort. Normally a thread should be allowed to clean up and terminate by using the interrupt function. Raises Thread if the thread is no longer running, so an exception handler should be used unless the thread is known to be blocked.
val getLocal: 'a Universal.tas -> 'a option
val setLocal: 'a Universal.tag * 'a -> unit
Get and set thread-local store for the calling thread. The store is a tagged associative memory which is initially empty for a new thread. A thread can call setLocal to add or replace items in its store and call getLocal to return values if they exist. The Universal structure contains functions to make new tags as well as injection, projection and test functions.
val setAttributes: threadAttribute list -> unit
Thread attributes are initially set when the thread is forked but can be changed by thread itself using this call. Unspecified attributes remain unchanged.
val getAttributes:  unit -> threadAttribute list
Get the values of attributes for the current thread.
val numProcessors: unit -> int
Return the number of processors configured on the machine.

The Mutex substructure

A mutex provides simple mutual exclusion. A thread can lock a mutex and until it unlocks it no other thread will be able to lock it. Locking and unlocking are intended to be fast in the situation when there is no other process attempting to lock the mutex. Mutexes are non-recursive: if a thread tries to lock a mutex that it has already locked it will deadlock. Note: a thread should never attempt to lock or unlock a mutex if it may receive an asynchronous interrupt. It should always set its interrupt state to either InterruptDefer or InterruptSynch before calling these functions. An asynchronous interrupt may leave the mutex in an indeterminate state.

type mutex
The type of a mutex
val mutex: unit -> mutex
Create a new mutex.
val lock: mutex -> unit
Lock a mutex. If the mutex is currently locked the thread is blocked until it is unlocked. If a thread tries to lock a mutex that it has previously locked the thread will deadlock. N.B. "lock" is not an interruption point (a point where synchronous interrupts are delivered) even though a thread can be blocked indefinitely. If the thread attempting to lock the mutex is handling interrupts asynchronously an asynchronous interrupt may be delivered before or after the lock is taken.
val unlock: mutex -> unit
Unlock a mutex and allow any waiting threads to run. The behaviour if the mutex was not previously locked by the calling thread is undefined.
val trylock: mutex -> bool
Attempt to lock the mutex without blocking. Returns true if the mutex was not previously locked and has now been locked by the calling thread. Returns false if the mutex was previously locked, including by the calling thread.

The ConditionVar substructure

Condition variables. Condition variables are used to provide communication between threads. A condition variable is used in conjunction with a mutex and usually a reference to establish and test changes in state. The normal use is for one thread to lock a mutex, test the reference and then wait on the condition variable, releasing the lock on the mutex while it does so. Another thread may then lock the mutex, update the reference, unlock the mutex, and signal the condition variable. This wakes up the first thread and reacquires the lock allowing the thread to test the updated reference with the lock held. More complex communication mechanisms, such as blocking channels, can be written in terms of condition variables.

type conditionVar
The type of a condition variable
val conditionVar: unit -> conditionVar
Make a new condition variable.
val wait: conditionVar * Mutex.mutex -> unit

Release the mutex and block until the condition variable is signalled. When wait returns the mutex will have been re-acquired.

If the thread is handling interrupts synchronously this function can be interrupted using the "Thread.interrupt" function or, if the thread is set to accept broadcast interrupts, "Thread.broadcastInterrupt". The thread will re-acquire the mutex before the exception is delivered. An exception will only be delivered in this case if the interrupt is sent before the condition variable is signalled. If the interrupt is sent after the condition variable is signalled the function will return normally even if it has not yet re-acquired the mutex. The interrupt state will be delivered on the next call to "wait", "Thread.testInterrupt" or other blocking call.

A thread should never call this function if it may receive an asynchronous interrupt. It should always set its interrupt state to either InterruptSynch or InterruptDefer beforehand. An asynchronous interrupt may leave the condition variable and the mutex in an indeterminate state and could lead to deadlock.

A condition variable should only be associated with one mutex at a time. All the threads waiting on a condition variable should pass the same mutex as argument.

val waitUntil: conditionVar * Mutex.mutex * Time.time -> bool
As wait except that it blocks until either the condition variable is signalled or the time (absolute) is reached. Either way the mutex is reacquired so there may be a further delay if it is held by another thread. Returns true if the condition variable had been signalled and false if the time had expired before the variable was signalled.
val signal: conditionVar -> unit
Wake up one thread if any are waiting on the condition variable. If there are several threads waiting for the condition variable one will be selected to run and will run as soon as it has re-acquired the lock.
val broadcast: conditionVar -> unit
Wake up all threads waiting on the condition variable.


polyml-5.7.1/documentation/Reference/PolyMLDebuggerInterface.html0000644000175000017500000002270113204034553024100 0ustar daviddavid The PolyML.DebuggerInterface structure

The PolyML.DebuggerInterface structure

The PolyML.DebuggerInterface structure provides a programmatic interface to assist with debugging programs. It is intended for use by applications that replace the default Poly/ML top-level. Most users will not need to use this and for most purposes the functions in PolyML.Debug will be more appropriate.

structure DebuggerInterface:
  sig
     val setOnEntry: (string * location -> unit) option -> unit
     val setOnExit: (string * location -> unit) option -> unit
     val setOnExitException: (string * location -> exn -> unit) option -> unit
     val setOnBreakPoint: (location * bool ref -> unit) option -> unit

     type debugState
     val debugState: Thread.Thread.thread -> debugState list
     val debugFunction: debugState -> string
     val debugFunctionArg: debugState -> NameSpace.Values.value
     val debugFunctionResult: debugState -> NameSpace.Values.value
     val debugLocation: debugState -> location
     val debugNameSpace: debugState -> NameSpace.nameSpace
     val debugLocalNameSpace: debugState -> NameSpace.nameSpace
  end

The Poly/ML compiler will add debugging information to a program if PolyML.Compiler.debug is set to true or CPDebug true is included among the options. By default, these options are turned off because using them greatly reduces the speed of the code and in particular optimisations such as tail-recursion are disabled. When debugging is enabled the compiler adds code to allow the debugger to be entered at various points and for the debugger then to extract information about the state of the program being debugged, the debuggee.

There are four global references that can be set by the debugger. Each of them holds an optional function and the code being debugged tests these references at various points in the program and calls the function if it is set.

val setOnEntry: (string * location -> unit) option -> unit

The function set with setOnEntry is called at the start of every function. This function is called with the name of the function and its location. It is called after the argument information has been added to the debug state but before anything else.

val setOnExit: (string * location -> unit) option -> unit

The function set with setOnExit is called at the end of every function if it returns a result. This function is called with the name of the function and its location. It is called after the function result has been added to the debug state.

val setOnExitException: (string * location -> exn -> unit) option -> unit

The function set with setOnExitException is called at the end of every function if it is returning by raising an exception. This function is called with the name of the function and its location and with the exception packet being returned.

val setOnBreakPoint: (location * bool ref -> unit) option -> unit

The function set with setOnBreakPoint is called at various break-points within the function. Currently the compiler inserts break-points at the beginning of the expression in a match, i.e. after the pattern has been discriminated and any variable bindings have been made; after each value declaration; after each expression separated by semicolons in let-expressions or parenthesised sequence of expressions; at the beginning of the then- and else-parts of an if-then-else and at the start of the body of a while-expression.

The function is called with two arguments: the location of the break-point and a break-point identifier, a boolean reference. Break-point identifiers are intended for use with an IDE that is capable of examining the parse-tree. A node in the parse-tree with a break-point associated with it will contain a PTbreakPoint property. All break-point identifiers are initially false. To set a break-point at a particular node the IDE should set the reference to true and install a break-point function that calls the debugger when it is passed a reference that is true.

All functions are called by the thread that is running the program being debugged. All the functions return unit and if they return normally the program will continue as before. It is possible for the function to raise an exception in which case this exception will be raised in place of any existing exception. This can sometimes be useful to terminate the program. Installing any function will add an overhead to the running program. It is better to set a function option to NONE if it is not actually required.

When debugging is enabled the running program maintains information about local variables that can be examined when the program has stopped by calling in to the debugger.

type debugState
val debugState: Thread.Thread.thread -> debugState list

The stack of a debuggable thread can be extracted using the debugState function. This should either be called by the thread itself or by the debugger after the thread has been paused with a condition variable. Extracting the debugging state of another thread while the thread is running will lead to unpredictable results.

val debugFunction: debugState -> string
val debugFunctionArg: debugState -> PolyML.NameSpace.valueVal
val debugFunctionResult: debugState -> PolyML.NameSpace.valueVal

Each node in the state list normally represents a function. These return the name of the function, its argument and its result. The result is only available in an exit function.

val debugLocation: debugState -> location

This function returns the location associated with a node in the list. This will either be the location of the break-point or where the function has called the next function in the list.

val debugNameSpace: debugState -> nameSpace

Access to the local variables can be obtained through the name-space. A name-space is a record of functions that can be used to look up variables and list the variables. In the general case it can also be used to add variables to the name space but that is not appropriate here and the enter functions all raise an exception. The name space can be used directly to print the values of variables using functions from PolyML.NameSpace. Alternatively the name-space can be used with the Poly/ML compiler to provide an interactive top-level in which the user can enter expressions to be evaluated with local variables as though they had been declared at the top-level. When paused at a break-point it is possible to evaluate local functions as though they were global. Any changes to local reference values will affect the program state when the program resumes.

Currently, the name space contains all the variables that were in scope at the break-point, both those local to the function itself and free variables declared in outer scopes. It excludes any variables that were declared in the outer top-level scope.

polyml-5.7.1/documentation/Reference/Signal.html0000644000175000017500000000611013204034553020647 0ustar daviddavid The Signal structure

Signal structure

Although the Posix structure in the Standard Basis Library provides functions which send signals to a process there is no standard method of handling signals.  The Signal structure has been added to Poly/ML to allow signals to be blocked or handled.

structure Signal:
  sig
     datatype sig_handle = SIG_DFL | SIG_IGN | SIG_HANDLE of int -> unit
	  val signal = fn : int * sig_handle -> sig_handle
  end

The Signal.signal function takes as its arguments a signal number and an action and returns the previous action.  The action may be SIG_DFL, indicating the default action, SIG_IGN, indicating that the signal should be ignored (blocked) or SIG_HANDLE, which allows a handler function to be installed.   

Signals are represented as integers using the normal Unix signal numbering.  In the Unix implementations of Poly/ML the type Posix.Signal.signal is the same as int so the constants from Posix.Signal can be used as arguments to Signal.signal.  

The default action depends on the signal.  For some signals it is to ignore the signal, for others the process is killed.  See the signal man page in Unix for a list of the default actions.  The only exception is the console interrupt signal, signal number 2.  The default action here is to run the conventional Poly/ML console interrupt handler which prompts for various actions including getting a stack trace and raising an Interrupt exception.

A handler function installed using SIG_HANDLE is run as a separate process (thread) some time after a signal arrives. 

Several signals, such as SIGSEGV, SIGFPE and SIGILL, are used internally by Poly/ML.   It is not possible to install a handler or block these signals.  Although the SIGALRM (14) signal is used internally it is treated specially and a signal handler for SIGALRM may be installed.  The handler will be run whenever the timer set up by Posix.Process.alarm expires as though the signal had been delivered. 

Signal actions installed using Signal.signal are persistent.

The Signal structure is provided in the Windows implementation but only the console interrupt signal (2) has effect.

polyml-5.7.1/documentation/Reference/PolyMLStructure.html0000644000175000017500000013257513204034553022546 0ustar daviddavid The PolyML structure

The PolyML structure

Generally, the basis library of Poly/ML follows the ML standard libraries. With a few exceptions the extensions are all contained in the PolyML structure. There are a number of sub-structures that are documented separately.

structure PolyML:
sig
   type location =
       {file: string, startLine: int, endLine: int, startPosition: int, endPosition: int}

   structure CodeTree : sig ... end

   structure Compiler : sig ... end 

   val compiler: (unit -> char option) * Compiler.compilerParameters list -> unit -> unit

   structure Debug : sig ... end

   structure DebuggerInterface : sig ... end

   structure Exception : sig ... end
   val exceptionLocation: exn -> location option
   val raiseWithLocation : exn * location -> 'a
   val exception_trace: (unit -> 'a) -> 'a

   structure NameSpace : sig ... end
   val globalNameSpace: NameSpace.nameSpace

   structure Profiling: sig ... end

   structure SaveState : sig ... end
   val loadModule: string -> unit

   structure Statistics : sig ... end

   structure IDEInterface :
   sig
      val parseTree : (string * (location * ptProperties list) list) ref
      val runIDEProtocol : unit -> unit
   end

   structure IntInf:
   sig
      val gcd : int * int -> int
      val lcm : int * int -> int
   end

   val export: string * (unit -> unit) -> unit
   val exportPortable: string * (unit -> unit) -> unit
   val shareCommonData : 'a -> unit

   val onEntry : (unit -> unit) -> unit

   val architecture : unit -> string
   val rtsArgumentHelp : unit -> string
   val rtsVersion : unit -> int

   val make: string -> unit
   val use : string -> unit
   val getUseFileName: unit -> string option
   val suffixes = ref ["", ".ML", ".sml"]: string list ref

   val objSize: 'a -> int
   val showSize : 'a -> int
   val objProfile : 'a -> int

   datatype ptProperties =
        PTbreakPoint of bool ref
| PTcompletions of string list
| PTdeclaredAt of location
| PTdefId of int
| PTfirstChild of unit -> parseTree
| PTnextSibling of unit -> parseTree
| PTopenedAt of location
| PTparent of unit -> parseTree
| PTpreviousSibling of unit -> parseTree
| PTprint of int -> pretty
| PTreferences of bool * location list
| PTrefId of int
| PTstructureAt of location
| PTtype of NameSpace.Values.typeExpression type parseTree = location * ptProperties list datatype context = ContextLocation of location | ContextProperty of string * string datatype pretty = PrettyBlock of int * bool * context list * pretty list | PrettyBreak of int * int | PrettyLineBreak | PrettyString of string | PrettyStringWithWidth of string * int val prettyPrint : (string -> unit) * int -> pretty -> unit val prettyMarkup : (context list -> unit) * (context list -> unit) -> (string -> unit) * int -> pretty -> unit val prettyPrintWithIDEMarkup : (string -> unit) * int -> pretty -> unit val addPrettyPrinter : (int -> 'a -> 'b -> pretty) -> unit val prettyRepresentation : 'a * int -> pretty val print: 'a -> 'a val makestring: 'a -> string val print_depth: int -> unit val error_depth: int -> unit val line_length: int -> unit val rootFunction : unit -> unit val shell : unit -> unit val sourceLocation : unit -> location val fullGC : unit -> unit val pointerEq : 'a * 'a -> bool val stackTrace : unit -> unit val profiling : int -> unit val timing : bool -> unit end

The PolyML structure contains a large collection of functions, structures and types that are specific to Poly/ML.

val compiler: (unit -> char option) * Compiler.compilerParameters list -> unit -> unit

The PolyML.compiler function provides direct access to the compiler for Poly/ML. It is used by all the functions, such as use, shell and make that compile Standard ML source code into executable code.

compiler(instream, parms) takes an input stream, instream, and a set of optional parameters, parms, of type Compiler.compilerParameters. The input stream is called whenever the compiler wants to read the next character from the input. If it returns NONE the compiler assumes that it has reached an end-of-stream and does not read further. Otherwise the compiler stops when it has parsed a valid topdec, generally a declaration or expression with a final semicolon. The parameters, parms, provide a set of options to the compiler. There are default values for these options so it is possible to provide an empty list. The parameters, their meanings and the default values are listed under Compiler.compilerParameters.

If an error is detected compiler raises the Fail exception, otherwise the result of the compilation is a function of type unit->unit. This function represents the compiled code and calling this function executes the code. At that point any side-effects will be performed and bindings made by the code will be added to the name-space.

The compiler function itself is thread-safe, that is multiple instances of it can be executed in parallel without interference, provided suitable parameters are provided. In particular it may be necessary to ensure that the name-spaces passed as CPNameSpace parameters do not interfere.

structure Debug : sig ... end

Functions to aid interactive debugging. There is a reference here and a tutorial here.

structure DebuggerInterface : sig ... end

The DebuggerInterface structure contains functions to allow application code to access information about a program that has been compiled for debugging. It is intended for applications that replace the default Poly/ML top-level.

structure Exception : sig ... end
val exceptionLocation: exn -> location option
val raiseWithLocation : exn * location -> 'a
val exception_trace: (unit -> 'a) -> 'a

The Exception structure contains functions to assist with the location and tracing of exceptions. Three functions, exception_trace, exceptionLocation and raiseWithLocation were originally contained in the PolyML structure itself so for backwards compatibility they are available both in PolyML and PolyML.Exception.

structure NameSpace : sig ... end
val globalNameSpace: NameSpace.nameSpace

The NameSpace structure contains functions and types for printing the values produced by the compiler. globalNameSpace is the default name space. It contains the top-level bindings made by compiling source code with use or make or entering code at the top-level. Values in globalNameSpace can be extracted and displayed in the same way as any other values of the nameSpace type. Values can be deleted using Compiler.forgetValue etc.

structure Profiling : sig ... end

The Profiling structure contains functions to profile Poly/ML programs. As well as measuring the time spent in a function it can also measure the amount of memory allocated to identify functions that lead to excessive garbage-collection.

structure SaveState : sig ... end
val loadModule: string -> unit

The SaveState structure contains functions to save the current state to a file and restore the previous state. loadModule is a synonym for SaveState.loadModule.

structure Statistics : sig ... end

The Statistics structure contains functions to extract information about the Poly/ML run-time system. It can also be used to query statistics about other Poly/ML processes run by the same user.

val fullGC: unit -> unit

The fullGC function forces the run-time system to execute a full garbage collection. Normally this will not be required.

val pointerEq: 'a * 'a -> bool

The pointerEq function compares two values for identity. The normal ML rules for equality state that two values are equal if they have the same contents. The exception is mutable values, such as refs and arrays, which are considered equal only if they are the same ref or array. Equality is only possible for equality types, which excludes functions and values of type real.

PolyML.pointerEq can be applied to values of any type and returns true if the values are identifical. It is intended for use in user functions that wish to test for equality in a general sense and where a potentially expensive operation can be cut short if it is known that the arguments are actually the same. It should be used with care. Poly/ML only guarantees the ML equality property and the compiler and run-time system may merge or split immutable values. For example, shareCommonData, combines immutable values with the same contents.

val shareCommonData : 'a -> unit

The shareCommonData function is intended to reduce the storage requirements by merging immutable data, such as lists and strings, that have the same contents. Since the ML equality function tests for equality of contents rather than pointer equality, running shareCommonData does not affect the behaviour of an ML program unless it relies on non-standard functions such as PolyML.pointerEq. The shareCommonData function requires extra space on the heap and sorts the data before merging so can be expensive to run when the heap is large. The argument is the root of the data that should be shared. To share everything pass PolyML.rootFunction as the argument. It is frequently used before the heap is saved with PolyML.export or PolyML.SaveState.saveState.

val export: string * (unit -> unit) -> unit
val exportPortable: string * (unit -> unit) -> unit

The export and exportPortable functions are used to create object modules or object files. They both take arguments which are the name of the file to be written and a function to use as the root. All data reachable from the root are written to the output file. export writes an object file whose format depends on the particular operating system. On Linux and other similar systems this is an ELF object file, on Windows a PECOFF file and on Mac OS a Mach-O file. It can then be linked with the Poly/ML libraries to produce an executable file. exportPortable writes an operating-system-independent text file that can be read by the polyImport program. It is intended primarily to allow the Poly/ML system itself to be distributed by avoiding the necessity of having separate object files for each operating system. Note that the file contains machine code so while it is operating-system independent it is not independent of the architecture.

val onEntry: (unit -> unit) -> unit

The onEntry function adds a function to a list of functions that are executed when a Poly/ML program begins. It is primarily intended for libraries that need to be initialised.

val make: string -> unit

The make function is used to compile and build a set of modules from source. There is a separate description and tutorial.

val use: string -> unit

PolyML.use is the same function as the top-level use function. It takes a file name as its argument and compiles and executes the Standard ML code in the file. The file-name extension may be omitted if it is one of those listed in PolyML.suffixes. The inclusion of PolyML.use is really a relic from an early version of Standard ML which did not include a use function.

val getUseFileName: unit -> string option

This function can be called within a piece of ML code that is being compiled with use to return the file name and specifically the path that was used to refer to the file. It is useful if the ML code itself calls use because it can then adjust the path.

val suffixes = ref ["", ".ML", ".sml"]: string list ref

PolyML.suffixes holds a list of file-name extensions of ML source files. This is used by PolyML.use and PolyML.make. If they are given a file-name as an argument and the file does not exist they attempt to open a file with a name constructed from the original argument by adding each of the extensions in turn.

datatype ptProperties =
        PTbreakPoint of bool ref
| PTcompletions of string list
| PTdeclaredAt of location
| PTdefId of int
| PTfirstChild of unit -> parseTree
| PTnextSibling of unit -> parseTree
| PTopenedAt of location
| PTparent of unit -> parseTree
| PTpreviousSibling of unit -> parseTree
| PTprint of int -> pretty
| PTreferences of bool * location list
| PTrefId of int
| PTstructureAt of location
| PTtype of NameSpace.Values.typeExpression withtype parseTree = location * ptProperties list

The ptProperties datatype is associated with a parse-tree that has been exported from the compiler. The parse-tree is an abstract tree where each node has a location and a set of properties. The properties associated with a particular node vary according to the underlying parse-tree and circumstances.

PTfirstChild, PTnextSibling, PTpreviousSibling and PTparent are used to move between nodes. They are only present if the appropriate node exists. PPTfirstChild is present if the node has children and returns the first (leftmost) node. PTnextSibling and PTpreviousSibling return the next (right) and previous (left) nodes at the same level. PTparent returns the parent node.

PTtype returns a value that represents the type of the node. It is present on nodes that represent values and can have a type.

PTdeclaredAt, PTopenedAt, PTstructureAt and PTreferences may be present on nodes that represent identifiers. They provide location information. PTdeclaredAt provides the location where the identifier was declared. PTopenedAt and PTstructureAt are only present if the identifier came from a structure that had been opened and give the location where the structure had been opened and where the structure itself was declared.

PTprint produces a pretty-print structure of the node. It is present on most nodes. The argument is the depth of the data structure to produce before eliding the detail.

PTbreakPoint is only present if debugging has been enabled. It returns the debugger identifier for the node.

PTcompletions returns possible completions of an invalid identifier.

PTrefId and PTdefId properties are used with identifiers. PTdefId is a defining occurence of an identifier while PTrefId is a referencing occurrence.

datatype context =
       ContextLocation of location
   |   ContextProperty of string * string

The context type is primarily used by the IDE when providing error messages. For most purposes the context argument to PrettyBlock can be the empty list. ContextLocation provides the location associated with the item being printed, typically the location where it was declared. ContextProperty can be used by a user-supplied pretty printer to provide extra information which may be useful if the result of pretty printing is to be processed by a user function. It is not produced by Poly/ML pretty printers and the default printers ignore this item.

datatype pretty =
       PrettyBlock of int * bool * context list * pretty list
   |   PrettyBreak of int * int
   |   PrettyLineBreak
   |   PrettyString of string
   |   PrettyStringWithWidth of string * int

The pretty datatype is used in connection with formatting data for display. Rather than create text directly most display functions create values of this type. It is used with a pretty-printer based around the model described by D.C. Oppen in ACM ToPLAS Vol. 2 No. 4 Oct 1980.

PrettyString s contains a string to be printed.

PrettyStringWithWidth (s, n) is similar to PrettyString except that it contains an explicit width. It is used when the width of the displayed string is not the same as the number of characters. This may happen if the string contains UTF-8 encoded characters.

PrettyBlock(indent, consistent, context, items) defines a block of items which may be strings, breaks or blocks. The items will be retained on a single line if possible. The indent parameter is an indentation that will be added to the current indentation if the block has to be broken. Note that this does not apply to the first item in the block which will always be printed with the current indentation. The consistent parameter indicates whether the block is to be broken consistently (true) or not (false). If it is true then if the block will not all fit on a line and must be broken then it will be broken at all the breaks in the block whether this is necessary or not. If it is false it will only be broken where necessary. Neither of these parameters are used if the block will fit on a line.

PrettyBreak(blanks, breakOffset) indicates a break between items. If the line is not broken at this point then blanks is the number of space characters that will be inserted. If the line is broken at that point then instead the following item is indented by an extra breakOffset spaces.

PrettyLineBreak inserts an explicit line-break.

val prettyPrint : (string -> unit) * int -> pretty -> unit

prettyPrint provides a basic formatting of a pretty structure. prettyPrint (output, width) p formats the pretty structure p and calls the output function to display it. The width is the number of characters that can be displayed on a single line. Spaces and line-breaks are produced by calling output with strings containing spaces and the newline character "\n". Context information in PrettyBlock nodes is ignored.

val prettyMarkup :
       (context list -> unit) * (context list -> unit) ->
       (string -> unit) * int -> pretty -> unit
prettyMarkup provides the same formatting as prettyPrint except that it includes processing of context information. prettyMarkup(startC, endC) (output, width) p formats the pretty structure p using output and width with the addition that whenever a PrettyBlock is encountered with non-empty context list startC is called with the list before the block is output and endC is called with the same list when the block is complete.
val prettyPrintWithIDEMarkup : (string -> unit) * int -> pretty -> unit

prettyPrintWithIDEMarkup is the same as prettyPrint except that it adds IDE mark-up for location properties.

val addPrettyPrinter : (int -> 'a -> 'b -> pretty) -> unit

addPrettyPrinter is used to associate a printing function with a type so that it can be displayed in a more user-friendly form than the default. It appears to have a polymorphic type but is specially handled by the compiler. Pretty-printers can be installed for datatypes or types produced by opaque signature matching or returned from functors. It is not possible to install a pretty-printer for a type function (i.e. a type defined by type t = ...) unless the type function is simply giving an alternative name to a datatype.

addPrettyPrinter pp installs a pretty printer pp where pp has arguments depth printArgTypes value. The first argument, depth, is the print depth. This is a value that indicates how much of the data structure should be displayed. If this value is zero or negative the pretty printer should always print a simple string such as PrettyString "...". The intention is that the user can control how much output to produce when printing a large data structure. Larger values produce more of the structure. For values produced by the top-level this will generally be controlled by PolyML.print_depth. The third argument, value, is the actual value of the type that is to be printed. When installing a pretty printer there must be sufficient type constraint so that the compiler is able to determine the type unambiguiously.

The second argument, printArgTypes, is only used for polytypes i.e. datatypes with type parameters defined as 'a t or ('a, 'b', 'c ...) t. It is not used for monotypes. If the type takes a single argument then printArgTypes has type 'a * int -> pretty and is the function that will generate the pretty data structure for the argument type. The int argument is the adjusted print depth and should normally be one less than the value of depth. If the type takes multiple arguments then printArgTypes is a tuple with each field being a function of type 'a * int -> pretty that is used for the corresponding argument of the datatype.

val prettyRepresentation : 'a * int -> pretty

prettyRepresentation returns the pretty structure that can be used to print a value of the given type up to the specified depth. It is similar to PolyML.print in being infinitely overloaded. It can be useful when writing a pretty printer for a datatype that includes types that already have pretty printers installed or where they will be installed later since it uses any pretty printers for the types when it is actually called.

val print: 'a -> 'a

The PolyML.print function is a special infinitely overloaded function that prints its argument and returns the original result. It is treated specially by the compiler which uses type information to format the output.

val makestring: 'a -> string

The PolyML.makestring function is similar to PolyML.print in being infinitely overloaded. It returns a string representation of its argument.

val rootFunction : unit -> unit

PolyML.rootFunction is the initial function for the default Poly/ML system. It processes the command line arguments and then calls PolyML.shell to start the main top-level, read-eval-print loop. It is the root of everything in the Poly/ML system so it may be used as an argument to PolyML.shareCommonData to minimise the size of the heap before it is saved.

val shell : unit -> unit

The shell function runs the normal Poly/ML top-level read-eval-print loop (REPL). This function is provided for the situation where a user might wish to export an alternative top-level function but in some cases switch to the default. It returns only when it detects end-of-file on TextIO.stdIn. The top-level prompts the user for input using the value held in Compiler.prompt1, "> " by default, for the first line of a topdec. Subsequent lines are prompted for using the value in Compiler.prompt2, default "# ".

val architecture : unit -> string

The architecture function returns a string that identifies the computer architecture for which the current version of Poly/ML has been built and the code that the compiler generates. Currently, it returns one of the following values: "I386", "X86_64" or "Interpreted". The last is used when Poly/ML has been built for the portable byte-code version.

val rtsArgumentHelp : unit -> string

PolyML.rtsArgumentHelp returns a string that describes the command-line arguments that are used by the run-time system. The main purpose of this function is to enable Poly/ML programs that accept a command-line "help" argument to provide information to the user about arguments that will be interpreted by the run-time system in addition to information about their own arguments.

val rtsVersion : unit -> int

The rtsVersion function returns a number that identifies the version of the run-time system. For version 5.5.3 it returns 553.

val objSize: 'a -> int

PolyML.objSize returns the number of words of heap space used in its argument. It is primarily intended for debugging when the heap requirements of a program are larger than expected. It returns the total size of everything reachable from its argument. It takes account of sharing so if parts of the data structure are shared they will be counted only once.

val showSize : 'a -> int

PolyML.showSize returns the same result as objSize but as a side-effect it prints a low-level representation of the data to the standard output. It should be used with care as the output can be very large.

val objProfile : 'a -> int

PolyML.objProfile returns the same result as objSize but as a side-effect it prints a profile of the sizes of cells, the number of cells of each size. Separate profiles are produced for mutable cells i.e. refs and arrays, and immutable cells such as lists and tuples.

val stackTrace : unit -> unit

The stackTrace function prints a trace of the current stack; that is the name of the calling function and the function that called it back to the start of the thread.

val profiling : int -> unit

PolyML.profiling enables profiling for executed code. It takes an integer argument that sets the kind of profiling. Zero disables profiling; non-zero values enable different kinds of profiling.

val timing : bool -> unit

PolyML.timing enables or disables the timing of each expression typed at the top-level. For each expression figures are shown for various passes of the compiler and the execution time of the expression.

val sourceLocation : unit -> location

PolyML.sourceLocation is a function that is treated specially by the compiler. It returns the location in the source file where its call appears. Exactly what information is returned depends on what options have been provided to the compiler.

type location = {file: string, startLine: int, endLine: int, startPosition: int, endPosition: int}

The location type is associated with the compiler. It represents a position in some program source, usually a source file. The information that is included depends on the particular function that has returned the location and how the compiler was called. Generally, file will contain the source file name, startLine and endLine will contain the line numbers where the item started and ended and startPosition and endPosition the byte position in the file. The file name may be the empty string and any of the other arguments may be zero if the information is not available.

structure IntInf: sig val gcd : int * int -> int val lcm : int * int -> int end

The IntInf structure contains two functions that have been added to the arbitrary-precision arithmetic library. They compute the greatest common divisor and the lowest common multiple. If Poly/ML has been built to use the GMP library these functions will make use of that library.

val print_depth: int -> unit

PolyML.print_depth sets the depth for printing the results of each top-level expression. Passing zero or a negative value as the argument disables all printing of top-level results. When a large data structure is to be printed the print depth controls how much of the structure is displayed. PolyML.print_depth sets the value of PolyML.Compiler.printDepth.

val error_depth: int -> unit

PolyML.error_depth controls the amount of output to produce when printing information in an error message. It behaves in the same way as PolyML.print_depth. PolyML.error_depth sets the value of PolyML.Compiler.errorDepth.

val line_length: int -> unit

PolyML.line_length sets the length of a line which is used when produced pretty-printed output. PolyML.line_length sets the value of PolyML.Compiler.lineLength.

polyml-5.7.1/documentation/Reference/PolyMLDebug.html0000644000175000017500000000305413204034553021561 0ustar daviddavid The PolyML.Debug structure

The PolyML.Debug structure

The PolyML.Debug structure contains functions to assist with debugging. For a tutorial see here.

structure Debug :
  sig
    val breakAt : string * int -> unit
    val breakEx : exn -> unit
    val breakIn : string -> unit
    val clearAt : string * int -> unit
    val clearEx : exn -> unit
    val clearIn : string -> unit
    val continue : unit -> unit
    val continueWithEx : exn -> unit
    val down : unit -> unit
    val dump : unit -> unit
    val locals: unit -> unit
val stack : unit -> unit val step : unit -> unit val stepOut : unit -> unit val stepOver : unit -> unit val trace : bool -> unit val up : unit -> unit val variables : unit -> unit end

 

polyml-5.7.1/documentation/Reference/PolyMLStatistics.html0000644000175000017500000001026613204034553022670 0ustar daviddavid The PolyML.Statistics structure

PolyML.Statistics structure

The PolyML.Statistics structure provides a way for a program to read information about the run-time system. As well as getting information about the local Poly/ML process it is also possible to get information about another Poly/ML process being run by the same user.

structure Statistics:
  sig
    val getLocalStats : unit ->
       {sizeHeap: int,
       gcFullGCs: int,
       timeGCUser: Time.time,
       threadsInML: int,
       gcPartialGCs: int,
       threadsTotal: int,
       timeGCSystem: Time.time,
       userCounters: int vector,
       threadsWaitIO: int,
       timeNonGCUser: Time.time,
       sizeAllocation: int,
       timeNonGCSystem: Time.time,
       threadsWaitMutex: int,
       threadsWaitSignal: int,
       sizeAllocationFree: int,
       sizeHeapFreeLastGC: int,
       threadsWaitCondVar: int,
       sizeHeapFreeLastFullGC: int}

    val getRemoteStats : int ->
       {sizeHeap: int,
       gcFullGCs: int,
       timeGCUser: Time.time,
       threadsInML: int,
       gcPartialGCs: int,
       threadsTotal: int,
       timeGCSystem: Time.time,
       userCounters: int vector,
       threadsWaitIO: int,
       timeNonGCUser: Time.time,
       sizeAllocation: int,
       timeNonGCSystem: Time.time,
       threadsWaitMutex: int,
       threadsWaitSignal: int,
       sizeAllocationFree: int,
       sizeHeapFreeLastGC: int,
       threadsWaitCondVar: int,
       sizeHeapFreeLastFullGC: int}

    val setUserCounter : int * int -> unit
    val numUserCounters : unit -> int
end

There are two functions that return information..

val getLocalStats : unit -> { ... }
Returns information about the Poly/ML process that has called this function.
val getRemoteStats : int -> { ... }

Returns information about another Poly/ML process. The argument is the process id (pid) of the Poly/ML process for which information is requested. Raises the Fail exception if this is not a currently running Poly/ML process or the calling user does not have permission to read the statistics. The statistics are held in shared memory and on Unix systems these are memory-mapped files in the user's .polyml directory.

The actual information returned is still being determined and may well change.

In addition to information about the run-time system the statistics mechanism provides a small array of values that can be set by the ML code. This allows an ML program to set values that can be read in another process.

val numUserCounters : unit -> int

Returns the number of counters available. Currently this is eight.

val setUserCounter : int * int -> unit

setUserCounter(n, m) stores the value m in the n-th counter.

Writing to the counters is potentially an expensive operation. If the information is likely to change rapidly it will usually be best to use a separate thread to poll the information periodically and update the counter.

polyml-5.7.1/documentation/Reference/PolyMLCodetree.html0000644000175000017500000001530413204034553022266 0ustar daviddavid The PolyML.Codetree structure

The PolyML.Codetree structure

The CodeTree sub-structure contains functions that construct and operate on the intermediate code structure of the Poly/ML compiler. It is intended for compilers for languages other than Standard ML to target the back-end.

The intermediate code-tree is untyped and almost no checking is performed on it. It is very easy to cause the compiler or garbage-collector to crash and a failure could occur at some random point.

structure CodeTree :
  sig

    type codeBinding
    type codetree
    type machineWord


    val mkConstant: machineWord -> codetree
    val mkLoadArgument: int -> codetree
    val mkLoadClosure: int -> codetree
    val mkLoadLocal: int -> codetree

    val mkEnv: codeBinding list * codetree -> codetree

    val mkFunction: codetree * int * string * codetree list * int -> codetree
    val mkInlineFunction: codetree * int * string * codetree list * int -> codetree
    val mkCall: codetree * codetree list -> codetree

    val mkTuple: codetree list -> codetree
    val mkInd: int * codetree -> codetree

    val mkIf: codetree * codetree * codetree -> codetree

    val mkBeginLoop: codetree * (int * codetree) list -> codetree
    val mkLoop: codetree list -> codetree
    val mkWhile: codetree * codetree -> codetree

    val mkRaise: codetree -> codetree
    val mkHandle: codetree * codetree -> codetree
    val Ldexc: codetree

    val mkDec: int * codetree -> codeBinding
    val mkMutualDecs: (int * codetree) list -> codeBinding
    val mkNullDec: codetree -> codeBinding

    val rtsFunction: int -> codetree

    val pretty: codetree -> pretty

    val genCode: codetree * int -> unit -> codetree
    val evalue: codetree -> machineWord option

    val encodeBinary: codetree -> Word8Vector.vector
    val decodeBinary: Word8Vector.vector -> codetree

    val unsafeMakeFunctor:
       string * NameSpace.signatureVal * NameSpace.signatureVal * codetree -> NameSpace.functorVal
  end
val encodeBinary : codetree -> Word8Vector.vector

This encodes the code-tree as a byte vector. It is intended to allow compiled code to be exported and subsequently imported by decodeBinary. There are a number of restrictions on the code-tree to allow it to be exported, primarily that it is fully self-contained. It is really only suitable for use with the code of a functor.

val decodeBinary : Word8Vector.vector -> codetree

This function imports a code-tree that has been encoded with encodeBinary.

val unsafeMakeFunctor:
       string * NameSpace.signatureVal * NameSpace.signatureVal * codetree -> NameSpace.functorVal

This function can be used to create a functor from code and signature information.

val genCode: codetree * int -> unit -> codetree

The genCode function compiles code and returns a function that, when called, will execute the compiled code. genCode(c, nBindings) takes the codetree c and an integer nBindings which is the number of binding addresses used in the top-level tree, or more specifically at least one more than the maximum binding address used. Binding addresses used within functions are not included in this; they are counted within their respective function. The result is a function of type unit -> codetree which when called executes the code. The result is a codetree. Currently this will always be a Constant node whose value can be extracted by evalue.

val evalue : codetree -> machineWord option

The evalue function extracts the value from a Constant node. If the argument is not a Constant node the result will be NONE.

val pretty: codetree -> pretty

This function formats the code-tree as a pretty data structure. It can then be printed using PolyML.prettyPrint or incorporated into another pretty structure.

val ZZZ: int ref

This function does ZZZ

val ZZZ: int ref

This function does ZZZ

val ZZZ: int ref

This function does ZZZ

polyml-5.7.1/documentation/Reference/XWindows.txt0000644000175000017500000145766013204034553021114 0ustar daviddavid Oc Abstract Hardware Ltd Poly/ML for X Reference Manual Mike Crawley cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 1 Copyright (c) Abstract Hardware Limited 1991, 1994 Copyright (c) 1987 Digital Equipment Corporation Copyright (c) 1987 Massachusetts Institute of Technology All Rights Reserved. Permission to use, copy, modify, and distribute this signature and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both the copyright notices and this permission notice appear in supporting documentation, and that the names of Digital, MIT and AHL not be used in advertising or publicity pertaining to distribution of the signature and its documentation without specific, written prior permission. Digital, MIT and AHL disclaim all warranties with regard to this signature and its documentation, including all implied warranties of merchantability and fitness, in no event shall Digital, MIT or AHL be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this signature and its documentation. The X Window System is a Trademark of MIT. 2 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Contents 1 Introduction 11 1.1 The ML interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 11 1.2 Naming and calling conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 12 1.4 X and the Garbage Collector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 X and Persistent Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * 13 2 Function Reference 15 2.1 Colours, Pixels and RGB values . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 And, Or, Xor, Not, >>, << . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.2 BlackPixel, WhitePixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 15 2.1.3 Pixel, RGB, XColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 16 2.1.4 XAllocColor, XAllocColorCells, XAllocColorPlanes, XAllocNamedColor, XFreeColors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 17 2.1.5 XLookupColor, XQueryColor, XQueryColors . . . . . . . . . . . . . . . . 19 2.1.6 XParseColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 20 2.1.7 XStoreColor, XStoreColors, XStoreNamedColor . . . . . . . . . . . . . . 21 2.2 Colormaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 22 2.2.1 DefaultColormap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * 22 2.2.2 DefaultDepth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 22 2.2.3 DisplayCells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 23 2.2.4 VisualClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 23 2.2.5 XCreateColormap, XCopyColormapAndFree, XFreeColormap, XSetWin- dowColormap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 24 3 4 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.2.6 XInstallColormap, XUninstallColormap, XListInstalledColormaps . . . . 25 2.2.7 XSetRGBColormaps, XGetRGBColormaps . . . . . . . . . . . . . . . . . 26 2.3 Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . . @ 2.3.1 XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor . . . . 28 2.3.2 XDefineCursor, XUndefineCursor, NoCursor . . . . . . . . . . . . . . . . 29 2.3.3 XRecolorCursor, XFreeCursor . . . . . . . . . . . . . . . . . . . . . . . . 30 2.4 Display Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 31 2.4.1 AllPlanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 31 2.4.2 BitmapBitOrder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 31 2.4.3 BitmapPad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 31 2.4.4 BitmapUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 32 2.4.5 ByteOrder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 32 2.4.6 CellsOfScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 32 2.4.7 ColormapExists, CursorExists, DrawableExists, FontExists, GCExists, Vi- sualExists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 33 2.4.8 ColormapID, CursorID, DrawableID, FontID, GCID, VisualID, Same- Drawable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 33 2.4.9 DefaultVisual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 34 2.4.10 DisplayConnected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * 34 2.4.11 DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM . . . 34 2.4.12 DisplayPlanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 35 2.4.13 DisplayString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 35 2.4.14 DoesBackingStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * 35 2.4.15 DoesSaveUnders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 36 2.4.16 EventMaskOfScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 36 2.4.17 MinCmapsOfScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 36 2.4.18 MaxCmapsOfScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 37 2.4.19 NoColormap, NoCursor, NoDrawable, NoFont, NoVisual, ParentRelative, CopyFromParentDrawable, CopyFromParentVisual, PointerWindow, In- putFocus, PointerRoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 37 2.4.20 ProtocolRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 37 2.4.21 ProtocolVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 38 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 5 2.4.22 RootWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 38 2.4.23 ServerVendor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 38 2.4.24 VendorRelease . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 39 2.4.25 XQueryBestCursor, XQueryBestSize, XQueryBestStipple, XQueryBest- Tile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . . @ 2.5 Drawing Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 40 2.5.1 XClearArea, XClearWindow . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.5.2 XCopyArea, XCopyPlane . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5.3 XDrawArc, XDrawArcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.5.4 XDrawImageString, XDrawImageString16 . . . . . . . . . . . . . . . . . 44 2.5.5 XDrawLine, XDrawLines, XDrawSegments . . . . . . . . . . . . . . . . . 45 2.5.6 XDrawPoint, XDrawPoints . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.5.7 XDrawRectangle, XDrawRectangles . . . . . . . . . . . . . . . . . . . . . 46 2.5.8 XDrawString, XDrawString16 . . . . . . . . . . . . . . . . . . . . . . . . 47 2.5.9 XDrawText, XDrawText16 . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.5.10 XFillArc, XFillArcs, XFillPolygon, XFillRectangle, XFillRectangles . . . 49 2.6 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 51 2.6.1 Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 51 2.6.2 XWindows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 51 2.7 Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 52 2.7.1 IsCursorKey, IsFunctionKey, IsKeypadKey, IsMiscFunctionKey, IsModi- fierKey, IsPFKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 52 2.7.2 ShiftDown, ControlDown . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.7.3 XLookupString, NoSymbol . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.7.4 XSelectInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 54 2.7.5 XSetHandler, NullHandler . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.7.6 XSetInputFocus, XGetInputFocus . . . . . . . . . . . . . . . . . . . . . . 56 2.7.7 XSync, XFlush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 57 2.7.8 XSyncronise, XSynchronize . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.7.9 XTranslateCoordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 58 2.8 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . . . @ 6 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.8.1 CharLBearing, CharRBearing, CharWidth, CharAscent, CharDescent, CharAttributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 59 2.8.2 FSFont, FSDirection, FSMinChar, FSMaxChar, FSMinByte1, FS- MaxByte1, FSAllCharsExist, FSAllCharsExist, FSDefaultChar, FSMin- Bounds, FSMaxBounds, PSPerChar, FSPerChar, FSAscent, FSDescent, FSAscent, FSDescent, FSMinWidth, FSMaxWidth, FSMinHeight, FS- MaxHeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 59 2.8.3 XListFonts, XListFontsWithInfo . . . . . . . . . . . . . . . . . . . . . . . 60 2.8.4 XLoadFont, XLoadQueryFont, XQueryFont, XFreeFont, XUnloadFont . 61 2.8.5 XSetFontPath, XGetFontPath . . . . . . . . . . . . . . . . . . . . . . . . 64 2.8.6 XTextExtents, XTextExtents16 . . . . . . . . . . . . . . . . . . . . . . . 64 2.8.7 XTextWidth, XTextWidth16 . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.9 Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 66 2.9.1 AddPoint, SubtractPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 2.9.2 Inside, Overlap, Within, LeftOf, RightOf, AboveOf, BelowOf, Horizon- tallyAbutting, VerticallyAbutting . . . . . . . . . . . . . . . . . . . . . . 66 2.9.3 Intersection, Union, Section . . . . . . . . . . . . . . . . . . . . . . . . . * *67 2.9.4 Left, Right, Top, Bottom, Width, Height, TopLeft, TopRight, Bottom- Left, BottomRight, XRectangle, Area, Rect, DestructRect, DestructArea, empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 67 2.9.5 MakeRect, SplitRect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 68 2.9.6 NegativePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 69 2.9.7 OutsetRect, OffsetRect, IncludePoint . . . . . . . . . . . . . . . . . . . . 69 2.9.8 Reflect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . . 7@ 2.9.9 XPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 70 2.10 GC - Graphics Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 70 2.10.1 DefaultGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 70 2.10.2 XCreateGC, XChangeGC, XFreeGC . . . . . . . . . . . . . . . . . . . . . 71 2.10.3 XSetArcMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 76 2.10.4 XSetBackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 76 2.10.5 XSetClipMask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 77 2.10.6 XSetClipOrigin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 77 2.10.7 XSetClipRectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 77 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 7 2.10.8 XSetColours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 78 2.10.9 XSetDashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 79 2.10.10 XSetFillRule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 79 2.10.11 XSetFillStyle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 80 2.10.12 XSetFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 80 2.10.13 XSetForeground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 81 2.10.14 XSetFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 81 2.10.15 XSetGraphicsExposures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 2.10.16 XSetLineAttributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * 82 2.10.17 XSetPlaneMask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 82 2.10.18 XSetState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 83 2.10.19 XSetStipple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 83 2.10.20 XSetSubwindowMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 2.10.21 XSetTile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 84 2.10.22 XSetTSOrigin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 85 2.11 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . . @ 2.11.1 ImageByteOrder, ImageDepth, ImageSize . . . . . . . . . . . . . . . . . . 85 2.11.2 VisualRedMask, VisualGreenMask, VisualBlueMask . . . . . . . . . . . . 86 2.11.3 XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel . . . . . 86 2.11.4 XPutImage, XGetImage, XGetSubImage . . . . . . . . . . . . . . . . . . 88 2.12 Properties and Selections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 90 2.12.1 XDeleteProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 90 2.12.2 XInternAtom, XGetAtomName . . . . . . . . . . . . . . . . . . . . . . . 90 2.12.3 XSetProperty, XGetTextProperty . . . . . . . . . . . . . . . . . . . . . . 91 2.12.4 XSetSelectionOwner, XGetSelectionOwner, XConvertSelection, XSendSe- lectionNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 92 2.13 Screen Saver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 94 2.13.1 XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver . . . . . . . . . . . . . . . . . . . . 94 2.14 Tiles, Stipples, Bitmaps and Pixmaps . . . . . . . . . . . . . . . . . . . . . . . . 95 2.14.1 XCreatePixmap, XFreePixmap . . . . . . . . . . . . . . . . . . . . . . . . 95 8 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.14.2 XReadBitmapFile, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 2.15 User Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 98 2.15.1 XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap . . . . . . . 98 2.15.2 XGetDefault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 98 2.16 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 99 2.16.1 XCreateWindow, XCreateSimpleWindow . . . . . . . . . . . . . . . . . . 99 2.16.2 XDestroyWindow, XDestroySubwindows . . . . . . . . . . . . . . . . . . 101 2.16.3 XGetGeometry, XGetWindowAttributes . . . . . . . . . . . . . . . . . . 101 2.16.4 XGetWindowRoot, XGetWindowPosition, XGetWindowSize, XGetWin- dowBorderWidth, XGetWindowDepth, XGetWindowParent, XGetWin- dowChildren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 104 2.16.5 XChangeWindowAttributes, XSetWindowBackground, XSetWindow- BackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap . . 104 2.16.6 XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWin- dow, XSetWindowBorderWidth . . . . . . . . . . . . . . . . . . . . . . . 106 2.16.7 XMapWindow, XMapRaised, XMapSubwindows . . . . . . . . . . . . . . 108 2.16.8 XQueryPointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 109 2.16.9 XQueryTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 110 2.16.10 XRaiseWindow, XLowerWindow, XCirculateSubwindows, XCirculateSub- windowsDown, XCirculateSubwindowsUp, XRestackWindows . . . . . . 110 2.16.11 XReparentWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1* *12 2.16.12 XUnmapWindow, XUnmapSubwindows . . . . . . . . . . . . . . . . . . . 113 2.17 Window Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 113 2.17.1 XSetIconSizes, XGetIconSizes . . . . . . . . . . . . . . . . . . . . . . . . 113 2.17.2 XSetTransientForHint, XGetTransientForHint . . . . . . . . . . . . . . . 114 2.17.3 XSetWMClass, XGetWMClass . . . . . . . . . . . . . . . . . . . . . . . . 114 2.17.4 XSetWMClientMachine, XGetWMClientMachine . . . . . . . . . . . . . 115 2.17.5 XSetWMColormapWindows, XGetWMColormapWindows . . . . . . . . 116 2.17.6 XSetWMCommand, XGetWMCommand . . . . . . . . . . . . . . . . . . 116 2.17.7 XSetWMHints, XGetWMHints . . . . . . . . . . . . . . . . . . . . . . . . 117 2.17.8 XSetWMIconName, XGetWMIconName . . . . . . . . . . . . . . . . . . 118 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 9 2.17.9 XSetWMName, XGetWMName . . . . . . . . . . . . . . . . . . . . . . . 119 2.17.10 XSetWMProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *119 2.17.11 XSetWMSizeHints, XGetWMSizeHints, XSetWMNormalHints, XGetWMNormalHints . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 2.17.12 XWMGeometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * 122 3 Event Reference 125 3.1 XEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . . 125 3.2 ButtonPress, ButtonRelease, KeyPress, KeyRelease, MotionNotify . . . . . . . . 126 3.3 CirculateNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 128 3.4 CirculateRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 128 3.5 ColormapNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 128 3.6 ConfigureNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 129 3.7 ConfigureRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . 130 3.8 CreateNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 130 3.9 DeleteRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 130 3.10 DestroyNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 131 3.11 EnterNotify, LeaveNotify, NotifyMode, NotifyDetail . . . . . . . . . . . . . . . . 131 3.12 Expose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . . 13@ 3.13 FocusIn, FocusOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . 133 3.14 GraphicsExpose, NoExpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 3.15 GravityNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 134 3.16 KeymapNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . 134 3.17 MapNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 135 3.18 MapRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 135 3.19 Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . . 135 3.20 ReparentNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 135 3.21 ResizeRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 136 3.22 SelectionClear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 136 3.23 SelectionNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 137 3.24 SelectionRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 137 10 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 3.25 UnmapNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 137 3.26 VisibilityNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 138 4 Protocol Error Messages 139 4.1 BadAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 139 4.2 BadAlloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 139 4.3 BadAtom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 139 4.4 BadColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 139 4.5 BadCursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . . 140 4.6 BadDrawable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 140 4.7 BadFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 140 4.8 BadGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 140 4.9 BadImplementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. 140 4.10 BadIDChoice, BadLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.11 BadMatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * *. . . 141 4.12 BadPixmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 142 4.13 BadRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . 142 4.14 BadValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* * . . . 142 4.15 BadWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * . . 142 Chapter 1 Introduction 1.1 The ML interface We have implemented an ML interface to Xlib, the industry standard C interface for X at the lowest level, and which is widely used as the basis for many toolkits. We provide all the major function groups, so that this interface can be used to implement fully functional complex applications. We also provide a set of geometric functions for handling points and rectangles, and a set of functions for performing logical operations on plane masks and pixel values. Xlib is now widely documented, with many good reference and programming manuals available. We provide our version of the Xlib reference manual with ML signatures and types, and a more functional style to the programming interface. We provide ML example programs to show the functionality of the ML interface to Xlib. These examples range from simple line drawing applications through to colour examples and a mini text editor showing how to program with selections. The full signatures of the structures are also provided so that modules may be written for separate compilation. Because of the great similarity between our interface and the original Xlib, experienced X pro- grammers can use the skills they have already developed with very few changes. 1.2 Naming and calling conventions We have kept to the Xlib naming conventions as closely as possible. This means that standard Xlib documentation can be used along with our reference manual. Types Drawable, Cursor Functions XDrawLines, XSetWindowColormap, XLoadQueryFont Constructors FillTiled, JoinMiter, AllowExposures Constants XA__PRIMARY, XA__STRING Labels borderWidth 11 12 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Datatypes are used where possible so that arguments are strongly typed and pattern matching may be used for returned values, this is especially useful for pattern matching the different sub- types of events. Abstypes are only used for the X resource types which have no meaningful textual representation. The functions have been made more functional. Where an Xlib function modified its arguments, this has been changed so that the function returns new, modified copies of the arguments. Where values were passed in partially filled-in structures with OR-ed bit masks, now the programmer uses constructors to make the list of values. Similarly, return values of this type are now lists of constructed values. The majority of X applications use a single display and single screen. Typically, they connect to the display when initialising and then pass the display parameter into every Xlib call from then on. In release 1 we connect to the display when initialising and implicitly pass the display and screen parameters to all Xlib functions. This reduces the number of parameters that have to be supplied and simplifies the signature. Another way of looking at this is to say that we have already called XOpenDisplay for the user and have partially applied all the Xlib functions with that display. In subsequent releases every X resource value will have its display parameter implicitly built in, a display connection function will be provided, and the types of the other Xlib functions will be unchanged. 1.3 Event Handling We provide an alternative event handling scheme. In normal Xlib programs written in C the user calls XNextEvent and then has to work out which window the event is for. This soon gets unwieldy as the number of windows increases, and is very difficult to use when interfacing with toolkits of window functions. In many X toolkits each newly created window registers a function with an event handler, then events for that window are passed directly to the window function when the event reaches the head of the event queue. We implement a similar scheme. When a window is created it is initially unhandled. It can be used for drawing on, but it will not process any events. An ML function can then be registered for that window, and an initial value supplied. The registered function will transform the value to a new value every time an event arrives for that window. In other words, a functional state machine is set up for each window. We also implement strongly typed message passing between windows, and extra event types for decoding multi-click events such as double clicking, and for implementing millisecond-resolution timer events. In more detail, we have a single Poly/ML process that handles events arriving down the event queue. It reads each event in turn, finds the window, the window function and the window state, and applies the event and state to the function. This returns a new state, which replaces the original state. Because only one process handles the events, we guarantee that no other window function can run at the same time. Any messages 'sent' by this window function are queued up and processed when this event has finished, before the next event from the server. If the window function raises an exception, instead of returning a new state, then the current state is left unchanged, and the exception is reported at the terminal. In this way all events are handled in turn in a predictable order, and in the same way that C event handlers work. The Poly/ML top level shell process is still available for debugging and control. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 13 If a window has an operation that takes a long time to complete, then the programmer can use Poly/ML processes to do the computations 'in the background' and 'send' the result as a message to the window for display. However, the use of processes in this way is discouraged as they are not standard. If a window function loops, then all other windows will freeze. Since the Poly/ML top level shell is available the user can type ^C followed by 'f' to raise Interrupt in that window function. 1.4 X and the Garbage Collector The garbage collector in Poly/ML can detect when a value is no longer referenced, and can perform an action in this circumstance. This is already done with streams. If you create an instream or an outstream and forget to close it with close_in or close_out, then it would hang on to its Unix file descriptor for the rest of the session. File descriptors are considered a precious resource in Unix, you are only allowed to have a small number of files open at any one time, so the garbage collector detects out of scope streams and closes the associated file descriptor. In X there are several types of precious resources. These include Windows, GCs, Pixmaps, Fonts and Cursors. Functions are provided so that the user can explicitly reclaim the resources used by these types of object, but a similar problem occurs. If a resource is not explicitly reclaimed, and allowed to go out of scope then it can never be reclaimed by the user. The garbage collector steps in and automatically cleans up. The table below summarises the effect. Window close the window with XDestroyWindow GC free the GC with XFreeGC Pixmap free the Pixmap with XFreePixmap Font unload the Font with XUnloadFont Cursor free the Cursor with XFreeCursor XColor free the XColor with XFreeColors Colormap free the Colormap with XFreeColormap Xlib includes a function called XFree which is used to free the storage required by the return types of several of its functions. This is not required in the ML interface because the garbage collector performs this operation. 1.5 X and Persistent Store In Poly/ML, persistent store is used to carry all ML values across to the next ML session with no change, except for a couple of cases. If you have a stream open when you save your environment, and then you attempt to read or write that stream in the next session, then Poly/ML will raise the Io exception. 14 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 In X, many values such as Windows and Pixmaps are volatile, they can only be used in the session that created them. If you attempt to draw in a window that you have brought across from an earlier session then Poly/ML will raise an exception. To make things cleaner we provide the following functions on volatile objects. val DrawableExists: Drawable -> bool ; val GCExists: GC -> bool ; val FontExists: Font -> bool ; val CursorExists: Cursor -> bool ; val PixelExists: int -> bool ; and so on. These are useful for restarting applications. If an application loads fonts, generates some bitmaps, and creates some windows to work in, and then gets saved to persistent store, then when the next session is started the application can detect that its resources have evaporated and can recreate them only when needed. Chapter 2 Function Reference 2.1 Colours, Pixels and RGB values 2.1.1 And, Or, Xor, Not, >>, << Types: infix And Or Xor >> << val Not: int -> int val And: int * int -> int val Or: int * int -> int val Xor: int * int -> int val >> : int * int -> int val << : int * int -> int Description: These functions provide useful arithmetic operations on ints representing pixel values and plane masks, which, in X, are unsigned 32-bit quantities. The least significant bits of these quantities are on the right, and the most significant bits are on the left. And, Or and Xor perform bitwise boolean functions. Not performs bitwise negation, so Not 0 = 4294967295 . a >> b returns a shifted b bits to the right, where b is not negative. a << b returns a shifted b bits to the left, where b is not negative. If negative values, or values greater than 4294967295 are passed to these functions then exception Range is raised. 2.1.2 BlackPixel, WhitePixel Types: val BlackPixel: unit -> int val WhitePixel: unit -> int 15 16 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Syntax: val black = BlackPixel() ; val white = WhitePixel() ; Description: The BlackPixel function returns the black pixel value for the screen. The WhitePixel function returns the white pixel value for the screen. 2.1.3 Pixel, RGB, XColor Types: val Pixel: XColor -> int val RGB: XColor -> (int * int * int) Syntax: val pixel = Pixel colour ; val (red,green,blue) = RGB colour ; Arguments: pixel Returns the pixel field of the XColor structure red Returns the red, green and blue components of the XColor structure as num- bers in the range 0..65535. Argument Type: datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } Description: The red, green, and blue values are scaled between 0 and 65535. Full brightness in a colour is a value of 65535 independent of the number of bits actually used in the display hardware. Half brightness in a colour is a value of 32767, and off is 0. This representation gives uniform results for colour values across different screens. In some functions, the doRed, doGreen and doBlue fields control which of the red, green, and blue members are used. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 17 2.1.4 XAllocColor, XAllocColorCells, XAllocColorPlanes, XAllocNamedColor, XFreeColors Types: val XAllocColor: Colormap -> XColor -> XColor val XAllocNamedColor: Colormap -> string -> (XColor * XColor) val XFreeColors: Colormap -> int list -> int -> unit val XAllocColorCells: Colormap -> bool -> int -> int -> (int list * int list) val XAllocColorPlanes: Colormap -> bool -> int -> int -> int -> int -> (int list * int * int * int) Syntax: val real = XAllocColor cmap colour ; val (real,desired) = XAllocNamedColor cmap name ; XFreeColors cmap pixels planes ; val (masks,basePixels) = XAllocColorCells cmap contig nplanes ncolours ; val (basePixels, redMask, greenMask, blueMask) = XAllocColorPlanes cmap contig ncolours nreds ngreens nblues ; Arguments: name Specifies the colour name string (for example, red) whose colour defini- tion structure you want returned. cmap Specifies the colormap. contig Specifies a bool that indicates whether the planes must be contiguous. ncolours Specifies the number of pixel values that are to be returned. nplanes Specifies the number of plane masks that are to be returned. nreds Specifies the number of red planes. The value you pass must be nonneg- ative. ngreens Specifies the number of green planes. The value you pass must be non- negative. nblues Specifies the number of blue planes. The value you pass must be non- negative. pixels Specifies a list of pixel values. planes Specifies the planes you want to free. colour Specifies the values actually used in the colormap. desired Returns the exact RGB values. 18 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 real Returns the closest RGB values provided by the hardware. masks Returns the list of plane masks basePixels Returns the list of base pixels redMask Returns the red mask greenMask Returns the green mask blueMask Returns the blue mask Argument Type: datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } Description: The XAllocColor function allocates a read-only colormap entry corresponding to the closest RGB values supported by the hardware. XAllocColor returns the pixel value of the colour closest to the specified RGB elements supported by the hardware and returns the RGB values actually used. The corresponding colormap cell is read-only. If XAllocColor fails then exception XWindows is raised with "XAllocColor failed" . Multiple clients that request the same effective RGB values can be assigned the same read-only entry, thus, allowing entries to be shared. When the last client deallocates a shared cell, it is deallocated. XAllocColor does not use or affect the flags in the XColor structure. The XAllocNamedColor function looks up the named colour with respect to the screen that is associated with the specified colormap. It returns both the exact database definition and the closest colour supported by the screen. The allocated colour cell is read-only. You should use the ISO Latin-1 encoding; uppercase and lowercase do not matter. If XAllocNamedColor fails then exception XWindows is raised with "XAllocNamedColor failed" . The XAllocColorCells function allocates read/write colour cells. The number of colours must be positive and the number of planes nonnegative, otherwise exception Range is raised or a BadValue error results. If ncolours and nplanes are requested, then ncolours pixels and nplanes plane masks are returned. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. By ORing together each pixel with zero or more masks, ncolours * 2 ^ nplanes distinct pixels can be produced. All of these are allocated writable by the request. For GrayScale or PseudoColor, each mask has exactly one bit set to 1. For DirectColor, each has exactly three bits set to 1. If contig is true and if all masks are ORed together, a single contiguous set of bits set to 1 will be formed for GrayScale or PseudoColor and three contiguous sets of bits set to 1 (one within each pixel subfield) for DirectColor. The RGB values of the allocated entries are undefined. If XAllocColorCells fails then exception XWindows is raised with "XAllocColorCells failed" . The XAllocColorPlanes function allocates read/write colour cells. The specified ncolours must be positive; and nreds, ngreens, and nblues must be nonnegative, other- wise exception Range is raised or a BadValue error results. If ncolours colours, nreds reds, ngreens greens, and nblues blues are requested, ncolours pixels are returned; and the masks have nreds, ngreens, and nblues bits set to 1, respectively. If contig is true, each cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 19 mask will have a contiguous set of bits set to 1. No mask will have any bits set to 1 in common with any other mask or with any of the pixels. For DirectColor, each mask will lie within the corresponding pixel subfield. By ORing together subsets of masks with each pixel value, ncolours * 2 ^ (nreds+ngreens+nblues) distinct pixel values can be pro- duced. All of these are allocated by the request. However, in the colormap, there are only ncolours * 2 ^ nreds independent red entries, ncolours * 2 ^ ngreens independent green entries, and ncolours * 2 ^ nblues independent blue entries. This is true even for PseudoColor. When the colormap entry of a pixel value is changed (using XStoreCol- ors, XStoreColor, or XStoreNamedColor), the pixel is decomposed according to the masks, and the corresponding independent entries are updated. If XAllocColorPlanes fails then exception XWindows is raised with "XAllocColorPlanes failed" . The XFreeColors function frees the cells represented by pixels whose values are in the pixels list. The planes argument should not have any bits set to 1 in common with any of the pixels. The set of all pixels is produced by ORing together subsets of the planes argument with the pixels. The request frees all of these pixels that were allocated by the client (using XAllocColor, XAllocNamedColor, XAllocColorCells, and XAllocColorPlanes). Note that freeing an individual pixel obtained from XAllocColorPlanes may not actually allow it to be reused until all of its related pixels are also freed. Similarly, a read-only entry is not actually freed until it has been freed by all clients, and if a client allocates the same read-only entry multiple times, it must free the entry that many times before the entry is actually freed. All specified pixels that are allocated by the client in the colormap are freed, even if one or more pixels produce an error. If a specified pixel is not a valid index into the colormap, a BadValue error results. If a specified pixel is not allocated by the client (that is, is unallocated or is only allocated by another client), a BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. 2.1.5 XLookupColor, XQueryColor, XQueryColors Types: val XLookupColor: Colormap -> string -> (XColor * XColor) val XQueryColor: Colormap -> int -> XColor val XQueryColors: Colormap -> int list -> XColor list Syntax: val (desired,real) = XLookupColor cmap name ; val colour = XQueryColor cmap pixel ; val colours = XQueryColors cmap pixels ; Arguments: colormap Specifies the colormap. name Specifies the colour name string (for example, red) whose colour definition structure you want returned. colour Returns the RGB values for the specified pixel. colours Returns a list of colour definition structures for the pixel specified. desired Returns the exact RGB values. 20 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 real Returns the closest RGB values provided by the hardware. Description: The XLookupColor function looks up the string name of a colour with respect to the screen associated with the specified colormap. It returns both the exact colour values and the closest values provided by the screen with respect to the visual type of the specified colormap. You should use the ISO Latin-1 encoding; uppercase and lowercase do not matter. XLookupColor raises exception XWindows with "XLookupColor failed" if the name did not exist. The XQueryColor function returns the hardware-specific RGB values for the specified pixel and sets the DoRed, DoGreen, and DoBlue flags. The XQueryColors function returns the RGB values for each pixel in the list and sets the DoRed, DoGreen, and DoBlue flags. 2.1.6 XParseColor Types: val XParseColor: Colormap -> string -> XColor Syntax: val colour = XParseColor cmap name ; Arguments: cmap Specifies the colormap. name Specifies the colour name string; case is ignored. colour Returns the exact colour value for later use and sets the doRed, doGreen, and doBlue flags. Argument Type: datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } Description: The XParseColor function provides a simple way to create a standard user interface to colour. It takes a string specification of a colour, typically from a command line or XGetDefault option, and returns the corresponding red, green, and blue values that are suitable for a subsequent call to XAllocColor or XStoreColor. The colour can be specified either as a colour name (as in XAllocNamedColor) or as an initial sharp sign character followed by a numeric specification, in one of the following formats: #RGB (4 bits each) cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 21 #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each) The R, G, and B represent single hexadecimal digits (both uppercase and lowercase). When fewer than 16 bits each are specified, they represent the most-significant bits of the value. For example, #3a7 is the same as #3000a0007000. The colormap is used only to determine which screen to look up the colour on. For example, you can use the screen's default colormap. If the initial character is a sharp sign but the string otherwise fails to fit the above formats or if the initial character is not a sharp sign and the named colour does not exist in the server's database, then exception XWindows is raised with "XParseColor failed" . 2.1.7 XStoreColor, XStoreColors, XStoreNamedColor Types: val XStoreColor: Colormap -> XColor -> unit val XStoreColors: Colormap -> XColor list -> unit val XStoreNamedColor: Colormap -> string -> int -> (bool * bool * bool) -> unit Syntax: XStoreColor cmap colour ; XStoreColors cmap colours ; XStoreNamedColor cmap name pixel (doRed,doGreen,doBlue) ; Arguments: colour Specifies the pixel and RGB values colours Specifies a list of pixel and RGB values cmap Specifies the colormap. doRed Specifies if the red component is set doGreen Specifies if the green component is set doBlue Specifies if the blue component is set. name Name of colour to copy RGB values from. pixel Specifies the entry in the colormap. Argument Type: datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } 22 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The XStoreColors function changes the colormap entries of the pixel values specified in the pixel members of the XColor structures. You specify which colour components are to be changed by setting doRed, doGreen, and/or doBlue in the XColor structures. If the colormap is an installed map for its screen, the changes are visible immediately. XStoreColors changes the specified pixels if they are allocated writable in the colormap by any client, even if one or more pixels generates an error. If a specified pixel is not a valid index into the colormap, a BadValue error results. If a specified pixel either is unallocated or is allocated read-only, a BadAccess error results. If more than one pixel is in error, the one that gets reported is arbitrary. The XStoreColor function changes the colormap entry of the pixel value specified in the pixel member of the XColor structure. You specified this value in the pixel member of the XColor structure. This pixel value must be a read/write cell and a valid index into the colormap. If a specified pixel is not a valid index into the colormap, a BadValue error results. XStoreColor also changes the red, green, and/or blue colour components. You specify which colour components are to be changed by setting doRed, doGreen, and/or doBlue in the XColor structure. If the colormap is an installed map for its screen, the changes are visible immediately. The XStoreNamedColor function looks up the named colour with respect to the screen associated with the colormap and stores the result in the specified colormap. The pixel argument determines the entry in the colormap. The booleans doRed, doGreen, and doBlue determine which of the red, green, and blue components are set. If the specified pixel is not a valid index into the colormap, a BadValue error results. If the specified pixel either is unallocated or is allocated read-only, a BadAccess error results. You should use the ISO Latin-1 encoding; uppercase and lowercase do not matter. 2.2 Colormaps 2.2.1 DefaultColormap Types: val DefaultColormap: unit -> Colormap Syntax: val cmap = DefaultColormap() ; Description: The DefaultColormap function returns the default colormap for allocation on the screen. 2.2.2 DefaultDepth Types: val DefaultDepth: unit -> int cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 23 Syntax: val depth = DefaultDepth() ; Description: The DefaultDepth function returns the depth (number of planes) of the default root window for the screen. 2.2.3 DisplayCells Types: val DisplayCells: unit -> int Syntax: val cells = DisplayCells() ; Description: The DisplayCells function returns the number of entries in the default colormap. 2.2.4 VisualClass Types: val VisualClass: Visual -> VisualClass Syntax: val class = VisualClass visual ; Arguments: visual Specifies the visual. class Returns the class from the visual. Argument Type: datatype VisualClass = StaticGray | GrayScale | StaticColor | PseudoColor | TrueColor | DirectColor Description: Returns the visual class from the specified visual. 24 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.2.5 XCreateColormap, XCopyColormapAndFree, XFreeColormap, XSetWindowColormap Types: val XCreateColormap: Drawable -> Visual -> AllocType -> Colormap val XCopyColormapAndFree: Colormap -> Colormap val XFreeColormap: Colormap -> unit val XSetWindowColormap: Drawable -> Colormap -> unit Syntax: val cmap = XCreateColormap w visual alloc ; val copy = XCopyColormapAndFree cmap ; XFreeColormap cmap ; XSetWindowColormap w cmap ; Arguments: w Specifies the window visual Specifies a visual type supported on the screen. If the visual type is not one supported by the screen, a BadMatch error results. alloc Specifies the colormap entries to be allocated. You can pass AllocNone or AllocAll. cmap Specifies the colormap. copy Returns a copy of the colormap. Argument Type: datatype AllocType = AllocNone | AllocAll datatype VisualClass = StaticGray | GrayScale | StaticColor | PseudoColor | TrueColor | DirectColor datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } Argument Description: The red, green, and blue values are scaled between 0 and 65535. Full brightness in a colour is a value of 65535 independent of the number of bits actually used in the display hardware. Half brightness in a colour is a value of 32767, and off is 0. This representation gives uniform results for colour values across different screens. In some functions, the doRed, doGreen and doBlue fields control which of the red, green, and blue members are used. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 25 Description: The XCreateColormap function creates a colormap of the specified visual type for the screen on which the specified window resides and returns the colormap associated with it. Note that the specified window is only used to determine the screen. The initial values of the colormap entries are undefined for the visual classes GrayScale, PseudoColor, and DirectColor. For StaticGray, StaticColor, and TrueColor, the entries have defined values, but those values are specific to the visual and are not defined by X. For StaticGray, StaticColor, and TrueColor, alloc must be AllocNone, or a BadMatch error results. For the other visual classes, if alloc is AllocNone, the colormap initially has no allocated entries, and clients can allocate them. If alloc is AllocAll, the entire colormap is allocated writable. The initial values of all allocated entries are undefined. For GrayScale and PseudoColor, the effect is as if an XAllocColorCells call returned all pixel values from zero to N - 1, where N is the colormap entries value in the specified visual. For DirectColor, the effect is as if an XAllocColorPlanes call returned a pixel value of zero and redMask, greenMask, and blueMask values containing the same bits as the corresponding masks in the specified visual. However, in all cases, none of these entries can be freed by using XFreeColors. The XCopyColormapAndFree function creates a colormap of the same visual type and for the same screen as the specified colormap and returns the new colormap. It also moves all of the client's existing allocation from the specified colormap to the new colormap with their colour values intact and their read-only or writable characteristics intact and frees those entries in the specified colormap. Color values in other entries in the new colormap are undefined. If the specified colormap was created by the client with alloc set to AllocAll, the new colormap is also created with AllocAll, all colour values for all entries are copied from the specified colormap, and then all entries in the specified colormap are freed. If the specified colormap was not created by the client with AllocAll, the allocations to be moved are all those pixels and planes that have been allocated by the client using XAllocColor, XAllocNamedColor, XAllocColorCells, or XAllocColorPlanes and that have not been freed since they were allocated. The XFreeColormap function deletes the association between the colormap resource in the server and the ML Colormap value. However, this function has no effect on the default colormap for a screen. If the specified colormap is an installed map for a screen, it is uninstalled (see XUninstallColormap). If the specified colormap is de- fined as the colormap for a window (by XCreateWindow, XSetWindowColormap, or XChangeWindowAttributes), XFreeColormap changes the colormap associated with the window to NoColormap and generates a ColormapNotify event. X does not define the colours displayed for a window with a colormap of NoColormap. The XSetWindowColormap function sets the specified colormap of the specified win- dow. The colormap must have the same visual type as the window, or a BadMatch error results. 2.2.6 XInstallColormap, XUninstallColormap, XListInstalledColormaps Types: val XInstallColormap: Colormap -> unit val XListInstalledColormaps: Drawable -> Colormap list val XUninstallColormap: Colormap -> unit 26 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Syntax: XInstallColormap cmap ; XUninstallColormap cmap ; val cmaps = XListInstalledColormaps w ; Arguments: cmap Specifies the colormap. w Specifies the window that determines the screen. Description: The XInstallColormap function installs the specified colormap for its associated screen. All windows associated with this colormap immediately display with true colours. You associated the windows with this colormap when you created them by calling XCre- ateWindow, XCreateSimpleWindow, XChangeWindowAttributes, or XSetWin- dowColormap. If the specified colormap is not already an installed colormap, the X server generates a ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed as a result of a call to XInstallColormap, the X server generates a ColormapNotify event on each window that has that colormap. The XUninstallColormap function removes the specified colormap from the required list for its screen. As a result, the specified colormap might be uninstalled, and the X server might implicitly install or uninstall additional colormaps. Which colormaps get installed or uninstalled is server-dependent except that the required list must remain installed. If the specified colormap becomes uninstalled, the X server generates a ColormapNotify event on each window that has that colormap. In addition, for every other colormap that is installed or uninstalled as a result of a call to XUninstallColormap, the X server generates a ColormapNotify event on each window that has that colormap. The XListInstalledColormaps function returns a list of the currently installed col- ormaps for the screen of the specified window. The order of the colormaps in the list is not significant and is no explicit indication of the required list. If XListInstalledCol- ormaps fails then exception XWindows is raised with "XListInstalledColormaps failed" . 2.2.7 XSetRGBColormaps, XGetRGBColormaps Types: val XSetRGBColormaps: Drawable -> int -> XStandardColormap list -> unit val XGetRGBColormaps: Drawable -> int -> XStandardColormap list Syntax: XSetRGBColormaps w property stdmaps ; val maps = XGetRGBColormaps w property ; Arguments: w Specifies the window. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 27 property Specifies the property atom. stdmaps Specifies the XStandardColormaps to be used maps Returns the XStandardColormap Argument Type: datatype XStandardColormap = XStandardColormap of { colormap: Colormap, redMax: int, redMult: int, greenMax: int, greenMult: int, blueMax: int, blueMult: int, basePixel: int, visual: Visual } Argument Description: The colormap member is the colormap created by the XCreateColormap function. The redMax, greenMax, and blueMax members give the maximum red, green, and blue values, respectively. Each colour coefficient ranges from zero to its max, inclusive. For example, a common colormap allocation is 3/3/2 (3 planes for red, 3 planes for green, and 2 planes for blue). This colormap would have redMax = 7, greenMax = 7, and blueMax = 3. An alternate allocation that uses only 216 colours is redMax = 5, greenMax = 5, and blueMax = 5. The redMult, greenMult, and blueMult members give the scale factors used to compose a full pixel value. (See the discussion of the basePixel members for further information.) For a 3/3/2 allocation, redMult might be 32, greenMult might be 4, and blueMult might be 1. For a 6-colours-each allocation, redMult might be 36, greenMult might be 6, and blueMult might be 1. The basePixel member gives the base pixel value used to compose a full pixel value. Usually, the basePixel is obtained from a call to the XAllocColorPlanes function. Given integer red, green, and blue coefficients in their appropriate ranges, one then can compute a corresponding pixel value by using the following expression: r * redMult + g * greenMult + b * blueMult + basePixel For GrayScale colormaps, only the colormap, redMax, redMult, and basePixel members are defined. The other members are ignored. To compute a GrayScale pixel value, use the following expression: gray * redMult + basePixel The visual member gives the the visual from which the colormap was created. The properties containing the XStandardColormap information have the type RGB__COLOR__MAP. Description: XSetRGBColormaps sets the RGB colormap definition in the specified property on the named window. The property is stored with a type of RGB__COLOR__MAP and a format of 32. Note that it is the caller's responsibility to honour the ICCCM restriction that only RGB__DEFAULT__MAP can contain more than one definition. 28 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 The XGetRGBColormaps function returns the RGB colormap definitions stored in the specified property on the named window. If the property exists, is of type RGB__COLOR__MAP, is of format 32, and is long enough to contain a colormap definition (if the visual is not present, XGetRGBColormaps assumes the default visual for the screen on which the window is located), XGetRGBColormaps re- turns the list of colormaps. Otherwise, XGetRGBColormaps returns the empty list. Note that it is the caller's responsibility to honour the ICCCM restriction that only RGB__DEFAULT__MAP can contain more than one definition. 2.3 Cursors 2.3.1 XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor Types: val XCreateFontCursor: int -> Cursor val XCreatePixmapCursor: Drawable -> Drawable -> XColor -> XColor -> XPoint -> Cursor val XCreateGlyphCursor: Font -> Font -> int -> int -> XColor -> XColor -> Cursor Syntax: val cursor = XCreateFontCursor shape ; val cursor = XCreatePixmapCursor source mask foreground background hotspot ; val cursor = XCreateGlyphCursor sourceFont maskFont sourceChar maskChar foreground background ; Arguments: background Specifies the RGB values for the background of the source. foreground Specifies the RGB values for the foreground of the source. mask Specifies the cursor's mask bits to be displayed or NoDrawable. maskChar Specifies the glyph character for the mask. maskFont Specifies the font for the mask glyph or NoFont. shape Specifies the shape name of the cursor. source Specifies the cursor's source bits to be displayed. sourceChar Specifies the character glyph for the source. sourceFont Specifies the font for the source glyph. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 29 hotspot Specifies the x and y coordinates, which indicate the hotspot relative to the source's origin. cursor Returns the new cursor Argument Type: datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } Description: X provides a set of standard cursor shapes in a special font named cursor. Applications are encouraged to use this interface for their cursors because the font can be customized for the individual display type. The shape argument specifies which glyph of the standard fonts to use. The hotspot comes from the information stored in the cursor font. The initial colours of a cursor are a black foreground and a white background (see XRecolorCursor). The XCreatePixmapCursor function creates and returns a cursor. The foreground and background RGB values must be specified using foreground and background, even if the X server only has a StaticGray or GrayScale screen. The foreground colour is used for the pixels set to 1 in the source, and the background colour is used for the pixels set to 0. Both source and mask, if specified, must have depth one (or a BadMatch error results) but can have any root. The mask argument defines the shape of the cursor. The pixels set to 1 in the mask define which source pixels are displayed, and the pixels set to 0 define which pixels are ignored. If no mask is given, all pixels of the source are displayed. The mask, if present, must be the same size as the pixmap defined by the source argument, or a BadMatch error results. The hotspot must be a point within the source, or a BadMatch error results. The components of the cursor can be transformed arbitrarily to meet display limitations. The pixmaps can be freed immediately if no further explicit references to them are to be made. Subsequent drawing in the source or mask pixmap has an undefined effect on the cursor. The X server might or might not make a copy of the pixmap. The XCreateGlyphCursor function is similar to XCreatePixmapCursor except that the source and mask bitmaps are obtained from the specified font glyphs. The sourceChar must be a defined glyph in sourceFont, or a BadValue error results. If maskFont is given, maskChar must be a defined glyph in maskFont, or a BadValue error results. The maskFont and maskChar are optional. The origins of the sourceChar and maskChar (if defined) glyphs are positioned coincidently and define the hotspot. The sourceChar and maskChar need not have the same bounding box metrics, and there is no restriction on the placement of the hotspot relative to the bounding boxes. If no maskChar is given, all pixels of the source are displayed. You can free the fonts immediately by calling XFreeFont if no further explicit references to them are to be made. 2.3.2 XDefineCursor, XUndefineCursor, NoCursor Types: 30 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 val XDefineCursor: Drawable -> Cursor -> unit val XUndefineCursor: Drawable -> unit val NoCursor: Cursor Syntax: XDefineCursor w cursor ; XUndefineCursor w ; Arguments: cursor Specifies the cursor that is to be displayed or NoCursor. w Specifies the window. Description: If a cursor is set, it will be used when the pointer is in the window. If the cursor is NoCursor, it is equivalent to XUndefineCursor. The XUndefineCursor undoes the effect of a previous XDefineCursor for this window. When the pointer is in the window, the parent's cursor will now be used. On the root window, the default cursor is restored. 2.3.3 XRecolorCursor, XFreeCursor Types: val XRecolorCursor: Cursor -> XColor -> XColor -> unit val XFreeCursor: Cursor -> unit Syntax: XRecolorCursor cursor fg bg ; XFreeCursor cursor ; Arguments: bg Specifies the RGB values for the background of the source. cursor Specifies the cursor. fg Specifies the RGB values for the foreground of the source. Description: The XRecolorCursor function changes the colour of the specified cursor, and if the cursor is being displayed on a screen, the change is visible immediately. The XFreeCursor function deletes the association between the Cursor value and the specified cursor in the server. The cursor storage is freed when no other resource references it. The specified cursor should not be referred to again. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 31 2.4 Display Specifications 2.4.1 AllPlanes Types: val AllPlanes: int Syntax: val planeMask = AllPlanes ; Description: AllPlanes is a value with all bits set to 1 and is suitable for use in a plane mask argument to a function. 2.4.2 BitmapBitOrder Types: val BitmapBitOrder: unit -> ImageOrder Argument Type: datatype ImageOrder = LSBFirst | MSBFirst Syntax: val order = BitmapBitOrder() ; Description: The BitmapBitOrder function returns LSBFirst or MSBFirst to indicate whether the leftmost bit in the bitmap as displayed on the screen is the least or most significant bit in the bytes comprising the bitmap data. 2.4.3 BitmapPad Types: val BitmapPad: unit -> int Syntax: val pad = BitmapPad() ; Description: The BitmapPad function returns the number of bits that each scanline must be padded. 32 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.4.4 BitmapUnit Types: val BitmapUnit: unit -> int Syntax: val scanline = BitmapUnit() ; Description: The BitmapUnit function returns the size of a bitmap's scanline unit in bits. 2.4.5 ByteOrder Types: val ByteOrder: unit -> ImageOrder Argument Type: datatype ImageOrder = LSBFirst | MSBFirst Syntax: val order = ByteOrder ; Description: The ByteOrder function specifies the required byte order for images for each scanline unit in XY format (bitmap) or for each pixel value in Z format. 2.4.6 CellsOfScreen Types: val CellsOfScreen: unit -> int Syntax: val cells = CellsOfScreen() ; Description: The CellsOfScreen function returns the number of colormap cells in the default colormap of the screen. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 33 2.4.7 ColormapExists, CursorExists, DrawableExists, FontExists, GCExists, VisualExists Types: val ColormapExists: Colormap -> bool val CursorExists: Cursor -> bool val DrawableExists: Drawable -> bool val FontExists: Font -> bool val GCExists: GC -> bool val VisualExists: Visual -> bool Description: In Poly/ML all values may be committed to the database and then referenced in future Poly/ML sessions. X resources are stored in the X server and are destroyed at the end of every Poly/ML session. If the user attempts to use an ML value corresponding to an X resource that existed in an earlier session, then exception XWindows is raised with "Non-existant resource" . To allow programmers to detect old resources these functions return true only if the ML value passed in corresponds to an X resource created in this session, and return false otherwise. 2.4.8 ColormapID, CursorID, DrawableID, FontID, GCID, VisualID, SameDrawable Types: type Colormap ; type Cursor ; type Drawable ; type Font ; type GC ; type Visual ; val ColormapID: Colormap -> int val CursorID: Cursor -> int val DrawableID: Drawable -> int val FontID: Font -> int val GCID: GC -> int val VisualID: Visual -> int val SameDrawable: Drawable -> Drawable -> bool Description: These functions return the X identifiers for the corresponding ML value. In X, unique num- bers are generated for client resources such as windows and pixmaps, and these numbers are sent in the messages between the X server and the client to identify the resources. If two resources have the same X identifier, then they are the same resource. Thus the convenience function SameDrawable is defined as: fun SameDrawable a b = (DrawableID a = DrawableID b) 34 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.4.9 DefaultVisual Types: val DefaultVisual: unit -> Visual Syntax: val visual = DefaultVisual() ; Description: The DefaultVisual function returns the default visual type for the screen. 2.4.10 DisplayConnected Types: val DisplayConnected: unit -> bool Description: In release 1 of the X Window interface in Poly/ML, the display is connected to automati- cally when Poly/ML starts. If -noDisplay was specified on the command line, or Poly/ML cannot connect to the display for whatever reason, then Poly/ML runs without a display connected. An attempt to use an X function that needs the display will raise exception XWindows with "Display not connected" . To allow programmers to avoid this situation, this function returns true only if the display is connected, and false otherwise. 2.4.11 DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM Types: val DisplayHeight: unit -> int val DisplayHeightMM: unit -> int val DisplayWidth: unit -> int val DisplayWidthMM: unit -> int Syntax: val height = DisplayHeight() ; val height = DisplayHeightMM() ; val width = DisplayWidth() ; val width = DisplayWidthMM() ; Description: The DisplayHeight function returns the height of the specified screen in pixels. The DisplayHeightMM function returns the height of the screen in millimeters. The DisplayWidth function returns the width of the screen in pixels. The DisplayWidthMM function returns the width of the specified screen in millimeters. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 35 2.4.12 DisplayPlanes Types: val DisplayPlanes: unit -> int Syntax: val planes = DisplayPlanes() ; Description: The DisplayPlanes function returns the depth of the root window of the screen. 2.4.13 DisplayString Types: val DisplayString: unit -> string Syntax: val s = DisplayString() ; Description: The DisplayString function returns the string that was passed to XOpenDisplay when the current display was opened. 2.4.14 DoesBackingStore Types: val DoesBackingStore: unit -> BackingStore Syntax: val bs = DoesBackingStore() ; Argument Type: datatype BackingStore = NotUseful | WhenMapped | Always Description: The DoesBackingStore function returns WhenMapped, NotUseful, or Always, which indicate whether the screen supports backing stores. 36 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.4.15 DoesSaveUnders Types: val DoesSaveUnders: unit -> bool Syntax: val su = DoesSaveUnders() ; Description: The DoesSaveUnders function returns a bool indicating whether the screen supports save unders. 2.4.16 EventMaskOfScreen Types: val EventMaskOfScreen: unit -> EventMask list Syntax: val mask = EventMaskOfScreen() ; Description: The EventMaskOfScreen function returns the root event mask of the root window for the screen at connection setup. 2.4.17 MinCmapsOfScreen Types: val MinCmapsOfScreen: unit -> int Syntax: val n = MinCmapsOfScreen() ; Description: The MinCmapsOfScreen function returns the minimum number of installed colormaps supported by the screen. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 37 2.4.18 MaxCmapsOfScreen Types: val MaxCmapsOfScreen: unit -> int Syntax: val n = MaxCmapsOfScreen() ; Description: The MaxCmapsOfScreen function returns the maximum number of installed colormaps supported by the screen. 2.4.19 NoColormap, NoCursor, NoDrawable, NoFont, NoVisual, ParentRelative, CopyFromParentDrawable, CopyFromParentVisual, PointerWindow, InputFocus, PointerRoot Types: val NoColormap: Colormap val NoCursor: Cursor val NoDrawable: Drawable val NoFont: Font val NoVisual: Visual val ParentRelative: Drawable val CopyFromParentDrawable: Drawable val CopyFromParentVisual: Visual val PointerWindow: Drawable val InputFocus: Drawable val PointerRoot: Drawable Description: These names refer to constant values of the indicated type that may be used instead of passing a real, live instance of one of these types. Typically they are used to indicate that some default action should take place. For example, setting the background pixmap of a window to ParentRelative specifies that the background pixmap of the window's parent is to be used. 2.4.20 ProtocolRevision Types: val ProtocolRevision: unit -> int Syntax: val rev = ProtocolRevision() ; 38 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The ProtocolRevision function returns the minor protocol revision number of the X server. 2.4.21 ProtocolVersion Types: val ProtocolVersion: unit -> int Syntax: val v = ProtocolVersion() ; Description: The ProtocolVersion function returns the major version number (11) of the X protocol associated with the connected display. 2.4.22 RootWindow Types: val RootWindow: unit -> Drawable Syntax: val root = RootWindow() ; Description: The RootWindow function returns the root window. 2.4.23 ServerVendor Types: val ServerVendor: unit -> string Syntax: val s = ServerVendor() ; Description: The ServerVendor function returns a string that provides some identification of the owner of the X server implementation. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 39 2.4.24 VendorRelease Types: val VendorRelease: unit -> int Syntax: val n = VendorRelease() ; Description: The VendorRelease function returns a number related to a vendor's release of the X server. 2.4.25 XQueryBestCursor, XQueryBestSize, XQueryBestStipple, XQueryBestTile Types: val XQueryBestSize: ShapeClass -> Drawable -> XRectangle -> XRectangle val XQueryBestCursor: Drawable -> XRectangle -> XRectangle val XQueryBestStipple: Drawable -> XRectangle -> XRectangle val XQueryBestTile: Drawable -> XRectangle -> XRectangle Syntax: val bestSize = XQueryBestCursor whichScreen area ; val bestSize = XQueryBestSize whichScreen class area ; val bestSize = XQueryBestStipple whichScreen area ; val bestSize = XQueryBestTile whichScreen area ; Argument Type: datatype ShapeClass = CursorShape | TileShape | StippleShape Arguments: class Specifies the class that you are interested in. You can pass TileShape, CursorShape, or StippleShape. whichScreen Drawable to determine which screen. area Specifies the width and height. bestSize Returns the width and height of the object best supported by the display hardware. 40 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The XQueryBestSize function returns the best or closest size to the specified size. For CursorShape, this is the largest size that can be fully displayed on the screen specified by whichScreen. For TileShape, this is the size that can be tiled fastest. For StippleShape, this is the size that can be stippled fastest. For CursorShape, the drawable indicates the desired screen. For TileShape and StippleShape, the drawable indicates the screen and possibly the window class and depth. An InputOnly window cannot be used as the drawable for TileShape or StippleShape, or a BadMatch error results. The XQueryBestTile function returns the best or closest size, that is, the size that can be tiled fastest on the screen specified by d. The drawable indicates the screen and possibly the window class and depth. If an InputOnly window is used as the drawable, a BadMatch error results. The XQueryBestStipple function returns the best or closest size, that is, the size that can be stippled fastest on the screen specified by whichScreen. The drawable indicates the screen and possibly the window class and depth. If an InputOnly window is used as the drawable, a BadMatch error results. Some displays allow larger cursors than other displays. The XQueryBestCursor function provides a way to find out what size cursors are actually possible on the display. It returns the largest size that can be displayed. Applications should be prepared to use smaller cursors on displays that cannot support large ones. 2.5 Drawing Primitives 2.5.1 XClearArea, XClearWindow Types: val XClearArea: Drawable -> XRectangle -> bool -> unit val XClearWindow: Drawable -> unit Syntax: XClearArea w area exposures ; XClearWindow w ; Arguments: exposures Specifies a bool that indicates if Expose events are to be generated. area Specifies the area to be cleared in the window. w Specifies the window. Description: The XClearArea function paints a rectangular area in the specified window according to the specified dimensions with the window's background pixel or pixmap. The subwindow- mode effectively is ClipByChildren. If width is zero, it is replaced with the current width of the window minus x. If height is zero, it is replaced with the current height of the window minus y. If the window has a defined background tile, the rectangle clipped by any children is filled with this tile. If the window has background NoDrawable, the cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 41 contents of the window are not changed. In either case, if exposures is true, one or more Expose events are generated for regions of the rectangle that are either visible or are being retained in a backing store. If you specify a window whose class is InputOnlyClass, a BadMatch error results. The XClearWindow function clears the entire area in the specified window and is equiv- alent to XClearArea w empty false . If the window has a defined background tile, the rectangle is tiled with a plane-mask of all ones and GXcopy function. If the window has background NoDrawable, the contents of the window are not changed. If you specify a window whose class is InputOnlyClass, a BadMatch error results. 2.5.2 XCopyArea, XCopyPlane Types: val XCopyArea: Drawable -> Drawable -> GC -> XPoint -> XRectangle -> unit val XCopyPlane: Drawable -> Drawable -> GC -> XPoint -> XRectangle -> int -> unit Syntax: XCopyArea src dest gc srcPoint destArea ; XCopyPlane src dest gc srcPoint destArea plane ; Arguments: destArea Specifies the destination rectangle gc Specifies the GC. plane Specifies the bit plane. You must set exactly one bit to 1. src Specifies the source dest and destination drawables to be combined. srcPoint Specifies the upper-left corner of the source rectangle. Description: The XCopyArea function combines the specified rectangle of src with the specified rect- angle of dest. The drawables must have the same root and depth, or a BadMatch error results. If regions of the source rectangle are obscured and have not been retained in backing store or if regions outside the boundaries of the source drawable are specified, those regions are not copied. Instead, the following occurs on all corresponding destination regions that are either visible or are retained in backing store. If the destination is a window with a background other than NoDrawable, corresponding regions of the destination are tiled with that background (with plane-mask of all ones and GXcopy function). Regardless of tiling or whether the destination is a window or a pixmap, if graphics-exposures is true, then GraphicsExpose events for all corresponding destination regions are generated. If graphics-exposures is true but no GraphicsExpose events are generated, a NoExpose event is generated. Note that by default graphics-exposures is true in new GCs. 42 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 This function uses these GC components: function, plane-mask, subwindow-mode, graphics-exposures, clip-origin, and clip-mask. The XCopyPlane function uses a single bit plane of the specified source rectangle com- bined with the specified GC to modify the specified rectangle of dest. The drawables must have the same root but need not have the same depth. If the drawables do not have the same root, a BadMatch error results. If plane does not have exactly one bit set to 1 and is less than 2 ^ n , where n is the depth of the drawables, a BadValue error results. Effectively, XCopyPlane forms a pixmap of the same depth as the rectangle of dest and with a size specified by the source region. It uses the foreground/background pixels in the GC (foreground everywhere the bit plane in src contains a bit set to 1, background everywhere the bit plane in src contains a bit set to 0) and the equivalent of a CopyArea protocol request is performed with all the same exposure semantics. This can also be thought of as using the specified region of the source bit plane as a stipple with a fill-style of FillOpaqueStippled for filling a rectangular area of the destination. This function uses these GC components: function, plane-mask, foreground, background, subwindow-mode, graphics-exposures, clip-origin, and clip-mask. 2.5.3 XDrawArc, XDrawArcs Types: val XDrawArc: Drawable -> GC -> XArc -> unit val XDrawArcs: Drawable -> GC -> XArc list -> unit Syntax: XDrawArc d gc (XArc (area,angle1,angle2)) ; XDrawArcs d gc arcs ; Arguments: angle1 Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. angle2 Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. arcs Specifies a list of arcs. d Specifies the drawable. gc Specifies the GC. area Specifies the bounding rectangle of the area. The x and y coordinates, which are relative to the origin of the drawable, specify the upper-left corner of the bounding rectangle. The width and height are the major and minor axes of the arc. Argument Type: datatype XArc = XArc of XRectangle * int * int cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 43 Description: XDrawArc draws a single circular or elliptical arc, and XDrawArcs draws multiple circular or elliptical arcs. Each arc is specified by a rectangle and two angles. The center of the circle or ellipse is the center of the rectangle, and the major and minor axes are specified by the width and height. Positive angles indicate counterclockwise motion, and negative angles indicate clockwise motion. If the magnitude of angle2 is greater than 360 degrees, XDrawArc or XDrawArcs truncates it to 360 degrees. For an arc specified as (XArc (Area {x,y,width,height}),angle1,angle2), the origin of the major and minor axes is at (x + width div 2,y + height div 2), and the infinitely thin path describing the entire circle or ellipse intersects the horizontal axis at (x,y + height div 2) and (x + width,y + height div 2) and intersects the vertical axis at (x + width div 2,y) and (x + width div 2,y + height) These coordinates can be fractional and so are not truncated to discrete coordinates. The path should be defined by the ideal mathematical path. For a wide line with line-width lw, the bounding outlines for filling are given by the two infinitely thin paths consisting of all points whose perpendicular distance from the path of the circle/ellipse is equal to lw/2 (which may be a fractional value). The cap-style and join-style are applied the same as for a line corresponding to the tangent of the circle/ellipse at the endpoint. For an arc specified as (XArc (Area {x,y,width,height}),angle1,angle2), the angles must be specified in the effectively skewed coordinate system of the ellipse (for a circle, the angles and coordinate systems are identical). The relationship between these angles and angles expressed in the normal coordinate system of the screen (as measured with a protractor) is as follows: skewed-angle = atan (tan normal-angle * width div height) + adjust The skewed-angle and normal-angle are expressed in radians (rather than in degrees scaled by 64) in the range (0,2*pi) and where atan returns a value in the range ("pi/2,pi/2) and adjust is: 0 for normal-angle in the range (0,pi/2) pi for normal-angle in the range (pi/2,3*pi/2) 2*pi for normal-angle in the range (3*pi/2,2*pi) For any given arc, XDrawArc and XDrawArcs do not draw a pixel more than once. If two arcs join correctly and if the line-width is greater than zero and the arcs intersect, XDrawArc and XDrawArcs do not draw a pixel more than once. Otherwise, the in- tersecting pixels of intersecting arcs are drawn multiple times. Specifying an arc with one 44 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 endpoint and a clockwise extent draws the same pixels as specifying the other endpoint and an equivalent counterclockwise extent, except as it affects joins. If the last point in one arc coincides with the first point in the following arc, the two arcs will join correctly. If the first point in the first arc coincides with the last point in the last arc, the two arcs will join correctly. By specifying one axis to be zero, a horizontal or vertical line can be drawn. Angles are computed based solely on the coordinate system and ignore the aspect ratio. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, dash-offset, dash-list, function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-origin, and clip-mask. 2.5.4 XDrawImageString, XDrawImageString16 Types: val XDrawImageString: Drawable -> GC -> XPoint -> string -> unit val XDrawImageString16: Drawable -> GC -> XPoint -> int list -> unit Syntax: XDrawImageString d gc point string ; XDrawImageString16 d gc point bigChars ; Arguments: d Specifies the drawable. gc Specifies the GC. string Specifies the character string. bigChars Specifies the character string as a list of 16 bit integers. point Specifies the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. Description: The XDrawImageString16 function is similar to XDrawImageString except that it uses 16-bit characters. Both functions also use both the foreground and background pixels of the GC in the destination. The effect is first to fill a destination rectangle with the background pixel defined in the GC and then to paint the text with the foreground pixel. The upper-left corner of the filled rectangle is at (x,y-ascent), the width is overall, and the height is ascent+descent. The overall, ascent, and descent are as would be returned by XTextExtents using the font in the gc and string. The function and fill-style defined in the GC are ignored for these functions. The effective function is GXcopy, and the effective fill-style is FillSolid. For fonts defined with 16-bit matrix indexing and used with XDrawImageString, each 8-bit character in the string is used to form the least-significant 8-bits of the index, the most-significant bits are taken to be zero. Both functions use these GC components: plane-mask, foreground, background, font, subwindow-mode, clip-origin, and clip-mask. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 45 2.5.5 XDrawLine, XDrawLines, XDrawSegments Types: val XDrawLine: Drawable -> GC -> XPoint -> XPoint -> unit val XDrawLines: Drawable -> GC -> XPoint list -> CoordMode -> unit val XDrawSegments: Drawable -> GC -> (XPoint * XPoint) list -> unit Syntax: XDrawLine d gc point1 point2 ; XDrawLines d gc points mode ; XDrawSegments d gc segments ; Arguments: d Specifies the drawable. gc Specifies the GC. mode Specifies the coordinate mode. You can pass CoordModeOrigin or Co- ordModePrevious. points Specifies a list of points. segments Specifies a list of pairs of points. point1 Specifies the points point2 to be connected. Argument Type: datatype CoordMode = CoordModeOrigin | CoordModePrevious Description: The XDrawLine function uses the components of the specified GC to draw a line between the specified set of points (x1,y1) and (x2,y2). It does not perform joining at coincident endpoints. For any given line, XDrawLine does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. The XDrawLines function uses the components of the specified GC to draw npoints-1 lines between each pair of points (point[i],point[i+1]) in the list of XPoint structures. It draws the lines in the same order as the list. The lines join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, XDrawLines does not draw a pixel more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire PolyLine pro- tocol request were a single, filled shape. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. The XDrawSegments function draws multiple, unconnected lines. For each segment, XDrawSegments draws a line between (x1,y1) and (x2,y2). It draws the lines in the same order as the list of pairs of points and does not perform joining at coincident endpoints. For any given line, XDrawSegments does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times. All three functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, dash-offset, dash-list, function, plane-mask, line-width, line-style, cap-style, fill-style, subwindow-mode, clip-origin, and clip-mask. The XDrawLines function also uses the join-style GC component. 46 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.5.6 XDrawPoint, XDrawPoints Types: val XDrawPoint: Drawable -> GC -> XPoint -> unit val XDrawPoints: Drawable -> GC -> XPoint list -> CoordMode -> unit Syntax: XDrawPoint d gc point ; XDrawPoints d gc points mode ; Arguments: d Specifies the drawable. gc Specifies the GC. points Specifies a list of points. point Specifies the point. mode Specifies the coordinate mode. You can pass CoordModeOrigin or Coord- ModePrevious. Argument Type: datatype CoordMode = CoordModeOrigin | CoordModePrevious Description: The XDrawPoint function uses the foreground pixel and function components of the GC to draw a single point into the specified drawable; XDrawPoints draws multiple points this way. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. XDrawPoints draws the points in the same order as the list. Both functions use these GC components: function, plane-mask, foreground, subwindow- mode, clip-origin, and clip-mask. 2.5.7 XDrawRectangle, XDrawRectangles Types: val XDrawRectangle: Drawable -> GC -> XRectangle -> unit val XDrawRectangles: Drawable -> GC -> XRectangle list -> unit Syntax: XDrawRectangle d gc (Area{x=x,y=y,w=width,h=height}) ; XDrawRectangles d gc rectangles ; Arguments: d Specifies the drawable. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 47 gc Specifies the GC. rectangles Specifies a list of rectangles. x,y Specifies the upper-left corner of the rectangle. width Specifies the dimensions height of the rectangle. Description: The XDrawRectangle and XDrawRectangles functions draw the outlines of the spec- ified rectangle or rectangles as if a five-point PolyLine protocol request were specified for each rectangle: [(x,y),(x+width,y),(x+width,y+height),(x,y+height),(x,y)] For the specified rectangle or rectangles, these functions do not draw a pixel more than once. XDrawRectangles draws the rectangles in the same order as the list. If rectangles intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, dash-offset, dash-list, function, plane-mask, line-width, line-style, join-style, fill-style, subwindow-mode, clip-origin, and clip-mask. 2.5.8 XDrawString, XDrawString16 Types: val XDrawString: Drawable -> GC -> XPoint -> string -> unit val XDrawString16: Drawable -> GC -> XPoint -> int list -> unit Syntax: XDrawString d gc point string ; XDrawString16 d gc point bigChars ; Arguments: d Specifies the drawable. gc Specifies the GC. string Specifies the character string. bigChars Specifies the character string as a list of 16-bit integers. point Specifies the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. Description: Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. For fonts with 2-byte indexing rather than 16-bit linear indexing, pass byte 1 as the most- significant 8-bits and byte 2 as the least-significant 8-bits in the bigChars argument. 48 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 For fonts defined with 16-bit linear indexing and used with XDrawString, each 8-bit character in the string is used to form the least-significant 8-bits of the index, the most- significant bits are taken to be zero. For fonts defined with 2-byte matrix indexing and used with XDrawString, each 8-bit character in the string is used to form byte 2 of the index, byte 1 is taken to be zero. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, function, plane-mask, fill-style, font, subwindow-mode, clip-origin, and clip- mask. 2.5.9 XDrawText, XDrawText16 Types: val XDrawText: Drawable -> GC -> XPoint -> XTextItem list -> unit val XDrawText16: Drawable -> GC -> XPoint -> XTextItem16 list -> unit Syntax: XDrawText d gc point items ; XDrawText16 d gc point items ; Arguments: d Specifies the drawable. gc Specifies the GC. point Specifies the x and y coordinates, which are relative to the origin of the specified drawable and define the origin of the first character. items Specifies a list of text items. Argument Type: datatype XTextItem = XTextItem of string * int * Font datatype XTextItem16 = XTextItem16 of int list * int * Font Argument Description: If the font member is not NoFont, the font is changed before printing and also is stored in the GC. If an error was generated during text drawing, the previous items may have been drawn. The baseline of the characters are drawn starting at the x and y coordinates that you pass in the text drawing functions. For example, consider the background rectangle drawn by XDrawImageString. If you want the upper-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y+ascent) as the baseline origin coordinates to the text functions. The ascent is the font ascent, as given in the XFontStruct structure. If you want the lower-left corner of the background rectangle to be at pixel coordinate (x,y), pass the (x,y-descent+1) as the baseline origin coordinates to the text functions. The descent is the font descent, as given in the XFontStruct structure. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 49 Description: The XDrawText16 function is similar to XDrawText except that it uses 16-bit charac- ters. Both functions allow complex spacing and font shifts between counted strings. Each text item is processed in turn. A font member other than NoFont in an item causes the font to be stored in the GC and used for subsequent text. A text element delta specifies an additional change in the position along the x axis before the string is drawn. The delta is always added to the character origin and is not dependent on any characteristics of the font. Each character image, as defined by the font in the GC, is treated as an additional mask for a fill operation on the drawable. The drawable is modified only where the font character has a bit set to 1. If a text item generates a BadFont error, the previous text items may have been drawn. For fonts with 2-byte indexing rather than 16-bit linear indexing, pass byte 1 as the high order 8-bits and byte 2 as the low order 8-bits in the XTextItem16 list. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, function, plane-mask, fill-style, font, subwindow-mode, clip-origin, and clip- mask. 2.5.10 XFillArc, XFillArcs, XFillPolygon, XFillRectangle, XFillRectangles Types: val XFillArc: Drawable -> GC -> XArc -> unit val XFillArcs: Drawable -> GC -> XArc list -> unit val XFillRectangle: Drawable -> GC -> XRectangle -> unit val XFillRectangles: Drawable -> GC -> XRectangle list -> unit val XFillPolygon: Drawable -> GC -> XPoint list -> PolyShape -> CoordMode -> unit Syntax: XFillArc d gc (XArc (area,angle1,angle2)) ; XFillArcs d gc arcs ; XFillPolygon d gc points shape mode ; XFillRectangle d gc (Area{x=x,y=y,w=width,h=height}) ; XFillRectangles d gc rectangles ; Argument Type: datatype PolyShape = Complex | Nonconvex | Convex datatype CoordMode = CoordModeOrigin | CoordModePrevious Arguments: d Specifies the drawable. gc Specifies the GC. 50 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 area Specifies the bounding rectangle of the area. The x and y coordinates, which are relative to the origin of the drawable, specify the upper-left corner of the bounding rectangle. The width and height are the major and minor axes of the arc. angle1 Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees * 64. angle2 Specifies the path and extent of the arc relative to the start of the arc, in units of degrees * 64. arcs Specifies a list of arcs. points Specifies a list of points. shape Specifies a shape that helps the server to improve performance. You can pass Complex, Convex, or Nonconvex. mode Specifies the coordinate mode. You can pass CoordModeOrigin or CoordModePrevious. x,y Specifies the upper-left corner of the rectangle. width Specifies the dimensions height of the rectangle. rectangles Specifies a list of rectangles. Description: The XFillRectangle and XFillRectangles functions fill the specified rectangle or rect- angles as if a four-point FillPolygon protocol request were specified for each rectangle: [(x,y),(x+width,y),(x+width,y+height),(x,y+height)] Each function uses the x and y coordinates, width and height dimensions, and GC you specify. XFillRectangles fills the rectangles in the same order as the list. For any given rectangle, XFillRectangle and XFillRectangles do not draw a pixel more than once. If rectangles intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, function, plane-mask, fill-style, subwindow-mode, clip-origin, and clip-mask. XFillPolygon fills the region closed by the specified path. The path is closed automati- cally if the last point in the list does not coincide with the first point. XFillPolygon does not draw a pixel of the region more than once. CoordModeOrigin treats all coordinates as relative to the origin, and CoordModePrevious treats all coordinates after the first as relative to the previous point. Depending on the specified shape, the following occurs: If shape is Complex, the path may self-intersect. Note that contiguous coincident points in the path are not treated as self-intersection. If shape is Convex, for every pair of points inside the polygon, the line segment connecting them does not intersect the path. If known by the client, specifying Convex can improve performance. If you specify Convex for a path that is not convex, the graphics results are undefined. If shape is Nonconvex, the path does not self-intersect, but the shape is not wholly convex. If known by the client, specifying Nonconvex instead of Complex may improve performance. If you specify Nonconvex for a self-intersecting path, the graphics results are undefined. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 51 The fill-rule of the GC controls the filling behavior of self-intersecting polygons. This function uses these GC components: foreground, background, tile, stipple, tile- stipple-origin, function, plane-mask, fill-style, fill-rule, subwindow-mode, clip-origin, and clip-mask. For each arc, XFillArc or XFillArcs fills the region closed by the infinitely thin path described by the specified arc and, depending on the arc-mode specified in the GC, one or two line segments. For ArcChord, the single line segment joining the endpoints of the arc is used. For ArcPieSlice, the two line segments joining the endpoints of the arc with the center point are used. XFillArcs fills the arcs in the same order as the list. For any given arc, XFillArc and XFillArcs do not draw a pixel more than once. If regions intersect, the intersecting pixels are drawn multiple times. Both functions use these GC components: foreground, background, tile, stipple, tile- stipple-origin, function, plane-mask, fill-style, arc-mode, subwindow-mode, clip-origin, and clip-mask. 2.6 Exceptions 2.6.1 Range Types: exception Range Description: Range is raised when an argument to a function is not inside the allowable range of values. There are many restricted ranges for function arguments. In brief: x and y coordinates must lie between "32768 and 32767 inclusive, width and height values must be between 0 and 65535 inclusive. This means that Rect {top,left,bottom,right} must have right >= left and bottom >= top . Similarly, Area {x,y,w,h} must have w >= 0 and h >= 0 . Where an XRectangle is used to pass width and height values only, the x and y members must both be 0. 2.6.2 XWindows Types: exception XWindows of string Arguments: "Display not connected" Attempt to use X functions with no dis- play connected. "Non-existant resource" Attempt to use a resource value from a previous session. 52 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 "Not a window" Attempt to use a pixmap Drawable as a window "Not a pixmap" Attempt to use a window Drawable as a pixmap "Handler mismatch" Attempt to send a message to a window handler when the window has had a new handler installed with XSetHandler. " failed" Xlib detected an error condition when executing "Bad in " The X server detected an error con- dition occurred when executing . This is only reported when running synchronously. For exam- ple, "BadMatch in XChangeWindowAt- tributes" . Description: exception XWindows is raised when an Xlib function returns an error condition. 2.7 Event Handling 2.7.1 IsCursorKey, IsFunctionKey, IsKeypadKey, IsMiscFunctionKey, IsModifierKey, IsPFKey Types: val IsCursorKey: int -> bool val IsFunctionKey: int -> bool val IsKeypadKey: int -> bool val IsMiscFunctionKey: int -> bool val IsModifierKey: int -> bool val IsPFKey: int -> bool Description: The IsCursorKey function returns true if the specified KeySym is a cursor key. The IsFunctionKey function returns true if the KeySym is a function key. The IsKeypadKey function returns true if the specified KeySym is a keypad key. The IsMiscFunctionKey function returns true if the specified KeySym is a miscellaneous function key. The IsModifierKey function returns true if the specified KeySym is a modifier key. The IsPFKey function returns true if the specified KeySym is a PF key. 2.7.2 ShiftDown, ControlDown Types: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 53 val ShiftDown: Modifier list -> bool val ControlDown: Modifier list -> bool Syntax: ShiftDown modifiers ControlDown modifiers Arguments: modifiers Specifies the modifiers from a key event Description: The ShiftDown convenience function returns true if ShiftMask is in the modifiers list, and false otherwise. This indicates if the Shift key was pressed when the key event was generated. The ControlDown convenience function returns true if ControlMask is in the modifiers list, and false otherwise. This indicates if the Control key was pressed when the key event was generated. 2.7.3 XLookupString, NoSymbol Types: val XLookupString: int -> Modifier list -> (string * int) val NoSymbol: int Syntax: val (string,keysym) = XLookupString keycode modifiers ; Arguments: keycode Specifies the keycode from a key event modifiers Specifies the modifiers from a key event string Returns the string for that combination keysym Returns the keysym for that combination Description: The XLookupString function translates a key event to a KeySym and a string. The KeySym is obtained by using the standard interpretation of the Shift, Lock, and group modifiers as defined in the X Protocol specification. If the KeySym has been rebound, the bound string will be returned. Otherwise, the KeySym is mapped, if possible, to an ISO Latin-1 character or (if the Control modifier is on) to an ASCII control character, and that character is returned. If no KeySym is defined for keycode, the KeySym returned is NoSymbol. 54 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.7.4 XSelectInput Types: val XSelectInput: Drawable -> EventMask list -> unit Syntax: XSelectInput w events ; Arguments: events Specifies the list of events you wish to handle. w Specifies the window. Argument Type: datatype EventMask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | PointerMotionHintMask | Button1MotionMask | Button2MotionMask | Button3MotionMask | Button4MotionMask | Button5MotionMask | ButtonMotionMask | KeymapStateMask | ExposureMask | VisibilityChangeMask | StructureNotifyMask | ResizeRedirectMask | SubstructureNotifyMask | SubstructureRedirectMask | FocusChangeMask | PropertyChangeMask | ColormapChangeMask | OwnerGrabButtonMask | ButtonClickMask Description: The XSelectInput function requests that the X server report the events associated with the specified event mask. Initially, X will not report any of these events. Events are reported relative to a window. If a window is not interested in a device event, it usually propagates to the closest ancestor that is interested, unless the doNotPropagate attribute prohibits it. Setting the event-mask attribute of a window overrides any previous call for the same window but not for other clients. Multiple clients can select for the same events on the same window with the following restrictions: Multiple clients can select events on the same window because their event masks are disjoint. When the X server generates an event, it reports it to all interested clients. Only one client at a time can select CirculateRequest, ConfigureRequest, or MapRequest events, which are associated with the event mask SubstructureRedi- rectMask. Only one client at a time can select a ResizeRequest event, which is associated with the event mask ResizeRedirectMask. Only one client at a time can select a ButtonPress event, which is associated with the event mask ButtonPressMask. The server reports the event to all interested clients. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 55 2.7.5 XSetHandler, NullHandler Types: val XSetHandler: Drawable -> ('a XEvent * 'state -> 'state) -> 'state -> (int -> 'a -> unit) val NullHandler: 'a XEvent * 'state -> 'state Syntax: val sender = XSetHandler w Handler initialState ; sender delay message ; Arguments: w Specifies the window. Handler Specifies the event handling function. initialState Specifies the initial state. sender Returns a function that can send a strongly typed message to the win- dow at any specified time in the future. delay Specifies a delay in milliseconds before the message is sent. message Specifies the message value. The type of the message matches the type of the XEvent processed by the event handling function. Description: When a window is created it is initially unhandled. It can be used for drawing on, but it will not process any events. An ML function can then be registered for that window, and an initial value supplied. The registered function will transform the value to a new value every time an event arrives for that window. In other words, a functional state machine is set up for each window. We also implement strongly typed message passing between windows, and millisecond-resolution timer events. XSetHandler installs a new event handling function for a window. Event handlers typ- ically pattern-match on the XEvent members, choosing to match events that they are interested in, and then finish off with a default pattern match to provide a default action for all other events. For example: fun Handler (Expose {window,region,...},state) = ... | Handler (EnterNotify {window,...},state) = ... | Handler (LeaveNotify {window,...},state) = ... | Handler (MotionNotify {window,pointer,...},state) = ... | Handler (_,state) = state ; (* default is to do nothing *) Underneath, we have a process that maintains a current state and an event handler for every window, and manages the events from the X server. As each event arrives it applies the handler for that window to the event and the current state, which returns a new state, which replaces the original state. Because only one process handles the events, 56 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 we guarantee that no other handler function can run at the same time. If the handler function raises an exception, instead of returning a new state, then the current state is left unchanged, and the exception is reported at the terminal. In this way all events are handled in turn in a predictable order, and in much the same way that other X toolkits work. The Poly/ML top level shell process is still available for debugging and control. If a window has an operation that takes a long time to complete, then the programmer can use Poly/ML processes to do the computations 'in the background' and 'send' the result as a message to the window for display. However, the use of processes in this way is discouraged as they are not standard. If a window function loops, then all other windows will freeze. Since the Poly/ML top level shell is available the user can type ^C followed by 'f' to raise Interrupt in that window function. The function returned by XSetHandler can be used to send messages to this window, if messages are not required then this function can be ignored. The message value will be wrapped up in a Message XEvent and passed to the event handling function, the type of the message value is guaranteed match the type of XEvent handled by the event handler. The time the message arrives can be modified using the delay parameter, which is the delay in milliseconds. This is often useful for implementing flashing displays, or auto-repeat functions. 2.7.6 XSetInputFocus, XGetInputFocus Types: val XSetInputFocus: Drawable -> RevertCode -> int -> unit val XGetInputFocus: unit -> (Drawable * RevertCode) Syntax: XSetInputFocus focus revertTo time ; val (focus,revertTo) = XGetInputFocus() ; Arguments: focus Specifies or returns the window, PointerRoot, or NoDrawable. revertTo Specifies or returns where the input focus reverts to if the window becomes not viewable. You can pass RevertToParent, RevertToPointerRoot, or RevertToNone. time Specifies the time. You can pass either a timestamp or CurrentTime. Argument Type: datatype RevertCode = RevertToParent | RevertToPointerRoot | RevertToNone val CurrentTime: int Description: The XSetInputFocus function changes the input focus and the last-focus-change time. It has no effect if the specified time is earlier than the current last-focus-change time or is later cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 57 than the current X server time. Otherwise, the last-focus-change time is set to the specified time (CurrentTime is replaced by the current X server time). XSetInputFocus causes the X server to generate FocusIn and FocusOut events. Depending on the focus argument, the following occurs: If focus is NoDrawable, all keyboard events are discarded until a new focus window is set, and the revertTo argument is ignored. If focus is a window, it becomes the keyboard's focus window. If a generated keyboard event would normally be reported to this window or one of its inferiors, the event is reported as usual. Otherwise, the event is reported relative to the focus window. If focus is PointerRoot, the focus window is dynamically taken to be the root window of whatever screen the pointer is on at each keyboard event. In this case, the revertTo argument is ignored. The specified focus window must be viewable at the time XSetInputFocus is called, or a BadMatch error results. If the focus window later becomes not viewable, the X server evaluates the revertTo argument to determine the new focus window as follows: If revertTo is RevertToParent, the focus reverts to the parent (or the closest view- able ancestor), and the new revertTo value is taken to be RevertToNone. If revertTo is RevertToPointerRoot or RevertToNone, the focus reverts to PointerRoot or NoDrawable, respectively. When the focus reverts, the X server generates FocusIn and FocusOut events, but the last-focus-change time is not af- fected. The XGetInputFocus function returns the focus window and the current focus state. 2.7.7 XSync, XFlush Types: val XSync: bool -> unit val XFlush: unit -> unit Syntax: XSync discard ; XFlush() ; Arguments: discard Specifies a bool that indicates whether XSync discards all events on the event queue. Description: The XSync function flushes the output buffer and then waits until all requests have been received and processed by the X server. Any errors generated must be handled by the error handler. For each error event received by Xlib, XSync calls the client application's 58 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 error handling routine. Any events generated by the server are enqueued into the library's event queue. If you passed false, XSync does not discard the events in the queue. If you passed true, XSync discards all events in the queue, including those events that were on the queue before XSync was called. Client applications seldom need to call XSync. The XFlush function flushes the output buffer. Most client applications need not use this function because the output buffer is automatically flushed internally as events are read. 2.7.8 XSyncronise, XSynchronize Types: val XSyncronise: int -> unit Syntax: XSyncronise flag ; Arguments: flag Specifies that synchronization is enabled or disabled Description: If flag is non-zero, XSynchronize turns on synchronous behavior. If flag is zero, XSynchro- nize turns off synchronous behavior. NOTE that the current release has XSynchronize misspelled as XSyncronise. 2.7.9 XTranslateCoordinates Types: val XTranslateCoordinates: Drawable -> Drawable -> XPoint -> XPoint * Drawable Syntax: val (dstPoint,child) = XTranslateCoordinates srcWindow destWindow srcPoint ; Arguments: srcWindow Specifies the source window. destWindow Specifies the destination window. srcPoint Specifies the x and y coordinates within the source window dstPoint Return the x and y coordinates within the destination window child Returns the child if the coordinates are contained in a mapped child of the destination window. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 59 Description: The XTranslateCoordinates function takes the srcPoint coordinates relative to the source window's origin and returns these coordinates to dstPoint relative to the desti- nation window's origin. If XTranslateCoordinates returns zero, srcWindow and dest- Window are on different screens, and dstPoint is (0,0). If the coordinates are contained in a mapped child of destWindow, that child is returned as child. Otherwise, child has the value NoDrawable. 2.8 Fonts 2.8.1 CharLBearing, CharRBearing, CharWidth, CharAscent, CharDescent, CharAttributes Types: val CharLBearing: XCharStruct -> int val CharRBearing: XCharStruct -> int val CharWidth: XCharStruct -> int val CharAscent: XCharStruct -> int val CharDescent: XCharStruct -> int val CharAttributes: XCharStruct -> int Argument Type: datatype XCharStruct = XCharStruct of { lbearing: int, rbearing: int, width: int, ascent: int, descent: int, attributes: int } Description: These convenience functions return the individual fields of the XCharStruct datatype. 2.8.2 FSFont, FSDirection, FSMinChar, FSMaxChar, FSMinByte1, FSMaxByte1, FSAllCharsExist, FSAllCharsExist, FSDefaultChar, FSMinBounds, FSMaxBounds, PSPerChar, FSPerChar, FSAscent, FSDescent, FSAscent, FSDescent, FSMinWidth, FSMaxWidth, FSMinHeight, FSMaxHeight Types: val FSFont: XFontStruct -> Font val FSDirection: XFontStruct -> FontDirection val FSMinChar: XFontStruct -> int val FSMaxChar: XFontStruct -> int val FSMinByte1: XFontStruct -> int val FSMaxByte1: XFontStruct -> int 60 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 val FSAllCharsExist: XFontStruct -> bool val FSDefaultChar: XFontStruct -> int val FSMinBounds: XFontStruct -> XCharStruct val FSMaxBounds: XFontStruct -> XCharStruct val PSPerChar: XFontStruct -> XCharStruct list val FSAscent: XFontStruct -> int val FSDescent: XFontStruct -> int val FSMinWidth: XFontStruct -> int val FSMaxWidth: XFontStruct -> int val FSMinHeight: XFontStruct -> int val FSMaxHeight: XFontStruct -> int Argument Type: datatype XFontStruct = XFontStruct of { font: Font, direction: FontDirection, minChar: int, maxChar: int, minByte1: int, maxByte1: int, allCharsExist: bool, defaultChar: int, minBounds: XCharStruct, maxBounds: XCharStruct, perChar: XCharStruct list, ascent: int, descent: int } Description: These convenience functions return the individual fields of the XFontStruct datatype. NOTE that the current release has FSPerChar misspelled as PSPerChar. FSMinWidth, FSMaxWidth, FSMinHeight and FSMaxHeight are defined as: fun FSMinWidth f = CharWidth (FSMinBounds f) ; fun FSMaxWidth f = CharWidth (FSMaxBounds f) ; fun FSMinHeight f = CharAscent (FSMinBounds f) + CharDescent (FSMinBounds f) ; fun FSMaxHeight f = CharAscent (FSMaxBounds f) + CharDescent (FSMaxBounds f) ; 2.8.3 XListFonts, XListFontsWithInfo Types: val XListFonts: string -> int -> string list val XListFontsWithInfo: string -> int -> (string list * XFontStruct list) Syntax: val names = XListFonts pattern maxNames ; val (names,fonts) = XListFontsWithInfo pattern maxNames ; cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 61 Arguments: pattern Specifies the pattern string that can contain wildcard characters. maxNames Specifies the maximum number of names to be returned. names Specifies the list of font names returned. fonts Specifies the list of font structures returned. Description: The XListFonts function returns a list of available font names (as controlled by the font search path; see XSetFontPath) that match the string you passed to the pattern argument. The string should be ISO Latin-1; uppercase and lowercase do not matter. The pattern string can contain any characters, but each asterisk "*" is a wildcard for any number of characters, and each question mark "?" is a wildcard for a single character. The list of names is limited to size specified by maxNames. If XListFonts fails then exception XWindows is raised with "XListFonts failed" . The XListFontsWithInfo function returns a list of font names that match the specified pattern and their associated font information. The list of names is limited to size speci- fied by maxNames. The information returned for each font is identical to what XLoad- QueryFont would return except that the per-character metrics are not returned. The pattern string can contain any characters, but each asterisk "*" is a wildcard for any number of characters, and each question mark "?" is a wildcard for a single character. If XListFontsWithInfo fails then exception XWindows is raised with "XListFontsWith- Info failed" . 2.8.4 XLoadFont, XLoadQueryFont, XQueryFont, XFreeFont, XUnloadFont Types: val XLoadFont: string -> Font val XLoadQueryFont: string -> XFontStruct val XQueryFont: Font -> XFontStruct val XFreeFont: XFontStruct -> unit val XUnloadFont: Font -> unit Syntax: val font = XLoadFont name ; val fs = XLoadQueryFont name ; val fs = XQueryFont font ; XFreeFont fs ; XUnloadFont font ; Arguments: font Specifies the font identifier. fs Specifies the font structure. name Specifies the name of the font. Argument Type: 62 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 datatype FontDirection = FontLeftToRight | FontRightToLeft datatype XCharStruct = XCharStruct of { lbearing: int, rbearing: int, width: int, ascent: int, descent: int, attributes: int } datatype XFontStruct = XFontStruct of { font: Font, direction: FontDirection, minChar: int, maxChar: int, minByte1: int, maxByte1: int, allCharsExist: bool, defaultChar: int, minBounds: XCharStruct, maxBounds: XCharStruct, perChar: XCharStruct list, ascent: int, descent: int } Argument Description: The XFontStruct structure contains all of the information for the font and consists of the font-specific information as well as a list of XCharStruct structures for the characters contained in the font. X supports single byte/character, two bytes/character matrix, and 16-bit character text op- erations. Note that any of these forms can be used with a font, but a single byte/character text request can only specify a single byte (that is, the first row of a 2-byte font). You should view 2-byte fonts as a two-dimensional matrix of defined characters: byte 1 specifies the range of defined rows and byte 2 defines the range of defined columns of the font. Single byte/character fonts have one row defined, and the byte 2 range specified in the structure defines a range of characters. The bounding box of a character is defined by the XCharStruct of that character. When characters are absent from a font, the defaultChar is used. When fonts have all characters of the same size, only the information in the XFontStruct min and max bounds are used. The members of the XFontStruct have the following semantics: The direction member can be either FontLeftToRight or FontRightToLeft. It is just a hint as to whether most XCharStruct elements have a positive (FontLeft- ToRight) or a negative (FontRightToLeft) character width metric. The core pro- tocol defines no support for vertical text. If the minByte1 and maxByte1 members are both zero, minChar specifies the linear character index corresponding to the first element of the perChar list, and maxChar specifies the linear character index of the last element. If either minByte1 or maxByte1 are non-zero, then both minChar and maxChar are less than 256, and the 2-byte character index values corresponding to the perChar list element N (counting from 0) are: byte 1 = N div D + minByte1 byte 2 = N mod D + minChar cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 63 If the perChar list is empty, all glyphs between the first and last character indexes inclusive have the same information, as given by both minBounds and maxBounds. If allCharsExist is true, all characters in the perChar list have non-zero bounding boxes. The defaultChar member specifies the character that will be used when an undefined or nonexistent character is printed. The defaultChar is a 16-bit character (not a 2- byte character). For a font using 2-byte matrix format, the defaultChar has byte 1 in the most-significant byte and byte 2 in the least-significant byte. If the defaultChar itself specifies an undefined or nonexistent character, no printing is performed for an undefined or nonexistent character. The minBounds and maxBounds members contain the most extreme values of each individual XCharStruct component over all elements of this list (and ig- nore nonexistent characters). The bounding box of the font (the smallest rect- angle enclosing the shape obtained by superimposing all of the characters at the same origin (x,y)) has its upper-left coordinate at (x+minBounds.lbearing,y- maxBounds.ascent). Its width is (maxBounds.rbearing-minBounds.lbearing) and its height is (maxBounds.ascent+maxBounds.descent). The ascent member is the logical extent of the font above the baseline that is used for determining line spacing. Specific characters may extend beyond this. The descent member is the logical extent of the font at or below the baseline that is used for determining line spacing. Specific characters may extend beyond this. If the baseline is at Y-coordinate y, the logical extent of the font is inclusive be- tween the Y-coordinate values (y-font.ascent) and (y+font.descent-1). Typically, the minimum interline spacing between rows of text is given by (ascent+descent). For a character origin at (x,y), the bounding box of a character (that is, the smallest rectangle that encloses the character's shape) described in terms of XCharStruct com- ponents is a rectangle with its upper-left corner at (x+lbearing,y-ascent). Its width is (rbearing-lbearing) and its height is (ascent+descent). The origin for the next character is defined to be (x+width,y) The lbearing member defines the extent of the left edge of the character ink from the origin. The rbearing member defines the extent of the right edge of the character ink from the origin. The ascent member defines the extent of the top edge of the character ink from the origin. The descent member defines the extent of the bottom edge of the character ink from the origin. The width member defines the logical width of the character. Description: The XLoadFont function loads the specified font and returns the Font value for it. The name should be ISO Latin-1 encoding; uppercase and lowercase do not matter. The interpretation of characters "?" and "*" in the name is not defined by the core protocol but is reserved for future definition. A structured format for font names is specified in the X Consortium standard X Logical Font Description Conventions. If the font does not exist then exception XWindows is raised with "XLoadFont failed" . Fonts are not associated with a particular screen and can be stored as a component of any GC. When the font is no longer needed, call XUnloadFont. The XQueryFont function returns an XFontStruct structure, which contains informa- tion associated with the font. If XQueryFont fails then exception XWindows is raised with "XQueryFont failed" . The XLoadQueryFont function provides the most common way for accessing a font. XLoadQueryFont both opens (loads) the specified font and returns the appropriate 64 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 XFontStruct structure. If the font does not exist then exception XWindows is raised with "XLoadQueryFont failed" . The XFreeFont function deletes the association between the Font value in the XFontStruct and the specified font in the server. The font itself will be freed when no other resource references it. The XFontStruct and the font should not be referenced again. The XUnloadFont function deletes the association between the Font value and the spec- ified font in the server. The font itself will be freed when no other resource references it. The font should not be referenced again. 2.8.5 XSetFontPath, XGetFontPath Types: val XSetFontPath: string list -> unit val XGetFontPath: unit -> string list Syntax: XSetFontPath directories ; val directories = XGetFontPath() ; Arguments: directories Specifies the directory path used to look for a font. Setting the path to the empty list restores the default path defined for the X server. Description: The XSetFontPath function defines the directory search path for font lookup. There is only one search path per X server, not one per client. The interpretation of the strings is operating system dependent, but they are intended to specify directories to be searched in the order listed. Also, the contents of these strings are operating system dependent and are not intended to be used by client applications. Usually, the X server is free to cache font information internally rather than having to read fonts from files. In addition, the X server is guaranteed to flush all cached information about fonts which are currently referenced by an application. The meaning of an error from this request is operating system dependent. The XGetFontPath function returns a list of strings containing the search path. If XGetFontPath fails then exception XWindows is raised with "XGetFontPath failed" . 2.8.6 XTextExtents, XTextExtents16 Types: val XTextExtents: XFontStruct -> string -> (FontDirection * int * int * XCharStruct) val XTextExtents16: XFontStruct -> int list -> (FontDirection * int * int * XCharStruct) cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 65 Syntax: val (direction,ascent,descent,overall) = XTextExtents fs string ; val (direction,ascent,descent,overall) = XTextExtents16 fs bigChars ; Arguments: direction Returns the value of the direction hint (FontLeftToRight or FontRight- ToLeft). fs Specifies the XFontStruct to use. ascent Returns the font ascent. descent Returns the font descent. string Specifies the character string. bigChars Specifies the character string as a list of 16 bit integers. overall Returns the overall size in a XCharStruct structure. Description: The XTextExtents and XTextExtents16 functions perform the size computation lo- cally using the XFontStruct provided. Both functions return an XCharStruct structure, whose members are set to the values as follows. The ascent member is set to the maximum of the ascent metrics of all characters in the string. The descent member is set to the maximum of the descent metrics. The width member is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R. For fonts defined with 2-byte matrix indexing rather than 16-bit linear indexing, the most- significant 8-bits of each int in bigChars is used as byte 1, and the least-significant 8-bits is used as byte 2. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics. Characters with all zero metrics are ignored. If the font has no defined defaultChar, the undefined characters in the string are also ignored. 2.8.7 XTextWidth, XTextWidth16 Types: val XTextWidth: XFontStruct -> string -> int val XTextWidth16: XFontStruct -> int list -> int Syntax: val width = XTextWidth fs string ; val width = XTextWidth16 fs bigChars ; 66 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Arguments: fs Specifies the XFontStruct to use. string Specifies the character string. bigChars Specifies the character string as a list of 16 bit integers. width Returns the width in pixels. Description: The XTextWidth and XTextWidth16 functions return the width of the specified 8-bit or 2-byte character strings. 2.9 Geometry 2.9.1 AddPoint, SubtractPoint Types: infix AddPoint SubtractPoint val AddPoint: (XPoint * XPoint) -> XPoint val SubtractPoint: (XPoint * XPoint) -> XPoint Description: AddPoint takes two points and adds the x coordinates together and the y coordinates together to make the resulting point. In vector arithmetic this is equivalent to adding two vectors. SubtractPoint subtracts the x coordinate of the second point from the x coordinate of the first, and subtracts the y coordinate of the second point from the y coordinate of the first. In vector arithmetic this is equivalent to vector subtraction. 2.9.2 Inside, Overlap, Within, LeftOf, RightOf, AboveOf, BelowOf, HorizontallyAbutting, VerticallyAbutting Types: infix Inside Overlap Within infix LeftOf RightOf AboveOf BelowOf infix HorizontallyAbutting VerticallyAbutting val Inside: (XRectangle * XRectangle) -> bool val Overlap: (XRectangle * XRectangle) -> bool val Within: (XPoint * XRectangle) -> bool val LeftOf: (XPoint * XRectangle) -> bool val RightOf: (XPoint * XRectangle) -> bool val AboveOf: (XPoint * XRectangle) -> bool val BelowOf: (XPoint * XRectangle) -> bool val HorizontallyAbutting: (XRectangle * XRectangle) -> bool val VerticallyAbutting: (XRectangle * XRectangle) -> bool cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 67 Description: a Inside b is true if rectangle a is totally enclosed by b. a Overlap b is true if the two rectangles intersect. a Within b is true if point a is inside rectangle b. a LeftOf b is true if point a is outside and to the left of rectangle b. a RightOf b is true if point a is outside and to the right of rectangle b. a AboveOf b is true if point a is outside and above rectangle b. a BelowOf b is true if point a is outside and below rectangle b. a HorizontallyAbutting b is true if the left edge of a touches the right edge of b, or the right edge of a touches the left edge of b. a VerticallyAbutting b is true if the top edge of a touches the bottom edge of b, or the bottom edge of a touches the top edge of b. 2.9.3 Intersection, Union, Section Types: val Intersection: XRectangle -> XRectangle -> Section val Union: XRectangle -> XRectangle -> XRectangle Argument Type: datatype Section = Nothing | Section of XRectangle Description: Intersection computes the intersection of the two rectangles. If the rectangles do not intersect then it returns Nothing, otherwise it returns Section of the intersection. Union computes the bounding rectangle for the union of the two rectangles. 2.9.4 Left, Right, Top, Bottom, Width, Height, TopLeft, TopRight, BottomLeft, BottomRight, XRectangle, Area, Rect, DestructRect, DestructArea, empty Types: eqtype XRectangle val Rect: {left:int,right:int,top:int,bottom:int} -> XRectangle val Area: {x:int,y:int,w:int,h:int} -> XRectangle val DestructRect: XRectangle -> {left:int,right:int,top:int,bottom:int} val DestructArea: XRectangle -> {x:int,y:int,w:int,h:int} exception XRectangle of {top:int,left:int,bottom:int,right:int} val Left: XRectangle -> int 68 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 val Right: XRectangle -> int val Top: XRectangle -> int val Bottom: XRectangle -> int val Width: XRectangle -> int val Height: XRectangle -> int val TopLeft: XRectangle -> XPoint val TopRight: XRectangle -> XPoint val BottomLeft: XRectangle -> XPoint val BottomRight: XRectangle -> XPoint val empty = Area {x=0,y=0,w=0,h=0} Syntax: val area = Area { x = 0, y = 0, w = 100, h = 200 } ; val {x,y,w,h} = DestructArea area ; val left = Left area ; Description: XRectangles are used to represent pixel areas. For example, an Expose event on a window will contain the position and size of the rectangular area which needs refreshing. XRect- angles may also represent size only. For example, the coordinate system of a window is represented as an XRectangle which has width and height, but the top left corner of the rectangle is at (0,0). XRectangles representing pixel areas can be thought of in two ways. The first way is to call the top left pixel in the rectangle (x,y) and the width and height of the rectangle are (width,height) . Then, an empty rectangle has width = 0 and height = 0 , and the point (a,b) is in a non-empty rectangle only if a >= x and a < (x+width) and b >= y and b < (y+height) . The second way is to call the top left pixel inside the area (top,left) and to call the outside bottom right pixel (bottom,right) . Then, the empty rectangle has (top,left) = (bottom,right) , and the point (x,y) is in a non-empty rectangle if x >= left and x < right and y >= top and y < bottom . NOTE that in X, y coordi- nates increase down the screen, so top <= bottom . You should be careful not to generate coordinates out of range. x and y coordinates must lie between "32768 and 32767 inclusive, width and height values must be between 0 and 65535 inclusive. This means that Rect {top,left,bottom,right} must have right >= left and bottom >= top . Similarly, Area {x,y,w,h} must have w >= 0 and h >= 0 . If these constraints are not met then exception XRectangle is raised. Convenience functions exist to destruct XRectangles. Left, Right, Top and Bottom return the single coordinate for an edge of an XRectangle. Width and Height re- turn the width and height of an XRectangle. TopLeft, TopRight, BottomLeft and BottomRight return the coordinates of a corner of an XRectangle as points. empty is a rectangle with zero area. 2.9.5 MakeRect, SplitRect Types: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 69 val MakeRect: XPoint -> XPoint -> XRectangle val SplitRect: XRectangle -> (XPoint * XPoint) Syntax: val (topLeft,bottomRight) = SplitRect r ; val r = MakeRect corner1 corner2 ; Description: MakeRect constructs an XRectangle given two points corresponding to any pair of opposite corners of the rectangle. This is useful when the order of the two points is not known, for example when dragging a rubber-banded box on the screen. SplitRect returns the pair of points corresponding to the top-left and bottom-right corners of the XRectangle. It will always be the case that left <= right and top <= bottom . 2.9.6 NegativePoint Types: val NegativePoint: XPoint -> XPoint Description: NegativePoint negates both the x and y coordinates of the point. This is equivalent to reflecting about the x axis and the y axis. 2.9.7 OutsetRect, OffsetRect, IncludePoint Types: val OutsetRect: int -> XRectangle -> XRectangle val OffsetRect: XRectangle -> XPoint -> XRectangle val IncludePoint: XPoint -> XRectangle -> XRectangle Description: OutsetRect n R takes rectangle R and expands its area by n units in all four directions. Typically n is positive and this function is used to expand areas to incorporate borders of the same width all around. With a negative n it can be used to shrink an area towards the centre of the area. If n is more negative than half the width or height of the area then exception XRectangle is raised. OffsetRect R (XPoint{x,y}) adds x to both x coordinates and y to both y coordinates of R. This is typically used to move a rectangle by an (x,y) offset or vector. IncludePoint p R is used to expand the area of R to include the point p. If p is already inside the rectange R then R is returned unchanged. If p is outside the rectangle R then R is expanded in the direction of p so that p is now just inside R. 70 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.9.8 Reflect Types: val Reflect: XRectangle -> XRectangle Description: Reflect takes an XRectangle and swaps the x and y coordinates over; left is swapped with top and right is swapped with bottom. This is equivalent to reflecting the points about the 45-degree line that has the equation y = x. 2.9.9 XPoint Types: datatype XPoint = XPoint of { x:int,y:int } val origin = XPoint {x=0,y=0} Syntax: XPoint { x=100,y=200 } Description: XPoints are used to represent the coordinates of pixels. For example, the position of the top left pixel of a window on the screen is represented as an XPoint. You should be careful not to generate coordinates out of range. x and y coordinates must lie between "32768 and 32767 inclusive. origin is the point (0,0), and is typically used to refer to the origin of the coordinate system. In X, the origin is the top left corner of a window. 2.10 GC - Graphics Context 2.10.1 DefaultGC Types: val DefaultGC: unit -> GC Syntax: val gc = DefaultGC() ; Description: The DefaultGC function returns the default GC for the root window of the screen. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 71 2.10.2 XCreateGC, XChangeGC, XFreeGC Types: val XCreateGC: Drawable -> XGCValue list -> GC val XChangeGC: GC -> XGCValue list -> unit val XFreeGC: GC -> unit Syntax: val gc = XCreateGC d values ; XChangeGC gc values ; XFreeGC gc ; Arguments: d Specifies the drawable. gc Specifies the GC. values Specifies which components in the GC are to be set or changed. Argument Type: datatype XGCValue = GCFunction of GCFunction | GCPlaneMask of int | GCForeground of int | GCBackground of int | GCLineWidth of int | GCLineStyle of GCLineStyle | GCCapStyle of GCCapStyle | GCJoinStyle of GCJoinStyle | GCFillStyle of GCFillStyle | GCFillRule of GCFillRule | GCTile of Drawable | GCStipple of Drawable | GCTSOrigin of XPoint | GCFont of Font | GCSubwindowMode of GCSubwindowMode | GCGraphicsExposures of bool | GCClipOrigin of XPoint | GCClipMask of Drawable | GCDashOffset of int | GCDashList of int | GCArcMode of GCArcMode Argument Description: The GCFunction attributes of a GC are used when you update a section of a drawable (the destination) with bits from somewhere else (the source). The function in a GC defines how the new destination bits are to be computed from the source bits and the old destination bits. GXcopy is typically the most useful because it will work on a colour display, but special applications may use other functions, particularly in concert with particular planes of a colour display. The 16 GC functions are: 72 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 datatype GCFunction = GXclear | GXand | GXandReverse | GXcopy | GXandInverted | GXnoop | GXxor | GXor | GXnor | GXequiv | GXinvert | GXorReverse | GXcopyInverted | GXorInverted | GXnand | GXset Many graphics operations depend on either pixel values or planes in a GC. The GC- PlaneMask attribute is an int, and it specifies which planes of the destination are to be modified, one bit per plane. A monochrome display has only one plane and will be the least-significant bit of the word. As planes are added to the display hardware, they will occupy more significant bits in the plane mask. In graphics operations, given a source and destination pixel, the result is computed bitwise on corresponding bits of the pixels. That is, a Boolean operation is performed in each bit plane. The plane-mask restricts the operation to a subset of planes. The value AllPlanes can be used to refer to all planes of the screen simultaneously. The result is computed by the following: ((src GC-FUNCTION dst) AND plane-mask) OR (dst AND (NOT plane-mask)) Range checking is not performed on the values for foreground, background, or plane-mask. They are simply truncated to the appropriate number of bits. The line-width is measured in pixels and either can be greater than or equal to one (wide line) or can be the special value zero (thin line). Wide lines are drawn centered on the path described by the graphics request. Unless otherwise specified by the join-style or cap-style, the bounding box of a wide line with endpoints (x1,y1), (x2,y2) and width w is a rectangle with vertices at the following real coordinates: (x1-(w*sn/2),y1+(w*cs/2)), (x1+(w*sn/2),y1-(w*cs/2)), (x2-(w*sn/2),y2+(w*cs/2)), (x2+(w*sn/2),y2-(w*cs/2)) Here sn is the sine of the angle of the line, and cs is the cosine of the angle of the line. A pixel is part of the line and so is drawn if the center of the pixel is fully inside the bounding box (which is viewed as having infinitely thin edges). If the center of the pixel is exactly on the bounding box, it is part of the line if and only if the interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are part of the line if and only if the interior or the boundary is immediately below (y increasing direction) and the interior or the boundary is immediately to the right (x increasing direction). Thin lines (zero line-width) are one-pixel-wide lines drawn using an unspecified, device- dependent algorithm. There are only two constraints on this algorithm. If a line is drawn unclipped from (x1,y1) to (x2,y2) and if another line is drawn unclipped from (x1+dx,y1+dy) to (x2+dx,y2+dy), a point (x,y) is touched by drawing the first line if and only if the point (x+dx,y+dy) is touched by drawing the second line. The effective set of points comprising a line cannot be affected by clipping. That is, a point is touched in a clipped line if and only if the point lies inside the clipping region and the point would be touched by the line when drawn unclipped. A wide line drawn from (x1,y1) to (x2,y2) always draws the same pixels as a wide line drawn from (x2,y2) to (x1,y1), not counting cap-style and join-style. It is recommended that this property be true for thin lines, but this is not required. A line-width of zero may differ from a line-width of one in which pixels are drawn. This permits the use of many cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 73 manufacturers' line drawing hardware, which may run many times faster than the more precisely specified wide lines. In general, drawing a thin line will be faster than drawing a wide line of width one. How- ever, because of their different drawing algorithms, thin lines may not mix well aesthetically with wide lines. If it is desirable to obtain precise and uniform results across all displays, a client should always use a line-width of one rather than a line-width of zero. datatype GCLineStyle = LineSolid | LineOnOffDash | LineDoubleDash The line-style defines which sections of a line are drawn: LineSolid The full path of the line is drawn. LineDoubleDash The full path of the line is drawn, but the even dashes are filled differently than the odd dashes (see fill-style) with CapButt style used where even and odd dashes meet. LineOnOffDash Only the even dashes are drawn, and cap-style applies to all inter- nal ends of the individual dashes, except CapNotLast is treated as CapButt. datatype GCCapStyle = CapNotLast | CapButt | CapRound | CapProjecting The cap-style defines how the endpoints of a path are drawn: CapNotLast This is equivalent to CapButt except that for a line-width of zero the final endpoint is not drawn. CapButt The line is square at the endpoint (perpendicular to the slope of the line) with no projection beyond. CapRound The line has a circular arc with the diameter equal to the line- width, centered on the endpoint. (This is equivalent to CapButt for line-width of zero). CapProjecting The line is square at the end, but the path continues beyond the endpoint for a distance equal to half the line-width. (This is equiv- alent to CapButt for line-width of zero). datatype GCJoinStyle = JoinMiter | JoinRound | JoinBevel The join-style defines how corners are drawn for wide lines: JoinMiter The outer edges of two lines extend to meet at an angle. However, if the angle is less than 11 degrees, then a JoinBevel join-style is used instead. JoinRound The corner is a circular arc with the diameter equal to the line-width, centered on the joinpoint. JoinBevel The corner has CapButt endpoint styles with the triangular notch filled. For a line with coincident endpoints (x1=x2,y1=y2), when the cap-style is applied to both endpoints, the semantics depends on the line-width and the cap-style: 74 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 CapNotLast thin The results are device-dependent, but the desired ef- fect is that nothing is drawn. CapButt thin The results are device-dependent, but the desired ef- fect is that a single pixel is drawn. CapRound thin The results are the same as for CapButt/thin. CapProjecting thin The results are the same as for CapButt/thin. CapButt wide nothing is drawn. CapRound wide The closed path is a circle, centered at the endpoint, and with the diameter equal to the line-width. CapProjecting wide The closed path is a square, aligned with the coor- dinate axes, centered at the endpoint, and with the sides equal to the line-width. For a line with coincident endpoints (x1=x2, y1=y2), when the join-style is applied at one or both endpoints, the effect is as if the line was removed from the overall path. However, if the total path consists of or is reduced to a single point joined with itself, the effect is the same as when the cap-style is applied at both endpoints. The tile/stipple and clip origins are interpreted relative to the origin of whatever destina- tion drawable is specified in a graphics request. The tile pixmap must have the same root and depth as the GC, or a BadMatch error results. The stipple pixmap must have depth one and must have the same root as the GC, or a BadMatch error results. For stipple operations where the fill-style is FillStippled but not FillOpaqueStippled, the stipple pattern is tiled in a single plane and acts as an additional clip mask to be ANDed with the clip-mask. Although some sizes may be faster to use than others, any size pixmap can be used for tiling or stippling. datatype GCFillStyle = FillSolid | FillTiled | FillStippled | FillOpaqueStippled The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill requests, for line requests with line-style LineSolid, and for the even dashes for line requests with line-style LineOnOffDash or LineDoubleDash, the following apply: FillSolid Foreground FillTiled Tile FillOpaqueStippled A tile with the same width and height as stipple, but with background everywhere stipple has a zero and with foreground everywhere stipple has a one FillStippled Foreground masked by stipple When drawing lines with line-style LineDoubleDash, the odd dashes are controlled by the fill-style in the following manner: FillSolid Background FillTiled Same as for even dashes FillOpaqueStippled Same as for even dashes FillStippled Background masked by stipple Storing a pixmap in a GC might or might not result in a copy being made. If the pixmap is later used as the destination for a graphics request, the change might or might not be reflected in the GC. If the pixmap is used simultaneously in a graphics request both as a destination and as a tile or stipple, the results are undefined. For optimum performance, you should draw as much as possible with the same GC (with- out changing its components). The costs of changing GC components relative to using cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 75 different GCs depend upon the display hardware and the server implementation. It is quite likely that some amount of GC information will be cached in display hardware and that such hardware can only cache a small number of GCs. The dashes value is actually a simplified form of the more general patterns that can be set with XSetDashes. Specifying a value of N is equivalent to specifying the two-element list [N,N] in XSetDashes. The value must be non-zero, or a BadValue error results. The value must be less than 256 or exception Range is raised. The clip-mask restricts writes to the destination drawable. If the clip-mask is set to a pixmap, it must have depth one and have the same root as the GC, or a BadMatch error results. If clip-mask is set to NoDrawable, the pixels are always drawn regardless of the clip origin. The clip-mask also can be set by calling the XSetClipRectangles or XSetRegion functions. Only pixels where the clip-mask has a bit set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where the clip-mask has a bit set to 0. The clip-mask affects all graphics requests. The clip-mask does not clip sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. datatype GCSubwindowMode = ClipByChildren | IncludeInferiors You can set the subwindow-mode to ClipByChildren or IncludeInferiors. For Clip- ByChildren, both source and destination windows are additionally clipped by all viewable InputOutputClass children. For IncludeInferiors, neither source nor destination win- dow is clipped by inferiors. This will result in including subwindow contents in the source and drawing through subwindow boundaries of the destination. The use of IncludeInfe- riors on a window of one depth with mapped inferiors of differing depth is not illegal, but the semantics are undefined by the core protocol. datatype GCFillRule = EvenOddRule | WindingRule The fill-rule defines what pixels are inside (drawn) for paths given in XFillPolygon re- quests and can be set to EvenOddRule or WindingRule. For EvenOddRule, a point is inside if an infinite ray with the point as origin crosses the path an odd number of times. For WindingRule, a point is inside if an infinite ray with the point as origin crosses an unequal number of clockwise and counterclockwise directed path segments. A clockwise directed path segment is one that crosses the ray from left to right as observed from the point. A counterclockwise segment is one that crosses the ray from right to left as ob- served from the point. The case where a directed line segment is coincident with the ray is uninteresting because you can simply choose a different ray that is not coincident with a segment. For both EvenOddRule and WindingRule, a point is infinitely small, and the path is an infinitely thin line. A pixel is inside if the center point of the pixel is inside and the center point is not on the boundary. If the center point is on the boundary, the pixel is inside if and only if the polygon interior is immediately to its right (x increasing direction). Pixels with centers on a horizontal edge are a special case and are inside if and only if the polygon interior is immediately below (y increasing direction). datatype GCArcMode = ArcChord | ArcPieSlice The arc-mode controls filling in the XFillArcs function and can be set to ArcPieSlice or ArcChord. For ArcPieSlice, the arcs are pie-slice filled. For ArcChord, the arcs are chord filled. The graphics-exposure flag controls GraphicsExpose event generation for XCopyArea and XCopyPlane requests (and any similar requests defined by extensions). 76 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The XCreateGC function creates a graphics context and returns a GC. The GC can be used with any destination drawable having the same root and depth as the specified drawable. Use with other drawables results in a BadMatch error. The XChangeGC function changes the components specified by values for the specified GC. The values argument contains the values to be set. The values and restrictions are the same as for XCreateGC. Changing the clip-mask overrides any previous XSetClipRect- angles request on the context. Changing the dash-offset or dash-list overrides any previous XSetDashes request on the context. The order in which components are verified and al- tered is server-dependent. If an error is generated, a subset of the components may have been altered. The XFreeGC function destroys the specified GC. 2.10.3 XSetArcMode Types: val XSetArcMode: GC -> GCArcMode -> unit Syntax: XSetArcMode gc mode ; Arguments: gc Specifies the GC. mode Specifies the arc mode. You can pass ArcChord or ArcPieSlice. Argument Type: datatype GCArcMode = ArcChord | ArcPieSlice Description: The XSetArcMode function sets the arc mode in the specified GC. 2.10.4 XSetBackground Types: val XSetBackground: GC -> int -> unit Syntax: XSetBackground gc background ; Arguments: background Specifies the background pixel. gc Specifies the GC. Description: The XSetBackground function sets the background pixel in the specified GC. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 77 2.10.5 XSetClipMask Types: val XSetClipMask: GC -> Drawable -> unit Syntax: XSetClipMask gc pixmap ; Arguments: gc Specifies the GC. pixmap Specifies the pixmap or NoDrawable. Description: The XSetClipMask function sets the clip-mask in the specified GC to the specified pixmap. If the clip-mask is set to NoDrawable, the pixels are are always drawn (regardless of the clip-origin). 2.10.6 XSetClipOrigin Types: val XSetClipOrigin: GC -> XPoint -> unit Syntax: XSetClipOrigin gc origin ; Arguments: gc Specifies the GC. origin Specifies the x and y coordinates of the clip-mask origin. Description: The XSetClipOrigin function sets the clip origin in the specified GC. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in the graphics request. 2.10.7 XSetClipRectangles Types: val XSetClipRectangles: GC -> XPoint -> XRectangle list -> GCOrder -> unit Syntax: 78 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 XSetClipRectangles gc origin rectangles ordering ; Arguments: gc Specifies the GC. origin Specifies the x and y coordinates of the clip-mask origin. rectangles Specifies a list of rectangles that define the clip-mask. ordering Specifies the ordering relations on the rectangles. You can pass Un- sorted, YSorted, YXSorted, or YXBanded. Argument Type: datatype GCOrder = Unsorted | YSorted | YXSorted | YXBanded Description: The XSetClipRectangles function changes the clip-mask in the specified GC to the specified list of rectangles and sets the clip origin. The output is clipped to remain con- tained within the rectangles. The clip-origin is interpreted relative to the origin of what- ever destination drawable is specified in a graphics request. The rectangle coordinates are interpreted relative to the clip-origin. The rectangles should be nonintersecting, or the graphics results will be undefined. Note that the list of rectangles can be empty, which effectively disables output. This is the opposite of passing NoDrawable as the clip-mask in XCreateGC, XChangeGC, and XSetClipMask. If known by the client, ordering relations on the rectangles can be specified with the ordering argument. This may provide faster operation by the server. If an incorrect ordering is specified, the X server may generate a BadMatch error, but it is not required to do so. If no error is generated, the graphics results are undefined. Unsorted means the rectangles are in arbitrary order. YSorted means that the rectangles are nondecreasing in their Y origin. YXSorted additionally constrains YSorted order in that all rectangles with an equal Y origin are nondecreasing in their X origin. YXBanded additionally constrains YXSorted by requiring that, for every possible Y scanline, all rectangles that include that scanline have an identical Y origins and Y extents. 2.10.8 XSetColours Types: val XSetColours: GC -> int -> int -> unit Syntax: XSetColours gc foreground background ; Arguments: background Specifies the background pixel. foreground Specifies the foreground pixel. gc Specifies the GC. Description: The XSetColours convenience function sets the foreground and background components for the specified GC. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 79 2.10.9 XSetDashes Types: val XSetDashes: GC -> int -> int list -> unit Syntax: XSetDashes offset dashes ; Arguments: dashes Specifies the dash-list for the dashed line-style you want to set for the specified GC. offset Specifies the phase of the pattern for the dashed line-style you want to set for the specified GC. Description: The XSetDashes function sets the dash-offset and dash-list attributes for dashed line styles in the specified GC. There must be at least one element in the specified dash-list, or a BadValue error results. The initial and alternating elements (second, fourth, and so on) of the dash-list are the even dashes, and the others are the odd dashes. Each element specifies a dash length in pixels. All of the elements must be non-zero, or a BadValue error results. All of the elements must be less than 256 or exception Range is raised. Specifying an odd-length list is equivalent to specifying the same list concatenated with itself to produce an even-length list. The dash-offset defines the phase of the pattern, specifying how many pixels into the dash- list the pattern should actually begin in any single graphics request. Dashing is continuous through path elements combined with a join-style but is reset to the dash-offset between each sequence of joined lines. The unit of measure for dashes is the same for the ordinary coordinate system. Ideally, a dash length is measured along the slope of the line, but implementations are only required to match this ideal for horizontal and vertical lines. Failing the ideal semantics, it is suggested that the length be measured along the major axis of the line. The major axis is defined as the x axis for lines drawn at an angle of between -45 and +45 degrees or between 315 and 225 degrees from the x axis. For all other lines, the major axis is the y axis. 2.10.10 XSetFillRule Types: val XSetFillRule: GC -> GCFillRule -> unit Syntax: XSetFillRule gc rule ; Arguments: 80 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 gc Specifies the GC. rule Specifies the fill-rule you want to set for the specified GC. You can pass Even- OddRule or WindingRule. Argument Type: datatype GCFillRule = EvenOddRule | WindingRule Description: The XSetFillRule function sets the fill-rule in the specified GC. 2.10.11 XSetFillStyle Types: val XSetFillStyle: GC -> GCFillStyle -> unit Syntax: XSetFillStyle gc style ; Arguments: gc Specifies the GC. style Specifies the fill-style you want to set for the specified GC. You can pass Fill- Solid, FillTiled, FillStippled, or FillOpaqueStippled. Argument Type: datatype GCFillStyle = FillSolid | FillTiled | FillStippled | FillOpaqueStippled Description: The XSetFillStyle function sets the fill-style in the specified GC. 2.10.12 XSetFont Types: val XSetFont: GC -> Font -> unit Syntax: XSetFont gc font ; Arguments: gc Specifies the GC. font Specifies the font. Description: The XSetFont function sets the current font in the specified GC. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 81 2.10.13 XSetForeground Types: val XSetForeground: GC -> int -> unit Syntax: XSetForeground gc foreground ; Arguments: foreground Specifies the foreground pixel. gc Specifies the GC. Description: The XSetForeground function sets the foreground pixel in the specified GC. 2.10.14 XSetFunction Types: val XSetFunction: GC -> GCFunction -> unit Syntax: XSetFunction gc function ; Arguments: function Specifies the drawing function. gc Specifies the GC. Description: XSetFunction sets the drawing function in the specified GC. 2.10.15 XSetGraphicsExposures Types: val XSetGraphicsExposures: GC -> bool -> unit Syntax: XSetGraphicsExposures gc exposures ; Arguments: 82 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 gc Specifies the GC. exposures Specifies a bool that indicates whether you want GraphicsExpose and NoExpose events to be reported when calling XCopyArea and XCopyPlane with this GC. Description: The XSetGraphicsExposures function sets the graphics-exposures flag in the specified GC. 2.10.16 XSetLineAttributes Types: val XSetLineAttributes: GC -> int -> GCLineStyle -> GCCapStyle -> GCJoinStyle -> unit Syntax: XSetLineAttributes gc lineWidth lineStyle capStyle joinStyle ; Arguments: capStyle Specifies the line-style and cap-style you want to set for the specified GC. You can pass CapNotLast, CapButt, CapRound, or CapProjecting. joinStyle Specifies the line join-style you want to set for the specified GC. You can pass JoinMiter, JoinRound, or JoinBevel. lineStyle Specifies the line-style you want to set for the specified GC. You can pass LineSolid, LineOnOffDash, or LineDoubleDash. lineWidth Specifies the line-width you want to set for the specified GC. Description: The XSetLineAttributes function sets the line drawing components in the specified GC. 2.10.17 XSetPlaneMask Types: val XSetPlaneMask: GC -> int -> unit Syntax: XSetPlaneMask gc planeMask ; Arguments: gc Specifies the GC. planeMask Specifies the plane mask. Description: The XSetPlaneMask function sets the plane mask in the specified GC. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 83 2.10.18 XSetState Types: val XSetState: GC -> int -> int -> GCFunction -> int -> unit Syntax: XSetState gc foreground background function planeMask ; Arguments: background Specifies the background pixel. foreground Specifies the foreground pixel. function Specifies the drawing function. gc Specifies the GC. planeMask Specifies the plane mask. Description: The XSetState function sets the foreground, background, plane mask, and function com- ponents for the specified GC. 2.10.19 XSetStipple Types: val XSetStipple: GC -> Drawable -> unit Syntax: XSetStipple gc stipple ; Arguments: gc Specifies the GC. stipple Specifies the stipple you want to set for the specified GC. Description: The XSetStipple function sets the stipple in the specified GC. The stipple and GC must have the same depth, or a BadMatch error results. 84 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.10.20 XSetSubwindowMode Types: val XSetSubwindowMode: GC -> GCSubwindowMode -> unit Syntax: XSetSubwindowMode gc mode ; Arguments: gc Specifies the GC. mode Specifies the subwindow mode. You can pass ClipByChildren or Include- Inferiors. Argument Type: datatype GCSubwindowMode = ClipByChildren | IncludeInferiors Description: The XSetSubwindowMode function sets the subwindow mode in the specified GC. 2.10.21 XSetTile Types: val XSetTile: GC -> Drawable -> unit Syntax: XSetTile gc tile ; Arguments: gc Specifies the GC. tile Specifies the fill tile you want to set for the specified GC. Description: The XSetTile function sets the fill tile in the specified GC. The tile and GC must have the same depth, or a BadMatch error results. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 85 2.10.22 XSetTSOrigin Types: val XSetTSOrigin: GC -> XPoint -> unit Syntax: XSetTSOrigin gc origin ; Arguments: gc Specifies the GC. origin Specifies the x and y coordinates of the tile and stipple origin. Description: The XSetTSOrigin function sets the tile/stipple origin in the specified GC. When graph- ics requests call for tiling or stippling, the parent's origin will be interpreted relative to whatever destination drawable is specified in the graphics request. 2.11 Images 2.11.1 ImageByteOrder, ImageDepth, ImageSize Types: val ImageByteOrder: XImage -> ImageOrder val ImageDepth: XImage -> int val ImageSize: XImage -> XRectangle Argument Type: datatype ImageOrder = LSBFirst | MSBFirst Syntax: val order = ImageByteOrder image ; val depth = ImageDepth image ; val area = ImageSize image ; Description: The ImageByteOrder function returns the byte order value of an XImage. The ImageSize function returns the size in pixels of an XImage. The ImageDepth function returns the depth value of an XImage. 86 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.11.2 VisualRedMask, VisualGreenMask, VisualBlueMask Types: val VisualRedMask: Visual -> int val VisualGreenMask: Visual -> int val VisualBlueMask: Visual -> int Syntax: val redMask = VisualRedMask visual ; val greenMask = VisualGreenMask visual ; val blueMask = VisualBlueMask visual ; Arguments: visual Specifies the visual. Description: These functions return the masks used for Z format images. 2.11.3 XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel Types: val XGetPixel: XImage -> XPoint -> int val XPutPixel: XImage -> XPoint -> int -> unit val XSubImage: XImage -> XRectangle -> XImage val XAddPixel: XImage -> int -> unit val XCreateImage: Visual -> int -> ImageFormat -> int -> string -> XRectangle -> int -> int -> XImage Syntax: val image = XCreateImage visual depth format offset data area bitmapPad bytesPerLine ; val pixel = XGetPixel image point ; val image = XSubImage image subArea ; XPutPixel image point pixel ; XAddPixel image value ; Arguments: bitmapPad Specifies the quantum of a scanline (8, 16, or 32 bits). In other words, the start of one scanline is separated in client memory from the start of the next scanline by an integer multiple of this many bits. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 87 bytesPerLine Specifies the number of bytes in the client image between the start of one scanline and the start of the next. data Specifies the image data. depth Specifies the depth of the image. format Specifies the format for the image. You can pass XYBitmap, XYP- ixmap, or ZPixmap. area Specifies the width and height of the image, in pixels. offset Specifies the number of pixels to ignore at the beginning of the scan- line. pixel Specifies the new pixel value. subArea Specifies the position and size of the new subimage, in pixels. value Specifies the constant value that is to be added. visual Specifies the visual. ximage Specifies the image. point Specifies the x and y coordinates. Argument Type: datatype ImageFormat = XYBitmap | XYPixmap | ZPixmap datatype ImageOrder = LSBFirst | MSBFirst type ImageData val Data: string -> ImageData datatype XImage = XImage of { data: ImageData, size: XRectangle, depth: int, format: ImageFormat, xoffset: int, bitmapPad: int, byteOrder: ImageOrder, bitmapUnit: int, bitsPerPixel: int, bytesPerLine: int, visualRedMask: int, bitmapBitOrder: ImageOrder, visualBlueMask: int, visualGreenMask: int } Description: The XCreateImage function initializes the XImage byteOrder, bitmapBitOrder, and bitmapUnit values from the display and returns an XImage structure. The red, green, and blue mask values are defined for Z format images only and are derived from the Visual structure passed in. Other values also are passed in. The offset permits the rapid displaying of the image without requiring each scanline to be shifted into position. If you pass a zero value in bytesPerLine, Xlib assumes that the scanlines are contiguous in memory and calculates the value of bytesPerLine itself. 88 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 The XGetPixel function returns the specified pixel from the named image. The pixel value is returned in normalized format (that is, the least-significant byte of the int is the least-significant byte of the pixel). The image must contain the x and y coordinates. The XPutPixel function overwrites the pixel in the named image with the specified pixel value. The input pixel value must be in normalized format (that is, the least-significant byte of the int is the least-significant byte of the pixel). The image must contain the x and y coordinates. The XSubImage function creates a new image that is a subsection of an existing one. The data is copied from the source image, and the image must contain the rectangle defined by subArea. If XSubImage fails then exception XWindows is raised with "XSubImage failed" . The XAddPixel function adds a constant value to every pixel in an image. It is useful when you have a base pixel value from allocating colour resources and need to manipulate the image to that form. 2.11.4 XPutImage, XGetImage, XGetSubImage Types: val XPutImage: Drawable -> GC -> XImage -> XPoint -> XRectangle -> unit val XGetImage: Drawable -> XRectangle -> int -> ImageFormat -> XImage val XGetSubImage: Drawable -> XRectangle -> int -> ImageFormat -> XImage -> XPoint -> unit Syntax: val image = XGetImage d area planeMask format ; XGetSubImage d area planeMask format destImage destPoint ; XPutImage d gc image srcPoint destArea ; Arguments: d Specifies the drawable. destImage Specifies the destination image. destPoint Specifies the x and y coordinates, which are relative to the origin of the drawable and are the coordinates of the subimage or which are relative to the origin of the destination rectangle, specify its upper-left corner, and determine where the subimage is placed in the destination image. format Specifies the format for the image. You can pass XYBitmap, XYP- ixmap, or ZPixmap. gc Specifies the GC. image Specifies the image you want combined with the rectangle. planeMask Specifies the plane mask. srcPoint Specifies the offsets from the left and top edges of the image defined by the XImage structure. area Specifies the position and size of the subimage, cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 89 destArea Specifies coordinates relative to the origin of the drawable to define the destination rectangle. Description: The XPutImage function combines an image in memory with a rectangle of the specified drawable. If XYBitmap format is used, the depth must be one, or a BadMatch error results. The foreground pixel in the GC defines the source for the one bits in the image, and the background pixel defines the source for the zero bits. For XYPixmap and ZPixmap, the depth must match the depth of the drawable, or a BadMatch error results. The section of the image defined by the srcPoint and area arguments is drawn on the specified part of the drawable at the position specified by destArea This function uses these GC components: foreground, background, function, plane-mask, subwindow-mode, clip-origin, and clip-mask. The XGetImage function returns an XImage structure. This structure provides you with the contents of the specified rectangle of the drawable in the format you specify. If the format argument is XYPixmap, the image contains only the bit planes you passed to the planeMask argument. If the planeMask argument only requests a subset of the planes of the display, the depth of the returned image will be the number of planes requested. If the format argument is ZPixmap, XGetImage returns as zero the bits in all planes not specified in the planeMask argument. The function performs no range checking on the values in planeMask and ignores extraneous bits. XGetImage returns the depth of the image to the depth member of the XImage struc- ture. The depth of the image is as specified when the drawable was created, except when getting a subset of the planes in XYPixmap format, when the depth is given by the number of bits set to 1 in planeMask. If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a BadMatch error results. Note that the borders of the window can be included and read with this request. If the window has backing-store, the backing-store contents are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. The pointer cursor image is not included in the returned contents. If XGetImage fails then exception XWindows is raised with "XGetImage failed" . The XGetSubImage function updates destImage with the specified subimage in the same manner as XGetImage. If the format argument is XYPixmap, the image contains only the bit planes you passed to the planeMask argument. If the format argument is ZPixmap, XGetSubImage returns as zero the bits in all planes not specified in the planeMask argument. The function performs no range checking on the values in planeMask and ignores extraneous bits. The depth of the destination XImage structure must be the same as that of the drawable. If the specified subimage does not fit at the specified location on the destination image, the right and bottom edges are clipped. If the drawable is a pixmap, the given rectangle must be wholly contained within the pixmap, or a BadMatch error results. If the drawable is a window, the window must be viewable, and it must be the case that if there were no inferiors or overlapping windows, the specified rectangle of the window would be fully visible on the screen and wholly contained within the outside edges of the window, or a BadMatch error results. If the window has backing-store, then the backing-store contents 90 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 are returned for regions of the window that are obscured by noninferior windows. If the window does not have backing-store, the returned contents of such obscured regions are undefined. The returned contents of visible regions of inferiors of a different depth than the specified window's depth are also undefined. 2.12 Properties and Selections 2.12.1 XDeleteProperty Types: val XDeleteProperty: Drawable -> int -> unit Syntax: XDeleteProperty w property ; Arguments: property Specifies the property name. w Specifies the window containing the property. Description: The XDeleteProperty function deletes the specified property only if the property was defined on the specified window and causes the X server to generate a PropertyNotify event on the window unless the property does not exist. 2.12.2 XInternAtom, XGetAtomName Types: val XInternAtom: string -> bool -> int val XGetAtomName: int -> string Syntax: val atom = XInternAtom name onlyIfExists ; val name = XGetAtomName atom ; Arguments: atom Specifies the atom whose name you want returned. name Specifies the name associated with the atom you want returned. onlyIfExists Specifies a bool that indicates whether XInternAtom creates the atom. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 91 Description: The XInternAtom function returns the atom identifier associated with the specified name string. If onlyIfExists is false, the atom is created if it does not exist, otherwise, XInternAtom returns zero. You should use an ISO Latin-1 string for name. Case matters; the strings "thing" , "Thing" , and "thinG" all designate different atoms. The atom will remain defined even after the client's connection closes. It will become undefined only when the last connection to the X server closes. The XGetAtomName function returns the name associated with the specified atom. If XGetAtomName fails then exception XWindows is raised with "XGetAtomName failed" . 2.12.3 XSetProperty, XGetTextProperty Types: val XSetProperty: Drawable -> int -> PropertyValue -> int -> unit val XGetTextProperty: Drawable -> int -> (string * int * int * int) Syntax: XSetProperty w propertyAtom propertyValue propertyTypeAtom ; val (value,encoding,format,nitems) = XGetTextProperty w propertyAtom ; Arguments: w Specifies the window propertyAtom Specifies the property name as an Atom. propertyValue Specifies the property value as one of the predefined types. propertyTypeAtom Specifies the name of the property type as an Atom. value Returns the contents of the property as chars/bytes. encoding Returns the property type atom format Returns the property format which is 1, 2 or 4 bytes per item. nitems Returns the number of items in the value Argument Type: datatype PropertyValue = PropertyArc of XArc list | PropertyAtom of int list | PropertyBitmap of Drawable list | PropertyColormap of Colormap list | PropertyCursor of Cursor list | PropertyDrawable of Drawable list | PropertyFont of Font list | PropertyInteger of int list | PropertyPixmap of Drawable list | PropertyPoint of XPoint list | PropertyRectangle of XRectangle list | PropertyRGBColormap of XStandardColormap list | PropertyString of string 92 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 | PropertyVisual of Visual list | PropertyWindow of Drawable list | PropertyWMHints of XWMHint list | PropertyWMSizeHints of XWMSizeHint list | PropertyWMIconSizes of (XRectangle * XRectangle * XRectangle) list Properties: WM__CLIENT__MACHINE The string name of the machine on which the client application is running. WM__COMMAND The command and arguments, separated by ASCII nulls, used to invoke the application. WM__ICON__NAME Name to be used in icon. WM__NAME Name of the application. Description: The XSetProperty function replaces the existing, specified property for the named win- dow with the value and type specified. If the property does not already exist, XSetProp- erty creates it for the specified window. The XGetTextProperty function reads the specified property from the window. The particular interpretation of the property's encoding and value as 'text' is left to the call- ing application. If the specified property does not exist on the window, then exception XWindows is raised with "XGetTextProperty failed" . 2.12.4 XSetSelectionOwner, XGetSelectionOwner, XConvertSelection, XSendSelectionNotify Types: val XSetSelectionOwner: int -> Drawable -> int -> unit val XGetSelectionOwner: int -> Drawable val XConvertSelection: { selection: int, target: int, property: int, requestor: Drawable, time: int } -> unit val XSendSelectionNotify: { selection: int, target: int, property: int, requestor: Drawable, time: int } -> unit Syntax: XSetSelectionOwner selection owner time ; val owner = XGetSelectionOwner selection ; XConvertSelection {selection,target,property,requestor,time} ; XSendSelectionNotify {selection,target,property,requestor,time} ; cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 93 Arguments: selection Specifies the selection atom. owner Specifies/returns the owner of the specified selection atom. You can pass a window or NoDrawable. time Specifies the time. You can pass either a timestamp or CurrentTime. target Specifies the target atom. property Specifies the property name. You also can pass zero. requestor Specifies the requestor. Argument Type: val CurrentTime: int Description: The XSetSelectionOwner function changes the owner and last-change time for the spec- ified selection and has no effect if the specified time is earlier than the current last-change time of the specified selection or is later than the current X server time. Otherwise, the last-change time is set to the specified time, with CurrentTime replaced by the current server time. If the owner window is specified as NoDrawable, then the owner of the selection becomes NoDrawable (that is, no owner). Otherwise, the owner of the selection becomes the client executing the request. If the new owner (whether a client or NoDrawable) is not the same as the current owner of the selection and the current owner is not NoDrawable, the current owner is sent a SelectionClear event. If the client that is the owner of a selection is later terminated (that is, its connection is closed) or if the owner window it has specified in the request is later destroyed, the owner of the selection automatically reverts to NoDrawable, but the last-change time is not affected. The selection atom is uninterpreted by the X server. XGetSelectionOwner returns the owner window, which is reported in SelectionRe- quest and SelectionClear events. Selections are global to the X server. The XGetSelectionOwner function returns the Drawable associated with the window that currently owns the specified selection. If no selection was specified, the function returns the constant NoDrawable. If NoDrawable is returned, there is no owner for the selection. XConvertSelection requests that the specified selection be converted to the specified target type: If the specified selection has an owner, the X server sends a SelectionRequest event to that owner. If no owner for the specified selection exists, the X server generates a SelectionNotify event to the requestor with property zero. The arguments are passed on unchanged in either of the events. There are two predefined selection atoms: XA__PRIMARY and XA__SECONDARY. XSendSelectionNotify is called when you have received a SelectionRequest event asking for the selection, which you currently own, to be converted to some desired type. When you have completed the conversion you store the converted value in the indicated property on the window. Then you call XSendSelectionNotify with the same parameters as the SelectionRequest event to indicate that the conversion was successful. If cannot 94 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 perform the conversion then you call XSendSelectionNotify with property set to zero to indicate that the conversion failed. If the conversion was successful then the requestor will read the value from the property on the window, and will delete the property to indicate that the transfer has been completed. 2.13 Screen Saver 2.13.1 XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver Types: val XSetScreenSaver: int -> int -> Blanking -> Exposures -> unit val XForceScreenSaver: SaveMode -> unit val XActivateScreenSaver: unit -> unit val XResetScreenSaver: unit -> unit val XGetScreenSaver: unit -> (int * int * Blanking * Exposures) Syntax: XSetScreenSaver timeout interval preferBlanking allowExposures ; XForceScreenSaver mode ; XActivateScreenSaver() ; XResetScreenSaver() ; val (timeout,interval,preferBlanking,allowExposures) = XGetScreenSaver() ; Arguments: allowExposures Specifies/returns the screen save control values. You can pass DontAllowExposures, AllowExposures, or DefaultExpo- sures. interval Specifies/returns the interval, in seconds, between screen saver al- terations. mode Specifies the mode that is to be applied. You can pass Screen- SaverActive or ScreenSaverReset. preferBlanking Specifies/returns how to enable screen blanking. You can pass DontPreferBlanking, PreferBlanking, or DefaultBlanking. timeout Specifies the timeout, in seconds, until the screen saver turns on. Argument Type: datatype SaveMode = ScreenSaverReset | ScreenSaverActive datatype Blanking = DontPreferBlanking | PreferBlanking | DefaultBlanking datatype Exposures = DontAllowExposures | AllowExposures | DefaultExposures Description: Timeout and interval are specified in seconds. A timeout of 0 disables the screen saver (but an activated screen saver is not deactivated), and a timeout of "1 restores the de- fault. Other negative values generate a BadValue error. If the timeout value is non-zero, cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 95 XSetScreenSaver enables the screen saver. An interval of 0 disables the random-pattern motion. If no input from devices (keyboard, mouse, and so on) is generated for the specified number of timeout seconds once the screen saver is enabled, the screen saver is activated. For each screen, if blanking is preferred and the hardware supports video blanking, the screen simply goes blank. Otherwise, if either exposures are allowed or the screen can be regenerated without sending Expose events to clients, the screen is tiled with the root window background tile randomly re-origined each interval minutes. Otherwise, the screens' state do not change, and the screen saver is not activated. The screen saver is deactivated, and all screen states are restored at the next keyboard or pointer input or at the next call to XForceScreenSaver with mode ScreenSaverReset. If the server-dependent screen saver method supports periodic change, the interval argu- ment serves as a hint about how long the change period should be, and zero hints that no periodic change should be made. Examples of ways to change the screen include scram- bling the colormap periodically, moving an icon image around the screen periodically, or tiling the screen with the root window background tile, randomly re-origined periodically. If the specified mode is ScreenSaverActive and the screen saver currently is deactivated, XForceScreenSaver activates the screen saver even if the screen saver had been disabled with a timeout of zero. If the specified mode is ScreenSaverReset and the screen saver currently is enabled, XForceScreenSaver deactivates the screen saver if it was activated, and the activation timer is reset to its initial state (as if device input had been received). The XActivateScreenSaver function activates the screen saver. The XResetScreenSaver function resets the screen saver. The XGetScreenSaver function gets the current screen saver values. 2.14 Tiles, Stipples, Bitmaps and Pixmaps 2.14.1 XCreatePixmap, XFreePixmap Types: val XCreatePixmap: Drawable -> XRectangle -> int -> Drawable val XFreePixmap: Drawable -> unit Syntax: val pixmap = XCreatePixmap d area depth ; XFreePixmap pixmap ; Arguments: d Specifies which screen the pixmap is created on. depth Specifies the depth of the pixmap. pixmap Specifies the pixmap. area Specifies the width and height, which define the dimensions of the pixmap. 96 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The XCreatePixmap function creates a pixmap of the width, height, and depth you specified and returns a Drawable that identifies it. It is valid to pass an InputOnlyClass window to the drawable argument. The width and height arguments must be non-zero, or a BadValue error results. The depth argument must be one of the depths supported by the screen of the specified drawable, or a BadValue error results. The server uses the specified drawable to determine on which screen to create the pixmap. The pixmap can be used only on this screen and only with other drawables of the same depth (see XCopyPlane for an exception to this rule). The initial contents of the pixmap are undefined. The XFreePixmap function first deletes the association between the Drawable value and the pixmap in the server. Then, the X server frees the pixmap storage when there are no references to it. The pixmap should never be referenced again. 2.14.2 XReadBitmapFile, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData Types: val XReadBitmapFile: Drawable -> string -> BitmapStatus val XWriteBitmapFile: string -> Drawable -> XRectangle -> XPoint -> BitmapStatus val XCreatePixmapFromBitmapData: Drawable -> string -> XRectangle -> int -> int -> int -> Drawable val XCreateBitmapFromData: Drawable -> string -> XRectangle -> Drawable Syntax: val status = XReadBitmapFile d filename ; val status = XWriteBitmapFile filename bitmap area hotspot ; val pixmap = XCreatePixmapFromBitmapData d data area fg bg depth ; val bitmap = XCreateBitmapFromData d data area ; Arguments: bitmap Specifies the bitmap. status Returns the bitmap that is created, or an error condition. d Specifies the drawable that indicates the screen. data Specifies the data in bitmap format. depth Specifies the depth of the pixmap. fg Specifies the foreground and bg background pixel values to use. filename Specifies the file name to use. area Specifies the width and height. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 97 hotspot Specifies where to place the hotspot coordinates, or ("1,"1) if none are present in the file. Argument Type: datatype BitmapStatus = BitmapOpenFailed | BitmapFileInvalid | BitmapNoMemory | BitmapSuccess of Drawable * XRectangle * XPoint Description: The XReadBitmapFile function reads in a file containing a bitmap. The ability to read other than the standard format is implementation dependent. If the file cannot be opened, XReadBitmapFile returns BitmapOpenFailed. If the file can be opened but does not contain valid bitmap data, it returns BitmapFileInvalid. If insufficient working storage is allocated, it returns BitmapNoMemory. If the file is readable and valid, it returns BitmapSuccess. XReadBitmapFile reads the bitmap's height and width from the file. It then creates a pixmap of the appropriate size and reads the bitmap data from the file into the pixmap. The caller must free the bitmap using XFreePixmap when finished. If the hotspot is defined in the bitmap file, XReadBitmapFile returns the hotspot in the status as well, otherwise it returns ("1,"1). The XWriteBitmapFile function writes a bitmap out to a file in the X version 11 format. If the file cannot be opened for writing, it returns BitmapOpenFailed. If insufficient memory is allocated, XWriteBitmapFile returns BitmapNoMemory; otherwise, on no error, it returns BitmapSuccess. If the hotspot is not ("1,"1), XWriteBitmapFile writes it out as the hotspot coordinates for the bitmap. The XCreatePixmapFromBitmapData function creates a pixmap of the given depth and then does a bitmap-format XPutImage of the data into it. The depth must be supported by the screen of the specified drawable, or a BadMatch error results. The XCreateBitmapFromData function allows you to include a bitmap file without reading in the bitmap file. The following example creates a weave bitmap: val data = [17, 17, 184, 184, 124, 124, 58, 58, 17, 17, 163, 163, 199, 199, 139, 139, 17, 17, 184, 184, 124, 124, 58, 58, 17, 17, 163, 163, 199, 199, 139, 139] ; fun MakeData [] = "" | MakeData (H::T) = chr H ^ MakeData T ; val wideWeave = XCreateBitmapFromData root (MakeData data) (Area{x=0,y=0,w=16,h=16}) ; If insufficient working storage was allocated, XCreateBitmapFromData returns NoDrawable. It is your responsibility to free the bitmap using XFreePixmap when finished. 98 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.15 User Preferences 2.15.1 XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap Types: val XAutoRepeatOff: unit -> unit val XAutoRepeatOn: unit -> unit val XBell: int -> unit val XQueryKeymap: unit -> bool list (* 256 bools *) Syntax: XAutoRepeatOn() ; XAutoRepeatOff() ; XBell percent ; val keymap = XQueryKeymap() ; Arguments: percent Specifies the volume for the bell, which can range from "100 to 100 inclusive. keymap Returns the keyboard state vector Description: The XAutoRepeatOn function turns on auto-repeat for the keyboard. The XAutoRepeatOff function turns off auto-repeat for the keyboard. The XBell function rings the bell on the keyboard on the specified display, if possible. The specified volume is relative to the base volume for the keyboard. If the value for the percent argument is not in the range "100 to 100 inclusive, a BadValue error results. The volume at which the bell rings when the percent argument is nonnegative is: base - (base * percent) / 100 + percent The volume at which the bell rings when the percent argument is negative is: base + (base * percent) / 100 To change the base volume of the bell, use XChangeKeyboardControl. The XQueryKeymap function returns a bit vector for the logical state of the keyboard. The vector is returned as a list of 256 bools, representing the keys 0 to 255 in that order. Each bool set to true indicates that the corresponding key is currently pressed. Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen. 2.15.2 XGetDefault Types: val XGetDefault: string -> string -> string cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 99 Syntax: val default = XGetDefault program option ; Arguments: option Specifies the option name. program Specifies the program name. Description: XGetDefault returns the value for the program and option entry in the user's defaults database. If XGetDefault fails then exception XWindows is raised with "XGetDefault failed" . 2.16 Windows 2.16.1 XCreateWindow, XCreateSimpleWindow Types: val XCreateWindow: Drawable -> XPoint -> XRectangle -> int -> int -> WindowClass -> Visual -> XSetWindowAttributes list -> Drawable val XCreateSimpleWindow: Drawable -> XPoint -> XRectangle -> int -> int -> int -> Drawable Syntax: val window = XCreateWindow parent point area borderWidth depth class visual attributes ; val window = XCreateSimpleWindow parent point area borderWidth borderPixel backgroundPixel ; Arguments: attributes Specifies the initial values for the window's attributes. backgroundPixel Specifies the background pixel value of the window. borderPixel Specifies the border pixel value of the window. borderWidth Specifies the width of the window's border in pixels. class Specifies the window's class. You can pass InputOutput- Class, InputOnlyClass, or CopyFromParentClass. A class of CopyFromParentClass means the class is taken from the parent. depth Specifies the window's depth. A depth of zero means the depth is taken from the parent. parent Specifies the parent window. 100 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 visual Specifies the visual type. A visual of CopyFromParentVisual means the visual type is taken from the parent. area Specifies the width and height, which are the created window's inside dimensions and do not include the created window's bor- ders. point Specifies the x and y coordinates, which are the top-left outside corner of the window's borders and are relative to the inside of the parent window's borders. Argument Type: datatype XSetWindowAttributes = CWBackPixmap of Drawable | CWBackPixel of int | CWBorderPixmap of Drawable | CWBorderPixel of int | CWBitGravity of Gravity | CWWinGravity of Gravity | CWBackingStore of BackingStore | CWBackingPlanes of int | CWBackingPixel of int | CWOverrideRedirect of bool | CWSaveUnder of bool | CWEventMask of EventMask list | CWDontPropagate of EventMask list | CWColormap of Colormap | CWCursor of Cursor datatype BackingStore = NotUseful | WhenMapped | Always datatype WindowClass = CopyFromParentClass | InputOutputClass | InputOnlyClass Description: The XCreateWindow function creates an unmapped subwindow for a specified parent window, returns the Drawable value for the created window, and causes the X server to generate a CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. The borderWidth for an InputOnlyClass window must be zero, or a BadMatch error results. For class InputOutputClass, the visual type and depth must be a combination supported for the screen, or a BadMatch error results. The depth need not be the same as the parent, but the parent must not be a window of class InputOnlyClass, or a BadMatch error results. For an InputOnlyClass window, the depth must be zero, and the visual must be one supported by the screen. If either condition is not met, a BadMatch error results. The parent window, however, may have any depth and class. If you specify any invalid window attribute for a window, a BadMatch error results. The created window is not yet displayed (mapped) on the user's display. To display the window, call XMapWindow. The new window initially uses the same cursor as its parent. A new cursor can be defined for the new window by calling XDefineCursor. The window will not be visible on the screen unless it and all of its ancestors are mapped and it is not obscured by any of its ancestors. If XCreateWindow fails then exception XWindows is raised with "XCreateWindow failed" . cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 101 The XCreateSimpleWindow function creates an unmapped InputOutputClass sub- window for a specified parent window, returns the Drawable value for the created window, and causes the X server to generate a CreateNotify event. The created window is placed on top in the stacking order with respect to siblings. Any part of the window that extends outside its parent window is clipped. The borderWidth for an InputOnlyClass win- dow must be zero, or a BadMatch error results. XCreateSimpleWindow inherits its depth, class, and visual from its parent. All other window attributes, except background and border, have their default values. If XCreateSimpleWindow fails then exception XWindows is raised with "XCreateSimpleWindow failed" . 2.16.2 XDestroyWindow, XDestroySubwindows Types: val XDestroyWindow: Drawable -> unit val XDestroySubwindows: Drawable -> unit Syntax: XDestroyWindow w ; XDestroySubwindows w ; Arguments: w Specifies the window. Description: The XDestroyWindow function destroys the specified window as well as all of its sub- windows and causes the X server to generate a DestroyNotify event for each window. The window should never be referenced again. If the window specified by the w argument is mapped, it is unmapped automatically. The ordering of the DestroyNotify events is such that for any given window being destroyed, DestroyNotify is generated on any inferiors of the window before being generated on the window itself. The ordering among siblings and across subhierarchies is not otherwise constrained. If the window you specified is a root window, no windows are destroyed. Destroying a mapped window will generate Expose events on other windows that were obscured by the window being destroyed. The XDestroySubwindows function destroys all inferior windows of the specified win- dow, in bottom-to-top stacking order. It causes the X server to generate a DestroyNotify event for each window. If any mapped subwindows were actually destroyed, XDestroy- Subwindows causes the X server to generate Expose events on the specified window. This is much more efficient than deleting many windows one at a time because much of the work need be performed only once for all of the windows, rather than for each window. The subwindows should never be referenced again. If XDestroySubwindows fails then exception XWindows is raised with "XDestroySubwindows failed" . 2.16.3 XGetGeometry, XGetWindowAttributes Types: 102 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 val XGetGeometry: Drawable -> (Drawable * XPoint * XRectangle * int * int) val XGetWindowAttributes: Drawable -> XWindowAttributes Syntax: val (root,position,size,borderWidth,depth) = XGetGeometry w ; val attributes = XGetWindowAttributes w ; Arguments: d Specifies the drawable, which can be a window or a pixmap. root Returns the root window position Returns the x and y coordinates that define the location of the draw- able. For a window, these coordinates specify the upper-left outer corner relative to its parent's origin. For pixmaps, these coordinates are always zero. size Returns the drawable's dimensions (width and height). borderWidth Returns the border width in pixels. depth Returns the depth of the drawable (bits per pixel for the object). Argument Type: datatype WindowClass = CopyFromParentClass | InputOutputClass | InputOnlyClass datatype MapState = IsUnmapped | IsUnviewable | IsViewable datatype Gravity = ForgetGravity | NorthWestGravity | NorthGravity | NorthEastGravity | WestGravity | CenterGravity | EastGravity | SouthWestGravity | SouthGravity | SouthEastGravity | StaticGravity val UnmapGravity: Gravity (* same as ForgetGravity *) datatype BackingStore = NotUseful | WhenMapped | Always val NoColormap: Colormap datatype XWindowAttributes = XWindowAttributes of { position: XPoint, size: XRectangle, borderWidth: int, depth: int, visual: Visual, root: Drawable, class: WindowClass, bitGravity: Gravity, winGravity: Gravity, backingStore: BackingStore, backingPlanes: int, backingPixel: int, cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 103 saveUnder: bool, colormap: Colormap, mapInstalled: bool, mapState: MapState, allEventMasks: EventMask list, yourEventMask: EventMask list, doNotPropagateMask: EventMask list, overrideRedirect: bool } Argument Description: The position member is set to the upper-left outer corner relative to the parent window's origin. The size member is set to the inside size of the window, not including the border. The borderWidth member is set to the window's border width in pixels. The depth member is set to the depth of the window (that is, bits per pixel for the object). The visual member the screen's associated Visual structure. The root member is set to the root window of the screen containing the window. The class member is set to the window's class and can be either InputOutputClass or InputOnlyClass. The bitGravity member is set to the window's bit gravity and can be one of the following: ForgetGravity EastGravity NorthWestGravity SouthWestGravity NorthGravity SouthGravity NorthEastGravity SouthEastGravity WestGravity StaticGravity CenterGravity The winGravity member is set to the window's window gravity and can be one of the following: UnmapGravity EastGravity NorthWestGravity SouthWestGravity NorthGravity SouthGravity NorthEastGravity SouthEastGravity WestGravity StaticGravity CenterGravity The backingStore member is set to indicate how the X server should maintain the contents of a window and can be WhenMapped, Always, or NotUseful. The backingPlanes member is set to indicate (with bits set to 1) which bit planes of the window hold dynamic data that must be preserved in backing-stores and during save-unders. The backingPixel member is set to indicate what values to use for planes not set in backingPlanes. The saveUnder member is set to true or false. The colormap member is set to the colormap for the specified window and can be a Colormap or NoColormap. The mapInstalled member is set to indicate whether the colormap is currently installed and can be true or false. The mapState member is set to indicate the state of the window and can be IsUnmapped, IsUnviewable, or IsViewable. IsUnviewable is used if the window is mapped but some ancestor is unmapped. The allEventMasks member is set to the event masks selected on the window by all clients. The yourEventMask member is set to the event masks selected by the querying client. The doNotPropagateMask member is set to the list of events that should not propagate. The overrideRedirect member is set to indicate whether this window overrides structure control facilities and can be true or false. Window manager clients should ignore the window if this member is true. 104 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The XGetWindowAttributes function returns the current attributes for the specified window as an XWindowAttributes structure. If XGetWindowAttributes fails then exception XWindows is raised with "XGetWin- dowAttributes failed" . The XGetGeometry function returns the root window and the current geometry of the drawable. The geometry of the drawable includes the position as x and y coordinates, the size as width and height, the border width, and the depth. These are described in the argument list. It is legal to pass to this function a window whose class is InputOnlyClass. If XGetGeometry fails then exception XWindows is raised with "XGetGeometry failed" . 2.16.4 XGetWindowRoot, XGetWindowPosition, XGetWindowSize, XGetWindowBorderWidth, XGetWindowDepth, XGetWindowParent, XGetWindowChildren Types: val XGetWindowRoot: Drawable -> Drawable val XGetWindowPosition: Drawable -> XPoint val XGetWindowSize: Drawable -> XRectangle val XGetWindowBorderWidth: Drawable -> int val XGetWindowDepth: Drawable -> int val XGetWindowParent: Drawable -> Drawable val XGetWindowChildren: Drawable -> Drawable list Description: These convenience functions return the individual attributes returned in bulk by XGet- Geometry and XQueryTree. XGetWindowRoot returns the root window for the drawable. XGetWindowPosition returns the coordinates of the outer top left corner of the window. XGetWindowSize returns the inside size of the window. XGetWindowBorderWidth returns the border width in pixels of the window. XGetWindowDepth returns the depth of the window. XGetWindowParent returns the parent window of the specified window. XGetWin- dowChildren returns the children of the specified window. 2.16.5 XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap Types: val XChangeWindowAttributes: Drawable -> XSetWindowAttributes list -> unit val XSetWindowBackground: Drawable -> int -> unit val XSetWindowBackgroundPixmap: Drawable -> Drawable -> unit val XSetWindowBorder: Drawable -> int -> unit val XSetWindowBorderPixmap: Drawable -> Drawable -> unit cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 105 Syntax: XChangeWindowAttributes w attributes ; XSetWindowBackground w backgroundPixel ; XSetWindowBackgroundPixmap w backgroundPixmap ; XSetWindowBorder w borderPixel ; XSetWindowBorderPixmap w borderPixmap ; Arguments: attributes Specifies the list of attributes to change. backgroundPixel Specifies the pixel that is to be used for the background. backgroundPixmap Specifies the background pixmap, ParentRelative, or NoDrawable. borderPixel Specifies the entry in the colormap. borderPixmap Specifies the border pixmap or CopyFromParentDrawable. w Specifies the window. Argument Type: datatype XSetWindowAttributes = CWBackPixmap of Drawable | CWBackPixel of int | CWBorderPixmap of Drawable | CWBorderPixel of int | CWBitGravity of Gravity | CWWinGravity of Gravity | CWBackingStore of BackingStore | CWBackingPlanes of int | CWBackingPixel of int | CWOverrideRedirect of bool | CWSaveUnder of bool | CWEventMask of EventMask list | CWDontPropagate of EventMask list | CWColormap of Colormap | CWCursor of Cursor Description: The XChangeWindowAttributes function uses the window attributes in the XSetWindowAttributes list to change the specified window attributes. Changing the background does not cause the window contents to be changed. To repaint the window and its background, use XClearWindow. Setting the border or changing the background such that the border tile origin changes causes the border to be repainted. Changing the background of a root window to NoDrawable or ParentRelative restores the default background pixmap. Changing the border of a root window to CopyFromParentDraw- able restores the default border pixmap. Changing the win-gravity does not affect the current position of the window. Changing the backing-store of an obscured window to WhenMapped or Always, or changing the backing-planes, backing-pixel, or save-under of a mapped window may have no immediate effect. Changing the colormap of a window (that is, defining a new map, not changing the contents of the existing map) generates a ColormapNotify event. Changing the colormap of a visible window may have no imme- diate effect on the screen because the map may not be installed (see XInstallColormap). 106 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Changing the cursor of a root window to NoCursor restores the default cursor. Whenever possible, you are encouraged to share colormaps. Multiple clients can select input on the same window. Their event masks are maintained separately. When an event is generated, it is reported to all interested clients. However, only one client at a time can select for SubstructureRedirectMask, ResizeRedirect- Mask, and ButtonPressMask. If a client attempts to select any of these event masks and some other client has already selected one, a BadAccess error results. There is only one do-not-propagate-mask for a window, not one per client. The XSetWindowBackground function sets the background of the window to the spec- ified pixel value. Changing the background does not cause the window contents to be changed. XSetWindowBackground uses a pixmap of undefined size filled with the pixel value you passed. If you try to change the background of an InputOnlyClass window, a BadMatch error results. The XSetWindowBackgroundPixmap function sets the background pixmap of the window to the specified pixmap. The background pixmap can immediately be freed if no further explicit references to it are to be made. If ParentRelative is specified, the background pixmap of the window's parent is used, or on the root window, the default background is restored. If you try to change the background of an InputOnlyClass window, a BadMatch error results. If the background is set to NoDrawable, the window has no defined background. The XSetWindowBorder function sets the border of the window to the pixel value you specify. If you attempt to perform this on an InputOnlyClass window, a BadMatch error results. The XSetWindowBorderPixmap function sets the border pixmap of the window to the pixmap you specify. The border pixmap can be freed immediately if no further explicit references to it are to be made. If you specify CopyFromParentDrawable, a copy of the parent window's border pixmap is used. If you attempt to perform this on an InputOnlyClass window, a BadMatch error results. 2.16.6 XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth Types: val XConfigureWindow: Drawable -> XWindowChanges list -> unit val XMoveWindow: Drawable -> XPoint -> unit val XResizeWindow: Drawable -> XRectangle -> unit val XMoveResizeWindow: Drawable -> XPoint -> XRectangle -> unit val XSetWindowBorderWidth: Drawable -> int -> unit Syntax: XConfigureWindow w changes ; XMoveWindow w origin ; XResizeWindow w area ; XMoveResizeWindow w origin area ; XSetWindowBorderWidth w borderWidth ; Arguments: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 107 changes Specifies a list of XWindowChanges. w Specifies the window to be reconfigured. borderWidth Specifies the width of the window border. area Specifies the interior dimensions of the window. origin Specifies the x and y coordinates, which define the new location of the top-left pixel of the window's border or the window itself if it has no border relative to its parent. Argument Type: datatype XWindowChanges = CWPosition of XPoint | CWSize of XRectangle | CWBorderWidth of int | CWStackMode of StackMode | CWSibling of Drawable datatype StackMode = Above | Below | TopIf | BottomIf | Opposite Argument Description: The CWPosition member is used to set the window's x and y coordinates, which are relative to the parent's origin and indicate the position of the upper-left outer corner of the window. The CWSize member is used to set the inside size of the window, not including the border, and must be non-zero, or a BadValue error results. Attempts to configure a root window have no effect. The CWBorderWidth member is used to set the width of the border in pixels. Note that setting just the border width leaves the outer-left corner of the window in a fixed position but moves the absolute position of the window's origin. If you attempt to set the border-width attribute of an InputOnlyClass window non-zero, a BadMatch error results. The CWSibling member is used to set the sibling window for stacking operations. The CWStackMode member is used to set how the window is to be restacked and can be set to Above, Below, TopIf, BottomIf, or Opposite. Description: The XConfigureWindow function uses the values specified in the XWindowChanges list to reconfigure a window's size, position, border, and stacking order. Values not specified are taken from the existing geometry of the window. If a sibling is specified without a stack-mode or if the window is not actually a sibling, a BadMatch error results. Note that the computations for BottomIf, TopIf, and Oppo- site are performed with respect to the window's final geometry (as controlled by the other arguments passed to XConfigureWindow), not its initial geometry. Any backing store contents of the window, its inferiors, and other newly visible windows are either discarded or changed to reflect the current screen contents (depending on the implementation). The XMoveWindow function moves the specified window to the specified x and y coor- dinates, but it does not change the window's size, raise the window, or change the mapping state of the window. Moving a mapped window may or may not lose the window's contents depending on if the window is obscured by nonchildren and if no backing store exists. If the contents of the window are lost, the X server generates Expose events. Moving a mapped window generates Expose events on any formerly obscured windows. 108 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 If the override-redirect flag of the window is false and some other client has selected Sub- structureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. Otherwise, the window is moved. The XResizeWindow function changes the inside dimensions of the specified window, not including its borders. This function does not change the window's upper-left coordinate or the origin and does not restack the window. Changing the size of a mapped window may lose its contents and generate Expose events. If a mapped window is made smaller, changing its size generates Expose events on windows that the mapped window formerly obscured. If the override-redirect flag of the window is false and some other client has selected Sub- structureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. If either width or height is zero, a Bad- Value error results. The XMoveResizeWindow function changes the size and location of the specified win- dow without raising it. Moving and resizing a mapped window may generate an Expose event on the window. Depending on the new size and location parameters, moving and resizing a window may generate Expose events on windows that the window formerly obscured. If the override-redirect flag of the window is false and some other client has selected Sub- structureRedirectMask on the parent, the X server generates a ConfigureRequest event, and no further processing is performed. Otherwise, the window size and location are changed. The XSetWindowBorderWidth function sets the specified window's border width to the specified width. 2.16.7 XMapWindow, XMapRaised, XMapSubwindows Types: val XMapWindow: Drawable -> unit val XMapRaised: Drawable -> unit val XMapSubwindows: Drawable -> unit Syntax: XMapWindow w ; XMapRaised w ; XMapSubwindows w ; Arguments: w Specifies the window. Description: The XMapWindow function maps the window and all of its subwindows that have had map requests. Mapping a window that has an unmapped ancestor does not display the window but marks it as eligible for display when the ancestor becomes mapped. Such a window is called unviewable. When all its ancestors are mapped, the window becomes viewable and will be visible on the screen if it is not obscured by another window. This function has no effect if the window is already mapped. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 109 If the override-redirect of the window is false and if some other client has selected Sub- structureRedirectMask on the parent window, then the X server generates a MapRe- quest event, and the XMapWindow function does not map the window. Otherwise, the window is mapped, and the X server generates a MapNotify event. If the window becomes viewable and no earlier contents for it are remembered, the X server tiles the window with its background. If the window's background is undefined, the existing screen contents are not altered, and the X server generates zero or more Expose events. If backing-store was maintained while the window was unmapped, no Expose events are generated. If backing-store will now be maintained, a full-window exposure is always generated. Otherwise, only visible regions may be reported. Similar tiling and exposure take place for any newly viewable inferiors. If the window is an InputOutputClass window, XMapWindow generates Expose events on each InputOutputClass window that it causes to be displayed. If the client maps and paints the window and if the client begins processing events, the window is painted twice. To avoid this, first ask for Expose events and then map the window, so the client processes input events as usual. The event list will include Expose for each window that has appeared on the screen. The client's normal response to an Expose event should be to repaint the window. This method usually leads to simpler programs and to proper interaction with window managers. The XMapRaised function essentially is similar to XMapWindow in that it maps the window and all of its subwindows that have had map requests. However, it also raises the specified window to the top of the stack. The XMapSubwindows function maps all subwindows for a specified window in top-to- bottom stacking order. The X server generates Expose events on each newly displayed window. This may be much more efficient than mapping many windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. 2.16.8 XQueryPointer Types: val XQueryPointer: Drawable -> (bool * Drawable * Drawable * XPoint * XPoint * Modifier list) Syntax: val (sameScreen,root,child,rootPointer,pointer,modifiers) = XQueryPointer w ; Arguments: sameScreen Returns true if the pointer is on the same screen as the specified window. child Returns the child window that the pointer is located in, if any. modifiers Returns the current state of the modifier keys and pointer buttons. root Returns the root window that the pointer is in. rootPointer Return the pointer coordinates relative to the root window's origin. w Specifies the window. 110 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 pointer Return the pointer coordinates relative to the specified window. Description: The XQueryPointer function returns the root window the pointer is logically on and the pointer coordinates relative to the root window's origin. If sameScreen is false, the pointer is not on the same screen as the specified window, and XQueryPointer returns NoDrawable to child and (0,0) to pointer. If sameScreen is true, the pointer coordi- nates returned to pointer are relative to the origin of the specified window. In this case, XQueryPointer returns the child that contains the pointer, if any, or else NoDrawable to child. XQueryPointer returns the current logical state of the keyboard buttons and the modifier keys in modifiers. It sets modifiers to the list of button or modifier key masks to match the current state of the mouse buttons and the modifier keys. 2.16.9 XQueryTree Types: val XQueryTree: Drawable -> (Drawable * Drawable * Drawable list) Syntax: val (root,parent,children) = XQueryTree w ; Arguments: children Returns a list of children. parent Returns the parent window. root Returns the root window. w Specifies the window whose list of children, root, and parent you want to obtain. Description: The XQueryTree function returns the root window, the parent window, and a list of children windows for the specified window. The children are listed in current stacking order, from bottom-most (first) to top-most (last). If it fails, XQueryTree raises exception XWindows with "XQueryTree failed" . 2.16.10 XRaiseWindow, XLowerWindow, XCirculateSubwindows, XCirculateSubwindowsDown, XCirculateSubwindowsUp, XRestackWindows Types: val XRaiseWindow: Drawable -> unit val XLowerWindow: Drawable -> unit val XCirculateSubwindows: Drawable -> CirculateDirection -> unit val XCirculateSubwindowsDown: Drawable -> unit val XCirculateSubwindowsUp: Drawable -> unit val XRestackWindows: Drawable list -> unit cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 111 Syntax: XRaiseWindow w ; XLowerWindow w ; XCirculateSubwindows w direction ; XCirculateSubwindowsDown w ; XCirculateSubwindowsUp w ; XRestackWindows windows ; Arguments: direction Specifies the direction (up or down) that you want to circulate the window. You can pass RaiseLowest or LowerHighest. w Specifies the window. windows Specifies the list of windows to be restacked. Argument Type: datatype CirculateDirection = RaiseLowest | LowerHighest Description: The XRaiseWindow function raises the specified window to the top of the stack so that no sibling window obscures it. If the windows are regarded as overlapping sheets of paper stacked on a desk, then raising a window is analogous to moving the sheet to the top of the stack but leaving its x and y location on the desk constant. Raising a mapped window may generate Expose events for the window and any mapped subwindows that were formerly obscured. If the override-redirect attribute of the window is false and some other client has se- lected SubstructureRedirectMask on the parent, the X server generates a Configur- eRequest event, and no processing is performed. Otherwise, the window is raised. The XLowerWindow function lowers the specified window to the bottom of the stack so that it does not obscure any sibling windows. If the windows are regarded as overlapping sheets of paper stacked on a desk, then lowering a window is analogous to moving the sheet to the bottom of the stack but leaving its x and y location on the desk constant. Lowering a mapped window will generate Expose events on any windows it formerly obscured. If the override-redirect attribute of the window is false and some other client has se- lected SubstructureRedirectMask on the parent, the X server generates a Configur- eRequest event, and no processing is performed. Otherwise, the window is lowered to the bottom of the stack. The XCirculateSubwindows function circulates children of the specified window in the specified direction. If you specify RaiseLowest, XCirculateSubwindows raises the low- est mapped child (if any) that is occluded by another child to the top of the stack. If you specify LowerHighest, XCirculateSubwindows lowers the highest mapped child (if any) that occludes another child to the bottom of the stack. Exposure processing is then performed on formerly obscured windows. If some other client has selected Substructur- eRedirectMask on the window, the X server generates a CirculateRequest event, and no further processing is performed. If a child is actually restacked, the X server generates a CirculateNotify event. The XCirculateSubwindowsUp function raises the lowest mapped child of the specified window that is partially or completely occluded by another child. Completely unobscured 112 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 children are not affected. This is a convenience function equivalent to XCirculateSub- windows with RaiseLowest specified. The XCirculateSubwindowsDown function lowers the highest mapped child of the spec- ified window that partially or completely occludes another child. Completely unobscured children are not affected. This is a convenience function equivalent to XCirculateSub- windows with LowerHighest specified. The XRestackWindows function restacks the windows in the order specified, from top to bottom. The stacking order of the first window in the windows list is unaffected, but the other windows in the list are stacked underneath the first window, in the order of the list. The stacking order of the other windows is not affected. For each window in the window list that is not a child of the specified window, a BadMatch error results. If the override-redirect attribute of a window is false and some other client has selected SubstructureRedirectMask on the parent, the X server generates ConfigureRequest events for each window whose override-redirect flag is not set, and no further processing is performed. Otherwise, the windows will be restacked in top to bottom order. 2.16.11 XReparentWindow Types: val XReparentWindow: Drawable -> Drawable -> XPoint -> unit Syntax: XReparentWindow w parent topLeft ; Arguments: parent Specifies the parent window. w Specifies the window. topLeft Specifies the x and y coordinates of the position in the new parent window. Description: If the specified window is mapped, XReparentWindow automatically performs an Un- mapWindow request on it, removes it from its current position in the hierarchy, and inserts it as the child of the specified parent. The window is placed in the stacking order on top with respect to sibling windows. After reparenting the specified window, XReparentWindow causes the X server to gen- erate a ReparentNotify event. The overrideRedirect member returned in this event is set to the window's corresponding attribute. Window manager clients usually should ignore this window if this member is set to true. Finally, if the specified window was originally mapped, the X server automatically performs a MapWindow request on it. The X server performs normal exposure processing on formerly obscured windows. The X server might not generate Expose events for regions from the initial UnmapWindow request that are immediately obscured by the final MapWindow request. A BadMatch error results if the new parent window is not on the same screen as the old parent window, or if the new parent window is the specified window or an inferior of the specified window, or if the specified window has a ParentRelative background, and the new parent window is not the same depth as the specified window. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 113 2.16.12 XUnmapWindow, XUnmapSubwindows Types: val XUnmapWindow: Drawable -> unit val XUnmapSubwindows: Drawable -> unit Syntax: XUnmapWindow w ; XUnmapSubwindows w ; Arguments: w Specifies the window. Description: The XUnmapWindow function unmaps the specified window and causes the X server to generate an UnmapNotify event. If the specified window is already unmapped, XUn- mapWindow has no effect. Normal exposure processing on formerly obscured windows is performed. Any child window will no longer be visible until another map call is made on the parent. In other words, the subwindows are still mapped but are not visible until the parent is mapped. Unmapping a window will generate Expose events on windows that were formerly obscured by it. The XUnmapSubwindows function unmaps all subwindows for the specified window in bottom-to-top stacking order. It causes the X server to generate an UnmapNotify event on each subwindow and Expose events on formerly obscured windows. Using this function is much more efficient than unmapping multiple windows one at a time because the server needs to perform much of the work only once, for all of the windows, rather than for each window. 2.17 Window Manager 2.17.1 XSetIconSizes, XGetIconSizes Types: val XSetIconSizes: Drawable -> (XRectangle * XRectangle * XRectangle) list -> unit val XGetIconSizes: Drawable -> (XRectangle * XRectangle * XRectangle) list Syntax: XSetIconSizes w sizes ; val sizes = XGetIconSizes w ; Arguments: 114 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 sizes Specifies the size list. w Specifies the window. Description: The XSetIconSizes function is used only by window managers to set the supported icon sizes. The size is specified as (minimum size,maximum size,size increment). The XGetIconSizes function returns the empty list if a window manager has not set icon sizes, otherwise it returns a list of supported sizes. XGetIconSizes should be called by an application that wants to find out what icon sizes would be most appreciated by the window manager under which the application is running. The application should then use XSetWMHints to supply the window manager with an icon pixmap or window in one of the supported sizes. 2.17.2 XSetTransientForHint, XGetTransientForHint Types: val XSetTransientForHint: Drawable -> Drawable -> unit val XGetTransientForHint: Drawable -> Drawable Syntax: XSetTransientForHint transientWindow mainWindow ; val mainWindow = XGetTransientForHint transientWindow ; Arguments: transientWindow Specifies the transient window. mainWindow Specifies a more permanent window in the application. Properties: WM__TRANSIENT__FOR Set by application programs to indicate to the window manager a transient top-level window, such as a dialog box. Description: The XSetTransientForHint function sets the WM__TRANSIENT__FOR property of transientWindow to mainWindow. The XGetTransientForHint function returns the WM__TRANSIENT__FOR property for the specified transientWindow. If the property does not exist then exception XWin- dows is raised with "XGetTransientForHint failed" . 2.17.3 XSetWMClass, XGetWMClass Types: val XSetWMClass: Drawable -> string list -> unit val XGetWMClass: Drawable -> string list cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 115 Syntax: XSetWMClass w class ; val class = XGetWMClass w ; Arguments: class Specifies the class names for the window w Specifies the window Properties: WM__CLASS Set by application programs to allow window and session managers to obtain the application's resources from the resource database. Description: XSetWMClass sets the WM__CLASS property on the specified window. XGetWM- Class returns the WM__CLASS property on the specified window. 2.17.4 XSetWMClientMachine, XGetWMClientMachine Types: val XSetWMClientMachine: Drawable -> string -> unit val XGetWMClientMachine: Drawable -> string Syntax: XSetWMClientMachine w machine ; val machine = XGetWMClientMachine w ; Arguments: w Specifies the window machine Specifies the name of the machine on which the application is running. Properties: WM__CLIENT__MACHINE The string name of the machine on which the client application is running. Description: The XSetWMClientMachine convenience function performs a XSetProperty on the WM__CLIENT__MACHINE property. The XGetWMClientMachine convenience function performs an XGetTextProperty on the WM__CLIENT__MACHINE property. 116 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 2.17.5 XSetWMColormapWindows, XGetWMColormapWindows Types: val XSetWMColormapWindows: Drawable -> Drawable list -> unit val XGetWMColormapWindows: Drawable -> Drawable list Syntax: XSetWMColormapWindows topWindow colormapWindows ; val colormapWindows = XGetWMColormapWindows topWindow ; Arguments: colormapWindows Specifies the list of windows. topWindow Specifies one of the application's top level windows. Properties: WM__COLORMAP__WINDOWS List of windows that may need a different col- ormap than that of their top-level window. Description: The XSetWMColormapWin- dows function replaces the WM__COLORMAP__WINDOWS property on the specified window with the list of windows specified by the colormapWindows argument. The prop- erty is stored with a type of XA__WINDOW and a format of 32. If it cannot intern the WM__COLORMAP__WINDOWS atom, XSetWMColormapWindows raises excep- tion XWindows with "XSetWMColormapWindows failed" . The XGetWMColormapWindows function returns the list of window identifiers stored in the WM__COLORMAP__WINDOWS property on the specified window. These iden- tifiers indicate the colormaps that the window manager may need to install for this window. If the property exists, is of type WINDOW, is of format 32, and the atom WM__COLORMAP__WINDOWS can be interned, XGetWMColormapWindows returns the list of windows. Otherwise, it returns the empty list. 2.17.6 XSetWMCommand, XGetWMCommand Types: val XSetWMCommand: Drawable -> string list -> unit val XGetWMCommand: Drawable -> string list Syntax: XSetWMCommand w commands ; val commands = XGetWMCommand w ; Arguments: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 117 w Specifies the window. commands Specifies the list of strings. Description: The XSetWMCommand function sets the WM__COMMAND property on the speci- fied window. Typically it is set to the command and arguments used to invoke the appli- cation. The XGetWMCommand function reads the WM__COMMAND property from the specified window and returns a string list. If the WM__COMMAND property exists, and it is of type XA__STRING and format 8 then it is returned as a string list. Otherwise, it raises exception XWindows with "XGetWMCommand" . 2.17.7 XSetWMHints, XGetWMHints Types: val XSetWMHints: Drawable -> XWMHint list -> unit val XGetWMHints: Drawable -> XWMHint list Syntax: XSetWMHints w hints ; val hints = XGetWMHints w ; Arguments: w Specifies the window hints Specifies the list of XWMHint values Argument Type: datatype XWMStateHint = DontCareState | NormalState | ZoomState | IconicState | InactiveState datatype XWMHint = InputHint of bool | StateHint of XWMStateHint | IconPixmapHint of Drawable | IconWindowHint of Drawable | IconPositionHint of XPoint | IconMaskHint of Drawable Argument Description: The InputHint member is used to communicate to the window manager the input focus model used by the application. Applications that expect input but never explicitly set focus to any of their subwindows (that is, use the push model of focus management), such as X10-style applications that use real-estate driven focus, should set this member to true. Similarly, applications that set input focus to their subwindows only when it is given to their top-level window by a window manager should also set this member to true. Applications that manage their own input focus by explicitly setting focus to one of their subwindows whenever they want keyboard input (that is, use the pull model of 118 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 focus management) should set this member to false. Applications that never expect any keyboard input also should set this member to false. Pull model window managers should make it possible for push model applications to get input by setting input focus to the top-level windows of applications whose input member is true. Push model window managers should make sure that pull model applications do not break them by resetting input focus to PointerRoot when it is appropriate (for example, whenever an application whose input member is false sets input focus to one of its subwindows). Possible values for the StateHint member are DontCareState (* don't know or care *) NormalState (* most applications want to start this way *) ZoomState (* application wants to start zoomed *) IconicState (* application wants to start as an icon *) InactiveState (* application wants to start invisibly *) The IconMaskHint member specifies which pixels of the IconPixmapHint member should be used as the icon. This allows for nonrectangular icons. Both the Icon- PixmapHint member and the IconMaskHint member must be bitmaps. The Icon- WindowHint member lets an application provide a window for use as an icon for window managers that support such use. The IconPositionHint member specifies a position on the screen for the icon. Description: The XSetWMHints function sets the window manager hints that include icon informa- tion and location, the initial state of the window, and whether the application relies on the window manager to get keyboard input. The XGetWMHints function reads the window manager hints and returns the empty list if no WM__HINTS property was set on the window or returns a list of XWMHints if it succeeds. 2.17.8 XSetWMIconName, XGetWMIconName Types: val XSetWMIconName: Drawable -> string -> unit val XGetWMIconName: Drawable -> string Syntax: XSetWMIconName w iconName ; val iconName = XGetWMIconName w ; Arguments: iconName Specifies the icon name w Specifies the window cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 119 Description: The XSetWMIconName convenience function performs a XSetProperty on the WM__ICON__NAME property. The XSetWMIconName function sets the name to be displayed in a window's icon. The XGetWMIconName convenience function performs an XGetTextProperty on the WM__ICON__NAME property. The XGetWMIconName function returns the name to be displayed in the specified window's icon. If it succeeds, it returns the name, otherwise, if no icon name has been set for the window, it raises exception XWindows with "XGetWMIconName" . 2.17.9 XSetWMName, XGetWMName Types: val XSetWMName: Drawable -> string -> unit val XGetWMName: Drawable -> string Syntax: XSetWMName w windowName ; windowName = XGetWMName w ; Arguments: windowName Specifies the window name w Specifies the window Description: The XSetWMName convenience function performs a XSetProperty on the WM__NAME property. The XSetWMName function assigns the name passed to win- dowName to the specified window. A window manager can display the window name in some prominent place, such as the title bar, to allow users to identify windows easily. Some window managers may display a window's name in the window's icon, although they are encouraged to use the window's icon name if one is provided by the application. The XGetWMName convenience function performs an XGetTextProperty on the WM__NAME property. The XGetWMName function returns the name of the specified window. If the WM__NAME property has not been set for this window, XGetWMName raises exception XWindows with "XGetWMName" . 2.17.10 XSetWMProperties Types: val XSetWMProperties: Drawable -> string -> string -> string list -> XWMSizeHint list -> XWMHint list -> string list -> unit 120 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Syntax: XSetWMProperties w windowName iconName commands normalHints wmHints class ; Arguments: w Specifies the window windowName Specifies the window name iconName Specifies the icon name commands Specifies the list of strings used to invoke the window normalHints Specifies the list of XWMSizeHint values for the window wmHints Specifies the list of XWMHint values for the window class Specifies the class names for the window Properties: WM__CLASS Set by application programs to allow window and ses- sion managers to obtain the application's resources from the resource database. WM__CLIENT__MACHINE The string name of the machine on which the client application is running. WM__COMMAND The command and arguments, separated by ASCII nulls, used to invoke the application. WM__HINTS Additional hints set by client for use by the window manager. The ML type of this property is XWMHints. WM__ICON__NAME Name to be used in icon. WM__NAME Name of the application. WM__NORMAL__HINTS Size hints for a window in its normal state. The ML type of this property is XWMSizeHint. Description: The XSetWMProperties convenience function provides a single programming interface for setting those essential window properties that are used for communicating with other clients (particularly window and session managers). If the windowName argument is not empty, XSetWMProperties calls XSetWM- Name, which, in turn, sets the WM__NAME property. If the iconName argu- ment is not empty, XSetWMProperties calls XSetWMIconName, which sets the WM__ICON__NAME property. If the commands argument is not empty, XSetWM- Properties calls XSetWMCommand, which sets the WM__COMMAND property. If the normalHints argument is not empty, XSetWMProperties calls XSetWMNor- malHints, which sets the WM__NORMAL__HINTS property. If the wmHints argument is not empty, XSetWMProperties calls XSetWMHints, which sets the WM__HINTS property. If the class argument is not empty, XSetWMProperties calls XSetWM- Class, which sets the WM__CLASS property. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 121 2.17.11 XSetWMSizeHints, XGetWMSizeHints, XSetWMNormalHints, XGetWMNormalHints Types: val XSetWMSizeHints: Drawable -> int -> XWMSizeHint list -> unit val XGetWMSizeHints: Drawable -> int -> XWMSizeHint list val XSetWMNormalHints: Drawable -> XWMSizeHint list -> unit val XGetWMNormalHints: Drawable -> XWMSizeHint list Syntax: XSetWMSizeHints w property hints ; val hints = XGetWMSizeHints w property ; XSetWMNormalHints w hints ; val hints = XGetWMNormalHints w ; Arguments: w Specifies the window property Specifies the property atom hints Specifies the list of XWMSizeHint values Argument Type: datatype XWMSizeHint = PPosition of XPoint | PSize of XRectangle | PMinSize of XRectangle | PMaxSize of XRectangle | PResizeInc of XRectangle | PAspect of XPoint * XPoint | PBaseSize of XRectangle | PWinGravity of Gravity Argument Description: The PPosition and PSize members are now obsolete and are left solely for compatibility reasons. The PMinSize member specifies the minimum window size that still allows the application to be useful. The PMaxSize member specifies the maximum window size. The PResizeInc member defines a size increment which the window prefers to be resized to. The two points in the PAspect member give minimum and maximum aspect ratios. They are expressed as ratios of x and y, and they allow an application to specify the range of aspect ratios it prefers. The PBaseSize member defines the desired size of the window. The PWinGravity member defines the region of the window that is to be retained when it is resized. Description: The XSetWMSizeHints function replaces the size hints for the specified property on the named window. If the specified property does not already exist, XSetWMSizeHints sets the size hints for the specified property on the named window. The property is stored with a type of WM__SIZE__HINTS and a format of 32. To set a window's normal size hints, you can use the XSetWMNormalHints function. 122 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 The XGetWMSizeHints function returns the size hints stored in the specified property on the named window. If the property is of type WM__SIZE__HINTS, of format 32, and is long enough to contain either an old (pre-ICCCM) or new size hints structure, XGetWM- SizeHints returns the list of fields that were supplied by the user. Otherwise, it returns the empty list. To get a window's normal size hints, you can use the XGetWMNormalHints function. If XGetWMSizeHints returns successfully and a pre-ICCCM size hints property is read, the list returned may contain the following members: [PPosition,PSize,PMinSize,PMaxSize,PResizeInc,PAspect] If the property is large enough to contain the base size and window gravity fields as well, the list returned may contain the following members: [PBaseSize,PWinGravity] The XSetWMNormalHints function replaces the size hints for the WM__NORMAL__HINTS property on the specified window. If the property does not already exist, XSetWMNormalHints sets the size hints for the WM__NORMAL__HINTS property on the specified window. The property is stored with a type of WM__SIZE__HINTS and a format of 32. The XGetWMNormalHints function returns the size hints stored in the WM__NORMAL__HINTS property on the specified window. If the property is of type WM__SIZE__HINTS, of format 32, and is long enough to contain either an old (pre- ICCCM) or new size hints structure, XGetWMNormalHints returns the list of fields that were supplied by the user. Otherwise, it returns the empty list. If XGetWMNormalHints returns successfully and a pre-ICCCM size hints property is read, the list returned may contain the following members: [PPosition,PSize,PMinSize,PMaxSize,PResizeInc,PAspect] If the property is large enough to contain the base size and window gravity fields as well, the list returned may contain the following members: [PBaseSize,PWinGravity] 2.17.12 XWMGeometry Types: val XWMGeometry: string -> string -> int -> XWMSizeHint list -> XPoint * XRectangle * Gravity Syntax: val (topLeft,area,gravity) = XWMGeometry userGeometry defaultGeometry borderWidth sizeHints ; Arguments: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 123 userGeometry Specifies the user-specified geometry or empty string. borderWidth Specifies the border width. defaultGeometry Specifies the application's default geometry or empty string. sizeHints Specifies the size hints for the window in its normal state. topLeft Return the x and y offsets. area Return the width and height determined. gravity Returns the window gravity. Description: The XWMGeometry function combines any geometry information (given in the format used by XParseGeometry) specified by the user and by the calling program with size hints (usually the ones to be stored in WM__NORMAL__HINTS) and returns the position, size, and gravity (NorthWestGravity, NorthEastGravity, SouthEastGravity or South- WestGravity) that describe the window. If the base size is not set in the XWMSizeHint list, the minimum size is used if set. Otherwise, a base size of 0 is assumed. If no minimum size is set in the hints list, the base size is used. Note that invalid geometry specifications can cause a width or height of 0 to be returned. 124 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Chapter 3 Event Reference 3.1 XEvent Types: datatype 'a XEvent = ButtonPress of ... | ButtonRelease of ... | ButtonClick of ... | CirculateNotify of ... | CirculateRequest of ... | ColormapNotify of ... | ConfigureNotify of ... | ConfigureRequest of ... | CreateNotify of ... | DestroyNotify of ... | EnterNotify of ... | LeaveNotify of ... | Expose of ... | FocusIn of ... | FocusOut of ... | GraphicsExpose of ... | NoExpose of ... | GravityNotify of ... | KeymapNotify of ... | KeyPress of ... | KeyRelease of ... | MapNotify of ... | UnmapNotify of ... | MapRequest of ... | MotionNotify of ... | ReparentNotify of ... | ResizeRequest of ... | SelectionClear of ... | SelectionNotify of ... | SelectionRequest of ... | VisibilityNotify of ... | DeleteRequest of ... | Message of ... Description: The XEvent type is a union of the individual types returned for each different type of event. Event handlers typically pattern-match on the XEvent members, choosing to match events that they are interested in, and then a default pattern match to provide a default action for all other events. For example: fun Handler (Expose {window,region,...},state) = ... | Handler (EnterNotify {window,...},state) = ... | Handler (LeaveNotify {window,...},state) = ... | Handler (MotionNotify {window,pointer,...},state) = ... | Handler (_,state) = state ; (* default is to do nothing *) 125 126 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 All the event types have a sendEvent member which is set to true if the event came from a SendEvent protocol request. Most events also contain a time member, which is the time at which the event occurred. 3.2 ButtonPress, ButtonRelease, KeyPress, KeyRelease, MotionNotify Types: datatype Modifier = ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask | AnyModifier ; datatype ButtonName = Button1 | Button2 | Button3 | Button4 | Button5 | AnyButton ; ButtonPress of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } ButtonRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } ButtonClick of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName, up: int, (* number of up transitions *) down: int } (* number of down transitions *) KeyPress of { sendEvent: bool, window: Drawable, root: Drawable, cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 127 subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } KeyRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } MotionNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, isHint: bool } Description: These structures have the following common members: window, root, subwindow, time, pointer, rootPointer, and modifiers. The window member is set to the window on which the event was generated and is referred to as the event window. The root member is set to the source window's root window. The rootPointer member is set to the pointer's coordinates relative to the root window's origin at the time of the event. If the source window is an inferior of the event window, the subwindow member of the structure is set to the child of the event window that is the source member or an ancestor of it. Otherwise, the X server sets the subwindow member to NoDrawable. The time member is set to the time when the event was generated and is expressed in milliseconds. If the event window is on the same screen as the root window, the pointer member is set to the coordinates relative to the event window's origin. Otherwise, this member is set to (0,0). The modifiers member is set to indicate the state of the pointer buttons and modifier keys just prior to the event. It is a list of button or modifier key masks: Button1Mask, But- ton2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. KeyPress and KeyRelease events have a member called keycode. It is set to a number that represents a physical key on the keyboard. The keycode is an arbitrary representation for any key on the keyboard. ButtonPress and ButtonRelease events have a member called button. It represents the pointer button that changed state and can be Button1, Button2, Button3, Button4, or Button5. The ButtonClick event can be used as an alternative to the ButtonPress and Button- Release combinations. It returns the number of up and down transitions of the pointer 128 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 button in a small predetermined time interval. In this way it is easy to detect double and triple clicks. MotionNotify events have a member called isHint. It can be set to true or false. 3.3 CirculateNotify Types: datatype Placement = PlaceOnTop | PlaceOnBottom ; CirculateNotify of { sendEvent: bool, event: Drawable, window: Drawable, place: Placement } Description: The event member is set either to the restacked window or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The win- dow member is set to the window that was restacked. The place member is set to the win- dow's position after the restack occurs and is either PlaceOnTop or PlaceOnBottom. If it is PlaceOnTop, the window is now on top of all siblings. If it is PlaceOnBottom, the window is now below all siblings. 3.4 CirculateRequest Types: datatype Placement = PlaceOnTop | PlaceOnBottom ; CirculateRequest of { sendEvent: bool, parent: Drawable, window: Drawable, place: Placement } Description: The parent member is set to the parent window. The window member is set to the sub- window to be restacked. The place member is set to what the new position in the stacking order should be and is either PlaceOnTop or PlaceOnBottom. If it is PlaceOnTop, the subwindow should be on top of all siblings. If it is PlaceOnBottom, the subwindow should be below all siblings. 3.5 ColormapNotify Types: cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 129 ColormapNotify of { sendEvent: bool, window: Drawable, colormap: Colormap, new: bool, installed: bool } Description: The window member is set to the window whose associated colormap is changed, installed, or uninstalled. For a colormap that is changed, installed, or uninstalled, the colormap member is set to the colormap associated with the window. For a colormap that is changed by a call to XFreeColormap, the colormap member is set to NoColormap. The new member is set to indicate whether the colormap for the specified window was changed or installed or uninstalled and can be true or false. If it is true, the colormap was changed. If it is false, the colormap was installed or uninstalled. The installed member is always set to indicate whether the colormap is installed or uninstalled. 3.6 ConfigureNotify Types: ConfigureNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, overrideRedirect: bool } Description: The event member is set either to the reconfigured window or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The window member is set to the window whose size, position, border, and/or stacking order was changed. The position member is set to the coordinates relative to the parent window's origin and indicates the position of the upper-left outside corner of the window. The size member is set to the inside size of the window, not including the border. The borderWidth member is set to the width of the window's border, in pixels. The above member is set to the sibling window and is used for stacking operations. If the X server sets this member to NoDrawable, the window whose state was changed is on the bottom of the stack with respect to sibling windows. However, if this member is set to a sibling window, the window whose state was changed is placed on top of this sibling window. The overrideRedirect member is set to the override-redirect attribute of the window. Win- dow manager clients normally should ignore this window if the overrideRedirect member is true. 130 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 3.7 ConfigureRequest Types: datatype StackMode = Above | Below | TopIf | BottomIf | Opposite ; ConfigureRequest of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, detail: StackMode } Description: The parent member is set to the parent window. The window member is set to the window whose size, position, border width, and/or stacking order is to be reconfigured. 3.8 CreateNotify Types: CreateNotify of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, overrideRedirect: bool } Description: The parent member is set to the created window's parent. The window member specifies the created window. The position member is set to the created window's coordinates relative to the parent window's origin and indicates the position of the upper-left outside corner of the created window. The size member is set to the inside size of the created window (not including the border) and is always nonzero. The borderWidth member is set to the width of the created window's border, in pixels. The overrideRedirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the overrideRedirect member is true. 3.9 DeleteRequest Types: DeleteRequest of { window: Drawable } cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 131 Description: This event is generated when the window manager tries to destroy a top level window. Instead of the window being destroyed the window manager sends this event to the ap- plication. The application can either ignore the event, or, typically, it can will perform some save operations and then destroy the window itself. The window member is set to the window that is to be destroyed. 3.10 DestroyNotify Types: DestroyNotify of { sendEvent: bool, event: Drawable, window: Drawable } Description: The event member is set either to the destroyed window or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The win- dow member is set to the window that is destroyed. 3.11 EnterNotify, LeaveNotify, NotifyMode, NotifyDetail Types: datatype NotifyMode = NotifyNormal | NotifyGrab | NotifyUngrab | NotifyWhileGrabbed ; datatype NotifyDetail = NotifyAncestor | NotifyVirtual | NotifyInferior | NotifyNonLinear | NotifyNonLinearVirtual | NotifyPointer | NotifyPointerRoot | NotifyDetailNone ; EnterNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } LeaveNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, 132 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } Description: The window member is set to the window on which the EnterNotify or LeaveNotify event was generated and is referred to as the event window. This is the window used by the X server to report the event, and is relative to the root window on which the event occurred. The root member is set to the root window of the screen on which the event occurred. For a LeaveNotify event, if a child of the event window contains the initial position of the pointer, the subwindow component is set to that child. Otherwise, the X server sets the subwindow member to NoDrawable. For an EnterNotify event, if a child of the event window contains the final pointer position, the subwindow component is set to that child or NoDrawable. The time member is set to the time when the event was generated and is expressed in milliseconds. The pointer member is set to the coordinates of the pointer position in the event window. This position is always the pointer's final position, not its initial position. If the event window is on the same screen as the root window, pointer is the pointer coordinates relative to the event window's origin. Otherwise, pointer is set to (0,0). The rootPointer member is set to the pointer's coordinates relative to the root window's origin at the time of the event. The focus member is set to indicate whether the event window is the focus window or an inferior of the focus window. The X server can set this member to either true or false. If true, the event window is the focus window or an inferior of the focus window. If false, the event window is not the focus window or an inferior of the focus window. The modifiers member is set to indicate the state of the pointer buttons and modifier keys just prior to the event. It is a list of button or modifier key masks: Button1Mask, But- ton2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. The mode member is set to indicate whether the events are normal events, pseudo-motion events when a grab activates, or pseudo-motion events when a grab deactivates. The X server can set this member to NotifyNormal, NotifyGrab, or NotifyUngrab. The detail member is set to indicate the notify detail and can be NotifyAncestor, No- tifyVirtual, NotifyInferior, NotifyNonLinear, or NotifyNonLinearVirtual. 3.12 Expose Types: Expose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int } cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 133 Description: The window member is set to the exposed (damaged) window. The region member is set to the damaged area within the window. The count member is set to the number of Expose events that are to follow. If count is zero, no more Expose events follow for this window. However, if count is nonzero, at least that number of Expose events (and possibly more) follow for this window. Simple applications that do not want to optimize redisplay by distinguishing between subareas of its window can just ignore all Expose events with nonzero counts and perform full redisplays on events with zero counts. 3.13 FocusIn, FocusOut Types: FocusIn of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } FocusOut of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } Description: The window member is set to the window on which the FocusIn or FocusOut event was generated. This is the window used by the X server to report the event. The mode mem- ber is set to indicate whether the focus events are normal focus events, focus events while grabbed, focus events when a grab activates, or focus events when a grab deactivates. The X server can set the mode member to NotifyNormal, NotifyWhileGrabbed, Notify- Grab, or NotifyUngrab. All FocusOut events caused by a window unmap are generated after any UnmapNotify event; however, the X protocol does not constrain the ordering of FocusOut events with respect to generated EnterNotify, LeaveNotify, VisibilityNotify, and Expose events. Depending on the event mode, the detail member is set to indicate the notify detail and can be NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonLinear, Noti- fyNonLinearVirtual, NotifyPointer, NotifyPointerRoot, or NotifyDetailNone. 3.14 GraphicsExpose, NoExpose Types: datatype GraphicsCode = CopyArea | CopyPlane ; GraphicsExpose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int, code: GraphicsCode } 134 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 NoExpose of { sendEvent: bool, window: Drawable, code: GraphicsCode } Description: Both structures have drawable and code as common members. The drawable member is set to the drawable of the destination region on which the graphics request was to be performed. The code member is set to the graphics request initiated by the client and can be either CopyArea or CopyPlane. If it is CopyArea, a call to XCopyArea initiated the request. If it is CopyPlane, a call to XCopyPlane initiated the request. The GraphicsExpose structure has these additional members: region, and count. The region member is set to the area within the drawable. The count member is set to the number of GraphicsExpose events to follow. If count is zero, no more GraphicsExpose events follow for this window. However, if count is nonzero, at least that number of GraphicsExpose events (and possibly more) are to follow for this window. 3.15 GravityNotify Types: GravityNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint } Description: The event member is set either to the window that was moved or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The window member is set to the child window that was moved. The position member is set to the coordinates relative to the new parent window's origin and indicates the position of the upper-left outside corner of the window. 3.16 KeymapNotify Types: KeymapNotify of { sendEvent: bool, window: Drawable, keyVector: bool list (* 256 bools *) } Description: The keyVector member is set to the bit vector of the keyboard. The vector is returned as a list of 256 bools, representing the keys 0 to 255 in that order. Each bool set to true indicates that the corresponding key is currently pressed. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 135 3.17 MapNotify Types: MapNotify of { sendEvent: bool, event: Drawable, window: Drawable, overrideRedirect: bool } Description: The event member is set either to the window that was mapped or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The window member is set to the window that was mapped. The overrideRedirect member is set to the override-redirect attribute of the window. Window manager clients normally should ignore this window if the override-redirect attribute is true, because these events usually are generated from pop-ups, which override structure control. 3.18 MapRequest Types: MapRequest of { sendEvent: bool, parent: Drawable, window: Drawable } Description: The parent member is set to the parent window. The window member is set to the window to be mapped. 3.19 Message Types: Message of { window: Drawable, message: 'a } ; Description: This event is received when a message is sent to a window. The only way to send a message to a window is to call the message-sender function returned by XSetHandler. This will only allow a strongly typed messages to be sent. 3.20 ReparentNotify Types: 136 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 ReparentNotify of { sendEvent: bool, event: Drawable, window: Drawable, parent: Drawable, position: XPoint, overrideRedirect: bool } Description: The event member is set either to the reparented window or to the old or the new par- ent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. The window member is set to the window that was reparented. The parent member is set to the new parent window. The position member is set to the reparented window's coordinates relative to the new parent window's origin and defines the upper-left outer corner of the reparented window. The overrideRedirect member is set to the override- redirect attribute of the window specified by the window member. Window manager clients normally should ignore this window if the overrideRedirect member is true. 3.21 ResizeRequest Types: ResizeRequest of { sendEvent: bool, window: Drawable, size: XRectangle } Description: The window member is set to the window whose size another client attempted to change. The size member is set to the inside size of the window, excluding the border. 3.22 SelectionClear Types: SelectionClear of { sendEvent: bool, window: Drawable, selection: int, time: int } Description: The window member is set to the window losing ownership of the selection. The selection member is set to the selection atom. The time member is set to the last change time recorded for the selection. The owner member is the window that was specified by the current owner in its XSetSelectionOwner call. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 137 3.23 SelectionNotify Types: SelectionNotify of { sendEvent: bool, requestor: Drawable, selection: int, target: int, property: int, time: int } Description: The requestor member is set to the window associated with the requestor of the selec- tion. The selection member is set to the atom that indicates the selection. For example, XA__PRIMARY is used for the primary selection. The target member is set to the atom that indicates the converted type. For example, XA__PIXMAP is used for a pixmap. The property member is set to the atom that indicates which property the result was stored on. If the conversion failed, the property member is set to zero. The time member is set to the time the conversion took place and can be a timestamp or CurrentTime. 3.24 SelectionRequest Types: SelectionRequest of { sendEvent: bool, owner: Drawable, requestor: Drawable, selection: int, target: int, property: int, time: int } Description: The owner member is set to the window owning the selection and is the window that was specified by the current owner in its XSetSelectionOwner call. The requestor member is set to the window requesting the selection. The selection member is set to the atom that names the selection. For example, XA__PRIMARY is used to indicate the primary selection. The target member is set to the atom that indicates the type the selection is desired in. The property member can be a property name or zero. The time member is set to the time and is a timestamp or CurrentTime from the XConvertSelection request. 3.25 UnmapNotify Types: UnmapNotify of { sendEvent: bool, event: Drawable, window: Drawable, fromConfigure: bool } 138 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 Description: The event member is set either to the unmapped window or to its parent, depending on whether StructureNotifyMask or SubstructureNotifyMask was selected. This is the window used by the X server to report the event. The window member is set to the window that was unmapped. The fromConfigure member is set to true if the event was generated as a result of a resizing of the window's parent when the window itself had a winGravity of UnmapGravity. 3.26 VisibilityNotify Types: datatype Visibility = VisibilityUnobscured | VisibilityPartiallyObscured | VisibilityObscured ; VisibilityNotify of { sendEvent: bool, window: Drawable, visibility: Visibility } Description: The window member is set to the window whose visibility state changes. The state member is set to the state of the window's visibility and can be VisibilityUnobscured, Visibil- ityPartiallyObscured, or VisibilityObscured. The X server ignores all of a window's subwindows when determining the visibility state of the window and processes Visibili- tyNotify events according to the following: When the window changes state from partially obscured, fully obscured, or not view- able to viewable and completely unobscured, the X server generates the event with the state member of the VisibilityNotify structure set to VisibilityUnobscured. When the window changes state from viewable and completely unobscured or not viewable to viewable and partially obscured, the X server generates the event with the state member of the VisibilityNotify structure set to VisibilityPartiallyOb- scured. When the window changes state from viewable and completely unobscured, viewable and partially obscured, or not viewable to viewable and fully obscured, the X server generates the event with the state member of the VisibilityNotify structure set to VisibilityObscured. Chapter 4 Protocol Error Messages 4.1 BadAccess Description: XFreeColors pixel not allocated. XSelectInput selecting event that can only be selected by one client at a time, when another client already has it selected. XStoreColors pixel not allocated, or allocated read-only. XStoreNamedColor pixel not allocated, or allocated read-only. 4.2 BadAlloc Description: The server failed to allocate the requested resource. 4.3 BadAtom Description: A value for an atom argument does not name a defined atom. 4.4 BadColor Description: A value for a Colormap argument does not name a defined Colormap. ML type-checking should avoid this error. 139 140 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 4.5 BadCursor Description: A value for a Cursor argument does not name a defined Cursor. ML type-checking should avoid this error. 4.6 BadDrawable Description: A value for a Drawable argument does not name a defined Window or Pixmap. ML type-checking should avoid this error. 4.7 BadFont Description: A value for a Font argument does not name a defined Font. ML type-checking should avoid this error. 4.8 BadGC Description: A value for a GC argument does not name a defined GC. ML type-checking should avoid this error. 4.9 BadImplementation Description: The server does not implement some aspect of the request. This should never occur in Xlib since only standard requests are made. 4.10 BadIDChoice, BadLength Description: Internal Xlib error. cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 141 4.11 BadMatch Description: Some argument, or arguments, have the correct type and range, but fail to 'match' in some other way. XChangeWindowAtrributes Changing the background or border of an In- putOnlyClass window. XClearArea InputOnlyClass window specified. XClearWindow InputOnlyClass window specified. XConfigureWindow Sibling incorrectly specified, or changing the background or border of an InputOnlyClass window. XCopyArea The drawables must have the same root and depth. XCopyPlane The drawables must have the same root. XCreateColormap Visual type not supported, or bad Alloc- Type. XSetWindowColormap Colormap has different visual type to win- dow. XCreatePixmapCursor Masks must have depth of 1, and must be the same size, and the hotspot must be within that size. XChangeGC Tile pixmap must have the same root and depth as the GC. Stipple pixmap must have depth of 1 and must have the same root as the GC. Clip-mask pixmap must have depth of 1 and must have the same root as the GC. Us- ing a GC with a Drawable of different root or depth results in BadMatch. XPutImage If XYBitmap format is used, the depth must be 1. For XYPixmap and ZPixmap, the depth must match the depth of the drawable. XGetImage Specified area not within the source drawable. XGetSubImage Specified area not within the source drawable. XRestackWindows Specified window is not child window. XCreatePixmapFromBitmapData Depth must be supported by screen. XReparentWindow New parent is not on same screen as old par- ent. XSetClipRectangles Incorrect ordering. XSetInputFocus Focus window must be viewable. 142 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 4.12 BadPixmap Description: A value for a Pixmap does not name a defined Pixmap. ML type-checking should avoid this error. 4.13 BadRequest Description: This should never occur in Xlib since only standard requests are made. 4.14 BadValue Description: Some numeric value falls outside the range of values accepted by the request. XAllocColorCells Number of colours must be positive and planes must be non-negative. XAllocColorPlanes Number of colours must be positive, and reds, green and blues must be non-negative XFreeColors Specified pixel is not a valid index into the colormap. XBell Percent must be "100 to 100. XResizeWindow Window width must be non-zero. XCopyPlane Plane must have one bit set to 1, and specify an existing plane. XCreateGlyphCursor Source char and mask char must exist in the font. XSetDashes Dash elements must be positive and less than 256. XCreatePixmap Specified width must be non-zero, and depth must be sup- ported. XSetScreenSaver Incorrect timeout value. XStoreColors Specified pixel is not a valid index into the colormap. 4.15 BadWindow Description: A value for a Window does not name a defined Window. ML type-checking should avoid this error. Index A BitmapOpenFailed 97 Above 107, 130 BitmapPad 31 AboveOf 66, 67 BitmapStatus 96, 97 AddPoint 66 BitmapSuccess 97 AllocAll 24, 25 BitmapUnit 32 AllocNone 24, 25 BlackPixel 15, 16 AllocType 24, 141 Blanking 94 AllowExposures 11, 94 Bottom 67, 68 AllPlanes 31, 72 BottomIf 107, 130 Always 35, 100, 102, 103, 105 BottomLeft 67, 68 And 15 BottomRight 67, 68 AnyButton 126 Button1 126, 127 AnyModifier 126 Button1Mask 126, 127, 132 ArcChord 51, 75, 76 Button1MotionMask 54 ArcPieSlice 51, 75, 76 Button2 126, 127 Area 43, 46, 49, 51, 67, 68, 97 Button2Mask 126, 127, 132 Button2MotionMask 54 Button3 126, 127 B Button3Mask 126, 127, 132 BackingStore 35, 100, 102, 105 Button3MotionMask 54 BadAccess 19, 22, 106, 139 Button4 126, 127 BadAlloc 139 Button4Mask 126, 127, 132 BadAtom 139 Button4MotionMask 54 BadColor 139 Button5 126, 127 BadCursor 140 Button5Mask 126, 127, 132 BadDrawable 140 Button5MotionMask 54 BadFont 49, 140 ButtonClick 125, 126, 127 BadGC 140 ButtonClickMask 54 BadIDChoice 140 ButtonMotionMask 54 BadImplementation 140 ButtonName 126 BadLength 140 ButtonPress 54, 125, 126, 127 BadMatch 24, 25, 29, 40, 41, 42, 57, 74, ButtonPressMask 54, 106 75, 76, 78, 83, 84, 89, 97, 100, 101, ButtonRelease 125, 126, 127 106, 107, 112, 141 ButtonReleaseMask 54 BadPixmap 142 ByteOrder 32 BadRequest 142 BadValue 18, 19, 22, 29, 42, 75, 79, 94, 96, 98, 107, 108, 142 C BadWindow 142 CapButt 73, 74, 82 Below 107, 130 CapNotLast 73, 74, 82 BelowOf 66, 67 CapProjecting 73, 74, 82 BitmapBitOrder 31 CapRound 73, 74, 82 BitmapFileInvalid 97 CellsOfScreen 32 BitmapNoMemory 97 CenterGravity 102, 103 143 144 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 CharAscent 59, 60 CWWinGravity 100, 105 CharAttributes 59 CharDescent 59, 60 CharLBearing 59 D CharRBearing 59 Data 87 CharWidth 59, 60 DefaultBlanking 94 CirculateDirection 110, 111 DefaultColormap 22 CirculateNotify 111, 125, 128 DefaultDepth 22, 23 CirculateRequest 54, 111, 125, 128 DefaultExposures 94 ClipByChildren 40, 75, 84 DefaultGC 70 ColormapChangeMask 54 DefaultVisual 34 ColormapExists 33 DeleteRequest 125, 130 ColormapID 33 DestroyNotify 101, 125, 131 ColormapNotify 25, 26, 105, 125, 128 DestructArea 67, 68 Complex 49, 50 DestructRect 67 ConfigureNotify 125, 129 DirectColor 18, 19, 23, 24, 25 ConfigureRequest 54, 108, 111, 112, 125, DisplayCells 23 130 DisplayConnected 34 ControlDown 52, 53 DisplayHeight 34 ControlMask 53, 126, 127, 132 DisplayHeightMM 34 Convex 49, 50 DisplayPlanes 35 CoordMode 45, 46, 49 DisplayString 35 CoordModeOrigin 45, 46, 49, 50 DisplayWidth 34 CoordModePrevious 45, 46, 49, 50 DisplayWidthMM 34 CopyArea 42, 133, 134 DoesBackingStore 35 CopyFromParentClass 99, 100, 102 DoesSaveUnders 36 CopyFromParentDrawable 37, 105, 106 DontAllowExposures 94 CopyFromParentVisual 37, 100 DontCareState 117, 118 CopyPlane 133, 134 DontPreferBlanking 94 CreateNotify 100, 101, 125, 130 DrawableExists 14, 33 CurrentTime 56, 57, 93, 137 DrawableID 33 CursorExists 14, 33 CursorID 33 E CursorShape 39, 40 EastGravity 102, 103 CWBackingPixel 100, 105 EnterNotify 55, 125, 131, 132, 133 CWBackingPlanes 100, 105 EnterWindowMask 54 CWBackingStore 100, 105 EvenOddRule 75, 80 CWBackPixel 100, 105 EventMask 36, 54, 100, 102, 105 CWBackPixmap 100, 105 EventMaskOfScreen 36 CWBitGravity 100, 105 Expose 40, 41, 55, 68, 95, 101, 107, 108, CWBorderPixel 100, 105 109, 111, 112, 113, 125, 132, 133 CWBorderPixmap 100, 105 ExposureMask 54 CWBorderWidth 107 Exposures 94 CWColormap 100, 105 CWCursor 100, 105 CWDontPropagate 100, 105 F CWEventMask 100, 105 FillOpaqueStippled 42, 74, 80 CWOverrideRedirect 100, 105 FillSolid 44, 74, 80 CWPosition 107 FillStippled 74, 80 CWSaveUnder 100, 105 FillTiled 11, 74, 80 CWSibling 107 FocusChangeMask 54 CWSize 107 FocusIn 57, 125, 133 CWStackMode 107 FocusOut 57, 125, 133 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 145 FontDirection 59, 60, 61, 64 GrayScale 18, 23, 24, 25, 27, 29 FontExists 14, 33 GXand 71 FontID 33 GXandInverted 71 FontLeftToRight 61, 62, 65 GXandReverse 71 FontRightToLeft 61, 62, 65 GXclear 71 ForgetGravity 102, 103 GXcopy 41, 44, 71 FSAllCharsExist 59 GXcopyInverted 71 FSAscent 59 GXequiv 71 FSDefaultChar 59 GXinvert 71 FSDescent 59 GXnand 71 FSDirection 59 GXnoop 71 FSFont 59 GXnor 71 FSMaxBounds 59, 60 GXor 71 FSMaxByte1 59 GXorInverted 71 FSMaxChar 59 GXorReverse 71 FSMaxHeight 59, 60 GXset 71 FSMaxWidth 59, 60 GXxor 71 FSMinBounds 59, 60 FSMinByte1 59 FSMinChar 59 H FSMinHeight 59, 60 Height 67, 68 FSMinWidth 59, 60 HorizontallyAbutting 66, 67 G IconicState I 117, 118 GCArcMode 71, 75, 76 IconMaskHint 117, 118 GCBackground 71 IconPixmapHint 117, 118 GCCapStyle 71, 73, 82 IconPositionHint 117, 118 GCClipMask 71 IconWindowHint 117, 118 GCClipOrigin 71 ImageByteOrder 85 GCDashList 71 ImageData 87 GCDashOffset 71 ImageDepth 85 GCExists 14, 33 ImageFormat 86, 87, 88 GCFillRule 71, 75, 79, 80 ImageOrder 31, 32, 85, 87 GCFillStyle 71, 74, 80 ImageSize 85 GCFont 71 InactiveState 117, 118 GCForeground 71 IncludeInferiors 75, 84 GCFunction 71, 81, 83 IncludePoint 69 GCGraphicsExposures 71 InputFocus 37 GCID 33 InputHint 117 GCJoinStyle 71, 73, 82 InputOnlyClass 41, 96, 99, 100, 101, 102, GCLineStyle 71, 73, 82 103, 104, 106, 107, 141 GCLineWidth 71 InputOutputClass 75, 99, 100, 101, 102, GCOrder 77, 78 103, 109 GCPlaneMask 71, 72 Inside 66, 67 GCStipple 71 Intersection 67 GCSubwindowMode 71, 75, 84 IsCursorKey 52 GCTile 71 IsFunctionKey 52 GCTSOrigin 71 IsKeypadKey 52 GraphicsCode 133 IsMiscFunctionKey 52 GraphicsExpose 41, 75, 82, 125, 133, 134 IsModifierKey 52 Gravity 100, 102, 105, 121, 122 IsPFKey 52 GravityNotify 125, 134 IsUnmapped 102, 103 146 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 IsUnviewable 102, 103 NoDrawable 28, 37, 40, 41, 56, IsViewable 102, 103 57, 59, 75, 77, 78, 93, 97, 105, 106, 110, 127, 129, 132 NoExpose 41, 82, 125, 133 J NoFont 28, 37, 48, 49 JoinBevel 73, 82 Nonconvex 49, 50 JoinMiter 11, 73, 82 NormalState 117, 118 JoinRound 73, 82 NorthEastGravity 102, 103, 123 NorthGravity 102, 103 K NorthWestGravity 102, 103, 123 KeymapNotify 125, 134 NoSymbol 53 KeymapStateMask 54 Not 15, 52 KeyPress 125, 126, 127 Nothing 67 KeyPressMask 54 NotifyAncestor 131, 132, 133 KeyRelease 125, 126, 127 NotifyDetail 131, 133 KeyReleaseMask 54 NotifyDetailNone 131, 133 NotifyGrab 131, 132, 133 NotifyInferior 131, 132, 133 L NotifyMode 131, 133 LeaveNotify 55, 125, 131, 132, 133 NotifyNonLinear 131, 132, 133 LeaveWindowMask 54 NotifyNonLinearVirtual 131, 132, 133 Left 67, 68 NotifyNormal 131, 132, 133 LeftOf 66, 67 NotifyPointer 131, 133 LineDoubleDash 73, 74, 82 NotifyPointerRoot 131, 133 LineOnOffDash 73, 74, 82 NotifyUngrab 131, 132, 133 LineSolid 73, 74, 82 NotifyVirtual 131, 132, 133 LockMask 126, 127, 132 NotifyWhileGrabbed 131, 133 LowerHighest 111, 112 NotUseful 35, 100, 102, 103 LSBFirst 31, 32, 85, 87 NoVisual 37 NullHandler 55 M MakeRect 68, 69 O MapNotify 109, 125, 135 OffsetRect 69 MapRequest 54, 109, 125, 135 Opposite 107, 130 MapState 102 Or 15 MaxCmapsOfScreen 37 OutsetRect 69 Message 56, 125, 135 Overlap 66, 67 MinCmapsOfScreen 36 OwnerGrabButtonMask 54 Mod1Mask 126, 127, 132 Mod2Mask 126, 127, 132 P Mod3Mask 126, 127, 132 ParentRelative 37, 105, 106, 112 Mod4Mask 126, 127, 132 PAspect 121, 122 Mod5Mask 126, 127, 132 PBaseSize 121, 122 Modifier 52, 53, 109, 126, 131 Pixel 16 MotionNotify 55, 125, 126, 128 Placement 128 MSBFirst 31, 32, 85, 87 PlaceOnBottom 128 PlaceOnTop 128 N PMaxSize 121, 122 NegativePoint 69 PMinSize 121, 122 NoColormap 25, 37, 102, 103, 129 PointerMotionHintMask 54 NoCursor 29, 30, 37, 106 PointerMotionMask 54 PointerRoot 37, 56, 57, 118 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 147 PointerWindow 37 ScreenSaverActive 94, 95 PolyShape 49 ScreenSaverReset 94, 95 PPosition 121, 122 Section 67 PreferBlanking 94 SelectionClear 93, 125, 136 PResizeInc 121, 122 SelectionNotify 93, 125, 137 PropertyArc 91 SelectionRequest 93, 125, 137 PropertyAtom 91 ServerVendor 38 PropertyBitmap 91 ShapeClass 39 PropertyChangeMask 54 ShiftDown 52, 53 PropertyColormap 91 ShiftMask 53, 126, 127, 132 PropertyCursor 91 SouthEastGravity 102, 103, 123 PropertyDrawable 91 SouthGravity 102, 103 PropertyFont 91 SouthWestGravity 102, 103, 123 PropertyInteger 91 SplitRect 68, 69 PropertyPixmap 91 StackMode 107, 130 PropertyPoint 91 StateHint 117, 118 PropertyRectangle 91 StaticColor 23, 24, 25 PropertyRGBColormap 91 StaticGravity 102, 103 PropertyString 91 StaticGray 23, 24, 25, 29 PropertyValue 91 StippleShape 39, 40 PropertyVisual 91 StructureNotifyMask 54, 128, 129, 131, 134, PropertyWindow 91 135, 136, 138 PropertyWMHints 91 SubstructureNotifyMask 54, 128, 129, 131, PropertyWMIconSizes 91 134, 135, 136, 138 PropertyWMSizeHints 91 SubstructureRedirectMask 54, 106, 108, ProtocolRevision 37, 38 109, 111, 112 ProtocolVersion 38 SubtractPoint 66 PseudoColor 18, 19, 23, 24, 25 PSize 121, 122 PSPerChar 59, 60 T PWinGravity 121, 122 TileShape 39, 40 Top 67, 68 TopIf 107, 130 R TopLeft 67, 68 RaiseLowest 111, 112 TopRight 67, 68 Rect 51, 67, 68 TrueColor 23, 24, 25 Reflect 70 ReparentNotify 112, 125, 135 ResizeRedirectMask 54, 106 U ResizeRequest 54, 125, 136 Union 67 RevertCode 56 UnmapGravity 102, 103, 138 RevertToNone 56, 57 UnmapNotify 113, 125, 133, 137 RevertToParent 56, 57 Unsorted 78 RevertToPointerRoot 56, 57 RGB_COLOR_MAP 27, 28 V RGB_DEFAULT_MAP 27, 28 VendorRelease 39 Right 67, 68 VerticallyAbutting 66, 67 RightOf 66, 67 Visibility 138 RootWindow 38 VisibilityChangeMask 54 VisibilityNotify 125, 133, 138 S VisibilityObscured 138 SameDrawable 33 VisibilityPartiallyObscured 138 SaveMode 94 VisibilityUnobscured 138 148 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 VisualBlueMask 86 XConfigureWindow 106, 107, 141 VisualClass 23, 24 XConvertSelection 92, 93, 137 VisualExists 33 XCopyArea 41, 75, 82, 134, 141 VisualGreenMask 86 XCopyColormapAndFree 24, 25 VisualID 33 XCopyPlane41, 42, 75, 82, 96, 134, 141, 142 VisualRedMask 86 XCreateBitmapFromData 96, 97 XCreateColormap 24, 25, 27, 141 W XCreateFontCursorXCreateGC 28 71, 76,* * 78 WestGravity 102, 103 XCreateGlyphCursor 28, 29, 142 WhenMapped 35, 100, 102, 103, 105 XCreateImage 86, 87 WhitePixel 15, 16 XCreatePixmap 95, 96, 142 Width 67, 68 XCreatePixmapCursor 28, 29, 141 WindingRule 75, 80 XCreatePixmapFromBitmapData 96, 97, WindowClass 99, 100, 102 141 Within 66, 67 XCreateSimpleWindow 26, 99, 101 WM_CLASS 115, 120 XCreateWindow 25, 26, 99, 100 WM_CLIENT_MACHINE 92, 115, 120 XDefineCursor 29, 30, 100 WM_COLORMAP_WINDOWS 116 XDeleteProperty 90 WM_COMMAND 92, 117, 120 XDestroySubwindows 101 WM_HINTS 118, 120 XDestroyWindow 13, 101 WM_ICON_NAME 92, 119, 120 XDrawArc 42, 43 WM_NAME 92, 119, 120 XDrawArcs 42, 43 WM_NORMAL_HINTS 120, 122, 123 XDrawImageString 44, 48 WM_SIZE_HINTS 121, 122 XDrawImageString16 44 WM_TRANSIENT_FOR 114 XDrawLine 45 XDrawLines 11, 45 X XDrawPoint 46 XActivateScreenSaver 94, 95 XDrawPoints 46 XAddPixel 86, 88 XDrawRectangle 46, 47 XAllocColor 17, 18, 19, 20, 25 XDrawRectangles 46, 47 XAllocColorCells 17, 18, 19, 25, 142 XDrawSegments 45 XAllocColorPlanes 17, 18, 19, 25, 27, 142 XDrawString 47, 48 XAllocNamedColor 17, 18, 19, 20, 25 XDrawString16 47 XArc 42, 43, 49, 91 XDrawText 48, 49 XAutoRepeatOff 98 XDrawText16 48, 49 XAutoRepeatOn 98 XEvent 55, 56, 125 XA_PIXMAP 137 XFillArc 49, 51 XA_PRIMARY 11, 93, 137 XFillArcs 49, 51, 75 XA_SECONDARY 93 XFillPolygon 49, 50, 75 XA_STRING 11, 117 XFillRectangle 49, 50 XA_WINDOW 116 XFillRectangles 49, 50 XBell 98, 142 XFlush 57, 58 XChangeGC 71, 76, 78, 141 XFontStruct 48, 59, 60, 61, 62, 63, 64, 65, XChangeWindowAttributes 25, 26, 104, 105 66 XCharStruct 59, 60, 61, 62, 63, 64, 65 XForceScreenSaver 94, 95 XCirculateSubwindows 110, 111, 112 XFreeColormap 13, 24, 25, 129 XCirculateSubwindowsDown 110, 111, 112 XFreeColors 13, 17, 19, 25, 139, 142 XCirculateSubwindowsUp 110, 111 XFreeCursor 13, 30 XClearArea 40, 41, 141 XFreeFont 29, 61, 64 XClearWindow 40, 41, 105, 141 XFreeGC 13, 71, 76 XColor 13, 16, 17, 18, 19, 20, 21, 22, 24, 28, XFreePixmap 13, 95, 96, 97 29, 30 XGCValue 71 cOAbstract Hardware Ltd 1991,1994 X Reference 1.1 149 XGetAtomName 90, 91 XQueryBestStipple 39, 40 XGetDefault 20, 98, 99 XQueryBestTile 39, 40 XGetFontPath 64 XQueryColor 19, 20 XGetGeometry 101, 102, 104 XQueryColors 19, 20 XGetIconSizes 113, 114 XQueryFont 61, 63 XGetImage 88, 89, 141 XQueryKeymap 98 XGetInputFocus 56, 57 XQueryPointer 109, 110 XGetPixel 86, 88 XQueryTree 104, 110 XGetRGBColormaps 26, 28 XRaiseWindow 110, 111 XGetScreenSaver 94, 95 XReadBitmapFile 96, 97 XGetSelectionOwner 92, 93 XRecolorCursor 29, 30 XGetSubImage 88, 89, 141 XReparentWindow 112, 141 XGetTextProperty 91, 92, 115, 119 XResetScreenSaver 94, 95 XGetTransientForHint 114 XResizeWindow 106, 108, 142 XGetWindowAttributes 101, 102, 104 XRestackWindows 110, 111, 112, 141 XGetWindowBorderWidth 104 XSelectInput 54, 139 XGetWindowChildren 104 XSendSelectionNotify 92, 93, 94 XGetWindowDepth 104 XSetArcMode 76 XGetWindowParent 104 XSetBackground 76 XGetWindowPosition 104 XSetClipMask 77, 78 XGetWindowRoot 104 XSetClipOrigin 77 XGetWindowSize 104 XSetClipRectangles 75, 76, 77, 78, 141 XGetWMClass 114, 115 XSetColours 78 XGetWMClientMachine 115 XSetDashes 75, 76, 79, 142 XGetWMColormapWindows 116 XSetFillRule 79, 80 XGetWMCommand 116, 117 XSetFillStyle 80 XGetWMHints 117, 118 XSetFont 80 XGetWMIconName 118, 119 XSetFontPath 61, 64 XGetWMName 119 XSetForeground 81 XGetWMNormalHints 121, 122 XSetFunction 81 XGetWMSizeHints 121, 122 XSetGraphicsExposures 81, 82 XImage 85, 86, 87, 88, 89 XSetHandler 52, 55, 56, 135 XInstallColormap 25, 26, 105 XSetIconSizes 113, 114 XInternAtom 90, 91 XSetInputFocus 56, 57, 141 XListFonts 60, 61 XSetLineAttributes 82 XListFontsWithInfo 60, 61 XSetPlaneMask 82 XListInstalledColormaps 25, 26 XSetProperty 91, 92, 115, 119 XLoadFont 61, 63 XSetRGBColormaps 26, 27 XLoadQueryFont 11, 61, 63 XSetScreenSaver 94, 95, 142 XLookupColor 19, 20 XSetSelectionOwner 92, 93, 136, 137 XLookupString 53 XSetState 83 XLowerWindow 110, 111 XSetStipple 83 XMapRaised 108, 109 XSetSubwindowMode 84 XMapSubwindows 108, 109 XSetTile 84 XMapWindow 100, 108, 109 XSetTransientForHint 114 XMoveResizeWindow 106, 108 XSetTSOrigin 85 XMoveWindow 106, 107 XSetWindowAttributes 99, 100, 104, 105 Xor 15 XSetWindowBackground 104, 105, 106 XParseColor 20 XSetWindowBackgroundPixmap 104, 105, XPutImage 88, 89, 97, 141 106 XPutPixel 86, 88 XSetWindowBorder 104, 105, 106 XQueryBestCursor 39, 40 XSetWindowBorderPixmap 104, 105, 106 XQueryBestSize 39, 40 XSetWindowBorderWidth 106, 108 150 X Reference 1.1 Oc Abstract Hardware Ltd 1991,1994 XSetWindowColormap 11, 24, 25, 26, 141 XSetWMClass 114, 115, 120 XSetWMClientMachine 115 XSetWMColormapWindows 116 XSetWMCommand 116, 117, 120 XSetWMHints 114, 117, 118, 120 XSetWMIconName 118, 119, 120 XSetWMName 119, 120 XSetWMNormalHints 120, 121, 122 XSetWMProperties 119, 120 XSetWMSizeHints 121 XStandardColormap 26, 27, 91 XStoreColor 19, 20, 21, 22 XStoreColors 19, 21, 22, 139, 142 XStoreNamedColor 19, 21, 22, 139 XSubImage 86, 88 XSync 57, 58 XSyncronise 58 XTextExtents 44, 64, 65 XTextExtents16 64, 65 XTextItem 48 XTextItem16 48, 49 XTextWidth 65, 66 XTextWidth16 65, 66 XTranslateCoordinates 58, 59 XUndefineCursor 29, 30 XUninstallColormap 25, 26 XUnloadFont 13, 61, 63, 64 XUnmapSubwindows 113 XUnmapWindow 113 XWindowAttributes 101, 102, 104 XWindowChanges 106, 107 XWindows 18, 19, 20, 21, 26, 33, 34, 51, 52, 61, 63, 64, 88, 89, 91, 92, 99, 100, 101, 104, 110, 114, 116, 117, 119 XWMGeometry 122, 123 XWMHint 91, 117, 119, 120 XWMSizeHint 91, 119, 120, 121, 122, 123 XWMStateHint 117 XWriteBitmapFile 96, 97 XYBitmap 87, 88, 89, 141 XYPixmap 87, 88, 89, 141 Y YSorted 78 YXBanded 78 YXSorted 78 Z ZoomState 117, 118 ZPixmap 87, 88, 89, 141 polyml-5.7.1/documentation/Winref/0000755000175000017500000000000013204034553016102 5ustar daviddavidpolyml-5.7.1/documentation/Winref/Clipping.html0000644000175000017500000000223013204034553020532 0ustar daviddavid Windows Interface Reference: Clipping structure

Clipping

The Clipping structure contains functions and structures to create and manipulate clipping regions.

structure Clipping :
  sig
    type HDC and HRGN
    type RECT = { top: int, left: int, bottom: int, right: int }
    type RegionOperation = Region.RegionOperation
    type ResultRegion = Region.ResultRegion

    val ExcludeClipRect : HDC * RECT -> ResultRegion
    val ExtSelectClipRgn : HDC * HRGN * RegionOperation -> ResultRegion
    val GetClipBox : HDC -> ResultRegion * RECT
    val GetClipRgn : HDC * HRGN -> unit
    val GetMetaRgn : HDC * HRGN -> unit
    val IntersectClipRect : HDC * RECT -> ResultRegion
    val OffsetClipRgn : HDC * int * int -> ResultRegion
    val PtVisible : HDC * int * int * bool -> bool
    val RectVisible : HDC * RECT -> bool
    val SelectClipPath : HDC * RegionOperation -> unit
    val SelectClipRgn : HDC * HRGN -> unit
    val SetMetaRgn : HDC -> unit
  end
polyml-5.7.1/documentation/Winref/Static.html0000644000175000017500000000460513204034553020224 0ustar daviddavid Windows Interface Reference: Static structure

Static

The Static structure contains styles and notifications for Static windows.  A static control is often used as part of a dialogue box to display text labels or icons.   They can also be used to display pictures.  The values from the Notification substructure are sent as the code parameter in a WM_NOTIFY message.  Specialised button messages begin with STM_.

structure Static:
sig
    structure Style:
        sig
        include BIT_FLAGS where type flags = Window.Style.flags
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and SS_LEFT: flags and SS_CENTER: flags and SS_RIGHT: flags and SS_ICON: flags
        and SS_BLACKRECT: flags and SS_GRAYRECT: flags and SS_WHITERECT: flags
        and SS_BLACKFRAME: flags and SS_GRAYFRAME: flags and SS_WHITEFRAME: flags
        and SS_USERITEM: flags and SS_SIMPLE: flags and SS_LEFTNOWORDWRAP: flags
        and SS_OWNERDRAW: flags and SS_BITMAP: flags and SS_ENHMETAFILE: flags
        and SS_ETCHEDHORZ: flags and SS_ETCHEDVERT: flags and SS_ETCHEDFRAME: flags
        and SS_TYPEMASK: flags and SS_NOPREFIX: flags and SS_NOTIFY: flags and SS_CENTERIMAGE: flags
        and SS_RIGHTJUST: flags and SS_REALSIZEIMAGE: flags and SS_SUNKEN: flags
        and SS_ENDELLIPSIS: flags and SS_PATHELLIPSIS: flags and SS_WORDELLIPSIS: flags
        and SS_ELLIPSISMASK: flags
        end

    structure Notifications:
    sig
        val STN_CLICKED: int
        val STN_DBLCLK: int
        val STN_ENABLE: int
        val STN_DISABLE: int
    end
end
polyml-5.7.1/documentation/Winref/Color.html0000644000175000017500000000337613204034553020057 0ustar daviddavid Windows Interface Reference: Color structure

Color

The Color structure contains functions to manipulate colours and palettes.

structure Color:
  sig
    type HPALETTE and HDC

    datatype
      PaletteEntryFlag = PC_EXPLICIT | PC_NOCOLLAPSE | PC_NULL | PC_RESERVED
    type PALETTEENTRY = {red: int, green: int, blue: int, flags: PaletteEntryFlag}

    type COLORREF
    val toRGB :
       COLORREF -> {red: Int.int, blue: Int.int, green: Int.int}
    val RGB : {red: int, blue: int, green: int} -> COLORREF
    val PALETTERGB : {red: int, blue: int, green: int} -> COLORREF

    type SystemPaletteUse
    val SYSPAL_ERROR : SystemPaletteUse
    val SYSPAL_NOSTATIC : SystemPaletteUse
    val SYSPAL_STATIC : SystemPaletteUse

    val AnimatePalette : HPALETTE * int * PALETTEENTRY list -> bool
    val CreateHalftonePalette : HDC -> HPALETTE
    val CreatePalette : PALETTEENTRY list -> HPALETTE
    val GetNearestColor : HDC * COLORREF -> COLORREF
    val GetNearestPaletteIndex : HPALETTE * COLORREF -> int
    val GetPaletteEntries : HPALETTE * int * int -> PALETTEENTRY list
    val GetSystemPaletteEntries : HPALETTE * int * int -> PALETTEENTRY list
    val GetSystemPaletteUse : HDC -> SystemPaletteUse
    val RealizePalette : HDC -> int
    val ResizePalette : HPALETTE * int -> unit
    val SelectPalette : HDC * HPALETTE * bool -> HPALETTE
    val SetPaletteEntries : HPALETTE * int * PALETTEENTRY list -> unit
    val SetSystemPaletteUse : HDC * SystemPaletteUse -> SystemPaletteUse
    val UnrealizeObject : HPALETTE -> unit
    val UpdateColors : HDC -> unit
  end
polyml-5.7.1/documentation/Winref/Globals.html0000644000175000017500000000423613204034553020360 0ustar daviddavid Windows Interface Reference: Globals structure

Globals

The Globals structure contains various functions to operate on handles, functions to obtain handles to the Poly/ML application and window and a function to get error information.

structure Globals :
  sig
    type 'a HANDLE
    type HINSTANCE
    type HWND
    val hNull : 'a HANDLE
    val handleOfInt : int -> 'a HANDLE
    val intOfHandle : 'a HANDLE -> int
    val isHNull : 'a HANDLE -> bool

    val ApplicationInstance : unit -> HINSTANCE
    val GetLastError : unit -> OS.syserror
    val MainWindow : unit -> HWND
  end

type 'a HANDLE
hNull : 'a HANDLE
handleOfInt(i): 'a HANDLE
intOfHandle(h): int
isHNull(h): bool

ML Extension: All handles, such as HWND and HBITMAP, are instances of the 'a HANDLE type. Generally the Windows functions which can take NULL as a valid argument or return NULL as a valid result take option types.  Occasionally it may be necessary to pass NULL in other circumstances in which case hNull can be used in ML.  There are also a few occasions where a handle has to be cast to or from int.  handleOfInt and intOfHandle can be used for this.

ApplicationInstance(): HINSTANCE
ML Extension: Returns the application instance handle passed in to the WinMain function when Poly/ML was started.

MainWindow(): HWND
ML Extension: Returns the handle to the Poly/ML window.

GetLastError(): OS.syserror
Returns the error code for the last function call.  Generally when a function fails an exception is raised including the last error as part of the exception packet.

polyml-5.7.1/documentation/Winref/Class.html0000644000175000017500000000403313204034553020035 0ustar daviddavid Windows Interface Reference: Class structure

Class

The Class structure contains functions to register custom classes as well as the definitions for the standard Windows classes.

 

structure Class:
sig
    type HWND and Message and HINSTANCE and HBRUSH and HICON and HCURSOR and HGDIOBJ

    datatype LRESULT = LRESINT of int | LRESHANDLE of HGDIOBJ

    datatype 'a ATOM =
        Registered of {proc: HWND * Message * 'a -> LRESULT option * 'a, className: string}
      | SystemClass of string

    val Button : unit ATOM
    val ComboBox : unit ATOM
    val ComboLBox : unit ATOM
    val DDEMLEvent : unit ATOM
    val Edit : unit ATOM
    val ListBox : unit ATOM
    val MDIClient : unit ATOM
    val ScrollBar : unit ATOM
    val Static : unit ATOM

    structure Style :
      sig
	include BIT_FLAGS

        val CS_BYTEALIGNCLIENT : flags
        val CS_BYTEALIGNWINDOW : flags
        val CS_CLASSDC : flags
        val CS_DBLCLKS : flags
        val CS_GLOBALCLASS : flags
        val CS_HREDRAW : flags
        val CS_KEYCVTWINDOW : flags
        val CS_NOCLOSE : flags
        val CS_NOKEYCVT : flags
        val CS_OWNDC : flags
        val CS_PARENTDC : flags
        val CS_SAVEBITS : flags
        val CS_VREDRAW : flags
      end

    type 'a WNDCLASSEX =
        {style: Style.flags, 
         wndProc: HWND * Message * 'a -> LRESULT option * 'a,
         hInstance: HINSTANCE,
         hIcon: HICON option,
         hCursor: HCURSOR option,
         hbrBackGround: HBRUSH option,
         menuName: Resource.RESID option,
         className: string,
         hIconSm: HICON option}

    val RegisterClassEx : 'a WNDCLASSEX -> 'a ATOM

    val UnregisterClass : string * HINSTANCE -> unit
    val GetClassName : HWND -> string
    val GetClassInfoEx: HINSTANCE * string -> 'a WNDCLASSEX
  end
polyml-5.7.1/documentation/Winref/Clipboard.html0000644000175000017500000000655613204034553020703 0ustar daviddavid Windows Interface Reference: Clipboard structure

Clipboard

The clipboard is used as a way of copying data within an application or between applications.

structure Clipboard :
  sig
    datatype ClipboardFormat =
        CF_NONE | CF_TEXT | CF_BITMAP | CF_METAFILEPICT | CF_SYLK | CF_DIF | CF_TIFF |
        CF_OEMTEXT | CF_DIB | CF_PALETTE | CF_PENDATA | CF_RIFF | CF_WAVE | CF_UNICODETEXT |
        CF_ENHMETAFILE | CF_OWNERDISPLAY | CF_DSPTEXT | CF_DSPBITMAP | CF_DSPMETAFILEPICT |
        CF_DSPENHMETAFILE | CF_PRIVATE of int | CF_GDIOBJ of int | CF_REGISTERED of int |
        CF_HDROP | CF_LOCALE

    type HBITMAP and HPALETTE and HWND and HDROP

    datatype CLIPHANDLE =
        CH_NONE |
        CH_TEXT of string |
        CH_BITMAP of HBITMAP |
        CH_METAFILEPICT of Metafile.METAFILEPICT |
        CH_SYLK of Word8Vector.vector |
        CH_DIF of Word8Vector.vector |
        CH_TIFF of Word8Vector.vector |
        CH_OEMTEXT of string |
        CH_DIB of Word8Vector.vector |
        CH_PALETTE of HPALETTE |
        CH_PENDATA of Word8Vector.vector |
        CH_RIFF of Word8Vector.vector |
        CH_WAVE of Word8Vector.vector |
        CH_UNICODETEXT of Word8Vector.vector |
        CH_ENHMETAFILE of Metafile.HENHMETAFILE |
        CH_OWNERDISPLAY of Word8Vector.vector |
        CH_DSPTEXT of Word8Vector.vector |
        CH_DSPBITMAP of Word8Vector.vector |
        CH_DSPMETAFILEPICT of Word8Vector.vector |
        CH_DSPENHMETAFILE of Word8Vector.vector |
        CH_PRIVATE of int * Word8Vector.vector |
        CH_GDIOBJ of int * Word8Vector.vector |
        CH_REGISTERED of int * Word8Vector.vector |
        CH_HDROP of HDROP |
        CH_LOCALE of Word8Vector.vector

    val ChangeClipboardChain : HWND * HWND -> bool
    val CloseClipboard : unit -> unit
    val CountClipboardFormats : unit -> int
    val EmptyClipboard : unit -> unit
    val EnumClipboardFormats : ClipboardFormat -> ClipboardFormat
    val GetClipboardData : ClipboardFormat -> CLIPHANDLE
    val GetClipboardFormatName : ClipboardFormat -> string
    val GetClipboardOwner : unit -> HWND
    val GetClipboardViewer : unit -> HWND
    val GetOpenClipboardWindow : unit -> HWND
    val GetPriorityClipboardFormat : ClipboardFormat list -> ClipboardFormat option
    val IsClipboardFormatAvailable : ClipboardFormat -> bool
    val OpenClipboard : HWND option -> unit
    val RegisterClipboardFormat : string -> ClipboardFormat
    val SetClipboardData : CLIPHANDLE -> unit
    val SetClipboardViewer : HWND -> HWND
  end

datatype ClipboardFormat
represents the various kinds of information which can be stored on the clipboard.  As well as the formats defined in Windows the ML interface defines four extra formats.   CF_NONE is used when no format is specified.  CF_PRIVATE, CF_GDIOBJ and CF_REGISTERED are used for clipboard formats in the private range, GDI object range and registered format range. 

datatype CLIPHANDLE
is used when extracting information from the clipboard or setting the clipboard contents.

 

polyml-5.7.1/documentation/Winref/Caret.html0000644000175000017500000000202413204034553020024 0ustar daviddavid Windows Interface Reference: Caret structure

Caret

The Caret structure contains functions to create and manipulate the caret.  The caret is typically used in edit controls to mark the point where new characters will be inserted.  Usually it is a vertical bar which blinks on and off.

structure Caret :
  sig
    type HWND and HBITMAP
    type POINT = { x: int, y: int }
    datatype
      caretShape =
          CaretBitmap of HBITMAP
        | CaretBlack of {width: int, height: int}
        | CaretGrey of {width: int, height: int}
    val CreateCaret : HWND * caretShape -> unit
    val DestroyCaret : unit -> unit
    val GetCaretBlinkTime : unit -> Time.time
    val GetCaretPos : unit -> POINT
    val HideCaret : HWND -> unit
    val SetCaretBlinkTime : Time.time -> unit
    val SetCaretPos : POINT -> unit
    val ShowCaret : HWND -> bool
  end
polyml-5.7.1/documentation/Winref/Painting.html0000644000175000017500000000375513204034553020553 0ustar daviddavid Windows Interface Reference: Painting structure

Painting and Drawing

The Painting structure contains functions to control painting and drawing to a window or device context.

structure Painting :
  sig
  	type HWND and HDC and COLORREF and HRGN

    type RECT = { top: int, left: int, bottom: int, right: int }

    type BinaryRasterOperation
    val R2_BLACK : BinaryRasterOperation
    val R2_COPYPEN : BinaryRasterOperation
    val R2_MASKNOTPEN : BinaryRasterOperation
    val R2_MASKPEN : BinaryRasterOperation
    val R2_MASKPENNOT : BinaryRasterOperation
    val R2_MERGENOTPEN : BinaryRasterOperation
    val R2_MERGEPEN : BinaryRasterOperation
    val R2_MERGEPENNOT : BinaryRasterOperation
    val R2_NOP : BinaryRasterOperation
    val R2_NOT : BinaryRasterOperation
    val R2_NOTCOPYPEN : BinaryRasterOperation
    val R2_NOTMASKPEN : BinaryRasterOperation
    val R2_NOTMERGEPEN : BinaryRasterOperation
    val R2_NOTXORPEN : BinaryRasterOperation
    val R2_WHITE : BinaryRasterOperation
    val R2_XORPEN : BinaryRasterOperation

	type PAINTSTRUCT =
		{ hdc: HDC, erase: bool, paint: RECT, private: Word8Vector.vector }

    val BeginPaint : HWND -> HDC * PAINTSTRUCT
    val EndPaint : HWND * PAINTSTRUCT -> unit
    val GdiFlush : unit -> unit
    val GdiGetBatchLimit : unit -> int
    val GdiSetBatchLimit : int -> int
    val GetBkColor : HDC -> COLORREF
    val GetROP2 : HDC -> BinaryRasterOperation
    val GetUpdateRect : HWND * bool -> RECT option
    val GetUpdateRgn : HWND * HRGN * bool -> Region.ResultRegion
    val GetWindowDC : HWND -> HDC
    val InvalidateRgn : HWND * HRGN * bool -> unit
    val SetBkColor : HDC * COLORREF -> COLORREF
    val SetROP2 : HDC * BinaryRasterOperation -> BinaryRasterOperation
    val WindowFromDC : HDC -> HWND
  end
polyml-5.7.1/documentation/Winref/Cursor.html0000644000175000017500000000266113204034553020252 0ustar daviddavid Windows Interface Reference: Cursor structure

Cursor

The Cursor structure contains functions and structures to create and operate on cursors.

structure Cursor:
  sig
    type HCURSOR and HINSTANCE
    type POINT = { x : int, y: int }
    type RECT =  { left: int, top: int, right: int, bottom: int }
    val hcursorNull : HCURSOR
    val isHcursorNull : HCURSOR -> bool

    datatype
      CursorId =
          OCR_APPSTARTING
        | OCR_CROSS
        | OCR_IBEAM
        | OCR_NO
        | OCR_NORMAL
        | OCR_SIZEALL
        | OCR_SIZENESW
        | OCR_SIZENS
        | OCR_SIZENWSE
        | OCR_SIZEWE
        | OCR_UP
        | OCR_WAIT

    val ClipCursor : RECT -> unit
    val CopyCursor : HCURSOR -> HCURSOR
    val DestroyCursor : HCURSOR -> unit
    val GetClipCursor : unit -> RECT
    val GetCursor : unit -> HCURSOR
    val GetCursorPos : unit -> POINT
    val LoadCursor : HINSTANCE * Resource.RESID -> HCURSOR
    val LoadCursorFromFile : string -> HCURSOR
    val LoadSystemCursor : CursorId -> HCURSOR
    val LoadSystemCursorFromFile : CursorId -> HCURSOR
    val SetCursor : HCURSOR -> HCURSOR
    val SetCursorPos : int * int -> unit
    val SetSytemCursor : HCURSOR * CursorId -> unit
    val ShowCursor : bool -> int
  end
polyml-5.7.1/documentation/Winref/Shape.html0000644000175000017500000000153713204034553020036 0ustar daviddavid Windows Interface Reference: Shape structure

Shape

The Shape structure contains functions to draw various shapes.

structure Shape:
  sig
    type HBRUSH
    type HDC
    type POINT = { x: int, y: int }
    type RECT = { top: int, left: int, bottom: int, right: int }

    val Chord : HDC * RECT * POINT * POINT -> unit
    val Ellipse : HDC * RECT -> unit
    val FillRect : HDC * RECT * HBRUSH -> unit
    val FrameRect : HDC * RECT * HBRUSH -> unit
    val InvertRect : HDC * RECT -> unit
    val Pie : HDC * RECT * POINT * POINT -> unit
    val Polygon : HDC * POINT list -> unit
    val Rectangle : HDC * RECT -> unit
    val RoundRect : HDC * RECT * int * int -> unit
  end
polyml-5.7.1/documentation/Winref/Pen.html0000644000175000017500000000202313204034553017507 0ustar daviddavid Windows Interface Reference: Pen structure

Pen

The Pen structure contains functions and structures to create pens.

structure Pen :
  sig
    type HPEN 
    datatype
      PenStyle =
          PS_ALTERNATE
        | PS_COSMETIC
        | PS_DASH
        | PS_DASHDOT
        | PS_DASHDOTDOT
        | PS_DOT
        | PS_ENDCAP_FLAT
        | PS_ENDCAP_ROUND
        | PS_ENDCAP_SQUARE
        | PS_GEOMETRIC
        | PS_INSIDEFRAME
        | PS_JOIN_BEVEL
        | PS_JOIN_MITER
        | PS_JOIN_ROUND
        | PS_NULL
        | PS_SOLID
        | PS_USERSTYLE

    type COLORREF = Color.COLORREF
    type LOGBRUSH = Brush.LOGBRUSH
    type LOGPEN = PenStyle * int option * COLORREF

    val CreatePen : PenStyle list * int * COLORREF -> HPEN
    val CreatePenIndirect : LOGPEN -> HPEN
    val ExtCreatePen : PenStyle list * int * LOGBRUSH * (int * int) list -> HPEN
  end
polyml-5.7.1/documentation/Winref/ListBox.html0000644000175000017500000000340713204034553020360 0ustar daviddavid Windows Interface Reference: ListBox structure

ListBox

The ListBox structure contains styles and flags used in messages to list boxes.

structure Listbox:
sig
	structure Style:
	sig
		include BIT_FLAGS where type flags = Window.Style.flags
	    val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
		and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
		and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
		and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
		and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
		and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
		and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
		and WS_POPUPWINDOW: flags and WS_CHILDWINDOW: flags
		and LBS_NOTIFY: flags and LBS_SORT: flags and LBS_NOREDRAW: flags and LBS_MULTIPLESEL: flags
	    and LBS_OWNERDRAWFIXED: flags and LBS_OWNERDRAWVARIABLE: flags and LBS_HASSTRINGS: flags
	    and LBS_USETABSTOPS: flags and LBS_NOINTEGRALHEIGHT: flags and LBS_MULTICOLUMN: flags
	    and LBS_WANTKEYBOARDINPUT: flags and LBS_EXTENDEDSEL: flags and LBS_DISABLENOSCROLL: flags
	    and LBS_NODATA: flags and LBS_NOSEL: flags and LBS_STANDARD: flags
	end

	structure Notifications:
	sig
		val LBN_SELCHANGE: int
		val LBN_DBLCLK: int
		val LBN_SELCANCEL: int
		val LBN_SETFOCUS: int
		val LBN_KILLFOCUS: int
	end

	datatype LBDirAttr =
		DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY |
		DDL_ARCHIVE | DDL_POSTMSGS | DDL_DRIVES | DDL_EXCLUSIVE
end
polyml-5.7.1/documentation/Winref/MessageBox.html0000644000175000017500000000352213204034553021027 0ustar daviddavid Windows Interface Reference: MessageBox structure

MessageBox

The MessageBox structure contains functions and structures to create and operate on message boxes.

structure MessageBox :
sig
    type HWND

    val IDABORT : int
    val IDCANCEL : int
    val IDCLOSE : int
    val IDHELP : int
    val IDIGNORE : int
    val IDNO : int
    val IDOK : int
    val IDRETRY : int
    val IDYES : int

    structure MessageBoxStyle :
      sig
        include BIT_FLAGS
        val MB_ABORTRETRYIGNORE : flags
        val MB_APPLMODAL : flags
        val MB_DEFAULT_DESKTOP_ONLY : flags
        val MB_DEFBUTTON1 : flags
        val MB_DEFBUTTON2 : flags
        val MB_DEFBUTTON3 : flags
        val MB_DEFBUTTON4 : flags
        val MB_HELP : flags
        val MB_ICONASTERISK : flags
        val MB_ICONERROR : flags
        val MB_ICONEXCLAMATION : flags
        val MB_ICONHAND : flags
        val MB_ICONINFORMATION : flags
        val MB_ICONQUESTION : flags
        val MB_ICONSTOP : flags
        val MB_ICONWARNING : flags
        val MB_NOFOCUS : flags
        val MB_OK : flags
        val MB_OKCANCEL : flags
        val MB_RETRYCANCEL : flags
        val MB_RIGHT : flags
        val MB_RTLREADING : flags
        val MB_SERVICE_NOTIFICATION : flags
        val MB_SERVICE_NOTIFICATION_NT3X : flags
        val MB_SETFOREGROUND : flags
        val MB_SYSTEMMODAL : flags
        val MB_TASKMODAL : flags
        val MB_TOPMOST : flags
        val MB_USERICON : flags
        val MB_YESNO : flags
        val MB_YESNOCANCEL : flags
      end

    val MessageBox : HWND option * string * string * MessageBoxStyle.flags -> int
    val MessageBeep: MessageBoxStyle.flags -> unit

end
polyml-5.7.1/documentation/Winref/Icon.html0000644000175000017500000000166113204034553017664 0ustar daviddavid Windows Interface Reference: Icon structure

Icon

The Icon structure contains functions and structures to create and operate on icons.

structure Icon:
  sig
    type HICON and HINSTANCE and HDC
    val CopyIcon : HICON -> HICON
    val DestroyIcon : HICON -> unit
    val DrawIcon : HDC * int * int * HICON -> unit
    val ExtractIcon : HINSTANCE * string * int -> HICON
    val IDI_APPLICATION : Resource.RESID
    val IDI_ASTERISK : Resource.RESID
    val IDI_ERROR : Resource.RESID
    val IDI_EXCLAMATION : Resource.RESID
    val IDI_HAND : Resource.RESID
    val IDI_INFORMATION : Resource.RESID
    val IDI_QUESTION : Resource.RESID
    val IDI_WARNING : Resource.RESID
    val IDI_WINLOGO : Resource.RESID
    val LoadIcon : HINSTANCE * Resource.RESID -> HICON
  end
polyml-5.7.1/documentation/Winref/WinSystem.html0000644000175000017500000000654213204034553020741 0ustar daviddavid Windows Interface Reference: WinSystem structure

WinSystem

The WinSystem structure contains functions that obtain system information.    This is quite limited because the Windows structure in the standard basis library provides much of the information in this category.

structure WinSystem :
  sig
    type SystemMetrics
    val SM_ARRANGE : SystemMetrics
    val SM_CLEANBOOT : SystemMetrics
    val SM_CMOUSEBUTTONS : SystemMetrics
    val SM_CXBORDER : SystemMetrics
    val SM_CXCURSOR : SystemMetrics
    val SM_CXDLGFRAME : SystemMetrics
    val SM_CXDOUBLECLK : SystemMetrics
    val SM_CXDRAG : SystemMetrics
    val SM_CXEDGE : SystemMetrics
    val SM_CXFIXEDFRAME : SystemMetrics
    val SM_CXFRAME : SystemMetrics
    val SM_CXFULLSCREEN : SystemMetrics
    val SM_CXHSCROLL : SystemMetrics
    val SM_CXHTHUMB : SystemMetrics
    val SM_CXICON : SystemMetrics
    val SM_CXICONSPACING : SystemMetrics
    val SM_CXMAXIMIZED : SystemMetrics
    val SM_CXMAXTRACK : SystemMetrics
    val SM_CXMENUCHECK : SystemMetrics
    val SM_CXMENUSIZE : SystemMetrics
    val SM_CXMIN : SystemMetrics
    val SM_CXMINIMIZED : SystemMetrics
    val SM_CXMINSPACING : SystemMetrics
    val SM_CXMINTRACK : SystemMetrics
    val SM_CXSCREEN : SystemMetrics
    val SM_CXSIZE : SystemMetrics
    val SM_CXSIZEFRAME : SystemMetrics
    val SM_CXSMICON : SystemMetrics
    val SM_CXSMSIZE : SystemMetrics
    val SM_CXVSCROLL : SystemMetrics
    val SM_CYBORDER : SystemMetrics
    val SM_CYCAPTION : SystemMetrics
    val SM_CYCURSOR : SystemMetrics
    val SM_CYDLGFRAME : SystemMetrics
    val SM_CYDOUBLECLK : SystemMetrics
    val SM_CYDRAG : SystemMetrics
    val SM_CYEDGE : SystemMetrics
    val SM_CYFIXEDFRAME : SystemMetrics
    val SM_CYFRAME : SystemMetrics
    val SM_CYFULLSCREEN : SystemMetrics
    val SM_CYHSCROLL : SystemMetrics
    val SM_CYICON : SystemMetrics
    val SM_CYICONSPACING : SystemMetrics
    val SM_CYKANJIWINDOW : SystemMetrics
    val SM_CYMAXIMIZED : SystemMetrics
    val SM_CYMAXTRACK : SystemMetrics
    val SM_CYMENU : SystemMetrics
    val SM_CYMENUCHECK : SystemMetrics
    val SM_CYMENUSIZE : SystemMetrics
    val SM_CYMIN : SystemMetrics
    val SM_CYMINIMIZED : SystemMetrics
    val SM_CYMINSPACING : SystemMetrics
    val SM_CYMINTRACK : SystemMetrics
    val SM_CYSCREEN : SystemMetrics
    val SM_CYSIZE : SystemMetrics
    val SM_CYSIZEFRAME : SystemMetrics
    val SM_CYSMCAPTION : SystemMetrics
    val SM_CYSMICON : SystemMetrics
    val SM_CYSMSIZE : SystemMetrics
    val SM_CYVSCROLL : SystemMetrics
    val SM_CYVTHUMB : SystemMetrics
    val SM_DBCSENABLED : SystemMetrics
    val SM_DEBUG : SystemMetrics
    val SM_MENUDROPALIGNMENT : SystemMetrics
    val SM_MIDEASTENABLED : SystemMetrics
    val SM_MOUSEPRESENT : SystemMetrics
    val SM_MOUSEWHEELPRESENT : SystemMetrics
    val SM_NETWORK : SystemMetrics
    val SM_PENWINDOWS : SystemMetrics
    val SM_RESERVED1 : SystemMetrics
    val SM_RESERVED2 : SystemMetrics
    val SM_RESERVED3 : SystemMetrics
    val SM_RESERVED4 : SystemMetrics
    val SM_SECURE : SystemMetrics
    val SM_SHOWSOUNDS : SystemMetrics
    val SM_SLOWMACHINE : SystemMetrics
    val SM_SWAPBUTTON : SystemMetrics
    val GetSystemMetrics : SystemMetrics -> int
  end
polyml-5.7.1/documentation/Winref/Button.html0000644000175000017500000000510113204034553020240 0ustar daviddavid Windows Interface Reference: Button structure

Button

The Button structure contains the styles, notifications and state values concerned with button controls.  Buttons are windows like any other and can be constructed using CreateWindow although more usually they form part of a dialogue box.  The values from the Notification substructure are sent as the code parameter in a WM_NOTIFY message.  Specialised button messages begin with BM_. The values in the State substructure may be sent or returned in messages such as BM_GETCHECK and BM_SETSTATE.

structure Button:
sig
    structure Style:
    sig
	include BIT_FLAGS where type flags = Window.Style.flags
	val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
	and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
	and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
	and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
	and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
	and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
	and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
	and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and BS_3STATE: flags and BS_AUTO3STATE: flags and BS_AUTOCHECKBOX: flags
	and BS_AUTORADIOBUTTON: flags and BS_BITMAP: flags and BS_BOTTOM: flags
        and BS_CENTER: flags and BS_CHECKBOX: flags and BS_DEFPUSHBUTTON: flags
        and BS_FLAT: flags and BS_GROUPBOX: flags and BS_ICON: flags and BS_LEFT: flags
        and BS_LEFTTEXT: flags and BS_MULTILINE: flags and BS_NOTIFY: flags
        and BS_OWNERDRAW: flags and BS_PUSHBUTTON: flags and BS_PUSHLIKE: flags
        and BS_RADIOBUTTON: flags and BS_RIGHT: flags and BS_RIGHTBUTTON: flags
        and BS_TEXT: flags and BS_TOP: flags and BS_USERBUTTON: flags and BS_VCENTER: flags
    end

    structure Notifications:
    sig
	val BN_CLICKED: int
	val BN_PAINT: int
	val BN_HILITE: int
	val BN_UNHILITE: int
	val BN_DISABLE: int
	val BN_DOUBLECLICKED: int
	val BN_PUSHED: int
	val BN_UNPUSHED: int
	val BN_DBLCLK: int
	val BN_SETFOCUS: int
	val BN_KILLFOCUS: int
    end

    structure State:
    sig
	val BST_UNCHECKED: int
	val BST_CHECKED: int
	val BST_INDETERMINATE: int
	val BST_PUSHED: int
	val BST_FOCUS: int
    end
end
polyml-5.7.1/documentation/Winref/Menu.html0000644000175000017500000000742113204034553017700 0ustar daviddavid Windows Interface Reference: Menu structure

Menu

The Menu structure contains functions and structures to create and operate on menus.

structure Menu:
  sig
    type HMENU and HBITMAP and HWND and HINSTANCE
    type RECT =  { left: int, top: int, right: int, bottom: int }
	
    datatype MenuFlag =
        MF_BYCOMMAND | MF_BYPOSITION | MF_SEPARATOR | MF_ENABLED | MF_GRAYED |
        MF_DISABLED | MF_UNCHECKED | MF_CHECKED | MF_USECHECKBITMAPS | MF_STRING |
        MF_BITMAP | MF_OWNERDRAW | MF_POPUP | MF_MENUBARBREAK | MF_MENUBREAK |
        MF_UNHILITE | MF_HILITE | MF_DEFAULT | MF_SYSMENU | MF_HELP |
        MF_RIGHTJUSTIFY | MF_MOUSESELECT

    datatype MenuIdOrHandle = MenuHandle of HMENU | MenuId of int

    datatype MenuItemOptions =
          MFT_MENUBARBREAK
        | MFT_MENUBREAK
        | MFT_RADIOCHECK
        | MFT_RIGHTJUSTIFY
        | MFT_RIGHTORDER

    datatype MenuItemType =
          MFT_BITMAP of HBITMAP
        | MFT_OWNERDRAW of int
        | MFT_SEPARATOR
        | MFT_STRING of string

    datatype MenuState =
          MFS_CHECKED
        | MFS_DEFAULT
        | MFS_DISABLED
        | MFS_ENABLED
        | MFS_GRAYED
        | MFS_HILITE
        | MFS_UNCHECKED
        | MFS_UNHILITE

    type MenuItemInfo =
        {
            menuType: MenuItemType,
            menuOptions: MenuItemOptions list,
            state: MenuState list,
            wID: int,
            hSubMenu: HMENU option,
            hbmpChecked: HBITMAP option,
            hbmpUnchecked: HBITMAP option,
            itemData: int
        }

    val AppendMenu : HMENU * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit
    val CheckMenuRadioItem : HMENU * int * int * int * MenuFlag -> unit
    val CreateMenu : unit -> HMENU
    val CreatePopupMenu : unit -> HMENU
    val DeleteMenu : HMENU * int * MenuFlag -> unit
    val DestroyMenu : HMENU -> unit
    val DrawMenuBar : HWND -> unit
    val EnableMenuItem : HMENU * int * MenuFlag -> MenuFlag list
    val GetMenu : HWND -> HMENU

    datatype GMDIFlags = GMDI_GOINTOPOPUPS | GMDI_USEDISABLED
    val GetMenuDefaultItem : HMENU * bool * GMDIFlags list -> int

    val GetMenuItemCount : HMENU -> int
    val GetMenuItemID : HMENU -> int
    val GetMenuItemInfo : HMENU * int * bool -> MenuItemInfo
    val GetMenuItemRect : HWND * HMENU * int -> RECT
    val GetMenuState : HMENU * int * MenuFlag -> MenuFlag list * int
    val GetMenuString : HMENU * int * MenuFlag -> string
    val GetSubMenu : HMENU * int -> HMENU
    val GetSystemMenu : HWND * bool -> HMENU
    val HiliteMenuItem : HWND * HMENU * int * MenuFlag list -> unit
    val InsertMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit
    val IsMenu : HMENU -> bool
    val LoadMenu : HINSTANCE * Resource.RESID -> HMENU
    val ModifyMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit
    val RemoveMenu : HMENU * int * MenuFlag -> unit
    val SetMenu : HWND * HMENU option -> unit
    val SetMenuItemInfo : HMENU * int * bool * MenuItemInfo -> unit
    val InsertMenuItem : HMENU * int * bool * MenuItemInfo -> unit

    datatype TrackPopupMenuOptions =
        TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_LEFTALIGN | TPM_CENTERALIGN | TPM_RIGHTALIGN |
        TPM_TOPALIGN | TPM_VCENTERALIGN | TPM_BOTTOMALIGN | (*TPM_HORIZONTAL | TPM_VERTICAL |*)
        TPM_NONOTIFY | TPM_RETURNCMD
    val TrackPopupMenu : HMENU * TrackPopupMenuOptions list * int * int * HWND -> int

    val SetMenuContextHelpId: HMENU * int -> unit
    val GetMenuContextHelpId: HMENU -> int
  end
polyml-5.7.1/documentation/Winref/DeviceContext.html0000644000175000017500000002503313204034553021537 0ustar daviddavid Windows Interface Reference: DeviceContext structure

DeviceContext

The DeviceContext structure contains functions and structures to create and operate on device contexts.

structure DeviceContext:
  sig
    type BITMAP and HDC and HGDIOBJ and HWND and HRGN
    type LOGBRUSH = Brush.LOGBRUSH
    type LOGFONT = Font.LOGFONT
    type LOGPEN = Pen.LOGPEN
    type POINT = {x: int, y: int}

    type StockObjectType
    val ANSI_FIXED_FONT : StockObjectType
    val ANSI_VAR_FONT : StockObjectType
    val BLACK_BRUSH : StockObjectType
    val BLACK_PEN : StockObjectType
    val CLR_INVALID : StockObjectType
    val DEFAULT_PALETTE : StockObjectType
    val DEVICE_DEFAULT_FONT : StockObjectType
    val DKGRAY_BRUSH : StockObjectType
    val GRAY_BRUSH : StockObjectType
    val HOLLOW_BRUSH : StockObjectType
    val LTGRAY_BRUSH : StockObjectType
    val NULL_BRUSH : StockObjectType
    val NULL_PEN : StockObjectType
    val OEM_FIXED_FONT : StockObjectType
    val SYSTEM_FIXED_FONT : StockObjectType
    val SYSTEM_FONT : StockObjectType
    val WHITE_BRUSH : StockObjectType
    val WHITE_PEN : StockObjectType

    val GetStockObject : StockObjectType -> HGDIOBJ

    eqtype DeviceItem
    val ASPECTX : DeviceItem
    val ASPECTXY : DeviceItem
    val ASPECTY : DeviceItem
    val BITSPIXEL : DeviceItem
    val CLIPCAPS : DeviceItem
    val COLORRES : DeviceItem
    val CURVECAPS : DeviceItem
    val DRIVERVERSION : DeviceItem
    val HORZRES : DeviceItem
    val HORZSIZE : DeviceItem
    val LINECAPS : DeviceItem
    val LOGPIXELSX : DeviceItem
    val LOGPIXELSY : DeviceItem
    val NUMBRUSHES : DeviceItem
    val NUMCOLORS : DeviceItem
    val NUMFONTS : DeviceItem
    val NUMMARKERS : DeviceItem
    val NUMPENS : DeviceItem
    val NUMRESERVED : DeviceItem
    val PDEVICESIZE : DeviceItem
    val PHYSICALHEIGHT : DeviceItem
    val PHYSICALOFFSETX : DeviceItem
    val PHYSICALOFFSETY : DeviceItem
    val PHYSICALWIDTH : DeviceItem
    val PLANES : DeviceItem
    val POLYGONALCAPS : DeviceItem
    val RASTERCAPS : DeviceItem
    val SCALINGFACTORX : DeviceItem
    val SCALINGFACTORY : DeviceItem
    val SIZEPALETTE : DeviceItem
    val TECHNOLOGY : DeviceItem
    val TEXTCAPS : DeviceItem
    val VERTRES : DeviceItem
    val VERTSIZE : DeviceItem

    val GetDeviceCaps : HDC * DeviceItem -> int

   (* Results of various calls to GetDeviceCaps. *)
    val CC_CHORD : int
    val CC_CIRCLES : int
    val CC_ELLIPSES : int
    val CC_INTERIORS : int
    val CC_NONE : int
    val CC_PIE : int
    val CC_ROUNDRECT : int
    val CC_STYLED : int
    val CC_WIDE : int
    val CC_WIDESTYLED : int

    val CP_NONE : int
    val CP_RECTANGLE : int
    val CP_REGION : int

    val DT_CHARSTREAM : int
    val DT_DISPFILE : int
    val DT_METAFILE : int
    val DT_PLOTTER : int
    val DT_RASCAMERA : int
    val DT_RASDISPLAY : int
    val DT_RASPRINTER : int

    val LC_INTERIORS : int
    val LC_MARKER : int
    val LC_NONE : int
    val LC_POLYLINE : int
    val LC_POLYMARKER : int
    val LC_STYLED : int
    val LC_WIDE : int
    val LC_WIDESTYLED : int

    val PC_INTERIORS : int
    val PC_NONE : int
    val PC_PATHS : int
    val PC_POLYGON : int
    val PC_POLYPOLYGON : int
    val PC_RECTANGLE : int
    val PC_SCANLINE : int
    val PC_STYLED : int
    val PC_TRAPEZOID : int
    val PC_WIDE : int
    val PC_WIDESTYLED : int
    val PC_WINDPOLYGON : int

    val RC_BANDING : int
    val RC_BIGFONT : int
    val RC_BITBLT : int
    val RC_BITMAP64 : int
    val RC_DEVBITS : int
    val RC_DIBTODEV : int
    val RC_DI_BITMAP : int
    val RC_FLOODFILL : int
    val RC_GDI20_OUTPUT : int
    val RC_GDI20_STATE : int
    val RC_OP_DX_OUTPUT : int
    val RC_PALETTE : int
    val RC_SAVEBITMAP : int
    val RC_SCALING : int
    val RC_STRETCHBLT : int
    val RC_STRETCHDIB : int

    val TC_CP_STROKE : int
    val TC_CR_90 : int
    val TC_CR_ANY : int
    val TC_EA_DOUBLE : int
    val TC_IA_ABLE : int
    val TC_OP_CHARACTER : int
    val TC_OP_STROKE : int
    val TC_RA_ABLE : int
    val TC_RESERVED : int
    val TC_SA_CONTIN : int
    val TC_SA_DOUBLE : int
    val TC_SA_INTEGER : int
    val TC_SCROLLBLT : int
    val TC_SF_X_YINDEP : int
    val TC_SO_ABLE : int
    val TC_UA_ABLE : int
    val TC_VA_ABLE : int

    datatype DMColor = DMCOLOR_COLOR | DMCOLOR_MONOCHROME
    and DMDither =
          DMDITHER_COARSE
        | DMDITHER_FINE
        | DMDITHER_GRAYSCALE
        | DMDITHER_LINEART
        | DMDITHER_NONE
        | DMDITHER_OTHER of int
    and DMDuplex = DMDUP_HORIZONTAL | DMDUP_SIMPLEX | DMDUP_VERTICAL
    and DMICMIntent =
          DMICMINTENT_OTHER of int
        | DMICM_COLORMETRIC
        | DMICM_CONTRAST
        | DMICM_SATURATE
    and DMICMMethod =
          DMICMMETHOD_DEVICE
        | DMICMMETHOD_DRIVER
        | DMICMMETHOD_NONE
        | DMICMMETHOD_OTHER of int
        | DMICMMETHOD_SYSTEM
    and DMMedia =
          DMICMMEDIA_OTHER of int
        | DMMEDIA_GLOSSY
        | DMMEDIA_STANDARD
        | DMMEDIA_TRANSPARENCY
    and DMOrientation = DMORIENT_LANDSCAPE | DMORIENT_PORTRAIT
    and DMPaperSize =
          DMPAPER_10X11
        | DMPAPER_10X14
        | DMPAPER_11X17
        | DMPAPER_15X11
        | DMPAPER_9X11
        | DMPAPER_A2
        | DMPAPER_A3
        | DMPAPER_A3_EXTRA
        | DMPAPER_A3_EXTRA_TRANSVERSE
        | DMPAPER_A3_TRANSVERSE
        | DMPAPER_A4
        | DMPAPER_A4SMALL
        | DMPAPER_A4_EXTRA
        | DMPAPER_A4_PLUS
        | DMPAPER_A4_TRANSVERSE
        | DMPAPER_A5
        | DMPAPER_A5_EXTRA
        | DMPAPER_A5_TRANSVERSE
        | DMPAPER_A_PLUS
        | DMPAPER_B4
        | DMPAPER_B5
        | DMPAPER_B5_EXTRA
        | DMPAPER_B5_TRANSVERSE
        | DMPAPER_B_PLUS
        | DMPAPER_CSHEET
        | DMPAPER_DSHEET
        | DMPAPER_ENV_10
        | DMPAPER_ENV_11
        | DMPAPER_ENV_12
        | DMPAPER_ENV_14
        | DMPAPER_ENV_9
        | DMPAPER_ENV_B4
        | DMPAPER_ENV_B5
        | DMPAPER_ENV_B6
        | DMPAPER_ENV_C3
        | DMPAPER_ENV_C4
        | DMPAPER_ENV_C5
        | DMPAPER_ENV_C6
        | DMPAPER_ENV_C65
        | DMPAPER_ENV_DL
        | DMPAPER_ENV_INVITE
        | DMPAPER_ENV_ITALY
        | DMPAPER_ENV_MONARCH
        | DMPAPER_ENV_PERSONAL
        | DMPAPER_ESHEET
        | DMPAPER_EXECUTIVE
        | DMPAPER_FANFOLD_LGL_GERMAN
        | DMPAPER_FANFOLD_STD_GERMAN
        | DMPAPER_FANFOLD_US
        | DMPAPER_FOLIO
        | DMPAPER_ISO_B4
        | DMPAPER_JAPANESE_POSTCARD
        | DMPAPER_LEDGER
        | DMPAPER_LEGAL
        | DMPAPER_LEGAL_EXTRA
        | DMPAPER_LETTER
        | DMPAPER_LETTERSMALL
        | DMPAPER_LETTER_EXTRA
        | DMPAPER_LETTER_EXTRA_TRANSVERSE
        | DMPAPER_LETTER_PLUS
        | DMPAPER_LETTER_TRANSVERSE
        | DMPAPER_NOTE
        | DMPAPER_OTHER of int
        | DMPAPER_QUARTO
        | DMPAPER_RESERVED_48
        | DMPAPER_RESERVED_49
        | DMPAPER_STATEMENT
        | DMPAPER_TABLOID
        | DMPAPER_TABLOID_EXTRA
    and DMResolution =
          DMRES_DPI of int
        | DMRES_DRAFT
        | DMRES_HIGH
        | DMRES_LOW
        | DMRES_MEDIUM
    and DMSource =
          DMBIN_AUTO
        | DMBIN_CASSETTE
        | DMBIN_ENVELOPE
        | DMBIN_ENVMANUAL
        | DMBIN_FORMSOURCE
        | DMBIN_LARGECAPACITY
        | DMBIN_LARGEFMT
        | DMBIN_LOWER
        | DMBIN_MANUAL
        | DMBIN_MIDDLE
        | DMBIN_ONLYONE
        | DMBIN_SMALLFMT
        | DMBIN_TRACTOR
        | DMBIN_UPPER
        | DMSOURCE_OTHER of int
    and DMTrueType =
          DMTT_BITMAP
        | DMTT_DOWNLOAD
        | DMTT_DOWNLOAD_OUTLINE
        | DMTT_SUBDEV

    type DEVMODE = {
        deviceName: string,
        driverVersion: int,
        orientation: DMOrientation option,
        paperSize: DMPaperSize option,
        paperLength: int option,
        paperWidth: int option,
        scale: int option,
        copies: int option,
        defaultSource: DMSource option,
        printQuality: DMResolution option,
        color: DMColor option,
        duplex: DMDuplex option,
        yResolution: int option,
        ttOption: DMTrueType option,
        collate: bool option,
        formName: string option,
        logPixels: int option,
        bitsPerPixel: int option,
        pelsWidth: int option,
        pelsHeight: int option,
        displayFlags: int option, (* Apparently no longer used. *)
        displayFrequency: int option,
        icmMethod: DMICMMethod option,
        icmIntent: DMICMIntent option,
        mediaType: DMMedia option,
        ditherType: DMDither option,
        iccManufacturer: int option,
        iccModel: int option,
        panningWidth: int option,
        panningHeight: int option,
        driverPrivate: Word8Vector.vector
        }

    val CancelDC : HDC -> unit
    val CreateCompatibleDC : HDC -> HDC
    val CreateDC : string option * string option * string option * DEVMODE option -> HDC

    val DeleteDC : HDC -> unit
    val DeleteObject : HGDIOBJ -> unit

    datatype
      EnumObject =
          OBJ_BITMAP
        | OBJ_BRUSH
        | OBJ_DC
        | OBJ_ENHMETADC
        | OBJ_ENHMETAFILE
        | OBJ_EXTPEN
        | OBJ_FONT
        | OBJ_MEMDC
        | OBJ_METADC
        | OBJ_METAFILE
        | OBJ_PAL
        | OBJ_PEN
        | OBJ_REGION
    val GetCurrentObject : HDC * EnumObject -> HGDIOBJ
    val GetDC : HWND -> HDC

    datatype
      DeviceContextFlag =
          DCX_CACHE
        | DCX_CLIPCHILDREN
        | DCX_CLIPSIBLINGS
        | DCX_EXCLUDERGN
        | DCX_EXCLUDEUPDATE
        | DCX_INTERSECTRGN
        | DCX_INTERSECTUPDATE
        | DCX_LOCKWINDOWUPDATE
        | DCX_NORECOMPUTE
        | DCX_NORESETATTRS
        | DCX_PARENTCLIP
        | DCX_VALIDATE
        | DCX_WINDOW

    val GetDCEx : HWND * HRGN * DeviceContextFlag list -> HDC
    val GetDCOrgEx : HDC -> POINT

    datatype
      GetObject =
          GO_Bitmap of BITMAP
        | GO_Brush of LOGBRUSH
        | GO_Font of LOGFONT
        | GO_Palette of int
        | GO_Pen of LOGPEN

    val GetObject : HGDIOBJ -> GetObject
    val GetObjectType : HGDIOBJ -> EnumObject
    val ReleaseDC : HWND * HDC -> bool
    val ResetDC : HDC * DEVMODE -> HDC
    val RestoreDC : HDC * int -> unit
    val SaveDC : HDC -> int
    val SelectObject : HDC * HGDIOBJ -> HGDIOBJ

    type DEVNAMES = {driver: string, device: string, output: string, default: bool}

  end
polyml-5.7.1/documentation/Winref/Rectangle.html0000644000175000017500000000156213204034553020700 0ustar daviddavid Windows Interface Reference: Rectangle structure

Rectangle

The Rectangle structure contains functions to compute with rectangles.

structure Rectangle :
  sig
  	type POINT = { x: int, y: int }
	type RECT = { top: int, left: int, bottom: int, right: int }

    val EqualRect : RECT * RECT -> bool
    val InflateRect : RECT * int * int -> unit * RECT
    val IntersectRect : RECT * RECT -> bool * RECT
    val IsRectEmpty : RECT -> bool
    val OffsetRect : RECT * int * int -> RECT
    val PtInRect : RECT * POINT -> bool
    val SetRect : int * int * int * int -> RECT
    val SetRectEmpty : unit -> RECT
    val SubtractRect : RECT * RECT -> RECT
    val UnionRect : RECT * RECT -> RECT
  end
polyml-5.7.1/documentation/Winref/Metafile.html0000644000175000017500000000500513204034553020516 0ustar daviddavid Windows Interface Reference: Metafile structure

Metafile

The Metafile structure contains functions and structures to create and operate on metafiles. A metafile is essentially a recording of drawing operations which can be stored in a file, passed through the clipboard and replayed as needed.  There are two types of metafile: the old form represented by the HMETAFILE type and the new, enhanced metafile, represented by the HENHMETAFILE type.

structure Metafile :
  sig
    type HENHMETAFILE
    type HMETAFILE
    type HDC
    type RECT = { top: int, left: int, bottom: int, right: int }
    type SIZE = { cx: int, cy: int }
    datatype MapMode = datatype Transform.MapMode
    type METAFILEPICT = {mm: MapMode, size: SIZE, hMF: HMETAFILE}

    type ENHMETAHEADER =
        {
            bounds: RECT, frame: RECT, fileSize: int, records: int,
            handles: int, palEntries: int, resolutionPixels: SIZE,
            resolutionMM: SIZE, openGL: bool
        }

    val CloseEnhMetaFile : HDC -> HENHMETAFILE
    val CloseMetaFile : HDC -> HMETAFILE
    val CopyEnhMetaFile : HENHMETAFILE * string -> HENHMETAFILE
    val CopyMetaFile : HMETAFILE * string -> HMETAFILE
    val CreateEnhMetaFile :
       HDC * string option * RECT *
       {pictureName: string, applicationName: string} option -> HDC
    val CreateMetaFile : string option -> HDC
    val DeleteEnhMetaFile : HENHMETAFILE -> unit
    val DeleteMetaFile : HMETAFILE -> unit
    val GdiComment : HDC * Word8Vector.vector -> unit
    val GetEnhMetaFile : string -> HENHMETAFILE
    val GetEnhMetaFileBits : HENHMETAFILE -> Word8Vector.vector
    val GetEnhMetaFileDescription :
       HENHMETAFILE -> {pictureName: string, applicationName: string} option
    val GetEnhMetaFileHeader : HENHMETAFILE -> ENHMETAHEADER
    val GetMetaFile : string -> HMETAFILE
    val GetMetaFileBitsEx : HMETAFILE -> Word8Vector.vector
    val GetWinMetaFileBits :
       HENHMETAFILE * Transform.MapMode * HDC -> Word8Vector.vector
    val PlayEnhMetaFile : HDC * HENHMETAFILE * RECT -> unit
    val PlayMetaFile : HDC * HMETAFILE -> unit
    val SetEnhMetaFileBits : Word8Vector.vector -> HENHMETAFILE
    val SetMetaFileBits : Word8Vector.vector -> HMETAFILE
    val SetWinMetaFileBits :
       Word8Vector.vector * HDC * {size: SIZE, mapMode: MapMode} option -> HENHMETAFILE

  end
polyml-5.7.1/documentation/Winref/Mouse.html0000644000175000017500000000124713204034553020064 0ustar daviddavid Windows Interface Reference: Mouse structure

Mouse

The Mouse structure contains functions to control mouse input to a window.

structure Mouse :
  sig
    type HWND
    type POINT = { x: int, y: int }
    val DragDetect : HWND * POINT -> bool
    val GetCapture : unit -> HWND option
    val GetDoubleClickTime : unit -> Time.time
    val ReleaseCapture : unit -> unit
    val SetCapture : HWND -> HWND option
    val SetDoubleClickTime : Time.time -> unit
    val SwapMouseButton : bool -> bool
  end
polyml-5.7.1/documentation/Winref/Reference.html0000644000175000017500000002512413204034553020672 0ustar daviddavid Windows Interface Reference

Windows Interface Reference

The Windows™ interface is arranged as forty structures containing several hundred functions.  It is not possible to provide documentation for all these functions and it would involve duplicating much of the Windows documentation.  Generally the functions take the same arguments and return the same result types as the corresponding function in C but there are some differences to reflect the differences in the type systems.  Functions that return a status result in C generally return unit in ML and raise an OS.Syserr exception if they fail.  Where a C function, such as GetClipBox, takes an argument by reference as a way of returning a result the corresponding ML function simply returns the appropriate result.  This often occurs with functions that extract strings.

Many objects, such as windows and fonts, are represented by handles, e.g. HWND and HFONT.  Frequently, when programming with Windows in C it is necessary to cast between handles and integers, such as when sending a message to obtain the current font for a window.  The ML interface avoids this where possible by using union types but the Globals structure includes functions to perform these casts if necessary.  It also contains a value hNull which can be used as a NULL handle.   Generally though, functions such as SetParent or GetActiveWindow which can take an optional argument or return an optional result use an option type in ML.  Although there are separate types HFONT, HBITMAP, etc for the various kinds of GDI object, these are all the same as HGDIOBJ.  This simplifies the types of functions such as GetCurrentObject and GetObjectType.

Frequently functions in C take an integer argument with constants defined.   Datatypes are used for these in ML where possible.  Where in C several options can be or-ed together in ML a list of a datatype is used.

Drawing and device contexts (GDI functions)

Drawing to a window or printing a page on a printer are handled in the same way.   An abstract device, a device context, is used and all drawing is done on one of these.

Bitmap Arbitrary bitmap patterns
Brush Coloured and patterned brushes
Clipping Clipping regions
Color Colours
DeviceContext Creating device contexts and getting their properties
Font Creating fonts and drawing text
Line Drawing lines
Metafile Recording drawing operations
Path Sequences of lines to form a path
Pen Pens used when drawing lines
Printing Functions used when drawing to a printer
Rectangle Operations on rectangles
Region Areas of a device context
Shape Various shapes
Transform Co-ordinate transforms

Window creation and communication

Class Creating custom window classes.
Window General functions on windows.
Message Sending messages to windows.
Caret The insertion point in an edit window.
Cursor Mouse cursors.
Icon Icons for windows.
Menu Pull-down and pop-up menus.
DragDrop Dragging and dropping files.
Keyboard Keyboard input control.  The input itself is by way of messages.
Mouse Mouse input control.  The input itself is by way of messages.
Painting Painting and drawing to a window.

Dialogue windows

Dialogue boxes are windows typically consisting of a number of controls and a button to confirm or cancel a selection. 

Dialog Custom dialogue boxes.
MessageBox A simple dialogue box containing a piece of text and one or more buttons.
CommonDialog Standard dialogues to select a file, print a document, etc.

Standard window classes

For many purposes a standard window class can be used.  These structures mainly contain values for the window styles which can be used to control the appearance of the window.  Most operations are performed by sending messages from the Message structure.

Button Push buttons, radio buttons and check boxes
Combobox A combination of a list box and an edit box.
Edit Single lines for text input or multiple lines for general editing.
ListBox Selection from a list of options.
Scrollbar Can be used to scroll a window.  This structure includes functions to scroll windows and device contexts..
Static Static windows can be used to display text labels or pictures.

Others

Various other structures.

Globals Various functions on handles and to obtain the handles for the Poly/ML window and application.
WinSystem System information functions.
Resource Resource files can be used to hold resources such as menus, strings, dialogues etc.
Clipboard The clipboard is used to communicate with other applications.
Locale Language definitions to be used with resource files.

Restrictions and Differences between ML and C

The interface was designed so that the definition of functions provided for C should carry over to the ML version.  This simplifies documentation and also makes it relatively easy to port programs between C and ML.  There are a few differences which are worth noting.

Messages and Window Procedures

The major difference is in the way messages are handled.  In C a message is simply an integer but each message is accompanied by two parameters, called wParam and lParam.   Each message defines how these are to interpreted and it is usually necessary to coerce one or other of them to a specific type.  Often lParam is defined to be a pointer to a particular structure.  Sometimes the parameters are pointers which are updated by the window procedure.  In ML messages are fully typed and as much as possible of the message information is made available.  This does require some conversion and it is possible that information could be lost if a message was converted to ML form and then back to C.  For this reason the handling of messages is done slightly differently from C.  In C it is necessary to call DefWindowProc to provide default processing of messages.  If it is not called a result must be returned to the caller.  In ML an option type is used.  If NONE is returned then DefWindowProc is called with the original arguments, before they were converted to ML, otherwise the value given is returned as the result. 

There are generally complications with callback functions due to differences in the notion of a function in ML and C.  In C a function is always the pointer to a piece of code whereas in ML it is a closure.  This makes it impossible to pass ML functions directly to C and instead different callbacks have to be implemented by hand.  For this reason EM_SETWORDBREAKPROC and EM_GETWORDBREAKPROC to set and get the word break procedure for an edit window are not implemented nor are various of the callbacks in the common controls.

Last updated: 28 October 2001 by David Matthews.

polyml-5.7.1/documentation/Winref/Region.html0000644000175000017500000000336413204034553020221 0ustar daviddavid Windows Interface Reference: Region structure

Region

The Region structure contains functions to operate on regions.

structure Region:
sig
    type HDC and HBRUSH and HRGN and HPEN
	type POINT = { x: int, y: int }
	type RECT = { top: int, left: int, bottom: int, right: int }

    type RegionOperation
    val RGN_AND : RegionOperation
    val RGN_COPY : RegionOperation
    val RGN_DIFF : RegionOperation
    val RGN_ERROR : RegionOperation
    val RGN_OR : RegionOperation
    val RGN_XOR : RegionOperation

    type ResultRegion
    val COMPLEXREGION : ResultRegion
    val NULLREGION : ResultRegion
    val ERROR : ResultRegion
    val SIMPLEREGION : ResultRegion

    type PolyFillMode
    val ALTERNATE : PolyFillMode
    val WINDING : PolyFillMode

    val CombineRgn : HRGN * HRGN * HRGN * RegionOperation -> ResultRegion
    val CreateEllipticRgn : RECT -> HRGN
    val CreatePolygonRgn : POINT list * PolyFillMode -> HPEN
    val CreateRectRgn : RECT -> HRGN
    val CreateRoundRectRgn : RECT * int * int -> HRGN
    val EqualRgn : HRGN * HRGN -> bool
    val FillRgn : HDC * HRGN * HBRUSH -> unit
    val FrameRgn : HDC * HRGN * HBRUSH * int * int -> unit
    val GetPolyFillMode : HDC -> PolyFillMode
    val GetRgnBox : HRGN -> RECT
    val InvertRgn : HDC * HRGN -> unit
    val OffsetRgn : HRGN * int * int -> ResultRegion
    val PaintRgn : HDC * HRGN -> unit
    val PtInRegion : HRGN * int * int -> bool
    val RectInRegion : HRGN * RECT -> bool
    val SetPolyFillMode : HDC * PolyFillMode -> PolyFillMode
    val SetRectRgn : HRGN * RECT -> bool
  end
polyml-5.7.1/documentation/Winref/CommonDialog.html0000644000175000017500000002220313204034553021337 0ustar daviddavid Windows Interface Reference: CommonDialog structure

CommonDialog

The CommonDialog structure contains functions and structures to create common forms of dialogue boxes.

structure CommonDialog :
  sig
    type HWND and HDC and COLORREF = Color.COLORREF and HINSTANCE
    type POINT = { x: int, y: int }
    type RECT =  { left: int, top: int, right: int, bottom: int }

     (* Error codes *)
    datatype CDERR =
             DIALOGFAILURE
        |    GENERALCODES
        |    STRUCTSIZE
        |    INITIALIZATION
        |    NOTEMPLATE
        |    NOHINSTANCE
        |    LOADSTRFAILURE
        |    FINDRESFAILURE
        |    LOADRESFAILURE
        |    LOCKRESFAILURE
        |    MEMALLOCFAILURE
        |    MEMLOCKFAILURE
        |    NOHOOK
        |    REGISTERMSGFAIL

        |    PRINTERCODES
        |    SETUPFAILURE
        |    PARSEFAILURE
        |    RETDEFFAILURE
        |    LOADDRVFAILURE
        |    GETDEVMODEFAIL
        |    INITFAILURE
        |    NODEVICES
        |    NODEFAULTPRN
        |    DNDMMISMATCH
        |    CREATEICFAILURE
        |    PRINTERNOTFOUND
        |    DEFAULTDIFFERENT

        |    CHOOSEFONTCODES
        |    NOFONTS
        |    MAXLESSTHANMIN

        |    FILENAMECODES
        |    SUBCLASSFAILURE
        |    INVALIDFILENAME
        |    BUFFERTOOSMALL

        |    FINDREPLACECODES
        |    BUFFERLENGTHZERO

        |    CHOOSECOLORCODES

    val CommDlgExtendedError : unit -> CDERR

    (* ChooseColor *)

    structure ChooseColorFlags :
      sig
        include BIT_FLAGS
        val CC_ANYCOLOR : flags
        val CC_FULLOPEN : flags
        val CC_PREVENTFULLOPEN : flags
        val CC_RGBINIT : flags
        val CC_SHOWHELP : flags
        val CC_SOLIDCOLOR : flags
      end

    type CHOOSECOLOR =
    {
        owner: HWND option,
        result: COLORREF,
        customColors: COLORREF list,
        flags: ChooseColorFlags.flags
    }

    val ChooseColor : CHOOSECOLOR -> CHOOSECOLOR option


    (* ChooseFont *)

    structure ChooseFontFlags :
      sig
        include BIT_FLAGS
        val CF_ANSIONLY : flags
        val CF_APPLY : flags
        val CF_BOTH : flags
        val CF_EFFECTS : flags
        val CF_FIXEDPITCHONLY : flags
        val CF_FORCEFONTEXIST : flags
        val CF_NOFACESEL : flags
        val CF_NOOEMFONTS : flags
        val CF_NOSCRIPTSEL : flags
        val CF_NOSIMULATIONS : flags
        val CF_NOSIZESEL : flags
        val CF_NOSTYLESEL : flags
        val CF_NOVECTORFONTS : flags
        val CF_NOVERTFONTS : flags
        val CF_PRINTERFONTS : flags
        val CF_SCALABLEONLY : flags
        val CF_SCREENFONTS : flags
        val CF_SCRIPTSONLY : flags
        val CF_SELECTSCRIPT : flags
        val CF_SHOWHELP : flags
        val CF_TTONLY : flags
        val CF_WYSIWYG : flags
      end

    structure ChooseFontTypes :
      sig
        include BIT_FLAGS
        val BOLD_FONTTYPE : flags
        val ITALIC_FONTTYPE : flags
        val PRINTER_FONTTYPE : flags
        val REGULAR_FONTTYPE : flags
        val SCREEN_FONTTYPE : flags
        val SIMULATED_FONTTYPE : flags
      end

    type CHOOSEFONT =
    {
        owner: HWND option,
        context: HDC option,
        logFont: Font.LOGFONT option,
        pointSize: int,
        flags: ChooseFontFlags.flags,
        colors: COLORREF,
        style: string option,
        fontType: ChooseFontTypes.flags,
        size: {min: int, max: int} option
    }

    val ChooseFont : CHOOSEFONT -> CHOOSEFONT option

    (* FindText and ReplaceText *)
    structure FindReplaceFlags :
      sig
        include BIT_FLAGS
        val FR_DIALOGTERM : flags
        val FR_DOWN : flags
        val FR_FINDNEXT : flags
        val FR_HIDEMATCHCASE : flags
        val FR_HIDEUPDOWN : flags
        val FR_HIDEWHOLEWORD : flags
        val FR_MATCHCASE : flags
        val FR_NOMATCHCASE : flags
        val FR_NOUPDOWN : flags
        val FR_NOWHOLEWORD : flags
        val FR_REPLACE : flags
        val FR_REPLACEALL : flags
        val FR_SHOWHELP : flags
        val FR_WHOLEWORD : flags
      end

    datatype
      TemplateType =
          TemplateDefault
        | TemplateHandle of Dialog.DLGTEMPLATE
        | TemplateResource of HINSTANCE * Resource.RESID

    type FINDREPLACE =
    {
        owner : HWND,
        template: TemplateType,
        flags: FindReplaceFlags.flags,
        findWhat: string,
        replaceWith: string,
        bufferSize: int
    }

    val FindText : FINDREPLACE -> HWND
    val ReplaceText : FINDREPLACE -> HWND

    (* GetOpenFileName and GetSaveFileName *)

    structure OpenFileFlags :
      sig
        include BIT_FLAGS
        val OFN_ALLOWMULTISELECT : flags
        val OFN_CREATEPROMPT : flags
        val OFN_EXPLORER : flags
        val OFN_EXTENSIONDIFFERENT : flags
        val OFN_FILEMUSTEXIST : flags
        val OFN_HIDEREADONLY : flags
        val OFN_LONGNAMES : flags
        val OFN_NOCHANGEDIR : flags
        val OFN_NODEREFERENCELINKS : flags
        val OFN_NOLONGNAMES : flags
        val OFN_NONETWORKBUTTON : flags
        val OFN_NOREADONLYRETURN : flags
        val OFN_NOTESTFILECREATE : flags
        val OFN_NOVALIDATE : flags
        val OFN_OVERWRITEPROMPT : flags
        val OFN_PATHMUSTEXIST : flags
        val OFN_READONLY : flags
        val OFN_SHAREAWARE : flags
        val OFN_SHOWHELP : flags
      end

    type OPENFILENAME =
    {
        owner: HWND option,
        template: TemplateType,
        filter: (string * string) list,
        customFilter: (string * string) option,
        filterIndex: int,
        file: string,    (* Initial value of file and returned result. *)
        maxFile: int,    (* Max size of expected file name. *)
        fileTitle : string,
        initialDir: string option,
        title: string option, (* Optional title - default is Save or Open. *)
        flags: OpenFileFlags.flags,
        defExt: string option
    }

    val GetFileTitle : string -> string
    val GetOpenFileName : OPENFILENAME -> OPENFILENAME option
    val GetSaveFileName : OPENFILENAME -> OPENFILENAME option

    (* PageSetupDlg *)
    structure PageSetupFlags :
      sig
        include BIT_FLAGS
        val PSD_DEFAULTMINMARGINS : flags
        val PSD_DISABLEMARGINS : flags
        val PSD_DISABLEORIENTATION : flags
        val PSD_DISABLEPAGEPAINTING : flags
        val PSD_DISABLEPAPER : flags
        val PSD_DISABLEPRINTER : flags
        val PSD_INHUNDREDTHSOFMILLIMETERS : flags
        val PSD_INTHOUSANDTHSOFINCHES : flags
        val PSD_MARGINS : flags
        val PSD_MINMARGINS : flags
        val PSD_NONETWORKBUTTON : flags
        val PSD_NOWARNING : flags
        val PSD_RETURNDEFAULT : flags
        val PSD_SHOWHELP : flags
      end

    type PAGESETUPDLG =
    {
        owner: HWND option,
        devMode: DeviceContext.DEVMODE option,
        devNames: DeviceContext.DEVNAMES option,
        flags: PageSetupFlags.flags,
        paperSize: POINT,
        minMargin: RECT,
        margin: RECT
        (* For the moment we ignore the other options. *)
    }

    val PageSetupDlg : PAGESETUPDLG -> PAGESETUPDLG option

    (* PrintDlg *)
    structure PrintDlgFlags :
      sig
        include BIT_FLAGS
        val PD_ALLPAGES : flags
        val PD_COLLATE : flags
        val PD_DISABLEPRINTTOFILE : flags
        val PD_HIDEPRINTTOFILE : flags
        val PD_NONETWORKBUTTON : flags
        val PD_NOPAGENUMS : flags
        val PD_NOSELECTION : flags
        val PD_NOWARNING : flags
        val PD_PAGENUMS : flags
        val PD_PRINTSETUP : flags
        val PD_PRINTTOFILE : flags
        val PD_RETURNDC : flags
        val PD_RETURNDEFAULT : flags
        val PD_RETURNIC : flags
        val PD_SELECTION : flags
        val PD_SHOWHELP : flags
        val PD_USEDEVMODECOPIES : flags
        val PD_USEDEVMODECOPIESANDCOLLATE : flags
     end

    type PRINTDLG =
    {
        owner: HWND option,
        devMode: DeviceContext.DEVMODE option,
        devNames: DeviceContext.DEVNAMES option,
        context: HDC option,
        flags: PrintDlgFlags.flags,
        fromPage: int,
        toPage: int,
        minPage: int,
        maxPage: int,
        copies: int
        (* For the moment we ignore the other options. *)
    }

    val PrintDlg : PRINTDLG -> PRINTDLG option
  end

Generally these functions create modal dialogue boxes.  They take a configuration structure as an argument and return an option type.  NONE is returned if the user presses Cancel.  If the user presses OK the result is SOME with a modified structure containing the user's input. 

FindText(findReplace): HWND
ReplaceText(findReplace): HWND
These create modeless dialogues and return a handle to the window for the dialogue.   They send FINDMSGSTRING messages to the parent window to indicate various changes of state.

polyml-5.7.1/documentation/Winref/Line.html0000644000175000017500000000241013204034553017654 0ustar daviddavid Windows Interface Reference: Line structure

Line

The Line structure contains functions to draw lines.

structure Line :
  sig
    type HDC
	type RECT = { top: int, left: int, bottom: int, right: int }
	type POINT = { x: int, y: int }

    datatype PointType =
          PT_BEZIERTO
        | PT_BEZIERTOANDCLOSE
        | PT_LINETO
        | PT_LINETOANDCLOSE
        | PT_MOVETO

    eqtype ArcDirection
    val AD_CLOCKWISE : ArcDirection
    val AD_COUNTERCLOCKWISE : ArcDirection

    val AngleArc : HDC * int * int * int * real * real -> unit
    val Arc : HDC * RECT * int * int * int * int -> unit
    val ArcTo : HDC * RECT * int * int * int * int -> unit
    val GetArcDirection : HDC -> ArcDirection
    val LineTo : HDC * POINT -> bool
    val MoveToEx : HDC * POINT -> POINT
    val PolyBezier : HDC * POINT list -> unit
    val PolyBezierTo : HDC * POINT list -> unit
    val PolyDraw : HDC * (PointType * POINT) list -> unit
    val Polyline : HDC * POINT list -> unit
    val PolylineTo : HDC * POINT list -> unit
    val SetArcDirection : HDC * ArcDirection -> ArcDirection
  end
polyml-5.7.1/documentation/Winref/Edit.html0000644000175000017500000000422313204034553017656 0ustar daviddavid Windows Interface Reference: Edit structure

Edit

The Edit structure contains styles and notifications for Edit windows.  Edit windows provide simple ways of entering and editing text.  Single line edit controls are frequently used in dialogue boxes to allow strings to be entered.  Multiple line edit windows can be used as simple text editors.  Specialised edit window messages begin with EM_.   The values from the Notification substructure are sent as the code parameter in a WM_NOTIFY message. 

structure Edit:
sig
    structure Style:
    sig
        include BIT_FLAGS where type flags = Window.Style.flags
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and ES_LEFT: flags and ES_CENTER:flags and ES_RIGHT:flags and ES_MULTILINE:flags
        and ES_UPPERCASE: flags and ES_LOWERCASE: flags and ES_PASSWORD: flags
        and ES_AUTOVSCROLL: flags and ES_AUTOHSCROLL: flags and ES_NOHIDESEL: flags
        and ES_OEMCONVERT: flags and ES_READONLY: flags and ES_WANTRETURN: flags and ES_NUMBER: flags
    end

    structure Notifications:
    sig
        val EN_SETFOCUS: int
        val EN_KILLFOCUS: int
        val EN_CHANGE: int
        val EN_UPDATE: int
        val EN_ERRSPACE: int
        val EN_MAXTEXT: int
        val EN_HSCROLL: int
        val EN_VSCROLL: int
    end
end
polyml-5.7.1/documentation/Winref/Bitmap.html0000644000175000017500000001217113204034553020206 0ustar daviddavid Windows Interface Reference: Bitmap structure

Bitmap

The Bitmap structure contains functions and structures to create and operate on bitmaps.  Bitmaps are rectangular pictures in which the colour values for each pixel are given individually.  They are often used as the basis for icons.  There are two forms of bitmap: device-dependent bitmaps represented by the bitmap handle, HBITMAP, and device-independent bitmaps.

structure Bitmap:
  sig
    type HBITMAP and HDC
    type COLORREF = Color.COLORREF
    type RECT = { top: int, left: int, bottom: int, right: int }
    type SIZE = { cx: int, cy: int }
    datatype BitmapCompression = BI_BITFIELDS | BI_RGB | BI_RLE4 | BI_RLE8
    datatype FloodFillMode = FLOODFILLBORDER | FLOODFILLSURFACE

    type BITMAP =
	{ width: int, height: int, widthBytes: int, planes: int, bitsPerPixel: int,
	  bits: Word8Vector.vector option }

    type StretchMode
    val BLACKONWHITE : StretchMode
    val COLORONCOLOR : StretchMode
    val HALFTONE : StretchMode
    val MAXSTRETCHBLTMODE : StretchMode
    val WHITEONBLACK : StretchMode

    type RasterOpCode
    val BLACKNESS : RasterOpCode
    val DSTINVERT : RasterOpCode
    val MERGECOPY : RasterOpCode
    val MERGEPAINT : RasterOpCode
    val NOTSRCCOPY : RasterOpCode
    val NOTSRCERASE : RasterOpCode
    val PATCOPY : RasterOpCode
    val PATINVERT : RasterOpCode
    val PATPAINT : RasterOpCode
    val SRCAND : RasterOpCode
    val SRCCOPY : RasterOpCode
    val SRCERASE : RasterOpCode
    val SRCINVERT : RasterOpCode
    val SRCPAINT : RasterOpCode
    val WHITENESS : RasterOpCode

    val BitBlt : HDC * int * int * int * int * HDC * int * int * RasterOpCode -> unit
    val CreateBitmap :
       {bits: Word8Vector.vector option, width: int, height: int,
         planes: int, bitsPerPixel: int} -> HBITMAP
    val CreateBitmapIndirect : BITMAP -> HBITMAP
    val CreateCompatibleBitmap : HDC * int * int -> HBITMAP
    val ExtFloodFill : HDC * int * int * COLORREF * FloodFillMode -> unit
    val GetBitmapBits : HBITMAP * int -> Word8Vector.vector
    val GetBitmapDimensionEx : HBITMAP -> SIZE
    val GetPixel : HDC * int * int -> COLORREF
    val GetStretchBltMode : HDC -> StretchMode

    type QuaternaryRop
    val MAKEROP4 : {back: RasterOpCode, fore: RasterOpCode} -> QuaternaryRop
    val MaskBlt :
       HDC * int * int * int * int * HDC * int * int *
       HBITMAP * int * int * QuaternaryRop -> unit

    val PlgBlt : HDC * RECT * HDC * RECT * HBITMAP * int * int -> unit
    val SetBitmapBits : HBITMAP * Word8Vector.vector -> unit
    val SetBitmapDimensionEx : HBITMAP * int * int * SIZE -> SIZE
    val SetPixel : HDC * int * int * COLORREF -> COLORREF
    val SetStretchBltMode : HDC * StretchMode -> unit
    val StretchBlt :
       HDC * int * int * int * int * HDC * int * int * int * int * RasterOpCode -> unit

    type BITMAPINFOHEADER =
	{
		width: int, height: int, planes: int, bitsPerPixel: int,
		compression: BitmapCompression, sizeImage: int, xPelsPerM: int, 
		yPelsPerM: int, clrUsed: int, clrImportant: int
	}
    val getBitmapInfoHdr: Word8Vector.vector -> BITMAPINFOHEADER
    val GetDIBits: HDC * HBITMAP * int * int * BITMAPINFOHEADER option -> Word8Vector.vector
    val SetDIBits: HDC * HBITMAP * int * int * Word8Vector.vector -> unit
  end

Device-independent bitmaps.

A device-independent bitmap contains information which allows it to be written to a file and read in on a different machine with different numbers of bits per pixel.  It can also be passed on the clipboard using the CH_DIB clipboard format. A device-independent bitmap is simply a vector of bytes and is represented in ML by the Word8Vector.vector type.

getBitmapInfoHdr(vec: Word8Vector.vector): BITMAPINFOHEADER
ML Extension: Extracts the header from a vector containing a device-independent bitmap.  It is often necessary to extract the header from a device-independent bitmap in order to find the size of the bitmap needed as the argument to SetDIBits.

GetDIBits(hdc, hb, startScan, scanLines, binfo: BITMAPINFOHEADER option): Word8Vector.vector
Extracts a bitmap as a device-independent bitmap.  This function operates in two modes according to whether the binfo argument is NONE or SOME.  If NONE is passed it returns only the header.  This can be extracted with getBitmapInfoHdr and if necessary a modified copy of it can be made.  For example, the bitsPerPixel can be changed from the default for the device.  It can then be passed with SOME again to GetDIBits to extract the full device-independent bitmap.

SetDIBits(hdc, hb, startScan, scanLines, vec: Word8Vector.vector): unit
Sets a bitmap to the device-independent bitmap in the argument vector.

polyml-5.7.1/documentation/Winref/Transform.html0000644000175000017500000000505113204034553020744 0ustar daviddavid Windows Interface Reference: Transform structure

Transform

The Transform structure contains functions to apply various co-ordinate transforms within a window or device context.

structure Transform:
  sig
	type HDC
	type HWND
	type POINT = { x: int, y: int }
	type SIZE = { cx: int, cy: int }
    datatype Fraction = Fraction of {num: int, denom: int}
	
    datatype
      MapMode =
          MM_ANISOTROPIC
        | MM_HIENGLISH
        | MM_HIMETRIC
        | MM_ISOTROPIC
        | MM_LOENGLISH
        | MM_LOMETRIC
        | MM_TEXT
        | MM_TWIPS
    val MM_MAX : MapMode
    val MM_MAX_FIXEDSCALE : MapMode
    val MM_MIN : MapMode

	type XForm = { m11: real, m12: real, m21: real, m22: real, dx: real, dy: real }

    type XFormType
    val MWT_IDENTITY : XFormType
    val MWT_LEFTMULTIPLY : XFormType
    val MWT_MAX : XFormType
    val MWT_MIN : XFormType
    val MWT_RIGHTMULTIPLY : XFormType

    type GraphicsMode
    val GM_ADVANCED : GraphicsMode
    val GM_COMPATIBLE : GraphicsMode
    val GM_ERROR : GraphicsMode

    val ClientToScreen : HWND * POINT -> POINT
    val CombineTransform : XForm * XForm -> XForm
    val DPtoLP : HDC * POINT list -> POINT list
    val GetCurrentPositionEx : HDC -> POINT
    val GetGraphicsMode : HDC -> GraphicsMode
    val GetMapMode : HDC -> MapMode
    val GetViewportExtEx : HDC -> SIZE
    val GetViewportOrgEx : HDC -> POINT
    val GetWindowExtEx : HDC -> SIZE
    val GetWindowOrgEx : HDC -> POINT
    val GetWorldTransform : HDC -> XForm
    val LPtoDP : HDC * POINT list -> POINT list
    val MapWindowPoints : HWND * HWND * POINT list -> POINT list
    val ModifyWorldTransform : HDC * XForm * XFormType -> unit
    val OffsetViewportOrgEx : HDC * int * int -> unit * POINT
    val OffsetWindowOrgEx : HDC * int * int -> unit * POINT
    val ScaleViewportExtEx : HWND * Fraction * Fraction -> SIZE
    val ScaleWindowExtEx : HWND * Fraction * Fraction -> SIZE
    val ScreenToClient : HWND * POINT -> POINT
    val SetGraphicsMode : HDC * GraphicsMode -> GraphicsMode
    val SetMapMode : HDC * MapMode -> MapMode
    val SetViewportExtEx : HDC * int * int -> unit * SIZE
    val SetViewportOrgEx : HDC * int * int -> unit * POINT
    val SetWindowExtEx : HDC * int * int -> unit * SIZE
    val SetWindowOrgEx : HDC * int * int -> unit * POINT
    val SetWorldTransform : HDC * XForm -> unit

  end
polyml-5.7.1/documentation/Winref/Combobox.html0000644000175000017500000000454413204034553020547 0ustar daviddavid Windows Interface Reference: Combobox structure

Combobox

The Combobox structure contains the styles and options used in messages sent to a combobox.  A combobox is a combination of a list box together with an edit control.   Most control of a combobox is by means of messages.  Specialised combobox messages begin with CB_. The values from the Notification substructure are sent as the code parameter in a WM_NOTIFY message. 

structure Combobox:
sig
    structure Style:
    sig
        include BIT_FLAGS where type flags = Window.Style.flags
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW: flags and WS_CHILDWINDOW: flags
        and CBS_SIMPLE: flags and CBS_DROPDOWN: flags and CBS_DROPDOWNLIST: flags
        and CBS_OWNERDRAWFIXED: flags and CBS_OWNERDRAWVARIABLE: flags and CBS_AUTOHSCROLL: flags
        and CBS_OEMCONVERT: flags and CBS_SORT: flags and CBS_HASSTRINGS: flags
        and CBS_NOINTEGRALHEIGHT: flags and CBS_DISABLENOSCROLL: flags
        and CBS_UPPERCASE: flags and CBS_LOWERCASE: flags
    end

    structure Notifications:
    sig
        val CBN_SELCHANGE: int
        val CBN_DBLCLK: int
        val CBN_SETFOCUS: int
        val CBN_KILLFOCUS: int
        val CBN_EDITCHANGE: int
        val CBN_EDITUPDATE: int
        val CBN_DROPDOWN: int
        val CBN_CLOSEUP: int
        val CBN_SELENDOK: int
        val CBN_SELENDCANCEL: int
    end

    datatype CBDirAttr =
        DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY |
        DDL_ARCHIVE | DDL_POSTMSGS | DDL_DRIVES | DDL_EXCLUSIVE
end
polyml-5.7.1/documentation/Winref/DragDrop.html0000644000175000017500000000176013204034553020476 0ustar daviddavid Windows Interface Reference: DragDrop structure

DragDrop

The DragDrop structure provides functions to allow file names to be dragged and dropped onto a window. Calling DragAcceptFiles for a window allows it to accept dropped files.   It will then receive a WM_DROPFILES message containing a drop handle when one or more files are dropped on the window.  The file names are retrieved from the drop handle using DragQueryFile and the position within the window with DragQueryPoint.   To complete processing the message call DragFinish.

structure DragDrop:
  sig
    type HDROP
    type HWND (* = Window.HWND *)
    type POINT = { x: int, y: int }
    val DragAcceptFiles : HWND * bool -> unit
    val DragFinish : HDROP -> unit
    val DragQueryFile : HDROP -> string list
    val DragQueryPoint : HDROP -> POINT * bool
  end
polyml-5.7.1/documentation/Winref/Window.html0000644000175000017500000001473313204034553020247 0ustar daviddavid Windows Interface Reference: Window structure

Window

The Window structure contains functions and structures to create and operate on windows. Many other operations are available by sending messages to windows.

structure Window :
sig
    type HWND and HINSTANCE and HMENU
    type POINT = { x: int, y: int }
    type RECT =  { left: int, top: int, right: int, bottom: int }

    structure Style:
    sig
        include BIT_FLAGS
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
    end

    datatype WindowPositionStyle =
            SWP_ASYNCWINDOWPOS
        |    SWP_DEFERERASE
        |    SWP_FRAMECHANGED
        |    SWP_HIDEWINDOW
        |    SWP_NOACTIVATE
        |    SWP_NOCOPYBITS
        |    SWP_NOMOVE
        |    SWP_NOOWNERZORDER
        |    SWP_NOREDRAW
        |    SWP_NOSENDCHANGING
        |    SWP_NOSIZE
        |    SWP_NOZORDER
        |    SWP_SHOWWINDOW
        |    SWP_OTHER of int

    datatype ShowWindowOptions =
        SW_HIDE
    |    SW_MAXIMIZE
    |    SW_MINIMIZE
    |    SW_RESTORE
    |    SW_SHOW
    |    SW_SHOWDEFAULT
    |    SW_SHOWMAXIMIZED
    |    SW_SHOWMINIMIZED
    |    SW_SHOWMINNOACTIVE
    |    SW_SHOWNA
    |    SW_SHOWNOACTIVATE
    |    SW_SHOWNORMAL

    val SW_NORMAL: ShowWindowOptions
    val SW_MAX: ShowWindowOptions

    val ShowWindow: HWND * ShowWindowOptions -> bool

    datatype GetWindowFlags =
        GW_CHILD
    |    GW_HWNDFIRST
    |    GW_HWNDLAST
    |    GW_HWNDNEXT
    |    GW_HWNDPREV
    |    GW_OWNER

    datatype ParentType =
          ChildWindow of {id: int, parent: HWND}
        | PopupWindow of HMENU
        | PopupWithClassMenu

    val GWL_EXSTYLE : int
    val GWL_HINSTANCE : int
    val GWL_HWNDPARENT : int
    val GWL_ID : int
    val GWL_STYLE : int
    val GWL_USERDATA : int

    val AdjustWindowRect : RECT * Style.flags * bool -> RECT
    val AdjustWindowRectEx :  RECT * Style.flags * bool * int -> RECT
    val ArrangeIconicWindows : HWND -> int
    val BringWindowToTop : HWND -> unit
    val CW_USEDEFAULT : int
    val ChildWindowFromPoint : HWND * POINT -> HWND option
    val CloseWindow : HWND -> unit
    val CreateWindow :
       {x: int, y: int, init: 'a, name: string, class: 'a Class.ATOM,
         style: Style.flags, width: int, height: int,
         instance: HINSTANCE, relation: ParentType} -> HWND
    val DestroyWindow: HWND -> unit
    val FindWindow: string * string option -> HWND
    val FindWindowEx: HWND option * HWND option * string * string option -> HWND
    val GetClassName : HWND -> string
    val GetClientRect : HWND -> RECT
    val GetDesktopWindow : unit -> HWND
    val GetForegroundWindow : unit -> HWND
    val GetLastActivePopup : HWND -> HWND
    val GetNextWindow : HWND * GetWindowFlags -> HWND
    val GetParent : HWND -> HWND option
    val GetTopWindow : HWND option-> HWND option
    val GetWindow : HWND * GetWindowFlags -> HWND option
    val GetWindowContextHelpId : HWND -> int
    val GetWindowLong : HWND * int -> int
    val GetWindowRect : HWND -> RECT
    val GetWindowText : HWND -> string
    val GetWindowTextLength : HWND -> int
    val IsChild : HWND * HWND -> bool
    val IsIconic : HWND -> bool
    val IsWindow : HWND -> bool
    val IsWindowVisible : HWND -> bool
    val IsZoomed : HWND -> bool
    val MoveWindow : {x: int, y: int, hWnd: HWND, width: int, height: int, repaint: bool} -> unit
    val OpenIcon : HWND -> unit
    val SetForegroundWindow : HWND -> bool
    val SetParent : HWND * HWND option -> HWND
    val SetWindowContextHelpId : HWND * int -> unit
    val SetWindowLong : HWND * int * int -> int
    val SetWindowPos : HWND * HWND * int * int * int * int * WindowPositionStyle list -> unit
    val SetWindowText : HWND * string -> unit
    val SubclassWindow :
       HWND *
       (HWND * Message.Message * 'a -> Message.LRESULT option * 'a) * 'a -> unit
    val WindowFromPoint : POINT -> HWND option
end

datatype ParentType = ChildWindow of {id: int, parent: HWND} | PopupWindow of HMENU   |  PopupWithClassMenu
The ParentType datatype is used as one of the arguments to CreateWindow.  PopupWithClassMenu and PopupWindow both create top-level windows.  PopupWindow provides a menu to be used whereas PopupWithClassMenu uses the menu, if any, given when the class was created.  ChildWindow creates a child of the given parent window and provides an id for the child.  All children must have different identifiers.   The identifier is used in WM_NOTIFY messages to notify the parent about changes in the child and can be used to find a child window from the parent using GetDlgItem.

 

Subclassing

It is possible to replace a window procedure for a window by subclassing the window.  This is useful where a window is required which is almost the same as, say an Edit window, but it needs to process a few messages in a special way.  A new window procedure is installed which process the particular messages but calls the original window procedure for any of the others.

(The terminology is, in my opinion confusing: subclassing a window does not create a new class of window but changes only a single window).  In C this is done using the SetWindowLong function: in ML there is a SubclassWindow function which does this and automatically calls the window procedure of the base class for any messages which are not otherwise processed.

polyml-5.7.1/documentation/Winref/Path.html0000644000175000017500000000162113204034553017664 0ustar daviddavid Windows Interface Reference: Path structure

Path

The Path structure contains functions to create and operate on paths.

structure Path :
  sig
    type HDC and HRGN
    type POINT = {x: int, y: int}
    datatype PointType = datatype Line.PointType

    val AbortPath : HDC -> unit
    val BeginPath : HDC -> unit
    val CloseFigure : HDC -> unit
    val EndPath : HDC -> unit
    val FillPath : HDC -> unit
    val FlattenPath : HDC -> unit
    val GetMiterLimit : HDC -> real
    val GetPath : HDC -> (PointType * POINT) list
    val PathToRegion : HDC -> HRGN
    val SetMiterLimit : HDC * real -> real
    val StrokeAndFillPath : HDC -> unit
    val StrokePath : HDC -> unit
    val WidenPath : HDC -> unit

  end
polyml-5.7.1/documentation/Winref/Printing.html0000644000175000017500000000146013204034553020563 0ustar daviddavid Windows Interface Reference: Printing structure

Printing

The Printing structure contains functions to control a printer device context.

structure Printing :
  sig
    type HDC
    type DOCINFO = { docName: string, output: string option, dType: string option}

    val StartDoc : HDC * DOCINFO -> int
    val StartPage : HDC -> unit
    val AbortDoc : HDC -> unit
    val EndDoc : HDC -> unit
    val EndPage : HDC -> unit

    datatype WMPrintOption = 
		PRF_CHECKVISIBLE | PRF_NONCLIENT | PRF_CLIENT | PRF_ERASEBKGND |
		PRF_CHILDREN | PRF_OWNED
  end 
polyml-5.7.1/documentation/Winref/Brush.html0000644000175000017500000000350013204034553020051 0ustar daviddavid Windows Interface Reference: Brush structure

Brush

The Brush structure contains functions and structures to create and operate on brushes.   Brushes are used to fill areas of the screen with single colours or patterns.

structure Brush:
  sig
    type HBITMAP and HBRUSH and HDC

    datatype
      HatchStyle =
          HS_BDIAGONAL
        | HS_CROSS
        | HS_DIAGCROSS
        | HS_FDIAGONAL
        | HS_HORIZONTAL
        | HS_VERTICAL

    datatype
      BrushStyle =
          BS_HATCHED of HatchStyle
        | BS_HOLLOW
        | BS_PATTERN of HBITMAP
        | BS_SOLID

    type COLORREF = Color.COLORREF

    type LOGBRUSH = BrushStyle * COLORREF
    type POINT = {x: int, y: int}
    type RasterOpCode = Bitmap.RasterOpCode

    datatype ColorType =
		COLOR_SCROLLBAR
	|	COLOR_BACKGROUND
	|	COLOR_ACTIVECAPTION
	|	COLOR_INACTIVECAPTION
	|	COLOR_MENU
	|	COLOR_WINDOW
	|	COLOR_WINDOWFRAME
	|	COLOR_MENUTEXT
	|	COLOR_WINDOWTEXT
	|	COLOR_CAPTIONTEXT
	|	COLOR_ACTIVEBORDER
	|	COLOR_INACTIVEBORDER
	|	COLOR_APPWORKSPACE
	|	COLOR_HIGHLIGHT
	|	COLOR_HIGHLIGHTTEXT
	|	COLOR_BTNFACE
	|	COLOR_BTNSHADOW
	|	COLOR_GRAYTEXT
	|	COLOR_BTNTEXT
	|	COLOR_INACTIVECAPTIONTEXT
	|	COLOR_BTNHIGHLIGHT
	|	COLOR_3DDKSHADOW
	|	COLOR_3DLIGHT
	|	COLOR_INFOTEXT
	|	COLOR_INFOBK

    val CreateBrushIndirect : LOGBRUSH -> HBRUSH
    val CreateHatchBrush : HatchStyle * COLORREF -> HBRUSH
    val CreatePatternBrush : HBITMAP -> HBRUSH
    val CreateSolidBrush : COLORREF -> HBRUSH
    val GetSysColorBrush : ColorType -> HBRUSH
    val GetBrushOrgEx : HDC -> POINT
    val PatBlt : HDC * int * int * int * int * RasterOpCode -> unit
    val SetBrushOrgEx : HDC * POINT -> POINT
  end
polyml-5.7.1/documentation/Winref/Locale.html0000644000175000017500000000661613204034553020200 0ustar daviddavid Windows Interface Reference: Locale structure

Locale

The Locale structure contains the definitions of language identifiers.  These are used primarily when selecting

structure Locale:
sig
    datatype PrimaryLanguage =
          LANG_AFRIKAANS | LANG_ALBANIAN | LANG_ARABIC | LANG_BASQUE | LANG_BELARUSIAN
        | LANG_BULGARIAN | LANG_CATALAN | LANG_CHINESE | LANG_CROATIAN | LANG_CZECH
        | LANG_DANISH | LANG_DUTCH | LANG_ENGLISH | LANG_ESTONIAN | LANG_FAEROESE
        | LANG_FARSI | LANG_FINNISH | LANG_FRENCH | LANG_GERMAN | LANG_GREEK | LANG_HEBREW
        | LANG_HUNGARIAN | LANG_ICELANDIC | LANG_INDONESIAN | LANG_ITALIAN | LANG_JAPANESE
        | LANG_KOREAN | LANG_LATVIAN | LANG_LITHUANIAN | LANG_NORWEGIAN | LANG_POLISH
        | LANG_PORTUGUESE | LANG_ROMANIAN | LANG_RUSSIAN | LANG_SERBIAN | LANG_SLOVAK
        | LANG_SLOVENIAN | LANG_SPANISH | LANG_SWEDISH | LANG_THAI | LANG_TURKISH
        | LANG_UKRANIAN | LANG_VIETNAMESE | LANG_NEUTRAL

    datatype SubLanguage =
          SUBLANG_ARABIC_ALGERIA | SUBLANG_ARABIC_BAHRAIN | SUBLANG_ARABIC_EGYPT
        | SUBLANG_ARABIC_IRAQ | SUBLANG_ARABIC_JORDAN | SUBLANG_ARABIC_KUWAIT
        | SUBLANG_ARABIC_LEBANON | SUBLANG_ARABIC_LIBYA | SUBLANG_ARABIC_MOROCCO
        | SUBLANG_ARABIC_OMAN | SUBLANG_ARABIC_QATAR | SUBLANG_ARABIC_SAUDI_ARABIA
        | SUBLANG_ARABIC_SYRIA | SUBLANG_ARABIC_TUNISIA | SUBLANG_ARABIC_UAE
        | SUBLANG_ARABIC_YEMEN | SUBLANG_CHINESE_HONGKONG | SUBLANG_CHINESE_SIMPLIFIED
        | SUBLANG_CHINESE_SINGAPORE | SUBLANG_CHINESE_TRADITIONAL | SUBLANG_DUTCH
        | SUBLANG_DUTCH_BELGIAN | SUBLANG_ENGLISH_AUS | SUBLANG_ENGLISH_BELIZE
        | SUBLANG_ENGLISH_CAN | SUBLANG_ENGLISH_CARIBBEAN | SUBLANG_ENGLISH_EIRE
        | SUBLANG_ENGLISH_JAMAICA | SUBLANG_ENGLISH_NZ | SUBLANG_ENGLISH_SOUTH_AFRICA
        | SUBLANG_ENGLISH_TRINIDAD | SUBLANG_ENGLISH_UK | SUBLANG_ENGLISH_US
        | SUBLANG_FRENCH | SUBLANG_FRENCH_BELGIAN | SUBLANG_FRENCH_CANADIAN
        | SUBLANG_FRENCH_LUXEMBOURG | SUBLANG_FRENCH_SWISS | SUBLANG_GERMAN
        | SUBLANG_GERMAN_AUSTRIAN | SUBLANG_GERMAN_LIECHTENSTEIN
        | SUBLANG_GERMAN_LUXEMBOURG | SUBLANG_GERMAN_SWISS | SUBLANG_ITALIAN
        | SUBLANG_ITALIAN_SWISS | SUBLANG_KOREAN | SUBLANG_KOREAN_JOHAB
        | SUBLANG_NORWEGIAN_BOKMAL | SUBLANG_NORWEGIAN_NYNORSK | SUBLANG_PORTUGUESE
        | SUBLANG_PORTUGUESE_BRAZILIAN | SUBLANG_SERBIAN_CYRILLIC | SUBLANG_SERBIAN_LATIN
        | SUBLANG_SPANISH | SUBLANG_SPANISH_ARGENTINA | SUBLANG_SPANISH_BOLIVIA
        | SUBLANG_SPANISH_CHILE | SUBLANG_SPANISH_COLOMBIA | SUBLANG_SPANISH_COSTA_RICA
        | SUBLANG_SPANISH_DOMINICAN_REPUBLIC | SUBLANG_SPANISH_ECUADOR
        | SUBLANG_SPANISH_EL_SALVADOR | SUBLANG_SPANISH_GUATEMALA | SUBLANG_SPANISH_HONDURAS
        | SUBLANG_SPANISH_MEXICAN | SUBLANG_SPANISH_MODERN | SUBLANG_SPANISH_NICARAGUA
        | SUBLANG_SPANISH_PANAMA | SUBLANG_SPANISH_PARAGUAY | SUBLANG_SPANISH_PERU
        | SUBLANG_SPANISH_PUERTO_RICO | SUBLANG_SPANISH_URUGUAY | SUBLANG_SPANISH_VENEZUELA
        | SUBLANG_SWEDISH | SUBLANG_SWEDISH_FINLAND
        | SUBLANG_NEUTRAL | SUBLANG_DEFAULT | SUBLANG_SYS_DEFAULT

 
    datatype LANGID = MAKELANGID of PrimaryLanguage * SubLanguage
    val GetUserDefaultLangID: unit -> LANGID
    and GetSystemDefaultLangID: unit -> LANGID
end
polyml-5.7.1/documentation/Winref/Font.html0000644000175000017500000001322213204034553017676 0ustar daviddavid Windows Interface Reference: Font structure

Fonts and Text

The Font structure contains functions and structures to manipulate fonts and draw text.

structure Font :
  sig
    type HDC and HFONT
    type COLORREF = Color.COLORREF
    type POINT = {x: int, y: int}
    and  SIZE = {cx: int, cy: int }
    and  RECT = { top: int, left: int, bottom: int, right: int }

    datatype FontFamily =
          FF_DECORATIVE
        | FF_DONTCARE
        | FF_MODERN
        | FF_ROMAN
        | FF_SCRIPT
        | FF_SWISS
    and FontPitch = DEFAULT_PITCH | FIXED_PITCH | VARIABLE_PITCH
    and OutputPrecision =
          OUT_CHARACTER_PRECIS
        | OUT_DEFAULT_PRECIS
        | OUT_DEVICE_PRECIS
        | OUT_OUTLINE_PRECIS
        | OUT_RASTER_PRECIS
        | OUT_SCREEN_OUTLINE_PRECIS
        | OUT_STRING_PRECIS
        | OUT_STROKE_PRECIS
        | OUT_TT_ONLY_PRECIS
        | OUT_TT_PRECIS
    and OutputQuality =
          DEFAULT_QUALITY
        | DRAFT_QUALITY
        | OTHER_QUALITY of int
        | PROOF_QUALITY
    and CharacterSet =
          ANSI_CHARSET
        | CHINESEBIG5_CHARSET
        | DEFAULT_CHARSET
        | HANGEUL_CHARSET
        | OEM_CHARSET
        | OTHER_CHARSET of int
        | SHIFTJIS_CHARSET
        | SYMBOL_CHARSET

    type FontWeight =  int
    val FW_BLACK : FontWeight
    val FW_BOLD : FontWeight
    val FW_DEMIBOLD : FontWeight
    val FW_DONTCARE : FontWeight
    val FW_EXTRABOLD : FontWeight
    val FW_EXTRALIGHT : FontWeight
    val FW_HEAVY : FontWeight
    val FW_LIGHT : FontWeight
    val FW_MEDIUM : FontWeight
    val FW_NORMAL : FontWeight
    val FW_REGULAR : FontWeight
    val FW_SEMIBOLD : FontWeight
    val FW_THIN : FontWeight
    val FW_ULTRABOLD : FontWeight
    val FW_ULTRALIGHT : FontWeight

    type ClippingPrecision
    val CLIP_CHARACTER_PRECIS : ClippingPrecision
    val CLIP_DEFAULT_PRECIS : ClippingPrecision
    val CLIP_EMBEDDED : ClippingPrecision
    val CLIP_LH_ANGLES : ClippingPrecision
    val CLIP_MASK : ClippingPrecision
    val CLIP_STROKE_PRECIS : ClippingPrecision
    val CLIP_TT_ALWAYS : ClippingPrecision

    type LOGFONT =
    {
        height : int,
        width : int,
        escapement : int,
        orientation : int,
        weight : FontWeight,
        italic : bool,
        underline : bool,
        strikeOut : bool,
        charSet : CharacterSet,
        outputPrecision: OutputPrecision,
        clipPrecision : ClippingPrecision,
        quality : OutputQuality,
        pitch: FontPitch,
        family: FontFamily,
        faceName : string
    }

    datatype DrawTextMode =
          DT_BOTTOM
        | DT_CALCRECT
        | DT_CENTER
        | DT_EXPANDTABS
        | DT_EXTERNALLEADING
        | DT_INTERNAL
        | DT_LEFT
        | DT_NOCLIP
        | DT_NOPREFIX
        | DT_RIGHT
        | DT_SINGLELINE
        | DT_TABSTOP of int
        | DT_TOP
        | DT_VCENTER
        | DT_WORDBREAK
    and TextAlign =
          TA_BASELINE
        | TA_BOTTOM
        | TA_CENTER
        | TA_LEFT
        | TA_NOUPDATECP
        | TA_RIGHT
        | TA_TOP
        | TA_UPDATECP
    and TextMetricPitch =
          TMPF_DEVICE
        | TMPF_FIXED_PITCH
        | TMPF_TRUETYPE
        | TMPF_VECTOR
    and ExtendedTextMode =
          ETO_CLIPPED
        | ETO_GLYPH_INDEX
        | ETO_IGNORELANGUAGE
        | ETO_OPAQUE
        | ETO_RTLREADING

    type TEXTMETRIC =
            { height: int, ascent: int, descent: int, internalLeading: int, externalLeading: int,
              aveCharWidth: int, maxCharWidth: int, weight: int, overhang: int,
              digitizedAspectX: int, digitizedAspectY: int, firstChar: char, lastChar: char,
              defaultChar: char, breakChar: char, italic: bool, underlined: bool, struckOut: bool,
              pitch: TextMetricPitch list, family: FontFamily, charSet : CharacterSet }

    val AddFontResource : string -> int
    val CreateFont : LOGFONT -> HFONT
    val CreateFontIndirect : LOGFONT -> HFONT
    val CreateScalableFontResource : int * string * string * string -> unit
    val DrawText : HDC * string * RECT * DrawTextMode list -> int
    val ExtTextOut : HDC * POINT * ExtendedTextMode list *
       RECT option * string * int list -> unit
    val GetAspectRatioFilterEx : HDC -> SIZE
    val GetCharABCWidths : HDC * char * char -> (int * int * int) list
    val GetCharABCWidthsFloat : HDC * char * char -> (real * real * real) list
    val GetCharWidth32 : HDC * char * char -> int list
    val GetTabbedTextExtent : HDC * string * int list -> SIZE
    val GetCharWidthFloat : HDC * int * int -> real list
    val GetTextAlign : HDC -> TextAlign list
    val GetTextCharacterExtra : HDC -> int
    val GetTextColor : HDC -> COLORREF
    val GetTextExtentExPoint : HDC * string * int option ->
       {fit: int option, size: SIZE, extents: int list}
    val GetTextExtentPoint32 : HDC * string -> SIZE
    val GetTextFace : HDC -> string
    val GetTextMetrics : HDC -> TEXTMETRIC
    val RemoveFontResource : string -> unit
    val SetMapperFlags : HDC * bool -> bool
    val SetTextAlign : HDC * TextAlign list -> TextAlign list
    val SetTextCharacterExtra : HDC * int -> int
    val SetTextColor : HDC * COLORREF -> COLORREF
    val SetTextJustification : HDC * int * int -> unit
    val TabbedTextOut: HDC * POINT * string * int list * int -> SIZE
    val TextOut : HDC * POINT * String.string -> unit
  end
polyml-5.7.1/documentation/Winref/Keyboard.html0000644000175000017500000000121213204034553020524 0ustar daviddavid Windows Interface Reference: Keyboard structure

Keyboard

The Keyboard structure contains functions to select the window to receive keyboard input.

structure Keyboard:
  sig
    type HWND
    val EnableWindow : HWND * bool -> bool
    val GetActiveWindow : unit -> HWND option
    val GetFocus : unit -> HWND option
    val IsWindowEnabled : HWND -> bool
    val SetActiveWindow : HWND -> HWND
    val SetFocus : HWND option -> HWND option
  end
polyml-5.7.1/documentation/Winref/Dialog.html0000644000175000017500000001267013204034553020175 0ustar daviddavid Windows Interface Reference: Dialog structure

Dialog

The Dialog structure contains functions and structures to create and operate on dialogue boxes.

structure Dialog:
sig
    type HWND and HINSTANCE 
    datatype
      DLGCLASSES =
          DLG_CLASS of string * Window.Style.flags
        | DLG_BUTTON of Button.Style.flags
        | DLG_COMBOBOX of Combobox.Style.flags
        | DLG_EDIT of Edit.Style.flags
        | DLG_LISTBOX of Listbox.Style.flags
        | DLG_SCROLLBAR of Scrollbar.Style.flags
        | DLG_STATIC of Static.Style.flags

    datatype DLGTITLE = DLG_TITLERESOURCE of int | DLG_TITLESTRING of string
 
    structure Style:
    sig
        include BIT_FLAGS
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and DS_3DLOOK: flags and DS_ABSALIGN: flags and DS_CENTER: flags and DS_CENTERMOUSE: flags
        and DS_CONTEXTHELP: flags and DS_CONTROL: flags and DS_FIXEDSYS: flags
        and DS_LOCALEDIT: flags and DS_MODALFRAME: flags and DS_NOFAILCREATE: flags
        and DS_NOIDLEMSG: flags and DS_SETFONT: flags and DS_SETFOREGROUND: flags
        and DS_SYSMODAL: flags
    end

    type DLGITEMTEMPLATE =
        { extendedStyle: int,
          x: int,
          y: int,
          cx : int,
          cy: int,
          id: int,
          class: DLGCLASSES,
          title: DLGTITLE,
          creationData: Word8Vector.vector option
        }
    
    type DLGTEMPLATE =
        { style: Style.flags,
          extendedStyle: int,
          x : int,
          y: int,
          cx: int,
          cy: int,
          menu: Resource.RESID option,
          class: Resource.RESID option,
          title: string,
          font: (int * string) option,
          items: DLGITEMTEMPLATE list
        }

    
    val DialogBox :
        HINSTANCE * Resource.RESID * HWND *
        (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> int
    val DialogBoxIndirect: HINSTANCE * DLGTEMPLATE * HWND *
        (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> int
    val CreateDialog : HINSTANCE * Resource.RESID * HWND *
        (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> HWND
    val CreateDialogIndirect: HINSTANCE * DLGTEMPLATE * HWND *
        (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> HWND

    val GetDialogBaseUnits : unit -> {horizontal: int, vertical: int}
    
    val GetDlgCtrlID: HWND -> int
    and GetDlgItem: HWND * int -> HWND
    and GetDlgItemText: HWND * int -> string
    and IsDialogMessage: HWND * Message.MSG -> bool
    and EndDialog: HWND * int -> unit

    val compileTemplate : DLGTEMPLATE -> Word8Vector.vector
    val decompileTemplate : Word8Vector.vector -> DLGTEMPLATE

DialogBox(hInst, resId, parent, dlgProc, dlgInit)
DialogBoxIndirect(hInst, template, parent, dlgProc, dlgInit)
CreateDialog(hInst, resId, parent, dlgProc, dlgInit)
CreateDialogIndirect(hInst, template, parent, dlgProc, dlgInit)

These four functions all create dialogues.  They all take a dialogue procedure and an initial state for the dialogue.  A dialogue procedure has the form
dlgProc(dlg, msg, state) and returns a pair consisting of the result of processing the message (LRESINT 0 if the message is not processed) and a new state.  Each time the dialogue procedure is called it is passed the state returned by the previous call.
DialogBox and DialogBoxIndirect create modal dialogues and do not return until the dialogue procedure calls EndDialog, typically as a result of the user pressing an OK or Cancel button.  CreateDialog and CreateDialogIndirect create modeless dialogues.   The ML implementation automatically ensures that IsDialogMessage is called for modeless dialogues if RunApplication is used.

compileTemplate(template)
ML Extension:  Compiles an ML dialogue template into the format used by C.  This can be stored to resource file for later use.

decompileTemplate(vector)
ML Extension: Takes a C format dialogue template structure in memory and returns an ML template.  It can be used where a dialogue template has been loaded from a resource file using LoadResource.

 

polyml-5.7.1/documentation/Winref/Scrollbar.html0000644000175000017500000000561413204034553020721 0ustar daviddavid Windows Interface Reference: Scrollbar structure

Scrollbar

The Scrollbar structure contains functions and styles for scroll bars and functions to scroll windows.

structure Scrollbar:
sig
    type HWND and HDC and HRGN
    type RECT =  { left: int, top: int, right: int, bottom: int }

    structure Style:
    sig
        include BIT_FLAGS where type flags = Window.Style.flags
        val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
        and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
        and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
        and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
        and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
        and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
        and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
        and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and SBS_HORZ:flags and SBS_VERT:flags and SBS_TOPALIGN:flags and SBS_LEFTALIGN:flags
        and SBS_BOTTOMALIGN:flags and SBS_RIGHTALIGN:flags and SBS_SIZEBOXTOPLEFTALIGN:flags
        and SBS_SIZEBOXBOTTOMRIGHTALIGN:flags and SBS_SIZEBOX:flags and SBS_SIZEGRIP:flags
    end

    type enableArrows = { enableLeftUp: bool, enableRightDown: bool }

    val ESB_ENABLE_BOTH: enableArrows
    val ESB_DISABLE_BOTH: enableArrows
    val ESB_DISABLE_LEFT: enableArrows
    val ESB_DISABLE_RIGHT: enableArrows
    val ESB_DISABLE_UP: enableArrows
    val ESB_DISABLE_DOWN: enableArrows

    type SCROLLINFO =
        { minPos: int, maxPos: int, pageSize: int, pos: int, trackPos: int }

    datatype ScrollInfoOption =
        SIF_RANGE | SIF_PAGE | SIF_POS | SIF_DISABLENOSCROLL | SIF_TRACKPOS

    val SIF_ALL : ScrollInfoOption list

    datatype ScrollBarType = SB_BOTH | SB_CTL | SB_HORZ | SB_VERT
    datatype ScrollWindowFlag = SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN

    val EnableScrollBar : HWND * ScrollBarType * enableArrows -> unit
    val GetScrollInfo : HWND * ScrollBarType * ScrollInfoOption list -> SCROLLINFO
    val GetScrollPos : HWND * ScrollBarType -> int
    val ScrollDC : HDC * int * int * RECT * RECT * HRGN -> RECT
    val ScrollWindow : HWND * int * int * RECT * RECT -> unit
    val ScrollWindowEx : HWND * int * int * RECT * RECT * HRGN * ScrollWindowFlag list -> RECT
    val SetScrollInfo :
        HWND * ScrollBarType * ScrollInfoOption list * SCROLLINFO * bool -> int
    val SetScrollPos : HWND * ScrollBarType * int * bool -> int
    val SetScrollRange : HWND * ScrollBarType * int * int * bool -> bool
    val ShowScrollBar : HWND * ScrollBarType * bool -> unit
end
=
polyml-5.7.1/documentation/Winref/Message.html0000644000175000017500000012056313204034553020363 0ustar daviddavid Windows Interface Reference: Message structure

Message

The Message structure contains the definition of the message datatype and functions to send and receive messages.

structure Message :
  sig
    datatype ControlType =
          ODT_BUTTON
        | ODT_COMBOBOX
        | ODT_LISTBOX
        | ODT_MENU
        | ODT_STATIC
    datatype ImageType =
          IMAGE_BITMAP
        | IMAGE_CURSOR
        | IMAGE_ENHMETAFILE
        | IMAGE_ICON

    type HGDIOBJ and HWND and HMENU and HICON and HINSTANCE and HDC
    and HFONT and HRGN and HDROP
    type RECT =  { left: int, top: int, right: int, bottom: int }
    type POINT = { x: int, y: int }

    datatype LRESULT = LRESHANDLE of HGDIOBJ | LRESINT of int
    type KeyData
    datatype MDITileFlags = MDITILE_VERTICAL | MDITILE_HORIZONTAL | MDITILE_SKIPDISABLED
    type windowFlags and findReplaceFlags
    datatype ScrollDirection =
          SB_BOTTOM
        | SB_ENDSCROLL
        | SB_LEFT
        | SB_LINEDOWN
        | SB_LINELEFT
        | SB_LINERIGHT
        | SB_LINEUP
        | SB_PAGEDOWN
        | SB_PAGELEFT
        | SB_PAGERIGHT
        | SB_PAGEUP
        | SB_RIGHT
        | SB_THUMBPOSITION
        | SB_THUMBTRACK
        | SB_TOP
    type WindowPositionStyle
    datatype MouseKeyFlags = MK_LBUTTON | MK_RBUTTON | MK_SHIFT | MK_CONTROL | MK_MBUTTON
    type ClipboardFormat and ClassType 

    datatype MarginSettings = 
        UseFontInfo | Margins of {left: int option, right: int option }
    datatype
      SystemCommand =
          SC_ARRANGE
        | SC_CLOSE
        | SC_CONTEXTHELP
        | SC_DEFAULT
        | SC_HOTKEY
        | SC_HSCROLL
        | SC_KEYMENU
        | SC_MAXIMIZE
        | SC_MINIMIZE
        | SC_MONITORPOWER
        | SC_MOUSEMENU
        | SC_MOVE
        | SC_NEXTWINDOW
        | SC_PREVWINDOW
        | SC_RESTORE
        | SC_SCREENSAVE
        | SC_SEPARATOR
        | SC_SIZE
        | SC_TASKLIST
        | SC_VSCROLL
    datatype WMActivateOptions = WA_ACTIVE | WA_CLICKACTIVE | WA_INACTIVE

    datatype
      WMPrintOption =
          PRF_CHECKVISIBLE
        | PRF_CHILDREN
        | PRF_CLIENT
        | PRF_ERASEBKGND
        | PRF_NONCLIENT
        | PRF_OWNED

    datatype WMSizeOptions =
        SIZE_MAXHIDE | SIZE_MAXIMIZED | SIZE_MAXSHOW | SIZE_MINIMIZED | SIZE_RESTORED
    datatype HelpHandle = MenuHandle of HMENU | WindowHandle of HWND

    datatype Message     =
                    WM_ACTIVATE of {active : WMActivateOptions, minimize : bool }
                      (* Indicates a change in activation state *)

                    | WM_ACTIVATEAPP of {active  : bool, threadid: int  } 
                      (* Notifies applications when a new task activates *)

                    | WM_ASKCBFORMATNAME of { length: int, formatName : string ref}    
                      (* Retrieves the name of the clipboard format *)

                    | WM_CANCELJOURNAL    
                      (* Notifies application when user cancels journaling *)

                    | WM_CANCELMODE    
                      (* Notifies a Window to cancel internal modes *)

                    | WM_CHANGECBCHAIN of { removed : HWND, next : HWND  }    
                      (* Notifies clipboard viewer of removal from chain *)

                    | WM_CHAR of {charCode : char, data : KeyData }                       
                      (* Indicates the user pressed a character key *)

                    | WM_CHARTOITEM of {key : int, caretpos : int, listbox  : HWND  }
                      (* Provides list-box keystrokes to owner Window *)

                    | WM_CHILDACTIVATE    
                      (* Notifies a child Window of activation *)

                    | WM_CHOOSEFONT_GETLOGFONT of LOGFONT ref *)
                      (* Retrieves LOGFONT structure for Font dialog box *)

                    | WM_CLEAR
                      (* Clears an edit control *)

                    | WM_CLOSE       
                      (* System Close menu command was chosen *)

                    | WM_COMMAND of {notifyCode : int,
                                  wId        : int,
                                  control    : HWND  }
                      (* Specifies a command message *)
                       
                    | WM_COMPACTING    of { compactratio : int }
                      (* Indicates a low memory condition *)

                    | WM_COMPAREITEM of {controlid : int,
                                           ctlType : ControlType,
                                           ctlID : int,
                                           hItem : HWND,
                                           itemID1 : int,
                                           itemData1 : int,
                                           itemID2 : int,
                                           itemData2 : int                                           
                                           }
                      (* Determines position of combo- or list-box item *)

                    | WM_COPY
                      (* Copies a selection to the clipboard *)

                    | WM_COPYDATA of { sender : HWND, data : int, pdata: Word8Vector.vector }
                      (* Passes data to another application  *)

                    | WM_CREATE    of { instance: HINSTANCE,
                                     creation: int,
                                     menu : HMENU,
                                     parent : HWND,
                                     cy : int,
                                     cx : int,
                                     y : int,
                                     x : int,
                                     style : windowFlags,
                                     name : string,
                                     (* The class may be a string or an atom. *)
                                     class : ClassType,
                                     extendedstyle : int                                                                          
                                     }
                      (* Indicates a Window is being created *)

                    | WM_CTLCOLORBTN of { displaycontext : HDC, button : HWND  }
                      (* Button is about to be drawn *)

                    | WM_CTLCOLORDLG of { displaycontext : HDC,
                                       dialogbox      : HWND  }
                      (* Dialog box is about to be drawn *)
                     
                    | WM_CTLCOLOREDIT of {  displaycontext : HDC, editcontrol : HWND  }
                      (* Control is about to be drawn *)

                    | WM_CTLCOLORLISTBOX of { displaycontext : HDC, listbox : HWND   }
                      (* List box is about to be drawn *)

                    | WM_CTLCOLORMSGBOX    of { displaycontext : HDC,
                                             messagebox     : HWND  }
                      (* Message box is about to be drawn *)

                    | WM_CTLCOLORSCROLLBAR of { displaycontext : HDC,
                                             scrollbar      : HWND  }
                      (* Indicates scroll bar is about to be drawn *)

                    | WM_CTLCOLORSTATIC    of { displaycontext : HDC,
                                             staticcontrol  : HWND  }
                      (* Control is about to be drawn *)
                      (* Note the return value is an HBRUSH *)

                    | WM_CUT
                      (* Deletes a selection and copies it to the clipboard *)

                    | WM_DEADCHAR of { charCode : char, data  : KeyData   }
                      (* Indicates the user pressed a dead key *)

                    | WM_DELETEITEM    of { controlid : int,
                                             ctlType : ControlType,
                                             ctlID : int,
                                             itemID : int,
                                             item : HWND,
                                             itemData : int                                         
                                           }
                      (* Indicates owner-draw item or control was altered *)

                    | WM_DESTROY    
                      (* Indicates Window is about to be destroyed *)

                    | WM_DESTROYCLIPBOARD    
                      (* Notifies owner that the clipboard was emptied *)
                     
                    | WM_DEVMODECHANGE of { devicename : string }    
                      (* Indicates the device-mode settings have changed *)
                     
                    | WM_DRAWCLIPBOARD    
                      (* Indicates the clipboard's contents have changed *) 
                    
                    | WM_DRAWITEM of { controlid : int,
                                       ctlType : ControlType,
                                       ctlID : int,
                                       itemID : int,
                                       itemAction : int,
                                       itemState : int,
                                       hItem : HWND ,
                                       hDC : HDC,
                                       rcItem : RECT,
                                       itemData : int
                                        }    
                      (* Indicates owner-draw control/menu needs redrawing *) 
                     
                    | WM_DROPFILES of { hDrop : HDROP }    
                      (* Indicates that a file has been dropped *)
                    
                    | WM_ENABLE    of { enabled : bool }
                      (* Indicates a Window's enable state is changing *)
                    
                    | WM_ENDSESSION    of { endsession : bool }
                      (* Indicates whether the Windows session is ending *)
                    
                    | WM_ENTERIDLE of { flag : int, window : HWND }
                      (* Indicates a modal dialog box or menu is idle *)
                    
                    | WM_ENTERMENULOOP of { istrack: bool }
                      (* Indicates entry into menu modal loop *)
                    
                    | WM_EXITMENULOOP of { istrack: bool }
                      (* Indicates exit from menu modal loop *)
                    
                    | WM_ERASEBKGND    of { devicecontext : HDC }
                      (* Indicates a Window's background need erasing *)
                    
                    | WM_FONTCHANGE
                      (* Indicates a change in the font-resource pool *)
                     
                    | WM_GETDLGCODE
                      (* Allows dialog procedure to process control input *)
                    
                    | WM_GETFONT    
                      (* Retrieves the font that a control is using *)
                    
                    | WM_GETHOTKEY
                      (* Gets the virtual-key code of a Window's hot key *) 
                    
                    | WM_GETMINMAXINFO of { MaxSizex      : int,
                                            MaxSizey      : int,
                                            MaxPositionx  : int,
                                            MaxPositiony  : int,
                                            MinTrackSizex : int,
                                            MinTrackSizey : int,
                                            MaxTrackSizex : int,
                                            MaxTrackSizey : int                                            
                                             }
                      (* Gets minimum and maximum sizing information *)
                    
                    | WM_GETTEXT of { length: int, text : string ref  }    
                      (* Gets the text that corresponds to a Window *)
                    
                    | WM_GETTEXTLENGTH    
                      (* Gets length of text associated with a Window *)
                    
                    | WM_HOTKEY    of { id : int }
                      (* Hot key has been detected *)
                    
                    | WM_HSCROLL of { value    : ScrollDirection,
                                       position : int,
                                       scrollbar   : HWND  }    
                      (* Indicates a click in a horizontal scroll bar *)
                    
                    | WM_HSCROLLCLIPBOARD of { viewer   : HWND,
                                               code     : int,
                                               position : int  }    
                      (* Prompts owner to scroll clipboard contents *)
                    
                    | WM_ICONERASEBKGND    of { devicecontext : HDC }
                      (* Notifies minimized Window to fill icon background *)
                    
                    | WM_INITDIALOG    of { dialog   : HWND, initdata : int  }
                      (* Initializes a dialog box *)
                    
                    | WM_INITMENU of { menu : HMENU }    
                      (* Indicates a menu is about to become active *)
                    
                    | WM_INITMENUPOPUP of { menupopup  : HMENU,
                                            itemposition : int,
                                            isSystemMenu : bool  }
                      (* Indicates a pop-up menu is being created *)
                    
                    | WM_KEYDOWN of { virtualKey : int, data : KeyData  }    
                      (* Indicates a nonsystem key was pressed *)
                    
                    | WM_KEYUP of { virtualKey : int, data : KeyData  }    
                      (* Indicates a nonsystem key was released *)
                    
                    | WM_KILLFOCUS of { receivefocus : HWND }
                      (* Indicates the Window is losing keyboard focus *)
                    
                    | WM_LBUTTONDBLCLK of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates double-click of left button *) 
                    
                    | WM_LBUTTONDOWN of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates when left mouse button is pressed *)
                    
                    | WM_LBUTTONUP of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates when left mouse button is released *)
                    
                    | WM_MBUTTONDBLCLK of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates double-click of middle mouse button *)
                    
                    | WM_MBUTTONDOWN of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates when middle mouse button is pressed *)
                    
                    | WM_MBUTTONUP of { keyflags : MouseKeyFlags list, x : int, y : int  }
                      (* Indicates when middle mouse button is released *)
                          
                    | WM_MDICASCADE of { skipDisabled : bool  }    
                      (* Arranges MDI child Windows in cascade format *)
                    
                    | WM_MDICREATE of { class : ClassType,
                                         title : string,
                                         instance: HINSTANCE,
                                         x : int,
                                         y : int,
                                         cx : int,
                                         cy : int,
                                         style : int,
                                         cdata : int }    
                      (* Prompts MDI client to create a child Window *) 
                    
                    | WM_MDIDESTROY of { child : HWND  }    
                      (* Closes an MDI child Window *) 
                    
                    | WM_MDIGETACTIVE
                      (* Retrieves data about the active MDI child Window *) 
                    
                    | WM_MDIICONARRANGE    
                      (* Arranges minimized MDI child Windows *) 
                    
                    | WM_MDIMAXIMIZE of {  child: HWND  }    
                      (* Maximizes an MDI child Window *) 
                    
                    | WM_MDINEXT of { child    : HWND, flagnext : bool  }
                      (* Activates the next MDI child Window *) 
                    
                    | WM_MDIREFRESHMENU
                      (* Refreshes an MDI frame Window's menu *) 
                     
                    | WM_MDIRESTORE    of {  child : HWND  }
                      (* Prompts MDI client to restore a child Window *) 
                    
                    | WM_MDISETMENU  of { frameMenu  : HMENU, windowMenu : HMENU  } 
                      (* Replaces an MDI frame Window's menu *) 
                    
                    | WM_MDITILE of { tilingflag : MDITileFlags list }
                      (* Arranges MDI child Windows in tiled format *) 
                    
                    | WM_MEASUREITEM of { controlid  : int,
                                          ctlType    : ControlType,
                                          ctlID      : int,
                                          itemID     : int,
                                          itemWidth  : int,
                                          itemHeight : int,
                                          itemData   : int
                                         }    
                      (* Requests dimensions of owner-draw control or item *)

                    | WM_MENUCHAR of { ch : char, menuflag : MenuBase.MenuFlag, menu : HMENU }    
                      (* Indicates an unknown menu mnemonic was pressed *)
                     
                    | WM_MENUSELECT    of { menuitem  : int,
                                         menuflags : MenuBase.MenuFlag list,
                                         menu      : HMENU  }
                      (* Indicates that the user selected a menu item *)
                    
                    | WM_MOUSEACTIVATE of { parent   : HWND,
                                            hitTest : int,
                                            message  : int  }    
                      (* Indicates a mouse click in an inactive Window *) 
                    
                    | WM_MOUSEMOVE of { keyflags : MouseKeyFlags list, x : int, y : int  }    
                      (* Indicates mouse-cursor movement *)
                    
                    | WM_MOVE of { x : int, y : int  }    
                      (* Indicates a Window's position has changed *)
                    
                    | WM_NCACTIVATE of { active : bool }
                      (* Changes the active state of nonclient area *)
                    
                    | WM_NCCALCSIZE    of { validarea     : bool,
                                             newrect       : RECT,
                                             oldrect       : RECT,
                                             oldclientarea : RECT,
                                             hwnd           : HWND,
                                             insertAfter   : HWND,
                                             x     : int,
                                             y     : int,
                                             cx    : int,
                                             cy    : int,
                                             style : WindowPositionStyle list
                                           }
                      (* Calculates the size of a Window's client area *)
                    
                    | WM_NCCREATE of { instance: HINSTANCE,
                                    creation: int,
                                       menu : HMENU,
                                       parent : HWND,
                                       cy : int,
                                       cx : int,
                                       y : int,
                                       x : int,
                                       style : windowFlags,
                                       name : string,
                                       class : ClassType,
                                       extendedstyle : int                      
                                      }    
                      (* Indicates a Window's nonclient area being created *)

                    | WM_NCDESTROY    
                      (* Indicates Window's nonclient area being destroyed *)

                    | WM_NCHITTEST of { x : int, y : int  }    
                      (* Indicates mouse-cursor movement *)
                    
                    | WM_NCLBUTTONDBLCLK of { hitTest : int,
                                              x     : int,
                                              y     : int  }    
                      (* Indicates nonclient left button double-click *)
                     
                    | WM_NCLBUTTONDOWN    of { hitTest : int, x : int, y : int  }    
                      (* Indicates left button pressed in nonclient area *)
                    
                    | WM_NCLBUTTONUP of { hitTest : int, x : int, y : int  }    
                      (* Indicates left button released in nonclient area *)
                    
                    | WM_NCMBUTTONDBLCLK of { hitTest : int, x : int, y : int  }    
                      (* Indicates nonclient middle button double-click *)
                    
                    | WM_NCMBUTTONDOWN of { hitTest : int, x : int, y : int  }    
                      (* Indicates middle button pressed in nonclient area *)
                    
                    | WM_NCMBUTTONUP of { hitTest : int, x : int, y : int  }    
                      (* Indicates middle button released in nonclient area *)
                    
                    | WM_NCMOUSEMOVE of { hitTest : int, x : int, y : int  }    
                      (* Indicates mouse-cursor movement in nonclient area *)
                    
                    | WM_NCPAINT of { region : HRGN  }    
                      (* Indicates a Window's frame needs painting *)
                    
                    | WM_NCRBUTTONDBLCLK of { hitTest : int, x : int, y : int  }    
                      (* Indicates nonclient right button double-click *)
                    
                    | WM_NCRBUTTONDOWN of { hitTest : int, x : int, y : int  }    
                      (* Indicates right button pressed in nonclient area *)
                    
                    | WM_NCRBUTTONUP of { hitTest : int, x : int, y : int  }    
                      (* Indicates right button released in nonclient area *)
                    
                    | WM_NEXTDLGCTL    of { control    : int, handleflag : bool  } 
                      (* Sets focus to different dialog box control *) 
                    
                    | WM_PAINT    
                      (* Indicates a Window's client area need painting *)
                    
                    | WM_PAINTCLIPBOARD of { clipboard : HWND }
                      (* Prompts owner to display clipboard contents *)
                    
                    | WM_PAINTICON
                      (* Icon is about to be painted *) 

                    | WM_PALETTECHANGED of { palChg : HWND  }    
                      (* Indicates the focus-Window realized its palette *)
                    
                    | WM_PALETTEISCHANGING of { realize : HWND  }    
                      (* Informs Windows that palette is changing *) 
                    
                    | WM_PARENTNOTIFY of { eventflag : int, idchild   : int, value : int }    
                      (* Notifies parent of child-Window activity *) 
                    
                    | WM_PASTE    
                      (* Inserts clipboard data into an edit control *)
                    
                    | WM_POWER of { powerevent : int  }    
                      (* Indicates the system is entering suspended mode *)
                    
                    | WM_QUERYDRAGICON    
                      (* Requests a cursor handle for a minimized Window *)
                    
                    | WM_QUERYENDSESSION of { source : int  }
                      (* Requests that the Windows session be ended *) 
                    
                    | WM_QUERYNEWPALETTE
                      (* Allows a Window to realize its logical palette *) 
                    
                    | WM_QUERYOPEN
                      (* Requests that a minimized Window be restored *) 
                    
                    | WM_QUEUESYNC
                      (* Delimits CBT messages *) 
                    
                    | WM_QUIT of { exitcode : int  }    
                      (* Requests that an application be terminated *)
                    
                    | WM_RBUTTONDBLCLK of { keyflags : MouseKeyFlags list, x: int, y: int  }    
                      (* Indicates double-click of right mouse button *)
                    
                    | WM_RBUTTONDOWN of { keyflags : MouseKeyFlags list, x: int, y: int  }    
                      (* Indicates when right mouse button is pressed *)

                    | WM_RBUTTONUP of { keyflags : MouseKeyFlags list, x: int, y: int  }
                      (* Indicates when right mouse button is released *) 
                    
                    | WM_RENDERALLFORMATS    
                      (* Notifies owner to render all clipboard formats *) 
                    
                    | WM_RENDERFORMAT of { format : ClipboardFormat  }    
                      (* Notifies owner to render clipboard data *) 
                    
                    | WM_SETCURSOR of { cursorwindow : HWND, hitTest : int, mousemessage : int  }    
                      (* Prompts a Window to set the cursor shape *) 
                    
                    | WM_SETFOCUS of { losing : HWND  }
                    
                    | WM_SETFONT of {font : HFONT, redrawflag : bool  }    
                    
                    | WM_SETHOTKEY of { virtualKey : int  }    
                    
                    | WM_SETREDRAW of { redrawflag : int  }
                    
                    | WM_SETTEXT of { text : string  }    
                    
                    | WM_SHOWWINDOW    of { showflag   : bool, statusflag : int  } 
                    
                    | WM_SIZE of { flag : WMSizeOptions, width : int, height : int  }    
                    
                    | WM_SIZECLIPBOARD of { viewer : HWND}
                    
                    | WM_SPOOLERSTATUS of { jobstatus : int, jobsleft  : int  }    
                    
                    | WM_SYSCHAR of { charCode : char, data : KeyData  }
                    
                    | WM_SYSCOLORCHANGE
                    
                    | WM_SYSCOMMAND of { commandvalue : SystemCommand, p: POINT }
                    
                    | WM_SYSDEADCHAR of { charCode : char, data : KeyData  }
                   
                    | WM_SYSKEYDOWN of { virtualKey : int, data : KeyData  }

                    | WM_SYSKEYUP of { virtualKey : int, data : KeyData  }
                    
                    | WM_TIMECHANGE    
                      (* Indicates the system time has been set *)
                    
                    | WM_TIMER of { timerid : int  }
                    
                    | WM_UNDO    
                     
                    | WM_USER of { uMsg: int, wParam: int, lParam: int }
                    | WM_APP of { uMsg: int, wParam: int, lParam: int }
                    | WM_REGISTERED of { uMsg: int, wParam: int, lParam: int }
                    
                    | WM_VKEYTOITEM    of { virtualKey : int,
                                         caretpos   : int,
                                         listbox    : HWND  }
                     
                    | WM_VSCROLL of { value     : ScrollDirection,
                                      position  : int,
                                      scrollbar : HWND  }

                    | WM_VSCROLLCLIPBOARD of { viewer   : HWND,
                                               code     : int,
                                               position : int  }
                    
                    | WM_WINDOWPOSCHANGED of { hwnd: HWND, front  : HWND,
                                               x   : int,
                                               y   : int,
                                               width  : int,
                                               height : int,
                                               flags  : WindowPositionStyle list }
                    
                    | WM_WINDOWPOSCHANGING of { hwnd: HWND, front  : HWND,
                                                x   : int,
                                                y   : int,
                                                width  : int,
                                                height : int,
                                                flags  : WindowPositionStyle list }    
                     
                    | WM_SETTINGCHANGE of { section_name : string  }    

                    | WM_NOTIFY of {from: HWND, idCtrl: int, idFrom : int, code: int }

                    | WM_CAPTURECHANGED of { newCapture: HWND }

                    | WM_ENTERSIZEMOVE

                    | WM_EXITSIZEMOVE

                    | WM_PRINT of {hdc: HDC, flags: WMPrintOption list }

                    | WM_PRINTCLIENT of {hdc: HDC, flags: WMPrintOption list }

                    | WM_HELP of { ctrlId: int, itemHandle: HelpHandle, contextId: int,
                                   mousePos: POINT }

                    | WM_GETICON of { big: bool }

                    | WM_SETICON of { big: bool, icon: HICON }

                    | WM_CONTEXTMENU of { hwnd: HWND, xPos: int, yPos: int }

                    | WM_DISPLAYCHANGE of { bitsPerPixel: int, xScreen: int, yScreen: int }

                    | EM_CANUNDO

                    | EM_CHARFROMPOS of { point: POINT }

                    | EM_EMPTYUNDOBUFFER

                    | EM_FMTLINES of {addEOL: bool}

                    | EM_GETFIRSTVISIBLELINE

                    | EM_GETLIMITTEXT

                    | EM_GETLINE of { lineNo: int, size: int, result: string ref }

                    | EM_GETLINECOUNT

                    | EM_GETMARGINS

                    | EM_GETMODIFY

                    | EM_GETPASSWORDCHAR

                    | EM_GETRECT of {rect: RECT ref}

                    | EM_GETSEL of {startPos: int ref, endPos: int ref}

                    | EM_GETTHUMB

                    | EM_LIMITTEXT of {limit: int}

                    | EM_LINEFROMCHAR of {index: int}

                    | EM_LINEINDEX of {line: int}

                    | EM_LINELENGTH of {index: int}

                    | EM_LINESCROLL of {xScroll: int, yScroll: int}

                    | EM_POSFROMCHAR of {index: int}

                    | EM_REPLACESEL of {canUndo: bool, text: string}

                    | EM_SCROLL of {action: ScrollDirection}

                    | EM_SCROLLCARET

                    | EM_SETMARGINS of {margins: MarginSettings}

                    | EM_SETMODIFY of { modified: bool }

                    | EM_SETPASSWORDCHAR of { ch: char }

                    | EM_SETREADONLY of { readOnly: bool }

                    | EM_SETRECT of {rect: RECT}

                    | EM_SETRECTNP of {rect: RECT}

                    | EM_SETSEL of {startPos: int, endPos: int}

                    | EM_SETTABSTOPS of {tabs: int list}

                    | EM_UNDO

                    | BM_CLICK

                    | BM_GETCHECK

                    | BM_GETIMAGE of {imageType: ImageType}

                    | BM_GETSTATE

                    | BM_SETCHECK of {state: int}

                    | BM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType}

                    | BM_SETSTATE of {highlight: bool }

                    | BM_SETSTYLE of {redraw: bool, style: windowFlags}

                    | CB_GETEDITSEL of {startPos: int ref, endPos: int ref}

                    | CB_LIMITTEXT of {limit: int}

                    | CB_SETEDITSEL of {startPos: int, endPos: int}

                    | CB_ADDSTRING of { text: string }

                    | CB_DELETESTRING of { index: int }

                    | CB_GETCOUNT

                    | CB_GETCURSEL

                    | CB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string }

                    | CB_GETLBTEXT of { index: int, length: int, text: string ref }

                    | CB_GETLBTEXTLEN of { index: int }

                    | CB_INSERTSTRING of { index: int, text: string }

                    | CB_RESETCONTENT

                    | CB_FINDSTRING of { indexStart: int, text: string }

                    | CB_SELECTSTRING of { indexStart: int, text: string }

                    | CB_SETCURSEL of { index: int }

                    | CB_SHOWDROPDOWN of { show: bool }

                    | CB_GETITEMDATA of { index: int }

                    | CB_SETITEMDATA of { index: int, data: int }

                    | CB_GETDROPPEDCONTROLRECT of { rect: RECT ref }

                    | CB_SETITEMHEIGHT of { index: int, height: int }

                    | CB_GETITEMHEIGHT of { index: int }

                    | CB_SETEXTENDEDUI of { extended: bool }

                    | CB_GETEXTENDEDUI

                    | CB_GETDROPPEDSTATE

                    | CB_FINDSTRINGEXACT of { indexStart: int, text: string }

                    | CB_SETLOCALE of { locale: int }

                    | CB_GETLOCALE

                    | CB_GETTOPINDEX

                    | CB_SETTOPINDEX of { index: int }

                    | CB_GETHORIZONTALEXTENT

                    | CB_SETHORIZONTALEXTENT of { extent: int }

                    | CB_GETDROPPEDWIDTH

                    | CB_SETDROPPEDWIDTH of { width: int }

                    | CB_INITSTORAGE of { items: int, bytes: int }

                    | LB_ADDSTRING of { text: string }

                    | LB_INSERTSTRING of { index: int, text: string }

                    | LB_DELETESTRING of { index: int }

                    | LB_SELITEMRANGEEX of { first: int, last: int }

                    | LB_RESETCONTENT

                    | LB_SETSEL of { select: bool, index: int }

                    | LB_SETCURSEL of { index: int }

                    | LB_GETSEL of { index: int }

                    | LB_GETCURSEL

                    | LB_GETTEXT of { index: int, length: int, text: string ref }

                    | LB_GETTEXTLEN of { index: int }

                    | LB_GETCOUNT

                    | LB_SELECTSTRING of { indexStart: int, text: string }

                    | LB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string }

                    | LB_GETTOPINDEX

                    | LB_FINDSTRING of { indexStart: int, text: string }

                    | LB_GETSELCOUNT

                    | LB_GETSELITEMS of { itemCount: int, items: int list ref }

                    | LB_SETTABSTOPS of { tabs: int list }

                    | LB_GETHORIZONTALEXTENT

                    | LB_SETHORIZONTALEXTENT of { extent: int }

                    | LB_SETCOLUMNWIDTH of { column: int }

                    | LB_ADDFILE of { fileName: string }

                    | LB_SETTOPINDEX of { index: int }

                    | LB_GETITEMRECT of { rect: RECT ref, index: int }

                    | LB_GETITEMDATA of { index: int }

                    | LB_SETITEMDATA of { index: int, data: int }

                    | LB_SELITEMRANGE of { select: bool, first: int, last: int }

                    | LB_SETANCHORINDEX of { index: int }

                    | LB_GETANCHORINDEX

                    | LB_SETCARETINDEX of { index: int, scroll: bool }

                    | LB_GETCARETINDEX

                    | LB_SETITEMHEIGHT of { index: int, height: int }

                    | LB_GETITEMHEIGHT of { index: int }

                    | LB_FINDSTRINGEXACT of { indexStart: int, text: string }

                    | LB_SETLOCALE of { locale: int } (* Should be an abstract type? *)

                    | LB_GETLOCALE (* Result will be the type used above. *)

                    | LB_SETCOUNT of { items: int }

                    | LB_INITSTORAGE of { items: int, bytes: int }

                    | LB_ITEMFROMPOINT of { point: POINT }

                    | STM_GETICON

                    | STM_GETIMAGE of {imageType: ImageType}

                    | STM_SETICON of {icon: HICON}

                    | STM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType}

                    | SBM_SETPOS of { pos: int, redraw: bool }

                    | SBM_GETPOS

                    | SBM_SETRANGE of { minPos: int, maxPos: int }

                    | SBM_SETRANGEREDRAW of { minPos: int, maxPos: int }

                    | SBM_GETRANGE of { minPos: int ref, maxPos: int ref }

                    | SBM_ENABLE_ARROWS of ScrollBase.enableArrows

                    | SBM_SETSCROLLINFO of { info: ScrollBase.SCROLLINFO,
                                             options: ScrollBase.ScrollInfoOption list }

                    | SBM_GETSCROLLINFO of { info: ScrollBase.SCROLLINFO ref,
                                             options: ScrollBase.ScrollInfoOption list }

                    | FINDMSGSTRING of
                        { flags: findReplaceFlags, findWhat: string, replaceWith: string }

                    | NULL


    type MSG = {
        msg: Message,
        hwnd: HWND,
        time: Time.time,
        pt: {x: int, y: int}
        }

    val GetInputState : unit -> bool
    val GetMessage : HWND option * int * int -> MSG
    val GetMessagePos : unit -> POINT
    val GetMessageTime : unit -> Time.time

    datatype
      QueueStatus =
          QS_ALLPOSTMESSAGE
        | QS_HOTKEY
        | QS_KEY
        | QS_MOUSEBUTTON
        | QS_MOUSEMOVE
        | QS_PAINT
        | QS_POSTMESSAGE
        | QS_SENDMESSAGE
        | QS_TIMER
    val QS_ALLEVENTS : QueueStatus list
    val QS_ALLINPUT : QueueStatus list
    val QS_INPUT : QueueStatus list
    val QS_MOUSE : QueueStatus list
    val GetQueueStatus : QueueStatus list -> QueueStatus list

    val InSendMessage : unit -> bool

    datatype PeekMessageOptions = PM_NOREMOVE | PM_REMOVE
    val PeekMessage : HWND option * int * int * PeekMessageOptions -> MSG option
    val PostQuitMessage : int -> unit
    val RegisterWindowMessage : string -> int
    val RunApplication : unit -> int
    val SendMessage : HWND * Message -> LRESULT
    val PostMessage : HWND * Message -> unit
    val HWND_BROADCAST: HWND
    val WaitMessage : unit -> bool
  end

datatype LRESULT = LRESHANDLE of HGDIOBJ | LRESINT of int
This type is used as the result of sending a message.  Most messages return integers but a few messages, such as STM_GETICON, return handles to objects. 

RunApplication(): int
ML-Extension: Processes and dispatches messages to the appropriate windows.  Returns when a WM_QUIT message is processed with the result passed in this message.  It also ensures that keyboard operations are correctly passed to modeless dialogues by calling IsDialogMessage automatically.  RunApplication should be used in preference to GetMessage. 

SendMessage:(hw, msg): LRESULT
Sends a message to a window and returns the result returned by the window procedure.   If the message contains references which are updated by the window procedure the updates will be made in the message before the function returns.

PostMessage:(hw, msg): unit
Queues a message for a window but does not wait until the window procedure processes the message before it returns.  The message is copied to the queue so any updates made by the window procedure will not affect references in the message.

 

polyml-5.7.1/documentation/Winref/Resource.html0000644000175000017500000000322613204034553020562 0ustar daviddavid Windows Interface Reference: Resource structure

Resource

The Resource structure contains functions to load resources from a resource file.   In many cases there are functions in other structures which will load the appropriate item from the resource file.

structure Resource :
  sig
   datatype ResourceType =
        RT_CURSOR | RT_BITMAP | RT_ICON | RT_MENU | RT_DIALOG | RT_STRING | RT_FONTDIR |
        RT_FONT | RT_ACCELERATOR | RT_RCDATA | RT_MESSAGETABLE | RT_GROUP_CURSOR |
        RT_GROUP_ICON | RT_VERSION | RT_DLGINCLUDE | RT_ANICURSOR | RT_ANIICON |
        RT_PLUGPLAY | RT_VXD

    type HRSRC
    type HRSRCGLOBAL
    type HINSTANCE

    datatype RESID = IdAsInt of int | IdAsString of string
    val MAKEINTRESOURCE : int -> RESID

    type HUPDATE

    val BeginUpdateResource : string * bool -> HUPDATE
    val EndUpdateResource : HUPDATE * bool -> unit
    val FindResource : HINSTANCE * RESID * ResourceType -> HRSRC
    val FindResourceEx : HINSTANCE * ResourceType * RESID * Locale.LANGID -> HRSRC
    val FreeLibrary : HINSTANCE -> bool
    val LoadLibrary : string -> HINSTANCE
    val LoadResource : HINSTANCE * HRSRC -> HRSRCGLOBAL
    val LoadString : HINSTANCE * RESID -> string
    val LockResource : HRSRCGLOBAL -> Word8Vector.vector
    val SizeofResource : HINSTANCE * HRSRC -> int
    val UpdateResource :
       HUPDATE * ResourceType * RESID * Locale.LANGID * Word8Vector.vector option -> unit
  end
polyml-5.7.1/documentation/PrettyPrint.html0000644000175000017500000001356513204034553020054 0ustar daviddavid Pretty Printing

Pretty Printing

The way pretty printing is handled in Poly/ML changed in version 5.3. This describes the functions and datatypes that were added in that version. The old mechanism, using PolyML.install_pp, is deprecated and may be removed in a future release.

The basic model, described in the paper by D.C. Oppen ACM ToPLAS Vol. 2 No. 4 Oct 1980, is unchanged but instead of a set of imperative functions pretty printing is structured around the PolyML.pretty datatype and the pretty printing algorithm is now functional rather than imperative.

datatype pretty =
     PrettyBlock of int * bool * context list * pretty list
   | PrettyBreak of int * int
   | PrettyString of string

and context =
    ContextLocation of location
  | ContextParentStructure of string * context list
  | ContextProperty of string * string

withtype location =
   { file: string, startLine: int, startPosition: int, endLine: int, endPosition: int }

PrettyString s contains a string to be printed. PrettyBlock(indent, consistent, context, items) defines a block of items which may be strings, breaks or blocks. The items will be retained on a single line if possible. The indent parameter is an indentation that will be added to the current indentation if the block has to be broken. Note that this does not apply to the first item in the block which will always be printed with the current indentation. The consistent parameter indicates whether the block is to be broken consistently (true) or not (false). If it is true then if the block will not all fit on a line and must be broken then it will be broken at all the breaks in the block whether this is necessary or not. If it is false it will only be broken where necessary. Neither of these parameters are used if the block will fit on a line. PrettyBreak(blanks, breakOffset) indicates a break between items. If the line is not broken at this point then blanks is the number of space characters that will be inserted. If the line is broken at that point then instead the following item is indented by an extra breakOffset spaces.

The context and location types are primarily used by the IDE when providing error messages. For most purposes the context argument to PrettyBlock can be the empty list. ContextProperty can be used by a user-supplied pretty printer to provide extra information which may be useful if the result of pretty printing is to be processed by a user function. It is not produced by Poly/ML pretty printers and the default printers ignore this item. ContextParentStructure was used to deal with types inside structures in an early draft and will probably be removed.

A pretty printer can be associated with a datatype using PolyML.addPrettyPrinter.

val addPrettyPrinter: (int -> 'a -> 'b -> pretty)-> unit

This function has a polymorphic type but is specially handled by the compiler. addPrettyPrinter pp installs a pretty printer pp where pp has arguments depth printArgTypes value. The first argument, depth, is the print depth. This is a value that indicates how much of the data structure should be displayed. If this value is zero or negative the pretty printer should always print a simple string such as PrettyString "...". The third argument, value, is a value of the datatype. When installing a pretty printer there must be sufficient type constraint so that the compiler is able to determine the type unambiguiously. The second argument, printArgTypes, is only used for polytypes i.e. datatypes defined as 'a t or ('a, 'b', 'c ...) t. It is not used for monotypes. If the type takes a single argument then printArgTypes has type 'a * int -> pretty and is the function that will generate the pretty data structure for the argument type. The int argument is the adjusted print depth and should normally be one less than the value of depth. If the type takes multiple arguments then printArgTypes is a tuple with each field being a function of type 'a * int -> pretty that is used for the corresponding argument of the datatype.

As well as PolyML.addPrettyPrinter there some other functions in the PolyML structure that may be useful.

val prettyRepresentation : 'a * int -> pretty

This function returns the pretty structure that can be used to print a value of the given type up to the specified depth. It is similar to PolyML.print in being infinitely overloaded. It can be useful when writing a pretty printer for a datatype that includes types that already have pretty printers installed or where they will be installed later since it uses any pretty printers for the types when it is actually called.

val prettyPrint: (string -> unit) * int -> pretty -> unit

This function takes an output function and a line length and outputs a pretty structure, interpretting the layout information.


polyml-5.7.1/libpolyml/0000755000175000017500000000000013204034553014002 5ustar daviddavidpolyml-5.7.1/libpolyml/io_internal.h0000644000175000017500000001037113204034553016460 0ustar daviddavid/* Title: Data structures shared between basioio.c and network.c. Copyright (c) 2000, 2016 David C. J. Matthews Portions of this code are derived from the original stream io package copyright CUTS 1983-2000. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef IO_INTERNAL_H #define IO_INTERNAL_H #define IO_BIT_OPEN 1 #define IO_BIT_READ 2 #define IO_BIT_WRITE 4 #define IO_BIT_DIR 8 /* Is it a directory entry? */ #define IO_BIT_SOCKET 16 /* Is it a socket? */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define IO_BIT_PIPE 128 #define IO_BIT_DEV 256 #define IO_BIT_GUI_CONSOLE 512 #include #else typedef int SOCKET; //#include #endif #ifdef HAVE_DIRENT_H # include # define NAMLEN(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NAMLEN(dirent) (dirent)->d_namlen # if HAVE_SYS_NDIR_H # include # endif # if HAVE_SYS_DIR_H # include # endif # if HAVE_NDIR_H # include # endif #endif typedef struct basic_io_struct { PolyWord token; // Either a pointer or a tagged int for stdIn etc. int ioBits; /* Flag bits */ union { int ioDesc; /* File descriptor. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) struct { HANDLE hFind; /* FindFirstFile handle */ WIN32_FIND_DATA lastFind; int fFindSucceeded; } directory; SOCKET sock; #else #define sock ioDesc DIR *ioDir; /* Directory entry. */ #endif } device; #if (defined(_WIN32) && ! defined(__CYGWIN__)) HANDLE hAvailable; // Used to signal available data #endif } IOSTRUCT, *PIOSTRUCT; class TaskData; #define isOpen(s) ((s)->ioBits & IO_BIT_OPEN) #define isRead(s) ((s)->ioBits & IO_BIT_READ) #define isWrite(s) ((s)->ioBits & IO_BIT_WRITE) #define isDirectory(s) ((s)->ioBits & IO_BIT_DIR) #define isSocket(s) ((s)->ioBits & IO_BIT_SOCKET) #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Needed because testing for available input is different depending on the device. // Console here means our Windows GUI. #define isPipe(s) ((s)->ioBits & IO_BIT_PIPE) #define isDevice(s) ((s)->ioBits & IO_BIT_DEV) #define isConsole(s) ((s)->ioBits & IO_BIT_GUI_CONSOLE) #endif // Token representing a closed stream. #define ClosedToken TAGGED(-1) extern PIOSTRUCT get_stream(PolyWord token); extern Handle make_stream_entry(TaskData *mdTaskData); extern void free_stream_entry(POLYUNSIGNED stream_no); extern void close_stream(PIOSTRUCT str); extern PIOSTRUCT basic_io_vector; extern bool emfileFlag; // This is used in both basicio and unix-specific #if defined(HAVE_STRUCT_STAT_ST_ATIM) # define STAT_SECS(stat,kind) (stat)->st_##kind##tim.tv_sec # define STAT_USECS(stat,kind) (((stat)->st_##kind##tim.tv_nsec + 500) / 1000) #elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC) # define STAT_SECS(stat,kind) (stat)->st_##kind##time # define STAT_USECS(stat,kind) (((stat)->st_##kind##timensec + 500) / 1000) #elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC) # define STAT_SECS(stat,kind) (stat)->st_##kind##timespec.tv_sec # define STAT_USECS(stat,kind) (((stat)->st_##kind##timespec.tv_nsec + 500) / 1000) #elif defined(HAVE_STRUCT_STAT_ST_ATIME_N) # define STAT_SECS(stat,kind) (stat)->st_##kind##time # define STAT_USECS(stat,kind) (((stat)->st_##kind##time_n + 500) / 1000) #elif defined(HAVE_STRUCT_STAT_ST_UATIME) # define STAT_SECS(stat,kind) (stat)->st_##kind##time # define STAT_USECS(stat,kind) (stat)->st_u##kind##time #else # define STAT_SECS(stat,kind) (stat)->st_##kind##time # define STAT_USECS(stat,kind) 0 #endif #endif polyml-5.7.1/libpolyml/globals.h0000644000175000017500000004365213204034553015610 0ustar daviddavid/* Title: Globals for the system. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000-7 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _GLOBALS_H #define _GLOBALS_H /* Poly words, pointers and objects. The garbage collector needs to be able to distinguish different uses of a memory word. We need to be able find which words are pointers to other objects and which are simple integers. The simple distinction is between integers, which are tagged by having the bottom bit set, and Addresses which are word aligned (bottom 2 bits set on a 32 bit machine, bottom 3 bits on a 64 bit machine). There is a third case that can arise where we have a return address to a piece of code. These are generally aligned on a word+two-byte boundary except that they can appear with any alignment in the saved PC field of a stack. Normally these will only appear on the stack or in a register saved to the stack but they can be passed as an argument to SetCodeConstant. Addresses always point to the start of objects. There is one exception: a stack object can contain addresses within the current stack. The preceding word of a stack object is the length word. This contains the length of the object in words in the low-order 3 (7 on a 64-bit machine) bytes and a flag byte in the top byte. The flags give information about the type of the object. The length word is also used by the garbage collector and other object processors. */ /* Generally we use a tagged integer representation with 31 bits of precision and the low-order bit as a tag bit. one represents a tagged integer, zero a pointer. Code pointers are always aligned onto a word + 2 byte boundary. The exception is the Sparc which has special tagged add and subtract instructions. These cause a trap if given a value which is not a multiple of 4. To make use of these instructions we represent tagged integers using 30 bits of precision and with the low order bits containing 01. DCJM 27/9/00. */ #if HAVE_STDINT_H # include #endif #if HAVE_INTTYPES_H # ifndef __STDC_FORMAT_MACROS # define __STDC_FORMAT_MACROS # endif # include #endif #ifdef HAVE_STDDEF_H # include #endif // Integers (non-pointers) have the bottom bit set and the rest of the word // contains the significant bits. The original native code Sparc version // shifted by two so that it could use the Taddcc/Tsubcc instructions. #define POLY_TAGSHIFT 1 #if (defined(_WIN32) && ! defined(__CYGWIN__)) # include #endif typedef intptr_t POLYSIGNED; typedef uintptr_t POLYUNSIGNED; // libpolyml uses printf-style I/O instead of C++ standard IOstreams, // so we need specifier to format POLYUNSIGNED/POLYSIGNED values. #ifdef PRIuPTR # define POLYUFMT PRIuPTR # define POLYSFMT PRIdPTR #elif (defined(_MSC_VER) && (SIZEOF_VOIDP == 8)) # define POLYUFMT "llu" # define POLYSFMT "lld" #else # define POLYUFMT "lu" // as before. Cross your fingers. # define POLYSFMT "ld" // idem. #endif typedef unsigned char byte; class PolyObject; typedef PolyObject *POLYOBJPTR; typedef byte *POLYCODEPTR; class PolyWord { public: // An object pointer can become a word directly. PolyWord(POLYOBJPTR p) { contents.objectPtr = p; } // Initialise to TAGGED(0). This is very rarely used. PolyWord() { contents.unsignedInt = 1; } // Integers need to be tagged. static PolyWord TaggedInt(POLYSIGNED s) { return PolyWord((s << POLY_TAGSHIFT) | (POLYSIGNED)0x01); } static PolyWord TaggedUnsigned(POLYUNSIGNED u) { return PolyWord((u << POLY_TAGSHIFT) | 0x01); } static PolyWord FromStackAddr(PolyWord *sp) { return PolyWord(sp); } static PolyWord FromCodePtr(POLYCODEPTR p) { return PolyWord(p); } // Tests for the various cases. bool IsTagged(void) const { return (contents.unsignedInt & 1) != 0; } bool IsDataPtr(void) const { return (contents.unsignedInt & (sizeof(PolyWord)-1)) == 0; } // Extract the various cases. POLYSIGNED UnTagged(void) const { return contents.signedInt >> POLY_TAGSHIFT; } POLYUNSIGNED UnTaggedUnsigned(void) const { return contents.unsignedInt >> POLY_TAGSHIFT; } POLYOBJPTR AsObjPtr(void) const { return contents.objectPtr; } PolyWord *AsStackAddr(void) const { return contents.stackAddr; } POLYCODEPTR AsCodePtr(void) const { return contents.codePtr; } void *AsAddress(void)const { return AsCodePtr(); } // There are a few cases where we need to store and extract untagged values static PolyWord FromUnsigned(POLYUNSIGNED u) { return PolyWord(u); } static PolyWord FromSigned(POLYSIGNED s) { return PolyWord(s); } POLYUNSIGNED AsUnsigned(void) const { return contents.unsignedInt; } POLYSIGNED AsSigned(void) const { return contents.signedInt; } protected: PolyWord(POLYSIGNED s) { contents.signedInt = s; } PolyWord(POLYUNSIGNED u) { contents.unsignedInt = u; } public: bool operator == (PolyWord b) const { return contents.unsignedInt == b.contents.unsignedInt; } bool operator != (PolyWord b) const { return contents.unsignedInt != b.contents.unsignedInt; } protected: PolyWord(PolyWord *sp) { contents.stackAddr = sp; } PolyWord(POLYCODEPTR p) { contents.codePtr = p; } union { POLYSIGNED signedInt; // A tagged integer - lowest bit set POLYUNSIGNED unsignedInt; // A tagged integer - lowest bit set POLYOBJPTR objectPtr; // Object pointer - two lowest bits clear. POLYCODEPTR codePtr; // Address within code - lowest bits contain 10. PolyWord *stackAddr; // Address within current stack - two lowest bits clear. } contents; }; //typedef PolyWord POLYWORD; inline bool OBJ_IS_AN_INTEGER(const PolyWord & a) { return a.IsTagged(); } inline bool OBJ_IS_DATAPTR(const PolyWord & a) { return a.IsDataPtr(); } // The maximum tagged signed number is one less than 0x80 shifted into the top byte then shifted down // by the tag shift. #define MAXTAGGED (((POLYSIGNED)0x80 << (POLYSIGNED)(8*(sizeof(PolyWord)-1) -POLY_TAGSHIFT)) -1) inline PolyWord TAGGED(POLYSIGNED a) { return PolyWord::TaggedInt(a); } inline POLYSIGNED UNTAGGED(PolyWord a) { return a.UnTagged(); } inline POLYUNSIGNED UNTAGGED_UNSIGNED(PolyWord a) { return a.UnTaggedUnsigned(); } #define IS_INT(x) ((x).IsTagged()) /************************************************************************ * * Low level definitions. * ************************************************************************/ /* length word flags */ /* The following encodings are used: (1) OBJ_PRIVATE_GC_BIT = 0 A normal length word i.e. 7 more flags + 24 bit length. (2) OBJ_PRIVATE_GC_BIT = 1, OBJ_PRIVATE_MUTABLE_BIT = 0 A "normal" tombstone. Remaining 30 bits are (word-aligned) pointer >> 2. (3) OBJ_PRIVATE_GC_BIT = 1, OBJ_PRIVATE_MUTABLE_BIT = 1 A "depth" tombstone; used by share program. Remaining 30 bits are an unsigned integer representing the (approximate) depth of the object in the data-structure. SPF 24/1/95 */ #define OBJ_PRIVATE_FLAGS_SHIFT (8 * (sizeof(PolyWord) - 1)) #define _TOP_BYTE(x) ((POLYUNSIGNED)(x) << OBJ_PRIVATE_FLAGS_SHIFT) // Bottom two bits define the content format. // Zero bits mean ordinary word object containing addresses or tagged integers. #define F_BYTE_OBJ 0x01 /* byte object (contains no pointers) */ #define F_CODE_OBJ 0x02 /* code object (mixed bytes and words) */ #define F_GC_MARK 0x04 // Used during the GC marking phase #define F_NO_OVERWRITE 0x08 /* don't overwrite when loading - mutables only. */ // This bit is overloaded and has different meanings depending on what other bits are set. // For byte objects it is the sign bit for arbitrary precision ints. // For other data it indicates either that the object is a profile block or contains // information for allocation profiling. #define F_NEGATIVE_BIT 0x10 // Sign bit for arbitrary precision ints (byte segs only) #define F_PROFILE_BIT 0x10 // Object has a profile pointer (word segs only) #define F_WEAK_BIT 0x20 /* object contains weak references to option values. */ #define F_MUTABLE_BIT 0x40 /* object is mutable */ #define F_PRIVATE_GC_BIT 0x80 /* object is (pointer or depth) tombstone */ #define F_PRIVATE_FLAGS_MASK 0xFF #define _OBJ_BYTE_OBJ _TOP_BYTE(0x01) /* byte object (contains no pointers) */ #define _OBJ_CODE_OBJ _TOP_BYTE(0x02) /* code object (mixed bytes and words) */ #define _OBJ_GC_MARK _TOP_BYTE(0x04) // Mark bit #define _OBJ_NO_OVERWRITE _TOP_BYTE(0x08) /* don't overwrite when loading - mutables only. */ #define _OBJ_NEGATIVE_BIT _TOP_BYTE(0x10) /* sign bit for arbitrary precision ints */ #define _OBJ_PROFILE_BIT _TOP_BYTE(0x10) /* sign bit for arbitrary precision ints */ #define _OBJ_WEAK_BIT _TOP_BYTE(0x20) #define _OBJ_MUTABLE_BIT _TOP_BYTE(0x40) /* object is mutable */ #define _OBJ_PRIVATE_GC_BIT _TOP_BYTE(0x80) /* object is (pointer or depth) tombstone */ #define _OBJ_PRIVATE_FLAGS_MASK _TOP_BYTE(0xFF) #define _OBJ_PRIVATE_LENGTH_MASK ((-1) ^ _OBJ_PRIVATE_FLAGS_MASK) #define MAX_OBJECT_SIZE _OBJ_PRIVATE_LENGTH_MASK #define _OBJ_PRIVATE_DEPTH_MASK (_OBJ_PRIVATE_GC_BIT|_OBJ_MUTABLE_BIT) /* case 1 - proper length words */ inline bool OBJ_IS_LENGTH(POLYUNSIGNED L) { return ((L & _OBJ_PRIVATE_GC_BIT) == 0); } /* these should only be applied to proper length words */ /* discards GC flag, mutable bit and weak bit. */ inline byte GetTypeBits(POLYUNSIGNED L) { return (byte)(L >> OBJ_PRIVATE_FLAGS_SHIFT) & 0x03; } inline POLYUNSIGNED OBJ_OBJECT_LENGTH(POLYUNSIGNED L) { return L & _OBJ_PRIVATE_LENGTH_MASK; } inline bool OBJ_IS_BYTE_OBJECT(POLYUNSIGNED L) { return (GetTypeBits(L) == F_BYTE_OBJ); } inline bool OBJ_IS_CODE_OBJECT(POLYUNSIGNED L) { return (GetTypeBits(L) == F_CODE_OBJ); } inline bool OBJ_IS_NO_OVERWRITE(POLYUNSIGNED L) { return ((L & _OBJ_NO_OVERWRITE) != 0); } inline bool OBJ_IS_NEGATIVE(POLYUNSIGNED L) { return ((L & _OBJ_NEGATIVE_BIT) != 0); } inline bool OBJ_HAS_PROFILE(POLYUNSIGNED L) { return ((L & _OBJ_PROFILE_BIT) != 0); } inline bool OBJ_IS_MUTABLE_OBJECT(POLYUNSIGNED L) { return ((L & _OBJ_MUTABLE_BIT) != 0); } inline bool OBJ_IS_WEAKREF_OBJECT(POLYUNSIGNED L) { return ((L & _OBJ_WEAK_BIT) != 0); } /* Don't need to worry about whether shift is signed, because OBJ_PRIVATE_USER_FLAGS_MASK removes the sign bit. We don't want the GC bit (which should be 0) anyway. */ #define OBJ_PRIVATE_USER_FLAGS_MASK _TOP_BYTE(0x7F) #define OBJ_IS_WORD_OBJECT(L) (GetTypeBits(L) == 0) /* case 2 - forwarding pointer */ inline bool OBJ_IS_POINTER(POLYUNSIGNED L) { return (L & _OBJ_PRIVATE_DEPTH_MASK) == _OBJ_PRIVATE_GC_BIT; } inline PolyObject *OBJ_GET_POINTER(POLYUNSIGNED L) { return (PolyObject*)(( L & ~_OBJ_PRIVATE_DEPTH_MASK) <<2); } inline POLYUNSIGNED OBJ_SET_POINTER(PolyObject *pt) { return ((POLYUNSIGNED)pt >> 2) | _OBJ_PRIVATE_GC_BIT; } /* case 3 - depth */ inline bool OBJ_IS_DEPTH(POLYUNSIGNED L) { return (L & _OBJ_PRIVATE_DEPTH_MASK) == _OBJ_PRIVATE_DEPTH_MASK; } inline POLYUNSIGNED OBJ_GET_DEPTH(POLYUNSIGNED L) { return L & ~_OBJ_PRIVATE_DEPTH_MASK; } inline POLYUNSIGNED OBJ_SET_DEPTH(POLYUNSIGNED n) { return n | _OBJ_PRIVATE_DEPTH_MASK; } // or sharing chain inline bool OBJ_IS_CHAINED(POLYUNSIGNED L) { return (L & _OBJ_PRIVATE_DEPTH_MASK) == _OBJ_PRIVATE_DEPTH_MASK; } inline PolyObject *OBJ_GET_CHAIN(POLYUNSIGNED L) { return (PolyObject*)(( L & ~_OBJ_PRIVATE_DEPTH_MASK) <<2); } inline POLYUNSIGNED OBJ_SET_CHAIN(PolyObject *pt) { return ((POLYUNSIGNED)pt >> 2) | _OBJ_PRIVATE_DEPTH_MASK; } // An object i.e. a piece of allocated memory in the heap. In the simplest case this is a // tuple, a list cons cell, a string or a ref. Every object has a length word in the word before // where its address points. The top byte of this contains flags. class PolyObject { public: byte *AsBytePtr(void)const { return (byte*)this; } PolyWord *AsWordPtr(void)const { return (PolyWord*)this; } POLYUNSIGNED LengthWord(void)const { return ((PolyWord*)this)[-1].AsUnsigned(); } POLYUNSIGNED Length(void)const { return OBJ_OBJECT_LENGTH(LengthWord()); } // Get and set a word PolyWord Get(POLYUNSIGNED i) const { return ((PolyWord*)this)[i]; } void Set(POLYUNSIGNED i, PolyWord v) { ((PolyWord*)this)[i] = v; } PolyWord *Offset(POLYUNSIGNED i) const { return ((PolyWord*)this)+i; } // Create a length word from a length and the flags in the top byte. void SetLengthWord(POLYUNSIGNED l, byte f) { ((POLYUNSIGNED*)this)[-1] = l | ((POLYUNSIGNED)f << OBJ_PRIVATE_FLAGS_SHIFT); } void SetLengthWord(POLYUNSIGNED l) { ((PolyWord*)this)[-1] = PolyWord::FromUnsigned(l); } bool IsByteObject(void) const { return OBJ_IS_BYTE_OBJECT(LengthWord()); } bool IsCodeObject(void) const { return OBJ_IS_CODE_OBJECT(LengthWord()); } bool IsWordObject(void) const { return OBJ_IS_WORD_OBJECT(LengthWord()); } bool IsMutable(void) const { return OBJ_IS_MUTABLE_OBJECT(LengthWord()); } bool IsWeakRefObject(void) const { return OBJ_IS_WEAKREF_OBJECT(LengthWord()); } bool IsNoOverwriteObject(void) const { return OBJ_IS_NO_OVERWRITE(LengthWord()); } bool ContainsForwardingPtr(void) const { return OBJ_IS_POINTER(LengthWord()); } PolyObject *GetForwardingPtr(void) const { return OBJ_GET_POINTER(LengthWord()); } void SetForwardingPtr(PolyObject *newp) { ((PolyWord*)this)[-1] = PolyWord::FromUnsigned(OBJ_SET_POINTER(newp)); } bool ContainsShareChain(void) const { return OBJ_IS_CHAINED(LengthWord()); } PolyObject *GetShareChain(void) const { return OBJ_GET_CHAIN(LengthWord()); } void SetShareChain(PolyObject *newp) { ((PolyWord*)this)[-1] = PolyWord::FromUnsigned(OBJ_SET_CHAIN(newp)); } bool ContainsNormalLengthWord(void) const { return OBJ_IS_LENGTH(LengthWord()); } // Find the start of the constant section for a piece of code. // The first of these is really only needed because we may have objects whose length // words have been overwritten. void GetConstSegmentForCode(POLYUNSIGNED obj_length, PolyWord * &cp, POLYUNSIGNED &count) const { PolyWord *last_word = Offset(obj_length - 1); // Last word in the code count = last_word->AsUnsigned(); // This is the number of consts cp = last_word - count; } void GetConstSegmentForCode(PolyWord * &cp, POLYUNSIGNED &count) const { GetConstSegmentForCode(Length(), cp, count); } PolyWord *ConstPtrForCode(void) const { PolyWord *cp; POLYUNSIGNED count; GetConstSegmentForCode(cp, count); return cp; } // Follow a chain of forwarding pointers PolyObject *FollowForwardingChain(void) { if (ContainsForwardingPtr()) return GetForwardingPtr()->FollowForwardingChain(); else return this; } }; /* There was a problem with version 2.95 on Sparc/Solaris at least. The PolyObject class has no members so classes derived from it e.g. ML_Cons_Cell should begin at the beginning of the object. Later versions of GCC get this right. */ #if defined(__GNUC__) && (__GNUC__ <= 2) #error Poly/ML requires GCC version 3 or newer #endif inline POLYUNSIGNED GetLengthWord(PolyWord p) { return p.AsObjPtr()->LengthWord(); } // Get the length of an object. inline POLYUNSIGNED OBJECT_LENGTH(PolyWord p) { return OBJ_OBJECT_LENGTH(GetLengthWord(p)); } // A list cell. This can be passed to or returned from certain RTS functions. class ML_Cons_Cell: public PolyObject { public: PolyWord h; PolyWord t; #define ListNull (TAGGED(0)) static bool IsNull(PolyWord p) { return p == ListNull; } }; /* An exception packet. This contains an identifier (either a tagged integer for RTS exceptions or the address of a mutable for those created within ML), a string name for printing and an exception argument value. */ class PolyException: public PolyObject { public: PolyWord ex_id; /* Exc identifier */ PolyWord ex_name;/* Exc name */ PolyWord arg; /* Exc arguments */ PolyWord ex_location; // Location of "raise". Always zero for RTS exceptions. }; typedef PolyException poly_exn; /* * Stream tokens are pointers to UNTAGGED C integers * (stored in byte objects) */ class StreamToken: public PolyObject { public: POLYUNSIGNED streamNo; }; /* Macro to round a number of bytes up to a number of words. */ #define WORDS(s) ((s+sizeof(PolyWord)-1)/sizeof(PolyWord)) /********************************************************************** * * Representation of option type. * **********************************************************************/ #define NONE_VALUE (TAGGED(0)) /* SOME x is represented by a single word cell containing x. */ #if (defined(_WIN32)) /* Windows doesn't include 0x in %p format. */ #define ZERO_X "0x" #else #define ZERO_X "" #endif #endif polyml-5.7.1/libpolyml/memmgr.h0000644000175000017500000003420713204034553015445 0ustar daviddavid/* Title: memmgr.h Memory segment manager Copyright (c) 2006-8, 2010-12, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MEMMGR_H #define MEMMGR_H #include "bitmap.h" #include "locking.h" #include // utility conversion macros #define Words_to_K(w) (w*sizeof(PolyWord))/1024 #define Words_to_M(w) (w*sizeof(PolyWord))/(1<<20) #define B_to_M(b) (b/(1<<20)) class ScanAddress; class GCTaskId; class TaskData; typedef enum { ST_PERMANENT, // Permanent areas are part of the object code // Also loaded saved state. ST_LOCAL, // Local heaps contain volatile data ST_EXPORT, // Temporary export area ST_STACK, // ML Stack for a thread ST_CODE // Code created in the current run } SpaceType; // B-tree used in SpaceForAddress. Leaves are MemSpaces. class SpaceTree { public: SpaceTree(bool is): isSpace(is) { } virtual ~SpaceTree() {} bool isSpace; }; // A non-leaf node in the B-tree class SpaceTreeTree: public SpaceTree { public: SpaceTreeTree(); virtual ~SpaceTreeTree(); SpaceTree *tree[256]; }; // Base class for the various memory spaces. class MemSpace: public SpaceTree { protected: MemSpace(); virtual ~MemSpace(); public: SpaceType spaceType; bool isMutable; bool isOwnSpace; // True if this has been allocated. bool isCode; PolyWord *bottom; // Bottom of area PolyWord *top; // Top of area. POLYUNSIGNED spaceSize(void)const { return top-bottom; } // No of words // These next two are used in the GC to limit scanning for // weak refs. PolyWord *lowestWeak, *highestWeak; // Used when printing debugging info virtual const char *spaceTypeString() { return isMutable ? "mutable" : "immutable"; } friend class MemMgr; }; // Permanent memory space. Either linked into the executable program or // loaded from a saved state file. class PermanentMemSpace: public MemSpace { protected: PermanentMemSpace(): index(0), hierarchy(0), noOverwrite(false), byteOnly(false), topPointer(0) {} public: unsigned index; // An identifier for the space. Used when saving and loading. unsigned hierarchy; // The hierarchy number: 0=from executable, 1=top level saved state, ... bool noOverwrite; // Don't save this in deeper hierarchies. bool byteOnly; // Only contains byte data - no need to scan for addresses. // When exporting or saving state we copy data into a new area. // This area grows upwards unlike the local areas that grow down. PolyWord *topPointer; Bitmap shareBitmap; // Used in sharedata Bitmap profileCode; // Used when profiling friend class MemMgr; }; #define NSTARTS 10 // Markable spaces are used as the base class for local heap // spaces and code spaces. class MarkableSpace: public MemSpace { protected: MarkableSpace(); virtual ~MarkableSpace() {} public: PolyWord *fullGCRescanStart; // Upper and lower limits for rescan during mark phase. PolyWord *fullGCRescanEnd; PLock spaceLock; // Lock used to protect forwarding pointers }; // Local areas can be garbage collected. class LocalMemSpace: public MarkableSpace { protected: LocalMemSpace(); virtual ~LocalMemSpace() {} bool InitSpace(POLYUNSIGNED size, bool mut); public: // Allocation. The minor GC allocates at the bottom of the areas while the // major GC and initial allocations are made at the top. The reason for this // is that it's only possible to scan objects from the bottom up and the minor // GC combines scanning with allocation whereas the major GC compacts from the // bottom into the top of an area. PolyWord *upperAllocPtr; // Allocation pointer. Objects are allocated AFTER this. PolyWord *lowerAllocPtr; // Allocation pointer. Objects are allocated BEFORE this. PolyWord *fullGCLowerLimit;// Lowest object in area before copying. PolyWord *partialGCTop; // Value of upperAllocPtr before the current partial GC. PolyWord *partialGCScan; // Scan pointer used in minor GC PolyWord *partialGCRootBase; // Start of the root objects. PolyWord *partialGCRootTop;// Value of lowerAllocPtr after the roots have been copied. GCTaskId *spaceOwner; // The thread that "owns" this space during a GC. Bitmap bitmap; /* bitmap with one bit for each word in the GC area. */ bool allocationSpace; // True if this is (mutable) space for initial allocation POLYUNSIGNED start[NSTARTS]; /* starting points for bit searches. */ unsigned start_index; /* last index used to index start array */ POLYUNSIGNED i_marked; /* count of immutable words marked. */ POLYUNSIGNED m_marked; /* count of mutable words marked. */ POLYUNSIGNED updated; /* count of words updated. */ POLYUNSIGNED allocatedSpace(void)const // Words allocated { return (top-upperAllocPtr) + (lowerAllocPtr-bottom); } POLYUNSIGNED freeSpace(void)const // Words free { return upperAllocPtr-lowerAllocPtr; } virtual const char *spaceTypeString() { return allocationSpace ? "allocation" : MemSpace::spaceTypeString(); } // Used when converting to and from bit positions in the bitmap POLYUNSIGNED wordNo(PolyWord *pt) { return pt - bottom; } PolyWord *wordAddr(POLYUNSIGNED bitno) { return bottom + bitno; } friend class MemMgr; }; class StackObject; // Abstract - Architecture specific // Stack spaces. These are managed by the thread module class StackSpace: public MemSpace { public: StackSpace() { isOwnSpace = true; } StackObject *stack()const { return (StackObject *)bottom; } }; // Code Space. These contain local code created by the compiler. class CodeSpace: public MarkableSpace { public: CodeSpace(PolyWord *start, POLYUNSIGNED spaceSize); Bitmap headerMap; // Map to find the headers during GC or profiling. POLYUNSIGNED largestFree; // The largest free space in the area PolyWord *firstFree; // The start of the first free space in the area. }; class MemMgr { public: MemMgr(); ~MemMgr(); // Create a local space for initial allocation. LocalMemSpace *CreateAllocationSpace(POLYUNSIGNED size); // Create and initialise a new local space and add it to the table. LocalMemSpace *NewLocalSpace(POLYUNSIGNED size, bool mut); // Create an entry for a permanent space. PermanentMemSpace *NewPermanentSpace(PolyWord *base, POLYUNSIGNED words, unsigned flags, unsigned index, unsigned hierarchy = 0); // Delete a local space. Takes the iterator position in lSpaces and returns the // iterator after deletion. void DeleteLocalSpace(std::vector::iterator &iter); // Allocate an area of the heap of at least minWords and at most maxWords. // This is used both when allocating single objects (when minWords and maxWords // are the same) and when allocating heap segments. If there is insufficient // space to satisfy the minimum it will return 0. Updates "maxWords" with // the space actually allocated PolyWord *AllocHeapSpace(POLYUNSIGNED minWords, POLYUNSIGNED &maxWords, bool doAllocation = true); PolyWord *AllocHeapSpace(POLYUNSIGNED words) { POLYUNSIGNED allocated = words; return AllocHeapSpace(words, allocated); } CodeSpace *NewCodeSpace(POLYUNSIGNED size); // Allocate space for code. This is initially mutable to allow the code to be built. PolyObject *AllocCodeSpace(PolyObject *initCell); // Check that a subsequent allocation will succeed. Called from the GC to ensure bool CheckForAllocation(POLYUNSIGNED words); // If an allocation space has a lot of data left in it, particularly a single // large object we should turn it into a local area. void ConvertAllocationSpaceToLocal(LocalMemSpace *space); // Allocate space for the initial stack for a thread. The caller must // initialise the new stack. Returns 0 if allocation fails. StackSpace *NewStackSpace(POLYUNSIGNED size); // Adjust the space for a stack. Returns true if it succeeded. If it failed // it leaves the stack untouched. bool GrowOrShrinkStack(TaskData *taskData, POLYUNSIGNED newSize); // Delete a stack when a thread has finished. bool DeleteStackSpace(StackSpace *space); // Create and delete export spaces PermanentMemSpace *NewExportSpace(POLYUNSIGNED size, bool mut, bool noOv, bool code); void DeleteExportSpaces(void); bool PromoteExportSpaces(unsigned hierarchy); // Turn export spaces into permanent spaces. bool DemoteImportSpaces(void); // Turn previously imported spaces into local. PermanentMemSpace *SpaceForIndex(unsigned index); // Return the space for a given index // As a debugging check, write protect the immutable areas apart from during the GC. void ProtectImmutable(bool on); // Find a space that contains a given address. This is called for every cell // during a GC so needs to be fast., // N.B. This must be called on an address at the beginning or within the cell. // Generally that means with a pointer to the length word. Pointing at the // first "data" word may give the wrong result if the length is zero. MemSpace *SpaceForAddress(const void *pt) const { uintptr_t t = (uintptr_t)pt; SpaceTree *tr = spaceTree; // Each level of the tree is either a leaf or a vector of trees. unsigned j = sizeof(void *)*8; for (;;) { if (tr == 0 || tr->isSpace) return (MemSpace*)tr; j -= 8; tr = ((SpaceTreeTree*)tr)->tree[(t >> j) & 0xff]; } return 0; } // Find a local address for a space. // N.B. The argument should generally be the length word. See // comment on SpaceForAddress. LocalMemSpace *LocalSpaceForAddress(const void *pt) const { MemSpace *s = SpaceForAddress(pt); if (s != 0 && s->spaceType == ST_LOCAL) return (LocalMemSpace*)s; else return 0; } void SetReservation(POLYUNSIGNED words) { reservedSpace = words; } // In several places we assume that segments are filled with valid // objects. This fills unused memory with one or more "byte" objects. void FillUnusedSpace(PolyWord *base, POLYUNSIGNED words); // Return number of words of free space for stats. POLYUNSIGNED GetFreeAllocSpace(); // Remove unused local areas. void RemoveEmptyLocals(); // Remove unused code areas. void RemoveEmptyCodeAreas(); // Remove unused allocation areas to reduce the space below the limit. void RemoveExcessAllocation(POLYUNSIGNED words); void RemoveExcessAllocation() { RemoveExcessAllocation(spaceBeforeMinorGC); } // Table for permanent spaces std::vector pSpaces; // Table for local spaces std::vector lSpaces; // Table for export spaces std::vector eSpaces; // Table for stack spaces std::vector sSpaces; PLock stackSpaceLock; // Table for code spaces std::vector cSpaces; PLock codeSpaceLock; // Storage manager lock. PLock allocLock; // Lock for creating new bitmaps for code profiling PLock codeBitmapLock; unsigned nextIndex; // Used when allocating new permanent spaces. POLYUNSIGNED SpaceBeforeMinorGC() const { return spaceBeforeMinorGC; } POLYUNSIGNED SpaceForHeap() const { return spaceForHeap; } void SetSpaceBeforeMinorGC(POLYUNSIGNED minorSize) { spaceBeforeMinorGC = minorSize; } void SetSpaceForHeap(POLYUNSIGNED heapSize) { spaceForHeap = heapSize; } POLYUNSIGNED CurrentAllocSpace() { return currentAllocSpace; } POLYUNSIGNED AllocatedInAlloc(); POLYUNSIGNED CurrentHeapSize() { return currentHeapSize; } POLYUNSIGNED DefaultSpaceSize() const { return defaultSpaceSize; } void ReportHeapSizes(const char *phase); // Profiling - Find a code object or return zero if not found. PolyObject *FindCodeObject(const byte *addr); // Profiling - Free bitmaps to indicate start of an object. void RemoveProfilingBitmaps(); private: bool AddLocalSpace(LocalMemSpace *space); bool AddCodeSpace(CodeSpace *space); POLYUNSIGNED reservedSpace; unsigned nextAllocator; // The default size in words when creating new segments. POLYUNSIGNED defaultSpaceSize; // The number of words that can be used for initial allocation. POLYUNSIGNED spaceBeforeMinorGC; // The number of words that can be used for the heap POLYUNSIGNED spaceForHeap; // The current sizes of the allocation space and the total heap size. POLYUNSIGNED currentAllocSpace, currentHeapSize; // LocalSpaceForAddress is a hot-spot so we use a B-tree to convert addresses; SpaceTree *spaceTree; PLock spaceTreeLock; void AddTree(MemSpace *space) { AddTree(space, space->bottom, space->top); } void RemoveTree(MemSpace *space) { RemoveTree(space, space->bottom, space->top); } void AddTree(MemSpace *space, PolyWord *startS, PolyWord *endS); void RemoveTree(MemSpace *space, PolyWord *startS, PolyWord *endS); void AddTreeRange(SpaceTree **t, MemSpace *space, uintptr_t startS, uintptr_t endS); void RemoveTreeRange(SpaceTree **t, MemSpace *space, uintptr_t startS, uintptr_t endS); }; extern MemMgr gMem; #endif polyml-5.7.1/libpolyml/processes.h0000644000175000017500000003061513204034553016166 0ustar daviddavid/* Title: Lightweight process library Author: David C.J. Matthews Copyright (c) 2007-8, 2012, 2015, 2017 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _PROCESSES_H_ #define _PROCESSES_H_ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #include "globals.h" #include "rts_module.h" #include "save_vec.h" #include "noreturn.h" #include "locking.h" class SaveVecEntry; typedef SaveVecEntry *Handle; class StackSpace; class PolyWord; class ScanAddress; class MDTaskData; class Exporter; class StackObject; #ifdef HAVE_WINDOWS_H typedef void *HANDLE; #endif #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_UCONTEXT_H #include #endif #ifdef HAVE_PTHREAD_H #include #endif // SIGNALCONTEXT is the argument type that is passed to GetPCandSPFromContext // to get the actual PC and SP in a profiling trap. #if defined(HAVE_WINDOWS_H) // First because it's used in both native Windows and Cygwin. #include #define SIGNALCONTEXT CONTEXT // This is the thread context. #elif defined(HAVE_UCONTEXT_T) #define SIGNALCONTEXT ucontext_t #elif defined(HAVE_STRUCT_SIGCONTEXT) #define SIGNALCONTEXT struct sigcontext #else #define SIGNALCONTEXT void #endif #define MIN_HEAP_SIZE 4096 // Minimum and initial heap segment size (words) // This is the ML "thread identifier" object. The fields // are read and set by the ML code. class ThreadObject: public PolyObject { public: PolyWord index; // Tagged integer with the index into the taskArray // Not used by ML PolyWord flags; // Tagged integer containing flags indicating how interrupts // are handled. Set by ML but only by the thread itself PolyWord threadLocal; // Head of a list of thread-local store items. // Handled entirely by ML but only by the thread. PolyWord requestCopy; // A tagged integer copy of the "requests" field. // This is provided so that ML can easily test if there // is an interrupt pending. PolyWord mlStackSize; // A tagged integer with the maximum ML stack size in bytes PolyWord debuggerSlots[4]; // These are used by the debugger. }; // Other threads may make requests to a thread. typedef enum { kRequestNone = 0, // Increasing severity kRequestInterrupt = 1, kRequestKill = 2 } ThreadRequests; // Per-thread data. This is subclassed for each architecture. class TaskData { public: TaskData(); virtual ~TaskData(); void FillUnusedSpace(void); virtual void GarbageCollect(ScanAddress *process); virtual Handle EnterPolyCode() = 0; // Start running ML virtual void InterruptCode() = 0; virtual bool AddTimeProfileCount(SIGNALCONTEXT *context) = 0; // Initialise the stack for a new thread. The parent task object is passed in because any // allocation that needs to be made must be made in the parent. virtual void InitStackFrame(TaskData *parentTask, Handle proc, Handle arg) = 0; virtual void SetException(poly_exn *exc) = 0; // If a foreign function calls back to ML we need to set up the call to the // ML callback function. virtual Handle EnterCallbackFunction(Handle func, Handle args) = 0; // The scheduler needs versions of atomic increment and atomic reset that // work in exactly the same way as the code-generated versions (if any). // Atomic decrement isn't needed since it only ever releases a mutex. virtual Handle AtomicIncrement(Handle mutexp) = 0; // Reset a mutex to one. This needs to be atomic with respect to the // atomic increment and decrement instructions. virtual void AtomicReset(Handle mutexp) = 0; virtual void CopyStackFrame(StackObject *old_stack, POLYUNSIGNED old_length, StackObject *new_stack, POLYUNSIGNED new_length) = 0; virtual POLYUNSIGNED currentStackSpace(void) const = 0; // Add a count to the local function if we are using store profiling. virtual void addProfileCount(POLYUNSIGNED words) = 0; // Functions called before and after an RTS call. virtual void PreRTSCall(void) {} virtual void PostRTSCall(void) {} SaveVec saveVec; PolyWord *allocPointer; // Allocation pointer - decremented towards... PolyWord *allocLimit; // ... lower limit of allocation POLYUNSIGNED allocSize; // The preferred heap segment size unsigned allocCount; // The number of allocations since the last GC StackSpace *stack; ThreadObject *threadObject; // Pointer to the thread object. int lastError; // Last error from foreign code. void *signalStack; // Stack to handle interrupts (Unix only) PolyWord foreignStack; // Stack of saved data used in call_sym_and_convert bool inML; // True when this is in ML, false in the RTS // Get a TaskData pointer given the ML taskId. static TaskData *FindTaskForId(PolyObject *taskId); private: // If a thread has to block it will block on this. PCondVar threadLock; // External requests made are stored here until they // can be actioned. ThreadRequests requests; // Pointer to the mutex when blocked. Set to NULL when it doesn't apply. PolyObject *blockMutex; // This is set to false when a thread blocks or enters foreign code, // While it is true the thread can manipulate ML memory so no other // thread can garbage collect. bool inMLHeap; // In Linux, at least, we need to run a separate timer in each thread bool runningProfileTimer; #ifdef HAVE_WINDOWS_H LONGLONG lastCPUTime; // Used for profiling #endif public: bool threadExited; private: #ifdef HAVE_PTHREAD_H pthread_t threadId; #endif #ifdef HAVE_WINDOWS_H public: // Because, on Cygwin, it's used in NewThreadFunction HANDLE threadHandle; private: #endif friend class Processes; }; NORETURNFN(extern Handle exitThread(TaskData *mdTaskData)); class ScanAddress; // Indicate what the main thread is doing if the profile // timer goes off. extern enum _mainThreadPhase { MTP_USER_CODE=0, MTP_GCPHASESHARING, MTP_GCPHASEMARK, MTP_GCPHASECOMPACT, MTP_GCPHASEUPDATE, MTP_GCQUICK, MTP_SHARING, MTP_EXPORTING, MTP_SAVESTATE, MTP_LOADSTATE, MTP_PROFILING, MTP_SIGHANDLER, MTP_CYGWINSPAWN, MTP_STOREMODULE, MTP_LOADMODULE, MTP_MAXENTRY } mainThreadPhase; // Data structure used for requests from a thread to the root // thread. These are GCs or similar. class MainThreadRequest { public: MainThreadRequest (enum _mainThreadPhase phase): mtp(phase), completed(false) {} virtual ~MainThreadRequest () {} // Suppress silly GCC warning const enum _mainThreadPhase mtp; bool completed; virtual void Perform() = 0; }; class PLock; // Class to wait for a given time or for an event, whichever comes first. // // A pointer to this class or a subclass is passed to ThreadPauseForIO. // Because a thread may be interrupted or killed by another ML thread we // don't allow any thread to block indefinitely. Instead whenever a // thread wants to do an operation that may block we have it enter a // loop that polls for the desired condition and if it is not ready it // calls ThreadPauseForIO. The default action is to block for a short // period and then return so that the caller can poll again. That can // limit performance when, for example, reading from a pipe so where possible // we use a sub-class that waits until either input is available or it times // out, whichever comes first, using "select" in Unix or MsgWaitForMultipleObjects // in Windows. // During a call to Waiter::Wait the thread is set as "not using ML memory" // so a GC can happen while this thread is blocked. class Waiter { public: Waiter() {} virtual ~Waiter() {} virtual void Wait(unsigned maxMillisecs); static Waiter *defaultWaiter; #ifdef HAVE_WINDOWS_H static HANDLE hWakeupEvent; #endif }; #ifdef HAVE_WINDOWS_H class WaitHandle: public Waiter { public: WaitHandle(HANDLE h): m_Handle(h) {} virtual void Wait(unsigned maxMillisecs); private: HANDLE m_Handle; }; #endif #if (! defined(_WIN32) || defined(__CYGWIN__)) // Unix: Wait until a file descriptor is available for input class WaitInputFD: public Waiter { public: WaitInputFD(int fd): m_waitFD(fd) {} virtual void Wait(unsigned maxMillisecs); private: int m_waitFD; }; #endif // External interface to the Process module. These functions are all implemented // by the Processes class. class ProcessExternal { public: virtual ~ProcessExternal() {} // Defined to suppress a warning from GCC virtual TaskData *GetTaskDataForThread(void) = 0; virtual TaskData *CreateNewTaskData(Handle threadId, Handle threadFunction, Handle args, PolyWord flags) = 0; // Request all ML threads to exit and set the result code. Does not cause // the calling thread itself to exit since this may be called on the GUI thread. virtual void Exit(int n) = 0; // Exit from this thread. virtual NORETURNFN(void ThreadExit(TaskData *taskData)) = 0; virtual void BroadcastInterrupt(void) = 0; virtual void BeginRootThread(PolyObject *rootFunction) = 0; // Called when a thread may block. Returns some time later when perhaps // the input is available. virtual void ThreadPauseForIO(TaskData *taskData, Waiter *pWait) = 0; // As ThreadPauseForIO but when there is no stream virtual void ThreadPause(TaskData *taskData) { ThreadPauseForIO(taskData, Waiter::defaultWaiter); } // If a thread is blocking for some time it should release its use // of the ML memory. That allows a GC. ThreadUseMLMemory returns true if // a GC was in progress. virtual void ThreadUseMLMemory(TaskData *taskData) = 0; virtual void ThreadReleaseMLMemory(TaskData *taskData) = 0; // Requests from the threads for actions that need to be performed by // the root thread. virtual void MakeRootRequest(TaskData *taskData, MainThreadRequest *request) = 0; // Deal with any interrupt or kill requests. virtual bool ProcessAsynchRequests(TaskData *taskData) = 0; // Process an interrupt request synchronously. virtual void TestSynchronousRequests(TaskData *taskData) = 0; // Process any events, synchronous or asynchronous. virtual void TestAnyEvents(TaskData *taskData) = 0; // ForkFromRTS. Creates a new thread from within the RTS. virtual bool ForkFromRTS(TaskData *taskData, Handle proc, Handle arg) = 0; // Profiling control. virtual void StartProfiling(void) = 0; virtual void StopProfiling(void) = 0; // Find space for an object. Returns a pointer to the start. "words" must include // the length word and the result points at where the length word will go. // If the allocation succeeds it may update the allocation values in the taskData object. // If the heap is exhausted it may set this thread (or other threads) to raise an exception. virtual PolyWord *FindAllocationSpace(TaskData *taskData, POLYUNSIGNED words, bool alwaysInSeg) = 0; // Signal handling support. The ML signal handler thread blocks until it is // woken up by the signal detection thread. virtual bool WaitForSignal(TaskData *taskData, PLock *sigLock) = 0; virtual void SignalArrived(void) = 0; // After a Unix fork we only have a single thread in the new process. virtual void SetSingleThreaded(void) = 0; virtual poly_exn* GetInterrupt(void) = 0; }; // Return the number of processors. Used when configuring multi-threaded GC. extern unsigned NumberOfProcessors(void); extern unsigned NumberOfPhysicalProcessors(void); extern ProcessExternal *processes; extern struct _entrypts processesEPT[]; #endif polyml-5.7.1/libpolyml/Console.cpp0000644000175000017500000012234413204034553016116 0ustar daviddavid/* Title: Poly/ML Console Window. Copyright (c) 2000, 2015 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_WINDOWS_H #include #endif #ifdef HAVE_TCHAR_H #include #endif #ifdef HAVE_IO_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "../resource.h" #include "mpoly.h" #include "PolyControl.h" #include "diagnostics.h" #include "mpoly.h" #include "run_time.h" #include "sighandler.h" #include "Console.h" #include "../polyexports.h" #include "processes.h" #include "polystring.h" /* This module takes the place of the Windows console which has a number of problems, apart from not being a pleasant user interface. It creates a main window containing an edit control, which it has to sub-class so that we can receive all the characters as they are typed. I've written this in C using the direct Windows calls to make it fairly independent of the compiler. It would definitely be simpler and cleaner written in C++ using MFC. DCJM 30/5/2000. */ #ifdef _MSC_VER // Don't tell me about ISO C++ changes. #pragma warning(disable:4996) #endif HWND hMainWindow = NULL; // Main window - exported. HINSTANCE hApplicationInstance; // Application instance (exported) static HANDLE hReadFromML; // Handles to pipe from ML thread static WNDPROC wpOrigEditProc; // Saved window proc. static BOOL fAtEnd; // True if we are at the end of the window static HWND hEditWnd; // Edit sub-window static CHAR *pchInputBuffer; // Buffer to text read. static int nBuffLen; // Length of input buffer. static int nNextPosn; // Position to add input. (<= nBuffLen) static int nAvailable; // Position of "committed" input (<= nNextPosn) static int nReadPosn; // Position of last read (<= nAvailable) static CRITICAL_SECTION csIOInterlock; HANDLE hInputEvent; // Signalled when input is available. static HWND hDDEWindow; // Window to handle DDE requests from ML thread. HANDLE hOldStdin = INVALID_HANDLE_VALUE; static LPTSTR* lpArgs = 0; // Argument list. static int nArgs = 0; static int initDDEControl(const TCHAR *lpszName); static void uninitDDEControl(void); static DWORD dwDDEInstance; static int nInitialShow; // Value of nCmdShow passed in. static bool isActive = false; // Default DDE service name. #define POLYMLSERVICE _T("PolyML") #ifdef UNICODE #define DDECODEPAGE CP_WINUNICODE #else #define DDECODEPAGE CP_WINANSI #endif /* Messages interpreted by the main window thread. */ #define WM_ADDTEXT WM_APP #define WM_DDESTART (WM_APP+1) #define WM_DDESTOP (WM_APP+2) #define WM_DDEEXEC (WM_APP+3) #define WM_DDESERVINIT (WM_APP+4) /* These functions are called by the I/O routines to test for input and to read from the keyboard. */ bool isConsoleInput(void) { if (! isActive) { ShowWindow(hMainWindow, nInitialShow); isActive = true; } EnterCriticalSection(&csIOInterlock); bool nRes = nAvailable != nReadPosn; LeaveCriticalSection(&csIOInterlock); return nRes; } /* Read characters from the input. Only returns zero on EOF. */ unsigned getConsoleInput(char *buff, int nChars) { unsigned nRes = 0; if (! isActive) { ShowWindow(hMainWindow, nInitialShow); isActive = true; } EnterCriticalSection(&csIOInterlock); while (nAvailable == nReadPosn) { ResetEvent(hInputEvent); /* Must block until there is input. This will only actually happen when called from HandleINT since normally we check that input is available first. We check for messages while blocking since we may have a DDE hidden window around. */ LeaveCriticalSection(&csIOInterlock); while (MsgWaitForMultipleObjects(1, &hInputEvent, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0+1) { MSG Msg; while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } EnterCriticalSection(&csIOInterlock); } // Copy the available characters into the buffer. while (nReadPosn != nAvailable && nChars-- > 0) { char ch; ch = pchInputBuffer[nReadPosn]; if (ch == 4 || ch == 26) { // EOF character. We have to return this as // a separate buffer of size zero so if we've // already returned some characters we leave it till // next time. if (nRes == 0) if (++nReadPosn == nBuffLen) nReadPosn = 0; break; } buff[nRes++] = ch; if (++nReadPosn == nBuffLen) nReadPosn = 0; } if (nAvailable == nReadPosn) ResetEvent(hInputEvent); LeaveCriticalSection(&csIOInterlock); return nRes; } /* All addition is made at the end of the text so this function is called to find out if we're there. */ static void MoveToEnd(void) { if (! fAtEnd) { // Make sure any text we add goes at the end. LRESULT dwEnd = SendMessage(hEditWnd, WM_GETTEXTLENGTH, 0, 0); SendMessage(hEditWnd, EM_SETSEL, dwEnd, dwEnd); fAtEnd = TRUE; } } // Remove lines at the beginning until we have enough space. // If nChars is bigger than the limit we'll delete everything and // return. Returns the space removed. static DWORD CheckForScreenSpace(LRESULT nChars) { DWORD dwRemoved = 0; // TODO: We could avoid these calls by remembering this information. LRESULT limit = SendMessage(hEditWnd, EM_GETLIMITTEXT, 0, 0); LRESULT size = SendMessage(hEditWnd, WM_GETTEXTLENGTH, 0, 0); while (nChars+size >= limit) { int i; if (size == 0) return dwRemoved; for (i = 0; i < size; i++) { if (SendMessage(hEditWnd, EM_LINEFROMCHAR, i, 0) != 0) break; } SendMessage(hEditWnd, EM_SETSEL, 0, i); SendMessage(hEditWnd, WM_CLEAR, 0, 0); fAtEnd = FALSE; MoveToEnd(); size -= i; dwRemoved += i; } return dwRemoved; } // Expand the buffer if necessary to allow room for // additional characters. static void CheckForBufferSpace(int nChars) { BOOL fOverflow; if (nNextPosn >= nReadPosn) fOverflow = nNextPosn+nChars >= nReadPosn+nBuffLen; else fOverflow = nNextPosn+nChars >= nReadPosn; if (fOverflow) { int nOldLen = nBuffLen; // Need more space. nBuffLen = nBuffLen + nChars + nBuffLen/2; pchInputBuffer = (char*)realloc(pchInputBuffer, nBuffLen); // Have to copy any data that has wrapped round to the // new area. if (nNextPosn < nReadPosn) { int nExtra = nBuffLen-nOldLen; if (nExtra >= nNextPosn) { // All the space before will fit in the new area. memcpy(pchInputBuffer+nOldLen, pchInputBuffer, nNextPosn); } else { // Some of the space before will fit but not all. memcpy(pchInputBuffer+nOldLen, pchInputBuffer, nExtra); memmove(pchInputBuffer, pchInputBuffer+nExtra, nNextPosn-nExtra); } // Adjust these pointers modulo the old and new lengths. if (nAvailable < nNextPosn) nAvailable += nOldLen; if (nAvailable >= nBuffLen) nAvailable -= nBuffLen; nNextPosn += nOldLen; if (nNextPosn >= nBuffLen) nNextPosn -= nBuffLen; } } ASSERT(nBuffLen >= 0 && nAvailable >= 0 && nNextPosn >= 0 && nReadPosn >= 0 && nAvailable < nBuffLen && nReadPosn < nBuffLen && nReadPosn < nBuffLen); if (nNextPosn > nReadPosn) ASSERT(nAvailable >= nReadPosn && nAvailable <= nNextPosn); else ASSERT((nNextPosn != nReadPosn && nAvailable <= nNextPosn) || nAvailable >= nReadPosn); } /* DDE requests. DDE uses an internal window for communication and so all DDE operations on a particular instance handle have to be performed by the same thread. That thread also has to check and process the message queue. The previous version did this by having the ML thread make the DDE calls and processed the message list in an "interrupt" routine. That complicates the Windows interface so now the ML thread sends messages to the main window thread to do the work. */ HCONV StartDDEConversation(TCHAR *serviceName, TCHAR *topicName) { return (HCONV)SendMessage(hDDEWindow, WM_DDESTART, (WPARAM)serviceName, (LPARAM)topicName); } void CloseDDEConversation(HCONV hConv) { SendMessage(hDDEWindow, WM_DDESTOP, 0, (LPARAM)hConv); } LRESULT ExecuteDDE(char *command, HCONV hConv) { return SendMessage(hDDEWindow, WM_DDEEXEC, (WPARAM)hConv, (LPARAM)command); } // This is called by the main Poly/ML thread after the arguments have been processed. void SetupDDEHandler(const TCHAR *lpszServiceName) { SendMessage(hDDEWindow, WM_DDESERVINIT, 0, (LPARAM)lpszServiceName); } LRESULT CALLBACK DDEWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DDESERVINIT: return initDDEControl((const TCHAR*)lParam); case WM_DDESTART: { HCONV hcDDEConv; HSZ hszServiceName, hszTopicName; TCHAR *serviceName = (TCHAR*)wParam; TCHAR *topicName = (TCHAR*)lParam; hszServiceName = DdeCreateStringHandle(dwDDEInstance, serviceName, DDECODEPAGE); hszTopicName = DdeCreateStringHandle(dwDDEInstance, topicName, DDECODEPAGE); hcDDEConv = DdeConnect(dwDDEInstance, hszServiceName, hszTopicName, NULL); DdeFreeStringHandle(dwDDEInstance, hszServiceName); DdeFreeStringHandle(dwDDEInstance, hszTopicName); if (hcDDEConv == 0) { // UINT nErr = DdeGetLastError(dwDDEInstance); return 0; } return (LRESULT)hcDDEConv; } case WM_DDESTOP: DdeDisconnect((HCONV)lParam); return 0; case WM_DDEEXEC: { HDDEDATA res; LPSTR command = (LPSTR)lParam; res = DdeClientTransaction((LPBYTE)command, (DWORD)(strlen(command)+1), (HCONV)wParam, 0L, 0, XTYP_EXECUTE, TIMEOUT_ASYNC, NULL); if (res != 0) { DdeFreeDataHandle(res); // Succeeded - return true; return 1; } else if (DdeGetLastError(dwDDEInstance) == DMLERR_BUSY) // If it's busy return false. return 0; else return -1; // An error } default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } } /* In order to be able to handle all the keys we need to sub-class the edit control. */ static LRESULT APIENTRY EditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_GETDLGCODE: return DLGC_WANTALLKEYS | DLGC_WANTCHARS; case WM_KEYDOWN: switch(wParam) { case VK_DELETE: // Ignore the delete key. Beep perhaps? return 0; case VK_LEFT: // If we move the cursor we are probably not case VK_RIGHT: // at the end. case VK_UP: case VK_DOWN: fAtEnd = FALSE; default: return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); } case WM_CHAR: { LPARAM nRpt = lParam & 0xffff; EnterCriticalSection(&csIOInterlock); if (wParam == '\b') { // Delete the previous character(s). if (nNextPosn != nAvailable) { int nCanRemove = 0; while (nRpt-- > 0 && nNextPosn != nAvailable) { nCanRemove++; if (nNextPosn == 0) nNextPosn = nBuffLen; nNextPosn--; } lParam = (lParam & 0xffff0000) | nCanRemove; LeaveCriticalSection(&csIOInterlock); return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); } } else if (wParam == 22) // Control-V { // Generate a Paste command. SendMessage(hMainWindow, WM_COMMAND, ID_EDIT_PASTE, 0); } else if (wParam == 3) // Control-C { // In Windows this has the effect of Copy but we also // want it to generate an interrupt. I've chosen to // make it copy if there is any selection, otherwise to // generate an interrupt. We'll have to see how this works. DWORD dwStart, dwEnd; SendMessage(hwnd, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd); if (dwStart != dwEnd) { SendMessage(hwnd, WM_COPY, 0, 0); } else { // Discard any type-ahead. nNextPosn = nAvailable = nReadPosn = 0; RequestConsoleInterrupt(); } } else if (wParam >= ' ' || wParam == '\r' || wParam == '\t' || wParam == 4 /* ctrl-D */ || wParam == 26 /* ctrl-Z */) { CheckForBufferSpace((int)nRpt); CheckForScreenSpace(nRpt); // Make sure we have space on the screen. // Add the character(s) to the buffer. while (nRpt-- > 0) { if (wParam == '\r') { pchInputBuffer[nNextPosn++] = '\n'; nAvailable = nNextPosn; SetEvent(hInputEvent); } else if (wParam == 4 || wParam == 26) { // Treat either of these as EOF chars. pchInputBuffer[nNextPosn++] = (CHAR)wParam; nAvailable = nNextPosn; SetEvent(hInputEvent); wParam = 4; } else pchInputBuffer[nNextPosn++] = (CHAR)wParam; if (nNextPosn == nBuffLen) nNextPosn = 0; if (nAvailable == nBuffLen) nAvailable = 0; } MoveToEnd(); LeaveCriticalSection(&csIOInterlock); // Add this to the window except if it's ctrl-Z or ctrl-D. if (wParam == 4 || wParam == 26) return 0; return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); } LeaveCriticalSection(&csIOInterlock); return 0; } case WM_DESTROY: { HFONT hFount; // Switch back to the old window proc just in case. #ifdef _M_AMD64 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (INT_PTR)wpOrigEditProc); SetWindowLongPtr(hwnd, GWLP_USERDATA, 0); #else SetWindowLong(hwnd, GWL_WNDPROC, (LONG)wpOrigEditProc); SetWindowLong(hwnd, GWL_USERDATA, 0); #endif // Get the fount and delete it if it's not the default. hFount = (HFONT)SendMessage(hwnd, WM_GETFONT, 0, 0); if (hFount != NULL) { SendMessage(hwnd, WM_SETFONT, (WPARAM)NULL, FALSE); DeleteObject(hFount); } // Call the original to finish off. return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); } case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case EM_SETSEL: // Need to record that we may no longer be at the end of the text. fAtEnd = FALSE; // Drop through to default. default: return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); } } /* This function is only used when the "About Poly/ML" dialogue box is being displayed. */ static BOOL CALLBACK AboutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return 1; case WM_COMMAND: if (wParam == IDOK) { EndDialog(hwndDlg, IDOK); return 1; } case WM_CLOSE: EndDialog(hwndDlg, IDOK); return 1; default: return 0; } } #ifdef UNICODE #define CF_TEXTFORMAT CF_UNICODETEXT #else #define CF_TEXTFORMAT CF_TEXT #endif /* This is the main window procedure. */ LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { hEditWnd = CreateWindow(_T("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 0, 0, 0, 0, hwnd, 0, hApplicationInstance, NULL); if (hEditWnd == NULL) return -1; /* Failed */ // Sub-class this so that we get the keys that are pressed. // Save the old window proc. #ifdef _M_AMD64 wpOrigEditProc = (WNDPROC)GetWindowLongPtr(hEditWnd, GWLP_WNDPROC); // Set our new window proc. SetWindowLongPtr(hEditWnd, GWLP_WNDPROC, (INT_PTR)EditSubclassProc); #else wpOrigEditProc = (WNDPROC)GetWindowLong(hEditWnd, GWL_WNDPROC); // Set our new window proc. SetWindowLong(hEditWnd, GWL_WNDPROC, (LONG)EditSubclassProc); #endif fAtEnd = TRUE; // Get a 10 point Courier fount. HDC hDC = GetDC(hEditWnd); int nHeight = -MulDiv(10, GetDeviceCaps(hDC, LOGPIXELSY), 72); ReleaseDC(hEditWnd, hDC); HFONT hFont = CreateFont(nHeight, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, _T("Courier")); if (hFont) SendMessage(hEditWnd, WM_SETFONT, (WPARAM)hFont, 0); SetWindowText(hEditWnd, _T("")); return 0; /* Succeeded */ } case WM_SETFOCUS: /* When the focus arrives at the parent set the focus on the edit window. */ SetFocus(hEditWnd); return 0; case WM_SIZE: { LONG offset = 0; // Make the edit control the size of the window's client area. MoveWindow(hEditWnd, 0, offset, LOWORD(lParam), HIWORD(lParam)-offset, TRUE); } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_COMMAND: switch(wParam) { case ID_EDIT_COPY: SendMessage(hEditWnd, WM_COPY, 0, 0); return 0; case ID_EDIT_PASTE: if (IsClipboardFormatAvailable(CF_TEXTFORMAT)) { // We need to check that we have enough space // BEFORE we try pasting. HANDLE hClip; LPCTSTR lpszText; OpenClipboard(hEditWnd); hClip = GetClipboardData(CF_TEXTFORMAT); lpszText = (LPCTSTR)GlobalLock(hClip); CheckForScreenSpace(lstrlen(lpszText)); MoveToEnd(); // Add it to the screen. SendMessage(hEditWnd, EM_REPLACESEL, FALSE, (LPARAM)lpszText); // Add to the type-ahead. EnterCriticalSection(&csIOInterlock); // Check there's enough space. This may be an // over-estimate since we replace CRNL by NL. CheckForBufferSpace(lstrlen(lpszText)); while (*lpszText) { // The data we're pasting contains CRNL as // line separators. if (lpszText[0] == '\r' && lpszText[1] == '\n') { pchInputBuffer[nNextPosn++] = '\n'; if (nNextPosn == nBuffLen) nNextPosn = 0; nAvailable = nNextPosn; lpszText += 2; } else { pchInputBuffer[nNextPosn++] = (char)*lpszText++; if (nNextPosn == nBuffLen) nNextPosn = 0; if (lpszText[0] == 4 || lpszText[0] == 26) nAvailable = nNextPosn; // EOF characters. } } if (nAvailable != nReadPosn) SetEvent(hInputEvent); LeaveCriticalSection(&csIOInterlock); GlobalUnlock(hClip); CloseClipboard(); } return 0; case ID_HELP_ABOUT: DialogBox(hApplicationInstance, MAKEINTRESOURCE(IDD_ABOUT_POLYML), hwnd, (DLGPROC)AboutProc); return 0; case ID_FILE_QUIT: if (MessageBox(hwnd, _T("Are you sure you want to quit?"), _T("Confirm Quit"), MB_OKCANCEL) == IDOK) processes->Exit(0); return 0; case ID_RUN_INTERRUPT: // Discard any type-ahead. nNextPosn = nAvailable = nReadPosn = 0; RequestConsoleInterrupt(); return 0; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } case WM_CLOSE: if (MessageBox(hwnd, _T("Are you sure you want to quit?"), _T("Confirm Quit"), MB_OKCANCEL) == IDOK) processes->Exit(0); return 0; case WM_ADDTEXT: // Request from the input thread to add some text. { // Remember the old selection and the original length. LRESULT lrStart, lrEnd; SendMessage(hEditWnd, EM_GETSEL, (WPARAM)&lrStart, (LPARAM)&lrEnd); LRESULT lrLength = SendMessage(hEditWnd, WM_GETTEXTLENGTH, 0, 0); LRESULT lrRemoved = CheckForScreenSpace(lrLength); MoveToEnd(); SendMessage(hEditWnd, EM_REPLACESEL, 0, lParam); // If the old selection was at the end (i.e. the pointer // was at the end) we don't reinstate the old selection. if (lrStart != lrLength && lrEnd > lrRemoved) { if (lrStart > lrRemoved) lrStart -= lrRemoved; else lrStart = 0; fAtEnd = FALSE; SendMessage(hEditWnd, EM_SETSEL, lrStart, lrEnd-lrRemoved); } return 0; } default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } } static DWORD WINAPI InThrdProc(LPVOID lpParameter) // This thread deals with input from the ML process. { while (1) { CHAR buff[4096]; DWORD dwRead; if (! ReadFile(hReadFromML, buff, sizeof(buff)-1, &dwRead, NULL)) return 0; buff[dwRead] = 0; if (! isActive) { ShowWindow(hMainWindow, nInitialShow); isActive = true; } #ifdef UNICODE // We need to write Unicode here. Convert it using the current code-page. int wlen = MultiByteToWideChar(codePage, 0, buff, -1, NULL, 0); if (wlen == 0) continue; WCHAR *wBuff = new WCHAR[wlen]; wlen = MultiByteToWideChar(codePage, 0, buff, -1, wBuff, wlen); SendMessage(hMainWindow, WM_ADDTEXT, 0, (LPARAM)wBuff); delete[] wBuff; #else SendMessage(hMainWindow, WM_ADDTEXT, 0, (LPARAM)buff); #endif } } static DWORD WINAPI MainThrdProc(LPVOID lpParameter) // This thread simply continues with the rest of the ML // initialistion. { exportDescription *exports = (exportDescription *)lpParameter; return polymain(nArgs, lpArgs, exports); } // Called with various control events if the input stream is a console. static BOOL WINAPI CtrlHandler(DWORD dwCtrlType) { if (dwCtrlType == CTRL_C_EVENT) { RequestConsoleInterrupt(); return TRUE; } return FALSE; } // Main entry point. Called from WinMain with a pointer to the ML code. int PolyWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLineUnused, int nCmdShow, exportDescription *exports ) { HANDLE hWriteToScreen = INVALID_HANDLE_VALUE; DWORD dwInId, dwRes; SetErrorMode(0); // Force a proper error report InitializeCriticalSection(&csIOInterlock); hInputEvent = CreateEvent(NULL, TRUE, FALSE, NULL); hApplicationInstance = hInstance; // If we already have standard input and standard output we // don't replace them, otherwise we create a window and pipes // to connect it. We use _get_osfhandle here because that // checks for handles passed in in the STARTUPINFO as well as // those inherited as standard handles. HANDLE hStdInHandle = (HANDLE)_get_osfhandle(fileno(stdin)); HANDLE hStdOutHandle = (HANDLE)_get_osfhandle(fileno(stdout)); HANDLE hStdErrHandle = (HANDLE)_get_osfhandle(fileno(stderr)); // Do we have stdin? If we do we need to create a pipe to buffer // the input. if (hStdInHandle != INVALID_HANDLE_VALUE) { // We're using the stdin passed in by the caller. This may well // be a pipe and in order to get reasonable performance we need // to interpose a thread. This is the only way to be able to have // something we can pass to MsgWaitForMultipleObjects, in this case // hInputEvent, which will indicate the input is available. // Duplicate the handle because we're going to close this. if (! DuplicateHandle(GetCurrentProcess(), hStdInHandle, GetCurrentProcess(), &hOldStdin, 0, TRUE, // inheritable DUPLICATE_SAME_ACCESS )) return 1; HANDLE hNewStdin = CreateCopyPipe(hOldStdin, hInputEvent); if (hNewStdin == NULL) return 1; SetConsoleCtrlHandler(CtrlHandler, TRUE); // May fail if there's no console. // Replace the current stdin with the output from the pipe. fclose(stdin); int newstdin = _open_osfhandle ((INT_PTR)hNewStdin, _O_RDONLY | _O_TEXT); if (newstdin != 0) _dup2(newstdin, 0); fdopen(0, "rt"); } else { // No stdin. Open it on NUL. If we actually create our own console // we won't actually use this and instead we'll read from the console. // In that case we won't use stdin but something else might. fclose(stdin); int newstdin = open("NUL", _O_RDONLY); _dup2(newstdin, 0); // Open it for stdio as well. Because the entries in the FILE table // are opened in order we need to do this to ensure that stdout and // stderr point to the correct entries. _fdopen(0, "rt"); hStdInHandle = (HANDLE)_get_osfhandle(newstdin); SetStdHandle(STD_INPUT_HANDLE, hStdInHandle); // If we're not going to create a console because we have a stdout // we need to set this as the original stdin. if (hStdOutHandle != INVALID_HANDLE_VALUE) hOldStdin = hStdInHandle; } // If we don't have a standard output we use our own console. if (hStdOutHandle == INVALID_HANDLE_VALUE) { WNDCLASSEX wndClass; ATOM atClass; // Allocate initial buffer space to maintain the invariants. nBuffLen = 80; pchInputBuffer = (char*)malloc(nBuffLen); if (!CreatePipe(&hReadFromML, &hWriteToScreen, NULL, 0)) { return 1; } HANDLE hTemp; // The pipe handles we have are not inheritable. We have to // make hWriteToScreen an inheritable handle so that // processes we fork using "system" can write to the screen. if (! DuplicateHandle(GetCurrentProcess(), hWriteToScreen, GetCurrentProcess(), &hTemp, 0, TRUE, // inheritable DUPLICATE_SAME_ACCESS )) { return 1; } CloseHandle(hWriteToScreen); hWriteToScreen = hTemp; // Replace the standard Windows handles. SetStdHandle(STD_OUTPUT_HANDLE, hWriteToScreen); // Close the stdio streams. They may have been opened // on dummy handles. fclose(stdout); // Set up the new handles. int newstdout = _open_osfhandle ((INT_PTR)hWriteToScreen, _O_TEXT); // We need this to be stream 1. basicio.cpp uses this for TextIO.stdOut if (newstdout != 1) _dup2(newstdout, 1); // A few RTS modules use stdio for output, primarily objsize and diagnostics. // Previously this next line was sufficient to reopen stdout but that no longer // works in VS 2015. We have to use polyStdout now. extern FILE *polyStdout; polyStdout = _fdopen(1, "wt"); // == stdout if (hStdErrHandle == INVALID_HANDLE_VALUE) { // If we didn't have stderr write any stderr output to our console. SetStdHandle(STD_ERROR_HANDLE, hWriteToScreen); fclose(stderr); _dup2(newstdout, 2); // Stderr extern FILE *polyStderr; polyStderr = _fdopen(2, "wt"); // == stderr // Set stderr to unbuffered so that messages get written correctly. // (stdout is explicitly flushed). setvbuf(stderr, NULL, _IONBF, 0); } // Create a thread to manage the output from ML. HANDLE hInThread = CreateThread(NULL, 0, InThrdProc, 0, 0, &dwInId); if (hInThread == NULL) return 1; CloseHandle(hInThread); wndClass.cbSize = sizeof(wndClass); wndClass.style = 0; wndClass.lpfnWndProc = WndProc; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInstance; wndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); wndClass.hCursor = NULL; // For the moment wndClass.hbrBackground = NULL; // For the moment wndClass.lpszClassName = _T("PolyMLWindowClass"); wndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); wndClass.hIconSm = NULL; // For the moment DWORD dwStyle = WS_OVERLAPPEDWINDOW; if ((atClass = RegisterClassEx(&wndClass)) == 0) { return 1; } // Initially created invisible. hMainWindow = CreateWindow( (LPTSTR)(intptr_t)atClass, _T("Poly/ML"), dwStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, // handle to menu or child-window identifier hInstance, NULL // pointer to window-creation data ); if (hMainWindow == NULL) { return 1; } // Save this setting and only apply it when we actually // read from or write to the main window. That way if we are // actually using another window this will never get displayed. nInitialShow = nCmdShow; } // We had a stdout but maybe not stderr. We could choose to direct stderr output // to the provided stdout but maybe that's not what the user wants. Instead // we open one on NUL. else if (hStdErrHandle == INVALID_HANDLE_VALUE) { fclose(stderr); int newstderr = open("NUL", _O_WRONLY); _dup2(newstderr, 2); // Stderr _fdopen(2, "wt"); // == stderr SetStdHandle(STD_ERROR_HANDLE, (HANDLE)_get_osfhandle(newstderr)); // Set stderr to unbuffered so that messages get written correctly. // (stdout is explicitly flushed). setvbuf(stderr, NULL, _IONBF, 0); } // Set nArgs and lpArgs to the command line arguments. // Convert the command line into Unix-style arguments. There isn't a // CommandLineToArgvA function so we have to use the Unicode version and // convert the results. { // Get the unicode args LPWSTR *uniArgs = CommandLineToArgvW(GetCommandLineW(), &nArgs); #ifdef UNICODE lpArgs = uniArgs; #else if (uniArgs != NULL) { lpArgs = (LPSTR*)calloc(nArgs, sizeof(LPSTR)); if (lpArgs != 0) { for (int i = 0; i < nArgs; i++) { // See how much space will be needed int space = WideCharToMultiByte(CP_ACP, 0, uniArgs[i], -1, NULL, 0, NULL, NULL); if (space == 0) break; // Failed for some reason // Allocate the space then do the conversion LPSTR buff = (LPSTR)malloc(space); if (buff == 0) break; int result = WideCharToMultiByte(CP_ACP, 0, uniArgs[i], -1, buff, space, NULL, NULL); if (result == 0) { free(buff); break; } lpArgs[i] = buff; } } LocalFree(uniArgs); } #endif } // Create an internal hidden window to handle DDE requests from the ML thread. { WNDCLASSEX wndClass; ATOM atClass; memset(&wndClass, 0, sizeof(wndClass)); wndClass.cbSize = sizeof(wndClass); wndClass.lpfnWndProc = DDEWndProc; wndClass.hInstance = hInstance; wndClass.lpszClassName = _T("PolyMLDDEWindowClass"); if ((atClass = RegisterClassEx(&wndClass)) == 0) return 1; hDDEWindow = CreateWindow( (LPTSTR)(intptr_t)atClass, _T("Poly/ML-DDE"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, // handle to menu or child-window identifier hInstance, NULL // pointer to window-creation data ); } // Call the main program to do the rest of the initialisation. HANDLE hMainThread = CreateThread(NULL, 0, MainThrdProc, exports, 0, &dwInId); // Enter the main message loop. while (MsgWaitForMultipleObjects(1, &hMainThread, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0+1) { MSG Msg; while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } // Closing this end of the pipe will cause the thread to go away. if (hWriteToScreen != INVALID_HANDLE_VALUE) CloseHandle(hWriteToScreen); if (! GetExitCodeThread(hMainThread, &dwRes)) dwRes = 0; uninitDDEControl(); DestroyWindow(hDDEWindow); DeleteCriticalSection(&csIOInterlock); if (hInputEvent) CloseHandle(hInputEvent); return dwRes; } HDDEDATA CALLBACK DdeCallback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2) { switch (uType) { case XTYP_CONNECT: // Client connecting. For the moment we ignore // the topic. return (HDDEDATA) TRUE; case XTYP_EXECUTE: { // See what the message is. The only ones we // handle are interrupt and terminate. TCHAR buff[256]; buff[0] = 0; DdeGetData(hdata, (LPBYTE)buff, sizeof(buff), 0); if (lstrcmpi(buff, _T(POLYINTERRUPT)) == 0) { RequestConsoleInterrupt(); return (HDDEDATA) DDE_FACK; } if (lstrcmpi(buff, _T(POLYTERMINATE)) == 0) { processes->Exit(0); return (HDDEDATA) DDE_FACK; } return (HDDEDATA) DDE_FNOTPROCESSED; } default: return (HDDEDATA) NULL; } } static int initDDEControl(const TCHAR *lpszName) { // Start the DDE service. This receives remote requests. if (DdeInitialize(&dwDDEInstance, DdeCallback, APPCLASS_STANDARD | CBF_FAIL_ADVISES | CBF_FAIL_POKES | CBF_FAIL_REQUESTS | CBF_SKIP_ALLNOTIFICATIONS, 0) != DMLERR_NO_ERROR) return 0; // If we were given a service name we register that, // otherwise we use the default name. if (lpszName == 0) lpszName = POLYMLSERVICE; HSZ hszServiceName = DdeCreateStringHandle(dwDDEInstance, lpszName, DDECODEPAGE); if (hszServiceName == 0) return 0; DdeNameService(dwDDEInstance, hszServiceName, 0L, DNS_REGISTER); DdeFreeStringHandle(dwDDEInstance, hszServiceName); return 1; } static void uninitDDEControl(void) { // Unregister our name(s). DdeNameService(dwDDEInstance, 0L, 0L, DNS_UNREGISTER); // DdeAbandonTransaction(dwDDEInstance, 0L, 0L); // Unitialise DDE. DdeUninitialize(dwDDEInstance); } // We want copyThread to be static but also a friend of CopyPipe // GCC requires it to be declared static first otherwise it creates it // extern when it sees it as a friend then complains when it's static. static DWORD WINAPI copyThread(LPVOID lpParameter); class CopyPipe { public: CopyPipe(): hOriginal(NULL), hOutput(NULL), hEvent(NULL) {} HANDLE RunPipe(HANDLE hIn, HANDLE hEv); private: ~CopyPipe(); void threadFunction(void); HANDLE hOriginal; HANDLE hOutput; HANDLE hEvent; friend DWORD WINAPI copyThread(LPVOID lpParameter); }; CopyPipe::~CopyPipe() { if (hOutput) CloseHandle(hOutput); if (hOriginal) CloseHandle(hOriginal); if (hEvent) CloseHandle(hEvent); } static DWORD WINAPI copyThread(LPVOID lpParameter) { CopyPipe *cp = (CopyPipe *)lpParameter; cp->threadFunction(); delete cp; return 0; } // This thread is used when the caller has provided a standard input // stream and we're using that and not our console. It copies the // standard input to a pipe and the ML code uses that as its input. // This way we can set hInputEvent whenever input is available. void CopyPipe::threadFunction() { // Duplicate the event handle so that we can close it when we've finished char buffer[4096]; while (true) { DWORD dwRead; if (! ReadFile(hOriginal, buffer, sizeof(buffer), &dwRead, NULL)) { SetEvent(hEvent); return; } if (dwRead == 0) // End-of-stream { // If we are reading from the (Windows) console and the user presses ctrl-C we // may get a ERROR_OPERATION_ABORTED error. if (GetLastError() == ERROR_OPERATION_ABORTED) { SetLastError(0); // Reset this. We may have a normal EOF next. continue; } // Normal exit. Indicate EOF SetEvent(hEvent); return; } SetEvent(hEvent); // Signal input has arrived char *b = buffer; do { DWORD dwWritten; if (! WriteFile(hOutput, b, dwRead, &dwWritten, NULL)) { SetEvent(hEvent); return; } b += dwWritten; dwRead -= dwWritten; } while (dwRead != 0); } } HANDLE CopyPipe::RunPipe(HANDLE hIn, HANDLE hEv) { HANDLE hNewInput = NULL; hOriginal = hIn; if (!CreatePipe(&hNewInput, &hOutput, NULL, 0)) return NULL; if (! DuplicateHandle(GetCurrentProcess(), hEv, GetCurrentProcess(), &hEvent, 0, FALSE, DUPLICATE_SAME_ACCESS)) return NULL; DWORD dwInId; HANDLE hInThread = CreateThread(NULL, 0, copyThread, this, 0, &dwInId); if (hInThread == NULL) return NULL; CloseHandle(hInThread); return hNewInput; } // Create a pipe and a thread to read the input thread and signal the // event when input is available. Returns a handle to a pipe that // supplies a copy of the original input. HANDLE CreateCopyPipe(HANDLE hInput, HANDLE hEvent) { CopyPipe *cp = new CopyPipe(); return cp->RunPipe(hInput, hEvent); } polyml-5.7.1/libpolyml/Makefile.am0000644000175000017500000000601613204034553016041 0ustar daviddavidAUTOMAKE_OPTIONS=foreign moduledir = @moduledir@ AM_CPPFLAGS = $(CFLAGS) $(OSFLAG) $(GIT_VERSION) -Wall -DMODULEDIR=\"$(moduledir)\" AM_CFLAGS = $(CFLAGS) $(OSFLAG) $(GIT_VERSION) -Wall -fno-strict-aliasing AM_ASFLAGS = $(OSFLAG) AM_CCASFLAGS = $(OSFLAG) lib_LTLIBRARIES = libpolyml.la libpolyml_la_LDFLAGS = -version-info 9:0:0 if INTERNAL_LIBFFI libpolyml_la_LIBADD = ../libffi/libffi_convenience.la endif if NO_UNDEFINED # Force all references to be defined to build the DLL. libpolyml_la_LDFLAGS += -no-undefined endif # Select the architecture-specific modules if ARCHI386 ARCHSOURCE = x86_dep.cpp x86assembly_gas32.S else if ARCHINTERPRET ARCHSOURCE = interpret.cpp else if ARCHINTERPRET64 ARCHSOURCE = interpret.cpp else if ARCHX86_64 ARCHSOURCE = x86_dep.cpp x86assembly_gas64.S else endif endif endif endif # Select the object-format-specific modules if EXPPECOFF EXPORTSOURCE = pecoffexport.cpp else if EXPELF EXPORTSOURCE = elfexport.cpp else if EXPMACHO EXPORTSOURCE = machoexport.cpp endif endif endif if NATIVE_WINDOWS OSSOURCE = Console.cpp windows_specific.cpp else OSSOURCE = unix_specific.cpp endif noinst_HEADERS = \ arb.h \ basicio.h \ bitmap.h \ check_objects.h \ Console.h \ diagnostics.h \ elfexport.h \ errors.h \ exporter.h \ foreign.h \ gc.h \ gctaskfarm.h \ globals.h \ heapsizing.h \ int_opcodes.h \ io_internal.h \ locking.h \ machine_dep.h \ machoexport.h \ memmgr.h \ mpoly.h \ network.h \ noreturn.h \ objsize.h \ osmem.h \ os_specific.h \ pecoffexport.h \ pexport.h \ PolyControl.h \ poly_specific.h \ polyffi.h \ polystring.h \ process_env.h \ processes.h \ profiling.h \ realconv.h \ reals.h \ rts_module.h \ rtsentry.h \ run_time.h \ savestate.h \ save_vec.h \ scanaddrs.h \ sharedata.h \ sighandler.h \ statistics.h \ sys.h \ timing.h \ version.h \ xcall_numbers.h \ xwindows.h libpolyml_la_SOURCES = \ arb.cpp \ basicio.cpp \ bitmap.cpp \ check_objects.cpp \ diagnostics.cpp \ errors.cpp \ exporter.cpp \ foreign.cpp \ gc.cpp \ gc_check_weak_ref.cpp \ gc_copy_phase.cpp \ gc_mark_phase.cpp \ gc_share_phase.cpp \ gc_update_phase.cpp \ gctaskfarm.cpp \ heapsizing.cpp \ locking.cpp \ memmgr.cpp \ mpoly.cpp \ network.cpp \ objsize.cpp \ osmem.cpp \ pexport.cpp \ poly_specific.cpp \ polyffi.cpp \ polystring.cpp \ process_env.cpp \ processes.cpp \ profiling.cpp \ quick_gc.cpp \ realconv.cpp \ reals.cpp \ rts_module.cpp \ rtsentry.cpp \ run_time.cpp \ save_vec.cpp \ savestate.cpp \ scanaddrs.cpp \ sharedata.cpp \ sighandler.cpp \ statistics.cpp \ timing.cpp \ xwindows.cpp \ $(ARCHSOURCE) $(EXPORTSOURCE) $(OSSOURCE) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = polyml.pc # Convert the portable format to a native binary polyexport.o: polyimport exportPoly.sml (cd ..; driver/polyimport driver/$(POLYIMPORT) < driver/exportPoly.sml > /dev/null) clean-local: rm -f x86asmtemp.S ppcasmtemp.s polyml-5.7.1/libpolyml/network.cpp0000644000175000017500000020014413204034553016200 0ustar daviddavid/* Title: Network functions. Copyright (c) 2000-7, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_NETDB_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETINET_TCP_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_UN_H #include #endif #ifdef HAVE_SYS_FILIO_H #include #endif #ifdef HAVE_SYS_SOCKIO_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifndef HAVE_SOCKLEN_T typedef int socklen_t; #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #endif #ifdef HAVE_WINDOWS_H #include #endif #include #ifdef max #undef max #endif #include "globals.h" #include "gc.h" #include "arb.h" #include "run_time.h" #include "mpoly.h" #include "processes.h" #include "network.h" #include "io_internal.h" #include "sys.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "machine_dep.h" #include "errors.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetServByName(PolyObject *threadId, PolyWord servName); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetServByNameAndProtocol(PolyObject *threadId, PolyWord servName, PolyWord protName); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetServByPort(PolyObject *threadId, PolyWord portNo); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetServByPortAndProtocol(PolyObject *threadId, PolyWord portNo, PolyWord protName); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetProtByName(PolyObject *threadId, PolyWord protocolName); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetProtByNo(PolyObject *threadId, PolyWord protoNo); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetHostName(PolyObject *threadId); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetHostByName(PolyObject *threadId, PolyWord hostName); POLYEXTERNALSYMBOL POLYUNSIGNED PolyNetworkGetHostByAddr(PolyObject *threadId, PolyWord hostAddr); } #define STREAMID(x) (DEREFSTREAMHANDLE(x)->streamNo) #define SAVE(x) taskData->saveVec.push(x) #define ALLOC(n) alloc_and_save(taskData, n) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) #if (defined(_WIN32) && ! defined(__CYGWIN__)) static int winsock_init = 0; /* Check that it has been initialised. */ #else #define INVALID_SOCKET (-1) #define SOCKET_ERROR (-1) #endif #ifndef HAVE_SOCKLEN_T typedef int socklen_t; // This must be int for Windows at least #endif #ifndef SHUT_RD #define SHUT_RD 0 #endif #ifndef SHUT_WR #define SHUT_WR 1 #endif #ifndef SHUT_RDWR #define SHUT_RDWR 2 #endif /* Address families. Although this table is in ascending numerical order of address family nothing depends on that. The only requirement is that "INET" => AF_INET must always be present and "UNIX" => AF_UNIX must be present on Unix. Other entries are entirely optional and are for amusement only. */ struct af_tab_struct { const char *af_name; int af_num; } af_table[] = { #ifdef AF_UNIX { "UNIX", AF_UNIX }, /* This is nearly always there. */ #endif #ifdef AF_LOCAL { "LOCAL", AF_LOCAL }, #endif { "INET", AF_INET }, /* This one should always be there. */ #ifdef AF_IMPLINK { "IMPLINK", AF_IMPLINK }, #endif #ifdef AF_PUP { "PUP", AF_PUP }, #endif #ifdef AF_CHAOS { "CHAOS", AF_CHAOS }, #endif #ifdef AF_IPX { "IPX", AF_IPX }, #endif #ifdef AF_NS { "NS", AF_NS }, #endif #ifdef AF_ISO { "ISO", AF_ISO }, #endif #ifdef AF_OSI { "OSI", AF_OSI }, #endif #ifdef AF_ECMA { "ECMA", AF_ECMA }, #endif #ifdef AF_DATAKIT { "DATAKIT", AF_DATAKIT }, #endif #ifdef AF_CCITT { "CCITT", AF_CCITT }, #endif #ifdef AF_SNA { "SNA", AF_SNA }, #endif #ifdef AF_DECnet { "DECnet", AF_DECnet }, #endif #ifdef AF_DLI { "DLI", AF_DLI }, #endif #ifdef AF_LAT { "LAT", AF_LAT }, #endif #ifdef AF_HYLINK { "HYLINK", AF_HYLINK }, #endif #ifdef AF_APPLETALK { "APPLETALK", AF_APPLETALK }, #endif #ifdef AF_NETBIOS { "NETBIOS", AF_NETBIOS }, #endif #ifdef AF_ROUTE { "ROUTE", AF_ROUTE }, #endif #ifdef AF_VOICEVIEW { "VOICEVIEW", AF_VOICEVIEW }, #endif #ifdef AF_FIREFOX { "FIREFOX", AF_FIREFOX }, #endif #ifdef AF_BAN { "BAN", AF_BAN }, #endif #ifdef AF_LINK { "LINK", AF_LINK }, #endif #ifdef AF_COIP { "COIP", AF_COIP }, #endif #ifdef AF_CNT { "CNT", AF_CNT }, #endif #ifdef AF_SIP { "SIP", AF_SIP }, #endif #ifdef AF_ISDN { "ISDN", AF_ISDN }, #endif #ifdef AF_E164 { "E164", AF_E164 }, #endif #ifdef AF_INET6 { "INET6", AF_INET6 }, #endif #ifdef AF_NATM { "NATM", AF_NATM }, #endif #ifdef AF_ATM { "ATM", AF_ATM }, #endif #ifdef AF_NETGRAPH { "NETGRAPH", AF_NETGRAPH }, #endif }; /* Socket types. Only STREAM and DGRAM are required. */ struct sk_tab_struct { const char *sk_name; int sk_num; } sk_table[] = { { "STREAM", SOCK_STREAM }, { "DGRAM", SOCK_DGRAM }, { "RAW", SOCK_RAW }, { "RDM", SOCK_RDM }, { "SEQPACKET", SOCK_SEQPACKET } }; static Handle makeHostEntry(TaskData *taskData, struct hostent *host); static Handle makeProtoEntry(TaskData *taskData, struct protoent *proto); static Handle mkAftab(TaskData *taskData, void*, char *p); static Handle mkSktab(TaskData *taskData, void*, char *p); static Handle setSocketOption(TaskData *taskData, Handle args, int level, int opt); static Handle getSocketOption(TaskData *taskData, Handle args, int level, int opt); static Handle getSocketInt(TaskData *taskData, Handle args, int level, int opt); static Handle selectCall(TaskData *taskData, Handle args, int blockType); #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define GETERROR (WSAGetLastError()) #define TOOMANYFILES WSAEMFILE #define NOMEMORY WSA_NOT_ENOUGH_MEMORY #define STREAMCLOSED WSA_INVALID_HANDLE #define WOULDBLOCK WSAEWOULDBLOCK #define INPROGRESS WSAEINPROGRESS #define CALLINTERRUPTED WSAEINTR #undef EBADF #undef EMFILE #undef EAGAIN #undef EINTR #undef EWOULDBLOCK #undef ENOMEM #else #define GETERROR (errno) #define TOOMANYFILES EMFILE #define NOMEMORY ENOMEM #define STREAMCLOSED EBADF #define ERRORNUMBER errno #define FILEDOESNOTEXIST ENOENT #define WOULDBLOCK EWOULDBLOCK #define INPROGRESS EINPROGRESS #define CALLINTERRUPTED EINTR #endif // Wait until "select" returns. In Windows this is used only for networking. class WaitSelect: public Waiter { public: WaitSelect(); virtual void Wait(unsigned maxMillisecs); void SetRead(SOCKET fd) { FD_SET(fd, &readSet); } void SetWrite(SOCKET fd) { FD_SET(fd, &writeSet); } void SetExcept(SOCKET fd) { FD_SET(fd, &exceptSet); } // Save the result of the select call and any associated error int SelectResult(void) { return selectResult; } int SelectError(void) { return errorResult; } private: fd_set readSet, writeSet, exceptSet; int selectResult; int errorResult; }; WaitSelect::WaitSelect() { FD_ZERO(&readSet); FD_ZERO(&writeSet); FD_ZERO(&exceptSet); selectResult = 0; errorResult = 0; } void WaitSelect::Wait(unsigned maxMillisecs) { struct timeval toWait = { 0, 0 }; toWait.tv_sec = maxMillisecs / 1000; toWait.tv_usec = (maxMillisecs % 1000) * 1000; selectResult = select(FD_SETSIZE, &readSet, &writeSet, &exceptSet, &toWait); if (selectResult < 0) errorResult = GETERROR; } class WaitNet: public WaitSelect { public: WaitNet(SOCKET sock, bool isOOB = false); }; // Use "select" in both Windows and Unix. In Windows that means we // don't watch hWakeupEvent but that's only a hint. WaitNet::WaitNet(SOCKET sock, bool isOOB) { if (isOOB) SetExcept(sock); else SetRead(sock); } // Wait for a socket to be free to write. class WaitNetSend: public WaitSelect { public: WaitNetSend(SOCKET sock) { SetWrite(sock); } }; static Handle Net_dispatch_c(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORDHANDLE(code)); Handle hSave = taskData->saveVec.mark(); TryAgain: // Used for various retries. // N.B. If we call ThreadPause etc we may GC. We MUST reload any handles so for // safety we always come back here. switch (c) { case 11: { /* Return a list of known address families. */ return makeList(taskData, sizeof(af_table)/sizeof(af_table[0]), (char*)af_table, sizeof(af_table[0]), 0, mkAftab); } case 12: { /* Return a list of known socket types. */ return makeList(taskData, sizeof(sk_table)/sizeof(sk_table[0]), (char*)sk_table, sizeof(sk_table[0]), 0, mkSktab); } case 13: /* Return the "any" internet address. */ return Make_arbitrary_precision(taskData, INADDR_ANY); case 14: /* Create a socket */ { Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); PIOSTRUCT strm; POLYUNSIGNED stream_no = STREAMID(str_token); int af = get_C_int(taskData, DEREFHANDLE(args)->Get(0)); int type = get_C_int(taskData, DEREFHANDLE(args)->Get(1)); int proto = get_C_int(taskData, DEREFHANDLE(args)->Get(2)); SOCKET skt = socket(af, type, proto); if (skt == INVALID_SOCKET) { free_stream_entry(stream_no); switch (GETERROR) { case TOOMANYFILES: /* too many open files */ { if (emfileFlag) /* Previously had an EMFILE error. */ raise_syscall(taskData, "socket failed", TOOMANYFILES); emfileFlag = true; taskData->saveVec.reset(hSave); FullGC(taskData); /* May clear emfileFlag if we close a file. */ goto TryAgain; } case CALLINTERRUPTED: taskData->saveVec.reset(hSave); goto TryAgain; default: raise_syscall(taskData, "socket failed", GETERROR); } } /* Set the socket to non-blocking mode. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) unsigned long onOff = 1; if (ioctlsocket(skt, FIONBIO, &onOff) != 0) #else int onOff = 1; if (ioctl(skt, FIONBIO, &onOff) < 0) #endif { free_stream_entry(stream_no); #if (defined(_WIN32) && ! defined(__CYGWIN__)) closesocket(skt); #else close(skt); #endif raise_syscall(taskData, "ioctl failed", GETERROR); } strm = &basic_io_vector[stream_no]; strm->device.sock = skt; strm->ioBits = IO_BIT_OPEN | IO_BIT_READ | IO_BIT_WRITE | IO_BIT_SOCKET ; return(str_token); } case 15: /* Set TCP No-delay option. */ return setSocketOption(taskData, args, IPPROTO_TCP, TCP_NODELAY); case 16: /* Get TCP No-delay option. */ return getSocketOption(taskData, args, IPPROTO_TCP, TCP_NODELAY); case 17: /* Set Debug option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_DEBUG); case 18: /* Get Debug option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_DEBUG); case 19: /* Set REUSEADDR option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_REUSEADDR); case 20: /* Get REUSEADDR option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_REUSEADDR); case 21: /* Set KEEPALIVE option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_KEEPALIVE); case 22: /* Get KEEPALIVE option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_KEEPALIVE); case 23: /* Set DONTROUTE option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_DONTROUTE); case 24: /* Get DONTROUTE option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_DONTROUTE); case 25: /* Set BROADCAST option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_BROADCAST); case 26: /* Get BROADCAST option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_BROADCAST); case 27: /* Set OOBINLINE option. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_OOBINLINE); case 28: /* Get OOBINLINE option. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_OOBINLINE); case 29: /* Set SNDBUF size. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_SNDBUF); case 30: /* Get SNDBUF size. */ return getSocketInt(taskData, args, SOL_SOCKET, SO_SNDBUF); case 31: /* Set RCVBUF size. */ return setSocketOption(taskData, args, SOL_SOCKET, SO_RCVBUF); case 32: /* Get RCVBUF size. */ return getSocketInt(taskData, args, SOL_SOCKET, SO_RCVBUF); case 33: /* Get socket type e.g. SOCK_STREAM. */ return getSocketInt(taskData, args, SOL_SOCKET, SO_TYPE); case 34: /* Get error status and clear it. */ return getSocketOption(taskData, args, SOL_SOCKET, SO_ERROR); case 35: /* Set Linger time. */ { struct linger linger; PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int lTime = get_C_int(taskData, DEREFHANDLE(args)->Get(1)); /* We pass in a negative value to turn the option off, zero or positive to turn it on. */ if (lTime < 0) { linger.l_onoff = 0; linger.l_linger = 0; } else { linger.l_onoff = 1; linger.l_linger = lTime; } if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (setsockopt(strm->device.sock, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger)) != 0) raise_syscall(taskData, "setsockopt failed", GETERROR); return Make_arbitrary_precision(taskData, 0); } case 36: /* Get Linger time. */ { struct linger linger; PIOSTRUCT strm = get_stream(args->WordP()); socklen_t size = sizeof(linger); int lTime = 0; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (getsockopt(strm->device.sock, SOL_SOCKET, SO_LINGER, (char*)&linger, &size) != 0) raise_syscall(taskData, "getsockopt failed", GETERROR); /* If the option is off return a negative. */ if (linger.l_onoff == 0) lTime = -1; else lTime = linger.l_linger; return Make_arbitrary_precision(taskData, lTime); } case 37: /* Get peer name. */ { PIOSTRUCT strm = get_stream(args->WordP()); struct sockaddr sockA; socklen_t size = sizeof(sockA); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (getpeername(strm->device.sock, &sockA, &size) != 0) raise_syscall(taskData, "getpeername failed", GETERROR); /* Addresses are treated as strings. */ return(SAVE(C_string_to_Poly(taskData, (char*)&sockA, size))); } case 38: /* Get socket name. */ { PIOSTRUCT strm = get_stream(args->WordP()); struct sockaddr sockA; socklen_t size = sizeof(sockA); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (getsockname(strm->device.sock, &sockA, &size) != 0) raise_syscall(taskData, "getsockname failed", GETERROR); return(SAVE(C_string_to_Poly(taskData, (char*)&sockA, size))); } case 39: /* Return the address family from an address. */ { PolyStringObject *psAddr = (PolyStringObject *)args->WordP(); struct sockaddr *psock = (struct sockaddr *)&psAddr->chars; return Make_arbitrary_precision(taskData, psock->sa_family); } case 40: /* Create a socket address from a port number and internet address. */ { struct sockaddr_in sockaddr; memset(&sockaddr, 0, sizeof(sockaddr)); sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(get_C_ushort(taskData, DEREFHANDLE(args)->Get(0))); sockaddr.sin_addr.s_addr = htonl(get_C_unsigned(taskData, DEREFHANDLE(args)->Get(1))); return(SAVE(C_string_to_Poly(taskData, (char*)&sockaddr, sizeof(sockaddr)))); } case 41: /* Return port number from an internet socket address. Assumes that we've already checked the address family. */ { PolyStringObject *psAddr = (PolyStringObject *)args->WordP(); struct sockaddr_in *psock = (struct sockaddr_in *)&psAddr->chars; return Make_arbitrary_precision(taskData, ntohs(psock->sin_port)); } case 42: /* Return internet address from an internet socket address. Assumes that we've already checked the address family. */ { PolyStringObject * psAddr = (PolyStringObject *)args->WordP(); struct sockaddr_in *psock = (struct sockaddr_in *)&psAddr->chars; return Make_arbitrary_precision(taskData, ntohl(psock->sin_addr.s_addr)); } /* 43 - Set non-blocking mode. Now removed. */ case 44: /* Find number of bytes available. */ { PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) unsigned long readable; if (ioctlsocket(strm->device.sock, FIONREAD, &readable) != 0) raise_syscall(taskData, "ioctlsocket failed", GETERROR); #else int readable; if (ioctl(strm->device.sock, FIONREAD, &readable) < 0) raise_syscall(taskData, "ioctl failed", GETERROR); #endif return Make_arbitrary_precision(taskData, readable); } case 45: /* Find out if we are at the mark. */ { PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) unsigned long atMark; if (ioctlsocket(strm->device.sock, SIOCATMARK, &atMark) != 0) raise_syscall(taskData, "ioctlsocket failed", GETERROR); #else int atMark; if (ioctl(strm->device.sock, SIOCATMARK, &atMark) < 0) raise_syscall(taskData, "ioctl failed", GETERROR); #endif return Make_arbitrary_precision(taskData, atMark == 0 ? 0 : 1); } case 46: /* Accept a connection. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 58: /* Non-blocking accept. */ { PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); else { SOCKET sock = strm->device.sock; struct sockaddr resultAddr; Handle addrHandle, pair; PIOSTRUCT newStrm; /* Get a token for the new socket - may raise an exception if it fails. */ Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); POLYUNSIGNED stream_no = STREAMID(str_token); socklen_t addrLen = sizeof(resultAddr); SOCKET result = accept(sock, &resultAddr, &addrLen); if (result == INVALID_SOCKET) { /* Free the stream entry */ free_stream_entry(stream_no); switch (GETERROR) { case CALLINTERRUPTED: taskData->saveVec.reset(hSave); goto TryAgain; /* Have to retry if we got EINTR. */ case TOOMANYFILES: /* Too many files. */ { if (emfileFlag) /* Previously had an EMFILE error. */ raise_syscall(taskData, "accept failed", TOOMANYFILES); emfileFlag = true; taskData->saveVec.reset(hSave); FullGC(taskData); /* May clear emfileFlag if we close a file. */ goto TryAgain; } case WOULDBLOCK: #if (WOULDBLOCK != INPROGRESS) case INPROGRESS: #endif /* If the socket is in non-blocking mode we pass this back to the caller. If it is blocking we suspend this process and try again later. */ if (c == 46 /* blocking version. */) { WaitNet waiter(strm->device.sock); processes->ThreadPauseForIO(taskData, &waiter); taskData->saveVec.reset(hSave); goto TryAgain; } /* else drop through. */ default: raise_syscall(taskData, "accept failed", GETERROR); } } addrHandle = SAVE(C_string_to_Poly(taskData, (char*)&resultAddr, addrLen)); newStrm = &basic_io_vector[stream_no]; newStrm->device.sock = result; newStrm->ioBits = IO_BIT_OPEN | IO_BIT_READ | IO_BIT_WRITE | IO_BIT_SOCKET; /* Return a pair of the new socket and the address. */ pair = ALLOC(2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(str_token)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(addrHandle)); return pair; } } case 47: /* Bind an address to a socket. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PolyStringObject * psAddr = (PolyStringObject *)args->WordP()->Get(1).AsObjPtr(); struct sockaddr *psock = (struct sockaddr *)&psAddr->chars; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (bind(strm->device.sock, psock, (int)psAddr->length) != 0) raise_syscall(taskData, "bind failed", GETERROR); return Make_arbitrary_precision(taskData, 0); } case 48: /* Connect to an address. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 59: /* Non-blocking connect. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PolyStringObject * psAddr = (PolyStringObject *)args->WordP()->Get(1).AsObjPtr(); struct sockaddr *psock = (struct sockaddr *)&psAddr->chars; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); /* In Windows, and possibly also in Unix, if we have received a previous EWOULDBLOCK we have to use "select" to tell us whether the connection actually succeeded. */ while (1) { int res = connect(strm->device.sock, psock, (int)psAddr->length); if (res == 0) return Make_arbitrary_precision(taskData, 0); /* OK */ /* It isn't clear that EINTR can ever occur with connect, but just to be safe, we retry. */ int err = GETERROR; if ((err == WOULDBLOCK || err == INPROGRESS) && c == 48 /*blocking version*/) break; // It's in progress and we need to wait for completion else if (err != CALLINTERRUPTED) raise_syscall(taskData, "connect failed", err); /* else try again. */ } while (1) { // ThreadPause may GC. We need to reload the socket for security. strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); SOCKET sock = strm->device.sock; /* In Windows failure is indicated by the bit being set in the exception set rather than the write set. */ WaitSelect waiter; waiter.SetWrite(sock); waiter.SetExcept(sock); processes->ThreadPauseForIO(taskData, &waiter); if (waiter.SelectResult() < 0) { int err = waiter.SelectError(); if (err != CALLINTERRUPTED) raise_syscall(taskData, "select failed", err); /* else continue */ } else if (waiter.SelectResult() != 0) /* Definite result. */ { int result = 0; socklen_t len = sizeof(result); if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (char*)&result, &len) != 0) raise_syscall(taskData, "connect failed", GETERROR); else if (result != 0) raise_syscall(taskData, "connect failed", result); return Make_arbitrary_precision(taskData, 0); /* Success. */ } } } case 49: /* Put socket into listening mode. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int backlog = get_C_int(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (listen(strm->device.sock, backlog) != 0) raise_syscall(taskData, "listen failed", GETERROR); return Make_arbitrary_precision(taskData, 0); } case 50: /* Shutdown the socket. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int mode = 0; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); switch (get_C_ulong(taskData, DEREFHANDLE(args)->Get(1))) { case 1: mode = SHUT_RD; break; case 2: mode = SHUT_WR; break; case 3: mode = SHUT_RDWR; } if (shutdown(strm->device.sock, mode) != 0) raise_syscall(taskData, "shutdown failed", GETERROR); return Make_arbitrary_precision(taskData, 0); } case 51: /* Send data on a socket. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 60: /* Non-blocking send. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PolyWord pBase = DEREFHANDLE(args)->Get(1); char ch, *base; POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(2)); #if(defined(_WIN32) && ! defined(_CYGWIN)) int length = get_C_int(taskData, DEREFHANDLE(args)->Get(3)); #else ssize_t length = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(3)); #endif unsigned int dontRoute = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(4)); unsigned int outOfBand = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(5)); int flags = 0; if (dontRoute != 0) flags |= MSG_DONTROUTE; if (outOfBand != 0) flags |= MSG_OOB; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (IS_INT(pBase)) { /* Handle the special case where we are sending a single byte vector and the "address" is the tagged byte itself. */ ch = (char)UNTAGGED(pBase); base = &ch; offset = 0; length = 1; } else base = (char*)pBase.AsObjPtr()->AsBytePtr(); while (1) { int err; #if(defined(_WIN32) && ! defined(_CYGWIN)) int sent; #else ssize_t sent; #endif sent = send(strm->device.sock, base+offset, length, flags); /* It isn't clear that EINTR can ever occur with send but just to be safe we deal with that case and retry the send. */ if (sent != SOCKET_ERROR) /* OK. */ return Make_arbitrary_precision(taskData, sent); err = GETERROR; if ((err == WOULDBLOCK || err == INPROGRESS) && c == 51 /* blocking */) { WaitNetSend waiter(strm->device.sock); processes->ThreadPauseForIO(taskData, &waiter); // It is NOT safe to just loop here. We may have GCed. taskData->saveVec.reset(hSave); goto TryAgain; } else if (err != CALLINTERRUPTED) raise_syscall(taskData, "send failed", err); /* else try again */ } } case 52: /* Send data on a socket to a given address. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 61: /* Non-blocking send. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PolyStringObject * psAddr = (PolyStringObject *)args->WordP()->Get(1).AsObjPtr(); PolyWord pBase = DEREFHANDLE(args)->Get(2); char ch, *base; POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(3)); #if(defined(_WIN32) && ! defined(_CYGWIN)) int length = get_C_int(taskData, DEREFHANDLE(args)->Get(4)); #else size_t length = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(4)); #endif unsigned int dontRoute = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(5)); unsigned int outOfBand = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(6)); int flags = 0; if (dontRoute != 0) flags |= MSG_DONTROUTE; if (outOfBand != 0) flags |= MSG_OOB; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (IS_INT(pBase)) { /* Handle the special case where we are sending a single byte vector and the "address" is the tagged byte itself. */ ch = (char)UNTAGGED(pBase); base = &ch; offset = 0; length = 1; } else base = (char*)pBase.AsObjPtr()->AsBytePtr(); while (1) { int err; #if(defined(_WIN32) && ! defined(_CYGWIN)) int sent; #else ssize_t sent; #endif sent = sendto(strm->device.sock, base+offset, length, flags, (struct sockaddr *)psAddr->chars, (int)psAddr->length); /* It isn't clear that EINTR can ever occur with send but just to be safe we deal with that case and retry the send. */ if (sent != SOCKET_ERROR) /* OK. */ return Make_arbitrary_precision(taskData, sent); err = GETERROR; if ((err == WOULDBLOCK || err == INPROGRESS) && c == 52 /* blocking */) { WaitNetSend waiter(strm->device.sock); processes->ThreadPauseForIO(taskData, &waiter); // It is NOT safe to just loop here. We may have GCed. taskData->saveVec.reset(hSave); goto TryAgain; } else if (err != CALLINTERRUPTED) raise_syscall(taskData, "sendto failed", err); /* else try again */ } } case 53: /* Receive data into an array. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 62: /* Non-blocking receive. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); char *base = (char*)DEREFHANDLE(args)->Get(1).AsObjPtr()->AsBytePtr(); POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(2)); #if(defined(_WIN32) && ! defined(_CYGWIN)) int length = get_C_int(taskData, DEREFHANDLE(args)->Get(3)); #else size_t length = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(3)); #endif unsigned int peek = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(4)); unsigned int outOfBand = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(5)); int flags = 0; if (peek != 0) flags |= MSG_PEEK; if (outOfBand != 0) flags |= MSG_OOB; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); while (1) { int err; #if(defined(_WIN32) && ! defined(_CYGWIN)) int recvd; #else ssize_t recvd; #endif recvd = recv(strm->device.sock, base+offset, length, flags); err = GETERROR; if (recvd != SOCKET_ERROR) { /* OK. */ /* It appears that recv may return the length of the message if that is longer than the buffer. */ if (recvd > (int)length) recvd = length; return Make_arbitrary_precision(taskData, recvd); } if ((err == WOULDBLOCK || err == INPROGRESS) && c == 53 /* blocking */) { /* Block until something arrives. */ WaitNet waiter(strm->device.sock, outOfBand != 0); processes->ThreadPauseForIO(taskData, &waiter); // It is NOT safe to just loop here. We may have GCed. taskData->saveVec.reset(hSave); goto TryAgain; } else if (err != CALLINTERRUPTED) raise_syscall(taskData, "recv failed", err); /* else try again */ } } case 54: /* Receive data into an array and return the sender's address along with the length. In Windows this can only be used with datagrams. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); case 63: /* Non-blocking receive. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); char *base = (char*)DEREFHANDLE(args)->Get(1).AsObjPtr()->AsBytePtr(); POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(2)); #if(defined(_WIN32) && ! defined(_CYGWIN)) int length = get_C_int(taskData, DEREFHANDLE(args)->Get(3)); #else size_t length = getPolyUnsigned(taskData, DEREFHANDLE(args)->Get(3)); #endif unsigned int peek = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(4)); unsigned int outOfBand = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(5)); int flags = 0; socklen_t addrLen; struct sockaddr resultAddr; if (peek != 0) flags |= MSG_PEEK; if (outOfBand != 0) flags |= MSG_OOB; if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); while (1) { int err; #if(defined(_WIN32) && ! defined(_CYGWIN)) int recvd; #else ssize_t recvd; #endif recvd = recvfrom(strm->device.sock, base+offset, length, flags, &resultAddr, &addrLen); err = GETERROR; if (recvd != SOCKET_ERROR) { /* OK. */ Handle addrHandle, lengthHandle, pair; if (recvd > (int)length) recvd = length; lengthHandle = Make_arbitrary_precision(taskData, recvd); addrHandle = SAVE(C_string_to_Poly(taskData, (char*)&resultAddr, addrLen)); pair = ALLOC(2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(lengthHandle)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(addrHandle)); return pair; } if ((err == WOULDBLOCK || err == INPROGRESS) && c == 54 /* blocking */) { WaitNet waiter(strm->device.sock, outOfBand != 0); processes->ThreadPauseForIO(taskData, &waiter); // It is NOT safe to just loop here. We may have GCed. taskData->saveVec.reset(hSave); goto TryAgain; } else if (err != CALLINTERRUPTED) raise_syscall(taskData, "recvfrom failed", err); /* else try again */ } } case 55: /* Create a socket pair. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Not implemented. */ raise_syscall(taskData, "socketpair not implemented", WSAEAFNOSUPPORT); #else { Handle str_token1 = make_stream_entry(taskData); if (str_token1 == NULL) raise_syscall(taskData, "Insufficient memory", ENOMEM); Handle str_token2 = make_stream_entry(taskData); if (str_token2 == NULL) raise_syscall(taskData, "Insufficient memory", ENOMEM); Handle pair; PIOSTRUCT strm1, strm2; unsigned stream_no1 = STREAMID(str_token1); unsigned stream_no2 = STREAMID(str_token2); int af = get_C_long(taskData, DEREFHANDLE(args)->Get(0)); int type = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int proto = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); int onOff = 1; SOCKET skt[2]; if (socketpair(af, type, proto, skt) != 0) { free_stream_entry(stream_no1); free_stream_entry(stream_no2); switch (GETERROR) { case TOOMANYFILES: /* too many open files */ { if (emfileFlag) /* Previously had an EMFILE error. */ raise_syscall(taskData, "socket failed", TOOMANYFILES); emfileFlag = true; FullGC(taskData); /* May clear emfileFlag if we close a file. */ taskData->saveVec.reset(hSave); goto TryAgain; } case CALLINTERRUPTED: taskData->saveVec.reset(hSave); goto TryAgain; default: raise_syscall(taskData, "socketpair failed", GETERROR); } } /* Set the sockets to non-blocking mode. */ if (ioctl(skt[0], FIONBIO, &onOff) < 0 || ioctl(skt[1], FIONBIO, &onOff) < 0) { free_stream_entry(stream_no1); free_stream_entry(stream_no2); close(skt[0]); close(skt[1]); raise_syscall(taskData, "ioctl failed", GETERROR); } strm1 = &basic_io_vector[stream_no1]; strm1->device.sock = skt[0]; strm1->ioBits = IO_BIT_OPEN | IO_BIT_READ | IO_BIT_WRITE | IO_BIT_SOCKET ; strm2 = &basic_io_vector[stream_no2]; strm2->device.sock = skt[1]; strm2->ioBits = IO_BIT_OPEN | IO_BIT_READ | IO_BIT_WRITE | IO_BIT_SOCKET ; /* Return the two streams as a pair. */ pair = ALLOC(2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(str_token1)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(str_token2)); return pair; } #endif case 56: /* Create a Unix socket address from a string. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Not implemented. */ raise_syscall(taskData, "Unix addresses not implemented", WSAEAFNOSUPPORT); #else { struct sockaddr_un addr; memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; #ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN addr.sun_len = sizeof(addr); // Used in FreeBSD only. #endif POLYUNSIGNED length = Poly_string_to_C(DEREFWORD(args), addr.sun_path, sizeof(addr.sun_path)); if (length > (int)sizeof(addr.sun_path)) raise_syscall(taskData, "Address too long", ENAMETOOLONG); return SAVE(C_string_to_Poly(taskData, (char*)&addr, sizeof(addr))); } #endif case 57: /* Get the file name from a Unix socket address. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Not implemented. */ raise_syscall(taskData, "Unix addresses not implemented", WSAEAFNOSUPPORT); #else { PolyStringObject * psAddr = (PolyStringObject *)args->WordP(); struct sockaddr_un *psock = (struct sockaddr_un *)&psAddr->chars; return SAVE(C_string_to_Poly(taskData, psock->sun_path)); } #endif case 64: /* Blocking select call. Infinite timeout. */ return selectCall(taskData, args, 1); case 65: /* Polling select call. Zero timeout. */ return selectCall(taskData, args, 2); case 66: /* Select call with non-zero timeout. */ return selectCall(taskData, args, 0); default: { char msg[100]; sprintf(msg, "Unknown net function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); return 0; } } } static Handle mkAddr(TaskData *taskData, void *arg, char *p) { int j; struct hostent *host = (struct hostent *)arg; unsigned long addr = 0; /* Addresses are in network order so this is fairly easy. In practice they will be 4 byte entries so we could just use ntohl. */ for (j = 0; j < host->h_length; j++) addr = (addr << 8) | ((*(char**)p)[j] & 255); return Make_arbitrary_precision(taskData, addr); } /* Convert a host entry into a tuple for ML. */ static Handle makeHostEntry(TaskData *taskData, struct hostent *host) { /* We need to do all this in the right order. We cannot construct the result tuple until all the values are ready. We have to save each entry on the save stack just in case of a garbage collection. */ int i; char **p; Handle aliases, name, addrType, result; Handle addrList = SAVE(ListNull); /* Canonical name. */ name = SAVE(C_string_to_Poly(taskData, host->h_name)); /* Aliases. */ for (i=0, p = host->h_aliases; *p != NULL; p++, i++); aliases = convert_string_list(taskData, i, host->h_aliases); /* Address type. */ addrType = Make_arbitrary_precision(taskData, host->h_addrtype); /* Addresses. */ /* Count them first and then work from the end back. */ for (i=0, p = host->h_addr_list; *p != NULL; p++, i++); addrList = makeList(taskData, i, (char*)host->h_addr_list, sizeof(char*), host, mkAddr); /* Make the result structure. */ result = ALLOC(4); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(name)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(aliases)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(addrType)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(addrList)); return result; } static Handle makeProtoEntry(TaskData *taskData, struct protoent *proto) { int i; char **p; Handle aliases, name, protocol, result; /* Canonical name. */ name = SAVE(C_string_to_Poly(taskData, proto->p_name)); /* Aliases. */ for (i=0, p = proto->p_aliases; *p != NULL; p++, i++); aliases = convert_string_list(taskData, i, proto->p_aliases); /* Protocol number. */ protocol = Make_arbitrary_precision(taskData, proto->p_proto); /* Make the result structure. */ result = ALLOC(3); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(name)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(aliases)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(protocol)); return result; } static Handle makeServEntry(TaskData *taskData, struct servent *serv) { int i; char **p; Handle aliases, name, protocol, result, port; /* Canonical name. */ name = SAVE(C_string_to_Poly(taskData, serv->s_name)); /* Aliases. */ for (i=0, p = serv->s_aliases; *p != NULL; p++, i++); aliases = convert_string_list(taskData, i, serv->s_aliases); /* Port number. */ port = Make_arbitrary_precision(taskData, ntohs(serv->s_port)); /* Protocol name. */ protocol = SAVE(C_string_to_Poly(taskData, serv->s_proto)); /* Make the result structure. */ result = ALLOC(4); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(name)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(aliases)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(port)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(protocol)); return result; } static Handle mkAftab(TaskData *taskData, void *arg, char *p) { struct af_tab_struct *af = (struct af_tab_struct *)p; Handle result, name, num; /* Construct a pair of the string and the number. */ name = SAVE(C_string_to_Poly(taskData, af->af_name)); num = Make_arbitrary_precision(taskData, af->af_num); result = ALLOC(2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(name)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(num)); return result; } static Handle mkSktab(TaskData *taskData, void *arg, char *p) { struct sk_tab_struct *sk = (struct sk_tab_struct *)p; Handle result, name, num; /* Construct a pair of the string and the number. */ name = SAVE(C_string_to_Poly(taskData, sk->sk_name)); num = Make_arbitrary_precision(taskData, sk->sk_num); result = ALLOC(2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(name)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(num)); return result; } /* This sets an option and can also be used to set an integer. */ static Handle setSocketOption(TaskData *taskData, Handle args, int level, int opt) { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int onOff = get_C_int(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (setsockopt(strm->device.sock, level, opt, (char*)&onOff, sizeof(int)) != 0) raise_syscall(taskData, "setsockopt failed", GETERROR); return Make_arbitrary_precision(taskData, 0); } /* Get a socket option as a boolean */ static Handle getSocketOption(TaskData *taskData, Handle args, int level, int opt) { PIOSTRUCT strm = get_stream(args->WordP()); int onOff = 0; socklen_t size = sizeof(int); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (getsockopt(strm->device.sock, level, opt, (char*)&onOff, &size) != 0) raise_syscall(taskData, "getsockopt failed", GETERROR); return Make_arbitrary_precision(taskData, onOff == 0 ? 0 : 1); } /* Get a socket option as an integer */ static Handle getSocketInt(TaskData *taskData, Handle args, int level, int opt) { PIOSTRUCT strm = get_stream(args->WordP()); int optVal = 0; socklen_t size = sizeof(int); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (getsockopt(strm->device.sock, level, opt, (char*)&optVal, &size) != 0) raise_syscall(taskData, "getsockopt failed", GETERROR); return Make_arbitrary_precision(taskData, optVal); } /* Helper function for selectCall. Creates the result vector of active sockets. */ static Handle getSelectResult(TaskData *taskData, Handle args, int offset, fd_set *pFds) { /* Construct the result vectors. */ PolyObject *inVec = DEREFHANDLE(args)->Get(offset).AsObjPtr(); POLYUNSIGNED nVec = OBJECT_LENGTH(inVec); int nRes = 0; POLYUNSIGNED i; for (i = 0; i < nVec; i++) { PIOSTRUCT strm = get_stream(inVec->Get(i).AsObjPtr()); if (FD_ISSET(strm->device.sock, pFds)) nRes++; } if (nRes == 0) return ALLOC(0); /* None - return empty vector. */ else { Handle result = ALLOC(nRes); inVec = DEREFHANDLE(args)->Get(offset).AsObjPtr(); /* It could have moved as a result of a gc. */ nRes = 0; for (i = 0; i < nVec; i++) { PIOSTRUCT strm = get_stream(inVec->Get(i).AsObjPtr()); if (FD_ISSET(strm->device.sock, pFds)) DEREFWORDHANDLE(result)->Set(nRes++, inVec->Get(i)); } return result; } } /* Wrapper for "select" call. The arguments are arrays of socket ids. These arrays are updated so that "active" sockets are left unchanged and inactive sockets are set to minus one. */ static Handle selectCall(TaskData *taskData, Handle args, int blockType) { Handle hSave = taskData->saveVec.mark(); TryAgain: // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); fd_set readers, writers, excepts; struct timeval timeout; int selectRes; POLYUNSIGNED i, nVec; Handle rdResult, wrResult, exResult, result; /* Set up the bitmaps for the select call from the arrays. */ PolyObject *readVec = DEREFHANDLE(args)->Get(0).AsObjPtr(); PolyObject *writeVec = DEREFHANDLE(args)->Get(1).AsObjPtr(); PolyObject *excVec = DEREFHANDLE(args)->Get(2).AsObjPtr(); FD_ZERO(&readers); FD_ZERO(&writers); FD_ZERO(&excepts); nVec = OBJECT_LENGTH(readVec); for (i = 0; i < nVec; i++) { PIOSTRUCT strm = get_stream(readVec->Get(i).AsObjPtr()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); FD_SET(strm->device.sock, &readers); } nVec = OBJECT_LENGTH(writeVec); for (i = 0; i < nVec; i++) { PIOSTRUCT strm = get_stream(writeVec->Get(i).AsObjPtr()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); FD_SET(strm->device.sock, &writers); } nVec = OBJECT_LENGTH(excVec); for (i = 0; i < nVec; i++) { PIOSTRUCT strm = get_stream(excVec->Get(i).AsObjPtr()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); FD_SET(strm->device.sock, &excepts); } /* Whatever the timeout specified we simply poll here. */ memset(&timeout, 0, sizeof(timeout)); selectRes = select(FD_SETSIZE, &readers, &writers, &excepts, &timeout); if (selectRes < 0) raise_syscall(taskData, "select failed", GETERROR); if (selectRes == 0) { /* Timed out. Have to look at the timeout value. */ switch (blockType) { case 0: /* Check the timeout. */ { /* The time argument is an absolute time. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ftTime, ftNow; /* Get the file time. */ getFileTimeFromArb(taskData, taskData->saveVec.push(DEREFHANDLE(args)->Get(3)), &ftTime); GetSystemTimeAsFileTime(&ftNow); /* If the timeout time is earlier than the current time we must return, otherwise we block. */ if (CompareFileTime(&ftTime, &ftNow) <= 0) break; /* Return the empty set. */ /* else drop through and block. */ #else /* Unix */ struct timeval tv; /* We have a value in microseconds. We need to split it into seconds and microseconds. */ Handle hTime = SAVE(DEREFWORDHANDLE(args)->Get(3)); Handle hMillion = Make_arbitrary_precision(taskData, 1000000); unsigned long secs = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); unsigned long usecs = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); /* If the timeout time is earlier than the current time we must return, otherwise we block. */ if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", errno); if ((unsigned long)tv.tv_sec > secs || ((unsigned long)tv.tv_sec == secs && (unsigned long)tv.tv_usec >= usecs)) break; /* else block. */ #endif } case 1: /* Block until one of the descriptors is ready. */ processes->ThreadPause(taskData); taskData->saveVec.reset(hSave); goto TryAgain; case 2: /* Just a simple poll - drop through. */ break; } } /* Construct the result vectors. */ rdResult = getSelectResult(taskData, args, 0, &readers); wrResult = getSelectResult(taskData, args, 1, &writers); exResult = getSelectResult(taskData, args, 2, &excepts); result = ALLOC(3); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(rdResult)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(wrResult)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(exResult)); return result; } // General interface to networking. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyNetworkGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = Net_dispatch_c(taskData, pushedArg, pushedCode); } catch (KillException &) { processes->ThreadExit(taskData); // May test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetServByName(PolyObject *threadId, PolyWord serviceName) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Get service given service name only. */ TempCString servName(Poly_string_to_C_alloc(serviceName)); struct servent *serv = getservbyname (servName, NULL); // If this fails the ML function returns NONE Handle result = serv == NULL ? 0 : makeServEntry(taskData, serv); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetServByNameAndProtocol(PolyObject *threadId, PolyWord serviceName, PolyWord protName) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Get service given service name and protocol name. */ TempCString servName(Poly_string_to_C_alloc(serviceName)); TempCString protoName(Poly_string_to_C_alloc(protName)); struct servent *serv = getservbyname (servName, protoName); Handle result = serv == NULL ? 0 : makeServEntry(taskData, serv); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetServByPort(PolyObject *threadId, PolyWord portNo) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Get service given port number only. */ long port = htons(get_C_ushort(taskData, portNo)); struct servent *serv = getservbyport(port, NULL); Handle result = serv == NULL ? 0 : makeServEntry(taskData, serv); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetServByPortAndProtocol(PolyObject *threadId, PolyWord portNo, PolyWord protName) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Get service given port number and protocol name. */ long port = htons(get_C_ushort(taskData, portNo)); TempCString protoName(Poly_string_to_C_alloc(protName)); struct servent *serv = getservbyport (port, protoName); Handle result = serv == NULL ? 0 : makeServEntry(taskData, serv); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetProtByName(PolyObject *threadId, PolyWord protocolName) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Look up protocol entry. */ TempCString protoName(Poly_string_to_C_alloc(protocolName)); struct protoent *proto = getprotobyname(protoName); // If this fails the ML function returns NONE Handle result = proto == NULL ? 0 : makeProtoEntry(taskData, proto); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetProtByNo(PolyObject *threadId, PolyWord protoNo) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Look up protocol entry. */ int pNum = get_C_int(taskData, protoNo); struct protoent *proto = getprotobynumber(pNum); Handle result = proto == NULL ? 0 : makeProtoEntry(taskData, proto); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetHostName(PolyObject *threadId) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { /* Get the current host name. */ #if(defined(_WIN32) && ! defined(_CYGWIN)) int size = 4096; #else size_t size = 4096; #endif TempCString hostName((char *)malloc(size)); if (hostName == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); int err; while ((err = gethostname(hostName, size)) != 0 && GETERROR == ENAMETOOLONG) { if (size > std::numeric_limits::max() / 2) raise_fail(taskData, "gethostname needs too large a buffer"); size *= 2; char *new_buf = (char *)realloc(hostName, size); if (new_buf == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); hostName = new_buf; } if (err != 0) raise_syscall(taskData, "gethostname failed", GETERROR); result = SAVE(C_string_to_Poly(taskData, hostName)); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetHostByName(PolyObject *threadId, PolyWord hName) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Look up a host name. */ TempCString hostName(Poly_string_to_C_alloc(hName)); struct hostent *host = gethostbyname(hostName); // If this fails the ML function returns NONE Handle result = host == NULL ? 0 : makeHostEntry(taskData, host); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyNetworkGetHostByAddr(PolyObject *threadId, PolyWord hostAddr) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); /* Look up entry by address. */ unsigned long addr = htonl(get_C_unsigned(taskData, hostAddr)); /* Look up a host name given an address. */ struct hostent *host = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET); Handle result = host == NULL ? 0 : makeHostEntry(taskData, host); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts networkingEPT[] = { { "PolyNetworkGeneral", (polyRTSFunction)&PolyNetworkGeneral}, { "PolyNetworkGetServByName", (polyRTSFunction)&PolyNetworkGetServByName}, { "PolyNetworkGetServByNameAndProtocol", (polyRTSFunction)&PolyNetworkGetServByNameAndProtocol}, { "PolyNetworkGetServByPort", (polyRTSFunction)&PolyNetworkGetServByPort}, { "PolyNetworkGetServByPortAndProtocol", (polyRTSFunction)&PolyNetworkGetServByPortAndProtocol}, { "PolyNetworkGetProtByName", (polyRTSFunction)&PolyNetworkGetProtByName}, { "PolyNetworkGetProtByNo", (polyRTSFunction)&PolyNetworkGetProtByNo}, { "PolyNetworkGetHostName", (polyRTSFunction)&PolyNetworkGetHostName}, { "PolyNetworkGetHostByName", (polyRTSFunction)&PolyNetworkGetHostByName}, { "PolyNetworkGetHostByAddr", (polyRTSFunction)&PolyNetworkGetHostByAddr}, { NULL, NULL} // End of list. }; class Networking: public RtsModule { public: virtual void Init(void); virtual void Stop(void); }; // Declare this. It will be automatically added to the table. static Networking networkingModule; void Networking::Init(void) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define WINSOCK_MAJOR_VERSION 2 #define WINSOCK_MINOR_VERSION 2 WSADATA wsaData; WORD wVersion = MAKEWORD(WINSOCK_MINOR_VERSION, WINSOCK_MAJOR_VERSION); /* Initialise the system and check that the version it supplied is the one we requested. */ if(WSAStartup(wVersion, &wsaData) == 0) { if (wsaData.wVersion == wVersion) winsock_init = 1; else WSACleanup(); } #endif } void Networking::Stop(void) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (winsock_init) WSACleanup(); winsock_init = 0; #endif } polyml-5.7.1/libpolyml/foreign.cpp0000644000175000017500000016211613204034553016146 0ustar daviddavid/* Title: Foreign function interface Author: Nick Chapman Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2008-2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #if (defined(_WIN32) || (defined(HAVE_DLOPEN))) // Then we can use the foreign function interface. #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #if HAVE_ALLOCA_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H #include /* sleep */ #endif #ifdef HAVE_DLFCN_H #include #else // Earlier versions of Mac OS X had dlopen but no /usr/include/dlfcn.h extern "C" { void *dlopen(const char *, int); int dlclose(void *); void *dlsym(void *, const char *); const char *dlerror(void); } #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #include "Console.h" /* For hApplicationInstance. */ #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #else typedef char TCHAR; #define _T(x) x #endif #include "globals.h" // We need to include globals.h before in mingw64 otherwise // it messes up POLYUFMT/POLYSFMT. #include #include #include "arb.h" #include "reals.h" #include "foreign.h" #include "diagnostics.h" #include "run_time.h" #include "sys.h" #include "machine_dep.h" #include "mpoly.h" #include "processes.h" #include "scanaddrs.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "locking.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyForeignGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); } /********************************************************************** * * Stuff... * **********************************************************************/ #define DLOPENFLAGS 1 #define Head(p) (((ML_Cons_Cell*)(p).AsObjPtr())->h) #define Tail(p) (((ML_Cons_Cell*)(p).AsObjPtr())->t) #define UNHANDLE(h) DEREFWORDHANDLE(h) #define SAVE(x) taskData->saveVec.push(x) /********************************************************************** * * Foreign Debug * **********************************************************************/ static int foreign_debug = 0; /* Debug levels: 0 - (no-debug) 1 - (debug) Bug specific tracing. 2 - (info) Important info, e.g. the actual calls to foreign functions 3 - (trace) Trace every c-function 4 - (mes) Any old rubbish */ /* Level 1 can be used to track different bugs when they appear. For example, used it to watch Volatile GC when tracking `Invalid volatile' bug. */ /*** In each of the following macros, ARGS must be a bracketed arg list suitable for printf. This means usage will look like the following: (Note the double open/close brackets.) info(("example message with a parameter <%d>\n",parameter)); ***/ /* Give macro `__FUNCTION__' a defintion if we are not using GCC */ #if ! defined(__GNUC__) && !defined(__FUNCTION__) #define __FUNCTION__ __FILE__ #endif #define mesN(N,ARGS) \ { \ if (foreign_debug>=(N)) \ { printf("%s:%4i (%s) ", __FILE__, __LINE__, __FUNCTION__); \ printf ARGS; \ } \ } #define show(ARGS) mesN(0,ARGS) #define mes1(ARGS) mesN(1,ARGS) #define mes2(ARGS) mesN(2,ARGS) #define mes3(ARGS) mesN(3,ARGS) #define mes4(ARGS) mesN(4,ARGS) #define debug mes1 #define info mes2 #define trace mes3 #define TRACE mes3(("\n")) #define mes mes4 static Handle get_foreign_debug (TaskData *taskData, Handle ignored) { TRACE; return Make_arbitrary_precision(taskData, foreign_debug); } static Handle set_foreign_debug (TaskData *taskData, Handle h) { TRACE; foreign_debug = get_C_int(taskData, DEREFWORD(h)); return h; } #define RAISE_EXN(string) raise_exception_string(taskData, EXC_foreign,(string)) typedef enum { Cchar = 1, Cdouble = 2, Cfloat = 3, Cint = 4, Clong = 5, Cpointer = 6, Cshort = 7, Cuint = 8 } Ctype; static const char *stringOfCtype(Ctype c) { switch (c) { case Cchar : return "Cchar"; case Cdouble : return "Cdouble"; case Cfloat : return "Cfloat"; case Cint : return "Cint"; case Clong : return "Clong"; case Cpointer : return "Cpointer"; case Cshort : return "Cshort"; case Cuint : return "Cuint"; default : { static char buf[100]; sprintf(buf,"Bad Ctype <%d>", c); return buf; } } } /********************************************************************** * * Volatiles ... * **********************************************************************/ #define INITIAL_NUM_VOLS 200 class PolyVolData; typedef struct { PolyVolData* ML_pointer; // Pointer to ML token object. void* C_pointer; // Pointer to C storage. bool Own_C_space; // True if this is the owner of storage. void (*C_finaliser)(void*); // Pointer to finalisation function. } Volatile; static Volatile *vols; static PLock volLock; // Mutex to protect vols. // TODO: There is a theoretical risk of deadlock if any ML allocation is made while this // lock is held. An allocation can result in a GC which requires all threads to release // ML memory but another thread could block waiting for the mutex. // N.B. raising an exception involves an allocation. // Index zero is special - this is always null. #define VOL_NULL_INDEX 0 #define FIRST_VOL 1 static POLYUNSIGNED num_vols = 1; static POLYUNSIGNED next_vol = FIRST_VOL; /* This table contains all the callback functions that have been created. Once a callback has been set up it remains in existence for the rest of the session. */ static struct _cbStructEntry { PolyWord mlFunction; /* The corresponding ML function. */ PolyWord argType; /* The argument type information. */ unsigned char *cFunction; /* The C function "stub" code. */ } *callbackTable; static unsigned callBackEntries = 0; static PLock callbackTableLock; // Mutex to protect table. /********************************************************************** * * Volatile Allocation * **********************************************************************/ /* With magic numbers */ // This is the ML object that represents a "vol" class PolyVolData: public PolyObject { public: POLYUNSIGNED volmagic; POLYUNSIGNED volindex; }; #define VOL_BOX_SIZE (sizeof(PolyVolData)/sizeof(PolyWord)) #define V_INDEX(v) ((v))->volindex #define V_MAGIC(v) ((v))->volmagic #define VOL_MAGIC_NUMBER 65169 #define MakeVolMagic(v) V_MAGIC((v)) = VOL_MAGIC_NUMBER #define IsVolMagic(v) (V_MAGIC((v)) == VOL_MAGIC_NUMBER) // Access to the vols table. volLock must be held before any of these are // called because another thread could realloc it. #define ML_POINTER(v) (vols[V_INDEX(v)].ML_pointer) #define C_POINTER(v) (vols[V_INDEX(v)].C_pointer) #define OWN_C_SPACE(v) (vols[V_INDEX(v)].Own_C_space) #define FINALISER(v) (vols[V_INDEX(v)].C_finaliser) #define UNVOLHANDLE(_x) ((PolyVolData*)DEREFHANDLE(_x)) /* Allocate a new "vol" in the table and in ML space and returns a pointer to the ML "vol". */ static Handle vol_alloc (TaskData *taskData) { PolyVolData* v = (PolyVolData*)alloc(taskData, VOL_BOX_SIZE, F_MUTABLE_BIT|F_BYTE_OBJ); Handle result = SAVE(v); trace(("index=<%" POLYUFMT ">\n",next_vol)); if (next_vol >= num_vols) { POLYUNSIGNED new_num_vols = (num_vols==0) ? INITIAL_NUM_VOLS : num_vols*2; info(("<%" POLYUFMT "> ---> <%" POLYUFMT ">\n", num_vols, new_num_vols)); Volatile *new_vols = (Volatile*)realloc(vols, sizeof(Volatile)*new_num_vols); if (new_vols == NULL) RAISE_EXN("Can't Enlarge Volatile Array"); vols = new_vols; num_vols = new_num_vols; } V_INDEX(v) = next_vol++; MakeVolMagic(v); ML_POINTER(v) = v; C_POINTER(v) = NULL; OWN_C_SPACE(v) = false; /* Does not own it. */ FINALISER(v) = 0; /* None installed yet. */ return result; } /* Allocate a new "vol" in the table which points to a C object of size "size". */ static Handle vol_alloc_with_c_space (TaskData *taskData, POLYUNSIGNED size) { PLocker plocker(&volLock); Handle res = vol_alloc(taskData); trace(("size= %" POLYUFMT "\n",size)); void *p = malloc(size); if (p == 0) RAISE_EXN("Insufficient memory"); C_POINTER(UNVOLHANDLE(res)) = p; OWN_C_SPACE(UNVOLHANDLE(res)) = true; return res; } /********************************************************************** * * Volatile Dereferencing --- A safe version of C_POINTER * **********************************************************************/ /* Returns the C-pointer component corresponding to the "vol" argument. */ static void* DEREFVOL (TaskData *taskData, PolyWord v) { TRACE; { PLocker plocker(&volLock); PolyVolData *vol = (PolyVolData*)v.AsObjPtr(); POLYUNSIGNED index = V_INDEX(vol); trace(("<%" POLYUFMT ">\n",index)); if (!(IsVolMagic(vol))) { info (("Invalid volatile -- bad magic number, index=<%" POLYUFMT ">\n", index)); RAISE_EXN("Bad volatile magic number"); } // The Null vol is persistent and doesn't have an ML pointer if (index == VOL_NULL_INDEX) return vols[index].C_pointer; if (index < num_vols) { if (vols[index].ML_pointer == v.AsObjPtr()) { /* everything is okay */ return vols[index].C_pointer; } else { info(("Invalid volatile -- backpointer is wrong <%" POLYUFMT ">: <%p> != <%p>\n", index, vol, (void *)vols[index].ML_pointer)); } } else { info(("Invalid volatile -- no such vol index <%" POLYUFMT ">\n", index)); } RAISE_EXN("Invalid volatile"); /*NOTREACHED*/ return 0; }} /********************************************************************** * * Volatile Sanity Checking (debug only) * **********************************************************************/ #if 0 static void sanity_check_vols(void) { TRACE; { POLYUNSIGNED v, v2; for (v=FIRST_VOL; v < next_vol; v++) { if (vols[v].ML_pointer == NULL) { trace(("vol <%lu> has nulled ML_pointer\n",v)); } else { v2 = V_INDEX(vols[v].ML_pointer); if ( v2 != v ) { info(("vol <%d> has been corrupted to <%d>\n",v,v2)); } } } }} #endif /********************************************************************** * * C Programming Primitives * **********************************************************************/ /* This is roughly equivalent to calling malloc via the FFI, except that the vol it returns refers to the newly allocated store. Typically we need a pointer to the store so we need to call address(alloc s). */ static Handle allocate (TaskData *taskData, Handle h) { TRACE; { POLYUNSIGNED size = getPolyUnsigned(taskData, DEREFWORD(h)); /* bytes */ Handle space = vol_alloc_with_c_space(taskData, size); return space; }} /* Constructs a one-word C object whose value is the C-pointer of the argument. */ static Handle address (TaskData *taskData, Handle h) { TRACE; { Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); void *addr = DEREFVOL(taskData, UNVOLHANDLE(h)); PLocker plocker(&volLock); *(void**)C_POINTER(UNVOLHANDLE(res)) = addr; return res; }} /* Returns a vol containing the value at the address given in its argument. */ static Handle deref (TaskData *taskData, Handle h) { TRACE; { void *addr = DEREFVOL(taskData, UNVOLHANDLE(h)); PLocker plocker(&volLock); Handle res = vol_alloc(taskData); C_POINTER(UNVOLHANDLE(res))= *(void**)addr; return res; }} /****** * offset is intended for accessing structure components. * pointer_add can be written in terms offset,address & deref: * pointer_add p n == address (offset (deref p) n) ******/ /* This seems odd to me (DCJM) but it makes sense when you realise that a pointer is a vol whose C-pointer value contains the address of the vol containing the storage. There's always one more level of indirection than you think. DCJM 12/4/04. */ static Handle offset (TaskData *taskData, Handle h) { TRACE; { PolyWord structure = UNHANDLE(h)->Get(0); char *addr = (char*)DEREFVOL(taskData, structure); PLocker plocker(&volLock); Handle res = vol_alloc(taskData); POLYSIGNED num_bytes = get_C_long(taskData, DEREFWORDHANDLE(h)->Get(1)); C_POINTER(UNVOLHANDLE(res)) = addr + num_bytes; return res; }} static Handle assign (TaskData *taskData, Handle h) { TRACE; { PolyVolData *left = (PolyVolData *)(UNHANDLE(h)->Get(0).AsObjPtr()); PolyVolData *right = (PolyVolData *)(UNHANDLE(h)->Get(1).AsObjPtr()); POLYSIGNED size = get_C_long(taskData, DEREFWORDHANDLE(h)->Get(2)); /* bytes */ void *source = DEREFVOL(taskData, right); PLocker plocker(&volLock); void *dest = C_POINTER(left); memcpy(dest, source, size); return SAVE(TAGGED(0)); }} static Handle c_sizeof (TaskData *taskData, Handle h) { TRACE; PolyWord v = UNHANDLE(h); if (!(IS_INT(v))) // This should be handled within ML RAISE_EXN("sizeof for struct"); Ctype ctype = (Ctype)UNTAGGED(v); trace(("<%s>\n", stringOfCtype(ctype))); switch (ctype) { case Cchar : return Make_arbitrary_precision(taskData, sizeof(char)); case Cdouble : return Make_arbitrary_precision(taskData, sizeof(double)); case Cfloat : return Make_arbitrary_precision(taskData, sizeof(float)); case Cint : return Make_arbitrary_precision(taskData, sizeof(int)); case Clong : return Make_arbitrary_precision(taskData, sizeof(long)); case Cpointer : return Make_arbitrary_precision(taskData, sizeof(void*)); case Cshort : return Make_arbitrary_precision(taskData, sizeof(short)); case Cuint : return Make_arbitrary_precision(taskData, sizeof(unsigned)); default: { char buf[100]; sprintf(buf, "Unknown ctype <%s>", stringOfCtype(ctype)); RAISE_EXN(buf); /*NOTREACHED*/ /* Keep -Wall happy */ return (Handle)0; } } } static Handle alignment (TaskData *taskData, Handle h) { TRACE; PolyWord v = UNHANDLE(h); if (!(IS_INT(v))) RAISE_EXN("alignment of structure"); Ctype ctype = (Ctype)UNTAGGED(v); trace(("<%s>\n", stringOfCtype(ctype))); switch (ctype) { #ifdef __GNUC__ case Cchar : return Make_arbitrary_precision(taskData, __alignof__(char)); case Cdouble : return Make_arbitrary_precision(taskData, __alignof__(double)); case Cfloat : return Make_arbitrary_precision(taskData, __alignof__(float)); case Cint : return Make_arbitrary_precision(taskData, __alignof__(int)); case Clong : return Make_arbitrary_precision(taskData, __alignof__(long)); case Cpointer : return Make_arbitrary_precision(taskData, __alignof__(void*)); case Cshort : return Make_arbitrary_precision(taskData, __alignof__(short)); case Cuint : return Make_arbitrary_precision(taskData, __alignof__(unsigned)); #else /* Take a guess... */ /* Use "sizeof" here. DCJM 19/4/01. */ case Cchar : return Make_arbitrary_precision(taskData, sizeof(char)); case Cdouble : return Make_arbitrary_precision(taskData, sizeof(double)); case Cfloat : return Make_arbitrary_precision(taskData, sizeof(float)); case Cint : return Make_arbitrary_precision(taskData, sizeof(int)); case Clong : return Make_arbitrary_precision(taskData, sizeof(long)); case Cpointer : return Make_arbitrary_precision(taskData, sizeof(void*)); case Cshort : return Make_arbitrary_precision(taskData, sizeof(short)); case Cuint : return Make_arbitrary_precision(taskData, sizeof(unsigned)); #endif default: { char buf[100]; sprintf(buf, "Unknown ctype <%s>", stringOfCtype(ctype)); RAISE_EXN(buf); } } /*NOTREACHED*/ /* Keep -Wall happy */ return (Handle)0; } /********************************************************************** * * Volatile Garbage Collection * ********************************************************************** During GC this function is called three times, with "op" taking the values 1 -- MarkRuntimeObject 2 -- ReferenceRuntimeObject 3 -- UpdateRuntimeObject Pass 1 is irrelevant. We call "op" (MarkRuntimeObject) with the second parameter equal to 1. This indicates the ML pointers held by the array "vols" are weak references and so "op" does nothing and returns immediately. During Pass 2, the condition "(vols[from].ML_pointer != NULL)" is always true, so we call "op" (ReferenceRuntimeObject) with the address of each ML pointer cell contained in the array "vols". Any cell that holds a heap pointer that is not marked is overwritten by "op" to be NULL. After the call to "op" we test if the cell has been nulled, if so we deallocate the malloced space pointed to by the corresponding C pointer. Also, because the condition "(vols[from].ML_pointer != NULL)" is true on every iteration of the loop, the counter "to" always keeps in step with the loop counter "from". This prevents us from entering the code guarded by the condition "(from>to)" (intended for pass 3). During the Pass 3, we only call "op" (UpdateRuntimeObject) with the address of those ML pointers that were not nulled on the previous stage. The ML pointers are overwritten by "op" with their new location in the heap. Also, on this pass we compact the array "vols". The "to" counter is only incremented when we encounter an ML pointer that is not NULL, whereas the "from" counter is incremented on every iteration. If "from" > "to" we shift the pair of pointers (ML and C) leftwards in the array from index "from" to index "to" . This requires us to update the index held by the ML heap cell to be "to". Finally we set "next_vol" to be "to", the index of the next volatile to be allocated. Although this occurs on every pass, it only has effect on Pass 3. **********************************************************************/ struct _entrypts foreignEPT[] = { { "PolyForeignGeneral", (polyRTSFunction)&PolyForeignGeneral}, { NULL, NULL} // End of list. }; class Foreign: public RtsModule { public: virtual void Init(void); virtual void Start(void); virtual void Stop(void); void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static Foreign foreignModule; void Foreign::Init() { vols = (Volatile*)malloc(sizeof(Volatile)*INITIAL_NUM_VOLS); ASSERT(vols != 0); // If this fails we won't be able to allocate the NULL. num_vols = INITIAL_NUM_VOLS; } void Foreign::Start() { // Set up the NULL entry static void *nullValue = 0; vols[VOL_NULL_INDEX].ML_pointer = 0; vols[VOL_NULL_INDEX].C_pointer = &nullValue; vols[VOL_NULL_INDEX].Own_C_space = false; // Not freed vols[VOL_NULL_INDEX].C_finaliser = 0; // No finaliser } void Foreign::Stop() { // Call finalisers that have not otherwise been called. for (POLYUNSIGNED k = FIRST_VOL; k < next_vol; k++) { if (vols[k].ML_pointer != NULL && vols[k].C_pointer != 0 && vols[k].C_finaliser) vols[k].C_finaliser(*(void**)vols[k].C_pointer); } } void Foreign::GarbageCollect(ScanAddress *process) { TRACE; // First pass: GC and relocate the ML pointers and detect unreferenced // entries. Call any finalisers on them. We have to do that before freeing // any "own" spaces because we may have set a finaliser on the contents of // something that is owned by an earlier vol (i.e. 2 vols have the same // C_pointer value). The higher levels will ensure that we won't GC the // original value until the copy is also GCd. for (POLYUNSIGNED k = FIRST_VOL; k < next_vol; k++) { if (vols[k].ML_pointer != NULL) { PolyObject *p = vols[k].ML_pointer; process->ScanRuntimeAddress(&p, ScanAddress::STRENGTH_WEAK); vols[k].ML_pointer = (PolyVolData*)p; if (vols[k].ML_pointer == NULL && vols[k].C_finaliser) { trace(("Calling finaliser on <%" POLYUFMT ">\n", k)); vols[k].C_finaliser(*(void**)vols[k].C_pointer); } } } // Then compact the table and free any "own" references. POLYUNSIGNED to,from; for (from=FIRST_VOL, to=FIRST_VOL; from < next_vol; from++) { mes(("to=<%" POLYUFMT "> from=<%" POLYUFMT ">\n",to,from)); if (vols[from].ML_pointer == NULL) { if (vols[from].Own_C_space) { // Can now free this. trace(("Freeing malloc space of <%" POLYUFMT ">\n",from)); free(vols[from].C_pointer); vols[from].C_pointer = 0; vols[from].Own_C_space = false; } } else { if (from>to) { trace(("Shifting volatile <%" POLYUFMT "> ---> <%" POLYUFMT ">\n",from,to)); vols[to] = vols[from]; V_INDEX(vols[to].ML_pointer) = to; } to++; } } next_vol = to; /* Callback table. Added DCJM 12/4/04. We always process these as strong references. For the time being at any rate we treat these as permanent entries so that once a callback is set up it cannot be garbage-collected. */ for (unsigned i = 0; i < callBackEntries; i++) { process->ScanRuntimeWord(&callbackTable[i].mlFunction); process->ScanRuntimeWord(&callbackTable[i].argType); } } /********************************************************************** * * Load a Dynamic Library. * **********************************************************************/ static Handle load_lib (TaskData *taskData, Handle string) { TCHAR name[500]; Poly_string_to_C(DEREFWORD(string), name, sizeof(name)/sizeof(TCHAR)); #if (defined(_WIN32) && defined(UNICODE)) info(("<%S>\n", name)); #else info(("<%s>\n", name)); #endif // If the name is the null string use the current executable. #if (defined(_WIN32) && ! defined(__CYGWIN__)) HINSTANCE lib; if (*name == 0) lib = hApplicationInstance; else lib = LoadLibrary(name); if (lib == NULL) { char buf[256]; #if (defined(_WIN32) && defined(UNICODE)) sprintf(buf, "load_lib <%S> : %lu", name, GetLastError()); #else sprintf(buf, "load_lib <%s> : %lu", name, GetLastError()); #endif RAISE_EXN(buf); } Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); *(void**)DEREFVOL(taskData, UNHANDLE(res)) = lib; return res; #else /* UNIX version */ void *lib = dlopen(*name == 0 ? NULL : name,DLOPENFLAGS); if (!lib) { char buf[256]; sprintf(buf, "load_lib <%s> : %s", name, dlerror()); RAISE_EXN(buf); } Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); *(void**)DEREFVOL(taskData, UNHANDLE(res)) = lib; return res; #endif } /********************************************************************** * * Load Symbol from a Dynamic Library * **********************************************************************/ static Handle load_sym (TaskData *taskData, Handle h) { char name[500]; Poly_string_to_C(DEREFHANDLE(h)->Get(1), name, sizeof(name)); info(("<%s>\n", name)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) void *sym = (void*)GetProcAddress( *(HINSTANCE*)DEREFVOL(taskData, DEREFHANDLE(h)->Get(0)), name); if (sym == NULL) { char buf[256]; sprintf(buf, "load_sym <%s> : %lu", name, GetLastError()); RAISE_EXN(buf); } Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); *(void**)DEREFVOL(taskData, UNHANDLE(res)) = sym; return res; #else /* UNIX version */ void *sym = dlsym( *(void**)DEREFVOL(taskData, DEREFHANDLE(h)->Get(0)), name ); if (!sym) { char buf[256]; sprintf(buf, "load_sym <%s> : %s", name, dlerror()); RAISE_EXN(buf); } Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); *(void**)DEREFVOL(taskData, UNHANDLE(res)) = sym; return res; #endif } static unsigned length_list (PolyWord p) { TRACE; { return ML_Cons_Cell::IsNull(p) ? 0 : 1 + length_list (Tail(p)); } } static ffi_type *ctypeToFfiType(TaskData *taskData, PolyWord conv) { if (IS_INT(conv)) { Ctype ctype = (Ctype)UNTAGGED(conv); info(("<%s>\n", stringOfCtype(ctype))); switch (ctype) { case Cchar: return &ffi_type_schar; case Cdouble: return &ffi_type_double; case Cfloat: return &ffi_type_float; case Cint: return &ffi_type_sint; case Clong: return &ffi_type_slong; case Cpointer: return &ffi_type_pointer; case Cshort: return &ffi_type_sshort; case Cuint: return &ffi_type_uint; } RAISE_EXN("Unknown ctype"); } else { // Structure: this is a vector of ctypes. This must be allocated dynamically. PolyObject *vec = conv.AsObjPtr(); POLYUNSIGNED length = vec->Length(); ffi_type **str = (ffi_type **)malloc((length+1)*sizeof(ffi_type *)); if (str == NULL) RAISE_EXN("Insufficient memory"); for (POLYUNSIGNED i = 0; i < length; i++) str[i] = ctypeToFfiType(taskData, vec->Get(i)); str[length] = 0; ffi_type *result = (ffi_type *)malloc(sizeof(ffi_type)); if (result == NULL) RAISE_EXN("Insufficient memory"); result->size = 0; result->alignment = 0; result->type = FFI_TYPE_STRUCT; result->elements = str; return result; } return 0; // Suppress warning } // Free the structure elements of the type vectors. static void freeTypeVec(ffi_type **vec, unsigned elements) { for (unsigned i = 0; i < elements; i++) { ffi_type *t = vec[i]; if (t->elements != 0) { unsigned elems = 0; while (t->elements[elems] != 0) elems++; freeTypeVec(t->elements, elems); free(t->elements); } } } typedef void (*ftype)(void); static Handle call_sym (TaskData *taskData, Handle symH, Handle argsH, Handle retCtypeH) { TRACE; ftype sym = *(ftype*)DEREFVOL(taskData, symH->Word()); PolyWord arg_list = argsH->Word(); unsigned num_args = length_list(arg_list); ffi_cif cif; // Initialise the error vars to "no error". If we have multiple worker // threads the previous value will depend on whatever that worker // did last and not necessarily on what this ML thread did. #ifdef HAVE_ERRNO_H errno = 0; #endif #ifdef _WIN32 SetLastError(0); #endif ffi_type **arg_types = (ffi_type**)alloca(num_args * sizeof(ffi_type*)); void **arg_values = (void**)alloca(num_args * sizeof(void*)); // The argument list is a list of pairs. PolyWord p = arg_list; for (POLYUNSIGNED i=0; iGet(1)); arg_types[i] = ctypeToFfiType(taskData, Head(p).AsObjPtr()->Get(0)); } ffi_type *result_type = ctypeToFfiType(taskData, retCtypeH->Word()); #if(defined(_WIN32) && ! defined(__GNUC__) && ! defined(_WIN64)) const ffi_abi abi = FFI_STDCALL; #else const ffi_abi abi = FFI_DEFAULT_ABI; #endif if (ffi_prep_cif(&cif, abi, num_args, result_type, arg_types) != FFI_OK) RAISE_EXN("libffi error: ffi_prep_cif failed"); // malloc memory for the result void *result = malloc(result_type->size); if (result == 0) RAISE_EXN("Insufficient memory to allocate space for result"); processes->ThreadReleaseMLMemory(taskData); ffi_call(&cif, sym, result, arg_values); processes->ThreadUseMLMemory(taskData); // Allocate a vol for the result. Don't do this before the // call in case we have a call-back and recursion. Handle res; { PLocker lock(&volLock); res = vol_alloc(taskData); C_POINTER(UNVOLHANDLE(res)) = result; OWN_C_SPACE(UNVOLHANDLE(res)) = true; } freeTypeVec(arg_types, num_args); // Free any structure entries freeTypeVec(&result_type, 1); // Record the last error result. If this is Windows and // GetLastError returned a failure set that otherwise use // the value of errno. #ifdef _WIN32 int err = GetLastError(); if (err != 0) taskData->lastError = -err; else #endif #ifdef HAVE_ERRNO_H taskData->lastError = errno; #endif return res; } /********************************************************************** * * Char Conversion * **********************************************************************/ static Handle toCchar (TaskData *taskData, Handle h) { char ch = (char)get_C_int(taskData, UNHANDLE(h)); mes(("<%c>\n", ch)); Handle res = vol_alloc_with_c_space(taskData, sizeof(char)); *(char*)DEREFVOL(taskData, UNHANDLE(res)) = ch; return res; } static Handle fromCchar (TaskData *taskData, Handle h) { char c = *(char*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%c>\n", c)); return Make_arbitrary_precision(taskData, c & 0xff); } /********************************************************************** * * Double Conversion * **********************************************************************/ static Handle toCdouble (TaskData *taskData, Handle h) { double d = real_arg(h); mes(("<%f>\n", d)); Handle res = vol_alloc_with_c_space(taskData, sizeof(double)); *(double*)DEREFVOL(taskData, UNHANDLE(res)) = d; return res; } static Handle fromCdouble (TaskData *taskData, Handle h) { double d = *(double*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%f>\n", d)); return real_result(taskData, d); } /********************************************************************** * * Float Conversion * **********************************************************************/ static Handle toCfloat (TaskData *taskData, Handle h) { float f = (float)real_arg(h); mes(("<%f>\n", f)); Handle res = vol_alloc_with_c_space(taskData, sizeof(float)); *(float*)DEREFVOL(taskData, UNHANDLE(res)) = f; return res; } static Handle fromCfloat (TaskData *taskData, Handle h) { float f = *(float*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%f>\n", f)); return real_result(taskData, (double)f); } /********************************************************************** * * Int Conversion * **********************************************************************/ static Handle toCint (TaskData *taskData, Handle h) { int i = get_C_int(taskData, UNHANDLE(h)); mes(("value = %d\n", i)); Handle res = vol_alloc_with_c_space(taskData, sizeof(int)); *(int*)DEREFVOL(taskData, UNHANDLE(res)) = i; return res; } static Handle fromCint (TaskData *taskData, Handle h) { int i = *(int*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%d>\n", i)); return Make_arbitrary_precision(taskData, i); } /********************************************************************** * * Long Conversion * **********************************************************************/ static Handle toClong (TaskData *taskData, Handle h) { long i = (long)get_C_long(taskData, UNHANDLE(h)); mes(("value = %d\n", (int)i)); Handle res = vol_alloc_with_c_space(taskData, sizeof(long)); *(long*)DEREFVOL(taskData, UNHANDLE(res)) = i; return res; } static Handle fromClong (TaskData *taskData, Handle h) { long i = *(long*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%d>\n", (int)i)); return Make_arbitrary_precision(taskData, i); } /********************************************************************** * * Short Conversion * **********************************************************************/ static Handle toCshort (TaskData *taskData, Handle h) { short i = (short)get_C_long(taskData, UNHANDLE(h)); mes(("<%d>\n", (int)i)); Handle res = vol_alloc_with_c_space(taskData, sizeof(short)); *(short*)DEREFVOL(taskData, UNHANDLE(res)) = i; return res; } static Handle fromCshort (TaskData *taskData, Handle h) { short i = *(short*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%d>\n", (int)i)); return Make_arbitrary_precision(taskData, i); } /********************************************************************** * * Unsigned int Conversion * **********************************************************************/ static Handle toCuint (TaskData *taskData, Handle h) { unsigned i = get_C_unsigned(taskData, UNHANDLE(h)); mes(("value = %d\n", (int)i)); Handle res = vol_alloc_with_c_space(taskData, sizeof(unsigned)); *(unsigned*)DEREFVOL(taskData, UNHANDLE(res)) = i; return res; } static Handle fromCuint (TaskData *taskData, Handle h) { unsigned i = *(unsigned*)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%d>\n", (int)i)); return Make_arbitrary_precision(taskData, i); } /********************************************************************** * * String Conversion * **********************************************************************/ static Handle fillCstring (TaskData *taskData, Handle h) { TRACE; { POLYUNSIGNED size; PolyWord str = DEREFHANDLE(h)->Get(1); PolyVolData* cArg = (PolyVolData*)(DEREFHANDLE(h)->Get(0).AsObjPtr()); if (str.IsTagged()) size = 1; else size = ((PolyStringObject*)str.AsObjPtr())->length; size += 1; // For the terminating zero Poly_string_to_C(str, (char*)DEREFVOL(taskData, cArg), size); PLocker plocker(&volLock); mes(("<%s>\n", (char*)C_POINTER(cArg))); return SAVE(TAGGED(0)); }} static Handle toCstring (TaskData *taskData, Handle h) { TRACE; { POLYUNSIGNED size; { PolyWord str = DEREFWORD(h); if (str.IsTagged()) size = 1; else size = ((PolyStringObject*)str.AsObjPtr())->length; } size += 1; // For the terminating zero /* Allocate c-space for both the string & a pointer to the string, which is owned by the same vol. */ Handle res = vol_alloc_with_c_space(taskData, sizeof(char*)+size); PLocker plocker(&volLock); /* Make the first word of the c-space point to the second word */ *(void**)C_POINTER(UNVOLHANDLE(res)) = 1 + (void**)C_POINTER(UNVOLHANDLE(res)); /* Copy the string into the c-space starting at the second word */ Poly_string_to_C(DEREFWORD(h), (char*)(1 + (void**)C_POINTER(UNVOLHANDLE(res))), size); return res; }} static Handle fromCstring (TaskData *taskData, Handle h) { TRACE; { char* str = *(char**)DEREFVOL(taskData, UNHANDLE(h)); mes(("<%s>\n", str)); return SAVE(C_string_to_Poly(taskData, str)); }} /* Byte vector functions. The representation is the same as a string but the values may include zero bytes. For fromCbytes the length therefore has to be passed as an argument. Added DCJM 29/6/01. */ static Handle toCbytes (TaskData *taskData, Handle h) { TRACE; { POLYUNSIGNED size; { PolyWord str = DEREFWORD(h); if (str.IsTagged()) size = 1; else size = ((PolyStringObject*)str.AsObjPtr())->length; } // No terminating null here unlike strings /* Allocate c-space for both the string & a pointer to the string, which is owned by the same vol. */ Handle res = vol_alloc_with_c_space(taskData, sizeof(char*)+size); PLocker plocker(&volLock); char **p = (char**)C_POINTER(UNVOLHANDLE(res)); /* Make the first word of the c-space point to the second word */ *(char***)p = p + 1; /* Copy the string into the c-space starting at the second word */ if (size == 1) **p = (char)UNTAGGED(DEREFHANDLE(h)); else memcpy(*p, ((PolyStringObject*)h->WordP())->chars, size); return res; }} static Handle fromCbytes (TaskData *taskData, Handle h) { TRACE; { char* str = *(char**)DEREFVOL(taskData, DEREFHANDLE(h)->Get(0)); size_t size = get_C_long(taskData, DEREFHANDLE(h)->Get(1)); if (str == NULL) return SAVE(EmptyString(taskData)); else return SAVE(C_string_to_Poly(taskData, str, size)); }} /********************************************************************** * * call_sym_and_convert * **********************************************************************/ typedef enum { directedArg_In = 1, directedArg_Out = 2 } DirectedArgs; /* datatype 'a union = Char of string | Double of real | Float of real | Int of int | Long of int | Short of int | String of string | Vol of 'a */ typedef enum { union_Char = 1, union_Double, union_Float, union_Int, union_Long, union_Short, union_String, union_Vol, union_Uint /* 9 */ } UnionTypes; static Handle UNION_MAKE(TaskData *taskData, UnionTypes tag, Handle contents) { Handle res = SAVE(alloc(taskData, 2)); UNHANDLE(res)->Set(1, TAGGED(tag)); DEREFHANDLE(res)->Set(0, UNHANDLE(contents)); return res; } /* datatype 'ctype unionChoice = chooseChar | chooseDouble | chooseFloat | chooseInt | chooseLong | chooseShort | chooseString; | chooseVol of 'ctype */ typedef enum { choice_chooseChar = 1, choice_chooseDouble, choice_chooseFloat, choice_chooseInt, choice_chooseLong, choice_chooseShort, choice_chooseString, choice_chooseVol, /* not used, since boxed value is untagged */ choice_chooseUint /* 9 */ } ChoiceTypes; #define TAG(x) (UNHANDLE(x)->Get(1)) #define CONTENTS(x) (SAVE(UNHANDLE(x)->Get(0))) #define LIST_ISNULL(x) (ML_Cons_Cell::IsNull(UNHANDLE(x))) #define LIST_HEAD(x) (SAVE(Head(DEREFWORD(x)))) #define LIST_TAIL(x) (SAVE(Tail(DEREFWORD(x)))) #define LIST_NULL (SAVE(ListNull)) static Handle LIST_CONS (TaskData *taskData, Handle x,Handle xs) { Handle res = SAVE(alloc(taskData, sizeof(ML_Cons_Cell))); Head(DEREFWORD(res)) = UNHANDLE(x); Tail(DEREFWORD(res)) = DEREFWORD(xs); return res; } #define TUPLE_GET1(x) (SAVE(DEREFHANDLE(x)->Get(0))) #define TUPLE_GET2(x) (SAVE(DEREFHANDLE(x)->Get(1))) #define TUPLE_GET3(x) (SAVE(DEREFHANDLE(x)->Get(2))) static Handle TUPLE_MAKE2 (TaskData *taskData, Handle x,Handle y) { Handle res = SAVE(alloc(taskData, 2)); DEREFHANDLE(res)->Set(0, DEREFWORD(x)); DEREFHANDLE(res)->Set(1, DEREFWORD(y)); return res; } /* For testing... static Handle print_ctype_and_vol (Handle pair) { word* ctype = UNHANDLE(TUPLE_GET1(pair)); Handle vol = TUPLE_GET2(pair); void* thing = DEREFVOL(taskData, UNHANDLE(vol)); switch ((Ctype)UNTAGGED(ctype)) { case Cchar : printf("Cchar <%c>\n", *(char*)thing); break; case Cdouble : printf("Cdouble <%f>\n", *(double*)thing); break; case Cfloat : printf("Cfloat <%f>\n", *(float*)thing); break; case Cint : printf("Cint <%d>\n", *(int*)thing); break; case Clong : printf("Clong <%ld>\n", *(long*)thing); break; case Cpointer : printf("Cpointer <%.3s>...\n", *(char**)thing); break; case Cshort : printf("Cshort <%d>\n", *(short*)thing); break; default : { show(("Must be a Cstruct <%d>\n", get_C_long(taskData, ctype))); }} return pair; } ...*/ static Handle union2vol_and_ctype (TaskData *taskData, Handle u) { Handle contents = CONTENTS(u); switch (UNTAGGED(TAG(u))) { case union_Char: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cchar)), toCchar(taskData, contents)); case union_Double: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cdouble)), toCdouble(taskData, contents)); case union_Float: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cfloat)), toCfloat(taskData, contents)); case union_Int: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cint)), toCint(taskData, contents)); case union_Long: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Clong)), toClong(taskData, contents)); case union_Short: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cshort)), toCshort(taskData, contents)); case union_String: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cpointer)), toCstring(taskData, contents)); case union_Uint: return TUPLE_MAKE2(taskData, SAVE(TAGGED(Cuint)), toCuint(taskData, contents)); case union_Vol: return contents; default: RAISE_EXN ("Unknown union tag"); } /*NOTREACHED*/ return 0; } static Handle choice2ctype (TaskData *taskData, Handle choice) { PolyWord either_tag_or_pointer = DEREFWORDHANDLE(choice); if (IS_INT(either_tag_or_pointer)) { switch (UNTAGGED(either_tag_or_pointer)) { case choice_chooseChar: return SAVE(TAGGED(Cchar)); case choice_chooseDouble: return SAVE(TAGGED(Cdouble)); case choice_chooseFloat: return SAVE(TAGGED(Cfloat)); case choice_chooseInt: return SAVE(TAGGED(Cint)); case choice_chooseLong: return SAVE(TAGGED(Clong)); case choice_chooseShort: return SAVE(TAGGED(Cshort)); case choice_chooseString: return SAVE(TAGGED(Cpointer)); case choice_chooseUint: return SAVE(TAGGED(Cuint)); default: RAISE_EXN ("Unknown choice type"); return 0; } } else /* It's a pointer */ return SAVE(either_tag_or_pointer.AsObjPtr()->Get(0)); } static Handle choice_and_vol2union (TaskData *taskData, Handle pair) { Handle choice = TUPLE_GET1(pair); Handle vol = TUPLE_GET2(pair); PolyWord maybe_tag = DEREFWORDHANDLE(choice); if (IS_INT(maybe_tag)) { switch (UNTAGGED(maybe_tag)) { case choice_chooseChar: return UNION_MAKE(taskData, union_Char, fromCchar(taskData, vol)); case choice_chooseDouble: return UNION_MAKE(taskData, union_Double, fromCdouble(taskData, vol)); case choice_chooseFloat: return UNION_MAKE(taskData, union_Float, fromCfloat(taskData, vol)); case choice_chooseInt: return UNION_MAKE(taskData, union_Int, fromCint(taskData, vol)); case choice_chooseLong: return UNION_MAKE(taskData, union_Long, fromClong(taskData, vol)); case choice_chooseShort: return UNION_MAKE(taskData, union_Short, fromCshort(taskData, vol)); case choice_chooseString: return UNION_MAKE(taskData, union_String, fromCstring(taskData, vol)); case choice_chooseUint: return UNION_MAKE(taskData, union_Uint, fromCuint(taskData, vol)); default: RAISE_EXN ("Unknown choice type"); return 0; } } else /* It's a pointer */ return UNION_MAKE(taskData, union_Vol, vol); } /* DCJM 7/4/04. Based on reading the code, it seems as though the arguments to a function can be either "in" or "out" parameters. "in" parameters are passed as expected from ML to C whereas "out" parameters have to be constructed from the type information supplied and their values returned along with the result. */ static void mkArgs (TaskData *taskData, Handle xs, Handle &args, Handle &rets) { TRACE; if (LIST_ISNULL(xs)) { args = LIST_NULL; rets = LIST_NULL; } else { Handle x = LIST_HEAD(xs); mkArgs(taskData, LIST_TAIL(xs), args, rets); switch (UNTAGGED(TAG(x))) { case directedArg_In: { // IN parameter - We have the type information and the value to pass. // Convert the value into a "vol". Handle vol_and_ctype = union2vol_and_ctype(taskData, CONTENTS(x)); args = LIST_CONS(taskData, vol_and_ctype,args); return; } case directedArg_Out: { // OUT parameter - We have just the type information and have to construct // a "vol" to pass as the actual argument. Handle choice = CONTENTS(x); Handle ctype = choice2ctype(taskData, choice); Handle space = allocate(taskData, c_sizeof(taskData, ctype)); Handle arg = TUPLE_MAKE2(taskData, SAVE(TAGGED(Cpointer)), address(taskData, space)); Handle ret = TUPLE_MAKE2(taskData, choice,space); args = LIST_CONS(taskData, arg,args); rets = LIST_CONS(taskData, ret,rets); return; } default: RAISE_EXN ("Unknown directedArg tag\n"); } } /*NOTREACHED*/ } typedef Handle (*Handle2Handle)(TaskData *taskData, Handle); static Handle map (TaskData *taskData,Handle2Handle f, Handle xs) { return LIST_ISNULL(xs) ? LIST_NULL : LIST_CONS(taskData, f(taskData, LIST_HEAD(xs)), map(taskData, f,LIST_TAIL(xs)) ); } /* DCJM 7/4/04. For reading the code it seems as though call_sym_and_convert takes three arguments: sym, unionArgs and retChoice and returns a pair (x, y) as the result. sym is simply the symbol to call. unionArgs is a list of arguments to the function. An argument can either be an "in" parameter consisting of type info and a value or an "out" parameter in which case only the type info is supplied. retChoice is the type of the result. The result of this function is a pair consisting of the value and a list of the "out" parameters. The reason for using call_sym_and_convert rather than call_sym is that call_sym_and_convert takes the function arguments as a list of a union of the ML values and converts them to the "vols" with the C values as part of the call. This avoids the multiple calls between ML and the RTS that would be needed if each argument was converted separately, something that is needed for call_sym. */ static Handle call_sym_and_convert (TaskData *taskData, Handle triple) { TRACE; Handle sym = TUPLE_GET1(triple); Handle unionArgs = TUPLE_GET2(triple); Handle retChoice = TUPLE_GET3(triple); Handle args, rets; mkArgs(taskData, unionArgs, args, rets); Handle retCtype = choice2ctype(taskData, retChoice); // If call_sym results in a callback the save vector will be reset and // all these handles will be overwritten. We have to save them on a // separate stack per thread. Handle newStack = alloc_and_save(taskData, 3, 0); newStack->WordP()->Set(0, retChoice->Word()); newStack->WordP()->Set(1, rets->Word()); newStack->WordP()->Set(2, taskData->foreignStack); taskData->foreignStack = newStack->Word(); /*map(print_ctype_and_vol,args);*/ Handle vol = call_sym(taskData, sym,args,retCtype); // Pop the old values and put them back on the save vector retChoice = SAVE(taskData->foreignStack.AsObjPtr()->Get(0)); rets = SAVE(taskData->foreignStack.AsObjPtr()->Get(1)); taskData->foreignStack = taskData->foreignStack.AsObjPtr()->Get(2); return TUPLE_MAKE2 (taskData, choice_and_vol2union(taskData, TUPLE_MAKE2(taskData, retChoice, vol)), map(taskData, choice_and_vol2union, rets)); } // This is the C function that will get control when any callback is made. The "data" // argument is the entry in the callback table for this callback. static void callbackEntryPt(ffi_cif *cif, void *ret, void* args[], void *data) { uintptr_t cbIndex = (uintptr_t)data; ASSERT(cbIndex < callBackEntries); struct _cbStructEntry *cbEntry = &callbackTable[cbIndex]; // We should get the task data for the thread that is running this code. // If this thread has been created by the foreign code we will have to // create a new one here. TaskData *taskData = processes->GetTaskDataForThread(); if (taskData == 0) { try { taskData = processes->CreateNewTaskData(0, 0, 0, TAGGED(0)); } catch (std::bad_alloc &) { ::Exit("Unable to create thread data - insufficient memory"); } catch (MemoryException &) { ::Exit("Unable to create thread data - insufficient memory"); } } else processes->ThreadUseMLMemory(taskData); Handle mark = taskData->saveVec.mark(); Handle h = SAVE(cbEntry->mlFunction); // Construct an ML argument list from the arguments. Handle saved = taskData->saveVec.mark(); Handle mlArgs = SAVE(ListNull); for (unsigned i = cif->nargs; i > 0; i--) { ffi_type *argType = cif->arg_types[i-1]; Handle value = vol_alloc_with_c_space(taskData, argType->size); memcpy(DEREFVOL(taskData, UNHANDLE(value)), args[i-1], argType->size); Handle next = alloc_and_save(taskData, sizeof(ML_Cons_Cell)/sizeof(PolyWord)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(mlArgs); taskData->saveVec.reset(saved); mlArgs = SAVE(DEREFHANDLE(next)); } // Callbacks previously involved forking a new ML process. They are // now handled on the caller's stack. Handle resultHandle = taskData->EnterCallbackFunction(h, mlArgs); PolyWord resultWord = UNHANDLE(resultHandle); taskData->saveVec.reset(mark); memcpy(ret, DEREFVOL(taskData, resultWord), cif->rtype->size); // Once we have copied the result into C memory we are free of the // ML memory and can allow any GC. processes->ThreadReleaseMLMemory(taskData); } // Creates a call-back entry. Callbacks are never GCd because we don't know when // the C code will be finished with them. static Handle createCallbackFunction(TaskData *taskData, Handle triple, ffi_abi abi) { TRACE; Handle argTypeList = TUPLE_GET1(triple); Handle cResultType = TUPLE_GET2(triple); Handle mlFunction = TUPLE_GET3(triple); PLocker pLocker(&callbackTableLock); // Make a new entry in the callback table. struct _cbStructEntry *newTable = (struct _cbStructEntry*)realloc(callbackTable, (callBackEntries+1)*sizeof(struct _cbStructEntry)); if (newTable == 0) RAISE_EXN("Unable to allocate memory for callback table"); callbackTable = newTable; callbackTable[callBackEntries].argType = UNHANDLE(argTypeList); callbackTable[callBackEntries].mlFunction = UNHANDLE(mlFunction); callbackTable[callBackEntries].cFunction = 0; void *resultFunction; ffi_closure *closure = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &resultFunction); if (closure == 0) RAISE_EXN("Callbacks not implemented or insufficient memory"); unsigned num_args = length_list(argTypeList->Word()); ffi_type **arg_types = (ffi_type**)malloc(num_args * sizeof(ffi_type*)); if (arg_types == 0) RAISE_EXN("Insufficient memory to allocate space for arguments"); PolyWord p = argTypeList->Word(); for (POLYUNSIGNED i=0; iWord()); // The cif needs to be on the heap so that it is available in the callback. ffi_cif *cif = (ffi_cif *)malloc(sizeof(ffi_cif)); if (cif == 0) RAISE_EXN("Insufficient memory to allocate space for cif"); if (ffi_prep_cif(cif, abi, num_args, result_type, arg_types) != FFI_OK) RAISE_EXN("libffi error: ffi_prep_cif failed"); // Pass the index into the callback table here rather than the address of the entry // because the table may move if we realloc. if (ffi_prep_closure_loc(closure, cif, callbackEntryPt, (void*)((uintptr_t)callBackEntries), resultFunction) != FFI_OK) RAISE_EXN("libffi error: ffi_prep_closure_loc failed"); callbackTable[callBackEntries].cFunction = (unsigned char*)resultFunction; /* Construct a "vol" containing the pointer to the C function. */ Handle res = vol_alloc_with_c_space(taskData, sizeof(void*)); PLocker plocker(&volLock); *(unsigned char **)C_POINTER(UNVOLHANDLE(res)) = callbackTable[callBackEntries].cFunction; callBackEntries++; return res; } /* Create a callback using C calling conventions. The calling function removes the arguments from the stack. */ static Handle toCfunction (TaskData *taskData, Handle triple) { return createCallbackFunction(taskData, triple, FFI_DEFAULT_ABI); } /* Create a callback using Pascal/WINAPI/CALLBACK/__stdcall calling conventions. The CALLED function must remove the arguments from the stack before returning. */ static Handle toPascalfunction (TaskData *taskData, Handle triple) { #if(defined(_WIN32) && ! defined(_WIN64)) // We can't actually test for FFI_STDCALL here because it's a value in an enum not a define. return createCallbackFunction(taskData, triple, FFI_STDCALL); #else RAISE_EXN("Pascal (stdcall) calling conventions are not supported on this platform"); return (Handle)0; #endif } typedef void (*finalType)(void*); // Set a finalisation function: A C function that is called when the Vol is freed by // the GC. static Handle set_final (TaskData *taskData, Handle pair) { Handle symH = TUPLE_GET1(pair); Handle volH = TUPLE_GET2(pair); PolyVolData *vol = (PolyVolData*)(UNHANDLE(volH)); finalType f = *(finalType*)DEREFVOL(taskData, symH->Word()); FINALISER(vol) = f; return SAVE(TAGGED(0)); } // Return the NULL vol. This is a persistent vol which always contains null. // There is no associated back pointer. static Handle getNull(TaskData *taskData, Handle) { PolyVolData* v = (PolyVolData*)alloc(taskData, VOL_BOX_SIZE, F_MUTABLE_BIT|F_BYTE_OBJ); Handle result = SAVE(v); V_INDEX(v) = VOL_NULL_INDEX; MakeVolMagic(v); return result; } /********************************************************************** * * Foreign Dispatch * **********************************************************************/ typedef Handle(* type_hh_fun)(TaskData *taskData, Handle); static type_hh_fun handlers[] = { get_foreign_debug, set_foreign_debug, load_lib, load_sym, call_sym_and_convert, allocate, address, deref, offset, assign, c_sizeof, alignment, toCchar, fromCchar, toCdouble, fromCdouble, toCfloat, fromCfloat, toCint, fromCint, toClong, fromClong, toCshort, fromCshort, fillCstring, toCstring, fromCstring, toCuint, /* Added DCJM 17/5/01. */ fromCuint, /* Added DCJM 17/5/01. */ toCbytes, /* Added DCJM 29/6/01. */ fromCbytes, toCfunction, /* Added DCJM 7/4/04. */ toPascalfunction, /* Added DCJM 7/4/04. */ set_final, /* Added DCJM 2/8/09. */ getNull // Added DCJM 16/11/11. }; #define NUM_HANDLERS ((int)(sizeof(handlers)/sizeof(type_hh_fun))) static Handle foreign_dispatch_c (TaskData *taskData, Handle args, Handle fcode_h) { int fcode = get_C_int(taskData, DEREFWORD(fcode_h)); if (fcode < 0 || fcode >= NUM_HANDLERS) { char buf[100]; sprintf(buf, "Unknown foreign dispatch code <%d>", fcode); RAISE_EXN(buf); } mes(("dispatch code = %d\n", fcode)); /* dispatch to desired function */ return (handlers[fcode])(taskData, args); } POLYEXTERNALSYMBOL POLYUNSIGNED PolyForeignGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); Handle pushedCode = taskData->saveVec.push(code); Handle result = 0; try { result = foreign_dispatch_c(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } #else // The foreign function interface isn't available. #include "foreign.h" #include "run_time.h" #include "sys.h" Handle foreign_dispatch_c (TaskData *taskData, Handle args, Handle fcode_h) { raise_exception_string(taskData, EXC_foreign, "The foreign function interface is not available on this platform"); } POLYEXTERNALSYMBOL POLYUNSIGNED PolyForeignGeneral(PolyObject *threadId, PolyWord /*code*/, PolyWord /*arg*/) { TaskData *taskData = TaskData::FindTaskForId(threadId); taskData->PreRTSCall(); try { raise_exception_string(taskData, EXC_foreign, "The foreign function interface is not available on this platform"); } catch (...) { } // Handle the C++ exception taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Return unit since we're raising an exception } #endif polyml-5.7.1/libpolyml/statistics.h0000644000175000017500000001001313204034553016340 0ustar daviddavid/* Title: statics.h - Interface to profiling statistics Copyright (c) 2011, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef STATISTICS_INCLUDED #define STATISTICS_INCLUDED #ifdef HAVE_WINDOWS_H #include #endif #include "globals.h" #include "locking.h" #include "rts_module.h" #include "../polystatistics.h" enum { PSC_THREADS = 0, // Total number of threads PSC_THREADS_IN_ML, // Threads running ML code PSC_THREADS_WAIT_IO, // Threads waiting for IO PSC_THREADS_WAIT_MUTEX, // Threads waiting for a mutex PSC_THREADS_WAIT_CONDVAR, // Threads waiting for a condition var PSC_THREADS_WAIT_SIGNAL, // Special case - signal handling thread PSC_GC_FULLGC, // Number of full garbage collections PSC_GC_PARTIALGC, // Number of partial GCs PSS_TOTAL_HEAP, // Total size of the local heap PSS_AFTER_LAST_GC, // Space free after last GC PSS_AFTER_LAST_FULLGC, // Space free after the last full GC PSS_ALLOCATION, // Size of allocation space PSS_ALLOCATION_FREE, // Space available in allocation area N_PS_INTS }; enum { PST_NONGC_UTIME, PST_NONGC_STIME, PST_GC_UTIME, PST_GC_STIME, N_PS_TIMES }; // A few counters that can be used by the application #define N_PS_USER 8 class TaskData; class SaveVecEntry; typedef SaveVecEntry *Handle; class Statistics: RtsModule { public: Statistics(); ~Statistics(); virtual void Init(void); // Initialise after set-up Handle getLocalStatistics(TaskData *taskData); Handle getRemoteStatistics(TaskData *taskData, POLYUNSIGNED processId); void incCount(int which); void decCount(int which); void setSize(int which, size_t s); void incSize(int which, size_t s); void decSize(int which, size_t s); size_t getSize(int which); void setUserCounter(unsigned which, POLYSIGNED value); #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Native Windows void copyGCTimes(const FILETIME &gcUtime, const FILETIME &gcStime); FILETIME gcUserTime, gcSystemTime; #else // Unix and Cygwin void copyGCTimes(const struct timeval &gcUtime, const struct timeval &gcStime); struct timeval gcUserTime, gcSystemTime; #endif void updatePeriodicStats(POLYUNSIGNED freeSpace, unsigned threadsInML); bool exportStats; private: PLock accessLock; #ifdef HAVE_WINDOWS_H // File mapping handle HANDLE hFileMap; #else char *mapFileName; int mapFd; #endif size_t memSize; unsigned char *statMemory; unsigned char *newPtr; unsigned char *counterAddrs[N_PS_INTS]; struct { unsigned char *secAddr; unsigned char *usecAddr; } timeAddrs[N_PS_TIMES]; unsigned char *userAddrs[N_PS_USER]; Handle returnStatistics(TaskData *taskData, unsigned char *stats); void addCounter(int cEnum, unsigned statId, const char *name); void addSize(int cEnum, unsigned statId, const char *name); void addTime(int cEnum, unsigned statId, const char *name); void addUser(int n, unsigned statId, const char *name); size_t getSizeWithLock(int which); void setSizeWithLock(int which, size_t s); void setTimeValue(int which, unsigned long secs, unsigned long usecs); }; extern Statistics globalStats; #endif // STATISTICS_INCLUDED polyml-5.7.1/libpolyml/xwindows.cpp0000644000175000017500000115542413204034553016404 0ustar daviddavid/* Title: X-Windows/Motif Interface. Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #if (defined(WITH_XWINDOWS)) // X-Windows is required. /* xwindows.c */ /* Removed indirection from get_C_* functions SPF 31/10/93 */ /* Added Handle type 2/11/93 */ /* Fixed "GetString can only be used once" bug 17/11/93 */ /* Dealing with gcc warning messages SPF 6/1/94 */ /* Retrofit to old Sun cc SPF 7/1/94 */ /* 25/1/94 SPF Fixed bug in EmptyVisual (core-dump when v==NULL) */ /* Comment added 4/11/93 SPF Global Invariants: (1) Get functions promise not to allocate on the Poly/ML heap (2) The Poly/ML heap contains pointers into the C heap! As these are only valid for one session, the run-time system records which Poly/ML objects have been created in the current session. Only these objects contain valid C pointers, and so may be dereferenced. The "bad" Poly/ML objects are: Flags Object Bad Field Access Function ----- ------ --------- --------------- M X_GC_Object GC *gc GetGC X_Font_Object Font *font GetFont ditto XFontStruct **fs GetFS X_Cursor_Object Cursor *cursor GetCursor BM X_Window_Object Drawable *drawable GetDrawable, GetPixmap X_Pixmap_Object Pixmap *pixmap GetDrawable, GetPixmap X_Colormap_Object Colormap *cmap GetColormap X_Visual_Object Visual **visual GetVisual (* FISHY *) B X_Display_Object Display *display (?) GetDisplay (?) ditto XtAppContext app_context NONE(?) M X_Widget_Object Widget *widget GetWidget, GetNWidget B X_Trans_Object XtTranslations table GetTrans B X_Acc_Object XtAccelerators acc GetAcc WARNING: the above list of unsafe fields was created by SPF and may be incomplete. The function CheckExists should be called on these objects before it is safe to use any of the above fields. That's because the object may have been created in a previous ML session, so the pointers that it contains may no longer be valid. Using the appropriate access function listed above guarantees that CheckExists is called. Exception: the fields can safely be tested against C's zero (None, Null) even if CheckExists hasn't been called. Note that this is only database-safe because this value is used for uninitialised fields, so it doesn't confuse the garbage-collector. For all the above fields EXCEPT display, app_context, table, acc the run-time system creates an indirection object in the Poly heap. These fields don't need an indirection object because the object which contains them is itself a BYTE object. This indirection is a byte-object. The indirection is necessary because the garbage collector would object to finding a C pointer in a standard ML labelled record. The alternative would be to store the C pointer as an ML integer, but then we would have to convert back to a C pointer befor we could dereference it. For similar reasons, eventMask is also stored as a boxed PolyWord. abstype Colormap = Colormap with end; (* X_Colormap_Object *) abstype Cursor = Cursor with end; (* X_Cursor_Object *) abstype Drawable = Drawable with end; (* X_Window_Object, XPixmap_Object *) abstype Font = Font with end; (* X_Font_Object *) abstype GC = GC with end; (* X_GC_Object *) abstype Visual = Visual with end; (* X_Visual_Object *) abstype Display = Display with end; (* X_Display_Object *) abstype Widget = Widget of int with end; abstype XtAccelerators = XtAccelerators of int with end; abstype XtTranslations = XtTranslations of int with end; */ /* MLXPoint, MLXRectangle, MLXArc, MLPair, MLTriple added 31/10/93 SPF */ #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_CTYPE_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_ASSERT_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ALLOCA_H #include #endif #ifdef HAVE_ERRNO_H #include #endif /* what goes wrong? ... gid, fd, private15 inaccessible */ /* THIS NEEDS TO BE FIXED!!!! */ #define XLIB_ILLEGAL_ACCESS 1 /* We need access to some opaque structures */ /* use prototypes, but make sure we get Booleans, not ints */ #define NeedWidePrototypes 0 #include #include /* IsCursorKey, IsFunctionKey, et cetera */ #include /* needed for protocol names such as X_CreateWindow */ #include /* XA_ATOM, et cetera */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* Motif 1.2 */ #include /* for XmIsDesktopObject */ #include /* for XmIsExtObject */ #include /* for XmIsShellExt */ #include /* for XmIsVendorShellExt */ #include #if(0) /* for XmIsWorldObject */ /* This is not supported in FreeBSD or Solaris 8. */ #include #endif #include "globals.h" #include "sys.h" #include "xwindows.h" #include "run_time.h" #include "arb.h" #include "mpoly.h" #include "gc.h" #include "xcall_numbers.h" #include "diagnostics.h" #include "processes.h" #include "save_vec.h" #include "polystring.h" #include "scanaddrs.h" #include "memmgr.h" #include "machine_dep.h" #include "processes.h" #include "rts_module.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyXWindowsGeneral(PolyObject *threadId, PolyWord params); } /* The following are only forward so we can declare attributes */ static void RaiseXWindows(TaskData *taskData, const char *s) __attribute__((noreturn)); #define ButtonClickMask (((unsigned)1 << 29)) #define XMASK(m) ((m) &~ButtonClickMask) #undef SIZEOF #define debug1(fmt,p1) { /*EMPTY*/ } #undef debug1 #define debug1(fmt,p1) {if (debugOptions & DEBUG_X) printf(fmt,p1);} #define debug3(fmt,p1,p2,p3) {if (debugOptions & DEBUG_X) printf(fmt,p1,p2,p3);} #define debugCreate(type,value) debug1("%lx " #type " created\n",(unsigned long)(value)) #define debugReclaim(type,value) debug1("%lx " #type " reclaimed\n",(unsigned long)(value)) #define debugReclaimRef(type,value) debug1("%lx " #type " reference reclaimed\n",(unsigned long)(value)) #define debugRefer(type,value) debug1("%lx " #type " referenced\n",(unsigned long)(value)) #define debugCreateCallback(MLValue,CValue,CListCell) debug3("%p Widget callback reference created (%p,%p)\n",CValue,CListCell,MLValue) #define debugReclaimCallback(MLValue,CValue,CListCell) debug3("%p Widget callback reference removed (%p,%p)\n",CValue,CListCell,MLValue) /* forward declarations */ static Atom WM_DELETE_WINDOW(Display *d); /* was int SPF 6/1/94 */ #define DEREFDISPLAYHANDLE(h) ((X_Display_Object *)DEREFHANDLE(h)) #define DEREFWINDOWHANDLE(h) ((X_Window_Object *)DEREFHANDLE(h)) #define DEREFXOBJECTHANDLE(h) ((X_Object *)DEREFHANDLE(h)) #define SAVE(x) taskData->saveVec.push(x) #define Make_int(x) Make_arbitrary_precision(taskData, x) #define Make_string(s) SAVE(C_string_to_Poly(taskData, s)) #define Make_bool(b) Make_arbitrary_precision(taskData, (b) != 0) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) #define min(a,b) (a < b ? a : b) #define max(a,b) (a > b ? a : b) #define ISNIL(p) (ML_Cons_Cell::IsNull(p)) #define NONNIL(p) (!ISNIL(p)) typedef Handle EventHandle; /********************************************************************************/ /* Objects are created MUTABLE and are FINISHED when all their fields have been */ /* filled in (assuming they are immutable objects). This is so that we can */ /* consider the possibility of storing immutable objects in read-only memory */ /* segments (not currently implemented). SPF 7/12/93 */ /********************************************************************************/ static Handle FINISHED(TaskData *taskData, Handle P) { PolyObject *pt = DEREFHANDLE(P); assert(taskData->saveVec.isValidHandle(P)); assert(pt->IsMutable()); POLYUNSIGNED lengthW = pt->LengthWord(); pt->SetLengthWord(lengthW & ~_OBJ_MUTABLE_BIT); return P; } static void RaiseXWindows(TaskData *taskData, const char *s) { if (mainThreadPhase == MTP_USER_CODE) { raise_exception_string(taskData, EXC_XWindows,s); } else { /* Crash added 7/7/94 SPF */ Crash("Tried to raise exception (XWindows \"%s\") during garbage collection\n",s); } /*NOTREACHED*/ } /* bugfixed 6/12/94 SPF */ #define RaiseXWindows2(varmessage,constmessage) \ { \ const char message[] = constmessage; \ int n1 = strlen(varmessage); \ int n2 = strlen(message); \ char *mess = (char *)alloca(n1 + n2 + 1); \ strcat(strncpy(mess,varmessage,n1),message); \ RaiseXWindows(taskData, mess); \ /*NOTREACHED*/ \ } static void RaiseRange(TaskData *taskData) { raise_exception0(taskData, EXC_size); } typedef unsigned char uchar; static uchar get_C_uchar(TaskData *taskData, PolyWord a) { unsigned u = get_C_ushort(taskData, a); if (u >= 256) RaiseRange(taskData); return u; } /******************************************************************************/ /* */ /* String */ /* */ /******************************************************************************/ //#define String PolyStringObject //#define GetString(s) _GetString((PolyWord *)(s)) /* can only be called TABLESIZE times per X opcode */ static PolyStringObject *GetString(PolyWord s) { #define TABLESIZE 5 static PolyStringObject string[TABLESIZE]; static int index = 0; if (! s.IsTagged()) return (PolyStringObject *) s.AsObjPtr(); index = (index + 1) % TABLESIZE; string[index].length = 1; string[index].chars[0] = UNTAGGED(s); return &string[index]; #undef TABLESIZE } /******************************************************************************/ /* */ /* XObjects (Type definitions) */ /* */ /******************************************************************************/ /* We keep a list of all objects created by calls to X. */ /* When an object is created we add an entry to the list and */ /* return the entry. If the entry becomes inaccessible */ /* by the garbage collector then we free the object. */ /* The list is created by malloc so that it is not in the heap. */ // Types of objects. These are tagged when they are stored // in objects because some objects are not byte objects. typedef enum { X_GC = 111, X_Font = 222, X_Cursor = 333, X_Window = 444, X_Pixmap = 555, X_Colormap = 666, X_Visual = 777, X_Display = 888, X_Widget = 999, X_Trans = 1111, X_Acc = 2222 } X_types; class X_Object: public PolyObject { public: X_Object(): type(TAGGED(1)) {} // Just to keep gcc happy PolyWord type; }; class X_Trans_Object: public X_Object /* BYTE object */ { public: XtTranslations table; /* C value */ }; class X_Acc_Object: public X_Object /* BYTE object */ { public: XtAccelerators acc; /* C value */ }; class X_Display_Object: public X_Object /* BYTE object */ { public: Display *display; /* C value */ unsigned screen; /* C value */ XtAppContext app_context; /* C value */ } ; class X_Font_Object: public X_Object { public: Font *font; /* Token for C value */ XFontStruct **fs; /* Token for C value */ X_Display_Object *ds; /* Token */ } ; class X_Cursor_Object: public X_Object { public: Cursor *cursor; /* Token for C value */ X_Display_Object *ds; /* Token */ } ; class X_Pixmap_Object: public X_Object { public: Pixmap *pixmap; /* Token for C value */ X_Display_Object *ds; /* Token */ } ; class X_Colormap_Object: public X_Object { public: Colormap *cmap; /* Token for C value */ X_Display_Object *ds; /* Token */ } ; class X_Widget_Object: public X_Object /* MUTABLE */ { public: Widget *widget; /* Token for C value */ PolyWord callbackList; /* mutable */ PolyWord state; /* mutable */ X_Display_Object *ds; /* Token */ } ; class X_Visual_Object: public X_Object { public: Visual **visual; /* Token for C value */ X_Display_Object *ds; /* Token */ } ; class X_GC_Object: public X_Object /* MUTABLE */ { public: GC *gc; /* Token for C value */ X_Font_Object *font_object; /* mutable; may be 0 */ X_Pixmap_Object *tile; /* mutable; may be 0 */ X_Pixmap_Object *stipple; /* mutable; may be 0 */ X_Pixmap_Object *clipMask; /* mutable; may be 0 */ X_Display_Object *ds; /* Token */ } ; class X_Window_Struct: public X_Object /* MUTABLE */ { public: Drawable *drawable; /* Token for C value */ PolyWord handler; /* mutable? */ PolyWord state; /* mutable? */ PolyObject *eventMask; /* Token for C value; token itself is mutable */ X_Colormap_Object *colormap_object; /* mutable; may be 0 */ X_Cursor_Object *cursor_object; /* mutable; may be 0 */ X_Pixmap_Object *backgroundPixmap; /* mutable; may be 0 */ X_Pixmap_Object *borderPixmap; /* mutable; may be 0 */ X_Window_Struct *parent; /* may be 0 */ X_Display_Object *ds; /* Token */ }; typedef X_Window_Struct X_Window_Object; /******************************************************************************/ /* */ /* Forward declarations */ /* */ /******************************************************************************/ static Font GetFont(TaskData *taskData, X_Object *P); static Cursor GetCursor(TaskData *taskData,X_Object *P); static Colormap GetColormap(TaskData *taskData,X_Object *P); static Visual *GetVisual(TaskData *taskData,X_Object *P); static XtTranslations GetTrans(TaskData *taskData,X_Object *P); static XtAccelerators GetAcc(TaskData *taskData,X_Object *P); static Pixmap GetPixmap(TaskData *, X_Object *P); static Widget GetNWidget(TaskData *, X_Object *P); static Window GetWindow(TaskData *, X_Object *P); static Display *GetDisplay(TaskData *, X_Object *P); static void DestroyWindow(X_Object *W); static void DestroySubwindows(X_Object *W); static X_GC_Object *GCObject(X_Object *P); static X_Pixmap_Object *PixmapObject(X_Object *P); static X_Widget_Object *WidgetObject(TaskData *, X_Object *P); static X_Window_Object *WindowObject(X_Object *P); /******************************************************************************/ /* */ /* C lists (Type definitions) */ /* */ /******************************************************************************/ typedef struct X_List_struct X_List; struct X_List_struct { X_List *next; /* pointer into C heap */ X_Object *object; /* pointer into Poly heap; weak */ }; typedef struct timeval TimeVal; /* In C heap */ typedef struct T_List_struct T_List; struct T_List_struct { T_List *next; /* pointer into C heap */ TimeVal timeout; /* here */ X_Window_Object *window_object; /* pointer into Poly heap, or 0; weak */ X_Widget_Object *widget_object; /* pointer into Poly heap, or 0; strong */ PolyObject *alpha; /* pointer into Poly heap; strong */ PolyObject *handler; /* pointer into Poly heap; strong */ int expired; /* here */ }; /* NB precisely one of window_object and widget_object should be non-zero */ /* In C heap */ typedef struct C_List_struct C_List; struct C_List_struct { PolyObject *function; /* pointer into Poly heap; strong */ X_Widget_Object *widget_object; /* pointer into Poly heap; strong */ C_List *next; /* pointer into C heap */ }; /* lists of X objects currently in Poly heap i.e. those created in this session */ #define XLISTSIZE 1001 /* must be coprime to 4 ('cos pointers are PolyWord-aligned) */ static X_List *XList[XLISTSIZE] = {0}; static T_List *TList = 0; /* C pending messages list, ordered by arrival time */ static C_List *CList = 0; /* Acts as root for objects "owned" by C callbacks */ static PolyWord FList = TAGGED(0); /* ML Callback list - acts as a Root for the Heap */ static PolyWord GList = TAGGED(0); /* ML Event list - acts as a Root for the Heap */ static Bool callbacks_enabled = False; /******************************************************************************/ /* */ /* High-speed XList routines */ /* */ /******************************************************************************/ /* maps an (X_Object *) to an (unsigned); this mapping from must give the same */ /* (unsigned) for each (X_Object) for an entire Poly/ML session, even though its */ /* address may change at every garbage collection. */ /* The way we achieve this is by returning the address of the corresponding C */ /* object. Note that since the ML object doesn't necessarily correspond to a real*/ /* C object, this value may be neither valid nor sensible (but it WILL be a */ /* constant). */ /* Unfortunately, we can't do this for GCs or VISUALS, since the actual C object */ /* contains the id we want, and we can't access the id if we haven't got the */ /* object. For these, we return a constant instead. */ static unsigned long hashId(X_Object *P) { #define HASH_GC 0 #define HASH_VISUAL 1 switch(UNTAGGED(P->type)) { case X_GC: return HASH_GC; case X_Font: return (unsigned long)(*(((X_Font_Object*)P)->font)); case X_Cursor: return (unsigned long)(*(((X_Cursor_Object*)P)->cursor)); case X_Window: return (unsigned long)(*(((X_Window_Struct*)P)->drawable)); case X_Pixmap: return (unsigned long)(*(((X_Pixmap_Object*)P)->pixmap)); case X_Colormap: return (unsigned long)(*(((X_Colormap_Object*)P)->cmap)); case X_Visual: return HASH_VISUAL; case X_Display: return (unsigned long)(((X_Display_Object*)P)->display); case X_Widget: return (unsigned long)(*(((X_Widget_Object*)P)->widget)); case X_Trans: return (unsigned long)(((X_Trans_Object*)P)->table); case X_Acc: return (unsigned long)(((X_Acc_Object*)P)->acc); default: Crash ("Bad X_Object type (%d) in hashId",UNTAGGED(P->type)); } /*NOTREACHED*/ } static void initXList(void) { int i; for (i = 0; i < XLISTSIZE; i++) { XList[i] = NULL; } } static X_List **hashXList(X_Object *P) { unsigned long id = hashId(P); unsigned n = (id % XLISTSIZE); /* a poor hash function, but good enough for now */ return &(XList[n]); } static X_List *findXList(unsigned long id) { unsigned n = (id % XLISTSIZE); /* a poor hash function, but good enough for now */ return XList[n]; } /******************************************************************************/ /* */ /* C lists (Polymorphic functions) */ /* */ /******************************************************************************/ // Creates a list from a vector of items. static Handle CreateList4(TaskData *taskData, unsigned n, void *p, unsigned objSize, Handle (*f)(TaskData *, void *)) { Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); // Process the vector in reverse order. That way we can make the // cells as immutable objects rather than having to create them as // mutable and then lock them. while (n) { n--; byte *objP = (byte*)p + objSize*n; Handle value = (* f)(taskData, objP); Handle next = alloc_and_save(taskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); /* reset save vector to stop it overflowing */ taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } static Handle CreateList4I(TaskData *taskData, unsigned n, void *p, unsigned objSize, Handle (*f)(TaskData *, void *, unsigned i)) { Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); while (n) { n--; byte *objP = (byte*)p + objSize*n; Handle value = (* f)(taskData, objP, n); Handle next = alloc_and_save(taskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); /* reset save vector to stop it overflowing */ taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } static Handle CreateList5(TaskData *taskData, POLYUNSIGNED n, void *p, POLYUNSIGNED objSize, Handle (*f)(TaskData *, void *, Handle), Handle a1) { Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); // Process the vector in reverse order. That way we can make the // cells as immutable objects rather than having to create them as // mutable and then lock them. while (n) { n--; byte *objP = (byte*)p + objSize*n; Handle value = (* f)(taskData, objP, a1); Handle next = alloc_and_save(taskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); /* reset save vector to stop it overflowing */ taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } static void GetList4(TaskData *taskData, PolyWord list, void *v, unsigned bytes, void (*get)(TaskData *, PolyWord, void*, unsigned)) { unsigned i = 0; byte *s = (byte*)v; for(PolyWord p = list; NONNIL(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) { (* get)(taskData, ((ML_Cons_Cell*)p.AsObjPtr())->h, s, i); s += bytes; i++; } } /* ListLength no longer requires indirection via handle SPF 4/11/93 */ static unsigned ListLength(PolyWord list) { unsigned n = 0; for(PolyWord p = list; NONNIL(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) n++; return n; } /******************************************************************************/ /* */ /* TList Purge Functions (SPF 29/11/93) */ /* */ /******************************************************************************/ static void PurgePendingWidgetMessages(X_Widget_Object *P) { T_List **T = &TList; while(*T) { T_List *t = *T; if (t->widget_object == P) /* clear out pending messages for this widget */ { *T = t->next; free(t); } else T = &t->next; } } static void PurgePendingWindowMessages(X_Window_Object *P) { T_List **T = &TList; while(*T) { T_List *t = *T; if (t->window_object == P) /* clear out pending messages for this window */ { *T = t->next; free(t); } else T = &t->next; } } /******************************************************************************/ /* */ /* CList Purge Functions (SPF 29/2/96) */ /* */ /******************************************************************************/ static void PurgeCCallbacks(X_Widget_Object *P, Widget w) { C_List **C = &CList; while(*C) { C_List *c = *C; if (c->widget_object == P) /* clear out callback info for this widget */ { debugReclaimCallback(P,w,c); *C = c->next; free(c); } else C = &c->next; } } /******************************************************************************/ /* */ /* XObjects (Polymorphic functions 1) */ /* */ /******************************************************************************/ static int ResourceExists(X_Object *P) { X_List *L; for(L = *hashXList(P); L; L = L->next) { if (L->object == P) return 1; } return 0; } /* SafeResourceExists is like ResourceExists but doesn't assume that we actually have a valid X object, so it doesn't use hashing. SPF 6/4/95 */ static int SafeResourceExists(X_Object *P) { unsigned n; for (n = 0; n < XLISTSIZE; n++) { X_List *L; for(L = XList[n]; L; L = L->next) { if (L->object == P) return 1; } } return 0; } static void DestroyXObject(X_Object *P) { TaskData *taskData = processes->GetTaskDataForThread(); X_List **X = hashXList(P); switch(UNTAGGED(P->type)) { case X_GC: { X_GC_Object *G = GCObject(P); GC gc = *G->gc; Display *d = G->ds->display; if (gc == DefaultGC(d,G->ds->screen)) { debugReclaimRef(GC,gc->gid); } else { debugReclaim(GC,gc->gid); XFreeGC(d,gc); /* SAFE(?) */ } break; } case X_Font: { Font f = GetFont(taskData, P); if (f == None) { debugReclaimRef(Font,f); } else { debugReclaim(Font,f); #if NEVER XUnloadFont(GetDisplay(taskData, P),f); #endif } break; } case X_Cursor: { Cursor cursor = GetCursor(taskData, P); if (cursor == None) { debugReclaimRef(Cursor,cursor); } else { debugReclaim(Cursor,cursor); #if NEVER XFreeCursor(GetDisplay(taskData, P),cursor); #endif } break; } case X_Window: { /* added 29/11/93 SPF */ PurgePendingWindowMessages(WindowObject(P)); if (((X_Window_Object *)P)->parent != 0) /* this clients window */ { debugReclaim(Window,GetWindow(taskData, P)); DestroyWindow(P); } else /* None, ParentRelative, and other clients windows */ { debugReclaimRef(Window,GetWindow(taskData, P)); } break; } case X_Pixmap: { Pixmap pixmap = GetPixmap(taskData, P); if (pixmap == None) { debugReclaimRef(Pixmap,pixmap); } else { debugReclaim(Pixmap,pixmap); #if NEVER XFreePixmap(GetDisplay(taskData, P),pixmap); #endif } break; } case X_Colormap: { Colormap cmap = GetColormap(taskData, P); if (cmap == None) { debugReclaimRef(Colormap,cmap); } else { debugReclaim(Colormap,cmap); #if NEVER XFreeColormap(GetDisplay(taskData, P),cmap); #endif } break; } case X_Visual: { Visual *visual = GetVisual(taskData, P); debugReclaimRef(Visual,visual->visualid); break; } case X_Widget: { Widget widget = GetNWidget(taskData, P); PurgePendingWidgetMessages(WidgetObject(taskData, P)); debugReclaimRef(Widget,widget); break; } case X_Trans: { XtTranslations table = GetTrans(taskData, P); debugReclaimRef(Trans,table); break; } case X_Acc: { XtAccelerators acc = GetAcc(taskData, (X_Object *)P); debugReclaimRef(Acc,acc); break; } default: Crash ("Unknown X_Object type %d",UNTAGGED(P->type)); } while(*X) { X_List *L = *X; if (L->object == P) { *X = L->next; free(L); return; } else X = &L->next; } printf("DestroyXObject: destroy failed\n"); } #define CheckExists(P,resource) \ {\ if (! ResourceExists(P)) RaiseXWindows(taskData, (char*) "Non-existent " #resource); \ } static X_Font_Object *FontObject(X_Object *P) { assert(UNTAGGED(P->type) == X_Font); return (X_Font_Object *)P; } static X_Object *FindResource ( Handle dsHandle, /* Handle to (X_Display_Object *) */ X_types type, unsigned long id, unsigned long hashid ) { X_List *L; X_Display_Object *d = (type == X_Widget) ? NULL : DEREFDISPLAYHANDLE(dsHandle); for(L = findXList(hashid); L; L = L->next) { X_Object *P = L->object; if (UNTAGGED(P->type) == type) { switch(type) { case X_GC: if (((X_GC_Object*)P)->ds == d && (*((X_GC_Object*)P)->gc)->gid == id) return P; break; case X_Font: if (((X_Font_Object*)P)->ds == d && (*((X_Font_Object*)P)->font) == id) return P; break; case X_Cursor: if (((X_Cursor_Object*)P)->ds == d && (*((X_Cursor_Object*)P)->cursor) == id) return P; break; case X_Window: if (((X_Window_Object*)P)->ds == d && (*((X_Window_Object*)P)->drawable) == id) return P; break; case X_Pixmap: if (((X_Pixmap_Object*)P)->ds == d && (*((X_Pixmap_Object*)P)->pixmap) == id) return P; break; case X_Colormap: if (((X_Colormap_Object*)P)->ds == d && (*((X_Colormap_Object*)P)->cmap) == id) return P; break; case X_Visual: if (((X_Visual_Object*)P)->ds == d && (*((X_Visual_Object*)P)->visual)->visualid == id) return P; break; case X_Widget: if (*(((X_Widget_Object*)P)->widget) == (Widget) id) return P; break; case X_Display: break; case X_Trans: break; case X_Acc: break; default: Crash ("Bad X_Object type (%d) in FindResource", type); } } } return 0; } // Why are there these casts to unsigned here???? #define FindWindow(d,id) ((X_Window_Object *) FindResource(d,X_Window,(unsigned long)id,(unsigned long)id)) #define FindPixmap(d,id) ((X_Pixmap_Object *) FindResource(d,X_Pixmap,(unsigned long)id,(unsigned long)id)) #define FindCursor(d,id) ((X_Cursor_Object *) FindResource(d,X_Cursor,(unsigned long)id,(unsigned long)id)) #define FindFont(d,id) ((X_Font_Object *) FindResource(d,X_Font,(unsigned long)id,(unsigned long)id)) #define FindColormap(d,id) ((X_Colormap_Object *) FindResource(d,X_Colormap,(unsigned long)id,(unsigned long)id)) #define FindWidget(id) ((X_Widget_Object *) FindResource((Handle)NULL,X_Widget,(unsigned long)id,(unsigned long)id)) /* can't use id for hashing in the following, so use arbitrary values instead */ #define FindGC(d,id) ((X_GC_Object *) FindResource(d,X_GC,(unsigned long)id,HASH_GC)) #define FindVisual(d,id) ((X_Visual_Object *) FindResource(d,X_Visual,(unsigned long)id,HASH_VISUAL)) static Handle AddXObject(Handle objectHandle) { X_List **X = hashXList(DEREFXOBJECTHANDLE(objectHandle)); X_List *L = (X_List *) malloc(sizeof(X_List)); L->next = *X; L->object = (X_Object *)DEREFHANDLE(objectHandle); *X = L; return objectHandle; } /******************************************************************************/ /* */ /* MLXPoint - implements ML XPoint datatype */ /* */ /******************************************************************************/ typedef struct /* depends on XPoint datatype + ML compiler hash function */ { PolyWord x; /* ML int */ PolyWord y; /* ML int */ } MLXPoint; inline MLXPoint * Point(PolyWord p) { return (MLXPoint *) p.AsObjPtr(); } /* shouldn't these be long values? */ inline short GetPointX(TaskData *taskData, PolyWord p) { return get_C_short(taskData, Point(p)->x); } inline short GetPointY(TaskData *taskData, PolyWord p) { return get_C_short(taskData, Point(p)->y); } inline short GetOffsetX(TaskData *taskData, PolyWord p) { return get_C_ushort(taskData, Point(p)->x); } inline short GetOffsetY(TaskData *taskData, PolyWord p) { return get_C_ushort(taskData, Point(p)->y); } static Handle CreatePoint(TaskData *taskData, int x, int y) { Handle pointHandle = alloc_and_save(taskData, SIZEOF(MLXPoint), F_MUTABLE_BIT); /* Still allocating, so must use explicit DEREF for each element */ #define point ((MLXPoint *)DEREFHANDLE(pointHandle)) point->x = DEREFWORD(Make_int(x)); point->y = DEREFWORD(Make_int(y)); #undef point return FINISHED(taskData, pointHandle); } static void GetPoints(TaskData *taskData, PolyWord p, void *v, unsigned) { XPoint *A = (XPoint *)v; A->x = GetPointX(taskData, p); A->y = GetPointY(taskData, p); } /******************************************************************************/ /* */ /* MLXRectangle - implements ML XRectangle datatype */ /* */ /******************************************************************************/ typedef struct /* depends on XRectangle datatype + ML compiler hash function */ { PolyWord top; /* ML int */ PolyWord left; /* ML int */ PolyWord right; /* ML int */ PolyWord bottom; /* ML int */ } MLXRectangle; inline MLXRectangle *Rect(PolyWord R) { return (MLXRectangle *) R.AsObjPtr(); } inline short GetRectTop(TaskData *taskData, PolyWord R) { return get_C_short(taskData, Rect(R)->top); } inline short GetRectLeft(TaskData *taskData, PolyWord R) { return get_C_short(taskData, Rect(R)->left); } inline short GetRectRight(TaskData *taskData, PolyWord R) { return get_C_short(taskData, Rect(R)->right); } inline short GetRectBottom(TaskData *taskData, PolyWord R) { return get_C_short(taskData, Rect(R)->bottom); } #define GetRectX(taskData, R) GetRectLeft(taskData, R) #define GetRectY(taskData, R) GetRectTop(taskData, R) /* functions added 29/10/93 SPF */ static unsigned GetRectW(TaskData *taskData, PolyWord R) { long result = GetRectRight(taskData, R) - GetRectLeft(taskData, R); if (result < 0) RaiseRange(taskData); return (unsigned)result; } static unsigned GetRectH(TaskData *taskData, PolyWord R) { long result = GetRectBottom(taskData, R) - GetRectTop(taskData, R); if (result < 0) RaiseRange(taskData); return (unsigned)result; } /* static MLXRectangle **CreateRect(top,left,bottom,right) */ static Handle CreateRect(TaskData *taskData, int top, int left, int bottom, int right) { Handle rectHandle = alloc_and_save(taskData, SIZEOF(MLXRectangle), F_MUTABLE_BIT); /* Still allocating, so must use explicit DEREF for each element */ #define rect ((MLXRectangle *)DEREFHANDLE(rectHandle)) rect->top = DEREFWORD(Make_int(top)); rect->left = DEREFWORD(Make_int(left)); rect->right = DEREFWORD(Make_int(right)); rect->bottom = DEREFWORD(Make_int(bottom)); #undef rect return FINISHED(taskData, rectHandle); } #define CreateArea(w,h) CreateRect(taskData, 0,0,(int)h,(int)w) static void GetRects(TaskData *taskData, PolyWord p, void *v, unsigned) { XRectangle *A = (XRectangle *)v; A->x = GetRectX(taskData, p); A->y = GetRectY(taskData, p); A->width = GetRectW(taskData, p); A->height = GetRectH(taskData, p); } static void CheckZeroRect(TaskData *taskData, PolyWord R) { unsigned x = GetRectX(taskData, R); unsigned y = GetRectY(taskData, R); unsigned w = GetRectW(taskData, R); unsigned h = GetRectH(taskData, R); if (x != 0 || y != 0 || /* w <= 0 || h <= 0 || w,h now unsigned SPF 29/10/93 */ w == 0 || h == 0 || w > 65535 || h > 65535) RaiseRange(taskData); } /******************************************************************************/ /* */ /* MLXArc - implements ML XArc datatype */ /* */ /******************************************************************************/ /* MLXArc added 31/10/93 SPF; depends on ML XArc datatype */ typedef struct { PolyWord r; /* MMLXRectangle* */ PolyWord a1; /* ML int */ PolyWord a2; /* ML int */ } MLXArc; inline MLXArc *Arc(PolyWord A) { return (MLXArc *) A.AsObjPtr(); } inline PolyWord GetArcR(PolyWord A) { return Arc(A)->r; } inline short GetArcA1(TaskData *taskData, PolyWord A) { return get_C_short(taskData, Arc(A)->a1); } inline short GetArcA2(TaskData *taskData, PolyWord A) { return get_C_short(taskData, Arc(A)->a2); } static void GetArcs(TaskData *taskData, PolyWord p, void *v, unsigned) { XArc *A = (XArc *)v; A->x = GetRectX(taskData, GetArcR(p)); A->y = GetRectY(taskData, GetArcR(p)); A->width = GetRectW(taskData, GetArcR(p)); A->height = GetRectH(taskData, GetArcR(p)); A->angle1 = GetArcA1(taskData, p); A->angle2 = GetArcA2(taskData, p); } /******************************************************************************/ /* */ /* Colormap */ /* */ /******************************************************************************/ static X_Colormap_Object *ColormapObject(X_Object *P) { assert(UNTAGGED(P->type) == X_Colormap); return (X_Colormap_Object *)P; } static Colormap GetColormap(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Colormap); /* val NoColormap = xcall (23,0) : Colormap; */ /* special case for NoColormap - correct(?) */ if ( *(((X_Colormap_Object *)P)->cmap) == None) return None; CheckExists(P,colormap); return *(((X_Colormap_Object *)P)->cmap); } static Handle EmptyColormap ( TaskData *taskData, Handle dsHandle /* Handle to (X_Display_Object *) */, Colormap id ) { X_Colormap_Object *E = FindColormap(dsHandle,id); if (E) { return SAVE(E); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Colormap_Object), F_MUTABLE_BIT); Handle cmapHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT | F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Colormap_Object *object = (X_Colormap_Object *)DEREFHANDLE(objectHandle); Colormap *cmap = (Colormap *)DEREFHANDLE(cmapHandle); *cmap = id; FINISHED(taskData, cmapHandle); object->type = TAGGED(X_Colormap); object->cmap = cmap; object->ds = DEREFDISPLAYHANDLE(dsHandle); debugRefer(Colormap,id); return AddXObject(FINISHED(taskData, objectHandle)); } } /******************************************************************************/ /* */ /* Visual */ /* */ /******************************************************************************/ static Visual *GetVisual(TaskData *taskData, X_Object *P) { static Visual EMPTYVISUAL = { 0 }; assert(UNTAGGED(P->type) == X_Visual); /* val NoVisual = xcall (24,0) : Visual; */ /* special case for NoVisual */ if (*(((X_Visual_Object *)P)->visual) == None) return &EMPTYVISUAL; /* FISHY (?) */ CheckExists(P,visual); return *(((X_Visual_Object *)P)->visual); } static Handle EmptyVisual ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Visual *v ) { if (v != None) { X_Visual_Object *E = FindVisual(dsHandle,v->visualid); if (E) return SAVE(E); } /* else */ { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Visual_Object), F_MUTABLE_BIT); Handle visualHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Visual_Object *object = (X_Visual_Object *)DEREFHANDLE(objectHandle); Visual **visual = (Visual **)DEREFHANDLE(visualHandle); *visual = v; FINISHED(taskData, visualHandle); object->type = TAGGED(X_Visual); object->visual = visual; object->ds = DEREFDISPLAYHANDLE(dsHandle); debugRefer(Visual,(v == None) ? None : v->visualid); return AddXObject(FINISHED(taskData, objectHandle)); } } /******************************************************************************/ /* */ /* GC */ /* */ /******************************************************************************/ static X_GC_Object *GCObject(X_Object *P) { assert(UNTAGGED(P->type) == X_GC); return (X_GC_Object *)P; } static GC GetGC(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_GC); CheckExists(P,gc); return *(((X_GC_Object *)P)->gc); } static Handle GetDefaultGC(TaskData *taskData, Handle dsHandle /* Handle to (X_Display_Object *) */) { GC defaultGC = DefaultGC(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen); X_GC_Object *G = FindGC(dsHandle,defaultGC->gid); if (G) { return SAVE(G); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_GC_Object), F_MUTABLE_BIT); Handle GCHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_GC_Object *object = (X_GC_Object *)DEREFHANDLE(objectHandle); GC *gc = (GC *)DEREFHANDLE(GCHandle); *gc = defaultGC; FINISHED(taskData, GCHandle); debugRefer(GC,defaultGC->gid); object->type = TAGGED(X_GC); object->gc = gc; object->ds = DEREFDISPLAYHANDLE(dsHandle); /* object->font_object = 0; object->tile = 0; object->stipple = 0; object->clipMask = 0; */ return AddXObject(objectHandle); /* must stay MUTABLE */ } } static void ChangeGC(TaskData *taskData, X_GC_Object *G, unsigned n, PolyWord P) { XGCValues v; unsigned mask = 1 << n; switch(mask) { case GCFunction: v.function = get_C_ushort(taskData, P); break; case GCPlaneMask: v.plane_mask = get_C_ulong (taskData, P); break; case GCForeground: v.foreground = get_C_ulong (taskData, P); break; case GCBackground: v.background = get_C_ulong (taskData, P); break; case GCLineWidth: v.line_width = get_C_short (taskData, P); break; case GCLineStyle: v.line_style = get_C_ushort(taskData, P); break; case GCCapStyle: v.cap_style = get_C_ushort(taskData, P); break; case GCJoinStyle: v.join_style = get_C_ushort(taskData, P); break; case GCFillStyle: v.fill_style = get_C_ushort(taskData, P); break; case GCFillRule: v.fill_rule = get_C_ushort(taskData, P); break; case GCTileStipXOrigin: v.ts_x_origin = get_C_short (taskData, P); break; case GCTileStipYOrigin: v.ts_y_origin = get_C_short (taskData, P); break; case GCSubwindowMode: v.subwindow_mode = get_C_ushort(taskData, P); break; case GCGraphicsExposures: v.graphics_exposures = get_C_ushort(taskData, P); break; case GCClipXOrigin: v.clip_x_origin = get_C_short (taskData, P); break; case GCClipYOrigin: v.clip_y_origin = get_C_short (taskData, P); break; case GCDashOffset: v.dash_offset = get_C_ushort(taskData, P); break; case GCDashList: v.dashes = get_C_uchar (taskData, P); break; case GCArcMode: v.arc_mode = get_C_ushort(taskData, P); break; case GCFont: v.font = GetFont(taskData, (X_Object *)P.AsObjPtr()); G->font_object = FontObject((X_Object *)P.AsObjPtr()); break; case GCTile: v.tile = GetPixmap(taskData, (X_Object *)P.AsObjPtr()); G->tile = PixmapObject((X_Object *)P.AsObjPtr()); break; case GCStipple: v.stipple = GetPixmap(taskData, (X_Object *)P.AsObjPtr()); G->stipple = PixmapObject((X_Object *)P.AsObjPtr()); break; case GCClipMask: v.clip_mask = GetPixmap(taskData, (X_Object *)P.AsObjPtr()); G->clipMask = PixmapObject((X_Object *)P.AsObjPtr()); break; default: Crash ("Bad gc mask %u",mask); } XChangeGC(GetDisplay(taskData, (X_Object *)G),GetGC(taskData, (X_Object *)G),mask,&v); } static Handle CreateGC ( TaskData *taskData, Handle dsHandle /* Handle to (X_Display_Object *) */, Drawable w ) { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_GC_Object), F_MUTABLE_BIT); Handle GCHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_GC_Object *object = (X_GC_Object *)DEREFHANDLE(objectHandle); GC *gc = (GC *)DEREFHANDLE(GCHandle); *gc = XCreateGC(DEREFDISPLAYHANDLE(dsHandle)->display,w,0,0); FINISHED(taskData, GCHandle); debugCreate(GC,(*gc)->gid); object->type = TAGGED(X_GC); object->gc = gc; object->ds = DEREFDISPLAYHANDLE(dsHandle); /* object->font_object = 0; object->tile = 0; object->stipple = 0; object->clipMask = 0; */ return AddXObject(objectHandle); /* must remain MUTABLE */ } /******************************************************************************/ /* */ /* Window */ /* */ /******************************************************************************/ static X_Window_Object *WindowObject(X_Object *P) { assert(UNTAGGED(P->type) == X_Window); return (X_Window_Object *)P; } static Window GetWindow(TaskData *taskData, X_Object *P) { if (UNTAGGED(P->type) == X_Pixmap) { if (*((X_Pixmap_Object*)P)->pixmap == None) return None; RaiseXWindows(taskData, "Not a window"); } assert(UNTAGGED(P->type) == X_Window); CheckExists(P,window); return *(((X_Window_Object*)P)->drawable); } static Handle EmptyWindow ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w ) { X_Window_Object *W = FindWindow(dsHandle,w); if (W) { return SAVE(W); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Window_Object), F_MUTABLE_BIT); Handle eventMaskHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); Handle drawableHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Window_Object *object = DEREFWINDOWHANDLE(objectHandle); Drawable *drawable = (Drawable *)DEREFHANDLE(drawableHandle); PolyObject *eventMask = DEREFHANDLE(eventMaskHandle); *drawable = w; FINISHED(taskData, drawableHandle); #ifdef nodef /* DCJM: This gets in the way of trying to handle ButtonPress events - get rid of it. */ /* so that Motif windows get ButtonClick XEvent structures */ eventMask->Set(0, PolyWord::FromUnsigned(ButtonClickMask)); /* eventMask must remain MUTABLE */ #else eventMask->Set(0, PolyWord::FromUnsigned(0)); #endif object->type = TAGGED(X_Window); object->drawable = drawable; object->handler = TAGGED(0); object->state = TAGGED(0); object->eventMask = eventMask; /* object->colormap_object = 0; object->cursor_object = 0; object->backgroundPixmap = 0; object->borderPixmap = 0; object->parent = 0; */ object->ds = DEREFDISPLAYHANDLE(dsHandle); debugRefer(Window,w); return AddXObject(objectHandle); /* must remain MUTABLE */ } } /******************************************************************************/ /* */ /* Pixmap */ /* */ /******************************************************************************/ static X_Pixmap_Object *PixmapObject(X_Object *P) { assert(UNTAGGED(P->type) == X_Pixmap); return (X_Pixmap_Object *)P; } static Pixmap GetPixmap(TaskData *taskData, X_Object *P) { if (UNTAGGED(P->type) == X_Window) { if (! ResourceExists(P)) { debug1("Non-existent window %lx\n",(long)P); } if (*(((X_Window_Object*)P)->drawable) == None) return None; RaiseXWindows(taskData, "Not a pixmap"); } assert(UNTAGGED(P->type) == X_Pixmap); /* val NoDrawable = xcall (20,0) : Drawable; */ /* val ParentRelative = xcall (20,1) : Drawable; */ /* special case for NoDrawable */ if (*((X_Pixmap_Object*)P)->pixmap == 0) return None; /* special case for ParentRelative */ if (*((X_Pixmap_Object*)P)->pixmap == 1) return None; CheckExists(P,pixmap); return *(((X_Pixmap_Object*)P)->pixmap); } static Handle EmptyPixmap ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Pixmap id ) { X_Pixmap_Object *E = FindPixmap(dsHandle,id); if (E) { return SAVE(E); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Pixmap_Object), F_MUTABLE_BIT); Handle pixmapHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Pixmap_Object *object = (X_Pixmap_Object *)DEREFHANDLE(objectHandle); Pixmap *pixmap = (Pixmap *)DEREFHANDLE(pixmapHandle); *pixmap = id; FINISHED(taskData, pixmapHandle); object->type = TAGGED(X_Pixmap); object->pixmap = pixmap; object->ds = DEREFDISPLAYHANDLE(dsHandle); debugCreate(Pixmap,id); return AddXObject(FINISHED(taskData, objectHandle)); } } /******************************************************************************/ /* */ /* Drawable */ /* */ /******************************************************************************/ static Drawable GetDrawable(TaskData *taskData, X_Object *P) { CheckExists(P,drawable); switch(UNTAGGED(P->type)) { case X_Window: return *(((X_Window_Object*)P)->drawable); case X_Pixmap: return *(((X_Pixmap_Object*)P)->pixmap); default: Crash ("Bad X_Object type (%d) in GetDrawable",UNTAGGED(P->type)); } /*NOTREACHED*/ } /******************************************************************************/ /* */ /* DS / Display */ /* */ /******************************************************************************/ static Handle GetDS(TaskData *taskData, X_Object *P) { X_Display_Object *ds; CheckExists(P,resource); switch(UNTAGGED(P->type)) { case X_GC: ds = ((X_GC_Object*)P)->ds; break; case X_Font: ds = ((X_Font_Object*)P)->ds; break; case X_Cursor: ds = ((X_Cursor_Object*)P)->ds; break; case X_Window: ds = ((X_Window_Object*)P)->ds; break; case X_Pixmap: ds = ((X_Pixmap_Object*)P)->ds; break; case X_Colormap: ds = ((X_Colormap_Object*)P)->ds; break; case X_Visual: ds = ((X_Visual_Object*)P)->ds; break; case X_Widget: ds = ((X_Widget_Object*)P)->ds; break; case X_Display: ds = (X_Display_Object*)P; break; /* i.e. P cast to the right type */ default: Crash ("Bad X_Object type (%d) in GetDS",UNTAGGED(P->type)); } assert((PolyWord)ds != TAGGED(0)); return SAVE(ds); } static Display *GetDisplay(TaskData *taskData, X_Object *P) { CheckExists(P,resource); switch(UNTAGGED(P->type)) { case X_GC: return ((X_GC_Object*)P)->ds->display; case X_Font: return ((X_Font_Object*)P)->ds->display; case X_Cursor: return ((X_Cursor_Object*)P)->ds->display; case X_Window: return ((X_Window_Object*)P)->ds->display; case X_Pixmap: return ((X_Pixmap_Object*)P)->ds->display; case X_Colormap: return ((X_Colormap_Object*)P)->ds->display; case X_Visual: return ((X_Visual_Object*)P)->ds->display; case X_Widget: return ((X_Widget_Object*)P)->ds->display; case X_Display: return ((X_Display_Object*)P)->display; default: Crash ("Bad X_Object type (%d) in GetDisplay",UNTAGGED(P->type)); } /*NOTREACHED*/ } /******************************************************************************/ /* */ /* FS / Font */ /* */ /******************************************************************************/ static Font GetFont(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Font); /* val NoFont = xcall (22,0) : Font; */ /* special case for NoFont - valid(?) */ if (*(((X_Font_Object *)P)->font) == None) return None; CheckExists(P,font); return *(((X_Font_Object *)P)->font); } static Handle EmptyFont ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Font id, XFontStruct *fs ) { X_Font_Object *E = FindFont(dsHandle,id); if (E && (fs == NULL || *(E->fs) == fs)) { return SAVE(E); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Font_Object), F_MUTABLE_BIT); Handle fontHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); Handle FSHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Font_Object *object = (X_Font_Object *)DEREFHANDLE(objectHandle); Font *font = (Font *)DEREFHANDLE(fontHandle); XFontStruct **xfstr = (XFontStruct **)DEREFHANDLE(FSHandle); *font = id; FINISHED(taskData, fontHandle); *xfstr = fs; FINISHED(taskData, FSHandle); object->type = TAGGED(X_Font); object->font = font; object->fs = xfstr; object->ds = DEREFDISPLAYHANDLE(dsHandle); debugCreate(Font,id); return AddXObject(FINISHED(taskData, objectHandle)); } } /******************************************************************************/ /* */ /* Cursor */ /* */ /******************************************************************************/ static X_Cursor_Object *CursorObject(X_Object *P) { assert(UNTAGGED(P->type) == X_Cursor); return (X_Cursor_Object *)P; } static Cursor GetCursor(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Cursor); /* val NoCursor = xcall (21,0) : Cursor; */ /* special case for NoCursor */ if (*(((X_Cursor_Object *)P)->cursor) == None) return None; CheckExists(P,cursor); return *(((X_Cursor_Object *)P)->cursor); } static Handle EmptyCursor ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Cursor id ) { X_Cursor_Object *E = FindCursor(dsHandle,id); if (E) { return SAVE(E); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Cursor_Object), F_MUTABLE_BIT); Handle cursorHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Cursor_Object *object = (X_Cursor_Object *)DEREFHANDLE(objectHandle); Cursor *cursor = (Cursor *)DEREFHANDLE(cursorHandle); *cursor = id; FINISHED(taskData, cursorHandle); object->type = TAGGED(X_Cursor); object->cursor = cursor; object->ds = DEREFDISPLAYHANDLE(dsHandle); debugRefer(Cursor,id); return AddXObject(FINISHED(taskData, objectHandle)); } } static Handle CreateFontCursor ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ unsigned shape ) { return EmptyCursor(taskData, dsHandle,XCreateFontCursor(DEREFDISPLAYHANDLE(dsHandle)->display,shape)); } static Handle CreateGlyphCursor ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Font sf, Font mf, unsigned sc, unsigned mc, XColor *foreground, XColor *background ) { return EmptyCursor(taskData, dsHandle,XCreateGlyphCursor(DEREFDISPLAYHANDLE(dsHandle)->display,sf,mf,sc,mc,foreground,background)); } static Handle CreatePixmapCursor ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Pixmap source, Pixmap mask, XColor *foreground, XColor *background, unsigned x, unsigned y ) { return EmptyCursor(taskData, dsHandle,XCreatePixmapCursor(DEREFDISPLAYHANDLE(dsHandle)->display,source,mask,foreground,background,x,y)); } /******************************************************************************/ /* */ /* Widget */ /* */ /******************************************************************************/ static Widget GetNWidget(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Widget); if (*(((X_Widget_Object *)P)->widget) == NULL) return NULL; CheckExists(P,widget); return *(((X_Widget_Object *)P)->widget); } static Widget GetWidget(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Widget); if (*(((X_Widget_Object *)P)->widget) == NULL) { RaiseXWindows(taskData, "Not a real widget"); } CheckExists(P,widget); return *(((X_Widget_Object *)P)->widget); } /* added 6/11/94 SPF */ static Widget GetRealizedWidget(TaskData *taskData, char *where, X_Object *P) { Widget w; assert(UNTAGGED(P->type) == X_Widget); w = *(((X_Widget_Object *)P)->widget); if (w == NULL) { RaiseXWindows2(where,": not a real widget"); } CheckExists(P,widget); if (XtIsRealized(w) == False) { RaiseXWindows2(where,": widget is not realized"); } return w; } /* P is a pointer to an X_Widget_Object */ static X_Widget_Object *WidgetObjectToken(X_Object *P) { assert(UNTAGGED(P->type) == X_Widget); return (X_Widget_Object *)P; } /* P is a pointer to an X_Widget_Object, which is bound to a C widget */ static X_Widget_Object *WidgetObject(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Widget); CheckExists(P,widget); return (X_Widget_Object *)P; } static Handle EmptyWidget ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget id ) { X_Widget_Object *E = FindWidget(id); if (E) { return SAVE(E); } else { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Widget_Object), F_MUTABLE_BIT); Handle widgetHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Widget_Object *object = (X_Widget_Object *)DEREFHANDLE(objectHandle); Widget *widget = (Widget *)DEREFHANDLE(widgetHandle); *widget = id; FINISHED(taskData, widgetHandle); object->type = TAGGED(X_Widget); object->widget = widget; object->callbackList = ListNull; object->state = TAGGED(0); object->ds = DEREFDISPLAYHANDLE(dsHandle); debugRefer(Widget,id); return AddXObject(objectHandle); /* Must stay MUTABLE */ } } static Handle NewWidget ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget id ) { X_Widget_Object *E = FindWidget(id); if (E) DestroyXObject((X_Object *)E); return EmptyWidget(taskData, dsHandle,id); } /******************************************************************************/ /* */ /* Text Widgets */ /* */ /******************************************************************************/ static Widget GetTextWidget(TaskData *taskData, char *funcname, X_Object *P) { Widget w = GetWidget(taskData, P); if (XmIsText(w)) return w; /* Text operations are also legal on TextField widgets */ if (XmIsTextField(w)) return w; RaiseXWindows2(funcname,": not a Text or TextField widget"); /*NOTREACHED*/ } /******************************************************************************/ /* */ /* TextField Widgets */ /* */ /******************************************************************************/ static Widget GetTextFieldWidget(TaskData *taskData, char *funcname, X_Object *P) { Widget w = GetWidget(taskData, P); if (XmIsTextField(w)) return w; RaiseXWindows2(funcname,": not a TextField widget"); /*NOTREACHED*/ } /******************************************************************************/ /* */ /* List Widgets */ /* */ /******************************************************************************/ static Widget GetListWidget(TaskData *taskData, char *funcname, X_Object *P) { Widget w = GetWidget(taskData, P); if (XmIsList(w)) return w; RaiseXWindows2(funcname,": not a List widget"); /*NOTREACHED*/ } /******************************************************************************/ /* */ /* Window */ /* */ /******************************************************************************/ static void RemoveWindowEvents(Display *d, Window w) { XEvent event; XSync(d,False); while(XCheckWindowEvent(d,w,~0,&event)) { /* do nothing */ } } static Handle AddWindow ( TaskData *taskData, Window W, Handle handlerHandle, /* Handle to (PolyWord *) (?) */ Handle stateHandle, /* Handle to (PolyWord *) (?) */ Handle parentHandle /* Handle to (X_Window_Object *) */ ) { XWMHints hints; Atom deleteWindow; /* was int SPF 6/1/94 */ Display *d = GetDisplay(taskData, DEREFXOBJECTHANDLE(parentHandle)); Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Window_Object), F_MUTABLE_BIT); Handle eventMaskHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); Handle drawableHandle = alloc_and_save(taskData, 1, F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Window_Object *object = DEREFWINDOWHANDLE(objectHandle); Drawable *drawable = (Drawable *)DEREFHANDLE(drawableHandle); PolyObject *eventMask = DEREFHANDLE(eventMaskHandle); eventMask->Set(0, PolyWord::FromUnsigned(0)); /* eventMask must remain MUTABLE */ *drawable = W; FINISHED(taskData, drawableHandle); hints.flags = InputHint; hints.input = True; XSetWMHints(d,W,&hints); deleteWindow = WM_DELETE_WINDOW(d); if (deleteWindow != None) XSetWMProtocols(d,W,&deleteWindow,1); debugCreate(Window,W); object->type = TAGGED(X_Window); object->drawable = drawable; object->eventMask = eventMask; object->handler = DEREFHANDLE(handlerHandle); object->state = DEREFHANDLE(stateHandle); object->parent = DEREFWINDOWHANDLE(parentHandle); object->ds = DEREFWINDOWHANDLE(parentHandle)->ds; /* Tidy up (?) */ /* object->colormap_object = 0; object->cursor_object = 0; object->backgroundPixmap = 0; object->borderPixmap = 0; */ if (ISNIL(DEREFHANDLE(handlerHandle))) Crash ("No handler set"); return AddXObject(objectHandle); /* object must remain MUTABLE */ } static void DestroyWindow(X_Object *W /* Should be a Window Object! */) { TaskData *taskData = processes->GetTaskDataForThread(); Window w = GetWindow(taskData, W); Display *d = GetDisplay(taskData, W); debugReclaim(Window,w); XUnmapWindow(d,w); DestroySubwindows(W); XDestroyWindow(d,w); RemoveWindowEvents(d,w); } static Handle CreateSimpleWindow ( TaskData *taskData, Handle parent, /* Handle to (X_Window_Object *) */ int x, int y, unsigned w, unsigned h, unsigned borderWidth, unsigned border, unsigned background, Handle handler, /* Handle to (PolyWord *) (?) */ Handle state /* Handle to (PolyWord *) (?) */ ) { Window W = XCreateSimpleWindow(GetDisplay(taskData, DEREFXOBJECTHANDLE(parent)), GetWindow(taskData, DEREFXOBJECTHANDLE(parent)), x,y,w,h, borderWidth,border,background); if (W == 0) RaiseXWindows(taskData, "XCreateSimpleWindow failed"); return AddWindow(taskData,W,handler,state,parent); } static Handle CreateWindow ( TaskData *taskData, Handle parent, /* Handle to (X_Window_Object *) */ int x, int y, unsigned w, unsigned h, unsigned borderWidth, unsigned depth, unsigned clas, Visual *visual, Handle handler, /* Handle to (PolyWord *) (?) */ Handle state /* Handle to (PolyWord *) (?) */ ) { Window W; W = XCreateWindow(GetDisplay(taskData, DEREFXOBJECTHANDLE(parent)), GetWindow(taskData, DEREFXOBJECTHANDLE(parent)), x,y,w,h, borderWidth,depth,clas,visual,0,0); if (W == 0) RaiseXWindows(taskData, "XCreateWindow failed"); return AddWindow(taskData,W,handler,state,parent); } static void DestroySubwindows(X_Object *W /* should be a Window object! */) { TaskData *taskData = processes->GetTaskDataForThread(); Window root,parent,*children; unsigned n; int s; Window w = GetWindow(taskData, W); Display *d = GetDisplay(taskData, W); s = XQueryTree(d,w,&root,&parent,&children,&n); if (s == 0) { RaiseXWindows(taskData, "XDestroySubwindows failed"); return; } XUnmapSubwindows(d,w); if (n) { Handle dsHandle = GetDS(taskData, W); while(n--) { X_Window_Object *child = FindWindow(dsHandle,children[n]); if (child) DestroyXObject((X_Object *)child); } XFree((char *)children); } XDestroySubwindows(d,w); } /******************************************************************************/ /* */ /* Translations / Accelerators */ /* */ /******************************************************************************/ static Handle EmptyTrans(TaskData *taskData, XtTranslations table) { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Trans_Object), F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Trans_Object *object = (X_Trans_Object *)DEREFHANDLE(objectHandle); /* OK to store C values because this is a byte object */ object->type = TAGGED(X_Trans); object->table = table; debugRefer(Trans,table); return AddXObject(FINISHED(taskData, objectHandle)); } static XtTranslations GetTrans(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Trans); CheckExists(P,trans); return ((X_Trans_Object *)P)->table; } static Handle EmptyAcc(TaskData *taskData, XtTranslations acc) { Handle objectHandle = alloc_and_save(taskData, SIZEOF(X_Acc_Object), F_MUTABLE_BIT|F_BYTE_OBJ); /* Must do all allocations before we do the first dereference */ X_Acc_Object *object = (X_Acc_Object *)DEREFHANDLE(objectHandle); /* OK to store C values because this is a byte object */ object->type = TAGGED(X_Acc); object->acc = acc; debugRefer(Acc,acc); return AddXObject(FINISHED(taskData, objectHandle)); } static XtAccelerators GetAcc(TaskData *taskData, X_Object *P) { assert(UNTAGGED(P->type) == X_Acc); CheckExists(P,acc); return ((X_Acc_Object *)P)->acc; } /******************************************************************************/ /* */ /* Utility functions */ /* */ /******************************************************************************/ static XtGrabKind GetXtGrabKind(TaskData *taskData, PolyWord P) { int i = get_C_long(taskData, P); /* This encoding must be the same as that used in Motif/ml_bind.ML */ switch (i) { case 0: return XtGrabNone; case 1: return XtGrabNonexclusive; case 2: return XtGrabExclusive; default: Crash ("Bad XtGrabKind index (%d) in GetXtGrabKind",i); } return XtGrabNone; /* to keep lint/gcc happy */ } /******************************************************************************/ /* */ /* MLXStandardColormap - implements ML XStandardColormap datatype */ /* */ /******************************************************************************/ typedef struct { X_Colormap_Object *Colormap; PolyWord redMax; /* ML int */ PolyWord redMult; /* ML int */ PolyWord greenMax; /* ML int */ PolyWord greenMult; /* ML int */ PolyWord blueMax; /* ML int */ PolyWord blueMult; /* ML int */ PolyWord basePixel; /* ML int */ X_Visual_Object *visual; } MLXStandardColormap; static void GetStandardColormap(TaskData *taskData, PolyWord p, void *v, unsigned) { MLXStandardColormap *P = (MLXStandardColormap *)p.AsObjPtr(); XStandardColormap *s = (XStandardColormap *)v; s->colormap = GetColormap(taskData, (X_Object *)P->Colormap); s->red_max = get_C_ulong(taskData, P->redMax); s->red_mult = get_C_ulong(taskData, P->redMult); s->green_max = get_C_ulong(taskData, P->greenMax); s->green_mult = get_C_ulong(taskData, P->greenMult); s->blue_max = get_C_ulong(taskData, P->blueMax); s->blue_mult = get_C_ulong(taskData, P->blueMult); s->base_pixel = get_C_ulong(taskData, P->basePixel); s->visualid = GetVisual(taskData, (X_Object *)P->visual)->visualid; /* UNSAFE(?) */ s->killid = None; } static Handle CreateStandardColormap ( TaskData *taskData, void *v, Handle dsHandle /* Handle to (X_Display_Object *) */ ) { XStandardColormap *s = (XStandardColormap *)v; XVisualInfo T; XVisualInfo *info; int count; Handle tupleHandle = alloc_and_save(taskData, SIZEOF(MLXStandardColormap), F_MUTABLE_BIT); T.visualid = s->visualid; T.visual = None; info = XGetVisualInfo(DEREFDISPLAYHANDLE(dsHandle)->display,VisualIDMask,&T,&count); if (info) { T.visual = info->visual; XFree((char *)info); } /* Still allocating, so must use explicit DEREF for each element */ #define tuple /* hack */((MLXStandardColormap *)DEREFHANDLE(tupleHandle)) tuple->Colormap = (X_Colormap_Object *)DEREFHANDLE(EmptyColormap(taskData, dsHandle,s->colormap)); tuple->redMax = DEREFWORD(Make_arbitrary_precision(taskData, s->red_max)); tuple->redMult = DEREFWORD(Make_arbitrary_precision(taskData, s->red_mult)); tuple->greenMax = DEREFWORD(Make_arbitrary_precision(taskData, s->green_max)); tuple->greenMult = DEREFWORD(Make_arbitrary_precision(taskData, s->green_mult)); tuple->blueMax = DEREFWORD(Make_arbitrary_precision(taskData, s->blue_max)); tuple->blueMult = DEREFWORD(Make_arbitrary_precision(taskData, s->blue_mult)); tuple->basePixel = DEREFWORD(Make_arbitrary_precision(taskData, s->base_pixel)); tuple->visual = (X_Visual_Object *)DEREFHANDLE(EmptyVisual(taskData, dsHandle,T.visual)); #undef tuple return FINISHED(taskData, tupleHandle); } /******************************************************************************/ /* */ /* Polymorphic pairs */ /* */ /******************************************************************************/ class MLPair: public PolyObject { public: PolyWord x0; /* first value */ PolyWord x1; /* second value */ }; /* Polymorphic pair creation */ static Handle CreatePair(TaskData *taskData, Handle p1, Handle p2) { Handle pairHandle = alloc_and_save(taskData, SIZEOF(MLPair), F_MUTABLE_BIT); /* Still allocating, so must use explicit DEREF for each element */ #define pair ((MLPair *)DEREFHANDLE(pairHandle)) pair->x0 = DEREFWORD(p1); pair->x1 = DEREFWORD(p2); #undef pair return FINISHED(taskData, pairHandle); } /******************************************************************************/ /* */ /* Polymorphic triples */ /* */ /******************************************************************************/ class MLTriple: public PolyObject { public: PolyWord x0; /* first value */ PolyWord x1; /* second value */ PolyWord x2; /* third value */ }; inline PolyWord FST(PolyWord P) { return ((MLTriple*)P.AsObjPtr())->x0; } inline PolyWord SND(PolyWord P) { return ((MLTriple*)P.AsObjPtr())->x1; } inline PolyWord THIRD(PolyWord P) { return ((MLTriple*)P.AsObjPtr())->x2; } static Handle CreateTriple(TaskData *taskData, Handle p1, Handle p2, Handle p3) { Handle tripleHandle = alloc_and_save(taskData, SIZEOF(MLTriple), F_MUTABLE_BIT); /* Still allocating, so must use explicit DEREF for each element */ #define triple ((MLTriple *)DEREFHANDLE(tripleHandle)) triple->x0 = DEREFWORD(p1); triple->x1 = DEREFWORD(p2); triple->x2 = DEREFWORD(p3); #undef triple return FINISHED(taskData, tripleHandle); } /******************************************************************************/ /* */ /* MLXImage - Implements ML XImage datatype */ /* */ /******************************************************************************/ typedef struct { PolyWord data; /* ML (abstype containing) string */ PolyWord size; /* MLXRectangle * */ PolyWord depth; /* ML int */ PolyWord format; /* (short ML int) XYBitmap | XYPixmap | ZPixmap */ PolyWord xoffset; /* ML int */ PolyWord bitmapPad; /* ML int */ PolyWord byteOrder; /* (short ML int) LSBFirst | MSBFirst */ PolyWord bitmapUnit; /* ML int */ PolyWord bitsPerPixel; /* ML int */ PolyWord bytesPerLine; /* ML int */ PolyWord visualRedMask; /* ML int */ PolyWord bitmapBitOrder; /* (short ML int) LSBFirst | MSBFirst */ PolyWord visualBlueMask; /* ML int */ PolyWord visualGreenMask; /* ML int */ } MLXImage; #define MLImageFormat(n) (n+1) #define MLImageOrder(n) (n+1) #define CImageFormat(n) (n-1) #define CImageOrder(n) (n-1) static unsigned ImageBytes(XImage *image) { unsigned dsize = image->bytes_per_line * image->height; if (image->format == XYPixmap) dsize = dsize * image->depth; return dsize; } static XImage *GetXImage(TaskData *taskData, Display *d, PolyWord p) /* can only be called once per X opcode */ { MLXImage *I = (MLXImage *)p.AsObjPtr(); static XImage image = { 0 }; PolyStringObject *data = GetString(I->data); unsigned width = GetRectW(taskData, I->size); unsigned height = GetRectH(taskData, I->size); unsigned depth = get_C_ulong(taskData, I->depth); unsigned format = get_C_ulong(taskData, I->format); int xoffset = get_C_short(taskData, I->xoffset); int bitmapPad = get_C_short(taskData, I->bitmapPad); int bytesPerLine = get_C_long (taskData, I->bytesPerLine); unsigned byteOrder = get_C_ulong(taskData, I->byteOrder); unsigned bitmapUnit = get_C_ulong(taskData, I->bitmapUnit); unsigned bitsPerPixel = get_C_ulong(taskData, I->bitsPerPixel); unsigned bitmapBitOrder = get_C_ulong(taskData, I->bitmapBitOrder); format = CImageFormat(format); byteOrder = CImageOrder(byteOrder); bitmapBitOrder = CImageOrder(bitmapBitOrder); image.width = width; image.height = height; image.xoffset = xoffset; image.format = format; image.data = data->chars; image.byte_order = byteOrder; image.bitmap_unit = bitmapUnit; image.bitmap_bit_order = bitmapBitOrder; image.bitmap_pad = bitmapPad; image.depth = depth; image.bytes_per_line = bytesPerLine; image.bits_per_pixel = bitsPerPixel; image.red_mask = get_C_ulong(taskData, I->visualRedMask); image.green_mask = get_C_ulong(taskData, I->visualGreenMask); image.blue_mask = get_C_ulong(taskData, I->visualBlueMask); if (ImageBytes(&image) != data->length) RaiseXWindows(taskData, "Bad image string length"); return ℑ } static Handle CreateImage(TaskData *taskData, XImage *image) { Handle XHandle = alloc_and_save(taskData, SIZEOF(MLXImage), F_MUTABLE_BIT); int dsize = ImageBytes(image); /* Still allocating, so must use explicit DEREF for each element */ #define X ((MLXImage *)DEREFHANDLE(XHandle)) X->data = C_string_to_Poly(taskData, image->data,dsize); X->size = DEREFWORD(CreateArea(image->width,image->height)); X->depth = DEREFWORD(Make_arbitrary_precision(taskData, image->depth)); X->format = DEREFWORD(Make_arbitrary_precision(taskData, MLImageFormat(image->format))); X->xoffset = DEREFWORD(Make_int(image->xoffset)); X->bitmapPad = DEREFWORD(Make_int(image->bitmap_pad)); X->byteOrder = DEREFWORD(Make_arbitrary_precision(taskData, MLImageOrder(image->byte_order))); X->bitmapUnit = DEREFWORD(Make_arbitrary_precision(taskData, image->bitmap_unit)); X->bitsPerPixel = DEREFWORD(Make_arbitrary_precision(taskData, image->bits_per_pixel)); X->bytesPerLine = DEREFWORD(Make_int(image->bytes_per_line)); X->visualRedMask = DEREFWORD(Make_arbitrary_precision(taskData, image->red_mask)); X->bitmapBitOrder = DEREFWORD(Make_arbitrary_precision(taskData, MLImageOrder(image->bitmap_bit_order))); X->visualBlueMask = DEREFWORD(Make_arbitrary_precision(taskData, image->blue_mask)); X->visualGreenMask = DEREFWORD(Make_arbitrary_precision(taskData, image->green_mask)); #undef X XDestroyImage(image); return FINISHED(taskData, XHandle); } static Handle GetImage ( TaskData *taskData, Display *d, Drawable drawable, int x, int y, unsigned w, unsigned h, unsigned /* long */ mask, int format ) { XImage *image = XGetImage(d,drawable,x,y,w,h,mask,CImageFormat(format)); if (image == 0) RaiseXWindows(taskData, "XGetImage failed"); return CreateImage(taskData, image); } static Handle SubImage ( TaskData *taskData, XImage *image, int x, int y, unsigned w, unsigned h ) { XImage *subimage = XSubImage(image,x,y,w,h); if (subimage == 0) RaiseXWindows(taskData, "XSubImage failed"); return CreateImage(taskData, subimage); } /******************************************************************************/ /* */ /* XImage */ /* */ /******************************************************************************/ static void GetSubImage ( Display *d, Drawable drawable, int sx, int sy, unsigned sw, unsigned sh, unsigned /* long */ mask, int format, XImage *image, int dx, int dy ) { XGetSubImage(d,drawable,sx,sy,sw,sh,mask,CImageFormat(format),image,dx,dy); /* XFree((char *)image); */ } static void PutImage ( Display *d, Drawable drawable, GC gc, XImage *image, int sx, int sy, int dx, int dy, unsigned dw, unsigned dh ) { XPutImage(d,drawable,gc,image,sx,sy,dx,dy,dw,dh); /* XFree((char *)image); */ } static Handle GetPixel(TaskData *taskData, XImage *image, int x, int y) { unsigned pixel = XGetPixel(image,x,y); /* XFree((char *)image); */ return Make_arbitrary_precision(taskData, pixel); } static void PutPixel(XImage *image, int x, int y, unsigned pixel) { XPutPixel(image,x,y,pixel); /* XFree((char *)image); */ } static void AddPixel(XImage *image, unsigned value) { XAddPixel(image,value); /* XFree((char *)image); */ } /******************************************************************************/ /* */ /* TimeVal */ /* */ /******************************************************************************/ static int DoubleClickTime = 250; /* Double click time in milliseconds */ static int MouseDrift = 5; /* Mouse movement allowed in button events */ static void NormaliseTime(TimeVal *t) { while(t->tv_usec >= 1000000) { t->tv_usec -= 1000000; t->tv_sec++; } while(t->tv_usec < 0) { t->tv_usec += 1000000; t->tv_sec--; } } static void TimeAdd(TimeVal *a, TimeVal *b, TimeVal *t) { t->tv_sec = a->tv_sec + b->tv_sec; t->tv_usec = a->tv_usec + b->tv_usec; NormaliseTime(t); } static int TimeLt(TimeVal *a, TimeVal *b) { return ((a->tv_sec < b->tv_sec) || ((a->tv_sec == b->tv_sec) && (a->tv_usec < b->tv_usec))); } static int TimeLeq(TimeVal *a, TimeVal *b) { return ((a->tv_sec < b->tv_sec) || ((a->tv_sec == b->tv_sec) && (a->tv_usec <= b->tv_usec))); } /******************************************************************************/ /* */ /* (?) */ /* */ /******************************************************************************/ typedef struct { XButtonEvent *button; /* initial button press event */ int up,down; /* count of button transitions */ } PredicateArgs; static Bool SameClickEvent(Display *dpy, XEvent *ev, XPointer arg) { PredicateArgs *A = (PredicateArgs *)arg; switch(ev->type) { case MotionNotify: { int dx = ev->xmotion.x - A->button->x; int dy = ev->xmotion.y - A->button->y; if (ev->xmotion.window != A->button->window) return False; if (abs(dx) > MouseDrift) return False; if (abs(dy) > MouseDrift) return False; return True; } case ButtonPress: case ButtonRelease: { int dx = ev->xbutton.x - A->button->x; int dy = ev->xbutton.y - A->button->y; if (ev->xbutton.window != A->button->window) return False; if (ev->xbutton.button != A->button->button) return False; if (abs(dx) > MouseDrift) return False; if (abs(dy) > MouseDrift) return False; if (ev->type == ButtonPress) A->down++; else A->up++; return True; } } return False; } static void WaitDoubleClickTime(Handle dsHandle, PredicateArgs *A) { XEvent N; TimeVal start_time,end_time,dt; Display *d = DEREFDISPLAYHANDLE(dsHandle)->display; /* AIX doesn't document support for NULL pointers in the select call, so we have to initialise empty fd_sets instead. SPF 30/10/95 */ fd_set read_fds, write_fds, except_fds; FD_ZERO(&read_fds); FD_ZERO(&write_fds); FD_ZERO(&except_fds); { int fd = d->fd; assert (0 <= fd && fd < FD_SETSIZE); FD_SET(fd,&read_fds); } gettimeofday(&start_time, NULL); dt.tv_sec = 0; dt.tv_usec = DoubleClickTime * 1000; TimeAdd(&start_time,&dt,&end_time); for (;;) { int extended = 0; while(XCheckIfEvent(d,&N,SameClickEvent,(char *) A)) { if (DEREFDISPLAYHANDLE(dsHandle)->app_context) XtDispatchEvent(&N); extended = 1; } if (QLength(d)) break; /* some other event to be processed next */ if (extended) /* button event extended, so extend time period */ { dt.tv_sec = 0; dt.tv_usec = DoubleClickTime * 1000; TimeAdd(&end_time,&dt,&end_time); } if (TimeLeq(&end_time,&start_time)) break; /* the time period has elapsed */ select(FD_SETSIZE,&read_fds,&write_fds,&except_fds,&dt); gettimeofday(&start_time, NULL); } } static Handle GetKeyVector(TaskData *taskData, void *k, unsigned i) { uchar *keys = (uchar*)k; unsigned index = i / 8; unsigned mask = 1 << (i % 8); return Make_bool(keys[index] & mask); } static Handle QueryKeymap(TaskData *taskData, Display *d) { char keys[32]; XQueryKeymap(d, keys); return CreateList4I(taskData, 256,keys,0,GetKeyVector); } /******************************************************************************/ /* */ /* EventName */ /* */ /******************************************************************************/ typedef struct { const char *name; int type; } EventName; static EventName EventNames[] = { { "KeyPress",KeyPress }, { "KeyRelease",KeyRelease }, { "ButtonPress",ButtonPress }, { "ButtonRelease",ButtonRelease }, { "MotionNotify",MotionNotify }, { "EnterNotify",EnterNotify }, { "LeaveNotify",LeaveNotify }, { "FocusIn",FocusIn }, { "FocusOut",FocusOut }, { "KeymapNotify",KeymapNotify }, { "Expose",Expose }, { "GraphicsExpose",GraphicsExpose }, { "NoExpose",NoExpose }, { "VisibilityNotify",VisibilityNotify }, { "CreateNotify",CreateNotify }, { "DestroyNotify",DestroyNotify }, { "UnmapNotify",UnmapNotify }, { "MapNotify",MapNotify }, { "MapRequest",MapRequest }, { "ReparentNotify",ReparentNotify }, { "ConfigureNotify",ConfigureNotify }, { "ConfigureRequest",ConfigureRequest }, { "GravityNotify",GravityNotify }, { "ResizeRequest",ResizeRequest }, { "CirculateNotify",CirculateNotify }, { "CirculateRequest",CirculateRequest }, { "PropertyNotify",PropertyNotify }, { "SelectionClear",SelectionClear }, { "SelectionRequest",SelectionRequest }, { "SelectionNotify",SelectionNotify }, { "ColormapNotify",ColormapNotify }, { "ClientMessage",ClientMessage }, { "MappingNotify",MappingNotify }, }; #define NEVENTS (sizeof(EventNames)/sizeof(EventName)) static const char *DebugEventName(int type) { for(unsigned i = 0; i < NEVENTS; i++) { if (EventNames[i].type == type) return EventNames[i].name; } return "** BAD EVENT **"; } static int WM_PROTOCOLS(Display *d) { static int protocols = None; if (protocols == None) protocols = XInternAtom(d,"WM_PROTOCOLS",True); return protocols; } static Atom WM_DELETE_WINDOW(Display *d) { static Atom deleteWindow = None; if (deleteWindow == None) deleteWindow = XInternAtom(d,"WM_DELETE_WINDOW",True); return deleteWindow; } /******************************************************************************/ /* */ /* Structures used by CreateEvent function. */ /* */ /* These typedefs should correspond with the tuples used by MakeXKeyEvent etc */ /* */ /******************************************************************************/ typedef struct { X_Window_Object *root; X_Window_Object *subwindow; PolyWord time; /* ML int */ MLXPoint *pointer; MLXPoint *rootPointer; PolyWord modifiers; /* ML modifier (int) */ PolyWord keycode; /* ML int */ } ML_KeyEvent_Data; typedef struct { X_Window_Object *root; X_Window_Object *subwindow; PolyWord time; /* ML int */ MLXPoint *pointer; MLXPoint *rootPointer; PolyWord modifiers; /* ML modifier (int) */ PolyWord button; /* ML int */ } ML_ButtonEvent_Data; typedef struct { X_Window_Object *root; X_Window_Object *subwindow; PolyWord time; /* ML int */ MLXPoint *pointer; MLXPoint *rootPointer; PolyWord modifiers; /* ML modifier (int) */ PolyWord button; /* ML int */ PolyWord up; /* ML int */ PolyWord down; /* ML int */ } ML_ButtonClick_Data; typedef struct { X_Window_Object *root; X_Window_Object *subwindow; PolyWord time; /* ML int */ MLXPoint *pointer; MLXPoint *rootPointer; PolyWord modifiers; /* ML modifier (int) */ PolyWord isHint; /* ML bool */ } ML_MotionEvent_Data; typedef struct { X_Window_Object *root; X_Window_Object *subwindow; PolyWord time; /* ML int */ MLXPoint *pointer; MLXPoint *rootPointer; PolyWord mode; /* ? */ PolyWord detail; /* ? */ PolyWord focus; /* ? */ PolyWord modifiers; /* ML modifier (int) */ } ML_CrossingEvent_Data; typedef struct { MLXRectangle *region; PolyWord count; /* ML int */ } ML_ExposeEvent_Data; typedef struct { X_Window_Object *window; MLXPoint *position; MLXRectangle *size; PolyWord borderWidth; /* ML int */ X_Window_Object *above; PolyWord overrideRedirect; /* ML bool */ } ML_ConfigureNotify_Data; typedef struct { X_Window_Object *window; MLXPoint *position; MLXRectangle *size; PolyWord borderWidth; X_Window_Object *above; PolyWord detail; /* ? */ } ML_ConfigureRequest_Data; typedef struct { MLXRectangle *region; PolyWord count; /* ML int */ PolyWord code; /* ML int */ } ML_GraphicsExposeEvent_Data; typedef struct { PolyWord mode; /* ML int ? */ PolyWord detail; /* ML int ? */ } ML_FocusChangeEvent_Data; typedef struct { X_Window_Object *window; MLXPoint *position; MLXRectangle *size; PolyWord borderWidth; /* ML int */ PolyWord overrideRedirect; /* ML bool */ } ML_CreateEvent_Data; typedef struct { X_Window_Object *window; PolyWord fromConfigure; /* ML bool */ } ML_UnmapEvent_Data; typedef struct { X_Window_Object *window; PolyWord overrideRedirect; /* ML bool */ } ML_MapEvent_Data; typedef struct { X_Window_Object *window; X_Window_Object *parent; MLXPoint *position; PolyWord overrideRedirect; /* ML bool */ } ML_ReparentEvent_Data; typedef struct { X_Window_Object *window; MLXPoint *position; } ML_GravityEvent_Data; typedef struct { X_Window_Object *window; PolyWord place; } ML_CirculateEvent_Data; typedef struct { X_Colormap_Object *colormap_object; PolyWord c_new; /* ML bool */ PolyWord installed; /* ML bool */ } ML_ColormapEvent_Data; typedef struct { PolyWord selection; /* ML int */ PolyWord time; /* ML int */ } ML_SelectionClear_Data; typedef struct { X_Window_Object *requestor; PolyWord selection; /* ML int */ PolyWord target; /* ML int */ PolyWord property; /* ML int */ PolyWord time; /* ML int */ } ML_SelectionRequest_Data; typedef struct { PolyWord selection; /* ML int */ PolyWord target; /* ML int */ PolyWord property; /* ML int */ PolyWord time; /* ML int */ } ML_Selection_Data; class ML_Event: public PolyObject { public: PolyWord type; /* ML (?) */ PolyWord sendEvent; /* ML bool */ PolyWord window; /* X_Window_Object* */ PolyWord data; /* pointer to event-specific data, in ML_XXX_Data format */ PolyWord callbacks; /* ML list of something */ PolyWord events; /* ML list */ }; /******************************************************************************/ /* */ /* CreateEvent function */ /* */ /******************************************************************************/ static Handle CreateEvent ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ XEvent *ev, Handle W /* Handle to (X_Window_Object *) */ ) { Handle eventHandle = alloc_and_save(taskData, SIZEOF(ML_Event), F_MUTABLE_BIT); Display *d = DEREFDISPLAYHANDLE(dsHandle)->display; int type = ev->xany.type; int send_event = ev->xany.send_event; assert(d == ev->xany.display); if (debugOptions & DEBUG_X) { printf("CreateEvent called, type=%s,", DebugEventName(type)); printf(" window=%lx\n", ev->xany.window); } #define event ((ML_Event *)DEREFHANDLE(eventHandle)) event->type = DEREFWORD(Make_arbitrary_precision(taskData, type)); event->sendEvent = DEREFWORD(Make_bool(send_event)); event->window = DEREFWINDOWHANDLE(W); switch(type) { case KeyPress: case KeyRelease: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_KeyEvent_Data), F_MUTABLE_BIT); #define data ((ML_KeyEvent_Data *)DEREFHANDLE(dataHandle)) data->root = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xkey.root)); data->subwindow = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xkey.subwindow)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xkey.time)); data->pointer = (MLXPoint *)DEREFHANDLE(CreatePoint(taskData, ev->xkey.x,ev->xkey.y)); data->rootPointer = (MLXPoint *)DEREFHANDLE(CreatePoint(taskData, ev->xkey.x_root,ev->xkey.y_root)); data->modifiers = DEREFWORD(Make_arbitrary_precision(taskData, ev->xkey.state)); data->keycode = DEREFWORD(Make_arbitrary_precision(taskData, ev->xkey.keycode)); #undef data event->data = DEREFHANDLE(FINISHED(taskData, dataHandle)); break; } case ButtonPress: case ButtonRelease: { if (DEREFWINDOWHANDLE(W)->eventMask->Get(0).AsUnsigned() & ButtonClickMask) { Handle dataHandle; PredicateArgs A; A.button = &ev->xbutton; A.up = (ev->type == ButtonRelease); A.down = (ev->type == ButtonPress); WaitDoubleClickTime(dsHandle,&A); dataHandle = alloc_and_save(taskData, SIZEOF(ML_ButtonClick_Data), F_MUTABLE_BIT); #define data ((ML_ButtonClick_Data *)DEREFHANDLE(dataHandle)) data->root = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xbutton.root)); data->subwindow = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xbutton.subwindow)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.time)); data->pointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xbutton.x,ev->xbutton.y)); data->rootPointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xbutton.x_root,ev->xbutton.y_root)); data->modifiers = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.state)); data->button = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.button)); data->up = DEREFWORD(Make_arbitrary_precision(taskData, A.up)); data->down = DEREFWORD(Make_arbitrary_precision(taskData, A.down)); #undef data event->type = DEREFWORD(Make_arbitrary_precision(taskData, 42)); /* What's this for? */ event->data = DEREFWORD(FINISHED(taskData, dataHandle)); } else { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_ButtonEvent_Data), F_MUTABLE_BIT); #define data ((ML_ButtonEvent_Data *)DEREFHANDLE(dataHandle)) data->root = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xbutton.root)); data->subwindow = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xbutton.subwindow)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.time)); data->pointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xbutton.x,ev->xbutton.y)); data->rootPointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xbutton.x_root,ev->xbutton.y_root)); data->modifiers = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.state)); data->button = DEREFWORD(Make_arbitrary_precision(taskData, ev->xbutton.button)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); } break; } case MotionNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_MotionEvent_Data), F_MUTABLE_BIT); #define data ((ML_MotionEvent_Data *)DEREFHANDLE(dataHandle)) data->root = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xmotion.root)); data->subwindow = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xmotion.subwindow)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xmotion.time)); data->pointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xmotion.x,ev->xmotion.y)); data->rootPointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xmotion.x_root,ev->xmotion.y_root)); data->modifiers = DEREFWORD(Make_arbitrary_precision(taskData, ev->xmotion.state)); data->isHint = DEREFWORD(Make_arbitrary_precision(taskData, ev->xmotion.is_hint)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case EnterNotify: case LeaveNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_CrossingEvent_Data), F_MUTABLE_BIT); #define data ((ML_CrossingEvent_Data *)DEREFHANDLE(dataHandle)) data->root = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xcrossing.root)); data->subwindow = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xcrossing.subwindow)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xcrossing.time)); data->pointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xcrossing.x,ev->xcrossing.y)); data->rootPointer = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xcrossing.x_root,ev->xcrossing.y_root)); data->mode = DEREFWORD(Make_arbitrary_precision(taskData, ev->xcrossing.mode)); data->detail = DEREFWORD(Make_arbitrary_precision(taskData, ev->xcrossing.detail)); data->focus = DEREFWORD(Make_bool(ev->xcrossing.focus)); data->modifiers = DEREFWORD(Make_arbitrary_precision(taskData, ev->xcrossing.state)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case Expose: { int left = ev->xexpose.x; int top = ev->xexpose.y; int right = left + ev->xexpose.width; int bottom = top + ev->xexpose.height; Handle dataHandle; while(XCheckTypedWindowEvent(d,ev->xexpose.window,Expose,ev)) { int L = ev->xexpose.x; int T = ev->xexpose.y; int R = L + ev->xexpose.width; int B = T + ev->xexpose.height; assert(ev->type == Expose); left = min(left,L); top = min(top,T); right = max(right,R); bottom = max(bottom,B); } dataHandle = alloc_and_save(taskData, SIZEOF(ML_ExposeEvent_Data), F_MUTABLE_BIT); #define data ((ML_ExposeEvent_Data *)DEREFHANDLE(dataHandle)) data->region = (MLXRectangle *)DEREFHANDLE(CreateRect(taskData, top,left,bottom,right)); data->count = DEREFWORD(Make_arbitrary_precision(taskData, 0)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case GraphicsExpose: { int left = ev->xgraphicsexpose.x; int top = ev->xgraphicsexpose.y; int right = left + ev->xgraphicsexpose.width; int bottom = top + ev->xgraphicsexpose.height; Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_GraphicsExposeEvent_Data), F_MUTABLE_BIT); #define data ((ML_GraphicsExposeEvent_Data *)DEREFHANDLE(dataHandle)) data->region = (MLXRectangle *)DEREFHANDLE(CreateRect(taskData, top,left,bottom,right)); data->count = DEREFWORD(Make_arbitrary_precision(taskData, ev->xgraphicsexpose.count)); data->code = DEREFWORD(Make_arbitrary_precision(taskData, ev->xgraphicsexpose.major_code)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case NoExpose: { event->data = DEREFWORD(Make_arbitrary_precision(taskData, ev->xnoexpose.major_code)); break; } case ConfigureNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_ConfigureNotify_Data), F_MUTABLE_BIT); #define data ((ML_ConfigureNotify_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xconfigure.window)); data->position = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xconfigure.x,ev->xconfigure.y)); data->size = (MLXRectangle *) DEREFHANDLE(CreateArea(ev->xconfigure.width,ev->xconfigure.height)); data->borderWidth = DEREFWORD(Make_int(ev->xconfigure.border_width)); data->above = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xconfigure.above)); data->overrideRedirect = DEREFWORD(Make_bool(ev->xconfigure.override_redirect)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case FocusIn: case FocusOut: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_FocusChangeEvent_Data), F_MUTABLE_BIT); #define data ((ML_FocusChangeEvent_Data *)DEREFHANDLE(dataHandle)) data->mode = DEREFWORD(Make_int(ev->xfocus.mode)); data->detail = DEREFWORD(Make_int(ev->xfocus.detail)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case VisibilityNotify: { event->data = DEREFWORD(Make_int(ev->xvisibility.state)); break; } case CreateNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_CreateEvent_Data), F_MUTABLE_BIT); #define data ((ML_CreateEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xcreatewindow.window)); data->position = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xcreatewindow.x,ev->xcreatewindow.y)); data->size = (MLXRectangle *) DEREFHANDLE(CreateArea(ev->xcreatewindow.width,ev->xcreatewindow.height)); data->borderWidth = DEREFWORD(Make_int(ev->xcreatewindow.border_width)); data->overrideRedirect = DEREFWORD(Make_bool(ev->xcreatewindow.override_redirect)); #undef data event->data = DEREFHANDLE(FINISHED(taskData, dataHandle)); break; } case DestroyNotify: { debugReclaim(Window,ev->xdestroywindow.window); event->data = DEREFWORD(EmptyWindow(taskData, dsHandle,ev->xdestroywindow.window)); break; } case UnmapNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_UnmapEvent_Data), F_MUTABLE_BIT); #define data ((ML_UnmapEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xunmap.window)); data->fromConfigure = DEREFWORD(Make_bool(ev->xunmap.from_configure)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case MapNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_MapEvent_Data), F_MUTABLE_BIT); #define data ((ML_MapEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xmap.window)); data->overrideRedirect = DEREFWORD(Make_bool(ev->xmap.override_redirect)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case MapRequest: { event->data = DEREFWORD(EmptyWindow(taskData, dsHandle,ev->xmaprequest.window)); break; } case ReparentNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_ReparentEvent_Data), F_MUTABLE_BIT); #define data ((ML_ReparentEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xreparent.window)); data->parent = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xreparent.parent)); data->position = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xreparent.x,ev->xreparent.y)); data->overrideRedirect = DEREFWORD(Make_bool(ev->xreparent.override_redirect)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case ConfigureRequest: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_ConfigureRequest_Data), F_MUTABLE_BIT); #define data ((ML_ConfigureRequest_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xconfigurerequest.window)); data->position = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xconfigurerequest.x,ev->xconfigurerequest.y)); data->size = (MLXRectangle *) DEREFHANDLE(CreateArea(ev->xconfigurerequest.width,ev->xconfigurerequest.height)); data->borderWidth = DEREFWORD(Make_int(ev->xconfigurerequest.border_width)); data->above = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xconfigurerequest.above)); data->detail = DEREFWORD(Make_int(ev->xconfigurerequest.detail)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case GravityNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_GravityEvent_Data), F_MUTABLE_BIT); #define data ((ML_GravityEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xgravity.window)); data->position = (MLXPoint *) DEREFHANDLE(CreatePoint(taskData, ev->xgravity.x,ev->xgravity.y)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case ResizeRequest: { event->data = DEREFWORD(CreateArea(ev->xresizerequest.width,ev->xresizerequest.height)); break; } case CirculateNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_CirculateEvent_Data), F_MUTABLE_BIT); #define data ((ML_CirculateEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xcirculate.window)); data->place = DEREFWORD(Make_int(ev->xcirculate.place)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case CirculateRequest: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_CirculateEvent_Data), F_MUTABLE_BIT); #define data ((ML_CirculateEvent_Data *)DEREFHANDLE(dataHandle)) data->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xcirculaterequest.window)); data->place = DEREFWORD(Make_int(ev->xcirculaterequest.place)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case ColormapNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_ColormapEvent_Data), F_MUTABLE_BIT); #define data ((ML_ColormapEvent_Data *)DEREFHANDLE(dataHandle)) data->colormap_object = (X_Colormap_Object *)DEREFHANDLE(EmptyColormap(taskData, dsHandle,ev->xcolormap.colormap)); data->c_new = DEREFWORD(Make_bool(ev->xcolormap.c_new)); data->installed = DEREFWORD(Make_bool(ev->xcolormap.state == ColormapInstalled)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case MappingNotify: { XRefreshKeyboardMapping((XMappingEvent *)ev); /* cast added SPF 6/1/94 */ return 0; /* HACK !!!! */ } case SelectionClear: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_SelectionClear_Data), F_MUTABLE_BIT); #define data ((ML_SelectionClear_Data *)DEREFHANDLE(dataHandle)) data->selection = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionclear.selection)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionclear.time)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case SelectionNotify: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_Selection_Data), F_MUTABLE_BIT); #define data ((ML_Selection_Data *)DEREFHANDLE(dataHandle)) data->selection = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselection.selection)); data->target = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselection.target)); data->property = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselection.property)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselection.time)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case SelectionRequest: { Handle dataHandle = alloc_and_save(taskData, SIZEOF(ML_SelectionRequest_Data), F_MUTABLE_BIT); #define data ((ML_SelectionRequest_Data *)DEREFHANDLE(dataHandle)) data->requestor = DEREFWINDOWHANDLE(EmptyWindow(taskData, dsHandle,ev->xselectionrequest.requestor)); data->selection = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionrequest.selection)); data->target = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionrequest.target)); data->property = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionrequest.property)); data->time = DEREFWORD(Make_arbitrary_precision(taskData, ev->xselectionrequest.time)); #undef data event->data = DEREFWORD(FINISHED(taskData, dataHandle)); break; } case ClientMessage: { unsigned protocols = WM_PROTOCOLS(d); int deleteWindow = WM_DELETE_WINDOW(d); if (protocols != None && deleteWindow != None && ev->xclient.message_type == protocols && ev->xclient.format == 32 && ev->xclient.data.l[0] == deleteWindow) { event->type = DEREFWORD(Make_arbitrary_precision(taskData, 43)); /* (?) */ break; } else return 0; } case PropertyNotify: return 0; case KeymapNotify: return 0; /* Broken: the window field does not tell me the window requesting this event */ default: Crash ("Bad event type %x",ev->type); } event->callbacks = FList; /* Safe, since FList is a Root */ FList = TAGGED(0); event->events = GList; /* Safe, since GList is a Root */ GList = TAGGED(0); return FINISHED(taskData, eventHandle); #undef event } /******************************************************************************/ /* */ /* HERE */ /* */ /******************************************************************************/ static Handle LookupString(TaskData *taskData, Display *d, unsigned keycode, unsigned modifiers) { XKeyEvent ev; int n; KeySym keysym; /* was int SPF 6/1/94 */ char buffer[500]; ev.display = d; ev.keycode = keycode; ev.state = modifiers; n = XLookupString(&ev,buffer,sizeof(buffer)-1,&keysym,NULL); buffer[n] = '\0'; return CreatePair(taskData, Make_string(buffer),Make_arbitrary_precision(taskData, keysym)); } static Handle GetScreenSaver(TaskData *taskData, Display *d) { int timeout,interval,blanking,exposures; Handle tuple; XGetScreenSaver(d,&timeout,&interval,&blanking,&exposures); tuple = alloc_and_save(taskData, 4, F_MUTABLE_BIT); #define data DEREFHANDLE(tuple) data->Set(0, DEREFWORD(Make_int(timeout))); data->Set(1, DEREFWORD(Make_int(interval))); data->Set(2, DEREFWORD(Make_arbitrary_precision(taskData, blanking))); data->Set(3, DEREFWORD(Make_arbitrary_precision(taskData, exposures))); #undef data return FINISHED(taskData, tuple); } static Handle TranslateCoordinates ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window src, Window dst, int x, int y ) { Window child; int dx,dy,s; s = XTranslateCoordinates(DEREFDISPLAYHANDLE(dsHandle)->display,src,dst,x,y,&dx,&dy,&child); if (s == 0) RaiseXWindows(taskData, "XTranslateCoordinates failed"); return CreatePair(taskData, CreatePoint(taskData, dx,dy),EmptyWindow(taskData, dsHandle,child)); } static Handle QueryBest ( TaskData *taskData, int (*f)(Display*, Drawable, unsigned, unsigned, unsigned *, unsigned *), Display *d, Drawable drawable, unsigned width, unsigned height ) { unsigned W,H; int s = (* f)(d,drawable,width,height,&W,&H); if (s == 0) RaiseXWindows(taskData, "XQueryBest failed"); return CreateArea(W,H); } static Handle QueryPointer ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w ) { Window root,child; int rootX,rootY; int winX,winY; unsigned mask; int s; Handle tuple; s = XQueryPointer(DEREFDISPLAYHANDLE(dsHandle)->display,w,&root,&child,&rootX,&rootY,&winX,&winY,&mask); tuple = alloc_and_save(taskData, 6, F_MUTABLE_BIT); #define data DEREFHANDLE(tuple) data->Set(0, DEREFWORD(Make_arbitrary_precision(taskData, s))); data->Set(1, DEREFWORD(EmptyWindow(taskData, dsHandle,root))); data->Set(2, DEREFWORD(EmptyWindow(taskData, dsHandle,child))); data->Set(3, DEREFWORD(CreatePoint(taskData, rootX,rootY))); data->Set(4, DEREFWORD(CreatePoint(taskData, winX,winY))); data->Set(5, DEREFWORD(Make_arbitrary_precision(taskData, mask))); #undef data return FINISHED(taskData, tuple); } static Handle ReadBitmap ( TaskData *taskData, Handle dsHandle, /* handle to (X_Display_Object *) */ Drawable w, PolyStringObject *string ) { unsigned width,height; char name[500]; int s,xhot,yhot; Pixmap pixmap; Handle tuple; Poly_string_to_C(string,name,sizeof(name)); s = XReadBitmapFile(DEREFDISPLAYHANDLE(dsHandle)->display,w,name,&width,&height,&pixmap,&xhot,&yhot); tuple = alloc_and_save(taskData, 4, F_MUTABLE_BIT); #define data DEREFHANDLE(tuple) data->Set(0,DEREFWORD(Make_arbitrary_precision(taskData, s))); if (s == BitmapSuccess) { data->Set(1, DEREFWORD(EmptyPixmap(taskData, dsHandle,pixmap))); data->Set(2, DEREFWORD(CreateArea(width,height))); data->Set(3, DEREFWORD(CreatePoint(taskData, xhot,yhot))); } /******************** What if we don't succeed? Badly-formed tuple !!!! */ #undef data return FINISHED(taskData, tuple); } static Handle WriteBitmapFile ( TaskData *taskData, PolyStringObject *string, Display *d, Pixmap bitmap, unsigned w, unsigned h, int x, int y ) { char name[500]; int s; Poly_string_to_C(string,name,sizeof(name)); s = XWriteBitmapFile(d,name,bitmap,w,h,x,y); return Make_arbitrary_precision(taskData, s); } static Handle GetDefault(TaskData *taskData, Display *d, PolyStringObject *s1, PolyStringObject *s2) { char program[500]; char option[500]; char *s; Poly_string_to_C(s1,program,sizeof(program)); Poly_string_to_C(s2,option ,sizeof(option)); s = XGetDefault(d,program,option); if (s == NULL) RaiseXWindows(taskData, "XGetDefault failed"); return Make_string(s); } static void GetWindows(TaskData *taskData, PolyWord p, void *w, unsigned) { *(Window *)w = GetWindow(taskData, (X_Object *)p.AsObjPtr()); } static void GetSegments(TaskData *taskData, PolyWord pp, void *w, unsigned) { XSegment *A = (XSegment *)w; PolyObject *p = pp.AsObjPtr(); A->x1 = GetPointX(taskData, p->Get(0)); A->y1 = GetPointY(taskData, p->Get(0)); A->x2 = GetPointX(taskData, p->Get(1)); A->y2 = GetPointY(taskData, p->Get(1)); } static void GetChar2(TaskData *taskData, PolyWord p, void *v, unsigned) { XChar2b *A = (XChar2b *)v; unsigned short u = get_C_ushort(taskData, p); A->byte1 = u >> 8; A->byte2 = u &0xFF; } static void CopyString(TaskData *, PolyWord w, void *v, unsigned) { char **p = (char**)v; PolyStringObject *s = GetString(w); POLYUNSIGNED n = s->length+1; *p = (char*)malloc(n); Poly_string_to_C(s,*p,n); } static void GetText(TaskData *taskData, PolyWord p, void *w, unsigned) { XTextItem *A = (XTextItem *)w; PolyObject *obj = p.AsObjPtr(); CopyString(taskData, obj->Get(0), &A->chars, 0); A->nchars = strlen(A->chars); A->delta = get_C_short(taskData, obj->Get(1)); A->font = GetFont(taskData, (X_Object *)obj->Get(2).AsObjPtr()); } static void GetText16(TaskData *taskData, PolyWord p, void *v, unsigned) { XTextItem16 *A = (XTextItem16 *)v; PolyObject *obj = p.AsObjPtr(); unsigned N = ListLength(obj->Get(0)); XChar2b *L = (XChar2b *) malloc(N * sizeof(XChar2b)); GetList4(taskData,obj->Get(0),L,sizeof(XChar2b),GetChar2); A->chars = L; A->nchars = N; A->delta = get_C_short(taskData, obj->Get(1)); A->font = GetFont(taskData, (X_Object *)obj->Get(2).AsObjPtr()); } typedef void (*GetFunc)(TaskData *taskData, PolyWord, void*, unsigned); static void SetClipRectangles ( TaskData *taskData, Display *d, GC gc, int x, int y, Handle list, unsigned order ) { if (ISNIL(DEREFWORD(list))) { XSetClipRectangles(d,gc,x,y,NULL,0,order); } else { unsigned N = ListLength(DEREFWORD(list)); XRectangle *L = (XRectangle *) alloca(N * sizeof(XRectangle)); GetList4(taskData, DEREFWORD(list),L,sizeof(XRectangle),GetRects); XSetClipRectangles(d,gc,x,y,L,N,order); } } static void GetUChars(TaskData *taskData, PolyWord p, void *u, unsigned) { *(uchar*)u = get_C_uchar(taskData, p); } static void SetDashes ( TaskData *taskData, Display *d, GC gc, unsigned offset, Handle list ) { if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); char *D = (char *) alloca(N); GetList4(taskData,DEREFWORD(list),D,sizeof(uchar),GetUChars); XSetDashes(d,gc,offset,D,N); } } static Handle CreateDrawable ( TaskData *taskData, void *p, Handle dsHandle /* Handle to (X_Display_Object *) */ ) { return EmptyWindow(taskData, dsHandle,*(Window*)p); } static Handle QueryTree ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w ) { Window root,parent,*children; unsigned n; Handle data; int s = XQueryTree(DEREFDISPLAYHANDLE(dsHandle)->display,w,&root,&parent,&children,&n); if (s == 0) RaiseXWindows(taskData, "XQueryTree failed"); data = CreateTriple(taskData, EmptyWindow(taskData, dsHandle,root), EmptyWindow(taskData, dsHandle,parent), CreateList5(taskData, n,children,sizeof(Window),CreateDrawable,dsHandle)); if (n) XFree((char *)children); return data; } static void RestackWindows(TaskData *taskData, Handle list /* handle to list of X_Window_Objects (?) */) { if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); Window *W = (Window *) alloca(N * sizeof(Window)); Display *d = GetDisplay(taskData, (X_Object *)DEREFLISTHANDLE(list)->h.AsObjPtr()); GetList4(taskData, DEREFWORD(list),W,sizeof(Window),GetWindows); XRestackWindows(d,W,N); } } static Handle GetGeometry ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Drawable w ) { int x,y; unsigned width,height,borderWidth,depth; Window root; Handle dataHandle; int s = XGetGeometry(DEREFDISPLAYHANDLE(dsHandle)->display,w,&root,&x,&y,&width,&height,&borderWidth,&depth); if (s == 0) RaiseXWindows(taskData, "XGetGeometry failed"); dataHandle = alloc_and_save(taskData, 5, F_MUTABLE_BIT); #define data DEREFHANDLE(dataHandle) data->Set(0, DEREFWORD(EmptyWindow(taskData, dsHandle,root))); data->Set(1, DEREFWORD(CreatePoint(taskData, x,y))); data->Set(2, DEREFWORD(CreateArea(width,height))); data->Set(3, DEREFWORD(Make_arbitrary_precision(taskData, borderWidth))); data->Set(4, DEREFWORD(Make_arbitrary_precision(taskData, depth))); #undef data return FINISHED(taskData, dataHandle); } static Handle GetWindowAttributes ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Drawable w ) { XWindowAttributes wa; Handle dataHandle; int s = XGetWindowAttributes(DEREFDISPLAYHANDLE(dsHandle)->display,w,&wa); if (s == 0) RaiseXWindows(taskData, "XGetWindowAttributes failed"); dataHandle = alloc_and_save(taskData, 20, F_MUTABLE_BIT); /* HACKY - should define struct? */ DEREFHANDLE(dataHandle)->Set( 0, DEREFWORD(CreatePoint(taskData, wa.x,wa.y))); DEREFHANDLE(dataHandle)->Set( 1, DEREFWORD(CreateArea(wa.width,wa.height))); DEREFHANDLE(dataHandle)->Set( 2, DEREFWORD(Make_int(wa.border_width))); DEREFHANDLE(dataHandle)->Set( 3, DEREFWORD(Make_arbitrary_precision(taskData, wa.depth))); DEREFHANDLE(dataHandle)->Set( 4, DEREFWORD(EmptyVisual(taskData, dsHandle,wa.visual))); DEREFHANDLE(dataHandle)->Set( 5, DEREFWORD(EmptyWindow(taskData, dsHandle,wa.root))); DEREFHANDLE(dataHandle)->Set( 6, DEREFWORD(Make_arbitrary_precision(taskData, wa.c_class))); DEREFHANDLE(dataHandle)->Set( 7, DEREFWORD(Make_arbitrary_precision(taskData, wa.bit_gravity))); DEREFHANDLE(dataHandle)->Set( 8, DEREFWORD(Make_arbitrary_precision(taskData, wa.win_gravity))); DEREFHANDLE(dataHandle)->Set( 9, DEREFWORD(Make_arbitrary_precision(taskData, wa.backing_store))); DEREFHANDLE(dataHandle)->Set(10, DEREFWORD(Make_arbitrary_precision(taskData, wa.backing_planes))); DEREFHANDLE(dataHandle)->Set(11, DEREFWORD(Make_arbitrary_precision(taskData, wa.backing_pixel))); DEREFHANDLE(dataHandle)->Set(12, DEREFWORD(Make_bool(wa.save_under))); DEREFHANDLE(dataHandle)->Set(13, DEREFWORD(EmptyColormap(taskData, dsHandle,wa.colormap))); DEREFHANDLE(dataHandle)->Set(14, DEREFWORD(Make_bool(wa.map_installed))); DEREFHANDLE(dataHandle)->Set(15, DEREFWORD(Make_arbitrary_precision(taskData, wa.map_state))); DEREFHANDLE(dataHandle)->Set(16, DEREFWORD(Make_arbitrary_precision(taskData, wa.all_event_masks))); DEREFHANDLE(dataHandle)->Set(17, DEREFWORD(Make_arbitrary_precision(taskData, wa.your_event_mask))); DEREFHANDLE(dataHandle)->Set(18, DEREFWORD(Make_arbitrary_precision(taskData, wa.do_not_propagate_mask))); DEREFHANDLE(dataHandle)->Set(19, DEREFWORD(Make_bool(wa.override_redirect))); return FINISHED(taskData, dataHandle); } static void ChangeWindowAttributes ( TaskData *taskData, X_Window_Object *W, unsigned n, PolyWord P ) { XSetWindowAttributes a; unsigned mask = 1 << n; switch(mask) { case CWBitGravity: a.bit_gravity = get_C_ulong(taskData, P); break; case CWWinGravity: a.win_gravity = get_C_ulong(taskData, P); break; case CWBackingStore: a.backing_store = get_C_ulong(taskData, P); break; case CWBackingPlanes: a.backing_planes = get_C_ulong(taskData, P); break; case CWBackingPixel: a.backing_pixel = get_C_ulong(taskData, P); break; case CWOverrideRedirect: a.override_redirect = get_C_ulong(taskData, P); break; case CWSaveUnder: a.save_under = get_C_ulong(taskData, P); break; case CWEventMask: a.event_mask = get_C_ulong(taskData, P); break; case CWDontPropagate: a.do_not_propagate_mask = get_C_ulong(taskData, P); break; case CWBackPixel: a.background_pixel = get_C_ulong(taskData, P); W->backgroundPixmap = 0; break; case CWBackPixmap: a.background_pixmap = GetPixmap(taskData, (X_Object *)P.AsObjPtr()); W->backgroundPixmap = PixmapObject((X_Object *)P.AsObjPtr()); break; case CWBorderPixel: a.border_pixel = get_C_ulong(taskData, P); W->borderPixmap = 0; break; case CWBorderPixmap: a.border_pixmap = GetPixmap(taskData, (X_Object *)P.AsObjPtr()); W->borderPixmap = PixmapObject((X_Object *)P.AsObjPtr()); break; case CWColormap: a.colormap = GetColormap(taskData, (X_Object *)P.AsObjPtr()); W->colormap_object = ColormapObject((X_Object *)P.AsObjPtr()); break; case CWCursor: a.cursor = GetCursor(taskData, (X_Object *)P.AsObjPtr()); W->cursor_object = CursorObject((X_Object *)P.AsObjPtr()); break; default: Crash ("Bad window mask %u",mask); } XChangeWindowAttributes(GetDisplay(taskData, (X_Object *)W),GetWindow(taskData, (X_Object *)W),mask,&a); } static void ConfigureWindow ( TaskData *taskData, Display *d, Window w, PolyWord tup /* (P,S,w,d,s,flags) */ ) { PolyObject *tuple = tup.AsObjPtr(); XWindowChanges wc; unsigned mask = get_C_ulong(taskData, tuple->Get(5)); CheckZeroRect(taskData, tuple->Get(1)); wc.x = GetPointX (taskData,tuple->Get(0)); wc.y = GetPointY (taskData,tuple->Get(0)); wc.width = GetRectW (taskData,tuple->Get(1)); wc.height = GetRectH (taskData,tuple->Get(1)); wc.border_width = get_C_ulong(taskData, tuple->Get(2)); wc.sibling = GetWindow (taskData,(X_Object *)tuple->Get(3).AsObjPtr()); wc.stack_mode = get_C_ulong(taskData, tuple->Get(4)); XConfigureWindow(d,w,mask,&wc); } /* The order of these depends on the XColor datatype */ typedef struct { PolyWord red; /* ML bool */ PolyWord blue; /* ML bool */ PolyWord doRed; /* ML bool */ PolyWord green; /* ML int */ PolyWord pixel; /* ML int */ PolyWord doBlue; /* ML int */ PolyWord doGreen; /* ML int */ } MLXColor; /* in Poly heap */ static void ClearXColor(XColor *x) { x->red = x->green = x->blue = x->pixel = x->flags = 0; } static Handle CreateXColor(TaskData *taskData, XColor *x) { Handle XHandle = alloc_and_save(taskData, SIZEOF(MLXColor), F_MUTABLE_BIT); #define X ((MLXColor *)DEREFHANDLE(XHandle)) X->red = DEREFWORD(Make_arbitrary_precision(taskData, x->red)); X->green = DEREFWORD(Make_arbitrary_precision(taskData, x->green)); X->blue = DEREFWORD(Make_arbitrary_precision(taskData, x->blue)); X->pixel = DEREFWORD(Make_arbitrary_precision(taskData, x->pixel)); X->doRed = DEREFWORD(Make_bool(x->flags &DoRed)); X->doGreen = DEREFWORD(Make_bool(x->flags &DoGreen)); X->doBlue = DEREFWORD(Make_bool(x->flags &DoBlue)); #undef X return FINISHED(taskData, XHandle); } static Handle CreateXColorF(TaskData *taskData, void *p) { return CreateXColor(taskData, (XColor*)p); } static XColor xcolor1 = { 0 }; static XColor xcolor2 = { 0 }; static void GetXColor(TaskData *taskData, PolyWord p, void *v, unsigned) { MLXColor *P = (MLXColor *)p.AsObjPtr(); XColor *x = (XColor *)v; x->red = get_C_ushort(taskData, P->red); x->green = get_C_ushort(taskData, P->green); x->blue = get_C_ushort(taskData, P->blue); x->pixel = get_C_ulong (taskData, P->pixel); x->flags = (DoRed * get_C_ulong(taskData, P->doRed)) | (DoGreen * get_C_ulong(taskData, P->doGreen)) | (DoBlue * get_C_ulong(taskData, P->doBlue)); } static XColor *GetXColor1(TaskData *taskData, PolyWord P) { GetXColor(taskData, P, &xcolor1, 0); return &xcolor1; } static XColor *GetXColor2(TaskData *taskData, PolyWord P) { GetXColor(taskData, P, &xcolor2, 0); return &xcolor2; } static Handle AllocColor(TaskData *taskData, Display *d, Colormap cmap, XColor *x) { int s = XAllocColor(d,cmap,x); if (s == 0) RaiseXWindows(taskData, "XAllocColor failed"); return CreateXColor(taskData, x); } static Handle CreateUnsigned(TaskData *taskData, void *q) { unsigned *p = (unsigned *)q; return Make_arbitrary_precision(taskData, *p); } static Handle CreateUnsignedLong(TaskData *taskData, void *p) { return Make_arbitrary_precision(taskData, *(unsigned long*)p); } static Handle AllocColorCells ( TaskData *taskData, Display *d, Colormap cmap, unsigned contig, unsigned nplanes, unsigned ncolors ) { unsigned long *masks; /* was unsigned SPF 6/1/94 */ unsigned long *pixels; /* was unsigned SPF 6/1/94 */ int s; if (ncolors < 1) RaiseRange(taskData); masks = (unsigned long *) alloca(nplanes * sizeof(unsigned long)); pixels = (unsigned long *) alloca(ncolors * sizeof(unsigned long)); s = XAllocColorCells(d,cmap,contig,masks,nplanes,pixels,ncolors); if (s == 0) RaiseXWindows (taskData, "XAllocColorCells failed"); return CreatePair(taskData, CreateList4(taskData,nplanes,masks ,sizeof(unsigned long),CreateUnsignedLong), CreateList4(taskData,ncolors,pixels,sizeof(unsigned long),CreateUnsignedLong)); } static Handle AllocColorPlanes ( TaskData *taskData, Display *d, Colormap cmap, unsigned contig, unsigned ncolors, unsigned nreds, unsigned ngreens, unsigned nblues ) { unsigned long rmask; /* was unsigned SPF 6/1/94 */ unsigned long gmask; /* was unsigned SPF 6/1/94 */ unsigned long bmask; /* was unsigned SPF 6/1/94 */ unsigned long *pixels; /* was unsigned SPF 6/1/94 */ Handle tuple; int s; if (ncolors < 1) RaiseRange(taskData); pixels = (unsigned long *) alloca(ncolors * sizeof(unsigned long)); s = XAllocColorPlanes(d,cmap,contig,pixels,ncolors,nreds,ngreens,nblues,&rmask,&gmask,&bmask); if (s == 0) RaiseXWindows (taskData, "XAllocColorPlanes failed"); tuple = alloc_and_save(taskData, 4, F_MUTABLE_BIT); #define data DEREFHANDLE(tuple) data->Set(0, DEREFWORD(CreateList4(taskData,ncolors,pixels,sizeof(unsigned long),CreateUnsignedLong))); data->Set(1, DEREFWORD(Make_arbitrary_precision(taskData, rmask))); data->Set(2, DEREFWORD(Make_arbitrary_precision(taskData, gmask))); data->Set(3, DEREFWORD(Make_arbitrary_precision(taskData, bmask))); #undef data return FINISHED(taskData, tuple); } static Handle AllocNamedColor(TaskData *taskData, Display *d, Colormap cmap, PolyStringObject *string) { char name[500]; int s; XColor hardware; XColor database; ClearXColor(&hardware); ClearXColor(&database); Poly_string_to_C(string,name,sizeof(name)); s = XAllocNamedColor(d,cmap,name,&hardware,&database); if (s == 0) RaiseXWindows (taskData, "XAllocNamedColor failed"); return CreatePair(taskData, CreateXColor(taskData, &hardware),CreateXColor(taskData, &database)); } static Handle LookupColor(TaskData *taskData, Display *d, Colormap cmap, PolyStringObject *string) { char name[500]; int s; XColor hardware; XColor database; ClearXColor(&hardware); ClearXColor(&database); Poly_string_to_C(string,name,sizeof(name)); s = XLookupColor(d,cmap,name,&database,&hardware); if (s == 0) RaiseXWindows (taskData, "XLookupColor failed"); return CreatePair(taskData, CreateXColor(taskData, &database),CreateXColor(taskData, &hardware)); } static Handle ParseColor(TaskData *taskData, Display *d, Colormap cmap, PolyStringObject *string) { char name[500]; int s; XColor x; ClearXColor(&x); Poly_string_to_C(string,name,sizeof(name)); s = XParseColor(d,cmap,name,&x); if (s == 0) RaiseXWindows(taskData, "XParseColor failed"); return CreateXColor(taskData, &x); } static Handle QueryColor(TaskData *taskData, Display *d, Colormap cmap, unsigned pixel) { XColor x; ClearXColor(&x); x.pixel = pixel; XQueryColor(d,cmap,&x); return CreateXColor(taskData, &x); } static void GetXPixel(TaskData *taskData, PolyWord p, void *v, unsigned) { XColor *X = (XColor *)v; ClearXColor(X); X->pixel = get_C_ulong(taskData, p); } static Handle QueryColors(TaskData *taskData, Display *d, Colormap cmap, Handle list) { unsigned N = ListLength(DEREFWORD(list)); XColor *P = (XColor *) alloca(N * sizeof(XColor)); GetList4(taskData, DEREFWORD(list),P,sizeof(XColor),GetXPixel); XQueryColors(d,cmap,P,N); return CreateList4(taskData,N,P,sizeof(XColor),CreateXColorF); } static void StoreNamedColor ( Display *d, Colormap cmap, PolyStringObject *string, unsigned pixel, unsigned doRed, unsigned doGreen, unsigned doBlue ) { unsigned flags = (DoRed * doRed) | (DoGreen * doGreen) | (DoBlue * doBlue); char name[500]; Poly_string_to_C(string,name,sizeof(name)); XStoreNamedColor(d,cmap,name,pixel,flags); } static void StoreColors(TaskData *taskData, Display *d, Colormap cmap, Handle list) { unsigned N = ListLength(DEREFWORD(list)); XColor *P = (XColor *) alloca(N * sizeof(XColor)); GetList4(taskData, DEREFWORD(list),P,sizeof(XColor),GetXColor); XStoreColors(d,cmap,P,N); } static void GetUnsigned(TaskData *taskData, PolyWord p, void *v, unsigned) { unsigned *u = (unsigned *)v; *u = get_C_ulong(taskData, p); } static void GetUnsignedLong(TaskData *taskData, PolyWord p, void *v, unsigned) { unsigned long *u = (unsigned long *)v; *u = get_C_ulong(taskData, p); } static void FreeColors ( TaskData *taskData, Display *d, Colormap cmap, Handle list, unsigned planes ) { unsigned N = ListLength(DEREFWORD(list)); unsigned long *P = (unsigned long *) alloca(N * sizeof(unsigned long)); GetList4(taskData,DEREFWORD(list),P,sizeof(unsigned long),GetUnsignedLong); XFreeColors(d,cmap,P,N,planes); } static Handle CreateColormap ( TaskData *taskData, void *p, Handle dsHandle /* handle to (X_Display_Object *) */ ) { return EmptyColormap(taskData, dsHandle,*(Colormap *)p); } static Handle ListInstalledColormaps ( TaskData *taskData, Handle dsHandle, /* handle to (X_Display_Object *) */ Drawable drawable ) { int count; Colormap *cmaps; Handle list; cmaps = XListInstalledColormaps(DEREFDISPLAYHANDLE(dsHandle)->display,drawable,&count); if (cmaps == 0) RaiseXWindows(taskData, "XListInstalledColormaps failed"); list = CreateList5(taskData,count,cmaps,sizeof(Colormap),CreateColormap,dsHandle); XFree((char *)cmaps); return list; } static Handle GetTimeOfDay(TaskData *taskData) { TimeVal now; gettimeofday(&now, NULL); return CreatePair(taskData, Make_arbitrary_precision(taskData, now.tv_sec),Make_arbitrary_precision(taskData, now.tv_usec)); } static Handle GetState(TaskData *taskData, X_Window_Object *P) { assert(UNTAGGED(P->type) == X_Window); CheckExists((X_Object *)P,window); if (ISNIL(P->handler)) Crash ("No handler set"); return CreatePair(taskData, SAVE(P->handler),SAVE(P->state)); } static void SetState(X_Window_Object *W, PolyWord handler, PolyWord state) { if (! ResourceExists((X_Object *)W)) return; assert(W->type == TAGGED(X_Window)); if (NONNIL(handler)) { /* we are setting the handler and initial state */ /* so we need to remove all pending messages for */ /* this window since they will have the wrong type */ PurgePendingWindowMessages(W); W->handler = handler; W->state = state; } else W->state = state; /* just update state */ } /* Check if the first timer event has already expired. */ static void CheckTimerQueue(void) { if (TList) { TimeVal now; gettimeofday(&now, NULL); TList->expired = TimeLeq(&TList->timeout,&now); } } static void InsertTimeout ( TaskData *taskData, X_Window_Object *window_object, unsigned ms, PolyWord alpha, PolyWord handler ) { T_List **tail; T_List *newp; TimeVal now; assert(window_object->type == TAGGED(X_Window)); CheckExists((X_Object *)window_object,window); if (ISNIL(window_object->handler)) Crash ("No handler set"); if (window_object->handler != handler) RaiseXWindows(taskData, "Handler mismatch"); { /* find insertion point in list */ TimeVal dt; gettimeofday(&now, NULL); dt.tv_sec = ms / 1000; dt.tv_usec = 1000 * (ms % 1000); newp = (T_List *) malloc(sizeof(T_List)); TimeAdd(&now,&dt,&newp->timeout); /* We use TimeLt here, not TimeLeq, because we want to add new messages AFTER existing ones. SPF 21/3/97 */ for(tail = &TList; *tail; tail = &(*tail)->next) { if (TimeLt(&newp->timeout,&(*tail)->timeout)) break; } } newp->next = *tail; newp->window_object = window_object; newp->widget_object = (X_Widget_Object *)0; newp->alpha = alpha.AsObjPtr(); newp->handler = handler.AsObjPtr(); newp->expired = 0; *tail = newp; } /* called when a widget is destroyed by Xt/Motif */ static void DestroyWidgetCallback ( Widget widget, XtPointer client_data, XtPointer call_data ) { /* find the ML widget (if any) associated with the C widget */ X_Widget_Object *widget_object = FindWidget(widget); if (widget_object != NULL) { /* Destroy the ML widget representations */ DestroyXObject((X_Object *)widget_object); /* Assume we can't get a C callback from a destroyed widget */ PurgeCCallbacks(widget_object,widget); } debugReclaim(Widget,widget); } #if 0 #define CheckRealized(Widget,Where)\ { \ if (XtIsRealized(Widget) == False) \ RaiseXWindows(taskData, #Where ": widget is not realized"); \ } static Window WindowOfWidget(TaskData *taskData, Widget widget) { CheckRealized(widget,WindowOfWidget); return XtWindowOfObject(widget); } #endif /* Now returns NULL (None) for unrealized widgets SPF 1/2/94 */ static Window WindowOfWidget(Widget widget) { return XtIsRealized(widget) ? XtWindowOfObject(widget) : None; } static void InsertWidgetTimeout ( TaskData *taskData, X_Widget_Object *widget_object, unsigned ms, PolyWord alpha, PolyWord handler ) { T_List **tail; T_List *newp; TimeVal now; assert(widget_object->type == TAGGED(X_Widget)); CheckExists((X_Object *)widget_object,widget); #if NEVER CheckRealized(GetWidget(taskData, (X_Object *)widget_object),InsertWidgetTimeout); #endif /* check that handler occurs in widget's callback list */ { PolyWord p = widget_object->callbackList; for(; NONNIL(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) { MLPair *q = (MLPair *)((ML_Cons_Cell*)p.AsObjPtr())->h.AsObjPtr(); if (SND(q) == handler) break; } if (ISNIL(p)) RaiseXWindows(taskData, "Handler mismatch"); } { TimeVal dt; gettimeofday(&now, NULL); dt.tv_sec = ms / 1000; dt.tv_usec = 1000 * (ms % 1000); newp = (T_List *) malloc(sizeof(T_List)); TimeAdd(&now,&dt,&newp->timeout); /* We use TimeNegative here, not TimeExpired, because we want to add new messages AFTER existing ones. SPF 21/3/97 */ for(tail = &TList; *tail; tail = &(*tail)->next) { if (TimeLt(&newp->timeout,&(*tail)->timeout)) break; } } newp->next = *tail; newp->window_object = (X_Window_Object *)0; newp->widget_object = widget_object; newp->alpha = alpha.AsObjPtr(); newp->handler = handler.AsObjPtr(); newp->expired = 0; *tail = newp; } // Test whether input is available and block if it is not. // N.B. There may be a GC while in here. // This was previously in basicio.cpp but has been moved here // since this is the only place it's used now. static void process_may_block(TaskData *taskData, int fd) { #ifdef __CYGWIN__ static struct timeval poll = {0,1}; #else static struct timeval poll = {0,0}; #endif fd_set read_fds; int selRes; while (1) { FD_ZERO(&read_fds); FD_SET(fd,&read_fds); /* If there is something there we can return. */ selRes = select(FD_SETSIZE, &read_fds, NULL, NULL, &poll); if (selRes > 0) return; /* Something waiting. */ else if (selRes < 0 && errno != EINTR) // Maybe another thread closed descr raise_syscall(taskData, "select failed %d\n", errno); WaitInputFD waiter(fd); processes->ThreadPauseForIO(taskData, &waiter); } } static Handle NextEvent(TaskData *taskData, Handle dsHandle /* handle to (X_Display_Object *) */) { for (;;) { /* Added here SPF 23/2/95 - check whether a timer event has expired */ CheckTimerQueue(); if (TList && TList->expired) { T_List *next = TList->next; EventHandle E = alloc_and_save(taskData, SIZEOF(ML_Event), F_MUTABLE_BIT); #define event ((ML_Event *)DEREFHANDLE(E)) event->type = DEREFWORD(Make_arbitrary_precision(taskData, 99)); event->sendEvent = DEREFWORD(Make_bool(True)); event->data = TList->alpha; if (TList->window_object != 0) { assert(TList->widget_object == 0); event->window = TList->window_object; event->callbacks = ListNull; event->events = ListNull; assert(TList->window_object->handler == TList->handler); } else /* it is a Widget message */ { /* TList->widget_object etc. act like Roots */ assert(TList->widget_object != 0); { Window w = WindowOfWidget(GetWidget(taskData, (X_Object *)TList->widget_object)); event->window = DEREFWINDOWHANDLE(EmptyWindow(taskData, GetDS(taskData, (X_Object *)TList->widget_object),w)); } { /* create callback list - allocates storage */ Handle tailHandle = SAVE(ListNull); Handle widgetHandle = SAVE(TList->widget_object); Handle handlerHandle = SAVE(TList->handler); Handle pairHandle = CreatePair(taskData, widgetHandle,handlerHandle); event->callbacks = DEREFLISTHANDLE(CreatePair(taskData, pairHandle,tailHandle)); event->events = ListNull; } } #undef event free(TList); TList = next; return FINISHED(taskData, E); } else /* ! (TList && TList->expired) */ if (DEREFDISPLAYHANDLE(dsHandle)->app_context == 0) /* use XNextEvent to get next event */ { Display *display = DEREFDISPLAYHANDLE(dsHandle)->display; int pending = XPending(display); if (pending == 0) { process_may_block(taskData, display->fd); } else /* X Event arrived */ { XEvent ev; X_Window_Object *W; XNextEvent(display,&ev); W = FindWindow(dsHandle,ev.xany.window); if (W && NONNIL(W->handler)) { EventHandle E = CreateEvent(taskData, dsHandle,&ev,SAVE(W)); if (E) return E; } } } else /* use XtAppNextEvent to get next event */ { /* should use Xt to do time events as well */ int pending = XtAppPending(DEREFDISPLAYHANDLE(dsHandle)->app_context); if (pending == 0) { process_may_block(taskData, DEREFDISPLAYHANDLE(dsHandle)->display->fd); } else { if ((pending & XtIMXEvent) == 0) /* not an X Event, probably an Xt timer event */ { assert(FList == TAGGED(0)); callbacks_enabled = True; XtAppProcessEvent(DEREFDISPLAYHANDLE(dsHandle)->app_context,pending); callbacks_enabled = False; if (FList != TAGGED(0)) { EventHandle E = alloc_and_save(taskData, SIZEOF(ML_Event), F_MUTABLE_BIT); #define event ((ML_Event *)DEREFHANDLE(E)) event->type = DEREFWORD(Make_arbitrary_precision(taskData, 100)); event->sendEvent = DEREFWORD(Make_bool(True)); event->window = TAGGED(0); event->data = TAGGED(0); event->callbacks = FList; /* FList != 0 */ event->events = GList; #undef event FList = TAGGED(0); GList = TAGGED(0); return FINISHED(taskData, E); } } else /* Xt Event arrived */ { XEvent ev; int dispatched; assert(FList == TAGGED(0)); XtAppNextEvent(DEREFDISPLAYHANDLE(dsHandle)->app_context,&ev); callbacks_enabled = True; dispatched = XtDispatchEvent(&ev); callbacks_enabled = False; if (!dispatched) { X_Window_Object *W = FindWindow(dsHandle,ev.xany.window); assert(FList == TAGGED(0) && GList == TAGGED(0)); if (W && NONNIL(W->handler)) { EventHandle E = CreateEvent(taskData, dsHandle,&ev,SAVE(W)); if (E) return E; } } else if (! FList.IsTagged() || ! GList.IsTagged()) { EventHandle E = CreateEvent(taskData, dsHandle,&ev,EmptyWindow(taskData, dsHandle,ev.xany.window)); if (E) return E; } } } } } } static Handle GetInputFocus(TaskData *taskData, Handle dsHandle /* handle to (X_Display_Object *) */) { Window focus; int revertTo; XGetInputFocus(DEREFDISPLAYHANDLE(dsHandle)->display,&focus,&revertTo); return CreatePair(taskData, EmptyWindow(taskData, dsHandle,focus),Make_arbitrary_precision(taskData, revertTo)); } static void SetSelectionOwner ( Handle dsHandle, /* handle to (X_Display_Object *) */ unsigned selection, Window owner, unsigned time ) { Window old = XGetSelectionOwner(DEREFDISPLAYHANDLE(dsHandle)->display,selection); if (old != owner) { /* SelectionClear is only sent by the server when the ownership of a */ /* selection passes from one client to another. We want every ML */ /* window to behave like a separate client, so when the ownership of */ /* a selection passes from one ML window to another we have to send */ /* the SelectionClear ourselves. */ X_Window_Object *W = FindWindow(dsHandle,old); if (W && NONNIL(W->handler)) /* this clients window */ { XEvent event; /* was XSelectionClearEvent SPF 6/1/94 */ event.xselectionclear.type = SelectionClear; event.xselectionclear.serial = 0; event.xselectionclear.send_event = True; event.xselectionclear.display = DEREFDISPLAYHANDLE(dsHandle)->display; event.xselectionclear.window = old; event.xselectionclear.selection = selection; event.xselectionclear.time = time; XSendEvent(DEREFDISPLAYHANDLE(dsHandle)->display,old,True,0,&event); } } XSetSelectionOwner(DEREFDISPLAYHANDLE(dsHandle)->display,selection,owner,time); } static void SendSelectionNotify ( Display *d, unsigned selection, unsigned target, unsigned property, Window requestor, unsigned time ) { XEvent event; /* was XSelectionEvent SPF 6/1/94 */ event.xselection.type = SelectionNotify; event.xselection.serial = 0; event.xselection.send_event = True; event.xselection.display = d; event.xselection.requestor = requestor; event.xselection.selection = selection; event.xselection.target = target; event.xselection.property = property; event.xselection.time = time; XSendEvent(d,requestor,True,0,&event); } static Handle InternAtom ( TaskData *taskData, Display *d, PolyStringObject *string, Bool only_if_exists ) { char name[500]; Poly_string_to_C(string,name,sizeof(name)); return Make_arbitrary_precision(taskData, XInternAtom(d,name,only_if_exists)); } static Handle GetAtomName(TaskData *taskData, Display *d, unsigned atom) { Handle s; char *name = XGetAtomName(d,atom); if (name == NULL) RaiseXWindows(taskData, "XGetAtomName failed"); s = Make_string(name); XFree((char *)name); return s; } /* The order of these depends on the XCharStruct datatype */ typedef struct { PolyWord width; /* ML int */ PolyWord ascent; /* ML int */ PolyWord descent; /* ML int */ PolyWord lbearing; /* ML int */ PolyWord rbearing; /* ML int */ PolyWord attributes; /* ML int */ } MLXCharStruct; static Handle CreateCharStruct(TaskData *taskData, void *v) { XCharStruct *cs = (XCharStruct *)v; Handle dataHandle = alloc_and_save(taskData, SIZEOF(MLXCharStruct), F_MUTABLE_BIT); #define data ((MLXCharStruct *)DEREFHANDLE(dataHandle)) data->width = DEREFWORD(Make_int(cs->width)); data->ascent = DEREFWORD(Make_int(cs->ascent)); data->descent = DEREFWORD(Make_int(cs->descent)); data->lbearing = DEREFWORD(Make_int(cs->lbearing)); data->rbearing = DEREFWORD(Make_int(cs->rbearing)); data->attributes = DEREFWORD(Make_arbitrary_precision(taskData, cs->attributes)); #undef data return FINISHED(taskData, dataHandle); } /* The order of these depends on the XFontStruct datatype */ typedef struct { X_Font_Object *font_object; PolyWord ascent; /* ML int */ PolyWord descent; /* ML int */ PolyWord maxChar; /* ML int */ PolyWord minChar; /* ML int */ PolyWord perChar; /* ML XCharStruct list */ PolyWord maxByte1; /* ML int */ PolyWord minByte1; /* ML int */ PolyWord direction; /* (short ML int) FontLeftToRight | FontRightToLeft */ MLXCharStruct *maxBounds; MLXCharStruct *minBounds; PolyWord defaultChar; /* ML int */ PolyWord allCharsExist; /* ML bool */ } MLXFontStruct; static Handle CreateFontStruct ( TaskData *taskData, void *v, Handle dsHandle /* Handle to (X_Display_Object *) */ ) { XFontStruct *fs = (XFontStruct *)v; Handle dataHandle = alloc_and_save(taskData, SIZEOF(MLXFontStruct), F_MUTABLE_BIT); int n = fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1; if (fs->per_char == 0) n = 0; #define data ((MLXFontStruct *)DEREFHANDLE(dataHandle)) data->font_object = (X_Font_Object *)DEREFHANDLE(EmptyFont(taskData, dsHandle,fs->fid,fs)); data->ascent = DEREFWORD(Make_int(fs->ascent)); data->descent = DEREFWORD(Make_int(fs->descent)); data->maxChar = DEREFWORD(Make_arbitrary_precision(taskData, fs->max_char_or_byte2)); data->minChar = DEREFWORD(Make_arbitrary_precision(taskData, fs->min_char_or_byte2)); data->perChar = DEREFHANDLE(CreateList4(taskData,n,fs->per_char,sizeof(XCharStruct),CreateCharStruct)); data->maxByte1 = DEREFWORD(Make_arbitrary_precision(taskData, fs->max_byte1)); data->minByte1 = DEREFWORD(Make_arbitrary_precision(taskData, fs->min_byte1)); data->direction = DEREFWORD(Make_arbitrary_precision(taskData, (fs->direction == FontLeftToRight) ? 1 : 2)); data->maxBounds = (MLXCharStruct *)DEREFHANDLE(CreateCharStruct(taskData, &fs->max_bounds)); data->minBounds = (MLXCharStruct *)DEREFHANDLE(CreateCharStruct(taskData, &fs->min_bounds)); data->defaultChar = DEREFWORD(Make_arbitrary_precision(taskData, fs->default_char)); data->allCharsExist = DEREFWORD(Make_bool(fs->all_chars_exist)); #undef data return FINISHED(taskData, dataHandle); } static XFontStruct *GetFS(TaskData *taskData, X_Font_Object *P) { assert(UNTAGGED(P->type) == X_Font); if (*(P->fs) == NULL) RaiseXWindows(taskData, "Not a real XFontStruct"); CheckExists((X_Object *)P,font); return *(P->fs); } static XFontStruct *GetFontStruct(TaskData *taskData,PolyWord p) { MLXFontStruct *P = (MLXFontStruct *)p.AsObjPtr(); return GetFS(taskData,P->font_object); } static Handle CreateString(TaskData *taskData, void *s) { return Make_string(*(char **)s); } static Handle GetFontPath(TaskData *taskData, Display *d) { Handle list; char **names; int count; names = XGetFontPath(d,&count); if (names == 0) RaiseXWindows(taskData, "XGetFontPath failed"); list = CreateList4(taskData,count,names,sizeof(char *),CreateString); XFreeFontNames(names); return list; } static void FreeStrings(char **s, int n) { while(n--) free(*s++); return; } static void SetFontPath(TaskData *taskData, Display *d, Handle list) { if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); char **D = (char **) alloca(N * sizeof(char *)); GetList4(taskData, DEREFWORD(list),D,sizeof(char *),CopyString); XSetFontPath(d,D,N); FreeStrings(D,N); } return; } static Handle ListFonts(TaskData *taskData,Display *d, PolyStringObject *string, unsigned maxnames) { char name[500]; Handle list; char **names; int count; Poly_string_to_C(string,name,sizeof(name)); names = XListFonts(d,name,maxnames,&count); if (names == 0) RaiseXWindows(taskData, "XListFonts failed"); list = CreateList4(taskData,count,names,sizeof(char *),CreateString); XFreeFontNames(names); return list; } static Handle ListFontsWithInfo ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ PolyStringObject *string, unsigned maxnames ) { char name[500]; char **names; int count; XFontStruct *info; Handle pair; Poly_string_to_C(string,name,sizeof(name)); names = XListFontsWithInfo(DEREFDISPLAYHANDLE(dsHandle)->display,name,maxnames,&count,&info); if (names == 0) RaiseXWindows(taskData, "XListFontsWithInfo failed"); pair = CreatePair(taskData, CreateList4(taskData,count,names,sizeof(char *),CreateString), CreateList5(taskData,count,info,sizeof(XFontStruct),CreateFontStruct,dsHandle)); XFree((char *)info); XFreeFontNames(names); return pair; } static Handle LoadFont ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ PolyStringObject *string ) { char name[500]; Font font; Poly_string_to_C(string,name,sizeof(name)); font = XLoadFont(DEREFDISPLAYHANDLE(dsHandle)->display,name); if (font == 0) RaiseXWindows(taskData, "XLoadFont failed"); return EmptyFont(taskData, dsHandle,font,(XFontStruct *)NULL); } static Handle LoadQueryFont ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ PolyStringObject *string ) { char name[500]; XFontStruct *fs; Poly_string_to_C(string,name,sizeof(name)); fs = XLoadQueryFont(DEREFDISPLAYHANDLE(dsHandle)->display,name); if (fs == 0) RaiseXWindows(taskData, "XLoadQueryFont failed"); return CreateFontStruct(taskData,fs,dsHandle); } static Handle QueryFont ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Font font ) { XFontStruct *fs; fs = XQueryFont(DEREFDISPLAYHANDLE(dsHandle)->display,font); if (fs == 0) RaiseXWindows(taskData, "XQueryFont failed"); return CreateFontStruct(taskData,fs,dsHandle); } static Handle TextExtents(TaskData *taskData, XFontStruct *fs, PolyStringObject *s) { Handle dataHandle = alloc_and_save(taskData, 4, F_MUTABLE_BIT); int direction,ascent,descent; XCharStruct overall; XTextExtents(fs,s->chars,s->length,&direction,&ascent,&descent,&overall); #define data DEREFHANDLE(dataHandle) data->Set(0, DEREFWORD(Make_arbitrary_precision(taskData, (direction == FontLeftToRight) ? 1 : 2))); data->Set(1, DEREFWORD(Make_int(ascent))); data->Set(2, DEREFWORD(Make_int(descent))); data->Set(3, DEREFWORD(CreateCharStruct(taskData, &overall))); #undef data return FINISHED(taskData, dataHandle); } static Handle TextExtents16(TaskData *taskData, XFontStruct *fs, Handle list) { Handle dataHandle = alloc_and_save(taskData, 4, F_MUTABLE_BIT); int direction,ascent,descent; XCharStruct overall; unsigned N = ListLength(DEREFWORD(list)); XChar2b *L = (XChar2b *) alloca(N * sizeof(XChar2b)); GetList4(taskData,DEREFWORD(list),L,sizeof(XChar2b),GetChar2); XTextExtents16(fs,L,N,&direction,&ascent,&descent,&overall); #define data DEREFHANDLE(dataHandle) data->Set(0, DEREFWORD(Make_arbitrary_precision(taskData, (direction == FontLeftToRight) ? 1 : 2))); data->Set(1, DEREFWORD(Make_int(ascent))); data->Set(2, DEREFWORD(Make_int(descent))); data->Set(3, DEREFWORD(CreateCharStruct(taskData, &overall))); #undef data return FINISHED(taskData, dataHandle); } static Handle TextWidth(TaskData *taskData, XFontStruct *fs, PolyStringObject *s) { if (fs->per_char == 0) return Make_int(s->length * fs->max_bounds.width); return Make_int(XTextWidth(fs,s->chars,s->length)); } static Handle TextWidth16(TaskData *taskData, XFontStruct *fs, Handle list) { unsigned N = ListLength(DEREFWORD(list)); XChar2b *L = (XChar2b *) alloca(N * sizeof(XChar2b)); GetList4(taskData, DEREFWORD(list),L,sizeof(XChar2b),GetChar2); return Make_int(XTextWidth16(fs,L,N)); } static Handle GetTextProperty(TaskData *taskData, Display *d, Window w, unsigned property) { XTextProperty T; Handle tuple; int s = XGetTextProperty(d,w,&T,property); if (s == 0) RaiseXWindows(taskData, "XGetTextProperty failed"); tuple = alloc_and_save(taskData, 4, F_MUTABLE_BIT); #define data DEREFHANDLE(tuple) data->Set(0, C_string_to_Poly(taskData, (char *)T.value,T.nitems * T.format / 8)); data->Set(1, DEREFWORD(Make_arbitrary_precision(taskData, T.encoding))); data->Set(2, DEREFWORD(Make_int(T.format))); data->Set(3, DEREFWORD(Make_arbitrary_precision(taskData, T.nitems))); #undef data return FINISHED(taskData, tuple); } static void GetXWMHints(TaskData *taskData, PolyWord p, void *v, unsigned) { PolyObject *P = p.AsObjPtr(); XWMHints *H = (XWMHints *)v; H->input = get_C_ulong(taskData, P->Get(0)); H->initial_state = get_C_ulong(taskData, P->Get(1)); H->icon_pixmap = GetPixmap(taskData, (X_Object *)P->Get(2).AsObjPtr()); H->icon_window = GetWindow(taskData, (X_Object *)P->Get(3).AsObjPtr()); H->icon_x = GetPointX(taskData, P->Get(4)); H->icon_y = GetPointY(taskData, P->Get(4)); H->icon_mask = GetPixmap(taskData, (X_Object *)P->Get(5).AsObjPtr()); H->flags = get_C_ulong(taskData, P->Get(6)); H->window_group = 0; } typedef struct { PolyWord x0; PolyWord x1; PolyWord x2; PolyWord x3; PolyWord x4; PolyWord x5; /* pair of points */ PolyWord x6; PolyWord x7; PolyWord x8; } MLXWMSizeHintsTuple; static void GetXWMSizeHints(TaskData *taskData, PolyWord p, void *v, unsigned) { MLXWMSizeHintsTuple *P = (MLXWMSizeHintsTuple *)p.AsObjPtr(); XSizeHints *H = (XSizeHints *)v; CheckZeroRect(taskData, P->x1); CheckZeroRect(taskData, P->x2); CheckZeroRect(taskData, P->x3); CheckZeroRect(taskData, P->x4); CheckZeroRect(taskData, P->x6); H->x = GetPointX(taskData, P->x0); H->y = GetPointY(taskData, P->x0); H->width = GetRectW(taskData, P->x1); H->height = GetRectH(taskData, P->x1); H->min_width = GetRectW(taskData, P->x2); H->min_height = GetRectH(taskData, P->x2); H->max_width = GetRectW(taskData, P->x3); H->max_height = GetRectH(taskData, P->x3); H->width_inc = GetRectW(taskData, P->x4); H->height_inc = GetRectH(taskData, P->x4); H->min_aspect.x = GetPointX(taskData, FST(P->x5)); H->min_aspect.y = GetPointY(taskData, FST(P->x5)); H->max_aspect.x = GetPointX(taskData, SND(P->x5)); H->max_aspect.y = GetPointY(taskData, SND(P->x5)); H->base_width = GetRectW(taskData, P->x6); H->base_height = GetRectH(taskData, P->x6); H->win_gravity = get_C_ulong(taskData, P -> x7); H->flags = get_C_ulong(taskData, P -> x8); } static void GetIconSize(TaskData *taskData, PolyWord p, void *v, unsigned) { MLTriple *P = (MLTriple *)p.AsObjPtr(); XIconSize *s = (XIconSize *)v; CheckZeroRect(taskData, FST(P)); CheckZeroRect(taskData, SND(P)); CheckZeroRect(taskData, THIRD(P)); s->min_width = GetRectW(taskData, FST(P)); s->min_height = GetRectH(taskData, FST(P)); s->max_width = GetRectW(taskData, SND(P)); s->max_height = GetRectH(taskData, SND(P)); s->width_inc = GetRectW(taskData, THIRD(P)); s->height_inc = GetRectH(taskData, THIRD(P)); } static void GetSigned(TaskData *taskData, PolyWord p, void *i, unsigned) { *(int*)i = get_C_long(taskData, p); } static void GetPixmaps(TaskData *taskData, PolyWord pp, void *m, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(Pixmap *)m = GetPixmap(taskData, p); } static void GetColormaps(TaskData *taskData, PolyWord pp, void *v, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(Colormap *)v = GetColormap(taskData, p); } static void GetCursors(TaskData *taskData, PolyWord pp, void *c, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(Cursor *)c = GetCursor(taskData, p); } static void GetDrawables(TaskData *taskData, PolyWord pp, void *d, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(Drawable *)d = GetDrawable(taskData, p); } static void GetFonts(TaskData *taskData, PolyWord pp, void *f, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(Font *)f = GetFont(taskData, p); } static void GetVisualIds(TaskData *taskData, PolyWord pp, void *u, unsigned) { X_Object *p = (X_Object *)pp.AsObjPtr(); *(unsigned *)u = GetVisual(taskData, p)->visualid; } static void SetProperty ( TaskData *taskData, Display *d, Window w, unsigned property, unsigned target, Handle list, unsigned encoding ) { unsigned format; unsigned bytes; uchar *value; /* SPF 7/7/94 - XA_STRING pulled out as special case; this enables */ /* gcc to understand the previously data-dependant control flow. */ if (encoding == XA_STRING) { PolyStringObject *s = GetString (DEREFHANDLE(list)); format = 8; bytes = s->length; value = (uchar *) s->chars; } else { unsigned length = ListLength(DEREFWORD(list)); unsigned size; GetFunc get; switch(encoding) { case XA_ATOM: size = sizeof(unsigned); get = GetUnsigned; format = 32; break; case XA_BITMAP: size = sizeof(Pixmap); get = GetPixmaps; format = 32; break; case XA_COLORMAP: size = sizeof(Colormap); get = GetColormaps; format = 32; break; case XA_CURSOR: size = sizeof(Cursor); get = GetCursors; format = 32; break; case XA_DRAWABLE: size = sizeof(Drawable); get = GetDrawables; format = 32; break; case XA_FONT: size = sizeof(Font); get = GetFonts; format = 32; break; case XA_PIXMAP: size = sizeof(Pixmap); get = GetPixmaps; format = 32; break; case XA_VISUALID: size = sizeof(unsigned); get = GetVisualIds; format = 32; break; case XA_CARDINAL: size = sizeof(unsigned); get = GetUnsigned; format = 32; break; case XA_INTEGER: size = sizeof(int); get = GetSigned; format = 32; break; case XA_WINDOW: size = sizeof(Window); get = GetWindows; format = 32; break; case XA_ARC: size = sizeof(XArc); get = GetArcs; format = 16; break; case XA_POINT: size = sizeof(XPoint); get = GetPoints; format = 16; break; case XA_RECTANGLE: size = sizeof(XRectangle); get = GetRects; format = 16; break; case XA_RGB_COLOR_MAP: size = sizeof(XStandardColormap); get = GetStandardColormap; format = 32; break; case XA_WM_HINTS: size = sizeof(XWMHints); get = GetXWMHints; format = 32; break; case XA_WM_SIZE_HINTS: size = sizeof(XSizeHints); get = GetXWMSizeHints; format = 32; break; case XA_WM_ICON_SIZE: size = sizeof(XIconSize); get = GetIconSize; format = 32; break; default: Crash ("Bad property type %x",encoding); /*NOTREACHED*/ } bytes = length * size; value = (uchar *) alloca(bytes); GetList4(taskData, DEREFWORD(list),value,(int)size,get); } { XTextProperty T; T.value = value; T.encoding = target; T.format = format; T.nitems = (bytes * 8) / format; XSetTextProperty(d,w,&T,property); } } static Handle GetWMHints ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w ) { Handle tuple = alloc_and_save(taskData, 7, F_MUTABLE_BIT); XWMHints *H = XGetWMHints(DEREFDISPLAYHANDLE(dsHandle)->display,w); if (H) { #define data DEREFHANDLE(tuple) data->Set(0, DEREFWORD(Make_arbitrary_precision(taskData, H->input))); data->Set(1, DEREFWORD(Make_arbitrary_precision(taskData, H->initial_state))); data->Set(2, DEREFWORD(EmptyPixmap(taskData, dsHandle,H->icon_pixmap))); data->Set(3, DEREFWORD(EmptyWindow(taskData, dsHandle,H->icon_window))); data->Set(4, DEREFWORD(CreatePoint(taskData, H->icon_x,H->icon_y))); data->Set(5, DEREFWORD(EmptyPixmap(taskData, dsHandle,H->icon_mask))); data->Set(6, DEREFWORD(Make_arbitrary_precision(taskData, H->flags))); #undef data XFree((char *)H); } /* else what (?) */ return FINISHED(taskData, tuple); } static Handle GetWMSizeHints ( TaskData *taskData, Display *d, Window w, unsigned property ) { XSizeHints H; long supplied; /* was unsigned SPF 6/1/94 */ Handle tuple = alloc_and_save(taskData, 9, F_MUTABLE_BIT); int s = XGetWMSizeHints(d,w,&H,&supplied,property); if (s) { Handle p1 = CreatePoint(taskData, H.min_aspect.x,H.min_aspect.y); Handle p2 = CreatePoint(taskData, H.max_aspect.x,H.max_aspect.y); #define data DEREFHANDLE(tuple) data->Set(0, DEREFWORD(CreatePoint(taskData, H.x,H.y))); data->Set(1, DEREFWORD(CreateArea(H.width,H.height))); data->Set(2, DEREFWORD(CreateArea(H.min_width,H.min_height))); data->Set(3, DEREFWORD(CreateArea(H.max_width,H.max_height))); data->Set(4, DEREFWORD(CreateArea(H.width_inc,H.height_inc))); data->Set(5, DEREFWORD(CreatePair(taskData, p1,p2))); data->Set(6, DEREFWORD(CreateArea(H.base_width,H.base_height))); data->Set(7, DEREFWORD(Make_arbitrary_precision(taskData, H.win_gravity))); data->Set(8, DEREFWORD(Make_arbitrary_precision(taskData, H.flags))); #undef data } /* else (?) */ return FINISHED(taskData, tuple); } #if 0 typedef struct { MLPair *x0; /* pair of points */ MLXRectangle *x1; PolyWord x2; /* ML int */ } MLWMGeometryTriple; #endif static Handle WMGeometry ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ PolyStringObject *user, PolyStringObject *def, unsigned borderWidth, PolyWord P ) { XSizeHints H; int x,y,width,height,gravity,mask; char userGeometry[500],defaultGeometry[500]; GetXWMSizeHints(taskData, P, &H, 0); Poly_string_to_C(user,userGeometry ,sizeof(userGeometry)); Poly_string_to_C(def ,defaultGeometry,sizeof(defaultGeometry)); mask = XWMGeometry(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen, userGeometry, defaultGeometry, borderWidth, &H,&x,&y,&width,&height,&gravity); return CreateTriple(taskData, CreatePoint(taskData, x,y),CreateArea(width,height),Make_arbitrary_precision(taskData, gravity)); } static Handle CreateIconSize(TaskData *taskData, void *v) { XIconSize *s = (XIconSize *)v; return CreateTriple(taskData, CreateArea(s->min_width,s->min_height), CreateArea(s->max_width,s->max_height), CreateArea(s->width_inc,s->height_inc)); } static Handle GetIconSizes(TaskData *taskData, Display *d, Window w) { XIconSize *sizes; int count; int s = XGetIconSizes(d,w,&sizes,&count); if (s) { Handle list = CreateList4(taskData,count,sizes,sizeof(XIconSize),CreateIconSize); XFree((char *)sizes); return list; } return SAVE(ListNull); } static Handle GetTransientForHint ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w ) { Window p; int s = XGetTransientForHint(DEREFDISPLAYHANDLE(dsHandle)->display,w,&p); if (s == 0) RaiseXWindows(taskData, "XGetTransientForHint failed"); return EmptyWindow(taskData, dsHandle,p); } static Handle GetWMColormapWindows ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window parent ) { Window *windows; int count; int s = XGetWMColormapWindows(DEREFDISPLAYHANDLE(dsHandle)->display,parent,&windows,&count); if (s) { Handle list = CreateList5(taskData,count,windows,sizeof(Window),CreateDrawable,dsHandle); XFree((char *)windows); return list; } return SAVE(ListNull); } static Handle GetRGBColormaps ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Window w, unsigned property ) { XStandardColormap *maps; int count; int s = XGetRGBColormaps(DEREFDISPLAYHANDLE(dsHandle)->display,w,&maps,&count,property); if (s) { Handle list = CreateList5(taskData,count,maps,sizeof(XStandardColormap),CreateStandardColormap,dsHandle); XFree((char *)maps); return list; } return SAVE(ListNull); } static Handle GetID(TaskData *taskData, X_Object *P) { switch(UNTAGGED(P->type)) { case X_GC: return Make_arbitrary_precision(taskData, GetGC(taskData, P)->gid); /* GCID */ case X_Font: return Make_arbitrary_precision(taskData, GetFont(taskData, P)); /* FontID */ case X_Cursor: return Make_arbitrary_precision(taskData, GetCursor(taskData, P)); /* CursorId */ case X_Window: return Make_arbitrary_precision(taskData, GetWindow(taskData, P)); /* DrawableID */ case X_Pixmap: return Make_arbitrary_precision(taskData, GetPixmap(taskData, P)); /* DrawableID */ case X_Colormap: return Make_arbitrary_precision(taskData, GetColormap(taskData, P)); /* ColormapID */ case X_Visual: return Make_arbitrary_precision(taskData, GetVisual(taskData, P)->visualid); /* VisualID */ case X_Widget: return Make_arbitrary_precision(taskData, (unsigned long)GetNWidget(taskData, P)); /* Widget -- SAFE(?) */ default: Crash ("Bad X_Object type (%d) in GetID",UNTAGGED(P->type)) /*NOTREACHED*/; } } static Handle OpenDisplay(TaskData *taskData, PolyStringObject *string) { char name[500]; Display *display; Handle dsHandle /* Handle to (X_Display_Object *) */; Poly_string_to_C(string,name,sizeof(name)); display = XOpenDisplay(name); if (display == 0) RaiseXWindows(taskData, "XOpenDisplay failed"); /* I don't think this is needed. DCJM 26/5/2000. */ /* add_file_descr(display->fd); */ dsHandle = alloc_and_save(taskData, SIZEOF(X_Display_Object), F_MUTABLE_BIT|F_BYTE_OBJ); debug1 ("%s display opened\n",DisplayString(display)); debug1 ("%x display fd\n",display->fd); #define ds DEREFDISPLAYHANDLE(dsHandle) /* Ok to store C values because this is a byte object */ ds->type = TAGGED(X_Display); ds->display = display; ds->screen = DefaultScreen(display); ds->app_context = 0; #undef ds return AddXObject(FINISHED(taskData, dsHandle)); } /* indirection removed SPF 11/11/93 */ static XmFontList GetXmFontList(PolyWord p /* NOT a handle */) { if (NONNIL(p)) { char charset[500]; XmFontList L; MLPair *q = (MLPair *)(((ML_Cons_Cell*)p.AsObjPtr())->h.AsObjPtr()); Poly_string_to_C(SND(q),charset,sizeof(charset)); L = XmFontListCreate((XFontStruct *)FST(q).AsObjPtr(),charset); /* cast added SPF 6/1/94 */ p = ((ML_Cons_Cell*)p.AsObjPtr())->t; while(NONNIL(p)) { q = (MLPair *)(((ML_Cons_Cell*)p.AsObjPtr())->h.AsObjPtr()); Poly_string_to_C(SND(q),charset,sizeof(charset)); L = XmFontListAdd(L,(XFontStruct *)FST(q).AsObjPtr(),charset); /* cast added SPF 6/1/94 */ p = ((ML_Cons_Cell*)p.AsObjPtr())->t; } return L; } return 0; } /* datatype CType = CAccelerators of XtAccelerators | CBool of bool | CColormap of Colormap | CCursor of Cursor | CDimension of int | CFontList of (XFontStruct * string) list | CInt of int | CIntTable of int list | CKeySym of int | CPixmap of Drawable | CPosition of int | CString of string | CStringTable of string list | CTrans of XtTranslations | CUnsignedChar of int | CUnsignedTable of int list | CVisual of Visual | CWidget of Widget | CWidgetList of Widget list | CXmString of XmString | CXmStringTable of XmString list; */ #define CAccelerators 1 #define CBool 2 #define CColormap 3 #define CCursor 4 #define CDimension 5 #define CFontList 6 #define CInt 7 #define CIntTable 8 #define CKeySym 9 #define CPixmap 10 #define CPosition 11 #define CString 12 #define CStringTable 13 #define CTrans 14 #define CUnsignedChar 15 #define CUnsignedTable 16 #define CVisual 17 #define CWidget 18 #define CWidgetList 19 #define CXmString 20 #define CXmStringTable 21 typedef struct { unsigned tag; unsigned N; char *name; union { XtAccelerators acc; Boolean boolean; Colormap cmap; Cursor cursor; Dimension dim; XmFontList F; int i; int *I; KeySym keysym; Pixmap pixmap; Position posn; char *string; char **S; XtTranslations trans; uchar u; uchar *U; Visual *visual; Widget widget; WidgetList W; XmString xmString; XmString *X; } u; } ArgType; static void GetXmString(TaskData *taskData, PolyWord w, void *v, unsigned ) { XmString *p = (XmString *)v; char *s; CopyString(taskData, w, &s, 0); *p = XmStringCreateLtoR(s, (char *)XmSTRING_DEFAULT_CHARSET); free(s); } static void GetXmStrings(TaskData *taskData, PolyWord list, ArgType *T) { T->N = 0; T->u.X = 0; if (NONNIL(list)) { T->N = ListLength(list); T->u.X = (XmString *) malloc(T->N * sizeof(XmString)); GetList4(taskData, list,T->u.X,sizeof(XmString),GetXmString); } } static void GetStrings(TaskData *taskData, PolyWord list, ArgType *T) { T->N = 0; T->u.S = 0; if (NONNIL(list)) { T->N = ListLength(list); T->u.S = (char **) malloc(T->N * sizeof(char *)); GetList4(taskData, list,T->u.S,sizeof(char *),CopyString); } } static void FreeXmStrings(ArgType *T) { for(unsigned i = 0; i < T->N; i++) XmStringFree (T->u.X[i]); free(T->u.X); } static void GetITable(TaskData *taskData, PolyWord list, ArgType *T) { T->N = 0; T->u.I = 0; if (NONNIL(list)) { T->N = ListLength(list); T->u.I = (int *) malloc(T->N * sizeof(int)); GetList4(taskData, list,T->u.I,sizeof(int),GetUnsigned); } } static void GetUTable(TaskData *taskData, PolyWord list, ArgType *T) { T->N = 0; T->u.U = 0; if (NONNIL(list)) { T->N = ListLength(list); T->u.U = (uchar *)malloc(T->N * sizeof(uchar)); GetList4(taskData, list,T->u.U,sizeof(uchar),GetUChars); } } /* case CIntTable: GetITable ((ML_Cons_Cell *)v,T); break; case CUnsignedTable: GetUTable ((ML_Cons_Cell *)v,T); break; case CString: CopyString (v,&T->u.string); break; case CStringTable: GetStrings ((ML_Cons_Cell *)v,T); break; case CXmString: GetXmString (v,&T->u.xmString); break; case CXmStringTable: GetXmStrings((ML_Cons_Cell *)v,T); break; */ static void FreeArgs(ArgType *T, unsigned N) { while(N--) { free(T->name); switch(T->tag) { case CAccelerators: break; case CBool: break; case CColormap: break; case CCursor: break; case CDimension: break; case CFontList: XmFontListFree(T->u.F); break; case CInt: break; case CIntTable: break; case CKeySym: break; case CPixmap: break; case CPosition: break; case CString: XtFree(T->u.string); break; case CStringTable: FreeStrings(T->u.S,T->N); free(T->u.S); break; case CTrans: break; case CUnsignedChar: break; case CUnsignedTable: break; case CVisual: break; case CWidget: break; case CWidgetList: break; case CXmString: XmStringFree (T->u.xmString); break; case CXmStringTable: FreeXmStrings(T); break; default: Crash ("Bad arg type %x",T->tag); } T++; } } /* type Arg sharing type Arg = exn; val Exn: Arg -> Exn = Cast; val Arg: Exn -> Arg = Cast; datatype Exn = EXN of unit ref * string * unit; */ /* (string,(v,tag)) */ static void SetArgTypeP(TaskData *taskData, PolyWord fst, PolyWord snd, ArgType *T) { PolyWord v = FST(snd); T->tag = UNTAGGED(SND(snd)); T->N = 0; T->u.i = 0; CopyString(taskData, fst, &T->name, 0); switch(T->tag) { case CAccelerators: T->u.acc = GetAcc (taskData, (X_Object *)v.AsObjPtr()); break; case CBool: T->u.boolean = get_C_ulong (taskData, v); break; case CColormap: T->u.cmap = GetColormap (taskData, (X_Object *)v.AsObjPtr()); break; case CCursor: T->u.cursor = GetCursor (taskData, (X_Object *)v.AsObjPtr()); break; case CDimension: T->u.dim = get_C_ushort (taskData, v); break; case CFontList: T->u.F = GetXmFontList(v); break; case CInt: T->u.i = get_C_long (taskData, v); break; case CKeySym: T->u.keysym = get_C_ulong (taskData, v); break; case CPixmap: T->u.pixmap = GetPixmap (taskData, (X_Object *)v.AsObjPtr()); break; case CPosition: T->u.posn = get_C_short (taskData, v); break; case CTrans: T->u.trans = GetTrans (taskData, (X_Object *)v.AsObjPtr()); break; case CUnsignedChar: T->u.u = get_C_uchar (taskData, v); break; case CVisual: T->u.visual = GetVisual (taskData, (X_Object *)v.AsObjPtr()); break; case CWidget: T->u.widget = GetNWidget (taskData, (X_Object *)v.AsObjPtr()); break; /* The following types allocate memory, but only in the C heap */ case CIntTable: GetITable (taskData, v,T); break; case CUnsignedTable: GetUTable (taskData, v,T); break; case CString: CopyString (taskData, v, &T->u.string, 0); break; case CStringTable: GetStrings (taskData, v,T); break; case CXmString: GetXmString (taskData, v, &T->u.xmString, 0); break; case CXmStringTable: GetXmStrings(taskData, v,T); break; default: Crash ("Bad arg type %x",T->tag); } } static void SetArgType(TaskData *taskData, PolyWord p, void *v, unsigned) { ArgType *T = (ArgType *)v; SetArgTypeP(taskData, FST(p), SND(p), T); } static void SetArgs(Arg *A, ArgType *T, unsigned N) { while(N--) { A->name = T->name; switch(T->tag) { case CAccelerators: A->value = (XtArgVal) T->u.acc; break; case CBool: A->value = (XtArgVal) T->u.boolean; break; case CColormap: A->value = (XtArgVal) T->u.cmap; break; case CCursor: A->value = (XtArgVal) T->u.cursor; break; case CDimension: A->value = (XtArgVal) T->u.dim; break; case CFontList: A->value = (XtArgVal) T->u.F; break; case CInt: A->value = (XtArgVal) T->u.i; break; case CIntTable: A->value = (XtArgVal) T->u.I; break; case CKeySym: A->value = (XtArgVal) T->u.keysym; break; case CPixmap: A->value = (XtArgVal) T->u.pixmap; break; case CPosition: A->value = (XtArgVal) T->u.posn; break; case CString: A->value = (XtArgVal) T->u.string; break; case CStringTable: A->value = (XtArgVal) T->u.S; break; case CTrans: A->value = (XtArgVal) T->u.trans; break; case CUnsignedChar: A->value = (XtArgVal) T->u.u; break; case CUnsignedTable: A->value = (XtArgVal) T->u.U; break; case CVisual: A->value = (XtArgVal) T->u.visual; break; case CWidget: A->value = (XtArgVal) T->u.widget; break; case CXmString: A->value = (XtArgVal) T->u.xmString; break; case CXmStringTable: A->value = (XtArgVal) T->u.X; break; default: Crash ("Bad arg type %x",T->tag); } A++; T++; } } /* add current callback to (pending?) FList */ static void RunWidgetCallback(Widget w, XtPointer closure, XtPointer call_data) { C_List *C = (C_List *)closure; if (callbacks_enabled) { // Only synchronous callbacks are handled. TaskData *taskData = processes->GetTaskDataForThread(); Handle tailHandle = SAVE(FList); Handle widgetHandle = SAVE(C->widget_object); Handle functionHandle = SAVE(C->function); Handle pairHandle = CreatePair(taskData, widgetHandle,functionHandle); FList = DEREFWORD(CreatePair(taskData, pairHandle,tailHandle)); } #if 0 else printf("Ignoring event for widget %p\n",C->widget_object); #endif } static void SetCallbacks(TaskData *taskData, X_Widget_Object *W, PolyWord list, PolyWord initial) { char name[100]; Widget w = GetWidget(taskData, (X_Object *)W); assert(w != NULL); /* SPF */ assert(w != (Widget)1); /* SPF */ for(PolyWord pp = W->callbackList; NONNIL(pp); pp = ((ML_Cons_Cell*)pp.AsObjPtr())->t) { MLPair *q = (MLPair *)((ML_Cons_Cell*)pp.AsObjPtr())->h.AsObjPtr(); Poly_string_to_C(FST(q),name,sizeof(name)); if (strcmp(name,"messageCallback") != 0 && strcmp(name,XtNdestroyCallback) != 0) { XtRemoveAllCallbacks(w,name); } } #if 0 /* We no longer need the old callback data for this widget, assuming we've replaced all the callbacks. But what if we've only replaced some of them? It's probably better to allow this space leak that to delete vital callback data. I'll have to think about this hard sometime. (Of course, the user isn't supposed to call XtSetCallbacks more than once, in which case the problem doesn't even arise.) SPF 29/2/96 */ PurgeCCallbacks(W,w); #endif for(PolyWord p = list; NONNIL(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) { C_List *C = (C_List *)malloc(sizeof(C_List)); MLPair *q = (MLPair *)((ML_Cons_Cell*)p.AsObjPtr())->h.AsObjPtr(); C->function = SND(q).AsObjPtr(); C->widget_object = W; C->next = CList; debugCreateCallback(W,w,C); CList = C; Poly_string_to_C(FST(q),name,sizeof(name)); if (strcmp(name,"messageCallback") != 0 && strcmp(name,XtNdestroyCallback) != 0) { XtAddCallback(w,name,RunWidgetCallback,C); } } W->state = initial; W->callbackList = list; } static void RunWidgetEventhandler (Widget w, XtPointer p, XEvent *ev, Boolean *c) { C_List *C = (C_List *)p; if ( callbacks_enabled ) { TaskData *taskData = processes->GetTaskDataForThread(); Handle tailHandle = SAVE(GList); Handle widgetHandle = SAVE(C->widget_object); Handle functionHandle = SAVE(C->function); Handle pairHandle = CreatePair(taskData, widgetHandle,functionHandle); GList = (ML_Cons_Cell *)DEREFHANDLE(CreatePair(taskData, pairHandle,tailHandle)); } } static void AddEventhandler ( TaskData *taskData, X_Widget_Object *W, EventMask EventM, Boolean nonmask, Handle p) { Widget w = GetWidget(taskData, (X_Object *)W) ; C_List *C = (C_List *) malloc ( sizeof(C_List) ) ; /* Add the function to the callback list, so that it will not be G.C'ed away. */ C->function = DEREFHANDLE(p); C->widget_object = W ; C->next = CList ; CList = C ; XtAddEventHandler (w, EventM, nonmask, RunWidgetEventhandler, C); } static Handle AppInitialise ( TaskData *taskData, PolyWord s1, PolyWord s2, PolyWord s3, Handle fallbackHead, Handle argHead ) { char displayName[500]; char appName[500]; char appClass[500]; XtAppContext app_context; Display *display; Widget shell; Handle dsHandle /* Handle to (X_Display_Object *) */; int argc = 0; /* an "int" for Solaris, but should be "unsigned" for SunOS */ unsigned F = ListLength(DEREFWORD(fallbackHead)) + 1; unsigned N = ListLength(DEREFWORD(argHead)); char **S = (char **) alloca(F * sizeof(char *)); Arg *R = (Arg *) alloca(N * sizeof(Arg)); ArgType *T = (ArgType *) alloca(N * sizeof(ArgType)); Poly_string_to_C(s1,displayName ,sizeof(displayName)); Poly_string_to_C(s2,appName ,sizeof(appName)); Poly_string_to_C(s3,appClass ,sizeof(appClass)); app_context = XtCreateApplicationContext(); GetList4(taskData, DEREFWORD(fallbackHead),S,sizeof(char *),CopyString); S[F-1] = NULL; /* list must be NULL terminated */ XtAppSetFallbackResources(app_context,S); display = XtOpenDisplay(app_context,displayName,appName,appClass,NULL,0,&argc,0); if (display == 0) RaiseXWindows(taskData, "XtAppInitialise failed (can't open display)"); /* I don't think this is needed. DCJM 26/5/2000 */ /* add_file_descr(display->fd); */ debug1 ("%s display opened\n",DisplayString(display)); debug1 ("%x display fd\n",display->fd); /* ok to store C values because this is a BYTE object */ dsHandle = alloc_and_save(taskData, SIZEOF(X_Display_Object), F_MUTABLE_BIT|F_BYTE_OBJ); DEREFDISPLAYHANDLE(dsHandle)->type = TAGGED(X_Display); DEREFDISPLAYHANDLE(dsHandle)->display = display; DEREFDISPLAYHANDLE(dsHandle)->screen = DefaultScreen(display); DEREFDISPLAYHANDLE(dsHandle)->app_context = app_context; AddXObject(FINISHED(taskData, dsHandle)); GetList4(taskData, DEREFWORD(argHead),T,sizeof(ArgType),SetArgType); SetArgs(R,T,N); shell = XtAppCreateShell(appName,appClass,applicationShellWidgetClass,display,R,N); FreeArgs(T,N); if (shell == 0) RaiseXWindows(taskData, "XtAppInitialise failed (can't create application shell)"); /* added 7/12/94 SPF */ XtAddCallback(shell,XtNdestroyCallback,DestroyWidgetCallback,NULL); return NewWidget(taskData, dsHandle,shell); } static Handle CreatePopupShell ( TaskData *taskData, PolyStringObject *s, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget parent, Handle list ) { char name[100]; Widget shell; unsigned N = ListLength(DEREFWORD(list)); Arg *A = (Arg *) alloca(N * sizeof(Arg)); ArgType *T = (ArgType *) alloca(N * sizeof(ArgType)); GetList4(taskData, DEREFWORD(list),T,sizeof(ArgType),SetArgType); SetArgs(A,T,N); Poly_string_to_C(s,name,sizeof(name)); shell = XtCreatePopupShell(name,applicationShellWidgetClass,parent,A,N); FreeArgs(T,N); if (shell == 0) RaiseXWindows(taskData, "XtCreatePopupShell failed"); /* added 7/12/94 SPF */ XtAddCallback(shell,XtNdestroyCallback,DestroyWidgetCallback,NULL); return NewWidget(taskData, dsHandle,shell); } static Handle CreateXm ( TaskData *taskData, Widget (*create)(Widget, String, ArgList, Cardinal), char *failed, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget parent, PolyStringObject *s, Handle list /* Handle to (ML_Cons_Cell *) */ ) { char name[100]; Widget w; unsigned N = ListLength(DEREFWORD(list)); Arg *A = (Arg *) alloca(N * sizeof(Arg)); ArgType *T = (ArgType *) alloca(N * sizeof(ArgType)); GetList4(taskData, DEREFWORD(list),T,sizeof(ArgType),SetArgType); SetArgs(A,T,N); Poly_string_to_C(s,name,sizeof(name)); w = (* create)(parent,name,A,N); FreeArgs(T,N); if (w == 0) RaiseXWindows(taskData, failed); XtAddCallback(w,XtNdestroyCallback,DestroyWidgetCallback,NULL); return NewWidget(taskData, dsHandle,w); } static void SetValues(TaskData *taskData, Widget w, Handle list) { unsigned N = ListLength(DEREFWORD(list)); Arg *A = (Arg *) alloca(N * sizeof(Arg)); ArgType *T = (ArgType *) alloca(N * sizeof(ArgType)); GetList4(taskData, DEREFWORD(list),T,sizeof(ArgType),SetArgType); SetArgs(A,T,N); XtSetValues(w,A,N); FreeArgs(T,N); } typedef struct { const char *listName; char *intName; } StringPair; static StringPair listTypes[] = { {"argv" ,(char *) "argc"}, {"buttonAccelerators" ,(char *) "buttonCount"}, {"buttonAcceleratorText" ,(char *) "buttonCount"}, {"buttonMnemonicCharSets",(char *) "buttonCount"}, {"buttonMnemonics" ,(char *) "buttonCount"}, {"buttons" ,(char *) "buttonCount"}, {"buttonType" ,(char *) "buttonCount"}, {"children" ,(char *) "numChildren"}, {"dirListItems" ,(char *) "dirListItemCount"}, {"fileListItems" ,(char *) "fileListItemCount"}, {"historyItems" ,(char *) "historyItemCount"}, {"items" ,(char *) "itemCount"}, {"listItems" ,(char *) "listItemCount"}, {"selectedItems" ,(char *) "selectedItemCount"}, {"selectionArray" ,(char *) "selectionArrayCount"}, }; #define MAXListTYPES (sizeof(listTypes)/sizeof(listTypes[0])) /* (string,(v,tag)) - ML (string*Ctype) */ static void GetArgType ( TaskData *taskData, PolyWord p, ArgType *T, int i, /* not used; needed to keep function type right */ Widget w ) { T->tag = UNTAGGED(SND(SND(p))); T->N = 0; T->u.i = 0; CopyString(taskData, FST(p), &T->name, 0); if (T->tag == CIntTable || T->tag == CUnsignedTable || T->tag == CWidgetList || T->tag == CStringTable || T->tag == CXmStringTable) /* if it is a list type we need to get the length from another resource */ { Arg arg; unsigned i; int result; for(i = 0; i < MAXListTYPES; i++) { if (strcmp(listTypes[i].listName,T->name) == 0) break; } if (i == MAXListTYPES) Crash ("Bad list resource name %s",T->name); arg.name = listTypes[i].intName; arg.value = (XtArgVal) &result; /* Bug fix here which only appeared in OpenMotif and LessTif. We need to pass the address of an integer here to receive the result. DCJM 17/5/02. */ XtGetValues(w, &arg, 1); T->N = result; } } static Handle CreateWidget(TaskData *taskData, void *p, Handle dsHandle /* Handle to (X_Display_Object *) */) { return EmptyWidget(taskData, dsHandle, *(Widget*)p); } static Handle CreateXmString(TaskData *taskData, void *t) { char *s; Handle S; XmStringGetLtoR(*(XmString *)t,(char *) XmSTRING_DEFAULT_CHARSET,&s); S = Make_string(s); XtFree(s); return S; } static Handle CreateFontList ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ XmFontList F ) { XmFontContext C; XmStringCharSet charset; XFontStruct *fs; Handle list = 0; Handle tail = 0; if (XmFontListInitFontContext(&C,F) == False) return SAVE(ListNull); // TODO: This previously reset the save vector each time to make sure it // didn't overflow. I've removed that code but it needs to be put back. while (XmFontListGetNextFont(C,&charset,&fs)) { Handle L = alloc_and_save(taskData, SIZEOF(ML_Cons_Cell), F_MUTABLE_BIT); if (list == 0) list = L; // This is the first. if (tail != 0) { DEREFLISTHANDLE(tail)->t = DEREFWORD(L); FINISHED(taskData, tail); } tail = L; /* the new list element is joined on, but not filled in */ DEREFLISTHANDLE(tail)->h = DEREFWORD(CreatePair(taskData, CreateFontStruct(taskData,fs,dsHandle),Make_string(charset))); DEREFLISTHANDLE(tail)->t = ListNull; } XmFontListFreeFontContext(C); if (tail != 0) FINISHED(taskData, tail); return list; } static Handle CreateUChar(TaskData *taskData, void *p) { return Make_arbitrary_precision(taskData, *(uchar *)p); } static Handle CreateArg(TaskData *taskData, void *v, Handle dsHandle /* Handle to (X_Display_Object *) */) { ArgType *T = (ArgType *)v; Handle value; switch(T->tag) { case CAccelerators: value = EmptyAcc (taskData, T->u.acc); break; case CBool: value = Make_bool (T->u.boolean); break; case CColormap: value = EmptyColormap (taskData, dsHandle,T->u.cmap); break; case CCursor: value = EmptyCursor (taskData, dsHandle,T->u.cursor); break; case CDimension: value = Make_int (T->u.dim); break; case CFontList: value = CreateFontList(taskData, dsHandle,T->u.F); break; case CInt: value = Make_int (T->u.i); break; case CKeySym: value = Make_arbitrary_precision (taskData, T->u.keysym); break; case CPixmap: value = EmptyPixmap (taskData, dsHandle,T->u.pixmap); break; case CPosition: value = Make_int (T->u.posn); break; case CString: value = Make_string (T->u.string); break; case CTrans: value = EmptyTrans (taskData, T->u.trans); break; case CUnsignedChar: value = Make_arbitrary_precision (taskData, T->u.u); break; case CVisual: value = EmptyVisual (taskData, dsHandle,T->u.visual); break; case CWidget: value = EmptyWidget (taskData, dsHandle,T->u.widget); break; case CXmString: value = CreateXmString(taskData, &T->u.xmString); break; case CIntTable: value = CreateList4(taskData, T->N,T->u.I,sizeof(int), CreateUnsigned); break; case CUnsignedTable: value = CreateList4(taskData, T->N,T->u.U,sizeof(uchar), CreateUChar); break; case CStringTable: value = CreateList4(taskData, T->N,T->u.S,sizeof(char *), CreateString); break; case CWidgetList: value = CreateList5(taskData,T->N,T->u.W,sizeof(Widget), CreateWidget,dsHandle); break; case CXmStringTable: value = CreateList4(taskData, T->N,T->u.X,sizeof(XmString),CreateXmString); break; default: Crash ("Bad arg type %x",T->tag); /*NOTREACHED*/ } return value; } static Handle GetValue ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget w, PolyWord pair /* ML (string*Ctype) */ ) { Arg A; ArgType T; XmString *X = (XmString *) 0x55555555; XmString *Y = (XmString *) 0xAAAAAAAA; GetArgType(taskData,pair,&T,0,w); A.name = T.name; A.value = (XtArgVal) &T.u; T.u.X = X; /* The value is set to X. If it is left set to X */ /* then this may be a value this widget doesn't have. */ XtGetValues(w,&A,1); if (T.u.X == X) { T.u.X = Y; XtGetValues(w,&A,1); if (T.u.X == Y) { char buffer[500]; sprintf(buffer,"XtGetValues (%s) failed",T.name); RaiseXWindows(taskData, buffer); } } return CreateArg(taskData, &T,dsHandle); } /* What is the real ML type of p? (string*Ctype*string*string*string*Ctype) */ static void GetResource ( TaskData *taskData, PolyWord pp, XtResource *R, int i, ArgType *T, ArgType *D, Widget w ) { PolyObject *p = pp.AsObjPtr(); GetArgType(taskData,pp,&T[i],0,w); /* HACK !!! */ CopyString(taskData, p->Get(0), &R->resource_name, 0); CopyString(taskData, p->Get(2), &R->resource_class, 0); CopyString(taskData, p->Get(3), &R->resource_type, 0); R->resource_size = 4; R->resource_offset = (byte*)(&T[i].u) - (byte*)(T); SetArgTypeP(taskData, p->Get(4), p->Get(5), &D[i]); /* This was a hack. I hope I converted it correctly. DCJM */ R->default_type = D[i].name; if (UNTAGGED(p->Get(5).AsObjPtr()->Get(1)) == CString) R->default_addr = (XtPointer) D[i].u.string; else R->default_addr = (XtPointer) &D[i].u; } static Handle GetSubresources ( TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget w, PolyStringObject *s1, PolyStringObject *s2, Handle list ) { char name [100]; char clas[100]; unsigned N = ListLength(DEREFWORD(list)); ArgType *T = (ArgType *) alloca(N * sizeof(ArgType)); ArgType *D = (ArgType *) alloca(N * sizeof(ArgType)); XtResource *R = (XtResource *) alloca(N * sizeof(XtResource)); { unsigned i = 0; for(PolyWord p = DEREFWORD(list); NONNIL(p); p = ((ML_Cons_Cell *)p.AsObjPtr())->t) { GetResource(taskData,((ML_Cons_Cell *)p.AsObjPtr())->h,&R[i],i,T,D,w); i++; } } Poly_string_to_C(s1,name ,sizeof(name)); Poly_string_to_C(s2,clas,sizeof(clas)); XtGetSubresources(w,T,name,clas,R,N,NULL,0); return CreateList5(taskData,N,T,sizeof(ArgType),CreateArg,dsHandle); } static Handle GetApplicationResources (TaskData *taskData, Handle dsHandle, /* Handle to (X_Display_Object *) */ Widget w, Handle list ) { unsigned N = ListLength (DEREFLISTHANDLE(list)) ; ArgType *T = (ArgType *) alloca ( N * sizeof(ArgType) ) ; ArgType *D = (ArgType *) alloca ( N * sizeof(ArgType) ) ; XtResource *R = (XtResource *) alloca ( N * sizeof(XtResource) ) ; { unsigned i = 0; for(PolyWord p = DEREFWORD(list); NONNIL(p); p = ((ML_Cons_Cell *)p.AsObjPtr())->t) { GetResource(taskData,((ML_Cons_Cell *)p.AsObjPtr())->h,&R[i],i,T,D,w); i++; } } XtGetApplicationResources ( w,T,R,N,NULL,0 ) ; return CreateList5 (taskData, N,T,sizeof(ArgType),CreateArg,dsHandle ) ; } static void GetChild(TaskData *taskData, PolyWord p, void *v, unsigned) { Widget *w = (Widget *)v; *w = GetWidget(taskData, (X_Object *)p.AsObjPtr()); if (XtParent(*w) == NULL) RaiseXWindows(taskData, "not a child"); } static void ManageChildren(TaskData *taskData, Handle list) { unsigned N = ListLength(DEREFWORD(list)); Widget *W = (Widget *) alloca(N * sizeof(Widget)); GetList4(taskData, DEREFWORD(list),W,sizeof(Widget),GetChild); XtManageChildren(W,N); } static void UnmanageChildren(TaskData *taskData, Handle list) { unsigned N = ListLength(DEREFWORD(list)); Widget *W = (Widget *) alloca(N * sizeof(Widget)); GetList4(taskData, DEREFWORD(list),W,sizeof(Widget),GetChild); XtUnmanageChildren(W,N); } static Handle ParseTranslationTable(TaskData *taskData, PolyStringObject *s) { XtTranslations table; int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); table = XtParseTranslationTable(buffer); return EmptyTrans(taskData, table); } static void CommandError(TaskData *taskData, Widget w, PolyWord s) { XmString p; GetXmString(taskData, s, &p, 0); XmCommandError(w,p); XmStringFree (p); } static void FileSelectionDoSearch(TaskData *taskData, Widget w, PolyWord s) { XmString p; GetXmString(taskData, s, &p, 0); XmFileSelectionDoSearch(w,p); XmStringFree (p); } static void MenuPosition (Widget w, int x, int y) { XButtonPressedEvent ev; memset (&ev, 0, sizeof(ev)); ev.type = 4; /* Must be button. */ ev.x_root = x; ev.y_root = y; ev.button = 3; /* Is this required? */ ev.same_screen = 1; /* Assume this. */ XmMenuPosition (w, &ev); } static Handle XmIsSomething(TaskData *taskData, unsigned is_code, Widget widget) { unsigned i; switch(is_code) { case 1: i = XmIsArrowButton (widget); break; case 2: i = XmIsArrowButtonGadget (widget); break; case 3: i = XmIsBulletinBoard (widget); break; case 4: i = XmIsCascadeButton (widget); break; case 5: i = XmIsCascadeButtonGadget(widget); break; case 6: i = XmIsCommand (widget); break; case 7: i = XmIsDesktopObject (widget); break; /* ok - SPF 9/8/94 */ case 8: i = XmIsDialogShell (widget); break; /* Unsupported in Motif 1.2 case 9: i = XmIsDisplayObject (widget); break; */ case 10: i = XmIsDrawingArea (widget); break; case 11: i = XmIsDrawnButton (widget); break; case 12: i = XmIsExtObject (widget); break; /* ok - SPF 9/8/94 */ case 13: i = XmIsFileSelectionBox (widget); break; case 14: i = XmIsForm (widget); break; case 15: i = XmIsFrame (widget); break; case 16: i = XmIsGadget (widget); break; case 17: i = XmIsLabel (widget); break; case 18: i = XmIsLabelGadget (widget); break; case 19: i = XmIsList (widget); break; case 20: i = XmIsMainWindow (widget); break; case 21: i = XmIsManager (widget); break; case 22: i = XmIsMenuShell (widget); break; case 23: i = XmIsMessageBox (widget); break; case 24: i = XmIsMotifWMRunning (widget); break; case 25: i = XmIsPanedWindow (widget); break; case 26: i = XmIsPrimitive (widget); break; case 27: i = XmIsPushButton (widget); break; case 28: i = XmIsPushButtonGadget (widget); break; case 29: i = XmIsRowColumn (widget); break; case 30: i = XmIsScale (widget); break; /* Unsupported in Motif 1.2 case 31: i = XmIsScreenObject (widget); break; */ case 32: i = XmIsScrollBar (widget); break; case 33: i = XmIsScrolledWindow (widget); break; case 34: i = XmIsSelectionBox (widget); break; case 35: i = XmIsSeparator (widget); break; case 36: i = XmIsSeparatorGadget (widget); break; #ifdef LESSTIF_VERSION /* This is not supported in LessTif, at least not 0.89. */ case 37: RaiseXWindows(taskData, "XmIsShellExt: not implemented"); #else case 37: i = XmIsShellExt (widget); break; /* ok - SPF 9/8/94 */ #endif case 38: i = XmIsText (widget); break; case 39: i = XmIsTextField (widget); break; case 40: i = XmIsToggleButton (widget); break; case 41: i = XmIsToggleButtonGadget (widget); break; case 42: i = XmIsVendorShell (widget); break; case 43: i = XmIsVendorShellExt (widget); break; /* ok - SPF 9/8/94 */ /* Unsupported in Motif 1.2 case 44: i = XmIsWorldObject (widget); break; */ default: Crash ("Bad code (%d) in XmIsSomething",is_code); /* NOTREACHED*/ } return Make_bool(i); } /******************************************************************************/ /* */ /* Wrappers for standard widget operations */ /* */ /******************************************************************************/ /************************* 0 parameters, no result ****************************/ /* widget -> unit */ static void WidgetAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData,func_name,arg1); applyFunc(w); } /************************* 1 parameter, no result *****************************/ /* widget -> bool -> unit */ static void WidgetBoolAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, Boolean), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); Boolean b = (get_C_short(taskData, arg2) != 0); applyFunc(w,b); } /* widget -> int -> unit */ static void WidgetIntAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, int), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); int i = get_C_long(taskData, arg2); applyFunc(w,i); } /* widget -> int -> unit */ static void WidgetLongAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, long), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); long i = get_C_long(taskData, arg2); applyFunc(w,i); } /* widget -> string -> unit */ static void WidgetXmstringAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, XmString), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); XmString s; GetXmString(taskData, arg2, &s, 0); applyFunc(w,s); XmStringFree(s); } /* widget -> string list -> unit */ static void WidgetXmstringlistAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, XmString *, int), X_Object *arg1, ML_Cons_Cell *arg2 ) { Widget w = getWidget(taskData,func_name,arg1); unsigned n = ListLength(arg2); XmString *strings = (XmString *)alloca(n * sizeof(XmString)); GetList4(taskData, arg2,strings,sizeof(XmString),GetXmString); applyFunc(w,strings,n); for (unsigned i = 0; i < n; i ++) XmStringFree(strings[i]); } /************************* 2 parameters, no result ****************************/ /* widget -> int -> bool -> unit */ static void WidgetIntBoolAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, int, Boolean), X_Object *arg1, PolyWord arg2, PolyWord arg3 ) { Widget w = getWidget(taskData,func_name,arg1); int i = get_C_long(taskData, arg2); Boolean b = (get_C_ushort(taskData, arg3) != 0); applyFunc(w,i,b); } /* widget -> int -> int -> unit */ static void WidgetIntIntAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, int, int), X_Object *arg1, PolyWord arg2, PolyWord arg3 ) { Widget w = getWidget(taskData,func_name,arg1); int x = get_C_long(taskData, arg2); int y = get_C_long(taskData, arg3); applyFunc(w,x,y); } /* widget -> string -> bool -> unit */ static void WidgetXmstringBoolAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, XmString, Boolean), X_Object *arg1, PolyWord arg2, PolyWord arg3 ) { Widget w = getWidget(taskData,func_name,arg1); XmString s; Boolean b = (get_C_ushort(taskData, arg3) != 0); GetXmString(taskData, arg2, &s, 0); applyFunc(w,s,b); XmStringFree(s); } /* widget -> string -> int -> unit */ static void WidgetXmstringIntAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, XmString, int), X_Object *arg1, PolyWord arg2, PolyWord arg3 ) { Widget w = getWidget(taskData,func_name,arg1); XmString s; int i = get_C_long(taskData, arg3); GetXmString(taskData, arg2, &s, 0); applyFunc(w,s,i); XmStringFree(s); } /* widget -> string list -> int -> unit */ static void WidgetXmstringlistIntAction ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), void applyFunc(Widget, XmString *, int, int), X_Object *arg1, ML_Cons_Cell *arg2, PolyWord arg3 ) { Widget w = getWidget(taskData,func_name,arg1); unsigned n = ListLength(arg2); int i = get_C_long(taskData, arg3); XmString *strings = (XmString *)alloca(n * sizeof(XmString)); GetList4(taskData, arg2,strings,sizeof(XmString),GetXmString); applyFunc(w,strings,n,i); for (unsigned i = 0; i < n; i ++) XmStringFree(strings[i]); } /************************* n parameters, some result **************************/ static Handle int_ptr_to_arb(TaskData *taskData, void *p) { return Make_arbitrary_precision(taskData, *(int *)p); } /* widget -> int */ static Handle WidgetToInt ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), int applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData, func_name,arg1); int res = applyFunc(w); return(Make_arbitrary_precision(taskData, res)); } /* widget -> int */ static Handle WidgetToLong ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *taskData, char *, X_Object *), long applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData, func_name,arg1); long res = applyFunc(w); return(Make_arbitrary_precision(taskData, res)); } #if 0 /* widget -> int */ static Handle WidgetToUnsigned ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), unsigned applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData, func_name,arg1); unsigned res = applyFunc(w); return(Make_arbitrary_precision(taskData, res)); } #endif /* widget -> bool */ static Handle WidgetToBool ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), Boolean applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData, func_name,arg1); Boolean res = applyFunc(w); return(Make_bool(res)); } /* widget -> string */ static Handle WidgetToString ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), char *applyFunc(Widget), X_Object *arg1 ) { Widget w = getWidget(taskData, func_name,arg1); char *s = applyFunc(w); Handle res = Make_string(s); /* safe, even if C pointer is NULL */ XtFree(s); return(res); } /* widget -> int list */ static Handle WidgetToIntlist ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), Boolean applyFunc(Widget, int**, int *), X_Object *arg1 ) { int item_count, *items; Boolean non_empty; Widget w = getWidget(taskData,func_name,arg1); non_empty = applyFunc(w, &items, &item_count); if (non_empty != TRUE) /* nothing found, and Motif hasn't allocated any space */ /* so just retun nil */ { return (SAVE(ListNull)); } else /* copy the list into the ML heap, then free it */ { Handle res = CreateList4(taskData, item_count,items,sizeof(int),int_ptr_to_arb); XtFree((char *)items); return res; } } /* widget -> string -> int list */ static Handle WidgetXmstringToIntlist ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), Boolean applyFunc(Widget, XmString, int**, int *), X_Object *arg1, PolyWord arg2 ) { int item_count, *items; Boolean non_empty; Widget w = getWidget(taskData,func_name,arg1); XmString s; GetXmString(taskData, arg2, &s, 0); non_empty = applyFunc(w, s, &items, &item_count); XmStringFree(s); if (non_empty != TRUE) /* nothing found, so just retun nil */ { return (SAVE(ListNull)); } else /* copy the list into the ML heap, then free it */ { Handle res = CreateList4(taskData, item_count,items,sizeof(int),int_ptr_to_arb); XtFree((char *)items); return res; } } /* widget -> string -> int */ static Handle WidgetXmstringToInt ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), int applyFunc(Widget, XmString), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); XmString s; int res; GetXmString(taskData, arg2, &s, 0); res = applyFunc(w, s); XmStringFree(s); return (Make_int(res)); } /* widget -> string -> bool */ static Handle WidgetXmstringToBool ( TaskData *taskData, char *func_name, Widget getWidget(TaskData *, char *, X_Object *), Boolean applyFunc(Widget, XmString), X_Object *arg1, PolyWord arg2 ) { Widget w = getWidget(taskData,func_name,arg1); XmString s; Boolean res; GetXmString(taskData, arg2, &s, 0); res = applyFunc(w, s); XmStringFree(s); return (Make_bool(res)); } /******************************************************************************/ /* code added SPF 25/2/95 */ static bool isPossibleString(PolyObject *P) { if (!OBJ_IS_DATAPTR(P)) return false; POLYUNSIGNED L = P->LengthWord(); if (! OBJ_IS_BYTE_OBJECT(L)) return false; /* get object PolyWord count */ POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); if (n < 1) return false; /* get string byte count */ POLYUNSIGNED m = P->Get(0).AsUnsigned(); /* number of words to hold the bytes */ m = (m + 3) / 4; /* number of words to hold the bytes, plus the byte count */ m = m + 1; /* If that's the same as the object PolyWord count, we've probably got a genuine string! */ return (m == n); } /* Prints out the contents of a PolyWord in the X interface tuple */ static void DebugPrintWord(PolyWord P /* was X_Object *P */) { TaskData *taskData = processes->GetTaskDataForThread(); if (IS_INT((P))) { printf("Short %d", (int)UNTAGGED(P)); return; } if (isPossibleString(P.AsObjPtr())) { if (((PolyStringObject*)P.AsObjPtr())->length <= 40) { printf("String: \""); print_string((PolyStringObject*) P.AsObjPtr()); printf("\""); return; } else { printf("Long String: %p", P.AsAddress()); return; } } /* The problem with the following code was that we can't be sure that the object we have is really an X_Object - it might just look like one. If this is the case, when we try to validate the object using ResourceExists we may get a core dump because ResourceExists assumes it has a valid X_Object and calls hashId which dereferences fields within the so-called X_object. That's why we redefine ResourceExists to be SafeResourceExists which doesn't make any assumptions about the contents of the so-called X_object. SPF 6/4/95 */ #define XP ((X_Object *)P.AsObjPtr()) #define ResourceExists SafeResourceExists { switch(UNTAGGED(XP->type)) { case X_GC: (ResourceExists(XP) ? printf("GC %lx", GetGC(taskData, XP)->gid) : printf("Old GC <%lx>",P.AsUnsigned())); return; case X_Font: (ResourceExists(XP) ? printf("Font %lx",GetFont(taskData, XP)) : printf("Old Font <%x>",(int)P.AsUnsigned())); return; case X_Cursor: (ResourceExists(XP) ? printf("Cursor %lx",GetCursor(taskData, XP)) : printf("Old Cursor <%x>",(int)P.AsUnsigned())); return; case X_Window: (ResourceExists(XP) ? printf("Window %lx",GetWindow(taskData, XP)) : printf("Old Window <%p>",P.AsAddress())); return; case X_Pixmap: (ResourceExists(XP) ? printf("Pixmap %lx",GetPixmap(taskData, XP)) : printf("Old Pixmap <%p>",P.AsAddress())); return; case X_Colormap: (ResourceExists(XP) ? printf("Colormap %lx",GetColormap(taskData, XP)) : printf("Old Colormap <%p>",P.AsAddress())); return; case X_Visual: (ResourceExists(XP) ? printf("Visual %lx",GetVisual(taskData, XP)->visualid) : printf("Old Visual <%p>",P.AsAddress())); return; case X_Widget: (ResourceExists(XP) ? printf("Widget %p",GetNWidget(taskData, XP)) : printf("Old Widget <%p>",P.AsAddress())); return; case X_Trans: (ResourceExists(XP) ? printf("Trans %p",GetTrans(taskData, XP)) : printf("Old Trans <%p>",P.AsAddress())); return; case X_Acc: (ResourceExists(XP) ? printf("Acc %p",GetAcc(taskData, XP)) : printf("Old Acc <%p>",P.AsAddress())); return; case X_Display: (ResourceExists(XP) ? printf("Display %s", DisplayString(GetDisplay(taskData, XP))) + printf(":%x", GetDisplay(taskData, XP)->fd) : printf("Old Display <%p>",P.AsAddress())); return; default: printf("Pointer "ZERO_X"%p",P.AsAddress()); return; } } #undef ResourceExists #undef XP } /* Prints out the contents of the X interface tuple */ static void DebugPrintCode(PolyObject *pt) { POLYUNSIGNED N = pt->Length(); POLYUNSIGNED i = 1; assert(IS_INT(pt->Get(0))); printf("%ld:(", UNTAGGED(pt->Get(0))); while(i < N) { DebugPrintWord(pt->Get(i++)); if (i < N) printf(","); } printf(")\n"); } #define P0 DEREFHANDLE(params)->Get(0) #define P1 DEREFHANDLE(params)->Get(1) #define P2 DEREFHANDLE(params)->Get(2) #define P3 DEREFHANDLE(params)->Get(3) #define P4 DEREFHANDLE(params)->Get(4) #define P5 DEREFHANDLE(params)->Get(5) #define P6 DEREFHANDLE(params)->Get(6) #define P7 DEREFHANDLE(params)->Get(7) #define P8 DEREFHANDLE(params)->Get(8) #define P9 DEREFHANDLE(params)->Get(9) #define P10 DEREFHANDLE(params)->Get(10) #define P11 DEREFHANDLE(params)->Get(11) #define P12 DEREFHANDLE(params)->Get(12) #define XP1 ((X_Object *)P1.AsObjPtr()) #define XP2 ((X_Object *)P2.AsObjPtr()) #define XP3 ((X_Object *)P3.AsObjPtr()) #define XP4 ((X_Object *)P4.AsObjPtr()) #define XP5 ((X_Object *)P5.AsObjPtr()) #define XP6 ((X_Object *)P6.AsObjPtr()) #define XP7 ((X_Object *)P7.AsObjPtr()) /* Xwindows_c gets passed the address of an object in save_vec, */ /* which is itself a pointer to a tuple in the Poly heap. */ Handle XWindows_c(TaskData *taskData, Handle params) { int code = get_C_short(taskData, P0); if ((debugOptions & DEBUG_X)) DebugPrintCode(DEREFHANDLE(params)); switch(code) { case XCALL_Not: return Make_arbitrary_precision(taskData, ~ get_C_ulong(taskData, P1)); case XCALL_And: return Make_arbitrary_precision(taskData, get_C_ulong(taskData, P1) & get_C_ulong(taskData, P2)); case XCALL_Or: return Make_arbitrary_precision(taskData, get_C_ulong(taskData, P1) | get_C_ulong(taskData, P2)); case XCALL_Xor: return Make_arbitrary_precision(taskData, get_C_ulong(taskData, P1) ^ get_C_ulong(taskData, P2)); case XCALL_DownShift: return Make_arbitrary_precision(taskData, get_C_ulong(taskData, P1) >> get_C_ulong(taskData, P2)); case XCALL_UpShift: return Make_arbitrary_precision(taskData, get_C_ulong(taskData, P1) << get_C_ulong(taskData, P2)); case XCALL_NoDrawable: return EmptyPixmap(taskData, SAVE(ListNull),(Pixmap)get_C_ulong(taskData, P1)); case XCALL_NoCursor: return EmptyCursor(taskData, SAVE(ListNull),(Cursor)None); case XCALL_NoFont: return EmptyFont(taskData, SAVE(ListNull),(Font)None,(XFontStruct *)NULL); case XCALL_NoColormap: return EmptyColormap(taskData, SAVE(ListNull),(Colormap) None); case XCALL_NoVisual: return EmptyVisual(taskData, SAVE(ListNull),(Visual *)None); case XCALL_GetTimeOfDay: return GetTimeOfDay(taskData); /* Colorcells 100 */ case XCALL_XAllocColor: return AllocColor(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),GetXColor1(taskData, P2)); case XCALL_XAllocColorCells: return AllocColorCells(taskData, GetDisplay(taskData, XP1), GetColormap(taskData, XP1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), get_C_ulong(taskData, P4)); case XCALL_XAllocColorPlanes: return AllocColorPlanes(taskData, GetDisplay(taskData, XP1), GetColormap(taskData, XP1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), get_C_ulong(taskData, P4), get_C_ulong(taskData, P5), get_C_ulong(taskData, P6)); case XCALL_XAllocNamedColor: return AllocNamedColor(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),GetString(P2)); case XCALL_XFreeColors: FreeColors(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),SAVE(P2),get_C_ulong(taskData, P3)); break; case XCALL_XLookupColor: return LookupColor(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),GetString(P2)); case XCALL_XParseColor: return ParseColor(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),GetString(P2)); case XCALL_XQueryColor: return QueryColor(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),get_C_ulong(taskData, P2)); case XCALL_XQueryColors: return QueryColors(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),SAVE(P2)); case XCALL_XStoreColor: XStoreColor(GetDisplay(taskData, XP1),GetColormap(taskData, XP1),GetXColor1(taskData, P2)); break; case XCALL_XStoreColors: StoreColors(taskData, GetDisplay(taskData, XP1),GetColormap(taskData, XP1),SAVE(P2)); break; case XCALL_XStoreNamedColor: StoreNamedColor(GetDisplay(taskData, XP1), GetColormap(taskData, XP1), GetString(P2), get_C_ulong(taskData, P3), get_C_ulong(taskData, P4), get_C_ulong(taskData, P5), get_C_ulong(taskData, P6)); break; case XCALL_BlackPixel: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, BlackPixel(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } case XCALL_WhitePixel: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, WhitePixel(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } /* Colormaps 150 */ case XCALL_XCopyColormapAndFree: return EmptyColormap(taskData, GetDS(taskData, XP1),XCopyColormapAndFree(GetDisplay(taskData, XP1),GetColormap(taskData, XP1))); case XCALL_XCreateColormap: return EmptyColormap(taskData, GetDS(taskData, XP1),XCreateColormap(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetVisual(taskData, XP2),get_C_ulong(taskData, P3))); case XCALL_XInstallColormap: XInstallColormap(GetDisplay(taskData, XP1),GetColormap(taskData, XP1)); break; case XCALL_XListInstalledColormaps: return ListInstalledColormaps(taskData, GetDS(taskData, XP1),GetDrawable(taskData, XP1)); case XCALL_XUninstallColormap: XUninstallColormap(GetDisplay(taskData, XP1),GetColormap(taskData, XP1)); break; case XCALL_DefaultColormap: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return EmptyColormap(taskData, dsHandle, DefaultColormap(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } case XCALL_DefaultVisual: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return EmptyVisual(taskData, dsHandle, DefaultVisual(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } case XCALL_DisplayCells: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, DisplayCells(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } case XCALL_VisualClass: return Make_arbitrary_precision(taskData, GetVisual(taskData, XP1)->c_class); case XCALL_VisualRedMask: return Make_arbitrary_precision(taskData, GetVisual(taskData, XP1)->red_mask); case XCALL_VisualGreenMask: return Make_arbitrary_precision(taskData, GetVisual(taskData, XP1)->green_mask); case XCALL_VisualBlueMask: return Make_arbitrary_precision(taskData, GetVisual(taskData, XP1)->blue_mask); /* Cursors 200 */ case XCALL_XCreateFontCursor: return CreateFontCursor(taskData, GetDS(taskData, XP1),get_C_ulong(taskData, P2)); case XCALL_XCreateGlyphCursor: return CreateGlyphCursor(taskData, GetDS(taskData, XP1), GetFont(taskData, XP1), GetFont(taskData, XP2), get_C_ulong(taskData, P3), get_C_ulong(taskData, P4), GetXColor1(taskData, P5), GetXColor2(taskData, P6)); case XCALL_XCreatePixmapCursor: return CreatePixmapCursor(taskData, GetDS(taskData, XP1), GetPixmap(taskData, XP1), /* source */ GetPixmap(taskData, XP2), /* mask */ GetXColor1(taskData, P3), /* foreground */ GetXColor2(taskData, P4), /* background */ GetOffsetX(taskData, P5), /* x */ GetOffsetY(taskData, P5) /* y */); case XCALL_XDefineCursor: XDefineCursor(GetDisplay(taskData, XP1),GetWindow(taskData, XP1),GetCursor(taskData, XP2)); WindowObject(XP1)->cursor_object = CursorObject(XP2); break; case XCALL_XQueryBestCursor: CheckZeroRect(taskData, P2); return QueryBest(taskData, XQueryBestCursor, GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetRectW(taskData, P2), GetRectH(taskData, P2)); case XCALL_XRecolorCursor: XRecolorCursor(GetDisplay(taskData, XP1), GetCursor(taskData, XP1), GetXColor1(taskData, P2), GetXColor2(taskData, P3)); break; case XCALL_XUndefineCursor: XUndefineCursor(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); WindowObject(XP1)->cursor_object = 0; break; /* Display Specifications 250 */ case XCALL_XOpenDisplay: return OpenDisplay(taskData, GetString(XP1)); #define DODISPLAYOP(op) \ {\ Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1);\ return Make_arbitrary_precision(taskData, op(DEREFDISPLAYHANDLE(dsHandle)->display,\ DEREFDISPLAYHANDLE(dsHandle)->screen));\ } case XCALL_CellsOfScreen: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, CellsOfScreen(ScreenOfDisplay(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen))); } case XCALL_DefaultDepth: DODISPLAYOP(DefaultDepth) case XCALL_DisplayHeight: DODISPLAYOP(DisplayHeight) case XCALL_DisplayHeightMM: DODISPLAYOP(DisplayHeightMM) case XCALL_DisplayPlanes: DODISPLAYOP(DisplayPlanes) case XCALL_DisplayString: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_string(DisplayString(DEREFDISPLAYHANDLE(dsHandle)->display)); } case XCALL_DisplayWidth: DODISPLAYOP(DisplayWidth) case XCALL_DisplayWidthMM: DODISPLAYOP(DisplayWidthMM) #undef DODISPLAYOP #define DODISPLAYSCREENOP(op) \ {\ Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1);\ return Make_arbitrary_precision(taskData, op(ScreenOfDisplay(DEREFDISPLAYHANDLE(dsHandle)->display,\ DEREFDISPLAYHANDLE(dsHandle)->screen)));\ } case XCALL_DoesBackingStore: DODISPLAYSCREENOP(DoesBackingStore) case XCALL_DoesSaveUnders: DODISPLAYSCREENOP(DoesSaveUnders) case XCALL_EventMaskOfScreen: DODISPLAYSCREENOP(EventMaskOfScreen) case XCALL_MaxCmapsOfScreen: DODISPLAYSCREENOP(MaxCmapsOfScreen) case XCALL_MinCmapsOfScreen: DODISPLAYSCREENOP(MinCmapsOfScreen) #undef DODISPLAYSCREENOP case XCALL_ProtocolRevision: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, ProtocolRevision(DEREFDISPLAYHANDLE(dsHandle)->display)); } case XCALL_ProtocolVersion: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, ProtocolVersion(DEREFDISPLAYHANDLE(dsHandle)->display)); } case XCALL_ServerVendor: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_string (ServerVendor(DEREFDISPLAYHANDLE(dsHandle)->display)); } case XCALL_VendorRelease: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return Make_arbitrary_precision(taskData, VendorRelease(DEREFDISPLAYHANDLE(dsHandle)->display)); } /* Drawing Primitives 300 */ case XCALL_XClearArea: XClearArea(GetDisplay(taskData, XP1), GetWindow(taskData, XP1), GetRectX(taskData, P2), GetRectY(taskData, P2), GetRectW(taskData, P2), GetRectH(taskData, P2), get_C_ulong(taskData, P3)); break; case XCALL_XClearWindow: XClearWindow(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XCopyArea: XCopyArea(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetDrawable(taskData, XP2), GetGC(taskData, XP3), GetPointX(taskData, P4), GetPointY(taskData, P4), GetRectW(taskData, P5), GetRectH(taskData, P5), GetRectX(taskData, P5), GetRectY(taskData, P5)); break; case XCALL_XCopyPlane: XCopyPlane(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetDrawable(taskData, XP2), GetGC(taskData, XP3), GetPointX(taskData, P4), GetPointY(taskData, P4), GetRectW(taskData, P5), GetRectH(taskData, P5), GetRectX(taskData, P5), GetRectY(taskData, P5), get_C_ulong(taskData, P6)); break; case XCALL_XDrawArc: XDrawArc(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetRectX(taskData, GetArcR(P3)), GetRectY(taskData, GetArcR(P3)), GetRectW(taskData, GetArcR(P3)), GetRectH(taskData, GetArcR(P3)), GetArcA1(taskData, P3), GetArcA2(taskData, P3)); break; case XCALL_XDrawArcs: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XArc *L = (XArc *)alloca(N * sizeof(XArc)); GetList4(taskData, DEREFWORD(list), L, sizeof(XArc), GetArcs); XDrawArcs(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), L, N); } } break; case XCALL_XDrawImageString: XDrawImageString(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3), GetString(P4)->chars, GetString(P4)->length); break; case XCALL_XDrawImageString16: { Handle list = SAVE(P4); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XChar2b *L = (XChar2b *)alloca(N * sizeof(XChar2b)); GetList4(taskData, DEREFWORD(list),L, sizeof(XChar2b), GetChar2); XDrawImageString16(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),GetPointX(taskData, P3),GetPointY(taskData, P3),L,N); } } break; case XCALL_XDrawLine: XDrawLine(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3), GetPointX(taskData, P4), GetPointY(taskData, P4)); break; case XCALL_XDrawLines: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XPoint *L = (XPoint *)alloca(N * sizeof(XPoint)); GetList4(taskData, DEREFWORD(list), L, sizeof(XPoint), GetPoints); XDrawLines(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), L, N, get_C_ulong(taskData, P4)); } } break; case XCALL_XDrawPoint: XDrawPoint(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3)); break; case XCALL_XDrawPoints: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XPoint *L = (XPoint *)alloca(N * sizeof(XPoint)); GetList4(taskData, DEREFWORD(list),L,sizeof(XPoint),GetPoints); XDrawPoints(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), L, N, get_C_ulong(taskData, P4)); } } break; case XCALL_XDrawRectangle: XDrawRectangle(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetRectX(taskData, P3), GetRectY(taskData, P3), GetRectW(taskData, P3), GetRectH(taskData, P3)); break; case XCALL_XDrawRectangles: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XRectangle *L = (XRectangle *)alloca(N * sizeof(XRectangle)); GetList4(taskData, DEREFWORD(list),L,sizeof(XRectangle),GetRects); XDrawRectangles(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),L,N); } } break; case XCALL_XDrawSegments: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XSegment *L = (XSegment *)alloca(N * sizeof(XSegment)); GetList4(taskData, DEREFWORD(list),L,sizeof(XSegment),GetSegments); XDrawSegments(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),L,N); } } break; case XCALL_XDrawString: XDrawString(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3), GetString(P4)->chars, GetString(P4)->length); break; case XCALL_XDrawString16: { Handle list = SAVE(P4); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XChar2b *L = (XChar2b *)alloca(N * sizeof(XChar2b)); GetList4(taskData, DEREFWORD(list),L,sizeof(XChar2b),GetChar2); XDrawString16(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),GetPointX(taskData, P3),GetPointY(taskData, P3),L,N); } } break; case XCALL_XDrawText: { Handle list = SAVE(P4); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XTextItem *L = (XTextItem *)alloca(N * sizeof(XTextItem)); GetList4(taskData, DEREFWORD(list),L,sizeof(XTextItem),GetText); XDrawText(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),GetPointX(taskData, P3),GetPointY(taskData, P3),L,N); while (N--) { free(L->chars); L++; } } } break; case XCALL_XDrawText16: { Handle list = SAVE(P4); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XTextItem16 *L = (XTextItem16 *)alloca(N * sizeof(XTextItem16)); GetList4(taskData, DEREFWORD(list),L,sizeof(XTextItem16), GetText16); XDrawText16(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),GetPointX(taskData, P3),GetPointY(taskData, P3),L,N); while (N--) { free(L->chars); L++; } } } break; case XCALL_XFillArc: XFillArc(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetRectX(taskData, GetArcR(P3)), GetRectY(taskData, GetArcR(P3)), GetRectW(taskData, GetArcR(P3)), GetRectH(taskData, GetArcR(P3)), GetArcA1(taskData, P3), GetArcA2(taskData, P3)); break; case XCALL_XFillArcs: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XArc *L = (XArc *)alloca(N * sizeof(XArc)); GetList4(taskData, DEREFWORD(list),L,sizeof(XArc),GetArcs); XFillArcs(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),L,N); } } break; case XCALL_XFillPolygon: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XPoint *L = (XPoint *)alloca(N * sizeof(XPoint)); GetList4(taskData, DEREFWORD(list),L,sizeof(XPoint),GetPoints); XFillPolygon(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),L,N,get_C_ulong(taskData, P4),get_C_ulong(taskData, P5)); } } break; case XCALL_XFillRectangle: XFillRectangle(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetRectX(taskData, P3), GetRectY(taskData, P3), GetRectW(taskData, P3), GetRectH(taskData, P3)); break; case XCALL_XFillRectangles: { Handle list = SAVE(P3); if (NONNIL(DEREFWORD(list))) { unsigned N = ListLength(DEREFWORD(list)); XRectangle *L = (XRectangle *)alloca(N * sizeof(XRectangle)); GetList4(taskData, DEREFWORD(list),L,sizeof(XRectangle),GetRects); XFillRectangles(GetDisplay(taskData, XP1),GetDrawable(taskData, XP1),GetGC(taskData, XP2),L,N); } } break; /* Events 350 */ case XCALL_XSelectInput: (WindowObject(XP1))->eventMask->Set(0, PolyWord::FromUnsigned(get_C_ulong(taskData, P2))); XSelectInput(GetDisplay(taskData, XP1),GetWindow(taskData, XP1),XMASK((WindowObject(XP1))->eventMask->Get(0).AsUnsigned())); break; case XCALL_XSynchronize: XSynchronize(GetDisplay(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_GetState: return GetState(taskData, WindowObject(XP1)); /* WindowObject added SPF */ case XCALL_SetState: SetState(WindowObject(XP1),P2,P3); /* WindowObject added SPF */ break; case XCALL_NextEvent: return NextEvent(taskData, GetDS(taskData, XP1)); case XCALL_InsertTimeout: InsertTimeout(taskData, WindowObject(XP1),get_C_ulong(taskData, P2),P3,P4); /* WindowObject added SPF */ break; case XCALL_XSetInputFocus: XSetInputFocus(GetDisplay(taskData, XP1),GetWindow(taskData, XP2),get_C_ulong(taskData, P3),get_C_ulong(taskData, P4)); break; case XCALL_XGetInputFocus: return GetInputFocus(taskData, GetDS(taskData, XP1)); case XCALL_XSetSelectionOwner: SetSelectionOwner(GetDS(taskData, XP1),get_C_ulong(taskData, P2),GetWindow(taskData, XP3),get_C_ulong(taskData, P4)); break; case XCALL_XGetSelectionOwner: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return EmptyWindow(taskData, dsHandle,XGetSelectionOwner(DEREFDISPLAYHANDLE(dsHandle)->display, get_C_ulong(taskData, P2))); } case XCALL_XConvertSelection: XConvertSelection(GetDisplay(taskData, XP4), get_C_ulong(taskData, P1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), GetWindow(taskData, XP4), get_C_ulong(taskData, P5)); break; case XCALL_XSendSelectionNotify: SendSelectionNotify(GetDisplay(taskData, XP4), get_C_ulong(taskData, P1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), GetWindow(taskData, XP4), get_C_ulong(taskData, P5)); break; case XCALL_XDeleteProperty: XDeleteProperty(GetDisplay(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_XInternAtom: return InternAtom(taskData, GetDisplay(taskData, XP1),GetString(P2),get_C_long(taskData, P3)); case XCALL_XGetAtomName: return GetAtomName(taskData, GetDisplay(taskData, XP1),get_C_ulong(taskData, P2)); /* Fonts 400 */ case XCALL_XGetFontPath: return GetFontPath(taskData, GetDisplay(taskData, XP1)); case XCALL_XListFonts: return ListFonts(taskData, GetDisplay(taskData, XP1),GetString(P2),get_C_ulong(taskData, P3)); case XCALL_XListFontsWithInfo: return ListFontsWithInfo(taskData, GetDS(taskData, XP1),GetString(P2),get_C_ulong(taskData, P3)); case XCALL_XLoadFont: return LoadFont(taskData, GetDS(taskData, XP1),GetString(P2)); case XCALL_XLoadQueryFont: return LoadQueryFont(taskData, GetDS(taskData, XP1),GetString(P2)); case XCALL_XQueryFont: return QueryFont(taskData, GetDS(taskData, XP1),GetFont(taskData, XP1)); case XCALL_XSetFontPath: SetFontPath(taskData, GetDisplay(taskData, XP1),SAVE(P2)); break; /* Grabbing 450 */ /* Graphics Context 500 */ case XCALL_DefaultGC: return GetDefaultGC(taskData, GetDS(taskData, XP1)); case XCALL_UpdateGC: ChangeGC(taskData, GCObject(XP1),get_C_ulong(taskData, P2),P3); break; case XCALL_XCreateGC: return CreateGC(taskData, GetDS(taskData, XP1),GetDrawable(taskData, XP1)); case XCALL_XSetClipRectangles: SetClipRectangles(taskData, GetDisplay(taskData, XP1), GetGC(taskData, XP1), GetPointX(taskData, P2), GetPointY(taskData, P2), SAVE(P3), get_C_ulong(taskData, P4)); break; case XCALL_XSetDashes: SetDashes(taskData, GetDisplay(taskData, XP1), GetGC(taskData, XP1), get_C_ulong(taskData, P2), SAVE(P3)); break; /* Images 550 */ case XCALL_XAddPixel: AddPixel(GetXImage(taskData, GetDisplay(taskData, XP1),P2),get_C_ulong(taskData, P3)); break; case XCALL_XGetImage: return GetImage(taskData, GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetRectX(taskData, P2), GetRectY(taskData, P2), GetRectW(taskData, P2), GetRectH(taskData, P2), get_C_ulong(taskData, P3), get_C_long(taskData, P4)); case XCALL_XGetPixel: return GetPixel(taskData, GetXImage(taskData, GetDisplay(taskData, XP1),P2), GetPointX(taskData, P3), GetPointY(taskData, P3)); case XCALL_XGetSubImage: GetSubImage(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetRectX(taskData, P2), GetRectY(taskData, P2), GetRectW(taskData, P2), GetRectH(taskData, P2), get_C_ulong(taskData, P3), get_C_long(taskData, P4), GetXImage(taskData, GetDisplay(taskData, XP1),P5), GetPointX(taskData, P6), GetPointY(taskData, P6)); break; case XCALL_XPutImage: PutImage(GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetGC(taskData, XP2), GetXImage(taskData, GetDisplay(taskData, XP1),P3), GetPointX(taskData, P4), GetPointY(taskData, P4), GetRectX(taskData, P5), GetRectY(taskData, P5), GetRectW(taskData, P5), GetRectH(taskData, P5)); break; case XCALL_XPutPixel: PutPixel(GetXImage(taskData, GetDisplay(taskData, XP1),P2), GetPointX(taskData, P3), GetPointY(taskData, P3), get_C_ulong(taskData, P4)); break; case XCALL_XSubImage: return SubImage(taskData, GetXImage(taskData, GetDisplay(taskData, XP1),P2), GetRectX(taskData, P3), GetRectY(taskData, P3), GetRectW(taskData, P3), GetRectH(taskData, P3)); case XCALL_BitmapBitOrder: return Make_arbitrary_precision(taskData, MLImageOrder(BitmapBitOrder(GetDisplay(taskData, XP1)))); case XCALL_BitmapPad: return Make_arbitrary_precision(taskData, BitmapPad(GetDisplay(taskData, XP1))); case XCALL_BitmapUnit: return Make_arbitrary_precision(taskData, BitmapUnit(GetDisplay(taskData, XP1))); case XCALL_ByteOrder: return Make_arbitrary_precision(taskData, MLImageOrder(ImageByteOrder(GetDisplay(taskData, XP1)))); /* Keyboard 600 */ case XCALL_XLookupString: return LookupString(taskData, GetDisplay(taskData, XP1),get_C_ulong(taskData, P2),get_C_ulong(taskData, P3)); case XCALL_XQueryKeymap: return QueryKeymap(taskData, GetDisplay(taskData, XP1)); case XCALL_IsCursorKey: return Make_bool(IsCursorKey(get_C_ulong(taskData, P1))); case XCALL_IsFunctionKey: return Make_bool(IsFunctionKey(get_C_ulong(taskData, P1))); case XCALL_IsKeypadKey: return Make_bool(IsKeypadKey(get_C_ulong(taskData, P1))); case XCALL_IsMiscFunctionKey: return Make_bool(IsMiscFunctionKey(get_C_ulong(taskData, P1))); case XCALL_IsModifierKey: return Make_bool(IsModifierKey(get_C_ulong(taskData, P1))); case XCALL_IsPFKey: return Make_bool(IsPFKey(get_C_ulong(taskData, P1))); /* Output Buffer 650 */ case XCALL_XFlush: XFlush(GetDisplay(taskData, XP1)); break; case XCALL_XSync: XSync(GetDisplay(taskData, XP1),get_C_ulong(taskData, P2)); break; /* Pointers 700 */ case XCALL_XQueryPointer: return QueryPointer(taskData, GetDS(taskData, XP1),GetWindow(taskData, XP1)); /* Regions 750*/ /* SAVE Set 800 */ /* Screen Saver 850 */ case XCALL_XActivateScreenSaver: XActivateScreenSaver(GetDisplay(taskData, XP1)); break; case XCALL_XForceScreenSaver: XForceScreenSaver(GetDisplay(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_XGetScreenSaver: return GetScreenSaver(taskData, GetDisplay(taskData, XP1)); case XCALL_XResetScreenSaver: XResetScreenSaver(GetDisplay(taskData, XP1)); break; case XCALL_XSetScreenSaver: XSetScreenSaver(GetDisplay(taskData, XP1), get_C_long(taskData, P2), get_C_long(taskData, P3), get_C_ulong(taskData, P4), get_C_ulong(taskData, P5)); break; /* Standard Geometry 900 */ case XCALL_XTranslateCoordinates: return TranslateCoordinates(taskData, GetDS(taskData, XP1), GetWindow(taskData, XP1), GetWindow(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3)); /* Text 950 */ case XCALL_XTextExtents: return TextExtents(taskData, GetFontStruct(taskData, P1),GetString(P2)); case XCALL_XTextExtents16: return TextExtents16(taskData, GetFontStruct(taskData, P1),SAVE(P2)); case XCALL_XTextWidth: return TextWidth(taskData, GetFontStruct(taskData, P1),GetString(P2)); case XCALL_XTextWidth16: return TextWidth16(taskData, GetFontStruct(taskData, P1),SAVE(P2)); /* Tiles, Pixmaps, Stipples and Bitmaps 1000 */ case XCALL_XCreateBitmapFromData: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); CheckZeroRect(taskData, P3); return EmptyPixmap(taskData, dsHandle, XCreateBitmapFromData( DEREFDISPLAYHANDLE(dsHandle)->display, GetDrawable(taskData, XP1), /* drawable */ GetString(P2)->chars, /* data */ GetRectW(taskData, P3), /* width */ GetRectH(taskData, P3))); /* height */ } case XCALL_XCreatePixmap: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); CheckZeroRect(taskData, P2); return EmptyPixmap(taskData, dsHandle, XCreatePixmap( DEREFDISPLAYHANDLE(dsHandle)->display, GetDrawable(taskData, XP1), /* drawable */ GetRectW(taskData, P2), /* width */ GetRectH(taskData, P2), /* height */ get_C_ulong(taskData, P3))); /* depth */ } case XCALL_XCreatePixmapFromBitmapData: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); CheckZeroRect(taskData, P3); return EmptyPixmap(taskData, dsHandle, XCreatePixmapFromBitmapData( DEREFDISPLAYHANDLE(dsHandle)->display, GetDrawable(taskData, XP1), /* drawable */ GetString(P2)->chars, /* data */ GetRectW(taskData, P3), /* width */ GetRectH(taskData, P3), /* height */ get_C_ulong(taskData, P4), /* foreground */ get_C_ulong(taskData, P5), /* background */ get_C_ulong(taskData, P6))); /* depth */ } case XCALL_XQueryBestStipple: CheckZeroRect(taskData, P2); return QueryBest(taskData, XQueryBestStipple, GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetRectW(taskData, P2), GetRectH(taskData, P2)); case XCALL_XQueryBestTile: CheckZeroRect(taskData, P2); return QueryBest(taskData, XQueryBestTile, GetDisplay(taskData, XP1), GetDrawable(taskData, XP1), GetRectW(taskData, P2), GetRectH(taskData, P2)); case XCALL_XReadBitmapFile: return ReadBitmap(taskData, GetDS(taskData, XP1),GetDrawable(taskData, XP1),GetString(P2)); case XCALL_XWriteBitmapFile: CheckZeroRect(taskData, P3); return WriteBitmapFile(taskData, GetString(XP1), GetDisplay(taskData, XP2), GetPixmap(taskData, XP2), GetRectW(taskData, P3), GetRectH(taskData, P3), GetPointX(taskData, P4), GetPointY(taskData, P4)); /* User Preferences 1050 */ case XCALL_XAutoRepeatOff: XAutoRepeatOff(GetDisplay(taskData, XP1)); break; case XCALL_XAutoRepeatOn: XAutoRepeatOn (GetDisplay(taskData, XP1)); break; case XCALL_XBell: XBell(GetDisplay(taskData, XP1),get_C_short(taskData, P2)); break; case XCALL_XGetDefault: return GetDefault(taskData, GetDisplay(taskData, XP1),GetString(P2),GetString(P3)); /* Window Attributes 1100 */ case XCALL_ChangeWindow: ChangeWindowAttributes(taskData, WindowObject(XP1),get_C_ulong(taskData, P2),P3); break; case XCALL_XGetGeometry: return GetGeometry(taskData, GetDS(taskData, XP1),GetDrawable(taskData, XP1)); case XCALL_XGetWindowAttributes: return GetWindowAttributes(taskData, GetDS(taskData, XP1),GetDrawable(taskData, XP1)); case XCALL_XSetWindowBorderWidth: XSetWindowBorderWidth(GetDisplay(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); break; /* Window Configuration 1150 */ case XCALL_XCirculateSubwindows: XCirculateSubwindows(GetDisplay(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_XConfigureWindow: ConfigureWindow(taskData, GetDisplay(taskData, XP1),GetWindow(taskData, XP1), P2); break; case XCALL_XLowerWindow: XLowerWindow(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XMapRaised: XMapRaised(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XMapSubwindows: XMapSubwindows(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XMapWindow: XMapWindow(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XMoveResizeWindow: CheckZeroRect(taskData, P3); XMoveResizeWindow(GetDisplay(taskData, XP1), GetWindow(taskData, XP1), GetPointX(taskData, P2), GetPointY(taskData, P2), GetRectW(taskData, P3), GetRectH(taskData, P3)); break; case XCALL_XMoveWindow: XMoveWindow(GetDisplay(taskData, XP1), GetWindow(taskData, XP1), GetPointX(taskData, P2), GetPointY(taskData, P2)); break; case XCALL_XQueryTree: return QueryTree(taskData,GetDS(taskData, XP1),GetWindow(taskData, XP1)); case XCALL_XRaiseWindow: XRaiseWindow(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XReparentWindow: XReparentWindow(GetDisplay(taskData, XP1), GetWindow(taskData, XP1), GetWindow(taskData, XP2), GetPointX(taskData, P3), GetPointY(taskData, P3)); break; case XCALL_XResizeWindow: CheckZeroRect(taskData, P2); XResizeWindow(GetDisplay(taskData, XP1), GetWindow(taskData, XP1), GetRectW(taskData, P2), GetRectH(taskData, P2)); break; case XCALL_XRestackWindows: RestackWindows(taskData, SAVE(P1)); break; case XCALL_XUnmapSubwindows: XUnmapSubwindows(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; case XCALL_XUnmapWindow: XUnmapWindow(GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); break; /* Window Existence 1200 */ case XCALL_RootWindow: { Handle dsHandle /* Handle to (X_Display_Object *) */ = GetDS(taskData, XP1); return EmptyWindow(taskData, dsHandle, RootWindow(DEREFDISPLAYHANDLE(dsHandle)->display, DEREFDISPLAYHANDLE(dsHandle)->screen)); } case XCALL_DestroyXObject: DestroyXObject(XP1); break; case XCALL_XDestroySubwindows: DestroySubwindows(XP1); break; case XCALL_XCreateSimpleWindow: CheckZeroRect(taskData, P3); return CreateSimpleWindow(taskData, SAVE(XP1), /* parent */ GetPointX(taskData, P2), /* x */ GetPointY(taskData, P2), /* y */ GetRectW(taskData, P3), /* w */ GetRectH(taskData, P3), /* h */ get_C_ulong(taskData, P4), /* borderWidth */ get_C_ulong(taskData, P5), /* border */ get_C_ulong(taskData, P6), /* background */ SAVE(P7), /* handler */ SAVE(P8)); /* state */ case XCALL_XCreateWindow: CheckZeroRect(taskData, P3); return CreateWindow(taskData, SAVE(XP1), /* parent */ GetPointX(taskData, P2), /* x */ GetPointY(taskData, P2), /* y */ GetRectW(taskData, P3), /* w */ GetRectH(taskData, P3), /* h */ get_C_ulong(taskData, P4), /* borderWidth */ get_C_ulong(taskData, P5), /* depth */ get_C_ulong(taskData, P6), /* class */ GetVisual(taskData, XP7), /* visual */ SAVE(P8), /* handler */ SAVE(P9)); /* state */ /* Window Manager 1250 */ case XCALL_XSetProperty: SetProperty(taskData, GetDisplay(taskData, XP1), GetWindow(taskData, XP1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), SAVE(P4), get_C_ulong(taskData, P5)); break; case XCALL_XGetTextProperty: return GetTextProperty(taskData, GetDisplay(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); case XCALL_XGetWMHints: return GetWMHints(taskData, GetDS(taskData, XP1),GetWindow(taskData, XP1)); case XCALL_XGetWMSizeHints: return GetWMSizeHints(taskData, GetDisplay(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); case XCALL_XGetIconSizes: return GetIconSizes(taskData, GetDisplay(taskData, XP1),GetWindow(taskData, XP1)); case XCALL_XGetTransientForHint: return GetTransientForHint(taskData, GetDS(taskData, XP1),GetWindow(taskData, XP1)); case XCALL_XGetWMColormapWindows: return GetWMColormapWindows(taskData, GetDS(taskData, XP1),GetWindow(taskData, XP1)); case XCALL_XGetRGBColormaps: return GetRGBColormaps(taskData, GetDS(taskData, XP1),GetWindow(taskData, XP1),get_C_ulong(taskData, P2)); case XCALL_XWMGeometry: return WMGeometry(taskData, GetDS(taskData, XP1), GetString(P2), GetString(P3), get_C_ulong(taskData, P4), P5); /* Miscellaneous 1300 */ case XCALL_GetID: return GetID(taskData, XP1); case XCALL_ResourceExists: return Make_bool(ResourceExists(XP1)); case XCALL_GetDisplay: return GetDS(taskData, XP1); /******************************************************************************/ /* */ /* Xt Calls */ /* */ /******************************************************************************/ case XCALL_NoWidget: return EmptyWidget(taskData, SAVE(ListNull), (Widget)NULL); case XCALL_AppInitialise: return AppInitialise(taskData, P1, /* display name */ P2, /* application name */ P3, /* application class */ SAVE(P4), /* Fallback list */ SAVE(P5) /* Arg list */); case XCALL_XtRealizeWidget: XtRealizeWidget(GetWidget(taskData, XP1)); break; case XCALL_XtManageChildren: ManageChildren(taskData, SAVE(P1)); break; case XCALL_XtUnmanageChildren: UnmanageChildren(taskData, SAVE(P1)); break; case XCALL_XtDestroyWidget: { Widget w = GetWidget(taskData, XP1); XtDestroyWidget(w); /* The following test seems necessary - sometimes the callback from */ /* the above call destroys the widget, sometimes it doesn't. I think */ /* it always should, and I can't work out why this strange behaviour */ /* occurs. SPF 9/12/93 */ if (ResourceExists(XP1)) { DestroyXObject(XP1); PurgeCCallbacks((X_Widget_Object *)XP1,w); } break; } case XCALL_SetCallbacks: SetCallbacks (taskData, WidgetObject(taskData, XP1),P2,P3); break; /* WidgetObject added SPF */ case XCALL_XtSetValues: SetValues(taskData, GetWidget(taskData, XP1),SAVE(P2)); break; case XCALL_GetValue: return GetValue(taskData, GetDS(taskData, XP1),GetWidget(taskData, XP1),P2); case XCALL_XtParent: return EmptyWidget(taskData, GetDS(taskData, XP1),XtParent(GetWidget(taskData, XP1))); case XCALL_XtWindow: return EmptyWindow(taskData, GetDS(taskData, XP1),WindowOfWidget(GetWidget(taskData, XP1))); case XCALL_XtDisplay: return GetDS(taskData, XP1); case XCALL_XtUnrealizeWidget: XtUnrealizeWidget(GetWidget(taskData, XP1)); break; case XCALL_XtName: return Make_string(XtName(GetWidget(taskData, XP1))); case XCALL_XtParseTranslationTable: return ParseTranslationTable(taskData, GetString(XP1)); case XCALL_XtOverrideTranslations: XtOverrideTranslations(GetWidget(taskData, XP1),GetTrans(taskData, XP2)); break; case XCALL_XtAugmentTranslations: XtAugmentTranslations(GetWidget(taskData, XP1),GetTrans(taskData, XP2)); break; case XCALL_XtUninstallTranslations: XtUninstallTranslations(GetWidget(taskData, XP1)); break; /* case XCALL_XtTranslateTablePrint: _XtTranslateTablePrint(GetTrans(taskData, XP1)); break; */ case XCALL_XtCreatePopupShell: return CreatePopupShell(taskData, GetString(XP1),GetDS(taskData, XP2),GetWidget(taskData, XP2),SAVE(P3)); case XCALL_InsertWidgetTimeout: InsertWidgetTimeout(taskData, WidgetObject(taskData, XP1),get_C_ulong(taskData, P2),P3,P4); break; /* WidgetObject added SPF */ case XCALL_GetWidgetState: return SAVE(WidgetObjectToken(XP1)->state); /* was WidgetObject(XP1) (SPF) */ case XCALL_SetWidgetState: WidgetObjectToken(XP1)->state = P2; break; /* was WidgetObject(XP1) (SPF) */ case XCALL_XtSetSensitive: XtSetSensitive(GetWidget(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_XtIsSensitive: return Make_bool(XtIsSensitive(GetWidget(taskData, XP1))); case XCALL_GetSubresources: return GetSubresources(taskData, GetDS(taskData, XP1), GetWidget(taskData, XP1), GetString(P2), GetString(P3), SAVE(P4)); case XCALL_Cast: return SAVE(P1); case XCALL_XtPopup: XtPopup(GetWidget(taskData, XP1),GetXtGrabKind(taskData, P2)); break; case XCALL_XtPopdown: XtPopdown(GetWidget(taskData, XP1)); break; case XCALL_XtMapWidget: XtMapWidget(GetRealizedWidget(taskData, (char *) "XtMapWidget",XP1)); break; case XCALL_XtUnmapWidget: XtUnmapWidget(GetRealizedWidget(taskData, (char *) "XtUnmapWidget",XP1)); break; case XCALL_XtIsManaged: return Make_bool(XtIsManaged(GetWidget(taskData, XP1))); case XCALL_XtIsRealized: return Make_bool(XtIsRealized(GetWidget(taskData, XP1))); /* Added DCJM. */ case XCALL_XtGetApplicationResources: return GetApplicationResources (taskData, GetDS(taskData, XP1),GetWidget(taskData, XP1),SAVE(P2) ) ; case XCALL_XtAddEventHandler: AddEventhandler (taskData, WidgetObject(taskData, XP1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3), SAVE(P4)); break; /******************************************************************************/ /* */ /* Motif Calls - widget creation */ /* */ /******************************************************************************/ /* Motif 4000 */ #define XMCREATE(number,name) \ case number: return CreateXm(taskData, name, (char *) \ #name " failed", \ GetDS(taskData, XP1), \ GetWidget(taskData, XP1), \ GetString(P2), \ SAVE(P3)) XMCREATE(XCALL_XmCreateArrowButton,XmCreateArrowButton); XMCREATE(XCALL_XmCreateArrowButtonGadget,XmCreateArrowButtonGadget); XMCREATE(XCALL_XmCreateBulletinBoard,XmCreateBulletinBoard); XMCREATE(XCALL_XmCreateBulletinBoardDialog,XmCreateBulletinBoardDialog); XMCREATE(XCALL_XmCreateCascadeButton,XmCreateCascadeButton); XMCREATE(XCALL_XmCreateCascadeButtonGadget,XmCreateCascadeButtonGadget); XMCREATE(XCALL_XmCreateCommand,XmCreateCommand); XMCREATE(XCALL_XmCreateDialogShell,XmCreateDialogShell); XMCREATE(XCALL_XmCreateDrawingArea,XmCreateDrawingArea); XMCREATE(XCALL_XmCreateDrawnButton,XmCreateDrawnButton); XMCREATE(XCALL_XmCreateErrorDialog,XmCreateErrorDialog); XMCREATE(XCALL_XmCreateFileSelectionBox,XmCreateFileSelectionBox); XMCREATE(XCALL_XmCreateFileSelectionDialog,XmCreateFileSelectionDialog); XMCREATE(XCALL_XmCreateForm,XmCreateForm); XMCREATE(XCALL_XmCreateFormDialog,XmCreateFormDialog); XMCREATE(XCALL_XmCreateFrame,XmCreateFrame); XMCREATE(XCALL_XmCreateInformationDialog,XmCreateInformationDialog); XMCREATE(XCALL_XmCreateLabel,XmCreateLabel); XMCREATE(XCALL_XmCreateLabelGadget,XmCreateLabelGadget); XMCREATE(XCALL_XmCreateList,XmCreateList); XMCREATE(XCALL_XmCreateMainWindow,XmCreateMainWindow); XMCREATE(XCALL_XmCreateMenuBar,XmCreateMenuBar); XMCREATE(XCALL_XmCreateMenuShell,XmCreateMenuShell); XMCREATE(XCALL_XmCreateMessageBox,XmCreateMessageBox); XMCREATE(XCALL_XmCreateMessageDialog,XmCreateMessageDialog); XMCREATE(XCALL_XmCreateOptionMenu,XmCreateOptionMenu); XMCREATE(XCALL_XmCreatePanedWindow,XmCreatePanedWindow); XMCREATE(XCALL_XmCreatePopupMenu,XmCreatePopupMenu); XMCREATE(XCALL_XmCreatePromptDialog,XmCreatePromptDialog); XMCREATE(XCALL_XmCreatePulldownMenu,XmCreatePulldownMenu); XMCREATE(XCALL_XmCreatePushButton,XmCreatePushButton); XMCREATE(XCALL_XmCreatePushButtonGadget,XmCreatePushButtonGadget); XMCREATE(XCALL_XmCreateQuestionDialog,XmCreateQuestionDialog); XMCREATE(XCALL_XmCreateRadioBox,XmCreateRadioBox); XMCREATE(XCALL_XmCreateRowColumn,XmCreateRowColumn); XMCREATE(XCALL_XmCreateScale,XmCreateScale); XMCREATE(XCALL_XmCreateScrollBar,XmCreateScrollBar); XMCREATE(XCALL_XmCreateScrolledList,XmCreateScrolledList); XMCREATE(XCALL_XmCreateScrolledText,XmCreateScrolledText); XMCREATE(XCALL_XmCreateScrolledWindow,XmCreateScrolledWindow); XMCREATE(XCALL_XmCreateSelectionBox,XmCreateSelectionBox); XMCREATE(XCALL_XmCreateSelectionDialog,XmCreateSelectionDialog); XMCREATE(XCALL_XmCreateSeparator,XmCreateSeparator); XMCREATE(XCALL_XmCreateSeparatorGadget,XmCreateSeparatorGadget); XMCREATE(XCALL_XmCreateSimpleCheckBox,XmCreateSimpleCheckBox); XMCREATE(XCALL_XmCreateSimpleMenuBar,XmCreateSimpleMenuBar); XMCREATE(XCALL_XmCreateSimpleOptionMenu,XmCreateSimpleOptionMenu); XMCREATE(XCALL_XmCreateSimplePopupMenu,XmCreateSimplePopupMenu); XMCREATE(XCALL_XmCreateSimplePulldownMenu,XmCreateSimplePulldownMenu); XMCREATE(XCALL_XmCreateSimpleRadioBox,XmCreateSimpleRadioBox); XMCREATE(XCALL_XmCreateText,XmCreateText); XMCREATE(XCALL_XmCreateTextField,XmCreateTextField); XMCREATE(XCALL_XmCreateToggleButton,XmCreateToggleButton); XMCREATE(XCALL_XmCreateToggleButtonGadget,XmCreateToggleButtonGadget); XMCREATE(XCALL_XmCreateWarningDialog,XmCreateWarningDialog); XMCREATE(XCALL_XmCreateWorkArea,XmCreateWorkArea); XMCREATE(XCALL_XmCreateWorkingDialog,XmCreateWorkingDialog); #undef XMCREATE /******************************************************************************/ /* */ /* Motif Calls - miscellaneous */ /* */ /******************************************************************************/ case XCALL_XmCascadeButtonHighlight: XmCascadeButtonHighlight(GetWidget(taskData, XP1),get_C_ulong(taskData, P2)); break; case XCALL_XmCommandError: CommandError(taskData, GetWidget(taskData, XP1),P2); break; case XCALL_XmCommandGetChild: return EmptyWidget(taskData, GetDS(taskData, XP1), XmCommandGetChild(GetWidget(taskData, XP1),get_C_ulong(taskData, P2))); case XCALL_XmFileSelectionBoxGetChild: return EmptyWidget(taskData, GetDS(taskData, XP1), XmFileSelectionBoxGetChild(GetWidget(taskData, XP1),get_C_ulong(taskData, P2))); case XCALL_XmFileSelectionDoSearch: FileSelectionDoSearch(taskData, GetWidget(taskData, XP1),P2); break; case XCALL_XmIsSomething: return XmIsSomething(taskData, get_C_ulong(taskData, P1),GetWidget(taskData, XP2)); case XCALL_XmMainWindowSetAreas: XmMainWindowSetAreas(GetWidget(taskData, XP1), GetNWidget(taskData, XP2), GetNWidget(taskData, XP3), GetNWidget(taskData, XP4), GetNWidget(taskData, XP5), GetNWidget(taskData, XP6)); break; case XCALL_XmMainWindowSepX: switch(get_C_ulong(taskData, P2)) { case 1: return EmptyWidget(taskData, GetDS(taskData, XP1),XmMainWindowSep1(GetWidget(taskData, XP1))); case 2: return EmptyWidget(taskData, GetDS(taskData, XP1),XmMainWindowSep2(GetWidget(taskData, XP1))); default: return EmptyWidget(taskData, GetDS(taskData, XP1),XmMainWindowSep3(GetWidget(taskData, XP1))); } case XCALL_XmMessageBoxGetChild: return EmptyWidget(taskData, GetDS(taskData, XP1), XmMessageBoxGetChild(GetWidget(taskData, XP1),get_C_ulong(taskData, P2))); case XCALL_XmOptionButtonGadget: return EmptyWidget(taskData, GetDS(taskData, XP1),XmOptionButtonGadget(GetWidget(taskData, XP1))); case XCALL_XmOptionLabelGadget: return EmptyWidget(taskData, GetDS(taskData, XP1),XmOptionLabelGadget (GetWidget(taskData, XP1))); case XCALL_XmSelectionBoxGetChild: return EmptyWidget(taskData, GetDS(taskData, XP1), XmSelectionBoxGetChild(GetWidget(taskData, XP1),get_C_ulong(taskData, P2))); case XCALL_XmSetMenuCursor: XmSetMenuCursor(GetDisplay(taskData, XP1),GetCursor(taskData, XP2)); break; case XCALL_XmScrolledWindowSetAreas: XmScrolledWindowSetAreas(GetWidget(taskData, XP1), GetNWidget(taskData, XP2), GetNWidget(taskData, XP3), GetNWidget(taskData, XP4)); break; /******************************************************************************/ /* */ /* Operations on XmText widgets */ /* */ /******************************************************************************/ #define TextWidgetToLong(func) \ case XCALL_ ## func : \ return(WidgetToLong(taskData,(char *) #func,GetTextWidget,func,XP1)) #define TextWidgetToInt(func) \ case XCALL_ ## func : \ return(WidgetToInt(taskData,(char *) #func,GetTextWidget,func,XP1)) #define TextWidgetToBool(func) \ case XCALL_ ## func : \ return(WidgetToBool(taskData,(char *) #func,GetTextWidget,func,XP1)) #define TextWidgetToString(func) \ case XCALL_ ## func : \ return(WidgetToString(taskData,(char *) #func,GetTextWidget,func,XP1)) #define TextWidgetIntAction(func) \ case XCALL_ ## func : \ WidgetIntAction(taskData,(char *) #func,GetTextWidget,func,XP1,P2); \ break #define TextWidgetLongAction(func) \ case XCALL_ ## func : \ WidgetLongAction(taskData,(char *) #func,GetTextWidget,func,XP1,P2); \ break #define TextWidgetBoolAction(func) \ case XCALL_ ## func : \ WidgetBoolAction(taskData,(char *) #func,GetTextWidget,func,XP1,P2); \ break /* XmTextClearSelection not supported */ /* XmTextCopy not supported */ /* XmTextCut not supported */ #ifdef LESSTIF_VERSION /* This is not supported in LessTif, at least not 0.89. */ case XCALL_XmTextGetAddMode: RaiseXWindows(taskData, "XmTextGetAddMode: not implemented"); #else TextWidgetToBool(XmTextGetAddMode); #endif TextWidgetToLong(XmTextGetCursorPosition); TextWidgetToInt(XmTextGetBaseline); TextWidgetToBool(XmTextGetEditable); TextWidgetToLong(XmTextGetInsertionPosition); TextWidgetToLong(XmTextGetLastPosition); TextWidgetToInt(XmTextGetMaxLength); TextWidgetToString(XmTextGetSelection); /* XmTextGetSelectionPosition not supported */ TextWidgetToString(XmTextGetString); /* XmTextGetSource not supported */ TextWidgetToLong(XmTextGetTopCharacter); case XCALL_XmTextInsert: { Widget w = GetTextWidget(taskData, (char *) "XmTextInsert",XP1); { unsigned pos = get_C_ulong(taskData, P2); PolyStringObject *s = GetString(P3); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextInsert(w,pos,buffer); break; } } TextWidgetToBool(XmTextPaste); /* with side effect! */ /* XmTextPosToXY not supported */ TextWidgetToBool(XmTextRemove); /* with side effect! */ case XCALL_XmTextReplace: { Widget w = GetTextWidget(taskData, (char *) "XmTextReplace",XP1); { unsigned from_pos = get_C_ulong(taskData, P2); unsigned to_pos = get_C_ulong(taskData, P3); PolyStringObject *s = GetString(P4); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextReplace(w,from_pos,to_pos,buffer); break; } } TextWidgetIntAction(XmTextScroll); /* for side effect! */ TextWidgetBoolAction(XmTextSetAddMode); TextWidgetLongAction(XmTextSetCursorPosition); TextWidgetBoolAction(XmTextSetEditable); /* XmTextSetHighlight not supported */ TextWidgetLongAction(XmTextSetInsertionPosition); TextWidgetIntAction(XmTextSetMaxLength); /* XmTextSetSelection not supported */ /* XmTextSetSource not supported */ /* inlined SPF 15/2/94 */ case XCALL_XmTextSetString: { Widget w = GetTextWidget(taskData, (char *) "XmTextSetString",XP1); { PolyStringObject *s = GetString(P2); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextSetString(w,buffer); break; } } TextWidgetLongAction(XmTextSetTopCharacter); TextWidgetLongAction(XmTextShowPosition); case XCALL_XmTextXYToPos: { Widget w = GetTextWidget(taskData, (char *) "XmTextXYToPos",XP1); { int x = get_C_long(taskData, P2); int y = get_C_long(taskData, P3); return Make_int(XmTextXYToPos(w,x,y)); } } #undef TextWidgetToLong #undef TextWidgetToInt #undef TextWidgetToBool #undef TextWidgetToString #undef TextWidgetIntAction #undef TextWidgetBoolAction /******************************************************************************/ /* */ /* Operations on XmTextField widgets */ /* */ /******************************************************************************/ #define TextFieldWidgetToLong(func) \ case XCALL_ ## func : \ return(WidgetToLong(taskData, (char *) #func,GetTextFieldWidget,func,XP1)) #define TextFieldWidgetToInt(func) \ case XCALL_ ## func : \ return(WidgetToInt(taskData, (char *) #func,GetTextFieldWidget,func,XP1)) #define TextFieldWidgetToBool(func) \ case XCALL_ ## func : \ return(WidgetToBool(taskData, (char *) #func,GetTextFieldWidget,func,XP1)) #define TextFieldWidgetToString(func) \ case XCALL_ ## func : \ return(WidgetToString(taskData, (char *) #func,GetTextFieldWidget,func,XP1)) #define TextFieldWidgetIntAction(func) \ case XCALL_ ## func : \ WidgetIntAction(taskData, (char *) #func,GetTextFieldWidget,func,XP1,P2); \ break #define TextFieldWidgetLongAction(func) \ case XCALL_ ## func : \ WidgetLongAction(taskData, (char *) #func,GetTextFieldWidget,func,XP1,P2); \ break #define TextFieldWidgetBoolAction(func) \ case XCALL_ ## func : \ WidgetBoolAction(taskData, (char *) #func,GetTextFieldWidget,func,XP1,P2); \ break /* XmTextFieldClearSelection not supported */ /* XmTextFieldCopy not supported */ /* XmTextFieldCut not supported */ #ifdef LESSTIF_VERSION /* This is not supported in LessTif, at least not 0.89. */ case XCALL_XmTextFieldGetAddMode: RaiseXWindows(taskData, "XmTextFieldGetAddMode: not implemented"); #else TextFieldWidgetToBool(XmTextFieldGetAddMode); #endif TextFieldWidgetToInt(XmTextFieldGetBaseline); TextFieldWidgetToLong(XmTextFieldGetCursorPosition); TextFieldWidgetToBool(XmTextFieldGetEditable); TextFieldWidgetToLong(XmTextFieldGetInsertionPosition); TextFieldWidgetToLong(XmTextFieldGetLastPosition); TextFieldWidgetToInt(XmTextFieldGetMaxLength); TextFieldWidgetToString(XmTextFieldGetSelection); /* XmTextFieldGetSelectionPosition not supported */ TextFieldWidgetToString(XmTextFieldGetString); /* XmTextFieldGetSource not supported */ case XCALL_XmTextFieldInsert: { Widget w = GetTextFieldWidget(taskData, (char *) "XmTextFieldInsert",XP1); { unsigned pos = get_C_ulong(taskData, P2); PolyStringObject *s = GetString(P3); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextFieldInsert(w,pos,buffer); break; } } TextFieldWidgetToBool(XmTextFieldPaste); /* for side effect! */ /* XmTextFieldPosToXY not supported */ TextFieldWidgetToBool(XmTextFieldRemove); /* for side effect! */ case XCALL_XmTextFieldReplace: { Widget w = GetTextFieldWidget(taskData, (char *) "XmTextFieldReplace",XP1); { unsigned from_pos = get_C_ulong(taskData, P2); unsigned to_pos = get_C_ulong(taskData, P3); PolyStringObject *s = GetString(P4); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextFieldReplace(w,from_pos,to_pos,buffer); break; } } TextFieldWidgetBoolAction(XmTextFieldSetAddMode); TextFieldWidgetLongAction(XmTextFieldSetCursorPosition); TextFieldWidgetBoolAction(XmTextFieldSetEditable); /* XmTextFieldSetHighlight not supported */ TextFieldWidgetLongAction(XmTextFieldSetInsertionPosition); TextFieldWidgetIntAction(XmTextFieldSetMaxLength); /* XmTextFieldSetSelection not supported */ /* inlined SPF 15/2/94 */ case XCALL_XmTextFieldSetString: { Widget w = GetTextFieldWidget(taskData, (char *) "XmTextFieldSetString",XP1); { PolyStringObject *s = GetString(P2); int size = s->length + 1; char *buffer = (char *)alloca(size); Poly_string_to_C(s,buffer,size); XmTextFieldSetString(w,buffer); break; } } TextFieldWidgetLongAction(XmTextFieldShowPosition); /* for side effect! */ case XCALL_XmTextFieldXYToPos: { Widget w = GetTextFieldWidget(taskData, (char *) "XmTextFieldXYToPos",XP1); { int x = get_C_long(taskData, P2); int y = get_C_long(taskData, P3); return Make_int(XmTextFieldXYToPos(w,x,y)); } } case XCALL_XmTrackingLocate: return EmptyWidget(taskData, GetDS(taskData, XP1), XmTrackingLocate(GetWidget(taskData, XP1),GetCursor(taskData, XP2),get_C_ulong(taskData, P3))); case XCALL_XmUpdateDisplay: XmUpdateDisplay(GetWidget(taskData, XP1)); break; #undef TextFieldWidgetToLong #undef TextFieldWidgetToInt #undef TextFieldWidgetToBool #undef TextFieldWidgetToString #undef TextFieldWidgetIntAction #undef TextFieldWidgetLongAction #undef TextFieldWidgetBoolAction /******************************************************************************/ /* */ /* Operations on XmList widgets */ /* */ /******************************************************************************/ #define ListWidgetAction(func) \ case XCALL_ ## func : \ WidgetAction(taskData, (char *) #func,GetListWidget,func,XP1); \ break #define ListWidgetBoolAction(func) \ case XCALL_ ## func : \ WidgetBoolAction(taskData, (char *) #func,GetListWidget,func,XP1,P2); \ break #define ListWidgetXmstringAction(func) \ case XCALL_ ## func : \ WidgetXmstringAction(taskData, (char *) #func,GetListWidget,func,XP1,P2); \ break #define ListWidgetXmstringlistAction(func) \ case XCALL_ ## func : \ WidgetXmstringlistAction(taskData, (char *) #func,GetListWidget,func,XP1,(ML_Cons_Cell *)XP2); \ break #define ListWidgetIntAction(func) \ case XCALL_ ## func : \ WidgetIntAction(taskData, (char *) #func,GetListWidget,func,XP1,P2); \ break #define ListWidgetIntIntAction(func) \ case XCALL_ ## func : \ WidgetIntIntAction(taskData, (char *) #func,GetListWidget,func,XP1,P2,P3); \ break #define ListWidgetXmstringIntAction(func) \ case XCALL_ ## func : \ WidgetXmstringIntAction(taskData, (char *) #func,GetListWidget,func,XP1,P2,P3); \ break #define ListWidgetIntBoolAction(func) \ case XCALL_ ## func : \ WidgetIntBoolAction(taskData, (char *) #func,GetListWidget,func,XP1,P2,P3); \ break #define ListWidgetXmstringBoolAction(func) \ case XCALL_ ## func : \ WidgetXmstringBoolAction(taskData, (char *) #func,GetListWidget,func,XP1,P2,P3); \ break #define ListWidgetXmstringlistIntAction(func) \ case XCALL_ ## func : \ WidgetXmstringlistIntAction(taskData, (char *) #func,GetListWidget,func,XP1,(ML_Cons_Cell *)XP2,P3); \ break #define ListWidgetXmstringToIntlist(func) \ case XCALL_ ## func : \ return(WidgetXmstringToIntlist(taskData, (char *) #func,GetListWidget,func,XP1,P2)) #define ListWidgetToIntlist(func) \ case XCALL_ ## func : \ return(WidgetToIntlist(taskData, (char *) #func,GetListWidget,func,XP1)) #define ListWidgetXmstringToBool(func) \ case XCALL_ ## func : \ return(WidgetXmstringToBool(taskData, (char *) #func,GetListWidget,func,XP1,P2)) #define ListWidgetXmstringToInt(func) \ case XCALL_ ## func : \ return(WidgetXmstringToInt(taskData, (char *) #func,GetListWidget,func,XP1,P2)) /************************* Adding Items to List *******************************/ ListWidgetXmstringIntAction(XmListAddItem); ListWidgetXmstringIntAction(XmListAddItemUnselected); ListWidgetXmstringlistIntAction(XmListAddItems); /************************* Deleting Items from List ***************************/ ListWidgetAction(XmListDeleteAllItems); ListWidgetXmstringAction(XmListDeleteItem); ListWidgetXmstringlistAction(XmListDeleteItems); ListWidgetIntAction(XmListDeletePos); ListWidgetIntIntAction(XmListDeleteItemsPos); /************************* Deselecting Items **********************************/ ListWidgetAction(XmListDeselectAllItems); ListWidgetXmstringAction(XmListDeselectItem); ListWidgetIntAction(XmListDeselectPos); /************************* Query Functions ************************************/ ListWidgetXmstringToIntlist(XmListGetMatchPos); ListWidgetToIntlist(XmListGetSelectedPos); ListWidgetXmstringToBool(XmListItemExists); ListWidgetXmstringToInt(XmListItemPos); /************************* Replacing Items in the List ************************/ case XCALL_XmListReplaceItems: /* Unpairing the strings is done in the ML, because it's easier there. */ { Widget w = GetListWidget(taskData, (char *) "XmListReplaceItems",XP1); unsigned n = ListLength(P2); unsigned n2 = ListLength(P3); if (n != n2) { RaiseXWindows(taskData, "XmListReplaceItems: strings lists are different lengths"); } else { XmString *oldstrings = (XmString *)alloca(n * sizeof(XmString)); XmString *newstrings = (XmString *)alloca(n * sizeof(XmString)); GetList4(taskData, P2,oldstrings,sizeof(XmString),GetXmString); GetList4(taskData, P3,newstrings,sizeof(XmString),GetXmString); XmListReplaceItems(w,oldstrings,n,newstrings); for (unsigned i = 0; i < n; i ++) XmStringFree(oldstrings[i]); for (unsigned i = 0; i < n; i ++) XmStringFree(newstrings[i]); } break; } ListWidgetXmstringlistIntAction(XmListReplaceItemsPos); /************************* Selecting Items in the List ************************/ ListWidgetXmstringBoolAction(XmListSelectItem); ListWidgetIntBoolAction(XmListSelectPos); /************************* Set Add Mode ***************************************/ ListWidgetBoolAction(XmListSetAddMode); /************************* Set Appearance *************************************/ ListWidgetXmstringAction(XmListSetBottomItem); ListWidgetIntAction(XmListSetBottomPos); ListWidgetIntAction(XmListSetHorizPos); ListWidgetXmstringAction(XmListSetItem); ListWidgetIntAction(XmListSetPos); #undef ListWidgetAction #undef ListWidgetBoolAction #undef ListWidgetXmstringAction #undef ListWidgetXmstringlistAction #undef ListWidgetIntAction #undef ListWidgetIntIntAction #undef ListWidgetXmstringIntAction #undef ListWidgetXmstringBoolAction #undef ListWidgetXmstringlistIntAction #undef ListWidgetXmstringToIntlist #undef ListWidgetToIntlist #undef ListWidgetXmstringToBool #undef ListWidgetXmstringToInt /* Calls added by DCJM. */ case XCALL_XmMenuPosition: MenuPosition( GetWidget(taskData, XP1), get_C_ulong(taskData, P2), get_C_ulong(taskData, P3)); break; /******************************************************************************/ /* */ /* Default case */ /* */ /******************************************************************************/ default: Crash ("Unimplemented X Windows call %d", code); } return Make_bool(False); } typedef struct { int code; const char *name; } CodeName; static CodeName ProtocolNames[] = { { X_CreateWindow,"XCreateWindow"}, { X_ChangeWindowAttributes,"XChangeWindowAttributes"}, { X_GetWindowAttributes,"XGetWindowAttributes"}, { X_DestroyWindow,"XDestroyWindow"}, { X_DestroySubwindows,"XDestroySubwindows"}, { X_ChangeSaveSet,"XChangeSAVESet"}, { X_ReparentWindow,"XReparentWindow"}, { X_MapWindow,"XMapWindow"}, { X_MapSubwindows,"XMapSubwindows"}, { X_UnmapWindow,"XUnmapWindow"}, { X_UnmapSubwindows,"XUnmapSubwindows"}, { X_ConfigureWindow,"XConfigureWindow"}, { X_CirculateWindow,"XCirculateWindow"}, { X_GetGeometry,"XGetGeometry"}, { X_QueryTree,"XQueryTree"}, { X_InternAtom,"XInternAtom"}, { X_GetAtomName,"XGetAtomName"}, { X_ChangeProperty,"XChangeProperty"}, { X_DeleteProperty,"XDeleteProperty"}, { X_GetProperty,"XGetProperty"}, { X_ListProperties,"XListProperties"}, { X_SetSelectionOwner,"XSetSelectionOwner"}, { X_GetSelectionOwner,"XGetSelectionOwner"}, { X_ConvertSelection,"XConvertSelection"}, { X_SendEvent,"XSendEvent"}, { X_GrabPointer,"XGrabPointer"}, { X_UngrabPointer,"XUngrabPointer"}, { X_GrabButton,"XGrabButton"}, { X_UngrabButton,"XUngrabButton"}, { X_ChangeActivePointerGrab,"XChangeActivePointerGrab"}, { X_GrabKeyboard,"XGrabKeyboard"}, { X_UngrabKeyboard,"XUngrabKeyboard"}, { X_GrabKey,"XGrabKey"}, { X_UngrabKey,"XUngrabKey"}, { X_AllowEvents,"XAllowEvents"}, { X_GrabServer,"XGrabServer"}, { X_UngrabServer,"XUngrabServer"}, { X_QueryPointer,"XQueryPointer"}, { X_GetMotionEvents,"XGetMotionEvents"}, { X_TranslateCoords,"XTranslateCoords"}, { X_WarpPointer,"XWarpPointer"}, { X_SetInputFocus,"XSetInputFocus"}, { X_GetInputFocus,"XGetInputFocus"}, { X_QueryKeymap,"XQueryKeymap"}, { X_OpenFont,"XOpenFont"}, { X_CloseFont,"XCloseFont"}, { X_QueryFont,"XQueryFont"}, { X_QueryTextExtents,"XQueryTextExtents"}, { X_ListFonts,"XListFonts"}, { X_ListFontsWithInfo,"XListFontsWithInfo"}, { X_SetFontPath,"XSetFontPath"}, { X_GetFontPath,"XGetFontPath"}, { X_CreatePixmap,"XCreatePixmap"}, { X_FreePixmap,"XFreePixmap"}, { X_CreateGC,"XCreateGC"}, { X_ChangeGC,"XChangeGC"}, { X_CopyGC,"XCopyGC"}, { X_SetDashes,"XSetDashes"}, { X_SetClipRectangles,"XSetClipRectangles"}, { X_FreeGC,"XFreeGC"}, { X_ClearArea,"XClearArea"}, { X_CopyArea,"XCopyArea"}, { X_CopyPlane,"XCopyPlane"}, { X_PolyPoint,"XPolyPoint"}, { X_PolyLine,"XPolyLine"}, { X_PolySegment,"XPolySegment"}, { X_PolyRectangle,"XPolyRectangle"}, { X_PolyArc,"XPolyArc"}, { X_FillPoly,"XFillPoly"}, { X_PolyFillRectangle,"XPolyFillRectangle"}, { X_PolyFillArc,"XPolyFillArc"}, { X_PutImage,"XPutImage"}, { X_GetImage,"XGetImage"}, { X_PolyText8,"XPolyText8"}, { X_PolyText16,"XPolyText16"}, { X_ImageText8,"XImageText8"}, { X_ImageText16,"XImageText16"}, { X_CreateColormap,"XCreateColormap"}, { X_FreeColormap,"XFreeColormap"}, { X_CopyColormapAndFree,"XCopyColormapAndFree"}, { X_InstallColormap,"XInstallColormap"}, { X_UninstallColormap,"XUninstallColormap"}, { X_ListInstalledColormaps,"XListInstalledColormaps"}, { X_AllocColor,"XAllocColor"}, { X_AllocNamedColor,"XAllocNamedColor"}, { X_AllocColorCells,"XAllocColorCells"}, { X_AllocColorPlanes,"XAllocColorPlanes"}, { X_FreeColors,"XFreeColors"}, { X_StoreColors,"XStoreColors"}, { X_StoreNamedColor,"XStoreNamedColor"}, { X_QueryColors,"XQueryColors"}, { X_LookupColor,"XLookupColor"}, { X_CreateCursor,"XCreateCursor"}, { X_CreateGlyphCursor,"XCreateGlyphCursor"}, { X_FreeCursor,"XFreeCursor"}, { X_RecolorCursor,"XRecolorCursor"}, { X_QueryBestSize,"XQueryBestSize"}, { X_QueryExtension,"XQueryExtension"}, { X_ListExtensions,"XListExtensions"}, { X_ChangeKeyboardMapping,"XChangeKeyboardMapping"}, { X_GetKeyboardMapping,"XGetKeyboardMapping"}, { X_ChangeKeyboardControl,"XChangeKeyboardControl"}, { X_GetKeyboardControl,"XGetKeyboardControl"}, { X_Bell,"XBell"}, { X_ChangePointerControl,"XChangePointerControl"}, { X_GetPointerControl,"XGetPointerControl"}, { X_SetScreenSaver,"XSetScreenSaver"}, { X_GetScreenSaver,"XGetScreenSaver"}, { X_ChangeHosts,"XChangeHosts"}, { X_ListHosts,"XListHosts"}, { X_SetAccessControl,"XSetAccessControl"}, { X_SetCloseDownMode,"XSetCloseDownMode"}, { X_KillClient,"XKillClient"}, { X_RotateProperties,"XRotateProperties"}, { X_ForceScreenSaver,"XForceScreenSaver"}, { X_SetPointerMapping,"XSetPointerMapping"}, { X_GetPointerMapping,"XGetPointerMapping"}, { X_SetModifierMapping,"XSetModifierMapping"}, { X_GetModifierMapping,"XGetModifierMapping"}, { X_NoOperation,"XNoOperation"} }; static CodeName ProtocolErrors[] = { { Success,"Success"}, { BadRequest,"BadRequest"}, { BadValue,"BadValue"}, { BadWindow,"BadWindow"}, { BadPixmap,"BadPixmap"}, { BadAtom,"BadAtom"}, { BadCursor,"BadCursor"}, { BadFont,"BadFont"}, { BadMatch,"BadMatch"}, { BadDrawable,"BadDrawable"}, { BadAccess,"BadAccess"}, { BadAlloc,"BadAlloc"}, { BadColor,"BadColor"}, { BadGC,"BadGC"}, { BadIDChoice,"BadIDChoice"}, { BadName,"BadName"}, { BadLength,"BadLength"}, { BadImplementation,"BadImplementation"} }; static int XWindowsError(Display *display, XErrorEvent *error) { const char *errorName = "unknown"; const char *requestName = "unknown"; int i,n; char buffer[500]; n = sizeof(ProtocolErrors) / sizeof(ProtocolErrors[0]); for(i = 0; i < n; i++) { if (ProtocolErrors[i].code == error->error_code) { errorName = ProtocolErrors[i].name; } } n = sizeof(ProtocolNames) / sizeof(ProtocolNames[0]); for(i = 0; i < n; i++) { if (ProtocolNames[i].code == error->request_code) { requestName = ProtocolNames[i].name; } } sprintf(buffer,"%s in %s",errorName,requestName); printf("\nX Error %s\n\n", buffer); #if NEVER /* Raise exception if we are running in synchronous mode */ if (display->private15) RaiseXWindows(taskData, buffer); #endif return 0; /* DUMMY value - SPF 6/1/94 */ } struct _entrypts xwindowsEPT[] = { { "PolyXWindowsGeneral", (polyRTSFunction)&PolyXWindowsGeneral}, { NULL, NULL} // End of list. }; class XWinModule: public RtsModule { public: virtual void Init(void); void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static XWinModule xwinModule; void XWinModule::GarbageCollect(ScanAddress *process) { /* Process all the objects in the list. If an object */ /* is not found from outside then it is removed. */ T_List **T = &TList; C_List **C = &CList; int i; /* process all XList headers */ for (i = 0; i < XLISTSIZE; i++) { X_List *L = XList[i]; while(L) { PolyObject *P = L->object; /* copy object pointer */ X_List *N = L->next; /* copy next pointer */ process->ScanRuntimeAddress(&P, ScanAddress::STRENGTH_WEAK); /* P may have been moved, or overwritten with a 0 if not accessible */ if (P == 0) DestroyXObject(L->object); else L->object = (X_Object*)P; L = N; } } /* Process the timeout/message list */ while (*T) { T_List *t = *T; process->ScanRuntimeAddress(&t->alpha, ScanAddress::STRENGTH_STRONG); process->ScanRuntimeAddress(&t->handler, ScanAddress::STRENGTH_STRONG); PolyObject *obj = t->window_object; process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_WEAK); t->window_object = (X_Window_Object*)obj; obj = t->widget_object; process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_STRONG); t->widget_object = (X_Widget_Object*)obj; // DCJM: I don't understand this. The widget entry will never go // to zero since it's strong not weak. if (t->window_object == 0 && t->widget_object == 0) { *T = t->next; free(t); } else T = &t->next; } /* Process the callback list */ while(*C) { C_List *c = *C; process->ScanRuntimeAddress(&c->function, ScanAddress::STRENGTH_STRONG); PolyObject *obj = c->widget_object; process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_STRONG); c->widget_object = (X_Widget_Object*)obj; /* DCJM: This doesn't make sense. The widget entry will only go to zero if the G.C. operation was weak, not strong as in the line above. */ if (c->widget_object == 0) { *C = c->next; free(c); } else C = &c->next; } /* Process the callback waiting list */ if (! FList.IsTagged()) { PolyObject *obj = FList.AsObjPtr(); process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_STRONG); FList = obj; } /* and the Xt event waiting list. */ if (! GList.IsTagged()) { PolyObject *obj = GList.AsObjPtr(); process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_STRONG) ; GList = obj; } } void XWinModule::Init(void) { initXList(); /* added 9/12/93 SPF */ XtToolkitThreadInitialize(); XtToolkitInitialize(); XSetErrorHandler(XWindowsError); } POLYUNSIGNED PolyXWindowsGeneral(PolyObject *threadId, PolyWord params) { TaskData *taskData = TaskData::FindTaskForId(threadId); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(params); Handle result = 0; try { result = XWindows_c(taskData, pushedArg); } catch (KillException &) { processes->ThreadExit(taskData); // May test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } #else // We haven't got X or we haven't got Motif #include "globals.h" #include "run_time.h" #include "sys.h" #include "save_vec.h" #include "machine_dep.h" #include "processes.h" #include "rtsentry.h" #include "xwindows.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyXWindowsGeneral(PolyObject *threadId, PolyWord params); } Handle XWindows_c(TaskData *taskData, Handle/*params*/) { raise_exception_string(taskData, EXC_XWindows, "Not implemented"); /*NOTREACHED*/ return taskData->saveVec.push(TAGGED(0)); /* just to keep lint happy */ } POLYUNSIGNED PolyXWindowsGeneral(PolyObject *threadId, PolyWord /*params*/) { TaskData *taskData = TaskData::FindTaskForId(threadId); taskData->PreRTSCall(); try { raise_exception_string(taskData, EXC_XWindows, "Not implemented"); } catch (...) { } // Handle the C++ exception taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Return unit since we're raising an exception } struct _entrypts xwindowsEPT[] = { { "PolyXWindowsGeneral", (polyRTSFunction)&PolyXWindowsGeneral}, { NULL, NULL} // End of list. }; #endif polyml-5.7.1/libpolyml/PolyControl.h0000644000175000017500000000177113204034553016445 0ustar daviddavid/* Title: DDE Control Messages Copyright (c) 2000 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _POLYCONTROL_H_ #define _POLYCONTROL_H_ #define POLYTOPIC "PolyML" #define POLYINTERRUPT "[Interrupt]" #define POLYTERMINATE "[Terminate]" #endif polyml-5.7.1/libpolyml/statistics.cpp0000644000175000017500000005463013204034553016710 0ustar daviddavid/* Title: statics.cpp - Profiling statistics Copyright (c) 2011, 2013, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_WINDOWS_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_MMAN_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_SYS_TIMES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #if defined(HAVE_MMAP) // How do we get the page size? #ifndef HAVE_GETPAGESIZE #ifdef _SC_PAGESIZE #define getpagesize() sysconf(_SC_PAGESIZE) #else // If this fails we're stuck #define getpagesize() PAGESIZE #endif #endif #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #else #define _T(x) x #endif #include #ifdef max #undef max #endif #include "run_time.h" #include "sys.h" #include "save_vec.h" #include "rts_module.h" #include "timing.h" #include "polystring.h" #include "processes.h" #include "statistics.h" #include "../polystatistics.h" #define STATS_SPACE 4096 // Enough for all the statistics #define ASN1_U_BOOL 1 #define ASN1_U_INT 2 #define ASN1_U_STRING 4 #define ASN1_U_NULL 5 #define ASN1_U_ENUM 10 #define ASN1_U_SEQUENCE 16 // For the moment we don't bother to interlock access to the statistics memory. // Other processes only read the memory and at worst they may get a glitch in // the values. Statistics::Statistics(): accessLock("Statistics") { statMemory = 0; memSize = 0; newPtr = 0; for (unsigned i = 0; i < N_PS_INTS; i++) counterAddrs[i] = 0; for (unsigned j = 0; j < N_PS_TIMES; j++) timeAddrs[j].secAddr = timeAddrs[j].usecAddr = 0; for (unsigned k = 0; k < N_PS_USER; k++) userAddrs[k] = 0; memset(&gcUserTime, 0, sizeof(gcUserTime)); memset(&gcSystemTime, 0, sizeof(gcSystemTime)); #ifdef HAVE_WINDOWS_H // File mapping handle hFileMap = NULL; exportStats = true; // Actually unused #else mapFd = -1; mapFileName = 0; exportStats = false; // Don't export by default #endif memSize = 0; statMemory = 0; newPtr = 0; } void Statistics::Init() { #ifdef HAVE_WINDOWS_H // Get the process ID to use in the shared memory name DWORD pid = ::GetCurrentProcessId(); TCHAR shmName[MAX_PATH]; wsprintf(shmName, _T(POLY_STATS_NAME) _T("%lu"), pid); // Create a piece of shared memory hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, STATS_SPACE, shmName); if (hFileMap == NULL) return; // If it already exists it's the wrong one. if (GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hFileMap); hFileMap = NULL; return; } statMemory = (unsigned char*)MapViewOfFile(hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, STATS_SPACE); if (statMemory == NULL) { CloseHandle(hFileMap); hFileMap = NULL; return; } memSize = STATS_SPACE; #else #if HAVE_MMAP if (exportStats) { // Create the shared memory in the user's .polyml directory int pageSize = getpagesize(); memSize = (STATS_SPACE + pageSize-1) & ~(pageSize-1); char *homeDir = getenv("HOME"); if (homeDir == NULL) return; mapFileName = (char*)malloc(strlen(homeDir) + 100); strcpy(mapFileName, homeDir); strcat(mapFileName, "/.polyml"); mkdir(mapFileName, 0777); // Make the directory to ensure it exists sprintf(mapFileName + strlen(mapFileName), "/" POLY_STATS_NAME "%d", getpid()); // Open the file. Truncates it if it already exists. That should only happen // if a previous run with the same process id crashed. mapFd = open(mapFileName, O_RDWR|O_CREAT, 0444); if (mapFd == -1) return; // Write enough of the file to fill the space. char ch = 0; for (size_t i = 0; i < memSize; i++) write(mapFd, &ch, 1); statMemory = (unsigned char*)mmap(0, memSize, PROT_READ|PROT_WRITE, MAP_SHARED, mapFd, 0); if (statMemory == MAP_FAILED) { statMemory = 0; return; } } else #endif { // If we just want the statistics locally. statMemory = (unsigned char*)calloc(STATS_SPACE, sizeof(unsigned char)); if (statMemory == 0) return; } #endif // Set up the ASN1 structure in the statistics area. newPtr = statMemory; *newPtr++ = POLY_STATS_C_STATISTICS; // Context tag for statistics *newPtr++ = 0x82; // Extended length, 2 bytes *newPtr++ = 0x00; // Length is initially zero *newPtr++ = 0x00; addCounter(PSC_THREADS, POLY_STATS_ID_THREADS, "ThreadCount"); addCounter(PSC_THREADS_IN_ML, POLY_STATS_ID_THREADS_IN_ML, "ThreadsInML"); addCounter(PSC_THREADS_WAIT_IO, POLY_STATS_ID_THREADS_WAIT_IO, "ThreadsInIOWait"); addCounter(PSC_THREADS_WAIT_MUTEX, POLY_STATS_ID_THREADS_WAIT_MUTEX, "ThreadsInMutexWait"); addCounter(PSC_THREADS_WAIT_CONDVAR, POLY_STATS_ID_THREADS_WAIT_CONDVAR, "ThreadsInCondVarWait"); addCounter(PSC_THREADS_WAIT_SIGNAL, POLY_STATS_ID_THREADS_WAIT_SIGNAL, "ThreadsInSignalWait"); addCounter(PSC_GC_FULLGC, POLY_STATS_ID_GC_FULLGC, "FullGCCount"); addCounter(PSC_GC_PARTIALGC, POLY_STATS_ID_GC_PARTIALGC, "PartialGCCount"); addSize(PSS_TOTAL_HEAP, POLY_STATS_ID_TOTAL_HEAP, "TotalHeap"); addSize(PSS_AFTER_LAST_GC, POLY_STATS_ID_AFTER_LAST_GC, "HeapAfterLastGC"); addSize(PSS_AFTER_LAST_FULLGC, POLY_STATS_ID_AFTER_LAST_FULLGC, "HeapAfterLastFullGC"); addSize(PSS_ALLOCATION, POLY_STATS_ID_ALLOCATION, "AllocationSpace"); addSize(PSS_ALLOCATION_FREE, POLY_STATS_ID_ALLOCATION_FREE, "AllocationSpaceFree"); addTime(PST_NONGC_UTIME, POLY_STATS_ID_NONGC_UTIME, "NonGCUserTime"); addTime(PST_NONGC_STIME, POLY_STATS_ID_NONGC_STIME, "NonGCSystemTime"); addTime(PST_GC_UTIME, POLY_STATS_ID_GC_UTIME, "GCUserTime"); addTime(PST_GC_STIME, POLY_STATS_ID_GC_STIME, "GCSystemTime"); addUser(0, POLY_STATS_ID_USER0, "UserCounter0"); addUser(1, POLY_STATS_ID_USER1, "UserCounter1"); addUser(2, POLY_STATS_ID_USER2, "UserCounter2"); addUser(3, POLY_STATS_ID_USER3, "UserCounter3"); addUser(4, POLY_STATS_ID_USER4, "UserCounter4"); addUser(5, POLY_STATS_ID_USER5, "UserCounter5"); addUser(6, POLY_STATS_ID_USER6, "UserCounter6"); addUser(7, POLY_STATS_ID_USER7, "UserCounter7");} void Statistics::addCounter(int cEnum, unsigned statId, const char *name) { // Tag header *newPtr++ = POLY_STATS_C_COUNTERSTAT; *newPtr++ = 0x00; // Initial length - overwritten at the end unsigned char *tagStart = newPtr; // First item - Id of this statistic - Implicit int *newPtr++ = POLY_STATS_C_IDENTIFIER; *newPtr++ = 0x01; ASSERT(statId < 128); *newPtr++ = statId; // Second item - The name size_t nameLength = strlen(name); ASSERT(nameLength < 125); *newPtr++ = POLY_STATS_C_NAME; *newPtr++ = (unsigned char)nameLength; for (unsigned i = 0; i < nameLength; i++) *newPtr++ = name[i]; // Third item - the counter itself. // This, along with the other counters, is technically incorrect // for an ASN1 integer because it should not contain more than // one zero byte. *newPtr++ = POLY_STATS_C_COUNTER_VALUE; *newPtr++ = sizeof(POLYUNSIGNED); counterAddrs[cEnum] = newPtr; // This is the address for (unsigned j = 0; j < sizeof(POLYUNSIGNED); j++) *newPtr++ = 0; // Finally set the tag length and the overall size. size_t length = newPtr - tagStart; ASSERT(length < 128); tagStart[-1] = (unsigned char)length; // Set the overall size. length = newPtr-statMemory - 4; statMemory[2] = (length >> 8) & 0xff; statMemory[3] = length & 0xff; } void Statistics::addSize(int cEnum, unsigned statId, const char *name) { // Tag header *newPtr++ = POLY_STATS_C_SIZESTAT; *newPtr++ = 0x00; // Initial length - overwritten at the end unsigned char *tagStart = newPtr; // First item - Id of this statistic - Implicit int *newPtr++ = POLY_STATS_C_IDENTIFIER; *newPtr++ = 0x01; ASSERT(statId < 128); *newPtr++ = statId; // Second item - The name size_t nameLength = strlen(name); ASSERT(nameLength < 125); *newPtr++ = POLY_STATS_C_NAME; *newPtr++ = (unsigned char)nameLength; for (unsigned i = 0; i < nameLength; i++) *newPtr++ = name[i]; // Third item - the size value itself. We have to allow one // byte extra to ensure that the value we encode is unsigned. unsigned bytes = sizeof(size_t) + 1; *newPtr++ = POLY_STATS_C_BYTE_COUNT; *newPtr++ = bytes; counterAddrs[cEnum] = newPtr; // This is the address for (unsigned j = 0; j < bytes; j++) *newPtr++ = 0; // Finally set the tag length and the overall size. size_t length = newPtr - tagStart; ASSERT(length < 128); tagStart[-1] = (unsigned char)length; // Set the overall size. length = newPtr-statMemory - 4; statMemory[2] = (length >> 8) & 0xff; statMemory[3] = length & 0xff; } void Statistics::addTime(int cEnum, unsigned statId, const char *name) { // Tag header *newPtr++ = POLY_STATS_C_TIMESTAT; *newPtr++ = 0x00; // Initial length - overwritten at the end unsigned char *tagStart = newPtr; // First item - Id of this statistic - Implicit int *newPtr++ = POLY_STATS_C_IDENTIFIER; *newPtr++ = 0x01; ASSERT(statId < 128); *newPtr++ = statId; // Second item - The name size_t nameLength = strlen(name); ASSERT(nameLength < 125); *newPtr++ = POLY_STATS_C_NAME; *newPtr++ = (unsigned char)nameLength; for (unsigned i = 0; i < nameLength; i++) *newPtr++ = name[i]; // Third item - the time. Two four byte values. *newPtr++ = POLY_STATS_C_TIME; *newPtr++ = 12; *newPtr++ = POLY_STATS_C_SECONDS; *newPtr++ = 4; timeAddrs[cEnum].secAddr = newPtr; // This is the address for (unsigned j = 0; j < 4; j++) *newPtr++ = 0; *newPtr++ = POLY_STATS_C_MICROSECS; *newPtr++ = 4; timeAddrs[cEnum].usecAddr = newPtr; // This is the address for (unsigned k = 0; k < 4; k++) *newPtr++ = 0; // Finally set the tag length and the overall size. size_t length = newPtr - tagStart; ASSERT(length < 128); tagStart[-1] = (unsigned char)length; // Set the overall size. length = newPtr-statMemory - 4; statMemory[2] = (length >> 8) & 0xff; statMemory[3] = length & 0xff; } void Statistics::addUser(int n, unsigned statId, const char *name) { // Tag header *newPtr++ = POLY_STATS_C_USERSTAT; *newPtr++ = 0x00; // Initial length - overwritten at the end unsigned char *tagStart = newPtr; // First item - Id of this statistic - Implicit int *newPtr++ = POLY_STATS_C_IDENTIFIER; *newPtr++ = 0x01; ASSERT(statId < 128); *newPtr++ = statId; // Second item - The name size_t nameLength = strlen(name); ASSERT(nameLength < 125); *newPtr++ = POLY_STATS_C_NAME; *newPtr++ = (unsigned char)nameLength; for (unsigned i = 0; i < nameLength; i++) *newPtr++ = name[i]; // Third item - the counter itself. For a user counter the value is a POLYSIGNED. *newPtr++ = POLY_STATS_C_COUNTER_VALUE; *newPtr++ = sizeof(POLYSIGNED); userAddrs[n] = newPtr; // This is the address for (unsigned j = 0; j < sizeof(POLYSIGNED); j++) *newPtr++ = 0; // Finally set the tag length and the overall size. size_t length = newPtr - tagStart; ASSERT(length < 128); tagStart[-1] = (unsigned char)length; // Set the overall size. length = newPtr-statMemory - 4; statMemory[2] = (length >> 8) & 0xff; statMemory[3] = length & 0xff; } Statistics::~Statistics() { #ifdef HAVE_WINDOWS_H if (statMemory != NULL) ::UnmapViewOfFile(statMemory); if (hFileMap != NULL) ::CloseHandle(hFileMap); #else #if HAVE_MMAP if (mapFileName != 0) { if (statMemory != 0 && statMemory != MAP_FAILED) munmap(statMemory, memSize); if (mapFd != -1) close(mapFd); if (mapFileName != 0) unlink(mapFileName); free(mapFileName); } else #endif { free(statMemory); } #endif } // Counters. These are used for thread state so need interlocks void Statistics::incCount(int which) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); unsigned length = counterAddrs[which][-1]; while (length--) { if ((++counterAddrs[which][length]) != 0) break; } } } void Statistics::decCount(int which) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); unsigned length = counterAddrs[which][-1]; while (length--) { if ((counterAddrs[which][length]--) != 0) break; } } } // Sizes. Some of these are only set during GC so may not need interlocks size_t Statistics::getSizeWithLock(int which) { unsigned length = counterAddrs[which][-1]; size_t result = 0; for (unsigned i = 0; i < length; i++) result = (result << 8) | counterAddrs[which][i]; return result; } void Statistics::setSizeWithLock(int which, size_t s) { unsigned length = counterAddrs[which][-1]; while (length--) { counterAddrs[which][length] = (unsigned char)(s & 0xff); s = s >> 8; } } void Statistics::setSize(int which, size_t s) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); setSizeWithLock(which, s); } } void Statistics::incSize(int which, size_t s) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); setSizeWithLock(which, getSizeWithLock(which) + s); } } void Statistics::decSize(int which, size_t s) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); setSizeWithLock(which, getSizeWithLock(which) - s); } } size_t Statistics::getSize(int which) { if (statMemory && counterAddrs[which]) { PLocker lock(&accessLock); return getSizeWithLock(which); } else return 0; } void Statistics::setTimeValue(int which, unsigned long secs, unsigned long usecs) { if (statMemory && timeAddrs[which].secAddr && timeAddrs[which].usecAddr) { PLocker lock(&accessLock); // Necessary ??? unsigned sLength = timeAddrs[which].secAddr[-1]; while (sLength--) { timeAddrs[which].secAddr[sLength] = (unsigned char)(secs & 0xff); secs = secs >> 8; } unsigned usLength = timeAddrs[which].usecAddr[-1]; while (usLength--) { timeAddrs[which].usecAddr[usLength] = (unsigned char)(usecs & 0xff); usecs = usecs >> 8; } } } #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Native Windows void Statistics::copyGCTimes(const FILETIME &gcUtime, const FILETIME &gcStime) { gcUserTime = gcUtime; gcSystemTime = gcStime; ULARGE_INTEGER li; li.LowPart = gcUtime.dwLowDateTime; li.HighPart = gcUtime.dwHighDateTime; setTimeValue(PST_GC_UTIME, (unsigned long)(li.QuadPart / 10000000), (unsigned long)((li.QuadPart / 10) % 1000000)); li.LowPart = gcStime.dwLowDateTime; li.HighPart = gcStime.dwHighDateTime; setTimeValue(PST_GC_STIME, (unsigned long)(li.QuadPart / 10000000), (unsigned long)((li.QuadPart / 10) % 1000000)); } #else // Unix void Statistics::copyGCTimes(const struct timeval &gcUtime, const struct timeval &gcStime) { gcUserTime = gcUtime; gcSystemTime = gcStime; setTimeValue(PST_GC_UTIME, gcUtime.tv_sec, gcUtime.tv_usec); setTimeValue(PST_GC_STIME, gcStime.tv_sec, gcStime.tv_usec); } #endif // Update the statistics that are not otherwise copied. Called from the // root thread every second. void Statistics::updatePeriodicStats(POLYUNSIGNED freeWords, unsigned threadsInML) { setSize(PSS_ALLOCATION_FREE, freeWords*sizeof(PolyWord)); #if (defined(HAVE_WINDOWS_H) && ! defined(__CYGWIN__)) FILETIME ct, et, st, ut; GetProcessTimes(GetCurrentProcess(), &ct, &et, &st, &ut); subFiletimes(&st, &gcSystemTime); subFiletimes(&ut, &gcUserTime); ULARGE_INTEGER li; li.LowPart = ut.dwLowDateTime; li.HighPart = ut.dwHighDateTime; setTimeValue(PST_NONGC_UTIME, (unsigned long)(li.QuadPart / 10000000), (unsigned long)((li.QuadPart / 10) % 1000000)); li.LowPart = st.dwLowDateTime; li.HighPart = st.dwHighDateTime; setTimeValue(PST_NONGC_STIME, (unsigned long)(li.QuadPart / 10000000), (unsigned long)((li.QuadPart / 10) % 1000000)); #elif HAVE_GETRUSAGE struct rusage usage; getrusage(RUSAGE_SELF, &usage); subTimevals(&usage.ru_stime, &gcSystemTime); subTimevals(&usage.ru_utime, &gcUserTime); setTimeValue(PST_NONGC_UTIME, usage.ru_utime.tv_sec, usage.ru_utime.tv_usec); setTimeValue(PST_NONGC_STIME, usage.ru_stime.tv_sec, usage.ru_stime.tv_usec); #endif if (statMemory && counterAddrs[PSC_THREADS_IN_ML]) { PLocker lock(&accessLock); unsigned length = counterAddrs[PSC_THREADS_IN_ML][-1]; while (length--) { counterAddrs[PSC_THREADS_IN_ML][length] = (unsigned char)(threadsInML & 0xff); threadsInML = threadsInML >> 8; } } } void Statistics::setUserCounter(unsigned which, POLYSIGNED value) { if (statMemory && userAddrs[which]) { PLocker lock(&accessLock); // Not really needed // The ASN1 int is big-endian unsigned length = userAddrs[which][-1]; while (length--) { userAddrs[which][length] = (unsigned char)value; value = value >> 8; } } } Handle Statistics::returnStatistics(TaskData *taskData, unsigned char *stats) { // Parse the ASN1 tag and length. unsigned char *p = stats; if (*p == POLY_STATS_C_STATISTICS) // Check and skip the tag { p++; if ((*p & 0x80) == 0) p += *p + 1; else { int lengthOfLength = *p++ & 0x7f; if (lengthOfLength != 0) { unsigned l = 0; while (lengthOfLength--) l = (l << 8) | *p++; p += l; } } } return taskData->saveVec.push(C_string_to_Poly(taskData, (const char*)stats, p - stats)); } // Copy the local statistics into the buffer Handle Statistics::getLocalStatistics(TaskData *taskData) { if (statMemory == 0) raise_exception_string(taskData, EXC_Fail, "No statistics available"); return returnStatistics(taskData, statMemory); } // Get statistics for a remote instance. We don't do any locking Handle Statistics::getRemoteStatistics(TaskData *taskData, POLYUNSIGNED pid) { #ifdef HAVE_WINDOWS_H TCHAR shmName[MAX_PATH]; wsprintf(shmName, _T(POLY_STATS_NAME) _T("%") _T(POLYUFMT), pid); HANDLE hRemMemory = OpenFileMapping(FILE_MAP_READ, FALSE, shmName); if (hRemMemory == NULL) raise_exception_string(taskData, EXC_Fail, "No statistics available"); unsigned char *sMem = (unsigned char *)MapViewOfFile(hRemMemory, FILE_MAP_READ, 0, 0, 0); CloseHandle(hRemMemory); if (sMem == NULL) raise_exception_string(taskData, EXC_Fail, "No statistics available"); if (*sMem != POLY_STATS_C_STATISTICS) { UnmapViewOfFile(sMem); raise_exception_string(taskData, EXC_Fail, "Statistics data malformed"); } Handle result = returnStatistics(taskData, sMem); UnmapViewOfFile(sMem); return result; #elif HAVE_MMAP // Find the shared memory in the user's home directory char *homeDir = getenv("HOME"); if (homeDir == NULL) raise_exception_string(taskData, EXC_Fail, "No statistics available"); int remMapFd = -1; size_t remMapSize = 4096; TempCString remMapFileName((char *)malloc(remMapSize)); if (remMapFileName == NULL) raise_exception_string(taskData, EXC_Fail, "No statistics available"); while ((snprintf(remMapFileName, remMapSize, "%s/.polyml/" POLY_STATS_NAME "%" POLYUFMT, homeDir, pid), strlen(remMapFileName) >= remMapSize - 1)) { if (remMapSize > std::numeric_limits::max() / 2) raise_exception_string(taskData, EXC_Fail, "No statistics available"); remMapSize *= 2; char *newFileName = (char *)realloc(remMapFileName, remMapSize); if (newFileName == NULL) raise_exception_string(taskData, EXC_Fail, "No statistics available"); remMapFileName = newFileName; } remMapFd = open(remMapFileName, O_RDONLY); if (remMapFd == -1) raise_exception_string(taskData, EXC_Fail, "No statistics available"); unsigned char *sMem = (unsigned char*)mmap(0, memSize, PROT_READ, MAP_PRIVATE, remMapFd, 0); if (sMem == MAP_FAILED) { close(remMapFd); raise_exception_string(taskData, EXC_Fail, "No statistics available"); } // Check the tag. if (*sMem != POLY_STATS_C_STATISTICS) { munmap(sMem, memSize); close(remMapFd); raise_exception_string(taskData, EXC_Fail, "Statistics data malformed"); } Handle result = returnStatistics(taskData, sMem); munmap(sMem, memSize); close(remMapFd); return result; #else raise_exception_string(taskData, EXC_Fail, "No statistics available"); #endif } // Create the global statistics object. Statistics globalStats; polyml-5.7.1/libpolyml/realconv.cpp0000644000175000017500000033440313204034553016326 0ustar daviddavid/* Note: Although strtod and dtoa seem to be present on some systems they are not always included in the headers or in the libraries. DCJM 6/4/00 To simplify all this strtod, dtoa and free_dtoa all have a poly_ prefix. */ /**************************************************************** * * The author of this software is David M. Gay. * * Copyright (c) 1991, 2000, 2001 by Lucent Technologies. * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * ***************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ /* On a machine with IEEE extended-precision registers, it is * necessary to specify double-precision (53-bit) rounding precision * before invoking strtod or dtoa. If the machine uses (the equivalent * of) Intel 80x87 arithmetic, the call * _control87(PC_53, MCW_PC); * does this with many compilers. Whether this or another call is * appropriate depends on the compiler; for this to work, it may be * necessary to #include "float.h" or another system-dependent header * file. */ /* strtod for IEEE-, VAX-, and IBM-arithmetic machines. * (Note that IEEE arithmetic is disabled by gcc's -ffast-math flag.) * * This strtod returns a nearest machine number to the input decimal * string (or sets errno to ERANGE). With IEEE arithmetic, ties are * broken by the IEEE round-even rule. Otherwise ties are broken by * biased rounding (add half and chop). * * Inspired loosely by William D. Clinger's paper "How to Read Floating * Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101]. * * Modifications: * * 1. We only require IEEE, IBM, or VAX double-precision * arithmetic (not IEEE double-extended). * 2. We get by with floating-point arithmetic in a case that * Clinger missed -- when we're computing d * 10^n * for a small integer d and the integer n is not too * much larger than 22 (the maximum integer k for which * we can represent 10^k exactly), we may be able to * compute (d*10^k) * 10^(e-k) with just one roundoff. * 3. Rather than a bit-at-a-time adjustment of the binary * result in the hard case, we use floating-point * arithmetic to determine the adjustment to within * one bit; only in really hard cases do we need to * compute a second residual. * 4. Because of 3., we don't need a large table of powers of 10 * for ten-to-e (just some small tables, e.g. of 10^k * for 0 <= k <= 22). */ /* * #define IEEE_8087 for IEEE-arithmetic machines where the least * significant byte has the lowest address. * #define IEEE_MC68k for IEEE-arithmetic machines where the most * significant byte has the lowest address. * #define Long int on machines with 32-bit ints and 64-bit longs. * #define IBM for IBM mainframe-style floating-point arithmetic. * #define VAX for VAX-style floating-point arithmetic (D_floating). * #define No_leftright to omit left-right logic in fast floating-point * computation of dtoa. This will cause dtoa modes 4 and 5 to be * treated the same as modes 2 and 3 for some inputs. * #define Honor_FLT_ROUNDS if FLT_ROUNDS can assume the values 2 or 3 * and strtod and dtoa should round accordingly. Unless Trust_FLT_ROUNDS * is also #defined, fegetround() will be queried for the rounding mode. * Note that both FLT_ROUNDS and fegetround() are specified by the C99 * standard (and are specified to be consistent, with fesetround() * affecting the value of FLT_ROUNDS), but that some (Linux) systems * do not work correctly in this regard, so using fegetround() is more * portable than using FLT_ROUNDS directly. * #define Check_FLT_ROUNDS if FLT_ROUNDS can assume the values 2 or 3 * and Honor_FLT_ROUNDS is not #defined. * #define RND_PRODQUOT to use rnd_prod and rnd_quot (assembly routines * that use extended-precision instructions to compute rounded * products and quotients) with IBM. * #define ROUND_BIASED for IEEE-format with biased rounding and arithmetic * that rounds toward +Infinity. * #define ROUND_BIASED_without_Round_Up for IEEE-format with biased * rounding when the underlying floating-point arithmetic uses * unbiased rounding. This prevent using ordinary floating-point * arithmetic when the result could be computed with one rounding error. * #define Inaccurate_Divide for IEEE-format with correctly rounded * products but inaccurate quotients, e.g., for Intel i860. * #define NO_LONG_LONG on machines that do not have a "long long" * integer type (of >= 64 bits). On such machines, you can * #define Just_16 to store 16 bits per 32-bit Long when doing * high-precision integer arithmetic. Whether this speeds things * up or slows things down depends on the machine and the number * being converted. If long long is available and the name is * something other than "long long", #define Llong to be the name, * and if "unsigned Llong" does not work as an unsigned version of * Llong, #define #ULLong to be the corresponding unsigned type. * #define KR_headers for old-style C function headers. * #define Bad_float_h if your system lacks a float.h or if it does not * define some or all of DBL_DIG, DBL_MAX_10_EXP, DBL_MAX_EXP, * FLT_RADIX, FLT_ROUNDS, and DBL_MAX. * #define MALLOC your_malloc, where your_malloc(n) acts like malloc(n) * if memory is available and otherwise does something you deem * appropriate. If MALLOC is undefined, malloc will be invoked * directly -- and assumed always to succeed. Similarly, if you * want something other than the system's free() to be called to * recycle memory acquired from MALLOC, #define FREE to be the * name of the alternate routine. (FREE or free is only called in * pathological cases, e.g., in a dtoa call after a dtoa return in * mode 3 with thousands of digits requested.) * #define Omit_Private_Memory to omit logic (added Jan. 1998) for making * memory allocations from a private pool of memory when possible. * When used, the private pool is PRIVATE_MEM bytes long: 2304 bytes, * unless #defined to be a different length. This default length * suffices to get rid of MALLOC calls except for unusual cases, * such as decimal-to-binary conversion of a very long string of * digits. The longest string dtoa can return is about 751 bytes * long. For conversions by strtod of strings of 800 digits and * all dtoa conversions in single-threaded executions with 8-byte * pointers, PRIVATE_MEM >= 7400 appears to suffice; with 4-byte * pointers, PRIVATE_MEM >= 7112 appears adequate. * #define NO_INFNAN_CHECK if you do not wish to have INFNAN_CHECK * #defined automatically on IEEE systems. On such systems, * when INFNAN_CHECK is #defined, strtod checks * for Infinity and NaN (case insensitively). On some systems * (e.g., some HP systems), it may be necessary to #define NAN_WORD0 * appropriately -- to the most significant word of a quiet NaN. * (On HP Series 700/800 machines, -DNAN_WORD0=0x7ff40000 works.) * When INFNAN_CHECK is #defined and No_Hex_NaN is not #defined, * strtod also accepts (case insensitively) strings of the form * NaN(x), where x is a string of hexadecimal digits and spaces; * if there is only one string of hexadecimal digits, it is taken * for the 52 fraction bits of the resulting NaN; if there are two * or more strings of hex digits, the first is for the high 20 bits, * the second and subsequent for the low 32 bits, with intervening * white space ignored; but if this results in none of the 52 * fraction bits being on (an IEEE Infinity symbol), then NAN_WORD0 * and NAN_WORD1 are used instead. * #define MULTIPLE_THREADS if the system offers preemptively scheduled * multiple threads. In this case, you must provide (or suitably * #define) two locks, acquired by ACQUIRE_DTOA_LOCK(n) and freed * by FREE_DTOA_LOCK(n) for n = 0 or 1. (The second lock, accessed * in pow5mult, ensures lazy evaluation of only one copy of high * powers of 5; omitting this lock would introduce a small * probability of wasting memory, but would otherwise be harmless.) * You must also invoke freedtoa(s) to free the value s returned by * dtoa. You may do so whether or not MULTIPLE_THREADS is #defined. * #define NO_IEEE_Scale to disable new (Feb. 1997) logic in strtod that * avoids underflows on inputs whose result does not underflow. * If you #define NO_IEEE_Scale on a machine that uses IEEE-format * floating-point numbers and flushes underflows to zero rather * than implementing gradual underflow, then you must also #define * Sudden_Underflow. * #define USE_LOCALE to use the current locale's decimal_point value. * #define SET_INEXACT if IEEE arithmetic is being used and extra * computation should be done to set the inexact flag when the * result is inexact and avoid setting inexact when the result * is exact. In this case, dtoa.c must be compiled in * an environment, perhaps provided by #include "dtoa.c" in a * suitable wrapper, that defines two functions, * int get_inexact(void); * void clear_inexact(void); * such that get_inexact() returns a nonzero value if the * inexact bit is already set, and clear_inexact() sets the * inexact bit to 0. When SET_INEXACT is #defined, strtod * also does extra computations to set the underflow and overflow * flags when appropriate (i.e., when the result is tiny and * inexact or when it is a numeric value rounded to +-infinity). * #define NO_ERRNO if strtod should not assign errno = ERANGE when * the result overflows to +-Infinity or underflows to 0. * #define NO_HEX_FP to omit recognition of hexadecimal floating-point * values by strtod. * #define NO_STRTOD_BIGCOMP (on IEEE-arithmetic systems only for now) * to disable logic for "fast" testing of very long input strings * to strtod. This testing proceeds by initially truncating the * input string, then if necessary comparing the whole string with * a decimal expansion to decide close cases. This logic is only * used for input more than STRTOD_DIGLIM digits long (default 40). */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_SYS_PARAM_H #include #endif #include "realconv.h" #include "locking.h" // Try to determine the byte order to set either IEEE_8087 or IEEE_MC68k #ifdef __BYTE_ORDER #if __BYTE_ORDER == __LITTLE_ENDIAN #define IEEE_8087 // Little endian #elif __BYTE_ORDER == __BIG_ENDIAN #define IEEE_MC68k // Big endian #endif #endif #if !defined(IEEE_8087) && ! defined(IEEE_MC68k) #if defined(_WIN32) || defined(HOSTARCHITECTURE_X86) || defined (__i386__) || defined (_M_IX86) || \ defined (vax) || defined (__alpha) || defined(HOSTARCHITECTURE_X86_64) || \ defined(HOSTARCHITECTURE_X32) #define IEEE_8087 #else #define IEEE_MC68k #endif #endif #if (SIZEOF_LONG == 8) // If "long" is the same size as "double" we need to define this. #define Long int #define ULong unsigned #endif #ifndef HAVE_LONG_LONG #define NO_LONG_LONG #endif #ifndef Long #define Long long #endif #ifndef ULong typedef unsigned Long ULong; #endif #ifdef DEBUG #include "stdio.h" #define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);} #endif #include "stdlib.h" #include "string.h" #ifdef USE_LOCALE #include "locale.h" #endif #ifdef Honor_FLT_ROUNDS #ifndef Trust_FLT_ROUNDS #include #endif #endif #ifdef MALLOC #ifdef KR_headers extern char *MALLOC(); #else extern void *MALLOC(size_t); #endif #else #define MALLOC malloc #endif #ifndef Omit_Private_Memory #ifndef PRIVATE_MEM #define PRIVATE_MEM 2304 #endif #define PRIVATE_mem ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double)) static double private_mem[PRIVATE_mem], *pmem_next = private_mem; #endif #undef IEEE_Arith #undef Avoid_Underflow #ifdef IEEE_MC68k #define IEEE_Arith #endif #ifdef IEEE_8087 #define IEEE_Arith #endif #ifdef IEEE_Arith #ifndef NO_INFNAN_CHECK #undef INFNAN_CHECK #define INFNAN_CHECK #endif #else #undef INFNAN_CHECK #define NO_STRTOD_BIGCOMP #endif #include "errno.h" #ifdef Bad_float_h #ifdef IEEE_Arith #define DBL_DIG 15 #define DBL_MAX_10_EXP 308 #define DBL_MAX_EXP 1024 #define FLT_RADIX 2 #endif /*IEEE_Arith*/ #ifdef IBM #define DBL_DIG 16 #define DBL_MAX_10_EXP 75 #define DBL_MAX_EXP 63 #define FLT_RADIX 16 #define DBL_MAX 7.2370055773322621e+75 #endif #ifdef VAX #define DBL_DIG 16 #define DBL_MAX_10_EXP 38 #define DBL_MAX_EXP 127 #define FLT_RADIX 2 #define DBL_MAX 1.7014118346046923e+38 #endif #ifndef LONG_MAX #define LONG_MAX 2147483647 #endif #else /* ifndef Bad_float_h */ #include "float.h" #endif /* Bad_float_h */ #ifndef __MATH_H__ #include "math.h" #endif #ifdef __cplusplus extern "C" { #endif #ifndef CONST #ifdef KR_headers #define CONST /* blank */ #else #define CONST const #endif #endif #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined. #endif typedef union { double d; ULong L[2]; } U; #ifdef IEEE_8087 #define word0(x) (x)->L[1] #define word1(x) (x)->L[0] #else #define word0(x) (x)->L[0] #define word1(x) (x)->L[1] #endif #define dval(x) (x)->d #ifndef STRTOD_DIGLIM #define STRTOD_DIGLIM 40 #endif #ifdef DIGLIM_DEBUG extern int strtod_diglim; #else #define strtod_diglim STRTOD_DIGLIM #endif /* The following definition of Storeinc is appropriate for MIPS processors. * An alternative that might be better on some machines is * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff) */ #if defined(IEEE_8087) + defined(VAX) #define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \ ((unsigned short *)a)[0] = (unsigned short)c, a++) #else #define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \ ((unsigned short *)a)[1] = (unsigned short)c, a++) #endif /* #define P DBL_MANT_DIG */ /* Ten_pmax = floor(P*log(2)/log(5)) */ /* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */ /* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */ /* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */ #ifdef IEEE_Arith #define Exp_shift 20 #define Exp_shift1 20 #define Exp_msk1 0x100000 #define Exp_msk11 0x100000 #define Exp_mask 0x7ff00000 #define P 53 #define Nbits 53 #define Bias 1023 #define Emax 1023 #define Emin (-1022) #define Exp_1 0x3ff00000 #define Exp_11 0x3ff00000 #define Ebits 11 #define Frac_mask 0xfffff #define Frac_mask1 0xfffff #define Ten_pmax 22 #define Bletch 0x10 #define Bndry_mask 0xfffff #define Bndry_mask1 0xfffff #define LSB 1 #define Sign_bit 0x80000000 #define Log2P 1 #define Tiny0 0 #define Tiny1 1 #define Quick_max 14 #define Int_max 14 #ifndef NO_IEEE_Scale #define Avoid_Underflow #ifdef Flush_Denorm /* debugging option */ #undef Sudden_Underflow #endif #endif #ifndef Flt_Rounds #ifdef FLT_ROUNDS #define Flt_Rounds FLT_ROUNDS #else #define Flt_Rounds 1 #endif #endif /*Flt_Rounds*/ #ifdef Honor_FLT_ROUNDS #undef Check_FLT_ROUNDS #define Check_FLT_ROUNDS #else #define Rounding Flt_Rounds #endif #else /* ifndef IEEE_Arith */ #undef Check_FLT_ROUNDS #undef Honor_FLT_ROUNDS #undef SET_INEXACT #undef Sudden_Underflow #define Sudden_Underflow #ifdef IBM #undef Flt_Rounds #define Flt_Rounds 0 #define Exp_shift 24 #define Exp_shift1 24 #define Exp_msk1 0x1000000 #define Exp_msk11 0x1000000 #define Exp_mask 0x7f000000 #define P 14 #define Nbits 56 #define Bias 65 #define Emax 248 #define Emin (-260) #define Exp_1 0x41000000 #define Exp_11 0x41000000 #define Ebits 8 /* exponent has 7 bits, but 8 is the right value in b2d */ #define Frac_mask 0xffffff #define Frac_mask1 0xffffff #define Bletch 4 #define Ten_pmax 22 #define Bndry_mask 0xefffff #define Bndry_mask1 0xffffff #define LSB 1 #define Sign_bit 0x80000000 #define Log2P 4 #define Tiny0 0x100000 #define Tiny1 0 #define Quick_max 14 #define Int_max 15 #else /* VAX */ #undef Flt_Rounds #define Flt_Rounds 1 #define Exp_shift 23 #define Exp_shift1 7 #define Exp_msk1 0x80 #define Exp_msk11 0x800000 #define Exp_mask 0x7f80 #define P 56 #define Nbits 56 #define Bias 129 #define Emax 126 #define Emin (-129) #define Exp_1 0x40800000 #define Exp_11 0x4080 #define Ebits 8 #define Frac_mask 0x7fffff #define Frac_mask1 0xffff007f #define Ten_pmax 24 #define Bletch 2 #define Bndry_mask 0xffff007f #define Bndry_mask1 0xffff007f #define LSB 0x10000 #define Sign_bit 0x8000 #define Log2P 1 #define Tiny0 0x80 #define Tiny1 0 #define Quick_max 15 #define Int_max 15 #endif /* IBM, VAX */ #endif /* IEEE_Arith */ #ifndef IEEE_Arith #define ROUND_BIASED #else #ifdef ROUND_BIASED_without_Round_Up #undef ROUND_BIASED #define ROUND_BIASED #endif #endif #ifdef RND_PRODQUOT #define rounded_product(a,b) a = rnd_prod(a, b) #define rounded_quotient(a,b) a = rnd_quot(a, b) #ifdef KR_headers extern double rnd_prod(), rnd_quot(); #else extern double rnd_prod(double, double), rnd_quot(double, double); #endif #else #define rounded_product(a,b) a *= b #define rounded_quotient(a,b) a /= b #endif #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1)) #define Big1 0xffffffff #ifndef Pack_32 #define Pack_32 #endif typedef struct BCinfo BCinfo; struct BCinfo { int dp0, dp1, dplen, dsign, e0, inexact, nd, nd0, rounding, scale, uflchk; }; #ifdef KR_headers #define FFFFFFFF ((((unsigned long)0xffff)<<16)|(unsigned long)0xffff) #else #define FFFFFFFF 0xffffffffUL #endif #ifdef NO_LONG_LONG #undef ULLong #ifdef Just_16 #undef Pack_32 /* When Pack_32 is not defined, we store 16 bits per 32-bit Long. * This makes some inner loops simpler and sometimes saves work * during multiplications, but it often seems to make things slightly * slower. Hence the default is now to store 32 bits per Long. */ #endif #else /* long long available */ #ifndef Llong #define Llong long long #endif #ifndef ULLong #define ULLong unsigned Llong #endif #endif /* NO_LONG_LONG */ #define MULTIPLE_THREADS static PLock dtoaLocks[2]; #define ACQUIRE_DTOA_LOCK(n) { dtoaLocks[n].Lock(); } #define FREE_DTOA_LOCK(n) { dtoaLocks[n].Unlock(); } #ifndef MULTIPLE_THREADS #define ACQUIRE_DTOA_LOCK(n) /*nothing*/ #define FREE_DTOA_LOCK(n) /*nothing*/ #endif #define Kmax 7 #ifdef __cplusplus extern "C" double strtod(const char *s00, char **se); extern "C" char *dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve); #endif struct Bigint { struct Bigint *next; int k, maxwds, sign, wds; ULong x[1]; }; typedef struct Bigint Bigint; static Bigint *freelist[Kmax+1]; static Bigint * Balloc #ifdef KR_headers (k) int k; #else (int k) #endif { int x; Bigint *rv; #ifndef Omit_Private_Memory unsigned int len; #endif ACQUIRE_DTOA_LOCK(0); /* The k > Kmax case does not need ACQUIRE_DTOA_LOCK(0), */ /* but this case seems very unlikely. */ if (k <= Kmax && (rv = freelist[k])) freelist[k] = rv->next; else { x = 1 << k; #ifdef Omit_Private_Memory rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong)); #else len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1) /sizeof(double); if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) { rv = (Bigint*)pmem_next; pmem_next += len; } else rv = (Bigint*)MALLOC(len*sizeof(double)); #endif rv->k = k; rv->maxwds = x; } FREE_DTOA_LOCK(0); rv->sign = rv->wds = 0; return rv; } static void Bfree #ifdef KR_headers (v) Bigint *v; #else (Bigint *v) #endif { if (v) { if (v->k > Kmax) #ifdef FREE FREE((void*)v); #else free((void*)v); #endif else { ACQUIRE_DTOA_LOCK(0); v->next = freelist[v->k]; freelist[v->k] = v; FREE_DTOA_LOCK(0); } } } #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) static Bigint * multadd #ifdef KR_headers (b, m, a) Bigint *b; int m, a; #else (Bigint *b, int m, int a) /* multiply by m and add a */ #endif { int i, wds; #ifdef ULLong ULong *x; ULLong carry, y; #else ULong carry, *x, y; #ifdef Pack_32 ULong xi, z; #endif #endif Bigint *b1; wds = b->wds; x = b->x; i = 0; carry = a; do { #ifdef ULLong y = *x * (ULLong)m + carry; carry = y >> 32; *x++ = y & FFFFFFFF; #else #ifdef Pack_32 xi = *x; y = (xi & 0xffff) * m + carry; z = (xi >> 16) * m + (y >> 16); carry = z >> 16; *x++ = (z << 16) + (y & 0xffff); #else y = *x * m + carry; carry = y >> 16; *x++ = y & 0xffff; #endif #endif } while(++i < wds); if (carry) { if (wds >= b->maxwds) { b1 = Balloc(b->k+1); Bcopy(b1, b); Bfree(b); b = b1; } b->x[wds++] = carry; b->wds = wds; } return b; } #ifndef HAVE_STRTOD static Bigint * s2b #ifdef KR_headers (s, nd0, nd, y9, dplen) CONST char *s; int nd0, nd, dplen; ULong y9; #else (const char *s, int nd0, int nd, ULong y9, int dplen) #endif { Bigint *b; int i, k; Long x, y; x = (nd + 8) / 9; for(k = 0, y = 1; x > y; y <<= 1, k++) ; #ifdef Pack_32 b = Balloc(k); b->x[0] = y9; b->wds = 1; #else b = Balloc(k+1); b->x[0] = y9 & 0xffff; b->wds = (b->x[1] = y9 >> 16) ? 2 : 1; #endif i = 9; if (9 < nd0) { s += 9; do b = multadd(b, 10, *s++ - '0'); while(++i < nd0); s += dplen; } else s += dplen + 9; for(; i < nd; i++) b = multadd(b, 10, *s++ - '0'); return b; } #endif // HAVE_STRTOD static int hi0bits #ifdef KR_headers (x) ULong x; #else (ULong x) #endif { int k = 0; if (!(x & 0xffff0000)) { k = 16; x <<= 16; } if (!(x & 0xff000000)) { k += 8; x <<= 8; } if (!(x & 0xf0000000)) { k += 4; x <<= 4; } if (!(x & 0xc0000000)) { k += 2; x <<= 2; } if (!(x & 0x80000000)) { k++; if (!(x & 0x40000000)) return 32; } return k; } static int lo0bits #ifdef KR_headers (y) ULong *y; #else (ULong *y) #endif { int k; ULong x = *y; if (x & 7) { if (x & 1) return 0; if (x & 2) { *y = x >> 1; return 1; } *y = x >> 2; return 2; } k = 0; if (!(x & 0xffff)) { k = 16; x >>= 16; } if (!(x & 0xff)) { k += 8; x >>= 8; } if (!(x & 0xf)) { k += 4; x >>= 4; } if (!(x & 0x3)) { k += 2; x >>= 2; } if (!(x & 1)) { k++; x >>= 1; if (!x) return 32; } *y = x; return k; } static Bigint * i2b #ifdef KR_headers (i) int i; #else (int i) #endif { Bigint *b; b = Balloc(1); b->x[0] = i; b->wds = 1; return b; } static Bigint * mult #ifdef KR_headers (a, b) Bigint *a, *b; #else (Bigint *a, Bigint *b) #endif { Bigint *c; int k, wa, wb, wc; ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0; ULong y; #ifdef ULLong ULLong carry, z; #else ULong carry, z; #ifdef Pack_32 ULong z2; #endif #endif if (a->wds < b->wds) { c = a; a = b; b = c; } k = a->k; wa = a->wds; wb = b->wds; wc = wa + wb; if (wc > a->maxwds) k++; c = Balloc(k); for(x = c->x, xa = x + wc; x < xa; x++) *x = 0; xa = a->x; xae = xa + wa; xb = b->x; xbe = xb + wb; xc0 = c->x; #ifdef ULLong for(; xb < xbe; xc0++) { if ((y = *xb++)) { x = xa; xc = xc0; carry = 0; do { z = *x++ * (ULLong)y + *xc + carry; carry = z >> 32; *xc++ = z & FFFFFFFF; } while(x < xae); *xc = carry; } } #else #ifdef Pack_32 for(; xb < xbe; xb++, xc0++) { if (y = *xb & 0xffff) { x = xa; xc = xc0; carry = 0; do { z = (*x & 0xffff) * y + (*xc & 0xffff) + carry; carry = z >> 16; z2 = (*x++ >> 16) * y + (*xc >> 16) + carry; carry = z2 >> 16; Storeinc(xc, z2, z); } while(x < xae); *xc = carry; } if (y = *xb >> 16) { x = xa; xc = xc0; carry = 0; z2 = *xc; do { z = (*x & 0xffff) * y + (*xc >> 16) + carry; carry = z >> 16; Storeinc(xc, z, z2); z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry; carry = z2 >> 16; } while(x < xae); *xc = z2; } } #else for(; xb < xbe; xc0++) { if (y = *xb++) { x = xa; xc = xc0; carry = 0; do { z = *x++ * y + *xc + carry; carry = z >> 16; *xc++ = z & 0xffff; } while(x < xae); *xc = carry; } } #endif #endif for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ; c->wds = wc; return c; } static Bigint *p5s; static Bigint * pow5mult #ifdef KR_headers (b, k) Bigint *b; int k; #else (Bigint *b, int k) #endif { Bigint *b1, *p5, *p51; int i; static int p05[3] = { 5, 25, 125 }; if ((i = k & 3)) b = multadd(b, p05[i-1], 0); if (!(k >>= 2)) return b; if (!(p5 = p5s)) { /* first time */ #ifdef MULTIPLE_THREADS ACQUIRE_DTOA_LOCK(1); if (!(p5 = p5s)) { p5 = p5s = i2b(625); p5->next = 0; } FREE_DTOA_LOCK(1); #else p5 = p5s = i2b(625); p5->next = 0; #endif } for(;;) { if (k & 1) { b1 = mult(b, p5); Bfree(b); b = b1; } if (!(k >>= 1)) break; if (!(p51 = p5->next)) { #ifdef MULTIPLE_THREADS ACQUIRE_DTOA_LOCK(1); if (!(p51 = p5->next)) { p51 = p5->next = mult(p5,p5); p51->next = 0; } FREE_DTOA_LOCK(1); #else p51 = p5->next = mult(p5,p5); p51->next = 0; #endif } p5 = p51; } return b; } static Bigint * lshift #ifdef KR_headers (b, k) Bigint *b; int k; #else (Bigint *b, int k) #endif { int i, k1, n, n1; Bigint *b1; ULong *x, *x1, *xe, z; #ifdef Pack_32 n = k >> 5; #else n = k >> 4; #endif k1 = b->k; n1 = n + b->wds + 1; for(i = b->maxwds; n1 > i; i <<= 1) k1++; b1 = Balloc(k1); x1 = b1->x; for(i = 0; i < n; i++) *x1++ = 0; x = b->x; xe = x + b->wds; #ifdef Pack_32 if (k &= 0x1f) { k1 = 32 - k; z = 0; do { *x1++ = *x << k | z; z = *x++ >> k1; } while(x < xe); if ((*x1 = z)) ++n1; } #else if (k &= 0xf) { k1 = 16 - k; z = 0; do { *x1++ = *x << k & 0xffff | z; z = *x++ >> k1; } while(x < xe); if (*x1 = z) ++n1; } #endif else do *x1++ = *x++; while(x < xe); b1->wds = n1 - 1; Bfree(b); return b1; } static int cmp #ifdef KR_headers (a, b) Bigint *a, *b; #else (Bigint *a, Bigint *b) #endif { ULong *xa, *xa0, *xb, *xb0; int i, j; i = a->wds; j = b->wds; #ifdef DEBUG if (i > 1 && !a->x[i-1]) Bug("cmp called with a->x[a->wds-1] == 0"); if (j > 1 && !b->x[j-1]) Bug("cmp called with b->x[b->wds-1] == 0"); #endif if (i -= j) return i; xa0 = a->x; xa = xa0 + j; xb0 = b->x; xb = xb0 + j; for(;;) { if (*--xa != *--xb) return *xa < *xb ? -1 : 1; if (xa <= xa0) break; } return 0; } static Bigint * diff #ifdef KR_headers (a, b) Bigint *a, *b; #else (Bigint *a, Bigint *b) #endif { Bigint *c; int i, wa, wb; ULong *xa, *xae, *xb, *xbe, *xc; #ifdef ULLong ULLong borrow, y; #else ULong borrow, y; #ifdef Pack_32 ULong z; #endif #endif i = cmp(a,b); if (!i) { c = Balloc(0); c->wds = 1; c->x[0] = 0; return c; } if (i < 0) { c = a; a = b; b = c; i = 1; } else i = 0; c = Balloc(a->k); c->sign = i; wa = a->wds; xa = a->x; xae = xa + wa; wb = b->wds; xb = b->x; xbe = xb + wb; xc = c->x; borrow = 0; #ifdef ULLong do { y = (ULLong)*xa++ - *xb++ - borrow; borrow = y >> 32 & (ULong)1; *xc++ = y & FFFFFFFF; } while(xb < xbe); while(xa < xae) { y = *xa++ - borrow; borrow = y >> 32 & (ULong)1; *xc++ = y & FFFFFFFF; } #else #ifdef Pack_32 do { y = (*xa & 0xffff) - (*xb & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; z = (*xa++ >> 16) - (*xb++ >> 16) - borrow; borrow = (z & 0x10000) >> 16; Storeinc(xc, z, y); } while(xb < xbe); while(xa < xae) { y = (*xa & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; z = (*xa++ >> 16) - borrow; borrow = (z & 0x10000) >> 16; Storeinc(xc, z, y); } #else do { y = *xa++ - *xb++ - borrow; borrow = (y & 0x10000) >> 16; *xc++ = y & 0xffff; } while(xb < xbe); while(xa < xae) { y = *xa++ - borrow; borrow = (y & 0x10000) >> 16; *xc++ = y & 0xffff; } #endif #endif while(!*--xc) wa--; c->wds = wa; return c; } #ifndef HAVE_STRTOD static double ulp #ifdef KR_headers (x) U *x; #else (U *x) #endif { Long L; U u; L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1; #ifndef Avoid_Underflow #ifndef Sudden_Underflow if (L > 0) { #endif #endif #ifdef IBM L |= Exp_msk1 >> 4; #endif word0(&u) = L; word1(&u) = 0; #ifndef Avoid_Underflow #ifndef Sudden_Underflow } else { L = -L >> Exp_shift; if (L < Exp_shift) { word0(&u) = 0x80000 >> L; word1(&u) = 0; } else { word0(&u) = 0; L -= Exp_shift; word1(&u) = L >= 31 ? 1 : 1 << 31 - L; } } #endif #endif return dval(&u); } static double b2d #ifdef KR_headers (a, e) Bigint *a; int *e; #else (Bigint *a, int *e) #endif { ULong *xa, *xa0, w, y, z; int k; U d; #ifdef VAX ULong d0, d1; #else #define d0 word0(&d) #define d1 word1(&d) #endif xa0 = a->x; xa = xa0 + a->wds; y = *--xa; #ifdef DEBUG if (!y) Bug("zero y in b2d"); #endif k = hi0bits(y); *e = 32 - k; #ifdef Pack_32 if (k < Ebits) { d0 = Exp_1 | y >> (Ebits - k); w = xa > xa0 ? *--xa : 0; d1 = y << ((32-Ebits) + k) | w >> (Ebits - k); goto ret_d; } z = xa > xa0 ? *--xa : 0; if (k -= Ebits) { d0 = Exp_1 | y << k | z >> (32 - k); y = xa > xa0 ? *--xa : 0; d1 = z << k | y >> (32 - k); } else { d0 = Exp_1 | y; d1 = z; } #else if (k < Ebits + 16) { z = xa > xa0 ? *--xa : 0; d0 = Exp_1 | y << k - Ebits | z >> Ebits + 16 - k; w = xa > xa0 ? *--xa : 0; y = xa > xa0 ? *--xa : 0; d1 = z << k + 16 - Ebits | w << k - Ebits | y >> 16 + Ebits - k; goto ret_d; } z = xa > xa0 ? *--xa : 0; w = xa > xa0 ? *--xa : 0; k -= Ebits + 16; d0 = Exp_1 | y << k + 16 | z << k | w >> 16 - k; y = xa > xa0 ? *--xa : 0; d1 = w << k + 16 | y << k; #endif ret_d: #ifdef VAX word0(&d) = d0 >> 16 | d0 << 16; word1(&d) = d1 >> 16 | d1 << 16; #else #undef d0 #undef d1 #endif return dval(&d); } #endif // HAVE_STRTOD static Bigint * d2b #ifdef KR_headers (d, e, bits) U *d; int *e, *bits; #else (U *d, int *e, int *bits) #endif { Bigint *b; int de, k; ULong *x, y, z; #ifndef Sudden_Underflow int i; #endif #ifdef VAX ULong d0, d1; d0 = word0(d) >> 16 | word0(d) << 16; d1 = word1(d) >> 16 | word1(d) << 16; #else #define d0 word0(d) #define d1 word1(d) #endif #ifdef Pack_32 b = Balloc(1); #else b = Balloc(2); #endif x = b->x; z = d0 & Frac_mask; d0 &= 0x7fffffff; /* clear sign bit, which we ignore */ #ifdef Sudden_Underflow de = (int)(d0 >> Exp_shift); #ifndef IBM z |= Exp_msk11; #endif #else if ((de = (int)(d0 >> Exp_shift))) z |= Exp_msk1; #endif #ifdef Pack_32 if ((y = d1)) { if ((k = lo0bits(&y))) { x[0] = y | z << (32 - k); z >>= k; } else x[0] = y; #ifndef Sudden_Underflow i = #endif b->wds = (x[1] = z) ? 2 : 1; } else { k = lo0bits(&z); x[0] = z; #ifndef Sudden_Underflow i = #endif b->wds = 1; k += 32; } #else if (y = d1) { if (k = lo0bits(&y)) if (k >= 16) { x[0] = y | z << 32 - k & 0xffff; x[1] = z >> k - 16 & 0xffff; x[2] = z >> k; i = 2; } else { x[0] = y & 0xffff; x[1] = y >> 16 | z << 16 - k & 0xffff; x[2] = z >> k & 0xffff; x[3] = z >> k+16; i = 3; } else { x[0] = y & 0xffff; x[1] = y >> 16; x[2] = z & 0xffff; x[3] = z >> 16; i = 3; } } else { #ifdef DEBUG if (!z) Bug("Zero passed to d2b"); #endif k = lo0bits(&z); if (k >= 16) { x[0] = z; i = 0; } else { x[0] = z & 0xffff; x[1] = z >> 16; i = 1; } k += 32; } while(!x[i]) --i; b->wds = i + 1; #endif #ifndef Sudden_Underflow if (de) { #endif #ifdef IBM *e = (de - Bias - (P-1) << 2) + k; *bits = 4*P + 8 - k - hi0bits(word0(d) & Frac_mask); #else *e = de - Bias - (P-1) + k; *bits = P - k; #endif #ifndef Sudden_Underflow } else { *e = de - Bias - (P-1) + 1 + k; #ifdef Pack_32 *bits = 32*i - hi0bits(x[i-1]); #else *bits = (i+2)*16 - hi0bits(x[i]); #endif } #endif return b; } #undef d0 #undef d1 #ifndef HAVE_STRTOD static double ratio #ifdef KR_headers (a, b) Bigint *a, *b; #else (Bigint *a, Bigint *b) #endif { U da, db; int k, ka, kb; dval(&da) = b2d(a, &ka); dval(&db) = b2d(b, &kb); #ifdef Pack_32 k = ka - kb + 32*(a->wds - b->wds); #else k = ka - kb + 16*(a->wds - b->wds); #endif #ifdef IBM if (k > 0) { word0(&da) += (k >> 2)*Exp_msk1; if (k &= 3) dval(&da) *= 1 << k; } else { k = -k; word0(&db) += (k >> 2)*Exp_msk1; if (k &= 3) dval(&db) *= 1 << k; } #else if (k > 0) word0(&da) += k*Exp_msk1; else { k = -k; word0(&db) += k*Exp_msk1; } #endif return dval(&da) / dval(&db); } #endif // HAVE_STRTOD static CONST double tens[] = { 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22 #ifdef VAX , 1e23, 1e24 #endif }; static CONST double #ifdef IEEE_Arith bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 }; static CONST double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128, #ifdef Avoid_Underflow 9007199254740992.*9007199254740992.e-256 /* = 2^106 * 1e-256 */ #else 1e-256 #endif }; /* The factor of 2^53 in tinytens[4] helps us avoid setting the underflow */ /* flag unnecessarily. It leads to a song and dance at the end of strtod. */ #define Scale_Bit 0x10 #define n_bigtens 5 #else #ifdef IBM bigtens[] = { 1e16, 1e32, 1e64 }; static CONST double tinytens[] = { 1e-16, 1e-32, 1e-64 }; #define n_bigtens 3 #else bigtens[] = { 1e16, 1e32 }; static CONST double tinytens[] = { 1e-16, 1e-32 }; #define n_bigtens 2 #endif #endif #undef Need_Hexdig #ifdef INFNAN_CHECK #ifndef No_Hex_NaN #define Need_Hexdig #endif #endif #ifndef Need_Hexdig #ifndef NO_HEX_FP #define Need_Hexdig #endif #endif #ifdef Need_Hexdig /*{*/ #if 0 static unsigned char hexdig[256]; static void htinit(unsigned char *h, unsigned char *s, int inc) { int i, j; for(i = 0; (j = s[i]) !=0; i++) h[j] = i + inc; } static void hexdig_init(void) /* Use of hexdig_init omitted 20121220 to avoid a */ /* race condition when multiple threads are used. */ { #define USC (unsigned char *) htinit(hexdig, USC "0123456789", 0x10); htinit(hexdig, USC "abcdef", 0x10 + 10); htinit(hexdig, USC "ABCDEF", 0x10 + 10); } #else static unsigned char hexdig[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 16,17,18,19,20,21,22,23,24,25,0,0,0,0,0,0, 0,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; #endif #endif /* } Need_Hexdig */ #ifdef INFNAN_CHECK #ifndef NAN_WORD0 #define NAN_WORD0 0x7ff80000 #endif #ifndef NAN_WORD1 #define NAN_WORD1 0 #endif #ifndef HAVE_STRTOD static int match #ifdef KR_headers (sp, t) char **sp, *t; #else (const char **sp, const char *t) #endif { int c, d; CONST char *s = *sp; while((d = *t++)) { if ((c = *++s) >= 'A' && c <= 'Z') c += 'a' - 'A'; if (c != d) return 0; } *sp = s + 1; return 1; } #ifndef No_Hex_NaN static void hexnan #ifdef KR_headers (rvp, sp) U *rvp; CONST char **sp; #else (U *rvp, const char **sp) #endif { ULong c, x[2]; CONST char *s; int c1, havedig, udx0, xshift; /**** if (!hexdig['0']) hexdig_init(); ****/ x[0] = x[1] = 0; havedig = xshift = 0; udx0 = 1; s = *sp; /* allow optional initial 0x or 0X */ while((c = *(CONST unsigned char*)(s+1)) && c <= ' ') ++s; if (s[1] == '0' && (s[2] == 'x' || s[2] == 'X')) s += 2; while((c = *(CONST unsigned char*)++s)) { if ((c1 = hexdig[c])) c = c1 & 0xf; else if (c <= ' ') { if (udx0 && havedig) { udx0 = 0; xshift = 1; } continue; } #ifdef GDTOA_NON_PEDANTIC_NANCHECK else if (/*(*/ c == ')' && havedig) { *sp = s + 1; break; } else return; /* invalid form: don't change *sp */ #else else { do { if (/*(*/ c == ')') { *sp = s + 1; break; } } while((c = *++s)); break; } #endif havedig = 1; if (xshift) { xshift = 0; x[0] = x[1]; x[1] = 0; } if (udx0) x[0] = (x[0] << 4) | (x[1] >> 28); x[1] = (x[1] << 4) | c; } if ((x[0] &= 0xfffff) || x[1]) { word0(rvp) = Exp_mask | x[0]; word1(rvp) = x[1]; } } #endif /*No_Hex_NaN*/ #endif /* INFNAN_CHECK */ #endif // HAVE_STRTOD #ifdef Pack_32 #define ULbits 32 #define kshift 5 #define kmask 31 #else #define ULbits 16 #define kshift 4 #define kmask 15 #endif #if !defined(NO_HEX_FP) || defined(Honor_FLT_ROUNDS) /*{*/ static Bigint * #ifdef KR_headers increment(b) Bigint *b; #else increment(Bigint *b) #endif { ULong *x, *xe; Bigint *b1; x = b->x; xe = x + b->wds; do { if (*x < (ULong)0xffffffffL) { ++*x; return b; } *x++ = 0; } while(x < xe); { if (b->wds >= b->maxwds) { b1 = Balloc(b->k+1); Bcopy(b1,b); Bfree(b); b = b1; } b->x[b->wds++] = 1; } return b; } #endif /*}*/ #ifndef NO_HEX_FP /*{*/ static void #ifdef KR_headers rshift(b, k) Bigint *b; int k; #else rshift(Bigint *b, int k) #endif { ULong *x, *x1, *xe, y; int n; x = x1 = b->x; n = k >> kshift; if (n < b->wds) { xe = x + b->wds; x += n; if (k &= kmask) { n = 32 - k; y = *x++ >> k; while(x < xe) { *x1++ = (y | (*x << n)) & 0xffffffff; y = *x++ >> k; } if ((*x1 = y) !=0) x1++; } else while(x < xe) *x1++ = *x++; } if ((b->wds = x1 - b->x) == 0) b->x[0] = 0; } static ULong #ifdef KR_headers any_on(b, k) Bigint *b; int k; #else any_on(Bigint *b, int k) #endif { int n, nwds; ULong *x, *x0, x1, x2; x = b->x; nwds = b->wds; n = k >> kshift; if (n > nwds) n = nwds; else if (n < nwds && (k &= kmask)) { x1 = x2 = x[n]; x1 >>= k; x1 <<= k; if (x1 != x2) return 1; } x0 = x; x += n; while(x > x0) if (*--x) return 1; return 0; } enum { /* rounding values: same as FLT_ROUNDS */ Round_zero = 0, Round_near = 1, Round_up = 2, Round_down = 3 }; void #ifdef KR_headers gethex(sp, rvp, rounding, sign) CONST char **sp; U *rvp; int rounding, sign; #else gethex( CONST char **sp, U *rvp, int rounding, int sign) #endif { Bigint *b; CONST unsigned char *decpt, *s0, *s, *s1; Long e, e1; ULong L, lostbits, *x; int big, denorm, esign, havedig, k, n, nbits, up, zret; #ifdef IBM int j; #endif enum { #ifdef IEEE_Arith /*{{*/ emax = 0x7fe - Bias - P + 1, emin = Emin - P + 1 #else /*}{*/ emin = Emin - P, #ifdef VAX emax = 0x7ff - Bias - P + 1 #endif #ifdef IBM emax = 0x7f - Bias - P #endif #endif /*}}*/ }; #ifdef USE_LOCALE int i; #ifdef NO_LOCALE_CACHE const unsigned char *decimalpoint = (unsigned char*) localeconv()->decimal_point; #else const unsigned char *decimalpoint; static unsigned char *decimalpoint_cache; if (!(s0 = decimalpoint_cache)) { s0 = (unsigned char*)localeconv()->decimal_point; if ((decimalpoint_cache = (unsigned char*) MALLOC(strlen((CONST char*)s0) + 1))) { strcpy((char*)decimalpoint_cache, (CONST char*)s0); s0 = decimalpoint_cache; } } decimalpoint = s0; #endif #endif /**** if (!hexdig['0']) hexdig_init(); ****/ havedig = 0; s0 = *(CONST unsigned char **)sp + 2; while(s0[havedig] == '0') havedig++; s0 += havedig; s = s0; decpt = 0; zret = 0; e = 0; if (hexdig[*s]) havedig++; else { zret = 1; #ifdef USE_LOCALE for(i = 0; decimalpoint[i]; ++i) { if (s[i] != decimalpoint[i]) goto pcheck; } decpt = s += i; #else if (*s != '.') goto pcheck; decpt = ++s; #endif if (!hexdig[*s]) goto pcheck; while(*s == '0') s++; if (hexdig[*s]) zret = 0; havedig = 1; s0 = s; } while(hexdig[*s]) s++; #ifdef USE_LOCALE if (*s == *decimalpoint && !decpt) { for(i = 1; decimalpoint[i]; ++i) { if (s[i] != decimalpoint[i]) goto pcheck; } decpt = s += i; #else if (*s == '.' && !decpt) { decpt = ++s; #endif while(hexdig[*s]) s++; }/*}*/ if (decpt) e = -(((Long)(s-decpt)) << 2); pcheck: s1 = s; big = esign = 0; switch(*s) { case 'p': case 'P': switch(*++s) { case '-': esign = 1; /* no break */ case '+': s++; } if ((n = hexdig[*s]) == 0 || n > 0x19) { s = s1; break; } e1 = n - 0x10; while((n = hexdig[*++s]) !=0 && n <= 0x19) { if (e1 & 0xf8000000) big = 1; e1 = 10*e1 + n - 0x10; } if (esign) e1 = -e1; e += e1; } *sp = (char*)s; if (!havedig) *sp = (char*)s0 - 1; if (zret) goto retz1; if (big) { if (esign) { #ifdef IEEE_Arith switch(rounding) { case Round_up: if (sign) break; goto ret_tiny; case Round_down: if (!sign) break; goto ret_tiny; } #endif goto retz; #ifdef IEEE_Arith ret_tinyf: Bfree(b); ret_tiny: #ifndef NO_ERRNO errno = ERANGE; #endif word0(rvp) = 0; word1(rvp) = 1; return; #endif /* IEEE_Arith */ } switch(rounding) { case Round_near: goto ovfl1; case Round_up: if (!sign) goto ovfl1; goto ret_big; case Round_down: if (sign) goto ovfl1; goto ret_big; } ret_big: word0(rvp) = Big0; word1(rvp) = Big1; return; } n = s1 - s0 - 1; for(k = 0; n > (1 << (kshift-2)) - 1; n >>= 1) k++; b = Balloc(k); x = b->x; n = 0; L = 0; #ifdef USE_LOCALE for(i = 0; decimalpoint[i+1]; ++i); #endif while(s1 > s0) { #ifdef USE_LOCALE if (*--s1 == decimalpoint[i]) { s1 -= i; continue; } #else if (*--s1 == '.') continue; #endif if (n == ULbits) { *x++ = L; L = 0; n = 0; } L |= (hexdig[*s1] & 0x0f) << n; n += 4; } *x++ = L; b->wds = n = x - b->x; n = ULbits*n - hi0bits(L); nbits = Nbits; lostbits = 0; x = b->x; if (n > nbits) { n -= nbits; if (any_on(b,n)) { lostbits = 1; k = n - 1; if (x[k>>kshift] & 1 << (k & kmask)) { lostbits = 2; if (k > 0 && any_on(b,k)) lostbits = 3; } } rshift(b, n); e += n; } else if (n < nbits) { n = nbits - n; b = lshift(b, n); e -= n; x = b->x; } if (e > Emax) { ovfl: Bfree(b); ovfl1: #ifndef NO_ERRNO errno = ERANGE; #endif word0(rvp) = Exp_mask; word1(rvp) = 0; return; } denorm = 0; if (e < emin) { denorm = 1; n = emin - e; if (n >= nbits) { #ifdef IEEE_Arith /*{*/ switch (rounding) { case Round_near: if (n == nbits && (n < 2 || any_on(b,n-1))) goto ret_tinyf; break; case Round_up: if (!sign) goto ret_tinyf; break; case Round_down: if (sign) goto ret_tinyf; } #endif /* } IEEE_Arith */ Bfree(b); retz: #ifndef NO_ERRNO errno = ERANGE; #endif retz1: rvp->d = 0.; return; } k = n - 1; if (lostbits) lostbits = 1; else if (k > 0) lostbits = any_on(b,k); if (x[k>>kshift] & 1 << (k & kmask)) lostbits |= 2; nbits -= n; rshift(b,n); e = emin; } if (lostbits) { up = 0; switch(rounding) { case Round_zero: break; case Round_near: if (lostbits & 2 && (lostbits & 1) | (x[0] & 1)) up = 1; break; case Round_up: up = 1 - sign; break; case Round_down: up = sign; } if (up) { k = b->wds; b = increment(b); x = b->x; if (denorm) { #if 0 if (nbits == Nbits - 1 && x[nbits >> kshift] & 1 << (nbits & kmask)) denorm = 0; /* not currently used */ #endif } else if (b->wds > k || ((n = nbits & kmask) !=0 && hi0bits(x[k-1]) < 32-n)) { rshift(b,1); if (++e > Emax) goto ovfl; } } } #ifdef IEEE_Arith if (denorm) word0(rvp) = b->wds > 1 ? b->x[1] & ~0x100000 : 0; else word0(rvp) = (b->x[1] & ~0x100000) | ((e + 0x3ff + 52) << 20); word1(rvp) = b->x[0]; #endif #ifdef IBM if ((j = e & 3)) { k = b->x[0] & ((1 << j) - 1); rshift(b,j); if (k) { switch(rounding) { case Round_up: if (!sign) increment(b); break; case Round_down: if (sign) increment(b); break; case Round_near: j = 1 << (j-1); if (k & j && ((k & (j-1)) | lostbits)) increment(b); } } } e >>= 2; word0(rvp) = b->x[1] | ((e + 65 + 13) << 24); word1(rvp) = b->x[0]; #endif #ifdef VAX /* The next two lines ignore swap of low- and high-order 2 bytes. */ /* word0(rvp) = (b->x[1] & ~0x800000) | ((e + 129 + 55) << 23); */ /* word1(rvp) = b->x[0]; */ word0(rvp) = ((b->x[1] & ~0x800000) >> 16) | ((e + 129 + 55) << 7) | (b->x[1] << 16); word1(rvp) = (b->x[0] >> 16) | (b->x[0] << 16); #endif Bfree(b); } #endif /*!NO_HEX_FP}*/ static int #ifdef KR_headers dshift(b, p2) Bigint *b; int p2; #else dshift(Bigint *b, int p2) #endif { int rv = hi0bits(b->x[b->wds-1]) - 4; if (p2 > 0) rv -= p2; return rv & kmask; } static int quorem #ifdef KR_headers (b, S) Bigint *b, *S; #else (Bigint *b, Bigint *S) #endif { int n; ULong *bx, *bxe, q, *sx, *sxe; #ifdef ULLong ULLong borrow, carry, y, ys; #else ULong borrow, carry, y, ys; #ifdef Pack_32 ULong si, z, zs; #endif #endif n = S->wds; #ifdef DEBUG /*debug*/ if (b->wds > n) /*debug*/ Bug("oversize b in quorem"); #endif if (b->wds < n) return 0; sx = S->x; sxe = sx + --n; bx = b->x; bxe = bx + n; q = *bxe / (*sxe + 1); /* ensure q <= true quotient */ #ifdef DEBUG #ifdef NO_STRTOD_BIGCOMP /*debug*/ if (q > 9) #else /* An oversized q is possible when quorem is called from bigcomp and */ /* the input is near, e.g., twice the smallest denormalized number. */ /*debug*/ if (q > 15) #endif /*debug*/ Bug("oversized quotient in quorem"); #endif if (q) { borrow = 0; carry = 0; do { #ifdef ULLong ys = *sx++ * (ULLong)q + carry; carry = ys >> 32; y = *bx - (ys & FFFFFFFF) - borrow; borrow = y >> 32 & (ULong)1; *bx++ = y & FFFFFFFF; #else #ifdef Pack_32 si = *sx++; ys = (si & 0xffff) * q + carry; zs = (si >> 16) * q + (ys >> 16); carry = zs >> 16; y = (*bx & 0xffff) - (ys & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; z = (*bx >> 16) - (zs & 0xffff) - borrow; borrow = (z & 0x10000) >> 16; Storeinc(bx, z, y); #else ys = *sx++ * q + carry; carry = ys >> 16; y = *bx - (ys & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; *bx++ = y & 0xffff; #endif #endif } while(sx <= sxe); if (!*bxe) { bx = b->x; while(--bxe > bx && !*bxe) --n; b->wds = n; } } if (cmp(b, S) >= 0) { q++; borrow = 0; carry = 0; bx = b->x; sx = S->x; do { #ifdef ULLong ys = *sx++ + carry; carry = ys >> 32; y = *bx - (ys & FFFFFFFF) - borrow; borrow = y >> 32 & (ULong)1; *bx++ = y & FFFFFFFF; #else #ifdef Pack_32 si = *sx++; ys = (si & 0xffff) + carry; zs = (si >> 16) + (ys >> 16); carry = zs >> 16; y = (*bx & 0xffff) - (ys & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; z = (*bx >> 16) - (zs & 0xffff) - borrow; borrow = (z & 0x10000) >> 16; Storeinc(bx, z, y); #else ys = *sx++ + carry; carry = ys >> 16; y = *bx - (ys & 0xffff) - borrow; borrow = (y & 0x10000) >> 16; *bx++ = y & 0xffff; #endif #endif } while(sx <= sxe); bx = b->x; bxe = bx + n; if (!*bxe) { while(--bxe > bx && !*bxe) --n; b->wds = n; } } return q; } #ifndef HAVE_STRTOD #if defined(Avoid_Underflow) || !defined(NO_STRTOD_BIGCOMP) /*{*/ static double sulp #ifdef KR_headers (x, bc) U *x; BCinfo *bc; #else (U *x, BCinfo *bc) #endif { U u; double rv; int i; rv = ulp(x); if (!bc->scale || (i = 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift)) <= 0) return rv; /* Is there an example where i <= 0 ? */ word0(&u) = Exp_1 + (i << Exp_shift); word1(&u) = 0; return rv * u.d; } #endif /*}*/ #ifndef NO_STRTOD_BIGCOMP static void bigcomp #ifdef KR_headers (rv, s0, bc) U *rv; CONST char *s0; BCinfo *bc; #else (U *rv, const char *s0, BCinfo *bc) #endif { Bigint *b, *d; int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase; dsign = bc->dsign; nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0 - 1; speccase = 0; #ifndef Sudden_Underflow if (rv->d == 0.) { /* special case: value near underflow-to-zero */ /* threshold was rounded to zero */ b = i2b(1); p2 = Emin - P + 1; bbits = 1; #ifdef Avoid_Underflow word0(rv) = (P+2) << Exp_shift; #else word1(rv) = 1; #endif i = 0; #ifdef Honor_FLT_ROUNDS if (bc->rounding == 1) #endif { speccase = 1; --p2; dsign = 0; goto have_i; } } else #endif b = d2b(rv, &p2, &bbits); #ifdef Avoid_Underflow p2 -= bc->scale; #endif /* floor(log2(rv)) == bbits - 1 + p2 */ /* Check for denormal case. */ i = P - bbits; if (i > (j = P - Emin - 1 + p2)) { #ifdef Sudden_Underflow Bfree(b); b = i2b(1); p2 = Emin; i = P - 1; #ifdef Avoid_Underflow word0(rv) = (1 + bc->scale) << Exp_shift; #else word0(rv) = Exp_msk1; #endif word1(rv) = 0; #else i = j; #endif } #ifdef Honor_FLT_ROUNDS if (bc->rounding != 1) { if (i > 0) b = lshift(b, i); if (dsign) b = increment(b); } else #endif { b = lshift(b, ++i); b->x[0] |= 1; } #ifndef Sudden_Underflow have_i: #endif p2 -= p5 + i; d = i2b(1); /* Arrange for convenient computation of quotients: * shift left if necessary so divisor has 4 leading 0 bits. */ if (p5 > 0) d = pow5mult(d, p5); else if (p5 < 0) b = pow5mult(b, -p5); if (p2 > 0) { b2 = p2; d2 = 0; } else { b2 = 0; d2 = -p2; } i = dshift(d, d2); if ((b2 += i) > 0) b = lshift(b, b2); if ((d2 += i) > 0) d = lshift(d, d2); /* Now b/d = exactly half-way between the two floating-point values */ /* on either side of the input string. Compute first digit of b/d. */ if (!(dig = quorem(b,d))) { b = multadd(b, 10, 0); /* very unlikely */ dig = quorem(b,d); } /* Compare b/d with s0 */ for(i = 0; i < nd0; ) { if ((dd = s0[i++] - '0' - dig)) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) dd = 1; goto ret; } b = multadd(b, 10, 0); dig = quorem(b,d); } for(j = bc->dp1; i++ < nd;) { if ((dd = s0[j++] - '0' - dig)) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) dd = 1; goto ret; } b = multadd(b, 10, 0); dig = quorem(b,d); } if (dig > 0 || b->x[0] || b->wds > 1) dd = -1; ret: Bfree(b); Bfree(d); #ifdef Honor_FLT_ROUNDS if (bc->rounding != 1) { if (dd < 0) { if (bc->rounding == 0) { if (!dsign) goto retlow1; } else if (dsign) goto rethi1; } else if (dd > 0) { if (bc->rounding == 0) { if (dsign) goto rethi1; goto ret1; } if (!dsign) goto rethi1; dval(rv) += 2.*sulp(rv,bc); } else { bc->inexact = 0; if (dsign) goto rethi1; } } else #endif if (speccase) { if (dd <= 0) rv->d = 0.; } else if (dd < 0) { if (!dsign) /* does not happen for round-near */ retlow1: dval(rv) -= sulp(rv,bc); } else if (dd > 0) { if (dsign) { rethi1: dval(rv) += sulp(rv,bc); } } else { /* Exact half-way case: apply round-even rule. */ if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) { i = 1 - j; if (i <= 31) { if (word1(rv) & (0x1 << i)) goto odd; } else if (word0(rv) & (0x1 << (i-32))) goto odd; } else if (word1(rv) & 1) { odd: if (dsign) goto rethi1; goto retlow1; } } #ifdef Honor_FLT_ROUNDS ret1: #endif return; } #endif /* NO_STRTOD_BIGCOMP */ double poly_strtod #ifdef KR_headers (s00, se) CONST char *s00; char **se; #else (const char *s00, char **se) #endif { int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1; int esign, i, j, k, nd, nd0, nf, nz, nz0, nz1, sign; CONST char *s, *s0, *s1; double aadj, aadj1; Long L; U aadj2, adj, rv, rv0; ULong y, z; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; #ifdef Avoid_Underflow ULong Lsb, Lsb1; #endif #ifdef SET_INEXACT int oldinexact; #endif #ifndef NO_STRTOD_BIGCOMP int req_bigcomp = 0; #endif #ifdef Honor_FLT_ROUNDS /*{*/ #ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */ bc.rounding = Flt_Rounds; #else /*}{*/ bc.rounding = 1; switch(fegetround()) { case FE_TOWARDZERO: bc.rounding = 0; break; case FE_UPWARD: bc.rounding = 2; break; case FE_DOWNWARD: bc.rounding = 3; } #endif /*}}*/ #endif /*}*/ #ifdef USE_LOCALE CONST char *s2; #endif sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': sign = 1; /* no break */ case '+': if (*++s) goto break2; /* no break */ case 0: goto ret0; case '\t': case '\n': case '\v': case '\f': case '\r': case ' ': continue; default: goto break2; } break2: if (*s == '0') { #ifndef NO_HEX_FP /*{*/ switch(s[1]) { case 'x': case 'X': #ifdef Honor_FLT_ROUNDS gethex(&s, &rv, bc.rounding, sign); #else gethex(&s, &rv, 1, sign); #endif goto ret; } #endif /*}*/ nz0 = 1; while(*++s == '0') ; if (!*s) goto ret; } s0 = s; y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) if (nd < 9) y = 10*y + c - '0'; else if (nd < DBL_DIG + 2) z = 10*z + c - '0'; nd0 = nd; bc.dp0 = bc.dp1 = s - s0; for(s1 = s; s1 > s0 && *--s1 == '0'; ) ++nz1; #ifdef USE_LOCALE s1 = localeconv()->decimal_point; if (c == *s1) { c = '.'; if (*++s1) { s2 = s; for(;;) { if (*++s2 != *s1) { c = 0; break; } if (!*++s1) { s = s2; break; } } } } #endif if (c == '.') { c = *++s; bc.dp1 = s - s0; bc.dplen = bc.dp1 - bc.dp0; if (!nd) { for(; c == '0'; c = *++s) nz++; if (c > '0' && c <= '9') { bc.dp0 = s0 - s; bc.dp1 = bc.dp0 + bc.dplen; s0 = s; nf += nz; nz = 0; goto have_dig; } goto dig_done; } for(; c >= '0' && c <= '9'; c = *++s) { have_dig: nz++; if (c -= '0') { nf += nz; for(i = 1; i < nz; i++) if (nd++ < 9) y *= 10; else if (nd <= DBL_DIG + 2) z *= 10; if (nd++ < 9) y = 10*y + c; else if (nd <= DBL_DIG + 2) z = 10*z + c; nz = nz1 = 0; } } } dig_done: e = 0; if (c == 'e' || c == 'E') { if (!nd && !nz && !nz0) { goto ret0; } s00 = s; esign = 0; switch(c = *++s) { case '-': esign = 1; case '+': c = *++s; } if (c >= '0' && c <= '9') { while(c == '0') c = *++s; if (c > '0' && c <= '9') { L = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; if (s - s1 > 8 || L > 19999) /* Avoid confusion from exponents * so large that e might overflow. */ e = 19999; /* safe for 16 bit ints */ else e = (int)L; if (esign) e = -e; } else e = 0; } else s = s00; } if (!nd) { if (!nz && !nz0) { #ifdef INFNAN_CHECK /* Check for Nan and Infinity */ if (!bc.dplen) switch(c) { case 'i': case 'I': if (match(&s,"nf")) { --s; if (!match(&s,"inity")) ++s; word0(&rv) = 0x7ff00000; word1(&rv) = 0; goto ret; } break; case 'n': case 'N': if (match(&s, "an")) { word0(&rv) = NAN_WORD0; word1(&rv) = NAN_WORD1; #ifndef No_Hex_NaN if (*s == '(') /*)*/ hexnan(&rv, &s); #endif goto ret; } } #endif /* INFNAN_CHECK */ ret0: s = s00; sign = 0; } goto ret; } bc.e0 = e1 = e -= nf; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ if (!nd0) nd0 = nd; k = nd < DBL_DIG + 2 ? nd : DBL_DIG + 2; dval(&rv) = y; if (k > 9) { #ifdef SET_INEXACT if (k > DBL_DIG) oldinexact = get_inexact(); #endif dval(&rv) = tens[k - 9] * dval(&rv) + z; } bd0 = 0; if (nd <= DBL_DIG #ifndef RND_PRODQUOT #ifndef Honor_FLT_ROUNDS && Flt_Rounds == 1 #endif #endif ) { if (!e) goto ret; #ifndef ROUND_BIASED_without_Round_Up if (e > 0) { if (e <= Ten_pmax) { #ifdef VAX goto vax_ovfl_check; #else #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { rv.d = -rv.d; sign = 0; } #endif /* rv = */ rounded_product(dval(&rv), tens[e]); goto ret; #endif } i = DBL_DIG - nd; if (e <= Ten_pmax + i) { /* A fancier test would sometimes let us do * this for larger i values. */ #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { rv.d = -rv.d; sign = 0; } #endif e -= i; dval(&rv) *= tens[i]; #ifdef VAX /* VAX exponent range is so narrow we must * worry about overflow here... */ vax_ovfl_check: word0(&rv) -= P*Exp_msk1; /* rv = */ rounded_product(dval(&rv), tens[e]); if ((word0(&rv) & Exp_mask) > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) goto ovfl; word0(&rv) += P*Exp_msk1; #else /* rv = */ rounded_product(dval(&rv), tens[e]); #endif goto ret; } } #ifndef Inaccurate_Divide else if (e >= -Ten_pmax) { #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { rv.d = -rv.d; sign = 0; } #endif /* rv = */ rounded_quotient(dval(&rv), tens[-e]); goto ret; } #endif #endif /* ROUND_BIASED_without_Round_Up */ } e1 += nd - k; #ifdef IEEE_Arith #ifdef SET_INEXACT bc.inexact = 1; if (k <= DBL_DIG) oldinexact = get_inexact(); #endif #ifdef Avoid_Underflow bc.scale = 0; #endif #ifdef Honor_FLT_ROUNDS if (bc.rounding >= 2) { if (sign) bc.rounding = bc.rounding == 2 ? 0 : 2; else if (bc.rounding != 2) bc.rounding = 0; } #endif #endif /*IEEE_Arith*/ /* Get starting approximation = rv * 10**e1 */ if (e1 > 0) { if ((i = e1 & 15)) dval(&rv) *= tens[i]; if (e1 &= ~15) { if (e1 > DBL_MAX_10_EXP) { ovfl: /* Can't trust HUGE_VAL */ #ifdef IEEE_Arith #ifdef Honor_FLT_ROUNDS switch(bc.rounding) { case 0: /* toward 0 */ case 3: /* toward -infinity */ word0(&rv) = Big0; word1(&rv) = Big1; break; default: word0(&rv) = Exp_mask; word1(&rv) = 0; } #else /*Honor_FLT_ROUNDS*/ word0(&rv) = Exp_mask; word1(&rv) = 0; #endif /*Honor_FLT_ROUNDS*/ #ifdef SET_INEXACT /* set overflow bit */ dval(&rv0) = 1e300; dval(&rv0) *= dval(&rv0); #endif #else /*IEEE_Arith*/ word0(&rv) = Big0; word1(&rv) = Big1; #endif /*IEEE_Arith*/ range_err: if (bd0) { Bfree(bb); Bfree(bd); Bfree(bs); Bfree(bd0); Bfree(delta); } #ifndef NO_ERRNO errno = ERANGE; #endif goto ret; } e1 >>= 4; for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) dval(&rv) *= bigtens[j]; /* The last multiplication could overflow. */ word0(&rv) -= P*Exp_msk1; dval(&rv) *= bigtens[j]; if ((z = word0(&rv) & Exp_mask) > Exp_msk1*(DBL_MAX_EXP+Bias-P)) goto ovfl; if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) { /* set to largest number */ /* (Can't trust DBL_MAX) */ word0(&rv) = Big0; word1(&rv) = Big1; } else word0(&rv) += P*Exp_msk1; } } else if (e1 < 0) { e1 = -e1; if ((i = e1 & 15)) dval(&rv) /= tens[i]; if (e1 >>= 4) { if (e1 >= 1 << n_bigtens) goto undfl; #ifdef Avoid_Underflow if (e1 & Scale_Bit) bc.scale = 2*P; for(j = 0; e1 > 0; j++, e1 >>= 1) if (e1 & 1) dval(&rv) *= tinytens[j]; if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask) >> Exp_shift)) > 0) { /* scaled rv is denormal; clear j low bits */ if (j >= 32) { if (j > 54) goto undfl; word1(&rv) = 0; if (j >= 53) word0(&rv) = (P+2)*Exp_msk1; else word0(&rv) &= 0xffffffff << (j-32); } else word1(&rv) &= 0xffffffff << j; } #else for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) dval(&rv) *= tinytens[j]; /* The last multiplication could underflow. */ dval(&rv0) = dval(&rv); dval(&rv) *= tinytens[j]; if (!dval(&rv)) { dval(&rv) = 2.*dval(&rv0); dval(&rv) *= tinytens[j]; #endif if (!dval(&rv)) { undfl: dval(&rv) = 0.; goto range_err; } #ifndef Avoid_Underflow word0(&rv) = Tiny0; word1(&rv) = Tiny1; /* The refinement below will clean * this approximation up. */ } #endif } } /* Now the hard part -- adjusting rv to the correct value.*/ /* Put digits into bd: true value = bd * 10^e */ bc.nd = nd - nz1; #ifndef NO_STRTOD_BIGCOMP bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ /* to silence an erroneous warning about bc.nd0 */ /* possibly not being initialized. */ if (nd > strtod_diglim) { /* ASSERT(strtod_diglim >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ i = j = 18; if (i > nd0) j += bc.dplen; for(;;) { if (--j < bc.dp1 && j >= bc.dp0) j = bc.dp0 - 1; if (s0[j] != '0') break; --i; } e += nd - i; nd = i; if (nd0 > nd) nd0 = nd; if (nd < 9) { /* must recompute y */ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; for(j = bc.dp1; i < nd; ++i) y = 10*y + s0[j++] - '0'; } } #endif bd0 = s2b(s0, nd0, nd, y, bc.dplen); for(;;) { bd = Balloc(bd0->k); Bcopy(bd, bd0); bb = d2b(&rv, &bbe, &bbbits); /* rv = bb * 2^bbe */ bs = i2b(1); if (e >= 0) { bb2 = bb5 = 0; bd2 = bd5 = e; } else { bb2 = bb5 = -e; bd2 = bd5 = 0; } if (bbe >= 0) bb2 += bbe; else bd2 -= bbe; bs2 = bb2; #ifdef Honor_FLT_ROUNDS if (bc.rounding != 1) bs2++; #endif #ifdef Avoid_Underflow Lsb = LSB; Lsb1 = 0; j = bbe - bc.scale; i = j + bbbits - 1; /* logb(rv) */ j = P + 1 - bbbits; if (i < Emin) { /* denormal */ i = Emin - i; j -= i; if (i < 32) Lsb <<= i; else if (i < 52) Lsb1 = Lsb << (i-32); else Lsb1 = Exp_mask; } #else /*Avoid_Underflow*/ #ifdef Sudden_Underflow #ifdef IBM j = 1 + 4*P - 3 - bbbits + ((bbe + bbbits - 1) & 3); #else j = P + 1 - bbbits; #endif #else /*Sudden_Underflow*/ j = bbe; i = j + bbbits - 1; /* logb(rv) */ if (i < Emin) /* denormal */ j += P - Emin; else j = P + 1 - bbbits; #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ bb2 += j; bd2 += j; #ifdef Avoid_Underflow bd2 += bc.scale; #endif i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; if (i > 0) { bb2 -= i; bd2 -= i; bs2 -= i; } if (bb5 > 0) { bs = pow5mult(bs, bb5); bb1 = mult(bs, bb); Bfree(bb); bb = bb1; } if (bb2 > 0) bb = lshift(bb, bb2); if (bd5 > 0) bd = pow5mult(bd, bd5); if (bd2 > 0) bd = lshift(bd, bd2); if (bs2 > 0) bs = lshift(bs, bs2); delta = diff(bb, bd); bc.dsign = delta->sign; delta->sign = 0; i = cmp(delta, bs); #ifndef NO_STRTOD_BIGCOMP /*{*/ if (bc.nd > nd && i <= 0) { if (bc.dsign) { /* Must use bigcomp(). */ req_bigcomp = 1; break; } #ifdef Honor_FLT_ROUNDS if (bc.rounding != 1) { if (i < 0) { req_bigcomp = 1; break; } } else #endif i = -1; /* Discarded digits make delta smaller. */ } #endif /*}*/ #ifdef Honor_FLT_ROUNDS /*{*/ if (bc.rounding != 1) { if (i < 0) { /* Error is less than an ulp */ if (!delta->x[0] && delta->wds <= 1) { /* exact */ #ifdef SET_INEXACT bc.inexact = 0; #endif break; } if (bc.rounding) { if (bc.dsign) { adj.d = 1.; goto apply_adj; } } else if (!bc.dsign) { adj.d = -1.; if (!word1(&rv) && !(word0(&rv) & Frac_mask)) { y = word0(&rv) & Exp_mask; #ifdef Avoid_Underflow if (!bc.scale || y > 2*P*Exp_msk1) #else if (y) #endif { delta = lshift(delta,Log2P); if (cmp(delta, bs) <= 0) adj.d = -0.5; } } apply_adj: #ifdef Avoid_Underflow /*{*/ if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) word0(&adj) += (2*P+1)*Exp_msk1 - y; #else #ifdef Sudden_Underflow if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) { word0(&rv) += P*Exp_msk1; dval(&rv) += adj.d*ulp(dval(&rv)); word0(&rv) -= P*Exp_msk1; } else #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow}*/ dval(&rv) += adj.d*ulp(&rv); } break; } adj.d = ratio(delta, bs); if (adj.d < 1.) adj.d = 1.; if (adj.d <= 0x7ffffffe) { /* adj = rounding ? ceil(adj) : floor(adj); */ y = adj.d; if (y != adj.d) { if (!((bc.rounding>>1) ^ bc.dsign)) y++; adj.d = y; } } #ifdef Avoid_Underflow /*{*/ if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) word0(&adj) += (2*P+1)*Exp_msk1 - y; #else #ifdef Sudden_Underflow if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) { word0(&rv) += P*Exp_msk1; adj.d *= ulp(dval(&rv)); if (bc.dsign) dval(&rv) += adj.d; else dval(&rv) -= adj.d; word0(&rv) -= P*Exp_msk1; goto cont; } #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow}*/ adj.d *= ulp(&rv); if (bc.dsign) { if (word0(&rv) == Big0 && word1(&rv) == Big1) goto ovfl; dval(&rv) += adj.d; } else dval(&rv) -= adj.d; goto cont; } #endif /*}Honor_FLT_ROUNDS*/ if (i < 0) { /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask #ifdef IEEE_Arith /*{*/ #ifdef Avoid_Underflow || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1 #else || (word0(&rv) & Exp_mask) <= Exp_msk1 #endif #endif /*}*/ ) { #ifdef SET_INEXACT if (!delta->x[0] && delta->wds <= 1) bc.inexact = 0; #endif break; } if (!delta->x[0] && delta->wds <= 1) { /* exact result */ #ifdef SET_INEXACT bc.inexact = 0; #endif break; } delta = lshift(delta,Log2P); if (cmp(delta, bs) > 0) goto drop_down; break; } if (i == 0) { /* exactly half-way between */ if (bc.dsign) { if ((word0(&rv) & Bndry_mask1) == Bndry_mask1 && word1(&rv) == ( #ifdef Avoid_Underflow (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) ? (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) : #endif 0xffffffff)) { /*boundary case -- increment exponent*/ if (word0(&rv) == Big0 && word1(&rv) == Big1) goto ovfl; word0(&rv) = (word0(&rv) & Exp_mask) + Exp_msk1 #ifdef IBM | Exp_msk1 >> 4 #endif ; word1(&rv) = 0; #ifdef Avoid_Underflow bc.dsign = 0; #endif break; } } else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) { drop_down: /* boundary case -- decrement exponent */ #ifdef Sudden_Underflow /*{{*/ L = word0(&rv) & Exp_mask; #ifdef IBM if (L < Exp_msk1) #else #ifdef Avoid_Underflow if (L <= (bc.scale ? (2*P+1)*Exp_msk1 : Exp_msk1)) #else if (L <= Exp_msk1) #endif /*Avoid_Underflow*/ #endif /*IBM*/ { if (bc.nd >nd) { bc.uflchk = 1; break; } goto undfl; } L -= Exp_msk1; #else /*Sudden_Underflow}{*/ #ifdef Avoid_Underflow if (bc.scale) { L = word0(&rv) & Exp_mask; if (L <= (2*P+1)*Exp_msk1) { if (L > (P+2)*Exp_msk1) /* round even ==> */ /* accept rv */ break; /* rv = smallest denormal */ if (bc.nd >nd) { bc.uflchk = 1; break; } goto undfl; } } #endif /*Avoid_Underflow*/ L = (word0(&rv) & Exp_mask) - Exp_msk1; #endif /*Sudden_Underflow}}*/ word0(&rv) = L | Bndry_mask1; word1(&rv) = 0xffffffff; #ifdef IBM goto cont; #else #ifndef NO_STRTOD_BIGCOMP if (bc.nd > nd) goto cont; #endif break; #endif } #ifndef ROUND_BIASED #ifdef Avoid_Underflow if (Lsb1) { if (!(word0(&rv) & Lsb1)) break; } else if (!(word1(&rv) & Lsb)) break; #else if (!(word1(&rv) & LSB)) break; #endif #endif if (bc.dsign) #ifdef Avoid_Underflow dval(&rv) += sulp(&rv, &bc); #else dval(&rv) += ulp(&rv); #endif #ifndef ROUND_BIASED else { #ifdef Avoid_Underflow dval(&rv) -= sulp(&rv, &bc); #else dval(&rv) -= ulp(&rv); #endif #ifndef Sudden_Underflow if (!dval(&rv)) { if (bc.nd >nd) { bc.uflchk = 1; break; } goto undfl; } #endif } #ifdef Avoid_Underflow bc.dsign = 1 - bc.dsign; #endif #endif break; } if ((aadj = ratio(delta, bs)) <= 2.) { if (bc.dsign) aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { #ifndef Sudden_Underflow if (word1(&rv) == Tiny1 && !word0(&rv)) { if (bc.nd >nd) { bc.uflchk = 1; break; } goto undfl; } #endif aadj = 1.; aadj1 = -1.; } else { /* special case -- power of FLT_RADIX to be */ /* rounded down... */ if (aadj < 2./FLT_RADIX) aadj = 1./FLT_RADIX; else aadj *= 0.5; aadj1 = -aadj; } } else { aadj *= 0.5; aadj1 = bc.dsign ? aadj : -aadj; #ifdef Check_FLT_ROUNDS switch(bc.rounding) { case 2: /* towards +infinity */ aadj1 -= 0.5; break; case 0: /* towards 0 */ case 3: /* towards -infinity */ aadj1 += 0.5; } #else if (Flt_Rounds == 0) aadj1 += 0.5; #endif /*Check_FLT_ROUNDS*/ } y = word0(&rv) & Exp_mask; /* Check for overflow */ if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) { dval(&rv0) = dval(&rv); word0(&rv) -= P*Exp_msk1; adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; if ((word0(&rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { if (word0(&rv0) == Big0 && word1(&rv0) == Big1) goto ovfl; word0(&rv) = Big0; word1(&rv) = Big1; goto cont; } else word0(&rv) += P*Exp_msk1; } else { #ifdef Avoid_Underflow if (bc.scale && y <= 2*P*Exp_msk1) { if (aadj <= 0x7fffffff) { if ((z = aadj) <= 0) z = 1; aadj = z; aadj1 = bc.dsign ? aadj : -aadj; } dval(&aadj2) = aadj1; word0(&aadj2) += (2*P+1)*Exp_msk1 - y; aadj1 = dval(&aadj2); adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; if (rv.d == 0.) #ifdef NO_STRTOD_BIGCOMP goto undfl; #else { req_bigcomp = 1; break; } #endif } else { adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; } #else #ifdef Sudden_Underflow if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) { dval(&rv0) = dval(&rv); word0(&rv) += P*Exp_msk1; adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; #ifdef IBM if ((word0(&rv) & Exp_mask) < P*Exp_msk1) #else if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) #endif { if (word0(&rv0) == Tiny0 && word1(&rv0) == Tiny1) { if (bc.nd >nd) { bc.uflchk = 1; break; } goto undfl; } word0(&rv) = Tiny0; word1(&rv) = Tiny1; goto cont; } else word0(&rv) -= P*Exp_msk1; } else { adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; } #else /*Sudden_Underflow*/ /* Compute adj so that the IEEE rounding rules will * correctly round rv + adj in some half-way cases. * If rv * ulp(rv) is denormalized (i.e., * y <= (P-1)*Exp_msk1), we must adjust aadj to avoid * trouble from bits lost to denormalization; * example: 1.2e-307 . */ if (y <= (P-1)*Exp_msk1 && aadj > 1.) { aadj1 = (double)(int)(aadj + 0.5); if (!bc.dsign) aadj1 = -aadj1; } adj.d = aadj1 * ulp(&rv); dval(&rv) += adj.d; #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ } z = word0(&rv) & Exp_mask; #ifndef SET_INEXACT if (bc.nd == nd) { #ifdef Avoid_Underflow if (!bc.scale) #endif if (y == z) { /* Can we stop now? */ L = (Long)aadj; aadj -= L; /* The tolerances below are conservative. */ if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) { if (aadj < .4999999 || aadj > .5000001) break; } else if (aadj < .4999999/FLT_RADIX) break; } } #endif cont: Bfree(bb); Bfree(bd); Bfree(bs); Bfree(delta); } Bfree(bb); Bfree(bd); Bfree(bs); Bfree(bd0); Bfree(delta); #ifndef NO_STRTOD_BIGCOMP if (req_bigcomp) { bd0 = 0; bc.e0 += nz1; bigcomp(&rv, s0, &bc); y = word0(&rv) & Exp_mask; if (y == Exp_mask) goto ovfl; if (y == 0 && rv.d == 0.) goto undfl; } #endif #ifdef SET_INEXACT if (bc.inexact) { if (!oldinexact) { word0(&rv0) = Exp_1 + (70 << Exp_shift); word1(&rv0) = 0; dval(&rv0) += 1.; } } else if (!oldinexact) clear_inexact(); #endif #ifdef Avoid_Underflow if (bc.scale) { word0(&rv0) = Exp_1 - 2*P*Exp_msk1; word1(&rv0) = 0; dval(&rv) *= dval(&rv0); #ifndef NO_ERRNO /* try to avoid the bug of testing an 8087 register value */ #ifdef IEEE_Arith if (!(word0(&rv) & Exp_mask)) #else if (word0(&rv) == 0 && word1(&rv) == 0) #endif errno = ERANGE; #endif } #endif /* Avoid_Underflow */ #ifdef SET_INEXACT if (bc.inexact && !(word0(&rv) & Exp_mask)) { /* set underflow bit */ dval(&rv0) = 1e-300; dval(&rv0) *= dval(&rv0); } #endif ret: if (se) *se = (char *)s; return sign ? -dval(&rv) : dval(&rv); } #endif // HAVE_STRTOD #ifndef MULTIPLE_THREADS static char *dtoa_result; #endif static char * #ifdef KR_headers rv_alloc(i) int i; #else rv_alloc(int i) #endif { int j, k, *r; j = sizeof(ULong); for(k = 0; sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= i; j <<= 1) k++; r = (int*)Balloc(k); *r = k; return #ifndef MULTIPLE_THREADS dtoa_result = #endif (char *)(r+1); } static char * #ifdef KR_headers nrv_alloc(s, rve, n) char *s, **rve; int n; #else nrv_alloc(const char *s, char **rve, int n) #endif { char *rv, *t; t = rv = rv_alloc(n); while((*t = *s++)) t++; if (rve) *rve = t; return rv; } /* freedtoa(s) must be used to free values s returned by dtoa * when MULTIPLE_THREADS is #defined. It should be used in all cases, * but for consistency with earlier versions of dtoa, it is optional * when MULTIPLE_THREADS is not defined. */ void #ifdef KR_headers poly_freedtoa(s) char *s; #else poly_freedtoa(char *s) #endif { Bigint *b = (Bigint *)((int *)s - 1); b->maxwds = 1 << (b->k = *(int*)b); Bfree(b); #ifndef MULTIPLE_THREADS if (s == dtoa_result) dtoa_result = 0; #endif } /* dtoa for IEEE arithmetic (dmg): convert double to ASCII string. * * Inspired by "How to Print Floating-Point Numbers Accurately" by * Guy L. Steele, Jr. and Jon L. White [Proc. ACM SIGPLAN '90, pp. 112-126]. * * Modifications: * 1. Rather than iterating, we use a simple numeric overestimate * to determine k = floor(log10(d)). We scale relevant * quantities using O(log2(k)) rather than O(k) multiplications. * 2. For some modes > 2 (corresponding to ecvt and fcvt), we don't * try to generate digits strictly left to right. Instead, we * compute with fewer bits and propagate the carry if necessary * when rounding the final digit up. This is often faster. * 3. Under the assumption that input will be rounded nearest, * mode 0 renders 1e23 as 1e23 rather than 9.999999999999999e22. * That is, we allow equality in stopping tests when the * round-nearest rule will give the same floating-point value * as would satisfaction of the stopping test with strict * inequality. * 4. We remove common factors of powers of 2 from relevant * quantities. * 5. When converting floating-point integers less than 1e16, * we use floating-point arithmetic rather than resorting * to multiple-precision integers. * 6. When asked to produce fewer than 15 digits, we first try * to get by with floating-point arithmetic; we resort to * multiple-precision integer arithmetic only if we cannot * guarantee that the floating-point calculation has given * the correctly rounded result. For k requested digits and * "uniformly" distributed input, the probability is * something like 10^(k-15) that we must resort to the Long * calculation. */ char * poly_dtoa #ifdef KR_headers (dd, mode, ndigits, decpt, sign, rve) double dd; int mode, ndigits, *decpt, *sign; char **rve; #else (double dd, int mode, int ndigits, int *decpt, int *sign, char **rve) #endif { /* Arguments ndigits, decpt, sign are similar to those of ecvt and fcvt; trailing zeros are suppressed from the returned string. If not null, *rve is set to point to the end of the return value. If d is +-Infinity or NaN, then *decpt is set to 9999. mode: 0 ==> shortest string that yields d when read in and rounded to nearest. 1 ==> like 0, but with Steele & White stopping rule; e.g. with IEEE P754 arithmetic , mode 0 gives 1e23 whereas mode 1 gives 9.999999999999999e22. 2 ==> max(1,ndigits) significant digits. This gives a return value similar to that of ecvt, except that trailing zeros are suppressed. 3 ==> through ndigits past the decimal point. This gives a return value similar to that from fcvt, except that trailing zeros are suppressed, and ndigits can be negative. 4,5 ==> similar to 2 and 3, respectively, but (in round-nearest mode) with the tests of mode 0 to possibly return a shorter string that rounds to d. With IEEE arithmetic and compilation with -DHonor_FLT_ROUNDS, modes 4 and 5 behave the same as modes 2 and 3 when FLT_ROUNDS != 1. 6-9 ==> Debugging modes similar to mode - 4: don't try fast floating-point estimate (if applicable). Values of mode other than 0-9 are treated as mode 0. Sufficient space is allocated to the return value to hold the suppressed trailing zeros. */ int bbits, b2, b5, be, dig, i, ieps, ilim, ilim0, ilim1, j, j1=0, k, k0, k_check, leftright, m2, m5, s2, s5, spec_case, try_quick; Long L; #ifndef Sudden_Underflow int denorm; ULong x; #endif Bigint *b, *b1, *delta, *mlo=0, *mhi, *S; U d2, eps, u; double ds; char *s, *s0; #ifndef No_leftright #ifdef IEEE_Arith U eps1; #endif #endif #ifdef SET_INEXACT int inexact, oldinexact; #endif #ifdef Honor_FLT_ROUNDS /*{*/ int Rounding; #ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */ Rounding = Flt_Rounds; #else /*}{*/ Rounding = 1; switch(fegetround()) { case FE_TOWARDZERO: Rounding = 0; break; case FE_UPWARD: Rounding = 2; break; case FE_DOWNWARD: Rounding = 3; } #endif /*}}*/ #endif /*}*/ #ifndef MULTIPLE_THREADS if (dtoa_result) { freedtoa(dtoa_result); dtoa_result = 0; } #endif u.d = dd; if (word0(&u) & Sign_bit) { /* set sign for everything, including 0's and NaNs */ *sign = 1; word0(&u) &= ~Sign_bit; /* clear sign bit */ } else *sign = 0; #if defined(IEEE_Arith) + defined(VAX) #ifdef IEEE_Arith if ((word0(&u) & Exp_mask) == Exp_mask) #else if (word0(&u) == 0x8000) #endif { /* Infinity or NaN */ *decpt = 9999; #ifdef IEEE_Arith if (!word1(&u) && !(word0(&u) & 0xfffff)) return nrv_alloc("Infinity", rve, 8); #endif return nrv_alloc("NaN", rve, 3); } #endif #ifdef IBM dval(&u) += 0; /* normalize */ #endif if (!dval(&u)) { *decpt = 1; return nrv_alloc("0", rve, 1); } #ifdef SET_INEXACT try_quick = oldinexact = get_inexact(); inexact = 1; #endif #ifdef Honor_FLT_ROUNDS if (Rounding >= 2) { if (*sign) Rounding = Rounding == 2 ? 0 : 2; else if (Rounding != 2) Rounding = 0; } #endif b = d2b(&u, &be, &bbits); #ifdef Sudden_Underflow i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)); #else if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) { #endif dval(&d2) = dval(&u); word0(&d2) &= Frac_mask1; word0(&d2) |= Exp_11; #ifdef IBM if (j = 11 - hi0bits(word0(&d2) & Frac_mask)) dval(&d2) /= 1 << j; #endif /* log(x) ~=~ log(1.5) + (x-1.5)/1.5 * log10(x) = log(x) / log(10) * ~=~ log(1.5)/log(10) + (x-1.5)/(1.5*log(10)) * log10(d) = (i-Bias)*log(2)/log(10) + log10(d2) * * This suggests computing an approximation k to log10(d) by * * k = (i - Bias)*0.301029995663981 * + ( (d2-1.5)*0.289529654602168 + 0.176091259055681 ); * * We want k to be too large rather than too small. * The error in the first-order Taylor series approximation * is in our favor, so we just round up the constant enough * to compensate for any error in the multiplication of * (i - Bias) by 0.301029995663981; since |i - Bias| <= 1077, * and 1077 * 0.30103 * 2^-52 ~=~ 7.2e-14, * adding 1e-13 to the constant term more than suffices. * Hence we adjust the constant term to 0.1760912590558. * (We could get a more accurate k by invoking log10, * but this is probably not worthwhile.) */ i -= Bias; #ifdef IBM i <<= 2; i += j; #endif #ifndef Sudden_Underflow denorm = 0; } else { /* d is denormalized */ i = bbits + be + (Bias + (P-1) - 1); x = i > 32 ? word0(&u) << (64 - i) | word1(&u) >> (i - 32) : word1(&u) << (32 - i); dval(&d2) = x; word0(&d2) -= 31*Exp_msk1; /* adjust exponent */ i -= (Bias + (P-1) - 1) + 1; denorm = 1; } #endif ds = (dval(&d2)-1.5)*0.289529654602168 + 0.1760912590558 + i*0.301029995663981; k = (int)ds; if (ds < 0. && ds != k) k--; /* want k = floor(ds) */ k_check = 1; if (k >= 0 && k <= Ten_pmax) { if (dval(&u) < tens[k]) k--; k_check = 0; } j = bbits - i - 1; if (j >= 0) { b2 = 0; s2 = j; } else { b2 = -j; s2 = 0; } if (k >= 0) { b5 = 0; s5 = k; s2 += k; } else { b2 -= k; b5 = -k; s5 = 0; } if (mode < 0 || mode > 9) mode = 0; #ifndef SET_INEXACT #ifdef Check_FLT_ROUNDS try_quick = Rounding == 1; #else try_quick = 1; #endif #endif /*SET_INEXACT*/ if (mode > 5) { mode -= 4; try_quick = 0; } leftright = 1; ilim = ilim1 = -1; /* Values for cases 0 and 1; done here to */ /* silence erroneous "gcc -Wall" warning. */ switch(mode) { case 0: case 1: i = 18; ndigits = 0; break; case 2: leftright = 0; /* no break */ case 4: if (ndigits <= 0) ndigits = 1; ilim = ilim1 = i = ndigits; break; case 3: leftright = 0; /* no break */ case 5: i = ndigits + k + 1; ilim = i; ilim1 = i - 1; if (i <= 0) i = 1; } s = s0 = rv_alloc(i); #ifdef Honor_FLT_ROUNDS if (mode > 1 && Rounding != 1) leftright = 0; #endif if (ilim >= 0 && ilim <= Quick_max && try_quick) { /* Try to get by with floating-point arithmetic. */ i = 0; dval(&d2) = dval(&u); k0 = k; ilim0 = ilim; ieps = 2; /* conservative */ if (k > 0) { ds = tens[k&0xf]; j = k >> 4; if (j & Bletch) { /* prevent overflows */ j &= Bletch - 1; dval(&u) /= bigtens[n_bigtens-1]; ieps++; } for(; j; j >>= 1, i++) if (j & 1) { ieps++; ds *= bigtens[i]; } dval(&u) /= ds; } else if ((j1 = -k)) { dval(&u) *= tens[j1 & 0xf]; for(j = j1 >> 4; j; j >>= 1, i++) if (j & 1) { ieps++; dval(&u) *= bigtens[i]; } } if (k_check && dval(&u) < 1. && ilim > 0) { if (ilim1 <= 0) goto fast_failed; ilim = ilim1; k--; dval(&u) *= 10.; ieps++; } dval(&eps) = ieps*dval(&u) + 7.; word0(&eps) -= (P-1)*Exp_msk1; if (ilim == 0) { S = mhi = 0; dval(&u) -= 5.; if (dval(&u) > dval(&eps)) goto one_digit; if (dval(&u) < -dval(&eps)) goto no_digits; goto fast_failed; } #ifndef No_leftright if (leftright) { /* Use Steele & White method of only * generating digits needed. */ dval(&eps) = 0.5/tens[ilim-1] - dval(&eps); #ifdef IEEE_Arith if (k0 < 0 && j1 >= 307) { eps1.d = 1.01e256; /* 1.01 allows roundoff in the next few lines */ word0(&eps1) -= Exp_msk1 * (Bias+P-1); dval(&eps1) *= tens[j1 & 0xf]; for(i = 0, j = (j1-256) >> 4; j; j >>= 1, i++) if (j & 1) dval(&eps1) *= bigtens[i]; if (eps.d < eps1.d) eps.d = eps1.d; } #endif for(i = 0;;) { L = dval(&u); dval(&u) -= L; *s++ = '0' + (int)L; if (1. - dval(&u) < dval(&eps)) goto bump_up; if (dval(&u) < dval(&eps)) goto ret1; if (++i >= ilim) break; dval(&eps) *= 10.; dval(&u) *= 10.; } } else { #endif /* Generate ilim digits, then fix them up. */ dval(&eps) *= tens[ilim-1]; for(i = 1;; i++, dval(&u) *= 10.) { L = (Long)(dval(&u)); if (!(dval(&u) -= L)) ilim = i; *s++ = '0' + (int)L; if (i == ilim) { if (dval(&u) > 0.5 + dval(&eps)) goto bump_up; else if (dval(&u) < 0.5 - dval(&eps)) { while(*--s == '0'); s++; goto ret1; } break; } } #ifndef No_leftright } #endif fast_failed: s = s0; dval(&u) = dval(&d2); k = k0; ilim = ilim0; } /* Do we have a "small" integer? */ if (be >= 0 && k <= Int_max) { /* Yes. */ ds = tens[k]; if (ndigits < 0 && ilim <= 0) { S = mhi = 0; if (ilim < 0 || dval(&u) <= 5*ds) goto no_digits; goto one_digit; } for(i = 1;; i++, dval(&u) *= 10.) { L = (Long)(dval(&u) / ds); dval(&u) -= L*ds; #ifdef Check_FLT_ROUNDS /* If FLT_ROUNDS == 2, L will usually be high by 1 */ if (dval(&u) < 0) { L--; dval(&u) += ds; } #endif *s++ = '0' + (int)L; if (!dval(&u)) { #ifdef SET_INEXACT inexact = 0; #endif break; } if (i == ilim) { #ifdef Honor_FLT_ROUNDS if (mode > 1) switch(Rounding) { case 0: goto ret1; case 2: goto bump_up; } #endif dval(&u) += dval(&u); #ifdef ROUND_BIASED if (dval(&u) >= ds) #else if (dval(&u) > ds || (dval(&u) == ds && L & 1)) #endif { bump_up: while(*--s == '9') if (s == s0) { k++; *s = '0'; break; } ++*s++; } break; } } goto ret1; } m2 = b2; m5 = b5; mhi = mlo = 0; if (leftright) { i = #ifndef Sudden_Underflow denorm ? be + (Bias + (P-1) - 1 + 1) : #endif #ifdef IBM 1 + 4*P - 3 - bbits + ((bbits + be - 1) & 3); #else 1 + P - bbits; #endif b2 += i; s2 += i; mhi = i2b(1); } if (m2 > 0 && s2 > 0) { i = m2 < s2 ? m2 : s2; b2 -= i; m2 -= i; s2 -= i; } if (b5 > 0) { if (leftright) { if (m5 > 0) { mhi = pow5mult(mhi, m5); b1 = mult(mhi, b); Bfree(b); b = b1; } if ((j = b5 - m5)) b = pow5mult(b, j); } else b = pow5mult(b, b5); } S = i2b(1); if (s5 > 0) S = pow5mult(S, s5); /* Check for special case that d is a normalized power of 2. */ spec_case = 0; if ((mode < 2 || leftright) #ifdef Honor_FLT_ROUNDS && Rounding == 1 #endif ) { if (!word1(&u) && !(word0(&u) & Bndry_mask) #ifndef Sudden_Underflow && word0(&u) & (Exp_mask & ~Exp_msk1) #endif ) { /* The special case */ b2 += Log2P; s2 += Log2P; spec_case = 1; } } /* Arrange for convenient computation of quotients: * shift left if necessary so divisor has 4 leading 0 bits. * * Perhaps we should just compute leading 28 bits of S once * and for all and pass them and a shift to quorem, so it * can do shifts and ors to compute the numerator for q. */ i = dshift(S, s2); b2 += i; m2 += i; s2 += i; if (b2 > 0) b = lshift(b, b2); if (s2 > 0) S = lshift(S, s2); if (k_check) { if (cmp(b,S) < 0) { k--; b = multadd(b, 10, 0); /* we botched the k estimate */ if (leftright) mhi = multadd(mhi, 10, 0); ilim = ilim1; } } if (ilim <= 0 && (mode == 3 || mode == 5)) { if (ilim < 0 || cmp(b,S = multadd(S,5,0)) <= 0) { /* no digits, fcvt style */ no_digits: k = -1 - ndigits; goto ret; } one_digit: *s++ = '1'; k++; goto ret; } if (leftright) { if (m2 > 0) mhi = lshift(mhi, m2); /* Compute mlo -- check for special case * that d is a normalized power of 2. */ mlo = mhi; if (spec_case) { mhi = Balloc(mhi->k); Bcopy(mhi, mlo); mhi = lshift(mhi, Log2P); } for(i = 1;;i++) { dig = quorem(b,S) + '0'; /* Do we yet have the shortest decimal string * that will round to d? */ j = cmp(b, mlo); delta = diff(S, mhi); j1 = delta->sign ? 1 : cmp(b, delta); Bfree(delta); #ifndef ROUND_BIASED if (j1 == 0 && mode != 1 && !(word1(&u) & 1) #ifdef Honor_FLT_ROUNDS && Rounding >= 1 #endif ) { if (dig == '9') goto round_9_up; if (j > 0) dig++; #ifdef SET_INEXACT else if (!b->x[0] && b->wds <= 1) inexact = 0; #endif *s++ = dig; goto ret; } #endif if (j < 0 || (j == 0 && mode != 1 #ifndef ROUND_BIASED && !(word1(&u) & 1) #endif )) { if (!b->x[0] && b->wds <= 1) { #ifdef SET_INEXACT inexact = 0; #endif goto accept_dig; } #ifdef Honor_FLT_ROUNDS if (mode > 1) switch(Rounding) { case 0: goto accept_dig; case 2: goto keep_dig; } #endif /*Honor_FLT_ROUNDS*/ if (j1 > 0) { b = lshift(b, 1); j1 = cmp(b, S); #ifdef ROUND_BIASED if (j1 >= 0 /*)*/ #else if ((j1 > 0 || (j1 == 0 && dig & 1)) #endif && dig++ == '9') goto round_9_up; } accept_dig: *s++ = dig; goto ret; } if (j1 > 0) { #ifdef Honor_FLT_ROUNDS if (!Rounding) goto accept_dig; #endif if (dig == '9') { /* possible if i == 1 */ round_9_up: *s++ = '9'; goto roundoff; } *s++ = dig + 1; goto ret; } #ifdef Honor_FLT_ROUNDS keep_dig: #endif *s++ = dig; if (i == ilim) break; b = multadd(b, 10, 0); if (mlo == mhi) mlo = mhi = multadd(mhi, 10, 0); else { mlo = multadd(mlo, 10, 0); mhi = multadd(mhi, 10, 0); } } } else for(i = 1;; i++) { *s++ = dig = quorem(b,S) + '0'; if (!b->x[0] && b->wds <= 1) { #ifdef SET_INEXACT inexact = 0; #endif goto ret; } if (i >= ilim) break; b = multadd(b, 10, 0); } /* Round off last digit */ #ifdef Honor_FLT_ROUNDS switch(Rounding) { case 0: goto trimzeros; case 2: goto roundoff; } #endif b = lshift(b, 1); j = cmp(b, S); #ifdef ROUND_BIASED if (j >= 0) #else if (j > 0 || (j == 0 && dig & 1)) #endif { roundoff: while(*--s == '9') if (s == s0) { k++; *s++ = '1'; goto ret; } ++*s++; } else { #ifdef Honor_FLT_ROUNDS trimzeros: #endif while(*--s == '0'); s++; } ret: Bfree(S); if (mhi) { if (mlo && mlo != mhi) Bfree(mlo); Bfree(mhi); } ret1: #ifdef SET_INEXACT if (inexact) { if (!oldinexact) { word0(&u) = Exp_1 + (70 << Exp_shift); word1(&u) = 0; dval(&u) += 1.; } } else if (!oldinexact) clear_inexact(); #endif Bfree(b); *s = 0; *decpt = k + 1; if (rve) *rve = s; return s0; } #ifdef __cplusplus } #endif polyml-5.7.1/libpolyml/windows_specific.cpp0000644000175000017500000014515313204034553020056 0ustar daviddavid/* Title: Operating Specific functions: Windows version. Copyright (c) 2000, 2015 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #include #include #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_TCHAR_H #include #endif #ifdef HAVE_IO_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #include #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #include "globals.h" #include "arb.h" #include "gc.h" #include "run_time.h" #include "io_internal.h" #include "os_specific.h" #include "sys.h" #include "processes.h" #include "Console.h" #include "mpoly.h" #include "diagnostics.h" #include "scanaddrs.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "machine_dep.h" #include "rtsentry.h" #define STREAMID(x) (DEREFSTREAMHANDLE(x)->streamNo) #define SAVE(x) taskData->saveVec.push(x) #define SIZEOF(x) (sizeof(x)/sizeof(word)) extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyOSSpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetOSType(); } typedef enum { HE_UNUSED, HE_REGISTRY, HE_PROCESS, HE_DDECONVERSATION } HANDENTRYTYPE; /* Table of open handles. This is modelled after the IO table in basicio.c and performs a similar function. Each resource has an entry in here and there is a token which is an ML object. The token is simply a word containing the index in the table. It is the token itself which represents the entry within the ML world. The token is checked against the entry whenever it is used since it is possible for the tokens to be persistent although the corresponding entry in the table will not make sense in a subsequent session. This table also allows us to garbage-collect entries since if the token becomes unreachable we know that there is no longer a reference to the entry within ML. */ typedef struct { PolyObject *token; /* pointer into ML heap */ HANDENTRYTYPE entryType; /* Type of handle */ // Only some of these are used in particular cases // but using a union here complicates things. HKEY hKey; /* Registry key. */ /* Process and IO channels. */ HANDLE hProcess, hInput, hOutput, hEvent; PolyWord readToken, writeToken; HCONV hcDDEConv; /* DDE Conversation. */ } HANDLETAB, *PHANDLETAB; static PHANDLETAB handleTable; static POLYUNSIGNED maxHandleTab; /* General "close" function which may be called from the garbage-collector. */ static void close_handle(PHANDLETAB pTab) { switch (pTab->entryType) { case HE_REGISTRY: RegCloseKey(pTab->hKey); break; case HE_PROCESS: if (pTab->hProcess) CloseHandle(pTab->hProcess); if (pTab->hInput != INVALID_HANDLE_VALUE) CloseHandle(pTab->hInput); if (pTab->hOutput != INVALID_HANDLE_VALUE) CloseHandle(pTab->hOutput); if (pTab->hEvent) CloseHandle(pTab->hEvent); break; case HE_DDECONVERSATION: CloseDDEConversation(pTab->hcDDEConv); break; case HE_UNUSED: break; // Avoid warnings } pTab->token = 0; pTab->entryType = HE_UNUSED; } static PHANDLETAB get_handle(PolyWord token, HANDENTRYTYPE heType) { StreamToken *handle_token = (StreamToken*)token.AsObjPtr(); POLYUNSIGNED handle_no = handle_token->streamNo; if (handle_no >= maxHandleTab || handleTable[handle_no].token != handle_token || handleTable[handle_no].entryType != heType) return 0; return &handleTable[handle_no]; } static Handle make_handle_entry(TaskData *taskData) { unsigned handle_no; Handle str_token; bool have_collected = false; do { for(handle_no = 0; handle_no < maxHandleTab && handleTable[handle_no].token != 0; handle_no++); /* Check we have enough space. */ if (handle_no >= maxHandleTab) { /* No space. */ /* See if we have unreferenced streams. */ if (! have_collected) { FullGC(taskData); have_collected = true; } else /* No space - expand vector. */ { POLYUNSIGNED oldMax = maxHandleTab; maxHandleTab += maxHandleTab/2; void *p = realloc(handleTable, maxHandleTab*sizeof(HANDLETAB)); // If there's insufficient memory leave the old table. if (p == 0) raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY); handleTable = (PHANDLETAB)p; /* Clear the new space. */ memset(handleTable+oldMax, 0, (maxHandleTab-oldMax)*sizeof(HANDLETAB)); } } } while (handle_no >= maxHandleTab); str_token = alloc_and_save(taskData, 1, F_BYTE_OBJ); STREAMID(str_token) = handle_no; /* Clear the entry then set the token. */ memset(&handleTable[handle_no], 0, sizeof(HANDLETAB)); handleTable[handle_no].token = DEREFWORDHANDLE(str_token); return str_token; } static Handle execute(TaskData *taskData, Handle pname); static Handle simpleExecute(TaskData *taskData, Handle args); static Handle openProcessHandle(TaskData *taskData, Handle args, BOOL fIsRead, BOOL fIsText); static Handle openRegistryKey(TaskData *taskData, Handle args, HKEY hkParent); static Handle createRegistryKey(TaskData *taskData, Handle args, HKEY hkParent); static Handle queryRegistryKey(TaskData *taskData, Handle args, HKEY hkParent); static Handle setRegistryKey(TaskData *taskData, Handle args, HKEY hkParent); static Handle deleteRegistryKey(TaskData *taskData, Handle args, HKEY hkParent); static Handle deleteRegistryValue(TaskData *taskData, Handle args, HKEY hkParent); static Handle enumerateRegistry(TaskData *taskData, Handle args, HKEY hkey, BOOL isKey); // Vector of constants returned by call1006 static POLYUNSIGNED winConstVec[] = { KEY_ALL_ACCESS, // 0 KEY_CREATE_LINK, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_EXECUTE, KEY_NOTIFY, KEY_QUERY_VALUE, KEY_READ, KEY_SET_VALUE, KEY_WRITE, // 9 STATUS_ACCESS_VIOLATION, // 10 STATUS_ARRAY_BOUNDS_EXCEEDED, STATUS_BREAKPOINT, STATUS_CONTROL_C_EXIT, STATUS_DATATYPE_MISALIGNMENT, STATUS_FLOAT_DENORMAL_OPERAND, STATUS_FLOAT_DIVIDE_BY_ZERO, STATUS_FLOAT_INEXACT_RESULT, STATUS_FLOAT_INVALID_OPERATION, STATUS_FLOAT_OVERFLOW, STATUS_FLOAT_STACK_CHECK, STATUS_FLOAT_UNDERFLOW, STATUS_GUARD_PAGE_VIOLATION, STATUS_INTEGER_DIVIDE_BY_ZERO, STATUS_INTEGER_OVERFLOW, STATUS_ILLEGAL_INSTRUCTION, STATUS_INVALID_DISPOSITION, #ifdef STATUS_INVALID_HANDLE STATUS_INVALID_HANDLE, #else 0, // Not defined in Win CE #endif STATUS_IN_PAGE_ERROR, STATUS_NONCONTINUABLE_EXCEPTION, STATUS_PENDING, STATUS_PRIVILEGED_INSTRUCTION, STATUS_SINGLE_STEP, STATUS_STACK_OVERFLOW, STATUS_TIMEOUT, STATUS_USER_APC, // 35 VER_PLATFORM_WIN32s, // 36 VER_PLATFORM_WIN32_WINDOWS, VER_PLATFORM_WIN32_NT, // 38 // VER_PLATFORM_WIN32_CE is only defined in the Windows CE headers #ifdef VER_PLATFORM_WIN32_CE VER_PLATFORM_WIN32_CE, // 39 #else 3, // 39 #endif }; HKEY hkPredefinedKeyTab[] = { HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, #ifdef HKEY_PERFORMANCE_DATA HKEY_PERFORMANCE_DATA, #else 0, // Not defined in Win CE #endif #ifdef HKEY_CURRENT_CONFIG HKEY_CURRENT_CONFIG, #else 0, #endif #ifdef HKEY_DYN_DATA HKEY_DYN_DATA #else 0 #endif }; Handle OS_spec_dispatch_c(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORD(code)); switch (c) { case 0: /* Return our OS type. Not in any structure. */ return Make_fixed_precision(taskData, 1); /* 1 for Windows. */ /* Windows-specific functions. */ case 1000: /* execute */ return execute(taskData, args); case 1001: /* Get input stream as text. */ return openProcessHandle(taskData, args, TRUE, TRUE); case 1002: /* Get output stream as text. */ return openProcessHandle(taskData, args, FALSE, TRUE); case 1003: /* Get input stream as binary. */ return openProcessHandle(taskData, args, TRUE, FALSE); case 1004: /* Get output stream as binary. */ return openProcessHandle(taskData, args, FALSE, FALSE); case 1005: /* Get result of process. */ { PHANDLETAB hnd = get_handle(DEREFWORD(args), HE_PROCESS); if (hnd == 0) raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE); // Close the streams. Either of them may have been // passed to the stream package. if (hnd->hInput != INVALID_HANDLE_VALUE) CloseHandle(hnd->hInput); hnd->hInput = INVALID_HANDLE_VALUE; if (hnd->hEvent) CloseHandle(hnd->hEvent); hnd->hEvent = NULL; if (hnd->readToken.IsDataPtr()) { PIOSTRUCT strm = get_stream(hnd->readToken); if (strm != NULL) close_stream(strm); } hnd->readToken = ClosedToken; if (hnd->hOutput != INVALID_HANDLE_VALUE) CloseHandle(hnd->hOutput); hnd->hOutput = INVALID_HANDLE_VALUE; if (hnd->writeToken.IsDataPtr()) { PIOSTRUCT strm = get_stream(hnd->writeToken); if (strm != NULL) close_stream(strm); } hnd->writeToken = ClosedToken; // See if it's finished. while (true) { DWORD dwResult; if (GetExitCodeProcess(hnd->hProcess, &dwResult) == 0) raise_syscall(taskData, "GetExitCodeProcess failed", GetLastError()); if (dwResult != STILL_ACTIVE) { /* Finished - return the result. */ /* Note: we haven't closed the handle because we might want to ask for the result again. We only close it when we've garbage-collected the token. Doing this runs the risk of running out of handles. Maybe change it and remember the result in ML. */ return Make_fixed_precision(taskData, dwResult); } // Block and try again. WaitHandle waiter(hnd->hProcess); processes->ThreadPauseForIO(taskData, &waiter); } } case 1006: /* Return a constant. */ { unsigned i = get_C_unsigned(taskData, DEREFWORD(args)); if (i >= sizeof(winConstVec)/sizeof(winConstVec[0])) raise_syscall(taskData, "Invalid index", 0); return Make_arbitrary_precision(taskData, winConstVec[i]); } /* Registry functions. */ case 1007: // Open a key within one of the roots. { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return openRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1008: // Open a subkey of an opened key. { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return openRegistryKey(taskData, args, hnd->hKey); } case 1009: // Create a subkey within one of the roots. { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return createRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1010: // Create a subkey within an opened key. { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return createRegistryKey(taskData, args, hnd->hKey); } case 1011: // Close a registry handle. { PHANDLETAB hnd = get_handle(DEREFWORD(args), HE_REGISTRY); if (hnd != 0) close_handle(hnd); return Make_fixed_precision(taskData, 0); } case 1012: // Get a value { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return queryRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1013: // Get a value { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return queryRegistryKey(taskData, args, hnd->hKey); } case 1014: // Delete a subkey { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return deleteRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1015: // Delete a subkey { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return deleteRegistryKey(taskData, args, hnd->hKey); } case 1016: // Set a value { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return setRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1017: // Set a value { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return setRegistryKey(taskData, args, hnd->hKey); } case 1018: // Enumerate a key in the predefined keys { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return enumerateRegistry(taskData, args, hkPredefinedKeyTab[keyIndex], TRUE); } case 1019: // Enumerate a key in an opened key { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return enumerateRegistry(taskData, args, hnd->hKey, TRUE); } case 1020: // Enumerate a value in the predefined keys { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return enumerateRegistry(taskData, args, hkPredefinedKeyTab[keyIndex], FALSE); } case 1021: // Enumerate a value in an opened key { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return enumerateRegistry(taskData, args, hnd->hKey, FALSE); } case 1022: // Delete a value { unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0)); // This should only ever happen as a result of a fault in // the Windows structure. if (keyIndex >= sizeof(hkPredefinedKeyTab)/sizeof(hkPredefinedKeyTab[0])) raise_syscall(taskData, "Invalid index", 0); return deleteRegistryValue(taskData, args, hkPredefinedKeyTab[keyIndex]); } case 1023: // Delete a value { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_REGISTRY); if (hnd == 0) raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE); return deleteRegistryValue(taskData, args, hnd->hKey); } case 1030: // Convert UTC time values to local time. -- No longer used?? { FILETIME ftUTC, ftLocal; /* Get the file time. */ getFileTimeFromArb(taskData, args, &ftUTC); if (! FileTimeToLocalFileTime(&ftUTC, &ftLocal)) raise_syscall(taskData, "FileTimeToLocalFileTime failed", GetLastError()); return Make_arb_from_Filetime(taskData, ftLocal); } case 1031: // Convert local time values to UTC. -- No longer used?? { FILETIME ftUTC, ftLocal; /* Get the file time. */ getFileTimeFromArb(taskData, args, &ftLocal); if (! LocalFileTimeToFileTime(&ftLocal, &ftUTC)) raise_syscall(taskData, "LocalFileTimeToFileTime failed", GetLastError()); return Make_arb_from_Filetime(taskData, ftUTC); } case 1032: // Get volume information. { TCHAR rootName[MAX_PATH], volName[MAX_PATH], sysName[MAX_PATH]; DWORD dwVolSerial, dwMaxComponentLen, dwFlags; Handle volHandle, sysHandle, serialHandle, maxCompHandle; Handle resultHandle; POLYUNSIGNED length = Poly_string_to_C(DEREFWORD(args), rootName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Root name too long", ERROR_BAD_LENGTH); if (!GetVolumeInformation(rootName, volName, MAX_PATH, &dwVolSerial, &dwMaxComponentLen, &dwFlags, sysName, MAX_PATH)) raise_syscall(taskData, "GetVolumeInformation failed", GetLastError()); volHandle = SAVE(C_string_to_Poly(taskData, volName)); sysHandle = SAVE(C_string_to_Poly(taskData, sysName)); serialHandle = Make_arbitrary_precision(taskData, dwVolSerial); maxCompHandle = Make_arbitrary_precision(taskData, dwMaxComponentLen); resultHandle = alloc_and_save(taskData, 4); DEREFHANDLE(resultHandle)->Set(0, DEREFWORDHANDLE(volHandle)); DEREFHANDLE(resultHandle)->Set(1, DEREFWORDHANDLE(sysHandle)); DEREFHANDLE(resultHandle)->Set(2, DEREFWORDHANDLE(serialHandle)); DEREFHANDLE(resultHandle)->Set(3, DEREFWORDHANDLE(maxCompHandle)); return resultHandle; } case 1033: { TCHAR fileName[MAX_PATH], execName[MAX_PATH]; POLYUNSIGNED length = Poly_string_to_C(DEREFWORD(args), fileName, MAX_PATH); HINSTANCE hInst; if (length > MAX_PATH) raise_syscall(taskData, "File name too long", ERROR_BAD_LENGTH); hInst = FindExecutable(fileName, NULL, execName); if ((POLYUNSIGNED)hInst <= 32) { int error = 0; switch ((POLYUNSIGNED)hInst) { case SE_ERR_FNF: error = ERROR_FILE_NOT_FOUND; break; case SE_ERR_PNF: error = ERROR_PATH_NOT_FOUND; break; case SE_ERR_ACCESSDENIED: error = ERROR_ACCESS_DENIED; break; case SE_ERR_OOM: error = ERROR_NOT_ENOUGH_MEMORY; break; case SE_ERR_NOASSOC: error = ERROR_NO_ASSOCIATION; break; } raise_syscall(taskData, "FindExecutable failed", error); } return SAVE(C_string_to_Poly(taskData, execName)); } case 1034: // Open a document { SHELLEXECUTEINFO shellEx; memset(&shellEx, 0, sizeof(shellEx)); shellEx.cbSize = sizeof(shellEx); shellEx.lpVerb = _T("open"); shellEx.lpFile = Poly_string_to_T_alloc(DEREFWORD(args)); shellEx.hwnd = hMainWindow; shellEx.nShow = SW_SHOWNORMAL; BOOL fRes = ShellExecuteEx(&shellEx); free((void*)shellEx.lpFile); if (! fRes) raise_syscall(taskData, "ShellExecuteEx failed", GetLastError()); return Make_fixed_precision(taskData, 0); } case 1035: // Launch an application. { SHELLEXECUTEINFO shellEx; memset(&shellEx, 0, sizeof(shellEx)); shellEx.cbSize = sizeof(shellEx); shellEx.lpVerb = _T("open"); shellEx.lpFile = Poly_string_to_T_alloc(args->WordP()->Get(0)); shellEx.lpParameters = Poly_string_to_T_alloc(args->WordP()->Get(1)); shellEx.nShow = SW_SHOWNORMAL; BOOL fRes = ShellExecuteEx(&shellEx); free((void*)shellEx.lpFile); free((void*)shellEx.lpParameters); if (! fRes) raise_syscall(taskData, "ShellExecuteEx failed", GetLastError()); return Make_fixed_precision(taskData, 0); } case 1036: // Does the process have its own console? return Make_fixed_precision(taskData, hMainWindow != NULL ? 1: 0); case 1037: // Simple execute. return simpleExecute(taskData, args); // DDE case 1038: // Start DDE dialogue. { Handle handToken; PHANDLETAB pTab; HCONV hcDDEConv; TCHAR *serviceName = Poly_string_to_T_alloc(args->WordP()->Get(0)); TCHAR *topicName = Poly_string_to_T_alloc(args->WordP()->Get(1)); /* Send a request to the main thread to do the work. */ hcDDEConv = StartDDEConversation(serviceName, topicName); free(serviceName); free(topicName); if (hcDDEConv == 0) raise_syscall(taskData, "DdeConnect failed", 0); // Create an entry to return the conversation. handToken = make_handle_entry(taskData); pTab = &handleTable[STREAMID(handToken)]; pTab->entryType = HE_DDECONVERSATION; pTab->hcDDEConv = hcDDEConv; return handToken; } case 1039: // Send DDE execute request. { PHANDLETAB hnd = get_handle(DEREFHANDLE(args)->Get(0), HE_DDECONVERSATION); LRESULT res; char *command; if (hnd == NULL) { raise_syscall(taskData, "DDE Conversation is closed", 0); } command = Poly_string_to_C_alloc(args->WordP()->Get(1)); /* Send a request to the main thread to do the work. */ res = ExecuteDDE(command, hnd->hcDDEConv); free(command); if (res == -1) raise_syscall(taskData, "DdeClientTransaction failed", 0); else return Make_arbitrary_precision(taskData, res); } case 1040: // Close a DDE conversation. { PHANDLETAB hnd = get_handle(args->Word(), HE_DDECONVERSATION); if (hnd != 0) close_handle(hnd); return Make_fixed_precision(taskData, 0); } // Configuration functions. case 1050: // Get version data { OSVERSIONINFO osver; ZeroMemory(&osver, sizeof(OSVERSIONINFO)); osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); // GetVersionEx is deprecated in Windows 8.1 if (! GetVersionEx(&osver)) raise_syscall(taskData, "GetVersionEx failed", GetLastError()); Handle major = Make_fixed_precision(taskData, osver.dwMajorVersion); Handle minor = Make_fixed_precision(taskData, osver.dwMinorVersion); Handle build = Make_fixed_precision(taskData, osver.dwBuildNumber); Handle platform = Make_fixed_precision(taskData, osver.dwPlatformId); Handle version = SAVE(C_string_to_Poly(taskData, osver.szCSDVersion)); Handle resVal = alloc_and_save(taskData, 5); DEREFHANDLE(resVal)->Set(0, DEREFWORDHANDLE(major)); DEREFHANDLE(resVal)->Set(1, DEREFWORDHANDLE(minor)); DEREFHANDLE(resVal)->Set(2, DEREFWORDHANDLE(build)); DEREFHANDLE(resVal)->Set(3, DEREFWORDHANDLE(platform)); DEREFHANDLE(resVal)->Set(4, DEREFWORDHANDLE(version)); return resVal; } case 1051: // Get windows directory { TCHAR path[MAX_PATH+1]; if (GetWindowsDirectory(path, sizeof(path)/sizeof(TCHAR)) == 0) raise_syscall(taskData, "GetWindowsDirectory failed", GetLastError()); return SAVE(C_string_to_Poly(taskData, path)); } case 1052: // Get system directory { TCHAR path[MAX_PATH+1]; if (GetSystemDirectory(path, sizeof(path)/sizeof(TCHAR)) == 0) raise_syscall(taskData, "GetSystemDirectory failed", GetLastError()); return SAVE(C_string_to_Poly(taskData, path)); } case 1053: // Get computer name { TCHAR name[MAX_COMPUTERNAME_LENGTH +1]; DWORD dwSize = MAX_COMPUTERNAME_LENGTH +1; if (GetComputerName(name, &dwSize) == 0) raise_syscall(taskData, "GetComputerName failed", GetLastError()); return SAVE(C_string_to_Poly(taskData, name)); } case 1054: // Get user name { TCHAR name[UNLEN +1]; DWORD dwSize = UNLEN +1; if (GetUserName(name, &dwSize) == 0) raise_syscall(taskData, "GetUserName failed", GetLastError()); return SAVE(C_string_to_Poly(taskData, name)); } case 1100: // Get the error result from the last call. // This is saved when we make a call to a foreign function. { return(SAVE(TAGGED(taskData->lastError))); } case 1101: // Wait for a message. { HWND hwnd = *(HWND*)(DEREFWORDHANDLE(args)->Get(0).AsCodePtr()); UINT wMsgFilterMin = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(1)); UINT wMsgFilterMax = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); while (1) { MSG msg; processes->ThreadReleaseMLMemory(taskData); // N.B. PeekMessage may directly call the window proc resulting in a // callback to ML. For this to work a callback must not overwrite "args". BOOL result = PeekMessage(&msg, hwnd, wMsgFilterMin, wMsgFilterMax, PM_NOREMOVE); processes->ThreadUseMLMemory(taskData); if (result) return Make_fixed_precision(taskData, 0); // Pause until a message arrives. processes->ThreadPause(taskData); } } // case 1102: // Return the address of the window callback function. case 1103: // Return the application instance. { Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ); *(HINSTANCE*)(result->Word().AsCodePtr()) = hApplicationInstance; return result; } case 1104: // Return the main window handle { Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ); *(HWND*)(result->Word().AsCodePtr()) = hMainWindow; return result; } // case 1105: // Set the callback function default: { char msg[100]; sprintf(msg, "Unknown windows-specific function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); return 0; } } } // General interface to Windows OS-specific. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyOSSpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = OS_spec_dispatch_c(taskData, pushedArg, pushedCode); } catch (KillException &) { processes->ThreadExit(taskData); // Call 1005 may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyGetOSType() { return TAGGED(1).AsUnsigned(); // Return 1 for Windows } /* The Windows version of this is more complicated than the Unix version because we can't manipulate the pipe handles in the child process. Everything has to be set up in the parent. As with Unix we create two pipes and pass one end of each pipe to the child. The end we pass to the child is "inheritable" (i.e. duplicated in the child as with Unix file descriptors) while the ends we keep in the parent are non-inheritable (i.e. not duplicated in the child). DCJM: December 1999. This is now further complicated to improve the performance. In Unix we can pass the file ID to "select" which will return immediately when input is available (we ignore blocking on output at the moment). That allows the ML process to respond immediately. There's no easy way to do that in Windows since the pipe handle is signalled whether there is input available or not. One possibility would be to use overlapped IO but that requires using the ReadFile call directly and some contortions to create a pipe with overlapped IO. The other, taken here, is to interpose a thread which can signal an event when input is available. */ static Handle execute(TaskData *taskData, Handle args) { LPCSTR lpszError = ""; HANDLE hWriteToChild = INVALID_HANDLE_VALUE, hReadFromParent = INVALID_HANDLE_VALUE, hWriteToParent = INVALID_HANDLE_VALUE, hReadFromChild = INVALID_HANDLE_VALUE; HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); HANDLE hTemp; STARTUPINFO startupInfo; PROCESS_INFORMATION processInfo; Handle handToken = make_handle_entry(taskData); PHANDLETAB pTab = &handleTable[STREAMID(handToken)]; LPTSTR commandName = Poly_string_to_T_alloc(args->WordP()->Get(0)); LPTSTR arguments = Poly_string_to_T_alloc(args->WordP()->Get(1)); // Create pipes for connection. Setting the security argument to NULL creates // the pipe handles as non-inheritable. We have to make sure that the // child process does not inherit handles for the parent end of the // connection otherwise the pipe will remain open after the parent has // closed its end, causing the child process to sit around even after // the parent process has gone away. if (!CreatePipe(&hReadFromParent, &hWriteToChild, NULL, 0)) { lpszError = "Could not create pipe"; goto error; } if (!CreatePipe(&hReadFromChild, &hWriteToParent, NULL, 0)) { lpszError = "Could not create pipe"; goto error; } // Create the copying thread. hTemp = CreateCopyPipe(hReadFromChild, hEvent); if (hTemp == NULL) { lpszError = "Could not create pipe"; goto error; } hReadFromChild = hTemp; // Convert the handles we want to pass to the child into inheritable // handles by duplicating and replacing them with the duplicates. if (! DuplicateHandle(GetCurrentProcess(), hWriteToParent, GetCurrentProcess(), &hTemp, 0, TRUE, // inheritable DUPLICATE_SAME_ACCESS )) { lpszError = "Could not create pipe"; goto error; } CloseHandle(hWriteToParent); hWriteToParent = hTemp; if (! DuplicateHandle(GetCurrentProcess(), hReadFromParent, GetCurrentProcess(), &hTemp, 0, TRUE, // inheritable DUPLICATE_SAME_ACCESS )) { lpszError = "Could not create pipe"; goto error; } CloseHandle(hReadFromParent); hReadFromParent = hTemp; // Create a STARTUPINFO structure in which to pass the pipes as stdin // and stdout to the new process. memset(&startupInfo, 0, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); startupInfo.dwFlags = STARTF_USESTDHANDLES; startupInfo.hStdInput = hReadFromParent; startupInfo.hStdOutput = hWriteToParent; // What should we do about the stderr? For the moment, inherit the original. startupInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE); // Treat the empty string as NULL. This is non-standard. if (!CreateProcess(commandName[0] == 0 ? NULL: commandName, arguments[0] == 0 ? NULL: arguments, // Command line NULL, NULL, TRUE, // Security attributes. Inherit handles CREATE_NO_WINDOW, // creation flags NULL, NULL, // Inherit our environment and directory &startupInfo, &processInfo)) { lpszError = "Could not create process"; goto error; } free(commandName); free(arguments); /* Close thread handle since we don't need it. */ CloseHandle(processInfo.hThread); /* Close the sides of the pipes we don't use in the parent. */ CloseHandle(hReadFromParent); CloseHandle(hWriteToParent); pTab->entryType = HE_PROCESS; pTab->hProcess = processInfo.hProcess; pTab->hInput = hReadFromChild; pTab->hOutput = hWriteToChild; pTab->hEvent = hEvent; pTab->readToken = ClosedToken; pTab->writeToken = ClosedToken; return(handToken); error: { int err = GetLastError(); free(commandName); free(arguments); // Close all the pipe handles. if (hWriteToChild != INVALID_HANDLE_VALUE) CloseHandle(hWriteToChild); if (hReadFromParent != INVALID_HANDLE_VALUE) CloseHandle(hReadFromParent); if (hWriteToParent != INVALID_HANDLE_VALUE) CloseHandle(hWriteToParent); if (hReadFromChild != INVALID_HANDLE_VALUE) CloseHandle(hReadFromChild); if (hEvent) CloseHandle(hEvent); raise_syscall(taskData, lpszError, err); return NULL; // Never reached. } } static Handle simpleExecute(TaskData *taskData, Handle args) { HANDLE hNull = INVALID_HANDLE_VALUE; PROCESS_INFORMATION processInfo; Handle handToken; PHANDLETAB pTab; TCHAR *commandName = Poly_string_to_T_alloc(args->WordP()->Get(0)); TCHAR *arguments = Poly_string_to_T_alloc(args->WordP()->Get(1)); STARTUPINFO startupInfo; // Open a handle to NUL for input and output. hNull = CreateFile(_T("NUL"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Create a STARTUPINFO structure in which to pass hNULL as stdin // and stdout to the new process. memset(&startupInfo, 0, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); startupInfo.dwFlags = STARTF_USESTDHANDLES; startupInfo.hStdInput = hNull; startupInfo.hStdOutput = hNull; startupInfo.hStdError = hNull; STARTUPINFO *start = &startupInfo; // Treat the empty string as NULL. This is non-standard. if (!CreateProcess(commandName[0] == 0 ? NULL : commandName, arguments[0] == 0 ? NULL : arguments, // Command line NULL, NULL, // Security attributes TRUE, CREATE_NO_WINDOW, // Inherit handles, creation flags NULL, NULL, // Inherit our environment and directory start, &processInfo)) { int nErr = GetLastError(); // Clean up free(commandName); free(arguments); CloseHandle(hNull); raise_syscall(taskData, "CreateProcess failed", nErr); } free(commandName); free(arguments); /* Close thread handle since we don't need it. */ CloseHandle(processInfo.hThread); #ifndef _WIN32_WCE CloseHandle(hNull); // We no longer need this #endif handToken = make_handle_entry(taskData); pTab = &handleTable[STREAMID(handToken)]; pTab->entryType = HE_PROCESS; pTab->hProcess = processInfo.hProcess; // We only use the process handle entry. pTab->hInput = INVALID_HANDLE_VALUE; pTab->hOutput = INVALID_HANDLE_VALUE; pTab->hEvent = NULL; pTab->readToken = ClosedToken; pTab->writeToken = ClosedToken; return(handToken); } /* Return a stream, either text or binary, connected to an open process. */ static Handle openProcessHandle(TaskData *taskData, Handle args, BOOL fIsRead, BOOL fIsText) { PHANDLETAB hnd = get_handle(args->Word(), HE_PROCESS); HANDLE hStream; int mode = 0, ioBits = 0; if (hnd == 0) raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE); if (fIsRead) hStream = hnd->hInput; else hStream = hnd->hOutput; /* I had previously assumed that it wasn't possible to get the same stream twice. The current basis library definition allows it but warns it may produce unpredictable results. For the moment we don't allow it because we could get problems with closing the same handle twice. */ if (hStream == INVALID_HANDLE_VALUE) raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE); if (fIsRead) { mode = _O_RDONLY; ioBits = IO_BIT_READ; } else { mode = 0; ioBits = IO_BIT_WRITE; } if (fIsText) mode |= _O_TEXT; else mode |= _O_BINARY; Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY); PIOSTRUCT strm = &basic_io_vector[STREAMID(str_token)]; strm->device.ioDesc = _open_osfhandle ((POLYSIGNED) hStream, mode); if (strm->device.ioDesc == -1) raise_syscall(taskData, "_open_osfhandle failed", _doserrno); strm->ioBits = ioBits | IO_BIT_OPEN | IO_BIT_PIPE; /* The responsibility for closing the handle is passed to the stream package. We need to retain a pointer to the stream entry so that we can close the stream in "reap". */ if (fIsRead) { hnd->hInput = INVALID_HANDLE_VALUE; hnd->readToken = strm->token; // Pass the "input available" event. strm->hAvailable = hnd->hEvent; hnd->hEvent = NULL; } else { hnd->hOutput = INVALID_HANDLE_VALUE; hnd->writeToken = strm->token; } return str_token; } // Open a registry key and make an entry in the table for it. static Handle openRegistryKey(TaskData *taskData, Handle args, HKEY hkParent) { TCHAR keyName[MAX_PATH]; LONG lRes; Handle result; PHANDLETAB pTab; HKEY hkey; REGSAM sam = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1), keyName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH); // Try opening the key. lRes = RegOpenKeyEx(hkParent, keyName, 0, sam, &hkey); if (lRes != ERROR_SUCCESS) raise_syscall(taskData, "RegOpenKeyEx failed", lRes); // Make an entry in the table. result = make_handle_entry(taskData); pTab = &handleTable[STREAMID(result)]; pTab->entryType = HE_REGISTRY; pTab->hKey = hkey; return result; } // Create a registry key and make an entry in the table for it. static Handle createRegistryKey(TaskData *taskData, Handle args, HKEY hkParent) { TCHAR keyName[MAX_PATH]; LONG lRes; Handle keyResult, dispRes, pair; PHANDLETAB pTab; HKEY hkey; DWORD dwDisp; REGSAM sam = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(3)); unsigned opt = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1), keyName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH); // Try opening the key. lRes = RegCreateKeyEx(hkParent, keyName, 0, NULL, opt ? REG_OPTION_NON_VOLATILE : REG_OPTION_VOLATILE, sam, NULL, &hkey, &dwDisp); if (lRes != ERROR_SUCCESS) raise_syscall(taskData, "RegCreateKeyEx failed", lRes); // Make an entry in the table. keyResult = make_handle_entry(taskData); pTab = &handleTable[STREAMID(keyResult)]; pTab->entryType = HE_REGISTRY; pTab->hKey = hkey; // Record whether this was new or old. dispRes = Make_fixed_precision(taskData, dwDisp == REG_CREATED_NEW_KEY ? 0: 1); /* Return a pair of the disposition and the token. */ pair = alloc_and_save(taskData, 2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(dispRes)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(keyResult)); return pair; } // Delete a key. Note that in Windows NT (but not 95) this will fail if // the key has subkeys. static Handle deleteRegistryKey(TaskData *taskData, Handle args, HKEY hkParent) { TCHAR keyName[MAX_PATH]; LONG lRes; POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1), keyName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH); // Try deleting the key. lRes = RegDeleteKey(hkParent, keyName); if (lRes != ERROR_SUCCESS) /* Return the error. */ raise_syscall(taskData, "RegDeleteKey failed", lRes); return Make_fixed_precision(taskData, 0); } static Handle deleteRegistryValue(TaskData *taskData, Handle args, HKEY hkParent) { TCHAR keyName[MAX_PATH]; LONG lRes; POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1).AsObjPtr(), keyName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH); // Try deleting the value. lRes = RegDeleteValue(hkParent, keyName); if (lRes != ERROR_SUCCESS) /* Return the original error. */ raise_syscall(taskData, "RegDeleteValue failed", lRes); return Make_fixed_precision(taskData, 0); } static Handle queryRegistryKey(TaskData *taskData, Handle args, HKEY hkey) { TCHAR valName[MAX_PATH]; byte *keyValue = 0; LONG lRes; DWORD valSize; Handle result, resVal, resType; DWORD dwType; POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1), valName, MAX_PATH); if (length > MAX_PATH) raise_syscall(taskData, "Value name too long", ERROR_BAD_LENGTH); // How long is the entry? lRes = RegQueryValueEx(hkey, valName, 0, NULL, NULL, &valSize); // When opening HKEY_PERFORMANCE_DATA we don't get a sensible // answer here. if (lRes == ERROR_MORE_DATA) valSize = 1024; // Guess else if (lRes != ERROR_SUCCESS) raise_syscall(taskData, "RegQueryValueEx failed", lRes); // Allocate that much store and get the value. We could // try reading directly into ML store to save copying but // it hardly seems worthwhile. // Note: It seems that valSize can be zero for some items. if (valSize == 0) resVal = SAVE(C_string_to_Poly(taskData, "", 0)); else { do { byte *newAlloc = (byte*)realloc(keyValue, valSize); if (newAlloc == 0) { free(keyValue); raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY); } keyValue = newAlloc; lRes = RegQueryValueEx(hkey, valName, 0, &dwType, keyValue, &valSize); // In the special case of HKEY_PERFORMANCE_DATA we may need to keep // growing the buffer. if (lRes == ERROR_MORE_DATA) valSize = valSize + 1024; } while (lRes == ERROR_MORE_DATA); if (lRes != ERROR_SUCCESS) { free(keyValue); raise_syscall(taskData, "RegQueryValue failed", lRes); } // If we have a string we have to convert this to ANSI/utf-8. if (dwType == REG_SZ || dwType == REG_MULTI_SZ || dwType == REG_EXPAND_SZ) resVal = SAVE(C_string_to_Poly(taskData, (TCHAR*)keyValue, valSize / sizeof(TCHAR))); else resVal = SAVE(C_string_to_Poly(taskData, (char*)keyValue, valSize)); free(keyValue); } /* Create a pair containing the type and the value. */ resType = Make_fixed_precision(taskData, dwType); result = alloc_and_save(taskData, 2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(resType)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(resVal)); return result; } static Handle setRegistryKey(TaskData *taskData, Handle args, HKEY hkey) { TCHAR valName[MAX_PATH]; LONG lRes; PolyWord str = args->WordP()->Get(3); POLYUNSIGNED length = Poly_string_to_C(args->WordP()->Get(1), valName, MAX_PATH); DWORD dwType = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); if (length > MAX_PATH) raise_syscall(taskData, "Value name too long", ERROR_BAD_LENGTH); // The value is binary. Strings will already have had a null added. if (IS_INT(str)) { byte b = (byte)UNTAGGED(str); // Single byte value. lRes = RegSetValueEx(hkey, valName, 0, dwType, &b, 1); } else { PolyStringObject *ps = (PolyStringObject*)str.AsObjPtr(); lRes = RegSetValueEx(hkey, valName, 0, dwType, (CONST BYTE *)ps->chars, (DWORD)ps->length); } if (lRes != ERROR_SUCCESS) raise_syscall(taskData, "RegSetValue failed", lRes); return Make_fixed_precision(taskData, 0); } // Enumerate a key or a value. Returns a string option containing NONE if // no key/value could be found or SOME s where s is the name of the key/value. static Handle enumerateRegistry(TaskData *taskData, Handle args, HKEY hkey, BOOL isKey) { DWORD num = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(1)); LONG lRes; TCHAR keyName[MAX_PATH]; DWORD dwLength = sizeof(keyName)/sizeof(keyName[0]); Handle result, resVal; if (isKey) { FILETIME ftMod; lRes = RegEnumKeyEx(hkey, num, keyName, &dwLength, NULL, NULL, NULL, &ftMod); if (lRes != ERROR_SUCCESS && lRes != ERROR_NO_MORE_ITEMS) raise_syscall(taskData, "RegEnumKeyEx failed", lRes); } else { lRes = RegEnumValue(hkey, num, keyName, &dwLength, NULL, NULL, NULL, NULL); if (lRes != ERROR_SUCCESS && lRes != ERROR_NO_MORE_ITEMS) raise_syscall(taskData, "RegEnumValue failed", lRes); } if (lRes == ERROR_NO_MORE_ITEMS) return SAVE(NONE_VALUE); /* NONE. */ resVal = SAVE(C_string_to_Poly(taskData, keyName)); result = alloc_and_save(taskData, 1); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(resVal)); return result; } struct _entrypts osSpecificEPT[] = { { "PolyGetOSType", (polyRTSFunction)&PolyGetOSType}, { "PolyOSSpecificGeneral", (polyRTSFunction)&PolyOSSpecificGeneral}, { NULL, NULL} // End of list. }; class WindowsModule: public RtsModule { public: virtual void Init(void); virtual void Stop(void); void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static WindowsModule windowsModule; void WindowsModule::GarbageCollect(ScanAddress *process) /* Ensures that all the objects are retained and their addresses updated. */ { POLYUNSIGNED i; /* Entries in the file table. These are marked as weak references so may return 0 for unreferenced streams. */ for(i = 0; i < maxHandleTab; i++) { PHANDLETAB str = &(handleTable[i]); if (str->token != 0) { if (str->entryType == HE_PROCESS) { /* Update the references to opened streams but do this only as weak references. If the stream has gone away then that's fine. */ if (str->readToken.IsDataPtr()) { PolyObject *token = str->readToken.AsObjPtr(); process->ScanRuntimeAddress(&token, ScanAddress::STRENGTH_WEAK); str->readToken = token == 0 ? ClosedToken : token; } if (str->writeToken.IsDataPtr()) { PolyObject *token = str->writeToken.AsObjPtr(); process->ScanRuntimeAddress(&token, ScanAddress::STRENGTH_WEAK); str->writeToken = token == 0 ? ClosedToken : token; } } process->ScanRuntimeAddress(&str->token, ScanAddress::STRENGTH_WEAK); /* Unreferenced entries may return zero. */ if (str->token == 0 && str->entryType != HE_UNUSED) close_handle(str); } } } void WindowsModule::Stop(void) { if (handleTable) { for (POLYUNSIGNED i = 0; i < maxHandleTab; i++) { if (handleTable[i].token != 0) close_handle(&handleTable[i]); } free(handleTable); } handleTable = NULL; } void WindowsModule::Init(void) { maxHandleTab = 5; /* Initialise to a small number. */ /* A vector for the streams (initialised by calloc) */ handleTable = (PHANDLETAB)calloc(maxHandleTab,sizeof(HANDLETAB)); } polyml-5.7.1/libpolyml/osmem.h0000644000175000017500000000401113204034553015267 0ustar daviddavid/* Title: osomem.h - Interface to OS memory management Copyright (c) 2006 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef OS_MEM_H_INCLUDED #define OS_MEM_H_INCLUDED // We need size_t so include these two here. #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif // This class provides access to the memory management provided by the // operating system. It would be nice if we could always use malloc and // free for this but we need to have execute permission on the code // objects. #define PERMISSION_READ 1 #define PERMISSION_WRITE 2 #define PERMISSION_EXEC 4 class OSMem { public: // Allocate space and return a pointer to it. The size is the minimum // size requested in bytes and it is updated with the actual space allocated. // Returns NULL if it cannot allocate the space. void *Allocate(size_t &bytes, unsigned permissions); // Release the space previously allocated. This must free the whole of // the segment. The space must be the size actually allocated. bool Free(void *p, size_t space); // Adjust the permissions on a segment. This must apply to the // whole of a segment. bool SetPermissions(void *p, size_t space, unsigned permissions); }; extern OSMem *osMemoryManager; #endif polyml-5.7.1/libpolyml/savestate.h0000644000175000017500000000305013204034553016150 0ustar daviddavid/* Title: savestate.h - Save and Load state Copyright (c) 2007, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef SAVESTATE_H_INCLUDED #define SAVESTATE_H_INCLUDED class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; // Write a saved state file. Handle SaveState(TaskData *taskData, Handle args); // Load a saved state file and any ancestors. Handle LoadState(TaskData *taskData, bool isHierarchy, Handle hFileName); // Show the hierarchy. Handle ShowHierarchy(TaskData *taskData); // Change the name of the immediate parent stored in a child Handle RenameParent(TaskData *taskData, Handle args); // Return the name of the immediate parent stored in a child Handle ShowParent(TaskData *taskData, Handle hFileName); // Write out a module. Handle StoreModule(TaskData *taskData, Handle args); // Load a module. Handle LoadModule(TaskData *taskData, Handle args); #endif polyml-5.7.1/libpolyml/diagnostics.h0000644000175000017500000000445013204034553016465 0ustar daviddavid/* Title: Header for diagnostics.c Copyright (c) 2011-12, 2015, 2017 David C.J. Matthews Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _DIAGNOSTICS_H_USED #define _DIAGNOSTICS_H_USED #include "noreturn.h" #include "globals.h" #ifdef HAVE_TCHAR_H #include #else typedef char TCHAR; #endif NORETURNFN(extern void Exit(const char *, ...)); NORETURNFN(extern void Crash(const char *, ...)); NORETURNFN(extern void ExitWithError(const char *, int err)); extern void SetLogFile(const TCHAR *fileName); extern void Log(const char *, ...); extern void LogSize(POLYUNSIGNED wordSize); extern unsigned debugOptions; // debugging flags // Values for debugging flags #define DEBUG_CHECK_OBJECTS 0x0001 // Check that addresses are valid. #define DEBUG_GC 0x0002 // Summary GC debugging output #define DEBUG_MEMMGR 0x0004 // Memory manager output #define DEBUG_GC_DETAIL 0x0008 // Detailed GC debugging output #define DEBUG_THREADS 0x0010 // Thread-related output #define DEBUG_GCTASKS 0x0020 // GC task farm #define DEBUG_HEAPSIZE 0x0040 // Heap resizing #define DEBUG_X 0x0080 // X-Windows debugging #define DEBUG_SHARING 0x0100 // Diagnostics for share-common-data #define DEBUG_CONTENTION 0x0200 // Information about contended locks #define DEBUG_RTSCALLS 0x0400 // Information about run-time calls. Not currently used. #define DEBUG_GC_ENHANCED 0x0800 // Intermediate level GC output #define DEBUG_SAVING 0x1000 // Saving state and exporting #endif polyml-5.7.1/libpolyml/gc_update_phase.cpp0000644000175000017500000002331213204034553017622 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector - Update phase Copyright (c) 2010-12 David C. J. Matthews Based on the original garbage collector code Copyright 2000-2008 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is the third, update, phase of the garbage collector. The previous, copy, phase will have moved cells in memory. The update phase goes through all cells that could contain an address of a cell that has been moved and looks for a tomb-stone that contains its new location. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "run_time.h" #include "processes.h" #include "gc.h" #include "scanaddrs.h" #include "check_objects.h" #include "bitmap.h" #include "memmgr.h" #include "gctaskfarm.h" #include "diagnostics.h" class MTGCProcessUpdate: public ScanAddress { public: virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); virtual void ScanRuntimeAddress(PolyObject **pt, RtsStrength weak); virtual PolyObject *ScanObjectAddress(PolyObject *base); void UpdateObjectsInArea(LocalMemSpace *area); private: static void UpdateAddress(PolyObject *&obj) { while (obj->ContainsForwardingPtr()) obj = obj->GetForwardingPtr(); } }; /*********************************************************************/ /* This function is called in the update phase to update pointers to */ /* objects in the gc area that are in old mutable segments. */ /*********************************************************************/ PolyObject *MTGCProcessUpdate::ScanObjectAddress(PolyObject *obj) { PolyWord val = obj; LocalMemSpace *space = gMem.LocalSpaceForAddress(val.AsStackAddr()-1); if (space != 0) { UpdateAddress(obj); ASSERT(obj->ContainsNormalLengthWord()); } return obj; } void MTGCProcessUpdate::ScanRuntimeAddress(PolyObject **pt, RtsStrength/* weak*/) /* weak is not used, but needed so type of the function is correct */ { PolyObject *obj = *pt; if (obj->ContainsForwardingPtr()) { UpdateAddress(obj); *pt = obj; } } // Update the addresses in a group of words. POLYUNSIGNED MTGCProcessUpdate::ScanAddressAt(PolyWord *pt) { PolyWord val = *pt; if (val.IsTagged()) return 0; // It looked like it would be possible to simplify this code and // just call ContainsForwardingPtr on any address. // Profiling shows that it's quite important to avoid calling // ContainsForwardingPtr unnecessarily. I guess the reason is that // it actually accesses the memory referenced by the address and it // is unlikely to be in the cache. PolyObject *obj = val.AsObjPtr(); if (obj->ContainsForwardingPtr()) { UpdateAddress(obj); *pt = obj; } return 0; } // Updates the addresses for objects in the area with the "allocated" bit set. // It processes the area between area->pointer and the bit corresponding to area->highest. // area->highest corresponds to gen_top i.e. we don't process older generations. void MTGCProcessUpdate::UpdateObjectsInArea(LocalMemSpace *area) { PolyWord *pt = area->upperAllocPtr; POLYUNSIGNED bitno = area->wordNo(pt); POLYUNSIGNED highest = area->wordNo(area->top); for (;;) { ASSERT(bitno <= highest); /* Zero unused words. This is necessary so that ScanAddressesInRegion can work. It requires the allocated area of memory to contain either objects with a valid length word or forwarding pointer or zeros. We should only be zeroing words that we couldn't fill with real data so it shouldn't be too much. Profiling showed that using dummy byte objects here didn't make a measurable difference, */ while (bitno < highest && !area->bitmap.TestBit(bitno)) { *pt++ = PolyWord::FromUnsigned(0); bitno++; } if (bitno == highest) { // Have reached the top of the area ASSERT(pt == area->top); break; } /* first set bit corresponds to the length word */ pt++; PolyObject *obj = (PolyObject*)pt; POLYUNSIGNED L = obj->LengthWord(); bitno++; if (obj->ContainsForwardingPtr()) { // Skip over moved objects. We have to find the new location to find // its length. UpdateAddress(obj); POLYUNSIGNED length = obj->Length(); pt += length; bitno += length; } else // Contains real object { if (OBJ_IS_WORD_OBJECT(L)) { POLYUNSIGNED length = OBJ_OBJECT_LENGTH(L); area->updated += length+1; while (length--) { PolyWord val = *pt; if (! val.IsTagged() && val != PolyWord::FromUnsigned(0)) { PolyObject *obj = val.AsObjPtr(); if (obj->ContainsForwardingPtr()) { UpdateAddress(obj); *pt = obj; } } pt++; bitno++; } } else /* !OBJ_IS_WORD_OBJECT(L) */ { POLYUNSIGNED length = OBJ_OBJECT_LENGTH(L); area->updated += length+1; ScanAddressesInObject(obj, L); pt += length; bitno += length; } /* !OBJ_IS_WORD_OBJECT(L) */ CheckObject(obj); // Can check it after it's been updated } /* !OBJ_IS_POINTER(L) */ } /* for loop */ } // Task to update addresses in a local area. static void updateLocalArea(GCTaskId*, void *arg1, void *arg2) { MTGCProcessUpdate *processUpdate = (MTGCProcessUpdate *)arg1; LocalMemSpace *space = (LocalMemSpace *)arg2; if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Update local area %p\n", space); // Process the current generation for mutable or immutable areas. processUpdate->UpdateObjectsInArea(space); if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Completed local update for %p. %lu words updated\n", space, space->updated); } // Task to update addresses in a non-local area. static void updateNonLocalMutableArea(GCTaskId*, void *arg1, void *arg2) { MTGCProcessUpdate *processUpdate = (MTGCProcessUpdate *)arg1; MemSpace *space = (MemSpace *)arg2; if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Update non-local mutable area %p\n", space); processUpdate->ScanAddressesInRegion(space->bottom, space->top); if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Completed non-local mutable update for %p\n", space); } // Task to update addresses maintained by the RTS itself. static void updateGCProcAddresses(GCTaskId*, void *arg1, void *) { MTGCProcessUpdate *processUpdate = (MTGCProcessUpdate *)arg1; GCModules(processUpdate); } void GCUpdatePhase() { /* Update phase */ mainThreadPhase = MTP_GCPHASEUPDATE; /* Invariant: at most the first (gen_top - bottom) bits of each bitmap can be dirty here. */ for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) (*i)->updated = 0; // We can do the updates in parallel since they don't interfere at all. MTGCProcessUpdate processUpdate; // Process local areas. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; // As well as updating the addresses this also clears the bitmaps. gpTaskFarm->AddWorkOrRunNow(&updateLocalArea, &processUpdate, space); } // Scan the permanent mutable areas and the code areas. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && ! space->byteOnly) gpTaskFarm->AddWorkOrRunNow(&updateNonLocalMutableArea, &processUpdate, space); } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; gpTaskFarm->AddWorkOrRunNow(&updateNonLocalMutableArea, &processUpdate, space); // We could remove the mutable bit if there are no longer any mutable code objects // but it's easier to leave that to the minor GC. } // Update addresses in RTS modules. gpTaskFarm->AddWorkOrRunNow(&updateGCProcAddresses, &processUpdate, 0); // Wait for these to complete before proceeding. gpTaskFarm->WaitForCompletion(); } polyml-5.7.1/libpolyml/Console.h0000644000175000017500000000350013204034553015553 0ustar daviddavid/* Title: Poly/ML Console Window. Copyright (c) 2000, 2015 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _CONSOLE_H #define _CONSOLE_H #include /* Test whether input is available. */ extern bool isConsoleInput(void); /* Read characters from the input. Only returns zero on EOF. */ extern unsigned getConsoleInput(char *buff, int nChars); // Create a copying thread that can also signal an event. // This is used both in stdin and also in Windows.execute. extern HANDLE CreateCopyPipe(HANDLE hInput, HANDLE hEvent); extern HWND hMainWindow; /* Handle to main window - NULL if none. */ extern HINSTANCE hApplicationInstance; /* Application instance */ /* DDE requests. */ extern HCONV StartDDEConversation(TCHAR *serviceName, TCHAR *topicName); extern void CloseDDEConversation(HCONV hConv); extern LRESULT ExecuteDDE(char *command, HCONV hConv); extern HANDLE hInputEvent; // Handle to console input event extern HANDLE hOldStdin; // If stdin has been provided // If the original stdin handle was missing we're using our console. #define useConsole (hOldStdin == INVALID_HANDLE_VALUE) extern void SetupDDEHandler(const TCHAR *lpszName); #endif polyml-5.7.1/libpolyml/machoexport.cpp0000644000175000017500000004331313204034553017043 0ustar daviddavid/* Title: Write out a database as a Mach object file Author: David Matthews. Copyright (c) 2006-7, 2011-2, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDDEF_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif // If we haven't got the Mach header files we shouldn't be building this. #include #include #include #include #include #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SYS_UTSNAME_H #include #endif #include "globals.h" #include "diagnostics.h" #include "sys.h" #include "machine_dep.h" #include "gc.h" #include "mpoly.h" #include "scanaddrs.h" #include "machoexport.h" #include "run_time.h" #include "version.h" #include "polystring.h" #include "timing.h" // Mach-O seems to require each section to have a discrete virtual address range // so we have to adjust various offsets to fit. void MachoExport::adjustOffset(unsigned area, POLYUNSIGNED &offset) { // Add in the offset. If sect is memTableEntries it's actually the // descriptors so doesn't have any additional offset. if (area != memTableEntries) { offset += sizeof(exportDescription)+sizeof(memoryTableEntry)*memTableEntries; for (unsigned i = 0; i < area; i++) offset += memTable[i].mtLength; } } void MachoExport::addExternalReference(void *relocAddr, const char *name) { externTable.makeEntry(name); writeRelocation(0, relocAddr, symbolNum++, true); } // Generate the address relative to the start of the segment. void MachoExport::setRelocationAddress(void *p, int32_t *reloc) { unsigned area = findArea(p); POLYUNSIGNED offset = (char*)p - (char*)memTable[area].mtAddr; *reloc = offset; } /* Get the index corresponding to an address. */ PolyWord MachoExport::createRelocation(PolyWord p, void *relocAddr) { void *addr = p.AsAddress(); unsigned addrArea = findArea(addr); POLYUNSIGNED offset = (char*)addr - (char*)memTable[addrArea].mtAddr; adjustOffset(addrArea, offset); return writeRelocation(offset, relocAddr, addrArea+1 /* Sections count from 1 */, false); } PolyWord MachoExport::writeRelocation(POLYUNSIGNED offset, void *relocAddr, unsigned symbolNumber, bool isExtern) { // It looks as though struct relocation_info entries are only used // with GENERIC_RELOC_VANILLA types. struct relocation_info relInfo; setRelocationAddress(relocAddr, &relInfo.r_address); relInfo.r_symbolnum = symbolNumber; relInfo.r_pcrel = 0; #if (SIZEOF_VOIDP == 8) relInfo.r_length = 3; // 8 bytes relInfo.r_type = X86_64_RELOC_UNSIGNED; #else relInfo.r_length = 2; // 4 bytes relInfo.r_type = GENERIC_RELOC_VANILLA; #endif relInfo.r_extern = isExtern ? 1 : 0; fwrite(&relInfo, sizeof(relInfo), 1, exportFile); relocationCount++; return PolyWord::FromUnsigned(offset); } /* This is called for each constant within the code. Print a relocation entry for the word and return a value that means that the offset is saved in original word. */ void MachoExport::ScanConstant(PolyObject *base, byte *addr, ScanRelocationKind code) { PolyWord p = GetConstantValue(addr, code); if (IS_INT(p) || p == PolyWord::FromUnsigned(0)) return; void *a = p.AsAddress(); unsigned aArea = findArea(a); // Set the value at the address to the offset relative to the symbol. POLYUNSIGNED offset = (char*)a - (char*)memTable[aArea].mtAddr; adjustOffset(aArea, offset); switch (code) { case PROCESS_RELOC_DIRECT: // 32 bit address of target { struct relocation_info reloc; setRelocationAddress(addr, &reloc.r_address); reloc.r_symbolnum = aArea+1; // Section numbers start at 1 reloc.r_pcrel = 0; #if (defined(HOSTARCHITECTURE_X86_64)) reloc.r_length = 3; // 8 bytes reloc.r_type = X86_64_RELOC_UNSIGNED; #else reloc.r_length = 2; // 4 bytes reloc.r_type = GENERIC_RELOC_VANILLA; #endif reloc.r_extern = 0; // r_symbolnum is a section number. It should be 1 if we make the IO area a common. for (unsigned i = 0; i < sizeof(PolyWord); i++) { addr[i] = (byte)(offset & 0xff); offset >>= 8; } fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } break; #if (defined(HOSTARCHITECTURE_X86) || defined(HOSTARCHITECTURE_X86_64)) case PROCESS_RELOC_I386RELATIVE: // 32 bit relative address { unsigned addrArea = findArea(addr); // If it's in the same area we don't need a relocation because the // relative offset will be unchanged. if (addrArea != aArea) { struct relocation_info reloc; setRelocationAddress(addr, &reloc.r_address); reloc.r_symbolnum = aArea+1; // Section numbers start at 1 reloc.r_pcrel = 1; reloc.r_length = 2; // 4 bytes #if (defined(HOSTARCHITECTURE_X86_64)) reloc.r_type = X86_64_RELOC_SIGNED; #else reloc.r_type = GENERIC_RELOC_VANILLA; #endif reloc.r_extern = 0; // r_symbolnum is a section number. fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; POLYUNSIGNED addrOffset = (char*)addr - (char*)memTable[addrArea].mtAddr; adjustOffset(addrArea, addrOffset); offset -= addrOffset + 4; for (unsigned i = 0; i < 4; i++) { addr[i] = (byte)(offset & 0xff); offset >>= 8; } } } break; #endif default: ASSERT(0); // Wrong type of relocation for this architecture. } } // Set the file alignment. void MachoExport::alignFile(int align) { char pad[32] = {0}; // Maximum alignment int offset = ftell(exportFile); if ((offset % align) == 0) return; fwrite(&pad, align - (offset % align), 1, exportFile); } void MachoExport::createStructsRelocation(unsigned sect, POLYUNSIGNED offset) { struct relocation_info reloc; reloc.r_address = offset; reloc.r_symbolnum = sect+1; // Section numbers start at 1 reloc.r_pcrel = 0; #if (SIZEOF_VOIDP == 8) reloc.r_length = 3; // 8 bytes reloc.r_type = X86_64_RELOC_UNSIGNED; #else reloc.r_length = 2; // 4 bytes reloc.r_type = GENERIC_RELOC_VANILLA; #endif reloc.r_extern = 0; // r_symbolnum is a section number. fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } void MachoExport::exportStore(void) { PolyWord *p; #if (SIZEOF_VOIDP == 8) struct mach_header_64 fhdr; struct segment_command_64 sHdr; struct section_64 *sections = new section_64[memTableEntries+1]; size_t sectionSize = sizeof(section_64); #else struct mach_header fhdr; struct segment_command sHdr; struct section *sections = new section[memTableEntries+1]; size_t sectionSize = sizeof(section); #endif struct symtab_command symTab; unsigned i; // Write out initial values for the headers. These are overwritten at the end. // File header memset(&fhdr, 0, sizeof(fhdr)); fhdr.filetype = MH_OBJECT; fhdr.ncmds = 2; // One for the segment and one for the symbol table. fhdr.sizeofcmds = sizeof(sHdr) + sectionSize * (memTableEntries+1) + sizeof(symTab); fhdr.flags = 0; // The machine needs to match the machine we're compiling for // even if this is actually portable code. #if (SIZEOF_VOIDP == 8) fhdr.magic = MH_MAGIC_64; // (0xfeedfacf) 64-bit magic number #else fhdr.magic = MH_MAGIC; // Feed Face (0xfeedface) #endif #if defined(HOSTARCHITECTURE_X86) fhdr.cputype = CPU_TYPE_I386; fhdr.cpusubtype = CPU_SUBTYPE_I386_ALL; #elif defined(HOSTARCHITECTURE_PPC) fhdr.cputype = CPU_TYPE_POWERPC; fhdr.cpusubtype = CPU_SUBTYPE_POWERPC_ALL; #elif defined(HOSTARCHITECTURE_X86_64) fhdr.cputype = CPU_TYPE_X86_64; fhdr.cpusubtype = CPU_SUBTYPE_X86_64_ALL; #else #error "No support for exporting on this architecture" #endif fwrite(&fhdr, sizeof(fhdr), 1, exportFile); // Write it for the moment. symbolNum = 1; // The first symbol is poly_exports // Segment header. memset(&sHdr, 0, sizeof(sHdr)); #if (SIZEOF_VOIDP == 8) sHdr.cmd = LC_SEGMENT_64; #else sHdr.cmd = LC_SEGMENT; #endif sHdr.nsects = memTableEntries+1; // One for each entry plus one for the tables. sHdr.cmdsize = sizeof(sHdr) + sectionSize * sHdr.nsects; // Add up the sections to give the file size sHdr.filesize = 0; for (i = 0; i < memTableEntries; i++) sHdr.filesize += memTable[i].mtLength; // Do we need any alignment? sHdr.filesize += sizeof(exportDescription) + memTableEntries * sizeof(memoryTableEntry); sHdr.vmsize = sHdr.filesize; // Set them the same since we don't have any "common" area. // sHdr.fileOff is set later. sHdr.maxprot = VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE; sHdr.initprot = VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE; sHdr.flags = 0; // Write it initially. fwrite(&sHdr, sizeof(sHdr), 1, exportFile); // Section header for each entry in the table POLYUNSIGNED sectAddr = sizeof(exportDescription)+sizeof(memoryTableEntry)*memTableEntries; for (i = 0; i < memTableEntries; i++) { memset(&(sections[i]), 0, sectionSize); if (memTable[i].mtFlags & MTF_WRITEABLE) { // Mutable areas ASSERT(!(memTable[i].mtFlags & MTF_EXECUTABLE)); // Executable areas can't be writable. sprintf(sections[i].sectname, "__data"); sprintf(sections[i].segname, "__DATA"); sections[i].flags = S_ATTR_LOC_RELOC | S_REGULAR; } else if (memTable[i].mtFlags & MTF_EXECUTABLE) { sprintf(sections[i].sectname, "__text"); sprintf(sections[i].segname, "__TEXT"); sections[i].flags = S_ATTR_LOC_RELOC | S_ATTR_SOME_INSTRUCTIONS | S_REGULAR; } else { sprintf(sections[i].sectname, "__const"); sprintf(sections[i].segname, "__DATA"); sections[i].flags = S_ATTR_LOC_RELOC | S_REGULAR; } sections[i].addr = sectAddr; sections[i].size = memTable[i].mtLength; sectAddr += memTable[i].mtLength; //sections[i].offset is set later //sections[i].reloff is set later //sections[i].nreloc is set later sections[i].align = 3; // 8 byte alignment // theSection.size is set later } // For the tables. memset(&(sections[memTableEntries]), 0, sectionSize); sprintf(sections[memTableEntries].sectname, "__const"); sprintf(sections[memTableEntries].segname, "__DATA"); sections[memTableEntries].addr = 0; sections[memTableEntries].size = sizeof(exportDescription)+sizeof(memoryTableEntry)*memTableEntries; sections[memTableEntries].align = 3; // 8 byte alignment // theSection.size is set later sections[memTableEntries].flags = S_ATTR_LOC_RELOC | S_ATTR_SOME_INSTRUCTIONS | S_REGULAR; // Write them out for the moment. fwrite(sections, sectionSize * (memTableEntries+1), 1, exportFile); // Symbol table header. memset(&symTab, 0, sizeof(symTab)); symTab.cmd = LC_SYMTAB; symTab.cmdsize = sizeof(symTab); //symTab.symoff is set later //symTab.nsyms is set later //symTab.stroff is set later //symTab.strsize is set later fwrite(&symTab, sizeof(symTab), 1, exportFile); // Create and write out the relocations. for (i = 0; i < memTableEntries; i++) { sections[i].reloff = ftell(exportFile); relocationCount = 0; // Create the relocation table and turn all addresses into offsets. char *start = (char*)memTable[i].mtAddr; char *end = start + memTable[i].mtLength; for (p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); if (length != 0 && obj->IsCodeObject()) machineDependent->ScanConstantsWithinCode(obj, this); relocateObject(obj); p += length; } sections[i].nreloc = relocationCount; } // Additional relocations for the descriptors. sections[memTableEntries].reloff = ftell(exportFile); relocationCount = 0; // Address of "memTable" within "exports". We can't use createRelocation because // the position of the relocation is not in either the mutable or the immutable area. createStructsRelocation(memTableEntries, offsetof(exportDescription, memTable)); // Address of "rootFunction" within "exports" unsigned rootAddrArea = findArea(rootFunction); POLYUNSIGNED rootOffset = (char*)rootFunction - (char*)memTable[rootAddrArea].mtAddr; adjustOffset(rootAddrArea, rootOffset); createStructsRelocation(rootAddrArea, offsetof(exportDescription, rootFunction)); // Addresses of the areas within memtable. for (i = 0; i < memTableEntries; i++) { createStructsRelocation(i, sizeof(exportDescription) + i * sizeof(memoryTableEntry) + offsetof(memoryTableEntry, mtAddr)); } sections[memTableEntries].nreloc = relocationCount; // The symbol table. symTab.symoff = ftell(exportFile); // Global symbols: Just one. { #if (SIZEOF_VOIDP == 8) struct nlist_64 symbol; #else struct nlist symbol; #endif memset(&symbol, 0, sizeof(symbol)); // Zero unused fields symbol.n_un.n_strx = stringTable.makeEntry("_poly_exports"); symbol.n_type = N_EXT | N_SECT; symbol.n_sect = memTableEntries+1; // Sections count from 1. symbol.n_desc = REFERENCE_FLAG_DEFINED; fwrite(&symbol, sizeof(symbol), 1, exportFile); } // External references. for (unsigned i = 0; i < externTable.stringSize; i += (unsigned)strlen(externTable.strings+i) + 1) { const char *symbolName = externTable.strings+i; #if (SIZEOF_VOIDP == 8) struct nlist_64 symbol; #else struct nlist symbol; #endif memset(&symbol, 0, sizeof(symbol)); // Zero unused fields // Have to add an underscore to the symbols. TempCString fullSymbol; fullSymbol = (char*)malloc(strlen(symbolName) + 2); if (fullSymbol == 0) throw MemoryException(); sprintf(fullSymbol, "_%s", symbolName); symbol.n_un.n_strx = stringTable.makeEntry(fullSymbol); symbol.n_type = N_EXT | N_UNDF; symbol.n_sect = NO_SECT; symbol.n_desc = REFERENCE_FLAG_UNDEFINED_NON_LAZY; fwrite(&symbol, sizeof(symbol), 1, exportFile); } symTab.nsyms = symbolNum; // The symbol name table symTab.stroff = ftell(exportFile); fwrite(stringTable.strings, stringTable.stringSize, 1, exportFile); symTab.strsize = stringTable.stringSize; alignFile(4); exportDescription exports; memset(&exports, 0, sizeof(exports)); exports.structLength = sizeof(exportDescription); exports.memTableSize = sizeof(memoryTableEntry); exports.memTableEntries = memTableEntries; exports.memTable = (memoryTableEntry *)sizeof(exportDescription); // It follows immediately after this. // Set the value to be the offset relative to the base of the area. We have set a relocation // already which will add the base of the area. exports.rootFunction = (void*)rootOffset; exports.timeStamp = getBuildTime(); exports.architecture = machineDependent->MachineArchitecture(); exports.rtsVersion = POLY_version_number; sections[memTableEntries].offset = ftell(exportFile); fwrite(&exports, sizeof(exports), 1, exportFile); POLYUNSIGNED addrOffset = sizeof(exports)+sizeof(memoryTableEntry)*memTableEntries; for (i = 0; i < memTableEntries; i++) { void *save = memTable[i].mtAddr; memTable[i].mtAddr = (void*)addrOffset; // Set this to the relative address. addrOffset += memTable[i].mtLength; fwrite(&memTable[i], sizeof(memoryTableEntry), 1, exportFile); memTable[i].mtAddr = save; } // Now the binary data. for (i = 0; i < memTableEntries; i++) { alignFile(4); sections[i].offset = ftell(exportFile); fwrite(memTable[i].mtAddr, 1, memTable[i].mtLength, exportFile); } // Rewind to rewrite the headers with the actual offsets. rewind(exportFile); fwrite(&fhdr, sizeof(fhdr), 1, exportFile); // File header fwrite(&sHdr, sizeof(sHdr), 1, exportFile); // Segment header fwrite(sections, sectionSize * (memTableEntries+1), 1, exportFile); // Section headers fwrite(&symTab, sizeof(symTab), 1, exportFile); // Symbol table header fclose(exportFile); exportFile = NULL; delete[](sections); } polyml-5.7.1/libpolyml/gctaskfarm.cpp0000644000175000017500000002070213204034553016631 0ustar daviddavid/* Title: Task farm for Multi-Threaded Garbage Collector Copyright (c) 2010 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "gctaskfarm.h" #include "diagnostics.h" #include "timing.h" static GCTaskId gTask; GCTaskId *globalTask = &gTask; GCTaskFarm::GCTaskFarm(): workLock("GC task farm work") { queueSize = queueIn = queuedItems = 0; workQueue = 0; terminate = false; threadCount = activeThreadCount = 0; #if (defined(HAVE_PTHREAD_H) || defined(HAVE_WINDOWS_H)) threadHandles = 0; #endif } GCTaskFarm::~GCTaskFarm() { Terminate(); free(workQueue); #if (defined(HAVE_PTHREAD_H) || defined(HAVE_WINDOWS_H)) free(threadHandles); #endif } bool GCTaskFarm::Initialise(unsigned thrdCount, unsigned qSize) { terminate = false; if (!waitForWork.Init(0, thrdCount)) return false; workQueue = (queue_entry*)calloc(qSize, sizeof(queue_entry)); if (workQueue == 0) return false; #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) queueSize = qSize; threadHandles = (pthread_t*)calloc(thrdCount, sizeof(pthread_t)); if (threadHandles == 0) return false; #elif defined(HAVE_WINDOWS_H) queueSize = qSize; threadHandles = (HANDLE*)calloc(thrdCount, sizeof(HANDLE)); if (threadHandles == 0) return false; #else queueSize = 0; #endif // Create the worker threads. for (unsigned i = 0; i < thrdCount; i++) { // Fork a thread #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) // Create a thread that isn't joinable since we don't want to wait // for it to finish. pthread_t pthreadId; bool isError = pthread_create(&pthreadId, NULL, WorkerThreadFunction, this) != 0; if (isError) break; threadHandles[threadCount++] = pthreadId; #elif defined(HAVE_WINDOWS_H) DWORD dwThrdId; // Have to provide this although we don't use it. HANDLE threadHandle = CreateThread(NULL, 0, WorkerThreadFunction, this, 0, &dwThrdId); if (threadHandle == NULL) break; threadHandles[threadCount++] = threadHandle; #endif } return true; } void GCTaskFarm::Terminate() { terminate = true; // Increment the semaphore by the number of threads to release them all. for (unsigned i = 0; i < threadCount; i++) waitForWork.Signal(); // Wait for the threads to terminate. #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) for (unsigned j = 0; j < threadCount; j++) pthread_join(threadHandles[j], NULL); #elif defined(HAVE_WINDOWS_H) if (threadCount != 0) WaitForMultipleObjects(threadCount, threadHandles, TRUE, 10000); #endif } // Add work to the queue. Returns true if it succeeds. bool GCTaskFarm::AddWork(gctask work, void *arg1, void *arg2) { bool wantSignal = false; { PLocker l(&workLock); if (queuedItems == queueSize) return false; // Queue is full workQueue[queueIn].task = work; workQueue[queueIn].arg1 = arg1; workQueue[queueIn].arg2 = arg2; queueIn++; if (queueIn == queueSize) queueIn = 0; queuedItems++; wantSignal = queuedItems <= threadCount; } if (wantSignal) waitForWork.Signal(); return true; } // Schedule this as a task or run it immediately if the queue is full. void GCTaskFarm::AddWorkOrRunNow(gctask work, void *arg1, void *arg2) { if (! AddWork(work, arg1, arg2)) (*work)(globalTask, arg1, arg2); } void GCTaskFarm::ThreadFunction() { GCTaskId myTaskId; #if (defined(_WIN32) && ! defined(__CYGWIN__)) DWORD startActive = GetTickCount(); #else struct timeval startTime; gettimeofday(&startTime, NULL); #endif workLock.Lock(); activeThreadCount++; while (! terminate) { // Invariant: We have the lock and the activeThreadCount includes this thread. // Find some work. if (queuedItems > 0) { // There is work unsigned outPos; if (queuedItems > queueIn) outPos = queueIn+queueSize-queuedItems; else outPos = queueIn-queuedItems; gctask work = workQueue[outPos].task; void *arg1 = workQueue[outPos].arg1; void *arg2 = workQueue[outPos].arg2; workQueue[outPos].task = 0; queuedItems--; ASSERT(work != 0); workLock.Unlock(); (*work)(&myTaskId, arg1, arg2); workLock.Lock(); } else { activeThreadCount--; // We're no longer active // If there is no work and we're the last active thread signal the // main thread that the queue is empty bool wantSignal = activeThreadCount == 0; if (wantSignal) waitForCompletion.Signal(); // Now release the lock. In our Windows partial implementation of // condition vars we assume that signalling is done with the lock // still held. workLock.Unlock(); if (debugOptions & DEBUG_GCTASKS) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) Log("GCTask: Thread %p blocking after %u milliseconds\n", &myTaskId, GetTickCount() - startActive); #else struct timeval endTime; gettimeofday(&endTime, NULL); subTimevals(&endTime, &startTime); Log("GCTask: Thread %p blocking after %0.4f seconds\n", &myTaskId, (float)endTime.tv_sec + (float)endTime.tv_usec / 1.0E6); #endif } if (terminate) return; // Block until there's work. waitForWork.Wait(); // We've been woken up if (debugOptions & DEBUG_GCTASKS) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) startActive = GetTickCount(); #else gettimeofday(&startTime, NULL); #endif Log("GCTask: Thread %p resuming\n", &myTaskId); } workLock.Lock(); activeThreadCount++; } } activeThreadCount--; workLock.Unlock(); } #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) void *GCTaskFarm::WorkerThreadFunction(void *parameter) { GCTaskFarm *t = (GCTaskFarm *)parameter; t->ThreadFunction(); return 0; } #elif defined(HAVE_WINDOWS_H) DWORD WINAPI GCTaskFarm::WorkerThreadFunction(void *parameter) { GCTaskFarm *t = (GCTaskFarm *)parameter; t->ThreadFunction(); return 0; } #endif // Wait until the queue is empty. void GCTaskFarm::WaitForCompletion(void) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) DWORD startWait; if (debugOptions & DEBUG_GCTASKS) startWait = GetTickCount(); #else struct timeval startWait; if (debugOptions & DEBUG_GCTASKS) gettimeofday(&startWait, NULL); #endif workLock.Lock(); while (activeThreadCount > 0 || queuedItems > 0) waitForCompletion.Wait(&workLock); workLock.Unlock(); if (debugOptions & DEBUG_GCTASKS) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) Log("GCTask: Threads completed after %u milliseconds\n", GetTickCount()-startWait); #else struct timeval endWait; gettimeofday(&endWait, NULL); subTimevals(&endWait, &startWait); Log("GCTask: Threads completed after %0.4f seconds\n", (float)endWait.tv_sec + (float)endWait.tv_usec / 1.0E6); #endif } } polyml-5.7.1/libpolyml/polystring.h0000644000175000017500000000702213204034553016366 0ustar daviddavid/* Title: polystring.h - String functions and types Copyright (c) 2006, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef POLYSTRING_H #define POLYSTRING_H #include "globals.h" // For PolyObject class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; // A string object. class PolyStringObject: public PolyObject { public: POLYUNSIGNED length; char chars[1]; }; inline POLYUNSIGNED PolyStringLength(PolyWord ps) { return ((PolyStringObject*)ps.AsObjPtr())->length; } // We often want to be able to allocate a temporary C string from a Poly string // and have it automatically deallocated when the context has been exited. extern PolyWord EmptyString(TaskData *mdTaskData); /* PolyStringObject functions */ extern PolyWord C_string_to_Poly(TaskData *mdTaskData, const char *buffer, size_t buffLen = -1); extern POLYUNSIGNED Poly_string_to_C(PolyWord ps, char *buff, POLYUNSIGNED bufflen); extern char *Poly_string_to_C_alloc(PolyWord ps, size_t extraChars = 0); extern Handle convert_string_list(TaskData *mdTaskData, int count, char **strings); // Dynamically allocated strings with automatic freeing. // These are mainly used for file-names. class TempCString { public: TempCString(char *p = 0): m_value(p) {} TempCString(PolyWord ps): m_value(Poly_string_to_C_alloc(ps)) {} ~TempCString(); operator char*() { return m_value; } char* operator = (char* p) { return (m_value = p); } private: char *m_value; }; #if (defined(_WIN32) && defined(UNICODE)) extern unsigned int codePage; extern bool setWindowsCodePage(const TCHAR *codePageArg); #ifdef HAVE_TCHAR_H #include #else #define WCHAR short #define TCHAR char #endif extern PolyWord C_string_to_Poly(TaskData *mdTaskData, const WCHAR *buffer, size_t buffLen = -1); extern POLYUNSIGNED Poly_string_to_C(PolyWord ps, WCHAR *buff, POLYUNSIGNED bufflen); extern WCHAR *Poly_string_to_U_alloc(PolyWord ps, size_t extraChars = 0); extern Handle convert_string_list(TaskData *mdTaskData, int count, WCHAR **strings); // Poly_string_to_T_alloc returns a Unicode string in Unicode and char string otherwise. #define Poly_string_to_T_alloc Poly_string_to_U_alloc // Unicode on Windows, character strings elsewhere. class TempString { public: TempString(TCHAR *p = 0): m_value(p) {} TempString(PolyWord ps): m_value(Poly_string_to_T_alloc(ps)) {} ~TempString(); operator TCHAR*() { return m_value; } TCHAR* operator = (TCHAR* p) { return (m_value = p); } private: TCHAR *m_value; }; #else #define Poly_string_to_T_alloc Poly_string_to_C_alloc #define TempString TempCString #endif extern char **stringListToVector(Handle list); extern void freeStringVector(char **vec); extern void print_string(PolyWord s); // These should no longer be used in the RTS except internally. extern Handle strconcatc(TaskData *mdTaskData, Handle x, Handle y); #endif /* POLYSTRING_H */ polyml-5.7.1/libpolyml/network.h0000644000175000017500000000154513204034553015651 0ustar daviddavid/* Title: Network functions. Copyright (c) 2000, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _NETWORK_H #define _NETWORK_H extern struct _entrypts networkingEPT[]; #endif polyml-5.7.1/libpolyml/basicio.h0000644000175000017500000000164313204034553015570 0ustar daviddavid/* Title: Basic IO. Copyright (c) 2000 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef BASICIO_H #define BASICIO_H extern struct _entrypts basicIOEPT[]; #endif /* BASICIO_H */ polyml-5.7.1/libpolyml/locking.h0000644000175000017500000000724513204034553015611 0ustar daviddavid/* Title: Mutex and Condition Variable library. Copyright (c) 2007, 2012 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef LOCKING_H_DEFINED #define LOCKING_H_DEFINED #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_WINDOWS_H #include #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) // Don't include semaphore.h on Mingw. It's provided but doesn't compile. #include #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) // Don't include pthread if this is native Windows and not Cygwin #include #endif // Simple Mutex. class PLock { public: PLock(const char *n = 0); ~PLock(); void Lock(void); // Lock the mutex void Unlock(void); // Unlock the mutex bool Trylock(void); // Try to lock the mutex - returns true if succeeded private: #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) pthread_mutex_t lock; #elif defined(HAVE_WINDOWS_H) CRITICAL_SECTION lock; #endif // Debugging info. const char *lockName; unsigned lockCount; friend class PCondVar; }; // Lock a mutex and automatically unlock it in the destructor. // This can be used in a function to lock a mutex and unlock it // when the function either returns normally or raises an exception. class PLocker { public: PLocker(PLock *lock): m_lock(lock) { m_lock->Lock(); } ~PLocker() { m_lock->Unlock(); } private: PLock *m_lock; }; // Simple condition variable. N.B. The Windows code does not // support multiple threads blocking on this condition variable. class PCondVar { public: PCondVar(); ~PCondVar(); void Wait(PLock *pLock); // Wait indefinitely. Drops the lock and reaquires it. // Wait for a signal or until the time. The argument is an absolute time // represented as a struct timespec in Unix and a FILETIME in Windows. #if (defined(_WIN32) && ! defined(__CYGWIN__)) void WaitUntil(PLock *pLock, const FILETIME *timeArg); #else void WaitUntil(PLock *pLock, const timespec *timeArg); #endif // Wait for a time. This is used internally in the RTS. bool WaitFor(PLock *pLock, unsigned milliseconds); // N.B. Signal MUST be called only with the lock held. void Signal(void); // Wake up the waiting thread. private: #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) pthread_cond_t cond; #elif defined(HAVE_WINDOWS_H) CONDITION_VARIABLE cond; #endif }; // Semaphore. Wrapper for Posix semaphore or Windows semaphore. class PSemaphore { public: PSemaphore(); ~PSemaphore(); bool Init(unsigned init, unsigned max); bool Wait(void); void Signal(void); private: #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) sem_t localSema, *sema; bool isLocal; #elif defined(HAVE_WINDOWS_H) HANDLE sema; #endif }; #endif polyml-5.7.1/libpolyml/polyml.pc.in0000644000175000017500000000046013204034553016247 0ustar daviddavidprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ bindir=@bindir@ Name: Poly/ML Description: Poly/ML run-time and main program libraries URL: http://www.polyml.org/ Version: @PACKAGE_VERSION@ Requires: Libs: -L${libdir} -lpolymain -lpolyml @LIBS@ Cflags: -I${includedir} polyml-5.7.1/libpolyml/processes.cpp0000644000175000017500000024526513204034553016532 0ustar daviddavid/* Title: Thread functions Author: David C.J. Matthews Copyright (c) 2007,2008,2013-15, 2017 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_LIMITS_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_PROCESS_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_UNISTD_H #include // Want unistd for _SC_NPROCESSORS_ONLN at least #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_WINDOWS_H #include #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_LIBPTHREAD) && defined(HAVE_PTHREAD_H)) #define HAVE_PTHREAD 1 #include #endif #ifdef HAVE_SYS_SYSCTL_H // Used determine number of processors in Mac OS X. #include #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #endif #include /************************************************************************ * * Include runtime headers * ************************************************************************/ #include "globals.h" #include "gc.h" #include "mpoly.h" #include "arb.h" #include "machine_dep.h" #include "diagnostics.h" #include "processes.h" #include "run_time.h" #include "sys.h" #include "sighandler.h" #include "scanaddrs.h" #include "save_vec.h" #include "rts_module.h" #include "noreturn.h" #include "memmgr.h" #include "locking.h" #include "profiling.h" #include "sharedata.h" #include "exporter.h" #include "statistics.h" #include "rtsentry.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include "Console.h" #endif extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadKillSelf(PolyObject *threadId); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadMutexBlock(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadMutexUnlock(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadCondVarWait(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadCondVarWaitUntil(PolyObject *threadId, PolyWord lockArg, PolyWord timeArg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadCondVarWake(PolyWord targetThread); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadForkThread(PolyObject *threadId, PolyWord function, PolyWord attrs, PolyWord stack); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadIsActive(PolyWord targetThread); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadInterruptThread(PolyWord targetThread); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadKillThread(PolyWord targetThread); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadBroadcastInterrupt(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadTestInterrupt(PolyWord threadId); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadNumProcessors(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadNumPhysicalProcessors(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyThreadMaxStackSize(PolyObject *threadId, PolyWord newSize); } #define SAVE(x) taskData->saveVec.push(x) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) // These values are stored in the second word of thread id object as // a tagged integer. They may be set and read by the thread in the ML // code. #define PFLAG_BROADCAST 1 // If set, accepts a broadcast // How to handle interrrupts #define PFLAG_IGNORE 0 // Ignore interrupts completely #define PFLAG_SYNCH 2 // Handle synchronously #define PFLAG_ASYNCH 4 // Handle asynchronously #define PFLAG_ASYNCH_ONCE 6 // First handle asynchronously then switch to synch. #define PFLAG_INTMASK 6 // Mask of the above bits struct _entrypts processesEPT[] = { { "PolyThreadGeneral", (polyRTSFunction)&PolyThreadGeneral}, { "PolyThreadKillSelf", (polyRTSFunction)&PolyThreadKillSelf}, { "PolyThreadMutexBlock", (polyRTSFunction)&PolyThreadMutexBlock}, { "PolyThreadMutexUnlock", (polyRTSFunction)&PolyThreadMutexUnlock}, { "PolyThreadCondVarWait", (polyRTSFunction)&PolyThreadCondVarWait}, { "PolyThreadCondVarWaitUntil", (polyRTSFunction)&PolyThreadCondVarWaitUntil}, { "PolyThreadCondVarWake", (polyRTSFunction)&PolyThreadCondVarWake}, { "PolyThreadForkThread", (polyRTSFunction)&PolyThreadForkThread}, { "PolyThreadIsActive", (polyRTSFunction)&PolyThreadIsActive}, { "PolyThreadInterruptThread", (polyRTSFunction)&PolyThreadInterruptThread}, { "PolyThreadKillThread", (polyRTSFunction)&PolyThreadKillThread}, { "PolyThreadBroadcastInterrupt", (polyRTSFunction)&PolyThreadBroadcastInterrupt}, { "PolyThreadTestInterrupt", (polyRTSFunction)&PolyThreadTestInterrupt}, { "PolyThreadNumProcessors", (polyRTSFunction)&PolyThreadNumProcessors}, { "PolyThreadNumPhysicalProcessors",(polyRTSFunction)&PolyThreadNumPhysicalProcessors}, { "PolyThreadMaxStackSize", (polyRTSFunction)&PolyThreadMaxStackSize}, { NULL, NULL} // End of list. }; class Processes: public ProcessExternal, public RtsModule { public: Processes(); virtual void Init(void); virtual void Stop(void); void GarbageCollect(ScanAddress *process); public: void BroadcastInterrupt(void); void BeginRootThread(PolyObject *rootFunction); void Exit(int n); // Request all ML threads to exit and set the process result code. // Called when a thread has completed - doesn't return. virtual NORETURNFN(void ThreadExit(TaskData *taskData)); // Called when a thread may block. Returns some time later when perhaps // the input is available. virtual void ThreadPauseForIO(TaskData *taskData, Waiter *pWait); // Return the task data for the current thread. virtual TaskData *GetTaskDataForThread(void); // Create a new task data object for the current thread. virtual TaskData *CreateNewTaskData(Handle threadId, Handle threadFunction, Handle args, PolyWord flags); // ForkFromRTS. Creates a new thread from within the RTS. virtual bool ForkFromRTS(TaskData *taskData, Handle proc, Handle arg); // Create a new thread. The "args" argument is only used for threads // created in the RTS by the signal handler. Handle ForkThread(TaskData *taskData, Handle threadFunction, Handle args, PolyWord flags, PolyWord stacksize); // Process general RTS requests from ML. Handle ThreadDispatch(TaskData *taskData, Handle args, Handle code); virtual void ThreadUseMLMemory(TaskData *taskData); virtual void ThreadReleaseMLMemory(TaskData *taskData); virtual poly_exn* GetInterrupt(void) { return interrupt_exn; } // If the schedule lock is already held we need to use these functions. void ThreadUseMLMemoryWithSchedLock(TaskData *taskData); void ThreadReleaseMLMemoryWithSchedLock(TaskData *taskData); // Requests from the threads for actions that need to be performed by // the root thread. Make the request and wait until it has completed. virtual void MakeRootRequest(TaskData *taskData, MainThreadRequest *request); // Deal with any interrupt or kill requests. virtual bool ProcessAsynchRequests(TaskData *taskData); // Process an interrupt request synchronously. virtual void TestSynchronousRequests(TaskData *taskData); // Process any events, synchronous or asynchronous. virtual void TestAnyEvents(TaskData *taskData); // Set a thread to be interrupted or killed. Wakes up the // thread if necessary. MUST be called with schedLock held. void MakeRequest(TaskData *p, ThreadRequests request); // Profiling control. virtual void StartProfiling(void); virtual void StopProfiling(void); #ifdef HAVE_WINDOWS_H // Windows: Called every millisecond while profiling is on. void ProfileInterrupt(void); #else // Unix: Start a profile timer for a thread. void StartProfilingTimer(void); #endif // Memory allocation. Tries to allocate space. If the allocation succeeds it // may update the allocation values in the taskData object. If the heap is exhausted // it may set this thread (or other threads) to raise an exception. PolyWord *FindAllocationSpace(TaskData *taskData, POLYUNSIGNED words, bool alwaysInSeg); // Find a task that matches the specified identifier and returns // it if it exists. MUST be called with schedLock held. TaskData *TaskForIdentifier(PolyObject *taskId); // Signal handling support. The ML signal handler thread blocks until it is // woken up by the signal detection thread. virtual bool WaitForSignal(TaskData *taskData, PLock *sigLock); virtual void SignalArrived(void); virtual void SetSingleThreaded(void) { singleThreaded = true; } // Operations on mutexes void MutexBlock(TaskData *taskData, Handle hMutex); void MutexUnlock(TaskData *taskData, Handle hMutex); // Operations on condition variables. void WaitInfinite(TaskData *taskData, Handle hMutex); void WaitUntilTime(TaskData *taskData, Handle hMutex, Handle hTime); bool WakeThread(PolyObject *targetThread); // Generally, the system runs with multiple threads. After a // fork, though, there is only one thread. bool singleThreaded; // Each thread has an entry in this array. TaskData **taskArray; unsigned taskArraySize; // Current size of the array. /* schedLock: This lock must be held when making scheduling decisions. It must also be held before adding items to taskArray, removing them or scanning the array. It must also be held before deleting a TaskData object or using it in a thread other than the "owner" */ PLock schedLock; #ifdef HAVE_PTHREAD pthread_key_t tlsId; #elif defined(HAVE_WINDOWS_H) DWORD tlsId; #endif // We make an exception packet for Interrupt and store it here. // This exception can be raised if we run out of store so we need to // make sure we have the packet before we do. poly_exn *interrupt_exn; /* initialThreadWait: The initial thread waits on this for wake-ups from the ML threads requesting actions such as GC or close-down. */ PCondVar initialThreadWait; // A requesting thread sets this to indicate the request. This value // is only reset once the request has been satisfied. MainThreadRequest *threadRequest; PCondVar mlThreadWait; // All the threads block on here until the request has completed. int exitResult; bool exitRequest; // Shutdown locking. void CrowBarFn(void); PLock shutdownLock; PCondVar crowbarLock; bool crowbarRunning; #if (defined(HAVE_PTHREAD)) pthread_t crowBarThreadId; #elif defined(HAVE_WINDOWS_H) HANDLE hCrowBarThread; #endif #ifdef HAVE_WINDOWS_H // Used in profiling HANDLE hStopEvent; /* Signalled to stop all threads. */ HANDLE profilingHd; HANDLE mainThreadHandle; // Handle for main thread LONGLONG lastCPUTime; // CPU used by main thread. #endif TaskData *sigTask; // Pointer to current signal task. }; // Global process data. static Processes processesModule; ProcessExternal *processes = &processesModule; Processes::Processes(): singleThreaded(false), taskArray(0), taskArraySize(0), schedLock("Scheduler"), interrupt_exn(0), threadRequest(0), exitResult(0), exitRequest(false), crowbarRunning(false), sigTask(0) { #if (defined(HAVE_PTHREAD)) #elif defined(HAVE_WINDOWS_H) hCrowBarThread = NULL; #endif #ifdef HAVE_WINDOWS_H Waiter::hWakeupEvent = NULL; hStopEvent = NULL; profilingHd = NULL; lastCPUTime = 0; mainThreadHandle = NULL; #endif } enum _mainThreadPhase mainThreadPhase = MTP_USER_CODE; // Get the attribute flags. static POLYUNSIGNED ThreadAttrs(TaskData *taskData) { return UNTAGGED_UNSIGNED(taskData->threadObject->flags); } // General interface to thread. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyThreadGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = processesModule.ThreadDispatch(taskData, pushedArg, pushedCode); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyThreadMutexBlock(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); if (profileMode == kProfileMutexContention) taskData->addProfileCount(1); try { processesModule.MutexBlock(taskData, pushedArg); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } POLYUNSIGNED PolyThreadMutexUnlock(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); try { processesModule.MutexUnlock(taskData, pushedArg); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } /* A mutex was locked i.e. the count was ~1 or less. We will have set it to ~1. This code blocks if the count is still ~1. It does actually return if another thread tries to lock the mutex and hasn't yet set the value to ~1 but that doesn't matter since whenever we return we simply try to get the lock again. */ void Processes::MutexBlock(TaskData *taskData, Handle hMutex) { schedLock.Lock(); // We have to check the value again with schedLock held rather than // simply waiting because otherwise the unlocking thread could have // set the variable back to 1 (unlocked) and signalled any waiters // before we actually got to wait. if (UNTAGGED(DEREFHANDLE(hMutex)->Get(0)) < 0) { // Set this so we can see what we're blocked on. taskData->blockMutex = DEREFHANDLE(hMutex); // Now release the ML memory. A GC can start. ThreadReleaseMLMemoryWithSchedLock(taskData); // Wait until we're woken up. We mustn't block if we have been // interrupted, and are processing interrupts asynchronously, or // we've been killed. switch (taskData->requests) { case kRequestKill: // We've been killed. Handle this later. break; case kRequestInterrupt: { // We've been interrupted. POLYUNSIGNED attrs = ThreadAttrs(taskData) & PFLAG_INTMASK; if (attrs == PFLAG_ASYNCH || attrs == PFLAG_ASYNCH_ONCE) break; // If we're ignoring interrupts or handling them synchronously // we don't do anything here. } case kRequestNone: globalStats.incCount(PSC_THREADS_WAIT_MUTEX); taskData->threadLock.Wait(&schedLock); globalStats.decCount(PSC_THREADS_WAIT_MUTEX); } taskData->blockMutex = 0; // No longer blocked. ThreadUseMLMemoryWithSchedLock(taskData); } // Return and try and get the lock again. schedLock.Unlock(); // Test to see if we have been interrupted and if this thread // processes interrupts asynchronously we should raise an exception // immediately. Perhaps we do that whenever we exit from the RTS. } /* Unlock a mutex. Called after incrementing the count and discovering that at least one other thread has tried to lock it. We may need to wake up threads that are blocked. */ void Processes::MutexUnlock(TaskData *taskData, Handle hMutex) { // The caller has already set the variable to 1 (unlocked). // We need to acquire schedLock so that we can // be sure that any thread that is trying to lock sees either // the updated value (and so doesn't wait) or has successfully // waited on its threadLock (and so will be woken up). schedLock.Lock(); // Unlock any waiters. for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; // If the thread is blocked on this mutex we can signal the thread. if (p && p->blockMutex == DEREFHANDLE(hMutex)) p->threadLock.Signal(); } schedLock.Unlock(); } POLYUNSIGNED PolyThreadCondVarWait(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); try { processesModule.WaitInfinite(taskData, pushedArg); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } POLYUNSIGNED PolyThreadCondVarWaitUntil(PolyObject *threadId, PolyWord lockArg, PolyWord timeArg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedLockArg = taskData->saveVec.push(lockArg); Handle pushedTimeArg = taskData->saveVec.push(timeArg); try { processesModule.WaitUntilTime(taskData, pushedLockArg, pushedTimeArg); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } // Atomically drop a mutex and wait for a wake up. // It WILL NOT RAISE AN EXCEPTION unless it is set to handle exceptions // asynchronously (which it shouldn't do if the ML caller code is correct). // It may return as a result of any of the following: // an explicit wake up. // an interrupt, either direct or broadcast // a trap i.e. a request to handle an asynchronous event. void Processes::WaitInfinite(TaskData *taskData, Handle hMutex) { schedLock.Lock(); // Atomically release the mutex. This is atomic because we hold schedLock // so no other thread can call signal or broadcast. Handle decrResult = taskData->AtomicIncrement(hMutex); if (UNTAGGED(decrResult->Word()) != 1) { taskData->AtomicReset(hMutex); // The mutex was locked so we have to release any waiters. // Unlock any waiters. for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; // If the thread is blocked on this mutex we can signal the thread. if (p && p->blockMutex == DEREFHANDLE(hMutex)) p->threadLock.Signal(); } } // Wait until we're woken up. Don't block if we have been interrupted // or killed. if (taskData->requests == kRequestNone) { // Now release the ML memory. A GC can start. ThreadReleaseMLMemoryWithSchedLock(taskData); globalStats.incCount(PSC_THREADS_WAIT_CONDVAR); taskData->threadLock.Wait(&schedLock); globalStats.decCount(PSC_THREADS_WAIT_CONDVAR); // We want to use the memory again. ThreadUseMLMemoryWithSchedLock(taskData); } schedLock.Unlock(); } // Atomically drop a mutex and wait for a wake up or a time to wake up void Processes::WaitUntilTime(TaskData *taskData, Handle hMutex, Handle hWakeTime) { // Convert the time into the correct format for WaitUntil before acquiring // schedLock. div_longc could do a GC which requires schedLock. #if (defined(_WIN32) && ! defined(__CYGWIN__)) // On Windows it is the number of 100ns units since the epoch FILETIME tWake; getFileTimeFromArb(taskData, hWakeTime, &tWake); #else // Unix style times. struct timespec tWake; // On Unix we represent times as a number of microseconds. Handle hMillion = Make_arbitrary_precision(taskData, 1000000); tWake.tv_sec = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hWakeTime))); tWake.tv_nsec = 1000*get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hWakeTime))); #endif schedLock.Lock(); // Atomically release the mutex. This is atomic because we hold schedLock // so no other thread can call signal or broadcast. Handle decrResult = taskData->AtomicIncrement(hMutex); if (UNTAGGED(decrResult->Word()) != 1) { taskData->AtomicReset(hMutex); // The mutex was locked so we have to release any waiters. // Unlock any waiters. for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; // If the thread is blocked on this mutex we can signal the thread. if (p && p->blockMutex == DEREFHANDLE(hMutex)) p->threadLock.Signal(); } } // Wait until we're woken up. Don't block if we have been interrupted // or killed. if (taskData->requests == kRequestNone) { // Now release the ML memory. A GC can start. ThreadReleaseMLMemoryWithSchedLock(taskData); globalStats.incCount(PSC_THREADS_WAIT_CONDVAR); (void)taskData->threadLock.WaitUntil(&schedLock, &tWake); globalStats.decCount(PSC_THREADS_WAIT_CONDVAR); // We want to use the memory again. ThreadUseMLMemoryWithSchedLock(taskData); } schedLock.Unlock(); } bool Processes::WakeThread(PolyObject *targetThread) { bool result = false; // Default to failed. // Acquire the schedLock first. This ensures that this is // atomic with respect to waiting. schedLock.Lock(); TaskData *p = TaskForIdentifier(targetThread); if (p && p->threadObject == targetThread) { POLYUNSIGNED attrs = ThreadAttrs(p) & PFLAG_INTMASK; if (p->requests == kRequestNone || (p->requests == kRequestInterrupt && attrs == PFLAG_IGNORE)) { p->threadLock.Signal(); result = true; } } schedLock.Unlock(); return result; } POLYUNSIGNED PolyThreadCondVarWake(PolyWord targetThread) { if (processesModule.WakeThread(targetThread.AsObjPtr())) return TAGGED(1).AsUnsigned(); else return TAGGED(0).AsUnsigned(); } // Test if a thread is active. POLYUNSIGNED PolyThreadIsActive(PolyWord targetThread) { processesModule.schedLock.Lock(); TaskData *p = processesModule.TaskForIdentifier(targetThread.AsObjPtr()); processesModule.schedLock.Unlock(); if (p != 0) return TAGGED(1).AsUnsigned(); else return TAGGED(0).AsUnsigned(); } // Send an interrupt to a specific thread POLYUNSIGNED PolyThreadInterruptThread(PolyWord targetThread) { processesModule.schedLock.Lock(); TaskData *p = processesModule.TaskForIdentifier(targetThread.AsObjPtr()); if (p) processesModule.MakeRequest(p, kRequestInterrupt); processesModule.schedLock.Unlock(); // If the thread cannot be identified return false. // The caller can then raise an exception if (p == 0) return TAGGED(0).AsUnsigned(); else return TAGGED(1).AsUnsigned(); } // Kill a specific thread POLYUNSIGNED PolyThreadKillThread(PolyWord targetThread) { processesModule.schedLock.Lock(); TaskData *p = processesModule.TaskForIdentifier(targetThread.AsObjPtr()); if (p) processesModule.MakeRequest(p, kRequestKill); processesModule.schedLock.Unlock(); // If the thread cannot be identified return false. // The caller can then raise an exception if (p == 0) return TAGGED(0).AsUnsigned(); else return TAGGED(1).AsUnsigned(); } POLYUNSIGNED PolyThreadBroadcastInterrupt(void) { processesModule.BroadcastInterrupt(); return TAGGED(0).AsUnsigned(); } POLYUNSIGNED PolyThreadTestInterrupt(PolyWord threadId) { TaskData *taskData = TaskData::FindTaskForId(threadId.AsObjPtr()); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); try { processesModule.TestSynchronousRequests(taskData); // Also process any asynchronous requests that may be pending. // These will be handled "soon" but if we have just switched from deferring // interrupts this guarantees that any deferred interrupts will be handled now. if (processesModule.ProcessAsynchRequests(taskData)) throw IOException(); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } // Return the number of processors. // Returns 1 if there is any problem. POLYUNSIGNED PolyThreadNumProcessors(void) { return TAGGED(NumberOfProcessors()).AsUnsigned(); } // Return the number of physical processors. // Returns 0 if there is any problem. POLYUNSIGNED PolyThreadNumPhysicalProcessors(void) { return TAGGED(NumberOfPhysicalProcessors()).AsUnsigned(); } // Set the maximum stack size. POLYUNSIGNED PolyThreadMaxStackSize(PolyObject *threadId, PolyWord newSize) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); try { taskData->threadObject->mlStackSize = newSize; if (newSize != TAGGED(0)) { POLYUNSIGNED current = taskData->currentStackSpace(); // Current size in words POLYUNSIGNED newWords = getPolyUnsigned(taskData, newSize); if (current > newWords) raise_exception0(taskData, EXC_interrupt); } } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } // Old dispatch function. This is only required because the pre-built compiler // may use some of these e.g. fork. Handle Processes::ThreadDispatch(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORDHANDLE(code)); TaskData *ptaskData = taskData; switch (c) { case 1: MutexBlock(taskData, args); return SAVE(TAGGED(0)); case 2: MutexUnlock(taskData, args); return SAVE(TAGGED(0)); case 7: // Fork a new thread. The arguments are the function to run and the attributes. return ForkThread(ptaskData, SAVE(args->WordP()->Get(0)), (Handle)0, args->WordP()->Get(1), // For backwards compatibility we check the length here args->WordP()->Length() <= 2 ? TAGGED(0) : args->WordP()->Get(2)); case 10: // Broadcast an interrupt to all threads that are interested. BroadcastInterrupt(); return SAVE(TAGGED(0)); default: { char msg[100]; sprintf(msg, "Unknown thread function: %u", c); raise_fail(taskData, msg); return 0; } } } // Fill unused allocation space with a dummy object to preserve the invariant // that memory is always valid. void TaskData::FillUnusedSpace(void) { if (allocPointer > allocLimit) gMem.FillUnusedSpace(allocLimit, allocPointer-allocLimit); } TaskData::TaskData(): allocPointer(0), allocLimit(0), allocSize(MIN_HEAP_SIZE), allocCount(0), stack(0), threadObject(0), signalStack(0), foreignStack(TAGGED(0)), inML(false), requests(kRequestNone), blockMutex(0), inMLHeap(false), runningProfileTimer(false) { #ifdef HAVE_WINDOWS_H lastCPUTime = 0; #endif #ifdef HAVE_WINDOWS_H threadHandle = 0; #endif threadExited = false; } TaskData::~TaskData() { if (signalStack) free(signalStack); if (stack) gMem.DeleteStackSpace(stack); #ifdef HAVE_WINDOWS_H if (threadHandle) CloseHandle(threadHandle); #endif } // Find a task that matches the specified identifier and returns // it if it exists. MUST be called with schedLock held. TaskData *Processes::TaskForIdentifier(PolyObject *taskId) { // The index is in the first word of the thread object. unsigned index = (unsigned)(UNTAGGED_UNSIGNED(taskId->Get(0))); // Check the index is valid and matches the object stored in the table. if (index < taskArraySize) { TaskData *p = taskArray[index]; if (p && p->threadObject == taskId) return p; } return 0; } // Return the task data for a task id. TaskData *TaskData::FindTaskForId(PolyObject *taskId) { PLocker lock(&processesModule.schedLock); return processesModule.TaskForIdentifier(taskId); } // Broadcast an interrupt to all relevant threads. void Processes::BroadcastInterrupt(void) { // If a thread is set to accept broadcast interrupts set it to // "interrupted". schedLock.Lock(); for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; if (p) { POLYUNSIGNED attrs = ThreadAttrs(p); if (attrs & PFLAG_BROADCAST) MakeRequest(p, kRequestInterrupt); } } schedLock.Unlock(); } // Set the asynchronous request variable for the thread. Must be called // with the schedLock held. Tries to wake the thread up if possible. void Processes::MakeRequest(TaskData *p, ThreadRequests request) { // We don't override a request to kill by an interrupt request. if (p->requests < request) { p->requests = request; p->InterruptCode(); p->threadLock.Signal(); // Set the value in the ML object as well so the ML code can see it p->threadObject->requestCopy = TAGGED(request); } #ifdef HAVE_WINDOWS_H // Wake any threads waiting for IO PulseEvent(Waiter::hWakeupEvent); #endif } void Processes::ThreadExit(TaskData *taskData) { if (debugOptions & DEBUG_THREADS) Log("THREAD: Thread %p exiting\n", taskData); #ifdef HAVE_PTHREAD // Block any profile interrupt from now on. We're deleting the ML stack for this thread. sigset_t block_sigs; sigemptyset(&block_sigs); sigaddset(&block_sigs, SIGVTALRM); pthread_sigmask(SIG_BLOCK, &block_sigs, NULL); // Remove the thread-specific data since it's no // longer valid. pthread_setspecific(tlsId, 0); #endif globalStats.decCount(PSC_THREADS); if (singleThreaded) finish(0); schedLock.Lock(); ThreadReleaseMLMemoryWithSchedLock(taskData); // Allow a GC if it was waiting for us. taskData->threadExited = true; initialThreadWait.Signal(); // Tell it we've finished. schedLock.Unlock(); #ifdef HAVE_PTHREAD pthread_exit(0); #elif defined(HAVE_WINDOWS_H) ExitThread(0); #endif } // These two functions are used for calls from outside where // the lock has not yet been acquired. void Processes::ThreadUseMLMemory(TaskData *taskData) { // Trying to acquire the lock here may block if a GC is in progress schedLock.Lock(); ThreadUseMLMemoryWithSchedLock(taskData); schedLock.Unlock(); } void Processes::ThreadReleaseMLMemory(TaskData *taskData) { schedLock.Lock(); ThreadReleaseMLMemoryWithSchedLock(taskData); schedLock.Unlock(); } // Called when a thread wants to resume using the ML heap. That could // be after a wait for some reason or after executing some foreign code. // Since there could be a GC in progress already at this point we may either // be blocked waiting to acquire schedLock or we may need to wait until // we are woken up at the end of the GC. void Processes::ThreadUseMLMemoryWithSchedLock(TaskData *taskData) { TaskData *ptaskData = taskData; // If there is a request outstanding we have to wait for it to // complete. We notify the root thread and wait for it. while (threadRequest != 0) { initialThreadWait.Signal(); // Wait for the GC to happen mlThreadWait.Wait(&schedLock); } ASSERT(! ptaskData->inMLHeap); ptaskData->inMLHeap = true; } // Called to indicate that the thread has temporarily finished with the // ML memory either because it is going to wait for something or because // it is going to run foreign code. If there is an outstanding GC request // that can proceed. void Processes::ThreadReleaseMLMemoryWithSchedLock(TaskData *taskData) { TaskData *ptaskData = taskData; ASSERT(ptaskData->inMLHeap); ptaskData->inMLHeap = false; // Put a dummy object in any unused space. This maintains the // invariant that the allocated area is filled with valid objects. ptaskData->FillUnusedSpace(); // if (threadRequest != 0) initialThreadWait.Signal(); } // Make a request to the root thread. void Processes::MakeRootRequest(TaskData *taskData, MainThreadRequest *request) { if (singleThreaded) { mainThreadPhase = request->mtp; ThreadReleaseMLMemoryWithSchedLock(taskData); // Primarily to call FillUnusedSpace request->Perform(); ThreadUseMLMemoryWithSchedLock(taskData); mainThreadPhase = MTP_USER_CODE; } else { PLocker locker(&schedLock); // Wait for any other requests. while (threadRequest != 0) { // Deal with any pending requests. ThreadReleaseMLMemoryWithSchedLock(taskData); ThreadUseMLMemoryWithSchedLock(taskData); // Drops schedLock while waiting. } // Now the other requests have been dealt with (and we have schedLock). request->completed = false; threadRequest = request; // Wait for it to complete. while (! request->completed) { ThreadReleaseMLMemoryWithSchedLock(taskData); ThreadUseMLMemoryWithSchedLock(taskData); // Drops schedLock while waiting. } } } // Find space for an object. Returns a pointer to the start. "words" must include // the length word and the result points at where the length word will go. PolyWord *Processes::FindAllocationSpace(TaskData *taskData, POLYUNSIGNED words, bool alwaysInSeg) { bool triedInterrupt = false; while (1) { // After a GC allocPointer and allocLimit are zero and when allocating the // heap segment we request a minimum of zero words. if (taskData->allocPointer != 0 && taskData->allocPointer >= taskData->allocLimit + words) { // There's space in the current segment, taskData->allocPointer -= words; return taskData->allocPointer; } else // Insufficient space in this area. { if (words > taskData->allocSize && ! alwaysInSeg) { // If the object we want is larger than the heap segment size // we allocate it separately rather than in the segment. PolyWord *foundSpace = gMem.AllocHeapSpace(words); if (foundSpace) return foundSpace; } else { // Fill in any unused space in the existing segment taskData->FillUnusedSpace(); // Get another heap segment with enough space for this object. POLYUNSIGNED requestSpace = taskData->allocSize+words; POLYUNSIGNED spaceSize = requestSpace; // Get the space and update spaceSize with the actual size. PolyWord *space = gMem.AllocHeapSpace(words, spaceSize); if (space) { // Double the allocation size for the next time if // we succeeded in allocating the whole space. taskData->allocCount++; if (spaceSize == requestSpace) taskData->allocSize = taskData->allocSize*2; taskData->allocLimit = space; taskData->allocPointer = space+spaceSize; // Actually allocate the object taskData->allocPointer -= words; return taskData->allocPointer; } } // It's possible that another thread has requested a GC in which case // we will have memory when that happens. We don't want to start // another GC. if (! singleThreaded) { PLocker locker(&schedLock); if (threadRequest != 0) { ThreadReleaseMLMemoryWithSchedLock(taskData); ThreadUseMLMemoryWithSchedLock(taskData); continue; // Try again } } // Try garbage-collecting. If this failed return 0. if (! QuickGC(taskData, words)) { extern FILE *polyStderr; if (! triedInterrupt) { triedInterrupt = true; fprintf(polyStderr,"Run out of store - interrupting threads\n"); if (debugOptions & DEBUG_THREADS) Log("THREAD: Run out of store, interrupting threads\n"); BroadcastInterrupt(); try { if (ProcessAsynchRequests(taskData)) return 0; // Has been interrupted. } catch(KillException &) { // The thread may have been killed. processes->ThreadExit(taskData); } // Not interrupted: pause this thread to allow for other // interrupted threads to free something. #if defined(_WIN32) Sleep(5000); #else sleep(5); #endif // Try again. } else { // That didn't work. Exit. fprintf(polyStderr,"Failed to recover - exiting\n"); Exit(1); // Begins the shutdown process processes->ThreadExit(taskData); // And terminate this thread. } } // Try again. There should be space now. } } } #ifdef _MSC_VER // Don't tell me that exitThread has a non-void type. #pragma warning(disable:4646) #endif Handle exitThread(TaskData *taskData) /* A call to this is put on the stack of a new thread so when the thread function returns the thread goes away. */ { processesModule.ThreadExit(taskData); } // Terminate the current thread. Never returns. POLYUNSIGNED PolyThreadKillSelf(PolyObject *threadId) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); // Possibly not needed since we never return processesModule.ThreadExit(taskData); return 0; } /* Called when a thread is about to block, usually because of IO. If this is interruptable (currently only used for Posix functions) the process will be set to raise an exception if any signal is handled. It may also raise an exception if another thread has called broadcastInterrupt. */ void Processes::ThreadPauseForIO(TaskData *taskData, Waiter *pWait) { TestAnyEvents(taskData); // Consider this a blocking call that may raise Interrupt ThreadReleaseMLMemory(taskData); globalStats.incCount(PSC_THREADS_WAIT_IO); pWait->Wait(1000); // Wait up to a second globalStats.decCount(PSC_THREADS_WAIT_IO); ThreadUseMLMemory(taskData); TestAnyEvents(taskData); // Check if we've been interrupted. } // Default waiter: simply wait for the time. In the case of Windows it // is also woken up if the event is signalled. In Unix it may be woken // up by a signal. void Waiter::Wait(unsigned maxMillisecs) { // Since this is used only when we can't monitor the source directly // we set this to 10ms so that we're not waiting too long. if (maxMillisecs > 10) maxMillisecs = 10; #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* We seem to need to reset the queue before calling MsgWaitForMultipleObjects otherwise it frequently returns immediately, often saying there is a message with a message ID of 0x118 which doesn't correspond to any listed message. While calling PeekMessage afterwards might be better this doesn't seem to work properly. We need to use MsgWaitForMultipleObjects here so that we get a reasonable response with the Windows GUI. */ MSG msg; // N.B. It seems that calling PeekMessage may result in a callback // to a window proc directly without a call to DispatchMessage. That // could result in a recursive call here if we have installed an ML // window proc. PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE); // Wait until we get input or we're woken up. MsgWaitForMultipleObjects(1, &hWakeupEvent, FALSE, maxMillisecs, QS_ALLINPUT); #else // Unix fd_set read_fds, write_fds, except_fds; struct timeval toWait = { 0, 0 }; toWait.tv_sec = maxMillisecs / 1000; toWait.tv_usec = (maxMillisecs % 1000) * 1000; FD_ZERO(&read_fds); FD_ZERO(&write_fds); FD_ZERO(&except_fds); select(FD_SETSIZE, &read_fds, &write_fds, &except_fds, &toWait); #endif } static Waiter defWait; Waiter *Waiter::defaultWaiter = &defWait; #ifdef HAVE_WINDOWS_H // Windows and Cygwin HANDLE Waiter::hWakeupEvent; // Pulsed to wake up any threads waiting for IO. // Wait for the specified handle to be signalled. void WaitHandle::Wait(unsigned maxMillisecs) { MSG msg; PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE); HANDLE hEvents[2]; DWORD dwEvents = 0; hEvents[dwEvents++] = Waiter::hWakeupEvent; if (m_Handle != NULL) hEvents[dwEvents++] = m_Handle; // Wait until we get input or we're woken up. MsgWaitForMultipleObjects(dwEvents, hEvents, FALSE, maxMillisecs, QS_ALLINPUT); } #endif #if (!defined(_WIN32) || defined(__CYGWIN__)) // Unix and Cygwin: Wait for a file descriptor on input. void WaitInputFD::Wait(unsigned maxMillisecs) { fd_set read_fds, write_fds, except_fds; struct timeval toWait = { 0, 0 }; toWait.tv_sec = maxMillisecs / 1000; toWait.tv_usec = (maxMillisecs % 1000) * 1000; FD_ZERO(&read_fds); if (m_waitFD >= 0) FD_SET(m_waitFD, &read_fds); FD_ZERO(&write_fds); FD_ZERO(&except_fds); select(FD_SETSIZE, &read_fds, &write_fds, &except_fds, &toWait); } #endif // Get the task data for the current thread. This is held in // thread-local storage. Normally this is passed in taskData but // in a few cases this isn't available. TaskData *Processes::GetTaskDataForThread(void) { #ifdef HAVE_PTHREAD return (TaskData *)pthread_getspecific(tlsId); #elif defined(HAVE_WINDOWS_H) return (TaskData *)TlsGetValue(tlsId); #else // If there's no threading. return taskArray[0]; #endif } // Called to create a task data object in the current thread. // This is currently only used if a thread created in foreign code calls // a callback. TaskData *Processes::CreateNewTaskData(Handle threadId, Handle threadFunction, Handle args, PolyWord flags) { TaskData *taskData = machineDependent->CreateTaskData(); #if defined(HAVE_WINDOWS_H) HANDLE thisProcess = GetCurrentProcess(); DuplicateHandle(thisProcess, GetCurrentThread(), thisProcess, &(taskData->threadHandle), THREAD_ALL_ACCESS, FALSE, 0); #endif unsigned thrdIndex; { PLocker lock(&schedLock); // See if there's a spare entry in the array. for (thrdIndex = 0; thrdIndex < taskArraySize && taskArray[thrdIndex] != 0; thrdIndex++); if (thrdIndex == taskArraySize) // Need to expand the array { TaskData **newArray = (TaskData **)realloc(taskArray, sizeof(TaskData *)*(taskArraySize+1)); if (newArray) { taskArray = newArray; taskArraySize++; } else { delete(taskData); schedLock.Unlock(); throw MemoryException(); } } // Add into the new entry taskArray[thrdIndex] = taskData; } taskData->stack = gMem.NewStackSpace(machineDependent->InitialStackSize()); if (taskData->stack == 0) { delete(taskData); throw MemoryException(); } // TODO: Check that there isn't a problem if we try to allocate // memory here and result in a GC. taskData->InitStackFrame(taskData, threadFunction, args); ThreadUseMLMemory(taskData); // If the forking thread has created an ML thread object use that // otherwise create a new one in the current context. if (threadId != 0) taskData->threadObject = (ThreadObject*)threadId->WordP(); else { taskData->threadObject = (ThreadObject*)alloc(taskData, sizeof(ThreadObject)/sizeof(PolyWord), F_MUTABLE_BIT); taskData->threadObject->index = TAGGED(thrdIndex); // Set to the index taskData->threadObject->flags = flags != TAGGED(0) ? TAGGED(PFLAG_SYNCH): flags; taskData->threadObject->threadLocal = TAGGED(0); // Empty thread-local store taskData->threadObject->requestCopy = TAGGED(0); // Cleared interrupt state taskData->threadObject->mlStackSize = TAGGED(0); // Unlimited stack size for (unsigned i = 0; i < sizeof(taskData->threadObject->debuggerSlots)/sizeof(PolyWord); i++) taskData->threadObject->debuggerSlots[i] = TAGGED(0); } #ifdef HAVE_PTHREAD initThreadSignals(taskData); pthread_setspecific(tlsId, taskData); #elif defined(HAVE_WINDOWS_H) TlsSetValue(tlsId, taskData); #endif globalStats.incCount(PSC_THREADS); return taskData; } // This function is run when a new thread has been forked. The // parameter is the taskData value for the new thread. This function // is also called directly for the main thread. #ifdef HAVE_PTHREAD static void *NewThreadFunction(void *parameter) { TaskData *taskData = (TaskData *)parameter; #ifdef HAVE_WINDOWS_H // Cygwin: Get the Windows thread handle in case it's needed for profiling. HANDLE thisProcess = GetCurrentProcess(); DuplicateHandle(thisProcess, GetCurrentThread(), thisProcess, &(taskData->threadHandle), THREAD_ALL_ACCESS, FALSE, 0); #endif initThreadSignals(taskData); pthread_setspecific(processesModule.tlsId, taskData); taskData->saveVec.init(); // Remove initial data globalStats.incCount(PSC_THREADS); processes->ThreadUseMLMemory(taskData); try { (void)taskData->EnterPolyCode(); // Will normally (always?) call ExitThread. } catch (KillException &) { processesModule.ThreadExit(taskData); } return 0; } #elif defined(HAVE_WINDOWS_H) static DWORD WINAPI NewThreadFunction(void *parameter) { TaskData *taskData = (TaskData *)parameter; TlsSetValue(processesModule.tlsId, taskData); taskData->saveVec.init(); // Removal initial data globalStats.incCount(PSC_THREADS); processes->ThreadUseMLMemory(taskData); try { (void)taskData->EnterPolyCode(); } catch (KillException &) { processesModule.ThreadExit(taskData); } return 0; } #else static void NewThreadFunction(void *parameter) { TaskData *taskData = (TaskData *)parameter; initThreadSignals(taskData); taskData->saveVec.init(); // Removal initial data globalStats.incCount(PSC_THREADS); processes->ThreadUseMLMemory(taskData); try { (void)taskData->EnterPolyCode(); } catch (KillException &) { processesModule.ThreadExit(taskData); } } #endif // Sets up the initial thread from the root function. This is run on // the initial thread of the process so it will work if we don't // have pthreads. // When multithreading this thread also deals with all garbage-collection // and similar operations and the ML threads send it requests to deal with // that. These require all the threads to pause until the operation is complete // since they affect all memory but they are also sometimes highly recursive. // On Mac OS X and on Linux if the stack limit is set to unlimited only the // initial thread has a large stack and newly created threads have smaller // stacks. We need to make sure that any significant stack usage occurs only // on the inital thread. void Processes::BeginRootThread(PolyObject *rootFunction) { if (taskArraySize < 1) { taskArray = (TaskData **)realloc(taskArray, sizeof(TaskData *)); if (taskArray == 0) ::Exit("Unable to create the initial thread - insufficient memory"); taskArraySize = 1; } try { // We can't use ForkThread because we don't have a taskData object before we start TaskData *taskData = machineDependent->CreateTaskData(); taskData->threadObject = (ThreadObject*)alloc(taskData, sizeof(ThreadObject) / sizeof(PolyWord), F_MUTABLE_BIT); taskData->threadObject->index = TAGGED(0); // Index 0 // The initial thread is set to accept broadcast interrupt requests // and handle them synchronously. This is for backwards compatibility. taskData->threadObject->flags = TAGGED(PFLAG_BROADCAST|PFLAG_ASYNCH); // Flags taskData->threadObject->threadLocal = TAGGED(0); // Empty thread-local store taskData->threadObject->requestCopy = TAGGED(0); // Cleared interrupt state taskData->threadObject->mlStackSize = TAGGED(0); // Unlimited stack size for (unsigned i = 0; i < sizeof(taskData->threadObject->debuggerSlots)/sizeof(PolyWord); i++) taskData->threadObject->debuggerSlots[i] = TAGGED(0); #if defined(HAVE_WINDOWS_H) taskData->threadHandle = mainThreadHandle; #endif taskArray[0] = taskData; taskData->stack = gMem.NewStackSpace(machineDependent->InitialStackSize()); if (taskData->stack == 0) ::Exit("Unable to create the initial thread - insufficient memory"); taskData->InitStackFrame(taskData, taskData->saveVec.push(rootFunction), (Handle)0); // Create a packet for the Interrupt exception once so that we don't have to // allocate when we need to raise it. // We can only do this once the taskData object has been created. if (interrupt_exn == 0) interrupt_exn = makeExceptionPacket(taskData, EXC_interrupt); if (singleThreaded) { // If we don't have threading enter the code as if this were a new thread. // This will call finish so will never return. NewThreadFunction(taskData); } schedLock.Lock(); int errorCode = 0; #ifdef HAVE_PTHREAD if (pthread_create(&taskData->threadId, NULL, NewThreadFunction, taskData) != 0) errorCode = errno; #elif defined(HAVE_WINDOWS_H) taskData->threadHandle = CreateThread(NULL, 0, NewThreadFunction, taskData, 0, NULL); if (taskData->threadHandle == NULL) errorCode = GetLastError(); #endif if (errorCode != 0) { // Thread creation failed. taskArray[0] = 0; delete(taskData); ExitWithError("Unable to create initial thread:", errorCode); } if (debugOptions & DEBUG_THREADS) Log("THREAD: Forked initial root thread %p\n", taskData); } catch (std::bad_alloc &) { ::Exit("Unable to create the initial thread - insufficient memory"); } // Wait until the threads terminate or make a request. // We only release schedLock while waiting. while (1) { // Look at the threads to see if they are running. bool allStopped = true; bool noUserThreads = true; bool signalThreadRunning = false; for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; if (p) { if (p == sigTask) signalThreadRunning = true; else noUserThreads = false; if (p->inMLHeap) { allStopped = false; // It must be running - interrupt it if we are waiting. if (threadRequest != 0) p->InterruptCode(); } else if (p->threadExited) // Has the thread terminated? { // Wait for it to actually stop then delete the task data. #ifdef HAVE_PTHREAD pthread_join(p->threadId, NULL); #elif defined(HAVE_WINDOWS_H) WaitForSingleObject(p->threadHandle, INFINITE); #endif delete(p); taskArray[i] = 0; globalStats.decCount(PSC_THREADS); } } } if (noUserThreads) { // If all threads apart from the signal thread have exited then // we can finish but we must make sure that the signal thread has // exited before we finally finish and deallocate the memory. if (signalThreadRunning) exitRequest = true; else break; // Really no threads. } if (allStopped && threadRequest != 0) { mainThreadPhase = threadRequest->mtp; gMem.ProtectImmutable(false); // GC, sharing and export may all write to the immutable area threadRequest->Perform(); gMem.ProtectImmutable(true); mainThreadPhase = MTP_USER_CODE; threadRequest->completed = true; threadRequest = 0; // Allow a new request. mlThreadWait.Signal(); } // Have we had a request to stop? This may have happened while in the GC. if (exitRequest) { // Set this to kill the threads. for (unsigned i = 0; i < taskArraySize; i++) { TaskData *taskData = taskArray[i]; if (taskData && taskData->requests != kRequestKill) MakeRequest(taskData, kRequestKill); } // Leave exitRequest set so that if we're in the process of // creating a new thread we will request it to stop when the // taskData object has been added to the table. } // Now release schedLock and wait for a thread // to wake us up. Use a timed wait to avoid the race with // setting exitRequest. initialThreadWait.WaitFor(&schedLock, 400); // Update the periodic stats. // Calculate the free memory. We have to be careful here because although // we have the schedLock we don't have any lock that prevents a thread // from allocating a new segment. Since these statistics are only // very rough it doesn't matter if there's a glitch. // One possibility would be see if the value of // gMem.GetFreeAllocSpace() has changed from what it was at the // start and recalculate if it has. // We also count the number of threads in ML code. Taking the // lock in EnterPolyCode on every RTS call turned out to be // expensive. POLYUNSIGNED freeSpace = 0; unsigned threadsInML = 0; for (unsigned j = 0; j < taskArraySize; j++) { TaskData *taskData = taskArray[j]; if (taskData) { // This gets the values last time it was in the RTS. PolyWord *limit = taskData->allocLimit, *ptr = taskData->allocPointer; if (limit < ptr && (POLYUNSIGNED)(ptr-limit) < taskData->allocSize) freeSpace += ptr-limit; if (taskData->inML) threadsInML++; } } // Add the space in the allocation areas after calculating the sizes for the // threads in case a thread has allocated some more. freeSpace += gMem.GetFreeAllocSpace(); globalStats.updatePeriodicStats(freeSpace, threadsInML); } schedLock.Unlock(); // We are about to return normally. Stop any crowbar function // and wait until it stops. shutdownLock.Lock(); if (crowbarRunning) { crowbarLock.Signal(); shutdownLock.Unlock(); // Wait for the thread to terminate. #if (defined(HAVE_PTHREAD)) pthread_join(crowBarThreadId, NULL); #elif defined(HAVE_WINDOWS_H) WaitForSingleObject(hCrowBarThread, 10000); #endif } else shutdownLock.Unlock(); // So it's always unlocked when it's destroyed. finish(exitResult); // Close everything down and exit. } // Create a new thread. Returns the ML thread identifier object if it succeeds. // May raise an exception. Handle Processes::ForkThread(TaskData *taskData, Handle threadFunction, Handle args, PolyWord flags, PolyWord stacksize) { if (singleThreaded) raise_exception_string(taskData, EXC_thread, "Threads not available"); try { // Create a taskData object for the new thread TaskData *newTaskData = machineDependent->CreateTaskData(); // We allocate the thread object in the PARENT's space Handle threadId = alloc_and_save(taskData, sizeof(ThreadObject) / sizeof(PolyWord), F_MUTABLE_BIT); newTaskData->threadObject = (ThreadObject*)DEREFHANDLE(threadId); newTaskData->threadObject->index = TAGGED(0); newTaskData->threadObject->flags = flags; // Flags newTaskData->threadObject->threadLocal = TAGGED(0); // Empty thread-local store newTaskData->threadObject->requestCopy = TAGGED(0); // Cleared interrupt state newTaskData->threadObject->mlStackSize = stacksize; for (unsigned i = 0; i < sizeof(newTaskData->threadObject->debuggerSlots)/sizeof(PolyWord); i++) newTaskData->threadObject->debuggerSlots[i] = TAGGED(0); unsigned thrdIndex; schedLock.Lock(); // Before forking a new thread check to see whether we have been asked // to exit. Processes::Exit sets the current set of threads to exit but won't // see a new thread. if (taskData->requests == kRequestKill) { schedLock.Unlock(); // Raise an exception although the thread may exit before we get there. raise_exception_string(taskData, EXC_thread, "Thread is exiting"); } // See if there's a spare entry in the array. for (thrdIndex = 0; thrdIndex < taskArraySize && taskArray[thrdIndex] != 0; thrdIndex++); if (thrdIndex == taskArraySize) // Need to expand the array { TaskData **newArray = (TaskData **)realloc(taskArray, sizeof(TaskData *)*(taskArraySize+1)); if (newArray) { taskArray = newArray; taskArraySize++; } else { delete(newTaskData); schedLock.Unlock(); raise_exception_string(taskData, EXC_thread, "Too many threads"); } } // Add into the new entry taskArray[thrdIndex] = newTaskData; newTaskData->threadObject->index = TAGGED(thrdIndex); // Set to the index schedLock.Unlock(); newTaskData->stack = gMem.NewStackSpace(machineDependent->InitialStackSize()); if (newTaskData->stack == 0) { delete(newTaskData); raise_exception_string(taskData, EXC_thread, "Unable to allocate thread stack"); } // Allocate anything needed for the new stack in the parent's heap. // The child still has inMLHeap set so mustn't GC. newTaskData->InitStackFrame(taskData, threadFunction, args); // Now actually fork the thread. bool success = false; schedLock.Lock(); #ifdef HAVE_PTHREAD success = pthread_create(&newTaskData->threadId, NULL, NewThreadFunction, newTaskData) == 0; #elif defined(HAVE_WINDOWS_H) newTaskData->threadHandle = CreateThread(NULL, 0, NewThreadFunction, newTaskData, 0, NULL); success = newTaskData->threadHandle != NULL; #endif if (success) { schedLock.Unlock(); if (debugOptions & DEBUG_THREADS) Log("THREAD: Forking new thread %p from thread %p\n", newTaskData, taskData); return threadId; } // Thread creation failed. taskArray[thrdIndex] = 0; delete(newTaskData); schedLock.Unlock(); if (debugOptions & DEBUG_THREADS) Log("THREAD: Fork from thread %p failed\n", taskData); raise_exception_string(taskData, EXC_thread, "Thread creation failed"); } catch (std::bad_alloc &) { raise_exception_string(taskData, EXC_thread, "Insufficient memory"); } } // ForkFromRTS. Creates a new thread from within the RTS. This is currently used // only to run a signal function. bool Processes::ForkFromRTS(TaskData *taskData, Handle proc, Handle arg) { try { (void)ForkThread(taskData, proc, arg, TAGGED(PFLAG_SYNCH), TAGGED(0)); return true; } catch (IOException &) { // If it failed return false; } } POLYUNSIGNED PolyThreadForkThread(PolyObject *threadId, PolyWord function, PolyWord attrs, PolyWord stack) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedFunction = taskData->saveVec.push(function); Handle result = 0; try { result = processesModule.ForkThread(taskData, pushedFunction, (Handle)0, attrs, stack); } catch (KillException &) { processes->ThreadExit(taskData); // TestSynchronousRequests may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Deal with any interrupt or kill requests. bool Processes::ProcessAsynchRequests(TaskData *taskData) { bool wasInterrupted = false; TaskData *ptaskData = taskData; schedLock.Lock(); switch (ptaskData->requests) { case kRequestNone: schedLock.Unlock(); break; case kRequestInterrupt: { // Handle asynchronous interrupts only. // We've been interrupted. POLYUNSIGNED attrs = ThreadAttrs(ptaskData); POLYUNSIGNED intBits = attrs & PFLAG_INTMASK; if (intBits == PFLAG_ASYNCH || intBits == PFLAG_ASYNCH_ONCE) { if (intBits == PFLAG_ASYNCH_ONCE) { // Set this so from now on it's synchronous. // This word is only ever set by the thread itself so // we don't need to synchronise. attrs = (attrs & (~PFLAG_INTMASK)) | PFLAG_SYNCH; ptaskData->threadObject->flags = TAGGED(attrs); } ptaskData->requests = kRequestNone; // Clear this ptaskData->threadObject->requestCopy = TAGGED(0); // And in the ML copy schedLock.Unlock(); // Don't actually throw the exception here. taskData->SetException(interrupt_exn); wasInterrupted = true; } else schedLock.Unlock(); } break; case kRequestKill: // The thread has been asked to stop. schedLock.Unlock(); throw KillException(); // Doesn't return. } #ifndef HAVE_WINDOWS_H // Start the profile timer if needed. if (profileMode == kProfileTime) { if (! ptaskData->runningProfileTimer) { ptaskData->runningProfileTimer = true; StartProfilingTimer(); } } else ptaskData->runningProfileTimer = false; // The timer will be stopped next time it goes off. #endif return wasInterrupted; } // If this thread is processing interrupts synchronously and has been // interrupted clear the interrupt and raise the exception. This is // called from IO routines which may block. void Processes::TestSynchronousRequests(TaskData *taskData) { TaskData *ptaskData = taskData; schedLock.Lock(); switch (ptaskData->requests) { case kRequestNone: schedLock.Unlock(); break; case kRequestInterrupt: { // Handle synchronous interrupts only. // We've been interrupted. POLYUNSIGNED attrs = ThreadAttrs(ptaskData); POLYUNSIGNED intBits = attrs & PFLAG_INTMASK; if (intBits == PFLAG_SYNCH) { ptaskData->requests = kRequestNone; // Clear this ptaskData->threadObject->requestCopy = TAGGED(0); schedLock.Unlock(); taskData->SetException(interrupt_exn); throw IOException(); } else schedLock.Unlock(); } break; case kRequestKill: // The thread has been asked to stop. schedLock.Unlock(); throw KillException(); // Doesn't return. } } // Check for asynchronous or synchronous events void Processes::TestAnyEvents(TaskData *taskData) { TestSynchronousRequests(taskData); if (ProcessAsynchRequests(taskData)) throw IOException(); } // Stop. Exit is usually called by one of the ML threads but // in the Windows version can also be called by the GUI. // The normal shut-down routine is to wake up the main thread // and have it wait until all the ML threads have exited. This // "crow-bar" thread is intended to force a shut-down if that // doesn't happen within 40s. It has been increased from 20s because // of a report that this was insufficient on a heavily loaded machine. void Processes::CrowBarFn(void) { #if (defined(HAVE_PTHREAD) || defined(HAVE_WINDOWS_H)) shutdownLock.Lock(); crowbarRunning = true; if (crowbarLock.WaitFor(&shutdownLock, 40000)) // Wait for 40s { // We've been woken by the main thread. Let it do the shutdown. shutdownLock.Unlock(); } else { #if defined(HAVE_WINDOWS_H) ExitProcess(1); #else _exit(1); // Something is stuck. Get out without calling destructors. #endif } #endif } #ifdef HAVE_PTHREAD static void *crowBarFn(void*) { processesModule.CrowBarFn(); return 0; } #elif defined(HAVE_WINDOWS_H) static DWORD WINAPI crowBarFn(LPVOID arg) { processesModule.CrowBarFn(); return 0; } #endif void Processes::Exit(int n) { if (singleThreaded) finish(n); #if (defined(HAVE_PTHREAD) || defined(HAVE_WINDOWS_H)) { // Start a crowbar thread. This will stop everything if the main thread // does not reach the point of stopping within 5 seconds. PLocker l(&shutdownLock); if (!crowbarRunning) { #if (defined(HAVE_PTHREAD)) crowbarRunning = pthread_create(&crowBarThreadId, NULL, crowBarFn, 0) == 0; #elif defined(HAVE_WINDOWS_H) hCrowBarThread = CreateThread(NULL, 0, crowBarFn, 0, 0, NULL); crowbarRunning = hCrowBarThread != NULL; #endif } } #endif // We may be in an interrupt handler with schedLock held. // Just set the exit request and go. exitResult = n; exitRequest = true; initialThreadWait.Signal(); // Wake it if it's sleeping. } /******************************************************************************/ /* */ /* catchVTALRM - handler for alarm-clock signal */ /* */ /******************************************************************************/ #if !defined(HAVE_WINDOWS_H) // N.B. This may be called either by an ML thread or by the main thread. // On the main thread taskData will be null. static void catchVTALRM(SIG_HANDLER_ARGS(sig, context)) { ASSERT(sig == SIGVTALRM); if (profileMode != kProfileTime) { // We stop the timer for this thread on the next signal after we end profile static struct itimerval stoptime = {{0, 0}, {0, 0}}; /* Stop the timer */ setitimer(ITIMER_VIRTUAL, & stoptime, NULL); } else { TaskData *taskData = processes->GetTaskDataForThread(); handleProfileTrap(taskData, (SIGNALCONTEXT*)context); } } #else /* Windows including Cygwin */ // This runs as a separate thread. Every millisecond it checks the CPU time used // by each ML thread and increments the count for each thread that has used a // millisecond of CPU time. static bool testCPUtime(HANDLE hThread, LONGLONG &lastCPUTime) { FILETIME cTime, eTime, kTime, uTime; // Try to get the thread CPU time if possible. This isn't supported // in Windows 95/98 so if it fails we just include this thread anyway. if (GetThreadTimes(hThread, &cTime, &eTime, &kTime, &uTime)) { LONGLONG totalTime = 0; LARGE_INTEGER li; li.LowPart = kTime.dwLowDateTime; li.HighPart = kTime.dwHighDateTime; totalTime += li.QuadPart; li.LowPart = uTime.dwLowDateTime; li.HighPart = uTime.dwHighDateTime; totalTime += li.QuadPart; if (totalTime - lastCPUTime >= 10000) { lastCPUTime = totalTime; return true; } return false; } else return true; // Failed to get thread time, maybe Win95. } void Processes::ProfileInterrupt(void) { // Wait for millisecond or until the stop event is signalled. while (WaitForSingleObject(hStopEvent, 1) == WAIT_TIMEOUT) { // We need to hold schedLock to examine the taskArray but // that is held during garbage collection. if (schedLock.Trylock()) { for (unsigned i = 0; i < taskArraySize; i++) { TaskData *p = taskArray[i]; if (p && p->threadHandle) { if (testCPUtime(p->threadHandle, p->lastCPUTime)) { CONTEXT context; SuspendThread(p->threadHandle); context.ContextFlags = CONTEXT_CONTROL; /* Get Eip and Esp */ if (GetThreadContext(p->threadHandle, &context)) { handleProfileTrap(p, &context); } ResumeThread(p->threadHandle); } } } schedLock.Unlock(); } // Check the CPU time used by the main thread. This is used for GC // so we need to check that as well. if (testCPUtime(mainThreadHandle, lastCPUTime)) handleProfileTrap(NULL, NULL); } } DWORD WINAPI ProfilingTimer(LPVOID parm) { processesModule.ProfileInterrupt(); return 0; } #endif // Profiling control. Called by the root thread. void Processes::StartProfiling(void) { #ifdef HAVE_WINDOWS_H DWORD threadId; extern FILE *polyStdout; if (profilingHd) return; ResetEvent(hStopEvent); profilingHd = CreateThread(NULL, 0, ProfilingTimer, NULL, 0, &threadId); if (profilingHd == NULL) fputs("Creating ProfilingTimer thread failed.\n", polyStdout); /* Give this a higher than normal priority so it pre-empts the main thread. Without this it will tend only to be run when the main thread blocks for some reason. */ SetThreadPriority(profilingHd, THREAD_PRIORITY_ABOVE_NORMAL); #else // In Linux, at least, we need to run a timer in each thread. // We request each to enter the RTS so that it will start the timer. // Since this is being run by the main thread while all the ML threads // are paused this may not actually be necessary. for (unsigned i = 0; i < taskArraySize; i++) { TaskData *taskData = taskArray[i]; if (taskData) { taskData->InterruptCode(); } } StartProfilingTimer(); // Start the timer in the root thread. #endif } void Processes::StopProfiling(void) { #ifdef HAVE_WINDOWS_H if (hStopEvent) SetEvent(hStopEvent); // Wait for the thread to stop if (profilingHd) WaitForSingleObject(profilingHd, 10000); CloseHandle(profilingHd); profilingHd = NULL; #endif } // Called by the ML signal handling thread. It blocks until a signal // arrives. There should only be a single thread waiting here. bool Processes::WaitForSignal(TaskData *taskData, PLock *sigLock) { TaskData *ptaskData = taskData; // We need to hold the signal lock until we have acquired schedLock. schedLock.Lock(); sigLock->Unlock(); if (sigTask != 0) { schedLock.Unlock(); return false; } sigTask = ptaskData; if (ptaskData->requests == kRequestNone) { // Now release the ML memory. A GC can start. ThreadReleaseMLMemoryWithSchedLock(ptaskData); globalStats.incCount(PSC_THREADS_WAIT_SIGNAL); ptaskData->threadLock.Wait(&schedLock); globalStats.decCount(PSC_THREADS_WAIT_SIGNAL); // We want to use the memory again. ThreadUseMLMemoryWithSchedLock(ptaskData); } sigTask = 0; schedLock.Unlock(); return true; } // Called by the signal detection thread to wake up the signal handler // thread. Must be called AFTER releasing sigLock. void Processes::SignalArrived(void) { PLocker locker(&schedLock); if (sigTask) sigTask->threadLock.Signal(); } #ifdef HAVE_PTHREAD // This is called when the thread exits in foreign code and // ThreadExit has not been called. static void threaddata_destructor(void *p) { TaskData *pt = (TaskData *)p; pt->threadExited = true; // This doesn't actually wake the main thread and relies on the // regular check to release the task data. } #endif void Processes::Init(void) { #ifdef HAVE_WINDOWS_H // Create event to wake up from IO sleeping. Waiter::hWakeupEvent = CreateEvent(NULL, TRUE, FALSE, NULL); #endif #ifdef HAVE_PTHREAD pthread_key_create(&tlsId, threaddata_destructor); #elif defined(HAVE_WINDOWS_H) tlsId = TlsAlloc(); #else singleThreaded = true; #endif #if defined(HAVE_WINDOWS_H) /* Windows including Cygwin. */ // Create stop event for time profiling. hStopEvent = CreateEvent(NULL, TRUE, FALSE, NULL); // Get the thread handle for this thread. HANDLE thisProcess = GetCurrentProcess(); DuplicateHandle(thisProcess, GetCurrentThread(), thisProcess, &mainThreadHandle, THREAD_ALL_ACCESS, FALSE, 0); #else // Set up a signal handler. This will be the same for all threads. markSignalInuse(SIGVTALRM); setSignalHandler(SIGVTALRM, catchVTALRM); #endif } #ifndef HAVE_WINDOWS_H // On Linux, at least, each thread needs to run this. void Processes::StartProfilingTimer(void) { // set virtual timer to go off every millisecond struct itimerval starttime; starttime.it_interval.tv_sec = starttime.it_value.tv_sec = 0; starttime.it_interval.tv_usec = starttime.it_value.tv_usec = 1000; setitimer(ITIMER_VIRTUAL,&starttime,NULL); } #endif void Processes::Stop(void) { #ifdef HAVE_WINDOWS_H if (Waiter::hWakeupEvent) SetEvent(Waiter::hWakeupEvent); #endif #ifdef HAVE_WINDOWS_H if (Waiter::hWakeupEvent) CloseHandle(Waiter::hWakeupEvent); Waiter::hWakeupEvent = NULL; #endif #ifdef HAVE_PTHREAD pthread_key_delete(tlsId); #elif defined(HAVE_WINDOWS_H) TlsFree(tlsId); #endif #if defined(HAVE_WINDOWS_H) /* Stop the timer and profiling threads. */ if (hStopEvent) SetEvent(hStopEvent); if (profilingHd) { WaitForSingleObject(profilingHd, 10000); CloseHandle(profilingHd); profilingHd = NULL; } if (hStopEvent) CloseHandle(hStopEvent); hStopEvent = NULL; if (mainThreadHandle) CloseHandle(mainThreadHandle); mainThreadHandle = NULL; #else profileMode = kProfileOff; // Make sure the timer is not running struct itimerval stoptime; memset(&stoptime, 0, sizeof(stoptime)); setitimer(ITIMER_VIRTUAL, &stoptime, NULL); #endif } void Processes::GarbageCollect(ScanAddress *process) /* Ensures that all the objects are retained and their addresses updated. */ { /* The interrupt exn */ if (interrupt_exn != 0) { PolyObject *p = interrupt_exn; process->ScanRuntimeAddress(&p, ScanAddress::STRENGTH_STRONG); interrupt_exn = (PolyException*)p; } for (unsigned i = 0; i < taskArraySize; i++) { if (taskArray[i]) taskArray[i]->GarbageCollect(process); } } void TaskData::GarbageCollect(ScanAddress *process) { saveVec.gcScan(process); if (threadObject != 0) { PolyObject *p = threadObject; process->ScanRuntimeAddress(&p, ScanAddress::STRENGTH_STRONG); threadObject = (ThreadObject*)p; } if (blockMutex != 0) process->ScanRuntimeAddress(&blockMutex, ScanAddress::STRENGTH_STRONG); // The allocation spaces are no longer valid. allocPointer = 0; allocLimit = 0; // Divide the allocation size by four. If we have made a single allocation // since the last GC the size will have been doubled after the allocation. // On average for each thread, apart from the one that ran out of space // and requested the GC, half of the space will be unused so reducing by // four should give a good estimate for next time. if (allocCount != 0) { // Do this only once for each GC. allocCount = 0; allocSize = allocSize/4; if (allocSize < MIN_HEAP_SIZE) allocSize = MIN_HEAP_SIZE; } process->ScanRuntimeWord(&foreignStack); } // Return the number of processors. extern unsigned NumberOfProcessors(void) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) SYSTEM_INFO info; memset(&info, 0, sizeof(info)); GetSystemInfo(&info); if (info.dwNumberOfProcessors == 0) // Just in case info.dwNumberOfProcessors = 1; return info.dwNumberOfProcessors; #elif(defined(_SC_NPROCESSORS_ONLN)) long res = sysconf(_SC_NPROCESSORS_ONLN); if (res <= 0) res = 1; return res; #elif(defined(HAVE_SYSCTL) && defined(CTL_HW) && defined(HW_NCPU)) static int mib[2] = { CTL_HW, HW_NCPU }; int nCPU = 1; size_t len = sizeof(nCPU); if (sysctl(mib, 2, &nCPU, &len, NULL, 0) == 0 && len == sizeof(nCPU)) return nCPU; else return 1; #else // Can't determine. return 1; #endif } // Return the number of physical processors. If hyperthreading is // enabled this returns less than NumberOfProcessors. Returns zero if // it cannot be determined. // This can be used in Cygwin as well as native Windows. #if (defined(HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION)) typedef BOOL (WINAPI *GETP)(SYSTEM_LOGICAL_PROCESSOR_INFORMATION*, PDWORD); // Windows - use GetLogicalProcessorInformation if it's available. static unsigned WinNumPhysicalProcessors(void) { GETP getProcInfo = (GETP) GetProcAddress(GetModuleHandle(_T("kernel32")), "GetLogicalProcessorInformation"); if (getProcInfo == 0) return 0; // It's there - use it. SYSTEM_LOGICAL_PROCESSOR_INFORMATION *buff = 0; DWORD space = 0; while (getProcInfo(buff, &space) == FALSE) { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { free(buff); return 0; } free(buff); buff = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(space); if (buff == 0) return 0; } // Calculate the number of full entries in case it's truncated. unsigned nItems = space / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); unsigned numProcs = 0; for (unsigned i = 0; i < nItems; i++) { if (buff[i].Relationship == RelationProcessorCore) numProcs++; } free(buff); return numProcs; } #endif // Read and parse /proc/cpuinfo static unsigned LinuxNumPhysicalProcessors(void) { // Find out the total. This should be the maximum. unsigned nProcs = NumberOfProcessors(); // If there's only one we don't need to check further. if (nProcs <= 1) return nProcs; long *cpus = (long*)calloc(nProcs, sizeof(long)); if (cpus == 0) return 0; FILE *cpuInfo = fopen("/proc/cpuinfo", "r"); if (cpuInfo == NULL) { free(cpus); return 0; } char line[40]; unsigned count = 0; while (fgets(line, sizeof(line), cpuInfo) != NULL) { if (strncmp(line, "core id\t\t:", 10) == 0) { long n = strtol(line+10, NULL, 10); unsigned i = 0; // Skip this id if we've seen it already while (i < count && cpus[i] != n) i++; if (i == count) cpus[count++] = n; } if (strchr(line, '\n') == 0) { int ch; do { ch = getc(cpuInfo); } while (ch != '\n' && ch != EOF); } } fclose(cpuInfo); free(cpus); return count; } extern unsigned NumberOfPhysicalProcessors(void) { unsigned numProcs = 0; #if (defined(HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION)) numProcs = WinNumPhysicalProcessors(); if (numProcs != 0) return numProcs; #endif #if (defined(HAVE_SYSCTLBYNAME) && defined(HAVE_SYS_SYSCTL_H)) // Mac OS X int nCores; size_t len = sizeof(nCores); if (sysctlbyname("hw.physicalcpu", &nCores, &len, NULL, 0) == 0) return (unsigned)nCores; #endif numProcs = LinuxNumPhysicalProcessors(); if (numProcs != 0) return numProcs; // Any other cases? return numProcs; } polyml-5.7.1/libpolyml/timing.cpp0000644000175000017500000004533413204034553016006 0ustar daviddavid/* Title: Time functions. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2011,12,16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_LOCALE_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_SYS_TIMES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_SYS_SIGNAL_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_LIMITS_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_WINDOWS_H #include #endif #include // Windows headers define min/max macros, which messes up trying to use std::numeric_limits::min/max() #ifdef min #undef min #endif #ifdef max #undef max #endif #include "locking.h" #include "globals.h" #include "arb.h" #include "run_time.h" #include "sys.h" #include "timing.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "processes.h" #include "heapsizing.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyTimingGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); } #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Windows file times are 64-bit numbers representing times in tenths of a microsecond. */ #define TICKS_PER_MICROSECOND 10 #ifdef __GNUC__ #define SECSSINCE1601 11644473600LL #else #define SECSSINCE1601 11644473600 #endif #else /* For Unix return times in microseconds. */ #define TICKS_PER_MICROSECOND 1 #endif /* The original Poly timing functions used a variety of timing bases (e.g. seconds, tenths of a second). The old functions have been retained but the intention is to phase them out in favour of new functions. Most of these are handled through the timing_dispatch function. The intention behind the timing functions is to make use of the arbitrary precision arithmetic to allow for a wider range of dates than the usual mktime range of 1970 to 2036. We also want to handle more accurate timing than per second or per microsecond where the operating system provides it. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) static FILETIME startTime; #define StrToLL _strtoi64 #else static struct timeval startTime; #define StrToLL strtoll #endif #if(!(defined(HAVE_GMTIME_R) && defined(HAVE_LOCALTIME_R))) // gmtime and localtime are not re-entrant so if we don't have the // re-entrant versions we need to use a lock. static PLock timeLock("Timing"); #endif #define XSTR(X) STR(X) #define STR(X) #X static Handle timing_dispatch_c(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORDHANDLE(code)); switch (c) { case 0: /* Get ticks per microsecond. */ return Make_arbitrary_precision(taskData, TICKS_PER_MICROSECOND); case 1: /* Return time since the time base. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ft; GetSystemTimeAsFileTime(&ft); return Make_arb_from_Filetime(taskData, ft); #else struct timeval tv; if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", errno); return Make_arb_from_pair_scaled(taskData, tv.tv_sec, tv.tv_usec, 1000000); #endif } case 2: /* Return the base year. This is the year which corresponds to zero in the timing sequence. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) return Make_arbitrary_precision(taskData, 1601); #else return Make_arbitrary_precision(taskData, 1970); #endif case 3: /* In both Windows and Unix the time base is 1st of January in the base year. This function is provided just in case we are running on a system with a different base. It returns the number of seconds after 1st January of the base year that corresponds to zero of the time base. */ return Make_arbitrary_precision(taskData, 0); case 4: /* Return the time offset which applied/will apply at the specified time (in seconds). */ { int localoff = 0; time_t theTime; int day = 0; #if (defined(HAVE_GMTIME_R) || defined(HAVE_LOCALTIME_R)) struct tm result; #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Although the offset is in seconds it is since 1601. */ FILETIME ftSeconds; // Not really a file-time because it's a number of seconds. getFileTimeFromArb(taskData, args, &ftSeconds); /* May raise exception. */ ULARGE_INTEGER liTime; liTime.HighPart = ftSeconds.dwHighDateTime; liTime.LowPart = ftSeconds.dwLowDateTime; theTime = (long)(liTime.QuadPart - SECSSINCE1601); #else theTime = get_C_long(taskData, DEREFWORDHANDLE(args)); /* May raise exception. */ #endif { #ifdef HAVE_GMTIME_R struct tm *loctime = gmtime_r(&theTime, &result); #else PLocker lock(&timeLock); struct tm *loctime = gmtime(&theTime); #endif if (loctime == NULL) raise_exception0(taskData, EXC_size); localoff = (loctime->tm_hour*60 + loctime->tm_min)*60 + loctime->tm_sec; day = loctime->tm_yday; } { #ifdef HAVE_LOCALTIME_R struct tm *loctime = localtime_r(&theTime, &result); #else PLocker lock(&timeLock); struct tm *loctime = localtime(&theTime); #endif if (loctime == NULL) raise_exception0(taskData, EXC_size); localoff -= (loctime->tm_hour*60 + loctime->tm_min)*60 + loctime->tm_sec; if (loctime->tm_yday != day) { // Different day - have to correct it. We can assume that there // is at most one day to correct. if (day == loctime->tm_yday+1 || (day == 0 && loctime->tm_yday >= 364)) localoff += 24*60*60; else localoff -= 24*60*60; } } return Make_arbitrary_precision(taskData, localoff); } case 5: /* Find out if Summer Time (daylight saving) was/will be in effect. */ { time_t theTime; #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ftSeconds; // Not really a file-time because it's a number of seconds. getFileTimeFromArb(taskData, args, &ftSeconds); /* May raise exception. */ ULARGE_INTEGER liTime; liTime.HighPart = ftSeconds.dwHighDateTime; liTime.LowPart = ftSeconds.dwLowDateTime; theTime = (long)(liTime.QuadPart - SECSSINCE1601); #else theTime = get_C_long(taskData, DEREFWORDHANDLE(args)); /* May raise exception. */ #endif int isDst = 0; #ifdef HAVE_LOCALTIME_R struct tm result; struct tm *loctime = localtime_r(&theTime, &result); isDst = loctime->tm_isdst; #else { PLocker lock(&timeLock); struct tm *loctime = localtime(&theTime); if (loctime == NULL) raise_exception0(taskData, EXC_size); isDst = loctime->tm_isdst; } #endif return Make_arbitrary_precision(taskData, isDst); } case 6: /* Call strftime. It would be possible to do much of this in ML except that it requires the current locale. */ { struct tm time; char *format, buff[2048]; Handle resString; /* Get the format string. */ format = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); /* Copy the time information. */ time.tm_year = get_C_int(taskData, DEREFHANDLE(args)->Get(1)) - 1900; time.tm_mon = get_C_int(taskData, DEREFHANDLE(args)->Get(2)); time.tm_mday = get_C_int(taskData, DEREFHANDLE(args)->Get(3)); time.tm_hour = get_C_int(taskData, DEREFHANDLE(args)->Get(4)); time.tm_min = get_C_int(taskData, DEREFHANDLE(args)->Get(5)); time.tm_sec = get_C_int(taskData, DEREFHANDLE(args)->Get(6)); time.tm_wday = get_C_int(taskData, DEREFHANDLE(args)->Get(7)); time.tm_yday = get_C_int(taskData, DEREFHANDLE(args)->Get(8)); time.tm_isdst = get_C_int(taskData, DEREFHANDLE(args)->Get(9)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) _tzset(); /* Make sure we set the current locale. */ #else setlocale(LC_TIME, ""); #endif /* It would be better to dynamically allocate the string rather than use a fixed size but Unix unlike Windows does not distinguish between an error in the input and the buffer being too small. */ if (strftime(buff, sizeof(buff), format, &time) <= 0) { /* Error */ free(format); raise_exception0(taskData, EXC_size); } resString = taskData->saveVec.push(C_string_to_Poly(taskData, buff)); free(format); return resString; } case 7: /* Return User CPU time since the start. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ut, ct, et, kt; if (! GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut)) raise_syscall(taskData, "GetProcessTimes failed", GetLastError()); return Make_arb_from_Filetime(taskData, ut); #else struct rusage rusage; if (getrusage(RUSAGE_SELF, &rusage) != 0) raise_syscall(taskData, "getrusage failed", errno); return Make_arb_from_pair_scaled(taskData, rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec, 1000000); #endif } case 8: /* Return System CPU time since the start. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ct, et, kt, ut; if (! GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut)) raise_syscall(taskData, "GetProcessTimes failed", GetLastError()); return Make_arb_from_Filetime(taskData, kt); #else struct rusage rusage; if (getrusage(RUSAGE_SELF, &rusage) != 0) raise_syscall(taskData, "getrusage failed", errno); return Make_arb_from_pair_scaled(taskData, rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec, 1000000); #endif } case 9: /* Return GC time since the start. */ return gHeapSizeParameters.getGCUtime(taskData); case 10: /* Return real time since the start. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME ft; GetSystemTimeAsFileTime(&ft); subFiletimes(&ft, &startTime); return Make_arb_from_Filetime(taskData, ft); #else struct timeval tv; if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", errno); subTimevals(&tv, &startTime); return Make_arb_from_pair_scaled(taskData, tv.tv_sec, tv.tv_usec, 1000000); #endif } /* These next two are used only in the Posix structure. */ case 11: /* Return User CPU time used by child processes. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) return Make_arbitrary_precision(taskData, 0); #else struct rusage rusage; if (getrusage(RUSAGE_CHILDREN, &rusage) != 0) raise_syscall(taskData, "getrusage failed", errno); return Make_arb_from_pair_scaled(taskData, rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec, 1000000); #endif } case 12: /* Return System CPU time used by child processes. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) return Make_arbitrary_precision(taskData, 0); #else struct rusage rusage; if (getrusage(RUSAGE_CHILDREN, &rusage) != 0) raise_syscall(taskData, "getrusage failed", errno); return Make_arb_from_pair_scaled(taskData, rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec, 1000000); #endif } case 13: /* Return GC system time since the start. */ return gHeapSizeParameters.getGCStime(taskData); default: { char msg[100]; sprintf(msg, "Unknown timing function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); return 0; } } } // General interface to timing. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyTimingGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = timing_dispatch_c(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } #ifdef HAVE_WINDOWS_H void addFiletimes(FILETIME *result, const FILETIME *x) { ULARGE_INTEGER liA, liB; liA.LowPart = result->dwLowDateTime; liA.HighPart = result->dwHighDateTime; liB.LowPart = x->dwLowDateTime; liB.HighPart = x->dwHighDateTime; liA.QuadPart += liB.QuadPart; result->dwLowDateTime = liA.LowPart; result->dwHighDateTime = liA.HighPart; } void subFiletimes(FILETIME *result, const FILETIME *x) { ULARGE_INTEGER liA, liB; liA.LowPart = result->dwLowDateTime; liA.HighPart = result->dwHighDateTime; liB.LowPart = x->dwLowDateTime; liB.HighPart = x->dwHighDateTime; liA.QuadPart -= liB.QuadPart; result->dwLowDateTime = liA.LowPart; result->dwHighDateTime = liA.HighPart; } float filetimeToSeconds(const FILETIME *x) { ULARGE_INTEGER ul; ul.LowPart = x->dwLowDateTime; ul.HighPart = x->dwHighDateTime; return (float)ul.QuadPart / (float)1.0E7; } void FileTimeTime::fromSeconds(unsigned u) { ULARGE_INTEGER li; li.QuadPart = (ULONGLONG)u * TICKS_PER_MICROSECOND * 1000000; t.dwLowDateTime = li.LowPart; t.dwHighDateTime = li.HighPart; } void FileTimeTime::add(const FileTimeTime &f) { addFiletimes(&t, &f.t); } void FileTimeTime::sub(const FileTimeTime &f) { subFiletimes(&t, &f.t); } float FileTimeTime::toSeconds(void) { return filetimeToSeconds(&t); } #endif #ifdef HAVE_SYS_TIME_H void addTimevals(struct timeval *result, const struct timeval *x) { long uSecs = result->tv_usec + x->tv_usec; result->tv_sec += x->tv_sec; if (uSecs >= 1000000) { result->tv_sec++; uSecs -= 1000000; } result->tv_usec = uSecs; } void subTimevals(struct timeval *result, const struct timeval *x) { long uSecs = result->tv_usec - x->tv_usec; result->tv_sec -= x->tv_sec; if (uSecs < 0) { result->tv_sec--; uSecs += 1000000; } result->tv_usec = uSecs; } float timevalToSeconds(const struct timeval *x) { return (float)x->tv_sec + (float)x->tv_usec / 1.0E6; } void TimeValTime::add(const TimeValTime &f) { addTimevals(&t, &f.t); } void TimeValTime::sub(const TimeValTime &f) { subTimevals(&t, &f.t); } #endif struct _entrypts timingEPT[] = { { "PolyTimingGeneral", (polyRTSFunction)&PolyTimingGeneral}, { NULL, NULL} // End of list. }; class Timing: public RtsModule { public: virtual void Init(void); }; // Declare this. It will be automatically added to the table. static Timing timingModule; void Timing::Init(void) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Record an initial time of day to use as the basis of real timing GetSystemTimeAsFileTime(&startTime); #else gettimeofday(&startTime, NULL); #endif } time_t getBuildTime(void) { char *source_date_epoch = getenv("SOURCE_DATE_EPOCH"); if (source_date_epoch) { errno = 0; char *endptr; long long epoch = StrToLL(source_date_epoch, &endptr, 10); if ((errno == ERANGE && (epoch == LLONG_MIN || epoch == LLONG_MAX)) || (errno != 0 && epoch == 0)) { fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: " XSTR(StrToLL) ": %s\n", strerror(errno)); goto err; } if (endptr == source_date_epoch) { fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr); goto err; } if (*endptr != '\0') { fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr); goto err; } if (epoch < (long long)std::numeric_limits::min()) { fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be greater than or equal to: %lld but was found to be: %lld\n", (long long)std::numeric_limits::min(), epoch); goto err; } if (epoch > (long long)std::numeric_limits::max()) { fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lld but was found to be: %lld\n", (long long)std::numeric_limits::max(), epoch); goto err; } return (time_t) epoch; } err: return time(NULL); } polyml-5.7.1/libpolyml/exporter.cpp0000644000175000017500000006460013204034553016364 0ustar daviddavid/* Title: exporter.cpp - Export a function as an object or C file Copyright (c) 2006-7, 2015, 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #else #define _T(x) x #define _tcslen strlen #define _tcscmp strcmp #define _tcscat strcat #endif #include "exporter.h" #include "save_vec.h" #include "polystring.h" #include "run_time.h" #include "osmem.h" #include "scanaddrs.h" #include "gc.h" #include "machine_dep.h" #include "diagnostics.h" #include "memmgr.h" #include "processes.h" // For IO_SPACING #include "sys.h" // For EXC_Fail #include "rtsentry.h" #include "pexport.h" #ifdef HAVE_PECOFF #include "pecoffexport.h" #elif defined(HAVE_ELF_H) || defined(HAVE_ELF_ABI_H) #include "elfexport.h" #elif defined(HAVE_MACH_O_RELOC_H) #include "machoexport.h" #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define NOMEMORY ERROR_NOT_ENOUGH_MEMORY #define ERRORNUMBER _doserrno #else #define NOMEMORY ENOMEM #define ERRORNUMBER errno #endif extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyExport(PolyObject *threadId, PolyWord fileName, PolyWord root); POLYEXTERNALSYMBOL POLYUNSIGNED PolyExportPortable(PolyObject *threadId, PolyWord fileName, PolyWord root); } /* To export the function and everything reachable from it we need to copy all the objects into a new area. We leave tombstones in the original objects by overwriting the length word. That prevents us from copying an object twice and breaks loops. Once we've copied the objects we then have to go back over the memory and turn the tombstones back into length words. */ GraveYard::~GraveYard() { free(graves); } CopyScan::CopyScan(unsigned h/*=0*/): hierarchy(h) { defaultImmSize = defaultMutSize = defaultCodeSize = defaultNoOverSize = 0; tombs = 0; graveYard = 0; } void CopyScan::initialise(bool isExport/*=true*/) { ASSERT(gMem.eSpaces.size() == 0); // Set the space sizes to a proportion of the space currently in use. // Computing these sizes is not obvious because CopyScan is used both // for export and for saved states. For saved states in particular we // want to use a smaller size because they are retained after we save // the state and if we have many child saved states it's important not // to waste memory. if (hierarchy == 0) { graveYard = new GraveYard[gMem.pSpaces.size()]; if (graveYard == 0) { if (debugOptions & DEBUG_SAVING) Log("SAVE: Unable to allocate graveyard, size: %lu.\n", gMem.pSpaces.size()); throw MemoryException(); } } for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->hierarchy >= hierarchy) { // Include this if we're exporting (hierarchy=0) or if we're saving a state // and will include this in the new state. POLYUNSIGNED size = (space->top-space->bottom)/4; if (space->noOverwrite) defaultNoOverSize += size; else if (space->isMutable) defaultMutSize += size; else if (space->isCode) defaultCodeSize += size; else defaultImmSize += size; if (space->hierarchy == 0 && ! space->isMutable) { // We need a separate area for the tombstones because this is read-only graveYard[tombs].graves = (PolyWord*)calloc(space->spaceSize(), sizeof(PolyWord)); if (graveYard[tombs].graves == 0) { if (debugOptions & DEBUG_SAVING) Log("SAVE: Unable to allocate graveyard for permanent space, size: %lu.\n", space->spaceSize() * sizeof(PolyWord)); throw MemoryException(); } if (debugOptions & DEBUG_SAVING) Log("SAVE: Allocated graveyard for permanent space, %p size: %lu.\n", graveYard[tombs].graves, space->spaceSize() * sizeof(PolyWord)); graveYard[tombs].startAddr = space->bottom; graveYard[tombs].endAddr = space->top; tombs++; } } } for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; POLYUNSIGNED size = space->allocatedSpace(); // It looks as though the mutable size generally gets // overestimated while the immutable size is correct. if (space->isMutable) defaultMutSize += size/4; else defaultImmSize += size/2; } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; POLYUNSIGNED size = space->spaceSize(); defaultCodeSize += size/2; } if (isExport) { // Minimum 1M words. if (defaultMutSize < 1024*1024) defaultMutSize = 1024*1024; if (defaultImmSize < 1024*1024) defaultImmSize = 1024*1024; if (defaultCodeSize < 1024*1024) defaultCodeSize = 1024*1024; } else { // Much smaller minimum sizes for saved states. if (defaultMutSize < 1024) defaultMutSize = 1024; if (defaultImmSize < 4096) defaultImmSize = 4096; if (defaultCodeSize < 4096) defaultImmSize = 4096; if (defaultNoOverSize < 4096) defaultNoOverSize = 4096; // Set maximum sizes as well. We may have insufficient contiguous space for // very large areas. if (defaultMutSize > 1024 * 1024) defaultMutSize = 1024 * 1024; if (defaultImmSize > 1024 * 1024) defaultImmSize = 1024 * 1024; if (defaultCodeSize > 1024 * 1024) defaultCodeSize = 1024 * 1024; if (defaultNoOverSize > 1024 * 1024) defaultNoOverSize = 1024 * 1024; } if (debugOptions & DEBUG_SAVING) Log("SAVE: Copyscan default sizes: Immutable: %lu, Mutable: %lu, Code: %lu.\n", defaultImmSize, defaultMutSize, defaultCodeSize); } CopyScan::~CopyScan() { gMem.DeleteExportSpaces(); if (graveYard) delete[](graveYard); } // This function is called for each address in an object // once it has been copied to its new location. We copy first // then scan to update the addresses. POLYUNSIGNED CopyScan::ScanAddressAt(PolyWord *pt) { PolyWord val = *pt; // Ignore integers. if (IS_INT(val) || val == PolyWord::FromUnsigned(0)) return 0; // Ignore pointers to the IO area. They will be relocated // when we write out the memory MemSpace *space = gMem.SpaceForAddress(val.AsStackAddr()-1); ASSERT(space != 0); // We may sometimes get addresses that have already been updated // to point to the new area. e.g. (only?) in the case of constants // that have been updated in ScanConstantsWithinCode. if (space->spaceType == ST_EXPORT) return 0; // If this is at a lower level than the hierarchy we are saving // then leave it untouched. if (space->spaceType == ST_PERMANENT) { PermanentMemSpace *pmSpace = (PermanentMemSpace*)space; if (pmSpace->hierarchy < hierarchy) return 0; } ASSERT(OBJ_IS_DATAPTR(val)); // Have we already scanned this? PolyObject *obj = val.AsObjPtr(); if (obj->ContainsForwardingPtr()) { // Update the address to the new value. PolyObject *newAddr = obj->GetForwardingPtr(); *pt = newAddr; return 0; // No need to scan it again. } else if (space->spaceType == ST_PERMANENT) { // See if we have this in the grave-yard. for (unsigned i = 0; i < tombs; i++) { GraveYard *g = &graveYard[i]; if (val.AsStackAddr() >= g->startAddr && val.AsStackAddr() < g->endAddr) { PolyWord *tombAddr = g->graves + (val.AsStackAddr() - g->startAddr); PolyObject *tombObject = (PolyObject*)tombAddr; if (tombObject->ContainsForwardingPtr()) { *pt = tombObject->GetForwardingPtr();; return 0; } break; // No need to look further } } } // No, we need to copy it. ASSERT(space->spaceType == ST_LOCAL || space->spaceType == ST_PERMANENT || space->spaceType == ST_CODE); POLYUNSIGNED lengthWord = obj->LengthWord(); POLYUNSIGNED words = OBJ_OBJECT_LENGTH(lengthWord); PolyObject *newObj = 0; bool isMutableObj = obj->IsMutable(); bool isNoOverwrite = false; bool isByteObj = false; bool isCodeObj = false; if (isMutableObj) { isNoOverwrite = obj->IsNoOverwriteObject(); isByteObj = obj->IsByteObject(); } else isCodeObj = obj->IsCodeObject(); // Allocate a new address for the object. for (std::vector::iterator i = gMem.eSpaces.begin(); i < gMem.eSpaces.end(); i++) { PermanentMemSpace *space = *i; if (isMutableObj == space->isMutable && isNoOverwrite == space->noOverwrite && isByteObj == space->byteOnly && isCodeObj == space->isCode) { ASSERT(space->topPointer <= space->top && space->topPointer >= space->bottom); POLYUNSIGNED spaceLeft = space->top - space->topPointer; if (spaceLeft > words) { newObj = (PolyObject*)(space->topPointer+1); space->topPointer += words+1; break; } } } if (newObj == 0) { // Didn't find room in the existing spaces. Create a new space. POLYUNSIGNED spaceWords; if (isMutableObj) { if (isNoOverwrite) spaceWords = defaultNoOverSize; else spaceWords = defaultMutSize; } else { if (isCodeObj) spaceWords = defaultCodeSize; else spaceWords = defaultImmSize; } if (spaceWords <= words) spaceWords = words+1; // Make sure there's space for this object. PermanentMemSpace *space = gMem.NewExportSpace(spaceWords, isMutableObj, isNoOverwrite, isCodeObj); if (isByteObj) space->byteOnly = true; if (space == 0) { if (debugOptions & DEBUG_SAVING) Log("SAVE: Unable to allocate export space, size: %lu.\n", spaceWords); // Unable to allocate this. throw MemoryException(); } newObj = (PolyObject*)(space->topPointer+1); space->topPointer += words+1; ASSERT(space->topPointer <= space->top && space->topPointer >= space->bottom); } newObj->SetLengthWord(lengthWord); // copy length word memcpy(newObj, obj, words*sizeof(PolyWord)); if (space->spaceType == ST_PERMANENT && !space->isMutable && ((PermanentMemSpace*)space)->hierarchy == 0) { // The immutable permanent areas are read-only. unsigned m; for (m = 0; m < tombs; m++) { GraveYard *g = &graveYard[m]; if (val.AsStackAddr() >= g->startAddr && val.AsStackAddr() < g->endAddr) { PolyWord *tombAddr = g->graves + (val.AsStackAddr() - g->startAddr); PolyObject *tombObject = (PolyObject*)tombAddr; tombObject->SetForwardingPtr(newObj); break; // No need to look further } } ASSERT(m < tombs); // Should be there. } else obj->SetForwardingPtr(newObj); // Put forwarding pointer in old object. if (OBJ_IS_CODE_OBJECT(lengthWord)) { // We don't need to worry about flushing the instruction cache // since we're not going to execute this code here. // We do have to update any relative addresses within the code // to take account of its new position. We have to do that now // even though ScanAddressesInObject will do it again because this // is the only point where we have both the old and the new addresses. machineDependent->ScanConstantsWithinCode(newObj, obj, words, this); } *pt = newObj; // Update it to the newly copied object. return lengthWord; // This new object needs to be scanned. } PolyObject *CopyScan::ScanObjectAddress(PolyObject *base) { PolyWord val = base; // Scan this as an address. POLYUNSIGNED lengthWord = CopyScan::ScanAddressAt(&val); if (lengthWord) ScanAddressesInObject(val.AsObjPtr(), lengthWord); return val.AsObjPtr(); } #define MAX_EXTENSION 4 // The longest extension we may need to add is ".obj" // Convert the forwarding pointers in a region back into length words. // Generally if this object has a forwarding pointer that's // because we've moved it into the export region. We can, // though, get multiple levels of forwarding if there is an object // that has been shifted up by a garbage collection, leaving a forwarding // pointer and then that object has been moved to the export region. // We mustn't turn locally forwarded values back into ordinary objects // because they could contain addresses that are no longer valid. static POLYUNSIGNED GetObjLength(PolyObject *obj) { if (obj->ContainsForwardingPtr()) { PolyObject *forwardedTo = obj->GetForwardingPtr(); POLYUNSIGNED length = GetObjLength(forwardedTo); MemSpace *space = gMem.SpaceForAddress(forwardedTo-1); if (space->spaceType == ST_EXPORT) obj->SetLengthWord(length); return length; } else { ASSERT(obj->ContainsNormalLengthWord()); return obj->LengthWord(); } } static void FixForwarding(PolyWord *pt, POLYUNSIGNED space) { while (space) { pt++; PolyObject *obj = (PolyObject*)pt; POLYUNSIGNED length = OBJ_OBJECT_LENGTH(GetObjLength(obj)); pt += length; ASSERT(space > length); space -= length+1; } } class ExportRequest: public MainThreadRequest { public: ExportRequest(Handle root, Exporter *exp): MainThreadRequest(MTP_EXPORTING), exportRoot(root), exporter(exp) {} virtual void Perform() { exporter->RunExport(exportRoot->WordP()); } Handle exportRoot; Exporter *exporter; }; static void exporter(TaskData *taskData, Handle fileName, Handle root, const TCHAR *extension, Exporter *exports) { size_t extLen = _tcslen(extension); TempString fileNameBuff(Poly_string_to_T_alloc(fileName->Word(), extLen)); if (fileNameBuff == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); size_t length = _tcslen(fileNameBuff); // Does it already have the extension? If not add it on. if (length < extLen || _tcscmp(fileNameBuff + length - extLen, extension) != 0) _tcscat(fileNameBuff, extension); #if (defined(_WIN32) && defined(UNICODE)) exports->exportFile = _wfopen(fileNameBuff, L"wb"); #else exports->exportFile = fopen(fileNameBuff, "wb"); #endif if (exports->exportFile == NULL) raise_syscall(taskData, "Cannot open export file", ERRORNUMBER); // Request a full GC to reduce the size of fix-ups. FullGC(taskData); // Request the main thread to do the export. ExportRequest request(root, exports); processes->MakeRootRequest(taskData, &request); if (exports->errorMessage) raise_fail(taskData, exports->errorMessage); } // This is called by the initial thread to actually do the export. void Exporter::RunExport(PolyObject *rootFunction) { Exporter *exports = this; PolyObject *copiedRoot = 0; CopyScan copyScan(hierarchy); try { copyScan.initialise(); // Copy the root and everything reachable from it into the temporary area. copiedRoot = copyScan.ScanObjectAddress(rootFunction); } catch (MemoryException &) { // If we ran out of memory. copiedRoot = 0; } // Fix the forwarding pointers. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; // Local areas only have objects from the allocation pointer to the top. FixForwarding(space->bottom, space->lowerAllocPtr - space->bottom); FixForwarding(space->upperAllocPtr, space->top - space->upperAllocPtr); } for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { MemSpace *space = *i; // Permanent areas are filled with objects from the bottom. FixForwarding(space->bottom, space->top - space->bottom); } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { MemSpace *space = *i; // Code areas are filled with objects from the bottom. FixForwarding(space->bottom, space->top - space->bottom); } // Reraise the exception after cleaning up the forwarding pointers. if (copiedRoot == 0) { exports->errorMessage = "Insufficient Memory"; return; } // Copy the areas into the export object. size_t tableEntries = gMem.eSpaces.size(); unsigned memEntry = 0; if (hierarchy != 0) tableEntries += gMem.pSpaces.size(); exports->memTable = new memoryTableEntry[tableEntries]; // If we're constructing a module we need to include the global spaces. if (hierarchy != 0) { // Permanent spaces from the executable. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->hierarchy < hierarchy) { memoryTableEntry *entry = &exports->memTable[memEntry++]; entry->mtAddr = space->bottom; entry->mtLength = (space->topPointer-space->bottom)*sizeof(PolyWord); entry->mtIndex = space->index; entry->mtFlags = 0; if (space->isMutable) entry->mtFlags |= MTF_WRITEABLE; if (space->isCode) entry->mtFlags |= MTF_EXECUTABLE; } } newAreas = memEntry; } for (std::vector::iterator i = gMem.eSpaces.begin(); i < gMem.eSpaces.end(); i++) { memoryTableEntry *entry = &exports->memTable[memEntry++]; PermanentMemSpace *space = *i; entry->mtAddr = space->bottom; entry->mtLength = (space->topPointer-space->bottom)*sizeof(PolyWord); entry->mtIndex = hierarchy == 0 ? memEntry-1 : space->index; entry->mtFlags = 0; if (space->isMutable) { entry->mtFlags = MTF_WRITEABLE; if (space->noOverwrite) entry->mtFlags |= MTF_NO_OVERWRITE; } if (space->isCode) entry->mtFlags |= MTF_EXECUTABLE; if (space->byteOnly) entry->mtFlags |= MTF_BYTES; } ASSERT(memEntry == tableEntries); exports->memTableEntries = memEntry; exports->rootFunction = copiedRoot; exports->exportStore(); return; } // Functions called via the RTS call. Handle exportNative(TaskData *taskData, Handle args) { #ifdef HAVE_PECOFF // Windows including Cygwin #if (defined(_WIN32) && ! defined(__CYGWIN__)) const TCHAR *extension = _T(".obj"); // Windows #else const char *extension = ".o"; // Cygwin #endif PECOFFExport exports; exporter(taskData, taskData->saveVec.push(args->WordP()->Get(0)), taskData->saveVec.push(args->WordP()->Get(1)), extension, &exports); #elif defined(HAVE_ELF_H) || defined(HAVE_ELF_ABI_H) // Most Unix including Linux, FreeBSD and Solaris. const char *extension = ".o"; ELFExport exports; exporter(taskData, taskData->saveVec.push(args->WordP()->Get(0)), taskData->saveVec.push(args->WordP()->Get(1)), extension, &exports); #elif defined(HAVE_MACH_O_RELOC_H) // Mac OS-X const char *extension = ".o"; MachoExport exports; exporter(taskData, taskData->saveVec.push(args->WordP()->Get(0)), taskData->saveVec.push(args->WordP()->Get(1)), extension, &exports); #else raise_exception_string (taskData, EXC_Fail, "Native export not available for this platform"); #endif return taskData->saveVec.push(TAGGED(0)); } Handle exportPortable(TaskData *taskData, Handle args) { PExport exports; exporter(taskData, taskData->saveVec.push(args->WordP()->Get(0)), taskData->saveVec.push(args->WordP()->Get(1)), _T(".txt"), &exports); return taskData->saveVec.push(TAGGED(0)); } POLYUNSIGNED PolyExport(PolyObject *threadId, PolyWord fileName, PolyWord root) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedName = taskData->saveVec.push(fileName); Handle pushedRoot = taskData->saveVec.push(root); try { #ifdef HAVE_PECOFF // Windows including Cygwin #if (defined(_WIN32) && ! defined(__CYGWIN__)) const TCHAR *extension = _T(".obj"); // Windows #else const char *extension = ".o"; // Cygwin #endif PECOFFExport exports; exporter(taskData, pushedName, pushedRoot, extension, &exports); #elif defined(HAVE_ELF_H) || defined(HAVE_ELF_ABI_H) // Most Unix including Linux, FreeBSD and Solaris. const char *extension = ".o"; ELFExport exports; exporter(taskData, pushedName, pushedRoot, extension, &exports); #elif defined(HAVE_MACH_O_RELOC_H) // Mac OS-X const char *extension = ".o"; MachoExport exports; exporter(taskData, pushedName, pushedRoot, extension, &exports); #else raise_exception_string (taskData, EXC_Fail, "Native export not available for this platform"); #endif } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Returns unit } POLYUNSIGNED PolyExportPortable(PolyObject *threadId, PolyWord fileName, PolyWord root) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedName = taskData->saveVec.push(fileName); Handle pushedRoot = taskData->saveVec.push(root); try { PExport exports; exporter(taskData, pushedName, pushedRoot, _T(".txt"), &exports); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Returns unit } // Helper functions for exporting. We need to produce relocation information // and this code is common to every method. Exporter::Exporter(unsigned int h): exportFile(NULL), errorMessage(0), hierarchy(h), memTable(0), newAreas(0) { } Exporter::~Exporter() { delete[](memTable); if (exportFile) fclose(exportFile); } void Exporter::relocateValue(PolyWord *pt) { PolyWord q = *pt; if (IS_INT(q) || q == PolyWord::FromUnsigned(0)) {} else createRelocation(pt); } // Check through the areas to see where the address is. It must be // in one of them. unsigned Exporter::findArea(void *p) { for (unsigned i = 0; i < memTableEntries; i++) { if (p > memTable[i].mtAddr && p <= (char*)memTable[i].mtAddr + memTable[i].mtLength) return i; } { ASSERT(0); } return 0; } void Exporter::relocateObject(PolyObject *p) { if (p->IsByteObject()) { if (p->IsMutable() && p->IsWeakRefObject()) { // Weak mutable byte refs are used for external references and // also in the FFI for non-persistent values. const char *entryName = getEntryPointName(p); if (entryName != 0) addExternalReference(p, entryName); // Clear the first word of the data. ASSERT(p->Length() > 0); p->Set(0, PolyWord::FromSigned(0)); } } else if (p->IsCodeObject()) { POLYUNSIGNED constCount; PolyWord *cp; ASSERT(! p->IsMutable() ); p->GetConstSegmentForCode(cp, constCount); /* Now the constants. */ for (POLYUNSIGNED i = 0; i < constCount; i++) relocateValue(&(cp[i])); } else /* Ordinary objects, essentially tuples. */ { POLYUNSIGNED length = p->Length(); for (POLYUNSIGNED i = 0; i < length; i++) relocateValue(p->Offset(i)); } } ExportStringTable::ExportStringTable(): strings(0), stringSize(0), stringAvailable(0) { } ExportStringTable::~ExportStringTable() { free(strings); } // Add a string to the string table, growing it if necessary. unsigned long ExportStringTable::makeEntry(const char *str) { unsigned len = (unsigned)strlen(str); unsigned long entry = stringSize; if (stringSize + len + 1 > stringAvailable) { stringAvailable = stringAvailable+stringAvailable/2; if (stringAvailable < stringSize + len + 1) stringAvailable = stringSize + len + 1 + 500; strings = (char*)realloc(strings, stringAvailable); if (strings == 0) { if (debugOptions & DEBUG_SAVING) Log("SAVE: Unable to realloc string table, size: %lu.\n", stringAvailable); throw MemoryException(); } } strcpy(strings + stringSize, str); stringSize += len + 1; return entry; } struct _entrypts exporterEPT[] = { { "PolyExport", (polyRTSFunction)&PolyExport}, { "PolyExportPortable", (polyRTSFunction)&PolyExportPortable}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/profiling.h0000644000175000017500000000312113204034553016141 0ustar daviddavid/* Title: profiling.h Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright (c) David C.J. Matthews 2011, 2-15 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _PROFILING_H_DEFINED #define _PROFILING_H_DEFINED 1 class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; // Current profiling mode typedef enum { kProfileOff = 0, kProfileTime, kProfileStoreAllocation, kProfileEmulation, // No longer used kProfileLiveData, kProfileLiveMutables, kProfileTimeThread, kProfileMutexContention } ProfileMode; extern ProfileMode profileMode; #include "processes.h" // For SIGNALCONTEXT extern void handleProfileTrap(TaskData *taskData, SIGNALCONTEXT *context); extern void add_count(TaskData *taskData, POLYCODEPTR pc,POLYUNSIGNED incr); extern void AddObjectProfile(PolyObject *obj); extern struct _entrypts profilingEPT[]; #endif /* _PROFILING_H_DEFINED */ polyml-5.7.1/libpolyml/mpoly.cpp0000644000175000017500000004563713204034553015665 0ustar daviddavid/* Title: Main program Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2001-12, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #else #define _T(x) x #define _tcslen strlen #define _tcstol strtol #define _tcsncmp strncmp #define _tcschr strchr #endif #include "globals.h" #include "sys.h" #include "gc.h" #include "heapsizing.h" #include "run_time.h" #include "machine_dep.h" #include "version.h" #include "diagnostics.h" #include "processes.h" #include "mpoly.h" #include "scanaddrs.h" #include "save_vec.h" #include "../polyexports.h" #include "memmgr.h" #include "pexport.h" #include "polystring.h" #include "statistics.h" #include "noreturn.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include "Console.h" static const TCHAR *lpszServiceName = 0; // DDE service name #endif FILE *polyStdout, *polyStderr; // Redirected in the Windows GUI static void InitHeaderFromExport(exportDescription *exports); NORETURNFN(static void Usage(const char *message, ...)); struct _userOptions userOptions; time_t exportTimeStamp; enum { OPT_HEAPMIN, OPT_HEAPMAX, OPT_HEAPINIT, OPT_GCPERCENT, OPT_RESERVE, OPT_GCTHREADS, OPT_DEBUGOPTS, OPT_DEBUGFILE, OPT_DDESERVICE, OPT_CODEPAGE, OPT_REMOTESTATS }; static struct __argtab { const TCHAR *argName; const char *argHelp; unsigned argKey; } argTable[] = { { _T("-H"), "Initial heap size (MB)", OPT_HEAPINIT }, { _T("--minheap"), "Minimum heap size (MB)", OPT_HEAPMIN }, { _T("--maxheap"), "Maximum heap size (MB)", OPT_HEAPMAX }, { _T("--gcpercent"), "Target percentage time in GC (1-99)", OPT_GCPERCENT }, { _T("--stackspace"), "Space to reserve for thread stacks and C++ heap(MB)", OPT_RESERVE }, { _T("--gcthreads"), "Number of threads to use for garbage collection", OPT_GCTHREADS }, { _T("--debug"), "Debug options: checkmem, gc, x", OPT_DEBUGOPTS }, { _T("--logfile"), "Logging file (default is to log to stdout)", OPT_DEBUGFILE }, #if (defined(_WIN32) && ! defined(__CYGWIN__)) #ifdef UNICODE { _T("--codepage"), "Code-page to use for file-names etc in Windows", OPT_CODEPAGE }, #endif { _T("-pServiceName"), "DDE service name for remote interrupt in Windows", OPT_DDESERVICE } #else { _T("--exportstats"), "Enable another process to read the statistics", OPT_REMOTESTATS } #endif }; static struct __debugOpts { const TCHAR *optName; const char *optHelp; unsigned optKey; } debugOptTable[] = { { _T("checkmem"), "Perform additional debugging checks on memory", DEBUG_CHECK_OBJECTS }, { _T("gc"), "Log summary garbage-collector information", DEBUG_GC }, { _T("gcenhanced"), "Log enhanced garbage-collector information", DEBUG_GC_ENHANCED }, { _T("gcdetail"), "Log detailed garbage-collector information", DEBUG_GC_DETAIL }, { _T("memmgr"), "Memory manager information", DEBUG_MEMMGR }, { _T("threads"), "Thread related information", DEBUG_THREADS }, { _T("gctasks"), "Log multi-thread GC information", DEBUG_GCTASKS }, { _T("heapsize"), "Log heap resizing data", DEBUG_HEAPSIZE }, { _T("x"), "Log X-windows information", DEBUG_X}, { _T("sharing"), "Information from PolyML.shareCommonData", DEBUG_SHARING}, { _T("locks"), "Information about contended locks", DEBUG_CONTENTION}, { _T("rts"), "General run-time system calls", DEBUG_RTSCALLS}, { _T("saving"), "Saving and loading state; exporting", DEBUG_SAVING } }; // Parse a parameter that is meant to be a size. Returns the value as a number // of kilobytes. POLYUNSIGNED parseSize(const TCHAR *p, const TCHAR *arg) { POLYUNSIGNED result = 0; if (*p < '0' || *p > '9') // There must be at least one digit Usage("Incomplete %s option\n", arg); while (true) { result = result*10 + *p++ - '0'; if (*p == 0) { // The default is megabytes result *= 1024; break; } if (*p == 'G' || *p == 'g') { result *= 1024 * 1024; p++; break; } if (*p == 'M' || *p == 'm') { result *= 1024; p++; break; } if (*p == 'K' || *p == 'k') { p++; break; } if (*p < '0' || *p > '9') break; } if (*p != 0) Usage("Malformed %s option\n", arg); // Check that the number of kbytes is less than the address space. // The value could overflow when converted to bytes. if (result >= ((POLYUNSIGNED)1 << (SIZEOF_VOIDP*8 - 10))) Usage("Value of %s option is too large\n", arg); return result; } /* In the Windows version this is called from WinMain in Console.c */ int polymain(int argc, TCHAR **argv, exportDescription *exports) { POLYUNSIGNED minsize=0, maxsize=0, initsize=0; unsigned gcpercent=0; /* Get arguments. */ memset(&userOptions, 0, sizeof(userOptions)); /* Reset it */ userOptions.gcthreads = 0; // Default multi-threaded if (polyStdout == 0) polyStdout = stdout; if (polyStderr == 0) polyStderr = stderr; // Get the program name for CommandLine.name. This is allowed to be a full path or // just the last component so we return whatever the system provides. if (argc > 0) userOptions.programName = argv[0]; else userOptions.programName = _T(""); // Set it to a valid empty string TCHAR *importFileName = 0; debugOptions = 0; userOptions.user_arg_count = 0; userOptions.user_arg_strings = (TCHAR**)malloc(argc * sizeof(TCHAR*)); // Enough room for all of them // Process the argument list removing those recognised by the RTS and adding the // remainder to the user argument list. for (int i = 1; i < argc; i++) { if (argv[i][0] == '-') { bool argUsed = false; for (unsigned j = 0; j < sizeof(argTable)/sizeof(argTable[0]); j++) { size_t argl = _tcslen(argTable[j].argName); if (_tcsncmp(argv[i], argTable[j].argName, argl) == 0) { const TCHAR *p = 0; TCHAR *endp = 0; if (argTable[j].argKey != OPT_REMOTESTATS) { if (_tcslen(argv[i]) == argl) { // If it has used all the argument pick the next i++; p = argv[i]; } else { p = argv[i]+argl; if (*p == '=') p++; // Skip an equals sign } if (i >= argc) Usage("Incomplete %s option\n", argTable[j].argName); } switch (argTable[j].argKey) { case OPT_HEAPMIN: minsize = parseSize(p, argTable[j].argName); break; case OPT_HEAPMAX: maxsize = parseSize(p, argTable[j].argName); break; case OPT_HEAPINIT: initsize = parseSize(p, argTable[j].argName); break; case OPT_GCPERCENT: gcpercent = _tcstol(p, &endp, 10); if (*endp != '\0') Usage("Malformed %s option\n", argTable[j].argName); if (gcpercent < 1 || gcpercent > 99) { Usage("%s argument must be between 1 and 99\n", argTable[j].argName); gcpercent = 0; } break; case OPT_RESERVE: { POLYUNSIGNED reserve = parseSize(p, argTable[j].argName); if (reserve != 0) gHeapSizeParameters.SetReservation(reserve); break; } case OPT_GCTHREADS: userOptions.gcthreads = _tcstol(p, &endp, 10); if (*endp != '\0') Usage("Incomplete %s option\n", argTable[j].argName); break; case OPT_DEBUGOPTS: while (*p != '\0') { // Debug options are separated by commas bool optFound = false; const TCHAR *q = _tcschr(p, ','); if (q == NULL) q = p+_tcslen(p); for (unsigned k = 0; k < sizeof(debugOptTable)/sizeof(debugOptTable[0]); k++) { if (_tcslen(debugOptTable[k].optName) == (size_t)(q-p) && _tcsncmp(p, debugOptTable[k].optName, q-p) == 0) { debugOptions |= debugOptTable[k].optKey; optFound = true; } } if (! optFound) Usage("Unknown argument to --debug\n"); if (*q == ',') p = q+1; else p = q; } if (debugOptions & DEBUG_GC_DETAIL) debugOptions |= DEBUG_GC_ENHANCED; if (debugOptions & DEBUG_GC_ENHANCED) debugOptions |= DEBUG_GC; break; case OPT_DEBUGFILE: SetLogFile(p); break; #if (defined(_WIN32) && ! defined(__CYGWIN__)) case OPT_DDESERVICE: // Set the name for the DDE service. This allows the caller to specify the // service name to be used to send Interrupt "signals". lpszServiceName = p; break; #if (defined(UNICODE)) case OPT_CODEPAGE: if (! setWindowsCodePage(p)) Usage("Unknown argument to --codepage. Use code page number or CP_ACP, CP_UTF8.\n"); break; #endif #endif case OPT_REMOTESTATS: // If set we export the statistics on Unix. globalStats.exportStats = true; break; } argUsed = true; break; } } if (! argUsed) // Add it to the user args. userOptions.user_arg_strings[userOptions.user_arg_count++] = argv[i]; } else if (exports == 0 && importFileName == 0) importFileName = argv[i]; else userOptions.user_arg_strings[userOptions.user_arg_count++] = argv[i]; } if (exports == 0 && importFileName == 0) Usage("Missing import file name\n"); // If the maximum is provided it must be not less than the minimum. if (maxsize != 0 && maxsize < minsize) Usage("Minimum heap size must not be more than maximum size\n"); // The initial size must be not more than the maximum if (maxsize != 0 && maxsize < initsize) Usage("Initial heap size must not be more than maximum size\n"); // The initial size must be not less than the minimum if (initsize != 0 && initsize < minsize) Usage("Initial heap size must not be less than minimum size\n"); if (userOptions.gcthreads == 0) { // If the gcthreads option is missing or zero the default is to try to // use as many threads as there are physical processors. The result may // be zero in which case we use the number of processors. Because memory // bandwidth is a limiting factor we want to avoid muliple GC threads on // hyperthreaded "processors". userOptions.gcthreads = NumberOfPhysicalProcessors(); if (userOptions.gcthreads == 0) userOptions.gcthreads = NumberOfProcessors(); } // Set the heap size if it has been provided otherwise use the default. gHeapSizeParameters.SetHeapParameters(minsize, maxsize, initsize, gcpercent); #if (defined(_WIN32) && ! defined(__CYGWIN__)) SetupDDEHandler(lpszServiceName); // Windows: Start the DDE handler now we processed any service name. #endif // Initialise the run-time system before creating the heap. InitModules(); CreateHeap(); PolyObject *rootFunction = 0; if (exports != 0) { InitHeaderFromExport(exports); rootFunction = (PolyObject *)exports->rootFunction; } else { if (importFileName != 0) rootFunction = ImportPortable(importFileName); if (rootFunction == 0) exit(1); } StartModules(); // Set up the initial process to run the root function. processes->BeginRootThread(rootFunction); finish(0); /*NOTREACHED*/ return 0; /* just to keep lint happy */ } void Uninitialise(void) // Close down everything and free all resources. Stop any threads or timers. { StopModules(); } void finish (int n) { // Make sure we don't get any interrupts once the destructors are // applied to globals or statics. Uninitialise(); #if (defined(_WIN32) && ! defined(__CYGWIN__)) ExitThread(n); #else exit (n); #endif } // Print a message and exit if an argument is malformed. void Usage(const char *message, ...) { va_list vl; fprintf(polyStdout, "\n"); va_start(vl, message); vfprintf(polyStdout, message, vl); va_end(vl); for (unsigned j = 0; j < sizeof(argTable)/sizeof(argTable[0]); j++) { #if (defined(_WIN32) && defined(UNICODE)) fprintf(polyStdout, "%S <%s>\n", argTable[j].argName, argTable[j].argHelp); #else fprintf(polyStdout, "%s <%s>\n", argTable[j].argName, argTable[j].argHelp); #endif } fprintf(polyStdout, "Debug options:\n"); for (unsigned k = 0; k < sizeof(debugOptTable)/sizeof(debugOptTable[0]); k++) { #if (defined(_WIN32) && defined(UNICODE)) fprintf(polyStdout, "%S <%s>\n", debugOptTable[k].optName, debugOptTable[k].optHelp); #else fprintf(polyStdout, "%s <%s>\n", debugOptTable[k].optName, debugOptTable[k].optHelp); #endif } fflush(polyStdout); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (useConsole) { MessageBox(hMainWindow, _T("Poly/ML has exited"), _T("Poly/ML"), MB_OK); } #endif exit (1); } // Return a string containing the argument names. Can be printed out in response // to a --help argument. It is up to the ML application to do that since it may well // want to produce information about any arguments it chooses to process. char *RTSArgHelp(void) { static char buff[2000]; char *p = buff; for (unsigned j = 0; j < sizeof(argTable)/sizeof(argTable[0]); j++) { #if (defined(_WIN32) && defined(UNICODE)) int spaces = sprintf(p, "%S <%s>\n", argTable[j].argName, argTable[j].argHelp); #else int spaces = sprintf(p, "%s <%s>\n", argTable[j].argName, argTable[j].argHelp); #endif p += spaces; } { int spaces = sprintf(p, "Debug options:\n"); p += spaces; } for (unsigned k = 0; k < sizeof(debugOptTable)/sizeof(debugOptTable[0]); k++) { #if (defined(_WIN32) && defined(UNICODE)) int spaces = sprintf(p, "%S <%s>\n", debugOptTable[k].optName, debugOptTable[k].optHelp); #else int spaces = sprintf(p, "%s <%s>\n", debugOptTable[k].optName, debugOptTable[k].optHelp); #endif p += spaces; } ASSERT((unsigned)(p - buff) < (unsigned)sizeof(buff)); return buff; } void InitHeaderFromExport(exportDescription *exports) { // Check the structure sizes stored in the export structure match the versions // used in this library. if (exports->structLength != sizeof(exportDescription) || exports->memTableSize != sizeof(memoryTableEntry) || exports->rtsVersion < FIRST_supported_version || exports->rtsVersion > LAST_supported_version) { #if (FIRST_supported_version == LAST_supported_version) Exit("The exported object file has version %0.2f but this library supports %0.2f", ((float)exports->rtsVersion) / 100.0, ((float)FIRST_supported_version) / 100.0); #else Exit("The exported object file has version %0.2f but this library supports %0.2f-%0.2f", ((float)exports->rtsVersion) / 100.0, ((float)FIRST_supported_version) / 100.0, ((float)LAST_supported_version) / 100.0); #endif } // We could also check the RTS version and the architecture. exportTimeStamp = exports->timeStamp; // Needed for load and save. memoryTableEntry *memTable = exports->memTable; for (unsigned i = 0; i < exports->memTableEntries; i++) { // Construct a new space for each of the entries. if (gMem.NewPermanentSpace( (PolyWord*)memTable[i].mtAddr, memTable[i].mtLength/sizeof(PolyWord), (unsigned)memTable[i].mtFlags, (unsigned)memTable[i].mtIndex) == 0) Exit("Unable to initialise a permanent memory space"); } } polyml-5.7.1/libpolyml/unix_specific.cpp0000644000175000017500000021526013204034553017344 0ustar daviddavid/* Title: Operating Specific functions: Unix version. Copyright (c) 2000-8, 2016 David C. J. Matthews Portions of this code are derived from the original stream io package copyright CUTS 1983-2000. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_LIMITS_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_PWD_H #include #endif #ifdef HAVE_GRP_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_SIGNAL_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_TERMIOS_H #include #elif (defined(HAVE_TERMIOS_H)) #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_SYS_UTSNAME_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #include "globals.h" #include "arb.h" #include "run_time.h" #include "io_internal.h" #include "sys.h" #include "diagnostics.h" #include "machine_dep.h" #include "os_specific.h" #include "gc.h" #include "processes.h" #include "mpoly.h" #include "sighandler.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyOSSpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetOSType(); } #define STREAMID(x) (DEREFSTREAMHANDLE(x)->streamNo) #define SAVE(x) taskData->saveVec.push(x) #define ALLOC(n) alloc_and_save(taskData, n) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) /* Table of constants returned by call 4. */ // This is currently unsigned because that's necessary on the PowerPC for // NOFLUSH. Perhaps there should be separate tables for different kinds // of constants. static unsigned unixConstVec[] = { /* Error codes. */ E2BIG, /* 0 */ EACCES, EAGAIN, EBADF, #ifdef EBADMSG /* This is not defined in FreeBSD. */ EBADMSG, #else 0, #endif EBUSY, #ifdef ECANCELED /* This is not defined in Linux. Perhaps someone knows how to spell "cancelled". */ ECANCELED, #else 0, /* Perhaps some other value. */ #endif ECHILD, EDEADLK, EDOM, EEXIST, EFAULT, EFBIG, EINPROGRESS, EINTR, EINVAL, EIO, EISDIR, ELOOP, EMFILE, EMLINK, /* 20 */ EMSGSIZE, ENAMETOOLONG, ENFILE, ENODEV, ENOENT, ENOEXEC, ENOLCK, ENOMEM, ENOSPC, ENOSYS, ENOTDIR, ENOTEMPTY, #ifdef ENOTSUP /* Not defined in Linux. */ ENOTSUP, #else 0, #endif ENOTTY, ENXIO, EPERM, EPIPE, ERANGE, EROFS, ESPIPE, ESRCH, EXDEV, /* 42 */ /* Signals. */ SIGABRT, /* 43 */ SIGALRM, SIGBUS, SIGFPE, SIGHUP, SIGILL, SIGINT, SIGKILL, SIGPIPE, SIGQUIT, SIGSEGV, SIGTERM, SIGUSR1, SIGUSR2, SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU, /* 62 */ /* Open flags. */ O_RDONLY, /* 63 */ O_WRONLY, O_RDWR, O_APPEND, O_EXCL, O_NOCTTY, O_NONBLOCK, #ifdef O_SYNC O_SYNC, /* Not defined in FreeBSD. */ #else 0, #endif O_TRUNC, /* 71 */ /* TTY: Special characters. */ VEOF, /* 72 */ VEOL, VERASE, VINTR, VKILL, VMIN, VQUIT, VSUSP, VTIME, VSTART, VSTOP, NCCS, /* 83 */ /* TTY: Input mode. */ BRKINT, /* 84 */ ICRNL, IGNBRK, IGNCR, IGNPAR, INLCR, INPCK, ISTRIP, IXOFF, IXON, PARMRK, /* 94 */ /* TTY: Output mode. */ OPOST, /* 95 */ /* TTY: Control modes. */ CLOCAL, /* 96 */ CREAD, CS5, CS6, CS7, CS8, CSIZE, CSTOPB, HUPCL, PARENB, PARODD, /* 106 */ /* TTY: Local modes. */ ECHO, /* 107 */ ECHOE, ECHOK, ECHONL, ICANON, IEXTEN, ISIG, (unsigned)NOFLSH, TOSTOP, /* 115 */ /* TTY: Speeds. */ B0, /* 116 */ B50, B75, B110, B134, B150, B200, B300, B600, B1200, B1800, B2400, B4800, B9600, B19200, B38400, /* 131 */ /* FD flags. */ FD_CLOEXEC, /* 132 */ /* Wait flags. */ WUNTRACED, /* 133 */ WNOHANG, /* 134 */ /* tcsetattr flags. */ TCSANOW, /* 135 */ TCSADRAIN, TCSAFLUSH, /* tcflow flags. */ TCOOFF, /* 138 */ TCOON, TCIOFF, TCION, /* tcflush flags. */ TCIFLUSH, /* 142 */ TCOFLUSH, TCIOFLUSH, /* File permissions. */ S_IRUSR, /* 145 */ S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, /* 155 */ /* Bits for access function. */ R_OK, /* 156 */ W_OK, X_OK, F_OK, /* 159 */ /* Values for lseek. */ SEEK_SET, /* 160 */ SEEK_CUR, SEEK_END, /* 162 */ /* Values for lock types. */ F_RDLCK, /* 163 */ F_WRLCK, F_UNLCK, /* 165 */ /* Mask for file access. */ O_ACCMODE, /* 166 */ }; /* Auxiliary functions which implement the more complex cases. */ static Handle waitForProcess(TaskData *taskData, Handle args); static Handle makePasswordEntry(TaskData *taskData, struct passwd *pw); static Handle makeGroupEntry(TaskData *taskData, struct group *grp); static Handle getUname(TaskData *taskData); static Handle getSysConf(TaskData *taskData, Handle args); static Handle getTTYattrs(TaskData *taskData, Handle args); static Handle setTTYattrs(TaskData *taskData, Handle args); static Handle getStatInfo(TaskData *taskData, struct stat *buf); static Handle lockCommand(TaskData *taskData, int cmd, Handle args); static int findPathVar(TaskData *taskData, PolyWord ps); // Unmask all signals just before exec. static void restoreSignals(void) { sigset_t sigset; sigemptyset(&sigset); sigprocmask(SIG_SETMASK, &sigset, NULL); } Handle OS_spec_dispatch_c(TaskData *taskData, Handle args, Handle code) { unsigned lastSigCount = receivedSignalCount; // Have we received a signal? int c = get_C_long(taskData, DEREFWORDHANDLE(code)); switch (c) { case 0: /* Return our OS type. Not in any structure. */ return Make_fixed_precision(taskData, 0); /* 0 for Unix. */ case 4: /* Return a constant. */ { unsigned i = get_C_unsigned(taskData, DEREFWORDHANDLE(args)); if (i >= sizeof(unixConstVec)/sizeof(unixConstVec[0])) raise_syscall(taskData, "Invalid index", 0); return Make_sysword(taskData, unixConstVec[i]); } case 5: /* fork. */ { pid_t pid = fork(); if (pid < 0) raise_syscall(taskData, "fork failed", errno); if (pid == 0) processes->SetSingleThreaded(); return Make_fixed_precision(taskData, pid); } case 6: /* kill */ { int pid = get_C_long(taskData, DEREFHANDLE(args)->Get(0)); int sig = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (kill(pid, sig) < 0) raise_syscall(taskData, "kill failed", errno); return Make_fixed_precision(taskData, 0); } case 7: /* get process id */ { pid_t pid = getpid(); if (pid < 0) raise_syscall(taskData, "getpid failed", errno); return Make_fixed_precision(taskData, pid); } case 8: /* get process id of parent */ { pid_t pid = getppid(); if (pid < 0) raise_syscall(taskData, "getppid failed", errno); return Make_fixed_precision(taskData, pid); } case 9: /* get real user id */ { uid_t uid = getuid(); // This is defined always to succeed return Make_fixed_precision(taskData, uid); } case 10: /* get effective user id */ { uid_t uid = geteuid(); // This is defined always to succeed return Make_fixed_precision(taskData, uid); } case 11: /* get real group id */ { gid_t gid = getgid(); // This is defined always to succeed return Make_fixed_precision(taskData, gid); } case 12: /* get effective group id */ { gid_t gid = getegid(); // This is defined always to succeed return Make_fixed_precision(taskData, gid); } case 13: /* Return process group */ { pid_t pid = getpgrp(); if (pid < 0) raise_syscall(taskData, "getpgrp failed", errno); return Make_fixed_precision(taskData, pid); } case 14: /* Wait for child process to terminate. */ return waitForProcess(taskData, args); case 15: /* Unpack a process result. */ { int resType, resVal; Handle result, typeHandle, resHandle; int status = get_C_long(taskData, DEREFWORDHANDLE(args)); if (WIFEXITED(status)) { resType = 1; resVal = WEXITSTATUS(status); } else if (WIFSIGNALED(status)) { resType = 2; resVal = WTERMSIG(status); } else if (WIFSTOPPED(status)) { resType = 3; resVal = WSTOPSIG(status); } else { /* ?? */ resType = 0; resVal = 0; } typeHandle = Make_fixed_precision(taskData, resType); resHandle = Make_fixed_precision(taskData, resVal); result = ALLOC(2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(typeHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(resHandle)); return result; } case 16: /* Pack up a process result. The inverse of the previous call. */ { int resType = get_C_long(taskData, DEREFHANDLE(args)->Get(0)); int resVal = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int result = 0; switch (resType) { case 1: /* Exited */ result = resVal << 8; break; case 2: /* Signalled */ result = resVal; break; case 3: /* Stopped */ result = (resVal << 8) | 0177; } return Make_fixed_precision(taskData, result); } case 17: /* Run a new executable. */ { char *path = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); char **argl = stringListToVector(SAVE(DEREFHANDLE(args)->Get(1))); int err; restoreSignals(); execv(path, argl); err = errno; /* We only get here if there's been an error. */ free(path); freeStringVector(argl); raise_syscall(taskData, "execv failed", err); } case 18: /* Run a new executable with given environment. */ { char *path = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); char **argl = stringListToVector(SAVE(DEREFHANDLE(args)->Get(1))); char **envl = stringListToVector(SAVE(DEREFHANDLE(args)->Get(2))); int err; restoreSignals(); execve(path, argl, envl); err = errno; /* We only get here if there's been an error. */ free(path); freeStringVector(argl); freeStringVector(envl); raise_syscall(taskData, "execve failed", err); } case 19: /* Run a new executable using PATH environment variable. */ { char *path = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); char **argl = stringListToVector(SAVE(DEREFHANDLE(args)->Get(1))); int err; restoreSignals(); execvp(path, argl); err = errno; /* We only get here if there's been an error. */ free(path); freeStringVector(argl); raise_syscall(taskData, "execvp failed", err); } case 20: /* Sets an alarm and returns the current alarm time. A value of zero for the time cancels the timer. */ { /* We have a value in microseconds. We need to split it into seconds and microseconds. */ Handle hTime = args; Handle hMillion = Make_arbitrary_precision(taskData, 1000000); struct itimerval newTimer, oldTimer; newTimer.it_interval.tv_sec = 0; newTimer.it_interval.tv_usec = 0; newTimer.it_value.tv_sec = get_C_long(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); newTimer.it_value.tv_usec = get_C_long(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); if (setitimer(ITIMER_REAL, &newTimer, &oldTimer) != 0) raise_syscall(taskData, "setitimer failed", errno); Handle result = /* Return the previous setting. */ Make_arb_from_pair_scaled(taskData, oldTimer.it_value.tv_sec, oldTimer.it_value.tv_usec, 1000000); return result; } case 21: /* Pause until signal. */ /* This never returns. When a signal is handled it will be interrupted. */ while (true) { processes->ThreadPause(taskData); if (lastSigCount != receivedSignalCount) raise_syscall(taskData, "Call interrupted by signal", EINTR); } case 22: /* Sleep until given time or until a signal. Note: this is called with an absolute time as an argument and returns a relative time as result. This RTS call is tried repeatedly until either the time has expired or a signal has occurred. */ while (true) { struct timeval tv; /* We have a value in microseconds. We need to split it into seconds and microseconds. */ Handle hSave = taskData->saveVec.mark(); Handle hTime = args; Handle hMillion = Make_arbitrary_precision(taskData, 1000000); unsigned long secs = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); unsigned long usecs = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); taskData->saveVec.reset(hSave); /* Has the time expired? */ if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", errno); /* If the timeout time is earlier than the current time we must return, otherwise we block. This can be interrupted by a signal. */ if ((unsigned long)tv.tv_sec < secs || ((unsigned long)tv.tv_sec == secs && (unsigned long)tv.tv_usec < usecs)) { processes->ThreadPause(taskData); if (lastSigCount != receivedSignalCount) raise_syscall(taskData, "Call interrupted by signal", EINTR); // And loop } else { processes->TestAnyEvents(taskData); // Check for interrupts anyway return Make_fixed_precision(taskData, 0); } } case 23: /* Set uid. */ { uid_t uid = get_C_long(taskData, DEREFWORDHANDLE(args)); if (setuid(uid) != 0) raise_syscall(taskData, "setuid failed", errno); return Make_fixed_precision(taskData, 0); } case 24: /* Set gid. */ { gid_t gid = get_C_long(taskData, DEREFWORDHANDLE(args)); if (setgid(gid) != 0) raise_syscall(taskData, "setgid failed", errno); return Make_fixed_precision(taskData, 0); } case 25: /* Get group list. */ { // This previously allocated gid_t[NGROUPS_MAX] on the stack but this // requires quite a bit of stack space. gid_t gid[1]; int ngroups = getgroups(0, gid); // Just get the number. if (ngroups < 0) raise_syscall(taskData, "getgroups failed", errno); if (ngroups == 0) return SAVE(ListNull); gid_t *groups = (gid_t*)calloc(sizeof(gid_t), ngroups); if (groups == 0) raise_syscall(taskData, "Unable to allocate memory", errno); if (getgroups(ngroups, groups) < 0) { int lasterr = errno; free(groups); raise_syscall(taskData, "getgroups failed", lasterr); } Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); /* It's simplest to process the integers in reverse order */ while (--ngroups >= 0) { Handle value = Make_fixed_precision(taskData, groups[ngroups]); Handle next = ALLOC(SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } free(groups); return list; } case 26: /* Get login name. */ { char *login = getlogin(); if (login == 0) raise_syscall(taskData, "getlogin failed", errno); return SAVE(C_string_to_Poly(taskData, login)); } case 27: /* Set sid */ { pid_t pid = setsid(); if (pid < 0) raise_syscall(taskData, "setsid failed", errno); return Make_fixed_precision(taskData, pid); } case 28: /* Set process group. */ { pid_t pid = get_C_long(taskData, DEREFHANDLE(args)->Get(0)); pid_t pgid = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (setpgid(pid, pgid) < 0 ) raise_syscall(taskData, "setpgid failed", errno); return Make_fixed_precision(taskData, 0); } case 29: /* uname */ return getUname(taskData); case 30: /* Get controlling terminal. */ #ifdef HAVE_CTERMID { char *term = ctermid(0); /* Can this generate an error? */ if (term == 0) raise_syscall(taskData, "ctermid failed", errno); return SAVE(C_string_to_Poly(taskData, term)); } #else raise_syscall(taskData, "ctermid is not implemented", 0); #endif case 31: /* Get terminal name for file descriptor. */ { PIOSTRUCT str = get_stream(args->WordP()); char *term; if (str == NULL) raise_syscall(taskData, "Stream is closed", EBADF); term = ttyname(str->device.ioDesc); if (term == 0) raise_syscall(taskData, "ttyname failed", errno); return SAVE(C_string_to_Poly(taskData, term)); } case 32: /* Test if file descriptor is a terminal. Returns false if the stream is closed. */ { PIOSTRUCT str = get_stream(args->WordP()); if (str != NULL && isatty(str->device.ioDesc)) return Make_fixed_precision(taskData, 1); else return Make_fixed_precision(taskData, 0); } case 33: /* sysconf. */ return getSysConf(taskData, args); /* Filesys entries. */ case 50: /* Set the file creation mask and return the old one. */ { mode_t mode = get_C_ulong(taskData, DEREFWORDHANDLE(args)); return Make_fixed_precision(taskData, umask(mode)); } case 51: /* Create a hard link. */ { char *old = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); char *newp = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(1)); int err, res; res = link(old, newp); err = errno; /* Save the error result in case free changes it. */ free(old); free(newp); if (res < 0) raise_syscall(taskData, "link failed", err); return Make_fixed_precision(taskData, 0); } case 52: /* Create a directory. There is an OS-independent version in basicio which uses a default creation mode. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); mode_t mode = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int err, res; res = mkdir(name, mode); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "mkdir failed", err); return Make_fixed_precision(taskData, 0); } case 53: /* Create a fifo. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); mode_t mode = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int err, res; res = mkfifo(name, mode); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "mkfifo failed", err); return Make_fixed_precision(taskData, 0); } case 54: /* Create a symbolic link. */ { char *old = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); char *newp = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(1)); int err, res; res = symlink(old, newp); err = errno; /* Save the error result in case free changes it. */ free(old); free(newp); if (res < 0) raise_syscall(taskData, "link failed", err); return Make_fixed_precision(taskData, 0); } case 55: /* Get information about a file. */ { struct stat buf; int res, err; char *name = Poly_string_to_C_alloc(DEREFWORD(args)); res = stat(name, &buf); err = errno; free(name); if (res < 0) raise_syscall(taskData, "stat failed", err); return getStatInfo(taskData, &buf); } case 56: /* Get information about a symbolic link. */ { struct stat buf; int res, err; char *name = Poly_string_to_C_alloc(DEREFWORD(args)); res = lstat(name, &buf); err = errno; free(name); if (res < 0) raise_syscall(taskData, "lstat failed", err); return getStatInfo(taskData, &buf); } case 57: /* Get information about an open file. */ { struct stat buf; PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fstat(strm->device.ioDesc, &buf) < 0) raise_syscall(taskData, "fstat failed", errno); return getStatInfo(taskData, &buf); } case 58: /* Test access rights to a file. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); int amode = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int res; res = access(name, amode); free(name); /* Return false if error, true if not. It's not clear that this is correct since there are several reasons why we might get -1 as the result. */ return Make_fixed_precision(taskData, res < 0 ? 0 : 1); } case 59: /* Change access rights. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); mode_t mode = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int err, res; res = chmod(name, mode); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "chmod failed", err); return Make_fixed_precision(taskData, 0); } case 60: /* Change access rights on open file. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); mode_t mode = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fchmod(strm->device.ioDesc, mode) < 0) raise_syscall(taskData, "fchmod failed", errno); return Make_fixed_precision(taskData, 0); } case 61: /* Change owner and group. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); uid_t uid = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); gid_t gid = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); int err, res; res = chown(name, uid, gid); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "chown failed", err); return Make_fixed_precision(taskData, 0); } case 62: /* Change owner and group on open file. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); uid_t uid = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); gid_t gid = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fchown(strm->device.ioDesc, uid, gid) < 0) raise_syscall(taskData, "fchown failed", errno); return Make_fixed_precision(taskData, 0); } case 63: /* Set access and modification times. We use utimes rather than utime since it allows us to be more accurate. There's a similar function in basicio which sets both the access and modification times to the same time. */ { char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); Handle hAccess = SAVE(DEREFHANDLE(args)->Get(1)); Handle hMod = SAVE(DEREFHANDLE(args)->Get(2)); struct timeval times[2]; /* We have a value in microseconds. We need to split it into seconds and microseconds. N.B. The arguments to div_longc and rem_longc are in reverse order. */ Handle hMillion = Make_arbitrary_precision(taskData, 1000000); unsigned secsAccess = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hAccess))); unsigned usecsAccess = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hAccess))); unsigned secsMod = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hMod))); unsigned usecsMod = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hMod))); int err, res; times[0].tv_sec = secsAccess; times[0].tv_usec = usecsAccess; times[1].tv_sec = secsMod; times[1].tv_usec = usecsMod; res = utimes(name, times); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "utimes failed", err); return Make_fixed_precision(taskData, 0); } case 64: /* Set access and modification times to the current time. This could be defined in terms of the previous call and Time.now but it could result in an error due to rounding. This is probably safer. */ { char *name = Poly_string_to_C_alloc(DEREFWORD(args)); int err, res; res = utimes(name, 0); err = errno; /* Save the error result in case free changes it. */ free(name); if (res < 0) raise_syscall(taskData, "utimes failed", err); return Make_fixed_precision(taskData, 0); } case 65: /* Truncate an open file. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int size = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (ftruncate(strm->device.ioDesc, size) < 0) raise_syscall(taskData, "ftruncate failed", errno); return Make_fixed_precision(taskData, 0); } case 66: /* Get the configured limits for a file. */ { /* Look up the variable. May raise an exception. */ int nvar = findPathVar(taskData, DEREFHANDLE(args)->Get(1)); char *name = Poly_string_to_C_alloc(DEREFHANDLE(args)->Get(0)); int err, res; /* Set errno to zero. If there is no limit pathconf returns -1 but does not change errno. */ errno = 0; res = pathconf(name, nvar); err = errno; /* Save the error result in case free changes it. */ free(name); /* We return -1 as a valid result indicating no limit. */ if (res < 0 && err != 0) raise_syscall(taskData, "pathconf failed", err); return Make_fixed_precision(taskData, res); } case 67: /* Get the configured limits for an open file. */ { /* Look up the variable. May raise an exception. */ int nvar = findPathVar(taskData, DEREFHANDLE(args)->Get(1)); PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int res; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); errno = 0; /* Unchanged if there is no limit. */ res = fpathconf(strm->device.ioDesc, nvar); if (res < 0 && errno != 0) raise_syscall(taskData, "fpathconf failed", errno); return Make_fixed_precision(taskData, res); } /* Password and group entries. */ case 100: /* Get Password entry by name. */ { char pwName[200]; int length; struct passwd *pw; length = Poly_string_to_C(DEREFWORD(args), pwName, 200); if (length > 200) raise_syscall(taskData, "Password name too long", ENAMETOOLONG); pw = getpwnam(pwName); if (pw == NULL) raise_syscall(taskData, "Password entry not found", ENOENT); return makePasswordEntry(taskData, pw); } case 101: /* Get password entry by uid. */ { int uid = get_C_long(taskData, DEREFWORDHANDLE(args)); struct passwd *pw = getpwuid(uid); if (pw == NULL) raise_syscall(taskData, "Password entry not found", ENOENT); return makePasswordEntry(taskData, pw); } case 102: /* Get group entry by name. */ { struct group *grp; char grpName[200]; int length; length = Poly_string_to_C(DEREFWORD(args), grpName, 200); if (length > 200) raise_syscall(taskData, "Group name too long", ENAMETOOLONG); grp = getgrnam(grpName); if (grp == NULL) raise_syscall(taskData, "Group entry not found", ENOENT); return makeGroupEntry(taskData, grp); } case 103: /* Get group entry by gid. */ { int gid = get_C_long(taskData, DEREFWORDHANDLE(args)); struct group *grp = getgrgid(gid); if (grp == NULL) raise_syscall(taskData, "Group entry not found", ENOENT); return makeGroupEntry(taskData, grp); } /* IO Entries. */ case 110: /* Create a pipe. */ { int filedes[2]; Handle strRead = make_stream_entry(taskData); Handle strWrite = make_stream_entry(taskData); Handle result; PIOSTRUCT instrm, outstrm; if (pipe(filedes) < 0) raise_syscall(taskData, "pipe failed", errno); instrm = &basic_io_vector[STREAMID(strRead)]; outstrm = &basic_io_vector[STREAMID(strWrite)]; instrm->device.ioDesc = filedes[0]; instrm->ioBits = IO_BIT_OPEN | IO_BIT_READ; outstrm->device.ioDesc = filedes[1]; outstrm->ioBits = IO_BIT_OPEN | IO_BIT_WRITE; result = ALLOC(2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(strRead)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(strWrite)); return result; } case 111: /* Duplicate a file descriptor. */ { PIOSTRUCT str = get_stream(args->WordP()); PIOSTRUCT newstr; Handle strToken = make_stream_entry(taskData); int fd; if (str == NULL) raise_syscall(taskData, "Stream is closed", EBADF); fd = dup(str->device.ioDesc); if (fd < 0) raise_syscall(taskData, "dup failed", errno); newstr = &basic_io_vector[STREAMID(strToken)]; newstr->device.ioDesc = fd; /* I'm assuming that we're not going to put any other status information in the bits. */ newstr->ioBits = str->ioBits; return strToken; } case 112: /* Duplicate a file descriptor to a given entry. */ { PIOSTRUCT old = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PIOSTRUCT newp = get_stream(DEREFHANDLE(args)->Get(1).AsObjPtr()); /* The "newp" entry must be an open entry in our io table. It may, though, be an entry added through wordToFD (basicio call 31) which may not refer to a valid descriptor. */ if (old == NULL || newp == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (dup2(old->device.ioDesc, newp->device.ioDesc) < 0) raise_syscall(taskData, "dup2 failed", errno); newp->ioBits = old->ioBits; return Make_fixed_precision(taskData, 0); } case 113: /* Duplicate a file descriptor to an entry equal to or greater than the given value. */ { PIOSTRUCT old = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); PIOSTRUCT base = get_stream(DEREFHANDLE(args)->Get(1).AsObjPtr()); int newfd; Handle strToken = make_stream_entry(taskData); PIOSTRUCT newstr; /* The "base" entry must be an open entry in our io table. It may, though, be an entry added through wordToFD (basicio call 31) which may not refer to a valid descriptor. */ if (old == NULL || base == NULL) raise_syscall(taskData, "Stream is closed", EBADF); newfd = fcntl(old->device.ioDesc, F_DUPFD, base->device.ioDesc); if (newfd < 0) raise_syscall(taskData, "dup2 failed", errno); newstr = &basic_io_vector[STREAMID(strToken)]; newstr->device.ioDesc = newfd; /* I'm assuming that we're not going to put any other status information in the bits. */ newstr->ioBits = old->ioBits; return strToken; } case 114: /* Get the file descriptor flags. */ { PIOSTRUCT strm = get_stream(args->WordP()); int res; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); res = fcntl(strm->device.ioDesc, F_GETFD); if (res < 0) raise_syscall(taskData, "fcntl failed", errno); return Make_fixed_precision(taskData, res); } case 115: /* Set the file descriptor flags. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int flags = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fcntl(strm->device.ioDesc, F_SETFD, flags) < 0) raise_syscall(taskData, "fcntl failed", errno); return Make_fixed_precision(taskData, 0); } case 116: /* Get the file status and access flags. */ { PIOSTRUCT strm = get_stream(args->WordP()); int res; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); res = fcntl(strm->device.ioDesc, F_GETFL); if (res < 0) raise_syscall(taskData, "fcntl failed", errno); return Make_fixed_precision(taskData, res); } case 117: /* Set the file status and access flags. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int flags = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fcntl(strm->device.ioDesc, F_SETFL, flags) < 0) raise_syscall(taskData, "fcntl failed", errno); return Make_fixed_precision(taskData, 0); } case 118: /* Seek to a position on the stream. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); long position = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int whence = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); long newpos; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); newpos = lseek(strm->device.ioDesc, position, whence); if (newpos < 0) raise_syscall(taskData, "lseek failed", errno); return Make_arbitrary_precision(taskData, (POLYSIGNED)newpos); // Position.int } case 119: /* Synchronise file contents. */ { PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (fsync(strm->device.ioDesc) < 0) raise_syscall(taskData, "fsync failed", errno); return Make_fixed_precision(taskData, 0); } case 120: /* get lock */ return lockCommand(taskData, F_GETLK, args); case 121: /* set lock */ return lockCommand(taskData, F_SETLK, args); case 122: /* wait for lock */ /* TODO: This may well block the whole process. We should look at the result and retry if need be. */ return lockCommand(taskData, F_SETLKW, args); /* TTY entries. */ case 150: /* Get attributes. */ return getTTYattrs(taskData, args); case 151: /* Set attributes. */ return setTTYattrs(taskData, args); case 152: /* Send a break. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int duration = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (tcsendbreak(strm->device.ioDesc, duration) < 0) raise_syscall(taskData, "tcsendbreak failed", errno); return Make_fixed_precision(taskData, 0); } case 153: /* Wait for output to drain. */ { /* TODO: This will block the process. It really needs to check whether the stream has drained and run another process until it has. */ PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); #ifdef HAVE_TCDRAIN if (tcdrain(strm->device.ioDesc) < 0) raise_syscall(taskData, "tcdrain failed", errno); #else raise_syscall(taskData, "tcdrain is not implemented", 0); #endif return Make_fixed_precision(taskData, 0); } case 154: /* Flush terminal stream. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int qs = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (tcflush(strm->device.ioDesc, qs) < 0) raise_syscall(taskData, "tcflush failed", errno); return Make_fixed_precision(taskData, 0); } case 155: /* Flow control. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int action = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (tcflow(strm->device.ioDesc, action) < 0) raise_syscall(taskData, "tcflow failed", errno); return Make_fixed_precision(taskData, 0); } case 156: /* Get process group. */ { PIOSTRUCT strm = get_stream(args->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); pid_t pid = tcgetpgrp(strm->device.ioDesc); if (pid < 0) raise_syscall(taskData, "tcgetpgrp failed", errno); return Make_fixed_precision(taskData, pid); } case 157: /* Set process group. */ { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); pid_t pid = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (tcsetpgrp(strm->device.ioDesc, pid) < 0) raise_syscall(taskData, "tcsetpgrp failed", errno); return Make_fixed_precision(taskData, 0); } default: { char msg[100]; sprintf(msg, "Unknown unix-specific function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); } } } // General interface to Unix OS-specific. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyOSSpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = OS_spec_dispatch_c(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyGetOSType() { return TAGGED(0).AsUnsigned(); // Return 0 for Unix } Handle waitForProcess(TaskData *taskData, Handle args) /* Get result status of a child process. */ { TryAgain: // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); int kind = get_C_long(taskData, DEREFHANDLE(args)->Get(0)); int pid = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); int callFlags = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); int flags = callFlags | WNOHANG; // Add in WNOHANG so we never block. pid_t pres = 0; int status = 0; switch (kind) { case 0: /* Wait for any child. */ pres = waitpid(-1, &status, flags); break; case 1: /* Wait for specific process. */ pres = waitpid(pid, &status, flags); break; case 2: /* Wait for any in current process group. */ pres = waitpid(0, &status, flags); break; case 3: /* Wait for child in given process group */ pres = waitpid(-pid, &status, flags); break; } if (pres < 0) { if (errno == EINTR) goto TryAgain; else raise_syscall(taskData, "wait failed", errno); } /* If the caller did not specify WNOHANG but there wasn't a child process waiting we have to block and come back here later. */ if (pres == 0 && !(callFlags & WNOHANG)) { processes->ThreadPause(taskData); goto TryAgain; } /* Construct the result tuple. */ { Handle result, pidHandle, resHandle; pidHandle = Make_fixed_precision(taskData, pres); // If the pid is zero status may not be a valid value and may overflow. resHandle = Make_fixed_precision(taskData, pres == 0 ? 0: status); result = ALLOC(2); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(pidHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(resHandle)); return result; } } static Handle makePasswordEntry(TaskData *taskData, struct passwd *pw) /* Return a password entry. */ { Handle nameHandle, uidHandle, gidHandle, homeHandle, shellHandle, result; nameHandle = SAVE(C_string_to_Poly(taskData, pw->pw_name)); uidHandle = Make_fixed_precision(taskData, pw->pw_uid); gidHandle = Make_fixed_precision(taskData, pw->pw_gid); homeHandle = SAVE(C_string_to_Poly(taskData, pw->pw_dir)); shellHandle = SAVE(C_string_to_Poly(taskData, pw->pw_shell)); result = ALLOC(5); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(nameHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(uidHandle)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(gidHandle)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(homeHandle)); DEREFHANDLE(result)->Set(4, DEREFWORDHANDLE(shellHandle)); return result; } static Handle makeGroupEntry(TaskData *taskData, struct group *grp) { Handle nameHandle, gidHandle, membersHandle, result; int i; char **p; nameHandle = SAVE(C_string_to_Poly(taskData, grp->gr_name)); gidHandle = Make_fixed_precision(taskData, grp->gr_gid); /* Group members. */ for (i=0, p = grp->gr_mem; *p != NULL; p++, i++); membersHandle = convert_string_list(taskData, i, grp->gr_mem); result = ALLOC(3); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(nameHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(gidHandle)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(membersHandle)); return result; } /* Make a cons cell for a pair of strings. */ // Doesn't currently reset the save vec so it's only safe for a small number // of cells. static void makeStringPairList(TaskData *taskData, Handle &list, const char *s1, const char *s2) { Handle nameHandle, valueHandle, pairHandle, next; /* This has to be done carefully to ensure we don't throw anything away if we garbage-collect and also to ensure that each object is fully initialised before the next object is created. */ /* Make the strings. */ nameHandle = SAVE(C_string_to_Poly(taskData, s1)); valueHandle = SAVE(C_string_to_Poly(taskData, s2)); /* Make the pair. */ pairHandle = ALLOC(2); DEREFHANDLE(pairHandle)->Set(0, DEREFWORDHANDLE(nameHandle)); DEREFHANDLE(pairHandle)->Set(1, DEREFWORDHANDLE(valueHandle)); /* Make the cons cell. */ next = ALLOC(SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(pairHandle); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); list = SAVE(DEREFHANDLE(next)); } /* Return the uname information. */ static Handle getUname(TaskData *taskData) { #ifdef HAVE_SYS_UTSNAME_H struct utsname name; Handle list = SAVE(ListNull); if (uname(&name) < 0) raise_syscall(taskData, "uname failed", errno); makeStringPairList(taskData, list, "sysname", name.sysname); makeStringPairList(taskData, list, "nodename", name.nodename); makeStringPairList(taskData, list, "release", name.release); makeStringPairList(taskData, list, "version", name.version); makeStringPairList(taskData, list, "machine", name.machine); return list; #else raise_syscall(taskData, "uname not available on this machine", errno); #endif } /* Return the contents of a stat buffer. */ static Handle getStatInfo(TaskData *taskData, struct stat *buf) { int kind; /* Get the protection mode, masking off the file type info. */ Handle modeHandle = Make_fixed_precision(taskData, buf->st_mode & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID)); if (S_ISDIR(buf->st_mode)) kind = 1; else if (S_ISCHR(buf->st_mode)) kind = 2; else if (S_ISBLK(buf->st_mode)) kind = 3; else if (S_ISFIFO(buf->st_mode)) kind = 4; else if ((buf->st_mode & S_IFMT) == S_IFLNK) kind = 5; else if ((buf->st_mode & S_IFMT) == S_IFSOCK) kind = 6; else /* Regular. */ kind = 0; Handle kindHandle = Make_fixed_precision(taskData, kind); Handle inoHandle = Make_arbitrary_precision(taskData, buf->st_ino); Handle devHandle = Make_arbitrary_precision(taskData, buf->st_dev); Handle linkHandle = Make_fixed_precision(taskData, buf->st_nlink); Handle uidHandle = Make_fixed_precision(taskData, buf->st_uid); Handle gidHandle = Make_fixed_precision(taskData, buf->st_gid); Handle sizeHandle = Make_arbitrary_precision(taskData, buf->st_size); // Position.int Handle atimeHandle = Make_arb_from_pair_scaled(taskData, STAT_SECS(buf,a), STAT_USECS(buf,a), 1000000); Handle mtimeHandle = Make_arb_from_pair_scaled(taskData, STAT_SECS(buf,m), STAT_USECS(buf,m), 1000000); Handle ctimeHandle = Make_arb_from_pair_scaled(taskData, STAT_SECS(buf,c), STAT_USECS(buf,c), 1000000); Handle result = ALLOC(11); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(modeHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(kindHandle)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(inoHandle)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(devHandle)); DEREFHANDLE(result)->Set(4, DEREFWORDHANDLE(linkHandle)); DEREFHANDLE(result)->Set(5, DEREFWORDHANDLE(uidHandle)); DEREFHANDLE(result)->Set(6, DEREFWORDHANDLE(gidHandle)); DEREFHANDLE(result)->Set(7, DEREFWORDHANDLE(sizeHandle)); DEREFHANDLE(result)->Set(8, DEREFWORDHANDLE(atimeHandle)); DEREFHANDLE(result)->Set(9, DEREFWORDHANDLE(mtimeHandle)); DEREFHANDLE(result)->Set(10, DEREFWORDHANDLE(ctimeHandle)); return result; } static Handle getTTYattrs(TaskData *taskData, Handle args) { PIOSTRUCT strm = get_stream(args->WordP()); struct termios tios; speed_t ispeed, ospeed; Handle ifHandle, ofHandle, cfHandle, lfHandle, ccHandle; Handle isHandle, osHandle, result; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); if (tcgetattr(strm->device.ioDesc, &tios) < 0) raise_syscall(taskData, "tcgetattr failed", errno); /* Extract the speed entries. */ ospeed = cfgetospeed(&tios); ispeed = cfgetispeed(&tios); /* Set the speed entries to zero. In Solaris, at least, the speed is encoded in the flags and we don't want any confusion. The order of these functions is significant. */ cfsetospeed(&tios, B0); cfsetispeed(&tios, B0); /* Convert the values to ML representation. */ ifHandle = Make_fixed_precision(taskData, tios.c_iflag); ofHandle = Make_fixed_precision(taskData, tios.c_oflag); cfHandle = Make_fixed_precision(taskData, tios.c_cflag); lfHandle = Make_fixed_precision(taskData, tios.c_lflag); /* The cc vector is treated as a string. */ ccHandle = SAVE(C_string_to_Poly(taskData, (const char *)tios.c_cc, NCCS)); isHandle = Make_fixed_precision(taskData, ispeed); osHandle = Make_fixed_precision(taskData, ospeed); /* We can now create the result tuple. */ result = ALLOC(7); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(ifHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(ofHandle)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(cfHandle)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(lfHandle)); DEREFHANDLE(result)->Set(4, DEREFWORDHANDLE(ccHandle)); DEREFHANDLE(result)->Set(5, DEREFWORDHANDLE(isHandle)); DEREFHANDLE(result)->Set(6, DEREFWORDHANDLE(osHandle)); return result; } /* Assemble the tios structure from the arguments and set the TTY attributes. */ static Handle setTTYattrs(TaskData *taskData, Handle args) { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); int actions = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); struct termios tios; speed_t ispeed, ospeed; if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); /* Make sure anything unset is zero. It might be better to call tcgetattr instead. */ memset(&tios, 0, sizeof(tios)); tios.c_iflag = get_C_ulong(taskData, DEREFHANDLE(args)->Get(2)); tios.c_oflag = get_C_ulong(taskData, DEREFHANDLE(args)->Get(3)); tios.c_cflag = get_C_ulong(taskData, DEREFHANDLE(args)->Get(4)); tios.c_lflag = get_C_ulong(taskData, DEREFHANDLE(args)->Get(5)); /* The cc vector should be a string of exactly NCCS characters. It may well contain nulls so we can't use Poly_string_to_C to copy it. */ PolyWord ccv = DEREFHANDLE(args)->Get(6); if (ccv.IsTagged()) // Just to check. raise_syscall(taskData, "Incorrect cc vector", EINVAL); PolyStringObject * ccvs = (PolyStringObject *)ccv.AsObjPtr(); if (ccvs->length != NCCS) // Just to check. */ raise_syscall(taskData, "Incorrect cc vector", EINVAL); memcpy(tios.c_cc, ccvs->chars, NCCS); ispeed = get_C_ulong(taskData, DEREFHANDLE(args)->Get(7)); ospeed = get_C_ulong(taskData, DEREFHANDLE(args)->Get(8)); if (cfsetispeed(&tios, ispeed) < 0) raise_syscall(taskData, "cfsetispeed failed", errno); if (cfsetospeed(&tios, ospeed) < 0) raise_syscall(taskData, "cfsetospeed failed", errno); /* Now it's all set we can call tcsetattr to do the work. */ if (tcsetattr(strm->device.ioDesc, actions, &tios) < 0) raise_syscall(taskData, "tcsetattr failed", errno); return Make_fixed_precision(taskData, 0); } /* Lock/unlock/test file locks. Returns the, possibly modified, argument structure. */ static Handle lockCommand(TaskData *taskData, int cmd, Handle args) { PIOSTRUCT strm = get_stream(DEREFHANDLE(args)->Get(0).AsObjPtr()); struct flock lock; memset(&lock, 0, sizeof(lock)); /* Make sure unused fields are zero. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", EBADF); lock.l_type = get_C_long(taskData, DEREFHANDLE(args)->Get(1)); lock.l_whence = get_C_long(taskData, DEREFHANDLE(args)->Get(2)); lock.l_start = get_C_long(taskData, DEREFHANDLE(args)->Get(3)); lock.l_len = get_C_long(taskData, DEREFHANDLE(args)->Get(4)); lock.l_pid = get_C_long(taskData, DEREFHANDLE(args)->Get(5)); if (fcntl(strm->device.ioDesc, cmd, &lock) < 0) raise_syscall(taskData, "fcntl failed", errno); /* Construct the result. */ Handle typeHandle = Make_fixed_precision(taskData, lock.l_type); Handle whenceHandle = Make_fixed_precision(taskData, lock.l_whence); Handle startHandle = Make_arbitrary_precision(taskData, (POLYUNSIGNED)lock.l_start); // Position.int Handle lenHandle = Make_arbitrary_precision(taskData, (POLYUNSIGNED)lock.l_len); // Position.int Handle pidHandle = Make_fixed_precision(taskData, lock.l_pid); Handle result = ALLOC(5); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(typeHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(whenceHandle)); DEREFHANDLE(result)->Set(2, DEREFWORDHANDLE(startHandle)); DEREFHANDLE(result)->Set(3, DEREFWORDHANDLE(lenHandle)); DEREFHANDLE(result)->Set(4, DEREFWORDHANDLE(pidHandle)); return result; } /* This table maps string arguments for sysconf into the corresponding constants. */ /* These are highly OS dependent. It has been configured on Solaris 2.8, Linux Redhat 5.2 and FreeBSD 3.4. */ static struct { const char *saName; int saVal; } sysArgTable[] = { { "_SC_ARG_MAX", _SC_ARG_MAX }, { "_SC_CHILD_MAX", _SC_CHILD_MAX }, { "_SC_CLK_TCK", _SC_CLK_TCK }, { "_SC_NGROUPS_MAX", _SC_NGROUPS_MAX }, { "_SC_OPEN_MAX", _SC_OPEN_MAX }, { "_SC_JOB_CONTROL", _SC_JOB_CONTROL }, { "_SC_SAVED_IDS", _SC_SAVED_IDS }, { "_SC_VERSION", _SC_VERSION }, #ifdef _SC_PASS_MAX { "_SC_PASS_MAX", _SC_PASS_MAX }, #endif #ifdef _SC_LOGNAME_MAX { "_SC_LOGNAME_MAX", _SC_LOGNAME_MAX }, #endif #ifdef _SC_PAGESIZE { "_SC_PAGESIZE", _SC_PAGESIZE }, #endif #ifdef _SC_XOPEN_VERSION { "_SC_XOPEN_VERSION", _SC_XOPEN_VERSION }, #endif #ifdef _SC_NPROCESSORS_CONF { "_SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF }, #endif #ifdef _SC_NPROCESSORS_ONLN { "_SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN }, #endif #ifdef _SC_STREAM_MAX { "_SC_STREAM_MAX", _SC_STREAM_MAX }, #endif #ifdef _SC_TZNAME_MAX { "_SC_TZNAME_MAX", _SC_TZNAME_MAX }, #endif #ifdef _SC_AIO_LISTIO_MAX { "_SC_AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX }, #endif #ifdef _SC_AIO_MAX { "_SC_AIO_MAX", _SC_AIO_MAX }, #endif #ifdef _SC_AIO_PRIO_DELTA_MAX { "_SC_AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX }, #endif #ifdef _SC_ASYNCHRONOUS_IO { "_SC_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO }, #endif #ifdef _SC_DELAYTIMER_MAX { "_SC_DELAYTIMER_MAX", _SC_DELAYTIMER_MAX }, #endif #ifdef _SC_FSYNC { "_SC_FSYNC", _SC_FSYNC }, #endif #ifdef _SC_MAPPED_FILES { "_SC_MAPPED_FILES", _SC_MAPPED_FILES }, #endif #ifdef _SC_MEMLOCK { "_SC_MEMLOCK", _SC_MEMLOCK }, #endif #ifdef _SC_MEMLOCK_RANGE { "_SC_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE }, #endif #ifdef _SC_MEMORY_PROTECTION { "_SC_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION }, #endif #ifdef _SC_MESSAGE_PASSING { "_SC_MESSAGE_PASSING", _SC_MESSAGE_PASSING }, #endif #ifdef _SC_MQ_OPEN_MAX { "_SC_MQ_OPEN_MAX", _SC_MQ_OPEN_MAX }, #endif #ifdef _SC_MQ_PRIO_MAX { "_SC_MQ_PRIO_MAX", _SC_MQ_PRIO_MAX }, #endif #ifdef _SC_PRIORITIZED_IO { "_SC_PRIORITIZED_IO", _SC_PRIORITIZED_IO }, #endif #ifdef _SC_PRIORITY_SCHEDULING { "_SC_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING }, #endif #ifdef _SC_REALTIME_SIGNALS { "_SC_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS }, #endif #ifdef _SC_RTSIG_MAX { "_SC_RTSIG_MAX", _SC_RTSIG_MAX }, #endif #ifdef _SC_SEMAPHORES { "_SC_SEMAPHORES", _SC_SEMAPHORES }, #endif #ifdef _SC_SEM_NSEMS_MAX { "_SC_SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX }, #endif #ifdef _SC_SEM_VALUE_MAX { "_SC_SEM_VALUE_MAX", _SC_SEM_VALUE_MAX }, #endif #ifdef _SC_SHARED_MEMORY_OBJECTS { "_SC_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS }, #endif #ifdef _SC_SIGQUEUE_MAX { "_SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX }, #endif #ifdef _SC_SIGRT_MIN { "_SC_SIGRT_MIN", _SC_SIGRT_MIN }, #endif #ifdef _SC_SIGRT_MAX { "_SC_SIGRT_MAX", _SC_SIGRT_MAX }, #endif #ifdef _SC_SYNCHRONIZED_IO { "_SC_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO }, #endif #ifdef _SC_TIMERS { "_SC_TIMERS", _SC_TIMERS }, #endif #ifdef _SC_TIMER_MAX { "_SC_TIMER_MAX", _SC_TIMER_MAX }, #endif #ifdef _SC_2_C_BIND { "_SC_2_C_BIND", _SC_2_C_BIND }, #endif #ifdef _SC_2_C_DEV { "_SC_2_C_DEV", _SC_2_C_DEV }, #endif #ifdef _SC_2_C_VERSION { "_SC_2_C_VERSION", _SC_2_C_VERSION }, #endif #ifdef _SC_2_FORT_DEV { "_SC_2_FORT_DEV", _SC_2_FORT_DEV }, #endif #ifdef _SC_2_FORT_RUN { "_SC_2_FORT_RUN", _SC_2_FORT_RUN }, #endif #ifdef _SC_2_LOCALEDEF { "_SC_2_LOCALEDEF", _SC_2_LOCALEDEF }, #endif #ifdef _SC_2_SW_DEV { "_SC_2_SW_DEV", _SC_2_SW_DEV }, #endif #ifdef _SC_2_UPE { "_SC_2_UPE", _SC_2_UPE }, #endif #ifdef _SC_2_VERSION { "_SC_2_VERSION", _SC_2_VERSION }, #endif #ifdef _SC_BC_BASE_MAX { "_SC_BC_BASE_MAX", _SC_BC_BASE_MAX }, #endif #ifdef _SC_BC_DIM_MAX { "_SC_BC_DIM_MAX", _SC_BC_DIM_MAX }, #endif #ifdef _SC_BC_SCALE_MAX { "_SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX }, #endif #ifdef _SC_BC_STRING_MAX { "_SC_BC_STRING_MAX", _SC_BC_STRING_MAX }, #endif #ifdef _SC_COLL_WEIGHTS_MAX { "_SC_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX }, #endif #ifdef _SC_EXPR_NEST_MAX { "_SC_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX }, #endif #ifdef _SC_LINE_MAX { "_SC_LINE_MAX", _SC_LINE_MAX }, #endif #ifdef _SC_RE_DUP_MAX { "_SC_RE_DUP_MAX", _SC_RE_DUP_MAX }, #endif #ifdef _SC_XOPEN_CRYPT { "_SC_XOPEN_CRYPT", _SC_XOPEN_CRYPT }, #endif #ifdef _SC_XOPEN_ENH_I18N { "_SC_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N }, #endif #ifdef _SC_XOPEN_SHM { "_SC_XOPEN_SHM", _SC_XOPEN_SHM }, #endif #ifdef _SC_2_CHAR_TERM { "_SC_2_CHAR_TERM", _SC_2_CHAR_TERM }, #endif #ifdef _SC_XOPEN_XCU_VERSION { "_SC_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION }, #endif #ifdef _SC_ATEXIT_MAX { "_SC_ATEXIT_MAX", _SC_ATEXIT_MAX }, #endif #ifdef _SC_IOV_MAX { "_SC_IOV_MAX", _SC_IOV_MAX }, #endif #ifdef _SC_XOPEN_UNIX { "_SC_XOPEN_UNIX", _SC_XOPEN_UNIX }, #endif #ifdef _SC_PAGE_SIZE { "_SC_PAGE_SIZE", _SC_PAGE_SIZE }, #endif #ifdef _SC_T_IOV_MAX { "_SC_T_IOV_MAX", _SC_T_IOV_MAX }, #endif #ifdef _SC_PHYS_PAGES { "_SC_PHYS_PAGES", _SC_PHYS_PAGES }, #endif #ifdef _SC_AVPHYS_PAGES { "_SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES }, #endif #ifdef _SC_COHER_BLKSZ { "_SC_COHER_BLKSZ", _SC_COHER_BLKSZ }, #endif #ifdef _SC_SPLIT_CACHE { "_SC_SPLIT_CACHE", _SC_SPLIT_CACHE }, #endif #ifdef _SC_ICACHE_SZ { "_SC_ICACHE_SZ", _SC_ICACHE_SZ }, #endif #ifdef _SC_DCACHE_SZ { "_SC_DCACHE_SZ", _SC_DCACHE_SZ }, #endif #ifdef _SC_ICACHE_LINESZ { "_SC_ICACHE_LINESZ", _SC_ICACHE_LINESZ }, #endif #ifdef _SC_DCACHE_LINESZ { "_SC_DCACHE_LINESZ", _SC_DCACHE_LINESZ }, #endif #ifdef _SC_ICACHE_BLKSZ { "_SC_ICACHE_BLKSZ", _SC_ICACHE_BLKSZ }, #endif #ifdef _SC_DCACHE_BLKSZ { "_SC_DCACHE_BLKSZ", _SC_DCACHE_BLKSZ }, #endif #ifdef _SC_DCACHE_TBLKSZ { "_SC_DCACHE_TBLKSZ", _SC_DCACHE_TBLKSZ }, #endif #ifdef _SC_ICACHE_ASSOC { "_SC_ICACHE_ASSOC", _SC_ICACHE_ASSOC }, #endif #ifdef _SC_DCACHE_ASSOC { "_SC_DCACHE_ASSOC", _SC_DCACHE_ASSOC }, #endif #ifdef _SC_MAXPID { "_SC_MAXPID", _SC_MAXPID }, #endif #ifdef _SC_STACK_PROT { "_SC_STACK_PROT", _SC_STACK_PROT }, #endif #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS { "_SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS }, #endif #ifdef _SC_GETGR_R_SIZE_MAX { "_SC_GETGR_R_SIZE_MAX", _SC_GETGR_R_SIZE_MAX }, #endif #ifdef _SC_GETPW_R_SIZE_MAX { "_SC_GETPW_R_SIZE_MAX", _SC_GETPW_R_SIZE_MAX }, #endif #ifdef _SC_LOGIN_NAME_MAX { "_SC_LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX }, #endif #ifdef _SC_THREAD_KEYS_MAX { "_SC_THREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX }, #endif #ifdef _SC_THREAD_STACK_MI { "_SC_THREAD_STACK_MIN", _SC_THREAD_STACK_MIN }, #endif #ifdef _SC_THREAD_THREADS_MAX { "_SC_THREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX }, #endif #ifdef _SC_THREAD_ATTR_STACKADDR { "_SC_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR }, #endif #ifdef _SC_THREAD_ATTR_STACKSIZE { "_SC_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE }, #endif #ifdef _SC_THREAD_PRIORITY_SCHEDULING { "_SC_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING }, #endif #ifdef _SC_THREAD_PRIO_INHERIT { "_SC_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT }, #endif #ifdef _SC_THREAD_PRIO_PROTECT { "_SC_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT }, #endif #ifdef _SC_THREAD_PROCESS_SHARED { "_SC_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED }, #endif #ifdef _SC_XOPEN_LEGACY { "_SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY }, #endif #ifdef _SC_XOPEN_REALTIME { "_SC_XOPEN_REALTIME", _SC_XOPEN_REALTIME }, #endif #ifdef _SC_XOPEN_REALTIME_THREADS { "_SC_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS }, #endif #ifdef _SC_XBS5_ILP32_OFF32 { "_SC_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32 }, #endif #ifdef _SC_XBS5_ILP32_OFFBIG { "_SC_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG }, #endif #ifdef _SC_XBS5_LP64_OFF64 { "_SC_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64 }, #endif #ifdef _SC_XBS5_LPBIG_OFFBIG { "_SC_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG }, #endif #ifdef _SC_EQUIV_CLASS_MAX { "_SC_EQUIV_CLASS_MAX", _SC_EQUIV_CLASS_MAX }, #endif #ifdef _SC_CHARCLASS_NAME_MAX { "_SC_CHARCLASS_NAME_MAX", _SC_CHARCLASS_NAME_MAX }, #endif #ifdef _SC_PII { "_SC_PII", _SC_PII }, #endif #ifdef _SC_PII_XTI { "_SC_PII_XTI", _SC_PII_XTI }, #endif #ifdef _SC_PII_SOCKET { "_SC_PII_SOCKET", _SC_PII_SOCKET }, #endif #ifdef _SC_PII_INTERNET { "_SC_PII_INTERNET", _SC_PII_INTERNET }, #endif #ifdef _SC_PII_OSI { "_SC_PII_OSI", _SC_PII_OSI }, #endif #ifdef _SC_POLL { "_SC_POLL", _SC_POLL }, #endif #ifdef _SC_SELECT { "_SC_SELECT", _SC_SELECT }, #endif #ifdef _SC_UIO_MAXIOV { "_SC_UIO_MAXIOV", _SC_UIO_MAXIOV }, #endif #ifdef _SC_PII_INTERNET_STREAM { "_SC_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM }, #endif #ifdef _SC_PII_INTERNET_DGRAM { "_SC_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM }, #endif #ifdef _SC_PII_OSI_COTS { "_SC_PII_OSI_COTS", _SC_PII_OSI_COTS }, #endif #ifdef _SC_PII_OSI_CLTS { "_SC_PII_OSI_CLTS", _SC_PII_OSI_CLTS }, #endif #ifdef _SC_PII_OSI_M { "_SC_PII_OSI_M", _SC_PII_OSI_M }, #endif #ifdef _SC_T_IOV_MAX { "_SC_T_IOV_MAX", _SC_T_IOV_MAX }, #endif #ifdef _SC_THREADS { "_SC_THREADS", _SC_THREADS }, #endif #ifdef _SC_THREAD_SAFE_FUNCTIONS { "_SC_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS }, #endif #ifdef _SC_TTY_NAME_MAX { "_SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX }, #endif #ifdef _SC_XOPEN_XPG2 { "_SC_XOPEN_XPG2", _SC_XOPEN_XPG2 }, #endif #ifdef _SC_XOPEN_XPG3 { "_SC_XOPEN_XPG3", _SC_XOPEN_XPG3 }, #endif #ifdef _SC_XOPEN_XPG4 { "_SC_XOPEN_XPG4", _SC_XOPEN_XPG4 }, #endif #ifdef _SC_CHAR_BIT { "_SC_CHAR_BIT", _SC_CHAR_BIT }, #endif #ifdef _SC_CHAR_MAX { "_SC_CHAR_MAX", _SC_CHAR_MAX }, #endif #ifdef _SC_CHAR_MIN { "_SC_CHAR_MIN", _SC_CHAR_MIN }, #endif #ifdef _SC_INT_MAX { "_SC_INT_MAX", _SC_INT_MAX }, #endif #ifdef _SC_INT_MIN { "_SC_INT_MIN", _SC_INT_MIN }, #endif #ifdef _SC_LONG_BIT { "_SC_LONG_BIT", _SC_LONG_BIT }, #endif #ifdef _SC_WORD_BIT { "_SC_WORD_BIT", _SC_WORD_BIT }, #endif #ifdef _SC_MB_LEN_MAX { "_SC_MB_LEN_MAX", _SC_MB_LEN_MAX }, #endif #ifdef _SC_NZERO { "_SC_NZERO", _SC_NZERO }, #endif #ifdef _SC_SSIZE_MAX { "_SC_SSIZE_MAX", _SC_SSIZE_MAX }, #endif #ifdef _SC_SCHAR_MAX { "_SC_SCHAR_MAX", _SC_SCHAR_MAX }, #endif #ifdef _SC_SCHAR_MIN { "_SC_SCHAR_MIN", _SC_SCHAR_MIN }, #endif #ifdef _SC_SHRT_MAX { "_SC_SHRT_MAX", _SC_SHRT_MAX }, #endif #ifdef _SC_SHRT_MIN { "_SC_SHRT_MIN", _SC_SHRT_MIN }, #endif #ifdef _SC_UCHAR_MAX { "_SC_UCHAR_MAX", _SC_UCHAR_MAX }, #endif #ifdef _SC_UINT_MAX { "_SC_UINT_MAX", _SC_UINT_MAX }, #endif #ifdef _SC_ULONG_MAX { "_SC_ULONG_MAX", _SC_ULONG_MAX }, #endif #ifdef _SC_USHRT_MAX { "_SC_USHRT_MAX", _SC_USHRT_MAX }, #endif #ifdef _SC_NL_ARGMAX { "_SC_NL_ARGMAX", _SC_NL_ARGMAX }, #endif #ifdef _SC_NL_LANGMAX { "_SC_NL_LANGMAX", _SC_NL_LANGMAX }, #endif #ifdef _SC_NL_MSGMAX { "_SC_NL_MSGMAX", _SC_NL_MSGMAX }, #endif #ifdef _SC_NL_NMAX { "_SC_NL_NMAX", _SC_NL_NMAX }, #endif #ifdef _SC_NL_SETMAX { "_SC_NL_SETMAX", _SC_NL_SETMAX }, #endif }; static Handle getSysConf(TaskData *taskData, Handle args) { char argName[200]; int length; unsigned i; long res; length = Poly_string_to_C(DEREFWORD(args), argName, 200); if (length > 200) raise_syscall(taskData, "Argument name too long", ENAMETOOLONG); for (i = 0; i < sizeof(sysArgTable)/sizeof(sysArgTable[0]); i++) { if (strcmp(argName, sysArgTable[i].saName) == 0) break; /* See if it matches without the _SC_ at the beginning. */ if (strcmp(argName, sysArgTable[i].saName+4) == 0) break; } if (i == sizeof(sysArgTable)/sizeof(sysArgTable[0])) raise_syscall(taskData, "sysconf argument not found", EINVAL); errno = 0; /* Sysconf may return -1 without updating errno. */ res = sysconf(sysArgTable[i].saVal); if (res < 0) raise_syscall(taskData, "sysconf failed", errno); return Make_fixed_precision(taskData, (POLYUNSIGNED)res); } static struct { const char *pcName; int pcVal; } pathConfTable[] = { { "_PC_LINK_MAX", _PC_LINK_MAX }, { "_PC_MAX_CANON", _PC_MAX_CANON }, { "_PC_MAX_INPUT", _PC_MAX_INPUT }, { "_PC_NAME_MAX", _PC_NAME_MAX }, { "_PC_PATH_MAX", _PC_PATH_MAX }, { "_PC_PIPE_BUF", _PC_PIPE_BUF }, { "_PC_NO_TRUNC", _PC_NO_TRUNC }, { "_PC_VDISABLE", _PC_VDISABLE }, { "_PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED }, #ifdef _PC_ASYNC_IO { "_PC_ASYNC_IO", _PC_ASYNC_IO }, #endif #ifdef _PC_PRIO_IO { "_PC_PRIO_IO", _PC_PRIO_IO }, #endif #ifdef _PC_SYNC_IO { "_PC_SYNC_IO", _PC_SYNC_IO }, #endif #ifdef _PC_FILESIZEBITS { "_PC_FILESIZEBITS", _PC_FILESIZEBITS }, #endif #ifdef _PC_SOCK_MAXBUF { "_PC_SOCK_MAXBUF", _PC_SOCK_MAXBUF }, #endif }; /* Look up a path variable in the table. */ static int findPathVar(TaskData *taskData, PolyWord ps) { char argName[200]; int length; unsigned i; length = Poly_string_to_C(ps, argName, 200); if (length > 200) raise_syscall(taskData, "Argument name too long", ENAMETOOLONG); for (i = 0; i < sizeof(pathConfTable)/sizeof(pathConfTable[0]); i++) { if (strcmp(argName, pathConfTable[i].pcName) == 0) return pathConfTable[i].pcVal; /* See if it matches without the _PC_ at the beginning. */ if (strcmp(argName, pathConfTable[i].pcName+4) == 0) return pathConfTable[i].pcVal; } raise_syscall(taskData, "pathconf argument not found", EINVAL); } struct _entrypts osSpecificEPT[] = { { "PolyGetOSType", (polyRTSFunction)&PolyGetOSType}, { "PolyOSSpecificGeneral", (polyRTSFunction)&PolyOSSpecificGeneral}, { NULL, NULL} // End of list. }; class UnixSpecific: public RtsModule { public: virtual void Init(void); }; // Declare this. It will be automatically added to the table. static UnixSpecific unixModule; void UnixSpecific::Init(void) { struct sigaction sigcatch; /* Ignore SIGPIPE - return any errors as failure to write. */ memset(&sigcatch, 0, sizeof(sigcatch)); sigcatch.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sigcatch, NULL); } polyml-5.7.1/libpolyml/polyffi.h0000644000175000017500000000157113204034553015627 0ustar daviddavid/* Title: New Foreign Function Interface Copyright (c) 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _POLYFFI_H_DEFINED #define _POLYFFI_H_DEFINED 1 extern struct _entrypts polyFFIEPT[]; #endif polyml-5.7.1/libpolyml/realconv.h0000644000175000017500000000261313204034553015766 0ustar daviddavid/* Title: Real number conversion Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifndef REALCONV_H #define REALCONV_H #ifdef __cplusplus extern "C" { #endif #ifndef HAVE_STRTOD extern double poly_strtod(const char *s00, char **se); #endif extern char *poly_dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve); extern void poly_freedtoa(char *s); #ifdef __cplusplus }; #endif #endif polyml-5.7.1/libpolyml/process_env.h0000644000175000017500000000156313204034553016506 0ustar daviddavid/* Title: Process environment. Copyright (c) 2000, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef PROCESS_ENV_H #define PROCESS_ENV_H extern struct _entrypts processEnvEPT[]; #endif polyml-5.7.1/libpolyml/sharedata.h0000644000175000017500000000203613204034553016110 0ustar daviddavid/* Title: Share common immutable data Copyright (c) 2000 Cambridge University Technical Services Limited and David C. J. Matthews 2006, 2010-13, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _SHAREDATA_H #define _SHAREDATA_H // Called by the thread to make the request. void ShareData(TaskData *taskData, Handle root); extern struct _entrypts shareDataEPT[]; #endif polyml-5.7.1/libpolyml/reals.cpp0000644000175000017500000005756413204034553015635 0ustar daviddavid/* Title: Real number package. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000 Cambridge University Technical Services Limited Further work copyright David C.J. Matthews 2011, 2016, 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_IEEEFP_H /* Other operating systems include "finite" in math.h, but Solaris doesn't? */ #include #endif #ifdef HAVE_FPU_CONTROL_H #include #endif #ifdef HAVE_FENV_H #include #endif #if (defined(_MSC_VER)) #define finite _finite #define isnan _isnan #define copysign _copysign #endif #ifdef HAVE_FLOAT_H #include #endif #ifdef HAVE_MATH_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDINT_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "run_time.h" #include "reals.h" #include "arb.h" #include "sys.h" #include "realconv.h" #include "polystring.h" #include "save_vec.h" #include "rts_module.h" #include "machine_dep.h" #include "processes.h" #include "rtsentry.h" /* The Standard Basis Library assumes IEEE representation for reals. Among other things it does not permit equality on reals. That simplifies things considerably since we don't have to worry about there being two different representations of zero as 0 and ~0. We also don't need to check that the result is finite since NaN is allowed as a result. This code could do with being checked by someone who really understands IEEE floating point arithmetic. The original real number functions all had separate entries in the interface vector. Newly added functions all go through a single dispatch function. DCJM: March 2000. */ extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyRealBoxedToString(PolyObject *threadId, PolyWord arg, PolyWord mode, PolyWord digits); POLYEXTERNALSYMBOL POLYUNSIGNED PolyRealGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyRealBoxedFromString(PolyObject *threadId, PolyWord str); POLYEXTERNALSYMBOL POLYUNSIGNED PolyRealBoxedToLongInt(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL double PolyRealSqrt(double arg); POLYEXTERNALSYMBOL double PolyRealSin(double arg); POLYEXTERNALSYMBOL double PolyRealCos(double arg); POLYEXTERNALSYMBOL double PolyRealArctan(double arg); POLYEXTERNALSYMBOL double PolyRealExp(double arg); POLYEXTERNALSYMBOL double PolyRealLog(double arg); POLYEXTERNALSYMBOL double PolyRealTan(double arg); POLYEXTERNALSYMBOL double PolyRealArcSin(double arg); POLYEXTERNALSYMBOL double PolyRealArcCos(double arg); POLYEXTERNALSYMBOL double PolyRealLog10(double arg); POLYEXTERNALSYMBOL double PolyRealSinh(double arg); POLYEXTERNALSYMBOL double PolyRealCosh(double arg); POLYEXTERNALSYMBOL double PolyRealTanh(double arg); POLYEXTERNALSYMBOL double PolyRealFloor(double arg); POLYEXTERNALSYMBOL double PolyRealCeil(double arg); POLYEXTERNALSYMBOL double PolyRealTrunc(double arg); POLYEXTERNALSYMBOL double PolyRealRound(double arg); POLYEXTERNALSYMBOL double PolyFloatArbitraryPrecision(PolyWord arg); POLYEXTERNALSYMBOL POLYSIGNED PolyGetRoundingMode(PolyWord); POLYEXTERNALSYMBOL POLYSIGNED PolySetRoundingMode(PolyWord); POLYEXTERNALSYMBOL POLYUNSIGNED PolyRealSize(PolyWord); } static Handle Real_strc(TaskData *mdTaskData, Handle hDigits, Handle hMode, Handle arg); static Handle Real_convc(TaskData *mdTaskData, Handle str); // Positive and negative infinities and (positive) NaN. double posInf, negInf, notANumber; /* Real numbers are represented by the address of the value. */ #define DBLE sizeof(double) union db { double dble; byte bytes[DBLE]; }; /* Assumes that there will be a separate handler for floating point overflow and underflow. */ /* tidied up 27/10/93 SPF */ /* can't assume (double *) has same alignment as (PolyWord *), so all the */ /* parameters should be passed in as a Handle, not (double **). */ double real_arg(Handle x) { union db r_arg_x; for (unsigned i = 0; i < DBLE; i++) { r_arg_x.bytes[i] = DEREFBYTEHANDLE(x)[i]; } return r_arg_x.dble; } Handle real_result(TaskData *mdTaskData, double x) { union db argx; argx.dble = x; PolyObject *v = alloc(mdTaskData, DBLE/sizeof(PolyWord), F_BYTE_OBJ); /* Copy as words in case the alignment is wrong. */ for(unsigned i = 0; i < DBLE; i++) { v->AsBytePtr()[i] = argx.bytes[i]; } return mdTaskData->saveVec.push(v); } POLYEXTERNALSYMBOL double PolyFloatArbitraryPrecision(PolyWord arg) { return get_arbitrary_precision_as_real(arg); } // Convert a boxed real to a long precision int. POLYUNSIGNED PolyRealBoxedToLongInt(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); double dx = real_arg(pushedArg); int64_t i = (int64_t)dx; Handle result = Make_arbitrary_precision(taskData, i); taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // RTS call for square-root. double PolyRealSqrt(double arg) { return sqrt(arg); } // RTS call for sine. double PolyRealSin(double arg) { return sin(arg); } // RTS call for cosine. double PolyRealCos(double arg) { return cos(arg); } // RTS call for arctan. double PolyRealArctan(double arg) { return atan(arg); } // RTS call for exp. double PolyRealExp(double arg) { return exp(arg); } // RTS call for ln. double PolyRealLog(double arg) { // Make sure the result conforms to the definition. // If the argument is a Nan each of the first two tests will fail. if (arg > 0.0) return log(arg); else if (arg == 0.0) // x may be +0.0 or -0.0 return negInf; // -infinity. else return notANumber; } // These were handled by the general dispatch function double PolyRealTan(double arg) { return tan(arg); } double PolyRealArcSin(double arg) { if (arg >= -1.0 && arg <= 1.0) return asin(arg); else return notANumber; } double PolyRealArcCos(double arg) { if (arg >= -1.0 && arg <= 1.0) return acos(arg); else return notANumber; } double PolyRealLog10(double arg) { // Make sure the result conforms to the definition. // If the argument is a Nan each of the first two tests will fail. if (arg > 0.0) return log10(arg); else if (arg == 0.0) // x may be +0.0 or -0.0 return negInf; // -infinity. else return notANumber; } double PolyRealSinh(double arg) { return sinh(arg); } double PolyRealCosh(double arg) { return cosh(arg); } double PolyRealTanh(double arg) { return tanh(arg); } double PolyRealFloor(double arg) { return floor(arg); } double PolyRealCeil(double arg) { return ceil(arg); } double PolyRealTrunc(double arg) { // Truncate towards zero if (arg >= 0.0) return floor(arg); else return ceil(arg); } double PolyRealRound(double arg) { // Round to nearest integral value. double drem = fmod(arg, 2.0); if (drem == 0.5 || drem == -1.5) // If the value was exactly positive even + 0.5 or // negative odd -0.5 round it down, otherwise round it up. return ceil(arg-0.5); else return floor(arg+0.5); } /* CALL_IO1(Real_conv, REF, NOIND) */ Handle Real_convc(TaskData *mdTaskData, Handle str) /* string to real */ { double result; int i; char *finish; TempCString string_buffer(Poly_string_to_C_alloc(DEREFHANDLE(str))); /* Scan the string turning '~' into '-' */ for(i = 0; string_buffer[i] != '\0'; i ++) { if (string_buffer[i] == '~') string_buffer[i] = '-'; } /* Now convert it */ #ifdef HAVE_STRTOD result = strtod(string_buffer, &finish); #else result = poly_strtod(string_buffer, &finish); #endif // We no longer detect overflow and underflow and instead return // (signed) zeros for underflow and (signed) infinities for overflow. if (*finish != '\0') raise_exception_string(mdTaskData, EXC_conversion, ""); return real_result(mdTaskData, result); }/* Real_conv */ // Convert a string to a boxed real. This should really return an unboxed real. POLYUNSIGNED PolyRealBoxedFromString(PolyObject *threadId, PolyWord str) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedString = taskData->saveVec.push(str); Handle result = 0; try { result = Real_convc(taskData, pushedString); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } static double real_arg1(Handle x) { union db r_arg_x; for(unsigned i = 0; i < DBLE; i++) { r_arg_x.bytes[i] = DEREFHANDLE(x)->Get(0).AsObjPtr()->AsBytePtr()[i]; } return r_arg_x.dble; } static double real_arg2(Handle x) { union db r_arg_x; for(unsigned i = 0; i < DBLE; i++) { r_arg_x.bytes[i] = DEREFHANDLE(x)->Get(1).AsObjPtr()->AsBytePtr()[i]; } return r_arg_x.dble; } static Handle powerOf(TaskData *mdTaskData, Handle args) { double x = real_arg1(args), y = real_arg2(args); /* Some of the special cases are defined and don't seem to match the C pow function (at least as implemented in MS C). */ /* Maybe handle all this in ML? */ if (isnan(x)) { if (y == 0.0) return real_result(mdTaskData, 1.0); else return real_result(mdTaskData, notANumber); } else if (isnan(y)) return real_result(mdTaskData, y); /* i.e. nan. */ else if (x == 0.0 && y < 0.0) { /* This case is not handled correctly in Solaris. It always returns -infinity. */ int iy = (int)floor(y); /* If x is -0.0 and y is an odd integer the result is -infinity. */ if (copysign(1.0, x) < 0.0 && (double)iy == y && (iy & 1)) return real_result(mdTaskData, negInf); /* -infinity. */ else return real_result(mdTaskData, posInf); /* +infinity. */ } return real_result(mdTaskData, pow(x, y)); } #define POLY_ROUND_TONEAREST 0 #define POLY_ROUND_DOWNWARD 1 #define POLY_ROUND_UPWARD 2 #define POLY_ROUND_TOZERO 3 #define POLY_ROUND_ERROR -1 #if defined(__SOFTFP__) // soft-float lacks proper rounding mode support // While some systems will support fegetround/fesetround, it will have no // effect on the actual rounding performed, as the software implementation only // ever rounds to nearest. static int getrounding() { return POLY_ROUND_TONEAREST; } static int setrounding(int rounding) { switch (rounding) { case POLY_ROUND_TONEAREST: return 0; // The only mode supported } return -1; // Error - unsupported } // It would be nice to be able to use autoconf to test for these as functions // but they are frequently inlined #elif defined(HAVE_FENV_H) // C99 version. This is becoming the most common. static int getrounding() { switch (fegetround()) { case FE_TONEAREST: return POLY_ROUND_TONEAREST; #ifndef HOSTARCHITECTURE_SH case FE_DOWNWARD: return POLY_ROUND_DOWNWARD; case FE_UPWARD: return POLY_ROUND_UPWARD; #endif case FE_TOWARDZERO: return POLY_ROUND_TOZERO; } return POLY_ROUND_ERROR; } static int setrounding(int rounding) { switch (rounding) { case POLY_ROUND_TONEAREST: fesetround(FE_TONEAREST); return 0; // Choose nearest #ifndef HOSTARCHITECTURE_SH case POLY_ROUND_DOWNWARD: fesetround(FE_DOWNWARD); return 0; // Towards negative infinity case POLY_ROUND_UPWARD: fesetround(FE_UPWARD); return 0; // Towards positive infinity #endif case POLY_ROUND_TOZERO: fesetround(FE_TOWARDZERO); return 0; // Truncate towards zero default: return -1; } } #elif (defined(HAVE_IEEEFP_H) && ! defined(__CYGWIN__)) // Older FreeBSD. Cygwin has the ieeefp.h header but not the functions! static int getrounding() { switch (fpgetround()) { case FP_RN: return POLY_ROUND_TONEAREST; case FP_RM: return POLY_ROUND_DOWNWARD; case FP_RP: return POLY_ROUND_UPWARD; case FP_RZ: return POLY_ROUND_TOZERO; default: return POLY_ROUND_ERROR; /* Shouldn't happen. */ } } static int setrounding(int rounding) { switch (rounding) { case POLY_ROUND_TONEAREST: fpsetround(FP_RN); break; /* Choose nearest */ case POLY_ROUND_DOWNWARD: fpsetround(FP_RM); break; /* Towards negative infinity */ case POLY_ROUND_UPWARD: fpsetround(FP_RP); break; /* Towards positive infinity */ case POLY_ROUND_TOZERO: fpsetround(FP_RZ); break; /* Truncate towards zero */ } return 0 } #elif defined(_WIN32) // Windows version static int getrounding() { switch (_controlfp(0,0) & _MCW_RC) { case _RC_NEAR: return POLY_ROUND_TONEAREST; case _RC_DOWN: return POLY_ROUND_DOWNWARD; case _RC_UP: return POLY_ROUND_UPWARD; case _RC_CHOP: return POLY_ROUND_TOZERO; } return POLY_ROUND_ERROR; } static int setrounding(int rounding) { switch (rounding) { case POLY_ROUND_TONEAREST: _controlfp(_RC_NEAR, _MCW_RC); return 0; // Choose nearest case POLY_ROUND_DOWNWARD: _controlfp(_RC_DOWN, _MCW_RC); return 0; // Towards negative infinity case POLY_ROUND_UPWARD: _controlfp(_RC_UP, _MCW_RC); return 0; // Towards positive infinity case POLY_ROUND_TOZERO: _controlfp(_RC_CHOP, _MCW_RC); return 0; // Truncate towards zero } return -1; } #elif defined(_FPU_GETCW) && defined(_FPU_SETCW) // Older Linux version static int getrounding() { fpu_control_t ctrl; _FPU_GETCW(ctrl); switch (ctrl & _FPU_RC_ZERO) { case _FPU_RC_NEAREST: return POLY_ROUND_TONEAREST; case _FPU_RC_DOWN: return POLY_ROUND_DOWNWARD; case _FPU_RC_UP: return POLY_ROUND_UPWARD; case _FPU_RC_ZERO: return POLY_ROUND_TOZERO; } return POLY_ROUND_ERROR; /* Never reached but this avoids warning message. */ } static int setrounding(int rounding) { fpu_control_t ctrl; _FPU_GETCW(ctrl); ctrl &= ~_FPU_RC_ZERO; /* Mask off any existing rounding. */ switch (rounding) { case POLY_ROUND_TONEAREST: ctrl |= _FPU_RC_NEAREST; case POLY_ROUND_DOWNWARD: ctrl |= _FPU_RC_DOWN; case POLY_ROUND_UPWARD: ctrl |= _FPU_RC_UP; case POLY_ROUND_TOZERO: ctrl |= _FPU_RC_ZERO; } _FPU_SETCW(ctrl); return 0; } #else // Give up. static int getrounding() { return POLY_ROUND_ERROR; } static int setrounding() { return -1; } #endif POLYSIGNED PolyGetRoundingMode(PolyWord) { // Get the rounding and turn the result into a tagged integer. return TAGGED(getrounding()).AsSigned(); } POLYSIGNED PolySetRoundingMode(PolyWord arg) { return TAGGED(setrounding((int)arg.UnTagged())).AsSigned(); } Handle Real_strc(TaskData *mdTaskData, Handle hDigits, Handle hMode, Handle arg) { double dx = real_arg(arg); int decpt, sign; int mode = get_C_int(mdTaskData, DEREFWORDHANDLE(hMode)); int digits = get_C_int(mdTaskData, DEREFWORDHANDLE(hDigits)); /* Compute the shortest string which gives the required value. */ /* */ char *chars = poly_dtoa(dx, mode, digits, &decpt, &sign, NULL); /* We have to be careful in case an allocation causes a garbage collection. */ PolyWord pStr = C_string_to_Poly(mdTaskData, chars); poly_freedtoa(chars); Handle ppStr = mdTaskData->saveVec.push(pStr); /* Allocate a triple for the results. */ PolyObject *result = alloc(mdTaskData, 3); result->Set(0, DEREFWORDHANDLE(ppStr)); result->Set(1, TAGGED(decpt)); result->Set(2, TAGGED(sign)); return mdTaskData->saveVec.push(result); } // Convert boxed real to string. This should be changed to use an unboxed real argument. POLYUNSIGNED PolyRealBoxedToString(PolyObject *threadId, PolyWord arg, PolyWord mode, PolyWord digits) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); Handle pushedMode = taskData->saveVec.push(mode); Handle pushedDigits = taskData->saveVec.push(digits); Handle result = 0; try { result = Real_strc(taskData, pushedDigits, pushedMode, pushedArg); } catch (...) { } // Can this raise an exception? taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } /* Functions added for Standard Basis Library are all indirected through here. */ static Handle Real_dispatchc(TaskData *mdTaskData, Handle args, Handle code) { unsigned c = get_C_unsigned(mdTaskData, DEREFWORDHANDLE(code)); switch (c) { case 3: /* atan2 */ return real_result(mdTaskData, atan2(real_arg1(args), real_arg2(args))); case 4: /* pow */ return powerOf(mdTaskData, args); /* Floating point representation queries. */ #ifdef _DBL_RADIX case 11: /* Value of radix */ return mdTaskData->saveVec.push(TAGGED(_DBL_RADIX)); #else case 11: /* Value of radix */ return mdTaskData->saveVec.push(TAGGED(FLT_RADIX)); #endif case 12: /* Value of precision */ return mdTaskData->saveVec.push(TAGGED(DBL_MANT_DIG)); case 13: /* Maximum number */ return real_result(mdTaskData, DBL_MAX); /* float.h describes DBL_MIN as the minimum positive number. In fact this is the minimum NORMALISED number. The smallest number which can be represented is DBL_MIN*2**(-DBL_MANT_DIG) */ case 14: /* Minimum normalised number. */ return real_result(mdTaskData, DBL_MIN); case 17: /* Get sign bit. There may be better ways to find this. */ return mdTaskData->saveVec.push(copysign(1.0, real_arg(args)) < 0.0 ? TAGGED(1) : TAGGED(0)); case 18: /* Copy sign. */ return real_result(mdTaskData, copysign(real_arg1(args), real_arg2(args))); case 23: /* Compute ldexp */ { int exp = get_C_int(mdTaskData, DEREFHANDLE(args)->Get(1)); return real_result(mdTaskData, ldexp(real_arg1(args), exp)); } case 24: /* Get mantissa. */ { int exp; return real_result(mdTaskData, frexp(real_arg(args), &exp)); } case 25: /* Get exponent. */ { int exp; (void)frexp(real_arg(args), &exp); return mdTaskData->saveVec.push(TAGGED(exp)); } case 26: /* nextafter */ return real_result(mdTaskData, nextafter(real_arg1(args), real_arg2(args))); default: { char msg[100]; sprintf(msg, "Unknown real arithmetic function: %d", c); raise_exception_string(mdTaskData, EXC_Fail, msg); return 0; } } } POLYUNSIGNED PolyRealSize(PolyWord) { // Return the number of bytes for a real. This is used in PackRealBig/Little. return TAGGED(sizeof(double)).AsUnsigned(); } POLYUNSIGNED PolyRealGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = Real_dispatchc(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts realsEPT[] = { { "PolyRealBoxedToString", (polyRTSFunction)&PolyRealBoxedToString}, { "PolyRealGeneral", (polyRTSFunction)&PolyRealGeneral}, { "PolyRealBoxedFromString", (polyRTSFunction)&PolyRealBoxedFromString}, { "PolyRealBoxedToLongInt", (polyRTSFunction)&PolyRealBoxedToLongInt}, { "PolyRealSqrt", (polyRTSFunction)&PolyRealSqrt}, { "PolyRealSin", (polyRTSFunction)&PolyRealSin}, { "PolyRealCos", (polyRTSFunction)&PolyRealCos}, { "PolyRealArctan", (polyRTSFunction)&PolyRealArctan}, { "PolyRealExp", (polyRTSFunction)&PolyRealExp}, { "PolyRealLog", (polyRTSFunction)&PolyRealLog}, { "PolyRealTan", (polyRTSFunction)&PolyRealTan}, { "PolyRealArcSin", (polyRTSFunction)&PolyRealArcSin}, { "PolyRealArcCos", (polyRTSFunction)&PolyRealArcCos}, { "PolyRealLog10", (polyRTSFunction)&PolyRealLog10}, { "PolyRealSinh", (polyRTSFunction)&PolyRealSinh}, { "PolyRealCosh", (polyRTSFunction)&PolyRealCosh}, { "PolyRealTanh", (polyRTSFunction)&PolyRealTanh}, { "PolyRealFloor", (polyRTSFunction)&PolyRealFloor}, { "PolyRealCeil", (polyRTSFunction)&PolyRealCeil}, { "PolyRealTrunc", (polyRTSFunction)&PolyRealTrunc}, { "PolyRealRound", (polyRTSFunction)&PolyRealRound}, { "PolyFloatArbitraryPrecision", (polyRTSFunction)&PolyFloatArbitraryPrecision}, { "PolyGetRoundingMode", (polyRTSFunction)&PolyGetRoundingMode}, { "PolySetRoundingMode", (polyRTSFunction)&PolySetRoundingMode}, { "PolyRealSize", (polyRTSFunction)&PolyRealSize}, { NULL, NULL} // End of list. }; class RealArithmetic: public RtsModule { public: virtual void Init(void); }; // Declare this. It will be automatically added to the table. static RealArithmetic realModule; void RealArithmetic::Init(void) { /* Some compilers object to overflow in constants so we compute the values here. */ #if (HAVE_DECL_FPSETMASK && ! defined(__CYGWIN__)) /* In FreeBSD 3.4 at least, we sometimes get floating point exceptions if we don't clear the mask. Maybe need to do this on other platforms as well just to be sure. */ // N.B. fpsetmask is defined in the headers on Cygwin but there's no function! fpsetmask(0); #endif // NAN and INFINITY are defined in GCC but not in Visual C++. #if (defined(INFINITY)) posInf = INFINITY; negInf = -(INFINITY); #else { double zero = 0.0; posInf = 1.0 / zero; negInf = -1.0 / zero; } #endif #if (defined(NAN)) notANumber = NAN; #else { double zero = 0.0; notANumber = zero / zero; } #endif // Make sure this is a positive NaN since we return it from "abs". // "Positive" in this context is copysign(1.0, x) > 0.0 because that's // how we test the sign so we test it first and then try to change the // sign if it's wrong. if (copysign(1.0, notANumber) < 0) notANumber = copysign(notANumber, 1.0); } polyml-5.7.1/libpolyml/rtsentry.cpp0000644000175000017500000001211113204034553016374 0ustar daviddavid/* Title: rtsentry.cpp - Entry points to the run-time system Copyright (c) 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "rtsentry.h" #include "save_vec.h" #include "processes.h" #include "run_time.h" #include "polystring.h" #include "arb.h" #include "basicio.h" #include "polyffi.h" #include "xwindows.h" #include "os_specific.h" #include "timing.h" #include "sighandler.h" #include "sharedata.h" #include "run_time.h" #include "reals.h" #include "profiling.h" #include "processes.h" #include "process_env.h" #include "poly_specific.h" #include "objsize.h" #include "network.h" #include "foreign.h" #include "machine_dep.h" #include "exporter.h" extern struct _entrypts rtsCallEPT[]; static entrypts entryPointTable[] = { rtsCallEPT, arbitraryPrecisionEPT, basicIOEPT, polyFFIEPT, xwindowsEPT, osSpecificEPT, timingEPT, sigHandlerEPT, shareDataEPT, runTimeEPT, realsEPT, profilingEPT, processesEPT, processEnvEPT, polySpecificEPT, objSizeEPT, networkingEPT, foreignEPT, machineSpecificEPT, exporterEPT, NULL }; extern "C" { #ifdef _MSC_VER __declspec(dllexport) #endif POLYUNSIGNED PolyCreateEntryPointObject(PolyObject *threadId, PolyWord arg); }; // Create an entry point containing the address of the entry and the // string name. Having the string in there allows us to export the entry. Handle creatEntryPointObject(TaskData *taskData, Handle entryH) { TempCString entryName(Poly_string_to_C_alloc(entryH->WordP())); if ((const char *)entryName == 0) raise_syscall(taskData, "Insufficient memory", ENOMEM); // Create space for the address followed by the name as a C string. POLYUNSIGNED space = 1 + (strlen(entryName) + 1 + sizeof(PolyWord) - 1) / sizeof(PolyWord); // Allocate a byte, weak, mutable, no-overwrite cell. It's not clear if // it actually needs to be mutable but if it is it needs to be no-overwrite. Handle refH = alloc_and_save(taskData, space, F_BYTE_OBJ|F_WEAK_BIT|F_MUTABLE_BIT|F_NO_OVERWRITE); strcpy((char*)(refH->WordP()->AsBytePtr() + sizeof(PolyWord)), entryName); if (! setEntryPoint(refH->WordP())) raise_fail(taskData, "entry point not found"); return refH; } // Return the string entry point. const char *getEntryPointName(PolyObject *p) { if (p->Length() <= 1) return 0; // Doesn't contain an entry point return (const char *)(p->AsBytePtr() + sizeof(PolyWord)); } // Sets the address of the entry point in an entry point object. bool setEntryPoint(PolyObject *p) { if (p->Length() == 0) return false; p->Set(0, PolyWord::FromSigned(0)); // Clear it by default if (p->Length() == 1) return false; const char *entryName = (const char*)(p->AsBytePtr()+sizeof(PolyWord)); // Search the entry point table list. for (entrypts *ept=entryPointTable; *ept != NULL; ept++) { entrypts entryPtTable = *ept; if (entryPtTable != 0) { for (struct _entrypts *ep = entryPtTable; ep->entry != NULL; ep++) { if (strcmp(entryName, ep->name) == 0) { polyRTSFunction entry = ep->entry; *(polyRTSFunction*)p = entry; return true; } } } } return false; } // External call POLYUNSIGNED PolyCreateEntryPointObject(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = creatEntryPointObject(taskData, pushedArg); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts rtsCallEPT[] = { { "PolyCreateEntryPointObject", (polyRTSFunction)&PolyCreateEntryPointObject}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/bitmap.cpp0000644000175000017500000001530713204034553015770 0ustar daviddavid/* Title: Bitmap. Generally used by the garbage collector to indicate allocated words Copyright (c) 2006, 2012 David C.J. Matthews Based on original code in garbage_collect.c. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* Bitmaps are used particularly in the garbage collector to indicate allocated words. The efficiency of this code is crucial for the speed of the garbage collector. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(h) assert(h) #else #define ASSERT(h) #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_STRING_H #include #endif #include "bitmap.h" #include "globals.h" bool Bitmap::Create(POLYUNSIGNED bits) { free(m_bits); // Any previous data size_t bytes = (bits+7) >> 3; m_bits = (unsigned char*)calloc(bytes, sizeof(unsigned char)); return m_bits != 0; } void Bitmap::Destroy() { free(m_bits); m_bits = 0; } Bitmap::~Bitmap() { Destroy(); } // Set a range of bits in a bitmap. This checks that the bits are not already set. void Bitmap::SetBits(POLYUNSIGNED bitno, POLYUNSIGNED length) { POLYUNSIGNED byte_index = bitno >> 3; ASSERT (0 < length); // Strictly positive /* Set the first part byte */ POLYUNSIGNED start_bit_index = bitno & 7; POLYUNSIGNED stop_bit_index = start_bit_index + length; /* Do we need to change more than one byte? */ if (stop_bit_index < 8) { const unsigned mask1 = 0xff << start_bit_index; const unsigned mask2 = 0xff << stop_bit_index; const unsigned mask = mask1 & ~mask2; // ASSERT((m_bits[byte_index] & mask) == 0); m_bits[byte_index] |= mask; return; } else /* Set all the bits we can in the first byte */ { const unsigned mask = 0xff << start_bit_index; // ASSERT((m_bits[byte_index] & mask) == 0); m_bits[byte_index] |= mask; /* length = length - (8 - start_bit_index); */ length = stop_bit_index - 8; } /* Set as many full bytes as possible */ if (8 <= length) { memset(m_bits + byte_index + 1, 0xff, length >> 3); byte_index += length >> 3; length &= 7; } /* Invariant: 0 <= length < 8 */ ASSERT(length < 8); if (length == 0) return; /* Invariant: 0 < length < 8 */ /* Set the final part byte */ byte_index ++; const unsigned mask = 0xff & ~(0xff << length); // ASSERT((m_bits[byte_index] & mask) == 0); m_bits[byte_index] |= mask; } // Clear a range of bits. This is only used to clear the bitmap so // it does not need to be exact so long as at least the range specified // is zero. void Bitmap::ClearBits(POLYUNSIGNED bitno, POLYUNSIGNED length) { POLYUNSIGNED byte_index = bitno >> 3; length += bitno & 7; size_t bytes = length >> 3; if (length & 7) bytes++; memset(m_bits+byte_index, 0, bytes); } // How many zero bits (maximum n) are there in the bitmap, starting at location start? */ POLYUNSIGNED Bitmap::CountZeroBits(POLYUNSIGNED bitno, POLYUNSIGNED n) const { POLYUNSIGNED byte_index = bitno >> 3; unsigned bit_index = bitno & 7; unsigned mask = 1 << bit_index; POLYUNSIGNED zero_bits = 0; ASSERT (0 < n); // Strictly positive /* Check the first part byte */ while (mask != 0) { /* zero_bits < n */ if ((m_bits[byte_index] & mask) != 0) return zero_bits; zero_bits ++; if (zero_bits == n) return zero_bits; mask = (mask << 1) & 0xff; /* zero_bits < n */ } /* zero_bits < n */ /* Check as many bytes as possible */ byte_index ++; while (zero_bits < n && m_bits[byte_index] == 0) { zero_bits += 8; byte_index ++; } /* Check the final part byte */ mask = 1; while (zero_bits < n && (m_bits[byte_index] & mask) == 0) { zero_bits ++; mask = (mask << 1) & 0xff; } return zero_bits; } // Search the bitmap from the high end down looking for n contiguous zeros // Returns the value of "bitno" on failure. . POLYUNSIGNED Bitmap::FindFree ( POLYUNSIGNED limit, /* The highest numbered bit that's too small to use */ POLYUNSIGNED start, /* The lowest numbered bit that's too large to use */ POLYUNSIGNED n /* The number of consecutive zero bits required */ ) const { if (limit + n >= start) return start; // Failure POLYUNSIGNED candidate = start - n; ASSERT (start > limit); while (1) { POLYUNSIGNED bits_free = CountZeroBits(candidate, n); if (n <= bits_free) return candidate; if (candidate < n - bits_free + limit) return start; // Failure candidate -= (n - bits_free); } } // Count the number of set bits in the bitmap. POLYUNSIGNED Bitmap::CountSetBits(POLYUNSIGNED size) const { size_t bytes = (size+7) >> 3; POLYUNSIGNED count = 0; for (size_t i = 0; i < bytes; i++) { unsigned char byte = m_bits[i]; if (byte == 0xff) // Common case count += 8; else { while (byte != 0) { unsigned char b = byte & (-byte); count++; byte -= b; } } } return count; } // Find the last set bit before here. Used to find the start of a code cell. // Returns zero if no bit is set. POLYUNSIGNED Bitmap::FindLastSet(POLYUNSIGNED bitno) const { size_t byteno = bitno >> 3; // Code cells are quite long so most of the bitmap will be zero. if (m_bits[byteno] == 0) { do { if (byteno == 0) return 0; byteno--; } while (m_bits[byteno] == 0); bitno = (byteno << 3) + 7; // Set it to the last bit } while (bitno > 0 && ! TestBit(bitno)) bitno--; return bitno; }polyml-5.7.1/libpolyml/run_time.h0000644000175000017500000000772613204034553016011 0ustar daviddavid/* Title: run_time.h Copyright (c) 2000-9 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _RUNTIME_H_DEFINED #define _RUNTIME_H_DEFINED 1 #include "globals.h" // PolyWord, PolyObject etc #include "noreturn.h" class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; // Exceptions thrown by C++ code. Indicates that the caller should not return normally. // They now result in ML exceptions. class IOException { public: IOException() { } }; // This exception is used in the exporter and sharedata code. It is // converted into an ML exception at the outer level. class MemoryException { public: MemoryException() {} }; // A request to kill the thread raises this exception. // This allows IO operations to handle this and unwind. class KillException { public: KillException() {} }; /* storage allocation functions */ extern PolyObject *alloc(TaskData *taskData, POLYUNSIGNED words, unsigned flags = 0); extern Handle alloc_and_save(TaskData *taskData, POLYUNSIGNED words, unsigned flags = 0); extern Handle makeList(TaskData *taskData, int count, char *p, int size, void *arg, Handle (mkEntry)(TaskData *, void*, char*)); // Exceptions without an argument e.g. Size and Overflow NORETURNFN(extern void raiseException0WithLocation(TaskData *taskData, int id, const char *file, int line)); #define raise_exception0(taskData, id) raiseException0WithLocation(taskData, id, __FILE__, __LINE__) // Exceptions with a string argument e.g. Foreign NORETURNFN(extern void raiseExceptionStringWithLocation(TaskData *taskData, int id, const char *str, const char *file, int line)); #define raise_exception_string(taskData, id, str) raiseExceptionStringWithLocation(taskData, id, str, __FILE__, __LINE__) // Fail exception NORETURNFN(extern void raiseExceptionFailWithLocation(TaskData *taskData, const char *str, const char *file, int line)); #define raise_fail(taskData, errmsg) raiseExceptionFailWithLocation(taskData, errmsg, __FILE__, __LINE__) // Syscall exception. The errmsg argument is ignored and replaced with the standard string unless err is zero. NORETURNFN(extern void raiseSycallWithLocation(TaskData *taskData, const char *errmsg, int err, const char *file, int line)); #define raise_syscall(taskData, errMsg, err) raiseSycallWithLocation(taskData, errMsg, err, __FILE__, __LINE__) // Construct an exception packet for future use poly_exn *makeExceptionPacket(TaskData *taskData, int id); // Check to see that there is space in the stack. May GC and may raise a C++ exception. extern void CheckAndGrowStack(TaskData *mdTaskData, POLYUNSIGNED minSize); extern Handle errorMsg(TaskData *taskData, int err); // Create fixed precision values. extern Handle Make_fixed_precision(TaskData *taskData, long); extern Handle Make_fixed_precision(TaskData *taskData, unsigned long); extern Handle Make_fixed_precision(TaskData *taskData, int); extern Handle Make_fixed_precision(TaskData *taskData, unsigned); #ifdef HAVE_LONG_LONG extern Handle Make_fixed_precision(TaskData *taskData, long long); extern Handle Make_fixed_precision(TaskData *taskData, unsigned long long); #endif extern Handle Make_sysword(TaskData *taskData, uintptr_t p); extern struct _entrypts runTimeEPT[]; #endif /* _RUNTIME_H_DEFINED */ polyml-5.7.1/libpolyml/gc_mark_phase.cpp0000644000175000017500000007372613204034553017310 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector - Mark phase Copyright (c) 2010-12, 2015-16 David C. J. Matthews Based on the original garbage collector code Copyright 2000-2008 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is the first, mark, phase of the garbage collector. It detects all reachable cells in the area being collected. At the end of the phase the bit-maps associated with the areas will have ones for words belonging to cells that must be retained and zeros for words that can be reused. This is now multi-threaded. The mark phase involves setting a bit in the header of each live cell and then a pass over the memory building the bitmaps and clearing this bit. It is unfortunate that we cannot use the GC-bit that is used in forwarding pointers but we may well have forwarded pointers left over from a partially completed minor GC. Using a bit in the header avoids the need for locking since at worst it may involve two threads duplicating some marking. The code ensures that each reachable cell is marked at least once but with multiple threads a cell may be marked by more than once cell if the memory is not fully up to date. Each thread has a stack on which it remembers cells that have been marked but not fully scanned. If a thread runs out of cells of its own to scan it can pick a pointer off the stack of another thread and scan that. The original thread will still scan it some time later but it should find that the addresses in it have all been marked and it can simply pop this off. This is all done without locking. Stacks are only modified by the owning thread and when they pop anything they write zero in its place. Other threads only need to search for a zero to find if they are at the top and if they get a pointer that has already been scanned then this is safe. The only assumption made about the memory is that all the bits of a word are updated together so that a thread will always read a value that is a valid pointer. Many of the ideas are drawn from Flood, Detlefs, Shavit and Zhang 2001 "Parallel Garbage Collection for Shared Memory Multiprocessors". */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "processes.h" #include "gc.h" #include "scanaddrs.h" #include "check_objects.h" #include "bitmap.h" #include "memmgr.h" #include "diagnostics.h" #include "gctaskfarm.h" #include "profiling.h" #include "heapsizing.h" #define MARK_STACK_SIZE 3000 #define LARGECACHE_SIZE 20 class MTGCProcessMarkPointers: public ScanAddress { public: MTGCProcessMarkPointers(); virtual void ScanRuntimeAddress(PolyObject **pt, RtsStrength weak); virtual PolyObject *ScanObjectAddress(PolyObject *base); virtual void ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord); // Have to redefine this for some reason. void ScanAddressesInObject(PolyObject *base) { ScanAddressesInObject(base, base->LengthWord()); } virtual void ScanConstant(PolyObject *base, byte *addressOfConstant, ScanRelocationKind code); static void MarkPointersTask(GCTaskId *, void *arg1, void *arg2); static void InitStatics(unsigned threads) { markStacks = new MTGCProcessMarkPointers[threads]; nInUse = 0; nThreads = threads; } static void MarkRoots(void); static bool RescanForStackOverflow(); private: bool TestForScan(PolyWord *pt); void MarkAndTestForScan(PolyWord *pt); void Reset(); void PushToStack(PolyObject *obj, PolyWord *currentPtr = 0, POLYUNSIGNED originalLength = 0) { // If we don't have all the threads running we start a new one but // only once we have several items on the stack. Otherwise we // can end up creating a task that terminates almost immediately. if (nInUse >= nThreads || msp < 2 || ! ForkNew(obj)) { if (msp < MARK_STACK_SIZE) { markStack[msp++] = obj; if (currentPtr != 0) { locPtr++; if (locPtr == LARGECACHE_SIZE) locPtr = 0; largeObjectCache[locPtr].base = obj; largeObjectCache[locPtr].current = currentPtr; } } else StackOverflow(obj); } // else the new task is processing it. } static void StackOverflow(PolyObject *obj); static bool ForkNew(PolyObject *obj); PolyObject *markStack[MARK_STACK_SIZE]; unsigned msp; bool active; // For the typical small cell it's easier just to rescan from the start // but that can be expensive for large cells. This caches the offset for // large cells. static const POLYUNSIGNED largeObjectSize = 50; struct { PolyObject *base; PolyWord *current; } largeObjectCache[LARGECACHE_SIZE]; unsigned locPtr; static MTGCProcessMarkPointers *markStacks; protected: static unsigned nThreads, nInUse; static PLock stackLock; }; // There is one mark-stack for each GC thread. markStacks[0] is used by the // main thread when marking the roots and rescanning after mark-stack overflow. // Once that work is done markStacks[0] is released and is available for a // worker thread. MTGCProcessMarkPointers *MTGCProcessMarkPointers::markStacks; unsigned MTGCProcessMarkPointers::nThreads, MTGCProcessMarkPointers::nInUse; PLock MTGCProcessMarkPointers::stackLock("GC mark stack"); // It is possible to have two levels of forwarding because // we could have a cell in the allocation area that has been moved // to the immutable area and then shared with another cell. inline PolyObject *FollowForwarding(PolyObject *obj) { while (obj->ContainsForwardingPtr()) obj = obj->GetForwardingPtr(); return obj; } MTGCProcessMarkPointers::MTGCProcessMarkPointers(): msp(0), active(false), locPtr(0) { // Clear the mark stack for (unsigned i = 0; i < MARK_STACK_SIZE; i++) markStack[i] = 0; // Clear the large object cache just to be sure. for (unsigned j = 0; j < LARGECACHE_SIZE; j++) { largeObjectCache[j].base = 0; largeObjectCache[j].current = 0; } } // Clear the state at the beginning of a new GC pass. void MTGCProcessMarkPointers::Reset() { locPtr = 0; //largeObjectCache[locPtr].base = 0; // Clear the cache completely just to be safe for (unsigned j = 0; j < LARGECACHE_SIZE; j++) { largeObjectCache[j].base = 0; largeObjectCache[j].current = 0; } } // Called when the stack has overflowed. We need to include this // in the range to be rescanned. void MTGCProcessMarkPointers::StackOverflow(PolyObject *obj) { MarkableSpace *space = (MarkableSpace*)gMem.SpaceForAddress(obj-1); ASSERT(space != 0 && (space->spaceType == ST_LOCAL || space->spaceType == ST_CODE)); PLocker lock(&space->spaceLock); // Have to include this in the range to rescan. if (space->fullGCRescanStart > ((PolyWord*)obj) - 1) space->fullGCRescanStart = ((PolyWord*)obj) - 1; POLYUNSIGNED n = obj->Length(); if (space->fullGCRescanEnd < ((PolyWord*)obj) + n) space->fullGCRescanEnd = ((PolyWord*)obj) + n; ASSERT(obj->LengthWord() & _OBJ_GC_MARK); // Should have been marked. if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Mark: Stack overflow. Rescan for %p\n", obj); } // Fork a new task. Because we've checked nInUse without taking the lock // we may find that we can no longer create a new task. bool MTGCProcessMarkPointers::ForkNew(PolyObject *obj) { MTGCProcessMarkPointers *marker = 0; { PLocker lock(&stackLock); if (nInUse == nThreads) return false; for (unsigned i = 0; i < nThreads; i++) { if (! markStacks[i].active) { marker = &markStacks[i]; break; } } ASSERT(marker != 0); marker->active = true; nInUse++; } bool test = gpTaskFarm->AddWork(&MTGCProcessMarkPointers::MarkPointersTask, marker, obj); ASSERT(test); return true; } // Main marking task. This is forked off initially to scan a specific object and // anything reachable from it but once that has finished it tries to find objects // on other stacks to scan. void MTGCProcessMarkPointers::MarkPointersTask(GCTaskId *, void *arg1, void *arg2) { MTGCProcessMarkPointers *marker = (MTGCProcessMarkPointers*)arg1; marker->Reset(); marker->ScanAddressesInObject((PolyObject*)arg2); while (true) { // Look for a stack that has at least one item on it. MTGCProcessMarkPointers *steal = 0; for (unsigned i = 0; i < nThreads && steal == 0; i++) { if (markStacks[i].markStack[0] != 0) steal = &markStacks[i]; } // We're finished if they're all done. if (steal == 0) break; // Look for items on this stack for (unsigned j = 0; j < MARK_STACK_SIZE; j++) { // Pick the item off the stack. // N.B. The owning thread may update this to zero // at any time. PolyObject *toSteal = steal->markStack[j]; if (toSteal == 0) break; // Nothing more on the stack // The idea here is that the original thread pushed this // because there were at least two addresses it needed to // process. It started down one branch but left the other. // Since it will have marked cells in the branch it has // followed this thread will start on the unprocessed // address(es). marker->ScanAddressesInObject(toSteal); } } PLocker lock(&stackLock); marker->active = false; // It's finished nInUse--; ASSERT(marker->markStack[0] == 0); } // Tests if this needs to be scanned. It marks it if it has not been marked // unless it has to be scanned. bool MTGCProcessMarkPointers::TestForScan(PolyWord *pt) { if ((*pt).IsTagged()) return false; // This could contain a forwarding pointer if it points into an // allocation area and has been moved by the minor GC. // We have to be a little careful. Another thread could also // be following any forwarding pointers here. However it's safe // because they will update it with the same value. PolyObject *obj = (*pt).AsObjPtr(); if (obj->ContainsForwardingPtr()) { obj = FollowForwarding(obj); *pt = obj; } MemSpace *sp = gMem.SpaceForAddress(obj-1); if (sp == 0 || (sp->spaceType != ST_LOCAL && sp->spaceType != ST_CODE)) return false; // Ignore it if it points to a permanent area POLYUNSIGNED L = obj->LengthWord(); if (L & _OBJ_GC_MARK) return false; // Already marked if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Mark: %p %" POLYUFMT " %u\n", obj, OBJ_OBJECT_LENGTH(L), GetTypeBits(L)); if (OBJ_IS_BYTE_OBJECT(L)) { obj->SetLengthWord(L | _OBJ_GC_MARK); // Mark it return false; // We've done as much as we need } return true; } void MTGCProcessMarkPointers::MarkAndTestForScan(PolyWord *pt) { if (TestForScan(pt)) { PolyObject *obj = (*pt).AsObjPtr(); obj->SetLengthWord(obj->LengthWord() | _OBJ_GC_MARK); } } // The initial entry to process the roots. These may be RTS addresses or addresses in // a thread stack. Also called recursively to process the addresses of constants in // code segments. This is used in situations where a scanner may return the // updated address of an object. PolyObject *MTGCProcessMarkPointers::ScanObjectAddress(PolyObject *obj) { PolyWord val = obj; MemSpace *sp = gMem.SpaceForAddress(val.AsStackAddr()-1); if (!(sp->spaceType == ST_LOCAL || sp->spaceType == ST_CODE)) return obj; // Ignore it if it points to a permanent area // We may have a forwarding pointer if this has been moved by the // minor GC. if (obj->ContainsForwardingPtr()) { obj = FollowForwarding(obj); val = obj; } ASSERT(obj->ContainsNormalLengthWord()); POLYUNSIGNED L = obj->LengthWord(); if (L & _OBJ_GC_MARK) return obj; // Already marked obj->SetLengthWord(L | _OBJ_GC_MARK); // Mark it if (profileMode == kProfileLiveData || (profileMode == kProfileLiveMutables && obj->IsMutable())) AddObjectProfile(obj); POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Mark: %p %" POLYUFMT " %u\n", obj, n, GetTypeBits(L)); if (OBJ_IS_BYTE_OBJECT(L)) return obj; // If we already have something on the stack we must being called // recursively to process a constant in a code segment. Just push // it on the stack and let the caller deal with it. if (msp != 0) PushToStack(obj); // Can't check this because it may have forwarding ptrs. else { MTGCProcessMarkPointers::ScanAddressesInObject(obj, L); // We can only check after we've processed it because if we // have addresses left over from an incomplete partial GC they // may need to forwarded. CheckObject (obj); } return obj; } // These functions are only called with pointers held by the runtime system. // Weak references can occur in the runtime system, eg. streams and windows. // Weak references are not marked and so unreferenced streams and windows // can be detected and closed. void MTGCProcessMarkPointers::ScanRuntimeAddress(PolyObject **pt, RtsStrength weak) { if (weak == STRENGTH_WEAK) return; *pt = ScanObjectAddress(*pt); CheckPointer (*pt); // Check it after any forwarding pointers have been followed. } // This is called via ScanAddressesInRegion to process the permanent mutables. It is // also called from ScanObjectAddress to process root addresses. // It processes all the addresses reachable from the object. void MTGCProcessMarkPointers::ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED lengthWord) { if (OBJ_IS_BYTE_OBJECT(lengthWord)) return; while (true) { ASSERT (OBJ_IS_LENGTH(lengthWord)); // Get the length and base address. N.B. If this is a code segment // these will be side-effected by GetConstSegmentForCode. POLYUNSIGNED length = OBJ_OBJECT_LENGTH(lengthWord); if (OBJ_IS_WEAKREF_OBJECT(lengthWord)) { // Special case. ASSERT(OBJ_IS_MUTABLE_OBJECT(lengthWord)); // Should be a mutable. ASSERT(OBJ_IS_WORD_OBJECT(lengthWord)); // Should be a plain object. // We need to mark the "SOME" values in this object but we don't mark // the references contained within the "SOME". PolyWord *baseAddr = (PolyWord*)obj; // Mark every word but ignore the result. for (POLYUNSIGNED i = 0; i < length; i++) (void)MarkAndTestForScan(baseAddr+i); // We've finished with this. length = 0; } else if (OBJ_IS_CODE_OBJECT(lengthWord)) { // It's better to process the whole code object in one go. ScanAddress::ScanAddressesInObject(obj, lengthWord); length = 0; // Finished } // else it's a normal object, // If there are only two addresses in this cell that need to be // followed we follow them immediately and treat this cell as done. // If there are more than two we push the address of this cell on // the stack, follow the first address and then rescan it. That way // list cells are processed once only but we don't overflow the // stack by pushing all the addresses in a very large vector. PolyWord *baseAddr = (PolyWord*)obj; PolyWord *endWord = baseAddr + length; PolyObject *firstWord = 0; PolyObject *secondWord = 0; PolyWord *restartAddr = 0; if (obj == largeObjectCache[locPtr].base) { baseAddr = largeObjectCache[locPtr].current; ASSERT(baseAddr > (PolyWord*)obj && baseAddr < ((PolyWord*)obj)+length); if (locPtr == 0) locPtr = LARGECACHE_SIZE-1; else locPtr--; } while (baseAddr != endWord) { PolyWord wordAt = *baseAddr; if (wordAt.IsDataPtr() && wordAt != PolyWord::FromUnsigned(0)) { // Normal address. We can have words of all zeros at least in the // situation where we have a partially constructed code segment where // the constants at the end of the code have not yet been filled in. if (TestForScan(baseAddr)) { if (firstWord == 0) firstWord = baseAddr->AsObjPtr(); else if (secondWord == 0) { // If we need to rescan because there are three or more words to do // this is the place we need to restart (or the start of the cell if it's // small). restartAddr = baseAddr; secondWord = baseAddr->AsObjPtr(); } else break; // More than two words. } } baseAddr++; } if (baseAddr != endWord) // Put this back on the stack while we process the first word PushToStack(obj, length < largeObjectSize ? 0 : restartAddr, length); else if (secondWord != 0) { // Mark it now because we will process it. secondWord->SetLengthWord(secondWord->LengthWord() | _OBJ_GC_MARK); // Put this on the stack. If this is a list node we will be // pushing the tail. PushToStack(secondWord); } if (firstWord != 0) { // Mark it and process it immediately. firstWord->SetLengthWord(firstWord->LengthWord() | _OBJ_GC_MARK); obj = firstWord; } else if (msp == 0) { markStack[msp] = 0; // Really finished return; } else { // Clear the item above the top. This really is finished. if (msp < MARK_STACK_SIZE) markStack[msp] = 0; // Pop the item from the stack but don't overwrite it yet. // This allows another thread to steal it if there really // is nothing else to do. This is only really important // for large objects. obj = markStack[--msp]; // Pop something. } lengthWord = obj->LengthWord(); } } // Process a constant within the code. This is a direct copy of ScanAddress::ScanConstant // with the addition of the locking. void MTGCProcessMarkPointers::ScanConstant(PolyObject *base, byte *addressOfConstant, ScanRelocationKind code) { // If we have newly compiled code the constants may be in the // local heap. MTGCProcessMarkPointers::ScanObjectAddress can // return an updated address for a local address if there is a // forwarding pointer. // Constants can be aligned on any byte offset so another thread // scanning the same code could see an invalid address if it read // the constant while it was being updated. We put a lock round // this just in case. MemSpace *space = gMem.SpaceForAddress(addressOfConstant); PLock *lock = 0; if (space->spaceType == ST_CODE) lock = &((CodeSpace*)space)->spaceLock; if (lock != 0) lock->Lock(); PolyWord p = GetConstantValue(addressOfConstant, code); if (lock != 0) lock->Unlock(); if (! IS_INT(p)) { PolyWord oldValue = p; ScanAddress::ScanAddressAt(&p); if (p != oldValue) // Update it if it has changed. { if (lock != 0) lock->Lock(); SetConstantValue(addressOfConstant, p, code); if (lock != 0) lock->Unlock(); } } } // Mark all the roots. This is run in the main thread and has the effect // of starting new tasks as the scanning runs. void MTGCProcessMarkPointers::MarkRoots(void) { ASSERT(nThreads >= 1); ASSERT(nInUse == 0); MTGCProcessMarkPointers *marker = &markStacks[0]; marker->Reset(); marker->active = true; nInUse = 1; // Scan the permanent mutable areas. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && ! space->byteOnly) marker->ScanAddressesInRegion(space->bottom, space->top); } // Scan the RTS roots. GCModules(marker); ASSERT(marker->markStack[0] == 0); // When this has finished there may well be other tasks running. PLocker lock(&stackLock); marker->active = false; nInUse--; } // This class just allows us to use ScanAddress::ScanAddressesInRegion to call // ScanAddressesInObject for each object in the region. class Rescanner: public ScanAddress { public: Rescanner(MTGCProcessMarkPointers *marker): m_marker(marker) {} virtual void ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED lengthWord) { // If it has previously been marked it is known to be reachable but // the contents may not have been scanned if the stack overflowed. if (lengthWord &_OBJ_GC_MARK) m_marker->ScanAddressesInObject(obj, lengthWord); } // Have to define this. virtual PolyObject *ScanObjectAddress(PolyObject *base) { ASSERT(false); return 0; } bool ScanSpace(MarkableSpace *space); private: MTGCProcessMarkPointers *m_marker; }; // Rescan any marked objects in the area between fullGCRescanStart and fullGCRescanEnd. // N.B. We may have threads already processing other areas and they could overflow // their stacks and change fullGCRescanStart or fullGCRescanEnd. bool Rescanner::ScanSpace(MarkableSpace *space) { PolyWord *start, *end; { PLocker lock(&space->spaceLock); start = space->fullGCRescanStart; end = space->fullGCRescanEnd; space->fullGCRescanStart = space->top; space->fullGCRescanEnd = space->bottom; } if (start < end) { if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Mark: Rescanning from %p to %p\n", start, end); ScanAddressesInRegion(start, end); return true; // Require rescan } else return false; } // When the threads created by marking the roots have completed we need to check that // the mark stack has not overflowed. If it has we need to rescan. This rescanning // pass may result in a further overflow so if we find we have to rescan we repeat. bool MTGCProcessMarkPointers::RescanForStackOverflow() { ASSERT(nThreads >= 1); ASSERT(nInUse == 0); MTGCProcessMarkPointers *marker = &markStacks[0]; marker->Reset(); marker->active = true; nInUse = 1; bool rescan = false; Rescanner rescanner(marker); for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { if (rescanner.ScanSpace(*i)) rescan = true; } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { if (rescanner.ScanSpace(*i)) rescan = true; } { PLocker lock(&stackLock); nInUse--; marker->active = false; } return rescan; } static void SetBitmaps(LocalMemSpace *space, PolyWord *pt, PolyWord *top) { while (pt < top) { PolyObject *obj = (PolyObject*)++pt; // If it has been copied by a minor collection skip it if (obj->ContainsForwardingPtr()) { obj = FollowForwarding(obj); ASSERT(obj->ContainsNormalLengthWord()); pt += obj->Length(); } else { POLYUNSIGNED L = obj->LengthWord(); POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); if (L & _OBJ_GC_MARK) { obj->SetLengthWord(L & ~(_OBJ_GC_MARK)); POLYUNSIGNED bitno = space->wordNo(pt); space->bitmap.SetBits(bitno - 1, n + 1); if (OBJ_IS_MUTABLE_OBJECT(L)) space->m_marked += n + 1; else space->i_marked += n + 1; if ((PolyWord*)obj <= space->fullGCLowerLimit) space->fullGCLowerLimit = (PolyWord*)obj-1; if (OBJ_IS_WEAKREF_OBJECT(L)) { // Add this to the limits for the containing area. PolyWord *baseAddr = (PolyWord*)obj; PolyWord *startAddr = baseAddr-1; // Must point AT length word. PolyWord *endObject = baseAddr + n; if (startAddr < space->lowestWeak) space->lowestWeak = startAddr; if (endObject > space->highestWeak) space->highestWeak = endObject; } } pt += n; } } } static void CreateBitmapsTask(GCTaskId *, void *arg1, void *arg2) { LocalMemSpace *lSpace = (LocalMemSpace *)arg1; lSpace->bitmap.ClearBits(0, lSpace->spaceSize()); SetBitmaps(lSpace, lSpace->bottom, lSpace->top); } // Parallel task to check the marks on cells in the code area and // turn them into byte areas if they are free. static void CheckMarksOnCodeTask(GCTaskId *, void *arg1, void *arg2) { CodeSpace *space = (CodeSpace*)arg1; PolyWord *pt = space->bottom; PolyWord *lastFree = 0; POLYUNSIGNED lastFreeSpace = 0; space->largestFree = 0; space->firstFree = 0; while (pt < space->top) { PolyObject *obj = (PolyObject*)(pt+1); // There should not be forwarding pointers ASSERT(obj->ContainsNormalLengthWord()); POLYUNSIGNED L = obj->LengthWord(); POLYUNSIGNED length = OBJ_OBJECT_LENGTH(L); if (L & _OBJ_GC_MARK) { // It's marked - retain it. ASSERT(L & _OBJ_CODE_OBJ); obj->SetLengthWord(L & ~(_OBJ_GC_MARK)); // Clear the mark bit lastFree = 0; lastFreeSpace = 0; } else { // Turn it into a byte area i.e. free. It may already be free. if (space->firstFree == 0) space->firstFree = pt; space->headerMap.ClearBit(pt-space->bottom); // Remove the "header" bit if (lastFree + lastFreeSpace == pt) // Merge free spaces. Speeds up subsequent scans. lastFreeSpace += length + 1; else { lastFree = pt; lastFreeSpace = length + 1; } PolyObject *freeSpace = (PolyObject*)(lastFree+1); freeSpace->SetLengthWord(lastFreeSpace-1, F_BYTE_OBJ); if (lastFreeSpace > space->largestFree) space->largestFree = lastFreeSpace; } pt += length+1; } } void GCMarkPhase(void) { mainThreadPhase = MTP_GCPHASEMARK; // Clear the mark counters and set the rescan limits. for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; lSpace->i_marked = lSpace->m_marked = 0; lSpace->fullGCRescanStart = lSpace->top; lSpace->fullGCRescanEnd = lSpace->bottom; } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; space->fullGCRescanStart = space->top; space->fullGCRescanEnd = space->bottom; } MTGCProcessMarkPointers::MarkRoots(); gpTaskFarm->WaitForCompletion(); // Do we have to rescan because the mark stack overflowed? bool rescan; do { rescan = MTGCProcessMarkPointers::RescanForStackOverflow(); gpTaskFarm->WaitForCompletion(); } while(rescan); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Mark"); // Turn the marks into bitmap entries. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) gpTaskFarm->AddWorkOrRunNow(&CreateBitmapsTask, *i, 0); // Process the code areas. for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) gpTaskFarm->AddWorkOrRunNow(&CheckMarksOnCodeTask, *i, 0); gpTaskFarm->WaitForCompletion(); // Wait for completion of the bitmaps gMem.RemoveEmptyCodeAreas(); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Bitmap"); POLYUNSIGNED totalLive = 0; for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; if (! lSpace->isMutable) ASSERT(lSpace->m_marked == 0); totalLive += lSpace->m_marked + lSpace->i_marked; if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Mark: %s space %p: %" POLYUFMT " immutable words marked, %" POLYUFMT " mutable words marked\n", lSpace->spaceTypeString(), lSpace, lSpace->i_marked, lSpace->m_marked); } if (debugOptions & DEBUG_GC) Log("GC: Mark: Total live data %" POLYUFMT " words\n", totalLive); } // Set up the stacks. void initialiseMarkerTables() { unsigned threads = gpTaskFarm->ThreadCount(); if (threads == 0) threads = 1; MTGCProcessMarkPointers::InitStatics(threads); } polyml-5.7.1/libpolyml/arb.cpp0000644000175000017500000020221413204034553015253 0ustar daviddavid/* Title: Arbitrary Precision Package. Author: Dave Matthews, Cambridge University Computer Laboratory Further modification Copyright 2010, 2012, 2015 David C. J. Matthews Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* Arbitrary precision package in C. Integers are held in two formats in this system, long-form and short-form. The two are distinquished by the integer tag bit, short-form having the tag bit set and pointers to long-form being untagged. The long-form integers use the standard Poly format for multi-word objects, with the length count and flags in the word just before the object pointed to. The sign of long-form integers is coded in one of the flag bits. Short integers are signed quantities, and can be directly manipulated by the relevant instructions, but if overflow occurs then the full long versions of the operations will need to be called. Long-form integers are held as vectors of bytes (i.e. unsigned char) low-order byte first. It is assumed that a ``byte'' will hold an 8-bit quantity and a ``long'' at least two ``bytes''. It is essential that unsigned values are used. Integers are always stored in the least possible number of words, and will be shortened to the short-form when possible. Thanks are due to D. Knuth for the long division algorithm. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ALLOCA_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_GMP_H #include #define USE_GMP 1 #endif #include "globals.h" #include "sys.h" #include "run_time.h" #include "arb.h" #include "save_vec.h" #include "processes.h" #include "memmgr.h" #include "rtsentry.h" #include "profiling.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyAddArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolySubtractArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyMultiplyArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyDivideArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyRemainderArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyQuotRemArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2, PolyWord arg3); POLYEXTERNALSYMBOL POLYSIGNED PolyCompareArbitrary(PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGCDArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyLCMArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetLowOrderAsLargeWord(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyOrArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyAndArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); POLYEXTERNALSYMBOL POLYUNSIGNED PolyXorArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2); } static Handle add_longc(TaskData *taskData, Handle,Handle); static Handle sub_longc(TaskData *taskData, Handle,Handle); static Handle quot_rem_c(TaskData *taskData, Handle,Handle,Handle); static Handle or_longc(TaskData *taskData, Handle,Handle); static Handle and_longc(TaskData *taskData, Handle,Handle); static Handle xor_longc(TaskData *taskData, Handle,Handle); static Handle neg_longc(TaskData *taskData, Handle); static Handle gcd_arbitrary(TaskData *taskData, Handle,Handle); static Handle lcm_arbitrary(TaskData *taskData, Handle,Handle); // Number of bits in a Poly word. N.B. This is not necessarily the same as SIZEOF_VOIDP. #define BITS_PER_POLYWORD (SIZEOF_VOIDP*8) #ifdef USE_GMP #if (BITS_PER_POLYWORD > GMP_LIMB_BITS) // We're assuming that every GMP limb occupies at least one word #error "Size of GMP limb is less than makemaka Poly word" #endif #endif #ifdef USE_GMP #define DEREFLIMBHANDLE(_x) ((mp_limb_t *)DEREFHANDLE(_x)) // Returns the length of the argument with trailing zeros removed. static mp_size_t numLimbs(PolyWord x) { mp_size_t lu = OBJECT_LENGTH(x)*sizeof(PolyWord)/sizeof(mp_limb_t); mp_limb_t *u = (mp_limb_t *)x.AsObjPtr(); while (lu > 0 && u[lu-1] == 0) lu--; return lu; } #else // Returns the length of the argument with trailing zeros removed. static POLYUNSIGNED get_length(PolyWord x) { byte *u = (byte *)x.AsObjPtr(); POLYUNSIGNED lu = OBJECT_LENGTH(x)*sizeof(PolyWord); for( ; (lu > 0) && (u[lu-1] == 0); lu--) { /* do nothing */ } return lu; } #endif // Return a uintptr_t value i.e. unsigned 32-bits on 32-bit architecture and 64-bits on 64-bit architecture. POLYUNSIGNED getPolyUnsigned(TaskData *taskData, PolyWord number) { if ( IS_INT(number) ) { POLYSIGNED i = UNTAGGED(number); if ( i < 0 ) raise_exception0(taskData, EXC_size ); return i; } else { if (OBJ_IS_NEGATIVE(GetLengthWord(number))) raise_exception0(taskData, EXC_size ); #ifdef USE_GMP unsigned length = numLimbs(number); if (length > 1) raise_exception0(taskData, EXC_size); mp_limb_t first = *(mp_limb_t*)number.AsCodePtr(); #if (BITS_PER_POLYWORD < GMP_NUMB_BITS) if (first > (mp_limb_t)1 << BITS_PER_POLYWORD) raise_exception0(taskData, EXC_size); #endif return first; #else byte *ptr = number.AsCodePtr(); POLYUNSIGNED length = get_length(number); if (length > sizeof(PolyWord) ) raise_exception0(taskData, EXC_size); POLYSIGNED c = 0; while ( length-- ) c = (c << 8) | ((byte *) ptr)[length]; return c; #endif } } #define MAX_INT_PLUS1 ((POLYUNSIGNED)0x80 << ( (sizeof(PolyWord)-1) *8)) // Return an intptr_t value i.e. signed 32-bits on 32-bit architecture and 64-bits on 64-bit architecture. POLYSIGNED getPolySigned(TaskData *taskData, PolyWord number) { if ( IS_INT(number) ) { return UNTAGGED(number); } else { int sign = OBJ_IS_NEGATIVE(GetLengthWord(number)) ? -1 : 0; #ifdef USE_GMP unsigned length = numLimbs(number); if (length > 1) raise_exception0(taskData, EXC_size); mp_limb_t c = *(mp_limb_t*)number.AsCodePtr(); #else POLYUNSIGNED length = get_length(number); POLYUNSIGNED c = 0; byte *ptr = number.AsCodePtr(); if ( length > sizeof(PolyWord) ) raise_exception0(taskData, EXC_size ); while ( length-- ) { c = (c << 8) | ptr[length]; } #endif if ( sign == 0 && c < MAX_INT_PLUS1) return (POLYSIGNED)c; if ( sign != 0 && c <= MAX_INT_PLUS1) return -((POLYSIGNED)c); raise_exception0(taskData, EXC_size ); /*NOTREACHED*/ return 0; } } short get_C_short(TaskData *taskData, PolyWord number) { int i = (int)get_C_long(taskData, number); if ( i <= 32767 && i >= -32768 ) return i; raise_exception0(taskData, EXC_size ); /*NOTREACHED*/ return 0; } unsigned short get_C_ushort(TaskData *taskData, PolyWord number) { POLYUNSIGNED u = get_C_ulong(taskData, number ); if ( u <= 65535 ) return (short)u; raise_exception0(taskData, EXC_size ); /*NOTREACHED*/ return 0; } #if (SIZEOF_LONG == SIZEOF_VOIDP) unsigned get_C_unsigned(TaskData *taskData, PolyWord number) { return get_C_ulong(taskData, number); } int get_C_int(TaskData *taskData, PolyWord number) { return get_C_long(taskData, number); } #else // Poly words are the same size as a pointer but that may // not be the same as int or long. unsigned get_C_unsigned(TaskData *taskData, PolyWord number) { POLYUNSIGNED res = get_C_ulong(taskData, number); unsigned result = (unsigned)res; if ((POLYUNSIGNED)result != res) raise_exception0(taskData, EXC_size); return result; } int get_C_int(TaskData *taskData, PolyWord number) { POLYSIGNED res = get_C_long(taskData, number); int result = (int)res; if ((POLYSIGNED)result != res) raise_exception0(taskData, EXC_size); return result; } #endif static Handle get_long(Handle x, Handle extend, int *sign) { if (IS_INT(DEREFWORD(x))) { // Short form - put it in the temporary. POLYSIGNED x_v = UNTAGGED(DEREFWORD(x)); if (x_v >= 0) *sign = 0; else /* Negative */ { *sign = -1; x_v = -x_v; } #ifdef USE_GMP mp_limb_t *u = DEREFLIMBHANDLE(extend); *u = x_v; #else byte *u = DEREFBYTEHANDLE(extend); /* Put into extend buffer, low order byte first. */ for (unsigned i = 0; i < sizeof(PolyWord); i++) { u[i] = x_v & 0xff; x_v = x_v >> 8; } #endif return extend; } else { /* Long-form - x is an address. */ *sign = OBJ_IS_NEGATIVE(GetLengthWord(DEREFWORD(x))) ? -1 : 0; return x; } } #ifndef USE_GMP static Handle copy_long(TaskData *taskData, Handle x, POLYUNSIGNED lx) { Handle y = alloc_and_save(taskData, WORDS(lx), F_BYTE_OBJ|F_MUTABLE_BIT); // copy the bytes byte *v = DEREFBYTEHANDLE(y); memcpy(v, DEREFBYTEHANDLE(x), lx); return y; } #endif /* make_canonical is used to force a result into its shortest form, in the style of get_length, but also may convert its argument from long to short integer */ static Handle make_canonical(TaskData *taskData, Handle x, int sign) { #ifdef USE_GMP unsigned size = numLimbs(DEREFWORD(x)); if (size <= 1) // May be zero if the result is zero. { mp_limb_t r = *DEREFLIMBHANDLE(x); if (r <= MAXTAGGED || (r == MAXTAGGED+1 && sign < 0)) { if (sign < 0) return taskData->saveVec.push(TAGGED(-(POLYSIGNED)r)); else return taskData->saveVec.push(TAGGED(r)); } } // Throw away any unused words. DEREFWORDHANDLE(x)->SetLengthWord(WORDS(size*sizeof(mp_limb_t)), F_BYTE_OBJ | (sign < 0 ? F_NEGATIVE_BIT: 0)); return x; #else /* get length in BYTES */ POLYUNSIGNED size = get_length(DEREFWORD(x)); // We can use the short representation if it will fit in a word. if (size <= sizeof(PolyWord)) { /* Convert the digits. */ byte *u = DEREFBYTEHANDLE(x); POLYUNSIGNED r = 0; for (unsigned i=0; i < sizeof(PolyWord); i++) { r |= ((POLYUNSIGNED)u[i]) << (8*i); } /* Check for MAXTAGGED+1 before subtraction in case MAXTAGGED is 0x7fffffff */ if (r <= MAXTAGGED || (r == MAXTAGGED+1 && sign < 0)) { if (sign < 0) return taskData->saveVec.push(TAGGED(-(POLYSIGNED)r)); else return taskData->saveVec.push(TAGGED(r)); } } /* The length word of the object is changed to reflect the new length. This is safe because any words thrown away must be zero. */ DEREFWORDHANDLE(x)->SetLengthWord(WORDS(size), F_BYTE_OBJ | (sign < 0 ? F_NEGATIVE_BIT: 0)); return x; #endif } Handle ArbitraryPrecionFromSigned(TaskData *taskData, POLYSIGNED val) /* Called from routines in the run-time system to generate an arbitrary precision integer from a word value. */ { if (val <= MAXTAGGED && val >= -MAXTAGGED-1) /* No overflow */ return taskData->saveVec.push(TAGGED(val)); POLYUNSIGNED uval = val < 0 ? -val : val; #ifdef USE_GMP Handle y = alloc_and_save(taskData, WORDS(sizeof(mp_limb_t)), ((val < 0) ? F_NEGATIVE_BIT : 0)| F_BYTE_OBJ); mp_limb_t *v = DEREFLIMBHANDLE(y); *v = uval; #else Handle y = alloc_and_save(taskData, 1, ((val < 0) ? F_NEGATIVE_BIT : 0)| F_BYTE_OBJ); byte *v = DEREFBYTEHANDLE(y); for (POLYUNSIGNED i = 0; uval != 0; i++) { v[i] = (byte)(uval & 0xff); uval >>= 8; } #endif return y; } Handle ArbitraryPrecionFromUnsigned(TaskData *taskData, POLYUNSIGNED uval) /* Called from routines in the run-time system to generate an arbitrary precision integer from an unsigned value. */ { if (uval <= MAXTAGGED) return taskData->saveVec.push(TAGGED(uval)); #ifdef USE_GMP Handle y = alloc_and_save(taskData, WORDS(sizeof(mp_limb_t)), F_BYTE_OBJ); mp_limb_t *v = DEREFLIMBHANDLE(y); *v = uval; #else Handle y = alloc_and_save(taskData, 1, F_BYTE_OBJ); byte *v = DEREFBYTEHANDLE(y); for (POLYUNSIGNED i = 0; uval != 0; i++) { v[i] = (byte)(uval & 0xff); uval >>= 8; } #endif return y; } Handle Make_arbitrary_precision(TaskData *taskData, int val) { return ArbitraryPrecionFromSigned(taskData, val); } Handle Make_arbitrary_precision(TaskData *taskData, unsigned uval) { return ArbitraryPrecionFromUnsigned(taskData, uval); } Handle Make_arbitrary_precision(TaskData *taskData, long val) { return ArbitraryPrecionFromSigned(taskData, val); } Handle Make_arbitrary_precision(TaskData *taskData, unsigned long uval) { return ArbitraryPrecionFromUnsigned(taskData, uval); } #ifdef HAVE_LONG_LONG #if SIZEOF_LONG_LONG <= SIZEOF_VOIDP Handle Make_arbitrary_precision(TaskData *taskData, long long val) { return ArbitraryPrecionFromSigned(taskData, val); } Handle Make_arbitrary_precision(TaskData *taskData, unsigned long long uval) { return ArbitraryPrecionFromUnsigned(taskData, uval); } #else // 32-bit implementation. Handle Make_arbitrary_precision(TaskData *taskData, long long val) { if (val <= (long long)(MAXTAGGED) && val >= -((long long)(MAXTAGGED))-1) /* No overflow */ return taskData->saveVec.push(TAGGED((POLYSIGNED)val)); // Recursive call to handle the high-order part Handle hi = Make_arbitrary_precision(taskData, val >> (sizeof(int32_t) * 8)); // The low-order part is treated as UNsigned. Handle lo = Make_arbitrary_precision(taskData, (uint32_t)val); Handle twoTo16 = taskData->saveVec.push(TAGGED(65536)); Handle twoTo32 = mult_longc(taskData, twoTo16, twoTo16); return add_longc(taskData, mult_longc(taskData, hi, twoTo32), lo); } Handle Make_arbitrary_precision(TaskData *taskData, unsigned long long uval) { if (uval <= (unsigned long long)(MAXTAGGED)) return taskData->saveVec.push(TAGGED((POLYUNSIGNED)uval)); // Recursive call to handle the high-order part Handle hi = Make_arbitrary_precision(taskData, uval >> (sizeof(uint32_t) * 8)); Handle lo = Make_arbitrary_precision(taskData, (uint32_t)uval); Handle twoTo16 = taskData->saveVec.push(TAGGED(65536)); Handle twoTo32 = mult_longc(taskData, twoTo16, twoTo16); return add_longc(taskData, mult_longc(taskData, hi, twoTo32), lo); } #endif #endif #if defined(_WIN32) // Creates an arbitrary precision number from two words. // Used only in Windows for FILETIME and file-size. Handle Make_arb_from_32bit_pair(TaskData *taskData, uint32_t hi, uint32_t lo) { Handle hHi = Make_arbitrary_precision(taskData, hi); Handle hLo = Make_arbitrary_precision(taskData, lo); Handle twoTo16 = taskData->saveVec.push(TAGGED(65536)); Handle twoTo32 = mult_longc(taskData, twoTo16, twoTo16); return add_longc(taskData, mult_longc(taskData, hHi, twoTo32), hLo); } // Convert a Windows FILETIME into an arbitrary precision integer Handle Make_arb_from_Filetime(TaskData *taskData, const FILETIME &ft) { return Make_arb_from_32bit_pair(taskData, ft.dwHighDateTime, ft.dwLowDateTime); } #endif /* Returns hi*scale+lo as an arbitrary precision number. Currently used for Unix time values where the time is returned as two words, a number of seconds and a number of microseconds and we wish to return the result as a number of microseconds. */ Handle Make_arb_from_pair_scaled(TaskData *taskData, unsigned hi, unsigned lo, unsigned scale) { /* We might be able to compute the number as a 64 bit quantity and then convert it but this is probably more portable. It does risk overflowing the save vector. */ Handle hHi = Make_arbitrary_precision(taskData, hi); Handle hLo = Make_arbitrary_precision(taskData, lo); Handle hScale = Make_arbitrary_precision(taskData, scale); return add_longc(taskData, mult_longc(taskData, hHi, hScale), hLo); } Handle neg_longc(TaskData *taskData, Handle x) { if (IS_INT(DEREFWORD(x))) { POLYSIGNED s = UNTAGGED(DEREFWORD(x)); if (s != -MAXTAGGED-1) // If it won't overflow return taskData->saveVec.push(TAGGED(-s)); } // Either overflow or long argument - convert to long form. #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; int sign_x; Handle long_x = get_long(x, x_ehandle, &sign_x); #ifdef USE_GMP POLYUNSIGNED lx = numLimbs(DEREFWORD(long_x))*sizeof(mp_limb_t); #else /* Get length of arg. */ POLYUNSIGNED lx = get_length(DEREFWORD(long_x)); #endif Handle long_y = alloc_and_save(taskData, WORDS(lx), F_MUTABLE_BIT|F_BYTE_OBJ); byte *v = DEREFBYTEHANDLE(long_y); memcpy(v, DEREFBYTEHANDLE(long_x), lx); #ifndef USE_GMP // Make sure the last word is zero. We may have unused bytes there. memset(v+lx, 0, WORDS(lx)*sizeof(PolyWord)-lx); #endif /* Return the value with the sign changed. */ return make_canonical(taskData, long_y, sign_x ^ -1); } /* neg_longc */ #ifdef USE_GMP static Handle add_unsigned_long(TaskData *taskData, Handle x, Handle y, int sign) { /* find the longer number */ mp_size_t lx = numLimbs(DEREFWORD(x)); mp_size_t ly = numLimbs(DEREFWORD(y)); mp_limb_t *u; /* limb-pointer for longer number */ mp_limb_t *v; /* limb-pointer for shorter number */ Handle z; mp_size_t lu; /* length of u in limbs */ mp_size_t lv; /* length of v in limbs */ if (lx < ly) { // Get result vector. It must be 1 limb longer than u // to have space for any carry. z = alloc_and_save(taskData, WORDS((ly+1)*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFLIMBHANDLE(y); lu = ly; v = DEREFLIMBHANDLE(x); lv = lx; } else { // Get result vector. It must be 1 limb longer than u // to have space for any carry. z = alloc_and_save(taskData, WORDS((lx+1)*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFLIMBHANDLE(x); lu = lx; v = DEREFLIMBHANDLE(y); lv = ly; } mp_limb_t *w = DEREFLIMBHANDLE(z); // Do the addition. mp_limb_t carry = 0; if (lv != 0) carry = mpn_add_n(w, u, v, lv); // Add the carry to the rest of the longer number. if (lu != lv) carry = mpn_add_1(w+lv, u+lv, lu-lv, carry); // Put the remaining carry in the final limb. w[lu] = carry; return make_canonical(taskData, z, sign); } #else static Handle add_unsigned_long(TaskData *taskData, Handle x, Handle y, int sign) { byte *u; /* byte-pointer for longer number */ byte *v; /* byte-pointer for shorter number */ Handle z; POLYUNSIGNED lu; /* length of u in bytes */ POLYUNSIGNED lv; /* length of v in bytes */ /* find the longer number */ POLYUNSIGNED lx = get_length(DEREFWORD(x)); POLYUNSIGNED ly = get_length(DEREFWORD(y)); /* Make ``u'' the longer. */ if (lx < ly) { // Get result vector. It must be 1 byte longer than u // to have space for any carry. z = alloc_and_save(taskData, WORDS(ly+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(y); lu = ly; v = DEREFBYTEHANDLE(x); lv = lx; } else { // Get result vector. It must be 1 byte longer than u // to have space for any carry, plus one byte for the sign. z = alloc_and_save(taskData, WORDS(lx+2), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(x); lu = lx; v = DEREFBYTEHANDLE(y); lv = ly; } /* do the actual addition */ byte *w = DEREFBYTEHANDLE(z); unsigned carry = 0; POLYUNSIGNED i = 0; /* Do the additions */ for( ; i < lv; i++) { carry += u[i] + v[i]; w[i] = carry & 0xff; carry >>= 8; } /* Add the carry to the rest of ``u''. */ for( ; i < lu; i++) { carry += u[i]; w[i] = carry & 0xff; carry >>= 8; } /* Finally put the carry into the last byte */ w[i] = (byte)carry; return make_canonical(taskData, z, sign); } /* add_unsigned_long */ #endif #ifdef USE_GMP static Handle sub_unsigned_long(TaskData *taskData, Handle x, Handle y, int sign) { mp_limb_t *u; /* limb-pointer alias for larger number */ mp_limb_t *v; /* limb-pointer alias for smaller number */ mp_size_t lu; /* length of u in limbs */ mp_size_t lv; /* length of v in limbs */ Handle z; /* get the larger argument into ``u'' */ /* This is necessary so that we can discard */ /* the borrow at the end of the subtraction */ mp_size_t lx = numLimbs(DEREFWORD(x)); mp_size_t ly = numLimbs(DEREFWORD(y)); // Find the larger number. Check the lengths first and if they're equal the values. int res; if (lx < ly) res = -1; else if (lx > ly) res = 1; else res = mpn_cmp(DEREFLIMBHANDLE(x), DEREFLIMBHANDLE(y), lx); // If they're equal the result is zero. if (res == 0) return taskData->saveVec.push(TAGGED(0)); /* They are equal */ if (res < 0) { sign ^= -1; /* swap sign of result */ z = alloc_and_save(taskData, WORDS(ly*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFLIMBHANDLE(y); lu = ly; v = DEREFLIMBHANDLE(x); lv = lx; } else { z = alloc_and_save(taskData, WORDS(lx*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFLIMBHANDLE(x); lu = lx; v = DEREFLIMBHANDLE(y); lv = ly; } mp_limb_t *w = DEREFLIMBHANDLE(z); // Do the subtraction. mp_limb_t borrow = 0; if (lv != 0) borrow = mpn_sub_n(w, u, v, lv); // Subtract the borrow from the rest of the longer number. if (lu != lv) borrow = mpn_sub_1(w+lv, u+lv, lu-lv, borrow); return make_canonical(taskData, z, sign); } #else static Handle sub_unsigned_long(TaskData *taskData, Handle x, Handle y, int sign) { byte *u; /* byte-pointer alias for larger number */ byte *v; /* byte-pointer alias for smaller number */ POLYUNSIGNED lu; /* length of u in bytes */ POLYUNSIGNED lv; /* length of v in bytes */ Handle z; /* get the larger argument into ``u'' */ /* This is necessary so that we can discard */ /* the borrow at the end of the subtraction */ POLYUNSIGNED lx = get_length(DEREFWORD(x)); POLYUNSIGNED ly = get_length(DEREFWORD(y)); if (lx < ly) { sign ^= -1; /* swap sign of result SPF 21/1/94 */ z = alloc_and_save(taskData, WORDS(ly+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(y); lu = ly; v = DEREFBYTEHANDLE(x); lv = lx; } else if (ly < lx) { z = alloc_and_save(taskData, WORDS(lx+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(x); lu = lx; v = DEREFBYTEHANDLE(y); lv = ly; } else /* lx == ly */ { /* Must look at the numbers to decide which is bigger. */ POLYUNSIGNED i = lx; while (i > 0 && DEREFBYTEHANDLE(x)[i-1] == DEREFBYTEHANDLE(y)[i-1]) i--; if (i == 0) return taskData->saveVec.push(TAGGED(0)); /* They are equal */ if (DEREFBYTEHANDLE(x)[i-1] < DEREFBYTEHANDLE(y)[i-1]) { sign ^= -1; /* swap sign of result SPF 21/1/94 */ z = alloc_and_save(taskData, WORDS(ly+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(y); lu = ly; v = DEREFBYTEHANDLE(x); lv = lx; } else { z = alloc_and_save(taskData, WORDS(lx+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(x); lu = lx; v = DEREFBYTEHANDLE(y); lv = ly; } } byte *w = DEREFBYTEHANDLE(z); unsigned borrow = 1; /* Becomes 0 if there is a borrow */ POLYUNSIGNED i = 0; /* Do the subtractions */ for( ; i < lv; i++) { borrow += 255 + u[i] - v[i]; w[i] = borrow & 0xff; borrow >>= 8; } /* Add the borrow into the rest of ``u''. */ for( ; i < lu; i++) { borrow += 255 + u[i]; w[i] = borrow & 0xff; borrow >>= 8; } return make_canonical(taskData, z, sign); } /* sub_unsigned_long */ #endif Handle add_longc(TaskData *taskData, Handle y, Handle x) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) { /* Both short */ /* The easiest way to do the addition is simply *x-1+*y, but that makes it more difficult to check for overflow. */ POLYSIGNED t = UNTAGGED(DEREFWORD(x)) + UNTAGGED(DEREFWORD(y)); if (t <= MAXTAGGED && t >= -MAXTAGGED-1) /* No overflow */ { return taskData->saveVec.push(TAGGED(t)); } } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; /* Either overflow or long arguments - convert to long form */ int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); /* Work out whether to add or subtract */ if ((sign_y ^ sign_x) >= 0) /* signs the same? */ /* sign(x) * (abs(x) + abs(y)) */ return add_unsigned_long(taskData, long_x, long_y, sign_x); else /* sign(x) * (abs(x) - abs(y)) */ return sub_unsigned_long(taskData, long_x, long_y, sign_x); } /* add_longc */ Handle sub_longc(TaskData *taskData, Handle y, Handle x) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) /* Both short */ { /* The easiest way to do the subtraction is simply *x-*y+1, but that makes it more difficult to check for overflow. */ POLYSIGNED t = UNTAGGED(DEREFWORD(x)) - UNTAGGED(DEREFWORD(y)); if (t <= MAXTAGGED && t >= -MAXTAGGED-1) /* No overflow */ return taskData->saveVec.push(TAGGED(t)); } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; /* Either overflow or long arguments. */ int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); /* Convert to long form */ Handle long_y = get_long(y, y_ehandle, &sign_y); /* If the signs are different add the two values. */ if ((sign_y ^ sign_x) < 0) /* signs differ */ { /* sign(x) * (abs(x) + abs(y)) */ return add_unsigned_long(taskData, long_x, long_y, sign_x); } else { /* sign(x) * (abs(x) - abs(y)) */ return sub_unsigned_long(taskData, long_x, long_y, sign_x); } } /* sub_longc */ Handle mult_longc(TaskData *taskData, Handle y, Handle x) { #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; /* Either overflow or long arguments. */ int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); /* Convert to long form */ Handle long_y = get_long(y, y_ehandle, &sign_y); #if USE_GMP mp_size_t lx = numLimbs(DEREFWORD(long_x)); mp_size_t ly = numLimbs(DEREFWORD(long_y)); // Check for zero args. if (lx == 0 || ly == 0) return taskData->saveVec.push(TAGGED(0)); Handle z = alloc_and_save(taskData, WORDS((lx+ly)*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); mp_limb_t *w = DEREFLIMBHANDLE(z); mp_limb_t *u = DEREFLIMBHANDLE(long_x), *v = DEREFLIMBHANDLE(long_y); // The first argument must be the longer. if (lx < ly) mpn_mul(w, v, ly, u, lx); else mpn_mul(w, u, lx, v, ly); return make_canonical(taskData, z, sign_x ^ sign_y); #else /* Get lengths of args. */ POLYUNSIGNED lx = get_length(DEREFWORD(long_x)); POLYUNSIGNED ly = get_length(DEREFWORD(long_y)); // Check for zero args. if (lx == 0 || ly == 0) return taskData->saveVec.push(TAGGED(0)); /* Get space for result */ Handle long_z = alloc_and_save(taskData, WORDS(lx+ly+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* Can now load the actual addresses because they will not change now. */ byte *u = DEREFBYTEHANDLE(long_x); byte *v = DEREFBYTEHANDLE(long_y); byte *w = DEREFBYTEHANDLE(long_z); for(POLYUNSIGNED i = 0; i < lx; i++) { POLYUNSIGNED j; long r = 0; /* Set the carry to zero */ for(j = 0; j < ly; j++) { /* Compute the product. */ r += u[i] * v[j]; /* Now add in to the result. */ r += w[i+j]; w[i+j] = r & 0xff; r >>= 8; } /* Put in any carry. */ w[i+j] = (byte)r; } return make_canonical(taskData, long_z, sign_x ^ sign_y); #endif } /* mult_long */ #ifndef USE_GMP static void div_unsigned_long(byte *u, byte *v, byte *remres, byte *divres, POLYUNSIGNED lu, POLYUNSIGNED lv) // Unsigned division. This is the main divide and remainder routine. // remres must be at least lu+1 bytes long // divres must be at least lu-lv+1 bytes long but can be zero if not required { POLYUNSIGNED i,j; long r; /* Find out how far to shift v to get a 1 in the top bit. */ int bits = 0; for(r = v[lv-1]; r < 128; r <<= 1) bits++; /* 128 ??? */ /* Shift u that amount into res. We have allowed enough room for overflow. */ r = 0; for (i = 0; i < lu; i++) { r |= u[i] << bits; /*``Or in'' the new bits after shifting*/ remres[i] = r & 0xff; /* Put into the destination. */ r >>= 8; /* and shift down the carry. */ } remres[i] = (byte)r; /* Put in the carry */ /* And v that amount. It has already been copied. */ if ( bits ) { r = 0; for (i = 0; i < lv; i++) { r |= v[i] << bits; v[i] = r & 0xff; r >>= 8; } /* No carry */ } for(j = lu; j >= lv; j--) { /* j iterates over the higher digits of the dividend until we are left with a number which is less than the divisor. This is the remainder. */ long quotient, dividend, r; dividend = remres[j]*256 + remres[j-1]; quotient = (remres[j] == v[lv-1]) ? 255 : dividend/(long)v[lv-1]; if (lv != 1) { while ((long)v[lv-2]*quotient > (dividend - quotient*(long)v[lv-1])*256 + (long)remres[j-2]) { quotient--; } } /* The quotient is at most 1 too large */ /* Subtract the product of this with ``v'' from ``res''. */ r = 1; /* Initial borrow */ for(i = 0; i < lv; i++) { r += 255 + remres[j-lv+i] - quotient * v[i]; remres[j-lv+i] = r & 0xff; r >>= 8; } r += remres[j]; /* Borrow from leading digit. */ /* If we are left with a borrow when the subtraction is complete the quotient must have been too big. We add ``v'' to the dividend and subtract 1 from the quotient. */ if (r == 0 /* would be 1 if there were no borrow */) { quotient --; r = 0; for (i = 0; i < lv; i++) { r += v[i] + remres[j-lv+i]; remres[j-lv+i] = r & 0xff; r >>= 8; } } /* Place the next digit of quotient in result */ if (divres) divres[j-lv] = (byte)quotient; } /* Likewise the remainder. */ if (bits) { r = 0; j = lv; while (j > 0) { j--; r |= remres[j]; remres[j] = (r >> bits) & 0xff; r = (r & 0xff) << 8; } } } /* div_unsigned_long */ #endif // Common code for div and mod. Returns handles to the results. static void quotRem(TaskData *taskData, Handle y, Handle x, Handle &remHandle, Handle &divHandle) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) /* Both short */ { POLYSIGNED xs = UNTAGGED(DEREFWORD(x)); POLYSIGNED ys = UNTAGGED(DEREFWORD(y)); /* Raise exceptions if dividing by zero. */ if (ys == 0) raise_exception0(taskData, EXC_divide); /* Only possible overflow is minint div -1 */ if (xs != -MAXTAGGED-1 || ys != -1) { divHandle = taskData->saveVec.push(TAGGED(xs / ys)); remHandle = taskData->saveVec.push(TAGGED(xs % ys)); return; } } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); #ifdef USE_GMP /* Get lengths of args. */ mp_size_t lx = numLimbs(DEREFWORD(long_x)); mp_size_t ly = numLimbs(DEREFWORD(long_y)); // If length of v is zero raise divideerror. if (ly == 0) raise_exception0(taskData, EXC_divide); if (lx < ly) { divHandle = taskData->saveVec.push(TAGGED(0)); remHandle = x; /* When x < y remainder is x. */ return; } Handle remRes = alloc_and_save(taskData, WORDS(ly*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); Handle divRes = alloc_and_save(taskData, WORDS((lx-ly+1)*sizeof(mp_limb_t)), F_MUTABLE_BIT|F_BYTE_OBJ); mp_limb_t *u = DEREFLIMBHANDLE(long_x), *v = DEREFLIMBHANDLE(long_y); mp_limb_t *quotient = DEREFLIMBHANDLE(divRes); mp_limb_t *remainder = DEREFLIMBHANDLE(remRes); // Do the division. mpn_tdiv_qr(quotient, remainder, 0, u, lx, v, ly); // Return the results. remHandle = make_canonical(taskData, remRes, sign_x /* Same sign as dividend */); divHandle = make_canonical(taskData, divRes, sign_x ^ sign_y); #else /* Get lengths of args. */ POLYUNSIGNED lx = get_length(DEREFWORD(long_x)); POLYUNSIGNED ly = get_length(DEREFWORD(long_y)); /* If length of y is zero raise divideerror */ if (ly == 0) raise_exception0(taskData, EXC_divide); // If the length of divisor is less than the dividend the quotient is zero. if (lx < ly) { divHandle = taskData->saveVec.push(TAGGED(0)); remHandle = x; /* When x < y remainder is x. */ return; } /* copy in case it needs shifting */ long_y = copy_long(taskData, long_y, ly); Handle divRes = alloc_and_save(taskData, WORDS(lx-ly+1), F_MUTABLE_BIT|F_BYTE_OBJ); Handle remRes = alloc_and_save(taskData, WORDS(lx+1), F_MUTABLE_BIT|F_BYTE_OBJ); div_unsigned_long (DEREFBYTEHANDLE(long_x), DEREFBYTEHANDLE(long_y), DEREFBYTEHANDLE(remRes), DEREFBYTEHANDLE(divRes), lx, ly); /* Clear the rest */ for(POLYUNSIGNED i=ly; i < lx+1; i++) { DEREFBYTEHANDLE(remRes)[i] = 0; } remHandle = make_canonical(taskData, remRes, sign_x /* Same sign as dividend */ ); divHandle = make_canonical(taskData, divRes, sign_x ^ sign_y); #endif } // This returns x divided by y. This always rounds towards zero so // corresponds to Int.quot in ML not Int.div. Handle div_longc(TaskData *taskData, Handle y, Handle x) { Handle remHandle, divHandle; quotRem(taskData, y, x, remHandle, divHandle); return divHandle; } Handle rem_longc(TaskData *taskData, Handle y, Handle x) { Handle remHandle, divHandle; quotRem(taskData, y, x, remHandle, divHandle); return remHandle; } // Return quot and rem as a pair. Handle quot_rem_c(TaskData *taskData, Handle result, Handle y, Handle x) { // The result handle will almost certainly point into the stack. // This should now be safe within the GC. Handle remHandle, divHandle; quotRem(taskData, y, x, remHandle, divHandle); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(divHandle)); DEREFHANDLE(result)->Set(1, DEREFWORDHANDLE(remHandle)); return taskData->saveVec.push(TAGGED(0)); } #if defined(_WIN32) // Return a FILETIME from an arbitrary precision number. On both 32-bit and 64-bit Windows // this is a pair of 32-bit values. void getFileTimeFromArb(TaskData *taskData, Handle numHandle, PFILETIME ft) { Handle twoTo16 = taskData->saveVec.push(TAGGED(65536)); Handle twoTo32 = mult_longc(taskData, twoTo16, twoTo16); Handle highPart, lowPart; quotRem(taskData, twoTo32, numHandle, lowPart, highPart); ft->dwLowDateTime = get_C_unsigned(taskData, lowPart->Word()); ft->dwHighDateTime = get_C_unsigned(taskData, highPart->Word()); } #endif /* compare_unsigned is passed LONG integers only */ static int compare_unsigned(PolyWord x, PolyWord y) { #ifdef USE_GMP mp_size_t lx = numLimbs(x); mp_size_t ly = numLimbs(y); if (lx != ly) /* u > v if u longer than v */ { return (lx > ly ? 1 : -1); } return mpn_cmp((mp_limb_t *)x.AsCodePtr(), (mp_limb_t *)y.AsCodePtr(), lx); #else /* First look at the lengths */ POLYUNSIGNED lx = get_length(x); POLYUNSIGNED ly = get_length(y); if (lx != ly) /* u > v if u longer than v */ { return (lx > ly ? 1 : -1); } // Same length - look at the values. */ byte *u = x.AsCodePtr(); byte *v = y.AsCodePtr(); POLYUNSIGNED i = lx; while (i > 0) { i--; if (u[i] != v[i]) { return u[i] > v[i] ? 1 : -1; } } /* Must be equal */ return 0; #endif } int compareLong(PolyWord y, PolyWord x) { // Test if the values are bitwise equal. If either is short // this is the only case where the values could be equal. if (x == y) // Equal return 0; if (x.IsTagged()) { // x is short. if (y.IsTagged()) { // Both short. We've already tested for equality. if (x.UnTagged() < y.UnTagged()) return -1; // Less else return 1; // Greater } // y is not short. Just test the sign. If it's negative // it must be less than any short value and if it's positive // it must be greater. if (OBJ_IS_NEGATIVE(GetLengthWord(y))) return 1; // x is greater else return -1; // x is less } // x is not short if (y.IsTagged()) { // y is short. Just test the sign of x if (OBJ_IS_NEGATIVE(GetLengthWord(x))) return -1; // x is less else return 1; // x is greater } // Must both be long. We may be able to determine the result based purely on the sign bits. if (! OBJ_IS_NEGATIVE(GetLengthWord(x))) /* x is positive */ { if (! OBJ_IS_NEGATIVE(GetLengthWord(y))) /* y also positive */ { return compare_unsigned(x, y); } else /* y negative so x > y */ { return 1; } } else { /* x is negative */ if (OBJ_IS_NEGATIVE(GetLengthWord(y))) /* y also negative */ { return compare_unsigned(y, x); } else /* y positive so x < y */ { return -1; } } } /* compareLong */ /* logical_long. General purpose function for binary logical operations. */ static Handle logical_long(TaskData *taskData, Handle x, Handle y, int signX, int signY, unsigned(*op)(unsigned, unsigned)) { byte *u; /* byte-pointer for longer number */ byte *v; /* byte-pointer for shorter number */ Handle z; int sign, signU, signV; POLYUNSIGNED lu; /* length of u in bytes */ POLYUNSIGNED lv; /* length of v in bytes */ { /* find the longer number */ #ifdef USE_GMP POLYUNSIGNED lx = numLimbs(DEREFWORD(x)) * sizeof(mp_limb_t); POLYUNSIGNED ly = numLimbs(DEREFWORD(y)) * sizeof(mp_limb_t); #else POLYUNSIGNED lx = get_length(DEREFWORD(x)); POLYUNSIGNED ly = get_length(DEREFWORD(y)); #endif /* Make ``u'' the longer. */ if (lx < ly) { // Get result vector. There can't be any carry at the end so // we just need to make this as large as the larger number. z = alloc_and_save(taskData, WORDS(ly), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(y); lu = ly; v = DEREFBYTEHANDLE(x); lv = lx; signU = signY; signV = signX; } else { /* Get result vector. */ z = alloc_and_save(taskData, WORDS(lx+1), F_MUTABLE_BIT|F_BYTE_OBJ); /* now safe to dereference pointers */ u = DEREFBYTEHANDLE(x); lu = lx; v = DEREFBYTEHANDLE(y); lv = ly; signU = signX; signV = signY; } } sign = (*op)(signU, signV); /* -1 if negative, 0 if positive. */ { /* do the actual operations */ byte *w = DEREFBYTEHANDLE(z); int borrowU = 1, borrowV = 1, borrowW = 1; POLYUNSIGNED i = 0; /* Do the operations. */ for( ; i < lv; i++) { int wI; /* Have to convert negative values to twos complement. */ if (signU) borrowU += 255 - u[i]; else borrowU = u[i]; if (signV) borrowV += 255 - v[i]; else borrowV = v[i]; wI = (*op)(borrowU, borrowV) & 255; if (sign) { /* Have to convert the result back to twos complement. */ borrowW += 255 - wI; w[i] = borrowW & 255; borrowW >>= 8; } else w[i] = wI; borrowU >>= 8; borrowV >>= 8; } /* At this point the borrow of V should be zero. */ ASSERT(signV == 0 || borrowV == 0); /* Continue with ``u''. */ for( ; i < lu; i++) { int wI; if (signU) borrowU += 255 - u[i]; else borrowU = u[i]; if (signV) borrowV = 255; else borrowV = 0; wI = (*op)(borrowU, borrowV) & 255; if (sign) { /* Have to convert the result back to twos complement. */ borrowW += 255 - wI; w[i] = borrowW & 255; borrowW >>= 8; } else w[i] = wI; borrowU >>= 8; borrowV >>= 8; } /* We should now no longer have any borrows. */ ASSERT(signU == 0 || borrowU == 0); ASSERT(sign == 0 || borrowW == 0); } return make_canonical(taskData, z, sign); } /* logical_long */ static unsigned doAnd(unsigned i, unsigned j) { return i & j; } static unsigned doOr(unsigned i, unsigned j) { return i | j; } static unsigned doXor(unsigned i, unsigned j) { return i ^ j; } Handle and_longc(TaskData *taskData, Handle y, Handle x) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) /* Both short */ { /* There's no problem with overflow so we can just AND together the values. */ POLYSIGNED t = UNTAGGED(DEREFWORD(x)) & UNTAGGED(DEREFWORD(y)); return taskData->saveVec.push(TAGGED(t)); } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; // Convert to long form. int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); return logical_long(taskData, long_x, long_y, sign_x, sign_y, doAnd); } Handle or_longc(TaskData *taskData, Handle y, Handle x) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) /* Both short */ { /* There's no problem with overflow so we can just OR together the values. */ POLYSIGNED t = UNTAGGED(DEREFWORD(x)) | UNTAGGED(DEREFWORD(y)); return taskData->saveVec.push(TAGGED(t)); } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; // Convert to long form. int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); return logical_long(taskData, long_x, long_y, sign_x, sign_y, doOr); } Handle xor_longc(TaskData *taskData, Handle y, Handle x) { if (IS_INT(DEREFWORD(x)) && IS_INT(DEREFWORD(y))) /* Both short */ { /* There's no problem with overflow so we can just XOR together the values. */ POLYSIGNED t = UNTAGGED(DEREFWORD(x)) ^ UNTAGGED(DEREFWORD(y)); return taskData->saveVec.push(TAGGED(t)); } #if USE_GMP PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; #else PolyWord x_extend[2], y_extend[2]; #endif SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; // Convert to long form. int sign_x, sign_y; Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); return logical_long(taskData, long_x, long_y, sign_x, sign_y, doXor); } // Convert a long precision value to floating point double get_arbitrary_precision_as_real(PolyWord x) { if (IS_INT(x)) { POLYSIGNED t = UNTAGGED(x); return (double)t; } double acc = 0; #if USE_GMP mp_limb_t *u = (mp_limb_t *)(x.AsObjPtr()); mp_size_t lx = numLimbs(x); for ( ; lx > 0; lx--) { int ll = sizeof(mp_limb_t); for ( ; ll > 0 ; ll-- ) { acc = acc * 256; } acc = acc + (double)u[lx-1]; } #else byte *u = (byte *)(x.AsObjPtr()); POLYUNSIGNED lx = OBJECT_LENGTH(x)*sizeof(PolyWord); for( ; lx > 0; lx--) { acc = acc * 256 + (double)u[lx-1]; } #endif if (OBJ_IS_NEGATIVE(GetLengthWord(x))) return -acc; else return acc; } /* Arbitrary precision GCD function. This is really included to make use of GMP's GCD function that selects an algorithm based on the length of the arguments. */ #ifdef USE_GMP Handle gcd_arbitrary(TaskData *taskData, Handle x, Handle y) { /* mpn_gcd requires that each argument is odd and its first argument must be no longer than its second. This requires shifting before the call and after the result has been returned. This code is modelled roughly on the high level mpz_gcd call in GMP. */ PolyWord x_extend[1+WORDS(sizeof(mp_limb_t))]; PolyWord y_extend[1+WORDS(sizeof(mp_limb_t))]; SaveVecEntry x_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(x_extend[1]))); Handle x_ehandle = &x_extend_addr; SaveVecEntry y_extend_addr = SaveVecEntry(PolyWord::FromStackAddr(&(y_extend[1]))); Handle y_ehandle = &y_extend_addr; int sign_x, sign_y; // Signs are ignored - the result is always positive. Handle long_x = get_long(x, x_ehandle, &sign_x); Handle long_y = get_long(y, y_ehandle, &sign_y); mp_size_t lx = numLimbs(DEREFWORD(long_x)); mp_size_t ly = numLimbs(DEREFWORD(long_y)); // Test for zero length and therefore zero argument if (lx == 0) { // GCD(0,y) = abs(y) if (sign_y) return neg_longc(taskData, y); else return y; } if (ly == 0) { // GCD(x,0 = abs(x) if (sign_x) return neg_longc(taskData, x); else return x; } // If one of the arguments is a single limb we can use the special case. // This doesn't require shifting. It also doesn't say that it could // overwrite the arguments. if (lx == 1 || ly == 1) { mp_limb_t g = (lx == 1) ? mpn_gcd_1(DEREFLIMBHANDLE(long_y), ly, *DEREFLIMBHANDLE(long_x)) : mpn_gcd_1(DEREFLIMBHANDLE(long_x), lx, *DEREFLIMBHANDLE(long_y)); if (g <= MAXTAGGED) return taskData->saveVec.push(TAGGED(g)); // Need to allocate space. Handle r = alloc_and_save(taskData, WORDS(sizeof(mp_limb_t)), F_BYTE_OBJ); *(DEREFLIMBHANDLE(r)) = g; return r; } // Memory for result. This can be up to the shorter of the two. // We rely on this zero the memory because we may not set every word here. Handle r = alloc_and_save(taskData, WORDS((lx < ly ? lx : ly)*sizeof(mp_limb_t)), F_BYTE_OBJ|F_MUTABLE_BIT); // Can now dereference the handles. mp_limb_t *xl = DEREFLIMBHANDLE(long_x); mp_limb_t *yl = DEREFLIMBHANDLE(long_y); mp_limb_t *rl = DEREFLIMBHANDLE(r); unsigned xZeroLimbs = 0, xZeroBits = 0; // Remove whole limbs of zeros. There must be a word which is non-zero. while (*xl == 0) { xl++; xZeroLimbs++; lx--; } // Count the low-order bits and shift by that amount. mp_limb_t t = *xl; while ((t & 1) == 0) { t = t >> 1; xZeroBits++; } // Copy the non-zero limbs into a temporary, shifting if necessary. mp_limb_t *xC = (mp_limb_t*)alloca(lx * sizeof(mp_limb_t)); if (xZeroBits != 0) { mpn_rshift(xC, xl, lx, xZeroBits); if (xC[lx-1] == 0) lx--; } else memcpy(xC, xl, lx * sizeof(mp_limb_t)); unsigned yZeroLimbs = 0, yZeroBits = 0; while (*yl == 0) { yl++; yZeroLimbs++; ly--; } t = *yl; while ((t & 1) == 0) { t = t >> 1; yZeroBits++; } mp_limb_t *yC = (mp_limb_t*)alloca(ly * sizeof(mp_limb_t)); if (yZeroBits != 0) { mpn_rshift(yC, yl, ly, yZeroBits); if (yC[ly-1] == 0) ly--; } else memcpy(yC, yl, ly * sizeof(mp_limb_t)); // The result length and shift is the smaller of these unsigned rZeroLimbs, rZeroBits; if (xZeroLimbs < yZeroLimbs || (xZeroLimbs == yZeroLimbs && xZeroBits < yZeroBits)) { rZeroLimbs = xZeroLimbs; rZeroBits = xZeroBits; } else { rZeroLimbs = yZeroLimbs; rZeroBits = yZeroBits; } // Now actually compute the GCD if (lx < ly || (lx == ly && xC[lx-1] < yC[ly-1])) lx = mpn_gcd(xC, yC, ly, xC, lx); else lx = mpn_gcd(xC, xC, lx, yC, ly); // Shift the temporary result into the final area. if (rZeroBits != 0) { t = mpn_lshift(rl+rZeroLimbs, xC, lx, rZeroBits); if (t != 0) rl[rZeroLimbs+lx] = t; } else memcpy(rl+rZeroLimbs, xC, lx * sizeof(mp_limb_t)); return make_canonical(taskData, r, false); } #else // Fallback version for when GMP is not defined. static Handle gxd(TaskData *taskData, Handle x, Handle y) { Handle marker = taskData->saveVec.mark(); while (1) { if (DEREFWORD(y) == TAGGED(0)) return x; Handle res = rem_longc(taskData, y, x); PolyWord newY = res->Word(); PolyWord newX = y->Word(); taskData->saveVec.reset(marker); y = taskData->saveVec.push(newY); x = taskData->saveVec.push(newX); } } static Handle absValue(TaskData *taskData, Handle x) { if (IS_INT(DEREFWORD(x))) { if (UNTAGGED(DEREFWORD(x)) < 0) return neg_longc(taskData, x); } else if (OBJ_IS_NEGATIVE(GetLengthWord(DEREFWORD(x)))) return neg_longc(taskData, x); return x; } Handle gcd_arbitrary(TaskData *taskData, Handle x, Handle y) { x = absValue(taskData, x); y = absValue(taskData, y); if (compareLong(y->Word(), x->Word()) < 0) return gxd(taskData, y, x); else return gxd(taskData, x, y); } #endif // This is provided as an adjunct to GCD. Using this saves the RTS // calls necessary for the division and multiplication. Handle lcm_arbitrary(TaskData *taskData, Handle x, Handle y) { Handle g = gcd_arbitrary(taskData, x, y); return mult_longc(taskData, x, div_longc(taskData, g, y)); } POLYUNSIGNED PolyAddArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { // Could raise an exception if out of memory. result = add_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolySubtractArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { result = sub_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyMultiplyArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { result = mult_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyDivideArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { // May raise divide exception result = div_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyRemainderArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { result = rem_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyQuotRemArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2, PolyWord arg3) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle pushedArg3 = taskData->saveVec.push(arg3); if (profileMode == kProfileEmulation) taskData->addProfileCount(1); try { quot_rem_c(taskData, pushedArg3, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); return 0; // Result is unit } // This can be a fast call. It does not need to allocate or use handles. POLYSIGNED PolyCompareArbitrary(PolyWord arg1, PolyWord arg2) { return TAGGED(compareLong(arg2, arg1)).AsSigned(); } POLYUNSIGNED PolyGCDArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; try { result = gcd_arbitrary(taskData, pushedArg2, pushedArg1); // Generally shouldn't raise an exception but might run out of store. } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyLCMArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; try { result = lcm_arbitrary(taskData, pushedArg2, pushedArg1); // Generally shouldn't raise an exception but might run out of store. } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Extract the low order part of an arbitrary precision value as a boxed LargeWord.word // value. If the value is negative it is treated as a twos complement value. // This is used Word.fromLargeInt and LargeWord.fromLargeInt with long-form // arbitrary precision values. POLYUNSIGNED PolyGetLowOrderAsLargeWord(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); POLYSIGNED p = 0; if (arg.IsTagged()) p = arg.UnTagged(); else { bool negative = OBJ_IS_NEGATIVE(GetLengthWord(arg)) ? true : false; #ifdef USE_GMP mp_limb_t c = *(mp_limb_t*)arg.AsCodePtr(); p = c; #else POLYUNSIGNED length = get_length(arg); if (length > sizeof(PolyWord)) length = sizeof(PolyWord); byte *ptr = arg.AsCodePtr(); while (length--) { p = (p << 8) | ptr[length]; } #endif if (negative) p = -p; } Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ); result->WordP()->Set(0, PolyWord::FromUnsigned(p)); taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); return result->Word().AsUnsigned(); } POLYUNSIGNED PolyOrArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; try { // Could raise an exception if out of memory. result = or_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyAndArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; try { // Could raise an exception if out of memory. result = and_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } POLYUNSIGNED PolyXorArbitrary(PolyObject *threadId, PolyWord arg1, PolyWord arg2) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg1 = taskData->saveVec.push(arg1); Handle pushedArg2 = taskData->saveVec.push(arg2); Handle result = 0; try { // Could raise an exception if out of memory. result = xor_longc(taskData, pushedArg2, pushedArg1); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts arbitraryPrecisionEPT[] = { { "PolyAddArbitrary", (polyRTSFunction)&PolyAddArbitrary}, { "PolySubtractArbitrary", (polyRTSFunction)&PolySubtractArbitrary}, { "PolyMultiplyArbitrary", (polyRTSFunction)&PolyMultiplyArbitrary}, { "PolyDivideArbitrary", (polyRTSFunction)&PolyDivideArbitrary}, { "PolyRemainderArbitrary", (polyRTSFunction)&PolyRemainderArbitrary}, { "PolyQuotRemArbitrary", (polyRTSFunction)&PolyQuotRemArbitrary}, { "PolyCompareArbitrary", (polyRTSFunction)&PolyCompareArbitrary}, { "PolyGCDArbitrary", (polyRTSFunction)&PolyGCDArbitrary}, { "PolyLCMArbitrary", (polyRTSFunction)&PolyLCMArbitrary}, { "PolyGetLowOrderAsLargeWord", (polyRTSFunction)&PolyGetLowOrderAsLargeWord}, { "PolyOrArbitrary", (polyRTSFunction)&PolyOrArbitrary}, { "PolyAndArbitrary", (polyRTSFunction)&PolyAndArbitrary}, { "PolyXorArbitrary", (polyRTSFunction)&PolyXorArbitrary}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/foreign.h0000644000175000017500000000174213204034553015610 0ustar daviddavid/* Title: Header for foreign function interface Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _FOREIGN_H_DEFINED #define _FOREIGN_H_DEFINED 1 extern struct _entrypts foreignEPT[]; #endif polyml-5.7.1/libpolyml/memmgr.cpp0000644000175000017500000012326213204034553016000 0ustar daviddavid/* Title: memmgr.cpp Memory segment manager Copyright (c) 2006-7, 2011-12, 2016-17 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include #include "globals.h" #include "memmgr.h" #include "osmem.h" #include "scanaddrs.h" #include "bitmap.h" #include "mpoly.h" #include "diagnostics.h" #include "statistics.h" #include "processes.h" // heap resizing policy option requested on command line unsigned heapsizingOption = 0; MemSpace::MemSpace(): SpaceTree(true) { spaceType = ST_PERMANENT; isMutable = false; bottom = 0; top = 0; isOwnSpace = false; isCode = false; } MemSpace::~MemSpace() { if (isOwnSpace && bottom != 0) osMemoryManager->Free(bottom, (char*)top - (char*)bottom); } MarkableSpace::MarkableSpace(): spaceLock("Local space") { } LocalMemSpace::LocalMemSpace() { spaceType = ST_LOCAL; upperAllocPtr = lowerAllocPtr = 0; for (unsigned i = 0; i < NSTARTS; i++) start[i] = 0; start_index = 0; i_marked = m_marked = updated = 0; allocationSpace = false; } bool LocalMemSpace::InitSpace(POLYUNSIGNED size, bool mut) { isMutable = mut; // Allocate the heap itself. size_t iSpace = size*sizeof(PolyWord); bottom = (PolyWord*)osMemoryManager->Allocate(iSpace, PERMISSION_READ|PERMISSION_WRITE); if (bottom == 0) return false; isOwnSpace = true; // Deallocate when we're finished. // The size may have been rounded up to a block boundary. size = iSpace/sizeof(PolyWord); top = bottom + size; // Initialise all the fields. The partial GC in particular relies on this. upperAllocPtr = partialGCTop = fullGCRescanStart = fullGCLowerLimit = lowestWeak = top; lowerAllocPtr = partialGCScan = partialGCRootBase = partialGCRootTop = fullGCRescanEnd = highestWeak = bottom; spaceOwner = 0; allocationSpace = false; // Bitmap for the space. return bitmap.Create(size); } MemMgr::MemMgr(): allocLock("Memmgr alloc"), codeBitmapLock("Code bitmap") { nextIndex = 0; reservedSpace = 0; nextAllocator = 0; defaultSpaceSize = 0; spaceBeforeMinorGC = 0; spaceForHeap = 0; currentAllocSpace = currentHeapSize = 0; defaultSpaceSize = 1024 * 1024 / sizeof(PolyWord); // 1Mbyte segments. spaceTree = new SpaceTreeTree; } MemMgr::~MemMgr() { delete(spaceTree); // Have to do this before we delete the spaces. for (std::vector::iterator i = pSpaces.begin(); i < pSpaces.end(); i++) delete(*i); for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) delete(*i); for (std::vector::iterator i = eSpaces.begin(); i < eSpaces.end(); i++) delete(*i); for (std::vector::iterator i = sSpaces.begin(); i < sSpaces.end(); i++) delete(*i); for (std::vector::iterator i = cSpaces.begin(); i < cSpaces.end(); i++) delete(*i); } // Create and initialise a new local space and add it to the table. LocalMemSpace* MemMgr::NewLocalSpace(POLYUNSIGNED size, bool mut) { try { LocalMemSpace *space = new LocalMemSpace; // Before trying to allocate the heap temporarily allocate the // reserved space. This ensures that this much space will always // be available for C stacks and the C++ heap. void *reservation = 0; size_t rSpace = reservedSpace*sizeof(PolyWord); if (reservedSpace != 0) { reservation = osMemoryManager->Allocate(rSpace, PERMISSION_READ); if (reservation == 0) { // Insufficient space for the reservation. Can't allocate this local space. if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New local %smutable space: insufficient reservation space\n", mut ? "": "im"); delete space; return 0; } } bool success = space->InitSpace(size, mut) && AddLocalSpace(space); if (reservation != 0) osMemoryManager->Free(reservation, rSpace); if (success) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New local %smutable space %p, size=%luk words, bottom=%p, top=%p\n", mut ? "": "im", space, space->spaceSize()/1024, space->bottom, space->top); currentHeapSize += space->spaceSize(); globalStats.setSize(PSS_TOTAL_HEAP, currentHeapSize * sizeof(PolyWord)); return space; } // If something went wrong. delete space; if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New local %smutable space: insufficient space\n", mut ? "": "im"); return 0; } catch (std::bad_alloc&) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New local %smutable space: \"new\" failed\n", mut ? "": "im"); return 0; } } // Create a local space for initial allocation. LocalMemSpace *MemMgr::CreateAllocationSpace(POLYUNSIGNED size) { LocalMemSpace *result = NewLocalSpace(size, true); if (result) { result->allocationSpace = true; currentAllocSpace += result->spaceSize(); globalStats.incSize(PSS_ALLOCATION, result->spaceSize()*sizeof(PolyWord)); globalStats.incSize(PSS_ALLOCATION_FREE, result->freeSpace()*sizeof(PolyWord)); } return result; } // If an allocation space has a lot of data left in it after a GC, particularly // a single large object we should turn it into a local area. void MemMgr::ConvertAllocationSpaceToLocal(LocalMemSpace *space) { ASSERT(space->allocationSpace); space->allocationSpace = false; // Currently it is left as a mutable area but if the contents are all // immutable e.g. a large vector it could be better to turn it into an // immutable area. currentAllocSpace -= space->spaceSize(); } // Add a local memory space to the table. bool MemMgr::AddLocalSpace(LocalMemSpace *space) { // Add to the table. // Update the B-tree. try { AddTree(space); // The entries in the local table are ordered so that the copy phase of the full // GC simply has to copy to an entry earlier in the table. Immutable spaces come // first, followed by mutable spaces and finally allocation spaces. if (space->allocationSpace) lSpaces.push_back(space); // Just add at the end else if (space->isMutable) { // Add before the allocation spaces std::vector::iterator i = lSpaces.begin(); while (i != lSpaces.end() && ! (*i)->allocationSpace) i++; lSpaces.insert(i, space); } else { // Immutable space: Add before the mutable spaces std::vector::iterator i = lSpaces.begin(); while (i != lSpaces.end() && ! (*i)->isMutable) i++; lSpaces.insert(i, space); } } catch (std::bad_alloc&) { RemoveTree(space); return false; } return true; } // Create an entry for a permanent space. PermanentMemSpace* MemMgr::NewPermanentSpace(PolyWord *base, POLYUNSIGNED words, unsigned flags, unsigned index, unsigned hierarchy /*= 0*/) { try { PermanentMemSpace *space = new PermanentMemSpace; space->bottom = base; space->topPointer = space->top = space->bottom + words; space->spaceType = ST_PERMANENT; space->isMutable = flags & MTF_WRITEABLE ? true : false; space->noOverwrite = flags & MTF_NO_OVERWRITE ? true : false; space->byteOnly = flags & MTF_BYTES ? true : false; space->isCode = flags & MTF_EXECUTABLE ? true : false; space->index = index; space->hierarchy = hierarchy; if (index >= nextIndex) nextIndex = index+1; // Extend the permanent memory table and add this space to it. try { AddTree(space); pSpaces.push_back(space); } catch (std::exception&) { RemoveTree(space); delete space; return 0; } return space; } catch (std::bad_alloc&) { return 0; } } // Delete a local space and remove it from the table. void MemMgr::DeleteLocalSpace(std::vector::iterator &iter) { LocalMemSpace *sp = *iter; if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Deleted local %s space %p\n", sp->spaceTypeString(), sp); currentHeapSize -= sp->spaceSize(); globalStats.setSize(PSS_TOTAL_HEAP, currentHeapSize * sizeof(PolyWord)); if (sp->allocationSpace) currentAllocSpace -= sp->spaceSize(); RemoveTree(sp); delete(sp); iter = lSpaces.erase(iter); } // Remove local areas that are now empty after a GC. // It isn't clear if we always want to do this. void MemMgr::RemoveEmptyLocals() { for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); ) { LocalMemSpace *space = *i; if (space->allocatedSpace() == 0) DeleteLocalSpace(i); else i++; } } // Create and initialise a new export space and add it to the table. PermanentMemSpace* MemMgr::NewExportSpace(POLYUNSIGNED size, bool mut, bool noOv, bool code) { try { PermanentMemSpace *space = new PermanentMemSpace; space->spaceType = ST_EXPORT; space->isMutable = mut; space->noOverwrite = noOv; space->isCode = code; space->index = nextIndex++; // Allocate the memory itself. size_t iSpace = size*sizeof(PolyWord); space->bottom = (PolyWord*)osMemoryManager->Allocate(iSpace, PERMISSION_READ|PERMISSION_WRITE|PERMISSION_EXEC); if (space->bottom == 0) { delete space; if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New export %smutable space: insufficient space\n", mut ? "" : "im"); return 0; } space->isOwnSpace = true; // The size may have been rounded up to a block boundary. size = iSpace/sizeof(PolyWord); space->top = space->bottom + size; space->topPointer = space->bottom; if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New export %smutable %s%sspace %p, size=%luk words, bottom=%p, top=%p\n", mut ? "" : "im", noOv ? "no-overwrite " : "", code ? "code " : "", space, space->spaceSize() / 1024, space->bottom, space->top); // Add to the table. try { AddTree(space); eSpaces.push_back(space); } catch (std::exception&) { RemoveTree(space); delete space; if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New export %smutable space: Adding to tree failed\n", mut ? "" : "im"); return 0; } return space; } catch (std::bad_alloc&) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New export %smutable space: \"new\" failed\n", mut ? "" : "im"); return 0; } } void MemMgr::DeleteExportSpaces(void) { for (std::vector::iterator i = eSpaces.begin(); i < eSpaces.end(); i++) { PermanentMemSpace *space = *i; RemoveTree(space); delete(space); } eSpaces.clear(); } // If we have saved the state rather than exported a function we turn the exported // spaces into permanent ones, removing existing permanent spaces at the same or // lower level. bool MemMgr::PromoteExportSpaces(unsigned hierarchy) { // Save permanent spaces at a lower hierarchy. Others are converted into // local spaces. Most or all items will have been copied from these spaces // into an export space but there could be items reachable only from the stack. std::vector::iterator i = pSpaces.begin(); while (i != pSpaces.end()) { PermanentMemSpace *pSpace = *i; if (pSpace->hierarchy < hierarchy) i++; else { try { // Turn this into a local space or a code space // Remove this from the tree - AddLocalSpace will make an entry for the local version. RemoveTree(pSpace); if (pSpace->isCode) { CodeSpace *space = new CodeSpace(pSpace->bottom, pSpace->spaceSize()); if (! space->headerMap.Create(space->spaceSize())) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Unable to create header map for state space %p\n", pSpace); return false; } if (!AddCodeSpace(space)) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Unable to convert saved state space %p into code space\n", pSpace); return false; } if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Converted saved state space %p into code space %p\n", pSpace, space); // Set the bits in the header map. for (PolyWord *ptr = space->bottom; ptr < space->top; ) { PolyObject *obj = (PolyObject*)(ptr+1); // We may have forwarded this if this has been // copied to the exported area. Restore the original length word. if (obj->ContainsForwardingPtr()) { PolyObject *forwardedTo = obj->FollowForwardingChain(); obj->SetLengthWord(forwardedTo->LengthWord()); } if (obj->IsCodeObject()) space->headerMap.SetBit(ptr-space->bottom); ptr += obj->Length() + 1; } } else { LocalMemSpace *space = new LocalMemSpace; space->top = pSpace->top; // Space is allocated in local areas from the top down. This area is full and // all data is in the old generation. The area can be recovered by a full GC. space->bottom = space->upperAllocPtr = space->lowerAllocPtr = space->fullGCLowerLimit = pSpace->bottom; space->isMutable = pSpace->isMutable; space->isOwnSpace = true; space->isCode = false; if (! space->bitmap.Create(space->top-space->bottom) || ! AddLocalSpace(space)) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Unable to convert saved state space %p into local space\n", pSpace); return false; } if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Converted saved state space %p into local %smutable space %p\n", pSpace, pSpace->isMutable ? "im": "", space); currentHeapSize += space->spaceSize(); globalStats.setSize(PSS_TOTAL_HEAP, currentHeapSize * sizeof(PolyWord)); } i = pSpaces.erase(i); } catch (std::bad_alloc&) { return false; } } } // Save newly exported spaces. for(std::vector::iterator j = eSpaces.begin(); j < eSpaces.end(); j++) { PermanentMemSpace *space = *j; space->hierarchy = hierarchy; // Set the hierarchy of the new spaces. space->spaceType = ST_PERMANENT; // Put a dummy object to fill up the unused space. if (space->topPointer != space->top) FillUnusedSpace(space->topPointer, space->top - space->topPointer); // Put in a dummy object to fill the rest of the space. pSpaces.push_back(space); } eSpaces.clear(); return true; } // Before we import a hierarchical saved state we need to turn any previously imported // spaces into local spaces. bool MemMgr::DemoteImportSpaces() { return PromoteExportSpaces(1); // Only truly permanent spaces are retained. } // Return the space for a given index PermanentMemSpace *MemMgr::SpaceForIndex(unsigned index) { for (std::vector::iterator i = pSpaces.begin(); i < pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->index == index) return space; } return NULL; } // In several places we assume that segments are filled with valid // objects. This fills unused memory with one or more "byte" objects. void MemMgr::FillUnusedSpace(PolyWord *base, POLYUNSIGNED words) { PolyWord *pDummy = base+1; while (words > 0) { POLYUNSIGNED oSize = words; // If the space is larger than the maximum object size // we will need several objects. if (words > MAX_OBJECT_SIZE) oSize = MAX_OBJECT_SIZE; else oSize = words-1; // Make this a byte object so it's always skipped. ((PolyObject*)pDummy)->SetLengthWord(oSize, F_BYTE_OBJ); words -= oSize+1; pDummy += oSize+1; } } // Allocate an area of the heap of at least minWords and at most maxWords. // This is used both when allocating single objects (when minWords and maxWords // are the same) and when allocating heap segments. If there is insufficient // space to satisfy the minimum it will return 0. PolyWord *MemMgr::AllocHeapSpace(POLYUNSIGNED minWords, POLYUNSIGNED &maxWords, bool doAllocation) { PLocker locker(&allocLock); // We try to distribute the allocations between the memory spaces // so that at the next GC we don't have all the most recent cells in // one space. The most recent cells will be more likely to survive a // GC so distibuting them improves the load balance for a multi-thread GC. nextAllocator++; if (nextAllocator > gMem.lSpaces.size()) nextAllocator = 0; unsigned j = nextAllocator; for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) { if (j >= gMem.lSpaces.size()) j = 0; LocalMemSpace *space = gMem.lSpaces[j++]; if (space->allocationSpace) { POLYUNSIGNED available = space->freeSpace(); if (available > 0 && available >= minWords) { // Reduce the maximum value if we had less than that. if (available < maxWords) maxWords = available; PolyWord *result = space->lowerAllocPtr; // Return the address. if (doAllocation) space->lowerAllocPtr += maxWords; // Allocate it. return result; } } } // There isn't space in the existing areas - can we create a new area? // The reason we don't have enough space could simply be that we want to // allocate an object larger than the default space size. Try deleting // some other spaces to bring currentAllocSpace below spaceBeforeMinorGC - minWords. if (minWords > defaultSpaceSize && minWords < spaceBeforeMinorGC) RemoveExcessAllocation(spaceBeforeMinorGC - minWords); if (currentAllocSpace/* + minWords */ < spaceBeforeMinorGC) { // i.e. the current allocation space is less than the space allowed for the minor GC // but it may be that allocating this object will take us over the limit. We allow // that to happen so that we can successfully allocate very large objects even if // we have a new GC very shortly. POLYUNSIGNED spaceSize = defaultSpaceSize; if (minWords > spaceSize) spaceSize = minWords; // If we really want a large space. LocalMemSpace *space = CreateAllocationSpace(spaceSize); if (space == 0) return 0; // Can't allocate it // Allocate our space in this new area. POLYUNSIGNED available = space->freeSpace(); ASSERT(available >= minWords); if (available < maxWords) maxWords = available; PolyWord *result = space->lowerAllocPtr; // Return the address. if (doAllocation) space->lowerAllocPtr += maxWords; // Allocate it. return result; } return 0; // There isn't space even for the minimum. } CodeSpace::CodeSpace(PolyWord *start, POLYUNSIGNED spaceSize) { isOwnSpace = true; bottom = start; top = start+spaceSize; isMutable = true; // Make it mutable just in case. This will cause it to be scanned. isOwnSpace = true; isCode = true; spaceType = ST_CODE; largestFree = spaceSize-1; firstFree = start; } CodeSpace *MemMgr::NewCodeSpace(POLYUNSIGNED size) { // Allocate a new area and add it at the end of the table. CodeSpace *allocSpace = 0; // Allocate a new mutable, code space. N.B. This may round up "actualSize". size_t actualSize = size * sizeof(PolyWord); PolyWord *mem = (PolyWord*)osMemoryManager->Allocate(actualSize, PERMISSION_READ | PERMISSION_WRITE | PERMISSION_EXEC); if (mem != 0) { try { allocSpace = new CodeSpace(mem, actualSize / sizeof(PolyWord)); if (!allocSpace->headerMap.Create(allocSpace->spaceSize())) { delete allocSpace; allocSpace = 0; } else if (!AddCodeSpace(allocSpace)) { delete allocSpace; allocSpace = 0; } else if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New code space %p allocated at %p size %lu\n", allocSpace, allocSpace->bottom, allocSpace->spaceSize()); // Put in a byte cell to mark the area as unallocated. FillUnusedSpace(allocSpace->bottom, allocSpace->spaceSize()); } catch (std::bad_alloc&) { } if (allocSpace == 0) { osMemoryManager->Free(mem, actualSize); mem = 0; } } return allocSpace; } // Allocate memory for a piece of code. This needs to be both mutable and executable, // at least for native code. The interpreted version need not (should not?) make the // area executable. It will not be executed until the mutable bit has been cleared. // Once code is allocated it is not GCed or moved. // initCell is a byte cell that is copied into the new code area. PolyObject*MemMgr::AllocCodeSpace(PolyObject *initCell) { PLocker locker(&codeSpaceLock); // Search the code spaces until we find a free area big enough. size_t i = 0; POLYUNSIGNED requiredSize = initCell->Length(); while (true) { if (i != cSpaces.size()) { CodeSpace *space = cSpaces[i]; if (space->largestFree >= requiredSize) { POLYUNSIGNED actualLargest = 0; while (space->firstFree < space->top) { PolyObject *obj = (PolyObject*)(space->firstFree+1); // Skip over allocated areas or free areas that are too small. if (obj->IsCodeObject() || obj->Length() < 8) space->firstFree += obj->Length()+1; else break; } PolyWord *pt = space->firstFree; while (pt < space->top) { PolyObject *obj = (PolyObject*)(pt+1); POLYUNSIGNED length = obj->Length(); if (obj->IsByteObject()) { if (length >= requiredSize) { // Free and large enough PolyWord *next = pt+requiredSize+1; if (requiredSize < length) FillUnusedSpace(next, length-requiredSize); space->isMutable = true; // Set this - it ensures the area is scanned on GC. space->headerMap.SetBit(pt-space->bottom); // Set the "header" bit // Set the length word of the code area and copy the byte cell in. // The code bit must be set before the lock is released to ensure // another thread doesn't reuse this. obj->SetLengthWord(requiredSize, F_CODE_OBJ|F_MUTABLE_BIT); memcpy(obj, initCell, requiredSize * sizeof(PolyWord)); return obj; } else if (length >= actualLargest) actualLargest = length+1; } pt += length+1; } // Reached the end without finding what we wanted. Update the largest size. space->largestFree = actualLargest; } i++; // Next area } else { // Allocate a new area and add it at the end of the table. CodeSpace *allocSpace = NewCodeSpace(requiredSize + 1); if (allocSpace == 0) return 0; // Try a GC. } } } // Remove code areas that are completely empty. This is probably better than waiting to reuse them. // It's particularly important if we reload a saved state because the code areas for old saved states // are made into local code areas just in case they are currently in use or reachable. void MemMgr::RemoveEmptyCodeAreas() { for (std::vector::iterator i = cSpaces.begin(); i != cSpaces.end(); ) { CodeSpace *space = *i; PolyObject *start = (PolyObject *)(space->bottom+1); if (start->IsByteObject() && start->Length() == space->spaceSize()-1) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Deleted code space %p\n", space); // We have an empty cell that fills the whole space. RemoveTree(space); delete(space); i = cSpaces.erase(i); } else i++; } } // Add a code space to the tables. Used both for newly compiled code and also demoted saved spaces. bool MemMgr::AddCodeSpace(CodeSpace *space) { try { AddTree(space); cSpaces.push_back(space); } catch (std::exception&) { RemoveTree(space); return false; } return true; } // Check that we have sufficient space for an allocation to succeed. // Called from the GC to ensure that we will not get into an infinite // loop trying to allocate, failing and garbage-collecting again. bool MemMgr::CheckForAllocation(POLYUNSIGNED words) { POLYUNSIGNED allocated = 0; return AllocHeapSpace(words, allocated, false) != 0; } // Adjust the allocation area by removing free areas so that the total // size of the allocation area is less than the required value. This // is used after the quick GC and also if we need to allocate a large // object. void MemMgr::RemoveExcessAllocation(POLYUNSIGNED words) { // First remove any non-standard allocation areas. for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end();) { LocalMemSpace *space = *i; if (space->allocationSpace && space->allocatedSpace() == 0 && space->spaceSize() != defaultSpaceSize) DeleteLocalSpace(i); else i++; } for (std::vector::iterator i = lSpaces.begin(); currentAllocSpace > words && i < lSpaces.end(); ) { LocalMemSpace *space = *i; if (space->allocationSpace && space->allocatedSpace() == 0) DeleteLocalSpace(i); else i++; } } // Return number of words free in all allocation spaces. POLYUNSIGNED MemMgr::GetFreeAllocSpace() { POLYUNSIGNED freeSpace = 0; PLocker lock(&allocLock); for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) { LocalMemSpace *space = *i; if (space->allocationSpace) freeSpace += space->freeSpace(); } return freeSpace; } StackSpace *MemMgr::NewStackSpace(POLYUNSIGNED size) { PLocker lock(&stackSpaceLock); try { StackSpace *space = new StackSpace; size_t iSpace = size*sizeof(PolyWord); space->bottom = (PolyWord*)osMemoryManager->Allocate(iSpace, PERMISSION_READ|PERMISSION_WRITE); if (space->bottom == 0) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New stack space: insufficient space\n"); delete space; return 0; } // The size may have been rounded up to a block boundary. size = iSpace/sizeof(PolyWord); space->top = space->bottom + size; space->spaceType = ST_STACK; space->isMutable = true; // Add the stack space to the tree. This ensures that operations such as // LocalSpaceForAddress will work for addresses within the stack. We can // get them in the RTS with functions such as quot_rem and exception stack. // It's not clear whether they really appear in the GC. try { AddTree(space); sSpaces.push_back(space); } catch (std::exception&) { RemoveTree(space); delete space; return 0; } if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New stack space %p allocated at %p size %lu\n", space, space->bottom, space->spaceSize()); return space; } catch (std::bad_alloc&) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: New stack space: \"new\" failed\n"); return 0; } } // If checkmem is given write protect the immutable areas except during a GC. void MemMgr::ProtectImmutable(bool on) { if (debugOptions & DEBUG_CHECK_OBJECTS) { for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) { LocalMemSpace *space = *i; if (! space->isMutable) osMemoryManager->SetPermissions(space->bottom, (char*)space->top - (char*)space->bottom, on ? PERMISSION_READ|PERMISSION_EXEC : PERMISSION_READ|PERMISSION_EXEC|PERMISSION_WRITE); } } } bool MemMgr::GrowOrShrinkStack(TaskData *taskData, POLYUNSIGNED newSize) { StackSpace *space = taskData->stack; size_t iSpace = newSize*sizeof(PolyWord); PolyWord *newSpace = (PolyWord*)osMemoryManager->Allocate(iSpace, PERMISSION_READ|PERMISSION_WRITE); if (newSpace == 0) { if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Unable to change size of stack %p from %lu to %lu: insufficient space\n", space, space->spaceSize(), newSize); return false; } // The size may have been rounded up to a block boundary. newSize = iSpace/sizeof(PolyWord); try { AddTree(space, newSpace, newSpace+newSize); } catch (std::bad_alloc&) { RemoveTree(space, newSpace, newSpace+newSize); delete space; return 0; } taskData->CopyStackFrame(space->stack(), space->spaceSize(), (StackObject*)newSpace, newSize); if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Size of stack %p changed from %lu to %lu at %p\n", space, space->spaceSize(), newSize, newSpace); RemoveTree(space); // Remove it BEFORE freeing the space - another thread may allocate it PolyWord *oldBottom = space->bottom; size_t oldSize = (char*)space->top - (char*)space->bottom; space->bottom = newSpace; // Switch this before freeing - We could get a profile trap during the free space->top = newSpace+newSize; osMemoryManager->Free(oldBottom, oldSize); return true; } // Delete a stack when a thread has finished. // This can be called by an ML thread so needs an interlock. bool MemMgr::DeleteStackSpace(StackSpace *space) { PLocker lock(&stackSpaceLock); for (std::vector::iterator i = sSpaces.begin(); i < sSpaces.end(); i++) { if (*i == space) { RemoveTree(space); delete space; sSpaces.erase(i); if (debugOptions & DEBUG_MEMMGR) Log("MMGR: Deleted stack space %p\n", space); return true; } } ASSERT(false); // It should always be in the table. return false; } SpaceTreeTree::SpaceTreeTree(): SpaceTree(false) { for (unsigned i = 0; i < 256; i++) tree[i] = 0; } SpaceTreeTree::~SpaceTreeTree() { for (unsigned i = 0; i < 256; i++) { if (tree[i] && ! tree[i]->isSpace) delete(tree[i]); } } // Add and remove entries in the space tree. void MemMgr::AddTree(MemSpace *space, PolyWord *startS, PolyWord *endS) { // It isn't clear we need to lock here but it's probably sensible. PLocker lock(&spaceTreeLock); AddTreeRange(&spaceTree, space, (uintptr_t)startS, (uintptr_t)endS); } void MemMgr::RemoveTree(MemSpace *space, PolyWord *startS, PolyWord *endS) { PLocker lock(&spaceTreeLock); RemoveTreeRange(&spaceTree, space, (uintptr_t)startS, (uintptr_t)endS); } void MemMgr::AddTreeRange(SpaceTree **tt, MemSpace *space, uintptr_t startS, uintptr_t endS) { if (*tt == 0) *tt = new SpaceTreeTree; ASSERT(! (*tt)->isSpace); SpaceTreeTree *t = (SpaceTreeTree*)*tt; const unsigned shift = (sizeof(void*)-1) * 8; // Takes the high-order byte uintptr_t r = startS >> shift; ASSERT(r < 256); const uintptr_t s = endS == 0 ? 256 : endS >> shift; ASSERT(s >= r && s <= 256); if (r == s) // Wholly within this entry AddTreeRange(&(t->tree[r]), space, startS << 8, endS << 8); else { // Deal with any remainder at the start. if ((r << shift) != startS) { AddTreeRange(&(t->tree[r]), space, startS << 8, 0 /*End of range*/); r++; } // Whole entries. while (r < s) { ASSERT(t->tree[r] == 0); t->tree[r] = space; r++; } // Remainder at the end. if ((s << shift) != endS) AddTreeRange(&(t->tree[r]), space, 0, endS << 8); } } // Remove an entry from the tree for a range. Strictly speaking we don't need the // space argument here but it's useful as a check. // This may be called to remove a partially installed structure if we have // run out of space in AddTreeRange. void MemMgr::RemoveTreeRange(SpaceTree **tt, MemSpace *space, uintptr_t startS, uintptr_t endS) { SpaceTreeTree *t = (SpaceTreeTree*)*tt; if (t == 0) return; // This can only occur if we're recovering. ASSERT(! t->isSpace); const unsigned shift = (sizeof(void*)-1) * 8; uintptr_t r = startS >> shift; const uintptr_t s = endS == 0 ? 256 : endS >> shift; if (r == s) RemoveTreeRange(&(t->tree[r]), space, startS << 8, endS << 8); else { // Deal with any remainder at the start. if ((r << shift) != startS) { RemoveTreeRange(&(t->tree[r]), space, startS << 8, 0); r++; } // Whole entries. while (r < s) { ASSERT(t->tree[r] == space || t->tree[r] == 0 /* Recovery only */); t->tree[r] = 0; r++; } // Remainder at the end. if ((s << shift) != endS) RemoveTreeRange(&(t->tree[r]), space, 0, endS << 8); } // See if the whole vector is now empty. for (unsigned j = 0; j < 256; j++) { if (t->tree[j]) return; // It's not empty - we're done. } delete(t); *tt = 0; } POLYUNSIGNED MemMgr::AllocatedInAlloc() { POLYUNSIGNED inAlloc = 0; for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) { LocalMemSpace *sp = *i; if (sp->allocationSpace) inAlloc += sp->allocatedSpace(); } return inAlloc; } // Report heap sizes and occupancy before and after GC void MemMgr::ReportHeapSizes(const char *phase) { POLYUNSIGNED alloc = 0, nonAlloc = 0, inAlloc = 0, inNonAlloc = 0; for (std::vector::iterator i = lSpaces.begin(); i < lSpaces.end(); i++) { LocalMemSpace *sp = *i; if (sp->allocationSpace) { alloc += sp->spaceSize(); inAlloc += sp->allocatedSpace(); } else { nonAlloc += sp->spaceSize(); inNonAlloc += sp->allocatedSpace(); } } Log("Heap: %s Major heap used ", phase); LogSize(inNonAlloc); Log(" of "); LogSize(nonAlloc); Log(" (%1.0f%%). Alloc space used ", (float)inNonAlloc / (float)nonAlloc * 100.0F); LogSize(inAlloc); Log(" of "); LogSize(alloc); Log(" (%1.0f%%). Total space ", (float)inAlloc / (float)alloc * 100.0F); LogSize(spaceForHeap); Log(" %1.0f%% full.\n", (float)(inAlloc + inNonAlloc) / (float)spaceForHeap * 100.0F); Log("Heap: Local spaces %u, permanent spaces %u, code spaces %u, stack spaces %u\n", lSpaces.size(), pSpaces.size(), cSpaces.size(), sSpaces.size()); POLYUNSIGNED cTotal = 0, cOccupied = 0; for (std::vector::iterator c = cSpaces.begin(); c != cSpaces.end(); c++) { cTotal += (*c)->spaceSize(); PolyWord *pt = (*c)->bottom; while (pt < (*c)->top) { pt++; PolyObject *obj = (PolyObject*)pt; if (obj->ContainsForwardingPtr()) { obj = obj->FollowForwardingChain(); pt += obj->Length(); } else { if (obj->IsCodeObject()) cOccupied += obj->Length() + 1; pt += obj->Length(); } } } Log("Heap: Code area: total "); LogSize(cTotal); Log(" occupied: "); LogSize(cOccupied); Log("\n"); POLYUNSIGNED stackSpace = 0; for (std::vector::iterator s = sSpaces.begin(); s != sSpaces.end(); s++) { stackSpace += (*s)->spaceSize(); } Log("Heap: Stack area: total "); LogSize(stackSpace); Log("\n"); } // Profiling - Find a code object or return zero if not found. // This can be called on a "user" thread. PolyObject *MemMgr::FindCodeObject(const byte *addr) { MemSpace *space = SpaceForAddress(addr); if (space == 0) return 0; Bitmap *profMap = 0; if (! space->isCode) return 0; if (space->spaceType == ST_CODE) { CodeSpace *cSpace = (CodeSpace*)space; profMap = &cSpace->headerMap; } else if (space->spaceType == ST_PERMANENT) { PermanentMemSpace *pSpace = (PermanentMemSpace*)space; profMap = &pSpace->profileCode; } else return 0; // Must be in code or permanent code. // For the permanent areas the header maps are created and initialised on demand. if (! profMap->Created()) { PLocker lock(&codeBitmapLock); if (! profMap->Created()) // Second check now we've got the lock. { // Create the bitmap. If it failed just say "not in this area" if (! profMap->Create(space->spaceSize())) return 0; // Set the first bit before releasing the lock. profMap->SetBit(0); } } // A bit is set if it is a length word. while ((POLYUNSIGNED)addr & (sizeof(POLYUNSIGNED)-1)) addr--; // Make it word aligned PolyWord *wordAddr = (PolyWord*)addr; // Work back to find the first set bit before this. // Normally we will find one but if we're looking up a value that // is actually an integer it might be in a piece of code that is now free. POLYUNSIGNED bitOffset = profMap->FindLastSet(wordAddr - space->bottom); if (space->spaceType == ST_CODE) { PolyWord *ptr = space->bottom+bitOffset; if (ptr >= space->top) return 0; // This will find the last non-free code cell or the first cell. // Return zero if the value was not actually in the cell or it wasn't code. PolyObject *obj = (PolyObject*)(ptr+1); PolyObject *lastObj = obj->FollowForwardingChain(); // We normally replace forwarding pointers but when scanning to update // addresses after a saved state we may not have yet done that. if (wordAddr > ptr && wordAddr < ptr + 1 + lastObj->Length() && lastObj->IsCodeObject()) return obj; else return 0; } // Permanent area - the bits are set on demand. // Now work forward, setting any bits if necessary. We don't need a lock // because this is monotonic. for (;;) { PolyWord *ptr = space->bottom+bitOffset; if (ptr >= space->top) return 0; PolyObject *obj = (PolyObject*)(ptr+1); ASSERT(obj->ContainsNormalLengthWord()); if (wordAddr > ptr && wordAddr < ptr + obj->Length()) return obj; bitOffset += obj->Length()+1; profMap->SetBit(bitOffset); } return 0; } // Remove profiling bitmaps from permanent areas to free up memory. void MemMgr::RemoveProfilingBitmaps() { for (std::vector::iterator i = pSpaces.begin(); i < pSpaces.end(); i++) (*i)->profileCode.Destroy(); } MemMgr gMem; // The one and only memory manager object polyml-5.7.1/libpolyml/check_objects.h0000644000175000017500000000321013204034553016735 0ustar daviddavid/* Title: check_objects.h - Validate addresses in objects. Copyright (c) 2006, 2012 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef CHECK_OBJECTS_INCLUDED #define CHECK_OBJECTS_INCLUDED #include "globals.h" #include "diagnostics.h" // For userOptions extern void DoCheck (const PolyWord pt); extern void DoCheckPointer (const PolyWord pt); extern void DoCheckObject (const PolyObject *base, POLYUNSIGNED lengthWord); extern void DoCheckMemory(void); #define Check(pt) {if (debugOptions & DEBUG_CHECK_OBJECTS) DoCheck(pt); } #define CheckObject(pt) {if (debugOptions & DEBUG_CHECK_OBJECTS) DoCheckObject(pt, (pt)->LengthWord()); } #define CheckObjectL(pt, l) {if (debugOptions & DEBUG_CHECK_OBJECTS) DoCheckObject(pt, l); } #define CheckPointer(pt) {if (debugOptions & DEBUG_CHECK_OBJECTS) DoCheckPointer(pt); } #define CheckMemory() { if (debugOptions & DEBUG_CHECK_OBJECTS) DoCheckMemory(); } #endif polyml-5.7.1/libpolyml/pecoffexport.cpp0000644000175000017500000003502513204034553017217 0ustar daviddavid/* Title: Export memory as a PE/COFF object Author: David C. J. Matthews. Copyright (c) 2006, 2011, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #include #include #ifdef HAVE_STDDEF_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #endif #include #include "globals.h" #include "pecoffexport.h" #include "machine_dep.h" #include "scanaddrs.h" #include "run_time.h" #include "../polyexports.h" #include "version.h" #include "polystring.h" #include "timing.h" #ifdef _DEBUG /* MS C defines _DEBUG for debug builds. */ #define DEBUG #endif #ifdef DEBUG #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #if (SIZEOF_VOIDP == 8) #define DIRECT_WORD_RELOCATION IMAGE_REL_AMD64_ADDR64 #define RELATIVE_32BIT_RELOCATION IMAGE_REL_AMD64_REL32 #else #define DIRECT_WORD_RELOCATION IMAGE_REL_I386_DIR32 #define RELATIVE_32BIT_RELOCATION IMAGE_REL_I386_REL32 #endif void PECOFFExport::addExternalReference(void *relocAddr, const char *name) { externTable.makeEntry(name); IMAGE_RELOCATION reloc; // Set the offset within the section we're scanning. setRelocationAddress(relocAddr, &reloc.VirtualAddress); reloc.SymbolTableIndex = symbolNum++; reloc.Type = DIRECT_WORD_RELOCATION; fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } // Generate the address relative to the start of the segment. void PECOFFExport::setRelocationAddress(void *p, DWORD *reloc) { unsigned area = findArea(p); DWORD offset = (DWORD)((char*)p - (char*)memTable[area].mtAddr); *reloc = offset; } // Create a relocation entry for an address at a given location. PolyWord PECOFFExport::createRelocation(PolyWord p, void *relocAddr) { IMAGE_RELOCATION reloc; // Set the offset within the section we're scanning. setRelocationAddress(relocAddr, &reloc.VirtualAddress); void *addr = p.AsAddress(); unsigned addrArea = findArea(addr); POLYUNSIGNED offset = (char*)addr - (char*)memTable[addrArea].mtAddr; reloc.SymbolTableIndex = addrArea; reloc.Type = DIRECT_WORD_RELOCATION; fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; return PolyWord::FromUnsigned(offset); } #ifdef SYMBOLS_REQUIRE_UNDERSCORE #define POLY_PREFIX_STRING "_" #else #define POLY_PREFIX_STRING "" #endif void PECOFFExport::writeSymbol(const char *symbolName, __int32 value, int section, bool isExtern, int symType) { // On X86/32 we have to add an underscore to external symbols TempCString fullSymbol; fullSymbol = (char*)malloc(strlen(POLY_PREFIX_STRING) + strlen(symbolName) + 1); if (fullSymbol == 0) throw MemoryException(); sprintf(fullSymbol, "%s%s", POLY_PREFIX_STRING, symbolName); IMAGE_SYMBOL symbol; memset(&symbol, 0, sizeof(symbol)); // Zero the unused part of the string // Short symbol names go in the entry, longer ones go in the string table. if (strlen(fullSymbol) <= 8) strcat((char*)symbol.N.ShortName, fullSymbol); else { symbol.N.Name.Short = 0; // We have to add 4 bytes because the first word written to the file is a length word. symbol.N.Name.Long = stringTable.makeEntry(fullSymbol) + sizeof(unsigned); } symbol.Value = value; symbol.SectionNumber = section; symbol.Type = symType; symbol.StorageClass = isExtern ? IMAGE_SYM_CLASS_EXTERNAL : IMAGE_SYM_CLASS_STATIC; fwrite(&symbol, sizeof(symbol), 1, exportFile); } /* This is called for each constant within the code. Print a relocation entry for the word and return a value that means that the offset is saved in original word. */ void PECOFFExport::ScanConstant(PolyObject *base, byte *addr, ScanRelocationKind code) { IMAGE_RELOCATION reloc; PolyWord p = GetConstantValue(addr, code); if (IS_INT(p) || p == PolyWord::FromUnsigned(0)) return; void *a = p.AsAddress(); unsigned aArea = findArea(a); // We don't need a relocation if this is relative to the current segment // since the relative address will already be right. if (code == PROCESS_RELOC_I386RELATIVE && aArea == findArea(addr)) return; setRelocationAddress(addr, &reloc.VirtualAddress); // Set the value at the address to the offset relative to the symbol. POLYUNSIGNED offset = (char*)a - (char*)memTable[aArea].mtAddr; reloc.SymbolTableIndex = aArea; // The value we store here is the offset whichever relocation method // we're using. unsigned maxSize = code == PROCESS_RELOC_I386RELATIVE ? 4: sizeof(PolyWord); for (unsigned i = 0; i < maxSize; i++) { addr[i] = (byte)(offset & 0xff); offset >>= 8; } if (code == PROCESS_RELOC_I386RELATIVE) reloc.Type = RELATIVE_32BIT_RELOCATION; else reloc.Type = DIRECT_WORD_RELOCATION; fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } // Set the file alignment. void PECOFFExport::alignFile(int align) { char pad[32] = {0}; // Maximum alignment int offset = ftell(exportFile); if ((offset % align) == 0) return; fwrite(&pad, align - (offset % align), 1, exportFile); } void PECOFFExport::exportStore(void) { PolyWord *p; IMAGE_FILE_HEADER fhdr; IMAGE_SECTION_HEADER *sections = 0; IMAGE_RELOCATION reloc; unsigned i; // These are written out as the description of the data. exportDescription exports; time_t now = getBuildTime(); sections = new IMAGE_SECTION_HEADER [memTableEntries+1]; // Plus one for the tables. // Write out initial values for the headers. These are overwritten at the end. // File header memset(&fhdr, 0, sizeof(fhdr)); #if (SIZEOF_VOIDP == 8) fhdr.Machine = IMAGE_FILE_MACHINE_AMD64; // x86-64 #else fhdr.Machine = IMAGE_FILE_MACHINE_I386; // i386 #endif fhdr.NumberOfSections = memTableEntries+1; // One for each area plus one for the tables. fhdr.TimeDateStamp = (DWORD)now; //fhdr.NumberOfSymbols = memTableEntries+1; // One for each area plus "poly_exports" fwrite(&fhdr, sizeof(fhdr), 1, exportFile); // Write it for the moment. // External symbols are added after the memory table entries and "poly_exports". symbolNum = memTableEntries+1; // The first external symbol // Section headers. for (i = 0; i < memTableEntries; i++) { memset(§ions[i], 0, sizeof(IMAGE_SECTION_HEADER)); sections[i].SizeOfRawData = (DWORD)memTable[i].mtLength; sections[i].Characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_ALIGN_8BYTES; if (memTable[i].mtFlags & MTF_WRITEABLE) { // Mutable data ASSERT(!(memTable[i].mtFlags & MTF_EXECUTABLE)); // Executable areas can't be writable. strcpy((char*)sections[i].Name, ".data"); sections[i].Characteristics |= IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_INITIALIZED_DATA; } else if (memTable[i].mtFlags & MTF_EXECUTABLE) { // Immutable data areas are marked as executable. strcpy((char*)sections[i].Name, ".text"); sections[i].Characteristics |= IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_CNT_CODE; } else { // Immutable data areas are marked as executable. strcpy((char*)sections[i].Name, ".rdata"); sections[i].Characteristics |= IMAGE_SCN_CNT_INITIALIZED_DATA; } } // Extra section for the tables. memset(§ions[memTableEntries], 0, sizeof(IMAGE_SECTION_HEADER)); sprintf((char*)sections[memTableEntries].Name, ".data"); sections[memTableEntries].SizeOfRawData = sizeof(exports) + (memTableEntries+1)*sizeof(memoryTableEntry); // Don't need write access here but keep it for consistency with other .data sections sections[memTableEntries].Characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_ALIGN_8BYTES | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_INITIALIZED_DATA; fwrite(sections, sizeof(IMAGE_SECTION_HEADER), memTableEntries+1, exportFile); // Write it for the moment. for (i = 0; i < memTableEntries; i++) { // Relocations. The first entry is special and is only used if // we have more than 64k relocations. It contains the number of relocations but is // otherwise ignored. sections[i].PointerToRelocations = ftell(exportFile); memset(&reloc, 0, sizeof(reloc)); fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount = 1; // Create the relocation table and turn all addresses into offsets. char *start = (char*)memTable[i].mtAddr; char *end = start + memTable[i].mtLength; for (p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); // Update any constants before processing the object // We need that for relative jumps/calls in X86/64. if (length != 0 && obj->IsCodeObject()) machineDependent->ScanConstantsWithinCode(obj, this); relocateObject(obj); p += length; } // If there are more than 64k relocations set this bit and set the value to 64k-1. if (relocationCount >= 65535) { sections[i].NumberOfRelocations = 65535; sections[i].Characteristics |= IMAGE_SCN_LNK_NRELOC_OVFL; // We have to go back and patch up the first (dummy) relocation entry // which contains the count. fseek(exportFile, sections[i].PointerToRelocations, SEEK_SET); memset(&reloc, 0, sizeof(reloc)); reloc.VirtualAddress = relocationCount; fwrite(&reloc, sizeof(reloc), 1, exportFile); fseek(exportFile, 0, SEEK_END); // Return to the end of the file. } else sections[i].NumberOfRelocations = relocationCount; } // We don't need to handle relocation overflow here. sections[memTableEntries].PointerToRelocations = ftell(exportFile); relocationCount = 0; // Relocations for "exports" and "memTable"; // Address of "memTable" within "exports". We can't use createRelocation because // the position of the relocation is not in either the mutable or the immutable area. reloc.Type = DIRECT_WORD_RELOCATION; reloc.SymbolTableIndex = memTableEntries; // Relative to poly_exports reloc.VirtualAddress = offsetof(exportDescription, memTable); fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; // Address of "rootFunction" within "exports" reloc.Type = DIRECT_WORD_RELOCATION; unsigned rootAddrArea = findArea(rootFunction); reloc.SymbolTableIndex = rootAddrArea; reloc.VirtualAddress = offsetof(exportDescription, rootFunction); fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; for (i = 0; i < memTableEntries; i++) { reloc.Type = DIRECT_WORD_RELOCATION; reloc.SymbolTableIndex = i; // Relative to base symbol reloc.VirtualAddress = sizeof(exportDescription) + i * sizeof(memoryTableEntry) + offsetof(memoryTableEntry, mtAddr); fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } ASSERT(relocationCount < 65535); // Shouldn't get overflow!! sections[memTableEntries].NumberOfRelocations = relocationCount; // Now the binary data. for (i = 0; i < memTableEntries; i++) { sections[i].PointerToRawData = ftell(exportFile); fwrite(memTable[i].mtAddr, 1, memTable[i].mtLength, exportFile); } sections[memTableEntries].PointerToRawData = ftell(exportFile); memset(&exports, 0, sizeof(exports)); exports.structLength = sizeof(exportDescription); exports.memTableSize = sizeof(memoryTableEntry); exports.memTableEntries = memTableEntries; exports.memTable = (memoryTableEntry *)sizeof(exports); // It follows immediately after this. exports.rootFunction = (void*)((char*)rootFunction - (char*)memTable[rootAddrArea].mtAddr); exports.timeStamp = now; exports.architecture = machineDependent->MachineArchitecture(); exports.rtsVersion = POLY_version_number; // Set the address values to zero before we write. They will always // be relative to their base symbol. for (i = 0; i < memTableEntries; i++) memTable[i].mtAddr = 0; fwrite(&exports, sizeof(exports), 1, exportFile); fwrite(memTable, sizeof(memoryTableEntry), memTableEntries, exportFile); // First the symbol table. We have one entry for the exports and an additional // entry for each of the sections. fhdr.PointerToSymbolTable = ftell(exportFile); // The section numbers are one-based. Zero indicates the "common" area. // First write symbols for each section and for poly_exports. for (i = 0; i < memTableEntries; i++) { char buff[50]; sprintf(buff, "area%0d", i); writeSymbol(buff, 0, i+1, false); } // Exported symbol for table. writeSymbol("poly_exports", 0, memTableEntries+1, true); // External references. for (unsigned i = 0; i < externTable.stringSize; i += (unsigned)strlen(externTable.strings+i) + 1) writeSymbol(externTable.strings+i, 0, 0, true, 0x20); fhdr.NumberOfSymbols = symbolNum; // The string table is written immediately after the symbols. // The length is included as the first word. unsigned strSize = stringTable.stringSize + sizeof(unsigned); fwrite(&strSize, sizeof(strSize), 1, exportFile); fwrite(stringTable.strings, stringTable.stringSize, 1, exportFile); // Rewind to rewrite the headers. fseek(exportFile, 0, SEEK_SET); fwrite(&fhdr, sizeof(fhdr), 1, exportFile); fwrite(sections, sizeof(IMAGE_SECTION_HEADER), memTableEntries+1, exportFile); fclose(exportFile); exportFile = NULL; delete[](sections); } polyml-5.7.1/libpolyml/profiling.cpp0000644000175000017500000004306313204034553016505 0ustar daviddavid/* Title: Profiling Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development copyright (c) David C.J. Matthews 2011, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #include "globals.h" #include "arb.h" #include "processes.h" #include "polystring.h" #include "profiling.h" #include "save_vec.h" #include "rts_module.h" #include "memmgr.h" #include "scanaddrs.h" #include "locking.h" #include "run_time.h" #include "sys.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyProfiling(PolyObject *threadId, PolyWord mode); } static POLYUNSIGNED mainThreadCounts[MTP_MAXENTRY]; static const char* const mainThreadText[MTP_MAXENTRY] = { "UNKNOWN", "GARBAGE COLLECTION (sharing phase)", "GARBAGE COLLECTION (mark phase)", "GARBAGE COLLECTION (copy phase)", "GARBAGE COLLECTION (update phase)", "GARBAGE COLLECTION (minor collection)", "Common data sharing", "Exporting", "Saving state", "Loading saved state", "Profiling", "Setting signal handler", "Cygwin spawn", "Storing module", "Loading module" }; // Entries for store profiling enum _extraStore { EST_CODE = 0, EST_STRING, EST_BYTE, EST_WORD, EST_MUTABLE, EST_MUTABLEBYTE, EST_MAX_ENTRY }; static POLYUNSIGNED extraStoreCounts[EST_MAX_ENTRY]; static const char * const extraStoreText[EST_MAX_ENTRY] = { "Function code", "Strings", "Byte data (long precision ints etc)", "Unidentified word data", "Unidentified mutable data", "Mutable byte data (profiling counts)" }; // Poly strings for "standard" counts. These are generated from the C strings // above the first time profiling is activated. static PolyWord psRTSString[MTP_MAXENTRY], psExtraStrings[EST_MAX_ENTRY], psGCTotal; ProfileMode profileMode; // If we are just profiling a single thread, this is the thread data. static TaskData *singleThreadProfile = 0; typedef struct _PROFENTRY { POLYUNSIGNED count; PolyWord functionName; struct _PROFENTRY *nextEntry; } PROFENTRY, *PPROFENTRY; class ProfileRequest: public MainThreadRequest { public: ProfileRequest(unsigned prof, TaskData *pTask): MainThreadRequest(MTP_PROFILING), mode(prof), pCallingThread(pTask), pTab(0), errorMessage(0) {} ~ProfileRequest(); virtual void Perform(); Handle extractAsList(TaskData *taskData); private: void getResults(void); void getProfileResults(PolyWord *bottom, PolyWord *top); PPROFENTRY newProfileEntry(void); private: unsigned mode; TaskData *pCallingThread; PPROFENTRY pTab; public: const char *errorMessage; }; ProfileRequest::~ProfileRequest() { PPROFENTRY p = pTab; while (p != 0) { PPROFENTRY toFree = p; p = p->nextEntry; free(toFree); } } // Lock to serialise updates of counts. Only used during update. // Not required when we print the counts since there's only one thread // running then. static PLock countLock; // Get the profile object associated with a piece of code. Returns null if // there isn't one, in particular if this is in the old format. static PolyObject *getProfileObjectForCode(PolyObject *code) { ASSERT(code->IsCodeObject()); PolyWord *consts; POLYUNSIGNED constCount; code->GetConstSegmentForCode(consts, constCount); if (constCount < 3 || ! consts[2].IsDataPtr()) return 0; PolyObject *profObject = consts[2].AsObjPtr(); if (profObject->IsMutable() && profObject->IsByteObject() && profObject->Length() == 1) return profObject; else return 0; } // Adds incr to the profile count for the function pointed at by // pc or by one of its callers. // This is called from a signal handler in the case of time profiling. void add_count(TaskData *taskData, POLYCODEPTR fpc, POLYUNSIGNED incr) { // Check that the pc value is within the heap. It could be // in the assembly code. PolyObject *codeObj = gMem.FindCodeObject(fpc); if (codeObj) { PolyObject *profObject = getProfileObjectForCode(codeObj); PLocker locker(&countLock); if (profObject) profObject->Set(0, PolyWord::FromUnsigned(profObject->Get(0).AsUnsigned() + incr)); return; } // Didn't find it. { PLocker locker(&countLock); mainThreadCounts[MTP_USER_CODE] += incr; } } // newProfileEntry - Make a new entry in the list PPROFENTRY ProfileRequest::newProfileEntry(void) { PPROFENTRY newEntry = (PPROFENTRY)malloc(sizeof(PROFENTRY)); if (newEntry == 0) { errorMessage = "Insufficient memory"; return 0; } newEntry->nextEntry = pTab; pTab = newEntry; return newEntry; } // We don't use ScanAddress here because we're only interested in the // objects themselves not the addresses in them. // We have to build the list of results in C memory rather than directly in // ML memory because we can't allocate in ML memory in the root thread. void ProfileRequest::getProfileResults(PolyWord *bottom, PolyWord *top) { PolyWord *ptr = bottom; while (ptr < top) { ptr++; // Skip the length word PolyObject *obj = (PolyObject*)ptr; if (obj->ContainsForwardingPtr()) { // This used to be necessary when code objects were held in the // general heap. Now that we only ever scan code and permanent // areas it's probably not needed. while (obj->ContainsForwardingPtr()) obj = obj->GetForwardingPtr(); ASSERT(obj->ContainsNormalLengthWord()); ptr += obj->Length(); } else { ASSERT(obj->ContainsNormalLengthWord()); if (obj->IsCodeObject()) { PolyWord *firstConstant = obj->ConstPtrForCode(); PolyWord name = firstConstant[0]; PolyObject *profCount = getProfileObjectForCode(obj); if (profCount) { POLYUNSIGNED count = profCount->Get(0).AsUnsigned(); if (count != 0) { if (name != TAGGED(0)) { PPROFENTRY pEnt = newProfileEntry(); if (pEnt == 0) return; pEnt->count = count; pEnt->functionName = name; } profCount->Set(0, PolyWord::FromUnsigned(0)); } } } /* code object */ ptr += obj->Length(); } /* else */ } /* while */ } void ProfileRequest::getResults(void) // Print profiling information and reset profile counts. { for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { MemSpace *space = *i; // Permanent areas are filled with objects from the bottom. getProfileResults(space->bottom, space->top); // Bottom to top } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; getProfileResults(space->bottom, space->top); } { POLYUNSIGNED gc_count = mainThreadCounts[MTP_GCPHASESHARING]+ mainThreadCounts[MTP_GCPHASEMARK]+ mainThreadCounts[MTP_GCPHASECOMPACT] + mainThreadCounts[MTP_GCPHASEUPDATE] + mainThreadCounts[MTP_GCQUICK]; if (gc_count) { PPROFENTRY pEnt = newProfileEntry(); if (pEnt == 0) return; // Report insufficient memory? pEnt->count = gc_count; pEnt->functionName = psGCTotal; } } for (unsigned k = 0; k < MTP_MAXENTRY; k++) { if (mainThreadCounts[k]) { PPROFENTRY pEnt = newProfileEntry(); if (pEnt == 0) return; // Report insufficient memory? pEnt->count = mainThreadCounts[k]; pEnt->functionName = psRTSString[k]; mainThreadCounts[k] = 0; } } for (unsigned l = 0; l < EST_MAX_ENTRY; l++) { if (extraStoreCounts[l]) { PPROFENTRY pEnt = newProfileEntry(); if (pEnt == 0) return; // Report insufficient memory? pEnt->count = extraStoreCounts[l]; pEnt->functionName = psExtraStrings[l]; extraStoreCounts[l] = 0; } } } // Extract the accumulated results as an ML list of pairs of the count and the string. Handle ProfileRequest::extractAsList(TaskData *taskData) { Handle saved = taskData->saveVec.mark(); Handle list = taskData->saveVec.push(ListNull); for (PPROFENTRY p = pTab; p != 0; p = p->nextEntry) { Handle pair = alloc_and_save(taskData, 2); Handle countValue = Make_arbitrary_precision(taskData, p->count); pair->WordP()->Set(0, countValue->Word()); pair->WordP()->Set(1, p->functionName); Handle next = alloc_and_save(taskData, sizeof(ML_Cons_Cell) / sizeof(PolyWord)); DEREFLISTHANDLE(next)->h = pair->Word(); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); taskData->saveVec.reset(saved); list = taskData->saveVec.push(next->Word()); } return list; } void handleProfileTrap(TaskData *taskData, SIGNALCONTEXT *context) { if (singleThreadProfile != 0 && singleThreadProfile != taskData) return; /* If we are in the garbage-collector add the count to "gc_count" otherwise try to find out where we are. */ if (mainThreadPhase == MTP_USER_CODE) { if (taskData == 0 || ! taskData->AddTimeProfileCount(context)) mainThreadCounts[MTP_USER_CODE]++; // On Mac OS X all virtual timer interrupts seem to be directed to the root thread // so all the counts will be "unknown". } else mainThreadCounts[mainThreadPhase]++; } // Called from the GC when allocation profiling is on. void AddObjectProfile(PolyObject *obj) { ASSERT(obj->ContainsNormalLengthWord()); POLYUNSIGNED length = obj->Length(); if (obj->IsWordObject() && OBJ_HAS_PROFILE(obj->LengthWord())) { // It has a profile pointer. The last word should point to the // closure or code of the allocating function. Add the size of this to the count. ASSERT(length != 0); PolyWord profWord = obj->Get(length-1); ASSERT(profWord.IsDataPtr()); PolyObject *profObject = profWord.AsObjPtr(); ASSERT(profObject->IsMutable() && profObject->IsByteObject() && profObject->Length() == 1); profObject->Set(0, PolyWord::FromUnsigned(profObject->Get(0).AsUnsigned() + length + 1)); } // If it doesn't have a profile pointer add it to the appropriate count. else if (obj->IsMutable()) { if (obj->IsByteObject()) extraStoreCounts[EST_MUTABLEBYTE] += length+1; else extraStoreCounts[EST_MUTABLE] += length+1; } else if (obj->IsCodeObject()) extraStoreCounts[EST_CODE] += length+1; else if (obj->IsByteObject()) { // Try to separate strings from other byte data. This is only // approximate. if (OBJ_IS_NEGATIVE(obj->LengthWord())) extraStoreCounts[EST_BYTE] += length+1; else { PolyStringObject *possString = (PolyStringObject*)obj; POLYUNSIGNED bytes = length * sizeof(PolyWord); // If the length of the string as given in the first word is sufficient // to fit in the exact number of words then it's probably a string. if (length >= 2 && possString->length <= bytes - sizeof(POLYUNSIGNED) && possString->length > bytes - 2 * sizeof(POLYUNSIGNED)) extraStoreCounts[EST_STRING] += length+1; else { extraStoreCounts[EST_BYTE] += length+1; } } } else extraStoreCounts[EST_WORD] += length+1; } // Called from ML to control profiling. static Handle profilerc(TaskData *taskData, Handle mode_handle) /* Profiler - generates statistical profiles of the code. The parameter is an integer which determines the value to be profiled. When profiler is called it always resets the profiling and prints out any values which have been accumulated. If the parameter is 0 this is all it does, if the parameter is 1 then it produces time profiling, if the parameter is 2 it produces store profiling. 3 - arbitrary precision emulation traps. */ { unsigned mode = get_C_unsigned(taskData, DEREFWORDHANDLE(mode_handle)); { // Create any strings we need. We only need to do this once but // it must be done by a non-root thread since it needs a taskData object. // Don't bother locking. At worst we'll create some garbage. for (unsigned k = 0; k < MTP_MAXENTRY; k++) { if (psRTSString[k] == TAGGED(0)) psRTSString[k] = C_string_to_Poly(taskData, mainThreadText[k]); } for (unsigned k = 0; k < EST_MAX_ENTRY; k++) { if (psExtraStrings[k] == TAGGED(0)) psExtraStrings[k] = C_string_to_Poly(taskData, extraStoreText[k]); } if (psGCTotal == TAGGED(0)) psGCTotal = C_string_to_Poly(taskData, "GARBAGE COLLECTION (total)"); } // All these actions are performed by the root thread. Only profile // printing needs to be performed with all the threads stopped but it's // simpler to serialise all requests. ProfileRequest request(mode, taskData); processes->MakeRootRequest(taskData, &request); if (request.errorMessage != 0) raise_exception_string(taskData, EXC_Fail, request.errorMessage); return request.extractAsList(taskData); } POLYUNSIGNED PolyProfiling(PolyObject *threadId, PolyWord mode) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedMode = taskData->saveVec.push(mode); Handle result = 0; try { result = profilerc(taskData, pushedMode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // This is called from the root thread when all the ML threads have been paused. void ProfileRequest::Perform() { if (mode != kProfileOff && profileMode != kProfileOff) { // Profiling must be stopped first. errorMessage = "Profiling is currently active"; return; } singleThreadProfile = 0; // Unless kProfileTimeThread is given this should be 0 switch (mode) { case kProfileOff: // Turn off old profiling mechanism and print out accumulated results profileMode = kProfileOff; processes->StopProfiling(); getResults(); // Remove all the bitmaps to free up memory gMem.RemoveProfilingBitmaps(); break; case kProfileTimeThread: singleThreadProfile = pCallingThread; // And drop through to kProfileTime case kProfileTime: profileMode = kProfileTime; processes->StartProfiling(); break; case kProfileStoreAllocation: profileMode = kProfileStoreAllocation; break; case kProfileEmulation: profileMode = kProfileEmulation; break; case kProfileLiveData: profileMode = kProfileLiveData; break; case kProfileLiveMutables: profileMode = kProfileLiveMutables; break; case kProfileMutexContention: profileMode = kProfileMutexContention; break; default: /* do nothing */ break; } } struct _entrypts profilingEPT[] = { // Profiling { "PolyProfiling", (polyRTSFunction)&PolyProfiling}, { NULL, NULL} // End of list. }; class Profiling: public RtsModule { public: virtual void Init(void); virtual void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static Profiling profileModule; void Profiling::Init(void) { // Reset profiling counts. profileMode = kProfileOff; for (unsigned k = 0; k < MTP_MAXENTRY; k++) mainThreadCounts[k] = 0; } void Profiling::GarbageCollect(ScanAddress *process) { // Process any strings in the table. for (unsigned k = 0; k < MTP_MAXENTRY; k++) process->ScanRuntimeWord(&psRTSString[k]); for (unsigned k = 0; k < EST_MAX_ENTRY; k++) process->ScanRuntimeWord(&psExtraStrings[k]); process->ScanRuntimeWord(&psGCTotal); } polyml-5.7.1/libpolyml/save_vec.cpp0000644000175000017500000000455513204034553016312 0ustar daviddavid/* Title: save_vec.cpp - The save vector holds temporary values that may move as the result of a garbage collection. Copyright (c) 2006, 2010 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "save_vec.h" #include "check_objects.h" #include "scanaddrs.h" #include "memmgr.h" #define SVEC_SIZE 1000 SaveVec::SaveVec() { save_vec = new SaveVecEntry[SVEC_SIZE]; save_vec_addr = save_vec; } SaveVec::~SaveVec() { delete[](save_vec); } // DCJM - I've used this in a few cases where we iterate over a list // and want to avoid overflowing the save vec. I've assumed that simply // resetting the list doesn't actually destroy the entry on the save vec // and it's safe to still use it provided that doesn't result in allocation. void SaveVec::reset(Handle old_value) { ASSERT(old_value >= save_vec && old_value <= save_vec_addr); save_vec_addr = old_value; } Handle SaveVec::push(PolyWord valu) /* Push a PolyWord onto the save vec. */ { ASSERT(save_vec_addr < save_vec+SVEC_SIZE); Check(valu); *save_vec_addr = SaveVecEntry(valu); return save_vec_addr++; } void SaveVec::gcScan(ScanAddress *process) /* Ensures that all the objects are retained and their addresses updated. */ { for (Handle sv = save_vec; sv < save_vec_addr; sv++) process->ScanRuntimeWord(&sv->m_Handle); } // We just have one of these. static SaveVec save; SaveVec *gSaveVec = &save; polyml-5.7.1/libpolyml/gc.h0000644000175000017500000000355413204034553014553 0ustar daviddavid/* Title: gc.h - exports signature for gc.cpp Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2010 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef GC_H_INCLUDED #define GC_H_INCLUDED #include "globals.h" // For POLYUNSIGNED class TaskData; // Make a request for a full garbage collection. extern void FullGC(TaskData *taskData); // Make a request for a partial garbage collection. extern bool QuickGC(TaskData *taskData, POLYUNSIGNED words_needed); extern void CreateHeap(); extern void FullGCForShareCommonData(void); extern bool convertedWeak; // Multi-thread GC. extern void initialiseMarkerTables(); // The task farm for the GC. The threads are left waiting for the GC, class GCTaskFarm; extern GCTaskFarm *gpTaskFarm; extern void CopyObjectToNewAddress(PolyObject *srcAddress, PolyObject *destAddress, POLYUNSIGNED L); extern bool RunQuickGC(const POLYUNSIGNED wordsRequiredToAllocate); // GC Phases. extern void GCSharingPhase(void); extern void GCMarkPhase(void); extern void GCheckWeakRefs(void); extern void GCCopyPhase(void); extern void GCUpdatePhase(void); #endif polyml-5.7.1/libpolyml/gc_check_weak_ref.cpp0000644000175000017500000001365213204034553020106 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector - Check for weak references Copyright (c) 2010, 2012, 2015 David C. J. Matthews Based on the original garbage collector code Copyright 2000-2008 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is an intermediate phase in the GC that checks for weak references that are no longer reachable. It is performed after the first, mark, phase. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "gc.h" #include "scanaddrs.h" #include "rts_module.h" #include "memmgr.h" class MTGCCheckWeakRef: public ScanAddress { public: void ScanAreas(void); private: virtual void ScanRuntimeAddress(PolyObject **pt, RtsStrength weak); // This has to be defined since it's virtual. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } virtual void ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED lengthWord); }; // This deals with weak references within the run-time system. void MTGCCheckWeakRef::ScanRuntimeAddress(PolyObject **pt, RtsStrength weak) { /* If the object has not been marked and this is only a weak reference */ /* then the pointer is set to zero. This allows streams or windows */ /* to be closed if there is no other reference to them. */ PolyObject *val = *pt; PolyWord w = val; if (weak == STRENGTH_STRONG) return; LocalMemSpace *space = gMem.LocalSpaceForAddress(w.AsStackAddr()-1); if (space == 0) return; // Not in local area // If it hasn't been marked set it to zero. if (! space->bitmap.TestBit(space->wordNo(w.AsStackAddr()))) *pt = 0; } // Deal with weak objects void MTGCCheckWeakRef::ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED L) { if (! OBJ_IS_WEAKREF_OBJECT(L) || OBJ_IS_BYTE_OBJECT(L)) return; // Ignore Weak-Byte cells. ASSERT(OBJ_IS_MUTABLE_OBJECT(L)); // Should be a mutable. // See if any of the SOME objects contain unreferenced refs. POLYUNSIGNED length = OBJ_OBJECT_LENGTH(L); PolyWord *baseAddr = (PolyWord*)obj; for (POLYUNSIGNED i = 0; i < length; i++) { PolyWord someAddr = baseAddr[i]; if (someAddr.IsDataPtr()) { LocalMemSpace *someSpace = gMem.LocalSpaceForAddress(someAddr.AsStackAddr()-1); if (someSpace != 0) { PolyObject *someObj = someAddr.AsObjPtr(); // If this is a weak object the SOME value may refer to an unreferenced // ref. If so we have to set this entry to NONE. For safety we also // set the contents of the SOME to TAGGED(0). ASSERT(someObj->Length() == 1 && someObj->IsWordObject()); // Should be a SOME node. PolyWord refAddress = someObj->Get(0); bool deleteRef = false; if (refAddress.IsTagged()) // If we have the same SOME cell referenced in two different places // we will have overwritten the address with TAGGED(0) "For safety". // We still need to overwrite the new reference to the SOME cell. deleteRef = true; // We've overwritten it. else { // Usual case: the contents of the SOME cell is the address of a ref. LocalMemSpace *space = gMem.LocalSpaceForAddress(refAddress.AsStackAddr()); if (space != 0) // If the ref is permanent it's always there. { POLYUNSIGNED new_bitno = space->wordNo(refAddress.AsStackAddr()); // It wasn't marked so it's otherwise unreferenced. if (! space->bitmap.TestBit(new_bitno)) deleteRef = true; } } if (deleteRef) { baseAddr[i] = TAGGED(0); // Set it to NONE. someObj->Set(0, TAGGED(0)); // For safety. convertedWeak = true; } } } } } // We need to check any weak references both in the areas we are // currently collecting and any other areas. This actually checks // weak refs in the area we're collecting even if they are not // actually reachable any more. N.B. This differs from OpMutables // because it also scans the area we're collecting. void MTGCCheckWeakRef::ScanAreas(void) { for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; if (space->isMutable) ScanAddressesInRegion(space->lowestWeak, space->highestWeak); } // Scan the permanent mutable areas. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { MemSpace *space = *i; if (space->isMutable) ScanAddressesInRegion(space->lowestWeak, space->highestWeak); } } void GCheckWeakRefs() { MTGCCheckWeakRef checkRef; GCModules(&checkRef); checkRef.ScanAreas(); } polyml-5.7.1/libpolyml/rts_module.h0000644000175000017500000000251113204034553016327 0ustar daviddavid/* Title: rts_module.h - Base class for the run-time system modules. Copyright (c) 2006, 2011, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef RTS_MODULE_H_INCLUDED #define RTS_MODULE_H_INCLUDED class ScanAddress; class TaskData; class RtsModule { public: RtsModule() { RegisterModule(); } virtual ~RtsModule() {} // To keep GCC happy virtual void Init(void) {} virtual void Start(void) {} virtual void Stop(void) {} virtual void GarbageCollect(ScanAddress * /*process*/) {} private: void RegisterModule(void); }; void InitModules(void); void StartModules(void); void StopModules(void); void GCModules(ScanAddress *process); #endif polyml-5.7.1/libpolyml/sighandler.h0000644000175000017500000000277613204034553016307 0ustar daviddavid/* Title: sighandler.h Copyright (c) 2000-7, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _SIGHANDLER_H #define _SIGHANDLER_H 1 class TaskData; extern void markSignalInuse(int sig); #if (defined(_WIN32) && ! defined(__CYGWIN__)) extern void RequestConsoleInterrupt(void); #else #ifdef HAVE_SIGNAL_H #include #endif extern void init_asyncmask(sigset_t *mask); #define SIG_HANDLER_ARGS(_sig,_contxt) int _sig, siginfo_t *, void *_contxt typedef void (*signal_handler_type)(SIG_HANDLER_ARGS(s, c)); extern bool setSignalHandler(int sig, signal_handler_type func); // Set up per-thread signal data: basically signal stack. extern void initThreadSignals(TaskData *taskData); #endif /* ! _WIN32 */ extern unsigned receivedSignalCount; // Incremented each time we get a signal extern struct _entrypts sigHandlerEPT[]; #endif polyml-5.7.1/libpolyml/heapsizing.cpp0000644000175000017500000011024713204034553016654 0ustar daviddavid/* Title: heapsizing.cpp - parameters to adjust heap size Copyright (c) Copyright David C.J. Matthews 2012, 2015, 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This module is intended to deal with heap sizing based on measurements of the time taken in the GC compared with the application code. Currently it is very basic. This also provides GC timing information to the ML code as well as statistics and debugging. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_WINDOWS_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H #include // For sysconf #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SYSCTL_H #include #endif #ifdef HAVE_FLOAT_H #include #endif #ifdef HAVE_MATH_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "arb.h" #include "diagnostics.h" #include "rts_module.h" #include "timing.h" #include "heapsizing.h" #include "statistics.h" #include "memmgr.h" // The one and only parameter object HeapSizeParameters gHeapSizeParameters; #ifdef HAVE_WINDOWS_H // There's no (documented) way to get the per-process hard page // count in Windows. Cygwin uses GetProcessMemoryInfo to return the // value in ru_majflt but this is actually incorrect because it returns // the soft page count not the hard page count. We previously used the // undocumented NtQuerySystemInformation call. static long GetPaging(long) { return 0; } #else inline long GetPaging(long rusagePage) { return rusagePage; } #endif HeapSizeParameters::HeapSizeParameters() { startPF = GetPaging(0); fullGCNextTime = false; performSharingPass = false; lastAllocationSucceeded = true; allocationFailedBeforeLastMajorGC = false; minHeapSize = 0; maxHeapSize = 0; // Unlimited lastFreeSpace = 0; pagingLimitSize = 0; highWaterMark = 0; sharingWordsRecovered = 0; cumulativeSharingSaving = 0; // Initial values until we've actually done a sharing pass. sharingRecoveryRate = 0.5; // The structure sharing recovers half the heap. sharingCostFactor = 2; // It doubles the cost } // These macros were originally in globals.h and used more generally. // Since only K_to_words is used now this can be greatly simplified. #define BITSPERWORD (sizeof(PolyWord)*8) #define ROUNDUP_UNITS(m,n) (((m) + (n) - 1) / (n)) #define ROUNDUP(m,n) (ROUNDUP_UNITS(m,n) * (n)) #define K_to_words(k) ROUNDUP((k) * (1024 / sizeof(PolyWord)),BITSPERWORD) // Returns physical memory size in bytes static POLYUNSIGNED GetPhysicalMemorySize(void); // These are the maximum values for the number of words. #if (SIZEOF_VOIDP == 4) # define MAXIMUMADDRESS 0x3fffffff #else # define MAXIMUMADDRESS 0x1fffffffffffffff #endif // Set the initial size based on any parameters specified on the command line. // Any of these can be zero indicating they should default. void HeapSizeParameters::SetHeapParameters(POLYUNSIGNED minsize, POLYUNSIGNED maxsize, POLYUNSIGNED initialsize, unsigned percent) { minHeapSize = K_to_words(minsize); // If these overflow assume the result will be zero maxHeapSize = K_to_words(maxsize); POLYUNSIGNED initialSize = K_to_words(initialsize); POLYUNSIGNED memsize = GetPhysicalMemorySize() / sizeof(PolyWord); // If no maximum is given default it to 80% of the physical memory. // This allows some space for the OS and other things. if (maxHeapSize == 0 || maxHeapSize > MAXIMUMADDRESS) { if (memsize != 0) maxHeapSize = memsize - memsize / 5; else maxHeapSize = MAXIMUMADDRESS; // But if this must not be smaller than the minimum size. if (maxHeapSize < minHeapSize) maxHeapSize = minHeapSize; if (maxHeapSize < initialSize) maxHeapSize = initialSize; } // The default minimum is zero; in practice the live data size. // The default initial size is the minimum if that has been provided, // otherwise 8M words. There are applications that only require a small // heap and if we set the heap large to begin with we'll never do a // full GC and reduce it. if (initialSize == 0) { if (minHeapSize != 0) initialSize = minHeapSize; else initialSize = 8 * gMem.DefaultSpaceSize(); // But not more than the maximum if (initialSize > maxHeapSize) initialSize = maxHeapSize; } // Together with the constraints on user settings that ensures this holds. ASSERT(initialSize >= minHeapSize && initialSize <= maxHeapSize); // Initially we divide the space equally between the major and // minor heaps. That means that there will definitely be space // for the first minor GC to copy its data. This division can be // changed later on. gMem.SetSpaceForHeap(initialSize); gMem.SetSpaceBeforeMinorGC(initialSize/2); lastFreeSpace = initialSize; highWaterMark = initialSize; if (percent == 0) userGCRatio = 1.0 / 9.0; // Default to 10% GC to 90% application else userGCRatio = (float)percent / (float)(100 - percent); predictedRatio = lastMajorGCRatio = userGCRatio; if (debugOptions & DEBUG_HEAPSIZE) { Log("Heap: Initial settings: Initial heap "); LogSize(initialSize); Log(" minimum "); LogSize(minHeapSize); Log(" maximum "); LogSize(maxHeapSize); Log(" target ratio %f\n", userGCRatio); } } void HeapSizeParameters::SetReservation(POLYUNSIGNED rsize) { gMem.SetReservation(K_to_words(rsize)); } // Called in the minor GC if a GC thread needs to grow the heap. // Returns zero if the heap cannot be grown. "space" is the space required for the // object (and length field) in case this is larger than the default size. LocalMemSpace *HeapSizeParameters::AddSpaceInMinorGC(POLYUNSIGNED space, bool isMutable) { // See how much space is allocated to the major heap. POLYUNSIGNED spaceAllocated = gMem.CurrentHeapSize() - gMem.CurrentAllocSpace(); // The new segment is either the default size or as large as // necessary for the object. POLYUNSIGNED spaceSize = gMem.DefaultSpaceSize(); if (space > spaceSize) spaceSize = space; // We allow for extension if the total heap size after extending it // plus one allocation area of the default size would not be more // than the allowed heap size. if (spaceAllocated + spaceSize + gMem.DefaultSpaceSize() <= gMem.SpaceForHeap()) { LocalMemSpace *sp = gMem.NewLocalSpace(spaceSize, isMutable); // Return the space or zero if it failed // If this is the first time the allocation failed report it. if (sp == 0 && (debugOptions & DEBUG_HEAPSIZE) && lastAllocationSucceeded) { Log("Heap: Allocation of new heap segment size "); LogSize(spaceSize); Log(" failed. Limit reached?\n"); } lastAllocationSucceeded = sp != 0; return sp; } return 0; // Insufficient space } // Called in the major GC before the copy phase if the heap is more than // 90% full. This should improve the efficiency of copying. LocalMemSpace *HeapSizeParameters::AddSpaceBeforeCopyPhase(bool isMutable) { LocalMemSpace *sp = gMem.NewLocalSpace(gMem.DefaultSpaceSize(), isMutable); if (sp == 0 && (debugOptions & DEBUG_HEAPSIZE) && lastAllocationSucceeded) Log("Heap: Allocation of new heap segment failed. Limit reached?\n"); lastAllocationSucceeded = sp != 0; return sp; } // The steepness of the curve. #define PAGINGCOSTSTEEPNESS 20.0 // The additional cost at the boundary #define PAGINGCOSTFACTOR 3.0 // The number of pages at the boundary #define PAGINGCOUNTFACTOR 1000.0 // Called at the end of collection. This is where we should do the // fine adjustment of the heap size to minimise the GC time. // Growing the heap is just a matter of adjusting the limits. We // don't actually need to allocate the space here. // See also adjustHeapSizeAfterMinorGC for adjustments after a minor GC. void HeapSizeParameters::AdjustSizeAfterMajorGC(POLYUNSIGNED wordsRequired) { // Cumulative times since the last major GC TIMEDATA gc, nonGc; gc.add(majorGCSystemCPU); gc.add(majorGCUserCPU); nonGc.add(majorNonGCSystemCPU); nonGc.add(majorNonGCUserCPU); if (highWaterMark < heapSizeAtStart) highWaterMark = heapSizeAtStart; POLYUNSIGNED heapSpace = gMem.SpaceForHeap() < highWaterMark ? gMem.SpaceForHeap() : highWaterMark; currentSpaceUsed = wordsRequired; for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { currentSpaceUsed += (*i)->allocatedSpace(); } // N.B. Normally currentSpaceUsed will be less than the size of the heap // except if wordsRequired is very large. // The times for all the minor GCs up to this. The cost of this (major) GC // is actually in minorGCUserCPU/minorGCSystemCPU. TIMEDATA minorGC; minorGC.add(gc); minorGC.sub(minorGCUserCPU); minorGC.sub(minorGCSystemCPU); if (performSharingPass) { // We ran the sharing pass last time: calculate the actual recovery rate. POLYUNSIGNED originalSpaceUsed = currentSpaceUsed + sharingWordsRecovered; sharingRecoveryRate = (double)sharingWordsRecovered / (double)originalSpaceUsed; if (debugOptions & DEBUG_HEAPSIZE) Log("Heap: Sharing recovery rate was %0.3f and cost %0.3f seconds (%0.3f%% of total).\n", sharingRecoveryRate, sharingCPU.toSeconds(), sharingCPU.toSeconds() / gc.toSeconds()); // The cost factor is the ratio of the cost of sharing to the cost without. sharingCostFactor = sharingCPU.toSeconds() / (gc.toSeconds() - sharingCPU.toSeconds()); // Subtract the sharing cost from the GC cost because the initial estimate is // the cost without running the sharing pass. gc.sub(sharingCPU); } if (gc.toSeconds() != 0.0 && nonGc.toSeconds() != 0.0) lastMajorGCRatio = gc.toSeconds() / nonGc.toSeconds(); if (debugOptions & DEBUG_HEAPSIZE) { POLYUNSIGNED currentFreeSpace = currentSpaceUsed < heapSpace ? 0: heapSpace - currentSpaceUsed; Log("Heap: GC cpu time %2.3f non-gc time %2.3f ratio %0.3f for free space ", gc.toSeconds(), nonGc.toSeconds(), lastMajorGCRatio); LogSize((lastFreeSpace + currentFreeSpace)/2); Log("\n"); Log("Heap: GC real time %2.3f non-gc time %2.3f ratio %0.3f\n", majorGCReal.toSeconds(), majorNonGCReal.toSeconds(), majorGCReal.toSeconds()/majorNonGCReal.toSeconds()); Log("Heap: Total of minor GCs %2.3f, %2.3f of total\n", minorGC.toSeconds(), minorGC.toSeconds() / gc.toSeconds()); } // Calculate the paging threshold. if (pagingLimitSize != 0 || majorGCPageFaults != 0) { if (majorGCPageFaults == 0) majorGCPageFaults = 1; // Less than one // Some paging detected. The expression here is the inverse of the one used to // compute the paging contribution in the cost function. double scaleFactor = 1.0 + log((double)majorGCPageFaults / PAGINGCOUNTFACTOR) / PAGINGCOSTSTEEPNESS; ASSERT(scaleFactor > 0.0); POLYUNSIGNED newLimit = (POLYUNSIGNED)((double)heapSpace / scaleFactor); if (pagingLimitSize == 0) pagingLimitSize = newLimit; else pagingLimitSize = (newLimit + pagingLimitSize) / 2; } if (allocationFailedBeforeLastMajorGC) { // If the last allocation failed then we may well have reached the // maximum available memory. Set the paging limit to be the current // heap size. We want to avoid hitting the limit because typically // that happens when we try to extend the major heap in a minor GC // resulting in the minor GC failing and a major GC starting. if (pagingLimitSize == 0 || heapSizeAtStart < pagingLimitSize) pagingLimitSize = heapSizeAtStart; } if (pagingLimitSize != 0 && (debugOptions & DEBUG_HEAPSIZE)) { Log("Heap: Paging threshold adjusted to "); LogSize(pagingLimitSize); Log(" with %ld page faults\n", majorGCPageFaults); } // Calculate the new heap size and the predicted cost. POLYUNSIGNED newHeapSize; double cost; bool atTarget = getCostAndSize(newHeapSize, cost, false); // If we have been unable to allocate any more memory we may already // be at the limit. if (allocationFailedBeforeLastMajorGC && newHeapSize > heapSizeAtStart) { cost = costFunction(heapSizeAtStart, false, true); atTarget = false; } if (atTarget) { // We are at the target level. We don't want to attempt sharing. performSharingPass = false; cumulativeSharingSaving = 0; } else { POLYUNSIGNED newHeapSizeWithSharing; double costWithSharing; // Get the cost and heap size if sharing was enabled. If we are at the // limit, though, we need to work using the size we can achieve. if (! allocationFailedBeforeLastMajorGC) (void)getCostAndSize(newHeapSizeWithSharing, costWithSharing, true); else { newHeapSizeWithSharing = heapSizeAtStart; costWithSharing = costFunction(heapSizeAtStart, true, true); } // Run the sharing pass if that would give a lower cost. // Subtract the cumulative saving that would have been made if the // sharing had been run before. This is an estimate and depends on the // extent to which a reduction in the heap earlier would be carried through // to later GCs. cumulativeSharingSaving = cumulativeSharingSaving * ((double)currentSpaceUsed / (double)heapSpace); if (debugOptions & DEBUG_HEAPSIZE) Log("Heap: Cumulative sharing saving %0.2f\n", cumulativeSharingSaving); if (costWithSharing - cumulativeSharingSaving < cost) { // Run the sharing pass next time. performSharingPass = true; cumulativeSharingSaving = 0; } else { // Don't run the sharing pass next time performSharingPass = false; // Running a sharing pass reduces the heap for subsequent // runs. Add this into the cost. double freeSharingCost = costFunction(newHeapSizeWithSharing, true, false); if (freeSharingCost < cost && freeSharingCost > userGCRatio) { if (debugOptions & DEBUG_HEAPSIZE) Log("Heap: Previous sharing would have saved %0.2f\n", cost - freeSharingCost); cumulativeSharingSaving += cost - freeSharingCost; } } } if (debugOptions & DEBUG_HEAPSIZE) { if (performSharingPass) Log("Heap: Next full GC will enable the sharing pass\n"); Log("Heap: Resizing from "); LogSize(gMem.SpaceForHeap()); Log(" to "); LogSize(newHeapSize); Log(". Estimated ratio %2.2f\n", cost); } // Set the sizes. gMem.SetSpaceForHeap(newHeapSize); // Set the minor space size. It can potentially use the whole of the // rest of the available heap but there could be a problem if that exceeds // the available memory and causes paging. We need to raise the limit carefully. // Also, if we use the whole of the heap we may not then be able to allocate // new areas in the major heap without going over the limit. Restrict it to // half of the available heap. POLYUNSIGNED nextLimit = highWaterMark + highWaterMark / 32; if (nextLimit > newHeapSize) nextLimit = newHeapSize; // gMem.CurrentHeapSize() is the live space size. if (gMem.CurrentHeapSize() > nextLimit) gMem.SetSpaceBeforeMinorGC(0); // Run out of space else gMem.SetSpaceBeforeMinorGC((nextLimit-gMem.CurrentHeapSize())/2); lastFreeSpace = newHeapSize - currentSpaceUsed; predictedRatio = cost; } // Called after a minor GC. Currently does nothing. // See also adjustHeapSize for adjustments after a major GC. bool HeapSizeParameters::AdjustSizeAfterMinorGC(POLYUNSIGNED spaceAfterGC, POLYUNSIGNED spaceBeforeGC) { POLYUNSIGNED spaceCopiedOut = spaceAfterGC-spaceBeforeGC; TIMEDATA gc, total; minorGCsSinceMajor++; // The major costs are cumulative so we use those gc.add(majorGCSystemCPU); gc.add(majorGCUserCPU); total.add(gc); total.add(majorNonGCSystemCPU); total.add(majorNonGCUserCPU); float g = gc.toSeconds() / total.toSeconds(); if (debugOptions & DEBUG_HEAPSIZE) { Log("Heap: Space before "); LogSize(spaceBeforeGC); Log(", space after "); LogSize(spaceAfterGC); Log("\n"); Log("Heap: Minor resizing factors g = %f, recent pf = %ld, cumulative pf = %ld\n", g, minorGCPageFaults, majorGCPageFaults); } if (highWaterMark < gMem.CurrentHeapSize()) highWaterMark = gMem.CurrentHeapSize(); POLYUNSIGNED nextLimit = highWaterMark + highWaterMark / 32; if (nextLimit > gMem.SpaceForHeap()) nextLimit = gMem.SpaceForHeap(); // Set the space available for the allocation area to be the difference between the // total heap size and the allowed heap size together with as much space as we copied // on this GC. That allows for the next minor GC to copy the same amount without // extending the heap. If the next minor GC adds more than this the heap will be // extended and a corresponding amount deducted so that the heap shrinks again. POLYUNSIGNED currHeap = gMem.CurrentHeapSize(); POLYUNSIGNED currAlloc = gMem.CurrentAllocSpace(); POLYUNSIGNED nonAlloc = currHeap - currAlloc + spaceCopiedOut; // TODO: If we have limited the space to the high water mark + 1/32 but that is less // than we really need we should increase it further. POLYUNSIGNED allowedAlloc = nonAlloc >= nextLimit ? 0 : nextLimit - nonAlloc; // Normally the allocation area will be empty but if we've failed to copy // everything out, especially a big object, it may not be. POLYUNSIGNED allocatedInAlloc = gMem.AllocatedInAlloc(); // If we hit the limit at the last major GC we have to be much more careful. // If the minor GC cannot allocate a major GC space when it needs it the minor // GC will fail immediately and a major GC will be started. It's better to // risk doing more minor GCs than we need by making the allocation area smaller // rather than run out of space. if (allocationFailedBeforeLastMajorGC) allowedAlloc = allowedAlloc / 2; if (gMem.CurrentAllocSpace() - allocatedInAlloc != allowedAlloc) { if (debugOptions & DEBUG_HEAPSIZE) { Log("Heap: Adjusting space for allocation area from "); LogSize(gMem.SpaceBeforeMinorGC()); Log(" to "); LogSize(allowedAlloc); Log("\n"); } gMem.SetSpaceBeforeMinorGC(allowedAlloc); if (allowedAlloc < gMem.DefaultSpaceSize() * 2 || minorGCPageFaults > 100) return false; // Trigger full GC immediately. } // Trigger a full GC if the live data is very large or if we have exceeeded // the target ratio over several GCs (this smooths out small variations). if ((minorGCsSinceMajor > 4 && g > predictedRatio*0.8) || majorGCPageFaults > 100) fullGCNextTime = true; return true; } // Estimate the GC cost for a given heap size. The result is the ratio of // GC time to application time. // This is really guesswork. double HeapSizeParameters::costFunction(POLYUNSIGNED heapSize, bool withSharing, bool withSharingCost) { POLYUNSIGNED heapSpace = gMem.SpaceForHeap() < highWaterMark ? gMem.SpaceForHeap() : highWaterMark; POLYUNSIGNED currentFreeSpace = heapSpace < currentSpaceUsed ? 0: heapSpace - currentSpaceUsed; POLYUNSIGNED averageFree = (lastFreeSpace + currentFreeSpace) / 2; POLYUNSIGNED spaceUsed = currentSpaceUsed; // N.B. currentSpaceUsed includes the new space we want if (heapSize <= currentSpaceUsed) return 1.0E6; // If we run the sharing pass the live space will be smaller. if (withSharing) spaceUsed -= (POLYUNSIGNED)((double)currentSpaceUsed * sharingRecoveryRate); POLYUNSIGNED estimatedFree = heapSize - spaceUsed; // The cost scales as the inverse of the amount of free space. double result = lastMajorGCRatio * (double)averageFree / (double)estimatedFree; // If we run the sharing pass the GC cost will increase. if (withSharing && withSharingCost) result += result*sharingCostFactor; // The paging contribution depends on the page limit double pagingCost = 0.0; if (pagingLimitSize != 0) { double factor = ((double)heapSize - (double)pagingLimitSize) / (double)pagingLimitSize * PAGINGCOSTSTEEPNESS; pagingCost = PAGINGCOSTFACTOR * exp(factor); result += pagingCost; } if (debugOptions & DEBUG_HEAPSIZE) { Log("Heap: Cost for heap of size "); LogSize(heapSize); Log(" is %2.2f with paging contributing %2.2f with%s sharing pass.\n", result, pagingCost, withSharing ? "" : "out"); } return result; } // Calculate the size for the minimum cost. Returns true if this is bounded by // the user GC ratio and false if we minimised the cost // TODO: This could definitely be improved although it's not likely to contribute much to // the overall cost of a GC. bool HeapSizeParameters::getCostAndSize(POLYUNSIGNED &heapSize, double &cost, bool withSharing) { bool isBounded = false; POLYUNSIGNED heapSpace = gMem.SpaceForHeap() < highWaterMark ? gMem.SpaceForHeap() : highWaterMark; // Calculate a new heap size. We allow a maximum doubling or halving of size. // It's probably more important to limit the increase in case we hit paging. POLYUNSIGNED sizeMax = heapSpace * 2; if (sizeMax > maxHeapSize) sizeMax = maxHeapSize; POLYUNSIGNED sizeMin = heapSpace / 2; if (sizeMin < minHeapSize) sizeMin = minHeapSize; // We mustn't reduce the heap size too far. If the application does a lot // of work with few allocations and particularly if it calls PolyML.fullGC // explicitly we could attempt to shrink the heap below the current live data size. // Add 3*space size here. We require 2* after a minor GC. Add 1 for rounding. POLYUNSIGNED minForAllocation = gMem.CurrentHeapSize() + gMem.DefaultSpaceSize() * 3; if (minForAllocation > maxHeapSize) minForAllocation = maxHeapSize; if (sizeMin < minForAllocation) sizeMin = minForAllocation; double costMin = costFunction(sizeMin, withSharing, true); if (costMin <= userGCRatio) // If the cost of the minimum is below or at the target we // use that and don't need to look further. isBounded = true; else { double costMax = costFunction(sizeMax, withSharing, true); while (sizeMax > sizeMin + gMem.DefaultSpaceSize()) { POLYUNSIGNED sizeNext = (sizeMin + sizeMax) / 2; double cost = costFunction(sizeNext, withSharing, true); if (cost < userGCRatio) isBounded = true; if (cost < userGCRatio || (costMax > costMin && costMax > userGCRatio)) { sizeMax = sizeNext; costMax = cost; } else { sizeMin = sizeNext; costMin = cost; } ASSERT(costMin >= userGCRatio); } } ASSERT(sizeMin >= minHeapSize && sizeMin <= maxHeapSize); // If we are bounded by the user GC ratio we actually return the size and cost // that is slightly above the user ratio. heapSize = sizeMin; cost = costMin; return isBounded; } bool HeapSizeParameters::RunMajorGCImmediately() { if (fullGCNextTime) { fullGCNextTime = false; return true; } return false; } static bool GetLastStats(TIMEDATA &userTime, TIMEDATA &systemTime, TIMEDATA &realTime, long &pageCount) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME kt, ut; FILETIME ct, et; // Unused FILETIME rt; GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut); GetSystemTimeAsFileTime(&rt); userTime = ut; systemTime = kt; realTime = rt; pageCount = GetPaging(0); #else struct rusage rusage; if (getrusage(RUSAGE_SELF, &rusage) != 0) return false; userTime = rusage.ru_utime; systemTime = rusage.ru_stime; struct timeval tv; if (gettimeofday(&tv, NULL) != 0) return false; realTime = tv; pageCount = GetPaging(rusage.ru_majflt); #endif return true; } void HeapSizeParameters::RecordAtStartOfMajorGC() { heapSizeAtStart = gMem.CurrentHeapSize(); allocationFailedBeforeLastMajorGC = !lastAllocationSucceeded; } // This function is called at the beginning and end of garbage // collection to record the time used. // This also reports the GC time if GC debugging is enabled. void HeapSizeParameters::RecordGCTime(gcTime isEnd, const char *stage) { switch (isEnd) { case GCTimeStart: { // Start of GC TIMEDATA userTime, systemTime, realTime; long pageCount; if (! GetLastStats(userTime, systemTime, realTime, pageCount)) break; lastUsageU = userTime; lastUsageS = systemTime; lastRTime = realTime; userTime.sub(startUsageU); // Times since the start systemTime.sub(startUsageS); realTime.sub(startRTime); if (debugOptions & DEBUG_GC) Log("GC: Non-GC time: CPU user: %0.3f system: %0.3f real: %0.3f page faults: %ld\n", userTime.toSeconds(), systemTime.toSeconds(), realTime.toSeconds(), pageCount - startPF); minorNonGCUserCPU.add(userTime); majorNonGCUserCPU.add(userTime); minorNonGCSystemCPU.add(systemTime); majorNonGCSystemCPU.add(systemTime); minorNonGCReal.add(realTime); majorNonGCReal.add(realTime); startUsageU = lastUsageU; startUsageS = lastUsageS; startRTime = lastRTime; // Page faults in the application are included minorGCPageFaults += pageCount - startPF; majorGCPageFaults += pageCount - startPF; startPF = pageCount; break; } case GCTimeIntermediate: // Report intermediate GC time for debugging if (debugOptions & DEBUG_GC) { TIMEDATA userTime, systemTime, realTime; long pageCount; if (! GetLastStats(userTime, systemTime, realTime, pageCount)) break; TIMEDATA nextU = userTime, nextS = systemTime, nextR = realTime; userTime.sub(lastUsageU); systemTime.sub(lastUsageS); realTime.sub(lastRTime); Log("GC: (%s) CPU user: %0.3f system: %0.3f real: %0.3f speed up %0.1f\n", stage, userTime.toSeconds(), systemTime.toSeconds(), realTime.toSeconds(), realTime.toSeconds() == 0.0 ? 0.0 : (userTime.toSeconds() + systemTime.toSeconds()) / realTime.toSeconds()); lastUsageU = nextU; lastUsageS = nextS; lastRTime = nextR; } break; case GCTimeEnd: // End of GC. { TIMEDATA userTime, systemTime, realTime; long pageCount; if (! GetLastStats(userTime, systemTime, realTime, pageCount)) break; lastUsageU = userTime; lastUsageS = systemTime; lastRTime = realTime; userTime.sub(startUsageU); // Times since the start systemTime.sub(startUsageS); realTime.sub(startRTime); totalGCUserCPU.add(userTime); totalGCSystemCPU.add(systemTime); totalGCReal.add(realTime); if (debugOptions & DEBUG_GC) { Log("GC: CPU user: %0.3f system: %0.3f real: %0.3f speed up %0.1f page faults %ld\n", userTime.toSeconds(), systemTime.toSeconds(), realTime.toSeconds(), realTime.toSeconds() == 0.0 ? 0.0 : (userTime.toSeconds() + systemTime.toSeconds()) / realTime.toSeconds(), pageCount - startPF); } minorGCUserCPU.add(userTime); majorGCUserCPU.add(userTime); minorGCSystemCPU.add(systemTime); majorGCSystemCPU.add(systemTime); minorGCReal.add(realTime); majorGCReal.add(realTime); startUsageU = lastUsageU; startUsageS = lastUsageS; startRTime = lastRTime; minorGCPageFaults += pageCount - startPF; majorGCPageFaults += pageCount - startPF; startPF = pageCount; globalStats.copyGCTimes(totalGCUserCPU, totalGCSystemCPU); } break; } } // Record the recovery rate and cost after running the GC sharing pass. // TODO: We should probably average these because if we've run a full // sharing pass and then a full GC after the recovery rate will be zero. void HeapSizeParameters::RecordSharingData(POLYUNSIGNED recovery) { sharingWordsRecovered = recovery; TIMEDATA userTime, systemTime, realTime; long pageCount; if (! GetLastStats(userTime, systemTime, realTime, pageCount)) return; userTime.sub(startUsageU); // Times since the start systemTime.sub(startUsageS); sharingCPU = userTime; sharingCPU.add(systemTime); } Handle HeapSizeParameters::getGCUtime(TaskData *taskData) const { #if (defined(_WIN32) && ! defined(__CYGWIN__)) return Make_arb_from_Filetime(taskData, totalGCUserCPU); #else return Make_arb_from_pair_scaled(taskData, ((struct timeval)totalGCUserCPU).tv_sec, ((struct timeval)totalGCUserCPU).tv_usec, 1000000); #endif } Handle HeapSizeParameters::getGCStime(TaskData *taskData) const { #if (defined(_WIN32) && ! defined(__CYGWIN__)) return Make_arb_from_Filetime(taskData, totalGCSystemCPU); #else return Make_arb_from_pair_scaled(taskData, ((struct timeval)totalGCSystemCPU).tv_sec, ((struct timeval)totalGCSystemCPU).tv_usec, 1000000); #endif } void HeapSizeParameters::Init() { #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Record an initial time of day to use as the basis of real timing FILETIME s; GetSystemTimeAsFileTime(&s); #else struct timeval s; gettimeofday(&s, NULL); #endif startTime = s; // Overall start time startRTime = startTime; // Start of this non-gc phase resetMajorTimingData(); #if (defined(_WIN32) && ! defined(__CYGWIN__)) startPF = GetPaging(0); #else startPF = GetPaging(0); #endif } void HeapSizeParameters::Final() { // Print the overall statistics if (debugOptions & (DEBUG_GC|DEBUG_HEAPSIZE)) { TIMEDATA userTime, systemTime, realTime; #if (defined(_WIN32) && ! defined(__CYGWIN__)) FILETIME kt, ut; FILETIME ct, et; // Unused FILETIME rt; GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut); GetSystemTimeAsFileTime(&rt); userTime.add(ut); systemTime.add(kt); realTime.add(rt); #else struct rusage rusage; struct timeval tv; if (getrusage(RUSAGE_SELF, &rusage) != 0 || gettimeofday(&tv, NULL) != 0) return; userTime.add(rusage.ru_utime); systemTime.add(rusage.ru_stime); realTime.add(tv); #endif realTime.sub(startTime); userTime.sub(totalGCUserCPU); systemTime.sub(totalGCSystemCPU); realTime.sub(totalGCReal); if (debugOptions & DEBUG_GC) { Log("GC (Total): Non-GC time: CPU user: %0.3f system: %0.3f real: %0.3f\n", userTime.toSeconds(), systemTime.toSeconds(), realTime.toSeconds()); Log("GC (Total): GC time: CPU user: %0.3f system: %0.3f real: %0.3f\n", totalGCUserCPU.toSeconds(), totalGCSystemCPU.toSeconds(), totalGCReal.toSeconds()); } if (debugOptions & DEBUG_HEAPSIZE) { TIMEDATA gc, nonGc; gc.add(totalGCUserCPU); gc.add(totalGCSystemCPU); nonGc.add(userTime); nonGc.add(systemTime); Log("Heap: Total CPU GC time %0.3fsecs, Non-GC %0.3fsecs, ratio %0.3f\n", gc.toSeconds(), nonGc.toSeconds(), gc.toSeconds() / nonGc.toSeconds()); } } } void HeapSizeParameters::resetMinorTimingData(void) { minorNonGCUserCPU.fromSeconds(0); minorNonGCSystemCPU.fromSeconds(0); minorNonGCReal.fromSeconds(0); minorGCUserCPU.fromSeconds(0); minorGCSystemCPU.fromSeconds(0); minorGCReal.fromSeconds(0); minorGCPageFaults = 0; } void HeapSizeParameters::resetMajorTimingData(void) { resetMinorTimingData(); majorNonGCUserCPU.fromSeconds(0); majorNonGCSystemCPU.fromSeconds(0); majorNonGCReal.fromSeconds(0); majorGCUserCPU.fromSeconds(0); majorGCSystemCPU.fromSeconds(0); majorGCReal.fromSeconds(0); majorGCPageFaults = 0; minorGCsSinceMajor = 0; } class HeapSizing: public RtsModule { public: virtual void Init(void); virtual void Stop(void); }; // Declare this. It will be automatically added to the table. static HeapSizing heapSizeModule; void HeapSizing::Init(void) { gHeapSizeParameters.Init(); } void HeapSizing::Stop() { gHeapSizeParameters.Final(); } static POLYUNSIGNED GetPhysicalMemorySize(void) { POLYUNSIGNED maxMem = 0-1; // Maximum unsigned value. #if defined(HAVE_WINDOWS_H) { MEMORYSTATUSEX memStatEx; memset(&memStatEx, 0, sizeof(memStatEx)); memStatEx.dwLength = sizeof(memStatEx); if (! GlobalMemoryStatusEx(&memStatEx)) memStatEx.ullTotalPhys = 0; // Clobber any rubbish since it says it failed. if (memStatEx.ullTotalPhys) // If it's non-zero assume it succeeded { DWORDLONG dwlMax = maxMem; if (memStatEx.ullTotalPhys > dwlMax) return maxMem; else return (POLYUNSIGNED)memStatEx.ullTotalPhys; } } #endif #if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) { // Linux and Solaris. This gives a silly value in Cygwin. long physPages = sysconf(_SC_PHYS_PAGES); long physPagesize = sysconf(_SC_PAGESIZE); if (physPages != -1 && physPagesize != -1) { unsigned long maxPages = maxMem / physPagesize; if ((unsigned long)physPages > maxPages) return maxMem; else // We've checked it won't overflow. return physPages*physPagesize; } } #endif #if defined(HAVE_SYSCTL) && defined(CTL_HW) // FreeBSD and Mac OS X. It seems HW_MEMSIZE has been added to // Max OS X to return a 64-bit value. #ifdef HW_MEMSIZE { static int mib[2] = { CTL_HW, HW_MEMSIZE }; uint64_t physMem = 0; size_t len = sizeof(physMem); if (sysctl(mib, 2, &physMem, &len, NULL, 0) == 0 && len == sizeof(physMem)) { if (physMem > (uint64_t)maxMem) return maxMem; else return (POLYUNSIGNED)physMem; } } #endif #ifdef HW_PHYSMEM // If HW_MEMSIZE isn't there or the call failed try this. { static int mib[2] = { CTL_HW, HW_PHYSMEM }; unsigned int physMem = 0; size_t len = sizeof(physMem); if (sysctl(mib, 2, &physMem, &len, NULL, 0) == 0 && len == sizeof(physMem)) { if (physMem > maxMem) return maxMem; else return physMem; } } #endif #endif return 0; // Unable to determine } polyml-5.7.1/libpolyml/noreturn.h0000644000175000017500000000233413204034553016031 0ustar daviddavid/* Title: No return header. Author: David C.J. Matthews Copyright (c) 2006, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _NORETURN_H #define _NORETURN_H /* The exception functions don't return but instead raise exceptions. This macro tells the compiler about this and prevents spurious errors. */ #if (defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) #define NORETURNFN(x) __declspec(noreturn) x #elif defined(__GNUC__) || defined(__attribute__) #define NORETURNFN(x) x __attribute__((noreturn)) #else #define NORETURNFN(x) x #endif #endif polyml-5.7.1/libpolyml/int_opcodes.h0000644000175000017500000002127013204034553016463 0ustar daviddavid/* Title: Definitions for the code-tree instructions. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2015-17. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ // Items marked Legacy are needed for bootstrapping but no longer generated by the compiler. #define INSTR_enter_int 0x00 #define INSTR_jump8 0x02 #define INSTR_jump8false 0x03 #define INSTR_del_handler 0x05 // Legacy #define INSTR_alloc_ref 0x06 #define INSTR_jump_i_false 0x07 // Legacy #define INSTR_del_handler_i 0x09 // Legacy #define INSTR_case16 0x0a #define INSTR_stack_container 0x0b #define INSTR_call_closure 0x0c #define INSTR_return_w 0x0d #define INSTR_pad 0x0e #define INSTR_jump_i_u 0x0f // Legacy #define INSTR_raise_ex 0x10 #define INSTR_get_store_w 0x11 #define INSTR_non_local 0x12 #define INSTR_local_w 0x13 #define INSTR_indirect_w 0x14 #define INSTR_move_to_vec_w 0x15 #define INSTR_set_stack_val_w 0x17 #define INSTR_reset_w 0x18 #define INSTR_reset_r_w 0x19 #define INSTR_constAddr16 0x1a #define INSTR_const_int_w 0x1b #define INSTR_jump_back8 0x1e #define INSTR_return_b 0x1f #define INSTR_jump_back16 0x20 #define INSTR_get_store_b 0x21 #define INSTR_local_b 0x22 #define INSTR_indirect_b 0x23 #define INSTR_move_to_vec_b 0x24 #define INSTR_set_stack_val_b 0x25 #define INSTR_reset_b 0x26 #define INSTR_reset_r_b 0x27 #define INSTR_const_int_b 0x28 #define INSTR_local_0 0x29 #define INSTR_local_1 0x2a #define INSTR_local_2 0x2b #define INSTR_local_3 0x2c #define INSTR_local_4 0x2d #define INSTR_local_5 0x2e #define INSTR_local_6 0x2f #define INSTR_local_7 0x30 #define INSTR_local_8 0x31 #define INSTR_local_9 0x32 #define INSTR_local_10 0x33 #define INSTR_local_11 0x34 #define INSTR_indirect_0 0x35 #define INSTR_indirect_1 0x36 #define INSTR_indirect_2 0x37 #define INSTR_indirect_3 0x38 #define INSTR_indirect_4 0x39 #define INSTR_indirect_5 0x3a #define INSTR_const_0 0x3b #define INSTR_const_1 0x3c #define INSTR_const_2 0x3d #define INSTR_const_3 0x3e #define INSTR_const_4 0x3f #define INSTR_const_10 0x40 #define INSTR_return_0 0x41 #define INSTR_return_1 0x42 #define INSTR_return_2 0x43 #define INSTR_return_3 0x44 #define INSTR_move_to_vec_0 0x45 #define INSTR_move_to_vec_1 0x46 #define INSTR_move_to_vec_2 0x47 #define INSTR_move_to_vec_3 0x48 #define INSTR_move_to_vec_4 0x49 #define INSTR_move_to_vec_5 0x4a #define INSTR_move_to_vec_6 0x4b #define INSTR_move_to_vec_7 0x4c #define INSTR_reset_1 0x50 #define INSTR_reset_2 0x51 #define INSTR_get_store_2 0x52 #define INSTR_get_store_3 0x53 #define INSTR_get_store_4 0x54 #define INSTR_tuple_container 0x55 #define INSTR_non_local_l_1 0x56 #define INSTR_non_local_l_2 0x57 #define INSTR_non_local_l_3 0x58 #define INSTR_reset_r_1 0x64 #define INSTR_reset_r_2 0x65 #define INSTR_reset_r_3 0x66 #define INSTR_tuple_w 0x67 #define INSTR_tuple_b 0x68 #define INSTR_tuple_2 0x69 #define INSTR_tuple_3 0x6a #define INSTR_tuple_4 0x6b #define INSTR_lock 0x6c #define INSTR_ldexc 0x6d #define INSTR_push_handler 0x78 #define INSTR_tail_b_b 0x7b #define INSTR_tail 0x7c #define INSTR_tail_3_b 0x7d #define INSTR_tail_4_b 0x7e #define INSTR_tail_3_2 0x7f #define INSTR_tail_3_3 0x80 #define INSTR_setHandler8 0x81 #define INSTR_set_handler_new_i 0x82 // Legacy #define INSTR_callFastRTS0 0x83 #define INSTR_callFastRTS1 0x84 #define INSTR_callFastRTS2 0x85 #define INSTR_callFastRTS3 0x86 #define INSTR_callFastRTS4 0x87 #define INSTR_callFastRTS5 0x88 #define INSTR_callFullRTS0 0x89 #define INSTR_callFullRTS1 0x8a #define INSTR_callFullRTS2 0x8b #define INSTR_callFullRTS3 0x8c #define INSTR_callFullRTS4 0x8d #define INSTR_callFullRTS5 0x8e #define INSTR_callFastFtoF 0x8f #define INSTR_callFastGtoF 0x90 #define INSTR_notBoolean 0x91 #define INSTR_isTagged 0x92 #define INSTR_cellLength 0x93 #define INSTR_cellFlags 0x94 #define INSTR_clearMutable 0x95 #define INSTR_stringLength 0x96 #define INSTR_atomicIncr 0x97 #define INSTR_atomicDecr 0x98 #define INSTR_atomicReset 0x99 #define INSTR_longWToTagged 0x9a #define INSTR_signedToLongW 0x9b #define INSTR_unsignedToLongW 0x9c #define INSTR_realAbs 0x9d #define INSTR_realNeg 0x9e #define INSTR_floatFixedInt 0x9f #define INSTR_equalWord 0xa0 #define INSTR_notequalWord 0xa1 #define INSTR_lessSigned 0xa2 #define INSTR_lessUnsigned 0xa3 #define INSTR_lessEqSigned 0xa4 #define INSTR_lessEqUnsigned 0xa5 #define INSTR_greaterSigned 0xa6 #define INSTR_greaterUnsigned 0xa7 #define INSTR_greaterEqSigned 0xa8 #define INSTR_greaterEqUnsigned 0xa9 #define INSTR_fixedAdd 0xaa #define INSTR_fixedSub 0xab #define INSTR_fixedMult 0xac #define INSTR_fixedQuot 0xad #define INSTR_fixedRem 0xae #define INSTR_fixedDiv 0xaf #define INSTR_fixedMod 0xb0 #define INSTR_wordAdd 0xb1 #define INSTR_wordSub 0xb2 #define INSTR_wordMult 0xb3 #define INSTR_wordDiv 0xb4 #define INSTR_wordMod 0xb5 #define INSTR_wordAnd 0xb7 #define INSTR_wordOr 0xb8 #define INSTR_wordXor 0xb9 #define INSTR_wordShiftLeft 0xba #define INSTR_wordShiftRLog 0xbb #define INSTR_wordShiftRArith 0xbc #define INSTR_allocByteMem 0xbd #define INSTR_lgWordEqual 0xbe #define INSTR_lgWordNotequal 0xbf #define INSTR_lgWordLess 0xc0 #define INSTR_lgWordLessEq 0xc1 #define INSTR_lgWordGreater 0xc2 #define INSTR_lgWordGreaterEq 0xc3 #define INSTR_lgWordAdd 0xc4 #define INSTR_lgWordSub 0xc5 #define INSTR_lgWordMult 0xc6 #define INSTR_lgWordDiv 0xc7 #define INSTR_lgWordMod 0xc8 #define INSTR_lgWordAnd 0xc9 #define INSTR_lgWordOr 0xca #define INSTR_lgWordXor 0xcb #define INSTR_lgWordShiftLeft 0xcc #define INSTR_lgWordShiftRLog 0xcd #define INSTR_lgWordShiftRArith 0xce #define INSTR_realEqual 0xcf #define INSTR_realNotequal 0xd0 #define INSTR_realLess 0xd1 #define INSTR_realLessEq 0xd2 #define INSTR_realGreater 0xd3 #define INSTR_realGreaterEq 0xd4 #define INSTR_realAdd 0xd5 #define INSTR_realSub 0xd6 #define INSTR_realMult 0xd7 #define INSTR_realDiv 0xd8 #define INSTR_getThreadId 0xd9 #define INSTR_allocWordMemory 0xda #define INSTR_loadMLWord 0xdb #define INSTR_loadMLByte 0xdc #define INSTR_loadC8 0xdd #define INSTR_loadC16 0xde #define INSTR_loadC32 0xdf #define INSTR_loadC64 0xe0 #define INSTR_loadCFloat 0xe1 #define INSTR_loadCDouble 0xe2 #define INSTR_storeMLWord 0xe3 #define INSTR_storeMLByte 0xe4 #define INSTR_storeC8 0xe5 #define INSTR_storeC16 0xe6 #define INSTR_storeC32 0xe7 #define INSTR_storeC64 0xe8 #define INSTR_storeCFloat 0xe9 #define INSTR_storeCDouble 0xea #define INSTR_blockMoveWord 0xeb #define INSTR_blockMoveByte 0xec #define INSTR_blockEqualByte 0xed #define INSTR_blockCompareByte 0xee #define INSTR_loadUntagged 0xef #define INSTR_storeUntagged 0xf0 #define INSTR_deleteHandler 0xf1 #define INSTR_jump32 0xf2 #define INSTR_jump32False 0xf3 #define INSTR_constAddr32 0xf4 #define INSTR_setHandler32 0xf5 #define INSTR_case32 0xf6 #define INSTR_jump16 0xf7 #define INSTR_jump16false 0xf8 #define INSTR_setHandler16 0xf9 #define INSTR_constAddr8 0xfa #define INSTR_stackSize8 0xfb #define INSTR_stackSize16 0xfc polyml-5.7.1/libpolyml/sharedata.cpp0000644000175000017500000011521513204034553016447 0ustar daviddavid/* Title: Share common immutable data Copyright (c) 2000 Cambridge University Technical Services Limited and David C. J. Matthews 2006, 2010-13, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STRING_H #include #endif #include "globals.h" #include "save_vec.h" #include "machine_dep.h" #include "scanaddrs.h" #include "run_time.h" #include "sys.h" #include "gc.h" #include "rtsentry.h" #include "memmgr.h" #include "processes.h" #include "gctaskfarm.h" #include "diagnostics.h" #include "sharedata.h" /* This code was largely written by Simon Finn as a database improver for the memory-mapped persistent store version. The aim is that where two immutable objects (cells) contain the same data (i.e. where ML equality would say they were equal) they should be merged so that only a single object is retained. The basic algorithm works like this: 1. From the root, recursively process all objects and calculate a "depth" for each object. Mutable data and code segments have depth 0 and cannot be merged. Byte segments (e.g. strings and long-format arbitrary precision values) have depth 1. Other cells have depths of 1 or greater, the depth being the maximum recursion depth until a byte segment or an object with depth 0 is reached. Cycles of immutable data don't arise normally in ML but could be produced as a result of locking mutable objects. To avoid infinite recursion cycles are broken by setting the depth of an object to zero before processing it. The depth of each object is stored in the length word of the object. This ensures each object is processed once only. 2. Vectors are created containing objects of the same depth, from 1 to the maximum depth found. 3. We begin a loop starting at depth 1. 4. The length words are restored, replacing the depth count in the header. 5. The objects are sorted by their contents so bringing together objects with the same contents. The contents are considered simply as uninterpreted bits. 6. The sorted vector is processed to find those objects that are actually bitwise equal. One object is selected to be retained and other objects have their length words turned into tombstones pointing at the retained object. 7. Objects at the next depth are first processed to find pointers to objects that moved in the previous step (or that step with a lower depth). The addresses are updated to point to the retained object. The effect of this step is to ensure that now two objects that are equal in ML terms have identical contents. e.g. If we have val a = ("abc", "def") and b = ("abc", "def") then we will have merged the two occurrences of "abc" and "def" in the previous pass of level 1 objects. This step ensures that the two cells containing the pairs both hold pointers to the same objects and so are bitwise equal. 8. Repeat with 4, 5 and 6 until all the levels have been processed. Each object is processed once and at the end most of the objects have been updated with the shared addresses. We have to scan all the mutable and code objects to update the addresses but also have to scan the immutables because of the possibility of missing an update as a result of breaking a loop (see SPF's comment below). DCJM 3/8/06 This has been substantially updated while retaining the basic algorithm. Sorting is now done in parallel by the GC task farm and the stack is now in dynamic memory. That avoids a possible segfault if the normal C stack overflows. A further problem is that the vectors can get very large and this can cause problems if there is insufficient contiguous space. The code has been modified to reduce the size of the vectors at the cost of increasing the total memory requirement. */ extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyShareCommonData(PolyObject *threadId, PolyWord root); } // The DepthVector type contains all the items of a particular depth. // This is the abstract class. There are variants for the case where all // the cells have the same size and where they may vary. class DepthVector { public: DepthVector() : nitems(0), vsize(0), ptrVector(0) {} virtual ~DepthVector() { free(ptrVector); } virtual POLYUNSIGNED MergeSameItems(void); virtual void Sort(void); virtual POLYUNSIGNED ItemCount(void) { return nitems; } virtual void AddToVector(POLYUNSIGNED L, PolyObject *pt) = 0; void FixLengthAndAddresses(ScanAddress *scan); virtual void RestoreForwardingPointers() = 0; protected: POLYUNSIGNED nitems; POLYUNSIGNED vsize; PolyObject **ptrVector; // This must only be called BEFORE sorting. The pointer vector will be // modified by sorting but the length vector is not. virtual void RestoreLengthWords(void) = 0; static void SortRange(PolyObject * *first, PolyObject * *last); static int CompareItems(const PolyObject * const *a, const PolyObject * const *b); static int qsCompare(const void *a, const void *b) { return CompareItems((const PolyObject * const*)a, (const PolyObject *const *)b); } static void sortTask(GCTaskId*, void *s, void *l) { SortRange((PolyObject **)s, (PolyObject **)l); } }; // DepthVector where the size needs to be held for each item. class DepthVectorWithVariableLength: public DepthVector { public: DepthVectorWithVariableLength() : lengthVector(0) {} virtual ~DepthVectorWithVariableLength() { free(lengthVector); } virtual void RestoreLengthWords(void); virtual void AddToVector(POLYUNSIGNED L, PolyObject *pt); virtual void RestoreForwardingPointers(); protected: POLYUNSIGNED *lengthVector; // Same size as the ptrVector }; class DepthVectorWithFixedLength : public DepthVector { public: DepthVectorWithFixedLength(POLYUNSIGNED l) : length(l) {} virtual void RestoreLengthWords(void); virtual void AddToVector(POLYUNSIGNED L, PolyObject *pt); // It's safe to run this again for the fixed length vectors. virtual void RestoreForwardingPointers() { RestoreLengthWords(); } protected: POLYUNSIGNED length; }; // We have special vectors for the sizes from 1 to FIXEDLENGTHSIZE-1. // Zero-sized and large objects go in depthVectorArray[0]. #define FIXEDLENGTHSIZE 10 class ShareDataClass { public: ShareDataClass(); ~ShareDataClass(); bool RunShareData(PolyObject *root); void AddToVector(POLYUNSIGNED depth, POLYUNSIGNED length, PolyObject *pt); private: struct _depthVector { DepthVector **vector; POLYUNSIGNED vectorSize; } depthVectorArray[FIXEDLENGTHSIZE]; POLYUNSIGNED maxVectorSize; }; ShareDataClass::ShareDataClass() { maxVectorSize = 0; for (unsigned i = 0; i < FIXEDLENGTHSIZE; i++) { depthVectorArray[i].vector = 0; depthVectorArray[i].vectorSize = 0; } } ShareDataClass::~ShareDataClass() { // Free the bitmaps associated with the permanent spaces. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) (*i)->shareBitmap.Destroy(); // Free the depth vectors and vector of vectors. for (unsigned i = 0; i < FIXEDLENGTHSIZE; i++) { for (unsigned j = 0; j < depthVectorArray[i].vectorSize; j++) delete(depthVectorArray[i].vector[j]); free(depthVectorArray[i].vector); } } // Grow the appropriate depth vector if necessary and add the item to it. void ShareDataClass::AddToVector(POLYUNSIGNED depth, POLYUNSIGNED length, PolyObject *pt) { // Select the appropriate vector. Element zero is the variable length vector and is // also used for the, rare, zero length objects. struct _depthVector *vectorToUse = &(depthVectorArray[length < FIXEDLENGTHSIZE ? length : 0]); if (depth >= maxVectorSize) maxVectorSize = depth+1; if (depth >= vectorToUse->vectorSize) { POLYUNSIGNED newDepth = depth+1; DepthVector **newVec = (DepthVector **)realloc(vectorToUse->vector, sizeof(DepthVector*)*newDepth); if (newVec == 0) throw MemoryException(); vectorToUse->vector = newVec; // Clear new entries first for (POLYUNSIGNED d = vectorToUse->vectorSize; d < newDepth; d++) vectorToUse->vector[d] = 0; for (POLYUNSIGNED d = vectorToUse->vectorSize; d < newDepth; d++) { try { if (length != 0 && length < FIXEDLENGTHSIZE) vectorToUse->vector[d] = new DepthVectorWithFixedLength(length); else vectorToUse->vector[d] = new DepthVectorWithVariableLength; } catch (std::bad_alloc &) { throw MemoryException(); } } vectorToUse->vectorSize = newDepth; } vectorToUse->vector[depth]->AddToVector(length, pt); } // Add an object to a depth vector void DepthVectorWithVariableLength::AddToVector(POLYUNSIGNED L, PolyObject *pt) { ASSERT (this->nitems <= this->vsize); if (this->nitems == this->vsize) { // The vector is full or has not yet been allocated. Grow it by 50%. POLYUNSIGNED new_vsize = this->vsize + this->vsize / 2 + 1; if (new_vsize < 15) new_vsize = 15; // First the length vector. POLYUNSIGNED *newLength = (POLYUNSIGNED *)realloc(this->lengthVector, new_vsize * sizeof(POLYUNSIGNED)); if (newLength == 0) { // The vectors can get large and we may not be able to grow them // particularly if the address space is limited in 32-bit mode. // Try again with just a small increase. new_vsize = this->vsize + 15; newLength = (POLYUNSIGNED *)realloc(this->lengthVector, new_vsize * sizeof(POLYUNSIGNED)); // If that failed give up. if (newLength == 0) throw MemoryException(); } PolyObject **newPtrVector = (PolyObject * *)realloc (this->ptrVector, new_vsize*sizeof(PolyObject *)); if (newPtrVector == 0) { new_vsize = this->vsize + 15; newPtrVector = (PolyObject **)realloc (this->ptrVector, new_vsize*sizeof(PolyObject *)); // If that failed give up. if (newPtrVector == 0) throw MemoryException(); } this->lengthVector = newLength; this->ptrVector = newPtrVector; this->vsize = new_vsize; } ASSERT (this->nitems < this->vsize); this->lengthVector[this->nitems] = L; this->ptrVector[this->nitems] = pt; this->nitems++; ASSERT (this->nitems <= this->vsize); } // Add an object to a depth vector void DepthVectorWithFixedLength::AddToVector(POLYUNSIGNED L, PolyObject *pt) { ASSERT(this->nitems <= this->vsize); ASSERT(L == length); if (this->nitems == this->vsize) { // The vector is full or has not yet been allocated. Grow it by 50%. POLYUNSIGNED new_vsize = this->vsize + this->vsize / 2 + 1; if (new_vsize < 15) new_vsize = 15; PolyObject **newPtrVector = (PolyObject * *)realloc(this->ptrVector, new_vsize * sizeof(PolyObject *)); if (newPtrVector == 0) { new_vsize = this->vsize + 15; newPtrVector = (PolyObject **)realloc(this->ptrVector, new_vsize * sizeof(PolyObject *)); // If that failed give up. if (newPtrVector == 0) throw MemoryException(); } this->ptrVector = newPtrVector; this->vsize = new_vsize; } ASSERT(this->nitems < this->vsize); this->ptrVector[this->nitems] = pt; this->nitems++; ASSERT(this->nitems <= this->vsize); } // Comparison function used for sorting and also to test whether // two cells can be merged. int DepthVector::CompareItems(const PolyObject *const *a, const PolyObject *const *b) { const PolyObject *x = *a; const PolyObject *y = *b; POLYUNSIGNED lX = x->LengthWord(); POLYUNSIGNED lY = y->LengthWord(); // ASSERT (OBJ_IS_LENGTH(lX)); // ASSERT (OBJ_IS_LENGTH(lY)); if (lX > lY) return 1; // These tests include the flag bits if (lX < lY) return -1; // Return simple bitwise equality. return memcmp(x, y, OBJ_OBJECT_LENGTH(lX)*sizeof(PolyWord)); } // Merge cells with the same contents. POLYUNSIGNED DepthVector::MergeSameItems() { POLYUNSIGNED N = this->nitems; POLYUNSIGNED n = 0; POLYUNSIGNED i = 0; while (i < N) { PolyObject *bestShare = 0; // Candidate to share. MemSpace *bestSpace = 0; POLYUNSIGNED j; for (j = i; j < N; j++) { ASSERT (OBJ_IS_LENGTH(ptrVector[i]->LengthWord())); // Search for identical objects. Don't bother to compare it with itself. if (i != j && CompareItems (&ptrVector[i], &ptrVector[j]) != 0) break; // The order of sharing is significant. // Choose an object in the permanent memory if that is available. // This is necessary to retain the invariant that no object in // the permanent memory points to an object in the temporary heap. // (There may well be pointers to this object elsewhere in the permanent // heap). // Choose the lowest hierarchy value for preference since that // may reduce the size of saved state when resaving already saved // data. // If we can't find a permanent space choose a space that isn't // an allocation space. Otherwise we could break the invariant // that immutable areas never point into the allocation area. MemSpace *space = gMem.SpaceForAddress(ptrVector[j]-1); if (bestSpace == 0) { bestShare = ptrVector[j]; bestSpace = space; } else if (bestSpace->spaceType == ST_PERMANENT) { // Only update if the current space is also permanent and a lower hierarchy if (space->spaceType == ST_PERMANENT && ((PermanentMemSpace *)space)->hierarchy < ((PermanentMemSpace *)bestSpace)->hierarchy) { bestShare = ptrVector[j]; bestSpace = space; } } else if (bestSpace->spaceType == ST_LOCAL) { // Update if the current space is not an allocation space if (space->spaceType != ST_LOCAL || ! ((LocalMemSpace*)space)->allocationSpace) { bestShare = ptrVector[j]; bestSpace = space; } } } POLYUNSIGNED k = j; // Remember the first object that didn't match. // For each identical object set all but the one we want to point to // the shared object. for (j = i; j < k; j++) { ASSERT (OBJ_IS_LENGTH(ptrVector[j]->LengthWord())); if (ptrVector[j] != bestShare) { ptrVector[j]->SetForwardingPtr(bestShare); /* an indirection */ n++; } } i = k; } return n; } // Sort this vector void DepthVector::Sort() { if (nitems > 1) { SortRange(ptrVector, ptrVector + (nitems - 1)); gpTaskFarm->WaitForCompletion(); } // Check // for (POLYUNSIGNED i = 0; i < nitems-1; i++) // ASSERT(CompareItems(vector+i, vector+i+1) <= 0); } inline void swapItems(PolyObject * *i, PolyObject * *j) { PolyObject * t = *i; *i = *j; *j = t; } // Simple parallel quick-sort. "first" and "last" are the first // and last items (inclusive) in the vector. void DepthVector::SortRange(PolyObject * *first, PolyObject * *last) { while (first < last) { if (last-first <= 100) { // Use the standard library function for small ranges. qsort(first, last-first+1, sizeof(PolyObject *), qsCompare); return; } // Select the best pivot from the first, last and middle item // by sorting these three items. We use the middle item as // the pivot and since the first and last items are sorted // by this we can skip them when we start the partitioning. PolyObject * *middle = first + (last-first)/2; if (CompareItems(first, middle) > 0) swapItems(first, middle); if (CompareItems(middle, last) > 0) { swapItems(middle, last); if (CompareItems(first, middle) > 0) swapItems(first, middle); } // Partition the data about the pivot. This divides the // vector into two partitions with all items <= pivot to // the left and all items >= pivot to the right. // Note: items equal to the pivot could be in either partition. PolyObject * *f = first+1; PolyObject * *l = last-1; do { // Find an item we have to move. These loops will always // terminate because testing the middle with itself // will return == 0. while (CompareItems(f, middle/* pivot*/) < 0) f++; while (CompareItems(middle/* pivot*/, l) < 0) l--; // If we haven't finished we need to swap the items. if (f < l) { swapItems(f, l); // If one of these was the pivot item it will have moved to // the other position. if (middle == f) middle = l; else if (middle == l) middle = f; f++; l--; } else if (f == l) { f++; l--; break; } } while (f <= l); // Process the larger partition as a separate task or // by recursion and do the smaller partition by tail // recursion. if (l-first > last-f) { // Lower part is larger gpTaskFarm->AddWorkOrRunNow(sortTask, first, l); first = f; } else { // Upper part is larger gpTaskFarm->AddWorkOrRunNow(sortTask, f, last); last = l; } } } // Set the genuine length word. This overwrites both depth words and forwarding pointers. void DepthVectorWithVariableLength::RestoreLengthWords() { for (POLYUNSIGNED i = 0; i < this->nitems; i++) ptrVector[i]->SetLengthWord(lengthVector[i]); // restore genuine length word } void DepthVectorWithFixedLength::RestoreLengthWords() { for (POLYUNSIGNED i = 0; i < this->nitems; i++) ptrVector[i]->SetLengthWord(length); // restore genuine length word } // Fix up the length word. Then update all addresses to their new location if // we have shared the original destination of the address with something else. void DepthVector::FixLengthAndAddresses(ScanAddress *scan) { RestoreLengthWords(); for (POLYUNSIGNED i = 0; i < this->nitems; i++) { // Fix up all addresses. scan->ScanAddressesInObject(ptrVector[i]); } } // Restore the original length words on forwarding pointers. // After sorting the pointer vector and length vector are no longer // matched so we have to follow the pointers. void DepthVectorWithVariableLength::RestoreForwardingPointers() { for (POLYUNSIGNED i = 0; i < this->nitems; i++) { PolyObject *obj = ptrVector[i]; if (obj->ContainsForwardingPtr()) obj->SetLengthWord(obj->GetForwardingPtr()->LengthWord()); } } // This class is used in two places and is called to ensure that all // object length words have been restored. // Before we actually try to share the immutable objects at a particular depth it // is called to update addresses in those objects to take account of // sharing at lower depths. // When all sharing is complete it is called to update the addresses in // level zero objects, i.e. mutables and code. class ProcessFixupAddress: public ScanAddress { protected: virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); virtual PolyObject *ScanObjectAddress(PolyObject *base) { return GetNewAddress(base).AsObjPtr(); } PolyWord GetNewAddress(PolyWord old); }; POLYUNSIGNED ProcessFixupAddress::ScanAddressAt(PolyWord *pt) { *pt = GetNewAddress(*pt); return 0; } // Returns the new address if the argument is the address of an object that // has moved, otherwise returns the original. PolyWord ProcessFixupAddress::GetNewAddress(PolyWord old) { if (old.IsTagged() || old == PolyWord::FromUnsigned(0)) return old; // Nothing to do. ASSERT(old.IsDataPtr()); PolyObject *obj = old.AsObjPtr(); POLYUNSIGNED L = obj->LengthWord(); // Generally each address will point to an object processed at a lower depth. // The exception is if we have a cycle and have assigned the rest of the // structure to a higher depth. // N.B. We return the original address here but this could actually share // with something else and not be retained. if (OBJ_IS_DEPTH(L)) return old; if (obj->ContainsForwardingPtr()) // tombstone is a pointer to a shared object { PolyObject *newp = obj->GetForwardingPtr(); // ASSERT (newp->ContainsNormalLengthWord()); return newp; } ASSERT (obj->ContainsNormalLengthWord()); // object is not shared return old; } // This class is used to set up the depth vectors for sorting. It subclasses ScanAddress // in order to be able to use that for code objects since they are complicated but it // handles most object types itself. It scans them depth-first using an explicit stack. class ProcessAddToVector: public ScanAddress { public: ProcessAddToVector(ShareDataClass *p): m_parent(p), addStack(0), stackSize(0), asp(0) {} ~ProcessAddToVector(); virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt) { (void)AddObjectsToDepthVectors(*pt); return 0; } virtual PolyObject *ScanObjectAddress(PolyObject *base) { (void)AddObjectsToDepthVectors(base); return base; } void ProcessRoot(PolyObject *root); protected: POLYUNSIGNED AddObjectsToDepthVectors(PolyWord old); void PushToStack(PolyObject *obj); ShareDataClass *m_parent; PolyObject **addStack; unsigned stackSize; unsigned asp; }; ProcessAddToVector::~ProcessAddToVector() { // Normally the stack will be empty. However if we have run out of // memory and thrown an exception we may well have items left. // We have to remove the mark bits otherwise it will mess up any // subsequent GC. for (unsigned i = 0; i < asp; i++) { PolyObject *obj = addStack[i]; if (obj->LengthWord() & _OBJ_GC_MARK) obj->SetLengthWord(obj->LengthWord() & (~_OBJ_GC_MARK)); } free(addStack); // Now free the stack } // Either adds an object to the stack or, if its depth is known, adds it // to the depth vector and returns the depth. // We use _OBJ_GC_MARK to detect when we have visited a cell but not yet // computed the depth. We have to be careful that this bit is removed // before we finish in the case that we run out of memory and throw an // exception. PushToStack may throw the exception if the stack needs to // grow. POLYUNSIGNED ProcessAddToVector::AddObjectsToDepthVectors(PolyWord old) { // If this is a tagged integer or an IO pointer that's simply a constant. if (old.IsTagged() || old == PolyWord::FromUnsigned(0)) return 0; MemSpace *space = gMem.SpaceForAddress(old.AsStackAddr()-1); if (space == 0) return 0; PolyObject *obj = old.AsObjPtr(); POLYUNSIGNED L = obj->LengthWord(); if (OBJ_IS_DEPTH(L)) // tombstone contains genuine depth or 0. return OBJ_GET_DEPTH(L); if (obj->LengthWord() & _OBJ_GC_MARK) return 0; // Marked but not yet scanned. Circular structure. ASSERT (OBJ_IS_LENGTH(L)); if (obj->IsMutable()) { // Mutable data in the local or permanent areas. Ignore byte objects or // word objects containing only ints. if (obj->IsWordObject()) { bool containsAddress = false; for (POLYUNSIGNED j = 0; j < OBJ_OBJECT_LENGTH(L) && !containsAddress; j++) containsAddress = ! obj->Get(j).IsTagged(); if (containsAddress) { // Add it to the vector so we will update any addresses it contains. m_parent->AddToVector(0, L, old.AsObjPtr()); // and follow any addresses to try to merge those. PushToStack(obj); obj->SetLengthWord(L | _OBJ_GC_MARK); // To prevent rescan } // If we don't add it to the vector we mustn't set _OBJ_GC_MARK. } return 0; // Level is zero } if (space->spaceType == ST_PERMANENT && ((PermanentMemSpace*)space)->hierarchy == 0) { // Immutable data in the permanent area can't be merged // because it's read only. We need to follow the addresses // because they may point to mutable areas containing data // that can be. A typical case is the root function pointing // at the global name table containing new declarations. Bitmap *bm = &((PermanentMemSpace*)space)->shareBitmap; if (! bm->TestBit((PolyWord*)obj - space->bottom)) { bm->SetBit((PolyWord*)obj - space->bottom); if (! obj->IsByteObject()) PushToStack(obj); } return 0; } /* There's a problem sharing code objects if they have relative calls/jumps in them to other code. The code of two functions may be identical (e.g. they both call functions 100 bytes ahead) and so they will appear the same but if the functions they jump to are different they are actually different. For that reason we don't share code segments. DCJM 4/1/01 */ if (obj->IsCodeObject()) { // We want to update addresses in the code segment. m_parent->AddToVector(0, L, old.AsObjPtr()); PushToStack(obj); obj->SetLengthWord(L | _OBJ_GC_MARK); // To prevent rescan return 0; } // Byte objects always have depth 1 and can't contain addresses. if (obj->IsByteObject()) { m_parent->AddToVector (1, L, old.AsObjPtr());// add to vector at correct depth obj->SetLengthWord(OBJ_SET_DEPTH(1)); return 1; } ASSERT(OBJ_IS_WORD_OBJECT(L)); // That leaves immutable data objects. PushToStack(obj); obj->SetLengthWord(L | _OBJ_GC_MARK); // To prevent rescan return 0; } // Adds an object to the stack. void ProcessAddToVector::PushToStack(PolyObject *obj) { if (asp == stackSize) { if (addStack == 0) { addStack = (PolyObject**)malloc(sizeof(PolyObject*) * 100); if (addStack == 0) throw MemoryException(); stackSize = 100; } else { unsigned newSize = stackSize+100; PolyObject** newStack = (PolyObject**)realloc(addStack, sizeof(PolyObject*) * newSize); if (newStack == 0) throw MemoryException(); stackSize = newSize; addStack = newStack; } } ASSERT(asp < stackSize); addStack[asp++] = obj; } // Processes the root and anything reachable from it. Addresses are added to the // explicit stack if an object has not yet been processed. Most of this function // is about processing the stack. void ProcessAddToVector::ProcessRoot(PolyObject *root) { // Mark the initial object AddObjectsToDepthVectors(root); // Process the stack until it's empty. while (asp != 0) { // Pop it from the stack. PolyObject *obj = addStack[asp-1]; if (obj->IsCodeObject()) { /* There's a problem sharing code objects if they have relative calls/jumps in them to other code. The code of two functions may be identical (e.g. they both call functions 100 bytes ahead) and so they will appear the same but if the functions they jump to are different they are actually different. For that reason we don't share code segments. DCJM 4/1/01 */ asp--; // Pop it because we'll process it completely ScanAddressesInObject(obj); // If it's local set the depth with the value zero. It has already been // added to the zero depth vector. if (obj->LengthWord() & _OBJ_GC_MARK) obj->SetLengthWord(OBJ_SET_DEPTH(0)); // Now scanned } // Immutable local objects. These can be shared. We need to compute the // depth by computing the maximum of the depth of all the addresses in it. else if ((obj->LengthWord() & _OBJ_GC_MARK) && ! obj->IsMutable()) { POLYUNSIGNED depth = 0; POLYUNSIGNED length = obj->Length(); PolyWord *pt = (PolyWord*)obj; unsigned osp = asp; while (length != 0 && osp == asp) { POLYUNSIGNED d = AddObjectsToDepthVectors(*pt); if (d > depth) depth = d; pt++; length--; } if (osp == asp) { // We've finished it asp--; // Pop this item. depth++; // One more for this object obj->SetLengthWord(obj->LengthWord() & (~_OBJ_GC_MARK)); m_parent->AddToVector(depth, obj->LengthWord() & (~_OBJ_GC_MARK), obj); obj->SetLengthWord(OBJ_SET_DEPTH(depth)); } } // Mutable or non-local objects. These have depth zero. Local objects have // _OBJ_GC_MARK in their header. Immutable permanent objects cannot be // modified so we don't set the depth. Mutable objects are added to the // depth vectors even though they aren't shared so that they will be // updated if they point to immutables that have been shared. else { POLYUNSIGNED length = obj->Length(); PolyWord *pt = (PolyWord*)obj; unsigned osp = asp; while (length != 0) { if (! (*pt).IsTagged()) { // If we've already pushed an address break now if (osp != asp) break; // Process the address and possibly push it AddObjectsToDepthVectors(*pt); } pt++; length--; } if (length == 0) { // We've finished it if (osp != asp) { ASSERT(osp == asp-1); addStack[osp-1] = addStack[osp]; } asp--; // Pop this item. if (obj->LengthWord() & _OBJ_GC_MARK) obj->SetLengthWord(OBJ_SET_DEPTH(0)); } } } } // This is called by the root thread to do the work. bool ShareDataClass::RunShareData(PolyObject *root) { // We use a bitmap to indicate when we've visited an object to avoid // infinite recursion in cycles in the data. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (!space->isMutable && space->hierarchy == 0) { if (! space->shareBitmap.Create(space->spaceSize())) return false; } } POLYUNSIGNED totalObjects = 0; POLYUNSIGNED totalShared = 0; // Build the vectors from the immutable objects. bool success = true; try { ProcessAddToVector addToVector(this); addToVector.ProcessRoot(root); } catch (MemoryException &) { // If we ran out of memory we may still be able to process what we have. // That will also do any clean-up. success = false; } ProcessFixupAddress fixup; for (POLYUNSIGNED depth = 1; depth < maxVectorSize; depth++) { for (unsigned j = 0; j < FIXEDLENGTHSIZE; j++) { if (depth < depthVectorArray[j].vectorSize) { DepthVector *vec = depthVectorArray[j].vector[depth]; // Set the length word and update all addresses. vec->FixLengthAndAddresses(&fixup); vec->Sort(); POLYUNSIGNED n = vec->MergeSameItems(); if ((debugOptions & DEBUG_SHARING) && n > 0) Log("Sharing: Level %4" POLYUFMT ", size %3u, Objects %6" POLYUFMT ", Shared %6" POLYUFMT " (%1.0f%%)\n", depth, j, vec->ItemCount(), n, (float)n / (float)vec->ItemCount() * 100.0); totalObjects += vec->ItemCount(); totalShared += n; } } } if (debugOptions & DEBUG_SHARING) Log("Sharing: Maximum level %4" POLYUFMT ",\n", maxVectorSize); /* At this stage, we have fixed up most but not all of the forwarding pointers. The ones that we haven't fixed up arise from situations such as the following: X -> Y <-> Z i.e. Y and Z form a loop, and X is isomorphic to Z. When we assigned the depths, we have to arbitrarily break the loop between Y and Z. Suppose Y is assigned to level 1, and Z is assigned to level 2. When we process level 1 and fixup Y, there's nothing to do, since Z is still an ordinary object. However when we process level 2, we find that X and Z are isomorphic so we arbitrarily choose one of them and turn it into a "tombstone" pointing at the other. If we change Z into the tombstone, then Y now contains a pointer that needs fixing up. That's why we need the second fixup pass. Note also that if we had broken the loop the other way, we would have assigned Z to level 1, Y to level 2 and X to level 3, so we would have missed the chance to share Z and X. Perhaps that's why running the program repeatedly sometimes finds extra things to share? SPF 26/1/95 */ /* We have updated the addresses in objects with non-zero level so they point to the single occurrence but we need to do the same with level 0 objects (mutables and code). */ for (unsigned j = 0; j < FIXEDLENGTHSIZE; j++) { if (depthVectorArray[j].vectorSize > 0) { DepthVector *v = depthVectorArray[j].vector[0]; // Log this because it could be very large. if (debugOptions & DEBUG_SHARING) Log("Sharing: Level %4" POLYUFMT ", size %3u, Objects %6" POLYUFMT "\n", 0, j, v->ItemCount()); v->FixLengthAndAddresses(&fixup); } } /* Previously we made a complete scan over the memory updating any addresses so that if we have shared two substructures within our root we would also share any external pointers. This has been removed but we have to reinstate the length words we've overwritten with forwarding pointers because there may be references to unshared objects from outside. */ for (POLYUNSIGNED d = 1; d < maxVectorSize; d++) { for (unsigned j = 0; j < FIXEDLENGTHSIZE; j++) { if (d < depthVectorArray[j].vectorSize) { DepthVector *v = depthVectorArray[j].vector[d]; v->RestoreForwardingPointers(); } } } if (debugOptions & DEBUG_SHARING) Log ("Sharing: Total Objects %6" POLYUFMT ", Total Shared %6" POLYUFMT " (%1.0f%%)\n", totalObjects, totalShared, (float)totalShared / (float)totalObjects * 100.0); return success; // Succeeded. } class ShareRequest: public MainThreadRequest { public: ShareRequest(Handle root): MainThreadRequest(MTP_SHARING), shareRoot(root), result(false) {} virtual void Perform() { ShareDataClass s; // Do a full GC. If we have a large heap the allocation of the vectors // can cause paging. Doing this now reduces the heap and discards the // allocation spaces. It may be overkill if we are applying the sharing // to a small root but generally it seems to be applied to the whole heap. FullGCForShareCommonData(); // Now do the sharing. result = s.RunShareData(shareRoot->WordP()); } Handle shareRoot; bool result; }; // ShareData. This is the main entry point. // Because this can recurse deeply it needs to be run by the main thread. // Also it manipulates the heap in ways that could mess up other threads // so we need to stop them before executing this. void ShareData(TaskData *taskData, Handle root) { if (! root->Word().IsDataPtr()) return; // Nothing to do. We could do handle a code pointer but it shouldn't occur. // Request the main thread to do the sharing. ShareRequest request(root); processes->MakeRootRequest(taskData, &request); // Raise an exception if it failed. if (! request.result) raise_exception_string(taskData, EXC_Fail, "Insufficient memory"); } // RTS call entry. POLYUNSIGNED PolyShareCommonData(PolyObject *threadId, PolyWord root) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); try { if (! root.IsDataPtr()) return TAGGED(0).AsUnsigned(); // Nothing to do. // Request the main thread to do the sharing. ShareRequest request(taskData->saveVec.push(root)); processes->MakeRootRequest(taskData, &request); // Raise an exception if it failed. if (! request.result) raise_exception_string(taskData, EXC_Fail, "Insufficient memory"); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); } struct _entrypts shareDataEPT[] = { { "PolyShareCommonData", (polyRTSFunction)&PolyShareCommonData}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/x86assembly_masm64.S0000644000175000017500000002140213204034553017501 0ustar daviddavid; ; Title: Assembly code routines for the poly system. ; Author: David Matthews ; Copyright (c) David C. J. Matthews 2000-2016 ; ; This library is free software; you can redistribute it and/or ; modify it under the terms of the GNU Lesser General Public ; License version 2.1 as published by the Free Software Foundation. ; ; This library is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ; Lesser General Public License for more details. ; ; You should have received a copy of the GNU Lesser General Public ; License along with this library; if not, write to the Free Software ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ; ; ; Registers used :- ; ; rax: First argument to function. Result of function call. ; rbx: Second argument to function. ; rcx: General register ; rdx: Closure pointer in call. ; rbp: Points to memory used for extra registers ; rsi: General register. ; rdi: General register. ; rsp: Stack pointer. ; r8: Third argument to function ; r9: Fourth argument to function ; r10: Fifth argument to function ; r11: General register ; r12: General register ; r13: General register ; r14: General register ; r15: Memory allocation pointer ; Extra entries on the C stack Fr_SavedMLSP EQU -128 Fr_Size EQU 144 ; Must be multiple of 16 to get alignment correct ; This is the argument vector passed in to X86AsmSwitchToPoly ; It is used to initialise the frame. A few values are updated ; when ML returns. ArgVector STRUCT LocalMPointer QWORD ? HandlerRegister QWORD ? LocalMbottom QWORD ? StackLimit QWORD ? ExceptionPacket QWORD ? ; Address of packet to raise UnusedRequestCode DB ? ; Byte: Io function to call. UnusedFlag DB ? ReturnReason DB ? ; Byte: Reason for returning from ML. UnusedRestore DB ? ; Byte: UnusedAlign DWORD ? SaveCStack QWORD ? ; Saved C stack frame ThreadId QWORD ? ; My thread id StackPtr QWORD ? ; Stack pointer UnusedProgramCtr QWORD ? HeapOverFlowCall QWORD ? StackOverFlowCall QWORD ? StackOverFlowCallEx QWORD ? SaveRAX QWORD ? SaveRBX QWORD ? SaveRCX QWORD ? SaveRDX QWORD ? SaveRSI QWORD ? SaveRDI QWORD ? SaveR8 QWORD ? SaveR9 QWORD ? SaveR10 QWORD ? SaveR11 QWORD ? SaveR12 QWORD ? SaveR13 QWORD ? SaveR14 QWORD ? SaveXMM0 QWORD ? SaveXMM1 QWORD ? SaveXMM2 QWORD ? SaveXMM3 QWORD ? SaveXMM4 QWORD ? SaveXMM5 QWORD ? SaveXMM6 QWORD ? ArgVector ENDS RETURN_HEAP_OVERFLOW EQU 1 RETURN_STACK_OVERFLOW EQU 2 RETURN_STACK_OVERFLOWEX EQU 3 RETURN_CALLBACK_RETURN EQU 6 RETURN_CALLBACK_EXCEPTION EQU 7 RETURN_KILL_SELF EQU 9 ; ; CODE STARTS HERE ; .CODE ; Define standard call macro. CALL_EXTRA MACRO index push rcx mov byte ptr [ArgVector.ReturnReason+rbp],index pop rcx jmp SaveFullState ENDM ; Load the registers from the ML stack and jump to the code. ; This is used to start ML code. ; The argument is the address of the MemRegisters struct and goes into rbp. ; This is the general code for switching control to ML. There are a number of cases to consider: ; 1. Initial entry to root function or a new thread. Needs to load EDX at least. ; 2. Normal return from an RTS call. Could just do a simple return. ; 3. Exception raised in RTS call. ; 4. Callback from C to an ML function. In effect this is a coroutine. Similar to 1. ; 5. Return from "trap" i.e. Heap/Stack overflow. Stack-overflow can result in an exception ; either because the stack can't be grown or because Interrupt has been raised. ; Switch from C code to ML. This code uses the X86/64 Windows calling conventions. It ; saves the callee-save registers. ; This does not set up a correct frame because we don't want to reserve a register for ; that. RBP needs to be the original argument because we need to be able to modify ; the stack limit "register" from another thread in order to be able to interrupt ; this one. X86AsmSwitchToPoly PROC FRAME push rbp ; Standard entry sequence mov [ArgVector.SaveCStack+rcx],rsp ; Save this here instead of setting rbp itself push rbx ; Save callee--save registers push r12 push r13 push r14 push r15 push rdi ; Callee save in Windows push rsi .endprolog mov rbp,rcx ; Move argument into rbp - this is definitely non-standard sub rsp,(Fr_size-56) mov r15,[ArgVector.LocalMpointer+rcx] mov rsp,[ArgVector.StackPtr+rcx] mov rax,[ArgVector.ExceptionPacket+rcx] cmp rax,1 ; Did we raise an exception? jnz raisex movsd xmm0,[ArgVector.SaveXMM0+rbp] movsd xmm1,[ArgVector.SaveXMM1+rbp] movsd xmm2,[ArgVector.SaveXMM2+rbp] movsd xmm3,[ArgVector.SaveXMM3+rbp] movsd xmm4,[ArgVector.SaveXMM4+rbp] movsd xmm5,[ArgVector.SaveXMM5+rbp] movsd xmm6,[ArgVector.SaveXMM6+rbp] mov rax,[ArgVector.SaveRAX+rbp] mov rbx,[ArgVector.SaveRBX+rbp] mov rcx,[ArgVector.SaveRCX+rbp] mov rdx,[ArgVector.SaveRDX+rbp] mov rsi,[ArgVector.SaveRSI+rbp] mov rdi,[ArgVector.SaveRDI+rbp] mov r8,[ArgVector.SaveR8+rbp] mov r9,[ArgVector.SaveR9+rbp] mov r10,[ArgVector.SaveR10+rbp] mov r11,[ArgVector.SaveR11+rbp] mov r12,[ArgVector.SaveR12+rbp] mov r13,[ArgVector.SaveR13+rbp] mov r14,[ArgVector.SaveR14+rbp] cld ; Clear this just in case ret ; Everything up to here is considered as part of the X86AsmSwitchToPoly proc X86AsmSwitchToPoly ENDP ; Code to save the state and switch to C ; This saves the full register state. SaveFullState: mov [ArgVector.SaveRAX+rbp],rax mov [ArgVector.SaveRBX+rbp],rbx mov [ArgVector.SaveRCX+rbp],rcx mov [ArgVector.SaveRDX+rbp],rdx mov [ArgVector.SaveRSI+rbp],rsi mov [ArgVector.SaveRDI+rbp],rdi movsd [ArgVector.SaveXMM0+rbp],xmm0 movsd [ArgVector.SaveXMM1+rbp],xmm1 movsd [ArgVector.SaveXMM2+rbp],xmm2 movsd [ArgVector.SaveXMM3+rbp],xmm3 movsd [ArgVector.SaveXMM4+rbp],xmm4 movsd [ArgVector.SaveXMM5+rbp],xmm5 movsd [ArgVector.SaveXMM6+rbp],xmm6 mov [ArgVector.SaveR8+rbp],r8 mov [ArgVector.SaveR9+rbp],r9 mov [ArgVector.SaveR10+rbp],r10 mov [ArgVector.SaveR11+rbp],r11 mov [ArgVector.SaveR12+rbp],r12 mov [ArgVector.SaveR13+rbp],r13 mov [ArgVector.SaveR14+rbp],r14 mov [ArgVector.StackPtr+rbp],rsp mov [ArgVector.LocalMpointer+rbp],r15 ; Save back heap pointer mov rsp,[ArgVector.SaveCStack+rbp] ; Restore C stack pointer sub rsp,56 pop rsi pop rdi pop r15 ; Restore callee-save registers pop r14 pop r13 pop r12 pop rbx pop rbp ret ; Used when entering new code. The argument and closure are on the stack ; in case there is a GC before we enter the code. PUBLIC X86AsmPopArgAndClosure X86AsmPopArgAndClosure: pop rdx pop rax jmp qword ptr [rdx] ; This is used if the RTS sets up an exception. It's probably no longer relevant. PUBLIC X86AsmRaiseException X86AsmRaiseException: raisex: mov rcx,[ArgVector.HandlerRegister+rbp] jmp qword ptr [rcx] ; RTS call to kill the current thread. PUBLIC X86AsmKillSelf X86AsmKillSelf: CALL_EXTRA RETURN_KILL_SELF PUBLIC X86AsmCallbackReturn X86AsmCallbackReturn: CALL_EXTRA RETURN_CALLBACK_RETURN PUBLIC X86AsmCallbackException X86AsmCallbackException: CALL_EXTRA RETURN_CALLBACK_EXCEPTION ; This implements atomic addition in the same way as atomic_increment PUBLIC X86AsmAtomicIncrement X86AsmAtomicIncrement: mov rax,rcx ; Use rcx and rax because they are volatile (unlike rbx on X86/64/Unix) mov rcx,2 lock xadd [rax],rcx add rcx,2 mov rax,rcx ret CREATE_EXTRA_CALL MACRO index PUBLIC X86AsmCallExtra&index& X86AsmCallExtra&index&: CALL_EXTRA index ENDM CREATE_EXTRA_CALL RETURN_HEAP_OVERFLOW CREATE_EXTRA_CALL RETURN_STACK_OVERFLOW CREATE_EXTRA_CALL RETURN_STACK_OVERFLOWEX END polyml-5.7.1/libpolyml/elfexport.cpp0000644000175000017500000006310513204034553016523 0ustar daviddavid/* Title: Write out a database as an ELF object file Author: David Matthews. Copyright (c) 2006-7, 2011, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDDEF_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_ELF_H #include #elif defined(HAVE_ELF_ABI_H) #include #include #ifndef EM_X86_64 #define EM_X86_64 EM_AMD64 #endif #if defined(HOSTARCHITECTURE_X86_64) #ifndef R_386_PC32 #define R_386_PC32 R_X86_64_PC32 #endif #ifndef R_386_32 #define R_386_32 R_X86_64_32 #endif #ifndef R_X86_64_64 #define R_X86_64_64 R_X86_64_64 #endif #endif /* HOSTARCHITECTURE_X86_64 */ #endif // Solaris seems to put processor-specific constants in separate files #ifdef HAVE_SYS_ELF_SPARC_H #include #endif #ifdef HAVE_SYS_ELF_386_H #include #endif #ifdef HAVE_SYS_ELF_AMD64_H #include #endif // Android has the ARM relocation symbol here #ifdef HAVE_ASM_ELF_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SYS_UTSNAME_H #include #endif #include "globals.h" #include "diagnostics.h" #include "sys.h" #include "machine_dep.h" #include "gc.h" #include "mpoly.h" #include "scanaddrs.h" #include "elfexport.h" #include "run_time.h" #include "version.h" #include "polystring.h" #include "timing.h" #define sym_last_local_sym sym_data_section #if defined(HOSTARCHITECTURE_X86) # define HOST_E_MACHINE EM_386 # define HOST_DIRECT_DATA_RELOC R_386_32 # define HOST_DIRECT_FPTR_RELOC R_386_32 # define USE_RELA 0 #elif defined(HOSTARCHITECTURE_PPC) # define HOST_E_MACHINE EM_PPC # define HOST_DIRECT_DATA_RELOC R_PPC_ADDR32 # define HOST_DIRECT_FPTR_RELOC R_PPC_ADDR32 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_PPC64) # define HOST_E_MACHINE EM_PPC64 # define HOST_DIRECT_DATA_RELOC R_PPC64_ADDR64 # define HOST_DIRECT_FPTR_RELOC R_PPC64_ADDR64 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_S390) # define HOST_E_MACHINE EM_S390 # define HOST_DIRECT_DATA_RELOC R_390_32 # define HOST_DIRECT_FPTR_RELOC R_390_32 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_S390X) # define HOST_E_MACHINE EM_S390 # define HOST_DIRECT_DATA_RELOC R_390_64 # define HOST_DIRECT_FPTR_RELOC R_390_64 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_SH) # define HOST_E_MACHINE EM_SH # define HOST_DIRECT_DATA_RELOC R_SH_DIR32 # define HOST_DIRECT_FPTR_RELOC R_SH_DIR32 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_SPARC) # define HOST_E_MACHINE EM_SPARC # define HOST_DIRECT_DATA_RELOC R_SPARC_32 # define HOST_DIRECT_FPTR_RELOC R_SPARC_32 # define USE_RELA 1 /* Sparc/Solaris, at least 2.8, requires ELF32_Rela relocations. For some reason, though, it adds the value in the location being relocated (as with ELF32_Rel relocations) as well as the addend. To be safe, whenever we use an ELF32_Rela relocation we always zero the location to be relocated. */ #elif defined(HOSTARCHITECTURE_SPARC64) # define HOST_E_MACHINE EM_SPARCV9 # define HOST_DIRECT_DATA_RELOC R_SPARC_64 # define HOST_DIRECT_FPTR_RELOC R_SPARC_64 /* Use the most relaxed memory model. At link time, the most restrictive one is chosen, so it does no harm to be as permissive as possible here. */ # define HOST_E_FLAGS EF_SPARCV9_RMO # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_X86_64) /* It seems Solaris/X86-64 only supports ELF64_Rela relocations. It appears that Linux will support either so we now use Rela on X86-64. */ # define HOST_E_MACHINE EM_X86_64 # define HOST_DIRECT_DATA_RELOC R_X86_64_64 # define HOST_DIRECT_FPTR_RELOC R_X86_64_64 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_X32) # define HOST_E_MACHINE EM_X86_64 # define HOST_DIRECT_DATA_RELOC R_X86_64_32 # define HOST_DIRECT_FPTR_RELOC R_X86_64_32 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_ARM) # ifndef EF_ARM_EABI_VER4 # define EF_ARM_EABI_VER4 0x04000000 # endif // When linking ARM binaries the linker checks the ABI version. We // need to set the version to the same as the libraries. // GCC currently uses version 4. # define HOST_E_MACHINE EM_ARM # define HOST_DIRECT_DATA_RELOC R_ARM_ABS32 # define HOST_DIRECT_FPTR_RELOC R_ARM_ABS32 # define USE_RELA 0 # define HOST_E_FLAGS EF_ARM_EABI_VER4 #elif defined(HOSTARCHITECTURE_HPPA) # if defined(__hpux) # define HOST_OSABI ELFOSABI_HPUX # elif defined(__NetBSD__) # define HOST_OSABI ELFOSABI_NETBSD # elif defined(__linux__) # define HOST_OSABI ELFOSABI_GNU # endif # define HOST_E_MACHINE EM_PARISC # define HOST_DIRECT_DATA_RELOC R_PARISC_DIR32 # define HOST_DIRECT_FPTR_RELOC R_PARISC_PLABEL32 # define HOST_E_FLAGS EFA_PARISC_1_0 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_IA64) # define HOST_E_MACHINE EM_IA_64 # define HOST_DIRECT_DATA_RELOC R_IA64_DIR64LSB # define HOST_DIRECT_FPTR_RELOC R_IA64_FPTR64LSB # define HOST_E_FLAGS EF_IA_64_ABI64 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_AARCH64) # define HOST_E_MACHINE EM_AARCH64 # define HOST_DIRECT_DATA_RELOC R_AARCH64_ABS64 # define HOST_DIRECT_FPTR_RELOC R_AARCH64_ABS64 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_M68K) # define HOST_E_MACHINE EM_68K # define HOST_DIRECT_DATA_RELOC R_68K_32 # define HOST_DIRECT_FPTR_RELOC R_68K_32 # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_MIPS) # define HOST_E_MACHINE EM_MIPS # define HOST_DIRECT_DATA_RELOC R_MIPS_32 # define HOST_DIRECT_FPTR_RELOC R_MIPS_32 # ifdef __PIC__ # define HOST_E_FLAGS EF_MIPS_CPIC # endif # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_MIPS64) # define HOST_E_MACHINE EM_MIPS # define HOST_DIRECT_DATA_RELOC R_MIPS_64 # define HOST_DIRECT_FPTR_RELOC R_MIPS_64 # ifdef __PIC__ # define HOST_E_FLAGS (EF_MIPS_ARCH_64 | EF_MIPS_CPIC) # else # define HOST_E_FLAGS EF_MIPS_ARCH_64 # endif # define USE_RELA 1 #elif defined(HOSTARCHITECTURE_ALPHA) # define HOST_E_MACHINE EM_ALPHA # define HOST_DIRECT_DATA_RELOC R_ALPHA_REFQUAD # define HOST_DIRECT_FPTR_RELOC R_ALPHA_REFQUAD # define USE_RELA 1 #else # error "No support for exporting on this architecture" #endif // The first two symbols are special: // Zero is always special in ELF // 1 is used for the data section #define EXTRA_SYMBOLS 2 static unsigned AreaToSym(unsigned area) { return area+EXTRA_SYMBOLS; } // Section table entries enum { sect_initial = 0, sect_sectionnametable, sect_stringtable, // Data and relocation entries come in here. sect_data // Finally the symbol table }; // Add an external reference to the RTS void ELFExport::addExternalReference(void *relocAddr, const char *name) { externTable.makeEntry(name); // The symbol is added after the memory table entries and poly_exports writeRelocation(0, relocAddr, symbolNum++, true); } // Generate the address relative to the start of the segment. void ELFExport::setRelocationAddress(void *p, ElfXX_Addr *reloc) { unsigned area = findArea(p); POLYUNSIGNED offset = (char*)p - (char*)memTable[area].mtAddr; *reloc = offset; } /* Get the index corresponding to an address. */ PolyWord ELFExport::createRelocation(PolyWord p, void *relocAddr) { void *addr = p.AsAddress(); unsigned addrArea = findArea(addr); POLYUNSIGNED offset = (char*)addr - (char*)memTable[addrArea].mtAddr; return writeRelocation(offset, relocAddr, AreaToSym(addrArea), false); } PolyWord ELFExport::writeRelocation(POLYUNSIGNED offset, void *relocAddr, unsigned symbolNum, bool isFuncPtr) { #if USE_RELA ElfXX_Rela reloc; reloc.r_addend = offset; offset = 0; #else ElfXX_Rel reloc; #endif // Set the offset within the section we're scanning. setRelocationAddress(relocAddr, &reloc.r_offset); #ifdef HOSTARCHITECTURE_MIPS64 reloc.r_sym = symbolNum; reloc.r_ssym = 0; reloc.r_type = isFuncPtr ? HOST_DIRECT_FPTR_RELOC : HOST_DIRECT_DATA_RELOC; reloc.r_type2 = 0; reloc.r_type3 = 0; #else reloc.r_info = ELFXX_R_INFO(symbolNum, isFuncPtr ? HOST_DIRECT_FPTR_RELOC : HOST_DIRECT_DATA_RELOC); #endif fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; return PolyWord::FromUnsigned(offset); } /* This is called for each constant within the code. Print a relocation entry for the word and return a value that means that the offset is saved in original word. */ void ELFExport::ScanConstant(PolyObject *base, byte *addr, ScanRelocationKind code) { PolyWord p = GetConstantValue(addr, code); if (IS_INT(p) || p == PolyWord::FromUnsigned(0)) return; void *a = p.AsAddress(); unsigned aArea = findArea(a); // We don't need a relocation if this is relative to the current segment // since the relative address will already be right. if (code == PROCESS_RELOC_I386RELATIVE && aArea == findArea(addr)) return; // Set the value at the address to the offset relative to the symbol. POLYUNSIGNED offset = (char*)a - (char*)memTable[aArea].mtAddr; switch (code) { case PROCESS_RELOC_DIRECT: // 32 or 64 bit address of target { PolyWord r = createRelocation(p, addr); POLYUNSIGNED w = r.AsUnsigned(); for (unsigned i = 0; i < sizeof(PolyWord); i++) { addr[i] = (byte)(w & 0xff); w >>= 8; } } break; #if(defined(HOSTARCHITECTURE_X86) || defined(HOSTARCHITECTURE_X86_64) || \ defined(HOSTARCHITECTURE_X32)) #ifdef HOSTARCHITECTURE_X86 #define R_PC_RELATIVE R_386_PC32 #else #define R_PC_RELATIVE R_X86_64_PC32 #endif case PROCESS_RELOC_I386RELATIVE: // 32 bit relative address { #if USE_RELA ElfXX_Rela reloc; reloc.r_addend = offset; #else ElfXX_Rel reloc; #endif setRelocationAddress(addr, &reloc.r_offset); // We seem to need to subtract 4 bytes to get the correct offset in ELF offset -= 4; reloc.r_info = ELFXX_R_INFO(AreaToSym(aArea), R_PC_RELATIVE); #if USE_RELA // Clear the field. Even though it's not supposed to be used with Rela the // Linux linker at least seems to add the value in here sometimes. memset(addr, 0, 4); #else for (unsigned i = 0; i < 4; i++) { addr[i] = (byte)(offset & 0xff); offset >>= 8; } #endif fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } break; #endif default: ASSERT(0); // Wrong type of relocation for this architecture. } } unsigned long ELFExport::makeStringTableEntry(const char *str, ExportStringTable *stab) { if (str == NULL || str[0] == 0) return 0; // First entry is the null string. else return stab->makeEntry(str); } void ELFExport::writeSymbol(const char *symbolName, long value, long size, int binding, int sttype, int section) { ElfXX_Sym symbol; memset(&symbol, 0, sizeof(symbol)); // Zero unused fields symbol.st_name = makeStringTableEntry(symbolName, &symStrings); symbol.st_value = value; symbol.st_size = size; symbol.st_info = ELFXX_ST_INFO(binding, sttype); symbol.st_other = 0; symbol.st_shndx = section; fwrite(&symbol, sizeof(symbol), 1, exportFile); } // Set the file alignment. void ELFExport::alignFile(int align) { char pad[32] = {0}; // Maximum alignment int offset = ftell(exportFile); if ((offset % align) == 0) return; fwrite(&pad, align - (offset % align), 1, exportFile); } void ELFExport::createStructsRelocation(unsigned sym, POLYUNSIGNED offset, POLYSIGNED addend) { #if USE_RELA ElfXX_Rela reloc; reloc.r_addend = addend; #else ElfXX_Rel reloc; #endif reloc.r_offset = offset; #ifdef HOSTARCHITECTURE_MIPS64 reloc.r_sym = sym; reloc.r_ssym = 0; reloc.r_type = HOST_DIRECT_DATA_RELOC; reloc.r_type2 = 0; reloc.r_type3 = 0; #else reloc.r_info = ELFXX_R_INFO(sym, HOST_DIRECT_DATA_RELOC); #endif fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } void ELFExport::exportStore(void) { PolyWord *p; ElfXX_Ehdr fhdr; ElfXX_Shdr *sections = 0; unsigned numSections = 6 + 2*memTableEntries /*- 1*/; // The symbol table comes at the end. unsigned sect_symtab = sect_data + 2*memTableEntries + 2/* - 1*/; unsigned i; // External symbols start after the memory table entries and "poly_exports". symbolNum = EXTRA_SYMBOLS+memTableEntries+1; // Both the string tables have an initial null entry. symStrings.makeEntry(""); sectionStrings.makeEntry(""); // Write out initial values for the headers. These are overwritten at the end. // File header memset(&fhdr, 0, sizeof(fhdr)); fhdr.e_ident[EI_MAG0] = 0x7f; fhdr.e_ident[EI_MAG1] = 'E'; fhdr.e_ident[EI_MAG2] = 'L'; fhdr.e_ident[EI_MAG3] = 'F'; fhdr.e_ident[EI_CLASS] = ELFCLASSXX; // ELFCLASS32 or ELFCLASS64 fhdr.e_ident[EI_VERSION] = EV_CURRENT; #ifdef HOST_OSABI fhdr.e_ident[EI_OSABI] = HOST_OSABI; #endif { union { unsigned long wrd; char chrs[sizeof(unsigned long)]; } endian; endian.wrd = 1; if (endian.chrs[0] == 0) fhdr.e_ident[EI_DATA] = ELFDATA2MSB; // Big endian else fhdr.e_ident[EI_DATA] = ELFDATA2LSB; // Little endian } fhdr.e_type = ET_REL; // The machine needs to match the machine we're compiling for // even if this is actually portable code. fhdr.e_machine = HOST_E_MACHINE; #ifdef HOST_E_FLAGS fhdr.e_flags = HOST_E_FLAGS; #endif fhdr.e_version = EV_CURRENT; fhdr.e_shoff = sizeof(fhdr); // Offset to section header - immediately follows fhdr.e_ehsize = sizeof(fhdr); fhdr.e_shentsize = sizeof(ElfXX_Shdr); fhdr.e_shnum = numSections; fhdr.e_shstrndx = sect_sectionnametable; // Section name table section index; fwrite(&fhdr, sizeof(fhdr), 1, exportFile); // Write it for the moment. sections = new ElfXX_Shdr[numSections]; memset(sections, 0, sizeof(ElfXX_Shdr) * numSections); // Necessary? // Set up the section header but don't write it yet. // Section 0 - all zeros sections[sect_initial].sh_type = SHT_NULL; sections[sect_initial].sh_link = SHN_UNDEF; // Section name table. sections[sect_sectionnametable].sh_name = makeStringTableEntry(".shstrtab", §ionStrings); sections[sect_sectionnametable].sh_type = SHT_STRTAB; sections[sect_sectionnametable].sh_addralign = sizeof(char); // sections[sect_sectionnametable].sh_offset is set later // sections[sect_sectionnametable].sh_size is set later // Symbol name table. sections[sect_stringtable].sh_name = makeStringTableEntry(".strtab", §ionStrings); sections[sect_stringtable].sh_type = SHT_STRTAB; sections[sect_stringtable].sh_addralign = sizeof(char); // sections[sect_stringtable].sh_offset is set later // sections[sect_stringtable].sh_size is set later unsigned long dataName = makeStringTableEntry(".data", §ionStrings); unsigned long dataRelName = makeStringTableEntry(USE_RELA ? ".rela.data" : ".rel.data", §ionStrings); unsigned long textName = makeStringTableEntry(".text", §ionStrings); unsigned long textRelName = makeStringTableEntry(USE_RELA ? ".rela.text" : ".rel.text", §ionStrings); unsigned long rodataName = makeStringTableEntry(".rodata", §ionStrings); unsigned long rodataRelName = makeStringTableEntry(USE_RELA ? ".rela.rodata" : ".rel.rodata", §ionStrings); // Main data sections. Each one has a relocation section. for (i=0; i < memTableEntries; i++) { unsigned s = sect_data + i*2; sections[s].sh_addralign = 8; // 8-byte alignment sections[s].sh_type = SHT_PROGBITS; if (memTable[i].mtFlags & MTF_WRITEABLE) { // Mutable areas ASSERT(!(memTable[i].mtFlags & MTF_EXECUTABLE)); // Executable areas can't be writable. sections[s].sh_name = dataName; sections[s].sh_flags = SHF_WRITE | SHF_ALLOC; sections[s+1].sh_name = dataRelName; // Name of relocation section } else if (memTable[i].mtFlags & MTF_EXECUTABLE) { // Code areas are marked as executable. sections[s].sh_name = textName; sections[s].sh_flags = SHF_ALLOC | SHF_EXECINSTR; sections[s+1].sh_name = textRelName; // Name of relocation section } else { // Non-code immutable areas sections[s].sh_name = rodataName; sections[s].sh_flags = SHF_ALLOC; sections[s+1].sh_name = rodataRelName; // Name of relocation section } // sections[s].sh_size is set later // sections[s].sh_offset is set later. // sections[s].sh_size is set later. // Relocation section sections[s+1].sh_type = USE_RELA ? SHT_RELA : SHT_REL; // Contains relocation with/out explicit addends (ElfXX_Rel) sections[s+1].sh_link = sect_symtab; // Index to symbol table sections[s+1].sh_info = s; // Applies to the data section sections[s+1].sh_addralign = sizeof(long); // Align to a word sections[s+1].sh_entsize = USE_RELA ? sizeof(ElfXX_Rela) : sizeof(ElfXX_Rel); // sections[s+1].sh_offset is set later. // sections[s+1].sh_size is set later. } // Table data - Poly tables that describe the memory layout. unsigned sect_table_data = sect_data + 2*memTableEntries; sections[sect_table_data].sh_name = dataName; sections[sect_table_data].sh_type = SHT_PROGBITS; sections[sect_table_data].sh_flags = SHF_WRITE | SHF_ALLOC; sections[sect_table_data].sh_addralign = 8; // 8-byte alignment // Table relocation sections[sect_table_data+1].sh_name = dataRelName; sections[sect_table_data+1].sh_type = USE_RELA ? SHT_RELA : SHT_REL; // Contains relocation with/out explicit addends (ElfXX_Rel) sections[sect_table_data+1].sh_link = sect_symtab; // Index to symbol table sections[sect_table_data+1].sh_info = sect_table_data; // Applies to table section sections[sect_table_data+1].sh_addralign = sizeof(long); // Align to a word sections[sect_table_data+1].sh_entsize = USE_RELA ? sizeof(ElfXX_Rela) : sizeof(ElfXX_Rel); // Symbol table. sections[sect_symtab].sh_name = makeStringTableEntry(".symtab", §ionStrings); sections[sect_symtab].sh_type = SHT_SYMTAB; sections[sect_symtab].sh_link = sect_stringtable; // String table to use sections[sect_symtab].sh_addralign = sizeof(long); // Align to a word sections[sect_symtab].sh_entsize = sizeof(ElfXX_Sym); // sections[sect_symtab].sh_info is set later // sections[sect_symtab].sh_size is set later // sections[sect_symtab].sh_offset is set later // Write the relocations. for (i = 0; i < memTableEntries; i++) { unsigned relocSection = sect_data + i*2 + 1; alignFile(sections[relocSection].sh_addralign); sections[relocSection].sh_offset = ftell(exportFile); relocationCount = 0; // Create the relocation table and turn all addresses into offsets. char *start = (char*)memTable[i].mtAddr; char *end = start + memTable[i].mtLength; for (p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); // Update any constants before processing the object // We need that for relative jumps/calls in X86/64. if (length != 0 && obj->IsCodeObject()) machineDependent->ScanConstantsWithinCode(obj, this); relocateObject(obj); p += length; } sections[relocSection].sh_size = relocationCount * (USE_RELA ? sizeof(ElfXX_Rela) : sizeof(ElfXX_Rel)); } // Relocations for "exports" and "memTable"; alignFile(sections[sect_table_data+1].sh_addralign); sections[sect_table_data+1].sh_offset = ftell(exportFile); relocationCount = 0; // TODO: This won't be needed if we put these in a separate section. POLYUNSIGNED areaSpace = 0; for (i = 0; i < memTableEntries; i++) areaSpace += memTable[i].mtLength; // Address of "memTable" within "exports". We can't use createRelocation because // the position of the relocation is not in either the mutable or the immutable area. POLYSIGNED memTableOffset = (POLYSIGNED)sizeof(exportDescription); // It follows immediately after this. createStructsRelocation(AreaToSym(memTableEntries), offsetof(exportDescription, memTable), memTableOffset); // Address of "rootFunction" within "exports" unsigned rootAddrArea = findArea(rootFunction); POLYSIGNED rootOffset = (char*)rootFunction - (char*)memTable[rootAddrArea].mtAddr; createStructsRelocation(AreaToSym(rootAddrArea), offsetof(exportDescription, rootFunction), rootOffset); // Addresses of the areas within memtable. for (i = 0; i < memTableEntries; i++) { createStructsRelocation(AreaToSym(i), sizeof(exportDescription) + i * sizeof(memoryTableEntry) + offsetof(memoryTableEntry, mtAddr), 0 /* No offset relative to base symbol*/); } sections[sect_table_data+1].sh_size = relocationCount * (USE_RELA ? sizeof(ElfXX_Rela) : sizeof(ElfXX_Rel)); // Now the symbol table. alignFile(sections[sect_symtab].sh_addralign); sections[sect_symtab].sh_offset = ftell(exportFile); writeSymbol("", 0, 0, 0, 0, 0); // Initial symbol // Write the local symbols first. writeSymbol("", 0, 0, STB_LOCAL, STT_SECTION, sect_data); // .data section // Create symbols for the address areas. AreaToSym assumes these come first. for (i = 0; i < memTableEntries; i++) { unsigned s = sect_data + i*2; char buff[50]; sprintf(buff, "area%1u", i); writeSymbol(buff, 0, 0, STB_LOCAL, STT_OBJECT, s); } // Global symbols - Exported symbol for table. writeSymbol("poly_exports", 0, sizeof(exportDescription)+sizeof(memoryTableEntry)*memTableEntries, STB_GLOBAL, STT_OBJECT, sect_table_data); // External references for (unsigned i = 0; i < externTable.stringSize; i += (unsigned)strlen(externTable.strings+i) + 1) writeSymbol(externTable.strings+i, 0, 0, STB_GLOBAL, STT_FUNC, SHN_UNDEF); sections[sect_symtab].sh_info = EXTRA_SYMBOLS+memTableEntries; // One more than last local sym sections[sect_symtab].sh_size = sizeof(ElfXX_Sym) * symbolNum; // Now the binary data. for (i = 0; i < memTableEntries; i++) { unsigned dataSection = sect_data + i*2; sections[dataSection].sh_size = memTable[i].mtLength; alignFile(sections[dataSection].sh_addralign); sections[dataSection].sh_offset = ftell(exportFile); fwrite(memTable[i].mtAddr, 1, memTable[i].mtLength, exportFile); } exportDescription exports; memset(&exports, 0, sizeof(exports)); exports.structLength = sizeof(exportDescription); exports.memTableSize = sizeof(memoryTableEntry); exports.memTableEntries = memTableEntries; exports.memTable = USE_RELA ? 0 : (memoryTableEntry *)memTableOffset; // Set the value to be the offset relative to the base of the area. We have set a relocation // already which will add the base of the area. exports.rootFunction = USE_RELA ? 0 : (void*)rootOffset; exports.timeStamp = getBuildTime(); exports.architecture = machineDependent->MachineArchitecture(); exports.rtsVersion = POLY_version_number; // Set the address values to zero before we write. They will always // be relative to their base symbol. for (i = 0; i < memTableEntries; i++) memTable[i].mtAddr = 0; // Now the binary data. alignFile(sections[sect_table_data].sh_addralign); sections[sect_table_data].sh_offset = ftell(exportFile); sections[sect_table_data].sh_size = sizeof(exportDescription) + memTableEntries*sizeof(memoryTableEntry); fwrite(&exports, sizeof(exports), 1, exportFile); fwrite(memTable, sizeof(memoryTableEntry), memTableEntries, exportFile); // The section name table sections[sect_sectionnametable].sh_offset = ftell(exportFile); fwrite(sectionStrings.strings, sectionStrings.stringSize, 1, exportFile); sections[sect_sectionnametable].sh_size = sectionStrings.stringSize; // The symbol name table sections[sect_stringtable].sh_offset = ftell(exportFile); fwrite(symStrings.strings, symStrings.stringSize, 1, exportFile); sections[sect_stringtable].sh_size = symStrings.stringSize; // Finally the section headers. alignFile(4); fhdr.e_shoff = ftell(exportFile); fwrite(sections, sizeof(ElfXX_Shdr) * numSections, 1, exportFile); // Rewind to rewrite the file header with the offset of the section headers. rewind(exportFile); fwrite(&fhdr, sizeof(fhdr), 1, exportFile); fclose(exportFile); exportFile = NULL; delete[]sections; } polyml-5.7.1/libpolyml/gc.cpp0000644000175000017500000003446013204034553015106 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector Copyright (c) 2010-12 David C. J. Matthews Based on the original garbage collector code Copyright 2000-2008 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "run_time.h" #include "machine_dep.h" #include "diagnostics.h" #include "processes.h" #include "timing.h" #include "gc.h" #include "scanaddrs.h" #include "check_objects.h" #include "osmem.h" #include "bitmap.h" #include "rts_module.h" #include "memmgr.h" #include "gctaskfarm.h" #include "mpoly.h" #include "statistics.h" #include "profiling.h" #include "heapsizing.h" static GCTaskFarm gTaskFarm; // Global task farm. GCTaskFarm *gpTaskFarm = &gTaskFarm; // If the GC converts a weak ref from SOME to NONE it sets this ref. It can be // cleared by the signal handler thread. There's no need for a lock since it // is only set during GC and only cleared when not GCing. bool convertedWeak = false; /* How the garbage collector works. The GC has two phases. The minor (quick) GC is a copying collector that copies data from the allocation area into the mutable and immutable area. The major collector is started when either the mutable or the immutable area is full. The major collector uses a mark/sweep scheme. The GC has three phases: 1. Mark phase. Working from the roots; which are the the permanent mutable segments and the RTS roots (e.g. thread stacks), mark all reachable cells. Marking involves setting bits in the bitmap for reachable words. 2. Compact phase. Marked objects are copied to try to compact, upwards, the heap segments. When an object is moved the length word of the object in the old location is set as a tombstone that points to its new location. In particular this means that we cannot reuse the space where an object previously was during the compaction phase. Immutable objects are moved into immutable segments. When an object is moved to a new location the bits are set in the bitmap as though the object had been marked at that location. 3. Update phase. The roots and objects marked during the first two phases are scanned and any addresses for moved objects are updated. The lowest address used in the area then becomes the base of the area for future allocations. There is a sharing phase which may be performed before the mark phase. This merges immutable cells with the same contents with the aim of reducing the size of the live data. It is expensive so is not performed by default. Updated DCJM 12/06/12 */ static bool doGC(const POLYUNSIGNED wordsRequiredToAllocate) { gHeapSizeParameters.RecordAtStartOfMajorGC(); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeStart); globalStats.incCount(PSC_GC_FULLGC); // Remove any empty spaces. There will not normally be any except // if we have triggered a full GC as a result of detecting paging in the // minor GC but in that case we want to try to stop the system writing // out areas that are now empty. gMem.RemoveEmptyLocals(); if (debugOptions & DEBUG_GC) Log("GC: Full GC, %lu words required %u spaces\n", wordsRequiredToAllocate, gMem.lSpaces.size()); if (debugOptions & DEBUG_HEAPSIZE) gMem.ReportHeapSizes("Full GC (before)"); // Data sharing pass. if (gHeapSizeParameters.PerformSharingPass()) GCSharingPhase(); /* * There is a really weird bug somewhere. An extra bit may be set in the bitmap during * the mark phase. It seems to be related to heavy swapping activity. Duplicating the * bitmap causes it to occur only in one copy and write-protecting the bitmap apart from * when it is actually being updated does not result in a seg-fault. So far I've only * seen it on 64-bit Linux but it may be responsible for other crashes. The work-around * is to check the number of bits set in the bitmap and repeat the mark phase if it does * not match. */ for (unsigned p = 3; p > 0; p--) { for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; ASSERT (lSpace->top >= lSpace->upperAllocPtr); ASSERT (lSpace->upperAllocPtr >= lSpace->lowerAllocPtr); ASSERT (lSpace->lowerAllocPtr >= lSpace->bottom); // Set upper and lower limits of weak refs. lSpace->highestWeak = lSpace->bottom; lSpace->lowestWeak = lSpace->top; lSpace->fullGCLowerLimit = lSpace->top; // Put dummy objects in the unused space. This allows // us to scan over the whole of the space. gMem.FillUnusedSpace(lSpace->lowerAllocPtr, lSpace->upperAllocPtr-lSpace->lowerAllocPtr); } // Set limits of weak refs. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *pSpace = *i; pSpace->highestWeak = pSpace->bottom; pSpace->lowestWeak = pSpace->top; } /* Mark phase */ GCMarkPhase(); POLYUNSIGNED bitCount = 0, markCount = 0; for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; markCount += lSpace->i_marked + lSpace->m_marked; bitCount += lSpace->bitmap.CountSetBits(lSpace->spaceSize()); } if (markCount == bitCount) break; else { // Report an error. If this happens again we crash. Log("GC: Count error mark count %lu, bitCount %lu\n", markCount, bitCount); if (p == 1) { ASSERT(markCount == bitCount); } } } for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; // Reset the allocation pointers. They will be set to the // limits of the retained data. lSpace->lowerAllocPtr = lSpace->bottom; lSpace->upperAllocPtr = lSpace->top; } if (debugOptions & DEBUG_GC) Log("GC: Check weak refs\n"); /* Detect unreferenced streams, windows etc. */ GCheckWeakRefs(); // Check that the heap is not overfull. We make sure the marked // mutable and immutable data is no more than 90% of the // corresponding areas. This is a very coarse adjustment. { POLYUNSIGNED iMarked = 0, mMarked = 0; POLYUNSIGNED iSpace = 0, mSpace = 0; for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; iMarked += lSpace->i_marked; mMarked += lSpace->m_marked; if (! lSpace->allocationSpace) { if (lSpace->isMutable) mSpace += lSpace->spaceSize(); else iSpace += lSpace->spaceSize(); } } // Add space if necessary and possible. while (iMarked > iSpace - iSpace/10 && gHeapSizeParameters.AddSpaceBeforeCopyPhase(false) != 0) iSpace += gMem.DefaultSpaceSize(); while (mMarked > mSpace - mSpace/10 && gHeapSizeParameters.AddSpaceBeforeCopyPhase(true) != 0) mSpace += gMem.DefaultSpaceSize(); } /* Compact phase */ GCCopyPhase(); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Copy"); // Update Phase. if (debugOptions & DEBUG_GC) Log("GC: Update\n"); GCUpdatePhase(); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Update"); { POLYUNSIGNED iUpdated = 0, mUpdated = 0, iMarked = 0, mMarked = 0; for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; iMarked += lSpace->i_marked; mMarked += lSpace->m_marked; if (lSpace->isMutable) mUpdated += lSpace->updated; else iUpdated += lSpace->updated; } ASSERT(iUpdated+mUpdated == iMarked+mMarked); } // Delete empty spaces. gMem.RemoveEmptyLocals(); if (debugOptions & DEBUG_GC_ENHANCED) { for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; Log("GC: %s space %p %d free in %d words %2.1f%% full\n", lSpace->spaceTypeString(), lSpace, lSpace->freeSpace(), lSpace->spaceSize(), ((float)lSpace->allocatedSpace()) * 100 / (float)lSpace->spaceSize()); } } // Compute values for statistics globalStats.setSize(PSS_AFTER_LAST_GC, 0); globalStats.setSize(PSS_AFTER_LAST_FULLGC, 0); globalStats.setSize(PSS_ALLOCATION, 0); globalStats.setSize(PSS_ALLOCATION_FREE, 0); for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; POLYUNSIGNED free = space->freeSpace(); globalStats.incSize(PSS_AFTER_LAST_GC, free*sizeof(PolyWord)); globalStats.incSize(PSS_AFTER_LAST_FULLGC, free*sizeof(PolyWord)); if (space->allocationSpace) { if (space->allocatedSpace() > space->freeSpace()) // It's more than half full gMem.ConvertAllocationSpaceToLocal(space); else { globalStats.incSize(PSS_ALLOCATION, free*sizeof(PolyWord)); globalStats.incSize(PSS_ALLOCATION_FREE, free*sizeof(PolyWord)); } } #ifdef FILL_UNUSED_MEMORY memset(space->bottom, 0xaa, (char*)space->upperAllocPtr - (char*)space->bottom); #endif if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: %s space %p %d free in %d words %2.1f%% full\n", space->spaceTypeString(), space, space->freeSpace(), space->spaceSize(), ((float)space->allocatedSpace()) * 100 / (float)space->spaceSize()); } // End of garbage collection gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeEnd); // Now we've finished we can adjust the heap sizes. gHeapSizeParameters.AdjustSizeAfterMajorGC(wordsRequiredToAllocate); gHeapSizeParameters.resetMajorTimingData(); bool haveSpace = gMem.CheckForAllocation(wordsRequiredToAllocate); // Invariant: the bitmaps are completely clean. if (debugOptions & DEBUG_GC) { if (haveSpace) Log("GC: Completed successfully\n"); else Log("GC: Completed with insufficient space\n"); } if (debugOptions & DEBUG_HEAPSIZE) gMem.ReportHeapSizes("Full GC (after)"); // if (profileMode == kProfileLiveData || profileMode == kProfileLiveMutables) // printprofile(); CheckMemory(); return haveSpace; // Completed } // Create the initial heap. hsize, isize and msize are the requested heap sizes // from the user arguments in units of kbytes. // Fills in the defaults and attempts to allocate the heap. If the heap size // is too large it allocates as much as it can. The default heap size is half the // physical memory. void CreateHeap() { // Create an initial allocation space. if (gMem.CreateAllocationSpace(gMem.DefaultSpaceSize()) == 0) Exit("Insufficient memory to allocate the heap"); // Create the task farm if required if (userOptions.gcthreads != 1) { if (! gTaskFarm.Initialise(userOptions.gcthreads, 100)) Crash("Unable to initialise the GC task farm"); } // Set up the stacks for the mark phase. initialiseMarkerTables(); } class FullGCRequest: public MainThreadRequest { public: FullGCRequest(): MainThreadRequest(MTP_GCPHASEMARK) {} virtual void Perform() { doGC (0); } }; class QuickGCRequest: public MainThreadRequest { public: QuickGCRequest(POLYUNSIGNED words): MainThreadRequest(MTP_GCPHASEMARK), wordsRequired(words) {} virtual void Perform() { result = #ifndef DEBUG_ONLY_FULL_GC // If DEBUG_ONLY_FULL_GC is defined then we skip the partial GC. RunQuickGC(wordsRequired) || #endif doGC (wordsRequired); } bool result; POLYUNSIGNED wordsRequired; }; // Perform a full garbage collection. This is called either from ML via the full_gc RTS call // or from various RTS functions such as open_file to try to recover dropped file handles. void FullGC(TaskData *taskData) { FullGCRequest request; processes->MakeRootRequest(taskData, &request); if (convertedWeak) // Notify the signal thread to broadcast on the condition var when // the GC is complete. We mustn't call SignalArrived within the GC // because it locks schedLock and the main GC thread already holds schedLock. processes->SignalArrived(); } // This is the normal call when memory is exhausted and we need to garbage collect. bool QuickGC(TaskData *taskData, POLYUNSIGNED wordsRequiredToAllocate) { QuickGCRequest request(wordsRequiredToAllocate); processes->MakeRootRequest(taskData, &request); if (convertedWeak) processes->SignalArrived(); return request.result; } // Called in RunShareData. This is called as a root function void FullGCForShareCommonData(void) { doGC(0); } polyml-5.7.1/libpolyml/timing.h0000644000175000017500000000567713204034553015461 0ustar daviddavid/* Title: Header for time functions Copyright (c) 2000 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2011-12, 16. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TIMING_H_DEFINED #define _TIMING_H_DEFINED 1 #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_SYS_TIMES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #ifdef HAVE_WINDOWS_H #include #endif class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; /* time functions etc */ // Define classes for operations on time values in Windows and Posix. // N.B. In Cygwin we use both classes because in some cases we need // Windows-style timing and in other places we use Unix-style. #ifdef HAVE_WINDOWS_H class FileTimeTime { public: FileTimeTime() { t.dwLowDateTime = t.dwHighDateTime = 0; } FileTimeTime(const FILETIME f) { t = f; } void fromSeconds(unsigned u); void add(const FileTimeTime &); void sub(const FileTimeTime &); float toSeconds(void); operator FILETIME() const { return t; } protected: FILETIME t; }; #endif #ifdef HAVE_SYS_TIME_H class TimeValTime { public: TimeValTime() { t.tv_sec = 0; t.tv_usec = 0; } TimeValTime(const timeval f) { t = f; } void fromSeconds(unsigned u) { t.tv_sec = u; t.tv_usec = 0; } void add(const TimeValTime &); void sub(const TimeValTime &); float toSeconds(void) { return (float)t.tv_sec + (float)t.tv_usec / 1.0E6; } operator timeval() const { return t; } protected: struct timeval t; }; #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Native windows */ #define TIMEDATA FileTimeTime #else /* Unix and Cygwin. */ #define TIMEDATA TimeValTime #endif #ifdef HAVE_WINDOWS_H extern void addFiletimes(FILETIME *result, const FILETIME *x); extern void subFiletimes(FILETIME *result, const FILETIME *x); extern float filetimeToSeconds(const FILETIME *x); #endif #ifdef HAVE_SYS_TIME_H extern void addTimevals(struct timeval *result, const struct timeval *x); extern void subTimevals(struct timeval *result, const struct timeval *x); extern float timevalToSeconds(const struct timeval *x); #endif extern time_t getBuildTime(void); extern struct _entrypts timingEPT[]; #endif polyml-5.7.1/libpolyml/reals.h0000644000175000017500000000220313204034553015256 0ustar daviddavid/* Title: reals.h Copyright (c) 2000 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _REALS_H #define _REALS_H class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; extern double real_arg(Handle x); // Also used in "foreign.cpp" extern Handle real_result(TaskData *mdTaskData, double x); // Also used in "foreign.cpp" extern struct _entrypts realsEPT[]; #endif polyml-5.7.1/libpolyml/polyffi.cpp0000644000175000017500000005540413204034553016166 0ustar daviddavid/* Title: New Foreign Function Interface Copyright (c) 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #if (defined(_WIN32) || (defined(HAVE_DLOPEN))) #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_DLFCN_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_STRING_H #include #endif #include "globals.h" // TODO: Do we need this?? // We need to include globals.h before in mingw64 otherwise // it messes up POLYUFMT/POLYSFMT. #include #include #include "arb.h" #include "save_vec.h" #include "polyffi.h" #include "run_time.h" #include "sys.h" #include "processes.h" #include "polystring.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #include "Console.h" /* For hApplicationInstance. */ #endif #include "scanaddrs.h" #include "diagnostics.h" #include "reals.h" #include "rts_module.h" #include "rtsentry.h" static Handle poly_ffi (TaskData *taskData, Handle args, Handle code); extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyFFIGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolySizeFloat(); POLYEXTERNALSYMBOL POLYUNSIGNED PolySizeDouble(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyFFIGetError(PolyWord addr); POLYEXTERNALSYMBOL POLYUNSIGNED PolyFFISetError(PolyWord err); } static struct _abiTable { const char *abiName; ffi_abi abiCode; } abiTable[] = { // Unfortunately the ABI entries are enums rather than #defines so we // can't test individual entries. #ifdef X86_WIN32 {"sysv", FFI_SYSV}, {"stdcall", FFI_STDCALL}, {"thiscall", FFI_THISCALL}, {"fastcall", FFI_FASTCALL}, {"ms_cdecl", FFI_MS_CDECL}, #elif defined(X86_WIN64) {"win64", FFI_WIN64}, #elif defined(X86_ANY) {"sysv", FFI_SYSV}, {"unix64", FFI_UNIX64}, #endif { "default", FFI_DEFAULT_ABI} }; // Table of constants returned by call 51 static int constantTable[] = { FFI_DEFAULT_ABI, // Default ABI FFI_TYPE_VOID, // Type codes FFI_TYPE_INT, FFI_TYPE_FLOAT, FFI_TYPE_DOUBLE, FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32, FFI_TYPE_UINT64, FFI_TYPE_SINT64, FFI_TYPE_STRUCT, FFI_TYPE_POINTER, FFI_SIZEOF_ARG // Minimum size for result space }; // Table of predefined ffi types static ffi_type *ffiTypeTable[] = { &ffi_type_void, &ffi_type_uint8, &ffi_type_sint8, &ffi_type_uint16, &ffi_type_sint16, &ffi_type_uint32, &ffi_type_sint32, &ffi_type_uint64, &ffi_type_sint64, &ffi_type_float, &ffi_type_double, &ffi_type_pointer, &ffi_type_uchar, // These are all aliases for the above &ffi_type_schar, &ffi_type_ushort, &ffi_type_sshort, &ffi_type_uint, &ffi_type_sint, &ffi_type_ulong, &ffi_type_slong }; // Callback entry table static struct _cbStructEntry { PolyWord mlFunction; // The ML function to call void *closureSpace; // Space allocated for the closure void *resultFunction; // Executable address for the function. Needed to free. } *callbackTable; static unsigned callBackEntries = 0; static PLock callbackTableLock; // Mutex to protect table. static Handle mkAbitab(TaskData *taskData, void*, char *p); static void callbackEntryPt(ffi_cif *cif, void *ret, void* args[], void *data); static Handle toSysWord(TaskData *taskData, void *p) { return Make_sysword(taskData, (uintptr_t)p); } Handle poly_ffi(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, code->Word()); switch (c) { case 0: // malloc { POLYUNSIGNED size = getPolyUnsigned(taskData, args->Word()); return toSysWord(taskData, malloc(size)); } case 1: // free { void *mem = *(void**)(args->WordP()); free(mem); return taskData->saveVec.push(TAGGED(0)); } case 2: // Load library { TempString libName(args->Word()); #if (defined(_WIN32) && ! defined(__CYGWIN__)) HINSTANCE lib = LoadLibrary(libName); if (lib == NULL) { char buf[256]; #if (defined(UNICODE)) _snprintf(buf, sizeof(buf), "Loading <%S> failed. Error %lu", (LPCTSTR)libName, GetLastError()); #else _snprintf(buf, sizeof(buf), "Loading <%s> failed. Error %lu", (const char*)libName, GetLastError()); #endif buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #else void *lib = dlopen(libName, RTLD_LAZY); if (lib == NULL) { char buf[256]; snprintf(buf, sizeof(buf), "Loading <%s> failed: %s", (const char *)libName, dlerror()); buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #endif return toSysWord(taskData, lib); } case 3: // Load address of executable. { #if (defined(_WIN32) && ! defined(__CYGWIN__)) HINSTANCE lib = hApplicationInstance; #else void *lib = dlopen(NULL, RTLD_LAZY); if (lib == NULL) { char buf[256]; snprintf(buf, sizeof(buf), "Loading address of executable failed: %s", dlerror()); buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #endif return toSysWord(taskData, lib); } case 4: // Unload library - Is this actually going to be used? { #if (defined(_WIN32) && ! defined(__CYGWIN__)) HMODULE hMod = *(HMODULE*)(args->WordP()); if (! FreeLibrary(hMod)) raise_syscall(taskData, "FreeLibrary failed", GetLastError()); #else void *lib = *(void**)(args->WordP()); if (dlclose(lib) != 0) { char buf[256]; snprintf(buf, sizeof(buf), "dlclose failed: %s", dlerror()); buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #endif return taskData->saveVec.push(TAGGED(0)); } case 5: // Load the address of a symbol from a library. { TempCString symName(args->WordP()->Get(1)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) HMODULE hMod = *(HMODULE*)(args->WordP()->Get(0).AsAddress()); void *sym = (void*)GetProcAddress(hMod, symName); if (sym == NULL) { char buf[256]; _snprintf(buf, sizeof(buf), "Loading symbol <%s> failed. Error %lu", (LPCSTR)symName, GetLastError()); buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #else void *lib = *(void**)(args->WordP()->Get(0).AsAddress()); void *sym = dlsym(lib, symName); if (sym == NULL) { char buf[256]; snprintf(buf, sizeof(buf), "load_sym <%s> : %s", (const char *)symName, dlerror()); buf[sizeof(buf)-1] = 0; // Terminate just in case raise_exception_string(taskData, EXC_foreign, buf); } #endif return toSysWord(taskData, sym); } // Libffi functions case 50: // Return a list of available ABIs return makeList(taskData, sizeof(abiTable)/sizeof(abiTable[0]), (char*)abiTable, sizeof(abiTable[0]), 0, mkAbitab); case 51: // A constant from the table { unsigned index = get_C_unsigned(taskData, args->Word()); if (index >= sizeof(constantTable) / sizeof(constantTable[0])) raise_exception_string(taskData, EXC_foreign, "Index out of range"); return Make_arbitrary_precision(taskData, constantTable[index]); } case 52: // Return an FFI type { unsigned index = get_C_unsigned(taskData, args->Word()); if (index >= sizeof(ffiTypeTable) / sizeof(ffiTypeTable[0])) raise_exception_string(taskData, EXC_foreign, "Index out of range"); return toSysWord(taskData, ffiTypeTable[index]); } case 53: // Extract fields from ffi type. { ffi_type *ffit = *(ffi_type**)(args->WordP()); Handle sizeHandle = Make_arbitrary_precision(taskData, ffit->size); Handle alignHandle = Make_arbitrary_precision(taskData, ffit->alignment); Handle typeHandle = Make_arbitrary_precision(taskData, ffit->type); Handle elemHandle = toSysWord(taskData, ffit->elements); Handle resHandle = alloc_and_save(taskData, 4); resHandle->WordP()->Set(0, sizeHandle->Word()); resHandle->WordP()->Set(1, alignHandle->Word()); resHandle->WordP()->Set(2, typeHandle->Word()); resHandle->WordP()->Set(3, elemHandle->Word()); return resHandle; } case 54: // Construct an ffi type. { // This is probably only used to create structs. size_t size = getPolyUnsigned(taskData, args->WordP()->Get(0)); unsigned short align = get_C_ushort(taskData, args->WordP()->Get(1)); unsigned short type = get_C_ushort(taskData, args->WordP()->Get(2)); unsigned nElems = 0; for (PolyWord p = args->WordP()->Get(3); !ML_Cons_Cell::IsNull(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) nElems++; size_t space = sizeof(ffi_type); // If we need the elements add space for the elements plus // one extra for the zero terminator. if (nElems != 0) space += (nElems+1) * sizeof(ffi_type *); ffi_type *result = (ffi_type*)calloc(1, space); // Raise an exception rather than returning zero. if (result == 0) raise_syscall(taskData, "Insufficient memory", ENOMEM); ffi_type **elem = 0; if (nElems != 0) elem = (ffi_type **)(result+1); result->size = size; result->alignment = align; result->type = type; result->elements = elem; if (elem != 0) { for (PolyWord p = args->WordP()->Get(3); !ML_Cons_Cell::IsNull(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) { PolyWord e = ((ML_Cons_Cell*)p.AsObjPtr())->h; *elem++ = *(ffi_type**)(e.AsAddress()); } *elem = 0; } return toSysWord(taskData, result); } case 55: // Create a CIF. This contains all the types and some extra information. // The result is in allocated memory followed immediately by the argument type vector. { ffi_abi abi = (ffi_abi)get_C_ushort(taskData, args->WordP()->Get(0)); ffi_type *rtype = *(ffi_type **)args->WordP()->Get(1).AsAddress(); unsigned nArgs = 0; for (PolyWord p = args->WordP()->Get(2); !ML_Cons_Cell::IsNull(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) nArgs++; // Allocate space for the cif followed by the argument type vector size_t space = sizeof(ffi_cif) + nArgs * sizeof(ffi_type*); ffi_cif *cif = (ffi_cif *)malloc(space); if (cif == 0) raise_syscall(taskData, "Insufficient memory", ENOMEM); ffi_type **atypes = (ffi_type **)(cif+1); // Copy the arguments types. ffi_type **at = atypes; for (PolyWord p = args->WordP()->Get(2); !ML_Cons_Cell::IsNull(p); p = ((ML_Cons_Cell*)p.AsObjPtr())->t) { PolyWord e = ((ML_Cons_Cell*)p.AsObjPtr())->h; *at++ = *(ffi_type**)(e.AsAddress()); } ffi_status status = ffi_prep_cif(cif, abi, nArgs, rtype, atypes); if (status == FFI_BAD_TYPEDEF) raise_exception_string(taskData, EXC_foreign, "Bad typedef in ffi_prep_cif"); else if (status == FFI_BAD_ABI) raise_exception_string(taskData, EXC_foreign, "Bad ABI in ffi_prep_cif"); else if (status != FFI_OK) raise_exception_string(taskData, EXC_foreign, "Error in ffi_prep_cif"); return toSysWord(taskData, cif); } case 56: // Call a function. { ffi_cif *cif = *(ffi_cif **)args->WordP()->Get(0).AsAddress(); void *f = *(void**)args->WordP()->Get(1).AsAddress(); void *res = *(void**)args->WordP()->Get(2).AsAddress(); void **arg = *(void***)args->WordP()->Get(3).AsAddress(); // We release the ML memory across the call so a GC can occur // even if this thread is blocked in the C code. processes->ThreadReleaseMLMemory(taskData); ffi_call(cif, FFI_FN(f), res, arg); // Do we need to save the value of errno/GetLastError here? processes->ThreadUseMLMemory(taskData); return taskData->saveVec.push(TAGGED(0)); } case 57: // Create a callback. { #ifdef INTERPRETED raise_exception_string(taskData, EXC_foreign, "Callbacks are not implemented in the byte code interpreter"); #endif Handle mlFunction = taskData->saveVec.push(args->WordP()->Get(0)); ffi_cif *cif = *(ffi_cif **)args->WordP()->Get(1).AsAddress(); void *resultFunction; // Allocate the memory. resultFunction is set to the executable address in or related to // the memory. ffi_closure *closure = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &resultFunction); if (closure == 0) raise_exception_string(taskData, EXC_foreign, "Callbacks not implemented or insufficient memory"); PLocker pLocker(&callbackTableLock); // Find a free entry in the table if there is one. unsigned entryNo = 0; while (entryNo < callBackEntries && callbackTable[entryNo].closureSpace != 0) entryNo++; if (entryNo == callBackEntries) { // Need to grow the table. struct _cbStructEntry *newTable = (struct _cbStructEntry*)realloc(callbackTable, (callBackEntries+1)*sizeof(struct _cbStructEntry)); if (newTable == 0) raise_exception_string(taskData, EXC_foreign, "Unable to allocate memory for callback table"); callbackTable = newTable; callBackEntries++; } callbackTable[entryNo].mlFunction = mlFunction->Word(); callbackTable[entryNo].closureSpace = closure; callbackTable[entryNo].resultFunction = resultFunction; if (ffi_prep_closure_loc(closure, cif, callbackEntryPt, (void*)((uintptr_t)entryNo), resultFunction) != FFI_OK) raise_exception_string(taskData, EXC_foreign,"libffi error: ffi_prep_closure_loc failed"); return toSysWord(taskData, resultFunction); } case 58: // Free an existing callback. { // The address returned from call 57 above is the executable address that can // be passed as a callback function. The writable memory address returned // as the result of ffi_closure_alloc may or may not be the same. To be safe // we need to search the table. void *resFun = *(void**)args->Word().AsAddress(); PLocker pLocker(&callbackTableLock); for (unsigned i = 0; i < callBackEntries; i++) { if (callbackTable[i].resultFunction == resFun) { ffi_closure_free(callbackTable[i].closureSpace); callbackTable[i].closureSpace = 0; callbackTable[i].resultFunction = 0; callbackTable[i].mlFunction = TAGGED(0); // Release the ML function return taskData->saveVec.push(TAGGED(0)); } } raise_exception_string(taskData, EXC_foreign, "Invalid callback entry"); } default: { char msg[100]; sprintf(msg, "Unknown ffi function: %d", c); raise_exception_string(taskData, EXC_foreign, msg); return 0; } } } // Construct an entry in the ABI table. static Handle mkAbitab(TaskData *taskData, void *arg, char *p) { struct _abiTable *ab = (struct _abiTable *)p; // Construct a pair of the string and the code Handle name = taskData->saveVec.push(C_string_to_Poly(taskData, ab->abiName)); Handle code = Make_arbitrary_precision(taskData, ab->abiCode); Handle result = alloc_and_save(taskData, 2); result->WordP()->Set(0, name->Word()); result->WordP()->Set(1, code->Word()); return result; } // This is the C function that will get control when any callback is made. The "data" // argument is the index of the entry in the callback table.. static void callbackEntryPt(ffi_cif *cif, void *ret, void* args[], void *data) { uintptr_t cbIndex = (uintptr_t)data; ASSERT(cbIndex < callBackEntries); // We should get the task data for the thread that is running this code. // If this thread has been created by the foreign code we will have to // create a new one here. TaskData *taskData = processes->GetTaskDataForThread(); if (taskData == 0) { try { taskData = processes->CreateNewTaskData(0, 0, 0, TAGGED(0)); } catch (std::bad_alloc &) { ::Exit("Unable to create thread data - insufficient memory"); } catch (MemoryException &) { ::Exit("Unable to create thread data - insufficient memory"); } } else processes->ThreadUseMLMemory(taskData); // We may get multiple calls to call-backs and we mustn't risk // overflowing the save-vec. Handle mark = taskData->saveVec.mark(); // In the future we might want to call C functions without some of the // overhead that comes with an RTS call which may allocate in ML // memory. If we do that we also have to ensure that callbacks // don't allocate, so this code would have to change. Handle mlEntryHandle; { // Get the ML function. Lock to avoid another thread moving // callbackTable under our feet. PLocker pLocker(&callbackTableLock); struct _cbStructEntry *cbEntry = &callbackTable[cbIndex]; mlEntryHandle = taskData->saveVec.push(cbEntry->mlFunction); } // Create a pair of the arg vector and the result pointer. Handle argHandle = toSysWord(taskData, args); Handle resHandle = toSysWord(taskData, ret); // Result must go in here. Handle pairHandle = alloc_and_save(taskData, 2); pairHandle->WordP()->Set(0, argHandle->Word()); pairHandle->WordP()->Set(1, resHandle->Word()); taskData->EnterCallbackFunction(mlEntryHandle, pairHandle); taskData->saveVec.reset(mark); // Release ML memory now we're going back to C. processes->ThreadReleaseMLMemory(taskData); } class PolyFFI: public RtsModule { public: virtual void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static PolyFFI polyFFIModule; // We need to scan the callback table. void PolyFFI::GarbageCollect(ScanAddress *process) { for (unsigned i = 0; i < callBackEntries; i++) process->ScanRuntimeWord(&callbackTable[i].mlFunction); } #else // The foreign function interface isn't available. #include "polyffi.h" #include "run_time.h" #include "sys.h" Handle poly_ffi(TaskData *taskData, Handle args, Handle code) { raise_exception_string(taskData, EXC_foreign, "The foreign function interface is not available on this platform"); } #endif // General interface to IO. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyFFIGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = poly_ffi(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // These functions are needed in the compiler POLYUNSIGNED PolySizeFloat() { return TAGGED(ffi_type_float.size).AsUnsigned(); } POLYUNSIGNED PolySizeDouble() { return TAGGED(ffi_type_double.size).AsUnsigned(); } // Get either errno or GetLastError POLYUNSIGNED PolyFFIGetError(PolyWord addr) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) addr.AsObjPtr()->Set(0, PolyWord::FromUnsigned(GetLastError())); #else addr.AsObjPtr()->Set(0, PolyWord::FromUnsigned((POLYUNSIGNED)errno)); #endif return 0; } // The argument is a SysWord.word value i.e. the address of a byte cell. POLYUNSIGNED PolyFFISetError(PolyWord err) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) SetLastError((DWORD)(err.AsObjPtr()->Get(0).AsUnsigned())); #else errno = err.AsObjPtr()->Get(0).AsSigned(); #endif return 0; } struct _entrypts polyFFIEPT[] = { { "PolyFFIGeneral", (polyRTSFunction)&PolyFFIGeneral}, { "PolySizeFloat", (polyRTSFunction)&PolySizeFloat}, { "PolySizeDouble", (polyRTSFunction)&PolySizeDouble}, { "PolyFFIGetError", (polyRTSFunction)&PolyFFIGetError}, { "PolyFFISetError", (polyRTSFunction)&PolyFFISetError}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/PolyLib.vcxproj0000644000175000017500000007541613204034553017006 0ustar daviddavid Debug Win32 IntDebug Win32 IntDebug x64 IntRelease Win32 IntRelease x64 Release Win32 Debug x64 Release x64 {0BA5D5B5-F85B-4C49-8A27-67186FA68922} PolyLib 8.1 DynamicLibrary true v140_xp Unicode DynamicLibrary true v140_xp Unicode DynamicLibrary false v140_xp true Unicode DynamicLibrary false v140_xp true Unicode DynamicLibrary true v140_xp Unicode DynamicLibrary true v140_xp Unicode DynamicLibrary false v140_xp true Unicode DynamicLibrary false v140_xp true Unicode .dll .dll .dll .dll .dll .dll .dll .dll Level3 Disabled true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreadedDebug true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 Disabled true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreadedDebug true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 Disabled true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86_64;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreadedDebug true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 Disabled true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86_64;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreadedDebug true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 MaxSpeed true true true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreaded true true true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 MaxSpeed true true true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreaded true true true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 MaxSpeed true true true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86_64;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreaded true true true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false Level3 MaxSpeed true true true ..;..\libffi\include;..\libffi\msvc32include;..\libffi\src\x86;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;POLYLIB_EXPORTS;HOSTARCHITECTURE_X86_64;LONG_LONG_MAX=_I64_MAX;%(PreprocessorDefinitions) MultiThreaded true true true ws2_32.lib;%(AdditionalDependencies) Windows 6.0 false true false true false true false true false true true true true true true true true true true true true {6d86bc6f-e74e-40c5-9881-f8bb606bca78} true true false true false true true true Document cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml /nologo /DWINDOWS /Fo $(IntDir)%(Filename).obj /c /coff "$(IntDir)%(Filename).asm" $(IntDir)%(Filename).obj true true true true true true Document cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj cl /nologo /EP /I. /D_MSC_VER "%(FullPath)" > $(IntDir)%(Filename).asm ml64 /nologo /Fo $(IntDir)%(Filename).obj /c $(IntDir)%(Filename).asm $(IntDir)%(Filename).obj polyml-5.7.1/libpolyml/gc_share_phase.cpp0000644000175000017500000005766513204034553017464 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector - Data sharing phase Copyright (c) 2012, 2017 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* GC Sharing pass. This pass is invoked only if the heap sizing code detects that heap space is running very short because it adds a very considerable overhead to GC. It aims to reduce the size of the live data in a similar way to the data sharing function PolyML.shareCommonData by merging immutable cells that contain data that cannot be distinguished. This version of the code now does a deep structure merge in a similar way to the full sharing function. This code first does a full pass over the heap creating lists of cells that could possibly be merged. There are separate lists for byte and word objects up to a fixed size. Larger objects and other objects are not considered. Because all the items in a list have the same length and type (flag bits) we can use the length word to link the items in the list. A consequence of this is that positive long precision values can be shared but negative values cannot. There is a sharing function that first distributes items into a hash table. Then each hash table is sorted and as part of the sorting process cells with the same contents are merged. One cell is chosen and the length words on the others are set to be forwarding pointers to the chosen cell. Hashing allows for easy parallel processing. The structure sharing code works by first sharing the byte data which cannot contain pointers. Then the word data is processed to separate out "tail" cells that contain only tagged integers or pointers to cells that either cannot be merged, such as mutables, or those that have already been processed, such as the byte data. Any pointers to shared data are updated to point to the merged cell. The tail cells are then sorted and shared using the sharing function and become part of the "processed" set. This process is repeated to find cells that are now tails and so on. Compared with the full sharing code this is expensive since it requires repeated scans of the list of unprocessed cells. In particular there may be cells that form loops (basically closures for mutually recusive functions) and if they are present they and anything that points directly or indirectly at them will never be removed from the list. We stop when it appears that we are not making progress and simply do a final bit-wise share of the remainder. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #include "globals.h" #include "processes.h" #include "gc.h" #include "scanaddrs.h" #include "bitmap.h" #include "memmgr.h" #include "diagnostics.h" #include "gctaskfarm.h" #include "heapsizing.h" class ObjEntry { public: ObjEntry(): objList(0), objCount(0), shareCount(0) {} PolyObject *objList; POLYUNSIGNED objCount; POLYUNSIGNED shareCount; }; // There is an instance of this class for each combination of size and // word/byte. class SortVector { public: SortVector(): totalCount(0), carryOver(0) {} void AddToVector(PolyObject *obj, POLYUNSIGNED length); void SortData(void); POLYUNSIGNED TotalCount() const { return totalCount; } POLYUNSIGNED CurrentCount() const { return baseObject.objCount; } POLYUNSIGNED Shared() const; void SetLengthWord(POLYUNSIGNED l) { lengthWord = l; } POLYUNSIGNED CarryOver() const { return carryOver; } static void hashAndSortAllTask(GCTaskId*, void *a, void *b); static void sharingTask(GCTaskId*, void *a, void *b); static void wordDataTask(GCTaskId*, void *a, void *b); private: void sortList(PolyObject *head, POLYUNSIGNED nItems, POLYUNSIGNED &count); ObjEntry baseObject, processObjects[256]; POLYUNSIGNED totalCount; POLYUNSIGNED lengthWord; POLYUNSIGNED carryOver; }; POLYUNSIGNED SortVector::Shared() const { // Add all the sharing counts POLYUNSIGNED shareCount = baseObject.shareCount; for (unsigned i = 0; i < 256; i++) shareCount += processObjects[i].shareCount; return shareCount; } void SortVector::AddToVector(PolyObject *obj, POLYUNSIGNED length) { obj->SetShareChain(baseObject.objList); baseObject.objList = obj; baseObject.objCount++; totalCount++; } // The number of byte and word entries. // Objects of up to and including this size are shared. // Byte objects include strings so it is more likely that // larger objects will share. Word objects that share // are much more likely to be 2 or 3 words. #define NUM_BYTE_VECTORS 23 #define NUM_WORD_VECTORS 11 class GetSharing: public RecursiveScanWithStack { public: GetSharing(); void SortData(void); static void shareByteData(GCTaskId *, void *, void *); static void shareWordData(GCTaskId *, void *, void *); static void shareRemainingWordData(GCTaskId *, void *, void *); protected: virtual bool TestForScan(PolyWord *); virtual void MarkAsScanning(PolyObject *); virtual void StackOverflow(void) { } // Ignore stack overflow virtual void Completed(PolyObject *); private: // The head of chains of cells of the same size SortVector byteVectors[NUM_BYTE_VECTORS]; SortVector wordVectors[NUM_WORD_VECTORS]; POLYUNSIGNED largeWordCount, largeByteCount, excludedCount; public: POLYUNSIGNED totalVisited, byteAdded, wordAdded, totalSize; }; GetSharing::GetSharing() { for (unsigned i = 0; i < NUM_BYTE_VECTORS; i++) byteVectors[i].SetLengthWord((POLYUNSIGNED)i | _OBJ_BYTE_OBJ); for (unsigned j = 0; j < NUM_WORD_VECTORS; j++) wordVectors[j].SetLengthWord(j); largeWordCount = largeByteCount = excludedCount = 0; totalVisited = byteAdded = wordAdded = totalSize = 0; } bool GetSharing::TestForScan(PolyWord *pt) { PolyWord p = *pt; ASSERT(p.IsDataPtr()); PolyObject *obj = p.AsObjPtr(); while (obj->ContainsForwardingPtr()) { obj = obj->GetForwardingPtr(); *pt = obj; } ASSERT(obj == (*pt).AsObjPtr()); PolyWord *lengthWord = ((PolyWord*)obj) - 1; LocalMemSpace *space = gMem.LocalSpaceForAddress(lengthWord); if (space == 0) return false; // Ignore it if it points to a permanent area if (space->bitmap.TestBit(space->wordNo(lengthWord))) return false; ASSERT(obj->ContainsNormalLengthWord()); totalVisited += 1; totalSize += obj->Length() + 1; return true; } void GetSharing::MarkAsScanning(PolyObject *obj) { ASSERT(obj->ContainsNormalLengthWord()); PolyWord *lengthWord = ((PolyWord*)obj) - 1; LocalMemSpace *space = gMem.LocalSpaceForAddress(lengthWord); ASSERT(! space->bitmap.TestBit(space->wordNo(lengthWord))); space->bitmap.SetBit(space->wordNo(lengthWord)); } void GetSharing::Completed(PolyObject *obj) { POLYUNSIGNED L = obj->LengthWord(); // We have tables for word objects and byte objects // We chain entries together using the length word so it // is important that we only do this for objects that // have no other bits in the header, such as the sign bit. if ((L & _OBJ_PRIVATE_FLAGS_MASK) == 0) { POLYUNSIGNED length = obj->Length(); if (length < NUM_WORD_VECTORS) wordVectors[length].AddToVector(obj, length); else largeWordCount++; wordAdded++; } else if ((L & _OBJ_PRIVATE_FLAGS_MASK) == _OBJ_BYTE_OBJ) { POLYUNSIGNED length = obj->Length(); if (length < NUM_BYTE_VECTORS) byteVectors[length].AddToVector(obj, length); else largeByteCount++; byteAdded++; } else if (! OBJ_IS_CODE_OBJECT(L) && ! OBJ_IS_MUTABLE_OBJECT(L)) excludedCount++; // Code and mutables can't be shared - see what could be } // Quicksort the list to detect cells with the same content. These are made // to share and removed from further sorting. void SortVector::sortList(PolyObject *head, POLYUNSIGNED nItems, POLYUNSIGNED &shareCount) { while (nItems > 2) { size_t bytesToCompare = OBJ_OBJECT_LENGTH(lengthWord)*sizeof(PolyWord); PolyObject *median = head; head = head->GetShareChain(); median->SetLengthWord(lengthWord); PolyObject *left = 0, *right = 0; POLYUNSIGNED leftCount = 0, rightCount = 0; while (head != 0) { PolyObject *next = head->GetShareChain(); int res = memcmp(median, head, bytesToCompare); if (res == 0) { // Equal - they can share head->SetForwardingPtr(median); shareCount++; } else if (res < 0) { head->SetShareChain(left); left = head; leftCount++; } else { head->SetShareChain(right); right = head; rightCount++; } head = next; } // We can now drop the median and anything that shares with it. // Process the smaller partition recursively and the larger by // tail recursion. if (leftCount < rightCount) { sortList(left, leftCount, shareCount); head = right; nItems = rightCount; } else { sortList(right, rightCount, shareCount); head = left; nItems = leftCount; } } if (nItems == 1) head->SetLengthWord(lengthWord); else if (nItems == 2) { PolyObject *next = head->GetShareChain(); head->SetLengthWord(lengthWord); if (memcmp(head, next, OBJ_OBJECT_LENGTH(lengthWord)*sizeof(PolyWord)) == 0) { next->SetForwardingPtr(head); shareCount++; } else next->SetLengthWord(lengthWord); } } void SortVector::sharingTask(GCTaskId*, void *a, void *b) { SortVector *s = (SortVector *)a; ObjEntry *o = (ObjEntry*)b; s->sortList(o->objList, o->objCount, o->shareCount); } // Process one level of the word data. // N.B. The length words are updated without any locking. This is safe // because all length words are initially chain entries and a chain entry // can be replaced by another chain entry, a forwarding pointer or a normal // length word. Forwarding pointers and normal length words are only ever // set once. There is a small chance that we could lose some sharing as a // result of a race condition if a thread defers an object because it // contains a pointer with a chain entry and later sees an otherwise // equal object where another thread has replaced the chain with a // normal address, adds it to the list for immediate processing and // so never compares the two. void SortVector::wordDataTask(GCTaskId*, void *a, void *) { SortVector *s = (SortVector*)a; // Partition the objects between those that have pointers to objects that are // still to be processed and those that have been processed. if (s->baseObject.objList == 0) return; PolyObject *h = s->baseObject.objList; s->baseObject.objList = 0; s->baseObject.objCount = 0; POLYUNSIGNED words = OBJ_OBJECT_LENGTH(s->lengthWord); s->carryOver = 0; for (unsigned i = 0; i < 256; i++) { // Clear the entries in the hash table but not the sharing count. s->processObjects[i].objList = 0; s->processObjects[i].objCount = 0; } while (h != 0) { PolyObject *next = h->GetShareChain(); bool deferred = false; for (POLYUNSIGNED i = 0; i < words; i++) { PolyWord w = h->Get(i); if (w.IsDataPtr()) { PolyObject *p = w.AsObjPtr(); // Update the addresses of objects that have been merged if (p->ContainsForwardingPtr()) { h->Set(i, p->GetForwardingPtr()); s->carryOver++; } else if (p->ContainsShareChain()) { // If it is still to be shared leave it deferred = true; break; } } } if (deferred) { // We can't do it yet: add it back to the list h->SetShareChain(s->baseObject.objList); s->baseObject.objList = h; s->baseObject.objCount++; } else { // Add it to the hash table. unsigned char hash = 0; for (POLYUNSIGNED i = 0; i < words*sizeof(PolyWord); i++) hash += h->AsBytePtr()[i]; h->SetShareChain(s->processObjects[hash].objList); s->processObjects[hash].objList = h; s->processObjects[hash].objCount++; } h = next; } s->SortData(); } // Sort the entries in the hash table. void SortVector::SortData() { for (unsigned j = 0; j < 256; j++) { ObjEntry *oentry = &processObjects[j]; // Sort this entry. If it's very small just process it now. switch (oentry->objCount) { case 0: break; // Nothing there case 1: // Singleton - just restore the length word oentry->objList->SetLengthWord(lengthWord); break; case 2: { // Two items - process now PolyObject *obj1 = oentry->objList; PolyObject *obj2 = obj1->GetShareChain(); obj1->SetLengthWord(lengthWord); if (memcmp(obj1, obj2, OBJ_OBJECT_LENGTH(lengthWord)*sizeof(PolyWord)) == 0) { obj2->SetForwardingPtr(obj1); oentry->shareCount++; } else obj2->SetLengthWord(lengthWord); break; } default: gpTaskFarm->AddWorkOrRunNow(sharingTask, this, oentry); } } } void SortVector::hashAndSortAllTask(GCTaskId*, void *a, void *b) { SortVector *s = (SortVector *)a; // Hash the contents of the base object then sort them. for (unsigned i = 0; i < 256; i++) { // Clear the entries in the hash table but not the sharing count. s->processObjects[i].objList = 0; s->processObjects[i].objCount = 0; } PolyObject *h = s->baseObject.objList; POLYUNSIGNED bytes = OBJ_OBJECT_LENGTH(s->lengthWord)*sizeof(PolyWord); while (h != 0) { PolyObject *next = h->GetShareChain(); unsigned char hash = 0; for (POLYUNSIGNED j = 0; j < bytes; j++) hash += h->AsBytePtr()[j]; h->SetShareChain(s->processObjects[hash].objList); s->processObjects[hash].objList = h; s->processObjects[hash].objCount++; h = next; } s->SortData(); } // Look for sharing between byte data. These cannot contain pointers // so they can all be processed together. void GetSharing::shareByteData(GCTaskId *, void *a, void *) { GetSharing *s = (GetSharing*)a; for (unsigned i = 0; i < NUM_BYTE_VECTORS; i++) { if (s->byteVectors[i].CurrentCount() != 0) gpTaskFarm->AddWorkOrRunNow(SortVector::hashAndSortAllTask, &(s->byteVectors[i]), 0); } } // Process word data at this particular level void GetSharing::shareWordData(GCTaskId *, void *a, void *) { GetSharing *s = (GetSharing*)a; for (unsigned i = 0; i < NUM_WORD_VECTORS; i++) { if (s->wordVectors[i].CurrentCount() != 0) gpTaskFarm->AddWorkOrRunNow(SortVector::wordDataTask, &(s->wordVectors[i]), 0); } } // Share any entries left. void GetSharing::shareRemainingWordData(GCTaskId *, void *a, void *) { GetSharing *s = (GetSharing*)a; for (unsigned i = 0; i < NUM_WORD_VECTORS; i++) { if (s->wordVectors[i].CurrentCount() != 0) gpTaskFarm->AddWorkOrRunNow(SortVector::hashAndSortAllTask, &(s->wordVectors[i]), 0); } } void GetSharing::SortData() { // First process the byte objects. They cannot contain pointers. // We create a task to do this so that we never have more threads // running than given with --gcthreads. gpTaskFarm->AddWorkOrRunNow(shareByteData, this, 0); gpTaskFarm->WaitForCompletion(); // Word data may contain pointers to other objects. If an object // has been processed its header will contain either a normal length // word or a forwarding pointer if it shares. We can process an // object if every word in it is either a tagged integer or an // address we have already processed. This works provided there // are no loops so when we reach a stage where we are unable to // process anything we simply run a final scan on the remainder. // Loops can arise from the closures of mutually recursive functions. // Now process the word entries until we have nothing left apart from loops. POLYUNSIGNED lastCount = 0, lastShared = 0; for (unsigned n = 0; n < NUM_WORD_VECTORS; n++) lastCount += wordVectors[n].CurrentCount(); for(unsigned pass = 1; lastCount != 0; pass++) { gpTaskFarm->AddWorkOrRunNow(shareWordData, this, 0); gpTaskFarm->WaitForCompletion(); // At each stage check that we have removed some items // from the lists. POLYUNSIGNED postCount = 0, postShared = 0, carryOver = 0; for (unsigned i = 0; i < NUM_WORD_VECTORS; i++) { postCount += wordVectors[i].CurrentCount(); postShared += wordVectors[i].Shared(); carryOver += wordVectors[i].CarryOver(); } if (debugOptions & DEBUG_GC) Log("GC: Share: Pass %u: %" POLYUFMT " removed (%1.1f%%) %" POLYUFMT " shared (%1.1f%%) %" POLYUFMT " remain. %" POLYUFMT " entries updated (%1.1f%%).\n", pass, lastCount-postCount, (double)(lastCount-postCount) / (double) lastCount * 100.0, postShared - lastShared, (double)(postShared - lastShared) / (double) (lastCount-postCount) * 100.0, postCount, carryOver, (double)carryOver / (double)(lastCount-postCount) * 100.0); // Condition for exiting the loop. There are some heuristics here. // If we remove less than 10% in a pass it's probably not worth continuing // unless the carry over is large. The "carry over" is the number of words updated as // a result of the last pass. It represents the extra sharing we gained in this pass // as a result of the last pass. If there are deep data structures that can be shared // we get better sharing with more passes. If the data structures are shallow we will // get as much sharing by just running the final pass. The first pass only carries // over any sharing from the byte objects so we need to run at least one more before // checking the carry over. if (pass > 1 && (lastCount - postCount) * 10 < lastCount && (carryOver*2 < (lastCount-postCount) || (lastCount - postCount) * 1000 < lastCount )) break; lastCount = postCount; lastShared = postShared; } // Process any remaining entries. There may be loops. gpTaskFarm->AddWorkOrRunNow(shareRemainingWordData, this, 0); gpTaskFarm->WaitForCompletion(); if (debugOptions & DEBUG_GC) { POLYUNSIGNED postShared = 0; for (unsigned i = 0; i < NUM_WORD_VECTORS; i++) postShared += wordVectors[i].Shared(); if (debugOptions & DEBUG_GC) Log("GC: Share: Final pass %" POLYUFMT " removed %" POLYUFMT " shared (%1.1f%%).\n", lastCount, postShared - lastShared, (double)(postShared - lastShared) / (double) lastCount * 100.0); } // Calculate the totals. POLYUNSIGNED totalSize = 0, totalShared = 0, totalRecovered = 0; for (unsigned k = 0; k < NUM_BYTE_VECTORS; k++) { totalSize += byteVectors[k].TotalCount(); POLYUNSIGNED shared = byteVectors[k].Shared(); totalShared += shared; totalRecovered += shared * (k+1); // Add 1 for the length word. if (debugOptions & DEBUG_GC) Log("GC: Share: Byte objects of size %u: %" POLYUFMT " objects %" POLYUFMT " shared\n", k, byteVectors[k].TotalCount(), byteVectors[k].Shared()); } for (unsigned l = 0; l < NUM_WORD_VECTORS; l++) { totalSize += wordVectors[l].TotalCount(); POLYUNSIGNED shared = wordVectors[l].Shared(); totalShared += shared; totalRecovered += shared * (l+1); if (debugOptions & DEBUG_GC) Log("GC: Share: Word objects of size %u: %" POLYUFMT " objects %" POLYUFMT " shared\n", l, wordVectors[l].TotalCount(), wordVectors[l].Shared()); } if (debugOptions & DEBUG_GC) { Log("GC: Share: Total %" POLYUFMT " objects, %" POLYUFMT " shared (%1.0f%%). %" POLYUFMT " words recovered.\n", totalSize, totalShared, (double)totalShared / (double)totalSize * 100.0, totalRecovered); Log("GC: Share: Excluding %" POLYUFMT " large word objects %" POLYUFMT " large byte objects and %" POLYUFMT " others\n", largeWordCount, largeByteCount, excludedCount); } gHeapSizeParameters.RecordSharingData(totalRecovered); } void GCSharingPhase(void) { mainThreadPhase = MTP_GCPHASESHARING; GetSharing sharer; for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; lSpace->bitmap.ClearBits(0, lSpace->spaceSize()); } // Scan the code areas to share any constants. We don't share the code // cells themselves. for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; sharer.ScanAddressesInRegion(space->bottom, space->top); } if (debugOptions & DEBUG_GC) Log("GC: Share: After scanning code: Total %" POLYUFMT " (%" POLYUFMT " words) byte %" POLYUFMT " word %" POLYUFMT ".\n", sharer.totalVisited, sharer.totalSize, sharer.byteAdded, sharer.wordAdded); // Process the permanent mutable areas and the code areas for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && ! space->byteOnly) sharer.ScanAddressesInRegion(space->bottom, space->top); } if (debugOptions & DEBUG_GC) Log("GC: Share: After scanning permanent: Total %" POLYUFMT " (%" POLYUFMT " words) byte %" POLYUFMT " word %" POLYUFMT ".\n", sharer.totalVisited, sharer.totalSize, sharer.byteAdded, sharer.wordAdded); // Process the RTS roots. GCModules(&sharer); if (debugOptions & DEBUG_GC) Log("GC: Share: After scanning other roots: Total %" POLYUFMT " (%" POLYUFMT " words) byte %" POLYUFMT " word %" POLYUFMT ".\n", sharer.totalVisited, sharer.totalSize, sharer.byteAdded, sharer.wordAdded); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Table"); // Sort and merge the data. sharer.SortData(); gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeIntermediate, "Sort"); } polyml-5.7.1/libpolyml/diagnostics.cpp0000644000175000017500000001132713204034553017021 0ustar daviddavid/* Title: Diagnostics Copyright (c) 2011, 2015 David C.J. Matthews Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_WINDOWS_H #include #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include "Console.h" #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #endif #include "errors.h" #include "noreturn.h" #include "globals.h" #include "diagnostics.h" #include "mpoly.h" extern FILE *polyStdout; unsigned debugOptions = 0; // Debugging options requested on command line. /*********************************************************************** * * FAILURE FUNCTIONS (moved here from mmap.c) * ***********************************************************************/ void Exit(const char *msg, ...) { va_list vl; fprintf(polyStdout, "\n"); va_start(vl, msg); vfprintf(polyStdout, msg, vl); va_end(vl); fprintf(polyStdout, "\n"); fflush(polyStdout); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (useConsole) { MessageBox(hMainWindow, _T("Poly/ML has exited"), _T("Poly/ML"), MB_OK); } #endif exit(1); } // Error condition. This should really be replaced either with ASSERTs // or exceptions. void Crash(const char *msg, ...) { va_list vl; fprintf(polyStdout, "\n"); va_start(vl, msg); vfprintf(polyStdout, msg, vl); va_end(vl); fprintf(polyStdout, "\n"); fflush(polyStdout); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (useConsole) { MessageBox(hMainWindow, _T("Poly/ML has exited"), _T("Poly/ML"), MB_OK); } #else { sigset_t set; sigemptyset(&set); sigprocmask(SIG_SETMASK,&set,NULL); } #endif abort(); exit(1); } void ExitWithError(const char *msg, int err) { fputs("\n", polyStdout); fputs(msg, polyStdout); const char *errorMsg = stringFromErrorCode(err); if (errorMsg != NULL) puts(errorMsg); fputs("\n", polyStdout); fflush(polyStdout); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (useConsole) { MessageBox(hMainWindow, _T("Poly/ML has exited"), _T("Poly/ML"), MB_OK); } #endif exit(1); } #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Default is to log with OutputDebugString static FILE *logStream = NULL; #else // Default is to log to stdout static FILE *logStream = stdout; #endif void SetLogFile(const TCHAR *fileName) { #if (defined(_WIN32) && defined(UNICODE)) FILE *stream = _wfopen(fileName, L"w"); if (stream == NULL) fprintf(polyStdout, "Unable to open debug file %S\n", fileName); else logStream = stream; #else FILE *stream = fopen(fileName, "w"); if (stream == NULL) fprintf(polyStdout, "Unable to open debug file %s\n", fileName); else logStream = stream; #endif } // For the moment log to stdout void Log(const char *msg, ...) { va_list vl; va_start(vl, msg); if (logStream) vfprintf(logStream, msg, vl); #if (defined(_WIN32) && ! defined(__CYGWIN__)) char buff[1024]; if (_vsnprintf(buff, sizeof(buff), msg, vl) > 0) ::OutputDebugStringA(buff); #endif va_end(vl); if (logStream) fflush(logStream); } // Log the size of a space as a comprehensible number void LogSize(POLYUNSIGNED wordSize) { POLYUNSIGNED size = wordSize * sizeof(PolyWord); if (size < 10*1024) Log("%" POLYUFMT, size); else { double s = (double)size; if (s < 1024000.0) Log("%1.2fK", s / 1024.0); else if (s < 1000.0 * 1024.0 * 1024.0) Log("%1.2fM", s / (1024.0 * 1024.0)); else Log("%1.2fG", s / (1024.0 * 1024.0 * 1024.0)); } } polyml-5.7.1/libpolyml/arb.h0000644000175000017500000000545113204034553014724 0ustar daviddavid/* Title: arb.h - exports signature for arb.c Copyright (c) 2000 Cambridge University Technical Services Limited Further modification Copyright 2015-16 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef ARB_H_INCLUDED #define ARB_H_INCLUDED class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; // These functions create values of type int from signed or unsigned values. extern Handle Make_arbitrary_precision(TaskData *taskData, long); extern Handle Make_arbitrary_precision(TaskData *taskData, unsigned long); extern Handle Make_arbitrary_precision(TaskData *taskData, int); extern Handle Make_arbitrary_precision(TaskData *taskData, unsigned); #ifdef HAVE_LONG_LONG extern Handle Make_arbitrary_precision(TaskData *taskData, long long); extern Handle Make_arbitrary_precision(TaskData *taskData, unsigned long long); #endif extern Handle Make_arb_from_32bit_pair(TaskData *taskData, uint32_t hi, uint32_t lo); extern Handle Make_arb_from_pair_scaled(TaskData *taskData, unsigned hi, unsigned lo, unsigned scale); #if defined(_WIN32) extern Handle Make_arb_from_Filetime(TaskData *taskData, const FILETIME &ft); #endif // This is currently used in the interpreter. extern Handle mult_longc(TaskData *taskData, Handle,Handle); // Currently used in basicio.cpp extern Handle div_longc(TaskData *taskData, Handle,Handle); extern Handle rem_longc(TaskData *taskData, Handle,Handle); // Return a uintptr_t/intptr_t value. extern POLYUNSIGNED getPolyUnsigned(TaskData *taskData, PolyWord); extern POLYSIGNED getPolySigned(TaskData *taskData, PolyWord); #define get_C_ulong getPolyUnsigned extern unsigned short get_C_ushort(TaskData *taskData, PolyWord); extern unsigned get_C_unsigned(TaskData *taskData, PolyWord); #define get_C_long getPolySigned extern short get_C_short(TaskData *taskData, PolyWord); extern int get_C_int(TaskData *taskData, PolyWord); extern double get_arbitrary_precision_as_real(PolyWord x); #if defined(_WIN32) void getFileTimeFromArb(TaskData *taskData, Handle numHandle, PFILETIME ft); #endif extern struct _entrypts arbitraryPrecisionEPT[]; #endif polyml-5.7.1/libpolyml/x86assembly_masm32.S0000644000175000017500000001505513204034553017503 0ustar daviddavid; ; Title: Assembly code routines for the poly system. ; Author: David Matthews ; Copyright (c) David C. J. Matthews 2000-2016 ; ; This library is free software; you can redistribute it and/or ; modify it under the terms of the GNU Lesser General Public ; License version 2.1 as published by the Free Software Foundation. ; ; This library is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ; Lesser General Public License for more details. ; ; You should have received a copy of the GNU Lesser General Public ; License along with this library; if not, write to the Free Software ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ; ; ; Registers used :- ; ; eax: First argument to function. Result of function call. ; ebx: Second argument to function. ; ecx: General register ; edx: Closure pointer in call. ; ebp: Points to memory used for extra registers ; esi: General register. ; edi: General register. ; esp: Stack pointer. .486 .model flat,c Fr_Size EQU 56 ; This is the argument vector passed in to X86AsmSwitchToPoly ; It is used to initialise the frame. A few values are updated ; when ML returns. ArgVector STRUCT LocalMPointer DWORD ? HandlerRegister DWORD ? LocalMbottom DWORD ? StackLimit DWORD ? ExceptionPacket DWORD ? ; Address of packet to raise UnusedRequestCode DB ? ; Byte: Io function to call. UnusedFlag DB ? ReturnReason DB ? ; Byte: Reason for returning from ML. UnusedRestore DB ? ; SaveCStack DWORD ? ; Saved C stack pointer ThreadId DWORD ? ; My thread id StackPtr DWORD ? ; Stack pointer UnusedProgramCtr DWORD ? HeapOverFlowCall DWORD ? StackOverFlowCall DWORD ? StackOverFlowCallEx DWORD ? SaveRAX DWORD ? SaveRBX DWORD ? SaveRCX DWORD ? SaveRDX DWORD ? SaveRSI DWORD ? SaveRDI DWORD ? SaveFP WORD ? ; Actually larger ArgVector ENDS ; Codes to indicate the reason for return. RETURN_HEAP_OVERFLOW EQU 1 RETURN_STACK_OVERFLOW EQU 2 RETURN_STACK_OVERFLOWEX EQU 3 RETURN_CALLBACK_RETURN EQU 6 RETURN_CALLBACK_EXCEPTION EQU 7 RETURN_KILL_SELF EQU 9 ; ; CODE STARTS HERE ; .CODE ; Load the registers from the ML stack and jump to the code. ; This is used to start ML code. ; The argument is the address of the MemRegisters struct and goes into ebp. ; This is the general code for switching control to ML. There are a number of cases to consider: ; 1. Initial entry to root function or a new thread. Needs to load EDX at least. ; 2. Normal return from an RTS call. Could just do a simple return. ; 3. Exception raised in RTS call. ; 4. Callback from C to an ML function. In effect this is a coroutine. Similar to 1. ; 5. Return from "trap" i.e. Heap/Stack overflow. Stack-overflow can result in an exception ; either because the stack can't be grown or because Interrupt has been raised. PUBLIC X86AsmSwitchToPoly X86AsmSwitchToPoly: push ebp ; Standard entry sequence mov ebp,[8+esp] ; Address of argument vector mov [ArgVector.SaveCStack+ebp],esp push ebx ; Push callee-save registers push edi push esi sub esp,(Fr_size-12) ; Allocate frame mov esp,[ArgVector.StackPtr+ebp] mov eax,[ArgVector.ExceptionPacket+ebp] cmp eax,1 ; Did we raise an exception? jnz raisex frstor [ArgVector.SaveFP+ebp] mov eax,[ArgVector.SaveRAX+ebp] mov ebx,[ArgVector.SaveRBX+ebp] mov ecx,[ArgVector.SaveRCX+ebp] mov edx,[ArgVector.SaveRDX+ebp] mov esi,[ArgVector.SaveRSI+ebp] mov edi,[ArgVector.SaveRDI+ebp] cld ; Clear this just in case ret ; Code to save the state and switch to C ; This saves the full register state. SaveFullState: mov [ArgVector.SaveRAX+ebp],eax mov [ArgVector.SaveRBX+ebp],ebx mov [ArgVector.SaveRCX+ebp],ecx mov [ArgVector.SaveRDX+ebp],edx mov [ArgVector.SaveRSI+ebp],esi mov [ArgVector.SaveRDI+ebp],edi FNSAVE [ArgVector.SaveFP+ebp] ; Save FP state. Also resets the state so... FLDCW [ArgVector.SaveFP+ebp] ; ...load because we need the same rounding mode in the RTS mov [ArgVector.StackPtr+ebp],esp ; Save ML stack pointer mov esp,[ArgVector.SaveCStack+ebp] ; Restore C stack pointer sub esp,12 ; Sp is just before the registers pop esi ; Restore saved registers pop edi pop ebx pop ebp ret ; Used when entering new code. The argument and closure are on the stack ; in case there is a GC before we enter the code. PUBLIC X86AsmPopArgAndClosure X86AsmPopArgAndClosure: pop edx pop eax jmp dword ptr [edx] ; This is used if the RTS sets up an exception. It's probably no longer relevant. PUBLIC X86AsmRaiseException X86AsmRaiseException: raisex: mov ecx,[ArgVector.HandlerRegister+ebp] jmp dword ptr [ecx] ; Define standard call macro. ; Defined as an Masm macro because there are multiple instructions. CALL_EXTRA MACRO index push ecx mov byte ptr [ArgVector.ReturnReason+ebp],index pop ecx jmp SaveFullState ENDM ; Terminate the current thread PUBLIC X86AsmKillSelf X86AsmKillSelf: CALL_EXTRA RETURN_KILL_SELF PUBLIC X86AsmCallbackReturn X86AsmCallbackReturn: CALL_EXTRA RETURN_CALLBACK_RETURN PUBLIC X86AsmCallbackException X86AsmCallbackException: CALL_EXTRA RETURN_CALLBACK_EXCEPTION ; This implements atomic addition in the same way as atomic_increment ; N.B. It is called from the RTS so uses C linkage conventions. PUBLIC X86AsmAtomicIncrement X86AsmAtomicIncrement: mov eax,4[esp] ; Use ecx and eax because they are volatile (unlike ebx on X86/64/Unix) mov ecx,2 lock xadd [eax],ecx add ecx,2 mov eax,ecx ret CREATE_EXTRA_CALL MACRO index PUBLIC X86AsmCallExtra&index& X86AsmCallExtra&index&: CALL_EXTRA index ENDM CREATE_EXTRA_CALL RETURN_HEAP_OVERFLOW CREATE_EXTRA_CALL RETURN_STACK_OVERFLOW CREATE_EXTRA_CALL RETURN_STACK_OVERFLOWEX END polyml-5.7.1/libpolyml/elfexport.h0000644000175000017500000001032713204034553016166 0ustar daviddavid/* Title: Export memory as an ELF object file Author: David C. J. Matthews. Copyright (c) 2006, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef ELFExport_H_INCLUDED #define ELFExport_H_INCLUDED #include "config.h" #include "scanaddrs.h" // For base class #include "exporter.h" #ifdef HAVE_ELF_H #include #endif #ifdef HAVE_ELF_ABI_H #include #endif // Select 32 or 64 bit version depending on the word length #if (SIZEOF_VOIDP == 8) #define ElfXX_Addr Elf64_Addr #define ElfXX_Rel Elf64_Rel #define ElfXX_Rela Elf64_Rela #define ElfXX_Sym Elf64_Sym #define ElfXX_Ehdr Elf64_Ehdr #define ElfXX_Shdr Elf64_Shdr // Include a cast on the next line. Linux includes this anyway but it's needed for FreeBSD. #define ELFXX_R_INFO(_y, _z) ELF64_R_INFO((Elf64_Xword)(_y), _z) #define ELFXX_ST_INFO(_y, _z) ELF64_ST_INFO(_y, _z) #define ELFCLASSXX ELFCLASS64 #else #define ElfXX_Addr Elf32_Addr #define ElfXX_Rel Elf32_Rel #define ElfXX_Rela Elf32_Rela #define ElfXX_Sym Elf32_Sym #define ElfXX_Ehdr Elf32_Ehdr #define ElfXX_Shdr Elf32_Shdr #define ELFXX_R_INFO(_y, _z) ELF32_R_INFO(_y, _z) #define ELFXX_ST_INFO(_y, _z) ELF32_ST_INFO(_y, _z) #define ELFCLASSXX ELFCLASS32 #endif #ifdef HOSTARCHITECTURE_MIPS64 /* MIPS N64 ABI has a different Elf64_Rel/Rela layout */ typedef struct { Elf64_Addr r_offset; /* Address */ Elf64_Word r_sym; /* Symbol index */ unsigned char r_ssym; /* Special symbol */ unsigned char r_type3; /* Third relocation type */ unsigned char r_type2; /* Second relocation type */ unsigned char r_type; /* First relocation type */ } Elf64_Mips_Rel; typedef struct { Elf64_Addr r_offset; /* Address */ Elf64_Word r_sym; /* Symbol index */ unsigned char r_ssym; /* Special symbol */ unsigned char r_type3; /* Third relocation type */ unsigned char r_type2; /* Second relocation type */ unsigned char r_type; /* First relocation type */ Elf64_Sxword r_addend; /* Addend */ } Elf64_Mips_Rela; #undef ElfXX_Rel #define ElfXX_Rel Elf64_Mips_Rel #undef ElfXX_Rela #define ElfXX_Rela Elf64_Mips_Rela /* Elf64_Mips_Rel/Rela has no r_info, so this macro is meaningless */ #undef ELFXX_R_INFO #endif class TaskData; class ELFExport: public Exporter, public ScanAddress { public: ELFExport(): relocationCount(0), symbolNum(0) {} public: virtual void exportStore(void); private: // ScanAddress overrides virtual void ScanConstant(PolyObject *base, byte *addrOfConst, ScanRelocationKind code); // At the moment we should only get calls to ScanConstant. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } virtual void addExternalReference(void *addr, const char *name); private: void setRelocationAddress(void *p, ElfXX_Addr *reloc); PolyWord createRelocation(PolyWord p, void *relocAddr); PolyWord writeRelocation(POLYUNSIGNED offset, void *relocAddr, unsigned symbolNum, bool isFuncPtr); void writeSymbol(const char *symbolName, long value, long size, int binding, int sttype, int section); unsigned long makeStringTableEntry(const char *str, ExportStringTable *stab); void alignFile(int align); void createStructsRelocation(unsigned area, POLYUNSIGNED offset, POLYSIGNED addend); unsigned relocationCount; // There are two tables - one is used for section names, the other for symbol names. ExportStringTable symStrings, sectionStrings; // Table and count for external references. ExportStringTable externTable; unsigned symbolNum; }; #endif polyml-5.7.1/libpolyml/interpret.cpp0000644000175000017500000022127213204034553016530 0ustar daviddavid/* Title: An interpreter for a compact instruction set. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2015-17. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_FLOAT_H #include #endif #ifdef HAVE_MATH_H #include #endif #include "globals.h" #include "int_opcodes.h" #include "machine_dep.h" #include "sys.h" #include "profiling.h" #include "arb.h" #include "processes.h" #include "run_time.h" #include "mpoly.h" #include "gc.h" #include "basicio.h" #include "timing.h" #include "arb.h" #include "reals.h" #include "objsize.h" #include "xwindows.h" #include "foreign.h" #include "process_env.h" #include "network.h" #include "basicio.h" #include "sighandler.h" #include "os_specific.h" #include "diagnostics.h" #include "polystring.h" #include "save_vec.h" #include "memmgr.h" #include "poly_specific.h" #include "scanaddrs.h" #include "polyffi.h" #include "rtsentry.h" #define arg1 (pc[0] + pc[1]*256) #define arg2 (pc[2] + pc[3]*256) #define arg3 (pc[4] + pc[5]*256) #define arg4 (pc[6] + pc[7]*256) const PolyWord True = TAGGED(1); const PolyWord False = TAGGED(0); const PolyWord Zero = TAGGED(0); #define CHECKED_REGS 2 #define UNCHECKED_REGS 0 #define EXTRA_STACK 0 // Don't need any extra - signals aren't handled on the Poly stack. /* the amount of ML stack space to reserve for registers, C exception handling etc. The compiler requires us to reserve 2 stack-frames worth (2 * 20 words) plus whatever we require for the register save area. We actually reserve slightly more than this. SPF 3/3/97 */ #define OVERFLOW_STACK_SIZE \ (50 + \ CHECKED_REGS + \ UNCHECKED_REGS + \ EXTRA_STACK) // This duplicates some code in reals.cpp but is now updated. #define DOUBLESIZE (sizeof(double)/sizeof(POLYUNSIGNED)) union realdb { double dble; POLYUNSIGNED puns[DOUBLESIZE]; }; class IntTaskData: public TaskData { public: IntTaskData(): interrupt_requested(false), overflowPacket(0), dividePacket(0) {} virtual void GarbageCollect(ScanAddress *process); void ScanStackAddress(ScanAddress *process, PolyWord &val, StackSpace *stack); virtual Handle EnterPolyCode(); // Start running ML // Switch to Poly and return with the io function to call. int SwitchToPoly(); virtual void SetException(poly_exn *exc); virtual void InterruptCode(); // AddTimeProfileCount is used in time profiling. virtual bool AddTimeProfileCount(SIGNALCONTEXT *context); virtual void InitStackFrame(TaskData *newTask, Handle proc, Handle arg); // These aren't implemented in the interpreted version. virtual Handle EnterCallbackFunction(Handle func, Handle args) { ASSERT(0); return 0; } // Increment or decrement the first word of the object pointed to by the // mutex argument and return the new value. virtual Handle AtomicIncrement(Handle mutexp); // Set a mutex to one. virtual void AtomicReset(Handle mutexp); // Return the minimum space occupied by the stack. Used when setting a limit. virtual POLYUNSIGNED currentStackSpace(void) const { return (this->stack->top - this->taskSp) + OVERFLOW_STACK_SIZE; } virtual void addProfileCount(POLYUNSIGNED words) { add_count(this, taskPc, words); } virtual void CopyStackFrame(StackObject *old_stack, POLYUNSIGNED old_length, StackObject *new_stack, POLYUNSIGNED new_length); bool interrupt_requested; // Allocate memory on the heap. Returns with the address of the cell. Does not set the // length word or any of the data. PolyObject *allocateMemory(POLYUNSIGNED words, POLYCODEPTR &pc, PolyWord *&sp) { words++; // Add the size of the length word. // N.B. The allocation area may be empty so that both of these are zero. if (this->allocPointer >= this->allocLimit + words) { this->allocPointer -= words; return (PolyObject *)(this->allocPointer+1); } // Insufficient space. SaveInterpreterState(pc, sp); // Find some space to allocate in. Returns a pointer to the newly allocated space. // N.B. This may return zero if the heap is exhausted and it has set this // up for an exception. Generally it allocates by decrementing allocPointer // but if the required memory is large it may allocate in a separate area. PolyWord *space = processes->FindAllocationSpace(this, words, true); LoadInterpreterState(pc, sp); if (space == 0) return 0; return (PolyObject *)(space+1); } // Put a real result in a "box" PolyObject *boxDouble(double d, POLYCODEPTR &pc, PolyWord *&sp) { PolyObject *mem = this->allocateMemory(DOUBLESIZE, pc, sp); if (mem == 0) return 0; mem->SetLengthWord(DOUBLESIZE, F_BYTE_OBJ); union realdb uniondb; uniondb.dble = d; // Copy the words. Depending on the word length this may copy one or more words. for (unsigned i = 0; i < DOUBLESIZE; i++) mem->Set(i, PolyWord::FromUnsigned(uniondb.puns[i])); return mem; } // Extract a double value from a box. double unboxDouble(PolyWord p) { union realdb uniondb; for (unsigned i = 0; i < DOUBLESIZE; i++) uniondb.puns[i] = p.AsObjPtr()->Get(i).AsUnsigned(); return uniondb.dble; } // Update the copies in the task object void SaveInterpreterState(POLYCODEPTR pc, PolyWord *sp) { taskPc = pc; taskSp = sp; } // Update the local state void LoadInterpreterState(POLYCODEPTR &pc, PolyWord *&sp) { pc = taskPc; sp = taskSp; } POLYCODEPTR taskPc; /* Program counter. */ PolyWord *taskSp; /* Stack pointer. */ PolyWord *hr; PolyWord exception_arg; bool raiseException; PolyWord *sl; /* Stack limit register. */ PolyObject *overflowPacket, *dividePacket; }; // This lock is used to synchronise all atomic operations. // It is not needed in the X86 version because that can use a global // memory lock. static PLock mutexLock; // Special value for return address. #define SPECIAL_PC_END_THREAD TAGGED(1) class Interpreter : public MachineDependent { public: Interpreter() {} // Create a task data object. virtual TaskData *CreateTaskData(void) { return new IntTaskData(); } virtual Architectures MachineArchitecture(void) { return MA_Interpreted; } }; void IntTaskData::InitStackFrame(TaskData *parentTask, Handle proc, Handle arg) /* Initialise stack frame. */ { StackSpace *space = this->stack; StackObject *stack = (StackObject *)space->stack(); PolyObject *closure = DEREFWORDHANDLE(proc); POLYUNSIGNED stack_size = space->spaceSize(); this->taskPc = *(byte**)(closure); // this->taskSp = (PolyWord*)stack + stack_size-3; /* sp */ this->exception_arg = TAGGED(0); /* Used for exception argument. */ this->taskSp = (PolyWord*)stack + stack_size; this->raiseException = false; /* Set up exception handler */ /* No previous handler so point it at itself. */ this->taskSp--; *(this->taskSp) = PolyWord::FromStackAddr(this->taskSp); *(--this->taskSp) = SPECIAL_PC_END_THREAD; /* Default return address. */ this->hr = this->taskSp; /* If this function takes an argument store it on the stack. */ if (arg != 0) *(--this->taskSp) = DEREFWORD(arg); *(--this->taskSp) = SPECIAL_PC_END_THREAD; /* Return address. */ *(--this->taskSp) = closure; /* Closure address */ // Make packets for exceptions. overflowPacket = makeExceptionPacket(parentTask, EXC_overflow); dividePacket = makeExceptionPacket(parentTask, EXC_divide); } extern "C" { typedef POLYUNSIGNED(*callFastRts0)(); typedef POLYUNSIGNED(*callFastRts1)(PolyWord); typedef POLYUNSIGNED(*callFastRts2)(PolyWord, PolyWord); typedef POLYUNSIGNED(*callFastRts3)(PolyWord, PolyWord, PolyWord); typedef POLYUNSIGNED(*callFastRts4)(PolyWord, PolyWord, PolyWord, PolyWord); typedef POLYUNSIGNED(*callFastRts5)(PolyWord, PolyWord, PolyWord, PolyWord, PolyWord); typedef POLYUNSIGNED(*callFullRts0)(PolyObject *); typedef POLYUNSIGNED(*callFullRts1)(PolyObject *, PolyWord); typedef POLYUNSIGNED(*callFullRts2)(PolyObject *, PolyWord, PolyWord); typedef POLYUNSIGNED(*callFullRts3)(PolyObject *, PolyWord, PolyWord, PolyWord); typedef double (*callRTSFtoF) (double); typedef double (*callRTSGtoF) (PolyWord); } void IntTaskData::InterruptCode() /* Stop the Poly code at a suitable place. */ /* We may get an asynchronous interrupt at any time. */ { IntTaskData *itd = (IntTaskData *)this; itd->interrupt_requested = true; } void IntTaskData::SetException(poly_exn *exc) /* Set up the stack of a process to raise an exception. */ { this->raiseException = true; *(--this->taskSp) = (PolyWord)exc; /* push exception data */ } int IntTaskData::SwitchToPoly() /* (Re)-enter the Poly code from C. */ { // These are temporary values used where one instruction jumps to // common code. POLYUNSIGNED tailCount; PolyWord *tailPtr; POLYUNSIGNED returnCount; POLYUNSIGNED storeWords; POLYUNSIGNED stackCheck; // Local values. These are copies of member variables but are used so frequently that // it is important that access should be fast. POLYCODEPTR pc; PolyWord *sp; LoadInterpreterState(pc, sp); sl = (PolyWord*)this->stack->stack()+OVERFLOW_STACK_SIZE; // We may have taken an interrupt which has set an exception. if (this->raiseException) goto RAISE_EXCEPTION; for(;;){ /* Each instruction */ switch(*pc++) { case INSTR_enter_int: pc++; /* Skip the argument. */ break; case INSTR_jump8false: { PolyWord u = *sp++; /* Pop argument */ if (u == True) { pc += 1; break; } /* else - false - take the jump */ } case INSTR_jump8: pc += *pc + 1; break; case INSTR_jump16false: { PolyWord u = *sp++; /* Pop argument */ if (u == True) { pc += 2; break; } /* else - false - take the jump */ } case INSTR_jump16: pc += arg1 + 2; break; case INSTR_jump32False: { PolyWord u = *sp++; /* Pop argument */ if (u == True) { pc += 4; break; } /* else - false - take the jump */ } case INSTR_jump32: { // This is a 32-bit signed quantity on both 64-bits and 32-bits. POLYSIGNED offset = pc[3] & 0x80 ? -1 : 0; offset = (offset << 8) | pc[3]; offset = (offset << 8) | pc[2]; offset = (offset << 8) | pc[1]; offset = (offset << 8) | pc[0]; pc += offset + 4; break; } case INSTR_push_handler: /* Save the old handler value. */ *(--sp) = PolyWord::FromStackAddr(this->hr); /* Push old handler */ break; case INSTR_setHandler8: /* Set up a handler */ *(--sp) = PolyWord::FromCodePtr(pc + *pc + 1); /* Address of handler */ this->hr = sp; pc += 1; break; case INSTR_setHandler16: /* Set up a handler */ *(--sp) = PolyWord::FromCodePtr(pc + arg1 + 2); /* Address of handler */ this->hr = sp; pc += 2; break; case INSTR_setHandler32: /* Set up a handler */ { POLYUNSIGNED offset = pc[0] + (pc[1] << 8) + (pc[2] << 16) + (pc[3] << 24); *(--sp) = PolyWord::FromCodePtr(pc + offset + 4); /* Address of handler */ this->hr = sp; pc += 4; break; } case INSTR_del_handler: /* Delete handler retaining the result. */ { PolyWord u = *sp++; sp = this->hr; if (*sp == TAGGED(0)) sp++; // Legacy sp++; // Skip handler entry point // Restore old handler this->hr = (*sp).AsStackAddr(); *sp = u; // Put back the result pc += *pc + 1; /* Skip the handler */ break; } case INSTR_deleteHandler: /* Delete handler retaining the result. */ { PolyWord u = *sp++; sp = this->hr; sp++; // Remove handler entry point this->hr = (*sp).AsStackAddr(); // Restore old handler *sp = u; // Put back the result break; } case INSTR_jump_i_false: if (*sp++ == True) { pc += 1; break; } /* else - false - take the jump */ case INSTR_jump_i_u: /* Indirect jump */ { // This is always a forward jump pc += *pc + 1; pc += arg1 + 2; break; } case INSTR_set_handler_new_i: /* Set up a handler */ { byte *u = pc + *pc + 1; *(--sp) = /* Address of handler */ PolyWord::FromCodePtr(u + u[0] + u[1]*256 + 2); this->hr = sp; pc += 1; break; } case INSTR_del_handler_i: /* Delete handler retaining the result. */ { PolyWord u = *sp++; PolyWord *t; sp = this->hr; PolyWord *endStack = this->stack->top; while((t = (*sp).AsStackAddr()) < sp || t > endStack) sp++; this->hr = t; *sp = u; pc += *pc + 1; /* Skip the handler */ pc += arg1 + 2; break; } case INSTR_case16: { // arg1 is the largest value that is in the range POLYSIGNED u = UNTAGGED(*sp++); /* Get the value */ if (u > arg1 || u < 0) pc += (arg1+2)*2; /* Out of range */ else { pc += 2; pc += /* Index */pc[u*2]+pc[u*2 + 1]*256; } break; } case INSTR_case32: { // arg1 is the number of cases i.e. one more than the largest value // This is followed by that number of 32-bit offsets. // If the value is out of range the default case is immediately after the table. POLYSIGNED u = UNTAGGED(*sp++); /* Get the value */ if (u >= arg1 || u < 0) pc += 2 + arg1 * 4; /* Out of range */ else { pc += 2; pc += /* Index */pc[u*4] + (pc[u*4+1] << 8) + (pc[u*4+2] << 16) + (pc[u*4+3] << 24); } break; } case INSTR_tail_3_b: tailCount = 3; tailPtr = sp + tailCount; sp = tailPtr + *pc; goto TAIL_CALL; case INSTR_tail_3_2: tailCount = 3; tailPtr = sp + tailCount; sp = tailPtr + 2; goto TAIL_CALL; case INSTR_tail_3_3: tailCount = 3; tailPtr = sp + tailCount; sp = tailPtr + 3; goto TAIL_CALL; case INSTR_tail_4_b: tailCount = 4; tailPtr = sp + tailCount; sp = tailPtr + *pc; goto TAIL_CALL; case INSTR_tail_b_b: tailCount = *pc; tailPtr = sp + tailCount; sp = tailPtr + pc[1]; goto TAIL_CALL; case INSTR_tail: /* Tail recursive call. */ /* Move items up the stack. */ /* There may be an overlap if the function we are calling has more args than this one. */ tailCount = arg1; tailPtr = sp + tailCount; sp = tailPtr + arg2; TAIL_CALL: /* For general case. */ if (tailCount < 2) Crash("Invalid argument\n"); for (; tailCount > 0; tailCount--) *(--sp) = *(--tailPtr); pc = (*sp++).AsCodePtr(); /* Pop the original return address. */ /* And drop through. */ case INSTR_call_closure: /* Closure call. */ { PolyWord *t = (*sp).AsStackAddr(); /* Closure */ PolyWord u = *t; /* Get code address. (1st word of closure) */ sp--; *sp = sp[1]; /* Move closure up. */ sp[1] = PolyWord::FromCodePtr(pc); /* Save return address. */ pc = u.AsCodePtr(); /* Get entry point. */ this->taskPc = pc; // Update in case we're profiling // Legacy: Check for stack overflow. This is needed because // old code does not have stack check instructions. if (sp < sl) { POLYUNSIGNED min_size = this->stack->top - sp + OVERFLOW_STACK_SIZE; SaveInterpreterState(pc, sp); CheckAndGrowStack(this, min_size); LoadInterpreterState(pc, sp); sl = (PolyWord*)this->stack->stack() + OVERFLOW_STACK_SIZE; } if (this->interrupt_requested) { // Check for interrupts this->interrupt_requested = false; SaveInterpreterState(pc, sp); return -1; } break; } case INSTR_return_w: returnCount = arg1; /* Get no. of args to remove. */ RETURN: /* Common code for return. */ { PolyWord result = *sp++; /* Result */ sp++; /* Remove the link/closure */ pc = (*sp++).AsCodePtr(); /* Return address */ sp += returnCount; /* Add on number of args. */ if (pc == (SPECIAL_PC_END_THREAD).AsCodePtr()) exitThread(this); // This thread is exiting. *(--sp) = result; /* Result */ this->taskPc = pc; // Update in case we're profiling } break; case INSTR_return_b: returnCount = *pc; goto RETURN; case INSTR_return_0: returnCount = 0; goto RETURN; case INSTR_return_1: returnCount = 1; goto RETURN; case INSTR_return_2: returnCount = 2; goto RETURN; case INSTR_return_3: returnCount = 3; goto RETURN; case INSTR_stackSize8: stackCheck = *pc++; goto STACKCHECK; case INSTR_stackSize16: { stackCheck = arg1; pc += 2; STACKCHECK: // Check there is space on the stack if (sp - stackCheck < sl) { POLYUNSIGNED min_size = this->stack->top - sp + OVERFLOW_STACK_SIZE + stackCheck; SaveInterpreterState(pc, sp); CheckAndGrowStack(this, min_size); LoadInterpreterState(pc, sp); sl = (PolyWord*)this->stack->stack() + OVERFLOW_STACK_SIZE; } // Also check for interrupts if (this->interrupt_requested) { // Check for interrupts this->interrupt_requested = false; SaveInterpreterState(pc, sp); return -1; } break; } case INSTR_pad: /* No-op */ break; case INSTR_raise_ex: { RAISE_EXCEPTION: this->raiseException = false; PolyException *exn = (PolyException*)((*sp).AsObjPtr()); this->exception_arg = exn; /* Get exception data */ sp = this->hr; if (*sp == SPECIAL_PC_END_THREAD) exitThread(this); // Default handler for thread. pc = (*sp++).AsCodePtr(); this->hr = (*sp++).AsStackAddr(); break; } case INSTR_get_store_w: // Get_store is now only used for mutually recursive closures. It allocates mutable store // initialised to zero. { storeWords = arg1; pc += 2; GET_STORE: PolyObject *p = this->allocateMemory(storeWords, pc, sp); if (p == 0) goto RAISE_EXCEPTION; p->SetLengthWord(storeWords, F_MUTABLE_BIT); for(; storeWords > 0; ) p->Set(--storeWords, TAGGED(0)); /* Must initialise store! */ *(--sp) = p; break; } case INSTR_get_store_2: storeWords = 2; goto GET_STORE; case INSTR_get_store_3: storeWords = 3; goto GET_STORE; case INSTR_get_store_4: storeWords = 4; goto GET_STORE; case INSTR_get_store_b: storeWords = *pc; pc++; goto GET_STORE; case INSTR_tuple_w: { storeWords = arg1; pc += 2; TUPLE: /* Common code for tupling. */ PolyObject *p = this->allocateMemory(storeWords, pc, sp); if (p == 0) goto RAISE_EXCEPTION; // Exception p->SetLengthWord(storeWords, 0); for(; storeWords > 0; ) p->Set(--storeWords, *sp++); *(--sp) = p; break; } case INSTR_tuple_2: storeWords = 2; goto TUPLE; case INSTR_tuple_3: storeWords = 3; goto TUPLE; case INSTR_tuple_4: storeWords = 4; goto TUPLE; case INSTR_tuple_b: storeWords = *pc; pc++; goto TUPLE; case INSTR_non_local: { PolyWord *t = sp+arg1; POLYSIGNED uu; for(uu = 1; uu <= arg2; uu++) t = (t[-1]).AsStackAddr(); uu = arg3; /* Can be negative. */ if (uu > 32767) uu -= 65536; *(--sp) = t[uu]; pc += 6; break; } case INSTR_local_w: { PolyWord u = sp[arg1]; *(--sp) = u; pc += 2; break; } case INSTR_indirect_w: *sp = (*sp).AsObjPtr()->Get(arg1); pc += 2; break; case INSTR_move_to_vec_w: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(arg1, u); pc += 2; break; } case INSTR_set_stack_val_w: { PolyWord u = *sp++; sp[arg1-1] = u; pc += 2; break; } case INSTR_reset_w: sp += arg1; pc += 2; break; case INSTR_reset_r_w: { PolyWord u = *sp; sp += arg1; *sp = u; pc += 2; break; } case INSTR_constAddr8: *(--sp) = *(PolyWord*)(pc + pc[0] + 1); pc += 1; break; case INSTR_constAddr16: *(--sp) = *(PolyWord*)(pc + arg1 + 2); pc += 2; break; case INSTR_constAddr32: { POLYUNSIGNED offset = pc[0] + (pc[1] << 8) + (pc[2] << 16) + (pc[3] << 24); *(--sp) = *(PolyWord*)(pc + offset + 4); pc += 4; break; } case INSTR_const_int_w: *(--sp) = TAGGED(arg1); pc += 2; break; case INSTR_jump_back8: pc -= *pc + 1; if (this->interrupt_requested) { // Check for interrupt in case we're in a loop this->interrupt_requested = false; SaveInterpreterState(pc, sp); return -1; } break; case INSTR_jump_back16: pc -= arg1 + 1; if (this->interrupt_requested) { // Check for interrupt in case we're in a loop this->interrupt_requested = false; SaveInterpreterState(pc, sp); return -1; } break; case INSTR_lock: { PolyObject *obj = (*sp).AsObjPtr(); obj->SetLengthWord(obj->LengthWord() & ~_OBJ_MUTABLE_BIT); break; } case INSTR_ldexc: *(--sp) = this->exception_arg; break; case INSTR_local_b: { PolyWord u = sp[*pc]; *(--sp) = u; pc += 1; break; } case INSTR_indirect_b: *sp = (*sp).AsObjPtr()->Get(*pc); pc += 1; break; case INSTR_move_to_vec_b: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(*pc, u); pc += 1; break; } case INSTR_set_stack_val_b: { PolyWord u = *sp++; sp[*pc-1] = u; pc += 1; break; } case INSTR_reset_b: sp += *pc; pc += 1; break; case INSTR_reset_r_b: { PolyWord u = *sp; sp += *pc; *sp = u; pc += 1; break; } case INSTR_const_int_b: *(--sp) = TAGGED(*pc); pc += 1; break; case INSTR_local_0: { PolyWord u = sp[0]; *(--sp) = u; break; } case INSTR_local_1: { PolyWord u = sp[1]; *(--sp) = u; break; } case INSTR_local_2: { PolyWord u = sp[2]; *(--sp) = u; break; } case INSTR_local_3: { PolyWord u = sp[3]; *(--sp) = u; break; } case INSTR_local_4: { PolyWord u = sp[4]; *(--sp) = u; break; } case INSTR_local_5: { PolyWord u = sp[5]; *(--sp) = u; break; } case INSTR_local_6: { PolyWord u = sp[6]; *(--sp) = u; break; } case INSTR_local_7: { PolyWord u = sp[7]; *(--sp) = u; break; } case INSTR_local_8: { PolyWord u = sp[8]; *(--sp) = u; break; } case INSTR_local_9: { PolyWord u = sp[9]; *(--sp) = u; break; } case INSTR_local_10: { PolyWord u = sp[10]; *(--sp) = u; break; } case INSTR_local_11: { PolyWord u = sp[11]; *(--sp) = u; break; } case INSTR_indirect_0: *sp = (*sp).AsObjPtr()->Get(0); break; case INSTR_indirect_1: *sp = (*sp).AsObjPtr()->Get(1); break; case INSTR_indirect_2: *sp = (*sp).AsObjPtr()->Get(2); break; case INSTR_indirect_3: *sp = (*sp).AsObjPtr()->Get(3); break; case INSTR_indirect_4: *sp = (*sp).AsObjPtr()->Get(4); break; case INSTR_indirect_5: *sp = (*sp).AsObjPtr()->Get(5); break; case INSTR_const_0: *(--sp) = Zero; break; case INSTR_const_1: *(--sp) = TAGGED(1); break; case INSTR_const_2: *(--sp) = TAGGED(2); break; case INSTR_const_3: *(--sp) = TAGGED(3); break; case INSTR_const_4: *(--sp) = TAGGED(4); break; case INSTR_const_10: *(--sp) = TAGGED(10); break; case INSTR_move_to_vec_0: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(0, u); break; } case INSTR_move_to_vec_1: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(1, u); break; } case INSTR_move_to_vec_2: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(2, u); break; } case INSTR_move_to_vec_3: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(3, u); break; } case INSTR_move_to_vec_4: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(4, u); break; } case INSTR_move_to_vec_5: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(5, u); break; } case INSTR_move_to_vec_6: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(6, u); break; } case INSTR_move_to_vec_7: { PolyWord u = *sp++; (*sp).AsObjPtr()->Set(7, u); break; } case INSTR_reset_r_1: { PolyWord u = *sp; sp += 1; *sp = u; break; } case INSTR_reset_r_2: { PolyWord u = *sp; sp += 2; *sp = u; break; } case INSTR_reset_r_3: { PolyWord u = *sp; sp += 3; *sp = u; break; } case INSTR_reset_1: sp += 1; break; case INSTR_reset_2: sp += 2; break; case INSTR_non_local_l_1: { POLYSIGNED uu = *pc; PolyWord u = (sp[uu >> 4]).AsStackAddr()[(uu & 0xf) - 6]; *(--sp) = u; pc += 1; break; } case INSTR_non_local_l_2: { POLYSIGNED uu = *pc; PolyWord *t = sp[uu >> 4].AsStackAddr() -1; *(--sp) = (*t).AsStackAddr()[(uu & 0xf) - 6]; pc += 1; break; } case INSTR_non_local_l_3: { POLYSIGNED uu = *pc; PolyWord *t = sp[uu >> 4].AsStackAddr() -1; t = (*t).AsStackAddr() - 1; *(--sp) = (*t).AsStackAddr()[(uu & 0xf) - 6]; pc += 1; break; } case INSTR_stack_container: { POLYUNSIGNED words = arg1; pc += 2; while (words-- > 0) *(--sp) = Zero; sp--; *sp = PolyWord::FromStackAddr(sp+1); break; } case INSTR_tuple_container: /* Create a tuple from a container. */ { storeWords = arg1; PolyObject *t = this->allocateMemory(storeWords, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(storeWords, 0); for(; storeWords > 0; ) { storeWords--; t->Set(storeWords, (*sp).AsObjPtr()->Get(storeWords)); } *sp = t; pc += 2; break; } case INSTR_callFastRTS0: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. callFastRts0 doCall = (callFastRts0)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastRTS1: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg1 = *sp++; callFastRts1 doCall = (callFastRts1)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(rtsArg1); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastRTS2: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg2 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg1 = *sp++; callFastRts2 doCall = (callFastRts2)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(rtsArg1, rtsArg2); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastRTS3: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg3 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg2 = *sp++; PolyWord rtsArg1 = *sp++; callFastRts3 doCall = (callFastRts3)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(rtsArg1, rtsArg2, rtsArg3); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastRTS4: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg4 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg3 = *sp++; PolyWord rtsArg2 = *sp++; PolyWord rtsArg1 = *sp++; callFastRts4 doCall = (callFastRts4)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(rtsArg1, rtsArg2, rtsArg3, rtsArg4); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastRTS5: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg5 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg4 = *sp++; PolyWord rtsArg3 = *sp++; PolyWord rtsArg2 = *sp++; PolyWord rtsArg1 = *sp++; callFastRts5 doCall = (callFastRts5)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(rtsArg1, rtsArg2, rtsArg3, rtsArg4, rtsArg5); *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFullRTS0: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. callFullRts0 doCall = (callFullRts0)rtsCall.AsCodePtr(); this->raiseException = false; SaveInterpreterState(pc, sp); POLYUNSIGNED result = doCall(this->threadObject); LoadInterpreterState(pc, sp); // If this raised an exception if (this->raiseException) goto RAISE_EXCEPTION; *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFullRTS1: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg1 = *sp++; this->raiseException = false; SaveInterpreterState(pc, sp); callFullRts1 doCall = (callFullRts1)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(this->threadObject, rtsArg1); LoadInterpreterState(pc, sp); // If this raised an exception if (this->raiseException) goto RAISE_EXCEPTION; *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFullRTS2: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg2 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg1 = *sp++; this->raiseException = false; SaveInterpreterState(pc, sp); callFullRts2 doCall = (callFullRts2)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(this->threadObject, rtsArg1, rtsArg2); LoadInterpreterState(pc, sp); // If this raised an exception if (this->raiseException) goto RAISE_EXCEPTION; *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFullRTS3: { PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg3 = *sp++; // Pop off the args, last arg first. PolyWord rtsArg2 = *sp++; PolyWord rtsArg1 = *sp++; this->raiseException = false; SaveInterpreterState(pc, sp); callFullRts3 doCall = (callFullRts3)rtsCall.AsCodePtr(); POLYUNSIGNED result = doCall(this->threadObject, rtsArg1, rtsArg2, rtsArg3); LoadInterpreterState(pc, sp); // If this raised an exception if (this->raiseException) goto RAISE_EXCEPTION; *(--sp) = PolyWord::FromUnsigned(result); break; } case INSTR_callFastFtoF: { // Floating point call. The call itself does not allocate but we // need to put the result into a "box". PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg1 = *sp++; callRTSFtoF doCall = (callRTSFtoF)rtsCall.AsCodePtr(); double argument = unboxDouble(rtsArg1); // Allocate memory for the result. double result = doCall(argument); PolyObject *t = boxDouble(result, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *(--sp) = t; break; } case INSTR_callFastGtoF: { // Call that takes a POLYUNSIGNED argument and returns a double. PolyWord rtsCall = (*sp++).AsObjPtr()->Get(0); // Value holds address. PolyWord rtsArg1 = *sp++; callRTSGtoF doCall = (callRTSGtoF)rtsCall.AsCodePtr(); // Allocate memory for the result. double result = doCall(rtsArg1); PolyObject *t = boxDouble(result, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *(--sp) = t; break; } case INSTR_notBoolean: *sp = (*sp == True) ? False : True; break; case INSTR_isTagged: *sp = IS_INT(*sp) ? True : False; break; case INSTR_cellLength: /* Return the length word. */ *sp = TAGGED((*sp).AsObjPtr()->Length()); break; case INSTR_cellFlags: { PolyObject *p = (*sp).AsObjPtr(); POLYUNSIGNED f = (p->LengthWord()) >> OBJ_PRIVATE_FLAGS_SHIFT; *sp = TAGGED(f); break; } case INSTR_clearMutable: { PolyObject *obj = (*sp).AsObjPtr(); POLYUNSIGNED lengthW = obj->LengthWord(); /* Clear the mutable bit. */ obj->SetLengthWord(lengthW & ~_OBJ_MUTABLE_BIT); *sp = Zero; break; } case INSTR_stringLength: // Now replaced by loadUntagged *sp = TAGGED(((PolyStringObject*)(*sp).AsObjPtr())->length); break; case INSTR_atomicIncr: { PLocker l(&mutexLock); PolyObject *p = (*sp).AsObjPtr(); PolyWord newValue = TAGGED(UNTAGGED(p->Get(0))+1); p->Set(0, newValue); *sp = newValue; break; } case INSTR_atomicDecr: { PLocker l(&mutexLock); PolyObject *p = (*sp).AsObjPtr(); PolyWord newValue = TAGGED(UNTAGGED(p->Get(0))-1); p->Set(0, newValue); *sp = newValue; break; } case INSTR_atomicReset: { // This is needed in the interpreted version otherwise there // is a chance that we could set the value to zero while another // thread is between getting the old value and setting it to the new value. PLocker l(&mutexLock); PolyObject *p = (*sp).AsObjPtr(); p->Set(0, TAGGED(1)); // Set this to released. *sp = TAGGED(0); // Push the unit result break; } case INSTR_longWToTagged: { // Extract the first word and return it as a tagged value. This loses the top-bit POLYUNSIGNED wx = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = TAGGED(wx); break; } case INSTR_signedToLongW: { // Shift the tagged value to remove the tag and put it into the first word. // The original sign bit is copied in the shift. POLYSIGNED wx = (*sp).UnTagged(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromSigned(wx)); *sp = t; break; } case INSTR_unsignedToLongW: { // As with the above except the value is treated as an unsigned // value and the top bit is zero. POLYUNSIGNED wx = (*sp).UnTaggedUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wx)); *sp = t; break; } case INSTR_realAbs: { PolyObject *t = this->boxDouble(fabs(unboxDouble(*sp)), pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_realNeg: { PolyObject *t = this->boxDouble(-(unboxDouble(*sp)), pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_floatFixedInt: { POLYSIGNED u = UNTAGGED(*sp); PolyObject *t = this->boxDouble((double)u, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_equalWord: { PolyWord u = *sp++; *sp = u == *sp ? True : False; break; } case INSTR_lessSigned: { PolyWord u = *sp++; *sp = ((*sp).AsSigned() < u.AsSigned()) ? True : False; break; } case INSTR_lessUnsigned: { PolyWord u = *sp++; *sp = ((*sp).AsUnsigned() < u.AsUnsigned()) ? True : False; break; } case INSTR_lessEqSigned: { PolyWord u = *sp++; *sp = ((*sp).AsSigned() <= u.AsSigned()) ? True : False; break; } case INSTR_lessEqUnsigned: { PolyWord u = *sp++; *sp = ((*sp).AsUnsigned() <= u.AsUnsigned()) ? True : False; break; } case INSTR_greaterSigned: { PolyWord u = *sp++; *sp = ((*sp).AsSigned() > u.AsSigned()) ? True : False; break; } case INSTR_greaterUnsigned: { PolyWord u = *sp++; *sp = ((*sp).AsUnsigned() > u.AsUnsigned()) ? True : False; break; } case INSTR_greaterEqSigned: { PolyWord u = *sp++; *sp = ((*sp).AsSigned() >= u.AsSigned()) ? True : False; break; } case INSTR_greaterEqUnsigned: { PolyWord u = *sp++; *sp = ((*sp).AsUnsigned() >= u.AsUnsigned()) ? True : False; break; } case INSTR_fixedAdd: { PolyWord x = *sp++; PolyWord y = *sp; POLYSIGNED t = UNTAGGED(x) + UNTAGGED(y); if (t <= MAXTAGGED && t >= -MAXTAGGED-1) *sp = TAGGED(t); else { *(--sp) = overflowPacket; goto RAISE_EXCEPTION; } break; } case INSTR_fixedSub: { PolyWord x = *sp++; PolyWord y = *sp; POLYSIGNED t = UNTAGGED(y) - UNTAGGED(x); if (t <= MAXTAGGED && t >= -MAXTAGGED-1) *sp = TAGGED(t); else { *(--sp) = overflowPacket; goto RAISE_EXCEPTION; } break; } case INSTR_fixedMult: { // We need to detect overflow. There doesn't seem to be any convenient way to do // this so we use the arbitrary precision package and check whether the result is short. // Clang and GCC 5.0 have __builtin_mul_overflow which will do this but GCC 5.0 is not // currently (July 2016) in Debian stable. Handle reset = this->saveVec.mark(); Handle pushedArg1 = this->saveVec.push(*sp++); Handle pushedArg2 = this->saveVec.push(*sp); Handle result = mult_longc(this, pushedArg2, pushedArg1); PolyWord res = result->Word(); this->saveVec.reset(reset); if (! res.IsTagged()) { *(--sp) = overflowPacket; goto RAISE_EXCEPTION; } *sp = res; break; } case INSTR_fixedQuot: { // Zero and overflow are checked for in ML. POLYSIGNED u = UNTAGGED(*sp++); PolyWord y = *sp; *sp = TAGGED(UNTAGGED(y) / u); break; } case INSTR_fixedRem: { // Zero and overflow are checked for in ML. POLYSIGNED u = UNTAGGED(*sp++); PolyWord y = *sp; *sp = TAGGED(UNTAGGED(y) % u); break; } case INSTR_wordAdd: { PolyWord u = *sp++; // Because we're not concerned with overflow we can just add the values and subtract the tag. *sp = PolyWord::FromUnsigned((*sp).AsUnsigned() + u.AsUnsigned() - TAGGED(0).AsUnsigned()); break; } case INSTR_wordSub: { PolyWord u = *sp++; *sp = PolyWord::FromUnsigned((*sp).AsUnsigned() - u.AsUnsigned() + TAGGED(0).AsUnsigned()); break; } case INSTR_wordMult: { PolyWord u = *sp++; *sp = TAGGED(UNTAGGED_UNSIGNED(*sp) * UNTAGGED_UNSIGNED(u)); break; } case INSTR_wordDiv: { POLYUNSIGNED u = UNTAGGED_UNSIGNED(*sp++); // Detection of zero is done in ML *sp = TAGGED(UNTAGGED_UNSIGNED(*sp) / u); break; } case INSTR_wordMod: { POLYUNSIGNED u = UNTAGGED_UNSIGNED(*sp++); *sp = TAGGED(UNTAGGED_UNSIGNED(*sp) % u); break; } case INSTR_wordAnd: { PolyWord u = *sp++; // Since both of these should be tagged the tag bit will be preserved. *sp = PolyWord::FromUnsigned((*sp).AsUnsigned() & u.AsUnsigned()); break; } case INSTR_wordOr: { PolyWord u = *sp++; // Since both of these should be tagged the tag bit will be preserved. *sp = PolyWord::FromUnsigned((*sp).AsUnsigned() | u.AsUnsigned()); break; } case INSTR_wordXor: { PolyWord u = *sp++; // This will remove the tag bit so it has to be reinstated. *sp = PolyWord::FromUnsigned(((*sp).AsUnsigned() ^ u.AsUnsigned()) | TAGGED(0).AsUnsigned()); break; } case INSTR_wordShiftLeft: { // ML requires shifts greater than a word to return zero. // That's dealt with at the higher level. PolyWord u = *sp++; *sp = TAGGED(UNTAGGED_UNSIGNED(*sp) << UNTAGGED_UNSIGNED(u)); break; } case INSTR_wordShiftRLog: { PolyWord u = *sp++; *sp = TAGGED(UNTAGGED_UNSIGNED(*sp) >> UNTAGGED_UNSIGNED(u)); break; } case INSTR_wordShiftRArith: { PolyWord u = *sp++; // Strictly speaking, C does not require that this uses // arithmetic shifting so we really ought to set the // high-order bits explicitly. *sp = TAGGED(UNTAGGED(*sp) >> UNTAGGED(u)); break; } case INSTR_allocByteMem: { // Allocate byte segment. This does not need to be initialised. POLYUNSIGNED flags = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED length = UNTAGGED_UNSIGNED(*sp); PolyObject *t = this->allocateMemory(length, pc, sp); if (t == 0) goto RAISE_EXCEPTION; // Exception t->SetLengthWord(length, (byte)flags); *sp = t; break; } case INSTR_lgWordEqual: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = wx == wy ? True : False; break; } case INSTR_lgWordNotequal: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = wx != wy ? True : False; break; } case INSTR_lgWordLess: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = (wy < wx) ? True : False; break; } case INSTR_lgWordLessEq: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = (wy <= wx) ? True : False; break; } case INSTR_lgWordGreater: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = (wy > wx) ? True : False; break; } case INSTR_lgWordGreaterEq: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); *sp = (wy >= wx) ? True : False; break; } case INSTR_lgWordAdd: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy+wx)); *sp = t; break; } case INSTR_lgWordSub: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy-wx)); *sp = t; break; } case INSTR_lgWordMult: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy*wx)); *sp = t; break; } case INSTR_lgWordDiv: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy/wx)); *sp = t; break; } case INSTR_lgWordMod: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy%wx)); *sp = t; break; } case INSTR_lgWordAnd: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy&wx)); *sp = t; break; } case INSTR_lgWordOr: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy|wx)); *sp = t; break; } case INSTR_lgWordXor: { POLYUNSIGNED wx = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy^wx)); *sp = t; break; } case INSTR_lgWordShiftLeft: { // The shift amount is a tagged word not a boxed large word POLYUNSIGNED wx = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy << wx)); *sp = t; break; } case INSTR_lgWordShiftRLog: { // The shift amount is a tagged word not a boxed large word POLYUNSIGNED wx = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED wy = (*sp).AsObjPtr()->Get(0).AsUnsigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(wy >> wx)); *sp = t; break; } case INSTR_lgWordShiftRArith: { // The shift amount is a tagged word not a boxed large word POLYUNSIGNED wx = UNTAGGED_UNSIGNED(*sp++); POLYSIGNED wy = (*sp).AsObjPtr()->Get(0).AsSigned(); PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromSigned(wy >> wx)); *sp = t; break; } case INSTR_realEqual: { double u = unboxDouble(*sp++); *sp = u == unboxDouble(*sp) ? True: False; break; } case INSTR_realLess: { double u = unboxDouble(*sp++); *sp = unboxDouble(*sp) < u ? True: False; break; } case INSTR_realLessEq: { double u = unboxDouble(*sp++); *sp = unboxDouble(*sp) <= u ? True: False; break; } case INSTR_realGreater: { double u = unboxDouble(*sp++); *sp = unboxDouble(*sp) > u ? True: False; break; } case INSTR_realGreaterEq: { double u = unboxDouble(*sp++); *sp = unboxDouble(*sp) >= u ? True: False; break; } case INSTR_realAdd: { double u = unboxDouble(*sp++); double v = unboxDouble(*sp); PolyObject *t = this->boxDouble(v+u, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_realSub: { double u = unboxDouble(*sp++); double v = unboxDouble(*sp); PolyObject *t = this->boxDouble(v-u, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_realMult: { double u = unboxDouble(*sp++); double v = unboxDouble(*sp); PolyObject *t = this->boxDouble(v*u, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_realDiv: { double u = unboxDouble(*sp++); double v = unboxDouble(*sp); PolyObject *t = this->boxDouble(v/u, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_getThreadId: *(--sp) = this->threadObject; break; case INSTR_allocWordMemory: { // Allocate word segment. This must be initialised. // We mustn't pop the initialiser until after any potential GC. POLYUNSIGNED length = UNTAGGED_UNSIGNED(sp[2]); PolyObject *t = this->allocateMemory(length, pc, sp); if (t == 0) goto RAISE_EXCEPTION; PolyWord initialiser = *sp++; POLYUNSIGNED flags = UNTAGGED_UNSIGNED(*sp++); t->SetLengthWord(length, (byte)flags); *sp = t; // Have to initialise the data. for (; length > 0; ) t->Set(--length, initialiser); break; } case INSTR_alloc_ref: { // Allocate a single word mutable cell. This is more common than allocWordMemory on its own. PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; PolyWord initialiser = *sp; t->SetLengthWord(1, F_MUTABLE_BIT); t->Set(0, initialiser); *sp = t; break; } case INSTR_loadMLWord: { // The values on the stack are base, index and offset. POLYUNSIGNED offset = UNTAGGED(*sp++); POLYUNSIGNED index = UNTAGGED(*sp++); PolyObject *p = (PolyObject*)((*sp).AsCodePtr() + offset); *sp = p->Get(index); break; } case INSTR_loadMLByte: { // The values on the stack are base and index. POLYUNSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsCodePtr(); *sp = TAGGED(p[index]); // Have to tag the result break; } case INSTR_loadC8: { // This is similar to loadMLByte except that the base address is a boxed large-word. // Also the index is SIGNED. POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr(); *sp = TAGGED(p[index]); // Have to tag the result break; } case INSTR_loadC16: { // This and the other loads are similar to loadMLWord with separate // index and offset values. POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; POLYUNSIGNED r = ((uint16_t*)p)[index]; *sp = TAGGED(r); break; } case INSTR_loadC32: { POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; POLYUNSIGNED r = ((uint32_t*)p)[index]; #if (SIZEOF_VOIDP == 8) // This is tagged in 64-bit mode *sp = TAGGED(r); #else // But boxed in 32-bit mode. PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(r)); *sp = t; #endif break; } #if (SIZEOF_VOIDP == 8) case INSTR_loadC64: { POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; POLYUNSIGNED r = ((uint64_t*)p)[index]; // This must be boxed. PolyObject *t = this->allocateMemory(1, pc, sp); if (t == 0) goto RAISE_EXCEPTION; t->SetLengthWord(1, F_BYTE_OBJ); t->Set(0, PolyWord::FromUnsigned(r)); *sp = t; break; } #endif case INSTR_loadCFloat: { POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; double r = ((float*)p)[index]; // This must be boxed. PolyObject *t = this->boxDouble(r, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_loadCDouble: { POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; double r = ((double*)p)[index]; // This must be boxed. PolyObject *t = this->boxDouble(r, pc, sp); if (t == 0) goto RAISE_EXCEPTION; *sp = t; break; } case INSTR_loadUntagged: { // The values on the stack are base, index and offset. POLYUNSIGNED offset = UNTAGGED(*sp++); POLYUNSIGNED index = UNTAGGED(*sp++); PolyObject *p = (PolyObject*)((*sp).AsCodePtr() + offset); *sp = TAGGED(p->Get(index).AsUnsigned()); break; } case INSTR_storeMLWord: { PolyWord toStore = *sp++; POLYUNSIGNED offset = UNTAGGED(*sp++); POLYUNSIGNED index = UNTAGGED(*sp++); PolyObject *p = (PolyObject*)((*sp).AsCodePtr() + offset); p->Set(index, toStore); *sp = Zero; break; } case INSTR_storeMLByte: { POLYUNSIGNED toStore = UNTAGGED(*sp++); POLYUNSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsCodePtr(); p[index] = (byte)toStore; *sp = Zero; break; } case INSTR_storeC8: { // Similar to storeMLByte except that the base address is a boxed large-word. POLYUNSIGNED toStore = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr(); p[index] = (byte)toStore; *sp = Zero; break; } case INSTR_storeC16: { uint16_t toStore = (uint16_t)UNTAGGED(*sp++); POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; ((uint16_t*)p)[index] = toStore; *sp = Zero; break; } case INSTR_storeC32: { #if (SIZEOF_VOIDP == 8) // This is a tagged value in 64-bit mode. uint32_t toStore = (uint32_t)UNTAGGED(*sp++); #else // but a boxed value in 32-bit mode. uint32_t toStore = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); #endif POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; ((uint32_t*)p)[index] = toStore; *sp = Zero; break; } #if (SIZEOF_VOIDP == 8) case INSTR_storeC64: { // This is a boxed value. uint64_t toStore = (*sp++).AsObjPtr()->Get(0).AsUnsigned(); POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; ((uint64_t*)p)[index] = toStore; *sp = Zero; break; } #endif case INSTR_storeCFloat: { // This is a boxed value. float toStore = (float)unboxDouble(*sp++); POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; ((float*)p)[index] = toStore; *sp = Zero; break; } case INSTR_storeCDouble: { // This is a boxed value. double toStore = unboxDouble(*sp++); POLYSIGNED offset = UNTAGGED(*sp++); POLYSIGNED index = UNTAGGED(*sp++); POLYCODEPTR p = (*sp).AsObjPtr()->Get(0).AsCodePtr() + offset; ((double*)p)[index] = toStore; *sp = Zero; break; } case INSTR_storeUntagged: { PolyWord toStore = PolyWord::FromUnsigned(UNTAGGED_UNSIGNED(*sp++)); POLYUNSIGNED offset = UNTAGGED(*sp++); POLYUNSIGNED index = UNTAGGED(*sp++); PolyObject *p = (PolyObject*)((*sp).AsCodePtr() + offset); p->Set(index, toStore); *sp = Zero; break; } case INSTR_blockMoveWord: { // The offsets are byte counts but the the indexes are in words. POLYUNSIGNED length = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED destOffset = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED destIndex = UNTAGGED_UNSIGNED(*sp++); PolyObject *dest = (PolyObject*)((*sp++).AsCodePtr() + destOffset); POLYUNSIGNED srcOffset = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED srcIndex = UNTAGGED_UNSIGNED(*sp++); PolyObject *src = (PolyObject*)((*sp).AsCodePtr() + srcOffset); for (POLYUNSIGNED u = 0; u < length; u++) dest->Set(destIndex+u, src->Get(srcIndex+u)); *sp = Zero; break; } case INSTR_blockMoveByte: { POLYUNSIGNED length = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED destOffset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR dest = (*sp++).AsCodePtr(); POLYUNSIGNED srcOffset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR src = (*sp).AsCodePtr(); memcpy(dest+destOffset, src+srcOffset, length); *sp = Zero; break; } case INSTR_blockEqualByte: { POLYUNSIGNED length = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED arg2Offset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR arg2Ptr = (*sp++).AsCodePtr(); POLYUNSIGNED arg1Offset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR arg1Ptr = (*sp).AsCodePtr(); *sp = memcmp(arg1Ptr+arg1Offset, arg2Ptr+arg2Offset, length) == 0 ? True : False; break; } case INSTR_blockCompareByte: { POLYUNSIGNED length = UNTAGGED_UNSIGNED(*sp++); POLYUNSIGNED arg2Offset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR arg2Ptr = (*sp++).AsCodePtr(); POLYUNSIGNED arg1Offset = UNTAGGED_UNSIGNED(*sp++); POLYCODEPTR arg1Ptr = (*sp).AsCodePtr(); int result = memcmp(arg1Ptr+arg1Offset, arg2Ptr+arg2Offset, length); *sp = result == 0 ? TAGGED(0) : result < 0 ? TAGGED(-1) : TAGGED(1); break; } default: Crash("Unknown instruction %x\n", pc[-1]); } /* switch */ } /* for */ return 0; } /* MD_switch_to_poly */ void IntTaskData::GarbageCollect(ScanAddress *process) { TaskData::GarbageCollect(process); overflowPacket = process->ScanObjectAddress(overflowPacket); dividePacket = process->ScanObjectAddress(dividePacket); if (stack != 0) { StackSpace *stackSpace = stack; PolyWord *stackPtr = this->taskSp; // The exception arg if any ScanStackAddress(process, this->exception_arg, stackSpace); // Now the values on the stack. for (PolyWord *q = stackPtr; q < stackSpace->top; q++) ScanStackAddress(process, *q, stackSpace); } } // Process a value within the stack. void IntTaskData::ScanStackAddress(ScanAddress *process, PolyWord &val, StackSpace *stack) { if (! val.IsDataPtr()) return; MemSpace *space = gMem.LocalSpaceForAddress(val.AsStackAddr()-1); if (space != 0) val = process->ScanObjectAddress(val.AsObjPtr()); } // Copy a stack void IntTaskData::CopyStackFrame(StackObject *old_stack, POLYUNSIGNED old_length, StackObject *new_stack, POLYUNSIGNED new_length) { /* Moves a stack, updating all references within the stack */ PolyWord *old_base = (PolyWord *)old_stack; PolyWord *new_base = (PolyWord*)new_stack; PolyWord *old_top = old_base + old_length; /* Calculate the offset of the new stack from the old. If the frame is being extended objects in the new frame will be further up the stack than in the old one. */ POLYSIGNED offset = new_base - old_base + new_length - old_length; PolyWord *oldSp = this->taskSp; this->taskSp = oldSp + offset; this->hr = this->hr + offset; /* Skip the unused part of the stack. */ POLYUNSIGNED i = oldSp - old_base; ASSERT (i <= old_length); i = old_length - i; PolyWord *old = oldSp; PolyWord *newp= this->taskSp; while (i--) { // ASSERT(old >= old_base && old < old_base+old_length); // ASSERT(newp >= new_base && newp < new_base+new_length); PolyWord old_word = *old++; if (old_word.IsTagged() || old_word.AsStackAddr() < old_base || old_word.AsStackAddr() >= old_top) *newp++ = old_word; else *newp++ = PolyWord::FromStackAddr(old_word.AsStackAddr() + offset); } ASSERT(old == ((PolyWord*)old_stack)+old_length); ASSERT(newp == ((PolyWord*)new_stack)+new_length); } Handle IntTaskData::EnterPolyCode() /* Called from "main" to enter the code. */ { Handle hOriginal = this->saveVec.mark(); // Set this up for the IO calls. while (1) { this->saveVec.reset(hOriginal); // Remove old RTS arguments and results. // Run the ML code and return with the function to call. this->inML = true; int ioFunction = SwitchToPoly(); this->inML = false; try { switch (ioFunction) { case -1: // We've been interrupted. This usually involves simulating a // stack overflow so we could come here because of a genuine // stack overflow. // Previously this code was executed on every RTS call but there // were problems on Mac OS X at least with contention on schedLock. // Process any asynchronous events i.e. interrupts or kill processes->ProcessAsynchRequests(this); // Release and re-acquire use of the ML memory to allow another thread // to GC. processes->ThreadReleaseMLMemory(this); processes->ThreadUseMLMemory(this); break; case -2: // A callback has returned. ASSERT(0); // Callbacks aren't implemented default: Crash("Unknown io operation %d\n", ioFunction); } } catch (IOException &) { } } } // As far as possible we want locking and unlocking an ML mutex to be fast so // we try to implement the code in the assembly code using appropriate // interlocked instructions. That does mean that if we need to lock and // unlock an ML mutex in this code we have to use the same, machine-dependent, // code to do it. These are defaults that are used where there is no // machine-specific code. static Handle ProcessAtomicIncrement(TaskData *taskData, Handle mutexp) { PLocker l(&mutexLock); PolyObject *p = DEREFHANDLE(mutexp); // A thread can only call this once so the values will be short PolyWord newValue = TAGGED(UNTAGGED(p->Get(0))+1); p->Set(0, newValue); return taskData->saveVec.push(newValue); } // Release a mutex. We need to lock the mutex to ensure we don't // reset it in the time between one of atomic operations reading // and writing the mutex. static Handle ProcessAtomicReset(TaskData *taskData, Handle mutexp) { PLocker l(&mutexLock); DEREFHANDLE(mutexp)->Set(0, TAGGED(1)); // Set this to released. return taskData->saveVec.push(TAGGED(0)); // Push the unit result } Handle IntTaskData::AtomicIncrement(Handle mutexp) { return ProcessAtomicIncrement(this, mutexp); } void IntTaskData::AtomicReset(Handle mutexp) { (void)ProcessAtomicReset(this, mutexp); } bool IntTaskData::AddTimeProfileCount(SIGNALCONTEXT *context) { if (taskPc != 0) { // See if the PC we've got is an ML code address. MemSpace *space = gMem.SpaceForAddress(taskPc); if (space != 0 && (space->spaceType == ST_CODE || space->spaceType == ST_PERMANENT)) { add_count(this, taskPc, 1); return true; } } return false; } static Interpreter interpreterObject; MachineDependent *machineDependent = &interpreterObject; // PolySetCodeConstant is not actually used in the interpreted version. // It is used in the X86 code-generator to insert inline constants. // Compat560 creates an RTS function unconditionally and rather than change // that it's easier to add it here for the time being. extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolySetCodeConstant(byte *pointer, PolyWord offset, PolyWord c, PolyWord flags); } POLYUNSIGNED PolySetCodeConstant(byte *pointer, PolyWord offset, PolyWord c, PolyWord flags) { return TAGGED(0).AsUnsigned(); } struct _entrypts machineSpecificEPT[] = { { "PolySetCodeConstant", (polyRTSFunction)&PolySetCodeConstant}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/xcall_numbers.h0000644000175000017500000005612613204034553017023 0ustar daviddavid/* Title: X-Windows/Motif calls. Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define XCALL_Not 10 #define XCALL_And 11 #define XCALL_Or 12 #define XCALL_Xor 13 #define XCALL_DownShift 14 #define XCALL_UpShift 15 #define XCALL_NoDrawable 20 #define XCALL_NoCursor 21 #define XCALL_NoFont 22 #define XCALL_NoColormap 23 #define XCALL_NoVisual 24 #define XCALL_GetTimeOfDay 30 /* Colorcells 100 */ #define XCALL_XAllocColor 103 #define XCALL_XAllocColorCells 104 #define XCALL_XAllocColorPlanes 105 #define XCALL_XAllocNamedColor 106 #define XCALL_XFreeColors 107 #define XCALL_XLookupColor 108 #define XCALL_XParseColor 109 #define XCALL_XQueryColor 110 #define XCALL_XQueryColors 111 #define XCALL_XStoreColor 112 #define XCALL_XStoreColors 113 #define XCALL_XStoreNamedColor 114 #define XCALL_BlackPixel 115 #define XCALL_WhitePixel 116 /* Colormaps 150 */ #define XCALL_XCopyColormapAndFree 150 #define XCALL_XCreateColormap 151 #define XCALL_XInstallColormap 154 #define XCALL_XListInstalledColormaps 155 #define XCALL_XUninstallColormap 158 #define XCALL_DefaultColormap 159 #define XCALL_DefaultVisual 160 #define XCALL_DisplayCells 161 #define XCALL_VisualClass 162 #define XCALL_VisualRedMask 163 #define XCALL_VisualGreenMask 164 #define XCALL_VisualBlueMask 165 /* Cursors 200 */ #define XCALL_XCreateFontCursor 200 #define XCALL_XCreateGlyphCursor 201 #define XCALL_XCreatePixmapCursor 202 #define XCALL_XDefineCursor 203 #define XCALL_XQueryBestCursor 205 #define XCALL_XRecolorCursor 206 #define XCALL_XUndefineCursor 207 #define XCALL_XOpenDisplay 222 /* Display Specifications 250 */ #define XCALL_CellsOfScreen 250 #define XCALL_DefaultDepth 251 #define XCALL_DisplayHeight 252 #define XCALL_DisplayHeightMM 253 #define XCALL_DisplayPlanes 254 #define XCALL_DisplayString 255 #define XCALL_DisplayWidth 256 #define XCALL_DisplayWidthMM 257 #define XCALL_DoesBackingStore 258 #define XCALL_DoesSaveUnders 259 #define XCALL_EventMaskOfScreen 260 #define XCALL_MaxCmapsOfScreen 261 #define XCALL_MinCmapsOfScreen 262 #define XCALL_ProtocolRevision 263 #define XCALL_ProtocolVersion 264 #define XCALL_ServerVendor 265 #define XCALL_VendorRelease 266 /* Drawing Primitives 300 */ #define XCALL_XClearArea 300 #define XCALL_XClearWindow 301 #define XCALL_XCopyArea 302 #define XCALL_XCopyPlane 303 #define XCALL_XDrawArc 304 #define XCALL_XDrawArcs 305 #define XCALL_XDrawImageString 306 #define XCALL_XDrawImageString16 307 #define XCALL_XDrawLine 308 #define XCALL_XDrawLines 309 #define XCALL_XDrawPoint 310 #define XCALL_XDrawPoints 311 #define XCALL_XDrawRectangle 312 #define XCALL_XDrawRectangles 313 #define XCALL_XDrawSegments 314 #define XCALL_XDrawString 315 #define XCALL_XDrawString16 316 #define XCALL_XDrawText 317 #define XCALL_XDrawText16 318 #define XCALL_XFillArc 319 #define XCALL_XFillArcs 320 #define XCALL_XFillPolygon 321 #define XCALL_XFillRectangle 322 #define XCALL_XFillRectangles 323 /* Events 350 */ #define XCALL_XSelectInput 350 #define XCALL_XSynchronize 351 #define XCALL_GetState 361 #define XCALL_SetState 362 #define XCALL_NextEvent 365 #define XCALL_InsertTimeout 366 #define XCALL_XSetInputFocus 370 #define XCALL_XGetInputFocus 371 #define XCALL_XSetSelectionOwner 372 #define XCALL_XGetSelectionOwner 373 #define XCALL_XConvertSelection 374 #define XCALL_XSendSelectionNotify 375 #define XCALL_XDeleteProperty 376 #define XCALL_XInternAtom 377 #define XCALL_XGetAtomName 378 /* Fonts 400 */ #define XCALL_XGetFontPath 401 #define XCALL_XListFonts 402 #define XCALL_XListFontsWithInfo 403 #define XCALL_XLoadFont 404 #define XCALL_XLoadQueryFont 405 #define XCALL_XQueryFont 406 #define XCALL_XSetFontPath 407 /* Grabbing 450 */ /* Graphics Context 500 */ #define XCALL_DefaultGC 500 #define XCALL_UpdateGC 501 #define XCALL_XCreateGC 503 #define XCALL_XSetClipRectangles 509 #define XCALL_XSetDashes 510 /* Images 550 */ #define XCALL_XAddPixel 550 #define XCALL_XGetImage 552 #define XCALL_XGetPixel 553 #define XCALL_XGetSubImage 554 #define XCALL_XPutImage 555 #define XCALL_XPutPixel 556 #define XCALL_XSubImage 557 #define XCALL_BitmapBitOrder 558 #define XCALL_BitmapPad 559 #define XCALL_BitmapUnit 560 #define XCALL_ByteOrder 561 /* Keyboard 600 */ #define XCALL_XLookupString 611 #define XCALL_XQueryKeymap 612 #define XCALL_IsCursorKey 618 #define XCALL_IsFunctionKey 619 #define XCALL_IsKeypadKey 620 #define XCALL_IsMiscFunctionKey 621 #define XCALL_IsModifierKey 622 #define XCALL_IsPFKey 623 /* Output Buffer 650 */ #define XCALL_XFlush 650 #define XCALL_XSync 651 /* Pointers 700 */ #define XCALL_XQueryPointer 703 /* Regions 750 */ /* Save Set 800 */ /* Screen Saver 850 */ #define XCALL_XActivateScreenSaver 850 #define XCALL_XForceScreenSaver 851 #define XCALL_XGetScreenSaver 852 #define XCALL_XResetScreenSaver 853 #define XCALL_XSetScreenSaver 854 /* Standard Geometry 900 */ #define XCALL_XTranslateCoordinates 902 /* Text 950 */ #define XCALL_XTextExtents 950 #define XCALL_XTextExtents16 951 #define XCALL_XTextWidth 952 #define XCALL_XTextWidth16 953 /* Tiles, Pixmaps, Stipples and Bitmaps 1000 */ #define XCALL_XCreateBitmapFromData 1000 #define XCALL_XCreatePixmap 1001 #define XCALL_XCreatePixmapFromBitmapData 1002 #define XCALL_XQueryBestStipple 1004 #define XCALL_XQueryBestTile 1005 #define XCALL_XReadBitmapFile 1006 #define XCALL_XWriteBitmapFile 1007 /* User Preferences 1050 */ #define XCALL_XAutoRepeatOff 1050 #define XCALL_XAutoRepeatOn 1051 #define XCALL_XBell 1052 #define XCALL_XGetDefault 1053 /* Window Attributes 1100 */ #define XCALL_ChangeWindow 1100 #define XCALL_XGetGeometry 1101 #define XCALL_XGetWindowAttributes 1102 #define XCALL_XSetWindowBorderWidth 1107 /* Window Configuration 1150 */ #define XCALL_XCirculateSubwindows 1150 #define XCALL_XConfigureWindow 1153 #define XCALL_XLowerWindow 1154 #define XCALL_XMapRaised 1155 #define XCALL_XMapSubwindows 1156 #define XCALL_XMapWindow 1157 #define XCALL_XMoveResizeWindow 1158 #define XCALL_XMoveWindow 1159 #define XCALL_XQueryTree 1160 #define XCALL_XRaiseWindow 1161 #define XCALL_XReparentWindow 1162 #define XCALL_XResizeWindow 1163 #define XCALL_XRestackWindows 1164 #define XCALL_XUnmapSubwindows 1165 #define XCALL_XUnmapWindow 1166 /* Window Existence 1200 */ #define XCALL_RootWindow 1200 #define XCALL_DestroyXObject 1201 #define XCALL_XDestroySubwindows 1202 #define XCALL_XCreateSimpleWindow 1203 #define XCALL_XCreateWindow 1204 /* Window Manager 1250 */ #define XCALL_XSetProperty 1299 #define XCALL_XGetTextProperty 1250 #define XCALL_XGetWMHints 1253 #define XCALL_XGetWMSizeHints 1255 #define XCALL_XGetIconSizes 1257 #define XCALL_XGetTransientForHint 1259 #define XCALL_XGetWMColormapWindows 1261 #define XCALL_XGetRGBColormaps 1263 #define XCALL_XWMGeometry 1264 /* Miscellaneous and Convenience functions 1300 */ #define XCALL_GetID 1300 #define XCALL_ResourceExists 1301 #define XCALL_GetDisplay 1303 /* X Toolkit 3000 */ #define XCALL_NoWidget 3000 #define XCALL_AppInitialise 3001 #define XCALL_XtRealizeWidget 3002 #define XCALL_XtManageChildren 3003 #define XCALL_XtUnmanageChildren 3004 #define XCALL_XtDestroyWidget 3005 #define XCALL_SetCallbacks 3006 #define XCALL_XtSetValues 3007 #define XCALL_GetValue 3008 #define XCALL_XtParent 3009 #define XCALL_XtWindow 3010 #define XCALL_XtDisplay 3011 #define XCALL_XtUnrealizeWidget 3012 #define XCALL_XtName 3013 #define XCALL_XtParseTranslationTable 3014 #define XCALL_XtOverrideTranslations 3015 #define XCALL_XtAugmentTranslations 3016 #define XCALL_XtUninstallTranslations 3017 #define XCALL_XtTranslateTablePrint 3018 #define XCALL_XtCreatePopupShell 3019 #define XCALL_InsertWidgetTimeout 3020 #define XCALL_GetWidgetState 3021 #define XCALL_SetWidgetState 3022 #define XCALL_XtSetSensitive 3023 #define XCALL_XtIsSensitive 3024 #define XCALL_GetSubresources 3025 #define XCALL_Cast 3026 /* added 6/12/94 SPF */ #define XCALL_XtPopup 3027 #define XCALL_XtPopdown 3028 #define XCALL_XtMapWidget 3029 #define XCALL_XtUnmapWidget 3030 /* added 19/1/95 SPF */ #define XCALL_XtIsManaged 3031 #define XCALL_XtIsRealized 3032 /* added 23/3/01 DCJM */ #define XCALL_XtGetApplicationResources 3033 #define XCALL_XtAddEventHandler 3034 #define XCALL_XmCreateArrowButton 4000 #define XCALL_XmCreateArrowButtonGadget 4001 #define XCALL_XmCreateBulletinBoard 4002 #define XCALL_XmCreateBulletinBoardDialog 4003 #define XCALL_XmCreateCascadeButton 4004 #define XCALL_XmCreateCascadeButtonGadget 4005 #define XCALL_XmCreateCommand 4006 #define XCALL_XmCreateDialogShell 4007 #define XCALL_XmCreateDrawingArea 4008 #define XCALL_XmCreateDrawnButton 4009 #define XCALL_XmCreateErrorDialog 4010 #define XCALL_XmCreateFileSelectionBox 4011 #define XCALL_XmCreateFileSelectionDialog 4012 #define XCALL_XmCreateForm 4013 #define XCALL_XmCreateFormDialog 4014 #define XCALL_XmCreateFrame 4015 #define XCALL_XmCreateInformationDialog 4016 #define XCALL_XmCreateLabel 4017 #define XCALL_XmCreateLabelGadget 4018 #define XCALL_XmCreateList 4019 #define XCALL_XmCreateMainWindow 4020 #define XCALL_XmCreateMenuBar 4021 #define XCALL_XmCreateMenuShell 4022 #define XCALL_XmCreateMessageBox 4023 #define XCALL_XmCreateMessageDialog 4024 #define XCALL_XmCreateOptionMenu 4025 #define XCALL_XmCreatePanedWindow 4026 #define XCALL_XmCreatePopupMenu 4027 #define XCALL_XmCreatePromptDialog 4028 #define XCALL_XmCreatePulldownMenu 4029 #define XCALL_XmCreatePushButton 4030 #define XCALL_XmCreatePushButtonGadget 4031 #define XCALL_XmCreateQuestionDialog 4032 #define XCALL_XmCreateRadioBox 4033 #define XCALL_XmCreateRowColumn 4034 #define XCALL_XmCreateScale 4035 #define XCALL_XmCreateScrollBar 4036 #define XCALL_XmCreateScrolledList 4037 #define XCALL_XmCreateScrolledText 4038 #define XCALL_XmCreateScrolledWindow 4039 #define XCALL_XmCreateSelectionBox 4040 #define XCALL_XmCreateSelectionDialog 4041 #define XCALL_XmCreateSeparator 4042 #define XCALL_XmCreateSeparatorGadget 4043 #define XCALL_XmCreateSimpleCheckBox 4044 #define XCALL_XmCreateSimpleMenuBar 4045 #define XCALL_XmCreateSimpleOptionMenu 4046 #define XCALL_XmCreateSimplePopupMenu 4047 #define XCALL_XmCreateSimplePulldownMenu 4048 #define XCALL_XmCreateSimpleRadioBox 4049 #define XCALL_XmCreateText 4050 #define XCALL_XmCreateTextField 4051 #define XCALL_XmCreateToggleButton 4052 #define XCALL_XmCreateToggleButtonGadget 4053 #define XCALL_XmCreateWarningDialog 4054 #define XCALL_XmCreateWorkArea 4055 #define XCALL_XmCreateWorkingDialog 4056 #define XCALL_XmCascadeButtonHighlight 4060 #define XCALL_XmCommandError 4061 #define XCALL_XmCommandGetChild 4062 #define XCALL_XmFileSelectionBoxGetChild 4063 #define XCALL_XmFileSelectionDoSearch 4064 #define XCALL_XmIsSomething 4080 #define XCALL_XmMainWindowSetAreas 4100 #define XCALL_XmMainWindowSepX 4101 #define XCALL_XmMessageBoxGetChild 4105 #define XCALL_XmOptionButtonGadget 4106 #define XCALL_XmOptionLabelGadget 4107 #define XCALL_XmSelectionBoxGetChild 4108 #define XCALL_XmSetMenuCursor 4200 #define XCALL_XmScrolledWindowSetAreas 4201 #define XCALL_XmTextGetString 4202 #define XCALL_XmTextSetString 4203 #define XCALL_XmTextSetInsertionPosition 4204 #define XCALL_XmTrackingLocate 4210 #define XCALL_XmUpdateDisplay 4211 /* XmText widget 4300 */ /* XmTextClearSelection 4300 */ /* XmTextCopy 4301 */ /* XmTextCut 4302 */ #define XCALL_XmTextGetAddMode 4303 #define XCALL_XmTextGetBaseline 4304 #define XCALL_XmTextGetCursorPosition 4305 #define XCALL_XmTextGetEditable 4306 #define XCALL_XmTextGetInsertionPosition 4307 #define XCALL_XmTextGetLastPosition 4308 #define XCALL_XmTextGetMaxLength 4309 #define XCALL_XmTextGetSelection 4310 /* XmTextGetSelectionPosition 4311 */ /* XCALL_XmTextGetString defined above */ /* XmTextGetSource 4313 */ #define XCALL_XmTextGetTopCharacter 4314 #define XCALL_XmTextInsert 4315 #define XCALL_XmTextPaste 4316 /* XmTextPosToXY 4317 */ #define XCALL_XmTextRemove 4318 #define XCALL_XmTextReplace 4319 #define XCALL_XmTextScroll 4320 #define XCALL_XmTextSetAddMode 4321 #define XCALL_XmTextSetCursorPosition 4322 #define XCALL_XmTextSetEditable 4323 /* XmTextSetHighlight 4324 */ /* XCALL_XmTextSetInsertionPosition defined above */ #define XCALL_XmTextSetMaxLength 4326 /* XmTextSetSelection 4327 */ /* XmTextSetSource 4328 */ /* XCALL_XmTextSetString defined above */ #define XCALL_XmTextSetTopCharacter 4330 #define XCALL_XmTextShowPosition 4331 #define XCALL_XmTextXYToPos 4332 #if 0 /* should think about adding the following sometime, but */ /* they are not supported by the (SUNOS) 1.1.4a toolkit */ extern int XmTextGetSubstring() extern int XmTextGetSubstringWcs() extern wchar_t * XmTextGetStringWcs() extern void XmTextSetStringWcs() extern void XmTextReplaceWcs() extern void XmTextInsertWcs() extern wchar_t * XmTextGetSelectionWcs() extern void XmTextDisableRedisplay() extern void XmTextEnableRedisplay() extern Boolean XmTextFindString() extern Boolean XmTextFindStringWcs() #endif /* XmTextField widget 4350 */ /* XmTextFieldClearSelection 4350 */ /* XmTextFieldCopy 4351 */ /* XmTextFieldCut 4352 */ #define XCALL_XmTextFieldGetAddMode 4353 #define XCALL_XmTextFieldGetBaseline 4354 #define XCALL_XmTextFieldGetCursorPosition 4355 #define XCALL_XmTextFieldGetEditable 4356 #define XCALL_XmTextFieldGetInsertionPosition 4357 #define XCALL_XmTextFieldGetLastPosition 4358 #define XCALL_XmTextFieldGetMaxLength 4359 #define XCALL_XmTextFieldGetSelection 4360 /* XmTextFieldGetSelectionPosition 4361 */ #define XCALL_XmTextFieldGetString 4362 #define XCALL_XmTextFieldInsert 4363 #define XCALL_XmTextFieldPaste 4364 /* XmTextFieldPosToXY 4365 */ #define XCALL_XmTextFieldRemove 4366 #define XCALL_XmTextFieldReplace 4367 #define XCALL_XmTextFieldSetAddMode 4368 #define XCALL_XmTextFieldSetCursorPosition 4369 #define XCALL_XmTextFieldSetEditable 4370 /* XmTextFieldSetHighlight 4371 */ #define XCALL_XmTextFieldSetInsertionPosition 4372 #define XCALL_XmTextFieldSetMaxLength 4373 /* XmTextFieldSetSelection 4374 */ #define XCALL_XmTextFieldSetString 4375 #define XCALL_XmTextFieldShowPosition 4376 #define XCALL_XmTextFieldXYToPos 4377 #if 0 /* should think about adding the following sometime, but */ /* they are not supported by the (SUNOS) 1.1.4a toolkit */ extern int XmTextFieldGetSubstring() extern wchar_t * XmTextFieldGetStringWcs() extern int XmTextFieldGetSubstringWcs() extern void XmTextFieldSetStringWcs() extern void XmTextFieldReplaceWcs() extern void XmTextFieldInsertWcs() extern wchar_t * XmTextFieldGetSelectionWcs() #endif /* XmList widget 4400 */ #define XCALL_XmListAddItem 4400 #define XCALL_XmListAddItemUnselected 4401 #define XCALL_XmListAddItems 4402 #define XCALL_XmListDeleteAllItems 4403 #define XCALL_XmListDeleteItem 4404 #define XCALL_XmListDeleteItems 4405 #define XCALL_XmListDeletePos 4406 #define XCALL_XmListDeleteItemsPos 4407 #define XCALL_XmListDeselectAllItems 4408 #define XCALL_XmListDeselectItem 4409 #define XCALL_XmListDeselectPos 4410 #define XCALL_XmListGetMatchPos 4411 #define XCALL_XmListGetSelectedPos 4412 #define XCALL_XmListItemExists 4413 #define XCALL_XmListItemPos 4414 #define XCALL_XmListReplaceItems 4415 #define XCALL_XmListReplaceItemsPos 4416 #define XCALL_XmListSelectItem 4417 #define XCALL_XmListSelectPos 4418 #define XCALL_XmListSetAddMode 4419 #define XCALL_XmListSetBottomItem 4420 #define XCALL_XmListSetBottomPos 4421 #define XCALL_XmListSetHorizPos 4422 #define XCALL_XmListSetItem 4423 #define XCALL_XmListSetPos 4424 /* Added by DCJM. 23/3/01. */ #define XCALL_XmMenuPosition 4500 #if 0 /* Not supported by the SUNOS version of the tool-kit */ #define XCALL_XmListAddItemsUnselected #define XCALL_XmListDeletePositions #define XCALL_XmListGetKbdItemPos #define XCALL_XmListPosSelected #define XCALL_XmListReplaceItemsPosUnselected #define XCALL_XmListReplaceItemsPositions #define XCALL_XmListSetKbdItemPos #define XCALL_XmListUpdateSelectedList #define XCALL_XmListYToPos #define XCALL_XmListPosToBounds #endif polyml-5.7.1/libpolyml/heapsizing.h0000644000175000017500000001253713204034553016324 0ustar daviddavid/* Title: heapsizing.h - parameters to adjust heap size Copyright (c) Copyright David C.J. Matthews 2012 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef HEAPSIZING_H_INCLUDED #define HEAPSIZING_H_INCLUDED 1 #include "timing.h" class LocalMemSpace; class HeapSizeParameters { public: HeapSizeParameters(); // Extract timing information for ML. Handle getGCUtime(TaskData *taskData) const; Handle getGCStime(TaskData *taskData) const; void SetHeapParameters(POLYUNSIGNED minsize, POLYUNSIGNED maxsize, POLYUNSIGNED initialsize, unsigned percent); void SetReservation(POLYUNSIGNED rsize); // Called in the minor GC if a GC thread needs to grow the heap. // Returns zero if the heap cannot be grown. LocalMemSpace *AddSpaceInMinorGC(POLYUNSIGNED space, bool isMutable); // Called in the major GC before the copy phase if the heap is more than // 90% full. This should improve the efficiency of copying. LocalMemSpace *AddSpaceBeforeCopyPhase(bool isMutable); bool PerformSharingPass() const { return performSharingPass; } void AdjustSizeAfterMajorGC(POLYUNSIGNED wordsRequired); bool AdjustSizeAfterMinorGC(POLYUNSIGNED spaceAfterGC, POLYUNSIGNED spaceBeforeGC); // Returns true if we should run a major GC at this point bool RunMajorGCImmediately(); /* Called by the garbage collector at the beginning and end of garbage collection. */ typedef enum __gcTime { GCTimeStart, GCTimeIntermediate, GCTimeEnd } gcTime; // These are called by the GC to record information about its progress. void RecordAtStartOfMajorGC(); void RecordGCTime(gcTime isEnd, const char *stage = ""); void RecordSharingData(POLYUNSIGNED recovery); void resetMinorTimingData(void); void resetMajorTimingData(void); void Init(void); void Final(void); private: // Estimate the GC cost for a given heap size. The result is the ratio of // GC time to application time. double costFunction(POLYUNSIGNED heapSize, bool withSharing, bool withSharingCost); bool getCostAndSize(POLYUNSIGNED &heapSize, double &cost, bool withSharing); // Set if we should do a full GC next time instead of a minor GC. bool fullGCNextTime; // Whether a sharing pass should be performed on the next GC bool performSharingPass; // The proportion of the total heap recovered by the sharing pass double sharingRecoveryRate; // The cost of doing the sharing as a proportion of the rest of the GC. double sharingCostFactor; // The actual number of words recovered in the last sharing pass POLYUNSIGNED sharingWordsRecovered; // The saving we would have made by enabling sharing in the past double cumulativeSharingSaving; // Maximum and minimum heap size as given by the user. POLYUNSIGNED minHeapSize, maxHeapSize; // Target GC cost requested by the user. double userGCRatio; // Actual ratio for the last major GC double lastMajorGCRatio; // Predicted ratio for the next GC double predictedRatio; POLYUNSIGNED lastFreeSpace, currentSpaceUsed; // Set to false if an allocation failed. Indicates that // we may have reached some virtual memory limit. bool lastAllocationSucceeded; // Set to true if the last major GC may have hit the limit bool allocationFailedBeforeLastMajorGC; // The estimated boundary where the paging will become // a significant factor. POLYUNSIGNED pagingLimitSize; // The maximum size the heap has reached so far. POLYUNSIGNED highWaterMark; // The heap size at the start of the current GC before any spaces have been deleted. POLYUNSIGNED heapSizeAtStart; // The start of the clock. TIMEDATA startTime; // Timing for the last minor or major GC TIMEDATA minorNonGCUserCPU; TIMEDATA minorNonGCSystemCPU; TIMEDATA minorNonGCReal; TIMEDATA minorGCUserCPU; TIMEDATA minorGCSystemCPU; TIMEDATA minorGCReal; long minorGCPageFaults; unsigned minorGCsSinceMajor; // Timing for all the minor GCs and the last major GC. // Reset after each major GC. TIMEDATA majorNonGCUserCPU; TIMEDATA majorNonGCSystemCPU; TIMEDATA majorNonGCReal; TIMEDATA majorGCUserCPU; TIMEDATA majorGCSystemCPU; TIMEDATA majorGCReal; long majorGCPageFaults; // Totals for all GCs TIMEDATA totalGCUserCPU; TIMEDATA totalGCSystemCPU; TIMEDATA totalGCReal; // The cost for the last sharing pass TIMEDATA sharingCPU; TIMEDATA startUsageU, startUsageS, lastUsageU, lastUsageS; TIMEDATA startRTime, lastRTime; long startPF; }; extern HeapSizeParameters gHeapSizeParameters; #endif polyml-5.7.1/libpolyml/pexport.h0000644000175000017500000000374713204034553015667 0ustar daviddavid/* Title: Export memory in a portable format Author: David C. J. Matthews. Copyright (c) 2006, 2015 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef PEXPORT_H_INCLUDED #define PEXPORT_H_INCLUDED #ifdef HAVE_TCHAR_H #include #else typedef char TCHAR; #endif #include "scanaddrs.h" // For base class #include "exporter.h" #include "globals.h" class PExport: public Exporter, public ScanAddress { public: PExport(); virtual ~PExport(); public: virtual void exportStore(void); private: // ScanAddress overrides virtual void ScanConstant(PolyObject *base, byte *addrOfConst, ScanRelocationKind code); // At the moment we should only get calls to ScanConstant. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } private: unsigned long getIndex(PolyObject *p); void printAddress(void *p); void printValue(PolyWord q); void printObject(PolyObject *p); // We don't use the relocation code so just provide a dummy function here. virtual PolyWord createRelocation(PolyWord p, void *relocAddr) { return p; } PolyObject **pMap; unsigned long nMapSize, nObjects, totalBytes; unsigned *indexOrder; }; // Import a file in the portable format and return a pointer to the root object. PolyObject *ImportPortable(const TCHAR *fileName); #endif polyml-5.7.1/libpolyml/pexport.cpp0000644000175000017500000006077113204034553016222 0ustar daviddavid/* Title: Export and import memory in a portable format Author: David C. J. Matthews. Copyright (c) 2006-7, 2015-7 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "pexport.h" #include "machine_dep.h" #include "scanaddrs.h" #include "run_time.h" #include "../polyexports.h" #include "version.h" #include "sys.h" #include "polystring.h" #include "processes.h" // For IO_SPACING #include "memmgr.h" #include "osmem.h" #include "rtsentry.h" /* This file contains the code both to export the file and to import it in a new session. */ PExport::PExport() { pMap = 0; nMapSize = 0; nObjects = 0; indexOrder = 0; } PExport::~PExport() { free(pMap); free(indexOrder); } // Get the index corresponding to an address. unsigned long PExport::getIndex(PolyObject *p) { // Binary chop to find the index from the address. unsigned long lower = 0, upper = nObjects; while (1) { ASSERT(lower < upper); unsigned long middle = (lower+upper)/2; ASSERT(middle < nObjects); if (p < pMap[middle]) { // Use lower to middle upper = middle; } else if (p > pMap[middle]) { // Use middle+1 to upper lower = middle+1; } else // Found it return middle; } } /* Get the index corresponding to an address. */ void PExport::printAddress(void *p) { fprintf(exportFile, "@%lu", getIndex((PolyObject*)p)); } void PExport::printValue(PolyWord q) { if (IS_INT(q) || q == PolyWord::FromUnsigned(0)) fprintf(exportFile, "%" POLYSFMT, UNTAGGED(q)); else printAddress(q.AsAddress()); } void PExport::printObject(PolyObject *p) { POLYUNSIGNED length = p->Length(); POLYUNSIGNED i; unsigned long myIndex = getIndex(p); fprintf(exportFile, "%lu:", myIndex); if (p->IsMutable()) putc('M', exportFile); if (OBJ_IS_NEGATIVE(p->LengthWord())) putc('N', exportFile); if (OBJ_IS_WEAKREF_OBJECT(p->LengthWord())) putc('W', exportFile); if (OBJ_IS_NO_OVERWRITE(p->LengthWord())) putc('V', exportFile); if (p->IsByteObject()) { if (p->IsMutable() && p->IsWeakRefObject()) { // This is either an entry point or a weak ref used in the FFI. // Clear the first word if (p->Length() >= 1) p->Set(0, PolyWord::FromSigned(0)); } /* May be a string, a long format arbitrary precision number or a real number. */ PolyStringObject* ps = (PolyStringObject*)p; /* This is not infallible but it seems to be good enough to detect the strings. */ POLYUNSIGNED bytes = length * sizeof(PolyWord); if (length >= 2 && ps->length <= bytes - sizeof(POLYUNSIGNED) && ps->length > bytes - 2 * sizeof(POLYUNSIGNED)) { /* Looks like a string. */ fprintf(exportFile, "S%" POLYUFMT "|", ps->length); for (unsigned i = 0; i < ps->length; i++) { char ch = ps->chars[i]; fprintf(exportFile, "%02x", ch & 0xff); } } else { /* Not a string. May be an arbitrary precision integer. If the source and destination word lengths differ we could find that some long-format arbitrary precision numbers could be represented in the tagged short form or vice-versa. The former case might give rise to errors because when comparing two arbitrary precision numbers for equality we assume that they are not equal if they have different representation. The latter case could be a problem because we wouldn't know whether to convert the tagged form to long form, which would be correct if the value has type "int" or to truncate it which would be correct for "word". It could also be a real number but that doesn't matter if we recompile everything on the new machine. */ byte *u = (byte*)p; putc('B', exportFile); fprintf(exportFile, "%" POLYUFMT "|", length*sizeof(PolyWord)); for (unsigned i = 0; i < (unsigned)(length*sizeof(PolyWord)); i++) { fprintf(exportFile, "%02x", u[i]); } } } else if (p->IsCodeObject()) { POLYUNSIGNED constCount, i; PolyWord *cp; ASSERT(! p->IsMutable() ); /* Work out the number of bytes in the code and the number of constants. */ p->GetConstSegmentForCode(cp, constCount); /* The byte count is the length of the segment minus the number of constants minus one for the constant count. It includes the marker word, byte count, profile count and, on the X86/64 at least, any non-address constants. These are actually word values. */ POLYUNSIGNED byteCount = (length - constCount - 1) * sizeof(PolyWord); fprintf(exportFile, "D%" POLYUFMT ",%" POLYUFMT "|", constCount, byteCount); // First the code. byte *u = (byte*)p; for (i = 0; i < byteCount; i++) fprintf(exportFile, "%02x", u[i]); putc('|', exportFile); // Now the constants. for (i = 0; i < constCount; i++) { printValue(cp[i]); if (i < constCount-1) putc(',', exportFile); } putc('|', exportFile); // Finally any constants in the code object. machineDependent->ScanConstantsWithinCode(p, this); } else /* Ordinary objects, essentially tuples. */ { fprintf(exportFile, "O%" POLYUFMT "|", length); for (i = 0; i < length; i++) { printValue(p->Get(i)); if (i < length-1) putc(',', exportFile); } } fprintf(exportFile, "\n"); } /* This is called for each constant within the code. Print a relocation entry for the word and return a value that means that the offset is saved in original word. */ void PExport::ScanConstant(PolyObject *base, byte *addr, ScanRelocationKind code) { PolyWord p = GetConstantValue(addr, code); // We put in all the values including tagged constants. // Put in the byte offset and the relocation type code. POLYUNSIGNED offset = (POLYUNSIGNED)(addr - (byte*)base); ASSERT (offset < base->Length() * sizeof(POLYUNSIGNED)); fprintf(exportFile, "%" POLYUFMT ",%d,", (POLYUNSIGNED)(addr - (byte*)base), code); printValue(p); // The value to plug in. fprintf(exportFile, " "); } void PExport::exportStore(void) { unsigned i; // Calculate a first guess for the map size based on the space size totalBytes = 0; void *startAddr = 0; for (i = 0; i < memTableEntries; i++) { totalBytes += (unsigned long)memTable[i].mtLength; // Get the lowest address. if (startAddr == 0 || memTable[i].mtAddr < startAddr) startAddr = memTable[i].mtAddr; } // Create a map entry for each entry. Allow five words per object. nMapSize = totalBytes/(sizeof(PolyWord)*5); pMap = (PolyObject **)malloc(sizeof(PolyObject*)*nMapSize); if (pMap == 0) throw MemoryException(); // We want the entries in pMap to be in ascending // order of address to make searching easy so we need to process the areas // in order of increasing address, which may not be the order in memTable. indexOrder = (unsigned*)calloc(sizeof(unsigned), memTableEntries); if (indexOrder == 0) throw MemoryException(); unsigned items = 0; for (i = 0; i < memTableEntries; i++) { unsigned j = items; while (j > 0 && memTable[i].mtAddr < memTable[indexOrder[j-1]].mtAddr) { indexOrder[j] = indexOrder[j-1]; j--; } indexOrder[j] = i; items++; } ASSERT(items == memTableEntries); // Process the area in order of ascending address. for (i = 0; i < items; i++) { unsigned index = indexOrder[i]; char *start = (char*)memTable[index].mtAddr; char *end = start + memTable[index].mtLength; for (PolyWord *p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; if (nObjects == nMapSize) { // Need to expand the array. PolyObject **newMap = (PolyObject **)realloc(pMap, (nMapSize + nMapSize/2)*sizeof(PolyObject*)); if (newMap == 0) throw MemoryException(); pMap = newMap; } POLYUNSIGNED length = obj->Length(); pMap[nObjects++] = obj; p += length; } } /* Start writing the information. */ fprintf(exportFile, "Objects\t%lu\n", nObjects); fprintf(exportFile, "Root\t%lu\n", getIndex(rootFunction)); // Generate each of the areas. for (i = 0; i < memTableEntries; i++) { char *start = (char*)memTable[i].mtAddr; char *end = start + memTable[i].mtLength; for (PolyWord *p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); printObject(obj); p += length; } } fclose(exportFile); exportFile = NULL; } /* Import a portable export file and load it into memory. Creates "permanent" address entries in the global memory table. */ class SpaceAlloc { public: SpaceAlloc(bool isMut, POLYUNSIGNED def); ~SpaceAlloc(); PolyObject *NewObj(POLYUNSIGNED objWords); bool AddToTable(void); POLYUNSIGNED defaultSize; POLYUNSIGNED currentSize; PolyWord *base; POLYUNSIGNED used; bool isMutable; unsigned spaceIndex; }; SpaceAlloc::SpaceAlloc(bool isMut, POLYUNSIGNED def) { isMutable = isMut; defaultSize = def; base = 0; currentSize = 0; used = 0; spaceIndex = 1; } SpaceAlloc::~SpaceAlloc() { if (base) osMemoryManager->Free(base, currentSize*sizeof(PolyWord)); } bool SpaceAlloc::AddToTable(void) { if (base != 0) { // Add the new space to the permanent memory table. MemSpace* space = gMem.NewPermanentSpace(base, used, isMutable ? MTF_WRITEABLE : 0, spaceIndex++); if (space == 0) { fprintf(stderr, "Insufficient memory\n"); return false; } } base = 0; return true; } // Allocate a new object. May create a new space and add the old one to the permanent // memory table if this is exhausted. PolyObject *SpaceAlloc::NewObj(POLYUNSIGNED objWords) { if (currentSize - used <= objWords) { // Need some more space. if (! AddToTable()) return 0; POLYUNSIGNED size = defaultSize; if (size <= objWords) size = objWords+1; size_t iSpace = size*sizeof(PolyWord); base = (PolyWord*)osMemoryManager->Allocate(iSpace, PERMISSION_READ|PERMISSION_WRITE|PERMISSION_EXEC); if (base == 0) { fprintf(stderr, "Unable to allocate memory\n"); return 0; } currentSize = iSpace/sizeof(PolyWord); used = 0; } ASSERT(currentSize - used > objWords); PolyObject *newObj = (PolyObject*)(base+used+1); used += objWords+1; return newObj; } class PImport { public: PImport(); ~PImport(); bool DoImport(void); FILE *f; PolyObject *Root(void) { return objMap[nRoot]; } private: PolyObject *NewObject(POLYUNSIGNED words, bool isMutable); bool ReadValue(PolyObject *p, POLYUNSIGNED i); bool GetValue(PolyWord *result); POLYUNSIGNED nObjects, nRoot; PolyObject **objMap; SpaceAlloc mutSpace, immutSpace; }; PImport::PImport(): mutSpace(true, 1024*1024), immutSpace(false, 1024*1024) { f = NULL; objMap = 0; } PImport::~PImport() { if (f) fclose(f); free(objMap); } PolyObject *PImport::NewObject(POLYUNSIGNED words, bool isMutableObj) { PolyObject *newObj = 0; if (isMutableObj) newObj = mutSpace.NewObj(words); else newObj = immutSpace.NewObj(words); if (newObj == 0) return 0; return newObj; } bool PImport::GetValue(PolyWord *result) { int ch = getc(f); if (ch == '@') { /* Address of an object. */ POLYUNSIGNED obj; fscanf(f, "%" POLYUFMT, &obj); ASSERT(obj < nObjects); *result = objMap[obj]; } else if (ch == '$') { /* Code address. */ POLYUNSIGNED obj, offset; fscanf(f, "%" POLYUFMT "+%" POLYUFMT, &obj, &offset); ASSERT(obj < nObjects); PolyObject *q = objMap[obj]; ASSERT(q->IsCodeObject()); *result = PolyWord::FromCodePtr((PolyWord(q)).AsCodePtr() + offset); /* The offset is in bytes. */ } else if ((ch >= '0' && ch <= '9') || ch == '-') { /* Tagged integer. */ POLYSIGNED j; ungetc(ch, f); fscanf(f, "%" POLYSFMT, &j); /* The assertion may be false if we are porting to a machine with a shorter tagged representation. */ ASSERT(j >= -MAXTAGGED-1 && j <= MAXTAGGED); *result = TAGGED(j); } else if (ch == 'I') { /* IO entry number. */ POLYUNSIGNED j; fscanf(f, "%" POLYUFMT, &j); // We may still have references to the old empty string value (j == 48). if (j == 48) { // This is a bit of a hack but it's only temporary. PolyObject *p = NewObject(1, false); p->SetLengthWord(1, F_BYTE_OBJ); p->Set(0, PolyWord::FromUnsigned(0)); *result = p; } else ASSERT(0); } else { fprintf(stderr, "Unexpected character in stream"); return false; } return true; } /* Read a value and store it at the specified word. */ bool PImport::ReadValue(PolyObject *p, POLYUNSIGNED i) { PolyWord result = TAGGED(0); if (GetValue(&result)) { p->Set(i, result); return true; } else return false; } bool PImport::DoImport() { int ch; POLYUNSIGNED objNo; ASSERT(gMem.pSpaces.size() == 0); ASSERT(gMem.eSpaces.size() == 0); ch = getc(f); /* Skip the "Mapping" line. */ if (ch == 'M') { while (getc(f) != '\n') ; ch = getc(f); } ASSERT(ch == 'O'); /* Number of objects. */ while (getc(f) != '\t') ; fscanf(f, "%" POLYUFMT, &nObjects); /* Create a mapping table. */ objMap = (PolyObject**)calloc(nObjects, sizeof(PolyObject*)); if (objMap == 0) { fprintf(stderr, "Unable to allocate memory\n"); return false; } do { ch = getc(f); } while (ch == '\n'); ASSERT(ch == 'R'); /* Root object number. */ while (getc(f) != '\t') ; fscanf(f, "%" POLYUFMT, &nRoot); /* Now the objects themselves. */ while (1) { bool isMutable = false; unsigned objBits = 0; POLYUNSIGNED nWords, nBytes; do { ch = getc(f); } while (ch == '\r' || ch == '\n'); if (ch == EOF) break; ungetc(ch, f); fscanf(f, "%" POLYUFMT, &objNo); ch = getc(f); ASSERT(ch == ':'); ASSERT(objNo < nObjects); /* Modifiers, MNVW. */ do { ch = getc(f); if (ch == 'M') { isMutable = true; objBits |= F_MUTABLE_BIT; } else if (ch == 'N') objBits |= F_NEGATIVE_BIT; if (ch == 'V') objBits |= F_NO_OVERWRITE; if (ch == 'W') objBits |= F_WEAK_BIT; } while (ch == 'M' || ch == 'N' || ch == 'L' || ch == 'V' || ch == 'W'); /* Object type. */ switch (ch) { case 'O': /* Simple object. */ fscanf(f, "%" POLYUFMT, &nWords); break; case 'B': /* Byte segment. */ objBits |= F_BYTE_OBJ; fscanf(f, "%" POLYUFMT, &nBytes); /* Round up to appropriate number of words. */ nWords = (nBytes + sizeof(PolyWord) -1) / sizeof(PolyWord); break; case 'S': /* String. */ objBits |= F_BYTE_OBJ; /* The length is the number of characters. */ fscanf(f, "%" POLYUFMT, &nBytes); /* Round up to appropriate number of words. Need to add one PolyWord for the length PolyWord. */ nWords = (nBytes + sizeof(PolyWord) -1) / sizeof(PolyWord) + 1; break; case 'C': /* Code segment (old form). */ case 'D': /* Code segment (new form). */ objBits |= F_CODE_OBJ; /* Read the number of bytes of code and the number of words for constants. */ fscanf(f, "%" POLYUFMT ",%" POLYUFMT, &nWords, &nBytes); nWords += ch == 'C' ? 4 : 1; /* Add words for extras. */ /* Add in the size of the code itself. */ nWords += (nBytes + sizeof(PolyWord) -1) / sizeof(PolyWord); break; default: fprintf(stderr, "Invalid object type\n"); return false; } PolyObject *p = NewObject(nWords, isMutable); if (p == 0) return false; objMap[objNo] = p; /* Put in length PolyWord and flag bits. */ p->SetLengthWord(nWords, objBits); /* Skip the object contents. */ while (getc(f) != '\n') ; } /* Second pass - fill in the contents. */ fseek(f, 0, SEEK_SET); /* Skip the information at the start. */ ch = getc(f); if (ch == 'M') { while (getc(f) != '\n') ; ch = getc(f); } ASSERT(ch == 'O'); /* Number of objects. */ while (getc(f) != '\n'); ch = getc(f); ASSERT(ch == 'R'); /* Root object number. */ while (getc(f) != '\n') ; while (1) { POLYUNSIGNED nWords, nBytes, i; if (feof(f)) break; fscanf(f, "%" POLYUFMT, &objNo); if (feof(f)) break; ch = getc(f); ASSERT(ch == ':'); ASSERT(objNo < nObjects); PolyObject * p = objMap[objNo]; /* Modifiers, M or N. */ do { ch = getc(f); } while (ch == 'M' || ch == 'N' || ch == 'L' || ch == 'V' || ch == 'W'); /* Object type. */ switch (ch) { case 'O': /* Simple object. */ fscanf(f, "%" POLYUFMT, &nWords); ch = getc(f); ASSERT(ch == '|'); ASSERT(nWords == p->Length()); for (i = 0; i < nWords; i++) { if (! ReadValue(p, i)) return false; ch = getc(f); ASSERT((ch == ',' && i < nWords-1) || (ch == '\n' && i == nWords-1)); } break; case 'B': /* Byte segment. */ { byte *u = (byte*)p; fscanf(f, "%" POLYUFMT, &nBytes); ch = getc(f); ASSERT(ch == '|'); for (i = 0; i < nBytes; i++) { int n; fscanf(f, "%02x", &n); u[i] = n; } ch = getc(f); ASSERT(ch == '\n'); // If this is an entry point object set its value. if (p->IsMutable() && p->IsWeakRefObject()) { bool loadEntryPt = setEntryPoint(p); ASSERT(loadEntryPt); } break; } case 'S': /* String. */ { PolyStringObject * ps = (PolyStringObject *)p; /* The length is the number of characters. */ fscanf(f, "%" POLYUFMT, &nBytes); ch = getc(f); ASSERT(ch == '|'); ps->length = nBytes; for (i = 0; i < nBytes; i++) { int n; fscanf(f, "%02x", &n); ps->chars[i] = n; } ch = getc(f); ASSERT(ch == '\n'); break; } case 'C': /* Code segment. */ case 'D': { bool oldForm = ch == 'C'; byte *u = (byte*)p; POLYUNSIGNED length = p->Length(); /* Read the number of bytes of code and the number of words for constants. */ fscanf(f, "%" POLYUFMT ",%" POLYUFMT, &nWords, &nBytes); /* Read the code. */ ch = getc(f); ASSERT(ch == '|'); for (i = 0; i < nBytes; i++) { int n; fscanf(f, "%02x", &n); u[i] = n; } machineDependent->FlushInstructionCache(u, nBytes); ch = getc(f); ASSERT(ch == '|'); /* Set the constant count. */ p->Set(length-1, PolyWord::FromUnsigned(nWords)); if (oldForm) { p->Set(length-1-nWords-1, PolyWord::FromUnsigned(0)); /* Profile count. */ p->Set(length-1-nWords-3, PolyWord::FromUnsigned(0)); /* Marker word. */ p->Set(length-1-nWords-2, PolyWord::FromUnsigned((length-1-nWords-2)*sizeof(PolyWord))); /* Check - the code should end at the marker word. */ ASSERT(nBytes == ((length-1-nWords-3)*sizeof(PolyWord))); } /* Read in the constants. */ for (i = 0; i < nWords; i++) { if (! ReadValue(p, i+length-nWords-1)) return false; ch = getc(f); ASSERT((ch == ',' && i < nWords-1) || ((ch == '\n' || ch == '|') && i == nWords-1)); } // Read in any constants in the code. if (ch == '|') { ch = getc(f); while (ch != '\n') { ungetc(ch, f); POLYUNSIGNED offset; int code; fscanf(f, "%" POLYUFMT ",%d", &offset, &code); ch = getc(f); ASSERT(ch == ','); PolyWord constVal = TAGGED(0); if (! GetValue(&constVal)) return false; byte *toPatch = (byte*)p + offset; ScanAddress::SetConstantValue(toPatch, constVal, (ScanRelocationKind)code); do ch = getc(f); while (ch == ' '); } } break; } default: fprintf(stderr, "Invalid object type\n"); return false; } } return mutSpace.AddToTable() && immutSpace.AddToTable(); } // Import a file in the portable format and return a pointer to the root object. PolyObject *ImportPortable(const TCHAR *fileName) { PImport pImport; #if (defined(_WIN32) && defined(UNICODE)) pImport.f = _wfopen(fileName, L"r"); if (pImport.f == 0) { fprintf(stderr, "Unable to open file: %S\n", fileName); return 0; } #else pImport.f = fopen(fileName, "r"); if (pImport.f == 0) { fprintf(stderr, "Unable to open file: %s\n", fileName); return 0; } #endif if (pImport.DoImport()) return pImport.Root(); else return 0; } polyml-5.7.1/libpolyml/mpoly.h0000644000175000017500000000301513204034553015312 0ustar daviddavid/* Title: exports signature for mpoly.c Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2001-12, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _MPOLY_H_DEFINED #define _MPOLY_H_DEFINED #ifdef HAVE_TCHAR_H #include #else typedef char TCHAR; #endif #include "noreturn.h" #include "../polyexports.h" extern struct _userOptions { unsigned user_arg_count; TCHAR **user_arg_strings; const TCHAR *programName; unsigned gcthreads; // Number of threads to use for gc } userOptions; class PolyWord; NORETURNFN(extern void finish(int n)); extern char *RTSArgHelp(void); extern time_t exportTimeStamp; #if (defined(_WIN32) && ! defined(__CYGWIN__)) extern int polymain(int argc, TCHAR **argv, exportDescription *exports); #endif #endif /* _MPOLY_H_DEFINED */ polyml-5.7.1/libpolyml/run_time.cpp0000644000175000017500000003430513204034553016335 0ustar daviddavid/* Title: Run-time system. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright (c) 2000 Cambridge University Technical Services Limited Further work copyright David C. J. Matthews 2009, 2012, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #include "globals.h" #include "gc.h" #include "mpoly.h" #include "arb.h" #include "diagnostics.h" #include "processes.h" #include "profiling.h" #include "run_time.h" #include "sys.h" #include "polystring.h" #include "save_vec.h" #include "rtsentry.h" #include "memmgr.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyFullGC(PolyObject *threadId); POLYEXTERNALSYMBOL POLYUNSIGNED PolyIsBigEndian(); } #define SAVE(x) taskData->saveVec.push(x) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) /******************************************************************************/ /* */ /* STORAGE ALLOCATION */ /* */ /******************************************************************************/ // This is the storage allocator for allocating heap objects in the RTS. PolyObject *alloc(TaskData *taskData, POLYUNSIGNED data_words, unsigned flags) /* Allocate a number of words. */ { POLYUNSIGNED words = data_words + 1; if (profileMode == kProfileStoreAllocation) taskData->addProfileCount(words); PolyWord *foundSpace = processes->FindAllocationSpace(taskData, words, false); if (foundSpace == 0) { // Failed - the thread is set to raise an exception. throw IOException(); } PolyObject *pObj = (PolyObject*)(foundSpace + 1); pObj->SetLengthWord(data_words, flags); // Must initialise object here, because GC doesn't clean store. // Is this necessary any more? This used to be necessary when we used // structural equality and wanted to make sure that unused bytes were cleared. // N.B. This sets the store to zero NOT TAGGED(0). for (POLYUNSIGNED i = 0; i < data_words; i++) pObj->Set(i, PolyWord::FromUnsigned(0)); return pObj; } /******************************************************************************/ /* */ /* alloc_and_save - called by run-time system */ /* */ /******************************************************************************/ Handle alloc_and_save(TaskData *taskData, POLYUNSIGNED size, unsigned flags) /* Allocate and save the result on the vector. */ { return SAVE(alloc(taskData, size, flags)); } POLYUNSIGNED PolyFullGC(PolyObject *threadId) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); try { // Can this raise an exception e.g. if there is insufficient memory? FullGC(taskData); } catch (...) { } // If an ML exception is raised taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Returns unit. } /******************************************************************************/ /* */ /* Error Messages */ /* */ /******************************************************************************/ // Return the handle to a string error message. This will return // something like "Unknown error" from strerror if it doesn't match // anything. Handle errorMsg(TaskData *taskData, int err) { #ifdef _WIN32 LPTSTR lpMsg = NULL; TCHAR *p; if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, (DWORD)err, 0, (LPTSTR)&lpMsg, 1, NULL) > 0) { /* The message is returned with CRLF at the end. Remove them. */ for (p = lpMsg; *p != '\0' && *p != '\n' && *p != '\r'; p++); *p = '\0'; Handle res = SAVE(C_string_to_Poly(taskData, lpMsg)); LocalFree(lpMsg); return res; } #endif // Unix and unknown Windows errors. return SAVE(C_string_to_Poly(taskData, strerror(err))); } #define DEREFEXNHANDLE(_x) ((poly_exn *)DEREFHANDLE(_x)) static Handle make_exn(TaskData *taskData, int id, Handle arg, const char *fileName, int lineNo) { const char *exName; switch (id) { case EXC_interrupt: exName = "Interrupt"; break; case EXC_syserr: exName = "SysErr"; break; case EXC_size: exName = "Size"; break; case EXC_overflow: exName = "Overflow"; break; case EXC_underflow: exName = "Underflow"; break; case EXC_divide: exName = "Div"; break; case EXC_conversion: exName = "Conversion"; break; case EXC_XWindows: exName = "XWindows"; break; case EXC_subscript: exName = "Subscript"; break; case EXC_foreign: exName = "Foreign"; break; case EXC_Fail: exName = "Fail"; break; case EXC_thread: exName = "Thread"; break; case EXC_extrace: exName = "ExTrace"; break; default: ASSERT(0); exName = "Unknown"; // Shouldn't happen. } Handle pushed_name = SAVE(C_string_to_Poly(taskData, exName)); Handle exnHandle = alloc_and_save(taskData, SIZEOF(poly_exn)); Handle location; // The location data in an exception packet is either "NoLocation" (tagged 0) // or the address of a record. if (fileName == 0) location = taskData->saveVec.push(TAGGED(0)); else { Handle file = taskData->saveVec.push(C_string_to_Poly(taskData, fileName)); Handle line = Make_fixed_precision(taskData, lineNo); location = alloc_and_save(taskData, 5); location->WordP()->Set(0, file->Word()); // file location->WordP()->Set(1, line->Word()); // startLine location->WordP()->Set(2, line->Word()); // endLine location->WordP()->Set(3, TAGGED(0)); // startPosition location->WordP()->Set(4, TAGGED(0)); // endPosition } DEREFEXNHANDLE(exnHandle)->ex_id = TAGGED(id); DEREFEXNHANDLE(exnHandle)->ex_name = DEREFWORD(pushed_name); DEREFEXNHANDLE(exnHandle)->arg = DEREFWORDHANDLE(arg); DEREFEXNHANDLE(exnHandle)->ex_location = location->Word(); return exnHandle; } // Create an exception packet, e.g. Interrupt, for later use. This does not have a // location. poly_exn *makeExceptionPacket(TaskData *taskData, int id) { Handle exn = make_exn(taskData, id, taskData->saveVec.push(TAGGED(0)), 0, 0); return DEREFEXNHANDLE(exn); } static NORETURNFN(void raise_exception(TaskData *taskData, int id, Handle arg, const char *file, int line)); void raise_exception(TaskData *taskData, int id, Handle arg, const char *file, int line) /* Raise an exception with no arguments. */ { Handle exn = make_exn(taskData, id, arg, file, line); taskData->SetException(DEREFEXNHANDLE(exn)); throw IOException(); /* Return to Poly code immediately. */ /*NOTREACHED*/ } void raiseException0WithLocation(TaskData *taskData, int id, const char *file, int line) /* Raise an exception with no arguments. */ { raise_exception(taskData, id, SAVE(TAGGED(0)), file, line); /*NOTREACHED*/ } void raiseExceptionStringWithLocation(TaskData *taskData, int id, const char *str, const char *file, int line) /* Raise an exception with a C string as the argument. */ { raise_exception(taskData, id, SAVE(C_string_to_Poly(taskData, str)), file, line); /*NOTREACHED*/ } // This is called via a macro that puts in the file name and line number. void raiseSycallWithLocation(TaskData *taskData, const char *errmsg, int err, const char *file, int line) { if (err == 0) { Handle pushed_option = SAVE(NONE_VALUE); /* NONE */ Handle pushed_name = SAVE(C_string_to_Poly(taskData, errmsg)); Handle pair = alloc_and_save(taskData, 2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(pushed_name)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(pushed_option)); raise_exception(taskData, EXC_syserr, pair, file, line); } else { Handle errornum = Make_sysword(taskData, err); Handle pushed_option = alloc_and_save(taskData, 1); DEREFHANDLE(pushed_option)->Set(0, DEREFWORDHANDLE(errornum)); /* SOME err */ Handle pushed_name = errorMsg(taskData, err); // Generate the string. Handle pair = alloc_and_save(taskData, 2); DEREFHANDLE(pair)->Set(0, DEREFWORDHANDLE(pushed_name)); DEREFHANDLE(pair)->Set(1, DEREFWORDHANDLE(pushed_option)); raise_exception(taskData, EXC_syserr, pair, file, line); } } void raiseExceptionFailWithLocation(TaskData *taskData, const char *str, const char *file, int line) { raiseExceptionStringWithLocation(taskData, EXC_Fail, str, file, line); } /* "Polymorphic" function to generate a list. */ Handle makeList(TaskData *taskData, int count, char *p, int size, void *arg, Handle (mkEntry)(TaskData *, void*, char*)) { Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); /* Start from the end of the list. */ p += count*size; while (count > 0) { Handle value, next; p -= size; /* Back up to the last entry. */ value = mkEntry(taskData, arg, p); next = alloc_and_save(taskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); count--; } return list; } void CheckAndGrowStack(TaskData *taskData, POLYUNSIGNED minSize) /* Expands the current stack if it has grown. We cannot shrink a stack segment when it grows smaller because the frame is checked only at the beginning of a function to ensure that there is enough space for the maximum that can be allocated. */ { /* Get current size of new stack segment. */ POLYUNSIGNED old_len = taskData->stack->spaceSize(); if (old_len >= minSize) return; /* Ok with present size. */ // If it is too small double its size. POLYUNSIGNED new_len; /* New size */ for (new_len = old_len; new_len < minSize; new_len *= 2); POLYUNSIGNED limitSize = getPolyUnsigned(taskData, taskData->threadObject->mlStackSize); // Do not grow the stack if its size is already too big. if ((limitSize != 0 && old_len >= limitSize) || ! gMem.GrowOrShrinkStack(taskData, new_len)) { /* Cannot expand the stack any further. */ extern FILE *polyStderr; fprintf(polyStderr, "Warning - Unable to increase stack - interrupting thread\n"); if (debugOptions & DEBUG_THREADS) Log("THREAD: Unable to grow stack for thread %p from %lu to %lu\n", taskData, old_len, new_len); // We really should do this only if the thread is handling interrupts // asynchronously. On the other hand what else do we do? taskData->SetException(processes->GetInterrupt()); } else { if (debugOptions & DEBUG_THREADS) Log("THREAD: Growing stack for thread %p from %lu to %lu\n", taskData, old_len, new_len); } } Handle Make_fixed_precision(TaskData *taskData, int val) { if (val > MAXTAGGED || val < -MAXTAGGED-1) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(val)); } Handle Make_fixed_precision(TaskData *taskData, unsigned uval) { if (uval > MAXTAGGED) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(uval)); } Handle Make_fixed_precision(TaskData *taskData, long val) { if (val > MAXTAGGED || val < -MAXTAGGED-1) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(val)); } Handle Make_fixed_precision(TaskData *taskData, unsigned long uval) { if (uval > MAXTAGGED) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(uval)); } #ifdef HAVE_LONG_LONG Handle Make_fixed_precision(TaskData *taskData, long long val) { if (val > MAXTAGGED || val < -MAXTAGGED-1) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(val)); } Handle Make_fixed_precision(TaskData *taskData, unsigned long long uval) { if (uval > MAXTAGGED) raise_exception0(taskData, EXC_overflow); return taskData->saveVec.push(TAGGED(uval)); } #endif Handle Make_sysword(TaskData *taskData, uintptr_t p) { Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ); *(uintptr_t*)(result->Word().AsCodePtr()) = p; return result; } // This is used to determine the endian-ness that Poly/ML is running under. // It's really only needed for the interpreter. In particular the pre-built // compiler may be running under either byte order and has to check at // run-time. POLYUNSIGNED PolyIsBigEndian() { #ifdef WORDS_BIGENDIAN return TAGGED(1).AsUnsigned(); #else return TAGGED(0).AsUnsigned(); #endif } struct _entrypts runTimeEPT[] = { { "PolyFullGC", (polyRTSFunction)&PolyFullGC}, { "PolyIsBigEndian", (polyRTSFunction)&PolyIsBigEndian}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/errors.cpp0000644000175000017500000015213613204034553016032 0ustar daviddavid/* Title: Error Messages. Copyright (c) 2012, 2017 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #endif #ifdef HAVE_WINDOWS_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STRING_H #include #endif #include "errors.h" static struct { int errorNum; const char* errorString; } errortable[] = { #if(!defined(_WIN32) || defined(__CYGWIN__)) #ifdef EPERM { EPERM, "EPERM" }, #endif #ifdef ENOENT { ENOENT, "ENOENT" }, #endif #ifdef ESRCH { ESRCH, "ESRCH" }, #endif #ifdef EINTR { EINTR, "EINTR"}, #endif #ifdef EIO { EIO, "EIO"}, #endif #ifdef ENXIO { ENXIO, "ENXIO"}, #endif #ifdef E2BIG { E2BIG, "E2BIG"}, #endif #ifdef ENOEXEC { ENOEXEC, "ENOEXEC"}, #endif #ifdef EBADF { EBADF, "EBADF"}, #endif #ifdef ECHILD { ECHILD, "ECHILD"}, #endif #ifdef EAGAIN { EAGAIN, "EAGAIN"}, #endif #ifdef EDEADLK { EDEADLK, "EDEADLK"}, #endif #ifdef ENOMEM { ENOMEM, "ENOMEM"}, #endif #ifdef EACCES { EACCES, "EACCES"}, #endif #ifdef EFAULT { EFAULT, "EFAULT"}, #endif #ifdef ENOTBLK { ENOTBLK, "ENOTBLK"}, #endif #ifdef EBUSY { EBUSY, "EBUSY"}, #endif #ifdef EEXIST { EEXIST, "EEXIST"}, #endif #ifdef EXDEV { EXDEV, "EXDEV"}, #endif #ifdef ENODEV { ENODEV, "ENODEV"}, #endif #ifdef ENOTDIR { ENOTDIR, "ENOTDIR"}, #endif #ifdef EISDIR { EISDIR, "EISDIR"}, #endif #ifdef EINVAL { EINVAL, "EINVAL"}, #endif #ifdef ENFILE { ENFILE, "ENFILE"}, #endif #ifdef EMFILE { EMFILE, "EMFILE"}, #endif #ifdef ENOTTY { ENOTTY, "ENOTTY"}, #endif #ifdef ETXTBSY { ETXTBSY, "ETXTBSY"}, #endif #ifdef EFBIG { EFBIG, "EFBIG"}, #endif #ifdef ENOSPC { ENOSPC, "ENOSPC"}, #endif #ifdef ESPIPE { ESPIPE, "ESPIPE"}, #endif #ifdef EROFS { EROFS, "EROFS"}, #endif #ifdef EMLINK { EMLINK, "EMLINK"}, #endif #ifdef EPIPE { EPIPE, "EPIPE"}, #endif #ifdef EDOM { EDOM, "EDOM"}, #endif #ifdef ERANGE { ERANGE, "ERANGE"}, #endif #ifdef ENOMSG { ENOMSG, "ENOMSG"}, #endif #ifdef EUCLEAN { EUCLEAN, "EUCLEAN"}, #endif #ifdef EWOULDBLOCK { EWOULDBLOCK, "EWOULDBLOCK"}, #endif #ifdef EIDRM { EIDRM, "EIDRM"}, #endif #ifdef EINPROGRESS { EINPROGRESS, "EINPROGRESS"}, #endif #ifdef ECHRNG { ECHRNG, "ECHRNG"}, #endif #ifdef EALREADY { EALREADY, "EALREADY"}, #endif #ifdef EL2NSYNC { EL2NSYNC, "EL2NSYNC"}, #endif #ifdef ENAMETOOLONG { ENAMETOOLONG, "ENAMETOOLONG"}, #endif #ifdef ENOTSOCK { ENOTSOCK, "ENOTSOCK"}, #endif #ifdef EL3HLT { EL3HLT, "EL3HLT"}, #endif #ifdef ENOLCK { ENOLCK, "ENOLCK"}, #endif #ifdef EDESTADDRREQ { EDESTADDRREQ, "EDESTADDRREQ"}, #endif #ifdef EL3RST { EL3RST, "EL3RST"}, #endif #ifdef ENOSYS { ENOSYS, "ENOSYS"}, #endif #ifdef EMSGSIZE { EMSGSIZE, "EMSGSIZE"}, #endif #ifdef ELNRNG { ELNRNG, "ELNRNG"}, #endif #ifdef ENOTEMPTY { ENOTEMPTY, "ENOTEMPTY"}, #endif #ifdef EPROTOTYPE { EPROTOTYPE, "EPROTOTYPE"}, #endif #ifdef EUNATCH { EUNATCH, "EUNATCH"}, #endif #ifdef EILSEQ { EILSEQ, "EILSEQ"}, #endif #ifdef ENOPROTOOPT { ENOPROTOOPT, "ENOPROTOOPT"}, #endif #ifdef ENOCSI { ENOCSI, "ENOCSI"}, #endif #ifdef EPROTONOSUPPORT { EPROTONOSUPPORT, "EPROTONOSUPPORT"}, #endif #ifdef EL2HLT { EL2HLT, "EL2HLT"}, #endif #ifdef ESOCKTNOSUPPORT { ESOCKTNOSUPPORT, "ESOCKTNOSUPPORT"}, #endif #ifdef EOPNOTSUPP { EOPNOTSUPP, "EOPNOTSUPP"}, #endif #ifdef ENOTREADY { ENOTREADY, "ENOTREADY"}, #endif #ifdef EPFNOSUPPORT { EPFNOSUPPORT, "EPFNOSUPPORT"}, #endif #ifdef EWRPROTECT { EWRPROTECT, "EWRPROTECT"}, #endif #ifdef EAFNOSUPPORT { EAFNOSUPPORT, "EAFNOSUPPORT"}, #endif #ifdef EFORMAT { EFORMAT, "EFORMAT"}, #endif #ifdef EADDRINUSE { EADDRINUSE, "EADDRINUSE"}, #endif #ifdef EADDRNOTAVAIL { EADDRNOTAVAIL, "EADDRNOTAVAIL"}, #endif #ifdef ENOCONNECT { ENOCONNECT, "ENOCONNECT"}, #endif #ifdef ENETDOWN { ENETDOWN, "ENETDOWN"}, #endif #ifdef ESTALE { ESTALE, "ESTALE"}, #endif #ifdef ENETUNREACH { ENETUNREACH, "ENETUNREACH"}, #endif #ifdef EDIST { EDIST, "EDIST"}, #endif #ifdef ENETRESET { ENETRESET, "ENETRESET"}, #endif #ifdef ECONNABORTED { ECONNABORTED, "ECONNABORTED"}, #endif #ifdef ECONNRESET { ECONNRESET, "ECONNRESET"}, #endif #ifdef ENOBUFS { ENOBUFS, "ENOBUFS"}, #endif #ifdef EISCONN { EISCONN, "EISCONN"}, #endif #ifdef ENOTCONN { ENOTCONN, "ENOTCONN"}, #endif #ifdef ESHUTDOWN { ESHUTDOWN, "ESHUTDOWN"}, #endif #ifdef ETOOMANYREFS { ETOOMANYREFS, "ETOOMANYREFS"}, #endif #ifdef ETIMEDOUT { ETIMEDOUT, "ETIMEDOUT"}, #endif #ifdef ECONNREFUSED { ECONNREFUSED, "ECONNREFUSED"}, #endif #ifdef ELOOP { ELOOP, "ELOOP"}, #endif #ifdef EHOSTDOWN { EHOSTDOWN, "EHOSTDOWN"}, #endif #ifdef EHOSTUNREACH { EHOSTUNREACH, "EHOSTUNREACH"}, #endif #ifdef EPROCLIM { EPROCLIM, "EPROCLIM"}, #endif #ifdef EUSERS { EUSERS, "EUSERS"}, #endif #ifdef EDQUOT { EDQUOT, "EDQUOT"}, #endif #ifdef EREMOTE { EREMOTE, "EREMOTE"}, #endif #ifdef ENOSTR { ENOSTR, "ENOSTR"}, #endif #ifdef EBADRPC { EBADRPC, "EBADRPC"}, #endif #ifdef ETIME { ETIME, "ETIME"}, #endif #ifdef ERPCMISMATCH { ERPCMISMATCH, "ERPCMISMATCH"}, #endif #ifdef ENOSR { ENOSR, "ENOSR"}, #endif #ifdef EPROGUNAVAIL { EPROGUNAVAIL, "EPROGUNAVAIL"}, #endif #ifdef EPROGMISMATCH { EPROGMISMATCH, "EPROGMISMATCH"}, #endif #ifdef EBADMSG { EBADMSG, "EBADMSG"}, #endif #ifdef EPROCUNAVAIL { EPROCUNAVAIL, "EPROCUNAVAIL"}, #endif #ifdef EFTYPE { EFTYPE, "EFTYPE"}, #endif #ifdef ENONET { ENONET, "ENONET"}, #endif #ifdef EAUTH { EAUTH, "EAUTH"}, #endif #ifdef ERESTART { ERESTART, "ERESTART"}, #endif #ifdef ERREMOTE { ERREMOTE, "ERREMOTE"}, #endif #ifdef ENEEDAUTH { ENEEDAUTH, "ENEEDAUTH"}, #endif #ifdef ENOLINK { ENOLINK, "ENOLINK"}, #endif #ifdef EADV { EADV, "EADV"}, #endif #ifdef ESRMNT { ESRMNT, "ESRMNT"}, #endif #ifdef ECOMM { ECOMM, "ECOMM"}, #endif #ifdef EPROTO { EPROTO, "EPROTO"}, #endif #ifdef EMULTIHOP { EMULTIHOP, "EMULTIHOP"}, #endif #ifdef EDOTDOT { EDOTDOT, "EDOTDOT"}, #endif #ifdef EREMCHG { EREMCHG, "EREMCHG"}, #endif #ifdef EMEDIA { EMEDIA, "EMEDIA"}, #endif #ifdef ESOFT { ESOFT, "ESOFT"}, #endif #ifdef ENOATTR { ENOATTR, "ENOATTR"}, #endif #ifdef ESAD { ESAD, "ESAD"}, #endif #ifdef ENOTRUST { ENOTRUST, "ENOTRUST"}, #endif #ifdef ECANCELED { ECANCELED, "ECANCELED"}, #endif #ifdef ENODATA { ENODATA, "ENODATA"}, #endif #ifdef EBADE { EBADE, "EBADE"}, #endif #ifdef EBADR { EBADR, "EBADR"}, #endif #ifdef EXFULL { EXFULL, "EXFULL"}, #endif #ifdef ENOANO { ENOANO, "ENOANO"}, #endif #ifdef EBADRQC { EBADRQC, "EBADRQC"}, #endif #ifdef EBADSLT { EBADSLT, "EBADSLT"}, #endif #ifdef EDEADLOCK { EDEADLOCK, "EDEADLOCK"}, #endif #ifdef EBFONT { EBFONT, "EBFONT"}, #endif #ifdef EBFONT { EBFONT, "EBFONT"}, #endif #ifdef ENOPKG { ENOPKG, "ENOPKG"}, #endif #ifdef ELBIN { ELBIN, "ELBIN"}, #endif #ifdef ENOTUNIQ { ENOTUNIQ, "ENOTUNIQ"}, #endif #ifdef EBADFD { EBADFD, "EBADFD"}, #endif #ifdef ELIBACC { ELIBACC, "ELIBACC"}, #endif #ifdef ELIBBAD { ELIBBAD, "ELIBBAD"}, #endif #ifdef ELIBSCN { ELIBSCN, "ELIBSCN"}, #endif #ifdef ELIBMAX { ELIBMAX, "ELIBMAX"}, #endif #ifdef ESTRPIPE { ESTRPIPE, "ESTRPIPE"}, #endif #ifdef ELIBEXEC { ELIBEXEC, "ELIBEXEC"}, #endif #ifdef ENMFILE { ENMFILE, "ENMFILE"}, #endif #ifdef ENOTNAM { ENOTNAM, "ENOTNAM"}, #endif #ifdef ENAVAIL { ENAVAIL, "ENAVAIL"}, #endif #ifdef EISNAM { EISNAM, "EISNAM"}, #endif #ifdef EREMOTEIO { EREMOTEIO, "EREMOTEIO"}, #endif #ifdef ENOMEDIUM { ENOMEDIUM, "ENOMEDIUM"}, #endif #ifdef EMEDIUMTYPE { EMEDIUMTYPE, "EMEDIUMTYPE"}, #endif #ifdef ENOKEY { ENOKEY, "ENOKEY"}, #endif #ifdef EKEYEXPIRED { EKEYEXPIRED, "EKEYEXPIRED"}, #endif #ifdef EKEYREVOKED { EKEYREVOKED, "EKEYREVOKED"}, #endif #ifdef EKEYREJECTED { EKEYREJECTED, "EKEYREJECTED"}, #endif #ifdef EOWNERDEAD { EOWNERDEAD, "EOWNERDEAD"}, #endif #ifdef ENOTRECOVERABLE { ENOTRECOVERABLE, "ENOTRECOVERABLE"}, #endif #ifdef ENOTSUP { ENOTSUP, "ENOTSUP"}, #endif #ifdef ENOMEDIUM { ENOMEDIUM, "ENOMEDIUM"}, #endif #ifdef ENOSHARE { ENOSHARE, "ENOSHARE"}, #endif #ifdef ECASECLASH { ECASECLASH, "ECASECLASH"}, #endif #ifdef EOVERFLOW { EOVERFLOW, "EOVERFLOW"}, #endif #else { ERROR_INVALID_FUNCTION, "ERROR_INVALID_FUNCTION" }, { ERROR_FILE_NOT_FOUND, "ERROR_FILE_NOT_FOUND" }, { ERROR_PATH_NOT_FOUND, "ERROR_PATH_NOT_FOUND" }, { ERROR_TOO_MANY_OPEN_FILES, "ERROR_TOO_MANY_OPEN_FILES" }, { ERROR_ACCESS_DENIED, "ERROR_ACCESS_DENIED" }, { ERROR_INVALID_HANDLE, "ERROR_INVALID_HANDLE" }, { ERROR_ARENA_TRASHED, "ERROR_ARENA_TRASHED" }, { ERROR_NOT_ENOUGH_MEMORY, "ERROR_NOT_ENOUGH_MEMORY" }, { ERROR_INVALID_BLOCK, "ERROR_INVALID_BLOCK" }, { ERROR_BAD_ENVIRONMENT, "ERROR_BAD_ENVIRONMENT" }, { ERROR_BAD_FORMAT, "ERROR_BAD_FORMAT" }, { ERROR_INVALID_ACCESS, "ERROR_INVALID_ACCESS" }, { ERROR_INVALID_DATA, "ERROR_INVALID_DATA" }, { ERROR_OUTOFMEMORY, "ERROR_OUTOFMEMORY" }, { ERROR_INVALID_DRIVE, "ERROR_INVALID_DRIVE" }, { ERROR_CURRENT_DIRECTORY, "ERROR_CURRENT_DIRECTORY" }, { ERROR_NOT_SAME_DEVICE, "ERROR_NOT_SAME_DEVICE" }, { ERROR_NO_MORE_FILES, "ERROR_NO_MORE_FILES" }, { ERROR_WRITE_PROTECT, "ERROR_WRITE_PROTECT" }, { ERROR_BAD_UNIT, "ERROR_BAD_UNIT" }, { ERROR_NOT_READY, "ERROR_NOT_READY" }, { ERROR_BAD_COMMAND, "ERROR_BAD_COMMAND" }, { ERROR_CRC, "ERROR_CRC" }, { ERROR_BAD_LENGTH, "ERROR_BAD_LENGTH" }, { ERROR_SEEK, "ERROR_SEEK" }, { ERROR_NOT_DOS_DISK, "ERROR_NOT_DOS_DISK" }, { ERROR_SECTOR_NOT_FOUND, "ERROR_SECTOR_NOT_FOUND" }, { ERROR_OUT_OF_PAPER, "ERROR_OUT_OF_PAPER" }, { ERROR_WRITE_FAULT, "ERROR_WRITE_FAULT" }, { ERROR_READ_FAULT, "ERROR_READ_FAULT" }, { ERROR_GEN_FAILURE, "ERROR_GEN_FAILURE" }, { ERROR_SHARING_VIOLATION, "ERROR_SHARING_VIOLATION" }, { ERROR_LOCK_VIOLATION, "ERROR_LOCK_VIOLATION" }, { ERROR_WRONG_DISK, "ERROR_WRONG_DISK" }, { ERROR_SHARING_BUFFER_EXCEEDED, "ERROR_SHARING_BUFFER_EXCEEDED" }, { ERROR_HANDLE_EOF, "ERROR_HANDLE_EOF" }, { ERROR_HANDLE_DISK_FULL, "ERROR_HANDLE_DISK_FULL" }, { ERROR_NOT_SUPPORTED, "ERROR_NOT_SUPPORTED" }, { ERROR_REM_NOT_LIST, "ERROR_REM_NOT_LIST" }, { ERROR_DUP_NAME, "ERROR_DUP_NAME" }, { ERROR_BAD_NETPATH, "ERROR_BAD_NETPATH" }, { ERROR_NETWORK_BUSY, "ERROR_NETWORK_BUSY" }, { ERROR_DEV_NOT_EXIST, "ERROR_DEV_NOT_EXIST" }, { ERROR_TOO_MANY_CMDS, "ERROR_TOO_MANY_CMDS" }, { ERROR_ADAP_HDW_ERR, "ERROR_ADAP_HDW_ERR" }, { ERROR_BAD_NET_RESP, "ERROR_BAD_NET_RESP" }, { ERROR_UNEXP_NET_ERR, "ERROR_UNEXP_NET_ERR" }, { ERROR_BAD_REM_ADAP, "ERROR_BAD_REM_ADAP" }, { ERROR_PRINTQ_FULL, "ERROR_PRINTQ_FULL" }, { ERROR_NO_SPOOL_SPACE, "ERROR_NO_SPOOL_SPACE" }, { ERROR_PRINT_CANCELLED, "ERROR_PRINT_CANCELLED" }, { ERROR_NETNAME_DELETED, "ERROR_NETNAME_DELETED" }, { ERROR_NETWORK_ACCESS_DENIED, "ERROR_NETWORK_ACCESS_DENIED" }, { ERROR_BAD_DEV_TYPE, "ERROR_BAD_DEV_TYPE" }, { ERROR_BAD_NET_NAME, "ERROR_BAD_NET_NAME" }, { ERROR_TOO_MANY_NAMES, "ERROR_TOO_MANY_NAMES" }, { ERROR_TOO_MANY_SESS, "ERROR_TOO_MANY_SESS" }, { ERROR_SHARING_PAUSED, "ERROR_SHARING_PAUSED" }, { ERROR_REQ_NOT_ACCEP, "ERROR_REQ_NOT_ACCEP" }, { ERROR_REDIR_PAUSED, "ERROR_REDIR_PAUSED" }, { ERROR_FILE_EXISTS, "ERROR_FILE_EXISTS" }, { ERROR_CANNOT_MAKE, "ERROR_CANNOT_MAKE" }, { ERROR_FAIL_I24, "ERROR_FAIL_I24" }, { ERROR_OUT_OF_STRUCTURES, "ERROR_OUT_OF_STRUCTURES" }, { ERROR_ALREADY_ASSIGNED, "ERROR_ALREADY_ASSIGNED" }, { ERROR_INVALID_PASSWORD, "ERROR_INVALID_PASSWORD" }, { ERROR_INVALID_PARAMETER, "ERROR_INVALID_PARAMETER" }, { ERROR_NET_WRITE_FAULT, "ERROR_NET_WRITE_FAULT" }, { ERROR_NO_PROC_SLOTS, "ERROR_NO_PROC_SLOTS" }, { ERROR_TOO_MANY_SEMAPHORES, "ERROR_TOO_MANY_SEMAPHORES" }, { ERROR_EXCL_SEM_ALREADY_OWNED, "ERROR_EXCL_SEM_ALREADY_OWNED" }, { ERROR_SEM_IS_SET, "ERROR_SEM_IS_SET" }, { ERROR_TOO_MANY_SEM_REQUESTS, "ERROR_TOO_MANY_SEM_REQUESTS" }, { ERROR_INVALID_AT_INTERRUPT_TIME, "ERROR_INVALID_AT_INTERRUPT_TIME" }, { ERROR_SEM_OWNER_DIED, "ERROR_SEM_OWNER_DIED" }, { ERROR_SEM_USER_LIMIT, "ERROR_SEM_USER_LIMIT" }, { ERROR_DISK_CHANGE, "ERROR_DISK_CHANGE" }, { ERROR_DRIVE_LOCKED, "ERROR_DRIVE_LOCKED" }, { ERROR_BROKEN_PIPE, "ERROR_BROKEN_PIPE" }, { ERROR_OPEN_FAILED, "ERROR_OPEN_FAILED" }, { ERROR_BUFFER_OVERFLOW, "ERROR_BUFFER_OVERFLOW" }, { ERROR_DISK_FULL, "ERROR_DISK_FULL" }, { ERROR_NO_MORE_SEARCH_HANDLES, "ERROR_NO_MORE_SEARCH_HANDLES" }, { ERROR_INVALID_TARGET_HANDLE, "ERROR_INVALID_TARGET_HANDLE" }, { ERROR_INVALID_CATEGORY, "ERROR_INVALID_CATEGORY" }, { ERROR_INVALID_VERIFY_SWITCH, "ERROR_INVALID_VERIFY_SWITCH" }, { ERROR_BAD_DRIVER_LEVEL, "ERROR_BAD_DRIVER_LEVEL" }, { ERROR_CALL_NOT_IMPLEMENTED, "ERROR_CALL_NOT_IMPLEMENTED" }, { ERROR_SEM_TIMEOUT, "ERROR_SEM_TIMEOUT" }, { ERROR_INSUFFICIENT_BUFFER, "ERROR_INSUFFICIENT_BUFFER" }, { ERROR_INVALID_NAME, "ERROR_INVALID_NAME" }, { ERROR_INVALID_LEVEL, "ERROR_INVALID_LEVEL" }, { ERROR_NO_VOLUME_LABEL, "ERROR_NO_VOLUME_LABEL" }, { ERROR_MOD_NOT_FOUND, "ERROR_MOD_NOT_FOUND" }, { ERROR_PROC_NOT_FOUND, "ERROR_PROC_NOT_FOUND" }, { ERROR_WAIT_NO_CHILDREN, "ERROR_WAIT_NO_CHILDREN" }, { ERROR_CHILD_NOT_COMPLETE, "ERROR_CHILD_NOT_COMPLETE" }, { ERROR_DIRECT_ACCESS_HANDLE, "ERROR_DIRECT_ACCESS_HANDLE" }, { ERROR_NEGATIVE_SEEK, "ERROR_NEGATIVE_SEEK" }, { ERROR_SEEK_ON_DEVICE, "ERROR_SEEK_ON_DEVICE" }, { ERROR_IS_JOIN_TARGET, "ERROR_IS_JOIN_TARGET" }, { ERROR_IS_JOINED, "ERROR_IS_JOINED" }, { ERROR_IS_SUBSTED, "ERROR_IS_SUBSTED" }, { ERROR_NOT_JOINED, "ERROR_NOT_JOINED" }, { ERROR_NOT_SUBSTED, "ERROR_NOT_SUBSTED" }, { ERROR_JOIN_TO_JOIN, "ERROR_JOIN_TO_JOIN" }, { ERROR_SUBST_TO_SUBST, "ERROR_SUBST_TO_SUBST" }, { ERROR_JOIN_TO_SUBST, "ERROR_JOIN_TO_SUBST" }, { ERROR_SUBST_TO_JOIN, "ERROR_SUBST_TO_JOIN" }, { ERROR_BUSY_DRIVE, "ERROR_BUSY_DRIVE" }, { ERROR_SAME_DRIVE, "ERROR_SAME_DRIVE" }, { ERROR_DIR_NOT_ROOT, "ERROR_DIR_NOT_ROOT" }, { ERROR_DIR_NOT_EMPTY, "ERROR_DIR_NOT_EMPTY" }, { ERROR_IS_SUBST_PATH, "ERROR_IS_SUBST_PATH" }, { ERROR_IS_JOIN_PATH, "ERROR_IS_JOIN_PATH" }, { ERROR_PATH_BUSY, "ERROR_PATH_BUSY" }, { ERROR_IS_SUBST_TARGET, "ERROR_IS_SUBST_TARGET" }, { ERROR_SYSTEM_TRACE, "ERROR_SYSTEM_TRACE" }, { ERROR_INVALID_EVENT_COUNT, "ERROR_INVALID_EVENT_COUNT" }, { ERROR_TOO_MANY_MUXWAITERS, "ERROR_TOO_MANY_MUXWAITERS" }, { ERROR_INVALID_LIST_FORMAT, "ERROR_INVALID_LIST_FORMAT" }, { ERROR_LABEL_TOO_LONG, "ERROR_LABEL_TOO_LONG" }, { ERROR_TOO_MANY_TCBS, "ERROR_TOO_MANY_TCBS" }, { ERROR_SIGNAL_REFUSED, "ERROR_SIGNAL_REFUSED" }, { ERROR_DISCARDED, "ERROR_DISCARDED" }, { ERROR_NOT_LOCKED, "ERROR_NOT_LOCKED" }, { ERROR_BAD_THREADID_ADDR, "ERROR_BAD_THREADID_ADDR" }, { ERROR_BAD_ARGUMENTS, "ERROR_BAD_ARGUMENTS" }, { ERROR_BAD_PATHNAME, "ERROR_BAD_PATHNAME" }, { ERROR_SIGNAL_PENDING, "ERROR_SIGNAL_PENDING" }, { ERROR_MAX_THRDS_REACHED, "ERROR_MAX_THRDS_REACHED" }, { ERROR_LOCK_FAILED, "ERROR_LOCK_FAILED" }, { ERROR_BUSY, "ERROR_BUSY" }, { ERROR_CANCEL_VIOLATION, "ERROR_CANCEL_VIOLATION" }, { ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, "ERROR_ATOMIC_LOCKS_NOT_SUPPORTED" }, { ERROR_INVALID_SEGMENT_NUMBER, "ERROR_INVALID_SEGMENT_NUMBER" }, { ERROR_INVALID_ORDINAL, "ERROR_INVALID_ORDINAL" }, { ERROR_ALREADY_EXISTS, "ERROR_ALREADY_EXISTS" }, { ERROR_INVALID_FLAG_NUMBER, "ERROR_INVALID_FLAG_NUMBER" }, { ERROR_SEM_NOT_FOUND, "ERROR_SEM_NOT_FOUND" }, { ERROR_INVALID_STARTING_CODESEG, "ERROR_INVALID_STARTING_CODESEG" }, { ERROR_INVALID_STACKSEG, "ERROR_INVALID_STACKSEG" }, { ERROR_INVALID_MODULETYPE, "ERROR_INVALID_MODULETYPE" }, { ERROR_INVALID_EXE_SIGNATURE, "ERROR_INVALID_EXE_SIGNATURE" }, { ERROR_EXE_MARKED_INVALID, "ERROR_EXE_MARKED_INVALID" }, { ERROR_BAD_EXE_FORMAT, "ERROR_BAD_EXE_FORMAT" }, { ERROR_ITERATED_DATA_EXCEEDS_64k, "ERROR_ITERATED_DATA_EXCEEDS_64k" }, { ERROR_INVALID_MINALLOCSIZE, "ERROR_INVALID_MINALLOCSIZE" }, { ERROR_DYNLINK_FROM_INVALID_RING, "ERROR_DYNLINK_FROM_INVALID_RING" }, { ERROR_IOPL_NOT_ENABLED, "ERROR_IOPL_NOT_ENABLED" }, { ERROR_INVALID_SEGDPL, "ERROR_INVALID_SEGDPL" }, { ERROR_AUTODATASEG_EXCEEDS_64k, "ERROR_AUTODATASEG_EXCEEDS_64k" }, { ERROR_RING2SEG_MUST_BE_MOVABLE, "ERROR_RING2SEG_MUST_BE_MOVABLE" }, { ERROR_RELOC_CHAIN_XEEDS_SEGLIM, "ERROR_RELOC_CHAIN_XEEDS_SEGLIM" }, { ERROR_INFLOOP_IN_RELOC_CHAIN, "ERROR_INFLOOP_IN_RELOC_CHAIN" }, { ERROR_ENVVAR_NOT_FOUND, "ERROR_ENVVAR_NOT_FOUND" }, { ERROR_NO_SIGNAL_SENT, "ERROR_NO_SIGNAL_SENT" }, { ERROR_FILENAME_EXCED_RANGE, "ERROR_FILENAME_EXCED_RANGE" }, { ERROR_RING2_STACK_IN_USE, "ERROR_RING2_STACK_IN_USE" }, { ERROR_META_EXPANSION_TOO_LONG, "ERROR_META_EXPANSION_TOO_LONG" }, { ERROR_INVALID_SIGNAL_NUMBER, "ERROR_INVALID_SIGNAL_NUMBER" }, { ERROR_THREAD_1_INACTIVE, "ERROR_THREAD_1_INACTIVE" }, { ERROR_LOCKED, "ERROR_LOCKED" }, { ERROR_TOO_MANY_MODULES, "ERROR_TOO_MANY_MODULES" }, { ERROR_NESTING_NOT_ALLOWED, "ERROR_NESTING_NOT_ALLOWED" }, #ifdef ERROR_EXE_MACHINE_TYPE_MISMATCH { ERROR_EXE_MACHINE_TYPE_MISMATCH, "ERROR_EXE_MACHINE_TYPE_MISMATCH" }, #endif { ERROR_BAD_PIPE, "ERROR_BAD_PIPE" }, { ERROR_PIPE_BUSY, "ERROR_PIPE_BUSY" }, { ERROR_NO_DATA, "ERROR_NO_DATA" }, { ERROR_PIPE_NOT_CONNECTED, "ERROR_PIPE_NOT_CONNECTED" }, { ERROR_MORE_DATA, "ERROR_MORE_DATA" }, { ERROR_VC_DISCONNECTED, "ERROR_VC_DISCONNECTED" }, { ERROR_INVALID_EA_NAME, "ERROR_INVALID_EA_NAME" }, { ERROR_EA_LIST_INCONSISTENT, "ERROR_EA_LIST_INCONSISTENT" }, { ERROR_NO_MORE_ITEMS, "ERROR_NO_MORE_ITEMS" }, { ERROR_CANNOT_COPY, "ERROR_CANNOT_COPY" }, { ERROR_DIRECTORY, "ERROR_DIRECTORY" }, { ERROR_EAS_DIDNT_FIT, "ERROR_EAS_DIDNT_FIT" }, { ERROR_EA_FILE_CORRUPT, "ERROR_EA_FILE_CORRUPT" }, { ERROR_EA_TABLE_FULL, "ERROR_EA_TABLE_FULL" }, { ERROR_INVALID_EA_HANDLE, "ERROR_INVALID_EA_HANDLE" }, { ERROR_EAS_NOT_SUPPORTED, "ERROR_EAS_NOT_SUPPORTED" }, { ERROR_NOT_OWNER, "ERROR_NOT_OWNER" }, { ERROR_TOO_MANY_POSTS, "ERROR_TOO_MANY_POSTS" }, { ERROR_PARTIAL_COPY, "ERROR_PARTIAL_COPY" }, { ERROR_MR_MID_NOT_FOUND, "ERROR_MR_MID_NOT_FOUND" }, { ERROR_INVALID_ADDRESS, "ERROR_INVALID_ADDRESS" }, { ERROR_ARITHMETIC_OVERFLOW, "ERROR_ARITHMETIC_OVERFLOW" }, { ERROR_PIPE_CONNECTED, "ERROR_PIPE_CONNECTED" }, { ERROR_PIPE_LISTENING, "ERROR_PIPE_LISTENING" }, { ERROR_EA_ACCESS_DENIED, "ERROR_EA_ACCESS_DENIED" }, { ERROR_OPERATION_ABORTED, "ERROR_OPERATION_ABORTED" }, { ERROR_IO_INCOMPLETE, "ERROR_IO_INCOMPLETE" }, { ERROR_IO_PENDING, "ERROR_IO_PENDING" }, { ERROR_NOACCESS, "ERROR_NOACCESS" }, { ERROR_SWAPERROR, "ERROR_SWAPERROR" }, { ERROR_STACK_OVERFLOW, "ERROR_STACK_OVERFLOW" }, { ERROR_INVALID_MESSAGE, "ERROR_INVALID_MESSAGE" }, { ERROR_CAN_NOT_COMPLETE, "ERROR_CAN_NOT_COMPLETE" }, { ERROR_INVALID_FLAGS, "ERROR_INVALID_FLAGS" }, { ERROR_UNRECOGNIZED_VOLUME, "ERROR_UNRECOGNIZED_VOLUME" }, { ERROR_FILE_INVALID, "ERROR_FILE_INVALID" }, { ERROR_FULLSCREEN_MODE, "ERROR_FULLSCREEN_MODE" }, { ERROR_NO_TOKEN, "ERROR_NO_TOKEN" }, { ERROR_BADDB, "ERROR_BADDB" }, { ERROR_BADKEY, "ERROR_BADKEY" }, { ERROR_CANTOPEN, "ERROR_CANTOPEN" }, { ERROR_CANTREAD, "ERROR_CANTREAD" }, { ERROR_CANTWRITE, "ERROR_CANTWRITE" }, { ERROR_REGISTRY_RECOVERED, "ERROR_REGISTRY_RECOVERED" }, { ERROR_REGISTRY_CORRUPT, "ERROR_REGISTRY_CORRUPT" }, { ERROR_REGISTRY_IO_FAILED, "ERROR_REGISTRY_IO_FAILED" }, { ERROR_NOT_REGISTRY_FILE, "ERROR_NOT_REGISTRY_FILE" }, { ERROR_KEY_DELETED, "ERROR_KEY_DELETED" }, { ERROR_NO_LOG_SPACE, "ERROR_NO_LOG_SPACE" }, { ERROR_KEY_HAS_CHILDREN, "ERROR_KEY_HAS_CHILDREN" }, { ERROR_CHILD_MUST_BE_VOLATILE, "ERROR_CHILD_MUST_BE_VOLATILE" }, { ERROR_NOTIFY_ENUM_DIR, "ERROR_NOTIFY_ENUM_DIR" }, { ERROR_DEPENDENT_SERVICES_RUNNING, "ERROR_DEPENDENT_SERVICES_RUNNING" }, { ERROR_INVALID_SERVICE_CONTROL, "ERROR_INVALID_SERVICE_CONTROL" }, { ERROR_SERVICE_REQUEST_TIMEOUT, "ERROR_SERVICE_REQUEST_TIMEOUT" }, { ERROR_SERVICE_NO_THREAD, "ERROR_SERVICE_NO_THREAD" }, { ERROR_SERVICE_DATABASE_LOCKED, "ERROR_SERVICE_DATABASE_LOCKED" }, { ERROR_SERVICE_ALREADY_RUNNING, "ERROR_SERVICE_ALREADY_RUNNING" }, { ERROR_INVALID_SERVICE_ACCOUNT, "ERROR_INVALID_SERVICE_ACCOUNT" }, { ERROR_SERVICE_DISABLED, "ERROR_SERVICE_DISABLED" }, { ERROR_CIRCULAR_DEPENDENCY, "ERROR_CIRCULAR_DEPENDENCY" }, { ERROR_SERVICE_DOES_NOT_EXIST, "ERROR_SERVICE_DOES_NOT_EXIST" }, { ERROR_SERVICE_CANNOT_ACCEPT_CTRL, "ERROR_SERVICE_CANNOT_ACCEPT_CTRL" }, { ERROR_SERVICE_NOT_ACTIVE, "ERROR_SERVICE_NOT_ACTIVE" }, { ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" }, { ERROR_EXCEPTION_IN_SERVICE, "ERROR_EXCEPTION_IN_SERVICE" }, { ERROR_DATABASE_DOES_NOT_EXIST, "ERROR_DATABASE_DOES_NOT_EXIST" }, { ERROR_SERVICE_SPECIFIC_ERROR, "ERROR_SERVICE_SPECIFIC_ERROR" }, { ERROR_PROCESS_ABORTED, "ERROR_PROCESS_ABORTED" }, { ERROR_SERVICE_DEPENDENCY_FAIL, "ERROR_SERVICE_DEPENDENCY_FAIL" }, { ERROR_SERVICE_LOGON_FAILED, "ERROR_SERVICE_LOGON_FAILED" }, { ERROR_SERVICE_START_HANG, "ERROR_SERVICE_START_HANG" }, { ERROR_INVALID_SERVICE_LOCK, "ERROR_INVALID_SERVICE_LOCK" }, { ERROR_SERVICE_MARKED_FOR_DELETE, "ERROR_SERVICE_MARKED_FOR_DELETE" }, { ERROR_SERVICE_EXISTS, "ERROR_SERVICE_EXISTS" }, { ERROR_ALREADY_RUNNING_LKG, "ERROR_ALREADY_RUNNING_LKG" }, { ERROR_SERVICE_DEPENDENCY_DELETED, "ERROR_SERVICE_DEPENDENCY_DELETED" }, { ERROR_BOOT_ALREADY_ACCEPTED, "ERROR_BOOT_ALREADY_ACCEPTED" }, { ERROR_SERVICE_NEVER_STARTED, "ERROR_SERVICE_NEVER_STARTED" }, { ERROR_DUPLICATE_SERVICE_NAME, "ERROR_DUPLICATE_SERVICE_NAME" }, #ifdef ERROR_DIFFERENT_SERVICE_ACCOUNT { ERROR_DIFFERENT_SERVICE_ACCOUNT, "ERROR_DIFFERENT_SERVICE_ACCOUNT" }, #endif { ERROR_END_OF_MEDIA, "ERROR_END_OF_MEDIA" }, { ERROR_FILEMARK_DETECTED, "ERROR_FILEMARK_DETECTED" }, { ERROR_BEGINNING_OF_MEDIA, "ERROR_BEGINNING_OF_MEDIA" }, { ERROR_SETMARK_DETECTED, "ERROR_SETMARK_DETECTED" }, { ERROR_NO_DATA_DETECTED, "ERROR_NO_DATA_DETECTED" }, { ERROR_PARTITION_FAILURE, "ERROR_PARTITION_FAILURE" }, { ERROR_INVALID_BLOCK_LENGTH, "ERROR_INVALID_BLOCK_LENGTH" }, { ERROR_DEVICE_NOT_PARTITIONED, "ERROR_DEVICE_NOT_PARTITIONED" }, { ERROR_UNABLE_TO_LOCK_MEDIA, "ERROR_UNABLE_TO_LOCK_MEDIA" }, { ERROR_UNABLE_TO_UNLOAD_MEDIA, "ERROR_UNABLE_TO_UNLOAD_MEDIA" }, { ERROR_MEDIA_CHANGED, "ERROR_MEDIA_CHANGED" }, { ERROR_BUS_RESET, "ERROR_BUS_RESET" }, { ERROR_NO_MEDIA_IN_DRIVE, "ERROR_NO_MEDIA_IN_DRIVE" }, { ERROR_NO_UNICODE_TRANSLATION, "ERROR_NO_UNICODE_TRANSLATION" }, { ERROR_DLL_INIT_FAILED, "ERROR_DLL_INIT_FAILED" }, { ERROR_SHUTDOWN_IN_PROGRESS, "ERROR_SHUTDOWN_IN_PROGRESS" }, { ERROR_NO_SHUTDOWN_IN_PROGRESS, "ERROR_NO_SHUTDOWN_IN_PROGRESS" }, { ERROR_IO_DEVICE, "ERROR_IO_DEVICE" }, { ERROR_SERIAL_NO_DEVICE, "ERROR_SERIAL_NO_DEVICE" }, { ERROR_IRQ_BUSY, "ERROR_IRQ_BUSY" }, { ERROR_MORE_WRITES, "ERROR_MORE_WRITES" }, { ERROR_COUNTER_TIMEOUT, "ERROR_COUNTER_TIMEOUT" }, { ERROR_FLOPPY_ID_MARK_NOT_FOUND, "ERROR_FLOPPY_ID_MARK_NOT_FOUND" }, { ERROR_FLOPPY_WRONG_CYLINDER, "ERROR_FLOPPY_WRONG_CYLINDER" }, { ERROR_FLOPPY_UNKNOWN_ERROR, "ERROR_FLOPPY_UNKNOWN_ERROR" }, { ERROR_FLOPPY_BAD_REGISTERS, "ERROR_FLOPPY_BAD_REGISTERS" }, { ERROR_DISK_RECALIBRATE_FAILED, "ERROR_DISK_RECALIBRATE_FAILED" }, { ERROR_DISK_OPERATION_FAILED, "ERROR_DISK_OPERATION_FAILED" }, { ERROR_DISK_RESET_FAILED, "ERROR_DISK_RESET_FAILED" }, { ERROR_EOM_OVERFLOW, "ERROR_EOM_OVERFLOW" }, { ERROR_NOT_ENOUGH_SERVER_MEMORY, "ERROR_NOT_ENOUGH_SERVER_MEMORY" }, { ERROR_POSSIBLE_DEADLOCK, "ERROR_POSSIBLE_DEADLOCK" }, { ERROR_MAPPED_ALIGNMENT, "ERROR_MAPPED_ALIGNMENT" }, { ERROR_SET_POWER_STATE_VETOED, "ERROR_SET_POWER_STATE_VETOED" }, { ERROR_SET_POWER_STATE_FAILED, "ERROR_SET_POWER_STATE_FAILED" }, #ifdef ERROR_TOO_MANY_LINKS { ERROR_TOO_MANY_LINKS, "ERROR_TOO_MANY_LINKS" }, #endif { ERROR_OLD_WIN_VERSION, "ERROR_OLD_WIN_VERSION" }, { ERROR_APP_WRONG_OS, "ERROR_APP_WRONG_OS" }, { ERROR_SINGLE_INSTANCE_APP, "ERROR_SINGLE_INSTANCE_APP" }, { ERROR_RMODE_APP, "ERROR_RMODE_APP" }, { ERROR_INVALID_DLL, "ERROR_INVALID_DLL" }, { ERROR_NO_ASSOCIATION, "ERROR_NO_ASSOCIATION" }, { ERROR_DDE_FAIL, "ERROR_DDE_FAIL" }, { ERROR_DLL_NOT_FOUND, "ERROR_DLL_NOT_FOUND" }, { ERROR_BAD_USERNAME, "ERROR_BAD_USERNAME" }, { ERROR_NOT_CONNECTED, "ERROR_NOT_CONNECTED" }, { ERROR_OPEN_FILES, "ERROR_OPEN_FILES" }, { ERROR_ACTIVE_CONNECTIONS, "ERROR_ACTIVE_CONNECTIONS" }, { ERROR_DEVICE_IN_USE, "ERROR_DEVICE_IN_USE" }, { ERROR_BAD_DEVICE, "ERROR_BAD_DEVICE" }, { ERROR_CONNECTION_UNAVAIL, "ERROR_CONNECTION_UNAVAIL" }, { ERROR_DEVICE_ALREADY_REMEMBERED, "ERROR_DEVICE_ALREADY_REMEMBERED" }, { ERROR_NO_NET_OR_BAD_PATH, "ERROR_NO_NET_OR_BAD_PATH" }, { ERROR_BAD_PROVIDER, "ERROR_BAD_PROVIDER" }, { ERROR_CANNOT_OPEN_PROFILE, "ERROR_CANNOT_OPEN_PROFILE" }, { ERROR_BAD_PROFILE, "ERROR_BAD_PROFILE" }, { ERROR_NOT_CONTAINER, "ERROR_NOT_CONTAINER" }, { ERROR_EXTENDED_ERROR, "ERROR_EXTENDED_ERROR" }, { ERROR_INVALID_GROUPNAME, "ERROR_INVALID_GROUPNAME" }, { ERROR_INVALID_COMPUTERNAME, "ERROR_INVALID_COMPUTERNAME" }, { ERROR_INVALID_EVENTNAME, "ERROR_INVALID_EVENTNAME" }, { ERROR_INVALID_DOMAINNAME, "ERROR_INVALID_DOMAINNAME" }, { ERROR_INVALID_SERVICENAME, "ERROR_INVALID_SERVICENAME" }, { ERROR_INVALID_NETNAME, "ERROR_INVALID_NETNAME" }, { ERROR_INVALID_SHARENAME, "ERROR_INVALID_SHARENAME" }, { ERROR_INVALID_PASSWORDNAME, "ERROR_INVALID_PASSWORDNAME" }, { ERROR_INVALID_MESSAGENAME, "ERROR_INVALID_MESSAGENAME" }, { ERROR_INVALID_MESSAGEDEST, "ERROR_INVALID_MESSAGEDEST" }, { ERROR_SESSION_CREDENTIAL_CONFLICT, "ERROR_SESSION_CREDENTIAL_CONFLICT" }, { ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, "ERROR_REMOTE_SESSION_LIMIT_EXCEEDED" }, { ERROR_DUP_DOMAINNAME, "ERROR_DUP_DOMAINNAME" }, { ERROR_NO_NETWORK, "ERROR_NO_NETWORK" }, { ERROR_CANCELLED, "ERROR_CANCELLED" }, { ERROR_USER_MAPPED_FILE, "ERROR_USER_MAPPED_FILE" }, { ERROR_CONNECTION_REFUSED, "ERROR_CONNECTION_REFUSED" }, { ERROR_GRACEFUL_DISCONNECT, "ERROR_GRACEFUL_DISCONNECT" }, { ERROR_ADDRESS_ALREADY_ASSOCIATED, "ERROR_ADDRESS_ALREADY_ASSOCIATED" }, { ERROR_ADDRESS_NOT_ASSOCIATED, "ERROR_ADDRESS_NOT_ASSOCIATED" }, { ERROR_CONNECTION_INVALID, "ERROR_CONNECTION_INVALID" }, { ERROR_CONNECTION_ACTIVE, "ERROR_CONNECTION_ACTIVE" }, { ERROR_NETWORK_UNREACHABLE, "ERROR_NETWORK_UNREACHABLE" }, { ERROR_HOST_UNREACHABLE, "ERROR_HOST_UNREACHABLE" }, { ERROR_PROTOCOL_UNREACHABLE, "ERROR_PROTOCOL_UNREACHABLE" }, { ERROR_PORT_UNREACHABLE, "ERROR_PORT_UNREACHABLE" }, { ERROR_REQUEST_ABORTED, "ERROR_REQUEST_ABORTED" }, { ERROR_CONNECTION_ABORTED, "ERROR_CONNECTION_ABORTED" }, { ERROR_RETRY, "ERROR_RETRY" }, { ERROR_CONNECTION_COUNT_LIMIT, "ERROR_CONNECTION_COUNT_LIMIT" }, { ERROR_LOGIN_TIME_RESTRICTION, "ERROR_LOGIN_TIME_RESTRICTION" }, { ERROR_LOGIN_WKSTA_RESTRICTION, "ERROR_LOGIN_WKSTA_RESTRICTION" }, { ERROR_INCORRECT_ADDRESS, "ERROR_INCORRECT_ADDRESS" }, { ERROR_ALREADY_REGISTERED, "ERROR_ALREADY_REGISTERED" }, { ERROR_SERVICE_NOT_FOUND, "ERROR_SERVICE_NOT_FOUND" }, { ERROR_NOT_AUTHENTICATED, "ERROR_NOT_AUTHENTICATED" }, { ERROR_NOT_LOGGED_ON, "ERROR_NOT_LOGGED_ON" }, { ERROR_CONTINUE, "ERROR_CONTINUE" }, { ERROR_ALREADY_INITIALIZED, "ERROR_ALREADY_INITIALIZED" }, { ERROR_NO_MORE_DEVICES, "ERROR_NO_MORE_DEVICES" }, { ERROR_NOT_ALL_ASSIGNED, "ERROR_NOT_ALL_ASSIGNED" }, { ERROR_SOME_NOT_MAPPED, "ERROR_SOME_NOT_MAPPED" }, { ERROR_NO_QUOTAS_FOR_ACCOUNT, "ERROR_NO_QUOTAS_FOR_ACCOUNT" }, { ERROR_LOCAL_USER_SESSION_KEY, "ERROR_LOCAL_USER_SESSION_KEY" }, { ERROR_NULL_LM_PASSWORD, "ERROR_NULL_LM_PASSWORD" }, { ERROR_UNKNOWN_REVISION, "ERROR_UNKNOWN_REVISION" }, { ERROR_REVISION_MISMATCH, "ERROR_REVISION_MISMATCH" }, { ERROR_INVALID_OWNER, "ERROR_INVALID_OWNER" }, { ERROR_INVALID_PRIMARY_GROUP, "ERROR_INVALID_PRIMARY_GROUP" }, { ERROR_NO_IMPERSONATION_TOKEN, "ERROR_NO_IMPERSONATION_TOKEN" }, { ERROR_CANT_DISABLE_MANDATORY, "ERROR_CANT_DISABLE_MANDATORY" }, { ERROR_NO_LOGON_SERVERS, "ERROR_NO_LOGON_SERVERS" }, { ERROR_NO_SUCH_LOGON_SESSION, "ERROR_NO_SUCH_LOGON_SESSION" }, { ERROR_NO_SUCH_PRIVILEGE, "ERROR_NO_SUCH_PRIVILEGE" }, { ERROR_PRIVILEGE_NOT_HELD, "ERROR_PRIVILEGE_NOT_HELD" }, { ERROR_INVALID_ACCOUNT_NAME, "ERROR_INVALID_ACCOUNT_NAME" }, { ERROR_USER_EXISTS, "ERROR_USER_EXISTS" }, { ERROR_NO_SUCH_USER, "ERROR_NO_SUCH_USER" }, { ERROR_GROUP_EXISTS, "ERROR_GROUP_EXISTS" }, { ERROR_NO_SUCH_GROUP, "ERROR_NO_SUCH_GROUP" }, { ERROR_MEMBER_IN_GROUP, "ERROR_MEMBER_IN_GROUP" }, { ERROR_MEMBER_NOT_IN_GROUP, "ERROR_MEMBER_NOT_IN_GROUP" }, { ERROR_LAST_ADMIN, "ERROR_LAST_ADMIN" }, { ERROR_WRONG_PASSWORD, "ERROR_WRONG_PASSWORD" }, { ERROR_ILL_FORMED_PASSWORD, "ERROR_ILL_FORMED_PASSWORD" }, { ERROR_PASSWORD_RESTRICTION, "ERROR_PASSWORD_RESTRICTION" }, { ERROR_LOGON_FAILURE, "ERROR_LOGON_FAILURE" }, { ERROR_ACCOUNT_RESTRICTION, "ERROR_ACCOUNT_RESTRICTION" }, { ERROR_INVALID_LOGON_HOURS, "ERROR_INVALID_LOGON_HOURS" }, { ERROR_INVALID_WORKSTATION, "ERROR_INVALID_WORKSTATION" }, { ERROR_PASSWORD_EXPIRED, "ERROR_PASSWORD_EXPIRED" }, { ERROR_ACCOUNT_DISABLED, "ERROR_ACCOUNT_DISABLED" }, { ERROR_NONE_MAPPED, "ERROR_NONE_MAPPED" }, { ERROR_TOO_MANY_LUIDS_REQUESTED, "ERROR_TOO_MANY_LUIDS_REQUESTED" }, { ERROR_LUIDS_EXHAUSTED, "ERROR_LUIDS_EXHAUSTED" }, { ERROR_INVALID_SUB_AUTHORITY, "ERROR_INVALID_SUB_AUTHORITY" }, { ERROR_INVALID_ACL, "ERROR_INVALID_ACL" }, { ERROR_INVALID_SID, "ERROR_INVALID_SID" }, { ERROR_INVALID_SECURITY_DESCR, "ERROR_INVALID_SECURITY_DESCR" }, { ERROR_BAD_INHERITANCE_ACL, "ERROR_BAD_INHERITANCE_ACL" }, { ERROR_SERVER_DISABLED, "ERROR_SERVER_DISABLED" }, { ERROR_SERVER_NOT_DISABLED, "ERROR_SERVER_NOT_DISABLED" }, { ERROR_INVALID_ID_AUTHORITY, "ERROR_INVALID_ID_AUTHORITY" }, { ERROR_ALLOTTED_SPACE_EXCEEDED, "ERROR_ALLOTTED_SPACE_EXCEEDED" }, { ERROR_INVALID_GROUP_ATTRIBUTES, "ERROR_INVALID_GROUP_ATTRIBUTES" }, { ERROR_BAD_IMPERSONATION_LEVEL, "ERROR_BAD_IMPERSONATION_LEVEL" }, { ERROR_CANT_OPEN_ANONYMOUS, "ERROR_CANT_OPEN_ANONYMOUS" }, { ERROR_BAD_VALIDATION_CLASS, "ERROR_BAD_VALIDATION_CLASS" }, { ERROR_BAD_TOKEN_TYPE, "ERROR_BAD_TOKEN_TYPE" }, { ERROR_NO_SECURITY_ON_OBJECT, "ERROR_NO_SECURITY_ON_OBJECT" }, { ERROR_CANT_ACCESS_DOMAIN_INFO, "ERROR_CANT_ACCESS_DOMAIN_INFO" }, { ERROR_INVALID_SERVER_STATE, "ERROR_INVALID_SERVER_STATE" }, { ERROR_INVALID_DOMAIN_STATE, "ERROR_INVALID_DOMAIN_STATE" }, { ERROR_INVALID_DOMAIN_ROLE, "ERROR_INVALID_DOMAIN_ROLE" }, { ERROR_NO_SUCH_DOMAIN, "ERROR_NO_SUCH_DOMAIN" }, { ERROR_DOMAIN_EXISTS, "ERROR_DOMAIN_EXISTS" }, { ERROR_DOMAIN_LIMIT_EXCEEDED, "ERROR_DOMAIN_LIMIT_EXCEEDED" }, { ERROR_INTERNAL_DB_CORRUPTION, "ERROR_INTERNAL_DB_CORRUPTION" }, { ERROR_INTERNAL_ERROR, "ERROR_INTERNAL_ERROR" }, { ERROR_GENERIC_NOT_MAPPED, "ERROR_GENERIC_NOT_MAPPED" }, { ERROR_BAD_DESCRIPTOR_FORMAT, "ERROR_BAD_DESCRIPTOR_FORMAT" }, { ERROR_NOT_LOGON_PROCESS, "ERROR_NOT_LOGON_PROCESS" }, { ERROR_LOGON_SESSION_EXISTS, "ERROR_LOGON_SESSION_EXISTS" }, { ERROR_NO_SUCH_PACKAGE, "ERROR_NO_SUCH_PACKAGE" }, { ERROR_BAD_LOGON_SESSION_STATE, "ERROR_BAD_LOGON_SESSION_STATE" }, { ERROR_LOGON_SESSION_COLLISION, "ERROR_LOGON_SESSION_COLLISION" }, { ERROR_INVALID_LOGON_TYPE, "ERROR_INVALID_LOGON_TYPE" }, { ERROR_CANNOT_IMPERSONATE, "ERROR_CANNOT_IMPERSONATE" }, { ERROR_RXACT_INVALID_STATE, "ERROR_RXACT_INVALID_STATE" }, { ERROR_RXACT_COMMIT_FAILURE, "ERROR_RXACT_COMMIT_FAILURE" }, { ERROR_SPECIAL_ACCOUNT, "ERROR_SPECIAL_ACCOUNT" }, { ERROR_SPECIAL_GROUP, "ERROR_SPECIAL_GROUP" }, { ERROR_SPECIAL_USER, "ERROR_SPECIAL_USER" }, { ERROR_MEMBERS_PRIMARY_GROUP, "ERROR_MEMBERS_PRIMARY_GROUP" }, { ERROR_TOKEN_ALREADY_IN_USE, "ERROR_TOKEN_ALREADY_IN_USE" }, { ERROR_NO_SUCH_ALIAS, "ERROR_NO_SUCH_ALIAS" }, { ERROR_MEMBER_NOT_IN_ALIAS, "ERROR_MEMBER_NOT_IN_ALIAS" }, { ERROR_MEMBER_IN_ALIAS, "ERROR_MEMBER_IN_ALIAS" }, { ERROR_ALIAS_EXISTS, "ERROR_ALIAS_EXISTS" }, { ERROR_LOGON_NOT_GRANTED, "ERROR_LOGON_NOT_GRANTED" }, { ERROR_TOO_MANY_SECRETS, "ERROR_TOO_MANY_SECRETS" }, { ERROR_SECRET_TOO_LONG, "ERROR_SECRET_TOO_LONG" }, { ERROR_INTERNAL_DB_ERROR, "ERROR_INTERNAL_DB_ERROR" }, { ERROR_TOO_MANY_CONTEXT_IDS, "ERROR_TOO_MANY_CONTEXT_IDS" }, { ERROR_LOGON_TYPE_NOT_GRANTED, "ERROR_LOGON_TYPE_NOT_GRANTED" }, { ERROR_NT_CROSS_ENCRYPTION_REQUIRED, "ERROR_NT_CROSS_ENCRYPTION_REQUIRED" }, { ERROR_NO_SUCH_MEMBER, "ERROR_NO_SUCH_MEMBER" }, { ERROR_INVALID_MEMBER, "ERROR_INVALID_MEMBER" }, { ERROR_TOO_MANY_SIDS, "ERROR_TOO_MANY_SIDS" }, { ERROR_LM_CROSS_ENCRYPTION_REQUIRED, "ERROR_LM_CROSS_ENCRYPTION_REQUIRED" }, { ERROR_NO_INHERITANCE, "ERROR_NO_INHERITANCE" }, { ERROR_FILE_CORRUPT, "ERROR_FILE_CORRUPT" }, { ERROR_DISK_CORRUPT, "ERROR_DISK_CORRUPT" }, { ERROR_NO_USER_SESSION_KEY, "ERROR_NO_USER_SESSION_KEY" }, #ifdef ERROR_LICENSE_QUOTA_EXCEEDED { ERROR_LICENSE_QUOTA_EXCEEDED, "ERROR_LICENSE_QUOTA_EXCEEDED" }, #endif { ERROR_INVALID_WINDOW_HANDLE, "ERROR_INVALID_WINDOW_HANDLE" }, { ERROR_INVALID_MENU_HANDLE, "ERROR_INVALID_MENU_HANDLE" }, { ERROR_INVALID_CURSOR_HANDLE, "ERROR_INVALID_CURSOR_HANDLE" }, { ERROR_INVALID_ACCEL_HANDLE, "ERROR_INVALID_ACCEL_HANDLE" }, { ERROR_INVALID_HOOK_HANDLE, "ERROR_INVALID_HOOK_HANDLE" }, { ERROR_INVALID_DWP_HANDLE, "ERROR_INVALID_DWP_HANDLE" }, { ERROR_TLW_WITH_WSCHILD, "ERROR_TLW_WITH_WSCHILD" }, { ERROR_CANNOT_FIND_WND_CLASS, "ERROR_CANNOT_FIND_WND_CLASS" }, { ERROR_WINDOW_OF_OTHER_THREAD, "ERROR_WINDOW_OF_OTHER_THREAD" }, { ERROR_HOTKEY_ALREADY_REGISTERED, "ERROR_HOTKEY_ALREADY_REGISTERED" }, { ERROR_CLASS_ALREADY_EXISTS, "ERROR_CLASS_ALREADY_EXISTS" }, { ERROR_CLASS_DOES_NOT_EXIST, "ERROR_CLASS_DOES_NOT_EXIST" }, { ERROR_CLASS_HAS_WINDOWS, "ERROR_CLASS_HAS_WINDOWS" }, { ERROR_INVALID_INDEX, "ERROR_INVALID_INDEX" }, { ERROR_INVALID_ICON_HANDLE, "ERROR_INVALID_ICON_HANDLE" }, { ERROR_PRIVATE_DIALOG_INDEX, "ERROR_PRIVATE_DIALOG_INDEX" }, { ERROR_LISTBOX_ID_NOT_FOUND, "ERROR_LISTBOX_ID_NOT_FOUND" }, { ERROR_NO_WILDCARD_CHARACTERS, "ERROR_NO_WILDCARD_CHARACTERS" }, { ERROR_CLIPBOARD_NOT_OPEN, "ERROR_CLIPBOARD_NOT_OPEN" }, { ERROR_HOTKEY_NOT_REGISTERED, "ERROR_HOTKEY_NOT_REGISTERED" }, { ERROR_WINDOW_NOT_DIALOG, "ERROR_WINDOW_NOT_DIALOG" }, { ERROR_CONTROL_ID_NOT_FOUND, "ERROR_CONTROL_ID_NOT_FOUND" }, { ERROR_INVALID_COMBOBOX_MESSAGE, "ERROR_INVALID_COMBOBOX_MESSAGE" }, { ERROR_WINDOW_NOT_COMBOBOX, "ERROR_WINDOW_NOT_COMBOBOX" }, { ERROR_INVALID_EDIT_HEIGHT, "ERROR_INVALID_EDIT_HEIGHT" }, { ERROR_DC_NOT_FOUND, "ERROR_DC_NOT_FOUND" }, { ERROR_INVALID_HOOK_FILTER, "ERROR_INVALID_HOOK_FILTER" }, { ERROR_INVALID_FILTER_PROC, "ERROR_INVALID_FILTER_PROC" }, { ERROR_HOOK_NEEDS_HMOD, "ERROR_HOOK_NEEDS_HMOD" }, { ERROR_GLOBAL_ONLY_HOOK, "ERROR_GLOBAL_ONLY_HOOK" }, { ERROR_JOURNAL_HOOK_SET, "ERROR_JOURNAL_HOOK_SET" }, { ERROR_HOOK_NOT_INSTALLED, "ERROR_HOOK_NOT_INSTALLED" }, { ERROR_INVALID_LB_MESSAGE, "ERROR_INVALID_LB_MESSAGE" }, { ERROR_SETCOUNT_ON_BAD_LB, "ERROR_SETCOUNT_ON_BAD_LB" }, { ERROR_LB_WITHOUT_TABSTOPS, "ERROR_LB_WITHOUT_TABSTOPS" }, { ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, "ERROR_DESTROY_OBJECT_OF_OTHER_THREAD" }, { ERROR_CHILD_WINDOW_MENU, "ERROR_CHILD_WINDOW_MENU" }, { ERROR_NO_SYSTEM_MENU, "ERROR_NO_SYSTEM_MENU" }, { ERROR_INVALID_MSGBOX_STYLE, "ERROR_INVALID_MSGBOX_STYLE" }, { ERROR_INVALID_SPI_VALUE, "ERROR_INVALID_SPI_VALUE" }, { ERROR_SCREEN_ALREADY_LOCKED, "ERROR_SCREEN_ALREADY_LOCKED" }, { ERROR_HWNDS_HAVE_DIFF_PARENT, "ERROR_HWNDS_HAVE_DIFF_PARENT" }, { ERROR_NOT_CHILD_WINDOW, "ERROR_NOT_CHILD_WINDOW" }, { ERROR_INVALID_GW_COMMAND, "ERROR_INVALID_GW_COMMAND" }, { ERROR_INVALID_THREAD_ID, "ERROR_INVALID_THREAD_ID" }, { ERROR_NON_MDICHILD_WINDOW, "ERROR_NON_MDICHILD_WINDOW" }, { ERROR_POPUP_ALREADY_ACTIVE, "ERROR_POPUP_ALREADY_ACTIVE" }, { ERROR_NO_SCROLLBARS, "ERROR_NO_SCROLLBARS" }, { ERROR_INVALID_SCROLLBAR_RANGE, "ERROR_INVALID_SCROLLBAR_RANGE" }, { ERROR_INVALID_SHOWWIN_COMMAND, "ERROR_INVALID_SHOWWIN_COMMAND" }, #ifdef ERROR_NO_SYSTEM_RESOURCES { ERROR_NO_SYSTEM_RESOURCES, "ERROR_NO_SYSTEM_RESOURCES" }, #endif #ifdef ERROR_NONPAGED_SYSTEM_RESOURCES { ERROR_NONPAGED_SYSTEM_RESOURCES, "ERROR_NONPAGED_SYSTEM_RESOURCES" }, #endif #ifdef ERROR_PAGED_SYSTEM_RESOURCES { ERROR_PAGED_SYSTEM_RESOURCES, "ERROR_PAGED_SYSTEM_RESOURCES" }, #endif #ifdef ERROR_WORKING_SET_QUOTA { ERROR_WORKING_SET_QUOTA, "ERROR_WORKING_SET_QUOTA" }, #endif #ifdef ERROR_PAGEFILE_QUOTA { ERROR_PAGEFILE_QUOTA, "ERROR_PAGEFILE_QUOTA" }, #endif #ifdef ERROR_COMMITMENT_LIMIT { ERROR_COMMITMENT_LIMIT, "ERROR_COMMITMENT_LIMIT" }, #endif #ifdef ERROR_MENU_ITEM_NOT_FOUND { ERROR_MENU_ITEM_NOT_FOUND, "ERROR_MENU_ITEM_NOT_FOUND" }, #endif #ifdef ERROR_INVALID_KEYBOARD_HANDLE { ERROR_INVALID_KEYBOARD_HANDLE, "ERROR_INVALID_KEYBOARD_HANDLE" }, #endif #ifdef ERROR_HOOK_TYPE_NOT_ALLOWED { ERROR_HOOK_TYPE_NOT_ALLOWED, "ERROR_HOOK_TYPE_NOT_ALLOWED" }, #endif #ifdef ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION { ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, "ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION" }, #endif #ifdef ERROR_TIMEOUT { ERROR_TIMEOUT, "ERROR_TIMEOUT" }, #endif { ERROR_EVENTLOG_FILE_CORRUPT, "ERROR_EVENTLOG_FILE_CORRUPT" }, { ERROR_EVENTLOG_CANT_START, "ERROR_EVENTLOG_CANT_START" }, { ERROR_LOG_FILE_FULL, "ERROR_LOG_FILE_FULL" }, { ERROR_EVENTLOG_FILE_CHANGED, "ERROR_EVENTLOG_FILE_CHANGED" }, { RPC_S_INVALID_STRING_BINDING, "RPC_S_INVALID_STRING_BINDING" }, { RPC_S_WRONG_KIND_OF_BINDING, "RPC_S_WRONG_KIND_OF_BINDING" }, { RPC_S_INVALID_BINDING, "RPC_S_INVALID_BINDING" }, { RPC_S_PROTSEQ_NOT_SUPPORTED, "RPC_S_PROTSEQ_NOT_SUPPORTED" }, { RPC_S_INVALID_RPC_PROTSEQ, "RPC_S_INVALID_RPC_PROTSEQ" }, { RPC_S_INVALID_STRING_UUID, "RPC_S_INVALID_STRING_UUID" }, { RPC_S_INVALID_ENDPOINT_FORMAT, "RPC_S_INVALID_ENDPOINT_FORMAT" }, { RPC_S_INVALID_NET_ADDR, "RPC_S_INVALID_NET_ADDR" }, { RPC_S_NO_ENDPOINT_FOUND, "RPC_S_NO_ENDPOINT_FOUND" }, { RPC_S_INVALID_TIMEOUT, "RPC_S_INVALID_TIMEOUT" }, { RPC_S_OBJECT_NOT_FOUND, "RPC_S_OBJECT_NOT_FOUND" }, { RPC_S_ALREADY_REGISTERED, "RPC_S_ALREADY_REGISTERED" }, { RPC_S_TYPE_ALREADY_REGISTERED, "RPC_S_TYPE_ALREADY_REGISTERED" }, { RPC_S_ALREADY_LISTENING, "RPC_S_ALREADY_LISTENING" }, { RPC_S_NO_PROTSEQS_REGISTERED, "RPC_S_NO_PROTSEQS_REGISTERED" }, { RPC_S_NOT_LISTENING, "RPC_S_NOT_LISTENING" }, { RPC_S_UNKNOWN_MGR_TYPE, "RPC_S_UNKNOWN_MGR_TYPE" }, { RPC_S_UNKNOWN_IF, "RPC_S_UNKNOWN_IF" }, { RPC_S_NO_BINDINGS, "RPC_S_NO_BINDINGS" }, { RPC_S_NO_PROTSEQS, "RPC_S_NO_PROTSEQS" }, { RPC_S_CANT_CREATE_ENDPOINT, "RPC_S_CANT_CREATE_ENDPOINT" }, { RPC_S_OUT_OF_RESOURCES, "RPC_S_OUT_OF_RESOURCES" }, { RPC_S_SERVER_UNAVAILABLE, "RPC_S_SERVER_UNAVAILABLE" }, { RPC_S_SERVER_TOO_BUSY, "RPC_S_SERVER_TOO_BUSY" }, { RPC_S_INVALID_NETWORK_OPTIONS, "RPC_S_INVALID_NETWORK_OPTIONS" }, { RPC_S_NO_CALL_ACTIVE, "RPC_S_NO_CALL_ACTIVE" }, { RPC_S_CALL_FAILED, "RPC_S_CALL_FAILED" }, { RPC_S_CALL_FAILED_DNE, "RPC_S_CALL_FAILED_DNE" }, { RPC_S_PROTOCOL_ERROR, "RPC_S_PROTOCOL_ERROR" }, { RPC_S_UNSUPPORTED_TRANS_SYN, "RPC_S_UNSUPPORTED_TRANS_SYN" }, { RPC_S_UNSUPPORTED_TYPE, "RPC_S_UNSUPPORTED_TYPE" }, { RPC_S_INVALID_TAG, "RPC_S_INVALID_TAG" }, { RPC_S_INVALID_BOUND, "RPC_S_INVALID_BOUND" }, { RPC_S_NO_ENTRY_NAME, "RPC_S_NO_ENTRY_NAME" }, { RPC_S_INVALID_NAME_SYNTAX, "RPC_S_INVALID_NAME_SYNTAX" }, { RPC_S_UNSUPPORTED_NAME_SYNTAX, "RPC_S_UNSUPPORTED_NAME_SYNTAX" }, { RPC_S_UUID_NO_ADDRESS, "RPC_S_UUID_NO_ADDRESS" }, { RPC_S_DUPLICATE_ENDPOINT, "RPC_S_DUPLICATE_ENDPOINT" }, { RPC_S_UNKNOWN_AUTHN_TYPE, "RPC_S_UNKNOWN_AUTHN_TYPE" }, { RPC_S_MAX_CALLS_TOO_SMALL, "RPC_S_MAX_CALLS_TOO_SMALL" }, { RPC_S_STRING_TOO_LONG, "RPC_S_STRING_TOO_LONG" }, { RPC_S_PROTSEQ_NOT_FOUND, "RPC_S_PROTSEQ_NOT_FOUND" }, { RPC_S_PROCNUM_OUT_OF_RANGE, "RPC_S_PROCNUM_OUT_OF_RANGE" }, { RPC_S_BINDING_HAS_NO_AUTH, "RPC_S_BINDING_HAS_NO_AUTH" }, { RPC_S_UNKNOWN_AUTHN_SERVICE, "RPC_S_UNKNOWN_AUTHN_SERVICE" }, { RPC_S_UNKNOWN_AUTHN_LEVEL, "RPC_S_UNKNOWN_AUTHN_LEVEL" }, { RPC_S_INVALID_AUTH_IDENTITY, "RPC_S_INVALID_AUTH_IDENTITY" }, { RPC_S_UNKNOWN_AUTHZ_SERVICE, "RPC_S_UNKNOWN_AUTHZ_SERVICE" }, { EPT_S_INVALID_ENTRY, "EPT_S_INVALID_ENTRY" }, { EPT_S_CANT_PERFORM_OP, "EPT_S_CANT_PERFORM_OP" }, { EPT_S_NOT_REGISTERED, "EPT_S_NOT_REGISTERED" }, { RPC_S_NOTHING_TO_EXPORT, "RPC_S_NOTHING_TO_EXPORT" }, { RPC_S_INCOMPLETE_NAME, "RPC_S_INCOMPLETE_NAME" }, { RPC_S_INVALID_VERS_OPTION, "RPC_S_INVALID_VERS_OPTION" }, { RPC_S_NO_MORE_MEMBERS, "RPC_S_NO_MORE_MEMBERS" }, { RPC_S_NOT_ALL_OBJS_UNEXPORTED, "RPC_S_NOT_ALL_OBJS_UNEXPORTED" }, { RPC_S_INTERFACE_NOT_FOUND, "RPC_S_INTERFACE_NOT_FOUND" }, { RPC_S_ENTRY_ALREADY_EXISTS, "RPC_S_ENTRY_ALREADY_EXISTS" }, { RPC_S_ENTRY_NOT_FOUND, "RPC_S_ENTRY_NOT_FOUND" }, { RPC_S_NAME_SERVICE_UNAVAILABLE, "RPC_S_NAME_SERVICE_UNAVAILABLE" }, { RPC_S_INVALID_NAF_ID, "RPC_S_INVALID_NAF_ID" }, { RPC_S_CANNOT_SUPPORT, "RPC_S_CANNOT_SUPPORT" }, { RPC_S_NO_CONTEXT_AVAILABLE, "RPC_S_NO_CONTEXT_AVAILABLE" }, { RPC_S_INTERNAL_ERROR, "RPC_S_INTERNAL_ERROR" }, { RPC_S_ZERO_DIVIDE, "RPC_S_ZERO_DIVIDE" }, { RPC_S_ADDRESS_ERROR, "RPC_S_ADDRESS_ERROR" }, { RPC_S_FP_DIV_ZERO, "RPC_S_FP_DIV_ZERO" }, { RPC_S_FP_UNDERFLOW, "RPC_S_FP_UNDERFLOW" }, { RPC_S_FP_OVERFLOW, "RPC_S_FP_OVERFLOW" }, { RPC_X_NO_MORE_ENTRIES, "RPC_X_NO_MORE_ENTRIES" }, { RPC_X_SS_CHAR_TRANS_OPEN_FAIL, "RPC_X_SS_CHAR_TRANS_OPEN_FAIL" }, { RPC_X_SS_CHAR_TRANS_SHORT_FILE, "RPC_X_SS_CHAR_TRANS_SHORT_FILE" }, { RPC_X_SS_IN_NULL_CONTEXT, "RPC_X_SS_IN_NULL_CONTEXT" }, { RPC_X_SS_CONTEXT_DAMAGED, "RPC_X_SS_CONTEXT_DAMAGED" }, { RPC_X_SS_HANDLES_MISMATCH, "RPC_X_SS_HANDLES_MISMATCH" }, { RPC_X_SS_CANNOT_GET_CALL_HANDLE, "RPC_X_SS_CANNOT_GET_CALL_HANDLE" }, { RPC_X_NULL_REF_POINTER, "RPC_X_NULL_REF_POINTER" }, { RPC_X_ENUM_VALUE_OUT_OF_RANGE, "RPC_X_ENUM_VALUE_OUT_OF_RANGE" }, { RPC_X_BYTE_COUNT_TOO_SMALL, "RPC_X_BYTE_COUNT_TOO_SMALL" }, { RPC_X_BAD_STUB_DATA, "RPC_X_BAD_STUB_DATA" }, { ERROR_INVALID_USER_BUFFER, "ERROR_INVALID_USER_BUFFER" }, { ERROR_UNRECOGNIZED_MEDIA, "ERROR_UNRECOGNIZED_MEDIA" }, { ERROR_NO_TRUST_LSA_SECRET, "ERROR_NO_TRUST_LSA_SECRET" }, { ERROR_NO_TRUST_SAM_ACCOUNT, "ERROR_NO_TRUST_SAM_ACCOUNT" }, { ERROR_TRUSTED_DOMAIN_FAILURE, "ERROR_TRUSTED_DOMAIN_FAILURE" }, { ERROR_TRUSTED_RELATIONSHIP_FAILURE, "ERROR_TRUSTED_RELATIONSHIP_FAILURE" }, { ERROR_TRUST_FAILURE, "ERROR_TRUST_FAILURE" }, { RPC_S_CALL_IN_PROGRESS, "RPC_S_CALL_IN_PROGRESS" }, { ERROR_NETLOGON_NOT_STARTED, "ERROR_NETLOGON_NOT_STARTED" }, { ERROR_ACCOUNT_EXPIRED, "ERROR_ACCOUNT_EXPIRED" }, { ERROR_REDIRECTOR_HAS_OPEN_HANDLES, "ERROR_REDIRECTOR_HAS_OPEN_HANDLES" }, { ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, "ERROR_PRINTER_DRIVER_ALREADY_INSTALLED" }, { ERROR_UNKNOWN_PORT, "ERROR_UNKNOWN_PORT" }, { ERROR_UNKNOWN_PRINTER_DRIVER, "ERROR_UNKNOWN_PRINTER_DRIVER" }, { ERROR_UNKNOWN_PRINTPROCESSOR, "ERROR_UNKNOWN_PRINTPROCESSOR" }, { ERROR_INVALID_SEPARATOR_FILE, "ERROR_INVALID_SEPARATOR_FILE" }, { ERROR_INVALID_PRIORITY, "ERROR_INVALID_PRIORITY" }, { ERROR_INVALID_PRINTER_NAME, "ERROR_INVALID_PRINTER_NAME" }, { ERROR_PRINTER_ALREADY_EXISTS, "ERROR_PRINTER_ALREADY_EXISTS" }, { ERROR_INVALID_PRINTER_COMMAND, "ERROR_INVALID_PRINTER_COMMAND" }, { ERROR_INVALID_DATATYPE, "ERROR_INVALID_DATATYPE" }, { ERROR_INVALID_ENVIRONMENT, "ERROR_INVALID_ENVIRONMENT" }, { RPC_S_NO_MORE_BINDINGS, "RPC_S_NO_MORE_BINDINGS" }, { ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, "ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT" }, { ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, "ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT" }, { ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, "ERROR_NOLOGON_SERVER_TRUST_ACCOUNT" }, { ERROR_DOMAIN_TRUST_INCONSISTENT, "ERROR_DOMAIN_TRUST_INCONSISTENT" }, { ERROR_SERVER_HAS_OPEN_HANDLES, "ERROR_SERVER_HAS_OPEN_HANDLES" }, { ERROR_RESOURCE_DATA_NOT_FOUND, "ERROR_RESOURCE_DATA_NOT_FOUND" }, { ERROR_RESOURCE_TYPE_NOT_FOUND, "ERROR_RESOURCE_TYPE_NOT_FOUND" }, { ERROR_RESOURCE_NAME_NOT_FOUND, "ERROR_RESOURCE_NAME_NOT_FOUND" }, { ERROR_RESOURCE_LANG_NOT_FOUND, "ERROR_RESOURCE_LANG_NOT_FOUND" }, { ERROR_NOT_ENOUGH_QUOTA, "ERROR_NOT_ENOUGH_QUOTA" }, { RPC_S_NO_INTERFACES, "RPC_S_NO_INTERFACES" }, { RPC_S_CALL_CANCELLED, "RPC_S_CALL_CANCELLED" }, { RPC_S_BINDING_INCOMPLETE, "RPC_S_BINDING_INCOMPLETE" }, { RPC_S_COMM_FAILURE, "RPC_S_COMM_FAILURE" }, { RPC_S_UNSUPPORTED_AUTHN_LEVEL, "RPC_S_UNSUPPORTED_AUTHN_LEVEL" }, { RPC_S_NO_PRINC_NAME, "RPC_S_NO_PRINC_NAME" }, { RPC_S_NOT_RPC_ERROR, "RPC_S_NOT_RPC_ERROR" }, { RPC_S_UUID_LOCAL_ONLY, "RPC_S_UUID_LOCAL_ONLY" }, { RPC_S_SEC_PKG_ERROR, "RPC_S_SEC_PKG_ERROR" }, { RPC_S_NOT_CANCELLED, "RPC_S_NOT_CANCELLED" }, { RPC_X_INVALID_ES_ACTION, "RPC_X_INVALID_ES_ACTION" }, { RPC_X_WRONG_ES_VERSION, "RPC_X_WRONG_ES_VERSION" }, { RPC_X_WRONG_STUB_VERSION, "RPC_X_WRONG_STUB_VERSION" }, #ifdef RPC_X_INVALID_PIPE_OBJECT { RPC_X_INVALID_PIPE_OBJECT, "RPC_X_INVALID_PIPE_OBJECT" }, #endif #ifdef RPC_X_INVALID_PIPE_OPERATION { RPC_X_INVALID_PIPE_OPERATION, "RPC_X_INVALID_PIPE_OPERATION" }, #endif #ifdef RPC_X_WRONG_PIPE_VERSION { RPC_X_WRONG_PIPE_VERSION, "RPC_X_WRONG_PIPE_VERSION" }, #endif { RPC_S_GROUP_MEMBER_NOT_FOUND, "RPC_S_GROUP_MEMBER_NOT_FOUND" }, { EPT_S_CANT_CREATE, "EPT_S_CANT_CREATE" }, { RPC_S_INVALID_OBJECT, "RPC_S_INVALID_OBJECT" }, { ERROR_INVALID_TIME, "ERROR_INVALID_TIME" }, { ERROR_INVALID_FORM_NAME, "ERROR_INVALID_FORM_NAME" }, { ERROR_INVALID_FORM_SIZE, "ERROR_INVALID_FORM_SIZE" }, { ERROR_ALREADY_WAITING, "ERROR_ALREADY_WAITING" }, { ERROR_PRINTER_DELETED, "ERROR_PRINTER_DELETED" }, { ERROR_INVALID_PRINTER_STATE, "ERROR_INVALID_PRINTER_STATE" }, { ERROR_PASSWORD_MUST_CHANGE, "ERROR_PASSWORD_MUST_CHANGE" }, { ERROR_DOMAIN_CONTROLLER_NOT_FOUND, "ERROR_DOMAIN_CONTROLLER_NOT_FOUND" }, { ERROR_ACCOUNT_LOCKED_OUT, "ERROR_ACCOUNT_LOCKED_OUT" }, #ifdef OR_INVALID_OXID { OR_INVALID_OXID, "OR_INVALID_OXID" }, #endif #ifdef OR_INVALID_OID { OR_INVALID_OID, "OR_INVALID_OID" }, #endif #ifdef OR_INVALID_SET { OR_INVALID_SET, "OR_INVALID_SET" }, #endif #ifdef RPC_S_SEND_INCOMPLETE { RPC_S_SEND_INCOMPLETE, "RPC_S_SEND_INCOMPLETE" }, #endif { ERROR_NO_BROWSER_SERVERS_FOUND, "ERROR_NO_BROWSER_SERVERS_FOUND" }, { ERROR_INVALID_PIXEL_FORMAT, "ERROR_INVALID_PIXEL_FORMAT" }, { ERROR_BAD_DRIVER, "ERROR_BAD_DRIVER" }, { ERROR_INVALID_WINDOW_STYLE, "ERROR_INVALID_WINDOW_STYLE" }, { ERROR_METAFILE_NOT_SUPPORTED, "ERROR_METAFILE_NOT_SUPPORTED" }, { ERROR_TRANSFORM_NOT_SUPPORTED, "ERROR_TRANSFORM_NOT_SUPPORTED" }, { ERROR_CLIPPING_NOT_SUPPORTED, "ERROR_CLIPPING_NOT_SUPPORTED" }, { ERROR_UNKNOWN_PRINT_MONITOR, "ERROR_UNKNOWN_PRINT_MONITOR" }, { ERROR_PRINTER_DRIVER_IN_USE, "ERROR_PRINTER_DRIVER_IN_USE" }, { ERROR_SPOOL_FILE_NOT_FOUND, "ERROR_SPOOL_FILE_NOT_FOUND" }, { ERROR_SPL_NO_STARTDOC, "ERROR_SPL_NO_STARTDOC" }, { ERROR_SPL_NO_ADDJOB, "ERROR_SPL_NO_ADDJOB" }, { ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, "ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED" }, { ERROR_PRINT_MONITOR_ALREADY_INSTALLED, "ERROR_PRINT_MONITOR_ALREADY_INSTALLED" }, #ifdef ERROR_INVALID_PRINT_MONITOR { ERROR_INVALID_PRINT_MONITOR, "ERROR_INVALID_PRINT_MONITOR" }, #endif #ifdef ERROR_PRINT_MONITOR_IN_USE { ERROR_PRINT_MONITOR_IN_USE, "ERROR_PRINT_MONITOR_IN_USE" }, #endif #ifdef ERROR_PRINTER_HAS_JOBS_QUEUED { ERROR_PRINTER_HAS_JOBS_QUEUED, "ERROR_PRINTER_HAS_JOBS_QUEUED" }, #endif #ifdef ERROR_SUCCESS_REBOOT_REQUIRED { ERROR_SUCCESS_REBOOT_REQUIRED, "ERROR_SUCCESS_REBOOT_REQUIRED" }, #endif #ifdef ERROR_SUCCESS_RESTART_REQUIRED { ERROR_SUCCESS_RESTART_REQUIRED, "ERROR_SUCCESS_RESTART_REQUIRED" }, #endif { ERROR_WINS_INTERNAL, "ERROR_WINS_INTERNAL" }, { ERROR_CAN_NOT_DEL_LOCAL_WINS, "ERROR_CAN_NOT_DEL_LOCAL_WINS" }, { ERROR_STATIC_INIT, "ERROR_STATIC_INIT" }, { ERROR_INC_BACKUP, "ERROR_INC_BACKUP" }, { ERROR_FULL_BACKUP, "ERROR_FULL_BACKUP" }, { ERROR_REC_NON_EXISTENT, "ERROR_REC_NON_EXISTENT" }, { ERROR_RPL_NOT_ALLOWED, "ERROR_RPL_NOT_ALLOWED" }, { WSAEINTR, "WSAEINTR" }, { WSAEBADF, "WSAEBADF" }, { WSAEACCES, "WSAEACCES" }, { WSAEFAULT, "WSAEFAULT" }, { WSAEINVAL, "WSAEINVAL" }, { WSAEMFILE, "WSAEMFILE" }, { WSAEWOULDBLOCK, "WSAEWOULDBLOCK" }, { WSAEINPROGRESS, "WSAEINPROGRESS" }, { WSAEALREADY, "WSAEALREADY" }, { WSAENOTSOCK, "WSAENOTSOCK" }, { WSAEDESTADDRREQ, "WSAEDESTADDRREQ" }, { WSAEMSGSIZE, "WSAEMSGSIZE" }, { WSAEPROTOTYPE, "WSAEPROTOTYPE" }, { WSAENOPROTOOPT, "WSAENOPROTOOPT" }, { WSAEPROTONOSUPPORT, "WSAEPROTONOSUPPORT" }, { WSAESOCKTNOSUPPORT, "WSAESOCKTNOSUPPORT" }, { WSAEOPNOTSUPP, "WSAEOPNOTSUPP" }, { WSAEPFNOSUPPORT, "WSAEPFNOSUPPORT" }, { WSAEAFNOSUPPORT, "WSAEAFNOSUPPORT" }, { WSAEADDRINUSE, "WSAEADDRINUSE" }, { WSAEADDRNOTAVAIL, "WSAEADDRNOTAVAIL" }, { WSAENETDOWN, "WSAENETDOWN" }, { WSAENETUNREACH, "WSAENETUNREACH" }, { WSAENETRESET, "WSAENETRESET" }, { WSAECONNABORTED, "WSAECONNABORTED" }, { WSAECONNRESET, "WSAECONNRESET" }, { WSAENOBUFS, "WSAENOBUFS" }, { WSAEISCONN, "WSAEISCONN" }, { WSAENOTCONN, "WSAENOTCONN" }, { WSAESHUTDOWN, "WSAESHUTDOWN" }, { WSAETOOMANYREFS, "WSAETOOMANYREFS" }, { WSAETIMEDOUT, "WSAETIMEDOUT" }, { WSAECONNREFUSED, "WSAECONNREFUSED" }, { WSAELOOP, "WSAELOOP" }, { WSAENAMETOOLONG, "WSAENAMETOOLONG" }, { WSAEHOSTDOWN, "WSAEHOSTDOWN" }, { WSAEHOSTUNREACH, "WSAEHOSTUNREACH" }, { WSAENOTEMPTY, "WSAENOTEMPTY" }, { WSAEPROCLIM, "WSAEPROCLIM" }, { WSAEUSERS, "WSAEUSERS" }, { WSAEDQUOT, "WSAEDQUOT" }, { WSAESTALE, "WSAESTALE" }, { WSAEREMOTE, "WSAEREMOTE" }, { WSAEDISCON, "WSAEDISCON" }, { WSASYSNOTREADY, "WSASYSNOTREADY" }, { WSAVERNOTSUPPORTED, "WSAVERNOTSUPPORTED" }, { WSANOTINITIALISED, "WSANOTINITIALISED" }, { WSAHOST_NOT_FOUND, "WSAHOST_NOT_FOUND" }, { WSATRY_AGAIN, "WSATRY_AGAIN" }, { WSANO_RECOVERY, "WSANO_RECOVERY" }, { WSANO_DATA, "WSANO_DATA" }, #endif }; const char *stringFromErrorCode(int err) { for (unsigned i = 0; i < sizeof(errortable)/sizeof(errortable[0]); i++) { if (errortable[i].errorNum == err) { return errortable[i].errorString; } } return 0; } bool errorCodeFromString(const char *text, int *err) { for (unsigned i = 0; i < sizeof(errortable)/sizeof(errortable[0]); i++) { if (strcmp(text, errortable[i].errorString) == 0) { *err = errortable[i].errorNum; return true; } } return false; } polyml-5.7.1/libpolyml/sys.h0000644000175000017500000000410113204034553014765 0ustar daviddavid/* Title: sys.h Copyright (c) 2000-7 Cambridge University Technical Services Limited Further development Copyright David C.J. Matthews 2007-12, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _SYS_H #define _SYS_H #define EXC_interrupt 1 /* SML90.Interrupt */ #define EXC_syserr 2 /* System call failed. */ /* EXC_size (formerly EXC_range) is raised in a number of places, most particularly in alloc_store when given a length which is too large. As "Size" it is used extensively in the Basis library. */ #define EXC_size 4 /* General.Size */ #define EXC_overflow 5 /* General.Overflow */ #define EXC_underflow 6 /* This does not correspond to any ML exception. */ #define EXC_divide 7 /* General.Div */ #define EXC_conversion 8 /* EXC_conversion is used within the compiler and by conversion routines added by the compiler in order to signal failure of conversion. */ #define EXC_XWindows 10 /* EXC_subscript is raised both by the string subscript function and also by substring. As "Subscript" it is used extensively in the Basis library. */ #define EXC_subscript 11 /* General.Subscript */ #define EXC_thread 12 /* Thread.Thread. */ /* DCJM 13/3/07 */ #define EXC_extrace 13 // Used for exception tracing #define EXC_foreign 23 /* nic 4/5/94 */ #define EXC_Fail 103 /* DCJM 11/5/06 */ // Make sure to add any additional exceptions to make_exn. #endif polyml-5.7.1/libpolyml/x86assembly_gas32.S0000644000175000017500000001557413204034553017326 0ustar daviddavid/* Title: Assembly code routines for the poly system. Author: David Matthews Copyright (c) David C. J. Matthews 2000-2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is the 32-bit Unix version of the assembly code file. There are separate versions of 32/64 and Windows (Intel syntax) and Unix (gas syntax). */ /* Registers used :- %%eax: First argument to function. Result of function call. %%ebx: Second argument to function. %%ecx: General register %%edx: Closure pointer in call. %%ebp: Points to memory used for extra registers %%esi: General register. %%edi: General register. %%esp: Stack pointer. */ #include "config.h" #ifdef SYMBOLS_REQUIRE_UNDERSCORE #define EXTNAME(x) _##x #else #define EXTNAME(x) x #endif # # Macro to begin the hand-coded functions # #ifdef MACOSX #define GLOBAL .globl #else #define GLOBAL .global #endif #define INLINE_ROUTINE(id) \ GLOBAL EXTNAME(id); \ EXTNAME(id): #define Fr_Size 56 /* This is the argument vector passed in to X86AsmSwitchToPoly It is used to initialise the frame. A few values are updated when ML returns. */ #define Arg_LocalMpointer 0x0 #define Arg_HandlerRegister 0x4 #define Arg_LocalMbottom 0x8 #define Arg_StackLimit 0xc #define Arg_ExceptionPacket 0x10 /* Address of packet to raise */ #define Arg_RequestCode 0x14 /* Byte: Io function to call. */ #define Arg_ReturnReason 0x16 /* Byte: Reason for returning from ML. */ #define Arg_FullRestore 0x17 /* Byte: Full/partial restore */ #define Arg_SaveCStack 0x18 /* Save C Stack pointer */ #define Arg_ThreadId 0x1c /* My thread id */ #define Arg_StackPtr 0x20 /* Stack Pointer */ #define Arg_SaveRAX 0x34 #define Arg_SaveRBX 0x38 #define Arg_SaveRCX 0x3c #define Arg_SaveRDX 0x40 #define Arg_SaveRSI 0x44 #define Arg_SaveRDI 0x48 #define Arg_SaveFP 0x4c #define RETURN_HEAP_OVERFLOW 1 #define RETURN_STACK_OVERFLOW 2 #define RETURN_STACK_OVERFLOWEX 3 #define RETURN_CALLBACK_RETURN 6 #define RETURN_CALLBACK_EXCEPTION 7 #define RETURN_KILL_SELF 9 # Mark the stack as non-executable when supported #ifdef HAVE_GNU_STACK .section .note.GNU-stack, "", @progbits #endif # # CODE STARTS HERE # .text #define CALL_EXTRA(index) \ pushl %ecx; \ movb $index,Arg_ReturnReason(%ebp); \ popl %ecx; \ jmp SaveFullState; /* Load the registers from the ML stack and jump to the code. This is used to start ML code. The argument is the address of the MemRegisters struct and goes into %rbp. This is the general code for switching control to ML. There are a number of cases to consider: 1. Initial entry to root function or a new thread. Needs to load EDX at least. 2. Normal return from an RTS call. Could just do a simple return. 3. Exception raised in RTS call. 4. Callback from C to an ML function. In effect this is a coroutine. Similar to 1. 5. Return from "trap" i.e. Heap/Stack overflow. Stack-overflow can result in an exception either because the stack can't be grown or because Interrupt has been raised. */ INLINE_ROUTINE(X86AsmSwitchToPoly) pushl %ebp # Standard entry sequence movl 8(%esp),%ebp # Address of argument vector movl %esp,Arg_SaveCStack(%ebp) pushl %ebx pushl %edi pushl %esi # Push callee-save registers subl $(Fr_Size-12),%esp # Allocate frame movl Arg_StackPtr(%ebp),%esp movl Arg_ExceptionPacket(%ebp),%eax cmpl $1,%eax # Did we raise an exception? jnz raisexlocal FRSTOR Arg_SaveFP(%ebp) movl Arg_SaveRAX(%ebp),%eax # Load the registers movl Arg_SaveRBX(%ebp),%ebx # Load the registers movl Arg_SaveRCX(%ebp),%ecx movl Arg_SaveRDX(%ebp),%edx movl Arg_SaveRSI(%ebp),%esi movl Arg_SaveRDI(%ebp),%edi cld # Clear this just in case ret /* Code to save the state and switch to C This saves the full register state. */ SaveFullState: movl %eax,Arg_SaveRAX(%ebp) movl %ebx,Arg_SaveRBX(%ebp) movl %ecx,Arg_SaveRCX(%ebp) movl %edx,Arg_SaveRDX(%ebp) movl %esi,Arg_SaveRSI(%ebp) movl %edi,Arg_SaveRDI(%ebp) fnsave Arg_SaveFP(%ebp) # Save FP state. Also resets the state so... fldcw Arg_SaveFP(%ebp) # ...load because we need the same rounding mode in the RTS movl %esp,Arg_StackPtr(%ebp) # Save ML stack pointer movl Arg_SaveCStack(%ebp),%esp # Restore C stack pointer subl $12,%esp # Sp is just before the registers popl %esi popl %edi popl %ebx popl %ebp ret INLINE_ROUTINE(X86AsmCallExtraRETURN_HEAP_OVERFLOW) CALL_EXTRA(RETURN_HEAP_OVERFLOW) INLINE_ROUTINE(X86AsmCallExtraRETURN_STACK_OVERFLOW) CALL_EXTRA(RETURN_STACK_OVERFLOW) INLINE_ROUTINE(X86AsmCallExtraRETURN_STACK_OVERFLOWEX) CALL_EXTRA(RETURN_STACK_OVERFLOWEX) /* Used when entering new code. The argument and closure are on the stack in case there is a GC before we enter the code. */ INLINE_ROUTINE(X86AsmPopArgAndClosure) popl %edx popl %eax jmp *(%edx) INLINE_ROUTINE(X86AsmRaiseException) raisexlocal: movl Arg_HandlerRegister(%ebp),%ecx # Get next handler into %rcx jmp *(%ecx) # Additional assembly code routines # RTS call to kill the current thread. INLINE_ROUTINE(X86AsmKillSelf) CALL_EXTRA(RETURN_KILL_SELF) INLINE_ROUTINE(X86AsmCallbackReturn) CALL_EXTRA(RETURN_CALLBACK_RETURN) INLINE_ROUTINE(X86AsmCallbackException) CALL_EXTRA(RETURN_CALLBACK_EXCEPTION) # This implements atomic addition in the same way as atomic_increment INLINE_ROUTINE(X86AsmAtomicIncrement) #ifndef HOSTARCHITECTURE_X86_64 movl 4(%esp),%eax #else movl %edi,%eax # On X86_64 the argument is passed in %edi #endif # Use %ecx and %eax because they are volatile (unlike %ebx on X86/64/Unix) movl $2,%ecx lock; xaddl %ecx,(%eax) addl $2,%ecx movl %ecx,%eax ret polyml-5.7.1/libpolyml/x86assembly_gas64.S0000644000175000017500000002175013204034553017324 0ustar daviddavid/* Title: Assembly code routines for the poly system. Author: David Matthews Copyright (c) David C. J. Matthews 2000-2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is the 64-bit gas version of the assembly code file. There are separate versions of 32/64 and MAMS (Intel syntax) and and GCC (gas syntax). */ /* Registers used :- %rax: First argument to function. Result of function call. %rbx: Second argument to function. %rcx: General register %rdx: Closure pointer in call. %rbp: Points to memory used for extra registers %rsi: General register. %rdi: General register. %rsp: Stack pointer. %r8: Third argument to function %r9: Fourth argument to function %r10: Fifth argument to function %r11: General register %r12: General register %r13: General register %r14: General register %r15: Memory allocation pointer */ #include "config.h" #ifdef SYMBOLS_REQUIRE_UNDERSCORE #define EXTNAME(x) _##x #else #define EXTNAME(x) x #endif /* Macro to begin the hand-coded functions */ #ifdef MACOSX #define GLOBAL .globl #else #define GLOBAL .global #endif #define INLINE_ROUTINE(id) \ GLOBAL EXTNAME(id); \ EXTNAME(id): /* Extra entries on the C stack */ #define Fr_SavedMLSP -128 #define Fr_Size 144 /* Must be multiple of 16 to get alignment correct */ /* This is the argument vector passed in to X86AsmSwitchToPoly It is used to initialise the frame. A few values are updated when ML returns. */ #define Arg_LocalMpointer 0x0 #define Arg_HandlerRegister 0x8 #define Arg_LocalMbottom 0x10 #define Arg_StackLimit 0x18 #define Arg_ExceptionPacket 0x20 /* Address of packet to raise */ #define Arg_RequestCode 0x28 /* Byte: Io function to call. */ #define Arg_ReturnReason 0x2a /* Byte: Reason for returning from ML. */ #define Arg_UnusedRestore 0x2b /* Byte: Full/partial restore */ #define Arg_SaveCStack 0x30 /* Current stack base */ #define Arg_ThreadId 0x38 /* My thread id */ #define Arg_StackPtr 0x40 /* Stack Pointer */ #define Arg_SaveRAX 0x68 #define Arg_SaveRBX 0x70 #define Arg_SaveRCX 0x78 #define Arg_SaveRDX 0x80 #define Arg_SaveRSI 0x88 #define Arg_SaveRDI 0x90 #define Arg_SaveR8 0x98 #define Arg_SaveR9 0xa0 #define Arg_SaveR10 0xa8 #define Arg_SaveR11 0xb0 #define Arg_SaveR12 0xb8 #define Arg_SaveR13 0xc0 #define Arg_SaveR14 0xc8 #define Arg_SaveXMM0 0xd0 #define Arg_SaveXMM1 0xd8 #define Arg_SaveXMM2 0xe0 #define Arg_SaveXMM3 0xe8 #define Arg_SaveXMM4 0xf0 #define Arg_SaveXMM5 0xf8 #define Arg_SaveXMM6 0x100 /* IO function numbers. These are functions that are called to handle special cases in this code */ #include "sys.h" #define RETURN_HEAP_OVERFLOW 1 #define RETURN_STACK_OVERFLOW 2 #define RETURN_STACK_OVERFLOWEX 3 #define RETURN_CALLBACK_RETURN 6 #define RETURN_CALLBACK_EXCEPTION 7 #define RETURN_RAISE_OVERFLOW 8 #define RETURN_KILL_SELF 9 # Mark the stack as non-executable when supported #ifdef HAVE_GNU_STACK .section .note.GNU-stack, "", @progbits #endif # # CODE STARTS HERE # .text #define CALL_EXTRA(index) \ pushq %rcx; \ movb $index,Arg_ReturnReason(%rbp); \ popq %rcx; \ jmp SaveFullState; /* Load the registers from the ML stack and jump to the code. */ INLINE_ROUTINE(X86AsmSwitchToPoly) pushq %rbp # Standard entry sequence /* If we're compiling with Mingw we're using Windows calling conventions. */ #ifdef _WIN32 movq %rcx,%rbp # Argument is in %rcx #else movq %rdi,%rbp # Argument is in %rdi #endif movq %rsp,Arg_SaveCStack(%rbp) pushq %rbx pushq %r12 pushq %r13 pushq %r14 pushq %r15 #ifdef _WIN32 pushq %rdi # Callee save in Windows pushq %rsi subq $(Fr_Size-56),%rsp # Argument is already in %rcx #else subq $(Fr_Size-40),%rsp #endif movq Arg_LocalMpointer(%rbp),%r15 movq Arg_StackPtr(%rbp),%rsp # Set the new stack ptr movq Arg_ExceptionPacket(%rbp),%rax cmpq $1,%rax # Did we raise an exception? jnz raisexLocal movsd Arg_SaveXMM0(%rbp),%xmm0 movsd Arg_SaveXMM1(%rbp),%xmm1 movsd Arg_SaveXMM2(%rbp),%xmm2 movsd Arg_SaveXMM3(%rbp),%xmm3 movsd Arg_SaveXMM4(%rbp),%xmm4 movsd Arg_SaveXMM5(%rbp),%xmm5 movsd Arg_SaveXMM6(%rbp),%xmm6 movq Arg_SaveRAX(%rbp),%rax # Load the registers movq Arg_SaveRBX(%rbp),%rbx movq Arg_SaveRCX(%rbp),%rcx movq Arg_SaveRDX(%rbp),%rdx movq Arg_SaveRSI(%rbp),%rsi movq Arg_SaveRDI(%rbp),%rdi movq Arg_SaveR8(%rbp),%r8 movq Arg_SaveR9(%rbp),%r9 movq Arg_SaveR10(%rbp),%r10 movq Arg_SaveR11(%rbp),%r11 movq Arg_SaveR12(%rbp),%r12 movq Arg_SaveR13(%rbp),%r13 movq Arg_SaveR14(%rbp),%r14 cld # Clear this just in case ret /* This is exactly the same as raisex but seems to be needed to work round a PIC problem. */ raisexLocal: movq Arg_HandlerRegister(%rbp),%rcx # Get next handler into %rcx jmp *(%rcx) /* Code to save the state and switch to C This saves the full register state. */ SaveFullState: movq %rax,Arg_SaveRAX(%rbp) movq %rbx,Arg_SaveRBX(%rbp) movq %rcx,Arg_SaveRCX(%rbp) movq %rdx,Arg_SaveRDX(%rbp) movq %rsi,Arg_SaveRSI(%rbp) movq %rdi,Arg_SaveRDI(%rbp) movsd %xmm0,Arg_SaveXMM0(%rbp) movsd %xmm1,Arg_SaveXMM1(%rbp) movsd %xmm2,Arg_SaveXMM2(%rbp) movsd %xmm3,Arg_SaveXMM3(%rbp) movsd %xmm4,Arg_SaveXMM4(%rbp) movsd %xmm5,Arg_SaveXMM5(%rbp) movsd %xmm6,Arg_SaveXMM6(%rbp) movq %r8,Arg_SaveR8(%rbp) movq %r9,Arg_SaveR9(%rbp) movq %r10,Arg_SaveR10(%rbp) movq %r11,Arg_SaveR11(%rbp) movq %r12,Arg_SaveR12(%rbp) movq %r13,Arg_SaveR13(%rbp) movq %r14,Arg_SaveR14(%rbp) movq %rsp,Arg_StackPtr(%rbp) movq %r15,Arg_LocalMpointer(%rbp) # Save back heap pointer movq Arg_SaveCStack(%rbp),%rsp # Restore C stack pointer #ifdef _WIN32 subq $56,%rsp popq %rsi popq %rdi #else subq $40,%rsp #endif popq %r15 # Restore callee-save registers popq %r14 popq %r13 popq %r12 popq %rbx popq %rbp ret callExHeap: CALL_EXTRA(RETURN_HEAP_OVERFLOW) callExStack: CALL_EXTRA(RETURN_STACK_OVERFLOW) callExStackEx: CALL_EXTRA(RETURN_STACK_OVERFLOWEX) callExRaiseOverflow: CALL_EXTRA(RETURN_RAISE_OVERFLOW) /* Used when entering new code. The argument and closure are on the stack in case there is a GC before we enter the code. */ INLINE_ROUTINE(X86AsmPopArgAndClosure) popq %rdx popq %rax jmp *(%rdx) # This is used if the RTS sets up an exception. It's probably no longer relevant. INLINE_ROUTINE(X86AsmRaiseException) movq Arg_HandlerRegister(%rbp),%rcx # Get next handler into %rcx jmp *(%rcx) # Additional assembly code routines # RTS call to kill the current thread. INLINE_ROUTINE(X86AsmKillSelf) CALL_EXTRA(RETURN_KILL_SELF) INLINE_ROUTINE(X86AsmCallbackReturn) CALL_EXTRA(RETURN_CALLBACK_RETURN) INLINE_ROUTINE(X86AsmCallbackException) CALL_EXTRA(RETURN_CALLBACK_EXCEPTION) INLINE_ROUTINE(X86AsmCallExtraRETURN_HEAP_OVERFLOW) CALL_EXTRA(RETURN_HEAP_OVERFLOW) INLINE_ROUTINE(X86AsmCallExtraRETURN_STACK_OVERFLOW) CALL_EXTRA(RETURN_STACK_OVERFLOW) INLINE_ROUTINE(X86AsmCallExtraRETURN_STACK_OVERFLOWEX) CALL_EXTRA(RETURN_STACK_OVERFLOWEX) # This implements atomic addition in the same way as atomic_increment INLINE_ROUTINE(X86AsmAtomicIncrement) #ifdef _WIN32 movq %rcx,%rax # On Windows the argument is passed in %rcx #else movq %rdi,%rax # On X86_64 the argument is passed in %rdi #endif # Use %rcx and %rax because they are volatile (unlike %rbx on X86/64/Unix) movq $2,%rcx lock xaddq %rcx,(%rax) addq $2,%rcx movq %rcx,%rax ret polyml-5.7.1/libpolyml/bitmap.h0000644000175000017500000000604013204034553015427 0ustar daviddavid/* Title: Bitmap. Generally used by the garbage collector to indicate allocated words Copyright (c) 2006, 2012 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef BITMAP_H_DEFINED #define BITMAP_H_DEFINED #include "globals.h" // For POLYUNSIGNED class Bitmap { public: Bitmap(): m_bits(0) {} ~Bitmap(); // Allocate the bitmap bits bool Create(POLYUNSIGNED bits); // Free the bitmap bits. void Destroy(); private: static unsigned char BitN(POLYUNSIGNED n) { return 1 << (n & 7); } public: // Test to see if it has been created bool Created() const { return m_bits != 0; } // Set a single bit void SetBit(POLYUNSIGNED n) { m_bits[n >> 3] |= BitN(n); } // Clear a single bit void ClearBit(POLYUNSIGNED n) { m_bits[n >> 3] &= (0xff ^ BitN(n)); } // Set a range of bits void SetBits(POLYUNSIGNED bitno, POLYUNSIGNED length); // Clear a range of bits. May already be partly clear // N.B. This may clear more than just the bits specified void ClearBits(POLYUNSIGNED bitno, POLYUNSIGNED length); // Test a bit bool TestBit(POLYUNSIGNED n) const { return (m_bits[n >> 3] & BitN(n)) != 0; } // How many zero bits (maximum n) are there in the bitmap, starting at location start? POLYUNSIGNED CountZeroBits(POLYUNSIGNED bitno, POLYUNSIGNED n) const; //* search the bitmap from the high end down looking for n contiguous zeros POLYUNSIGNED FindFree(POLYUNSIGNED limit, POLYUNSIGNED bitno, POLYUNSIGNED n) const; // How many set bits are there in the bitmap? POLYUNSIGNED CountSetBits(POLYUNSIGNED size) const; // Find the last set bit before here. POLYUNSIGNED FindLastSet(POLYUNSIGNED bitno) const; private: unsigned char *m_bits; }; // A wrapper class that adds the address range. It is used when scanning // memory to see if an address has already been visited. class VisitBitmap: public Bitmap { public: VisitBitmap(PolyWord *bottom, PolyWord *top): m_bottom(bottom), m_top(top) { (void)Create(top - bottom); } bool AlreadyVisited(PolyObject *p) { return TestBit((PolyWord*)p - m_bottom); } void SetVisited(PolyObject *p) { SetBit((PolyWord*)p - m_bottom); } bool InRange(PolyWord *p) { return p >= m_bottom && p < m_top; } protected: PolyWord *m_bottom; PolyWord *m_top; }; #endif polyml-5.7.1/libpolyml/sighandler.cpp0000644000175000017500000004376713204034553016647 0ustar daviddavid/* Title: Signal handling Author: David C.J. Matthews Copyright (c) 2000-8, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_IO_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STDLIB_H #include // For malloc #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) // Don't include semaphore.h on Mingw. It's provided but doesn't compile. #include #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_LIBPTHREAD) && defined(HAVE_PTHREAD_H) && defined(HAVE_SEMAPHORE_H)) // If we have the pthread library and header and we have semaphores we can use the pthread // signalling mechanism. But if this is a native Windows build we don't use semaphores or // pthread even if they're provided. #define USE_PTHREAD_SIGNALS 1 #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define INVALIDSIGNAL ERROR_INVALID_PARAMETER #else #define INVALIDSIGNAL EINVAL #endif /* Signal handling is complicated in a multi-threaded environment. The pthread mutex and condition variables are not safe to use in a signal handler so we need to use POSIX semaphores since sem_post is safe. */ #if (defined(HAVE_STACK_T) && defined(HAVE_SIGALTSTACK)) extern "C" { // This is missing in older versions of Mac OS X int sigaltstack(const stack_t *, stack_t *); } #endif #include "globals.h" #include "arb.h" #include "run_time.h" #include "sighandler.h" #include "processes.h" #include "machine_dep.h" #include "sys.h" #include "save_vec.h" #include "rts_module.h" #include "gc.h" // For convertedWeak #include "scanaddrs.h" #include "locking.h" #include "rtsentry.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include "Console.h" #endif extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolySetSignalHandler(PolyObject *threadId, PolyWord signalNo, PolyWord action); POLYEXTERNALSYMBOL POLYUNSIGNED PolyWaitForSignal(PolyObject *threadId); } #define SAVE(x) taskData->saveVec.push(x) #define SIZEOF(x) (sizeof(x)/sizeof(word)) #define DEFAULT_SIG 0 #define IGNORE_SIG 1 #define HANDLE_SIG 2 // This is only used in SignalRequest static struct _sigData { bool nonMaskable; // True if this sig is used within the RTS. Must not be ignored or replaced PolyWord handler; // User-installed handler, TAGGED(DEFAULT_SIG) or TAGGED(IGNORE_SIG) int signalCount; } sigData[NSIG]; unsigned receivedSignalCount = 0; // Incremented each time we get a signal // sigLock protects access to the signalCount values in sigData but // not the "handler" field. static PLock sigLock; #ifdef USE_PTHREAD_SIGNALS static PSemaphore *waitSema; static int lastSignals[NSIG]; static bool terminate = false; #endif // This must not be called from an asynchronous signal handler. static void signalArrived(int sig) { sigLock.Lock(); receivedSignalCount++; sigData[sig].signalCount++; sigLock.Unlock(); // To avoid deadlock we must release sigLock first. processes->SignalArrived(); } // Called whenever a signal handler is installed other than in this // module. Because modules are initialised in an unspecified order // we may have already masked off this signal. void markSignalInuse(int sig) { sigData[sig].nonMaskable = true; #ifdef USE_PTHREAD_SIGNALS // Enable this signal. sigset_t sigset; sigemptyset(&sigset); sigaddset(&sigset, sig); pthread_sigmask(SIG_UNBLOCK, &sigset, NULL); #endif } /* Find the existing handler for this signal. */ static PolyWord findHandler(int sig) { if ((unsigned)sig >= NSIG) // Check it's in range. return TAGGED(DEFAULT_SIG); /* Not there - default action. */ else return sigData[sig].handler; } #if (defined(_WIN32) && ! defined(__CYGWIN__)) // This is called to simulate a SIGINT in Windows. void RequestConsoleInterrupt(void) { // The default action for SIGINT is to exit. if (findHandler(SIGINT) == TAGGED(DEFAULT_SIG)) processes->Exit(2); // Exit with the signal value. else signalArrived(SIGINT); } #endif #ifdef USE_PTHREAD_SIGNALS // Request the main thread to change the blocking state of a signal. class SignalRequest: public MainThreadRequest { public: SignalRequest(int s, int r): MainThreadRequest(MTP_SIGHANDLER), signl(s), state(r) {} virtual void Perform(); int signl, state; }; // Called whenever a signal is received. static void handle_signal(SIG_HANDLER_ARGS(s, c)) { if (waitSema != 0) { lastSignals[s]++; // Assume this is atomic with respect to reading. // Wake the signal detection thread. waitSema->Signal(); } } void SignalRequest::Perform() { struct sigaction action; memset(&action, 0, sizeof(action)); switch (state) { case DEFAULT_SIG: action.sa_handler = SIG_DFL; sigaction(signl, &action, 0); break; case IGNORE_SIG: action.sa_handler = SIG_IGN; sigaction(signl, &action, 0); break; case HANDLE_SIG: setSignalHandler(signl, handle_signal); break; } } #endif static Handle waitForSignal(TaskData *taskData) { while (true) { processes->ProcessAsynchRequests(taskData); // Check for kill. sigLock.Lock(); // Any pending signals? for (int sig = 0; sig < NSIG; sig++) { if (sigData[sig].signalCount > 0) { sigData[sig].signalCount--; if (!IS_INT(findHandler(sig))) /* If it's not DEFAULT or IGNORE. */ { // Create a pair of the handler and signal and pass // them back to be run. Handle pair = alloc_and_save(taskData, 2); // Have to call findHandler again here because that // allocation could have garbage collected. DEREFHANDLE(pair)->Set(0, findHandler(sig)); DEREFHANDLE(pair)->Set(1, TAGGED(sig)); sigLock.Unlock(); return pair; } } } if (convertedWeak) { // Last GC converted a weak SOME into NONE. This isn't // anything to do with signals but the signal thread can // deal with this. sigLock.Unlock(); convertedWeak = false; return SAVE(TAGGED(0)); } // No pending signal. Wait until we're woken up. // This releases sigLock after acquiring schedLock. if (! processes->WaitForSignal(taskData, &sigLock)) raise_exception_string(taskData, EXC_Fail, "Only one thread may wait for signals"); } } POLYUNSIGNED PolySetSignalHandler(PolyObject *threadId, PolyWord signalNo, PolyWord action) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedAction = taskData->saveVec.push(action); Handle oldaction = 0; try { { int sign; int action; { // Lock while we look at the signal vector but release // it before making a root request. PLocker locker(&sigLock); // We have to pass this to the main thread to // set up the signal handler. sign = get_C_int(taskData, signalNo); /* Decode the action if it is Ignore or Default. */ if (pushedAction->Word().IsTagged()) action = (int)pushedAction->Word().UnTagged(); else action = HANDLE_SIG; /* Set the handler. */ if (sign <= 0 || sign >= NSIG) raise_syscall(taskData, "Invalid signal value", INVALIDSIGNAL); /* Get the old action before updating the vector. */ oldaction = SAVE(findHandler(sign)); // Now update it. sigData[sign].handler = pushedAction->Word(); } // Request a change in the masking by the root thread. // This doesn't do anything in Windows so the only "signal" // we affect is SIGINT and that is handled by RequestConsoleInterrupt. if (! sigData[sign].nonMaskable) { #ifdef USE_PTHREAD_SIGNALS SignalRequest request(sign, action); processes->MakeRootRequest(taskData, &request); #endif } } } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (oldaction == 0) return TAGGED(0).AsUnsigned(); else return oldaction->Word().AsUnsigned(); } // Called by the signal handler thread. Blocks until a signal is available. POLYUNSIGNED PolyWaitForSignal(PolyObject *threadId) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { result = waitForSignal(taskData); } catch (KillException &) { processes->ThreadExit(taskData); // May test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Set up per-thread signal data: basically signal stack. // This is really only needed for profiling timer signals. void initThreadSignals(TaskData *taskData) { #if (!(defined(_WIN32)||defined(MACOSX))) // On the i386, at least, we need to set up a signal stack for // each thread if it might receive a signal. ML code checks for // stack overflow but a signal could result in C code being // executed on the ML stack. The signal stack avoids this. // On some architectures the C stack pointer is left unused // when executing ML code so this isn't a problem. // In Linux each thread can receive a SIGVTALRM signal when // profiling. // This is currently disabled in Mac OS X. In 10.4 and before // setting a signal stack in a thread seemed to set it for the // whole process and crash with an illegal instruction on the // second signal. This isn't currently a problem since only the // main thread receives signals in Mac OS X. #if (defined(SA_ONSTACK) && defined(HAVE_SIGALTSTACK)) taskData->signalStack = malloc(SIGSTKSZ); #ifdef HAVE_STACK_T stack_t ex_stack; #else // This used to be used in FreeBSD and Mac OS X struct sigaltstack ex_stack; #endif memset(&ex_stack, 0, sizeof(ex_stack)); // Cast to char* because ss_sp is char* in FreeBSD. // Linux simply casts it back to void*. ex_stack.ss_sp = (char*)taskData->signalStack; ex_stack.ss_size = SIGSTKSZ; ex_stack.ss_flags = 0; /* not SS_DISABLE */ int sigaltstack_result = sigaltstack(&ex_stack, NULL); ASSERT(sigaltstack_result == 0); #endif #endif /* not the PC */ #ifdef USE_PTHREAD_SIGNALS // Block all signals except those marked as in use by the RTS so // that they will only be picked up by the signal detection thread. // Since the signal mask is inherited we really don't need to do // this for every thread, just the initial one. sigset_t sigset; sigfillset(&sigset); for (int i = 0; i < NSIG; i++) { if (sigData[i].nonMaskable) sigdelset(&sigset, i); } pthread_sigmask(SIG_SETMASK, &sigset, NULL); #endif } /* General purpose function to set up a signal handler. */ #if (!defined(_WIN32) || defined(__CYGWIN__)) bool setSignalHandler(int sig, signal_handler_type func) { struct sigaction sigcatch; memset(&sigcatch, 0, sizeof(sigcatch)); sigcatch.sa_sigaction = func; /* Both Linux and FreeBSD now use SA_SIGINFO in a similar way. If SA_SIGINFO is set the handler is supposed to be in sa_sigaction rather than sa_handler (actually this is a union so they're in the same place). */ init_asyncmask(&sigcatch.sa_mask); sigcatch.sa_flags = 0; #if defined(SA_ONSTACK) && defined(HAVE_SIGALTSTACK) sigcatch.sa_flags |= SA_ONSTACK; #endif #ifdef SA_RESTART sigcatch.sa_flags |= SA_RESTART; #endif #ifdef SA_SIGINFO sigcatch.sa_flags |= SA_SIGINFO; #endif #ifdef SV_SAVE_REGS sigcatch.sa_flags |= SV_SAVE_REGS; #endif return sigaction(sig, &sigcatch,NULL) >= 0; } // Signals to mask off when handling a signal. The signal being handled // is always masked off. This really only applied when emulation traps // and requests to GC involved signals. That no longer applies except // on the Sparc. void init_asyncmask(sigset_t *mask) { /* disable asynchronous interrupts while servicing interrupt */ sigemptyset(mask); sigaddset(mask,SIGVTALRM); sigaddset(mask,SIGINT); sigaddset(mask,SIGUSR2); sigaddset(mask,SIGWINCH); // This next used to be needed when emulation traps resulted in // signals. This no longer applies except on the Sparc. #ifdef SPARC sigaddset(mask,SIGILL); sigaddset(mask,SIGFPE); /* Mask off SIGSEGV. This is definitely needed when we are installing a handler for SIGINT under Linux and may also be needed in other cases as well e.g. SIGVTALRM. Without it typing control-C to a program which is taking lots of emulation traps can cause a crash because the signals are delivered in the "wrong" order and the pc value given to catchSEGV can point at the handler for SIGINT. DCJM 7/2/01. */ sigaddset(mask,SIGSEGV); /* And, just to be sure, include SIGBUS. DCJM 22/5/02. */ sigaddset(mask,SIGBUS); #endif } #endif struct _entrypts sigHandlerEPT[] = { { "PolySetSignalHandler", (polyRTSFunction)&PolySetSignalHandler}, { "PolyWaitForSignal", (polyRTSFunction)&PolyWaitForSignal}, { NULL, NULL} // End of list. }; class SigHandler: public RtsModule { public: virtual void Init(void); virtual void Stop(void); virtual void GarbageCollect(ScanAddress * /*process*/); #ifdef USE_PTHREAD_SIGNALS SigHandler() { threadRunning = false; } pthread_t detectionThreadId; bool threadRunning; #endif }; // Declare this. It will be automatically added to the table. static SigHandler sighandlerModule; #ifdef USE_PTHREAD_SIGNALS // This thread is really only to convert between POSIX semaphores and // pthread condition variables. It waits for a semphore to be released by the // signal handler running on the main thread and then wakes up the ML handler // thread. The ML thread must not wait directly on a POSIX semaphore because it // may also be woken by other events, particularly a kill request when the program // exits. static void *SignalDetectionThread(void *) { // Block all signals so they will be delivered to the main thread. sigset_t active_signals; sigfillset(&active_signals); pthread_sigmask(SIG_SETMASK, &active_signals, NULL); int readSignals[NSIG] = {0}; while (true) { if (waitSema == 0) return 0; // Wait until we are woken up by an arriving signal. // waitSema will be incremented for each signal so we should // not block until we have processed them all. if (! waitSema->Wait() || terminate) return 0; for (int j = 1; j < NSIG; j++) { if (readSignals[j] < lastSignals[j]) { readSignals[j]++; signalArrived(j); } } } } #endif void SigHandler::Init(void) { // Mark certain signals as non-maskable since they really // indicate a fatal error. #ifdef SIGSEGV sigData[SIGSEGV].nonMaskable = true; #endif #ifdef SIGBUS sigData[SIGBUS].nonMaskable = true; #endif #ifdef SIGILL sigData[SIGILL].nonMaskable = true; #endif #ifdef USE_PTHREAD_SIGNALS static PSemaphore waitSemaphore; // Initialise the "wait" semaphore so that it blocks immediately. if (! waitSemaphore.Init(0, NSIG)) return; waitSema = &waitSemaphore; // Create a new thread to handle signals synchronously. // for it to finish. pthread_attr_t attrs; pthread_attr_init(&attrs); #ifdef PTHREAD_STACK_MIN #if (PTHREAD_STACK_MIN < 4096) pthread_attr_setstacksize(&attrs, 4096); // But not too small: FreeBSD makes it 2k #else pthread_attr_setstacksize(&attrs, PTHREAD_STACK_MIN); // Only small stack. #endif #endif threadRunning = pthread_create(&detectionThreadId, &attrs, SignalDetectionThread, 0) == 0; pthread_attr_destroy(&attrs); #endif } // Wait for the signal thread to finish before the semaphore is deleted in the // final clean-up. Failing to do this causes a hang in Mac OS X. void SigHandler::Stop(void) { #ifdef USE_PTHREAD_SIGNALS terminate = true; waitSema->Signal(); pthread_join(detectionThreadId, NULL); #endif } void SigHandler::GarbageCollect(ScanAddress *process) { for (unsigned i = 0; i < NSIG; i++) { if (sigData[i].handler != PolyWord::FromUnsigned(0)) process->ScanRuntimeWord(&sigData[i].handler); } } polyml-5.7.1/libpolyml/errors.h0000644000175000017500000000203613204034553015470 0ustar daviddavid/* Title: Error number names Copyright (c) 2000-9 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef POLY_ERRORS_H_DEFINED #define POLY_ERRORS_H_DEFINED extern const char *stringFromErrorCode(int err); extern bool errorCodeFromString(const char *text, int *err); #endif polyml-5.7.1/libpolyml/savestate.cpp0000644000175000017500000020223113204034553016505 0ustar daviddavid/* Title: savestate.cpp - Save and Load state Copyright (c) 2007, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_WINDOWS_H #include // For MAX_PATH #endif #ifdef HAVE_SYS_PARAM_H #include // For MAX_PATH #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #define ERRORNUMBER _doserrno #define NOMEMORY ERROR_NOT_ENOUGH_MEMORY #else typedef char TCHAR; #define _T(x) x #define _tfopen fopen #define _tcscpy strcpy #define _tcsdup strdup #define _tcslen strlen #define _fputtc fputc #define _fputts fputs #ifndef lstrcmpi #define lstrcmpi strcasecmp #endif #define ERRORNUMBER errno #define NOMEMORY ENOMEM #endif #include "globals.h" #include "savestate.h" #include "processes.h" #include "run_time.h" #include "polystring.h" #include "scanaddrs.h" #include "arb.h" #include "memmgr.h" #include "mpoly.h" // For exportTimeStamp #include "exporter.h" // For CopyScan #include "machine_dep.h" #include "osmem.h" #include "gc.h" // For FullGC. #include "timing.h" #include "rtsentry.h" #include "check_objects.h" #ifdef _MSC_VER // Don't tell me about ISO C++ changes. #pragma warning(disable:4996) #endif // Helper class to close files on exit. class AutoClose { public: AutoClose(FILE *f = 0): m_file(f) {} ~AutoClose() { if (m_file) ::fclose(m_file); } operator FILE*() { return m_file; } FILE* operator = (FILE* p) { return (m_file = p); } private: FILE *m_file; }; // This is probably generally useful so may be moved into // a general header file. template class AutoFree { public: AutoFree(BASE p = 0): m_value(p) {} ~AutoFree() { free(m_value); } // Automatic conversions to the base type. operator BASE() { return m_value; } BASE operator = (BASE p) { return (m_value = p); } private: BASE m_value; }; /* * Structure definitions for the saved state files. */ #define SAVEDSTATESIGNATURE "POLYSAVE" #define SAVEDSTATEVERSION 2 // File header for a saved state file. This appears as the first entry // in the file. typedef struct _savedStateHeader { // These entries are primarily to check that we have a valid // saved state file before we try to interpret anything else. char headerSignature[8]; // Should contain SAVEDSTATESIGNATURE unsigned headerVersion; // Should contain SAVEDSTATEVERSION unsigned headerLength; // Number of bytes in the header unsigned segmentDescrLength; // Number of bytes in a descriptor // These entries contain the real data. off_t segmentDescr; // Position of segment descriptor table unsigned segmentDescrCount; // Number of segment descriptors in the table off_t stringTable; // Pointer to the string table (zero if none) size_t stringTableSize; // Size of string table unsigned parentNameEntry; // Position of parent name in string table (0 if top) time_t timeStamp; // The time stamp for this file. time_t parentTimeStamp; // The time stamp for the parent. } SavedStateHeader; // Entry for segment table. This describes the segments on the disc that // need to be loaded into memory. typedef struct _savedStateSegmentDescr { off_t segmentData; // Position of the segment data size_t segmentSize; // Size of the segment data off_t relocations; // Position of the relocation table unsigned relocationCount; // Number of entries in relocation table unsigned relocationSize; // Size of a relocation entry unsigned segmentFlags; // Segment flags (see SSF_ values) unsigned segmentIndex; // The index of this segment or the segment it overwrites void *originalAddress; // The base address when the segment was written. } SavedStateSegmentDescr; #define SSF_WRITABLE 1 // The segment contains mutable data #define SSF_OVERWRITE 2 // The segment overwrites the data (mutable) in a parent. #define SSF_NOOVERWRITE 4 // The segment must not be further overwritten #define SSF_BYTES 8 // The segment contains only byte data #define SSF_CODE 16 // The segment contains only code typedef struct _relocationEntry { // Each entry indicates a location that has to be set to an address. // The location to be set is determined by adding "relocAddress" to the base address of // this segment (the one to which these relocations apply) and the value to store // by adding "targetAddress" to the base address of the segment indicated by "targetSegment". POLYUNSIGNED relocAddress; // The (byte) offset in this segment that we will set POLYUNSIGNED targetAddress; // The value to add to the base of the destination segment unsigned targetSegment; // The base segment. 0 is IO segment. ScanRelocationKind relKind; // The kind of relocation (processor dependent). } RelocationEntry; #define SAVE(x) taskData->saveVec.push(x) /* * Hierarchy table: contains information about last loaded or saved state. */ // Pointer to list of files loaded in last load. // There's no need for a lock since the update is only made when all // the ML threads have stopped. class HierarchyTable { public: HierarchyTable(const TCHAR *file, time_t time): fileName(_tcsdup(file)), timeStamp(time) { } AutoFree fileName; time_t timeStamp; }; HierarchyTable **hierarchyTable; static unsigned hierarchyDepth; static bool AddHierarchyEntry(const TCHAR *fileName, time_t timeStamp) { // Add an entry to the hierarchy table for this file. HierarchyTable *newEntry = new HierarchyTable(fileName, timeStamp); if (newEntry == 0) return false; HierarchyTable **newTable = (HierarchyTable **)realloc(hierarchyTable, sizeof(HierarchyTable *)*(hierarchyDepth+1)); if (newTable == 0) return false; hierarchyTable = newTable; hierarchyTable[hierarchyDepth++] = newEntry; return true; } // Test whether we're overwriting a parent of ourself. #ifdef _WIN32 static bool sameFile(const TCHAR *x, const TCHAR *y) { HANDLE hXFile = INVALID_HANDLE_VALUE, hYFile = INVALID_HANDLE_VALUE; bool result = false; hXFile = CreateFile(x, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hXFile == INVALID_HANDLE_VALUE) goto closeAndExit; hYFile = CreateFile(y, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hYFile == INVALID_HANDLE_VALUE) goto closeAndExit; BY_HANDLE_FILE_INFORMATION fileInfoX, fileInfoY; if (! GetFileInformationByHandle(hXFile, &fileInfoX)) goto closeAndExit; if (! GetFileInformationByHandle(hYFile, &fileInfoY)) goto closeAndExit; result = fileInfoX.dwVolumeSerialNumber == fileInfoY.dwVolumeSerialNumber && fileInfoX.nFileIndexLow == fileInfoY.nFileIndexLow && fileInfoX.nFileIndexHigh == fileInfoY.nFileIndexHigh; closeAndExit: if (hXFile != INVALID_HANDLE_VALUE) CloseHandle(hXFile); if (hYFile != INVALID_HANDLE_VALUE) CloseHandle(hYFile); return result; } #else static bool sameFile(const char *x, const char *y) { struct stat xStat, yStat; // If either file does not exist that's fine. if (stat(x, &xStat) != 0 || stat(y, &yStat) != 0) return false; return (xStat.st_dev == yStat.st_dev && xStat.st_ino == yStat.st_ino); } #endif /* * Saving state. */ // This class is used to create the relocations. It uses Exporter // for this but this may perhaps be too heavyweight. class SaveStateExport: public Exporter, public ScanAddress { public: SaveStateExport(unsigned int h=0): Exporter(h), relocationCount(0) {} public: virtual void exportStore(void) {} // Not used. private: // ScanAddress overrides virtual void ScanConstant(PolyObject *base, byte *addrOfConst, ScanRelocationKind code); // At the moment we should only get calls to ScanConstant. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } protected: void setRelocationAddress(void *p, POLYUNSIGNED *reloc); PolyWord createRelocation(PolyWord p, void *relocAddr); unsigned relocationCount; friend class SaveRequest; }; // Generate the address relative to the start of the segment. void SaveStateExport::setRelocationAddress(void *p, POLYUNSIGNED *reloc) { unsigned area = findArea(p); POLYUNSIGNED offset = (char*)p - (char*)memTable[area].mtAddr; *reloc = offset; } // Create a relocation entry for an address at a given location. PolyWord SaveStateExport::createRelocation(PolyWord p, void *relocAddr) { RelocationEntry reloc; // Set the offset within the section we're scanning. setRelocationAddress(relocAddr, &reloc.relocAddress); void *addr = p.AsAddress(); unsigned addrArea = findArea(addr); reloc.targetAddress = (char*)addr - (char*)memTable[addrArea].mtAddr; reloc.targetSegment = (unsigned)memTable[addrArea].mtIndex; reloc.relKind = PROCESS_RELOC_DIRECT; fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; return p; // Don't change the contents } /* This is called for each constant within the code. Print a relocation entry for the word and return a value that means that the offset is saved in original word. */ void SaveStateExport::ScanConstant(PolyObject *base, byte *addr, ScanRelocationKind code) { PolyWord p = GetConstantValue(addr, code); if (IS_INT(p) || p == PolyWord::FromUnsigned(0)) return; void *a = p.AsAddress(); unsigned aArea = findArea(a); // We don't need a relocation if this is relative to the current segment // since the relative address will already be right. if (code == PROCESS_RELOC_I386RELATIVE && aArea == findArea(addr)) return; // Set the value at the address to the offset relative to the symbol. RelocationEntry reloc; setRelocationAddress(addr, &reloc.relocAddress); reloc.targetAddress = (char*)a - (char*)memTable[aArea].mtAddr; reloc.targetSegment = (unsigned)memTable[aArea].mtIndex; reloc.relKind = code; fwrite(&reloc, sizeof(reloc), 1, exportFile); relocationCount++; } // Request to the main thread to save data. class SaveRequest: public MainThreadRequest { public: SaveRequest(const TCHAR *name, unsigned h): MainThreadRequest(MTP_SAVESTATE), fileName(name), newHierarchy(h), errorMessage(0), errCode(0) {} virtual void Perform(); const TCHAR *fileName; unsigned newHierarchy; const char *errorMessage; int errCode; }; // This class is used to update references to objects that have moved. If // we have copied an object into the area to be exported we may still have references // to it from the stack or from RTS data structures. We have to ensure that these // are updated. // This is very similar to ProcessFixupAddress in sharedata.cpp class SaveFixupAddress: public ScanAddress { protected: virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); virtual PolyObject *ScanObjectAddress(PolyObject *base) { return GetNewAddress(base).AsObjPtr(); } PolyWord GetNewAddress(PolyWord old); public: void ScanCodeSpace(CodeSpace *space); }; POLYUNSIGNED SaveFixupAddress::ScanAddressAt(PolyWord *pt) { *pt = GetNewAddress(*pt); return 0; } // Returns the new address if the argument is the address of an object that // has moved, otherwise returns the original. PolyWord SaveFixupAddress::GetNewAddress(PolyWord old) { if (old.IsTagged() || old == PolyWord::FromUnsigned(0)) return old; // Nothing to do. ASSERT(old.IsDataPtr()); PolyObject *obj = old.AsObjPtr(); if (obj->ContainsForwardingPtr()) // tombstone is a pointer to a moved object { PolyObject *newp = obj->GetForwardingPtr(); ASSERT (newp->ContainsNormalLengthWord()); return newp; } ASSERT (obj->ContainsNormalLengthWord()); // object is not moved return old; } // Fix up addresses in the code area. Unlike ScanAddressesInRegion this updates // cells that have been moved. We need to do that because we may still have // return addresses into those cells and we don't move return addresses. We // do want the code to see updated constant addresses. void SaveFixupAddress::ScanCodeSpace(CodeSpace *space) { for (PolyWord *pt = space->bottom; pt < space->top; ) { pt++; PolyObject *obj = (PolyObject*)pt; PolyObject *dest = obj->FollowForwardingChain(); POLYUNSIGNED length = dest->Length(); if (length != 0) ScanAddressesInObject(obj, dest->LengthWord()); pt += length; } } // Called by the root thread to actually save the state and write the file. void SaveRequest::Perform() { if (debugOptions & DEBUG_SAVING) Log("SAVE: Beginning saving state.\n"); // Check that we aren't overwriting our own parent. for (unsigned q = 0; q < newHierarchy-1; q++) { if (sameFile(hierarchyTable[q]->fileName, fileName)) { errorMessage = "File being saved is used as a parent of this file"; errCode = 0; if (debugOptions & DEBUG_SAVING) Log("SAVE: File being saved is used as a parent of this file.\n"); return; } } SaveStateExport exports; // Open the file. This could quite reasonably fail if the path is wrong. exports.exportFile = _tfopen(fileName, _T("wb")); if (exports.exportFile == NULL) { errorMessage = "Cannot open save file"; errCode = ERRORNUMBER; if (debugOptions & DEBUG_SAVING) Log("SAVE: Cannot open save file.\n"); return; } // Scan over the permanent mutable area copying all reachable data that is // not in a lower hierarchy into new permanent segments. CopyScan copyScan(newHierarchy); copyScan.initialise(false); bool success = true; try { for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && !space->noOverwrite && !space->byteOnly) { if (debugOptions & DEBUG_SAVING) Log("SAVE: Scanning permanent mutable area %p allocated at %p size %lu\n", space, space->bottom, space->spaceSize()); copyScan.ScanAddressesInRegion(space->bottom, space->top); } } } catch (MemoryException &) { success = false; if (debugOptions & DEBUG_SAVING) Log("SAVE: Scan of permanent mutable area raised memory exception.\n"); } // Copy the areas into the export object. Make sufficient space for // the largest possible number of entries. exports.memTable = new memoryTableEntry[gMem.eSpaces.size()+gMem.pSpaces.size()+1]; unsigned memTableCount = 0; // Permanent spaces at higher level. These have to have entries although // only the mutable entries will be written. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->hierarchy < newHierarchy) { memoryTableEntry *entry = &exports.memTable[memTableCount++]; entry->mtAddr = space->bottom; entry->mtLength = (space->topPointer-space->bottom)*sizeof(PolyWord); entry->mtIndex = space->index; entry->mtFlags = 0; if (space->isMutable) { entry->mtFlags |= MTF_WRITEABLE; if (space->noOverwrite) entry->mtFlags |= MTF_NO_OVERWRITE; if (space->byteOnly) entry->mtFlags |= MTF_BYTES; } if (space->isCode) entry->mtFlags |= MTF_EXECUTABLE; } } unsigned permanentEntries = memTableCount; // Remember where new entries start. // Newly created spaces. for (std::vector::iterator i = gMem.eSpaces.begin(); i < gMem.eSpaces.end(); i++) { memoryTableEntry *entry = &exports.memTable[memTableCount++]; PermanentMemSpace *space = *i; entry->mtAddr = space->bottom; entry->mtLength = (space->topPointer-space->bottom)*sizeof(PolyWord); entry->mtIndex = space->index; entry->mtFlags = 0; if (space->isMutable) { entry->mtFlags |= MTF_WRITEABLE; if (space->noOverwrite) entry->mtFlags |= MTF_NO_OVERWRITE; if (space->byteOnly) entry->mtFlags |= MTF_BYTES; } if (space->isCode) entry->mtFlags |= MTF_EXECUTABLE; } exports.memTableEntries = memTableCount; if (debugOptions & DEBUG_SAVING) Log("SAVE: Updating references to moved objects.\n"); // Update references to moved objects. SaveFixupAddress fixup; for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; fixup.ScanAddressesInRegion(space->bottom, space->lowerAllocPtr); fixup.ScanAddressesInRegion(space->upperAllocPtr, space->top); } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) fixup.ScanCodeSpace(*i); GCModules(&fixup); // Restore the length words in the code areas. // Although we've updated any pointers to the start of the code we could have return addresses // pointing to the original code. GCModules updates the stack but doesn't update return addresses. for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; for (PolyWord *pt = space->bottom; pt < space->top; ) { pt++; PolyObject *obj = (PolyObject*)pt; if (obj->ContainsForwardingPtr()) { PolyObject *forwardedTo = obj->FollowForwardingChain(); POLYUNSIGNED lengthWord = forwardedTo->LengthWord(); obj->SetLengthWord(lengthWord); } pt += obj->Length(); } } // Update the global memory space table. Old segments at the same level // or lower are removed. The new segments become permanent. // Try to promote the spaces even if we've had a failure because export // spaces are deleted in ~CopyScan and we may have already copied // some objects there. if (debugOptions & DEBUG_SAVING) Log("SAVE: Promoting export spaces to permanent spaces.\n"); if (! gMem.PromoteExportSpaces(newHierarchy) || ! success) { errorMessage = "Out of Memory"; errCode = NOMEMORY; if (debugOptions & DEBUG_SAVING) Log("SAVE: Unable to promote export spaces.\n"); return; } // Remove any deeper entries from the hierarchy table. while (hierarchyDepth > newHierarchy-1) { hierarchyDepth--; delete(hierarchyTable[hierarchyDepth]); hierarchyTable[hierarchyDepth] = 0; } if (debugOptions & DEBUG_SAVING) Log("SAVE: Writing out data.\n"); // Write out the file header. SavedStateHeader saveHeader; memset(&saveHeader, 0, sizeof(saveHeader)); saveHeader.headerLength = sizeof(saveHeader); strncpy(saveHeader.headerSignature, SAVEDSTATESIGNATURE, sizeof(saveHeader.headerSignature)); saveHeader.headerVersion = SAVEDSTATEVERSION; saveHeader.segmentDescrLength = sizeof(SavedStateSegmentDescr); if (newHierarchy == 1) saveHeader.parentTimeStamp = exportTimeStamp; else { saveHeader.parentTimeStamp = hierarchyTable[newHierarchy-2]->timeStamp; saveHeader.parentNameEntry = sizeof(TCHAR); // Always the first entry. } saveHeader.timeStamp = getBuildTime(); saveHeader.segmentDescrCount = exports.memTableEntries; // One segment for each space. // Write out the header. fwrite(&saveHeader, sizeof(saveHeader), 1, exports.exportFile); // We need a segment header for each permanent area whether it is // actually in this file or not. SavedStateSegmentDescr *descrs = new SavedStateSegmentDescr [exports.memTableEntries]; for (unsigned j = 0; j < exports.memTableEntries; j++) { memoryTableEntry *entry = &exports.memTable[j]; memset(&descrs[j], 0, sizeof(SavedStateSegmentDescr)); descrs[j].relocationSize = sizeof(RelocationEntry); descrs[j].segmentIndex = (unsigned)entry->mtIndex; descrs[j].segmentSize = entry->mtLength; // Set this even if we don't write it. descrs[j].originalAddress = entry->mtAddr; if (entry->mtFlags & MTF_WRITEABLE) { descrs[j].segmentFlags |= SSF_WRITABLE; if (entry->mtFlags & MTF_NO_OVERWRITE) descrs[j].segmentFlags |= SSF_NOOVERWRITE; if (j < permanentEntries && (entry->mtFlags & MTF_NO_OVERWRITE) == 0) descrs[j].segmentFlags |= SSF_OVERWRITE; if (entry->mtFlags & MTF_BYTES) descrs[j].segmentFlags |= SSF_BYTES; } if (entry->mtFlags & MTF_EXECUTABLE) descrs[j].segmentFlags |= SSF_CODE; } // Write out temporarily. Will be overwritten at the end. saveHeader.segmentDescr = ftell(exports.exportFile); fwrite(descrs, sizeof(SavedStateSegmentDescr), exports.memTableEntries, exports.exportFile); // Write out the relocations and the data. for (unsigned k = 1 /* Not IO area */; k < exports.memTableEntries; k++) { memoryTableEntry *entry = &exports.memTable[k]; // Write out the contents if this is new or if it is a normal, overwritable // mutable area. if (k >= permanentEntries || (entry->mtFlags & (MTF_WRITEABLE|MTF_NO_OVERWRITE)) == MTF_WRITEABLE) { descrs[k].relocations = ftell(exports.exportFile); // Have to write this out. exports.relocationCount = 0; // Create the relocation table. char *start = (char*)entry->mtAddr; char *end = start + entry->mtLength; for (PolyWord *p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); // Most relocations can be computed when the saved state is // loaded so we only write out the difficult ones: those that // occur within compiled code. // exports.relocateObject(obj); if (length != 0 && obj->IsCodeObject()) machineDependent->ScanConstantsWithinCode(obj, &exports); p += length; } descrs[k].relocationCount = exports.relocationCount; // Write out the data. descrs[k].segmentData = ftell(exports.exportFile); fwrite(entry->mtAddr, entry->mtLength, 1, exports.exportFile); } } // If this is a child we need to write a string table containing the parent name. if (newHierarchy > 1) { saveHeader.stringTable = ftell(exports.exportFile); _fputtc(0, exports.exportFile); // First byte of string table is zero _fputts(hierarchyTable[newHierarchy-2]->fileName, exports.exportFile); _fputtc(0, exports.exportFile); // A terminating null. saveHeader.stringTableSize = (_tcslen(hierarchyTable[newHierarchy-2]->fileName) + 2)*sizeof(TCHAR); } // Rewrite the header and the segment tables now they're complete. fseek(exports.exportFile, 0, SEEK_SET); fwrite(&saveHeader, sizeof(saveHeader), 1, exports.exportFile); fwrite(descrs, sizeof(SavedStateSegmentDescr), exports.memTableEntries, exports.exportFile); if (debugOptions & DEBUG_SAVING) Log("SAVE: Writing complete.\n"); // Add an entry to the hierarchy table for this file. (void)AddHierarchyEntry(fileName, saveHeader.timeStamp); delete[](descrs); CheckMemory(); } Handle SaveState(TaskData *taskData, Handle args) { TempString fileNameBuff(Poly_string_to_T_alloc(DEREFHANDLE(args)->Get(0))); // The value of depth is zero for top-level save so we need to add one for hierarchy. unsigned newHierarchy = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(1)) + 1; if (newHierarchy > hierarchyDepth+1) raise_fail(taskData, "Depth must be no more than the current hierarchy plus one"); // Request a full GC first. The main reason is to avoid running out of memory as a // result of repeated saves. Old export spaces are turned into local spaces and // the GC will delete them if they are completely empty FullGC(taskData); SaveRequest request(fileNameBuff, newHierarchy); processes->MakeRootRequest(taskData, &request); if (request.errorMessage) raise_syscall(taskData, request.errorMessage, request.errCode); return SAVE(TAGGED(0)); } /* * Loading saved state files. */ class StateLoader: public MainThreadRequest { public: StateLoader(bool isH, Handle files): MainThreadRequest(MTP_LOADSTATE), isHierarchy(isH), fileNameList(files), errorResult(0), errNumber(0) { } virtual void Perform(void); bool LoadFile(bool isInitial, time_t requiredStamp, PolyWord tail); bool isHierarchy; Handle fileNameList; const char *errorResult; // The fileName here is the last file loaded. As well as using it // to load the name can also be printed out at the end to identify the // particular file in the hierarchy that failed. AutoFree fileName; int errNumber; }; // Called by the main thread once all the ML threads have stopped. void StateLoader::Perform(void) { // Copy the first file name into the buffer. if (isHierarchy) { if (ML_Cons_Cell::IsNull(fileNameList->Word())) { errorResult = "Hierarchy list is empty"; return; } ML_Cons_Cell *p = DEREFLISTHANDLE(fileNameList); fileName = Poly_string_to_T_alloc(p->h); if (fileName == NULL) { errorResult = "Insufficient memory"; errNumber = NOMEMORY; return; } (void)LoadFile(true, 0, p->t); } else { fileName = Poly_string_to_T_alloc(DEREFHANDLE(fileNameList)); if (fileName == NULL) { errorResult = "Insufficient memory"; errNumber = NOMEMORY; return; } (void)LoadFile(true, 0, TAGGED(0)); } } class ClearWeakByteRef: public ScanAddress { public: ClearWeakByteRef() {} virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } virtual void ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord); }; // Set the values of external references and clear the values of other weak byte refs. void ClearWeakByteRef::ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord) { if (OBJ_IS_MUTABLE_OBJECT(lengthWord) && OBJ_IS_BYTE_OBJECT(lengthWord) && OBJ_IS_WEAKREF_OBJECT(lengthWord)) { POLYUNSIGNED len = OBJ_OBJECT_LENGTH(lengthWord); if (len > 0) base->Set(0, PolyWord::FromSigned(0)); setEntryPoint(base); } } // This is copied from the B-tree in MemMgr. It probably should be // merged but will do for the moment. It's intended to reduce the // cost of finding the segment for relocation. class SpaceBTree { public: SpaceBTree(bool is, unsigned i = 0) : isLeaf(is), index(i) { } virtual ~SpaceBTree() {} bool isLeaf; unsigned index; // The index if this is a leaf }; // A non-leaf node in the B-tree class SpaceBTreeTree : public SpaceBTree { public: SpaceBTreeTree(); virtual ~SpaceBTreeTree(); SpaceBTree *tree[256]; }; SpaceBTreeTree::SpaceBTreeTree() : SpaceBTree(false) { for (unsigned i = 0; i < 256; i++) tree[i] = 0; } SpaceBTreeTree::~SpaceBTreeTree() { for (unsigned i = 0; i < 256; i++) delete(tree[i]); } // This class is used to relocate addresses in areas that have been loaded. class LoadRelocate { public: LoadRelocate(): descrs(0), targetAddresses(0), nDescrs(0), errorMessage(0), spaceTree(0) {} ~LoadRelocate(); void RelocateObject(PolyObject *p); void RelocateAddressAt(PolyWord *pt); void AddTreeRange(SpaceBTree **t, unsigned index, uintptr_t startS, uintptr_t endS); SavedStateSegmentDescr *descrs; PolyWord **targetAddresses; unsigned nDescrs; const char *errorMessage; SpaceBTree *spaceTree; }; LoadRelocate::~LoadRelocate() { if (descrs) delete[](descrs); if (targetAddresses) delete[](targetAddresses); delete(spaceTree); } // Add an entry to the space B-tree. void LoadRelocate::AddTreeRange(SpaceBTree **tt, unsigned index, uintptr_t startS, uintptr_t endS) { if (*tt == 0) *tt = new SpaceBTreeTree; ASSERT(!(*tt)->isLeaf); SpaceBTreeTree *t = (SpaceBTreeTree*)*tt; const unsigned shift = (sizeof(void*) - 1) * 8; // Takes the high-order byte uintptr_t r = startS >> shift; ASSERT(r < 256); const uintptr_t s = endS == 0 ? 256 : endS >> shift; ASSERT(s >= r && s <= 256); if (r == s) // Wholly within this entry AddTreeRange(&(t->tree[r]), index, startS << 8, endS << 8); else { // Deal with any remainder at the start. if ((r << shift) != startS) { AddTreeRange(&(t->tree[r]), index, startS << 8, 0 /*End of range*/); r++; } // Whole entries. while (r < s) { ASSERT(t->tree[r] == 0); t->tree[r] = new SpaceBTree(true, index); r++; } // Remainder at the end. if ((s << shift) != endS) AddTreeRange(&(t->tree[r]), index, 0, endS << 8); } } // Update the addresses in a group of words. void LoadRelocate::RelocateAddressAt(PolyWord *pt) { PolyWord val = *pt; if (val.IsTagged()) return; // Which segment is this address in? // N.B. As with SpaceForAddress we need to subtract 1 to point to the length word. uintptr_t t = (uintptr_t)(val.AsStackAddr() - 1); SpaceBTree *tr = spaceTree; // Each level of the tree is either a leaf or a vector of trees. unsigned j = sizeof(void *) * 8; for (;;) { if (tr == 0) break; if (tr->isLeaf) { // It's in this segment: relocate it to the current position. unsigned i = tr->index; SavedStateSegmentDescr *descr = &descrs[i]; PolyWord *newAddress = targetAddresses[descr->segmentIndex]; ASSERT(val.AsAddress() > descr->originalAddress && val.AsAddress() <= (char*)descr->originalAddress + descr->segmentSize); ASSERT(newAddress != 0); byte *setAddress = (byte*)newAddress + ((char*)val.AsAddress() - (char*)descr->originalAddress); *pt = PolyWord::FromCodePtr(setAddress); return; } j -= 8; tr = ((SpaceBTreeTree*)tr)->tree[(t >> j) & 0xff]; } // Error: Not found. errorMessage = "Unmatched address"; } // This is based on Exporter::relocateObject but does the reverse. // It attempts to adjust all the addresses in the object when it has // been read in. void LoadRelocate::RelocateObject(PolyObject *p) { if (p->IsByteObject()) { } else if (p->IsCodeObject()) { POLYUNSIGNED constCount; PolyWord *cp; ASSERT(! p->IsMutable() ); p->GetConstSegmentForCode(cp, constCount); /* Now the constant area. */ for (POLYUNSIGNED i = 0; i < constCount; i++) RelocateAddressAt(&(cp[i])); // N.B. This does not deal with constants within the code. These have // to be handled by real relocation entries. } else /* Ordinary objects, essentially tuples. */ { POLYUNSIGNED length = p->Length(); for (POLYUNSIGNED i = 0; i < length; i++) RelocateAddressAt(p->Offset(i)); } } // Load a saved state file. Calls itself to handle parent files. bool StateLoader::LoadFile(bool isInitial, time_t requiredStamp, PolyWord tail) { LoadRelocate relocate; AutoFree thisFile(_tcsdup(fileName)); AutoClose loadFile(_tfopen(fileName, _T("rb"))); if ((FILE*)loadFile == NULL) { errorResult = "Cannot open load file"; errNumber = ERRORNUMBER; return false; } SavedStateHeader header; // Read the header and check the signature. if (fread(&header, sizeof(SavedStateHeader), 1, loadFile) != 1) { errorResult = "Unable to load header"; return false; } if (strncmp(header.headerSignature, SAVEDSTATESIGNATURE, sizeof(header.headerSignature)) != 0) { errorResult = "File is not a saved state"; return false; } if (header.headerVersion != SAVEDSTATEVERSION || header.headerLength != sizeof(SavedStateHeader) || header.segmentDescrLength != sizeof(SavedStateSegmentDescr)) { errorResult = "Unsupported version of saved state file"; return false; } // Check that we have the required stamp before loading any children. // If a parent has been overwritten we could get a loop. if (! isInitial && header.timeStamp != requiredStamp) { // Time-stamps don't match. errorResult = "The parent for this saved state does not match or has been changed"; return false; } // Have verified that this is a reasonable saved state file. If it isn't a // top-level file we have to load the parents first. if (header.parentNameEntry != 0) { if (isHierarchy) { // Take the file name from the list if (ML_Cons_Cell::IsNull(tail)) { errorResult = "Missing parent name in argument list"; return false; } ML_Cons_Cell *p = (ML_Cons_Cell *)tail.AsObjPtr(); fileName = Poly_string_to_T_alloc(p->h); if (fileName == NULL) { errorResult = "Insufficient memory"; errNumber = NOMEMORY; return false; } if (! LoadFile(false, header.parentTimeStamp, p->t)) return false; } else { size_t toRead = header.stringTableSize-header.parentNameEntry; size_t elems = ((toRead + sizeof(TCHAR) - 1) / sizeof(TCHAR)); // Always allow space for null terminator size_t roundedBytes = (elems + 1) * sizeof(TCHAR); TCHAR *newFileName = (TCHAR *)realloc(fileName, roundedBytes); if (newFileName == NULL) { errorResult = "Insufficient memory"; errNumber = NOMEMORY; return false; } fileName = newFileName; if (header.parentNameEntry >= header.stringTableSize /* Bad entry */ || fseek(loadFile, header.stringTable + header.parentNameEntry, SEEK_SET) != 0 || fread(fileName, 1, toRead, loadFile) != toRead) { errorResult = "Unable to read parent file name"; return false; } fileName[elems] = 0; // Should already be null-terminated, but just in case. if (! LoadFile(false, header.parentTimeStamp, TAGGED(0))) return false; } ASSERT(hierarchyDepth > 0 && hierarchyTable[hierarchyDepth-1] != 0); } else // Top-level file { if (isHierarchy && ! ML_Cons_Cell::IsNull(tail)) { // There should be no further file names if this is really the top. errorResult = "Too many file names in the list"; return false; } if (header.parentTimeStamp != exportTimeStamp) { // Time-stamp does not match executable. errorResult = "Saved state was exported from a different executable or the executable has changed"; return false; } // Any existing spaces at this level or greater must be turned // into local spaces. We may have references from the stack to objects that // have previously been imported but otherwise these spaces are no longer // needed. gMem.DemoteImportSpaces(); // Clean out the hierarchy table. for (unsigned h = 0; h < hierarchyDepth; h++) { delete(hierarchyTable[h]); hierarchyTable[h] = 0; } hierarchyDepth = 0; } // Now have a valid, matching saved state. // Load the segment descriptors. relocate.nDescrs = header.segmentDescrCount; relocate.descrs = new SavedStateSegmentDescr[relocate.nDescrs]; if (fseek(loadFile, header.segmentDescr, SEEK_SET) != 0 || fread(relocate.descrs, sizeof(SavedStateSegmentDescr), relocate.nDescrs, loadFile) != relocate.nDescrs) { errorResult = "Unable to read segment descriptors"; return false; } { unsigned maxIndex = 0; for (unsigned i = 0; i < relocate.nDescrs; i++) { if (relocate.descrs[i].segmentIndex > maxIndex) maxIndex = relocate.descrs[i].segmentIndex; relocate.AddTreeRange(&relocate.spaceTree, i, (uintptr_t)relocate.descrs[i].originalAddress, (uintptr_t)((char*)relocate.descrs[i].originalAddress + relocate.descrs[i].segmentSize-1)); } relocate.targetAddresses = new PolyWord*[maxIndex+1]; for (unsigned i = 0; i <= maxIndex; i++) relocate.targetAddresses[i] = 0; } // Read in and create the new segments first. If we have problems, // in particular if we have run out of memory, then it's easier to recover. for (unsigned i = 0; i < relocate.nDescrs; i++) { SavedStateSegmentDescr *descr = &relocate.descrs[i]; MemSpace *space = gMem.SpaceForIndex(descr->segmentIndex); if (space != NULL) relocate.targetAddresses[descr->segmentIndex] = space->bottom; if (descr->segmentData == 0) { // No data - just an entry in the index. if (space == NULL/* || descr->segmentSize != (size_t)((char*)space->top - (char*)space->bottom)*/) { errorResult = "Mismatch for existing memory space"; return false; } } else if ((descr->segmentFlags & SSF_OVERWRITE) == 0) { // New segment. if (space != NULL) { errorResult = "Segment already exists"; return false; } // Allocate memory for the new segment. size_t actualSize = descr->segmentSize; unsigned int perms = PERMISSION_READ|PERMISSION_WRITE; if (descr->segmentFlags & SSF_CODE) perms |= PERMISSION_EXEC; PolyWord *mem = (PolyWord*)osMemoryManager->Allocate(actualSize, perms); if (mem == 0) { errorResult = "Unable to allocate memory"; return false; } if (fseek(loadFile, descr->segmentData, SEEK_SET) != 0 || fread(mem, descr->segmentSize, 1, loadFile) != 1) { errorResult = "Unable to read segment"; osMemoryManager->Free(mem, descr->segmentSize); return false; } // Fill unused space to the top of the area. gMem.FillUnusedSpace(mem+descr->segmentSize/sizeof(PolyWord), (actualSize-descr->segmentSize)/sizeof(PolyWord)); // At the moment we leave all segments with write access. unsigned mFlags = (descr->segmentFlags & SSF_WRITABLE ? MTF_WRITEABLE : 0) | (descr->segmentFlags & SSF_NOOVERWRITE ? MTF_NO_OVERWRITE : 0) | (descr->segmentFlags & SSF_BYTES ? MTF_BYTES : 0) | (descr->segmentFlags & SSF_CODE ? MTF_EXECUTABLE : 0); PermanentMemSpace *newSpace = gMem.NewPermanentSpace(mem, actualSize / sizeof(PolyWord), mFlags, descr->segmentIndex, hierarchyDepth+1); relocate.targetAddresses[descr->segmentIndex] = mem; if (newSpace->isMutable && newSpace->byteOnly) { ClearWeakByteRef cwbr; cwbr.ScanAddressesInRegion(newSpace->bottom, newSpace->topPointer); } } } // Now read in the mutable overwrites and relocate. for (unsigned j = 0; j < relocate.nDescrs; j++) { SavedStateSegmentDescr *descr = &relocate.descrs[j]; MemSpace *space = gMem.SpaceForIndex(descr->segmentIndex); ASSERT(space != NULL); // We should have created it. if (descr->segmentFlags & SSF_OVERWRITE) { if (fseek(loadFile, descr->segmentData, SEEK_SET) != 0 || fread(space->bottom, descr->segmentSize, 1, loadFile) != 1) { errorResult = "Unable to read segment"; return false; } } // Relocation. if (descr->segmentData != 0) { // Adjust the addresses in the loaded segment. for (PolyWord *p = space->bottom; p < space->top; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); relocate.RelocateObject(obj); p += length; } } // Process explicit relocations. // If we get errors just skip the error and continue rather than leave // everything in an unstable state. if (descr->relocations) { if (fseek(loadFile, descr->relocations, SEEK_SET) != 0) { errorResult = "Unable to read relocation segment"; return false; } for (unsigned k = 0; k < descr->relocationCount; k++) { RelocationEntry reloc; if (fread(&reloc, sizeof(reloc), 1, loadFile) != 1) { errorResult = "Unable to read relocation segment"; return false; } MemSpace *toSpace = gMem.SpaceForIndex(reloc.targetSegment); if (toSpace == NULL) { errorResult = "Unknown space reference in relocation"; continue; } byte *setAddress = (byte*)space->bottom + reloc.relocAddress; byte *targetAddress = (byte*)toSpace->bottom + reloc.targetAddress; if (setAddress >= (byte*)space->top || targetAddress >= (byte*)toSpace->top) { errorResult = "Bad relocation"; continue; } ScanAddress::SetConstantValue(setAddress, PolyWord::FromCodePtr(targetAddress), reloc.relKind); } } } // Add an entry to the hierarchy table for this file. if (! AddHierarchyEntry(thisFile, header.timeStamp)) return false; return true; // Succeeded } Handle LoadState(TaskData *taskData, bool isHierarchy, Handle hFileList) // Load a saved state or a hierarchy. // hFileList is a list if this is a hierarchy and a single name if it is not. { StateLoader loader(isHierarchy, hFileList); // Request the main thread to do the load. This may set the error string if it failed. processes->MakeRootRequest(taskData, &loader); if (loader.errorResult != 0) { if (loader.errNumber == 0) raise_fail(taskData, loader.errorResult); else { AutoFree buff((char *)malloc(strlen(loader.errorResult) + 2 + _tcslen(loader.fileName) * sizeof(TCHAR) + 1)); #if (defined(_WIN32) && defined(UNICODE)) sprintf(buff, "%s: %S", loader.errorResult, (TCHAR *)loader.fileName); #else sprintf(buff, "%s: %s", loader.errorResult, (TCHAR *)loader.fileName); #endif raise_syscall(taskData, buff, loader.errNumber); } } return SAVE(TAGGED(0)); } /* * Additional functions to provide information or change saved-state files. */ // These functions do not affect the global state so can be executed by // the ML threads directly. Handle ShowHierarchy(TaskData *taskData) // Return the list of files in the hierarchy. { Handle saved = taskData->saveVec.mark(); Handle list = SAVE(ListNull); // Process this in reverse order. for (unsigned i = hierarchyDepth; i > 0; i--) { Handle value = SAVE(C_string_to_Poly(taskData, hierarchyTable[i-1]->fileName)); Handle next = alloc_and_save(taskData, sizeof(ML_Cons_Cell)/sizeof(PolyWord)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); taskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } Handle RenameParent(TaskData *taskData, Handle args) // Change the name of the immediate parent stored in a child { // The name of the file to modify. AutoFree fileNameBuff(Poly_string_to_T_alloc(DEREFHANDLE(args)->Get(0))); if (fileNameBuff == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); // The new parent name to insert. AutoFree parentNameBuff(Poly_string_to_T_alloc(DEREFHANDLE(args)->Get(1))); if (parentNameBuff == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); AutoClose loadFile(_tfopen(fileNameBuff, _T("r+b"))); // Open for reading and writing if ((FILE*)loadFile == NULL) { AutoFree buff((char *)malloc(23 + _tcslen(fileNameBuff) * sizeof(TCHAR) + 1)); #if (defined(_WIN32) && defined(UNICODE)) sprintf(buff, "Cannot open load file: %S", (TCHAR *)fileNameBuff); #else sprintf(buff, "Cannot open load file: %s", (TCHAR *)fileNameBuff); #endif raise_syscall(taskData, buff, ERRORNUMBER); } SavedStateHeader header; // Read the header and check the signature. if (fread(&header, sizeof(SavedStateHeader), 1, loadFile) != 1) raise_fail(taskData, "Unable to load header"); if (strncmp(header.headerSignature, SAVEDSTATESIGNATURE, sizeof(header.headerSignature)) != 0) raise_fail(taskData, "File is not a saved state"); if (header.headerVersion != SAVEDSTATEVERSION || header.headerLength != sizeof(SavedStateHeader) || header.segmentDescrLength != sizeof(SavedStateSegmentDescr)) { raise_fail(taskData, "Unsupported version of saved state file"); } // Does this actually have a parent? if (header.parentNameEntry == 0) raise_fail(taskData, "File does not have a parent"); // At the moment the only entry in the string table is the parent // name so we can simply write a new one on the end of the file. // This makes the file grow slightly each time but it shouldn't be // significant. fseek(loadFile, 0, SEEK_END); header.stringTable = ftell(loadFile); // Remember where this is _fputtc(0, loadFile); // First byte of string table is zero _fputts(parentNameBuff, loadFile); _fputtc(0, loadFile); // A terminating null. header.stringTableSize = (_tcslen(parentNameBuff) + 2)*sizeof(TCHAR); // Now rewind and write the header with the revised string table. fseek(loadFile, 0, SEEK_SET); fwrite(&header, sizeof(header), 1, loadFile); return SAVE(TAGGED(0)); } Handle ShowParent(TaskData *taskData, Handle hFileName) // Return the name of the immediate parent stored in a child { AutoFree fileNameBuff(Poly_string_to_T_alloc(DEREFHANDLE(hFileName))); if (fileNameBuff == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); AutoClose loadFile(_tfopen(fileNameBuff, _T("rb"))); if ((FILE*)loadFile == NULL) { AutoFree buff((char *)malloc(23 + _tcslen(fileNameBuff) * sizeof(TCHAR) + 1)); #if (defined(_WIN32) && defined(UNICODE)) sprintf(buff, "Cannot open load file: %S", (TCHAR *)fileNameBuff); #else sprintf(buff, "Cannot open load file: %s", (TCHAR *)fileNameBuff); #endif raise_syscall(taskData, buff, ERRORNUMBER); } SavedStateHeader header; // Read the header and check the signature. if (fread(&header, sizeof(SavedStateHeader), 1, loadFile) != 1) raise_fail(taskData, "Unable to load header"); if (strncmp(header.headerSignature, SAVEDSTATESIGNATURE, sizeof(header.headerSignature)) != 0) raise_fail(taskData, "File is not a saved state"); if (header.headerVersion != SAVEDSTATEVERSION || header.headerLength != sizeof(SavedStateHeader) || header.segmentDescrLength != sizeof(SavedStateSegmentDescr)) { raise_fail(taskData, "Unsupported version of saved state file"); } // Does this have a parent? if (header.parentNameEntry != 0) { size_t toRead = header.stringTableSize-header.parentNameEntry; size_t elems = ((toRead + sizeof(TCHAR) - 1) / sizeof(TCHAR)); // Always allow space for null terminator size_t roundedBytes = (elems + 1) * sizeof(TCHAR); AutoFree parentFileName((TCHAR *)malloc(roundedBytes)); if (parentFileName == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); if (header.parentNameEntry >= header.stringTableSize /* Bad entry */ || fseek(loadFile, header.stringTable + header.parentNameEntry, SEEK_SET) != 0 || fread(parentFileName, 1, toRead, loadFile) != toRead) { raise_fail(taskData, "Unable to read parent file name"); } parentFileName[elems] = 0; // Should already be null-terminated, but just in case. // Convert the name into a Poly string and then build a "Some" value. // It's possible, although silly, to have the empty string as a parent name. Handle resVal = SAVE(C_string_to_Poly(taskData, parentFileName)); Handle result = alloc_and_save(taskData, 1); DEREFHANDLE(result)->Set(0, DEREFWORDHANDLE(resVal)); return result; } else return SAVE(NONE_VALUE); } // Module system #define MODULESIGNATURE "POLYMODU" #define MODULEVERSION 2 typedef struct _moduleHeader { // These entries are primarily to check that we have a valid // saved state file before we try to interpret anything else. char headerSignature[8]; // Should contain MODULESIGNATURE unsigned headerVersion; // Should contain MODULEVERSION unsigned headerLength; // Number of bytes in the header unsigned segmentDescrLength; // Number of bytes in a descriptor // These entries contain the real data. off_t segmentDescr; // Position of segment descriptor table unsigned segmentDescrCount; // Number of segment descriptors in the table time_t timeStamp; // The time stamp for this file. time_t executableTimeStamp; // The time stamp for the parent executable. // Root uintptr_t rootSegment; POLYUNSIGNED rootOffset; } ModuleHeader; // Store a module class ModuleStorer: public MainThreadRequest { public: ModuleStorer(const TCHAR *file, Handle r): MainThreadRequest(MTP_STOREMODULE), fileName(file), root(r), errorMessage(0), errCode(0) {} virtual void Perform(); const TCHAR *fileName; Handle root; const char *errorMessage; int errCode; }; class ModuleExport: public SaveStateExport { public: ModuleExport(): SaveStateExport(1/* Everything EXCEPT the executable. */) {} virtual void exportStore(void); // Write the data out. }; void ModuleStorer::Perform() { ModuleExport exporter; #if (defined(_WIN32) && defined(UNICODE)) exporter.exportFile = _wfopen(fileName, L"wb"); #else exporter.exportFile = fopen(fileName, "wb"); #endif if (exporter.exportFile == NULL) { errorMessage = "Cannot open export file"; errCode = ERRORNUMBER; return; } // RunExport copies everything reachable from the root, except data from // the executable because we've set the hierarchy to 1, using CopyScan. // It builds the tables in the export data structure then calls exportStore // to actually write the data. if (! root->Word().IsDataPtr()) { // If we have a completely empty module the list may be null. // This needs to be dealt with at a higher level. errorMessage = "Module root is not an address"; return; } exporter.RunExport(root->WordP()); errorMessage = exporter.errorMessage; // This will be null unless there's been an error. } void ModuleExport::exportStore(void) { // What we need to do here is implement the export in a similar way to e.g. PECOFFExport::exportStore // This is copied from SaveRequest::Perform and should be common code. ModuleHeader modHeader; memset(&modHeader, 0, sizeof(modHeader)); modHeader.headerLength = sizeof(modHeader); strncpy(modHeader.headerSignature, MODULESIGNATURE, sizeof(modHeader.headerSignature)); modHeader.headerVersion = MODULEVERSION; modHeader.segmentDescrLength = sizeof(SavedStateSegmentDescr); modHeader.executableTimeStamp = exportTimeStamp; { unsigned rootArea = findArea(this->rootFunction); struct _memTableEntry *mt = &memTable[rootArea]; modHeader.rootSegment = mt->mtIndex; modHeader.rootOffset = (char*)this->rootFunction - (char*)mt->mtAddr; } modHeader.timeStamp = getBuildTime(); modHeader.segmentDescrCount = this->memTableEntries; // One segment for each space. // Write out the header. fwrite(&modHeader, sizeof(modHeader), 1, this->exportFile); SavedStateSegmentDescr *descrs = new SavedStateSegmentDescr [this->memTableEntries]; // We need an entry in the descriptor tables for each segment in the executable because // we may have relocations that refer to addresses in it. for (unsigned j = 0; j < this->memTableEntries; j++) { SavedStateSegmentDescr *thisDescr = &descrs[j]; memoryTableEntry *entry = &this->memTable[j]; memset(thisDescr, 0, sizeof(SavedStateSegmentDescr)); thisDescr->relocationSize = sizeof(RelocationEntry); thisDescr->segmentIndex = (unsigned)entry->mtIndex; thisDescr->segmentSize = entry->mtLength; // Set this even if we don't write it. thisDescr->originalAddress = entry->mtAddr; if (entry->mtFlags & MTF_WRITEABLE) { thisDescr->segmentFlags |= SSF_WRITABLE; if (entry->mtFlags & MTF_NO_OVERWRITE) thisDescr->segmentFlags |= SSF_NOOVERWRITE; if ((entry->mtFlags & MTF_NO_OVERWRITE) == 0) thisDescr->segmentFlags |= SSF_OVERWRITE; if (entry->mtFlags & MTF_BYTES) thisDescr->segmentFlags |= SSF_BYTES; } if (entry->mtFlags & MTF_EXECUTABLE) thisDescr->segmentFlags |= SSF_CODE; } // Write out temporarily. Will be overwritten at the end. modHeader.segmentDescr = ftell(this->exportFile); fwrite(descrs, sizeof(SavedStateSegmentDescr), this->memTableEntries, this->exportFile); // Write out the relocations and the data. for (unsigned k = 0; k < this->memTableEntries; k++) { SavedStateSegmentDescr *thisDescr = &descrs[k]; memoryTableEntry *entry = &this->memTable[k]; if (k >= newAreas) // Not permanent areas { thisDescr->relocations = ftell(this->exportFile); // Have to write this out. this->relocationCount = 0; // Create the relocation table. char *start = (char*)entry->mtAddr; char *end = start + entry->mtLength; for (PolyWord *p = (PolyWord*)start; p < (PolyWord*)end; ) { p++; PolyObject *obj = (PolyObject*)p; POLYUNSIGNED length = obj->Length(); // For saved states we don't include explicit relocations except // in code but it's easier if we do for modules. if (length != 0 && obj->IsCodeObject()) machineDependent->ScanConstantsWithinCode(obj, this); relocateObject(obj); p += length; } thisDescr->relocationCount = this->relocationCount; // Write out the data. thisDescr->segmentData = ftell(exportFile); fwrite(entry->mtAddr, entry->mtLength, 1, exportFile); } } // Rewrite the header and the segment tables now they're complete. fseek(exportFile, 0, SEEK_SET); fwrite(&modHeader, sizeof(modHeader), 1, exportFile); fwrite(descrs, sizeof(SavedStateSegmentDescr), this->memTableEntries, exportFile); delete[](descrs); fclose(exportFile); exportFile = NULL; } Handle StoreModule(TaskData *taskData, Handle args) { TempString fileName(args->WordP()->Get(0)); ModuleStorer storer(fileName, SAVE(args->WordP()->Get(1))); processes->MakeRootRequest(taskData, &storer); if (storer.errorMessage) raise_syscall(taskData, storer.errorMessage, storer.errCode); return SAVE(TAGGED(0)); } // Load a module. class ModuleLoader: public MainThreadRequest { public: ModuleLoader(TaskData *taskData, const TCHAR *file): MainThreadRequest(MTP_LOADMODULE), callerTaskData(taskData), fileName(file), errorResult(NULL), errNumber(0), rootHandle(0) {} virtual void Perform(); TaskData *callerTaskData; const TCHAR *fileName; const char *errorResult; int errNumber; Handle rootHandle; }; void ModuleLoader::Perform() { AutoClose loadFile(_tfopen(fileName, _T("rb"))); if ((FILE*)loadFile == NULL) { errorResult = "Cannot open load file"; errNumber = ERRORNUMBER; return; } ModuleHeader header; // Read the header and check the signature. if (fread(&header, sizeof(ModuleHeader), 1, loadFile) != 1) { errorResult = "Unable to load header"; return; } if (strncmp(header.headerSignature, MODULESIGNATURE, sizeof(header.headerSignature)) != 0) { errorResult = "File is not a Poly/ML module"; return; } if (header.headerVersion != MODULEVERSION || header.headerLength != sizeof(ModuleHeader) || header.segmentDescrLength != sizeof(SavedStateSegmentDescr)) { errorResult = "Unsupported version of module file"; return; } if (header.executableTimeStamp != exportTimeStamp) { // Time-stamp does not match executable. errorResult = "Module was exported from a different executable or the executable has changed"; return; } LoadRelocate relocate; relocate.nDescrs = header.segmentDescrCount; relocate.descrs = new SavedStateSegmentDescr[relocate.nDescrs]; if (fseek(loadFile, header.segmentDescr, SEEK_SET) != 0 || fread(relocate.descrs, sizeof(SavedStateSegmentDescr), relocate.nDescrs, loadFile) != relocate.nDescrs) { errorResult = "Unable to read segment descriptors"; return; } { unsigned maxIndex = 0; for (unsigned i = 0; i < relocate.nDescrs; i++) if (relocate.descrs[i].segmentIndex > maxIndex) maxIndex = relocate.descrs[i].segmentIndex; relocate.targetAddresses = new PolyWord*[maxIndex+1]; for (unsigned i = 0; i <= maxIndex; i++) relocate.targetAddresses[i] = 0; } // Read in and create the new segments first. If we have problems, // in particular if we have run out of memory, then it's easier to recover. for (unsigned i = 0; i < relocate.nDescrs; i++) { SavedStateSegmentDescr *descr = &relocate.descrs[i]; MemSpace *space = gMem.SpaceForIndex(descr->segmentIndex); if (descr->segmentData == 0) { // No data - just an entry in the index. if (space == NULL/* || descr->segmentSize != (size_t)((char*)space->top - (char*)space->bottom)*/) { errorResult = "Mismatch for existing memory space"; return; } else relocate.targetAddresses[descr->segmentIndex] = space->bottom; } else { // New segment. if (space != NULL) { errorResult = "Segment already exists"; return; } // Allocate memory for the new segment. size_t actualSize = descr->segmentSize; MemSpace *space; if (descr->segmentFlags & SSF_CODE) { CodeSpace *cSpace = gMem.NewCodeSpace(actualSize); if (cSpace == 0) { errorResult = "Unable to allocate memory"; return; } space = cSpace; cSpace->firstFree = (PolyWord*)((byte*)space->bottom + descr->segmentSize); if (cSpace->firstFree != cSpace->top) gMem.FillUnusedSpace(cSpace->firstFree, cSpace->top - cSpace->firstFree); } else { LocalMemSpace *lSpace = gMem.NewLocalSpace(actualSize, descr->segmentFlags & SSF_WRITABLE); if (lSpace == 0) { errorResult = "Unable to allocate memory"; return; } space = lSpace; lSpace->lowerAllocPtr = (PolyWord*)((byte*)lSpace->bottom + descr->segmentSize); } if (fseek(loadFile, descr->segmentData, SEEK_SET) != 0 || fread(space->bottom, descr->segmentSize, 1, loadFile) != 1) { errorResult = "Unable to read segment"; return; } relocate.targetAddresses[descr->segmentIndex] = space->bottom; if (space->isMutable && (descr->segmentFlags & SSF_BYTES) != 0) { ClearWeakByteRef cwbr; cwbr.ScanAddressesInRegion(space->bottom, (PolyWord*)((byte*)space->bottom + descr->segmentSize)); } } } // Now deal with relocation. for (unsigned j = 0; j < relocate.nDescrs; j++) { SavedStateSegmentDescr *descr = &relocate.descrs[j]; PolyWord *baseAddr = relocate.targetAddresses[descr->segmentIndex]; ASSERT(baseAddr != NULL); // We should have created it. // Process explicit relocations. // If we get errors just skip the error and continue rather than leave // everything in an unstable state. if (descr->relocations) { if (fseek(loadFile, descr->relocations, SEEK_SET) != 0) errorResult = "Unable to read relocation segment"; for (unsigned k = 0; k < descr->relocationCount; k++) { RelocationEntry reloc; if (fread(&reloc, sizeof(reloc), 1, loadFile) != 1) errorResult = "Unable to read relocation segment"; byte *setAddress = (byte*)baseAddr + reloc.relocAddress; byte *targetAddress = (byte*)relocate.targetAddresses[reloc.targetSegment] + reloc.targetAddress; ScanAddress::SetConstantValue(setAddress, PolyWord::FromCodePtr(targetAddress), reloc.relKind); } } } // Get the root address. Push this to the caller's save vec. If we put the // newly created areas into local memory we could get a GC as soon as we // complete this root request. { PolyWord *baseAddr = relocate.targetAddresses[header.rootSegment]; rootHandle = callerTaskData->saveVec.push((PolyObject*)((byte*)baseAddr + header.rootOffset)); } } Handle LoadModule(TaskData *taskData, Handle args) { TempString fileName(args->Word()); ModuleLoader loader(taskData, fileName); processes->MakeRootRequest(taskData, &loader); if (loader.errorResult != 0) { if (loader.errNumber == 0) raise_fail(taskData, loader.errorResult); else { AutoFree buff((char *)malloc(strlen(loader.errorResult) + 2 + _tcslen(loader.fileName) * sizeof(TCHAR) + 1)); #if (defined(_WIN32) && defined(UNICODE)) sprintf(buff, "%s: %S", loader.errorResult, loader.fileName); #else sprintf(buff, "%s: %s", loader.errorResult, loader.fileName); #endif raise_syscall(taskData, buff, loader.errNumber); } } return loader.rootHandle; } polyml-5.7.1/libpolyml/objsize.h0000644000175000017500000000230013204034553015613 0ustar daviddavid/* Title: objsize.h - export signature for objsize.c Copyright (c) 2000 Cambridge University Technical Services Limited Further development David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef OBJSIZE_H_DEFINED #define OBJSIZE_H_DEFINED class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; extern Handle ObjSize(TaskData *taskData, Handle obj); extern Handle ShowSize(TaskData *taskData, Handle obj); extern Handle ObjProfile(TaskData *taskData, Handle obj); extern struct _entrypts objSizeEPT[]; #endif polyml-5.7.1/libpolyml/quick_gc.cpp0000644000175000017500000006430613204034553016304 0ustar daviddavid/* Title: Quick copying garbage collector Copyright (c) 2011-12, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is a quick copying garbage collector that moves all the data out of the allocation areas and into the mutable and immutable areas. If either of these has filled up it fails and a full garbage collection must be done. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "processes.h" #include "gc.h" #include "scanaddrs.h" #include "check_objects.h" #include "bitmap.h" #include "memmgr.h" #include "diagnostics.h" #include "heapsizing.h" #include "gctaskfarm.h" #include "statistics.h" // This protects access to the gMem.lSpace table. static PLock localTableLock("Minor GC tables"); static bool succeeded = true; class QuickGCScanner: public ScanAddress { public: QuickGCScanner(bool r): rootScan(r) {} virtual ~QuickGCScanner() {} // Overrides for ScanAddress class virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); virtual PolyObject *ScanObjectAddress(PolyObject *base); private: PolyObject *FindNewAddress(PolyObject *obj, POLYUNSIGNED L, LocalMemSpace *srcSpace); virtual LocalMemSpace *FindSpace(POLYUNSIGNED length, bool isMutable) = 0; protected: bool objectCopied; bool rootScan; }; class RootScanner: public QuickGCScanner { public: RootScanner(): QuickGCScanner(true), mutableSpace(0), immutableSpace(0) {} private: virtual LocalMemSpace *FindSpace(POLYUNSIGNED length, bool isMutable); LocalMemSpace *mutableSpace, *immutableSpace; }; class ThreadScanner: public QuickGCScanner { public: ThreadScanner(GCTaskId* id): QuickGCScanner(false), taskID(id), mutableSpace(0), immutableSpace(0), spaceTable(0), nOwnedSpaces(0) {} virtual ~ThreadScanner() { free(spaceTable); } void ScanOwnedAreas(void); private: virtual LocalMemSpace *FindSpace(POLYUNSIGNED length, bool isMutable); bool TakeOwnership(LocalMemSpace *space); GCTaskId *taskID; LocalMemSpace *mutableSpace, *immutableSpace; LocalMemSpace **spaceTable; unsigned nOwnedSpaces; }; // This is used when scanning code areas. If there are no mutable cells left we can clear // the mutable bit and we don't have to scan it again. class CodeCheck: public ScanAddress { public: CodeCheck(): foundMutable(false) {} virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } virtual void ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord) { if (OBJ_IS_MUTABLE_OBJECT(lengthWord)) foundMutable = true; } bool foundMutable; }; // This uses the conditional exchange instruction to check and update // the forwarding pointer. It uses a lock prefix so that if another // thread has updated it in the meantime it will not set it. // Using the assembly code provides a very small speed-up so may not // be worth-while. #if defined(_MSC_VER) && (_MSC_VER >= 1600) // In later versions of MS C we can use the intrinsic. // 1600 is Visual Studio 2010. It may well work in older versions # include # pragma intrinsic(_InterlockedCompareExchange) # if (SIZEOF_VOIDP == 8) # define InterlockedCompareExchange64 _InterlockedCompareExchange64 # else # define InterlockedCompareExchange _InterlockedCompareExchange # endif #endif static bool atomiclySetForwarding(LocalMemSpace *space, POLYUNSIGNED *pt, POLYUNSIGNED testVal, POLYUNSIGNED update) { #ifdef _MSC_VER # if (SIZEOF_VOIDP == 8) LONGLONG *address = (LONGLONG*)(pt-1); POLYUNSIGNED result = InterlockedCompareExchange64(address, update, testVal); return result == testVal; # else LONG *address = (LONG*)(pt-1); POLYUNSIGNED result = InterlockedCompareExchange(address, update, testVal); return result == testVal; # endif #elif((defined(HOSTARCHITECTURE_X86) || defined(HOSTARCHITECTURE_X32)) && defined(__GNUC__)) POLYUNSIGNED result; __asm__ __volatile__ ( "lock; cmpxchgl %1,%2" :"=a"(result) :"r"(update),"m"(pt[-1]),"0"(testVal) :"memory", "cc" ); return result == testVal; #elif(defined(HOSTARCHITECTURE_X86_64) && defined(__GNUC__)) POLYUNSIGNED result; __asm__ __volatile__ ( "lock; cmpxchgq %1,%2" :"=a"(result) :"r"(update),"m"(pt[-1]),"0"(testVal) :"memory", "cc" ); return result == testVal; #else // Fallback on other targets. PLocker lock(&space->spaceLock); if (pt[-1] == testVal) { pt[-1] = update; return true; } return false; #endif } PolyObject *QuickGCScanner::FindNewAddress(PolyObject *obj, POLYUNSIGNED L, LocalMemSpace *srcSpace) { bool isMutable = OBJ_IS_MUTABLE_OBJECT(L); POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); LocalMemSpace *lSpace = FindSpace(n, isMutable); if (lSpace == 0) return 0; // Unable to move it. PolyObject *newObject = (PolyObject*)(lSpace->lowerAllocPtr+1); // It's possible that another thread may have actually copied the // object since we loaded the length word so we check it again. // If this is a mutable we must ensure that checking the forwarding // pointer here and updating it if necessary is atomic. We don't need // to do that for immutable data so there is a small chance that an // object may be copied twice. That's not a problem for immutable data. // Also lock this if it's code. This may not be necessary but code objects // are rare. Updating the addresses in code objects is complicated and // it's possible that there are assumptions somewhere that there's only one // copy. // Avoiding locking for immutables provides only a small speed-up so may not // be worth-while. if (isMutable || OBJ_IS_CODE_OBJECT(L)) { if (! atomiclySetForwarding(srcSpace, (POLYUNSIGNED*)obj, L, OBJ_SET_POINTER(newObject))) { newObject = obj->GetForwardingPtr(); if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Quick: %p %lu %u has already moved to %p\n", obj, n, GetTypeBits(L), newObject); objectCopied = false; return newObject; } } else { if (obj->ContainsForwardingPtr()) { newObject = obj->GetForwardingPtr(); if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Quick: %p %lu %u has already moved to %p\n", obj, n, GetTypeBits(L), newObject); objectCopied = false; return newObject; } else obj->SetForwardingPtr(newObject); } lSpace->lowerAllocPtr += n+1; CopyObjectToNewAddress(obj, newObject, L); objectCopied = true; return newObject; } // When scanning the roots we want to distribute the data among the immutable and mutable areas // so that the work is distributed for the scanning threads. LocalMemSpace *RootScanner::FindSpace(POLYUNSIGNED n, bool isMutable) { LocalMemSpace *lSpace = isMutable ? mutableSpace : immutableSpace; if (lSpace != 0) { // See if there's space in the existing area. if (lSpace->freeSpace() > n /* At least n+1*/) return lSpace; } // Find the space with the largest free area. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *sp = *i; if (sp->isMutable == isMutable && !sp->allocationSpace && (lSpace == 0 || sp->freeSpace() > lSpace->freeSpace())) lSpace = sp; } if (lSpace != 0 && lSpace->freeSpace() > n) { if (isMutable) mutableSpace = lSpace; else immutableSpace = lSpace; return lSpace; } return gHeapSizeParameters.AddSpaceInMinorGC(n+1, isMutable); } // When scanning within a thread we don't want to be searching the space table. LocalMemSpace *ThreadScanner::FindSpace(POLYUNSIGNED n, bool isMutable) { LocalMemSpace *lSpace = isMutable ? mutableSpace : immutableSpace; if (lSpace != 0) { // See if there's space in the existing area. if (lSpace->freeSpace() > n /* At least n+1*/) return lSpace; } for (unsigned i = 0; i < nOwnedSpaces; i++) { lSpace = spaceTable[i]; if (lSpace->isMutable == isMutable && ! lSpace->allocationSpace && lSpace->freeSpace() > n /* At least n+1*/) { if (n < 10) { // We use this space for further allocations unless we are trying to // allocate a "large" object. if (isMutable) mutableSpace = lSpace; else immutableSpace = lSpace; } return lSpace; } } PLocker l(&localTableLock); // Another thread may allocate a new area, reallocating gMem.lSpaces so we // we need a lock here. if (taskID != 0) { // See if we can take a space that is currently unused. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { lSpace = *i; if (lSpace->spaceOwner == 0 && lSpace->isMutable == isMutable && ! lSpace->allocationSpace && lSpace->freeSpace() > n /* At least n+1*/) { if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Quick: Thread %p is taking ownership of space %p\n", taskID, lSpace); if (! TakeOwnership(lSpace)) return 0; return lSpace; } } } lSpace = gHeapSizeParameters.AddSpaceInMinorGC(n+1, isMutable); if (lSpace != 0 && TakeOwnership(lSpace)) return lSpace; return 0; } // Copy all the objects. POLYUNSIGNED QuickGCScanner::ScanAddressAt(PolyWord *pt) { POLYUNSIGNED n = 1; // Set up the loop to process one word at *pt pt++; while (n-- != 0) { PolyWord val = *(--pt); if (! val.IsTagged()) { LocalMemSpace *space = gMem.LocalSpaceForAddress(val.AsStackAddr()-1); // We only copy it if it is in a local allocation space and not in the // "overflow" area of data that could not copied by the last full GC. if (space != 0 && space->allocationSpace && val.AsAddress() <= space->upperAllocPtr) { // We shouldn't get code addresses since we handle code // segments separately so if this isn't an integer it must be an object address. ASSERT(OBJ_IS_DATAPTR(val)); PolyObject *obj = val.AsObjPtr(); // Load the length word without any interlock. We can't assume that // another thread won't also copy this at the same time. POLYUNSIGNED L = obj->LengthWord(); // Has it been moved already? N.B. Another thread may be in the process of // moving it so the new object may not be fully copied. if (OBJ_IS_POINTER(L)) *pt = OBJ_GET_POINTER(L); else { // We need to copy this object. PolyObject *newObject = FindNewAddress(obj, L, space); // New address of object. if (newObject == 0) { // Couldn't copy it - not enough space. succeeded = false; if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Quick: Insufficient space to move %p %lu %u\n", obj, OBJ_OBJECT_LENGTH(L), GetTypeBits(L)); return 0; } *pt = newObject; // Update the pointer to the object // N.B. If another thread has just copied it "newObject" may actually // be an address in another thread's space. In that case "objectCopied" // will be false. if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Quick: %p %lu %u moved to %p\n", obj, OBJ_OBJECT_LENGTH(L), GetTypeBits(L), newObject); // Stop now unless this is a simple word object we have been able to move. // Also stop if we're just scanning the roots. if (! rootScan && newObject != obj && ! OBJ_IS_MUTABLE_OBJECT(L) && GetTypeBits(L) == 0 && objectCopied) { // We can simply return zero in which case this performs a breadth-first scan. // A breadth-first scan distributes the objects through the memory so // to retain some degree of locality we try to copy some object pointed at // by this one. We work from the end back so that we follow the tail pointers // for lists. n = OBJ_OBJECT_LENGTH(L); // Object length pt = (PolyWord*)newObject + n; } } } } } // We've reached the end without finding a pointer to follow return 0; } // The initial entry to process the roots. Also used when processing the addresses // in objects that can't be handled by ScanAddressAt. PolyObject *QuickGCScanner::ScanObjectAddress(PolyObject *base) { PolyWord val = base; // Scan this as an address. (void)QuickGCScanner::ScanAddressAt(&val); // Ignore the result of ScanAddressAt which is always zero and // just return the updated address. return val.AsObjPtr(); } // Add this to the set of spaces we own. Must be called with the // localTableLock held. bool ThreadScanner::TakeOwnership(LocalMemSpace *space) { ASSERT(space->spaceOwner == 0); LocalMemSpace **v = (LocalMemSpace**)realloc(spaceTable, (nOwnedSpaces+1)*sizeof(LocalMemSpace*)); if (v == 0) return false; spaceTable = v; space->spaceOwner = taskID; spaceTable[nOwnedSpaces++] = space; return true; } // Thread function to scan an area. It scans the addresses in the region // copying any objects from the allocation area into mutable or immutable // areas it owns. It then processes all the areas it owns until there // are no further addresses to scan. static void scanArea(GCTaskId *id, void *arg1, void *arg2) { ThreadScanner marker(id); marker.ScanAddressesInRegion((PolyWord*)arg1, (PolyWord*)arg2); marker.ScanOwnedAreas(); } void ThreadScanner::ScanOwnedAreas() { while (true) { bool allDone = true; // We're finished when there is no unscanned data in any space we own. for (unsigned k = 0; k < nOwnedSpaces && allDone; k++) { LocalMemSpace *space = spaceTable[k]; allDone = space->partialGCScan == space->lowerAllocPtr; } if (allDone) break; // Scan each area that has had data added to it. for (unsigned l = 0; l < nOwnedSpaces; l++) { LocalMemSpace *space = spaceTable[l]; // Scan the area. This may well result in more data being added while (space->partialGCScan < space->lowerAllocPtr) { // Is the queue draining? If so it's probably worth creating // some spare work. if (gpTaskFarm->Draining() && gpTaskFarm->ThreadCount() > 1) { PolyWord *mid = space->partialGCScan + (space->lowerAllocPtr - space->partialGCScan)/2; // Split the space in two. PolyWord *p = space->partialGCScan; while (p < mid) { PolyObject *o = (PolyObject*)(p+1); ASSERT(o->ContainsNormalLengthWord()); p += o->Length()+1; } // Start a new task to scan the area up to the half-way point. // Because we round up to the end of the next object we may // include the whole area but that's probably better because // we may have other areas to scan. if (gpTaskFarm->AddWork(scanArea, space->partialGCScan, p)) { space->partialGCScan = p; if (space->lowerAllocPtr == space->partialGCScan) break; } } PolyObject *obj = (PolyObject*)(space->partialGCScan+1); ASSERT(obj->ContainsNormalLengthWord()); POLYUNSIGNED length = obj->Length(); ASSERT(space->partialGCScan+length+1 <= space->lowerAllocPtr); space->partialGCScan += length+1; if (length != 0) ScanAddressesInObject(obj); // If any thread has run out of space we should stop. if (! succeeded) return; } } } // Release the spaces we're holding in case another thread wants to use them. for (unsigned m = 0; m < nOwnedSpaces; m++) { LocalMemSpace *space = spaceTable[m]; space->spaceOwner = 0; } nOwnedSpaces = 0; } bool RunQuickGC(const POLYUNSIGNED wordsRequiredToAllocate) { // If the last minor GC took too long force a full GC. if (gHeapSizeParameters.RunMajorGCImmediately()) return false; gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeStart); globalStats.incCount(PSC_GC_PARTIALGC); mainThreadPhase = MTP_GCQUICK; succeeded = true; if (debugOptions & DEBUG_GC) Log("GC: Beginning quick GC\n"); if (debugOptions & DEBUG_HEAPSIZE) gMem.ReportHeapSizes("Minor GC (before)"); POLYUNSIGNED spaceBeforeGC = 0; for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; ASSERT (lSpace->top >= lSpace->upperAllocPtr); ASSERT (lSpace->upperAllocPtr >= lSpace->lowerAllocPtr); ASSERT (lSpace->lowerAllocPtr >= lSpace->bottom); // Remember the top before we started this GC. It's // only relevant for mutable areas. It avoids us rescanning // objects that may have been added to the space as a result of // scanning another space. if (lSpace->isMutable) lSpace->partialGCTop = lSpace->upperAllocPtr; else lSpace->partialGCTop = lSpace->top; // If we're scanning a space this is where we start. // For immutable areas this only includes newly added // data but for mutable areas we have to scan data added // by previous partial GCs. if (lSpace->isMutable && ! lSpace->allocationSpace) lSpace->partialGCRootBase = lSpace->bottom; else lSpace->partialGCRootBase = lSpace->lowerAllocPtr; lSpace->spaceOwner = 0; // Not currently owned // Add up the space in the mutable and immutable areas if (! lSpace->allocationSpace) spaceBeforeGC += lSpace->allocatedSpace(); } // First scan the roots, copying the data into the mutable and immutable areas. RootScanner rootScan; // Scan the permanent mutable areas. This could be parallelised but it doesn't // appear to be worthwhile at the moment. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && ! space->byteOnly) rootScan.ScanAddressesInRegion(space->bottom, space->top); } // Scan code spaces. for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; // Spaces are mutable if any object has been added to the area since the last GC. if (space->isMutable) { rootScan.ScanAddressesInRegion(space->bottom, space->top); // Check to see if any of the objects are still mutable. If they are // we are still building the code and must rescan it on the next GC. // If there aren't we don't need to unless another code object is added. CodeCheck codeCheck; codeCheck.ScanAddressesInRegion(space->bottom, space->top); space->isMutable = codeCheck.foundMutable; } } // Scan RTS addresses. This will include the thread stacks. GCModules(&rootScan); // At this point the immutable and mutable areas will have some root objects // in the space between partialGCRootBase (the old value of lowerAllocPtr) and // lowerAllocPtr. These will contain the addresses of objects in the allocation // areas. We need to scan these root objects and then any new objects we copy // until there are no objects left to scan. // We also need to scan local mutable areas since these are roots as well. // They have data between partialGCTop and top. Parallelising this appears // to be a significant gain. // We have to be careful about the pointers here. AddWorkOrRunNow begins // a thread immediately and so the scanning threads may be running while // we are still creating new tasks. To avoid tripping up we use separate // pointers to the root objects rather than using lowerAllocPtr and // partialGCScan because these can be modified by the scanning tasks. // It's also possible for new spaces to be added to the table by the scanning // tasks while we are still adding tasks. It is important that the values of // partialGCRootBase, partialGCRootTop and partialGCTop are properly initialised // for these new spaces. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; space->partialGCRootTop = space->lowerAllocPtr; // Top of the roots space->partialGCScan = space->lowerAllocPtr; // Start of scanning for new data. } // Now start creating tasks. From this point only a thread that owns a space // may read or modify lowerAllocPtr or partialGCScan. { unsigned l = 0; while (true) { LocalMemSpace *space; { // There is a chance that a thread that has already been forked may // allocate a new space and realloc gMem.lSpaces. We have to drop // the lock before calling AddWorkOrRunNow in case we "run now". PLocker lock(&localTableLock); if (l >= gMem.lSpaces.size()) break; space = gMem.lSpaces[l++]; } if (space->partialGCRootBase != space->partialGCRootTop) gpTaskFarm->AddWorkOrRunNow(scanArea, space->partialGCRootBase, space->partialGCRootTop); if (space->partialGCTop != space->top) gpTaskFarm->AddWorkOrRunNow(scanArea, space->partialGCTop, space->top); } } gpTaskFarm->WaitForCompletion(); POLYUNSIGNED spaceAfterGC = 0; if (succeeded) { globalStats.setSize(PSS_AFTER_LAST_GC, 0); globalStats.setSize(PSS_ALLOCATION, 0); globalStats.setSize(PSS_ALLOCATION_FREE, 0); // If it succeeded the allocation areas are now empty. for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; POLYUNSIGNED free; if (lSpace->allocationSpace) { lSpace->lowerAllocPtr = lSpace->bottom; free = lSpace->freeSpace(); #ifdef FILL_UNUSED_MEMORY // This provides extra checking if we have dangling pointers memset(lSpace->bottom, 0xaa, (char*)lSpace->upperAllocPtr - (char*)lSpace->bottom); #endif globalStats.incSize(PSS_ALLOCATION, free*sizeof(PolyWord)); globalStats.incSize(PSS_ALLOCATION_FREE, free*sizeof(PolyWord)); } else free = lSpace->freeSpace(); if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: %s space %p %d free in %d words %2.1f%% full\n", lSpace->spaceTypeString(), lSpace, lSpace->freeSpace(), lSpace->spaceSize(), ((float)lSpace->allocatedSpace()) * 100 / (float)lSpace->spaceSize()); globalStats.incSize(PSS_AFTER_LAST_GC, free*sizeof(PolyWord)); spaceAfterGC += lSpace->allocatedSpace(); } if (! gMem.CheckForAllocation(wordsRequiredToAllocate)) succeeded = false; } if (succeeded) { gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeEnd); if (! gHeapSizeParameters.AdjustSizeAfterMinorGC(spaceAfterGC, spaceBeforeGC)) // Adjust the allocation size. return false; // If necessary trigger a full GC immediately gHeapSizeParameters.resetMinorTimingData(); // Remove allocation spaces that are larger than the default // and any excess over the current size of the allocation area. gMem.RemoveExcessAllocation(); if (debugOptions & DEBUG_HEAPSIZE) gMem.ReportHeapSizes("Minor GC (after)"); if (debugOptions & DEBUG_GC) Log("GC: Completed successfully\n"); CheckMemory(); } else { // There was insufficient room to copy everything. We will need to // run a full GC. gHeapSizeParameters.RecordGCTime(HeapSizeParameters::GCTimeEnd); if (debugOptions & DEBUG_GC) Log("GC: Quick GC failed\n"); } return succeeded; } polyml-5.7.1/libpolyml/os_specific.h0000644000175000017500000000200213204034553016433 0ustar daviddavid/* Title: Operating Specific functions. Copyright (c) 2000, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _OSSPEC_H #define _OSSPEC_H class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; extern Handle OS_spec_dispatch_c(TaskData *taskData, Handle args, Handle code); extern struct _entrypts osSpecificEPT[]; #endif polyml-5.7.1/libpolyml/scanaddrs.cpp0000644000175000017500000003677513204034553016472 0ustar daviddavid/* Title: Address scanner Copyright (c) 2006-8, 2012 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #include #include "globals.h" #include "scanaddrs.h" #include "machine_dep.h" #include "diagnostics.h" #include "memmgr.h" // Process the value at a given location and update it as necessary. POLYUNSIGNED ScanAddress::ScanAddressAt(PolyWord *pt) { PolyWord val = *pt; PolyWord newVal = val; if (IS_INT(val) || val == PolyWord::FromUnsigned(0)) { // We can get zeros in the constant area if we garbage collect // while compiling some code. */ } else { ASSERT(OBJ_IS_DATAPTR(val)); // Any sort of address newVal = ScanObjectAddress(val.AsObjPtr()); } if (newVal != val) // Only update if we need to. *pt = newVal; return 0; } // General purpose object processor, Processes all the addresses in an object. // Handles the various kinds of object that may contain addresses. void ScanAddress::ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED lengthWord) { do { ASSERT (OBJ_IS_LENGTH(lengthWord)); if (OBJ_IS_BYTE_OBJECT(lengthWord)) return; /* Nothing more to do */ POLYUNSIGNED length = OBJ_OBJECT_LENGTH(lengthWord); PolyWord *baseAddr = (PolyWord*)obj; if (OBJ_IS_CODE_OBJECT(lengthWord)) { // Scan constants within the code. machineDependent->ScanConstantsWithinCode(obj, obj, length, this); // Skip to the constants and get ready to scan them. obj->GetConstSegmentForCode(length, baseAddr, length); } // else it's a normal object, PolyWord *endWord = baseAddr + length; // We want to minimise the actual recursion we perform so we try to // use tail recursion if we can. We first scan from the end and // remove any words that don't need recursion. POLYUNSIGNED lastLengthWord = 0; while (endWord != baseAddr) { PolyWord wordAt = endWord[-1]; if (IS_INT(wordAt) || wordAt == PolyWord::FromUnsigned(0)) endWord--; // Don't need to look at this. else if ((lastLengthWord = ScanAddressAt(endWord-1)) != 0) // We need to process this one break; else endWord--; // We're not interested in this. } if (endWord == baseAddr) return; // We've done everything. // There is at least one word that needs to be processed, the // one at endWord-1. // Now process from the beginning forward to see if there are // any words before this that need to be handled. This way we are more // likely to handle the head of a list by recursion and the // tail by looping (tail recursion). while (baseAddr < endWord-1) { PolyWord wordAt = *baseAddr; if (IS_INT(wordAt) || wordAt == PolyWord::FromUnsigned(0)) baseAddr++; // Don't need to look at this. else { POLYUNSIGNED lengthWord = ScanAddressAt(baseAddr); if (lengthWord != 0) { wordAt = *baseAddr; // Reload because it may have been side-effected // We really have to process this recursively. ASSERT(wordAt.IsDataPtr()); ScanAddressesInObject(wordAt.AsObjPtr(), lengthWord); baseAddr++; } else baseAddr++; } } // Finally process the last word we found that has to be processed. // Do this by looping rather than recursion. PolyWord wordAt = *baseAddr; // Last word to do. // This must be an address ASSERT(wordAt.IsDataPtr()); obj = wordAt.AsObjPtr(); lengthWord = lastLengthWord; } while(1); } void ScanAddress::ScanAddressesInRegion(PolyWord *region, PolyWord *end) { PolyWord *pt = region; while (pt < end) { pt++; // Skip length word. // pt actually points AT the object here. PolyObject *obj = (PolyObject*)pt; if (obj->ContainsForwardingPtr()) /* skip over moved object */ { // We can now get multiple forwarding pointers as a result // of applying ShareData repeatedly. Perhaps we should // turn the forwarding pointers back into normal words in // an extra pass. obj = obj->FollowForwardingChain(); ASSERT(obj->ContainsNormalLengthWord()); pt += obj->Length(); } else { ASSERT(obj->ContainsNormalLengthWord()); POLYUNSIGNED length = obj->Length(); if (pt+length > end) Crash("Malformed object at %p - length %lu\n", pt, length); if (length != 0) ScanAddressesInObject(obj); pt += length; } } } // Extract a constant from the code. PolyWord ScanAddress::GetConstantValue(byte *addressOfConstant, ScanRelocationKind code) { switch (code) { case PROCESS_RELOC_DIRECT: // 32 or 64 bit address of target { POLYUNSIGNED valu; unsigned i; byte *pt = addressOfConstant; if (pt[3] & 0x80) valu = 0-1; else valu = 0; for (i = sizeof(PolyWord); i > 0; i--) valu = (valu << 8) | pt[i-1]; return PolyWord::FromUnsigned(valu); } case PROCESS_RELOC_I386RELATIVE: // 32 bit relative address { POLYSIGNED disp; byte *pt = addressOfConstant; // Get the displacement. This is signed. if (pt[3] & 0x80) disp = -1; else disp = 0; // Set the sign just in case. for(unsigned i = 4; i > 0; i--) disp = (disp << 8) | pt[i-1]; byte *absAddr = pt + disp + 4; // The address is relative to AFTER the constant return PolyWord::FromCodePtr(absAddr); } default: ASSERT(false); return TAGGED(0); } } // Store a constant value. Also used with a patch table when importing a saved heap which has // been exported using the C exporter. void ScanAddress::SetConstantValue(byte *addressOfConstant, PolyWord p, ScanRelocationKind code) { switch (code) { case PROCESS_RELOC_DIRECT: // 32 or 64 bit address of target { POLYUNSIGNED valu = p.AsUnsigned(); for (unsigned i = 0; i < sizeof(PolyWord); i++) { addressOfConstant[i] = (byte)(valu & 255); valu >>= 8; } } break; case PROCESS_RELOC_I386RELATIVE: // 32 bit relative address { POLYSIGNED newDisp = p.AsCodePtr() - addressOfConstant - 4; #if (SIZEOF_VOIDP != 4) ASSERT(newDisp < 0x80000000 && newDisp >= -(POLYSIGNED)0x80000000); #endif for (unsigned i = 0; i < 4; i++) { addressOfConstant[i] = (byte)(newDisp & 0xff); newDisp >>= 8; } } break; } } // The default action is to call the DEFAULT ScanAddressAt NOT the virtual which means that it calls // ScanObjectAddress for the base address of the object referred to. void ScanAddress::ScanConstant(PolyObject *base, byte *addressOfConstant, ScanRelocationKind code) { PolyWord p = GetConstantValue(addressOfConstant, code); if (! IS_INT(p)) { PolyWord oldValue = p; ScanAddress::ScanAddressAt(&p); if (p != oldValue) // Update it if it has changed. SetConstantValue(addressOfConstant, p, code); } } void ScanAddress::ScanRuntimeWord(PolyWord *w) { if (w->IsTagged()) {} // Don't need to do anything else { ASSERT(w->IsDataPtr()); *w = ScanObjectAddress(w->AsObjPtr()); } } // This gets called in two circumstances. It may be called for the roots // in which case the stack will be empty and we want to process it completely // or it is called for a constant address in which case it will have been // called from RecursiveScan::ScanAddressesInObject and that can process // any addresses. PolyObject *RecursiveScan::ScanObjectAddress(PolyObject *obj) { PolyWord pWord = obj; // Test to see if this needs to be scanned. // It may update the word. bool test = TestForScan(&pWord); obj = pWord.AsObjPtr(); if (test) { MarkAsScanning(obj); if (obj->IsByteObject()) Completed(obj); // Don't need to put it on the stack // If we already have something on the stack we must being called // recursively to process a constant in a code segment. Just push // it on the stack and let the caller deal with it. else if (StackIsEmpty()) RecursiveScan::ScanAddressesInObject(obj, obj->LengthWord()); else PushToStack(obj, (PolyWord*)obj); } return obj; } // This is called via ScanAddressesInRegion to process the permanent mutables. It is // also called from ScanObjectAddress to process root addresses. // It processes all the addresses reachable from the object. void RecursiveScan::ScanAddressesInObject(PolyObject *obj, POLYUNSIGNED lengthWord) { if (OBJ_IS_BYTE_OBJECT(lengthWord)) return; // Ignore byte cells and don't call Completed on them PolyWord *baseAddr = (PolyWord*)obj; while (true) { ASSERT (OBJ_IS_LENGTH(lengthWord)); // Get the length and base address. N.B. If this is a code segment // these will be side-effected by GetConstSegmentForCode. POLYUNSIGNED length = OBJ_OBJECT_LENGTH(lengthWord); if (OBJ_IS_CODE_OBJECT(lengthWord)) { // It's better to process the whole code object in one go. ScanAddress::ScanAddressesInObject(obj, lengthWord); length = 0; // Finished } // else it's a normal object, // If there are only two addresses in this cell that need to be // followed we follow them immediately and treat this cell as done. // If there are more than two we push the address of this cell on // the stack, follow the first address and then rescan it. That way // list cells are processed once only but we don't overflow the // stack by pushing all the addresses in a very large vector. PolyWord *endWord = (PolyWord*)obj + length; PolyObject *firstWord = 0; PolyObject *secondWord = 0; PolyWord *restartFrom = baseAddr; while (baseAddr != endWord) { PolyWord wordAt = *baseAddr; if (wordAt.IsDataPtr() && wordAt != PolyWord::FromUnsigned(0)) { // Normal address. We can have words of all zeros at least in the // situation where we have a partially constructed code segment where // the constants at the end of the code have not yet been filled in. if (TestForScan(baseAddr)) // Test value at baseAddr (may side-effect it) { PolyObject *wObj = (*baseAddr).AsObjPtr(); if (wObj->IsByteObject()) { // Can do this now - don't need to push it MarkAsScanning(wObj); Completed(wObj); } else if (firstWord == 0) { firstWord = wObj; // We mark the word immediately. We can have // two words in an object that are the same // and we don't want to process it again. MarkAsScanning(firstWord); } else if (secondWord == 0) { secondWord = wObj; restartFrom = baseAddr; } else break; // More than two words. } } baseAddr++; } if (baseAddr == endWord) { // We have done everything except possibly firstWord and secondWord. Completed(obj); if (secondWord != 0) { MarkAsScanning(secondWord); // Put this on the stack. If this is a list node we will be // pushing the tail. PushToStack(secondWord, (PolyWord*)secondWord); } } else // Put this back on the stack while we process the first word PushToStack(obj, restartFrom); if (firstWord != 0) { // Process it immediately. obj = firstWord; baseAddr = (PolyWord*)obj; } else if (StackIsEmpty()) return; else PopFromStack(obj, baseAddr); lengthWord = obj->LengthWord(); } } // The stack is allocated as a series of blocks chained together. #define RSTACK_SEGMENT_SIZE 1000 class RScanStack { public: RScanStack(): nextStack(0), lastStack(0), sp(0) {} ~RScanStack() { delete(nextStack); } RScanStack *nextStack; RScanStack *lastStack; unsigned sp; struct { PolyObject *obj; PolyWord *base; } stack[RSTACK_SEGMENT_SIZE]; }; RecursiveScanWithStack::~RecursiveScanWithStack() { delete(stack); } bool RecursiveScanWithStack::StackIsEmpty(void) { return stack == 0 || (stack->sp == 0 && stack->lastStack == 0); } void RecursiveScanWithStack::PushToStack(PolyObject *obj, PolyWord *base) { if (stack == 0 || stack->sp == RSTACK_SEGMENT_SIZE) { if (stack != 0 && stack->nextStack != 0) stack = stack->nextStack; else { // Need a new segment try { RScanStack *s = new RScanStack; s->lastStack = stack; if (stack != 0) stack->nextStack = s; stack = s; } catch (std::bad_alloc &) { StackOverflow(); return; } } } stack->stack[stack->sp].obj = obj; stack->stack[stack->sp].base = base; stack->sp++; } void RecursiveScanWithStack::PopFromStack(PolyObject *&obj, PolyWord *&base) { if (stack->sp == 0) { // Chain to the previous stack if any ASSERT(stack->lastStack != 0); // Before we do, delete any further one to free some memory delete(stack->nextStack); stack->nextStack = 0; stack = stack->lastStack; ASSERT(stack->sp == RSTACK_SEGMENT_SIZE); } --stack->sp; obj = stack->stack[stack->sp].obj; base = stack->stack[stack->sp].base; } polyml-5.7.1/libpolyml/poly_specific.cpp0000644000175000017500000003223613204034553017344 0ustar daviddavid/* Title: poly_specific.cpp - Poly/ML specific RTS calls. Copyright (c) 2006, 2015-17 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This module is used for various run-time calls that are either in the PolyML structure or otherwise specific to Poly/ML. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_STRING_H #include #endif #include "globals.h" #include "poly_specific.h" #include "arb.h" #include "mpoly.h" #include "sys.h" #include "machine_dep.h" #include "polystring.h" #include "run_time.h" #include "version.h" #include "save_vec.h" #include "exporter.h" #include "version.h" #include "sharedata.h" #include "memmgr.h" #include "processes.h" #include "savestate.h" #include "statistics.h" #include "../polystatistics.h" #include "gc.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolySpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetABI(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyLockMutableCode(PolyObject * threadId, PolyWord byteSeg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyCopyByteVecToCode(PolyObject *threadId, PolyWord byteVec); } #define SAVE(x) taskData->saveVec.push(x) static const char *poly_runtime_system_copyright = "Copyright (c) 2002-17 David C.J. Matthews, CUTS and contributors."; #ifndef GIT_VERSION #define GIT_VERSION "" #endif Handle poly_dispatch_c(TaskData *taskData, Handle args, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORDHANDLE(code)); switch (c) { case 9: // Return the GIT version if appropriate { return SAVE(C_string_to_Poly(taskData, GIT_VERSION)); } case 10: // Return the RTS version string. { const char *version; switch (machineDependent->MachineArchitecture()) { case MA_Interpreted: version = "Portable-" TextVersion; break; case MA_I386: version = "I386-" TextVersion; break; case MA_X86_64: version = "X86_64-" TextVersion; break; default: version = "Unknown-" TextVersion; break; } return SAVE(C_string_to_Poly(taskData, version)); } case 11: // Return the RTS copyright string // Is this used?? return SAVE(C_string_to_Poly(taskData, poly_runtime_system_copyright)); case 12: // Return the architecture // Is this used?? { const char *arch; switch (machineDependent->MachineArchitecture()) { case MA_Interpreted: arch = "Interpreted"; break; case MA_I386: arch = "I386"; break; case MA_X86_64: arch = "X86_64"; break; default: arch = "Unknown"; break; } return SAVE(C_string_to_Poly(taskData, arch)); } case 19: // Return the RTS argument help string. return SAVE(C_string_to_Poly(taskData, RTSArgHelp())); case 20: // Write a saved state file. return SaveState(taskData, args); case 21: // Load a saved state file and any ancestors. return LoadState(taskData, false, args); case 22: // Show the hierarchy. return ShowHierarchy(taskData); case 23: // Change the name of the immediate parent stored in a child return RenameParent(taskData, args); case 24: // Return the name of the immediate parent stored in a child return ShowParent(taskData, args); case 27: // Get number of user statistics available return Make_arbitrary_precision(taskData, N_PS_USER); case 28: // Set an entry in the user stats table. { unsigned index = get_C_unsigned(taskData, DEREFHANDLE(args)->Get(0)); if (index >= N_PS_USER) raise_exception0(taskData, EXC_subscript); POLYSIGNED value = getPolySigned(taskData, DEREFHANDLE(args)->Get(1)); globalStats.setUserCounter(index, value); Make_arbitrary_precision(taskData, 0); } case 29: // Get local statistics. return globalStats.getLocalStatistics(taskData); case 30: // Get remote statistics. The argument is the process ID to get the statistics. return globalStats.getRemoteStatistics(taskData, getPolyUnsigned(taskData, DEREFHANDLE(args))); case 31: // Store a module return StoreModule(taskData, args); case 32: // Load a module return LoadModule(taskData, args); case 33: // Load hierarchy. This provides a complete list of children and parents. return LoadState(taskData, true, args); case 34: // Return the system directory for modules. This is configured differently // in Unix and in Windows. #if (defined(MODULEDIR)) return SAVE(C_string_to_Poly(taskData, MODULEDIR)); #elif (defined(_WIN32) && ! defined(__CYGWIN__)) { // This registry key is configured when Poly/ML is installed using the installer. // It gives the path to the Poly/ML installation directory. We return the // Modules subdirectory. HKEY hk; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\PolyML.exe"), 0, KEY_QUERY_VALUE, &hk) == ERROR_SUCCESS) { DWORD valSize; if (RegQueryValueEx(hk, _T("Path"), 0, NULL, NULL, &valSize) == ERROR_SUCCESS) { #define MODULEDIR _T("Modules") TempString buff((TCHAR*)malloc(valSize + (_tcslen(MODULEDIR) + 1)*sizeof(TCHAR))); DWORD dwType; if (RegQueryValueEx(hk, _T("Path"), 0, &dwType, (LPBYTE)(LPTSTR)buff, &valSize) == ERROR_SUCCESS) { RegCloseKey(hk); // The registry entry should end with a backslash. _tcscat(buff, MODULEDIR); return SAVE(C_string_to_Poly(taskData, buff)); } } RegCloseKey(hk); } return SAVE(C_string_to_Poly(taskData, "")); } #else return SAVE(C_string_to_Poly(taskData, "")); #endif case 106: // Lock a mutable code segment and return the executable address. // Legacy - used by bootstrap code only { PolyObject *codeObj = args->WordP(); if (! codeObj->IsCodeObject() || ! codeObj->IsMutable()) raise_fail(taskData, "Not mutable code area"); POLYUNSIGNED segLength = codeObj->Length(); codeObj->SetLengthWord(segLength, F_CODE_OBJ); machineDependent->FlushInstructionCache(codeObj, segLength * sizeof(PolyWord)); // In the future it may be necessary to return a different address here. // N.B. The code area should only have execute permission in the native // code version, not the interpreted version. return args; // Return the original address. } case 107: // Copy a byte segment into the code area and make it mutable code // Legacy - used by bootstrap code only { if (! args->WordP()->IsByteObject()) raise_fail(taskData, "Not byte data area"); while (true) { PolyObject *result = gMem.AllocCodeSpace(args->WordP()); if (result != 0) return taskData->saveVec.push(result); // Could not allocate - must GC. if (! QuickGC(taskData, args->WordP()->Length())) raise_fail(taskData, "Insufficient memory"); } } case 108: // Return the ABI. For 64-bit we need to know if this is Windows. // Legacy - used by bootstrap code only #if (SIZEOF_VOIDP == 8) #ifdef _WIN32 return taskData->saveVec.push(TAGGED(2)); #else return taskData->saveVec.push(TAGGED(1)); #endif #else return taskData->saveVec.push(TAGGED(0)); #endif default: { char msg[100]; sprintf(msg, "Unknown poly-specific function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); return 0; } } } // General interface to poly-specific. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolySpecificGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = poly_dispatch_c(taskData, pushedArg, pushedCode); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Return the ABI - i.e. the calling conventions used when calling external functions. POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetABI() { // Return the ABI. For 64-bit we need to know if this is Windows. #if (SIZEOF_VOIDP == 8) #ifdef _WIN32 return TAGGED(2).AsUnsigned(); // 64-bit Windows #else return TAGGED(1).AsUnsigned(); // 64-bit Unix #endif #else return TAGGED(0).AsUnsigned(); // 32-bit Unix and Windows #endif } // Code generation - Code is initially allocated in a byte segment. When all the // values have been set apart from any addresses the byte segment is copied into // a mutable code segment. POLYEXTERNALSYMBOL POLYUNSIGNED PolyCopyByteVecToCode(PolyObject * threadId, PolyWord byteVec) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(byteVec); PolyObject *result = 0; try { if (!pushedArg->WordP()->IsByteObject()) raise_fail(taskData, "Not byte data area"); do { result = gMem.AllocCodeSpace(pushedArg->WordP()); if (result == 0) { // Could not allocate - must GC. if (!QuickGC(taskData, pushedArg->WordP()->Length())) raise_fail(taskData, "Insufficient memory"); } } while (result == 0); } catch (...) {} // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); return ((PolyWord)result).AsUnsigned(); } // Code generation - Lock a mutable code segment and return the original address. // Currently this does not allocate so other than the exception it could // be a fast call. POLYEXTERNALSYMBOL POLYUNSIGNED PolyLockMutableCode(PolyObject * threadId, PolyWord byteSeg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(byteSeg); Handle result = 0; try { PolyObject *codeObj = pushedArg->WordP(); if (!codeObj->IsCodeObject() || !codeObj->IsMutable()) raise_fail(taskData, "Not mutable code area"); POLYUNSIGNED segLength = codeObj->Length(); codeObj->SetLengthWord(segLength, F_CODE_OBJ); // This is really a legacy of the PPC code-generator. machineDependent->FlushInstructionCache(codeObj, segLength * sizeof(PolyWord)); // In the future it may be necessary to return a different address here. // N.B. The code area should only have execute permission in the native // code version, not the interpreted version. result = pushedArg; // Return the original address. } catch (...) {} // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts polySpecificEPT[] = { { "PolySpecificGeneral", (polyRTSFunction)&PolySpecificGeneral}, { "PolyGetABI", (polyRTSFunction)&PolyGetABI }, { "PolyCopyByteVecToCode", (polyRTSFunction)&PolyCopyByteVecToCode }, { "PolyLockMutableCode", (polyRTSFunction)&PolyLockMutableCode }, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/gc_copy_phase.cpp0000644000175000017500000003376113204034553017323 0ustar daviddavid/* Title: Multi-Threaded Garbage Collector - Copy phase Copyright (c) 2010-12 David C. J. Matthews Based on the original garbage collector code Copyright 2000-2008 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This is the second, copy, phase of the garbage collector. The previous, mark, phase has identified all the live data and set the bits in the bit-maps. This phase compacts the memory by copying cells from lower in the segment or from other segments. When a cell is copied the length-word is modified to be a tomb-stone that gives the new location for the cell. Cells can be copied to areas of memory that are shown as free in the bit-maps and the destination area is then marked as allocated. Because there are tomb-stones left behind the original location of a cell must remain as allocated and its space cannot be reused until the GC is complete. We copy cells in a defined order to avoid copying loops. The ordering on the addresses is: Immutable areas (for immutable cells) (highest) Mutable areas Allocation areas (lowest) Within each group a lower position in the gMem.lSpaces is higher MemMgr::AddLocalSpace enters spaces gMem.lSpaces such that immutable areas come before mutable areas which come before allocation areas so this reduces to the order in that table. Within a space higher addresses are higher. So we try to copy data out of the allocation areas and to copy any cells that are now immutable out of the mutable areas. We try to copy data out of higher numbered spaces in order to try to free them completely and to compact data towards the top of a space if we can't. Once a thread has started copying into or out of an area it takes ownership of the area and no other thread can use the area. This avoids */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STRING_H #include #endif #include "globals.h" #include "machine_dep.h" #include "processes.h" #include "gc.h" #include "scanaddrs.h" #include "bitmap.h" #include "memmgr.h" #include "gctaskfarm.h" #include "locking.h" #include "diagnostics.h" static PLock copyLock("Copy"); // Search the area downwards looking for n consecutive free words. // Return the address of the word if successful or 0 on failure. // "limit" is the bit position of the bottom of the area or, if we're compacting an area, // the bit position of the object we'd like to move to a higher address. static inline PolyWord *FindFreeAndAllocate(LocalMemSpace *dst, POLYUNSIGNED limit, POLYUNSIGNED n) { if (dst == 0) return 0; // No current space /* SPF's version of the start caching code. SPF 2/10/96 */ // The idea of it is to avoid having to search over an area that is // already known not to have any spaces large enough for an object of // a given size. Knowing that there is no space for an object of // size n implies that there is no space for anything of size larger // than n. SPF's idea is that after finding the space in the bitmap // we update only the element for the size we are looking for rather // than everything larger. unsigned truncated_n = n < NSTARTS ? (unsigned)n : NSTARTS - 1; // If we're looking for something larger than last time update // all the entries last time's size and this size. for (unsigned i = dst->start_index; i < truncated_n; i ++) { if (dst->start[i] < dst->start[i+1]) dst->start[i+1] = dst->start[i]; } dst->start_index = truncated_n; POLYUNSIGNED start = dst->start[truncated_n]; if (start <= limit) return 0; // Look in the bitmap. Returns "start" if it can't find space. POLYUNSIGNED free = dst->bitmap.FindFree(limit, start, n); // If we failed to allocate the space (free == start) we set this to // zero to indicate that there is no space for anything of this size // or larger. if (n < NSTARTS) dst->start[n] = free == start ? 0 : free; if (free == start) return 0; // Allocate the space. dst->bitmap.SetBits(free, n); PolyWord *newp = dst->wordAddr(free); /* New object address */ // Update dst->upperAllocPtr, so the new object doesn't get trampled. if (newp < dst->upperAllocPtr) dst->upperAllocPtr = newp; return newp; } // This does nothing to the addresses but by applying it in ScanConstantsWithinCode we // adjust any relative addresses so they are relative to the new location. class MTGCProcessIdentity: public ScanAddress { public: virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } }; // Copy a cell to its new address. void CopyObjectToNewAddress(PolyObject *srcAddress, PolyObject *destAddress, POLYUNSIGNED L) { destAddress->SetLengthWord(L); /* copy length word */ POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); // Unroll loop for most common cases. switch (n) { default: memcpy(destAddress, srcAddress, n * sizeof(PolyWord)); break; case 4: destAddress->Set(3, srcAddress->Get(3)); case 3: destAddress->Set(2, srcAddress->Get(2)); case 2: destAddress->Set(1, srcAddress->Get(1)); case 1: destAddress->Set(0, srcAddress->Get(0)); } // If this is a code object flush out anything from the instruction cache // that might previously have been at this address if (OBJ_IS_CODE_OBJECT(L)) { MTGCProcessIdentity identity; machineDependent->FlushInstructionCache(destAddress, n * sizeof(PolyWord)); // We have to update any relative addresses in the code. machineDependent->ScanConstantsWithinCode(destAddress, srcAddress, OBJ_OBJECT_LENGTH(L), &identity); } } // Find the next space in the sequence. It may return with the space unchanged if it // is unable to find a suitable space. static bool FindNextSpace(LocalMemSpace *src, LocalMemSpace **dst, bool isMutable, GCTaskId *id) { std::vector::iterator m = gMem.lSpaces.begin(); // If we're compressing the space and it's full that's it. if (*dst == src) return false; if (*dst != 0) { // Find the next space after this while (*m != *dst) m++; m++; } for (; m < gMem.lSpaces.end(); m++) { LocalMemSpace *lSpace = *m; if (lSpace == src) { // The only possibility is to compact this area. ASSERT(!isMutable || src->isMutable); *dst = src; return true; // We already own it } if (lSpace->isMutable == isMutable && !lSpace->allocationSpace && lSpace->spaceOwner == 0) { // Now acquire the lock. We have to retest spaceOwner with the lock held. PLocker lock(©Lock); if (lSpace->spaceOwner == 0) { // Change the space. lSpace->spaceOwner = id; *dst = lSpace; // Return the space if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Copy: copying %s cells from %p to %p\n", isMutable ? "mutable" : "immutable", src, lSpace); return true; } } } return false; } // Copy objects from the source space into an earlier space or up within the // current space. static void copyAllData(GCTaskId *id, void * /*arg1*/, void * /*arg2*/) { LocalMemSpace *mutableDest = 0, *immutableDest = 0; for (std::vector::reverse_iterator i = gMem.lSpaces.rbegin(); i != gMem.lSpaces.rend(); i++) { LocalMemSpace *src = *i; if (src->spaceOwner == 0) { PLocker lock(©Lock); if (src->spaceOwner == 0) src->spaceOwner = id; else continue; } else if (src->spaceOwner != id) continue; if (debugOptions & DEBUG_GC_ENHANCED) Log("GC: Copy: copying area %p (thread %p) %s \n", src, id, src->spaceTypeString()); // We start at fullGCLowerLimit which is the lowest marked object in the heap // N.B. It's essential that the first set bit at or above this corresponds // to the length word of a real object. POLYUNSIGNED bitno = src->wordNo(src->fullGCLowerLimit); // Set the limit to the top so we won't rescan this. That can // only happen if copying takes a very short time and the same // thread runs multiple tasks. src->fullGCLowerLimit = src->top; // src->highest is the bit position that corresponds to the top of // generation we're copying. POLYUNSIGNED highest = src->wordNo(src->top); for (;;) { if (bitno >= highest) break; /* SPF version; Invariant: 0 < highest - bitno */ bitno += src->bitmap.CountZeroBits(bitno, highest - bitno); if (bitno >= highest) break; /* first set bit corresponds to the length word */ PolyWord *old = src->wordAddr(bitno); /* Old object address */ PolyObject *obj = (PolyObject*)(old+1); POLYUNSIGNED L = obj->LengthWord(); ASSERT (OBJ_IS_LENGTH(L)); POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L) + 1 ;/* Length of allocation (including length word) */ bitno += n; // Find a mutable space for the mutable objects and an immutable space for // the immutables. We copy objects into earlier spaces or within its own // space but we don't copy an object to a later space. This avoids the // risk of copying an object multiple times. Previously this copied objects // into later spaces but that doesn't work well if we have converted old // saved state segments into local areas. It's much better to delete them // if possible. bool isMutable = OBJ_IS_MUTABLE_OBJECT(L); LocalMemSpace *destSpace = isMutable || immutableDest == 0 ? mutableDest : immutableDest; PolyWord *newp = FindFreeAndAllocate(destSpace, (src == destSpace) ? bitno : 0, n); if (newp == 0 && src != destSpace) { // See if we can find a different space. // N.B. FindNextSpace side-effects mutableDest/immutableDest to give the next space. if (FindNextSpace(src, isMutable ? &mutableDest : &immutableDest, isMutable, id)) { bitno -= n; // Redo this object continue; } // else just leave it } if (newp == 0) /* no room */ { // We're not going to move this object // Update src->upperAllocPtr, so the old object doesn't get trampled. if (old < src->upperAllocPtr) src->upperAllocPtr = old; // Previously this continued compressing to try to make space available // on the next GC. Normally full GCs are infrequent so the chances are // that at the next GC other data will have been freed. Just stop at // this point. // However if we're compressing a mutable area and there is immutable // data in it we should move those out because the mutable area is scanned // on every partial GC. if (! src->isMutable || src->i_marked == 0) break; } else { PolyObject *destAddress = (PolyObject*)(newp+1); obj->SetForwardingPtr(destAddress); CopyObjectToNewAddress(obj, destAddress, L); if (debugOptions & DEBUG_GC_DETAIL) Log("GC: Copy: %p %lu %u -> %p\n", obj, OBJ_OBJECT_LENGTH(L), GetTypeBits(L), destAddress); } } if (mutableDest == src) mutableDest = 0; if (immutableDest == src) immutableDest = 0; } } void GCCopyPhase() { mainThreadPhase = MTP_GCPHASECOMPACT; for(std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *lSpace = *i; POLYUNSIGNED highest = lSpace->wordNo(lSpace->top); for (unsigned i = 0; i < NSTARTS; i++) lSpace->start[i] = highest; lSpace->start_index = NSTARTS - 1; lSpace->spaceOwner = 0; // Reset the allocation pointers. This puts garbage (and real data) below them. // At the end of the compaction the allocation pointer will point below the // lowest real data. lSpace->upperAllocPtr = lSpace->top; } // Copy the mutable data into a lower area if possible. if (gpTaskFarm->ThreadCount() == 0) copyAllData(globalTask, 0, 0); else { // We start as many tasks as we have threads. If the amount of work to // be done is very small one thread could process more than one task. // Have to be careful because we use the task ID to decide which space // to scan. for (unsigned j = 0; j < gpTaskFarm->ThreadCount(); j++) gpTaskFarm->AddWorkOrRunNow(©AllData, 0, 0); } gpTaskFarm->WaitForCompletion(); } polyml-5.7.1/libpolyml/rtsentry.h0000644000175000017500000000264113204034553016050 0ustar daviddavid/* Title: rtsentry.h - Entry points to the run-time system Copyright (c) 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef RTSENTRY_H_INCLUDED #define RTSENTRY_H_INCLUDED class SaveVecEntry; class TaskData; class PolyObject; typedef SaveVecEntry *Handle; extern Handle creatEntryPointObject(TaskData *taskData, Handle entryH); extern const char *getEntryPointName(PolyObject *p); extern bool setEntryPoint(PolyObject *p); typedef void (*polyRTSFunction)(); typedef struct _entrypts { const char *name; polyRTSFunction entry; } *entrypts; // Ensure that the RTS calls can be found by the linker. #ifndef POLYEXTERNALSYMBOL #ifdef _MSC_VER #define POLYEXTERNALSYMBOL __declspec(dllexport) #else #define POLYEXTERNALSYMBOL #endif #endif #endif polyml-5.7.1/libpolyml/locking.cpp0000644000175000017500000002100613204034553016133 0ustar daviddavid/* Title: Mutex and Condition Variable library. Copyright (c) 2007, 2012, 2015 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) #define HAVE_PTHREAD 1 #include #elif (defined(HAVE_WINDOWS_H)) #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_TIME_H #include #endif #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) // Don't include semaphore.h on Mingw. It's provided but doesn't compile. #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STDIO_H #include #endif #include "locking.h" #include "diagnostics.h" // Report contended locks after this many attempts #define LOCK_REPORT_COUNT 50 PLock::PLock(const char *n): lockName(n), lockCount(0) { #ifdef HAVE_PTHREAD pthread_mutex_init(&lock, 0); #elif defined(HAVE_WINDOWS_H) InitializeCriticalSection(&lock); #endif } PLock::~PLock() { #ifdef HAVE_PTHREAD pthread_mutex_destroy(&lock); #elif defined(HAVE_WINDOWS_H) DeleteCriticalSection(&lock); #endif } void PLock::Lock(void) { #if (defined(HAVE_PTHREAD) || defined(HAVE_WINDOWS_H)) if (debugOptions & DEBUG_CONTENTION) { // Report a heavily contended lock. if (Trylock()) return; if (++lockCount > LOCK_REPORT_COUNT) { if (lockName != 0) Log("Lock: contention on lock: %s\n", lockName); else Log("Lock: contention on lock at %p\n", &lock); lockCount = 0; } // Drop through to a normal lock } #endif #ifdef HAVE_PTHREAD pthread_mutex_lock(&lock); #elif defined(HAVE_WINDOWS_H) EnterCriticalSection(&lock); #endif // If we don't support threads this does nothing. } void PLock::Unlock(void) { #ifdef HAVE_PTHREAD pthread_mutex_unlock(&lock); #elif defined(HAVE_WINDOWS_H) LeaveCriticalSection(&lock); #endif } bool PLock::Trylock(void) { #ifdef HAVE_PTHREAD // Since we use normal mutexes this returns EBUSY if the // current thread owns the mutex. return pthread_mutex_trylock(&lock) != EBUSY; #elif defined(HAVE_WINDOWS_H) // This is not implemented properly in Windows. There is // TryEnterCriticalSection in Win NT and later but that // returns TRUE if the current thread owns the mutex. return TryEnterCriticalSection(&lock) == TRUE; #else return true; // Single-threaded. #endif } PCondVar::PCondVar() { #ifdef HAVE_PTHREAD pthread_cond_init(&cond, NULL); #elif defined(HAVE_WINDOWS_H) InitializeConditionVariable(&cond); #endif } PCondVar::~PCondVar() { #ifdef HAVE_PTHREAD pthread_cond_destroy(&cond); #endif } // Wait indefinitely. Drops the lock and reaquires it. void PCondVar::Wait(PLock *pLock) { #ifdef HAVE_PTHREAD pthread_cond_wait(&cond, &pLock->lock); #elif defined(HAVE_WINDOWS_H) SleepConditionVariableCS(&cond, &pLock->lock, INFINITE); #endif } // Wait until a specified absolute time. Drops the lock and reaquires it. #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Windows with Windows-style times void PCondVar::WaitUntil(PLock *pLock, const FILETIME *time) { FILETIME now; GetSystemTimeAsFileTime(&now); LARGE_INTEGER liNow, liTime; liNow.HighPart = now.dwHighDateTime; liNow.LowPart = now.dwLowDateTime; liTime.HighPart = time->dwHighDateTime; liTime.LowPart = time->dwLowDateTime; if (liNow.QuadPart >= liTime.QuadPart) // Already past the time return; DWORD toWait = (DWORD)((liTime.QuadPart - liNow.QuadPart) / (LONGLONG)10000); (void)WaitFor(pLock, toWait); } #else // Unix-style times void PCondVar::WaitUntil(PLock *pLock, const timespec *time) { #ifdef HAVE_PTHREAD pthread_cond_timedwait(&cond, &pLock->lock, time); #elif defined(HAVE_WINDOWS_H) // This must be Cygwin but compiled with --without-threads struct timeval tv; if (gettimeofday(&tv, NULL) != 0) return; if (tv.tv_sec > time->tv_sec || (tv.tv_sec == time->tv_sec && tv.tv_usec >= time->tv_nsec/1000)) return; // Already past the time WaitFor(pLock, (time->tv_sec - tv.tv_sec) * 1000 + time->tv_nsec/1000000 - tv.tv_usec/1000); #endif } #endif // Wait for a number of milliseconds. Used within the RTS. Drops the lock and reaquires it. // Returns true if the return was because the condition variable had been signalled. // Returns false if the timeout expired or there was an error. bool PCondVar::WaitFor(PLock *pLock, unsigned milliseconds) { #ifdef HAVE_PTHREAD struct timespec waitTime; struct timeval tv; if (gettimeofday(&tv, NULL) != 0) return false; waitTime.tv_sec = tv.tv_sec + milliseconds / 1000; waitTime.tv_nsec = (tv.tv_usec + (milliseconds % 1000) * 1000) * 1000; if (waitTime.tv_nsec >= 1000*1000*1000) { waitTime.tv_nsec -= 1000*1000*1000; waitTime.tv_sec += 1; } return pthread_cond_timedwait(&cond, &pLock->lock, &waitTime) == 0; #elif defined(HAVE_WINDOWS_H) // SleepConditionVariableCS returns zero on error or timeout. return SleepConditionVariableCS(&cond, &pLock->lock, milliseconds) != 0; #else return true; // Single-threaded. Return immediately. #endif } // Wake up all the waiting threads. void PCondVar::Signal(void) { #ifdef HAVE_PTHREAD pthread_cond_broadcast(&cond); #elif defined(HAVE_WINDOWS_H) WakeAllConditionVariable(&cond); #endif } // Initialise a semphore. Tries to create an unnamed semaphore if // it can but tries a named semaphore if it can't. Mac OS X only // supports named semaphores. // The semaphore is initialised with a count of zero. PSemaphore::PSemaphore() { #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) sema = 0; isLocal = true; #elif defined(HAVE_WINDOWS_H) sema = NULL; #endif } PSemaphore::~PSemaphore() { #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) if (sema && isLocal) sem_destroy(sema); else if (sema && !isLocal) sem_close(sema); #elif defined(HAVE_WINDOWS_H) if (sema != NULL) CloseHandle(sema); #endif } bool PSemaphore::Init(unsigned init, unsigned max) { #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) isLocal = true; if (sem_init(&localSema, 0, init) == 0) { sema = &localSema; return true; } #if (defined(__CYGWIN__)) // Cygwin doesn't define sem_unlink but that doesn't matter // since sem_init works. sema = 0; return false; #else isLocal = false; char semname[30]; static int count=0; sprintf(semname, "poly%0d-%0d", (int)getpid(), count++); sema = sem_open(semname, O_CREAT|O_EXCL, 00666, init); if (sema == (sem_t*)SEM_FAILED) { sema = 0; return false; } sem_unlink(semname); return true; #endif #elif defined(HAVE_WINDOWS_H) sema = CreateSemaphore(NULL, init, max, NULL); return sema != NULL; #endif } bool PSemaphore::Wait(void) { #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) // Wait until the semaphore is signalled. A Unix signal may interrupt // it so we need to retry in that case. while (sem_wait(sema) == -1) { if (errno != EINTR) return false; } return true; #elif defined(HAVE_WINDOWS_H) return WaitForSingleObject(sema, INFINITE) == WAIT_OBJECT_0; #endif } void PSemaphore::Signal(void) { #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_SEMAPHORE_H)) sem_post(sema); #elif defined(HAVE_WINDOWS_H) ReleaseSemaphore(sema, 1, NULL); #endif } polyml-5.7.1/libpolyml/polystring.cpp0000644000175000017500000002435113204034553016725 0ustar daviddavid/* Title: polystring.cpp - String functions and types Copyright (c) 2006, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #include "globals.h" #include "polystring.h" #include "run_time.h" #include "mpoly.h" #include "sys.h" #include "arb.h" #include "save_vec.h" #include "processes.h" #define SAVE(x) mdTaskData->saveVec.push(x) #define SIZEOF(x) (sizeof(x)/sizeof(PolyWord)) #define DEREFSTRINGHANDLE(_x) ((PolyStringObject *)(_x)->WordP()) // Return empty string. PolyWord EmptyString(TaskData *mdTaskData) { // It might be preferable to have a single empty string. PolyStringObject *result = (PolyStringObject *)(alloc(mdTaskData, 1, F_BYTE_OBJ)); result->length = 0; return result; } PolyWord C_string_to_Poly(TaskData *mdTaskData, const char *buffer, size_t buffLen) /* Returns a C string as a Poly string. */ { if (buffer == NULL) return EmptyString(mdTaskData); if (buffLen == (size_t)-1) buffLen = strlen(buffer); /* Get the number of words required, plus 1 for length word, plus flag bit. */ PolyStringObject *result = (PolyStringObject *)(alloc(mdTaskData, WORDS(buffLen) + 1, F_BYTE_OBJ)); /* Set length of string, then copy the characters. */ result->length = buffLen; memcpy(result->chars,buffer,buffLen); return result; } /* C_string_to_Poly */ POLYUNSIGNED Poly_string_to_C(PolyWord ps, char *buff, POLYUNSIGNED bufflen) /* Copies the characters from the string into the destination buffer. Returns original length of string. */ { PolyStringObject *str = (PolyStringObject *)ps.AsObjPtr(); POLYUNSIGNED chars = str->length >= bufflen ? bufflen-1 : str->length; if (chars != 0) strncpy(buff, str->chars, chars); buff[chars] = '\0'; return chars; } /* Poly_string_to_C */ char *Poly_string_to_C_alloc(PolyWord ps, size_t extraChars) /* Similar to Poly_string_to_C except that the string is allocated using malloc and must be freed by the caller. */ { PolyStringObject * str = (PolyStringObject *)ps.AsObjPtr(); POLYUNSIGNED chars = str->length; char *res = (char*)malloc(chars + extraChars + 1); if (res == 0) return 0; if (chars != 0) strncpy(res, str->chars, chars); res[chars] = '\0'; return res; } /* Poly_string_to_C_alloc */ TempCString::~TempCString() { free(m_value); } #if (defined(_WIN32) && defined(UNICODE)) unsigned int codePage = CP_ACP; bool setWindowsCodePage(const TCHAR *codePageArg) { if (_tcscmp(codePageArg, _T("CP_ACP")) == 0) { codePage = CP_ACP; return true; } if (_tcscmp(codePageArg, _T("CP_UTF7")) == 0 || lstrcmpi(codePageArg, _T("utf7")) == 0) { codePage = CP_UTF7; return true; } if (_tcscmp(codePageArg, _T("CP_UTF8")) == 0 || lstrcmpi(codePageArg, _T("utf8")) == 0) { codePage = CP_UTF8; return true; } if (*codePageArg >= '0' && *codePageArg <= '9') { TCHAR *endp; codePage = _tcstol(codePageArg, &endp, 10); return true; } return false; } /* We need Unicode versions of these. */ PolyWord C_string_to_Poly(TaskData *mdTaskData, const WCHAR *buffer, size_t buffLen) /* Returns a Unicode string as a Poly string. */ { if (buffer == NULL) return EmptyString(mdTaskData); // Get the length of the string, without the terminating null. if (buffLen == -1) buffLen = wcslen(buffer); if (buffLen == 0) return EmptyString(mdTaskData); // If it's zero return empty string. // Find the length when converted. int outputLen = WideCharToMultiByte(codePage, 0, buffer, (int)buffLen, NULL, 0, NULL, NULL); // Return the null string if there's an error if (outputLen <= 0) return EmptyString(mdTaskData); // Get the number of words required, plus 1 for length word, plus flag bit. PolyStringObject *result = (PolyStringObject *)(alloc(mdTaskData, WORDS(outputLen) + 1, F_BYTE_OBJ)); // Set length of string, then copy the characters. result->length = outputLen; int check = WideCharToMultiByte(codePage, 0, buffer, (int)buffLen, result->chars, outputLen, NULL, NULL); if (check <= 0) return EmptyString(mdTaskData); return result; } POLYUNSIGNED Poly_string_to_C(PolyWord ps, WCHAR *buff, POLYUNSIGNED bufflen) { PolyStringObject *str = (PolyStringObject *)ps.AsObjPtr(); int iLength = (int)str->length; if (iLength == 0) { // Null string. if (bufflen != 0) buff[0] = 0; return 0; } const char *iPtr = str->chars; // We can convert it directly using the maximum string length. int space = MultiByteToWideChar(codePage, 0, iPtr, iLength, buff, (int)bufflen-1); if (space <= 0) { if (bufflen != 0) buff[0] = 0; return 0; // Error } buff[space] = 0; // Null terminate return space; } WCHAR *Poly_string_to_U_alloc(PolyWord ps, size_t extraChars) { PolyStringObject *str = (PolyStringObject *)ps.AsObjPtr(); int iLength = (int)str->length; if (iLength == 0 && extraChars == 0) return _wcsdup(L""); const char *iPtr = str->chars; // Find the space required. int chars = MultiByteToWideChar(codePage, 0, iPtr, iLength, NULL, 0); if (chars <= 0) return _wcsdup(L""); WCHAR *res = (WCHAR*)malloc((chars+1+extraChars) * sizeof(WCHAR)); if (res == 0) return 0; chars = MultiByteToWideChar(codePage, 0, iPtr, iLength, res, chars); res[chars] = 0; return res; } // convert_string_list return a list of strings. // This converts Unicode strings. Handle convert_string_list(TaskData *mdTaskData, int count, WCHAR **strings) { Handle saved = mdTaskData->saveVec.mark(); Handle list = SAVE(ListNull); // It's simplest to process the strings in reverse order */ for (int i = count - 1; 0 <= i; i--) { Handle value = SAVE(C_string_to_Poly(mdTaskData, strings[i])); Handle next = alloc_and_save(mdTaskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); // reset save vector to stop it overflowing mdTaskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } TempString::~TempString() { free(m_value); } #endif /* convert_string_list return a list of strings. */ Handle convert_string_list(TaskData *mdTaskData, int count, char **strings) { Handle saved = mdTaskData->saveVec.mark(); Handle list = SAVE(ListNull); // It's simplest to process the strings in reverse order */ for (int i = count - 1; 0 <= i; i--) { /* The order of these declarations is important, becaue we don't want to have make to make the cons cell mutable. This is only safe if we promise to initialise it fully before the next ML heap allocation. SPF 29/11/96 */ Handle value = SAVE(C_string_to_Poly(mdTaskData, strings[i])); Handle next = alloc_and_save(mdTaskData, SIZEOF(ML_Cons_Cell)); DEREFLISTHANDLE(next)->h = DEREFWORDHANDLE(value); DEREFLISTHANDLE(next)->t = DEREFLISTHANDLE(list); // reset save vector to stop it overflowing mdTaskData->saveVec.reset(saved); list = SAVE(DEREFHANDLE(next)); } return list; } /* Convert a string list to a vector of C strings. */ char **stringListToVector(Handle list) { int len = 0; /* Find the length of the list */ for (PolyWord p = DEREFHANDLE(list); p != ListNull; p = ((ML_Cons_Cell*)p.AsObjPtr())->t) len++; /* Allocate vector. */ char **vec = (char**)calloc(len+1, sizeof(char*)); /* Copy the strings and put them into the vector. */ len = 0; PolyWord q = DEREFHANDLE(list); while (q != ListNull) { ML_Cons_Cell *cell = (ML_Cons_Cell*)q.AsObjPtr(); vec[len++] = Poly_string_to_C_alloc(cell->h); q = cell->t; } return vec; } /* Free the memory used by the vector. */ void freeStringVector(char **vec) { char **p; if (vec == 0) return; for (p = vec; *p != 0; p++) free(*p); free(vec); } // Concatenate two strings. Now used only internally in the RTS in process_env.cpp Handle strconcatc(TaskData *mdTaskData, Handle y, Handle x) /* Note: arguments are in the reverse order from Poly */ { POLYUNSIGNED xlen = DEREFSTRINGHANDLE(x)->length; /* Don't concatenate with null strings */ if (xlen == 0) return y; POLYUNSIGNED ylen = DEREFSTRINGHANDLE(y)->length; if (ylen == 0) return x; POLYUNSIGNED len = xlen + ylen; /* Get store for combined string. Include rounding up to next word and room for the length word and add in the flag. */ Handle result = alloc_and_save(mdTaskData, (len + sizeof(PolyWord)-1)/sizeof(PolyWord) + 1, F_BYTE_OBJ); DEREFSTRINGHANDLE(result)->length = len; /* Copy first string */ char *to_ptr = DEREFSTRINGHANDLE(result)->chars; char *from_ptr = DEREFSTRINGHANDLE(x)->chars; while (xlen-- > 0) (*to_ptr++ = *from_ptr++); /* Add on second */ from_ptr = DEREFSTRINGHANDLE(y)->chars; while (ylen-- > 0) (*to_ptr++ = *from_ptr++); return(result); } /* strconcat */ // Only used in Xwindows and then only for debugging. void print_string(PolyWord s) { extern FILE *polyStdout; PolyStringObject * str = (PolyStringObject *)s.AsObjPtr(); fwrite(str->chars, 1, str->length, polyStdout); } polyml-5.7.1/libpolyml/scanaddrs.h0000644000175000017500000001302513204034553016116 0ustar daviddavid/* Title: scanaddrs.h - Scan addresses in objects Copyright (c) 2006-8, 2012, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef SCANADDRS_H_INCLUDED #define SCANADDRS_H_INCLUDED #include "globals.h" // Type of relocations. typedef enum { PROCESS_RELOC_DIRECT = 0, // 32 or 64 bit address of target PROCESS_RELOC_I386RELATIVE // 32 or 64 bit relative address } ScanRelocationKind; class StackSpace; class ScanAddress { public: virtual ~ScanAddress() {} // Keeps gcc happy protected: // Scan an address in the memory. "pt" always points into an object. // It is not called with pt pointing at a C++ automatic variable. // Tagged integers have already been filtered out. // The result is the length word of the object to use if the object // is to be processed recursively or 0 if it should not be. // Default action - call ScanObjectAddress for the base object address of // the address. virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); public: // The fundamental overridable for this class. Takes the object address and returns // the updated address. If nothing else is overridden everything eventually comes here. virtual PolyObject *ScanObjectAddress(PolyObject *base) = 0;// { return base; } typedef enum { STRENGTH_STRONG = 0, STRENGTH_WEAK = 1 } RtsStrength; // Scan an address in the run-time system. This normally just applies ScanObjectAddress // but if this is a weak reference it can set *pt to NULL virtual void ScanRuntimeAddress(PolyObject **pt, RtsStrength weak) { *pt = ScanObjectAddress(*pt); } // Scan a word in the run-time system. This is the preferred call for non-weak // references and deals with the general case of a word. void ScanRuntimeWord(PolyWord *w); // Process a constant within the code. // The default action is to call the DEFAULT ScanAddressAt NOT the virtual which means that it calls // ScanObjectAddress for the base address of the object referred to. virtual void ScanConstant(PolyObject *base, byte *addressOfConstant, ScanRelocationKind code); // Scan the objects in the region and process their addresses. Applies ScanAddressesInObject // to each of the objects. The "region" argument points AT the first length word. // Typically used to scan or update addresses in the mutable area. void ScanAddressesInRegion(PolyWord *region, PolyWord *endOfRegion); // General object processor. // If the object is a word object calls ScanAddressesAt for all the addresses. // // If the object is a code object calls ScanAddressesAt for the constant area and // calls (indirectly) ScanConstant, and by default ScanObjectAddress for addresses within // the code // // If the object is a stack calls ScanStackAddress which calls ScanObjectAddress for // addresses within the code. virtual void ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord); void ScanAddressesInObject(PolyObject *base) { ScanAddressesInObject(base, base->LengthWord()); } // Extract a constant from the code. static PolyWord GetConstantValue(byte *addressOfConstant, ScanRelocationKind code); // Store a constant in the code. static void SetConstantValue(byte *addressOfConstant, PolyWord p, ScanRelocationKind code); }; // Recursive scan over a data structure. class RecursiveScan: public ScanAddress { public: virtual PolyObject *ScanObjectAddress(PolyObject *base); virtual void ScanAddressesInObject(PolyObject *base, POLYUNSIGNED lengthWord); // Have to redefine this for some reason. void ScanAddressesInObject(PolyObject *base) { ScanAddressesInObject(base, base->LengthWord()); } protected: // The derived class must provide a stack. virtual void PushToStack(PolyObject *obj, PolyWord *base) = 0; virtual void PopFromStack(PolyObject *&obj, PolyWord *&base) = 0; virtual bool StackIsEmpty(void) = 0; // Test the word at the location to see if it points to // something that may have to be scanned. We pass in the // pointer here because the called may side-effect it. virtual bool TestForScan(PolyWord *) = 0; // If we are definitely scanning the address we mark it. virtual void MarkAsScanning(PolyObject *) = 0; // Called when the object has been completed. virtual void Completed(PolyObject *) {} }; // Recursive scan with a dynamically allocated stack class RScanStack; class RecursiveScanWithStack: public RecursiveScan { public: RecursiveScanWithStack(): stack(0) {} ~RecursiveScanWithStack(); protected: // StackOverflow is called if allocating a new stack // segment fails. virtual void StackOverflow(void) = 0; virtual void PushToStack(PolyObject *obj, PolyWord *base); virtual void PopFromStack(PolyObject *&obj, PolyWord *&base); virtual bool StackIsEmpty(void); RScanStack *stack; }; #endif polyml-5.7.1/libpolyml/pecoffexport.h0000644000175000017500000000365113204034553016664 0ustar daviddavid/* Title: Export memory as a PE/COFF object Author: David C. J. Matthews. Copyright (c) 2006, 2013, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef PECOFFEXPORT_H_INCLUDED #define PECOFFEXPORT_H_INCLUDED #include "scanaddrs.h" // For base class #include "exporter.h" #include #include class PECOFFExport: public Exporter, public ScanAddress { public: PECOFFExport(): relocationCount(0), symbolNum(0) {} public: virtual void exportStore(void); private: // ScanAddress overrides virtual void ScanConstant(PolyObject *base, byte *addrOfConst, ScanRelocationKind code); // At the moment we should only get calls to ScanConstant. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } void alignFile(int align); virtual void addExternalReference(void *addr, const char *name); private: void setRelocationAddress(void *p, DWORD *reloc); PolyWord createRelocation(PolyWord p, void *relocAddr); void writeSymbol(const char *symbolName, __int32 value, int section, bool isExtern, int symType=0); unsigned relocationCount; ExportStringTable stringTable; // Table and count for external references. ExportStringTable externTable; unsigned symbolNum; }; #endif polyml-5.7.1/libpolyml/machoexport.h0000644000175000017500000000405113204034553016504 0ustar daviddavid/* Title: Export memory as a Mach object file Author: David C. J. Matthews. Copyright (c) 2006,2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR H PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MachExport_H_INCLUDED #define MachExport_H_INCLUDED #include "config.h" #include "scanaddrs.h" // For base class #include "exporter.h" #include class MachoExport: public Exporter, public ScanAddress { public: MachoExport(): relocationCount(0), symbolNum(0) {} public: virtual void exportStore(void); private: // ScanAddress overrides virtual void ScanConstant(PolyObject *base, byte *addrOfConst, ScanRelocationKind code); // At the moment we should only get calls to ScanConstant. virtual PolyObject *ScanObjectAddress(PolyObject *base) { return base; } virtual void addExternalReference(void *addr, const char *name); private: void setRelocationAddress(void *p, int32_t *reloc); PolyWord createRelocation(PolyWord p, void *relocAddr); PolyWord writeRelocation(POLYUNSIGNED offset, void *relocAddr, unsigned symbolNumber, bool isExtern); void alignFile(int align); void createStructsRelocation(unsigned area, POLYUNSIGNED offset); void adjustOffset(unsigned area, POLYUNSIGNED &offset); unsigned relocationCount; ExportStringTable stringTable; // Table and count for external references. ExportStringTable externTable; unsigned symbolNum; }; #endif polyml-5.7.1/libpolyml/gctaskfarm.h0000644000175000017500000000567513204034553016312 0ustar daviddavid/* Title: Task farm for Multi-Threaded Garbage Collector Copyright (c) 2010-12 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef GCTASKFARM_H_INCLUDED #define GCTASKFARM_H_INCLUDED #include "locking.h" // An empty class just used as an ID. class GCTaskId { }; extern GCTaskId *globalTask; // The ID used when a function is run immediately // Function for action. The usual C++ approach would be to use an // object pointer but that requires lots of small objects to be created // and deleted. typedef void (*gctask)(GCTaskId*, void*, void*); typedef struct { gctask task; void *arg1; void *arg2; } queue_entry; class GCTaskFarm { public: GCTaskFarm(); ~GCTaskFarm(); bool Initialise(unsigned threadCount, unsigned queueSize); bool AddWork(gctask task, void *arg1, void *arg2); void AddWorkOrRunNow(gctask task, void *arg1, void *arg2); void WaitForCompletion(void); void Terminate(void); // See if the queue is draining. Used as a hint as to whether // it's worth sparking off some new work. bool Draining(void) const { return queuedItems == 0; } unsigned ThreadCount(void) const { return threadCount; } private: // The semaphore is zero if there is no work or some value up to // the number of threads if there is work. PSemaphore waitForWork; // The lock protects the queue and the item count. PLock workLock; // The condition variable is signalled when the queue is empty. // This can only be waited for by a single thread because it's not a proper // implementation of a condition variable in Windows. PCondVar waitForCompletion; unsigned queueSize, queueIn, queuedItems; queue_entry *workQueue; // Array of unit->unit functions. bool terminate; // Set to true to kill all workers. unsigned threadCount; // Count of workers. unsigned activeThreadCount; // Count of workers doing work. void ThreadFunction(void); #if ((!defined(_WIN32) || defined(__CYGWIN__)) && defined(HAVE_PTHREAD_H)) static void *WorkerThreadFunction(void *parameter); pthread_t *threadHandles; #elif defined(HAVE_WINDOWS_H) static DWORD WINAPI WorkerThreadFunction(void *parameter); HANDLE *threadHandles; #endif }; #endif polyml-5.7.1/libpolyml/rts_module.cpp0000644000175000017500000000362413204034553016670 0ustar daviddavid/* Title: rts_module.cpp - Base class for the run-time system modules. Copyright (c) 2006 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "rts_module.h" #define MAX_MODULES 30 static RtsModule *module_table[MAX_MODULES]; static unsigned modCount = 0; // Add a module to the table. This will be done during the static // initialisation phase. void RtsModule::RegisterModule(void) { ASSERT(modCount < MAX_MODULES); module_table[modCount++] = this; } void InitModules(void) { for(unsigned i = 0; i < modCount; i++) module_table[i]->Init(); } void StartModules(void) { for(unsigned i = 0; i < modCount; i++) module_table[i]->Start(); } void StopModules(void) { for(unsigned i = 0; i < modCount; i++) module_table[i]->Stop(); } void GCModules(ScanAddress *process) { for(unsigned i = 0; i < modCount; i++) module_table[i]->GarbageCollect(process); } polyml-5.7.1/libpolyml/version.h0000644000175000017500000000255213204034553015644 0ustar daviddavid/* Title: version.h Copyright (c) 2000-17 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef VERSION_H_INCLUDED #define VERSION_H_INCLUDED // Poly/ML system interface level #define POLY_version_number 571 // POLY_version_number is written into all exported files and tested // when we start up. The idea is to ensure that if a file is exported // from one version of the library it will run successfully if linked // with a different version. // This only supports version 5.7.1 #define FIRST_supported_version 571 #define LAST_supported_version 571 #define TextVersion "5.7.1" #endif polyml-5.7.1/libpolyml/check_objects.cpp0000644000175000017500000001152013204034553017273 0ustar daviddavid/* Title: Validate addresses in objects. Copyright (c) 2006, 2012 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "diagnostics.h" #include "machine_dep.h" #include "scanaddrs.h" #include "memmgr.h" #define INRANGE(val,start,end)\ (start <= val && val < end) static void CheckAddress(PolyWord *pt) { MemSpace *space = gMem.SpaceForAddress(pt-1); if (space == 0) { Log("Check: Bad pointer %p (no space found)\n", pt); ASSERT(space != 0); } if (space->spaceType == ST_STACK) // This may not have valid length words. return; PolyObject *obj = (PolyObject*)pt; POLYUNSIGNED length = obj->Length(); if (pt+length > space->top) { Log("Check: Bad pointer %p (space %p) length %" POLYUFMT "\n", pt, space, length); ASSERT(pt+length <= space->top); } if (space->spaceType == ST_LOCAL) { LocalMemSpace *lSpace = (LocalMemSpace*)space; if (!((pt > lSpace->bottom && pt+length <= lSpace->lowerAllocPtr) || (pt > lSpace->upperAllocPtr && pt+length <= space->top))) { Log("Check: Bad pointer %p (space %p) length %" POLYUFMT " outside allocated area\n", pt, space, length); ASSERT((pt > lSpace->bottom && pt+length <= lSpace->lowerAllocPtr) || (pt > lSpace->upperAllocPtr && pt+length <= space->top)); } } } void DoCheck (const PolyWord pt) { if (pt == PolyWord::FromUnsigned(0)) return; if (pt.IsTagged()) return; CheckAddress(pt.AsStackAddr()); } class ScanCheckAddress: public ScanAddress { public: virtual PolyObject *ScanObjectAddress(PolyObject *pt) { DoCheck(pt); return pt; } }; void DoCheckObject (const PolyObject *base, POLYUNSIGNED L) { PolyWord *pt = (PolyWord*)base; CheckAddress(pt); MemSpace *space = gMem.SpaceForAddress(pt-1); if (space == 0) Crash ("Bad pointer 0x%08x found", pt); ASSERT (OBJ_IS_LENGTH(L)); POLYUNSIGNED n = OBJ_OBJECT_LENGTH(L); if (n == 0) return; ASSERT (n > 0); ASSERT(pt-1 >= space->bottom && pt+n <= space->top); byte flags = GetTypeBits(L); /* discards GC flag and mutable bit */ if (flags == F_BYTE_OBJ) /* possibly signed byte object */ return; /* Nothing more to do */ if (flags == F_CODE_OBJ) /* code object */ { ScanCheckAddress checkAddr; /* We flush the instruction cache here in case we change any of the instructions when we update addresses. */ machineDependent->FlushInstructionCache(pt, (n + 1) * sizeof(PolyWord)); machineDependent->ScanConstantsWithinCode((PolyObject *)base, (PolyObject *)base, n, &checkAddr); /* Skip to the constants. */ base->GetConstSegmentForCode(n, pt, n); } else ASSERT (flags == 0); /* ordinary word object */ while (n--) DoCheck (*pt++); } void DoCheckPointer (const PolyWord pt) { if (pt == PolyWord::FromUnsigned(0)) return; if (OBJ_IS_AN_INTEGER(pt)) return; DoCheck (pt); if (pt.IsDataPtr()) { PolyObject *obj = pt.AsObjPtr(); DoCheckObject (obj, obj->LengthWord()); } } // Check all the objects in the memory. Used to check the garbage collector // void DoCheckMemory() { ScanCheckAddress memCheck; // Scan the local areas. for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; memCheck.ScanAddressesInRegion(space->bottom, space->lowerAllocPtr); memCheck.ScanAddressesInRegion(space->upperAllocPtr, space->top); } // Scan the permanent mutable areas. for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { PermanentMemSpace *space = *i; if (space->isMutable && ! space->byteOnly) memCheck.ScanAddressesInRegion(space->bottom, space->top); } } polyml-5.7.1/libpolyml/poly_specific.h0000644000175000017500000000205213204034553017002 0ustar daviddavid/* Title: poly_specific.h - exports signature for poly_specific.cpp Copyright (c) 2006, 2016 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This module is used for various run-time calls that are either in the PolyML structure or otherwise specific to Poly/ML. */ #ifndef POLY_SPECIFIC_H_INCLUDED #define POLY_SPECIFIC_H_INCLUDED extern struct _entrypts polySpecificEPT[]; #endif polyml-5.7.1/libpolyml/exporter.h0000644000175000017500000000630113204034553016023 0ustar daviddavid/* Title: exporter.h - Export a function as an object or C file Copyright (c) 2006, 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef EXPORTER_H_INCLUDED #define EXPORTER_H_INCLUDED #include "globals.h" // For PolyWord #include "../polyexports.h" // For struct _memTableEntry #ifdef HAVE_STDIO_H #include // For FILE #endif class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; extern Handle exportNative(TaskData *mdTaskData, Handle args); extern Handle exportPortable(TaskData *mdTaskData, Handle args); // This is the base class for the exporters for the various object-code formats. class Exporter { public: Exporter(unsigned int h=0); virtual ~Exporter(); virtual void exportStore(void) = 0; // Called by the root thread to do the work. void RunExport(PolyObject *rootFunction); protected: virtual PolyWord createRelocation(PolyWord p, void *relocAddr) = 0; void relocateValue(PolyWord *pt); void relocateObject(PolyObject *p); void createRelocation(PolyWord *pt) { *pt = createRelocation(*pt, pt); } unsigned findArea(void *p); // Find index of area that address is in. virtual void addExternalReference(void *p, const char *entryPoint) {} public: FILE *exportFile; const char *errorMessage; protected: unsigned int hierarchy; struct _memTableEntry *memTable; unsigned memTableEntries; PolyObject *rootFunction; // Address of the root function. unsigned newAreas; }; // The object-code exporters all use a similar string table format // consisting of null-terminated C-strings. class ExportStringTable { public: ExportStringTable(); ~ExportStringTable(); unsigned long makeEntry(const char *str); char *strings; unsigned long stringSize, stringAvailable; }; #include "scanaddrs.h" // Because permanent immutable areas are read-only we need to // have somewhere else to hold the tomb-stones. class GraveYard { public: GraveYard() { graves = 0; } ~GraveYard(); PolyWord *graves; PolyWord *startAddr, *endAddr; }; class CopyScan: public ScanAddress { public: CopyScan(unsigned h=0); void initialise(bool isExport=true); ~CopyScan(); protected: virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt); public: virtual PolyObject *ScanObjectAddress(PolyObject *base); // Default sizes of the segments. POLYUNSIGNED defaultImmSize, defaultCodeSize, defaultMutSize, defaultNoOverSize; unsigned hierarchy; GraveYard *graveYard; unsigned tombs; }; extern struct _entrypts exporterEPT[]; #endif polyml-5.7.1/libpolyml/machine_dep.h0000644000175000017500000000420713204034553016412 0ustar daviddavid/* Title: machine_dep.h - exports signature for machine_dep.c Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _MACHINE_DEP_H #define _MACHINE_DEP_H class ScanAddress; class TaskData; class SaveVecEntry; typedef SaveVecEntry *Handle; class StackSpace; // Machine architecture values. typedef enum { MA_Interpreted = 0, MA_I386, MA_X86_64 } Architectures; // Machine-dependent module. class MachineDependent { public: virtual ~MachineDependent() {} // Keep the compiler happy // Create the machine-specific task data object. virtual TaskData *CreateTaskData(void) = 0; virtual unsigned InitialStackSize(void) { return 128; } // Initial size of a stack // Must be > 40 (i.e. 2*min_stack_check) + base area in each stack frame /* ScanConstantsWithinCode - update addresses within a code segment.*/ virtual void ScanConstantsWithinCode(PolyObject *addr, PolyObject *oldAddr, POLYUNSIGNED length, ScanAddress *process) {} void ScanConstantsWithinCode(PolyObject *addr, ScanAddress *process) { ScanConstantsWithinCode(addr, addr, addr->Length(), process); } // Common case virtual void FlushInstructionCache(void *p, POLYUNSIGNED bytes) {} virtual Architectures MachineArchitecture(void) = 0; }; extern MachineDependent *machineDependent; extern struct _entrypts machineSpecificEPT[]; #endif /* _MACHINE_DEP_H */ polyml-5.7.1/libpolyml/process_env.cpp0000644000175000017500000006653513204034553017053 0ustar daviddavid/* Title: Process environment. Copyright (c) 2000-8, 2016-17 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_SYS_WAIT_H #include #endif #if (defined(__CYGWIN__) || defined(_WIN32)) #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif // Include this next before errors.h since in WinCE at least the winsock errors are defined there. #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #include #define NOMEMORY ERROR_NOT_ENOUGH_MEMORY #undef ENOMEM #else typedef char TCHAR; #define _tgetenv getenv #define NOMEMORY ENOMEM #endif #include "globals.h" #include "sys.h" #include "run_time.h" #include "process_env.h" #include "arb.h" #include "mpoly.h" #include "gc.h" #include "scanaddrs.h" #include "polystring.h" #include "save_vec.h" #include "process_env.h" #include "rts_module.h" #include "machine_dep.h" #include "processes.h" #include "locking.h" #include "errors.h" #include "rtsentry.h" #include "version.h" extern "C" { POLYEXTERNALSYMBOL void PolyFinish(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL void PolyTerminate(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyProcessEnvGeneral(PolyObject *threadId, PolyWord code, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyProcessEnvErrorName(PolyObject *threadId, PolyWord syserr); POLYEXTERNALSYMBOL POLYUNSIGNED PolyProcessEnvErrorMessage(PolyObject *threadId, PolyWord syserr); POLYEXTERNALSYMBOL POLYUNSIGNED PolyProcessEnvErrorFromString(PolyObject *threadId, PolyWord string); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetMaxAllocationSize(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetMaxStringSize(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetPolyVersionNumber(); POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetFunctionName(PolyObject *threadId, PolyWord fnAddr); } #define SAVE(x) mdTaskData->saveVec.push(x) #define ALLOC(n) alloc_and_save(mdTaskData, n) #if (defined(_WIN32) && ! defined(__CYGWIN__)) #define ISPATHSEPARATOR(c) ((c) == '\\' || (c) == '/') #define DEFAULTSEPARATOR "\\" #else #define ISPATHSEPARATOR(c) ((c) == '/') #define DEFAULTSEPARATOR "/" #endif #ifdef _MSC_VER // Don't tell me about ISO C++ changes. #pragma warning(disable:4996) #endif // "environ" is declared in the headers on some systems but not all. // Oddly, declaring it within process_env_dispatch_c causes problems // on mingw where "environ" is actually a function. #if __APPLE__ // On Mac OS X there may be problems accessing environ directly. #include #define environ (*_NSGetEnviron()) #else extern char **environ; #endif /* Functions registered with atExit are added to this list. */ static PolyWord at_exit_list = TAGGED(0); /* Once "exit" is called this flag is set and no further calls to atExit are allowed. */ static bool exiting = false; static PLock atExitLock; // Thread lock for above. #ifdef __CYGWIN__ // Cygwin requires spawnvp to avoid the significant overhead of vfork // but it doesn't seem to be thread-safe. Run it on the main thread // to be sure. class CygwinSpawnRequest: public MainThreadRequest { public: CygwinSpawnRequest(char **argv): MainThreadRequest(MTP_CYGWINSPAWN), spawnArgv(argv) {} virtual void Perform(); char **spawnArgv; int pid; }; void CygwinSpawnRequest::Perform() { pid = spawnvp(_P_NOWAIT, "/bin/sh", spawnArgv); } #endif static Handle process_env_dispatch_c(TaskData *mdTaskData, Handle args, Handle code) { unsigned c = get_C_unsigned(mdTaskData, DEREFWORDHANDLE(code)); switch (c) { case 0: /* Return the program name. */ return SAVE(C_string_to_Poly(mdTaskData, userOptions.programName)); case 1: /* Return the argument list. */ return convert_string_list(mdTaskData, userOptions.user_arg_count, userOptions.user_arg_strings); case 14: /* Return a string from the environment. */ { TempString buff(args->Word()); if (buff == 0) raise_syscall(mdTaskData, "Insufficient memory", NOMEMORY); TCHAR *res = _tgetenv(buff); if (res == NULL) raise_syscall(mdTaskData, "Not Found", 0); else return SAVE(C_string_to_Poly(mdTaskData, res)); } case 21: // Return the whole environment. Only available in Posix.ProcEnv. { /* Count the environment strings */ int env_count = 0; while (environ[env_count] != NULL) env_count++; return convert_string_list(mdTaskData, env_count, environ); } case 15: /* Return the success value. */ return Make_fixed_precision(mdTaskData, EXIT_SUCCESS); case 16: /* Return a failure value. */ return Make_fixed_precision(mdTaskData, EXIT_FAILURE); case 17: /* Run command. */ { TempString buff(args->Word()); if (buff == 0) raise_syscall(mdTaskData, "Insufficient memory", NOMEMORY); int res = -1; #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Windows. TCHAR *argv[4]; argv[0] = _tgetenv(_T("COMSPEC")); // Default CLI. if (argv[0] == 0) argv[0] = (TCHAR*)_T("cmd.exe"); // Win NT etc. argv[1] = (TCHAR*)_T("/c"); argv[2] = buff; argv[3] = NULL; // If _P_NOWAIT is given the result is the process handle. // spawnvp does any necessary path searching if argv[0] // does not contain a full path. intptr_t pid = _tspawnvp(_P_NOWAIT, argv[0], argv); if (pid == -1) raise_syscall(mdTaskData, "Function system failed", errno); #else // Cygwin and Unix char *argv[4]; argv[0] = (char*)"sh"; argv[1] = (char*)"-c"; argv[2] = buff; argv[3] = NULL; #if (defined(__CYGWIN__)) CygwinSpawnRequest request(argv); processes->MakeRootRequest(mdTaskData, &request); int pid = request.pid; if (pid < 0) raise_syscall(mdTaskData, "Function system failed", errno); #else // We need to break this down so that we can unblock signals in the // child process. // The Unix "system" function seems to set SIGINT and SIGQUIT to // SIG_IGN in the parent so that the wait will not be interrupted. // That may make sense in a single-threaded application but is // that right here? int pid = vfork(); if (pid == -1) raise_syscall(mdTaskData, "Function system failed", errno); else if (pid == 0) { // In child sigset_t sigset; sigemptyset(&sigset); sigprocmask(SIG_SETMASK, &sigset, 0); // Reset other signals? execv("/bin/sh", argv); _exit(1); } #endif #endif while (true) { try { // Test to see if the child has returned. #if (defined(_WIN32) && ! defined(__CYGWIN__)) switch (WaitForSingleObject((HANDLE)pid, 0)) { case WAIT_OBJECT_0: { DWORD result; BOOL fResult = GetExitCodeProcess((HANDLE)pid, &result); if (! fResult) raise_syscall(mdTaskData, "Function system failed", GetLastError()); CloseHandle((HANDLE)pid); return Make_fixed_precision(mdTaskData, result); } case WAIT_FAILED: raise_syscall(mdTaskData, "Function system failed", GetLastError()); } // Wait for the process to exit or for the timeout WaitHandle waiter((HANDLE)pid); processes->ThreadPauseForIO(mdTaskData, &waiter); #else int wRes = waitpid(pid, &res, WNOHANG); if (wRes > 0) break; else if (wRes < 0) { raise_syscall(mdTaskData, "Function system failed", errno); } // In Unix the best we can do is wait. This may be interrupted // by SIGCHLD depending on where signals are processed. // One possibility is for the main thread to somehow wake-up // the thread when it processes a SIGCHLD. processes->ThreadPause(mdTaskData); #endif } catch (...) { // Either IOException or KillException. // We're abandoning the wait. This will leave // a zombie in Unix. #if (defined(_WIN32) && ! defined(__CYGWIN__)) CloseHandle((HANDLE)pid); #endif throw; } } return Make_fixed_precision(mdTaskData, res); } case 18: /* Register function to run at exit. */ { PLocker locker(&atExitLock); if (! exiting) { PolyObject *cell = alloc(mdTaskData, 2); cell->Set(0, at_exit_list); cell->Set(1, DEREFWORD(args)); at_exit_list = cell; } return Make_fixed_precision(mdTaskData, 0); } case 19: /* Return the next function in the atExit list and set the "exiting" flag to true. */ { PLocker locker(&atExitLock); Handle res; exiting = true; /* Ignore further calls to atExit. */ if (at_exit_list == TAGGED(0)) raise_syscall(mdTaskData, "List is empty", 0); PolyObject *cell = at_exit_list.AsObjPtr(); res = SAVE(cell->Get(1)); at_exit_list = cell->Get(0); return res; } case 20: /* Terminate without running the atExit list or flushing buffers. */ { /* I don't like terminating without some sort of clean up but we'll do it this way for the moment. */ int i = get_C_int(mdTaskData, DEREFWORDHANDLE(args)); _exit(i); } /************ Error codes **************/ /************ Directory/file paths **************/ case 5: /* Return the string representing the current arc. */ return SAVE(C_string_to_Poly(mdTaskData, ".")); case 6: /* Return the string representing the parent arc. */ /* I don't know that this exists in MacOS. */ return SAVE(C_string_to_Poly(mdTaskData, "..")); case 7: /* Return the string representing the directory separator. */ return SAVE(C_string_to_Poly(mdTaskData, DEFAULTSEPARATOR)); case 8: /* Test the character to see if it matches a separator. */ { int e = get_C_int(mdTaskData, DEREFWORDHANDLE(args)); if (ISPATHSEPARATOR(e)) return Make_fixed_precision(mdTaskData, 1); else return Make_fixed_precision(mdTaskData, 0); } case 9: /* Are names case-sensitive? */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Windows - no. */ return Make_fixed_precision(mdTaskData, 0); #else /* Unix - yes. */ return Make_fixed_precision(mdTaskData, 1); #endif // These are no longer used. The code is handled entirely in ML. case 10: /* Are empty arcs redundant? */ /* Unix and Windows - yes. */ return Make_fixed_precision(mdTaskData, 1); case 11: /* Match the volume name part of a path. */ { const TCHAR *volName = NULL; int isAbs = 0; int toRemove = 0; PolyWord path = DEREFHANDLE(args); /* This examines the start of a string and determines how much of it represents the volume name and returns the number of characters to remove, the volume name and whether it is absolute. One would assume that if there is a volume name then it is absolute but there is a peculiar form in Windows/DOS (e.g. A:b\c) which means the file b\c relative to the currently selected directory on the volume A. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) TempString buff(path); if (buff == 0) raise_syscall(mdTaskData, "Insufficient memory", NOMEMORY); size_t length = _tcslen(buff); if (length >= 2 && buff[1] == ':') { /* Volume name? */ if (length >= 3 && ISPATHSEPARATOR(buff[2])) { /* Absolute path. */ toRemove = 3; isAbs = 1; } else { toRemove = 2; isAbs = 0; } volName = buff; buff[2] = '\0'; } else if (length > 3 && ISPATHSEPARATOR(buff[0]) && ISPATHSEPARATOR(buff[1]) && ! ISPATHSEPARATOR(buff[2])) { /* UNC name? */ int i; /* Skip the server name. */ for (i = 3; buff[i] != 0 && !ISPATHSEPARATOR(buff[i]); i++); if (ISPATHSEPARATOR(buff[i])) { i++; /* Skip the share name. */ for (; buff[i] != 0 && !ISPATHSEPARATOR(buff[i]); i++); toRemove = i; if (buff[i] != 0) toRemove++; isAbs = 1; volName = buff; buff[i] = '\0'; } } else if (ISPATHSEPARATOR(buff[0])) /* \a\b strictly speaking is relative to the current drive. It's much easier to treat it as absolute. */ { toRemove = 1; isAbs = 1; volName = _T(""); } #else /* Unix - much simpler. */ char toTest = 0; if (IS_INT(path)) toTest = UNTAGGED(path); else { PolyStringObject * ps = (PolyStringObject *)path.AsObjPtr(); if (ps->length > 1) toTest = ps->chars[0]; } if (ISPATHSEPARATOR(toTest)) { toRemove = 1; isAbs = 1; volName = ""; } #endif /* Construct the result. */ { Handle sVol = SAVE(C_string_to_Poly(mdTaskData, volName)); Handle sRes = ALLOC(3); DEREFWORDHANDLE(sRes)->Set(0, TAGGED(toRemove)); DEREFHANDLE(sRes)->Set(1, DEREFWORDHANDLE(sVol)); DEREFWORDHANDLE(sRes)->Set(2, TAGGED(isAbs)); return sRes; } } case 12: /* Construct a name from a volume and whether it is absolute. */ { unsigned isAbs = get_C_unsigned(mdTaskData, DEREFHANDLE(args)->Get(1)); PolyWord volName = DEREFHANDLE(args)->Get(0); /* In Unix the volume name will always be empty. */ if (isAbs == 0) return SAVE(volName); /* N.B. The arguments to strconcatc are in reverse. */ else return strconcatc(mdTaskData, SAVE(C_string_to_Poly(mdTaskData, DEFAULTSEPARATOR)), SAVE(volName)); } case 13: /* Is the string a valid file name? */ { PolyWord volName = DEREFWORD(args); // First check for NULL. This is not allowed in either Unix or Windows. if (IS_INT(volName)) { if (volName == TAGGED(0)) return Make_fixed_precision(mdTaskData, 0); } else { PolyStringObject * volume = (PolyStringObject *)(volName.AsObjPtr()); for (POLYUNSIGNED i = 0; i < volume->length; i++) { if (volume->chars[i] == '\0') return Make_fixed_precision(mdTaskData, 0); } } #if (defined(_WIN32) && ! defined(__CYGWIN__)) // We need to look for certain invalid characters but only after // we've converted it to Unicode if necessary. TempString name(volName); for (const TCHAR *p = name; *p != 0; p++) { switch (*p) { case '<': case '>': case ':': case '"': case '\\': case '|': case '?': case '*': case '\0': #if (0) // This currently breaks the build. case '/': #endif return Make_fixed_precision(mdTaskData, 0); } if (*p >= 0 && *p <= 31) return Make_fixed_precision(mdTaskData, 0); } // Should we check for special names such as aux, con, prn ?? return Make_fixed_precision(mdTaskData, 1); #else // That's all we need for Unix. // TODO: Check for /. It's invalid in a file name arc. return Make_fixed_precision(mdTaskData, 1); #endif } // These were supposed to have been moved to poly-specific but don't seem to have been. case 100: /* Return the maximum word segment size. */ // Legacy - used in bootstrap return mdTaskData->saveVec.push(TAGGED(MAX_OBJECT_SIZE)); case 101: /* Return the maximum string size (in bytes). It is the maximum number of bytes in a segment less one word for the length field. */ // Legacy - used in bootstrap return mdTaskData->saveVec.push(TAGGED((MAX_OBJECT_SIZE)*sizeof(PolyWord) - sizeof(PolyWord))); case 104: return Make_arbitrary_precision(mdTaskData, POLY_version_number); case 105: /* Get the name of the function. */ { PolyObject *pt = DEREFWORDHANDLE(args); if (pt->IsCodeObject()) /* Should now be a code object. */ { /* Compiled code. This is the first constant in the constant area. */ PolyWord *codePt = pt->ConstPtrForCode(); PolyWord name = codePt[0]; /* May be zero indicating an anonymous segment - return null string. */ if (name == PolyWord::FromUnsigned(0)) return SAVE(C_string_to_Poly(mdTaskData, "")); else return SAVE(name); } else raise_syscall(mdTaskData, "Not a code pointer", 0); } default: { char msg[100]; sprintf(msg, "Unknown environment function: %d", c); raise_exception_string(mdTaskData, EXC_Fail, msg); return 0; } } } // General interface to process-env. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyProcessEnvGeneral(PolyObject *threadId, PolyWord code, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = process_env_dispatch_c(taskData, pushedArg, pushedCode); } catch (KillException &) { processes->ThreadExit(taskData); // May test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Terminate normally with a result code. void PolyFinish(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); int i = get_C_int(taskData, arg); // Cause the other threads to exit. processes->Exit(i); // Exit this thread processes->ThreadExit(taskData); // Doesn't return. } // Terminate without running the atExit list or flushing buffers void PolyTerminate(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); int i = get_C_int(taskData, arg); _exit(i); // Doesn't return. } // Get the name of a numeric error message. POLYUNSIGNED PolyProcessEnvErrorName(PolyObject *threadId, PolyWord syserr) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { int e = (int)syserr.AsObjPtr()->Get(0).AsSigned(); // First look to see if we have the name in the error table. They should generally all be there. const char *errorMsg = stringFromErrorCode(e); if (errorMsg != NULL) result = taskData->saveVec.push(C_string_to_Poly(taskData, errorMsg)); else { // If it isn't in the table. char buff[40]; sprintf(buff, "ERROR%0d", e); result = taskData->saveVec.push(C_string_to_Poly(taskData, buff)); } } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } /* Get the explanatory message for an error. */ POLYUNSIGNED PolyProcessEnvErrorMessage(PolyObject *threadId, PolyWord syserr) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { result = errorMsg(taskData, (int)syserr.AsObjPtr()->Get(0).AsSigned()); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Try to convert an error string to an error number. POLYUNSIGNED PolyProcessEnvErrorFromString(PolyObject *threadId, PolyWord string) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { char buff[40]; // Get the string. Poly_string_to_C(string, buff, sizeof(buff)); // Look the string up in the table. int err = 0; if (errorCodeFromString(buff, &err)) result = Make_sysword(taskData, err); else if (strncmp(buff, "ERROR", 5) == 0) // If we don't find it then it may have been a constructed error name. result = Make_sysword(taskData, atoi(buff+5)); else result = Make_sysword(taskData, 0); // Return 0w0 if it isn't there. } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } // Return the maximum size of a cell that can be allocated on the heap. POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetMaxAllocationSize() { return TAGGED(MAX_OBJECT_SIZE).AsUnsigned(); } // Return the maximum string size (in bytes). // It is the maximum number of bytes in a segment less one word for the length field. POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetMaxStringSize() { return TAGGED((MAX_OBJECT_SIZE) * sizeof(PolyWord) - sizeof(PolyWord)).AsUnsigned(); } POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetPolyVersionNumber() { return TAGGED(POLY_version_number).AsUnsigned(); } // Return the function name associated with a piece of compiled code. POLYEXTERNALSYMBOL POLYUNSIGNED PolyGetFunctionName(PolyObject *threadId, PolyWord fnAddr) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle result = 0; try { PolyObject *pt = fnAddr.AsObjPtr(); if (pt->IsCodeObject()) /* Should now be a code object. */ { /* Compiled code. This is the first constant in the constant area. */ PolyWord *codePt = pt->ConstPtrForCode(); PolyWord name = codePt[0]; /* May be zero indicating an anonymous segment - return null string. */ if (name == PolyWord::FromUnsigned(0)) result = taskData->saveVec.push(C_string_to_Poly(taskData, "")); else result = taskData->saveVec.push(name); } else raise_syscall(taskData, "Not a code pointer", 0); } catch (...) {} // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts processEnvEPT[] = { { "PolyFinish", (polyRTSFunction)&PolyFinish}, { "PolyTerminate", (polyRTSFunction)&PolyTerminate}, { "PolyProcessEnvGeneral", (polyRTSFunction)&PolyProcessEnvGeneral}, { "PolyProcessEnvErrorName", (polyRTSFunction)&PolyProcessEnvErrorName}, { "PolyProcessEnvErrorMessage", (polyRTSFunction)&PolyProcessEnvErrorMessage}, { "PolyProcessEnvErrorFromString", (polyRTSFunction)&PolyProcessEnvErrorFromString}, { "PolyGetMaxAllocationSize", (polyRTSFunction)&PolyGetMaxAllocationSize }, { "PolyGetMaxStringSize", (polyRTSFunction)&PolyGetMaxStringSize }, { "PolyGetPolyVersionNumber", (polyRTSFunction)&PolyGetPolyVersionNumber }, { "PolyGetFunctionName", (polyRTSFunction)&PolyGetFunctionName }, { NULL, NULL} // End of list. }; class ProcessEnvModule: public RtsModule { public: void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static ProcessEnvModule processModule; void ProcessEnvModule::GarbageCollect(ScanAddress *process) /* Ensures that all the objects are retained and their addresses updated. */ { if (at_exit_list.IsDataPtr()) { PolyObject *obj = at_exit_list.AsObjPtr(); process->ScanRuntimeAddress(&obj, ScanAddress::STRENGTH_STRONG); at_exit_list = obj; } } polyml-5.7.1/libpolyml/objsize.cpp0000644000175000017500000002725113204034553016162 0ustar daviddavid/* Title: Object size Copyright (c) 2000 Cambridge University Technical Services Limited Further development David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #include "globals.h" #include "arb.h" #include "run_time.h" #include "machine_dep.h" #include "objsize.h" #include "scanaddrs.h" #include "polystring.h" #include "save_vec.h" #include "bitmap.h" #include "memmgr.h" #include "mpoly.h" #include "processes.h" #include "rtsentry.h" extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyObjSize(PolyObject *threadId, PolyWord obj); POLYEXTERNALSYMBOL POLYUNSIGNED PolyShowSize(PolyObject *threadId, PolyWord obj); POLYEXTERNALSYMBOL POLYUNSIGNED PolyObjProfile(PolyObject *threadId, PolyWord obj); } extern FILE *polyStdout; #define MAX_PROF_LEN 100 // Profile lengths between 1 and this class ProcessVisitAddresses: public ScanAddress { public: virtual POLYUNSIGNED ScanAddressAt(PolyWord *pt) { return ShowWord(*pt); } virtual PolyObject *ScanObjectAddress(PolyObject *base); POLYUNSIGNED ShowWord(PolyWord w); ProcessVisitAddresses(bool show); ~ProcessVisitAddresses(); VisitBitmap *FindBitmap(PolyWord p); void ShowBytes(PolyObject *start); void ShowCode(PolyObject *start); void ShowWords(PolyObject *start); POLYUNSIGNED total_length; bool show_size; VisitBitmap **bitmaps; unsigned nBitmaps; // Counts of objects of each size for mutable and immutable data. unsigned iprofile[MAX_PROF_LEN+1]; unsigned mprofile[MAX_PROF_LEN+1]; }; ProcessVisitAddresses::ProcessVisitAddresses(bool show) { // Need to get the allocation lock here. Another thread // could allocate new local areas resulting in gMem.nlSpaces // and gMem.lSpaces changing under our feet. PLocker lock(&gMem.allocLock); total_length = 0; show_size = show; // Create a bitmap for each of the areas apart from the IO area nBitmaps = (unsigned)(gMem.lSpaces.size()+gMem.pSpaces.size()+gMem.cSpaces.size()); // bitmaps = new VisitBitmap*[nBitmaps]; unsigned bm = 0; for (std::vector::iterator i = gMem.pSpaces.begin(); i < gMem.pSpaces.end(); i++) { MemSpace *space = *i; // Permanent areas are filled with objects from the bottom. bitmaps[bm++] = new VisitBitmap(space->bottom, space->top); } for (std::vector::iterator i = gMem.lSpaces.begin(); i < gMem.lSpaces.end(); i++) { LocalMemSpace *space = *i; bitmaps[bm++] = new VisitBitmap(space->bottom, space->top); } for (std::vector::iterator i = gMem.cSpaces.begin(); i < gMem.cSpaces.end(); i++) { CodeSpace *space = *i; bitmaps[bm++] = new VisitBitmap(space->bottom, space->top); } ASSERT(bm == nBitmaps); // Clear the profile counts. for (unsigned i = 0; i < MAX_PROF_LEN+1; i++) { iprofile[i] = mprofile[i] = 0; } } ProcessVisitAddresses::~ProcessVisitAddresses() { if (bitmaps) { for (unsigned i = 0; i < nBitmaps; i++) delete(bitmaps[i]); delete[](bitmaps); } } // Return the bitmap corresponding to the address or NULL if it isn't there. VisitBitmap *ProcessVisitAddresses::FindBitmap(PolyWord p) { for (unsigned i = 0; i < nBitmaps; i++) { VisitBitmap *bm = bitmaps[i]; if (bm->InRange(p.AsStackAddr())) return bm; } return 0; } void ProcessVisitAddresses::ShowBytes(PolyObject *start) { POLYUNSIGNED bytes = start->Length() * sizeof(PolyWord); char *array = (char *) start; putc('\n', polyStdout); if (start->IsMutable()) fprintf(polyStdout, "MUTABLE "); fprintf(polyStdout, "BYTES:%p:%" POLYUFMT "\n", array, bytes); POLYUNSIGNED i, n; for (i = 0, n = 0; n < bytes; n++) { fprintf(polyStdout, "%02x ",array[n] & 0xff); i++; if (i == 16) { putc('\n', polyStdout); i = 0; } } if (i != 0) putc('\n', polyStdout); } #define MAXNAME 500 void ProcessVisitAddresses::ShowCode(PolyObject *start) { POLYUNSIGNED length = start->Length(); putc('\n', polyStdout); if (start->IsMutable()) fprintf(polyStdout, "MUTABLE "); char buffer[MAXNAME+1]; PolyWord *consts = start->ConstPtrForCode(); PolyWord string = consts[0]; if (string == TAGGED(0)) strcpy(buffer, ""); else (void) Poly_string_to_C(string, buffer, sizeof(buffer)); fprintf(polyStdout, "CODE:%p:%" POLYUFMT " %s\n", start, length, buffer); POLYUNSIGNED i, n; for (i = 0, n = 0; n < length; n++) { if (i != 0) putc('\t', polyStdout); fprintf(polyStdout, "%8p ", start->Get(n).AsObjPtr()); i++; if (i == 4) { putc('\n', polyStdout); i = 0; } } if (i != 0) putc('\n', polyStdout); } void ProcessVisitAddresses::ShowWords(PolyObject *start) { POLYUNSIGNED length = start->Length(); putc('\n', polyStdout); if (start->IsMutable()) fprintf(polyStdout, "MUTABLE "); fprintf(polyStdout, "WORDS:%p:%" POLYUFMT "\n", start, length); POLYUNSIGNED i, n; for (i = 0, n = 0; n < length; n++) { if (i != 0) putc('\t', polyStdout); fprintf(polyStdout, "%8p ", start->Get(n).AsObjPtr()); i++; if (i == 4) { putc('\n', polyStdout); i = 0; } } if (i != 0) putc('\n', polyStdout); } // This is called initially to print the top-level object. // Since we don't process stacks it probably doesn't get called elsewhere. PolyObject *ProcessVisitAddresses::ScanObjectAddress(PolyObject *base) { POLYUNSIGNED lengthWord = ShowWord(base); if (lengthWord) ScanAddressesInObject(base, lengthWord); return base; } // Handle the normal case. Print the object at this word and // return true is it must be handled recursively. POLYUNSIGNED ProcessVisitAddresses::ShowWord(PolyWord w) { if (IS_INT(w)) return 0; /* not a pointer */ if (w == PolyWord::FromUnsigned(0)) return 0; VisitBitmap *bm = FindBitmap(w); if (bm == 0) { fprintf(polyStdout, "Bad address " ZERO_X "%p found\n", w.AsObjPtr()); return 0; } PolyObject *p; ASSERT(w.IsDataPtr()); p = w.AsObjPtr(); /* Have we already visited this object? */ if (bm->AlreadyVisited(p)) return 0; bm->SetVisited(p); POLYUNSIGNED L = p->LengthWord(); POLYUNSIGNED obj_length = OBJ_OBJECT_LENGTH(L); // Increment the appropriate size profile count. if (p->IsMutable()) { if (obj_length > MAX_PROF_LEN) mprofile[MAX_PROF_LEN]++; else mprofile[obj_length]++; } else { if (obj_length > MAX_PROF_LEN) iprofile[MAX_PROF_LEN]++; else iprofile[obj_length]++; } total_length += obj_length + 1; /* total space needed for object */ if (OBJ_IS_BYTE_OBJECT(L)) { if (show_size) ShowBytes(p); return 0; } else if (OBJ_IS_CODE_OBJECT(L)) { PolyWord *cp; POLYUNSIGNED const_count; p->GetConstSegmentForCode(cp, const_count); if (show_size) ShowCode(p); return L; // Process addresses in it. } else /* Word object */ { if (show_size) ShowWords(p); return L; // Process addresses in it. } } Handle ObjSize(TaskData *taskData, Handle obj) { ProcessVisitAddresses process(false); process.ScanObjectAddress(obj->WordP()); return Make_arbitrary_precision(taskData, process.total_length); } Handle ShowSize(TaskData *taskData, Handle obj) { ProcessVisitAddresses process(true); process.ScanObjectAddress(obj->WordP()); fflush(polyStdout); /* We need this for Windows at least. */ return Make_arbitrary_precision(taskData, process.total_length); } static void printfprof(unsigned *counts) { for(unsigned i = 0; i < MAX_PROF_LEN+1; i++) { if (counts[i] != 0) { if (i == MAX_PROF_LEN) fprintf(polyStdout, ">%d\t%u\n", MAX_PROF_LEN, counts[i]); else fprintf(polyStdout, "%d\t%u\n", i, counts[i]); } } } Handle ObjProfile(TaskData *taskData, Handle obj) { ProcessVisitAddresses process(false); process.ScanObjectAddress(obj->WordP()); fprintf(polyStdout, "\nImmutable object sizes and counts\n"); printfprof(process.iprofile); fprintf(polyStdout, "\nMutable object sizes and counts\n"); printfprof(process.mprofile); fflush(polyStdout); /* We need this for Windows at least. */ return Make_arbitrary_precision(taskData, process.total_length); } POLYUNSIGNED PolyObjSize(PolyObject *threadId, PolyWord obj) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); ProcessVisitAddresses process(false); process.ScanObjectAddress(obj.AsObjPtr()); Handle result = Make_arbitrary_precision(taskData, process.total_length); taskData->PostRTSCall(); return result->Word().AsUnsigned(); } POLYUNSIGNED PolyShowSize(PolyObject *threadId, PolyWord obj) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); ProcessVisitAddresses process(true); process.ScanObjectAddress(obj.AsObjPtr()); fflush(polyStdout); /* We need this for Windows at least. */ Handle result = Make_arbitrary_precision(taskData, process.total_length); taskData->PostRTSCall(); return result->Word().AsUnsigned(); } POLYUNSIGNED PolyObjProfile(PolyObject *threadId, PolyWord obj) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); ProcessVisitAddresses process(false); process.ScanObjectAddress(obj.AsObjPtr()); fprintf(polyStdout, "\nImmutable object sizes and counts\n"); printfprof(process.iprofile); fprintf(polyStdout, "\nMutable object sizes and counts\n"); printfprof(process.mprofile); fflush(polyStdout); /* We need this for Windows at least. */ Handle result = Make_arbitrary_precision(taskData, process.total_length); taskData->PostRTSCall(); return result->Word().AsUnsigned(); } struct _entrypts objSizeEPT[] = { { "PolyObjSize", (polyRTSFunction)&PolyObjSize}, { "PolyShowSize", (polyRTSFunction)&PolyShowSize}, { "PolyObjProfile", (polyRTSFunction)&PolyObjProfile}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/save_vec.h0000644000175000017500000000507113204034553015751 0ustar daviddavid/* Title: save_vec.h - The save vector holds temporary values that may move as the result of a garbage collection. Copyright (c) 2006, 2010 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef SAVE_VEC_H_DEFINED #define SAVE_VEC_H_DEFINED #include "globals.h" // For PolyWord /* A handle is the address of an element of save_vec */ /* This element points at an element of the Poly heap */ /* The element is currently represented as a (PolyWord *) */ class SaveVecEntry { public: SaveVecEntry(PolyWord w): m_Handle(w) {} SaveVecEntry(): m_Handle(PolyWord::FromUnsigned(0)) {} // Just used when initialising the vec PolyWord Word() { return m_Handle; } PolyObject *WordP() { return m_Handle.AsObjPtr(); } private: PolyWord m_Handle; friend class SaveVec; }; typedef SaveVecEntry *Handle; #define DEREFWORD(_x) ((_x)->Word()) #define DEREFHANDLE(_x) ((_x)->WordP()) #define DEREFWORDHANDLE(_x) ((_x)->WordP()) #define DEREFBYTEHANDLE(_x) ((byte *)DEREFHANDLE(_x)) #define DEREFLISTHANDLE(_x) ((ML_Cons_Cell *)DEREFHANDLE(_x)) #define DEREFSTREAMHANDLE(_x) ((StreamToken*)DEREFHANDLE(_x)) class ScanAddress; class SaveVec { public: SaveVec(); ~SaveVec(); // Clear the save vec at the start of an RTS call void init(void) { save_vec_addr = save_vec; } // Add a word to the save vec Handle push(PolyWord valu); // Mark a position Handle mark(void) { return save_vec_addr; } // Reset to the mark void reset(Handle mark); bool isValidHandle(Handle h) { return h >= save_vec && h < save_vec_addr; } // Check it is in the range. // Called by the garbage collector to scan and then update the addresses in the // vector. void gcScan(ScanAddress *process); private: SaveVecEntry *save_vec; SaveVecEntry *save_vec_addr; }; #endif polyml-5.7.1/libpolyml/osmem.cpp0000644000175000017500000001353513204034553015635 0ustar daviddavid/* Title: osomem.cpp - Interface to OS memory management Copyright (c) 2006 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_MMAN_H #include #endif #include "osmem.h" // Linux prefers MAP_ANONYMOUS to MAP_ANON #ifndef MAP_ANON #ifdef MAP_ANONYMOUS #define MAP_ANON MAP_ANONYMOUS #endif #endif #if defined(HAVE_MMAP) && defined(MAP_ANON) // We don't use autoconf's test for mmap here because that tests for // file mapping. Instead the test simply tests for the presence of an mmap // function. // We also insist that the OS supports MAP_ANON or MAP_ANONYMOUS. Older // versions of Solaris required the use of /dev/zero instead. We don't // support that. #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif // How do we get the page size? #ifndef HAVE_GETPAGESIZE #ifdef _SC_PAGESIZE #define getpagesize() sysconf(_SC_PAGESIZE) #else // If this fails we're stuck #define getpagesize() PAGESIZE #endif #endif static int ConvertPermissions(unsigned perm) { int res = 0; if (perm & PERMISSION_READ) res |= PROT_READ; if (perm & PERMISSION_WRITE) res |= PROT_WRITE; if (perm & PERMISSION_EXEC) res |= PROT_EXEC; return res; } // Allocate space and return a pointer to it. The size is the minimum // size requested and it is updated with the actual space allocated. // Returns NULL if it cannot allocate the space. void *OSMem::Allocate(size_t &space, unsigned permissions) { int prot = ConvertPermissions(permissions); // Round up to an integral number of pages. int pageSize = getpagesize(); space = (space + pageSize-1) & ~(pageSize-1); int fd = -1; // This value is required by FreeBSD. Linux doesn't care void *result = mmap(0, space, prot, MAP_PRIVATE|MAP_ANON, fd, 0); // Convert MAP_FAILED (-1) into NULL if (result == MAP_FAILED) return 0; return result; } #ifdef SOLARIS #define FIXTYPE (caddr_t) #else #define FIXTYPE #endif // Release the space previously allocated. This must free the whole of // the segment. The space must be the size actually allocated. bool OSMem::Free(void *p, size_t space) { return munmap(FIXTYPE p, space) == 0; } // Adjust the permissions on a segment. This must apply to the // whole of a segment. bool OSMem::SetPermissions(void *p, size_t space, unsigned permissions) { int res = mprotect(FIXTYPE p, space, ConvertPermissions(permissions)); return res != -1; } #elif defined(_WIN32) // Use Windows memory management. #include static int ConvertPermissions(unsigned perm) { if (perm & PERMISSION_WRITE) { // Write. Always includes read permission. if (perm & PERMISSION_EXEC) return PAGE_EXECUTE_READWRITE; else return PAGE_READWRITE; } else if (perm & PERMISSION_EXEC) { // Execute but not write. if (perm & PERMISSION_READ) return PAGE_EXECUTE_READ; else return PAGE_EXECUTE; // Execute only } else if(perm & PERMISSION_READ) return PAGE_READONLY; else return PAGE_NOACCESS; } // Allocate space and return a pointer to it. The size is the minimum // size requested and it is updated with the actual space allocated. // Returns NULL if it cannot allocate the space. void *OSMem::Allocate(size_t &space, unsigned permissions) { // Get the page size and round up to that multiple. SYSTEM_INFO sysInfo; GetSystemInfo(&sysInfo); // Get the page size. Put it in a size_t variable otherwise the rounding // up of "space" may go wrong on 64-bits. size_t pageSize = sysInfo.dwPageSize; space = (space + pageSize-1) & ~(pageSize-1); return VirtualAlloc(0, space, MEM_RESERVE|MEM_COMMIT, ConvertPermissions(permissions)); } // Release the space previously allocated. This must free the whole of // the segment. The space must be the size actually allocated. bool OSMem::Free(void *p, size_t space) { return VirtualFree(p, 0, MEM_RELEASE) == TRUE; } // Adjust the permissions on a segment. This must apply to the // whole of a segment. bool OSMem::SetPermissions(void *p, size_t space, unsigned permissions) { DWORD oldProtect; return VirtualProtect(p, space, ConvertPermissions(permissions), &oldProtect) == TRUE; } #else #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_MALLOC_H #include #endif // Use calloc to allocate the memory. Using calloc ensures the memory is // zeroed and is compatible with the other allocators. void *OSMem::Allocate(size_t &bytes, unsigned permissions) { return calloc(bytes, 1); } bool OSMem::Free(void *p, size_t/*space*/) { free(p); return true; } // We can't do this if we don't have mprotect. bool OSMem::SetPermissions(void *p, size_t space, unsigned permissions) { return true; // Let's hope this is all right. } #endif // Create the global object for the memory manager. static OSMem osmemMan; OSMem *osMemoryManager = &osmemMan; polyml-5.7.1/libpolyml/x86_dep.cpp0000644000175000017500000014041613204034553015771 0ustar daviddavid/* Title: Machine dependent code for i386 and X64 under Windows and Unix Copyright (c) 2000-7 Cambridge University Technical Services Limited Further work copyright David C. J. Matthews 2011-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_STDLIB_H #include #endif #include #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #if (defined(_WIN32)) #include #include #endif #include "globals.h" #include "run_time.h" #include "mpoly.h" #include "arb.h" #include "diagnostics.h" #include "processes.h" #include "sys.h" #include "profiling.h" #include "sighandler.h" #include "machine_dep.h" #include "scanaddrs.h" #include "gc.h" #include "check_objects.h" #include "save_vec.h" #include "memmgr.h" #include "reals.h" #include "polystring.h" #include "xwindows.h" #include "objsize.h" #include "foreign.h" #include "process_env.h" #include "basicio.h" #include "network.h" #include "os_specific.h" #include "poly_specific.h" #include "timing.h" #include "polyffi.h" #include "rtsentry.h" /********************************************************************** * * Register usage: * * %Reax: First argument to function. Result of function call. * %Rebx: Second argument to function. * %Recx: General register * %Redx: Closure pointer in call. * %Rebp: Points to memory used for extra registers * %Resi: General register. * %Redi: General register. * %Resp: Stack pointer. * The following apply only on the X64 * %R8: Third argument to function * %R9: Fourth argument to function * %R10: Fifth argument to function * %R11: General register * %R12: General register * %R13: General register * %R14: General register * %R15: Memory allocation pointer * **********************************************************************/ #ifdef HOSTARCHITECTURE_X86_64 struct fpSaveArea { double fpregister[7]; // Save area for xmm0-6 }; #else // Structure of floating point save area. // This is dictated by the hardware. typedef byte fpregister[10]; struct fpSaveArea { unsigned short cw; unsigned short _unused0; unsigned short sw; unsigned short _unused1; unsigned short tw; unsigned short _unused2; unsigned fip; unsigned short fcs0; unsigned short _unused3; unsigned foo; unsigned short fcs1; unsigned short _unused4; fpregister registers[8]; }; #endif /* the amount of ML stack space to reserve for registers, C exception handling etc. The compiler requires us to reserve 2 stack-frames worth (2 * 20 words). We actually reserve slightly more than this. */ #if (!defined(_WIN32) && !defined(HAVE_SIGALTSTACK)) // If we can't handle signals on a separate stack make sure there's space // on the Poly stack. #define OVERFLOW_STACK_SIZE (50+1024) #else #define OVERFLOW_STACK_SIZE 50 #endif class X86TaskData; // This is passed as the argument vector to X86AsmSwitchToPoly. // The offsets are built into the assembly code and the code-generator. // localMpointer and stackPtr are updated before control returns to C. typedef struct _AssemblyArgs { PolyWord *localMpointer; // Allocation ptr + 1 word PolyWord *handlerRegister; // Current exception handler PolyWord *localMbottom; // Base of memory + 1 word PolyWord *stackLimit; // Lower limit of stack PolyWord exceptionPacket; // Set if there is an exception byte unusedRequestCode; // No longer used. byte unusedFlag; // No longer used byte returnReason; // Reason for returning from ML. byte unusedRestore; // No longer used. POLYUNSIGNED saveCStack; // Saved C stack frame. PolyObject *threadId; // My thread id. Saves having to call into RTS for it. PolyWord *stackPtr; // Current stack pointer POLYCODEPTR unusedProgramCtr; byte *heapOverFlowCall; // These are filled in with the functions. byte *stackOverFlowCall; byte *stackOverFlowCallEx; // Saved registers, where applicable. PolyWord p_rax; PolyWord p_rbx; PolyWord p_rcx; PolyWord p_rdx; PolyWord p_rsi; PolyWord p_rdi; #ifdef HOSTARCHITECTURE_X86_64 PolyWord p_r8; PolyWord p_r9; PolyWord p_r10; PolyWord p_r11; PolyWord p_r12; PolyWord p_r13; PolyWord p_r14; #endif struct fpSaveArea p_fp; } AssemblyArgs; class X86TaskData: public TaskData { public: X86TaskData(); unsigned allocReg; // The register to take the allocated space. POLYUNSIGNED allocWords; // The words to allocate. Handle callBackResult; AssemblyArgs assemblyInterface; int saveRegisterMask; // Registers that need to be updated by a GC. virtual void GarbageCollect(ScanAddress *process); void ScanStackAddress(ScanAddress *process, PolyWord *pt, StackSpace *stack); virtual Handle EnterPolyCode(); // Start running ML virtual void InterruptCode(); virtual bool AddTimeProfileCount(SIGNALCONTEXT *context); virtual void InitStackFrame(TaskData *parentTask, Handle proc, Handle arg); virtual void SetException(poly_exn *exc); // Release a mutex in exactly the same way as compiler code virtual Handle AtomicIncrement(Handle mutexp); virtual void AtomicReset(Handle mutexp); // Return the minimum space occupied by the stack. Used when setting a limit. virtual POLYUNSIGNED currentStackSpace(void) const { return (this->stack->top - assemblyInterface.stackPtr) + OVERFLOW_STACK_SIZE; } // Increment the profile count for an allocation. Also now used for mutex contention. virtual void addProfileCount(POLYUNSIGNED words) { add_count(this, assemblyInterface.stackPtr[0].AsCodePtr(), words); } // PreRTSCall: After calling from ML to the RTS we need to save the current heap pointer virtual void PreRTSCall(void) { SaveMemRegisters(); } // PostRTSCall: Before returning we need to restore the heap pointer. // If there has been a GC in the RTS call we need to create a new heap area. virtual void PostRTSCall(void) { SetMemRegisters(); } virtual void CopyStackFrame(StackObject *old_stack, POLYUNSIGNED old_length, StackObject *new_stack, POLYUNSIGNED new_length); virtual Handle EnterCallbackFunction(Handle func, Handle args); int SwitchToPoly(); void HeapOverflowTrap(byte *pcPtr); void SetMemRegisters(); void SaveMemRegisters(); void SetRegisterMask(); PLock interruptLock; PolyWord *get_reg(int n); PolyWord *®SP() { return assemblyInterface.stackPtr; } PolyWord ®AX() { return assemblyInterface.p_rax; } PolyWord ®BX() { return assemblyInterface.p_rbx; } PolyWord ®CX() { return assemblyInterface.p_rcx; } PolyWord ®DX() { return assemblyInterface.p_rdx; } PolyWord ®SI() { return assemblyInterface.p_rsi; } PolyWord ®DI() { return assemblyInterface.p_rdi; } #ifdef HOSTARCHITECTURE_X86_64 PolyWord ®8() { return assemblyInterface.p_r8; } PolyWord ®9() { return assemblyInterface.p_r9; } PolyWord ®10() { return assemblyInterface.p_r10; } PolyWord ®11() { return assemblyInterface.p_r11; } PolyWord ®12() { return assemblyInterface.p_r12; } PolyWord ®13() { return assemblyInterface.p_r13; } PolyWord ®14() { return assemblyInterface.p_r14; } #endif #if (defined(_WIN32) && !defined(__CYGWIN__)) DWORD savedErrno; #else int savedErrno; #endif }; class X86Dependent: public MachineDependent { public: X86Dependent() {} // Create a task data object. virtual TaskData *CreateTaskData(void) { return new X86TaskData(); } virtual unsigned InitialStackSize(void) { return 128+OVERFLOW_STACK_SIZE; } // Initial size of a stack virtual void ScanConstantsWithinCode(PolyObject *addr, PolyObject *oldAddr, POLYUNSIGNED length, ScanAddress *process); virtual Architectures MachineArchitecture(void) #ifndef HOSTARCHITECTURE_X86_64 { return MA_I386; } #else /* HOSTARCHITECTURE_X86_64 */ { return MA_X86_64; } #endif /* HOSTARCHITECTURE_X86_64 */ }; // Values for the returnReason byte enum RETURN_REASON { RETURN_IO_CALL_NOW_UNUSED = 0, RETURN_HEAP_OVERFLOW = 1, RETURN_STACK_OVERFLOW = 2, RETURN_STACK_OVERFLOWEX = 3, RETURN_CALLBACK_RETURN = 6, RETURN_CALLBACK_EXCEPTION = 7, RETURN_KILL_SELF = 9 }; extern "C" { // These are declared in the assembly code segment. void X86AsmSwitchToPoly(void *); extern int X86AsmKillSelf(void); extern int X86AsmCallbackReturn(void); extern int X86AsmCallbackException(void); extern int X86AsmPopArgAndClosure(void); extern int X86AsmRaiseException(void); extern int X86AsmCallExtraRETURN_HEAP_OVERFLOW(void); extern int X86AsmCallExtraRETURN_STACK_OVERFLOW(void); extern int X86AsmCallExtraRETURN_STACK_OVERFLOWEX(void); POLYUNSIGNED X86AsmAtomicIncrement(PolyObject*); POLYUNSIGNED X86AsmAtomicDecrement(PolyObject*); }; extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolySetCodeConstant(byte *pointer, PolyWord offset, PolyWord c, PolyWord flags); } X86TaskData::X86TaskData(): allocReg(0), allocWords(0), saveRegisterMask(0) { assemblyInterface.heapOverFlowCall = (byte*)X86AsmCallExtraRETURN_HEAP_OVERFLOW; assemblyInterface.stackOverFlowCall = (byte*)X86AsmCallExtraRETURN_STACK_OVERFLOW; assemblyInterface.stackOverFlowCallEx = (byte*)X86AsmCallExtraRETURN_STACK_OVERFLOWEX; savedErrno = 0; } void X86TaskData::GarbageCollect(ScanAddress *process) { TaskData::GarbageCollect(process); // Process the parent first assemblyInterface.threadId = threadObject; if (stack != 0) { // Now the values on the stack. for (PolyWord *q = assemblyInterface.stackPtr; q < stack->top; q++) ScanStackAddress(process, q, stack); } // Register mask for (int i = 0; i < 16; i++) { if (saveRegisterMask & (1 << i)) ScanStackAddress(process, get_reg(i), stack); } } // Process a value within the stack. void X86TaskData::ScanStackAddress(ScanAddress *process, PolyWord *pt, StackSpace *stack) { // We may have return addresses on the stack which could look like // tagged values. Check whether the value is in the code area before // checking whether it is untagged. // The -1 here is because we may have a zero-sized cell in the last // word of a space. MemSpace *space = gMem.SpaceForAddress(pt->AsCodePtr()-1); if (space == 0) return; if (space->spaceType == ST_CODE) { PolyObject *obj = gMem.FindCodeObject(pt->AsCodePtr()); // If it is actually an integer it might be outside a valid code object. if (obj == 0) { ASSERT(pt->IsTagged()); // It must be an integer } else // Process the address of the start. Don't update anything. process->ScanObjectAddress(obj); } else if (space->spaceType == ST_LOCAL && pt->IsDataPtr()) // Local values must be word addresses. *pt = process->ScanObjectAddress(pt->AsObjPtr()); } // Copy a stack void X86TaskData::CopyStackFrame(StackObject *old_stack, POLYUNSIGNED old_length, StackObject *new_stack, POLYUNSIGNED new_length) { /* Moves a stack, updating all references within the stack */ PolyWord *old_base = (PolyWord *)old_stack; PolyWord *new_base = (PolyWord*)new_stack; PolyWord *old_top = old_base + old_length; /* Calculate the offset of the new stack from the old. If the frame is being extended objects in the new frame will be further up the stack than in the old one. */ POLYSIGNED offset = new_base - old_base + new_length - old_length; PolyWord *oldStackPtr = assemblyInterface.stackPtr; // Adjust the stack pointer and handler pointer since these point into the stack. assemblyInterface.stackPtr = assemblyInterface.stackPtr + offset; assemblyInterface.handlerRegister = assemblyInterface.handlerRegister + offset; // We need to adjust any values on the stack that are pointers within the stack. // Skip the unused part of the stack. POLYUNSIGNED i = oldStackPtr - old_base; ASSERT (i <= old_length); i = old_length - i; PolyWord *old = oldStackPtr; PolyWord *newp= assemblyInterface.stackPtr; while (i--) { PolyWord old_word = *old++; if (old_word.IsTagged() || old_word.AsStackAddr() < old_base || old_word.AsStackAddr() >= old_top) *newp++ = old_word; else *newp++ = PolyWord::FromStackAddr(old_word.AsStackAddr() + offset); } ASSERT(old == ((PolyWord*)old_stack)+old_length); ASSERT(newp == ((PolyWord*)new_stack)+new_length); // And change any registers that pointed into the old stack for (int j = 0; j < 16; j++) { if (saveRegisterMask & (1 << j)) { PolyWord *regAddr = get_reg(j); PolyWord addr = *regAddr; if (! addr.IsTagged() && addr.AsStackAddr() >= old_base && addr.AsStackAddr() < old_top) *regAddr = PolyWord::FromStackAddr(addr.AsStackAddr() + offset); } } } // Set code constant. This can be a fast call. The only reason it is in the RTS is // to ensure that there is no possibility of a GC while the individual bytes are being // copied. // At the moment this assumes we're dealing with a 32-bit constant on a 32-bit machine // and a 64-bit constant on a 64-bit machine. POLYUNSIGNED PolySetCodeConstant(byte *pointer, PolyWord offset, PolyWord cWord, PolyWord flags) { POLYUNSIGNED c = cWord.AsUnsigned(); // pointer is the start of the code segment. // c will usually be an address. // offset is a byte offset pointer += offset.UnTaggedUnsigned(); if (flags == TAGGED(1)) c -= (POLYUNSIGNED)(pointer + sizeof(PolyWord)); // Relative address. Relative to AFTER the pointer. // Store the value into the code. It can be on an arbitrary alignment. for (unsigned i = 0; i < sizeof(PolyWord); i++) { pointer[i] = (byte)(c & 255); c >>= 8; } return TAGGED(0).AsUnsigned(); } Handle X86TaskData::EnterPolyCode() /* Called from "main" to enter the code. */ { Handle hOriginal = this->saveVec.mark(); // Set this up for the IO calls. while (1) { this->saveVec.reset(hOriginal); // Remove old RTS arguments and results. // Run the ML code and return with the function to call. this->inML = true; int ioFunction = SwitchToPoly(); this->inML = false; try { switch (ioFunction) { case -1: // We've been interrupted. This usually involves simulating a // stack overflow so we could come here because of a genuine // stack overflow. // Previously this code was executed on every RTS call but there // were problems on Mac OS X at least with contention on schedLock. // Process any asynchronous events i.e. interrupts or kill processes->ProcessAsynchRequests(this); // Release and re-acquire use of the ML memory to allow another thread // to GC. processes->ThreadReleaseMLMemory(this); processes->ThreadUseMLMemory(this); break; case -2: // A callback has returned. return callBackResult; // Return the saved value. Not used in the new interface. default: Crash("Unknown io operation %d\n", ioFunction); } } catch (IOException &) { } } } // Run the current ML process. X86AsmSwitchToPoly saves the C state so that // whenever the ML requires assistance from the rest of the RTS it simply // returns to C with the appropriate values set in assemblyInterface.requestCode and // int X86TaskData::SwitchToPoly() // (Re)-enter the Poly code from C. Returns with the io function to call or // -1 if we are responding to an interrupt. { Handle mark = this->saveVec.mark(); do { this->saveVec.reset(mark); // Remove old data e.g. from arbitrary precision. SetMemRegisters(); // We need to save the C stack entry across this call in case // we're making a callback and the previous C stack entry is // for the original call. POLYUNSIGNED savedCStack = this->assemblyInterface.saveCStack; // Restore the saved error state. #if (defined(_WIN32) && !defined(__CYGWIN__)) SetLastError(savedErrno); #else errno = savedErrno; #endif // Enter the ML code. X86AsmSwitchToPoly(&this->assemblyInterface); this->assemblyInterface.saveCStack = savedCStack; // Save the error codes. We may have made an RTS/FFI call that // has set these and we don't want to do anything to change them. #if (defined(_WIN32) && !defined(__CYGWIN__)) savedErrno = GetLastError(); #else savedErrno = errno; #endif SaveMemRegisters(); // Update globals from the memory registers. // Handle any heap/stack overflows or arbitrary precision traps. switch (this->assemblyInterface.returnReason) { case RETURN_HEAP_OVERFLOW: // The heap has overflowed. SetRegisterMask(); this->HeapOverflowTrap(assemblyInterface.stackPtr[0].AsCodePtr()); // Computes a value for allocWords only break; case RETURN_STACK_OVERFLOW: case RETURN_STACK_OVERFLOWEX: { SetRegisterMask(); POLYUNSIGNED min_size; if (assemblyInterface.returnReason == RETURN_STACK_OVERFLOW) { min_size = this->stack->top - assemblyInterface.stackPtr + OVERFLOW_STACK_SIZE; } else { // Stack limit overflow. If the required stack space is larger than // the fixed overflow size the code will calculate the limit in %EDI. PolyWord *stackP = regDI().AsStackAddr(); min_size = this->stack->top - stackP + OVERFLOW_STACK_SIZE; } try { // The stack check has failed. This may either be because we really have // overflowed the stack or because the stack limit value has been adjusted // to result in a call here. CheckAndGrowStack(this, min_size); } catch (IOException &) { // We may get an exception while handling this if we run out of store } { PLocker l(&interruptLock); // Set the stack limit. This clears any interrupt and also sets the // correct value if we've grown the stack. this->assemblyInterface.stackLimit = this->stack->bottom + OVERFLOW_STACK_SIZE; } return -1; // We're in a safe state to handle any interrupts. } case RETURN_CALLBACK_RETURN: // Remove the extra exception handler we created in EnterCallbackFunction ASSERT(assemblyInterface.handlerRegister == regSP()); regSP() += 1; assemblyInterface.handlerRegister = (*(regSP()++)).AsStackAddr(); // Restore the previous handler. this->callBackResult = this->saveVec.push(regAX()); // Argument to return is in RAX. return -2; case RETURN_CALLBACK_EXCEPTION: // An ML callback has raised an exception. // It isn't possible to do anything here except abort. Crash("An ML function called from foreign code raised an exception. Unable to continue."); case RETURN_KILL_SELF: exitThread(this); default: Crash("Unknown return reason code %u", this->assemblyInterface.returnReason); } } while (1); } void X86TaskData::InitStackFrame(TaskData *parentTaskData, Handle proc, Handle arg) /* Initialise stack frame. */ { StackSpace *space = this->stack; StackObject * newStack = space->stack(); POLYUNSIGNED stack_size = space->spaceSize(); POLYUNSIGNED topStack = stack_size-6; assemblyInterface.stackPtr = (PolyWord*)newStack+topStack; assemblyInterface.stackLimit = space->bottom + OVERFLOW_STACK_SIZE; assemblyInterface.handlerRegister = (PolyWord*)newStack+topStack+4; // Floating point save area. memset(&assemblyInterface.p_fp, 0, sizeof(struct fpSaveArea)); #ifndef HOSTARCHITECTURE_X86_64 // Set the control word for 64-bit precision otherwise we get inconsistent results. assemblyInterface.p_fp.cw = 0x027f ; // Control word assemblyInterface.p_fp.tw = 0xffff; // Tag registers - all unused #endif // Initial entry point - on the stack. ((PolyWord*)newStack)[topStack] = PolyWord::FromCodePtr((byte*)&X86AsmPopArgAndClosure); // Push the argument and the closure on the stack. We can't put them into the registers // yet because we might get a GC before we actually start the code. ((PolyWord*)newStack)[topStack+1] = DEREFWORDHANDLE(proc); // Closure ((PolyWord*)newStack)[topStack+2] = (arg == 0) ? TAGGED(0) : DEREFWORD(arg); // Argument /* We initialise the end of the stack with a sequence that will jump to kill_self whether the process ends with a normal return or by raising an exception. A bit of this was added to fix a bug when stacks were objects on the heap and could be scanned by the GC. */ ((PolyWord*)newStack)[topStack+5] = TAGGED(0); // Probably no longer needed // Set the default handler and return address to point to this code. PolyWord killJump(PolyWord::FromCodePtr((byte*)&X86AsmKillSelf)); // Exception handler. ((PolyWord*)newStack)[topStack+4] = killJump; // Normal return address. We need a separate entry on the stack from // the exception handler because it is possible that the code we are entering // may replace this entry with an argument. The code-generator optimises tail-recursive // calls to functions with more args than the called function. ((PolyWord*)newStack)[topStack+3] = killJump; } // In Solaris-x86 the registers are named EIP and ESP. #if (!defined(REG_EIP) && defined(EIP)) #define REG_EIP EIP #endif #if (!defined(REG_ESP) && defined(ESP)) #define REG_ESP ESP #endif // Get the PC and SP(stack) from a signal context. This is needed for profiling. // This version gets the actual sp and pc if we are in ML. bool X86TaskData::AddTimeProfileCount(SIGNALCONTEXT *context) { PolyWord * sp = 0; POLYCODEPTR pc = 0; if (context != 0) { // The tests for HAVE_UCONTEXT_T, HAVE_STRUCT_SIGCONTEXT and HAVE_WINDOWS_H need // to follow the tests in processes.h. #if defined(HAVE_WINDOWS_H) #ifdef _WIN64 sp = (PolyWord *)context->Rsp; pc = (POLYCODEPTR)context->Rip; #else // Windows 32 including cygwin. sp = (PolyWord *)context->Esp; pc = (POLYCODEPTR)context->Eip; #endif #elif defined(HAVE_UCONTEXT_T) #ifdef HAVE_MCONTEXT_T_GREGS // Linux #ifndef HOSTARCHITECTURE_X86_64 pc = (byte*)context->uc_mcontext.gregs[REG_EIP]; sp = (PolyWord*)context->uc_mcontext.gregs[REG_ESP]; #else /* HOSTARCHITECTURE_X86_64 */ pc = (byte*)context->uc_mcontext.gregs[REG_RIP]; sp = (PolyWord*)context->uc_mcontext.gregs[REG_RSP]; #endif /* HOSTARCHITECTURE_X86_64 */ #elif defined(HAVE_MCONTEXT_T_MC_ESP) // FreeBSD #ifndef HOSTARCHITECTURE_X86_64 pc = (byte*)context->uc_mcontext.mc_eip; sp = (PolyWord*)context->uc_mcontext.mc_esp; #else /* HOSTARCHITECTURE_X86_64 */ pc = (byte*)context->uc_mcontext.mc_rip; sp = (PolyWord*)context->uc_mcontext.mc_rsp; #endif /* HOSTARCHITECTURE_X86_64 */ #else // Mac OS X #ifndef HOSTARCHITECTURE_X86_64 #if(defined(HAVE_STRUCT_MCONTEXT_SS)||defined(HAVE_STRUCT___DARWIN_MCONTEXT32_SS)) pc = (byte*)context->uc_mcontext->ss.eip; sp = (PolyWord*)context->uc_mcontext->ss.esp; #elif(defined(HAVE_STRUCT___DARWIN_MCONTEXT32___SS)) pc = (byte*)context->uc_mcontext->__ss.__eip; sp = (PolyWord*)context->uc_mcontext->__ss.__esp; #endif #else /* HOSTARCHITECTURE_X86_64 */ #if(defined(HAVE_STRUCT_MCONTEXT_SS)||defined(HAVE_STRUCT___DARWIN_MCONTEXT64_SS)) pc = (byte*)context->uc_mcontext->ss.rip; sp = (PolyWord*)context->uc_mcontext->ss.rsp; #elif(defined(HAVE_STRUCT___DARWIN_MCONTEXT64___SS)) pc = (byte*)context->uc_mcontext->__ss.__rip; sp = (PolyWord*)context->uc_mcontext->__ss.__rsp; #endif #endif /* HOSTARCHITECTURE_X86_64 */ #endif #elif defined(HAVE_STRUCT_SIGCONTEXT) #if defined(HOSTARCHITECTURE_X86_64) && defined(__OpenBSD__) // CPP defines missing in amd64/signal.h in OpenBSD pc = (byte*)context->sc_rip; sp = (PolyWord*)context->sc_rsp; #else // !HOSTARCHITEXTURE_X86_64 || !defined(__OpenBSD__) pc = (byte*)context->sc_pc; sp = (PolyWord*)context->sc_sp; #endif #endif } if (pc != 0) { // See if the PC we've got is an ML code address. MemSpace *space = gMem.SpaceForAddress(pc); if (space != 0 && (space->spaceType == ST_CODE || space->spaceType == ST_PERMANENT)) { add_count(this, pc, 1); return true; } } // See if the sp value is in the current stack. if (sp >= this->stack->bottom && sp < this->stack->top) { // We may be in the assembly code. The top of the stack will be a return address. pc = sp[0].AsCodePtr(); MemSpace *space = gMem.SpaceForAddress(pc); if (space != 0 && (space->spaceType == ST_CODE || space->spaceType == ST_PERMANENT)) { add_count(this, pc, 1); return true; } } // See if the value of regSP is a valid stack pointer. // This works if we happen to be in an RTS call using a "Full" call. // It doesn't work if we've used a "Fast" call because that doesn't save the SP. sp = assemblyInterface.stackPtr; if (sp >= this->stack->bottom && sp < this->stack->top) { // We may be in the run-time system. pc = sp[0].AsCodePtr(); MemSpace *space = gMem.SpaceForAddress(pc); if (space != 0 && (space->spaceType == ST_CODE || space->spaceType == ST_PERMANENT)) { add_count(this, pc, 1); return true; } } // None of those worked return false; } // This is called from a different thread so we have to be careful. void X86TaskData::InterruptCode() { PLocker l(&interruptLock); // Set the stack limit pointer to the top of the stack to cause // a trap when we next check for stack overflow. // We use a lock here to ensure that we always use the current value of the // stack. The thread we're interrupting could be growing the stack at this point. if (this->stack != 0) this->assemblyInterface.stackLimit = this->stack->top-1; } // This is called from SwitchToPoly before we enter the ML code. void X86TaskData::SetMemRegisters() { // Copy the current store limits into variables before we go into the assembly code. // If we haven't yet set the allocation area or we don't have enough we need // to create one (or a new one). if (this->allocPointer <= this->allocLimit + this->allocWords) { if (this->allocPointer < this->allocLimit) Crash ("Bad length in heap overflow trap"); // Find some space to allocate in. Updates taskData->allocPointer and // returns a pointer to the newly allocated space (if allocWords != 0) PolyWord *space = processes->FindAllocationSpace(this, this->allocWords, true); if (space == 0) { // We will now raise an exception instead of returning. // Set allocWords to zero so we don't set the allocation register // since that could be holding the exception packet. this->allocWords = 0; } // Undo the allocation just now. this->allocPointer += this->allocWords; } if (this->allocWords != 0) { // If we have had a heap trap we actually do the allocation here. // We will have already garbage collected and recovered sufficient space. // This also happens if we have just trapped because of store profiling. this->allocPointer -= this->allocWords; // Now allocate // Set the allocation register to this area. if (this->allocReg < 15) *(get_reg(this->allocReg)) = PolyWord::FromStackAddr(this->allocPointer + 1); /* remember: it's off-by-one */ this->allocWords = 0; } // If we have run out of store, either just above or while allocating in the RTS, // allocPointer and allocLimit will have been set to zero as part of the GC. We will // now be raising an exception which may free some store but we need to come back here // before we allocate anything. The compiled code uses unsigned arithmetic to check for // heap overflow but only after subtracting the space required. We need to make sure // that the values are still non-negative after substracting any object size. if (this->allocPointer == 0) this->allocPointer += MAX_OBJECT_SIZE; if (this->allocLimit == 0) this->allocLimit += MAX_OBJECT_SIZE; this->assemblyInterface.localMbottom = this->allocLimit + 1; this->assemblyInterface.localMpointer = this->allocPointer + 1; // If we are profiling store allocation we set mem_hl so that a trap // will be generated. if (profileMode == kProfileStoreAllocation) this->assemblyInterface.localMbottom = this->assemblyInterface.localMpointer; this->assemblyInterface.returnReason = RETURN_IO_CALL_NOW_UNUSED; this->assemblyInterface.threadId = this->threadObject; } // This is called whenever we have returned from ML to C. void X86TaskData::SaveMemRegisters() { this->allocPointer = this->assemblyInterface.localMpointer - 1; this->allocWords = 0; this->assemblyInterface.exceptionPacket = TAGGED(0); this->saveRegisterMask = 0; } // Called on a GC or stack overflow trap. The register mask // is in the bytes after the trap call. void X86TaskData::SetRegisterMask() { byte *pc = assemblyInterface.stackPtr[0].AsCodePtr(); if (*pc == 0xcd) // CD - INT n is used for a single byte { pc++; saveRegisterMask = *pc++; } else if (*pc == 0xca) // CA - FAR RETURN is used for a two byte mask { pc++; saveRegisterMask = pc[0] | (pc[1] << 8); pc += 2; } assemblyInterface.stackPtr[0] = PolyWord::FromCodePtr(pc); } PolyWord *X86TaskData::get_reg(int n) /* Returns a pointer to the register given by n. */ { switch (n) { case 0: return &assemblyInterface.p_rax; case 1: return &assemblyInterface.p_rcx; case 2: return &assemblyInterface.p_rdx; case 3: return &assemblyInterface.p_rbx; // Should not have rsp or rbp. case 6: return &assemblyInterface.p_rsi; case 7: return &assemblyInterface.p_rdi; #ifdef HOSTARCHITECTURE_X86_64 case 8: return &assemblyInterface.p_r8; case 9: return &assemblyInterface.p_r9; case 10: return &assemblyInterface.p_r10; case 11: return &assemblyInterface.p_r11; case 12: return &assemblyInterface.p_r12; case 13: return &assemblyInterface.p_r13; case 14: return &assemblyInterface.p_r14; // R15 is the heap pointer so shouldn't occur here. #endif /* HOSTARCHITECTURE_X86_64 */ default: Crash("Unknown register %d\n", n); } } // Called as a result of a heap overflow trap void X86TaskData::HeapOverflowTrap(byte *pcPtr) { X86TaskData *mdTask = this; POLYUNSIGNED wordsNeeded = 0; // The next instruction, after any branches round forwarding pointers or pop // instructions, will be a store of register containing the adjusted heap pointer. // We need to find that register and the value in it in order to find out how big // the area we actually wanted is. N.B. The code-generator and assembly code // must generate the correct instruction sequence. // byte *pcPtr = assemblyInterface.programCtr; while (true) { if (pcPtr[0] == 0xeb) { // Forwarding pointer if (pcPtr[1] >= 128) pcPtr += 256 - pcPtr[1] + 2; else pcPtr += pcPtr[1] + 2; } else if ((pcPtr[0] & 0xf8) == 0x58) // Pop instruction. pcPtr++; else if (pcPtr[0] == 0x41 && ((pcPtr[1] & 0xf8) == 0x58)) // Pop with Rex prefix pcPtr += 2; else break; } #ifndef HOSTARCHITECTURE_X86_64 // This should be movl REG,0[%ebp]. ASSERT(pcPtr[0] == 0x89); mdTask->allocReg = (pcPtr[1] >> 3) & 7; // Remember this until we allocate the memory PolyWord *reg = get_reg(mdTask->allocReg); PolyWord reg_val = *reg; // The space we need is the difference between this register // and the current value of newptr. // The +1 here is because assemblyInterface.localMpointer is A.M.pointer +1. The reason // is that after the allocation we have the register pointing at the address we will // actually use. wordsNeeded = (this->allocPointer - (PolyWord*)reg_val.AsAddress()) + 1; *reg = TAGGED(0); // Clear this - it's not a valid address. /* length in words, including length word */ ASSERT (wordsNeeded <= (1<<24)); /* Max object size including length/flag word is 2^24 words. */ #else /* HOSTARCHITECTURE_X86_64 */ ASSERT(pcPtr[1] == 0x89 || pcPtr[1] == 0x8b); if (pcPtr[1] == 0x89) { // New (5.4) format. This should be movq REG,%r15 ASSERT(pcPtr[0] == 0x49 || pcPtr[0] == 0x4d); mdTask->allocReg = (pcPtr[2] >> 3) & 7; // Remember this until we allocate the memory if (pcPtr[0] & 0x4) mdTask->allocReg += 8; } else { // Alternative form of movq REG,%r15 ASSERT(pcPtr[0] == 0x4c || pcPtr[0] == 0x4d); mdTask->allocReg = pcPtr[2] & 7; // Remember this until we allocate the memory if (pcPtr[0] & 0x1) mdTask->allocReg += 8; } PolyWord *reg = get_reg(this->allocReg); PolyWord reg_val = *reg; wordsNeeded = (this->allocPointer - (PolyWord*)reg_val.AsAddress()) + 1; *reg = TAGGED(0); // Clear this - it's not a valid address. #endif /* HOSTARCHITECTURE_X86_64 */ if (profileMode == kProfileStoreAllocation) addProfileCount(wordsNeeded); mdTask->allocWords = wordsNeeded; // The actual allocation is done in SetMemRegisters. } void X86TaskData::SetException(poly_exn *exc) // Set up the stack to raise an exception. { // Do we need to set the PC value any longer? It may be necessary if // we have taken a trap because another thread has sent a broadcast interrupt. *(--assemblyInterface.stackPtr) = PolyWord::FromCodePtr((byte*)X86AsmRaiseException); regAX() = exc; /* put exception data into eax */ assemblyInterface.exceptionPacket = exc; // Set for direct calls. } // Sets up a callback function on the current stack. The present state is that // the ML code has made a call in to foreign_dispatch. We need to set the stack // up so that we will enter the callback (as with CallCodeTupled) but when we return // the result we enter callback_return. Handle X86TaskData::EnterCallbackFunction(Handle func, Handle args) { // If we ever implement a light version of the FFI that allows a call to C // code without saving enough to allow allocation in C code we need to ensure // that this code doesn't do any allocation. Essentially we need the values // in localMpointer and localMbottom to be valid across a call to C. If we do // a callback the ML callback function would pick up the values saved in the // originating call. // Set up an exception handler so we will enter callBackException if there is an exception. *(--regSP()) = PolyWord::FromStackAddr(assemblyInterface.handlerRegister); // Create a special handler entry *(--regSP()) = PolyWord::FromCodePtr((byte*)&X86AsmCallbackException); assemblyInterface.handlerRegister = regSP(); // Push the call to callBackReturn onto the stack as the return address. *(--regSP()) = PolyWord::FromCodePtr((byte*)&X86AsmCallbackReturn); // Set up the entry point of the callback. PolyObject *functToCall = func->WordP(); regDX() = functToCall; // Closure address regAX() = args->Word(); // Push entry point address *(--regSP()) = functToCall->Get(0); // First word of closure is entry pt. return EnterPolyCode(); } // Decode and process an effective address. There may // be a constant address in here but in any case we need // to decode it to work out where the next instruction starts. // If this is an lea instruction any addresses are just constants // so must not be treated as addresses. static void skipea(PolyObject *base, byte **pt, ScanAddress *process, bool lea) { unsigned int modrm = *((*pt)++); unsigned int md = modrm >> 6; unsigned int rm = modrm & 7; if (md == 3) { } /* Register. */ else if (rm == 4) { /* s-i-b present. */ unsigned int sib = *((*pt)++); if (md == 0) { if ((sib & 7) == 5) { if (! lea) { #ifndef HOSTARCHITECTURE_X86_64 process->ScanConstant(base, *pt, PROCESS_RELOC_DIRECT); #endif /* HOSTARCHITECTURE_X86_64 */ } (*pt) += 4; } } else if (md == 1) (*pt)++; else if (md == 2) (*pt) += 4; } else if (md == 0 && rm == 5) { if (!lea) { #ifndef HOSTARCHITECTURE_X86_64 /* Absolute address. */ process->ScanConstant(base, *pt, PROCESS_RELOC_DIRECT); #endif /* HOSTARCHITECTURE_X86_64 */ } *pt += 4; } else { if (md == 1) *pt += 1; else if (md == 2) *pt += 4; } } /* Added to deal with constants within the code rather than in the constant area. The constant area is still needed for the function name. DCJM 2/1/2001 */ void X86Dependent::ScanConstantsWithinCode(PolyObject *addr, PolyObject *old, POLYUNSIGNED length, ScanAddress *process) { byte *pt = (byte*)addr; PolyWord *end = addr->Offset(length - 1); while (true) { // Escape prefixes come before any Rex byte if (*pt == 0xf2 || *pt == 0xf3 || *pt == 0x66) pt++; #ifdef HOSTARCHITECTURE_X86_64 // REX prefixes. Set this first. byte lastRex; if (*pt >= 0x40 && *pt <= 0x4f) lastRex = *pt++; else lastRex = 0; //printf("pt=%p *pt=%x\n", pt, *pt); #endif /* HOSTARCHITECTURE_X86_64 */ switch (*pt) { case 0x00: return; // This is actually the first byte of the old "marker" word. case 0xf4: return; // Halt - now used as a marker. case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: /* Push */ case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5c: case 0x5d: case 0x5e: case 0x5f: /* Pop */ case 0x90: /* nop */ case 0xc3: /* ret */ case 0xf9: /* stc */ case 0xce: /* into */ case 0xf0: /* lock. */ case 0xf3: /* rep/repe */ case 0xa4: case 0xa5: case 0xaa: case 0xab: /* movs/stos */ case 0xa6: /* cmpsb */ case 0x9e: /* sahf */ case 0x99: /* cqo/cdq */ pt++; break; case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: case 0xeb: /* short jumps. */ case 0xcd: /* INT - now used for a register mask */ case 0xa8: /* TEST_ACC8 */ case 0x6a: /* PUSH_8 */ pt += 2; break; case 0xc2: /* RET_16 */ case 0xca: /* FAR RET 16 - used for a register mask */ pt += 3; break; case 0x8d: /* leal. */ pt++; skipea(addr, &pt, process, true); break; case 0x03: case 0x0b: case 0x13: case 0x1b: case 0x23: case 0x2b: case 0x33: case 0x3b: /* Add r,ea etc. */ case 0x88: /* MOVB_R_A */ case 0x89: /* MOVL_R_A */ case 0x8b: /* MOVL_A_R */ case 0x62: /* BOUNDL */ case 0xff: /* Group5 */ case 0xd1: /* Group2_1_A */ case 0x8f: /* POP_A */ case 0xd3: /* Group2_CL_A */ case 0x87: // XCHNG pt++; skipea(addr, &pt, process, false); break; case 0xf6: /* Group3_a */ { int isTest = 0; pt++; /* The test instruction has an immediate operand. */ if ((*pt & 0x38) == 0) isTest = 1; skipea(addr, &pt, process, false); if (isTest) pt++; break; } case 0xf7: /* Group3_A */ { int isTest = 0; pt++; /* The test instruction has an immediate operand. */ if ((*pt & 0x38) == 0) isTest = 1; skipea(addr, &pt, process, false); if (isTest) pt += 4; break; } case 0xc1: /* Group2_8_A */ case 0xc6: /* MOVB_8_A */ case 0x83: /* Group1_8_A */ case 0x80: /* Group1_8_a */ case 0x6b: // IMUL Ev,Ib pt++; skipea(addr, &pt, process, false); pt++; break; case 0x69: // IMUL Ev,Iv pt++; skipea(addr, &pt, process, false); pt += 4; break; case 0x81: /* Group1_32_A */ { pt ++; #ifndef HOSTARCHITECTURE_X86_64 unsigned opCode = *pt; #endif /* HOSTARCHITECTURE_X86_64 */ skipea(addr, &pt, process, false); // Only check the 32 bit constant if this is a comparison. // For other operations this may be untagged and shouldn't be an address. #ifndef HOSTARCHITECTURE_X86_64 if ((opCode & 0x38) == 0x38) process->ScanConstant(addr, pt, PROCESS_RELOC_DIRECT); #endif /* HOSTARCHITECTURE_X86_64 */ pt += 4; break; } case 0xe8: case 0xe9: // Long jump and call. These are used to call constant (known) functions // and also long jumps within the function. { pt++; POLYSIGNED disp = (pt[3] & 0x80) ? -1 : 0; // Set the sign just in case. for(unsigned i = 4; i > 0; i--) disp = (disp << 8) | pt[i-1]; byte *absAddr = pt + disp + 4; // The address is relative to AFTER the constant // If the new address is within the current piece of code we don't do anything if (absAddr >= (byte*)addr && absAddr < (byte*)end) {} else { #ifdef HOSTARCHITECTURE_X86_64 ASSERT(sizeof(PolyWord) == 4); // Should only be used internally on x64 #endif /* HOSTARCHITECTURE_X86_64 */ if (addr != old) { // The old value of the displacement was relative to the old address before // we copied this code segment. // We have to correct it back to the original address. absAddr = absAddr - (byte*)addr + (byte*)old; // We have to correct the displacement for the new location and store // that away before we call ScanConstant. POLYSIGNED newDisp = absAddr - pt - 4; for (unsigned i = 0; i < 4; i++) { pt[i] = (byte)(newDisp & 0xff); newDisp >>= 8; } } process->ScanConstant(addr, pt, PROCESS_RELOC_I386RELATIVE); } pt += 4; break; } case 0xc7:/* MOVL_32_A */ { pt++; if ((*pt & 0xc0) == 0x40 /* Byte offset or sib present */ && ((*pt & 7) != 4) /* But not sib present */ && pt[1] == 256-sizeof(PolyWord)) { /* We may use a move instruction to set the length word on a new segment. We mustn't try to treat this as a constant. */ pt += 6; /* Skip the modrm byte, the offset and the constant. */ } else { skipea(addr, &pt, process, false); #ifndef HOSTARCHITECTURE_X86_64 process->ScanConstant(addr, pt, PROCESS_RELOC_DIRECT); #endif /* HOSTARCHITECTURE_X86_64 */ pt += 4; } break; } case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf: /* MOVL_32_64_R */ pt ++; #ifdef HOSTARCHITECTURE_X86_64 if ((lastRex & 8) == 0) pt += 4; // 32-bit mode on 64-bits. Can this occur? else #endif /* HOSTARCHITECTURE_X86_64 */ { // 32 bits in 32-bit mode, 64-bits in 64-bit mode. process->ScanConstant(addr, pt, PROCESS_RELOC_DIRECT); pt += sizeof(PolyWord); } break; case 0x68: /* PUSH_32 */ pt ++; #ifndef HOSTARCHITECTURE_X86_64 process->ScanConstant(addr, pt, PROCESS_RELOC_DIRECT); #endif /* HOSTARCHITECTURE_X86_64 */ pt += 4; break; case 0x0f: /* ESCAPE */ { pt++; switch (*pt) { case 0xb6: /* movzl */ case 0xb7: // movzw case 0xc1: /* xaddl */ case 0xaf: // imul pt++; skipea(addr, &pt, process, false); break; case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x8c: case 0x8d: case 0x8e: case 0x8f: /* Conditional branches with 32-bit displacement. */ pt += 5; break; // These are SSE2 instructions case 0x10: case 0x11: case 0x58: case 0x5c: case 0x59: case 0x5e: case 0x2e: case 0x2a: case 0x54: case 0x57: case 0x5a: pt++; skipea(addr, &pt, process, false); break; default: Crash("Unknown opcode %d at %p\n", *pt, pt); } break; } case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xdc: case 0xdd: case 0xde: case 0xdf: // Floating point escape instructions { pt++; if ((*pt & 0xe0) == 0xe0) pt++; else skipea(addr, &pt, process, false); break; } default: Crash("Unknown opcode %d at %p\n", *pt, pt); } } } // Increment the value contained in the first word of the mutex. Handle X86TaskData::AtomicIncrement(Handle mutexp) { PolyObject *p = DEREFHANDLE(mutexp); POLYUNSIGNED result = X86AsmAtomicIncrement(p); return this->saveVec.push(PolyWord::FromUnsigned(result)); } // Release a mutex. Because the atomic increment and decrement // use the hardware LOCK prefix we can simply set this to one. void X86TaskData::AtomicReset(Handle mutexp) { DEREFHANDLE(mutexp)->Set(0, TAGGED(1)); } static X86Dependent x86Dependent; MachineDependent *machineDependent = &x86Dependent; struct _entrypts machineSpecificEPT[] = { { "PolySetCodeConstant", (polyRTSFunction)&PolySetCodeConstant}, { NULL, NULL} // End of list. }; polyml-5.7.1/libpolyml/Makefile.in0000644000175000017500000010170513204034553016053 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ # Force all references to be defined to build the DLL. @NO_UNDEFINED_TRUE@am__append_1 = -no-undefined subdir = libpolyml DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/polyml.pc.in $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = polyml.pc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" LTLIBRARIES = $(lib_LTLIBRARIES) @INTERNAL_LIBFFI_TRUE@libpolyml_la_DEPENDENCIES = \ @INTERNAL_LIBFFI_TRUE@ ../libffi/libffi_convenience.la am__libpolyml_la_SOURCES_DIST = arb.cpp basicio.cpp bitmap.cpp \ check_objects.cpp diagnostics.cpp errors.cpp exporter.cpp \ foreign.cpp gc.cpp gc_check_weak_ref.cpp gc_copy_phase.cpp \ gc_mark_phase.cpp gc_share_phase.cpp gc_update_phase.cpp \ gctaskfarm.cpp heapsizing.cpp locking.cpp memmgr.cpp mpoly.cpp \ network.cpp objsize.cpp osmem.cpp pexport.cpp \ poly_specific.cpp polyffi.cpp polystring.cpp process_env.cpp \ processes.cpp profiling.cpp quick_gc.cpp realconv.cpp \ reals.cpp rts_module.cpp rtsentry.cpp run_time.cpp \ save_vec.cpp savestate.cpp scanaddrs.cpp sharedata.cpp \ sighandler.cpp statistics.cpp timing.cpp xwindows.cpp \ x86_dep.cpp x86assembly_gas64.S interpret.cpp \ x86assembly_gas32.S machoexport.cpp elfexport.cpp \ pecoffexport.cpp unix_specific.cpp Console.cpp \ windows_specific.cpp @ARCHI386_FALSE@@ARCHINTERPRET64_FALSE@@ARCHINTERPRET_FALSE@@ARCHX86_64_TRUE@am__objects_1 = x86_dep.lo \ @ARCHI386_FALSE@@ARCHINTERPRET64_FALSE@@ARCHINTERPRET_FALSE@@ARCHX86_64_TRUE@ x86assembly_gas64.lo @ARCHI386_FALSE@@ARCHINTERPRET64_TRUE@@ARCHINTERPRET_FALSE@am__objects_1 = interpret.lo @ARCHI386_FALSE@@ARCHINTERPRET_TRUE@am__objects_1 = interpret.lo @ARCHI386_TRUE@am__objects_1 = x86_dep.lo x86assembly_gas32.lo @EXPELF_FALSE@@EXPMACHO_TRUE@@EXPPECOFF_FALSE@am__objects_2 = \ @EXPELF_FALSE@@EXPMACHO_TRUE@@EXPPECOFF_FALSE@ machoexport.lo @EXPELF_TRUE@@EXPPECOFF_FALSE@am__objects_2 = elfexport.lo @EXPPECOFF_TRUE@am__objects_2 = pecoffexport.lo @NATIVE_WINDOWS_FALSE@am__objects_3 = unix_specific.lo @NATIVE_WINDOWS_TRUE@am__objects_3 = Console.lo windows_specific.lo am_libpolyml_la_OBJECTS = arb.lo basicio.lo bitmap.lo check_objects.lo \ diagnostics.lo errors.lo exporter.lo foreign.lo gc.lo \ gc_check_weak_ref.lo gc_copy_phase.lo gc_mark_phase.lo \ gc_share_phase.lo gc_update_phase.lo gctaskfarm.lo \ heapsizing.lo locking.lo memmgr.lo mpoly.lo network.lo \ objsize.lo osmem.lo pexport.lo poly_specific.lo polyffi.lo \ polystring.lo process_env.lo processes.lo profiling.lo \ quick_gc.lo realconv.lo reals.lo rts_module.lo rtsentry.lo \ run_time.lo save_vec.lo savestate.lo scanaddrs.lo sharedata.lo \ sighandler.lo statistics.lo timing.lo xwindows.lo \ $(am__objects_1) $(am__objects_2) $(am__objects_3) libpolyml_la_OBJECTS = $(am_libpolyml_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libpolyml_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libpolyml_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) am__v_CPPAS_0 = @echo " CPPAS " $@; am__v_CPPAS_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libpolyml_la_SOURCES) DIST_SOURCES = $(am__libpolyml_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_CFLAGS = @FFI_CFLAGS@ FFI_LIBS = @FFI_LIBS@ FGREP = @FGREP@ GIT_VERSION = @GIT_VERSION@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSFLAG = @OSFLAG@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gitinstalled = @gitinstalled@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ polyc_CFLAGS = @polyc_CFLAGS@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign AM_CPPFLAGS = $(CFLAGS) $(OSFLAG) $(GIT_VERSION) -Wall -DMODULEDIR=\"$(moduledir)\" AM_CFLAGS = $(CFLAGS) $(OSFLAG) $(GIT_VERSION) -Wall -fno-strict-aliasing AM_ASFLAGS = $(OSFLAG) AM_CCASFLAGS = $(OSFLAG) lib_LTLIBRARIES = libpolyml.la libpolyml_la_LDFLAGS = -version-info 9:0:0 $(am__append_1) @INTERNAL_LIBFFI_TRUE@libpolyml_la_LIBADD = ../libffi/libffi_convenience.la @ARCHI386_FALSE@@ARCHINTERPRET64_FALSE@@ARCHINTERPRET_FALSE@@ARCHX86_64_TRUE@ARCHSOURCE = x86_dep.cpp x86assembly_gas64.S @ARCHI386_FALSE@@ARCHINTERPRET64_TRUE@@ARCHINTERPRET_FALSE@ARCHSOURCE = interpret.cpp @ARCHI386_FALSE@@ARCHINTERPRET_TRUE@ARCHSOURCE = interpret.cpp # Select the architecture-specific modules @ARCHI386_TRUE@ARCHSOURCE = x86_dep.cpp x86assembly_gas32.S @EXPELF_FALSE@@EXPMACHO_TRUE@@EXPPECOFF_FALSE@EXPORTSOURCE = machoexport.cpp @EXPELF_TRUE@@EXPPECOFF_FALSE@EXPORTSOURCE = elfexport.cpp # Select the object-format-specific modules @EXPPECOFF_TRUE@EXPORTSOURCE = pecoffexport.cpp @NATIVE_WINDOWS_FALSE@OSSOURCE = unix_specific.cpp @NATIVE_WINDOWS_TRUE@OSSOURCE = Console.cpp windows_specific.cpp noinst_HEADERS = \ arb.h \ basicio.h \ bitmap.h \ check_objects.h \ Console.h \ diagnostics.h \ elfexport.h \ errors.h \ exporter.h \ foreign.h \ gc.h \ gctaskfarm.h \ globals.h \ heapsizing.h \ int_opcodes.h \ io_internal.h \ locking.h \ machine_dep.h \ machoexport.h \ memmgr.h \ mpoly.h \ network.h \ noreturn.h \ objsize.h \ osmem.h \ os_specific.h \ pecoffexport.h \ pexport.h \ PolyControl.h \ poly_specific.h \ polyffi.h \ polystring.h \ process_env.h \ processes.h \ profiling.h \ realconv.h \ reals.h \ rts_module.h \ rtsentry.h \ run_time.h \ savestate.h \ save_vec.h \ scanaddrs.h \ sharedata.h \ sighandler.h \ statistics.h \ sys.h \ timing.h \ version.h \ xcall_numbers.h \ xwindows.h libpolyml_la_SOURCES = \ arb.cpp \ basicio.cpp \ bitmap.cpp \ check_objects.cpp \ diagnostics.cpp \ errors.cpp \ exporter.cpp \ foreign.cpp \ gc.cpp \ gc_check_weak_ref.cpp \ gc_copy_phase.cpp \ gc_mark_phase.cpp \ gc_share_phase.cpp \ gc_update_phase.cpp \ gctaskfarm.cpp \ heapsizing.cpp \ locking.cpp \ memmgr.cpp \ mpoly.cpp \ network.cpp \ objsize.cpp \ osmem.cpp \ pexport.cpp \ poly_specific.cpp \ polyffi.cpp \ polystring.cpp \ process_env.cpp \ processes.cpp \ profiling.cpp \ quick_gc.cpp \ realconv.cpp \ reals.cpp \ rts_module.cpp \ rtsentry.cpp \ run_time.cpp \ save_vec.cpp \ savestate.cpp \ scanaddrs.cpp \ sharedata.cpp \ sighandler.cpp \ statistics.cpp \ timing.cpp \ xwindows.cpp \ $(ARCHSOURCE) $(EXPORTSOURCE) $(OSSOURCE) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = polyml.pc all: all-am .SUFFIXES: .SUFFIXES: .S .cpp .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libpolyml/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libpolyml/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): polyml.pc: $(top_builddir)/config.status $(srcdir)/polyml.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libpolyml.la: $(libpolyml_la_OBJECTS) $(libpolyml_la_DEPENDENCIES) $(EXTRA_libpolyml_la_DEPENDENCIES) $(AM_V_CXXLD)$(libpolyml_la_LINK) -rpath $(libdir) $(libpolyml_la_OBJECTS) $(libpolyml_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Console.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basicio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitmap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_objects.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diagnostics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfexport.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exporter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foreign.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc_check_weak_ref.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc_copy_phase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc_mark_phase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc_share_phase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc_update_phase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gctaskfarm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/heapsizing.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locking.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machoexport.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memmgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpoly.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objsize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osmem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pecoffexport.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pexport.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poly_specific.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyffi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polystring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_env.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/processes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profiling.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quick_gc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realconv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reals.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rts_module.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtsentry.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_time.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save_vec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savestate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanaddrs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sharedata.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sighandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statistics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timing.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_specific.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows_specific.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_dep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86assembly_gas32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86assembly_gas64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xwindows.Plo@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< .S.obj: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .S.lo: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-libLTLIBRARIES uninstall-pkgconfigDATA # Convert the portable format to a native binary polyexport.o: polyimport exportPoly.sml (cd ..; driver/polyimport driver/$(POLYIMPORT) < driver/exportPoly.sml > /dev/null) clean-local: rm -f x86asmtemp.S ppcasmtemp.s # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/libpolyml/basicio.cpp0000644000175000017500000023105313204034553016123 0ustar daviddavid/* Title: Basic IO. Copyright (c) 2000, 2015, 2016 David C. J. Matthews Portions of this code are derived from the original stream io package copyright CUTS 1983-2000. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This module replaces the old stream IO based on stdio. It works at a lower level with the buffering being done in ML. Sockets are generally dealt with in network.c but it is convenient to use the same table for them particularly since it simplifies the implementation of "poll". Directory operations are also included in here. DCJM May 2000. */ #ifdef HAVE_CONFIG_H #include "config.h" #elif defined(_WIN32) #include "winconfig.h" #else #error "No configuration file" #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_ASSERT_H #include #define ASSERT(x) assert(x) #else #define ASSERT(x) 0 #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_ALLOCA_H #include #endif #ifdef HAVE_IO_H #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_POLL_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_MALLOC_H #include #endif #ifdef HAVE_DIRECT_H #include #endif #ifdef HAVE_STDIO_H #include #endif #include #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include #include #else typedef char TCHAR; #define _T(x) x #define lstrcat strcat #define _topen open #define _tmktemp mktemp #define _tcsdup strdup #endif #ifndef O_BINARY #define O_BINARY 0 /* Not relevant. */ #endif #ifndef INFTIM #define INFTIM (-1) #endif #include "globals.h" #include "basicio.h" #include "sys.h" #include "gc.h" #include "run_time.h" #include "machine_dep.h" #include "arb.h" #include "processes.h" #include "diagnostics.h" #include "io_internal.h" #include "scanaddrs.h" #include "polystring.h" #include "mpoly.h" #include "save_vec.h" #include "rts_module.h" #include "locking.h" #include "rtsentry.h" #if (defined(_WIN32) && ! defined(__CYGWIN__)) #include "Console.h" #define TOOMANYFILES ERROR_NO_MORE_FILES #define NOMEMORY ERROR_NOT_ENOUGH_MEMORY #define STREAMCLOSED ERROR_INVALID_HANDLE #define FILEDOESNOTEXIST ERROR_FILE_NOT_FOUND #define ERRORNUMBER _doserrno #else #define TOOMANYFILES EMFILE #define NOMEMORY ENOMEM #define STREAMCLOSED EBADF #define FILEDOESNOTEXIST ENOENT #define ERRORNUMBER errno #endif #ifndef O_ACCMODE #define O_ACCMODE (O_RDONLY|O_RDWR|O_WRONLY) #endif #define STREAMID(x) (DEREFSTREAMHANDLE(x)->streamNo) #define SAVE(x) taskData->saveVec.push(x) #ifdef _MSC_VER // Don't tell me about ISO C++ changes. #pragma warning(disable:4996) #endif extern "C" { POLYEXTERNALSYMBOL POLYUNSIGNED PolyChDir(PolyObject *threadId, PolyWord arg); POLYEXTERNALSYMBOL POLYUNSIGNED PolyBasicIOGeneral(PolyObject *threadId, PolyWord code, PolyWord strm, PolyWord arg); } /* Points to tokens which represent the streams and the stream itself. For each stream a single word token is made containing the file number, and its address is put in here. When the stream is closed the entry is overwritten. Any further activity will be trapped because the address in the vector will not be the same as the address of the token. This also prevents streams other than stdin and stdout from being made persistent. stdin, stdout and stderr are treated specially. The tokens for them are entries in the interface vector and so can be made persistent. */ /* I've tried various ways of getting asynchronous IO to work in a consistent manner across different kinds of IO devices in Windows. It is possible to pass some kinds of handles to WaitForMultipleObjects but not all. Anonymous pipes, for example, cannot be used in Windows 95 and don't seem to do what is expected in Windows NT (they return signalled even when there is no input). The console is even more of a mess. The handle is signalled when there are any events (such as mouse movements) available but these are ignored by ReadFile, which may then block. Conversely using ReadFile to read less than a line causes the handle to be unsignalled, supposedly meaning that no input is available, yet ReadFile will return subsequent characters without blocking. The eventual solution was to replace the console completely. DCJM May 2000 */ PIOSTRUCT basic_io_vector; PLock ioLock; // Currently this just protects against two threads using the same entry #if (defined(_WIN32) && ! defined(__CYGWIN__)) class WaitStream: public WaitHandle { public: WaitStream(PIOSTRUCT strm): WaitHandle(strm == NULL ? NULL : strm->hAvailable) {} }; #else class WaitStream: public WaitInputFD { public: WaitStream(PIOSTRUCT strm): WaitInputFD(strm == NULL ? -1 : strm->device.ioDesc) {} }; #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* Deal with the various cases to see if input is available. */ static bool isAvailable(TaskData *taskData, PIOSTRUCT strm) { HANDLE hFile = (HANDLE)_get_osfhandle(strm->device.ioDesc); if (isPipe(strm)) { DWORD dwAvail; int err; if (PeekNamedPipe(hFile, NULL, 0, NULL, &dwAvail, NULL)) return dwAvail != 0; err = GetLastError(); /* Windows returns ERROR_BROKEN_PIPE on input whereas Unix only returns it on output and treats it as EOF. We follow Unix here. */ if (err == ERROR_BROKEN_PIPE) return true; /* At EOF - will not block. */ else raise_syscall(taskData, "PeekNamedPipe error", err); /*NOTREACHED*/ } else if (isConsole(strm)) return isConsoleInput(); else if (isDevice(strm)) return WaitForSingleObject(hFile, 0) == WAIT_OBJECT_0; else /* File - We may be at end-of-file but we won't block. */ return true; } #else static bool isAvailable(TaskData *taskData, PIOSTRUCT strm) { #ifdef __CYGWIN__ static struct timeval poll = {0,1}; #else static struct timeval poll = {0,0}; #endif fd_set read_fds; int selRes; FD_ZERO(&read_fds); FD_SET((int)strm->device.ioDesc, &read_fds); /* If there is something there we can return. */ selRes = select(FD_SETSIZE, &read_fds, NULL, NULL, &poll); if (selRes > 0) return true; /* Something waiting. */ else if (selRes < 0 && errno != EINTR) // Maybe another thread closed descr raise_syscall(taskData, "select error", ERRORNUMBER); else return false; } #endif static POLYUNSIGNED max_streams; /* If we try opening a stream and it fails with EMFILE (too many files open) we may be able to recover by garbage-collecting and closing some unreferenced streams. This flag is set to indicate that we have had an EMFILE error and is cleared whenever a file is closed or opened successfully. It prevents infinite looping if we really have too many files. */ bool emfileFlag = false; /* Close a stream, either explicitly or as a result of detecting an unreferenced stream in the g.c. Doesn't report any errors. */ void close_stream(PIOSTRUCT str) { if (!isOpen(str)) return; if (isDirectory(str)) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) FindClose(str->device.directory.hFind); #else closedir(str->device.ioDir); #endif } #if (defined(_WIN32) && ! defined(__CYGWIN__)) else if (isSocket(str)) { closesocket(str->device.sock); } else if (isConsole(str)) return; #endif else close(str->device.ioDesc); str->ioBits = 0; str->token = TAGGED(0); emfileFlag = false; #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (str->hAvailable) CloseHandle(str->hAvailable); str->hAvailable = NULL; #endif } PIOSTRUCT get_stream(PolyWord stream_token) /* Checks that the stream number is valid and returns the actual stream. Returns NULL if the stream is closed. */ { POLYUNSIGNED stream_no; if (stream_token.IsTagged()) stream_no = stream_token.UnTaggedUnsigned(); else stream_no = ((StreamToken*)stream_token.AsObjPtr())->streamNo; if (stream_no >= max_streams) return 0; if (basic_io_vector[stream_no].token != stream_token) { // Backwards compatibility. The persistent streams may either be // tagged values or IO entry pointers. if (stream_no >= 3) return 0; } if (! isOpen(&basic_io_vector[stream_no])) return 0; return &basic_io_vector[stream_no]; } Handle make_stream_entry(TaskData *taskData) // Find a free entry in the stream vector and return a token for it. { POLYUNSIGNED stream_no; ioLock.Lock(); // Find an unused entry. for(stream_no = 0; stream_no < max_streams && basic_io_vector[stream_no].token != ClosedToken; stream_no++); /* Check we have enough space. */ if (stream_no >= max_streams) { /* No space. */ POLYUNSIGNED oldMax = max_streams; max_streams += max_streams/2; PIOSTRUCT newVector = (PIOSTRUCT)realloc(basic_io_vector, max_streams*sizeof(IOSTRUCT)); if (newVector == NULL) return NULL; basic_io_vector = newVector; /* Clear the new space. */ memset(basic_io_vector+oldMax, 0, (max_streams-oldMax)*sizeof(IOSTRUCT)); for (POLYUNSIGNED i = oldMax; i < max_streams; i++) basic_io_vector[i].token = ClosedToken; } // Create the token. This must be mutable not because it will be updated but // because we will use pointer-equality on it and the GC does not guarantee to // preserve pointer-equality for immutables. Handle str_token = alloc_and_save(taskData, (sizeof(StreamToken) + sizeof(PolyWord) - 1)/sizeof(PolyWord), F_BYTE_OBJ|F_MUTABLE_BIT); STREAMID(str_token) = stream_no; ASSERT(!isOpen(&basic_io_vector[stream_no])); /* Clear the entry then set the token. */ memset(&basic_io_vector[stream_no], 0, sizeof(IOSTRUCT)); basic_io_vector[stream_no].token = DEREFWORDHANDLE(str_token); ioLock.Unlock(); return str_token; } /******************************************************************************/ /* */ /* free_stream_entry - utility function */ /* */ /******************************************************************************/ /* Free an entry in the stream vector - used when openstreamc grabs a stream vector entry, but then fails to open the associated file. (This happens frequently when we are using the Poly make system.) If we don't recycle the stream vector entries immediately we quickly run out and must perform a full garbage collection to recover the unused ones. SPF 12/9/95 */ void free_stream_entry(POLYUNSIGNED stream_no) { ASSERT(stream_no < max_streams); ioLock.Lock(); basic_io_vector[stream_no].token = ClosedToken; basic_io_vector[stream_no].ioBits = 0; ioLock.Unlock(); } #if (defined(_WIN32) && ! defined(__CYGWIN__)) // When testing for available input we need to do it differently depending on // the kind of handle we have. static int getFileType(int stream) { if (stream == 0 && hOldStdin == INVALID_HANDLE_VALUE) /* If this is stdio and we're using our own console.*/ return IO_BIT_GUI_CONSOLE; switch (GetFileType((HANDLE)_get_osfhandle(stream))) { case FILE_TYPE_PIPE: return IO_BIT_PIPE; case FILE_TYPE_CHAR: return IO_BIT_DEV; default: return 0; } } #endif /* Open a file in the required mode. */ static Handle open_file(TaskData *taskData, Handle filename, int mode, int access, int isPosix) { while (true) // Repeat only with certain kinds of errors { TempString cFileName(filename->Word()); // Get file name if (cFileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); POLYUNSIGNED stream_no = STREAMID(str_token); int stream = _topen(cFileName, mode, access); if (stream >= 0) { PIOSTRUCT strm = &basic_io_vector[stream_no]; strm->device.ioDesc = stream; strm->ioBits = IO_BIT_OPEN; if ((mode & O_ACCMODE) != O_WRONLY) strm->ioBits |= IO_BIT_READ; if ((mode & O_ACCMODE) != O_RDONLY) strm->ioBits |= IO_BIT_WRITE; #if (defined(_WIN32) && ! defined(__CYGWIN__)) strm->ioBits |= getFileType(stream); #else if (! isPosix) { /* Set the close-on-exec flag. We don't set this if we are being called from one of the low level functions in the Posix structure. I assume that if someone is using those functions they know what they're doing and would expect the behaviour to be close to that of the underlying function. */ fcntl(stream, F_SETFD, 1); } #endif emfileFlag = false; /* Successful open. */ return str_token; } free_stream_entry(stream_no); switch (errno) { case EINTR: // Just try the call. Is it possible to block here indefinitely? continue; case EMFILE: /* too many open files */ { if (emfileFlag) /* Previously had an EMFILE error. */ raise_syscall(taskData, "Cannot open", TOOMANYFILES); emfileFlag = true; FullGC(taskData); /* May clear emfileFlag if we close a file. */ continue; } default: raise_syscall(taskData, "Cannot open", ERRORNUMBER); /*NOTREACHED*/ return 0; } } } /* Close the stream unless it is stdin or stdout or already closed. */ static Handle close_file(TaskData *taskData, Handle stream) { // Closed streams, stdin, stdout or stderr are all short ints. if (stream->Word().IsDataPtr()) { PIOSTRUCT strm = get_stream(DEREFHANDLE(stream)); if (strm != NULL && strm->token.IsTagged()) strm = NULL; // Backwards compatibility for stdin etc. // Ignore closed streams, stdin, stdout or stderr. if (strm != NULL) close_stream(strm); } return Make_fixed_precision(taskData, 0); } /* Read into an array. */ // We can't combine readArray and readString because we mustn't compute the // destination of the data in readArray until after any GC. static Handle readArray(TaskData *taskData, Handle stream, Handle args, bool/*isText*/) { /* The isText argument is ignored in both Unix and Windows but is provided for future use. Windows remembers the mode used when the file was opened to determine whether to translate CRLF into LF. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); while (1) // Loop if interrupted. { // First test to see if we have input available. // These tests may result in a GC if another thread is running. // First test to see if we have input available. // These tests may result in a GC if another thread is running. PIOSTRUCT strm; while (true) { strm = get_stream(DEREFHANDLE(stream)); /* Raise an exception if the stream has been closed. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (isAvailable(taskData, strm)) break; WaitStream waiter(strm); processes->ThreadPauseForIO(taskData, &waiter); } #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (strm->hAvailable != NULL) ResetEvent(strm->hAvailable); #endif // We can now try to read without blocking. // Actually there's a race here in the unlikely situation that there // are multiple threads sharing the same low-level reader. They could // both detect that input is available but only one may succeed in // reading without blocking. This doesn't apply where the threads use // the higher-level IO interfaces in ML which have their own mutexes. int fd = strm->device.ioDesc; byte *base = DEREFHANDLE(args)->Get(0).AsObjPtr()->AsBytePtr(); POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFWORDHANDLE(args)->Get(1)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) unsigned length = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); int haveRead; #else size_t length = getPolyUnsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); ssize_t haveRead; #endif #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (isConsole(strm)) haveRead = getConsoleInput((char*)base+offset, length); else #endif // Unix and Windows other than console. haveRead = read(fd, base+offset, length); if (haveRead >= 0) return Make_fixed_precision(taskData, haveRead); // Success. // If it failed because it was interrupted keep trying otherwise it's an error. if (errno != EINTR) raise_syscall(taskData, "Error while reading", ERRORNUMBER); } } /* Return input as a string. We don't actually need both readArray and readString but it's useful to have both to reduce unnecessary garbage. The IO library will construct one from the other but the higher levels choose the appropriate function depending on need. */ static Handle readString(TaskData *taskData, Handle stream, Handle args, bool/*isText*/) { #if (defined(_WIN32) && ! defined(__CYGWIN__)) int length = get_C_int(taskData, DEREFWORD(args)); int haveRead; #else size_t length = getPolyUnsigned(taskData, DEREFWORD(args)); ssize_t haveRead; #endif // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); while (1) // Loop if interrupted. { // First test to see if we have input available. // These tests may result in a GC if another thread is running. PIOSTRUCT strm; while (true) { strm = get_stream(DEREFHANDLE(stream)); /* Raise an exception if the stream has been closed. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (isAvailable(taskData, strm)) break; WaitStream waiter(strm); processes->ThreadPauseForIO(taskData, &waiter); } #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (strm->hAvailable != NULL) ResetEvent(strm->hAvailable); #endif // We can now try to read without blocking. int fd = strm->device.ioDesc; // We previously allocated the buffer on the stack but that caused // problems with multi-threading at least on Mac OS X because of // stack exhaustion. We limit the space to 100k. */ if (length > 102400) length = 102400; byte *buff = (byte*)malloc(length); if (buff == 0) raise_syscall(taskData, "Unable to allocate buffer", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (isConsole(strm)) haveRead = getConsoleInput((char*)buff, length); else #endif // Unix and Windows other than console. haveRead = read(fd, buff, length); if (haveRead >= 0) { Handle result = SAVE(C_string_to_Poly(taskData, (char*)buff, haveRead)); free(buff); return result; } free(buff); // If it failed because it was interrupted keep trying otherwise it's an error. if (errno != EINTR) raise_syscall(taskData, "Error while reading", ERRORNUMBER); } } static Handle writeArray(TaskData *taskData, Handle stream, Handle args, bool/*isText*/) { /* The isText argument is ignored in both Unix and Windows but is provided for future use. Windows remembers the mode used when the file was opened to determine whether to translate LF into CRLF. */ PolyWord base = DEREFWORDHANDLE(args)->Get(0); POLYUNSIGNED offset = getPolyUnsigned(taskData, DEREFWORDHANDLE(args)->Get(1)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) unsigned length = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); int haveWritten; #else size_t length = getPolyUnsigned(taskData, DEREFWORDHANDLE(args)->Get(2)); ssize_t haveWritten; #endif PIOSTRUCT strm = get_stream(stream->WordP()); byte ch; /* Raise an exception if the stream has been closed. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); /* We don't actually handle cases of blocking on output. */ byte *toWrite; if (IS_INT(base)) { /* To allow this function to work on strings as well as vectors we have to be able to handle the special case of a single character string. */ ch = (byte)(UNTAGGED(base)); toWrite = &ch; offset = 0; length = 1; } else toWrite = base.AsObjPtr()->AsBytePtr(); haveWritten = write(strm->device.ioDesc, toWrite+offset, length); if (haveWritten < 0) raise_syscall(taskData, "Error while writing", ERRORNUMBER); return Make_fixed_precision(taskData, haveWritten); } // Test whether we can write without blocking. Returns false if it will block, // true if it will not. static bool canOutput(TaskData *taskData, Handle stream) { PIOSTRUCT strm = get_stream(stream->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* There's no way I can see of doing this in Windows. */ return true; #else /* Unix - use "select" to find out if output is possible. */ #ifdef __CYGWIN__ static struct timeval poll = {0,1}; #else static struct timeval poll = {0,0}; #endif fd_set read_fds, write_fds, except_fds; int sel; FD_ZERO(&read_fds); FD_ZERO(&write_fds); FD_ZERO(&except_fds); FD_SET(strm->device.ioDesc, &write_fds); sel = select(FD_SETSIZE,&read_fds,&write_fds,&except_fds,&poll); if (sel < 0 && errno != EINTR) raise_syscall(taskData, "select failed", ERRORNUMBER); return sel > 0; #endif } static long seekStream(TaskData *taskData, PIOSTRUCT strm, long pos, int origin) { long lpos; lpos = lseek(strm->device.ioDesc, pos, origin); if (lpos < 0) raise_syscall(taskData, "Position error", ERRORNUMBER); return lpos; } /* Return the number of bytes available on the device. Works only for files since it is meaningless for other devices. */ static Handle bytesAvailable(TaskData *taskData, Handle stream) { PIOSTRUCT strm = get_stream(stream->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); /* Remember our original position, seek to the end, then seek back. */ long original = seekStream(taskData, strm, 0L, SEEK_CUR); long endOfStream = seekStream(taskData, strm, 0L, SEEK_END); if (seekStream(taskData, strm, original, SEEK_SET) != original) raise_syscall(taskData, "Position error", ERRORNUMBER); return Make_fixed_precision(taskData, endOfStream-original); } #define FILEKIND_FILE 0 #define FILEKIND_DIR 1 #define FILEKIND_LINK 2 #define FILEKIND_TTY 3 #define FILEKIND_PIPE 4 #define FILEKIND_SKT 5 #define FILEKIND_DEV 6 #define FILEKIND_ERROR (-1) static Handle fileKind(TaskData *taskData, Handle stream) { PIOSTRUCT strm = get_stream(stream->WordP()); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { HANDLE hTest; if (strm->device.ioDesc == 0) { // Stdin is special. The actual handle is to a pipe whether we are using our // own console or we were provided with a stdin. if (hOldStdin == INVALID_HANDLE_VALUE) return Make_fixed_precision(taskData, FILEKIND_TTY); // We've made our own console hTest = hOldStdin; } else hTest = (HANDLE)_get_osfhandle(strm->device.ioDesc); switch (GetFileType(hTest)) { case FILE_TYPE_PIPE: return Make_fixed_precision(taskData, FILEKIND_PIPE); case FILE_TYPE_CHAR: return Make_fixed_precision(taskData, FILEKIND_TTY); // Or a device? default: return Make_fixed_precision(taskData, FILEKIND_FILE); } } #else { struct stat statBuff; if (fstat(strm->device.ioDesc, &statBuff) < 0) raise_syscall(taskData, "Stat failed", ERRORNUMBER); switch (statBuff.st_mode & S_IFMT) { case S_IFIFO: return Make_fixed_precision(taskData, FILEKIND_PIPE); case S_IFCHR: case S_IFBLK: if (isatty(strm->device.ioDesc)) return Make_fixed_precision(taskData, FILEKIND_TTY); else return Make_fixed_precision(taskData, FILEKIND_DEV); case S_IFDIR: return Make_fixed_precision(taskData, FILEKIND_DIR); case S_IFREG: return Make_fixed_precision(taskData, FILEKIND_FILE); case S_IFLNK: return Make_fixed_precision(taskData, FILEKIND_LINK); case S_IFSOCK: return Make_fixed_precision(taskData, FILEKIND_SKT); default: return Make_fixed_precision(taskData, -1); } } #endif } /* Polling. For the moment this applies only to objects which can be opened in the file system. It may need to be extended to sockets later. */ #define POLL_BIT_IN 1 #define POLL_BIT_OUT 2 #define POLL_BIT_PRI 4 /* Find out what polling options, if any, are allowed on this file descriptor. We assume that polling is allowed on all descriptors, either for reading or writing depending on how the stream was opened. */ Handle pollTest(TaskData *taskData, Handle stream) { PIOSTRUCT strm = get_stream(stream->WordP()); int nRes = 0; if (strm == NULL) return Make_fixed_precision(taskData, 0); /* Allow for the possibility of both being set in the future. */ if (isRead(strm)) nRes |= POLL_BIT_IN; if (isWrite(strm)) nRes |= POLL_BIT_OUT; /* For the moment we don't allow POLL_BIT_PRI. */ return Make_fixed_precision(taskData, nRes); } /* Do the polling. Takes a vector of io descriptors, a vector of bits to test and a time to wait and returns a vector of results. */ static Handle pollDescriptors(TaskData *taskData, Handle args, int blockType) { TryAgain: PolyObject *strmVec = DEREFHANDLE(args)->Get(0).AsObjPtr(); PolyObject *bitVec = DEREFHANDLE(args)->Get(1).AsObjPtr(); POLYUNSIGNED nDesc = strmVec->Length(); ASSERT(nDesc == bitVec->Length()); // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); /* Simply do a non-blocking poll. */ #if (defined(_WIN32) && ! defined(__CYGWIN__)) { /* Record the results in this vector. */ char *results = 0; int haveResult = 0; Handle resVec; if (nDesc > 0) { results = (char*)alloca(nDesc); memset(results, 0, nDesc); } for (POLYUNSIGNED i = 0; i < nDesc; i++) { Handle marker = taskData->saveVec.mark(); PIOSTRUCT strm = get_stream(strmVec->Get(i).AsObjPtr()); taskData->saveVec.reset(marker); int bits = get_C_int(taskData, bitVec->Get(i)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (isSocket(strm)) { SOCKET sock = strm->device.sock; if (bits & POLL_BIT_PRI) { u_long atMark = 0; ioctlsocket(sock, SIOCATMARK, &atMark); if (atMark) { haveResult = 1; results[i] |= POLL_BIT_PRI; } } if (bits & (POLL_BIT_IN|POLL_BIT_OUT)) { FD_SET readFds, writeFds; TIMEVAL poll = {0, 0}; FD_ZERO(&readFds); FD_ZERO(&writeFds); if (bits & POLL_BIT_IN) FD_SET(sock, &readFds); if (bits & POLL_BIT_OUT) FD_SET(sock, &writeFds); if (select(FD_SETSIZE, &readFds, &writeFds, NULL, &poll) > 0) { haveResult = 1; /* N.B. select only tells us about out-of-band data if SO_OOBINLINE is FALSE. */ if (FD_ISSET(sock, &readFds)) results[i] |= POLL_BIT_IN; if (FD_ISSET(sock, &writeFds)) results[i] |= POLL_BIT_OUT; } } } else { if ((bits & POLL_BIT_IN) && isRead(strm) && isAvailable(taskData, strm)) { haveResult = 1; results[i] |= POLL_BIT_IN; } if ((bits & POLL_BIT_OUT) && isWrite(strm)) { /* I don't know if there's any way to do this. */ if (WaitForSingleObject( (HANDLE)_get_osfhandle(strm->device.ioDesc), 0) == WAIT_OBJECT_0) { haveResult = 1; results[i] |= POLL_BIT_OUT; } } /* PRIORITY doesn't make sense for anything but a socket. */ } } if (haveResult == 0) { /* Poll failed - treat as time out. */ switch (blockType) { case 0: /* Check the time out. */ { Handle hSave = taskData->saveVec.mark(); /* The time argument is an absolute time. */ FILETIME ftTime, ftNow; /* Get the file time. */ getFileTimeFromArb(taskData, taskData->saveVec.push(DEREFHANDLE(args)->Get(2)), &ftTime); GetSystemTimeAsFileTime(&ftNow); taskData->saveVec.reset(hSave); /* If the timeout time is earlier than the current time we must return, otherwise we block. */ if (CompareFileTime(&ftTime, &ftNow) <= 0) break; /* Return the empty set. */ /* else drop through and block. */ } case 1: /* Block until one of the descriptors is ready. */ processes->ThreadPause(taskData); goto TryAgain; /*NOTREACHED*/ case 2: /* Just a simple poll - drop through. */ break; } } /* Copy the results to a result vector. */ resVec = alloc_and_save(taskData, nDesc); for (POLYUNSIGNED j = 0; j < nDesc; j++) (DEREFWORDHANDLE(resVec))->Set(j, TAGGED(results[j])); return resVec; } #elif (! defined(HAVE_POLL_H)) /* Unix but poll isn't provided, e.g. Mac OS X. Implement in terms of "select" as far as we can. */ { fd_set readFds, writeFds, exceptFds; struct timeval poll = {0, 0}; int selectRes = 0; FD_ZERO(&readFds); FD_ZERO(&writeFds); FD_ZERO(&exceptFds); for (POLYUNSIGNED i = 0; i < nDesc; i++) { PIOSTRUCT strm = get_stream(strmVec->Get(i).AsObjPtr()); int bits = UNTAGGED(bitVec->Get(i)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (bits & POLL_BIT_IN) FD_SET(strm->device.ioDesc, &readFds); if (bits & POLL_BIT_OUT) FD_SET(strm->device.ioDesc, &writeFds); } /* Simply check the status without blocking. */ if (nDesc > 0) selectRes = select(FD_SETSIZE, &readFds, &writeFds, &exceptFds, &poll); if (selectRes < 0) raise_syscall(taskData, "select failed", ERRORNUMBER); /* What if nothing was ready? */ if (selectRes == 0) { switch (blockType) { case 0: /* Check the timeout. */ { struct timeval tv; /* We have a value in microseconds. We need to split it into seconds and microseconds. */ Handle hSave = taskData->saveVec.mark(); Handle hTime = SAVE(DEREFWORDHANDLE(args)->Get(2)); Handle hMillion = Make_arbitrary_precision(taskData, 1000000); unsigned long secs = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); unsigned long usecs = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); /* If the timeout time is earlier than the current time we must return, otherwise we block. */ taskData->saveVec.reset(hSave); if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", ERRORNUMBER); if ((unsigned long)tv.tv_sec > secs || ((unsigned long)tv.tv_sec == secs && (unsigned long)tv.tv_usec >= usecs)) break; /* else block. */ } case 1: /* Block until one of the descriptors is ready. */ processes->ThreadPause(taskData); goto TryAgain; case 2: /* Just a simple poll - drop through. */ break; } } /* Copy the results. */ if (nDesc == 0) return taskData->saveVec.push(EmptyString()); /* Construct a result vector. */ Handle resVec = alloc_and_save(taskData, nDesc); for (POLYUNSIGNED i = 0; i < nDesc; i++) { POLYUNSIGNED res = 0; POLYUNSIGNED bits = UNTAGGED(bitVec->Get(i)); PIOSTRUCT strm = get_stream(strmVec->Get(i).AsObjPtr()); if ((bits & POLL_BIT_IN) && FD_ISSET(strm->device.ioDesc, &readFds)) res |= POLL_BIT_IN; if ((bits & POLL_BIT_OUT) && FD_ISSET(strm->device.ioDesc, &writeFds)) res |= POLL_BIT_OUT; DEREFWORDHANDLE(resVec)->Set(i, TAGGED(res)); } return resVec; } #else /* Unix */ { int pollRes = 0; struct pollfd * fds = 0; if (nDesc > 0) fds = (struct pollfd *)alloca(nDesc * sizeof(struct pollfd)); /* Set up the request vector. */ for (unsigned i = 0; i < nDesc; i++) { PIOSTRUCT strm = get_stream(strmVec->Get(i).AsObjPtr()); POLYUNSIGNED bits = UNTAGGED(bitVec->Get(i)); if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); fds[i].fd = strm->device.ioDesc; fds[i].events = 0; if (bits & POLL_BIT_IN) fds[i].events |= POLLIN; /* | POLLRDNORM??*/ if (bits & POLL_BIT_OUT) fds[i].events |= POLLOUT; if (bits & POLL_BIT_PRI) fds[i].events |= POLLPRI; fds[i].revents = 0; } /* Poll the descriptors. */ if (nDesc > 0) pollRes = poll(fds, nDesc, 0); if (pollRes < 0) raise_syscall(taskData, "poll failed", ERRORNUMBER); /* What if nothing was ready? */ if (pollRes == 0) { switch (blockType) { case 0: /* Check the timeout. */ { struct timeval tv; /* We have a value in microseconds. We need to split it into seconds and microseconds. */ // We need to reset the savevec because we can come here repeatedly Handle hSave = taskData->saveVec.mark(); Handle hTime = SAVE(DEREFWORDHANDLE(args)->Get(2)); Handle hMillion = Make_arbitrary_precision(taskData, 1000000); unsigned long secs = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); unsigned long usecs = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); taskData->saveVec.reset(hSave); /* If the timeout time is earlier than the current time we must return, otherwise we block. */ if (gettimeofday(&tv, NULL) != 0) raise_syscall(taskData, "gettimeofday failed", ERRORNUMBER); if ((unsigned long)tv.tv_sec > secs || ((unsigned long)tv.tv_sec == secs && (unsigned long)tv.tv_usec >= usecs)) break; /* else block. */ } case 1: /* Block until one of the descriptors is ready. */ processes->ThreadPause(taskData); goto TryAgain; case 2: /* Just a simple poll - drop through. */ break; } } /* Copy the results. */ /* Construct a result vector. */ Handle resVec = alloc_and_save(taskData, nDesc); for (unsigned i = 0; i < nDesc; i++) { int res = 0; if (fds[i].revents & POLLIN) res = POLL_BIT_IN; if (fds[i].revents & POLLOUT) res = POLL_BIT_OUT; if (fds[i].revents & POLLPRI) res = POLL_BIT_PRI; DEREFWORDHANDLE(resVec)->Set(i, TAGGED(res)); } return resVec; } #endif } /* Directory functions. */ /* Open a directory. */ static Handle openDirectory(TaskData *taskData, Handle dirname) { while (1) // Only certain errors { Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); POLYUNSIGNED stream_no = STREAMID(str_token); PIOSTRUCT strm = &basic_io_vector[stream_no]; #if (defined(_WIN32) && ! defined(__CYGWIN__)) { // Get the directory name but add on two characters for the \* plus one for the NULL. POLYUNSIGNED length = PolyStringLength(dirname->Word()); TempString dirName((TCHAR*)malloc((length + 3)*sizeof(TCHAR))); if (dirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); Poly_string_to_C(dirname->Word(), dirName, length+2); // Tack on \* to the end so that we find all files in the directory. lstrcat(dirName, _T("\\*")); HANDLE hFind = FindFirstFile(dirName, &strm->device.directory.lastFind); if (hFind == INVALID_HANDLE_VALUE) raise_syscall(taskData, "FindFirstFile failed", GetLastError()); strm->device.directory.hFind = hFind; /* There must be at least one file which matched. */ strm->device.directory.fFindSucceeded = 1; } #else TempString dirName(dirname->Word()); if (dirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); DIR *dirp = opendir(dirName); if (dirp == NULL) { free_stream_entry(stream_no); switch (errno) { case EINTR: continue; // Just retry the call. case EMFILE: { if (emfileFlag) /* Previously had an EMFILE error. */ raise_syscall(taskData, "Cannot open", TOOMANYFILES); emfileFlag = true; FullGC(taskData); /* May clear emfileFlag if we close a file. */ continue; } default: raise_syscall(taskData, "opendir failed", ERRORNUMBER); } } strm->device.ioDir = dirp; #endif strm->ioBits = IO_BIT_OPEN | IO_BIT_DIR; return(str_token); } } /* Return the next entry from the directory, ignoring current and parent arcs ("." and ".." in Windows and Unix) */ Handle readDirectory(TaskData *taskData, Handle stream) { PIOSTRUCT strm = get_stream(stream->WordP()); #if (defined(_WIN32) && ! defined(__CYGWIN__)) Handle result = NULL; #endif /* Raise an exception if the stream has been closed. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* The next entry to read is already in the buffer. FindFirstFile both opens the directory and returns the first entry. If fFindSucceeded is false we have already reached the end. */ if (! strm->device.directory.fFindSucceeded) return SAVE(EmptyString(taskData)); while (result == NULL) { WIN32_FIND_DATA *pFind = &strm->device.directory.lastFind; if (!((pFind->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (lstrcmp(pFind->cFileName, _T(".")) == 0 || lstrcmp(pFind->cFileName, _T("..")) == 0))) { result = SAVE(C_string_to_Poly(taskData, pFind->cFileName)); } /* Get the next entry. */ if (! FindNextFile(strm->device.directory.hFind, pFind)) { DWORD dwErr = GetLastError(); if (dwErr == ERROR_NO_MORE_FILES) { strm->device.directory.fFindSucceeded = 0; if (result == NULL) return SAVE(EmptyString(taskData)); } } } return result; #else while (1) { struct dirent *dp = readdir(strm->device.ioDir); int len; if (dp == NULL) return taskData->saveVec.push(EmptyString(taskData)); len = NAMLEN(dp); if (!((len == 1 && strncmp(dp->d_name, ".", 1) == 0) || (len == 2 && strncmp(dp->d_name, "..", 2) == 0))) return SAVE(C_string_to_Poly(taskData, dp->d_name, len)); } #endif } Handle rewindDirectory(TaskData *taskData, Handle stream, Handle dirname) { PIOSTRUCT strm = get_stream(stream->WordP()); /* Raise an exception if the stream has been closed. */ if (strm == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { /* There's no rewind - close and reopen. */ FindClose(strm->device.directory.hFind); strm->ioBits = 0; POLYUNSIGNED length = PolyStringLength(dirname->Word()); TempString dirName((TCHAR*)malloc((length + 3)*sizeof(TCHAR))); if (dirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); Poly_string_to_C(dirname->Word(), dirName, length+2); // Tack on \* to the end so that we find all files in the directory. lstrcat(dirName, _T("\\*")); HANDLE hFind = FindFirstFile(dirName, &strm->device.directory.lastFind); if (hFind == INVALID_HANDLE_VALUE) raise_syscall(taskData, "FindFirstFile failed", GetLastError()); strm->device.directory.hFind = hFind; /* There must be at least one file which matched. */ strm->device.directory.fFindSucceeded = 1; strm->ioBits = IO_BIT_OPEN | IO_BIT_DIR; } #else rewinddir(strm->device.ioDir); #endif return Make_fixed_precision(taskData, 0); } /* change_dirc - this is called directly and not via the dispatch function. */ static Handle change_dirc(TaskData *taskData, Handle name) /* Change working directory. */ { TempString cDirName(name->Word()); if (cDirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (SetCurrentDirectory(cDirName) == FALSE) raise_syscall(taskData, "SetCurrentDirectory failed", GetLastError()); #else if (chdir(cDirName) != 0) raise_syscall(taskData, "chdir failed", ERRORNUMBER); #endif return SAVE(TAGGED(0)); } // External call POLYUNSIGNED PolyChDir(PolyObject *threadId, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedArg = taskData->saveVec.push(arg); try { (void)change_dirc(taskData, pushedArg); } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); // Ensure the save vec is reset taskData->PostRTSCall(); return TAGGED(0).AsUnsigned(); // Result is unit } /* Test for a directory. */ Handle isDir(TaskData *taskData, Handle name) { TempString cDirName(name->Word()); if (cDirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { DWORD dwRes = GetFileAttributes(cDirName); if (dwRes == 0xFFFFFFFF) raise_syscall(taskData, "GetFileAttributes failed", GetLastError()); if (dwRes & FILE_ATTRIBUTE_DIRECTORY) return Make_fixed_precision(taskData, 1); else return Make_fixed_precision(taskData, 0); } #else { struct stat fbuff; if (stat(cDirName, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); if ((fbuff.st_mode & S_IFMT) == S_IFDIR) return Make_fixed_precision(taskData, 1); else return Make_fixed_precision(taskData, 0); } #endif } /* Get absolute canonical path name. */ Handle fullPath(TaskData *taskData, Handle filename) { TempString cFileName; /* Special case of an empty string. */ if (PolyStringLength(filename->Word()) == 0) cFileName = _tcsdup(_T(".")); else cFileName = Poly_string_to_T_alloc(filename->Word()); if (cFileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { // Get the length DWORD dwRes = GetFullPathName(cFileName, 0, NULL, NULL); if (dwRes == 0) raise_syscall(taskData, "GetFullPathName failed", GetLastError()); TempString resBuf((TCHAR*)malloc(dwRes * sizeof(TCHAR))); if (resBuf == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); // When the length is enough the result is the length excluding the null DWORD dwRes1 = GetFullPathName(cFileName, dwRes, resBuf, NULL); if (dwRes1 == 0 || dwRes1 >= dwRes) raise_syscall(taskData, "GetFullPathName failed", GetLastError()); /* Check that the file exists. GetFullPathName doesn't do that. */ dwRes = GetFileAttributes(resBuf); if (dwRes == 0xffffffff) raise_syscall(taskData, "File does not exist", FILEDOESNOTEXIST); return(SAVE(C_string_to_Poly(taskData, resBuf))); } #else { TempCString resBuf(realpath(cFileName, NULL)); if (resBuf == NULL) raise_syscall(taskData, "realpath failed", ERRORNUMBER); /* Some versions of Unix don't check the final component of a file. To be consistent try doing a "stat" of the resulting string to check it exists. */ struct stat fbuff; if (stat(resBuf, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); return(SAVE(C_string_to_Poly(taskData, resBuf))); } #endif } /* Get file modification time. This returns the value in the time units and from the base date used by timing.c. c.f. filedatec */ Handle modTime(TaskData *taskData, Handle filename) { TempString cFileName(filename->Word()); if (cFileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { /* There are two ways to get this information. We can either use GetFileTime if we are able to open the file for reading but if it is locked we won't be able to. FindFirstFile is the other alternative. We have to check that the file name does not contain '*' or '?' otherwise it will try to "glob" this, which isn't what we want here. */ WIN32_FIND_DATA wFind; HANDLE hFind; const TCHAR *p; for(p = cFileName; *p; p++) if (*p == '*' || *p == '?') raise_syscall(taskData, "Invalid filename", STREAMCLOSED); hFind = FindFirstFile(cFileName, &wFind); if (hFind == INVALID_HANDLE_VALUE) raise_syscall(taskData, "FindFirstFile failed", GetLastError()); FindClose(hFind); return Make_arb_from_Filetime(taskData, wFind.ftLastWriteTime); } #else { struct stat fbuff; if (stat(cFileName, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); /* Convert to microseconds. */ return Make_arb_from_pair_scaled(taskData, STAT_SECS(&fbuff,m), STAT_USECS(&fbuff,m), 1000000); } #endif } /* Get file size. */ Handle fileSize(TaskData *taskData, Handle filename) { TempString cFileName(filename->Word()); if (cFileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { /* Similar to modTime*/ WIN32_FIND_DATA wFind; HANDLE hFind; const TCHAR *p; for(p = cFileName; *p; p++) if (*p == '*' || *p == '?') raise_syscall(taskData, "Invalid filename", STREAMCLOSED); hFind = FindFirstFile(cFileName, &wFind); if (hFind == INVALID_HANDLE_VALUE) raise_syscall(taskData, "FindFirstFile failed", GetLastError()); FindClose(hFind); return Make_arb_from_32bit_pair(taskData, wFind.nFileSizeHigh, wFind.nFileSizeLow); } #else { struct stat fbuff; if (stat(cFileName, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); return Make_arbitrary_precision(taskData, fbuff.st_size); } #endif } /* Set file modification and access times. */ Handle setTime(TaskData *taskData, Handle fileName, Handle fileTime) { TempString cFileName(fileName->Word()); if (cFileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* The only way to set the time is to open the file and use SetFileTime. */ { FILETIME ft; /* Get the file time. */ getFileTimeFromArb(taskData, fileTime, &ft); /* Open an existing file with write access. We need that for SetFileTime. */ HANDLE hFile = CreateFile(cFileName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) raise_syscall(taskData, "CreateFile failed", GetLastError()); /* Set the file time. */ if (!SetFileTime(hFile, NULL, &ft, &ft)) { int nErr = GetLastError(); CloseHandle(hFile); raise_syscall(taskData, "SetFileTime failed", nErr); } CloseHandle(hFile); } #else { struct timeval times[2]; /* We have a value in microseconds. We need to split it into seconds and microseconds. */ Handle hTime = fileTime; Handle hMillion = Make_arbitrary_precision(taskData, 1000000); /* N.B. Arguments to div_longc and rem_longc are in reverse order. */ unsigned secs = get_C_ulong(taskData, DEREFWORDHANDLE(div_longc(taskData, hMillion, hTime))); unsigned usecs = get_C_ulong(taskData, DEREFWORDHANDLE(rem_longc(taskData, hMillion, hTime))); times[0].tv_sec = times[1].tv_sec = secs; times[0].tv_usec = times[1].tv_usec = usecs; if (utimes(cFileName, times) != 0) raise_syscall(taskData, "utimes failed", ERRORNUMBER); } #endif return Make_fixed_precision(taskData, 0); } /* Rename a file. */ Handle renameFile(TaskData *taskData, Handle oldFileName, Handle newFileName) { TempString oldName(oldFileName->Word()), newName(newFileName->Word()); if (oldName == 0 || newName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (! MoveFileEx(oldName, newName, MOVEFILE_REPLACE_EXISTING)) raise_syscall(taskData, "MoveFileEx failed", GetLastError()); #else if (rename(oldName, newName) != 0) raise_syscall(taskData, "rename failed", ERRORNUMBER); #endif return Make_fixed_precision(taskData, 0); } /* Access right requests passed in from ML. */ #define FILE_ACCESS_READ 1 #define FILE_ACCESS_WRITE 2 #define FILE_ACCESS_EXECUTE 4 /* Get access rights to a file. */ Handle fileAccess(TaskData *taskData, Handle name, Handle rights) { TempString fileName(name->Word()); if (fileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); int rts = get_C_int(taskData, DEREFWORD(rights)); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { /* Test whether the file is read-only. This is, of course, not what was asked but getting anything more is really quite complicated. I don't see how we can find out if a file is executable (maybe check if the extension is .exe, .com or .bat?). It would be possible, in NT, to examine the access structures but that seems far too complicated. Leave it for the moment. */ DWORD dwRes = GetFileAttributes(fileName); if (dwRes == 0xffffffff) return Make_fixed_precision(taskData, 0); /* If we asked for write access but it is read-only we return false. */ if ((dwRes & FILE_ATTRIBUTE_READONLY) && (rts & FILE_ACCESS_WRITE)) return Make_fixed_precision(taskData, 0); else return Make_fixed_precision(taskData, 1); } #else { int mode = 0; if (rts & FILE_ACCESS_READ) mode |= R_OK; if (rts & FILE_ACCESS_WRITE) mode |= W_OK; if (rts & FILE_ACCESS_EXECUTE) mode |= X_OK; if (mode == 0) mode = F_OK; /* Return true if access is allowed, otherwise false for any other error. */ if (access(fileName, mode) == 0) return Make_fixed_precision(taskData, 1); else return Make_fixed_precision(taskData, 0); } #endif } /* IO_dispatchc. Called from assembly code module. */ static Handle IO_dispatch_c(TaskData *taskData, Handle args, Handle strm, Handle code) { unsigned c = get_C_unsigned(taskData, DEREFWORD(code)); switch (c) { case 0: /* Return standard input */ return SAVE(basic_io_vector[0].token); case 1: /* Return standard output */ return SAVE(basic_io_vector[1].token); case 2: /* Return standard error */ return SAVE(basic_io_vector[2].token); case 3: /* Open file for text input. */ return open_file(taskData, args, O_RDONLY, 0666, 0); case 4: /* Open file for binary input. */ return open_file(taskData, args, O_RDONLY | O_BINARY, 0666, 0); case 5: /* Open file for text output. */ return open_file(taskData, args, O_WRONLY | O_CREAT | O_TRUNC, 0666, 0); case 6: /* Open file for binary output. */ return open_file(taskData, args, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666, 0); case 7: /* Close file */ return close_file(taskData, strm); case 8: /* Read text into an array. */ return readArray(taskData, strm, args, true); case 9: /* Read binary into an array. */ return readArray(taskData, strm, args, false); case 10: /* Get text as a string. */ return readString(taskData, strm, args, true); case 11: /* Write from memory into a text file. */ return writeArray(taskData, strm, args, true); case 12: /* Write from memory into a binary file. */ return writeArray(taskData, strm, args, false); case 13: /* Open text file for appending. */ /* The IO library definition leaves it open whether this should use "append mode" or not. */ return open_file(taskData, args, O_WRONLY | O_CREAT | O_APPEND, 0666, 0); case 14: /* Open binary file for appending. */ return open_file(taskData, args, O_WRONLY | O_CREAT | O_APPEND | O_BINARY, 0666, 0); case 15: /* Return recommended buffer size. */ /* TODO: This should try to find a sensible number based on the stream handle passed in. Leave it at 1k for the moment. */ /* Try increasing to 4k. */ return Make_fixed_precision(taskData, /*1024*/4096); case 16: /* See if we can get some input. */ { PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); return Make_fixed_precision(taskData, isAvailable(taskData, str) ? 1 : 0); } case 17: /* Return the number of bytes available. */ return bytesAvailable(taskData, strm); case 18: /* Get position on stream. */ { /* Get the current position in the stream. This is used to test for the availability of random access so it should raise an exception if setFilePos or endFilePos would fail. */ PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); long pos = seekStream(taskData, str, 0L, SEEK_CUR); return Make_arbitrary_precision(taskData, pos); } case 19: /* Seek to position on stream. */ { long position = (long)get_C_long(taskData, DEREFWORD(args)); PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); (void)seekStream(taskData, str, position, SEEK_SET); return Make_arbitrary_precision(taskData, 0); } case 20: /* Return position at end of stream. */ { PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); /* Remember our original position, seek to the end, then seek back. */ long original = seekStream(taskData, str, 0L, SEEK_CUR); long endOfStream = seekStream(taskData, str, 0L, SEEK_END); if (seekStream(taskData, str, original, SEEK_SET) != original) raise_syscall(taskData, "Position error", ERRORNUMBER); return Make_arbitrary_precision(taskData, endOfStream); } case 21: /* Get the kind of device underlying the stream. */ return fileKind(taskData, strm); case 22: /* Return the polling options allowed on this descriptor. */ return pollTest(taskData, strm); case 23: /* Poll the descriptor, waiting forever. */ return pollDescriptors(taskData, args, 1); case 24: /* Poll the descriptor, waiting for the time requested. */ return pollDescriptors(taskData, args, 0); case 25: /* Poll the descriptor, returning immediately.*/ return pollDescriptors(taskData, args, 2); case 26: /* Get binary as a vector. */ return readString(taskData, strm, args, false); case 27: /* Block until input is available. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); while (true) { PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); if (isAvailable(taskData, str)) return Make_fixed_precision(taskData, 0); WaitStream waiter(str); processes->ThreadPauseForIO(taskData, &waiter); } case 28: /* Test whether output is possible. */ return Make_fixed_precision(taskData, canOutput(taskData, strm) ? 1:0); case 29: /* Block until output is possible. */ // We should check for interrupts even if we're not going to block. processes->TestAnyEvents(taskData); while (true) { if (canOutput(taskData, strm)) return Make_fixed_precision(taskData, 0); // Use the default waiter for the moment since we don't have // one to test for output. processes->ThreadPauseForIO(taskData, Waiter::defaultWaiter); } /* Functions added for Posix structure. */ case 30: /* Return underlying file descriptor. */ /* This is now also used internally to test for stdIn, stdOut and stdErr. */ { PIOSTRUCT str = get_stream(strm->WordP()); if (str == NULL) raise_syscall(taskData, "Stream is closed", STREAMCLOSED); return Make_fixed_precision(taskData, str->device.ioDesc); } case 31: /* Make an entry for a given descriptor. */ { int ioDesc = get_C_int(taskData, DEREFWORD(args)); PIOSTRUCT str; /* First see if it's already in the table. */ for (unsigned i = 0; i < max_streams; i++) { str = &(basic_io_vector[i]); if (str->token != ClosedToken && str->device.ioDesc == ioDesc) return taskData->saveVec.push(str->token); } /* Have to make a new entry. */ Handle str_token = make_stream_entry(taskData); if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); POLYUNSIGNED stream_no = STREAMID(str_token); str = &basic_io_vector[stream_no]; str->device.ioDesc = get_C_int(taskData, DEREFWORD(args)); /* We don't know whether it's open for read, write or even if it's open at all. */ str->ioBits = IO_BIT_OPEN | IO_BIT_READ | IO_BIT_WRITE ; #if (defined(_WIN32) && ! defined(__CYGWIN__)) str->ioBits |= getFileType(ioDesc); #endif return str_token; } /* Directory functions. */ case 50: /* Open a directory. */ return openDirectory(taskData, args); case 51: /* Read a directory entry. */ return readDirectory(taskData, strm); case 52: /* Close the directory */ return close_file(taskData, strm); case 53: /* Rewind the directory. */ return rewindDirectory(taskData, strm, args); case 54: /* Get current working directory. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) DWORD space = GetCurrentDirectory(0, NULL); if (space == 0) raise_syscall(taskData, "GetCurrentDirectory failed", GetLastError()); TempString buff((TCHAR*)malloc(space * sizeof(TCHAR))); if (buff == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); if (GetCurrentDirectory(space, buff) == 0) raise_syscall(taskData, "GetCurrentDirectory failed", GetLastError()); return SAVE(C_string_to_Poly(taskData, buff)); #else size_t size = 4096; TempString string_buffer((TCHAR *)malloc(size * sizeof(TCHAR))); if (string_buffer == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); TCHAR *cwd; while ((cwd = getcwd(string_buffer, size)) == NULL && errno == ERANGE) { if (size > std::numeric_limits::max() / 2) raise_fail(taskData, "getcwd needs too large a buffer"); size *= 2; TCHAR *new_buf = (TCHAR *)realloc(string_buffer, size * sizeof(TCHAR)); if (new_buf == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); string_buffer = new_buf; } if (cwd == NULL) raise_syscall(taskData, "getcwd failed", ERRORNUMBER); return SAVE(C_string_to_Poly(taskData, cwd)); #endif } case 55: /* Create a new directory. */ { TempString dirName(args->Word()); if (dirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (! CreateDirectory(dirName, NULL)) raise_syscall(taskData, "CreateDirectory failed", GetLastError()); #else if (mkdir(dirName, 0777) != 0) raise_syscall(taskData, "mkdir failed", ERRORNUMBER); #endif return Make_fixed_precision(taskData, 0); } case 56: /* Delete a directory. */ { TempString dirName(args->Word()); if (dirName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (! RemoveDirectory(dirName)) raise_syscall(taskData, "RemoveDirectory failed", GetLastError()); #else if (rmdir(dirName) != 0) raise_syscall(taskData, "rmdir failed", ERRORNUMBER); #endif return Make_fixed_precision(taskData, 0); } case 57: /* Test for directory. */ return isDir(taskData, args); case 58: /* Test for symbolic link. */ { TempString fileName(args->Word()); if (fileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) { DWORD dwRes = GetFileAttributes(fileName); if (dwRes == 0xFFFFFFFF) raise_syscall(taskData, "GetFileAttributes failed", GetLastError()); return Make_fixed_precision(taskData, (dwRes & FILE_ATTRIBUTE_REPARSE_POINT) ? 1:0); } #else { struct stat fbuff; if (lstat(fileName, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); return Make_fixed_precision(taskData, ((fbuff.st_mode & S_IFMT) == S_IFLNK) ? 1 : 0); } #endif } case 59: /* Read a symbolic link. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) // Windows has added symbolic links but reading the target is far from // straightforward. It's probably not worth trying to implement this. raise_syscall(taskData, "Symbolic links are not implemented", 0); return taskData->saveVec.push(TAGGED(0)); /* To keep compiler happy. */ #else int nLen; TempString linkName(args->Word()); if (linkName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); size_t size = 4096; TempString resBuf((TCHAR *)malloc(size * sizeof(TCHAR))); if (resBuf == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); // nLen is signed, so cast size to ssize_t to perform signed // comparison, avoiding an infinite loop when nLen is -1. while ((nLen = readlink(linkName, resBuf, size)) >= (ssize_t) size) { size *= 2; if (size > std::numeric_limits::max()) raise_fail(taskData, "readlink needs too large a buffer"); TCHAR *newBuf = (TCHAR *)realloc(resBuf, size * sizeof(TCHAR)); if (newBuf == NULL) raise_syscall(taskData, "Insufficient memory", NOMEMORY); resBuf = newBuf; } if (nLen < 0) raise_syscall(taskData, "readlink failed", ERRORNUMBER); return(SAVE(C_string_to_Poly(taskData, resBuf, nLen))); #endif } case 60: /* Return the full absolute path name. */ return fullPath(taskData, args); case 61: /* Modification time. */ return modTime(taskData, args); case 62: /* File size. */ return fileSize(taskData, args); case 63: /* Set file time. */ return setTime(taskData, strm, args); case 64: /* Delete a file. */ { TempString fileName(args->Word()); if (fileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); #if (defined(_WIN32) && ! defined(__CYGWIN__)) if (! DeleteFile(fileName)) raise_syscall(taskData, "DeleteFile failed", GetLastError()); #else if (unlink(fileName) != 0) raise_syscall(taskData, "unlink failed", ERRORNUMBER); #endif return Make_fixed_precision(taskData, 0); } case 65: /* rename a file. */ return renameFile(taskData, strm, args); case 66: /* Get access rights. */ return fileAccess(taskData, strm, args); case 67: /* Return a temporary file name. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) DWORD dwSpace = GetTempPath(0, NULL); if (dwSpace == 0) raise_syscall(taskData, "GetTempPath failed", GetLastError()); TempString buff((TCHAR*)malloc((dwSpace + 12)*sizeof(TCHAR))); if (buff == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); if (GetTempPath(dwSpace, buff) == 0) raise_syscall(taskData, "GetTempPath failed", GetLastError()); lstrcat(buff, _T("MLTEMPXXXXXX")); #else const char *template_subdir = "/MLTEMPXXXXXX"; #ifdef P_tmpdir TempString buff((TCHAR *)malloc(strlen(P_tmpdir) + strlen(template_subdir) + 1)); if (buff == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); strcpy(buff, P_tmpdir); #else const char *tmpdir = "/tmp"; TempString buff((TCHAR *)malloc(strlen(tmpdir) + strlen(template_subdir) + 1)); if (buff == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); strcpy(buff, tmpdir); #endif strcat(buff, template_subdir); #endif #if (defined(HAVE_MKSTEMP) && ! defined(UNICODE)) // mkstemp is present in the Mingw64 headers but only as ANSI not Unicode. // Set the umask to mask out access by anyone else. // mkstemp generally does this anyway. mode_t oldMask = umask(0077); int fd = mkstemp(buff); int wasError = ERRORNUMBER; (void)umask(oldMask); if (fd != -1) close(fd); else raise_syscall(taskData, "mkstemp failed", wasError); #else if (_tmktemp(buff) == 0) raise_syscall(taskData, "mktemp failed", ERRORNUMBER); int fd = _topen(buff, O_RDWR | O_CREAT | O_EXCL, 00600); if (fd != -1) close(fd); else raise_syscall(taskData, "Temporary file creation failed", ERRORNUMBER); #endif Handle res = SAVE(C_string_to_Poly(taskData, buff)); return res; } case 68: /* Get the file id. */ { #if (defined(_WIN32) && ! defined(__CYGWIN__)) /* This concept does not exist in Windows. */ /* Return a negative number. This is interpreted as "not implemented". */ return Make_fixed_precision(taskData, -1); #else struct stat fbuff; TempString fileName(args->Word()); if (fileName == 0) raise_syscall(taskData, "Insufficient memory", NOMEMORY); if (stat(fileName, &fbuff) != 0) raise_syscall(taskData, "stat failed", ERRORNUMBER); /* Assume that inodes are always non-negative. */ return Make_arbitrary_precision(taskData, fbuff.st_ino); #endif } case 69: /* Return an index for a token. */ return Make_fixed_precision(taskData, STREAMID(strm)); case 70: /* Posix.FileSys.openf - open a file with given mode. */ { Handle name = taskData->saveVec.push(DEREFWORDHANDLE(args)->Get(0)); int mode = get_C_int(taskData, DEREFWORDHANDLE(args)->Get(1)); return open_file(taskData, name, mode, 0666, 1); } case 71: /* Posix.FileSys.createf - create a file with given mode and access. */ { Handle name = taskData->saveVec.push(DEREFWORDHANDLE(args)->Get(0)); int mode = get_C_int(taskData, DEREFWORDHANDLE(args)->Get(1)); int access = get_C_int(taskData, DEREFWORDHANDLE(args)->Get(2)); return open_file(taskData, name, mode|O_CREAT, access, 1); } default: { char msg[100]; sprintf(msg, "Unknown io function: %d", c); raise_exception_string(taskData, EXC_Fail, msg); return 0; } } } // General interface to IO. Ideally the various cases will be made into // separate functions. POLYUNSIGNED PolyBasicIOGeneral(PolyObject *threadId, PolyWord code, PolyWord strm, PolyWord arg) { TaskData *taskData = TaskData::FindTaskForId(threadId); ASSERT(taskData != 0); taskData->PreRTSCall(); Handle reset = taskData->saveVec.mark(); Handle pushedCode = taskData->saveVec.push(code); Handle pushedStrm = taskData->saveVec.push(strm); Handle pushedArg = taskData->saveVec.push(arg); Handle result = 0; try { result = IO_dispatch_c(taskData, pushedArg, pushedStrm, pushedCode); } catch (KillException &) { processes->ThreadExit(taskData); // TestAnyEvents may test for kill } catch (...) { } // If an ML exception is raised taskData->saveVec.reset(reset); taskData->PostRTSCall(); if (result == 0) return TAGGED(0).AsUnsigned(); else return result->Word().AsUnsigned(); } struct _entrypts basicIOEPT[] = { { "PolyChDir", (polyRTSFunction)&PolyChDir}, { "PolyBasicIOGeneral", (polyRTSFunction)&PolyBasicIOGeneral}, { NULL, NULL} // End of list. }; class BasicIO: public RtsModule { public: virtual void Init(void); virtual void Start(void); virtual void Stop(void); void GarbageCollect(ScanAddress *process); }; // Declare this. It will be automatically added to the table. static BasicIO basicIOModule; void BasicIO::Init(void) { max_streams = 20; // Initialise to the old Unix maximum. Will grow if necessary. /* A vector for the streams (initialised by calloc) */ basic_io_vector = (PIOSTRUCT)calloc(max_streams, sizeof(IOSTRUCT)); for (unsigned i = 0; i < max_streams; i++) basic_io_vector[i].token = ClosedToken; } void BasicIO::Start(void) { basic_io_vector[0].token = TAGGED(0); basic_io_vector[0].device.ioDesc = 0; basic_io_vector[0].ioBits = IO_BIT_OPEN | IO_BIT_READ; #if (defined(_WIN32) && ! defined(__CYGWIN__)) basic_io_vector[0].ioBits |= getFileType(0); // Set this to a duplicate of the handle so it can be closed when we // close the stream. HANDLE hDup; if (DuplicateHandle(GetCurrentProcess(), hInputEvent, GetCurrentProcess(), &hDup, 0, FALSE, DUPLICATE_SAME_ACCESS)) basic_io_vector[0].hAvailable = hDup; #endif basic_io_vector[1].token = TAGGED(1); basic_io_vector[1].device.ioDesc = 1; basic_io_vector[1].ioBits = IO_BIT_OPEN | IO_BIT_WRITE; #if (defined(_WIN32) && ! defined(__CYGWIN__)) basic_io_vector[1].ioBits |= getFileType(1); #endif basic_io_vector[2].token = TAGGED(2); basic_io_vector[2].device.ioDesc = 2; basic_io_vector[2].ioBits = IO_BIT_OPEN | IO_BIT_WRITE; #if (defined(_WIN32) && ! defined(__CYGWIN__)) basic_io_vector[2].ioBits |= getFileType(2); #endif return; } /* Release all resources. Not strictly necessary since the OS should do this but probably a good idea. */ void BasicIO::Stop(void) { if (basic_io_vector) { // Don't close the standard streams since we may need // stdout at least to produce final debugging output. for (unsigned i = 3; i < max_streams; i++) { if (isOpen(&basic_io_vector[i])) close_stream(&basic_io_vector[i]); } free(basic_io_vector); } basic_io_vector = NULL; } void BasicIO::GarbageCollect(ScanAddress *process) /* Ensures that all the objects are retained and their addresses updated. */ { /* Entries in the file table. These are marked as weak references so may return 0 for unreferenced streams. */ for(unsigned i = 0; i < max_streams; i++) { PIOSTRUCT str = &(basic_io_vector[i]); if (str->token.IsDataPtr()) { PolyObject *token = str->token.AsObjPtr(); process->ScanRuntimeAddress(&token, ScanAddress::STRENGTH_WEAK); /* Unreferenced streams may return zero. */ if (token == 0 && isOpen(str)) close_stream(str); str->token = token == 0 ? ClosedToken : token; } } } polyml-5.7.1/libpolyml/xwindows.h0000644000175000017500000000223013204034553016032 0ustar daviddavid/* Title: xwindows.h - export signature for xwindows.c, noxwindows.c Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* created 26/10/93 - SPF */ #ifndef XWINDOWS_H_INCLUDED #define XWINDOWS_H_INCLUDED class SaveVecEntry; typedef SaveVecEntry *Handle; class TaskData; extern Handle XWindows_c(TaskData *taskData, Handle params); extern struct _entrypts xwindowsEPT[]; #endif polyml-5.7.1/wininstall/0000755000175000017500000000000013204034553014163 5ustar daviddavidpolyml-5.7.1/wininstall/wininstall.wixproj0000644000175000017500000001021713204034553017774 0ustar daviddavid Debug x86 3.10 788ba1c9-699e-4f92-9faf-c7437a419042 2.0 PolyML Package $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets wininstall bin\$(Configuration)\ obj\$(Configuration)\ Debug bin\$(Configuration)\ obj\$(Configuration)\ Debug bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ bin\$(Platform)\$(Configuration)\ obj\$(Platform)\$(Configuration)\ PolyLib {0ba5d5b5-f85b-4c49-8a27-67186fa68922} True True Binaries;Content;Satellites INSTALLFOLDER PolyML {df3b373e-67df-4ab4-8b1e-f54c5810e2cf} True True Binaries;Content;Satellites INSTALLFOLDER PolyPerf {d9f58e8d-5fcd-4401-8d88-0c28732bd77b} True True Binaries;Content;Satellites INSTALLFOLDER polyicon {d4df6521-6183-4e24-a327-55c72519836e} True True Binaries;Content;Satellites INSTALLFOLDER $(WixExtDir)\WixUIExtension.dll WixUIExtension $(WixExtDir)\WixUtilExtension.dll WixUtilExtension polyml-5.7.1/wininstall/polyicon/0000755000175000017500000000000013204034553016017 5ustar daviddavidpolyml-5.7.1/wininstall/polyicon/polyicon.vcxproj0000644000175000017500000001636113204034553021277 0ustar daviddavid Debug Win32 Release Win32 Debug x64 Release x64 {D4DF6521-6183-4E24-A327-55C72519836E} Win32Proj polyicon Application true v140_xp Unicode Application false v140_xp true Unicode Application true v140_xp Unicode Application false v140_xp true Unicode true true false false NotUsing Level3 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true NotUsing Level3 Disabled _DEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true Level3 NotUsing MaxSpeed true true WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true Level3 NotUsing MaxSpeed true true NDEBUG;_WINDOWS;%(PreprocessorDefinitions) Windows true true true polyml-5.7.1/wininstall/polyicon/polyicon.c0000644000175000017500000000033213204034553020015 0ustar daviddavid#include // This is a dummy executable. It's only needed because the installer // needs an executable to hold the icon. int __stdcall WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR s, int n) { return 0; } polyml-5.7.1/wininstall/polyicon/polyicon.rc0000644000175000017500000000326713204034553020211 0ustar daviddavid//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "windows.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.K.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""windows.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDR_POLYICON ICON DISCARDABLE "..\\..\\poly.ico" #endif // English (U.K.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED polyml-5.7.1/wininstall/polyicon/resource.h0000644000175000017500000000067113204034553020023 0ustar daviddavid//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by polyicon.rc // #define IDR_POLYICON 128 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif polyml-5.7.1/wininstall/Licence.rtf0000644000175000017500000007112113204034553016244 0ustar daviddavid{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f28\froman\fcharset238\fprq2 Times New Roman CE;}{\f29\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f31\froman\fcharset161\fprq2 Times New Roman Greek;}{\f32\froman\fcharset162\fprq2 Times New Roman Tur;} {\f33\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f34\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f35\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f36\fswiss\fcharset238\fprq2 Arial CE;}{\f37\fswiss\fcharset204\fprq2 Arial Cyr;} {\f39\fswiss\fcharset161\fprq2 Arial Greek;}{\f40\fswiss\fcharset162\fprq2 Arial Tur;}{\f41\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f42\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f43\fswiss\fcharset186\fprq2 Arial Baltic;}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}}{\info{\author David Matthews}{\operator David Matthews}{\creatim\yr2009\mo11\dy8\hr11\min35}{\revtim\yr2009\mo11\dy8\hr11\min35} {\version2}{\edmins0}{\nofpages7}{\nofwords3479}{\nofchars19833}{\*\company }{\nofcharsws24356}{\vern8247}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701 \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl \fet0\sectd \linex0\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3 \pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}} {\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \qc \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f1\fs20 GNU LESSER GENERAL PUBLIC LICENSE \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20 Version 2.1, February 1999}{\f1 \par }{\f1\fs20 \par Copyright (C) 1991, 1999 Free Software Foundation, Inc.}{\f1 }{\f1\fs20 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA}{\f1 \par }{\f1\fs20 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.}{\f1 \par \par }{\f1\fs20 [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]}{\f1 \par \par }{\f1\fs20 Preamble}{\f1 \par \par }{\f1\fs20 The licenses for most software are designed to take away your freedom to share and change it. By contr ast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.}{\f1 \par \par }{\f1\fs20 This license, the Lesser General Public License, applies to some specially designated softw are packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strate gy to use in any particular case, based on the explanations below.}{\f1 \par \par }{\f1\fs20 When we speak of free software, we are referring to freedom of use,not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free s oftware (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.}{\f1 \par \par }{\f1\fs20 To protect yo ur rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify i t.}{\f1 \par \par }{\f1\fs20 For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the lib rary, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.}{\f1 \par \par }{\f1\fs20 We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.}{\f1 \par \par }{\f1\fs20 To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduc ed by others.}{\f1 \par \par }{\f1\fs20 Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Ther efore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.}{\f1 \par \par }{\f1\fs20 Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public Lice nse. We use this license for certain libraries in order to permit linking those libraries into non-free programs.}{\f1 \par \par }{\f1\fs20 When a program is linked with a library, whether statically or using}{\f1 \par }{\f1\fs20 a shared library, the combination of the two is legally speaking a combi ned work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.}{\f1 \par \par }{\f1\fs20 We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competi ng non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.}{\f1 \par \par }{\f1\fs20 For example, on rare occasions, there may be a spec ial need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely us ed non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.}{\f1 \par \par }{\f1\fs20 In other cases, permission to use a particular library in non-free programs enables a greater num ber of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.}{\f1 \par \par }{\f1\fs20 Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.}{\f1 \par \par }{\f1\fs20 The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latte r must be combined with the library in order to run.}{\f1 \par \par }\pard \qc \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\f1\fs20 GNU LESSER GENERAL PUBLIC LICENSE \par TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}{\f1 \par }{\f1\fs20 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20 0. This License Agreement applies to any software library or other program which contains a notice place d by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). \par Each licensee is addressed as "you".}{\f1 \par \par }{\f1\fs20 A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.}{\f1 \par \par }{\f1\fs20 The "Library", below, refers to any such software library or work which has been distributed under these terms . A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)}{\f1 \par \par }{\f1\fs20 "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code fo r all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.}{\f1 \par \par }{\f1\fs20 Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents con stitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.}{\f1 \par \par }{\f1\fs20 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.}{\f1 \par \par }{\f1\fs20 You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.}{\f1 \par \par }{\f1\fs20 2. You may mod ify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:}{\f1 \par \par }\pard \ql \li568\ri0\nowidctlpar\faauto\rin0\lin568\itap0 {\f1\fs20 a) The modified work must itself be a software library.}{\f1 \par \par }{\f1\fs20 b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.}{\f1 \par \par }{\f1\fs20 c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.}{\f1 \par \par }{\f1\fs20 d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.}{\f1 \par }\pard \ql \li568\ri0\nowidctlpar\tx568\faauto\rin0\lin568\itap0 {\f1 \par }{\f1\fs20 (For example, a function in a library to com pute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)}{\f1 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1 \par }{\f1\fs20 These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.}{\f1 \par \par }{\f1\fs20 Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.}{ \f1 \par \par }{\f1\fs20 In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.}{\f1 \par \par }{\f1\fs20 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Pub lic License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.}{\f1 \par \par }{\f1\fs20 Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.}{\f1 \par \par }{\f1\fs20 This option is useful when you wish to copy part of the code of the Library into a program that is not a library.}{\f1 \par \par }{\f1\fs20 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with th e complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.}{\f1 \par \par }{\f1\fs20 If distribution of object code is made by offering access to copy from a desi gnated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.}{\f1 \par \par }{\f1\fs20 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Lib rary, and therefore falls outside the scope of this License.}{\f1 \par \par }{\f1\fs20 However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.}{\f1 \par \par }{\f1\fs20 When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not p recisely defined by law.}{\f1 \par \par }{\f1\fs20 If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)}{\f1 \par \par }{\f1\fs20 Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.}{\f1 \par \par }{\f1\fs20 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse}{\f1 \par }{\f1\fs20 engineering for debugging such modifications.}{\f1 \par \par }{\f1\fs20 You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notic es, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:}{\f1 \par \par }{\f1\fs20 a) Accompany the work with the complete corresponding machine-readable s ource code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)}{\f1 \par \par }{\f1\fs20 b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the li brary already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is inte rface-compatible with the version that the work was made with.}{\f1 \par \par }{\f1\fs20 c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.}{\f1 \par \par }{\f1\fs20 d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.}{\f1 \par \par }{\f1\fs20 e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.}{\f1 \par \par }{\f1\fs20 For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.}{\f1 \par \par }{\f1\fs20 It may happen t hat this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribut e.}{\f1 \par \par }{\f1\fs20 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:}{\f1 \par \par }{\f1\fs20 a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.}{\f1 \par \par }{\f1\fs20 b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.}{\f1 \par \par }{\f1\fs20 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will a utomatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.}{\f1 \par \par }{\f1\fs20 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.}{\f1 \par \par }{\f1\fs20 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restricti ons on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.}{\f1 \par \par }{\f1\fs20 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (no t limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to sati s fy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by al l those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.}{\f1 \par \par }{\f1\fs20 If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.}{\f1 \par \par }{\f1\fs20 It is not the purpose of this section to induce you to infringe any patents or other property right clai ms or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wid e range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choic e.}{\f1 \par \par }{\f1\fs20 This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.}{\f1 \par \par }{\f1\fs20 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only i n or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.}{\f1 \par \par }{\f1\fs20 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from ti me to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.}{\f1 \par \par }{\f1\fs20 Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, yo u may choose any version ever published by the Free Software Foundation.}{\f1 \par \par }{\f1\fs20 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free softwa re and of promoting the sharing and reuse of software generally. \par }{\f1 \par }{\f1\fs20 NO WARRANTY \par }{\f1 \par }{\f1\fs20 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK A S TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.}{\f1 \par \par }{\f1\fs20 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYR IGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (IN C LUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.}{\f1 \par }{\f1\fs20 \par }{\f1 \par }}polyml-5.7.1/wininstall/PolyML.wxs0000644000175000017500000002371013204034553016105 0ustar daviddavid = 600)]]> polyml-5.7.1/mlsource/0000755000175000017500000000000013204034553013630 5ustar daviddavidpolyml-5.7.1/mlsource/BuildExport.sml0000644000175000017500000000323613204034553016612 0ustar daviddavid(* Copyright (c) 2006-10, 2015-16 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Compiler the compiler and export it as a portable file. The rest of the bootstrap process is then done when the portable file is imported. *) PolyML.print_depth 0; PolyML.make "mlsource/MLCompiler"; fun compileBasisAndExport() = let (* This function is the root of the "pre-built" compilers. It compiles in the basis library and exports the compiler along with the basis library as an operating-system specific object file. *) val globalTable : Make.gEnv = Make.makeGEnv () val test = List.exists (fn "--intIsIntInf" => true | _ => false) (CommandLine.arguments()) val () = Initialise.initGlobalEnv{globalTable=globalTable, intIsArbitraryPrecision=test} in Make.shellProc globalTable() end; PolyML.shareCommonData compileBasisAndExport; PolyML.exportPortable("polytemp", fn () => (compileBasisAndExport (); OS.Process.exit OS.Process.success) handle _ => OS.Process.exit OS.Process.failure); polyml-5.7.1/mlsource/extra/0000755000175000017500000000000013204034553014753 5ustar daviddavidpolyml-5.7.1/mlsource/extra/Motif/0000755000175000017500000000000013204034553016031 5ustar daviddavidpolyml-5.7.1/mlsource/extra/Motif/XmTypes.ML0000644000175000017500000007715013204034553017706 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XmTypes = struct local open MotifTypes XWindows in exception XmNaccelerator of string ; exception XmNacceleratorText of XmString ; exception XmNaccelerators of XtAccelerators ; exception XmNadjustLast of bool ; exception XmNadjustMargin of bool ; exception XmNalignment of XmAlignment ; exception XmNallowOverlap of bool ; exception XmNallowResize of bool ; exception XmNallowShellResize of bool ; exception XmNancestorSensitive of bool ; exception XmNapplyLabelString of XmString ; exception XmNargc of int ; exception XmNargv of string list ; exception XmNarmColor of int ; exception XmNarmPixmap of Drawable ; exception XmNarrowDirection of XmArrowDirection ; exception XmNautoShowCursorPosition of bool ; exception XmNautoUnmanage of bool ; exception XmNautomaticSelection of bool ; exception XmNbackground of int ; exception XmNbackgroundPixmap of Drawable ; exception XmNbaseHeight of int ; exception XmNbaseWidth of int ; exception XmNblinkRate of int ; exception XmNborderColor of int ; exception XmNborderPixmap of Drawable ; exception XmNborderWidth of int ; exception XmNbottomAttachment of XmAttachment ; exception XmNbottomOffset of int ; exception XmNbottomPosition of int ; exception XmNbottomShadowColor of int ; exception XmNbottomShadowPixmap of Drawable ; exception XmNbottomWidget of Widget ; exception XmNbuttonAcceleratorText of XmString list ; exception XmNbuttonAccelerators of string list ; exception XmNbuttonCount of int ; exception XmNbuttonFontList of (XFontStruct * string) list ; exception XmNbuttonMnemonicCharSets of XmString list ; exception XmNbuttonMnemonics of int list ; exception XmNbuttonSet of int ; exception XmNbuttonType of XmButtonType list ; exception XmNbuttons of XmString list ; exception XmNcancelButton of Widget ; exception XmNcancelLabelString of XmString ; exception XmNcascadePixmap of Drawable ; exception XmNchildren of Widget list ; exception XmNclipWindow of Widget ; exception XmNcolormap of Colormap ; exception XmNcolumns of int ; exception XmNcommand of XmString ; exception XmNcommandWindow of Widget ; exception XmNcommandWindowLocation of XmCommandWindowLocation ; exception XmNcursorPosition of int ; exception XmNcursorPositionVisible of bool ; exception XmNdecimalPoints of int ; exception XmNdefaultButton of Widget ; exception XmNdefaultButtonShadowThickness of int ; exception XmNdefaultButtonType of XmDefaultButtonType ; exception XmNdefaultFontList of (XFontStruct * string) list ; exception XmNdefaultPosition of bool ; exception XmNdeleteResponse of XmDeleteResponse ; exception XmNdepth of int ; exception XmNdialogStyle of XmDialogStyle ; exception XmNdialogTitle of XmString ; exception XmNdialogType of XmDialogType ; exception XmNdirListItemCount of int ; exception XmNdirListItems of XmString list ; exception XmNdirListLabelString of XmString ; exception XmNdirMask of XmString ; exception XmNdirSpec of XmString ; exception XmNdirectory of XmString ; exception XmNdirectoryValid of bool ; exception XmNdoubleClickInterval of int ; exception XmNeditMode of XmEditMode ; exception XmNeditable of bool ; exception XmNentryAlignment of XmAlignment ; exception XmNentryBorder of int ; exception XmNfileListItemCount of int ; exception XmNfileListItems of XmString list ; exception XmNfileListLabelString of XmString ; exception XmNfileTypeMask of XmFileTypeMask ; exception XmNfillOnArm of bool ; exception XmNfillOnSelect of bool ; exception XmNfilterLabelString of XmString ; exception XmNfontList of (XFontStruct * string) list ; exception XmNforeground of int ; exception XmNfractionBase of int ; exception XmNgeometry of string ; exception XmNheight of int ; exception XmNheightInc of int ; exception XmNhelpLabelString of XmString ; exception XmNhighlightColor of int ; exception XmNhighlightOnEnter of bool ; exception XmNhighlightPixmap of Drawable ; exception XmNhighlightThickness of int ; exception XmNhistoryItemCount of int ; exception XmNhistoryItems of XmString list ; exception XmNhistoryMaxItems of int ; exception XmNhistoryVisibleItemCount of int ; exception XmNhorizontalScrollBar of Widget ; exception XmNhorizontalSpacing of int ; exception XmNiconMask of Drawable ; exception XmNiconName of string ; exception XmNiconNameEncoding of int ; exception XmNiconPixmap of Drawable ; exception XmNiconWindow of Drawable ; exception XmNiconX of int ; exception XmNiconY of int ; exception XmNiconic of bool ; exception XmNincrement of int ; exception XmNindicatorOn of bool ; exception XmNindicatorSize of int ; exception XmNindicatorType of XmIndicatorType ; exception XmNinitialDelay of int ; exception XmNinitialResourcesPersistent of bool ; exception XmNinitialState of XWMStateHint ; exception XmNinput of bool ; exception XmNisAligned of bool ; exception XmNisHomogeneous of bool ; exception XmNitemCount of int ; exception XmNitems of XmString list ; exception XmNkeyboardFocusPolicy of XmKeyboardFocusPolicy ; exception XmNlabelFontList of (XFontStruct * string) list ; exception XmNlabelInsensitivePixmap of Drawable ; exception XmNlabelPixmap of Drawable ; exception XmNlabelString of XmString ; exception XmNlabelType of XmLabelType ; exception XmNleftAttachment of XmAttachment ; exception XmNleftOffset of int ; exception XmNleftPosition of int ; exception XmNleftWidget of Widget ; exception XmNlistItemCount of int ; exception XmNlistItems of XmString list ; exception XmNlistLabelString of XmString ; exception XmNlistMarginHeight of int ; exception XmNlistMarginWidth of int ; exception XmNlistSizePolicy of XmVisualPolicy ; exception XmNlistSpacing of int ; exception XmNlistUpdated of bool ; exception XmNlistVisibleItemCount of int ; exception XmNmainWindowMarginHeight of int ; exception XmNmainWindowMarginWidth of int ; exception XmNmappedWhenManaged of bool ; exception XmNmappingDelay of int ; exception XmNmargin of int ; exception XmNmarginBottom of int ; exception XmNmarginHeight of int ; exception XmNmarginLeft of int ; exception XmNmarginRight of int ; exception XmNmarginTop of int ; exception XmNmarginWidth of int ; exception XmNmaxAspectX of int ; exception XmNmaxAspectY of int ; exception XmNmaxHeight of int ; exception XmNmaxLength of int ; exception XmNmaxWidth of int ; exception XmNmaximum of int ; exception XmNmenuAccelerator of string ; exception XmNmenuBar of Widget ; exception XmNmenuCursor of Cursor ; exception XmNmenuHelpWidget of Widget ; exception XmNmenuHistory of Widget ; exception XmNmenuPost of string ; exception XmNmessageAlignment of XmAlignment ; exception XmNmessageString of XmString ; exception XmNmessageWindow of Widget ; exception XmNminAspectX of int ; exception XmNminAspectY of int ; exception XmNminHeight of int ; exception XmNminWidth of int ; exception XmNminimizeButtons of bool ; exception XmNminimum of int ; exception XmNmnemonic of int ; exception XmNmnemonicCharSet of string ; exception XmNmultiClick of XmMultiClickType ; exception XmNmustMatch of bool ; exception XmNmwmDecorations of int ; exception XmNmwmFunctions of int ; exception XmNmwmInputMode of int ; exception XmNmwmMenu of string ; exception XmNnavigationType of XmNavigationType ; exception XmNnoMatchString of XmString ; exception XmNnoResize of bool ; exception XmNnumChildren of int ; exception XmNnumColumns of int ; exception XmNokLabelString of XmString ; exception XmNoptionLabel of XmString ; exception XmNoptionMnemonic of int ; exception XmNorientation of XmOrientation ; exception XmNoverrideRedirect of bool ; exception XmNpacking of XmPacking ; exception XmNpageIncrement of int ; exception XmNpaneMaximum of int ; exception XmNpaneMinimum of int ; exception XmNpattern of XmString ; exception XmNpendingDelete of bool ; exception XmNpopupEnabled of bool ; exception XmNpostFromButton of int ; exception XmNprocessingDirection of XmProcessingDirection ; exception XmNpromptString of XmString ; exception XmNpushButtonEnabled of bool ; exception XmNradioAlwaysOne of bool ; exception XmNradioBehavior of bool ; exception XmNrecomputeSize of bool ; exception XmNrefigureMode of bool ; exception XmNrepeatDelay of int ; exception XmNresizable of bool ; exception XmNresizeHeight of bool ; exception XmNresizePolicy of XmResizePolicy ; exception XmNresizeWidth of bool ; exception XmNrightAttachment of XmAttachment ; exception XmNrightOffset of int ; exception XmNrightPosition of int ; exception XmNrightWidget of Widget ; exception XmNrowColumnType of XmRowColumnType ; exception XmNrows of int ; exception XmNrubberPositioning of bool ; exception XmNsashHeight of int ; exception XmNsashIndent of int ; exception XmNsashShadowThickness of int ; exception XmNsashWidth of int ; exception XmNsaveUnder of bool ; exception XmNscaleHeight of int ; exception XmNscaleMultiple of int ; exception XmNscaleWidth of int ; exception XmNscrollBarDisplayPolicy of XmScrollBarDisplayPolicy ; exception XmNscrollBarPlacement of XmScrollBarPlacement ; exception XmNscrollHorizontal of bool ; exception XmNscrollLeftSide of bool ; exception XmNscrollTopSide of bool ; exception XmNscrollVertical of bool ; exception XmNscrolledWindowMarginHeight of int ; exception XmNscrolledWindowMarginWidth of int ; exception XmNscrollingPolicy of XmScrollingPolicy ; exception XmNselectColor of int ; exception XmNselectInsensitivePixmap of Drawable ; exception XmNselectPixmap of Drawable ; exception XmNselectThreshold of int ; exception XmNselectedItemCount of int ; exception XmNselectedItems of XmString list ; exception XmNselectionArray of XmTextScanType list ; exception XmNselectionArrayCount of int ; exception XmNselectionLabelString of XmString ; exception XmNselectionPolicy of XmSelectionPolicy ; exception XmNsensitive of bool ; exception XmNseparatorOn of bool ; exception XmNseparatorType of XmShadowType ; exception XmNset of bool ; exception XmNshadowThickness of int ; exception XmNshadowType of XmShadowType ; exception XmNshellUnitType of XmUnitType ; exception XmNshowArrows of bool ; exception XmNshowAsDefault of int ; exception XmNshowSeparator of bool ; exception XmNshowValue of bool ; exception XmNskipAdjust of bool ; exception XmNsliderSize of int ; exception XmNspacing of int ; exception XmNstringDirection of XmStringDirection ; exception XmNsubMenuId of Widget ; exception XmNsymbolPixmap of Drawable ; exception XmNtextAccelerators of XtAccelerators ; exception XmNtextColumns of int ; exception XmNtextFontList of (XFontStruct * string) list ; exception XmNtextString of XmString ; exception XmNtextTranslations of XtTranslations ; exception XmNtitle of string ; exception XmNtitleEncoding of int ; exception XmNtitleString of XmString ; exception XmNtopAttachment of XmAttachment ; exception XmNtopCharacter of int ; exception XmNtopItemPosition of int ; exception XmNtopOffset of int ; exception XmNtopPosition of int ; exception XmNtopShadowColor of int ; exception XmNtopShadowPixmap of Drawable ; exception XmNtopWidget of Widget ; exception XmNtransient of bool ; exception XmNtransientFor of Widget ; exception XmNtranslations of XtTranslations ; exception XmNtraversalOn of bool ; exception XmNtroughColor of int ; exception XmNunitType of XmUnitType ; exception XmNuseAsyncGeometry of bool ; exception XmNvalue of int ; exception XmNverifyBell of bool ; exception XmNverticalScrollBar of Widget ; exception XmNverticalSpacing of int ; exception XmNvisibleItemCount of int ; exception XmNvisibleWhenOff of bool ; exception XmNvisual of Visual ; exception XmNvisualPolicy of XmVisualPolicy ; exception XmNwaitForWm of bool ; exception XmNwidth of int ; exception XmNwidthInc of int ; exception XmNwinGravity of int ; exception XmNwindowGroup of Drawable ; exception XmNwmTimeout of int ; exception XmNwordWrap of bool ; exception XmNworkWindow of Widget ; exception XmNx of int ; exception XmNy of int ; val XmCAccelerator = "Accelerator" ; val XmCAcceleratorText = "AcceleratorText" ; val XmCAccelerators = "Accelerators" ; val XmCAdjustLast = "AdjustLast" ; val XmCAdjustMargin = "AdjustMargin" ; val XmCAlignment = "Alignment" ; val XmCAllowOverlap = "AllowOverlap" ; val XmCAllowShellResize = "AllowShellResize" ; val XmCApplyLabelString = "ApplyLabelString" ; val XmCArgc = "Argc" ; val XmCArgv = "Argv" ; val XmCArmColor = "ArmColor" ; val XmCArmPixmap = "ArmPixmap" ; val XmCArrowDirection = "ArrowDirection" ; val XmCAttachment = "Attachment" ; val XmCAutoShowCursorPosition = "AutoShowCursorPosition" ; val XmCAutoUnmanage = "AutoUnmanage" ; val XmCAutomaticSelection = "AutomaticSelection" ; val XmCBackground = "Background" ; val XmCBackgroundPixmap = "BackgroundPixmap" ; val XmCBaseHeight = "BaseHeight" ; val XmCBaseWidth = "BaseWidth" ; val XmCBlinkRate = "BlinkRate" ; val XmCBoolean = "Boolean" ; val XmCBorderColor = "BorderColor" ; val XmCBorderWidth = "BorderWidth" ; val XmCBottomShadowColor = "BottomShadowColor" ; val XmCBottomShadowPixmap = "BottomShadowPixmap" ; val XmCButtonAcceleratorText = "ButtonAcceleratorText" ; val XmCButtonAccelerators = "ButtonAccelerators" ; val XmCButtonCount = "ButtonCount" ; val XmCButtonFontList = "ButtonFontList" ; val XmCButtonMnemonicCharSets = "ButtonMnemonicCharSets" ; val XmCButtonMnemonics = "ButtonMnemonics" ; val XmCButtonSet = "ButtonSet" ; val XmCButtonType = "ButtonType" ; val XmCButtons = "Buttons" ; val XmCCancelLabelString = "CancelLabelString" ; val XmCChildren = "Children" ; val XmCClipWindow = "ClipWindow" ; val XmCColormap = "Colormap" ; val XmCColumns = "Columns" ; val XmCCommandWindow = "CommandWindow" ; val XmCCommandWindowLocation = "CommandWindowLocation" ; val XmCCursor = "Cursor" ; val XmCCursorPosition = "CursorPosition" ; val XmCCursorPositionVisible = "CursorPositionVisible" ; val XmCDecimalPoints = "DecimalPoints" ; val XmCDefaultButtonShadowThickness = "DefaultButtonShadowThickness" ; val XmCDefaultButtonType = "DefaultButtonType" ; val XmCDefaultFontList = "DefaultFontList" ; val XmCDefaultPosition = "DefaultPosition" ; val XmCDeleteResponse = "DeleteResponse" ; val XmCDepth = "Depth" ; val XmCDialogStyle = "DialogStyle" ; val XmCDialogTitle = "DialogTitle" ; val XmCDialogType = "DialogType" ; val XmCDirListItemCount = "DirListItemCount" ; val XmCDirListItems = "DirListItems" ; val XmCDirListLabelString = "DirListLabelString" ; val XmCDirMask = "DirMask" ; val XmCDirSpec = "DirSpec" ; val XmCDirectory = "Directory" ; val XmCDirectoryValid = "DirectoryValid" ; val XmCDoubleClickInterval = "DoubleClickInterval" ; val XmCEditMode = "EditMode" ; val XmCEditable = "Editable" ; val XmCEntryBorder = "EntryBorder" ; val XmCFileListItemCount = "FileListItemCount" ; val XmCFileListItems = "FileListItems" ; val XmCFileListLabelString = "FileListLabelString" ; val XmCFileTypeMask = "FileTypeMask" ; val XmCFillOnArm = "FillOnArm" ; val XmCFillOnSelect = "FillOnSelect" ; val XmCFilterLabelString = "FilterLabelString" ; val XmCFontList = "FontList" ; val XmCForeground = "Foreground" ; val XmCFraction = "Fraction" ; val XmCGeometry = "Geometry" ; val XmCHeight = "Height" ; val XmCHeightInc = "HeightInc" ; val XmCHelpLabelString = "HelpLabelString" ; val XmCHighlightColor = "HighlightColor" ; val XmCHighlightOnEnter = "HighlightOnEnter" ; val XmCHighlightPixmap = "HighlightPixmap" ; val XmCHighlightThickness = "HighlightThickness" ; val XmCHorizontalScrollBar = "HorizontalScrollBar" ; val XmCIconMask = "IconMask" ; val XmCIconName = "IconName" ; val XmCIconNameEncoding = "IconNameEncoding" ; val XmCIconPixmap = "IconPixmap" ; val XmCIconWindow = "IconWindow" ; val XmCIconX = "IconX" ; val XmCIconY = "IconY" ; val XmCIconic = "Iconic" ; val XmCIncrement = "Increment" ; val XmCIndicatorOn = "IndicatorOn" ; val XmCIndicatorSize = "IndicatorSize" ; val XmCIndicatorType = "IndicatorType" ; val XmCInitialDelay = "InitialDelay" ; val XmCInitialResourcesPersistent = "InitialResourcesPersistent" ; val XmCInitialState = "InitialState" ; val XmCInput = "Input" ; val XmCIsAligned = "IsAligned" ; val XmCIsHomogeneous = "IsHomogeneous" ; val XmCItemCount = "ItemCount" ; val XmCItems = "Items" ; val XmCKeyboardFocusPolicy = "KeyboardFocusPolicy" ; val XmCLabelFontList = "LabelFontList" ; val XmCLabelInsensitivePixmap = "LabelInsensitivePixmap" ; val XmCLabelPixmap = "LabelPixmap" ; val XmCLabelString = "LabelString" ; val XmCLabelType = "LabelType" ; val XmCListLabelString = "ListLabelString" ; val XmCListMarginHeight = "ListMarginHeight" ; val XmCListMarginWidth = "ListMarginWidth" ; val XmCListSizePolicy = "ListSizePolicy" ; val XmCListSpacing = "ListSpacing" ; val XmCListUpdated = "ListUpdated" ; val XmCMainWindowMarginHeight = "MainWindowMarginHeight" ; val XmCMainWindowMarginWidth = "MainWindowMarginWidth" ; val XmCMappedWhenManaged = "MappedWhenManaged" ; val XmCMappingDelay = "MappingDelay" ; val XmCMargin = "Margin" ; val XmCMarginBottom = "MarginBottom" ; val XmCMarginHeight = "MarginHeight" ; val XmCMarginLeft = "MarginLeft" ; val XmCMarginRight = "MarginRight" ; val XmCMarginTop = "MarginTop" ; val XmCMarginWidth = "MarginWidth" ; val XmCMaxAspectX = "MaxAspectX" ; val XmCMaxAspectY = "MaxAspectY" ; val XmCMaxHeight = "MaxHeight" ; val XmCMaxItems = "MaxItems" ; val XmCMaxLength = "MaxLength" ; val XmCMaxWidth = "MaxWidth" ; val XmCMaximum = "Maximum" ; val XmCMenuBar = "MenuBar" ; val XmCMenuPost = "MenuPost" ; val XmCMenuWidget = "MenuWidget" ; val XmCMessageString = "MessageString" ; val XmCMessageWindow = "MessageWindow" ; val XmCMinAspectX = "MinAspectX" ; val XmCMinAspectY = "MinAspectY" ; val XmCMinHeight = "MinHeight" ; val XmCMinWidth = "MinWidth" ; val XmCMinimizeButtons = "MinimizeButtons" ; val XmCMinimum = "Minimum" ; val XmCMnemonic = "Mnemonic" ; val XmCMnemonicCharSet = "MnemonicCharSet" ; val XmCMultiClick = "MultiClick" ; val XmCMustMatch = "MustMatch" ; val XmCMwmDecorations = "MwmDecorations" ; val XmCMwmFunctions = "MwmFunctions" ; val XmCMwmInputMode = "MwmInputMode" ; val XmCMwmMenu = "MwmMenu" ; val XmCNavigationType = "NavigationType" ; val XmCNoMatchString = "NoMatchString" ; val XmCNoResize = "NoResize" ; val XmCNumChildren = "NumChildren" ; val XmCNumColumns = "NumColumns" ; val XmCOffset = "Offset" ; val XmCOkLabelString = "OkLabelString" ; val XmCOptionLabel = "OptionLabel" ; val XmCOptionMnemonic = "OptionMnemonic" ; val XmCOrientation = "Orientation" ; val XmCOverrideRedirect = "OverrideRedirect" ; val XmCPacking = "Packing" ; val XmCPageIncrement = "PageIncrement" ; val XmCPaneMaximum = "PaneMaximum" ; val XmCPaneMinimum = "PaneMinimum" ; val XmCPattern = "Pattern" ; val XmCPendingDelete = "PendingDelete" ; val XmCPixmap = "Pixmap" ; val XmCPopupEnabled = "PopupEnabled" ; val XmCPosition = "Position" ; val XmCPostFromButton = "PostFromButton" ; val XmCProcessingDirection = "ProcessingDirection" ; val XmCPromptString = "PromptString" ; val XmCPushButtonEnabled = "PushButtonEnabled" ; val XmCRadioAlwaysOne = "RadioAlwaysOne" ; val XmCRadioBehavior = "RadioBehavior" ; val XmCRecomputeSize = "RecomputeSize" ; val XmCRepeatDelay = "RepeatDelay" ; val XmCResizeHeight = "ResizeHeight" ; val XmCResizePolicy = "ResizePolicy" ; val XmCResizeWidth = "ResizeWidth" ; val XmCRowColumnType = "RowColumnType" ; val XmCRows = "Rows" ; val XmCRubberPositioning = "RubberPositioning" ; val XmCSashHeight = "SashHeight" ; val XmCSashIndent = "SashIndent" ; val XmCSashWidth = "SashWidth" ; val XmCSaveUnder = "SaveUnder" ; val XmCScaleHeight = "ScaleHeight" ; val XmCScaleMultiple = "ScaleMultiple" ; val XmCScaleWidth = "ScaleWidth" ; val XmCScroll = "Scroll" ; val XmCScrollBarDisplayPolicy = "ScrollBarDisplayPolicy" ; val XmCScrollBarPlacement = "ScrollBarPlacement" ; val XmCScrollSide = "ScrollSide" ; val XmCScrolledWindowMarginHeight = "ScrolledWindowMarginHeight" ; val XmCScrolledWindowMarginWidth = "ScrolledWindowMarginWidth" ; val XmCScrollingPolicy = "ScrollingPolicy" ; val XmCSelectColor = "SelectColor" ; val XmCSelectInsensitivePixmap = "SelectInsensitivePixmap" ; val XmCSelectPixmap = "SelectPixmap" ; val XmCSelectThreshold = "SelectThreshold" ; val XmCSelectedItemCount = "SelectedItemCount" ; val XmCSelectedItems = "SelectedItems" ; val XmCSelectionArray = "SelectionArray" ; val XmCSelectionArrayCount = "SelectionArrayCount" ; val XmCSelectionLabelString = "SelectionLabelString" ; val XmCSelectionPolicy = "SelectionPolicy" ; val XmCSensitive = "Sensitive" ; val XmCSeparatorOn = "SeparatorOn" ; val XmCSeparatorType = "SeparatorType" ; val XmCSet = "Set" ; val XmCShadowThickness = "ShadowThickness" ; val XmCShadowType = "ShadowType" ; val XmCShellUnitType = "ShellUnitType" ; val XmCShowArrows = "ShowArrows" ; val XmCShowAsDefault = "ShowAsDefault" ; val XmCShowSeparator = "ShowSeparator" ; val XmCShowValue = "ShowValue" ; val XmCSliderSize = "SliderSize" ; val XmCSpacing = "Spacing" ; val XmCStringDirection = "StringDirection" ; val XmCTextFontList = "TextFontList" ; val XmCTextPosition = "TextPosition" ; val XmCTextString = "TextString" ; val XmCTitle = "Title" ; val XmCTitleEncoding = "TitleEncoding" ; val XmCTitleString = "TitleString" ; val XmCTopItemPosition = "TopItemPosition" ; val XmCTopShadowColor = "TopShadowColor" ; val XmCTopShadowPixmap = "TopShadowPixmap" ; val XmCTransient = "Transient" ; val XmCTransientFor = "TransientFor" ; val XmCTranslations = "Translations" ; val XmCTraversalOn = "TraversalOn" ; val XmCTroughColor = "TroughColor" ; val XmCUnitType = "UnitType" ; val XmCUseAsyncGeometry = "UseAsyncGeometry" ; val XmCValue = "Value" ; val XmCVerifyBell = "VerifyBell" ; val XmCVerticalScrollBar = "VerticalScrollBar" ; val XmCVisibleItemCount = "VisibleItemCount" ; val XmCVisibleWhenOff = "VisibleWhenOff" ; val XmCVisual = "Visual" ; val XmCVisualPolicy = "VisualPolicy" ; val XmCWaitForWm = "WaitForWm" ; val XmCWidget = "Widget" ; val XmCWidth = "Width" ; val XmCWidthInc = "WidthInc" ; val XmCWinGravity = "WinGravity" ; val XmCWindowGroup = "WindowGroup" ; val XmCWmTimeout = "WmTimeout" ; val XmCWordWrap = "WordWrap" ; val XmCWorkWindow = "WorkWindow" ; val XmCX = "X" ; val XmCY = "Y" ; end (* local *) ; end (* struct *) ; polyml-5.7.1/mlsource/extra/Motif/makeInitials.awk0000644000175000017500000000650113204034553021151 0ustar daviddavid/NOT SUPPORTED/ { exit } { if ( NF >= 2 && $3 != "(callback)" ) { type = "unknown" ; if ( $3 =="Atom" ) type = "XmRAtom" ; if ( $3 =="Cardinal" ) type = "XmRCardinal" ; if ( $3 =="Colormap" ) type = "XmRColormap" ; if ( $3 =="Cursor" ) type = "XmRCursor" ; if ( $3 =="Dimension" ) type = "XmRDimension" ; if ( $3 =="Drawable" ) type = "XmRPixmap" ; if ( $3 =="KeySym" ) type = "XmRKeySym" ; if ( $3 =="KeySym" && $4 == "list" ) type = "XmRKeySymTable" ; if ( $3 =="Pixel" ) type = "XmRPixel" ; if ( $3 =="Position" ) type = "XmRPosition" ; if ( $3 =="Visual" ) type = "XmRVisual" ; if ( $3 =="Widget" ) type = "XmRWidget" ; if ( $3 =="Widget" && $4 == "list" ) type = "XmRWidgetList" ; if ( $3 =="XFontStruct" && $4 == "list" ) type = "XmRFontList" ; if ( $3 =="XWMStateHint" ) type = "XmRInitialState" ; if ( $3 =="XtAccelerators" ) type = "XmRAcceleratorTable" ; if ( $3 =="XmAlignment" ) type = "XmRAlignment" ; if ( $3 =="XmArrowDirection" ) type = "XmRArrowDirection" ; if ( $3 =="XmAttachment" ) type = "XmRAttachment" ; if ( $3 =="XmButtonType" && $4 == "list" ) type = "XmRButtonTypeTable" ; if ( $3 =="XmCommandWindowLocation" ) type = "XmRCommandWindowLocation" ; if ( $3 =="XmDefaultButtonType" ) type = "XmRDefaultButtonType" ; if ( $3 =="XmDeleteResponse" ) type = "XmRDeleteResponse" ; if ( $3 =="XmDialogStyle" ) type = "XmRDialogStyle" ; if ( $3 =="XmDialogType" ) type = "XmRDialogType" ; if ( $3 =="XmEditMode" ) type = "XmREditMode" ; if ( $3 =="XmFileTypeMask" ) type = "XmRFileTypeMask" ; if ( $3 =="XmIndicatorType" ) type = "XmRIndicatorType" ; if ( $3 =="XmKeyboardFocusPolicy" ) type = "XmRKeyboardFocusPolicy" ; if ( $3 =="XmLabelType" ) type = "XmRLabelType" ; if ( $3 =="XmMultiClickType" ) type = "XmRMultiClick" ; if ( $3 =="XmNavigationType" ) type = "XmRNavigationType" ; if ( $3 =="XmOrientation" ) type = "XmROrientation" ; if ( $3 =="XmPacking" ) type = "XmRPacking" ; if ( $3 =="XmProcessingDirection" ) type = "XmRProcessingDirection" ; if ( $3 =="XmResizePolicy" ) type = "XmRResizePolicy" ; if ( $3 =="XmRowColumnType" ) type = "XmRRowColumnType" ; if ( $3 =="XmScrollBarDisplayPolicy" ) type = "XmRScrollBarDisplayPolicy" ; if ( $3 =="XmScrollBarPlacement" ) type = "XmRScrollBarPlacement" ; if ( $3 =="XmScrollingPolicy" ) type = "XmRScrollingPolicy" ; if ( $3 =="XmSelectionPolicy" ) type = "XmRSelectionPolicy" ; if ( $3 =="XmShadowType" ) type = "XmRShadowType" ; if ( $3 =="XmString" ) type = "XmRXmString" ; if ( $3 =="XmString" && $4 == "list" ) type = "XmRXmStringTable" ; if ( $3 =="XmStringDirection" ) type = "XmRStringDirection" ; if ( $3 =="XmTextPosition" ) type = "XmRInt" ; if ( $3 =="XmTextScanType" && $4 == "list" ) type = "XmRTextScanTypeTable" ; if ( $3 =="XmUnitType" ) type = "XmRUnitType" ; if ( $3 =="XmVisualPolicy" ) type = "XmRVisualPolicy" ; if ( $3 =="XtTranslations" ) type = "XmRTranslationTable" ; if ( $3 =="bool" ) type = "XmRBool" ; if ( $3 =="int" ) type = "XmRInt" ; if ( $3 =="short" ) type = "XmRShort" ; if ( $3 =="string" ) type = "XmRString" ; if ( $3 =="string" && $4 == "list" ) type = "XmRStringTable" ; printf ("val U = XtSetExceptionType %s %s ;\n",$1,type) } } polyml-5.7.1/mlsource/extra/Motif/ml_bind.ML0000644000175000017500000007214713204034553017702 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Motif: MOTIF_SIG = struct open MotifTypes; open XmTypes; open MotifCore; local open XWindows; open XCall; open InitialiseCore; in (******************************************************************************) (* *) (* A few Xt operations *) (* *) (******************************************************************************) val NoWidget:Widget = xcall (XCALL_NoWidget,0); fun WidgetID (w:Widget):int = xcall (XCALL_GetID,w); fun WidgetExists (w:Widget):bool = xcall (XCALL_ResourceExists,w); fun XtParseTranslationTable (s:string):XtTranslations = xcall (XCALL_XtParseTranslationTable,s); fun XtOverrideTranslations (w:Widget) (t:XtTranslations):unit = xcall (XCALL_XtOverrideTranslations,w,t); fun XtAugmentTranslations (w:Widget) (t:XtTranslations):unit = xcall (XCALL_XtAugmentTranslations,w,t); fun XtUninstallTranslations (w:Widget):unit = xcall (XCALL_XtUninstallTranslations,w); (* SPF 14/2/94 not currently supported by run-time ... fun XtTranslateTablePrint (t:XtTranslations):unit = xcall (XCALL_XtTranslateTablePrint,t); ... *) fun XtTranslateTablePrint (t:XtTranslations):unit = raise XWindows "XtTranslateTablePrint: not supported"; fun XtParent (w:Widget):Widget = xcall (XCALL_XtParent,w); fun XtWindow (w:Widget):Drawable = xcall (XCALL_XtWindow,w); fun XtDisplay (w:Widget):Display = xcall (XCALL_XtDisplay,w); fun XtName (w:Widget):string = xcall (XCALL_XtName,w); fun XtAppInitialise (D:string) (A:string) (C:string) (F:string list) (L:Arg list):Widget = let val shell = xcall (XCALL_AppInitialise,D,A,C,F,XtSetExnVals L); val display = XtDisplay shell; in XStartDisplayHandler display; shell end; fun XtCreatePopupShell (name:string) (parent:Widget) (L:Arg list):Widget = xcall (XCALL_XtCreatePopupShell,name,parent,XtSetExnVals L); fun XtRealizeWidget (w:Widget):unit = xcall (XCALL_XtRealizeWidget,w); fun XtUnrealizeWidget (w:Widget):unit = xcall (XCALL_XtUnrealizeWidget,w); fun XtDestroyWidget (w:Widget):unit = xcall (XCALL_XtDestroyWidget,w); fun XtManageChildren (L:Widget list):unit = xcall (XCALL_XtManageChildren,L); fun XtUnmanageChildren (L:Widget list):unit = xcall (XCALL_XtUnmanageChildren,L); fun XtManageChild w = XtManageChildren [w]; fun XtUnmanageChild w = XtUnmanageChildren [w]; fun XtSetValues (w:Widget) (L:Arg list):unit = xcall (XCALL_XtSetValues,w,XtSetExnVals L); fun XtSetValue w a = XtSetValues w [a]; fun XtGetValues w = map (XtGetValue w); (******************************************************************************) (* *) (* A few more Xt operations (SPF 6/12/94, 19/1/95) *) (* *) (******************************************************************************) datatype XtGrabKind = XtGrabNone | XtGrabNonexclusive | XtGrabExclusive; fun XtPopup (w: Widget) XtGrabNone : unit = xcall (XCALL_XtPopup,w,0) | XtPopup (w: Widget) XtGrabNonexclusive : unit = xcall (XCALL_XtPopup,w,1) | XtPopup (w: Widget) XtGrabExclusive : unit = xcall (XCALL_XtPopup,w,2); fun XtPopdown (w: Widget) : unit = xcall (XCALL_XtPopdown,w); fun XtMapWidget (w: Widget) : unit = xcall (XCALL_XtMapWidget,w); fun XtUnmapWidget (w: Widget) : unit = xcall (XCALL_XtUnmapWidget,w); fun XtIsManaged (w:Widget):bool = xcall (XCALL_XtIsManaged,w); fun XtIsRealized (w:Widget):bool = xcall (XCALL_XtIsRealized,w); (******************************************************************************) (* *) (* Motif Callbacks *) (* *) (******************************************************************************) datatype XtCallback = XmNactivateCallback | XmNapplyCallback | XmNarmCallback | XmNbrowseSelectionCallback | XmNcancelCallback | XmNcascadingCallback | XmNcommandChangedCallback | XmNcommandEnteredCallback | XmNdecrementCallback | XmNdefaultActionCallback | XmNdestroyCallback | XmNdisarmCallback | XmNdragCallback | XmNentryCallback | XmNexposeCallback | XmNextendedSelectionCallback | XmNfocusCallback | XmNgainPrimaryCallback | XmNhelpCallback | XmNincrementCallback | XmNinputCallback | XmNlosePrimaryCallback | XmNlosingFocusCallback | XmNmapCallback | XmNmessageCallback (* this callback gets Message XEvents only *) | XmNmodifyVerifyCallback | XmNmotionVerifyCallback | XmNmultipleSelectionCallback | XmNnoMatchCallback | XmNokCallback | XmNpageDecrementCallback | XmNpageIncrementCallback | XmNpopdownCallback | XmNpopupCallback | XmNresizeCallback | XmNsimpleCallback | XmNsingleSelectionCallback | XmNtoBottomCallback | XmNtoTopCallback | XmNunmapCallback | XmNvalueChangedCallback; local fun Name XmNactivateCallback = "activateCallback" | Name XmNapplyCallback = "applyCallback" | Name XmNarmCallback = "armCallback" | Name XmNbrowseSelectionCallback = "browseSelectionCallback" | Name XmNcancelCallback = "cancelCallback" | Name XmNcascadingCallback = "cascadingCallback" | Name XmNcommandChangedCallback = "commandChangedCallback" | Name XmNcommandEnteredCallback = "commandEnteredCallback" | Name XmNdecrementCallback = "decrementCallback" | Name XmNdefaultActionCallback = "defaultActionCallback" | Name XmNdestroyCallback = "destroyCallback" | Name XmNdisarmCallback = "disarmCallback" | Name XmNdragCallback = "dragCallback" | Name XmNentryCallback = "entryCallback" | Name XmNexposeCallback = "exposeCallback" | Name XmNextendedSelectionCallback = "extendedSelectionCallback" | Name XmNfocusCallback = "focusCallback" | Name XmNgainPrimaryCallback = "gainPrimaryCallback" | Name XmNhelpCallback = "helpCallback" | Name XmNincrementCallback = "incrementCallback" | Name XmNinputCallback = "inputCallback" | Name XmNlosePrimaryCallback = "losePrimaryCallback" | Name XmNlosingFocusCallback = "losingFocusCallback" | Name XmNmapCallback = "mapCallback" | Name XmNmessageCallback = "messageCallback" | Name XmNmodifyVerifyCallback = "modifyVerifyCallback" | Name XmNmotionVerifyCallback = "motionVerifyCallback" | Name XmNmultipleSelectionCallback = "multipleSelectionCallback" | Name XmNnoMatchCallback = "noMatchCallback" | Name XmNokCallback = "okCallback" | Name XmNpageDecrementCallback = "pageDecrementCallback" | Name XmNpageIncrementCallback = "pageIncrementCallback" | Name XmNpopdownCallback = "popdownCallback" | Name XmNpopupCallback = "popupCallback" | Name XmNresizeCallback = "resizeCallback" | Name XmNsimpleCallback = "simpleCallback" | Name XmNsingleSelectionCallback = "singleSelectionCallback" | Name XmNtoBottomCallback = "toBottomCallback" | Name XmNtoTopCallback = "toTopCallback" | Name XmNunmapCallback = "unmapCallback" | Name XmNvalueChangedCallback = "valueChangedCallback"; in fun XtSetCallbacks (w:Widget) (L:(XtCallback * (Widget * 'a XEvent * '_b -> '_b)) list) (initialState:'_b) = let fun NameCallbacks [] = [] | NameCallbacks ((c,f)::T) = (Name c,f) :: NameCallbacks T; datatype 'a option = None | Some of 'a; fun FindMessageCallback [] = None | FindMessageCallback ((XmNmessageCallback,f)::_) = Some f | FindMessageCallback (_::T) = FindMessageCallback T; val M = FindMessageCallback L; in xcall (XCALL_SetCallbacks,w,NameCallbacks L,initialState); fn (ms:int) => fn (alpha:'a) => case M of Some f => xcall (XCALL_InsertWidgetTimeout,w,ms,alpha,f) | None => () end; end; fun XtSetSensitive (w:Widget) (s:bool):unit = xcall (XCALL_XtSetSensitive,w,s); fun XtIsSensitive (w:Widget):bool = xcall (XCALL_XtIsSensitive,w); (******************************************************************************) (* *) (* Motif Widget Creation Routines *) (* *) (******************************************************************************) local fun CreateXm (n:int) (p:Widget) (s:string) (L:Arg list):Widget = xcall (n,p,s,XtSetExnVals L); in val XmCreateArrowButton = CreateXm XCALL_XmCreateArrowButton; val XmCreateArrowButtonGadget = CreateXm XCALL_XmCreateArrowButtonGadget; val XmCreateBulletinBoard = CreateXm XCALL_XmCreateBulletinBoard; val XmCreateBulletinBoardDialog = CreateXm XCALL_XmCreateBulletinBoardDialog; val XmCreateCascadeButton = CreateXm XCALL_XmCreateCascadeButton; val XmCreateCascadeButtonGadget = CreateXm XCALL_XmCreateCascadeButtonGadget; val XmCreateCommand = CreateXm XCALL_XmCreateCommand; val XmCreateDialogShell = CreateXm XCALL_XmCreateDialogShell; val XmCreateDrawingArea = CreateXm XCALL_XmCreateDrawingArea; val XmCreateDrawnButton = CreateXm XCALL_XmCreateDrawnButton; val XmCreateErrorDialog = CreateXm XCALL_XmCreateErrorDialog; val XmCreateFileSelectionBox = CreateXm XCALL_XmCreateFileSelectionBox; val XmCreateFileSelectionDialog = CreateXm XCALL_XmCreateFileSelectionDialog; val XmCreateForm = CreateXm XCALL_XmCreateForm; val XmCreateFormDialog = CreateXm XCALL_XmCreateFormDialog; val XmCreateFrame = CreateXm XCALL_XmCreateFrame; val XmCreateInformationDialog = CreateXm XCALL_XmCreateInformationDialog; val XmCreateLabel = CreateXm XCALL_XmCreateLabel; val XmCreateLabelGadget = CreateXm XCALL_XmCreateLabelGadget; val XmCreateList = CreateXm XCALL_XmCreateList; val XmCreateMainWindow = CreateXm XCALL_XmCreateMainWindow; val XmCreateMenuBar = CreateXm XCALL_XmCreateMenuBar; val XmCreateMenuShell = CreateXm XCALL_XmCreateMenuShell; val XmCreateMessageBox = CreateXm XCALL_XmCreateMessageBox; val XmCreateMessageDialog = CreateXm XCALL_XmCreateMessageDialog; val XmCreateOptionMenu = CreateXm XCALL_XmCreateOptionMenu; val XmCreatePanedWindow = CreateXm XCALL_XmCreatePanedWindow; val XmCreatePopupMenu = CreateXm XCALL_XmCreatePopupMenu; val XmCreatePromptDialog = CreateXm XCALL_XmCreatePromptDialog; val XmCreatePulldownMenu = CreateXm XCALL_XmCreatePulldownMenu; val XmCreatePushButton = CreateXm XCALL_XmCreatePushButton; val XmCreatePushButtonGadget = CreateXm XCALL_XmCreatePushButtonGadget; val XmCreateQuestionDialog = CreateXm XCALL_XmCreateQuestionDialog; val XmCreateRadioBox = CreateXm XCALL_XmCreateRadioBox; val XmCreateRowColumn = CreateXm XCALL_XmCreateRowColumn; val XmCreateScale = CreateXm XCALL_XmCreateScale; val XmCreateScrollBar = CreateXm XCALL_XmCreateScrollBar; val XmCreateScrolledList = CreateXm XCALL_XmCreateScrolledList; val XmCreateScrolledText = CreateXm XCALL_XmCreateScrolledText; val XmCreateScrolledWindow = CreateXm XCALL_XmCreateScrolledWindow; val XmCreateSelectionBox = CreateXm XCALL_XmCreateSelectionBox; val XmCreateSelectionDialog = CreateXm XCALL_XmCreateSelectionDialog; val XmCreateSeparator = CreateXm XCALL_XmCreateSeparator; val XmCreateSeparatorGadget = CreateXm XCALL_XmCreateSeparatorGadget; val XmCreateSimpleCheckBox = CreateXm XCALL_XmCreateSimpleCheckBox; val XmCreateSimpleMenuBar = CreateXm XCALL_XmCreateSimpleMenuBar; val XmCreateSimpleOptionMenu = CreateXm XCALL_XmCreateSimpleOptionMenu; val XmCreateSimplePopupMenu = CreateXm XCALL_XmCreateSimplePopupMenu; val XmCreateSimplePulldownMenu = CreateXm XCALL_XmCreateSimplePulldownMenu; val XmCreateSimpleRadioBox = CreateXm XCALL_XmCreateSimpleRadioBox; val XmCreateText = CreateXm XCALL_XmCreateText; val XmCreateTextField = CreateXm XCALL_XmCreateTextField; val XmCreateToggleButton = CreateXm XCALL_XmCreateToggleButton; val XmCreateToggleButtonGadget = CreateXm XCALL_XmCreateToggleButtonGadget; val XmCreateWarningDialog = CreateXm XCALL_XmCreateWarningDialog; val XmCreateWorkArea = CreateXm XCALL_XmCreateWorkArea; val XmCreateWorkingDialog = CreateXm XCALL_XmCreateWorkingDialog; end; (******************************************************************************) (* *) (* Motif Widget Query Routines *) (* *) (******************************************************************************) fun XmIsArrowButton (w:Widget):bool = xcall(XCALL_XmIsSomething, 1,w); fun XmIsArrowButtonGadget (w:Widget):bool = xcall(XCALL_XmIsSomething, 2,w); fun XmIsBulletinBoard (w:Widget):bool = xcall(XCALL_XmIsSomething, 3,w); fun XmIsCascadeButton (w:Widget):bool = xcall(XCALL_XmIsSomething, 4,w); fun XmIsCascadeButtonGadget (w:Widget):bool = xcall(XCALL_XmIsSomething, 5,w); fun XmIsCommand (w:Widget):bool = xcall(XCALL_XmIsSomething, 6,w); fun XmIsDesktopObject (w:Widget):bool = xcall(XCALL_XmIsSomething, 7,w); fun XmIsDialogShell (w:Widget):bool = xcall(XCALL_XmIsSomething, 8,w); (* unsupported by solaris version of toolkit ... fun XmIsDisplayObject (w:Widget):bool = xcall(XCALL_XmIsSomething, 9,w); ... *) fun XmIsDrawingArea (w:Widget):bool = xcall(XCALL_XmIsSomething,10,w); fun XmIsDrawnButton (w:Widget):bool = xcall(XCALL_XmIsSomething,11,w); fun XmIsExtObject (w:Widget):bool = xcall(XCALL_XmIsSomething,12,w); fun XmIsFileSelectionBox (w:Widget):bool = xcall(XCALL_XmIsSomething,13,w); fun XmIsForm (w:Widget):bool = xcall(XCALL_XmIsSomething,14,w); fun XmIsFrame (w:Widget):bool = xcall(XCALL_XmIsSomething,15,w); fun XmIsGadget (w:Widget):bool = xcall(XCALL_XmIsSomething,16,w); fun XmIsLabel (w:Widget):bool = xcall(XCALL_XmIsSomething,17,w); fun XmIsLabelGadget (w:Widget):bool = xcall(XCALL_XmIsSomething,18,w); fun XmIsList (w:Widget):bool = xcall(XCALL_XmIsSomething,19,w); fun XmIsMainWindow (w:Widget):bool = xcall(XCALL_XmIsSomething,20,w); fun XmIsManager (w:Widget):bool = xcall(XCALL_XmIsSomething,21,w); fun XmIsMenuShell (w:Widget):bool = xcall(XCALL_XmIsSomething,22,w); fun XmIsMessageBox (w:Widget):bool = xcall(XCALL_XmIsSomething,23,w); fun XmIsMotifWMRunning (w:Widget):bool = xcall(XCALL_XmIsSomething,24,w); fun XmIsPanedWindow (w:Widget):bool = xcall(XCALL_XmIsSomething,25,w); fun XmIsPrimitive (w:Widget):bool = xcall(XCALL_XmIsSomething,26,w); fun XmIsPushButton (w:Widget):bool = xcall(XCALL_XmIsSomething,27,w); fun XmIsPushButtonGadget (w:Widget):bool = xcall(XCALL_XmIsSomething,28,w); fun XmIsRowColumn (w:Widget):bool = xcall(XCALL_XmIsSomething,29,w); fun XmIsScale (w:Widget):bool = xcall(XCALL_XmIsSomething,30,w); (* unsupported by solaris version of toolkit ... fun XmIsScreenObject (w:Widget):bool = xcall(XCALL_XmIsSomething,31,w); ... *) fun XmIsScrollBar (w:Widget):bool = xcall(XCALL_XmIsSomething,32,w); fun XmIsScrolledWindow (w:Widget):bool = xcall(XCALL_XmIsSomething,33,w); fun XmIsSelectionBox (w:Widget):bool = xcall(XCALL_XmIsSomething,34,w); fun XmIsSeparator (w:Widget):bool = xcall(XCALL_XmIsSomething,35,w); fun XmIsSeparatorGadget (w:Widget):bool = xcall(XCALL_XmIsSomething,36,w); fun XmIsShellExt (w:Widget):bool = xcall(XCALL_XmIsSomething,37,w); fun XmIsText (w:Widget):bool = xcall(XCALL_XmIsSomething,38,w); fun XmIsTextField (w:Widget):bool = xcall(XCALL_XmIsSomething,39,w); fun XmIsToggleButton (w:Widget):bool = xcall(XCALL_XmIsSomething,40,w); fun XmIsToggleButtonGadget (w:Widget):bool = xcall(XCALL_XmIsSomething,41,w); fun XmIsVendorShell (w:Widget):bool = xcall(XCALL_XmIsSomething,42,w); fun XmIsVendorShellExt (w:Widget):bool = xcall(XCALL_XmIsSomething,43,w); (* Not supported in Motif 1.2 fun XmIsWorldObject (w:Widget):bool = xcall(XCALL_XmIsSomething,44,w); *) (******************************************************************************) (* *) (* Operations valid for specific Widget classes only *) (* *) (******************************************************************************) fun XmCascadeButtonHighlight (w:Widget) (b:bool):unit = xcall (XCALL_XmCascadeButtonHighlight,w,b); fun XmCommandError (w:Widget) (s:XmString):unit = xcall (XCALL_XmCommandError,w,s); fun XmCommandGetChild (w:Widget) (b:XmDefaultButtonType):Widget = xcall (XCALL_XmCommandGetChild,w,fromDefaultButtonType b); fun XmFileSelectionBoxGetChild (w:Widget) (b:XmDefaultButtonType):Widget = xcall (XCALL_XmFileSelectionBoxGetChild,w,fromDefaultButtonType b); fun XmFileSelectionDoSearch (w:Widget) (s:XmString):unit = xcall (XCALL_XmFileSelectionDoSearch,w,s); fun XmMainWindowSetAreas (a:Widget) (b:Widget) (c:Widget) (d:Widget) (e:Widget) (f:Widget):unit = xcall (XCALL_XmMainWindowSetAreas,a,b,c,d,e,f); fun XmMainWindowSep1 (w:Widget):Widget = xcall (XCALL_XmMainWindowSepX,w,1); fun XmMainWindowSep2 (w:Widget):Widget = xcall (XCALL_XmMainWindowSepX,w,2); fun XmMainWindowSep3 (w:Widget):Widget = xcall (XCALL_XmMainWindowSepX,w,3); fun XmMessageBoxGetChild (w:Widget) (b:XmDefaultButtonType):Widget = xcall (XCALL_XmMessageBoxGetChild,w,fromDefaultButtonType b); fun XmOptionButtonGadget (w:Widget):Widget = xcall (XCALL_XmOptionButtonGadget,w); fun XmOptionLabelGadget (w:Widget):Widget = xcall (XCALL_XmOptionLabelGadget,w); fun XmScrolledWindowSetAreas (a:Widget) (b:Widget) (c:Widget) (d:Widget):unit = xcall (XCALL_XmScrolledWindowSetAreas,a,b,c,d); fun XmSelectionBoxGetChild (w:Widget) (b:XmDefaultButtonType):Widget = xcall (XCALL_XmSelectionBoxGetChild,w,fromDefaultButtonType b); fun XmSetMenuCursor (d:Display) (c:Cursor):unit = xcall (XCALL_XmSetMenuCursor,d,c); fun XmTrackingLocate (w:Widget) (c:Cursor) (b:bool):Widget = xcall (XCALL_XmTrackingLocate,w,c,b); fun XmUpdateDisplay (w:Widget):unit = xcall (XCALL_XmUpdateDisplay,w); local type code = int; fun get (opn : code) : Widget -> '_a = fn (w:Widget) => xcall (opn,w); fun set (opn : code) : Widget -> '_a -> unit = fn (w:Widget) => fn(x:'_a) => xcall (opn,w,x); val getInt : code -> Widget -> int = get; val getBool : code -> Widget -> bool = get; val getString : code -> Widget -> string = get; val setInt : code -> Widget -> int -> unit = set; val setBool : code -> Widget -> bool -> unit = set; val setString : code -> Widget -> string -> unit = set; in (******************************************************************************) (* *) (* Operations on XmText Widgets *) (* *) (******************************************************************************) val XmTextGetAddMode = getBool XCALL_XmTextGetAddMode; val XmTextGetBaseline = getInt XCALL_XmTextGetBaseline; val XmTextGetCursorPosition = getInt XCALL_XmTextGetCursorPosition; val XmTextGetEditable = getBool XCALL_XmTextGetEditable; val XmTextGetInsertionPosition = getInt XCALL_XmTextGetInsertionPosition; val XmTextGetLastPosition = getInt XCALL_XmTextGetLastPosition; val XmTextGetMaxLength = getInt XCALL_XmTextGetMaxLength; val XmTextGetSelection = getInt XCALL_XmTextGetSelection; val XmTextGetString= getString XCALL_XmTextGetString; val XmTextGetTopCharacter = getInt XCALL_XmTextGetTopCharacter; fun XmTextInsert (w:Widget) (n:int) (s:string) : unit = xcall (XCALL_XmTextInsert,w,n,s); val XmTextPaste = getBool XCALL_XmTextPaste; val XmTextRemove = getBool XCALL_XmTextRemove; fun XmTextReplace (w:Widget) (from:int) (to:int) (s:string) : unit = xcall (XCALL_XmTextReplace,w,from,to,s); val XmTextScroll = setInt XCALL_XmTextScroll; val XmTextSetAddMode = setBool XCALL_XmTextSetAddMode; val XmTextSetCursorPosition = setInt XCALL_XmTextSetCursorPosition; val XmTextSetEditable = setBool XCALL_XmTextSetEditable; val XmTextSetInsertionPosition = setInt XCALL_XmTextSetInsertionPosition; val XmTextSetMaxLength = setInt XCALL_XmTextSetMaxLength; val XmTextSetString = setString XCALL_XmTextSetString; val XmTextSetTopCharacter = setInt XCALL_XmTextSetTopCharacter; val XmTextShowPosition = setInt XCALL_XmTextShowPosition; fun XmTextXYToPos (w:Widget) (x:int) (y:int) : int = xcall (XCALL_XmTextXYToPos,w,x,y); (******************************************************************************) (* *) (* Operations on XmTextField Widgets *) (* *) (******************************************************************************) val XmTextFieldGetAddMode = getBool XCALL_XmTextFieldGetAddMode; val XmTextFieldGetBaseline = getInt XCALL_XmTextFieldGetBaseline; val XmTextFieldGetCursorPosition = getInt XCALL_XmTextFieldGetCursorPosition; val XmTextFieldGetEditable = getBool XCALL_XmTextFieldGetEditable; val XmTextFieldGetInsertionPosition = getInt XCALL_XmTextFieldGetInsertionPosition; val XmTextFieldGetLastPosition = getInt XCALL_XmTextFieldGetLastPosition; val XmTextFieldGetMaxLength = getInt XCALL_XmTextFieldGetMaxLength; val XmTextFieldGetSelection = getInt XCALL_XmTextFieldGetSelection; val XmTextFieldGetString= getString XCALL_XmTextFieldGetString; fun XmTextFieldInsert (w:Widget) (n:int) (s:string) : unit = xcall (XCALL_XmTextFieldInsert,w,n,s); val XmTextFieldPaste = getBool XCALL_XmTextFieldPaste; val XmTextFieldRemove = getBool XCALL_XmTextFieldRemove; fun XmTextFieldReplace (w:Widget) (from:int) (to:int) (s:string) : unit = xcall (XCALL_XmTextFieldReplace,w,from,to,s); val XmTextFieldSetAddMode = setBool XCALL_XmTextFieldSetAddMode; val XmTextFieldSetCursorPosition = setInt XCALL_XmTextFieldSetCursorPosition; val XmTextFieldSetEditable = setBool XCALL_XmTextFieldSetEditable; val XmTextFieldSetInsertionPosition = setInt XCALL_XmTextFieldSetInsertionPosition; val XmTextFieldSetMaxLength = setInt XCALL_XmTextFieldSetMaxLength; val XmTextFieldSetString = setString XCALL_XmTextFieldSetString; val XmTextFieldShowPosition = setInt XCALL_XmTextFieldShowPosition; fun XmTextFieldXYToPos (w:Widget) (x:int) (y:int) : int = xcall (XCALL_XmTextFieldXYToPos,w,x,y); end; (* local *) (******************************************************************************) (* *) (* Operations on XmList Widgets *) (* *) (******************************************************************************) fun XmListAddItem (w: Widget) (s:string) (pos:int) : unit = xcall (XCALL_XmListAddItem,w,s,pos); fun XmListAddItemUnselected (w: Widget) (s: string) (pos: int) : unit = xcall (XCALL_XmListAddItemUnselected,w,s,pos); fun XmListAddItems (w: Widget) (sl: string list) (pos: int) : unit = xcall (XCALL_XmListAddItems,w,sl,pos); fun XmListDeleteAllItems (w: Widget) : unit = xcall (XCALL_XmListDeleteAllItems,w); fun XmListDeleteItem (w: Widget) (s: string) : unit = xcall (XCALL_XmListDeleteItem,w,s); fun XmListDeleteItems (w: Widget) (sl: string list) : unit = xcall (XCALL_XmListDeleteItems,w,sl); fun XmListDeletePos (w: Widget) (pos: int) : unit = xcall (XCALL_XmListDeletePos,w,pos); fun XmListDeleteItemsPos (w: Widget) (num: int) (pos: int) : unit = xcall (XCALL_XmListDeleteItemsPos,w,num,pos); fun XmListDeselectAllItems (w: Widget) : unit = xcall (XCALL_XmListDeselectAllItems,w); fun XmListDeselectItem (w: Widget) (s: string) : unit = xcall (XCALL_XmListDeselectItem,w,s); fun XmListDeselectPos (w: Widget) (pos: int) : unit = xcall (XCALL_XmListDeselectPos,w,pos); fun XmListGetMatchPos (w: Widget) (s: string) : int list = xcall (XCALL_XmListGetMatchPos,w,s); fun XmListGetSelectedPos (w: Widget) : int list = xcall (XCALL_XmListGetSelectedPos,w); fun XmListItemExists (w: Widget) (s: string) : bool = xcall (XCALL_XmListItemExists,w,s); fun XmListItemPos (w: Widget) (s: string) : int = xcall (XCALL_XmListItemPos,w,s); fun XmListReplaceItems (w: Widget) (oldNewPairs : (string * string) list) : unit = let val oldStrings = map #1 oldNewPairs; val newStrings = map #2 oldNewPairs; in xcall (XCALL_XmListReplaceItems,w,oldStrings,newStrings) end; fun XmListReplaceItemsPos (w: Widget) (sl: string list) (pos: int) : unit = xcall (XCALL_XmListReplaceItemsPos,w,sl,pos); fun XmListSelectItem (w: Widget) (s: string) (notify: bool) : unit = xcall (XCALL_XmListSelectItem,w,s,notify); fun XmListSelectPos (w: Widget) (pos: int) (notify: bool) : unit = xcall (XCALL_XmListSelectPos,w,pos,notify); fun XmListSetAddMode (w: Widget) (on: bool) : unit = xcall (XCALL_XmListSetAddMode,w,on); fun XmListSetBottomItem (w: Widget) (s:string) : unit = xcall (XCALL_XmListSetBottomItem,w,s); fun XmListSetBottomPos (w: Widget) (pos:int) : unit = xcall (XCALL_XmListSetBottomPos,w,pos); fun XmListSetHorizPos (w: Widget) (pos:int) : unit = xcall (XCALL_XmListSetHorizPos,w,pos); fun XmListSetItem (w: Widget) (s:string) : unit = xcall (XCALL_XmListSetItem,w,s); fun XmListSetPos (w: Widget) (pos:int) : unit = xcall (XCALL_XmListSetPos,w,pos); fun XmMenuPosition (w: Widget) (ev: 'a XEvent): unit = case ev of ButtonPress { rootPointer=XPoint{x,y}, ...} => xcall(XCALL_XmMenuPosition, w, x, y) | ButtonClick { rootPointer=XPoint{x,y}, ...} => xcall(XCALL_XmMenuPosition, w, x, y) | _ => raise XWindows("Bad event type in XmMenuPosition") end; (* local *) end; (* struct *) polyml-5.7.1/mlsource/extra/Motif/MOTIF_TYPES.ML0000644000175000017500000002340413204034553020130 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature MOTIF_TYPES = sig structure XWINDOWS: sig type Colormap; type Cursor; type Display; type Drawable; type Visual; type XFontStruct; type XWMStateHint; type 'a XEvent; end; (* should we have a separate Xt level? Probaly. SPF 6/12/94 *) type Widget; type XtAccelerators; type XtTranslations; (* Added 6/12/94 SPF *) datatype XtGrabKind = XtGrabNone | XtGrabNonexclusive | XtGrabExclusive; datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END; datatype XmArrowDirection = XmARROW_UP | XmARROW_DOWN | XmARROW_LEFT | XmARROW_RIGHT; datatype XmAttachment = XmATTACH_NONE | XmATTACH_FORM | XmATTACH_OPPOSITE_FORM | XmATTACH_WIDGET | XmATTACH_OPPOSITE_WIDGET | XmATTACH_POSITION | XmATTACH_SELF; datatype XmButtonType = XmPUSHBUTTON | XmCHECKBUTTON | XmTOGGLEBUTTON | XmRADIOBUTTON | XmCASCADEBUTTON | XmSEPARATOR | XmDOUBLE_SEPARATOR | XmTITLE; datatype XmCommandWindowLocation = XmCOMMAND_ABOVE_WORKSPACE | XmCOMMAND_BELOW_WORKSPACE; datatype XmDefaultButtonType = XmDIALOG_NONE | XmDIALOG_APPLY_BUTTON | XmDIALOG_CANCEL_BUTTON | XmDIALOG_DEFAULT_BUTTON | XmDIALOG_OK_BUTTON | XmDIALOG_FILTER_LABEL | XmDIALOG_FILTER_TEXT | XmDIALOG_HELP_BUTTON | XmDIALOG_LIST | XmDIALOG_LIST_LABEL | XmDIALOG_MESSAGE_LABEL | XmDIALOG_SELECTION_LABEL | XmDIALOG_SYMBOL_LABEL | XmDIALOG_TEXT | XmDIALOG_SEPARATOR | XmDIALOG_DIR_LIST | XmDIALOG_DIR_LIST_LABEL (* | XmDIALOG_COMMAND_TEXT = XmDIALOG_TEXT | XmDIALOG_VALUE_TEXT = XmDIALOG_TEXT | XmDIALOG_PROMPT_LABEL = XmDIALOG_SELECTION_LABEL | XmDIALOG_HISTORY_LIST = XmDIALOG_LIST | XmDIALOG_FILE_LIST = XmDIALOG_LIST | XmDIALOG_FILE_LIST_LABEL = XmDIALOG_LIST_LABEL *); val XmDIALOG_COMMAND_TEXT: XmDefaultButtonType; val XmDIALOG_VALUE_TEXT: XmDefaultButtonType; val XmDIALOG_PROMPT_LABEL: XmDefaultButtonType; val XmDIALOG_HISTORY_LIST: XmDefaultButtonType; val XmDIALOG_FILE_LIST: XmDefaultButtonType; val XmDIALOG_FILE_LIST_LABEL: XmDefaultButtonType; datatype XmDeleteResponse = XmDESTROY | XmUNMAP | XmDO_NOTHING; datatype XmDialogStyle = XmDIALOG_MODELESS | XmDIALOG_PRIMARY_APPLICATION_MODAL | XmDIALOG_FULL_APPLICATION_MODAL | XmDIALOG_SYSTEM_MODAL (* | XmDIALOG_APPLICATION_MODAL *); val XmDIALOG_APPLICATION_MODAL: XmDialogStyle; datatype XmDialogType = XmDIALOG_ERROR | XmDIALOG_INFORMATION | XmDIALOG_MESSAGE | XmDIALOG_QUESTION | XmDIALOG_WARNING | XmDIALOG_WORKING | XmDIALOG_WORK_AREA | XmDIALOG_PROMPT | XmDIALOG_SELECTION | XmDIALOG_COMMAND | XmDIALOG_FILE_SELECTION; datatype XmEditMode = XmMULTI_LINE_EDIT | XmSINGLE_LINE_EDIT; datatype XmFileTypeMask = XmFILE_REGULAR | XmFILE_DIRECTORY | XmFILE_ANY_TYPE; datatype XmIndicatorType = XmN_OF_MANY | XmONE_OF_MANY; datatype XmKeyboardFocusPolicy = XmEXPLICIT | XmPOINTER; datatype XmLabelType = XmPIXMAP | XmSTRING; datatype XmMultiClickType = XmMULTICLICK_DISCARD | XmMULTICLICK_KEEP; datatype XmNavigationType = XmNONE | XmTAB_GROUP | XmSTICKY_TAB_GROUP | XmEXCLUSIVE_TAB_GROUP; datatype XmOrientation = XmVERTICAL | XmHORIZONTAL; datatype XmPacking = XmPACK_TIGHT | XmPACK_COLUMN | XmPACK_NONE; datatype XmProcessingDirection = XmMAX_ON_TOP | XmMAX_ON_BOTTOM | XmMAX_ON_LEFT | XmMAX_ON_RIGHT; datatype XmResizePolicy = XmRESIZE_NONE | XmRESIZE_ANY | XmRESIZE_GROW; datatype XmRowColumnType = XmWORK_AREA | XmMENU_BAR | XmMENU_PULLDOWN | XmMENU_POPUP | XmMENU_OPTION; datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED; datatype XmScrollBarPlacement = XmBOTTOM_RIGHT | XmTOP_RIGHT | XmBOTTOM_LEFT | XmTOP_LEFT; datatype XmScrollingPolicy = XmAUTOMATIC | XmAPPLICATION_DEFINED; datatype XmSelectionPolicy = XmSINGLE_SELECT | XmMULTIPLE_SELECT | XmEXTENDED_SELECT | XmBROWSE_SELECT; datatype XmShadowType = XmNO_LINE | XmSINGLE_LINE | XmDOUBLE_LINE | XmSINGLE_DASHED_LINE | XmDOUBLE_DASHED_LINE | XmSHADOW_ETCHED_IN | XmSHADOW_ETCHED_OUT | XmSHADOW_IN | XmSHADOW_OUT; datatype XmStringDirection = XmSTRING_DIRECTION_L_TO_R | XmSTRING_DIRECTION_R_TO_L | XmSTRING_DIRECTION_DEFAULT; datatype XmTextScanType = XmSELECT_POSITION | XmSELECT_WHITESPACE | XmSELECT_WORD | XmSELECT_LINE | XmSELECT_ALL | XmSELECT_PARAGRAPH; datatype XmUnitType = XmPIXELS | Xm100TH_MILLIMETERS | Xm1000TH_INCHES | Xm100TH_POINTS | Xm100TH_FONT_UNITS; datatype XmVisualPolicy = XmVARIABLE | XmCONSTANT | XmRESIZE_IF_POSSIBLE; type XmString = string; type Arg = exn; datatype XmRType = XmRAcceleratorTable of XtAccelerators | XmRAlignment of XmAlignment | XmRArrowDirection of XmArrowDirection | XmRAtom of int | XmRAttachment of XmAttachment | XmRBool of bool | XmRButtonTypeTable of XmButtonType list | XmRCardinal of int | XmRColormap of XWINDOWS.Colormap | XmRCommandWindowLocation of XmCommandWindowLocation | XmRCursor of XWINDOWS.Cursor | XmRDefaultButtonType of XmDefaultButtonType | XmRDeleteResponse of XmDeleteResponse | XmRDialogStyle of XmDialogStyle | XmRDialogType of XmDialogType | XmRDimension of int | XmREditMode of XmEditMode | XmRFileTypeMask of XmFileTypeMask | XmRFontList of (XWINDOWS.XFontStruct * string) list | XmRIndicatorType of XmIndicatorType | XmRInitialState of XWINDOWS.XWMStateHint | XmRInt of int | XmRKeySym of int | XmRKeySymTable of int list | XmRKeyboardFocusPolicy of XmKeyboardFocusPolicy | XmRLabelType of XmLabelType | XmRMultiClick of XmMultiClickType | XmRNavigationType of XmNavigationType | XmROrientation of XmOrientation | XmRPacking of XmPacking | XmRProcessingDirection of XmProcessingDirection | XmRResizePolicy of XmResizePolicy | XmRRowColumnType of XmRowColumnType | XmRPixel of int | XmRPixmap of XWINDOWS.Drawable | XmRPosition of int | XmRScrollBarDisplayPolicy of XmScrollBarDisplayPolicy | XmRScrollBarPlacement of XmScrollBarPlacement | XmRScrollingPolicy of XmScrollingPolicy | XmRSelectionPolicy of XmSelectionPolicy | XmRShadowType of XmShadowType | XmRShort of int | XmRStringDirection of XmStringDirection | XmRString of string | XmRStringTable of string list | XmRTextScanTypeTable of XmTextScanType list | XmRTranslationTable of XtTranslations | XmRUnitType of XmUnitType | XmRVisual of XWINDOWS.Visual | XmRVisualPolicy of XmVisualPolicy | XmRWidget of Widget | XmRWidgetList of Widget list | XmRXmString of XmString | XmRXmStringTable of XmString list; datatype XtCallback = XmNactivateCallback | XmNapplyCallback | XmNarmCallback | XmNbrowseSelectionCallback | XmNcancelCallback | XmNcascadingCallback | XmNcommandChangedCallback | XmNcommandEnteredCallback | XmNdecrementCallback | XmNdefaultActionCallback | XmNdestroyCallback | XmNdisarmCallback | XmNdragCallback | XmNentryCallback | XmNexposeCallback | XmNextendedSelectionCallback | XmNfocusCallback | XmNgainPrimaryCallback | XmNhelpCallback | XmNincrementCallback | XmNinputCallback | XmNlosePrimaryCallback | XmNlosingFocusCallback | XmNmapCallback | XmNmessageCallback (* this callback gets Message XEvents only *) | XmNmodifyVerifyCallback | XmNmotionVerifyCallback | XmNmultipleSelectionCallback | XmNnoMatchCallback | XmNokCallback | XmNpageDecrementCallback | XmNpageIncrementCallback | XmNpopdownCallback | XmNpopupCallback | XmNresizeCallback | XmNsimpleCallback | XmNsingleSelectionCallback | XmNtoBottomCallback | XmNtoTopCallback | XmNunmapCallback | XmNvalueChangedCallback; end; (* signature *) polyml-5.7.1/mlsource/extra/Motif/makeExceptions.awk0000644000175000017500000000111213204034553021507 0ustar daviddavid/NOT SUPPORTED/ { exit } { if ( NF >= 2 && $3 != "(callback)" ) { if ( $3 == "Atom" ) $3 = "int" ; if ( $3 == "Cardinal" ) $3 = "int" ; if ( $3 == "Dimension" ) $3 = "int" ; if ( $3 == "KeySym" ) $3 = "int" ; if ( $3 == "Pixel" ) $3 = "int" ; if ( $3 == "Position" ) $3 = "int" ; if ( $3 == "XmTextPosition" ) $3 = "int" ; if ( $3 == "short" ) $3 = "int" ; if ( $4 == "list" ) printf ("exception %s of %s list ;\n",$1,$3) ; else printf ("exception %s of %s ;\n",$1,$3) ; } } polyml-5.7.1/mlsource/extra/Motif/InitialiseCore.ML0000644000175000017500000004302213204034553021167 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure InitialiseCore = struct local open MotifTypes XmTypes MotifCore in val U = XtSetExceptionType XmNaccelerator XmRString ; val U = XtSetExceptionType XmNacceleratorText XmRXmString ; val U = XtSetExceptionType XmNaccelerators XmRAcceleratorTable ; val U = XtSetExceptionType XmNadjustLast XmRBool ; val U = XtSetExceptionType XmNadjustMargin XmRBool ; val U = XtSetExceptionType XmNalignment XmRAlignment ; val U = XtSetExceptionType XmNallowOverlap XmRBool ; val U = XtSetExceptionType XmNallowResize XmRBool ; val U = XtSetExceptionType XmNallowShellResize XmRBool ; val U = XtSetExceptionType XmNancestorSensitive XmRBool ; val U = XtSetExceptionType XmNapplyLabelString XmRXmString ; val U = XtSetExceptionType XmNargc XmRInt ; val U = XtSetExceptionType XmNargv XmRStringTable ; val U = XtSetExceptionType XmNarmColor XmRPixel ; val U = XtSetExceptionType XmNarmPixmap XmRPixmap ; val U = XtSetExceptionType XmNarrowDirection XmRArrowDirection ; val U = XtSetExceptionType XmNautoShowCursorPosition XmRBool ; val U = XtSetExceptionType XmNautoUnmanage XmRBool ; val U = XtSetExceptionType XmNautomaticSelection XmRBool ; val U = XtSetExceptionType XmNbackground XmRPixel ; val U = XtSetExceptionType XmNbackgroundPixmap XmRPixmap ; val U = XtSetExceptionType XmNbaseHeight XmRInt ; val U = XtSetExceptionType XmNbaseWidth XmRInt ; val U = XtSetExceptionType XmNblinkRate XmRInt ; val U = XtSetExceptionType XmNborderColor XmRPixel ; val U = XtSetExceptionType XmNborderPixmap XmRPixmap ; val U = XtSetExceptionType XmNborderWidth XmRDimension ; val U = XtSetExceptionType XmNbottomAttachment XmRAttachment ; val U = XtSetExceptionType XmNbottomOffset XmRInt ; val U = XtSetExceptionType XmNbottomPosition XmRInt ; val U = XtSetExceptionType XmNbottomShadowColor XmRPixel ; val U = XtSetExceptionType XmNbottomShadowPixmap XmRPixmap ; val U = XtSetExceptionType XmNbottomWidget XmRWidget ; val U = XtSetExceptionType XmNbuttonAcceleratorText XmRXmStringTable ; val U = XtSetExceptionType XmNbuttonAccelerators XmRStringTable ; val U = XtSetExceptionType XmNbuttonCount XmRInt ; val U = XtSetExceptionType XmNbuttonFontList XmRFontList ; val U = XtSetExceptionType XmNbuttonMnemonicCharSets XmRXmStringTable ; val U = XtSetExceptionType XmNbuttonMnemonics XmRKeySymTable ; val U = XtSetExceptionType XmNbuttonSet XmRInt ; val U = XtSetExceptionType XmNbuttonType XmRButtonTypeTable ; val U = XtSetExceptionType XmNbuttons XmRXmStringTable ; val U = XtSetExceptionType XmNcancelButton XmRWidget ; val U = XtSetExceptionType XmNcancelLabelString XmRXmString ; val U = XtSetExceptionType XmNcascadePixmap XmRPixmap ; val U = XtSetExceptionType XmNchildren XmRWidgetList ; val U = XtSetExceptionType XmNclipWindow XmRWidget ; val U = XtSetExceptionType XmNcolormap XmRColormap ; val U = XtSetExceptionType XmNcolumns XmRShort ; val U = XtSetExceptionType XmNcommand XmRXmString ; val U = XtSetExceptionType XmNcommandWindow XmRWidget ; val U = XtSetExceptionType XmNcommandWindowLocation XmRCommandWindowLocation ; val U = XtSetExceptionType XmNcursorPosition XmRInt ; val U = XtSetExceptionType XmNcursorPositionVisible XmRBool ; val U = XtSetExceptionType XmNdecimalPoints XmRShort ; val U = XtSetExceptionType XmNdefaultButton XmRWidget ; val U = XtSetExceptionType XmNdefaultButtonShadowThickness XmRDimension ; val U = XtSetExceptionType XmNdefaultButtonType XmRDefaultButtonType ; val U = XtSetExceptionType XmNdefaultFontList XmRFontList ; val U = XtSetExceptionType XmNdefaultPosition XmRBool ; val U = XtSetExceptionType XmNdeleteResponse XmRDeleteResponse ; val U = XtSetExceptionType XmNdepth XmRInt ; val U = XtSetExceptionType XmNdialogStyle XmRDialogStyle ; val U = XtSetExceptionType XmNdialogTitle XmRXmString ; val U = XtSetExceptionType XmNdialogType XmRDialogType ; val U = XtSetExceptionType XmNdirListItemCount XmRInt ; val U = XtSetExceptionType XmNdirListItems XmRXmStringTable ; val U = XtSetExceptionType XmNdirListLabelString XmRXmString ; val U = XtSetExceptionType XmNdirMask XmRXmString ; val U = XtSetExceptionType XmNdirSpec XmRXmString ; val U = XtSetExceptionType XmNdirectory XmRXmString ; val U = XtSetExceptionType XmNdirectoryValid XmRBool ; val U = XtSetExceptionType XmNdoubleClickInterval XmRInt ; val U = XtSetExceptionType XmNeditMode XmREditMode ; val U = XtSetExceptionType XmNeditable XmRBool ; val U = XtSetExceptionType XmNentryAlignment XmRAlignment ; val U = XtSetExceptionType XmNentryBorder XmRDimension ; val U = XtSetExceptionType XmNfileListItemCount XmRInt ; val U = XtSetExceptionType XmNfileListItems XmRXmStringTable ; val U = XtSetExceptionType XmNfileListLabelString XmRXmString ; val U = XtSetExceptionType XmNfileTypeMask XmRFileTypeMask ; val U = XtSetExceptionType XmNfillOnArm XmRBool ; val U = XtSetExceptionType XmNfillOnSelect XmRBool ; val U = XtSetExceptionType XmNfilterLabelString XmRXmString ; val U = XtSetExceptionType XmNfontList XmRFontList ; val U = XtSetExceptionType XmNforeground XmRPixel ; val U = XtSetExceptionType XmNfractionBase XmRInt ; val U = XtSetExceptionType XmNgeometry XmRString ; val U = XtSetExceptionType XmNheight XmRDimension ; val U = XtSetExceptionType XmNheightInc XmRInt ; val U = XtSetExceptionType XmNhelpLabelString XmRXmString ; val U = XtSetExceptionType XmNhighlightColor XmRPixel ; val U = XtSetExceptionType XmNhighlightOnEnter XmRBool ; val U = XtSetExceptionType XmNhighlightPixmap XmRPixmap ; val U = XtSetExceptionType XmNhighlightThickness XmRDimension ; val U = XtSetExceptionType XmNhistoryItemCount XmRInt ; val U = XtSetExceptionType XmNhistoryItems XmRXmStringTable ; val U = XtSetExceptionType XmNhistoryMaxItems XmRInt ; val U = XtSetExceptionType XmNhistoryVisibleItemCount XmRInt ; val U = XtSetExceptionType XmNhorizontalScrollBar XmRWidget ; val U = XtSetExceptionType XmNhorizontalSpacing XmRDimension ; val U = XtSetExceptionType XmNiconMask XmRPixmap ; val U = XtSetExceptionType XmNiconName XmRString ; val U = XtSetExceptionType XmNiconNameEncoding XmRAtom ; val U = XtSetExceptionType XmNiconPixmap XmRPixmap ; val U = XtSetExceptionType XmNiconWindow XmRPixmap ; val U = XtSetExceptionType XmNiconX XmRInt ; val U = XtSetExceptionType XmNiconY XmRInt ; val U = XtSetExceptionType XmNiconic XmRBool ; val U = XtSetExceptionType XmNincrement XmRInt ; val U = XtSetExceptionType XmNindicatorOn XmRBool ; val U = XtSetExceptionType XmNindicatorSize XmRDimension ; val U = XtSetExceptionType XmNindicatorType XmRIndicatorType ; val U = XtSetExceptionType XmNinitialDelay XmRInt ; val U = XtSetExceptionType XmNinitialResourcesPersistent XmRBool ; val U = XtSetExceptionType XmNinitialState XmRInitialState ; val U = XtSetExceptionType XmNinput XmRBool ; val U = XtSetExceptionType XmNisAligned XmRBool ; val U = XtSetExceptionType XmNisHomogeneous XmRBool ; val U = XtSetExceptionType XmNitemCount XmRInt ; val U = XtSetExceptionType XmNitems XmRXmStringTable ; val U = XtSetExceptionType XmNkeyboardFocusPolicy XmRKeyboardFocusPolicy ; val U = XtSetExceptionType XmNlabelFontList XmRFontList ; val U = XtSetExceptionType XmNlabelInsensitivePixmap XmRPixmap ; val U = XtSetExceptionType XmNlabelPixmap XmRPixmap ; val U = XtSetExceptionType XmNlabelString XmRXmString ; val U = XtSetExceptionType XmNlabelType XmRLabelType ; val U = XtSetExceptionType XmNleftAttachment XmRAttachment ; val U = XtSetExceptionType XmNleftOffset XmRInt ; val U = XtSetExceptionType XmNleftPosition XmRInt ; val U = XtSetExceptionType XmNleftWidget XmRWidget ; val U = XtSetExceptionType XmNlistItemCount XmRInt ; val U = XtSetExceptionType XmNlistItems XmRXmStringTable ; val U = XtSetExceptionType XmNlistLabelString XmRXmString ; val U = XtSetExceptionType XmNlistMarginHeight XmRDimension ; val U = XtSetExceptionType XmNlistMarginWidth XmRDimension ; val U = XtSetExceptionType XmNlistSizePolicy XmRVisualPolicy ; val U = XtSetExceptionType XmNlistSpacing XmRDimension ; val U = XtSetExceptionType XmNlistUpdated XmRBool ; val U = XtSetExceptionType XmNlistVisibleItemCount XmRInt ; val U = XtSetExceptionType XmNmainWindowMarginHeight XmRDimension ; val U = XtSetExceptionType XmNmainWindowMarginWidth XmRDimension ; val U = XtSetExceptionType XmNmappedWhenManaged XmRBool ; val U = XtSetExceptionType XmNmappingDelay XmRInt ; val U = XtSetExceptionType XmNmargin XmRDimension ; val U = XtSetExceptionType XmNmarginBottom XmRDimension ; val U = XtSetExceptionType XmNmarginHeight XmRDimension ; val U = XtSetExceptionType XmNmarginLeft XmRDimension ; val U = XtSetExceptionType XmNmarginRight XmRDimension ; val U = XtSetExceptionType XmNmarginTop XmRDimension ; val U = XtSetExceptionType XmNmarginWidth XmRDimension ; val U = XtSetExceptionType XmNmaxAspectX XmRInt ; val U = XtSetExceptionType XmNmaxAspectY XmRInt ; val U = XtSetExceptionType XmNmaxHeight XmRInt ; val U = XtSetExceptionType XmNmaxLength XmRInt ; val U = XtSetExceptionType XmNmaxWidth XmRInt ; val U = XtSetExceptionType XmNmaximum XmRInt ; val U = XtSetExceptionType XmNmenuAccelerator XmRString ; val U = XtSetExceptionType XmNmenuBar XmRWidget ; val U = XtSetExceptionType XmNmenuCursor XmRCursor ; val U = XtSetExceptionType XmNmenuHelpWidget XmRWidget ; val U = XtSetExceptionType XmNmenuHistory XmRWidget ; val U = XtSetExceptionType XmNmenuPost XmRString ; val U = XtSetExceptionType XmNmessageAlignment XmRAlignment ; val U = XtSetExceptionType XmNmessageString XmRXmString ; val U = XtSetExceptionType XmNmessageWindow XmRWidget ; val U = XtSetExceptionType XmNminAspectX XmRInt ; val U = XtSetExceptionType XmNminAspectY XmRInt ; val U = XtSetExceptionType XmNminHeight XmRInt ; val U = XtSetExceptionType XmNminWidth XmRInt ; val U = XtSetExceptionType XmNminimizeButtons XmRBool ; val U = XtSetExceptionType XmNminimum XmRInt ; val U = XtSetExceptionType XmNmnemonic XmRKeySym ; val U = XtSetExceptionType XmNmnemonicCharSet XmRString ; val U = XtSetExceptionType XmNmultiClick XmRMultiClick ; val U = XtSetExceptionType XmNmustMatch XmRBool ; val U = XtSetExceptionType XmNmwmDecorations XmRInt ; val U = XtSetExceptionType XmNmwmFunctions XmRInt ; val U = XtSetExceptionType XmNmwmInputMode XmRInt ; val U = XtSetExceptionType XmNmwmMenu XmRString ; val U = XtSetExceptionType XmNnavigationType XmRNavigationType ; val U = XtSetExceptionType XmNnoMatchString XmRXmString ; val U = XtSetExceptionType XmNnoResize XmRBool ; val U = XtSetExceptionType XmNnumChildren XmRCardinal ; val U = XtSetExceptionType XmNnumColumns XmRShort ; val U = XtSetExceptionType XmNokLabelString XmRXmString ; val U = XtSetExceptionType XmNoptionLabel XmRXmString ; val U = XtSetExceptionType XmNoptionMnemonic XmRKeySym ; val U = XtSetExceptionType XmNorientation XmROrientation ; val U = XtSetExceptionType XmNoverrideRedirect XmRBool ; val U = XtSetExceptionType XmNpacking XmRPacking ; val U = XtSetExceptionType XmNpageIncrement XmRInt ; val U = XtSetExceptionType XmNpaneMaximum XmRDimension ; val U = XtSetExceptionType XmNpaneMinimum XmRDimension ; val U = XtSetExceptionType XmNpattern XmRXmString ; val U = XtSetExceptionType XmNpendingDelete XmRBool ; val U = XtSetExceptionType XmNpopupEnabled XmRBool ; val U = XtSetExceptionType XmNpostFromButton XmRInt ; val U = XtSetExceptionType XmNprocessingDirection XmRProcessingDirection ; val U = XtSetExceptionType XmNpromptString XmRXmString ; val U = XtSetExceptionType XmNpushButtonEnabled XmRBool ; val U = XtSetExceptionType XmNradioAlwaysOne XmRBool ; val U = XtSetExceptionType XmNradioBehavior XmRBool ; val U = XtSetExceptionType XmNrecomputeSize XmRBool ; val U = XtSetExceptionType XmNrefigureMode XmRBool ; val U = XtSetExceptionType XmNrepeatDelay XmRInt ; val U = XtSetExceptionType XmNresizable XmRBool ; val U = XtSetExceptionType XmNresizeHeight XmRBool ; val U = XtSetExceptionType XmNresizePolicy XmRResizePolicy ; val U = XtSetExceptionType XmNresizeWidth XmRBool ; val U = XtSetExceptionType XmNrightAttachment XmRAttachment ; val U = XtSetExceptionType XmNrightOffset XmRInt ; val U = XtSetExceptionType XmNrightPosition XmRInt ; val U = XtSetExceptionType XmNrightWidget XmRWidget ; val U = XtSetExceptionType XmNrowColumnType XmRRowColumnType ; val U = XtSetExceptionType XmNrows XmRShort ; val U = XtSetExceptionType XmNrubberPositioning XmRBool ; val U = XtSetExceptionType XmNsashHeight XmRDimension ; val U = XtSetExceptionType XmNsashIndent XmRPosition ; val U = XtSetExceptionType XmNsashShadowThickness XmRDimension ; val U = XtSetExceptionType XmNsashWidth XmRDimension ; val U = XtSetExceptionType XmNsaveUnder XmRBool ; val U = XtSetExceptionType XmNscaleHeight XmRDimension ; val U = XtSetExceptionType XmNscaleMultiple XmRInt ; val U = XtSetExceptionType XmNscaleWidth XmRDimension ; val U = XtSetExceptionType XmNscrollBarDisplayPolicy XmRScrollBarDisplayPolicy ; val U = XtSetExceptionType XmNscrollBarPlacement XmRScrollBarPlacement ; val U = XtSetExceptionType XmNscrollHorizontal XmRBool ; val U = XtSetExceptionType XmNscrollLeftSide XmRBool ; val U = XtSetExceptionType XmNscrollTopSide XmRBool ; val U = XtSetExceptionType XmNscrollVertical XmRBool ; val U = XtSetExceptionType XmNscrolledWindowMarginHeight XmRDimension ; val U = XtSetExceptionType XmNscrolledWindowMarginWidth XmRDimension ; val U = XtSetExceptionType XmNscrollingPolicy XmRScrollingPolicy ; val U = XtSetExceptionType XmNselectColor XmRPixel ; val U = XtSetExceptionType XmNselectInsensitivePixmap XmRPixmap ; val U = XtSetExceptionType XmNselectPixmap XmRPixmap ; val U = XtSetExceptionType XmNselectThreshold XmRInt ; val U = XtSetExceptionType XmNselectedItemCount XmRInt ; val U = XtSetExceptionType XmNselectedItems XmRXmStringTable ; val U = XtSetExceptionType XmNselectionArray XmRTextScanTypeTable ; val U = XtSetExceptionType XmNselectionArrayCount XmRInt ; val U = XtSetExceptionType XmNselectionLabelString XmRXmString ; val U = XtSetExceptionType XmNselectionPolicy XmRSelectionPolicy ; val U = XtSetExceptionType XmNsensitive XmRBool ; val U = XtSetExceptionType XmNseparatorOn XmRBool ; val U = XtSetExceptionType XmNseparatorType XmRShadowType ; val U = XtSetExceptionType XmNset XmRBool ; val U = XtSetExceptionType XmNshadowThickness XmRDimension ; val U = XtSetExceptionType XmNshadowType XmRShadowType ; val U = XtSetExceptionType XmNshellUnitType XmRUnitType ; val U = XtSetExceptionType XmNshowArrows XmRBool ; val U = XtSetExceptionType XmNshowAsDefault XmRDimension ; val U = XtSetExceptionType XmNshowSeparator XmRBool ; val U = XtSetExceptionType XmNshowValue XmRBool ; val U = XtSetExceptionType XmNskipAdjust XmRBool ; val U = XtSetExceptionType XmNsliderSize XmRInt ; val U = XtSetExceptionType XmNspacing XmRDimension ; val U = XtSetExceptionType XmNstringDirection XmRStringDirection ; val U = XtSetExceptionType XmNsubMenuId XmRWidget ; val U = XtSetExceptionType XmNsymbolPixmap XmRPixmap ; val U = XtSetExceptionType XmNtextAccelerators XmRAcceleratorTable ; val U = XtSetExceptionType XmNtextColumns XmRShort ; val U = XtSetExceptionType XmNtextFontList XmRFontList ; val U = XtSetExceptionType XmNtextString XmRXmString ; val U = XtSetExceptionType XmNtextTranslations XmRTranslationTable ; val U = XtSetExceptionType XmNtitle XmRString ; val U = XtSetExceptionType XmNtitleEncoding XmRAtom ; val U = XtSetExceptionType XmNtitleString XmRXmString ; val U = XtSetExceptionType XmNtopAttachment XmRAttachment ; val U = XtSetExceptionType XmNtopCharacter XmRInt ; val U = XtSetExceptionType XmNtopItemPosition XmRInt ; val U = XtSetExceptionType XmNtopOffset XmRInt ; val U = XtSetExceptionType XmNtopPosition XmRInt ; val U = XtSetExceptionType XmNtopShadowColor XmRPixel ; val U = XtSetExceptionType XmNtopShadowPixmap XmRPixmap ; val U = XtSetExceptionType XmNtopWidget XmRWidget ; val U = XtSetExceptionType XmNtransient XmRBool ; val U = XtSetExceptionType XmNtransientFor XmRWidget ; val U = XtSetExceptionType XmNtranslations XmRTranslationTable ; val U = XtSetExceptionType XmNtraversalOn XmRBool ; val U = XtSetExceptionType XmNtroughColor XmRPixel ; val U = XtSetExceptionType XmNunitType XmRUnitType ; val U = XtSetExceptionType XmNuseAsyncGeometry XmRBool ; val U = XtSetExceptionType XmNvalue XmRInt ; val U = XtSetExceptionType XmNverifyBell XmRBool ; val U = XtSetExceptionType XmNverticalScrollBar XmRWidget ; val U = XtSetExceptionType XmNverticalSpacing XmRDimension ; (* The O'Reilly book says this resource is a short - it's wrong! *) val U = XtSetExceptionType XmNvisibleItemCount XmRInt; val U = XtSetExceptionType XmNvisibleWhenOff XmRBool ; val U = XtSetExceptionType XmNvisual XmRVisual ; val U = XtSetExceptionType XmNvisualPolicy XmRVisualPolicy ; val U = XtSetExceptionType XmNwaitForWm XmRBool ; val U = XtSetExceptionType XmNwidth XmRDimension ; val U = XtSetExceptionType XmNwidthInc XmRInt ; val U = XtSetExceptionType XmNwinGravity XmRInt ; val U = XtSetExceptionType XmNwindowGroup XmRPixmap ; val U = XtSetExceptionType XmNwmTimeout XmRInt ; val U = XtSetExceptionType XmNwordWrap XmRBool ; val U = XtSetExceptionType XmNworkWindow XmRWidget ; val U = XtSetExceptionType XmNx XmRPosition ; val U = XtSetExceptionType XmNy XmRPosition ; end (* local *) ; end (* struct *) ; polyml-5.7.1/mlsource/extra/Motif/MotifCore.ML0000644000175000017500000011512113204034553020153 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Note that this module depends on the compiler's *representation* of exceptions; this is absolutely disgusting, completely unnecessary, and a source of inefficiency (all those Casts!). When I have some spare time, I'm going to cure this. SPF 6/12/94 *) structure MotifCore = struct local open XWindows; open XCall; open MotifTypes; open XmTypes; fun fromAlignment XmALIGNMENT_BEGINNING = 0 | fromAlignment XmALIGNMENT_CENTER = 1 | fromAlignment XmALIGNMENT_END = 2; fun toAlignment 0 = XmALIGNMENT_BEGINNING | toAlignment 1 = XmALIGNMENT_CENTER | toAlignment _ = XmALIGNMENT_END; fun fromArrowDirection XmARROW_UP = 0 | fromArrowDirection XmARROW_DOWN = 1 | fromArrowDirection XmARROW_LEFT = 2 | fromArrowDirection XmARROW_RIGHT = 3; fun toArrowDirection 0 = XmARROW_UP | toArrowDirection 1 = XmARROW_DOWN | toArrowDirection 2 = XmARROW_LEFT | toArrowDirection _ = XmARROW_RIGHT; fun fromAttachment XmATTACH_NONE = 0 | fromAttachment XmATTACH_FORM = 1 | fromAttachment XmATTACH_OPPOSITE_FORM = 2 | fromAttachment XmATTACH_WIDGET = 3 | fromAttachment XmATTACH_OPPOSITE_WIDGET = 4 | fromAttachment XmATTACH_POSITION = 5 | fromAttachment XmATTACH_SELF = 6; fun toAttachment 0 = XmATTACH_NONE | toAttachment 1 = XmATTACH_FORM | toAttachment 2 = XmATTACH_OPPOSITE_FORM | toAttachment 3 = XmATTACH_WIDGET | toAttachment 4 = XmATTACH_OPPOSITE_WIDGET | toAttachment 5 = XmATTACH_POSITION | toAttachment _ = XmATTACH_SELF; fun fromButtonType XmPUSHBUTTON = 1 | fromButtonType XmCHECKBUTTON = 2 | fromButtonType XmTOGGLEBUTTON = 2 (* same as XmCHECKBUTTON *) | fromButtonType XmRADIOBUTTON = 3 | fromButtonType XmCASCADEBUTTON = 4 | fromButtonType XmSEPARATOR = 5 | fromButtonType XmDOUBLE_SEPARATOR = 6 | fromButtonType XmTITLE = 7; fun toButtonType 1 = XmPUSHBUTTON | toButtonType 2 = XmCHECKBUTTON | toButtonType 3 = XmRADIOBUTTON | toButtonType 4 = XmCASCADEBUTTON | toButtonType 5 = XmSEPARATOR | toButtonType 6 = XmDOUBLE_SEPARATOR | toButtonType _ = XmTITLE; fun fromCommandWindowLocation XmCOMMAND_ABOVE_WORKSPACE = 0 | fromCommandWindowLocation XmCOMMAND_BELOW_WORKSPACE = 1; fun toCommandWindowLocation 0 = XmCOMMAND_ABOVE_WORKSPACE | toCommandWindowLocation _ = XmCOMMAND_BELOW_WORKSPACE; fun fromDefaultButtonType XmDIALOG_NONE = 0 | fromDefaultButtonType XmDIALOG_APPLY_BUTTON = 1 | fromDefaultButtonType XmDIALOG_CANCEL_BUTTON = 2 | fromDefaultButtonType XmDIALOG_DEFAULT_BUTTON = 3 | fromDefaultButtonType XmDIALOG_OK_BUTTON = 4 | fromDefaultButtonType XmDIALOG_FILTER_LABEL = 5 | fromDefaultButtonType XmDIALOG_FILTER_TEXT = 6 | fromDefaultButtonType XmDIALOG_HELP_BUTTON = 7 | fromDefaultButtonType XmDIALOG_LIST = 8 | fromDefaultButtonType XmDIALOG_LIST_LABEL = 9 | fromDefaultButtonType XmDIALOG_MESSAGE_LABEL = 10 | fromDefaultButtonType XmDIALOG_SELECTION_LABEL = 11 | fromDefaultButtonType XmDIALOG_SYMBOL_LABEL = 12 | fromDefaultButtonType XmDIALOG_TEXT = 13 | fromDefaultButtonType XmDIALOG_SEPARATOR = 14 | fromDefaultButtonType XmDIALOG_DIR_LIST = 15 | fromDefaultButtonType XmDIALOG_DIR_LIST_LABEL = 16; fun toDefaultButtonType 0 = XmDIALOG_NONE | toDefaultButtonType 1 = XmDIALOG_APPLY_BUTTON | toDefaultButtonType 2 = XmDIALOG_CANCEL_BUTTON | toDefaultButtonType 3 = XmDIALOG_DEFAULT_BUTTON | toDefaultButtonType 4 = XmDIALOG_OK_BUTTON | toDefaultButtonType 5 = XmDIALOG_FILTER_LABEL | toDefaultButtonType 6 = XmDIALOG_FILTER_TEXT | toDefaultButtonType 7 = XmDIALOG_HELP_BUTTON | toDefaultButtonType 8 = XmDIALOG_LIST | toDefaultButtonType 9 = XmDIALOG_LIST_LABEL | toDefaultButtonType 10 = XmDIALOG_MESSAGE_LABEL | toDefaultButtonType 11 = XmDIALOG_SELECTION_LABEL | toDefaultButtonType 12 = XmDIALOG_SYMBOL_LABEL | toDefaultButtonType 13 = XmDIALOG_TEXT | toDefaultButtonType 14 = XmDIALOG_SEPARATOR | toDefaultButtonType 15 = XmDIALOG_DIR_LIST | toDefaultButtonType _ = XmDIALOG_DIR_LIST_LABEL; fun fromDeleteResponse XmDESTROY = 0 | fromDeleteResponse XmUNMAP = 1 | fromDeleteResponse XmDO_NOTHING = 2; fun toDeleteResponse 0 = XmDESTROY | toDeleteResponse 1 = XmUNMAP | toDeleteResponse _ = XmDO_NOTHING; fun fromDialogStyle XmDIALOG_MODELESS = 0 | fromDialogStyle XmDIALOG_PRIMARY_APPLICATION_MODAL = 1 | fromDialogStyle XmDIALOG_FULL_APPLICATION_MODAL = 2 | fromDialogStyle XmDIALOG_SYSTEM_MODAL = 3; fun toDialogStyle 0 = XmDIALOG_MODELESS | toDialogStyle 1 = XmDIALOG_PRIMARY_APPLICATION_MODAL | toDialogStyle 2 = XmDIALOG_FULL_APPLICATION_MODAL | toDialogStyle _ = XmDIALOG_SYSTEM_MODAL; fun fromDialogType XmDIALOG_ERROR = 1 (* XmMessageBox values *) | fromDialogType XmDIALOG_INFORMATION = 2 | fromDialogType XmDIALOG_MESSAGE = 3 | fromDialogType XmDIALOG_QUESTION = 4 | fromDialogType XmDIALOG_WARNING = 5 | fromDialogType XmDIALOG_WORKING = 6 | fromDialogType XmDIALOG_WORK_AREA = 0 (* XmSelectionBox values *) | fromDialogType XmDIALOG_PROMPT = 1 | fromDialogType XmDIALOG_SELECTION = 2 | fromDialogType XmDIALOG_COMMAND = 3 | fromDialogType XmDIALOG_FILE_SELECTION = 4; fun toDialogType 0 = XmDIALOG_WORK_AREA | toDialogType 1 = XmDIALOG_ERROR | toDialogType 2 = XmDIALOG_INFORMATION | toDialogType 3 = XmDIALOG_MESSAGE | toDialogType 4 = XmDIALOG_QUESTION | toDialogType 5 = XmDIALOG_WARNING | toDialogType _ = XmDIALOG_WORKING; fun fromEditMode XmMULTI_LINE_EDIT = 0 | fromEditMode XmSINGLE_LINE_EDIT = 1; fun toEditMode 0 = XmMULTI_LINE_EDIT | toEditMode _ = XmSINGLE_LINE_EDIT; fun fromFileTypeMask XmFILE_REGULAR = 1 | fromFileTypeMask XmFILE_DIRECTORY = 2 | fromFileTypeMask XmFILE_ANY_TYPE = 3; fun toFileTypeMask 1 = XmFILE_REGULAR | toFileTypeMask 2 = XmFILE_DIRECTORY | toFileTypeMask _ = XmFILE_ANY_TYPE; fun fromIndicatorType XmN_OF_MANY = 1 | fromIndicatorType XmONE_OF_MANY = 2; fun toIndicatorType 1 = XmN_OF_MANY | toIndicatorType _ = XmONE_OF_MANY; fun fromKeyboardFocusPolicy XmEXPLICIT = 0 | fromKeyboardFocusPolicy XmPOINTER = 1; fun toKeyboardFocusPolicy 0 = XmEXPLICIT | toKeyboardFocusPolicy _ = XmPOINTER; fun fromLabelType XmPIXMAP = 1 | fromLabelType XmSTRING = 2; fun toLabelType 1 = XmPIXMAP | toLabelType _ = XmSTRING; fun fromMultiClick XmMULTICLICK_DISCARD = 0 | fromMultiClick XmMULTICLICK_KEEP = 1; fun toMultiClick 0 = XmMULTICLICK_DISCARD | toMultiClick _ = XmMULTICLICK_KEEP; fun fromNavigationType XmNONE = 0 | fromNavigationType XmTAB_GROUP = 1 | fromNavigationType XmSTICKY_TAB_GROUP = 2 | fromNavigationType XmEXCLUSIVE_TAB_GROUP = 3; fun toNavigationType 0 = XmNONE | toNavigationType 1 = XmTAB_GROUP | toNavigationType 2 = XmSTICKY_TAB_GROUP | toNavigationType _ = XmEXCLUSIVE_TAB_GROUP; fun fromOrientation XmVERTICAL = 1 | fromOrientation XmHORIZONTAL = 2; fun toOrientation 1 = XmVERTICAL | toOrientation _ = XmHORIZONTAL; fun fromResizePolicy XmRESIZE_NONE = 0 | fromResizePolicy XmRESIZE_GROW = 1 | fromResizePolicy XmRESIZE_ANY = 2; fun toResizePolicy 0 = XmRESIZE_NONE | toResizePolicy 1 = XmRESIZE_GROW | toResizePolicy _ = XmRESIZE_ANY; fun fromRowColumnType XmWORK_AREA = 0 | fromRowColumnType XmMENU_BAR = 1 | fromRowColumnType XmMENU_PULLDOWN = 2 | fromRowColumnType XmMENU_POPUP = 3 | fromRowColumnType XmMENU_OPTION = 4; fun toRowColumnType 0 = XmWORK_AREA | toRowColumnType 1 = XmMENU_BAR | toRowColumnType 2 = XmMENU_PULLDOWN | toRowColumnType 3 = XmMENU_POPUP | toRowColumnType _ = XmMENU_OPTION; fun fromPacking XmPACK_TIGHT = 1 | fromPacking XmPACK_COLUMN = 2 | fromPacking XmPACK_NONE = 3; fun toPacking 1 = XmPACK_TIGHT | toPacking 2 = XmPACK_COLUMN | toPacking _ = XmPACK_NONE; fun fromProcessingDirection XmMAX_ON_TOP = 0 | fromProcessingDirection XmMAX_ON_BOTTOM = 1 | fromProcessingDirection XmMAX_ON_LEFT = 2 | fromProcessingDirection XmMAX_ON_RIGHT = 3; fun toProcessingDirection 0 = XmMAX_ON_TOP | toProcessingDirection 1 = XmMAX_ON_BOTTOM | toProcessingDirection 2 = XmMAX_ON_LEFT | toProcessingDirection _ = XmMAX_ON_RIGHT; fun fromScrollBarDisplayPolicy XmSTATIC = 0 | fromScrollBarDisplayPolicy XmAS_NEEDED = 1; fun toScrollBarDisplayPolicy 0 = XmSTATIC | toScrollBarDisplayPolicy _ = XmAS_NEEDED; fun fromScrollBarPlacement XmBOTTOM_RIGHT = 0 | fromScrollBarPlacement XmTOP_RIGHT = 1 | fromScrollBarPlacement XmBOTTOM_LEFT = 2 | fromScrollBarPlacement XmTOP_LEFT = 3; fun toScrollBarPlacement 0 = XmBOTTOM_RIGHT | toScrollBarPlacement 1 = XmTOP_RIGHT | toScrollBarPlacement 2 = XmBOTTOM_LEFT | toScrollBarPlacement _ = XmTOP_LEFT; fun fromScrollingPolicy XmAUTOMATIC = 0 | fromScrollingPolicy XmAPPLICATION_DEFINED = 1; fun toScrollingPolicy 0 = XmAUTOMATIC | toScrollingPolicy _ = XmAPPLICATION_DEFINED; fun fromSelectionPolicy XmSINGLE_SELECT = 0 | fromSelectionPolicy XmMULTIPLE_SELECT = 1 | fromSelectionPolicy XmEXTENDED_SELECT = 2 | fromSelectionPolicy XmBROWSE_SELECT = 3; fun toSelectionPolicy 0 = XmSINGLE_SELECT | toSelectionPolicy 1 = XmMULTIPLE_SELECT | toSelectionPolicy 2 = XmEXTENDED_SELECT | toSelectionPolicy _ = XmBROWSE_SELECT; fun fromShadowType XmNO_LINE = 0 | fromShadowType XmSINGLE_LINE = 1 | fromShadowType XmDOUBLE_LINE = 2 | fromShadowType XmSINGLE_DASHED_LINE = 3 | fromShadowType XmDOUBLE_DASHED_LINE = 4 | fromShadowType XmSHADOW_ETCHED_IN = 5 | fromShadowType XmSHADOW_ETCHED_OUT = 6 | fromShadowType XmSHADOW_IN = 7 | fromShadowType XmSHADOW_OUT = 8; fun toShadowType 0 = XmNO_LINE | toShadowType 1 = XmSINGLE_LINE | toShadowType 2 = XmDOUBLE_LINE | toShadowType 3 = XmSINGLE_DASHED_LINE | toShadowType 4 = XmDOUBLE_DASHED_LINE | toShadowType 5 = XmSHADOW_ETCHED_IN | toShadowType 6 = XmSHADOW_ETCHED_OUT | toShadowType 7 = XmSHADOW_IN | toShadowType _ = XmSHADOW_OUT; fun fromStringDirection XmSTRING_DIRECTION_L_TO_R = 0 | fromStringDirection XmSTRING_DIRECTION_R_TO_L = 1 | fromStringDirection XmSTRING_DIRECTION_DEFAULT = 255; fun toStringDirection 0 = XmSTRING_DIRECTION_L_TO_R | toStringDirection 1 = XmSTRING_DIRECTION_R_TO_L | toStringDirection _ = XmSTRING_DIRECTION_DEFAULT; fun fromTextScanType XmSELECT_POSITION = 0 | fromTextScanType XmSELECT_WHITESPACE = 1 | fromTextScanType XmSELECT_WORD = 2 | fromTextScanType XmSELECT_LINE = 3 | fromTextScanType XmSELECT_ALL = 4 | fromTextScanType XmSELECT_PARAGRAPH = 5; fun toTextScanType 0 = XmSELECT_POSITION | toTextScanType 1 = XmSELECT_WHITESPACE | toTextScanType 2 = XmSELECT_WORD | toTextScanType 3 = XmSELECT_LINE | toTextScanType 4 = XmSELECT_ALL | toTextScanType _ = XmSELECT_PARAGRAPH; fun fromUnitType XmPIXELS = 0 | fromUnitType Xm100TH_MILLIMETERS = 1 | fromUnitType Xm1000TH_INCHES = 2 | fromUnitType Xm100TH_POINTS = 3 | fromUnitType Xm100TH_FONT_UNITS = 4; fun toUnitType 0 = XmPIXELS | toUnitType 1 = Xm100TH_MILLIMETERS | toUnitType 2 = Xm1000TH_INCHES | toUnitType 3 = Xm100TH_POINTS | toUnitType _ = Xm100TH_FONT_UNITS; fun fromVisualPolicy XmVARIABLE = 0 | fromVisualPolicy XmCONSTANT = 1 | fromVisualPolicy XmRESIZE_IF_POSSIBLE = 2; fun toVisualPolicy 0 = XmVARIABLE | toVisualPolicy 1 = XmCONSTANT | toVisualPolicy _ = XmRESIZE_IF_POSSIBLE; fun fromXWMStateHint DontCareState = 0 | fromXWMStateHint NormalState = 1 | fromXWMStateHint ZoomState = 2 | fromXWMStateHint IconicState = 3 | fromXWMStateHint InactiveState = 4; fun toXWMStateHint 0 = DontCareState | toXWMStateHint 1 = NormalState | toXWMStateHint 2 = ZoomState | toXWMStateHint 3 = IconicState | toXWMStateHint _ = InactiveState; (* When this datatype changes the runtime system must change as well. *) (* I've removed this and replaced it simply by a tuple but making the tuple represent the values in the same way. That makes the interface independent of the way datatypes are represented. Note: the old representation of datatypes put the tag in the second word. DCJM 27/3/01. *) (* datatype CType = CAccelerators of XtAccelerators | CBool of bool (* typedef char Boolean *) | CColormap of Colormap | CCursor of Cursor | CDimension of int (* typedef unsigned short Dimension *) | CFontList of (XFontStruct * string) list | CInt of int | CIntTable of int list | CKeySym of int (* typedef unsigned int KeySym *) | CPixmap of Drawable | CPosition of int (* typedef short Position *) | CString of string | CStringTable of string list | CTrans of XtTranslations | CUnsignedChar of int | CUnsignedTable of int list (* typedef uchar * *) | CVisual of Visual | CWidget of Widget | CWidgetList of Widget list | CXmString of string | CXmStringTable of string list; *) val cAccelerators = 1 and cBool = 2 and cColormap = 3 and cCursor = 4 and cDimension = 5 and cFontList = 6 and cInt = 7 and cIntTable = 8 and cKeySym = 9 and cPixmap = 10 and cPosition = 11 and cString = 12 and cStringTable = 13 and cTrans = 14 and cUnsignedChar = 15 and cUnsignedTable = 16 and cVisual = 17 and cWidget = 18 and cWidgetList = 19 and cXmString = 20 and cXmStringTable = 21 fun I x = x; (* This version can be inlined for greater efficiency. SPF 1/6/95 *) val Cast : 'a -> 'b = RunCall.unsafeCast; val toInt : 'a -> int = Cast (* we could make this any type. *) fun CType (XmRAcceleratorTable a) = (toInt a, cAccelerators) | CType (XmRAlignment a) = (fromAlignment a, cUnsignedChar) | CType (XmRArrowDirection a) = (fromArrowDirection a, cUnsignedChar) | CType (XmRAtom i) = (i, cKeySym) (* Atom = unsigned = KeySym *) | CType (XmRAttachment a) = (fromAttachment a, cUnsignedChar) | CType (XmRBool b) = (toInt b, cBool) | CType (XmRButtonTypeTable L) = (toInt(map fromButtonType L), cUnsignedTable) | CType (XmRCardinal i) = (i, cKeySym) (* Cardinal = unsigned = KeySym *) | CType (XmRColormap c) = (toInt c, cColormap) | CType (XmRCommandWindowLocation t) = (fromCommandWindowLocation t, cUnsignedChar) | CType (XmRCursor c) = (toInt c, cCursor) | CType (XmRDefaultButtonType e) = (fromDefaultButtonType e, cInt) | CType (XmRDeleteResponse e) = (fromDeleteResponse e, cInt) | CType (XmRDialogStyle e) = (fromDialogStyle e, cInt) | CType (XmRDialogType e) = (fromDialogType e, cUnsignedChar) | CType (XmRDimension d) = (d, cDimension) | CType (XmREditMode e) = (fromEditMode e, cInt) | CType (XmRFileTypeMask m) = (fromFileTypeMask m, cUnsignedChar) | CType (XmRFontList L) = (toInt L, cFontList) | CType (XmRIndicatorType t) = (fromIndicatorType t, cUnsignedChar) | CType (XmRInitialState i) = (fromXWMStateHint i, cInt) | CType (XmRInt i) = (i, cInt) | CType (XmRKeySym k) = (k, cKeySym) | CType (XmRKeySymTable k) = (toInt k, cIntTable) | CType (XmRKeyboardFocusPolicy t) = (fromKeyboardFocusPolicy t, cUnsignedChar) | CType (XmRLabelType t) = (fromLabelType t, cUnsignedChar) | CType (XmRMultiClick t) = (fromMultiClick t, cUnsignedChar) | CType (XmRNavigationType t) = (fromNavigationType t, cUnsignedChar) | CType (XmROrientation r) = (fromOrientation r, cUnsignedChar) | CType (XmRPacking p) = (fromPacking p, cUnsignedChar) | CType (XmRProcessingDirection p) = (fromProcessingDirection p, cUnsignedChar) | CType (XmRResizePolicy p) = (fromResizePolicy p, cUnsignedChar) | CType (XmRRowColumnType p) = (fromRowColumnType p, cUnsignedChar) | CType (XmRPixel p) = (p, cInt) | CType (XmRPixmap p) = (toInt p, cPixmap) | CType (XmRPosition p) = (p, cPosition) | CType (XmRScrollBarDisplayPolicy p) = (fromScrollBarDisplayPolicy p, cUnsignedChar) | CType (XmRScrollBarPlacement p) = (fromScrollBarPlacement p, cUnsignedChar) | CType (XmRScrollingPolicy p) = (fromScrollingPolicy p, cUnsignedChar) | CType (XmRSelectionPolicy p) = (fromSelectionPolicy p, cUnsignedChar) | CType (XmRShadowType t) = (fromShadowType t, cUnsignedChar) | CType (XmRShort i) = (i, cPosition) (* Position = short *) | CType (XmRStringDirection t) = (fromStringDirection t, cUnsignedChar) | CType (XmRString s) = (toInt s, cString) | CType (XmRStringTable s) = (toInt s, cStringTable) | CType (XmRTextScanTypeTable L) = (toInt(map fromTextScanType L), cIntTable) | CType (XmRTranslationTable t) = (toInt t, cTrans) | CType (XmRUnitType t) = (fromUnitType t, cUnsignedChar) | CType (XmRVisual v) = (toInt v, cVisual) | CType (XmRVisualPolicy p) = (fromVisualPolicy p, cUnsignedChar) | CType (XmRWidget w) = (toInt w, cWidget) | CType (XmRWidgetList L) = (toInt L, cWidgetList) | CType (XmRXmString s) = (toInt s, cXmString) | CType (XmRXmStringTable t) = (toInt t, cXmStringTable); fun Convert (XmRAcceleratorTable _) = I | Convert (XmRAlignment _) = Cast toAlignment | Convert (XmRArrowDirection _) = Cast toArrowDirection | Convert (XmRAtom _) = I | Convert (XmRAttachment _) = Cast toAttachment | Convert (XmRBool _) = I | Convert (XmRButtonTypeTable _) = Cast (map toButtonType) | Convert (XmRCardinal _) = I | Convert (XmRColormap _) = I | Convert (XmRCommandWindowLocation _) = Cast toCommandWindowLocation | Convert (XmRCursor _) = I | Convert (XmRDefaultButtonType _) = Cast toDefaultButtonType | Convert (XmRDeleteResponse _) = Cast toDeleteResponse | Convert (XmRDialogStyle _) = Cast toDialogStyle | Convert (XmRDialogType _) = Cast toDialogType | Convert (XmRDimension _) = I | Convert (XmREditMode _) = Cast toEditMode | Convert (XmRFileTypeMask _) = Cast toFileTypeMask | Convert (XmRFontList _) = I | Convert (XmRIndicatorType _) = Cast toIndicatorType | Convert (XmRInitialState _) = Cast toXWMStateHint | Convert (XmRInt _) = I | Convert (XmRKeySym _) = I | Convert (XmRKeySymTable _) = I | Convert (XmRKeyboardFocusPolicy _) = Cast toKeyboardFocusPolicy | Convert (XmRLabelType _) = Cast toLabelType | Convert (XmRMultiClick _) = Cast toMultiClick | Convert (XmRNavigationType _) = Cast toNavigationType | Convert (XmROrientation _) = Cast toOrientation | Convert (XmRPacking _) = Cast toPacking | Convert (XmRProcessingDirection _) = Cast toProcessingDirection | Convert (XmRResizePolicy _) = Cast toResizePolicy | Convert (XmRRowColumnType _) = Cast toRowColumnType | Convert (XmRPixel _) = I | Convert (XmRPixmap _) = I | Convert (XmRPosition _) = I | Convert (XmRScrollBarDisplayPolicy _) = Cast toScrollBarDisplayPolicy | Convert (XmRScrollBarPlacement _) = Cast toScrollBarPlacement | Convert (XmRScrollingPolicy _) = Cast toScrollingPolicy | Convert (XmRSelectionPolicy _) = Cast toSelectionPolicy | Convert (XmRShadowType _) = Cast toShadowType | Convert (XmRShort _) = I | Convert (XmRStringDirection _) = Cast toStringDirection | Convert (XmRString _) = I | Convert (XmRStringTable _) = I | Convert (XmRTextScanTypeTable _) = Cast (map toTextScanType) | Convert (XmRTranslationTable _) = I | Convert (XmRUnitType _) = Cast toUnitType | Convert (XmRVisual _) = I | Convert (XmRVisualPolicy _) = Cast toVisualPolicy | Convert (XmRWidget _) = I | Convert (XmRWidgetList _) = I | Convert (XmRXmString _) = I | Convert (XmRXmStringTable _) = I; fun RName (XmRAcceleratorTable _) = "AcceleratorTable" | RName (XmRAlignment _) = "Alignment" | RName (XmRArrowDirection _) = "ArrowDirection" | RName (XmRAtom _) = "Atom" | RName (XmRAttachment _) = "Attachment" | RName (XmRBool _) = "Bool" | RName (XmRButtonTypeTable _) = "ButtonTypeTable" | RName (XmRCardinal _) = "Cardinal" | RName (XmRColormap _) = "Colormap" | RName (XmRCommandWindowLocation _) = "CommandWindowLocation" | RName (XmRCursor _) = "Cursor" | RName (XmRDefaultButtonType _) = "DefaultButtonType" | RName (XmRDeleteResponse _) = "DeleteResponse" | RName (XmRDialogStyle _) = "DialogStyle" | RName (XmRDialogType _) = "DialogType" | RName (XmRDimension _) = "Dimension" | RName (XmREditMode _) = "EditMode" | RName (XmRFileTypeMask _) = "FileTypeMask" | RName (XmRFontList _) = "FontList" | RName (XmRIndicatorType _) = "IndicatorType" | RName (XmRInitialState _) = "InitialState" | RName (XmRInt _) = "Int" | RName (XmRKeySym _) = "KeySym" | RName (XmRKeySymTable _) = "KeySymTable" | RName (XmRKeyboardFocusPolicy _) = "KeyboardFocusPolicy" | RName (XmRLabelType _) = "LabelType" | RName (XmRMultiClick _) = "MultiClick" | RName (XmRNavigationType _) = "NavigationType" | RName (XmROrientation _) = "Orientation" | RName (XmRPacking _) = "Packing" | RName (XmRProcessingDirection _) = "ProcessingDirection" | RName (XmRResizePolicy _) = "ResizePolicy" | RName (XmRRowColumnType _) = "RowColumnType" | RName (XmRPixel _) = "Pixel" | RName (XmRPixmap _) = "Pixmap" | RName (XmRPosition _) = "Position" | RName (XmRScrollBarDisplayPolicy _) = "ScrollBarDisplayPolicy" | RName (XmRScrollBarPlacement _) = "ScrollBarPlacement" | RName (XmRScrollingPolicy _) = "ScrollingPolicy" | RName (XmRSelectionPolicy _) = "SelectionPolicy" | RName (XmRShadowType _) = "ShadowType" | RName (XmRShort _) = "Short" | RName (XmRStringDirection _) = "StringDirection" | RName (XmRString _) = "String" | RName (XmRStringTable _) = "StringTable" | RName (XmRTextScanTypeTable _) = "TextScanTypeTable" | RName (XmRTranslationTable _) = "TranslationTable" | RName (XmRUnitType _) = "UnitType" | RName (XmRVisual _) = "Visual" | RName (XmRVisualPolicy _) = "VisualPolicy" | RName (XmRWidget _) = "Widget" | RName (XmRWidgetList _) = "WidgetList" | RName (XmRXmString _) = "XmString" | RName (XmRXmStringTable _) = "XmStringTable"; (* Added this function to remove the dependency on datatype representation. DCJM 28/3/01. *) fun insertValue (XmRAcceleratorTable _) v = XmRAcceleratorTable (Cast v) | insertValue (XmRAlignment _) v = XmRAlignment (Cast v) | insertValue (XmRArrowDirection _) v = XmRArrowDirection (Cast v) | insertValue (XmRAtom _) v = XmRAtom (Cast v) | insertValue (XmRAttachment _) v = XmRAttachment (Cast v) | insertValue (XmRBool _) v = XmRBool (Cast v) | insertValue (XmRButtonTypeTable _) v = XmRButtonTypeTable (Cast v) | insertValue (XmRCardinal _) v = XmRCardinal (Cast v) | insertValue (XmRColormap _) v = XmRColormap (Cast v) | insertValue (XmRCommandWindowLocation _) v = XmRCommandWindowLocation (Cast v) | insertValue (XmRCursor _) v = XmRCursor (Cast v) | insertValue (XmRDefaultButtonType _) v = XmRDefaultButtonType (Cast v) | insertValue (XmRDeleteResponse _) v = XmRDeleteResponse (Cast v) | insertValue (XmRDialogStyle _) v = XmRDialogStyle (Cast v) | insertValue (XmRDialogType _) v = XmRDialogType (Cast v) | insertValue (XmRDimension _) v = XmRDimension (Cast v) | insertValue (XmREditMode _) v = XmREditMode (Cast v) | insertValue (XmRFileTypeMask _) v = XmRFileTypeMask (Cast v) | insertValue (XmRFontList _) v = XmRFontList (Cast v) | insertValue (XmRIndicatorType _) v = XmRIndicatorType (Cast v) | insertValue (XmRInitialState _) v = XmRInitialState (Cast v) | insertValue (XmRInt _) v = XmRInt (Cast v) | insertValue (XmRKeySym _) v = XmRKeySym (Cast v) | insertValue (XmRKeySymTable _) v = XmRKeySymTable (Cast v) | insertValue (XmRKeyboardFocusPolicy _) v = XmRKeyboardFocusPolicy (Cast v) | insertValue (XmRLabelType _) v = XmRLabelType (Cast v) | insertValue (XmRMultiClick _) v = XmRMultiClick (Cast v) | insertValue (XmRNavigationType _) v = XmRNavigationType (Cast v) | insertValue (XmROrientation _) v = XmROrientation (Cast v) | insertValue (XmRPacking _) v = XmRPacking (Cast v) | insertValue (XmRProcessingDirection _) v = XmRProcessingDirection (Cast v) | insertValue (XmRResizePolicy _) v = XmRResizePolicy (Cast v) | insertValue (XmRRowColumnType _) v = XmRRowColumnType (Cast v) | insertValue (XmRPixel _) v = XmRPixel (Cast v) | insertValue (XmRPixmap _) v = XmRPixmap (Cast v) | insertValue (XmRPosition _) v = XmRPosition (Cast v) | insertValue (XmRScrollBarDisplayPolicy _) v = XmRScrollBarDisplayPolicy (Cast v) | insertValue (XmRScrollBarPlacement _) v = XmRScrollBarPlacement (Cast v) | insertValue (XmRScrollingPolicy _) v = XmRScrollingPolicy (Cast v) | insertValue (XmRSelectionPolicy _) v = XmRSelectionPolicy (Cast v) | insertValue (XmRShadowType _) v = XmRShadowType (Cast v) | insertValue (XmRShort _) v = XmRShort (Cast v) | insertValue (XmRStringDirection _) v = XmRStringDirection (Cast v) | insertValue (XmRString _) v = XmRString (Cast v) | insertValue (XmRStringTable _) v = XmRStringTable (Cast v) | insertValue (XmRTextScanTypeTable _) v = XmRTextScanTypeTable (Cast v) | insertValue (XmRTranslationTable _) v = XmRTranslationTable (Cast v) | insertValue (XmRUnitType _) v = XmRUnitType (Cast v) | insertValue (XmRVisual _) v = XmRVisual (Cast v) | insertValue (XmRVisualPolicy _) v = XmRVisualPolicy (Cast v) | insertValue (XmRWidget _) v = XmRWidget (Cast v) | insertValue (XmRWidgetList _) v = XmRWidgetList( Cast v) | insertValue (XmRXmString _) v = XmRXmString (Cast v) | insertValue (XmRXmStringTable _) v = XmRXmStringTable (Cast v); datatype Exn = EXN of unit ref * string * unit; val argTable = ref ([]:(Exn * string * XmRType) list); val Exn: Arg -> Exn = Cast; val Arg: Exn -> Arg = Cast; fun ArgName (e:Arg) = let (* open System; *) fun substring s i n = String.substring(s, i-1, n) val EXN (_,s,_) = Exn e; val n = size s; in if n < 3 orelse substring s 1 3 <> "XmN" then raise XWindows (s ^ " does not start with XmN") else substring s 4 (n - 3) end; fun FindByExn (e:Arg) = let val EXN (r1,n,value) = Exn e; (* This bit of code assumes that XmRType values are pairs with the tag in the second word and the value in the first. That's no longer correct. I've replaced it with the insertValue function above. DCJM 28/3/01. *) (*fun InsertValue (r:XmRType) = let val (_,tag) = Cast r; in Cast (value,tag):XmRType end;*) fun InsertValue (r:XmRType) = insertValue r value fun Find [] = raise XWindows (n ^ " has not been registered") | Find (H::T) = let val (EXN (r2,_,_),s,r) = H; in if r1 = r2 then (s,InsertValue r) else Find T end; in Find (!argTable) end; fun FindByString s = let fun Find [] = raise XWindows (s ^ " has not been registered.") | Find (H::T) = let val (_,t,_) = H; in if s = t then H else Find T end; in Find (!argTable) end; fun Length L = let fun Count [] n = n | Count (_::T) n = Count T (n+1); in Count L 0 end; in (*type CType = CType;*) val fromDefaultButtonType = fromDefaultButtonType; fun XtSetExnVals [] = [] | XtSetExnVals (H::T) = let val (s,r) = FindByExn H; val A = (s,CType r); in case H of XmNargv L => A :: XtSetExnVals (XmNargc (Length L) :: T) | XmNbuttonAccelerators L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNbuttonAcceleratorText L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNbuttonMnemonicCharSets L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNbuttonMnemonics L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNbuttons L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNbuttonType L => A :: XtSetExnVals (XmNbuttonCount (Length L) :: T) | XmNchildren L => A :: XtSetExnVals (XmNnumChildren (Length L) :: T) | XmNdirListItems L => A :: XtSetExnVals (XmNdirListItemCount (Length L) :: T) | XmNfileListItems L => A :: XtSetExnVals (XmNfileListItemCount (Length L) :: T) | XmNhistoryItems L => A :: XtSetExnVals (XmNhistoryItemCount (Length L) :: T) | XmNitems L => A :: XtSetExnVals (XmNitemCount (Length L) :: T) | XmNlistItems L => A :: XtSetExnVals (XmNlistItemCount (Length L) :: T) | XmNselectedItems L => A :: XtSetExnVals (XmNselectedItemCount (Length L) :: T) | XmNselectionArray L => A :: XtSetExnVals (XmNselectionArrayCount (Length L) :: T) | _ => A :: XtSetExnVals T end; fun XtSetExceptionType (E:'a -> Arg) (R:'a -> XmRType) = let val a:'a = Cast 0; val e = E a; val r = R a; in argTable := (Exn e,ArgName e,r) :: !argTable end; fun XtGetValue (w:Widget) (s:string):Arg = let val (EXN (u,n,_),_,r) = FindByString s; in Arg (EXN (u,n,Convert r (xcall (XCALL_GetValue,w,(s,CType r))))) end; local fun GetExns [] R C = (R,C) | GetExns ((s,c,d)::T) R C = let val (EXN (u,n,_),_,r) = FindByString s; val convert = Convert r; fun MakeExn v = Arg (EXN (u,n,convert v)); in GetExns T ((s,CType r,c,RName r,RName d,CType d) :: R) (MakeExn :: C) end; fun Zip [] _ acc = acc | Zip _ [] acc = acc | Zip (v::V) (c::C) acc = Zip V C (c v :: acc) in fun XtGetSubresources (w:Widget) (name:string) (class:string) (L:(string * string * XmRType) list):Arg list = let val (R,C) = GetExns L [] []; val V = xcall (XCALL_GetSubresources,w,name,class,R) in Zip V C [] end; fun XtGetApplicationResources (w:Widget) (L:(string * string * XmRType) list):Arg list = let val (R,C) = GetExns L [] [] ; val V = xcall (XCALL_XtGetApplicationResources,w,R) in Zip V C [] end ; end; local (* These have been copied over from the XWindows module. *) infix 9 Or; fun a Or b = xcall (12,a:int,b:int):int ; fun fromEventMask list = let fun MaskBit KeyPressMask = 1 | MaskBit KeyReleaseMask = 2 | MaskBit ButtonPressMask = 4 | MaskBit ButtonReleaseMask = 8 | MaskBit EnterWindowMask = 16 | MaskBit LeaveWindowMask = 32 | MaskBit PointerMotionMask = 64 | MaskBit PointerMotionHintMask = 128 | MaskBit Button1MotionMask = 256 | MaskBit Button2MotionMask = 512 | MaskBit Button3MotionMask = 1024 | MaskBit Button4MotionMask = 2048 | MaskBit Button5MotionMask = 4096 | MaskBit ButtonMotionMask = 8192 | MaskBit KeymapStateMask = 16384 | MaskBit ExposureMask = 32768 | MaskBit VisibilityChangeMask = 65536 | MaskBit StructureNotifyMask = 131072 | MaskBit ResizeRedirectMask = 262144 | MaskBit SubstructureNotifyMask = 524288 | MaskBit SubstructureRedirectMask = 1048576 | MaskBit FocusChangeMask = 2097152 | MaskBit PropertyChangeMask = 4194304 | MaskBit ColormapChangeMask = 8388608 | MaskBit OwnerGrabButtonMask = 16777216 | MaskBit ButtonClickMask = 536870912 Or MaskBit ButtonPressMask Or MaskBit ButtonReleaseMask (* extra event mask *) ; fun OrTogether [] acc = acc | OrTogether (H::T) acc = OrTogether T (MaskBit H Or acc) ; in OrTogether list 0 end in fun XtAddEventHandler (w: Widget) (ev: EventMask list) (nonmaskable: bool) (handler: Widget * 'a XEvent -> unit) : unit = xcall(XCALL_XtAddEventHandler, w, fromEventMask ev, nonmaskable, handler) end end (* local *); end (* struct *); polyml-5.7.1/mlsource/extra/Motif/XmNs.doc0000644000175000017500000005137413204034553017417 0ustar daviddavidXmNaccelerator XmCAccelerator string XmLabel XmNacceleratorText XmCAcceleratorText XmString XmLabel XmNaccelerators XmCAccelerators XtAccelerators Core XmNactivateCallback XmCCallback (callback) XmArrowButton,XmCascadeButton,XmDrawnButton,XmPushButton,XmText,XmTextField XmNadjustLast XmCAdjustLast bool XmRowColumn XmNadjustMargin XmCAdjustMargin bool XmRowColumn XmNalignment XmCAlignment XmAlignment XmLabel XmNallowOverlap XmCAllowOverlap bool XmBulletinBoard XmNallowResize XmCBoolean bool XmPanedWindow XmNallowShellResize XmCAllowShellResize bool Shell XmNancestorSensitive XmCBoolean bool Core,RectObj XmNapplyCallback XmCCallback (callback) XmSelectionBox XmNapplyLabelString XmCApplyLabelString XmString XmSelectionBox XmNargc XmCArgc int ApplicationShell XmNargv XmCArgv string list ApplicationShell XmNarmCallback XmCCallback (callback) XmArrowButton,XmDrawnButton,XmPushButton,XmToggleButton XmNarmColor XmCArmColor Pixel XmPushButton XmNarmPixmap XmCArmPixmap Drawable XmPushButton XmNarrowDirection XmCArrowDirection XmArrowDirection XmArrowButton XmNautoShowCursorPosition XmCAutoShowCursorPosition bool XmText XmNautoUnmanage XmCAutoUnmanage bool XmBulletinBoard XmNautomaticSelection XmCAutomaticSelection bool XmList XmNbackground XmCBackground Pixel Core XmNbackgroundPixmap XmCBackgroundPixmap Drawable Core XmNbaseHeight XmCBaseHeight int WMShell XmNbaseWidth XmCBaseWidth int WMShell XmNblinkRate XmCBlinkRate int XmText,XmTextField XmNborderColor XmCBorderColor Pixel Core XmNborderPixmap XmCPixmap Drawable Core XmNborderWidth XmCBorderWidth Dimension Core,RectObj XmNbottomAttachment XmCAttachment XmAttachment XmForm XmNbottomOffset XmCOffset int XmForm XmNbottomPosition XmCPosition int XmForm XmNbottomShadowColor XmCBottomShadowColor Pixel XmManager,XmPrimitive XmNbottomShadowPixmap XmCBottomShadowPixmap Drawable XmManager,XmPrimitive XmNbottomWidget XmCWidget Widget XmForm XmNbrowseSelectionCallback XmCCallback (callback) XmList XmNbuttonAcceleratorText XmCButtonAcceleratorText XmString list XmRowColumn XmNbuttonAccelerators XmCButtonAccelerators string list XmRowColumn XmNbuttonCount XmCButtonCount int XmRowColumn XmNbuttonFontList XmCButtonFontList XFontStruct list XmBulletinBoard XmNbuttonMnemonicCharSets XmCButtonMnemonicCharSets XmString list XmRowColumn XmNbuttonMnemonics XmCButtonMnemonics KeySym list XmRowColumn XmNbuttonSet XmCButtonSet int XmRowColumn XmNbuttonType XmCButtonType XmButtonType list XmRowColumn XmNbuttons XmCButtons XmString list XmRowColumn XmNcancelButton XmCWidget Widget XmBulletinBoard XmNcancelCallback XmCCallback (callback) XmMessageBox,XmSelectionBox XmNcancelLabelString XmCCancelLabelString XmString XmMessageBox,XmSelectionBox XmNcascadePixmap XmCPixmap Drawable XmCascadeButton XmNcascadingCallback XmCCallback (callback) XmCascadeButton XmNchildren XmCChildren Widget list Composite XmNclipWindow XmCClipWindow Widget XmScrolledWindow XmNcolormap XmCColormap Colormap Core XmNcolumns XmCColumns short XmText,XmTextField XmNcommand XmCTextString XmString XmCommand XmNcommandChangedCallback XmCCallback (callback) XmCommand XmNcommandEnteredCallback XmCCallback (callback) XmCommand XmNcommandWindow XmCCommandWindow Widget XmMainWindow XmNcommandWindowLocation XmCCommandWindowLocation XmCommandWindowLocation XmMainWindow XmNcursorPosition XmCCursorPosition XmTextPosition XmText,XmTextField XmNcursorPositionVisible XmCCursorPositionVisible bool XmText,XmTextField XmNdecimalPoints XmCDecimalPoints short XmScale XmNdecrementCallback XmCCallback (callback) XmScrollBar XmNdefaultActionCallback XmCCallback (callback) XmList XmNdefaultButton XmCWidget Widget XmBulletinBoard XmNdefaultButtonShadowThickness XmCDefaultButtonShadowThickness Dimension XmPushButton XmNdefaultButtonType XmCDefaultButtonType XmDefaultButtonType XmMessageBox XmNdefaultFontList XmCDefaultFontList XFontStruct list VendorShell,XmMenuShell XmNdefaultPosition XmCDefaultPosition bool XmBulletinBoard XmNdeleteResponse XmCDeleteResponse XmDeleteResponse VendorShell XmNdepth XmCDepth int Core XmNdestroyCallback XmCCallback (callback) Core,Object XmNdialogStyle XmCDialogStyle XmDialogStyle XmBulletinBoard XmNdialogTitle XmCDialogTitle XmString XmBulletinBoard XmNdialogType XmCDialogType XmDialogType XmMessageBox,XmSelectionBox XmNdirListItemCount XmCDirListItemCount int XmFileSelectionBox XmNdirListItems XmCDirListItems XmString list XmFileSelectionBox XmNdirListLabelString XmCDirListLabelString XmString XmFileSelectionBox XmNdirMask XmCDirMask XmString XmFileSelectionBox XmNdirSpec XmCDirSpec XmString XmFileSelectionBox XmNdirectory XmCDirectory XmString XmFileSelectionBox XmNdirectoryValid XmCDirectoryValid bool XmFileSelectionBox XmNdisarmCallback XmCDisarmCallback (callback) XmArrowButton,XmDrawnButton,XmPushButton,XmToggleButton XmNdoubleClickInterval XmCDoubleClickInterval int XmList XmNdragCallback XmCCallback (callback) XmScale,XmScrollBar XmNeditMode XmCEditMode XmEditMode XmText XmNeditable XmCEditable bool XmText,XmTextField XmNentryAlignment XmCAlignment XmAlignment XmRowColumn XmNentryBorder XmCEntryBorder Dimension XmRowColumn XmNentryCallback XmCCallback (callback) XmRowColumn XmNexposeCallback XmCCallback (callback) XmDrawingArea,XmDrawnButton XmNextendedSelectionCallback XmCCallback (callback) XmList XmNfileListItemCount XmCFileListItemCount int XmFileSelectionBox XmNfileListItems XmCFileListItems XmString list XmFileSelectionBox XmNfileListLabelString XmCFileListLabelString XmString XmFileSelectionBox XmNfileTypeMask XmCFileTypeMask XmFileTypeMask XmFileSelectionBox XmNfillOnArm XmCFillOnArm bool XmPushButton XmNfillOnSelect XmCFillOnSelect bool XmToggleButton XmNfilterLabelString XmCFilterLabelString XmString XmFileSelectionBox XmNfocusCallback XmCCallback (callback) XmBulletinBoard,XmText XmNfontList XmCFontList XFontStruct list XmLabel,XmList,XmScale,XmText,XmTextField XmNforeground XmCForeground Pixel XmManager,XmPrimitive XmNfractionBase XmCFraction int XmForm XmNgainPrimaryCallback XmCCallback (callback) XmText,XmTextField XmNgeometry XmCGeometry string Shell XmNheight XmCHeight Dimension Core,RectObj XmNheightInc XmCHeightInc int WMShell XmNhelpCallback XmCCallback (callback) XmGadget,XmManager,XmPrimitive XmNhelpLabelString XmCHelpLabelString XmString XmMessageBox,XmSelectionBox XmNhighlightColor XmCHighlightColor Pixel XmManager,XmPrimitive XmNhighlightOnEnter XmCHighlightOnEnter bool XmGadget,XmPrimitive,XmScale XmNhighlightPixmap XmCHighlightPixmap Drawable XmManager,XmPrimitive XmNhighlightThickness XmCHighlightThickness Dimension XmGadget,XmPrimitive,XmScale XmNhistoryItemCount XmCItemCount int XmCommand XmNhistoryItems XmCItems XmString list XmCommand XmNhistoryMaxItems XmCMaxItems int XmCommand XmNhistoryVisibleItemCount XmCVisibleItemCount int XmCommand XmNhorizontalScrollBar XmCHorizontalScrollBar Widget XmScrolledWindow XmNhorizontalSpacing XmCSpacing Dimension XmForm XmNiconMask XmCIconMask Drawable WMShell XmNiconName XmCIconName string TopLevelShell XmNiconNameEncoding XmCIconNameEncoding Atom TopLevelShell XmNiconPixmap XmCIconPixmap Drawable WMShell XmNiconWindow XmCIconWindow Drawable WMShell XmNiconX XmCIconX int WMShell XmNiconY XmCIconY int WMShell XmNiconic XmCIconic bool TopLevelShell XmNincrement XmCIncrement int XmScrollBar XmNincrementCallback XmCCallback (callback) XmScrollBar XmNindicatorOn XmCIndicatorOn bool XmToggleButton XmNindicatorSize XmCIndicatorSize Dimension XmToggleButton XmNindicatorType XmCIndicatorType XmIndicatorType XmToggleButton XmNinitialDelay XmCInitialDelay int XmScrollBar XmNinitialResourcesPersistent XmCInitialResourcesPersistent bool Core XmNinitialState XmCInitialState XWMStateHint WMShell XmNinput XmCInput bool WMShell XmNinputCallback XmCCallback (callback) XmDrawingArea XmNisAligned XmCIsAligned bool XmRowColumn XmNisHomogeneous XmCIsHomogeneous bool XmRowColumn XmNitemCount XmCItemCount int XmList XmNitems XmCItems XmString list XmList XmNkeyboardFocusPolicy XmCKeyboardFocusPolicy XmKeyboardFocusPolicy VendorShell XmNlabelFontList XmCLabelFontList XFontStruct list XmBulletinBoard XmNlabelInsensitivePixmap XmCLabelInsensitivePixmap Drawable XmLabel XmNlabelPixmap XmCLabelPixmap Drawable XmLabel XmNlabelString XmCLabelString XmString XmLabel,XmRowColumn XmNlabelType XmCLabelType XmLabelType XmLabel XmNleftAttachment XmCAttachment XmAttachment XmForm XmNleftOffset XmCOffset int XmForm XmNleftPosition XmCPosition int XmForm XmNleftWidget XmCWidget Widget XmForm XmNlistItemCount XmCItemCount int XmSelectionBox XmNlistItems XmCItems XmString list XmSelectionBox XmNlistLabelString XmCListLabelString XmString XmSelectionBox XmNlistMarginHeight XmCListMarginHeight Dimension XmList XmNlistMarginWidth XmCListMarginWidth Dimension XmList XmNlistSizePolicy XmCListSizePolicy XmVisualPolicy XmList XmNlistSpacing XmCListSpacing Dimension XmList XmNlistUpdated XmCListUpdated bool XmFileSelectionBox XmNlistVisibleItemCount XmCVisibleItemCount int XmSelectionBox XmNlosePrimaryCallback XmCCallback (callback) XmText,XmTextField XmNlosingFocusCallback XmCCallback (callback) XmText,XmTextField XmNmainWindowMarginHeight XmCMainWindowMarginHeight Dimension XmMainWindow XmNmainWindowMarginWidth XmCMainWindowMarginWidth Dimension XmMainWindow XmNmapCallback XmCCallback (callback) XmBulletinBoard,XmRowColumn XmNmappedWhenManaged XmCMappedWhenManaged bool Core XmNmappingDelay XmCMappingDelay int XmCascadeButton XmNmargin XmCMargin Dimension XmSeparator XmNmarginBottom XmCMarginBottom Dimension XmLabel XmNmarginHeight XmCMarginHeight Dimension XmBulletinBoard,XmDrawingArea,XmFrame,XmLabel,XmPanedWindow,XmRowColumn,XmText,XmTextField XmNmarginLeft XmCMarginLeft Dimension XmLabel XmNmarginRight XmCMarginRight Dimension XmLabel XmNmarginTop XmCMarginTop Dimension XmLabel XmNmarginWidth XmCMarginWidth Dimension XmBulletinBoard,XmDrawingArea,XmFrame,XmLabel,XmPanedWindow,XmRowColumn,XmText,XmTextField XmNmaxAspectX XmCMaxAspectX int WMShell XmNmaxAspectY XmCMaxAspectY int WMShell XmNmaxHeight XmCMaxHeight int WMShell XmNmaxLength XmCMaxLength int XmText,XmTextField XmNmaxWidth XmCMaxWidth int WMShell XmNmaximum XmCMaximum int XmScale,XmScrollBar XmNmenuAccelerator XmCAccelerators string XmRowColumn XmNmenuBar XmCMenuBar Widget XmMainWindow XmNmenuCursor XmCCursor Cursor XmRowColumn XmNmenuHelpWidget XmCMenuWidget Widget XmRowColumn XmNmenuHistory XmCMenuWidget Widget XmRowColumn XmNmenuPost XmCMenuPost string XmRowColumn XmNmessageAlignment XmCAlignment XmAlignment XmMessageBox XmNmessageCallback XmCCallback (callback) (everything) XmNmessageString XmCMessageString XmString XmMessageBox XmNmessageWindow XmCMessageWindow Widget XmMainWindow XmNminAspectX XmCMinAspectX int WMShell XmNminAspectY XmCMinAspectY int WMShell XmNminHeight XmCMinHeight int WMShell XmNminWidth XmCMinWidth int WMShell XmNminimizeButtons XmCMinimizeButtons bool XmMessageBox,XmSelectionBox XmNminimum XmCMinimum int XmScale,XmScrollBar XmNmnemonic XmCMnemonic KeySym XmLabel,XmRowColumn XmNmnemonicCharSet XmCMnemonicCharSet string XmLabel,XmRowColumn XmNmodifyVerifyCallback XmCCallback (callback) XmText,XmTextField XmNmotionVerifyCallback XmCCallback (callback) XmText,XmTextField XmNmultiClick XmCMultiClick XmMultiClickType XmArrowButton,XmDrawnButton,XmPushButton XmNmultipleSelectionCallback XmCCallback (callback) XmList XmNmustMatch XmCMustMatch bool XmSelectionBox XmNmwmDecorations XmCMwmDecorations int VendorShell XmNmwmFunctions XmCMwmFunctions int VendorShell XmNmwmInputMode XmCMwmInputMode int VendorShell XmNmwmMenu XmCMwmMenu string VendorShell XmNnavigationType XmCNavigationType XmNavigationType XmGadget,XmManager,XmPrimitive XmNnoMatchCallback XmCCallback (callback) XmSelectionBox XmNnoMatchString XmCNoMatchString XmString XmFileSelectionBox XmNnoResize XmCNoResize bool XmBulletinBoard XmNnumChildren XmCNumChildren Cardinal Composite XmNnumColumns XmCNumColumns short XmRowColumn XmNokCallback XmCCallback (callback) XmMessageBox,XmSelectionBox XmNokLabelString XmCOkLabelString XmString XmMessageBox,XmSelectionBox XmNoptionLabel XmCOptionLabel XmString XmRowColumn XmNoptionMnemonic XmCOptionMnemonic KeySym XmRowColumn XmNorientation XmCOrientation XmOrientation XmRowColumn,XmScale,XmScrollBar,XmSeparator XmNoverrideRedirect XmCOverrideRedirect bool Shell XmNpacking XmCPacking XmPacking XmRowColumn XmNpageDecrementCallback XmCCallback (callback) XmScrollBar XmNpageIncrement XmCPageIncrement int XmScrollBar XmNpageIncrementCallback XmCCallback (callback) XmScrollBar XmNpaneMaximum XmCPaneMaximum Dimension XmPanedWindow XmNpaneMinimum XmCPaneMinimum Dimension XmPanedWindow XmNpattern XmCPattern XmString XmFileSelectionBox XmNpendingDelete XmCPendingDelete bool XmText,XmTextField XmNpopdownCallback XmCCallback (callback) Shell XmNpopupCallback XmCCallback (callback) Shell XmNpopupEnabled XmCPopupEnabled bool XmRowColumn XmNpostFromButton XmCPostFromButton int XmRowColumn XmNprocessingDirection XmCProcessingDirection XmProcessingDirection XmScale,XmScrollBar XmNpromptString XmCPromptString XmString XmCommand XmNpushButtonEnabled XmCPushButtonEnabled bool XmDrawnButton XmNradioAlwaysOne XmCRadioAlwaysOne bool XmRowColumn XmNradioBehavior XmCRadioBehavior bool XmRowColumn XmNrecomputeSize XmCRecomputeSize bool XmLabel XmNrefigureMode XmCBoolean bool XmPanedWindow XmNrepeatDelay XmCRepeatDelay int XmScrollBar XmNresizable XmCBoolean bool XmForm XmNresizeCallback XmCCallback (callback) XmDrawingArea,XmDrawnButton XmNresizeHeight XmCResizeHeight bool XmRowColumn,XmText XmNresizePolicy XmCResizePolicy XmResizePolicy XmBulletinBoard,XmDrawingArea XmNresizeWidth XmCResizeWidth bool XmRowColumn,XmText,XmTextField XmNrightAttachment XmCAttachment XmAttachment XmForm XmNrightOffset XmCOffset int XmForm XmNrightPosition XmCPosition int XmForm XmNrightWidget XmCWidget Widget XmForm XmNrowColumnType XmCRowColumnType XmRowColumnType XmRowColumn XmNrows XmCRows short XmText XmNrubberPositioning XmCRubberPositioning bool XmForm XmNsashHeight XmCSashHeight Dimension XmPanedWindow XmNsashIndent XmCSashIndent Position XmPanedWindow XmNsashShadowThickness XmCShadowThickness Dimension XmPanedWindow XmNsashWidth XmCSashWidth Dimension XmPanedWindow XmNsaveUnder XmCSaveUnder bool Shell XmNscaleHeight XmCScaleHeight Dimension XmScale XmNscaleMultiple XmCScaleMultiple int XmScale XmNscaleWidth XmCScaleWidth Dimension XmScale XmNscrollBarDisplayPolicy XmCScrollBarDisplayPolicy XmScrollBarDisplayPolicy XmList,XmScrolledWindow XmNscrollBarPlacement XmCScrollBarPlacement XmScrollBarPlacement XmScrolledWindow XmNscrollHorizontal XmCScroll bool XmText XmNscrollLeftSide XmCScrollSide bool XmText XmNscrollTopSide XmCScrollSide bool XmText XmNscrollVertical XmCScroll bool XmText XmNscrolledWindowMarginHeight XmCScrolledWindowMarginHeight Dimension XmScrolledWindow XmNscrolledWindowMarginWidth XmCScrolledWindowMarginWidth Dimension XmScrolledWindow XmNscrollingPolicy XmCScrollingPolicy XmScrollingPolicy XmScrolledWindow XmNselectColor XmCSelectColor Pixel XmToggleButton XmNselectInsensitivePixmap XmCSelectInsensitivePixmap Drawable XmToggleButton XmNselectPixmap XmCSelectPixmap Drawable XmToggleButton XmNselectThreshold XmCSelectThreshold int XmText,XmTextField XmNselectedItemCount XmCSelectedItemCount int XmList XmNselectedItems XmCSelectedItems XmString list XmList XmNselectionArray XmCSelectionArray XmTextScanType list XmText,XmTextField XmNselectionArrayCount XmCSelectionArrayCount int XmText,XmTextField XmNselectionLabelString XmCSelectionLabelString XmString XmSelectionBox XmNselectionPolicy XmCSelectionPolicy XmSelectionPolicy XmList XmNsensitive XmCSensitive bool Core,RectObj XmNseparatorOn XmCSeparatorOn bool XmPanedWindow XmNseparatorType XmCSeparatorType XmShadowType XmSeparator XmNset XmCSet bool XmToggleButton XmNshadowThickness XmCShadowThickness Dimension XmGadget,XmManager,XmPrimitive XmNshadowType XmCShadowType XmShadowType XmBulletinBoard,XmDrawnButton,XmFrame XmNshellUnitType XmCShellUnitType XmUnitType VendorShell XmNshowArrows XmCShowArrows bool XmScrollBar XmNshowAsDefault XmCShowAsDefault Dimension XmPushButton XmNshowSeparator XmCShowSeparator bool XmMainWindow XmNshowValue XmCShowValue bool XmScale XmNsimpleCallback XmCCallback (callback) XmRowColumn XmNsingleSelectionCallback XmCCallback (callback) XmList XmNskipAdjust XmCBoolean bool XmPanedWindow XmNsliderSize XmCSliderSize int XmScrollBar XmNspacing XmCSpacing Dimension XmPanedWindow,XmRowColumn,XmScrolledWindow,XmToggleButton XmNstringDirection XmCStringDirection XmStringDirection XmLabel,XmList,XmManager XmNsubMenuId XmCMenuWidget Widget XmCascadeButton,XmRowColumn XmNsymbolPixmap XmCPixmap Drawable XmMessageBox XmNtextAccelerators XmCAccelerators XtAccelerators XmSelectionBox XmNtextColumns XmCColumns short XmSelectionBox XmNtextFontList XmCTextFontList XFontStruct list XmBulletinBoard XmNtextString XmCTextString XmString XmSelectionBox XmNtextTranslations XmCTranslations XtTranslations XmBulletinBoard XmNtitle XmCTitle string WMShell XmNtitleEncoding XmCTitleEncoding Atom WMShell XmNtitleString XmCTitleString XmString XmScale XmNtoBottomCallback XmCCallback (callback) XmScrollBar XmNtoTopCallback XmCCallback (callback) XmScrollBar XmNtopAttachment XmCAttachment XmAttachment XmForm XmNtopCharacter XmCTextPosition XmTextPosition XmText XmNtopItemPosition XmCTopItemPosition int XmList XmNtopOffset XmCOffset int XmForm XmNtopPosition XmCPosition int XmForm XmNtopShadowColor XmCTopShadowColor Pixel XmManager,XmPrimitive XmNtopShadowPixmap XmCTopShadowPixmap Drawable XmManager,XmPrimitive XmNtopWidget XmCWidget Widget XmForm XmNtransient XmCTransient bool WMShell XmNtransientFor XmCTransientFor Widget TransientShell XmNtranslations XmCTranslations XtTranslations Core XmNtraversalOn XmCTraversalOn bool XmGadget,XmManager,XmPrimitive XmNtroughColor XmCTroughColor Pixel XmScrollBar XmNunitType XmCUnitType XmUnitType XmGadget,XmManager,XmPrimitive XmNunmapCallback XmCCallback (callback) XmBulletinBoard,XmRowColumn XmNuseAsyncGeometry XmCUseAsyncGeometry bool VendorShell XmNvalue XmCValue int XmScale,XmScrollBar XmNvalueChangedCallback XmCCallback (callback) XmScale,XmScrollBar,XmText,XmTextField,XmToggleButton XmNverifyBell XmCVerifyBell bool XmText,XmTextField XmNverticalScrollBar XmCVerticalScrollBar Widget XmScrolledWindow XmNverticalSpacing XmCSpacing Dimension XmForm XmNvisibleItemCount XmCVisibleItemCount short XmList XmNvisibleWhenOff XmCVisibleWhenOff bool XmToggleButton XmNvisual XmCVisual Visual Shell XmNvisualPolicy XmCVisualPolicy XmVisualPolicy XmScrolledWindow XmNwaitForWm XmCWaitForWm bool WMShell XmNwidth XmCWidth Dimension Core,RectObj XmNwidthInc XmCWidthInc int WMShell XmNwinGravity XmCWinGravity int WMShell XmNwindowGroup XmCWindowGroup Drawable WMShell XmNwmTimeout XmCWmTimeout int WMShell XmNwordWrap XmCWordWrap bool XmText XmNworkWindow XmCWorkWindow Widget XmScrolledWindow XmNx XmCX Position Core,RectObj XmNy XmCY Position Core,RectObj NOT SUPPORTED XmNinsertPosition Composite XmNscreen Core XmNcreatePopupChildProc Shell XmNdirSearchProc XmFileSelectionBox XmNfileSearchProc XmFileSelectionBox XmNqualifySearchDataProc XmFileSelectionBox XmNuserData XmGadget,XmManager,XmPrimitive XmNentryClass XmRowColumn XmNwhichButton XmRowColumn XmNsource XmText polyml-5.7.1/mlsource/extra/Motif/MotifTypes.ML0000644000175000017500000003267213204034553020400 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure MotifTypes = struct structure XWINDOWS = XWindows ; local open XWindows ; in abstype Widget = Widget of int with end ; abstype XtAccelerators = XtAccelerators of int with end ; abstype XtTranslations = XtTranslations of int with end ; type XmString = string ; datatype XmAlignment = XmALIGNMENT_BEGINNING | XmALIGNMENT_CENTER | XmALIGNMENT_END ; datatype XmArrowDirection = XmARROW_UP | XmARROW_DOWN | XmARROW_LEFT | XmARROW_RIGHT ; datatype XmAttachment = XmATTACH_NONE | XmATTACH_FORM | XmATTACH_OPPOSITE_FORM | XmATTACH_WIDGET | XmATTACH_OPPOSITE_WIDGET | XmATTACH_POSITION | XmATTACH_SELF ; datatype XmButtonType = XmPUSHBUTTON | XmCHECKBUTTON | XmTOGGLEBUTTON | XmRADIOBUTTON | XmCASCADEBUTTON | XmSEPARATOR | XmDOUBLE_SEPARATOR | XmTITLE ; datatype XmCommandWindowLocation = XmCOMMAND_ABOVE_WORKSPACE | XmCOMMAND_BELOW_WORKSPACE ; datatype XmDefaultButtonType = XmDIALOG_NONE | XmDIALOG_APPLY_BUTTON | XmDIALOG_CANCEL_BUTTON | XmDIALOG_DEFAULT_BUTTON | XmDIALOG_OK_BUTTON | XmDIALOG_FILTER_LABEL | XmDIALOG_FILTER_TEXT | XmDIALOG_HELP_BUTTON | XmDIALOG_LIST | XmDIALOG_LIST_LABEL | XmDIALOG_MESSAGE_LABEL | XmDIALOG_SELECTION_LABEL | XmDIALOG_SYMBOL_LABEL | XmDIALOG_TEXT | XmDIALOG_SEPARATOR | XmDIALOG_DIR_LIST | XmDIALOG_DIR_LIST_LABEL (* | XmDIALOG_COMMAND_TEXT = XmDIALOG_TEXT | XmDIALOG_VALUE_TEXT = XmDIALOG_TEXT | XmDIALOG_PROMPT_LABEL = XmDIALOG_SELECTION_LABEL | XmDIALOG_HISTORY_LIST = XmDIALOG_LIST | XmDIALOG_FILE_LIST = XmDIALOG_LIST | XmDIALOG_FILE_LIST_LABEL = XmDIALOG_LIST_LABEL *) ; val XmDIALOG_COMMAND_TEXT = XmDIALOG_TEXT ; val XmDIALOG_VALUE_TEXT = XmDIALOG_TEXT ; val XmDIALOG_PROMPT_LABEL = XmDIALOG_SELECTION_LABEL ; val XmDIALOG_HISTORY_LIST = XmDIALOG_LIST ; val XmDIALOG_FILE_LIST = XmDIALOG_LIST ; val XmDIALOG_FILE_LIST_LABEL = XmDIALOG_LIST_LABEL ; datatype XmDeleteResponse = XmDESTROY | XmUNMAP | XmDO_NOTHING ; datatype XmDialogStyle = XmDIALOG_MODELESS | XmDIALOG_PRIMARY_APPLICATION_MODAL | XmDIALOG_FULL_APPLICATION_MODAL | XmDIALOG_SYSTEM_MODAL (* | XmDIALOG_APPLICATION_MODAL *) ; val XmDIALOG_APPLICATION_MODAL = XmDIALOG_PRIMARY_APPLICATION_MODAL ; datatype XmDialogType = XmDIALOG_ERROR | XmDIALOG_INFORMATION | XmDIALOG_MESSAGE | XmDIALOG_QUESTION | XmDIALOG_WARNING | XmDIALOG_WORKING | XmDIALOG_WORK_AREA | XmDIALOG_PROMPT | XmDIALOG_SELECTION | XmDIALOG_COMMAND | XmDIALOG_FILE_SELECTION ; datatype XmEditMode = XmMULTI_LINE_EDIT | XmSINGLE_LINE_EDIT ; datatype XmFileTypeMask = XmFILE_REGULAR | XmFILE_DIRECTORY | XmFILE_ANY_TYPE ; datatype XmIndicatorType = XmN_OF_MANY | XmONE_OF_MANY ; datatype XmKeyboardFocusPolicy = XmEXPLICIT | XmPOINTER ; datatype XmLabelType = XmPIXMAP | XmSTRING ; datatype XmMultiClickType = XmMULTICLICK_DISCARD | XmMULTICLICK_KEEP ; datatype XmNavigationType = XmNONE | XmTAB_GROUP | XmSTICKY_TAB_GROUP | XmEXCLUSIVE_TAB_GROUP ; datatype XmOrientation = XmVERTICAL | XmHORIZONTAL ; datatype XmPacking = XmPACK_TIGHT | XmPACK_COLUMN | XmPACK_NONE ; datatype XmProcessingDirection = XmMAX_ON_TOP | XmMAX_ON_BOTTOM | XmMAX_ON_LEFT | XmMAX_ON_RIGHT ; datatype XmResizePolicy = XmRESIZE_NONE | XmRESIZE_ANY | XmRESIZE_GROW ; datatype XmRowColumnType = XmWORK_AREA | XmMENU_BAR | XmMENU_PULLDOWN | XmMENU_POPUP | XmMENU_OPTION ; datatype XmScrollBarDisplayPolicy = XmSTATIC | XmAS_NEEDED ; datatype XmScrollBarPlacement = XmBOTTOM_RIGHT | XmTOP_RIGHT | XmBOTTOM_LEFT | XmTOP_LEFT ; datatype XmScrollingPolicy = XmAUTOMATIC | XmAPPLICATION_DEFINED ; datatype XmSelectionPolicy = XmSINGLE_SELECT | XmMULTIPLE_SELECT | XmEXTENDED_SELECT | XmBROWSE_SELECT ; datatype XmShadowType = XmNO_LINE | XmSINGLE_LINE | XmDOUBLE_LINE | XmSINGLE_DASHED_LINE | XmDOUBLE_DASHED_LINE | XmSHADOW_ETCHED_IN | XmSHADOW_ETCHED_OUT | XmSHADOW_IN | XmSHADOW_OUT ; datatype XmStringDirection = XmSTRING_DIRECTION_L_TO_R | XmSTRING_DIRECTION_R_TO_L | XmSTRING_DIRECTION_DEFAULT ; datatype XmTextScanType = XmSELECT_POSITION | XmSELECT_WHITESPACE | XmSELECT_WORD | XmSELECT_LINE | XmSELECT_ALL | XmSELECT_PARAGRAPH ; datatype XmUnitType = XmPIXELS | Xm100TH_MILLIMETERS | Xm1000TH_INCHES | Xm100TH_POINTS | Xm100TH_FONT_UNITS ; datatype XmVisualPolicy = XmVARIABLE | XmCONSTANT | XmRESIZE_IF_POSSIBLE ; type Arg = exn ; datatype XmRType = XmRAcceleratorTable of XtAccelerators | XmRAlignment of XmAlignment | XmRArrowDirection of XmArrowDirection | XmRAtom of int | XmRAttachment of XmAttachment | XmRBool of bool | XmRButtonTypeTable of XmButtonType list | XmRCardinal of int | XmRColormap of Colormap | XmRCommandWindowLocation of XmCommandWindowLocation | XmRCursor of Cursor | XmRDefaultButtonType of XmDefaultButtonType | XmRDeleteResponse of XmDeleteResponse | XmRDialogStyle of XmDialogStyle | XmRDialogType of XmDialogType | XmRDimension of int | XmREditMode of XmEditMode | XmRFileTypeMask of XmFileTypeMask | XmRFontList of (XFontStruct * string) list | XmRIndicatorType of XmIndicatorType | XmRInitialState of XWMStateHint | XmRInt of int | XmRKeySym of int | XmRKeySymTable of int list | XmRKeyboardFocusPolicy of XmKeyboardFocusPolicy | XmRLabelType of XmLabelType | XmRMultiClick of XmMultiClickType | XmRNavigationType of XmNavigationType | XmROrientation of XmOrientation | XmRPacking of XmPacking | XmRProcessingDirection of XmProcessingDirection | XmRResizePolicy of XmResizePolicy | XmRRowColumnType of XmRowColumnType | XmRPixel of int | XmRPixmap of Drawable | XmRPosition of int | XmRScrollBarDisplayPolicy of XmScrollBarDisplayPolicy | XmRScrollBarPlacement of XmScrollBarPlacement | XmRScrollingPolicy of XmScrollingPolicy | XmRSelectionPolicy of XmSelectionPolicy | XmRShadowType of XmShadowType | XmRShort of int | XmRStringDirection of XmStringDirection | XmRString of string | XmRStringTable of string list | XmRTextScanTypeTable of XmTextScanType list | XmRTranslationTable of XtTranslations | XmRUnitType of XmUnitType | XmRVisual of Visual | XmRVisualPolicy of XmVisualPolicy | XmRWidget of Widget | XmRWidgetList of Widget list | XmRXmString of XmString | XmRXmStringTable of XmString list ; datatype XtCallback = XmNactivateCallback | XmNapplyCallback | XmNarmCallback | XmNbrowseSelectionCallback | XmNcancelCallback | XmNcascadingCallback | XmNcommandChangedCallback | XmNcommandEnteredCallback | XmNdecrementCallback | XmNdefaultActionCallback | XmNdestroyCallback | XmNdisarmCallback | XmNdragCallback | XmNentryCallback | XmNexposeCallback | XmNextendedSelectionCallback | XmNfocusCallback | XmNgainPrimaryCallback | XmNhelpCallback | XmNincrementCallback | XmNinputCallback | XmNlosePrimaryCallback | XmNlosingFocusCallback | XmNmapCallback | XmNmessageCallback (* this callback gets Message XEvents only *) | XmNmodifyVerifyCallback | XmNmotionVerifyCallback | XmNmultipleSelectionCallback | XmNnoMatchCallback | XmNokCallback | XmNpageDecrementCallback | XmNpageIncrementCallback | XmNpopdownCallback | XmNpopupCallback | XmNresizeCallback | XmNsimpleCallback | XmNsingleSelectionCallback | XmNtoBottomCallback | XmNtoTopCallback | XmNunmapCallback | XmNvalueChangedCallback ; end (* local *) ; end (* struct *) ; (* Suppress printing of abstract types. *) local open MotifTypes fun printWidget _ _ (_: Widget) = PolyML.PrettyString "?" and printAccel _ _ (_: XtAccelerators) = PolyML.PrettyString "?" and printTrans _ _ (_: XtTranslations) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter printWidget and () = PolyML.addPrettyPrinter printAccel and () = PolyML.addPrettyPrinter printTrans end; polyml-5.7.1/mlsource/extra/Motif/initialClasses.awk0000644000175000017500000000021513204034553021502 0ustar daviddavid/NOT SUPPORTED/ { exit } { if ( NF >= 2 && $3 != "(callback)" ) { printf ("val %s = \"%s\" ;\n",$2,substr($2,4,length($2)-3)) ; } } polyml-5.7.1/mlsource/extra/Motif/XM_TYPES.ML0000644000175000017500000007240713204034553017605 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XM_TYPES = sig include MOTIF_TYPES ; exception XmNaccelerator of string ; exception XmNacceleratorText of XmString ; exception XmNaccelerators of XtAccelerators ; exception XmNadjustLast of bool ; exception XmNadjustMargin of bool ; exception XmNalignment of XmAlignment ; exception XmNallowOverlap of bool ; exception XmNallowResize of bool ; exception XmNallowShellResize of bool ; exception XmNancestorSensitive of bool ; exception XmNapplyLabelString of XmString ; exception XmNargc of int ; exception XmNargv of string list ; exception XmNarmColor of int ; exception XmNarmPixmap of XWindows.Drawable ; exception XmNarrowDirection of XmArrowDirection ; exception XmNautoShowCursorPosition of bool ; exception XmNautoUnmanage of bool ; exception XmNautomaticSelection of bool ; exception XmNbackground of int ; exception XmNbackgroundPixmap of XWindows.Drawable ; exception XmNbaseHeight of int ; exception XmNbaseWidth of int ; exception XmNblinkRate of int ; exception XmNborderColor of int ; exception XmNborderPixmap of XWindows.Drawable ; exception XmNborderWidth of int ; exception XmNbottomAttachment of XmAttachment ; exception XmNbottomOffset of int ; exception XmNbottomPosition of int ; exception XmNbottomShadowColor of int ; exception XmNbottomShadowPixmap of XWindows.Drawable ; exception XmNbottomWidget of Widget ; exception XmNbuttonAcceleratorText of XmString list ; exception XmNbuttonAccelerators of string list ; exception XmNbuttonCount of int ; exception XmNbuttonFontList of (XWindows.XFontStruct * string) list ; exception XmNbuttonMnemonicCharSets of XmString list ; exception XmNbuttonMnemonics of int list ; exception XmNbuttonSet of int ; exception XmNbuttonType of XmButtonType list ; exception XmNbuttons of XmString list ; exception XmNcancelButton of Widget ; exception XmNcancelLabelString of XmString ; exception XmNcascadePixmap of XWindows.Drawable ; exception XmNchildren of Widget list ; exception XmNclipWindow of Widget ; exception XmNcolormap of XWindows.Colormap ; exception XmNcolumns of int ; exception XmNcommand of XmString ; exception XmNcommandWindow of Widget ; exception XmNcommandWindowLocation of XmCommandWindowLocation ; exception XmNcursorPosition of int ; exception XmNcursorPositionVisible of bool ; exception XmNdecimalPoints of int ; exception XmNdefaultButton of Widget ; exception XmNdefaultButtonShadowThickness of int ; exception XmNdefaultButtonType of XmDefaultButtonType ; exception XmNdefaultFontList of (XWindows.XFontStruct * string) list ; exception XmNdefaultPosition of bool ; exception XmNdeleteResponse of XmDeleteResponse ; exception XmNdepth of int ; exception XmNdialogStyle of XmDialogStyle ; exception XmNdialogTitle of XmString ; exception XmNdialogType of XmDialogType ; exception XmNdirListItemCount of int ; exception XmNdirListItems of XmString list ; exception XmNdirListLabelString of XmString ; exception XmNdirMask of XmString ; exception XmNdirSpec of XmString ; exception XmNdirectory of XmString ; exception XmNdirectoryValid of bool ; exception XmNdoubleClickInterval of int ; exception XmNeditMode of XmEditMode ; exception XmNeditable of bool ; exception XmNentryAlignment of XmAlignment ; exception XmNentryBorder of int ; exception XmNfileListItemCount of int ; exception XmNfileListItems of XmString list ; exception XmNfileListLabelString of XmString ; exception XmNfileTypeMask of XmFileTypeMask ; exception XmNfillOnArm of bool ; exception XmNfillOnSelect of bool ; exception XmNfilterLabelString of XmString ; exception XmNfontList of (XWindows.XFontStruct * string) list ; exception XmNforeground of int ; exception XmNfractionBase of int ; exception XmNgeometry of string ; exception XmNheight of int ; exception XmNheightInc of int ; exception XmNhelpLabelString of XmString ; exception XmNhighlightColor of int ; exception XmNhighlightOnEnter of bool ; exception XmNhighlightPixmap of XWindows.Drawable ; exception XmNhighlightThickness of int ; exception XmNhistoryItemCount of int ; exception XmNhistoryItems of XmString list ; exception XmNhistoryMaxItems of int ; exception XmNhistoryVisibleItemCount of int ; exception XmNhorizontalScrollBar of Widget ; exception XmNhorizontalSpacing of int ; exception XmNiconMask of XWindows.Drawable ; exception XmNiconName of string ; exception XmNiconNameEncoding of int ; exception XmNiconPixmap of XWindows.Drawable ; exception XmNiconWindow of XWindows.Drawable ; exception XmNiconX of int ; exception XmNiconY of int ; exception XmNiconic of bool ; exception XmNincrement of int ; exception XmNindicatorOn of bool ; exception XmNindicatorSize of int ; exception XmNindicatorType of XmIndicatorType ; exception XmNinitialDelay of int ; exception XmNinitialResourcesPersistent of bool ; exception XmNinitialState of XWindows.XWMStateHint ; exception XmNinput of bool ; exception XmNisAligned of bool ; exception XmNisHomogeneous of bool ; exception XmNitemCount of int ; exception XmNitems of XmString list ; exception XmNkeyboardFocusPolicy of XmKeyboardFocusPolicy ; exception XmNlabelFontList of (XWindows.XFontStruct * string) list ; exception XmNlabelInsensitivePixmap of XWindows.Drawable ; exception XmNlabelPixmap of XWindows.Drawable ; exception XmNlabelString of XmString ; exception XmNlabelType of XmLabelType ; exception XmNleftAttachment of XmAttachment ; exception XmNleftOffset of int ; exception XmNleftPosition of int ; exception XmNleftWidget of Widget ; exception XmNlistItemCount of int ; exception XmNlistItems of XmString list ; exception XmNlistLabelString of XmString ; exception XmNlistMarginHeight of int ; exception XmNlistMarginWidth of int ; exception XmNlistSizePolicy of XmVisualPolicy ; exception XmNlistSpacing of int ; exception XmNlistUpdated of bool ; exception XmNlistVisibleItemCount of int ; exception XmNmainWindowMarginHeight of int ; exception XmNmainWindowMarginWidth of int ; exception XmNmappedWhenManaged of bool ; exception XmNmappingDelay of int ; exception XmNmargin of int ; exception XmNmarginBottom of int ; exception XmNmarginHeight of int ; exception XmNmarginLeft of int ; exception XmNmarginRight of int ; exception XmNmarginTop of int ; exception XmNmarginWidth of int ; exception XmNmaxAspectX of int ; exception XmNmaxAspectY of int ; exception XmNmaxHeight of int ; exception XmNmaxLength of int ; exception XmNmaxWidth of int ; exception XmNmaximum of int ; exception XmNmenuAccelerator of string ; exception XmNmenuBar of Widget ; exception XmNmenuCursor of XWindows.Cursor ; exception XmNmenuHelpWidget of Widget ; exception XmNmenuHistory of Widget ; exception XmNmenuPost of string ; exception XmNmessageAlignment of XmAlignment ; exception XmNmessageString of XmString ; exception XmNmessageWindow of Widget ; exception XmNminAspectX of int ; exception XmNminAspectY of int ; exception XmNminHeight of int ; exception XmNminWidth of int ; exception XmNminimizeButtons of bool ; exception XmNminimum of int ; exception XmNmnemonic of int ; exception XmNmnemonicCharSet of string ; exception XmNmultiClick of XmMultiClickType ; exception XmNmustMatch of bool ; exception XmNmwmDecorations of int ; exception XmNmwmFunctions of int ; exception XmNmwmInputMode of int ; exception XmNmwmMenu of string ; exception XmNnavigationType of XmNavigationType ; exception XmNnoMatchString of XmString ; exception XmNnoResize of bool ; exception XmNnumChildren of int ; exception XmNnumColumns of int ; exception XmNokLabelString of XmString ; exception XmNoptionLabel of XmString ; exception XmNoptionMnemonic of int ; exception XmNorientation of XmOrientation ; exception XmNoverrideRedirect of bool ; exception XmNpacking of XmPacking ; exception XmNpageIncrement of int ; exception XmNpaneMaximum of int ; exception XmNpaneMinimum of int ; exception XmNpattern of XmString ; exception XmNpendingDelete of bool ; exception XmNpopupEnabled of bool ; exception XmNpostFromButton of int ; exception XmNprocessingDirection of XmProcessingDirection ; exception XmNpromptString of XmString ; exception XmNpushButtonEnabled of bool ; exception XmNradioAlwaysOne of bool ; exception XmNradioBehavior of bool ; exception XmNrecomputeSize of bool ; exception XmNrefigureMode of bool ; exception XmNrepeatDelay of int ; exception XmNresizable of bool ; exception XmNresizeHeight of bool ; exception XmNresizePolicy of XmResizePolicy ; exception XmNresizeWidth of bool ; exception XmNrightAttachment of XmAttachment ; exception XmNrightOffset of int ; exception XmNrightPosition of int ; exception XmNrightWidget of Widget ; exception XmNrowColumnType of XmRowColumnType ; exception XmNrows of int ; exception XmNrubberPositioning of bool ; exception XmNsashHeight of int ; exception XmNsashIndent of int ; exception XmNsashShadowThickness of int ; exception XmNsashWidth of int ; exception XmNsaveUnder of bool ; exception XmNscaleHeight of int ; exception XmNscaleMultiple of int ; exception XmNscaleWidth of int ; exception XmNscrollBarDisplayPolicy of XmScrollBarDisplayPolicy ; exception XmNscrollBarPlacement of XmScrollBarPlacement ; exception XmNscrollHorizontal of bool ; exception XmNscrollLeftSide of bool ; exception XmNscrollTopSide of bool ; exception XmNscrollVertical of bool ; exception XmNscrolledWindowMarginHeight of int ; exception XmNscrolledWindowMarginWidth of int ; exception XmNscrollingPolicy of XmScrollingPolicy ; exception XmNselectColor of int ; exception XmNselectInsensitivePixmap of XWindows.Drawable ; exception XmNselectPixmap of XWindows.Drawable ; exception XmNselectThreshold of int ; exception XmNselectedItemCount of int ; exception XmNselectedItems of XmString list ; exception XmNselectionArray of XmTextScanType list ; exception XmNselectionArrayCount of int ; exception XmNselectionLabelString of XmString ; exception XmNselectionPolicy of XmSelectionPolicy ; exception XmNsensitive of bool ; exception XmNseparatorOn of bool ; exception XmNseparatorType of XmShadowType ; exception XmNset of bool ; exception XmNshadowThickness of int ; exception XmNshadowType of XmShadowType ; exception XmNshellUnitType of XmUnitType ; exception XmNshowArrows of bool ; exception XmNshowAsDefault of int ; exception XmNshowSeparator of bool ; exception XmNshowValue of bool ; exception XmNskipAdjust of bool ; exception XmNsliderSize of int ; exception XmNspacing of int ; exception XmNstringDirection of XmStringDirection ; exception XmNsubMenuId of Widget ; exception XmNsymbolPixmap of XWindows.Drawable ; exception XmNtextAccelerators of XtAccelerators ; exception XmNtextColumns of int ; exception XmNtextFontList of (XWindows.XFontStruct * string) list ; exception XmNtextString of XmString ; exception XmNtextTranslations of XtTranslations ; exception XmNtitle of string ; exception XmNtitleEncoding of int ; exception XmNtitleString of XmString ; exception XmNtopAttachment of XmAttachment ; exception XmNtopCharacter of int ; exception XmNtopItemPosition of int ; exception XmNtopOffset of int ; exception XmNtopPosition of int ; exception XmNtopShadowColor of int ; exception XmNtopShadowPixmap of XWindows.Drawable ; exception XmNtopWidget of Widget ; exception XmNtransient of bool ; exception XmNtransientFor of Widget ; exception XmNtranslations of XtTranslations ; exception XmNtraversalOn of bool ; exception XmNtroughColor of int ; exception XmNunitType of XmUnitType ; exception XmNuseAsyncGeometry of bool ; exception XmNvalue of int ; exception XmNverifyBell of bool ; exception XmNverticalScrollBar of Widget ; exception XmNverticalSpacing of int ; exception XmNvisibleItemCount of int ; exception XmNvisibleWhenOff of bool ; exception XmNvisual of XWindows.Visual ; exception XmNvisualPolicy of XmVisualPolicy ; exception XmNwaitForWm of bool ; exception XmNwidth of int ; exception XmNwidthInc of int ; exception XmNwinGravity of int ; exception XmNwindowGroup of XWindows.Drawable ; exception XmNwmTimeout of int ; exception XmNwordWrap of bool ; exception XmNworkWindow of Widget ; exception XmNx of int ; exception XmNy of int ; val XmCAccelerator: string ; val XmCAcceleratorText: string ; val XmCAccelerators: string ; val XmCAdjustLast: string ; val XmCAdjustMargin: string ; val XmCAlignment: string ; val XmCAllowOverlap: string ; val XmCAllowShellResize: string ; val XmCApplyLabelString: string ; val XmCArgc: string ; val XmCArgv: string ; val XmCArmColor: string ; val XmCArmPixmap: string ; val XmCArrowDirection: string ; val XmCAttachment: string ; val XmCAutoShowCursorPosition: string ; val XmCAutoUnmanage: string ; val XmCAutomaticSelection: string ; val XmCBackground: string ; val XmCBackgroundPixmap: string ; val XmCBaseHeight: string ; val XmCBaseWidth: string ; val XmCBlinkRate: string ; val XmCBoolean: string ; val XmCBorderColor: string ; val XmCBorderWidth: string ; val XmCBottomShadowColor: string ; val XmCBottomShadowPixmap: string ; val XmCButtonAcceleratorText: string ; val XmCButtonAccelerators: string ; val XmCButtonCount: string ; val XmCButtonFontList: string ; val XmCButtonMnemonicCharSets: string ; val XmCButtonMnemonics: string ; val XmCButtonSet: string ; val XmCButtonType: string ; val XmCButtons: string ; val XmCCancelLabelString: string ; val XmCChildren: string ; val XmCClipWindow: string ; val XmCColormap: string ; val XmCColumns: string ; val XmCCommandWindow: string ; val XmCCommandWindowLocation: string ; val XmCCursor: string ; val XmCCursorPosition: string ; val XmCCursorPositionVisible: string ; val XmCDecimalPoints: string ; val XmCDefaultButtonShadowThickness: string ; val XmCDefaultButtonType: string ; val XmCDefaultFontList: string ; val XmCDefaultPosition: string ; val XmCDeleteResponse: string ; val XmCDepth: string ; val XmCDialogStyle: string ; val XmCDialogTitle: string ; val XmCDialogType: string ; val XmCDirListItemCount: string ; val XmCDirListItems: string ; val XmCDirListLabelString: string ; val XmCDirMask: string ; val XmCDirSpec: string ; val XmCDirectory: string ; val XmCDirectoryValid: string ; val XmCDoubleClickInterval: string ; val XmCEditMode: string ; val XmCEditable: string ; val XmCEntryBorder: string ; val XmCFileListItemCount: string ; val XmCFileListItems: string ; val XmCFileListLabelString: string ; val XmCFileTypeMask: string ; val XmCFillOnArm: string ; val XmCFillOnSelect: string ; val XmCFilterLabelString: string ; val XmCFontList: string ; val XmCForeground: string ; val XmCFraction: string ; val XmCGeometry: string ; val XmCHeight: string ; val XmCHeightInc: string ; val XmCHelpLabelString: string ; val XmCHighlightColor: string ; val XmCHighlightOnEnter: string ; val XmCHighlightPixmap: string ; val XmCHighlightThickness: string ; val XmCHorizontalScrollBar: string ; val XmCIconMask: string ; val XmCIconName: string ; val XmCIconNameEncoding: string ; val XmCIconPixmap: string ; val XmCIconWindow: string ; val XmCIconX: string ; val XmCIconY: string ; val XmCIconic: string ; val XmCIncrement: string ; val XmCIndicatorOn: string ; val XmCIndicatorSize: string ; val XmCIndicatorType: string ; val XmCInitialDelay: string ; val XmCInitialResourcesPersistent: string ; val XmCInitialState: string ; val XmCInput: string ; val XmCIsAligned: string ; val XmCIsHomogeneous: string ; val XmCItemCount: string ; val XmCItems: string ; val XmCKeyboardFocusPolicy: string ; val XmCLabelFontList: string ; val XmCLabelInsensitivePixmap: string ; val XmCLabelPixmap: string ; val XmCLabelString: string ; val XmCLabelType: string ; val XmCListLabelString: string ; val XmCListMarginHeight: string ; val XmCListMarginWidth: string ; val XmCListSizePolicy: string ; val XmCListSpacing: string ; val XmCListUpdated: string ; val XmCMainWindowMarginHeight: string ; val XmCMainWindowMarginWidth: string ; val XmCMappedWhenManaged: string ; val XmCMappingDelay: string ; val XmCMargin: string ; val XmCMarginBottom: string ; val XmCMarginHeight: string ; val XmCMarginLeft: string ; val XmCMarginRight: string ; val XmCMarginTop: string ; val XmCMarginWidth: string ; val XmCMaxAspectX: string ; val XmCMaxAspectY: string ; val XmCMaxHeight: string ; val XmCMaxItems: string ; val XmCMaxLength: string ; val XmCMaxWidth: string ; val XmCMaximum: string ; val XmCMenuBar: string ; val XmCMenuPost: string ; val XmCMenuWidget: string ; val XmCMessageString: string ; val XmCMessageWindow: string ; val XmCMinAspectX: string ; val XmCMinAspectY: string ; val XmCMinHeight: string ; val XmCMinWidth: string ; val XmCMinimizeButtons: string ; val XmCMinimum: string ; val XmCMnemonic: string ; val XmCMnemonicCharSet: string ; val XmCMultiClick: string ; val XmCMustMatch: string ; val XmCMwmDecorations: string ; val XmCMwmFunctions: string ; val XmCMwmInputMode: string ; val XmCMwmMenu: string ; val XmCNavigationType: string ; val XmCNoMatchString: string ; val XmCNoResize: string ; val XmCNumChildren: string ; val XmCNumColumns: string ; val XmCOffset: string ; val XmCOkLabelString: string ; val XmCOptionLabel: string ; val XmCOptionMnemonic: string ; val XmCOrientation: string ; val XmCOverrideRedirect: string ; val XmCPacking: string ; val XmCPageIncrement: string ; val XmCPaneMaximum: string ; val XmCPaneMinimum: string ; val XmCPattern: string ; val XmCPendingDelete: string ; val XmCPixmap: string ; val XmCPopupEnabled: string ; val XmCPosition: string ; val XmCPostFromButton: string ; val XmCProcessingDirection: string ; val XmCPromptString: string ; val XmCPushButtonEnabled: string ; val XmCRadioAlwaysOne: string ; val XmCRadioBehavior: string ; val XmCRecomputeSize: string ; val XmCRepeatDelay: string ; val XmCResizeHeight: string ; val XmCResizePolicy: string ; val XmCResizeWidth: string ; val XmCRowColumnType: string ; val XmCRows: string ; val XmCRubberPositioning: string ; val XmCSashHeight: string ; val XmCSashIndent: string ; val XmCSashWidth: string ; val XmCSaveUnder: string ; val XmCScaleHeight: string ; val XmCScaleMultiple: string ; val XmCScaleWidth: string ; val XmCScroll: string ; val XmCScrollBarDisplayPolicy: string ; val XmCScrollBarPlacement: string ; val XmCScrollSide: string ; val XmCScrolledWindowMarginHeight: string ; val XmCScrolledWindowMarginWidth: string ; val XmCScrollingPolicy: string ; val XmCSelectColor: string ; val XmCSelectInsensitivePixmap: string ; val XmCSelectPixmap: string ; val XmCSelectThreshold: string ; val XmCSelectedItemCount: string ; val XmCSelectedItems: string ; val XmCSelectionArray: string ; val XmCSelectionArrayCount: string ; val XmCSelectionLabelString: string ; val XmCSelectionPolicy: string ; val XmCSensitive: string ; val XmCSeparatorOn: string ; val XmCSeparatorType: string ; val XmCSet: string ; val XmCShadowThickness: string ; val XmCShadowType: string ; val XmCShellUnitType: string ; val XmCShowArrows: string ; val XmCShowAsDefault: string ; val XmCShowSeparator: string ; val XmCShowValue: string ; val XmCSliderSize: string ; val XmCSpacing: string ; val XmCStringDirection: string ; val XmCTextFontList: string ; val XmCTextPosition: string ; val XmCTextString: string ; val XmCTitle: string ; val XmCTitleEncoding: string ; val XmCTitleString: string ; val XmCTopItemPosition: string ; val XmCTopShadowColor: string ; val XmCTopShadowPixmap: string ; val XmCTransient: string ; val XmCTransientFor: string ; val XmCTranslations: string ; val XmCTraversalOn: string ; val XmCTroughColor: string ; val XmCUnitType: string ; val XmCUseAsyncGeometry: string ; val XmCValue: string ; val XmCVerifyBell: string ; val XmCVerticalScrollBar: string ; val XmCVisibleItemCount: string ; val XmCVisibleWhenOff: string ; val XmCVisual: string ; val XmCVisualPolicy: string ; val XmCWaitForWm: string ; val XmCWidget: string ; val XmCWidth: string ; val XmCWidthInc: string ; val XmCWinGravity: string ; val XmCWindowGroup: string ; val XmCWmTimeout: string ; val XmCWordWrap: string ; val XmCWorkWindow: string ; val XmCX: string ; val XmCY: string ; end (* sig *) ; polyml-5.7.1/mlsource/extra/Motif/makeXmNs0000644000175000017500000000403313204034553017477 0ustar daviddavid# echo "signature XM_TYPES = sig" > XM_TYPES.ML echo "include MOTIF_TYPES ;" >> XM_TYPES.ML echo "local open XWINDOWS in" >> XM_TYPES.ML awk -f makeExceptions.awk < XmNs.doc | align_of >> XM_TYPES.ML awk -f makeClasses.awk < XmNs.doc | align_types | sort | uniq >> XM_TYPES.ML echo "end (* local *) ;" >> XM_TYPES.ML echo "end (* sig *) ;" >> XM_TYPES.ML echo "structure XmTypes = struct" > XmTypes.ML echo "local open MotifTypes XWindows in" >> XmTypes.ML awk -f makeExceptions.awk < XmNs.doc | align_of >> XmTypes.ML awk -f initialClasses.awk < XmNs.doc | align_equals | sort | uniq >> XmTypes.ML echo "end (* local *) ;" >> XmTypes.ML echo "end (* struct *) ;" >> XmTypes.ML echo "structure InitialiseCore = struct" > InitialiseCore.ML echo "local open MotifTypes XmTypes MotifCore in" >> InitialiseCore.ML awk -f makeInitials.awk < XmNs.doc >> InitialiseCore.ML echo "end (* local *) ;" >> InitialiseCore.ML echo "end (* struct *) ;" >> InitialiseCore.ML exit echo "signature XM_TYPES = sig" > XM_TYPES.ML echo "include MOTIF_TYPES ;" >> XM_TYPES.ML echo "local open XWINDOWS in" >> XM_TYPES.ML awk -f makeDatatype.awk < XmNs.doc | align_of >> XM_TYPES.ML echo "end (* local *) ;" >> XM_TYPES.ML echo "end (* sig *) ;" >> XM_TYPES.ML echo "structure XmTypes = struct" > XmTypes.ML echo "local open MotifTypes XWindows in" >> XmTypes.ML awk -f makeDatatype.awk < XmNs.doc | align_of >> XmTypes.ML echo "end (* local *) ;" >> XmTypes.ML echo "end (* struct *) ;" >> XmTypes.ML polyml-5.7.1/mlsource/extra/Motif/MOTIF_SIG.ML0000644000175000017500000004577213204034553017662 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature MOTIF_SIG = sig include XM_TYPES val XtParseTranslationTable : string -> XtTranslations val XtOverrideTranslations : Widget -> XtTranslations -> unit val XtAugmentTranslations : Widget -> XtTranslations -> unit val XtUninstallTranslations : Widget -> unit val XtTranslateTablePrint : XtTranslations -> unit val NoWidget : Widget val WidgetID : Widget -> int val WidgetExists : Widget -> bool val XtAppInitialise : string -> string -> string -> string list -> Arg list -> Widget val XtCreatePopupShell : string -> Widget -> Arg list -> Widget val XtRealizeWidget : Widget -> unit val XtUnrealizeWidget : Widget -> unit val XtDestroyWidget : Widget -> unit val XtManageChild : Widget -> unit val XtUnmanageChild : Widget -> unit val XtManageChildren : Widget list -> unit val XtUnmanageChildren : Widget list -> unit val XtSetExceptionType : ('a -> Arg) -> ('a -> XmRType) -> unit val XtSetValue : Widget -> Arg -> unit val XtSetValues : Widget -> Arg list -> unit val XtGetValue : Widget -> string -> Arg val XtGetValues : Widget -> string list -> Arg list val XtGetSubresources : Widget -> string -> string -> (string * string * XmRType) list -> Arg list val XtParent : Widget -> Widget val XtWindow : Widget -> XWindows.Drawable val XtDisplay : Widget -> XWindows.Display val XtName : Widget -> string val XtSetCallbacks : Widget -> (XtCallback * (Widget * 'a XWindows.XEvent * '_b -> '_b)) list -> '_b -> int -> 'a -> unit val XtSetSensitive : Widget -> bool -> unit val XtIsSensitive : Widget -> bool (* added 6/12/94 SPF *) val XtPopup : Widget -> XtGrabKind -> unit; val XtPopdown : Widget -> unit; val XtMapWidget : Widget -> unit; val XtUnmapWidget : Widget -> unit; (* added 19/1/95 SPF *) val XtIsManaged : Widget -> bool val XtIsRealized : Widget -> bool (* Added by DCJM. 23/3/01. *) val XtGetApplicationResources: Widget -> (string * string * XmRType) list -> Arg list ; val XtAddEventHandler: Widget -> XWindows.EventMask list -> bool -> (Widget * 'a XWindows.XEvent -> unit) -> unit val XmCreateArrowButton : Widget -> string -> Arg list -> Widget val XmCreateArrowButtonGadget : Widget -> string -> Arg list -> Widget val XmCreateBulletinBoard : Widget -> string -> Arg list -> Widget val XmCreateBulletinBoardDialog : Widget -> string -> Arg list -> Widget val XmCreateCascadeButton : Widget -> string -> Arg list -> Widget val XmCreateCascadeButtonGadget : Widget -> string -> Arg list -> Widget val XmCreateCommand : Widget -> string -> Arg list -> Widget val XmCreateDialogShell : Widget -> string -> Arg list -> Widget val XmCreateDrawingArea : Widget -> string -> Arg list -> Widget val XmCreateDrawnButton : Widget -> string -> Arg list -> Widget val XmCreateErrorDialog : Widget -> string -> Arg list -> Widget val XmCreateFileSelectionBox : Widget -> string -> Arg list -> Widget val XmCreateFileSelectionDialog : Widget -> string -> Arg list -> Widget val XmCreateForm : Widget -> string -> Arg list -> Widget val XmCreateFormDialog : Widget -> string -> Arg list -> Widget val XmCreateFrame : Widget -> string -> Arg list -> Widget val XmCreateInformationDialog : Widget -> string -> Arg list -> Widget val XmCreateLabel : Widget -> string -> Arg list -> Widget val XmCreateLabelGadget : Widget -> string -> Arg list -> Widget val XmCreateList : Widget -> string -> Arg list -> Widget val XmCreateMainWindow : Widget -> string -> Arg list -> Widget val XmCreateMenuBar : Widget -> string -> Arg list -> Widget val XmCreateMenuShell : Widget -> string -> Arg list -> Widget val XmCreateMessageBox : Widget -> string -> Arg list -> Widget val XmCreateMessageDialog : Widget -> string -> Arg list -> Widget val XmCreateOptionMenu : Widget -> string -> Arg list -> Widget val XmCreatePanedWindow : Widget -> string -> Arg list -> Widget val XmCreatePopupMenu : Widget -> string -> Arg list -> Widget val XmCreatePromptDialog : Widget -> string -> Arg list -> Widget val XmCreatePulldownMenu : Widget -> string -> Arg list -> Widget val XmCreatePushButton : Widget -> string -> Arg list -> Widget val XmCreatePushButtonGadget : Widget -> string -> Arg list -> Widget val XmCreateQuestionDialog : Widget -> string -> Arg list -> Widget val XmCreateRadioBox : Widget -> string -> Arg list -> Widget val XmCreateRowColumn : Widget -> string -> Arg list -> Widget val XmCreateScale : Widget -> string -> Arg list -> Widget val XmCreateScrollBar : Widget -> string -> Arg list -> Widget val XmCreateScrolledList : Widget -> string -> Arg list -> Widget val XmCreateScrolledText : Widget -> string -> Arg list -> Widget val XmCreateScrolledWindow : Widget -> string -> Arg list -> Widget val XmCreateSelectionBox : Widget -> string -> Arg list -> Widget val XmCreateSelectionDialog : Widget -> string -> Arg list -> Widget val XmCreateSeparator : Widget -> string -> Arg list -> Widget val XmCreateSeparatorGadget : Widget -> string -> Arg list -> Widget val XmCreateSimpleCheckBox : Widget -> string -> Arg list -> Widget val XmCreateSimpleMenuBar : Widget -> string -> Arg list -> Widget val XmCreateSimpleOptionMenu : Widget -> string -> Arg list -> Widget val XmCreateSimplePopupMenu : Widget -> string -> Arg list -> Widget val XmCreateSimplePulldownMenu : Widget -> string -> Arg list -> Widget val XmCreateSimpleRadioBox : Widget -> string -> Arg list -> Widget val XmCreateText : Widget -> string -> Arg list -> Widget val XmCreateTextField : Widget -> string -> Arg list -> Widget val XmCreateToggleButton : Widget -> string -> Arg list -> Widget val XmCreateToggleButtonGadget : Widget -> string -> Arg list -> Widget val XmCreateWarningDialog : Widget -> string -> Arg list -> Widget val XmCreateWorkArea : Widget -> string -> Arg list -> Widget val XmCreateWorkingDialog : Widget -> string -> Arg list -> Widget val XmCascadeButtonHighlight : Widget -> bool -> unit val XmCommandError : Widget -> XmString -> unit val XmCommandGetChild : Widget -> XmDefaultButtonType -> Widget val XmFileSelectionBoxGetChild : Widget -> XmDefaultButtonType -> Widget val XmFileSelectionDoSearch : Widget -> XmString -> unit val XmIsArrowButton : Widget -> bool val XmIsArrowButtonGadget : Widget -> bool val XmIsBulletinBoard : Widget -> bool val XmIsCascadeButton : Widget -> bool val XmIsCascadeButtonGadget : Widget -> bool val XmIsCommand : Widget -> bool val XmIsDesktopObject : Widget -> bool val XmIsDialogShell : Widget -> bool (* unsupported by solaris version of toolkit ... val XmIsDisplayObject : Widget -> bool ... *) val XmIsDrawingArea : Widget -> bool val XmIsDrawnButton : Widget -> bool val XmIsExtObject : Widget -> bool val XmIsFileSelectionBox : Widget -> bool val XmIsForm : Widget -> bool val XmIsFrame : Widget -> bool val XmIsGadget : Widget -> bool val XmIsLabel : Widget -> bool val XmIsLabelGadget : Widget -> bool val XmIsList : Widget -> bool val XmIsMainWindow : Widget -> bool val XmIsManager : Widget -> bool val XmIsMenuShell : Widget -> bool val XmIsMessageBox : Widget -> bool val XmIsMotifWMRunning : Widget -> bool val XmIsPanedWindow : Widget -> bool val XmIsPrimitive : Widget -> bool val XmIsPushButton : Widget -> bool val XmIsPushButtonGadget : Widget -> bool val XmIsRowColumn : Widget -> bool val XmIsScale : Widget -> bool (* unsupported by solaris version of toolkit ... val XmIsScreenObject : Widget -> bool ... *) val XmIsScrollBar : Widget -> bool val XmIsScrolledWindow : Widget -> bool val XmIsSelectionBox : Widget -> bool val XmIsSeparator : Widget -> bool val XmIsSeparatorGadget : Widget -> bool val XmIsShellExt : Widget -> bool val XmIsText : Widget -> bool val XmIsTextField : Widget -> bool val XmIsToggleButton : Widget -> bool val XmIsToggleButtonGadget : Widget -> bool val XmIsVendorShell : Widget -> bool val XmIsVendorShellExt : Widget -> bool (* unsupported in Motif 1.2 val XmIsWorldObject : Widget -> bool *) val XmMainWindowSetAreas : Widget -> Widget -> Widget -> Widget -> Widget -> Widget -> unit val XmMainWindowSep1 : Widget -> Widget val XmMainWindowSep2 : Widget -> Widget val XmMainWindowSep3 : Widget -> Widget val XmMessageBoxGetChild : Widget -> XmDefaultButtonType -> Widget val XmOptionButtonGadget : Widget -> Widget val XmOptionLabelGadget : Widget -> Widget val XmScrolledWindowSetAreas : Widget -> Widget -> Widget -> Widget -> unit val XmSelectionBoxGetChild : Widget -> XmDefaultButtonType -> Widget val XmSetMenuCursor : XWindows.Display -> XWindows.Cursor -> unit val XmTrackingLocate : Widget -> XWindows.Cursor -> bool -> Widget val XmUpdateDisplay : Widget -> unit (******************************************************************************) (* *) (* Operations on XmText Widgets *) (* *) (******************************************************************************) val XmTextGetAddMode : Widget -> bool val XmTextGetBaseline : Widget -> int val XmTextGetCursorPosition : Widget -> int val XmTextGetEditable : Widget -> bool val XmTextGetInsertionPosition : Widget -> int val XmTextGetLastPosition : Widget -> int val XmTextGetMaxLength : Widget -> int val XmTextGetSelection : Widget -> int val XmTextGetString : Widget -> string val XmTextGetTopCharacter : Widget -> int val XmTextInsert : Widget -> int -> string -> unit val XmTextPaste : Widget -> bool val XmTextRemove : Widget -> bool val XmTextReplace : Widget -> int -> int -> string -> unit val XmTextScroll : Widget -> int -> unit val XmTextSetAddMode : Widget -> bool -> unit val XmTextSetCursorPosition : Widget -> int -> unit val XmTextSetEditable : Widget -> bool -> unit val XmTextSetInsertionPosition : Widget -> int -> unit val XmTextSetMaxLength : Widget -> int -> unit val XmTextSetString : Widget -> string -> unit val XmTextSetTopCharacter : Widget -> int -> unit val XmTextShowPosition : Widget -> int -> unit val XmTextXYToPos : Widget -> int -> int -> int (******************************************************************************) (* *) (* Operations on XmTextField Widgets *) (* *) (******************************************************************************) val XmTextFieldGetAddMode : Widget -> bool val XmTextFieldGetBaseline : Widget -> int val XmTextFieldGetCursorPosition : Widget -> int val XmTextFieldGetEditable : Widget -> bool val XmTextFieldGetInsertionPosition : Widget -> int val XmTextFieldGetLastPosition : Widget -> int val XmTextFieldGetMaxLength : Widget -> int val XmTextFieldGetSelection : Widget -> int val XmTextFieldGetString : Widget -> string val XmTextFieldInsert : Widget -> int -> string -> unit val XmTextFieldPaste : Widget -> bool val XmTextFieldRemove : Widget -> bool val XmTextFieldReplace : Widget -> int -> int -> string -> unit val XmTextFieldSetAddMode : Widget -> bool -> unit val XmTextFieldSetCursorPosition : Widget -> int -> unit val XmTextFieldSetEditable : Widget -> bool -> unit val XmTextFieldSetInsertionPosition : Widget -> int -> unit val XmTextFieldSetMaxLength : Widget -> int -> unit val XmTextFieldSetString : Widget -> string -> unit val XmTextFieldShowPosition : Widget -> int -> unit val XmTextFieldXYToPos : Widget -> int -> int -> int (******************************************************************************) (* *) (* Operations on XmList Widgets *) (* *) (******************************************************************************) (* This widget maintains an ordered list of strings. The user can select or deselect strings in the list. The programmer can refer to the strings either by name (passing in the string itself) or by position (passing in an integer; the first string in the list has position 1). *) (************************* Adding Items to List *******************************) (* Add one item (the string) at the specified postion (the int). *) (* If the string is in the Widget's current selected items list, it will be pre-selected. *) val XmListAddItem : Widget -> string -> int -> unit; (* As XmListAddItems, except that the new item is not pre-selected. *) val XmListAddItemUnselected : Widget -> string -> int -> unit; (* Add a number of items, starting at the specifed position. *) val XmListAddItems : Widget -> string list -> int -> unit; (************************* Deleting Items from List ***************************) (* Delete all items in the list *) val XmListDeleteAllItems : Widget -> unit; (* Delete the item (specified as a string) from the list *) val XmListDeleteItem : Widget -> string -> unit; (* Delete several item (specified as strings) from the list *) val XmListDeleteItems : Widget -> string list -> unit; (* Delete the item (specified by its position) from the widget *) val XmListDeletePos: Widget -> int -> unit; (* Delete several items (specified by their positions) from the widget *) val XmListDeleteItemsPos: Widget -> int -> int -> unit; (************************* Deselecting Items **********************************) (* Deselect all items in the list *) val XmListDeselectAllItems: Widget -> unit; (* Deselect the item (specified as a string). *) val XmListDeselectItem: Widget -> string -> unit; (* Deselect the item (specified by its position). *) val XmListDeselectPos: Widget -> int -> unit; (************************* Query Functions ************************************) (* Return the list of positions at which the string appears in the list *) val XmListGetMatchPos: Widget -> string -> int list (* Return the list of positions of the currently selected items *) val XmListGetSelectedPos: Widget -> int list (* Does the item occur in the list? *) val XmListItemExists: Widget -> string -> bool; (* What is the first occurrence of the item in the list? (0 if absent). *) val XmListItemPos: Widget -> string -> int; (************************* Replacing Items in the List ************************) (* For each (old, new) pair, replace each occurrence of "old" with "new". *) val XmListReplaceItems: Widget -> (string * string) list -> unit; (* Replace items in the list, starting at the specified position *) val XmListReplaceItemsPos: Widget -> string list -> int -> unit; (************************* Selecting Items in the List ************************) (* Highlight the specified item and add it to the list of selected items. If the bool is true, also invoke the selection callback. *) val XmListSelectItem: Widget -> string -> bool -> unit; val XmListSelectPos: Widget -> int -> bool -> unit; (************************* Set Add Mode ***************************************) (* Activate (bool is "true") or deactivate (bool is "false") Add Mode. *) val XmListSetAddMode: Widget -> bool -> unit; (************************* Set Appearance *************************************) (* Make an existing item the last visible item in the list. *) val XmListSetBottomItem: Widget -> string -> unit; val XmListSetBottomPos: Widget -> int -> unit; (* Moves the horizontal scroolbar to the speciied position *) val XmListSetHorizPos: Widget -> int -> unit; (* Make an existing item the first visible item in the list. *) val XmListSetItem: Widget -> string -> unit; val XmListSetPos: Widget -> int -> unit; (************************* Miscellaneous *************************************) (* Not supported by the SUNOS version of the tool-kit ... val XmListAddItemsUnselected : Widget -> string list -> int -> unit; val XmListDeletePositions: Widget -> int list -> unit; val XmListGetKbdItemPos: Widget -> int val XmListPosSelected: Widget -> int -> bool; val XmListReplaceItemsPosUnselected: Widget -> string list -> int -> unit; val XmListReplaceItemsPositions: Widget -> (int * string) list -> unit; val XmListSetKbdItemPos: Widget -> int -> bool; val XmListUpdateSelectedList: Widget -> unit; val XmListYToPos: Widget -> int -> int val XmListPosToBounds: Widget -> ??? ... *) (* Added by DCJM. 23/3/01. *) val XmMenuPosition: Widget -> 'a XWindows.XEvent -> unit (* local *) end (* signature *) polyml-5.7.1/mlsource/extra/Motif/makeClasses.awk0000644000175000017500000000016213204034553020767 0ustar daviddavid/NOT SUPPORTED/ { exit } { if ( NF >= 2 && $3 != "(callback)" ) { printf ("val %s: string ;\n",$2) ; } } polyml-5.7.1/mlsource/extra/Win/0000755000175000017500000000000013204034553015510 5ustar daviddavidpolyml-5.7.1/mlsource/extra/Win/Path.sml0000644000175000017500000000772613204034553017135 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Path : sig type HDC and HRGN type POINT = {x: int, y: int} datatype PointType = datatype Line.PointType val AbortPath : HDC -> unit val BeginPath : HDC -> unit val CloseFigure : HDC -> unit val EndPath : HDC -> unit val FillPath : HDC -> unit val FlattenPath : HDC -> unit val GetMiterLimit : HDC -> real val GetPath : HDC -> (PointType * POINT) list val PathToRegion : HDC -> HRGN val SetMiterLimit : HDC * real -> real val StrokeAndFillPath : HDC -> unit val StrokePath : HDC -> unit val WidenPath : HDC -> unit end = struct local open Foreign Base in type HDC = HDC and POINT = POINT and HRGN = HRGN datatype PointType = datatype Line.PointType (* PATHS *) val AbortPath = winCall1(gdi "AbortPath") (cHDC) (successState "AbortPath") val BeginPath = winCall1(gdi "BeginPath") (cHDC) (successState "BeginPath") val CloseFigure = winCall1(gdi "CloseFigure") (cHDC) (successState "CloseFigure") val EndPath = winCall1(gdi "EndPath") (cHDC) (successState "EndPath") val FillPath = winCall1(gdi "FillPath") (cHDC) (successState "FillPath") val FlattenPath = winCall1(gdi "FlattenPath") (cHDC) (successState "FlattenPath") val PathToRegion = winCall1(gdi "PathToRegion") (cHDC) cHRGN val StrokeAndFillPath = winCall1(gdi "StrokeAndFillPath") (cHDC) (successState "StrokeAndFillPath") val StrokePath = winCall1(gdi "StrokePath") (cHDC) (successState "StrokePath") val WidenPath = winCall1(gdi "WidenPath") (cHDC) (successState "WidenPath") local val getMiterLimit = winCall2(gdi "GetMiterLimit") (cHDC, cStar cFloat) (successState "GetMiterLimit") and setMiterLimit = winCall3(gdi "SetMiterLimit") (cHDC, cFloat, cStar cFloat) (successState "SetMiterLimit") in fun GetMiterLimit hdc = let val v = ref 0.0 in getMiterLimit(hdc, v); !v end and SetMiterLimit(hdc, m) = let val v = ref 0.0 in setMiterLimit(hdc, m, v); !v end end local val getPath = winCall4 (gdi "GetPath") (cHDC, cPointer, cPointer, cInt) cInt val {load=fromPt, ctype={size=sizePt, ...}, ...} = breakConversion cPoint val {load=fromTy, ...} = breakConversion GdiBase.cPOINTTYPE in fun GetPath h = let open Memory infix 6 ++ (* Passing 0 as the size will retrieve the number of points. *) val count = getPath(h, null, null, 0) val _ = checkResult(count >= 0) val ptarr = malloc(Word.fromInt count * sizePt) val farr = malloc(Word.fromInt count) val _ = getPath(h, ptarr, farr, count) handle ex => (free ptarr; free farr; raise ex) fun getElement n = (fromTy(farr ++ Word.fromInt n), fromPt(ptarr ++ Word.fromInt n * sizePt)) in List.tabulate(count, getElement) before (free ptarr; free farr) end end end end; polyml-5.7.1/mlsource/extra/Win/Windows.pyp0000644000175000017500000000202513204034553017673 0ustar daviddavid[Files] NFiles=53 File0=ROOT.sml Root=ROOT.sml File1=Base.sml File2=Bitmap.sml File3=Brush.sml File4=Button.sml File5=Caret.sml File6=Class.sml File7=Clipboard.sml File8=Clipping.sml File9=Color.sml File10=ComboBase.sml File11=Combobox.sml File12=CommonControls.sml File13=CommonDialog.sml File14=Cursor.sml File15=DeviceBase.sml File16=DeviceContext.sml File17=Dialog.sml File18=DragDrop.sml File19=Edit.sml File20=FlagPrint.sml File21=Font.sml File22=FontBase.sml File23=GdiBase.sml File24=Globals.sml File25=Icon.sml File26=Keyboard.sml File27=Line.sml File28=Listbox.sml File29=Locale.sml File30=LocaleBase.sml File31=Menu.sml File32=MenuBase.sml File33=Message.sml File34=MessageBox.sml File35=Metafile.sml File36=Mouse.sml File37=Painting.sml File38=Path.sml File39=Pen.sml File40=Printing.sml File41=Rectangle.sml File42=Region.sml File43=Resource.sml File44=Scrollbar.sml File45=ScrollBase.sml File46=Shape.sml File47=Static.sml File48=Transform.sml File49=WinBase.sml File50=Window.sml File51=WinSystem.sml File52=MESSAGE.signature.sml polyml-5.7.1/mlsource/extra/Win/FlagPrint.sml0000644000175000017500000000412513204034553020115 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor FlagPrint(structure BITS: BIT_FLAGS) = struct (* Auxiliary function to create a function to print out bit flags. The function must actually be installed by the caller because it has to be called with the type itself. *) fun createFlagPrinter (flagTable: (BITS.flags * string) list) = let fun accumulateFlags _ [] = [] | accumulateFlags f ((w, s)::t) = if BITS.allSet(w, f) then s :: accumulateFlags(BITS.clear(w, f)) t else accumulateFlags f t fun printFlags depth _ x = (* This is just the code to print a list. *) let open PolyML val stringFlags = accumulateFlags x flagTable fun plist [] _ = [] | plist _ 0 = [PrettyString "..."] | plist [h] _ = [PrettyString h] | plist (h::t) depth = PrettyString(h ^ ",") :: PrettyBreak (1, 0) :: plist t (depth - 1) in PrettyBlock (3, false, [], PrettyString "[" :: ((if depth <= 0 then [PrettyString "..."] else plist stringFlags depth) @ [PrettyString "]"] ) ) end in printFlags end; end; polyml-5.7.1/mlsource/extra/Win/Combobox.sml0000644000175000017500000001524413204034553020003 0ustar daviddavid(* Copyright (c) 2001 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Comboboxes. *) structure Combobox: sig structure Style: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW: flags and WS_CHILDWINDOW: flags and CBS_SIMPLE: flags and CBS_DROPDOWN: flags and CBS_DROPDOWNLIST: flags and CBS_OWNERDRAWFIXED: flags and CBS_OWNERDRAWVARIABLE: flags and CBS_AUTOHSCROLL: flags and CBS_OEMCONVERT: flags and CBS_SORT: flags and CBS_HASSTRINGS: flags and CBS_NOINTEGRALHEIGHT: flags and CBS_DISABLENOSCROLL: flags and CBS_UPPERCASE: flags and CBS_LOWERCASE: flags end structure Notifications: sig val CBN_SELCHANGE: int val CBN_DBLCLK: int val CBN_SETFOCUS: int val CBN_KILLFOCUS: int val CBN_EDITCHANGE: int val CBN_EDITUPDATE: int val CBN_DROPDOWN: int val CBN_CLOSEUP: int val CBN_SELENDOK: int val CBN_SELENDCANCEL: int end datatype CBDirAttr = DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_ARCHIVE | DDL_POSTMSGS | DDL_DRIVES | DDL_EXCLUSIVE end = struct open ComboBase structure Style = struct open Window.Style (* Include all the windows styles. *) val CBS_SIMPLE = fromWord 0wx0001 val CBS_DROPDOWN = fromWord 0wx0002 val CBS_DROPDOWNLIST = fromWord 0wx0003 val CBS_OWNERDRAWFIXED = fromWord 0wx0010 val CBS_OWNERDRAWVARIABLE = fromWord 0wx0020 val CBS_AUTOHSCROLL = fromWord 0wx0040 val CBS_OEMCONVERT = fromWord 0wx0080 val CBS_SORT = fromWord 0wx0100 val CBS_HASSTRINGS = fromWord 0wx0200 val CBS_NOINTEGRALHEIGHT = fromWord 0wx0400 val CBS_DISABLENOSCROLL = fromWord 0wx0800 val CBS_UPPERCASE = fromWord 0wx2000 val CBS_LOWERCASE = fromWord 0wx4000 val all = flags[Window.Style.all, CBS_SIMPLE, CBS_DROPDOWN, CBS_DROPDOWNLIST, CBS_OWNERDRAWFIXED, CBS_OWNERDRAWVARIABLE, CBS_AUTOHSCROLL, CBS_OEMCONVERT, CBS_SORT, CBS_HASSTRINGS, CBS_NOINTEGRALHEIGHT, CBS_DISABLENOSCROLL, CBS_UPPERCASE, CBS_LOWERCASE] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure Notifications = struct val CBN_SELCHANGE = 1 val CBN_DBLCLK = 2 val CBN_SETFOCUS = 3 val CBN_KILLFOCUS = 4 val CBN_EDITCHANGE = 5 val CBN_EDITUPDATE = 6 val CBN_DROPDOWN = 7 val CBN_CLOSEUP = 8 val CBN_SELENDOK = 9 val CBN_SELENDCANCEL = 10 end (* DlgDirListComboBox DlgDirSelectEx DlgDirSelectComboBoxEx *) end; (* let open Combobox.Style val flagTable = [(CBS_DROPDOWNLIST, "CBS_DROPDOWNLIST"), (* Must come before the next two. *) (CBS_SIMPLE, "CBS_SIMPLE"), (CBS_DROPDOWN, "CBS_DROPDOWN"), (CBS_OWNERDRAWFIXED, "CBS_OWNERDRAWFIXED"), (CBS_OWNERDRAWVARIABLE, "CBS_OWNERDRAWVARIABLE"), (CBS_AUTOHSCROLL, "CBS_AUTOHSCROLL"), (CBS_OEMCONVERT, "CBS_OEMCONVERT"), (CBS_SORT, "CBS_SORT"), (CBS_HASSTRINGS, "CBS_HASSTRINGS"), (CBS_NOINTEGRALHEIGHT, "CBS_NOINTEGRALHEIGHT"), (CBS_DISABLENOSCROLL, "CBS_DISABLENOSCROLL"), (CBS_UPPERCASE, "CBS_UPPERCASE"), (CBS_LOWERCASE, "CBS_LOWERCASE"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *) polyml-5.7.1/mlsource/extra/Win/Pen.sml0000644000175000017500000000540013204034553016746 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Pen : sig type HPEN datatype PenStyle = PS_ALTERNATE | PS_COSMETIC | PS_DASH | PS_DASHDOT | PS_DASHDOTDOT | PS_DOT | PS_ENDCAP_FLAT | PS_ENDCAP_ROUND | PS_ENDCAP_SQUARE | PS_GEOMETRIC | PS_INSIDEFRAME | PS_JOIN_BEVEL | PS_JOIN_MITER | PS_JOIN_ROUND | PS_NULL | PS_SOLID | PS_USERSTYLE type COLORREF = Color.COLORREF type LOGBRUSH = Brush.LOGBRUSH type LOGPEN = PenStyle * int option * COLORREF val CreatePen : PenStyle list * int * COLORREF -> HPEN val CreatePenIndirect : LOGPEN -> HPEN val ExtCreatePen : PenStyle list * int * LOGBRUSH * (int * int) list -> HPEN end = struct local open Foreign Base in open GdiBase type HPEN = HPEN val CreatePen = winCall3 (gdi "CreatePen") (cPENSTYLE,cInt,cCOLORREF) (cHPEN) val CreatePenIndirect = winCall1 (gdi "CreatePenIndirect") (cConstStar cLOGPEN) (cHPEN) local val extCreatePen = winCall5 (gdi "ExtCreatePen") (cPENSTYLE,cDWORD,cConstStar cLOGBRUSH,cDWORD,cPointer) (cHPEN) val PAIR = absConversion {abs = fn _ => raise Fail "PAIR", rep = MAKELONG} cDWORDw val list2v = list2Vector PAIR in fun ExtCreatePen (ps: PenStyle list, width, log: LOGBRUSH, dashSp: (int*int) list) = let (* custom is supposed to be NULL if ps <> PS_USERSTYLE. Make sure it is at least NULL if the list is empty. *) val (custom, len) = case dashSp of [] => (Memory.null, 0) | _ => list2v (map (fn (i, j) => (Word.fromInt i, Word.fromInt j)) dashSp) in (extCreatePen(ps, width, log, len, custom) handle ex => (Memory.free custom; raise ex)) before Memory.free custom end end end end; polyml-5.7.1/mlsource/extra/Win/Message.sml0000644000175000017500000051064113204034553017620 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Message: MESSAGE = struct local open Foreign open Memory open Base open Globals open WinBase fun user name = getSymbol(loadLibrary "user32.dll") name val toAddr = Memory.sysWord2VoidStar and fromAddr = Memory.voidStar2Sysword val RegisterMessage = winCall1 (user "RegisterWindowMessageA") cString cUint (* Used in WM_WINDOWPOSXXX and also WM_NCCALCSIZE *) val WINDOWPOS = cStruct7(cHWND, cHWND, cInt, cInt, cInt, cInt, cWINDOWPOSITIONSTYLE) local (* WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED. The C structure is the same but WM_WINDOWPOSCHANGING has refs in the ML to allow the call-back to change the position. *) val {load=fromCwindowpos, store=toCwindowpos, ctype={size=sizeCwp, ...}, ...} = breakConversion WINDOWPOS type wmWINDOWPOSCHANGED = { hwnd: HWND, front: HWND, x: int, y: int, width: int, height: int, flags: WindowPositionStyle list } and wmWINDOWPOSCHANGING = { hwnd: HWND, front: HWND ref, x: int ref, y: int ref, width: int ref, height: int ref, flags: WindowPositionStyle list ref } in fun cToMLWindowPosChanging{wp=_, lp}: wmWINDOWPOSCHANGING = let val (wh,front,x,y,width,height,flags) = fromCwindowpos(toAddr lp) in {hwnd = wh, front = ref front, x = ref x, y = ref y, width = ref width, height = ref height, flags = ref flags} end and cToMLWindowPosChanged{wp=_, lp}: wmWINDOWPOSCHANGED = let val (wh,front,x,y,width,height,flags) = fromCwindowpos(toAddr lp) in {hwnd = wh, front = front, x = x, y = y, width = width, height = height, flags = flags} end fun mlToCWindowPosChanging(msgNo, {hwnd, front=ref front, x=ref x, y=ref y, width=ref width, height=ref height, flags=ref flags}: wmWINDOWPOSCHANGING) = let open Memory val mem = malloc sizeCwp val freeCwp = toCwindowpos(mem, (hwnd, front, x, y, width, height, flags)) in (msgNo, 0w0, fromAddr mem, fn() => (freeCwp(); free mem)) end and mlToCWindowPosChanged(msgNo, {hwnd, front, x, y, width, height, flags}: wmWINDOWPOSCHANGED) = let open Memory val mem = malloc sizeCwp val freeCwp = toCwindowpos(mem, (hwnd, front, x, y, width, height, flags)) in (msgNo, 0w0, fromAddr mem, fn() => (freeCwp(); free mem)) end fun updateCfromMLwmWindowPosChanging( {wp=_, lp}, { front, x, y, width, height, flags, ...}:wmWINDOWPOSCHANGING) = let val (_,newfront,newx,newy,newwidth,newheight,newflags) = fromCwindowpos(toAddr lp) in front := newfront; x := newx; y := newy; width := newwidth; height := newheight; flags := newflags end and updateWindowPosChangingParms({wp=_, lp}, { hwnd, front=ref front, x=ref x, y=ref y, width=ref width, height=ref height, flags=ref flags}) = ignore(toCwindowpos(toAddr lp, (hwnd, front, x, y, width, height, flags))) end datatype ControlType = ODT_MENU | ODT_LISTBOX | ODT_COMBOBOX | ODT_BUTTON | ODT_STATIC local val tab = [ (ODT_MENU, 1), (ODT_LISTBOX, 2), (ODT_COMBOBOX, 3), (ODT_BUTTON, 4), (ODT_STATIC, 5) ] in val cCONTROLTYPE = tableConversion(tab, NONE) cUint end fun structAsAddr strConv = let val {load, store, ctype={size, ...}, ...} = breakConversion strConv fun make v = let open Memory val mem = malloc size val freeS = store(mem, v) in (fromAddr mem, fn () => (freeS(); free mem)) end in (load o toAddr, make) end val (_, makePointStructAddr) = structAsAddr cPoint local val MDICREATESTRUCT = cStruct9(cCLASS,cString,cHINSTANCE,cInt,cInt,cInt,cInt,cDWORD,cLPARAM) in val (toMdiCreate, fromMdiCreate) = structAsAddr MDICREATESTRUCT end local (* WM_COMPAREITEM *) val COMPAREITEMSTRUCT = cStruct8(cCONTROLTYPE,cUint,cHWND,cUint,cUINT_PTRw,cUint,cUINT_PTRw, cDWORD) val MEASUREITEMSTRUCT = cStruct6(cCONTROLTYPE,cUint,cUint,cUint,cUint,cULONG_PTR) val DELETEITEMSTRUCT = cStruct5(cCONTROLTYPE,cUint,cUint,cHWND,cULONG_PTR) val {store=toMeasureItem, ...} = breakConversion MEASUREITEMSTRUCT in val (toMLCompareItem, fromMLCompareItem) = structAsAddr COMPAREITEMSTRUCT and (toMLMeasureItem, fromMLMeasureItem) = structAsAddr MEASUREITEMSTRUCT and (toMLDeleteItem, fromMLDeleteItem) = structAsAddr DELETEITEMSTRUCT fun updateMeasureItemFromWpLp({itemWidth, itemHeight, ...}, {wp=_, lp}) = let val (_, _, _, iWidth, iHeight, _) = toMLMeasureItem lp in itemWidth := iWidth; itemHeight := iHeight end and updateMeasureItemParms({wp=_, lp}, {itemWidth=ref itemWidth, itemHeight=ref itemHeight, ...}) = let val (ctlType, ctlID, itemID, _, _, itemData) = toMLMeasureItem lp in ignore(toMeasureItem(toAddr lp, (ctlType, ctlID, itemID, itemWidth, itemHeight, itemData))) end end local (* WM_CREATE and WM_NCCREATE *) val CREATESTRUCT = cStruct12(cPointer,cHINSTANCE,cHMENU,cHWND,cInt,cInt,cInt,cInt,cUlongw,cString,cCLASS,cDWORD) val (toMLCreate, fromMLCreate) = structAsAddr CREATESTRUCT in fun decompileCreate{wp=_, lp} = let val (cp,inst,menu,parent, cy,cx,y,x, style, name,class, extendedstyle) = toMLCreate lp in { instance = inst, creation = cp, menu = menu, parent = parent, cy = cy, cx = cx, y = y, x = x, style = Style.fromWord(Word32.toLargeWord style), name = name, class = class, extendedstyle = extendedstyle } end and compileCreate(code, { instance, creation, menu, parent, cy, cx, y, x, style, name, class, extendedstyle}) = let val (addr, free) = fromMLCreate(creation, instance, menu, parent, cy, cx, y, x, Word32.fromLargeWord(Style.toWord style), name, class, extendedstyle) in (code, 0w0, addr, free) end end local val MINMAXINFO = cStruct5(cPoint,cPoint,cPoint,cPoint,cPoint) val {store=toCminmaxinfo, ...} = breakConversion MINMAXINFO val (toMLMinMax, fromMLMinMax) = structAsAddr MINMAXINFO in fun decompileMinMax{wp=_, lp} = let val (_, ptms, ptmp, ptts, ptmts) = toMLMinMax lp in { maxSize = ref ptms, maxPosition = ref ptmp, minTrackSize = ref ptts, maxTrackSize = ref ptmts} end and compileMinMax(code, { maxSize=ref maxSize, maxPosition=ref maxPosition, minTrackSize=ref minTrackSize, maxTrackSize=ref maxTrackSize}) = let val (addr, free) = fromMLMinMax({x=0,y=0}, maxSize, maxPosition, minTrackSize, maxTrackSize) in (code, 0w0, addr, free) end fun updateMinMaxFromWpLp({maxSize, maxPosition, minTrackSize, maxTrackSize}, {wp=_, lp}) = let val (_, ptms, ptmp, ptts, ptmts) = toMLMinMax lp in maxSize := ptms; maxPosition := ptmp; minTrackSize := ptts; maxTrackSize := ptmts end and updateMinMaxParms({wp=_, lp}, {maxSize=ref maxSize, maxPosition=ref maxPosition, minTrackSize=ref minTrackSize, maxTrackSize=ref maxTrackSize}) = let val (ptres, _, _, _, _) = toMLMinMax lp in ignore(toCminmaxinfo(toAddr lp, (ptres, maxSize, maxPosition, minTrackSize, maxTrackSize))) end end local val DRAWITEMSTRUCT = cStruct9(cCONTROLTYPE,cUint,cUint,cUint,cUint,cHWND,cHDC,cRect,cULONG_PTR) in val (toMLDrawItem, fromMLDrawItem) = structAsAddr DRAWITEMSTRUCT end local (* WM_NCCALCSIZE *) val NCCALCSIZE_PARAMS = cStruct4(cRect,cRect,cRect, cConstStar WINDOWPOS) val {load=loadStruct, store=storeStruct, ctype={size=sizeStr, ...}, ...} = breakConversion NCCALCSIZE_PARAMS val {load=loadRect, store=storeRect, ctype={size=sizeRect, ...}, ...} = breakConversion cRect in fun decompileNCCalcSize{wp=0w0, lp} = let val (newrect,oldrect,oldclientarea,winpos) = loadStruct (toAddr lp) val (wh,front,x,y,cx,cy,style) = winpos in { validarea = true, newrect = ref newrect, oldrect = oldrect, oldclientarea = oldclientarea, hwnd = wh, insertAfter = front, x = x, y = y, cx = cx, cy = cy, style = style } end | decompileNCCalcSize{wp=_, lp} = let val newrect = loadRect (toAddr lp) val zeroRect = {left=0, top=0, right=0, bottom=0} in { validarea = false, newrect = ref newrect, oldrect = zeroRect, oldclientarea = zeroRect, insertAfter = hwndNull, hwnd = hwndNull, x = 0, y = 0, cx = 0, cy = 0, style = [] } end and compileNCCalcSize{validarea=true, newrect=ref newrect, oldrect, oldclientarea, hwnd, insertAfter, x, y, cx, cy, style} = let open Memory val mem = malloc sizeStr val freeRect = storeStruct(mem, (newrect,oldrect,oldclientarea, (hwnd,insertAfter,x,y,cx,cy, style))) in (0x0083, 0w1, fromAddr mem, fn () => (freeRect(); free mem)) end | compileNCCalcSize{validarea=false, newrect=ref newrect, ...} = let open Memory val mem = malloc sizeRect val () = ignore(storeRect(mem, newrect)) in (0x0083, 0w0, fromAddr mem, fn () => free mem) end end local val HELPINFO = cStruct6(cUint, cInt, cInt, cPointer (* HANDLE *), cDWORD, cPoint) val {ctype={size=sizeHelpInfo, ...}, ...} = breakConversion HELPINFO val (toHelpInfo, fromHelpInfo) = structAsAddr HELPINFO in datatype HelpHandle = MenuHandle of HMENU | WindowHandle of HWND fun compileHelpInfo(code, {ctrlId, itemHandle, contextId, mousePos}) = let val (ctype, handl) = case itemHandle of MenuHandle m => (2, voidStarOfHandle m) | WindowHandle w => (1, voidStarOfHandle w) val (addr, free) = fromHelpInfo(Word.toInt sizeHelpInfo, ctype, ctrlId, handl, contextId, mousePos) in (code, 0w0, addr, free) end and decompileHelpInfo{wp=_, lp} = let val (_, ctype, ctrlId, itemHandle, contextId, mousePos) = toHelpInfo lp val hndl = if ctype = 2 then MenuHandle(handleOfVoidStar itemHandle) else WindowHandle(handleOfVoidStar itemHandle) in { ctrlId = ctrlId, itemHandle = hndl, contextId = contextId, mousePos = mousePos} end end local val {store=storeScrollInfo, ctype = {size=sizeStruct, ...}, ...} = breakConversion ScrollBase.cSCROLLINFOSTRUCT val (toScrollInfoStruct, fromScrollInfoStruct) = structAsAddr ScrollBase.cSCROLLINFOSTRUCT in fun toScrollInfo lp = let val (_, options, minPos, maxPos, pageSize, pos, trackPos) = toScrollInfoStruct lp val info = { minPos = minPos, maxPos = maxPos, pageSize = pageSize, pos = pos, trackPos = trackPos } in (info, options) end and fromScrollInfo({minPos, maxPos, pageSize, pos, trackPos}, options) = fromScrollInfoStruct(Word.toInt sizeStruct, options, minPos, maxPos, pageSize, pos, trackPos) and updateScrollInfo({wp=_, lp=lp}, {info=ref {minPos, maxPos, pageSize, pos, trackPos}, options}) = ignore(storeScrollInfo(toAddr lp, (Word.toInt sizeStruct, options, minPos, maxPos, pageSize, pos, trackPos))) end local val {store=storeWord, load=loadWord, ctype={size=sizeWord, ...}, ...} = breakConversion cWORD in (* We have to allocate a buffer big enough to receive the text and set the first word to the length of the buffer. *) fun compileGetLine {lineNo, size, ...} = let open Memory (* Allocate one extra byte so there's space for a null terminator. *) val vec = malloc (Word.max(Word.fromInt(size+1), sizeWord)) in ignore(storeWord(vec, size+1)); (0x00C5, SysWord.fromInt lineNo, fromAddr vec, fn () => free vec) end and decompileGetLine{wp, lp} = let (* The first word is supposed to contain the length *) val size = loadWord(toAddr lp) in { lineNo = SysWord.toInt wp, size = size(*-1 ? *), result = ref "" } end end val {load=loadInt, store=storeInt, ctype={size=sizeInt, ...}, ...} = breakConversion cInt local (* EM_SETTABSTOPS and LB_SETTABSTOPS *) open Memory infix 6 ++ in fun decompileTabStops{wp, lp} = let val v = toAddr lp fun getTab i = loadInt(v ++ Word.fromInt i * sizeInt) in IntVector.tabulate(SysWord.toInt wp, getTab) end and compileTabStops(code, tabs) = let val cTabs = IntVector.length tabs val vec = malloc(Word.fromInt cTabs * sizeInt) fun setVec(tab, addr) = (ignore(storeInt(addr, tab)); addr ++ sizeInt) val _ = IntVector.foldl setVec vec tabs in (code, SysWord.fromInt cTabs, fromAddr vec, fn () => free vec) end end local open Memory IntArray infix 6 ++ in fun compileGetSelItems(code, {items}) = (* Allocate a buffer to receive the items. Set each element of the buffer to ~1 so that the values are defined if not all of them are set. *) let open Memory IntArray val itemCount = length items infix 6 ++ val v = malloc(Word.fromInt itemCount * sizeInt) in appi(fn (i, s) => ignore(storeInt(v ++ Word.fromInt i * sizeInt, s))) items; (code, SysWord.fromInt itemCount, fromAddr v, fn () => free v) end fun updateGetSelItemsParms({wp=_, lp=lp}, {items}) = let val v = toAddr lp in appi(fn (i, s) => ignore(storeInt(v ++ Word.fromInt i * sizeInt, s))) items end and updateGetSelItemsFromWpLp({items}, {wp=_, lp, reply}) = let (* The return value is the actual number of items copied *) val nItems = SysWord.toIntX reply val b = toAddr lp open Memory infix 6 ++ fun newValue (i, old) = if i < nItems then loadInt(b ++ sizeInt * Word.fromInt i) else old in IntArray.modifyi newValue items end end (* Passed in the lpParam argument of a WM_NOTIFY message. TODO: Many of these have additional information. *) datatype Notification = NM_OUTOFMEMORY | NM_CLICK | NM_DBLCLK | NM_RETURN | NM_RCLICK | NM_RDBLCLK | NM_SETFOCUS | NM_KILLFOCUS | NM_CUSTOMDRAW | NM_HOVER | NM_NCHITTEST | NM_KEYDOWN | NM_RELEASEDCAPTURE | NM_SETCURSOR | NM_CHAR | NM_TOOLTIPSCREATED | NM_LDOWN | NM_RDOWN | NM_THEMECHANGED | LVN_ITEMCHANGING | LVN_ITEMCHANGED | LVN_INSERTITEM | LVN_DELETEITEM | LVN_DELETEALLITEMS | LVN_BEGINLABELEDIT | LVN_ENDLABELEDIT | LVN_COLUMNCLICK | LVN_BEGINDRAG | LVN_BEGINRDRAG | LVN_GETDISPINFO | LVN_SETDISPINFO | LVN_KEYDOWN | LVN_GETINFOTIP | HDN_ITEMCHANGING | HDN_ITEMCHANGED | HDN_ITEMCLICK | HDN_ITEMDBLCLICK | HDN_DIVIDERDBLCLICK | HDN_BEGINTRACK | HDN_ENDTRACK | HDN_TRACK | HDN_ENDDRAG | HDN_BEGINDRAG | HDN_GETDISPINFO | TVN_SELCHANGING | TVN_SELCHANGED | TVN_GETDISPINFO | TVN_SETDISPINFO | TVN_ITEMEXPANDING | TVN_ITEMEXPANDED | TVN_BEGINDRAG | TVN_BEGINRDRAG | TVN_DELETEITEM | TVN_BEGINLABELEDIT | TVN_ENDLABELEDIT | TVN_KEYDOWN | TVN_GETINFOTIP | TVN_SINGLEEXPAND | TTN_GETDISPINFO of string ref | TTN_SHOW | TTN_POP | TCN_KEYDOWN | TCN_SELCHANGE | TCN_SELCHANGING | TBN_GETBUTTONINFO | TBN_BEGINDRAG | TBN_ENDDRAG | TBN_BEGINADJUST | TBN_ENDADJUST | TBN_RESET | TBN_QUERYINSERT | TBN_QUERYDELETE | TBN_TOOLBARCHANGE | TBN_CUSTHELP | TBN_DROPDOWN | TBN_HOTITEMCHANGE | TBN_DRAGOUT | TBN_DELETINGBUTTON | TBN_GETDISPINFO | TBN_GETINFOTIP | UDN_DELTAPOS | RBN_GETOBJECT | RBN_LAYOUTCHANGED | RBN_AUTOSIZE | RBN_BEGINDRAG | RBN_ENDDRAG | RBN_DELETINGBAND | RBN_DELETEDBAND | RBN_CHILDSIZE | CBEN_GETDISPINFO | CBEN_DRAGBEGIN | IPN_FIELDCHANGED | SBN_SIMPLEMODECHANGE | PGN_SCROLL | PGN_CALCSIZE | NM_OTHER of int (* Catch-all for other cases. *) local (* Notification structures *) val NMHDR = cStruct3(cHWND, cUINT_PTR, cUint) val (toMLNmhdr, fromMLNmhdr) = structAsAddr NMHDR val CHARARRAY80 = cCHARARRAY 80 val NMTTDISPINFO = cStruct6(NMHDR, cPointer (* String or resource id *), CHARARRAY80, cHINSTANCE, cUint, cLPARAM); val (toMLNMTTDISPINFO, fromMLNMTTDISPINFO) = structAsAddr NMTTDISPINFO in fun compileNotification (from, idFrom, NM_OUTOFMEMORY) = fromMLNmhdr(from, idFrom, ~1) | compileNotification (from, idFrom, NM_CLICK) = fromMLNmhdr(from, idFrom, ~2) | compileNotification (from, idFrom, NM_DBLCLK) = fromMLNmhdr(from, idFrom, ~3) | compileNotification (from, idFrom, NM_RETURN) = fromMLNmhdr(from, idFrom, ~4) | compileNotification (from, idFrom, NM_RCLICK) = fromMLNmhdr(from, idFrom, ~5) | compileNotification (from, idFrom, NM_RDBLCLK) = fromMLNmhdr(from, idFrom, ~6) | compileNotification (from, idFrom, NM_SETFOCUS) = fromMLNmhdr(from, idFrom, ~7) | compileNotification (from, idFrom, NM_KILLFOCUS) = fromMLNmhdr(from, idFrom, ~8) | compileNotification (from, idFrom, NM_CUSTOMDRAW) = fromMLNmhdr(from, idFrom, ~12) | compileNotification (from, idFrom, NM_HOVER) = fromMLNmhdr(from, idFrom, ~13) | compileNotification (from, idFrom, NM_NCHITTEST) = fromMLNmhdr(from, idFrom, ~14) | compileNotification (from, idFrom, NM_KEYDOWN) = fromMLNmhdr(from, idFrom, ~15) | compileNotification (from, idFrom, NM_RELEASEDCAPTURE) = fromMLNmhdr(from, idFrom, ~16) | compileNotification (from, idFrom, NM_SETCURSOR) = fromMLNmhdr(from, idFrom, ~17) | compileNotification (from, idFrom, NM_CHAR) = fromMLNmhdr(from, idFrom, ~18) | compileNotification (from, idFrom, NM_TOOLTIPSCREATED) = fromMLNmhdr(from, idFrom, ~19) | compileNotification (from, idFrom, NM_LDOWN) = fromMLNmhdr(from, idFrom, ~20) | compileNotification (from, idFrom, NM_RDOWN) = fromMLNmhdr(from, idFrom, ~21) | compileNotification (from, idFrom, NM_THEMECHANGED) = fromMLNmhdr(from, idFrom, ~22) | compileNotification (from, idFrom, LVN_ITEMCHANGING) = fromMLNmhdr(from, idFrom, ~100) | compileNotification (from, idFrom, LVN_ITEMCHANGED) = fromMLNmhdr(from, idFrom, ~101) | compileNotification (from, idFrom, LVN_INSERTITEM) = fromMLNmhdr(from, idFrom, ~102) | compileNotification (from, idFrom, LVN_DELETEITEM) = fromMLNmhdr(from, idFrom, ~103) | compileNotification (from, idFrom, LVN_DELETEALLITEMS) = fromMLNmhdr(from, idFrom, ~104) | compileNotification (from, idFrom, LVN_BEGINLABELEDIT) = fromMLNmhdr(from, idFrom, ~105) | compileNotification (from, idFrom, LVN_ENDLABELEDIT) = fromMLNmhdr(from, idFrom, ~106) | compileNotification (from, idFrom, LVN_COLUMNCLICK) = fromMLNmhdr(from, idFrom, ~108) | compileNotification (from, idFrom, LVN_BEGINDRAG) = fromMLNmhdr(from, idFrom, ~109) | compileNotification (from, idFrom, LVN_BEGINRDRAG) = fromMLNmhdr(from, idFrom, ~111) | compileNotification (from, idFrom, LVN_GETDISPINFO) = fromMLNmhdr(from, idFrom, ~150) | compileNotification (from, idFrom, LVN_SETDISPINFO) = fromMLNmhdr(from, idFrom, ~151) | compileNotification (from, idFrom, LVN_KEYDOWN) = fromMLNmhdr(from, idFrom, ~155) | compileNotification (from, idFrom, LVN_GETINFOTIP) = fromMLNmhdr(from, idFrom, ~157) | compileNotification (from, idFrom, HDN_ITEMCHANGING) = fromMLNmhdr(from, idFrom, ~300) | compileNotification (from, idFrom, HDN_ITEMCHANGED) = fromMLNmhdr(from, idFrom, ~301) | compileNotification (from, idFrom, HDN_ITEMCLICK) = fromMLNmhdr(from, idFrom, ~302) | compileNotification (from, idFrom, HDN_ITEMDBLCLICK) = fromMLNmhdr(from, idFrom, ~303) | compileNotification (from, idFrom, HDN_DIVIDERDBLCLICK) = fromMLNmhdr(from, idFrom, ~305) | compileNotification (from, idFrom, HDN_BEGINTRACK) = fromMLNmhdr(from, idFrom, ~306) | compileNotification (from, idFrom, HDN_ENDTRACK) = fromMLNmhdr(from, idFrom, ~307) | compileNotification (from, idFrom, HDN_TRACK) = fromMLNmhdr(from, idFrom, ~308) | compileNotification (from, idFrom, HDN_ENDDRAG) = fromMLNmhdr(from, idFrom, ~311) | compileNotification (from, idFrom, HDN_BEGINDRAG) = fromMLNmhdr(from, idFrom, ~310) | compileNotification (from, idFrom, HDN_GETDISPINFO) = fromMLNmhdr(from, idFrom, ~309) | compileNotification (from, idFrom, TVN_SELCHANGING) = fromMLNmhdr(from, idFrom, ~401) | compileNotification (from, idFrom, TVN_SELCHANGED) = fromMLNmhdr(from, idFrom, ~402) | compileNotification (from, idFrom, TVN_GETDISPINFO) = fromMLNmhdr(from, idFrom, ~403) | compileNotification (from, idFrom, TVN_SETDISPINFO) = fromMLNmhdr(from, idFrom, ~404) | compileNotification (from, idFrom, TVN_ITEMEXPANDING) = fromMLNmhdr(from, idFrom, ~405) | compileNotification (from, idFrom, TVN_ITEMEXPANDED) = fromMLNmhdr(from, idFrom, ~406) | compileNotification (from, idFrom, TVN_BEGINDRAG) = fromMLNmhdr(from, idFrom, ~407) | compileNotification (from, idFrom, TVN_BEGINRDRAG) = fromMLNmhdr(from, idFrom, ~408) | compileNotification (from, idFrom, TVN_DELETEITEM) = fromMLNmhdr(from, idFrom, ~409) | compileNotification (from, idFrom, TVN_BEGINLABELEDIT) = fromMLNmhdr(from, idFrom, ~410) | compileNotification (from, idFrom, TVN_ENDLABELEDIT) = fromMLNmhdr(from, idFrom, ~411) | compileNotification (from, idFrom, TVN_KEYDOWN) = fromMLNmhdr(from, idFrom, ~412) | compileNotification (from, idFrom, TVN_GETINFOTIP) = fromMLNmhdr(from, idFrom, ~413) | compileNotification (from, idFrom, TVN_SINGLEEXPAND) = fromMLNmhdr(from, idFrom, ~415) | compileNotification (from, idFrom, TTN_GETDISPINFO(ref s)) = fromMLNMTTDISPINFO((from, idFrom, ~520), Memory.null, s, Globals.hNull, 0, 0) | compileNotification (from, idFrom, TTN_SHOW) = fromMLNmhdr(from, idFrom, ~521) | compileNotification (from, idFrom, TTN_POP) = fromMLNmhdr(from, idFrom, ~522) | compileNotification (from, idFrom, TCN_KEYDOWN) = fromMLNmhdr(from, idFrom, ~550) | compileNotification (from, idFrom, TCN_SELCHANGE) = fromMLNmhdr(from, idFrom, ~551) | compileNotification (from, idFrom, TCN_SELCHANGING) = fromMLNmhdr(from, idFrom, ~552) | compileNotification (from, idFrom, TBN_GETBUTTONINFO) = fromMLNmhdr(from, idFrom, ~700) | compileNotification (from, idFrom, TBN_BEGINDRAG) = fromMLNmhdr(from, idFrom, ~701) | compileNotification (from, idFrom, TBN_ENDDRAG) = fromMLNmhdr(from, idFrom, ~702) | compileNotification (from, idFrom, TBN_BEGINADJUST) = fromMLNmhdr(from, idFrom, ~703) | compileNotification (from, idFrom, TBN_ENDADJUST) = fromMLNmhdr(from, idFrom, ~704) | compileNotification (from, idFrom, TBN_RESET) = fromMLNmhdr(from, idFrom, ~705) | compileNotification (from, idFrom, TBN_QUERYINSERT) = fromMLNmhdr(from, idFrom, ~706) | compileNotification (from, idFrom, TBN_QUERYDELETE) = fromMLNmhdr(from, idFrom, ~707) | compileNotification (from, idFrom, TBN_TOOLBARCHANGE) = fromMLNmhdr(from, idFrom, ~708) | compileNotification (from, idFrom, TBN_CUSTHELP) = fromMLNmhdr(from, idFrom, ~709) | compileNotification (from, idFrom, TBN_DROPDOWN) = fromMLNmhdr(from, idFrom, ~710) | compileNotification (from, idFrom, TBN_HOTITEMCHANGE) = fromMLNmhdr(from, idFrom, ~713) | compileNotification (from, idFrom, TBN_DRAGOUT) = fromMLNmhdr(from, idFrom, ~714) | compileNotification (from, idFrom, TBN_DELETINGBUTTON) = fromMLNmhdr(from, idFrom, ~715) | compileNotification (from, idFrom, TBN_GETDISPINFO) = fromMLNmhdr(from, idFrom, ~716) | compileNotification (from, idFrom, TBN_GETINFOTIP) = fromMLNmhdr(from, idFrom, ~718) | compileNotification (from, idFrom, UDN_DELTAPOS) = fromMLNmhdr(from, idFrom, ~722) | compileNotification (from, idFrom, RBN_GETOBJECT) = fromMLNmhdr(from, idFrom, ~832) | compileNotification (from, idFrom, RBN_LAYOUTCHANGED) = fromMLNmhdr(from, idFrom, ~833) | compileNotification (from, idFrom, RBN_AUTOSIZE) = fromMLNmhdr(from, idFrom, ~834) | compileNotification (from, idFrom, RBN_BEGINDRAG) = fromMLNmhdr(from, idFrom, ~835) | compileNotification (from, idFrom, RBN_ENDDRAG) = fromMLNmhdr(from, idFrom, ~836) | compileNotification (from, idFrom, RBN_DELETINGBAND) = fromMLNmhdr(from, idFrom, ~837) | compileNotification (from, idFrom, RBN_DELETEDBAND) = fromMLNmhdr(from, idFrom, ~838) | compileNotification (from, idFrom, RBN_CHILDSIZE) = fromMLNmhdr(from, idFrom, ~839) | compileNotification (from, idFrom, CBEN_GETDISPINFO) = fromMLNmhdr(from, idFrom, ~800) | compileNotification (from, idFrom, CBEN_DRAGBEGIN) = fromMLNmhdr(from, idFrom, ~808) | compileNotification (from, idFrom, IPN_FIELDCHANGED) = fromMLNmhdr(from, idFrom, ~860) | compileNotification (from, idFrom, SBN_SIMPLEMODECHANGE) = fromMLNmhdr(from, idFrom, ~880) | compileNotification (from, idFrom, PGN_SCROLL) = fromMLNmhdr(from, idFrom, ~901) | compileNotification (from, idFrom, PGN_CALCSIZE) = fromMLNmhdr(from, idFrom, ~902) | compileNotification (from, idFrom, NM_OTHER code) = fromMLNmhdr(from, idFrom, code) local fun decompileNotifyArg (_, ~1) = NM_OUTOFMEMORY | decompileNotifyArg (_, ~2) = NM_CLICK | decompileNotifyArg (_, ~3) = NM_DBLCLK | decompileNotifyArg (_, ~4) = NM_RETURN | decompileNotifyArg (_, ~5) = NM_RCLICK | decompileNotifyArg (_, ~6) = NM_RDBLCLK | decompileNotifyArg (_, ~7) = NM_SETFOCUS | decompileNotifyArg (_, ~8) = NM_KILLFOCUS | decompileNotifyArg (_, ~12) = NM_CUSTOMDRAW | decompileNotifyArg (_, ~13) = NM_HOVER | decompileNotifyArg (_, ~14) = NM_NCHITTEST | decompileNotifyArg (_, ~15) = NM_KEYDOWN | decompileNotifyArg (_, ~16) = NM_RELEASEDCAPTURE | decompileNotifyArg (_, ~17) = NM_SETCURSOR | decompileNotifyArg (_, ~18) = NM_CHAR | decompileNotifyArg (_, ~19) = NM_TOOLTIPSCREATED | decompileNotifyArg (_, ~20) = NM_LDOWN | decompileNotifyArg (_, ~21) = NM_RDOWN | decompileNotifyArg (_, ~22) = NM_THEMECHANGED | decompileNotifyArg (_, ~100) = LVN_ITEMCHANGING | decompileNotifyArg (_, ~101) = LVN_ITEMCHANGED | decompileNotifyArg (_, ~102) = LVN_INSERTITEM | decompileNotifyArg (_, ~103) = LVN_DELETEITEM | decompileNotifyArg (_, ~104) = LVN_DELETEALLITEMS | decompileNotifyArg (_, ~105) = LVN_BEGINLABELEDIT | decompileNotifyArg (_, ~106) = LVN_ENDLABELEDIT | decompileNotifyArg (_, ~108) = LVN_COLUMNCLICK | decompileNotifyArg (_, ~109) = LVN_BEGINDRAG | decompileNotifyArg (_, ~111) = LVN_BEGINRDRAG | decompileNotifyArg (_, ~150) = LVN_GETDISPINFO | decompileNotifyArg (_, ~151) = LVN_SETDISPINFO | decompileNotifyArg (_, ~155) = LVN_KEYDOWN | decompileNotifyArg (_, ~157) = LVN_GETINFOTIP | decompileNotifyArg (_, ~300) = HDN_ITEMCHANGING | decompileNotifyArg (_, ~301) = HDN_ITEMCHANGED | decompileNotifyArg (_, ~302) = HDN_ITEMCLICK | decompileNotifyArg (_, ~303) = HDN_ITEMDBLCLICK | decompileNotifyArg (_, ~305) = HDN_DIVIDERDBLCLICK | decompileNotifyArg (_, ~306) = HDN_BEGINTRACK | decompileNotifyArg (_, ~307) = HDN_ENDTRACK | decompileNotifyArg (_, ~308) = HDN_TRACK | decompileNotifyArg (_, ~311) = HDN_ENDDRAG | decompileNotifyArg (_, ~310) = HDN_BEGINDRAG | decompileNotifyArg (_, ~309) = HDN_GETDISPINFO | decompileNotifyArg (_, ~401) = TVN_SELCHANGING | decompileNotifyArg (_, ~402) = TVN_SELCHANGED | decompileNotifyArg (_, ~403) = TVN_GETDISPINFO | decompileNotifyArg (_, ~404) = TVN_SETDISPINFO | decompileNotifyArg (_, ~405) = TVN_ITEMEXPANDING | decompileNotifyArg (_, ~406) = TVN_ITEMEXPANDED | decompileNotifyArg (_, ~407) = TVN_BEGINDRAG | decompileNotifyArg (_, ~408) = TVN_BEGINRDRAG | decompileNotifyArg (_, ~409) = TVN_DELETEITEM | decompileNotifyArg (_, ~410) = TVN_BEGINLABELEDIT | decompileNotifyArg (_, ~411) = TVN_ENDLABELEDIT | decompileNotifyArg (_, ~412) = TVN_KEYDOWN | decompileNotifyArg (_, ~413) = TVN_GETINFOTIP | decompileNotifyArg (_, ~415) = TVN_SINGLEEXPAND | decompileNotifyArg (lp, ~520) = let val nmt = toMLNMTTDISPINFO lp (* Just look at the byte data at the moment. *) in TTN_GETDISPINFO(ref(#3 nmt)) end | decompileNotifyArg (_, ~521) = TTN_SHOW | decompileNotifyArg (_, ~522) = TTN_POP | decompileNotifyArg (_, ~550) = TCN_KEYDOWN | decompileNotifyArg (_, ~551) = TCN_SELCHANGE | decompileNotifyArg (_, ~552) = TCN_SELCHANGING | decompileNotifyArg (_, ~700) = TBN_GETBUTTONINFO | decompileNotifyArg (_, ~701) = TBN_BEGINDRAG | decompileNotifyArg (_, ~702) = TBN_ENDDRAG | decompileNotifyArg (_, ~703) = TBN_BEGINADJUST | decompileNotifyArg (_, ~704) = TBN_ENDADJUST | decompileNotifyArg (_, ~705) = TBN_RESET | decompileNotifyArg (_, ~706) = TBN_QUERYINSERT | decompileNotifyArg (_, ~707) = TBN_QUERYDELETE | decompileNotifyArg (_, ~708) = TBN_TOOLBARCHANGE | decompileNotifyArg (_, ~709) = TBN_CUSTHELP | decompileNotifyArg (_, ~710) = TBN_DROPDOWN | decompileNotifyArg (_, ~713) = TBN_HOTITEMCHANGE | decompileNotifyArg (_, ~714) = TBN_DRAGOUT | decompileNotifyArg (_, ~715) = TBN_DELETINGBUTTON | decompileNotifyArg (_, ~716) = TBN_GETDISPINFO | decompileNotifyArg (_, ~718) = TBN_GETINFOTIP (*<<<*) | decompileNotifyArg (_, ~722) = UDN_DELTAPOS | decompileNotifyArg (_, ~832) = RBN_GETOBJECT | decompileNotifyArg (_, ~833) = RBN_LAYOUTCHANGED | decompileNotifyArg (_, ~834) = RBN_AUTOSIZE | decompileNotifyArg (_, ~835) = RBN_BEGINDRAG | decompileNotifyArg (_, ~836) = RBN_ENDDRAG | decompileNotifyArg (_, ~837) = RBN_DELETINGBAND | decompileNotifyArg (_, ~838) = RBN_DELETEDBAND | decompileNotifyArg (_, ~839) = RBN_CHILDSIZE | decompileNotifyArg (_, ~800) = CBEN_GETDISPINFO | decompileNotifyArg (_, ~808) = CBEN_DRAGBEGIN | decompileNotifyArg (_, ~860) = IPN_FIELDCHANGED | decompileNotifyArg (_, ~880) = SBN_SIMPLEMODECHANGE | decompileNotifyArg (_, ~901) = PGN_SCROLL | decompileNotifyArg (_, ~902) = PGN_CALCSIZE | decompileNotifyArg (_, code) = NM_OTHER code in fun decompileNotify {wp, lp} = let val (hwndFrom, idFrom, code) = toMLNmhdr lp val notification = decompileNotifyArg (lp, code) in { idCtrl = SysWord.toInt wp, from = hwndFrom, idFrom = idFrom, notification = notification} end end end local val cFINDREPLACE = cStruct11(cDWORD, cHWND, cHINSTANCE, FindReplaceFlags.cFindReplaceFlags, cString, cString, cWORD, cWORD, cPointer, cPointer, cPointer) val {load=loadFindReplace, store=storeFindReplace, ctype={size=sizeFindReplace, ...}, ...} = breakConversion cFINDREPLACE type findMsg = { flags: FindReplaceFlags.flags, findWhat: string, replaceWith: string } in fun compileFindMsg({flags, findWhat, replaceWith}: findMsg) = let open Memory val vec = malloc sizeFindReplace (* Is this right? It's supposed to create a buffer to store the result. *) val freeFR = storeFindReplace(vec, (Word.toInt sizeFindReplace, hNull, hNull, flags, findWhat, replaceWith, 0, 0, null, null, null)) in (RegisterMessage "commdlg_FindReplace", 0w0, fromAddr vec, fn() => (freeFR(); free vec)) end fun decompileFindMsg{wp=_, lp}: findMsg = let val (_, _, _, flags, findwhat, replace, _, _, _, _, _) = loadFindReplace(toAddr lp) (* The argument is really a FINDREPLACE struct. *) in {flags=flags, findWhat=findwhat, replaceWith=replace} end end val toHMENU: SysWord.word -> HMENU = handleOfVoidStar o Memory.sysWord2VoidStar and fromHMENU: HMENU -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHWND: SysWord.word -> HWND = handleOfVoidStar o Memory.sysWord2VoidStar and fromHWND: HWND -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHDC: SysWord.word -> HDC = handleOfVoidStar o Memory.sysWord2VoidStar and fromHDC: HDC -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHFONT: SysWord.word -> HFONT = handleOfVoidStar o Memory.sysWord2VoidStar and fromHFONT: HFONT -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHRGN: SysWord.word -> HRGN = handleOfVoidStar o Memory.sysWord2VoidStar and fromHRGN: HRGN -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHDROP: SysWord.word -> HDROP = handleOfVoidStar o Memory.sysWord2VoidStar and fromHDROP: HDROP -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHICON: SysWord.word -> HICON = handleOfVoidStar o Memory.sysWord2VoidStar and fromHICON: HICON -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle val toHGDIOBJ: SysWord.word -> HGDIOBJ = handleOfVoidStar o Memory.sysWord2VoidStar and fromHGDIOBJ: HGDIOBJ -> SysWord.word = Memory.voidStar2Sysword o voidStarOfHandle (* Maybe we should have two different types for horizontal and vertical. *) datatype ScrollDirection = SB_BOTTOM | SB_ENDSCROLL | SB_LINEDOWN | SB_LINEUP | SB_PAGEDOWN | SB_PAGEUP | SB_THUMBPOSITION | SB_THUMBTRACK | SB_TOP | SB_LEFT | SB_RIGHT | SB_LINELEFT | SB_LINERIGHT | SB_PAGELEFT | SB_PAGERIGHT local val tab = [ (SB_LINEUP, 0w0: word), (SB_LINELEFT, 0w0), (SB_LINEDOWN, 0w1), (SB_LINERIGHT, 0w1), (SB_PAGEUP, 0w2), (SB_PAGELEFT, 0w2), (SB_PAGEDOWN, 0w3), (SB_PAGERIGHT, 0w3), (SB_THUMBPOSITION, 0w4), (SB_THUMBTRACK, 0w5), (SB_TOP, 0w6), (SB_LEFT, 0w6), (SB_BOTTOM, 0w7), (SB_RIGHT, 0w7), (SB_ENDSCROLL, 0w8) ] in val (toCsd, fromCsd) = tableLookup(tab, NONE) end (* This is a bit of a mess. Various operations take or return handles to these types of image and also take this value as a parameter. *) datatype ImageType = IMAGE_BITMAP | IMAGE_CURSOR | IMAGE_ENHMETAFILE | IMAGE_ICON local val tab = [ (IMAGE_BITMAP, 0), (IMAGE_ICON, 1), (IMAGE_CURSOR, 2), (IMAGE_ENHMETAFILE, 3) ] in val (toCit, fromCit) = tableLookup(tab, NONE) end val (toCcbf, fromCcbf) = clipLookup datatype MouseKeyFlags = MK_LBUTTON | MK_RBUTTON | MK_SHIFT | MK_CONTROL | MK_MBUTTON local val tab = [ (MK_LBUTTON, 0wx0001), (MK_RBUTTON, 0wx0002), (MK_SHIFT, 0wx0004), (MK_CONTROL, 0wx0008), (MK_MBUTTON, 0wx0010) ] in val (toCmkf, fromCmkf) = tableSetLookup(tab, NONE) end datatype MDITileFlags = MDITILE_VERTICAL | MDITILE_HORIZONTAL | MDITILE_SKIPDISABLED local val tab = [ (MDITILE_VERTICAL, 0wx0000), (MDITILE_HORIZONTAL, 0wx0001), (MDITILE_SKIPDISABLED, 0wx0002) ] in val (toCmdif, fromCmdif) = tableSetLookup(tab, NONE) end datatype WMPrintOption = PRF_CHECKVISIBLE | PRF_NONCLIENT | PRF_CLIENT | PRF_ERASEBKGND | PRF_CHILDREN | PRF_OWNED local val tab = [ (PRF_CHECKVISIBLE, 0wx00000001), (PRF_NONCLIENT, 0wx00000002), (PRF_CLIENT, 0wx00000004), (PRF_ERASEBKGND, 0wx00000008), (PRF_CHILDREN, 0wx00000010), (PRF_OWNED, 0wx00000020) ] in val (toCwmpl, fromCwmpl) = tableSetLookup(tab, NONE) end val (toCcbal, fromCcbal) = ComboBase.CBDIRATTRS val (toCesbf, fromCesbf) = ScrollBase.ENABLESCROLLBARFLAG (*fun itob i = i <> 0*) (* These deal with signed quantities. LOWORD/HIWORD deal with words *) local val shift32 = Word.fromInt(SysWord.wordSize-32) and shift16 = Word.fromInt(SysWord.wordSize-16) open SysWord infix 5 << ~>> infix 7 andb infix 6 orb (* Y is the high order word, X is the low order word. *) in fun getYLParam (i: SysWord.word) = toIntX((i << shift32) ~>> shift16) and getXLParam (i: SysWord.word) = toIntX((i << shift16) ~>> shift16) fun makeXYParam (x, y) = ((fromInt y andb 0wxffff) << 0w16) orb (fromInt x andb 0wxffff) end in type flags = WinBase.Style.flags and WindowPositionStyle = WinBase.WindowPositionStyle datatype ControlType = datatype ControlType datatype ScrollDirection = datatype ScrollDirection datatype HitTest = HTBORDER | HTBOTTOM | HTBOTTOMLEFT | HTBOTTOMRIGHT | HTCAPTION | HTCLIENT | HTCLOSE | HTERROR | HTGROWBOX | HTHELP | HTHSCROLL | HTLEFT | HTMENU | HTMAXBUTTON | HTMINBUTTON | HTNOWHERE | HTREDUCE | HTRIGHT | HTSIZE | HTSYSMENU | HTTOP | HTTOPLEFT | HTTOPRIGHT | HTTRANSPARENT | HTVSCROLL | HTZOOM datatype LRESULT = LRESINT of int | LRESHANDLE of HGDIOBJ datatype ImageType = datatype ImageType (* WM_SIZE options. *) datatype WMSizeOptions = SIZE_RESTORED | SIZE_MINIMIZED | SIZE_MAXIMIZED | SIZE_MAXSHOW | SIZE_MAXHIDE local val tab = [ (SIZE_RESTORED, 0w0: SysWord.word), (SIZE_MINIMIZED, 0w1), (SIZE_MAXIMIZED, 0w2), (SIZE_MAXSHOW, 0w3), (SIZE_MAXHIDE, 0w4) ] in val (fromWMSizeOpt, toWMSizeOpt) = tableLookup(tab, NONE) end (* WM_ACTIVATE options *) datatype WMActivateOptions = WA_INACTIVE | WA_ACTIVE | WA_CLICKACTIVE local val tab = [ (WA_INACTIVE, 0w0: word), (WA_ACTIVE, 0w1), (WA_CLICKACTIVE, 0w2) ] in val (fromWMactive, toWMactive) = tableLookup(tab, NONE) end datatype SystemCommand = SC_SIZE | SC_MOVE | SC_MINIMIZE | SC_MAXIMIZE | SC_NEXTWINDOW | SC_PREVWINDOW | SC_CLOSE | SC_VSCROLL | SC_HSCROLL | SC_MOUSEMENU | SC_KEYMENU | SC_ARRANGE | SC_RESTORE | SC_TASKLIST | SC_SCREENSAVE | SC_HOTKEY | SC_DEFAULT | SC_MONITORPOWER | SC_CONTEXTHELP | SC_SEPARATOR local val tab = [ (SC_SIZE, 0xF000), (SC_MOVE, 0xF010), (SC_MINIMIZE, 0xF020), (SC_MAXIMIZE, 0xF030), (SC_NEXTWINDOW, 0xF040), (SC_PREVWINDOW, 0xF050), (SC_CLOSE, 0xF060), (SC_VSCROLL, 0xF070), (SC_HSCROLL, 0xF080), (SC_MOUSEMENU, 0xF090), (SC_KEYMENU, 0xF100), (SC_ARRANGE, 0xF110), (SC_RESTORE, 0xF120), (SC_TASKLIST, 0xF130), (SC_SCREENSAVE, 0xF140), (SC_HOTKEY, 0xF150), (SC_DEFAULT, 0xF160), (SC_MONITORPOWER, 0xF170), (SC_CONTEXTHELP, 0xF180)] in val (fromSysCommand, toSysCommand) = tableLookup(tab, NONE) end datatype EMCharFromPos = EMcfpEdit of POINT | EMcfpRichEdit of POINT | EMcfpUnknown of SysWord.word datatype WMPrintOption = datatype WMPrintOption (* Parameters to EM_SETMARGINS. *) datatype MarginSettings = UseFontInfo | Margins of {left: int option, right: int option } datatype MouseKeyFlags = datatype MouseKeyFlags datatype MDITileFlags = datatype MDITileFlags (* TODO: Perhaps use a record for this. It's always possible to use functions from Word32 though. *) type KeyData = Word32.word datatype Notification = datatype Notification datatype HelpHandle = datatype HelpHandle local val tab = [ (HTBORDER, 18), (HTBOTTOM, 15), (HTBOTTOMLEFT, 16), (HTBOTTOMRIGHT, 17), (HTCAPTION, 2), (HTCLIENT, 1), (HTCLOSE, 20), (HTERROR, ~2), (HTGROWBOX, 4), (HTHELP, 21), (HTHSCROLL, 6), (HTLEFT, 10), (HTMENU, 5), (HTMAXBUTTON, 9), (HTMINBUTTON, 8), (HTNOWHERE, 0), (HTREDUCE, 8), (HTRIGHT, 11), (HTSIZE, 4), (HTSYSMENU, 3), (HTTOP, 12), (HTTOPLEFT, 13), (HTTOPRIGHT, 14), (HTTRANSPARENT, ~1), (HTVSCROLL, 7), (HTZOOM, 9) ] in val (fromHitTest, toHitTest) = tableLookup(tab, SOME(fn _ => HTERROR, fn _ => ~2)) (* Include default just in case a new value is added some time *) end type findReplaceFlags = FindReplaceFlags.flags type windowFlags = flags datatype Message = WM_NULL | WM_ACTIVATE of {active: WMActivateOptions, minimize: bool } (* Indicates a change in activation state *) | WM_ACTIVATEAPP of {active: bool, threadid: int } (* Notifies applications when a new task activates *) | WM_ASKCBFORMATNAME of { length: int, formatName: string ref} (* Retrieves the name of the clipboard format *) | WM_CANCELJOURNAL (* Notifies application when user cancels journaling *) | WM_CANCELMODE (* Notifies a Window to cancel internal modes *) | WM_CHANGECBCHAIN of { removed: HWND, next: HWND } (* Notifies clipboard viewer of removal from chain *) | WM_CHAR of {charCode: char, data: KeyData } (* Indicates the user pressed a character key *) | WM_CHARTOITEM of {key: int, caretpos: int, listbox: HWND } (* Provides list-box keystrokes to owner Window *) | WM_CHILDACTIVATE (* Notifies a child Window of activation *) (* This is WM_USER+1. It's only used in a GetFont dialogue box. | WM_CHOOSEFONT_GETLOGFONT of LOGFONT ref *) (* Retrieves LOGFONT structure for Font dialog box *) | WM_CLEAR (* Clears an edit control *) | WM_CLOSE (* System Close menu command was chosen *) | WM_COMMAND of {notifyCode: int, wId: int, control: HWND } (* Specifies a command message *) | WM_COMPAREITEM of (* Determines position of combo- or list-box item *) { controlid: int, ctlType: ControlType, ctlID: int, hItem: HWND, itemID1: int, itemData1: SysWord.word, itemID2: int, itemData2: SysWord.word } | WM_COPY (* Copies a selection to the clipboard *) | WM_CREATE of { instance: HINSTANCE, creation: Foreign.Memory.voidStar, menu: HMENU, parent: HWND, cy: int, cx: int, y: int, x: int, style: windowFlags, name: string, (* The class may be a string or an atom. *) class: ClassType, extendedstyle: int } (* Indicates a Window is being created *) | WM_CTLCOLORBTN of { displaycontext: HDC, button: HWND } (* Button is about to be drawn *) | WM_CTLCOLORDLG of { displaycontext: HDC, dialogbox: HWND } (* Dialog box is about to be drawn *) | WM_CTLCOLOREDIT of { displaycontext: HDC, editcontrol: HWND } (* Control is about to be drawn *) | WM_CTLCOLORLISTBOX of { displaycontext: HDC, listbox: HWND } (* List box is about to be drawn *) | WM_CTLCOLORMSGBOX of { displaycontext: HDC, messagebox: HWND } (* Message box is about to be drawn *) | WM_CTLCOLORSCROLLBAR of { displaycontext: HDC, scrollbar: HWND } (* Indicates scroll bar is about to be drawn *) | WM_CTLCOLORSTATIC of { displaycontext: HDC, staticcontrol: HWND } (* Control is about to be drawn *) (* Note the return value is an HBRUSH *) | WM_CUT (* Deletes a selection and copies it to the clipboard *) | WM_DEADCHAR of { charCode: char, data: KeyData } (* Indicates the user pressed a dead key *) | WM_DELETEITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, item: HWND, itemData: int } (* Indicates owner-draw item or control was altered *) | WM_DESTROY (* Indicates Window is about to be destroyed *) | WM_DESTROYCLIPBOARD (* Notifies owner that the clipboard was emptied *) | WM_DEVMODECHANGE of { devicename: string } (* Indicates the device-mode settings have changed *) | WM_DRAWCLIPBOARD (* Indicates the clipboard's contents have changed *) | WM_DRAWITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, itemAction: int, itemState: int, hItem: HWND , hDC: HDC, rcItem: RECT, itemData: int } (* Indicates owner-draw control/menu needs redrawing *) | WM_DROPFILES of { hDrop: HDROP } (* Indicates that a file has been dropped *) | WM_ENABLE of { enabled: bool } (* Indicates a Window's enable state is changing *) | WM_ENDSESSION of { endsession: bool } (* Indicates whether the Windows session is ending *) | WM_ENTERIDLE of { flag: int, window: HWND } (* Indicates a modal dialog box or menu is idle *) | WM_ENTERMENULOOP of { istrack: bool } (* Indicates entry into menu modal loop *) | WM_EXITMENULOOP of { istrack: bool } (* Indicates exit from menu modal loop *) | WM_ERASEBKGND of { devicecontext: HDC } (* Indicates a Window's background need erasing *) | WM_FONTCHANGE (* Indicates a change in the font-resource pool *) | WM_GETDLGCODE (* Allows dialog procedure to process control input TODO: This has parameters! *) | WM_GETFONT (* Retrieves the font that a control is using *) | WM_GETHOTKEY (* Gets the virtual-key code of a Window's hot key *) | WM_GETMINMAXINFO of { maxSize: POINT ref, maxPosition: POINT ref, minTrackSize: POINT ref, maxTrackSize: POINT ref } (* Gets minimum and maximum sizing information *) | WM_GETTEXT of { length: int, text: string ref } (* Gets the text that corresponds to a Window *) | WM_GETTEXTLENGTH (* Gets length of text associated with a Window *) | WM_HOTKEY of { id: int } (* Hot key has been detected *) | WM_HSCROLL of { value: ScrollDirection, position: int, scrollbar: HWND } (* Indicates a click in a horizontal scroll bar *) | WM_HSCROLLCLIPBOARD of { viewer: HWND, code: int, position: int } (* Prompts owner to scroll clipboard contents *) | WM_ICONERASEBKGND of { devicecontext: HDC } (* Notifies minimized Window to fill icon background *) | WM_INITDIALOG of { dialog: HWND, initdata: int } (* Initializes a dialog box *) | WM_INITMENU of { menu: HMENU } (* Indicates a menu is about to become active *) | WM_INITMENUPOPUP of { menupopup: HMENU, itemposition: int, isSystemMenu: bool } (* Indicates a pop-up menu is being created *) | WM_KEYDOWN of { virtualKey: int, data: KeyData } (* Indicates a nonsystem key was pressed *) | WM_KEYUP of { virtualKey: int, data: KeyData } (* Indicates a nonsystem key was released *) | WM_KILLFOCUS of { receivefocus: HWND } (* Indicates the Window is losing keyboard focus *) | WM_LBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of left button *) | WM_LBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when left mouse button is pressed *) | WM_LBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when left mouse button is released *) | WM_MBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of middle mouse button *) | WM_MBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when middle mouse button is pressed *) | WM_MBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when middle mouse button is released *) | WM_MDICASCADE of { skipDisabled: bool } (* Arranges MDI child Windows in cascade format *) | WM_MDICREATE of { class: ClassType, title: string, instance: HINSTANCE, x: int, y: int, cx: int, cy: int, style: int, cdata: int } (* Prompts MDI client to create a child Window *) | WM_MDIDESTROY of { child: HWND } (* Closes an MDI child Window *) | WM_MDIGETACTIVE (* Retrieves data about the active MDI child Window *) | WM_MDIICONARRANGE (* Arranges minimized MDI child Windows *) | WM_MDIMAXIMIZE of { child: HWND } (* Maximizes an MDI child Window *) | WM_MDINEXT of { child: HWND, flagnext: bool } (* Activates the next MDI child Window *) | WM_MDIREFRESHMENU (* Refreshes an MDI frame Window's menu *) | WM_MDIRESTORE of { child: HWND } (* Prompts MDI client to restore a child Window *) | WM_MDISETMENU of { frameMenu: HMENU, windowMenu: HMENU } (* Replaces an MDI frame Window's menu *) | WM_MDITILE of { tilingflag: MDITileFlags list } (* Arranges MDI child Windows in tiled format *) | WM_MEASUREITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, itemWidth: int ref, itemHeight: int ref, itemData: int } (* Requests dimensions of owner-draw control or item *) | WM_MENUCHAR of { ch: char, menuflag: MenuBase.MenuFlag, menu: HMENU } (* Indicates an unknown menu mnemonic was pressed *) | WM_MENUSELECT of { menuitem: int, menuflags: MenuBase.MenuFlag list, menu: HMENU } (* Indicates that the user selected a menu item *) | WM_MOUSEACTIVATE of { parent: HWND, hitTest: HitTest, message: int } (* Indicates a mouse click in an inactive Window *) | WM_MOUSEMOVE of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates mouse-cursor movement *) | WM_MOUSEHOVER of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates the mouse hovering in the client area *) | WM_MOUSELEAVE (* Indicates the mouse leaving the client area *) | WM_MOVE of { x: int, y: int } (* Indicates a Window's position has changed *) | WM_NCACTIVATE of { active: bool } (* Changes the active state of nonclient area *) | WM_NCCALCSIZE of { validarea: bool, newrect: RECT ref, oldrect: RECT, oldclientarea: RECT, hwnd: HWND, insertAfter: HWND, x: int, y: int, cx: int, cy: int, style: WindowPositionStyle list} (* Calculates the size of a Window's client area *) | WM_NCCREATE of { instance: HINSTANCE, creation: Foreign.Memory.voidStar, menu: HMENU, parent: HWND, cy: int, cx: int, y: int, x: int, style: windowFlags, name: string, class: ClassType, extendedstyle: int } (* Indicates a Window's nonclient area being created *) | WM_NCDESTROY (* Indicates Window's nonclient area being destroyed *) | WM_NCHITTEST of { x: int, y: int } (* Indicates mouse-cursor movement *) | WM_NCLBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient left button double-click *) | WM_NCLBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates left button pressed in nonclient area *) | WM_NCLBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates left button released in nonclient area *) | WM_NCMBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient middle button double-click *) | WM_NCMBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates middle button pressed in nonclient area *) | WM_NCMBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates middle button released in nonclient area *) | WM_NCMOUSEMOVE of { hitTest: HitTest, x: int, y: int } (* Indicates mouse-cursor movement in nonclient area *) | WM_NCMOUSEHOVER of { hitTest: HitTest, x: int, y: int } (* Indicates the mouse hovering in the nonclient area *) | WM_NCMOUSELEAVE (* Indicates the mouse leaving the nonclient area *) | WM_NCPAINT of { region: HRGN } (* Indicates a Window's frame needs painting *) | WM_NCRBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient right button double-click *) | WM_NCRBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates right button pressed in nonclient area *) | WM_NCRBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates right button released in nonclient area *) | WM_NEXTDLGCTL of { control: int, handleflag: bool } (* Sets focus to different dialog box control *) | WM_PAINT (* Indicates a Window's client area need painting *) | WM_PAINTCLIPBOARD of { clipboard: HWND } (* Prompts owner to display clipboard contents *) | WM_PAINTICON (* Icon is about to be painted *) | WM_PALETTECHANGED of { palChg: HWND } (* Indicates the focus-Window realized its palette *) | WM_PALETTEISCHANGING of { realize: HWND } (* Informs Windows that palette is changing *) | WM_PARENTNOTIFY of { eventflag: int, idchild: int, value: int } (* Notifies parent of child-Window activity *) | WM_PASTE (* Inserts clipboard data into an edit control *) | WM_POWER of { powerevent: int } (* Indicates the system is entering suspended mode *) | WM_QUERYDRAGICON (* Requests a cursor handle for a minimized Window *) | WM_QUERYENDSESSION of { source: int } (* Requests that the Windows session be ended *) | WM_QUERYNEWPALETTE (* Allows a Window to realize its logical palette *) | WM_QUERYOPEN (* Requests that a minimized Window be restored *) | WM_QUEUESYNC (* Delimits CBT messages *) | WM_QUIT of { exitcode: int } (* Requests that an application be terminated *) | WM_RBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of right mouse button *) | WM_RBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when right mouse button is pressed *) | WM_RBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when right mouse button is released *) | WM_RENDERALLFORMATS (* Notifies owner to render all clipboard formats *) | WM_RENDERFORMAT of { format: ClipboardFormat } (* Notifies owner to render clipboard data *) | WM_SETCURSOR of { cursorwindow: HWND, hitTest: HitTest, mousemessage: int } (* Prompts a Window to set the cursor shape *) | WM_SETFOCUS of { losing: HWND } | WM_SETFONT of {font: HFONT, redrawflag: bool } | WM_SETHOTKEY of { virtualKey: int } | WM_SETREDRAW of { redrawflag: bool } | WM_SETTEXT of { text: string } | WM_SHOWWINDOW of { showflag: bool, statusflag: int } | WM_SIZE of { flag: WMSizeOptions, width: int, height: int } | WM_SIZECLIPBOARD of { viewer: HWND} | WM_SYSCHAR of { charCode: char, data: KeyData } | WM_SYSCOLORCHANGE | WM_SYSCOMMAND of { commandvalue: SystemCommand, sysBits: int, p: POINT } | WM_SYSDEADCHAR of { charCode: char, data: KeyData } | WM_SYSKEYDOWN of { virtualKey: int, data: KeyData } | WM_SYSKEYUP of { virtualKey: int, data: KeyData } | WM_TIMECHANGE (* Indicates the system time has been set *) | WM_TIMER of { timerid: int } | WM_UNDO | WM_SYSTEM_OTHER of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_USER of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_APP of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_REGISTERED of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_VKEYTOITEM of { virtualKey: int, caretpos: int, listbox: HWND } | WM_VSCROLL of { value: ScrollDirection, position: int, scrollbar: HWND } | WM_VSCROLLCLIPBOARD of { viewer: HWND, code: int, position: int } | WM_WINDOWPOSCHANGED of { hwnd: HWND, front: HWND, x: int, y: int, width: int, height: int, flags: WindowPositionStyle list } | WM_WINDOWPOSCHANGING of { hwnd: HWND, front: HWND ref, x: int ref, y: int ref, width: int ref, height: int ref, flags: WindowPositionStyle list ref } | WM_NOTIFY of {from: HWND, idCtrl: int, idFrom: int, notification: Notification } | WM_CAPTURECHANGED of { newCapture: HWND } | WM_ENTERSIZEMOVE | WM_EXITSIZEMOVE | WM_PRINT of {hdc: HDC, flags: WMPrintOption list } | WM_PRINTCLIENT of {hdc: HDC, flags: WMPrintOption list } | WM_HELP of { ctrlId: int, itemHandle: HelpHandle, contextId: int, mousePos: POINT } | WM_GETICON of { big: bool } | WM_SETICON of { big: bool, icon: HICON } | WM_CONTEXTMENU of { hwnd: HWND, xPos: int, yPos: int } | WM_DISPLAYCHANGE of { bitsPerPixel: int, xScreen: int, yScreen: int } | EM_CANUNDO | EM_CHARFROMPOS of EMCharFromPos | EM_EMPTYUNDOBUFFER | EM_FMTLINES of {addEOL: bool} | EM_GETFIRSTVISIBLELINE | EM_GETLIMITTEXT | EM_GETLINE of { lineNo: int, size: int, result: string ref } | EM_GETLINECOUNT | EM_GETMARGINS | EM_GETMODIFY | EM_GETPASSWORDCHAR | EM_GETRECT of {rect: RECT ref} | EM_GETSEL of {startPos: int ref, endPos: int ref} | EM_GETTHUMB | EM_LIMITTEXT of {limit: int} | EM_LINEFROMCHAR of {index: int} | EM_LINEINDEX of {line: int} | EM_LINELENGTH of {index: int} | EM_LINESCROLL of {xScroll: int, yScroll: int} | EM_POSFROMCHAR of {index: int} | EM_REPLACESEL of {canUndo: bool, text: string} | EM_SCROLL of {action: ScrollDirection} | EM_SCROLLCARET | EM_SETMARGINS of {margins: MarginSettings} | EM_SETMODIFY of { modified: bool } | EM_SETPASSWORDCHAR of { ch: char } | EM_SETREADONLY of { readOnly: bool } | EM_SETRECT of {rect: RECT} | EM_SETRECTNP of {rect: RECT} | EM_SETSEL of {startPos: int, endPos: int} | EM_SETTABSTOPS of {tabs: IntVector.vector} | EM_UNDO | BM_CLICK | BM_GETCHECK | BM_GETIMAGE of {imageType: ImageType} | BM_GETSTATE | BM_SETCHECK of {state: int} | BM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType} | BM_SETSTATE of {highlight: bool } | BM_SETSTYLE of {redraw: bool, style: windowFlags} | CB_GETEDITSEL of {startPos: int ref, endPos: int ref} | CB_LIMITTEXT of {limit: int} | CB_SETEDITSEL of {startPos: int, endPos: int} | CB_ADDSTRING of { text: string } | CB_DELETESTRING of { index: int } | CB_GETCOUNT | CB_GETCURSEL | CB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string } | CB_GETLBTEXT of { index: int, length: int, text: string ref } | CB_GETLBTEXTLEN of { index: int } | CB_INSERTSTRING of { index: int, text: string } | CB_RESETCONTENT | CB_FINDSTRING of { indexStart: int, text: string } | CB_SELECTSTRING of { indexStart: int, text: string } | CB_SETCURSEL of { index: int } | CB_SHOWDROPDOWN of { show: bool } | CB_GETITEMDATA of { index: int } | CB_SETITEMDATA of { index: int, data: int } | CB_GETDROPPEDCONTROLRECT of { rect: RECT ref } | CB_SETITEMHEIGHT of { index: int, height: int } | CB_GETITEMHEIGHT of { index: int } | CB_SETEXTENDEDUI of { extended: bool } | CB_GETEXTENDEDUI | CB_GETDROPPEDSTATE | CB_FINDSTRINGEXACT of { indexStart: int, text: string } | CB_SETLOCALE of { locale: int } | CB_GETLOCALE | CB_GETTOPINDEX | CB_SETTOPINDEX of { index: int } | CB_GETHORIZONTALEXTENT | CB_SETHORIZONTALEXTENT of { extent: int } | CB_GETDROPPEDWIDTH | CB_SETDROPPEDWIDTH of { width: int } | CB_INITSTORAGE of { items: int, bytes: int } | LB_ADDSTRING of { text: string } | LB_INSERTSTRING of { index: int, text: string } | LB_DELETESTRING of { index: int } | LB_SELITEMRANGEEX of { first: int, last: int } | LB_RESETCONTENT | LB_SETSEL of { select: bool, index: int } | LB_SETCURSEL of { index: int } | LB_GETSEL of { index: int } | LB_GETCURSEL | LB_GETTEXT of { index: int, length: int, text: string ref } | LB_GETTEXTLEN of { index: int } | LB_GETCOUNT | LB_SELECTSTRING of { indexStart: int, text: string } | LB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string } | LB_GETTOPINDEX | LB_FINDSTRING of { indexStart: int, text: string } | LB_GETSELCOUNT | LB_GETSELITEMS of { items: IntArray.array } | LB_SETTABSTOPS of { tabs: IntVector.vector } | LB_GETHORIZONTALEXTENT | LB_SETHORIZONTALEXTENT of { extent: int } | LB_SETCOLUMNWIDTH of { column: int } | LB_ADDFILE of { fileName: string } | LB_SETTOPINDEX of { index: int } | LB_GETITEMRECT of { rect: RECT ref, index: int } | LB_GETITEMDATA of { index: int } | LB_SETITEMDATA of { index: int, data: int } | LB_SELITEMRANGE of { select: bool, first: int, last: int } | LB_SETANCHORINDEX of { index: int } | LB_GETANCHORINDEX | LB_SETCARETINDEX of { index: int, scroll: bool } | LB_GETCARETINDEX | LB_SETITEMHEIGHT of { index: int, height: int } | LB_GETITEMHEIGHT of { index: int } | LB_FINDSTRINGEXACT of { indexStart: int, text: string } | LB_SETLOCALE of { locale: int } (* Should be an abstract type? *) | LB_GETLOCALE (* Result will be the type used above. *) | LB_SETCOUNT of { items: int } | LB_INITSTORAGE of { items: int, bytes: int } | LB_ITEMFROMPOINT of { point: POINT } | STM_GETICON | STM_GETIMAGE of {imageType: ImageType} | STM_SETICON of {icon: HICON} | STM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType} | SBM_SETPOS of { pos: int, redraw: bool } | SBM_GETPOS | SBM_SETRANGE of { minPos: int, maxPos: int } | SBM_SETRANGEREDRAW of { minPos: int, maxPos: int } | SBM_GETRANGE of { minPos: int ref, maxPos: int ref } | SBM_ENABLE_ARROWS of ScrollBase.enableArrows | SBM_SETSCROLLINFO of { info: ScrollBase.SCROLLINFO, options: ScrollBase.ScrollInfoOption list } | SBM_GETSCROLLINFO of { info: ScrollBase.SCROLLINFO ref, options: ScrollBase.ScrollInfoOption list } | FINDMSGSTRING of { flags: findReplaceFlags, findWhat: string, replaceWith: string } (* GetMessage and PeekMessage return these values. *) type MSG = { msg: Message, hwnd: HWND, time: Time.time, pt: {x: int, y: int} } type HGDIOBJ = HGDIOBJ and HWND = HWND and RECT = RECT and POINT = POINT and HMENU = HMENU and HICON = HICON and HINSTANCE = HINSTANCE and HDC = HDC and HFONT = HFONT and HRGN = HRGN and HDROP = HDROP and ClipboardFormat = ClipboardFormat and ClassType = ClassType and findReplaceFlags = FindReplaceFlags.flags and windowFlags = flags (* WM_MOUSEMOVE etc *) fun decompileMouseMove(constr, wp, lp) = let val lp32 = Word32.fromLargeWord lp in constr { keyflags = fromCmkf(Word32.fromLargeWord wp), x = Word.toInt(LOWORD lp32), y = Word.toInt(HIWORD lp32) } end fun compileMouseMove(code, { keyflags, x, y}) = (code, Word32.toLargeWord (toCmkf keyflags), Word32.toLargeWord(MAKELONG(Word.fromInt x, Word.fromInt y)), fn()=>()) local (* EM_GETSEL and CB_GETEDITSEL *) val {load=loadDword, store=storeDword, ctype={size=sizeDword, ...}, ...} = breakConversion cDWORD in fun compileGetSel(code, {startPos=ref s, endPos=ref e}) = let open Memory infix 6 ++ (* Allocate space for two DWORDs *) val mem = malloc(sizeDword * 0w2) val eAddr = mem ++ sizeDword val () = ignore(storeDword(mem, s)) (* Can ignore the results *) and () = ignore(storeDword(eAddr, e)) in (code, fromAddr mem, fromAddr eAddr, fn () => free mem) end and decompileGetSel{wp, lp} = let val s = loadDword(toAddr wp) and e = loadDword(toAddr lp) in {startPos = ref s, endPos=ref e} end (* Update ML from wp/lp values *) fun updateGetSelFromWpLp({startPos, endPos}, {wp, lp}) = ( startPos := loadDword(toAddr wp); endPos := loadDword(toAddr lp) ) (* Update wp/lp from ML *) and updateGetSelParms({wp, lp}, {startPos = ref s, endPos = ref e}) = ( ignore(storeDword(toAddr wp, s)); ignore(storeDword(toAddr lp, e)) ) end local (* EM_GETRECT and CB_GETDROPPEDCONTROLRECT. LB_GETITEMRECT and WM_NCCALCSIZE are similar *) val {load=loadRect, store=storeRect, ctype={size=sizeRect, ...}, ...} = breakConversion cRect in fun compileGetRect(code, wp, r) = let open Memory val mem = malloc sizeRect val () = ignore(storeRect(mem, r)) (* Can ignore the result *) in (code, wp, fromAddr mem, fn () => free mem) end and compileSetRect(code, rect) = let open Memory val mem = malloc sizeRect val () = ignore(storeRect(mem, rect)) in (code, 0w0, fromAddr mem, fn () => free mem) end (* These can be used for updating *) val fromCrect = loadRect (* For the moment *) and toCrect = ignore o storeRect end val hiWord = Word.toInt o HIWORD o Word32.fromLargeWord and loWord = Word.toInt o LOWORD o Word32.fromLargeWord (* Decode a received message. *) fun decompileMessage (0x0000, _: SysWord.word, _: SysWord.word) = WM_NULL | decompileMessage (0x0001, wp, lp) = WM_CREATE(decompileCreate{wp=wp, lp=lp}) | decompileMessage (0x0002, _, _) = WM_DESTROY | decompileMessage (0x0003, _, lp) = WM_MOVE { x = loWord lp, y = hiWord lp } | decompileMessage (0x0005, wp, lp) = WM_SIZE { flag = toWMSizeOpt wp, width = loWord lp, height = hiWord lp } | decompileMessage (0x0006, wp, _) = let val wp32 = Word32.fromLargeWord wp in WM_ACTIVATE { active = toWMactive (LOWORD wp32), minimize = HIWORD wp32 <> 0w0 } end | decompileMessage (0x0007, wp, _) = WM_SETFOCUS { losing = handleOfVoidStar(toAddr wp) } | decompileMessage (0x0008, wp, _) = WM_KILLFOCUS { receivefocus = handleOfVoidStar(toAddr wp) } | decompileMessage (0x000A, wp, _) = WM_ENABLE { enabled = wp <> 0w0 } | decompileMessage (0x000B, wp, _) = WM_SETREDRAW { redrawflag = wp <> 0w0 } | decompileMessage (0x000C, _, lp) = WM_SETTEXT { text = fromCstring(toAddr lp) } (* When the message arrives we don't know what the text is. *) | decompileMessage (0x000D, wp, _) = WM_GETTEXT { length = SysWord.toInt wp, text = ref "" } | decompileMessage ( 0x000E, _, _) = WM_GETTEXTLENGTH | decompileMessage ( 0x000F, _, _) = WM_PAINT | decompileMessage ( 0x0010, _, _) = WM_CLOSE | decompileMessage ( 0x0011, wp, _) = WM_QUERYENDSESSION { source = SysWord.toInt wp } | decompileMessage (0x0012, wp, _) = WM_QUIT {exitcode = SysWord.toInt wp } | decompileMessage ( 0x0013, _, _) = WM_QUERYOPEN | decompileMessage ( 0x0014, wp, _) = WM_ERASEBKGND { devicecontext = toHDC wp } | decompileMessage ( 0x0015, _, _) = WM_SYSCOLORCHANGE | decompileMessage ( 0x0016, wp, _) = WM_ENDSESSION { endsession = wp <> 0w0 } | decompileMessage ( 0x0018, wp, lp) = WM_SHOWWINDOW { showflag = wp <> 0w0, statusflag = SysWord.toInt lp } | decompileMessage ( 0x001B, _, lp) = WM_DEVMODECHANGE { devicename = fromCstring(toAddr lp) } (* "0x001B" *) | decompileMessage ( 0x001C, wp, lp) = WM_ACTIVATEAPP { active = wp <> 0w0, threadid = SysWord.toInt lp } (* "0x001C" *) | decompileMessage ( 0x001D, _, _) = WM_FONTCHANGE | decompileMessage ( 0x001E, _, _) = WM_TIMECHANGE (* "0x001E" *) | decompileMessage ( 0x001F, _, _) = WM_CANCELMODE (* "0x001F" *) | decompileMessage ( 0x0020, wp, lp) = WM_SETCURSOR { cursorwindow = toHWND wp, hitTest = toHitTest(loWord lp), mousemessage = hiWord lp } | decompileMessage ( 0x0021, wp, lp) = WM_MOUSEACTIVATE { parent = toHWND wp, hitTest = toHitTest(loWord lp), message = hiWord lp } | decompileMessage (0x0022, _, _) = WM_CHILDACTIVATE (* "0x0022" *) | decompileMessage (0x0023, _, _) = WM_QUEUESYNC (* "0x0023" *) | decompileMessage (0x0024, wp, lp) = WM_GETMINMAXINFO(decompileMinMax{lp=lp, wp=wp}) | decompileMessage ( 0x0026, _, _) = WM_PAINTICON | decompileMessage ( 0x0027, wp, _) = WM_ICONERASEBKGND { devicecontext = toHDC wp } (* "0x0027" *) | decompileMessage ( 0x0028, wp, lp) = WM_NEXTDLGCTL { control = SysWord.toInt wp, handleflag = lp <> 0w0 } (* "0x0028" *) | decompileMessage (0x002B, wp, lp) = let val (ctlType,ctlID,itemID,itemAction,itemState,hItem,hDC, rcItem,itemData) = toMLDrawItem lp in WM_DRAWITEM{ senderId = SysWord.toInt wp, ctlType = ctlType, ctlID = ctlID, itemID = itemID, itemAction = itemAction, itemState = itemState, hItem = hItem, hDC = hDC, rcItem = rcItem, itemData = itemData } end | decompileMessage (0x002C, wp, lp) = let val (ctlType,ctlID,itemID, itemWidth,itemHeight,itemData) = toMLMeasureItem lp in WM_MEASUREITEM { senderId = SysWord.toInt wp, ctlType = ctlType, ctlID = ctlID, itemID = itemID, itemWidth = ref itemWidth, itemHeight = ref itemHeight, itemData = itemData } end | decompileMessage (0x002D, wp, lp) = let val (ctlType,ctlID,itemID,hItem,itemData) = toMLDeleteItem lp in WM_DELETEITEM { senderId = SysWord.toInt wp, ctlType = ctlType, ctlID = ctlID, itemID = itemID, item = hItem, itemData = itemData } end | decompileMessage ( 0x002E, wp, lp) = WM_VKEYTOITEM { virtualKey = loWord wp, caretpos = hiWord wp, listbox = toHWND lp } (* "0x002E" *) | decompileMessage ( 0x002F, wp, lp) = WM_CHARTOITEM { key = loWord wp, caretpos = hiWord wp,listbox = toHWND lp } (* "0x002F" *) | decompileMessage ( 0x0030, wp, lp) = (* The definition of WM_SETFONT says that it is the low order word of lp that says whether the control should be redrawn immediately. *) WM_SETFONT { font = toHFONT wp, redrawflag = SysWord.andb(0wxffff, lp) <> 0w0 } (* "0x0030" *) | decompileMessage ( 0x0031, _, _) = WM_GETFONT (* "0x0031" *) | decompileMessage ( 0x0032, wp, _) = WM_SETHOTKEY { virtualKey = SysWord.toInt wp } (* "0x0032" *) | decompileMessage ( 0x0033, _, _) = WM_GETHOTKEY (* "0x0033" *) | decompileMessage ( 0x0037, _, _) = WM_QUERYDRAGICON (* "0x0037" *) | decompileMessage (0x0039, wp, lp) = let val (ctlType, ctlID, hItem, itemID1, itemData1, itemID2, itemData2, _) = toMLCompareItem lp in WM_COMPAREITEM { controlid = SysWord.toInt wp, ctlType = ctlType, ctlID = ctlID, hItem = hItem, itemID1 = itemID1, itemData1 = itemData1, itemID2 = itemID2, itemData2 = itemData2 } end | decompileMessage (0x0046, wp, lp) = WM_WINDOWPOSCHANGING(cToMLWindowPosChanging{wp=wp, lp=lp}) | decompileMessage (0x0047, wp, lp) = WM_WINDOWPOSCHANGED(cToMLWindowPosChanged{wp=wp, lp=lp}) | decompileMessage ( 0x0048, wp, _) = WM_POWER { powerevent = SysWord.toInt wp } (* "0x0048" *) | decompileMessage ( 0x004B, _, _) = WM_CANCELJOURNAL (* "0x004B" *) | decompileMessage ( 0x004E, wp, lp) = WM_NOTIFY(decompileNotify{wp=wp, lp=lp}) | decompileMessage ( 0x0053, wp, lp) = WM_HELP(decompileHelpInfo{wp=wp, lp=lp}) (* WM_INPUTLANGCHANGEREQUEST 0x0050 WM_INPUTLANGCHANGE 0x0051 WM_TCARD 0x0052 WM_USERCHANGED 0x0054 WM_NOTIFYFORMAT 0x0055 NFR_ANSI 1 NFR_UNICODE 2 NF_QUERY 3 NF_REQUERY 4 WM_CONTEXTMENU 0x007B WM_STYLECHANGING 0x007C WM_STYLECHANGED 0x007D *) | decompileMessage ( 0x007B, wp, lp) = WM_CONTEXTMENU { hwnd = toHWND wp, xPos = loWord lp, yPos = hiWord lp} | decompileMessage ( 0x007E, wp, lp) = WM_DISPLAYCHANGE { bitsPerPixel = SysWord.toInt wp, xScreen = loWord lp, yScreen = hiWord lp} | decompileMessage ( 0x007F, wp, _) = WM_GETICON { big = SysWord.toInt wp = 1} | decompileMessage ( 0x0080, wp, lp) = WM_SETICON { big = SysWord.toInt wp = 1, icon = toHICON lp} | decompileMessage ( 0x0081, wp, lp) = WM_NCCREATE(decompileCreate{wp=wp, lp=lp}) | decompileMessage ( 0x0082, _, _) = WM_NCDESTROY | decompileMessage ( 0x0083, wp, lp) = WM_NCCALCSIZE(decompileNCCalcSize{wp=wp, lp=lp}) | decompileMessage ( 0x0084, _, lp) = WM_NCHITTEST { x = loWord lp, y = hiWord lp } (* "0x0084" *) | decompileMessage ( 0x0085, wp, _) = WM_NCPAINT { region = toHRGN wp } (* "0x0085" *) | decompileMessage ( 0x0086, wp, _) = WM_NCACTIVATE { active = wp <> 0w0 } (* "0x0086" *) | decompileMessage ( 0x0087, _, _) = WM_GETDLGCODE (* "0x0087" *) | decompileMessage ( 0x00A0, wp, lp) = WM_NCMOUSEMOVE { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A1, wp, lp) = WM_NCLBUTTONDOWN { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A2, wp, lp) = WM_NCLBUTTONUP { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A3, wp, lp) = WM_NCLBUTTONDBLCLK { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A4, wp, lp) = WM_NCRBUTTONDOWN { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A5, wp, lp) = WM_NCRBUTTONUP { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A6, wp, lp) = WM_NCRBUTTONDBLCLK { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A7, wp, lp) = WM_NCMBUTTONDOWN { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A8, wp, lp) = WM_NCMBUTTONUP { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage ( 0x00A9, wp, lp) = WM_NCMBUTTONDBLCLK { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } (* Edit control messages *) | decompileMessage ( 0x00B0, wp, lp) = EM_GETSEL (decompileGetSel{wp=wp, lp=lp}) | decompileMessage ( 0x00B1, wp, lp) = EM_SETSEL { startPos = SysWord.toInt wp, endPos = SysWord.toInt lp } | decompileMessage ( 0x00B2, _, lp) = EM_GETRECT {rect = ref(fromCrect(toAddr lp))} | decompileMessage ( 0x00B3, _, lp) = EM_SETRECT { rect = fromCrect(toAddr lp) } | decompileMessage ( 0x00B4, _, lp) = EM_SETRECTNP { rect = fromCrect(toAddr lp) } | decompileMessage ( 0x00B5, wp, _) = EM_SCROLL{action = fromCsd(Word.fromLargeWord wp)} | decompileMessage ( 0x00B6, wp, lp) = EM_LINESCROLL{xScroll = SysWord.toInt wp, yScroll = SysWord.toInt lp} | decompileMessage ( 0x00B7, _, _) = EM_SCROLLCARET | decompileMessage ( 0x00B8, _, _) = EM_GETMODIFY | decompileMessage ( 0x00B9, wp, _) = EM_SETMODIFY{modified = wp <> 0w0} | decompileMessage ( 0x00BA, _, _) = EM_GETLINECOUNT | decompileMessage ( 0x00BB, wp, _) = EM_LINEINDEX {line = SysWord.toIntX (* -1 = current line *) wp} (* EM_SETHANDLE 0x00BC *) | decompileMessage ( 0x00BE, _, _) = EM_GETTHUMB | decompileMessage ( 0x00C1, wp, _) = EM_LINELENGTH {index = SysWord.toIntX (* May be -1 *) wp} | decompileMessage ( 0x00C2, wp, lp) = EM_REPLACESEL {canUndo = wp <> 0w0, text = fromCstring(toAddr lp)} | decompileMessage ( 0x00C4, wp, lp) = EM_GETLINE(decompileGetLine{wp=wp, lp=lp}) | decompileMessage ( 0x00C5, wp, _) = EM_LIMITTEXT {limit = SysWord.toInt wp} | decompileMessage ( 0x00C6, _, _) = EM_CANUNDO | decompileMessage ( 0x00C7, _, _) = EM_UNDO | decompileMessage ( 0x00C8, wp, _) = EM_FMTLINES{addEOL = wp <> 0w0} | decompileMessage ( 0x00C9, wp, _) = EM_LINEFROMCHAR{index = SysWord.toInt wp} | decompileMessage ( 0x00CB, wp, lp) = EM_SETTABSTOPS{tabs=decompileTabStops{wp=wp, lp=lp}} | decompileMessage ( 0x00CC, wp, _) = EM_SETPASSWORDCHAR{ch = chr (SysWord.toInt wp)} | decompileMessage ( 0x00CD, _, _) = EM_EMPTYUNDOBUFFER | decompileMessage ( 0x00CE, _, _) = EM_GETFIRSTVISIBLELINE | decompileMessage ( 0x00CF, wp, _) = EM_SETREADONLY{readOnly = wp <> 0w0} (* EM_SETWORDBREAKPROC 0x00D0 EM_GETWORDBREAKPROC 0x00D1 *) | decompileMessage (0x00D2, _, _) = EM_GETPASSWORDCHAR | decompileMessage (0x00D3, wp, lp) = if wp = 0wxffff then EM_SETMARGINS{margins=UseFontInfo} else let val left = if SysWord.andb(wp, 0w1) <> 0w0 then SOME(loWord lp) else NONE val right = if SysWord.andb(wp, 0w2) <> 0w0 then SOME(hiWord lp) else NONE in EM_SETMARGINS{margins=Margins{left=left, right=right}} end | decompileMessage (0x00D4, _, _) = EM_GETMARGINS | decompileMessage (0x00D5, _, _) = EM_GETLIMITTEXT | decompileMessage (0x00D6, wp, _) = EM_POSFROMCHAR {index = SysWord.toInt wp} | decompileMessage (0x00D7, _, lp) = (* The value in lParam is different depending on whether this is an edit control or a rich edit control. Since we don't know we just pass the lp value. *) EM_CHARFROMPOS(EMcfpUnknown lp) (* Scroll bar messages *) | decompileMessage (0x00E0, wp, lp) = SBM_SETPOS {pos = SysWord.toInt wp, redraw = lp <> 0w0} | decompileMessage (0x00E1, _, _) = SBM_GETPOS | decompileMessage (0x00E2, wp, lp) = SBM_SETRANGE {minPos = SysWord.toInt wp, maxPos = SysWord.toInt lp} | decompileMessage (0x00E6, wp, lp) = SBM_SETRANGEREDRAW {minPos = SysWord.toInt wp, maxPos = SysWord.toInt lp} | decompileMessage (0x00E3, wp, lp) = SBM_GETRANGE { minPos = ref(loadInt(toAddr wp)), maxPos = ref(loadInt(toAddr lp)) } | decompileMessage (0x00E4, wp, _) = SBM_ENABLE_ARROWS(fromCesbf(SysWord.toInt wp)) | decompileMessage (0x00E9, _, lp) = let val (info, options) = toScrollInfo lp in SBM_SETSCROLLINFO{ info = info, options = options } end | decompileMessage (0x00EA, _, lp) = let (* The values may not be correct at this point but the mask should have been set. *) val (info, options) = toScrollInfo lp in SBM_GETSCROLLINFO{ info = ref info, options = options } end (* Button control messages *) | decompileMessage (0x00F0, _, _) = BM_GETCHECK | decompileMessage (0x00F1, wp, _) = BM_SETCHECK{state = SysWord.toInt wp} | decompileMessage (0x00F2, _, _) = BM_GETSTATE | decompileMessage (0x00F3, wp, _) = BM_SETSTATE{highlight = SysWord.toInt wp <> 0} | decompileMessage (0x00F4, wp, lp) = BM_SETSTYLE{redraw = SysWord.toInt lp <> 0, style = Style.fromWord wp} | decompileMessage (0x00F5, _, _) = BM_CLICK | decompileMessage (0x00F6, wp, _) = BM_GETIMAGE{imageType = fromCit(SysWord.toInt wp)} | decompileMessage (0x00F7, wp, lp) = BM_SETIMAGE{imageType = fromCit (SysWord.toInt wp), image = toHGDIOBJ lp} | decompileMessage (0x0100, wp, lp) = WM_KEYDOWN { virtualKey = SysWord.toInt wp, data = Word32.fromLargeWord lp } | decompileMessage (0x0101, wp, lp) = WM_KEYUP { virtualKey = SysWord.toInt wp, data = Word32.fromLargeWord lp } | decompileMessage (0x0102, wp, lp) = WM_CHAR { charCode = chr (SysWord.toInt wp), data = Word32.fromLargeWord lp } | decompileMessage (0x0103, wp, lp) = WM_DEADCHAR { charCode = chr (SysWord.toInt wp), data = Word32.fromLargeWord lp } | decompileMessage (0x0104, wp, lp) = WM_SYSKEYDOWN { virtualKey = SysWord.toInt wp, data = Word32.fromLargeWord lp } | decompileMessage (0x0105, wp, lp) = WM_SYSKEYUP { virtualKey = SysWord.toInt wp, data = Word32.fromLargeWord lp } | decompileMessage (0x0106, wp, lp) = WM_SYSCHAR { charCode = chr (SysWord.toInt wp), data = Word32.fromLargeWord lp } | decompileMessage (0x0107, wp, lp) = WM_SYSDEADCHAR { charCode = chr (SysWord.toInt wp), data = Word32.fromLargeWord lp } (* WM_IME_STARTCOMPOSITION 0x010D WM_IME_ENDCOMPOSITION 0x010E WM_IME_COMPOSITION 0x010F WM_IME_KEYLAST 0x010F *) | decompileMessage (0x0110, wp, lp) = WM_INITDIALOG { dialog = toHWND wp, initdata = SysWord.toInt lp } (* "0x0110" *) | decompileMessage (0x0111, wp, lp) = let val wp32 = Word32.fromLargeWord wp in WM_COMMAND { notifyCode = Word.toInt(HIWORD wp32), wId = Word.toInt(LOWORD wp32), control = toHWND lp } end | decompileMessage (0x0112, wp, lp) = WM_SYSCOMMAND { commandvalue = toSysCommand(SysWord.toInt(SysWord.andb(wp, 0wxFFF0))), sysBits = SysWord.toInt(SysWord.andb(wp, 0wxF)), p = {x= getXLParam lp, y= getYLParam lp}} | decompileMessage (0x0113, wp, _) = WM_TIMER { timerid = SysWord.toInt wp } (* "0x0113" *) | decompileMessage (0x0114, wp, lp) = WM_HSCROLL { value = fromCsd(LOWORD(Word32.fromLargeWord wp)), position = hiWord wp, scrollbar = toHWND lp } (* "0x0114" *) | decompileMessage (0x0115, wp, lp) = WM_VSCROLL { value = fromCsd(LOWORD(Word32.fromLargeWord wp)), position = hiWord wp, scrollbar = toHWND lp } (* "0x0115" *) | decompileMessage (0x0116, wp, _) = WM_INITMENU { menu = toHMENU wp } (* "0x0116" *) | decompileMessage (0x0117, wp, lp) = WM_INITMENUPOPUP { menupopup = toHMENU wp, itemposition = loWord lp, isSystemMenu = hiWord lp <> 0 } (* "0x0117" *) | decompileMessage (0x011F, wp, lp) = let val wp32 = Word32.fromLargeWord wp in WM_MENUSELECT { menuitem = Word.toInt(LOWORD wp32), menuflags = MenuBase.toMenuFlagSet(Word32.fromLargeWord(Word.toLargeWord(Word.andb(HIWORD wp32, 0wxffff)))), menu = toHMENU lp } (* "0x011F" *) end | decompileMessage (0x0120, wp, lp) = let val wp32 = Word32.fromLargeWord wp in WM_MENUCHAR { ch = chr(Word.toInt(LOWORD wp32)), menuflag = (* Just a single flag *) MenuBase.toMenuFlag(Word32.fromLargeWord(Word.toLargeWord(Word.andb(HIWORD wp32, 0wxffff)))), menu= toHMENU lp } (* "0x0120" *) end | decompileMessage (0x0121, wp, lp) = WM_ENTERIDLE { flag = SysWord.toInt wp, window = toHWND lp } (* "0x0121" *) | decompileMessage (0x0132, wp, lp) = WM_CTLCOLORMSGBOX { displaycontext = toHDC wp, messagebox = toHWND lp } (* "0x0132" *) | decompileMessage (0x0133, wp, lp) = WM_CTLCOLOREDIT { displaycontext = toHDC wp, editcontrol = toHWND lp } (* "0x0133" *) | decompileMessage (0x0134, wp, lp) = WM_CTLCOLORLISTBOX { displaycontext = toHDC wp, listbox = toHWND lp } (* "0x0134" *) | decompileMessage (0x0135, wp, lp) = WM_CTLCOLORBTN { displaycontext = toHDC wp, button = toHWND lp }(* "0x0135" *) | decompileMessage (0x0136, wp, lp) = WM_CTLCOLORDLG { displaycontext = toHDC wp, dialogbox = toHWND lp } (* "0x0136" *) | decompileMessage (0x0137, wp, lp) = WM_CTLCOLORSCROLLBAR { displaycontext = toHDC wp, scrollbar = toHWND lp } (* "0x0137" *) | decompileMessage (0x0138, wp, lp) = WM_CTLCOLORSTATIC { displaycontext = toHDC wp, staticcontrol = toHWND lp } (* "0x0138" *) (* Combobox messages. *) | decompileMessage (0x0140, wp, lp) = CB_GETEDITSEL (decompileGetSel{wp=wp, lp=lp}) | decompileMessage (0x0141, wp, _) = CB_LIMITTEXT {limit = SysWord.toInt wp} | decompileMessage (0x0142, _, lp) = CB_SETEDITSEL { startPos = loWord lp, endPos = hiWord lp } | decompileMessage (0x0143, _, lp) = CB_ADDSTRING {text = fromCstring(toAddr lp) } | decompileMessage (0x0144, wp, _) = CB_DELETESTRING {index = SysWord.toInt wp} | decompileMessage (0x0145, wp, lp) = CB_DIR {attrs = fromCcbal(Word32.fromLargeWord wp), fileSpec = fromCstring(toAddr lp) } | decompileMessage (0x0146, _, _) = CB_GETCOUNT | decompileMessage (0x0147, _, _) = CB_GETCURSEL | decompileMessage (0x0148, wp, _) = CB_GETLBTEXT { index = SysWord.toInt wp, length = 0, text = ref "" } | decompileMessage (0x0149, wp, _) = CB_GETLBTEXTLEN {index = SysWord.toInt wp} | decompileMessage (0x014A, wp, lp) = CB_INSERTSTRING {text = fromCstring(toAddr lp), index = SysWord.toInt wp } | decompileMessage (0x014B, _, _) = CB_RESETCONTENT | decompileMessage (0x014C, wp, lp) = CB_FINDSTRING {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x014D, wp, lp) = CB_SELECTSTRING {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x014E, wp, _) = CB_SETCURSEL {index = SysWord.toInt wp} | decompileMessage (0x014F, wp, _) = CB_SHOWDROPDOWN {show = wp <> 0w0} | decompileMessage (0x0150, wp, _) = CB_GETITEMDATA {index = SysWord.toInt wp} | decompileMessage (0x0151, wp, lp) = CB_SETITEMDATA {index = SysWord.toInt wp, data = SysWord.toInt lp} | decompileMessage (0x0152, _, lp) = CB_GETDROPPEDCONTROLRECT {rect = ref(fromCrect(toAddr lp))} | decompileMessage (0x0153, wp, lp) = CB_SETITEMHEIGHT {index = SysWord.toInt wp, height = SysWord.toInt lp} | decompileMessage (0x0154, wp, _) = CB_GETITEMHEIGHT {index = SysWord.toInt wp} | decompileMessage (0x0155, wp, _) = CB_SETEXTENDEDUI {extended = wp <> 0w0} | decompileMessage (0x0156, _, _) = CB_GETEXTENDEDUI | decompileMessage (0x0157, _, _) = CB_GETDROPPEDSTATE | decompileMessage (0x0158, wp, lp) = CB_FINDSTRINGEXACT {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x0159, wp, _) = CB_SETLOCALE {locale = SysWord.toInt wp} | decompileMessage (0x015A, _, _) = CB_GETLOCALE | decompileMessage (0x015b, _, _) = CB_GETTOPINDEX | decompileMessage (0x015c, wp, _) = CB_SETTOPINDEX {index = SysWord.toInt wp} | decompileMessage (0x015d, _, _) = CB_GETHORIZONTALEXTENT | decompileMessage (0x015e, wp, _) = CB_SETHORIZONTALEXTENT {extent = SysWord.toInt wp} | decompileMessage (0x015f, _, _) = CB_GETDROPPEDWIDTH | decompileMessage (0x0160, wp, _) = CB_SETDROPPEDWIDTH {width = SysWord.toInt wp} | decompileMessage (0x0161, wp, lp) = CB_INITSTORAGE {items = SysWord.toInt wp, bytes = SysWord.toInt lp} (* Static control messages. *) | decompileMessage (0x0170, wp, _) = STM_SETICON{icon = toHICON wp} | decompileMessage (0x0171, _, _) = STM_GETICON | decompileMessage (0x0172, wp, lp) = STM_SETIMAGE{imageType = fromCit(SysWord.toInt wp), image = toHGDIOBJ lp} | decompileMessage (0x0173, wp, _) = STM_GETIMAGE{imageType = fromCit(SysWord.toInt wp)} (* Listbox messages *) | decompileMessage (0x0180, _, lp) = LB_ADDSTRING {text = fromCstring(toAddr lp) } | decompileMessage (0x0181, wp, lp) = LB_INSERTSTRING {text = fromCstring(toAddr lp), index = SysWord.toInt wp } | decompileMessage (0x0182, wp, _) = LB_DELETESTRING {index = SysWord.toInt wp} | decompileMessage (0x0183, wp, lp) = LB_SELITEMRANGEEX {first = SysWord.toInt wp, last = SysWord.toInt lp} | decompileMessage (0x0184, _, _) = LB_RESETCONTENT | decompileMessage (0x0185, wp, lp) = LB_SETSEL {select = wp <> 0w0, index = SysWord.toInt lp} | decompileMessage (0x0186, wp, _) = LB_SETCURSEL {index = SysWord.toInt wp} | decompileMessage (0x0187, wp, _) = LB_GETSEL {index = SysWord.toInt wp} | decompileMessage (0x0188, _, _) = LB_GETCURSEL | decompileMessage (0x0189, wp, _) = LB_GETTEXT { index = SysWord.toInt wp, length = 0, text = ref "" } | decompileMessage (0x018A, wp, _) = LB_GETTEXTLEN {index = SysWord.toInt wp} | decompileMessage (0x018B, _, _) = LB_GETCOUNT | decompileMessage (0x018C, wp, lp) = LB_SELECTSTRING {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x018D, wp, lp) = LB_DIR {attrs = fromCcbal(Word32.fromLargeWord wp), fileSpec = fromCstring(toAddr lp) } | decompileMessage (0x018E, _, _) = LB_GETTOPINDEX | decompileMessage (0x018F, wp, lp) = LB_FINDSTRING {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x0190, _, _) = LB_GETSELCOUNT | decompileMessage (0x0191, wp, _) = LB_GETSELITEMS { items = IntArray.array(SysWord.toInt wp, ~1) } | decompileMessage (0x0192, wp, lp) = LB_SETTABSTOPS{tabs=decompileTabStops{wp=wp, lp=lp}} | decompileMessage (0x0193, _, _) = LB_GETHORIZONTALEXTENT | decompileMessage (0x0194, wp, _) = LB_SETHORIZONTALEXTENT {extent = SysWord.toInt wp} | decompileMessage (0x0195, wp, _) = LB_SETCOLUMNWIDTH {column = SysWord.toInt wp} | decompileMessage (0x0196, _, lp) = LB_ADDFILE {fileName = fromCstring(toAddr lp) } | decompileMessage (0x0197, wp, _) = LB_SETTOPINDEX {index = SysWord.toInt wp} | decompileMessage (0x0198, wp, lp) = LB_GETITEMRECT {index = SysWord.toInt wp, rect = ref(fromCrect(toAddr lp))} | decompileMessage (0x0199, wp, _) = LB_GETITEMDATA {index = SysWord.toInt wp} | decompileMessage (0x019A, wp, lp) = LB_SETITEMDATA {index = SysWord.toInt wp, data = SysWord.toInt lp} | decompileMessage (0x019B, wp, lp) = LB_SELITEMRANGE {select = wp <> 0w0, first = loWord lp, last = hiWord lp} | decompileMessage (0x019C, wp, _) = LB_SETANCHORINDEX {index = SysWord.toInt wp} | decompileMessage (0x019D, _, _) = LB_GETANCHORINDEX | decompileMessage (0x019E, wp, lp) = LB_SETCARETINDEX {index = SysWord.toInt wp, scroll = lp <> 0w0} | decompileMessage (0x019F, _, _) = LB_GETCARETINDEX | decompileMessage (0x01A0, wp, lp) = LB_SETITEMHEIGHT {index = SysWord.toInt wp, height = loWord lp} | decompileMessage (0x01A1, wp, _) = LB_GETITEMHEIGHT {index = SysWord.toInt wp} | decompileMessage (0x01A2, wp, lp) = LB_FINDSTRINGEXACT {text = fromCstring(toAddr lp), indexStart = SysWord.toInt wp } | decompileMessage (0x01A5, wp, _) = LB_SETLOCALE {locale = SysWord.toInt wp} | decompileMessage (0x01A6, _, _) = LB_GETLOCALE | decompileMessage (0x01A7, wp, _) = LB_SETCOUNT {items = SysWord.toInt wp} | decompileMessage (0x01A8, wp, lp) = LB_INITSTORAGE {items = SysWord.toInt wp, bytes = SysWord.toInt lp} | decompileMessage (0x01A9, _, lp) = LB_ITEMFROMPOINT {point = {x = loWord lp, y = hiWord lp }} | decompileMessage (0x0200, wp, lp) = decompileMouseMove(WM_MOUSEMOVE, wp, lp) | decompileMessage (0x0201, wp, lp) = decompileMouseMove(WM_LBUTTONDOWN, wp, lp) | decompileMessage (0x0202, wp, lp) = decompileMouseMove(WM_LBUTTONUP, wp, lp) | decompileMessage (0x0203, wp, lp) = decompileMouseMove(WM_LBUTTONDBLCLK, wp, lp) | decompileMessage (0x0204, wp, lp) = decompileMouseMove(WM_RBUTTONDOWN, wp, lp) | decompileMessage (0x0205, wp, lp) = decompileMouseMove(WM_RBUTTONUP, wp, lp) | decompileMessage (0x0206, wp, lp) = decompileMouseMove(WM_RBUTTONDBLCLK, wp, lp) | decompileMessage (0x0207, wp, lp) = decompileMouseMove(WM_MBUTTONDOWN, wp, lp) | decompileMessage (0x0208, wp, lp) = decompileMouseMove(WM_MBUTTONUP, wp, lp) | decompileMessage (0x0209, wp, lp) = decompileMouseMove(WM_MBUTTONDBLCLK, wp, lp) (* WM_MOUSEWHEEL 0x020A *) | decompileMessage (0x0210, wp, lp) = WM_PARENTNOTIFY { eventflag = loWord wp, idchild = hiWord wp, value = SysWord.toInt lp } | decompileMessage (0x0211, wp, _) = WM_ENTERMENULOOP { istrack= wp <> 0w0 } (* "0x0211" *) | decompileMessage (0x0212, wp, _) = WM_EXITMENULOOP { istrack= wp <> 0w0 } (* "0x0212" *) (* WM_NEXTMENU 0x0213 WM_SIZING 0x0214 *) | decompileMessage (0x0215, _, lp) = WM_CAPTURECHANGED { newCapture = toHWND lp } (* WM_MOVING 0x0216 WM_POWERBROADCAST 0x0218 WM_DEVICECHANGE 0x0219 *) | decompileMessage (0x0220, _, lp) = let val (class, title, hinst, x,y,cx,cy, style, lParam) = toMdiCreate lp in WM_MDICREATE { class = class, title = title, instance = hinst, x = x, y = y, cx = cx, cy = cy, style = style, cdata = lParam } end | decompileMessage (0x0221, wp, _) = WM_MDIDESTROY { child = toHWND wp } (* "0x0221" *) | decompileMessage (0x0223, wp, _) = WM_MDIRESTORE { child = toHWND wp } (* "0x0223" *) | decompileMessage (0x0224, wp, lp) = WM_MDINEXT { child = toHWND wp, flagnext = lp <> 0w0 } (* "0x0224" *) | decompileMessage (0x0225, wp, _) = WM_MDIMAXIMIZE { child = toHWND wp } (* "0x0225" *) | decompileMessage (0x0226, wp, _) = WM_MDITILE { tilingflag = fromCmdif(Word32.fromLargeWord wp) } (* "0x0226" *) | decompileMessage (0x0227, wp, _) = WM_MDICASCADE { skipDisabled = IntInf.andb((SysWord.toInt wp), 2) <> 0 } | decompileMessage (0x0228, _, _) = WM_MDIICONARRANGE | decompileMessage (0x0229, _, _) = WM_MDIGETACTIVE | decompileMessage (0x0230, wp, lp) = WM_MDISETMENU { frameMenu = toHMENU wp, windowMenu = toHMENU lp } (* "0x0230" *) | decompileMessage (0x0231, _, _) = WM_ENTERSIZEMOVE | decompileMessage (0x0232, _, _) = WM_EXITSIZEMOVE | decompileMessage (0x0233, wp, _) = WM_DROPFILES { hDrop = toHDROP wp } | decompileMessage (0x0234, _, _) = WM_MDIREFRESHMENU (* "0x0234" *) (* WM_IME_SETCONTEXT 0x0281 WM_IME_NOTIFY 0x0282 WM_IME_CONTROL 0x0283 WM_IME_COMPOSITIONFULL 0x0284 WM_IME_SELECT 0x0285 WM_IME_CHAR 0x0286 WM_IME_KEYDOWN 0x0290 WM_IME_KEYUP 0x0291 *) | decompileMessage (0x02A0, wp, lp) = WM_NCMOUSEHOVER { hitTest = toHitTest(SysWord.toInt wp), x = getXLParam lp, y = getYLParam lp } | decompileMessage (0x02A1, wp, lp) = decompileMouseMove(WM_MOUSEHOVER, wp, lp)(* "0x02A1" *) | decompileMessage (0x02A2, _, _) = WM_NCMOUSELEAVE (* "0x02A2" *) | decompileMessage (0x02A3, _, _) = WM_MOUSELEAVE (* "0x02A3" *) | decompileMessage (0x0300, _, _) = WM_CUT (* "0x0300" *) | decompileMessage (0x0301, _, _) = WM_COPY (* "0x0301" *) | decompileMessage (0x0302, _, _) = WM_PASTE (* "0x0302" *) | decompileMessage (0x0303, _, _) = WM_CLEAR (* "0x0303" *) | decompileMessage (0x0304, _, _) = WM_UNDO (* "0x0304" *) | decompileMessage (0x0305, wp, _) = WM_RENDERFORMAT { format = fromCcbf(SysWord.toInt wp) } (* "0x0305" *) | decompileMessage (0x0306, _, _) = WM_RENDERALLFORMATS (* "0x0306" *) | decompileMessage (0x0307, _, _) = WM_DESTROYCLIPBOARD (* "0x0307" *) | decompileMessage (0x0308, _, _) = WM_DRAWCLIPBOARD (* "0x0308" *) | decompileMessage (0x0309, wp, _) = WM_PAINTCLIPBOARD { clipboard = toHWND wp } (* "0x0309" *) | decompileMessage (0x030A, wp, lp) = WM_VSCROLLCLIPBOARD { viewer = toHWND wp, code = loWord lp, position = hiWord lp } (* "0x030A" *) | decompileMessage (0x030B, _, lp) = WM_SIZECLIPBOARD { viewer = toHWND lp } (* "0x030B" *) (* The format name is inserted by the window procedure so any incoming message won't have the information. Indeed the buffer may not have been initialised. *) | decompileMessage (0x030C, wp, _) = WM_ASKCBFORMATNAME { length = SysWord.toInt wp, formatName = ref "" } | decompileMessage (0x030D, wp, lp) = WM_CHANGECBCHAIN { removed = toHWND wp, next = toHWND lp } | decompileMessage (0x030E, wp, lp) = WM_HSCROLLCLIPBOARD { viewer = toHWND wp, code = loWord lp, position = hiWord lp } (* "0x030E" *) | decompileMessage (0x030F, _, _) = WM_QUERYNEWPALETTE (* "0x030F" *) | decompileMessage (0x0310, wp, _) = WM_PALETTEISCHANGING { realize = toHWND wp } (* "0x0310" *) | decompileMessage (0x0311, wp, _) = WM_PALETTECHANGED { palChg = toHWND wp } (* "0x0311" *) | decompileMessage (0x0312, wp, _) = WM_HOTKEY { id = SysWord.toInt wp } (* "0x0312" *) | decompileMessage (0x0317, wp, lp) = WM_PRINT { hdc = toHDC wp, flags = fromCwmpl(Word32.fromLargeWord lp) } | decompileMessage (0x0318, wp, lp) = WM_PRINTCLIENT { hdc = toHDC wp, flags = fromCwmpl(Word32.fromLargeWord lp) } | decompileMessage (m, wp, lp) = (* User, application and registered messages. *) (* Rich edit controls use WM_USER+37 to WM_USER+122. As and when we implement rich edit controls we may want to treat those messages specially. *) if m >= 0x0400 andalso m <= 0x7FFF then WM_USER { uMsg = m, wParam = wp, lParam = lp } else if m >= 0x8000 andalso m <= 0xBFFF then WM_APP { uMsg = m, wParam = wp, lParam = lp } else if m >= 0x8000 andalso m <= 0xFFFF then ( (* We could use PolyML.OnEntry or use a weak byte ref to initialise the registered messages. *) if m = RegisterMessage "commdlg_FindReplace" then FINDMSGSTRING(decompileFindMsg{wp=wp, lp=lp}) else WM_REGISTERED { uMsg = m, wParam = wp, lParam = lp } ) else (* Other system messages. *) WM_SYSTEM_OTHER { uMsg = m, wParam = wp, lParam = lp } fun btoi false = 0 | btoi true = 1 fun makeLong(x, y) = Word32.toLargeWord(MAKELONG(Word.fromInt x, Word.fromInt y)) (* If we return a string we need to ensure it's freed *) fun compileStringAsLp(code, wp, string) = let val s = toCstring string in (code, wp, fromAddr s, fn () => Memory.free s) end (* Requests for strings. Many of these don't pass the length as an argument. *) fun compileStringRequest(code, wparam, length) = let open Memory val mem = malloc(Word.fromInt length) in (code, wparam, fromAddr mem, fn () => free mem) end fun strAddrAsLp(code, wp, (addr, free)) = (code, wp, addr, free) fun noFree () = () fun compileMessage WM_NULL = (0x0000, 0w0: SysWord.word, 0w0: SysWord.word, noFree) | compileMessage (WM_CREATE args) = compileCreate(0x0001, args) | compileMessage WM_DESTROY = (0x0002, 0w0, 0w0, noFree) | compileMessage (WM_MOVE {x, y}) = (0x0003, 0w0, makeLong(x, y), noFree) | compileMessage (WM_SIZE {flag, width, height}) = (0x0005, fromWMSizeOpt flag, makeLong(width, height), noFree) | compileMessage (WM_ACTIVATE {active, minimize}) = (0x0006, Word32.toLargeWord(MAKELONG(fromWMactive active, if minimize then 0w1 else 0w1)), 0w0, noFree) | compileMessage (WM_SETFOCUS {losing}) = (0x0007, 0w0, fromHWND losing, noFree) | compileMessage (WM_KILLFOCUS {receivefocus}) = (0x0008, 0w0, fromHWND receivefocus, noFree) | compileMessage (WM_ENABLE {enabled}) = (0x000A, if enabled then 0w1 else 0w0, 0w0, noFree) | compileMessage (WM_SETREDRAW {redrawflag}) = (0x000B, if redrawflag then 0w1 else 0w0, 0w0, noFree) | compileMessage (WM_SETTEXT {text}) = compileStringAsLp(0x000C, 0w0, text) | compileMessage (WM_GETTEXT {length, ...}) = compileStringRequest(0x000D, SysWord.fromInt length, length) | compileMessage WM_GETTEXTLENGTH = (0x000E, 0w0, 0w0, noFree) | compileMessage WM_PAINT = (0x000F, 0w0, 0w0, noFree) | compileMessage WM_CLOSE = (0x0010, 0w0, 0w0, noFree) | compileMessage (WM_QUERYENDSESSION { source}) = (0x0011, SysWord.fromInt source, 0w0, noFree) | compileMessage (WM_QUIT {exitcode}) = (0x0012, SysWord.fromInt exitcode, 0w0, noFree) | compileMessage WM_QUERYOPEN = (0x0013, 0w0, 0w0, noFree) | compileMessage (WM_ERASEBKGND {devicecontext}) = (0x0014, 0w0, fromHDC devicecontext, noFree) | compileMessage WM_SYSCOLORCHANGE = (0x0015, 0w0, 0w0, noFree) | compileMessage (WM_ENDSESSION {endsession}) = (0x0016, SysWord.fromInt(btoi endsession), 0w0, noFree) | compileMessage (WM_SHOWWINDOW {showflag, statusflag}) = (0x0018, SysWord.fromInt(btoi showflag), SysWord.fromInt statusflag, noFree) | compileMessage (WM_DEVMODECHANGE {devicename}) = compileStringAsLp(0x001B, 0w0, devicename) | compileMessage (WM_ACTIVATEAPP {active, threadid}) = (0x001B, SysWord.fromInt(btoi active), SysWord.fromInt threadid, noFree) | compileMessage WM_FONTCHANGE = (0x001D, 0w0, 0w0, noFree) | compileMessage WM_TIMECHANGE = (0x001E, 0w0, 0w0, noFree) | compileMessage WM_CANCELMODE = (0x001F, 0w0, 0w0, noFree) | compileMessage (WM_SETCURSOR {cursorwindow, hitTest, mousemessage}) = (0x0020, fromHWND cursorwindow, makeLong(fromHitTest hitTest, mousemessage), noFree) | compileMessage (WM_MOUSEACTIVATE {parent, hitTest, message}) = (0x0021, fromHWND parent, makeLong(fromHitTest hitTest, message), noFree) | compileMessage WM_CHILDACTIVATE = (0x0022, 0w0, 0w0, noFree) | compileMessage WM_QUEUESYNC = (0x0023, 0w0, 0w0, noFree) | compileMessage(WM_GETMINMAXINFO args) = compileMinMax(0x0024, args) | compileMessage WM_PAINTICON = (0x0026, 0w0, 0w0, noFree) | compileMessage (WM_ICONERASEBKGND {devicecontext}) = (0x0027, fromHDC devicecontext, 0w0, noFree) | compileMessage (WM_NEXTDLGCTL {control, handleflag}) = (0x0028, SysWord.fromInt control, SysWord.fromInt(btoi handleflag), noFree) | compileMessage (WM_DRAWITEM { senderId, ctlType, ctlID, itemID, itemAction,itemState, hItem, hDC, rcItem, itemData}) = strAddrAsLp(0x002B, SysWord.fromInt senderId, fromMLDrawItem(ctlType, ctlID, itemID, itemAction,itemState, hItem, hDC,rcItem,itemData)) | compileMessage (WM_MEASUREITEM{ senderId, ctlType, ctlID, itemID, itemWidth=ref itemWidth, itemHeight=ref itemHeight, itemData}) = strAddrAsLp(0x002C, SysWord.fromInt senderId, fromMLMeasureItem(ctlType, ctlID, itemID, itemWidth, itemHeight, itemData)) | compileMessage (WM_DELETEITEM{ senderId, ctlType, ctlID, itemID, item, itemData}) = strAddrAsLp(0x002D, SysWord.fromInt senderId, fromMLDeleteItem(ctlType, ctlID, itemID, item, itemData)) | compileMessage (WM_VKEYTOITEM {virtualKey, caretpos, listbox}) = (0x002E, makeLong(virtualKey, caretpos), fromHWND listbox, noFree) | compileMessage (WM_CHARTOITEM {key, caretpos, listbox}) = (0x002F, makeLong(key, caretpos), fromHWND listbox, noFree) | compileMessage (WM_SETFONT {font, redrawflag}) = (0x0030, fromHFONT font, if redrawflag then 0w1 else 0w0, noFree) | compileMessage WM_GETFONT = (0x0031, 0w0, 0w0, noFree) | compileMessage (WM_SETHOTKEY {virtualKey}) = (0x0032, SysWord.fromInt virtualKey, 0w0, noFree) | compileMessage WM_GETHOTKEY = (0x0033, 0w0, 0w0, noFree) | compileMessage WM_QUERYDRAGICON = (0x0037, 0w0, 0w0, noFree) | compileMessage (WM_COMPAREITEM { controlid, ctlType, ctlID, hItem, itemID1,itemData1, itemID2,itemData2}) = let (* TODO: Perhaps we should have locale Id in the argument record. *) val LOCALE_USER_DEFAULT = 0x0400 in strAddrAsLp(0x0039, SysWord.fromInt controlid, fromMLCompareItem (ctlType, ctlID, hItem, itemID1, itemData1, itemID2, itemData2, LOCALE_USER_DEFAULT)) end | compileMessage (WM_WINDOWPOSCHANGING wpc) = mlToCWindowPosChanging(0x0046, wpc) | compileMessage (WM_WINDOWPOSCHANGED wpc) = mlToCWindowPosChanged(0x0047, wpc) | compileMessage (WM_POWER {powerevent}) = (0x0048, SysWord.fromInt powerevent, 0w0, noFree) | compileMessage WM_CANCELJOURNAL = (0x004B, 0w0, 0w0, noFree) | compileMessage (WM_NOTIFY {idCtrl, from, idFrom, notification}) = strAddrAsLp (0x004E, SysWord.fromInt idCtrl, compileNotification(from, idFrom, notification)) (* WM_INPUTLANGCHANGEREQUEST 0x0050 WM_INPUTLANGCHANGE 0x0051 WM_TCARD 0x0052 WM_USERCHANGED 0x0054 WM_NOTIFYFORMAT 0x0055 WM_STYLECHANGING 0x007C WM_STYLECHANGED 0x007D *) | compileMessage (WM_HELP args) = compileHelpInfo(0x0053, args) | compileMessage (WM_CONTEXTMENU { hwnd, xPos, yPos }) = (0x007B, fromHWND hwnd, makeLong(xPos, yPos), noFree) | compileMessage (WM_DISPLAYCHANGE { bitsPerPixel, xScreen, yScreen}) = (0x007E, SysWord.fromInt bitsPerPixel, makeLong(xScreen, yScreen), noFree) | compileMessage (WM_GETICON {big}) = (0x007F, SysWord.fromInt(btoi big), 0w0, noFree) | compileMessage (WM_SETICON { big, icon }) = (0x0080, SysWord.fromInt(btoi big), fromAddr(voidStarOfHandle icon), noFree) | compileMessage (WM_NCCREATE args) = compileCreate(0x0081, args) | compileMessage WM_NCDESTROY = (0x0082, 0w0, 0w0, noFree) | compileMessage (WM_NCCALCSIZE args) = compileNCCalcSize args | compileMessage (WM_NCHITTEST {x, y}) = (0x0084, 0w0, makeLong(x, y), noFree) | compileMessage (WM_NCPAINT {region}) = (0x0085, fromHRGN region, 0w0, noFree) | compileMessage (WM_NCACTIVATE {active}) = (0x0086, SysWord.fromInt(btoi active), 0w0, noFree) | compileMessage WM_GETDLGCODE = (0x0087, 0w0, 0w0, noFree) | compileMessage (WM_NCMOUSEMOVE {hitTest, x, y}) = (0x00A0, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCLBUTTONDOWN {hitTest, x, y}) = (0x00A1, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCLBUTTONUP {hitTest, x, y}) = (0x00A2, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCLBUTTONDBLCLK {hitTest, x, y}) = (0x00A3, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCRBUTTONDOWN {hitTest, x, y}) = (0x00A4, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCRBUTTONUP {hitTest, x, y}) = (0x00A5, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCRBUTTONDBLCLK {hitTest, x, y}) = (0x00A6, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCMBUTTONDOWN {hitTest, x, y}) = (0x00A7, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCMBUTTONUP {hitTest, x, y}) = (0x00A8, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_NCMBUTTONDBLCLK {hitTest, x, y}) = (0x00A9, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) (* Edit control messages *) | compileMessage (EM_GETSEL args) = compileGetSel(0x00B0, args) | compileMessage (EM_SETSEL{startPos, endPos}) = (0x00B1, SysWord.fromInt startPos, SysWord.fromInt endPos, noFree) | compileMessage (EM_GETRECT {rect=ref r}) = compileGetRect(0x00B2, 0w0, r) | compileMessage (EM_SETRECT {rect}) = compileSetRect(0x00B3, rect) | compileMessage (EM_SETRECTNP {rect}) = compileSetRect(0x00B4, rect) | compileMessage (EM_SCROLL{action}) = (0x00B5, Word.toLargeWord(toCsd action), 0w0, noFree) | compileMessage (EM_LINESCROLL{xScroll, yScroll}) = (0x00B6, SysWord.fromInt xScroll, SysWord.fromInt yScroll, noFree) | compileMessage EM_SCROLLCARET = (0x00B7, 0w0, 0w0, noFree) | compileMessage EM_GETMODIFY = (0x00B8, 0w0, 0w0, noFree) | compileMessage (EM_SETMODIFY{modified}) = (0x00B9, if modified then 0w1 else 0w0, 0w0, noFree) | compileMessage EM_GETLINECOUNT = (0x00BA, 0w0, 0w0, noFree) | compileMessage (EM_LINEINDEX{line}) = (0x00BB, SysWord.fromInt line, 0w0, noFree) (* EM_SETHANDLE 0x00BC *) | compileMessage EM_GETTHUMB = (0x00BE, 0w0, 0w0, noFree) | compileMessage (EM_LINELENGTH{index}) = (0x00BB, SysWord.fromInt index, 0w0, noFree) | compileMessage (EM_REPLACESEL{canUndo, text}) = compileStringAsLp(0x00C2, SysWord.fromInt(btoi canUndo), text) | compileMessage (EM_GETLINE args) = compileGetLine args | compileMessage (EM_LIMITTEXT{limit}) = (0x00C5, SysWord.fromInt limit, 0w0, noFree) | compileMessage EM_CANUNDO = (0x00C6, 0w0, 0w0, noFree) | compileMessage EM_UNDO = (0x00C7, 0w0, 0w0, noFree) | compileMessage (EM_FMTLINES{addEOL}) = (0x00C8, SysWord.fromInt(btoi addEOL), 0w0, noFree) | compileMessage (EM_LINEFROMCHAR{index}) = (0x00C9, SysWord.fromInt index, 0w0, noFree) | compileMessage (EM_SETTABSTOPS{tabs}) = compileTabStops(0x00CB, tabs) | compileMessage (EM_SETPASSWORDCHAR{ch}) = (0x00CC, SysWord.fromInt(ord ch), 0w0, noFree) | compileMessage EM_EMPTYUNDOBUFFER = (0x00CD, 0w0, 0w0, noFree) | compileMessage EM_GETFIRSTVISIBLELINE = (0x00CE, 0w0, 0w0, noFree) | compileMessage (EM_SETREADONLY{readOnly}) = (0x00CF, SysWord.fromInt(btoi readOnly), 0w0, noFree) (* EM_SETWORDBREAKPROC 0x00D0 EM_GETWORDBREAKPROC 0x00D1 *) | compileMessage EM_GETPASSWORDCHAR = (0x00D2, 0w0, 0w0, noFree) | compileMessage (EM_SETMARGINS{margins}) = ( case margins of UseFontInfo => (0x00D3, SysWord.fromInt 0xffff, 0w0, noFree) | Margins{left, right} => let val (b0, lo) = case left of SOME l => (0w1, l) | NONE => (0w0, 0) val (b1, hi) = case right of SOME r => (0w2, r) | NONE => (0w0, 0) in (0x00D3, SysWord.orb(b0, b1), makeLong(hi,lo), noFree) end ) | compileMessage EM_GETMARGINS = (0x00D4, 0w0, 0w0, noFree) (* Returns margins in lResult *) | compileMessage EM_GETLIMITTEXT = (0x00D5, 0w0, 0w0, noFree) | compileMessage (EM_POSFROMCHAR {index}) = (0x00D6, SysWord.fromInt index, 0w0, noFree) | compileMessage (EM_CHARFROMPOS arg) = let val (lParam, toFree) = case arg of EMcfpEdit{x,y} => (makeLong(x, y), noFree) | EMcfpRichEdit pt => makePointStructAddr pt | EMcfpUnknown lp => (lp, noFree) in (0x00D7, 0w0, lParam, toFree) end (* Scroll bar messages *) | compileMessage (SBM_SETPOS {pos, redraw}) = (0x00E0, SysWord.fromInt pos, SysWord.fromInt(btoi redraw), noFree) | compileMessage SBM_GETPOS = (0x00E1, 0w0, 0w0, noFree) | compileMessage (SBM_SETRANGE {minPos, maxPos}) = (0x00E2, SysWord.fromInt minPos, SysWord.fromInt maxPos, noFree) | compileMessage (SBM_SETRANGEREDRAW {minPos, maxPos}) = (0x00E6, SysWord.fromInt minPos, SysWord.fromInt maxPos, noFree) | compileMessage (SBM_GETRANGE _) = let (* An application should use GetScrollRange rather than sending this.*) open Memory (* We need to allocate two ints and pass their addresses *) val mem = malloc(0w2 * sizeInt) infix 6 ++ in (0x00E3, fromAddr mem, fromAddr(mem ++ sizeInt), fn () => free mem) end | compileMessage (SBM_ENABLE_ARROWS flags) = (0x00E4, SysWord.fromInt(toCesbf flags), 0w0, noFree) | compileMessage (SBM_SETSCROLLINFO {info, options}) = strAddrAsLp(0x00E9, 0w0, fromScrollInfo(info, options)) | compileMessage (SBM_GETSCROLLINFO {info = ref info, options}) = strAddrAsLp(0x00EA, 0w0, fromScrollInfo(info, options)) (* Button control messages *) | compileMessage BM_GETCHECK = (0x00F0, 0w0, 0w0, noFree) | compileMessage (BM_SETCHECK{state}) = (0x00F1, SysWord.fromInt state, 0w0, noFree) | compileMessage BM_GETSTATE = (0x00F2, 0w0, 0w0, noFree) | compileMessage (BM_SETSTATE{highlight}) = (0x00F3, SysWord.fromInt(btoi highlight), 0w0, noFree) | compileMessage (BM_SETSTYLE{redraw, style}) = (0x00F3, SysWord.fromInt(LargeWord.toInt(Style.toWord style)), SysWord.fromInt(btoi redraw), noFree) | compileMessage BM_CLICK = (0x00F5, 0w0, 0w0, noFree) | compileMessage (BM_GETIMAGE{imageType}) = (0x00F6, SysWord.fromInt(toCit imageType), 0w0, noFree) | compileMessage (BM_SETIMAGE{imageType, image}) = (0x00F7, SysWord.fromInt(toCit imageType), fromHGDIOBJ image, noFree) | compileMessage (WM_KEYDOWN {virtualKey, data}) = (0x0100, SysWord.fromInt virtualKey, Word32.toLargeWord data, noFree) | compileMessage (WM_KEYUP {virtualKey, data}) = (0x0101, SysWord.fromInt virtualKey, Word32.toLargeWord data, noFree) | compileMessage (WM_CHAR {charCode, data}) = (0x0102, SysWord.fromInt(ord charCode), Word32.toLargeWord data, noFree) | compileMessage (WM_DEADCHAR {charCode, data}) = (0x0103, SysWord.fromInt(ord charCode), Word32.toLargeWord data, noFree) | compileMessage (WM_SYSKEYDOWN {virtualKey, data}) = (0x0104, SysWord.fromInt virtualKey, Word32.toLargeWord data, noFree) | compileMessage (WM_SYSKEYUP {virtualKey, data}) = (0x0105, SysWord.fromInt virtualKey, Word32.toLargeWord data, noFree) | compileMessage (WM_SYSCHAR {charCode, data}) = (0x0106, SysWord.fromInt(ord charCode), Word32.toLargeWord data, noFree) | compileMessage (WM_SYSDEADCHAR {charCode, data}) = (0x0107, SysWord.fromInt(ord charCode), Word32.toLargeWord data, noFree) (* WM_IME_STARTCOMPOSITION 0x010D WM_IME_ENDCOMPOSITION 0x010E WM_IME_COMPOSITION 0x010F WM_IME_KEYLAST 0x010F *) | compileMessage (WM_INITDIALOG { dialog, initdata}) = (0x0110, fromHWND dialog, SysWord.fromInt initdata, noFree) | compileMessage (WM_COMMAND {notifyCode, wId, control}) = (0x0111, makeLong(wId, notifyCode), fromHWND control, noFree) | compileMessage (WM_SYSCOMMAND {commandvalue, sysBits, p={x,y}}) = (0x0112, SysWord.fromInt(IntInf.orb(sysBits, fromSysCommand commandvalue)), makeLong(x,y), noFree) | compileMessage (WM_TIMER {timerid}) = (0x0113, SysWord.fromInt timerid, 0w0, noFree) | compileMessage (WM_HSCROLL {value, position, scrollbar}) = (0x0114, makeLong(Word.toInt(toCsd value), position), fromHWND scrollbar, noFree) | compileMessage (WM_VSCROLL {value, position, scrollbar}) = (0x0115, makeLong(Word.toInt(toCsd value), position), fromHWND scrollbar, noFree) | compileMessage (WM_INITMENU {menu}) = (0x0116, fromHMENU menu, 0w0, noFree) | compileMessage (WM_INITMENUPOPUP {menupopup, itemposition, isSystemMenu}) = (0x0117, fromHMENU menupopup, makeLong(itemposition, btoi isSystemMenu), noFree) | compileMessage (WM_MENUSELECT {menuitem, menuflags, menu}) = (0x011F, makeLong(menuitem, Word32.toInt(MenuBase.fromMenuFlagSet menuflags)), fromHMENU menu, noFree) | compileMessage (WM_MENUCHAR { ch, menuflag, menu}) = (0x0120, makeLong(ord ch, Word32.toInt(MenuBase.fromMenuFlag menuflag)), fromHMENU menu, noFree) | compileMessage (WM_ENTERIDLE { flag, window}) = (0x0121, SysWord.fromInt flag, fromHWND window, noFree) | compileMessage (WM_CTLCOLORMSGBOX { displaycontext, messagebox}) = (0x0132, fromHDC displaycontext, fromHWND messagebox, noFree) | compileMessage (WM_CTLCOLOREDIT { displaycontext, editcontrol}) = (0x0133, fromHDC displaycontext, fromHWND editcontrol, noFree) | compileMessage (WM_CTLCOLORLISTBOX { displaycontext, listbox}) = (0x0134, fromHDC displaycontext, fromHWND listbox, noFree) | compileMessage (WM_CTLCOLORBTN { displaycontext, button}) = (0x0135, fromHDC displaycontext, fromHWND button, noFree) | compileMessage (WM_CTLCOLORDLG { displaycontext, dialogbox}) = (0x0136, fromHDC displaycontext, fromHWND dialogbox, noFree) | compileMessage (WM_CTLCOLORSCROLLBAR { displaycontext, scrollbar}) = (0x0137, fromHDC displaycontext, fromHWND scrollbar, noFree) | compileMessage (WM_CTLCOLORSTATIC { displaycontext, staticcontrol}) = (0x0138, fromHDC displaycontext, fromHWND staticcontrol, noFree) (* Combobox messages. *) | compileMessage (CB_GETEDITSEL args) = compileGetSel(0x0140, args) | compileMessage (CB_LIMITTEXT{limit}) = (0x0141, SysWord.fromInt limit, 0w0, noFree) | compileMessage (CB_SETEDITSEL{startPos, endPos}) = (0x0142, 0w0, makeLong(startPos, endPos), noFree) | compileMessage (CB_ADDSTRING{text}) = compileStringAsLp(0x0143, 0w0, text) | compileMessage (CB_DELETESTRING{index}) = (0x0144, SysWord.fromInt index, 0w0, noFree) | compileMessage (CB_DIR{attrs, fileSpec}) = compileStringAsLp(0x0145, Word32.toLargeWord(toCcbal attrs), fileSpec) | compileMessage CB_GETCOUNT = (0x0146, 0w0, 0w0, noFree) | compileMessage CB_GETCURSEL = (0x0147, 0w0, 0w0, noFree) | compileMessage (CB_GETLBTEXT {length, index, ...}) = compileStringRequest(0x0148, SysWord.fromInt index, length) | compileMessage (CB_GETLBTEXTLEN{index}) = (0x0149, SysWord.fromInt index, 0w0, noFree) | compileMessage (CB_INSERTSTRING{text, index}) = compileStringAsLp(0x014A, SysWord.fromInt index, text) | compileMessage CB_RESETCONTENT = (0x014B, 0w0, 0w0, noFree) | compileMessage (CB_FINDSTRING{text, indexStart}) = compileStringAsLp(0x014C, SysWord.fromInt indexStart, text) | compileMessage (CB_SELECTSTRING{text, indexStart}) = compileStringAsLp(0x014D, SysWord.fromInt indexStart, text) | compileMessage (CB_SETCURSEL{index}) = (0x014E, SysWord.fromInt index, 0w0, noFree) | compileMessage (CB_SHOWDROPDOWN{show}) = (0x014F, SysWord.fromInt(btoi show), 0w0, noFree) | compileMessage (CB_GETITEMDATA{index}) = (0x0150, SysWord.fromInt index, 0w0, noFree) | compileMessage (CB_SETITEMDATA{index, data}) = (0x0151, SysWord.fromInt index, SysWord.fromInt data, noFree) | compileMessage (CB_GETDROPPEDCONTROLRECT {rect=ref rect}) = compileGetRect(0x0152, 0w0, rect) | compileMessage (CB_SETITEMHEIGHT{index, height}) = (0x0153, SysWord.fromInt index, SysWord.fromInt height, noFree) | compileMessage (CB_GETITEMHEIGHT{index}) = (0x0154, SysWord.fromInt index, 0w0, noFree) | compileMessage (CB_SETEXTENDEDUI{extended}) = (0x0155, SysWord.fromInt(btoi extended), 0w0, noFree) | compileMessage CB_GETEXTENDEDUI = (0x0156, 0w0, 0w0, noFree) | compileMessage CB_GETDROPPEDSTATE = (0x0157, 0w0, 0w0, noFree) | compileMessage (CB_FINDSTRINGEXACT{text, indexStart}) = compileStringAsLp(0x0158, SysWord.fromInt indexStart, text) | compileMessage (CB_SETLOCALE{locale}) = (0x0159, SysWord.fromInt locale, 0w0, noFree) | compileMessage CB_GETLOCALE = (0x015A, 0w0, 0w0, noFree) | compileMessage CB_GETTOPINDEX = (0x015b, 0w0, 0w0, noFree) | compileMessage (CB_SETTOPINDEX{index}) = (0x015c, SysWord.fromInt index, 0w0, noFree) | compileMessage CB_GETHORIZONTALEXTENT = (0x015d, 0w0, 0w0, noFree) | compileMessage (CB_SETHORIZONTALEXTENT{extent}) = (0x015e, SysWord.fromInt extent, 0w0, noFree) | compileMessage CB_GETDROPPEDWIDTH = (0x015f, 0w0, 0w0, noFree) | compileMessage (CB_SETDROPPEDWIDTH{width}) = (0x0160, SysWord.fromInt width, 0w0, noFree) | compileMessage (CB_INITSTORAGE{items, bytes}) = (0x0161, SysWord.fromInt items, SysWord.fromInt bytes, noFree) (* Static control messages. *) | compileMessage (STM_SETICON{icon}) = (0x0170, fromHICON icon, 0w0, noFree) | compileMessage STM_GETICON = (0x0171, 0w0, 0w0, noFree) | compileMessage (STM_SETIMAGE{imageType, image}) = (0x0172, SysWord.fromInt(toCit imageType), fromHGDIOBJ image, noFree) | compileMessage (STM_GETIMAGE{imageType}) = (0x0173, SysWord.fromInt(toCit imageType), 0w0, noFree) (* Listbox messages *) | compileMessage (LB_ADDSTRING{text}) = compileStringAsLp(0x0180, 0w0, text) | compileMessage (LB_INSERTSTRING{text, index}) = compileStringAsLp(0x0181, SysWord.fromInt index, text) | compileMessage (LB_DELETESTRING{index}) = (0x0182, SysWord.fromInt index, 0w0, noFree) | compileMessage (LB_SELITEMRANGEEX{first, last}) = (0x0183, SysWord.fromInt first, SysWord.fromInt last, noFree) | compileMessage LB_RESETCONTENT = (0x0184, 0w0, 0w0, noFree) | compileMessage (LB_SETSEL{select, index}) = (0x0185, SysWord.fromInt(btoi select), SysWord.fromInt index, noFree) | compileMessage (LB_SETCURSEL{index}) = (0x0186, SysWord.fromInt index, 0w0, noFree) | compileMessage (LB_GETSEL{index}) = (0x0187, SysWord.fromInt index, 0w0, noFree) | compileMessage LB_GETCURSEL = (0x0188, 0w0, 0w0, noFree) | compileMessage (LB_GETTEXT {length, index, ...}) = compileStringRequest(0x0189, SysWord.fromInt index, length) | compileMessage (LB_GETTEXTLEN{index}) = (0x018A, SysWord.fromInt index, 0w0, noFree) | compileMessage LB_GETCOUNT = (0x018B, 0w0, 0w0, noFree) | compileMessage (LB_SELECTSTRING{text, indexStart}) = compileStringAsLp(0x018C, SysWord.fromInt indexStart, text) | compileMessage (LB_DIR{attrs, fileSpec}) = compileStringAsLp(0x018D, Word32.toLargeWord(toCcbal attrs), fileSpec) | compileMessage LB_GETTOPINDEX = (0x018E, 0w0, 0w0, noFree) | compileMessage (LB_FINDSTRING{text, indexStart}) = compileStringAsLp (0x018F, SysWord.fromInt indexStart, text) | compileMessage LB_GETSELCOUNT = (0x0190, 0w0, 0w0, noFree) | compileMessage (LB_GETSELITEMS args) = compileGetSelItems(0x0191, args) | compileMessage (LB_SETTABSTOPS{tabs}) = compileTabStops(0x0192, tabs) | compileMessage LB_GETHORIZONTALEXTENT = (0x0193, 0w0, 0w0, noFree) | compileMessage (LB_SETHORIZONTALEXTENT{extent}) = (0x0194, SysWord.fromInt extent, 0w0, noFree) | compileMessage (LB_SETCOLUMNWIDTH{column}) = (0x0195, SysWord.fromInt column, 0w0, noFree) | compileMessage (LB_ADDFILE{fileName}) = compileStringAsLp(0x0196, 0w0, fileName) | compileMessage (LB_SETTOPINDEX{index}) = (0x0197, SysWord.fromInt index, 0w0, noFree) | compileMessage (LB_GETITEMRECT{rect=ref rect, index}) = compileGetRect(0x0198, SysWord.fromInt index, rect) | compileMessage (LB_GETITEMDATA{index}) = (0x0199, SysWord.fromInt index, 0w0, noFree) | compileMessage (LB_SETITEMDATA{index, data}) = (0x019A, SysWord.fromInt index, SysWord.fromInt data, noFree) | compileMessage (LB_SELITEMRANGE{select, first, last}) = (0x019B, SysWord.fromInt(btoi select), makeLong(first, last), noFree) | compileMessage (LB_SETANCHORINDEX{index}) = (0x019C, SysWord.fromInt index, 0w0, noFree) | compileMessage LB_GETANCHORINDEX = (0x019D, 0w0, 0w0, noFree) | compileMessage (LB_SETCARETINDEX{index, scroll}) = (0x019E, SysWord.fromInt index, SysWord.fromInt(btoi scroll), noFree) | compileMessage LB_GETCARETINDEX = (0x019F, 0w0, 0w0, noFree) | compileMessage (LB_SETITEMHEIGHT{index, height}) = (0x01A0, SysWord.fromInt index, makeLong(height, 0), noFree) | compileMessage (LB_GETITEMHEIGHT{index}) = (0x01A1, SysWord.fromInt index, 0w0, noFree) | compileMessage (LB_FINDSTRINGEXACT{text, indexStart}) = compileStringAsLp(0x01A2, SysWord.fromInt indexStart, text) | compileMessage (LB_SETLOCALE{locale}) = (0x01A5, SysWord.fromInt locale, 0w0, noFree) | compileMessage LB_GETLOCALE = (0x01A6, 0w0, 0w0, noFree) | compileMessage (LB_SETCOUNT{items}) = (0x01A7, SysWord.fromInt items, 0w0, noFree) | compileMessage (LB_INITSTORAGE{items, bytes}) = (0x01A8, SysWord.fromInt items, SysWord.fromInt bytes, noFree) | compileMessage (LB_ITEMFROMPOINT { point = {x, y}}) = (0x01A9, 0w0, makeLong(x,y), noFree) | compileMessage (WM_MOUSEMOVE margs) = compileMouseMove(0x0200, margs) | compileMessage (WM_LBUTTONDOWN margs) = compileMouseMove(0x0201, margs) | compileMessage (WM_LBUTTONUP margs) = compileMouseMove(0x0202, margs) | compileMessage (WM_LBUTTONDBLCLK margs) = compileMouseMove(0x0203, margs) | compileMessage (WM_RBUTTONDOWN margs) = compileMouseMove(0x0204, margs) | compileMessage (WM_RBUTTONUP margs) = compileMouseMove(0x0205, margs) | compileMessage (WM_RBUTTONDBLCLK margs) = compileMouseMove(0x0206, margs) | compileMessage (WM_MBUTTONDOWN margs) = compileMouseMove(0x0207, margs) | compileMessage (WM_MBUTTONUP margs) = compileMouseMove(0x0208, margs) | compileMessage (WM_MBUTTONDBLCLK margs) = compileMouseMove(0x0209, margs) (* WM_MOUSEWHEEL 0x020A *) | compileMessage (WM_PARENTNOTIFY { eventflag, idchild, value}) = (0x0210, makeLong(eventflag,idchild), SysWord.fromInt value, noFree) | compileMessage (WM_ENTERMENULOOP {istrack}) = (0x0211, SysWord.fromInt(btoi istrack), 0w0, noFree) | compileMessage (WM_EXITMENULOOP {istrack}) = (0x0212, SysWord.fromInt(btoi istrack), 0w0, noFree) (* WM_NEXTMENU 0x0213 WM_SIZING 0x0214 *) | compileMessage (WM_CAPTURECHANGED {newCapture}) = (0x0215, 0w0, fromHWND newCapture, noFree) (* WM_MOVING 0x0216 WM_POWERBROADCAST 0x0218 WM_DEVICECHANGE 0x0219 *) | compileMessage (WM_MDICREATE{class, title, instance, x, y, cx, cy, style, cdata}) = strAddrAsLp (0x0220, 0w0, fromMdiCreate(class,title,instance,x,y,cx,cy,style,cdata)) | compileMessage (WM_MDIDESTROY{child}) = (0x0221, fromHWND child, 0w0, noFree) | compileMessage (WM_MDIRESTORE{child}) = (0x0223, fromHWND child, 0w0, noFree) | compileMessage (WM_MDINEXT{child, flagnext}) = (0x0224, fromHWND child, SysWord.fromInt(btoi flagnext), noFree) | compileMessage (WM_MDIMAXIMIZE{child}) = (0x0225, fromHWND child, 0w0, noFree) | compileMessage (WM_MDITILE{tilingflag}) = (0x0226, Word32.toLargeWord(toCmdif tilingflag), 0w0, noFree) | compileMessage (WM_MDICASCADE{skipDisabled}) = (0x0227, SysWord.fromInt(if skipDisabled then 2 else 0), 0w0, noFree) | compileMessage WM_MDIICONARRANGE = (0x0228, 0w0, 0w0, noFree) | compileMessage WM_MDIGETACTIVE = (0x0229, 0w0, 0w0 (* MUST be null *), noFree) | compileMessage (WM_MDISETMENU{frameMenu, windowMenu}) = (0x0230, fromHMENU frameMenu, fromHMENU windowMenu, noFree) | compileMessage WM_ENTERSIZEMOVE = (0x0231, 0w0, 0w0, noFree) | compileMessage WM_EXITSIZEMOVE = (0x0232, 0w0, 0w0, noFree) | compileMessage (WM_DROPFILES{hDrop}) = (0x0233, fromHDROP hDrop, 0w0, noFree) | compileMessage WM_MDIREFRESHMENU = (0x0234, 0w0, 0w0, noFree) (* WM_IME_SETCONTEXT 0x0281 WM_IME_NOTIFY 0x0282 WM_IME_CONTROL 0x0283 WM_IME_COMPOSITIONFULL 0x0284 WM_IME_SELECT 0x0285 WM_IME_CHAR 0x0286 WM_IME_KEYDOWN 0x0290 WM_IME_KEYUP 0x0291 *) | compileMessage (WM_NCMOUSEHOVER {hitTest, x, y}) = (0x02A0, SysWord.fromInt(fromHitTest hitTest), makeXYParam(x, y), noFree) | compileMessage (WM_MOUSEHOVER margs) = compileMouseMove(0x02A1, margs) | compileMessage WM_NCMOUSELEAVE = (0x02A2, 0w0, 0w0, noFree) | compileMessage WM_MOUSELEAVE = (0x02A3, 0w0, 0w0, noFree) | compileMessage WM_CUT = (0x0300, 0w0, 0w0, noFree) | compileMessage WM_COPY = (0x0301, 0w0, 0w0, noFree) | compileMessage WM_PASTE = (0x0302, 0w0, 0w0, noFree) | compileMessage WM_CLEAR = (0x0303, 0w0, 0w0, noFree) | compileMessage WM_UNDO = (0x0304, 0w0, 0w0, noFree) | compileMessage (WM_RENDERFORMAT {format}) = (0x0305, SysWord.fromInt(toCcbf format), 0w0, noFree) | compileMessage WM_RENDERALLFORMATS = (0x0306, 0w0, 0w0, noFree) | compileMessage WM_DESTROYCLIPBOARD = (0x0307, 0w0, 0w0, noFree) | compileMessage WM_DRAWCLIPBOARD = (0x0308, 0w0, 0w0, noFree) | compileMessage (WM_PAINTCLIPBOARD{clipboard}) = (0x030A, fromHWND clipboard, 0w0, noFree) | compileMessage (WM_VSCROLLCLIPBOARD{viewer, code, position}) = (0x030A, fromHWND viewer, makeLong(code, position), noFree) | compileMessage (WM_SIZECLIPBOARD{viewer}) = (0x030B, 0w0, fromHWND viewer, noFree) | compileMessage (WM_ASKCBFORMATNAME {length, ...}) = compileStringRequest(0x030C, SysWord.fromInt length, length) | compileMessage (WM_CHANGECBCHAIN{removed, next}) = (0x030D, fromHWND removed, fromHWND next, noFree) | compileMessage (WM_HSCROLLCLIPBOARD{viewer, code, position}) = (0x030E, fromHWND viewer, makeLong(code, position), noFree) | compileMessage WM_QUERYNEWPALETTE = (0x030F, 0w0, 0w0, noFree) | compileMessage (WM_PALETTEISCHANGING{realize}) = (0x0310, fromHWND realize, 0w0, noFree) | compileMessage (WM_PALETTECHANGED{palChg}) = (0x0311, fromHWND palChg, 0w0, noFree) | compileMessage (WM_HOTKEY{id}) = (0x0312, SysWord.fromInt id, 0w0, noFree) | compileMessage (WM_PRINT{hdc, flags}) = (0x0317, fromHDC hdc, Word32.toLargeWord(toCwmpl flags), noFree) | compileMessage (WM_PRINTCLIENT{hdc, flags}) = (0x0318, fromHDC hdc, Word32.toLargeWord(toCwmpl flags), noFree) | compileMessage (FINDMSGSTRING args) = compileFindMsg args | compileMessage (WM_SYSTEM_OTHER{uMsg, wParam, lParam}) = (uMsg, wParam, lParam, noFree) | compileMessage (WM_USER{uMsg, wParam, lParam}) = (uMsg, wParam, lParam, noFree) | compileMessage (WM_APP{uMsg, wParam, lParam}) = (uMsg, wParam, lParam, noFree) | compileMessage (WM_REGISTERED{uMsg, wParam, lParam}) = (uMsg, wParam, lParam, noFree) local val msgStruct = cStruct6(cHWND, cUint, cUINT_PTRw, cUINT_PTRw, cDWORD, cPoint) val { load=loadMsg, store=storeMsg, ctype={size=msgSize, ... }, ... } = breakConversion msgStruct in (* Store the address of the message in the memory. *) fun storeMessage(v: voidStar, {msg, hwnd, time, pt}: MSG) = let val (msgId: int, wParam, lParam, freeMem) = compileMessage msg val mem = Memory.malloc msgSize val f = storeMsg(mem, (hwnd, msgId, wParam, lParam, Time.toMilliseconds time, pt)) in setAddress(v, 0w0, mem); fn () => (freeMem(); f(); Memory.free mem) end fun loadMessage(v: voidStar): MSG = let val (hWnd, msgId, wParam, lParam, t, pt) = loadMsg v val msg = decompileMessage(msgId, wParam, lParam) val () = case msg of WM_USER _ => TextIO.print(Int.toString msgId ^ "\n") | _ => () in { msg = msg, hwnd = hWnd, time = Time.fromMilliseconds t, pt = pt } end val LPMSG: MSG conversion = makeConversion { load = loadMessage, store = storeMessage, ctype=LowLevel.cTypePointer } val msgSize = msgSize end (* Update the lParam/wParam values from the values in a returned message. This is needed if an ML callback makes a modification that has to be passed back to C. *) (* TODO: The rest of these. *) local fun copyString(_, _, 0) = () (* If the length is zero do nothing *) | copyString(ptr: voidStar, s: string, length: int) = let open Memory fun copyChar(i, c) = if i < length then set8(ptr, Word.fromInt i, Byte.charToByte c) else () in CharVector.appi copyChar s; (* Null terminate either at the end of the string or the buffer *) set8(ptr, Word.fromInt(Int.min(size s + 1, length-1)), 0w0) end in fun updateParamsFromMessage(msg: Message, wp: SysWord.word, lp: SysWord.word): unit = case msg of WM_GETTEXT{text = ref t, ...} => copyString(toAddr lp, t, SysWord.toInt wp) | WM_ASKCBFORMATNAME{formatName = ref t, ...} => copyString(toAddr lp, t, SysWord.toInt wp) | EM_GETLINE{result = ref t, size, ...} => copyString(toAddr lp, t, size) | EM_GETRECT {rect = ref r} => toCrect(toAddr lp, r) | EM_GETSEL args => updateGetSelParms({wp=wp, lp=lp}, args) | CB_GETEDITSEL args => updateGetSelParms({wp=wp, lp=lp}, args) | CB_GETLBTEXT {text = ref t, length, ...} => copyString(toAddr lp, t, length) | CB_GETDROPPEDCONTROLRECT {rect = ref r} => toCrect(toAddr lp, r) | SBM_GETRANGE {minPos=ref minPos, maxPos=ref maxPos} => (ignore(storeInt(toAddr wp, minPos)); ignore(storeInt(toAddr lp, maxPos))) | SBM_GETSCROLLINFO args => updateScrollInfo({wp=wp, lp=lp}, args) | LB_GETTEXT {text = ref t, length, ...} => copyString(toAddr lp, t, length) | LB_GETSELITEMS args => updateGetSelItemsParms({wp=wp, lp=lp}, args) | LB_GETITEMRECT{rect = ref r, ...} => toCrect(toAddr lp, r) | WM_NCCALCSIZE { newrect = ref r, ...} => toCrect(toAddr lp, r) (* This sets the first rect *) | WM_MEASUREITEM args => updateMeasureItemParms({wp=wp, lp=lp}, args) | WM_GETMINMAXINFO args => updateMinMaxParms({wp=wp, lp=lp}, args) | WM_WINDOWPOSCHANGING args => updateWindowPosChangingParms({wp=wp, lp=lp}, args) (* | WM_NOTIFY{ notification=TTN_GETDISPINFO(ref s), ...} => (* This particular notification allows the result to be fed back in several ways. We copy into the char array. *) assign charArray80 (offset 1 (Cpointer Cvoid) (offset 1 nmhdr (deref lp))) (toCcharArray80 s) *) | _ => () end (* Update the message contents from the values of wParam/lParam. This is used when a message has been sent or passed into C code that may have updated the message contents. Casts certain message results to HGDIOBJ. *) fun messageReturnFromParams(msg: Message, wp: SysWord.word, lp: SysWord.word, reply: SysWord.word): LRESULT = let val () = (* For certain messages we need to extract the reply from the arguments. *) case msg of WM_GETTEXT{text, ...} => text := (if reply = 0w0 then "" else fromCstring(toAddr lp)) | WM_ASKCBFORMATNAME{formatName, ...} => formatName := (if reply = 0w0 then "" else fromCstring(toAddr lp)) | EM_GETLINE{result, ...} => result := (if reply = 0w0 then "" else fromCstring(toAddr lp)) | EM_GETRECT { rect } => rect := fromCrect(toAddr lp) | EM_GETSEL args => updateGetSelFromWpLp(args, {wp=wp, lp=lp}) | CB_GETEDITSEL args => updateGetSelFromWpLp(args, {wp=wp, lp=lp}) | CB_GETLBTEXT {text, ...} => text := (if reply = 0w0 then "" else fromCstring(toAddr lp)) | CB_GETDROPPEDCONTROLRECT { rect } => rect := fromCrect(toAddr lp) | SBM_GETRANGE {minPos, maxPos} => (minPos := loadInt(toAddr wp); maxPos := loadInt(toAddr lp)) | SBM_GETSCROLLINFO {info, ...} => let val ({minPos, maxPos, pageSize, pos, trackPos}, _) = toScrollInfo lp in info := {minPos = minPos, maxPos = maxPos, pageSize = pageSize, pos = pos, trackPos = trackPos} end | LB_GETTEXT {text, ...} => text := (if reply = 0w0 then "" else fromCstring(toAddr lp)) | LB_GETSELITEMS args => updateGetSelItemsFromWpLp(args, {wp=wp, lp=lp, reply=reply}) | LB_GETITEMRECT{rect, ...} => rect := fromCrect(toAddr lp) (* This also has an item index *) | WM_NCCALCSIZE { newrect, ...} => (* Whatever the value of "validarea" we just look at the first rectangle. *) newrect := fromCrect (toAddr lp) | WM_GETMINMAXINFO args => updateMinMaxFromWpLp(args, {wp=wp, lp=lp}) | WM_WINDOWPOSCHANGING wpCh => updateCfromMLwmWindowPosChanging({wp=wp, lp=lp}, wpCh) | WM_MEASUREITEM args => updateMeasureItemFromWpLp(args, {wp=wp, lp=lp}) | _ => () val fromHgdi = handleOfVoidStar o toAddr in (* We need to "cast" some of the results. *) case msg of WM_GETFONT => LRESHANDLE(fromHgdi reply) | WM_GETICON _ => LRESHANDLE(fromHgdi reply) | WM_SETICON _ => LRESHANDLE(fromHgdi reply) | BM_GETIMAGE _ => LRESHANDLE(fromHgdi reply) | BM_SETIMAGE _ => LRESHANDLE(fromHgdi reply) | STM_GETICON => LRESHANDLE(fromHgdi reply) | STM_GETIMAGE _ => LRESHANDLE(fromHgdi reply) | STM_SETICON _ => LRESHANDLE(fromHgdi reply) | STM_SETIMAGE _ => LRESHANDLE(fromHgdi reply) | _ => LRESINT (SysWord.toInt reply) end (* Window callback table. *) local type callback = HWND * int * SysWord.word * SysWord.word -> SysWord.word (* *) datatype tableEntry = TableEntry of {hWnd: HWND, callBack: callback} (* Windows belong to the thread that created them so each thread has its own list of windows. Any thread could have one outstanding callback waiting to be assigned to a window that is being created. *) val threadWindows = Universal.tag(): tableEntry list Universal.tag val threadOutstanding = Universal.tag(): callback option Universal.tag (* This message is used to test if we are using the Poly callback. We use the same number as MFC uses so it's unlikely that any Windows class will use this. *) val WMTESTPOLY = 0x0360 fun getWindowList (): tableEntry list = getOpt (Thread.Thread.getLocal threadWindows, []) and setWindowList(t: tableEntry list): unit = Thread.Thread.setLocal(threadWindows, t) fun getOutstanding(): callback option = Option.join(Thread.Thread.getLocal threadOutstanding) and setOutstanding(t: callback option): unit = Thread.Thread.setLocal(threadOutstanding, t) (* Get the callback for this window. If it's the first time we've had a message for this window we need to use the outstanding callback. *) fun getCallback(hw: HWND): callback = case List.find (fn (TableEntry{hWnd, ...}) => hw = hWnd) (getWindowList ()) of SOME(TableEntry{callBack, ...}) => callBack | NONE => (* See if this has just been set up. *) (case getOutstanding() of SOME cb => (* It has. We now know the window handle so link it up. *) ( setWindowList(TableEntry{hWnd=hw, callBack=cb} :: getWindowList ()); setOutstanding NONE; cb ) | NONE => raise Fail "No callback found" ) fun removeCallback(hw: HWND): unit = setWindowList(List.filter (fn(TableEntry{hWnd, ...}) => hw <> hWnd) (getWindowList ())) fun mainCallbackFunction(hw:HWND, msgId:int, wParam:SysWord.word, lParam:SysWord.word): SysWord.word = if msgId = WMTESTPOLY then SysWord.fromInt ~1 (* This tests whether we are already installed. *) else getCallback hw (hw, msgId, wParam, lParam) val mainWinProc = buildClosure4withAbi(mainCallbackFunction, winAbi, (cHWND, cUint, cUINT_PTRw, cUINT_PTRw), cUINT_PTRw) val WNDPROC: (HWND * int * SysWord.word * SysWord.word -> SysWord.word) closure conversion = cFunction (* This is used to set the window proc. The result is also a window proc. *) val SetWindowLong = winCall3 (user "SetWindowLongPtrA") (cHWND, cInt, WNDPROC) cPointer val CallWindowProc = winCall5 (user "CallWindowProcA") (cPointer, cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw in val mainWinProc = mainWinProc and removeCallback = removeCallback fun windowCallback (call: HWND * Message * 'a -> LRESULT * 'a, init: 'a): (HWND * int * SysWord.word * SysWord.word -> SysWord.word) = let val state = ref init fun callBack(h: HWND, uMsg:int, wParam: SysWord.word, lParam: SysWord.word): SysWord.word = let val msg = decompileMessage(uMsg, wParam, lParam) handle exn => ( print(concat["Exception with message ", Int.toString uMsg, exnMessage exn ]); WM_NULL ) val (result, newState) = call(h, msg, !state) handle exn => ( print(concat["Exception with message ", PolyML.makestring msg, exnMessage exn ]); (LRESINT 0, !state) ) in (* For a few messages we have to update the value pointed to by wParam/lParam after we've handled it. *) updateParamsFromMessage(msg, wParam, lParam); state := newState; (* If our callback returned SOME x we use that as the result, otherwise we call the default. We do it this way rather than having the caller call DefWindowProc because that would involve recompiling the message and we can't guarantee that all the parameters of the original message would be correctly set. *) case result of LRESINT res => SysWord.fromInt res | LRESHANDLE res => fromAddr(voidStarOfHandle res) end; in callBack end (* When we first set up a callback we don't know the window handle so we use null. *) fun setCallback(call, init) = setOutstanding(SOME(windowCallback(call, init))) val sendMsg = winCall4(user "SendMessageA") (cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw fun subclass(w: HWND, f: HWND * Message * 'a -> LRESULT * 'a, init: 'a): (HWND * Message -> LRESULT) = let val testPoly = sendMsg(w, WMTESTPOLY, 0w0, 0w0) fun addCallback (hWnd, call: HWND * Message * 'a -> LRESULT * 'a, init: 'a): unit = setWindowList( TableEntry{ hWnd = hWnd, callBack = windowCallback(call, init) } :: getWindowList ()) val oldDefProc: callback = if SysWord.toIntX testPoly = ~1 then (* We already have our Window proc installed. *) let (* We should have a callback already installed. *) val oldCallback = getCallback w in removeCallback w; addCallback(w, f, init); oldCallback end else let (* Set up the new window proc and get the existing one. *) val oldWProc = SetWindowLong(w, ~4, mainWinProc) val defProc = fn (h, m, w, l) => CallWindowProc(oldWProc, h, m, w, l) in (* Remove any existing callback function and install the new one. *) removeCallback w; addCallback(w, f, init); defProc end in fn (hw: HWND, msg: Message) => let val (m: int, w: SysWord.word, l: SysWord.word, freeMem) = compileMessage msg val res: SysWord.word = oldDefProc(hw, m, w, l) in messageReturnFromParams(msg, w, l, res) before freeMem() end end end (* Keyboard operations on modeless dialogues are performed by isDialogMessage. We keep a list of modeless dialogues and process them in the main message loop. This also has an important function for dialogues created by FindText. They allocate memory which can't be freed until the dialogue has gone. *) local val modeless = ref [] val isDialogMessage = winCall2 (user "IsDialogMessage") (cHWND, cPointer) cBool val isWindow = winCall1 (user "IsWindow") (cHWND) cBool in fun addModelessDialogue (hWnd: HWND, doFree) = modeless := (hWnd, doFree) :: (!modeless) fun isDialogueMsg(msg: voidStar) = let (* Take this opportunity to filter any dialogues that have gone away. *) (* If this has gone away run any "free" function.*) fun filter(w, f) = if isWindow w then true (* Still there *) else (case f of NONE => () | SOME f => f(); false) in modeless := List.filter filter (!modeless); (* See if isDialogMessage returns true for any of these. *) List.foldl (fn ((w, _), b) => b orelse isDialogMessage(w, msg)) false (!modeless) end end datatype PeekMessageOptions = PM_NOREMOVE | PM_REMOVE (* TODO: We can also include PM_NOYIELD. *) val peekMsg = winCall5(user "PeekMessageA") (cPointer, cHWND, cUint, cUint, cUint) cBool fun PeekMessage(hWnd: HWND option, wMsgFilterMin: int, wMsgFilterMax: int, remove: PeekMessageOptions): MSG option = let val msg = malloc msgSize val opts = case remove of PM_REMOVE => 1 | PM_NOREMOVE => 0 val res = peekMsg(msg, getOpt(hWnd, hNull), wMsgFilterMin, wMsgFilterMax, opts) in (if not res then NONE else SOME(loadMessage msg)) before free msg end; (* TODO: This was originally implemented before we had threads. The only reason for continuing with it is to allow the thread to be interrupted. *) local val callWin = RunCall.run_call2 RuntimeCalls.POLY_SYS_os_specific in fun pauseForMessage(hwnd: HWND, min, max): unit = callWin(1101, (hwnd, min, max)) (* We implement WaitMessage within the RTS. *) fun WaitMessage(): bool = (pauseForMessage(hwndNull, 0, 0); true) end (* We don't use the underlying GetMessage function because that blocks the thread which would prevent other ML processes from running. Instead we use PeekMessage and an RTS call which allows other threads to run. *) fun GetMessage(hWnd: HWND option, wMsgFilterMin: int, wMsgFilterMax: int): MSG = case PeekMessage(hWnd, wMsgFilterMin, wMsgFilterMax, PM_REMOVE) of SOME msg => msg | NONE => let val hwnd = getOpt(hWnd, hwndNull) in pauseForMessage(hwnd, wMsgFilterMin, wMsgFilterMax); GetMessage(hWnd, wMsgFilterMin, wMsgFilterMax) end (* Wait for messages and dispatch them. It only returns when a QUIT message has been received. *) fun RunApplication() = let val peekMsg = winCall5(user "PeekMessageA") (cPointer, cHWND, cUint, cUint, cUint) cBool val transMsg = winCall1(user "TranslateMessage") (cPointer) cBool val dispMsg = winCall1(user "DispatchMessageA") (cPointer) cInt val msg = malloc msgSize val res = peekMsg(msg, hNull, 0, 0, 1) in if not res then (* There's no message at the moment. Wait for one. *) (free msg; WaitMessage(); RunApplication()) else case loadMessage msg of { msg = WM_QUIT{exitcode}, ...} => (free msg; exitcode) | _ => ( if isDialogueMsg msg then () else ( transMsg msg; dispMsg msg; () ); free msg; RunApplication() ) end local val sendMsg = winCall4(user "SendMessageA") (cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw in fun SendMessage(hWnd: HWND, msg: Message) = let val (msgId, wp, lp, freeMem) = compileMessage msg val reply = sendMsg(hWnd, msgId, wp, lp) in (* Update any result values and cast the results if necessary. *) messageReturnFromParams(msg, wp, lp, reply) before freeMem() end end local val postMessage = winCall4(user "PostMessageA") (cHWND, cUint, cUINT_PTRw, cUINT_PTRw) (successState "PostMessage") in fun PostMessage(hWnd: HWND, msg: Message) = let val (msgId, wp, lp, _) = compileMessage msg (* This could result in a memory leak. *) in postMessage(hWnd, msgId, wp, lp) end end val HWND_BROADCAST: HWND = handleOfVoidStar(sysWord2VoidStar 0wxffff) val PostQuitMessage = winCall1 (user "PostQuitMessage") cInt cVoid val RegisterWindowMessage = winCall1 (user "RegisterWindowMessageA") (cString) cUint val InSendMessage = winCall0 (user "InSendMessage") () cBool val GetInputState = winCall0 (user "GetInputState") () cBool local val getMessagePos = winCall0 (user "GetMessagePos") () cDWORDw in fun GetMessagePos(): POINT = let val r = getMessagePos () in { x = Word.toInt(LOWORD r), y = Word.toInt(HIWORD r) } end end val GetMessageTime = Time.fromMilliseconds o winCall0 (user "GetMessageTime") () cLong datatype QueueStatus = QS_KEY | QS_MOUSEMOVE | QS_MOUSEBUTTON | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_SENDMESSAGE | QS_HOTKEY | QS_ALLPOSTMESSAGE local val tab = [ (QS_KEY, 0wx0001), (QS_MOUSEMOVE, 0wx0002), (QS_MOUSEBUTTON, 0wx0004), (QS_POSTMESSAGE, 0wx0008), (QS_TIMER, 0wx0010), (QS_PAINT, 0wx0020), (QS_SENDMESSAGE, 0wx0040), (QS_HOTKEY, 0wx0080), (QS_ALLPOSTMESSAGE, 0wx0100) ] in val (fromQS, toQS) = tableSetLookup(tab, NONE) end val QS_MOUSE = [QS_MOUSEMOVE, QS_MOUSEBUTTON] val QS_INPUT = QS_KEY :: QS_MOUSE val QS_ALLEVENTS = QS_POSTMESSAGE :: QS_TIMER :: QS_PAINT :: QS_HOTKEY :: QS_INPUT val QS_ALLINPUT = QS_SENDMESSAGE :: QS_ALLEVENTS local val getQueueStatus = winCall1 (user "GetQueueStatus") (cUintw) cDWORDw in fun GetQueueStatus flags = let val res = getQueueStatus(fromQS flags) in (* The RTS uses PeekMessage internally so the "new messages" value in the LOWORD is meaningless. *) toQS(Word32.fromLargeWord(Word.toLargeWord(HIWORD(res)))) end end (* BroadcastSystemMessage DispatchMessage GetMessageExtraInfo InSendMessageEx - NT 5.0 and Windows 98 PostThreadMessage ReplyMessage SendAsyncProc SendMessageCallback SendMessageTimeout SendNotifyMessage SetMessageExtraInfo TranslateMessage Obsolete Functions PostAppMessage SetMessageQueue *) end end; polyml-5.7.1/mlsource/extra/Win/Metafile.sml0000644000175000017500000002733413204034553017764 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Metafile : sig type HENHMETAFILE type HMETAFILE type HDC (*= Base.HDC*) type RECT = { top: int, left: int, bottom: int, right: int } type SIZE = { cx: int, cy: int } datatype MapMode = datatype Transform.MapMode type METAFILEPICT = {mm: MapMode, size: SIZE, hMF: HMETAFILE} type ENHMETAHEADER = { bounds: RECT, frame: RECT, fileSize: int, records: int, handles: int, palEntries: int, resolutionPixels: SIZE, resolutionMM: SIZE, openGL: bool } val CloseEnhMetaFile : HDC -> HENHMETAFILE val CloseMetaFile : HDC -> HMETAFILE val CopyEnhMetaFile : HENHMETAFILE * string -> HENHMETAFILE val CopyMetaFile : HMETAFILE * string -> HMETAFILE val CreateEnhMetaFile : HDC * string option * RECT * {pictureName: string, applicationName: string} option -> HDC val CreateMetaFile : string option -> HDC val DeleteEnhMetaFile : HENHMETAFILE -> unit val DeleteMetaFile : HMETAFILE -> unit val GdiComment : HDC * Word8Vector.vector -> unit val GetEnhMetaFile : string -> HENHMETAFILE val GetEnhMetaFileBits : HENHMETAFILE -> Word8Vector.vector val GetEnhMetaFileDescription : HENHMETAFILE -> {pictureName: string, applicationName: string} option val GetEnhMetaFileHeader : HENHMETAFILE -> ENHMETAHEADER val GetMetaFile : string -> HMETAFILE val GetMetaFileBitsEx : HMETAFILE -> Word8Vector.vector val GetWinMetaFileBits : HENHMETAFILE * Transform.MapMode * HDC -> Word8Vector.vector val PlayEnhMetaFile : HDC * HENHMETAFILE * RECT -> unit val PlayMetaFile : HDC * HMETAFILE -> unit val SetEnhMetaFileBits : Word8Vector.vector -> HENHMETAFILE val SetWinMetaFileBits : Word8Vector.vector * HDC * {size: SIZE, mapMode: MapMode} option -> HENHMETAFILE end = struct local open Foreign Base GdiBase in datatype MapMode = datatype Transform.MapMode type HENHMETAFILE = HENHMETAFILE and HMETAFILE = HMETAFILE type HDC = Base.HDC type SIZE = SIZE and RECT = RECT type METAFILEPICT = METAFILEPICT (* TODO: Many of these should check for NULL as a result indicating an error. *) val CloseEnhMetaFile = winCall1 (gdi "CloseEnhMetaFile") (cHDC) cHENHMETAFILE and CloseMetaFile = winCall1 (gdi "CloseMetaFile") (cHDC) cHMETAFILE and CopyEnhMetaFile = winCall2 (gdi "CopyEnhMetaFileA") (cHENHMETAFILE, cString) cHENHMETAFILE and CopyMetaFile = winCall2 (gdi "CopyMetaFileA") (cHMETAFILE, cString) cHMETAFILE and CreateMetaFile = winCall1 (gdi "CreateMetaFileA") (STRINGOPT) cHDC and DeleteEnhMetaFile = winCall1 (gdi "DeleteEnhMetaFile") (cHENHMETAFILE) (successState "DeleteEnhMetaFile") and DeleteMetaFile = winCall1 (gdi "DeleteMetaFile") (cHMETAFILE) (successState "DeleteMetaFile") and GetEnhMetaFile = winCall1 (gdi "GetEnhMetaFileA") (cString) cHENHMETAFILE and GetMetaFile = winCall1 (gdi "GetMetaFileA") (cString) cHMETAFILE and PlayEnhMetaFile = winCall3(gdi "PlayEnhMetaFile") (cHDC, cHENHMETAFILE, cConstStar cRect) (successState "PlayEnhMetaFile") and PlayMetaFile = winCall2(gdi "PlayMetaFile") (cHDC, cHMETAFILE) (successState "PlayMetaFile") local val cemf = winCall4 (gdi "CreateEnhMetaFileA") (cHDC, STRINGOPT, cConstStar cRect, cPointer) cHDC in fun CreateEnhMetaFile(hdc, name, r, NONE) = cemf(hdc, name, r, Memory.null) | CreateEnhMetaFile(hdc, name, r, SOME{applicationName, pictureName}) = let val appSize = size applicationName and pictSize = size pictureName open Memory val buff = malloc (Word.fromInt(appSize + pictSize + 3)) in (* The two strings are copied to the buffer with a null between and two nulls at the end. *) copyStringToMem(buff, 0, applicationName); copyStringToMem(buff, appSize+1, pictureName); set8(buff, Word.fromInt(appSize + pictSize + 2), 0w0); (cemf(hdc, name, r, buff) handle ex => (free buff; raise ex)) before free buff end end local val gdiComment = winCall3 (gdi "GdiComment") (cHDC, cUint, cPointer) (successState "GdiComment") in fun GdiComment(hdc, v) = let val vecsize = Word8Vector.length v val buff = toCWord8vec v in gdiComment (hdc, vecsize, buff) handle ex => (Memory.free buff; raise ex); Memory.free buff end end local val gemfb = winCall3 (gdi "GetEnhMetaFileBits") (cHENHMETAFILE, cUint, cPointer) (cPOSINT "GetEnhMetaFileBits") in fun GetEnhMetaFileBits(hemf: HENHMETAFILE): Word8Vector.vector = let (* Call with a NULL buffer to find out how big it is. *) open Memory val size = gemfb(hemf, 0, Memory.null) val buff = malloc(Word.fromInt size) val res = gemfb(hemf, size, buff) handle ex => (free buff; raise ex) in fromCWord8vec(buff, size) before free buff end end local val gemfb = winCall3 (gdi "GetMetaFileBitsEx") (cHMETAFILE, cUint, cPointer) (cPOSINT "GetMetaFileBitsEx") in fun GetMetaFileBitsEx(hemf: HMETAFILE): Word8Vector.vector = let (* Call with a NULL buffer to find out how big it is. *) open Memory val size = gemfb(hemf, 0, Memory.null) val buff = malloc(Word.fromInt size) val res = gemfb(hemf, size, buff) handle ex => (free buff; raise ex) in fromCWord8vec(buff, size) before free buff end end local val gemfd = winCall3 (gdi "GetEnhMetaFileDescriptionA") (cHENHMETAFILE, cUint, cPointer) cInt (* It's supposed to return a uint but GDI_ERROR is -1 *) in fun GetEnhMetaFileDescription(hemf: HENHMETAFILE) = (* Call with a NULL buffer to find out how big it is. *) case gemfd(hemf, 0, Memory.null) of 0 => NONE (* No error - simply no description. *) | len => if len < 0 then raiseSysErr() else let (* The application and picture names are encoded as a pair. *) open Memory infix 6 ++ val buff = malloc (Word.fromInt len) val res = gemfd(hemf, len, buff) val str1 = fromCstring buff val str2 = fromCstring(buff ++ Word.fromInt (size str1 +1)) in SOME {applicationName=str1, pictureName=str2} end end local val setEnhMetaFileBits = winCall2 (gdi "SetEnhMetaFileBits") (cUint, cPointer) cHENHMETAFILE in fun SetEnhMetaFileBits(v: Word8Vector.vector): HENHMETAFILE = let val mem = toCWord8vec v in (setEnhMetaFileBits (Word8Vector.length v, mem) handle ex => (Memory.free mem; raise ex)) before Memory.free mem end end local val gwmfb = winCall5 (gdi "GetWinMetaFileBits") (cHENHMETAFILE, cUint, cPointer, cMAPMODE, cHDC) (cPOSINT "GetWinMetaFileBits") in fun GetWinMetaFileBits(hemf, mapMode, hdc) = let (* Call with a null pointer to get the size. *) open Memory val size = gwmfb(hemf, 0, null, mapMode, hdc) val buff = malloc (Word.fromInt size) val _ = gwmfb(hemf, size, buff, mapMode, hdc) handle ex => (free buff; raise ex) in fromCWord8vec(buff, size) before free buff end end local val swmfb = winCall4 (gdi "SetWinMetaFileBits") (cUint, cPointer, cHDC, cOptionPtr(cConstStar cMETAFILEPICT)) cHENHMETAFILE in fun SetWinMetaFileBits(v, hdc, opts) = let val optmfp = case opts of NONE => NONE | SOME {size, mapMode} => SOME {mm=mapMode, size=size, hMF=hgdiObjNull} val mem = toCWord8vec v in (swmfb(Word8Vector.length v, mem, hdc, optmfp) handle ex => (Memory.free mem; raise ex)) before Memory.free mem end end type ENHMETAHEADER = { bounds: RECT, frame: RECT, fileSize: int, records: int, handles: int, palEntries: int, resolutionPixels: SIZE, resolutionMM: SIZE, openGL: bool } local val ENHMETAHEADER = cStruct18(cDWORD, cDWORD, cRect, cRect, cDWORD, cDWORD, cDWORD, cDWORD, cWORD, cWORD, cDWORD, cDWORD, cDWORD, cSize, cSize, cDWORD, cDWORD, cDWORD) val {load=toEMH, ...} = breakConversion ENHMETAHEADER val gemf = winCall3 (gdi "GetEnhMetaFileHeader") (cHENHMETAFILE, cUint, cPointer) (cPOSINT "GetEnhMetaFileHeader") in fun GetEnhMetaFileHeader(h: HENHMETAFILE): ENHMETAHEADER = let (* Initial call with a NULL buffer to get size and check the handle. *) open Memory val size = gemf(h, 0, null) val buff = malloc(Word.fromInt size) val _ = gemf(h, size, buff) handle ex => (free buff; raise ex) val (_, _, bounds, frame, _, _, fileSize, records, handles, _, _, _, palEntries, resolutionPixels, resolutionMM, _, _, openGL) = toEMH buff val () = free buff (* Ignore the description and the pixelFormat structure. We can get the description using GetEnhMetaFileDescription. *) in { bounds = bounds, frame = frame, fileSize = fileSize, records = records, handles = handles, palEntries = palEntries, resolutionPixels = resolutionPixels, resolutionMM = resolutionMM, openGL = openGL <> 0 } end end (* Other metafile Functions EnhMetaFileProc EnumEnhMetaFile GetEnhMetaFilePaletteEntries PlayEnhMetaFileRecord Obsolete Functions EnumMetaFile EnumMetaFileProc PlayMetaFileRecord SetMetaFileBitsEx *) end end; polyml-5.7.1/mlsource/extra/Win/Cursor.sml0000644000175000017500000001411313204034553017502 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Cursor: sig type HCURSOR and HINSTANCE type POINT = { x : int, y: int } type RECT = { left: int, top: int, right: int, bottom: int } val hcursorNull : HCURSOR val isHcursorNull : HCURSOR -> bool datatype CursorId = OCR_APPSTARTING | OCR_CROSS | OCR_IBEAM | OCR_NO | OCR_NORMAL | OCR_SIZEALL | OCR_SIZENESW | OCR_SIZENS | OCR_SIZENWSE | OCR_SIZEWE | OCR_UP | OCR_WAIT val ClipCursor : RECT -> unit val CopyCursor : HCURSOR -> HCURSOR val DestroyCursor : HCURSOR -> unit val GetClipCursor : unit -> RECT val GetCursor : unit -> HCURSOR val GetCursorPos : unit -> POINT val LoadCursor : HINSTANCE * Resource.RESID -> HCURSOR val LoadCursorFromFile : string -> HCURSOR val LoadSystemCursor : CursorId -> HCURSOR val LoadSystemCursorFromFile : CursorId -> HCURSOR val SetCursor : HCURSOR -> HCURSOR val SetCursorPos : int * int -> unit val SetSystemCursor : HCURSOR * CursorId -> unit val ShowCursor : bool -> int end = struct local open Foreign open Base open Resource in type HCURSOR = HCURSOR and HINSTANCE = HINSTANCE type RECT = RECT and POINT = POINT val hcursorNull = hgdiObjNull and isHcursorNull = isHgdiObjNull datatype CursorId = OCR_APPSTARTING (* Standard arrow and small hourglass *) | OCR_NORMAL (* Standard arrow *) | OCR_CROSS (* Crosshair *) | OCR_IBEAM (* I-beam *) | OCR_NO (* Slashed circle *) | OCR_SIZEALL (* Four-pointed arrow pointing north, south, east, and west *) | OCR_SIZENESW (* Double-pointed arrow pointing northeast and southwest *) | OCR_SIZENS (* Double-pointed arrow pointing north and south *) | OCR_SIZENWSE (* Double-pointed arrow pointing northwest and southeast *) | OCR_SIZEWE (* Double-pointed arrow pointing west and east *) | OCR_UP (* Vertical arrow *) | OCR_WAIT (* Hourglass *) local fun idToInt OCR_APPSTARTING = 32650 | idToInt OCR_NORMAL = 32512 | idToInt OCR_CROSS = 32515 | idToInt OCR_IBEAM = 32513 | idToInt OCR_NO = 32648 | idToInt OCR_SIZEALL = 32646 | idToInt OCR_SIZENESW = 32643 | idToInt OCR_SIZENS = 32645 | idToInt OCR_SIZENWSE = 32642 | idToInt OCR_SIZEWE = 32644 | idToInt OCR_UP = 32516 | idToInt OCR_WAIT = 32514 fun intToId _ = raise Fail "intToId" in val CURSORID = absConversion {abs=intToId, rep=idToInt} cDWORD end val SetSystemCursor = winCall2 (user "SetSystemCursor") (cHCURSOR, CURSORID) (successState "SetSystemCursor") fun checkCursor c = (checkResult(not(isHcursorNull c)); c) val LoadCursorFromFile = checkCursor o winCall1 (user "LoadCursorFromFileA") (cString) cHCURSOR (* ML extension - simpler than having a separate function. *) (* I found a note suggesting that it was better to use the Unicode version because not all implementations handle this properly. *) val LoadSystemCursorFromFile = checkCursor o winCall1 (user "LoadCursorFromFileW") (CURSORID) cHCURSOR val ClipCursor = winCall1 (user "ClipCursor") (cConstStar cRect) (successState "ClipCursor") val CopyCursor = checkCursor o winCall1 (user "CopyCursor") (cHCURSOR) cHCURSOR val DestroyCursor = winCall1 (user "DestroyCursor") (cHCURSOR) (successState "DestroyCursor") local val getClipCursor = winCall1 (user "GetClipCursor") (cStar cRect) (successState "GetClipCursor") in fun GetClipCursor (): RECT = let val r = ref { top = 0, bottom = 0, left = 0, right = 0 } in getClipCursor r; !r end end val GetCursor = winCall0 (user "GetCursor") () cHCURSOR local val getCursorPos = winCall1 (user "GetCursorPos") (cStar cPoint) (successState "GetCursorPos") in fun GetCursorPos (): POINT = let val r = ref { x = 0, y = 0 } in getCursorPos r; !r end end val SetCursor = winCall1 (user "SetCursor") cHCURSOR cHCURSOR val SetCursorPos = winCall2 (user "SetCursorPos") (cInt, cInt) (successState "SetCursorPos") val ShowCursor = winCall1 (user "ShowCursor") cBool cInt (* Superseded by LoadImage *) val LoadCursor = checkCursor o winCall2 (user "LoadCursorA") (cHINSTANCE, cRESID) cHCURSOR local val loadCursor = checkCursor o winCall2 (user "LoadCursorA") (cHINSTANCE, CURSORID) cHCURSOR in fun LoadSystemCursor(id: CursorId) = loadCursor(hinstanceNull, id) end (* TODO: CreateCursor a little complicated because it includes bit maps. *) end end; polyml-5.7.1/mlsource/extra/Win/Font.sml0000644000175000017500000005611613204034553017144 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Font : sig type HDC and HFONT type COLORREF = Color.COLORREF type POINT = {x: int, y: int} and SIZE = {cx: int, cy: int } and RECT = { top: int, left: int, bottom: int, right: int } datatype FontFamily = FF_DECORATIVE | FF_DONTCARE | FF_MODERN | FF_ROMAN | FF_SCRIPT | FF_SWISS and FontPitch = DEFAULT_PITCH | FIXED_PITCH | VARIABLE_PITCH and OutputPrecision = OUT_CHARACTER_PRECIS | OUT_DEFAULT_PRECIS | OUT_DEVICE_PRECIS | OUT_OUTLINE_PRECIS | OUT_RASTER_PRECIS | OUT_SCREEN_OUTLINE_PRECIS | OUT_STRING_PRECIS | OUT_STROKE_PRECIS | OUT_TT_ONLY_PRECIS | OUT_TT_PRECIS and OutputQuality = DEFAULT_QUALITY | DRAFT_QUALITY | PROOF_QUALITY | ANTIALIASED_QUALITY | CLEARTYPE_QUALITY | NONANTIALIASED_QUALITY and CharacterSet = ANSI_CHARSET | DEFAULT_CHARSET | SYMBOL_CHARSET | MAC_CHARSET | SHIFTJIS_CHARSET | HANGEUL_CHARSET | JOHAB_CHARSET | GB2312_CHARSET | CHINESEBIG5_CHARSET | GREEK_CHARSET | TURKISH_CHARSET | VIETNAMESE_CHARSET | HEBREW_CHARSET | ARABIC_CHARSET | BALTIC_CHARSET | RUSSIAN_CHARSET | THAI_CHARSET | EASTEUROPE_CHARSET | OEM_CHARSET type FontWeight = int val FW_BLACK : FontWeight val FW_BOLD : FontWeight val FW_DEMIBOLD : FontWeight val FW_DONTCARE : FontWeight val FW_EXTRABOLD : FontWeight val FW_EXTRALIGHT : FontWeight val FW_HEAVY : FontWeight val FW_LIGHT : FontWeight val FW_MEDIUM : FontWeight val FW_NORMAL : FontWeight val FW_REGULAR : FontWeight val FW_SEMIBOLD : FontWeight val FW_THIN : FontWeight val FW_ULTRABOLD : FontWeight val FW_ULTRALIGHT : FontWeight datatype ClippingPrecision = CLIP_DEFAULT_PRECIS | CLIP_STROKE_PRECIS | CLIP_LH_ANGLES | CLIP_DFA_DISABLE | CLIP_EMBEDDED type LOGFONT = { height : int, width : int, escapement : int, orientation : int, weight : FontWeight, italic : bool, underline : bool, strikeOut : bool, charSet : CharacterSet, outputPrecision: OutputPrecision, clipPrecision : ClippingPrecision list, quality : OutputQuality, pitch: FontPitch, family: FontFamily, faceName : string } datatype DrawTextMode = DT_BOTTOM | DT_CALCRECT | DT_CENTER | DT_EXPANDTABS | DT_EXTERNALLEADING | DT_INTERNAL | DT_LEFT | DT_NOCLIP | DT_NOPREFIX | DT_RIGHT | DT_SINGLELINE | DT_TABSTOP of int | DT_TOP | DT_VCENTER | DT_WORDBREAK and TextAlign = TA_BASELINE | TA_BOTTOM | TA_CENTER | TA_LEFT | TA_NOUPDATECP | TA_RIGHT | TA_TOP | TA_UPDATECP and TextMetricPitch = TMPF_DEVICE | TMPF_FIXED_PITCH | TMPF_TRUETYPE | TMPF_VECTOR and ExtendedTextMode = ETO_CLIPPED | ETO_GLYPH_INDEX | ETO_IGNORELANGUAGE | ETO_OPAQUE | ETO_RTLREADING type TEXTMETRIC = { height: int, ascent: int, descent: int, internalLeading: int, externalLeading: int, aveCharWidth: int, maxCharWidth: int, weight: int, overhang: int, digitizedAspectX: int, digitizedAspectY: int, firstChar: char, lastChar: char, defaultChar: char, breakChar: char, italic: bool, underlined: bool, struckOut: bool, pitch: TextMetricPitch list, family: FontFamily, charSet : CharacterSet } val AddFontResource : string -> int val CreateFont : LOGFONT -> HFONT val CreateFontIndirect : LOGFONT -> HFONT val CreateScalableFontResource : int * string * string * string -> unit val DrawText : HDC * string * RECT * DrawTextMode list -> int val ExtTextOut : HDC * POINT * ExtendedTextMode list * RECT option * string * int list -> unit val GetAspectRatioFilterEx : HDC -> SIZE val GetCharABCWidths : HDC * char * char -> (int * int * int) vector val GetCharABCWidthsFloat : HDC * char * char -> (real * real * real) vector val GetCharWidth32 : HDC * char * char -> int vector val GetCharWidthFloat : HDC * char * char -> real vector val GetTabbedTextExtent : HDC * string * int list -> SIZE val GetTextAlign : HDC -> TextAlign list val GetTextCharacterExtra : HDC -> int val GetTextColor : HDC -> COLORREF val GetTextExtentExPoint : HDC * string * int option -> {fit: int option, size: SIZE, extents: int list} val GetTextExtentPoint32 : HDC * string -> SIZE val GetTextFace : HDC -> string val GetTextMetrics : HDC -> TEXTMETRIC val RemoveFontResource : string -> unit val SetMapperFlags : HDC * bool -> bool val SetTextAlign : HDC * TextAlign list -> TextAlign list val SetTextCharacterExtra : HDC * int -> int val SetTextColor : HDC * COLORREF -> COLORREF val SetTextJustification : HDC * int * int -> unit val TabbedTextOut: HDC * POINT * string * int list * int -> SIZE val TextOut : HDC * POINT * String.string -> unit end = struct local open Foreign Base GdiBase (*val HEIGHT = INT: int conversion*) in type COLORREF = Color.COLORREF type SIZE = SIZE and POINT = POINT and RECT = RECT type HDC = HDC and HFONT = HFONT open FontBase (* Contains the types used in LOGFONT. *) datatype TextAlign = TA_NOUPDATECP | TA_UPDATECP | TA_LEFT | TA_RIGHT | TA_CENTER | TA_TOP | TA_BOTTOM | TA_BASELINE local val tab = [ (TA_NOUPDATECP, 0w0), (TA_UPDATECP, 0w1), (TA_LEFT, 0w0), (TA_RIGHT, 0w2), (TA_CENTER, 0w6), (TA_TOP, 0w0), (TA_BOTTOM, 0w8), (TA_BASELINE, 0w24) ] val TEXTALIGN = tableSetConversion(tab, NONE) in val GetTextAlign = winCall1(gdi "GetTextAlign") (cHDC) TEXTALIGN val SetTextAlign = winCall2(gdi "SetTextAlign") (cHDC,TEXTALIGN) TEXTALIGN end (*TYPE: DrawTextMode *) datatype DrawTextMode = DT_TOP | DT_LEFT | DT_CENTER | DT_RIGHT | DT_VCENTER | DT_BOTTOM | DT_WORDBREAK | DT_SINGLELINE | DT_EXPANDTABS | DT_NOCLIP | DT_EXTERNALLEADING | DT_CALCRECT | DT_NOPREFIX | DT_INTERNAL | DT_TABSTOP of int local val tab = [ (DT_TOP, 0wx0000), (DT_LEFT, 0wx0000), (DT_CENTER, 0wx0001), (DT_RIGHT, 0wx0002), (DT_VCENTER, 0wx0004), (DT_BOTTOM, 0wx0008), (DT_WORDBREAK, 0wx0010), (DT_SINGLELINE, 0wx0020), (DT_EXPANDTABS, 0wx0040), (DT_NOCLIP, 0wx0100), (DT_EXTERNALLEADING, 0wx0200), (DT_CALCRECT, 0wx0400), (DT_NOPREFIX, 0wx0800), (DT_INTERNAL, 0wx1000) ] val tabStop = 0wx0080 fun toInt (DT_TABSTOP i) = Word32.orb(tabStop, Word32.fromInt i*0w256) | toInt _ = raise Match fun fromInt i = if Word32.andb(i, tabStop) = tabStop then DT_TABSTOP(Word32.toInt(Word32.andb((Word32.>>(i, 0w8)), 0wxff))) else raise Match; val DRAWTEXTMODE = tableSetConversion(tab, SOME(fromInt, toInt)) in val DrawText = winCall4(user "DrawTextA") (cHDC,cString,cConstStar cRect,DRAWTEXTMODE) cInt end val AddFontResource = winCall1(gdi "AddFontResourceA") (cString) cInt val CreateScalableFontResource = winCall4(gdi "CreateScalableFontResourceA") (cDWORD,cString,cString,cString) (successState "CreateScalableFontResource") val GetTextCharacterExtra = winCall1(gdi "GetTextCharacterExtra") (cHDC) cInt val RemoveFontResource = winCall1(gdi "RemoveFontResourceA") (cString) (successState "RemoveFontResource") local val cFONTMAPPERFLAG: bool conversion = absConversion{rep=fn true => 0w1 | false => 0w0, abs=fn n => n <> 0w0} cDWORDw in val SetMapperFlags = winCall2(gdi "SetMapperFlags") (cHDC, cFONTMAPPERFLAG) cFONTMAPPERFLAG end val SetTextCharacterExtra = winCall2(gdi "SetTextCharacterExtra") (cHDC,cInt) cInt val SetTextJustification = winCall3(gdi "SetTextJustification") (cHDC,cInt,cInt) (successState "SetTextJustification") val GetTextColor = winCall1 (gdi "GetTextColor") (cHDC) cCOLORREF and SetTextColor = winCall2 (gdi "SetTextColor") (cHDC, cCOLORREF) cCOLORREF local val getAspectRatioFilterEx = winCall2(gdi "GetAspectRatioFilterEx") (cHDC, cStar cSize)(successState "GetAspectRatioFilterEx") in fun GetAspectRatioFilterEx hdc = let val s = ref{cx=0, cy= 0} in getAspectRatioFilterEx(hdc, s); !s end end local val createFont = winCall14 (gdi "CreateFontA") (cInt, cInt, cInt, cInt, cInt (* FONTWEIGHT *), cDWORDw, cDWORDw, cDWORDw, cDWORDw (*CHARACTERSET *), cDWORDw (* OUTPUTPRECISION *), cDWORDw (* CLIPPINGPRECISION *), cDWORDw (* OUTPUTQUALITY *), cDWORDw (* FONTPITCHANDFAMILY *), cString) cHFONT fun bToch false = 0w0 | bToch true = 0w1 val w8ToW32 = Word32.fromLargeWord o Word8.toLargeWord in fun CreateFont({height: int, width: int, escapement: int, orientation: int, weight: FontWeight, italic: bool, underline: bool, strikeOut: bool, charSet: CharacterSet, outputPrecision: OutputPrecision, clipPrecision: ClippingPrecision list, quality: OutputQuality, pitch: FontPitch, family: FontFamily, faceName: string}: LOGFONT) = createFont(height, width, escapement, orientation, weight, bToch italic, bToch underline, bToch strikeOut, w8ToW32(charsetToW8 charSet), w8ToW32(outPrecToW8 outputPrecision), clipPrecSetToW32 clipPrecision, w8ToW32(outQualToW8 quality), w8ToW32(pitchAndFamilyToW8 (pitch, family)), if size faceName > 31 then String.substring(faceName, 0, 31) else faceName) end (* CreateFont and CreateFontIndirect take the same arguments in ML. *) val CreateFontIndirect = winCall1 (gdi "CreateFontIndirectA") (cConstStar cLOGFONT) cHFONT datatype ExtendedTextMode = ETO_OPAQUE | ETO_CLIPPED | ETO_GLYPH_INDEX | ETO_RTLREADING | ETO_IGNORELANGUAGE local val tab = [ (ETO_OPAQUE, 0wx0002), (ETO_CLIPPED, 0wx0004), (ETO_GLYPH_INDEX, 0wx0010), (ETO_RTLREADING, 0wx0080), (ETO_IGNORELANGUAGE, 0wx1000) ] in val EXTENDEDTEXTOUT = tableSetConversion(tab, NONE) end local val extTextOut = winCall8 (gdi "ExtTextOutA") (cHDC,cInt,cInt, EXTENDEDTEXTOUT, cOptionPtr (cConstStar cRect), cString, cUint, cPointer) (successState "ExtTextOut") val l2Vec = list2Vector cInt in fun ExtTextOut (h,({x,y}:POINT), option, rect, text, gapl) = let val slen = String.size text val (gaps, _) = case gapl of [] => (Memory.null, 0) | _ => l2Vec gapl (* The Rect is optional but really depends on the ETO_OPAQUE or ETO_CLIPPED options. *) in extTextOut(h, x, y, option, rect, text, slen, gaps) handle ex => (Memory.free gaps; raise ex); Memory.free gaps end end local val ABC = cStruct3(cInt, cUint, cInt) val getCharABCWidths = winCall4 (gdi "GetCharABCWidthsA") (cHDC, cUint, cUint, cPointer) (successState "GetCharABCWidths") val getVec = getVectorResult ABC in fun GetCharABCWidths (h, c1: char, c2: char) = let fun getCharABC(abcarr, count) = (getCharABCWidths(h, ord c1, ord c2, abcarr); count) in getVec getCharABC (ord c2 - ord c1 + 1) end end local val ABC = cStruct3(cFloat, cFloat, cFloat) val getCharABCWidthsFloat = winCall4 (gdi "GetCharABCWidthsFloatA") (cHDC, cUint, cUint, cPointer) (successState "GetCharABCWidthsFloat") val getVec = getVectorResult ABC in fun GetCharABCWidthsFloat (h,c1,c2) = let fun getCharABC(abcarr, count) = (getCharABCWidthsFloat(h, ord c1, ord c2, abcarr); count) in getVec getCharABC (ord c2 - ord c1 + 1) end end local val getCharWidth32 = winCall4 (gdi "GetCharWidth32A") (cHDC, cUint, cUint, cPointer) (successState "GetCharWidth32") val getVec = getVectorResult cInt in fun GetCharWidth32 (h,c1,c2) = let fun getCharW(vec, count) = (getCharWidth32(h, ord c1, ord c2, vec); count) in getVec getCharW (ord c2 - ord c1 + 1) end end local val getCharWidthFloat = winCall4 (gdi "GetCharWidthFloatA") (cHDC,cUint, cUint, cPointer) (successState "GetCharWidthFloat") val getVec = getVectorResult cFloat in fun GetCharWidthFloat (h,c1,c2) = let fun getCharW(vec, count) = (getCharWidthFloat(h, ord c1, ord c2, vec); count) in getVec getCharW (ord c2 - ord c1 + 1) end end local val getTextExtentPoint32 = winCall4 (gdi "GetTextExtentPoint32A") (cHDC, cString, cInt, cStar cSize) (successState "GetTextExtentPoint32") in fun GetTextExtentPoint32 (h, s) = let val r = ref {cx=0, cy=0} val () = getTextExtentPoint32(h, s, size s, r) in !r end end local val textOut = winCall5 (gdi "TextOutA") (cHDC,cInt,cInt,cString,cInt) (successState "TextOut") in fun TextOut (h,({x,y}:POINT),s) = textOut(h, x, y, s, size s) end datatype TextMetricPitch = TMPF_FIXED_PITCH | TMPF_VECTOR | TMPF_TRUETYPE | TMPF_DEVICE (* N.B. TMPF_FIXED_PITCH is included if the font is NOT fixed pitch!! *) type TEXTMETRIC = { height: int, ascent: int, descent: int, internalLeading: int, externalLeading: int, aveCharWidth: int, maxCharWidth: int, weight: int, overhang: int, digitizedAspectX: int, digitizedAspectY: int, firstChar: char, lastChar: char, defaultChar: char, breakChar: char, italic: bool, underlined: bool, struckOut: bool, pitch: TextMetricPitch list, family: FontFamily, charSet : CharacterSet } local val TEXTMETRIC = cStruct20(cLong, cLong, cLong, cLong, cLong, cLong, cLong, cLong, cLong, cLong, cLong, cChar, cChar, cChar, cChar, cUint8w, cUint8w, cUint8w, cUint8w, cUint8w) val getTextMetrics = winCall2 (gdi "GetTextMetricsA") (cHDC, cStar TEXTMETRIC) (successState "GetTextMetrics") val tmpfTab = [ (TMPF_FIXED_PITCH, 0wx1), (* N.B. This is the opposite *) (TMPF_VECTOR, 0wx2), (TMPF_TRUETYPE, 0wx4), (TMPF_DEVICE, 0wx8) ] val (_, tmpfFromW32) = tableSetLookup(tmpfTab, NONE) in fun GetTextMetrics hdc : TEXTMETRIC = let val r = ref (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #" ", #" ", #" ", #" ", 0w0, 0w0, 0w0, 0w0, 0w0) val () = getTextMetrics (hdc, r) val (height, ascent, descent, internalLeading, externalLeading, aveCharWidth, maxCharWidth, weight, overhang, digitizedAspectX, digitizedAspectY, firstChar, lastChar, defaultChar, breakChar, italic, underlined, struckOut, pitchAndFamily, charSet) = !r (*val (fromChs, _, _) = breakConversion CHARACTERSET*) val family = toFamily(Word8.andb(pitchAndFamily, 0wxf0)) val pitch = tmpfFromW32(Word32.fromLargeWord(Word8.toLargeWord(Word8.andb(pitchAndFamily, 0wxf)))) in { height = height, ascent = ascent, descent = descent, internalLeading = internalLeading, externalLeading = externalLeading, aveCharWidth = aveCharWidth, maxCharWidth = maxCharWidth, weight = weight, overhang = overhang, digitizedAspectX = digitizedAspectX, digitizedAspectY = digitizedAspectY, firstChar = firstChar, lastChar = lastChar, defaultChar = defaultChar, breakChar = breakChar, italic = italic <> 0w0, underlined = underlined <> 0w0, struckOut = struckOut <> 0w0, family = family, pitch = pitch, charSet = charsetFromW8 charSet } end end local val getFaceCall = winCall3(gdi "GetTextFaceA") (cHDC, cInt, cPointer) cInt in fun GetTextFace hdc : string = getStringWithNullIsLength(fn(vec, len) => getFaceCall(hdc, len, vec)) end local val getTextExtentExPoint = winCall7(gdi "GetTextExtentExPointA") (cHDC, cString, cInt, cInt, cPointer, cPointer, cStar cSize) (successState "GetTextExtentExPoint") val {load=loadInt, ctype={size=sizeInt, ...}, ...} = breakConversion cInt in fun GetTextExtentExPoint(hdc: HDC, s: string, maxWidth: int option) : {fit: int option, extents: int list, size: SIZE} = let val count = size s open Memory infix 6 ++ val vec = malloc(Word.fromInt count * sizeInt) (* The lpnFit argument controls whether we get the maximum no. of chars. *) val lpnFit = case maxWidth of NONE => null | SOME _ => malloc sizeInt val sizeVec = ref {cx=0, cy=0} val () = getTextExtentExPoint (hdc, s, count, getOpt(maxWidth, 0), lpnFit, vec, sizeVec) handle ex => (free vec; free lpnFit; raise ex) val fit = case maxWidth of NONE => NONE | _ => SOME(loadInt lpnFit) fun loadExt i = loadInt(vec ++ Word.fromInt i * sizeInt) val extents = List.tabulate(getOpt(fit, count), loadExt) val () = free vec val () = free lpnFit in {fit = fit, extents = extents, size = ! sizeVec} end end local val tabbedTextOut = winCall8 (user "TabbedTextOutA") (cHDC, cInt, cInt, cString, cInt, cInt, cPointer, cInt) cDWORDw val list2vec = list2Vector cInt in fun TabbedTextOut(hdc, {x, y}: POINT, str, tabs, origin): SIZE = let val (tabVec, nTabs) = case tabs of [] => (Memory.null, 0) (* Make the vector null. *) | _ => list2vec tabs val res = tabbedTextOut(hdc, x, y, str, size str, nTabs, tabVec, origin) handle ex => (Memory.free tabVec; raise ex) val () = Memory.free tabVec val () = checkResult(res <> 0w0) in (* Zero represents an error. But it's also possible to return zero if the string is empty. *) {cx = Word.toInt(LOWORD res), cy = Word.toInt(HIWORD res)} end end local val tabbedTextExtent = winCall5 (user "GetTabbedTextExtentA") (cHDC, cString, cInt, cInt, cPointer) cDWORDw (*(POSINT "GetTabbedTextExtent")*) in fun GetTabbedTextExtent(hdc, str, tabs): SIZE = let val (tabVec, nTabs) = case tabs of [] => (Memory.null, 0) (* Make the vector null. *) | _ => list2Vector cInt tabs val res = tabbedTextExtent(hdc, str, size str, nTabs, tabVec) handle ex => (Memory.free tabVec; raise ex) val () = Memory.free tabVec val () = checkResult(res <> 0w0) in {cx = Word.toInt(LOWORD res), cy = Word.toInt(HIWORD res)} end end (* Other Font and Text functions: DrawTextEx EnumFontFamiliesEx EnumFontFamExProc GetCharacterPlacement GetFontData GetFontLanguageInfo GetFontUnicodeRanges GetGlyphIndices GetGlyphOutline GetKerningPairs GetOutlineTextMetrics GetRasterizerCaps GetTabbedTextExtent PolyTextOut *) end end; polyml-5.7.1/mlsource/extra/Win/Listbox.sml0000644000175000017500000001521013204034553017650 0ustar daviddavid(* Copyright (c) 2001 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Listboxes. *) structure Listbox: sig structure Style: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW: flags and WS_CHILDWINDOW: flags and LBS_NOTIFY: flags and LBS_SORT: flags and LBS_NOREDRAW: flags and LBS_MULTIPLESEL: flags and LBS_OWNERDRAWFIXED: flags and LBS_OWNERDRAWVARIABLE: flags and LBS_HASSTRINGS: flags and LBS_USETABSTOPS: flags and LBS_NOINTEGRALHEIGHT: flags and LBS_MULTICOLUMN: flags and LBS_WANTKEYBOARDINPUT: flags and LBS_EXTENDEDSEL: flags and LBS_DISABLENOSCROLL: flags and LBS_NODATA: flags and LBS_NOSEL: flags and LBS_STANDARD: flags end structure Notifications: sig val LBN_SELCHANGE: int val LBN_DBLCLK: int val LBN_SELCANCEL: int val LBN_SETFOCUS: int val LBN_KILLFOCUS: int end datatype LBDirAttr = DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_ARCHIVE | DDL_POSTMSGS | DDL_DRIVES | DDL_EXCLUSIVE end = struct structure Style = struct open Window.Style (* Include all the windows styles. *) val LBS_NOTIFY = fromWord 0wx0001 val LBS_SORT = fromWord 0wx0002 val LBS_NOREDRAW = fromWord 0wx0004 val LBS_MULTIPLESEL = fromWord 0wx0008 val LBS_OWNERDRAWFIXED = fromWord 0wx0010 val LBS_OWNERDRAWVARIABLE = fromWord 0wx0020 val LBS_HASSTRINGS = fromWord 0wx0040 val LBS_USETABSTOPS = fromWord 0wx0080 val LBS_NOINTEGRALHEIGHT = fromWord 0wx0100 val LBS_MULTICOLUMN = fromWord 0wx0200 val LBS_WANTKEYBOARDINPUT = fromWord 0wx0400 val LBS_EXTENDEDSEL = fromWord 0wx0800 val LBS_DISABLENOSCROLL = fromWord 0wx1000 val LBS_NODATA = fromWord 0wx2000 val LBS_NOSEL = fromWord 0wx4000 val LBS_STANDARD = flags[LBS_NOTIFY, LBS_SORT, WS_VSCROLL, WS_BORDER] val all = flags[Window.Style.all, LBS_NOTIFY, LBS_SORT, LBS_NOREDRAW, LBS_MULTIPLESEL, LBS_OWNERDRAWFIXED, LBS_OWNERDRAWVARIABLE, LBS_HASSTRINGS, LBS_USETABSTOPS, LBS_NOINTEGRALHEIGHT, LBS_MULTICOLUMN, LBS_WANTKEYBOARDINPUT, LBS_EXTENDEDSEL, LBS_DISABLENOSCROLL, LBS_NODATA, LBS_NOSEL] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure Notifications = struct val LBN_SELCHANGE = 1 val LBN_DBLCLK = 2 val LBN_SELCANCEL = 3 val LBN_SETFOCUS = 4 val LBN_KILLFOCUS = 5 end datatype LBDirAttr = datatype ComboBase.CBDirAttr end; (* let open Listbox.Style val flagTable = [(LBS_NOTIFY, "LBS_NOTIFY"), (LBS_SORT, "LBS_SORT"), (LBS_NOREDRAW, "LBS_NOREDRAW"), (LBS_MULTIPLESEL, "LBS_MULTIPLESEL"), (LBS_OWNERDRAWFIXED, "LBS_OWNERDRAWFIXED"), (LBS_OWNERDRAWVARIABLE, "LBS_OWNERDRAWVARIABLE"), (LBS_HASSTRINGS, "LBS_HASSTRINGS"), (LBS_USETABSTOPS, "LBS_USETABSTOPS"), (LBS_NOINTEGRALHEIGHT, "LBS_NOINTEGRALHEIGHT"), (LBS_MULTICOLUMN, "LBS_MULTICOLUMN"), (LBS_WANTKEYBOARDINPUT, "LBS_WANTKEYBOARDINPUT"), (LBS_EXTENDEDSEL, "LBS_EXTENDEDSEL"), (LBS_DISABLENOSCROLL, "LBS_DISABLENOSCROLL"), (LBS_NODATA, "LBS_NODATA"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *)polyml-5.7.1/mlsource/extra/Win/DeviceContext.sml0000644000175000017500000007253513204034553021005 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure DeviceContext: sig type BITMAP and HDC and HGDIOBJ and HWND and HRGN type LOGBRUSH = Brush.LOGBRUSH type LOGFONT = Font.LOGFONT type LOGPEN = Pen.LOGPEN type POINT = {x: int, y: int} type StockObjectType val ANSI_FIXED_FONT : StockObjectType val ANSI_VAR_FONT : StockObjectType val BLACK_BRUSH : StockObjectType val BLACK_PEN : StockObjectType val CLR_INVALID : StockObjectType val DEFAULT_PALETTE : StockObjectType val DEVICE_DEFAULT_FONT : StockObjectType val DKGRAY_BRUSH : StockObjectType val GRAY_BRUSH : StockObjectType val HOLLOW_BRUSH : StockObjectType val LTGRAY_BRUSH : StockObjectType val NULL_BRUSH : StockObjectType val NULL_PEN : StockObjectType val OEM_FIXED_FONT : StockObjectType val SYSTEM_FIXED_FONT : StockObjectType val SYSTEM_FONT : StockObjectType val WHITE_BRUSH : StockObjectType val WHITE_PEN : StockObjectType val GetStockObject : StockObjectType -> HGDIOBJ eqtype DeviceItem val ASPECTX : DeviceItem val ASPECTXY : DeviceItem val ASPECTY : DeviceItem val BITSPIXEL : DeviceItem val CLIPCAPS : DeviceItem val COLORRES : DeviceItem val CURVECAPS : DeviceItem val DRIVERVERSION : DeviceItem val HORZRES : DeviceItem val HORZSIZE : DeviceItem val LINECAPS : DeviceItem val LOGPIXELSX : DeviceItem val LOGPIXELSY : DeviceItem val NUMBRUSHES : DeviceItem val NUMCOLORS : DeviceItem val NUMFONTS : DeviceItem val NUMMARKERS : DeviceItem val NUMPENS : DeviceItem val NUMRESERVED : DeviceItem val PDEVICESIZE : DeviceItem val PHYSICALHEIGHT : DeviceItem val PHYSICALOFFSETX : DeviceItem val PHYSICALOFFSETY : DeviceItem val PHYSICALWIDTH : DeviceItem val PLANES : DeviceItem val POLYGONALCAPS : DeviceItem val RASTERCAPS : DeviceItem val SCALINGFACTORX : DeviceItem val SCALINGFACTORY : DeviceItem val SIZEPALETTE : DeviceItem val TECHNOLOGY : DeviceItem val TEXTCAPS : DeviceItem val VERTRES : DeviceItem val VERTSIZE : DeviceItem val GetDeviceCaps : HDC * DeviceItem -> int (* Results of various calls to GetDeviceCaps. Perhaps its result type should be a union. *) val CC_CHORD : int val CC_CIRCLES : int val CC_ELLIPSES : int val CC_INTERIORS : int val CC_NONE : int val CC_PIE : int val CC_ROUNDRECT : int val CC_STYLED : int val CC_WIDE : int val CC_WIDESTYLED : int val CP_NONE : int val CP_RECTANGLE : int val CP_REGION : int val DT_CHARSTREAM : int val DT_DISPFILE : int val DT_METAFILE : int val DT_PLOTTER : int val DT_RASCAMERA : int val DT_RASDISPLAY : int val DT_RASPRINTER : int val LC_INTERIORS : int val LC_MARKER : int val LC_NONE : int val LC_POLYLINE : int val LC_POLYMARKER : int val LC_STYLED : int val LC_WIDE : int val LC_WIDESTYLED : int val PC_INTERIORS : int val PC_NONE : int val PC_PATHS : int val PC_POLYGON : int val PC_POLYPOLYGON : int val PC_RECTANGLE : int val PC_SCANLINE : int val PC_STYLED : int val PC_TRAPEZOID : int val PC_WIDE : int val PC_WIDESTYLED : int val PC_WINDPOLYGON : int val RC_BANDING : int val RC_BIGFONT : int val RC_BITBLT : int val RC_BITMAP64 : int val RC_DEVBITS : int val RC_DIBTODEV : int val RC_DI_BITMAP : int val RC_FLOODFILL : int val RC_GDI20_OUTPUT : int val RC_GDI20_STATE : int val RC_OP_DX_OUTPUT : int val RC_PALETTE : int val RC_SAVEBITMAP : int val RC_SCALING : int val RC_STRETCHBLT : int val RC_STRETCHDIB : int val TC_CP_STROKE : int val TC_CR_90 : int val TC_CR_ANY : int val TC_EA_DOUBLE : int val TC_IA_ABLE : int val TC_OP_CHARACTER : int val TC_OP_STROKE : int val TC_RA_ABLE : int val TC_RESERVED : int val TC_SA_CONTIN : int val TC_SA_DOUBLE : int val TC_SA_INTEGER : int val TC_SCROLLBLT : int val TC_SF_X_YINDEP : int val TC_SO_ABLE : int val TC_UA_ABLE : int val TC_VA_ABLE : int datatype DMColor = DMCOLOR_COLOR | DMCOLOR_MONOCHROME and DMDither = DMDITHER_COARSE | DMDITHER_FINE | DMDITHER_GRAYSCALE | DMDITHER_LINEART | DMDITHER_NONE | DMDITHER_OTHER of int and DMDuplex = DMDUP_HORIZONTAL | DMDUP_SIMPLEX | DMDUP_VERTICAL and DMICMIntent = DMICMINTENT_OTHER of int | DMICM_COLORMETRIC | DMICM_CONTRAST | DMICM_SATURATE and DMICMMethod = DMICMMETHOD_DEVICE | DMICMMETHOD_DRIVER | DMICMMETHOD_NONE | DMICMMETHOD_OTHER of int | DMICMMETHOD_SYSTEM and DMMedia = DMICMMEDIA_OTHER of int | DMMEDIA_GLOSSY | DMMEDIA_STANDARD | DMMEDIA_TRANSPARENCY and DMOrientation = DMORIENT_LANDSCAPE | DMORIENT_PORTRAIT and DMPaperSize = DMPAPER_10X11 | DMPAPER_10X14 | DMPAPER_11X17 | DMPAPER_15X11 | DMPAPER_9X11 | DMPAPER_A2 | DMPAPER_A3 | DMPAPER_A3_EXTRA | DMPAPER_A3_EXTRA_TRANSVERSE | DMPAPER_A3_TRANSVERSE | DMPAPER_A4 | DMPAPER_A4SMALL | DMPAPER_A4_EXTRA | DMPAPER_A4_PLUS | DMPAPER_A4_TRANSVERSE | DMPAPER_A5 | DMPAPER_A5_EXTRA | DMPAPER_A5_TRANSVERSE | DMPAPER_A_PLUS | DMPAPER_B4 | DMPAPER_B5 | DMPAPER_B5_EXTRA | DMPAPER_B5_TRANSVERSE | DMPAPER_B_PLUS | DMPAPER_CSHEET | DMPAPER_DSHEET | DMPAPER_ENV_10 | DMPAPER_ENV_11 | DMPAPER_ENV_12 | DMPAPER_ENV_14 | DMPAPER_ENV_9 | DMPAPER_ENV_B4 | DMPAPER_ENV_B5 | DMPAPER_ENV_B6 | DMPAPER_ENV_C3 | DMPAPER_ENV_C4 | DMPAPER_ENV_C5 | DMPAPER_ENV_C6 | DMPAPER_ENV_C65 | DMPAPER_ENV_DL | DMPAPER_ENV_INVITE | DMPAPER_ENV_ITALY | DMPAPER_ENV_MONARCH | DMPAPER_ENV_PERSONAL | DMPAPER_ESHEET | DMPAPER_EXECUTIVE | DMPAPER_FANFOLD_LGL_GERMAN | DMPAPER_FANFOLD_STD_GERMAN | DMPAPER_FANFOLD_US | DMPAPER_FOLIO | DMPAPER_ISO_B4 | DMPAPER_JAPANESE_POSTCARD | DMPAPER_LEDGER | DMPAPER_LEGAL | DMPAPER_LEGAL_EXTRA | DMPAPER_LETTER | DMPAPER_LETTERSMALL | DMPAPER_LETTER_EXTRA | DMPAPER_LETTER_EXTRA_TRANSVERSE | DMPAPER_LETTER_PLUS | DMPAPER_LETTER_TRANSVERSE | DMPAPER_NOTE | DMPAPER_OTHER of int | DMPAPER_QUARTO | DMPAPER_RESERVED_48 | DMPAPER_RESERVED_49 | DMPAPER_STATEMENT | DMPAPER_TABLOID | DMPAPER_TABLOID_EXTRA and DMResolution = DMRES_DPI of int | DMRES_DRAFT | DMRES_HIGH | DMRES_LOW | DMRES_MEDIUM and DMSource = DMBIN_AUTO | DMBIN_CASSETTE | DMBIN_ENVELOPE | DMBIN_ENVMANUAL | DMBIN_FORMSOURCE | DMBIN_LARGECAPACITY | DMBIN_LARGEFMT | DMBIN_LOWER | DMBIN_MANUAL | DMBIN_MIDDLE | DMBIN_ONLYONE | DMBIN_SMALLFMT | DMBIN_TRACTOR | DMBIN_UPPER | DMSOURCE_OTHER of int and DMTrueType = DMTT_BITMAP | DMTT_DOWNLOAD | DMTT_DOWNLOAD_OUTLINE | DMTT_SUBDEV type DEVMODE = { deviceName: string, driverVersion: int, orientation: DMOrientation option, paperSize: DMPaperSize option, paperLength: int option, paperWidth: int option, scale: int option, copies: int option, defaultSource: DMSource option, printQuality: DMResolution option, color: DMColor option, duplex: DMDuplex option, yResolution: int option, ttOption: DMTrueType option, collate: bool option, formName: string option, logPixels: int option, bitsPerPixel: int option, pelsWidth: int option, pelsHeight: int option, displayFlags: int option, (* Apparently no longer used. *) displayFrequency: int option, icmMethod: DMICMMethod option, icmIntent: DMICMIntent option, mediaType: DMMedia option, ditherType: DMDither option, panningWidth: int option, panningHeight: int option, driverPrivate: Word8Vector.vector } val CancelDC : HDC -> unit val CreateCompatibleDC : HDC -> HDC val CreateDC : string option * string option * string option * DEVMODE option -> HDC val DeleteDC : HDC -> unit val DeleteObject : HGDIOBJ -> unit datatype EnumObject = OBJ_BITMAP | OBJ_BRUSH | OBJ_DC | OBJ_ENHMETADC | OBJ_ENHMETAFILE | OBJ_EXTPEN | OBJ_FONT | OBJ_MEMDC | OBJ_METADC | OBJ_METAFILE | OBJ_PAL | OBJ_PEN | OBJ_REGION val GetCurrentObject : HDC * EnumObject -> HGDIOBJ val GetDC : HWND -> HDC datatype DeviceContextFlag = DCX_CACHE | DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_EXCLUDERGN | DCX_EXCLUDEUPDATE | DCX_INTERSECTRGN | DCX_INTERSECTUPDATE | DCX_LOCKWINDOWUPDATE | DCX_NORECOMPUTE | DCX_NORESETATTRS | DCX_PARENTCLIP | DCX_VALIDATE | DCX_WINDOW val GetDCEx : HWND * HRGN * DeviceContextFlag list -> HDC val GetDCOrgEx : HDC -> POINT datatype GetObject = GO_Bitmap of BITMAP | GO_Brush of LOGBRUSH | GO_Font of LOGFONT | GO_Palette of int | GO_Pen of LOGPEN val GetObject : HGDIOBJ -> GetObject val GetObjectType : HGDIOBJ -> EnumObject val ReleaseDC : HWND * HDC -> bool val ResetDC : HDC * DEVMODE -> HDC val RestoreDC : HDC * int -> unit val SaveDC : HDC -> int val SelectObject : HDC * HGDIOBJ -> HGDIOBJ type DEVNAMES = {driver: string, device: string, output: string, default: bool} end = struct local open Foreign Base fun checkDC c = (checkResult(not(isHdcNull c)); c) in type HDC = HDC and HGDIOBJ = HGDIOBJ and HWND = HWND and HRGN = HRGN type LOGFONT = Font.LOGFONT open GdiBase DeviceBase type POINT = POINT datatype DeviceContextFlag = DCX_WINDOW | DCX_CACHE | DCX_NORESETATTRS | DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_PARENTCLIP | DCX_EXCLUDERGN | DCX_INTERSECTRGN | DCX_EXCLUDEUPDATE | DCX_INTERSECTUPDATE | DCX_LOCKWINDOWUPDATE | DCX_NORECOMPUTE | DCX_VALIDATE local val tab = [ (DCX_WINDOW, 0wx00000001), (DCX_CACHE, 0wx00000002), (DCX_NORESETATTRS, 0wx00000004), (DCX_CLIPCHILDREN, 0wx00000008), (DCX_CLIPSIBLINGS, 0wx00000010), (DCX_PARENTCLIP, 0wx00000020), (DCX_EXCLUDERGN, 0wx00000040), (DCX_INTERSECTRGN, 0wx00000080), (DCX_EXCLUDEUPDATE, 0wx00000100), (DCX_INTERSECTUPDATE, 0wx00000200), (DCX_LOCKWINDOWUPDATE, 0wx00000400), (DCX_NORECOMPUTE, 0wx00100000), (DCX_VALIDATE, 0wx00200000)] in val DEVICECONTEXTFLAG = tableSetConversion(tab, NONE) end (* DEVNAMES is not actually used in this structure. *) type DEVNAMES = {driver: string, device: string, output: string, default: bool} datatype EnumObject = OBJ_PEN | OBJ_BRUSH | OBJ_DC | OBJ_METADC | OBJ_PAL | OBJ_FONT | OBJ_BITMAP | OBJ_REGION | OBJ_METAFILE | OBJ_MEMDC | OBJ_EXTPEN | OBJ_ENHMETADC | OBJ_ENHMETAFILE local val tab = [ (OBJ_PEN, 1), (OBJ_BRUSH, 2), (OBJ_DC, 3), (OBJ_METADC, 4), (OBJ_PAL, 5), (OBJ_FONT, 6), (OBJ_BITMAP, 7), (OBJ_REGION, 8), (OBJ_METAFILE, 9), (OBJ_MEMDC, 10), (OBJ_EXTPEN, 11), (OBJ_ENHMETADC, 12), (OBJ_ENHMETAFILE, 13) ] datatype EnumObject = W of int (* GetObjectType returns 0 in the event of an error. *) fun toInt _ = raise Match fun fromInt i = (checkResult(i <> 0); raise Match); in val ENUMOBJECT = tableConversion(tab, SOME(fromInt, toInt)) cUint end local datatype DeviceItem = W of int in type DeviceItem = DeviceItem val DEVICEITEM = absConversion {abs = W, rep = fn W n => n} cInt val DRIVERVERSION = W (0 (* Device driver version *)) val TECHNOLOGY = W (2 (* Device classification *)) val HORZSIZE = W (4 (* Horizontal size in millimeters *)) val VERTSIZE = W (6 (* Vertical size in millimeters *)) val HORZRES = W (8 (* Horizontal width in pixels *)) val VERTRES = W (10 (* Vertical width in pixels *)) val BITSPIXEL = W (12 (* Number of bits per pixel *)) val PLANES = W (14 (* Number of planes *)) val NUMBRUSHES = W (16 (* Number of brushes the device has *)) val NUMPENS = W (18 (* Number of pens the device has *)) val NUMMARKERS = W (20 (* Number of markers the device has *)) val NUMFONTS = W (22 (* Number of fonts the device has *)) val NUMCOLORS = W (24 (* Number of colors the device supports *)) val PDEVICESIZE = W (26 (* Size required for device descriptor *)) val CURVECAPS = W (28 (* Curve capabilities *)) val LINECAPS = W (30 (* Line capabilities *)) val POLYGONALCAPS = W (32 (* Polygonal capabilities *)) val TEXTCAPS = W (34 (* Text capabilities *)) val CLIPCAPS = W (36 (* Clipping capabilities *)) val RASTERCAPS = W (38 (* Bitblt capabilities *)) val ASPECTX = W (40 (* Length of the X leg *)) val ASPECTY = W (42 (* Length of the Y leg *)) val ASPECTXY = W (44 (* Length of the hypotenuse *)) val LOGPIXELSX = W (88 (* Logical pixels/inch in X *)) val LOGPIXELSY = W (90 (* Logical pixels/inch in Y *)) val SIZEPALETTE = W (104 (* Number of entries in physical palette *)) val NUMRESERVED = W (106 (* Number of reserved entries in palette *)) val COLORRES = W (108 (* Actual color resolution *)) val PHYSICALWIDTH = W (110 (* Physical Width in device units *)) val PHYSICALHEIGHT = W (111 (* Physical Height in device units *)) val PHYSICALOFFSETX = W (112 (* Physical Printable Area x margin *)) val PHYSICALOFFSETY = W (113 (* Physical Printable Area y margin *)) val SCALINGFACTORX = W (114 (* Scaling factor x *)) val SCALINGFACTORY = W (115 (* Scaling factor y *)) end (* Results of GetDeviceCaps. Since it returns an int all these are simply ints. *) val DT_PLOTTER = 0 (* Vector plotter *) val DT_RASDISPLAY = 1 (* Raster display *) val DT_RASPRINTER = 2 (* Raster printer *) val DT_RASCAMERA = 3 (* Raster camera *) val DT_CHARSTREAM = 4 (* Character-stream, PLP *) val DT_METAFILE = 5 (* Metafile, VDM *) val DT_DISPFILE = 6 (* Display-file *) (* Curve Capabilities *) val CC_NONE = 0 (* Curves not supported *) val CC_CIRCLES = 1 (* Can do circles *) val CC_PIE = 2 (* Can do pie wedges *) val CC_CHORD = 4 (* Can do chord arcs *) val CC_ELLIPSES = 8 (* Can do ellipese *) val CC_WIDE = 16 (* Can do wide lines *) val CC_STYLED = 32 (* Can do styled lines *) val CC_WIDESTYLED = 64 (* Can do wide styled lines *) val CC_INTERIORS = 128 (* Can do interiors *) val CC_ROUNDRECT = 256 (* *) (* Line Capabilities *) val LC_NONE = 0 (* Lines not supported *) val LC_POLYLINE = 2 (* Can do polylines *) val LC_MARKER = 4 (* Can do markers *) val LC_POLYMARKER = 8 (* Can do polymarkers *) val LC_WIDE = 16 (* Can do wide lines *) val LC_STYLED = 32 (* Can do styled lines *) val LC_WIDESTYLED = 64 (* Can do wide styled lines *) val LC_INTERIORS = 128 (* Can do interiors *) (* Polygonal Capabilities *) val PC_NONE = 0 (* Polygonals not supported *) val PC_POLYGON = 1 (* Can do polygons *) val PC_RECTANGLE = 2 (* Can do rectangles *) val PC_WINDPOLYGON = 4 (* Can do winding polygons *) val PC_TRAPEZOID = 4 (* Can do trapezoids *) val PC_SCANLINE = 8 (* Can do scanlines *) val PC_WIDE = 16 (* Can do wide borders *) val PC_STYLED = 32 (* Can do styled borders *) val PC_WIDESTYLED = 64 (* Can do wide styled borders *) val PC_INTERIORS = 128 (* Can do interiors *) val PC_POLYPOLYGON = 256 (* Can do polypolygons *) val PC_PATHS = 512 (* Can do paths *) (* Clipping Capabilities *) val CP_NONE = 0 (* No clipping of output *) val CP_RECTANGLE = 1 (* Output clipped to rects *) val CP_REGION = 2 (* obsolete *) (* Text Capabilities *) val TC_OP_CHARACTER = 0x00000001 (* Can do OutputPrecision CHARACTER *) val TC_OP_STROKE = 0x00000002 (* Can do OutputPrecision STROKE *) val TC_CP_STROKE = 0x00000004 (* Can do ClipPrecision STROKE *) val TC_CR_90 = 0x00000008 (* Can do CharRotAbility 90 *) val TC_CR_ANY = 0x00000010 (* Can do CharRotAbility ANY *) val TC_SF_X_YINDEP = 0x00000020 (* Can do ScaleFreedom X_YINDEPENDENT *) val TC_SA_DOUBLE = 0x00000040 (* Can do ScaleAbility DOUBLE *) val TC_SA_INTEGER = 0x00000080 (* Can do ScaleAbility INTEGER *) val TC_SA_CONTIN = 0x00000100 (* Can do ScaleAbility CONTINUOUS *) val TC_EA_DOUBLE = 0x00000200 (* Can do EmboldenAbility DOUBLE *) val TC_IA_ABLE = 0x00000400 (* Can do ItalisizeAbility ABLE *) val TC_UA_ABLE = 0x00000800 (* Can do UnderlineAbility ABLE *) val TC_SO_ABLE = 0x00001000 (* Can do StrikeOutAbility ABLE *) val TC_RA_ABLE = 0x00002000 (* Can do RasterFontAble ABLE *) val TC_VA_ABLE = 0x00004000 (* Can do VectorFontAble ABLE *) val TC_RESERVED = 0x00008000 val TC_SCROLLBLT = 0x00010000 (* Don't do text scroll with blt *) (* Raster Capabilities *) val RC_BITBLT = 1 (* Can do standard BLT. *) val RC_BANDING = 2 (* Device requires banding support *) val RC_SCALING = 4 (* Device requires scaling support *) val RC_BITMAP64 = 8 (* Device can support >64K bitmap *) val RC_GDI20_OUTPUT = 0x0010 (* has 2.0 output calls *) val RC_GDI20_STATE = 0x0020 val RC_SAVEBITMAP = 0x0040 val RC_DI_BITMAP = 0x0080 (* supports DIB to memory *) val RC_PALETTE = 0x0100 (* supports a palette *) val RC_DIBTODEV = 0x0200 (* supports DIBitsToDevice *) val RC_BIGFONT = 0x0400 (* supports >64K fonts *) val RC_STRETCHBLT = 0x0800 (* supports StretchBlt *) val RC_FLOODFILL = 0x1000 (* supports FloodFill *) val RC_STRETCHDIB = 0x2000 (* supports StretchDIBits *) val RC_OP_DX_OUTPUT = 0x4000 val RC_DEVBITS = 0x8000 local datatype StockObjectType = W of int in type StockObjectType = StockObjectType val STOCKOBJECTTYPE = absConversion {abs = W, rep = fn W n => n} cInt val WHITE_BRUSH = W (0) val LTGRAY_BRUSH = W (1) val GRAY_BRUSH = W (2) val DKGRAY_BRUSH = W (3) val BLACK_BRUSH = W (4) val NULL_BRUSH = W (5) val HOLLOW_BRUSH = NULL_BRUSH val WHITE_PEN = W (6) val BLACK_PEN = W (7) val NULL_PEN = W (8) val OEM_FIXED_FONT = W (10) val ANSI_FIXED_FONT = W (11) val ANSI_VAR_FONT = W (12) val SYSTEM_FONT = W (13) val DEVICE_DEFAULT_FONT = W (14) val DEFAULT_PALETTE = W (15) val SYSTEM_FIXED_FONT = W (16) (*val STOCK_LAST = W (16)*) val CLR_INVALID = W (0xFFFFFFFF) end val CancelDC = winCall1(gdi "CancelDC") (cHDC) (successState "CancelDC") val CreateCompatibleDC = winCall1(gdi "CreateCompatibleDC") (cHDC) cHDC val DeleteDC = winCall1(gdi "DeleteDC") (cHDC) (successState "DeleteDC") val DeleteObject = winCall1(gdi "DeleteObject") (cHGDIOBJ) (successState "DeleteObject") val GetCurrentObject = winCall2(gdi "GetCurrentObject") (cHDC,ENUMOBJECT) cHGDIOBJ val GetDC = checkDC o winCall1(user "GetDC") (cHWND) cHDC val GetDCEx = checkDC o winCall3(user "GetDCEx") (cHWND,cHRGN,DEVICECONTEXTFLAG) cHDC local val getDCOrgEx = winCall2(gdi "GetDCOrgEx") (cHDC, cStar cPoint) (successState "GetDCOrgEx") in fun GetDCOrgEx hdc = let val v = ref {x=0, y=0} in getDCOrgEx(hdc, v); !v end end val GetDeviceCaps = winCall2(gdi "GetDeviceCaps") (cHDC,DEVICEITEM) cInt val GetObjectType = winCall1(gdi "GetObjectType") (cHGDIOBJ) ENUMOBJECT val GetStockObject = winCall1 (gdi "GetStockObject") (STOCKOBJECTTYPE) cHGDIOBJ val ReleaseDC = winCall2(user "ReleaseDC") (cHWND,cHDC) cBool val RestoreDC = winCall2(gdi "RestoreDC") (cHDC,cInt) (successState "RestoreDC") val SaveDC = winCall1(gdi "SaveDC") (cHDC) cInt val ResetDC = winCall2 (gdi "ResetDC") (cHDC, LPDEVMODE) cHDC (* The result of SelectObject is a bit of a mess. It is the original object being replaced except if the argument is a region when it returns a RESULTREGION. Perhaps we need a different function for that. *) val SelectObject = winCall2(gdi "SelectObject") (cHDC,cHGDIOBJ) cHGDIOBJ val CreateDC = winCall4 (gdi "CreateDCA") (STRINGOPT, STRINGOPT, STRINGOPT, cOptionPtr LPDEVMODE) cHDC (* GetObject returns information about different kinds of GDI object. It takes a pointer to a structure whose size and format differ according to the type of object. To implement this properly in ML we have to find out the type before we start. *) datatype GetObject = GO_Bitmap of BITMAP (*| GO_DIBSection of DIBSECTION*) (* This is a subset of BITMAP *) (*| GO_ExPen of EXTLOGPEN*) | GO_Brush of LOGBRUSH | GO_Font of LOGFONT | GO_Pen of LOGPEN | GO_Palette of int local val getObj = winCall3 (gdi "GetObjectA") (cHGDIOBJ, cInt, cPointer) cInt val {load=fromCBM, ...} = breakConversion cBITMAP val {load=fromCLF, ...} = breakConversion FontBase.cLOGFONT val {load=fromCLB, ...} = breakConversion cLOGBRUSH val {load=fromCLP, ...} = breakConversion cLOGPEN val {load=fromCshort, ...} = breakConversion cShort in fun GetObject(hgdi: HGDIOBJ): GetObject = let (* Call with a NULL buffer to find out the memory required. Also checks the GDI object. *) open Memory val space = getObj(hgdi, 0, Memory.null) val _ = checkResult(space > 0); val mem = malloc (Word.fromInt space) val _ = getObj(hgdi, space, mem) handle ex => (free mem; raise ex) in (case GetObjectType hgdi of OBJ_PEN => GO_Pen(fromCLP mem) | OBJ_BRUSH => GO_Brush(fromCLB mem) | OBJ_BITMAP => GO_Bitmap(fromCBM mem) | OBJ_FONT => GO_Font(fromCLF mem) (*| OBJ_EXPEN => *) (* TODO!!*) | OBJ_PAL => GO_Palette(fromCshort mem) (* Number of entries. *) | _ => raise Fail "Different type") before free mem end end (* Other Device context functions: ChangeDisplaySettings ChangeDisplaySettingsEx CreateIC DeviceCapabilities DrawEscape EnumDisplayDevices EnumDisplaySettings EnumObjects EnumObjectsProc GetDCBrushColor - NT 5.0 and Win 98 only GetDCPenColor - NT 5.0 and Win 98 only SetDCBrushColor - NT 5.0 and Win 98 only SetDCPenColor - NT 5.0 and Win 98 only *) end end; polyml-5.7.1/mlsource/extra/Win/Dialog.sml0000644000175000017500000005571013204034553017434 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Dialogue boxes and operations on them. *) structure Dialog: sig type HWND and HINSTANCE datatype DLGCLASSES = DLG_CLASS of string * Window.Style.flags | DLG_BUTTON of Button.Style.flags | DLG_COMBOBOX of Combobox.Style.flags | DLG_EDIT of Edit.Style.flags | DLG_LISTBOX of Listbox.Style.flags | DLG_SCROLLBAR of Scrollbar.Style.flags | DLG_STATIC of Static.Style.flags datatype DLGTITLE = DLG_TITLERESOURCE of int | DLG_TITLESTRING of string structure Style: sig include BIT_FLAGS val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and DS_3DLOOK: flags and DS_ABSALIGN: flags and DS_CENTER: flags and DS_CENTERMOUSE: flags and DS_CONTEXTHELP: flags and DS_CONTROL: flags and DS_FIXEDSYS: flags and DS_LOCALEDIT: flags and DS_MODALFRAME: flags and DS_NOFAILCREATE: flags and DS_NOIDLEMSG: flags and DS_SETFONT: flags and DS_SETFOREGROUND: flags and DS_SYSMODAL: flags end type DLGITEMTEMPLATE = { extendedStyle: int, x: int, y: int, cx : int, cy: int, id: int, class: DLGCLASSES, title: DLGTITLE, creationData: Word8Vector.vector option } type DLGTEMPLATE = { style: Style.flags, extendedStyle: int, x : int, y: int, cx: int, cy: int, menu: Resource.RESID option, class: Resource.RESID option, title: string, font: (int * string) option, items: DLGITEMTEMPLATE list } val DialogBox : HINSTANCE * Resource.RESID * HWND * (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> int val DialogBoxIndirect: HINSTANCE * DLGTEMPLATE * HWND * (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> int val CreateDialog : HINSTANCE * Resource.RESID * HWND * (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> HWND val CreateDialogIndirect: HINSTANCE * DLGTEMPLATE * HWND * (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> HWND val GetDialogBaseUnits : unit -> {horizontal: int, vertical: int} val GetDlgCtrlID: HWND -> int and GetDlgItem: HWND * int -> HWND and GetDlgItemText: HWND * int -> string and IsDialogMessage: HWND * Message.MSG -> bool and EndDialog: HWND * int -> unit (* MessageBox and MessageBeep are in the MessageBox structure. *) (* CreateDialogIndirectParam CreateDialogParam DefDlgProc - Used to create custom dialogues DialogBoxIndirectParam DialogBoxParam DialogProc GetDlgItemInt - Ignore - probably better done with Int.toString SetDlgItemInt - ditto GetNextDlgGroupItem GetNextDlgTabItem MapDialogRect MessageBoxEx SendDlgItemMessage SetDlgItemText MessageBoxIndirect *) val compileTemplate : DLGTEMPLATE -> Word8Vector.vector val decompileTemplate : Word8Vector.vector -> DLGTEMPLATE end = struct local open Foreign open Base open Globals open Window open Resource fun checkWindow c = (checkResult(not(isHNull c)); c) (* Dialogue procedures never call DefWindowProc. *) fun dlgProcRes (lres, state) = (lres, state) in type HWND = HWND and HINSTANCE = HINSTANCE datatype DLGCLASSES = DLG_CLASS of string * Window.Style.flags (* Named window class. *) | DLG_BUTTON of Button.Style.flags | DLG_EDIT of Edit.Style.flags | DLG_STATIC of Static.Style.flags | DLG_LISTBOX of Listbox.Style.flags | DLG_SCROLLBAR of Scrollbar.Style.flags | DLG_COMBOBOX of Combobox.Style.flags datatype DLGTITLE = DLG_TITLESTRING of string | DLG_TITLERESOURCE of int structure Style = struct open Window.Style (* Include all the windows styles. *) val DS_ABSALIGN: flags = fromWord 0wx0001 val DS_SYSMODAL: flags = fromWord 0wx0002 val DS_LOCALEDIT: flags = fromWord 0wx0020 val DS_SETFONT: flags = fromWord 0wx0040 val DS_MODALFRAME: flags = fromWord 0wx0080 val DS_NOIDLEMSG: flags = fromWord 0wx0100 val DS_SETFOREGROUND: flags = fromWord 0wx0200 val DS_3DLOOK: flags = fromWord 0wx0004 val DS_FIXEDSYS: flags = fromWord 0wx0008 val DS_NOFAILCREATE: flags = fromWord 0wx0010 val DS_CONTROL: flags = fromWord 0wx0400 val DS_CENTER: flags = fromWord 0wx0800 val DS_CENTERMOUSE: flags = fromWord 0wx1000 val DS_CONTEXTHELP: flags = fromWord 0wx2000 val all = flags[Window.Style.all, DS_ABSALIGN, DS_SYSMODAL, DS_LOCALEDIT, DS_SETFONT, DS_MODALFRAME, DS_NOIDLEMSG, DS_SETFOREGROUND, DS_3DLOOK, DS_FIXEDSYS, DS_NOFAILCREATE, DS_CONTROL, DS_CENTER, DS_CENTERMOUSE, DS_CONTEXTHELP] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end type DLGITEMTEMPLATE = { extendedStyle: int, x: int, y: int, cx : int, cy: int, id: int, class: DLGCLASSES, title: DLGTITLE, creationData: Word8Vector.vector option } type DLGTEMPLATE = { style: Style.flags, extendedStyle: int, x : int, y: int, cx: int, cy: int, menu: Resource.RESID option, class: Resource.RESID option, title: string, font: (int * string) option, items: DLGITEMTEMPLATE list } (* Convert between the data structures and the templates. *) (* TODO: This only deals with the basic templates not the extended versions. *) fun decompileTemplate (w: Word8Vector.vector): DLGTEMPLATE = let val ptr = ref 0 val isExtended = PackWord32Little.subVec(w, 0) = 0wxFFFF0001 val _ = if isExtended then raise Fail "Extended templates not implemented" else (); val style = PackWord32Little.subVec(w, !ptr div 4) val _ = ptr := !ptr + 4; val exStyle = LargeWord.toInt(PackWord32Little.subVec(w, !ptr div 4)) val _ = ptr := !ptr + 4; val cdit = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val x = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val y = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val cx = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val cy = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; (* Extract a null-terminated Unicode string and advance ptr beyond it. *) fun getString () = let val start = !ptr fun advance () = let val next = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) in ptr := !ptr + 2; if next = 0 then () else advance() end in advance(); unicodeToString(Word8VectorSlice.vector(Word8VectorSlice.slice(w, start, SOME(!ptr-start-2)))) end fun ffffOrString(): Resource.RESID = let val next = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) in if next = 0xffff then ( (* Resource identifier. *) ptr := !ptr + 4; Resource.IdAsInt(LargeWord.toInt(PackWord16Little.subVec(w, (!ptr-2) div 2))) ) else (* Resource name. *) Resource.IdAsString(getString()) end (* Menu. *) val menu = case ffffOrString() of Resource.IdAsString "" => NONE | r => SOME r (* Class. *) val class = case ffffOrString() of Resource.IdAsString "" => NONE | r => SOME r (* Title - null terminated Unicode string. *) val title = getString() (* Font - only if DS_SETFONT included in the style. *) val font = if Style.anySet(Style.fromWord style, Style.DS_SETFONT) then let val size = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2 val name = getString() in SOME(size, name) end else NONE (* Items. *) fun processItem _ : DLGITEMTEMPLATE = let (* Must be aligned onto a DWORD boundary. *) val _ = while !ptr mod 4 <> 0 do ptr := !ptr + 1; val style = PackWord32Little.subVec(w, !ptr div 4) val _ = ptr := !ptr + 4; val exStyle = LargeWord.toInt(PackWord32Little.subVec(w, !ptr div 4)) val _ = ptr := !ptr + 4; val x = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val y = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val cx = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val cy = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val id = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val class = case ffffOrString() of Resource.IdAsString s => DLG_CLASS (s, Window.Style.fromWord style) | Resource.IdAsInt 0x0080 => DLG_BUTTON (Button.Style.fromWord style) | Resource.IdAsInt 0x0081 => DLG_EDIT (Edit.Style.fromWord style) | Resource.IdAsInt 0x0082 => DLG_STATIC (Static.Style.fromWord style) | Resource.IdAsInt 0x0083 => DLG_LISTBOX (Listbox.Style.fromWord style) | Resource.IdAsInt 0x0084 => DLG_SCROLLBAR (Scrollbar.Style.fromWord style) | Resource.IdAsInt 0x0085 => DLG_COMBOBOX (Combobox.Style.fromWord style) | _ => raise Fail "Unknown dialog type" val title = case ffffOrString() of Resource.IdAsString s => DLG_TITLESTRING s | Resource.IdAsInt i => DLG_TITLERESOURCE i val creation = let val length = LargeWord.toInt(PackWord16Little.subVec(w, !ptr div 2)) val _ = ptr := !ptr + 2; val start = !ptr val _ = ptr := !ptr + length in if length = 0 then NONE else SOME(Word8VectorSlice.vector(Word8VectorSlice.slice(w, start, SOME length))) end in { extendedStyle = exStyle, x = x, y = y, cx = cx, cy = cy, id = id, class = class, title = title, creationData = creation } end in { style = Style.fromWord style, extendedStyle = exStyle, x = x, y = y, cx = cx, cy = cy, menu = menu, class = class, title = title, font = font, items = List.tabulate(cdit, processItem) } end; (* Generate a dialogue template in memory. *) fun compileTemplate (t: DLGTEMPLATE) = let val basis = Word8Array.array (18, 0w0) val nullString = Word8Vector.tabulate(2, fn _ => 0w0) (* Force DS_SETFONT in the style according to whether we have a font specified. *) val style = if #font t = NONE then Style.clear(Style.DS_SETFONT, #style t) else Style.flags[#style t, Style.DS_SETFONT] val _ = PackWord32Little.update(basis, 0, Style.toWord style); val _ = PackWord32Little.update(basis, 1, LargeWord.fromInt(#extendedStyle t)); val _ = PackWord16Little.update(basis, 4, LargeWord.fromInt(List.length(#items t))); val _ = PackWord16Little.update(basis, 5, LargeWord.fromInt(#x t)); val _ = PackWord16Little.update(basis, 6, LargeWord.fromInt(#y t)); val _ = PackWord16Little.update(basis, 7, LargeWord.fromInt(#cx t)); val _ = PackWord16Little.update(basis, 8, LargeWord.fromInt(#cy t)); fun unicodeString s = Word8Vector.concat[stringToUnicode s, nullString] fun resOrString (Resource.IdAsString s) = unicodeString s | resOrString (Resource.IdAsInt i) = Word8Vector.fromList [0wxff, 0wxff, Word8.fromInt i, Word8.fromInt(i div 256)] val menu = case #menu t of NONE => nullString | SOME r => resOrString r val class = case #class t of NONE => nullString | SOME r => resOrString r val title = unicodeString(#title t) val font = case #font t of SOME (size, name) => [Word8Vector.fromList [Word8.fromInt size, Word8.fromInt(size div 256)], stringToUnicode name, nullString] | NONE => [] fun compileItems [] = [] | compileItems((t: DLGITEMTEMPLATE) :: rest) = let val basis = Word8Array.array(18, 0w0) val (style, class) = case #class t of DLG_CLASS(c, s) => (Window.Style.toWord s, Resource.IdAsString c) | DLG_BUTTON s => (Button.Style.toWord s, Resource.IdAsInt 0x80) | DLG_COMBOBOX s => (Combobox.Style.toWord s, Resource.IdAsInt 0x85) | DLG_EDIT s => (Edit.Style.toWord s, Resource.IdAsInt 0x81) | DLG_LISTBOX s => (Listbox.Style.toWord s, Resource.IdAsInt 0x83) | DLG_SCROLLBAR s => (Scrollbar.Style.toWord s, Resource.IdAsInt 0x84) | DLG_STATIC s => (Static.Style.toWord s, Resource.IdAsInt 0x82) val _ = PackWord32Little.update(basis, 0, style); val _ = PackWord32Little.update(basis, 1, LargeWord.fromInt(#extendedStyle t)); val _ = PackWord16Little.update(basis, 4, LargeWord.fromInt(#x t)); val _ = PackWord16Little.update(basis, 5, LargeWord.fromInt(#y t)); val _ = PackWord16Little.update(basis, 6, LargeWord.fromInt(#cx t)); val _ = PackWord16Little.update(basis, 7, LargeWord.fromInt(#cy t)); val _ = PackWord16Little.update(basis, 8, LargeWord.fromInt(#id t)); val title = resOrString( case #title t of DLG_TITLESTRING s => Resource.IdAsString s | DLG_TITLERESOURCE i => Resource.IdAsInt i) val creation = case #creationData t of NONE => [nullString] | SOME r => [r, nullString] val vec = Word8Vector.concat (Word8ArraySlice.vector(Word8ArraySlice.full basis) :: resOrString class :: title :: creation) val rounding = Word8Vector.length vec mod 4 in (* Must align onto a 4-byte boundary except for the last. *) (if rounding = 0 orelse rest = nil then vec else Word8Vector.concat[vec, Word8Vector.tabulate(4-rounding, fn _ => 0w0)]) :: compileItems rest end val header = Word8Vector.concat (Word8ArraySlice.vector(Word8ArraySlice.full basis) :: menu :: class :: title :: font) val rounding = Word8Vector.length header mod 4 val alignment = Word8Vector.tabulate(4-rounding, fn _ => 0w0) in Word8Vector.concat(header :: alignment :: compileItems (#items t)) end (* CreateDialogIndirect: Create a modeless dialogue using a resource. *) local val sysCreateDialog = winCall5 (user "CreateDialogParamA") (cHINSTANCE, cRESID, cHWND, cFunction, cLPARAM) cHWND in fun CreateDialog (hInst, lpTemplate, hWndParent, dialogueProc, init) = let val _ = Message.setCallback(dlgProcRes o dialogueProc, init); val res = checkWindow (sysCreateDialog(hInst, lpTemplate, hWndParent, Message.mainWinProc, 0)) in (* Add this to the modeless dialogue list so that keyboard operations will work. *) Message.addModelessDialogue(res, NONE); res end end (* CreateDialogIndirect: Create a modeless dialogue from a template. *) local val sysCreateDialogIndirect = winCall5 (user "CreateDialogIndirectParamA") (cHINSTANCE, cPointer, cHWND, cFunction, cLPARAM) cHWND in fun CreateDialogIndirect (hInst, template, hWndParent, dialogueProc, init) = let val _ = Message.setCallback(dlgProcRes o dialogueProc, init); (* Compile the template and copy it to C memory. *) val compiled = compileTemplate template val size = Word8Vector.length compiled open Memory val templ = malloc (Word.fromInt size) fun copyToBuf(i, v) = set8(templ, Word.fromInt i, v) val () = Word8Vector.appi copyToBuf compiled val res = checkWindow (sysCreateDialogIndirect(hInst, templ, hWndParent, Message.mainWinProc, 0)) val () = free templ in (* Add this to the modeless dialogue list so that keyboard operations will work. *) Message.addModelessDialogue(res, NONE); res end end (* DialogBox: create a dialogue using a resource. *) local val sysDialogBox = winCall5 (user "DialogBoxParamA") (cHINSTANCE, cRESID, cHWND, cFunction, cLPARAM) cINT_PTR in fun DialogBox (hInst, lpTemplate, hWndParent, dialogueProc, init) = let (* We can use the normal window procedure as a dialogue proc. *) val _ = Message.setCallback(dlgProcRes o dialogueProc, init); val result = sysDialogBox(hInst, lpTemplate, hWndParent, Message.mainWinProc, 0) in (* How do we remove the callback? Look for the last message? *) result end end (* DialogBoxIndirect: create a dialogue using a template. *) local val sysDialogBoxIndirect = winCall5 (user "DialogBoxIndirectParamA") (cHINSTANCE, cPointer, cHWND, cFunction, cLPARAM) cINT_PTR in fun DialogBoxIndirect (hInst, template, hWndParent, dialogueProc, init) = let val _ = Message.setCallback(dlgProcRes o dialogueProc, init); (* Compile the template and copy it to C memory. *) val compiled = compileTemplate template val size = Word8Vector.length compiled open Memory val templ = malloc (Word.fromInt size) fun copyToBuf(i, v) = set8(templ, Word.fromInt i, v) val _ = Word8Vector.appi copyToBuf compiled in sysDialogBoxIndirect(hInst, templ, hWndParent, Message.mainWinProc, 0) before free templ end end (* Get average size of system font. *) local val getDialogBaseUnits = winCall0 (user "GetDialogBaseUnits") () cDWORDw (* Actually LONG *) in fun GetDialogBaseUnits() : {horizontal: int, vertical: int} = let val base = getDialogBaseUnits () in {horizontal = Word.toInt(LOWORD base), vertical = Word.toInt(HIWORD base)} end end val GetDlgCtrlID = winCall1 (user "GetDlgCtrlID") cHWND cInt and GetDlgItem = winCall2 (user "GetDlgItem") (cHWND, cInt) cHWND val GetDlgItemText = Window.GetWindowText o GetDlgItem val IsDialogMessage = winCall2 (user "IsDialogMessage") (cHWND, Message.LPMSG) cBool val EndDialog = winCall2 (user "EndDialog") (cHWND, cINT_PTR) (successState "EndDialog") end end; polyml-5.7.1/mlsource/extra/Win/ScrollBase.sml0000644000175000017500000000550213204034553020260 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ScrollBase = struct local open Foreign Base in type enableArrows = { enableLeftUp: bool, enableRightDown: bool } val ESB_ENABLE_BOTH = { enableLeftUp = true, enableRightDown = true } val ESB_DISABLE_BOTH = { enableLeftUp = false, enableRightDown = false } val ESB_DISABLE_LEFT = { enableLeftUp = false, enableRightDown = true } val ESB_DISABLE_RIGHT = { enableLeftUp = true, enableRightDown = false } val ESB_DISABLE_UP = ESB_DISABLE_LEFT val ESB_DISABLE_DOWN = ESB_DISABLE_RIGHT local (* The arrows are disabled if the bit is set. *) fun toInt({enableLeftUp: bool, enableRightDown}: enableArrows) = IntInf.orb(if enableLeftUp then 0 else 1, if enableRightDown then 0 else 2) and fromInt i : enableArrows = {enableLeftUp = IntInf.andb(i, 1) = 0, enableRightDown = IntInf.andb(i, 2) = 0} in (* It's easier to use the functions directly for messages *) val ENABLESCROLLBARFLAG = (toInt, fromInt) val cENABLESCROLLBARFLAG = absConversion{rep = toInt, abs = fromInt} cUint end type SCROLLINFO = { minPos: int, maxPos: int, pageSize: int, pos: int, trackPos: int } datatype ScrollInfoOption = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_DISABLENOSCROLL | SIF_TRACKPOS val SIF_ALL = [SIF_RANGE, SIF_PAGE, SIF_POS, SIF_TRACKPOS] local val tab = [ (SIF_RANGE, 0wx0001), (SIF_PAGE, 0wx0002), (SIF_POS, 0wx0004), (SIF_DISABLENOSCROLL, 0wx0008), (SIF_TRACKPOS, 0wx0010)] in (*val (fromSIF, toSIF) = tableSetLookup(tab, NONE)*) val cSCROLLINFOOPTION = tableSetConversion(tab, NONE) end (* Needed in Scrollbar and also Messages *) val cSCROLLINFOSTRUCT = cStruct7(cUint, cSCROLLINFOOPTION, cInt, cInt, cUint, cInt, cInt) end end; polyml-5.7.1/mlsource/extra/Win/ComboBase.sml0000644000175000017500000000275413204034553020067 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ComboBase = struct local open Foreign Base in datatype CBDirAttr = DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_ARCHIVE | DDL_POSTMSGS | DDL_DRIVES | DDL_EXCLUSIVE local val tab = [ (DDL_READWRITE, 0wx0000), (DDL_READONLY, 0wx0001), (DDL_HIDDEN, 0wx0002), (DDL_SYSTEM, 0wx0004), (DDL_DIRECTORY, 0wx0010), (DDL_ARCHIVE, 0wx0020), (DDL_POSTMSGS, 0wx2000), (DDL_DRIVES, 0wx4000), (DDL_EXCLUSIVE, 0wx8000) ] in val CBDIRATTRS = tableSetLookup(tab, NONE) end end end; polyml-5.7.1/mlsource/extra/Win/Region.sml0000644000175000017500000002050613204034553017453 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Region: sig type HDC and HBRUSH and HRGN and HPEN type POINT = { x: int, y: int } type RECT = { top: int, left: int, bottom: int, right: int } type RegionOperation val RGN_AND : RegionOperation val RGN_COPY : RegionOperation val RGN_DIFF : RegionOperation val RGN_ERROR : RegionOperation val RGN_OR : RegionOperation val RGN_XOR : RegionOperation type ResultRegion val COMPLEXREGION : ResultRegion val NULLREGION : ResultRegion val ERROR : ResultRegion val SIMPLEREGION : ResultRegion type PolyFillMode val ALTERNATE : PolyFillMode val WINDING : PolyFillMode val CombineRgn : HRGN * HRGN * HRGN * RegionOperation -> ResultRegion val CreateEllipticRgn : RECT -> HRGN val CreatePolygonRgn : POINT list * PolyFillMode -> HRGN val CreateRectRgn : RECT -> HRGN val CreateRoundRectRgn : RECT * int * int -> HRGN val EqualRgn : HRGN * HRGN -> bool val FillRgn : HDC * HRGN * HBRUSH -> unit val FrameRgn : HDC * HRGN * HBRUSH * int * int -> unit val GetPolyFillMode : HDC -> PolyFillMode val GetRgnBox : HRGN -> RECT val InvertRgn : HDC * HRGN -> unit val OffsetRgn : HRGN * int * int -> ResultRegion val PaintRgn : HDC * HRGN -> unit val PtInRegion : HRGN * int * int -> bool val RectInRegion : HRGN * RECT -> bool val SetPolyFillMode : HDC * PolyFillMode -> PolyFillMode val SetRectRgn : HRGN * RECT -> unit end = struct local open Foreign Base in type HRGN = Base.HRGN and HBRUSH = Base.HBRUSH and HDC = Base.HDC and HPEN = HPEN and RECT = RECT and POINT = POINT open GdiBase local datatype PolyFillMode = W of int in type PolyFillMode = PolyFillMode val POLYFILLMODE = absConversion {abs = W, rep = fn W n => n} cInt val ALTERNATE = W (1) val WINDING = W (2) end val CombineRgn = winCall4(gdi "CombineRgn") (cHRGN,cHRGN,cHRGN,REGIONOPERATION) RESULTREGION val EqualRgn = winCall2(gdi "EqualRgn") (cHRGN,cHRGN) cBool val FillRgn = winCall3(gdi "FillRgn") (cHDC,cHRGN,cHBRUSH) (successState "FillRgn") val FrameRgn = winCall5(gdi "FrameRgn") (cHDC,cHRGN,cHBRUSH,cInt,cInt) (successState "FrameRgn") val GetPolyFillMode = winCall1(gdi "GetPolyFillMode") (cHDC) POLYFILLMODE val InvertRgn = winCall2(gdi "InvertRgn") (cHDC,cHRGN) (successState "InvertRgn") val OffsetRgn = winCall3(gdi "OffsetRgn") (cHRGN,cInt,cInt) RESULTREGION val PaintRgn = winCall2(gdi "PaintRgn") (cHDC,cHRGN) (successState "PaintRgn") val PtInRegion = winCall3(gdi "PtInRegion") (cHRGN,cInt,cInt) cBool val RectInRegion = winCall2(gdi "RectInRegion") (cHRGN,cRect) cBool val SetPolyFillMode = winCall2(gdi "SetPolyFillMode") (cHDC,POLYFILLMODE) POLYFILLMODE local val getRgnBox = winCall2(gdi "GetRgnBox") (cHRGN, cStar cRect) cInt val zeroRect = {top=0, bottom=0, left=0, right=0} in fun GetRgnBox hr = let val v = ref zeroRect in checkResult(getRgnBox(hr, v) <> 0); !v end end local val setRectRgn = winCall5 (gdi "SetRectRgn") (cHRGN,cInt,cInt,cInt,cInt) (successState "SetRectRgn") in fun SetRectRgn (h, { left, top, right, bottom }) = setRectRgn(h,left,top,right,bottom) end local val createEllipticRgn = winCall4 (gdi "CreateEllipticRgn") (cInt,cInt,cInt,cInt) cHRGN in fun CreateEllipticRgn {left,top,right,bottom} = createEllipticRgn(left,top,right,bottom) end local val createRectRgn = winCall4 (gdi "CreateRectRgn") (cInt,cInt,cInt,cInt) cHRGN in fun CreateRectRgn {left,top,right,bottom} = createRectRgn(left,top,right,bottom) end local val createRoundRectRgn = winCall6 (gdi "CreateRoundRectRgn") (cInt,cInt,cInt,cInt,cInt,cInt) cHRGN in fun CreateRoundRectRgn({left,top,right,bottom},w,h) = createRoundRectRgn(left,top,right,bottom,w,h) end local val createPolygonRgn = winCall3 (gdi "CreatePolygonRgn") (cPointer,cInt,POLYFILLMODE) cHRGN val ptList = list2Vector cPoint in fun CreatePolygonRgn (pts: POINT list, fmode) = let val (ptarr, count) = ptList pts in (createPolygonRgn(ptarr,count,fmode) handle ex => (Memory.free ptarr; raise ex)) before Memory.free ptarr end end (* fun ExtCreateRegion (x,rects,rectmain) = let val {r11,r12,r21,r22,tx,ty} = breakXForm x val xform = make_struct [ (Cfloat,toCfloat r11), (Cfloat,toCfloat r12), (Cfloat,toCfloat r21), (Cfloat,toCfloat r22), (Cfloat,toCfloat tx), (Cfloat,toCfloat ty) ] val count = List.length rects val rectarr = alloc count (Cstruct [Clong,Clong,Clong,Clong]) fun pl2a v n [] = () | pl2a v n ({left,top,right,bottom} :: rest) = let val item = make_struct [(Clong,toClong left), (Clong,toClong top), (Clong,toClong right), (Clong,toClong bottom)] in ( assign (Cstruct [Clong,Clong,Clong,Clong]) (offset n (Cstruct [Clong,Clong,Clong,Clong]) v) item ; pl2a v (n+1) rest ) end val u = pl2a rectarr 0 rects val {left,top,right,bottom} = rectmain val rgndata = make_struct [ (Clong,toClong 32), (Clong,toClong 1), (Clong,toClong count), (Clong,toClong 0 ), (Clong,toClong left), (Clong,toClong top), (Clong,toClong right), (Clong,toClong bottom), (Cvoid,rectarr) ] val struct_size = 64 + 16 * count in winCall3 (gdi "ExtCreateRegion") (POINTER,INT,POINTER) (cHRGN) (address xform,struct_size,address rgndata) end *) (* fun GetRegionData h = let val bufsize = winCall3 (gdi "GetRegionData") (cHRGN,LONG,POINTER) (LONG) (h,0,toCint 0) val rgndata = alloc 1 (Cstruct [Clong,Clong,Clong,Clong, Clong,Clong,Clong,Clong,Cvoid]) val res = winCall3 (gdi "GetRegionData") (cHRGN,LONG,POINTER) (LONG) (h,bufsize,address rgndata) in "not implemented" end *) (* Other Region Functions CreateEllipticRgnIndirect CreatePolyPolygonRgn CreateRectRgnIndirect ExtCreateRegion GetRegionData *) end end; polyml-5.7.1/mlsource/extra/Win/Clipboard.sml0000644000175000017500000003351213204034553020130 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Clipboard : sig (* Clipboard formats. I've added CF_NONE, CF_PRIVATE, CF_GDIOBJ and CF_REGISTERED *) datatype ClipboardFormat = CF_NONE | CF_TEXT | CF_BITMAP | CF_METAFILEPICT | CF_SYLK | CF_DIF | CF_TIFF | CF_OEMTEXT | CF_DIB | CF_PALETTE | CF_PENDATA | CF_RIFF | CF_WAVE | CF_UNICODETEXT | CF_ENHMETAFILE | CF_OWNERDISPLAY | CF_DSPTEXT | CF_DSPBITMAP | CF_DSPMETAFILEPICT | CF_DSPENHMETAFILE | CF_PRIVATE of int | CF_GDIOBJ of int | CF_REGISTERED of int | CF_HDROP | CF_LOCALE type HBITMAP and HPALETTE and HWND and HDROP datatype CLIPHANDLE = CH_NONE | CH_TEXT of string | CH_BITMAP of HBITMAP | CH_METAFILEPICT of Metafile.METAFILEPICT | CH_SYLK of Word8Vector.vector | CH_DIF of Word8Vector.vector | CH_TIFF of Word8Vector.vector | CH_OEMTEXT of string | CH_DIB of Word8Vector.vector | CH_PALETTE of HPALETTE | CH_PENDATA of Word8Vector.vector | CH_RIFF of Word8Vector.vector | CH_WAVE of Word8Vector.vector | CH_UNICODETEXT of Word8Vector.vector | CH_ENHMETAFILE of Metafile.HENHMETAFILE | CH_OWNERDISPLAY of Word8Vector.vector | CH_DSPTEXT of Word8Vector.vector | CH_DSPBITMAP of Word8Vector.vector | CH_DSPMETAFILEPICT of Word8Vector.vector | CH_DSPENHMETAFILE of Word8Vector.vector | CH_PRIVATE of int * Word8Vector.vector | CH_GDIOBJ of int * Word8Vector.vector | CH_REGISTERED of int * Word8Vector.vector | CH_HDROP of HDROP | CH_LOCALE of Word8Vector.vector val ChangeClipboardChain : HWND * HWND -> bool val CloseClipboard : unit -> unit val CountClipboardFormats : unit -> int val EmptyClipboard : unit -> unit val EnumClipboardFormats : ClipboardFormat -> ClipboardFormat val GetClipboardData : ClipboardFormat -> CLIPHANDLE val GetClipboardFormatName : ClipboardFormat -> string val GetClipboardOwner : unit -> HWND val GetClipboardViewer : unit -> HWND val GetOpenClipboardWindow : unit -> HWND val GetPriorityClipboardFormat : ClipboardFormat list -> ClipboardFormat option val IsClipboardFormatAvailable : ClipboardFormat -> bool val OpenClipboard : HWND option -> unit val RegisterClipboardFormat : string -> ClipboardFormat val SetClipboardData : CLIPHANDLE -> unit val SetClipboardViewer : HWND -> HWND end = struct local open Foreign open Base val GMEM_SHARE = 0x2000 and GMEM_MOVEABLE = 0x0002 val GMEM_OPTS = IntInf.orb(GMEM_SHARE, GMEM_MOVEABLE) val {load=fromMFP, store=toMFP, ctype={size=sizeMfp, ...}, ...} = breakConversion GdiBase.cMETAFILEPICT in type HBITMAP = HBITMAP and HPALETTE = HPALETTE and HWND = HWND and HDROP = HDROP datatype ClipboardFormat = datatype ClipboardFormat (* The data is transferred to and from the clipboard in various formats. I've added this datatype to deal with them. *) datatype CLIPHANDLE = CH_NONE | CH_TEXT of string | CH_BITMAP of HBITMAP | CH_METAFILEPICT of Metafile.METAFILEPICT | CH_SYLK of Word8Vector.vector | CH_DIF of Word8Vector.vector | CH_TIFF of Word8Vector.vector | CH_OEMTEXT of string | CH_DIB of Word8Vector.vector | CH_PALETTE of HPALETTE | CH_PENDATA of Word8Vector.vector | CH_RIFF of Word8Vector.vector | CH_WAVE of Word8Vector.vector | CH_UNICODETEXT of Word8Vector.vector | CH_ENHMETAFILE of Metafile.HENHMETAFILE | CH_OWNERDISPLAY of Word8Vector.vector | CH_DSPTEXT of Word8Vector.vector | CH_DSPBITMAP of Word8Vector.vector | CH_DSPMETAFILEPICT of Word8Vector.vector | CH_DSPENHMETAFILE of Word8Vector.vector | CH_PRIVATE of int * Word8Vector.vector | CH_GDIOBJ of int * Word8Vector.vector | CH_REGISTERED of int * Word8Vector.vector | CH_HDROP of HDROP | CH_LOCALE of Word8Vector.vector local val (toInt, fromInt) = clipLookup in val cCLIPFORMAT = absConversion {abs = fromInt, rep = toInt} cUint end val ChangeClipboardChain = winCall2 (user "ChangeClipboardChain") (cHWND, cHWND) cBool and CloseClipboard = winCall0 (user "CloseClipboard") () (successState "CloseClipboard") and CountClipboardFormats = winCall0 (user "CountClipboardFormats") () cInt and EmptyClipboard = winCall0 (user "EmptyClipboard") () (successState "EmptyClipboard") and EnumClipboardFormats = winCall1 (user "EnumClipboardFormats") (cCLIPFORMAT) cCLIPFORMAT and GetClipboardOwner = winCall0 (user "GetClipboardOwner") () cHWND and GetClipboardViewer = winCall0 (user "GetClipboardViewer") () cHWND and GetOpenClipboardWindow = winCall0 (user "GetOpenClipboardWindow") () cHWND and IsClipboardFormatAvailable = winCall1 (user "IsClipboardFormatAvailable") (cCLIPFORMAT) cBool and OpenClipboard = winCall1 (user "OpenClipboard") (cHWNDOPT) (successState "OpenClipboard") and RegisterClipboardFormat = CF_REGISTERED o winCall1 (user "RegisterClipboardFormat") (cString) cUint and SetClipboardViewer = winCall1 (user "SetClipboardViewer") (cHWND) cHWND local (* The argument and result are actually HANDLE but we haven't got quite the right form of subclassing to allow all the various handle types to be combined. *) val setClipboardData = winCall2(user "SetClipboardData") (cCLIPFORMAT, cHGLOBAL) cHGLOBAL (* Most clipboard data is passed in memory allocated using GlobalAlloc. *) fun globString (s: string) = let val hGlob = GlobalAlloc(GMEM_OPTS, size s + 1) val mem = GlobalLock hGlob in copyStringToMem(mem, 0, s); GlobalUnlock hGlob; hGlob end and globMem (w: Word8Vector.vector) = let val length = Word8Vector.length w val hGlob = GlobalAlloc(GMEM_OPTS, length) val buf = GlobalLock hGlob in Word8Vector.appi (fn (i, v) => Memory.set8(buf, Word.fromInt i, v)) w; GlobalUnlock hGlob; hGlob end fun toHglobal (h: 'a HANDLE): HGLOBAL = handleOfVoidStar(voidStarOfHandle h) in (* SetClipboardData copies the data to the clipboard. It is possible to pass NULL as the handle and instead process the WM_RENDERFORMAT message. We don't support that. *) fun SetClipboardData(clip: CLIPHANDLE): unit = let (* Convert the various data formats and get the format type to pass. *) val (cf, data) = case clip of CH_NONE => raise Fail "SetClipboardData: No data" | CH_TEXT t => (CF_TEXT, globString t) | CH_BITMAP b => (CF_BITMAP, toHglobal b) | CH_METAFILEPICT p => let val hGlob = GlobalAlloc(GMEM_OPTS, Word.toInt sizeMfp) in ignore(toMFP(GlobalLock hGlob, p)); GlobalUnlock hGlob; (CF_METAFILEPICT, hGlob) end | CH_SYLK m => (CF_SYLK, globMem m) | CH_DIF m => (CF_DIF, globMem m) | CH_TIFF m => (CF_TIFF, globMem m) | CH_OEMTEXT t => (CF_OEMTEXT, globString t) | CH_DIB m => (CF_DIB, globMem m) | CH_PALETTE p => (CF_PALETTE, toHglobal p) | CH_PENDATA m => (CF_PENDATA, globMem m) | CH_RIFF m => (CF_RIFF, globMem m) | CH_WAVE m => (CF_WAVE, globMem m) | CH_UNICODETEXT m => (CF_UNICODETEXT, globMem m) | CH_ENHMETAFILE mf => (CF_ENHMETAFILE, toHglobal mf) | CH_OWNERDISPLAY m => (CF_OWNERDISPLAY, globMem m) | CH_DSPTEXT m => (CF_DSPTEXT, globMem m) | CH_DSPBITMAP m => (CF_DSPBITMAP, globMem m) | CH_DSPMETAFILEPICT m => (CF_DSPMETAFILEPICT, globMem m) | CH_DSPENHMETAFILE m => (CF_DSPENHMETAFILE, globMem m) | CH_PRIVATE(i, m) => (CF_PRIVATE i, globMem m) | CH_GDIOBJ(i, m) => (CF_GDIOBJ i, globMem m) | CH_REGISTERED(i, m) => (CF_REGISTERED i, globMem m) | CH_HDROP d => (CF_HDROP, toHglobal d) | CH_LOCALE m => (CF_LOCALE, globMem m) val res = setClipboardData (cf, data) in if res = hNull then raiseSysErr () else () end end local val getClipboardData = winCall1 (user "GetClipboardData") (cCLIPFORMAT) cHGLOBAL fun getMem hg = fromCWord8vec(GlobalLock hg, GlobalSize hg) before ignore(GlobalUnlock hg) and getText hg = fromCstring(GlobalLock hg) before ignore(GlobalUnlock hg) fun fromHglobal (h: HGLOBAL): 'a HANDLE = handleOfVoidStar(voidStarOfHandle h) in fun GetClipboardData(f: ClipboardFormat): CLIPHANDLE = let (* The result of GetClipboardData is a handle, usually but not always an HGLOBAL pointing to a piece of memory. *) val res = getClipboardData f val _ = checkResult (res <> hNull) in case f of CF_NONE => CH_NONE | CF_TEXT => CH_TEXT(getText res) | CF_BITMAP => CH_BITMAP(fromHglobal res) | CF_METAFILEPICT => CH_METAFILEPICT(fromMFP(GlobalLock res)) before ignore(GlobalUnlock res) | CF_SYLK => CH_SYLK(getMem res) | CF_DIF => CH_DIF(getMem res) | CF_TIFF => CH_TIFF(getMem res) | CF_OEMTEXT => CH_OEMTEXT(getText res) | CF_DIB => CH_DIB(getMem res) | CF_PALETTE => CH_PALETTE(fromHglobal res) | CF_PENDATA => CH_PENDATA(getMem res) | CF_RIFF => CH_RIFF(getMem res) | CF_WAVE => CH_WAVE(getMem res) | CF_UNICODETEXT => CH_UNICODETEXT(getMem res) | CF_ENHMETAFILE => CH_ENHMETAFILE(fromHglobal res) | CF_OWNERDISPLAY => CH_OWNERDISPLAY(getMem res) | CF_DSPTEXT => CH_DSPTEXT(getMem res) | CF_DSPBITMAP => CH_DSPBITMAP(getMem res) | CF_DSPMETAFILEPICT => CH_DSPMETAFILEPICT(getMem res) | CF_DSPENHMETAFILE => CH_DSPENHMETAFILE(getMem res) | CF_PRIVATE i => CH_PRIVATE(i, getMem res) | CF_GDIOBJ i => CH_GDIOBJ(i, getMem res) | CF_REGISTERED i => CH_REGISTERED(i, getMem res) | CF_HDROP => CH_HDROP(fromHglobal res) | CF_LOCALE => CH_LOCALE(getMem res) end end local val getformat = winCall3 (user "GetClipboardFormatNameA") (cCLIPFORMAT, cPointer, cInt) cInt in (* Loop until we have read the whole string. The result may legitimately be a null string. *) fun GetClipboardFormatName(f: ClipboardFormat): string = getStringCall(fn (buff, n) => getformat(f, buff, n)) end local val getPriorityClipboardFormat = winCall2(user "GetPriorityClipboardFormat") (cPointer, cInt) cInt in fun GetPriorityClipboardFormat(l: ClipboardFormat list): ClipboardFormat option = let val (vec, count) = list2Vector cCLIPFORMAT l val res = getPriorityClipboardFormat(vec, count) handle ex => (Memory.free vec; raise ex) val () = Memory.free vec in (* It returns 0 if the clipboard is empty, ~1 if it doesn't contain any of the requested formats and >0 if it contains one of the formats. We map ~1 to NONE. *) if res < 0 then NONE else SOME(#2 clipLookup res) end end end end; (* Other clipboard functions: GetClipboardSequenceNumber - Windows 98 and NT 5.0 only *) polyml-5.7.1/mlsource/extra/Win/Menu.sml0000644000175000017500000005646513204034553017151 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Menu: sig type HMENU and HBITMAP and HWND and HINSTANCE type RECT = { left: int, top: int, right: int, bottom: int } datatype MenuFlag = MF_BYCOMMAND | MF_BYPOSITION | MF_SEPARATOR | MF_ENABLED | MF_GRAYED | MF_DISABLED | MF_UNCHECKED | MF_CHECKED | MF_USECHECKBITMAPS | MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_POPUP | MF_MENUBARBREAK | MF_MENUBREAK | MF_UNHILITE | MF_HILITE | MF_DEFAULT | MF_SYSMENU | MF_HELP | MF_RIGHTJUSTIFY | MF_MOUSESELECT datatype MenuIdOrHandle = MenuHandle of HMENU | MenuId of int datatype MenuItemOptions = MFT_MENUBARBREAK | MFT_MENUBREAK | MFT_RADIOCHECK | MFT_RIGHTJUSTIFY | MFT_RIGHTORDER datatype MenuItemType = MFT_BITMAP of HBITMAP | MFT_OWNERDRAW of SysWord.word | MFT_SEPARATOR | MFT_STRING of string datatype MenuState = MFS_CHECKED | MFS_DEFAULT | MFS_DISABLED | MFS_ENABLED | MFS_GRAYED | MFS_HILITE | MFS_UNCHECKED | MFS_UNHILITE type MenuItemInfo = { menuType: MenuItemType, menuOptions: MenuItemOptions list, state: MenuState list, wID: int, hSubMenu: HMENU option, hbmpChecked: HBITMAP option, hbmpUnchecked: HBITMAP option, itemData: int } val AppendMenu : HMENU * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit val CheckMenuRadioItem : HMENU * int * int * int * MenuFlag -> unit val CreateMenu : unit -> HMENU val CreatePopupMenu : unit -> HMENU val DeleteMenu : HMENU * int * MenuFlag -> unit val DestroyMenu : HMENU -> unit val DrawMenuBar : HWND -> unit val EnableMenuItem : HMENU * int * MenuFlag -> MenuFlag list val GetMenu : HWND -> HMENU datatype GMDIFlags = GMDI_GOINTOPOPUPS | GMDI_USEDISABLED val GetMenuDefaultItem : HMENU * bool * GMDIFlags list -> int val GetMenuItemCount : HMENU -> int val GetMenuItemID : HMENU -> int val GetMenuItemInfo : HMENU * int * bool -> MenuItemInfo val GetMenuItemRect : HWND * HMENU * int -> RECT val GetMenuState : HMENU * int * MenuFlag -> MenuFlag list * int val GetMenuString : HMENU * int * MenuFlag -> string val GetSubMenu : HMENU * int -> HMENU val GetSystemMenu : HWND * bool -> HMENU val HiliteMenuItem : HWND * HMENU * int * MenuFlag list -> unit val InsertMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit val IsMenu : HMENU -> bool val LoadMenu : HINSTANCE * Resource.RESID -> HMENU val ModifyMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit val RemoveMenu : HMENU * int * MenuFlag -> unit val SetMenu : HWND * HMENU option -> unit val SetMenuItemInfo : HMENU * int * bool * MenuItemInfo -> unit val InsertMenuItem : HMENU * int * bool * MenuItemInfo -> unit datatype TrackPopupMenuOptions = TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_LEFTALIGN | TPM_CENTERALIGN | TPM_RIGHTALIGN | TPM_TOPALIGN | TPM_VCENTERALIGN | TPM_BOTTOMALIGN | (*TPM_HORIZONTAL | TPM_VERTICAL |*) TPM_NONOTIFY | TPM_RETURNCMD val TrackPopupMenu : HMENU * TrackPopupMenuOptions list * int * int * HWND -> int val SetMenuContextHelpId: HMENU * int -> unit val GetMenuContextHelpId: HMENU -> int end = struct local open Foreign open Base in open MenuBase type HMENU = HMENU and HBITMAP = HBITMAP and RECT = RECT and HWND = HWND and HINSTANCE = HINSTANCE val isHmenuNull = isHmenuNull fun checkMenu c = (checkResult(not(isHmenuNull c)); c) (* Check here means "make active", the opposite of uncheck *) val CheckMenuRadioItem = checkResult o winCall5 (user "CheckMenuRadioItem") (cHMENU, cUint, cUint, cUint, cMENUFLAG) cBool val CreateMenu = checkMenu o winCall0 (user "CreateMenu") () cHMENU val CreatePopupMenu = checkMenu o winCall0 (user "CreatePopupMenu") () cHMENU val DeleteMenu = checkResult o winCall3 (user "DeleteMenu") (cHMENU, cUint, cMENUFLAG) cBool val DestroyMenu = checkResult o winCall1 (user "DestroyMenu") (cHMENU) cBool val DrawMenuBar = checkResult o winCall1 (user "DrawMenuBar") (cHWND) cBool local val enableCall = winCall3(user "EnableMenuItem") (cHMENU, cUint, cMENUFLAG) cUintw in fun EnableMenuItem(hMenu: HMENU, id: int, flags: MenuFlag): MenuFlag list = let val res = enableCall(hMenu, id, flags) in checkResult(res <> ~ 0w1); toMenuFlagSet res end end val GetMenu = winCall1 (user "GetMenu") (cHWND) cHMENU datatype GMDIFlags = GMDI_GOINTOPOPUPS | GMDI_USEDISABLED local val tab = [ (GMDI_USEDISABLED, 0wx0001), (GMDI_GOINTOPOPUPS, 0wx0002) ] in val GMDIFLAGS = tableSetConversion(tab, NONE) end local val callGMDI = winCall3 (user "GetMenuDefaultItem") (cHMENU, cBool, GMDIFLAGS) cUint in fun GetMenuDefaultItem(hMenu: HMENU, m: bool, opts: GMDIFlags list): int = let val res = callGMDI(hMenu, m, opts) in checkResult(res <> ~1); res end end local val getMenuItemCount = winCall1 (user "GetMenuItemCount") (cHMENU) cInt in fun GetMenuItemCount hMenu = case getMenuItemCount hMenu of ~1 => raiseSysErr() | n => n end val GetMenuItemID = winCall1 (user "GetMenuItemID") (cHMENU) cUint local val getMenuString = winCall5 (user "GetMenuStringA") (cHMENU,cUint,cPointer,cInt,cMENUFLAG) (cPOSINT "GetMenuString") in (* We can get the length by passing null first, then get the actual string. *) fun GetMenuString(h,i,f): string = getStringWithNullIsLength(fn (buff, n) => getMenuString(h,i,buff,n,f)) end datatype MenuItemType = MFT_BITMAP of HBITMAP | MFT_SEPARATOR | MFT_STRING of string | MFT_OWNERDRAW of SysWord.word val mft_STRING = 0wx00000000 (* Replaced by MIIM_STRING *) val mft_BITMAP = 0wx00000004 (* Replaced by MIIM_BITMAP and hbmpItem *) val mft_OWNERDRAW = 0wx00000100 val mft_SEPARATOR = 0wx00000800 val mft_POPUP = 0wx00000010 val typeBits = 0wx914 datatype MenuItemOptions = MFT_MENUBARBREAK | MFT_MENUBREAK | MFT_RADIOCHECK | MFT_RIGHTJUSTIFY | MFT_RIGHTORDER local val tab = [ (MFT_MENUBARBREAK, 0wx00000020: Word32.word), (MFT_MENUBREAK, 0wx00000040), (MFT_RADIOCHECK, 0wx00000200), (MFT_RIGHTORDER, 0wx00002000), (MFT_RIGHTJUSTIFY, 0wx00004000)] in val (fromMFT, toMFT) = tableSetLookup(tab, NONE) end datatype MenuState = MFS_GRAYED | MFS_DISABLED | MFS_CHECKED | MFS_DEFAULT | MFS_HILITE | MFS_ENABLED | MFS_UNCHECKED | MFS_UNHILITE local val tab = [ (MFS_DISABLED, 0wx00000002), (MFS_ENABLED, 0wx00000000), (MFS_GRAYED, 0wx00000003), (MFS_CHECKED, 0wx00000008), (MFS_UNCHECKED, 0wx00000000), (MFS_HILITE, 0wx00000080), (MFS_UNHILITE, 0wx00000000), (MFS_DEFAULT, 0wx00001000)] in val cMENUSTATE = tableSetConversion(tab, NONE) end type MenuItemInfo = { (*mask: int,*) (* Datatype? *) menuType: MenuItemType, menuOptions: MenuItemOptions list, state: MenuState list, wID: int, hSubMenu: HMENU option, hbmpChecked: HBITMAP option, hbmpUnchecked: HBITMAP option, itemData: int } (* Although we can selectively return information it's probably simpler to return the lot. It's only in SetMenuItemInfo where we might want to update only some of the information. To find out if we've got all the string we will have to loop until the value of cch we get back is less than the buffer we passed. *) local (* Flags used in GetItemInfo and SetItemInfo. *) (*val MIIM_STATE = 0x00000001 val MIIM_ID = 0x00000002 val MIIM_SUBMENU = 0x00000004 val MIIM_CHECKMARKS = 0x00000008 (*val MIIM_TYPE = 0x00000010 *) (* Replaced by new fields. *) val MIIM_DATA = 0x00000020 val MIIM_STRING = 0x00000040 (* Added *) val MIIM_BITMAP = 0x00000080 (* Added *) val MIIM_FTYPE = 0x00000100*) val allInfo = 0x1ef val cMENUITEMINFO = cStruct12(cUintw,cUint,cUintw,cMENUSTATE,cUint,cHMENUOPT,cHGDIOBJOPT, cHGDIOBJOPT,cULONG_PTR,cPointer,cUint, cHGDIOBJ) val {ctype={size=sizeMenuItemStruct, ...}, ...} = breakConversion cMENUITEMINFO val sizeMenuItemStruct = Word32.fromLargeWord(Word.toLargeWord sizeMenuItemStruct) (*val (fromCmenuiteminfo, toCmenuiteminfo, menuItemStruct) = breakConversion MENUITEMINFO*) val getMenuItemInfo = winCall4 (user "GetMenuItemInfoA") (cHMENU, cUint, cBool, cStar cMENUITEMINFO) (successState "GetMenuItemInfo") val setMenuItemInfo = winCall4 (user "SetMenuItemInfoA") (cHMENU, cUint, cBool, cConstStar cMENUITEMINFO) (successState "SetMenuItemInfo") val insertMenuItem = winCall4 (user "InsertMenuItemA") (cHMENU, cUint, cBool, cConstStar cMENUITEMINFO) (successState "InsertMenuItem") in fun GetMenuItemInfo(hMenu: HMENU, uItem: int, fByPosition): MenuItemInfo = let (* First request allInfo. Look at the returned type and cch. If cch is non-zero allocate memory of cch+1 and pass memory pointer and cch+1 to get the string. *) val r = ref (sizeMenuItemStruct, allInfo, 0w0, [], 0, NONE, NONE, NONE, 0, Memory.null, 0, hNull) val () = getMenuItemInfo(hMenu, uItem, fByPosition, r) val cch = #11(!r) val str = if cch = 0 then "" else let open Memory val v = malloc (Word.fromInt cch + 0w1) val () = r := (sizeMenuItemStruct, allInfo, 0w0, [], 0, NONE, NONE, NONE, 0, v, cch+1, hNull) in (* Get the string. Updates r *) getMenuItemInfo(hMenu, uItem, fByPosition, r) handle ex => (free v; raise ex); fromCstring v before free v end val (_, _, mtype, state, wID, hSubMenu, hbmpChecked, hbmpUnchecked, itemData, typeData, _, hbmp) = ! r val menuType = if Word32.andb(mtype, mft_BITMAP) <> 0w0 then MFT_BITMAP hbmp else if Word32.andb(mtype, mft_OWNERDRAW) <> 0w0 then MFT_OWNERDRAW(Memory.voidStar2Sysword typeData) else if Word32.andb(mtype, mft_SEPARATOR) <> 0w0 then MFT_SEPARATOR else (* String *) MFT_STRING str (* The options are the other bits in the type field. *) val menuOptions = toMFT(Word32.andb(Word32.notb typeBits, mtype)) in { menuType = menuType, menuOptions = menuOptions, wID = wID, hSubMenu = hSubMenu, hbmpChecked = hbmpChecked, hbmpUnchecked = hbmpUnchecked, itemData = itemData, state = state } end (* It's simplest to set everything. *) fun SetMenuItemInfo(hMenu: HMENU, uItem: int, fByPosition, ({menuType, menuOptions, wID, hSubMenu, hbmpChecked, hbmpUnchecked, itemData, state }: MenuItemInfo)) = let open Memory val (bits, typeData, cch, bmp) = case menuType of MFT_BITMAP b => (mft_BITMAP, null, 0, b) | MFT_OWNERDRAW i => (mft_OWNERDRAW, sysWord2VoidStar i, 0, hNull) | MFT_SEPARATOR => (mft_SEPARATOR, null, 0, hNull) | MFT_STRING s => (mft_STRING, toCstring s, size s + 1, hNull) val mtype = Word32.orb(fromMFT menuOptions, bits) val r = (sizeMenuItemStruct, allInfo, mtype, state, wID, hSubMenu, hbmpChecked, hbmpUnchecked, itemData, typeData, cch, bmp) in setMenuItemInfo(hMenu, uItem, fByPosition, r) handle ex => (free typeData; raise ex); free typeData end fun InsertMenuItem(hMenu: HMENU, uItem: int, fByPosition, ({menuType, menuOptions, wID, hSubMenu, hbmpChecked, hbmpUnchecked, itemData, state }: MenuItemInfo)) = let open Memory val (bits, typeData, cch, bmp) = case menuType of MFT_BITMAP b => (mft_BITMAP, null, 0, b) | MFT_OWNERDRAW i => (mft_OWNERDRAW, sysWord2VoidStar i, 0, hNull) | MFT_SEPARATOR => (mft_SEPARATOR, null, 0, hNull) | MFT_STRING s => (mft_STRING, toCstring s, size s + 1, hNull) val mtype = Word32.orb(fromMFT menuOptions, bits) val r = (sizeMenuItemStruct, allInfo, mtype, state, wID, hSubMenu, hbmpChecked, hbmpUnchecked, itemData, typeData, cch, bmp) in insertMenuItem(hMenu, uItem, fByPosition, r) handle ex => (free typeData; raise ex); free typeData end end local val getMenuState = winCall3 (user "GetMenuState") (cHMENU,cUint,cMENUFLAG) cUintw in (* If the menu opens a submenu the high order word is the number of items. The low order word is the state. *) fun GetMenuState (hm, i, mf): MenuFlag list * int = let val res = getMenuState(hm, i, mf) in checkResult(res <> ~ 0w1); (toMenuFlagSet(Word32.fromLargeWord(Word.toLargeWord(LOWORD res))), Word.toInt(HIWORD res)) end end val GetSubMenu = winCall2 (user "GetSubMenu") (cHMENU,cInt) cHMENU val GetSystemMenu = winCall2 (user "GetSystemMenu") (cHWND,cBool) cHMENU val HiliteMenuItem = winCall4 (user "HiliteMenuItem") (cHWND,cHMENU,cUint,cMENUFLAGSET) (successState "HiliteMenuItem") val IsMenu = winCall1 (user "IsMenu") (cHMENU) cBool (* InsertMenu can insert a string item or a submenu. *) datatype MenuIdOrHandle = MenuId of int | MenuHandle of HMENU local open Memory (* Get the menu item. If this is a string we have to free the memory afterwards. *) fun getDisplay (MFT_BITMAP hb) = (mft_BITMAP, voidStarOfHandle hb, null) | getDisplay MFT_SEPARATOR = (mft_SEPARATOR, null, null) | getDisplay (MFT_STRING (s: string)) = let val v = toCstring s in (mft_STRING, v, v) end | getDisplay (MFT_OWNERDRAW i) = (mft_OWNERDRAW, sysWord2VoidStar i, null) fun InsertOrModifyMenu (functionName: string) = let val docall = winCall5 (user functionName) (cHMENU,cUint,cUintw,cPointer,cPointer) (successState functionName) in fn(hMenu: HMENU, pos: int, flags: MenuFlag list, new: MenuIdOrHandle, disp: MenuItemType) => let (* Flags - mask out the ones we set by other means. *) val f1 = Word32.andb(fromMenuFlagSet flags, Word32.notb typeBits) (* The C call incorporates various options within the flags. It's better, in ML, to pull these out and treat them as part of the datatype. *) (* The "new" argument indicates whether the item is a sub-menu or should send a message containing the id when the menu item is selected. *) val (f2, id) = case new of MenuId i => (0w0, sysWord2VoidStar (SysWord.fromInt i)) | MenuHandle m => (mft_POPUP, voidStarOfHandle m) (* The "disp" argument describes how the item is displayed. *) val (f3, str, toFree) = getDisplay disp val flags = List.foldl Word32.orb 0w0 [f1,f2,f3] in docall(hMenu, pos, flags, id, str) handle ex => (free toFree; raise ex); free toFree end end val appendMenu = winCall4 (user "AppendMenuA") (cHMENU,cUintw,cPointer,cPointer) (successState "AppendMenuA") in val InsertMenu = InsertOrModifyMenu "InsertMenuA" and ModifyMenu = InsertOrModifyMenu "ModifyMenuA" fun AppendMenu(hMenu: HMENU, flags: MenuFlag list, new: MenuIdOrHandle, disp: MenuItemType) = let val f1 = Word32.andb(fromMenuFlagSet flags, Word32.notb typeBits) val (f2, id) = case new of MenuId i => (0w0, sysWord2VoidStar (SysWord.fromInt i)) | MenuHandle m => (mft_POPUP, voidStarOfHandle m) val (f3, str, toFree) = getDisplay disp val flags = List.foldl Word32.orb 0w0 [f1,f2,f3] in appendMenu (hMenu, flags, id, str) handle ex => (free toFree; raise ex); free toFree end end val RemoveMenu = winCall3(user "RemoveMenu") (cHMENU, cUint, cMENUFLAG) (successState "RemoveMenu") datatype TrackPopupMenuOptions = TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_LEFTALIGN | TPM_CENTERALIGN | TPM_RIGHTALIGN | TPM_TOPALIGN | TPM_VCENTERALIGN | TPM_BOTTOMALIGN | (*TPM_HORIZONTAL | TPM_VERTICAL |*) TPM_NONOTIFY | TPM_RETURNCMD local val tab = [ (TPM_LEFTBUTTON, 0wx0000), (TPM_RIGHTBUTTON, 0wx0002), (TPM_LEFTALIGN, 0wx0000), (TPM_CENTERALIGN, 0wx0004), (TPM_RIGHTALIGN, 0wx0008), (TPM_TOPALIGN, 0wx0000), (TPM_VCENTERALIGN, 0wx0010), (TPM_BOTTOMALIGN, 0wx0020), (*(TPM_HORIZONTAL, 0wx0000), (TPM_VERTICAL, 0wx0040),*) (TPM_NONOTIFY, 0wx0080), (TPM_RETURNCMD, 0wx0100) ] in val TRACKPOPUPOPTIONS = tableSetConversion(tab, NONE) end local val trackPopupMenu = winCall7 (user "TrackPopupMenu") (cHMENU, TRACKPOPUPOPTIONS, cInt, cInt, cInt, cHWND, cPointer) cInt in fun TrackPopupMenu(menu, flags, x, y, owner) = trackPopupMenu(menu, flags, x, y, 0, owner, Memory.null) end local val getMenuItemRect = winCall4 (user "GetMenuItemRect") (cHWND, cHMENU, cUint, cStar cRect) (successState "GetMenuItemRect") in fun GetMenuItemRect(hWnd, hMenu, item): RECT = let val r = ref { top = 0, bottom=0, left=0, right=0} val () = getMenuItemRect(hWnd, hMenu, item, r) in ! r end end val LoadMenu = winCall2 (user "LoadMenuA") (cHINSTANCE, cRESID) cHMENU val SetMenu = winCall2 (user "SetMenu") (cHWND, cHMENUOPT) (successState "SetMenu") val SetMenuContextHelpId = winCall2 (user "SetMenuContextHelpId") (cHMENU, cDWORD) (successState "SetWindowContextHelpId") val GetMenuContextHelpId = winCall1 (user "GetMenuContextHelpId") (cHMENU) cDWORD (* *) (*fun LoadMenuIndirect (mlist: (MenuFlag list * int * string) list list) = let val count = List.length mlist val menu = *) (* TODO: GetMenuCheckMarkDimensions - use GetSystemMetrics LoadMenuIndirect MenuItemFromPoint SetMenuDefaultItem SetMenuItemBitmaps TrackPopupMenuEx Obsolete Functions CheckMenuItem GetMenuCheckMarkDimensions ModifyMenu *) end end; (* struct datatype MenuItemData = MID of {option: Style.flag, id:MenuItem, display:string} (* I don't think this will work. The strings have to be Unicode. *) fun LoadMenuIndirect (mlist) = let val count = List.length mlist val menu = alloc count (Cstruct [Cshort,Cshort,Cpointer Cchar]) fun pl2a v n [] = () | pl2a v n (MID {option=flag, id= MenuID id, display=s} :: rest) = let val item = make_struct [(Cshort,toCshort (repE MenuFlagE flag)), (Cshort,toCshort id ), (Cpointer Cchar,toCstring s) ] in ( assign (Cstruct [Cshort,Cshort,Cpointer Cchar]) (offset n (Cstruct [Cshort,Cshort,Cpointer Cchar]) v) item ; pl2a v (n+1) rest ) end val u = pl2a menu 0 mlist in winCall1 (getuser "LoadMenuIndirectA") (POINTER) (cHMENU) (address menu) end end; *) polyml-5.7.1/mlsource/extra/Win/Base.sml0000644000175000017500000012343613204034553017110 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This contains various types and other values which are needed in various modules. All the exported types are contained in other structures. *) structure Base: sig val winCall0: Foreign.symbol -> unit -> 'a Foreign.conversion -> unit -> 'a val winCall1: Foreign.symbol -> 'a Foreign.conversion -> 'b Foreign.conversion -> 'a -> 'b val winCall2: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion -> 'c Foreign.conversion -> 'a * 'b -> 'c val winCall3: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion -> 'd Foreign.conversion -> 'a * 'b * 'c -> 'd val winCall4: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion -> 'e Foreign.conversion -> 'a * 'b * 'c * 'd -> 'e val winCall5: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion -> 'f Foreign.conversion -> 'a * 'b * 'c * 'd * 'e -> 'f val winCall6: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion -> 'g Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g val winCall7: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion -> 'h Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h val winCall8: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion -> 'i Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i val winCall9: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion -> 'j Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j val winCall10: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion * 'j Foreign.conversion -> 'k Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k val winCall11: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion * 'j Foreign.conversion * 'k Foreign.conversion -> 'l Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l val winCall12: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion * 'j Foreign.conversion * 'k Foreign.conversion * 'l Foreign.conversion -> 'm Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm val winCall13: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion * 'j Foreign.conversion * 'k Foreign.conversion * 'l Foreign.conversion * 'm Foreign.conversion -> 'n Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n val winCall14: Foreign.symbol -> 'a Foreign.conversion * 'b Foreign.conversion * 'c Foreign.conversion * 'd Foreign.conversion * 'e Foreign.conversion * 'f Foreign.conversion * 'g Foreign.conversion * 'h Foreign.conversion * 'i Foreign.conversion * 'j Foreign.conversion * 'k Foreign.conversion * 'l Foreign.conversion * 'm Foreign.conversion * 'n Foreign.conversion -> 'o Foreign.conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'o val winAbi: Foreign.LibFFI.abi val kernel: string -> Foreign.symbol and user: string -> Foreign.symbol and commdlg: string -> Foreign.symbol and gdi: string -> Foreign.symbol and shell: string -> Foreign.symbol and comctl: string -> Foreign.symbol val cSIZE_T: int Foreign.conversion and cLPARAM: int Foreign.conversion and cLONG_PTR: int Foreign.conversion and cULONG_PTR: int Foreign.conversion and cINT_PTR: int Foreign.conversion and cUINT_PTR: int Foreign.conversion and cDWORD: int Foreign.conversion and cWORD: int Foreign.conversion and cDWORD_PTR: int Foreign.conversion and cUINT_PTRw: SysWord.word Foreign.conversion val cUint8w: Word8.word Foreign.conversion and cUint16w: Word.word Foreign.conversion and cUint32w: Word32.word Foreign.conversion and cUintw: Word32.word Foreign.conversion and cUlongw: Word32.word Foreign.conversion val cDWORDw: Word32.word Foreign.conversion and cWORDw: Word.word Foreign.conversion val cBool: bool Foreign.conversion val successState: string -> unit Foreign.conversion val cPOSINT: string -> int Foreign.conversion type POINT = { x: int, y: int } val cPoint: POINT Foreign.conversion type RECT = { left: int, top: int, right: int, bottom: int } val cRect: RECT Foreign.conversion type SIZE = { cx: int, cy: int } val cSize: SIZE Foreign.conversion eqtype 'a HANDLE val hNull: 'a HANDLE val isHNull: 'a HANDLE -> bool val handleOfVoidStar: Foreign.Memory.voidStar -> 'a HANDLE and voidStarOfHandle: 'a HANDLE -> Foreign.Memory.voidStar eqtype HMENU and HDC and HWND and HINSTANCE and HGDIOBJ and HDROP and HRSRC and HUPDATE val cHGDIOBJ: HGDIOBJ Foreign.conversion and cHDROP: HDROP Foreign.conversion and cHMENU: HMENU Foreign.conversion and cHINSTANCE: HINSTANCE Foreign.conversion and cHDC: HDC Foreign.conversion and cHWND: HWND Foreign.conversion val cHMENUOPT: HMENU option Foreign.conversion and cHGDIOBJOPT: HGDIOBJ option Foreign.conversion and cHWNDOPT: HWND option Foreign.conversion and cHRSRC: HRSRC Foreign.conversion and cHUPDATE: HUPDATE Foreign.conversion val hgdiObjNull:HGDIOBJ and isHgdiObjNull: HGDIOBJ -> bool and hdcNull: HDC and isHdcNull: HDC -> bool and hmenuNull: HMENU and isHmenuNull: HMENU -> bool and hinstanceNull: HINSTANCE and isHinstanceNull: HINSTANCE -> bool and hwndNull: HWND type HPALETTE = HGDIOBJ and HFONT = HGDIOBJ and HPEN = HGDIOBJ and HBITMAP = HGDIOBJ and HRGN = HGDIOBJ and HBRUSH = HGDIOBJ and HENHMETAFILE = HGDIOBJ and HMETAFILE = HGDIOBJ val cHPALETTE: HPALETTE Foreign.conversion and cHFONT: HFONT Foreign.conversion and cHPEN: HPEN Foreign.conversion and cHBITMAP: HBITMAP Foreign.conversion and cHRGN: HRGN Foreign.conversion and cHBRUSH: HBRUSH Foreign.conversion and cHENHMETAFILE: HENHMETAFILE Foreign.conversion and cHMETAFILE: HMETAFILE Foreign.conversion type HICON = HGDIOBJ and HCURSOR = HGDIOBJ val cHICON: HICON Foreign.conversion and cHCURSOR: HCURSOR Foreign.conversion val absConversion: {abs: 'a -> 'b, rep: 'b -> 'a} -> 'a Foreign.conversion -> 'b Foreign.conversion val tableLookup: (''a * ''b) list * ((''b -> ''a) * (''a -> ''b)) option -> (''a -> ''b) * (''b -> ''a) and tableSetLookup: (''a * Word32.word) list * ((Word32.word -> ''a) * (''a -> Word32.word)) option -> (''a list -> Word32.word) * (Word32.word -> ''a list) val tableConversion: (''a * ''b) list * ((''b -> ''a) * (''a -> ''b)) option -> ''b Foreign.conversion -> ''a Foreign.conversion (* tableSetConversion is always a cUint *) and tableSetConversion: (''a * Word32.word) list * ((Word32.word -> ''a) * (''a -> Word32.word)) option -> ''a list Foreign.conversion val list2Vector: 'a Foreign.conversion -> 'a list -> Foreign.Memory.voidStar * int datatype ClassType = NamedClass of string | ClassAtom of int val cCLASS: ClassType Foreign.conversion datatype ClipboardFormat = CF_NONE | CF_TEXT | CF_BITMAP | CF_METAFILEPICT | CF_SYLK | CF_DIF | CF_TIFF | CF_OEMTEXT | CF_DIB | CF_PALETTE | CF_PENDATA | CF_RIFF | CF_WAVE | CF_UNICODETEXT | CF_ENHMETAFILE | CF_OWNERDISPLAY | CF_DSPTEXT | CF_DSPBITMAP | CF_DSPMETAFILEPICT | CF_DSPENHMETAFILE | CF_PRIVATE of int | CF_GDIOBJ of int | CF_REGISTERED of int | CF_HDROP | CF_LOCALE val clipLookup: (ClipboardFormat -> int) * (int -> ClipboardFormat) datatype RESID = IdAsInt of int | IdAsString of string val cRESID: RESID Foreign.conversion val STRINGOPT: string option Foreign.conversion val cCHARARRAY: int -> string Foreign.conversion val fromCstring: Foreign.Memory.voidStar -> string val toCstring: string -> Foreign.Memory.voidStar (* Memory must be freed *) val copyStringToMem: Foreign.Memory.voidStar * int * string -> unit val fromCWord8vec: Foreign.Memory.voidStar * int -> Word8Vector.vector val toCWord8vec: Word8Vector.vector -> Foreign.Memory.voidStar (* Memory must be freed *) val getStringCall: (Foreign.Memory.voidStar * int -> int) -> string val getStringWithNullIsLength: (Foreign.Memory.voidStar * int -> int) -> string val getVectorResult: 'a Foreign.conversion -> (Foreign.Memory.voidStar * int -> int) -> int -> 'a vector eqtype HGLOBAL val cHGLOBAL: HGLOBAL Foreign.conversion val GlobalAlloc: int * int -> HGLOBAL val GlobalLock: HGLOBAL -> Foreign.Memory.voidStar val GlobalFree: HGLOBAL -> HGLOBAL val GlobalSize: HGLOBAL -> int val GlobalUnlock: HGLOBAL -> bool val HIWORD: Word32.word -> Word.word val LOWORD: Word32.word -> Word.word val MAKELONG: Word.word * Word.word -> Word32.word val HIBYTE: Word.word -> Word8.word val LOBYTE: Word.word -> Word8.word val unicodeToString: Word8Vector.vector -> string val stringToUnicode: string -> Word8Vector.vector val GetLastError: unit -> OS.syserror val checkResult: bool -> unit val raiseSysErr: unit -> 'a structure FindReplaceFlags: sig include BIT_FLAGS val FR_DIALOGTERM : flags val FR_DOWN : flags val FR_FINDNEXT : flags val FR_HIDEMATCHCASE : flags val FR_HIDEUPDOWN : flags val FR_HIDEWHOLEWORD : flags val FR_MATCHCASE : flags val FR_NOMATCHCASE : flags val FR_NOUPDOWN : flags val FR_NOWHOLEWORD : flags val FR_REPLACE : flags val FR_REPLACEALL : flags val FR_SHOWHELP : flags val FR_WHOLEWORD : flags val cFindReplaceFlags: flags Foreign.conversion end end = struct open Foreign (* val System_isShort : vol -> bool = RunCall.run_call1 RuntimeCalls.POLY_SYS_is_short*) fun absConversion {abs: 'a -> 'b, rep: 'b -> 'a} (c: 'a conversion) : 'b conversion = let val { load=loadI, store=storeI, ctype } = breakConversion c fun load m = abs(loadI m) fun store(m, v) = storeI(m, rep v) in makeConversion { load = load, store = store, ctype = ctype } end (* In many cases we can pass a set of options as a bit set. *) (* fun bitsetConversion {abs, rep} = let val (fromC, toC, Ctype) = breakConversion INT val fromList = List.foldl (fn(i, n) => IntInf.orb(rep i, n)) 0 fun toList n = [abs n] (* This is a bit of a mess. *) in mkConversion (toList o fromCuint) (toCuint o fromList) Cuint end*) (* Conversions between Word/Word32/LargeWord etc. *) local open Memory LowLevel fun noFree () = () in local fun load(m: voidStar): Word8.word = get8(m, 0w0) fun store(m: voidStar, i: Word8.word) = (set8(m, 0w0, i); noFree) in val cUint8w: Word8.word conversion = makeConversion{ load=load, store=store, ctype = cTypeUint8 } end local fun load(m: voidStar): Word.word = get16(m, 0w0) fun store(m: voidStar, i: Word.word) = (set16(m, 0w0, i); noFree) in val cUint16w: Word.word conversion = makeConversion{ load=load, store=store, ctype = cTypeInt16 } end local fun load(m: voidStar): Word32.word = get32(m, 0w0) fun store(m: voidStar, i: Word32.word) = (set32(m, 0w0, i); noFree) in val cUint32w: Word32.word conversion = makeConversion{ load=load, store=store, ctype = cTypeUint32 } end val cUintw = cUint32w (* Int should be 32-bits on Windows. *) val _ = #size LowLevel.cTypeUint = #size LowLevel.cTypeUint32 orelse raise Fail "unsigned int is not 32-bits" val cUlongw = cUint32w val _ = #size LowLevel.cTypeUlong = #size LowLevel.cTypeUint32 orelse raise Fail "unsigned long is not 32-bits" end val cDWORD = cUint32 (* Defined to be 32-bit unsigned *) and cWORD = cUint16 (* Defined to be 16-bit unsigned *) val cDWORDw = cUint32w and cWORDw = cUint16w (* For some reason Windows has both INT_PTR and LONG_PTR and they are slightly different. *) val cLONG_PTR = if #size LowLevel.cTypePointer = 0w4 then cLong else cInt64 val cINT_PTR = if #size LowLevel.cTypePointer = 0w4 then cInt else cInt64 val cULONG_PTR = if #size LowLevel.cTypePointer = 0w4 then cUlong else cUint64 val cUINT_PTR = if #size LowLevel.cTypePointer = 0w4 then cUint else cUint64 val cLPARAM = cLONG_PTR val cSIZE_T = cULONG_PTR (* Probably. *) val cDWORD_PTR = cULONG_PTR (* Defined to be the same so I'm not sure why it's there .*) val cUINT_PTRw = absConversion{abs=Memory.voidStar2Sysword, rep=Memory.sysWord2VoidStar} cPointer (* These are called XXX32.DLL on both 32-bit and 64-bit. *) fun kernel name = getSymbol(loadLibrary "kernel32.dll") name and user sym = getSymbol(loadLibrary "user32.DLL") sym and commdlg sym = getSymbol(loadLibrary "comdlg32.DLL") sym and gdi sym = getSymbol(loadLibrary "gdi32.DLL") sym and shell sym = getSymbol(loadLibrary "shell32.DLL") sym and comctl sym = getSymbol(loadLibrary "comctl32.DLL") sym (* We need to use the Pascal calling convention on 32-bit Windows. *) val winAbi = case List.find (fn ("stdcall", _) => true | _ => false) LibFFI.abiList of SOME(_, abi) => abi | NONE => LibFFI.abiDefault (* As well as setting the abi we can also use the old argument order. *) fun winCall0 sym argConv resConv = buildCall0withAbi(winAbi, sym, argConv, resConv) and winCall1 sym argConv resConv = buildCall1withAbi(winAbi, sym, argConv, resConv) and winCall2 sym argConv resConv = buildCall2withAbi(winAbi, sym, argConv, resConv) and winCall3 sym argConv resConv = buildCall3withAbi(winAbi, sym, argConv, resConv) and winCall4 sym argConv resConv = buildCall4withAbi(winAbi, sym, argConv, resConv) and winCall5 sym argConv resConv = buildCall5withAbi(winAbi, sym, argConv, resConv) and winCall6 sym argConv resConv = buildCall6withAbi(winAbi, sym, argConv, resConv) and winCall7 sym argConv resConv = buildCall7withAbi(winAbi, sym, argConv, resConv) and winCall8 sym argConv resConv = buildCall8withAbi(winAbi, sym, argConv, resConv) and winCall9 sym argConv resConv = buildCall9withAbi(winAbi, sym, argConv, resConv) and winCall10 sym argConv resConv = buildCall10withAbi(winAbi, sym, argConv, resConv) and winCall11 sym argConv resConv = buildCall11withAbi(winAbi, sym, argConv, resConv) and winCall12 sym argConv resConv = buildCall12withAbi(winAbi, sym, argConv, resConv) and winCall13 sym argConv resConv = buildCall13withAbi(winAbi, sym, argConv, resConv) and winCall14 sym argConv resConv = buildCall14withAbi(winAbi, sym, argConv, resConv) (* Previously we had a specific call to do this. The error state is no longer set by the new FFI. *) (* fun GetLastError(): OS.syserror = RunCall.run_call2 RuntimeCalls.POLY_SYS_os_specific (1100, ()) *) local val getLastError = winCall0 (kernel "GetLastError") () cDWORD in fun GetLastError(): OS.syserror = (* Windows error codes are negative values in OS.syserror. *) RunCall.unsafeCast (~ (getLastError())) end (* The string argument of the SysErr exception is supposed to match the result of OS.errMsg. *) fun raiseSysErr () = let val err = GetLastError() in raise OS.SysErr(OS.errorMsg err, SOME err) end (* Many system calls return bool. If the result is false we raise an exception. *) fun checkResult true = () | checkResult false = raiseSysErr () val cBool: bool conversion = absConversion{abs = fn 0 => false | _ => true, rep = fn false => 0 | true => 1} cInt fun successState name: unit conversion = absConversion { abs = checkResult, rep = fn _ => raise Fail ("successState:" ^ name) } cBool type POINT = { x: int, y: int } local fun breakPoint ({x,y}: POINT) = (x,y) fun mkPoint (x,y): POINT = {x=x, y=y} in val cPoint = absConversion {abs=mkPoint, rep=breakPoint} (cStruct2 (cLong, cLong)) end type RECT = { left: int, top: int, right: int, bottom: int } local fun breakRect ({left,top,right,bottom}: RECT) = (left,top,right,bottom) fun mkRect (left,top,right,bottom): RECT = {left=left,top=top,right=right,bottom=bottom} in val cRect = absConversion {abs=mkRect, rep=breakRect} (cStruct4 (cLong,cLong,cLong,cLong)) end type SIZE = { cx: int, cy: int } local fun breakSize ({cx,cy}: SIZE) = (cx,cy) fun mkSize (cx,cy): SIZE = {cx=cx, cy=cy} in val cSize = absConversion {abs=mkSize, rep=breakSize} (cStruct2 (cLong,cLong)) end (* Handles are generally opaque values. We want them to be eqtypes, though. *) local structure HandStruct :> sig eqtype 'a HANDLE val hNull: 'a HANDLE val isHNull: 'a HANDLE -> bool val handleOfVoidStar: Memory.voidStar -> 'a HANDLE and voidStarOfHandle: 'a HANDLE -> Memory.voidStar end = struct type 'a HANDLE = Memory.voidStar val hNull = Memory.null fun isHNull h = h = hNull (* We sometimes need the next two functions internally. They're needed externally unless we change the result type of SendMessage to allow us to return a handle for certain messages. *) fun handleOfVoidStar h = h and voidStarOfHandle h = h end in open HandStruct end (* We just need these as placeholders. We never create values of these types. They are used simply as a way of creating different handle types. *) (* Don't use abstype - we want them to eqtypes *) datatype GdiObj = GdiObj and Instance = Instance and Drop = Drop and DeviceContext = DeviceContext and Menu = Menu and Window = Window and Global = Global and Src = Src and Update = Update (* HINSTANCE is used as an instance of a module. *) type HINSTANCE = Instance HANDLE and HDROP = Drop HANDLE and HGDIOBJ = GdiObj HANDLE and HDC = DeviceContext HANDLE and HMENU = Menu HANDLE and HWND = Window HANDLE and HGLOBAL = Global HANDLE and HRSRC = Src HANDLE and HUPDATE = Update HANDLE local fun cHANDLE() = absConversion {abs=handleOfVoidStar, rep=voidStarOfHandle} cPointer fun hoptOfvs n = if Memory.voidStar2Sysword n = 0w0 then NONE else SOME(handleOfVoidStar n) fun cHANDLEOPT() = absConversion {abs=hoptOfvs, rep=fn v => voidStarOfHandle(getOpt(v, hNull)) } cPointer in val cHGDIOBJ: HGDIOBJ conversion = cHANDLE() and cHDROP: HDROP conversion = cHANDLE() and cHMENU: HMENU conversion = cHANDLE() and cHINSTANCE: HINSTANCE conversion = cHANDLE() and cHDC: HDC conversion = cHANDLE() and cHWND: HWND conversion = cHANDLE() val cHMENUOPT: HMENU option conversion = cHANDLEOPT() and cHGDIOBJOPT: HGDIOBJ option conversion = cHANDLEOPT() and cHWNDOPT: HWND option conversion = cHANDLEOPT() val cHGLOBAL: HGLOBAL conversion = cHANDLE() and cHRSRC: HRSRC conversion = cHANDLE() and cHUPDATE: HUPDATE conversion = cHANDLE() end (* Temporary declarations. *) val hgdiObjNull:HGDIOBJ = hNull and isHgdiObjNull: HGDIOBJ -> bool = isHNull and hdcNull: HDC = hNull and isHdcNull: HDC -> bool = isHNull and hmenuNull: HMENU = hNull and isHmenuNull: HMENU -> bool = isHNull and hinstanceNull: HINSTANCE = hNull and isHinstanceNull: HINSTANCE -> bool = isHNull and hwndNull: HWND = hNull (* All these are various kinds of HGDIOBJ. It's too complicated to try to use different types for them. *) type HPALETTE = HGDIOBJ and HFONT = HGDIOBJ and HPEN = HGDIOBJ and HBITMAP = HGDIOBJ and HRGN = HGDIOBJ and HBRUSH = HGDIOBJ and HENHMETAFILE = HGDIOBJ and HMETAFILE = HGDIOBJ val cHPALETTE: HPALETTE conversion = cHGDIOBJ and cHFONT: HFONT conversion = cHGDIOBJ and cHPEN: HPEN conversion = cHGDIOBJ and cHBITMAP: HBITMAP conversion = cHGDIOBJ and cHRGN: HRGN conversion = cHGDIOBJ and cHBRUSH: HBRUSH conversion = cHGDIOBJ and cHENHMETAFILE: HENHMETAFILE conversion = cHGDIOBJ and cHMETAFILE: HMETAFILE conversion = cHGDIOBJ (* I'm not so happy about treating these as HGDIOBJ but it makes the types of messages such as BM_SETIMAGE simpler. *) type HICON = HGDIOBJ and HCURSOR = HGDIOBJ val cHICON = cHGDIOBJ and cHCURSOR = cHGDIOBJ (* The easiest way to deal with datatypes is often by way of a table. *) fun tableLookup (table: (''a * ''b) list, default) = let fun toInt [] x = (case default of NONE => raise Fail "tableLookup: not found" | SOME (_, d) => d x) | toInt ((y, i) :: tl) x = if x = y then i else toInt tl x fun fromInt [] x = (case default of NONE => raise Fail ("tableLookup: not found") | SOME (d, _) => d x) | fromInt ((y, i) :: tl) x = if x = i then y else fromInt tl x in (toInt table, fromInt table) end fun tableConversion (table: (''a * ''b) list, default) (conv: ''b conversion): ''a conversion = let val (toInt, fromInt) = tableLookup(table, default) in absConversion {abs = fromInt, rep = toInt} conv end (* In other cases we have sets of options. We represent them by a list. The order of the elements in the table is significant if we are to be able to handle multiple bits. Patterns with more than one bit set MUST be placed later than those with a subset of those bits. *) fun tableSetLookup (table: (''a * Word32.word) list, default) = let open Word32 (* Conversion to integer - just fold the values. *) fun toInt' [] x = (case default of NONE => raise Fail "tableLookup: not found" | SOME (_, d) => d x) | toInt' ((y, i) :: tl) x = if x = y then i else toInt' tl x val toInt = List.foldl (fn (a, b) => orb(toInt' table a, b)) 0w0 (* It would speed up the searches if we ordered the list so that multiple bit entries preceded those with fewer bits but it's much easier to lay out the tables if we do it this way. *) fun fromInt _ _ 0w0 = [] (* Zero is an empty list. *) | fromInt [] NONE x = (* Not found *) (case default of NONE => raise Fail ("tableLookup: not found" ^ Word32.toString x) | SOME (d, _) => [d x]) | fromInt [] (SOME(res, bits)) x = (* Found something - remove it from the set. *) (res :: fromInt table NONE (andb(x, notb bits))) | fromInt ((res, bits)::tl) sofar x = if bits <> 0w0 andalso andb(x, bits) = bits then (* Matches *) fromInt tl (SOME(res, bits)) x else (* Doesn't match *) fromInt tl sofar x in (toInt, fromInt table NONE) end fun tableSetConversion (table: (''a * Word32.word) list, default): ''a list conversion = let val (toInt, fromInt) = tableSetLookup(table, default) in absConversion {abs = fromInt, rep = toInt} cUintw end structure FindReplaceFlags:> sig include BIT_FLAGS val FR_DIALOGTERM : flags val FR_DOWN : flags val FR_FINDNEXT : flags val FR_HIDEMATCHCASE : flags val FR_HIDEUPDOWN : flags val FR_HIDEWHOLEWORD : flags val FR_MATCHCASE : flags val FR_NOMATCHCASE : flags val FR_NOUPDOWN : flags val FR_NOWHOLEWORD : flags val FR_REPLACE : flags val FR_REPLACEALL : flags val FR_SHOWHELP : flags val FR_WHOLEWORD : flags val cFindReplaceFlags: flags conversion end = struct open Word32 type flags = word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val FR_DOWN = 0wx00000001 val FR_WHOLEWORD = 0wx00000002 val FR_MATCHCASE = 0wx00000004 val FR_FINDNEXT = 0wx00000008 val FR_REPLACE = 0wx00000010 val FR_REPLACEALL = 0wx00000020 val FR_DIALOGTERM = 0wx00000040 val FR_SHOWHELP = 0wx00000080 val FR_NOUPDOWN = 0wx00000400 val FR_NOMATCHCASE = 0wx00000800 val FR_NOWHOLEWORD = 0wx00001000 val FR_HIDEUPDOWN = 0wx00004000 val FR_HIDEMATCHCASE = 0wx00008000 val FR_HIDEWHOLEWORD = 0wx00010000 val all = flags[FR_DOWN, FR_WHOLEWORD, FR_MATCHCASE, FR_FINDNEXT, FR_REPLACE, FR_REPLACEALL, FR_DIALOGTERM, FR_NOUPDOWN, FR_NOMATCHCASE, FR_NOWHOLEWORD, FR_HIDEUPDOWN, FR_HIDEMATCHCASE, FR_HIDEWHOLEWORD] val intersect = List.foldl (fn (a, b) => andb(a,b)) all val cFindReplaceFlags = cDWORDw end (* The class "string" may be a name or an atom. *) datatype ClassType = NamedClass of string | ClassAtom of int local open Memory val {store=storeS, load=loadS, ctype} = breakConversion cString fun storeClass(m, ClassAtom i) = if i >= 0 andalso i < 0xC000 then (setAddress(m, 0w0, sysWord2VoidStar(SysWord.fromInt i)); fn () => ()) else raise Fail "atom out of range" | storeClass(m, NamedClass s) = storeS(m, s) fun loadClass m = let val v = getAddress(m, 0w0) in if voidStar2Sysword v < 0wxC000 then ClassAtom(SysWord.toInt(voidStar2Sysword v)) else NamedClass(loadS m) end in val cCLASS = makeConversion { load = loadClass, store = storeClass, ctype = ctype } end (* Clipboard formats. I've added CF_NONE, CF_PRIVATE, CF_GDIOBJ and CF_REGISTERED. This is here because it is used in both Clipboard and Message (WM_RENDERFORMAT) *) datatype ClipboardFormat = CF_NONE | CF_TEXT | CF_BITMAP | CF_METAFILEPICT | CF_SYLK | CF_DIF | CF_TIFF | CF_OEMTEXT | CF_DIB | CF_PALETTE | CF_PENDATA | CF_RIFF | CF_WAVE | CF_UNICODETEXT | CF_ENHMETAFILE | CF_OWNERDISPLAY | CF_DSPTEXT | CF_DSPBITMAP | CF_DSPMETAFILEPICT | CF_DSPENHMETAFILE | CF_PRIVATE of int | CF_GDIOBJ of int | CF_REGISTERED of int | CF_HDROP | CF_LOCALE local val tab = [ (CF_NONE, 0), (CF_TEXT, 1), (CF_BITMAP, 2), (CF_METAFILEPICT, 3), (CF_SYLK, 4), (CF_DIF, 5), (CF_TIFF, 6), (CF_OEMTEXT, 7), (CF_DIB, 8), (CF_PALETTE, 9), (CF_PENDATA, 10), (CF_RIFF, 11), (CF_WAVE, 12), (CF_UNICODETEXT, 13), (CF_ENHMETAFILE, 14), (CF_HDROP, 15), (CF_LOCALE, 16), (CF_OWNERDISPLAY, 0x0080), (CF_DSPTEXT, 0x0081), (CF_DSPBITMAP, 0x0082), (CF_DSPMETAFILEPICT, 0x0083), (CF_DSPENHMETAFILE, 0x008E) ] fun toInt (CF_PRIVATE i) = if i >= 0 andalso i < 0xff then 0x0200 + i else raise Size | toInt (CF_GDIOBJ i) = if i >= 0 andalso i < 0xff then 0x0300 + i else raise Size | toInt (CF_REGISTERED i) = i | toInt _ = raise Match fun fromInt i = if i >= 0x0200 andalso i <= 0x02ff then CF_PRIVATE(i-0x0200) else if i >= 0x0300 andalso i <= 0x03ff then CF_GDIOBJ(i-0x0300) else if i >= 0xC000 andalso i < 0xFFFF then CF_REGISTERED i else raise Match in val clipLookup = tableLookup (tab, SOME(fromInt, toInt)) end (* Resources may be specified by strings or by ints. *) datatype RESID = IdAsInt of int | IdAsString of string local open Memory val {store=storeS, load=loadS, ctype} = breakConversion cString fun storeResid(m, IdAsInt i) = if i >= 0 andalso i < 65536 then (setAddress(m, 0w0, sysWord2VoidStar(SysWord.fromInt i)); fn () => ()) else raise Fail "resource id out of range" | storeResid(m, IdAsString s) = storeS(m, s) fun loadResid m = let val v = getAddress(m, 0w0) in if voidStar2Sysword v < 0w65536 then IdAsInt(SysWord.toInt(voidStar2Sysword v)) else IdAsString(loadS m) end in val cRESID = makeConversion { load = loadResid, store = storeResid, ctype = ctype } end (*datatype HelpContext = HelpInfo_MenuItem of | HelpInfo_Window of type HELPINFO = { }*) (* Useful conversions. *) (* Various functions return zero if error. This conversion checks for that. *) fun cPOSINT _ = absConversion {abs = fn 0 => raiseSysErr() | n => n, rep = fn i => i} cInt (* Conversion between string option and C strings. NONE is converted to NULL. *) val STRINGOPT = cOptionPtr cString (* Convert a C string to ML. *) fun fromCstring buff = let open Memory (* We can't use #load cString because the argument is the address of the address of the string. *) fun sLen i = if get8(buff, i) = 0w0 then i else sLen(i+0w1) val length = sLen 0w0 fun loadChar i = Char.chr(Word8.toInt(get8(buff, Word.fromInt i))) in CharVector.tabulate(Word.toInt length, loadChar) end (* Copy a string to a particular offset in a buffer and add a null terminator. *) fun copyStringToMem (buf, n, s) = let open Memory infix 6 ++ fun copyToBuf (i, v) = set8(buf, Word.fromInt(i+n), Byte.charToByte v) in CharVector.appi copyToBuf s; set8(buf, Word.fromInt(n + size s), 0w0) end fun toCstring s = let open Memory val sLen = Word.fromInt(String.size s) val sMem = malloc(sLen + 0w1) val () = copyStringToMem(sMem, 0, s) in sMem end (* When getting a string it is often the case that passing NULL returns the length required. Then a second call will actually retrieve the string. *) fun getStringWithNullIsLength(f: Memory.voidStar*int -> int): string = let open Memory val realLength = f(null, 0) val buff = malloc (Word.fromInt(realLength+1)) val _ = f(buff, realLength) handle ex => (free buff; raise ex) in fromCstring buff before free buff end (* In several cases when extracting a string it is not possible in advance to know how big to make the buffer. This function loops until all the string has been extracted. *) (* This is at least needed for GetClassName *) fun getStringCall(f: Memory.voidStar*int -> int): string = let open Memory fun doCall initialSize = let (* Allocate a buffer to receive the result. For safety we make it one character longer than we actually say because it's not always clear whether the length we pass is the size including the NULL. Equally we are only certain we have read the whole string if the return value is less than initialSize-1 because the return value could be the number of real characters copied to the buffer. *) val buff = malloc (Word.fromInt(initialSize+1)) val resultSize = f(buff, initialSize) handle ex => (free buff; raise ex) in if resultSize < initialSize-1 then (* We've got it all. *) fromCstring buff before free buff else ( free buff; doCall(initialSize + initialSize div 2) ) end in doCall (*1024*) 3 (* Use a small size initially for testing. *) end (* We have a number of calls that extract a vector of results. They are called with an initial size, set the vector to the results and return a count of the number actually assigned. *) fun getVectorResult(element: 'a conversion) = let val { load=loadElem, ctype={size=sizeElem, ...}, ...} = breakConversion element fun run f initialCount = let open Memory infix 6 ++ -- val vec = malloc(Word.fromInt initialCount * sizeElem) fun getElement i = loadElem(vec ++ Word.fromInt i * sizeElem) val resultCount = f (vec, initialCount) handle ex => (free vec; raise ex) in Vector.tabulate(resultCount, getElement) before free vec end in run end (* Some C functions take a vector of values to allow a variable number of elements to be passed. We use a list for this in ML. *) (* TODO: This discards the result of any store function so if we store strings we'll leak store. *) fun list2Vector (conv: 'a conversion) (l:'a list): Memory.voidStar * int = let val count = List.length l val {store=storea, ctype={size=sizea, ...}, ...} = breakConversion conv open Memory infix 6 ++ val vec = malloc(Word.fromInt count * sizea) fun setItem(item, v) = (ignore(storea(v, item)); v ++ sizea) val _ = List.foldl setItem vec l in (vec, count) end val GlobalAlloc = winCall2 (kernel "GlobalAlloc") (cInt, cSIZE_T) cHGLOBAL val GlobalLock = winCall1 (kernel "GlobalLock") (cHGLOBAL) cPointer val GlobalFree = winCall1 (kernel "GlobalFree") (cHGLOBAL) cHGLOBAL val GlobalSize = winCall1 (kernel "GlobalSize") (cHGLOBAL) cSIZE_T val GlobalUnlock = winCall1 (kernel "GlobalUnlock") (cHGLOBAL) cBool (* Conversion for Word8Vector. We can't do this as a general conversion because we can't find out how big the C vector is. *) fun fromCWord8vec (buff, length) = Word8Vector.tabulate(length, fn i => Memory.get8(buff, Word.fromInt i)) fun toCWord8vec(s: Word8Vector.vector): Memory.voidStar = let open Memory Word8Vector val sLen = Word.fromInt(length s) val sMem = malloc sLen val () = appi(fn(i, b) => set8(sMem, Word.fromInt i, b)) s in sMem end (* (* Conversion for a fixed size byte array. *) fun BYTEARRAY n = let val base = Cstruct (List.tabulate (n, fn _ => Cchar)) fun from v = toWord8vec(address v, n) fun to w = if Word8Vector.length w <> n then raise Size else deref(fromWord8vec w) in mkConversion from to base end *) (* Conversion for a fixed size char array. *) fun cCHARARRAY n : string conversion = let (* Make it a struct of chars *) val { size=sizeC, align=alignC, ffiType=ffiTypeC } = LowLevel.cTypeChar val arraySize = sizeC * Word.fromInt n fun ffiType () = LibFFI.createFFItype { size = arraySize, align = alignC, typeCode=LibFFI.ffiTypeCodeStruct, elements = List.tabulate (n, fn _ => ffiTypeC()) } val arrayType: LowLevel.ctype = { size = arraySize, align = alignC, ffiType = ffiType } open Memory fun load(v: voidStar): string = let (* It should be null-terminated but just in case... *) fun sLen i = if i = Word.fromInt n orelse get8(v, i) = 0w0 then i else sLen(i+0w1) val length = sLen 0w0 fun loadChar i = Char.chr(Word8.toInt(get8(v, Word.fromInt i))) in CharVector.tabulate(Word.toInt length, loadChar) end fun store(v: voidStar, s: string) = let (* The length must be less than the size to allow for the null *) val sLen = size s val _ = sLen < n orelse raise Fail "string too long" in CharVector.appi(fn(i, ch) => set8(v, Word.fromInt i, Word8.fromInt(Char.ord ch))) s; set8(v, Word.fromInt sLen, 0w0); fn () => () end in makeConversion { load = load, store = store, ctype = arrayType } end (* These should always be UNSIGNED values. *) local open Word32 infix << >> orb andb val w32ToW = Word.fromLargeWord o Word32.toLargeWord and wTow32 = Word32.fromLargeWord o Word.toLargeWord in fun LOWORD(l) = w32ToW(l andb 0wxFFFF) fun HIWORD(l) = w32ToW((l >> 0w16) andb 0wxFFFF) fun MAKELONG(a, b) = (wTow32 b << 0w16) orb (wTow32 a andb 0wxFFFF) end local open Word infix << >> orb andb val wToW8 = Word8.fromLargeWord o Word.toLargeWord in fun HIBYTE(w) = wToW8((w >> 0w8) andb 0wxFF) fun LOBYTE(w) = wToW8(w andb 0wxFF) end (* Convert between strings and vectors containing Unicode characters. N.B. These are not null terminated. *) local val CP_ACP = 0 (* Default *) val WideCharToMultiByte = winCall8 (kernel "WideCharToMultiByte") (cUint, cDWORD, cByteArray, cInt, cPointer, cInt, cPointer, cPointer) cInt val MultiByteToWideChar = winCall6 (kernel "MultiByteToWideChar") (cUint, cDWORD, cString, cInt, cPointer, cInt) cInt in fun unicodeToString(w: Word8Vector.vector): string = let open Memory val inputLength = Word8Vector.length w div 2 (* Number of unicode chars *) val outputLength = WideCharToMultiByte(CP_ACP, 0, w, inputLength, null, 0, null, null) val outputBuf = malloc(Word.fromInt outputLength) val conv = WideCharToMultiByte(CP_ACP, 0, w, inputLength, outputBuf, outputLength, null, null) fun loadChar i = Char.chr(Word8.toInt(get8(outputBuf, Word.fromInt i))) in (* We can't use fromCstring here because it's not necessarily null terminated. *) CharVector.tabulate(conv, loadChar) before free outputBuf end fun stringToUnicode(s: string): Word8Vector.vector = let open Memory val inputLength = size s (* This does not include a terminating NULL *) (* The lengths returned by MultiByteToWideChar are the number of Unicode chars *) val outputLength = MultiByteToWideChar(CP_ACP, 0, s, inputLength, null, 0) val outputBuf = malloc(Word.fromInt outputLength * 0w2) val conv = MultiByteToWideChar(CP_ACP, 0, s, inputLength, outputBuf, outputLength) fun loadByte i = get8(outputBuf, Word.fromInt i) in Word8Vector.tabulate(conv*2, loadByte) before free outputBuf end end end; polyml-5.7.1/mlsource/extra/Win/MessageBox.sml0000644000175000017500000001367513204034553020276 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure MessageBox : sig type HWND val IDABORT : int val IDCANCEL : int val IDCLOSE : int val IDHELP : int val IDIGNORE : int val IDNO : int val IDOK : int val IDRETRY : int val IDYES : int structure MessageBoxStyle : sig include BIT_FLAGS val MB_ABORTRETRYIGNORE : flags val MB_APPLMODAL : flags val MB_DEFAULT_DESKTOP_ONLY : flags val MB_DEFBUTTON1 : flags val MB_DEFBUTTON2 : flags val MB_DEFBUTTON3 : flags val MB_DEFBUTTON4 : flags val MB_HELP : flags val MB_ICONASTERISK : flags val MB_ICONERROR : flags val MB_ICONEXCLAMATION : flags val MB_ICONHAND : flags val MB_ICONINFORMATION : flags val MB_ICONQUESTION : flags val MB_ICONSTOP : flags val MB_ICONWARNING : flags val MB_NOFOCUS : flags val MB_OK : flags val MB_OKCANCEL : flags val MB_RETRYCANCEL : flags val MB_RIGHT : flags val MB_RTLREADING : flags val MB_SERVICE_NOTIFICATION : flags val MB_SERVICE_NOTIFICATION_NT3X : flags val MB_SETFOREGROUND : flags val MB_SYSTEMMODAL : flags val MB_TASKMODAL : flags val MB_TOPMOST : flags val MB_USERICON : flags val MB_YESNO : flags val MB_YESNOCANCEL : flags end val MessageBox : HWND option * string option * string option * MessageBoxStyle.flags -> int val MessageBeep: MessageBoxStyle.flags -> unit end = struct local open Foreign open Base open Globals in type HWND = HWND structure MessageBoxStyle = struct open Word32 type flags = word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val MB_OK = 0wx00000000 val MB_OKCANCEL = 0wx00000001 val MB_ABORTRETRYIGNORE = 0wx00000002 val MB_YESNOCANCEL = 0wx00000003 val MB_YESNO = 0wx00000004 val MB_RETRYCANCEL = 0wx00000005 val MB_ICONHAND = 0wx00000010 val MB_ICONQUESTION = 0wx00000020 val MB_ICONEXCLAMATION = 0wx00000030 val MB_ICONASTERISK = 0wx00000040 val MB_USERICON = 0wx00000080 val MB_ICONWARNING = MB_ICONEXCLAMATION val MB_ICONERROR = MB_ICONHAND val MB_ICONINFORMATION = MB_ICONASTERISK val MB_ICONSTOP = MB_ICONHAND val MB_DEFBUTTON1 = 0wx00000000 val MB_DEFBUTTON2 = 0wx00000100 val MB_DEFBUTTON3 = 0wx00000200 val MB_DEFBUTTON4 = 0wx00000300 val MB_APPLMODAL = 0wx00000000 val MB_SYSTEMMODAL = 0wx00001000 val MB_TASKMODAL = 0wx00002000 val MB_HELP = 0wx00004000 (* Help Button *) val MB_NOFOCUS = 0wx00008000 val MB_SETFOREGROUND = 0wx00010000 val MB_DEFAULT_DESKTOP_ONLY = 0wx00020000 val MB_TOPMOST = 0wx00040000 val MB_RIGHT = 0wx00080000 val MB_RTLREADING = 0wx00100000 val MB_SERVICE_NOTIFICATION = 0wx00200000 val MB_SERVICE_NOTIFICATION_NT3X = 0wx00040000 val all = flags[MB_OK, MB_OKCANCEL, MB_ABORTRETRYIGNORE, MB_YESNOCANCEL, MB_YESNO, MB_RETRYCANCEL, MB_ICONHAND, MB_ICONQUESTION, MB_ICONEXCLAMATION, MB_ICONASTERISK, MB_USERICON, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON4, MB_APPLMODAL, MB_SYSTEMMODAL, MB_TASKMODAL, MB_HELP, MB_NOFOCUS, MB_SETFOREGROUND, MB_DEFAULT_DESKTOP_ONLY, MB_TOPMOST, MB_RIGHT, MB_RTLREADING, MB_SERVICE_NOTIFICATION, MB_SERVICE_NOTIFICATION_NT3X] val intersect = List.foldl (fn (a, b) => andb(a,b)) all val cConvert: flags conversion = cUintw end (* Return values from a message box. Should this be a datatype? *) val IDOK = 1 val IDCANCEL = 2 val IDABORT = 3 val IDRETRY = 4 val IDIGNORE = 5 val IDYES = 6 val IDNO = 7 val IDCLOSE = 8 val IDHELP = 9 val MessageBox = winCall4 (user "MessageBoxA") (cHWNDOPT, STRINGOPT, STRINGOPT, MessageBoxStyle.cConvert) cInt val MessageBeep = winCall1 (user "MessageBeep") MessageBoxStyle.cConvert (successState "MessageBeep") end end; polyml-5.7.1/mlsource/extra/Win/Button.sml0000644000175000017500000002217013204034553017502 0ustar daviddavid(* Copyright (c) 2001 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Buttons. *) structure Button: sig structure Style: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and BS_3STATE: flags and BS_AUTO3STATE: flags and BS_AUTOCHECKBOX: flags and BS_AUTORADIOBUTTON: flags and BS_BITMAP: flags and BS_BOTTOM: flags and BS_CENTER: flags and BS_CHECKBOX: flags and BS_DEFPUSHBUTTON: flags and BS_FLAT: flags and BS_GROUPBOX: flags and BS_ICON: flags and BS_LEFT: flags and BS_LEFTTEXT: flags and BS_MULTILINE: flags and BS_NOTIFY: flags and BS_OWNERDRAW: flags and BS_PUSHBUTTON: flags and BS_PUSHLIKE: flags and BS_RADIOBUTTON: flags and BS_RIGHT: flags and BS_RIGHTBUTTON: flags and BS_TEXT: flags and BS_TOP: flags and BS_USERBUTTON: flags and BS_VCENTER: flags end structure Notifications: sig val BN_CLICKED: int val BN_PAINT: int val BN_HILITE: int val BN_UNHILITE: int val BN_DISABLE: int val BN_DOUBLECLICKED: int val BN_PUSHED: int val BN_UNPUSHED: int val BN_DBLCLK: int val BN_SETFOCUS: int val BN_KILLFOCUS: int end structure State: sig val BST_UNCHECKED: int val BST_CHECKED: int val BST_INDETERMINATE: int val BST_PUSHED: int val BST_FOCUS: int end end = struct structure Style = struct open Window.Style (* Include all the windows styles. *) type flags = Window.Style.flags (* Causes the type to print as Dialog.Style.flags. *) val BS_PUSHBUTTON: flags = fromWord 0wx00000000 val BS_DEFPUSHBUTTON: flags = fromWord 0wx00000001 val BS_CHECKBOX: flags = fromWord 0wx00000002 val BS_AUTOCHECKBOX: flags = fromWord 0wx00000003 val BS_RADIOBUTTON: flags = fromWord 0wx00000004 val BS_3STATE: flags = fromWord 0wx00000005 val BS_AUTO3STATE: flags = fromWord 0wx00000006 val BS_GROUPBOX: flags = fromWord 0wx00000007 val BS_USERBUTTON: flags = fromWord 0wx00000008 val BS_AUTORADIOBUTTON: flags = fromWord 0wx00000009 val BS_OWNERDRAW: flags = fromWord 0wx0000000B val BS_LEFTTEXT: flags = fromWord 0wx00000020 val BS_TEXT: flags = fromWord 0wx00000000 val BS_ICON: flags = fromWord 0wx00000040 val BS_BITMAP: flags = fromWord 0wx00000080 val BS_LEFT: flags = fromWord 0wx00000100 val BS_RIGHT: flags = fromWord 0wx00000200 val BS_CENTER: flags = fromWord 0wx00000300 val BS_TOP: flags = fromWord 0wx00000400 val BS_BOTTOM: flags = fromWord 0wx00000800 val BS_VCENTER: flags = fromWord 0wx00000C00 val BS_PUSHLIKE: flags = fromWord 0wx00001000 val BS_MULTILINE: flags = fromWord 0wx00002000 val BS_NOTIFY: flags = fromWord 0wx00004000 val BS_FLAT: flags = fromWord 0wx00008000 val BS_RIGHTBUTTON: flags = BS_LEFTTEXT val all = flags[Window.Style.all, BS_PUSHBUTTON, BS_DEFPUSHBUTTON, BS_CHECKBOX, BS_AUTOCHECKBOX, BS_RADIOBUTTON, BS_3STATE, BS_AUTO3STATE, BS_GROUPBOX, BS_USERBUTTON, BS_AUTORADIOBUTTON, BS_OWNERDRAW, BS_LEFTTEXT, BS_TEXT, BS_ICON, BS_BITMAP, BS_LEFT, BS_RIGHT, BS_CENTER, BS_TOP, BS_BOTTOM, BS_VCENTER, BS_PUSHLIKE, BS_MULTILINE, BS_NOTIFY, BS_FLAT] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure Notifications = struct val BN_CLICKED = 0 val BN_PAINT = 1 val BN_HILITE = 2 val BN_UNHILITE = 3 val BN_DISABLE = 4 val BN_DOUBLECLICKED = 5 val BN_PUSHED = BN_HILITE val BN_UNPUSHED = BN_UNHILITE val BN_DBLCLK = BN_DOUBLECLICKED val BN_SETFOCUS = 6 val BN_KILLFOCUS = 7 end (* These are returned by SendMessage(button, BM_GETCHECK) so need to be integers. *) structure State = struct val BST_UNCHECKED = 0x0000 val BST_CHECKED = 0x0001 val BST_INDETERMINATE = 0x0002 val BST_PUSHED = 0x0004 val BST_FOCUS = 0x0008 end end; (* let open Button.Style fun getType w = let val typeField = fromWord(SysWord.andb(toWord w, 0wx0f)) in if typeField = BS_PUSHBUTTON then "BS_PUSHBUTTON" else if typeField = BS_DEFPUSHBUTTON then "BS_DEFPUSHBUTTON" else if typeField = BS_CHECKBOX then "BS_CHECKBOX" else if typeField = BS_AUTOCHECKBOX then "BS_AUTOCHECKBOX" else if typeField = BS_RADIOBUTTON then "BS_RADIOBUTTON" else if typeField = BS_3STATE then "BS_3STATE" else if typeField = BS_AUTO3STATE then "BS_AUTO3STATE" else if typeField = BS_GROUPBOX then "BS_GROUPBOX" else if typeField = BS_USERBUTTON then "BS_USERBUTTON" else if typeField = BS_AUTORADIOBUTTON then "BS_AUTORADIOBUTTON" else if typeField = BS_OWNERDRAW then "BS_OWNERDRAW" else "??" end val flagTable = [(BS_LEFTTEXT, "BS_LEFTTEXT"), (BS_ICON, "BS_ICON"), (BS_BITMAP, "BS_BITMAP"), (BS_CENTER, "BS_CENTER"), (* Must come before the next two. *) (BS_LEFT, "BS_LEFT"), (BS_RIGHT, "BS_RIGHT"), (BS_VCENTER, "BS_VCENTER"), (* Must come before the next two. *) (BS_TOP, "BS_TOP"), (BS_BOTTOM, "BS_BOTTOM"), (BS_PUSHLIKE, "BS_PUSHLIKE"), (BS_MULTILINE, "BS_MULTILINE"), (BS_NOTIFY, "BS_NOTIFY"), (BS_FLAT, "BS_FLAT"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = getType x :: accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *)polyml-5.7.1/mlsource/extra/Win/GdiBase.sml0000644000175000017500000003165113204034553017531 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure GdiBase = struct local open Foreign Base in local datatype RasterOpCode = W of int and QuaternaryRop = Y of int in type RasterOpCode = RasterOpCode type QuaternaryRop = QuaternaryRop val cRASTEROPCODE = absConversion {abs = W, rep = fn W n => n} cDWORD val cQUATERNARY = absConversion {abs = Y, rep = fn Y n => n} cDWORD val SRCCOPY = W (0x00CC0020 (* dest = source *)) val SRCPAINT = W (0x00EE0086 (* dest = source OR dest *)) val SRCAND = W (0x008800C6 (* dest = source AND dest *)) val SRCINVERT = W (0x00660046 (* dest = source XOR dest *)) val SRCERASE = W (0x00440328 (* dest = source AND (NOT dest ) *)) val NOTSRCCOPY = W (0x00330008 (* dest = (NOT source) *)) val NOTSRCERASE = W (0x001100A6 (* dest = (NOT src) AND (NOT dest) *)) val MERGECOPY = W (0x00C000CA (* dest = (source AND pattern) *)) val MERGEPAINT = W (0x00BB0226 (* dest = (NOT source) OR dest *)) val PATCOPY = W (0x00F00021 (* dest = pattern *)) val PATPAINT = W (0x00FB0A09 (* dest = DPSnoo *)) val PATINVERT = W (0x005A0049 (* dest = pattern XOR dest *)) val DSTINVERT = W (0x00550009 (* dest = (NOT dest) *)) val BLACKNESS = W (0x00000042 (* dest = BLACK *)) val WHITENESS = W (0x00FF0062 (* dest = WHITE *)) fun MAKEROP4{fore = (W fore): RasterOpCode, back = (W back): RasterOpCode} = Y(IntInf.orb(fore, IntInf.andb(IntInf.<<(back, 0w8), 0xFF000000))) end (* BITMAPS *) type BITMAP = { width: int, height: int, widthBytes: int, planes: int, bitsPerPixel: int, bits: Word8Vector.vector option } local val bitmapStruct = cStruct7(cLong, cLong, cLong, cLong, cWORD, cWORD, cPointer) val {load = fromCStr, store = toCStr, ctype = lpStruct} = breakConversion bitmapStruct open Memory fun storeBmp(v: voidStar, {width, height, widthBytes, planes, bitsPerPixel, bits}: BITMAP) = let val m = case bits of NONE => Memory.null | SOME b => toCWord8vec b in toCStr(v, (0, width, height, widthBytes, planes, bitsPerPixel, m)); fn () => Memory.free m end fun loadbmp(v: voidStar): BITMAP = let val (_, width, height, widthBytes, planes, bitsPerPixel, bits) = fromCStr v val bits = if bits = Memory.null then NONE else SOME (fromCWord8vec (bits, height * widthBytes)) in {width = width, height = height, widthBytes = widthBytes, planes = planes, bitsPerPixel = bitsPerPixel, bits = bits} end in val cBITMAP = makeConversion{store=storeBmp, load=loadbmp, ctype = lpStruct} end (* Line and Path *) datatype PointType = PT_MOVETO | PT_LINETO | PT_BEZIERTO | PT_LINETOANDCLOSE | PT_BEZIERTOANDCLOSE local val tab = [ (PT_LINETO, 2), (PT_BEZIERTO, 4), (PT_MOVETO, 6), (PT_LINETOANDCLOSE, 3), (PT_BEZIERTOANDCLOSE, 5) ] val (toInt, fromInt) = tableLookup(tab, NONE) in val cPOINTTYPE = absConversion {abs = fromInt, rep = toInt} cUint8 (* Encoded as single bytes *) end (* COLORREF - this is an RGB encoded into a 32-bit word. *) abstype COLORREF = C of Word32.word with local open Word32 infix 7 andb infix 6 orb infix 4 << >> in fun RGB{red: int, green: int, blue: int} = C(fromInt red andb 0wxff orb (fromInt green andb 0wxff << 0w8) orb (fromInt blue andb 0wxff << 0w16)) fun PALETTERGB rgb = let val C r = RGB rgb in C(r orb 0wx02000000) end fun toRGB(C p) = { red = toInt(p andb 0wxff), green = toInt((p >> 0w8) andb 0wxff), blue = toInt((p >> 0w16) andb 0wxff) } end val cCOLORREF = absConversion {abs=C, rep = fn(C v) => v} cDWORDw end (* Brush *) datatype BrushStyle = BS_SOLID | BS_HOLLOW | BS_HATCHED of HatchStyle | BS_PATTERN of HBITMAP (* | BS_DIBPATTERN of PACKEDDIB *) and HatchStyle = HS_HORIZONTAL | HS_VERTICAL | HS_FDIAGONAL | HS_BDIAGONAL | HS_CROSS | HS_DIAGCROSS type LOGBRUSH = BrushStyle * COLORREF local val cLBRUSH = cStruct3(cUint, cCOLORREF, cULONG_PTR) val {load=loadStr, store=storeStr, ctype=lbStruct} = breakConversion cLBRUSH val hbtab = [ (HS_HORIZONTAL, 0 (* ~~~~~ *)), (HS_VERTICAL, 1 (* ||||| *)), (HS_FDIAGONAL, 2 (* \\\\\ *)), (HS_BDIAGONAL, 3 (* (* /// *) *)), (HS_CROSS, 4 (* +++++ *)), (HS_DIAGCROSS, 5 (* xxxxx *)) ] val (fromHB, toHB) = tableLookup(hbtab, NONE) val hgdiAsInt = SysWord.toInt o Memory.voidStar2Sysword o voidStarOfHandle and intAsHgdi = handleOfVoidStar o Memory.sysWord2VoidStar o SysWord.fromInt fun storeLB(m, (BS_SOLID, cr)) = storeStr(m, (0, cr, 0)) | storeLB(m, (BS_HOLLOW, cr)) = storeStr(m, (1, cr (* actually ignored *), 0)) | storeLB(m, (BS_HATCHED hs, cr)) = storeStr(m, (2, cr, fromHB hs)) | storeLB(m, (BS_PATTERN hb, cr)) = storeStr(m, (3, cr (* actually ignored *), hgdiAsInt hb)) (* | toLB(BS_DIBPATTERN dp, cr) = toStr(5, cr (* treated specially *), ??? dp) *) fun loadLB (v: Memory.voidStar): LOGBRUSH = let val (t, cr, i) = loadStr v in case t of 0 => (BS_SOLID, cr) | 1 => (BS_HOLLOW, cr) | 2 => (BS_HATCHED(toHB i), cr) | 3 => (BS_PATTERN(intAsHgdi i), cr) | _ => raise Fail "Unknown brush type" end in val cHATCHSTYLE = absConversion {abs = toHB, rep = fromHB} cInt val cLOGBRUSH = makeConversion{load=loadLB, store=storeLB, ctype = lbStruct} end (* Pen *) (* This is confused. Many of these are only applicable for ExtCreatePen and most are mutually exclusive. *) datatype PenStyle = PS_SOLID | PS_DASH | PS_DOT | PS_DASHDOT | PS_DASHDOTDOT | PS_NULL | PS_INSIDEFRAME | PS_USERSTYLE | PS_ALTERNATE | PS_ENDCAP_ROUND | PS_ENDCAP_SQUARE | PS_ENDCAP_FLAT | PS_JOIN_ROUND | PS_JOIN_BEVEL | PS_JOIN_MITER | PS_COSMETIC | PS_GEOMETRIC type LOGPEN = PenStyle * int option * COLORREF local val LPEN = cStruct3(cUintw, cPoint, cCOLORREF) val {load=loadStr, store=storeStr, ctype=lpStruct} = breakConversion LPEN val tab = [ (PS_SOLID, 0w0), (PS_DASH, 0w1 (* ~~~~~~~ *)), (PS_DOT, 0w2 (* ....... *)), (PS_DASHDOT, 0w3 (* _._._._ *)), (PS_DASHDOTDOT, 0w4 (* _.._.._ *)), (PS_NULL, 0w5), (PS_INSIDEFRAME, 0w6), (PS_USERSTYLE, 0w7), (PS_ALTERNATE, 0w8), (PS_ENDCAP_ROUND, 0wx00000000), (PS_ENDCAP_SQUARE, 0wx00000100), (PS_ENDCAP_FLAT, 0wx00000200), (PS_JOIN_ROUND, 0wx00000000), (PS_JOIN_BEVEL, 0wx00001000), (PS_JOIN_MITER, 0wx00002000), (PS_COSMETIC, 0wx00000000), (PS_GEOMETRIC, 0wx00010000) ] val (fromPS, toPS) = tableLookup(tab, NONE) fun storeLP(m, (ps, width, cr): LOGPEN) = storeStr(m, (fromPS ps, {x=getOpt(width, 0), y=0}, cr)) fun loadLP v: LOGPEN = let val (ps, {x=width, ...}, cr) = loadStr v in (toPS ps, case width of 0 => NONE | i => SOME i, cr) end in val cPENSTYLE = tableSetConversion(tab, NONE) val cLOGPEN = makeConversion{store=storeLP, load=loadLP, ctype=lpStruct} end (* Transform *) datatype MapMode = MM_TEXT | MM_LOMETRIC | MM_HIMETRIC | MM_LOENGLISH | MM_HIENGLISH | MM_TWIPS | MM_ISOTROPIC | MM_ANISOTROPIC val MM_MIN = MM_TEXT val MM_MAX = MM_ANISOTROPIC val MM_MAX_FIXEDSCALE = MM_TWIPS local val tab = [ (MM_TEXT, 1), (MM_LOMETRIC, 2), (MM_HIMETRIC, 3), (MM_LOENGLISH, 4), (MM_HIENGLISH, 5), (MM_TWIPS, 6), (MM_ISOTROPIC, 7), (MM_ANISOTROPIC, 8) ] (* SetMapMode and GetMapMode return 0 in the event of an error. *) fun toInt _ = raise Match fun fromInt i = (checkResult(i <> 0); raise Match); in val cMAPMODE = tableConversion(tab, SOME(fromInt, toInt)) cInt (* int for Get/SetMapMode *) end (* REGIONS *) local datatype RegionOperation = W of int in type RegionOperation = RegionOperation val REGIONOPERATION = absConversion {abs = W, rep = fn W n => n} cInt val RGN_ERROR = W (0) val RGN_AND = W (1) val RGN_OR = W (2) val RGN_XOR = W (3) val RGN_DIFF = W (4) val RGN_COPY = W (5) end local datatype ResultRegion = W of int in type ResultRegion = ResultRegion val RESULTREGION = absConversion {abs = W, rep = fn W n => n} cInt val ERROR = W (0) val NULLREGION = W (1) val SIMPLEREGION = W (2) val COMPLEXREGION = W (3) end type METAFILEPICT = {mm: MapMode, size: SIZE, hMF: HMETAFILE} local val metaFilePict = cStruct3(cMAPMODE, cSize, cHMETAFILE) val {store=storeMfp, load=loadMfp, ctype=mfpStruct} = breakConversion metaFilePict fun storeCMfp(m, ({mm, size, hMF}: METAFILEPICT)) = storeMfp(m, (mm, size, hMF)) fun loadCMfp v : METAFILEPICT = let val (mm, size, hMF) = loadMfp v in {mm=mm, size=size, hMF=hMF} end in (* This is needed in the Clipboard structure. *) val cMETAFILEPICT = makeConversion{store=storeCMfp, load=loadCMfp, ctype=mfpStruct} end end end; polyml-5.7.1/mlsource/extra/Win/Globals.sml0000644000175000017500000000266413204034553017620 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Globals : sig eqtype 'a HANDLE eqtype HINSTANCE eqtype HWND val hNull : 'a HANDLE val isHNull : 'a HANDLE -> bool val ApplicationInstance : unit -> HINSTANCE val GetLastError : unit -> OS.syserror val MainWindow : unit -> HWND end = struct local open Foreign open Base in type 'a HANDLE = 'a HANDLE val hNull = hNull and isHNull = isHNull type HINSTANCE = HINSTANCE type HWND = HWND val GetLastError = Base.GetLastError fun ApplicationInstance() = RunCall.run_call2 RuntimeCalls.POLY_SYS_os_specific (1103, ()) and MainWindow() = RunCall.run_call2 RuntimeCalls.POLY_SYS_os_specific (1104, ()) end end; polyml-5.7.1/mlsource/extra/Win/Clipping.sml0000644000175000017500000000721713204034553020001 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Clipping : sig type HDC and HRGN type RECT = { top: int, left: int, bottom: int, right: int } type POINT = { x: int, y: int } type RegionOperation = Region.RegionOperation type ResultRegion = Region.ResultRegion val ExcludeClipRect : HDC * RECT -> ResultRegion val ExtSelectClipRgn : HDC * HRGN * RegionOperation -> ResultRegion val GetClipBox : HDC -> ResultRegion * RECT val GetClipRgn : HDC * HRGN -> unit val GetMetaRgn : HDC * HRGN -> unit val IntersectClipRect : HDC * RECT -> ResultRegion val OffsetClipRgn : HDC * int * int -> ResultRegion val PtVisible : HDC * POINT -> bool val RectVisible : HDC * RECT -> bool val SelectClipPath : HDC * RegionOperation -> unit val SelectClipRgn : HDC * HRGN -> unit val SetMetaRgn : HDC -> unit end = struct local open Foreign Base GdiBase in type RegionOperation = RegionOperation and ResultRegion = ResultRegion type RECT = RECT and HDC = HDC and HRGN = HRGN and POINT = POINT val ExtSelectClipRgn = winCall3(gdi "ExtSelectClipRgn") (cHDC,cHRGN,REGIONOPERATION) RESULTREGION val GetClipRgn = winCall2(gdi "GetClipRgn") (cHDC,cHRGN) (successState "GetClipRgn") val GetMetaRgn = winCall2(gdi "GetMetaRgn") (cHDC,cHRGN) (successState "GetMetaRgn") val OffsetClipRgn = winCall3(gdi "OffsetClipRgn") (cHDC,cInt,cInt) RESULTREGION val RectVisible = winCall2(gdi "RectVisible") (cHDC,cConstStar cRect) cBool val SelectClipPath = winCall2(gdi "SelectClipPath") (cHDC,REGIONOPERATION) (successState "SelectClipPath") val SelectClipRgn = winCall2(gdi "SelectClipRgn") (cHDC,cHRGN) (successState "SelectClipRgn") val SetMetaRgn = winCall1(gdi "SetMetaRgn") (cHDC) (successState "SetMetaRgn") local val ptVisible = winCall3(gdi "PtVisible") (cHDC,cInt,cInt) cBool in fun PtVisible(hd, {x, y}) = ptVisible(hd, x, y) end local val excludeClipRect = winCall5 (gdi "ExcludeClipRect") (cHDC,cInt,cInt,cInt,cInt) RESULTREGION in fun ExcludeClipRect (h,{left,top,right,bottom}) = excludeClipRect(h,left,top,right,bottom) end local val intersectClipRect = winCall5 (gdi "IntersectClipRect") (cHDC,cInt,cInt,cInt,cInt) RESULTREGION in fun IntersectClipRect (h,{left,top,right,bottom}: RECT) = intersectClipRect(h,left,top,right,bottom) end local val getClipBox = winCall2 (gdi "GetClipBox") (cHDC, cStar cRect) RESULTREGION val zeroRect = { top=0, bottom=0, left=0, right=0} in fun GetClipBox hdc = let val v = ref zeroRect val res = getClipBox(hdc, v) in (res, !v) end end end end; polyml-5.7.1/mlsource/extra/Win/WinBase.sml0000644000175000017500000002564713204034553017573 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This contains the types used in the Win structure. *) structure WinBase = struct local open Foreign Base in structure Style :> sig include BIT_FLAGS val WS_BORDER : flags val WS_CAPTION : flags val WS_CHILD : flags val WS_CHILDWINDOW : flags val WS_CLIPCHILDREN : flags val WS_CLIPSIBLINGS : flags val WS_DISABLED : flags val WS_DLGFRAME : flags val WS_GROUP : flags val WS_HSCROLL : flags val WS_ICONIC : flags val WS_MAXIMIZE : flags val WS_MAXIMIZEBOX : flags val WS_MINIMIZE : flags val WS_MINIMIZEBOX : flags val WS_OVERLAPPED : flags val WS_OVERLAPPEDWINDOW : flags val WS_POPUP : flags val WS_POPUPWINDOW : flags val WS_SIZEBOX : flags val WS_SYSMENU : flags val WS_TABSTOP : flags val WS_THICKFRAME : flags val WS_TILED : flags val WS_TILEDWINDOW : flags val WS_VISIBLE : flags val WS_VSCROLL : flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) (* Window styles. *) val WS_OVERLAPPED: flags = 0wx00000000 val WS_POPUP: flags = 0wx80000000 val WS_CHILD: flags = 0wx40000000 val WS_MINIMIZE: flags = 0wx20000000 val WS_VISIBLE: flags = 0wx10000000 val WS_DISABLED: flags = 0wx08000000 val WS_CLIPSIBLINGS: flags = 0wx04000000 val WS_CLIPCHILDREN: flags = 0wx02000000 val WS_MAXIMIZE: flags = 0wx01000000 val WS_CAPTION: flags = 0wx00C00000 (* WS_BORDER | WS_DLGFRAME *) val WS_BORDER: flags = 0wx00800000 val WS_DLGFRAME: flags = 0wx00400000 val WS_VSCROLL: flags = 0wx00200000 val WS_HSCROLL: flags = 0wx00100000 val WS_SYSMENU: flags = 0wx00080000 val WS_THICKFRAME: flags = 0wx00040000 val WS_GROUP: flags = 0wx00020000 val WS_TABSTOP: flags = 0wx00010000 val WS_MINIMIZEBOX: flags = 0wx00020000 val WS_MAXIMIZEBOX: flags = 0wx00010000 val WS_TILED: flags = WS_OVERLAPPED val WS_ICONIC: flags = WS_MINIMIZE val WS_SIZEBOX: flags = WS_THICKFRAME val WS_OVERLAPPEDWINDOW = flags[WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX] val WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW val WS_POPUPWINDOW = flags[WS_POPUP, WS_BORDER, WS_SYSMENU] val WS_CHILDWINDOW = WS_CHILD val all = flags[WS_OVERLAPPED, WS_POPUP, WS_CHILD, WS_MINIMIZE, WS_VISIBLE, WS_DISABLED, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_MAXIMIZE, WS_CAPTION, WS_BORDER, WS_DLGFRAME, WS_VSCROLL, WS_HSCROLL, WS_SYSMENU, WS_THICKFRAME, WS_GROUP, WS_TABSTOP, WS_MINIMIZEBOX, WS_MAXIMIZEBOX] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end structure ExStyle:> sig include BIT_FLAGS val WS_EX_DLGMODALFRAME: flags and WS_EX_NOPARENTNOTIFY: flags and WS_EX_TOPMOST: flags and WS_EX_ACCEPTFILES : flags and WS_EX_TRANSPARENT: flags and WS_EX_MDICHILD: flags and WS_EX_TOOLWINDOW: flags and WS_EX_WINDOWEDGE: flags and WS_EX_CLIENTEDGE: flags and WS_EX_CONTEXTHELP: flags and WS_EX_RIGHT: flags and WS_EX_LEFT: flags and WS_EX_RTLREADING: flags and WS_EX_LTRREADING: flags and WS_EX_LEFTSCROLLBAR: flags and WS_EX_RIGHTSCROLLBAR: flags and WS_EX_CONTROLPARENT: flags and WS_EX_STATICEDGE: flags and WS_EX_APPWINDOW: flags and WS_EX_OVERLAPPEDWINDOW: flags and WS_EX_PALETTEWINDOW: flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val WS_EX_DLGMODALFRAME = 0wx00000001 val WS_EX_NOPARENTNOTIFY = 0wx00000004 val WS_EX_TOPMOST = 0wx00000008 val WS_EX_ACCEPTFILES = 0wx00000010 val WS_EX_TRANSPARENT = 0wx00000020 val WS_EX_MDICHILD = 0wx00000040 val WS_EX_TOOLWINDOW = 0wx00000080 val WS_EX_WINDOWEDGE = 0wx00000100 val WS_EX_CLIENTEDGE = 0wx00000200 val WS_EX_CONTEXTHELP = 0wx00000400 val WS_EX_RIGHT = 0wx00001000 val WS_EX_LEFT = 0wx00000000 val WS_EX_RTLREADING = 0wx00002000 val WS_EX_LTRREADING = 0wx00000000 val WS_EX_LEFTSCROLLBAR = 0wx00004000 val WS_EX_RIGHTSCROLLBAR = 0wx00000000 val WS_EX_CONTROLPARENT = 0wx00010000 val WS_EX_STATICEDGE = 0wx00020000 val WS_EX_APPWINDOW = 0wx00040000 val WS_EX_OVERLAPPEDWINDOW = flags[WS_EX_WINDOWEDGE, WS_EX_CLIENTEDGE] val WS_EX_PALETTEWINDOW = flags[WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW, WS_EX_TOPMOST] val all = flags[WS_EX_DLGMODALFRAME, WS_EX_NOPARENTNOTIFY, WS_EX_TOPMOST, WS_EX_ACCEPTFILES, WS_EX_TRANSPARENT, WS_EX_MDICHILD, WS_EX_TOOLWINDOW, WS_EX_WINDOWEDGE, WS_EX_CLIENTEDGE, WS_EX_CONTEXTHELP, WS_EX_RIGHT, WS_EX_LEFT, WS_EX_RTLREADING, WS_EX_LTRREADING, WS_EX_LEFTSCROLLBAR, WS_EX_RIGHTSCROLLBAR, WS_EX_CONTROLPARENT, WS_EX_STATICEDGE, WS_EX_APPWINDOW] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end datatype WindowPositionStyle = SWP_ASYNCWINDOWPOS | SWP_DEFERERASE | SWP_FRAMECHANGED | SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW | SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW | SWP_OTHER of Word32.word local val tab = [ (SWP_NOSIZE, 0wx0001), (SWP_NOMOVE, 0wx0002), (SWP_NOZORDER, 0wx0004), (SWP_NOREDRAW, 0wx0008), (SWP_NOACTIVATE, 0wx0010), (SWP_FRAMECHANGED, 0wx0020), (* The frame changed: send WM_NCCALCSIZE *) (SWP_SHOWWINDOW, 0wx0040), (SWP_HIDEWINDOW, 0wx0080), (SWP_NOCOPYBITS, 0wx0100), (SWP_NOOWNERZORDER, 0wx0200), (* Don't do owner Z ordering *) (SWP_NOSENDCHANGING, 0wx0400), (* Don't send WM_WINDOWPOSCHANGING *) (SWP_DEFERERASE, 0wx2000), (SWP_ASYNCWINDOWPOS, 0wx4000)] (* It seems that some other bits are set although they're not defined. *) fun toWord (SWP_OTHER i) = i | toWord _ = raise Match in val cWINDOWPOSITIONSTYLE = tableSetConversion(tab, SOME(SWP_OTHER, toWord)) end (* In C the parent and menu arguments are combined in a rather odd way. *) datatype ParentType = PopupWithClassMenu (* Popup or overlapped window using class menu. *) | PopupWindow of HMENU (* Popup or overlapped window with supplied menu. *) | ChildWindow of { parent: HWND, id: int } (* Child window. *) (* This function is used whenever windows are created. *) local open Style in (* In the case of a child window the "menu" is actually an integer which identifies the child in notification messages to the parent. We silently set or clear the WS_CHILD bit depending on the argument. *) fun unpackWindowRelation(relation: ParentType, style) = case relation of PopupWithClassMenu => (hwndNull, Memory.null, toWord(clear(WS_CHILD, style))) | PopupWindow hm => (hwndNull, voidStarOfHandle hm, toWord(clear(WS_CHILD, style))) | ChildWindow{parent, id} => (parent, Memory.sysWord2VoidStar(SysWord.fromInt id), toWord(flags[WS_CHILD, style])) end end end; polyml-5.7.1/mlsource/extra/Win/clean.sml0000644000175000017500000000220513204034553017306 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Clean up the name space by removing unnecessary declarations. *) val _ = List.app PolyML.Compiler.forgetStructure [ "Base", "ComboBase", "FontBase", "MenuBase", "ScrollBase", "WinBase", "MessageBase", "GdiBase", "DeviceBase", "LocaleBase" ]; val _ = List.app PolyML.Compiler.forgetFunctor ["FlagPrint"]; polyml-5.7.1/mlsource/extra/Win/Static.sml0000644000175000017500000002160513204034553017460 0ustar daviddavid(* Copyright (c) 2001 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Static windows e.g. labels. *) structure Static: sig structure Style: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and SS_LEFT: flags and SS_CENTER: flags and SS_RIGHT: flags and SS_ICON: flags and SS_BLACKRECT: flags and SS_GRAYRECT: flags and SS_WHITERECT: flags and SS_BLACKFRAME: flags and SS_GRAYFRAME: flags and SS_WHITEFRAME: flags and SS_USERITEM: flags and SS_SIMPLE: flags and SS_LEFTNOWORDWRAP: flags and SS_OWNERDRAW: flags and SS_BITMAP: flags and SS_ENHMETAFILE: flags and SS_ETCHEDHORZ: flags and SS_ETCHEDVERT: flags and SS_ETCHEDFRAME: flags and SS_TYPEMASK: flags and SS_NOPREFIX: flags and SS_NOTIFY: flags and SS_CENTERIMAGE: flags and SS_RIGHTJUST: flags and SS_REALSIZEIMAGE: flags and SS_SUNKEN: flags and SS_ENDELLIPSIS: flags and SS_PATHELLIPSIS: flags and SS_WORDELLIPSIS: flags and SS_ELLIPSISMASK: flags end structure Notifications: sig val STN_CLICKED: int val STN_DBLCLK: int val STN_ENABLE: int val STN_DISABLE: int end end = struct structure Style = struct open Window.Style (* Include all the windows styles. *) val SS_LEFT: flags = fromWord 0wx00000000 val SS_CENTER: flags = fromWord 0wx00000001 val SS_RIGHT: flags = fromWord 0wx00000002 val SS_ICON: flags = fromWord 0wx00000003 val SS_BLACKRECT: flags = fromWord 0wx00000004 val SS_GRAYRECT: flags = fromWord 0wx00000005 val SS_WHITERECT: flags = fromWord 0wx00000006 val SS_BLACKFRAME: flags = fromWord 0wx00000007 val SS_GRAYFRAME: flags = fromWord 0wx00000008 val SS_WHITEFRAME: flags = fromWord 0wx00000009 val SS_USERITEM: flags = fromWord 0wx0000000A val SS_SIMPLE: flags = fromWord 0wx0000000B val SS_LEFTNOWORDWRAP: flags = fromWord 0wx0000000C val SS_OWNERDRAW: flags = fromWord 0wx0000000D val SS_BITMAP: flags = fromWord 0wx0000000E val SS_ENHMETAFILE: flags = fromWord 0wx0000000F val SS_ETCHEDHORZ: flags = fromWord 0wx00000010 val SS_ETCHEDVERT: flags = fromWord 0wx00000011 val SS_ETCHEDFRAME: flags = fromWord 0wx00000012 val SS_TYPEMASK: flags = fromWord 0wx0000001F val SS_NOPREFIX: flags = fromWord 0wx00000080 val SS_NOTIFY: flags = fromWord 0wx00000100 val SS_CENTERIMAGE: flags = fromWord 0wx00000200 val SS_RIGHTJUST: flags = fromWord 0wx00000400 val SS_REALSIZEIMAGE: flags = fromWord 0wx00000800 val SS_SUNKEN: flags = fromWord 0wx00001000 val SS_ENDELLIPSIS: flags = fromWord 0wx00004000 val SS_PATHELLIPSIS: flags = fromWord 0wx00008000 val SS_WORDELLIPSIS: flags = fromWord 0wx0000C000 val SS_ELLIPSISMASK: flags = fromWord 0wx0000C000 val all = flags[Window.Style.all, SS_LEFT, SS_CENTER, SS_RIGHT, SS_ICON, SS_BLACKRECT, SS_GRAYRECT, SS_WHITERECT, SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_USERITEM, SS_SIMPLE, SS_LEFTNOWORDWRAP, SS_OWNERDRAW, SS_BITMAP, SS_ENHMETAFILE, SS_ETCHEDHORZ, SS_ETCHEDVERT, SS_ETCHEDFRAME, SS_TYPEMASK, SS_NOPREFIX, SS_NOTIFY, SS_CENTERIMAGE, SS_RIGHTJUST, SS_REALSIZEIMAGE, SS_SUNKEN, SS_ENDELLIPSIS, SS_PATHELLIPSIS, SS_WORDELLIPSIS, SS_ELLIPSISMASK] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure Notifications = struct val STN_CLICKED = 0 val STN_DBLCLK = 1 val STN_ENABLE = 2 val STN_DISABLE = 3 end end; (* let open Static.Style fun getType w = let val typeField = fromWord(SysWord.andb(toWord w, toWord SS_TYPEMASK)) in if typeField = SS_LEFT then "SS_LEFT" else if typeField = SS_CENTER then "SS_CENTER" else if typeField = SS_RIGHT then "SS_RIGHT" else if typeField = SS_ICON then "SS_ICON" else if typeField = SS_BLACKRECT then "SS_BLACKRECT" else if typeField = SS_GRAYRECT then "SS_GRAYRECT" else if typeField = SS_WHITERECT then "SS_WHITERECT" else if typeField = SS_BLACKFRAME then "SS_BLACKFRAME" else if typeField = SS_GRAYFRAME then "SS_GRAYFRAME" else if typeField = SS_WHITEFRAME then "SS_WHITEFRAME" else if typeField = SS_USERITEM then "SS_USERITEM" else if typeField = SS_SIMPLE then "SS_SIMPLE" else if typeField = SS_LEFTNOWORDWRAP then "SS_LEFTNOWORDWRAP" else if typeField = SS_OWNERDRAW then "SS_OWNERDRAW" else if typeField = SS_BITMAP then "SS_BITMAP" else if typeField = SS_ENHMETAFILE then "SS_ENHMETAFILE" else if typeField = SS_ETCHEDHORZ then "SS_ETCHEDHORZ" else if typeField = SS_ETCHEDVERT then "SS_ETCHEDVERT" else if typeField = SS_ETCHEDFRAME then "SS_ETCHEDFRAME" else "??" end val flagTable = [(SS_NOPREFIX, "SS_NOPREFIX"), (SS_NOTIFY, "SS_NOTIFY"), (SS_CENTERIMAGE, "SS_CENTERIMAGE"), (SS_RIGHTJUST, "SS_RIGHTJUST"), (SS_REALSIZEIMAGE, "SS_REALSIZEIMAGE"), (SS_SUNKEN, "SS_SUNKEN"), (SS_WORDELLIPSIS, "SS_WORDELLIPSIS"), (* Must come before the next two. *) (SS_ENDELLIPSIS, "SS_ENDELLIPSIS"), (SS_PATHELLIPSIS, "SS_PATHELLIPSIS"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = getType x :: accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *)polyml-5.7.1/mlsource/extra/Win/Resource.sml0000644000175000017500000001642413204034553020023 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Resource : sig datatype ResourceType = RT_CURSOR | RT_BITMAP | RT_ICON | RT_MENU | RT_DIALOG | RT_STRING | RT_FONTDIR | RT_FONT | RT_ACCELERATOR | RT_RCDATA | RT_MESSAGETABLE | RT_GROUP_CURSOR | RT_GROUP_ICON | RT_VERSION | RT_DLGINCLUDE | RT_ANICURSOR | RT_ANIICON | RT_PLUGPLAY | RT_VXD type HRSRC type HRSRCGLOBAL type HINSTANCE datatype RESID = IdAsInt of int | IdAsString of string val MAKEINTRESOURCE : int -> RESID type HUPDATE val BeginUpdateResource : string * bool -> HUPDATE val EndUpdateResource : HUPDATE * bool -> unit val FindResource : HINSTANCE * RESID * ResourceType -> HRSRC val FindResourceEx : HINSTANCE * ResourceType * RESID * Locale.LANGID -> HRSRC val FreeLibrary : HINSTANCE -> unit val LoadLibrary : string -> HINSTANCE val LoadResource : HINSTANCE * HRSRC -> HRSRCGLOBAL val LoadString : HINSTANCE * RESID -> string val LockResource : HRSRCGLOBAL -> Word8Vector.vector val SizeofResource : HINSTANCE * HRSRC -> int val UpdateResource : HUPDATE * ResourceType * RESID * Locale.LANGID * Word8Vector.vector option -> unit end = struct open Foreign open Base datatype RESID = datatype RESID fun MAKEINTRESOURCE i = if i >= 0 andalso i < 65536 then IdAsInt i else raise Fail "resource id out of range" fun checkHandle h = (checkResult(not(isHNull h)); h) datatype ResourceType = RT_CURSOR | RT_BITMAP | RT_ICON | RT_MENU | RT_DIALOG | RT_STRING | RT_FONTDIR | RT_FONT | RT_ACCELERATOR | RT_RCDATA | RT_MESSAGETABLE | RT_GROUP_CURSOR | RT_GROUP_ICON | RT_VERSION | RT_DLGINCLUDE | RT_ANICURSOR | RT_ANIICON | RT_PLUGPLAY | RT_VXD local fun toRes 1 = RT_CURSOR | toRes 2 = RT_BITMAP | toRes 3 = RT_ICON | toRes 4 = RT_MENU | toRes 5 = RT_DIALOG | toRes 6 = RT_STRING | toRes 7 = RT_FONTDIR | toRes 8 = RT_FONT | toRes 9 = RT_ACCELERATOR | toRes 10 = RT_RCDATA | toRes 11 = RT_MESSAGETABLE | toRes 12 = RT_GROUP_CURSOR | toRes 14 = RT_GROUP_ICON | toRes 16 = RT_VERSION | toRes 17 = RT_DLGINCLUDE | toRes 19 = RT_PLUGPLAY | toRes 20 = RT_VXD | toRes 21 = RT_ANICURSOR | toRes 22 = RT_ANIICON | toRes _ = raise Fail "Unknown Resource Type" fun fromRes RT_CURSOR = 1 | fromRes RT_BITMAP = 2 | fromRes RT_ICON = 3 | fromRes RT_MENU = 4 | fromRes RT_DIALOG = 5 | fromRes RT_STRING = 6 | fromRes RT_FONTDIR = 7 | fromRes RT_FONT = 8 | fromRes RT_ACCELERATOR = 9 | fromRes RT_RCDATA = 10 | fromRes RT_MESSAGETABLE = 11 | fromRes RT_GROUP_CURSOR = 12 | fromRes RT_GROUP_ICON = 14 | fromRes RT_VERSION = 16 | fromRes RT_DLGINCLUDE = 17 | fromRes RT_PLUGPLAY = 19 | fromRes RT_VXD = 20 | fromRes RT_ANICURSOR = 21 | fromRes RT_ANIICON = 22 in val RESOURCETYPE = absConversion {abs = toRes, rep = fromRes} cInt end local datatype HRSRCGLOBAL = HRSRCGLOBAL of Memory.voidStar * int in type HRSRCGLOBAL = HRSRCGLOBAL val LoadLibrary = checkHandle o winCall1 (kernel "LoadLibraryA") (cString) cHINSTANCE and FreeLibrary = winCall1 (kernel "FreeLibrary") (cHINSTANCE) (successState "FreeLibrary") and FindResource = checkHandle o winCall3 (kernel "FindResourceA") (cHINSTANCE, cRESID, RESOURCETYPE) cHRSRC and SizeofResource = winCall2 (kernel "SizeofResource") (cHINSTANCE, cHRSRC) cDWORD (* The name and type are in the reverse order in FindResource and FindResourceEx *) and FindResourceEx = checkHandle o winCall4 (kernel "FindResourceExA") (cHINSTANCE, RESOURCETYPE, cRESID, LocaleBase.LANGID) cHRSRC (* LoadResource - load a resource into memory and get a handle to it. *) local val loadResource = winCall2 (kernel "LoadResource") (cHINSTANCE, cHRSRC) and lockResource = winCall1 (kernel "LockResource") (cPointer) cPointer and loadString = winCall4 (user "LoadStringA") (cHINSTANCE, cRESID, cPointer, cInt) cInt in fun LoadResource (hInst, hRsrc) = let val size = SizeofResource (hInst, hRsrc) val load = loadResource cPointer val rsrc = load(hInst, hRsrc) in HRSRCGLOBAL(rsrc, size) end (* LockResource - get the resource as a piece of binary store. *) fun LockResource (HRSRCGLOBAL(hg, size)) = let val res = lockResource hg in Word8Vector.tabulate(size, fn i => Memory.get8(res, Word.fromInt i)) end fun LoadString (hInst, resId): string = let (* The underlying call returns the number of bytes copied EXCLUDING the terminating null. *) (* The easiest way to make sure we have enough store is to loop. *) open Memory fun tryLoad n = let val store = malloc n val used = Word.fromInt(loadString(hInst, resId, store, Word.toInt n)) in (* We can't distinguish the empty string from a missing resource. *) if used = 0w0 then "" else if used < n-0w1 then fromCstring store before free store else (free store; tryLoad(n*0w2)) end in tryLoad 0w100 end end val BeginUpdateResource = (fn c => (checkResult(not(isHNull c)); c)) o winCall2 (user "BeginUpdateResourceA") (cString, cBool) cHUPDATE val EndUpdateResource = winCall2 (user "EndUpdateResource") (cHUPDATE, cBool) (successState "EndUpdateResource") local val updateResource = winCall6 (user "UpdateResource") (cHUPDATE, RESOURCETYPE, cRESID, LocaleBase.LANGID, cOptionPtr cByteArray, cInt) (successState "UpdateResource") in (* NONE here means delete the resource, SOME means a value to store. *) (* N.B. If updating a string the new value must be in Unicode. *) fun UpdateResource(hup, rt, resid, lang, v as SOME vec) = updateResource(hup, rt, resid, lang, v, Word8Vector.length vec) | UpdateResource(hup, rt, resid, lang, NONE) = updateResource(hup, rt, resid, lang, NONE, 0) end end end; polyml-5.7.1/mlsource/extra/Win/Brush.sml0000644000175000017500000001556213204034553017321 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Brush: sig type HBITMAP and HBRUSH and HDC datatype HatchStyle = HS_BDIAGONAL | HS_CROSS | HS_DIAGCROSS | HS_FDIAGONAL | HS_HORIZONTAL | HS_VERTICAL datatype BrushStyle = BS_HATCHED of HatchStyle | BS_HOLLOW | BS_PATTERN of HBITMAP | BS_SOLID type COLORREF = Color.COLORREF type LOGBRUSH = BrushStyle * COLORREF type POINT = {x: int, y: int} type RasterOpCode = Bitmap.RasterOpCode datatype ColorType = COLOR_SCROLLBAR | COLOR_BACKGROUND | COLOR_ACTIVECAPTION | COLOR_INACTIVECAPTION | COLOR_MENU | COLOR_WINDOW | COLOR_WINDOWFRAME | COLOR_MENUTEXT | COLOR_WINDOWTEXT | COLOR_CAPTIONTEXT | COLOR_ACTIVEBORDER | COLOR_INACTIVEBORDER | COLOR_APPWORKSPACE | COLOR_HIGHLIGHT | COLOR_HIGHLIGHTTEXT | COLOR_BTNFACE | COLOR_BTNSHADOW | COLOR_GRAYTEXT | COLOR_BTNTEXT | COLOR_INACTIVECAPTIONTEXT | COLOR_BTNHIGHLIGHT | COLOR_3DDKSHADOW | COLOR_3DLIGHT | COLOR_INFOTEXT | COLOR_INFOBK val CreateBrushIndirect : LOGBRUSH -> HBRUSH val CreateHatchBrush : HatchStyle * COLORREF -> HBRUSH val CreatePatternBrush : HBITMAP -> HBRUSH val CreateSolidBrush : COLORREF -> HBRUSH val GetSysColorBrush : ColorType -> HBRUSH val GetBrushOrgEx : HDC -> POINT val PatBlt : HDC * int * int * int * int * RasterOpCode -> unit val SetBrushOrgEx : HDC * POINT -> POINT end = struct local open Foreign Base (* fun gdicall_IW name CR (C1,C2) (a1) = let val (from1,to1,ctype1) = breakConversion C1 val (from2,to2,ctype2) = breakConversion C2 val (fromR,toR,ctypeR) = breakConversion CR val va1 = to1 a1 val va2 = address (alloc 1 ctype2) val res = callgdi name [(ctype1,va1),(Cpointer ctype2,va2)] ctypeR val _: unit = fromR res in (from2 (deref va2)) end fun gdicall_IM name CR (C1,C2) (a1,a2) = let val (from1,to1,ctype1) = breakConversion C1 val (from2,to2,ctype2) = breakConversion C2 val (fromR,toR,ctypeR) = breakConversion CR val va1 = to1 a1 val va2 = address (to2 a2) val res = callgdi name [(ctype1,va1),(Cpointer ctype2,va2)] ctypeR val _ : unit = fromR res in from2 (deref va2) end val XCOORD = INT : int Conversion val YCOORD = INT: int Conversion val WIDTH = INT: int Conversion val HEIGHT = INT: int Conversion*) in type HBRUSH = HBRUSH and COLORREF = Color.COLORREF and HBITMAP = HBITMAP and HDC = HDC and POINT = POINT open GdiBase (* BRUSHES *) val CreateBrushIndirect = winCall1 (user "CreateBrushIndirect") (cConstStar cLOGBRUSH) cHBRUSH and CreateHatchBrush = winCall2 (gdi "CreateHatchBrush") (cHATCHSTYLE, cCOLORREF) cHBRUSH and CreateSolidBrush = winCall1 (gdi "CreateSolidBrush") (cCOLORREF) cHBRUSH local val getBrushOrgEx = winCall2 (gdi "GetBrushOrgEx") (cHDC, cStar cPoint) (successState "GetBrushOrgEx") and setBrushOrgEx = winCall4 (gdi "SetBrushOrgEx")(cHDC, cInt, cInt, cStar cPoint) (successState "SetBrushOrgEx") in fun GetBrushOrgEx hdc = let val v = ref{x=0, y=0} in getBrushOrgEx(hdc, v); !v end and SetBrushOrgEx(hdc, {x, y}) = let val v = ref{x=0, y=0} in setBrushOrgEx(hdc, x, y, v); !v end end val CreatePatternBrush = winCall1 (gdi "CreatePatternBrush") (cHBITMAP) cHBRUSH val PatBlt = winCall6(gdi "PatBlt") (cHDC,cInt,cInt,cInt,cInt,cRASTEROPCODE) (successState "PatBlt") datatype ColorType = COLOR_SCROLLBAR | COLOR_BACKGROUND | COLOR_ACTIVECAPTION | COLOR_INACTIVECAPTION | COLOR_MENU | COLOR_WINDOW | COLOR_WINDOWFRAME | COLOR_MENUTEXT | COLOR_WINDOWTEXT | COLOR_CAPTIONTEXT | COLOR_ACTIVEBORDER | COLOR_INACTIVEBORDER | COLOR_APPWORKSPACE | COLOR_HIGHLIGHT | COLOR_HIGHLIGHTTEXT | COLOR_BTNFACE | COLOR_BTNSHADOW | COLOR_GRAYTEXT | COLOR_BTNTEXT | COLOR_INACTIVECAPTIONTEXT | COLOR_BTNHIGHLIGHT | COLOR_3DDKSHADOW | COLOR_3DLIGHT | COLOR_INFOTEXT | COLOR_INFOBK fun colourTypeToInt COLOR_SCROLLBAR = 0 | colourTypeToInt COLOR_BACKGROUND = 1 | colourTypeToInt COLOR_ACTIVECAPTION = 2 | colourTypeToInt COLOR_INACTIVECAPTION = 3 | colourTypeToInt COLOR_MENU = 4 | colourTypeToInt COLOR_WINDOW = 5 | colourTypeToInt COLOR_WINDOWFRAME = 6 | colourTypeToInt COLOR_MENUTEXT = 7 | colourTypeToInt COLOR_WINDOWTEXT = 8 | colourTypeToInt COLOR_CAPTIONTEXT = 9 | colourTypeToInt COLOR_ACTIVEBORDER = 10 | colourTypeToInt COLOR_INACTIVEBORDER = 11 | colourTypeToInt COLOR_APPWORKSPACE = 12 | colourTypeToInt COLOR_HIGHLIGHT = 13 | colourTypeToInt COLOR_HIGHLIGHTTEXT = 14 | colourTypeToInt COLOR_BTNFACE = 15 | colourTypeToInt COLOR_BTNSHADOW = 16 | colourTypeToInt COLOR_GRAYTEXT = 17 | colourTypeToInt COLOR_BTNTEXT = 18 | colourTypeToInt COLOR_INACTIVECAPTIONTEXT = 19 | colourTypeToInt COLOR_BTNHIGHLIGHT = 20 | colourTypeToInt COLOR_3DDKSHADOW = 21 | colourTypeToInt COLOR_3DLIGHT = 22 | colourTypeToInt COLOR_INFOTEXT = 23 | colourTypeToInt COLOR_INFOBK = 24 (* Create a brush from a system colour. *) val GetSysColorBrush = winCall1 (user "GetSysColorBrush") (cInt) cHBRUSH o colourTypeToInt (* Other Brush functions: CreateDIBPatternBrushPt *) end end; polyml-5.7.1/mlsource/extra/Win/Transform.sml0000644000175000017500000002702713204034553020210 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Transform: sig type HDC (*= Base.HDC*) type HWND (*= Base.HWND*) type POINT = { x: int, y: int } type SIZE = { cx: int, cy: int } datatype Fraction = Fraction of {num: int, denom: int} datatype MapMode = MM_ANISOTROPIC | MM_HIENGLISH | MM_HIMETRIC | MM_ISOTROPIC | MM_LOENGLISH | MM_LOMETRIC | MM_TEXT | MM_TWIPS val MM_MAX : MapMode val MM_MAX_FIXEDSCALE : MapMode val MM_MIN : MapMode type XForm = { m11: real, m12: real, m21: real, m22: real, dx: real, dy: real } type XFormType val MWT_IDENTITY : XFormType val MWT_LEFTMULTIPLY : XFormType val MWT_MAX : XFormType val MWT_MIN : XFormType val MWT_RIGHTMULTIPLY : XFormType type GraphicsMode val GM_ADVANCED : GraphicsMode val GM_COMPATIBLE : GraphicsMode val GM_ERROR : GraphicsMode val ClientToScreen : HWND * POINT -> POINT val CombineTransform : XForm * XForm -> XForm val DPtoLP : HDC * POINT list -> POINT list val GetCurrentPositionEx : HDC -> POINT val GetGraphicsMode : HDC -> GraphicsMode val GetMapMode : HDC -> MapMode val GetViewportExtEx : HDC -> SIZE val GetViewportOrgEx : HDC -> POINT val GetWindowExtEx : HDC -> SIZE val GetWindowOrgEx : HDC -> POINT val GetWorldTransform : HDC -> XForm val LPtoDP : HDC * POINT list -> POINT list val MapWindowPoints : HWND * HWND * POINT list -> POINT list val ModifyWorldTransform : HDC * XForm * XFormType -> unit val OffsetViewportOrgEx : HDC * int * int -> POINT val OffsetWindowOrgEx : HDC * int * int -> POINT val ScaleViewportExtEx : HWND * Fraction * Fraction -> SIZE val ScaleWindowExtEx : HWND * Fraction * Fraction -> SIZE val ScreenToClient : HWND * POINT -> POINT val SetGraphicsMode : HDC * GraphicsMode -> GraphicsMode val SetMapMode : HDC * MapMode -> MapMode val SetViewportExtEx : HDC * int * int -> SIZE val SetViewportOrgEx : HDC * int * int -> POINT val SetWindowExtEx : HDC * int * int -> SIZE val SetWindowOrgEx : HDC * int * int -> POINT val SetWorldTransform : HDC * XForm -> unit end = struct local open Foreign Base GdiBase in type HDC = Base.HDC and HWND = Base.HWND type POINT = POINT and SIZE = SIZE open GdiBase (* COORDINATE SPACES AND TRANSFORMATIONS *) local datatype GraphicsMode = W of int in type GraphicsMode = GraphicsMode val GRAPHICSMODE = absConversion {abs = W, rep = fn W n => n} cInt val GM_ERROR (* ???? *) = W 0 val GM_COMPATIBLE = W (1) val GM_ADVANCED = W (2) end (* An XFORM is a struct of six floats. Wrap this as an ML record for clarity *) type XForm = { m11: real, m12: real, m21: real, m22: real, dx: real, dy: real } local fun breakXForm {m11,m12,m21,m22,dx,dy} = (m11,m12,m21,m22,dx,dy) fun mkXForm (m11,m12,m21,m22,dx,dy) = {m11=m11,m12=m12,m21=m21,m22=m22,dx=dx,dy=dy} in val XFORM = absConversion {abs=mkXForm, rep=breakXForm} (cStruct6 (cFloat,cFloat,cFloat,cFloat,cFloat,cFloat)) end local datatype XFormType = W of int in type XFormType = XFormType val XFORMTYPE = absConversion {abs = W, rep = fn W n => n} cDWORD val MWT_IDENTITY = W (1) val MWT_LEFTMULTIPLY = W (2) val MWT_RIGHTMULTIPLY = W (3) val MWT_MIN = MWT_IDENTITY val MWT_MAX = MWT_RIGHTMULTIPLY end datatype Fraction = Fraction of {num:int, denom:int} local val clientToScreen = winCall2(user "ClientToScreen") (cHWND, cStar cPoint) (successState "ClientToScreen") val combineTransform = winCall3(gdi "CombineTransform") (cStar XFORM, cConstStar XFORM, cConstStar XFORM) (successState "CombineTransform") val getCurrentPositionEx = winCall2(gdi "GetCurrentPositionEx") (cHDC, cStar cPoint) (successState "GetCurrentPositionEx") val getViewportExtEx = winCall2(gdi "GetViewportExtEx") (cHDC, cStar cSize) (successState "GetViewportExtEx") val getViewportOrgEx = winCall2(gdi "GetViewportOrgEx") (cHDC, cStar cPoint) (successState "GetViewportOrgEx") val getWindowExtEx = winCall2(gdi "GetWindowExtEx") (cHDC, cStar cSize) (successState "GetWindowExtEx") val getWindowOrgEx = winCall2(gdi "GetWindowOrgEx") (cHDC, cStar cPoint) (successState "GetWindowOrgEx") val getWorldTransform = winCall2(gdi "GetWorldTransform") (cHDC, cStar XFORM) (successState "GetWorldTransform") val offsetViewportOrgEx = winCall4(gdi "OffsetViewportOrgEx") (cHDC, cInt, cInt, cStar cPoint) (successState "OffsetViewportOrgEx") val offsetWindowOrgEx = winCall4(gdi "OffsetWindowOrgEx") (cHDC, cInt, cInt, cStar cPoint) (successState "OffsetWindowOrgEx") val screenToClient = winCall2(user "ScreenToClient") (cHWND, cStar cPoint) (successState "ScreenToClient") val setViewportExtEx = winCall4(gdi "SetViewportExtEx") (cHDC, cInt, cInt, cStar cSize) (successState "SetViewportExtEx") val setViewportOrgEx = winCall4(gdi "SetViewportOrgEx") (cHDC, cInt, cInt, cStar cPoint) (successState "SetViewportOrgEx") val setWindowExtEx = winCall4(gdi "SetWindowExtEx") (cHDC, cInt, cInt, cStar cSize) (successState "SetWindowExtEx") val setWindowOrgEx = winCall4(gdi "SetWindowOrgEx") (cHDC, cInt, cInt, cStar cPoint) (successState "SetWindowOrgEx") val scaleViewportExtEx = winCall6 (gdi "ScaleViewportExtEx") (cHWND,cInt,cInt,cInt,cInt,cStar cSize) (successState "ScaleViewportExtEx") val scaleWindowExtEx = winCall6 (gdi "ScaleWindowExtEx") (cHWND,cInt,cInt,cInt,cInt,cStar cSize) (successState "ScaleWindowExtEx") val zeroXFORM: XForm = { m11=0.0, m12=0.0, m21=0.0, m22=0.0, dx=0.0, dy=0.0 } val zeroPoint: POINT = { x = 0, y = 0 } val zeroSize: SIZE = { cx = 0, cy = 0 } in fun ClientToScreen(w, p) = let val r = ref p in clientToScreen(w, r); !r end and CombineTransform(a, b) = let val r = ref zeroXFORM in combineTransform(r, a, b); ! r end and GetCurrentPositionEx hdc = let val p = ref zeroPoint in getCurrentPositionEx(hdc, p); !p end and GetViewportExtEx hdc = let val s = ref zeroSize in getViewportExtEx(hdc, s); !s end and GetViewportOrgEx hdc = let val p = ref zeroPoint in getViewportOrgEx(hdc, p); !p end and GetWindowExtEx hdc = let val s = ref zeroSize in getWindowExtEx(hdc, s); !s end and GetWindowOrgEx hdc = let val p = ref zeroPoint in getWindowOrgEx(hdc, p); !p end and GetWorldTransform hdc = let val r = ref zeroXFORM in getWorldTransform(hdc, r); !r end and OffsetViewportOrgEx (hdc, x, y) = let val p = ref zeroPoint in offsetViewportOrgEx(hdc, x, y, p); !p end and OffsetWindowOrgEx (hdc, x, y) = let val p = ref zeroPoint in offsetWindowOrgEx(hdc, x, y, p); !p end and ScreenToClient(hw, p) = let val r = ref p in screenToClient(hw, r); !r end and SetViewportExtEx (hdc, x, y) = let val p = ref zeroSize in setViewportExtEx(hdc, x, y, p); !p end and SetViewportOrgEx (hdc, x, y) = let val p = ref zeroPoint in setViewportOrgEx(hdc, x, y, p); !p end and SetWindowExtEx (hdc, x, y) = let val p = ref zeroSize in setWindowExtEx(hdc, x, y, p); !p end and SetWindowOrgEx (hdc, x, y) = let val p = ref zeroPoint in setWindowOrgEx(hdc, x, y, p); !p end and ScaleViewportExtEx (h,Fraction{num=n1,denom=d1},Fraction{num=n2,denom=d2}) = let val p = ref zeroSize in scaleViewportExtEx(h,n1,d1,n2,d2,p); !p end and ScaleWindowExtEx (h,Fraction{num=n1,denom=d1},Fraction{num=n2,denom=d2}) = let val p = ref zeroSize in scaleWindowExtEx(h,n1,d1,n2,d2,p); !p end end val ModifyWorldTransform = winCall3(gdi "ModifyWorldTransform") (cHDC, cConstStar XFORM, XFORMTYPE) (successState "ModifyWorldTransform") val SetWorldTransform = winCall2(gdi "SetWorldTransform") (cHDC, cConstStar XFORM) (successState "SetWorldTransform") val GetMapMode = winCall1(gdi "GetMapMode") (cHDC) cMAPMODE val SetMapMode = winCall2(gdi "SetMapMode") (cHDC,cMAPMODE) cMAPMODE (* Should check the result is non-zero. *) val GetGraphicsMode = winCall1 (gdi "GetGraphicsMode") (cHDC) GRAPHICSMODE val SetGraphicsMode = winCall2 (gdi "SetGraphicsMode") (cHDC, GRAPHICSMODE) GRAPHICSMODE local val dPtoLP = winCall3 (gdi "DPtoLP") (cHDC,cPointer,cInt) (successState "DPtoLP") and lPtoDP = winCall3 (gdi "LPtoDP") (cHDC,cPointer,cInt) (successState "LPtoDP") (* The result is the bits added in each direction to make the mapping or is zero if there is an error. The caller is supposed to call SetLastError and check GetLastError because the result could legitimately be zero. *) and mapWindowPoints = winCall4 (user "MapWindowPoints") (cHWND,cHWND,cPointer,cInt) cInt val {load=fromPt, store=toPt, ctype={size=sizePt, ...}, ...} = breakConversion cPoint fun mapPts call pts = let val count = List.length pts open Memory infix 6 ++ val mem = malloc(Word.fromInt count * sizePt) val _ = List.foldl (fn (p,n) => (ignore(toPt(n, p)); n ++ sizePt)) mem pts val _ = call(mem, count) handle ex => (free mem; raise ex) in List.tabulate(count, fn i => fromPt(mem ++ (Word.fromInt i * sizePt))) before free mem end in fun DPtoLP(h,pts) = mapPts(fn (mem, count) => dPtoLP(h, mem, count)) pts and LPtoDP(h,pts) = mapPts(fn (mem, count) => lPtoDP(h, mem, count)) pts and MapWindowPoints (h1,h2,pts) = mapPts(fn (mem, count) => mapWindowPoints(h1, h2, mem, count)) pts end end end; polyml-5.7.1/mlsource/extra/Win/Locale.sml0000644000175000017500000001006513204034553017426 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Locale: sig datatype PrimaryLanguage = LANG_AFRIKAANS | LANG_ALBANIAN | LANG_ARABIC | LANG_BASQUE | LANG_BELARUSIAN | LANG_BULGARIAN | LANG_CATALAN | LANG_CHINESE | LANG_CROATIAN | LANG_CZECH | LANG_DANISH | LANG_DUTCH | LANG_ENGLISH | LANG_ESTONIAN | LANG_FAEROESE | LANG_FARSI | LANG_FINNISH | LANG_FRENCH | LANG_GERMAN | LANG_GREEK | LANG_HEBREW | LANG_HUNGARIAN | LANG_ICELANDIC | LANG_INDONESIAN | LANG_ITALIAN | LANG_JAPANESE | LANG_KOREAN | LANG_LATVIAN | LANG_LITHUANIAN | LANG_NORWEGIAN | LANG_POLISH | LANG_PORTUGUESE | LANG_ROMANIAN | LANG_RUSSIAN | LANG_SERBIAN | LANG_SLOVAK | LANG_SLOVENIAN | LANG_SPANISH | LANG_SWEDISH | LANG_THAI | LANG_TURKISH | LANG_UKRANIAN | LANG_VIETNAMESE | LANG_NEUTRAL datatype SubLanguage = SUBLANG_ARABIC_ALGERIA | SUBLANG_ARABIC_BAHRAIN | SUBLANG_ARABIC_EGYPT | SUBLANG_ARABIC_IRAQ | SUBLANG_ARABIC_JORDAN | SUBLANG_ARABIC_KUWAIT | SUBLANG_ARABIC_LEBANON | SUBLANG_ARABIC_LIBYA | SUBLANG_ARABIC_MOROCCO | SUBLANG_ARABIC_OMAN | SUBLANG_ARABIC_QATAR | SUBLANG_ARABIC_SAUDI_ARABIA | SUBLANG_ARABIC_SYRIA | SUBLANG_ARABIC_TUNISIA | SUBLANG_ARABIC_UAE | SUBLANG_ARABIC_YEMEN | SUBLANG_CHINESE_HONGKONG | SUBLANG_CHINESE_SIMPLIFIED | SUBLANG_CHINESE_SINGAPORE | SUBLANG_CHINESE_TRADITIONAL | SUBLANG_DUTCH | SUBLANG_DUTCH_BELGIAN | SUBLANG_ENGLISH_AUS | SUBLANG_ENGLISH_BELIZE | SUBLANG_ENGLISH_CAN | SUBLANG_ENGLISH_CARIBBEAN | SUBLANG_ENGLISH_EIRE | SUBLANG_ENGLISH_JAMAICA | SUBLANG_ENGLISH_NZ | SUBLANG_ENGLISH_SOUTH_AFRICA | SUBLANG_ENGLISH_TRINIDAD | SUBLANG_ENGLISH_UK | SUBLANG_ENGLISH_US | SUBLANG_FRENCH | SUBLANG_FRENCH_BELGIAN | SUBLANG_FRENCH_CANADIAN | SUBLANG_FRENCH_LUXEMBOURG | SUBLANG_FRENCH_SWISS | SUBLANG_GERMAN | SUBLANG_GERMAN_AUSTRIAN | SUBLANG_GERMAN_LIECHTENSTEIN | SUBLANG_GERMAN_LUXEMBOURG | SUBLANG_GERMAN_SWISS | SUBLANG_ITALIAN | SUBLANG_ITALIAN_SWISS | SUBLANG_KOREAN | SUBLANG_KOREAN_JOHAB | SUBLANG_NORWEGIAN_BOKMAL | SUBLANG_NORWEGIAN_NYNORSK | SUBLANG_PORTUGUESE | SUBLANG_PORTUGUESE_BRAZILIAN | SUBLANG_SERBIAN_CYRILLIC | SUBLANG_SERBIAN_LATIN | SUBLANG_SPANISH | SUBLANG_SPANISH_ARGENTINA | SUBLANG_SPANISH_BOLIVIA | SUBLANG_SPANISH_CHILE | SUBLANG_SPANISH_COLOMBIA | SUBLANG_SPANISH_COSTA_RICA | SUBLANG_SPANISH_DOMINICAN_REPUBLIC | SUBLANG_SPANISH_ECUADOR | SUBLANG_SPANISH_EL_SALVADOR | SUBLANG_SPANISH_GUATEMALA | SUBLANG_SPANISH_HONDURAS | SUBLANG_SPANISH_MEXICAN | SUBLANG_SPANISH_MODERN | SUBLANG_SPANISH_NICARAGUA | SUBLANG_SPANISH_PANAMA | SUBLANG_SPANISH_PARAGUAY | SUBLANG_SPANISH_PERU | SUBLANG_SPANISH_PUERTO_RICO | SUBLANG_SPANISH_URUGUAY | SUBLANG_SPANISH_VENEZUELA | SUBLANG_SWEDISH | SUBLANG_SWEDISH_FINLAND | SUBLANG_NEUTRAL | SUBLANG_DEFAULT | SUBLANG_SYS_DEFAULT datatype LANGID = MAKELANGID of PrimaryLanguage * SubLanguage val GetUserDefaultLangID: unit -> LANGID and GetSystemDefaultLangID: unit -> LANGID end = struct local open Foreign Base in open LocaleBase val GetUserDefaultLangID = winCall0 (kernel "GetUserDefaultLangID") () LANGID and GetSystemDefaultLangID = winCall0 (kernel "GetSystemDefaultLangID") () LANGID end end; polyml-5.7.1/mlsource/extra/Win/MenuBase.sml0000644000175000017500000000613213204034553017726 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure MenuBase = struct local open Foreign Base in (* TODO: This duplicates some of the other datatypes. *) datatype MenuFlag = (*MF_INSERT | MF_CHANGE | MF_APPEND | MF_DELETE | MF_REMOVE | *) MF_BYCOMMAND | MF_BYPOSITION | MF_SEPARATOR | MF_ENABLED | MF_GRAYED | MF_DISABLED | MF_UNCHECKED | MF_CHECKED | MF_USECHECKBITMAPS | MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_POPUP | MF_MENUBARBREAK | MF_MENUBREAK | MF_UNHILITE | MF_HILITE | MF_DEFAULT | MF_SYSMENU | MF_HELP | MF_RIGHTJUSTIFY | MF_MOUSESELECT local val tab = [ (*(MF_INSERT, 0wx00000000), (MF_CHANGE, 0wx00000080), (MF_APPEND, 0wx00000100), (MF_DELETE, 0wx00000200), (MF_REMOVE, 0wx00001000),*) (MF_BYCOMMAND, 0wx00000000), (MF_BYPOSITION, 0wx00000400), (MF_SEPARATOR, 0wx00000800), (MF_ENABLED, 0wx00000000), (MF_GRAYED, 0wx00000001), (MF_DISABLED, 0wx00000002), (MF_UNCHECKED, 0wx00000000), (MF_CHECKED, 0wx00000008), (MF_USECHECKBITMAPS, 0wx00000200), (MF_STRING, 0wx00000000), (MF_BITMAP, 0wx00000004), (MF_OWNERDRAW, 0wx00000100), (MF_POPUP, 0wx00000010), (MF_MENUBARBREAK, 0wx00000020), (MF_MENUBREAK, 0wx00000040), (MF_UNHILITE, 0wx00000000), (MF_HILITE, 0wx00000080), (MF_DEFAULT, 0wx00001000), (MF_SYSMENU, 0wx00002000), (MF_HELP, 0wx00004000), (MF_RIGHTJUSTIFY, 0wx00004000), (MF_MOUSESELECT, 0wx00008000) ] in val (fromMenuFlagSet, toMenuFlagSet) = tableSetLookup(tab, NONE) val cMENUFLAGSET = absConversion {abs=toMenuFlagSet, rep=fromMenuFlagSet} cUintw (* Sometimes we just want a single flag - either MF_BYCOMMAND or MF_BYPOSITION or, for WM_MENUCHAR, MF_POPUP or MF_SYSMENU. *) val (fromMenuFlag, toMenuFlag) = tableLookup(tab, NONE) val cMENUFLAG = tableConversion(tab, NONE) cUintw end end end; polyml-5.7.1/mlsource/extra/Win/CommonDialog.sml0000644000175000017500000017165713204034553020616 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Common dialogues. *) structure CommonDialog : sig type HWND and HDC and COLORREF = Color.COLORREF and HINSTANCE type POINT = { x: int, y: int } type RECT = { left: int, top: int, right: int, bottom: int } (* Error codes *) datatype CDERR = DIALOGFAILURE | GENERALCODES | STRUCTSIZE | INITIALIZATION | NOTEMPLATE | NOHINSTANCE | LOADSTRFAILURE | FINDRESFAILURE | LOADRESFAILURE | LOCKRESFAILURE | MEMALLOCFAILURE | MEMLOCKFAILURE | NOHOOK | REGISTERMSGFAIL | PRINTERCODES | SETUPFAILURE | PARSEFAILURE | RETDEFFAILURE | LOADDRVFAILURE | GETDEVMODEFAIL | INITFAILURE | NODEVICES | NODEFAULTPRN | DNDMMISMATCH | CREATEICFAILURE | PRINTERNOTFOUND | DEFAULTDIFFERENT | CHOOSEFONTCODES | NOFONTS | MAXLESSTHANMIN | FILENAMECODES | SUBCLASSFAILURE | INVALIDFILENAME | BUFFERTOOSMALL | FINDREPLACECODES | BUFFERLENGTHZERO | CHOOSECOLORCODES val CommDlgExtendedError : unit -> CDERR (* ChooseColor *) (* structure ChooseColorFlags : sig include BIT_FLAGS val CC_ANYCOLOR : flags val CC_FULLOPEN : flags val CC_PREVENTFULLOPEN : flags val CC_RGBINIT : flags val CC_SHOWHELP : flags val CC_SOLIDCOLOR : flags end type CHOOSECOLOR = { owner: HWND option, result: COLORREF, customColors: COLORREF list, flags: ChooseColorFlags.flags } val ChooseColor : CHOOSECOLOR -> CHOOSECOLOR option (* ChooseFont *) structure ChooseFontFlags : sig include BIT_FLAGS val CF_ANSIONLY : flags val CF_APPLY : flags val CF_BOTH : flags val CF_EFFECTS : flags val CF_FIXEDPITCHONLY : flags val CF_FORCEFONTEXIST : flags val CF_NOFACESEL : flags val CF_NOOEMFONTS : flags val CF_NOSCRIPTSEL : flags val CF_NOSIMULATIONS : flags val CF_NOSIZESEL : flags val CF_NOSTYLESEL : flags val CF_NOVECTORFONTS : flags val CF_NOVERTFONTS : flags val CF_PRINTERFONTS : flags val CF_SCALABLEONLY : flags val CF_SCREENFONTS : flags val CF_SCRIPTSONLY : flags val CF_SELECTSCRIPT : flags val CF_SHOWHELP : flags val CF_TTONLY : flags val CF_WYSIWYG : flags end structure ChooseFontTypes : sig include BIT_FLAGS val BOLD_FONTTYPE : flags val ITALIC_FONTTYPE : flags val PRINTER_FONTTYPE : flags val REGULAR_FONTTYPE : flags val SCREEN_FONTTYPE : flags val SIMULATED_FONTTYPE : flags end type CHOOSEFONT = { owner: HWND option, context: HDC option, logFont: Font.LOGFONT option, pointSize: int, flags: ChooseFontFlags.flags, colors: COLORREF, style: string option, fontType: ChooseFontTypes.flags, size: {min: int, max: int} option } val ChooseFont : CHOOSEFONT -> CHOOSEFONT option *) (* FindText and ReplaceText *) structure FindReplaceFlags : sig include BIT_FLAGS val FR_DIALOGTERM : flags val FR_DOWN : flags val FR_FINDNEXT : flags val FR_HIDEMATCHCASE : flags val FR_HIDEUPDOWN : flags val FR_HIDEWHOLEWORD : flags val FR_MATCHCASE : flags val FR_NOMATCHCASE : flags val FR_NOUPDOWN : flags val FR_NOWHOLEWORD : flags val FR_REPLACE : flags val FR_REPLACEALL : flags val FR_SHOWHELP : flags val FR_WHOLEWORD : flags end datatype TemplateType = TemplateDefault | TemplateHandle of Dialog.DLGTEMPLATE | TemplateResource of HINSTANCE * Resource.RESID type FINDREPLACE = { owner : HWND, template: TemplateType, flags: FindReplaceFlags.flags, findWhat: string, replaceWith: string, bufferSize: int } val FindText : FINDREPLACE -> HWND val ReplaceText : FINDREPLACE -> HWND (* GetOpenFileName and GetSaveFileName *) structure OpenFileFlags : sig include BIT_FLAGS val OFN_ALLOWMULTISELECT : flags val OFN_CREATEPROMPT : flags val OFN_EXPLORER : flags val OFN_EXTENSIONDIFFERENT : flags val OFN_FILEMUSTEXIST : flags val OFN_HIDEREADONLY : flags val OFN_LONGNAMES : flags val OFN_NOCHANGEDIR : flags val OFN_NODEREFERENCELINKS : flags val OFN_NOLONGNAMES : flags val OFN_NONETWORKBUTTON : flags val OFN_NOREADONLYRETURN : flags val OFN_NOTESTFILECREATE : flags val OFN_NOVALIDATE : flags val OFN_OVERWRITEPROMPT : flags val OFN_PATHMUSTEXIST : flags val OFN_READONLY : flags val OFN_SHAREAWARE : flags val OFN_SHOWHELP : flags end type OPENFILENAME = { owner: HWND option, template: TemplateType, filter: (string * string) list, customFilter: (string * string) option, filterIndex: int, file: string, (* Initial value of file and returned result. *) maxFile: int, (* Max size of expected file name. *) fileTitle : string, initialDir: string option, title: string option, (* Optional title - default is Save or Open. *) flags: OpenFileFlags.flags, defExt: string option } val GetFileTitle : string -> string val GetOpenFileName : OPENFILENAME -> OPENFILENAME option val GetSaveFileName : OPENFILENAME -> OPENFILENAME option (* PageSetupDlg *) structure PageSetupFlags : sig include BIT_FLAGS val PSD_DEFAULTMINMARGINS : flags val PSD_DISABLEMARGINS : flags val PSD_DISABLEORIENTATION : flags val PSD_DISABLEPAGEPAINTING : flags val PSD_DISABLEPAPER : flags val PSD_DISABLEPRINTER : flags val PSD_INHUNDREDTHSOFMILLIMETERS : flags val PSD_INTHOUSANDTHSOFINCHES : flags val PSD_MARGINS : flags val PSD_MINMARGINS : flags val PSD_NONETWORKBUTTON : flags val PSD_NOWARNING : flags val PSD_RETURNDEFAULT : flags val PSD_SHOWHELP : flags end type PAGESETUPDLG = { owner: HWND option, devMode: DeviceContext.DEVMODE option, devNames: DeviceContext.DEVNAMES option, flags: PageSetupFlags.flags, paperSize: POINT, minMargin: RECT, margin: RECT (* For the moment we ignore the other options. *) } val PageSetupDlg : PAGESETUPDLG -> PAGESETUPDLG option (* PrintDlg *) structure PrintDlgFlags : sig include BIT_FLAGS val PD_ALLPAGES : flags val PD_COLLATE : flags val PD_DISABLEPRINTTOFILE : flags val PD_HIDEPRINTTOFILE : flags val PD_NONETWORKBUTTON : flags val PD_NOPAGENUMS : flags val PD_NOSELECTION : flags val PD_NOWARNING : flags val PD_PAGENUMS : flags val PD_PRINTSETUP : flags val PD_PRINTTOFILE : flags val PD_RETURNDC : flags val PD_RETURNDEFAULT : flags val PD_RETURNIC : flags val PD_SELECTION : flags val PD_SHOWHELP : flags val PD_USEDEVMODECOPIES : flags val PD_USEDEVMODECOPIESANDCOLLATE : flags end type PRINTDLG = { owner: HWND option, devMode: DeviceContext.DEVMODE option, devNames: DeviceContext.DEVNAMES option, context: HDC option, flags: PrintDlgFlags.flags, fromPage: int, toPage: int, minPage: int, maxPage: int, copies: int (* For the moment we ignore the other options. *) } val PrintDlg : PRINTDLG -> PRINTDLG option end = struct local open Foreign open Globals open Base open DeviceContext Color Font GdiBase val stringToBuf = copyStringToMem fun allocAndInitialise(space: int, str: string) = let open Memory val space = Int.max(space, size str) + 1 val buf = malloc(Word.fromInt space) in stringToBuf(buf, 0, str); buf end in type HWND = HWND and HDC = HDC and COLORREF = COLORREF and HINSTANCE = HINSTANCE type RECT = RECT and POINT = POINT datatype CDERR = DIALOGFAILURE (* 0xffff *) | GENERALCODES (* 0x0000 *) | STRUCTSIZE (* 0x0001 *) | INITIALIZATION (* 0x0002 *) | NOTEMPLATE (* 0x0003 *) | NOHINSTANCE (* 0x0004 *) | LOADSTRFAILURE (* 0x0005 *) | FINDRESFAILURE (* 0x0006 *) | LOADRESFAILURE (* 0x0007 *) | LOCKRESFAILURE (* 0x0008 *) | MEMALLOCFAILURE (* 0x0009 *) | MEMLOCKFAILURE (* 0x000A *) | NOHOOK (* 0x000B *) | REGISTERMSGFAIL (* 0x000C *) | PRINTERCODES (* 0x1000 *) | SETUPFAILURE (* 0x1001 *) | PARSEFAILURE (* 0x1002 *) | RETDEFFAILURE (* 0x1003 *) | LOADDRVFAILURE (* 0x1004 *) | GETDEVMODEFAIL (* 0x1005 *) | INITFAILURE (* 0x1006 *) | NODEVICES (* 0x1007 *) | NODEFAULTPRN (* 0x1008 *) | DNDMMISMATCH (* 0x1009 *) | CREATEICFAILURE (* 0x100A *) | PRINTERNOTFOUND (* 0x100B *) | DEFAULTDIFFERENT (* 0x100C *) | CHOOSEFONTCODES (* 0x2000 *) | NOFONTS (* 0x2001 *) | MAXLESSTHANMIN (* 0x2002 *) | FILENAMECODES (* 0x3000 *) | SUBCLASSFAILURE (* 0x3001 *) | INVALIDFILENAME (* 0x3002 *) | BUFFERTOOSMALL (* 0x3003 *) | FINDREPLACECODES (* 0x4000 *) | BUFFERLENGTHZERO (* 0x4001 *) | CHOOSECOLORCODES (* 0x5000 *) local val commDlgExtendedError = winCall0 (commdlg "CommDlgExtendedError") () cDWORD in fun CommDlgExtendedError () = case commDlgExtendedError () of 0x0000 => GENERALCODES | 0x0001 => STRUCTSIZE | 0x0002 => INITIALIZATION | 0x0003 => NOTEMPLATE | 0x0004 => NOHINSTANCE | 0x0005 => LOADSTRFAILURE | 0x0006 => FINDRESFAILURE | 0x0007 => LOADRESFAILURE | 0x0008 => LOCKRESFAILURE | 0x0009 => MEMALLOCFAILURE | 0x000A => MEMLOCKFAILURE | 0x000B => NOHOOK | 0x000C => REGISTERMSGFAIL | 0x1000 => PRINTERCODES | 0x1001 => SETUPFAILURE | 0x1002 => PARSEFAILURE | 0x1003 => RETDEFFAILURE | 0x1004 => LOADDRVFAILURE | 0x1005 => GETDEVMODEFAIL | 0x1006 => INITFAILURE | 0x1007 => NODEVICES | 0x1008 => NODEFAULTPRN | 0x1009 => DNDMMISMATCH | 0x100A => CREATEICFAILURE | 0x100B => PRINTERNOTFOUND | 0x100C => DEFAULTDIFFERENT | 0x2000 => CHOOSEFONTCODES | 0x2001 => NOFONTS | 0x2002 => MAXLESSTHANMIN | 0x3000 => FILENAMECODES | 0x3001 => SUBCLASSFAILURE | 0x3002 => INVALIDFILENAME | 0x3003 => BUFFERTOOSMALL | 0x4000 => FINDREPLACECODES | 0x4001 => BUFFERLENGTHZERO | _ => DIALOGFAILURE end; (* As always there are a number of ways of matching the C types to ML. Since functions such as GetOpenFileName update their parameters, probably the easiest way to deal with them is as functions which return an updated parameter set. *) datatype TemplateType = TemplateHandle of Dialog.DLGTEMPLATE | TemplateResource of HINSTANCE * Resource.RESID | TemplateDefault structure OpenFileFlags:> sig include BIT_FLAGS val OFN_ALLOWMULTISELECT : flags val OFN_CREATEPROMPT : flags val OFN_EXPLORER : flags val OFN_EXTENSIONDIFFERENT : flags val OFN_FILEMUSTEXIST : flags val OFN_HIDEREADONLY : flags val OFN_LONGNAMES : flags val OFN_NOCHANGEDIR : flags val OFN_NODEREFERENCELINKS : flags val OFN_NOLONGNAMES : flags val OFN_NONETWORKBUTTON : flags val OFN_NOREADONLYRETURN : flags val OFN_NOTESTFILECREATE : flags val OFN_NOVALIDATE : flags val OFN_OVERWRITEPROMPT : flags val OFN_PATHMUSTEXIST : flags val OFN_READONLY : flags val OFN_SHAREAWARE : flags val OFN_SHOWHELP : flags val cConvert: flags conversion end = struct open Word32 type flags = word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val OFN_READONLY = 0wx00000001 val OFN_OVERWRITEPROMPT = 0wx00000002 val OFN_HIDEREADONLY = 0wx00000004 val OFN_NOCHANGEDIR = 0wx00000008 val OFN_SHOWHELP = 0wx00000010 val OFN_NOVALIDATE = 0wx00000100 val OFN_ALLOWMULTISELECT = 0wx00000200 val OFN_EXTENSIONDIFFERENT = 0wx00000400 val OFN_PATHMUSTEXIST = 0wx00000800 val OFN_FILEMUSTEXIST = 0wx00001000 val OFN_CREATEPROMPT = 0wx00002000 val OFN_SHAREAWARE = 0wx00004000 val OFN_NOREADONLYRETURN = 0wx00008000 val OFN_NOTESTFILECREATE = 0wx00010000 val OFN_NONETWORKBUTTON = 0wx00020000 val OFN_NOLONGNAMES = 0wx00040000 (* force no long names for 4.x modules*) val OFN_EXPLORER = 0wx00080000 (* new look commdlg*) val OFN_NODEREFERENCELINKS = 0wx00100000 val OFN_LONGNAMES = 0wx00200000 (* force long names for 3.x modules*) val all = flags[OFN_READONLY, OFN_OVERWRITEPROMPT, OFN_HIDEREADONLY, OFN_NOCHANGEDIR, OFN_SHOWHELP, OFN_NOVALIDATE, OFN_ALLOWMULTISELECT, OFN_EXTENSIONDIFFERENT, OFN_PATHMUSTEXIST, OFN_FILEMUSTEXIST, OFN_CREATEPROMPT, OFN_SHAREAWARE, OFN_NOREADONLYRETURN, OFN_NOTESTFILECREATE, OFN_NONETWORKBUTTON, OFN_NOLONGNAMES, OFN_EXPLORER, OFN_NODEREFERENCELINKS, OFN_LONGNAMES] val intersect = List.foldl (fn (a, b) => andb(a,b)) all val cConvert = cDWORDw end (* These flags are local only. *) (*val OFN_ENABLEHOOK = OpenFileFlags.fromWord 0wx00000020 *) val OFN_ENABLETEMPLATE = OpenFileFlags.fromWord 0wx00000040 val OFN_ENABLETEMPLATEHANDLE = OpenFileFlags.fromWord 0wx00000080 type OPENFILENAME = { owner: HWND option, template: TemplateType, filter: (string * string) list, customFilter: (string * string) option, filterIndex: int, file: string, (* Initial value of file and returned result. *) maxFile: int, (* Max size of expected file name. *) fileTitle : string, initialDir: string option, title: string option, (* Optional title - default is Save or Open. *) flags: OpenFileFlags.flags, defExt: string option } local val OPENFILENAME = cStruct20(cDWORD, cHWNDOPT, cPointer (*HINSTANCE*), cPointer (* LPCTSTR*), cPointer (*LPTSTR*), cDWORD, cDWORD, cPointer (*LPTSTR*), cDWORD, cPointer (*LPTSTR*), cDWORD, STRINGOPT, STRINGOPT, OpenFileFlags.cConvert, cWORD, cWORD, STRINGOPT, cLPARAM, cPointer (* LPOFNHOOKPROC *), cPointer (* LPCTSTR*) (* cPointer, DWORD, DWORD*)) val {load=loadOFN, store=fromOFN, ctype={size=sizeOfnStruct, ...}, ...} = breakConversion OPENFILENAME fun getOpenSave doCall (arg: OPENFILENAME): OPENFILENAME option = let val { owner: HWND option, template: TemplateType, filter: (string * string) list, customFilter: (string * string) option, filterIndex: int, file: string, maxFile: int, fileTitle : string, initialDir: string option, title: string option, flags: OpenFileFlags.flags, defExt: string option, ...} = arg open Memory infix 6 ++ val (f1, inst, templ, toFree) = case template of TemplateHandle dlgTemp => let val dlg = toCWord8vec(Dialog.compileTemplate dlgTemp) in (OFN_ENABLETEMPLATEHANDLE, dlg, null, dlg) end | TemplateResource(hInst, IdAsInt wb) => ( OFN_ENABLETEMPLATE, voidStarOfHandle hInst, Memory.sysWord2VoidStar(SysWord.fromInt wb), null ) | TemplateResource(hInst, IdAsString str) => let val s = toCstring str in (OFN_ENABLETEMPLATE, voidStarOfHandle hInst, s, s) end | TemplateDefault => (OpenFileFlags.fromWord 0w0, null, null, null) val lpstrFilter = case filter of nil => Memory.null | _ => let (* The filter strings are pairs of strings with a final terminating null. That implies that the strings cannot be empty. Should we check that? Get the store needed for the strings, including the null terminations and the final null. *) val filterSize = List.foldl (fn((s1,s2),n) => size s1 + size s2 + n + 2) 1 filter open Memory infix 6 ++ val buf = malloc (Word.fromInt filterSize) fun copyToBuf((s1,s2), n) = let val ss1 = size s1 and ss2 = size s2 in stringToBuf(buf, n, s1); stringToBuf(buf, n+ss1+1, s2); n+ss1+ss2+2 (* Result is the next offset. *) end val lastAddr = List.foldl copyToBuf 0 filter val _ = set8(buf, Word.fromInt lastAddr, 0w0) in buf end val (lpstrCustomFilter, nMaxCustFilter) = case customFilter of NONE => (null, 0) | SOME (dispString, pattern) => let (* Make sure we have enough space. 100 is probably big enough. *) val space = Int.max(size dispString + size pattern + 2, 100) val buf = Memory.malloc(Word.fromInt space) in stringToBuf(buf, 0, dispString); stringToBuf(buf, size dispString + 1, pattern); (buf, space) end val lpstrFile = (* Full name of file including path. *) allocAndInitialise(maxFile, file) val lpstrFileTitle = (* Name excluding the path. *) allocAndInitialise(maxFile, fileTitle) val ofn = malloc sizeOfnStruct val args = (Word.toInt sizeOfnStruct, (* lStructSize *) owner, (* hwndOwner *) inst, (* hInstance *) lpstrFilter, lpstrCustomFilter, nMaxCustFilter, filterIndex, lpstrFile, maxFile+1, (* nMaxFile *) lpstrFileTitle, maxFile+1, (* nMaxFileTitle *) initialDir, title, OpenFileFlags.flags[f1, flags], (* Flags *) 0, (* nFileOffset *) 0, (* nFileExtension *) defExt, 0, (* lCustData *) null, (* lpfnHook *) templ) (* lpTemplateName *) val freeOfn = fromOFN(ofn, args) (* Copy into the memory *) fun freeAll() = ( freeOfn(); List.app free [ofn, toFree, lpstrFilter, lpstrCustomFilter, lpstrFile, lpstrFileTitle] ) val result = doCall ofn handle ex => (freeAll(); raise ex) in (if result then let (* Most of the fields are unchanged so we're better off extracting them from the original. If we've passed in a template we have to get it from the original because we can only convert a memory object to a Word8Vector.vector if we know its length. *) val (_, _, _, _, lpstrCustomFilter, _, nFilterIndex, lpstrFile, _, lpstrFileTitle, _, _, _, flagBits, _, _, _, _, _, _) = loadOFN ofn val customFilter = if lpstrCustomFilter = null then NONE else let (* The dialogue box copies the selected filter into the section of this string after the first string. *) val s1 = fromCstring lpstrCustomFilter val s2 = fromCstring (lpstrCustomFilter ++ Word.fromInt(size s1 +1)) in SOME(s1, s2) end in SOME { owner = owner, template = template, filter = filter, customFilter = customFilter, filterIndex = nFilterIndex, file = fromCstring lpstrFile, maxFile = maxFile, fileTitle = fromCstring lpstrFileTitle, initialDir = initialDir, title = title, (* Mask off the template flags. *) flags = let open OpenFileFlags in clear(fromWord 0wxE0, flagBits) end, defExt = defExt } end else NONE) before freeAll() end in val GetOpenFileName = getOpenSave (winCall1 (commdlg "GetOpenFileNameA") cPointer cBool) and GetSaveFileName = getOpenSave (winCall1 (commdlg "GetSaveFileNameA") cPointer cBool) end (* local *) local val getFileTitle = winCall3(commdlg "GetFileTitleA") (cString, cPointer, cWORD) cShort in fun GetFileTitle(file: string): string = let fun gft (m, n) = getFileTitle(file, m, n) in getStringWithNullIsLength gft end end (* This is a bit messy. It creates a modeless dialogue box and sends messages to the parent window. The only problem is that the message identifier is not a constant. It has to be obtained by a call to RegisterWindowMessage. *) (* We also have to ensure that the memory containing the FINDREPLACE structure is not freed until the dialogue window is destroyed. *) structure FindReplaceFlags = FindReplaceFlags (* These flags are local only. *) (*val FR_ENABLEHOOK = FindReplaceFlags.fromWord 0wx00000100*) val FR_ENABLETEMPLATE = FindReplaceFlags.fromWord 0wx00000200 val FR_ENABLETEMPLATEHANDLE = FindReplaceFlags.fromWord 0wx00002000 (* The address of this structure is passed in messages. That all looks extremely messy. *) type FINDREPLACE = { owner : HWND, (* NOT an option. *) template: TemplateType, flags: FindReplaceFlags.flags, findWhat: string, replaceWith: string, bufferSize: int } local val FINDREPLACE = cStruct11(cDWORD, cHWND, cPointer (*HINSTANCE*), FindReplaceFlags.cFindReplaceFlags, cPointer, cPointer, cWORD, cWORD, cLPARAM, cPointer (* LPFRHOOKPROC *), cPointer) val {store=fromOFR, ctype={size=sizeFR, ...}, ...} = breakConversion FINDREPLACE val findText = winCall1 (commdlg "FindTextA") cPointer cHWND and replaceText = winCall1 (commdlg "ReplaceTextA") cPointer cHWND fun findReplace doCall (arg: FINDREPLACE): HWND = let val { owner : HWND, (* NOT an option. *) template: TemplateType, flags: FindReplaceFlags.flags, findWhat: string, replaceWith: string, bufferSize: int } = arg open Memory val (f1, inst, templ, toFree) = case template of TemplateHandle dlgTemp => let val dlg = toCWord8vec(Dialog.compileTemplate dlgTemp) in (FR_ENABLETEMPLATEHANDLE, dlg, null, dlg) end | TemplateResource(hInst, IdAsInt wb) => ( FR_ENABLETEMPLATE, voidStarOfHandle hInst, Memory.sysWord2VoidStar(SysWord.fromInt wb), null ) | TemplateResource(hInst, IdAsString str) => let val s = toCstring str in (FR_ENABLETEMPLATE, voidStarOfHandle hInst, s, s) end | TemplateDefault => (FindReplaceFlags.fromWord 0w0, null, null, null) val lpstrFindWhat = allocAndInitialise(bufferSize, findWhat) val lpstrReplaceWith = allocAndInitialise(bufferSize, replaceWith) val m = malloc sizeFR val args = (Word.toInt sizeFR, (* lStructSize *) owner, (* hwndOwner *) inst, (* hInstance *) FindReplaceFlags.flags[f1, flags], (* Flags *) lpstrFindWhat, lpstrReplaceWith, bufferSize, bufferSize, 0, (* lCustData *) null, (* lpfnHook *) templ) (* lpTemplateName *) val freeOfr = fromOFR(m, args) fun freeAll() = ( freeOfr(); List.app free [m, toFree, lpstrFindWhat, lpstrReplaceWith] ) val result = doCall m handle ex => (freeAll(); raise ex) val () = checkResult(not(isHNull result)) handle ex => (freeAll(); raise ex) in (* The memory cannot be released until the dialogue is dismissed. Also, since this is a modeless dialogue we have to add it to the modeless dialogue list so that keyboard functions work. *) (* TODO: There may be better ways of ensuring the memory is freed. *) (Message.addModelessDialogue(result, SOME freeAll); result) end in val FindText = findReplace findText and ReplaceText = findReplace replaceText end structure PageSetupFlags :> sig include BIT_FLAGS val PSD_DEFAULTMINMARGINS : flags val PSD_DISABLEMARGINS : flags val PSD_DISABLEORIENTATION : flags val PSD_DISABLEPAGEPAINTING : flags val PSD_DISABLEPAPER : flags val PSD_DISABLEPRINTER : flags val PSD_INHUNDREDTHSOFMILLIMETERS : flags val PSD_INTHOUSANDTHSOFINCHES : flags val PSD_MARGINS : flags val PSD_MINMARGINS : flags val PSD_NONETWORKBUTTON : flags val PSD_NOWARNING : flags val PSD_RETURNDEFAULT : flags val PSD_SHOWHELP : flags val cConvert: flags conversion end = struct open Word32 type flags = word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val PSD_DEFAULTMINMARGINS = 0wx00000000 (* default (printer's) *) (*val PSD_INWININIINTLMEASURE = 0wx00000000 *)(* 1st of 4 possible *) val PSD_MINMARGINS = 0wx00000001 (* use caller's *) val PSD_MARGINS = 0wx00000002 (* use caller's *) val PSD_INTHOUSANDTHSOFINCHES = 0wx00000004 (* 2nd of 4 possible *) val PSD_INHUNDREDTHSOFMILLIMETERS = 0wx00000008 (* 3rd of 4 possible *) val PSD_DISABLEMARGINS = 0wx00000010 val PSD_DISABLEPRINTER = 0wx00000020 val PSD_NOWARNING = 0wx00000080 val PSD_DISABLEORIENTATION = 0wx00000100 val PSD_RETURNDEFAULT = 0wx00000400 val PSD_DISABLEPAPER = 0wx00000200 val PSD_SHOWHELP = 0wx00000800 (* val PSD_ENABLEPAGESETUPHOOK = 0wx00002000 val PSD_ENABLEPAGESETUPTEMPLATE = 0wx00008000 val PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0wx00020000 val PSD_ENABLEPAGEPAINTHOOK = 0wx00040000 *) val PSD_DISABLEPAGEPAINTING = 0wx00080000 val PSD_NONETWORKBUTTON = 0wx00200000 val all = flags[PSD_DEFAULTMINMARGINS, PSD_MINMARGINS, PSD_MARGINS, PSD_INTHOUSANDTHSOFINCHES, PSD_INHUNDREDTHSOFMILLIMETERS, PSD_DISABLEMARGINS, PSD_DISABLEPRINTER, PSD_NOWARNING, PSD_DISABLEORIENTATION, PSD_RETURNDEFAULT, PSD_DISABLEPAPER, PSD_SHOWHELP, PSD_DISABLEPAGEPAINTING, PSD_NONETWORKBUTTON] val intersect = List.foldl (fn (a, b) => andb(a,b)) all val cConvert = cDWORDw end structure PrintDlgFlags :> sig include BIT_FLAGS val PD_ALLPAGES : flags val PD_COLLATE : flags val PD_DISABLEPRINTTOFILE : flags val PD_HIDEPRINTTOFILE : flags val PD_NONETWORKBUTTON : flags val PD_NOPAGENUMS : flags val PD_NOSELECTION : flags val PD_NOWARNING : flags val PD_PAGENUMS : flags val PD_PRINTSETUP : flags val PD_PRINTTOFILE : flags val PD_RETURNDC : flags val PD_RETURNDEFAULT : flags val PD_RETURNIC : flags val PD_SELECTION : flags val PD_SHOWHELP : flags val PD_USEDEVMODECOPIES : flags val PD_USEDEVMODECOPIESANDCOLLATE : flags val cConvert: flags conversion end = struct open Word32 type flags = word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val PD_ALLPAGES = 0wx00000000 val PD_SELECTION = 0wx00000001 val PD_PAGENUMS = 0wx00000002 val PD_NOSELECTION = 0wx00000004 val PD_NOPAGENUMS = 0wx00000008 val PD_COLLATE = 0wx00000010 val PD_PRINTTOFILE = 0wx00000020 val PD_PRINTSETUP = 0wx00000040 val PD_NOWARNING = 0wx00000080 val PD_RETURNDC = 0wx00000100 val PD_RETURNIC = 0wx00000200 val PD_RETURNDEFAULT = 0wx00000400 val PD_SHOWHELP = 0wx00000800 (*val PD_ENABLEPRINTHOOK = 0wx00001000 val PD_ENABLESETUPHOOK = 0wx00002000 val PD_ENABLEPRINTTEMPLATE = 0wx00004000 val PD_ENABLESETUPTEMPLATE = 0wx00008000 val PD_ENABLEPRINTTEMPLATEHANDLE = 0wx00010000 val PD_ENABLESETUPTEMPLATEHANDLE = 0wx00020000 *) val PD_USEDEVMODECOPIES = 0wx00040000 val PD_USEDEVMODECOPIESANDCOLLATE = 0wx00040000 val PD_DISABLEPRINTTOFILE = 0wx00080000 val PD_HIDEPRINTTOFILE = 0wx00100000 val PD_NONETWORKBUTTON = 0wx00200000 val all = flags[PD_ALLPAGES, PD_SELECTION, PD_PAGENUMS, PD_NOSELECTION, PD_NOPAGENUMS, PD_COLLATE, PD_PRINTTOFILE, PD_PRINTSETUP, PD_NOWARNING, PD_RETURNDC, PD_RETURNIC, PD_RETURNDEFAULT, PD_SHOWHELP, PD_USEDEVMODECOPIES, PD_USEDEVMODECOPIESANDCOLLATE, PD_DISABLEPRINTTOFILE, PD_HIDEPRINTTOFILE, PD_NONETWORKBUTTON] val intersect = List.foldl (fn (a, b) => andb(a,b)) all val cConvert = cDWORDw end type PAGESETUPDLG = { owner: HWND option, devMode: DEVMODE option, devNames: DEVNAMES option, flags: PageSetupFlags.flags, paperSize: POINT, minMargin: RECT, margin: RECT (* For the moment we ignore the other options. *) } type PRINTDLG = { owner: HWND option, devMode: DEVMODE option, devNames: DEVNAMES option, context: HDC option, flags: PrintDlgFlags.flags, fromPage: int, toPage: int, minPage: int, maxPage: int, copies: int (* For the moment we ignore the other options. *) } local (* A DEVNAMES structure is a structure containing offsets followed by the actual strings. *) val DEVNAMES = cStruct4(cWORD, cWORD, cWORD, cWORD) val {load=toDN, store=fromDN, ctype={size=sizeDevN, ...}, ...} = breakConversion DEVNAMES val DN_DEFAULTPRN = 0x0001 (* Allocate global memory for the devnames if necessary *) fun toDevNames NONE = hNull | toDevNames (SOME{driver, device, output, default}) = let (* We need memory for the DEVNAMES structure plus the strings plus their terminating nulls. *) val devnameSize = Word.toInt sizeDevN val sizeDriver = size driver and sizeDevice = size device and sizeOutput = size output val space = devnameSize + sizeDriver + sizeDevice + sizeOutput + 3 val mHandle = GlobalAlloc(0, space) val buff = GlobalLock mHandle (* Copy in the strings and calculate the next offset. *) open Memory infix 6 ++ fun copyString b str = ( stringToBuf(b, 0, str); b ++ Word.fromInt(size str+1) ); val off1 = copyString (buff ++ sizeDevN) driver; val off2 = copyString off1 device val _ = copyString off2 output in ignore(fromDN(buff, (devnameSize, devnameSize+sizeDriver+1, devnameSize+sizeDriver+sizeDevice+2, if default then DN_DEFAULTPRN else 0))); GlobalUnlock mHandle; mHandle end (* Convert a DevNames structure. *) fun fromDevNames v = if isHNull v then NONE else let val buff = GlobalLock v val (off0, off1, off2, def) = toDN buff open Memory infix 6 ++ val driver = fromCstring(buff ++ Word.fromInt off0) val device = fromCstring(buff ++ Word.fromInt off1) val output = fromCstring(buff ++ Word.fromInt off2) val default = IntInf.andb(def, DN_DEFAULTPRN) <> 0 in GlobalUnlock v; SOME {driver=driver, device=device, output=output, default=default} end val PAGESETUPDLG = cStruct14(cDWORD, cHWNDOPT, cHGLOBAL, cHGLOBAL, PageSetupFlags.cConvert, cPoint, cRect, cRect, cHINSTANCE, cLPARAM, cPointer, cPointer, cPointer, cPointer) val {load=toPSD, store=fromPSD, ctype={size=sizePageSD, ...}, ...} = breakConversion PAGESETUPDLG (* This is a bit of a mess. It seems that it uses structure packing on 32-bits which means that the fields after the five shorts are not aligned onto 4-byte boundaries. We currently don't use them so we just define this as the structure as far as we use it and set the length explicitly. This problem doesn't arise with PrintDlgEx so that might be preferable. *) val PRINTDLG = cStruct11(cDWORD, cHWNDOPT, cHGLOBAL, cHGLOBAL, cHDC, PrintDlgFlags.cConvert, cWORD, cWORD, cWORD, cWORD, cWORD) val {load=toPRD, store=fromPRD, ...} = breakConversion PRINTDLG val printDlgSize = if #size LowLevel.cTypePointer = 0w4 then 0w66 else 0w120 val pageSetupDlg = winCall1 (commdlg "PageSetupDlgA") cPointer cBool and printDlg = winCall1 (commdlg "PrintDlgA") cPointer cBool in fun PageSetupDlg (arg: PAGESETUPDLG): PAGESETUPDLG option = let val { owner: HWND option, devMode: DEVMODE option, devNames: {driver: string, device: string, output: string, default: bool} option, flags: PageSetupFlags.flags, paperSize: POINT, minMargin: RECT, margin: RECT} = arg val devnames = toDevNames devNames val devmode = case devMode of NONE => hNull | SOME dv => let (* This has to be in global memory *) open DeviceBase val hGlob = GlobalAlloc(0, Word.toInt(devModeSize dv)) val mem = GlobalLock hGlob val () = setCDevMode(mem, dv) in GlobalUnlock hGlob; hGlob end open Memory val mem = malloc sizePageSD val str = (Word.toInt sizePageSD, owner, devmode, devnames, flags, paperSize, minMargin, margin, hinstanceNull, 0, null, null, null, null) val freePsd = fromPSD(mem, str) (* Set the PAGESETUPDLG struct *) fun freeAll() = let (* We can only free the handles after we've reloaded them. *) val (_, _, hgDevMode, hgDevNames, _, _, _, _, _, _, _, _, _, _) = toPSD mem in if isHNull hgDevNames then () else ignore(GlobalFree hgDevNames); if isHNull hgDevMode then () else ignore(GlobalFree hgDevMode); free mem; freePsd() end val result = pageSetupDlg mem handle ex => (freeAll(); raise ex) val (_, owner, hgDevMode, hgDevNames, flags, paperSize, minMargin, margin, _, _, _, _, _, _) = toPSD mem val devMode = if isHNull hgDevMode then NONE else let val r = SOME(DeviceBase.getCDevMode(GlobalLock hgDevMode)) in GlobalUnlock hgDevMode; r end; val devNames = fromDevNames hgDevNames val newArg = { owner = owner, devMode = devMode, devNames = devNames, flags = flags, paperSize = paperSize, minMargin = minMargin, margin = margin } val () = freeAll() in if result then SOME newArg else NONE end and PrintDlg (arg: PRINTDLG): PRINTDLG option = let val { owner: HWND option, devMode: DEVMODE option, devNames: {driver: string, device: string, output: string, default: bool} option, context: HDC option, flags: PrintDlgFlags.flags, fromPage: int, toPage: int, minPage: int, maxPage: int, copies: int} = arg val devnames = toDevNames devNames val devmode = case devMode of NONE => hNull | SOME dv => let (* This has to be in global memory *) open DeviceBase val hGlob = GlobalAlloc(0, Word.toInt(devModeSize dv)) val mem = GlobalLock hGlob val () = setCDevMode(mem, dv) in GlobalUnlock hGlob; hGlob end open Memory val mem = malloc printDlgSize (* Since we're not going to set all of it we need to zero it. *) local fun zero n = if n = printDlgSize then () else (set8(mem, n, 0w0); zero(n+0w1)) in val () = zero 0w0 end val freePRD = fromPRD(mem, (Word.toInt printDlgSize, owner, devmode, devnames, getOpt(context, hdcNull), flags, fromPage, toPage, minPage, maxPage, copies)) fun freeAll() = let (* We can only free the handles after we've reloaded them. *) val (_, _, hgDevMode, hgDevNames, _, _, _, _, _, _, _) = toPRD mem in if isHNull hgDevNames then () else ignore(GlobalFree hgDevNames); if isHNull hgDevMode then () else ignore(GlobalFree hgDevMode); free mem; freePRD() end val result = printDlg mem handle ex => (freeAll(); raise ex) (* Convert the result. We have to do this even if the result is false to make sure we call GlobalFree on any global handles. *) val (_, owner, hgDevMode, hgDevNames, hdc, flags, fromPage, toPage, minPage, maxPage, copies) = toPRD mem val devMode = if isHNull hgDevMode then NONE else let val r = SOME(DeviceBase.getCDevMode(GlobalLock hgDevMode)) in GlobalUnlock hgDevMode; r end; val devNames = fromDevNames hgDevNames val newArg = { owner = owner, devMode = devMode, devNames = devNames, context = if isHdcNull hdc then NONE else SOME hdc, flags = flags, fromPage = fromPage, toPage = toPage, minPage = minPage, maxPage = maxPage, copies = copies } val () = freeAll() in if result then SOME newArg else NONE end end (* structure ChooseFontFlags :> sig include BIT_FLAGS val CF_ANSIONLY : flags val CF_APPLY : flags val CF_BOTH : flags val CF_EFFECTS : flags val CF_FIXEDPITCHONLY : flags val CF_FORCEFONTEXIST : flags val CF_NOFACESEL : flags val CF_NOOEMFONTS : flags val CF_NOSCRIPTSEL : flags val CF_NOSIMULATIONS : flags val CF_NOSIZESEL : flags val CF_NOSTYLESEL : flags val CF_NOVECTORFONTS : flags val CF_NOVERTFONTS : flags val CF_PRINTERFONTS : flags val CF_SCALABLEONLY : flags val CF_SCREENFONTS : flags val CF_SCRIPTSONLY : flags val CF_SELECTSCRIPT : flags val CF_SHOWHELP : flags val CF_TTONLY : flags val CF_WYSIWYG : flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val CF_SCREENFONTS = 0wx00000001 val CF_PRINTERFONTS = 0wx00000002 val CF_BOTH = 0wx00000003: flags val CF_SHOWHELP = 0wx00000004 (* val CF_ENABLEHOOK = 0wx00000008 val CF_ENABLETEMPLATE = 0wx00000010 val CF_ENABLETEMPLATEHANDLE = 0wx00000020 *) (*val CF_INITTOLOGFONTSTRUCT = 0wx00000040*) (*val CF_USESTYLE = 0wx00000080*) val CF_EFFECTS = 0wx00000100 val CF_APPLY = 0wx00000200 val CF_ANSIONLY = 0wx00000400 val CF_SCRIPTSONLY = CF_ANSIONLY val CF_NOVECTORFONTS = 0wx00000800 val CF_NOOEMFONTS = CF_NOVECTORFONTS val CF_NOSIMULATIONS = 0wx00001000 (*val CF_LIMITSIZE = 0wx00002000*) val CF_FIXEDPITCHONLY = 0wx00004000 val CF_WYSIWYG = 0wx00008000 val CF_FORCEFONTEXIST = 0wx00010000 val CF_SCALABLEONLY = 0wx00020000 val CF_TTONLY = 0wx00040000 val CF_NOFACESEL = 0wx00080000 val CF_NOSTYLESEL = 0wx00100000 val CF_NOSIZESEL = 0wx00200000 val CF_SELECTSCRIPT = 0wx00400000 val CF_NOSCRIPTSEL = 0wx00800000 val CF_NOVERTFONTS = 0wx01000000 val all = flags[CF_SCREENFONTS, CF_PRINTERFONTS, CF_SHOWHELP, CF_EFFECTS, CF_APPLY, CF_ANSIONLY, CF_NOVECTORFONTS, CF_NOSIMULATIONS, CF_FIXEDPITCHONLY, CF_WYSIWYG, CF_FORCEFONTEXIST, CF_SCALABLEONLY, CF_TTONLY, CF_NOFACESEL, CF_NOSTYLESEL, CF_NOSIZESEL, CF_SELECTSCRIPT, CF_NOSCRIPTSEL, CF_NOVERTFONTS] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end structure ChooseFontTypes :> sig include BIT_FLAGS val BOLD_FONTTYPE : flags val ITALIC_FONTTYPE : flags val PRINTER_FONTTYPE : flags val REGULAR_FONTTYPE : flags val SCREEN_FONTTYPE : flags val SIMULATED_FONTTYPE : flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val SIMULATED_FONTTYPE = 0wx8000 val PRINTER_FONTTYPE = 0wx4000 val SCREEN_FONTTYPE = 0wx2000 val BOLD_FONTTYPE = 0wx0100 val ITALIC_FONTTYPE = 0wx0200 val REGULAR_FONTTYPE = 0wx0400 val all = flags[SIMULATED_FONTTYPE, PRINTER_FONTTYPE, SCREEN_FONTTYPE, BOLD_FONTTYPE, ITALIC_FONTTYPE, REGULAR_FONTTYPE] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end type CHOOSEFONT = { owner: HWND option, context: HDC option, logFont: LOGFONT option, pointSize: int, flags: ChooseFontFlags.flags, colors: COLORREF, style: string option, fontType: ChooseFontTypes.flags, size: {min: int, max: int} option } local val CHOOSEFONT = cStruct16(UINT, HWNDOPT, HDC, POINTER, INT, WORD, COLORREF, INT, INT, INT, INT, POINTER, SHORT, SHORT, INT, INT) val (toCF, fromCF, cfStruct) = breakConversion CHOOSEFONT val (toLF, fromLF, lfStruct) = breakConversion FontBase.LOGFONT val CF_LIMITSIZE = 0wx00002000 val CF_INITTOLOGFONTSTRUCT = 0wx00000040 val CF_USESTYLE = 0wx00000080 fun toCChooseFont({ owner: HWND option, context: HDC option, logFont: LOGFONT option, pointSize: int, flags: ChooseFontFlags.flags, colors: COLORREF, style: string option, fontType: ChooseFontTypes.flags, size: {min: int, max: int} option }) = let (* Use the supplied logFont otherwise allocate store for a new one. *) val logf = case logFont of SOME logf => address(fromLF logf) | NONE => address(alloc 1 lfStruct) (* Copy any style to the buffer - I don't know why this is 64. *) val lpszStyle = allocAndInitialise(64, getOpt(style, "")) val (min, max) = case size of SOME {min, max} => (min, max) | NONE => (0,0) val f1 = case size of SOME _ => CF_LIMITSIZE | _ => 0w0 val f2 = case logFont of SOME _ => CF_INITTOLOGFONTSTRUCT | _ => 0w0 val f3 = case style of SOME _ => CF_USESTYLE | _ => 0w0 val flags = List.foldl LargeWord.orb 0w0 [ChooseFontFlags.toWord flags, f1, f2, f3] in address( fromCF(sizeof cfStruct, owner, getOpt(context, hdcNull), logf, pointSize, flags, colors, 0, 0, 0, 0, lpszStyle, LargeWord.toInt (ChooseFontTypes.toWord fontType), 0, min, max)) end fun fromCChooseFont v : CHOOSEFONT = let val (_, owner, hdc, logf, pointSize, flags, colors, _, _, _, _, style, types, _, min, max) = toCF(deref v) val minMax = if LargeWord.andb(flags, CF_LIMITSIZE) = 0w0 then NONE else SOME{min=min, max=max} val style = if LargeWord.andb(flags, CF_USESTYLE) = 0w0 then NONE else SOME(fromCstring style) in { owner = owner, context = if isHdcNull hdc then NONE else SOME hdc, logFont = SOME(toLF(deref logf)), pointSize = pointSize, (* Remove CF_LIMITSIZE and/or CF_INITTOLOGFONTSTRUCT *) flags = ChooseFontFlags.intersect[ChooseFontFlags.fromWord flags], colors = colors, style = style, fontType = ChooseFontTypes.fromWord(LargeWord.andb(LargeWord.fromInt types, 0wxffff)), size = minMax} end in fun ChooseFont (arg: CHOOSEFONT): CHOOSEFONT option = let val converted = toCChooseFont arg val result = winCall1 (commdlg "ChooseFontA") POINTER BOOL converted in if result then SOME(fromCChooseFont converted) else NONE end end structure ChooseColorFlags :> sig include BIT_FLAGS val CC_ANYCOLOR : flags val CC_FULLOPEN : flags val CC_PREVENTFULLOPEN : flags val CC_RGBINIT : flags val CC_SHOWHELP : flags val CC_SOLIDCOLOR : flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val CC_RGBINIT = 0wx00000001 val CC_FULLOPEN = 0wx00000002 val CC_PREVENTFULLOPEN = 0wx00000004 val CC_SHOWHELP = 0wx00000008 (*val CC_ENABLEHOOK = 0wx00000010 val CC_ENABLETEMPLATE = 0wx00000020 val CC_ENABLETEMPLATEHANDLE = 0wx00000040*) val CC_SOLIDCOLOR = 0wx00000080 val CC_ANYCOLOR = 0wx00000100 val all = flags[CC_RGBINIT, CC_FULLOPEN, CC_PREVENTFULLOPEN, CC_SHOWHELP, CC_SOLIDCOLOR, CC_ANYCOLOR] val intersect = List.foldl (fn (a, b) => SysWord.andb(a,b)) all end type CHOOSECOLOR = { owner: HWND option, result: COLORREF, customColors: COLORREF list, flags: ChooseColorFlags.flags } local val CHOOSECOLOR = cStruct9(UINT, HWNDOPT, INT, COLORREF, POINTER, WORD, INT, INT, INT) (* The custom colours are held in an array of 16 elements. *) val CUSTOM = cStruct16(COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF, COLORREF) val (toCC, fromCC, ccStruct) = breakConversion CHOOSECOLOR val (toM, fromM, mStruct) = breakConversion CUSTOM val (toCR, fromCR, cref) = breakConversion COLORREF fun toCChooseColor { owner: HWND option, result: COLORREF, customColors: COLORREF list, flags: ChooseColorFlags.flags } = let val custom = alloc 1 mStruct val black = fromCR(RGB{red=0, green=0, blue=0}) fun fillCustom(_, 16) = () | fillCustom([], i) = (assign cref (offset i cref custom) black; fillCustom([], i+1)) | fillCustom(hd::tl, i) = (assign cref (offset i cref custom) (fromCR hd); fillCustom(tl, i+1)) in fillCustom(customColors, 0); address( fromCC(sizeof ccStruct, owner, 0, result, address custom, ChooseColorFlags.toWord flags, 0, 0, 0)) end fun fromCChooseColor v : CHOOSECOLOR = let val (_, owner, _, result, custom, flags, _, _, _) = toCC(deref v) val custom = List.tabulate(16, fn i => toCR(offset i cref(deref custom))) in { owner = owner, flags = ChooseColorFlags.fromWord flags, customColors = custom, result = result} end in fun ChooseColor (arg: CHOOSECOLOR): CHOOSECOLOR option = let val converted = toCChooseColor arg val result = winCall1 (commdlg "ChooseColorA") POINTER BOOL converted in if result then SOME(fromCChooseColor converted) else NONE end end *) (* typedef struct tagCHOOSECOLORA { DWORD lStructSize; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF* lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCSTR lpTemplateName; } CHOOSECOLORA, *LPCHOOSECOLORA; *) (* ChooseColor PrintDlgEx - NT 5.0 and later only The following application-defined hook procedures are used with common dialog boxes. CCHookProc CFHookProc FRHookProc OFNHookProc OFNHookProcOldStyle PagePaintHook PageSetupHook PrintHookProc SetupHookProc *) end end; polyml-5.7.1/mlsource/extra/Win/Examples/0000755000175000017500000000000013204034553017266 5ustar daviddavidpolyml-5.7.1/mlsource/extra/Win/Examples/mlEdit.sml0000644000175000017500000007401013204034553021223 0ustar daviddavid(* Copyright (c) 2001-7 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Example text editor. *) fun mlEdit () = let open Window Message Menu Edit Class Dialog CommonDialog MessageBox Caret open DeviceContext Font Printing Transform Painting Color open Keyboard (* Define values to be delivered when the menu items are selected. The Id is delivered as part of a WM_COMMAND message. *) val menuOpen = 1 and menuQuit = 2 and menuSave = 3 and menuSaveAs = 4 and menuCut = 5 and menuCopy = 6 and menuPaste = 7 and menuFind = 8 and menuPageSetup = 9 and menuPrint = 10 and menuAbout = 11 val app = Globals.ApplicationInstance() (* Borrow the Poly icon from the application program. It happens to be icon id 102. If this doesn't work return NULL. *) val polyIcon = Icon.LoadIcon(app, Resource.MAKEINTRESOURCE 102) handle _ => Globals.hNull; local (* Create sub-menus. *) val fileMenu = let val fileMenu = CreateMenu(); in AppendMenu(fileMenu, [], MenuId menuOpen, MFT_STRING "&Open"); AppendMenu(fileMenu, [], MenuId menuSave, MFT_STRING "&Save"); AppendMenu(fileMenu, [], MenuId menuSaveAs, MFT_STRING "Save &As..."); AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR); AppendMenu(fileMenu, [], MenuId menuPageSetup, MFT_STRING "Page Set&up..."); AppendMenu(fileMenu, [], MenuId menuPrint, MFT_STRING "P&rint..."); AppendMenu(fileMenu, [], MenuId 0, MFT_SEPARATOR); AppendMenu(fileMenu, [], MenuId menuQuit, MFT_STRING "&Quit"); fileMenu end; val editMenu = let val editMenu = CreateMenu(); in AppendMenu(editMenu, [], MenuId menuCut, MFT_STRING "Cu&t"); AppendMenu(editMenu, [], MenuId menuCopy, MFT_STRING "&Copy"); AppendMenu(editMenu, [], MenuId menuPaste, MFT_STRING "&Paste"); AppendMenu(editMenu, [], MenuId menuFind, MFT_STRING "&Find"); editMenu end; val helpMenu = let val helpMenu = CreateMenu() in AppendMenu(helpMenu, [], MenuId menuAbout, MFT_STRING "&About mlEdit..."); helpMenu end in (* Create the main menu and append the sub-menus. *) val menu = CreateMenu(); val _ = AppendMenu(menu, [], MenuHandle fileMenu, MFT_STRING "&File"); val _ = AppendMenu(menu, [], MenuHandle editMenu, MFT_STRING "&Edit") val _ = AppendMenu(menu, [], MenuHandle helpMenu, MFT_STRING "&Help") end; (* The "state" of the editor. *) type state = { edit: HWND, (* Handle to the edit window. *) devMode: DEVMODE option, devNames: DEVNAMES option, (* Printer settings *) fileName: string } fun wndProc(hw: HWND, msg: Message, NONE): LRESULT * state option = ( case msg of WM_CREATE _ => (* Create an edit window and return it as the state. *) let val edit = CreateWindow{class = Class.Edit, name = "", (* The style does not include horizontal scrolling. That causes us to use word-wrapping. *) style = Edit.Style.flags[Edit.Style.WS_CHILD, Edit.Style.WS_VISIBLE, Edit.Style.WS_VSCROLL, (*Edit.Style.WS_HSCROLL, *)Edit.Style.ES_LEFT, Edit.Style.ES_MULTILINE, Edit.Style.ES_AUTOVSCROLL(*, Edit.Style.ES_AUTOHSCROLL*)], x = 0, y = 0, height = 0, width = 0, relation = ChildWindow{parent=hw, id=99}, instance = Globals.ApplicationInstance(), init = ()} (* Create a 10 point Courier font. *) val hDC = GetDC edit; val height = ~10 * GetDeviceCaps(hDC, LOGPIXELSY) div 72; val _ = ReleaseDC(edit, hDC); val hFont = CreateFont{height=height, width=0, escapement=0, orientation=0, weight=FW_DONTCARE, italic=false, underline=false, strikeOut=false, charSet=ANSI_CHARSET, outputPrecision=OUT_DEFAULT_PRECIS, clipPrecision=[CLIP_DEFAULT_PRECIS], quality=DEFAULT_QUALITY, pitch=FIXED_PITCH, family=FF_MODERN, faceName="Courier"} in SendMessage(edit, WM_SETFONT{font=hFont, redrawflag=false}); (LRESINT 0, SOME{edit=edit, devMode=NONE, devNames = NONE, fileName=""}) end | _ => (DefWindowProc(hw, msg), NONE) ) | wndProc(hw: HWND, msg: Message, state: state option as SOME{edit, devMode, devNames, fileName, ...}) = case msg of WM_SETFOCUS _ => (* If we get a focus request we set the focus to the edit window. *) (SetFocus(SOME edit); (DefWindowProc(hw, msg), state)) | WM_SIZE{height, width, ...} => (* If we get a size change we set the size of the edit window. *) (MoveWindow{hWnd=edit, x=0, y=0, height=height, width=width, repaint=true}; (DefWindowProc(hw, msg), state)) | WM_NCDESTROY => (* When the window is closed we send a QUIT message which exits from the application loop. *) (PostQuitMessage 0; (DefWindowProc(hw, msg), state)) | WM_CLOSE => (* User has pressed the Close box. If it's ok to close we could call DestroyWindow ourselves. Just as an example we return NONE which passes it to the default window procedure and does it for us. *) (if checkForSave(hw, edit, fileName) then DefWindowProc(hw, msg) else LRESINT 0, state) | WM_COMMAND{notifyCode = 0, wId, ...} => (* Menu selections arrive here. *) if wId = menuQuit then ( if checkForSave(hw, edit, fileName) then DestroyWindow hw else (); (LRESINT 0, state) ) else if wId = menuOpen then let val on = { owner = SOME hw, template = TemplateDefault, filter = [("Text Files (*.txt)", "*.txt"), ("ML Files (*.sml)", "*.sml"), ("All Files (*.*)", "*.*")], customFilter = NONE, filterIndex = 1, file = "", maxFile = 1000, fileTitle = "", initialDir = NONE, title = NONE, flags = OpenFileFlags.flags[OpenFileFlags.OFN_HIDEREADONLY], defExt = NONE } in case GetOpenFileName on of NONE => (LRESINT 0, state) | SOME {file, ...} => (* If it's been modified we need to ask before overwriting. *) if checkForSave(hw, edit, fileName) then (let val f = TextIO.openIn file (* Text input will convert CRNL to \n. We need to reverse the process. *) fun nlToCrnl s = String.translate(fn #"\n" => "\r\n" | c => String.str c) s in (* Should we save any existing file? *) SetWindowText(edit, nlToCrnl(TextIO.inputAll f)); TextIO.closeIn f; SendMessage(edit, EM_SETMODIFY{modified=false}); (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames, fileName=file}) end) handle _ => (MessageBox(SOME hw, SOME(concat["Unable to open - ", file, "\n"(*, exnMessage exn*)]), SOME "Open failure", MessageBoxStyle.MB_OK); (LRESINT 0, state)) else (LRESINT 0, state) end else if wId = menuSave andalso fileName <> "" then (* Save to the original file name if there is one. *) ( saveDocument(hw, fileName, edit); (LRESINT 0, state) ) else if wId = menuSaveAs orelse wId = menuSave (* andalso fileName = "" *) then ( case saveAsDocument(hw, edit) of NONE => (LRESINT 0, state) | SOME newName => (LRESINT 0, (* Use the selected file name. *) SOME{edit=edit, devMode=devMode, devNames=devNames, fileName=newName}) ) else if wId = menuFind then let open FindReplaceFlags (* Create a "Find" dialogue. *) val find = FindText{owner = hw, template = TemplateDefault, flags=flags[FR_DOWN, FR_HIDEWHOLEWORD], findWhat="", replaceWith="", bufferSize = 100} in ShowWindow(find, SW_SHOW); (LRESINT 0, state) end (* Cut, Copy and Paste are all handled by the Edit window. *) else if wId = menuCut then (SendMessage(edit, WM_CUT); (LRESINT 0, state)) else if wId = menuCopy then (SendMessage(edit, WM_COPY); (LRESINT 0, state)) else if wId = menuPaste then (SendMessage(edit, WM_PASTE); (LRESINT 0, state)) else if wId = menuPageSetup then ( (* Put up the dialogue and change the settings if necessary. *) case PageSetupDlg {owner=SOME hw, devMode=devMode, devNames=devNames, flags=PageSetupFlags.flags[], paperSize={x=0,y=0}, minMargin={top=0,bottom=0,left=0,right=0}, margin={top=0,bottom=0,left=0,right=0}} of NONE => (LRESINT 0, state) | SOME {devMode, devNames, ...} => (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames, fileName=fileName}) ) else if wId = menuPrint (* "Print" menu item. *) then let (* Put up the dialogue box to get the settings. *) val printSettings = PrintDlg {owner=SOME hw, devMode=devMode, devNames=devNames, context=NONE, flags=PrintDlgFlags.flags[PrintDlgFlags.PD_RETURNDC, PrintDlgFlags.PD_NOSELECTION], fromPage=1, toPage=65535, minPage=1, maxPage=65535, copies=1}; in case printSettings of SOME {devMode, devNames, context = SOME hdc, flags, fromPage, toPage, ...} => (let (* If the "Selection" button has been pressed we only print the selection. *) val printWhat = if PrintDlgFlags.anySet(flags, PrintDlgFlags.PD_SELECTION) then let val from = ref 0 and to = ref 0 val _ = SendMessage(edit, EM_GETSEL{startPos = from, endPos = to}) val text = GetWindowText edit in if !from < 0 orelse !from > size text orelse !to < 0 orelse !from > size text then "" else String.substring(text, !from, !to - !from) end else (* "All" button pressed or "Pages" pressed. *) GetWindowText edit; val textLength = size printWhat (* Tell the spooler to start the document. *) val _ = StartDoc(hdc, {docName=fileName, output=NONE, dType=NONE}) (* Find out how big a character is. From this we can work out how many characters fit on a line and how many lines on a page. Since we're using a fixed width font this is fairly easy. *) val _ = SetMapMode(hdc, MM_TEXT) val white = RGB{red=255, blue=255, green=255} val black = RGB{red=0, blue=0, green = 0} val pageWidth = GetDeviceCaps(hdc, HORZRES) and pageHeight = GetDeviceCaps(hdc, VERTRES) (* Create the same font as we're using on the screen. Since this is a fixed width font it makes calculating the number of characters fairly easy. *) val charHeight = ~10 * GetDeviceCaps(hdc, LOGPIXELSY) div 72; val hFont = CreateFont{height=charHeight, width=0, escapement=0, orientation=0, weight=FW_DONTCARE, italic=false, underline=false, strikeOut=false, charSet=ANSI_CHARSET, outputPrecision=OUT_DEFAULT_PRECIS, clipPrecision=[CLIP_DEFAULT_PRECIS], quality=DEFAULT_QUALITY, pitch=FIXED_PITCH, family=FF_MODERN, faceName="Courier"} val oldFont = SelectObject(hdc, hFont); (* Use this font. *) val textMetric = GetTextMetrics hdc; fun printPage pno index = let (* If we are printing a range of pages we need to check whether we are in the range. *) val printThisPage = if PrintDlgFlags.anySet(flags, PrintDlgFlags.PD_PAGENUMS) then pno >= fromPage andalso (pno <= toPage orelse toPage < 0) else true val pageRect = {top=0, left=0, bottom=pageHeight, right=pageWidth} (* Calculate the number of lines and columns. *) val nLines = pageHeight div #height textMetric; val nCols = pageWidth div #maxCharWidth textMetric (* Output the lines to fill the page. *) fun outputLines lineNo p = if lineNo >= nLines then p (* Return last pointer. *) else let (* Find the point to split the line. We stop at the end of the text, a line break, the last word break on the line or the maximum number of characters. *) fun findEnd lastBreak i = if i >= textLength then (textLength, textLength) else if i-p > nCols then ( case lastBreak of NONE => (* No breaks on the line - break just before here. *) (i-1, i-1) | SOME b => b (* Break at the last break. *) ) else if i < textLength - 1 andalso String.sub(printWhat, i) = #"\r" andalso String.sub(printWhat, i+1) = #"\n" then (* End of line - stop here. *) (i, i+2) else if Char.isSpace(String.sub(printWhat, i)) then (* Remember this. *) findEnd (SOME(i, i+1)) (i+1) (* Actually tabs need to be handled more carefully. *) else findEnd lastBreak (i+1) val (endLine, nextLine) = findEnd NONE p val thisLine = if p >= textLength then "" else String.substring(printWhat, p, endLine-p) in if printThisPage then ( TabbedTextOut(hdc, {x=0, y= lineNo * #height textMetric}, thisLine, [], 0); () ) else (); outputLines (lineNo+1) nextLine end val nextPage = if printThisPage then let val _ = StartPage hdc; (* Fill the page with white. *) val _ = SetBkColor(hdc, white); val _ = SetTextColor(hdc, black); val _ = ExtTextOut(hdc, {x=0, y=0}, [ETO_OPAQUE], SOME pageRect, "", []); (* Print the text. *) val next = outputLines 0 index in EndPage hdc; next end else (* Format the page but don't print it. *) outputLines 0 index in if nextPage >= size printWhat then () else printPage (pno+1) nextPage end val _: unit = printPage 1 0 in EndDoc hdc; (* Restore the original font and delete the new one. *) SelectObject(hdc, oldFont); DeleteObject(hFont); DeleteDC hdc; (* Now delete the device context. *) (LRESINT 0, SOME{edit=edit, devMode=devMode, devNames=devNames, fileName=fileName}) end (* If any of the functions failed simply delete the device context and return the original state. *) handle (exn as OS.SysErr _) => ( print (exnName exn); AbortDoc hdc; DeleteDC hdc; (LRESINT 0, state))) | _ => (LRESINT 0, state) end else if wId = menuAbout then (aboutmlEdit hw; (LRESINT 0, state)) else (DefWindowProc(hw, msg), state) | FINDMSGSTRING{flags, findWhat, ...} => if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_DIALOGTERM) then (* The "find" box is going away. *) ( SetFocus(SOME edit); (LRESINT 0, state) ) else if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_FINDNEXT) then (* The Find Next button has been pressed. *) let (* Get the whole of the text - not very efficient. *) val text = GetWindowText edit val startPos = ref 0 and endPos = ref 0 (* Get the starting position. *) val _ = SendMessage(edit, EM_GETSEL{startPos=startPos, endPos=endPos}) val isDown = FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_DOWN) (* Get the starting position for the search. *) val startPos = if isDown then !endPos else !startPos - 1 val findLen = size findWhat (* Get the options. *) local val toLower = String.map Char.toLower in val doMatch: string * string -> bool = if FindReplaceFlags.anySet(flags, FindReplaceFlags.FR_MATCHCASE) then op = else fn (s1, s2) => toLower s1 = toLower s2 end fun doFind p = let val isMatch = p >= 0 andalso size text - p >= size findWhat andalso doMatch(String.substring(text, p, findLen), findWhat) in if isMatch then p else if isDown then if p = size text then p (* Finish *) else doFind(p+1) else (* Find up *) if p = 0 then ~1 (* Finish *) else doFind(p-1) end val foundAt = doFind startPos in if foundAt >= 0 andalso foundAt + findLen < size text then ( SendMessage(edit, EM_SETSEL{startPos=foundAt, endPos=foundAt + findLen}); SendMessage(edit, EM_SCROLLCARET); () ) else MessageBeep(MessageBoxStyle.fromWord 0wxFFFFFFFF); (LRESINT 0, state) end else (DefWindowProc(hw, msg), state) | _ => (DefWindowProc(hw, msg), state) (* If this document has been modified we want to ask before quitting or opening a new document. *) and checkForSave(hw, edit, fileName) = case SendMessage(edit, EM_GETMODIFY) of LRESINT 0 => true (* Unmodified - continue. *) | _ => let val res = MessageBox(SOME hw, SOME "Save document?", SOME "Confirm", MessageBoxStyle.MB_YESNOCANCEL) in if res = IDYES then if fileName = "" then saveAsDocument(hw, edit) <> NONE else saveDocument(hw, fileName, edit) else if res = IDNO then true (* Continue anyway. *) else false (* Cancel - don't exit or open. *) end and saveDocument(hw, fileName, edit) = (* Write the document to the given file name. *) let (* Write the file as binary. That way we don't need to convert CRNL to NL before writing. *) val f = BinIO.openOut fileName val s = GetWindowText edit in BinIO.output(f, Byte.stringToBytes s); BinIO.closeOut f; (* Document is now unmodified. *) SendMessage(edit, EM_SETMODIFY{modified=false}); true (* Succeeded. *) end handle _ => (MessageBox(SOME hw, SOME(concat["Unable to save to - ", fileName, "\n"(*, exnMessage exn*)]), SOME "Open failure", MessageBoxStyle.MB_OK); false) and saveAsDocument(hw, edit) = (* Ask for the file name before trying to save. *) let val on = { owner = SOME hw, template = TemplateDefault, filter = [("Text Files (*.txt)", "*.txt"), ("ML Files (*.sml)", "*.sml"), ("All Files (*.*)", "*.*")], customFilter = NONE, filterIndex = 1, file = "", maxFile = 1000, fileTitle = "", initialDir = NONE, title = NONE, flags = OpenFileFlags.flags[], defExt = NONE } in case GetSaveFileName on of NONE => NONE | SOME {file, filterIndex, fileTitle, ...} => let (* If the user typed a file name without an extension use the extension from the appropriate filter. *) val suffix = case filterIndex of 1 => ".txt" | 2 => ".sml" | _ => "" val fileName = if Char.contains fileTitle #"." then file else file ^ suffix in if saveDocument(hw, fileName, edit) then SOME file (* Return the selected name. *) else NONE end end and aboutmlEdit hw = (* Called when the user selects "About..." from the help menu. *) let (* Dialogue template containing three items: an OK button, a static picture and a piece of text. *) val pictureId = 1000 (* Could use any number here. *) open Static.Style val template = {x = 0, y = 0, cx = 210, cy = 94, font = SOME (8, "MS Sans Serif"), menu = NONE, class = NONE,title = "About mlEdit", extendedStyle = 0, style = flags[WS_POPUP, WS_CAPTION], items = [{x = 73, y = 62, cx = 50, cy = 14, id = 1, class = DLG_BUTTON (flags[WS_CHILD, WS_VISIBLE, WS_TABSTOP]), title = DLG_TITLESTRING "OK", creationData = NONE, extendedStyle = 0}, {x = 7, y = 7, cx = 32, cy = 32, id = pictureId, class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, SS_ICON]), title = DLG_TITLESTRING "", creationData = NONE, extendedStyle = 0}, {x = 15, y = 39, cx = 180, cy = 21, id = 65535, class = DLG_STATIC (flags[WS_CHILD, WS_VISIBLE, WS_GROUP]), title = DLG_TITLESTRING "mlEdit - An example of Windows programming in Poly/ML\ \\nCopyright David C.J. Matthews 2001-7", creationData = NONE, extendedStyle = 0}] } (* Dialogue procedure. *) fun dlgProc(dial, WM_INITDIALOG _, ()) = ( (* Send a message to the picture control to set it to this icon. *) SendMessage(GetDlgItem(dial, pictureId), STM_SETICON{icon=polyIcon}); (LRESINT 1, ()) ) | dlgProc(dial, WM_COMMAND{notifyCode = 0, wId=1 (* OK button *), ...}, ()) = (* When the OK button is pressed we end the dialogue. *) (EndDialog(dial, 1); (LRESINT 1, ()) ) | dlgProc _ = (LRESINT 0, ()) in DialogBoxIndirect(app, template, hw, dlgProc, ()); () end val className = "mlEditWindowClass" (* Register a class for the top-level window. Use the Poly icon from the application. *) val myWindowClass = RegisterClassEx{style = Class.Style.flags[], wndProc = wndProc, hInstance = app, hIcon = SOME polyIcon, hCursor = NONE, hbrBackGround = NONE, menuName = NONE, className = className, hIconSm = NONE}; val w = CreateWindow{class = myWindowClass, name = "mlEdit", style = Window.Style.WS_OVERLAPPEDWINDOW, x = CW_USEDEFAULT, y = CW_USEDEFAULT, height = CW_USEDEFAULT, width = CW_USEDEFAULT, relation = PopupWindow menu, instance = app, init = NONE}; in ShowWindow(w, SW_SHOW); SetForegroundWindow w; RunApplication(); (* Must unregister the class before returning otherwise RegisterClass will fail if we call mlEdit again. *) UnregisterClass(className, app) end; polyml-5.7.1/mlsource/extra/Win/Examples/bitViewer.sml0000644000175000017500000002612313204034553021747 0ustar daviddavid(* Copyright (c) 2001-7 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Example bitmap viewer. *) fun bitViewer() = let open Window Message Class Clipboard Menu Bitmap DeviceContext Brush Metafile open Font Color Painting Globals val app = ApplicationInstance() (* Identifiers for the menu items. *) val menuCopy = 1 and menuPaste = 2 local val editMenu = let val editMenu = CreateMenu(); in AppendMenu(editMenu, [], MenuId menuCopy, MFT_STRING "&Copy"); AppendMenu(editMenu, [], MenuId menuPaste, MFT_STRING "&Paste"); editMenu end; in (* Create the main menu and append the sub-menu. *) val menu = CreateMenu(); val _ = AppendMenu(menu, [], MenuHandle editMenu, MFT_STRING "&Edit") end; (* Window procedure for the window. *) fun wndProc(w: HWND, WM_CREATE _, NONE) = let (* Create a sub-window to display a bitmap. *) val static = CreateWindow{class = Static, name = "", style = Static.Style.flags[Static.Style.WS_CHILD, Static.Style.WS_VISIBLE, Static.Style.SS_BITMAP], x = CW_USEDEFAULT, y = CW_USEDEFAULT, height = CW_USEDEFAULT, width = CW_USEDEFAULT, relation = ChildWindow{parent=w, id=99 (* Not used *)}, instance = app, init = ()} in (LRESINT 0, SOME static) (* Return it as the "state". *) end | wndProc(w: HWND, WM_PAINT, state as SOME static) = (* WM_PAINT is sent to the window when at least some of it needs to be redrawn. *) let (* Fill this window with grey. We use this to fill all the area that isn't occupied by the subwindow containing the bitmap. A simpler way of doing this is to define a background colour for the class in which case we don't have to process this message at all. *) val (hdc, ps) = BeginPaint w val grey = RGB{red=128, blue=128, green=128} val _ = SetBkColor(hdc, grey); (* ExtTextOut with the ETO_OPAQUE is a common way of filling an area with a single colour. *) val _ = ExtTextOut(hdc, {x=0, y=0}, [ETO_OPAQUE], SOME(#paint ps), "", []); in EndPaint(w, ps); (LRESINT 0, state) end | wndProc(w: HWND, WM_SIZE {width, height, ...}, state as SOME static) = (* The main window has been resized. Recentre the child window. *) let val subRect = GetClientRect static in MoveWindow{hWnd = static, x = (width - #right subRect) div 2, y = (height - #bottom subRect) div 2, height = #bottom subRect, width = #right subRect, repaint = true}; (LRESINT 0, state) end | wndProc(w: HWND, msg as WM_COMMAND{notifyCode = 0, wId = 1 (* menuCopy*), control}, state as SOME static) = (* WM_COMMAND messages are sent when a menu item is pulled down. wId is the value we set as the ID when we created the menu. *) (* Copy the bitmap to the window as a device-independent bitmap. We could equally just copy the bitmap handle and let the clipboard do the work. *) let val LRESHANDLE (bitMap: HBITMAP) = SendMessage(static, STM_GETIMAGE{imageType=IMAGE_BITMAP}) in if isHNull bitMap then (DefWindowProc(w, msg), state) else ( OpenClipboard(SOME w); let val _ = EmptyClipboard(); (* Become owner. *) val winDC = GetDC static (* The first call returns the header of the bitmap that will be created. We can use all the defaults in it but we need to know the height which is the number of scan lines. *) val dibHdr as {height, ...} = getBitmapInfoHdr(GetDIBits(winDC, bitMap, 0, 0, NONE)) val dib = GetDIBits(winDC, bitMap, 0, height, SOME dibHdr) val _ = ReleaseDC(static, winDC) in SetClipboardData(CH_DIB dib) end (* Make sure the clipboard is closed if anything goes wrong. *) handle exn => (CloseClipboard(); raise exn); CloseClipboard(); (LRESINT 0, state) ) end | wndProc(w: HWND, msg as WM_COMMAND{notifyCode = 0, wId = 2 (* menuPaste*), control}, state as SOME static) = ( case GetPriorityClipboardFormat[CF_DIB, CF_BITMAP, CF_ENHMETAFILE] of (* Some drawing programs paste metafile information rather than bitmaps. *) SOME CF_ENHMETAFILE => ( OpenClipboard(SOME w); let val CH_ENHMETAFILE emh = GetClipboardData CF_ENHMETAFILE; (* Get the bounding frame of this metafile. This gives us the size of the bitmap. *) val hdr as {bounds = { right, left, top, bottom }, ... } = GetEnhMetaFileHeader emh val winDC = GetDC static (* In order to write to a new bitmap we first have to create a memory device context and select a new bitmap into it. *) val memDC = CreateCompatibleDC winDC val emfSize: SIZE = {cx = right - left, cy = bottom - top} val newbm = CreateCompatibleBitmap(winDC, right - left, bottom - top) (* Select the bitmap into the memory DC to draw to it. *) val oldBM = SelectObject(memDC, newbm); (* Play the metafile *) val _ = PlayEnhMetaFile(memDC, emh, {top = 0, left = 0, right = right - left, bottom = bottom - top }) (* Deselect the bitmap by selecting in the original (most likely NULL). *) val _ = SelectObject(memDC, oldBM); val _ = DeleteDC memDC (* Get rid of the device context. *) val _ = ReleaseDC(static, winDC) in setBitmap(newbm, w, static) end (* Make sure the clipboard is closed if anything goes wrong. *) handle exn => (CloseClipboard(); raise exn); CloseClipboard(); (LRESINT 0, state) ) | SOME CF_DIB => ( OpenClipboard(SOME w); let val CH_DIB dib = GetClipboardData CF_DIB; val winDC = GetDC static val { width, height, ...} = getBitmapInfoHdr dib (* Height could be negative for a top-down DIB. *) val newbm = CreateCompatibleBitmap(winDC, width, abs height) val _ = SetDIBits(winDC, newbm, 0, abs height, dib) val _ = ReleaseDC(static, winDC) in setBitmap(newbm, w, static) end (* Make sure the clipboard is closed if anything goes wrong. *) handle exn => (CloseClipboard(); raise exn); CloseClipboard(); (LRESINT 0, state) ) (* The clipboard synthesises DIBs from bitmaps so this code will never be executed. It's included for information only. *) | SOME CF_BITMAP => ( OpenClipboard(SOME w); let val CH_BITMAP hb = GetClipboardData CF_BITMAP; (* Get the size of the bitmap *) val GO_Bitmap (bmp as {widthBytes, height, ...}) = GetObject hb (* Create a copy. *) val newb = CreateBitmapIndirect bmp val bytes = widthBytes*height val v = GetBitmapBits(hb, bytes) val _ = SetBitmapBits(newb, v); in setBitmap(newb, w, static) end (* Make sure the clipboard is closed if anything goes wrong. *) handle exn => (CloseClipboard(); raise exn); CloseClipboard(); (LRESINT 0, state) ) | _ => (DefWindowProc(w, msg), state) (* Nothing we can use. *) ) | wndProc(w: HWND, msg as WM_NCDESTROY, state) = (* When the window is closed we send a QUIT message which exits from the application loop. *) (PostQuitMessage 0; (DefWindowProc(w, msg), state)) | wndProc(w: HWND, msg: Message, state) = (DefWindowProc(w, msg), state) (* Anything else. *) and setBitmap(newb: HBITMAP, main: HWND, static: HWND) = let (* Set this copy as the new image and get back the old one. *) val LRESHANDLE oldBM = SendMessage(static, STM_SETIMAGE{image=newb, imageType=IMAGE_BITMAP}) (* Get the size of the main window and the subwindow. *) val mainRect = GetClientRect main and subRect = GetClientRect static in (* If there was previously a bitmap we have to delete it. *) if isHNull oldBM then () else DeleteObject oldBM; (* Centre the window. *) MoveWindow{hWnd = static, x = (#right mainRect - #right subRect) div 2, y = (#bottom mainRect - #bottom subRect) div 2, height = #bottom subRect, width = #right subRect, repaint = true} end (* Register a window class. *) val at = Class.RegisterClassEx{style = Class.Style.flags[], wndProc = wndProc, hInstance = app, hIcon = NONE, hCursor = NONE, hbrBackGround = NONE, menuName = NONE, className = "bitViewerClass", hIconSm = NONE}; val w = CreateWindow{class = at, name = "bitViewer", style = Window.Style.WS_OVERLAPPEDWINDOW, x = CW_USEDEFAULT, y = CW_USEDEFAULT, height = CW_USEDEFAULT, width = CW_USEDEFAULT, relation = PopupWindow menu, instance = app, init = NONE}; in ShowWindow(w, SW_SHOW); SetForegroundWindow w; RunApplication(); UnregisterClass("bitViewerClass", app) end; polyml-5.7.1/mlsource/extra/Win/Examples/dialTest.sml0000644000175000017500000001012013204034553021546 0ustar daviddavid(* Copyright (c) 2001-7 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Test routine for dialogue. Tests various messages. *) fun dlgProc (h, Message.WM_INITDIALOG _, ()) = (Message.LRESINT 1, ()) | dlgProc (h, Message.WM_COMMAND{notifyCode = 0, wId, ...}, ()) = (if wId = MessageBox.IDOK orelse wId = MessageBox.IDCANCEL then (Dialog.EndDialog(h, wId); Message.PostQuitMessage 0) else (); (Message.LRESINT 1, ())) | dlgProc msg = ((*PolyML.print msg;*)(Message.LRESINT 0, ())); val dial = ref Base.hwndNull; local open Dialog Window.Style in val template = {x = 0, y = 0, cx = 215, cy = 135, font = SOME (8, "MS Sans Serif"), menu = NONE, class = NONE, style = flags[WS_POPUP, WS_CAPTION, WS_SYSMENU], title = "Dialogue", extendedStyle = 0, items = [{x = 158, y = 7, cx = 50, cy = 14, id = 1, creationData = NONE, extendedStyle = 0, class = DLG_BUTTON(flags[WS_CHILD, WS_VISIBLE, WS_TABSTOP]), title = DLG_TITLESTRING "OK"}, {x = 158, y = 24, cx = 50, cy = 14, id = 2,creationData = NONE, extendedStyle = 0, class = DLG_BUTTON(flags[WS_CHILD, WS_VISIBLE, WS_TABSTOP]), title = DLG_TITLESTRING "Cancel"}, {x = 45, y = 67, cx = 48, cy = 61, id = 1003, title = DLG_TITLESTRING "", creationData = NONE, extendedStyle = 0, class = DLG_COMBOBOX(flags[WS_CHILD, WS_VISIBLE, WS_VSCROLL, WS_TABSTOP])}, {x = 23, y = 26, cx = 19, cy = 8, id = 65535, creationData = NONE, extendedStyle = 0, class = DLG_STATIC(flags[WS_CHILD, WS_VISIBLE, WS_GROUP]), title = DLG_TITLESTRING "Static"}, {x = 64, y = 24, cx = 40, cy = 14, id = 1000, creationData = NONE, extendedStyle = 0, class = DLG_EDIT(flags[WS_CHILD, WS_VISIBLE, WS_BORDER, WS_TABSTOP]), title = DLG_TITLESTRING ""}, {x = 14, y = 47, cx = 103, cy = 11, id = 1001, creationData = NONE, extendedStyle = 0, class = DLG_SCROLLBAR(flags[WS_CHILD, WS_VISIBLE]), title = DLG_TITLESTRING ""}, {x = 136, y = 46, cx = 58, cy = 72, id = 1002, creationData = NONE, extendedStyle = 0, class = DLG_LISTBOX (flags[WS_CHILD, WS_VISIBLE, WS_BORDER, WS_VSCROLL, WS_TABSTOP]), title = DLG_TITLESTRING ""}]} fun makedial() = CreateDialogIndirect(Globals.ApplicationInstance(), template, Globals.MainWindow(), dlgProc, ()); end; (* val hi = Resource.LoadLibrary "C:\\Source Files\\DialogueDLL\\Debug\\DialogueDLL.dll"; fun makedial() = Dialog.CreateDialog(hi, Resource.IdAsString "MYDIALOGUE", Globals.MainWindow(), dlgProc, ()); *) (* The dialogue has to be created by the thread that will handle its messages. *) fun runDialogue() = ( dial := makedial(); Window.ShowWindow(!dial, Window.SW_SHOW); Window.SetForegroundWindow (!dial); Message.RunApplication(); () ); Thread.Thread.fork(runDialogue, []); val combo = Dialog.GetDlgItem(!dial, 1003); val scroll = Dialog.GetDlgItem(!dial, 1001); val listbox = Dialog.GetDlgItem(!dial, 1002); val info = ref {minPos = 10, maxPos = 20, pageSize = 4, pos = 15, trackPos = 0}; Message.SendMessage(scroll, Message.SBM_SETSCROLLINFO{info= !info, options=Scrollbar.SIF_ALL}); Message.SendMessage(scroll, Message.SBM_GETSCROLLINFO{info=info, options=Scrollbar.SIF_ALL}); !info; Message.SendMessage(combo, Message.CB_DIR{attrs = [], fileSpec ="C:\\*"}); Message.SendMessage(combo, Message.CB_DIR{attrs = [], fileSpec ="C:\\*"}); polyml-5.7.1/mlsource/extra/Win/DragDrop.sml0000644000175000017500000000537513204034553017741 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure DragDrop: sig type HDROP type HWND (* = Window.HWND *) type POINT = { x: int, y: int } val DragAcceptFiles : HWND * bool -> unit val DragFinish : HDROP -> unit val DragQueryFile : HDROP -> string list val DragQueryPoint : HDROP -> POINT * bool end = struct local open Foreign Base in type HDROP = HDROP and HWND = HWND type POINT = POINT (* Call DragAcceptFiles to accept files. *) val DragAcceptFiles = winCall2 (shell "DragAcceptFiles") (cHWND,cBool) cVoid (* Call DragFinish when finished processing a WM_DROP message. *) and DragFinish = winCall1 (shell "DragFinish") (cHDROP) cVoid (* Call DragQueryFile to get the file(s). *) local val dragQueryFile = winCall4 (shell "DragQueryFileA") (cHDROP,cUint,cPointer,cUint) cUint in fun DragQueryFile (hd: HDROP): string list = let val nfiles = dragQueryFile(hd, ~1, Memory.null, 0) fun getFile n = let val buffsize = dragQueryFile(hd, n, Memory.null, 0) + 1 (* Must add one for NULL *) open Memory val buff = malloc(Word.fromInt buffsize) val _ = dragQueryFile(hd, n, buff, buffsize) handle ex => (free buff; raise ex) in fromCstring buff before free buff end in List.tabulate(nfiles, getFile) end end (* Call DragQueryPoint to find out where to drop the file(s). *) local val dragQueryPoint = winCall2 (shell "DragQueryPoint") (cHDROP, cStar cPoint) cBool in fun DragQueryPoint (hd: HDROP): POINT * bool = let val r = ref {x=0, y=0} val res = dragQueryPoint(hd, r) in (!r, res) end end end end; polyml-5.7.1/mlsource/extra/Win/LocaleBase.sml0000644000175000017500000002320413204034553020220 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure LocaleBase = struct local open Foreign Base in datatype PrimaryLanguage = LANG_AFRIKAANS | LANG_ICELANDIC | LANG_ALBANIAN | LANG_INDONESIAN | LANG_ARABIC | LANG_ITALIAN | LANG_BASQUE | LANG_JAPANESE | LANG_BELARUSIAN | LANG_KOREAN | LANG_BULGARIAN | LANG_LATVIAN | LANG_CATALAN | LANG_LITHUANIAN | LANG_CHINESE | LANG_NEUTRAL | LANG_CROATIAN | LANG_NORWEGIAN | LANG_CZECH | LANG_POLISH | LANG_DANISH | LANG_PORTUGUESE | LANG_DUTCH | LANG_ROMANIAN | LANG_ENGLISH | LANG_RUSSIAN | LANG_ESTONIAN | LANG_SERBIAN | LANG_FAEROESE | LANG_SLOVAK | LANG_FARSI | LANG_SLOVENIAN | LANG_FINNISH | LANG_SPANISH | LANG_FRENCH | LANG_SWEDISH | LANG_GERMAN | LANG_THAI | LANG_GREEK | LANG_TURKISH | LANG_HEBREW | LANG_UKRANIAN | LANG_HUNGARIAN | LANG_VIETNAMESE datatype SubLanguage = SUBLANG_ARABIC_SAUDI_ARABIA | SUBLANG_GERMAN | SUBLANG_ARABIC_IRAQ | SUBLANG_GERMAN_SWISS | SUBLANG_ARABIC_EGYPT | SUBLANG_GERMAN_AUSTRIAN | SUBLANG_ARABIC_LIBYA | SUBLANG_GERMAN_LUXEMBOURG | SUBLANG_ARABIC_ALGERIA | SUBLANG_GERMAN_LIECHTENSTEIN | SUBLANG_ARABIC_MOROCCO | SUBLANG_ITALIAN | SUBLANG_ARABIC_TUNISIA | SUBLANG_ITALIAN_SWISS | SUBLANG_ARABIC_OMAN | SUBLANG_KOREAN | SUBLANG_ARABIC_YEMEN | SUBLANG_KOREAN_JOHAB | SUBLANG_ARABIC_SYRIA | SUBLANG_NEUTRAL | SUBLANG_ARABIC_JORDAN | SUBLANG_NORWEGIAN_BOKMAL | SUBLANG_ARABIC_LEBANON | SUBLANG_NORWEGIAN_NYNORSK | SUBLANG_ARABIC_KUWAIT | SUBLANG_PORTUGUESE | SUBLANG_ARABIC_UAE | SUBLANG_PORTUGUESE_BRAZILIAN | SUBLANG_ARABIC_BAHRAIN | SUBLANG_SERBIAN_LATIN | SUBLANG_ARABIC_QATAR | SUBLANG_SERBIAN_CYRILLIC | SUBLANG_CHINESE_TRADITIONAL | SUBLANG_SPANISH | SUBLANG_CHINESE_SIMPLIFIED | SUBLANG_SPANISH_MEXICAN | SUBLANG_CHINESE_HONGKONG | SUBLANG_SPANISH_MODERN | SUBLANG_CHINESE_SINGAPORE | SUBLANG_SPANISH_GUATEMALA | SUBLANG_DEFAULT | SUBLANG_SPANISH_COSTA_RICA | SUBLANG_DUTCH | SUBLANG_SPANISH_PANAMA | SUBLANG_DUTCH_BELGIAN | SUBLANG_SPANISH_DOMINICAN_REPUBLIC | SUBLANG_ENGLISH_US | SUBLANG_SPANISH_VENEZUELA | SUBLANG_ENGLISH_UK | SUBLANG_SPANISH_COLOMBIA | SUBLANG_ENGLISH_AUS | SUBLANG_SPANISH_PERU | SUBLANG_ENGLISH_CAN | SUBLANG_SPANISH_ARGENTINA | SUBLANG_ENGLISH_NZ | SUBLANG_SPANISH_ECUADOR | SUBLANG_ENGLISH_EIRE | SUBLANG_SPANISH_CHILE | SUBLANG_ENGLISH_SOUTH_AFRICA | SUBLANG_SPANISH_URUGUAY | SUBLANG_ENGLISH_JAMAICA | SUBLANG_SPANISH_PARAGUAY | SUBLANG_ENGLISH_CARIBBEAN | SUBLANG_SPANISH_BOLIVIA | SUBLANG_ENGLISH_BELIZE | SUBLANG_SPANISH_EL_SALVADOR | SUBLANG_ENGLISH_TRINIDAD | SUBLANG_SPANISH_HONDURAS | SUBLANG_FRENCH | SUBLANG_SPANISH_NICARAGUA | SUBLANG_FRENCH_BELGIAN | SUBLANG_SPANISH_PUERTO_RICO | SUBLANG_FRENCH_CANADIAN | SUBLANG_SWEDISH | SUBLANG_FRENCH_SWISS | SUBLANG_SWEDISH_FINLAND | SUBLANG_FRENCH_LUXEMBOURG | SUBLANG_SYS_DEFAULT local val tab = [ (LANG_NEUTRAL, 0x00), (LANG_AFRIKAANS, 0x36), (LANG_ALBANIAN, 0x1c), (LANG_ARABIC, 0x01), (LANG_BASQUE, 0x2d), (LANG_BELARUSIAN, 0x23), (LANG_BULGARIAN, 0x02), (LANG_CATALAN, 0x03), (LANG_CHINESE, 0x04), (LANG_CROATIAN, 0x1a), (LANG_CZECH, 0x05), (LANG_DANISH, 0x06), (LANG_DUTCH, 0x13), (LANG_ENGLISH, 0x09), (LANG_ESTONIAN, 0x25), (LANG_FAEROESE, 0x38), (LANG_FARSI, 0x29), (LANG_FINNISH, 0x0b), (LANG_FRENCH, 0x0c), (LANG_GERMAN, 0x07), (LANG_GREEK, 0x08), (LANG_HEBREW, 0x0d), (LANG_HUNGARIAN, 0x0e), (LANG_ICELANDIC, 0x0f), (LANG_INDONESIAN, 0x21), (LANG_ITALIAN, 0x10), (LANG_JAPANESE, 0x11), (LANG_KOREAN, 0x12), (LANG_LATVIAN, 0x26), (LANG_LITHUANIAN, 0x27), (LANG_NORWEGIAN, 0x14), (LANG_POLISH, 0x15), (LANG_PORTUGUESE, 0x16), (LANG_ROMANIAN, 0x18), (LANG_RUSSIAN, 0x19), (LANG_SERBIAN, 0x1a), (LANG_SLOVAK, 0x1b), (LANG_SLOVENIAN, 0x24), (LANG_SPANISH, 0x0a), (LANG_SWEDISH, 0x1d), (LANG_THAI, 0x1e), (LANG_TURKISH, 0x1f), (LANG_UKRANIAN, 0x22), (LANG_VIETNAMESE, 0x2a)] in val (fromPrim, toPrim) = tableLookup(tab, NONE) end local val tab = [ (SUBLANG_NEUTRAL, 0x00), (SUBLANG_DEFAULT, 0x01), (SUBLANG_SYS_DEFAULT, 0x02), (SUBLANG_ARABIC_SAUDI_ARABIA, 0x01), (SUBLANG_ARABIC_IRAQ, 0x02), (SUBLANG_ARABIC_EGYPT, 0x03), (SUBLANG_ARABIC_LIBYA, 0x04), (SUBLANG_ARABIC_ALGERIA, 0x05), (SUBLANG_ARABIC_MOROCCO, 0x06), (SUBLANG_ARABIC_TUNISIA, 0x07), (SUBLANG_ARABIC_OMAN, 0x08), (SUBLANG_ARABIC_YEMEN, 0x09), (SUBLANG_ARABIC_SYRIA, 0x0a), (SUBLANG_ARABIC_JORDAN, 0x0b), (SUBLANG_ARABIC_LEBANON, 0x0c), (SUBLANG_ARABIC_KUWAIT, 0x0d), (SUBLANG_ARABIC_UAE, 0x0e), (SUBLANG_ARABIC_BAHRAIN, 0x0f), (SUBLANG_ARABIC_QATAR, 0x10), (SUBLANG_CHINESE_TRADITIONAL, 0x01), (SUBLANG_CHINESE_SIMPLIFIED, 0x02), (SUBLANG_CHINESE_HONGKONG, 0x03), (SUBLANG_CHINESE_SINGAPORE, 0x04), (SUBLANG_DUTCH, 0x01), (SUBLANG_DUTCH_BELGIAN, 0x02), (SUBLANG_ENGLISH_US, 0x01), (SUBLANG_ENGLISH_UK, 0x02), (SUBLANG_ENGLISH_AUS, 0x03), (SUBLANG_ENGLISH_CAN, 0x04), (SUBLANG_ENGLISH_NZ, 0x05), (SUBLANG_ENGLISH_EIRE, 0x06), (SUBLANG_ENGLISH_SOUTH_AFRICA, 0x07), (SUBLANG_ENGLISH_JAMAICA, 0x08), (SUBLANG_ENGLISH_CARIBBEAN, 0x09), (SUBLANG_ENGLISH_BELIZE, 0x0a), (SUBLANG_ENGLISH_TRINIDAD, 0x0b), (SUBLANG_FRENCH, 0x01), (SUBLANG_FRENCH_BELGIAN, 0x02), (SUBLANG_FRENCH_CANADIAN, 0x03), (SUBLANG_FRENCH_SWISS, 0x04), (SUBLANG_FRENCH_LUXEMBOURG, 0x05), (SUBLANG_GERMAN, 0x01), (SUBLANG_GERMAN_SWISS, 0x02), (SUBLANG_GERMAN_AUSTRIAN, 0x03), (SUBLANG_GERMAN_LUXEMBOURG, 0x04), (SUBLANG_GERMAN_LIECHTENSTEIN, 0x05), (SUBLANG_ITALIAN, 0x01), (SUBLANG_ITALIAN_SWISS, 0x02), (SUBLANG_KOREAN, 0x01), (SUBLANG_KOREAN_JOHAB, 0x02), (SUBLANG_NORWEGIAN_BOKMAL, 0x01), (SUBLANG_NORWEGIAN_NYNORSK, 0x02), (SUBLANG_PORTUGUESE, 0x02), (SUBLANG_PORTUGUESE_BRAZILIAN, 0x01), (SUBLANG_SERBIAN_LATIN, 0x02), (SUBLANG_SERBIAN_CYRILLIC, 0x03), (SUBLANG_SPANISH, 0x01), (SUBLANG_SPANISH_MEXICAN, 0x02), (SUBLANG_SPANISH_MODERN, 0x03), (SUBLANG_SPANISH_GUATEMALA, 0x04), (SUBLANG_SPANISH_COSTA_RICA, 0x05), (SUBLANG_SPANISH_PANAMA, 0x06), (SUBLANG_SPANISH_DOMINICAN_REPUBLIC, 0x07), (SUBLANG_SPANISH_VENEZUELA, 0x08), (SUBLANG_SPANISH_COLOMBIA, 0x09), (SUBLANG_SPANISH_PERU, 0x0a), (SUBLANG_SPANISH_ARGENTINA, 0x0b), (SUBLANG_SPANISH_ECUADOR, 0x0c), (SUBLANG_SPANISH_CHILE, 0x0d), (SUBLANG_SPANISH_URUGUAY, 0x0e), (SUBLANG_SPANISH_PARAGUAY, 0x0f), (SUBLANG_SPANISH_BOLIVIA, 0x10), (SUBLANG_SPANISH_EL_SALVADOR, 0x11), (SUBLANG_SPANISH_HONDURAS, 0x12), (SUBLANG_SPANISH_NICARAGUA, 0x13), (SUBLANG_SPANISH_PUERTO_RICO, 0x14), (SUBLANG_SWEDISH, 0x01), (SUBLANG_SWEDISH_FINLAND, 0x02)] in val (fromSub, toSub) = tableLookup(tab, NONE) end datatype LANGID = MAKELANGID of PrimaryLanguage * SubLanguage local fun fromLANGID(MAKELANGID(prim, sub)) = IntInf.orb(fromPrim prim, IntInf.<<(fromSub sub, 0w10)) (* It seems that GetUserDefaultLangID at least sets the top word to something odd so we mask both parts. *) fun toLANGID l = MAKELANGID( toPrim(IntInf.andb(l, 0x3ff)), toSub(IntInf.andb(IntInf.~>>(l, 0w10), 0x3f)) ) in val LANGID: LANGID conversion = absConversion {abs = toLANGID, rep = fromLANGID} cUshort end end end; polyml-5.7.1/mlsource/extra/Win/Caret.sml0000644000175000017500000000671113204034553017270 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Caret functions. *) structure Caret : sig type HWND and HBITMAP type POINT = { x: int, y: int } datatype caretShape = CaretBitmap of HBITMAP | CaretBlack of {width: int, height: int} | CaretGrey of {width: int, height: int} val CreateCaret : HWND * caretShape -> unit val DestroyCaret : unit -> unit val GetCaretBlinkTime : unit -> Time.time val GetCaretPos : unit -> POINT val HideCaret : HWND -> unit val SetCaretBlinkTime : Time.time -> unit val SetCaretPos : POINT -> unit val ShowCaret : HWND -> unit end = struct local open Foreign open Base open GdiBase in type HWND = HWND and HBITMAP = HBITMAP and POINT = POINT datatype caretShape = CaretBlack of {height: int, width: int} | CaretGrey of {height: int, width: int} | CaretBitmap of HBITMAP local val createCaret = winCall4 (user "CreateCaret") (cHWND, cHBITMAP, cInt, cInt) (successState "CreateCaret") val intAsHgdi = handleOfVoidStar o Memory.sysWord2VoidStar o SysWord.fromInt in (* The x and y value are only used if the bitmap is not 0 or 1. *) fun CreateCaret(hw, CaretBlack{height, width}) = createCaret(hw, hNull, width, height) | CreateCaret(hw, CaretGrey{height, width}) = createCaret(hw, intAsHgdi 1, width, height) | CreateCaret(hw, CaretBitmap hb) = createCaret(hw, hb, 0, 0) end val DestroyCaret = winCall0 (user "DestroyCaret") () (successState "DestroyCaret") val GetCaretBlinkTime = Time.fromMilliseconds o (winCall0 (user "GetCaretBlinkTime") () cUint) val HideCaret = winCall1 (user "HideCaret") (cHWND) (successState "HideCaret") val SetCaretBlinkTime = (winCall1 (user "SetCaretBlinkTime") cUint (successState "SetCaretBlinkTime")) o Time.toMilliseconds (* The result of ShowCaret may be false either if there was an error or if HideCaret was called more than once. *) val ShowCaret = winCall1 (user "ShowCaret") (cHWND) (successState "ShowCaret") local val getCaretPos = winCall1 (user "GetCaretPos") (cStar cPoint) (successState "GetCaretPos") val setCaretPos = winCall2 (user "SetCaretPos") (cInt, cInt) (successState "SetCaretPos") in fun GetCaretPos() = let val v = ref {x=0, y=0 } in getCaretPos v; !v end and SetCaretPos({x, y}: POINT) = setCaretPos(x, y) end end end; polyml-5.7.1/mlsource/extra/Win/WinSystem.sml0000644000175000017500000001654313204034553020200 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure WinSystem : sig type SystemMetrics val SM_ARRANGE : SystemMetrics val SM_CLEANBOOT : SystemMetrics val SM_CMOUSEBUTTONS : SystemMetrics val SM_CXBORDER : SystemMetrics val SM_CXCURSOR : SystemMetrics val SM_CXDLGFRAME : SystemMetrics val SM_CXDOUBLECLK : SystemMetrics val SM_CXDRAG : SystemMetrics val SM_CXEDGE : SystemMetrics val SM_CXFIXEDFRAME : SystemMetrics val SM_CXFRAME : SystemMetrics val SM_CXFULLSCREEN : SystemMetrics val SM_CXHSCROLL : SystemMetrics val SM_CXHTHUMB : SystemMetrics val SM_CXICON : SystemMetrics val SM_CXICONSPACING : SystemMetrics val SM_CXMAXIMIZED : SystemMetrics val SM_CXMAXTRACK : SystemMetrics val SM_CXMENUCHECK : SystemMetrics val SM_CXMENUSIZE : SystemMetrics val SM_CXMIN : SystemMetrics val SM_CXMINIMIZED : SystemMetrics val SM_CXMINSPACING : SystemMetrics val SM_CXMINTRACK : SystemMetrics val SM_CXSCREEN : SystemMetrics val SM_CXSIZE : SystemMetrics val SM_CXSIZEFRAME : SystemMetrics val SM_CXSMICON : SystemMetrics val SM_CXSMSIZE : SystemMetrics val SM_CXVSCROLL : SystemMetrics val SM_CYBORDER : SystemMetrics val SM_CYCAPTION : SystemMetrics val SM_CYCURSOR : SystemMetrics val SM_CYDLGFRAME : SystemMetrics val SM_CYDOUBLECLK : SystemMetrics val SM_CYDRAG : SystemMetrics val SM_CYEDGE : SystemMetrics val SM_CYFIXEDFRAME : SystemMetrics val SM_CYFRAME : SystemMetrics val SM_CYFULLSCREEN : SystemMetrics val SM_CYHSCROLL : SystemMetrics val SM_CYICON : SystemMetrics val SM_CYICONSPACING : SystemMetrics val SM_CYKANJIWINDOW : SystemMetrics val SM_CYMAXIMIZED : SystemMetrics val SM_CYMAXTRACK : SystemMetrics val SM_CYMENU : SystemMetrics val SM_CYMENUCHECK : SystemMetrics val SM_CYMENUSIZE : SystemMetrics val SM_CYMIN : SystemMetrics val SM_CYMINIMIZED : SystemMetrics val SM_CYMINSPACING : SystemMetrics val SM_CYMINTRACK : SystemMetrics val SM_CYSCREEN : SystemMetrics val SM_CYSIZE : SystemMetrics val SM_CYSIZEFRAME : SystemMetrics val SM_CYSMCAPTION : SystemMetrics val SM_CYSMICON : SystemMetrics val SM_CYSMSIZE : SystemMetrics val SM_CYVSCROLL : SystemMetrics val SM_CYVTHUMB : SystemMetrics val SM_DBCSENABLED : SystemMetrics val SM_DEBUG : SystemMetrics val SM_MENUDROPALIGNMENT : SystemMetrics val SM_MIDEASTENABLED : SystemMetrics val SM_MOUSEPRESENT : SystemMetrics val SM_MOUSEWHEELPRESENT : SystemMetrics val SM_NETWORK : SystemMetrics val SM_PENWINDOWS : SystemMetrics val SM_RESERVED1 : SystemMetrics val SM_RESERVED2 : SystemMetrics val SM_RESERVED3 : SystemMetrics val SM_RESERVED4 : SystemMetrics val SM_SECURE : SystemMetrics val SM_SHOWSOUNDS : SystemMetrics val SM_SLOWMACHINE : SystemMetrics val SM_SWAPBUTTON : SystemMetrics val GetSystemMetrics : SystemMetrics -> int end = struct local open Foreign open Base in abstype SystemMetrics = ABS of int with val SM_CXSCREEN = ABS 0 val SM_CYSCREEN = ABS 1 val SM_CXVSCROLL = ABS 2 val SM_CYHSCROLL = ABS 3 val SM_CYCAPTION = ABS 4 val SM_CXBORDER = ABS 5 val SM_CYBORDER = ABS 6 val SM_CXDLGFRAME = ABS 7 val SM_CYDLGFRAME = ABS 8 val SM_CYVTHUMB = ABS 9 val SM_CXHTHUMB = ABS 10 val SM_CXICON = ABS 11 val SM_CYICON = ABS 12 val SM_CXCURSOR = ABS 13 val SM_CYCURSOR = ABS 14 val SM_CYMENU = ABS 15 val SM_CXFULLSCREEN = ABS 16 val SM_CYFULLSCREEN = ABS 17 val SM_CYKANJIWINDOW = ABS 18 val SM_MOUSEPRESENT = ABS 19 val SM_CYVSCROLL = ABS 20 val SM_CXHSCROLL = ABS 21 val SM_DEBUG = ABS 22 val SM_SWAPBUTTON = ABS 23 val SM_RESERVED1 = ABS 24 val SM_RESERVED2 = ABS 25 val SM_RESERVED3 = ABS 26 val SM_RESERVED4 = ABS 27 val SM_CXMIN = ABS 28 val SM_CYMIN = ABS 29 val SM_CXSIZE = ABS 30 val SM_CYSIZE = ABS 31 val SM_CXFRAME = ABS 32 val SM_CYFRAME = ABS 33 val SM_CXMINTRACK = ABS 34 val SM_CYMINTRACK = ABS 35 val SM_CXDOUBLECLK = ABS 36 val SM_CYDOUBLECLK = ABS 37 val SM_CXICONSPACING = ABS 38 val SM_CYICONSPACING = ABS 39 val SM_MENUDROPALIGNMENT = ABS 40 val SM_PENWINDOWS = ABS 41 val SM_DBCSENABLED = ABS 42 val SM_CMOUSEBUTTONS = ABS 43 val SM_SECURE = ABS 44 val SM_CXEDGE = ABS 45 val SM_CYEDGE = ABS 46 val SM_CXMINSPACING = ABS 47 val SM_CYMINSPACING = ABS 48 val SM_CXSMICON = ABS 49 val SM_CYSMICON = ABS 50 val SM_CYSMCAPTION = ABS 51 val SM_CXSMSIZE = ABS 52 val SM_CYSMSIZE = ABS 53 val SM_CXMENUSIZE = ABS 54 val SM_CYMENUSIZE = ABS 55 val SM_ARRANGE = ABS 56 val SM_CXMINIMIZED = ABS 57 val SM_CYMINIMIZED = ABS 58 val SM_CXMAXTRACK = ABS 59 val SM_CYMAXTRACK = ABS 60 val SM_CXMAXIMIZED = ABS 61 val SM_CYMAXIMIZED = ABS 62 val SM_NETWORK = ABS 63 val SM_CLEANBOOT = ABS 67 val SM_CXDRAG = ABS 68 val SM_CYDRAG = ABS 69 val SM_SHOWSOUNDS = ABS 70 val SM_CXMENUCHECK = ABS 71 val SM_CYMENUCHECK = ABS 72 val SM_SLOWMACHINE = ABS 73 val SM_MIDEASTENABLED = ABS 74 val SM_MOUSEWHEELPRESENT = ABS 75 val SM_CXFIXEDFRAME = SM_CXDLGFRAME val SM_CYFIXEDFRAME = SM_CYDLGFRAME val SM_CXSIZEFRAME = SM_CXFRAME val SM_CYSIZEFRAME = SM_CYFRAME local val getSystemMetrics = winCall1 (user "GetSystemMetrics") (cInt) cInt in fun GetSystemMetrics(ABS i) = getSystemMetrics i end end end end; polyml-5.7.1/mlsource/extra/Win/Painting.sml0000644000175000017500000001710013204034553017775 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Painting : sig type HWND and HDC and COLORREF and HRGN type RECT = { top: int, left: int, bottom: int, right: int } type BinaryRasterOperation val R2_BLACK : BinaryRasterOperation val R2_COPYPEN : BinaryRasterOperation val R2_MASKNOTPEN : BinaryRasterOperation val R2_MASKPEN : BinaryRasterOperation val R2_MASKPENNOT : BinaryRasterOperation val R2_MERGENOTPEN : BinaryRasterOperation val R2_MERGEPEN : BinaryRasterOperation val R2_MERGEPENNOT : BinaryRasterOperation val R2_NOP : BinaryRasterOperation val R2_NOT : BinaryRasterOperation val R2_NOTCOPYPEN : BinaryRasterOperation val R2_NOTMASKPEN : BinaryRasterOperation val R2_NOTMERGEPEN : BinaryRasterOperation val R2_NOTXORPEN : BinaryRasterOperation val R2_WHITE : BinaryRasterOperation val R2_XORPEN : BinaryRasterOperation type PAINTSTRUCT = { hdc: HDC, erase: bool, paint: RECT, private: Word8Vector.vector } val BeginPaint : HWND -> HDC * PAINTSTRUCT val EndPaint : HWND * PAINTSTRUCT -> unit val GdiFlush : unit -> unit val GdiGetBatchLimit : unit -> int val GdiSetBatchLimit : int -> int val GetBkColor : HDC -> COLORREF val GetROP2 : HDC -> BinaryRasterOperation val GetUpdateRect : HWND * bool -> RECT option val GetUpdateRgn : HWND * HRGN * bool -> Region.ResultRegion val GetWindowDC : HWND -> HDC val InvalidateRgn : HWND * HRGN * bool -> unit val SetBkColor : HDC * COLORREF -> COLORREF val SetROP2 : HDC * BinaryRasterOperation -> BinaryRasterOperation val WindowFromDC : HDC -> HWND val InvalidateRect: HWND * RECT * bool -> unit end = struct local open Foreign Base GdiBase fun checkDC c = (checkResult(not(isHdcNull c)); c) val zeroRect:RECT = {top=0, bottom=0, left=0, right=0} in type ResultRegion = Region.ResultRegion type HDC = HDC and HRGN = HRGN and HWND = HWND type RECT = RECT and COLORREF = COLORREF (* GetROP2 and SetROP2. *) local datatype BinaryRasterOperation = W of int in type BinaryRasterOperation = BinaryRasterOperation val BINARYRASTEROPERATION = absConversion {abs = W, rep = fn W n => n} cInt val R2_BLACK = W (1 (* 0 *)) val R2_NOTMERGEPEN = W (2 (* DPon *)) val R2_MASKNOTPEN = W (3 (* DPna *)) val R2_NOTCOPYPEN = W (4 (* PN *)) val R2_MASKPENNOT = W (5 (* PDna *)) val R2_NOT = W (6 (* Dn *)) val R2_XORPEN = W (7 (* DPx *)) val R2_NOTMASKPEN = W (8 (* DPan *)) val R2_MASKPEN = W (9 (* DPa *)) val R2_NOTXORPEN = W (10 (* DPxn *)) val R2_NOP = W (11 (* D *)) val R2_MERGENOTPEN = W (12 (* DPno *)) val R2_COPYPEN = W (13 (* P *)) val R2_MERGEPENNOT = W (14 (* PDno *)) val R2_MERGEPEN = W (15 (* DPo *)) val R2_WHITE = W (16 (* 1 *)) end val GdiFlush = winCall0 (gdi "GdiFlush") () (successState "GdiFlush") val GdiGetBatchLimit = winCall0 (gdi "GdiGetBatchLimit") () cDWORD val GdiSetBatchLimit = winCall1 (gdi "GdiSetBatchLimit") (cDWORD) cDWORD val GetBkColor = winCall1 (gdi "GetBkColor") (cHDC) cCOLORREF val GetROP2 = winCall1(user "GetROP2") (cHDC) BINARYRASTEROPERATION val GetUpdateRgn = winCall3(user "GetUpdateRgn") (cHWND,cHRGN,cBool) RESULTREGION val GetWindowDC = winCall1(user "GetWindowDC") (cHWND) cHDC val InvalidateRgn = winCall3(user "InvalidateRgn") (cHWND,cHRGN,cBool) (successState "InvalidateRgn") val InvalidateRect = winCall3 (user "InvalidateRect") (cHWND, cConstStar cRect, cBool) (successState "InvalidateRect") val SetBkColor = winCall2 (gdi "SetBkColor") (cHDC, cCOLORREF) cCOLORREF val WindowFromDC = winCall1(user "WindowFromDC") (cHDC) cHWND val SetROP2 = winCall2(user "SetROP2") (cHDC, BINARYRASTEROPERATION) BINARYRASTEROPERATION local val getUpdateRect = winCall3 (user "GetUpdateRect") (cHWND, cStar cRect, cBool) cBool in fun GetUpdateRect (hw: HWND, erase: bool): RECT option = let val va = ref zeroRect (* If the update area is empty the result is zero. *) val res = getUpdateRect(hw, va, erase) in if res then SOME(!va) else NONE end end type PAINTSTRUCT = { hdc: HDC, erase: bool, paint: RECT, private: Word8Vector.vector } local fun toPt({hdc, erase, paint, private}: PAINTSTRUCT) = (hdc, erase, paint, Byte.bytesToString private) and fromPt(hdc, erase, paint, private) = {hdc = hdc, erase = erase, paint = paint, private = Byte.stringToBytes private} val PAINTSTRUCT = absConversion {abs=fromPt, rep=toPt} (cStruct4(cHDC, cBool, cRect, cCHARARRAY 40)) val beginPaint = winCall2 (user "BeginPaint") (cHWND, cStar PAINTSTRUCT) cHDC in fun BeginPaint(hwnd: HWND): HDC * PAINTSTRUCT = let val b = ref {hdc=hNull, erase=false, paint=zeroRect, private=Word8Vector.fromList []} val hdc = checkDC (beginPaint (hwnd, b)) in (hdc, !b) end val EndPaint = winCall2 (user "EndPaint") (cHWND, cConstStar PAINTSTRUCT) cVoid end (* Other painting and drawing functions: DrawAnimatedRects DrawCaption DrawEdge DrawFocusRect DrawFrameControl DrawState DrawStateProc ExcludeUpdateRgn GetBkMode GetBoundsRect GetWindowRgn GrayString LockWindowUpdate OutputProc PaintDesktop RedrawWindow SetBkMode SetBoundsRect SetWindowRgn UpdateWindow ValidateRect ValidateRgn *) end end; polyml-5.7.1/mlsource/extra/Win/MESSAGE.signature.sml0000644000175000017500000007371713204034553021330 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature MESSAGE = sig datatype ControlType = ODT_BUTTON | ODT_COMBOBOX | ODT_LISTBOX | ODT_MENU | ODT_STATIC datatype ImageType = IMAGE_BITMAP | IMAGE_CURSOR | IMAGE_ENHMETAFILE | IMAGE_ICON type HGDIOBJ and HWND and HMENU and HICON and HINSTANCE and HDC and HFONT and HRGN and HDROP type RECT = { left: int, top: int, right: int, bottom: int } type POINT = { x: int, y: int } datatype HitTest = HTBORDER | HTBOTTOM | HTBOTTOMLEFT | HTBOTTOMRIGHT | HTCAPTION | HTCLIENT | HTCLOSE | HTERROR | HTGROWBOX | HTHELP | HTHSCROLL | HTLEFT | HTMENU | HTMAXBUTTON | HTMINBUTTON | HTNOWHERE | HTREDUCE | HTRIGHT | HTSIZE | HTSYSMENU | HTTOP | HTTOPLEFT | HTTOPRIGHT | HTTRANSPARENT | HTVSCROLL | HTZOOM datatype LRESULT = LRESINT of int | LRESHANDLE of HGDIOBJ type KeyData type windowFlags and findReplaceFlags datatype ScrollDirection = SB_BOTTOM | SB_ENDSCROLL | SB_LEFT | SB_LINEDOWN | SB_LINELEFT | SB_LINERIGHT | SB_LINEUP | SB_PAGEDOWN | SB_PAGELEFT | SB_PAGERIGHT | SB_PAGEUP | SB_RIGHT | SB_THUMBPOSITION | SB_THUMBTRACK | SB_TOP type WindowPositionStyle datatype MouseKeyFlags = MK_LBUTTON | MK_RBUTTON | MK_SHIFT | MK_CONTROL | MK_MBUTTON type ClipboardFormat and ClassType datatype MarginSettings = UseFontInfo | Margins of {left: int option, right: int option } datatype MDITileFlags = MDITILE_VERTICAL | MDITILE_HORIZONTAL | MDITILE_SKIPDISABLED datatype EMCharFromPos = EMcfpEdit of POINT | EMcfpRichEdit of POINT | EMcfpUnknown of SysWord.word datatype SystemCommand = SC_ARRANGE | SC_CLOSE | SC_CONTEXTHELP | SC_DEFAULT | SC_HOTKEY | SC_HSCROLL | SC_KEYMENU | SC_MAXIMIZE | SC_MINIMIZE | SC_MONITORPOWER | SC_MOUSEMENU | SC_MOVE | SC_NEXTWINDOW | SC_PREVWINDOW | SC_RESTORE | SC_SCREENSAVE | SC_SEPARATOR | SC_SIZE | SC_TASKLIST | SC_VSCROLL datatype WMActivateOptions = WA_ACTIVE | WA_CLICKACTIVE | WA_INACTIVE datatype WMPrintOption = PRF_CHECKVISIBLE | PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED datatype WMSizeOptions = SIZE_MAXHIDE | SIZE_MAXIMIZED | SIZE_MAXSHOW | SIZE_MINIMIZED | SIZE_RESTORED datatype HelpHandle = MenuHandle of HMENU | WindowHandle of HWND (* Passed in the lpParam argument of a WM_NOTIFY message. TODO: Many of these have additional information. *) datatype Notification = NM_OUTOFMEMORY | NM_CLICK | NM_DBLCLK | NM_RETURN | NM_RCLICK | NM_RDBLCLK | NM_SETFOCUS | NM_KILLFOCUS | NM_CUSTOMDRAW | NM_HOVER | NM_NCHITTEST | NM_KEYDOWN | NM_RELEASEDCAPTURE | NM_SETCURSOR | NM_CHAR | NM_TOOLTIPSCREATED | NM_LDOWN | NM_RDOWN | NM_THEMECHANGED | LVN_ITEMCHANGING | LVN_ITEMCHANGED | LVN_INSERTITEM | LVN_DELETEITEM | LVN_DELETEALLITEMS | LVN_BEGINLABELEDIT | LVN_ENDLABELEDIT | LVN_COLUMNCLICK | LVN_BEGINDRAG | LVN_BEGINRDRAG | LVN_GETDISPINFO | LVN_SETDISPINFO | LVN_KEYDOWN | LVN_GETINFOTIP | HDN_ITEMCHANGING | HDN_ITEMCHANGED | HDN_ITEMCLICK | HDN_ITEMDBLCLICK | HDN_DIVIDERDBLCLICK | HDN_BEGINTRACK | HDN_ENDTRACK | HDN_TRACK | HDN_ENDDRAG | HDN_BEGINDRAG | HDN_GETDISPINFO | TVN_SELCHANGING | TVN_SELCHANGED | TVN_GETDISPINFO | TVN_SETDISPINFO | TVN_ITEMEXPANDING | TVN_ITEMEXPANDED | TVN_BEGINDRAG | TVN_BEGINRDRAG | TVN_DELETEITEM | TVN_BEGINLABELEDIT | TVN_ENDLABELEDIT | TVN_KEYDOWN | TVN_GETINFOTIP | TVN_SINGLEEXPAND | TTN_GETDISPINFO of string ref | TTN_SHOW | TTN_POP | TCN_KEYDOWN | TCN_SELCHANGE | TCN_SELCHANGING | TBN_GETBUTTONINFO | TBN_BEGINDRAG | TBN_ENDDRAG | TBN_BEGINADJUST | TBN_ENDADJUST | TBN_RESET | TBN_QUERYINSERT | TBN_QUERYDELETE | TBN_TOOLBARCHANGE | TBN_CUSTHELP | TBN_DROPDOWN | TBN_HOTITEMCHANGE | TBN_DRAGOUT | TBN_DELETINGBUTTON | TBN_GETDISPINFO | TBN_GETINFOTIP | UDN_DELTAPOS | RBN_GETOBJECT | RBN_LAYOUTCHANGED | RBN_AUTOSIZE | RBN_BEGINDRAG | RBN_ENDDRAG | RBN_DELETINGBAND | RBN_DELETEDBAND | RBN_CHILDSIZE | CBEN_GETDISPINFO | CBEN_DRAGBEGIN | IPN_FIELDCHANGED | SBN_SIMPLEMODECHANGE | PGN_SCROLL | PGN_CALCSIZE | NM_OTHER of int (* Catch-all for other cases. *) datatype Message = WM_NULL | WM_ACTIVATE of {active: WMActivateOptions, minimize: bool } (* Indicates a change in activation state *) | WM_ACTIVATEAPP of {active: bool, threadid: int } (* Notifies applications when a new task activates *) | WM_ASKCBFORMATNAME of { length: int, formatName: string ref} (* Retrieves the name of the clipboard format *) | WM_CANCELJOURNAL (* Notifies application when user cancels journaling *) | WM_CANCELMODE (* Notifies a Window to cancel internal modes *) | WM_CHANGECBCHAIN of { removed: HWND, next: HWND } (* Notifies clipboard viewer of removal from chain *) | WM_CHAR of {charCode: char, data: KeyData } (* Indicates the user pressed a character key *) | WM_CHARTOITEM of {key: int, caretpos: int, listbox: HWND } (* Provides list-box keystrokes to owner Window *) | WM_CHILDACTIVATE (* Notifies a child Window of activation *) (* This is WM_USER+1. It's only used in a GetFont dialogue box. | WM_CHOOSEFONT_GETLOGFONT of LOGFONT ref *) (* Retrieves LOGFONT structure for Font dialog box *) | WM_CLEAR (* Clears an edit control *) | WM_CLOSE (* System Close menu command was chosen *) | WM_COMMAND of {notifyCode: int, wId: int, control: HWND } (* Specifies a command message *) | WM_COMPAREITEM of (* Determines position of combo- or list-box item *) { controlid: int, ctlType: ControlType, ctlID: int, hItem: HWND, itemID1: int, itemData1: SysWord.word, itemID2: int, itemData2: SysWord.word } | WM_COPY (* Copies a selection to the clipboard *) | WM_CREATE of { instance: HINSTANCE, creation: Foreign.Memory.voidStar, menu: HMENU, parent: HWND, cy: int, cx: int, y: int, x: int, style: windowFlags, name: string, (* The class may be a string or an atom. *) class: ClassType, extendedstyle: int } (* Indicates a Window is being created *) | WM_CTLCOLORBTN of { displaycontext: HDC, button: HWND } (* Button is about to be drawn *) | WM_CTLCOLORDLG of { displaycontext: HDC, dialogbox: HWND } (* Dialog box is about to be drawn *) | WM_CTLCOLOREDIT of { displaycontext: HDC, editcontrol: HWND } (* Control is about to be drawn *) | WM_CTLCOLORLISTBOX of { displaycontext: HDC, listbox: HWND } (* List box is about to be drawn *) | WM_CTLCOLORMSGBOX of { displaycontext: HDC, messagebox: HWND } (* Message box is about to be drawn *) | WM_CTLCOLORSCROLLBAR of { displaycontext: HDC, scrollbar: HWND } (* Indicates scroll bar is about to be drawn *) | WM_CTLCOLORSTATIC of { displaycontext: HDC, staticcontrol: HWND } (* Control is about to be drawn *) (* Note the return value is an HBRUSH *) | WM_CUT (* Deletes a selection and copies it to the clipboard *) | WM_DEADCHAR of { charCode: char, data: KeyData } (* Indicates the user pressed a dead key *) | WM_DELETEITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, item: HWND, itemData: int } (* Indicates owner-draw item or control was altered *) | WM_DESTROY (* Indicates Window is about to be destroyed *) | WM_DESTROYCLIPBOARD (* Notifies owner that the clipboard was emptied *) | WM_DEVMODECHANGE of { devicename: string } (* Indicates the device-mode settings have changed *) | WM_DRAWCLIPBOARD (* Indicates the clipboard's contents have changed *) | WM_DRAWITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, itemAction: int, itemState: int, hItem: HWND , hDC: HDC, rcItem: RECT, itemData: int } (* Indicates owner-draw control/menu needs redrawing *) | WM_DROPFILES of { hDrop: HDROP } (* Indicates that a file has been dropped *) | WM_ENABLE of { enabled: bool } (* Indicates a Window's enable state is changing *) | WM_ENDSESSION of { endsession: bool } (* Indicates whether the Windows session is ending *) | WM_ENTERIDLE of { flag: int, window: HWND } (* Indicates a modal dialog box or menu is idle *) | WM_ENTERMENULOOP of { istrack: bool } (* Indicates entry into menu modal loop *) | WM_EXITMENULOOP of { istrack: bool } (* Indicates exit from menu modal loop *) | WM_ERASEBKGND of { devicecontext: HDC } (* Indicates a Window's background need erasing *) | WM_FONTCHANGE (* Indicates a change in the font-resource pool *) | WM_GETDLGCODE (* Allows dialog procedure to process control input TODO: This has parameters! *) | WM_GETFONT (* Retrieves the font that a control is using *) | WM_GETHOTKEY (* Gets the virtual-key code of a Window's hot key *) | WM_GETMINMAXINFO of { maxSize: POINT ref, maxPosition: POINT ref, minTrackSize: POINT ref, maxTrackSize: POINT ref } (* Gets minimum and maximum sizing information *) | WM_GETTEXT of { length: int, text: string ref } (* Gets the text that corresponds to a Window *) | WM_GETTEXTLENGTH (* Gets length of text associated with a Window *) | WM_HOTKEY of { id: int } (* Hot key has been detected *) | WM_HSCROLL of { value: ScrollDirection, position: int, scrollbar: HWND } (* Indicates a click in a horizontal scroll bar *) | WM_HSCROLLCLIPBOARD of { viewer: HWND, code: int, position: int } (* Prompts owner to scroll clipboard contents *) | WM_ICONERASEBKGND of { devicecontext: HDC } (* Notifies minimized Window to fill icon background *) | WM_INITDIALOG of { dialog: HWND, initdata: int } (* Initializes a dialog box *) | WM_INITMENU of { menu: HMENU } (* Indicates a menu is about to become active *) | WM_INITMENUPOPUP of { menupopup: HMENU, itemposition: int, isSystemMenu: bool } (* Indicates a pop-up menu is being created *) | WM_KEYDOWN of { virtualKey: int, data: KeyData } (* Indicates a nonsystem key was pressed *) | WM_KEYUP of { virtualKey: int, data: KeyData } (* Indicates a nonsystem key was released *) | WM_KILLFOCUS of { receivefocus: HWND } (* Indicates the Window is losing keyboard focus *) | WM_LBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of left button *) | WM_LBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when left mouse button is pressed *) | WM_LBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when left mouse button is released *) | WM_MBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of middle mouse button *) | WM_MBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when middle mouse button is pressed *) | WM_MBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when middle mouse button is released *) | WM_MDICASCADE of { skipDisabled: bool } (* Arranges MDI child Windows in cascade format *) | WM_MDICREATE of { class: ClassType, title: string, instance: HINSTANCE, x: int, y: int, cx: int, cy: int, style: int, cdata: int } (* Prompts MDI client to create a child Window *) | WM_MDIDESTROY of { child: HWND } (* Closes an MDI child Window *) | WM_MDIGETACTIVE (* Retrieves data about the active MDI child Window *) | WM_MDIICONARRANGE (* Arranges minimized MDI child Windows *) | WM_MDIMAXIMIZE of { child: HWND } (* Maximizes an MDI child Window *) | WM_MDINEXT of { child: HWND, flagnext: bool } (* Activates the next MDI child Window *) | WM_MDIREFRESHMENU (* Refreshes an MDI frame Window's menu *) | WM_MDIRESTORE of { child: HWND } (* Prompts MDI client to restore a child Window *) | WM_MDISETMENU of { frameMenu: HMENU, windowMenu: HMENU } (* Replaces an MDI frame Window's menu *) | WM_MDITILE of { tilingflag: MDITileFlags list } (* Arranges MDI child Windows in tiled format *) | WM_MEASUREITEM of { senderId: int, ctlType: ControlType, ctlID: int, itemID: int, itemWidth: int ref, itemHeight: int ref, itemData: int } (* Requests dimensions of owner-draw control or item *) | WM_MENUCHAR of { ch: char, menuflag: MenuBase.MenuFlag, menu: HMENU } (* Indicates an unknown menu mnemonic was pressed *) | WM_MENUSELECT of { menuitem: int, menuflags: MenuBase.MenuFlag list, menu: HMENU } (* Indicates that the user selected a menu item *) | WM_MOUSEACTIVATE of { parent: HWND, hitTest: HitTest, message: int } (* Indicates a mouse click in an inactive Window *) | WM_MOUSEMOVE of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates mouse-cursor movement *) | WM_MOUSEHOVER of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates the mouse hovering in the client area *) | WM_MOUSELEAVE (* Indicates the mouse leaving the client area *) | WM_MOVE of { x: int, y: int } (* Indicates a Window's position has changed *) | WM_NCACTIVATE of { active: bool } (* Changes the active state of nonclient area *) | WM_NCCALCSIZE of { validarea: bool, newrect: RECT ref, oldrect: RECT, oldclientarea: RECT, hwnd: HWND, insertAfter: HWND, x: int, y: int, cx: int, cy: int, style: WindowPositionStyle list} (* Calculates the size of a Window's client area *) | WM_NCCREATE of { instance: HINSTANCE, creation: Foreign.Memory.voidStar, menu: HMENU, parent: HWND, cy: int, cx: int, y: int, x: int, style: windowFlags, name: string, class: ClassType, extendedstyle: int } (* Indicates a Window's nonclient area being created *) | WM_NCDESTROY (* Indicates Window's nonclient area being destroyed *) | WM_NCHITTEST of { x: int, y: int } (* Indicates mouse-cursor movement *) | WM_NCLBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient left button double-click *) | WM_NCLBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates left button pressed in nonclient area *) | WM_NCLBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates left button released in nonclient area *) | WM_NCMBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient middle button double-click *) | WM_NCMBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates middle button pressed in nonclient area *) | WM_NCMBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates middle button released in nonclient area *) | WM_NCMOUSEMOVE of { hitTest: HitTest, x: int, y: int } (* Indicates mouse-cursor movement in nonclient area *) | WM_NCMOUSEHOVER of { hitTest: HitTest, x: int, y: int } (* Indicates the mouse hovering in the nonclient area *) | WM_NCMOUSELEAVE (* Indicates the mouse leaving the nonclient area *) | WM_NCPAINT of { region: HRGN } (* Indicates a Window's frame needs painting *) | WM_NCRBUTTONDBLCLK of { hitTest: HitTest, x: int, y: int } (* Indicates nonclient right button double-click *) | WM_NCRBUTTONDOWN of { hitTest: HitTest, x: int, y: int } (* Indicates right button pressed in nonclient area *) | WM_NCRBUTTONUP of { hitTest: HitTest, x: int, y: int } (* Indicates right button released in nonclient area *) | WM_NEXTDLGCTL of { control: int, handleflag: bool } (* Sets focus to different dialog box control *) | WM_PAINT (* Indicates a Window's client area need painting *) | WM_PAINTCLIPBOARD of { clipboard: HWND } (* Prompts owner to display clipboard contents *) | WM_PAINTICON (* Icon is about to be painted *) | WM_PALETTECHANGED of { palChg: HWND } (* Indicates the focus-Window realized its palette *) | WM_PALETTEISCHANGING of { realize: HWND } (* Informs Windows that palette is changing *) | WM_PARENTNOTIFY of { eventflag: int, idchild: int, value: int } (* Notifies parent of child-Window activity *) | WM_PASTE (* Inserts clipboard data into an edit control *) | WM_POWER of { powerevent: int } (* Indicates the system is entering suspended mode *) | WM_QUERYDRAGICON (* Requests a cursor handle for a minimized Window *) | WM_QUERYENDSESSION of { source: int } (* Requests that the Windows session be ended *) | WM_QUERYNEWPALETTE (* Allows a Window to realize its logical palette *) | WM_QUERYOPEN (* Requests that a minimized Window be restored *) | WM_QUEUESYNC (* Delimits CBT messages *) | WM_QUIT of { exitcode: int } (* Requests that an application be terminated *) | WM_RBUTTONDBLCLK of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates double-click of right mouse button *) | WM_RBUTTONDOWN of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when right mouse button is pressed *) | WM_RBUTTONUP of { keyflags: MouseKeyFlags list, x: int, y: int } (* Indicates when right mouse button is released *) | WM_RENDERALLFORMATS (* Notifies owner to render all clipboard formats *) | WM_RENDERFORMAT of { format: ClipboardFormat } (* Notifies owner to render clipboard data *) | WM_SETCURSOR of { cursorwindow: HWND, hitTest: HitTest, mousemessage: int } (* Prompts a Window to set the cursor shape *) | WM_SETFOCUS of { losing: HWND } | WM_SETFONT of {font: HFONT, redrawflag: bool } | WM_SETHOTKEY of { virtualKey: int } | WM_SETREDRAW of { redrawflag: bool } | WM_SETTEXT of { text: string } | WM_SHOWWINDOW of { showflag: bool, statusflag: int } | WM_SIZE of { flag: WMSizeOptions, width: int, height: int } | WM_SIZECLIPBOARD of { viewer: HWND} | WM_SYSCHAR of { charCode: char, data: KeyData } | WM_SYSCOLORCHANGE | WM_SYSCOMMAND of { commandvalue: SystemCommand, sysBits: int, p: POINT } | WM_SYSDEADCHAR of { charCode: char, data: KeyData } | WM_SYSKEYDOWN of { virtualKey: int, data: KeyData } | WM_SYSKEYUP of { virtualKey: int, data: KeyData } | WM_TIMECHANGE (* Indicates the system time has been set *) | WM_TIMER of { timerid: int } | WM_UNDO | WM_SYSTEM_OTHER of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_USER of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_APP of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_REGISTERED of { uMsg: int, wParam: SysWord.word, lParam: SysWord.word } | WM_VKEYTOITEM of { virtualKey: int, caretpos: int, listbox: HWND } | WM_VSCROLL of { value: ScrollDirection, position: int, scrollbar: HWND } | WM_VSCROLLCLIPBOARD of { viewer: HWND, code: int, position: int } | WM_WINDOWPOSCHANGED of { hwnd: HWND, front: HWND, x: int, y: int, width: int, height: int, flags: WindowPositionStyle list } | WM_WINDOWPOSCHANGING of { hwnd: HWND, front: HWND ref, x: int ref, y: int ref, width: int ref, height: int ref, flags: WindowPositionStyle list ref } | WM_NOTIFY of {from: HWND, idCtrl: int, idFrom: int, notification: Notification } | WM_CAPTURECHANGED of { newCapture: HWND } | WM_ENTERSIZEMOVE | WM_EXITSIZEMOVE | WM_PRINT of {hdc: HDC, flags: WMPrintOption list } | WM_PRINTCLIENT of {hdc: HDC, flags: WMPrintOption list } | WM_HELP of { ctrlId: int, itemHandle: HelpHandle, contextId: int, mousePos: POINT } | WM_GETICON of { big: bool } | WM_SETICON of { big: bool, icon: HICON } | WM_CONTEXTMENU of { hwnd: HWND, xPos: int, yPos: int } | WM_DISPLAYCHANGE of { bitsPerPixel: int, xScreen: int, yScreen: int } | EM_CANUNDO | EM_CHARFROMPOS of EMCharFromPos | EM_EMPTYUNDOBUFFER | EM_FMTLINES of {addEOL: bool} | EM_GETFIRSTVISIBLELINE | EM_GETLIMITTEXT | EM_GETLINE of { lineNo: int, size: int, result: string ref } | EM_GETLINECOUNT | EM_GETMARGINS | EM_GETMODIFY | EM_GETPASSWORDCHAR | EM_GETRECT of {rect: RECT ref} | EM_GETSEL of {startPos: int ref, endPos: int ref} | EM_GETTHUMB | EM_LIMITTEXT of {limit: int} | EM_LINEFROMCHAR of {index: int} | EM_LINEINDEX of {line: int} | EM_LINELENGTH of {index: int} | EM_LINESCROLL of {xScroll: int, yScroll: int} | EM_POSFROMCHAR of {index: int} | EM_REPLACESEL of {canUndo: bool, text: string} | EM_SCROLL of {action: ScrollDirection} | EM_SCROLLCARET | EM_SETMARGINS of {margins: MarginSettings} | EM_SETMODIFY of { modified: bool } | EM_SETPASSWORDCHAR of { ch: char } | EM_SETREADONLY of { readOnly: bool } | EM_SETRECT of {rect: RECT} | EM_SETRECTNP of {rect: RECT} | EM_SETSEL of {startPos: int, endPos: int} | EM_SETTABSTOPS of {tabs: IntVector.vector} | EM_UNDO | BM_CLICK | BM_GETCHECK | BM_GETIMAGE of {imageType: ImageType} | BM_GETSTATE | BM_SETCHECK of {state: int} | BM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType} | BM_SETSTATE of {highlight: bool } | BM_SETSTYLE of {redraw: bool, style: windowFlags} | CB_GETEDITSEL of {startPos: int ref, endPos: int ref} | CB_LIMITTEXT of {limit: int} | CB_SETEDITSEL of {startPos: int, endPos: int} | CB_ADDSTRING of { text: string } | CB_DELETESTRING of { index: int } | CB_GETCOUNT | CB_GETCURSEL | CB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string } | CB_GETLBTEXT of { index: int, length: int, text: string ref } | CB_GETLBTEXTLEN of { index: int } | CB_INSERTSTRING of { index: int, text: string } | CB_RESETCONTENT | CB_FINDSTRING of { indexStart: int, text: string } | CB_SELECTSTRING of { indexStart: int, text: string } | CB_SETCURSEL of { index: int } | CB_SHOWDROPDOWN of { show: bool } | CB_GETITEMDATA of { index: int } | CB_SETITEMDATA of { index: int, data: int } | CB_GETDROPPEDCONTROLRECT of { rect: RECT ref } | CB_SETITEMHEIGHT of { index: int, height: int } | CB_GETITEMHEIGHT of { index: int } | CB_SETEXTENDEDUI of { extended: bool } | CB_GETEXTENDEDUI | CB_GETDROPPEDSTATE | CB_FINDSTRINGEXACT of { indexStart: int, text: string } | CB_SETLOCALE of { locale: int } | CB_GETLOCALE | CB_GETTOPINDEX | CB_SETTOPINDEX of { index: int } | CB_GETHORIZONTALEXTENT | CB_SETHORIZONTALEXTENT of { extent: int } | CB_GETDROPPEDWIDTH | CB_SETDROPPEDWIDTH of { width: int } | CB_INITSTORAGE of { items: int, bytes: int } | LB_ADDSTRING of { text: string } | LB_INSERTSTRING of { index: int, text: string } | LB_DELETESTRING of { index: int } | LB_SELITEMRANGEEX of { first: int, last: int } | LB_RESETCONTENT | LB_SETSEL of { select: bool, index: int } | LB_SETCURSEL of { index: int } | LB_GETSEL of { index: int } | LB_GETCURSEL | LB_GETTEXT of { index: int, length: int, text: string ref } | LB_GETTEXTLEN of { index: int } | LB_GETCOUNT | LB_SELECTSTRING of { indexStart: int, text: string } | LB_DIR of { attrs: ComboBase.CBDirAttr list, fileSpec: string } | LB_GETTOPINDEX | LB_FINDSTRING of { indexStart: int, text: string } | LB_GETSELCOUNT | LB_GETSELITEMS of { items: IntArray.array } | LB_SETTABSTOPS of { tabs: IntVector.vector } | LB_GETHORIZONTALEXTENT | LB_SETHORIZONTALEXTENT of { extent: int } | LB_SETCOLUMNWIDTH of { column: int } | LB_ADDFILE of { fileName: string } | LB_SETTOPINDEX of { index: int } | LB_GETITEMRECT of { rect: RECT ref, index: int } | LB_GETITEMDATA of { index: int } | LB_SETITEMDATA of { index: int, data: int } | LB_SELITEMRANGE of { select: bool, first: int, last: int } | LB_SETANCHORINDEX of { index: int } | LB_GETANCHORINDEX | LB_SETCARETINDEX of { index: int, scroll: bool } | LB_GETCARETINDEX | LB_SETITEMHEIGHT of { index: int, height: int } | LB_GETITEMHEIGHT of { index: int } | LB_FINDSTRINGEXACT of { indexStart: int, text: string } | LB_SETLOCALE of { locale: int } (* Should be an abstract type? *) | LB_GETLOCALE (* Result will be the type used above. *) | LB_SETCOUNT of { items: int } | LB_INITSTORAGE of { items: int, bytes: int } | LB_ITEMFROMPOINT of { point: POINT } | STM_GETICON | STM_GETIMAGE of {imageType: ImageType} | STM_SETICON of {icon: HICON} | STM_SETIMAGE of {image: HGDIOBJ, imageType: ImageType} | SBM_SETPOS of { pos: int, redraw: bool } | SBM_GETPOS | SBM_SETRANGE of { minPos: int, maxPos: int } | SBM_SETRANGEREDRAW of { minPos: int, maxPos: int } | SBM_GETRANGE of { minPos: int ref, maxPos: int ref } | SBM_ENABLE_ARROWS of ScrollBase.enableArrows | SBM_SETSCROLLINFO of { info: ScrollBase.SCROLLINFO, options: ScrollBase.ScrollInfoOption list } | SBM_GETSCROLLINFO of { info: ScrollBase.SCROLLINFO ref, options: ScrollBase.ScrollInfoOption list } | FINDMSGSTRING of { flags: findReplaceFlags, findWhat: string, replaceWith: string } type MSG = { msg: Message, hwnd: HWND, time: Time.time, pt: {x: int, y: int} } val GetInputState: unit -> bool val GetMessage: HWND option * int * int -> MSG val GetMessagePos: unit -> POINT val GetMessageTime: unit -> Time.time datatype QueueStatus = QS_ALLPOSTMESSAGE | QS_HOTKEY | QS_KEY | QS_MOUSEBUTTON | QS_MOUSEMOVE | QS_PAINT | QS_POSTMESSAGE | QS_SENDMESSAGE | QS_TIMER val QS_ALLEVENTS: QueueStatus list val QS_ALLINPUT: QueueStatus list val QS_INPUT: QueueStatus list val QS_MOUSE: QueueStatus list val GetQueueStatus: QueueStatus list -> QueueStatus list val InSendMessage: unit -> bool datatype PeekMessageOptions = PM_NOREMOVE | PM_REMOVE val PeekMessage: HWND option * int * int * PeekMessageOptions -> MSG option val PostQuitMessage: int -> unit val RegisterWindowMessage: string -> int val RunApplication: unit -> int val SendMessage: HWND * Message -> LRESULT val PostMessage: HWND * Message -> unit val HWND_BROADCAST: HWND val WaitMessage: unit -> bool (* These last few are just used internally. *) val subclass: HWND * (HWND * Message * 'a -> LRESULT * 'a) * 'a -> (HWND * Message -> LRESULT) val setCallback: (HWND * Message * 'a -> LRESULT * 'a) * 'a -> unit val addModelessDialogue: HWND * (unit->unit) option -> unit val removeCallback: HWND -> unit (*val updateWindowHandle: HWND -> unit*) val compileMessage: Message -> int * SysWord.word * SysWord.word * (unit->unit) val decompileMessage: int * SysWord.word * SysWord.word -> Message val messageReturnFromParams: Message * SysWord.word * SysWord.word * SysWord.word -> LRESULT val updateParamsFromMessage: Message * SysWord.word * SysWord.word -> unit val LPMSG: MSG Foreign.conversion val mainWinProc: (HWND * int * SysWord.word * SysWord.word -> SysWord.word) Foreign.closure end; polyml-5.7.1/mlsource/extra/Win/CommonControls.sml0000644000175000017500000003671513204034553021215 0ustar daviddavid(* Copyright (c) 2007, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Common controls. *) structure CommonControls: sig type HWND and HINSTANCE and HBITMAP val InitCommonControls: unit->unit structure ToolbarStyle: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and TBSTYLE_BUTTON:flags and TBSTYLE_SEP:flags and TBSTYLE_CHECK:flags and TBSTYLE_GROUP:flags and TBSTYLE_CHECKGROUP:flags and TBSTYLE_DROPDOWN:flags and TBSTYLE_AUTOSIZE:flags and TBSTYLE_NOPREFIX:flags and TBSTYLE_TOOLTIPS:flags and TBSTYLE_WRAPABLE:flags and TBSTYLE_ALTDRAG:flags and TBSTYLE_FLAT:flags and TBSTYLE_LIST:flags and TBSTYLE_CUSTOMERASE:flags and TBSTYLE_REGISTERDROP:flags and TBSTYLE_TRANSPARENT:flags and BTNS_BUTTON:flags and BTNS_SEP:flags and BTNS_CHECK:flags and BTNS_GROUP:flags and BTNS_CHECKGROUP:flags and BTNS_DROPDOWN:flags and BTNS_AUTOSIZE:flags and BTNS_NOPREFIX:flags and BTNS_SHOWTEXT:flags and BTNS_WHOLEDROPDOWN:flags end structure ToolbarState: sig include BIT_FLAGS val TBSTATE_CHECKED: flags and TBSTATE_PRESSED: flags and TBSTATE_ENABLED: flags and TBSTATE_HIDDEN: flags and TBSTATE_INDETERMINATE: flags and TBSTATE_WRAP: flags and TBSTATE_ELLIPSES: flags and TBSTATE_MARKED : flags end datatype ToolbarResource = ToolbarHandle of HBITMAP | ToolbarResource of HINSTANCE*Resource.RESID datatype ParentType = datatype Window.ParentType type TBBUTTON = { iBitmap: int, idCommand: int, fsState: ToolbarState.flags, fsStyle: ToolbarStyle.flags, dwData: int, isString: int}; val CreateToolbarEx: { relation: ParentType, style: ToolbarStyle.flags, nBitmaps: int, bitmaps: ToolbarResource, buttons: TBBUTTON list, xButton: int, yButton: int, xBitmap: int, yBitmap: int} -> HWND val CreateStatusWindow: { relation: ParentType, style: Window.Style.flags, text: string } -> HWND val SB_SIMPLEID: int structure StatusBarType: sig include BIT_FLAGS val SBT_NOBORDERS: flags and SBT_OWNERDRAW: flags and SBT_POPOUT: flags and SBT_RTLREADING : flags and SBT_TOOLTIPS: flags end (* Creating messages here is just too complicated. It's easier to do this with functions to send the message and deal with the result. *) val StatusBarSetText: {hWnd: HWND, iPart: int, uType: StatusBarType.flags, text: string}->int val StatusBarGetText: HWND*int -> string * StatusBarType.flags val StatusBarSetParts: HWND * int list -> bool end = struct datatype ParentType = datatype Window.ParentType local open Foreign open Globals open Base in type HWND = HWND and HINSTANCE = HINSTANCE and HBITMAP = HBITMAP val InitCommonControls = winCall0(comctl "InitCommonControls") () cVoid (* Toolbar style is a mess. The TBBUTTON structure allows only a single byte for the style but some of the values exceed that. Apparently it's necessary to use CreateWindowEx for those. *) structure ToolbarStyle = struct open Window.Style (* Include all the windows styles. *) val TBSTYLE_BUTTON = fromWord 0wx0 val TBSTYLE_SEP = fromWord 0wx1 val TBSTYLE_CHECK = fromWord 0wx2 val TBSTYLE_GROUP = fromWord 0wx4 val TBSTYLE_CHECKGROUP = flags[TBSTYLE_GROUP,TBSTYLE_CHECK] val TBSTYLE_DROPDOWN = fromWord 0wx8 val TBSTYLE_AUTOSIZE = fromWord 0wx10 val TBSTYLE_NOPREFIX = fromWord 0wx20 val TBSTYLE_TOOLTIPS = fromWord 0wx100 val TBSTYLE_WRAPABLE = fromWord 0wx200 val TBSTYLE_ALTDRAG = fromWord 0wx400 val TBSTYLE_FLAT = fromWord 0wx800 val TBSTYLE_LIST = fromWord 0wx1000 val TBSTYLE_CUSTOMERASE = fromWord 0wx2000 val TBSTYLE_REGISTERDROP = fromWord 0wx4000 val TBSTYLE_TRANSPARENT = fromWord 0wx8000 (* -- These are used with TB_SETEXTENDEDSTYLE/TB_GETEXTENDEDSTYLE val TBSTYLE_EX_DRAWDDARROWS = fromWord 0wx00000001 val TBSTYLE_EX_MIXEDBUTTONS = fromWord 0w8 val TBSTYLE_EX_HIDECLIPPEDBUTTONS = fromWord 0w16 val TBSTYLE_EX_DOUBLEBUFFER = fromWord 0wx80*) val BTNS_BUTTON = TBSTYLE_BUTTON val BTNS_SEP = TBSTYLE_SEP val BTNS_CHECK = TBSTYLE_CHECK val BTNS_GROUP = TBSTYLE_GROUP val BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP val BTNS_DROPDOWN = TBSTYLE_DROPDOWN val BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE val BTNS_NOPREFIX = TBSTYLE_NOPREFIX val BTNS_SHOWTEXT = fromWord 0wx0040 val BTNS_WHOLEDROPDOWN = fromWord 0wx0080 val all = flags[Window.Style.all, TBSTYLE_BUTTON, TBSTYLE_SEP, TBSTYLE_CHECK, TBSTYLE_GROUP, TBSTYLE_DROPDOWN, TBSTYLE_AUTOSIZE, TBSTYLE_NOPREFIX, TBSTYLE_TOOLTIPS, TBSTYLE_WRAPABLE, TBSTYLE_ALTDRAG, TBSTYLE_FLAT, TBSTYLE_LIST, TBSTYLE_CUSTOMERASE, TBSTYLE_TRANSPARENT, BTNS_SHOWTEXT, BTNS_WHOLEDROPDOWN] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure ToolbarState:> sig include BIT_FLAGS val TBSTATE_CHECKED: flags and TBSTATE_PRESSED: flags and TBSTATE_ENABLED: flags and TBSTATE_HIDDEN: flags and TBSTATE_INDETERMINATE: flags and TBSTATE_WRAP: flags and TBSTATE_ELLIPSES: flags and TBSTATE_MARKED : flags val cToolBarState: flags conversion (* Only used internally *) end = struct open Word8 type flags = Word8.word val toWord = toLargeWord and fromWord = fromLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val TBSTATE_CHECKED = 0w1 val TBSTATE_PRESSED = 0w2 val TBSTATE_ENABLED = 0w4 val TBSTATE_HIDDEN = 0w8 val TBSTATE_INDETERMINATE = 0wx10 val TBSTATE_WRAP = 0wx20 val TBSTATE_ELLIPSES = 0wx40 val TBSTATE_MARKED = 0wx80 val all = flags[TBSTATE_CHECKED, TBSTATE_PRESSED, TBSTATE_ENABLED, TBSTATE_HIDDEN, TBSTATE_INDETERMINATE, TBSTATE_WRAP, TBSTATE_ELLIPSES, TBSTATE_MARKED] val intersect = List.foldl (fn (a, b) => andb(a, b)) all val cToolBarState = cUint8w (*Must be a byte*) end datatype ToolbarResource = ToolbarHandle of HBITMAP | ToolbarResource of HINSTANCE*Resource.RESID type TBBUTTON = { iBitmap: int, idCommand: int, fsState: ToolbarState.flags, fsStyle: ToolbarStyle.flags, dwData: int, isString: int} local val TBBUTTON = cStruct6(cInt, cInt, ToolbarState.cToolBarState(*byte*), cUint8w, cDWORD_PTR, cINT_PTR) val {ctype={size=sizeTBB, ...}, ...} = breakConversion TBBUTTON val createToolbarEx = winCall13 (comctl "CreateToolbarEx") (cHWND,cDWORDw,cUint,cInt,cHINSTANCE, cPointer ,cPointer,cInt,cInt,cInt,cInt,cInt,cUint) cHWND val list2vec = list2Vector TBBUTTON in fun CreateToolbarEx { relation: ParentType, style: ToolbarStyle.flags, nBitmaps: int, bitmaps: ToolbarResource, buttons: TBBUTTON list, xButton: int, yButton: int, xBitmap: int, yBitmap: int}: HWND = let (* This must be a child and WS_CHILD is included by default *) val (parent, childId, styleWord) = case relation of ChildWindow{parent, id} => (parent, id, WinBase.Style.toWord style) | _ => raise Fail "CreateToolbarEx: relation must be ChildWindow" fun mapToStruct({iBitmap, idCommand, fsState, fsStyle, dwData, isString}:TBBUTTON) = (iBitmap, idCommand, fsState, Word8.fromLargeWord(ToolbarStyle.toWord fsStyle), dwData, isString) val (buttonVec, nButtons) = list2vec (map mapToStruct buttons) (* The wBMID argument may be either a resource identifier or a bitmap handle. *) val (hBMInst, wBMID, freeStr) = case bitmaps of ToolbarHandle hbm => (hinstanceNull, voidStarOfHandle hbm, Memory.null) | ToolbarResource(hi, IdAsInt wb) => (hi, Memory.sysWord2VoidStar(SysWord.fromInt wb), Memory.null) | ToolbarResource(hi, IdAsString str) => let val s = toCstring str in (hi, s, s) end val res = createToolbarEx(parent, Word32.fromLargeWord styleWord, childId, nBitmaps, hBMInst, wBMID, buttonVec, nButtons, xButton, yButton, xBitmap, yBitmap, Word.toInt sizeTBB) handle ex => (Memory.free freeStr; Memory.free buttonVec; raise ex) val () = Memory.free freeStr and () = Memory.free buttonVec in checkResult(not(isHNull res)); res end end local val createStatusWindow = winCall4 (comctl "CreateStatusWindowA") (cLong,cString,cHWND,cUint) cHWND in fun CreateStatusWindow{ relation: ParentType, style: Window.Style.flags, text: string } = let val (parent, childId, styleWord) = case relation of ChildWindow{parent, id} => let open WinBase.Style in (parent, id, toWord(flags[WS_CHILD, style])) end | _ => raise Fail "CreateStatusWindow: relation must be ChildWindow" val res = createStatusWindow(LargeWord.toInt styleWord, text, parent, childId) in checkResult(not(isHNull res)); res end end val SB_SIMPLEID = 0x00ff structure StatusBarType: sig include BIT_FLAGS val SBT_NOBORDERS: flags and SBT_OWNERDRAW: flags and SBT_POPOUT: flags and SBT_RTLREADING : flags and SBT_TOOLTIPS: flags end = struct type flags = SysWord.word fun toWord f = f fun fromWord f = f val flags = List.foldl (fn (a, b) => SysWord.orb(a,b)) 0w0 fun allSet (fl1, fl2) = SysWord.andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = SysWord.andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = SysWord.andb(SysWord.notb fl1, fl2) val SBT_NOBORDERS = 0w256 val SBT_OWNERDRAW = 0wx1000 val SBT_POPOUT = 0w512 val SBT_RTLREADING = 0w1024 val SBT_TOOLTIPS = 0wx0800 val all = flags[SBT_NOBORDERS, SBT_OWNERDRAW, SBT_POPOUT, SBT_RTLREADING, SBT_TOOLTIPS] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end; val sendMsg = winCall4(user "SendMessageA") (cHWND, cUint, cUINT_PTR, cPointer) cUint fun StatusBarSetText{hWnd, iPart, uType, text}:int = let val s = toCstring text val res = sendMsg(hWnd, 0x401, IntInf.orb(iPart, LargeWord.toInt(StatusBarType.toWord uType)), s) handle ex => (Memory.free s; raise ex) val () = Memory.free s in res end fun StatusBarGetText(hWnd, iPart): string * StatusBarType.flags = let val result1 = Word32.fromInt(sendMsg(hWnd, 0x403, iPart, Memory.null)) val length = LOWORD result1 val flags = StatusBarType.fromWord(Word.toLargeWord(HIWORD result1)) in if StatusBarType.anySet(flags, StatusBarType.SBT_OWNERDRAW) then ("", flags) else let open Memory val buff = malloc (length+0w1) val reply = sendMsg(hWnd, 0x402, iPart, buff) handle ex => (free buff; raise ex) in (if reply = 0 then "" else fromCstring buff, flags) before free buff end end fun StatusBarSetParts(hWnd, parts: int list): bool = let val (vec, nParts) = list2Vector cInt parts open Memory val res = sendMsg(hWnd, 0x404, nParts, vec) handle ex => (free vec; raise ex) val () = free vec in res <> 0 end (* | compileMessage (SB_GETTEXT { iPart: int, text: string ref, length: int }) = (* Another case, like LB_GETTEXT. where we don't know the length so we add an extra argument to the ML message. *) (0x402, toCint iPart, address(alloc (length+1) Cchar)*) (* | compileMessage (SB_SETTEXT { iPart: int, uType: StatusBarType, text: string}) = (0x401, toCint 0, toCstring text) | compileMessage (SB_GETTEXT _) = (0x402, toCint 0, toCInt 0) | compileMessage (SB_GETTEXTLENGTH _) = (0x403, toCint 0, toCInt 0) | compileMessage (SB_SETPARTS _) = (0x404, toCint 0, toCInt 0) | compileMessage (SB_GETPARTS _) = (0x406, toCint 0, toCInt 0) | compileMessage (SB_GETBORDERS _) = (0x407, toCint 0, toCInt 0) | compileMessage (SB_SETMINHEIGHT _) = (0x408, toCint 0, toCInt 0) | compileMessage (SB_SIMPLE _) = (0x409, toCint 0, toCInt 0) | compileMessage (SB_GETRECT _) = (0x40A, toCint 0, toCInt 0)*) end end; polyml-5.7.1/mlsource/extra/Win/ROOT.sml0000644000175000017500000000206713204034553017015 0ustar daviddavidPolyML.Compiler.reportUnreferencedIds := true; use "Base"; use "Globals"; use "LocaleBase"; use "Locale"; use "Resource"; use "WinBase"; use "ComboBase"; use "ScrollBase"; use "MenuBase"; use "MESSAGE.signature"; use "Message"; use "Class"; use "FlagPrint"; use "Window"; use "ComboBox"; use "Edit"; use "ListBox"; use "Scrollbar"; use "Static"; use "Button"; use "Dialog"; use "Cursor"; use "Icon"; use "Menu"; use "GdiBase"; use "Color"; use "FontBase"; use "Font"; use "DeviceBase"; use "Bitmap"; use "Brush"; use "Pen"; use "DeviceContext"; use "CommonDialog"; use "MessageBox"; use "Caret"; use "Transform"; use "Metafile"; use "Clipboard"; use "Rectangle"; use "Printing"; use "Line"; use "Path"; use "Region"; use "Painting"; use "Shape"; use "Clipping"; use "DragDrop"; use "Keyboard"; use "Mouse"; use "WinSystem"; use "CommonControls"; List.app PolyML.Compiler.forgetStructure [ "Base", "ComboBase", "FontBase", "MenuBase", "ScrollBase", "WinBase", "MessageBase", "GdiBase", "DeviceBase", "LocaleBase" ]; List.app PolyML.Compiler.forgetFunctor ["FlagPrint"]; polyml-5.7.1/mlsource/extra/Win/Color.sml0000644000175000017500000002343213204034553017307 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Color (* Use American spelling for consistency. *): sig type HPALETTE and HDC datatype PaletteEntryFlag = PC_EXPLICIT | PC_NOCOLLAPSE | PC_NULL | PC_RESERVED type PALETTEENTRY = {red: int, green: int, blue: int, flags: PaletteEntryFlag} type COLORREF val toRGB : COLORREF -> {red: Int.int, blue: Int.int, green: Int.int} val RGB : {red: int, blue: int, green: int} -> COLORREF val PALETTERGB : {red: int, blue: int, green: int} -> COLORREF type SystemPaletteUse val SYSPAL_ERROR : SystemPaletteUse val SYSPAL_NOSTATIC : SystemPaletteUse val SYSPAL_STATIC : SystemPaletteUse val AnimatePalette : HPALETTE * int * PALETTEENTRY list -> bool val CreateHalftonePalette : HDC -> HPALETTE val CreatePalette : PALETTEENTRY list -> HPALETTE val GetNearestColor : HDC * COLORREF -> COLORREF val GetNearestPaletteIndex : HPALETTE * COLORREF -> int val GetPaletteEntries : HPALETTE * int * int -> PALETTEENTRY list val GetSystemPaletteEntries : HDC * int * int -> PALETTEENTRY list val GetSystemPaletteUse : HDC -> SystemPaletteUse val RealizePalette : HDC -> int val ResizePalette : HPALETTE * int -> unit val SelectPalette : HDC * HPALETTE * bool -> HPALETTE val SetPaletteEntries : HPALETTE * int * PALETTEENTRY list -> unit val SetSystemPaletteUse : HDC * SystemPaletteUse -> SystemPaletteUse val UnrealizeObject : HPALETTE -> unit val UpdateColors : HDC -> unit end = struct local open Foreign Base in type HDC = HDC and HPALETTE = HPALETTE open GdiBase local datatype SystemPaletteUse = W of int in type SystemPaletteUse = SystemPaletteUse val SYSTEMPALETTEUSE = absConversion {abs = W, rep = fn W n => n} cUint val SYSPAL_ERROR = W (0) val SYSPAL_STATIC = W (1) val SYSPAL_NOSTATIC = W (2) end datatype PaletteEntryFlag = PC_NULL | PC_RESERVED | PC_EXPLICIT | PC_NOCOLLAPSE type PALETTEENTRY = {red: int, green: int, blue: int, flags: PaletteEntryFlag} local val cPaletteEnt = cStruct4(cUint8, cUint8, cUint8, cUint8) val { load=loadPE, store=storePE, ctype={size=peSize, ...} } = breakConversion cPaletteEnt fun toPE({red, green, blue, flags}: PALETTEENTRY) = let val f = case flags of PC_NULL => 0 | PC_RESERVED => 1 | PC_EXPLICIT => 2 | PC_NOCOLLAPSE => 4 in (red, green, blue, f) end fun fromPE (red, green, blue, f): PALETTEENTRY = let val flags = case f of 0 => PC_NULL | 1 => PC_RESERVED | 2 => PC_EXPLICIT | 4 => PC_NOCOLLAPSE | _ => raise Match in {red=red, green=green, blue=blue, flags=flags} end open Memory infix 6 ++ val logPal = cStruct2(cWORD, cWORD) val {store=storeLP, ctype={size=lpSize, ...}, ...} = breakConversion logPal in (* Unfortunately we can't make a simple conversion here. When we load the entries we need to know how many we're loading. *) fun allocPEVec n = malloc(Word.fromInt n * peSize) val freePEVec = free local (* Copy the elements into the array. *) fun doStore (pe: PALETTEENTRY, vec) = ( ignore(storePE(vec, toPE pe)); (* Ignore result - nothing to free *) vec ++ peSize ) in fun palListToC pl = let val count = List.length pl val vec = allocPEVec count val _ = List.foldl doStore vec pl in (vec, count) end fun logPaletteToC pl = let (* A logical palette has two additional words at the start. *) val count = List.length pl val vec = malloc(Word.fromInt count * peSize + lpSize) val _ = storeLP(vec, (0x300, count)) val _ = List.foldl doStore (vec ++ lpSize) pl in vec end end fun palListFromC(vec, count) = let fun loadPalE n = fromPE(loadPE(vec ++ Word.fromInt n * peSize)) in List.tabulate(count, loadPalE) end end val GetSystemPaletteUse = winCall1(gdi "GetSystemPaletteUse") (cHDC) SYSTEMPALETTEUSE val RealizePalette = winCall1(gdi "RealizePalette") (cHDC) cUint val ResizePalette = winCall2(gdi "ResizePalette") (cHPALETTE,cUint) (successState "ResizePalette") val SelectPalette = winCall3(gdi "SelectPalette") (cHDC,cHPALETTE,cBool) cHPALETTE val SetSystemPaletteUse = winCall2(gdi "SetSystemPaletteUse") (cHDC,SYSTEMPALETTEUSE) SYSTEMPALETTEUSE val UpdateColors = winCall1(gdi "UpdateColors") (cHDC) (successState "UpdateColors") val CreateHalftonePalette = winCall1(gdi "CreateHalftonePalette") (cHDC) cHPALETTE val GetNearestColor = winCall2 (gdi "GetNearestColor") (cHDC,cCOLORREF) cCOLORREF val GetNearestPaletteIndex = winCall2 (gdi "GetNearestPaletteIndex") (cHPALETTE,cCOLORREF) cUint val UnrealizeObject = winCall1(gdi "UnrealizeObject") (cHPALETTE) (successState "UnrealizeObject") local val animatePalette = winCall4 (gdi "AnimatePalette") (cHPALETTE, cUint, cUint, cPointer) (cBool) in fun AnimatePalette (h,start,pl) = let val (vec, count) = palListToC pl val res = animatePalette(h, start, count, vec) handle ex => (freePEVec vec; raise ex) val () = freePEVec vec in res end end local val createPalette = winCall1 (gdi "CreatePalette") (cPointer) (cHPALETTE) in fun CreatePalette pl = let val vec = logPaletteToC pl val res = createPalette vec handle ex => (freePEVec vec; raise ex) val () = freePEVec vec val () = checkResult(not(isHNull res)) in res end end local val getPaletteEntries = winCall4 (gdi "GetPaletteEntries") (cHPALETTE, cUint, cUint, cPointer) cUint in fun GetPaletteEntries (h, start, no) = let val vec = allocPEVec no val res = getPaletteEntries (h, start, no, vec) (* The result is zero if error *) val result = palListFromC(vec, res) val () = freePEVec vec val () = checkResult(res <> 0) in result end end local val getSystemPaletteEntries = winCall4 (gdi "GetSystemPaletteEntries") (cHDC, cUint, cUint, cPointer) cUint in fun GetSystemPaletteEntries (h, start, no) = let val vec = allocPEVec no val res = getSystemPaletteEntries (h, start, no, vec) (* The result is zero if error *) val result = palListFromC(vec, res) val () = freePEVec vec val () = checkResult(res <> 0) in result end end local val setPaletteEntries = winCall4 (gdi "SetPaletteEntries") (cHPALETTE, cUint, cUint, cPointer) cUint in fun SetPaletteEntries (h, start,pl) = let val (vec, count) = palListToC pl val res = setPaletteEntries(h, start, count, vec) handle ex => (freePEVec vec; raise ex) val () = freePEVec vec in checkResult(res <> 0) end end (* Other Colour functions: GetColorAdjustment GetSystemPaletteUse SetColorAdjustment *) end end; (* Install a pretty printer for COLORREF. *) local open Color fun printColorRef _ _ x = let val {red, green, blue} = toRGB x in PolyML.PrettyString (concat["RGB{red=", Int.toString red, ",green=", Int.toString green, ",blue=", Int.toString blue, "}"]) end in val _ = PolyML.addPrettyPrinter printColorRef end; polyml-5.7.1/mlsource/extra/Win/Edit.sml0000644000175000017500000001457213204034553017123 0ustar daviddavid(* Copyright (c) 2001 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Edit windows. *) structure Edit: sig structure Style: sig (* We use the same type so we can use this everywhere we can use the general window style. *) include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and ES_LEFT: flags and ES_CENTER:flags and ES_RIGHT:flags and ES_MULTILINE:flags and ES_UPPERCASE: flags and ES_LOWERCASE: flags and ES_PASSWORD: flags and ES_AUTOVSCROLL: flags and ES_AUTOHSCROLL: flags and ES_NOHIDESEL: flags and ES_OEMCONVERT: flags and ES_READONLY: flags and ES_WANTRETURN: flags and ES_NUMBER: flags end structure Notifications: sig val EN_SETFOCUS: int val EN_KILLFOCUS: int val EN_CHANGE: int val EN_UPDATE: int val EN_ERRSPACE: int val EN_MAXTEXT: int val EN_HSCROLL: int val EN_VSCROLL: int end end = struct structure Style = struct open Window.Style (* Include all the windows styles. *) val ES_LEFT: flags = fromWord 0wx0000 val ES_CENTER: flags = fromWord 0wx0001 val ES_RIGHT: flags = fromWord 0wx0002 val ES_MULTILINE: flags = fromWord 0wx0004 val ES_UPPERCASE: flags = fromWord 0wx0008 val ES_LOWERCASE: flags = fromWord 0wx0010 val ES_PASSWORD: flags = fromWord 0wx0020 val ES_AUTOVSCROLL: flags = fromWord 0wx0040 val ES_AUTOHSCROLL: flags = fromWord 0wx0080 val ES_NOHIDESEL: flags = fromWord 0wx0100 val ES_OEMCONVERT: flags = fromWord 0wx0400 val ES_READONLY: flags = fromWord 0wx0800 val ES_WANTRETURN: flags = fromWord 0wx1000 val ES_NUMBER: flags = fromWord 0wx2000 val all = flags[Window.Style.all, ES_LEFT, ES_CENTER, ES_RIGHT, ES_MULTILINE, ES_UPPERCASE, ES_LOWERCASE, ES_PASSWORD, ES_AUTOVSCROLL, ES_AUTOHSCROLL, ES_NOHIDESEL, ES_OEMCONVERT, ES_READONLY, ES_WANTRETURN, ES_NUMBER] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end structure Notifications = struct val EN_SETFOCUS = 0x0100 val EN_KILLFOCUS = 0x0200 val EN_CHANGE = 0x0300 val EN_UPDATE = 0x0400 val EN_ERRSPACE = 0x0500 val EN_MAXTEXT = 0x0501 val EN_HSCROLL = 0x0601 val EN_VSCROLL = 0x0602 end end; (* let open Edit.Style val flagTable = [(ES_CENTER, "ES_CENTER"), (ES_RIGHT, "ES_RIGHT"), (ES_MULTILINE, "ES_MULTILINE"), (ES_UPPERCASE, "ES_UPPERCASE"), (ES_LOWERCASE, "ES_LOWERCASE"), (ES_PASSWORD, "ES_PASSWORD"), (ES_AUTOVSCROLL, "ES_AUTOVSCROLL"), (ES_AUTOHSCROLL, "ES_AUTOHSCROLL"), (ES_NOHIDESEL, "ES_NOHIDESEL"), (ES_OEMCONVERT, "ES_OEMCONVERT"), (ES_READONLY, "ES_READONLY"), (ES_WANTRETURN, "ES_WANTRETURN"), (ES_NUMBER, "ES_NUMBER"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *)polyml-5.7.1/mlsource/extra/Win/Rectangle.sml0000644000175000017500000001013513204034553020131 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Rectangle : sig type POINT = { x: int, y: int } type RECT = { top: int, left: int, bottom: int, right: int } val EqualRect : RECT * RECT -> bool val InflateRect : RECT * int * int -> RECT val IntersectRect : RECT * RECT -> RECT option val IsRectEmpty : RECT -> bool val OffsetRect : RECT * int * int -> RECT val PtInRect : RECT * POINT -> bool val SetRect : int * int * int * int -> RECT val SetRectEmpty : unit -> RECT val SubtractRect : RECT * RECT -> RECT val UnionRect : RECT * RECT -> RECT end = struct local open Foreign Base (* fun usercall_MII name CR (C1,C2,C3) (a1,a2,a3) = let val (from1,to1,ctype1) = breakConversion C1 val (from2,to2,ctype2) = breakConversion C2 val (from3,to3,ctype3) = breakConversion C3 val (fromR,toR,ctypeR) = breakConversion CR val va1 = address (to1 a1) val va2 = to2 a2 val va3 = to3 a3 val res = calluser name [(Cpointer ctype1,va1),(ctype2,va2),(ctype3,va3)] ctypeR in (fromR res,from1 (deref va1)) end*) in type RECT = RECT and POINT = POINT (* TODO: It would be a lot more efficient to implement these directly in ML. *) val zeroRect: RECT = {top=0, bottom=0, left=0, right=0} (* RECTANGLES. *) val EqualRect = winCall2 (user "EqualRect") (cConstStar cRect, cConstStar cRect) cBool local val inflateRect = winCall3 (user "InflateRect") (cStar cRect, cInt, cInt) (successState "InflateRect") in fun InflateRect(r, x, y) = let val v = ref r in inflateRect(v, x, y); !v end end local val intersectRect = winCall3 (user "IntersectRect") (cStar cRect, cConstStar cRect, cConstStar cRect) cBool in fun IntersectRect(r1, r2) = let val r = ref zeroRect in if intersectRect(r, r1, r2) then SOME(!r) else NONE end end local val offsetRect = winCall3 (user "OffsetRect") (cStar cRect, cInt, cInt) (successState "OffsetRect") in fun OffsetRect(r, x, y) = let val v = ref r in offsetRect(v, x, y); !v end end val IsRectEmpty = winCall1(user "IsRectEmpty") (cConstStar cRect) cBool val PtInRect = winCall2(user "PtInRect") (cConstStar cRect, cPoint) cBool local val setRect = winCall5 (user "SetRect") (cStar cRect, cInt, cInt, cInt, cInt) (successState "SetRect") in fun SetRect(a,b,c,d) : RECT = let val v = ref zeroRect in setRect(v, a,b,c,d); !v end end fun SetRectEmpty () : RECT = zeroRect (* No need to call C to do this *) local val subtractRect = winCall3 (user "SubtractRect") (cStar cRect, cConstStar cRect, cConstStar cRect) (successState "SubtractRect") and unionRect = winCall3 (user "UnionRect") (cStar cRect, cConstStar cRect, cConstStar cRect) (successState "UnionRect") in fun SubtractRect(r1, r2) = let val v = ref zeroRect in subtractRect(v, r1, r2); !v end and UnionRect(r1, r2) = let val v = ref zeroRect in unionRect(v, r1, r2); !v end end (* Other Rectangle functions: CopyRect *) end end; polyml-5.7.1/mlsource/extra/Win/Class.sml0000644000175000017500000002423013204034553017273 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Class: sig type HWND (* = Win.HWND *) and Message (* = Message.Message *) and HINSTANCE (* = Globals.HINSTANCE *) and HBRUSH (* = Brush.HBRUSH *) and HICON (* = Icon.HICON *) and HCURSOR (* = Cursor.HCURSOR *) and HGDIOBJ datatype LRESULT = LRESINT of int | LRESHANDLE of HGDIOBJ datatype 'a ATOM = Registered of {proc: HWND * Message * 'a -> LRESULT * 'a, className: string} | SystemClass of string val Button : unit ATOM val ComboBox : unit ATOM val ComboLBox : unit ATOM val DDEMLEvent : unit ATOM val Edit : unit ATOM val ListBox : unit ATOM val MDIClient : unit ATOM val ScrollBar : unit ATOM val Static : unit ATOM structure Style : sig include BIT_FLAGS val CS_BYTEALIGNCLIENT : flags val CS_BYTEALIGNWINDOW : flags val CS_CLASSDC : flags val CS_DBLCLKS : flags val CS_GLOBALCLASS : flags val CS_HREDRAW : flags val CS_KEYCVTWINDOW : flags val CS_NOCLOSE : flags val CS_NOKEYCVT : flags val CS_OWNDC : flags val CS_PARENTDC : flags val CS_SAVEBITS : flags val CS_VREDRAW : flags end type 'a WNDCLASSEX = {style: Style.flags, wndProc: HWND * Message * 'a -> LRESULT * 'a, hInstance: HINSTANCE, hIcon: HICON option, hCursor: HCURSOR option, hbrBackGround: HBRUSH option, menuName: Resource.RESID option, className: string, hIconSm: HICON option} val RegisterClassEx : 'a WNDCLASSEX -> 'a ATOM val UnregisterClass : string * HINSTANCE -> unit val GetClassInfoEx: HINSTANCE * string -> 'a WNDCLASSEX end = struct local open Foreign open Base open Resource in type Message = Message.Message type HWND = HWND and HINSTANCE = HINSTANCE and HICON = HICON and HBRUSH = HBRUSH and HCURSOR = HCURSOR and HGDIOBJ = HGDIOBJ datatype LRESULT = datatype Message.LRESULT structure Style = struct open Word32 type flags = Word32.word val toWord = SysWord.fromLargeWord o toLargeWord and fromWord = fromLargeWord o SysWord.toLargeWord val flags = List.foldl (fn (a, b) => orb(a,b)) 0w0 fun allSet (fl1, fl2) = andb(fl1, fl2) = fl1 fun anySet (fl1, fl2) = andb(fl1, fl2) <> 0w0 fun clear (fl1, fl2) = andb(notb fl1, fl2) val CS_VREDRAW: flags = 0wx0001 val CS_HREDRAW: flags = 0wx0002 val CS_KEYCVTWINDOW: flags = 0wx0004 val CS_DBLCLKS: flags = 0wx0008 val CS_OWNDC: flags = 0wx0020 val CS_CLASSDC: flags = 0wx0040 val CS_PARENTDC: flags = 0wx0080 val CS_NOKEYCVT: flags = 0wx0100 val CS_NOCLOSE: flags = 0wx0200 val CS_SAVEBITS: flags = 0wx0800 val CS_BYTEALIGNCLIENT: flags = 0wx1000 val CS_BYTEALIGNWINDOW: flags = 0wx2000 val CS_GLOBALCLASS: flags = 0wx4000 val all = flags[CS_VREDRAW, CS_HREDRAW, CS_KEYCVTWINDOW, CS_DBLCLKS, CS_OWNDC, CS_CLASSDC, CS_NOKEYCVT, CS_NOCLOSE, CS_SAVEBITS, CS_BYTEALIGNCLIENT, CS_BYTEALIGNWINDOW, CS_GLOBALCLASS] val intersect = List.foldl (fn (a, b) => andb(a,b)) all end (* Classes are either registered by the user, in which case they have ML callback functions, or they are built-in, such as Edit. *) datatype 'a ATOM = Registered of { proc: HWND * Message * 'a -> LRESULT * 'a, className: string } | SystemClass of string val Button: unit ATOM = SystemClass "Button" and ComboBox: unit ATOM = SystemClass "ComboBox" and ComboLBox: unit ATOM = SystemClass "ComboLBox" and DDEMLEvent: unit ATOM = SystemClass "DDEMLEvent" and Edit: unit ATOM = SystemClass "Edit" and ListBox: unit ATOM = SystemClass "ListBox" and MDIClient: unit ATOM = SystemClass "MDIClient" (* Maybe treat this specially. *) and ScrollBar: unit ATOM = SystemClass "ScrollBar" and Static: unit ATOM = SystemClass "Static" type 'a WNDCLASSEX = {style: Style.flags, wndProc: HWND * Message * 'a -> LRESULT * 'a, hInstance: HINSTANCE, hIcon: HICON option, hCursor: HCURSOR option, hbrBackGround: HBRUSH option, menuName: RESID option, className: string, hIconSm: HICON option} local val cWNDCLASSEX = cStruct12(cUint,cUintw, cFunction,cInt,cInt,cHINSTANCE,cHGDIOBJOPT, cHGDIOBJOPT,cHGDIOBJOPT,cRESID,cString,cHGDIOBJOPT) val { ctype = {size=sizeWndclassEx, ...}, ...} = breakConversion cWNDCLASSEX val registerClassEx = winCall1 (user "RegisterClassExA") (cConstStar cWNDCLASSEX) cUint in fun RegisterClassEx({style: Style.flags, wndProc: HWND * Message * 'a -> LRESULT * 'a, hInstance: HINSTANCE, hIcon: HICON option, hCursor: HCURSOR option, hbrBackGround: HBRUSH option, menuName: RESID option, className: string, hIconSm: HICON option}: 'a WNDCLASSEX): 'a ATOM = let (* The window procedure we pass to the C call is our dispatch function in the RTS. *) val windowProc = Message.mainWinProc val cWndClass = (Word.toInt sizeWndclassEx, style, windowProc, 0, (* Class extra *) 0, (* Window extra *) hInstance, hIcon, hCursor, hbrBackGround, getOpt(menuName, IdAsInt 0), className, hIconSm) val res = registerClassEx cWndClass (* The result is supposed to be an atom but it doesn't always work to pass this directly to CreateWindow. *) in checkResult(res <> 0); Registered{proc = wndProc, className = className} end end local (* We can't use the same definition of WNDCLASSEX as above because we can't return a callback function as a result, at least at the moment. Also we use CallWindowProc because it does Unicode to ANSI conversion. *) val cWNDCLASSEX = cStruct12(cUint,cUint, cPointer,cInt,cInt,cHINSTANCE,cHGDIOBJOPT, cHGDIOBJOPT,cHGDIOBJOPT,cRESID,cString,cHGDIOBJOPT) val { ctype = {size=sizeWndclassEx, ...}, ...} = breakConversion cWNDCLASSEX val CallWindowProc = winCall5 (user "CallWindowProcA") (cPointer, cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw in fun GetClassInfoEx(hInst, class): 'a WNDCLASSEX = let val v = ref(Word.toInt sizeWndclassEx, 0, Memory.null, 0, 0, hNull, NONE, NONE, NONE, IdAsInt 0, "", NONE) val () = winCall3(user "GetClassInfoExA") (cHINSTANCE, cString, cStar cWNDCLASSEX) (successState "GetClassInfoEx") (hInst, class, v) val (_, style, wproc, _, _, hInstance, hIcon, hCursor, hbrBackGround, menuName, className, hIconSm) = !v val mName = case menuName of IdAsInt 0 => NONE | IdAsString "" => NONE | m => SOME m fun wndProc(hwnd, msg, state) = let val (msgId: int, wParam, lParam, freeMsg) = Message.compileMessage msg val res = CallWindowProc(wproc, hwnd, msgId, wParam, lParam) in (Message.messageReturnFromParams(msg, wParam, lParam, res), state) before freeMsg() end in {style = Style.fromWord(LargeWord.fromInt style), wndProc = wndProc, hInstance = hInstance, hIcon = hIcon, hCursor = hCursor, hbrBackGround = hbrBackGround, menuName = mName, className = className, hIconSm = hIconSm }: 'a WNDCLASSEX end (* The underlying call can take either a string or an atom. I really don't know which is better here. *) (* TODO: We should extract the window proc and call freeCallback on it. *) val UnregisterClass = winCall2 (user "UnregisterClassA") (cString, cHINSTANCE) (successState "UnregisterClass") end (* The following functions are used with window classes. GetClassInfoEx GetClassLong GetWindowLong - in Window SetClassLong SetWindowLong Obsolete Functions GetClassInfo GetClassWord GetWindowWord RegisterClass SetClassWord SetWindowWord *) end end; polyml-5.7.1/mlsource/extra/Win/Scrollbar.sml0000644000175000017500000002542713204034553020162 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Scrollbars. *) structure Scrollbar: sig type HWND and HDC and HRGN type RECT = { left: int, top: int, right: int, bottom: int } structure Style: sig include BIT_FLAGS where type flags = Window.Style.flags val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags and SBS_HORZ:flags and SBS_VERT:flags and SBS_TOPALIGN:flags and SBS_LEFTALIGN:flags and SBS_BOTTOMALIGN:flags and SBS_RIGHTALIGN:flags and SBS_SIZEBOXTOPLEFTALIGN:flags and SBS_SIZEBOXBOTTOMRIGHTALIGN:flags and SBS_SIZEBOX:flags and SBS_SIZEGRIP:flags end type enableArrows = { enableLeftUp: bool, enableRightDown: bool } val ESB_ENABLE_BOTH: enableArrows val ESB_DISABLE_BOTH: enableArrows val ESB_DISABLE_LEFT: enableArrows val ESB_DISABLE_RIGHT: enableArrows val ESB_DISABLE_UP: enableArrows val ESB_DISABLE_DOWN: enableArrows type SCROLLINFO = { minPos: int, maxPos: int, pageSize: int, pos: int, trackPos: int } datatype ScrollInfoOption = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_DISABLENOSCROLL | SIF_TRACKPOS val SIF_ALL : ScrollInfoOption list datatype ScrollBarType = SB_BOTH | SB_CTL | SB_HORZ | SB_VERT datatype ScrollWindowFlag = SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN val EnableScrollBar : HWND * ScrollBarType * enableArrows -> unit val GetScrollInfo : HWND * ScrollBarType * ScrollInfoOption list -> SCROLLINFO val GetScrollPos : HWND * ScrollBarType -> int val ScrollDC : HDC * int * int * RECT * RECT * HRGN -> RECT val ScrollWindow : HWND * int * int * RECT * RECT -> unit val ScrollWindowEx : HWND * int * int * RECT * RECT * HRGN * ScrollWindowFlag list -> RECT val SetScrollInfo : HWND * ScrollBarType * ScrollInfoOption list * SCROLLINFO * bool -> int val SetScrollPos : HWND * ScrollBarType * int * bool -> int val SetScrollRange : HWND * ScrollBarType * int * int * bool -> bool val ShowScrollBar : HWND * ScrollBarType * bool -> unit end = struct local open Foreign Base in open ScrollBase type HDC = HDC and HWND = HWND and HRGN = HRGN and RECT = RECT structure Style = struct open Window.Style (* Include all the windows styles. *) val SBS_HORZ = fromWord 0wx0000 val SBS_VERT = fromWord 0wx0001 val SBS_TOPALIGN = fromWord 0wx0002 val SBS_LEFTALIGN = fromWord 0wx0002 val SBS_BOTTOMALIGN = fromWord 0wx0004 val SBS_RIGHTALIGN = fromWord 0wx0004 val SBS_SIZEBOXTOPLEFTALIGN = fromWord 0wx0002 val SBS_SIZEBOXBOTTOMRIGHTALIGN = fromWord 0wx0004 val SBS_SIZEBOX = fromWord 0wx0008 val SBS_SIZEGRIP = fromWord 0wx0010 val all = flags[Window.Style.all, SBS_HORZ, SBS_VERT, SBS_TOPALIGN, SBS_BOTTOMALIGN, SBS_SIZEBOX, SBS_SIZEGRIP] val intersect = List.foldl (fn (a, b) => fromWord(SysWord.andb(toWord a, toWord b))) all end datatype ScrollBarType = SB_CTL | SB_HORZ | SB_VERT | SB_BOTH local val tab = [ (SB_HORZ, 0), (SB_VERT, 1), (SB_CTL, 2), (SB_BOTH, 3) ] in val cSCROLLBARTYPE = tableConversion(tab, NONE) cUint (* It's a UINT for EnableScrollBar and int for GetScrollInfo *) end datatype ScrollWindowFlag = SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE local val tab = [ (SW_SCROLLCHILDREN, 0wx0001), (SW_INVALIDATE, 0wx0002), (SW_ERASE, 0wx0004) ] in val cSCROLLWINDOWFLAG = tableSetConversion(tab, NONE) end local open Foreign open Base in val EnableScrollBar = winCall3(user "EnableScrollBar") (cHWND, cSCROLLBARTYPE, cENABLESCROLLBARFLAG) (successState "EnableScrollBar") val GetScrollPos = winCall2 (user "GetScrollPos") (cHWND,cSCROLLBARTYPE) cInt val SetScrollRange = winCall5(user "SetScrollRange") (cHWND,cSCROLLBARTYPE,cInt,cInt,cBool) cBool val SetScrollPos = winCall4(user "SetScrollPos") (cHWND,cSCROLLBARTYPE,cInt,cBool) cInt val ShowScrollBar = winCall3(user "ShowScrollBar") (cHWND,cSCROLLBARTYPE,cBool) (successState "ShowScrollBar") val ScrollWindow = winCall5(user "ScrollWindow") (cHWND,cInt,cInt,cConstStar cRect,cConstStar cRect) (successState "ScrollWindow") local val scrollDC = winCall7 (user "ScrollDC") (cHDC,cInt,cInt,cConstStar cRect,cConstStar cRect,cHRGN,cStar cRect) (successState "ScrollDC") val scrollWindowEx = winCall8(user "ScrollWindowEx") (cHWND,cInt,cInt,cConstStar cRect,cConstStar cRect,cHRGN,cStar cRect,cSCROLLWINDOWFLAG) (successState "ScrollWindowEx") in fun ScrollDC(hDC, dx, dy, prcScroll, prcClip, hrgnUpdate): RECT = let val v = ref{top=0, bottom=0, left=0, right=0} val () = scrollDC(hDC, dx, dy, prcScroll, prcClip, hrgnUpdate, v) in ! v end and ScrollWindowEx(hWnd, dx, dy, prcScroll, prcClip, hrgnUpdate, flags) = let val v = ref{top=0, bottom=0, left=0, right=0} val () = scrollWindowEx(hWnd, dx, dy, prcScroll, prcClip, hrgnUpdate, v, flags) in ! v end end local val {ctype = {size=sizeStruct, ...}, ...} = breakConversion cSCROLLINFOSTRUCT val getScrollInfo = winCall3 (user "GetScrollInfo") (cHWND, cSCROLLBARTYPE, cStar cSCROLLINFOSTRUCT) (successState "GetScrollInfo") and setScrollInfo = winCall4 (user "SetScrollInfo") (cHWND, cSCROLLBARTYPE, cConstStar cSCROLLINFOSTRUCT, cBool) cInt in fun GetScrollInfo(hwnd, sbt, options): SCROLLINFO = let val v = ref(Word.toInt sizeStruct, options, 0, 0, 0, 0, 0) val _: unit = getScrollInfo(hwnd, sbt, v) val (_, _, minPos, maxPos, pageSize, pos, trackPos) = ! v in {minPos = minPos, maxPos = maxPos, pageSize = pageSize, pos = pos, trackPos = trackPos} end and SetScrollInfo(hwnd, sbt, options, { minPos, maxPos, pageSize, pos, trackPos}, redraw): int = setScrollInfo(hwnd, sbt, (Word.toInt sizeStruct, options, minPos, maxPos, pageSize, pos, trackPos), redraw) end end end end; (* let open Scrollbar.Style (* The same values are used with different names for horizontal and vertical bars. Maybe we should generate different names according to whether the SBS_VERT flag is set. *) val flagTable = [(SBS_VERT, "SBS_VERT"), (SBS_TOPALIGN, "SBS_TOPALIGN"), (SBS_BOTTOMALIGN, "SBS_BOTTOMALIGN"), (SBS_SIZEBOX, "SBS_SIZEBOX"), (SBS_SIZEGRIP, "SBS_SIZEGRIP"), (WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] fun accumulateFlags f [] = [] | accumulateFlags f ((w, s)::t) = if allSet(w, f) then s :: accumulateFlags(clear(w, f)) t else accumulateFlags f t fun printFlags(put, beg, brk, nd) depth _ x = (* This is just the code to print a list. *) let val stringFlags = accumulateFlags x flagTable fun plist [] depth = () | plist _ 0 = put "..." | plist [h] depth = put h | plist (h::t) depth = ( put (h^","); brk (1, 0); plist t (depth - 1) ) in beg (3, false); put "["; if depth <= 0 then put "..." else plist stringFlags depth; put "]"; nd () end in PolyML.install_pp printFlags end; *) polyml-5.7.1/mlsource/extra/Win/Printing.sml0000644000175000017500000000501613204034553020021 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Printing : sig type HDC type DOCINFO = { docName: string, output: string option, dType: string option} val StartDoc : HDC * DOCINFO -> int val StartPage : HDC -> unit val AbortDoc : HDC -> unit val EndDoc : HDC -> unit val EndPage : HDC -> unit datatype WMPrintOption = PRF_CHECKVISIBLE | PRF_NONCLIENT | PRF_CLIENT | PRF_ERASEBKGND | PRF_CHILDREN | PRF_OWNED end = struct local open Foreign Base in type HDC = HDC type DOCINFO = { docName: string, output: string option, dType: string option} (* PRINTING AND SPOOLING. *) local val DOCINFO = cStruct5(cInt, cString, STRINGOPT, STRINGOPT, cDWORDw) val {ctype={size=sizeDI, ...}, ...} = breakConversion DOCINFO val startdoc = winCall2(gdi "StartDocA")(cHDC, DOCINFO) cInt in fun StartDoc(hdc: HDC, {docName, output, dType}): int = let val res = startdoc(hdc, (Word.toInt sizeDI, docName, output, dType, 0w0)) in checkResult(res > 0); res end end local fun checkSuccess res = checkResult(res > 0) in val EndDoc = checkSuccess o winCall1(gdi "EndDoc") cHDC cInt val StartPage = checkSuccess o winCall1(gdi "StartPage") cHDC cInt val EndPage = checkSuccess o winCall1(gdi "EndPage") cHDC cInt val AbortDoc = checkSuccess o winCall1(gdi "AbortDoc") cHDC cInt end datatype WMPrintOption = datatype Message.WMPrintOption (* Other printing functions: DeviceCapabilities Escape ExtEscape SetAbortProc *) end end; polyml-5.7.1/mlsource/extra/Win/Keyboard.sml0000644000175000017500000000435413204034553017773 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Keyboard: sig type HWND val EnableWindow : HWND * bool -> bool val GetActiveWindow : unit -> HWND option val GetFocus : unit -> HWND option val IsWindowEnabled : HWND -> bool val SetActiveWindow : HWND -> HWND val SetFocus : HWND option -> HWND option end = struct local open Foreign Base fun checkWindow c = (checkResult(not(isHNull c)); c) in type HWND = HWND val EnableWindow = winCall2 (user "EnableWindow") (cHWND, cBool) cBool val GetActiveWindow = winCall0 (user "GetActiveWindow") () cHWNDOPT val GetFocus = winCall0 (user "GetFocus") () cHWNDOPT val IsWindowEnabled = winCall1 (user "IsWindowEnabled") (cHWND) cBool val SetActiveWindow = checkWindow o winCall1 (user "SetActiveWindow") (cHWND) cHWND (* The argument to SetFocus is an option because we may ignore input. The result may be null if there was an error or if no window had focus. *) val SetFocus = winCall1 (user "SetFocus") (cHWNDOPT) cHWNDOPT end end; (* ActivateKeyboardLayout GetAsyncKeyState GetKeyboardLayout GetKeyboardLayoutList GetKeyboardLayoutName GetKeyboardState GetKeyNameText GetKeyState keybd_event LoadKeyboardLayout MapVirtualKey MapVirtualKeyEx OemKeyScan RegisterHotKey SendInput SetKeyboardState ToAscii ToAsciiEx ToUnicode ToUnicodeEx UnloadKeyboardLayout UnregisterHotKey VkKeyScan VkKeyScanEx Obsolete Functions GetKBCodePage *) polyml-5.7.1/mlsource/extra/Win/FontBase.sml0000644000175000017500000002326513204034553017736 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure FontBase = struct local open Foreign Base in datatype OutputQuality = DEFAULT_QUALITY | DRAFT_QUALITY | PROOF_QUALITY | ANTIALIASED_QUALITY | CLEARTYPE_QUALITY | NONANTIALIASED_QUALITY local val tab = [ (DEFAULT_QUALITY, 0w0: Word8.word), (DRAFT_QUALITY, 0w1), (PROOF_QUALITY, 0w2), (NONANTIALIASED_QUALITY, 0w3), (ANTIALIASED_QUALITY, 0w4), (CLEARTYPE_QUALITY, 0w5) ] in val (outQualToW8, outQualFromW8) = tableLookup(tab, NONE) end datatype CharacterSet = ANSI_CHARSET | DEFAULT_CHARSET | SYMBOL_CHARSET | MAC_CHARSET | SHIFTJIS_CHARSET | HANGEUL_CHARSET | JOHAB_CHARSET | GB2312_CHARSET | CHINESEBIG5_CHARSET | GREEK_CHARSET | TURKISH_CHARSET | VIETNAMESE_CHARSET | HEBREW_CHARSET | ARABIC_CHARSET | BALTIC_CHARSET | RUSSIAN_CHARSET | THAI_CHARSET | EASTEUROPE_CHARSET | OEM_CHARSET local val tab = [ (ANSI_CHARSET, 0wx00: Word8.word), (DEFAULT_CHARSET, 0wx01), (SYMBOL_CHARSET, 0wx02), (MAC_CHARSET, 0wx4D), (SHIFTJIS_CHARSET, 0wx80), (HANGEUL_CHARSET, 0wx81), (JOHAB_CHARSET, 0wx82), (GB2312_CHARSET, 0wx86), (CHINESEBIG5_CHARSET, 0wx88), (GREEK_CHARSET, 0wxA1), (TURKISH_CHARSET, 0wxA2), (VIETNAMESE_CHARSET, 0wxA3), (HEBREW_CHARSET, 0wxB1), (ARABIC_CHARSET, 0wxB2), (BALTIC_CHARSET, 0wxBA), (RUSSIAN_CHARSET, 0wxCC), (THAI_CHARSET, 0wxDE), (EASTEUROPE_CHARSET, 0wxEE), (OEM_CHARSET, 0wxff) ] in val (charsetToW8, charsetFromW8) = tableLookup(tab, NONE) end (* In the underlying CreateFont call the pitch and family are ORed together. *) (*TYPE: FontFamily *) datatype FontFamily = FF_DONTCARE | FF_ROMAN | FF_SWISS | FF_MODERN | FF_SCRIPT| FF_DECORATIVE and FontPitch = DEFAULT_PITCH | FIXED_PITCH | VARIABLE_PITCH local open Word8 val tab1 = [ (DEFAULT_PITCH, 0w0), (FIXED_PITCH, 0w1), (VARIABLE_PITCH, 0w2)] and tab2 = [ (FF_DONTCARE, 0wx00 (* (0<<4) Don't care or don't know. *)), (FF_ROMAN, 0wx10 (* (1<<4) Variable stroke width, serifed. *)), (FF_SWISS, 0wx20 (* (2<<4) Variable stroke width, sans~serifed. *)), (FF_MODERN, 0wx30 (* (3<<4) Constant stroke width, serifed or sans~serifed. *)), (FF_SCRIPT, 0wx40 (* (4<<4) Cursive, etc. *)), (FF_DECORATIVE, 0wx50 (* (5<<4) Old English, etc. *))] val (fromPitch, toPitch) = tableLookup(tab1, NONE) and (fromFamily, toFamily) = tableLookup(tab2, NONE) in val toFamily = toFamily (* This is used in GetTextMetrics. *) fun pitchAndFamilyToW8 (pitch, family) = orb(fromPitch pitch, fromFamily family) fun pitchAndFamilyFromW8 i = (toPitch(andb(i, 0w3)), toFamily(andb(i, 0wxf0))) end (*TYPE: FontWeight - This type is really int, not an abstract type. *) type FontWeight = int (* Values between 0 and 1000 *) (*val FONTWEIGHT = cLong*) (* It's int for CreateFont but LONG for LONGFONT. *) val FW_DONTCARE = 0 val FW_THIN = 100 val FW_EXTRALIGHT = 200 val FW_LIGHT = 300 val FW_NORMAL = 400 val FW_MEDIUM = 500 val FW_SEMIBOLD = 600 val FW_BOLD = 700 val FW_EXTRABOLD = 800 val FW_HEAVY = 900 val FW_ULTRALIGHT = FW_EXTRALIGHT val FW_REGULAR = FW_NORMAL val FW_DEMIBOLD = FW_SEMIBOLD val FW_ULTRABOLD = FW_EXTRABOLD val FW_BLACK = FW_HEAVY datatype OutputPrecision = OUT_DEFAULT_PRECIS | OUT_STRING_PRECIS | OUT_CHARACTER_PRECIS | OUT_STROKE_PRECIS | OUT_TT_PRECIS | OUT_DEVICE_PRECIS | OUT_RASTER_PRECIS | OUT_TT_ONLY_PRECIS | OUT_OUTLINE_PRECIS | OUT_SCREEN_OUTLINE_PRECIS local val tab = [ (OUT_DEFAULT_PRECIS, 0w0: Word8.word), (OUT_STRING_PRECIS, 0w1), (OUT_CHARACTER_PRECIS, 0w2), (OUT_STROKE_PRECIS, 0w3), (OUT_TT_PRECIS, 0w4), (OUT_DEVICE_PRECIS, 0w5), (OUT_RASTER_PRECIS, 0w6), (OUT_TT_ONLY_PRECIS, 0w7), (OUT_OUTLINE_PRECIS, 0w8), (OUT_SCREEN_OUTLINE_PRECIS, 0w9) ] in val (outPrecToW8, outPrecFromW8) = tableLookup(tab, NONE) end (* TODO: This is a bit set. *) datatype ClippingPrecision = CLIP_DEFAULT_PRECIS | CLIP_STROKE_PRECIS | CLIP_LH_ANGLES | CLIP_DFA_DISABLE | CLIP_EMBEDDED (* CLIP_CHARACTER_PRECIS and CLIP_TT_ALWAYS "should not be used" [CLIP_DEFAULT_PRECIS] is the same as [] i.e. zero. *) local val tab = [ (CLIP_DEFAULT_PRECIS, 0wx0), (CLIP_STROKE_PRECIS, 0wx2), (CLIP_LH_ANGLES, 0wx10), (CLIP_DFA_DISABLE, 0w40), (CLIP_EMBEDDED, 0w80) ] in val (clipPrecSetToW32, clipPrecSetFromW32) = tableSetLookup(tab, NONE) end type LOGFONT = { height : int, width : int, escapement : int, orientation : int, weight : FontWeight, italic : bool, underline : bool, strikeOut : bool, charSet : CharacterSet, outputPrecision: OutputPrecision, clipPrecision : ClippingPrecision list, quality : OutputQuality, pitch: FontPitch, family: FontFamily, faceName : string } local val cLogFont = cStruct14(cLong, cLong, cLong, cLong, cLong, cUint8w, cUint8w, cUint8w, cUint8w, cUint8w, cUint8w, cUint8w, cUint8w, cCHARARRAY 32) fun chToB 0w0 = false | chToB _ = true fun bToch false = 0w0 | bToch true = 0w1 fun toLF(height, width, escapement, orientation, weight, italic, underline, strikeOut, charSet, outputPrecision, clipPrecision, quality, pitchFamily, faceName) : LOGFONT = let val (pitch, family) = pitchAndFamilyFromW8 pitchFamily in {height = height, width = width, escapement = escapement, orientation = orientation, weight = weight, italic = chToB italic, underline = chToB underline, strikeOut = chToB strikeOut, charSet = charsetFromW8 charSet, outputPrecision = outPrecFromW8 outputPrecision, clipPrecision = clipPrecSetFromW32(Word32.fromLargeWord(Word8.toLargeWord clipPrecision)), quality = outQualFromW8 quality, pitch = pitch, family = family, faceName = faceName} end fun fromLF ({height, width, escapement, orientation, weight, italic, underline, strikeOut, charSet, outputPrecision, clipPrecision, quality, pitch, family, faceName}: LOGFONT) = let val pitchFamily = pitchAndFamilyToW8(pitch, family) in (height, width, escapement, orientation, weight, bToch italic, bToch underline, bToch strikeOut, charsetToW8 charSet, outPrecToW8 outputPrecision, Word8.fromLargeWord(Word32.toLargeWord (clipPrecSetToW32 clipPrecision)), outQualToW8 quality, pitchFamily, faceName) end in val cLOGFONT = absConversion{abs=toLF, rep=fromLF} cLogFont end end end; polyml-5.7.1/mlsource/extra/Win/DeviceBase.sml0000644000175000017500000006025713204034553020231 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure DeviceBase = struct local open Foreign Base in (* Paper sizes. *) (* Colours. Retain the American spelling for compatibility. *) datatype DMColor = DMCOLOR_MONOCHROME | DMCOLOR_COLOR local val tab = [ (DMCOLOR_MONOCHROME, 1), (DMCOLOR_COLOR, 2)] in val (fromDMC, toDMC) = tableLookup(tab, NONE) end (* Default source. *) datatype DMSource = DMBIN_UPPER | DMBIN_ONLYONE | DMBIN_LOWER | DMBIN_MIDDLE | DMBIN_MANUAL | DMBIN_ENVELOPE | DMBIN_ENVMANUAL | DMBIN_AUTO | DMBIN_TRACTOR | DMBIN_SMALLFMT | DMBIN_LARGEFMT | DMBIN_LARGECAPACITY | DMBIN_CASSETTE | DMBIN_FORMSOURCE | DMSOURCE_OTHER of int local val tab = [ (DMBIN_ONLYONE, 1), (DMBIN_UPPER, 1), (DMBIN_LOWER, 2), (DMBIN_MIDDLE, 3), (DMBIN_MANUAL, 4), (DMBIN_ENVELOPE, 5), (DMBIN_ENVMANUAL, 6), (DMBIN_AUTO, 7), (DMBIN_TRACTOR, 8), (DMBIN_SMALLFMT, 9), (DMBIN_LARGEFMT, 10), (DMBIN_LARGECAPACITY, 11), (DMBIN_CASSETTE, 14), (DMBIN_FORMSOURCE, 15)] in fun doConv (DMSOURCE_OTHER i) = i | doConv _ = raise Match val (fromDMS, toDMS) = tableLookup(tab, SOME(DMSOURCE_OTHER, doConv)) end (* Print quality. Positive numbers represent dots per inch. *) datatype DMResolution = DMRES_DRAFT | DMRES_LOW | DMRES_MEDIUM | DMRES_HIGH | DMRES_DPI of int local val tab = [ (DMRES_DRAFT, ~1), (DMRES_LOW, ~2), (DMRES_MEDIUM, ~3), (DMRES_HIGH, ~4)] in fun doConv (DMRES_DPI i) = i | doConv _ = raise Match val (fromDMR, toDMR) = tableLookup(tab, SOME(DMRES_DPI, doConv)) end datatype DMDuplex = DMDUP_SIMPLEX | DMDUP_VERTICAL | DMDUP_HORIZONTAL local val tab = [ (DMDUP_SIMPLEX, 1), (DMDUP_VERTICAL, 2), (DMDUP_HORIZONTAL, 3)] in val (fromDMD, toDMD) = tableLookup(tab, NONE) end datatype DMTrueType = DMTT_BITMAP | DMTT_DOWNLOAD | DMTT_SUBDEV | DMTT_DOWNLOAD_OUTLINE local val tab = [ (DMTT_BITMAP, 1), (DMTT_DOWNLOAD, 2), (DMTT_SUBDEV, 3), (DMTT_DOWNLOAD_OUTLINE, 4)] in val (fromDMTT, toDMTT) = tableLookup(tab, NONE) end datatype DMICMMethod = DMICMMETHOD_NONE | DMICMMETHOD_SYSTEM | DMICMMETHOD_DRIVER | DMICMMETHOD_DEVICE | DMICMMETHOD_OTHER of int local val tab = [ (DMICMMETHOD_NONE, 1), (DMICMMETHOD_SYSTEM, 2), (DMICMMETHOD_DRIVER, 3), (DMICMMETHOD_DEVICE, 4)] in fun doConv (DMICMMETHOD_OTHER i) = i | doConv _ = raise Match val (fromDMICMM, toDMICMM) = tableLookup(tab, SOME(DMICMMETHOD_OTHER, doConv)) end datatype DMICMIntent = DMICM_SATURATE | DMICM_CONTRAST | DMICM_COLORMETRIC | DMICMINTENT_OTHER of int local val tab = [ (DMICM_SATURATE, 1), (DMICM_CONTRAST, 2), (DMICM_COLORMETRIC, 3)] in fun doConv (DMICMINTENT_OTHER i) = i | doConv _ = raise Match val (fromDMICMI, toDMICMI) = tableLookup(tab, SOME(DMICMINTENT_OTHER, doConv)) end datatype DMMedia = DMMEDIA_STANDARD | DMMEDIA_TRANSPARENCY | DMMEDIA_GLOSSY | DMICMMEDIA_OTHER of int local val tab = [ (DMMEDIA_STANDARD, 1), (DMMEDIA_TRANSPARENCY, 2), (DMMEDIA_GLOSSY, 3)] in fun doConv (DMICMMEDIA_OTHER i) = i | doConv _ = raise Match val (fromDMM, toDMM) = tableLookup(tab, SOME(DMICMMEDIA_OTHER, doConv)) end datatype DMDither = DMDITHER_NONE | DMDITHER_COARSE | DMDITHER_FINE | DMDITHER_LINEART | DMDITHER_GRAYSCALE | DMDITHER_OTHER of int local val tab = [ (DMDITHER_NONE, 1), (DMDITHER_COARSE, 2), (DMDITHER_FINE, 3), (DMDITHER_LINEART, 4), (DMDITHER_GRAYSCALE, 5)] in fun doConv (DMDITHER_OTHER i) = i | doConv _ = raise Match val (fromDMDi, toDMDi) = tableLookup(tab, SOME(DMDITHER_OTHER, doConv)) end (* Paper orientation. *) datatype DMOrientation = DMORIENT_PORTRAIT | DMORIENT_LANDSCAPE local val tab = [ (DMORIENT_PORTRAIT, 1), (DMORIENT_LANDSCAPE, 2)] in (* Because we use getShort to get the values we don't need a Conversion. *) val (fromDMO, toDMO) = tableLookup(tab, NONE) end datatype DMPaperSize = DMPAPER_LETTER | DMPAPER_LETTERSMALL | DMPAPER_TABLOID | DMPAPER_LEDGER | DMPAPER_LEGAL | DMPAPER_STATEMENT | DMPAPER_EXECUTIVE | DMPAPER_A3 | DMPAPER_A4 | DMPAPER_A4SMALL | DMPAPER_A5 | DMPAPER_B4 | DMPAPER_B5 | DMPAPER_FOLIO | DMPAPER_QUARTO | DMPAPER_10X14 | DMPAPER_11X17 | DMPAPER_NOTE | DMPAPER_ENV_9 | DMPAPER_ENV_10 | DMPAPER_ENV_11 | DMPAPER_ENV_12 | DMPAPER_ENV_14 | DMPAPER_CSHEET | DMPAPER_DSHEET | DMPAPER_ESHEET | DMPAPER_ENV_DL | DMPAPER_ENV_C5 | DMPAPER_ENV_C3 | DMPAPER_ENV_C4 | DMPAPER_ENV_C6 | DMPAPER_ENV_C65 | DMPAPER_ENV_B4 | DMPAPER_ENV_B5 | DMPAPER_ENV_B6 | DMPAPER_ENV_ITALY | DMPAPER_ENV_MONARCH | DMPAPER_ENV_PERSONAL | DMPAPER_FANFOLD_US | DMPAPER_FANFOLD_STD_GERMAN | DMPAPER_FANFOLD_LGL_GERMAN | DMPAPER_ISO_B4 | DMPAPER_JAPANESE_POSTCARD | DMPAPER_9X11 | DMPAPER_10X11 | DMPAPER_15X11 | DMPAPER_ENV_INVITE | DMPAPER_RESERVED_48 | DMPAPER_RESERVED_49 | DMPAPER_LETTER_EXTRA | DMPAPER_LEGAL_EXTRA | DMPAPER_TABLOID_EXTRA | DMPAPER_A4_EXTRA | DMPAPER_LETTER_TRANSVERSE | DMPAPER_A4_TRANSVERSE | DMPAPER_LETTER_EXTRA_TRANSVERSE | DMPAPER_A_PLUS | DMPAPER_B_PLUS | DMPAPER_LETTER_PLUS | DMPAPER_A4_PLUS | DMPAPER_A5_TRANSVERSE | DMPAPER_B5_TRANSVERSE | DMPAPER_A3_EXTRA | DMPAPER_A5_EXTRA | DMPAPER_B5_EXTRA | DMPAPER_A2 | DMPAPER_A3_TRANSVERSE | DMPAPER_A3_EXTRA_TRANSVERSE | DMPAPER_OTHER of int local val tab = [ (DMPAPER_LETTER, 1), (DMPAPER_LETTERSMALL, 2), (DMPAPER_TABLOID, 3), (DMPAPER_LEDGER, 4), (DMPAPER_LEGAL, 5), (DMPAPER_STATEMENT, 6), (DMPAPER_EXECUTIVE, 7), (DMPAPER_A3, 8), (DMPAPER_A4, 9), (DMPAPER_A4SMALL, 10), (DMPAPER_A5, 11), (DMPAPER_B4, 12), (DMPAPER_B5, 13), (DMPAPER_FOLIO, 14), (DMPAPER_QUARTO, 15), (DMPAPER_10X14, 16), (DMPAPER_11X17, 17), (DMPAPER_NOTE, 18), (DMPAPER_ENV_9, 19), (DMPAPER_ENV_10, 20), (DMPAPER_ENV_11, 21), (DMPAPER_ENV_12, 22), (DMPAPER_ENV_14, 23), (DMPAPER_CSHEET, 24), (DMPAPER_DSHEET, 25), (DMPAPER_ESHEET, 26), (DMPAPER_ENV_DL, 27), (DMPAPER_ENV_C5, 28), (DMPAPER_ENV_C3, 29), (DMPAPER_ENV_C4, 30), (DMPAPER_ENV_C6, 31), (DMPAPER_ENV_C65, 32), (DMPAPER_ENV_B4, 33), (DMPAPER_ENV_B5, 34), (DMPAPER_ENV_B6, 35), (DMPAPER_ENV_ITALY, 36), (DMPAPER_ENV_MONARCH, 37), (DMPAPER_ENV_PERSONAL, 38), (DMPAPER_FANFOLD_US, 39), (DMPAPER_FANFOLD_STD_GERMAN, 40), (DMPAPER_FANFOLD_LGL_GERMAN, 41), (DMPAPER_ISO_B4, 42), (DMPAPER_JAPANESE_POSTCARD, 43), (DMPAPER_9X11, 44), (DMPAPER_10X11, 45), (DMPAPER_15X11, 46), (DMPAPER_ENV_INVITE, 47), (DMPAPER_RESERVED_48, 48), (DMPAPER_RESERVED_49, 49), (DMPAPER_LETTER_EXTRA, 50), (DMPAPER_LEGAL_EXTRA, 51), (DMPAPER_TABLOID_EXTRA, 52), (DMPAPER_A4_EXTRA, 53), (DMPAPER_LETTER_TRANSVERSE, 54), (DMPAPER_A4_TRANSVERSE, 55), (DMPAPER_LETTER_EXTRA_TRANSVERSE, 56), (DMPAPER_A_PLUS, 57), (DMPAPER_B_PLUS, 58), (DMPAPER_LETTER_PLUS, 59), (DMPAPER_A4_PLUS, 60), (DMPAPER_A5_TRANSVERSE, 61), (DMPAPER_B5_TRANSVERSE, 62), (DMPAPER_A3_EXTRA, 63), (DMPAPER_A5_EXTRA, 64), (DMPAPER_B5_EXTRA, 65), (DMPAPER_A2, 66), (DMPAPER_A3_TRANSVERSE, 67), (DMPAPER_A3_EXTRA_TRANSVERSE, 68) ] in (* Because we use getShort to get the values we don't need a Conversion. *) fun doConv (DMPAPER_OTHER i) = i | doConv _ = raise Match val (fromDMPS, toDMPS) = tableLookup(tab, SOME(DMPAPER_OTHER, doConv)) end type DEVMODE = { deviceName: string, driverVersion: int, orientation: DMOrientation option, paperSize: DMPaperSize option, paperLength: int option, paperWidth: int option, scale: int option, copies: int option, defaultSource: DMSource option, printQuality: DMResolution option, color: DMColor option, duplex: DMDuplex option, yResolution: int option, ttOption: DMTrueType option, collate: bool option, formName: string option, logPixels: int option, bitsPerPixel: int option, pelsWidth: int option, pelsHeight: int option, displayFlags: int option, (* Apparently no longer used. *) displayFrequency: int option, icmMethod: DMICMMethod option, icmIntent: DMICMIntent option, mediaType: DMMedia option, ditherType: DMDither option, panningWidth: int option, panningHeight: int option, driverPrivate: Word8Vector.vector } local val DM_SPECVERSION = 0x0401 (* The size of the structure is the same in both 32-bit and 64-bit modes but is larger in Unicode (220 bytes). *) val DMBaseSize = 0w156 (* Size of structure without any user data. *) (* These bits indicate the valid fields in the structure. *) val DM_ORIENTATION = 0x00000001 val DM_PAPERSIZE = 0x00000002 val DM_PAPERLENGTH = 0x00000004 val DM_PAPERWIDTH = 0x00000008 val DM_SCALE = 0x00000010 val DM_COPIES = 0x00000100 val DM_DEFAULTSOURCE = 0x00000200 val DM_PRINTQUALITY = 0x00000400 val DM_COLOR = 0x00000800 val DM_DUPLEX = 0x00001000 val DM_YRESOLUTION = 0x00002000 val DM_TTOPTION = 0x00004000 val DM_COLLATE = 0x00008000 val DM_FORMNAME = 0x00010000 val DM_LOGPIXELS = 0x00020000 val DM_BITSPERPEL = 0x00040000 val DM_PELSWIDTH = 0x00080000 val DM_PELSHEIGHT = 0x00100000 val DM_DISPLAYFLAGS = 0x00200000 val DM_DISPLAYFREQUENCY = 0x00400000 val DM_PANNINGWIDTH = 0x00800000 val DM_PANNINGHEIGHT = 0x01000000 val DM_ICMMETHOD = 0x02000000 val DM_ICMINTENT = 0x04000000 val DM_MEDIATYPE = 0x08000000 val DM_DITHERTYPE = 0x10000000 open Memory infix 6 ++ val {load=loadShort, store=storeShort, ctype={size=sizeShort, ...}} = breakConversion cShort val {load=loadDWord, store=storeDWord, ctype={size=sizeDWord, ...}} = breakConversion cDWORD (* We need separate versions of this for local and global storage. PageSetupDlg requires a HGLOBAL handle to the memory. *) fun getCDevMode(v: voidStar) : DEVMODE = let val ptr = ref v fun getShort() = loadShort(!ptr) before ptr := !ptr ++ sizeShort and getDWord() = loadDWord(!ptr) before ptr := !ptr ++ sizeDWord val deviceName = fromCstring (!ptr) val () = ptr := !ptr ++ 0w32 val _ = getShort() val driverVersion = getShort() val _ = getShort() val driverExtra = getShort() (* The "fields" value determines which of the fields are valid. *) val fields = getDWord() fun getOpt opt conv v = if IntInf.andb(fields, opt) = 0 then NONE else SOME(conv v) fun I x = x val orientation = (getOpt DM_ORIENTATION toDMO o getShort) () val paperSize = (getOpt DM_PAPERSIZE toDMPS o getShort) () val paperLength = getOpt DM_PAPERLENGTH I (getShort()) val paperWidth = getOpt DM_PAPERWIDTH I (getShort()) val scale = getOpt DM_SCALE I (getShort()) val copies = getOpt DM_COPIES I (getShort()) val defaultSource = (getOpt DM_DEFAULTSOURCE toDMS o getShort) () val printQuality = (getOpt DM_PRINTQUALITY toDMR o getShort) () val colour = (getOpt DM_COLOR toDMC o getShort) () val duplex = (getOpt DM_DUPLEX toDMD o getShort) () val yResolution = getOpt DM_YRESOLUTION I (getShort()) val ttOption = (getOpt DM_TTOPTION toDMTT o getShort) () val collate = getOpt DM_COLLATE I (getShort()) val formName = getOpt DM_FORMNAME I (fromCstring(!ptr)) val () = ptr := !ptr ++ 0w32 val logPixels = getOpt DM_LOGPIXELS I (getShort()) val bitsPerPixel = getOpt DM_BITSPERPEL I (getDWord()) val pelsWidth = getOpt DM_PELSWIDTH I (getDWord()) val pelsHeight = getOpt DM_PELSHEIGHT I (getDWord()) val displayFlags = getOpt DM_DISPLAYFLAGS I (getDWord()) (* Or dmNup *) val displayFrequency = getOpt DM_DISPLAYFREQUENCY I (getDWord()) val icmMethod = (getOpt DM_ICMMETHOD toDMICMM o getDWord) () val icmIntent = (getOpt DM_ICMINTENT toDMICMI o getDWord) () val mediaType = (getOpt DM_MEDIATYPE toDMM o getDWord) () val ditherType = (getOpt DM_DITHERTYPE toDMDi o getDWord) () val (*iccManufacturer*)_ = getDWord() val (*iccModel*)_ = getDWord() val panningWidth = getOpt DM_PANNINGWIDTH I (getDWord()) val panningHeight = getOpt DM_PANNINGHEIGHT I (getDWord()) val _ = voidStar2Sysword(!ptr) - voidStar2Sysword v = Word.toLargeWord DMBaseSize orelse raise Fail "loadCDevMode: length wrong" (* There may be private data at the end. *) fun loadByte _ = Memory.get8(!ptr, 0w0) before ptr := !ptr ++ 0w1 val driverPrivate = Word8Vector.tabulate(driverExtra, loadByte) in { deviceName = deviceName, driverVersion = driverVersion, orientation = orientation, paperSize = paperSize, paperLength = paperLength, paperWidth = paperWidth, scale = scale, copies = copies, defaultSource = defaultSource, printQuality = printQuality, color = colour, duplex = duplex, yResolution = yResolution, ttOption = ttOption, collate = case collate of NONE => NONE | SOME 0 => SOME false | SOME _ => SOME true, formName = formName, logPixels = logPixels, bitsPerPixel = bitsPerPixel, pelsWidth = pelsWidth, pelsHeight = pelsHeight, displayFlags = displayFlags, displayFrequency = displayFrequency, icmMethod = icmMethod, icmIntent = icmIntent, mediaType = mediaType, ditherType = ditherType, panningWidth = panningWidth, panningHeight = panningHeight, driverPrivate = driverPrivate } end fun setCDevMode(v: voidStar, (* This is the address of the data *) { deviceName: string, driverVersion: int, orientation: DMOrientation option, paperSize: DMPaperSize option, paperLength: int option, paperWidth: int option, scale: int option, copies: int option, defaultSource: DMSource option, printQuality: DMResolution option, color: DMColor option, duplex: DMDuplex option, yResolution: int option, ttOption: DMTrueType option, collate: bool option, formName: string option, logPixels: int option, bitsPerPixel: int option, pelsWidth: int option, pelsHeight: int option, displayFlags: int option, (* Apparently no longer used. *) displayFrequency: int option, icmMethod: DMICMMethod option, icmIntent: DMICMIntent option, mediaType: DMMedia option, ditherType: DMDither option, panningWidth: int option, panningHeight: int option, driverPrivate: Word8Vector.vector }: DEVMODE) : unit = let val ptr = ref v (* The name can be at most 31 characters. *) val devName = if size deviceName > 31 then String.substring(deviceName, 0, 31) else deviceName (* setShort and setLong set the appropriate field and advance the pointer. *) fun setShort i = ignore(storeShort(!ptr, i)) before ptr := !ptr ++ sizeShort and setDWord i = ignore(storeDWord(!ptr, i)) before ptr := !ptr ++ sizeDWord (* Optional values default to zero. If the option is SOME v we set the appropriate bit in "fields". *) val fields = ref 0 fun setOpt _ _ NONE = 0 | setOpt opt conv (SOME v) = (fields := IntInf.orb(!fields, opt); conv v) fun I x = x fun fromCollate true = 1 | fromCollate false = 0 val form = case formName of NONE => "" | SOME s => if size s > 31 then String.substring(s, 0, 31) else s in CharVector.appi(fn (i, c) => set8(!ptr, Word.fromInt i, Word8.fromInt(ord c))) devName; set8(!ptr, Word.fromInt(size devName), 0w0); ptr := !ptr ++ 0w32; setShort DM_SPECVERSION; setShort driverVersion; setShort (Word.toInt DMBaseSize); setShort (Word8Vector.length driverPrivate); setDWord 0; (* Fields - set this later. *) setShort(setOpt DM_ORIENTATION fromDMO orientation); setShort(setOpt DM_PAPERSIZE fromDMPS paperSize); setShort(setOpt DM_PAPERLENGTH I paperLength); setShort(setOpt DM_PAPERWIDTH I paperWidth); setShort(setOpt DM_SCALE I scale); setShort(setOpt DM_COPIES I copies); setShort(setOpt DM_DEFAULTSOURCE fromDMS defaultSource); setShort(setOpt DM_PRINTQUALITY fromDMR printQuality); setShort(setOpt DM_COLOR fromDMC color); setShort(setOpt DM_DUPLEX fromDMD duplex); setShort(setOpt DM_YRESOLUTION I yResolution); setShort(setOpt DM_TTOPTION fromDMTT ttOption); setShort(setOpt DM_COLLATE fromCollate collate); CharVector.appi(fn (i, c) => set8(!ptr, Word.fromInt i, Word8.fromInt(ord c))) form; set8(!ptr, Word.fromInt(size form), 0w0); ptr := !ptr ++ 0w32; setShort(setOpt DM_LOGPIXELS I logPixels); setDWord(setOpt DM_BITSPERPEL I bitsPerPixel); setDWord(setOpt DM_PELSWIDTH I pelsWidth); setDWord(setOpt DM_PELSHEIGHT I pelsHeight); setDWord(setOpt DM_DISPLAYFLAGS I displayFlags); setDWord(setOpt DM_DISPLAYFREQUENCY I displayFrequency); setDWord(setOpt DM_ICMMETHOD fromDMICMM icmMethod); setDWord(setOpt DM_ICMINTENT fromDMICMI icmIntent); setDWord(setOpt DM_MEDIATYPE fromDMM mediaType); setDWord(setOpt DM_DITHERTYPE fromDMDi ditherType); setDWord 0; setDWord 0; setDWord(setOpt DM_PANNINGWIDTH I panningWidth); setDWord(setOpt DM_PANNINGHEIGHT I panningHeight); (* Set the fields now. *) ignore(storeDWord(v ++ 0w40, !fields)); let fun copyToBuf (_, c) = set8(!ptr, 0w0, c) before ptr := !ptr ++ 0w1 in Word8Vector.appi copyToBuf driverPrivate end end fun devModeSize({driverPrivate: Word8Vector.vector, ...}: DEVMODE): word = DMBaseSize + Word.fromInt (Word8Vector.length driverPrivate) fun storeCDevMode(vaddr: voidStar, devmode) = let val v = malloc (devModeSize devmode) val () = setAddress(vaddr, 0w0, v) in setCDevMode(v, devmode); fn () => free v end fun loadCDevMode(vaddr: voidStar) : DEVMODE = getCDevMode(getAddress(vaddr, 0w0)) in val LPDEVMODE = makeConversion{load=loadCDevMode, store=storeCDevMode, ctype=LowLevel.cTypePointer } val getCDevMode = getCDevMode and setCDevMode = setCDevMode and devModeSize = devModeSize end end end; polyml-5.7.1/mlsource/extra/Win/Window.sml0000644000175000017500000005212513204034553017501 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Window : sig type HWND and HINSTANCE and HMENU type POINT = { x: int, y: int } type RECT = { left: int, top: int, right: int, bottom: int } structure Style: sig include BIT_FLAGS val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags end structure ExStyle: sig include BIT_FLAGS val WS_EX_DLGMODALFRAME: flags and WS_EX_NOPARENTNOTIFY: flags and WS_EX_TOPMOST: flags and WS_EX_ACCEPTFILES : flags and WS_EX_TRANSPARENT: flags and WS_EX_MDICHILD: flags and WS_EX_TOOLWINDOW: flags and WS_EX_WINDOWEDGE: flags and WS_EX_CLIENTEDGE: flags and WS_EX_CONTEXTHELP: flags and WS_EX_RIGHT: flags and WS_EX_LEFT: flags and WS_EX_RTLREADING: flags and WS_EX_LTRREADING: flags and WS_EX_LEFTSCROLLBAR: flags and WS_EX_RIGHTSCROLLBAR: flags and WS_EX_CONTROLPARENT: flags and WS_EX_STATICEDGE: flags and WS_EX_APPWINDOW: flags and WS_EX_OVERLAPPEDWINDOW: flags and WS_EX_PALETTEWINDOW: flags end datatype WindowPositionStyle = SWP_ASYNCWINDOWPOS | SWP_DEFERERASE | SWP_FRAMECHANGED | SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW | SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW | SWP_OTHER of Word32.word datatype ShowWindowOptions = SW_HIDE | SW_MAXIMIZE | SW_MINIMIZE | SW_RESTORE | SW_SHOW | SW_SHOWDEFAULT | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_SHOWMINNOACTIVE | SW_SHOWNA | SW_SHOWNOACTIVATE | SW_SHOWNORMAL val SW_NORMAL: ShowWindowOptions val SW_MAX: ShowWindowOptions val ShowWindow: HWND * ShowWindowOptions -> bool datatype GetWindowFlags = GW_CHILD | GW_HWNDFIRST | GW_HWNDLAST | GW_HWNDNEXT | GW_HWNDPREV | GW_OWNER datatype ParentType = ChildWindow of {id: int, parent: HWND} | PopupWindow of HMENU | PopupWithClassMenu val GWL_EXSTYLE : int val GWL_HINSTANCE : int val GWL_HWNDPARENT : int val GWL_ID : int val GWL_STYLE : int val GWL_USERDATA : int val AdjustWindowRect : RECT * Style.flags * bool -> RECT val AdjustWindowRectEx : RECT * Style.flags * bool * int -> RECT val ArrangeIconicWindows : HWND -> int val BringWindowToTop : HWND -> unit val CW_USEDEFAULT : int val ChildWindowFromPoint : HWND * POINT -> HWND option val CloseWindow : HWND -> unit val CreateWindow : {x: int, y: int, init: 'a, name: string, class: 'a Class.ATOM, style: Style.flags, width: int, height: int, instance: HINSTANCE, relation: ParentType} -> HWND val CreateWindowEx : {x: int, y: int, init: 'a, name: string, class: 'a Class.ATOM, style: Style.flags, width: int, height: int, instance: HINSTANCE, relation: ParentType, exStyle: ExStyle.flags} -> HWND val CreateMDIClient: { relation: ParentType, style: Style.flags, instance: HINSTANCE, windowMenu: HMENU, idFirstChild: int} -> HWND val DefWindowProc: HWND * Message.Message -> Message.LRESULT val DefFrameProc: HWND * HWND * Message.Message -> Message.LRESULT val DefMDIChildProc: HWND * Message.Message -> Message.LRESULT val DestroyWindow: HWND -> unit val FindWindow: string option * string option -> HWND val FindWindowEx: HWND option * HWND option * string option * string option -> HWND val GetClassName : HWND -> string val GetClientRect : HWND -> RECT val GetDesktopWindow : unit -> HWND val GetForegroundWindow : unit -> HWND val GetLastActivePopup : HWND -> HWND val GetNextWindow : HWND * GetWindowFlags -> HWND val GetParent : HWND -> HWND option val GetTopWindow : HWND option -> HWND option val GetWindow : HWND * GetWindowFlags -> HWND option val GetWindowContextHelpId : HWND -> int val GetWindowLongPtr : HWND * int -> int val GetWindowRect : HWND -> RECT val GetWindowText : HWND -> string val GetWindowTextLength : HWND -> int val IsChild : HWND * HWND -> bool val IsIconic : HWND -> bool val IsWindow : HWND -> bool val IsWindowVisible : HWND -> bool val IsZoomed : HWND -> bool val MoveWindow : {x: int, y: int, hWnd: HWND, width: int, height: int, repaint: bool} -> unit val OpenIcon : HWND -> unit val SetForegroundWindow : HWND -> bool val SetParent : HWND * HWND option -> HWND val SetWindowContextHelpId : HWND * int -> unit val SetWindowLongPtr : HWND * int * int -> int val SetWindowPos : HWND * HWND * int * int * int * int * WindowPositionStyle list -> unit val SetWindowText : HWND * string -> unit val SubclassWindow : HWND * (HWND * Message.Message * 'a -> Message.LRESULT * 'a) * 'a -> (HWND * Message.Message) -> Message.LRESULT val WindowFromPoint : POINT -> HWND option end = struct local open Foreign open Globals open Base open Resource open Class fun checkWindow c = (checkResult(not(isHNull c)); c) in type HWND = HWND and HINSTANCE = HINSTANCE and RECT = RECT and POINT = POINT and HMENU = HMENU open WinBase (* Get Style and SetWindowPositionStyle *) datatype ShowWindowOptions = SW_HIDE | SW_MAXIMIZE | SW_MINIMIZE | SW_RESTORE | SW_SHOW | SW_SHOWDEFAULT | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_SHOWMINNOACTIVE | SW_SHOWNA | SW_SHOWNOACTIVATE | SW_SHOWNORMAL val SW_NORMAL = SW_SHOWNORMAL val SW_MAX = SW_SHOWDEFAULT local val showWindow = winCall2 (user "ShowWindow")(cHWND,cInt) (cBool) in fun ShowWindow (win, opt) = let val cmd = case opt of SW_HIDE => 0 | SW_SHOWNORMAL => 1 | SW_SHOWMINIMIZED => 2 | SW_SHOWMAXIMIZED => 3 | SW_MAXIMIZE => 3 | SW_SHOWNOACTIVATE => 4 | SW_SHOW => 5 | SW_MINIMIZE => 6 | SW_SHOWMINNOACTIVE => 7 | SW_SHOWNA => 8 | SW_RESTORE => 9 | SW_SHOWDEFAULT => 10 in showWindow (win, cmd) end end val CloseWindow = winCall1 (user "CloseWindow") (cHWND) (successState "CloseWindow") val FindWindow = checkWindow o winCall2 (user "FindWindowA") (STRINGOPT, STRINGOPT) cHWND val FindWindowEx = checkWindow o winCall4 (user "FindWindowExA") (cHWNDOPT, cHWNDOPT, STRINGOPT, STRINGOPT) cHWND val GetDesktopWindow = winCall0 (user "GetDesktopWindow") () cHWND val GetForegroundWindow = winCall0 (user "GetForegroundWindow") () cHWND val GetLastActivePopup = winCall1 (user "GetLastActivePopup") cHWND cHWND val GetParent = winCall1 (user "GetParent") cHWND cHWNDOPT val GetTopWindow = winCall1 (user "GetTopWindow") cHWNDOPT cHWNDOPT val GetWindowTextLength = winCall1 (user "GetWindowTextLengthA") cHWND cInt val SetWindowText = winCall2 (user "SetWindowTextA") (cHWND, cString) (successState "SetWindowText") local val getTextCall = winCall3 (user "GetWindowTextA") (cHWND, cPointer, cInt) cInt in fun GetWindowText(hwnd: HWND): string = let val baseLen = GetWindowTextLength hwnd (* The length returned by GetWindowTextLength may be larger than the text but we have to add one for the terminating null. *) open Memory val buff = malloc (Word.fromInt(baseLen+1)) val size = getTextCall(hwnd, buff, baseLen+1) in (if size = 0 then "" else fromCstring buff) before free buff end end (* Get the class name of a window. *) local val getClassName = winCall3 (user "GetClassNameA") (cHWND, cPointer, cInt) cInt in (* Unfortunately we can't pass NULL here to get the length. *) fun GetClassName hwnd = getStringCall(fn (v, i) => getClassName(hwnd, v, i)) end datatype GetWindowFlags = GW_CHILD | GW_HWNDFIRST | GW_HWNDLAST | GW_HWNDNEXT | GW_HWNDPREV | GW_OWNER local fun winFlag GW_HWNDFIRST = 0 | winFlag GW_HWNDLAST = 1 | winFlag GW_HWNDNEXT = 2 | winFlag GW_HWNDPREV = 3 | winFlag GW_OWNER = 4 | winFlag GW_CHILD = 5 val getWindow = winCall2 (user "GetWindow") (cHWND, cUint) cHWNDOPT val getNextWindow = winCall2 (user "GetNextWindow") (cHWND,cUint) cHWND in fun GetWindow (win, gwFlag) = getWindow (win, winFlag gwFlag) (* Only GW_HWNDNEXT and GW_HWNDPREV are allowed here but it's probably not worth making it a special case. *) fun GetNextWindow(win: HWND, gwFlag) = checkWindow (getNextWindow (win, winFlag gwFlag)) end val IsChild = winCall2 (user "IsChild") (cHWND,cHWND) cBool val IsIconic = winCall1 (user "IsIconic") (cHWND) cBool val IsWindow = winCall1 (user "IsWindow") (cHWND) cBool val IsWindowVisible = winCall1 (user "IsWindowVisible") (cHWND) cBool val IsZoomed = winCall1 (user "IsZoomed") (cHWND) cBool local val getClientRect = winCall2 (user "GetClientRect") (cHWND, cStar cRect) cBool and getWindowRect = winCall2 (user "GetWindowRect") (cHWND, cStar cRect) cBool and adjustWindowRect = winCall3 (user "AdjustWindowRect") (cStar cRect, cDWORD, cBool) cBool and adjustWindowRectEx = winCall4 (user "AdjustWindowRectEx") (cStar cRect, cDWORD, cBool, cDWORD) cBool in fun GetClientRect(hWnd: HWND): RECT = let val v = ref{bottom=0, top=0, left=0, right=0} val res = getClientRect (hWnd, v) in checkResult res; !v end fun GetWindowRect(hWnd: HWND): RECT = let val v = ref{bottom=0, top=0, left=0, right=0} val res = getWindowRect (hWnd, v) in checkResult res; !v end fun AdjustWindowRect(rect: RECT, style: Style.flags, bMenu: bool): RECT = let val v = ref rect val res = adjustWindowRect(v, LargeWord.toInt(Style.toWord style), bMenu) in checkResult res; !v end fun AdjustWindowRectEx(rect: RECT, style: Style.flags, bMenu: bool, exStyle: int): RECT = let val v = ref rect val res = adjustWindowRectEx(v, LargeWord.toInt(Style.toWord style), bMenu, exStyle) in checkResult res; !v end end val ArrangeIconicWindows = winCall1 (user "ArrangeIconicWindows") (cHWND) cUint val BringWindowToTop = winCall1 (user "BringWindowToTop") (cHWND) (successState "BringWindowToTop") val OpenIcon = winCall1 (user "OpenIcon") (cHWND) (successState "OpenIcon") val SetForegroundWindow = winCall1 (user "SetForegroundWindow") (cHWND) cBool local val setParent = winCall2 (user "SetParent") (cHWND, cHWND) cHWND in fun SetParent(child: HWND, new: HWND option): HWND = let val old = setParent(child, getOpt(new, hwndNull)) in checkResult(not(isHNull old)); old end end local val createWindowEx = winCall12 (user "CreateWindowExA") (cDWORD, cString, cString, cDWORD, cInt, cInt, cInt, cInt, cHWND, cPointer, cHINSTANCE, cPointer) cHWND in fun CreateWindowEx{class: 'a Class.ATOM, (* Window class *) name: string, (* Window name *) style: Style.flags, (* window style *) exStyle: ExStyle.flags, (* extended style *) x: int, (* horizontal position of window *) y: int, (* vertical position of window *) width: int, (* window width *) height: int, (* window height *) relation: ParentType, (* parent or owner window *) instance: HINSTANCE, (* application instance *) init: 'a}: HWND = let (* Set up a winCallback for ML classes and return the class name. *) val className: string = case class of Registered { proc, className} => (Message.setCallback(proc, init); className) | SystemClass s => s val (parent, menu, styleWord) = WinBase.unpackWindowRelation(relation, style) (* Create a window. *) val res = createWindowEx (LargeWord.toInt(ExStyle.toWord exStyle), className, name, LargeWord.toInt styleWord, x, y, width, height, parent, menu, instance, Memory.null) in checkResult(not(isHNull res)); res end end fun CreateWindow{class: 'a Class.ATOM, name: string, style: Style.flags, x: int, y: int, width: int, height: int, relation: ParentType, instance: HINSTANCE, init: 'a}: HWND = CreateWindowEx{exStyle=ExStyle.flags[], class=class, name=name, style=style, x=x, y=y, width=width, height=height,relation=relation, instance=instance, init=init} local val cCLIENTCREATESTRUCT = cStruct2(cHMENU, cUint) val createMDIClient = winCall12 (user "CreateWindowExA") (cDWORD, cString, cPointer, cDWORD, cInt, cInt, cInt, cInt, cHWND, cPointer, cHINSTANCE, cConstStar cCLIENTCREATESTRUCT) cHWND in fun CreateMDIClient{ relation: ParentType, (* This should always be ChildWindow *) style: Style.flags, instance: HINSTANCE, (* application instance *) windowMenu: HMENU, (* Window menu to which children are added. *) idFirstChild: int (* Id of first child when it's created. *) }: HWND = let val (parent, menu, styleWord) = unpackWindowRelation(relation, style) val createS = (windowMenu, idFirstChild) val res = createMDIClient (0, "MDICLIENT", Memory.null, LargeWord.toInt styleWord, 0, 0, 0, 0, parent, menu, instance, createS) in checkResult(not(isHNull res)); res end end local val defWindowProc = winCall4 (user "DefWindowProcA") (cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw and defFrameProc = winCall5 (user "DefFrameProcA") (cHWND, cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw and defMDIChildProc = winCall4 (user "DefMDIChildProcA") (cHWND, cUint, cUINT_PTRw, cUINT_PTRw) cUINT_PTRw in fun DefWindowProc (hWnd: HWND, msg: Message.Message): Message.LRESULT = let val (wMsg, wParam, lParam, freeMsg) = Message.compileMessage msg val res = defWindowProc(hWnd, wMsg, wParam, lParam) in Message.messageReturnFromParams(msg, wParam, lParam, res) before freeMsg() end fun DefFrameProc (hWnd: HWND, hWndMDIClient: HWND, msg: Message.Message): Message.LRESULT = let val (wMsg, wParam, lParam, freeMsg) = Message.compileMessage msg val res = defFrameProc(hWnd, hWndMDIClient, wMsg, wParam, lParam) in (* Write back any changes the function has made. *) Message.messageReturnFromParams(msg, wParam, lParam, res) before freeMsg() end fun DefMDIChildProc (hWnd: HWND, msg: Message.Message): Message.LRESULT = let val (wMsg, wParam, lParam, freeMsg) = Message.compileMessage msg val res = defMDIChildProc(hWnd, wMsg, wParam, lParam) in Message.messageReturnFromParams(msg, wParam, lParam, res) before freeMsg() end end val CW_USEDEFAULT = ~0x80000000 (* Default value for size and/ot position. *) local val destroyWindow = winCall1 (user "DestroyWindow") (cHWND) (successState "DestroyWindow") in fun DestroyWindow(hWnd: HWND) = ( destroyWindow hWnd; Message.removeCallback hWnd ) end (*val GWL_WNDPROC = ~4*) val GWL_HINSTANCE = ~6 val GWL_HWNDPARENT = ~8 val GWL_STYLE = ~16 val GWL_EXSTYLE = ~20 val GWL_USERDATA = ~21 val GWL_ID = ~12 val GetWindowLongPtr = winCall2 (user "GetWindowLongPtrA") (cHWND, cInt) cLONG_PTR (* SetWindowLong is a dangerous function to export. *) val SetWindowLongPtr = winCall3 (user "SetWindowLongPtrA") (cHWND, cInt, cLONG_PTR) cLONG_PTR (* ML extension. This replaces the GetWindowLong and SetWindowLong calls. *) val SubclassWindow = Message.subclass local val moveWindow = winCall6(user "MoveWindow") (cHWND,cInt,cInt,cInt,cInt,cBool) (successState "MoveWindow") in fun MoveWindow{hWnd: HWND, x: int, y: int, height: int, width: int, repaint: bool} = moveWindow(hWnd, x, y, width, height, repaint) end val SetWindowPos = winCall7 (user "SetWindowPos") (cHWND, cHWND, cInt, cInt, cInt, cInt, cWINDOWPOSITIONSTYLE) (successState "SetWindowPos") val SetWindowContextHelpId = winCall2 (user "SetWindowContextHelpId") (cHWND, cDWORD) (successState "SetWindowContextHelpId") val GetWindowContextHelpId = winCall1 (user "GetWindowContextHelpId") (cHWND) cDWORD val ChildWindowFromPoint = winCall2 (user "ChildWindowFromPoint") (cHWND, cPoint) cHWNDOPT and WindowFromPoint = winCall1 (user "WindowFromPoint") (cPoint) cHWNDOPT (* TODO: AnimateWindow - Only Win98/NT 5.0 BeginDeferWindowPos CascadeWindows ChildWindowFromPointEx DeferWindowPos EndDeferWindowPos EnumChildProc EnumChildWindows EnumThreadWindows EnumThreadWndProc EnumWindows EnumWindowsProc GetWindowPlacement GetWindowThreadProcessId IsWindowUnicode SetWindowPlacement ShowOwnedPopups ShowWindowAsync TileWindows *) end end; (* Because we're using opaque matching we have to install pretty printers outside the structure. *) local open Window.Style val flagTable = [(WS_POPUP, "WS_POPUP"), (WS_CHILD, "WS_CHILD"), (WS_MINIMIZE, "WS_MINIMIZE"), (WS_VISIBLE, "WS_VISIBLE"), (WS_DISABLED, "WS_DISABLED"), (WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS"), (WS_CLIPCHILDREN, "WS_CLIPCHILDREN"), (WS_MAXIMIZE, "WS_MAXIMIZE"), (WS_CAPTION, "WS_CAPTION"), (WS_BORDER, "WS_BORDER"), (WS_DLGFRAME, "WS_DLGFRAME"), (WS_VSCROLL, "WS_VSCROLL"), (WS_HSCROLL, "WS_HSCROLL"), (WS_SYSMENU, "WS_SYSMENU"), (WS_THICKFRAME, "WS_THICKFRAME"), (WS_GROUP, "WS_GROUP"), (WS_TABSTOP, "WS_TABSTOP"), (WS_MINIMIZEBOX, "WS_MINIMIZEBOX"), (WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX")] structure FlagP = FlagPrint(structure BITS = Window.Style) in val _ = PolyML.addPrettyPrinter (FlagP.createFlagPrinter flagTable) end; polyml-5.7.1/mlsource/extra/Win/Line.sml0000644000175000017500000001307513204034553017122 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Line : sig type HDC type RECT = { top: int, left: int, bottom: int, right: int } type POINT = { x: int, y: int } datatype PointType = PT_BEZIERTO | PT_BEZIERTOANDCLOSE | PT_LINETO | PT_LINETOANDCLOSE | PT_MOVETO eqtype ArcDirection val AD_CLOCKWISE : ArcDirection val AD_COUNTERCLOCKWISE : ArcDirection val AngleArc : HDC * int * int * int * real * real -> unit val Arc : HDC * int * int * int * int * int * int * int * int -> unit val ArcTo : HDC * int * int * int * int * int * int * int * int -> unit val GetArcDirection : HDC -> ArcDirection val LineTo : HDC * POINT -> unit val MoveToEx : HDC * POINT -> POINT val PolyBezier : HDC * POINT list -> unit val PolyBezierTo : HDC * POINT list -> unit val PolyDraw : HDC * (PointType * POINT) list -> unit val Polyline : HDC * POINT list -> unit val PolylineTo : HDC * POINT list -> unit val SetArcDirection : HDC * ArcDirection -> ArcDirection end = struct local open Foreign Base GdiBase val zeroPoint: POINT = {x=0, y=0} in type HDC = HDC and POINT = POINT and RECT = RECT datatype PointType = datatype PointType local datatype ArcDirection = W of int in type ArcDirection = ArcDirection val ARCDIRECTION = absConversion {abs = W, rep = fn W n => n} cInt val AD_COUNTERCLOCKWISE = W(1) val AD_CLOCKWISE = W(2) end; val AngleArc = winCall6(gdi "AngleArc") (cHDC,cInt,cInt,cDWORD,cFloat,cFloat) (successState "AngleArc") val Arc = winCall9(gdi "Arc") (cHDC,cInt,cInt,cInt,cInt,cInt,cInt,cInt,cInt) (successState "Arc") val ArcTo = winCall9(gdi "ArcTo") (cHDC,cInt,cInt,cInt,cInt,cInt,cInt,cInt,cInt) (successState "ArcTo") val GetArcDirection = winCall1(gdi "GetArcDirection") (cHDC) ARCDIRECTION val SetArcDirection = winCall2(gdi "SetArcDirection") (cHDC,ARCDIRECTION) ARCDIRECTION local val lineTo = winCall3 (gdi "LineTo") (cHDC,cInt,cInt) (successState "LineTo") in fun LineTo (h,({x,y}:POINT)) = lineTo (h,x,y) end local val moveToEx = winCall4 (gdi "MoveToEx") (cHDC, cInt, cInt, cStar cPoint) (successState "MoveToEx") in fun MoveToEx(h, ({x,y}:POINT)) = let val p = ref zeroPoint in moveToEx(h, x, y, p); !p end end local val polyBezier = winCall3 (gdi "PolyBezier") (cHDC,cPointer,cDWORD) (successState "PolyBezier") and polyBezierTo = winCall3 (gdi "PolyBezierTo") (cHDC,cPointer,cDWORD) (successState "PolyBezierTo") and polyDraw = winCall4 (gdi "PolyDraw") (cHDC,cPointer,cPointer, cInt) (successState "PolyDraw") and polyLine = winCall3 (gdi "Polyline") (cHDC,cPointer,cInt) (successState "Polyline") and polyLineTo = winCall3 (gdi "PolylineTo") (cHDC,cPointer,cDWORD) (successState "PolylineTo") val ptList = list2Vector cPoint val pTypeList = list2Vector cPOINTTYPE in fun PolyBezier (h, pts) = let val (ptarr, count) = ptList pts in polyBezier(h, ptarr, count) handle ex => (Memory.free ptarr; raise ex); Memory.free ptarr end and PolyBezierTo (h, pts) = let val (ptarr, count) = ptList pts in polyBezierTo(h, ptarr, count) handle ex => (Memory.free ptarr; raise ex); Memory.free ptarr end and PolyDraw (h, tplist: (PointType * POINT) list) = let val (typeList, pl) = ListPair.unzip tplist val (ptarr, count) = ptList pl val (farr, _) = pTypeList typeList in polyDraw(h, ptarr, farr,count) handle ex => (Memory.free ptarr; Memory.free farr; raise ex); Memory.free ptarr; Memory.free farr end and Polyline (h, pts: POINT list) = let val (ptarr, count) = ptList pts in polyLine(h, ptarr, count) handle ex => (Memory.free ptarr; raise ex); Memory.free ptarr end and PolylineTo (h, pts: POINT list) = let val (ptarr, count) = ptList pts in polyLineTo(h, ptarr, count) handle ex => (Memory.free ptarr; raise ex); Memory.free ptarr end end (* Other Line and Curve functions: LineDDA LineDDAProc PolyPolyline *) end end; polyml-5.7.1/mlsource/extra/Win/Shape.sml0000644000175000017500000000765313204034553017300 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Shape: sig type HBRUSH type HDC type POINT = { x: int, y: int } type RECT = { top: int, left: int, bottom: int, right: int } val Chord : HDC * RECT * POINT * POINT -> unit val Ellipse : HDC * RECT -> unit val FillRect : HDC * RECT * HBRUSH -> unit val FrameRect : HDC * RECT * HBRUSH -> unit val InvertRect : HDC * RECT -> unit val Pie : HDC * RECT * POINT * POINT -> unit val Polygon : HDC * POINT list -> unit val Rectangle : HDC * RECT -> unit val RoundRect : HDC * RECT * int * int -> unit end = struct local open Foreign Base in type HDC = HDC and HBRUSH = HBRUSH type RECT = RECT and POINT = POINT (* FILLED SHAPES *) (* Strangely, some of these are in user32 and some in gdi32. *) val FillRect = winCall3 (user "FillRect") (cHDC,cConstStar cRect,cHBRUSH) (successState "FillRect") val FrameRect = winCall3 (user "FrameRect") (cHDC,cConstStar cRect,cHBRUSH) (successState "FrameRect") val InvertRect = winCall2 (user "InvertRect") (cHDC,cConstStar cRect) (successState "InvertRect") local val chord = winCall9 (gdi "Chord") (cHDC,cInt,cInt,cInt,cInt,cInt,cInt,cInt,cInt) (successState "Chord") in fun Chord (h,{left,top,right,bottom}: RECT,{x=x1,y=y1}: POINT,{x=x2,y=y2}: POINT) = chord (h,left,top,right,bottom,x1,y1,x2,y2) end local val ellipse = winCall5 (gdi "Ellipse") (cHDC,cInt,cInt,cInt,cInt) (successState "Ellipse") in fun Ellipse (h,{left,top,right,bottom}: RECT) = ellipse(h,left,top,right,bottom) end local val pie = winCall9 (gdi "Pie") (cHDC,cInt,cInt,cInt,cInt,cInt,cInt,cInt,cInt) (successState "Pie") in fun Pie (h,{left,top,right,bottom}: RECT,{x=x1,y=y1}: POINT,{x=x2,y=y2}: POINT) = pie(h,left,top,right,bottom,x1,y1,x2,y2) end local val polygon = winCall3 (gdi "Polygon") (cHDC,cPointer,cInt) (successState "Polygon") val ptList = list2Vector cPoint in fun Polygon (h,pts: POINT list) = let val (ptarr, count) = ptList pts in polygon (h, ptarr, count) handle ex => (Memory.free ptarr; raise ex); Memory.free ptarr end end local val rectangle = winCall5 (gdi "Rectangle") (cHDC,cInt,cInt,cInt,cInt) (successState "Rectangle") in fun Rectangle(h,{left,top,right,bottom}: RECT) = rectangle(h,left,top,right,bottom) end local val roundRect = winCall7 (gdi "RoundRect") (cHDC,cInt,cInt,cInt,cInt,cInt,cInt) (successState "RoundRect") in fun RoundRect(h,{left,top,right,bottom}: RECT,w,ht) = roundRect(h,left,top,right,bottom,w,ht) end (* Other Filled shape functions: PolyPolygon *) end end; polyml-5.7.1/mlsource/extra/Win/Bitmap.sml0000644000175000017500000004474513204034553017457 0ustar daviddavid(* Copyright (c) 2001-7, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Bitmap: sig type HBITMAP and HDC type COLORREF = Color.COLORREF type RECT = { top: int, left: int, bottom: int, right: int } type SIZE = { cx: int, cy: int } datatype BitmapCompression = BI_BITFIELDS | BI_RGB | BI_RLE4 | BI_RLE8 datatype FloodFillMode = FLOODFILLBORDER | FLOODFILLSURFACE type BITMAP = { width: int, height: int, widthBytes: int, planes: int, bitsPerPixel: int, bits: Word8Vector.vector option } type StretchMode val BLACKONWHITE : StretchMode val COLORONCOLOR : StretchMode val HALFTONE : StretchMode val MAXSTRETCHBLTMODE : StretchMode val WHITEONBLACK : StretchMode type RasterOpCode val BLACKNESS : RasterOpCode val DSTINVERT : RasterOpCode val MERGECOPY : RasterOpCode val MERGEPAINT : RasterOpCode val NOTSRCCOPY : RasterOpCode val NOTSRCERASE : RasterOpCode val PATCOPY : RasterOpCode val PATINVERT : RasterOpCode val PATPAINT : RasterOpCode val SRCAND : RasterOpCode val SRCCOPY : RasterOpCode val SRCERASE : RasterOpCode val SRCINVERT : RasterOpCode val SRCPAINT : RasterOpCode val WHITENESS : RasterOpCode val BitBlt : HDC * int * int * int * int * HDC * int * int * RasterOpCode -> unit val CreateBitmap : {bits: Word8Vector.vector option, width: int, height: int, planes: int, bitsPerPixel: int} -> HBITMAP val CreateBitmapIndirect : BITMAP -> HBITMAP val CreateCompatibleBitmap : HDC * int * int -> HBITMAP val ExtFloodFill : HDC * int * int * COLORREF * FloodFillMode -> unit val GetBitmapBits : HBITMAP * int -> Word8Vector.vector val GetBitmapDimensionEx : HBITMAP -> SIZE val GetPixel : HDC * int * int -> COLORREF val GetStretchBltMode : HDC -> StretchMode type QuaternaryRop val MAKEROP4 : {back: RasterOpCode, fore: RasterOpCode} -> QuaternaryRop val MaskBlt : HDC * int * int * int * int * HDC * int * int * HBITMAP * int * int * QuaternaryRop -> unit (*val PlgBlt : HDC * RECT * HDC * RECT * HBITMAP * int * int -> unit*) val SetBitmapBits : HBITMAP * Word8Vector.vector -> unit val SetBitmapDimensionEx : HBITMAP * int * int * SIZE -> SIZE val SetPixel : HDC * int * int * COLORREF -> COLORREF val SetStretchBltMode : HDC * StretchMode -> unit val StretchBlt : HDC * int * int * int * int * HDC * int * int * int * int * RasterOpCode -> unit type BITMAPINFOHEADER = { width: int, height: int, planes: int, bitsPerPixel: int, compression: BitmapCompression, sizeImage: int, xPelsPerM: int, yPelsPerM: int, clrUsed: int, clrImportant: int } (* ML extension to extract the information from a DIB. *) val getBitmapInfoHdr: Word8Vector.vector -> BITMAPINFOHEADER val GetDIBits: HDC * HBITMAP * int * int * BITMAPINFOHEADER option -> Word8Vector.vector val SetDIBits: HDC * HBITMAP * int * int * Word8Vector.vector -> unit end = struct local open Foreign Base fun checkBitmap c = (checkResult(not(isHgdiObjNull c)); c) in type HDC = HDC and HBITMAP = HBITMAP type COLORREF = Color.COLORREF type SIZE = SIZE and RECT = RECT open GdiBase local datatype StretchMode = W of int in type StretchMode = StretchMode val STRETCHMODE = absConversion {abs = W, rep = fn W n => n} cInt val BLACKONWHITE = W (1) val WHITEONBLACK = W (2) val COLORONCOLOR = W (3) val HALFTONE = W (4) val MAXSTRETCHBLTMODE = W (4) end (*TYPE: FloodFillMode *) datatype FloodFillMode = FLOODFILLBORDER | FLOODFILLSURFACE local val tab = [ (FLOODFILLBORDER, 0), (FLOODFILLSURFACE, 1) ] in val FLOODFILLMODE = tableConversion(tab, NONE) cUint end val ExtFloodFill = winCall5 (gdi "ExtFloodFill") (cHDC,cInt,cInt,cCOLORREF,FLOODFILLMODE) (successState "ExtFloodFill") val GetPixel = winCall3 (gdi "GetPixel") (cHDC,cInt,cInt) cCOLORREF val SetPixel = winCall4 (gdi "SetPixel") (cHDC,cInt,cInt, cCOLORREF) cCOLORREF val BitBlt = winCall9 (gdi "BitBlt") (cHDC,cInt,cInt,cInt,cInt,cHDC,cInt,cInt,cRASTEROPCODE) (successState "BitBlt") val CreateCompatibleBitmap = checkBitmap o winCall3 (gdi "CreateCompatibleBitmap") (cHDC,cInt,cInt) cHBITMAP val GetStretchBltMode = winCall1 (gdi "GetStretchBltMode") (cHDC) STRETCHMODE (* TODO: The raster op is supposed to be a combined operation for the foreground and background. *) val MaskBlt = winCall12(gdi "MaskBlt") (cHDC,cInt,cInt,cInt,cInt,cHDC,cInt,cInt,cHBITMAP,cInt, cInt,cQUATERNARY) (successState "MaskBlt") val SetStretchBltMode = winCall2(gdi "SetStretchBltMode") (cHDC,STRETCHMODE) (successState "SetStretchBltMode") val StretchBlt = winCall11(gdi "StretchBlt") (cHDC,cInt,cInt,cInt,cInt,cHDC,cInt,cInt,cInt,cInt,cRASTEROPCODE) (successState "StretchBlt") (* This definitely has the wrong type. *) (*val PlgBlt = winCall7 (gdi "PlgBlt")(cHDC,RECT,cHDC,RECT,HBITMAP,XCOORD,YCOORD) (successState "PlgBlt")*) local val setBitmapDimensionEx = winCall4 (gdi "SetBitmapDimensionEx") (cHBITMAP, cInt, cInt, cStar cSize) (successState "SetBitmapDimensionEx") in fun SetBitmapDimensionEx(hbm, width, height, s) = let val r = ref s in setBitmapDimensionEx(hbm, width, height, r); !r end end local val getBitmapDimensionEx = winCall2 (gdi "GetBitmapDimensionEx") (cHBITMAP, cStar cSize) (successState "SetBitmapDimensionEx") in fun GetBitmapDimensionEx hbm = let val r = ref {cx=0, cy=0} in getBitmapDimensionEx(hbm, r); !r end end val CreateBitmapIndirect = checkBitmap o winCall1 (gdi "CreateBitmapIndirect") (cConstStar cBITMAP) cHBITMAP local val cbm = checkBitmap o winCall5 (gdi "CreateBitmap") (cInt, cInt, cInt, cInt, cPointer) cHBITMAP in fun CreateBitmap{width, height, planes, bitsPerPixel, bits} = let val vec = case bits of NONE => Memory.null | SOME v => toCWord8vec v val res = cbm(width, height, planes, bitsPerPixel, vec) handle ex => (Memory.free vec; raise ex) in Memory.free vec; checkBitmap res end end (* local (* RGBQUAD values are four bytes of blue, green, red and a reserved byte. *) val RGBQUAD = cStruct4(cUint8, cUint8, cUint8, cUint8) fun from v = let val (b, g, r, _) = v in {red = r, blue = b, green = g} end fun to {red, green, blue} = (blue, green, red, 0) in val RGBQUAD = absConversion {rep=to, abs=from} RGBQUAD end*) (*TYPE: BitmapCompression *) datatype BitmapCompression = BI_RGB | BI_RLE8 | BI_RLE4 | BI_BITFIELDS local val tab = [ (BI_RGB, 0), (BI_RLE8, 1), (BI_RLE4, 2), (BI_BITFIELDS, 3) ] in val (fromComp, toComp) = tableLookup(tab, NONE) val BITCOMPRESSION = absConversion {abs = toComp, rep = fromComp} cDWORD end type BITMAPINFOHEADER = { width: int, height: int, planes: int, bitsPerPixel: int, compression: BitmapCompression, sizeImage: int, xPelsPerM: int, yPelsPerM: int, clrUsed: int, clrImportant: int } (* Device-independent bitmaps are intended to be used for storing and transferring bitmaps. I've written this code to simplify the process of packing and unpacking them. In particular it takes care of the calculating the header size which is generally a bit of a pain. DCJM. *) fun getBitmapInfoHdr(w: Word8Vector.vector): BITMAPINFOHEADER = let val size = LargeWord.toInt(PackWord32Little.subVec(w, 0)) (* Check that the size of the structure given by the first word is less than the overall size. There are various extended versions of the BITMAPINFOHEADER structure but we only look at the fields in the basic one. *) val _ = if size > Word8Vector.length w then raise Fail "Bitmap length field is wrong" else () val width = LargeWord.toIntX(PackWord32Little.subVecX(w, 1)) val height = LargeWord.toIntX(PackWord32Little.subVecX(w, 2)) val planes = LargeWord.toIntX(PackWord16Little.subVecX(w, 6)) val bitsPerPixel = LargeWord.toIntX(PackWord16Little.subVecX(w, 7)) val compression = toComp(LargeWord.toIntX(PackWord32Little.subVecX(w, 4))) val sizeImage = LargeWord.toIntX(PackWord32Little.subVecX(w, 5)) val xPelsPerM = LargeWord.toIntX(PackWord32Little.subVecX(w, 6)) val yPelsPerM = LargeWord.toIntX(PackWord32Little.subVecX(w, 7)) val clrUsed = LargeWord.toIntX(PackWord32Little.subVecX(w, 8)) val clrImportant = LargeWord.toIntX(PackWord32Little.subVecX(w, 9)) in { width = width, height = height, bitsPerPixel = bitsPerPixel, planes = planes, compression = compression, sizeImage = sizeImage, xPelsPerM = xPelsPerM, yPelsPerM = yPelsPerM, clrUsed = clrUsed, clrImportant = clrImportant } end local val DIB_RGB_COLORS = 0 (*val DIB_PAL_COLORS = 1*) val BITMAPINFOHEADER = cStruct11(cDWORD, cLong, cLong, cWORD, cWORD, BITCOMPRESSION, cDWORD, cLong, cLong, cDWORD, cDWORD) val {load=fromR, store=toR, ctype={size=rtypeSize, ...}} = breakConversion BITMAPINFOHEADER val getDIBits = winCall7 (gdi "GetDIBits") (cHDC, cHBITMAP, cUint, cUint, cPointer, cPointer, cUint) cInt val setDIBits = winCall7 (gdi "SetDIBits") (cHDC, cHBITMAP, cUint, cUint, cPointer, cPointer, cUint) cInt val sizeColourEntry = #size LowLevel.cTypeInt (* Should this RGBQUAD? *) in (* This is all a bit messy. GetDIBits can be used in a number of ways to get all or part of the information. Passing NULL for the "bits" argument and setting bitsPerPixel to zero in the BITMAPINFO argument simply fills in the BITMAPINFOHEADER. With bitsPerPixel non-zero it builds a colour table on the end of the BITMAPINFO. With "bits" non-NULL it builds the colour table and creates the bitmap. If NONE is given as the header it returns a vector containing only the header, allowing getBitmapInfoHdr to be used to unpack it. Otherwise it uses the information in the supplied header to get the bitmap. It ignores the passed in sizeImage because that may be wrong. *) fun GetDIBits(hdc: HDC, hb: HBITMAP, startScan, scanLines, NONE) = let (* Allocate a vector for the result and set the length field and bitsPerPixel. The others don't matter. *) open Memory val v = malloc rtypeSize val _ = toR(v, (Word.toInt rtypeSize, 0, 0, 0, 0, BI_RGB, 0, 0, 0, 0, 0)) val res = getDIBits(hdc, hb, startScan, scanLines, Memory.null, v, DIB_RGB_COLORS) handle ex => (free v; raise ex) in checkResult(res <> 0) handle ex => (free v; raise ex); fromCWord8vec(v, Word.toInt rtypeSize) before free v end | GetDIBits(hdc: HDC, hb: HBITMAP, startScan, scanLines, SOME {width, height, planes, bitsPerPixel, compression, sizeImage, xPelsPerM, yPelsPerM, clrUsed, clrImportant}) = let (* The passed in value for sizeImage may be wrong. Call GetDIBits to find the correct value. *) open Memory infix 6 ++ local (* This call will build a colour map so we have to have enough space for it. The biggest possible is with 8 bits. *) val w = malloc (rtypeSize + 0w256 * sizeColourEntry) val _ = toR(w, (Word.toInt rtypeSize, width, height, planes, bitsPerPixel, compression, sizeImage, xPelsPerM, yPelsPerM, clrUsed, clrImportant)) val _ = checkResult(getDIBits(hdc, hb, startScan, scanLines, null, w, DIB_RGB_COLORS) <> 0) handle ex => (free w; raise ex) in val (_, _, _, _, _, _, sizeImage, _, _, _, _) = fromR w val () = free w end (* Calculate the size of the palette. *) val numColours = if clrUsed <> 0 then clrUsed else if bitsPerPixel < 16 then IntInf.<<(1, Word.fromInt bitsPerPixel) else if compression = BI_BITFIELDS then 3 (* These are DWORD colour masks not RGBQUADS. *) else 0 (* No colour table. *) val bitOffset = rtypeSize + Word.fromInt numColours * sizeColourEntry val size = bitOffset + Word.fromInt sizeImage val w = malloc size val _ = toR(w, (Word.toInt rtypeSize, width, height, planes, bitsPerPixel, compression, sizeImage, xPelsPerM, yPelsPerM, clrUsed, clrImportant)) val _ = checkResult(getDIBits(hdc, hb, startScan, scanLines, w ++ bitOffset, w, DIB_RGB_COLORS) <> 0) handle ex => (free w; raise ex) in fromCWord8vec (w, Word.toInt size) before free w end fun SetDIBits(hdc, hb, startScan, scanLines, w) = let open Memory infix 6 ++ val v = toCWord8vec w (*val v = toCbytes w*) (* We need to work out the offset of the bits. For this we need the size of the header structure (which may not be a BITMAPINFOHEADER but some other version of it), the number of colours and the compression. *) val hdrSize = #1 (fromR v) val { clrUsed, compression, bitsPerPixel, ...} = getBitmapInfoHdr w val numColours = if clrUsed <> 0 then clrUsed else if bitsPerPixel < 16 then IntInf.<<(1, Word.fromInt bitsPerPixel) else if compression = BI_BITFIELDS then 3 (* These are DWORD colour masks not RGBQUADS. *) else 0 (* No colour table. *) val bitOffset = Word.fromInt hdrSize +Word.fromInt numColours * sizeColourEntry val res = setDIBits(hdc, hb, startScan, scanLines, v ++ bitOffset, v, DIB_RGB_COLORS) in checkResult(res <> 0) end end (* GetBitmapBits and SetBitmapBits are supposedly obsolete but they're useful for copying device-dependent bitmaps. *) fun GetBitmapBits(hbm, bytes): Word8Vector.vector = let val gbb = winCall3 (gdi "GetBitmapBits") (cHBITMAP, cDWORD, cPointer) cLong open Memory val buff = malloc (Word.fromInt bytes) val () = checkResult(gbb(hbm, bytes, buff) > 0) handle ex => (free buff; raise ex) in fromCWord8vec (buff, bytes) before free buff end fun SetBitmapBits(hbm, w) = let val sbb = winCall3 (gdi "SetBitmapBits") (cHBITMAP, cDWORD, cPointer) cLong val buff = toCWord8vec w open Memory val () = checkResult(sbb(hbm, Word8Vector.length w, buff) > 0) handle ex => (free buff; raise ex) in free buff end (* Other Bitmap functions: AlphaBlend CreateDIBitmap CreateDIBSection - This creates an area of memory to write to - won't work in ML. GetDIBColorTable GradientFill SetDIBColorTable SetDIBitsToDevice SetPixelV StretchDIBits TransparentBlt *) end end; polyml-5.7.1/mlsource/extra/Win/Icon.sml0000644000175000017500000000557513204034553017131 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Icon: sig type HICON and HINSTANCE and HDC val CopyIcon : HICON -> HICON val DestroyIcon : HICON -> unit val DrawIcon : HDC * int * int * HICON -> unit val ExtractIcon : HINSTANCE * string * int -> HICON val IDI_APPLICATION : Resource.RESID val IDI_ASTERISK : Resource.RESID val IDI_ERROR : Resource.RESID val IDI_EXCLAMATION : Resource.RESID val IDI_HAND : Resource.RESID val IDI_INFORMATION : Resource.RESID val IDI_QUESTION : Resource.RESID val IDI_WARNING : Resource.RESID val IDI_WINLOGO : Resource.RESID val LoadIcon : HINSTANCE * Resource.RESID -> HICON end = struct local open Foreign open Base open Resource in type HICON = HICON and HINSTANCE = HINSTANCE and HDC = HDC val isHiconNull = isHgdiObjNull fun checkIcon c = (checkResult(not(isHiconNull c)); c) val CopyIcon = checkIcon o winCall1 (user "CopyIcon") (cHICON) cHICON val DestroyIcon = checkResult o winCall1 (user "DestroyIcon") (cHICON) cBool val DrawIcon = checkResult o winCall4 (user "DrawIcon") (cHDC, cInt, cInt, cHICON) cBool val ExtractIcon = winCall3 (user "ExtractIcon") (cHINSTANCE, cString, cUint) cHICON val LoadIcon = checkIcon o winCall2 (user "LoadIconA") (cHINSTANCE, cRESID) cHICON (* Built-in icons. *) val IDI_APPLICATION = Resource.IdAsInt 32512 val IDI_ASTERISK = Resource.IdAsInt 32516 val IDI_EXCLAMATION = Resource.IdAsInt 32515 val IDI_HAND = Resource.IdAsInt 32513 val IDI_ERROR = IDI_HAND val IDI_INFORMATION = IDI_ASTERISK val IDI_QUESTION = Resource.IdAsInt 32514 val IDI_WARNING = IDI_EXCLAMATION val IDI_WINLOGO = Resource.IdAsInt 32517 (* TODO: CreateIcon - complicated CreateIconFromResource - complicated CreateIconFromResourceEx CreateIconIndirect DrawIconEx ExtractAssociatedIcon ExtractIconEx GetIconInfo LookupIconIdFromDirectory LookupIconIdFromDirectoryEx *) end end; polyml-5.7.1/mlsource/extra/Win/ml_bind.sml0000644000175000017500000000321613204034553017633 0ustar daviddavid(* Copyright (c) 2001-7 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Build everything. *) local structure d = Dialog structure g = Globals structure c = Cursor structure i = Icon structure m = Menu structure cl = Class structure e = Edit structure w = Window structure o = CommonDialog structure b = MessageBox structure t = Caret structure cb = Clipboard structure mf = Metafile structure r = Rectangle structure t = Transform structure p = Printing structure p = Path (* Includes Line *) structure d = DeviceContext (* Includes Pen, Font, Brush, Color *) structure p = Painting structure s = Shape structure l = Line structure b = Bitmap structure c = Clipping structure dd = DragDrop structure k = Keyboard structure m = Mouse structure ws = WinSystem structure lo = Locale structure cc = CommonControls in end; polyml-5.7.1/mlsource/extra/Win/Mouse.sml0000644000175000017500000000370713204034553017324 0ustar daviddavid(* Copyright (c) 2001, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Mouse : sig type HWND type POINT = { x: int, y: int } val DragDetect : HWND * POINT -> bool val GetCapture : unit -> HWND option val GetDoubleClickTime : unit -> Time.time val ReleaseCapture : unit -> unit val SetCapture : HWND -> HWND option val SetDoubleClickTime : Time.time -> unit val SwapMouseButton : bool -> bool end = struct local open Foreign Base in type HWND = HWND and POINT = POINT val GetCapture = winCall0 (user "GetCapture") () cHWNDOPT val SetCapture = winCall1 (user "SetCapture") (cHWND) cHWNDOPT val ReleaseCapture = winCall0 (user "ReleaseCapture") () (successState "ReleaseCapture") val SetDoubleClickTime = winCall1 (user "SetDoubleClickTime") (cUint) (successState "SetDoubleClickTime") o Time.toMilliseconds val GetDoubleClickTime = Time.fromMilliseconds o winCall0 (user "GetDoubleClickTime") () cUint val SwapMouseButton = winCall1 (user "SwapMouseButton") (cBool) cBool val DragDetect = winCall2 (user "DragDetect") (cHWND, cPoint) cBool end end; (* GetMouseMovePoints - NT 5.0 and Windows 98 only mouse_event TrackMouseEvent *) polyml-5.7.1/mlsource/extra/XWindows/0000755000175000017500000000000013204034553016535 5ustar daviddavidpolyml-5.7.1/mlsource/extra/XWindows/XCursors.ML0000644000175000017500000000734613204034553020571 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XCursors: XCURSORS_SIG = struct val XC_num_glyphs = 154 ; val XC_X_cursor = 0 ; val XC_arrow = 2 ; val XC_based_arrow_down = 4 ; val XC_based_arrow_up = 6 ; val XC_boat = 8 ; val XC_bogosity = 10 ; val XC_bottom_left_corner = 12 ; val XC_bottom_right_corner = 14 ; val XC_bottom_side = 16 ; val XC_bottom_tee = 18 ; val XC_box_spiral = 20 ; val XC_center_ptr = 22 ; val XC_circle = 24 ; val XC_clock = 26 ; val XC_coffee_mug = 28 ; val XC_cross = 30 ; val XC_cross_reverse = 32 ; val XC_crosshair = 34 ; val XC_diamond_cross = 36 ; val XC_dot = 38 ; val XC_dotbox = 40 ; val XC_double_arrow = 42 ; val XC_draft_large = 44 ; val XC_draft_small = 46 ; val XC_draped_box = 48 ; val XC_exchange = 50 ; val XC_fleur = 52 ; val XC_gobbler = 54 ; val XC_gumby = 56 ; val XC_hand1 = 58 ; val XC_hand2 = 60 ; val XC_heart = 62 ; val XC_icon = 64 ; val XC_iron_cross = 66 ; val XC_left_ptr = 68 ; val XC_left_side = 70 ; val XC_left_tee = 72 ; val XC_leftbutton = 74 ; val XC_ll_angle = 76 ; val XC_lr_angle = 78 ; val XC_man = 80 ; val XC_middlebutton = 82 ; val XC_mouse = 84 ; val XC_pencil = 86 ; val XC_pirate = 88 ; val XC_plus = 90 ; val XC_question_arrow = 92 ; val XC_right_ptr = 94 ; val XC_right_side = 96 ; val XC_right_tee = 98 ; val XC_rightbutton = 100 ; val XC_rtl_logo = 102 ; val XC_sailboat = 104 ; val XC_sb_down_arrow = 106 ; val XC_sb_h_double_arrow = 108 ; val XC_sb_left_arrow = 110 ; val XC_sb_right_arrow = 112 ; val XC_sb_up_arrow = 114 ; val XC_sb_v_double_arrow = 116 ; val XC_shuttle = 118 ; val XC_sizing = 120 ; val XC_spider = 122 ; val XC_spraycan = 124 ; val XC_star = 126 ; val XC_target = 128 ; val XC_tcross = 130 ; val XC_top_left_arrow = 132 ; val XC_top_left_corner = 134 ; val XC_top_right_corner = 136 ; val XC_top_side = 138 ; val XC_top_tee = 140 ; val XC_trek = 142 ; val XC_ul_angle = 144 ; val XC_umbrella = 146 ; val XC_ur_angle = 148 ; val XC_watch = 150 ; val XC_xterm = 152 ; end (* XCursors *) ; polyml-5.7.1/mlsource/extra/XWindows/XWINDOWS_SIG.ML0000644000175000017500000010567713204034553020773 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (****************************************************************************** ****************************************************************************** *** *** *** Copyright (c) Abstract Hardware Limited 1988 - 1994 *** *** *** *** Copyright (c) 1987 Digital Equipment Corporation *** *** Copyright (c) 1987 Massachusetts Institute of Technology *** *** *** *** All Rights Reserved *** *** *** *** Permission to use, copy, modify, and distribute this signature and *** *** its documentation for any purpose and without fee is hereby granted, *** *** provided that the above copyright notices appear in all copies and *** *** that both the copyright notices and this permission notice appear in *** *** supporting documentation, and that the names of Digital, MIT and AHL *** *** not be used in advertising or publicity pertaining to distribution of *** *** the signature without specific, written prior permission. Digital, *** *** MIT and AHL disclaim all warranties with regard to this signature, *** *** including all implied warranties of merchantability and fitness, in *** *** no event shall Digital, MIT or AHL be liable for any special, *** *** indirect or consequential damages or any damages whatsoever resulting *** *** from loss of use, data or profits, whether in an action of contract, *** *** negligence or other tortious action, arising out of or in connection *** *** with the use or performance of this signature. *** *** *** ****************************************************************************** ******************************************************************************) signature XWINDOWS_SIG = sig structure XAtoms : XATOMS_SIG; structure XCursors : XCURSORS_SIG; structure XKeySyms : XKEYSYMS_SIG; exception XWindows of string ; include XEVENT_SIG ; (* Geometry *) val Left: XRectangle -> int ; val Right: XRectangle -> int ; val Top: XRectangle -> int ; val Bottom: XRectangle -> int ; val Width: XRectangle -> int ; (* width and height are non-negative *) val Height: XRectangle -> int ; val TopLeft: XRectangle -> XPoint ; val TopRight: XRectangle -> XPoint ; val BottomLeft: XRectangle -> XPoint ; val BottomRight: XRectangle -> XPoint ; exception XRectangle of { top:int,left:int,bottom:int,right:int } ; val Rect: { left:int,right:int,top:int,bottom:int } -> XRectangle ; val Area: { x:int,y:int,w:int,h:int } -> XRectangle ; val DestructRect: XRectangle -> { left:int,right:int,top:int,bottom:int } ; val DestructArea: XRectangle -> { x:int,y:int,w:int,h:int } ; val SplitRect: XRectangle -> (XPoint * XPoint) ; val MakeRect: XPoint -> XPoint -> XRectangle ; val Reflect: XRectangle -> XRectangle ; val NegativePoint: XPoint -> XPoint ; datatype Section = Nothing | Section of XRectangle ; val Intersection: XRectangle -> XRectangle -> Section ; val Union: XRectangle -> XRectangle -> XRectangle ; val OutsetRect: int -> XRectangle -> XRectangle ; val OffsetRect: XRectangle -> XPoint -> XRectangle ; val IncludePoint: XPoint -> XRectangle -> XRectangle ; (* meant to be used as infix operators *) val AddPoint: (XPoint * XPoint) -> XPoint ; val SubtractPoint: (XPoint * XPoint) -> XPoint ; (* meant to be used as infix predicates *) val Inside: (XRectangle * XRectangle) -> bool ; val Overlap: (XRectangle * XRectangle) -> bool ; val Within: (XPoint * XRectangle) -> bool ; val LeftOf: (XPoint * XRectangle) -> bool ; val RightOf: (XPoint * XRectangle) -> bool ; val AboveOf: (XPoint * XRectangle) -> bool ; val BelowOf: (XPoint * XRectangle) -> bool ; val HorizontallyAbutting: (XRectangle * XRectangle) -> bool ; val VerticallyAbutting: (XRectangle * XRectangle) -> bool ; val origin: XPoint ; val empty: XRectangle ; (* Colorcells *) datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int } ; val Pixel: XColor -> int ; val RGB: XColor -> (int * int * int) ; val Not: int -> int ; (* infix, for not-ing pixel values *) val And: int * int -> int ; (* infix, for and-ing pixel values *) val Or: int * int -> int ; (* infix, for or-ing pixel values *) val Xor: int * int -> int ; (* infix, for xor-ing pixel values *) val >> : int * int -> int ; (* infix, for shifting pixel values *) val << : int * int -> int ; (* infix, for shifting pixel values *) val XAllocColor: Colormap -> XColor -> XColor ; val XAllocColorCells: Colormap -> bool -> int -> int -> (int list * int list) ; val XAllocColorPlanes: Colormap -> bool -> int -> int -> int -> int -> (int list * int * int * int) ; val XAllocNamedColor: Colormap -> string -> (XColor * XColor) ; val XFreeColors: Colormap -> int list -> int -> unit ; val XLookupColor: Colormap -> string -> (XColor * XColor) ; val XParseColor: Colormap -> string -> XColor ; val XQueryColor: Colormap -> int -> XColor ; val XQueryColors: Colormap -> int list -> XColor list ; val XStoreColor: Colormap -> XColor -> unit ; val XStoreColors: Colormap -> XColor list -> unit ; val XStoreNamedColor: Colormap -> string -> int -> (bool * bool * bool) -> unit ; val BlackPixel: Display -> int ; val WhitePixel: Display -> int ; (* Colormaps *) datatype AllocType = AllocNone | AllocAll ; val XCopyColormapAndFree: Colormap -> Colormap ; val XCreateColormap: Drawable -> Visual -> AllocType -> Colormap ; val XFreeColormap: Colormap -> unit ; val XInstallColormap: Colormap -> unit ; val XListInstalledColormaps: Drawable -> Colormap list ; val XSetWindowColormap: Drawable -> Colormap -> unit ; val XUninstallColormap: Colormap -> unit ; val DefaultColormap: Display -> Colormap ; val DefaultVisual: Display -> Visual ; val DisplayCells: Display -> int ; datatype VisualClass = StaticGray | GrayScale | StaticColor | PseudoColor | TrueColor | DirectColor ; val VisualClass: Visual -> VisualClass ; val VisualRedMask: Visual -> int ; val VisualGreenMask: Visual -> int ; val VisualBlueMask: Visual -> int ; (* Cursors *) val XCreateFontCursor: Display -> int -> Cursor ; val XCreateGlyphCursor: Font -> Font -> int -> int -> XColor -> XColor -> Cursor ; val XCreatePixmapCursor: Drawable -> Drawable -> XColor -> XColor -> XPoint -> Cursor ; val XDefineCursor: Drawable -> Cursor -> unit ; val XFreeCursor: Cursor -> unit ; val XQueryBestCursor: Drawable -> XRectangle -> XRectangle ; val XRecolorCursor: Cursor -> XColor -> XColor -> unit ; val XUndefineCursor: Drawable -> unit ; (* Display Specifications *) datatype ShapeClass = CursorShape | TileShape | StippleShape ; val XQueryBestSize: ShapeClass -> Drawable -> XRectangle -> XRectangle ; datatype BackingStore = NotUseful | WhenMapped | Always ; val XOpenDisplay: string -> Display ; val XStartDisplayHandler: Display -> unit ; val AllPlanes: int ; val CellsOfScreen: Display -> int ; val DefaultDepth: Display -> int ; val DisplayHeight: Display -> int ; val DisplayHeightMM: Display -> int ; val DisplayPlanes: Display -> int ; val DisplayString: Display -> string ; val DisplayWidth: Display -> int ; val DisplayWidthMM: Display -> int ; val DoesBackingStore: Display -> BackingStore ; val DoesSaveUnders: Display -> bool ; val EventMaskOfScreen: Display -> EventMask list ; val MaxCmapsOfScreen: Display -> int ; val MinCmapsOfScreen: Display -> int ; val ProtocolRevision: Display -> int ; val ProtocolVersion: Display -> int ; val ServerVendor: Display -> string ; val VendorRelease: Display -> int ; (* Drawing Primitives *) datatype XArc = XArc of XRectangle * int * int ; datatype XTextItem = XTextItem of string * int * Font ; datatype XTextItem16 = XTextItem16 of int list * int * Font ; datatype CoordMode = CoordModeOrigin | CoordModePrevious ; datatype PolyShape = Complex | Nonconvex | Convex ; val XClearArea: Drawable -> XRectangle -> bool -> unit ; val XClearWindow: Drawable -> unit ; val XCopyArea: Drawable -> Drawable -> GC -> XPoint -> XRectangle -> unit ; val XCopyPlane: Drawable -> Drawable -> GC -> XPoint -> XRectangle -> int -> unit ; val XDrawArc: Drawable -> GC -> XArc -> unit ; val XDrawArcs: Drawable -> GC -> XArc list -> unit ; val XDrawImageString: Drawable -> GC -> XPoint -> string -> unit ; val XDrawImageString16: Drawable -> GC -> XPoint -> int list -> unit ; val XDrawLine: Drawable -> GC -> XPoint -> XPoint -> unit ; val XDrawLines: Drawable -> GC -> XPoint list -> CoordMode -> unit ; val XDrawPoint: Drawable -> GC -> XPoint -> unit ; val XDrawPoints: Drawable -> GC -> XPoint list -> CoordMode -> unit ; val XDrawRectangle: Drawable -> GC -> XRectangle -> unit ; val XDrawRectangles: Drawable -> GC -> XRectangle list -> unit ; val XDrawSegments: Drawable -> GC -> (XPoint * XPoint) list -> unit ; val XDrawString: Drawable -> GC -> XPoint -> string -> unit ; val XDrawString16: Drawable -> GC -> XPoint -> int list -> unit ; val XDrawText: Drawable -> GC -> XPoint -> XTextItem list -> unit ; val XDrawText16: Drawable -> GC -> XPoint -> XTextItem16 list -> unit ; val XFillArc: Drawable -> GC -> XArc -> unit ; val XFillArcs: Drawable -> GC -> XArc list -> unit ; val XFillPolygon: Drawable -> GC -> XPoint list -> PolyShape -> CoordMode -> unit ; val XFillRectangle: Drawable -> GC -> XRectangle -> unit ; val XFillRectangles: Drawable -> GC -> XRectangle list -> unit ; (* Events *) val XSelectInput: Drawable -> EventMask list -> unit ; val XSynchronize: Display -> int -> unit ; val XSetHandler: Drawable -> ('a XEvent * 'b -> 'b) -> 'b -> (int -> 'a -> unit) ; val NullHandler: 'a XEvent * 'b -> 'b ; val CurrentTime: int ; datatype RevertCode = RevertToParent | RevertToPointerRoot | RevertToNone ; val XSetInputFocus: Display -> Drawable -> RevertCode -> int -> unit ; val XGetInputFocus: Display -> (Drawable * RevertCode) ; val XSetSelectionOwner: Display -> int -> Drawable -> int -> unit ; val XGetSelectionOwner: Display -> int -> Drawable ; val XConvertSelection: { selection:int, target:int, property:int, requestor:Drawable, time:int } -> unit ; val XSendSelectionNotify: { selection:int, target:int, property:int, requestor:Drawable, time:int } -> unit ; val XDeleteProperty: Drawable -> int -> unit ; val XInternAtom: Display -> string -> bool -> int ; val XGetAtomName: Display -> int -> string ; (* Fonts *) datatype FontDirection = FontLeftToRight | FontRightToLeft ; datatype XCharStruct = XCharStruct of { lbearing: int, rbearing: int, width: int, ascent: int, descent: int, attributes: int } ; datatype XFontStruct = XFontStruct of { font: Font, direction: FontDirection, minChar: int, maxChar: int, minByte1: int, maxByte1: int, allCharsExist: bool, defaultChar: int, minBounds: XCharStruct, maxBounds: XCharStruct, perChar: XCharStruct list, ascent: int, descent: int } ; val XFreeFont: XFontStruct -> unit ; val XGetFontPath: Display -> string list ; val XListFonts: Display -> string -> int -> string list ; val XListFontsWithInfo: Display -> string -> int -> (string list * XFontStruct list) ; val XLoadFont: Display -> string -> Font ; val XLoadQueryFont: Display -> string -> XFontStruct ; val XQueryFont: Font -> XFontStruct ; val XSetFontPath: Display -> string list -> unit ; val XUnloadFont: Font -> unit ; (* Graphics Context *) datatype GCArcMode = ArcChord | ArcPieSlice ; datatype GCOrder = Unsorted | YSorted | YXSorted | YXBanded ; datatype GCFillRule = EvenOddRule | WindingRule ; datatype GCFillStyle = FillSolid | FillTiled | FillStippled | FillOpaqueStippled ; datatype GCFunction = GXclear | GXand | GXandReverse | GXcopy | GXandInverted | GXnoop | GXxor | GXor | GXnor | GXequiv | GXinvert | GXorReverse | GXcopyInverted | GXorInverted | GXnand | GXset ; datatype GCLineStyle = LineSolid | LineOnOffDash | LineDoubleDash ; datatype GCCapStyle = CapNotLast | CapButt | CapRound | CapProjecting ; datatype GCJoinStyle = JoinMiter | JoinRound | JoinBevel ; datatype GCSubwindowMode = ClipByChildren | IncludeInferiors ; val DefaultGC: Display -> GC ; datatype XGCValue = GCFunction of GCFunction | GCPlaneMask of int | GCForeground of int | GCBackground of int | GCLineWidth of int | GCLineStyle of GCLineStyle | GCCapStyle of GCCapStyle | GCJoinStyle of GCJoinStyle | GCFillStyle of GCFillStyle | GCFillRule of GCFillRule | GCTile of Drawable | GCStipple of Drawable | GCTSOrigin of XPoint | GCFont of Font | GCSubwindowMode of GCSubwindowMode | GCGraphicsExposures of bool | GCClipOrigin of XPoint | GCClipMask of Drawable | GCDashOffset of int | GCDashList of int | GCArcMode of GCArcMode ; val XChangeGC: GC -> XGCValue list -> unit ; val XCreateGC: Drawable -> XGCValue list -> GC ; val XFreeGC: GC -> unit ; val XSetArcMode: GC -> GCArcMode -> unit ; val XSetBackground: GC -> int -> unit ; val XSetClipMask: GC -> Drawable -> unit ; val XSetClipOrigin: GC -> XPoint -> unit ; val XSetClipRectangles: GC -> XPoint -> XRectangle list -> GCOrder -> unit ; val XSetDashes: GC -> int -> int list -> unit ; val XSetFillRule: GC -> GCFillRule -> unit ; val XSetFillStyle: GC -> GCFillStyle -> unit ; val XSetFont: GC -> Font -> unit ; val XSetForeground: GC -> int -> unit ; val XSetFunction: GC -> GCFunction -> unit ; val XSetGraphicsExposures: GC -> bool -> unit ; val XSetLineAttributes: GC -> int -> GCLineStyle -> GCCapStyle -> GCJoinStyle -> unit ; val XSetPlaneMask: GC -> int -> unit ; val XSetState: GC -> int -> int -> GCFunction -> int -> unit ; val XSetStipple: GC -> Drawable -> unit ; val XSetSubwindowMode: GC -> GCSubwindowMode -> unit ; val XSetTile: GC -> Drawable -> unit ; val XSetTSOrigin: GC -> XPoint -> unit ; (* Images *) datatype ImageFormat = XYBitmap | XYPixmap | ZPixmap ; datatype ImageOrder = LSBFirst | MSBFirst ; type ImageData ; val Data: string -> ImageData ; datatype XImage = XImage of { data: ImageData, size: XRectangle, depth: int, format: ImageFormat, xoffset: int, bitmapPad: int, byteOrder: ImageOrder, bitmapUnit: int, bitsPerPixel: int, bytesPerLine: int, visualRedMask: int, bitmapBitOrder: ImageOrder, visualBlueMask: int, visualGreenMask: int } ; val XAddPixel: Display -> XImage -> int -> unit ; val XCreateImage: Visual -> int -> ImageFormat -> int -> string -> XRectangle -> int -> int -> XImage ; val XGetImage: Drawable -> XRectangle -> int -> ImageFormat -> XImage ; val XGetPixel: Display -> XImage -> XPoint -> int ; val XGetSubImage: Drawable -> XRectangle -> int -> ImageFormat -> XImage -> XPoint -> unit ; val XPutImage: Drawable -> GC -> XImage -> XPoint -> XRectangle -> unit ; val XPutPixel: Display -> XImage -> XPoint -> int -> unit ; val XSubImage: Display -> XImage -> XRectangle -> XImage ; val BitmapBitOrder: Display -> ImageOrder ; val BitmapPad: Display -> int ; val BitmapUnit: Display -> int ; val ByteOrder: Display -> ImageOrder ; val ImageByteOrder: XImage -> ImageOrder ; val ImageSize: XImage -> XRectangle ; val ImageDepth: XImage -> int ; (* Keyboard *) (* keysym values are integers, and are defined in other signatures *) val XLookupString: Drawable -> int -> Modifier list -> (string * int) ; val XQueryKeymap: Display -> bool list ; (* 256 bools *) val IsCursorKey: int -> bool ; val IsFunctionKey: int -> bool ; val IsKeypadKey: int -> bool ; val IsMiscFunctionKey: int -> bool ; val IsModifierKey: int -> bool ; val IsPFKey: int -> bool ; (* Output Buffer *) val XFlush: Display -> unit ; val XSync: Display -> bool -> unit ; (* Pointers *) val XQueryPointer: Drawable -> (bool * Drawable * Drawable * XPoint * XPoint * Modifier list) ; (* Screen Saver *) datatype SaveMode = ScreenSaverReset | ScreenSaverActive ; datatype Blanking = DontPreferBlanking | PreferBlanking | DefaultBlanking ; datatype Exposures = DontAllowExposures | AllowExposures | DefaultExposures ; val XActivateScreenSaver: Display -> unit ; val XForceScreenSaver: Display -> SaveMode -> unit ; val XGetScreenSaver: Display -> (int * int * Blanking * Exposures) ; val XResetScreenSaver: Display -> unit ; val XSetScreenSaver: Display -> int -> int -> Blanking -> Exposures -> unit ; (* Standard Geometry *) val XTranslateCoordinates: Drawable -> Drawable -> XPoint -> XPoint * Drawable ; (* Text *) val XTextExtents: XFontStruct -> string -> (FontDirection * int * int * XCharStruct) ; val XTextExtents16: XFontStruct -> int list -> (FontDirection * int * int * XCharStruct) ; val XTextWidth: XFontStruct -> string -> int ; val XTextWidth16: XFontStruct -> int list -> int ; (* Tiles, Pixmaps, Stipples and Bitmaps *) datatype BitmapStatus = BitmapOpenFailed | BitmapFileInvalid | BitmapNoMemory | BitmapSuccess of Drawable * XRectangle * XPoint ; val XCreateBitmapFromData: Drawable -> string -> XRectangle -> Drawable ; val XCreatePixmap: Drawable -> XRectangle -> int -> Drawable ; val XCreatePixmapFromBitmapData: Drawable -> string -> XRectangle -> int -> int -> int -> Drawable ; val XFreePixmap: Drawable -> unit ; val XQueryBestStipple: Drawable -> XRectangle -> XRectangle ; val XQueryBestTile: Drawable -> XRectangle -> XRectangle ; val XReadBitmapFile: Drawable -> string -> BitmapStatus ; val XWriteBitmapFile: string -> Drawable -> XRectangle -> XPoint -> BitmapStatus ; (* User Preferences *) val XAutoRepeatOff: Display -> unit ; val XAutoRepeatOn: Display -> unit ; val XBell: Display -> int -> unit ; val XGetDefault: Display -> string -> string -> string ; (* Window Attributes *) datatype Gravity = ForgetGravity | NorthWestGravity | NorthGravity | NorthEastGravity | WestGravity | CenterGravity | EastGravity | SouthWestGravity | SouthGravity | SouthEastGravity | StaticGravity ; val UnmapGravity: Gravity ; (* same as ForgetGravity *) datatype XSetWindowAttributes = CWBackPixmap of Drawable | CWBackPixel of int | CWBorderPixmap of Drawable | CWBorderPixel of int | CWBitGravity of Gravity | CWWinGravity of Gravity | CWBackingStore of BackingStore | CWBackingPlanes of int | CWBackingPixel of int | CWOverrideRedirect of bool | CWSaveUnder of bool | CWEventMask of EventMask list | CWDontPropagate of EventMask list | CWColormap of Colormap | CWCursor of Cursor ; datatype WindowClass = CopyFromParentClass | InputOutputClass | InputOnlyClass ; datatype MapState = IsUnmapped | IsUnviewable | IsViewable ; datatype XWindowAttributes = XWindowAttributes of { position: XPoint, size: XRectangle, borderWidth: int, depth: int, visual: Visual, root: Drawable, class: WindowClass, bitGravity: Gravity, winGravity: Gravity, backingStore: BackingStore, backingPlanes: int, backingPixel: int, saveUnder: bool, colormap: Colormap, mapInstalled: bool, mapState: MapState, allEventMasks: EventMask list, yourEventMask: EventMask list, doNotPropagateMask: EventMask list, overrideRedirect: bool } ; val XChangeWindowAttributes: Drawable -> XSetWindowAttributes list -> unit ; val XGetGeometry: Drawable -> (Drawable * XPoint * XRectangle * int * int) ; val XGetWindowAttributes: Drawable -> XWindowAttributes ; val XSetWindowBackground: Drawable -> int -> unit ; val XSetWindowBackgroundPixmap: Drawable -> Drawable -> unit ; val XSetWindowBorder: Drawable -> int -> unit ; val XSetWindowBorderPixmap: Drawable -> Drawable -> unit ; val XSetWindowBorderWidth: Drawable -> int -> unit ; (* Window Configuration *) datatype CirculateDirection = RaiseLowest | LowerHighest ; datatype XWindowChanges = CWPosition of XPoint | CWSize of XRectangle | CWBorderWidth of int | CWStackMode of StackMode | CWSibling of Drawable ; val XCirculateSubwindows: Drawable -> CirculateDirection -> unit ; val XCirculateSubwindowsDown: Drawable -> unit ; val XCirculateSubwindowsUp: Drawable -> unit ; val XConfigureWindow: Drawable -> XWindowChanges list -> unit ; val XLowerWindow: Drawable -> unit ; val XMapRaised: Drawable -> unit ; val XMapSubwindows: Drawable -> unit ; val XMapWindow: Drawable -> unit ; val XMoveResizeWindow: Drawable -> XPoint -> XRectangle -> unit ; val XMoveWindow: Drawable -> XPoint -> unit ; val XQueryTree: Drawable -> (Drawable * Drawable * Drawable list) ; val XRaiseWindow: Drawable -> unit ; val XReparentWindow: Drawable -> Drawable -> XPoint -> unit ; val XResizeWindow: Drawable -> XRectangle -> unit ; val XRestackWindows: Drawable list -> unit ; val XUnmapSubwindows: Drawable -> unit ; val XUnmapWindow: Drawable -> unit ; (* Window Existence *) val NoDrawable: Drawable ; val NoCursor: Cursor ; val NoFont: Font ; val NoColormap: Colormap ; val NoVisual: Visual ; val ParentRelative: Drawable ; val CopyFromParentDrawable: Drawable ; val CopyFromParentVisual: Visual ; val PointerWindow: Drawable ; val InputFocus: Drawable ; val PointerRoot: Drawable ; val NoSymbol: int ; val AnyKey: int ; val RootWindow: Display -> Drawable ; val XDestroyWindow: Drawable -> unit ; val XDestroySubwindows: Drawable -> unit ; val XCreateSimpleWindow: Drawable -> XPoint -> XRectangle -> int -> int -> int -> Drawable ; val XCreateWindow: Drawable -> XPoint -> XRectangle -> int -> int -> WindowClass -> Visual -> XSetWindowAttributes list -> Drawable ; (* Window Manager *) datatype XWMStateHint = DontCareState | NormalState | ZoomState | IconicState | InactiveState ; datatype XWMHint = InputHint of bool | StateHint of XWMStateHint | IconPixmapHint of Drawable | IconWindowHint of Drawable | IconPositionHint of XPoint | IconMaskHint of Drawable ; datatype XWMSizeHint = PPosition of XPoint | PSize of XRectangle | PMinSize of XRectangle | PMaxSize of XRectangle | PResizeInc of XRectangle | PAspect of XPoint * XPoint | PBaseSize of XRectangle | PWinGravity of Gravity ; datatype XStandardColormap = XStandardColormap of { colormap: Colormap, redMax: int, redMult: int, greenMax: int, greenMult: int, blueMax: int, blueMult: int, basePixel: int, visual: Visual } ; datatype PropertyValue = PropertyArc of XArc list | PropertyAtom of int list | PropertyBitmap of Drawable list | PropertyColormap of Colormap list | PropertyCursor of Cursor list | PropertyDrawable of Drawable list | PropertyFont of Font list | PropertyInteger of int list | PropertyPixmap of Drawable list | PropertyPoint of XPoint list | PropertyRectangle of XRectangle list | PropertyRGBColormap of XStandardColormap list | PropertyString of string | PropertyVisual of Visual list | PropertyWindow of Drawable list | PropertyWMHints of XWMHint list | PropertyWMSizeHints of XWMSizeHint list | PropertyWMIconSizes of (XRectangle * XRectangle * XRectangle) list ; val XSetProperty: Drawable -> int -> PropertyValue -> int -> unit ; val XGetTextProperty: Drawable -> int -> (string * int * int * int) ; val XGetWMName: Drawable -> string ; val XGetWMIconName: Drawable -> string ; val XGetWMClientMachine: Drawable -> string ; val XSetWMName: Drawable -> string -> unit ; val XSetWMIconName: Drawable -> string -> unit ; val XSetWMClientMachine: Drawable -> string -> unit ; val XGetWMCommand: Drawable -> string list ; val XGetWMClass: Drawable -> string list ; val XSetWMCommand: Drawable -> string list -> unit ; val XSetWMClass: Drawable -> string list -> unit ; val XSetWMHints: Drawable -> XWMHint list -> unit ; val XGetWMHints: Drawable -> XWMHint list ; val XSetWMSizeHints: Drawable -> int -> XWMSizeHint list -> unit ; val XGetWMSizeHints: Drawable -> int -> XWMSizeHint list ; val XSetWMNormalHints: Drawable -> XWMSizeHint list -> unit ; val XGetWMNormalHints: Drawable -> XWMSizeHint list ; val XWMGeometry: Display -> string -> string -> int -> XWMSizeHint list -> XPoint * XRectangle * Gravity ; val XSetWMProperties: Drawable -> string -> string -> string list -> XWMSizeHint list -> XWMHint list -> string list -> unit ; val XSetIconSizes: Drawable -> (XRectangle * XRectangle * XRectangle) list -> unit ; val XGetIconSizes: Drawable -> (XRectangle * XRectangle * XRectangle) list ; val XSetTransientForHint: Drawable -> Drawable -> unit ; val XGetTransientForHint: Drawable -> Drawable ; val XSetWMColormapWindows: Drawable -> Drawable list -> unit ; val XGetWMColormapWindows: Drawable -> Drawable list ; val XSetRGBColormaps: Drawable -> int -> XStandardColormap list -> unit ; val XGetRGBColormaps: Drawable -> int -> XStandardColormap list ; (* Miscellaneous and Convenience functions *) val ColormapID: Colormap -> int ; (* id numbers for X resources *) val CursorID: Cursor -> int ; (* two X resources with the same id are the same resource *) val DrawableID: Drawable -> int ; val FontID: Font -> int ; val GCID: GC -> int ; val VisualID: Visual -> int ; val SameDrawable: Drawable -> Drawable -> bool ; val ColormapDisplay: Colormap -> Display ; (* Display associated with X resource *) val CursorDisplay: Cursor -> Display ; val DrawableDisplay: Drawable -> Display ; val FontDisplay: Font -> Display ; val GCDisplay: GC -> Display ; val VisualDisplay: Visual -> Display ; val ColormapExists: Colormap -> bool ; (* value brought across from previous session *) val CursorExists: Cursor -> bool ; val DrawableExists: Drawable -> bool ; val FontExists: Font -> bool ; val GCExists: GC -> bool ; val VisualExists: Visual -> bool ; val DisplayExists: Display -> bool ; val XSetColors: GC -> int -> int -> unit ; (* set foreground and background *) val XGetWindowRoot: Drawable -> Drawable ; (* root from XGetGeometry *) val XGetWindowPosition: Drawable -> XPoint ; (* position from XGetGeometry *) val XGetWindowSize: Drawable -> XRectangle ; (* size from XGetGeometry *) val XGetWindowBorderWidth: Drawable -> int ; (* border width from XGetGeometry *) val XGetWindowDepth: Drawable -> int ; (* depth from XGetGeometry *) val XGetWindowParent: Drawable -> Drawable ; (* parent from XQueryTree *) val XGetWindowChildren: Drawable -> Drawable list ; (* children from XQueryTree *) val GetTimeOfDay: unit -> int * int ; val FSFont: XFontStruct -> Font ; val FSDirection: XFontStruct -> FontDirection ; val FSMinChar: XFontStruct -> int ; val FSMaxChar: XFontStruct -> int ; val FSMinByte1: XFontStruct -> int ; val FSMaxByte1: XFontStruct -> int ; val FSAllCharsExist: XFontStruct -> bool ; val FSDefaultChar: XFontStruct -> int ; val FSMinBounds: XFontStruct -> XCharStruct ; val FSMaxBounds: XFontStruct -> XCharStruct ; val FSPerChar: XFontStruct -> XCharStruct list ; val FSAscent: XFontStruct -> int ; val FSDescent: XFontStruct -> int ; val CharLBearing: XCharStruct -> int ; val CharRBearing: XCharStruct -> int ; val CharWidth: XCharStruct -> int ; val CharAscent: XCharStruct -> int ; val CharDescent: XCharStruct -> int ; val CharAttributes: XCharStruct -> int ; val FSMinWidth: XFontStruct -> int ; val FSMaxWidth: XFontStruct -> int ; val FSMinHeight: XFontStruct -> int ; val FSMaxHeight: XFontStruct -> int ; val ShiftDown: Modifier list -> bool ; val ControlDown: Modifier list -> bool ; end (* XWINDOWS_SIG *) ; polyml-5.7.1/mlsource/extra/XWindows/ml_bind.ML0000644000175000017500000030116113204034553020375 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XWindows: XWINDOWS_SIG = struct local open XCall; open XAtoms; local val callX = RunCall.rtsCallFull1 "PolyXWindowsGeneral" in fun xcall n = RunCall.unsafeCast (callX (RunCall.unsafeCast n)) end in structure XAtoms = XAtoms; structure XCursors = XCursors; structure XKeySyms = XKeySyms; exception XWindows = XWindows; (* abstypes *) abstype Colormap = Colormap with end; abstype Cursor = Cursor with end; abstype Display = Display with end; abstype Drawable = Drawable with end; abstype Font = Font with end; abstype GC = GC with end; abstype Visual = Visual with end; (* Geometry *) datatype XPoint = XPoint of { x:int,y:int }; datatype XRectangle = R of { top:int,left:int,bottom:int,right:int }; fun Left (R {left,...}) = left; fun Right (R {right,...}) = right; fun Top (R {top,...}) = top; fun Bottom (R {bottom,...}) = bottom; fun Width (R {right,left,...}) = right - left; fun Height (R {top,bottom,...}) = bottom - top; fun TopLeft (R {top,left,...}) = XPoint { x=left ,y=top }; fun TopRight (R {top,right,...}) = XPoint { x=right,y=top }; fun BottomLeft (R {bottom,left,...}) = XPoint { x=left ,y=bottom }; fun BottomRight (R {bottom,right,...}) = XPoint { x=right,y=bottom }; exception XRectangle of { top:int,left:int,bottom:int,right:int }; fun Rect (rect as {left,top,right,bottom}) = ( if left <= right andalso top <= bottom then R rect else raise XRectangle rect ); fun Area {x,y,w,h} = Rect { left = x, top = y, right = x+w, bottom = y+h }; fun DestructRect (R rect) = rect; fun DestructArea rect = let val {left,top,right,bottom} = DestructRect rect; in { x = left, y = top, w = right-left, h = bottom-top } end; fun SplitRect rect = let val { top,left,bottom,right } = DestructRect rect; in (XPoint { x = left, y = top }, XPoint { x = right, y = bottom }) end; fun min a b : int = if a < b then a else b; fun max a b : int = if a > b then a else b; fun MakeRect p1 p2 = let val (XPoint{x=x1,y=y1}) = p1; val (XPoint{x=x2,y=y2}) = p2; in Rect { left = min x1 x2, top = min y1 y2, right = max x1 x2, bottom = max y1 y2 } end; fun Reflect rect = let val {top,left,bottom,right} = DestructRect rect; in Rect { left = top, top = left, right = bottom, bottom = right } end; fun NegativePoint (XPoint{x,y}) = XPoint { x = ~x, y = ~y }; datatype Section = Nothing | Section of XRectangle; fun Intersection r1 r2 = let val ML = max (Left r1) (Left r2); val MT = max (Top r1) (Top r2); val MR = min (Right r1) (Right r2); val MB = min (Bottom r1) (Bottom r2); in if MR > ML andalso MB > MT then Section (Rect { left = ML, top = MT, right = MR, bottom = MB }) else Nothing end; fun Union r1 r2 = let val ML = min (Left r1) (Left r2); val MT = min (Top r1) (Top r2); val MR = max (Right r1) (Right r2); val MB = max (Bottom r1) (Bottom r2); in Rect { left = ML, top = MT, right = MR, bottom = MB } end; fun OutsetRect dist rect = let val { top,left,bottom,right } = DestructRect rect; in Rect { left = left - dist, top = top - dist, right = right + dist, bottom = bottom + dist } end; fun OffsetRect rect (XPoint{x,y}) = let val { top,left,bottom,right } = DestructRect rect; in Rect { left = left + x, top = top + y, right = right + x, bottom = bottom + y } end; fun IncludePoint (XPoint{x,y}) rect = let val { top,left,bottom,right } = DestructRect rect; in Rect { left = min x left, top = min y top, right = max x right, bottom = max y bottom } end; infix AddPoint SubtractPoint; fun (XPoint{x,y}) AddPoint (XPoint{x=dx,y=dy}) = ( XPoint { x = x + dx, y = y + dy } ); fun (XPoint{x,y}) SubtractPoint (XPoint{x=dx,y=dy}) = ( XPoint { x = x - dx, y = y - dy } ); infix Inside Overlap Within LeftOf RightOf AboveOf BelowOf HorizontallyAbutting VerticallyAbutting; fun r1 Inside r2 = ( Left r1 >= Left r2 andalso Right r1 <= Right r2 andalso Top r1 >= Top r2 andalso Bottom r1 <= Bottom r2 ); fun r1 Overlap r2 = (case (Intersection r1 r2) of Nothing => false | Section _ => true); fun (XPoint{x,y}) Within rect = ( x >= Left rect andalso y >= Top rect andalso x < Right rect andalso y < Bottom rect ); fun (XPoint{x,y}) LeftOf rect = (x < Left rect); fun (XPoint{x,y}) RightOf rect = (x >= Right rect); fun (XPoint{x,y}) AboveOf rect = (y < Top rect); fun (XPoint{x,y}) BelowOf rect = (y >= Bottom rect); fun a HorizontallyAbutting b = ( (Right a = Left b orelse Left a = Right b) andalso (Top a <= Top b) andalso (Bottom a >= Bottom b) ); fun a VerticallyAbutting b = ( (Bottom a = Top b orelse Top a = Bottom b) andalso (Left a <= Left b) andalso (Right a >= Right b) ); val origin = XPoint { x=0,y=0 }; val empty = Area {x=0,y=0,w=0,h=0}; val a1 = Area { x=0,y=0,w=1,h=1 }; (* Colorcells 100 *) datatype XColor = XColor of { doRed: bool, doGreen: bool, doBlue: bool, red: int, green: int, blue: int, pixel: int }; fun Pixel (XColor {pixel,...}) = pixel; fun RGB (XColor {red,green,blue,...}) = (red,green,blue); fun Not (a:int):int = xcall (XCALL_Not,a); infix 9 And Or Xor >> <<; fun a And b = xcall (XCALL_And,a:int,b:int):int; fun a Or b = xcall (XCALL_Or,a:int,b:int):int; fun a Xor b = xcall (XCALL_Xor,a:int,b:int):int; fun a >> b = xcall (XCALL_DownShift,a:int,b:int):int; fun a << b = xcall (XCALL_UpShift,a:int,b:int):int; fun XAllocColor (cmap:Colormap) (x:XColor):XColor = xcall (XCALL_XAllocColor,cmap,x); fun XAllocColorCells (cmap:Colormap) (contig:bool) (nplanes:int) (ncolors:int):(int list * int list) = xcall (XCALL_XAllocColorCells,cmap,contig,nplanes,ncolors); fun XAllocColorPlanes (cmap:Colormap) (contig:bool) (ncolors:int) (nreds:int) (ngreens:int) (nblues:int):(int list * int * int * int) = ( xcall (XCALL_XAllocColorPlanes,cmap,contig,ncolors,nreds,ngreens,nblues) ); fun XAllocNamedColor (cmap:Colormap) (name:string):(XColor * XColor) = xcall (XCALL_XAllocNamedColor,cmap,name); fun XFreeColors (cmap:Colormap) (pixels:int list) (planes:int):unit = xcall (XCALL_XFreeColors,cmap,pixels,planes); fun XLookupColor (cmap:Colormap) (name:string):(XColor * XColor) = xcall (XCALL_XLookupColor,cmap,name); fun XParseColor (cmap:Colormap) (name:string):XColor = xcall (XCALL_XParseColor,cmap,name); fun XQueryColor (cmap:Colormap) (pixel:int):XColor = xcall (XCALL_XQueryColor,cmap,pixel); fun XQueryColors (cmap:Colormap) (pixels:int list):XColor list = xcall (XCALL_XQueryColors,cmap,pixels); fun XStoreColor (cmap:Colormap) (x:XColor):unit = xcall (XCALL_XStoreColor,cmap,x); fun XStoreColors (cmap:Colormap) (L:XColor list):unit = xcall (XCALL_XStoreColors,cmap,L); fun XStoreNamedColor (cmap:Colormap) (name:string) (pixel:int) (r:bool,g:bool,b:bool):unit = xcall (XCALL_XStoreNamedColor,cmap,name,pixel,r,g,b); fun BlackPixel (d:Display) = xcall (XCALL_BlackPixel,d); fun WhitePixel (d:Display) = xcall (XCALL_WhitePixel,d); (* Colormaps 150 *) datatype AllocType = AllocNone | AllocAll; fun fromAllocType AllocNone = 0 | fromAllocType AllocAll = 1; datatype XStandardColormap = XStandardColormap of { colormap: Colormap, redMax: int, redMult: int, greenMax: int, greenMult: int, blueMax: int, blueMult: int, basePixel: int }; fun XCopyColormapAndFree (cmap:Colormap):Colormap = xcall (XCALL_XCopyColormapAndFree,cmap); fun XCreateColormap (d:Drawable) (v:Visual) (a:AllocType):Colormap = xcall (XCALL_XCreateColormap,d,v,fromAllocType a); fun XInstallColormap (cmap:Colormap):unit = xcall (XCALL_XInstallColormap,cmap); fun XListInstalledColormaps (d:Drawable):Colormap list = xcall (XCALL_XListInstalledColormaps,d); fun XUninstallColormap (cmap:Colormap):unit = xcall (XCALL_XUninstallColormap,cmap); fun DefaultColormap (d:Display) = xcall (XCALL_DefaultColormap,d) : Colormap; fun DefaultVisual (d:Display) = xcall (XCALL_DefaultVisual,d) : Visual; fun DisplayCells (d:Display) = xcall (XCALL_DisplayCells,d) : int; datatype VisualClass = StaticGray | GrayScale | StaticColor | PseudoColor | TrueColor | DirectColor; fun VisualClass (v:Visual) = case xcall (XCALL_VisualClass,v) of 0 => StaticGray | 1 => GrayScale | 2 => StaticColor | 3 => PseudoColor | 4 => TrueColor | _ => DirectColor; fun VisualRedMask (v:Visual):int = xcall (XCALL_VisualRedMask,v); fun VisualGreenMask (v:Visual):int = xcall (XCALL_VisualGreenMask,v); fun VisualBlueMask (v:Visual):int = xcall (XCALL_VisualBlueMask,v); (* Cursors 200 *) fun XCreateFontCursor (d:Display) (n:int):Cursor = xcall (XCALL_XCreateFontCursor,d,n); fun XCreateGlyphCursor (sf:Font) (mf:Font) (sc:int) (mc:int) (fg:XColor) (bg:XColor):Cursor = xcall (XCALL_XCreateGlyphCursor,sf,mf,sc,mc,fg,bg); fun XCreatePixmapCursor (src:Drawable) (mask:Drawable) (fg:XColor) (bg:XColor) (hotspot:XPoint):Cursor = xcall (XCALL_XCreatePixmapCursor,src,mask,fg,bg,hotspot); fun XDefineCursor (d:Drawable) (c:Cursor):unit = xcall(XCALL_XDefineCursor,d,c); fun XQueryBestCursor (d:Drawable) (r:XRectangle):XRectangle = xcall (XCALL_XQueryBestCursor,d,r); fun XRecolorCursor (c:Cursor) (fg:XColor) (bg:XColor) = xcall (XCALL_XRecolorCursor,c,fg,bg); fun XUndefineCursor (d:Drawable):unit = xcall (XCALL_XUndefineCursor,d); (* Display Specifications 250 *) datatype BackingStore = NotUseful | WhenMapped | Always; fun toBackingStore 0 = NotUseful | toBackingStore 1 = WhenMapped | toBackingStore _ = Always; fun fromBackingStore NotUseful = 0 | fromBackingStore WhenMapped = 1 | fromBackingStore Always = 2; datatype EventMask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | PointerMotionHintMask | Button1MotionMask | Button2MotionMask | Button3MotionMask | Button4MotionMask | Button5MotionMask | ButtonMotionMask | KeymapStateMask | ExposureMask | VisibilityChangeMask | StructureNotifyMask | ResizeRedirectMask | SubstructureNotifyMask | SubstructureRedirectMask | FocusChangeMask | PropertyChangeMask | ColormapChangeMask | OwnerGrabButtonMask | ButtonClickMask (* extra event mask *); exception BadEventMask of int; fun toEventMask n = let fun MaskName 1 = KeyPressMask | MaskName 2 = KeyReleaseMask | MaskName 4 = ButtonPressMask | MaskName 8 = ButtonReleaseMask | MaskName 16 = EnterWindowMask | MaskName 32 = LeaveWindowMask | MaskName 64 = PointerMotionMask | MaskName 128 = PointerMotionHintMask | MaskName 256 = Button1MotionMask | MaskName 512 = Button2MotionMask | MaskName 1024 = Button3MotionMask | MaskName 2048 = Button4MotionMask | MaskName 4096 = Button5MotionMask | MaskName 8192 = ButtonMotionMask | MaskName 16384 = KeymapStateMask | MaskName 32768 = ExposureMask | MaskName 65536 = VisibilityChangeMask | MaskName 131072 = StructureNotifyMask | MaskName 262144 = ResizeRedirectMask | MaskName 524288 = SubstructureNotifyMask | MaskName 1048576 = SubstructureRedirectMask | MaskName 2097152 = FocusChangeMask | MaskName 4194304 = PropertyChangeMask | MaskName 8388608 = ColormapChangeMask | MaskName 16777216 = OwnerGrabButtonMask | MaskName 536870912 = ButtonClickMask (* extra event mask *) | MaskName n = raise BadEventMask n; fun ShiftAndMask 0 mask acc = acc | ShiftAndMask n mask acc = ShiftAndMask (n And Not mask) (mask << 1) (if (n And mask) <> 0 then MaskName mask :: acc else acc); in ShiftAndMask n 1 [] end; fun fromEventMask list = let fun MaskBit KeyPressMask = 1 | MaskBit KeyReleaseMask = 2 | MaskBit ButtonPressMask = 4 | MaskBit ButtonReleaseMask = 8 | MaskBit EnterWindowMask = 16 | MaskBit LeaveWindowMask = 32 | MaskBit PointerMotionMask = 64 | MaskBit PointerMotionHintMask = 128 | MaskBit Button1MotionMask = 256 | MaskBit Button2MotionMask = 512 | MaskBit Button3MotionMask = 1024 | MaskBit Button4MotionMask = 2048 | MaskBit Button5MotionMask = 4096 | MaskBit ButtonMotionMask = 8192 | MaskBit KeymapStateMask = 16384 | MaskBit ExposureMask = 32768 | MaskBit VisibilityChangeMask = 65536 | MaskBit StructureNotifyMask = 131072 | MaskBit ResizeRedirectMask = 262144 | MaskBit SubstructureNotifyMask = 524288 | MaskBit SubstructureRedirectMask = 1048576 | MaskBit FocusChangeMask = 2097152 | MaskBit PropertyChangeMask = 4194304 | MaskBit ColormapChangeMask = 8388608 | MaskBit OwnerGrabButtonMask = 16777216 | MaskBit ButtonClickMask = 536870912 Or MaskBit ButtonPressMask Or MaskBit ButtonReleaseMask (* extra event mask *); fun OrTogether [] acc = acc | OrTogether (H::T) acc = OrTogether T (MaskBit H Or acc); in OrTogether list 0 end; val AllPlanes = Not 0; fun CellsOfScreen (d:Display) = xcall (XCALL_CellsOfScreen,d) : int; fun DefaultDepth (d:Display) = xcall (XCALL_DefaultDepth,d) : int; fun DisplayHeight (d:Display) = xcall (XCALL_DisplayHeight,d) : int; fun DisplayHeightMM (d:Display) = xcall (XCALL_DisplayHeightMM,d) : int; fun DisplayPlanes (d:Display) = xcall (XCALL_DisplayPlanes,d) : int; fun DisplayString (d:Display) = xcall (XCALL_DisplayString,d) : string; fun DisplayWidth (d:Display) = xcall (XCALL_DisplayWidth,d) : int; fun DisplayWidthMM (d:Display) = xcall (XCALL_DisplayWidthMM,d) : int; fun DoesBackingStore (d:Display) = toBackingStore (xcall (XCALL_DoesBackingStore,d)); fun DoesSaveUnders (d:Display) = xcall (XCALL_DoesSaveUnders,d) : bool; fun EventMaskOfScreen (d:Display) = toEventMask (xcall (XCALL_EventMaskOfScreen,d)); fun MaxCmapsOfScreen (d:Display) = xcall (XCALL_MaxCmapsOfScreen,d) : int; fun MinCmapsOfScreen (d:Display) = xcall (XCALL_MinCmapsOfScreen,d) : int; fun ProtocolRevision (d:Display) = xcall (XCALL_ProtocolRevision,d) : int; fun ProtocolVersion (d:Display) = xcall (XCALL_ProtocolVersion,d) : int; fun ServerVendor (d:Display) = xcall (XCALL_ServerVendor,d) : string; fun VendorRelease (d:Display) = xcall (XCALL_VendorRelease,d) : int; (* Drawing Primitives 300 *) datatype XArc = XArc of XRectangle * int * int; datatype XTextItem = XTextItem of string * int * Font; datatype XTextItem16 = XTextItem16 of int list * int * Font; datatype CoordMode = CoordModeOrigin | CoordModePrevious; fun fromCoordMode CoordModeOrigin = 0 | fromCoordMode CoordModePrevious = 1; datatype PolyShape = Complex | Nonconvex | Convex; fun fromPolyShape Complex = 0 | fromPolyShape Nonconvex = 1 | fromPolyShape Convex = 2; fun XClearArea (d:Drawable) (r:XRectangle) (e:bool):unit = xcall (XCALL_XClearArea,d,r,e); fun XClearWindow (d:Drawable):unit = xcall (XCALL_XClearWindow,d); fun XCopyArea (src:Drawable) (dst:Drawable) (gc:GC) (P:XPoint) (r:XRectangle):unit = xcall (XCALL_XCopyArea,src,dst,gc,P,r); fun XCopyPlane (src:Drawable) (dst:Drawable) (gc:GC) (P:XPoint) (r:XRectangle) (plane:int):unit = xcall (XCALL_XCopyPlane,src,dst,gc,P,r,plane); fun XDrawArc (d:Drawable) (gc:GC) (a:XArc):unit = xcall (XCALL_XDrawArc,d,gc,a); fun XDrawArcs (d:Drawable) (gc:GC) (L:XArc list):unit = xcall (XCALL_XDrawArcs,d,gc,L); fun XDrawImageString (d:Drawable) (gc:GC) (p:XPoint) (s:string):unit = xcall (XCALL_XDrawImageString,d,gc,p,s); fun XDrawImageString16 (d:Drawable) (gc:GC) (p:XPoint) (L:int list):unit = xcall (XCALL_XDrawImageString16,d,gc,p,L); fun XDrawLine (d:Drawable) (gc:GC) (p1:XPoint) (p2:XPoint):unit = xcall (XCALL_XDrawLine,d,gc,p1,p2); fun XDrawLines (d:Drawable) (gc:GC) (L:XPoint list) (mode:CoordMode):unit = xcall (XCALL_XDrawLines,d,gc,L,fromCoordMode mode); fun XDrawPoint (d:Drawable) (gc:GC) (p:XPoint):unit = xcall (XCALL_XDrawPoint,d,gc,p); fun XDrawPoints (d:Drawable) (gc:GC) (L:XPoint list) (mode:CoordMode):unit = xcall (XCALL_XDrawPoints,d,gc,L,fromCoordMode mode); fun XDrawRectangle (d:Drawable) (gc:GC) (r:XRectangle):unit = xcall (XCALL_XDrawRectangle,d,gc,r); fun XDrawRectangles (d:Drawable) (gc:GC) (L:XRectangle list):unit = xcall (XCALL_XDrawRectangles,d,gc,L); fun XDrawSegments (d:Drawable) (gc:GC) (L:(XPoint * XPoint) list):unit = xcall (XCALL_XDrawSegments,d,gc,L); fun XDrawString (d:Drawable) (gc:GC) (p:XPoint) (s:string):unit = xcall (XCALL_XDrawString,d,gc,p,s); fun XDrawString16 (d:Drawable) (gc:GC) (p:XPoint) (s:int list):unit = xcall (XCALL_XDrawString16,d,gc,p,s); fun XDrawText (d:Drawable) (gc:GC) (p:XPoint) (L:XTextItem list):unit = xcall (XCALL_XDrawText,d,gc,p,L); fun XDrawText16 (d:Drawable) (gc:GC) (p:XPoint) (L:XTextItem16 list):unit = xcall (XCALL_XDrawText16,d,gc,p,L); fun XFillArc (d:Drawable) (gc:GC) (a:XArc):unit = xcall (XCALL_XFillArc,d,gc,a); fun XFillArcs (d:Drawable) (gc:GC) (L:XArc list):unit = xcall (XCALL_XFillArcs,d,gc,L); fun XFillPolygon (d:Drawable) (gc:GC) (L:XPoint list) (shape:PolyShape) (mode:CoordMode):unit = xcall (XCALL_XFillPolygon,d,gc,L,fromPolyShape shape,fromCoordMode mode); fun XFillRectangle (d:Drawable) (gc:GC) (r:XRectangle):unit = xcall (XCALL_XFillRectangle,d,gc,r); fun XFillRectangles (d:Drawable) (gc:GC) (L:XRectangle list):unit = xcall (XCALL_XFillRectangles,d,gc,L); (* Events 350 *) datatype Modifier = ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask | AnyModifier; exception BadModifier of int; fun toModifier n = let fun MaskName 1 = ShiftMask | MaskName 2 = LockMask | MaskName 4 = ControlMask | MaskName 8 = Mod1Mask | MaskName 16 = Mod2Mask | MaskName 32 = Mod3Mask | MaskName 64 = Mod4Mask | MaskName 128 = Mod5Mask | MaskName 256 = Button1Mask | MaskName 512 = Button2Mask | MaskName 1024 = Button3Mask | MaskName 2048 = Button4Mask | MaskName 4096 = Button5Mask | MaskName 32768 = AnyModifier | MaskName n = raise BadModifier n; fun ShiftAndMask 0 mask acc = acc | ShiftAndMask n mask acc = ShiftAndMask (n And Not mask) (mask << 1) (if (n And mask) <> 0 then MaskName mask :: acc else acc); in ShiftAndMask n 1 [] end; fun fromModifier list = let fun MaskBit ShiftMask = 1 | MaskBit LockMask = 2 | MaskBit ControlMask = 4 | MaskBit Mod1Mask = 8 | MaskBit Mod2Mask = 16 | MaskBit Mod3Mask = 32 | MaskBit Mod4Mask = 64 | MaskBit Mod5Mask = 128 | MaskBit Button1Mask = 256 | MaskBit Button2Mask = 512 | MaskBit Button3Mask = 1024 | MaskBit Button4Mask = 2048 | MaskBit Button5Mask = 4096 | MaskBit AnyModifier = 32768; fun OrTogether [] acc = acc | OrTogether (H::T) acc = OrTogether T (MaskBit H Or acc); in OrTogether list 0 end; datatype ButtonName = Button1 | Button2 | Button3 | Button4 | Button5 | AnyButton; fun toButtonName 1 = Button1 | toButtonName 2 = Button2 | toButtonName 3 = Button3 | toButtonName 4 = Button4 | toButtonName 5 = Button5 | toButtonName _ = AnyButton; fun fromButtonName Button1 = 1 | fromButtonName Button2 = 2 | fromButtonName Button3 = 3 | fromButtonName Button4 = 4 | fromButtonName Button5 = 5 | fromButtonName AnyButton = 0; datatype Placement = PlaceOnTop | PlaceOnBottom; fun toPlacement 0 = PlaceOnTop | toPlacement _ = PlaceOnBottom; datatype StackMode = Above | Below | TopIf | BottomIf | Opposite; fun toStackMode 0 = Above | toStackMode 1 = Below | toStackMode 2 = TopIf | toStackMode 3 = BottomIf | toStackMode _ = Opposite; fun fromStackMode Above = 0 | fromStackMode Below = 1 | fromStackMode TopIf = 2 | fromStackMode BottomIf = 3 | fromStackMode Opposite = 4; datatype NotifyMode = NotifyNormal | NotifyGrab | NotifyUngrab | NotifyWhileGrabbed; fun toNotifyMode 0 = NotifyNormal | toNotifyMode 1 = NotifyGrab | toNotifyMode 2 = NotifyUngrab | toNotifyMode _ = NotifyWhileGrabbed; datatype NotifyDetail = NotifyAncestor | NotifyVirtual | NotifyInferior | NotifyNonLinear | NotifyNonLinearVirtual | NotifyPointer | NotifyPointerRoot | NotifyDetailNone; fun toNotifyDetail 0 = NotifyAncestor | toNotifyDetail 1 = NotifyVirtual | toNotifyDetail 2 = NotifyInferior | toNotifyDetail 3 = NotifyNonLinear | toNotifyDetail 4 = NotifyNonLinearVirtual | toNotifyDetail 5 = NotifyPointer | toNotifyDetail 6 = NotifyPointerRoot | toNotifyDetail _ = NotifyDetailNone; datatype GraphicsCode = CopyArea | CopyPlane; fun toGraphicsCode 62 = CopyArea | toGraphicsCode _ = CopyPlane; datatype Visibility = VisibilityUnobscured | VisibilityPartiallyObscured | VisibilityFullyObscured; fun toVisibility 0 = VisibilityUnobscured | toVisibility 1 = VisibilityPartiallyObscured | toVisibility _ = VisibilityFullyObscured; datatype 'a XEvent = ButtonPress of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } | ButtonRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } | ButtonClick of { sendEvent: bool, (* extra event type *) window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName, up: int, (* number of up transitions *) down: int } (* number of down transitions *) | CirculateNotify of { sendEvent: bool, event: Drawable, window: Drawable, place: Placement } | CirculateRequest of { sendEvent: bool, parent: Drawable, window: Drawable, place: Placement } | ColormapNotify of { sendEvent: bool, window: Drawable, colormap: Colormap, new: bool, installed: bool } | ConfigureNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, overrideRedirect: bool } | ConfigureRequest of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, detail: StackMode } | CreateNotify of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, overrideRedirect: bool } | DestroyNotify of { sendEvent: bool, event: Drawable, window: Drawable } | EnterNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } | LeaveNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } | Expose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int } | FocusIn of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } | FocusOut of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } | GraphicsExpose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int, code: GraphicsCode } | NoExpose of { sendEvent: bool, window: Drawable, code: GraphicsCode } | GravityNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint } | KeymapNotify of { sendEvent: bool, window: Drawable, keyVector: bool list (* 256 bools *) } | KeyPress of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } | KeyRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } | MapNotify of { sendEvent: bool, event: Drawable, window: Drawable, overrideRedirect: bool } | UnmapNotify of { sendEvent: bool, event: Drawable, window: Drawable, fromConfigure: bool } | MapRequest of { sendEvent: bool, parent: Drawable, window: Drawable } | MotionNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, isHint: bool } | ReparentNotify of { sendEvent: bool, event: Drawable, window: Drawable, parent: Drawable, position: XPoint, overrideRedirect: bool } | ResizeRequest of { sendEvent: bool, window: Drawable, size: XRectangle } | SelectionClear of { sendEvent: bool, window: Drawable, selection: int, time: int } | SelectionNotify of { sendEvent: bool, requestor: Drawable, selection: int, target: int, property: int, time: int } | SelectionRequest of { sendEvent: bool, owner: Drawable, requestor: Drawable, selection: int, target: int, property: int, time: int } | VisibilityNotify of { sendEvent: bool, window: Drawable, visibility: Visibility } | DeleteRequest of { window: Drawable } (* extra event type *) | Message of { window: Drawable, message: 'a } (* extra event type *) | NoEvent fun XSelectInput (d:Drawable) (m:EventMask list):unit = xcall (XCALL_XSelectInput,d,fromEventMask m); fun XSynchronize (d:Display) (n:int):unit = xcall (XCALL_XSynchronize,d,n); fun XSetHandler (drawable:Drawable) (Handler:'a XEvent * 'b -> 'b) (initialState:'b) = ( xcall (XCALL_SetState,drawable,Handler,initialState); fn (ms:int) => fn (alpha:'a) => xcall (XCALL_InsertTimeout,drawable,ms,alpha,Handler) ); fun NullHandler (e,s) = s; local fun Exists x = xcall (XCALL_ResourceExists,x):bool; in val ColormapExists = Exists : Colormap -> bool; val CursorExists = Exists : Cursor -> bool; val DrawableExists = Exists : Drawable -> bool; val FontExists = Exists : Font -> bool; val GCExists = Exists : GC -> bool; val VisualExists = Exists : Visual -> bool; val DisplayExists = Exists : Display -> bool; end; local fun GetDisplay x = xcall (XCALL_GetDisplay,x):Display; in val ColormapDisplay = GetDisplay : Colormap -> Display; val CursorDisplay = GetDisplay : Cursor -> Display; val DrawableDisplay = GetDisplay : Drawable -> Display; val FontDisplay = GetDisplay : Font -> Display; val GCDisplay = GetDisplay : GC -> Display; val VisualDisplay = GetDisplay : Visual -> Display; end; local fun MakeXKeyEvent (_,sendEvent,window,(root,subwindow,time,pointer,rootPointer,modifiers,keycode),_,_) = { sendEvent = sendEvent, window = window, root = root, subwindow = subwindow, time = time, pointer = pointer, rootPointer = rootPointer, modifiers = toModifier modifiers, keycode = keycode }; fun MakeXButtonEvent (_,sendEvent,window,(root,subwindow,time,pointer,rootPointer,modifiers,button),_,_) = { sendEvent = sendEvent, window = window, root = root, subwindow = subwindow, time = time, pointer = pointer, rootPointer = rootPointer, modifiers = toModifier modifiers, button = toButtonName button }; fun MakeXMotionEvent (_,sendEvent,window,(root,subwindow,time,pointer,rootPointer,modifiers,isHint),_,_) = { sendEvent = sendEvent, window = window, root = root, subwindow = subwindow, time = time, pointer = pointer, rootPointer = rootPointer, modifiers = toModifier modifiers, isHint = isHint }; fun MakeXCrossingEvent (_,sendEvent,window,(root,subwindow,time,pointer,rootPointer,mode,detail,focus,modifiers),_,_) = { sendEvent = sendEvent, window = window, root = root, subwindow = subwindow, time = time, pointer = pointer, rootPointer = rootPointer, mode = toNotifyMode mode, detail = toNotifyDetail detail, focus = focus, modifiers = toModifier modifiers }; fun MakeXExposeEvent (_,sendEvent,window,(region,count),_,_) = { sendEvent = sendEvent, window = window, region = region, count = count }; fun MakeXGraphicsExposeEvent (_,sendEvent,window,(region,count,code),_,_) = { sendEvent = sendEvent, window = window, region = region, count = count, code = toGraphicsCode code }; fun MakeXNoExposeEvent (_,sendEvent,window,code,_,_) = { sendEvent = sendEvent, window = window, code = toGraphicsCode code }; fun MakeXVisibilityEvent (_,sendEvent,window,visibility,_,_) = { sendEvent = sendEvent, window = window, visibility = toVisibility visibility }; fun MakeXCreateWindowEvent (_,sendEvent,parent,(window,position,size,borderWidth,overrideRedirect),_,_) = { sendEvent = sendEvent, window = window, parent = parent, position = position, size = size, borderWidth = borderWidth, overrideRedirect = overrideRedirect }; fun MakeXDestroyWindowEvent (_,sendEvent,event,window,_,_) = { sendEvent = sendEvent, event = event, window = window }; fun MakeXUnmapEvent (_,sendEvent,event,(window,fromConfigure),_,_) = { sendEvent = sendEvent, event = event, window = window, fromConfigure = fromConfigure }; fun MakeXMapEvent (_,sendEvent,event,(window,overrideRedirect),_,_) = { sendEvent = sendEvent, event = event, window = window, overrideRedirect = overrideRedirect }; fun MakeXFocusChangeEvent (_,sendEvent,window,(mode,detail),_,_) = { sendEvent = sendEvent, window = window, mode = toNotifyMode mode, detail = toNotifyDetail mode }; fun MakeXKeymapEvent (_,sendEvent,window,keyVector,_,_) = { sendEvent = sendEvent, window = window, keyVector = keyVector }; fun MakeXConfigureEvent (_,sendEvent,event,(window,position,size,borderWidth,above,overrideRedirect),_,_) = { sendEvent = sendEvent, event = event, window = window, position = position, size = size, borderWidth = borderWidth, above = above, overrideRedirect = overrideRedirect }; fun MakeXMapRequestEvent (_,sendEvent,parent,window,_,_) = { sendEvent = sendEvent, parent = parent, window = window }; fun MakeXReparentEvent (_,sendEvent,event,(window,parent,position,overrideRedirect),_,_) = { sendEvent = sendEvent, event = event, window = window, parent = parent, position = position, overrideRedirect = overrideRedirect }; fun MakeXConfigureRequestEvent (_,sendEvent,parent,(window,position,size,borderWidth,above,detail),_,_) = { sendEvent = sendEvent, parent = parent, window = window, position = position, size = size, borderWidth = borderWidth, above = above, detail = toStackMode detail }; fun MakeXGravityEvent (_,sendEvent,event,(window,position),_,_) = { sendEvent = sendEvent, event = event, window = window, position = position }; fun MakeXResizeRequestEvent (_,sendEvent,window,size,_,_) = { sendEvent = sendEvent, window = window, size = size }; fun MakeXCirculateEvent (_,sendEvent,event,(window,place),_,_) = { sendEvent = sendEvent, event = event, window = window, place = toPlacement place }; fun MakeXCirculateRequestEvent (_,sendEvent,parent,(window,place),_,_) = { sendEvent = sendEvent, parent = parent, window = window, place = toPlacement place }; fun MakeXSelectionClearEvent (_,sendEvent,window,(selection,time),_,_) = { sendEvent = sendEvent, window = window, selection = selection, time = time } fun MakeXSelectionEvent (_,sendEvent,requestor,(selection,target,property,time),_,_) = { sendEvent = sendEvent, requestor = requestor, selection = selection, target = target, property = property, time = time } fun MakeXSelectionRequestEvent (_,sendEvent,owner,(requestor,selection,target,property,time),_,_) = { sendEvent = sendEvent, owner = owner, requestor = requestor, selection = selection, target = target, property = property, time = time } fun MakeXColormapEvent (_,sendEvent,window,(colormap,new,installed),_,_) = { sendEvent = sendEvent, window = window, colormap = colormap, new = new, installed = installed }; fun MakeXClickEvent (_,sendEvent,window,(root,subwindow,time,pointer,rootPointer,modifiers,button,up,down),_,_) = { sendEvent = sendEvent, window = window, root = root, subwindow = subwindow, time = time, pointer = pointer, rootPointer = rootPointer, modifiers = toModifier modifiers, button = toButtonName button, up = up, down = down }; fun MakeDeleteEvent (_,_,window,_,_,_) = { window = window }; fun MakeMessageEvent (_,_,window,message,_,_) = { window = window, message = message }; fun NextEvent display = let val (data as (etype,_,window,_,callbacks, events)) = xcall (XCALL_NextEvent,display); val event = case etype of 2 => KeyPress (MakeXKeyEvent (RunCall.unsafeCast data)) | 3 => KeyRelease (MakeXKeyEvent (RunCall.unsafeCast data)) | 4 => ButtonPress (MakeXButtonEvent (RunCall.unsafeCast data)) | 5 => ButtonRelease (MakeXButtonEvent (RunCall.unsafeCast data)) | 6 => MotionNotify (MakeXMotionEvent (RunCall.unsafeCast data)) | 7 => EnterNotify (MakeXCrossingEvent (RunCall.unsafeCast data)) | 8 => LeaveNotify (MakeXCrossingEvent (RunCall.unsafeCast data)) | 9 => FocusIn (MakeXFocusChangeEvent (RunCall.unsafeCast data)) | 10 => FocusOut (MakeXFocusChangeEvent (RunCall.unsafeCast data)) | 11 => KeymapNotify (MakeXKeymapEvent (RunCall.unsafeCast data)) | 12 => Expose (MakeXExposeEvent (RunCall.unsafeCast data)) | 13 => GraphicsExpose (MakeXGraphicsExposeEvent (RunCall.unsafeCast data)) | 14 => NoExpose (MakeXNoExposeEvent (RunCall.unsafeCast data)) | 15 => VisibilityNotify (MakeXVisibilityEvent (RunCall.unsafeCast data)) | 16 => CreateNotify (MakeXCreateWindowEvent (RunCall.unsafeCast data)) | 17 => DestroyNotify (MakeXDestroyWindowEvent (RunCall.unsafeCast data)) | 18 => UnmapNotify (MakeXUnmapEvent (RunCall.unsafeCast data)) | 19 => MapNotify (MakeXMapEvent (RunCall.unsafeCast data)) | 22 => ConfigureNotify (MakeXConfigureEvent (RunCall.unsafeCast data)) | 20 => MapRequest (MakeXMapRequestEvent (RunCall.unsafeCast data)) | 21 => ReparentNotify (MakeXReparentEvent (RunCall.unsafeCast data)) | 23 => ConfigureRequest (MakeXConfigureRequestEvent (RunCall.unsafeCast data)) | 24 => GravityNotify (MakeXGravityEvent (RunCall.unsafeCast data)) | 25 => ResizeRequest (MakeXResizeRequestEvent (RunCall.unsafeCast data)) | 26 => CirculateNotify (MakeXCirculateEvent (RunCall.unsafeCast data)) | 27 => CirculateRequest (MakeXCirculateRequestEvent (RunCall.unsafeCast data)) | 29 => SelectionClear (MakeXSelectionClearEvent (RunCall.unsafeCast data)) | 30 => SelectionRequest (MakeXSelectionRequestEvent (RunCall.unsafeCast data)) | 31 => SelectionNotify (MakeXSelectionEvent (RunCall.unsafeCast data)) | 32 => ColormapNotify (MakeXColormapEvent (RunCall.unsafeCast data)) | 42 => ButtonClick (MakeXClickEvent (RunCall.unsafeCast data)) | 43 => DeleteRequest (MakeDeleteEvent (RunCall.unsafeCast data)) | 99 => Message (MakeMessageEvent (RunCall.unsafeCast data)) | 100 => NoEvent | _ => raise XWindows "Bad event type"; in (event,window,callbacks,events) end; fun ProcessEvent (event,window,[],[]) () = let val (handler,state) = xcall (XCALL_GetState,window); val newState = handler (event,state); in if DrawableExists window then let val (newHandler,_) = xcall (XCALL_GetState,window); in if PolyML.pointerEq(handler, newHandler) then xcall (XCALL_SetState,window,nil,newState) else () end else () end | ProcessEvent (event,_,callbacks,events) () = let fun Call [] = () | Call ((w,f)::T) = ( Call T; xcall (XCALL_SetWidgetState,w,f (w,event,xcall (XCALL_GetWidgetState,w))) ); fun call [] = () | call ((w,f)::T) = (call T; f (w, event)) in Call callbacks; call events end; datatype 'a Option = None | Some of 'a; fun XWindowHandler display = let val E = Some (NextEvent display) handle XWindows _ => None; in case E of None => () | Some e => ( PolyML.exception_trace (ProcessEvent e) handle XWindows s => print("Exception XWindows \"" ^ s ^ "\" raised.\n") | _ => (); XWindowHandler display ) end; in fun XStartDisplayHandler display = (Thread.Thread.fork (fn () => XWindowHandler display, []); ()); fun XOpenDisplay (s:string):Display = let val display = xcall (XCALL_XOpenDisplay,s); in XStartDisplayHandler display; display end; end (* local *); val CurrentTime = 0; datatype RevertCode = RevertToNone | RevertToPointerRoot | RevertToParent; fun fromRevertCode RevertToNone = 0 | fromRevertCode RevertToPointerRoot = 1 | fromRevertCode RevertToParent = 2; fun toRevertCode 0 = RevertToNone | toRevertCode 1 = RevertToPointerRoot | toRevertCode _ = RevertToParent; fun XSetInputFocus (d:Display) (w:Drawable) (r:RevertCode) (t:int) = xcall (XCALL_XSetInputFocus,d,w,fromRevertCode r,t); fun XGetInputFocus (d:Display):(Drawable * RevertCode) = let val (w,r) = xcall (XCALL_XGetInputFocus,d); in (w,toRevertCode r) end; fun XSetSelectionOwner (d:Display) (selection:int) (owner:Drawable) (time:int):unit = xcall (XCALL_XSetSelectionOwner,d,selection,owner,time); fun XGetSelectionOwner (d:Display) (selection:int):Drawable = xcall (XCALL_XGetSelectionOwner,d,selection); fun XConvertSelection {selection:int,target:int,property:int,requestor:Drawable,time:int}:unit = xcall (XCALL_XConvertSelection,selection,target,property,requestor,time); fun XSendSelectionNotify {selection:int,target:int,property:int,requestor:Drawable,time:int}:unit = xcall (XCALL_XSendSelectionNotify,selection,target,property,requestor,time); fun XDeleteProperty (requestor:Drawable) (property:int):unit = xcall (XCALL_XDeleteProperty,requestor,property); fun XInternAtom (d:Display) (name:string) (onlyIfExists:bool):int = xcall (XCALL_XInternAtom,d,name,onlyIfExists); fun XGetAtomName (d:Display) (atom:int):string = xcall (XCALL_XGetAtomName,d,atom); (* Fonts 400 *) datatype FontDirection = FontLeftToRight | FontRightToLeft; datatype XCharStruct = XCharStruct of { lbearing: int, rbearing: int, width: int, ascent: int, descent: int, attributes: int }; datatype XFontStruct = XFontStruct of { font: Font, direction: FontDirection, minChar: int, maxChar: int, minByte1: int, maxByte1: int, allCharsExist: bool, defaultChar: int, minBounds: XCharStruct, maxBounds: XCharStruct, perChar: XCharStruct list, ascent: int, descent: int }; fun XGetFontPath (d:Display):string list = xcall (XCALL_XGetFontPath,d); fun XListFonts (d:Display) (s:string) (n:int):string list = xcall (XCALL_XListFonts,d,s,n); fun XListFontsWithInfo (d:Display) (s:string) (n:int):(string list * XFontStruct list) = xcall (XCALL_XListFontsWithInfo,d,s,n); fun XLoadFont (d:Display) (s:string):Font = xcall (XCALL_XLoadFont,d,s); fun XLoadQueryFont (d:Display) (s:string):XFontStruct = xcall (XCALL_XLoadQueryFont,d,s); fun XQueryFont (f:Font):XFontStruct = xcall (XCALL_XQueryFont,f); fun XSetFontPath (d:Display) (L:string list):unit = xcall (XCALL_XSetFontPath,d,L); (* Grabbing 450 *) (* Graphics Context 500 *) datatype GCArcMode = ArcChord | ArcPieSlice; fun fromArcMode ArcChord = 0 | fromArcMode ArcPieSlice = 1; datatype GCOrder = Unsorted | YSorted | YXSorted | YXBanded; fun fromOrder Unsorted = 0 | fromOrder YSorted = 1 | fromOrder YXSorted = 2 | fromOrder YXBanded = 3; datatype GCFillRule = EvenOddRule | WindingRule; fun fromFillRule EvenOddRule = 0 | fromFillRule WindingRule = 1; datatype GCFillStyle = FillSolid | FillTiled | FillStippled | FillOpaqueStippled; fun fromFillStyle FillSolid = 0 | fromFillStyle FillTiled = 1 | fromFillStyle FillStippled = 2 | fromFillStyle FillOpaqueStippled = 3; datatype GCFunction = GXclear | GXand | GXandReverse | GXcopy | GXandInverted | GXnoop | GXxor | GXor | GXnor | GXequiv | GXinvert | GXorReverse | GXcopyInverted | GXorInverted | GXnand | GXset; fun fromFunction GXclear = 0 | fromFunction GXand = 1 | fromFunction GXandReverse = 2 | fromFunction GXcopy = 3 | fromFunction GXandInverted = 4 | fromFunction GXnoop = 5 | fromFunction GXxor = 6 | fromFunction GXor = 7 | fromFunction GXnor = 8 | fromFunction GXequiv = 9 | fromFunction GXinvert = 10 | fromFunction GXorReverse = 11 | fromFunction GXcopyInverted = 12 | fromFunction GXorInverted = 13 | fromFunction GXnand = 14 | fromFunction GXset = 15; datatype GCLineStyle = LineSolid | LineOnOffDash | LineDoubleDash; fun fromLineStyle LineSolid = 0 | fromLineStyle LineOnOffDash = 1 | fromLineStyle LineDoubleDash = 2; datatype GCCapStyle = CapNotLast | CapButt | CapRound | CapProjecting; fun fromCapStyle CapNotLast = 0 | fromCapStyle CapButt = 1 | fromCapStyle CapRound = 2 | fromCapStyle CapProjecting = 3; datatype GCJoinStyle = JoinMiter | JoinRound | JoinBevel; fun fromJoinStyle JoinMiter = 0 | fromJoinStyle JoinRound = 1 | fromJoinStyle JoinBevel = 2; datatype GCSubwindowMode = ClipByChildren | IncludeInferiors; fun fromSubwindowMode ClipByChildren = 0 | fromSubwindowMode IncludeInferiors = 1; fun DefaultGC (d:Display) = xcall (XCALL_DefaultGC,d) : GC; datatype XGCValue = GCFunction of GCFunction | GCPlaneMask of int | GCForeground of int | GCBackground of int | GCLineWidth of int | GCLineStyle of GCLineStyle | GCCapStyle of GCCapStyle | GCJoinStyle of GCJoinStyle | GCFillStyle of GCFillStyle | GCFillRule of GCFillRule | GCTile of Drawable | GCStipple of Drawable | GCTSOrigin of XPoint | GCFont of Font | GCSubwindowMode of GCSubwindowMode | GCGraphicsExposures of bool | GCClipOrigin of XPoint | GCClipMask of Drawable | GCDashOffset of int | GCDashList of int | GCArcMode of GCArcMode; fun UpdateGC gc (GCFunction f) = xcall (XCALL_UpdateGC,gc,0 ,fromFunction f) | UpdateGC gc (GCPlaneMask mask) = xcall (XCALL_UpdateGC,gc,1 ,mask) | UpdateGC gc (GCForeground fg) = xcall (XCALL_UpdateGC,gc,2 ,fg) | UpdateGC gc (GCBackground bg) = xcall (XCALL_UpdateGC,gc,3 ,bg) | UpdateGC gc (GCLineWidth w) = xcall (XCALL_UpdateGC,gc,4 ,w) | UpdateGC gc (GCLineStyle ls) = xcall (XCALL_UpdateGC,gc,5 ,fromLineStyle ls) | UpdateGC gc (GCCapStyle cs) = xcall (XCALL_UpdateGC,gc,6 ,fromCapStyle cs) | UpdateGC gc (GCJoinStyle js) = xcall (XCALL_UpdateGC,gc,7 ,fromJoinStyle js) | UpdateGC gc (GCFillStyle fs) = xcall (XCALL_UpdateGC,gc,8 ,fromFillStyle fs) | UpdateGC gc (GCFillRule rule) = xcall (XCALL_UpdateGC,gc,9 ,fromFillRule rule) | UpdateGC gc (GCTile tile) = xcall (XCALL_UpdateGC,gc,10,tile) | UpdateGC gc (GCStipple stipple) = xcall (XCALL_UpdateGC,gc,11,stipple) | UpdateGC gc (GCTSOrigin (XPoint {x,y})) = (xcall (XCALL_UpdateGC,gc,12,x); xcall (XCALL_UpdateGC,gc,13,y)) | UpdateGC gc (GCFont font) = xcall (XCALL_UpdateGC,gc,14,font) | UpdateGC gc (GCSubwindowMode mode) = xcall (XCALL_UpdateGC,gc,15,fromSubwindowMode mode) | UpdateGC gc (GCGraphicsExposures ex) = xcall (XCALL_UpdateGC,gc,16,ex) | UpdateGC gc (GCClipOrigin (XPoint {x,y})) = (xcall (XCALL_UpdateGC,gc,17,x); xcall (XCALL_UpdateGC,gc,18,y)) | UpdateGC gc (GCClipMask mask) = xcall (XCALL_UpdateGC,gc,19,mask) | UpdateGC gc (GCDashOffset offset) = xcall (XCALL_UpdateGC,gc,20,offset) | UpdateGC gc (GCDashList dashes) = xcall (XCALL_UpdateGC,gc,21,dashes) | UpdateGC gc (GCArcMode mode) = xcall (XCALL_UpdateGC,gc,22,fromArcMode mode); fun XChangeGC gc [] = () | XChangeGC gc (H::T) = (UpdateGC gc H; XChangeGC gc T); fun XCreateGC (d:Drawable) (values:XGCValue list):GC = let val gc = xcall (XCALL_XCreateGC,d); in XChangeGC gc values; gc end; fun XSetFunction gc f = UpdateGC gc (GCFunction f); fun XSetPlaneMask gc mask = UpdateGC gc (GCPlaneMask mask); fun XSetForeground gc fg = UpdateGC gc (GCForeground fg); fun XSetBackground gc bg = UpdateGC gc (GCBackground bg); fun XSetFillStyle gc fs = UpdateGC gc (GCFillStyle fs); fun XSetFillRule gc rule = UpdateGC gc (GCFillRule rule); fun XSetTile gc tile = UpdateGC gc (GCTile tile) fun XSetStipple gc stipple = UpdateGC gc (GCStipple stipple); fun XSetTSOrigin gc point = UpdateGC gc (GCTSOrigin point); fun XSetFont gc font = UpdateGC gc (GCFont font); fun XSetSubwindowMode gc mode = UpdateGC gc (GCSubwindowMode mode); fun XSetGraphicsExposures gc ex = UpdateGC gc (GCGraphicsExposures ex); fun XSetClipOrigin gc point = UpdateGC gc (GCClipOrigin point); fun XSetClipMask gc mask = UpdateGC gc (GCClipMask mask); fun XSetArcMode gc mode = UpdateGC gc (GCArcMode mode); fun XSetLineAttributes gc w ls cs js = XChangeGC gc [GCLineWidth w, GCLineStyle ls,GCCapStyle cs,GCJoinStyle js]; fun XSetState gc fg bg f mask = XChangeGC gc [GCForeground fg,GCBackground bg,GCFunction f, GCPlaneMask mask]; fun XSetClipRectangles (gc:GC) (p:XPoint) (L:XRectangle list) (order:GCOrder):unit = xcall (XCALL_XSetClipRectangles,gc,p,L,fromOrder order); fun XSetDashes (gc:GC) (offset:int) (dashes:int list) = xcall (XCALL_XSetDashes,gc,offset,dashes); (* Images 550 *) datatype ImageFormat = XYBitmap | XYPixmap | ZPixmap; datatype ImageOrder = LSBFirst | MSBFirst; abstype ImageData = ImageData of string with val Data = ImageData end; datatype XImage = XImage of { data: ImageData, size: XRectangle, depth: int, format: ImageFormat, xoffset: int, bitmapPad: int, byteOrder: ImageOrder, bitmapUnit: int, bitsPerPixel: int, bytesPerLine: int, visualRedMask: int, bitmapBitOrder: ImageOrder, visualBlueMask: int, visualGreenMask: int }; (* XImages need to be mutable for XAddPixel, XGetSubImage and XPutPixel to work properly *) fun XAddPixel (d:Display) (i:XImage) (a:int):unit = xcall (XCALL_XAddPixel,d,i,a); fun XCreateImage v depth format xoffset data size bitmapPad bytesPerLine = ( XImage { data = Data data, size = size, depth = depth, format = format, xoffset = xoffset, bitmapPad = bitmapPad, byteOrder = LSBFirst, bitmapUnit = 8, bitsPerPixel = 1, bytesPerLine = bytesPerLine, visualRedMask = VisualRedMask v, bitmapBitOrder = LSBFirst, visualBlueMask = VisualBlueMask v, visualGreenMask = VisualGreenMask v } ); fun XGetImage (d:Drawable) (r:XRectangle) (mask:int) (f:ImageFormat) = XImage (xcall (XCALL_XGetImage,d,r,mask,f)); fun XGetPixel (d:Display) (i:XImage) (point:XPoint):int = xcall (XCALL_XGetPixel,d,i,point); fun XGetSubImage (d:Drawable) (r:XRectangle) (mask:int) (f:ImageFormat) (i:XImage) (point:XPoint):unit = xcall (XCALL_XGetSubImage,d,r,mask,f,i,point); fun XPutImage (d:Drawable) (gc:GC) (i:XImage) (p:XPoint) (r:XRectangle):unit = xcall (XCALL_XPutImage,d,gc,i,p,r); fun XPutPixel (d:Display) (i:XImage) (point:XPoint) (pixel:int):unit = xcall (XCALL_XPutPixel,d,i,point,pixel); fun XSubImage (d:Display) (i:XImage) (r:XRectangle) = XImage (xcall (XCALL_XSubImage,d,i,r)); fun BitmapBitOrder (d:Display) = xcall (XCALL_BitmapBitOrder,d) : ImageOrder; fun BitmapPad (d:Display) = xcall (XCALL_BitmapPad,d) : int; fun BitmapUnit (d:Display) = xcall (XCALL_BitmapUnit,d) : int; fun ByteOrder (d:Display) = xcall (XCALL_ByteOrder,d) : ImageOrder; fun ImageByteOrder (XImage {byteOrder,...}) = byteOrder; fun ImageSize (XImage {size,...}) = size; fun ImageDepth (XImage {depth,...}) = depth; (* Keyboard 600 *) (* keysym values are integers, and are defined in other signatures *) fun XLookupString (d:Drawable) (keycode:int) (modifiers:Modifier list):(string * int) = xcall (XCALL_XLookupString,d,keycode,fromModifier modifiers); fun XQueryKeymap (d:Display):bool list = xcall (XCALL_XQueryKeymap,d); fun IsCursorKey (k:int):bool = xcall (XCALL_IsCursorKey,k); fun IsFunctionKey (k:int):bool = xcall (XCALL_IsFunctionKey,k); fun IsKeypadKey (k:int):bool = xcall (XCALL_IsKeypadKey,k); fun IsMiscFunctionKey (k:int):bool = xcall (XCALL_IsMiscFunctionKey,k); fun IsModifierKey (k:int):bool = xcall (XCALL_IsModifierKey,k); fun IsPFKey (k:int):bool = xcall (XCALL_IsPFKey,k); (* Output Buffer 650 *) fun XFlush (d:Display):unit = xcall (XCALL_XFlush,d); fun XSync (d:Display) (b:bool):unit = xcall (XCALL_XSync,d,b); (* Pointers 700 *) fun XQueryPointer (d:Drawable) = let val (s:bool,root:Drawable,child:Drawable,r:XPoint,w:XPoint,m) = xcall (XCALL_XQueryPointer,d); in (s,root,child,r,w,toModifier m) end; (* Regions 750*) (* Save Set 800 *) (* Screen Saver 850 *) datatype SaveMode = ScreenSaverReset | ScreenSaverActive; fun fromSaveMode ScreenSaverReset = 0 | fromSaveMode ScreenSaverActive = 1; datatype Blanking = DontPreferBlanking | PreferBlanking | DefaultBlanking; fun toBlanking 0 = DontPreferBlanking | toBlanking 1 = PreferBlanking | toBlanking _ = DefaultBlanking; fun fromBlanking DontPreferBlanking = 0 | fromBlanking PreferBlanking = 1 | fromBlanking DefaultBlanking = 2; datatype Exposures = DontAllowExposures | AllowExposures | DefaultExposures; fun toExposures 0 = DontAllowExposures | toExposures 1 = AllowExposures | toExposures _ = DefaultExposures; fun fromExposures DontAllowExposures = 0 | fromExposures AllowExposures = 1 | fromExposures DefaultExposures = 2; fun XActivateScreenSaver (d:Display):unit = xcall (XCALL_XActivateScreenSaver,d); fun XForceScreenSaver (d:Display) (s:SaveMode):unit = xcall (XCALL_XForceScreenSaver,d,fromSaveMode s); fun XGetScreenSaver (d:Display) = let val (timeout,interval,blanking,exposures) = xcall (XCALL_XGetScreenSaver,d); in (timeout:int,interval:int,toBlanking blanking,toExposures exposures) end; fun XResetScreenSaver (d:Display):unit = xcall (XCALL_XResetScreenSaver,d); fun XSetScreenSaver (d:Display) (timeout:int) (interval:int) (blanking:Blanking) (exposures:Exposures) = xcall (XCALL_XSetScreenSaver,d,timeout,interval,fromBlanking blanking,fromExposures exposures); (* Standard Geometry 900 *) fun XTranslateCoordinates (src:Drawable) (dst:Drawable) (p:XPoint):(XPoint * Drawable) = xcall (XCALL_XTranslateCoordinates,src,dst,p); (* Text 950 *) fun XTextExtents (fs:XFontStruct) (s:string):(FontDirection * int * int * XCharStruct) = xcall (XCALL_XTextExtents,fs,s); fun XTextExtents16 (fs:XFontStruct) (L:int list):(FontDirection * int * int * XCharStruct) = xcall (XCALL_XTextExtents16,fs,L); fun XTextWidth (fs:XFontStruct) (s:string):int = xcall (XCALL_XTextWidth,fs,s); fun XTextWidth16 (fs:XFontStruct) (L:int list):int = xcall (XCALL_XTextWidth16,fs,L); (* Tiles, Pixmaps, Stipples and Bitmaps 1000 *) datatype BitmapStatus = BitmapOpenFailed | BitmapFileInvalid | BitmapNoMemory | BitmapSuccess of Drawable * XRectangle * XPoint; fun XCreateBitmapFromData (d:Drawable) (s:string) (r:XRectangle):Drawable = xcall (XCALL_XCreateBitmapFromData,d,s,r); fun XCreatePixmap (d:Drawable) (r:XRectangle) (depth:int):Drawable = xcall (XCALL_XCreatePixmap,d,r,depth); fun XCreatePixmapFromBitmapData (d:Drawable) (s:string) (r:XRectangle) (fg:int) (bg:int) (depth:int):Drawable = xcall (XCALL_XCreatePixmapFromBitmapData,d,s,r,fg,bg,depth); fun XQueryBestStipple (d:Drawable) (r:XRectangle):XRectangle = xcall (XCALL_XQueryBestStipple,d,r); fun XQueryBestTile (d:Drawable) (r:XRectangle):XRectangle = xcall (XCALL_XQueryBestTile,d,r); datatype ShapeClass = CursorShape | TileShape | StippleShape; fun XQueryBestSize CursorShape = XQueryBestCursor | XQueryBestSize TileShape = XQueryBestTile | XQueryBestSize StippleShape = XQueryBestStipple; fun XReadBitmapFile (d:Drawable) (s:string) = let val (status,bitmap,size,hotspot) = xcall (XCALL_XReadBitmapFile,d,s); in case status of 0 => BitmapSuccess (bitmap,size,hotspot) | 1 => BitmapOpenFailed | 2 => BitmapFileInvalid | _ => BitmapNoMemory end; fun XWriteBitmapFile (s:string) (bitmap:Drawable) (size:XRectangle) (hotspot:XPoint) = let val status = xcall (XCALL_XWriteBitmapFile,s,bitmap,size,hotspot); in case status of 0 => BitmapSuccess (bitmap,size,hotspot) | 1 => BitmapOpenFailed | 2 => BitmapFileInvalid | _ => BitmapNoMemory end; (* User Preferences 1050 *) fun XAutoRepeatOff (d:Display):unit = xcall (XCALL_XAutoRepeatOff,d); fun XAutoRepeatOn (d:Display):unit = xcall (XCALL_XAutoRepeatOn,d); fun XBell (d:Display) (n:int):unit = xcall (XCALL_XBell,d,n); fun XGetDefault (d:Display) (program:string) (option:string):string = xcall (XCALL_XGetDefault,d,program,option); (* Window Attributes 1100 *) datatype Gravity = ForgetGravity | NorthWestGravity | NorthGravity | NorthEastGravity | WestGravity | CenterGravity | EastGravity | SouthWestGravity | SouthGravity | SouthEastGravity | StaticGravity; val UnmapGravity = ForgetGravity; fun toGravity 0 = ForgetGravity | toGravity 1 = NorthWestGravity | toGravity 2 = NorthGravity | toGravity 3 = NorthEastGravity | toGravity 4 = WestGravity | toGravity 5 = CenterGravity | toGravity 6 = EastGravity | toGravity 7 = SouthWestGravity | toGravity 8 = SouthGravity | toGravity 9 = SouthEastGravity | toGravity _ = StaticGravity; fun fromGravity ForgetGravity = 0 | fromGravity NorthWestGravity = 1 | fromGravity NorthGravity = 2 | fromGravity NorthEastGravity = 3 | fromGravity WestGravity = 4 | fromGravity CenterGravity = 5 | fromGravity EastGravity = 6 | fromGravity SouthWestGravity = 7 | fromGravity SouthGravity = 8 | fromGravity SouthEastGravity = 9 | fromGravity StaticGravity = 10; datatype XSetWindowAttributes = CWBackPixmap of Drawable | CWBackPixel of int | CWBorderPixmap of Drawable | CWBorderPixel of int | CWBitGravity of Gravity | CWWinGravity of Gravity | CWBackingStore of BackingStore | CWBackingPlanes of int | CWBackingPixel of int | CWOverrideRedirect of bool | CWSaveUnder of bool | CWEventMask of EventMask list | CWDontPropagate of EventMask list | CWColormap of Colormap | CWCursor of Cursor; datatype WindowClass = CopyFromParentClass | InputOutputClass | InputOnlyClass; fun toWindowClass 0 = CopyFromParentClass | toWindowClass 1 = InputOutputClass | toWindowClass _ = InputOnlyClass; fun fromWindowClass CopyFromParentClass = 0 | fromWindowClass InputOutputClass = 1 | fromWindowClass InputOnlyClass = 2; datatype MapState = IsUnmapped | IsUnviewable | IsViewable; fun toMapState 0 = IsUnmapped | toMapState 1 = IsUnviewable | toMapState _ = IsViewable; datatype XWindowAttributes = XWindowAttributes of { position: XPoint, size: XRectangle, borderWidth: int, depth: int, visual: Visual, root: Drawable, class: WindowClass, bitGravity: Gravity, winGravity: Gravity, backingStore: BackingStore, backingPlanes: int, backingPixel: int, saveUnder: bool, colormap: Colormap, mapInstalled: bool, mapState: MapState, allEventMasks: EventMask list, yourEventMask: EventMask list, doNotPropagateMask: EventMask list, overrideRedirect: bool }; fun ChangeWindow d (CWBackPixmap pixmap) = xcall (XCALL_ChangeWindow,d,0 ,pixmap) | ChangeWindow d (CWBackPixel pixel) = xcall (XCALL_ChangeWindow,d,1 ,pixel) | ChangeWindow d (CWBorderPixmap pixmap) = xcall (XCALL_ChangeWindow,d,2 ,pixmap) | ChangeWindow d (CWBorderPixel pixel) = xcall (XCALL_ChangeWindow,d,3 ,pixel) | ChangeWindow d (CWBitGravity gravity) = xcall (XCALL_ChangeWindow,d,4 ,fromGravity gravity) | ChangeWindow d (CWWinGravity gravity) = xcall (XCALL_ChangeWindow,d,5 ,fromGravity gravity) | ChangeWindow d (CWBackingStore bs) = xcall (XCALL_ChangeWindow,d,6 ,fromBackingStore bs) | ChangeWindow d (CWBackingPlanes mask) = xcall (XCALL_ChangeWindow,d,7 ,mask) | ChangeWindow d (CWBackingPixel pixel) = xcall (XCALL_ChangeWindow,d,8 ,pixel) | ChangeWindow d (CWOverrideRedirect b) = xcall (XCALL_ChangeWindow,d,9 ,b) | ChangeWindow d (CWSaveUnder b) = xcall (XCALL_ChangeWindow,d,10,b) | ChangeWindow d (CWEventMask mask) = xcall (XCALL_ChangeWindow,d,11,fromEventMask mask) | ChangeWindow d (CWDontPropagate mask) = xcall (XCALL_ChangeWindow,d,12,fromEventMask mask) | ChangeWindow d (CWColormap cmap) = xcall (XCALL_ChangeWindow,d,13,cmap) | ChangeWindow d (CWCursor cursor) = xcall (XCALL_ChangeWindow,d,14,cursor); fun XChangeWindowAttributes d [] = () | XChangeWindowAttributes d (H::T) = (ChangeWindow d H; XChangeWindowAttributes d T); fun XGetGeometry (d:Drawable):(Drawable * XPoint * XRectangle * int * int) = xcall (XCALL_XGetGeometry,d); fun XGetWindowAttributes (d:Drawable) = let val (position,size,borderWidth,depth,visual,root,class, bitGravity,winGravity,backingStore,backingPlanes, backingPixel,saveUnder,colormap,mapInstalled,mapState, allEventMasks,yourEventMask,doNotPropagateMask,overrideRedirect) = xcall (XCALL_XGetWindowAttributes,d); in XWindowAttributes { position = position, size = size, borderWidth = borderWidth, depth = depth, visual = visual, root = root, class = toWindowClass class, bitGravity = toGravity bitGravity, winGravity = toGravity winGravity, backingStore = toBackingStore backingStore, backingPlanes = backingPlanes, backingPixel = backingPixel, saveUnder = saveUnder, colormap = colormap, mapInstalled = mapInstalled, mapState = toMapState mapState, allEventMasks = toEventMask allEventMasks, yourEventMask = toEventMask yourEventMask, doNotPropagateMask = toEventMask doNotPropagateMask, overrideRedirect = overrideRedirect } end; fun XSetWindowBackground d bg = ChangeWindow d (CWBackPixel bg); fun XSetWindowBackgroundPixmap d pixmap = ChangeWindow d (CWBackPixmap pixmap); fun XSetWindowBorder d border = ChangeWindow d (CWBorderPixel border); fun XSetWindowBorderPixmap d pixmap = ChangeWindow d (CWBorderPixmap pixmap); fun XSetWindowColormap d cmap = ChangeWindow d (CWColormap cmap); fun XSetWindowBorderWidth (d:Drawable) (width:int):unit = xcall (XCALL_XSetWindowBorderWidth,d,width); (* Window Configuration 1150 *) val NoDrawable = xcall (XCALL_NoDrawable,0) : Drawable; val ParentRelative = xcall (XCALL_NoDrawable,1) : Drawable; val NoCursor = xcall (XCALL_NoCursor,0) : Cursor; val NoFont = xcall (XCALL_NoFont,0) : Font; val NoColormap = xcall (XCALL_NoColormap,0) : Colormap; val NoVisual = xcall (XCALL_NoVisual,0) : Visual; val CopyFromParentDrawable = NoDrawable; val CopyFromParentVisual = NoVisual; val PointerWindow = NoDrawable; val InputFocus = ParentRelative; val PointerRoot = ParentRelative; val NoSymbol = 0; val AnyKey = 0; datatype CirculateDirection = RaiseLowest | LowerHighest; fun fromCirculateDirection RaiseLowest = 0 | fromCirculateDirection LowerHighest = 1; datatype XWindowChanges = CWPosition of XPoint | CWSize of XRectangle | CWBorderWidth of int | CWStackMode of StackMode | CWSibling of Drawable; fun XCirculateSubwindows (d:Drawable) (dir:CirculateDirection):unit = xcall (XCALL_XCirculateSubwindows,d,fromCirculateDirection dir); fun XCirculateSubwindowsDown d = XCirculateSubwindows d LowerHighest; fun XCirculateSubwindowsUp d = XCirculateSubwindows d RaiseLowest; fun XConfigureWindow (win:Drawable) (L:XWindowChanges list):unit = let fun AddIn m n = if (m And n) = 0 then (m Or n) else raise XWindows "XConfigureWindow parameters"; fun Trans [] acc = acc | Trans ((CWPosition P)::T) (_,S,w,d,s,m) = Trans T (P,S,w,d,s,AddIn m 3) | Trans ((CWSize S)::T) (P,_,w,d,s,m) = Trans T (P,S,w,d,s,AddIn m 12) | Trans ((CWBorderWidth w)::T) (P,S,_,d,s,m) = Trans T (P,S,w,d,s,AddIn m 16) | Trans ((CWSibling d)::T) (P,S,w,_,s,m) = Trans T (P,S,w,d,s,AddIn m 32) | Trans ((CWStackMode s)::T) (P,S,w,d,_,m) = Trans T (P,S,w,d,fromStackMode s,AddIn m 64); in xcall (XCALL_XConfigureWindow,win,Trans L (origin,a1,0,NoDrawable,0,0)) end; fun XLowerWindow (d:Drawable):unit = xcall (XCALL_XLowerWindow,d); fun XMapRaised (d:Drawable):unit = xcall (XCALL_XMapRaised,d); fun XMapSubwindows (d:Drawable):unit = xcall (XCALL_XMapSubwindows,d); fun XMapWindow (d:Drawable):unit = xcall (XCALL_XMapWindow,d); fun XMoveResizeWindow (d:Drawable) (p:XPoint) (r:XRectangle):unit = xcall (XCALL_XMoveResizeWindow,d,p,r); fun XMoveWindow (d:Drawable) (p:XPoint):unit = xcall (XCALL_XMoveWindow,d,p); fun XQueryTree (d:Drawable):(Drawable * Drawable * Drawable list) = xcall (XCALL_XQueryTree,d); fun XRaiseWindow (d:Drawable):unit = xcall (XCALL_XRaiseWindow,d); fun XReparentWindow (win:Drawable) (parent:Drawable) (p:XPoint):unit = xcall (XCALL_XReparentWindow,win,parent,p); fun XResizeWindow (d:Drawable) (r:XRectangle):unit = xcall (XCALL_XResizeWindow,d,r); fun XRestackWindows (L:Drawable list):unit = xcall (XCALL_XRestackWindows,L); fun XUnmapSubwindows (d:Drawable):unit = xcall (XCALL_XUnmapSubwindows,d); fun XUnmapWindow (d:Drawable):unit = xcall (XCALL_XUnmapWindow,d); (* Window Existence 1200 *) fun RootWindow (d:Display) = xcall (XCALL_RootWindow,d) : Drawable; fun DestroyXObject x = xcall (XCALL_DestroyXObject,x):unit; val XDestroyWindow = DestroyXObject : Drawable -> unit; val XFreeGC = DestroyXObject : GC -> unit; val XFreePixmap = DestroyXObject : Drawable -> unit; val XFreeCursor = DestroyXObject : Cursor -> unit; val XUnloadFont = DestroyXObject : Font -> unit; val XFreeColormap = DestroyXObject : Colormap -> unit; fun XFreeFont (XFontStruct {font,...}) = XUnloadFont font; fun XDestroySubwindows (d:Drawable):unit = xcall (XCALL_XDestroySubwindows,d); fun XCreateSimpleWindow (parent:Drawable) (position:XPoint) (size:XRectangle) (borderWidth:int) (border:int) (background:int): Drawable = ( xcall (XCALL_XCreateSimpleWindow,parent,position,size,borderWidth,border,background,NullHandler,42) ); fun XCreateWindow (parent:Drawable) (position:XPoint) (size:XRectangle) (borderWidth:int) (depth:int) (class:WindowClass) (visual:Visual) (L:XSetWindowAttributes list): Drawable = let val w = xcall (XCALL_XCreateWindow,parent,position,size,borderWidth,depth,fromWindowClass class,visual,NullHandler,42); in XChangeWindowAttributes w L; w end; (* Window Manager 1250 *) datatype XWMStateHint = DontCareState | NormalState | ZoomState | IconicState | InactiveState; fun fromXWMStateHint DontCareState = 0 | fromXWMStateHint NormalState = 1 | fromXWMStateHint ZoomState = 2 | fromXWMStateHint IconicState = 3 | fromXWMStateHint InactiveState = 4; fun toXWMStateHint 0 = DontCareState | toXWMStateHint 1 = NormalState | toXWMStateHint 2 = ZoomState | toXWMStateHint 3 = IconicState | toXWMStateHint _ = InactiveState; datatype XWMHint = InputHint of bool | StateHint of XWMStateHint | IconPixmapHint of Drawable | IconWindowHint of Drawable | IconPositionHint of XPoint | IconMaskHint of Drawable; datatype XWMSizeHint = PPosition of XPoint | PSize of XRectangle | PMinSize of XRectangle | PMaxSize of XRectangle | PResizeInc of XRectangle | PAspect of XPoint * XPoint | PBaseSize of XRectangle | PWinGravity of Gravity; datatype XStandardColormap = XStandardColormap of { colormap: Colormap, redMax: int, redMult: int, greenMax: int, greenMult: int, blueMax: int, blueMult: int, basePixel: int, visual: Visual }; datatype PropertyValue = PropertyArc of XArc list | PropertyAtom of int list | PropertyBitmap of Drawable list | PropertyColormap of Colormap list | PropertyCursor of Cursor list | PropertyDrawable of Drawable list | PropertyFont of Font list | PropertyInteger of int list | PropertyPixmap of Drawable list | PropertyPoint of XPoint list | PropertyRectangle of XRectangle list | PropertyRGBColormap of XStandardColormap list | PropertyString of string | PropertyVisual of Visual list | PropertyWindow of Drawable list | PropertyWMHints of XWMHint list | PropertyWMSizeHints of XWMSizeHint list | PropertyWMIconSizes of (XRectangle * XRectangle * XRectangle) list; fun fromXWMHints L = let fun AddIn m n = if (m And n) = 0 then (m Or n) else raise XWindows "XWMHint parameters"; fun Trans [] (i,s,p,w,P,m,f) = (i,fromXWMStateHint s,p,w,P,m,f) | Trans ((InputHint i)::T) (_,s,p,w,P,m,f) = Trans T (i,s,p,w,P,m,AddIn f 1) | Trans ((StateHint s)::T) (i,_,p,w,P,m,f) = Trans T (i,s,p,w,P,m,AddIn f 2) | Trans ((IconPixmapHint p)::T) (i,s,_,w,P,m,f) = Trans T (i,s,p,w,P,m,AddIn f 4) | Trans ((IconWindowHint w)::T) (i,s,p,_,P,m,f) = Trans T (i,s,p,w,P,m,AddIn f 8) | Trans ((IconPositionHint P)::T) (i,s,p,w,_,m,f) = Trans T (i,s,p,w,P,m,AddIn f 16) | Trans ((IconMaskHint m)::T) (i,s,p,w,P,_,f) = Trans T (i,s,p,w,P,m,AddIn f 32); in Trans L (false,DontCareState,NoDrawable,NoDrawable,origin,NoDrawable,0) end; fun fromXWMSizeHints L = let fun AddIn m n = if (m And n) = 0 then (m Or n) else raise XWindows "XWMSizeHint parameters"; fun Trans [] (p,s,min,max,inc,a,bs,wg,f) = (p,s,min,max,inc,a,bs,fromGravity wg,f) | Trans ((PPosition p) ::T) (_,s,min,max,inc,a,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 4) | Trans ((PSize s) ::T) (p,_,min,max,inc,a,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 8) | Trans ((PMinSize min)::T) (p,s,_ ,max,inc,a,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 16) | Trans ((PMaxSize max)::T) (p,s,min,_ ,inc,a,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 32) | Trans ((PResizeInc inc)::T) (p,s,min,max,_ ,a,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 64) | Trans ((PAspect a) ::T) (p,s,min,max,inc,_,bs,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 128) | Trans ((PBaseSize bs) ::T) (p,s,min,max,inc,a,_ ,wg,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 256) | Trans ((PWinGravity wg) ::T) (p,s,min,max,inc,a,bs,_ ,f) = Trans T (p,s,min,max,inc,a,bs,wg,AddIn f 512); in Trans L (origin,a1,a1,a1,a1,(origin,origin),a1,ForgetGravity,0) end; fun fromXStandardColormaps L = let fun Trans (XStandardColormap {colormap,redMax,redMult,greenMax,greenMult,blueMax,blueMult,basePixel,visual}) = ( (colormap,redMax,redMult,greenMax,greenMult,blueMax,blueMult,basePixel,visual) ); in map Trans L end; fun XSetProperty (w:Drawable) (property:int) (v:PropertyValue) (t:int):unit = ( case v of PropertyArc L => xcall (XCALL_XSetProperty,w,property,t,L,XA_ARC) | PropertyAtom L => xcall (XCALL_XSetProperty,w,property,t,L,XA_ATOM) | PropertyBitmap L => xcall (XCALL_XSetProperty,w,property,t,L,XA_BITMAP) | PropertyColormap L => xcall (XCALL_XSetProperty,w,property,t,L,XA_COLORMAP) | PropertyCursor L => xcall (XCALL_XSetProperty,w,property,t,L,XA_CURSOR) | PropertyDrawable L => xcall (XCALL_XSetProperty,w,property,t,L,XA_DRAWABLE) | PropertyFont L => xcall (XCALL_XSetProperty,w,property,t,L,XA_FONT) | PropertyInteger L => xcall (XCALL_XSetProperty,w,property,t,L,XA_INTEGER) | PropertyPixmap L => xcall (XCALL_XSetProperty,w,property,t,L,XA_PIXMAP) | PropertyPoint L => xcall (XCALL_XSetProperty,w,property,t,L,XA_POINT) | PropertyRectangle L => xcall (XCALL_XSetProperty,w,property,t,L,XA_RECTANGLE) | PropertyString s => xcall (XCALL_XSetProperty,w,property,t,s,XA_STRING) | PropertyVisual L => xcall (XCALL_XSetProperty,w,property,t,L,XA_VISUALID) | PropertyWindow L => xcall (XCALL_XSetProperty,w,property,t,L,XA_WINDOW) | PropertyRGBColormap L => xcall (XCALL_XSetProperty,w,property,t,fromXStandardColormaps L,XA_RGB_COLOR_MAP) | PropertyWMHints L => xcall (XCALL_XSetProperty,w,property,t,[fromXWMHints L],XA_WM_HINTS) | PropertyWMSizeHints L => xcall (XCALL_XSetProperty,w,property,t,[fromXWMSizeHints L],XA_WM_SIZE_HINTS) | PropertyWMIconSizes L => xcall (XCALL_XSetProperty,w,property,t,L,XA_WM_ICON_SIZE) ); fun XGetTextProperty (w:Drawable) (property:int):(string * int * int * int) = xcall (XCALL_XGetTextProperty,w,property); fun GetSet property exceptionName = let fun Get w = let val (string,encoding,format,_) = XGetTextProperty w property; in if encoding = XA_STRING andalso format = 8 then string else raise XWindows exceptionName end; fun Set w s = XSetProperty w property (PropertyString s) XA_STRING; in (Get,Set) end; val (XGetWMName ,XSetWMName) = GetSet XA_WM_NAME "XGetWMName"; val (XGetWMIconName ,XSetWMIconName) = GetSet XA_WM_ICON_NAME "XGetWMIconName"; val (XGetWMClientMachine,XSetWMClientMachine) = GetSet XA_WM_CLIENT_MACHINE "XGetWMClientMachine"; fun GetSetList property exceptionName = let fun Split s = let fun Accum acc s [] = rev (s::acc) | Accum acc s (H::T) = if H = #"\000" then Accum (s::acc) "" T else Accum acc (s ^ String.str H) T; in Accum [] "" (explode s) end; fun Join [] = "" | Join [s] = s | Join (H::T) = H ^ "\000" ^ Join T; val (Get,Set) = GetSet property exceptionName; in (fn w => Split (Get w),fn w => fn L => Set w (Join L)) end; val (XGetWMCommand,XSetWMCommand) = GetSetList XA_WM_COMMAND "XGetWMCommand"; val (XGetWMClass ,XSetWMClass) = GetSetList XA_WM_CLASS "XGetWMClass"; fun XSetWMHints w L = XSetProperty w XA_WM_HINTS (PropertyWMHints L) XA_WM_HINTS; fun XGetWMHints (win:Drawable) = let val (i,s,p,w,P,m,f) = xcall (XCALL_XGetWMHints,win); val s = toXWMStateHint s; in (if (f And 1) <> 0 then [InputHint i] else []) @ (if (f And 2) <> 0 then [StateHint s] else []) @ (if (f And 4) <> 0 then [IconPixmapHint p] else []) @ (if (f And 8) <> 0 then [IconWindowHint w] else []) @ (if (f And 16) <> 0 then [IconPositionHint P] else []) @ (if (f And 32) <> 0 then [IconMaskHint m] else []) end; fun XSetWMSizeHints w property L = XSetProperty w property (PropertyWMSizeHints L) XA_WM_SIZE_HINTS; fun XGetWMSizeHints (win:Drawable) (property:int) = let val (p,s,min,max,inc,a,bs,wg,f) = xcall (XCALL_XGetWMSizeHints,win,property); val wg = toGravity wg; in (if (f And 4) <> 0 then [PPosition p] else []) @ (if (f And 8) <> 0 then [PSize s] else []) @ (if (f And 16) <> 0 then [PMinSize min] else []) @ (if (f And 32) <> 0 then [PMaxSize max] else []) @ (if (f And 64) <> 0 then [PResizeInc inc] else []) @ (if (f And 128) <> 0 then [PAspect a] else []) @ (if (f And 256) <> 0 then [PBaseSize bs] else []) @ (if (f And 512) <> 0 then [PWinGravity wg] else []) end; fun XSetWMNormalHints w L = XSetWMSizeHints w XA_WM_NORMAL_HINTS L; fun XGetWMNormalHints w = XGetWMSizeHints w XA_WM_NORMAL_HINTS; fun XSetWMProperties w windowName iconName commands normalHints wmHints class = ( if windowName <> "" then XSetWMName w windowName else (); if iconName <> "" then XSetWMIconName w iconName else (); if commands <> [] then XSetWMCommand w commands else (); XSetWMNormalHints w normalHints; XSetWMHints w wmHints; if class <> [] then XSetWMClass w class else () ); fun XSetIconSizes w sizes = XSetProperty w XA_WM_ICON_SIZE (PropertyWMIconSizes sizes) XA_WM_ICON_SIZE; fun XGetIconSizes (w:Drawable):(XRectangle * XRectangle * XRectangle) list = xcall (XCALL_XGetIconSizes,w); fun XSetTransientForHint transient main = XSetProperty transient XA_WM_TRANSIENT_FOR (PropertyWindow [main]) XA_WINDOW; fun XGetTransientForHint (w:Drawable):Drawable = xcall (XCALL_XGetTransientForHint,w); fun XSetWMColormapWindows w subwins = let val property = XInternAtom (DrawableDisplay w) "WM_COLORMAP_WINDOWS" true; in if property = 0 then raise XWindows "XSetWMColormapWindows failed" else XSetProperty w property (PropertyWindow subwins) XA_WINDOW end; fun XGetWMColormapWindows (w:Drawable):Drawable list = xcall (XCALL_XGetWMColormapWindows,w); fun XSetRGBColormaps w property L = XSetProperty w property (PropertyRGBColormap L) XA_RGB_COLOR_MAP; fun XGetRGBColormaps (w:Drawable) (property:int) = let fun Trans (colormap,redMax,redMult,greenMax,greenMult,blueMax,blueMult,basePixel,visual) = ( XStandardColormap { colormap = colormap, redMax = redMax, redMult = redMult, greenMax = greenMax, greenMult = greenMult, blueMax = blueMax, blueMult = blueMult, basePixel = basePixel, visual = visual } ); in map Trans (xcall (XCALL_XGetRGBColormaps,w,property)) end; fun XWMGeometry (d:Display) (user:string) (def:string) (borderWidth:int) (L:XWMSizeHint list):(XPoint * XRectangle * Gravity) = let val (p,r,g) = xcall (XCALL_XWMGeometry,d,user,def,borderWidth,fromXWMSizeHints L); in (p,r,toGravity g) end; (* Miscellaneous and Convenience functions 1300 *) local fun GetID x = xcall (XCALL_GetID,x):int; in val ColormapID = GetID : Colormap -> int; val CursorID = GetID : Cursor -> int; val DrawableID = GetID : Drawable -> int; val FontID = GetID : Font -> int; val GCID = GetID : GC -> int; val VisualID = GetID : Visual -> int; end; fun SameDrawable a b = (DrawableID a = DrawableID b); fun XSetColors gc fg bg = (XSetForeground gc fg; XSetBackground gc bg); fun XGetWindowRoot w = #1 (XGetGeometry w); fun XGetWindowPosition w = #2 (XGetGeometry w); fun XGetWindowSize w = #3 (XGetGeometry w); fun XGetWindowBorderWidth w = #4 (XGetGeometry w); fun XGetWindowDepth w = #5 (XGetGeometry w); fun XGetWindowParent w = #2 (XQueryTree w); fun XGetWindowChildren w = #3 (XQueryTree w); fun GetTimeOfDay():(int * int) = xcall (XCALL_GetTimeOfDay,0); fun FSFont (XFontStruct {font ,...}) = font; fun FSDirection (XFontStruct {direction ,...}) = direction; fun FSMinChar (XFontStruct {minChar ,...}) = minChar; fun FSMaxChar (XFontStruct {maxChar ,...}) = maxChar; fun FSMinByte1 (XFontStruct {minByte1 ,...}) = minByte1; fun FSMaxByte1 (XFontStruct {maxByte1 ,...}) = maxByte1; fun FSAllCharsExist (XFontStruct {allCharsExist,...}) = allCharsExist; fun FSDefaultChar (XFontStruct {defaultChar ,...}) = defaultChar; fun FSMinBounds (XFontStruct {minBounds ,...}) = minBounds; fun FSMaxBounds (XFontStruct {maxBounds ,...}) = maxBounds; fun FSPerChar (XFontStruct {perChar ,...}) = perChar; fun FSAscent (XFontStruct {ascent ,...}) = ascent; fun FSDescent (XFontStruct {descent ,...}) = descent; fun CharLBearing (XCharStruct {lbearing ,...}) = lbearing; fun CharRBearing (XCharStruct {rbearing ,...}) = rbearing; fun CharWidth (XCharStruct {width ,...}) = width; fun CharAscent (XCharStruct {ascent ,...}) = ascent; fun CharDescent (XCharStruct {descent ,...}) = descent; fun CharAttributes (XCharStruct {attributes,...}) = attributes; fun FSMinWidth f = CharWidth (FSMinBounds f); fun FSMaxWidth f = CharWidth (FSMaxBounds f); fun FSMinHeight f = CharAscent (FSMinBounds f) + CharDescent (FSMinBounds f); fun FSMaxHeight f = CharAscent (FSMaxBounds f) + CharDescent (FSMaxBounds f); fun ShiftDown [] = false | ShiftDown (ShiftMask::_) = true | ShiftDown (_::T) = ShiftDown T; fun ControlDown [] = false | ControlDown (ControlMask::_) = true | ControlDown (_::T) = ControlDown T; end (* local *); end (* structure XWindows *); exception XWindows = XWindows.XWindows; local open XWindows; fun printRect _ _ (r:XRectangle) = let val R = DestructRect r; in PolyML.PrettyString ("Rect " ^ PolyML.makestring R) end; in val () = PolyML.addPrettyPrinter printRect end; polyml-5.7.1/mlsource/extra/XWindows/XTYPES_SIG.ML0000644000175000017500000000211413204034553020523 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XTYPES_SIG = sig (* abstypes *) type Colormap ; type Cursor ; type Display ; type Drawable ; type Font ; type GC ; type Visual ; (* Geometry *) datatype XPoint = XPoint of { x:int,y:int } ; eqtype XRectangle ; end ; polyml-5.7.1/mlsource/extra/XWindows/XWINDOWS_R2_SIG.ML0000644000175000017500000001333213204034553021320 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Grabbing *) eqtype GrabMode ; val GrabModeSync: GrabMode ; val GrabModeAsync: GrabMode ; eqtype GrabStatus ; val GrabSuccess: GrabStatus ; val AlreadyGrabbed: GrabStatus ; val GrabInvalidTime: GrabStatus ; val GrabNotViewable: GrabStatus ; val GrabFrozen: GrabStatus ; (* val XChangeActivePointerGrab: EventMask list -> Cursor -> int -> unit ; *) (* val XGrabButton: ButtonName -> Modifier list -> Drawable -> bool -> EventMask list -> GrabMode -> GrabMode -> Drawable -> Cursor -> unit ; *) (* val XGrabKey: int -> Modifier list -> Drawable -> bool -> GrabMode -> GrabMode -> unit ; *) (* val XGrabKeyboard: Drawable -> bool -> GrabMode -> GrabMode -> int -> GrabStatus ; *) (* val XGrabPointer: Drawable -> bool -> EventMask list -> GrabMode -> GrabMode -> Drawable -> Cursor -> int -> GrabStatus ; *) (* val XGrabServer: unit -> unit ; *) (* val XUngrabButton: ButtonName -> Modifier list -> Drawable -> unit ; *) (* val XUngrabKey: int -> Modifier list -> Drawable -> unit ; *) (* val XUngrabKeyboard: int -> unit ; *) (* val XUngrabPointer: int -> unit ; *) (* val XUngrabServer: unit -> unit ; *) val CurrentTime: int ; (* Keyboard *) eqtype AutoRepeatMode ; val AutoRepeatModeOff: AutoRepeatMode ; val AutoRepeatModeOn: AutoRepeatMode ; val AutoRepeatModeDefault: AutoRepeatMode ; datatype XKeyboardControl = KBKeyClickPercent of int | KBBellPercent of int | KBBellPitch of int | KBBellDuration of int | KBLed of int | KBLedMode of bool | KBKey of int | KBAutoRepeatMode of AutoRepeatMode ; datatype XKeyboardState = XKeyboardState of { keyClickPercent: int, bellPercent: int, bellPitch: int, bellDuration: int, leds: bool list, (* 32 bools *) autoRepeats: bool list, (* 256 bools *) globalAutoRepeat: AutoRepeatMode } ; datatype XModifierKeymap = XModifierKeymap of int (* maxKeysPerModifier *) * int list list ; (* 8 by maxKeysPerModifier keycodes *) eqtype MapIndex ; val ShiftMapIndex: MapIndex ; val LockMapIndex: MapIndex ; val ControlMapIndex: MapIndex ; val Mod1MapIndex: MapIndex ; val Mod2MapIndex: MapIndex ; val Mod3MapIndex: MapIndex ; val Mod4MapIndex: MapIndex ; val Mod5MapIndex: MapIndex ; eqtype MapStatus ; val MappingSuccess: MapStatus ; val MappingBusy: MapStatus ; val MappingFailed: MapStatus ; (* val XChangeKeyboardControl: XKeyboardControl list -> unit ; *) (* val XChangeKeyboardMapping: int -> int -> int list -> unit ; *) (* val XDeleteModifiermapEntry: XModifierKeymap -> int -> MapIndex -> unit ; *) (* val XGetKeyboardControl: unit -> XKeyboardState ; *) (* val XGetKeyboardMapping: int -> int -> int list ; *) (* val XGetModifierMapping: unit -> XModifierKeymap ; *) (* val XInsertModifiermapEntry: XModifierKeymap -> int -> MapIndex -> XModifierKeymap ; *) (* val XKeycodeToKeysym: int -> int -> int ; *) (* val XKeysymToKeycode: int -> int ; *) (* val XKeysymToString: int -> string ; *) (* val XLookupKeysym: int -> MapIndex -> int ; *) (* val XNewModifiermap: int -> XModifierKeymap ; *) (* val XQueryKeymap: unit -> bool list ; (* 256 bools *) *) (* val XRebindKeysym: int -> int list -> string -> unit ; *) (* val XRefreshKeyboardMapping: XMappingEvent -> unit ; *) (* val XSetModifierMapping: XModifierKeymap -> MapStatus ; *) (* val XStringToKeysym: string -> int ; *) (* Pointers *) (* val XChangePointerControl: bool -> bool -> int -> int -> int -> unit ; *) (* val XGetPointerControl: unit -> (int * int * int) ; *) (* val XGetPointerMapping: int -> int list ; *) (* val XSetPointerMapping: int list -> MapStatus ; *) (* val XWarpPointer: Drawable -> Drawable -> XRectangle -> XPoint -> unit ; *) (* Save Set *) eqtype SetMode ; val SetModeInsert: SetMode ; val SetModeDelete: SetMode ; (* val XAddToSaveSet: Drawable -> unit ; *) (* val XChangeSaveSet: Drawable -> SetMode -> unit ; *) (* val XRemoveFromSaveSet: Drawable -> unit ; *) polyml-5.7.1/mlsource/extra/XWindows/XAtoms.ML0000644000175000017500000000645013204034553020207 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XAtoms: XATOMS_SIG = struct val XA_PRIMARY = 1 ; val XA_SECONDARY = 2 ; val XA_ARC = 3 ; val XA_ATOM = 4 ; val XA_BITMAP = 5 ; val XA_CARDINAL = 6 ; val XA_COLORMAP = 7 ; val XA_CURSOR = 8 ; val XA_CUT_BUFFER0 = 9 ; val XA_CUT_BUFFER1 = 10 ; val XA_CUT_BUFFER2 = 11 ; val XA_CUT_BUFFER3 = 12 ; val XA_CUT_BUFFER4 = 13 ; val XA_CUT_BUFFER5 = 14 ; val XA_CUT_BUFFER6 = 15 ; val XA_CUT_BUFFER7 = 16 ; val XA_DRAWABLE = 17 ; val XA_FONT = 18 ; val XA_INTEGER = 19 ; val XA_PIXMAP = 20 ; val XA_POINT = 21 ; val XA_RECTANGLE = 22 ; val XA_RESOURCE_MANAGER = 23 ; val XA_RGB_COLOR_MAP = 24 ; val XA_RGB_BEST_MAP = 25 ; val XA_RGB_BLUE_MAP = 26 ; val XA_RGB_DEFAULT_MAP = 27 ; val XA_RGB_GRAY_MAP = 28 ; val XA_RGB_GREEN_MAP = 29 ; val XA_RGB_RED_MAP = 30 ; val XA_STRING = 31 ; val XA_VISUALID = 32 ; val XA_WINDOW = 33 ; val XA_WM_COMMAND = 34 ; val XA_WM_HINTS = 35 ; val XA_WM_CLIENT_MACHINE = 36 ; val XA_WM_ICON_NAME = 37 ; val XA_WM_ICON_SIZE = 38 ; val XA_WM_NAME = 39 ; val XA_WM_NORMAL_HINTS = 40 ; val XA_WM_SIZE_HINTS = 41 ; val XA_MIN_SPACE = 43 ; val XA_NORM_SPACE = 44 ; val XA_MAX_SPACE = 45 ; val XA_END_SPACE = 46 ; val XA_SUPERSCRIPT_X = 47 ; val XA_SUPERSCRIPT_Y = 48 ; val XA_SUBSCRIPT_X = 49 ; val XA_SUBSCRIPT_Y = 50 ; val XA_UNDERLINE_POSITION = 51 ; val XA_UNDERLINE_THICKNESS = 52 ; val XA_STRIKEOUT_ASCENT = 53 ; val XA_STRIKEOUT_DESCENT = 54 ; val XA_ITALIC_ANGLE = 55 ; val XA_X_HEIGHT = 56 ; val XA_QUAD_WIDTH = 57 ; val XA_WEIGHT = 58 ; val XA_POINT_SIZE = 59 ; val XA_RESOLUTION = 60 ; val XA_COPYRIGHT = 61 ; val XA_NOTICE = 62 ; val XA_FONT_NAME = 63 ; val XA_FAMILY_NAME = 64 ; val XA_FULL_NAME = 65 ; val XA_CAP_HEIGHT = 66 ; val XA_WM_CLASS = 67 ; val XA_WM_TRANSIENT_FOR = 68 ; end (* XAtoms *) ; polyml-5.7.1/mlsource/extra/XWindows/XKeySyms.ML0000644000175000017500000010776713204034553020545 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XKeySyms: XKEYSYMS_SIG = struct val XK_VoidSymbol = 16777215 ; (* * TTY Functions, cleverly chosen to map to ascii, for convenience of * programming, but could have been arbitrary (at the cost of lookup * tables in client code. *) val XK_BackSpace = 65288 ; val XK_Tab = 65289 ; val XK_Linefeed = 65290 ; val XK_Clear = 65291 ; val XK_Return = 65293 ; val XK_Pause = 65299 ; val XK_Scroll_Lock = 65300 ; val XK_Escape = 65307 ; val XK_Delete = 65535 ; (* International & multi-key character composition *) val XK_Multi_key = 65312 ; (* Japanese keyboard support *) val XK_Kanji = 65313 ; val XK_Muhenkan = 65314 ; val XK_Henkan_Mode = 65315 ; val XK_Henkan = 65315 ; val XK_Romaji = 65316 ; val XK_Hiragana = 65317 ; val XK_Katakana = 65318 ; val XK_Hiragana_Katakana = 65319 ; val XK_Zenkaku = 65320 ; val XK_Hankaku = 65321 ; val XK_Zenkaku_Hankaku = 65322 ; val XK_Touroku = 65323 ; val XK_Massyo = 65324 ; val XK_Kana_Lock = 65325 ; val XK_Kana_Shift = 65326 ; val XK_Eisu_Shift = 65327 ; val XK_Eisu_toggle = 65328 ; (* Cursor control & motion *) val XK_Home = 65360 ; val XK_Left = 65361 ; val XK_Up = 65362 ; val XK_Right = 65363 ; val XK_Down = 65364 ; val XK_Prior = 65365 ; val XK_Next = 65366 ; val XK_End = 65367 ; val XK_Begin = 65368 ; (* Misc Functions *) val XK_Select = 65376 ; val XK_Print = 65377 ; val XK_Execute = 65378 ; val XK_Insert = 65379 ; val XK_Undo = 65381 ; val XK_Redo = 65382 ; val XK_Menu = 65383 ; val XK_Find = 65384 ; val XK_Cancel = 65385 ; val XK_Help = 65386 ; val XK_Break = 65387 ; val XK_Mode_switch = 65406 ; val XK_script_switch = 65406 ; val XK_Num_Lock = 65407 ; (* Keypad Functions, keypad numbers cleverly chosen to map to ascii *) val XK_KP_Space = 65408 ; val XK_KP_Tab = 65417 ; val XK_KP_Enter = 65421 ; val XK_KP_F1 = 65425 ; val XK_KP_F2 = 65426 ; val XK_KP_F3 = 65427 ; val XK_KP_F4 = 65428 ; val XK_KP_Equal = 65469 ; val XK_KP_Multiply = 65450 ; val XK_KP_Add = 65451 ; val XK_KP_Separator = 65452 ; val XK_KP_Subtract = 65453 ; val XK_KP_Decimal = 65454 ; val XK_KP_Divide = 65455 ; val XK_KP_0 = 65456 ; val XK_KP_1 = 65457 ; val XK_KP_2 = 65458 ; val XK_KP_3 = 65459 ; val XK_KP_4 = 65460 ; val XK_KP_5 = 65461 ; val XK_KP_6 = 65462 ; val XK_KP_7 = 65463 ; val XK_KP_8 = 65464 ; val XK_KP_9 = 65465 ; (* * Auxilliary Functions; note the duplicate definitions for left and right * function keys; Sun keyboards and a few other manufactures have such * function key groups on the left and/or right sides of the keyboard. * We've not found a keyboard with more than 35 function keys total. *) val XK_F1 = 65470 ; val XK_F2 = 65471 ; val XK_F3 = 65472 ; val XK_F4 = 65473 ; val XK_F5 = 65474 ; val XK_F6 = 65475 ; val XK_F7 = 65476 ; val XK_F8 = 65477 ; val XK_F9 = 65478 ; val XK_F10 = 65479 ; val XK_F11 = 65480 ; val XK_L1 = 65480 ; val XK_F12 = 65481 ; val XK_L2 = 65481 ; val XK_F13 = 65482 ; val XK_L3 = 65482 ; val XK_F14 = 65483 ; val XK_L4 = 65483 ; val XK_F15 = 65484 ; val XK_L5 = 65484 ; val XK_F16 = 65485 ; val XK_L6 = 65485 ; val XK_F17 = 65486 ; val XK_L7 = 65486 ; val XK_F18 = 65487 ; val XK_L8 = 65487 ; val XK_F19 = 65488 ; val XK_L9 = 65488 ; val XK_F20 = 65489 ; val XK_L10 = 65489 ; val XK_F21 = 65490 ; val XK_R1 = 65490 ; val XK_F22 = 65491 ; val XK_R2 = 65491 ; val XK_F23 = 65492 ; val XK_R3 = 65492 ; val XK_F24 = 65493 ; val XK_R4 = 65493 ; val XK_F25 = 65494 ; val XK_R5 = 65494 ; val XK_F26 = 65495 ; val XK_R6 = 65495 ; val XK_F27 = 65496 ; val XK_R7 = 65496 ; val XK_F28 = 65497 ; val XK_R8 = 65497 ; val XK_F29 = 65498 ; val XK_R9 = 65498 ; val XK_F30 = 65499 ; val XK_R10 = 65499 ; val XK_F31 = 65500 ; val XK_R11 = 65500 ; val XK_F32 = 65501 ; val XK_R12 = 65501 ; val XK_R13 = 65502 ; val XK_F33 = 65502 ; val XK_F34 = 65503 ; val XK_R14 = 65503 ; val XK_F35 = 65504 ; val XK_R15 = 65504 ; (* Modifiers *) val XK_Shift_L = 65505 ; val XK_Shift_R = 65506 ; val XK_Control_L = 65507 ; val XK_Control_R = 65508 ; val XK_Caps_Lock = 65509 ; val XK_Shift_Lock = 65510 ; val XK_Meta_L = 65511 ; val XK_Meta_R = 65512 ; val XK_Alt_L = 65513 ; val XK_Alt_R = 65514 ; val XK_Super_L = 65515 ; val XK_Super_R = 65516 ; val XK_Hyper_L = 65517 ; val XK_Hyper_R = 65518 ; (* Latin 1 *) val XK_space = 32 ; val XK_exclam = 33 ; val XK_quotedbl = 34 ; val XK_numbersign = 35 ; val XK_dollar = 36 ; val XK_percent = 37 ; val XK_ampersand = 38 ; val XK_apostrophe = 39 ; val XK_quoteright = 39 ; val XK_parenleft = 40 ; val XK_parenright = 41 ; val XK_asterisk = 42 ; val XK_plus = 43 ; val XK_comma = 44 ; val XK_minus = 45 ; val XK_period = 46 ; val XK_slash = 47 ; val XK_0 = 48 ; val XK_1 = 49 ; val XK_2 = 50 ; val XK_3 = 51 ; val XK_4 = 52 ; val XK_5 = 53 ; val XK_6 = 54 ; val XK_7 = 55 ; val XK_8 = 56 ; val XK_9 = 57 ; val XK_colon = 58 ; val XK_semicolon = 59 ; val XK_less = 60 ; val XK_equal = 61 ; val XK_greater = 62 ; val XK_question = 63 ; val XK_at = 64 ; val XK_A = 65 ; val XK_B = 66 ; val XK_C = 67 ; val XK_D = 68 ; val XK_E = 69 ; val XK_F = 70 ; val XK_G = 71 ; val XK_H = 72 ; val XK_I = 73 ; val XK_J = 74 ; val XK_K = 75 ; val XK_L = 76 ; val XK_M = 77 ; val XK_N = 78 ; val XK_O = 79 ; val XK_P = 80 ; val XK_Q = 81 ; val XK_R = 82 ; val XK_S = 83 ; val XK_T = 84 ; val XK_U = 85 ; val XK_V = 86 ; val XK_W = 87 ; val XK_X = 88 ; val XK_Y = 89 ; val XK_Z = 90 ; val XK_bracketleft = 91 ; val XK_backslash = 92 ; val XK_bracketright = 93 ; val XK_asciicircum = 94 ; val XK_underscore = 95 ; val XK_grave = 96 ; val XK_quoteleft = 96 ; val XK_a = 97 ; val XK_b = 98 ; val XK_c = 99 ; val XK_d = 100 ; val XK_e = 101 ; val XK_f = 102 ; val XK_g = 103 ; val XK_h = 104 ; val XK_i = 105 ; val XK_j = 106 ; val XK_k = 107 ; val XK_l = 108 ; val XK_m = 109 ; val XK_n = 110 ; val XK_o = 111 ; val XK_p = 112 ; val XK_q = 113 ; val XK_r = 114 ; val XK_s = 115 ; val XK_t = 116 ; val XK_u = 117 ; val XK_v = 118 ; val XK_w = 119 ; val XK_x = 120 ; val XK_y = 121 ; val XK_z = 122 ; val XK_braceleft = 123 ; val XK_bar = 124 ; val XK_braceright = 125 ; val XK_asciitilde = 126 ; val XK_nobreakspace = 160 ; val XK_exclamdown = 161 ; val XK_cent = 162 ; val XK_sterling = 163 ; val XK_currency = 164 ; val XK_yen = 165 ; val XK_brokenbar = 166 ; val XK_section = 167 ; val XK_diaeresis = 168 ; val XK_copyright = 169 ; val XK_ordfeminine = 170 ; val XK_guillemotleft = 171 ; val XK_notsign = 172 ; val XK_hyphen = 173 ; val XK_registered = 174 ; val XK_macron = 175 ; val XK_degree = 176 ; val XK_plusminus = 177 ; val XK_twosuperior = 178 ; val XK_threesuperior = 179 ; val XK_acute = 180 ; val XK_mu = 181 ; val XK_paragraph = 182 ; val XK_periodcentered = 183 ; val XK_cedilla = 184 ; val XK_onesuperior = 185 ; val XK_masculine = 186 ; val XK_guillemotright = 187 ; val XK_onequarter = 188 ; val XK_onehalf = 189 ; val XK_threequarters = 190 ; val XK_questiondown = 191 ; val XK_Agrave = 192 ; val XK_Aacute = 193 ; val XK_Acircumflex = 194 ; val XK_Atilde = 195 ; val XK_Adiaeresis = 196 ; val XK_Aring = 197 ; val XK_AE = 198 ; val XK_Ccedilla = 199 ; val XK_Egrave = 200 ; val XK_Eacute = 201 ; val XK_Ecircumflex = 202 ; val XK_Ediaeresis = 203 ; val XK_Igrave = 204 ; val XK_Iacute = 205 ; val XK_Icircumflex = 206 ; val XK_Idiaeresis = 207 ; val XK_ETH = 208 ; val XK_Eth = 208 ; val XK_Ntilde = 209 ; val XK_Ograve = 210 ; val XK_Oacute = 211 ; val XK_Ocircumflex = 212 ; val XK_Otilde = 213 ; val XK_Odiaeresis = 214 ; val XK_multiply = 215 ; val XK_Ooblique = 216 ; val XK_Ugrave = 217 ; val XK_Uacute = 218 ; val XK_Ucircumflex = 219 ; val XK_Udiaeresis = 220 ; val XK_Yacute = 221 ; val XK_THORN = 222 ; val XK_Thorn = 222 ; val XK_ssharp = 223 ; val XK_agrave = 224 ; val XK_aacute = 225 ; val XK_acircumflex = 226 ; val XK_atilde = 227 ; val XK_adiaeresis = 228 ; val XK_aring = 229 ; val XK_ae = 230 ; val XK_ccedilla = 231 ; val XK_egrave = 232 ; val XK_eacute = 233 ; val XK_ecircumflex = 234 ; val XK_ediaeresis = 235 ; val XK_igrave = 236 ; val XK_iacute = 237 ; val XK_icircumflex = 238 ; val XK_idiaeresis = 239 ; val XK_eth = 240 ; val XK_ntilde = 241 ; val XK_ograve = 242 ; val XK_oacute = 243 ; val XK_ocircumflex = 244 ; val XK_otilde = 245 ; val XK_odiaeresis = 246 ; val XK_division = 247 ; val XK_oslash = 248 ; val XK_ugrave = 249 ; val XK_uacute = 250 ; val XK_ucircumflex = 251 ; val XK_udiaeresis = 252 ; val XK_yacute = 253 ; val XK_thorn = 254 ; val XK_ydiaeresis = 255 ; (* Latin 2 *) val XK_Aogonek = 417 ; val XK_breve = 418 ; val XK_Lstroke = 419 ; val XK_Lcaron = 421 ; val XK_Sacute = 422 ; val XK_Scaron = 425 ; val XK_Scedilla = 426 ; val XK_Tcaron = 427 ; val XK_Zacute = 428 ; val XK_Zcaron = 430 ; val XK_Zabovedot = 431 ; val XK_aogonek = 433 ; val XK_ogonek = 434 ; val XK_lstroke = 435 ; val XK_lcaron = 437 ; val XK_sacute = 438 ; val XK_caron = 439 ; val XK_scaron = 441 ; val XK_scedilla = 442 ; val XK_tcaron = 443 ; val XK_zacute = 444 ; val XK_doubleacute = 445 ; val XK_zcaron = 446 ; val XK_zabovedot = 447 ; val XK_Racute = 448 ; val XK_Abreve = 451 ; val XK_Lacute = 453 ; val XK_Cacute = 454 ; val XK_Ccaron = 456 ; val XK_Eogonek = 458 ; val XK_Ecaron = 460 ; val XK_Dcaron = 463 ; val XK_Dstroke = 464 ; val XK_Nacute = 465 ; val XK_Ncaron = 466 ; val XK_Odoubleacute = 469 ; val XK_Rcaron = 472 ; val XK_Uring = 473 ; val XK_Udoubleacute = 475 ; val XK_Tcedilla = 478 ; val XK_racute = 480 ; val XK_abreve = 483 ; val XK_lacute = 485 ; val XK_cacute = 486 ; val XK_ccaron = 488 ; val XK_eogonek = 490 ; val XK_ecaron = 492 ; val XK_dcaron = 495 ; val XK_dstroke = 496 ; val XK_nacute = 497 ; val XK_ncaron = 498 ; val XK_odoubleacute = 501 ; val XK_udoubleacute = 507 ; val XK_rcaron = 504 ; val XK_uring = 505 ; val XK_tcedilla = 510 ; val XK_abovedot = 511 ; (* Latin 3 *) val XK_Hstroke = 673 ; val XK_Hcircumflex = 678 ; val XK_Iabovedot = 681 ; val XK_Gbreve = 683 ; val XK_Jcircumflex = 684 ; val XK_hstroke = 689 ; val XK_hcircumflex = 694 ; val XK_idotless = 697 ; val XK_gbreve = 699 ; val XK_jcircumflex = 700 ; val XK_Cabovedot = 709 ; val XK_Ccircumflex = 710 ; val XK_Gabovedot = 725 ; val XK_Gcircumflex = 728 ; val XK_Ubreve = 733 ; val XK_Scircumflex = 734 ; val XK_cabovedot = 741 ; val XK_ccircumflex = 742 ; val XK_gabovedot = 757 ; val XK_gcircumflex = 760 ; val XK_ubreve = 765 ; val XK_scircumflex = 766 ; (* Latin 4 *) val XK_kra = 930 ; val XK_kappa = 930 ; val XK_Rcedilla = 931 ; val XK_Itilde = 933 ; val XK_Lcedilla = 934 ; val XK_Emacron = 938 ; val XK_Gcedilla = 939 ; val XK_Tslash = 940 ; val XK_rcedilla = 947 ; val XK_itilde = 949 ; val XK_lcedilla = 950 ; val XK_emacron = 954 ; val XK_gcedilla = 955 ; val XK_tslash = 956 ; val XK_ENG = 957 ; val XK_eng = 959 ; val XK_Amacron = 960 ; val XK_Iogonek = 967 ; val XK_Eabovedot = 972 ; val XK_Imacron = 975 ; val XK_Ncedilla = 977 ; val XK_Omacron = 978 ; val XK_Kcedilla = 979 ; val XK_Uogonek = 985 ; val XK_Utilde = 989 ; val XK_Umacron = 990 ; val XK_amacron = 992 ; val XK_iogonek = 999 ; val XK_eabovedot = 1004 ; val XK_imacron = 1007 ; val XK_ncedilla = 1009 ; val XK_omacron = 1010 ; val XK_kcedilla = 1011 ; val XK_uogonek = 1017 ; val XK_utilde = 1021 ; val XK_umacron = 1022 ; (* Katakana *) val XK_overline = 1150 ; val XK_kana_fullstop = 1185 ; val XK_kana_openingbracket = 1186 ; val XK_kana_closingbracket = 1187 ; val XK_kana_comma = 1188 ; val XK_kana_conjunctive = 1189 ; val XK_kana_middledot = 1189 ; val XK_kana_WO = 1190 ; val XK_kana_a = 1191 ; val XK_kana_i = 1192 ; val XK_kana_u = 1193 ; val XK_kana_e = 1194 ; val XK_kana_o = 1195 ; val XK_kana_ya = 1196 ; val XK_kana_yu = 1197 ; val XK_kana_yo = 1198 ; val XK_kana_tsu = 1199 ; val XK_kana_tu = 1199 ; val XK_prolongedsound = 1200 ; val XK_kana_A = 1201 ; val XK_kana_I = 1202 ; val XK_kana_U = 1203 ; val XK_kana_E = 1204 ; val XK_kana_O = 1205 ; val XK_kana_KA = 1206 ; val XK_kana_KI = 1207 ; val XK_kana_KU = 1208 ; val XK_kana_KE = 1209 ; val XK_kana_KO = 1210 ; val XK_kana_SA = 1211 ; val XK_kana_SHI = 1212 ; val XK_kana_SU = 1213 ; val XK_kana_SE = 1214 ; val XK_kana_SO = 1215 ; val XK_kana_TA = 1216 ; val XK_kana_CHI = 1217 ; val XK_kana_TI = 1217 ; val XK_kana_TSU = 1218 ; val XK_kana_TU = 1218 ; val XK_kana_TE = 1219 ; val XK_kana_TO = 1220 ; val XK_kana_NA = 1221 ; val XK_kana_NI = 1222 ; val XK_kana_NU = 1223 ; val XK_kana_NE = 1224 ; val XK_kana_NO = 1225 ; val XK_kana_HA = 1226 ; val XK_kana_HI = 1227 ; val XK_kana_FU = 1228 ; val XK_kana_HU = 1228 ; val XK_kana_HE = 1229 ; val XK_kana_HO = 1230 ; val XK_kana_MA = 1231 ; val XK_kana_MI = 1232 ; val XK_kana_MU = 1233 ; val XK_kana_ME = 1234 ; val XK_kana_MO = 1235 ; val XK_kana_YA = 1236 ; val XK_kana_YU = 1237 ; val XK_kana_YO = 1238 ; val XK_kana_RA = 1239 ; val XK_kana_RI = 1240 ; val XK_kana_RU = 1241 ; val XK_kana_RE = 1242 ; val XK_kana_RO = 1243 ; val XK_kana_WA = 1244 ; val XK_kana_N = 1245 ; val XK_voicedsound = 1246 ; val XK_semivoicedsound = 1247 ; val XK_kana_switch = 65406 ; (* Arabic *) val XK_Arabic_comma = 1452 ; val XK_Arabic_semicolon = 1467 ; val XK_Arabic_question_mark = 1471 ; val XK_Arabic_hamza = 1473 ; val XK_Arabic_maddaonalef = 1474 ; val XK_Arabic_hamzaonalef = 1475 ; val XK_Arabic_hamzaonwaw = 1476 ; val XK_Arabic_hamzaunderalef = 1477 ; val XK_Arabic_hamzaonyeh = 1478 ; val XK_Arabic_alef = 1479 ; val XK_Arabic_beh = 1480 ; val XK_Arabic_tehmarbuta = 1481 ; val XK_Arabic_teh = 1482 ; val XK_Arabic_theh = 1483 ; val XK_Arabic_jeem = 1484 ; val XK_Arabic_hah = 1485 ; val XK_Arabic_khah = 1486 ; val XK_Arabic_dal = 1487 ; val XK_Arabic_thal = 1488 ; val XK_Arabic_ra = 1489 ; val XK_Arabic_zain = 1490 ; val XK_Arabic_seen = 1491 ; val XK_Arabic_sheen = 1492 ; val XK_Arabic_sad = 1493 ; val XK_Arabic_dad = 1494 ; val XK_Arabic_tah = 1495 ; val XK_Arabic_zah = 1496 ; val XK_Arabic_ain = 1497 ; val XK_Arabic_ghain = 1498 ; val XK_Arabic_tatweel = 1504 ; val XK_Arabic_feh = 1505 ; val XK_Arabic_qaf = 1506 ; val XK_Arabic_kaf = 1507 ; val XK_Arabic_lam = 1508 ; val XK_Arabic_meem = 1509 ; val XK_Arabic_noon = 1510 ; val XK_Arabic_ha = 1511 ; val XK_Arabic_heh = 1511 ; val XK_Arabic_waw = 1512 ; val XK_Arabic_alefmaksura = 1513 ; val XK_Arabic_yeh = 1514 ; val XK_Arabic_fathatan = 1515 ; val XK_Arabic_dammatan = 1516 ; val XK_Arabic_kasratan = 1517 ; val XK_Arabic_fatha = 1518 ; val XK_Arabic_damma = 1519 ; val XK_Arabic_kasra = 1520 ; val XK_Arabic_shadda = 1521 ; val XK_Arabic_sukun = 1522 ; val XK_Arabic_switch = 65406 ; (* Cyrillic *) val XK_Serbian_dje = 1697 ; val XK_Macedonia_gje = 1698 ; val XK_Cyrillic_io = 1699 ; val XK_Ukrainian_ie = 1700 ; val XK_Ukranian_je = 1700 ; val XK_Macedonia_dse = 1701 ; val XK_Ukrainian_i = 1702 ; val XK_Ukranian_i = 1702 ; val XK_Ukrainian_yi = 1703 ; val XK_Ukranian_yi = 1703 ; val XK_Cyrillic_je = 1704 ; val XK_Serbian_je = 1704 ; val XK_Cyrillic_lje = 1705 ; val XK_Serbian_lje = 1705 ; val XK_Cyrillic_nje = 1706 ; val XK_Serbian_nje = 1706 ; val XK_Serbian_tshe = 1707 ; val XK_Macedonia_kje = 1708 ; val XK_Byelorussian_shortu = 1710 ; val XK_Cyrillic_dzhe = 1711 ; val XK_Serbian_dze = 1711 ; val XK_numerosign = 1712 ; val XK_Serbian_DJE = 1713 ; val XK_Macedonia_GJE = 1714 ; val XK_Cyrillic_IO = 1715 ; val XK_Ukrainian_IE = 1716 ; val XK_Ukranian_JE = 1716 ; val XK_Macedonia_DSE = 1717 ; val XK_Ukrainian_I = 1718 ; val XK_Ukranian_I = 1718 ; val XK_Ukrainian_YI = 1719 ; val XK_Ukranian_YI = 1719 ; val XK_Cyrillic_JE = 1720 ; val XK_Serbian_JE = 1720 ; val XK_Cyrillic_LJE = 1721 ; val XK_Serbian_LJE = 1721 ; val XK_Cyrillic_NJE = 1722 ; val XK_Serbian_NJE = 1722 ; val XK_Serbian_TSHE = 1723 ; val XK_Macedonia_KJE = 1724 ; val XK_Byelorussian_SHORTU = 1726 ; val XK_Cyrillic_DZHE = 1727 ; val XK_Serbian_DZE = 1727 ; val XK_Cyrillic_yu = 1728 ; val XK_Cyrillic_a = 1729 ; val XK_Cyrillic_be = 1730 ; val XK_Cyrillic_tse = 1731 ; val XK_Cyrillic_de = 1732 ; val XK_Cyrillic_ie = 1733 ; val XK_Cyrillic_ef = 1734 ; val XK_Cyrillic_ghe = 1735 ; val XK_Cyrillic_ha = 1736 ; val XK_Cyrillic_i = 1737 ; val XK_Cyrillic_shorti = 1738 ; val XK_Cyrillic_ka = 1739 ; val XK_Cyrillic_el = 1740 ; val XK_Cyrillic_em = 1741 ; val XK_Cyrillic_en = 1742 ; val XK_Cyrillic_o = 1743 ; val XK_Cyrillic_pe = 1744 ; val XK_Cyrillic_ya = 1745 ; val XK_Cyrillic_er = 1746 ; val XK_Cyrillic_es = 1747 ; val XK_Cyrillic_te = 1748 ; val XK_Cyrillic_u = 1749 ; val XK_Cyrillic_zhe = 1750 ; val XK_Cyrillic_ve = 1751 ; val XK_Cyrillic_softsign = 1752 ; val XK_Cyrillic_yeru = 1753 ; val XK_Cyrillic_ze = 1754 ; val XK_Cyrillic_sha = 1755 ; val XK_Cyrillic_e = 1756 ; val XK_Cyrillic_shcha = 1757 ; val XK_Cyrillic_che = 1758 ; val XK_Cyrillic_hardsign = 1759 ; val XK_Cyrillic_YU = 1760 ; val XK_Cyrillic_A = 1761 ; val XK_Cyrillic_BE = 1762 ; val XK_Cyrillic_TSE = 1763 ; val XK_Cyrillic_DE = 1764 ; val XK_Cyrillic_IE = 1765 ; val XK_Cyrillic_EF = 1766 ; val XK_Cyrillic_GHE = 1767 ; val XK_Cyrillic_HA = 1768 ; val XK_Cyrillic_I = 1769 ; val XK_Cyrillic_SHORTI = 1770 ; val XK_Cyrillic_KA = 1771 ; val XK_Cyrillic_EL = 1772 ; val XK_Cyrillic_EM = 1773 ; val XK_Cyrillic_EN = 1774 ; val XK_Cyrillic_O = 1775 ; val XK_Cyrillic_PE = 1776 ; val XK_Cyrillic_YA = 1777 ; val XK_Cyrillic_ER = 1778 ; val XK_Cyrillic_ES = 1779 ; val XK_Cyrillic_TE = 1780 ; val XK_Cyrillic_U = 1781 ; val XK_Cyrillic_ZHE = 1782 ; val XK_Cyrillic_VE = 1783 ; val XK_Cyrillic_SOFTSIGN = 1784 ; val XK_Cyrillic_YERU = 1785 ; val XK_Cyrillic_ZE = 1786 ; val XK_Cyrillic_SHA = 1787 ; val XK_Cyrillic_E = 1788 ; val XK_Cyrillic_SHCHA = 1789 ; val XK_Cyrillic_CHE = 1790 ; val XK_Cyrillic_HARDSIGN = 1791 ; (* Greek *) val XK_Greek_ALPHAaccent = 1953 ; val XK_Greek_EPSILONaccent = 1954 ; val XK_Greek_ETAaccent = 1955 ; val XK_Greek_IOTAaccent = 1956 ; val XK_Greek_IOTAdiaeresis = 1957 ; val XK_Greek_OMICRONaccent = 1959 ; val XK_Greek_UPSILONaccent = 1960 ; val XK_Greek_UPSILONdieresis = 1961 ; val XK_Greek_OMEGAaccent = 1963 ; val XK_Greek_accentdieresis = 1966 ; val XK_Greek_horizbar = 1967 ; val XK_Greek_alphaaccent = 1969 ; val XK_Greek_epsilonaccent = 1970 ; val XK_Greek_etaaccent = 1971 ; val XK_Greek_iotaaccent = 1972 ; val XK_Greek_iotadieresis = 1973 ; val XK_Greek_iotaaccentdieresis = 1974 ; val XK_Greek_omicronaccent = 1975 ; val XK_Greek_upsilonaccent = 1976 ; val XK_Greek_upsilondieresis = 1977 ; val XK_Greek_upsilonaccentdieresis = 1978 ; val XK_Greek_omegaaccent = 1979 ; val XK_Greek_ALPHA = 1985 ; val XK_Greek_BETA = 1986 ; val XK_Greek_GAMMA = 1987 ; val XK_Greek_DELTA = 1988 ; val XK_Greek_EPSILON = 1989 ; val XK_Greek_ZETA = 1990 ; val XK_Greek_ETA = 1991 ; val XK_Greek_THETA = 1992 ; val XK_Greek_IOTA = 1993 ; val XK_Greek_KAPPA = 1994 ; val XK_Greek_LAMDA = 1995 ; val XK_Greek_LAMBDA = 1995 ; val XK_Greek_MU = 1996 ; val XK_Greek_NU = 1997 ; val XK_Greek_XI = 1998 ; val XK_Greek_OMICRON = 1999 ; val XK_Greek_PI = 2000 ; val XK_Greek_RHO = 2001 ; val XK_Greek_SIGMA = 2002 ; val XK_Greek_TAU = 2004 ; val XK_Greek_UPSILON = 2005 ; val XK_Greek_PHI = 2006 ; val XK_Greek_CHI = 2007 ; val XK_Greek_PSI = 2008 ; val XK_Greek_OMEGA = 2009 ; val XK_Greek_alpha = 2017 ; val XK_Greek_beta = 2018 ; val XK_Greek_gamma = 2019 ; val XK_Greek_delta = 2020 ; val XK_Greek_epsilon = 2021 ; val XK_Greek_zeta = 2022 ; val XK_Greek_eta = 2023 ; val XK_Greek_theta = 2024 ; val XK_Greek_iota = 2025 ; val XK_Greek_kappa = 2026 ; val XK_Greek_lamda = 2027 ; val XK_Greek_lambda = 2027 ; val XK_Greek_mu = 2028 ; val XK_Greek_nu = 2029 ; val XK_Greek_xi = 2030 ; val XK_Greek_omicron = 2031 ; val XK_Greek_pi = 2032 ; val XK_Greek_rho = 2033 ; val XK_Greek_sigma = 2034 ; val XK_Greek_finalsmallsigma = 2035 ; val XK_Greek_tau = 2036 ; val XK_Greek_upsilon = 2037 ; val XK_Greek_phi = 2038 ; val XK_Greek_chi = 2039 ; val XK_Greek_psi = 2040 ; val XK_Greek_omega = 2041 ; val XK_Greek_switch = 65406 ; (* Technical *) val XK_leftradical = 2209 ; val XK_topleftradical = 2210 ; val XK_horizconnector = 2211 ; val XK_topintegral = 2212 ; val XK_botintegral = 2213 ; val XK_vertconnector = 2214 ; val XK_topleftsqbracket = 2215 ; val XK_botleftsqbracket = 2216 ; val XK_toprightsqbracket = 2217 ; val XK_botrightsqbracket = 2218 ; val XK_topleftparens = 2219 ; val XK_botleftparens = 2220 ; val XK_toprightparens = 2221 ; val XK_botrightparens = 2222 ; val XK_leftmiddlecurlybrace = 2223 ; val XK_rightmiddlecurlybrace = 2224 ; val XK_topleftsummation = 2225 ; val XK_botleftsummation = 2226 ; val XK_topvertsummationconnector = 2227 ; val XK_botvertsummationconnector = 2228 ; val XK_toprightsummation = 2229 ; val XK_botrightsummation = 2230 ; val XK_rightmiddlesummation = 2231 ; val XK_lessthanequal = 2236 ; val XK_notequal = 2237 ; val XK_greaterthanequal = 2238 ; val XK_integral = 2239 ; val XK_therefore = 2240 ; val XK_variation = 2241 ; val XK_infinity = 2242 ; val XK_nabla = 2245 ; val XK_approximate = 2248 ; val XK_similarequal = 2249 ; val XK_ifonlyif = 2253 ; val XK_implies = 2254 ; val XK_identical = 2255 ; val XK_radical = 2262 ; val XK_includedin = 2266 ; val XK_includes = 2267 ; val XK_intersection = 2268 ; val XK_union = 2269 ; val XK_logicaland = 2270 ; val XK_logicalor = 2271 ; val XK_partialderivative = 2287 ; val XK_function = 2294 ; val XK_leftarrow = 2299 ; val XK_uparrow = 2300 ; val XK_rightarrow = 2301 ; val XK_downarrow = 2302 ; (* Special *) val XK_blank = 2527 ; val XK_soliddiamond = 2528 ; val XK_checkerboard = 2529 ; val XK_ht = 2530 ; val XK_ff = 2531 ; val XK_cr = 2532 ; val XK_lf = 2533 ; val XK_nl = 2536 ; val XK_vt = 2537 ; val XK_lowrightcorner = 2538 ; val XK_uprightcorner = 2539 ; val XK_upleftcorner = 2540 ; val XK_lowleftcorner = 2541 ; val XK_crossinglines = 2542 ; val XK_horizlinescan1 = 2543 ; val XK_horizlinescan3 = 2544 ; val XK_horizlinescan5 = 2545 ; val XK_horizlinescan7 = 2546 ; val XK_horizlinescan9 = 2547 ; val XK_leftt = 2548 ; val XK_rightt = 2549 ; val XK_bott = 2550 ; val XK_topt = 2551 ; val XK_vertbar = 2552 ; (* Publishing *) val XK_emspace = 2721 ; val XK_enspace = 2722 ; val XK_em3space = 2723 ; val XK_em4space = 2724 ; val XK_digitspace = 2725 ; val XK_punctspace = 2726 ; val XK_thinspace = 2727 ; val XK_hairspace = 2728 ; val XK_emdash = 2729 ; val XK_endash = 2730 ; val XK_signifblank = 2732 ; val XK_ellipsis = 2734 ; val XK_doubbaselinedot = 2735 ; val XK_onethird = 2736 ; val XK_twothirds = 2737 ; val XK_onefifth = 2738 ; val XK_twofifths = 2739 ; val XK_threefifths = 2740 ; val XK_fourfifths = 2741 ; val XK_onesixth = 2742 ; val XK_fivesixths = 2743 ; val XK_careof = 2744 ; val XK_figdash = 2747 ; val XK_leftanglebracket = 2748 ; val XK_decimalpoint = 2749 ; val XK_rightanglebracket = 2750 ; val XK_marker = 2751 ; val XK_oneeighth = 2755 ; val XK_threeeighths = 2756 ; val XK_fiveeighths = 2757 ; val XK_seveneighths = 2758 ; val XK_trademark = 2761 ; val XK_signaturemark = 2762 ; val XK_trademarkincircle = 2763 ; val XK_leftopentriangle = 2764 ; val XK_rightopentriangle = 2765 ; val XK_emopencircle = 2766 ; val XK_emopenrectangle = 2767 ; val XK_leftsinglequotemark = 2768 ; val XK_rightsinglequotemark = 2769 ; val XK_leftdoublequotemark = 2770 ; val XK_rightdoublequotemark = 2771 ; val XK_prescription = 2772 ; val XK_minutes = 2774 ; val XK_seconds = 2775 ; val XK_latincross = 2777 ; val XK_hexagram = 2778 ; val XK_filledrectbullet = 2779 ; val XK_filledlefttribullet = 2780 ; val XK_filledrighttribullet = 2781 ; val XK_emfilledcircle = 2782 ; val XK_emfilledrect = 2783 ; val XK_enopencircbullet = 2784 ; val XK_enopensquarebullet = 2785 ; val XK_openrectbullet = 2786 ; val XK_opentribulletup = 2787 ; val XK_opentribulletdown = 2788 ; val XK_openstar = 2789 ; val XK_enfilledcircbullet = 2790 ; val XK_enfilledsqbullet = 2791 ; val XK_filledtribulletup = 2792 ; val XK_filledtribulletdown = 2793 ; val XK_leftpointer = 2794 ; val XK_rightpointer = 2795 ; val XK_club = 2796 ; val XK_diamond = 2797 ; val XK_heart = 2798 ; val XK_maltesecross = 2800 ; val XK_dagger = 2801 ; val XK_doubledagger = 2802 ; val XK_checkmark = 2803 ; val XK_ballotcross = 2804 ; val XK_musicalsharp = 2805 ; val XK_musicalflat = 2806 ; val XK_malesymbol = 2807 ; val XK_femalesymbol = 2808 ; val XK_telephone = 2809 ; val XK_telephonerecorder = 2810 ; val XK_phonographcopyright = 2811 ; val XK_caret = 2812 ; val XK_singlelowquotemark = 2813 ; val XK_doublelowquotemark = 2814 ; val XK_cursor = 2815 ; (* APL *) val XK_leftcaret = 2979 ; val XK_rightcaret = 2982 ; val XK_downcaret = 2984 ; val XK_upcaret = 2985 ; val XK_overbar = 3008 ; val XK_downtack = 3010 ; val XK_upshoe = 3011 ; val XK_downstile = 3012 ; val XK_underbar = 3014 ; val XK_jot = 3018 ; val XK_quad = 3020 ; val XK_uptack = 3022 ; val XK_circle = 3023 ; val XK_upstile = 3027 ; val XK_downshoe = 3030 ; val XK_rightshoe = 3032 ; val XK_leftshoe = 3034 ; val XK_lefttack = 3036 ; val XK_righttack = 3068 ; (* Hebrew *) val XK_hebrew_doublelowline = 3295 ; val XK_hebrew_aleph = 3296 ; val XK_hebrew_bet = 3297 ; val XK_hebrew_beth = 3297 ; val XK_hebrew_gimel = 3298 ; val XK_hebrew_gimmel = 3298 ; val XK_hebrew_dalet = 3299 ; val XK_hebrew_daleth = 3299 ; val XK_hebrew_he = 3300 ; val XK_hebrew_waw = 3301 ; val XK_hebrew_zain = 3302 ; val XK_hebrew_zayin = 3302 ; val XK_hebrew_chet = 3303 ; val XK_hebrew_het = 3303 ; val XK_hebrew_tet = 3304 ; val XK_hebrew_teth = 3304 ; val XK_hebrew_yod = 3305 ; val XK_hebrew_finalkaph = 3306 ; val XK_hebrew_kaph = 3307 ; val XK_hebrew_lamed = 3308 ; val XK_hebrew_finalmem = 3309 ; val XK_hebrew_mem = 3310 ; val XK_hebrew_finalnun = 3311 ; val XK_hebrew_nun = 3312 ; val XK_hebrew_samech = 3313 ; val XK_hebrew_samekh = 3313 ; val XK_hebrew_ayin = 3314 ; val XK_hebrew_finalpe = 3315 ; val XK_hebrew_pe = 3316 ; val XK_hebrew_finalzade = 3317 ; val XK_hebrew_finalzadi = 3317 ; val XK_hebrew_zade = 3318 ; val XK_hebrew_zadi = 3318 ; val XK_hebrew_qoph = 3319 ; val XK_hebrew_kuf = 3319 ; val XK_hebrew_resh = 3320 ; val XK_hebrew_shin = 3321 ; val XK_hebrew_taw = 3322 ; val XK_hebrew_taf = 3322 ; val XK_Hebrew_switch = 65406 ; end (* XKeySyms *) ; polyml-5.7.1/mlsource/extra/XWindows/XCall.ML0000644000175000017500000005435513204034553020006 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure XCall = struct exception XWindows = RunCall.XWindows; local val callX = RunCall.rtsCallFull1 "PolyXWindowsGeneral" in fun xcall n = RunCall.unsafeCast(callX(RunCall.unsafeCast n)) end (* The following XCALL numbers should match those in xcall_numbers.h *) (* in the Poly/ML run-time system. *) val XCALL_Not = 10; val XCALL_And = 11; val XCALL_Or = 12; val XCALL_Xor = 13; val XCALL_DownShift = 14; val XCALL_UpShift = 15; val XCALL_NoDrawable = 20; val XCALL_NoCursor = 21; val XCALL_NoFont = 22; val XCALL_NoColormap = 23; val XCALL_NoVisual = 24; val XCALL_GetTimeOfDay = 30; (* Colorcells 100 *) val XCALL_XAllocColor = 103; val XCALL_XAllocColorCells = 104; val XCALL_XAllocColorPlanes = 105; val XCALL_XAllocNamedColor = 106; val XCALL_XFreeColors = 107; val XCALL_XLookupColor = 108; val XCALL_XParseColor = 109; val XCALL_XQueryColor = 110; val XCALL_XQueryColors = 111; val XCALL_XStoreColor = 112; val XCALL_XStoreColors = 113; val XCALL_XStoreNamedColor = 114; val XCALL_BlackPixel = 115; val XCALL_WhitePixel = 116; (* Colormaps 150 *) val XCALL_XCopyColormapAndFree = 150; val XCALL_XCreateColormap = 151; val XCALL_XInstallColormap = 154; val XCALL_XListInstalledColormaps = 155; val XCALL_XUninstallColormap = 158; val XCALL_DefaultColormap = 159; val XCALL_DefaultVisual = 160; val XCALL_DisplayCells = 161; val XCALL_VisualClass = 162; val XCALL_VisualRedMask = 163; val XCALL_VisualGreenMask = 164; val XCALL_VisualBlueMask = 165; (* Cursors 200 *) val XCALL_XCreateFontCursor = 200; val XCALL_XCreateGlyphCursor = 201; val XCALL_XCreatePixmapCursor = 202; val XCALL_XDefineCursor = 203; val XCALL_XQueryBestCursor = 205; val XCALL_XRecolorCursor = 206; val XCALL_XUndefineCursor = 207; val XCALL_XOpenDisplay = 222; (* Display Specifications 250 *) val XCALL_CellsOfScreen = 250; val XCALL_DefaultDepth = 251; val XCALL_DisplayHeight = 252; val XCALL_DisplayHeightMM = 253; val XCALL_DisplayPlanes = 254; val XCALL_DisplayString = 255; val XCALL_DisplayWidth = 256; val XCALL_DisplayWidthMM = 257; val XCALL_DoesBackingStore = 258; val XCALL_DoesSaveUnders = 259; val XCALL_EventMaskOfScreen = 260; val XCALL_MaxCmapsOfScreen = 261; val XCALL_MinCmapsOfScreen = 262; val XCALL_ProtocolRevision = 263; val XCALL_ProtocolVersion = 264; val XCALL_ServerVendor = 265; val XCALL_VendorRelease = 266; (* Drawing Primitives 300 *) val XCALL_XClearArea = 300; val XCALL_XClearWindow = 301; val XCALL_XCopyArea = 302; val XCALL_XCopyPlane = 303; val XCALL_XDrawArc = 304; val XCALL_XDrawArcs = 305; val XCALL_XDrawImageString = 306; val XCALL_XDrawImageString16 = 307; val XCALL_XDrawLine = 308; val XCALL_XDrawLines = 309; val XCALL_XDrawPoint = 310; val XCALL_XDrawPoints = 311; val XCALL_XDrawRectangle = 312; val XCALL_XDrawRectangles = 313; val XCALL_XDrawSegments = 314; val XCALL_XDrawString = 315; val XCALL_XDrawString16 = 316; val XCALL_XDrawText = 317; val XCALL_XDrawText16 = 318; val XCALL_XFillArc = 319; val XCALL_XFillArcs = 320; val XCALL_XFillPolygon = 321; val XCALL_XFillRectangle = 322; val XCALL_XFillRectangles = 323; (* Events 350 *) val XCALL_XSelectInput = 350; val XCALL_XSynchronize = 351; val XCALL_GetState = 361; val XCALL_SetState = 362; val XCALL_NextEvent = 365; val XCALL_InsertTimeout = 366; val XCALL_XSetInputFocus = 370; val XCALL_XGetInputFocus = 371; val XCALL_XSetSelectionOwner = 372; val XCALL_XGetSelectionOwner = 373; val XCALL_XConvertSelection = 374; val XCALL_XSendSelectionNotify = 375; val XCALL_XDeleteProperty = 376; val XCALL_XInternAtom = 377; val XCALL_XGetAtomName = 378; (* Fonts 400 *) val XCALL_XGetFontPath = 401; val XCALL_XListFonts = 402; val XCALL_XListFontsWithInfo = 403; val XCALL_XLoadFont = 404; val XCALL_XLoadQueryFont = 405; val XCALL_XQueryFont = 406; val XCALL_XSetFontPath = 407; (* Grabbing 450 *) (* Graphics Context 500 *) val XCALL_DefaultGC = 500; val XCALL_UpdateGC = 501; val XCALL_XCreateGC = 503; val XCALL_XSetClipRectangles = 509; val XCALL_XSetDashes = 510; (* Images 550 *) val XCALL_XAddPixel = 550; val XCALL_XGetImage = 552; val XCALL_XGetPixel = 553; val XCALL_XGetSubImage = 554; val XCALL_XPutImage = 555; val XCALL_XPutPixel = 556; val XCALL_XSubImage = 557; val XCALL_BitmapBitOrder = 558; val XCALL_BitmapPad = 559; val XCALL_BitmapUnit = 560; val XCALL_ByteOrder = 561; (* Keyboard 600 *) val XCALL_XLookupString = 611; val XCALL_XQueryKeymap = 612; val XCALL_IsCursorKey = 618; val XCALL_IsFunctionKey = 619; val XCALL_IsKeypadKey = 620; val XCALL_IsMiscFunctionKey = 621; val XCALL_IsModifierKey = 622; val XCALL_IsPFKey = 623; (* Output Buffer 650 *) val XCALL_XFlush = 650; val XCALL_XSync = 651; (* Pointers 700 *) val XCALL_XQueryPointer = 703; (* Regions 750 *) (* Save Set 800 *) (* Screen Saver 850 *) val XCALL_XActivateScreenSaver = 850; val XCALL_XForceScreenSaver = 851; val XCALL_XGetScreenSaver = 852; val XCALL_XResetScreenSaver = 853; val XCALL_XSetScreenSaver = 854; (* Standard Geometry 900 *) val XCALL_XTranslateCoordinates = 902; (* Text 950 *) val XCALL_XTextExtents = 950; val XCALL_XTextExtents16 = 951; val XCALL_XTextWidth = 952; val XCALL_XTextWidth16 = 953; (* Tiles, Pixmaps, Stipples and Bitmaps 1000 *) val XCALL_XCreateBitmapFromData = 1000; val XCALL_XCreatePixmap = 1001; val XCALL_XCreatePixmapFromBitmapData = 1002; val XCALL_XQueryBestStipple = 1004; val XCALL_XQueryBestTile = 1005; val XCALL_XReadBitmapFile = 1006; val XCALL_XWriteBitmapFile = 1007; (* User Preferences 1050 *) val XCALL_XAutoRepeatOff = 1050; val XCALL_XAutoRepeatOn = 1051; val XCALL_XBell = 1052; val XCALL_XGetDefault = 1053; (* Window Attributes 1100 *) val XCALL_ChangeWindow = 1100; val XCALL_XGetGeometry = 1101; val XCALL_XGetWindowAttributes = 1102; val XCALL_XSetWindowBorderWidth = 1107; (* Window Configuration 1150 *) val XCALL_XCirculateSubwindows = 1150; val XCALL_XConfigureWindow = 1153; val XCALL_XLowerWindow = 1154; val XCALL_XMapRaised = 1155; val XCALL_XMapSubwindows = 1156; val XCALL_XMapWindow = 1157; val XCALL_XMoveResizeWindow = 1158; val XCALL_XMoveWindow = 1159; val XCALL_XQueryTree = 1160; val XCALL_XRaiseWindow = 1161; val XCALL_XReparentWindow = 1162; val XCALL_XResizeWindow = 1163; val XCALL_XRestackWindows = 1164; val XCALL_XUnmapSubwindows = 1165; val XCALL_XUnmapWindow = 1166; (* Window Existence 1200 *) val XCALL_RootWindow = 1200; val XCALL_DestroyXObject = 1201; val XCALL_XDestroySubwindows = 1202; val XCALL_XCreateSimpleWindow = 1203; val XCALL_XCreateWindow = 1204; (* Window Manager 1250 *) val XCALL_XSetProperty = 1299; val XCALL_XGetTextProperty = 1250; val XCALL_XGetWMHints = 1253; val XCALL_XGetWMSizeHints = 1255; val XCALL_XGetIconSizes = 1257; val XCALL_XGetTransientForHint = 1259; val XCALL_XGetWMColormapWindows = 1261; val XCALL_XGetRGBColormaps = 1263; val XCALL_XWMGeometry = 1264; (* Miscellaneous and Convenience functions 1300 *) val XCALL_GetID = 1300; val XCALL_ResourceExists = 1301; val XCALL_GetDisplay = 1303; (* X Toolkit 3000 *) val XCALL_NoWidget = 3000; val XCALL_AppInitialise = 3001; val XCALL_XtRealizeWidget = 3002; val XCALL_XtManageChildren = 3003; val XCALL_XtUnmanageChildren = 3004; val XCALL_XtDestroyWidget = 3005; val XCALL_SetCallbacks = 3006; val XCALL_XtSetValues = 3007; val XCALL_GetValue = 3008; val XCALL_XtParent = 3009; val XCALL_XtWindow = 3010; val XCALL_XtDisplay = 3011; val XCALL_XtUnrealizeWidget = 3012; val XCALL_XtName = 3013; val XCALL_XtParseTranslationTable = 3014; val XCALL_XtOverrideTranslations = 3015; val XCALL_XtAugmentTranslations = 3016; val XCALL_XtUninstallTranslations = 3017; val XCALL_XtTranslateTablePrint = 3018; val XCALL_XtCreatePopupShell = 3019; val XCALL_InsertWidgetTimeout = 3020; val XCALL_GetWidgetState = 3021; val XCALL_SetWidgetState = 3022; val XCALL_XtSetSensitive = 3023; val XCALL_XtIsSensitive = 3024; val XCALL_GetSubresources = 3025; val XCALL_Cast = 3026; (* added 6/12/94 SPF *) val XCALL_XtPopup = 3027; val XCALL_XtPopdown = 3028; val XCALL_XtMapWidget = 3029; val XCALL_XtUnmapWidget = 3030; (* added 19/1/95 SPF *) val XCALL_XtIsManaged = 3031; val XCALL_XtIsRealized = 3032; (* added 23/3/01 DCJM *) val XCALL_XtGetApplicationResources = 3033; val XCALL_XtAddEventHandler = 3034; val XCALL_XmCreateArrowButton = 4000; val XCALL_XmCreateArrowButtonGadget = 4001; val XCALL_XmCreateBulletinBoard = 4002; val XCALL_XmCreateBulletinBoardDialog = 4003; val XCALL_XmCreateCascadeButton = 4004; val XCALL_XmCreateCascadeButtonGadget = 4005; val XCALL_XmCreateCommand = 4006; val XCALL_XmCreateDialogShell = 4007; val XCALL_XmCreateDrawingArea = 4008; val XCALL_XmCreateDrawnButton = 4009; val XCALL_XmCreateErrorDialog = 4010; val XCALL_XmCreateFileSelectionBox = 4011; val XCALL_XmCreateFileSelectionDialog = 4012; val XCALL_XmCreateForm = 4013; val XCALL_XmCreateFormDialog = 4014; val XCALL_XmCreateFrame = 4015; val XCALL_XmCreateInformationDialog = 4016; val XCALL_XmCreateLabel = 4017; val XCALL_XmCreateLabelGadget = 4018; val XCALL_XmCreateList = 4019; val XCALL_XmCreateMainWindow = 4020; val XCALL_XmCreateMenuBar = 4021; val XCALL_XmCreateMenuShell = 4022; val XCALL_XmCreateMessageBox = 4023; val XCALL_XmCreateMessageDialog = 4024; val XCALL_XmCreateOptionMenu = 4025; val XCALL_XmCreatePanedWindow = 4026; val XCALL_XmCreatePopupMenu = 4027; val XCALL_XmCreatePromptDialog = 4028; val XCALL_XmCreatePulldownMenu = 4029; val XCALL_XmCreatePushButton = 4030; val XCALL_XmCreatePushButtonGadget = 4031; val XCALL_XmCreateQuestionDialog = 4032; val XCALL_XmCreateRadioBox = 4033; val XCALL_XmCreateRowColumn = 4034; val XCALL_XmCreateScale = 4035; val XCALL_XmCreateScrollBar = 4036; val XCALL_XmCreateScrolledList = 4037; val XCALL_XmCreateScrolledText = 4038; val XCALL_XmCreateScrolledWindow = 4039; val XCALL_XmCreateSelectionBox = 4040; val XCALL_XmCreateSelectionDialog = 4041; val XCALL_XmCreateSeparator = 4042; val XCALL_XmCreateSeparatorGadget = 4043; val XCALL_XmCreateSimpleCheckBox = 4044; val XCALL_XmCreateSimpleMenuBar = 4045; val XCALL_XmCreateSimpleOptionMenu = 4046; val XCALL_XmCreateSimplePopupMenu = 4047; val XCALL_XmCreateSimplePulldownMenu = 4048; val XCALL_XmCreateSimpleRadioBox = 4049; val XCALL_XmCreateText = 4050; val XCALL_XmCreateTextField = 4051; val XCALL_XmCreateToggleButton = 4052; val XCALL_XmCreateToggleButtonGadget = 4053; val XCALL_XmCreateWarningDialog = 4054; val XCALL_XmCreateWorkArea = 4055; val XCALL_XmCreateWorkingDialog = 4056; val XCALL_XmCascadeButtonHighlight = 4060; val XCALL_XmCommandError = 4061; val XCALL_XmCommandGetChild = 4062; val XCALL_XmFileSelectionBoxGetChild = 4063; val XCALL_XmFileSelectionDoSearch = 4064; val XCALL_XmIsSomething = 4080; val XCALL_XmMainWindowSetAreas = 4100; val XCALL_XmMainWindowSepX = 4101; val XCALL_XmMessageBoxGetChild = 4105; val XCALL_XmOptionButtonGadget = 4106; val XCALL_XmOptionLabelGadget = 4107; val XCALL_XmSelectionBoxGetChild = 4108; val XCALL_XmSetMenuCursor = 4200; val XCALL_XmScrolledWindowSetAreas = 4201; val XCALL_XmTextGetString = 4202; val XCALL_XmTextSetString = 4203; val XCALL_XmTextSetInsertionPosition = 4204; val XCALL_XmTrackingLocate = 4210; val XCALL_XmUpdateDisplay = 4211; (* XmText widget 4300 *) (* XmTextClearSelection 4300; *) (* XmTextCopy 4301; *) (* XmTextCut 4302; *) val XCALL_XmTextGetAddMode = 4303; val XCALL_XmTextGetBaseline = 4304; val XCALL_XmTextGetCursorPosition = 4305; val XCALL_XmTextGetEditable = 4306; val XCALL_XmTextGetInsertionPosition = 4307; val XCALL_XmTextGetLastPosition = 4308; val XCALL_XmTextGetMaxLength = 4309; val XCALL_XmTextGetSelection = 4310; (* XmTextGetSelectionPosition 4311; *) (* XCALL_XmTextGetString defined above *) (* XmTextGetSource 4313; *) val XCALL_XmTextGetTopCharacter = 4314; val XCALL_XmTextInsert = 4315; val XCALL_XmTextPaste = 4316; (* XmTextPosToXY 4317; *) val XCALL_XmTextRemove = 4318; val XCALL_XmTextReplace = 4319; val XCALL_XmTextScroll = 4320; val XCALL_XmTextSetAddMode = 4321; val XCALL_XmTextSetCursorPosition = 4322; val XCALL_XmTextSetEditable = 4323; (* XmTextSetHighlight 4324; *) (* XCALL_XmTextSetInsertionPosition defined above *) val XCALL_XmTextSetMaxLength = 4326; (* XmTextSetSelection 4327; *) (* XmTextSetSource 4328; *) (* XCALL_XmTextSetString defined above *) val XCALL_XmTextSetTopCharacter = 4330; val XCALL_XmTextShowPosition = 4331; val XCALL_XmTextXYToPos = 4332; (* XmTextField widget 4350 *) (* XmTextFieldClearSelection 4350; *) (* XmTextFieldCopy 4351; *) (* XmTextFieldCut 4352; *) val XCALL_XmTextFieldGetAddMode = 4353; val XCALL_XmTextFieldGetBaseline = 4354; val XCALL_XmTextFieldGetCursorPosition = 4355; val XCALL_XmTextFieldGetEditable = 4356; val XCALL_XmTextFieldGetInsertionPosition = 4357; val XCALL_XmTextFieldGetLastPosition = 4358; val XCALL_XmTextFieldGetMaxLength = 4359; val XCALL_XmTextFieldGetSelection = 4360; (* XmTextFieldGetSelectionPosition 4361; *) val XCALL_XmTextFieldGetString = 4362; val XCALL_XmTextFieldInsert = 4363; val XCALL_XmTextFieldPaste = 4364; (* XmTextFieldPosToXY 4365; *) val XCALL_XmTextFieldRemove = 4366; val XCALL_XmTextFieldReplace = 4367; val XCALL_XmTextFieldSetAddMode = 4368; val XCALL_XmTextFieldSetCursorPosition = 4369; val XCALL_XmTextFieldSetEditable = 4370; (* XmTextFieldSetHighlight 4371; *) val XCALL_XmTextFieldSetInsertionPosition = 4372; val XCALL_XmTextFieldSetMaxLength = 4373; (* XmTextFieldSetSelection 4374; *) val XCALL_XmTextFieldSetString = 4375; val XCALL_XmTextFieldShowPosition = 4376; val XCALL_XmTextFieldXYToPos = 4377; (* XmList widget 4400 *) val XCALL_XmListAddItem = 4400; val XCALL_XmListAddItemUnselected = 4401; val XCALL_XmListAddItems = 4402; val XCALL_XmListDeleteAllItems = 4403; val XCALL_XmListDeleteItem = 4404; val XCALL_XmListDeleteItems = 4405; val XCALL_XmListDeletePos = 4406; val XCALL_XmListDeleteItemsPos = 4407; val XCALL_XmListDeselectAllItems = 4408; val XCALL_XmListDeselectItem = 4409; val XCALL_XmListDeselectPos = 4410; val XCALL_XmListGetMatchPos = 4411; val XCALL_XmListGetSelectedPos = 4412; val XCALL_XmListItemExists = 4413; val XCALL_XmListItemPos = 4414; val XCALL_XmListReplaceItems = 4415; val XCALL_XmListReplaceItemsPos = 4416; val XCALL_XmListSelectItem = 4417; val XCALL_XmListSelectPos = 4418; val XCALL_XmListSetAddMode = 4419; val XCALL_XmListSetBottomItem = 4420; val XCALL_XmListSetBottomPos = 4421; val XCALL_XmListSetHorizPos = 4422; val XCALL_XmListSetItem = 4423; val XCALL_XmListSetPos = 4424; (* Added by DCJM. 23/3/01. *) val XCALL_XmMenuPosition = 4500; (* Not supported by the SUNOS version of the tool-kit ... val XCALL_XmListAddItemsUnselected val XCALL_XmListDeletePositions val XCALL_XmListGetKbdItemPos val XCALL_XmListPosSelected val XCALL_XmListReplaceItemsPosUnselected val XCALL_XmListReplaceItemsPositions val XCALL_XmListSetKbdItemPos val XCALL_XmListUpdateSelectedList val XCALL_XmListYToPos val XCALL_XmListPosToBounds ... *) end; polyml-5.7.1/mlsource/extra/XWindows/XEVENT_SIG.ML0000644000175000017500000003615113204034553020510 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XEVENT_SIG = sig include XTYPES_SIG ; datatype EventMask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | PointerMotionHintMask | Button1MotionMask | Button2MotionMask | Button3MotionMask | Button4MotionMask | Button5MotionMask | ButtonMotionMask | KeymapStateMask | ExposureMask | VisibilityChangeMask | StructureNotifyMask | ResizeRedirectMask | SubstructureNotifyMask | SubstructureRedirectMask | FocusChangeMask | PropertyChangeMask | ColormapChangeMask | OwnerGrabButtonMask | ButtonClickMask (* extra event mask *) ; datatype Modifier = ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask | AnyModifier ; datatype ButtonName = Button1 | Button2 | Button3 | Button4 | Button5 | AnyButton ; datatype Placement = PlaceOnTop | PlaceOnBottom ; datatype StackMode = Above | Below | TopIf | BottomIf | Opposite ; datatype NotifyMode = NotifyNormal | NotifyGrab | NotifyUngrab | NotifyWhileGrabbed ; datatype NotifyDetail = NotifyAncestor | NotifyVirtual | NotifyInferior | NotifyNonLinear | NotifyNonLinearVirtual | NotifyPointer | NotifyPointerRoot | NotifyDetailNone ; datatype GraphicsCode = CopyArea | CopyPlane ; datatype Visibility = VisibilityUnobscured | VisibilityPartiallyObscured | VisibilityFullyObscured ; datatype 'a XEvent = ButtonPress of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } | ButtonRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName } | ButtonClick of { sendEvent: bool, (* extra event type *) window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, button: ButtonName, up: int, (* number of up transitions *) down: int } (* number of down transitions *) | CirculateNotify of { sendEvent: bool, event: Drawable, window: Drawable, place: Placement } | CirculateRequest of { sendEvent: bool, parent: Drawable, window: Drawable, place: Placement } | ColormapNotify of { sendEvent: bool, window: Drawable, colormap: Colormap, new: bool, installed: bool } | ConfigureNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, overrideRedirect: bool } | ConfigureRequest of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, above: Drawable, detail: StackMode } | CreateNotify of { sendEvent: bool, parent: Drawable, window: Drawable, position: XPoint, size: XRectangle, borderWidth: int, overrideRedirect: bool } | DestroyNotify of { sendEvent: bool, event: Drawable, window: Drawable } | EnterNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } | LeaveNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, mode: NotifyMode, detail: NotifyDetail, focus: bool, modifiers: Modifier list } | Expose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int } | FocusIn of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } | FocusOut of { sendEvent: bool, window: Drawable, mode: NotifyMode, detail: NotifyDetail } | GraphicsExpose of { sendEvent: bool, window: Drawable, region: XRectangle, count: int, code: GraphicsCode } | NoExpose of { sendEvent: bool, window: Drawable, code: GraphicsCode } | GravityNotify of { sendEvent: bool, event: Drawable, window: Drawable, position: XPoint } | KeymapNotify of { sendEvent: bool, window: Drawable, keyVector: bool list (* 256 bools *) } | KeyPress of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } | KeyRelease of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, keycode: int } | MapNotify of { sendEvent: bool, event: Drawable, window: Drawable, overrideRedirect: bool } | UnmapNotify of { sendEvent: bool, event: Drawable, window: Drawable, fromConfigure: bool } | MapRequest of { sendEvent: bool, parent: Drawable, window: Drawable } | MotionNotify of { sendEvent: bool, window: Drawable, root: Drawable, subwindow: Drawable, time: int, pointer: XPoint, rootPointer: XPoint, modifiers: Modifier list, isHint: bool } | ReparentNotify of { sendEvent: bool, event: Drawable, window: Drawable, parent: Drawable, position: XPoint, overrideRedirect: bool } | ResizeRequest of { sendEvent: bool, window: Drawable, size: XRectangle } | SelectionClear of { sendEvent: bool, window: Drawable, selection: int, time: int } | SelectionNotify of { sendEvent: bool, requestor: Drawable, selection: int, target: int, property: int, time: int } | SelectionRequest of { sendEvent: bool, owner: Drawable, requestor: Drawable, selection: int, target: int, property: int, time: int } | VisibilityNotify of { sendEvent: bool, window: Drawable, visibility: Visibility } | DeleteRequest of { window: Drawable } (* extra event type *) | Message of { window: Drawable, message: 'a } (* extra event type *) | NoEvent ; end (* XEVENT_SIG *) ; polyml-5.7.1/mlsource/extra/XWindows/XATOMS_SIG.ML0000644000175000017500000000645213204034553020513 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XATOMS_SIG = sig val XA_PRIMARY: int ; val XA_SECONDARY: int ; val XA_ARC: int ; val XA_ATOM: int ; val XA_BITMAP: int ; val XA_CARDINAL: int ; val XA_COLORMAP: int ; val XA_CURSOR: int ; val XA_CUT_BUFFER0: int ; val XA_CUT_BUFFER1: int ; val XA_CUT_BUFFER2: int ; val XA_CUT_BUFFER3: int ; val XA_CUT_BUFFER4: int ; val XA_CUT_BUFFER5: int ; val XA_CUT_BUFFER6: int ; val XA_CUT_BUFFER7: int ; val XA_DRAWABLE: int ; val XA_FONT: int ; val XA_INTEGER: int ; val XA_PIXMAP: int ; val XA_POINT: int ; val XA_RECTANGLE: int ; val XA_RESOURCE_MANAGER: int ; val XA_RGB_COLOR_MAP: int ; val XA_RGB_BEST_MAP: int ; val XA_RGB_BLUE_MAP: int ; val XA_RGB_DEFAULT_MAP: int ; val XA_RGB_GRAY_MAP: int ; val XA_RGB_GREEN_MAP: int ; val XA_RGB_RED_MAP: int ; val XA_STRING: int ; val XA_VISUALID: int ; val XA_WINDOW: int ; val XA_WM_COMMAND: int ; val XA_WM_HINTS: int ; val XA_WM_CLIENT_MACHINE: int ; val XA_WM_ICON_NAME: int ; val XA_WM_ICON_SIZE: int ; val XA_WM_NAME: int ; val XA_WM_NORMAL_HINTS: int ; val XA_WM_SIZE_HINTS: int ; val XA_MIN_SPACE: int ; val XA_NORM_SPACE: int ; val XA_MAX_SPACE: int ; val XA_END_SPACE: int ; val XA_SUPERSCRIPT_X: int ; val XA_SUPERSCRIPT_Y: int ; val XA_SUBSCRIPT_X: int ; val XA_SUBSCRIPT_Y: int ; val XA_UNDERLINE_POSITION: int ; val XA_UNDERLINE_THICKNESS: int ; val XA_STRIKEOUT_ASCENT: int ; val XA_STRIKEOUT_DESCENT: int ; val XA_ITALIC_ANGLE: int ; val XA_X_HEIGHT: int ; val XA_QUAD_WIDTH: int ; val XA_WEIGHT: int ; val XA_POINT_SIZE: int ; val XA_RESOLUTION: int ; val XA_COPYRIGHT: int ; val XA_NOTICE: int ; val XA_FONT_NAME: int ; val XA_FAMILY_NAME: int ; val XA_FULL_NAME: int ; val XA_CAP_HEIGHT: int ; val XA_WM_CLASS: int ; val XA_WM_TRANSIENT_FOR: int ; end (* XATOMS_SIG *) ; polyml-5.7.1/mlsource/extra/XWindows/XKEYSYMS_SIG.ML0000644000175000017500000010254613204034553020775 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XKEYSYMS_SIG = sig val XK_VoidSymbol: int ; (* * TTY Functions, cleverly chosen to map to ascii, for convenience of * programming, but could have been arbitrary (at the cost of lookup * tables in client code. *) val XK_BackSpace: int ; val XK_Tab: int ; val XK_Linefeed: int ; val XK_Clear: int ; val XK_Return: int ; val XK_Pause: int ; val XK_Scroll_Lock: int ; val XK_Escape: int ; val XK_Delete: int ; (* International & multi-key character composition *) val XK_Multi_key: int ; (* Japanese keyboard support *) val XK_Kanji: int ; val XK_Muhenkan: int ; val XK_Henkan_Mode: int ; val XK_Henkan: int ; val XK_Romaji: int ; val XK_Hiragana: int ; val XK_Katakana: int ; val XK_Hiragana_Katakana: int ; val XK_Zenkaku: int ; val XK_Hankaku: int ; val XK_Zenkaku_Hankaku: int ; val XK_Touroku: int ; val XK_Massyo: int ; val XK_Kana_Lock: int ; val XK_Kana_Shift: int ; val XK_Eisu_Shift: int ; val XK_Eisu_toggle: int ; (* Cursor control & motion *) val XK_Home: int ; val XK_Left: int ; val XK_Up: int ; val XK_Right: int ; val XK_Down: int ; val XK_Prior: int ; val XK_Next: int ; val XK_End: int ; val XK_Begin: int ; (* Misc Functions *) val XK_Select: int ; val XK_Print: int ; val XK_Execute: int ; val XK_Insert: int ; val XK_Undo: int ; val XK_Redo: int ; val XK_Menu: int ; val XK_Find: int ; val XK_Cancel: int ; val XK_Help: int ; val XK_Break: int ; val XK_Mode_switch: int ; val XK_script_switch: int ; val XK_Num_Lock: int ; (* Keypad Functions, keypad numbers cleverly chosen to map to ascii *) val XK_KP_Space: int ; val XK_KP_Tab: int ; val XK_KP_Enter: int ; val XK_KP_F1: int ; val XK_KP_F2: int ; val XK_KP_F3: int ; val XK_KP_F4: int ; val XK_KP_Equal: int ; val XK_KP_Multiply: int ; val XK_KP_Add: int ; val XK_KP_Separator: int ; val XK_KP_Subtract: int ; val XK_KP_Decimal: int ; val XK_KP_Divide: int ; val XK_KP_0: int ; val XK_KP_1: int ; val XK_KP_2: int ; val XK_KP_3: int ; val XK_KP_4: int ; val XK_KP_5: int ; val XK_KP_6: int ; val XK_KP_7: int ; val XK_KP_8: int ; val XK_KP_9: int ; (* * Auxilliary Functions; note the duplicate definitions for left and right * function keys; Sun keyboards and a few other manufactures have such * function key groups on the left and/or right sides of the keyboard. * We've not found a keyboard with more than 35 function keys total. *) val XK_F1: int ; val XK_F2: int ; val XK_F3: int ; val XK_F4: int ; val XK_F5: int ; val XK_F6: int ; val XK_F7: int ; val XK_F8: int ; val XK_F9: int ; val XK_F10: int ; val XK_F11: int ; val XK_L1: int ; val XK_F12: int ; val XK_L2: int ; val XK_F13: int ; val XK_L3: int ; val XK_F14: int ; val XK_L4: int ; val XK_F15: int ; val XK_L5: int ; val XK_F16: int ; val XK_L6: int ; val XK_F17: int ; val XK_L7: int ; val XK_F18: int ; val XK_L8: int ; val XK_F19: int ; val XK_L9: int ; val XK_F20: int ; val XK_L10: int ; val XK_F21: int ; val XK_R1: int ; val XK_F22: int ; val XK_R2: int ; val XK_F23: int ; val XK_R3: int ; val XK_F24: int ; val XK_R4: int ; val XK_F25: int ; val XK_R5: int ; val XK_F26: int ; val XK_R6: int ; val XK_F27: int ; val XK_R7: int ; val XK_F28: int ; val XK_R8: int ; val XK_F29: int ; val XK_R9: int ; val XK_F30: int ; val XK_R10: int ; val XK_F31: int ; val XK_R11: int ; val XK_F32: int ; val XK_R12: int ; val XK_R13: int ; val XK_F33: int ; val XK_F34: int ; val XK_R14: int ; val XK_F35: int ; val XK_R15: int ; (* Modifiers *) val XK_Shift_L: int ; val XK_Shift_R: int ; val XK_Control_L: int ; val XK_Control_R: int ; val XK_Caps_Lock: int ; val XK_Shift_Lock: int ; val XK_Meta_L: int ; val XK_Meta_R: int ; val XK_Alt_L: int ; val XK_Alt_R: int ; val XK_Super_L: int ; val XK_Super_R: int ; val XK_Hyper_L: int ; val XK_Hyper_R: int ; (* Latin 1 *) val XK_space: int ; val XK_exclam: int ; val XK_quotedbl: int ; val XK_numbersign: int ; val XK_dollar: int ; val XK_percent: int ; val XK_ampersand: int ; val XK_apostrophe: int ; val XK_quoteright: int ; val XK_parenleft: int ; val XK_parenright: int ; val XK_asterisk: int ; val XK_plus: int ; val XK_comma: int ; val XK_minus: int ; val XK_period: int ; val XK_slash: int ; val XK_0: int ; val XK_1: int ; val XK_2: int ; val XK_3: int ; val XK_4: int ; val XK_5: int ; val XK_6: int ; val XK_7: int ; val XK_8: int ; val XK_9: int ; val XK_colon: int ; val XK_semicolon: int ; val XK_less: int ; val XK_equal: int ; val XK_greater: int ; val XK_question: int ; val XK_at: int ; val XK_A: int ; val XK_B: int ; val XK_C: int ; val XK_D: int ; val XK_E: int ; val XK_F: int ; val XK_G: int ; val XK_H: int ; val XK_I: int ; val XK_J: int ; val XK_K: int ; val XK_L: int ; val XK_M: int ; val XK_N: int ; val XK_O: int ; val XK_P: int ; val XK_Q: int ; val XK_R: int ; val XK_S: int ; val XK_T: int ; val XK_U: int ; val XK_V: int ; val XK_W: int ; val XK_X: int ; val XK_Y: int ; val XK_Z: int ; val XK_bracketleft: int ; val XK_backslash: int ; val XK_bracketright: int ; val XK_asciicircum: int ; val XK_underscore: int ; val XK_grave: int ; val XK_quoteleft: int ; val XK_a: int ; val XK_b: int ; val XK_c: int ; val XK_d: int ; val XK_e: int ; val XK_f: int ; val XK_g: int ; val XK_h: int ; val XK_i: int ; val XK_j: int ; val XK_k: int ; val XK_l: int ; val XK_m: int ; val XK_n: int ; val XK_o: int ; val XK_p: int ; val XK_q: int ; val XK_r: int ; val XK_s: int ; val XK_t: int ; val XK_u: int ; val XK_v: int ; val XK_w: int ; val XK_x: int ; val XK_y: int ; val XK_z: int ; val XK_braceleft: int ; val XK_bar: int ; val XK_braceright: int ; val XK_asciitilde: int ; val XK_nobreakspace: int ; val XK_exclamdown: int ; val XK_cent: int ; val XK_sterling: int ; val XK_currency: int ; val XK_yen: int ; val XK_brokenbar: int ; val XK_section: int ; val XK_diaeresis: int ; val XK_copyright: int ; val XK_ordfeminine: int ; val XK_guillemotleft: int ; val XK_notsign: int ; val XK_hyphen: int ; val XK_registered: int ; val XK_macron: int ; val XK_degree: int ; val XK_plusminus: int ; val XK_twosuperior: int ; val XK_threesuperior: int ; val XK_acute: int ; val XK_mu: int ; val XK_paragraph: int ; val XK_periodcentered: int ; val XK_cedilla: int ; val XK_onesuperior: int ; val XK_masculine: int ; val XK_guillemotright: int ; val XK_onequarter: int ; val XK_onehalf: int ; val XK_threequarters: int ; val XK_questiondown: int ; val XK_Agrave: int ; val XK_Aacute: int ; val XK_Acircumflex: int ; val XK_Atilde: int ; val XK_Adiaeresis: int ; val XK_Aring: int ; val XK_AE: int ; val XK_Ccedilla: int ; val XK_Egrave: int ; val XK_Eacute: int ; val XK_Ecircumflex: int ; val XK_Ediaeresis: int ; val XK_Igrave: int ; val XK_Iacute: int ; val XK_Icircumflex: int ; val XK_Idiaeresis: int ; val XK_ETH: int ; val XK_Eth: int ; val XK_Ntilde: int ; val XK_Ograve: int ; val XK_Oacute: int ; val XK_Ocircumflex: int ; val XK_Otilde: int ; val XK_Odiaeresis: int ; val XK_multiply: int ; val XK_Ooblique: int ; val XK_Ugrave: int ; val XK_Uacute: int ; val XK_Ucircumflex: int ; val XK_Udiaeresis: int ; val XK_Yacute: int ; val XK_THORN: int ; val XK_Thorn: int ; val XK_ssharp: int ; val XK_agrave: int ; val XK_aacute: int ; val XK_acircumflex: int ; val XK_atilde: int ; val XK_adiaeresis: int ; val XK_aring: int ; val XK_ae: int ; val XK_ccedilla: int ; val XK_egrave: int ; val XK_eacute: int ; val XK_ecircumflex: int ; val XK_ediaeresis: int ; val XK_igrave: int ; val XK_iacute: int ; val XK_icircumflex: int ; val XK_idiaeresis: int ; val XK_eth: int ; val XK_ntilde: int ; val XK_ograve: int ; val XK_oacute: int ; val XK_ocircumflex: int ; val XK_otilde: int ; val XK_odiaeresis: int ; val XK_division: int ; val XK_oslash: int ; val XK_ugrave: int ; val XK_uacute: int ; val XK_ucircumflex: int ; val XK_udiaeresis: int ; val XK_yacute: int ; val XK_thorn: int ; val XK_ydiaeresis: int ; (* Latin 2 *) val XK_Aogonek: int ; val XK_breve: int ; val XK_Lstroke: int ; val XK_Lcaron: int ; val XK_Sacute: int ; val XK_Scaron: int ; val XK_Scedilla: int ; val XK_Tcaron: int ; val XK_Zacute: int ; val XK_Zcaron: int ; val XK_Zabovedot: int ; val XK_aogonek: int ; val XK_ogonek: int ; val XK_lstroke: int ; val XK_lcaron: int ; val XK_sacute: int ; val XK_caron: int ; val XK_scaron: int ; val XK_scedilla: int ; val XK_tcaron: int ; val XK_zacute: int ; val XK_doubleacute: int ; val XK_zcaron: int ; val XK_zabovedot: int ; val XK_Racute: int ; val XK_Abreve: int ; val XK_Lacute: int ; val XK_Cacute: int ; val XK_Ccaron: int ; val XK_Eogonek: int ; val XK_Ecaron: int ; val XK_Dcaron: int ; val XK_Dstroke: int ; val XK_Nacute: int ; val XK_Ncaron: int ; val XK_Odoubleacute: int ; val XK_Rcaron: int ; val XK_Uring: int ; val XK_Udoubleacute: int ; val XK_Tcedilla: int ; val XK_racute: int ; val XK_abreve: int ; val XK_lacute: int ; val XK_cacute: int ; val XK_ccaron: int ; val XK_eogonek: int ; val XK_ecaron: int ; val XK_dcaron: int ; val XK_dstroke: int ; val XK_nacute: int ; val XK_ncaron: int ; val XK_odoubleacute: int ; val XK_udoubleacute: int ; val XK_rcaron: int ; val XK_uring: int ; val XK_tcedilla: int ; val XK_abovedot: int ; (* Latin 3 *) val XK_Hstroke: int ; val XK_Hcircumflex: int ; val XK_Iabovedot: int ; val XK_Gbreve: int ; val XK_Jcircumflex: int ; val XK_hstroke: int ; val XK_hcircumflex: int ; val XK_idotless: int ; val XK_gbreve: int ; val XK_jcircumflex: int ; val XK_Cabovedot: int ; val XK_Ccircumflex: int ; val XK_Gabovedot: int ; val XK_Gcircumflex: int ; val XK_Ubreve: int ; val XK_Scircumflex: int ; val XK_cabovedot: int ; val XK_ccircumflex: int ; val XK_gabovedot: int ; val XK_gcircumflex: int ; val XK_ubreve: int ; val XK_scircumflex: int ; (* Latin 4 *) val XK_kra: int ; val XK_kappa: int ; val XK_Rcedilla: int ; val XK_Itilde: int ; val XK_Lcedilla: int ; val XK_Emacron: int ; val XK_Gcedilla: int ; val XK_Tslash: int ; val XK_rcedilla: int ; val XK_itilde: int ; val XK_lcedilla: int ; val XK_emacron: int ; val XK_gcedilla: int ; val XK_tslash: int ; val XK_ENG: int ; val XK_eng: int ; val XK_Amacron: int ; val XK_Iogonek: int ; val XK_Eabovedot: int ; val XK_Imacron: int ; val XK_Ncedilla: int ; val XK_Omacron: int ; val XK_Kcedilla: int ; val XK_Uogonek: int ; val XK_Utilde: int ; val XK_Umacron: int ; val XK_amacron: int ; val XK_iogonek: int ; val XK_eabovedot: int ; val XK_imacron: int ; val XK_ncedilla: int ; val XK_omacron: int ; val XK_kcedilla: int ; val XK_uogonek: int ; val XK_utilde: int ; val XK_umacron: int ; (* Katakana *) val XK_overline: int ; val XK_kana_fullstop: int ; val XK_kana_openingbracket: int ; val XK_kana_closingbracket: int ; val XK_kana_comma: int ; val XK_kana_conjunctive: int ; val XK_kana_middledot: int ; val XK_kana_WO: int ; val XK_kana_a: int ; val XK_kana_i: int ; val XK_kana_u: int ; val XK_kana_e: int ; val XK_kana_o: int ; val XK_kana_ya: int ; val XK_kana_yu: int ; val XK_kana_yo: int ; val XK_kana_tsu: int ; val XK_kana_tu: int ; val XK_prolongedsound: int ; val XK_kana_A: int ; val XK_kana_I: int ; val XK_kana_U: int ; val XK_kana_E: int ; val XK_kana_O: int ; val XK_kana_KA: int ; val XK_kana_KI: int ; val XK_kana_KU: int ; val XK_kana_KE: int ; val XK_kana_KO: int ; val XK_kana_SA: int ; val XK_kana_SHI: int ; val XK_kana_SU: int ; val XK_kana_SE: int ; val XK_kana_SO: int ; val XK_kana_TA: int ; val XK_kana_CHI: int ; val XK_kana_TI: int ; val XK_kana_TSU: int ; val XK_kana_TU: int ; val XK_kana_TE: int ; val XK_kana_TO: int ; val XK_kana_NA: int ; val XK_kana_NI: int ; val XK_kana_NU: int ; val XK_kana_NE: int ; val XK_kana_NO: int ; val XK_kana_HA: int ; val XK_kana_HI: int ; val XK_kana_FU: int ; val XK_kana_HU: int ; val XK_kana_HE: int ; val XK_kana_HO: int ; val XK_kana_MA: int ; val XK_kana_MI: int ; val XK_kana_MU: int ; val XK_kana_ME: int ; val XK_kana_MO: int ; val XK_kana_YA: int ; val XK_kana_YU: int ; val XK_kana_YO: int ; val XK_kana_RA: int ; val XK_kana_RI: int ; val XK_kana_RU: int ; val XK_kana_RE: int ; val XK_kana_RO: int ; val XK_kana_WA: int ; val XK_kana_N: int ; val XK_voicedsound: int ; val XK_semivoicedsound: int ; val XK_kana_switch: int ; (* Arabic *) val XK_Arabic_comma: int ; val XK_Arabic_semicolon: int ; val XK_Arabic_question_mark: int ; val XK_Arabic_hamza: int ; val XK_Arabic_maddaonalef: int ; val XK_Arabic_hamzaonalef: int ; val XK_Arabic_hamzaonwaw: int ; val XK_Arabic_hamzaunderalef: int ; val XK_Arabic_hamzaonyeh: int ; val XK_Arabic_alef: int ; val XK_Arabic_beh: int ; val XK_Arabic_tehmarbuta: int ; val XK_Arabic_teh: int ; val XK_Arabic_theh: int ; val XK_Arabic_jeem: int ; val XK_Arabic_hah: int ; val XK_Arabic_khah: int ; val XK_Arabic_dal: int ; val XK_Arabic_thal: int ; val XK_Arabic_ra: int ; val XK_Arabic_zain: int ; val XK_Arabic_seen: int ; val XK_Arabic_sheen: int ; val XK_Arabic_sad: int ; val XK_Arabic_dad: int ; val XK_Arabic_tah: int ; val XK_Arabic_zah: int ; val XK_Arabic_ain: int ; val XK_Arabic_ghain: int ; val XK_Arabic_tatweel: int ; val XK_Arabic_feh: int ; val XK_Arabic_qaf: int ; val XK_Arabic_kaf: int ; val XK_Arabic_lam: int ; val XK_Arabic_meem: int ; val XK_Arabic_noon: int ; val XK_Arabic_ha: int ; val XK_Arabic_heh: int ; val XK_Arabic_waw: int ; val XK_Arabic_alefmaksura: int ; val XK_Arabic_yeh: int ; val XK_Arabic_fathatan: int ; val XK_Arabic_dammatan: int ; val XK_Arabic_kasratan: int ; val XK_Arabic_fatha: int ; val XK_Arabic_damma: int ; val XK_Arabic_kasra: int ; val XK_Arabic_shadda: int ; val XK_Arabic_sukun: int ; val XK_Arabic_switch: int ; (* Cyrillic *) val XK_Serbian_dje: int ; val XK_Macedonia_gje: int ; val XK_Cyrillic_io: int ; val XK_Ukrainian_ie: int ; val XK_Ukranian_je: int ; val XK_Macedonia_dse: int ; val XK_Ukrainian_i: int ; val XK_Ukranian_i: int ; val XK_Ukrainian_yi: int ; val XK_Ukranian_yi: int ; val XK_Cyrillic_je: int ; val XK_Serbian_je: int ; val XK_Cyrillic_lje: int ; val XK_Serbian_lje: int ; val XK_Cyrillic_nje: int ; val XK_Serbian_nje: int ; val XK_Serbian_tshe: int ; val XK_Macedonia_kje: int ; val XK_Byelorussian_shortu: int ; val XK_Cyrillic_dzhe: int ; val XK_Serbian_dze: int ; val XK_numerosign: int ; val XK_Serbian_DJE: int ; val XK_Macedonia_GJE: int ; val XK_Cyrillic_IO: int ; val XK_Ukrainian_IE: int ; val XK_Ukranian_JE: int ; val XK_Macedonia_DSE: int ; val XK_Ukrainian_I: int ; val XK_Ukranian_I: int ; val XK_Ukrainian_YI: int ; val XK_Ukranian_YI: int ; val XK_Cyrillic_JE: int ; val XK_Serbian_JE: int ; val XK_Cyrillic_LJE: int ; val XK_Serbian_LJE: int ; val XK_Cyrillic_NJE: int ; val XK_Serbian_NJE: int ; val XK_Serbian_TSHE: int ; val XK_Macedonia_KJE: int ; val XK_Byelorussian_SHORTU: int ; val XK_Cyrillic_DZHE: int ; val XK_Serbian_DZE: int ; val XK_Cyrillic_yu: int ; val XK_Cyrillic_a: int ; val XK_Cyrillic_be: int ; val XK_Cyrillic_tse: int ; val XK_Cyrillic_de: int ; val XK_Cyrillic_ie: int ; val XK_Cyrillic_ef: int ; val XK_Cyrillic_ghe: int ; val XK_Cyrillic_ha: int ; val XK_Cyrillic_i: int ; val XK_Cyrillic_shorti: int ; val XK_Cyrillic_ka: int ; val XK_Cyrillic_el: int ; val XK_Cyrillic_em: int ; val XK_Cyrillic_en: int ; val XK_Cyrillic_o: int ; val XK_Cyrillic_pe: int ; val XK_Cyrillic_ya: int ; val XK_Cyrillic_er: int ; val XK_Cyrillic_es: int ; val XK_Cyrillic_te: int ; val XK_Cyrillic_u: int ; val XK_Cyrillic_zhe: int ; val XK_Cyrillic_ve: int ; val XK_Cyrillic_softsign: int ; val XK_Cyrillic_yeru: int ; val XK_Cyrillic_ze: int ; val XK_Cyrillic_sha: int ; val XK_Cyrillic_e: int ; val XK_Cyrillic_shcha: int ; val XK_Cyrillic_che: int ; val XK_Cyrillic_hardsign: int ; val XK_Cyrillic_YU: int ; val XK_Cyrillic_A: int ; val XK_Cyrillic_BE: int ; val XK_Cyrillic_TSE: int ; val XK_Cyrillic_DE: int ; val XK_Cyrillic_IE: int ; val XK_Cyrillic_EF: int ; val XK_Cyrillic_GHE: int ; val XK_Cyrillic_HA: int ; val XK_Cyrillic_I: int ; val XK_Cyrillic_SHORTI: int ; val XK_Cyrillic_KA: int ; val XK_Cyrillic_EL: int ; val XK_Cyrillic_EM: int ; val XK_Cyrillic_EN: int ; val XK_Cyrillic_O: int ; val XK_Cyrillic_PE: int ; val XK_Cyrillic_YA: int ; val XK_Cyrillic_ER: int ; val XK_Cyrillic_ES: int ; val XK_Cyrillic_TE: int ; val XK_Cyrillic_U: int ; val XK_Cyrillic_ZHE: int ; val XK_Cyrillic_VE: int ; val XK_Cyrillic_SOFTSIGN: int ; val XK_Cyrillic_YERU: int ; val XK_Cyrillic_ZE: int ; val XK_Cyrillic_SHA: int ; val XK_Cyrillic_E: int ; val XK_Cyrillic_SHCHA: int ; val XK_Cyrillic_CHE: int ; val XK_Cyrillic_HARDSIGN: int ; (* Greek *) val XK_Greek_ALPHAaccent: int ; val XK_Greek_EPSILONaccent: int ; val XK_Greek_ETAaccent: int ; val XK_Greek_IOTAaccent: int ; val XK_Greek_IOTAdiaeresis: int ; val XK_Greek_OMICRONaccent: int ; val XK_Greek_UPSILONaccent: int ; val XK_Greek_UPSILONdieresis: int ; val XK_Greek_OMEGAaccent: int ; val XK_Greek_accentdieresis: int ; val XK_Greek_horizbar: int ; val XK_Greek_alphaaccent: int ; val XK_Greek_epsilonaccent: int ; val XK_Greek_etaaccent: int ; val XK_Greek_iotaaccent: int ; val XK_Greek_iotadieresis: int ; val XK_Greek_iotaaccentdieresis: int ; val XK_Greek_omicronaccent: int ; val XK_Greek_upsilonaccent: int ; val XK_Greek_upsilondieresis: int ; val XK_Greek_upsilonaccentdieresis: int ; val XK_Greek_omegaaccent: int ; val XK_Greek_ALPHA: int ; val XK_Greek_BETA: int ; val XK_Greek_GAMMA: int ; val XK_Greek_DELTA: int ; val XK_Greek_EPSILON: int ; val XK_Greek_ZETA: int ; val XK_Greek_ETA: int ; val XK_Greek_THETA: int ; val XK_Greek_IOTA: int ; val XK_Greek_KAPPA: int ; val XK_Greek_LAMDA: int ; val XK_Greek_LAMBDA: int ; val XK_Greek_MU: int ; val XK_Greek_NU: int ; val XK_Greek_XI: int ; val XK_Greek_OMICRON: int ; val XK_Greek_PI: int ; val XK_Greek_RHO: int ; val XK_Greek_SIGMA: int ; val XK_Greek_TAU: int ; val XK_Greek_UPSILON: int ; val XK_Greek_PHI: int ; val XK_Greek_CHI: int ; val XK_Greek_PSI: int ; val XK_Greek_OMEGA: int ; val XK_Greek_alpha: int ; val XK_Greek_beta: int ; val XK_Greek_gamma: int ; val XK_Greek_delta: int ; val XK_Greek_epsilon: int ; val XK_Greek_zeta: int ; val XK_Greek_eta: int ; val XK_Greek_theta: int ; val XK_Greek_iota: int ; val XK_Greek_kappa: int ; val XK_Greek_lamda: int ; val XK_Greek_lambda: int ; val XK_Greek_mu: int ; val XK_Greek_nu: int ; val XK_Greek_xi: int ; val XK_Greek_omicron: int ; val XK_Greek_pi: int ; val XK_Greek_rho: int ; val XK_Greek_sigma: int ; val XK_Greek_finalsmallsigma: int ; val XK_Greek_tau: int ; val XK_Greek_upsilon: int ; val XK_Greek_phi: int ; val XK_Greek_chi: int ; val XK_Greek_psi: int ; val XK_Greek_omega: int ; val XK_Greek_switch: int ; (* Technical *) val XK_leftradical: int ; val XK_topleftradical: int ; val XK_horizconnector: int ; val XK_topintegral: int ; val XK_botintegral: int ; val XK_vertconnector: int ; val XK_topleftsqbracket: int ; val XK_botleftsqbracket: int ; val XK_toprightsqbracket: int ; val XK_botrightsqbracket: int ; val XK_topleftparens: int ; val XK_botleftparens: int ; val XK_toprightparens: int ; val XK_botrightparens: int ; val XK_leftmiddlecurlybrace: int ; val XK_rightmiddlecurlybrace: int ; val XK_topleftsummation: int ; val XK_botleftsummation: int ; val XK_topvertsummationconnector: int ; val XK_botvertsummationconnector: int ; val XK_toprightsummation: int ; val XK_botrightsummation: int ; val XK_rightmiddlesummation: int ; val XK_lessthanequal: int ; val XK_notequal: int ; val XK_greaterthanequal: int ; val XK_integral: int ; val XK_therefore: int ; val XK_variation: int ; val XK_infinity: int ; val XK_nabla: int ; val XK_approximate: int ; val XK_similarequal: int ; val XK_ifonlyif: int ; val XK_implies: int ; val XK_identical: int ; val XK_radical: int ; val XK_includedin: int ; val XK_includes: int ; val XK_intersection: int ; val XK_union: int ; val XK_logicaland: int ; val XK_logicalor: int ; val XK_partialderivative: int ; val XK_function: int ; val XK_leftarrow: int ; val XK_uparrow: int ; val XK_rightarrow: int ; val XK_downarrow: int ; (* Special *) val XK_blank: int ; val XK_soliddiamond: int ; val XK_checkerboard: int ; val XK_ht: int ; val XK_ff: int ; val XK_cr: int ; val XK_lf: int ; val XK_nl: int ; val XK_vt: int ; val XK_lowrightcorner: int ; val XK_uprightcorner: int ; val XK_upleftcorner: int ; val XK_lowleftcorner: int ; val XK_crossinglines: int ; val XK_horizlinescan1: int ; val XK_horizlinescan3: int ; val XK_horizlinescan5: int ; val XK_horizlinescan7: int ; val XK_horizlinescan9: int ; val XK_leftt: int ; val XK_rightt: int ; val XK_bott: int ; val XK_topt: int ; val XK_vertbar: int ; (* Publishing *) val XK_emspace: int ; val XK_enspace: int ; val XK_em3space: int ; val XK_em4space: int ; val XK_digitspace: int ; val XK_punctspace: int ; val XK_thinspace: int ; val XK_hairspace: int ; val XK_emdash: int ; val XK_endash: int ; val XK_signifblank: int ; val XK_ellipsis: int ; val XK_doubbaselinedot: int ; val XK_onethird: int ; val XK_twothirds: int ; val XK_onefifth: int ; val XK_twofifths: int ; val XK_threefifths: int ; val XK_fourfifths: int ; val XK_onesixth: int ; val XK_fivesixths: int ; val XK_careof: int ; val XK_figdash: int ; val XK_leftanglebracket: int ; val XK_decimalpoint: int ; val XK_rightanglebracket: int ; val XK_marker: int ; val XK_oneeighth: int ; val XK_threeeighths: int ; val XK_fiveeighths: int ; val XK_seveneighths: int ; val XK_trademark: int ; val XK_signaturemark: int ; val XK_trademarkincircle: int ; val XK_leftopentriangle: int ; val XK_rightopentriangle: int ; val XK_emopencircle: int ; val XK_emopenrectangle: int ; val XK_leftsinglequotemark: int ; val XK_rightsinglequotemark: int ; val XK_leftdoublequotemark: int ; val XK_rightdoublequotemark: int ; val XK_prescription: int ; val XK_minutes: int ; val XK_seconds: int ; val XK_latincross: int ; val XK_hexagram: int ; val XK_filledrectbullet: int ; val XK_filledlefttribullet: int ; val XK_filledrighttribullet: int ; val XK_emfilledcircle: int ; val XK_emfilledrect: int ; val XK_enopencircbullet: int ; val XK_enopensquarebullet: int ; val XK_openrectbullet: int ; val XK_opentribulletup: int ; val XK_opentribulletdown: int ; val XK_openstar: int ; val XK_enfilledcircbullet: int ; val XK_enfilledsqbullet: int ; val XK_filledtribulletup: int ; val XK_filledtribulletdown: int ; val XK_leftpointer: int ; val XK_rightpointer: int ; val XK_club: int ; val XK_diamond: int ; val XK_heart: int ; val XK_maltesecross: int ; val XK_dagger: int ; val XK_doubledagger: int ; val XK_checkmark: int ; val XK_ballotcross: int ; val XK_musicalsharp: int ; val XK_musicalflat: int ; val XK_malesymbol: int ; val XK_femalesymbol: int ; val XK_telephone: int ; val XK_telephonerecorder: int ; val XK_phonographcopyright: int ; val XK_caret: int ; val XK_singlelowquotemark: int ; val XK_doublelowquotemark: int ; val XK_cursor: int ; (* APL *) val XK_leftcaret: int ; val XK_rightcaret: int ; val XK_downcaret: int ; val XK_upcaret: int ; val XK_overbar: int ; val XK_downtack: int ; val XK_upshoe: int ; val XK_downstile: int ; val XK_underbar: int ; val XK_jot: int ; val XK_quad: int ; val XK_uptack: int ; val XK_circle: int ; val XK_upstile: int ; val XK_downshoe: int ; val XK_rightshoe: int ; val XK_leftshoe: int ; val XK_lefttack: int ; val XK_righttack: int ; (* Hebrew *) val XK_hebrew_doublelowline: int ; val XK_hebrew_aleph: int ; val XK_hebrew_bet: int ; val XK_hebrew_beth: int ; val XK_hebrew_gimel: int ; val XK_hebrew_gimmel: int ; val XK_hebrew_dalet: int ; val XK_hebrew_daleth: int ; val XK_hebrew_he: int ; val XK_hebrew_waw: int ; val XK_hebrew_zain: int ; val XK_hebrew_zayin: int ; val XK_hebrew_chet: int ; val XK_hebrew_het: int ; val XK_hebrew_tet: int ; val XK_hebrew_teth: int ; val XK_hebrew_yod: int ; val XK_hebrew_finalkaph: int ; val XK_hebrew_kaph: int ; val XK_hebrew_lamed: int ; val XK_hebrew_finalmem: int ; val XK_hebrew_mem: int ; val XK_hebrew_finalnun: int ; val XK_hebrew_nun: int ; val XK_hebrew_samech: int ; val XK_hebrew_samekh: int ; val XK_hebrew_ayin: int ; val XK_hebrew_finalpe: int ; val XK_hebrew_pe: int ; val XK_hebrew_finalzade: int ; val XK_hebrew_finalzadi: int ; val XK_hebrew_zade: int ; val XK_hebrew_zadi: int ; val XK_hebrew_qoph: int ; val XK_hebrew_kuf: int ; val XK_hebrew_resh: int ; val XK_hebrew_shin: int ; val XK_hebrew_taw: int ; val XK_hebrew_taf: int ; val XK_Hebrew_switch: int ; end (* XKEYSYMS_SIG *) ; polyml-5.7.1/mlsource/extra/XWindows/XCURSORS_SIG.ML0000644000175000017500000000717013204034553020766 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature XCURSORS_SIG = sig val XC_num_glyphs: int ; val XC_X_cursor: int ; val XC_arrow: int ; val XC_based_arrow_down: int ; val XC_based_arrow_up: int ; val XC_boat: int ; val XC_bogosity: int ; val XC_bottom_left_corner: int ; val XC_bottom_right_corner: int ; val XC_bottom_side: int ; val XC_bottom_tee: int ; val XC_box_spiral: int ; val XC_center_ptr: int ; val XC_circle: int ; val XC_clock: int ; val XC_coffee_mug: int ; val XC_cross: int ; val XC_cross_reverse: int ; val XC_crosshair: int ; val XC_diamond_cross: int ; val XC_dot: int ; val XC_dotbox: int ; val XC_double_arrow: int ; val XC_draft_large: int ; val XC_draft_small: int ; val XC_draped_box: int ; val XC_exchange: int ; val XC_fleur: int ; val XC_gobbler: int ; val XC_gumby: int ; val XC_hand1: int ; val XC_hand2: int ; val XC_heart: int ; val XC_icon: int ; val XC_iron_cross: int ; val XC_left_ptr: int ; val XC_left_side: int ; val XC_left_tee: int ; val XC_leftbutton: int ; val XC_ll_angle: int ; val XC_lr_angle: int ; val XC_man: int ; val XC_middlebutton: int ; val XC_mouse: int ; val XC_pencil: int ; val XC_pirate: int ; val XC_plus: int ; val XC_question_arrow: int ; val XC_right_ptr: int ; val XC_right_side: int ; val XC_right_tee: int ; val XC_rightbutton: int ; val XC_rtl_logo: int ; val XC_sailboat: int ; val XC_sb_down_arrow: int ; val XC_sb_h_double_arrow: int ; val XC_sb_left_arrow: int ; val XC_sb_right_arrow: int ; val XC_sb_up_arrow: int ; val XC_sb_v_double_arrow: int ; val XC_shuttle: int ; val XC_sizing: int ; val XC_spider: int ; val XC_spraycan: int ; val XC_star: int ; val XC_target: int ; val XC_tcross: int ; val XC_top_left_arrow: int ; val XC_top_left_corner: int ; val XC_top_right_corner: int ; val XC_top_side: int ; val XC_top_tee: int ; val XC_trek: int ; val XC_ul_angle: int ; val XC_umbrella: int ; val XC_ur_angle: int ; val XC_watch: int ; val XC_xterm: int ; end (* XCURSORS_SIG *) ; polyml-5.7.1/mlsource/extra/CInterface/0000755000175000017500000000000013204034553016756 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/ForeignDebug.ML0000644000175000017500000000157413204034553021557 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ForeignDebug : ForeignDebugSig = Dispatch; polyml-5.7.1/mlsource/extra/CInterface/LowerLevel.ML0000644000175000017500000002023613204034553021273 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure LowerLevel = struct open Volatile; open Volatile.BehaviourRefs; open ForeignException; (********************************************************************** An 'a promise represents a suspended computation of type 'a. A promise is created by passing an 'a thunk (a function from unit to 'a) to makePromise. A promise is activated using forcePromise. When a promise is forced, the result is remembered for subsequent force. This ensures that the thunk passed to makePromise will be evaluated at most once. For example, evaluation of the following would cause the message, "computing..." to be echoed just once: fun echo s = output (std_out,s); let val P = makePromise (fn () => (echo "computing...\n"; 2 + 2)) in forcePromise P + forcePromise P end; **********************************************************************) datatype ('a,'b) either = This of 'a | That of 'b datatype 'a promise = Promise of (unit -> 'a, 'a) either ref fun makePromise thunk = Promise (ref (This thunk)); fun forcePromise (Promise thingref) = case (!thingref) of This thunk => let val res = thunk() in (thingref := That res; res) end | That res => res; (********************************************************************** An 'a inert represents a re-creatable value of type 'a. Recreation is performed when a given exception is raised during the subsequent use of the inert value. This is useful for objects which do not survive from one PolyML session to the next, e.g. values of type "vol". > makeInert CATCH BUILD Create an inert value by forcing the thunk BUILD. Use CATCH as a predicate on exception values. It must return true for any exception which indicates recreation of this inert value is necessary. Recreation will be achieved by re-forcing BUILD. > withInert INERT F Apply the function F to the value encapsulated within INERT. If during the course of this application recreation is necessary then perform that recreation. **********************************************************************) datatype 'a inert = Inert of 'a ref * (unit -> 'a) * (exn -> bool) fun makeInert catch build = Inert(ref(build()), build, catch); fun withInert (Inert(value,build,catch)) f = f (!value) handle e => if catch e then (value := build(); f (!value)) else raise e; (********************************************************************** * Debugging... **********************************************************************) fun inform str = (****** * Output a message if "inform_about_symbol_reload" ref is set. ******) if !inform_about_symbol_reload then TextIO.print str else (); (********************************************************************** * Combination of Inert & Promises... **********************************************************************) fun makeIP catch build = makePromise (fn () => makeInert catch build); fun withIP ip f = withInert (forcePromise ip) f (********************************************************************** * Implementation of dylib & sym. **********************************************************************) datatype dylib = Dylib of string ref * vol inert promise; datatype sym = Sym of vol inert promise; fun withDylib (Dylib(_,ip)) f = withIP ip f; fun withSym (Sym ip) f = withIP ip f; fun get_libPath (Dylib(pathRef,_)) = !pathRef; fun set_libPath (Dylib(pathRef,_)) path = pathRef := path; val catchIV = (****** * Returns "true" when given an `invalid volatile' exception. * Note: this string must *exactly* match the corresponding * string found in the runtime system file: .../Driver/foreign.c ******) fn Foreign "Invalid volatile" => true | _ => false; fun load_lib path = (****** * Load a dynamic library. * This loading is done lazily, i.e. not until the library is needed. * The library will automatically reload in subsequent PolyML sessions * using the latest pathname set by set_libPath above. ******) let val pathRef = ref path in Dylib(pathRef, makeIP catchIV (fn () => (inform ("Loading library: "^(!pathRef)^"\n"); Volatile.load_lib (!pathRef)))) end; fun load_sym dylib symName = (****** * Load a symbol from a dynamic library. * This loading is done lazily. Neither the library or the symbol * will be loaded until the symbol is actually needed. * The symbol will be reloaded in subsequent PolyML sessions. ******) Sym(makeIP catchIV (fn () => withDylib dylib (fn dylibVol => (inform ("Loading symbol: "^symName^"\n"); Volatile.load_sym dylibVol symName)))); fun call_sym_and_convert sym args retType = (****** * Call a symbol as a C-function. * May load/reload either the symbol, or both the symbol and the library. ******) withSym sym (fn symVol => Volatile.call_sym_and_convert symVol args retType); (* Set a finalizer for a vol. *) fun setFinal sym vol = withSym sym (fn symVol => Volatile.setFinal symVol vol) fun volOfSym sym = (****** * Extract a *valid* volatile from a symbol * May load/reload either the symbol, or both the symbol and the library. * * The reload is caused because we attempt to take the address * of the vol which will raise an exception if the vol is invalid. ******) withSym sym (fn symVol => (Volatile.address symVol; symVol)); fun mapSym f sym = (****** * Change order of params for export... ******) withSym sym f; fun get_sym libPath (*symName*) = (****** * Common combination of load_lib & load_sym. * Partial application will cause the library to be shared, and * hence only loaded/reloaded once per session. ******) load_sym (load_lib libPath) (*symName*) ; open Union; (* now imported from Union ... exception Never of string; ... *) fun never string = raise Never string; (* Define call_sym in terms of call_sym_and_convert *) fun call_sym sym args retCtype = let val result = call_sym_and_convert sym (map (fn x => In (Vol x)) args) (chooseVol retCtype) in case result of (v,[]) => if isVol v then deVol v else never "call_sym" | _ => never "call_sym" end local fun prettyDylib _ _ (_: dylib) = PolyML.PrettyString "?" fun prettySym _ _ (_: sym) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyDylib and () = PolyML.addPrettyPrinter prettySym end end; polyml-5.7.1/mlsource/extra/CInterface/CallWithConvSig.ML0000644000175000017500000001504413204034553022214 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CallWithConvSig = sig type sym type vol structure Ctype : CtypeSig type 'a Conversion; val CHAR : char Conversion val FLOAT : real Conversion val DOUBLE : real Conversion val INT : int Conversion val SHORT : int Conversion val LONG : int Conversion val STRING : string Conversion val UINT : int Conversion val mapConversion : ('a -> 'b) * ('b -> 'a) -> 'a Conversion -> 'b Conversion val mkConversion : (vol -> 'a) -> ('a -> vol) -> Ctype.Ctype -> 'a Conversion val breakConversion : 'a Conversion -> (vol -> 'a) * ('a -> vol) * Ctype.Ctype val global : sym -> 'a Conversion -> unit -> 'a val setGlobal:sym -> 'a Conversion -> 'a -> unit val call0 : sym -> unit -> 'a Conversion -> unit -> 'a val call1 : sym -> 'a Conversion -> 'b Conversion -> 'a -> 'b val call2 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion -> 'a * 'b -> 'c val call3 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> 'a * 'b * 'c -> 'd val call4 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> 'a * 'b * 'c * 'd -> 'e val call5 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion -> 'f Conversion -> 'a * 'b * 'c * 'd * 'e -> 'f val call6 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion -> 'g Conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g val call7 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion -> 'h Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h val call8 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion -> 'i Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i val call9 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion -> 'j Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j val call10 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion -> 'k Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k val call11 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion -> 'l Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l val call12 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion -> 'm Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm val call13 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion -> 'n Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n val call14 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion * 'n Conversion -> 'p Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'p val call15 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion * 'n Conversion * 'p Conversion -> 'q Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n * 'p -> 'q val call1ret1 : sym -> unit -> 'a Conversion -> unit -> 'a val call2ret1 : sym -> 'a Conversion -> 'b Conversion -> 'a -> 'b val call2ret2 : sym -> unit -> 'a Conversion * 'b Conversion -> unit -> 'a * 'b val call3ret1 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion -> 'a * 'b -> 'c val call3ret2 : sym -> 'a Conversion -> 'b Conversion * 'c Conversion -> 'a -> 'b * 'c val call4ret1 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> 'a * 'b * 'c -> 'd val call4ret2 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion * 'd Conversion -> 'a * 'b -> 'c * 'd val call4ret3 : sym -> 'a Conversion -> 'b Conversion * 'c Conversion * 'd Conversion -> 'a -> 'b * 'c * 'd val call5ret1 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> 'a * 'b * 'c * 'd -> 'e val call5ret2 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion * 'e Conversion -> 'a * 'b * 'c -> 'd * 'e end; polyml-5.7.1/mlsource/extra/CInterface/OrigLowerLevelSig.ML0000644000175000017500000000226313204034553022557 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*** To maintain top level interface we simulate old primitve call_sym in terms of new primitive call_sym_and_convert. This signature adds call_sym to LowerLevelSig. ***) signature OrigLowerLevelSig = sig include LowerLevelSig; (*local open Ctype in*) val call_sym : sym -> (Ctype.Ctype * vol) list -> Ctype.Ctype -> vol (*end*) end; polyml-5.7.1/mlsource/extra/CInterface/DispatchSig.ML0000644000175000017500000000556413204034553021424 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature DispatchSig = sig type rawvol type RawCtype val Cchar : RawCtype val Cdouble : RawCtype val Cfloat : RawCtype val Cint : RawCtype val Clong : RawCtype val Cpointer : RawCtype val Cshort : RawCtype val Cstruct : RawCtype list -> RawCtype val Cuint : RawCtype val get_foreign_debug : unit -> int val set_foreign_debug : int -> unit val load_lib : string -> rawvol val load_sym : rawvol -> string -> rawvol structure Union : UnionSig val call_sym_and_convert : rawvol -> (RawCtype, rawvol) Union.directedArg list -> RawCtype Union.unionChoice -> (rawvol Union.union * rawvol Union.union list) val alloc : int -> rawvol val address : rawvol -> rawvol val deref : rawvol -> rawvol val offset : rawvol -> int -> rawvol val assign : rawvol -> rawvol -> int -> unit val sizeof : RawCtype -> int val alignment : RawCtype -> int val toCchar : char -> rawvol val toCdouble : real -> rawvol val toCfloat : real -> rawvol val toCint : int -> rawvol val toClong : int -> rawvol val toCshort : int -> rawvol val toCuint : int -> rawvol val fromCchar : rawvol -> char val fromCdouble : rawvol -> real val fromCfloat : rawvol -> real val fromCint : rawvol -> int val fromClong : rawvol -> int val fromCshort : rawvol -> int val fromCuint : rawvol -> int val fillCstring : rawvol -> string -> unit val toCstring : string -> rawvol val fromCstring : rawvol -> string val toCbytes : Word8Vector.vector -> rawvol val fromCbytes : rawvol * int -> Word8Vector.vector val toCfunction : RawCtype list -> RawCtype -> (rawvol list -> rawvol) -> rawvol val toPascalfunction : RawCtype list -> RawCtype -> (rawvol list -> rawvol) -> rawvol val setFinal : rawvol -> rawvol -> unit val null : rawvol end; polyml-5.7.1/mlsource/extra/CInterface/CallWithConv.ML0000644000175000017500000000163013204034553021545 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure CallWithConv = CALL_WITH_CONV (structure LowerLevel = LowerLevel); polyml-5.7.1/mlsource/extra/CInterface/CALL_WITH_CONV.ML0000644000175000017500000002365613204034553021417 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (********************************************************************** * Functor Definition. **********************************************************************) functor CALL_WITH_CONV (structure LowerLevel : LowerLevelSig) : CallWithConvSig = struct structure Ctype = LowerLevel.Ctype open LowerLevel open Ctype (* ... exception Never of string; fun never s = raise Never s; ... *) fun never s = raise Union.Never s; local open Union in (* now defined in Union ... val deVol = fn (Vol x) => x | _ => never "deVol"; val deChar = fn (Char x) => x | _ => never "deChar"; val deFloat = fn (Float x) => x | _ => never "deFloat"; val deDouble = fn (Double x) => x | _ => never "deDouble"; val deInt = fn (Int x) => x | _ => never "deInt"; val deShort = fn (Short x) => x | _ => never "deShort"; val deLong = fn (Long x) => x | _ => never "deLong"; val deString = fn (String x) => x | _ => never "deString"; ... *) abstype 'a Conversion= Conversion of (vol union -> 'a) * ('a -> (Ctype * vol) union) * Ctype unionChoice with infix @ infix @@ fun x @ (Conversion(_,to,_)) = In (to x) fun (Conversion(from,_,choice)) @@ pap = case (pap choice) of (union,[]) => from union | _ => never "@@" val ignore = chooseVol Cvoid fun want (Conversion(_,_,choice)) = Out choice; fun from (Conversion(fr,_,_)) x = fr x; (********************************************************************** * Special Conversion (efficient) **********************************************************************) val CHAR = Conversion (deChar, Char, chooseChar); val FLOAT = Conversion (deFloat, Float, chooseFloat); val DOUBLE = Conversion (deDouble, Double, chooseDouble); val INT = Conversion (deInt, Int, chooseInt); val SHORT = Conversion (deShort, Short, chooseShort); val LONG = Conversion (deLong, Long, chooseLong); val STRING = Conversion (deString, String, chooseString); val UINT = Conversion (deUint, Uint, chooseUint); (* Added DCJM 17/5/01. *) fun mapConversion (from',to') (Conversion(from,to,choice)) = Conversion (fn x => from' (from x), fn x => to (to' x), choice) fun mkConversion from to ctype = Conversion (fn v => if isVol v then from (deVol v) else never "mkConversion", fn x => Vol (ctype, to x), chooseVol ctype) val Cstring = Cpointer Cchar; fun ID x = x; (* ... fun breakConversion (Conversion(from,to,choice)) = let fun makeBreaker (fromSpecial,toSpecial,ctype,fromUnion,toUnion) = (fn vol => from (toUnion (fromSpecial vol)), fn x => toSpecial (fromUnion (to x)), ctype) in case choice of chooseVol ctype => makeBreaker (ID, ID, ctype, fn x => #2 (deVol x), Vol) | chooseChar => makeBreaker (fromCchar, toCchar, Cchar, deChar, Char) | chooseFloat => makeBreaker (fromCfloat, toCfloat, Cfloat, deFloat, Float) | chooseDouble => makeBreaker (fromCdouble, toCdouble, Cdouble, deDouble, Double) | chooseInt => makeBreaker (fromCint, toCint, Cint, deInt, Int) | chooseShort => makeBreaker (fromCshort, toCshort, Cshort, deShort, Short) | chooseLong => makeBreaker (fromClong, toClong, Clong, deLong, Long) | chooseString => makeBreaker (fromCstring, toCstring, Cstring, deString, String) end ... *) fun breakConversion (Conversion(from,to,choice)) = let fun makeBreaker (fromSpecial,toSpecial,ctype,fromUnion,toUnion) = (fn vol => from (toUnion (fromSpecial vol)), fn x => toSpecial (fromUnion (to x)), ctype) in if isChooseVol choice then makeBreaker (ID, ID, deChooseVol choice, fn x => #2 (deVol x), Vol) else if isChooseChar choice then makeBreaker (fromCchar, toCchar, Cchar, deChar, Char) else if isChooseFloat choice then makeBreaker (fromCfloat, toCfloat, Cfloat, deFloat, Float) else if isChooseDouble choice then makeBreaker (fromCdouble, toCdouble, Cdouble, deDouble, Double) else if isChooseInt choice then makeBreaker (fromCint, toCint, Cint, deInt, Int) else if isChooseShort choice then makeBreaker (fromCshort, toCshort, Cshort, deShort, Short) else if isChooseLong choice then makeBreaker (fromClong, toClong, Clong, deLong, Long) else if isChooseUint choice then makeBreaker (fromCuint, toCuint, Cuint, deUint, Uint) else (* ishooseString choice *) makeBreaker (fromCstring, toCstring, Cstring, deString, String) end end (* abstype *) end (* local open Union *) fun global sym conv () = (****** * Access to global constants. * Reads the value each time final unit is applied. ******) let val (from,_,_) = breakConversion conv in from (mapSym deref sym) end; fun setGlobal sym conv v = (****** * Set the value of a global constant to a new value. ******) let val (_,to,ctype) = breakConversion conv in assign ctype (mapSym deref sym) (to v) end; local fun call s = call_sym_and_convert s in fun call0 sym () RET () = RET @@ call sym [] fun call1 sym (A) RET (a) = RET @@ call sym [a@A] fun call2 sym (A,B) RET (a,b) = RET @@ call sym [a@A,b@B] fun call3 sym (A,B,C) RET (a,b,c) = RET @@ call sym [a@A,b@B,c@C] fun call4 sym (A,B,C,D) RET (a,b,c,d) = RET @@ call sym [a@A,b@B,c@C,d@D] fun call5 sym (A,B,C,D,E) RET (a,b,c,d,e) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E] fun call6 sym (A,B,C,D,E,F) RET (a,b,c,d,e,f) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F] fun call7 sym (A,B,C,D,E,F,G) RET (a,b,c,d,e,f,g) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G] fun call8 sym (A,B,C,D,E,F,G,H) RET (a,b,c,d,e,f,g,h) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H] fun call9 sym (A,B,C,D,E,F,G,H,I) RET (a,b,c,d,e,f,g,h,i) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I] fun call10 sym (A,B,C,D,E,F,G,H,I,J) RET (a,b,c,d,e,f,g,h,i,j) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J] fun call11 sym (A,B,C,D,E,F,G,H,I,J,K) RET (a,b,c,d,e,f,g,h,i,j,k) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J,k@K] fun call12 sym (A,B,C,D,E,F,G,H,I,J,K,L) RET (a,b,c,d,e,f,g,h,i,j,k,l) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J,k@K,l@L] fun call13 sym (A,B,C,D,E,F,G,H,I,J,K,L,M) RET (a,b,c,d,e,f,g,h,i,j,k,l,m) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J,k@K,l@L,m@M] fun call14 sym (A,B,C,D,E,F,G,H,I,J,K,L,M,N) RET (a,b,c,d,e,f,g,h,i,j,k,l,m,n) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J,k@K,l@L,m@M,n@N] fun call15 sym (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) RET (a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) = RET @@ call sym [a@A,b@B,c@C,d@D,e@E,f@F,g@G,h@H,i@I,j@J,k@K,l@L,m@M,n@N,p@O] fun call1ret1 sym () (X) () = case call sym [ want X ] ignore of (_,[x]) => (from X x) | _ => never "call1ret1" fun call2ret1 sym (A) (X) (a) = case call sym [ a@A, want X ] ignore of (_,[x]) => (from X x) | _ => never "call2ret1" fun call2ret2 sym () (X,Y) () = case call sym [ want X, want Y ] ignore of (_,[x,y]) => (from X x, from Y y) | _ => never "call2ret2" fun call3ret1 sym (A,B) (X) (a,b) = case call sym [ a@A, b@B, want X ] ignore of (_,[x]) => (from X x) | _ => never "call3ret1" fun call3ret2 sym (A) (X,Y) (a) = case call sym [ a@A, want X, want Y ] ignore of (_,[x,y]) => (from X x, from Y y) | _ => never "call3ret2" fun call4ret1 sym (A,B,C) (X) (a,b,c) = case call sym [ a@A, b@B, c@C, want X ] ignore of (_,[x]) => (from X x) | _ => never "call4ret1" fun call4ret2 sym (A,B) (X,Y) (a,b) = case call sym [ a@A, b@B, want X, want Y ] ignore of (_,[x,y]) => (from X x, from Y y) | _ => never "call4ret2" fun call4ret3 sym (A) (X,Y,Z) (a) = case call sym [ a@A, want X, want Y, want Z ] ignore of (_,[x,y,z]) => (from X x, from Y y, from Z z) | _ => never "call4ret3" fun call5ret1 sym (A,B,C,D) (X) (a,b,c,d) = case call sym [ a@A, b@B, c@C, d@D, want X ] ignore of (_,[x]) => (from X x) | _ => never "call5ret1" fun call5ret2 sym (A,B,C) (X,Y) (a,b,c) = case call sym [ a@A, b@B, c@C, want X, want Y ] ignore of (_,[x,y]) => (from X x, from Y y) | _ => never "call5ret2" end (* local *) local fun prettyConv _ _ (_: 'a Conversion) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyConv end end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/Ctype/0000755000175000017500000000000013204034553020042 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/Ctype/ml_bind.ML0000644000175000017500000000164013204034553021701 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Ctype = CTYPE_SAVE_SIZEOF (CTYPE (structure Dispatch = Dispatch)); polyml-5.7.1/mlsource/extra/CInterface/Ctype/CTYPE.ML0000644000175000017500000001163713204034553021170 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2011 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CTYPE (structure Dispatch : DispatchSig) : CtypeSig = struct exception IllegalUseOfVoid datatype Ctype = Cchar | Cdouble | Cfloat | Cint | Clong | Cshort | Cuint | Cpointer of Ctype | Cstruct of Ctype list | Cfunction of Ctype list * Ctype | Cvoid (* generally useful definition *) val voidStar = Cpointer Cvoid local (* These are constants for a particular architecture so only need to be evaluated once. *) val alignCchar = Dispatch.alignment Dispatch.Cchar and alignCdouble = Dispatch.alignment Dispatch.Cdouble and alignCfloat = Dispatch.alignment Dispatch.Cfloat and alignCint = Dispatch.alignment Dispatch.Cint and alignClong = Dispatch.alignment Dispatch.Clong and alignCshort = Dispatch.alignment Dispatch.Cshort and alignCuint = Dispatch.alignment Dispatch.Cuint and alignCpointer = Dispatch.alignment Dispatch.Cpointer val sizeofCchar = Dispatch.sizeof Dispatch.Cchar and sizeofCdouble = Dispatch.sizeof Dispatch.Cdouble and sizeofCfloat = Dispatch.sizeof Dispatch.Cfloat and sizeofCint = Dispatch.sizeof Dispatch.Cint and sizeofClong = Dispatch.sizeof Dispatch.Clong and sizeofCshort = Dispatch.sizeof Dispatch.Cshort and sizeofCuint = Dispatch.sizeof Dispatch.Cuint and sizeofCpointer = Dispatch.sizeof Dispatch.Cpointer in fun alignment Cchar = alignCchar | alignment Cdouble = alignCdouble | alignment Cfloat = alignCfloat | alignment Cint = alignCint | alignment Clong = alignClong | alignment Cshort = alignCshort | alignment Cuint = alignCuint | alignment (Cpointer _) = alignCpointer | alignment (Cfunction _) = alignCpointer | alignment (Cstruct ts) = List.foldl(fn (t, n) => Int.max(alignment t, n)) 1 ts | alignment Cvoid = raise IllegalUseOfVoid fun align n t = (****** * returns first integer >= n * that satisfies alignment restrictions of the ctype t ******) let val a = alignment t in a*((n-1) div a + 1) end fun sizeof Cchar = sizeofCchar | sizeof Cdouble = sizeofCdouble | sizeof Cfloat = sizeofCfloat | sizeof Cint = sizeofCint | sizeof Clong = sizeofClong | sizeof Cshort = sizeofCshort | sizeof (Cpointer _) = sizeofCpointer | sizeof Cuint = sizeofCuint | sizeof (Cfunction _) = sizeofCpointer | sizeof (Cstruct ts) = (* The size of a structure is the sum of the sizes of each element with padding added before each so that it is correctly aligned. Then the structure is padded so that its size is a multiple of alignment. *) align (List.foldl(fn(t, n) => align n t + sizeof t) 0 ts) (Cstruct ts) | sizeof Cvoid = raise IllegalUseOfVoid end type RawCtype = Dispatch.RawCtype; fun makeRaw Cchar = Dispatch.Cchar | makeRaw Cdouble = Dispatch.Cdouble | makeRaw Cfloat = Dispatch.Cfloat | makeRaw Cint = Dispatch.Cint | makeRaw Clong = Dispatch.Clong | makeRaw Cshort = Dispatch.Cshort | makeRaw Cuint = Dispatch.Cuint | makeRaw (Cpointer _) = Dispatch.Cpointer | makeRaw (Cfunction _) = Dispatch.Cpointer (*Always the same as a pointer?*) | makeRaw (Cstruct l) = Dispatch.Cstruct(map makeRaw l) | makeRaw Cvoid = Dispatch.Cint (*hack*) end; (* struct *) polyml-5.7.1/mlsource/extra/CInterface/VOLS_THAT_HOLD_REFS.ML0000644000175000017500000002623413204034553022247 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*** Implementaion of a wrapper for the raw C programming primitives, which provides the means for holding onto ML objects to avoid GC. ***) (* I think the idea here is to allow C data structures to be built up. If we allocate a C object using the low-level "alloc" function it may be freed by the GC if the corresponding ML object is no longer referenced. We don't want that to happen if we have stored a pointer to this C object in another C object. Only if the root of the whole structure is no longer reachable do we want the objects within the structure to be freed. DCJM 30/4/01. I've modified this to make it more efficient, particularly for large arrays. DCJM 27/6/01. *) (********************************************************************** * Functor Definition **********************************************************************) functor VOLS_THAT_HOLD_REFS (structure Underlying : VolatileSig structure ForeignException : ForeignExceptionSig) :> VolatileSig = struct structure Ctype = Underlying.Ctype structure BehaviourRefs = Underlying.BehaviourRefs structure Union = Underlying.Union val sizeof = Ctype.sizeof; open ForeignException open Union (*..... datatype owner = Owner of rawvol * dependancy ref list and vol = Vol of rawvol * dependancy where type dependancy = (int * owner) option .....*) (* The int records information for offset *) datatype owner = Owner of Underlying.vol * ownerOpt Array.array ref and ownerOpt = None | Some of int * owner (* This is more storage efficient than using "option". *) datatype vol = Vol of {thevol: Underlying.vol, depends: ownerOpt} fun vol(thevol, depends) = Vol{thevol = thevol, depends = depends} fun thevol(Vol{thevol, ...}) = thevol and depends(Vol{depends, ...}) = depends val PointerSize = sizeof (Ctype.Cpointer Ctype.Cvoid) val MaxVectorSize = 20 (* Maximum initial size of the dependency array. *) fun selfOwner v deps = (****** * Create a vol that `owns' itself, with dependencies "deps". ******) vol (v,Some(0,Owner(v, ref deps))) (*********************************************************************** a = alloc(n) ***********************************************************************) (* "alloc" allocates a new region of memory. The dependencies are initialised to None. If the region is large we don't allocate a dependency array that big at this stage. Instead we grow the array later if necessary. Typically large arrays are byte arrays and they don't actually have dependencies. *) fun alloc n ctype = let val m = n * sizeof ctype val v = Underlying.alloc n ctype in selfOwner v (Array.array(Int.min(m div PointerSize, MaxVectorSize), None)) end (*********************************************************************** a = &b ***********************************************************************) (* "address" creates a new vol containing the address of an existing one. We create a single element array to hold the dependencies. *) fun address (Vol{thevol, depends}) = let val v = Underlying.address thevol in selfOwner v (Array.array (1, depends)) end (*********************************************************************** a = *b ***********************************************************************) (* "deref" returns the value at the appropriate offset. The dependency is the dependency at the corresponding (word) offset. (We need to do this if, for example, we have created a list in the C space. If we extract the tail of a cell we need to hang on to the rest of the list.) *) fun deref(Vol{thevol, depends}) = vol (Underlying.deref thevol, case depends of None => None | Some(i, Owner(_, ref refs)) => if i mod PointerSize <> 0 then None else let val j = i div PointerSize in if j < 0 orelse j >= Array.length refs then None else Array.sub(refs, j) end) (*********************************************************************** a = b.X (offset n objects of type ctype) [*a = ( char* )&b + n] ***********************************************************************) (* "offset" gives us a new address based on the old one. We shift the origin of the dependency index by the appropriate amount. Because offset can be applied to this vol to give a new address we can't select the dependency at this offset yet. This is where the self-owner comes in. Although we're creating a new vol here we need to retain the original vol in the event of a GC. *) fun offset n ctype (Vol{thevol, depends}) = let val m = n * sizeof ctype in vol (Underlying.offset n ctype thevol, case depends of None => None | Some (i,x) => Some (i+m, x)) end (*********************************************************************** a := b (n bytes) ***********************************************************************) (* When we make an assignment of h into g we update the dependencies of g to point to the dependencies of h. We may have to grow the destination array. *) fun assign ctype g h = let val n = sizeof ctype in case (depends g, depends h) of (Some(i, Owner(_, drefs as ref destRefs)), Some(j, Owner(_, ref sourceRefs))) => (* We only copy the references if we're moving at least a word and the source and destinations are word aligned. We also skip this if the offsets are negative. It's just possible that there might be a C function which would return an area of memory with a pointer offset within it. In that case we don't want to raise a Subscript exception but I don't know how to deal with the dependencies. *) if n < PointerSize orelse i mod PointerSize <> 0 orelse j mod PointerSize <> 0 orelse i < 0 orelse j < 0 then () else let (* Neither the source array nor the destination array may be big enough. *) val di = i div PointerSize (* Starting offset in dest. *) val si = j div PointerSize (* Starting offset in source. *) val maxLen = n div PointerSize (* Words to copy. *) val sLen = Array.length sourceRefs val toCopy = if si + maxLen <= sLen then maxLen else sLen - si in if toCopy <= 0 then () (* Nothing in the source to copy. *) else let val diMax = di + toCopy (* Maximum offset. *) val dLen = Array.length destRefs val dVec = if dLen < diMax then (* Need to grow array. *) let val newSize = Int.max(diMax, dLen + dLen div 2) val newArray = Array.array(newSize, None) in (* Copy the old dependencies *) Array.copy{dst = newArray, src = destRefs, di = 0}; drefs := newArray; (* Remember this new array. *) newArray end else destRefs in (* Copy the dependencies being updated by the assignment. *) ArraySlice.copy{dst = dVec, src = ArraySlice.slice(sourceRefs, si, SOME toCopy), di = di} end end | _ => (); Underlying.assign ctype (thevol g) (thevol h) end (********************************************************************** From / To C values **********************************************************************) fun makeVol v = selfOwner v (Array.array(1, None)) fun load_lib s = makeVol (Underlying.load_lib s) fun load_sym (Vol{thevol, ...}) s = makeVol (Underlying.load_sym thevol s) fun ID x = x; fun call_sym_and_convert g args rt = let val (u,us) = Underlying.call_sym_and_convert (thevol g) (map (mapDirectedArg ID thevol) args) rt in (mapUnion makeVol u, map (mapUnion makeVol) us) end; val toCchar = makeVol o Underlying.toCchar val toCdouble = makeVol o Underlying.toCdouble val toCfloat = makeVol o Underlying.toCfloat val toCint = makeVol o Underlying.toCint val toClong = makeVol o Underlying.toClong val toCshort = makeVol o Underlying.toCshort val toCstring = makeVol o Underlying.toCstring val toCuint = makeVol o Underlying.toCuint val toCbytes = makeVol o Underlying.toCbytes val fromCchar = Underlying.fromCchar o thevol val fromCdouble = Underlying.fromCdouble o thevol val fromCfloat = Underlying.fromCfloat o thevol val fromCint = Underlying.fromCint o thevol val fromClong = Underlying.fromClong o thevol val fromCshort = Underlying.fromCshort o thevol val fromCstring = Underlying.fromCstring o thevol val fromCuint = Underlying.fromCuint o thevol val fillCstring = Underlying.fillCstring o thevol fun fromCbytes(v, i) = Underlying.fromCbytes(thevol v, i) (* DCJM 7/4/04. I've added these although I suspect that they need to do more than they're currently doing. *) fun toCfunction argType resType (f: vol list -> vol) = let fun appF (args: Underlying.vol list) : Underlying.vol = let in thevol (f (map makeVol args)) end in makeVol (Underlying.toCfunction argType resType appF) end fun toPascalfunction argType resType (f: vol list -> vol) = let fun appF (args: Underlying.vol list) : Underlying.vol = let in thevol (f (map makeVol args)) end in makeVol (Underlying.toPascalfunction argType resType appF) end fun setFinal f v = Underlying.setFinal (thevol f) (thevol v) local fun prettyVol _ _ (_: vol) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyVol end val null = vol (Underlying.null, None) end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/BehaviourRefs.ML0000644000175000017500000000301313204034553021751 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure BehaviourRefs : BehaviourRefsSig = struct (********************************************************************** * Couple of refs to control behaviour. **********************************************************************) (*** Quantity of creation info strored: If this is too big, space usage will increase causing excessive GC. At the moment, we can only recreate (reload) symbols, so most of the time this info is only used for debugging. ***) val max_volatile_creation_info_depth = ref 5; (*** If true, we print a message to inform the user that a symbol is being reloaded. This is probably only useful as debuging info. ***) val inform_about_symbol_reload = ref false; end; polyml-5.7.1/mlsource/extra/CInterface/ml_bind.ML0000644000175000017500000000237113204034553020617 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure CInterface (*: CInterfaceSig*) = CINTERFACE (structure ForeignException = ForeignException structure ForeignDebug = ForeignDebug structure LowerLevel = LowerLevel structure CallWithConv = CallWithConv structure Struct = Struct structure Conversions = Conversions structure StructConversionals = StructConversionals); polyml-5.7.1/mlsource/extra/CInterface/BehaviourRefsSig.ML0000644000175000017500000000172313204034553022422 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature BehaviourRefsSig = sig val max_volatile_creation_info_depth : int ref; val inform_about_symbol_reload : bool ref; end; polyml-5.7.1/mlsource/extra/CInterface/VOL_BASIC.ML0000644000175000017500000000412413204034553020552 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor VOL_BASIC (structure Ctype : CtypeSig structure BehaviourRefs : BehaviourRefsSig structure Dispatch : DispatchSig sharing type Dispatch.RawCtype = Ctype.RawCtype ) : VolatileSig = struct structure BehaviourRefs = BehaviourRefs; structure Ctype = Ctype structure Union = Dispatch.Union; open Dispatch type vol = rawvol open Union open Ctype fun offset i ct v = Dispatch.offset v (i * sizeof ct) fun alloc i ct = Dispatch.alloc (i * sizeof ct) fun assign ct v w = Dispatch.assign v w (sizeof ct) fun ID x = x; fun call_sym_and_convert v args rt = Dispatch.call_sym_and_convert v (map (mapDirectedArg makeRaw ID) args) (mapUnionChoice makeRaw rt) (* These both take an ML function and create a vol. They can and should be applied to the type information before they are applied to the ML function. It actually doesn't help much because VOLS_THAT_HOLD_REFS().toCfunction etc sapply them to all the arguments. *) fun toCfunction argType resType = Dispatch.toCfunction (map makeRaw argType) (makeRaw resType) fun toPascalfunction argType resType = Dispatch.toPascalfunction (map makeRaw argType) (makeRaw resType) end; polyml-5.7.1/mlsource/extra/CInterface/STRUCT_CONVERSIONALS.ML0000644000175000017500000003175113204034553022350 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (********************************************************************** * * Functor Application * **********************************************************************) functor STRUCT_CONVERSIONALS ( structure CallWithConv : CallWithConvSig structure Struct : StructSig structure ForeignException : ForeignExceptionSig structure LowerLevel : LowerLevelSig sharing type CallWithConv.vol = Struct.vol = LowerLevel.vol sharing Struct.Ctype = CallWithConv.Ctype = LowerLevel.Ctype ) : StructConversionalsSig = struct open Struct; open CallWithConv; open Ctype; open ForeignException; open LowerLevel; exception Zip; fun zip [] [] = [] | zip (x::xs) (y::ys) = (x,y) :: zip xs ys | zip _ _ = raise Zip; exception Break fun break2 ts v = case break_struct ts v of [a,b] => (a,b) | _ => raise Break fun break3 ts v = case break_struct ts v of [a,b,c] => (a,b,c) | _ => raise Break fun break4 ts v = case break_struct ts v of [a,b,c,d] => (a,b,c,d) | _ => raise Break fun break5 ts v = case break_struct ts v of [a,b,c,d,e] => (a,b,c,d,e) | _ => raise Break fun break6 ts v = case break_struct ts v of [a,b,c,d,e,f] => (a,b,c,d,e,f) | _ => raise Break fun break7 ts v = case break_struct ts v of [a,b,c,d,e,f,g] => (a,b,c,d,e,f,g) | _ => raise Break fun break8 ts v = case break_struct ts v of [a,b,c,d,e,f,g,h] => (a,b,c,d,e,f,g,h) | _ => raise Break fun break9 ts v = case break_struct ts v of [a,b,c,d,e,f,g,h,i] => (a,b,c,d,e,f,g,h,i) | _ => raise Break fun STRUCT2 (c1,c2) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val ctypes = [ctype1,ctype2] fun from v = let val (v1,v2) = break2 ctypes v in (from1 v1,from2 v2) end fun to (a,b) = make_struct (zip ctypes [to1 a,to2 b]) in mkConversion from to (Cstruct ctypes) end fun STRUCT3 (c1,c2,c3) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val ctypes = [ctype1,ctype2,ctype3] fun from v = let val (v1,v2,v3) = break3 ctypes v in (from1 v1,from2 v2,from3 v3) end fun to (a,b,c) = make_struct (zip ctypes [to1 a,to2 b,to3 c]) in mkConversion from to (Cstruct ctypes) end fun STRUCT4 (c1,c2,c3,c4) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val ctypes = [ctype1,ctype2,ctype3,ctype4] fun from v = let val (v1,v2,v3,v4) = break4 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4) end fun to (a,b,c,d) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d]) in mkConversion from to (Cstruct ctypes) end fun STRUCT5 (c1,c2,c3,c4,c5) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val (from5,to5,ctype5) = breakConversion c5 val ctypes = [ctype1,ctype2,ctype3,ctype4,ctype5] fun from v = let val (v1,v2,v3,v4,v5) = break5 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4,from5 v5) end fun to (a,b,c,d,e) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d,to5 e]) in mkConversion from to (Cstruct ctypes) end fun STRUCT6 (c1,c2,c3,c4,c5,c6) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val (from5,to5,ctype5) = breakConversion c5 val (from6,to6,ctype6) = breakConversion c6 val ctypes = [ctype1,ctype2,ctype3,ctype4,ctype5,ctype6] fun from v = let val (v1,v2,v3,v4,v5,v6) = break6 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4,from5 v5,from6 v6) end fun to (a,b,c,d,e,f) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d,to5 e,to6 f]) in mkConversion from to (Cstruct ctypes) end fun STRUCT7 (c1,c2,c3,c4,c5,c6,c7) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val (from5,to5,ctype5) = breakConversion c5 val (from6,to6,ctype6) = breakConversion c6 val (from7,to7,ctype7) = breakConversion c7 val ctypes = [ctype1,ctype2,ctype3,ctype4,ctype5,ctype6,ctype7] fun from v = let val (v1,v2,v3,v4,v5,v6,v7) = break7 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4,from5 v5,from6 v6,from7 v7) end fun to (a,b,c,d,e,f,g) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d,to5 e,to6 f,to7 g]) in mkConversion from to (Cstruct ctypes) end fun STRUCT8 (c1,c2,c3,c4,c5,c6,c7,c8) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val (from5,to5,ctype5) = breakConversion c5 val (from6,to6,ctype6) = breakConversion c6 val (from7,to7,ctype7) = breakConversion c7 val (from8,to8,ctype8) = breakConversion c8 val ctypes = [ctype1,ctype2,ctype3,ctype4,ctype5,ctype6,ctype7,ctype8] fun from v = let val (v1,v2,v3,v4,v5,v6,v7,v8) = break8 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4,from5 v5,from6 v6,from7 v7,from8 v8) end fun to (a,b,c,d,e,f,g,h) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d,to5 e,to6 f,to7 g,to8 h]) in mkConversion from to (Cstruct ctypes) end fun STRUCT9 (c1,c2,c3,c4,c5,c6,c7,c8,c9) = let val (from1,to1,ctype1) = breakConversion c1 val (from2,to2,ctype2) = breakConversion c2 val (from3,to3,ctype3) = breakConversion c3 val (from4,to4,ctype4) = breakConversion c4 val (from5,to5,ctype5) = breakConversion c5 val (from6,to6,ctype6) = breakConversion c6 val (from7,to7,ctype7) = breakConversion c7 val (from8,to8,ctype8) = breakConversion c8 val (from9,to9,ctype9) = breakConversion c9 val ctypes = [ctype1,ctype2,ctype3,ctype4,ctype5,ctype6,ctype7,ctype8,ctype9] fun from v = let val (v1,v2,v3,v4,v5,v6,v7,v8,v9) = break9 ctypes v in (from1 v1,from2 v2,from3 v3,from4 v4,from5 v5,from6 v6,from7 v7,from8 v8,from9 v9) end fun to (a,b,c,d,e,f,g,h,i) = make_struct (zip ctypes [to1 a,to2 b,to3 c,to4 d,to5 e,to6 f,to7 g,to8 h,to9 i]) in mkConversion from to (Cstruct ctypes) end fun FUNCTION0 () (cr: 'a Conversion) = let val (_, tor, ctyper) = breakConversion cr (* Convert the result type. *) fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" (* Construct a wrapper function. The argument is ignored and the result is converted into a vol.*) fun convF f _ = tor(f()) fun to (f: unit->'a) : vol = toCfunction [] ctyper (convF f) in mkConversion from to (Cfunction ([], ctyper)) end; fun PASCALFUNCTION0 () cr = let val (_, tor, ctyper) = breakConversion cr (* Convert the result type. *) fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f _ = tor(f()) fun to f = toPascalfunction [] ctyper (convF f) in mkConversion from to (Cfunction ([], ctyper)) end; fun FUNCTION1 c1 cr = let val (from1,_,ctype1) = breakConversion c1 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" (* The wrapper function. We need a single argument. *) fun convF f [a] = tor(f(from1 a)) | convF _ _ = raise Union.Never "arg mismatch" fun to f : vol = toCfunction [ctype1] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1], ctyper)) end; fun PASCALFUNCTION1 c1 cr = let val (from1,_,ctype1) = breakConversion c1 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a] = tor(f(from1 a)) | convF _ _ = raise Union.Never "arg mismatch" fun to f : vol = toPascalfunction [ctype1] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1], ctyper)) end; fun FUNCTION2 (c1, c2) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b] = tor(f(from1 a, from2 b)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toCfunction [ctype1, ctype2] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2], ctyper)) end; fun PASCALFUNCTION2 (c1, c2) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b] = tor(f(from1 a, from2 b)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toPascalfunction [ctype1, ctype2] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2], ctyper)) end; fun FUNCTION3 (c1, c2, c3) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (from3,_,ctype3) = breakConversion c3 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b,c] = tor(f(from1 a, from2 b, from3 c)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toCfunction [ctype1, ctype2, ctype3] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2, ctype3], ctyper)) end; fun PASCALFUNCTION3 (c1, c2, c3) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (from3,_,ctype3) = breakConversion c3 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b,c] = tor(f(from1 a, from2 b, from3 c)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toPascalfunction [ctype1, ctype2, ctype3] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2, ctype3], ctyper)) end; fun FUNCTION4 (c1, c2, c3, c4) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (from3,_,ctype3) = breakConversion c3 val (from4,_,ctype4) = breakConversion c4 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b,c,d] = tor(f(from1 a, from2 b, from3 c, from4 d)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toCfunction [ctype1, ctype2, ctype3, ctype4] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2, ctype3, ctype4], ctyper)) end; fun PASCALFUNCTION4 (c1, c2, c3, c4) cr = let val (from1,_,ctype1) = breakConversion c1 val (from2,_,ctype2) = breakConversion c2 val (from3,_,ctype3) = breakConversion c3 val (from4,_,ctype4) = breakConversion c4 val (_,tor,ctyper) = breakConversion cr fun from _ = raise Foreign "Conversion from C function to ML function is not implemented" fun convF f [a,b,c,d] = tor(f(from1 a, from2 b, from3 c, from4 d)) | convF _ _ = raise Union.Never "arg mismatch" fun to f = toPascalfunction [ctype1, ctype2, ctype3, ctype4] ctyper (convF f) in mkConversion from to (Cfunction ([ctype1, ctype2, ctype3, ctype4], ctyper)) end; (* val FUNCTION : 'a Conversion * 'b Conversion -> ( 'a -> 'b ) Conversion val PASCALFUNCTION : 'a Conversion * 'b Conversion -> ( 'a -> 'b ) Conversion *) end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/clean.sml0000644000175000017500000000326313204034553020561 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Clean up the name space by removing unnecessary declarations. *) val _ = List.app PolyML.Compiler.forgetSignature ["ForeignExceptionSig", "CallWithConvSig", "ConversionsSig", "ForeignDebugSig", "LowerLevelSig", "BehaviourRefsSig", "StructSig", "DispatchSig", "VolatileSig", "ForeignExceptionSig_Import", "OrigLowerLevelSig", "StructConversionalsSig", "UnionSig", "CtypeSig"]; val _ = List.app PolyML.Compiler.forgetStructure [ "LowerLevel", "ForeignDebug", "VolBasic", "Struct", "Dispatch", "Volatile", "Ctype", "StructConversionals", "CallWithConv", "BehaviourRefs", "ForeignException", "Conversions" ]; val _ = List.app PolyML.Compiler.forgetFunctor ["STRUCT", "CTYPE_SAVE_SIZEOF", "CINTERFACE", "CALL_WITH_CONV", "STRUCT_CONVERSIONALS", "CTYPE", "CONVERSIONS", "VOLS_THAT_HOLD_REFS", "VOL_BASIC"]; polyml-5.7.1/mlsource/extra/CInterface/CInterfaceSig.ML0000644000175000017500000003171413204034553021664 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CInterfaceSig = sig (********************************************************************** * ForeignException **********************************************************************) exception Foreign of string; (********************************************************************** * ForeignDebug **********************************************************************) val get_foreign_debug : unit -> int val set_foreign_debug : int -> unit (********************************************************************** * Ctype **********************************************************************) include CtypeSig (********************************************************************** * LowerLevel **********************************************************************) type vol val alloc : int -> Ctype -> vol val address : vol -> vol val deref : vol -> vol val offset : int -> Ctype -> vol -> vol val assign : Ctype -> vol -> vol -> unit val null : vol val max_volatile_creation_info_depth : int ref; val inform_about_symbol_reload : bool ref; val fillCstring : vol -> string -> unit val toCstring : string -> vol val toCchar : char -> vol val toCdouble : real -> vol val toCfloat : real -> vol val toCint : int -> vol val toClong : int -> vol val toCshort : int -> vol val toCuint : int -> vol val toCbytes : Word8Vector.vector -> vol (* These take an argument type list, the result type and an ML function and create a C function value which can be passed to a C function. Functions with Pascal calling conventions are used for Windows callbacks. *) val toCfunction : Ctype list -> Ctype -> (vol list -> vol) -> vol val toPascalfunction : Ctype list -> Ctype -> (vol list -> vol) -> vol (* We don't currently provide the reverse although we could probably use the call_sym function. val fromCfunction : vol -> (Ctype * vol) list -> Ctype -> vol val fromPascalfunction : vol -> (Ctype * vol) list -> Ctype -> vol *) val fromCstring : vol -> string val fromCchar : vol -> char val fromCdouble : vol -> real val fromCfloat : vol -> real val fromCint : vol -> int val fromClong : vol -> int val fromCshort : vol -> int val fromCuint : vol -> int val fromCbytes : vol * int -> Word8Vector.vector type dylib type sym val load_lib : string -> dylib val load_sym : dylib -> string -> sym val get_sym : string -> string -> sym val setFinal : sym -> vol -> unit val set_libPath : dylib -> string -> unit val get_libPath : dylib -> string val call_sym : sym -> (Ctype * vol) list -> Ctype -> vol structure Union : UnionSig val call_sym_and_convert : sym -> (Ctype, vol) Union.directedArg list -> Ctype Union.unionChoice -> (vol Union.union * vol Union.union list) val volOfSym : sym -> vol val mapSym : (vol -> 'a) -> sym -> 'a (********************************************************************** * CallWithConv **********************************************************************) type 'a Conversion; val mapConversion : ('a -> 'b) * ('b -> 'a) -> 'a Conversion -> 'b Conversion val mkConversion : (vol -> 'a) -> ('a -> vol) -> Ctype -> 'a Conversion val breakConversion : 'a Conversion -> (vol -> 'a) * ('a -> vol) * Ctype val global : sym -> 'a Conversion -> unit -> 'a val setGlobal:sym -> 'a Conversion -> 'a -> unit val call0 : sym -> unit -> 'a Conversion -> unit -> 'a val call1 : sym -> 'a Conversion -> 'b Conversion -> 'a -> 'b val call2 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion -> 'a * 'b -> 'c val call3 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> 'a * 'b * 'c -> 'd val call4 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> 'a * 'b * 'c * 'd -> 'e val call5 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion -> 'f Conversion -> 'a * 'b * 'c * 'd * 'e -> 'f val call6 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion -> 'g Conversion -> 'a * 'b * 'c * 'd * 'e * 'f -> 'g val call7 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion -> 'h Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g -> 'h val call8 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion -> 'i Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h -> 'i val call9 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion -> 'j Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i -> 'j val call10 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion -> 'k Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j -> 'k val call11 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion -> 'l Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k -> 'l val call12 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion -> 'm Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l -> 'm val call13 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion -> 'n Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm -> 'n val call14 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion * 'n Conversion -> 'p Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n -> 'p val call15 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion * 'j Conversion * 'k Conversion * 'l Conversion * 'm Conversion * 'n Conversion * 'p Conversion -> 'q Conversion -> 'a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j * 'k * 'l * 'm * 'n * 'p -> 'q val call1ret1 : sym -> unit -> 'a Conversion -> unit -> 'a val call2ret1 : sym -> 'a Conversion -> 'b Conversion -> 'a -> 'b val call2ret2 : sym -> unit -> 'a Conversion * 'b Conversion -> unit -> 'a * 'b val call3ret1 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion -> 'a * 'b -> 'c val call3ret2 : sym -> 'a Conversion -> 'b Conversion * 'c Conversion -> 'a -> 'b * 'c val call4ret1 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> 'a * 'b * 'c -> 'd val call4ret2 : sym -> 'a Conversion * 'b Conversion -> 'c Conversion * 'd Conversion -> 'a * 'b -> 'c * 'd val call4ret3 : sym -> 'a Conversion -> 'b Conversion * 'c Conversion * 'd Conversion -> 'a -> 'b * 'c * 'd val call5ret1 : sym -> 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> 'a * 'b * 'c * 'd -> 'e val call5ret2 : sym -> 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion * 'e Conversion -> 'a * 'b * 'c -> 'd * 'e (********************************************************************** * Struct **********************************************************************) val break_struct : Ctype list -> vol -> vol list val make_struct : (Ctype * vol) list -> vol (********************************************************************** * Conversions **********************************************************************) val CHAR : char Conversion val DOUBLE : real Conversion val FLOAT : real Conversion val INT : int Conversion val LONG : int Conversion val SHORT : int Conversion val STRING : string Conversion val VOID : unit Conversion val BOOL : bool Conversion val POINTER : vol Conversion val UINT : int Conversion val POINTERTO : 'a Conversion -> 'a Conversion val STRING' : string Conversion (********************************************************************** * StructConversionals **********************************************************************) val STRUCT2 : 'a Conversion * 'b Conversion -> ('a * 'b) Conversion val STRUCT3 : 'a Conversion * 'b Conversion * 'c Conversion -> ('a * 'b * 'c) Conversion val STRUCT4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> ('a * 'b * 'c * 'd) Conversion val STRUCT5 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion -> ('a * 'b * 'c * 'd * 'e) Conversion val STRUCT6 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion -> ('a * 'b * 'c * 'd * 'e * 'f) Conversion val STRUCT7 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g) Conversion val STRUCT8 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h) Conversion val STRUCT9 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i) Conversion (********************************************************************** * Function Conversionals **********************************************************************) val FUNCTION0 : unit -> 'a Conversion -> ( unit -> 'a ) Conversion val PASCALFUNCTION0 : unit -> 'a Conversion -> ( unit -> 'a ) Conversion val FUNCTION1 : 'a Conversion -> 'b Conversion -> ( 'a -> 'b ) Conversion val PASCALFUNCTION1 : 'a Conversion -> 'b Conversion -> ( 'a -> 'b ) Conversion val FUNCTION2 : 'a Conversion * 'b Conversion -> 'c Conversion -> ( 'a * 'b -> 'c) Conversion val PASCALFUNCTION2 : 'a Conversion * 'b Conversion -> 'c Conversion -> ( 'a * 'b -> 'c) Conversion val FUNCTION3 : 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> ( 'a * 'b * 'c -> 'd) Conversion val PASCALFUNCTION3 : 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> ( 'a * 'b * 'c -> 'd) Conversion val FUNCTION4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> ( 'a * 'b * 'c * 'd -> 'e) Conversion val PASCALFUNCTION4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> ( 'a * 'b * 'c * 'd -> 'e) Conversion end; polyml-5.7.1/mlsource/extra/CInterface/CtypeSig.ML0000644000175000017500000000271313204034553020742 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CtypeSig = sig type Ctype val Cchar : Ctype val Cdouble : Ctype val Cfloat : Ctype val Cint : Ctype val Clong : Ctype val Cshort : Ctype val Cuint : Ctype val Cpointer : Ctype -> Ctype val Cstruct : Ctype list -> Ctype val Cfunction : Ctype list * Ctype -> Ctype val Cvoid : Ctype val voidStar : Ctype exception IllegalUseOfVoid val sizeof : Ctype -> int val alignment : Ctype -> int val align : int -> Ctype -> int type RawCtype val makeRaw : Ctype -> RawCtype end; polyml-5.7.1/mlsource/extra/CInterface/Examples/0000755000175000017500000000000013204034553020534 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/Examples/NewForeignTest.sml0000644000175000017500000001036213204034553024156 0ustar daviddavid(* Example code for the updated foreign-function interface. Copyright David C.J. Matthews 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) open Foreign; val mylib = loadLibrary "Foreign"; (* Example of creating a conversion for a datatype. *) datatype intTree = NullTree | Node of {left: intTree, right: intTree, valu: int}; (* The corresponding C structure is typedef struct _tree { struct _tree *left, *right; int nValue; } *tree; *) local (* Start with the C structure. *) val treeNode = cStruct3(cPointer, cPointer, cInt) val {store=storeStruct, load=loadStruct, ctype = {size = sizeStruct, ...}, ... } = breakConversion treeNode in (* The following function builds a C data structure from an ML datatype. *) fun treeMake NullTree = Memory.null | treeMake(Node{left, right, valu}) = let val mem = Memory.malloc sizeStruct in ignore(storeStruct(mem, (treeMake left, treeMake right, valu))); mem end fun treeClear a = if a = Memory.null then () else let val (left, right, _) = loadStruct a in treeClear left; treeClear right; Memory.free a end fun treeStore(addr, tree) = let val mem = treeMake tree in Memory.setAddress(addr, 0w0, mem); (* The store function returns a function that frees the memory. *) fn () => treeClear mem end (* The inverse of treeStore. We don't actually use this in this example. *) fun treeGet a = if a = Memory.null then NullTree else let val (left, right, valu) = loadStruct a in Node{left=treeGet left, right=treeGet right, valu = valu } end fun treeLoad v = treeGet(Memory.getAddress(v, 0w0)) end; (* Build a conversion out of this. *) val cTree: intTree conversion = makeConversion { load = treeLoad, store = treeStore, ctype = LowLevel.cTypePointer }; val sumTree = buildCall1 (getSymbol mylib "SumTree", cTree, cInt); val aTree = Node{left=Node{left=NullTree, right=NullTree, valu=4}, right=Node{ left= Node{left=NullTree, right=NullTree, valu=3}, right=NullTree, valu=5}, valu = 7}; sumTree aTree; (* Example of returning a structure. *) val returnR2 = buildCall2 (getSymbol mylib "ReturnR2", (cInt, cInt), cStruct2(cInt, cInt)); returnR2(5,6); (* Example of passing and returning strings. *) val dupNString = buildCall2 (getSymbol mylib "DupNString", (cInt, cString), cString); dupNString (4, "hi"); (* Example of a callback function. *) fun f (i, j) = (PolyML.print(i, j); i+j); val fAsCFunction = buildClosure2(f, (cInt, cInt), cInt); val doAdd = buildCall2 (getSymbol mylib "MakeCallback", (cInt, cFunction: (int*int->int) closure conversion), cInt); doAdd(4, fAsCFunction); fun myCallback(a: int, b: char, c: real, d: real, e: int, f: Memory.voidStar) = ( PolyML.print(a, b, c, d, e); 99.0 ); local val myCallbackC = buildClosure6(myCallback, (cInt, cChar, cDouble, cFloat, cShort, cPointer), cDouble) val MakeCallback2 = buildCall1(getSymbol mylib "MakeCallback2", cFunction, cDouble) in val returnR3 = MakeCallback2 myCallbackC end; let val f = buildClosure1(fn i => print(Int.toString i), cInt, cVoid) val doit = buildCall2(getSymbol mylib "MakeCallback3", (cFunction, cInt), cVoid) in doit(f, 2) end; (* Call-by-reference. *) val r = ref 6; val updateArg = buildCall2 (getSymbol mylib "UpdateArg", (cInt, cStar cInt), cVoid); updateArg(5, r); (* Adds its first argument to the ref. *) !r; polyml-5.7.1/mlsource/extra/CInterface/Examples/ForeignTest.sml0000644000175000017500000001140013204034553023476 0ustar daviddavid(* Example code for a C-library accessible from ML using the CInterface structure. Copyright David C.J. Matthews 1999-2009 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) open CInterface; val mylib = CInterface.load_lib "Foreign"; (* Example of creating a conversion for a datatype. *) datatype intTree = NullTree | Node of {left: intTree, right: intTree, valu: int}; (* The corresponding C structure is typedef struct _tree { struct _tree *left, *right; int nValue; } *tree; *) local (* Start with the C structure. *) val TREENODE = STRUCT3(POINTER, POINTER, INT); val (unMakeStruct, mkStruct, structType) = breakConversion TREENODE; in (* The following function builds a C data structure from an ML datatype. *) fun tree2vol NullTree: vol = null | tree2vol (Node{left, right, valu}) = let (* Construct a struct from the values. *) val str = mkStruct(tree2vol left, tree2vol right, valu) (* Allocate a struct on the heap. *) val v = alloc 1 structType in (* Copy it over *) assign structType v str; (* Return the address of the heap area. *) address v end; (* The inverse of tree2vol. We don't actually use this in this example. *) fun vol2tree v = if fromClong v = 0 then NullTree else let val struc = deref v (* Get the structure itself from the pointer. *) val (left, right, valu) = unMakeStruct struc in Node{left=vol2tree left, right=vol2tree right, valu = valu } end end; (* Build a conversion out of this. *) val TREE = mkConversion vol2tree tree2vol voidStar; val sumTree = CInterface.call1 ( CInterface.load_sym mylib "SumTree") TREE INT; val aTree = Node{left=Node{left=NullTree, right=NullTree, valu=4}, right=Node{ left= Node{left=NullTree, right=NullTree, valu=3}, right=NullTree, valu=5}, valu = 7}; sumTree aTree; (* Example of returning a structure. *) val returnR2 = CInterface.call2 ( CInterface.load_sym mylib "ReturnR2") (CInterface.INT, CInterface.INT) (STRUCT2(CInterface.INT, CInterface.INT)); (* This function crashes the old version. Now fixed. *) returnR2(5,6); (* Example of passing and returning strings. *) val dupNString = CInterface.call2 (CInterface.load_sym mylib "DupNString") (CInterface.INT, CInterface.STRING) CInterface.STRING; dupNString (4, "hi"); (* Example of a callback function. *) fun f (i, j) = (PolyML.print(i, j); i+j); val doAdd = call2 (load_sym mylib "MakeCallback") (INT, FUNCTION2 (INT, INT) INT) INT; doAdd(4, f); (* Check that an exception is properly propagated. *) (* This doesn't work if the library has been compiled with GCC. Foreign.c is C code not C++ and the C++ exception mechanism won't propagate a C++ exception through C code. *) (* doAdd(4, fn _ => raise Fail "failed"); *) (* int a, char b, double c, float d, short e, int *f *) fun myCallback [v1, v2, v3, v4, v5, v6] = let val a = fromCint v1; val b = fromCchar v2; val c = fromCdouble v3; val d = fromCfloat v4; val e = fromCshort v5 (* f ? *) in PolyML.print(a, b, c, d, e); toCdouble 99.0 end | myCallback _ = toCint 1234; val myCbVol = toCfunction [Cint, Cchar, Cdouble, Cfloat, Cshort, Cpointer Cint] Cdouble myCallback; val returnR3 = call_sym (load_sym mylib "MakeCallback2") [(Cpointer Cint, myCbVol) ] Cdouble; fromCdouble returnR3; val doit = call2(load_sym mylib "MakeCallback3") (FUNCTION1 INT VOID, INT) VOID; doit(fn i => print(Int.toString i), 2); (* Test for finalisation. *) val allocateIt = call0 (load_sym mylib "AllocateIt") () POINTER; val v1 = allocateIt(); val v2 = allocateIt (); val final = load_sym mylib "FreeIt"; setFinal final v1; setFinal final v2; (* Activating the finalisers requires a full GC. *) val v1 = 0; (* The v1 object is no longer reachable. *) PolyML.fullGC(); val v2 = 0; (* The v2 object is no longer reachable. *) PolyML.fullGC(); polyml-5.7.1/mlsource/extra/CInterface/Examples/ForeignTest.c0000644000175000017500000000525513204034553023140 0ustar daviddavid/* Example code for a C-library accessible from ML using the CInterface structure. Copyright David C.J. Matthews 1999, 2009, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* Linux: cc -shared -o Foreign ForeignTest.c Windows: cl /MT ForeignTest.c /link /dll /out:Foreign.dll /def:Foreign.def Mac OS X : cc -dynamiclib -o Foreign.dylib ForeignTest.c */ #include #include #include /* Return a string duplicated n Times. */ char *DupNString(int n, char *str) { int nSize = strlen(str); char *res = malloc(n*nSize + 1); int i; *res = 0; for (i = 0; i < n; i++) strcat(res, str); return res; } typedef struct _tree { struct _tree *left, *right; int nValue; } *tree; int SumTree(tree t) { if (t == NULL) return 0; else return t->nValue + SumTree(t->left) + SumTree(t->right); } /* Tests to see whether small structures are returned specially. */ struct r2 { int n, m; }; struct r2 ReturnR2(int n, int m) { struct r2 ret; ret.n = n+1; ret.m = m+1; return ret; } /* Added. Callback function. */ typedef int (*INT_INT_CALLBACK) (int a, int b); int MakeCallback(int i, INT_INT_CALLBACK p) { return (*p)(i, 4) + (*p)(i+1, 5); } /* Another callback function. This tests the various argument types. */ typedef double (*DBL_CALLBACK) (int a, char b, double c, float d, short e, int *f); double MakeCallback2(DBL_CALLBACK p) { int x = 1; double y = p(12345, 'X', (double)1.414, (float)2.8, 44, &x); return y; } // Check that void results work for callbacks. void MakeCallback3(void(*mlcall)(int), int i) { mlcall(i+1); } /* Test for finalisation. */ void *AllocateIt() { void *p = malloc(1); printf("Allocated object at %p\n", p); fflush(stdout); return p; } void FreeIt(void *p) { printf("Freed object at %p\n", p); fflush(stdout); free(p); } /* Test for call-by-reference. Added in updated FFI. */ void UpdateArg(int i, int *p) { *p += i; } /* Test for returning a function. Added in updated FFI. */ static int acallBack(int q) { return q * 2; } typedef int (*CB)(int); void ReturnFn(CB *v) { *v = acallBack; } polyml-5.7.1/mlsource/extra/CInterface/Examples/Foreign.def0000644000175000017500000000026213204034553022605 0ustar daviddavid; Exports file for DLL LIBRARY "Foreign" EXPORTS DupNString SumTree ReturnR2 MakeCallback MakeCallback2 MakeCallback3 AllocateIt FreeIt UpdateArg ReturnFn polyml-5.7.1/mlsource/extra/CInterface/StructConversionals.ML0000644000175000017500000000211113204034553023235 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure StructConversionals = STRUCT_CONVERSIONALS (structure CallWithConv = CallWithConv structure Struct = Struct structure ForeignException = ForeignException structure LowerLevel = LowerLevel); polyml-5.7.1/mlsource/extra/CInterface/CTYPE_SAVE_SIZEOF.ML0000644000175000017500000000463413204034553022000 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*** This functor provides a wrapper around Ctype, which reduces the number of calls to Underlying.sizeof & Underlying.alignment by saving size & alignment information into each Ctype value. ***) functor CTYPE_SAVE_SIZEOF (Underlying : CtypeSig) : CtypeSig = struct open Underlying abstype Ctype = ctype of Underlying.Ctype * int * int with fun wrap ct = ctype (ct, Underlying.sizeof ct, Underlying.alignment ct) val Cvoid = ctype (Underlying.Cvoid, 0, 0); fun unpack (ctype (ct,_,_)) = ct; fun sizeof (ctype (_,size,_)) = size; fun alignment (ctype (_,_,alignment)) = alignment; end; val Cchar = wrap Underlying.Cchar; val Cdouble = wrap Underlying.Cdouble; val Cfloat = wrap Underlying.Cfloat; val Cint = wrap Underlying.Cint; val Clong = wrap Underlying.Clong; val Cuint = wrap Underlying.Cuint; val Cshort = wrap Underlying.Cshort; val voidStar = wrap Underlying.voidStar fun Cpointer t = wrap (Underlying.Cpointer (unpack t)); fun Cfunction(ts,t) = wrap (Underlying.Cfunction (map unpack ts, unpack t)); fun Cstruct ts = wrap (Underlying.Cstruct (map unpack ts)); fun align n t = Underlying.align n (unpack t); fun makeRaw t = Underlying.makeRaw (unpack t); local fun prettyCtype _ _ (_: Ctype) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyCtype end end; polyml-5.7.1/mlsource/extra/CInterface/StructConversionalsSig.ML0000644000175000017500000000626413204034553023715 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature StructConversionalsSig = sig type 'a Conversion val STRUCT2 : 'a Conversion * 'b Conversion -> ('a * 'b) Conversion val STRUCT3 : 'a Conversion * 'b Conversion * 'c Conversion -> ('a * 'b * 'c) Conversion val STRUCT4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> ('a * 'b * 'c * 'd) Conversion val STRUCT5 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion -> ('a * 'b * 'c * 'd * 'e) Conversion val STRUCT6 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion -> ('a * 'b * 'c * 'd * 'e * 'f) Conversion val STRUCT7 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g) Conversion val STRUCT8 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h) Conversion val STRUCT9 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion * 'e Conversion * 'f Conversion * 'g Conversion * 'h Conversion * 'i Conversion -> ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i) Conversion val FUNCTION0 : unit -> 'a Conversion -> ( unit -> 'a ) Conversion val PASCALFUNCTION0 : unit -> 'a Conversion -> ( unit -> 'a ) Conversion val FUNCTION1 : 'a Conversion -> 'b Conversion -> ( 'a -> 'b ) Conversion val PASCALFUNCTION1 : 'a Conversion -> 'b Conversion -> ( 'a -> 'b ) Conversion val FUNCTION2 : 'a Conversion * 'b Conversion -> 'c Conversion -> ( 'a * 'b -> 'c) Conversion val PASCALFUNCTION2 : 'a Conversion * 'b Conversion -> 'c Conversion -> ( 'a * 'b -> 'c) Conversion val FUNCTION3 : 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> ( 'a * 'b * 'c -> 'd) Conversion val PASCALFUNCTION3 : 'a Conversion * 'b Conversion * 'c Conversion -> 'd Conversion -> ( 'a * 'b * 'c -> 'd) Conversion val FUNCTION4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> ( 'a * 'b * 'c * 'd -> 'e) Conversion val PASCALFUNCTION4 : 'a Conversion * 'b Conversion * 'c Conversion * 'd Conversion -> 'e Conversion -> ( 'a * 'b * 'c * 'd -> 'e) Conversion end polyml-5.7.1/mlsource/extra/CInterface/ForeignDebugSig.ML0000644000175000017500000000167713204034553022226 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ForeignDebugSig = sig val get_foreign_debug : unit -> int val set_foreign_debug : int -> unit end; polyml-5.7.1/mlsource/extra/CInterface/StructSig.ML0000644000175000017500000000200713204034553021136 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature StructSig = sig type vol structure Ctype : CtypeSig val break_struct : Ctype.Ctype list -> vol -> vol list val make_struct : (Ctype.Ctype * vol) list -> vol end; polyml-5.7.1/mlsource/extra/CInterface/LowerLevelSig.ML0000644000175000017500000000611313204034553021734 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature LowerLevelSig = sig (* The first part of this is copied from VolatileSig *) type vol structure Ctype : CtypeSig structure BehaviourRefs : BehaviourRefsSig (* val load_lib : string -> vol val load_sym : vol -> string -> vol structure Union : UnionSig val call_sym_and_convert : vol -> (Ctype.Ctype, vol) Union.directedArg list -> Ctype.Ctype Union.unionChoice -> (vol Union.union * vol Union.union list) *) val alloc : int -> Ctype.Ctype -> vol val address : vol -> vol val deref : vol -> vol val offset : int -> Ctype.Ctype -> vol -> vol val assign : Ctype.Ctype -> vol -> vol -> unit val toCchar : char -> vol val toCdouble : real -> vol val toCfloat : real -> vol val toCint : int -> vol val toClong : int -> vol val toCshort : int -> vol val toCuint : int -> vol val fromCchar : vol -> char val fromCdouble : vol -> real val fromCfloat : vol -> real val fromCint : vol -> int val fromClong : vol -> int val fromCshort : vol -> int val fromCuint : vol -> int val fillCstring : vol -> string -> unit val toCstring : string -> vol val fromCstring : vol -> string val toCbytes : Word8Vector.vector -> vol val fromCbytes : vol * int -> Word8Vector.vector val toCfunction : Ctype.Ctype list -> Ctype.Ctype -> (vol list -> vol) -> vol val toPascalfunction : Ctype.Ctype list -> Ctype.Ctype -> (vol list -> vol) -> vol type dylib type sym (* overwite specifications in VolatileSig *) val load_lib : string -> dylib val load_sym : dylib -> string -> sym val get_sym : string -> string -> sym val setFinal : sym -> vol -> unit val null : vol val set_libPath : dylib -> string -> unit val get_libPath : dylib -> string structure Union : UnionSig val call_sym_and_convert : sym -> (Ctype.Ctype, vol) Union.directedArg list -> Ctype.Ctype Union.unionChoice -> (vol Union.union * vol Union.union list) val volOfSym : sym -> vol val mapSym : (vol -> 'a) -> sym -> 'a (*end*) end; polyml-5.7.1/mlsource/extra/CInterface/UnionSig.ML0000644000175000017500000001002413204034553020740 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*** Defines datatypes used to communicate with new primitive: call_sym_and_convert. ***) signature UnionSig = sig (* raised if a destructor is given the wrong argument *) exception Never of string; (* datatype 'a union = Vol of 'a | Char of string | Double of real | Float of real | Int of int | Long of int | Short of int | String of string; *) type 'a union val Vol : 'a -> 'a union; val Char : char -> 'a union; val Double : real -> 'a union; val Float : real -> 'a union; val Int : int -> 'a union; val Long : int -> 'a union; val Short : int -> 'a union; val String : string -> 'a union; val Uint : int -> 'a union; val isVol : 'a union -> bool; val isChar : 'a union -> bool; val isDouble : 'a union -> bool; val isFloat : 'a union -> bool; val isInt : 'a union -> bool; val isLong : 'a union -> bool; val isShort : 'a union -> bool; val isString : 'a union -> bool; val isUint : 'a union -> bool; val deVol : 'a union -> 'a; val deChar : 'a union -> char; val deDouble : 'a union -> real; val deFloat : 'a union -> real; val deInt : 'a union -> int; val deLong : 'a union -> int; val deShort : 'a union -> int; val deString : 'a union -> string; val deUint : 'a union -> int; (* ... datatype 'ctype unionChoice = chooseVol of 'ctype | chooseChar | chooseDouble | chooseFloat | chooseInt | chooseLong | chooseShort | chooseString; ... *) type 'a unionChoice; val chooseChar : 'a unionChoice; val chooseDouble : 'a unionChoice; val chooseFloat : 'a unionChoice; val chooseInt : 'a unionChoice; val chooseLong : 'a unionChoice; val chooseShort : 'a unionChoice; val chooseString : 'a unionChoice; val chooseVol : 'a -> 'a unionChoice; val chooseUint : 'a unionChoice; val isChooseChar : 'a unionChoice -> bool; val isChooseDouble : 'a unionChoice -> bool; val isChooseFloat : 'a unionChoice -> bool; val isChooseInt : 'a unionChoice -> bool; val isChooseLong : 'a unionChoice -> bool; val isChooseShort : 'a unionChoice -> bool; val isChooseString : 'a unionChoice -> bool; val isChooseVol : 'a unionChoice -> bool; val isChooseUint : 'a unionChoice -> bool; val deChooseVol : 'a unionChoice -> 'a; (* ... datatype ('ctype, 'vol) directedArg = In of ('ctype * 'vol) union | Out of 'ctype unionChoice; ... *) type ('a,'b) directedArg; val In : ('a * 'b) union -> ('a,'b) directedArg; val Out : 'a unionChoice -> ('a,'b) directedArg; val isIn : ('a,'b) directedArg -> bool; val isOut : ('a,'b) directedArg -> bool ; val deIn : ('a,'b) directedArg -> ('a * 'b) union; val deOut : ('a,'b) directedArg -> 'a unionChoice; val mapUnion : ('a -> 'b) -> 'a union -> 'b union val mapUnionChoice : ('a -> 'b) -> 'a unionChoice -> 'b unionChoice val mapDirectedArg : ('a -> 'b) -> ('c -> 'd) -> ('a, 'c) directedArg -> ('b, 'd) directedArg end; polyml-5.7.1/mlsource/extra/CInterface/ForeignException.ML0000644000175000017500000000167213204034553022466 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ForeignException : ForeignExceptionSig = struct exception Foreign = RunCall.Foreign end; polyml-5.7.1/mlsource/extra/CInterface/CINTERFACE.ML0000644000175000017500000000351213204034553020614 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CINTERFACE (structure ForeignException : ForeignExceptionSig structure ForeignDebug : ForeignDebugSig structure LowerLevel : OrigLowerLevelSig structure CallWithConv : CallWithConvSig structure Struct : StructSig structure Conversions : ConversionsSig structure StructConversionals : StructConversionalsSig sharing LowerLevel.Ctype = CallWithConv.Ctype = Struct.Ctype sharing type LowerLevel.vol = CallWithConv.vol = Struct.vol = Conversions.vol sharing type LowerLevel.sym = CallWithConv.sym sharing type CallWithConv.Conversion = Conversions.Conversion = StructConversionals.Conversion ) : CInterfaceSig = struct open ForeignException open ForeignDebug open LowerLevel open LowerLevel.BehaviourRefs open LowerLevel.Ctype open CallWithConv open Struct open Conversions open StructConversionals end; polyml-5.7.1/mlsource/extra/CInterface/Dispatch.ML0000644000175000017500000003503613204034553020756 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Dispatch: DispatchSig = struct abstype machineWord = MachineWord of word with val toWord : 'a -> machineWord = RunCall.unsafeCast; val isShortInt : machineWord -> bool = RunCall.isShort; val toShortInt : machineWord -> int = RunCall.unsafeCast; (* used for tags *) val unsafeCast : machineWord -> 'a = RunCall.unsafeCast; (* used for data values *) end local fun prettyWord _ _ (_: machineWord) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyWord end structure Union : UnionSig = struct (*** Defines datatypes used to communicate with new primitive: call_sym_and_convert. ***) exception Never of string; (* Used for failed assertions. *) fun never s = raise Never s; (* Don't use datatypes because their representations might change. Tags were originally allocated in alphabetical order, but ... datatype 'a union = Char of string | Double of real | Float of real | Int of int | Long of int | Short of int | String of string; | Vol of 'a ... *) (* "union" is the type of a raw value with the type information. *) (* we can't make this an abstype, because that might change the representation! *) type 'a union = machineWord * int; fun Char (x:char) : 'a union = (toWord x,1); fun Double (x:real) : 'a union = (toWord x,2); fun Float (x:real) : 'a union = (toWord x,3); fun Int (x:int) : 'a union = (toWord x,4); fun Long (x:int) : 'a union = (toWord x,5); fun Short (x:int) : 'a union = (toWord x,6); fun String (x:string) : 'a union = (toWord x,7); fun Vol (x:'a) : 'a union = (toWord x,8); fun Uint (x:int) : 'a union = (toWord x,9); fun isChar ((_,1) : 'a union) : bool = true | isChar _ = false; fun isDouble ((_,2) : 'a union) : bool = true | isDouble _ = false; fun isFloat ((_,3) : 'a union) : bool = true | isFloat _ = false; fun isInt ((_,4) : 'a union) : bool = true | isInt _ = false; fun isLong ((_,5) : 'a union) : bool = true | isLong _ = false; fun isShort ((_,6) : 'a union) : bool = true | isShort _ = false; fun isString ((_,7) : 'a union) : bool = true | isString _ = false; fun isVol ((_,8) : 'a union) : bool = true | isVol _ = false; fun isUint ((_,9) : 'a union) : bool = true | isUint _ = false; fun deChar ((x,1) : 'a union) : char = unsafeCast x | deChar _ = never "deChar"; fun deDouble ((x,2) : 'a union) : real = unsafeCast x | deDouble _ = never "deDouble"; fun deFloat ((x,3) : 'a union) : real = unsafeCast x | deFloat _ = never "deFloat"; fun deInt ((x,4) : 'a union) : int = unsafeCast x | deInt _ = never "deInt"; fun deLong ((x,5) : 'a union) : int = unsafeCast x | deLong _ = never "deLong"; fun deShort ((x,6) : 'a union) : int = unsafeCast x | deShort _ = never "deShort"; fun deString ((x,7) : 'a union) : string = unsafeCast x | deString _ = never "deString"; fun deVol ((x,8) : 'a union) : 'a = unsafeCast x | deVol _ = never "deVol"; fun deUint ((x,9) : 'a union) : int = unsafeCast x | deUint _ = never "deInt"; (* ... datatype 'a unionChoice = chooseChar | chooseDouble | chooseFloat | chooseInt | chooseLong | chooseShort | chooseString; | chooseVol of 'a ... *) (* unionChoice is the type information used when we want to indicate the type of a result. *) type 'a unionChoice = machineWord; local (* DCJM 25/3/00. This is a more complicated in ML97 than the original ML90. *) val w1: machineWord = toWord 1 and w2: machineWord = toWord 2 and w3: machineWord = toWord 3 and w4: machineWord = toWord 4 and w5: machineWord = toWord 5 and w6: machineWord = toWord 6 and w7: machineWord = toWord 7 and w9: machineWord = toWord 9 in val chooseChar : 'a unionChoice = w1; val chooseDouble : 'a unionChoice = w2; val chooseFloat : 'a unionChoice = w3; val chooseInt : 'a unionChoice = w4; val chooseLong : 'a unionChoice = w5; val chooseShort : 'a unionChoice = w6; val chooseString : 'a unionChoice = w7; val chooseUint : 'a unionChoice = w9; end; (* DCJM 8/10/99. This originally said simply {1=x} presumably with the intention of creating a single boxed object. That doesn't work any longer. Add an extra field to ensure that it's boxed. (We may be able to get the effect we want using datatype 'a t = A | B of 'a ) *) val chooseVol : 'a -> 'a unionChoice = fn x => toWord {1 = x, 2 = 99}; fun isChooseChar (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 1; fun isChooseDouble (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 2; fun isChooseFloat (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 3; fun isChooseInt (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 4; fun isChooseLong (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 5; fun isChooseShort (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 6; fun isChooseString (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 7; fun isChooseUint (x : 'a unionChoice) : bool = isShortInt x andalso toShortInt x = 9; fun isChooseVol (x : 'a unionChoice) : bool = not (isShortInt x); (* needed? *) (* DCJM 8/10/99. This original simply said { 1=y } but that no longer works. Changed so that it definitely indirects. *) fun deChooseVol (x : 'a unionChoice) : 'a = if not (isShortInt x) then (case unsafeCast x of {1 = y, ...}:'a * 'a => y) else never "deChooseVol"; (* directedArg is used to encode either an "in" parameter or an "out" parameter. *) (* ... datatype ('a, 'b) directedArg = In of ('a * 'b) union | Out of 'a unionChoice; ... *) type ('a,'b) directedArg = machineWord * int; val In : ('a * 'b) union -> ('a,'b) directedArg = fn x => (toWord x,1); val Out : 'a unionChoice -> ('a,'b) directedArg = fn x => (toWord x,2); val isIn : ('a,'b) directedArg -> bool = fn (_,1) => true | _ => false val isOut : ('a,'b) directedArg -> bool = fn (_,2) => true | _ => false val deIn : ('a,'b) directedArg -> ('a * 'b) union = fn (x,1) => unsafeCast x | _ => never "deIn" val deOut : ('a,'b) directedArg -> 'a unionChoice = fn (x,2) => unsafeCast x | _ => never "deOut" (* ... fun mapUnion f union = case union of Vol x => Vol (f x) | Char x => Char x | Double x => Double x | Float x => Float x | Int x => Int x | Short x => Short x | Long x => Long x | String x => String x ... *) fun mapUnion f (x : 'a union) = if isVol x then Vol (f (deVol x)) else x; (* ... fun mapUnionChoice f choice = case choice of chooseVol x => chooseVol (f x) | chooseChar => chooseChar | chooseDouble => chooseDouble | chooseFloat => chooseFloat | chooseInt => chooseInt | chooseShort => chooseShort | chooseLong => chooseLong | chooseString => chooseString ... *) fun mapUnionChoice f (x : 'a unionChoice) = if isChooseVol x then chooseVol (f (deChooseVol x)) else x; (* ... fun mapDirectedArg f g arg = case arg of In union => In (mapUnion (fn (ctype, vol) => (f ctype, g vol)) union) | Out choice => Out (mapUnionChoice f choice) ... *) fun mapDirectedArg f g (x : ('a,'b) directedArg) = if isIn x then In (mapUnion (fn (ctype, vol) => (f ctype, g vol)) (deIn x)) else Out (mapUnionChoice f (deOut x)) end; (* Don't use datatype because representation may change ... datatype RawCtype = Cchar | Cdouble | Cfloat | Cint | Clong | Cpointer | Cshort | Cstruct of int ... *) (* DCJM 23/3/04. This provides the interface to foreign.c in the run-time system. The representation is shared with that code. *) type RawCtype = machineWord; val Cchar = toWord 1; val Cdouble = toWord 2; val Cfloat = toWord 3; val Cint = toWord 4; val Clong = toWord 5; val Cpointer = toWord 6; val Cshort = toWord 7; val Cuint = toWord 8; (* The above are all tagged values. A struct is represented by an untagged value which is a vector of types. *) fun Cstruct (elements: RawCtype list) = toWord(Vector.fromList elements) abstype rawvol = rawvol with end; (* Purely abstract type. *) local fun prettyVol _ _ (_: rawvol) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyVol end local val oldForeignGeneralCall = RunCall.rtsCallFull2 "PolyForeignGeneral" fun oldForeignGeneral(code: int, arg: 'a): 'b = RunCall.unsafeCast(oldForeignGeneralCall(RunCall.unsafeCast(code, arg))) in fun foreign code args = oldForeignGeneral(code:int,args) end local val dispatch_index = ref 0; in fun next currier = let val f = currier (foreign (!dispatch_index)) in dispatch_index := 1 + !dispatch_index; f end end (* Curry functions *) fun one f = f (* eta-reduced SPF 19/10/94 *) fun two f x y = f (x,y) fun three f x y z = f (x,y,z) (* The order of these declarations is critical - DO NOT CHANGE *) val get_foreign_debug = next(one); val set_foreign_debug = next(one); val load_lib = next(one); val load_sym = next(two); (* DCJM 7/4/04. It took me a while to figure out what was going on since I didn't have any documentation. There were two versions of call_sym: call_sym_origCversion and call_sym_and_convert. The older version, call_sym_origCversion, took three parameters: sym, args and retChoice. "sym" is the function to call, "args" is a list of pairs of type info (as a code) and values and "retChoice" indicates the type of the result. The result of this function is passed back as a vol. The newer version, call_sym_and_convert, also takes three parameters: sym, args and retChoice. "sym" and "retChoice" are the same as the previous version but "args" is now a list of entries which may be either "in" parameters which are the same as before or "out" parameters where only the type is supplied (since an "out" parameter doesn't have a value before the function is called). The result is now a pair where the first component is the function result as before and the second component the list of the values of the "out" parameters. The newer version does all the conversion of ML arguments into C values and of the result of the C function back into ML as part of a single RTS call whereas the older version required multiple RTS calls. *) val call_sym_and_convert = next(three); val alloc = next(one); (* Different name from that in foreign.c *) val address = next(one); val deref = next(one); val offset = next(two); val assign = next(three); val sizeof = next(one); (* Different name from that in foreign.c *) val alignment = next(one); val toCchar = next(one); val fromCchar = next(one); val toCdouble = next(one); val fromCdouble = next(one); val toCfloat = next(one); val fromCfloat = next(one); val toCint = next(one); val fromCint = next(one); val toClong = next(one); val fromClong = next(one); val toCshort = next(one); val fromCshort = next(one); val fillCstring = next(two); val toCstring = next(one); val fromCstring = next(one); val toCuint = next(one); (* Added DCJM 27/5/01 *) val fromCuint = next(one); (* Added DCJM 27/5/01 *) val toCbytes = next(one); (* Added DCJM 29/6/01 *) val fromCbytes = next(one); (* Added DCJM 29/6/01 *) (* Note: fromCbytes takes a pair. *) val toCfunction = next(three);(* Added DCJM 7/4/04 *) val toPascalfunction = next(three);(* Added DCJM 7/4/04 *) val setFinal = next(two); (* Added DCJM 2/8/09. *) val null = next(one) () (* Added DCJM 16/11/11. *) end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/Volatile/0000755000175000017500000000000013204034553020535 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/Volatile/ml_bind.ML0000644000175000017500000000170713204034553022400 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Volatile = VOLS_THAT_HOLD_REFS (structure Underlying = VolBasic structure ForeignException = ForeignException); polyml-5.7.1/mlsource/extra/CInterface/Volatile/Volatile.ML0000644000175000017500000002152613204034553022554 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*** Implementaion of a wrapper for the raw C programming primitives, which provides the means for holding onto ML objects to avoid GC. Also Convert between Ctype & RawCtype where necessary. ***) signature VOLATILE_SIG = sig type vol type Ctype val load_lib : string -> vol val load_sym : vol -> string -> vol val call_sym : vol -> (Ctype * vol) list -> Ctype -> vol val alloc : int -> Ctype -> vol val address : vol -> vol val deref : vol -> vol val offset : int -> Ctype -> vol -> vol val assign : Ctype -> vol -> vol -> unit val toCchar : string -> vol val toCdouble : real -> vol val toCfloat : real -> vol val toCint : int -> vol val toClong : int -> vol val toCshort : int -> vol val toCuint : int -> vol val fromCchar : vol -> string val fromCdouble : vol -> real val fromCfloat : vol -> real val fromCint : vol -> int val fromClong : vol -> int val fromCshort : vol -> int val fromCuint : vol -> int end signature DISPATCH_SIG = sig type rawvol type RawCtype val load_lib : string -> rawvol val load_sym : rawvol -> string -> rawvol val call_sym : rawvol -> (RawCtype * rawvol) list -> RawCtype -> rawvol val alloc : int -> rawvol val address : rawvol -> rawvol val deref : rawvol -> rawvol val offset : rawvol -> int -> rawvol val assign : rawvol -> rawvol -> int -> unit val toCchar : string -> rawvol val toCdouble : real -> rawvol val toCfloat : real -> rawvol val toCint : int -> rawvol val toClong : int -> rawvol val toCshort : int -> rawvol val fromCchar : rawvol -> string val fromCdouble : rawvol -> real val fromCfloat : rawvol -> real val fromCint : rawvol -> int val fromClong : rawvol -> int val fromCshort : rawvol -> int end; signature RAW_CTYPE_SIG = sig datatype RawCtype = Cchar | Cdouble | Cfloat | Cint | Clong | Cpointer | Cshort | Cuint | Cstruct of RawCtype list end; signature CTYPE_SIG = sig datatype Ctype = Cchar | Cdouble | Cfloat | Cint | Clong | Cshort | Cuint | Cpointer of Ctype | Cstruct of Ctype list | Cvoid val sizeof : Ctype -> int end; signature FOREIGN_EXCEPTION_SIG = sig exception Foreign of string end; (********************************************************************** * * Functor Application * **********************************************************************) functor VOLATILE (structure Dispatch : DISPATCH_SIG structure RawCtype : RAW_CTYPE_SIG structure Ctype : CTYPE_SIG structure ForeignException : FOREIGN_EXCEPTION_SIG sharing type Dispatch.RawCtype = RawCtype.RawCtype ) : VOLATILE_SIG = struct (*** Make just type rawvol visible ***) local structure Rawvol : sig type rawvol end = Dispatch in open Rawvol end open Ctype open ForeignException (*..... datatype owner = Owner of rawvol * dependancy ref list and vol = Vol of rawvol * dependancy where type dependancy = (int * owner) option .....*) (* Local version of option *) datatype 'a option = Some of 'a | None; datatype owner = Owner of rawvol * (int * owner) option ref list abstype vol = Vol of rawvol * (int * owner) option with fun thevol (Vol (v,_)) = v fun depends (Vol (_,x)) = x val vol = Vol end local fun prettyVol _ _ (m: vol) = PolyML.PrettyString "?" in val () = PolyML.addPrettyPrinter prettyVol end val PointerSize = 4 (* DCJM: That should be obtained from bytes_per_word. *) fun copy n x = (****** * Make a list containing n elements all equal to x. ******) let fun copy' 0 acc = acc | copy' n acc = copy' (n-1) (x::acc) in if n <= 0 then [] else copy' n [] end fun drop 0 xs = xs | drop _ [] = [] | drop n (_::xs) = drop (n-1) xs; fun dependencies g = case depends g of None => [] | Some(i,Owner(_,refs)) => if i mod PointerSize = 0 then drop (i div PointerSize) refs else [] fun selfOwner v deps = (****** * Create a vol that `owns' itself, with depndancies "deps". ******) vol (v,Some(0,Owner(v,deps))) (*********************************************************************** a = alloc(n) ***********************************************************************) fun alloc n ctype = let val m = n * sizeof ctype val v = Dispatch.alloc m in selfOwner v (map ref (copy (m div PointerSize) None)) end (*********************************************************************** a = &b ***********************************************************************) fun address g = let val v = Dispatch.address (thevol g) in selfOwner v [ref (depends g)] end (*********************************************************************** a = *b ***********************************************************************) fun deref g = vol (Dispatch.deref (thevol g), case (dependencies g) of [] => None | (r::_) => !r) (*********************************************************************** a = b.X (offset n objects of type ctype) [*a = ( char* )&b + n] ***********************************************************************) fun offset n ctype g = let val m = n * sizeof ctype in vol (Dispatch.offset (thevol g) m, case depends g of None => None | Some (i,x) => Some (i+m, x)) end (*********************************************************************** a := b (n bytes) ***********************************************************************) fun copyRefs 0 _ _ = () | copyRefs n (g::gs) (h::hs) = (g := !h; copyRefs (n-1) gs hs) | copyRefs _ _ _ = () fun assign ctype g h = let val n = sizeof ctype in (copyRefs (n div 4) (dependencies g) (dependencies h); Dispatch.assign (thevol g) (thevol h) n) end (********************************************************************** From / To C values **********************************************************************) fun makeVol v = selfOwner v [] fun load_lib s = makeVol (Dispatch.load_lib s) handle Foreign mes => raise (Foreign ("load_lib "^s^": "^mes)) fun load_sym g s = makeVol (Dispatch.load_sym (thevol g) s) handle Foreign mes => raise (Foreign ("load_sym "^s^": "^mes)) fun convertRawCtype Cchar = RawCtype.Cchar | convertRawCtype Cdouble = RawCtype.Cdouble | convertRawCtype Cfloat = RawCtype.Cfloat | convertRawCtype Cint = RawCtype.Cint | convertRawCtype Clong = RawCtype.Clong | convertRawCtype Cshort = RawCtype.Cshort | convertRawCtype Cuint = RawCtype.Cuint | convertRawCtype (Cpointer _) = RawCtype.Cpointer | convertRawCtype (Cstruct ts) = RawCtype.Cstruct (map convertRawCtype ts) | convertRawCtype Cvoid = RawCtype.Cint (*hack*) fun call_sym g args rt = makeVol (Dispatch.call_sym (thevol g) (map (fn (t,g) => (convertRawCtype t,thevol g)) args) (convertRawCtype rt)) val toCchar = makeVol o Dispatch.toCchar val toCdouble = makeVol o Dispatch.toCdouble val toCfloat = makeVol o Dispatch.toCfloat val toCint = makeVol o Dispatch.toCint val toClong = makeVol o Dispatch.toClong val toCshort = makeVol o Dispatch.toCshort val toCuint = makeVol o Dispatch.toCuint val fromCchar = Dispatch.fromCchar o thevol val fromCdouble = Dispatch.fromCdouble o thevol val fromCfloat = Dispatch.fromCfloat o thevol val fromCint = Dispatch.fromCint o thevol val fromClong = Dispatch.fromClong o thevol val fromCshort = Dispatch.fromCshort o thevol val fromCuint = Dispatch.fromCuint o thevol end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/Conversions/0000755000175000017500000000000013204034553021266 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/Conversions/CONVERSIONS.ML0000644000175000017500000000526413204034553023337 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (********************************************************************** * Import Signatures **********************************************************************) signature ForeignExceptionSig_Import = sig val Foreign : string -> exn end; (********************************************************************** * Functor Definition **********************************************************************) functor CONVERSIONS ( structure LowerLevel : LowerLevelSig structure CallWithConv : CallWithConvSig structure ForeignException : ForeignExceptionSig_Import sharing type LowerLevel.vol = CallWithConv.vol sharing LowerLevel.Ctype = CallWithConv.Ctype ) : ConversionsSig = struct open LowerLevel; open LowerLevel.Ctype; open CallWithConv; open ForeignException; (* Generally we don't want to convert a unit value into a void except in the case when we're returning a void result from a callback. Just return zero in that case. *) val VOID = mkConversion (fn _ => ()) (fn () => toCint 0) Cvoid local fun int2bool 0 = false | int2bool _ = true fun bool2int false = 0 | bool2int true = 1 in val BOOL = mapConversion (int2bool,bool2int) INT; end fun ID x = x; val POINTER = mkConversion ID ID (Cpointer Cvoid) fun POINTERTO conv = let val (from,to,ctype) = breakConversion conv in mkConversion (from o deref) (address o to) (Cpointer ctype) end; (*** The conversion STRING' is Like STRING conversion, except when converting from C to ML, it also copes with NULL pointers. (However, the ML string created is identical to the ML string created when converting a pointer to a null.) ***) val STRING' = mkConversion (fn v => if fromCint v = 0 then "" else fromCstring v) toCstring (Cpointer Cchar); end (* struct *) polyml-5.7.1/mlsource/extra/CInterface/Conversions/ml_bind.ML0000644000175000017500000000201413204034553023121 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Conversions = CONVERSIONS (structure LowerLevel = LowerLevel structure CallWithConv = CallWithConv structure ForeignException = ForeignException); polyml-5.7.1/mlsource/extra/CInterface/VolatileSig.ML0000644000175000017500000000474613204034553021445 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* All volatile implementations must have this signature *) signature VolatileSig = sig type vol structure Ctype : CtypeSig structure BehaviourRefs : BehaviourRefsSig val load_lib : string -> vol val load_sym : vol -> string -> vol structure Union : UnionSig val call_sym_and_convert : vol -> (Ctype.Ctype, vol) Union.directedArg list -> Ctype.Ctype Union.unionChoice -> (vol Union.union * vol Union.union list) val alloc : int -> Ctype.Ctype -> vol val address : vol -> vol val deref : vol -> vol val offset : int -> Ctype.Ctype -> vol -> vol val assign : Ctype.Ctype -> vol -> vol -> unit val toCchar : char -> vol val toCdouble : real -> vol val toCfloat : real -> vol val toCint : int -> vol val toClong : int -> vol val toCshort : int -> vol val toCuint : int -> vol val fromCchar : vol -> char val fromCdouble : vol -> real val fromCfloat : vol -> real val fromCint : vol -> int val fromClong : vol -> int val fromCshort : vol -> int val fromCuint : vol -> int val fillCstring : vol -> string -> unit val toCstring : string -> vol val fromCstring : vol -> string val toCbytes : Word8Vector.vector -> vol val fromCbytes : vol * int -> Word8Vector.vector val toCfunction : Ctype.Ctype list -> Ctype.Ctype -> (vol list -> vol) -> vol val toPascalfunction : Ctype.Ctype list -> Ctype.Ctype -> (vol list -> vol) -> vol val setFinal : vol -> vol -> unit val null : vol end; polyml-5.7.1/mlsource/extra/CInterface/VolBasic.ML0000644000175000017500000000174013204034553020714 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure VolBasic = VOL_BASIC(structure Dispatch = Dispatch structure BehaviourRefs = BehaviourRefs structure Ctype = Ctype); polyml-5.7.1/mlsource/extra/CInterface/ForeignExceptionSig.ML0000644000175000017500000000162113204034553023123 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ForeignExceptionSig = sig exception Foreign of string end; polyml-5.7.1/mlsource/extra/CInterface/ConversionsSig.ML0000644000175000017500000000211513204034553022162 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ConversionsSig = sig type 'a Conversion type vol val VOID : unit Conversion val BOOL : bool Conversion val POINTER : vol Conversion val POINTERTO : 'a Conversion -> 'a Conversion val STRING' : string Conversion end polyml-5.7.1/mlsource/extra/CInterface/Struct/0000755000175000017500000000000013204034553020242 5ustar daviddavidpolyml-5.7.1/mlsource/extra/CInterface/Struct/ml_bind.ML0000644000175000017500000000161113204034553022077 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Struct = STRUCT(structure LowerLevel = LowerLevel); polyml-5.7.1/mlsource/extra/CInterface/Struct/STRUCT.ML0000644000175000017500000000373113204034553021524 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (********************************************************************** * * Functor Definition * **********************************************************************) functor STRUCT (structure LowerLevel : LowerLevelSig) : StructSig = struct open LowerLevel open Ctype local fun offsets _ [] = [] | offsets acc (t::ts) = let val pos = align acc t in pos :: offsets (pos + sizeof t) ts end in val offsets = offsets 0 end exception Zip; fun zip [] [] = [] | zip (x::xs) (y::ys) = (x,y) :: zip xs ys | zip _ _ = raise Zip; fun unzip [] = ([],[]) | unzip ((x,y)::xys) = let val (xs,ys) = unzip xys in (x::xs,y::ys) end; fun assigns (t::ts) (l::ls) (r::rs) = (assign t l r; assigns ts ls rs) | assigns _ _ _ = (); fun make_struct xs = let val (types,values) = unzip xs val space = alloc 1 (Cstruct types) val locations = map (fn n => offset n Cchar space) (offsets types) in assigns types locations values; space end fun break_struct types v = map (fn n => offset n Cchar v) (offsets types) end (* struct *) polyml-5.7.1/mlsource/BuildBasis.sml0000644000175000017500000000307713204034553016375 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Build the main basis library. *) val () = Bootstrap.use "basis/build.sml"; (* We've now set up the new name space so everything has to be compiled into that rather than the old space. *) PolyML.make "mlsource/extra/CInterface"; PolyML.use "mlsource/extra/CInterface/clean"; (* XWindows/Motif *) let val xWindowsGeneralCall = RunCall.rtsCallFull1 "PolyXWindowsGeneral" val xcall: int*int->int*int = xWindowsGeneralCall (* See if the RTS supports the X GetTimeOfDay call. *) val isX = (xcall(30, 0); true) handle _ => false in if isX then ( PolyML.make "mlsource/extra/XWindows"; PolyML.make "mlsource/extra/Motif" ) else () end; PolyML.print_depth 10; polyml-5.7.1/mlsource/BuildAll.sml0000644000175000017500000000316013204034553016035 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Script to rebuild the compiler. *) (* This is used only during testing. The normal build process uses BuildExport to export a newly compiled compiler and exportPoly to compile the basis and produce an object file. *) PolyML.print_depth 0; PolyML.make "mlsource/MLCompiler"; (* Create the initial basis *) val globalTable : Make.gEnv = Make.makeGEnv (); val () = Initialise.initGlobalEnv {globalTable=globalTable, intIsArbitraryPrecision=false}; (* Compile the basis in the new compiler. *) MLCompiler.useIntoEnv globalTable [] "mlsource/BuildBasis.sml"; (* Use useString to start the new shell because it allows this to be pasted into a window as a single item. Otherwise the line to start the new shell will be in the buffer of the old TextIO.stdIn not the one we've just built. *) MLCompiler.useStringIntoEnv globalTable "PolyML.rootFunction();"; polyml-5.7.1/mlsource/MLCompiler/0000755000175000017500000000000013204034553015633 5ustar daviddavidpolyml-5.7.1/mlsource/MLCompiler/LEXSIG.sml0000644000175000017500000000601613204034553017346 0ustar daviddavid(* Copyright (c) 2009, 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature LEXSIG = (*****************************************************************************) (* LEX export signature *) (*****************************************************************************) sig type lexan; type sys; type pretty; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val insymbol: lexan -> unit; (* insymbol sets sy and id which are exported as "read-only" *) val sy: lexan -> sys; val id: lexan -> string; val location: lexan -> location; val pushBackSymbol: lexan * sys -> unit; val initial: (unit -> char option) * Universal.universal list -> lexan; (* Error handling *) val reportError: lexan -> { location: location, hard: bool, message: pretty, context: pretty option } -> unit (* Simple error message. *) val errorMessage: lexan * location * string -> unit (* Simple warning message. *) val warningMessage: lexan * location * string -> unit val errorOccurred: lexan -> bool; val nullLex: lexan; (* Used when no errors are expected - streams raise exceptions. *) (* To save passing an extra argument to many functions we include the debug/control parameters here. *) val debugParams: lexan -> Universal.universal list (* This is also not really part of the lexical analyser. *) val newBindingId: lexan -> FixedInt.int val errorDepth: lexan -> FixedInt.int (* Print error and warning messages. *) val errorMessageProcTag: ({ location: location, hard: bool, message: pretty, context: pretty option } -> unit) Universal.tag (* A null location *) val nullLocation: location (* Construct the location that starts at the start of the first location and ends at the end of the second. Used to combine the locations of individual lexical units into a location for a larger syntactic unit. *) val locSpan: location * location -> location (* Types that can be shared. *) structure Sharing: sig type pretty = pretty and lexan = lexan and sys = sys end end (* LEX export signature *); polyml-5.7.1/mlsource/MLCompiler/ParseTree/0000755000175000017500000000000013204034553017525 5ustar daviddavidpolyml-5.7.1/mlsource/MLCompiler/ParseTree/MATCH_COMPILER.sml0000644000175000017500000015261413204034553022401 0ustar daviddavid(* Copyright (c) 2013, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor MATCH_COMPILER ( structure BASEPARSETREE : BaseParseTreeSig structure PRINTTREE: PrintParsetreeSig structure LEX : LEXSIG structure CODETREE : CODETREESIG structure DEBUGGER : DEBUGGERSIG structure TYPETREE : TYPETREESIG structure TYPEIDCODE: TYPEIDCODESIG structure STRUCTVALS : STRUCTVALSIG structure VALUEOPS : VALUEOPSSIG structure DATATYPEREP: DATATYPEREPSIG structure DEBUG: DEBUGSIG structure MISC : sig (* These are handled in the compiler *) exception Conversion of string (* string to int conversion failure *) (* This isn't handled at all (except generically) *) exception InternalError of string (* compiler error *) end structure ADDRESS : AddressSig sharing BASEPARSETREE.Sharing = PRINTTREE.Sharing = LEX.Sharing = CODETREE.Sharing = DEBUGGER.Sharing = TYPETREE.Sharing = TYPEIDCODE.Sharing = STRUCTVALS.Sharing = VALUEOPS.Sharing = DATATYPEREP.Sharing = ADDRESS ): MatchCompilerSig = struct open BASEPARSETREE open PRINTTREE open CODETREE open TYPEIDCODE open LEX open TYPETREE open DEBUG open STRUCTVALS open VALUEOPS open MISC open DATATYPEREP open TypeVarMap datatype environEntry = datatype DEBUGGER.environEntry type debuggerStatus = DEBUGGER.debuggerStatus (* To simplify passing the context it is wrapped up in this type. This is a subset of the context used in CODEGEN_PARSETREE. *) type matchContext = { mkAddr: int->int, level: level, typeVarMap: typeVarMap, lex: lexan } (* Devised by Mike Fourman, Nick Rothwell and me (DCJM). First coded up by Nick Rothwell for the Kit Compiler. First phase of the match compiler. The purpose of this phase is to take a match (a set of patterns) and bring together the elements that will be discriminated by testing any particular part of the value. Where a pattern is a tuple, for example, it is possible to discriminate on each of the fields independently, but it may be more efficient to discriminate on one of the fields first, and then on the others. The aim is to produce a set of tests that discriminate between the patterns quickly. *) abstype patSet = PatSet of int list with (* Each leaf in the tree contains a number which identifies the pattern it came from. As well as linking back to the patterns, these numbers represent an ordering, because earlier patterns mask out later ones. *) (* A set of pattern identifiers. *) val empty = PatSet []; fun singleton i = PatSet [i]; fun list (PatSet p) = p; infix 3 :::; fun a ::: b = PatSet (a :: list b); fun isEmptySet (PatSet []) = true | isEmptySet _ = false fun first (PatSet p) = hd p; fun next (PatSet p) = PatSet (tl p); fun cardinality(PatSet p) = List.length p (* Set from i to j inclusive. *) fun from i j = if i > j then empty else i ::: from (i + 1) j; infix 3 plus; infix 4 inside; infix 5 intersect; infix 6 diff; infix 7 eq; infix 8 eqSc infix 9 neq; (* Union of sets. *) fun a plus b = if isEmptySet a then b else if isEmptySet b then a else if first a = first b then first a ::: (next a plus next b) else if first a < first b then first a ::: (next a plus b) else first b ::: (a plus next b); (* Set membership. *) fun i inside a = if isEmptySet a then false else if i = first a then true else if i < first a then false else i inside next a (* Intersection of sets. *) fun a intersect b = if isEmptySet a orelse isEmptySet b then empty else if first a = first b then first a ::: ((next a) intersect (next b)) else if first a < first b then (next a) intersect b else a intersect next b; (* Set difference. *) fun a diff b = if isEmptySet a then empty else if isEmptySet b then a else if first a = first b then (next a) diff (next b) else if first a < first b then first a ::: ((next a) diff b) else a diff next b; (* Set equality. *) fun (PatSet a) eq (PatSet b) = a = b end (* patSet *); datatype aot = Aot of { patts: aots, (* Choices made at this point. *) defaults: patSet, (* Patterns that do not discriminate on this node. *) vars: values list (* The variables bound at this point. *) } and aots = TupleField of aot list (* Each element of the list is a field of the tuple. *) | Cons of consrec list * int (* List of constructors and the number of different constructors. *) | Excons of exconsrec list (* Exception constructors. *) | Scons of sconsrec list (* Int, char, string, real. *) | Wild (* Patterns that do not discriminate at all. *) (* Datatype constructors and exception constructors. *) withtype consrec = { constructor: values, (* The constructor itself. *) patts: patSet, (* Patterns that use this constructor *) appliedTo: aot, (* Patterns this constructor was applied to. *) polyVars: types list (* If this was polymorphic, the matched types. *) } and exconsrec = { constructor: values, patts: patSet, appliedTo: aot, exValue: machineWord option } and sconsrec = { eqFun: codetree, (* Equality functions for this type*) specVal: machineWord option, (* The constant value. NONE here means we had a conversion error. *) patts: patSet (* Patterns containing this value. *) } fun makeAot(patts, defaults, vars) = Aot { patts = patts, defaults = defaults, vars = vars } fun makeConsrec(constructor, patts, appliedTo, polyVars): consrec = { constructor = constructor, patts = patts, appliedTo = appliedTo, polyVars = polyVars } fun makeExconsrec(constructor, patts, appliedTo, exValue): exconsrec = { constructor = constructor, patts = patts, appliedTo = appliedTo, exValue = exValue } fun makeSconsrec(eqFun, specVal, patts) : sconsrec = { eqFun = eqFun, specVal = specVal, patts = patts } (* An empty wild card - can be expanded as required. *) val aotEmpty = makeAot(Wild, empty, []) (* A new wild card entry with the same defaults as a previous entry. *) fun wild (Aot {defaults, ...}) = makeAot(Wild, defaults, []) local (* Add a default (wild card or variable) to every node in the tree. *) fun addDefault (Aot {patts, defaults, vars}) patNo = let val newPatts = case patts of TupleField pl => TupleField (map (fn a => addDefault a patNo) pl) | Cons(cl, width) => let fun addDefaultToConsrec {constructor, patts, appliedTo, polyVars} = makeConsrec(constructor, patts, addDefault appliedTo patNo, polyVars) in Cons (map addDefaultToConsrec cl, width) end | Excons cl => let fun addDefaultToExconsrec {constructor, patts, appliedTo, exValue} = makeExconsrec(constructor, patts, addDefault appliedTo patNo, exValue) in Excons (map addDefaultToExconsrec cl) end | otherPattern => (* Wild, Scons *) otherPattern in makeAot(newPatts, defaults plus singleton patNo, vars) end (* addDefault *) fun addVar (Aot {patts, defaults, vars}) var = makeAot(patts, defaults, var :: vars) (* Add a constructor to the tree. It can only be added to a cons node or a wild card. *) fun addConstr(cons, noOfConstrs, doArg, tree as Aot {patts = Wild, defaults, vars, ...}, patNo, polyVars) = let (* Expand out the wildCard into a constructor node. *) val cr = makeConsrec(cons, singleton patNo, (* Expand the argument *) doArg (wild tree), polyVars); in makeAot(Cons([cr], noOfConstrs), defaults, vars) end | addConstr(cons, _, doArg, tree as Aot {patts = Cons(pl, width), defaults, vars}, patNo, polyVars) = let (* Merge this constructor with other occurences. *) fun addClist [] = (* Not there - add this on the end. *) [makeConsrec(cons, singleton patNo, doArg (wild tree), polyVars)] | addClist ((ccl as {constructor, patts, appliedTo, ... })::ccls) = if valName constructor = valName cons then (* Merge in. *) makeConsrec(cons, singleton patNo plus patts, doArg appliedTo, polyVars) :: ccls else (* Carry on looking. *) ccl :: addClist ccls; in makeAot (Cons (addClist pl, width), defaults, vars) end | addConstr _ = raise InternalError "addConstr: badly-formed and-or tree" (* Add a special constructor to the tree. Very similar to preceding. *) fun addSconstr(eqFun, cval, Aot {patts = Wild, defaults, vars, ...}, patNo, _) = (* Expand out the wildCard into a constructor node. *) makeAot (Scons [makeSconsrec(eqFun, cval, singleton patNo)], defaults, vars) | addSconstr(eqFun, cval, Aot {patts = Scons pl, defaults, vars, ...}, patNo, lex) = let (* Must be scons *) (* Merge this constructor with other occurrences. *) (* Special constants may be overloaded so we don't have a fixed set of types here. We need to use the type-specific equality function to test. Since only the basis library overloads constants we can assume that eqFun is a constant. *) fun equalSpecials(SOME a, SOME b) = let val eqCode = mkEval(eqFun, [mkTuple[mkConst a, mkConst b]]) in RunCall.unsafeCast(valOf(evalue(genCode(eqCode, debugParams lex, 0)()))) end | equalSpecials _ = false fun addClist [] = (* Not there - add this on the end. *) [makeSconsrec(eqFun, cval, singleton patNo)] | addClist ((ccl as { specVal, patts, ...}) :: ccls) = if equalSpecials(cval, specVal) then (* Merge in. *) makeSconsrec(eqFun, cval, singleton patNo plus patts) :: ccls else (* Carry on looking. *) ccl :: addClist ccls in makeAot (Scons (addClist pl), defaults, vars) end | addSconstr _ = raise InternalError "addSconstr: badly-formed and-or tree" (* Return the exception id if it is a constant. It may be a top-level exception or it could be in a top-level structure. *) local fun testAccess(Global code) = evalue code | testAccess(Selected{addr, base}) = ( case testAccess base of NONE => NONE | SOME c => evalue(mkInd(addr, mkConst c)) ) | testAccess _ = NONE in fun exceptionId(Value{access, ...}) = testAccess access end (* Add an exception constructor to the tree. Similar to the above now that non-constant exceptions are excluded from codePatt. *) fun addExconstr(cons, doArg, tree as Aot {patts = Wild, defaults, vars, ...}, patNo) = (* Expand out the wildCard into a constructor node. *) let val cr = makeExconsrec (cons, singleton patNo, doArg(wild tree), exceptionId cons) in makeAot (Excons [cr], defaults, vars) end | addExconstr(cons, doArg, tree as Aot {patts = Excons cl, defaults, vars, ...}, patNo) = let (* See if this is a constant. *) val newExval = exceptionId cons (* Two exceptions can only be considered the same if they are both constants and the same value. *) fun sameException(SOME a, SOME b) = PolyML.pointerEq(a, b) | sameException _ = false (* It would not be safe to merge exceptions if we were *) fun addClist [] = (* Not there - add this on the end. *) [makeExconsrec(cons, singleton patNo, doArg(wild tree), newExval)] | addClist ((ccl as {constructor, patts, appliedTo, exValue, ... })::ccls) = if sameException(newExval, exValue) then (* Merge in. *) makeExconsrec(constructor, singleton patNo plus patts, doArg appliedTo, exValue) :: ccls else (* Carry on looking. *) ccl :: addClist ccls in makeAot (Excons (addClist cl), defaults, vars) end | addExconstr _ = raise InternalError "addExconstr: badly-formed and-or tree" in (* Take a pattern and merge it into an andOrTree. *) fun buildAot (Ident {value=ref ident, expType=ref expType, ... }, tree, patNo, line, context as { typeVarMap, ...} ) = let val polyVars = List.map #value (getPolymorphism (ident, expType, typeVarMap)) fun doArg a = buildAot(WildCard nullLocation, a, patNo, line, context) in case ident of Value{class=Constructor {ofConstrs, ...}, ...} => (* Only nullary constructors. Constructors with arguments will be dealt with by ``isApplic'. *) addConstr(ident, ofConstrs, doArg, tree, patNo, polyVars) | Value{class=Exception, ...} => addExconstr(ident, doArg, tree, patNo) | _ => (* variable - matches everything. Defaults here and pushes a var. *) addVar (addDefault tree patNo) ident end | buildAot (TupleTree{fields, location, ...}, tree as Aot {patts = Wild, defaults = treeDefaults, vars = treeVars, ...}, patNo, _, context) = (* Adding tuple to existing wild-card *) let val tlist = map (fn el => buildAot(el, wild tree, patNo, location, context)) fields in makeAot (TupleField tlist, treeDefaults, treeVars) end | buildAot (TupleTree{fields, ...}, Aot {patts = TupleField pl, defaults = treeDefaults, vars = treeVars, ...}, patNo, line, context) = let (* Adding tuple to existing tuple. *) (* Merge each field of the tuple in with the corresponding field of the existing tree. *) val tlist = ListPair.mapEq (fn(t, a) => buildAot(t, a, patNo, line, context)) (fields, pl) in makeAot (TupleField tlist, treeDefaults, treeVars) end | buildAot (TupleTree _, _, _, _, _) = raise InternalError "pattern is not a tuple in a-o-t" | buildAot (vars as Labelled {recList, expType=ref expType, location, ...}, tree, patNo, _, context as { lex, ...}) = let (* Treat as a tuple, but in the order of the record entries. Missing entries are replaced by wild-cards. The order of the patterns given may bear no relation to the order in the record which will be matched. e.g. case X of (a = 1, ...) => ___ | (b = 2, a = 3) => ___ *) (* Check that the type is frozen. *) val () = if recordNotFrozen expType then errorNear (lex, true, vars, location, "Can't find a fixed record type.") else () (* Get the maximum number of patterns. *) val wilds = List.tabulate(recordWidth expType, fn _ => WildCard nullLocation) (* Now REPLACE entries from the actual pattern, leaving the defaulting ones behind. *) (* Take a pattern and add it into the list. *) fun mergen (_ :: t) 0 pat = pat :: t | mergen (h :: t) n pat = h :: mergen t (n - 1) pat | mergen [] _ _ = raise InternalError "mergen"; fun enterLabel ({name, valOrPat, ...}, l) = (* Put this label in the appropriate place in the tree. *) mergen l (entryNumber (name, expType)) valOrPat val tupleList = List.foldl enterLabel wilds recList in (* And process it as a tuple. *) buildAot(TupleTree{fields=tupleList, location=location, expType=ref expType}, tree, patNo, location, context) end | buildAot (Applic{f = Ident{value = ref applVal, expType = ref expType, ...}, arg, location, ...}, tree, patNo, _, context as { typeVarMap, ...}) = let val polyVars = List.map #value (getPolymorphism (applVal, expType, typeVarMap)) fun doArg atree = buildAot(arg, atree, patNo, location, context) in case applVal of Value{class=Constructor{ofConstrs, ...}, ...} => addConstr(applVal, ofConstrs, doArg, tree, patNo, polyVars) | Value{class=Exception, ...} => addExconstr(applVal, doArg, tree, patNo) | _ => tree (* Only if error *) end | buildAot (Applic _ , tree, _, _, _) = tree (* Only if error *) | buildAot (Unit _, tree, patNo, _, _) = (* There is only one value so it matches everything. *) addDefault tree patNo | buildAot (WildCard _, tree, patNo, _, _) = addDefault tree patNo (* matches everything *) | buildAot (List{elements, location, expType=ref expType, ...}, tree, patNo, _, context) = let (* Generate suitable combinations of cons and nil. e.g [1,2,3] becomes ::(1, ::(2, ::(3, nil))). *) (* Get the base type. *) val elementType = mkTypeVar (generalisable, false, false, false) val listType = mkTypeConstruction ("list", tsConstr listConstr, [elementType], [DeclaredAt inBasis]) val _ = unifyTypes(listType, expType) val polyVars = [elementType] fun processList [] tree = (* At the end put in a nil constructor. *) addConstr(nilConstructor, 2, fn a => buildAot (WildCard nullLocation, a, patNo, location, context), tree, patNo, polyVars) | processList (h :: t) tree = (* Cons node. *) let fun mkConsPat (Aot {patts = TupleField [hPat, tPat], defaults, vars, ...}) = let (* The argument is a pair consisting of the list element and the rest of the list. *) val tlist = [buildAot(h, hPat, patNo, location, context), processList t tPat]; in makeAot (TupleField tlist, defaults, vars) end | mkConsPat (tree as Aot {patts = Wild, defaults, vars, ...}) = let val hPat = wild tree; val tPat = wild tree; val tlist = [buildAot(h, hPat, patNo, location, context), processList t tPat]; in makeAot (TupleField tlist, defaults, vars) end | mkConsPat _ = raise InternalError "mkConsPat: badly-formed parse-tree" in addConstr(consConstructor, 2, mkConsPat, tree, patNo, polyVars) end (* end processList *); in processList elements tree end | buildAot (vars as Literal{converter, literal, expType=ref expType, location}, tree, patNo, _, {lex, level, ...}) = let (* At the same time we have to get the equality function for this type to plug into the code. Literals are overloaded so this may require first resolving the overload to the preferred type. *) val constr = typeConstrFromOverload(expType, true) val equality = equalityForType( mkTypeConstruction(tcName constr, constr, [], []), level, defaultTypeVarMap(fn _ => raise InternalError "equalityForType", baseLevel) (* Should never be used. *)) val litValue: machineWord option = getLiteralValue(converter, literal, expType, fn s => errorNear(lex, true, vars, location, s)) in addSconstr(equality, litValue, tree, patNo, lex) end | buildAot (Constraint {value, location, ...}, tree, patNo, _, context) = (* process the pattern *) buildAot(value, tree, patNo, location, context) | buildAot (Layered {var, pattern, location}, tree, patNo, _, context) =(* process the pattern *) let (* A layered pattern may involve a constraint which has to be removed. *) fun getVar (Ident {value, ...}) = !value | getVar (Constraint {value, ...}) = getVar value | getVar _ = undefinedValue (* error *) in addVar (buildAot(pattern, tree, patNo, location, context)) (getVar var) end | buildAot (Parenthesised(p, location), tree, patNo, _, context) = buildAot(p, tree, patNo, location, context) | buildAot (_, tree, _, _, _) = tree (* error cases *) end fun buildTree (patts: matchtree list, context) = let (* Merge together all the patterns into a single tree. *) fun maket [] _ tree = tree | maket ((MatchTree{vars, location, ...})::t) patNo tree = maket t (patNo + 1) (buildAot(vars, tree, patNo, location, context)) in maket patts 1 aotEmpty end fun bindPattVars(arg, vars, { mkAddr, level, ...}) = let val addressOfVar = mkAddr 1 val dec = mkDec (addressOfVar, arg) and load = mkLoadLocal addressOfVar (* Set the addresses of the variables and create debug entries. *) fun setAddr (Value{access=Local{addr=lvAddr, level=lvLevel}, ...}) = ( (* Set the address of the variable. *) lvAddr := addressOfVar; lvLevel := level ) | setAddr _ = raise InternalError "setAddr" val () = List.app setAddr vars in (load, dec) end local (* Find the "depth" of pattern i.e. the position of any defaults. If one of the fields is itself a tuple find the maximum depth of its fields, since if we decide to discriminate on this field we will come back and choose the deepest in that tuple. *) fun pattDepth (Aot {patts=TupleField pl, ...}, active) = List.foldl (fn (t, d) => Int.max(pattDepth(t, active), d)) 0 pl | pattDepth (Aot {patts, defaults,...}, active) = let (* Wild cards, constructors etc. *) val activeDefaults = defaults intersect active in if not (isEmptySet activeDefaults) then first activeDefaults else (* No default - the depth is the number of patterns that will be discriminated. Apart from Cons which could be a complete match, all the other cases will only occur if the match is not exhaustive. *) case patts of Cons (cl, _) => length cl + 1 | Excons cl => length cl + 1 | Scons sl => length sl + 1 | _ => 0 (* Error? *) end in fun bestColumn(colsToDo, noOfCols, asTuples, active) = let fun findDeepest(column, bestcol, depth) = if column = noOfCols (* Finished. *) then bestcol else if column inside colsToDo then let val thisDepth = pattDepth (List.nth(asTuples, column), active) in if thisDepth > depth then findDeepest (column + 1, column, thisDepth) else findDeepest (column + 1, bestcol, depth) end else findDeepest (column + 1, bestcol, depth) in findDeepest(0, 0, 0) end end (* The result of compiling the pattern match code. *) datatype pattCodeOption = PattCodeLeaf (* All the discrimination is done. *) | PattCodeBindTuple of (* The value is a tuple - take it apart. *) { tupleNo: int, next: pattCode } | PattCodeTupleSelect of (* Select a field of a tuple. *) { tupleNo: int, fieldOffset: int, next: pattCode } | PattCodeConstructors of (* Test a set of constructors *) { nConstrs: int, (* Number of constrs in datatype. 0 = infinite *) patterns: (pattCodeConstructor * pattCode) list, (* Constructor and pattern to follow. *) default: pattCode (* Pattern if none match *) } | PattCodeNaive of (* Do all the discrimination for each pattern separately. *) { pattNo: int, tests: (naiveTest * values list) list } list and pattCodeConstructor = PattCodeDatatype of values * types list | PattCodeException of values | PattCodeSpecial of codetree * machineWord option and naiveTest = NaiveWild | NaiveBindTuple of int | NaiveTupleSelect of { tupleNo: int, fieldOffset: int } | NaivePattTest of pattCodeConstructor withtype pattCode = { leafSet: patSet, (* Set of different patterns fired by the discrimination. *) leafCount: int, (* Count of number of leaves - >= cardinality of leafSet *) vars: values list, (* Variables bound to this node. May be layered i.e. id as pat *) code: pattCodeOption (* Code to apply at this node. *) } local fun pattCode(Aot {patts, defaults, vars, ...}, active: patSet, nextMatch: patSet * int -> pattCode, tupleNo) = let (* Get the set of defaults which are active. *) val activeDefaults = defaults intersect active fun makePattTest(patts, default, nConstrs) = let (* If we have included all the constructors the default may be redundant. *) val nPatts = length patts val (initSet, initCount) = if nPatts = nConstrs then (empty, 0) else (#leafSet default, #leafCount default) val defaultSet = #leafSet default (* If we have a default above a constructor then we may not need to discriminate on the constructor. This can occur in tuples where we have already discriminated on a different constructor. e.g (1, _) => ...| (_, SOME _) => ... | (_, NONE) => ... The values (1, NONE) and (1, SOME _) will both match the first pattern. *) val allSame = List.all (fn (_, { leafSet, ...}) => leafSet eq defaultSet) patts in if allSame then default else let val unionSet = foldl (fn ((_, {leafSet, ...}), s) => s plus leafSet) initSet patts val leafCount = foldl (fn ((_, {leafCount, ...}), n) => n + leafCount) initCount patts val constrs = { leafSet = unionSet, vars = [], code = PattCodeConstructors{nConstrs = nConstrs, patterns=patts, default=default}, leafCount = leafCount } in (* If the patterns are blowing up we are better off using naive matching. leafCount indicates the number of different times a pattern is fired. The cardinality of the unionSet is the number of different patterns. In particular we can have pathological cases that really blow up. See Tests/Succeed/Test133.ML. *) if leafCount > 1 andalso leafCount >= cardinality unionSet * 2 - 1 then makeNaive constrs else constrs end end val codePatt = (* If the active set is empty (match is not exhaustive) or everything will default we can skip further checks. *) if isEmptySet active orelse active eq activeDefaults then nextMatch(active, tupleNo) else case patts of TupleField [single] => (* Singleton tuple - this is just the same as the field. *) pattCode(single, active, nextMatch, tupleNo) | TupleField asTuples => let val thisTuple = tupleNo (* The address is used to refer to this tuple. *) val nextTupleNo = tupleNo+1 (* A simple-minded scheme would despatch the first column and then do the others. The scheme used here tries to do better by choosing the column that has any wild card furthest down the column. *) val noOfCols = length asTuples fun despatch colsToDo (active, tupleNo) = (* If we have done all the columns we can stop. (Or if the active set is empty). *) if isEmptySet colsToDo orelse isEmptySet active then nextMatch(active, tupleNo) else let (* Choose the best column. *) val bestcol = bestColumn(colsToDo, noOfCols, asTuples, active) (* Discriminate on the constructors in it. *) val code as { leafSet, leafCount, ...} = pattCode(List.nth(asTuples, bestcol), active, despatch (colsToDo diff (singleton bestcol)), tupleNo) (* Code to do the selection. *) val select = PattCodeTupleSelect{tupleNo = thisTuple, fieldOffset = bestcol, next = code } in { leafSet = leafSet, leafCount = leafCount, vars = [], code = select } end val takeApartTuple as { leafSet, leafCount, ...} = despatch (from 0 (noOfCols-1)) (active, nextTupleNo) val code = PattCodeBindTuple { tupleNo=tupleNo, next = takeApartTuple } in { leafSet = leafSet, leafCount = leafCount, vars=[], code=code } end | Cons(cl, width) => let fun doConstr({ patts, constructor, appliedTo, polyVars, ...}, rest) = let (* If this pattern is in the active set we discriminate on it. *) val newActive = patts intersect active in if isEmptySet newActive then (* No point *) rest else let val thenCode = pattCode(appliedTo, newActive plus activeDefaults, nextMatch, tupleNo) in (PattCodeDatatype(constructor, polyVars), thenCode) :: rest end end val pattList = foldl doConstr [] cl in makePattTest(pattList, nextMatch(activeDefaults, tupleNo), width) end | Excons cl => let (* We now process exception constructors in the same way as datatype constructors. This is only valid because all the exception constructors are constants. *) fun doConstr({ patts, constructor, appliedTo, ...}, rest) = let (* If this pattern is in the active set we discriminate on it. *) val newActive = patts intersect active in if isEmptySet newActive then (* No point *) rest else let val thenCode = pattCode(appliedTo, newActive plus activeDefaults, nextMatch, tupleNo) in (PattCodeException constructor, thenCode) :: rest end end val pattList = foldl doConstr [] cl in makePattTest(pattList, nextMatch(activeDefaults, tupleNo), 0) end | Scons sl => let (* Int, char, string *) (* Generate if..then..else for each of the choices. *) fun doConstr({ patts, eqFun, specVal, ...}, rest) = let val newActive = patts intersect active in if isEmptySet newActive then (* No point *) rest else (PattCodeSpecial(eqFun, specVal), nextMatch(newActive plus activeDefaults, tupleNo)) :: rest end val pattList = foldl doConstr [] sl in makePattTest(pattList, nextMatch(activeDefaults, tupleNo), 0) end | Wild => nextMatch(activeDefaults, tupleNo) in { leafSet = #leafSet codePatt, leafCount = #leafCount codePatt, vars=vars @ #vars codePatt, code = #code codePatt } end (* Turn a decision tree into a series of tests for each pattern. *) and makeNaive(pattern as { leafSet, vars, ... }) = let fun createTests(_, { code = PattCodeLeaf, vars, ...}) = [(NaiveWild, vars)] | createTests(pat, { code = PattCodeBindTuple{ tupleNo, next }, vars, ... }) = (NaiveBindTuple tupleNo, vars) :: createTests(pat, next) | createTests(pat, { code = PattCodeTupleSelect { tupleNo, fieldOffset, next }, vars, ...}) = (NaiveTupleSelect { tupleNo = tupleNo, fieldOffset = fieldOffset }, vars) :: createTests(pat, next) | createTests(pat, { code = PattCodeConstructors { patterns, default, ... }, vars, ...}) = if pat inside #leafSet default (* If it's in the default set we don't discriminate here. *) then (NaiveWild, vars) :: createTests(pat, default) else let (* If it's not in the default it must be in one of the constructors. *) val (constr, code) = valOf(List.find(fn (_, {leafSet, ...}) => pat inside leafSet) patterns) in (NaivePattTest constr, vars) :: createTests(pat, code) end | createTests(pat, { code = PattCodeNaive l, vars, ...}) = let val { tests, ...} = valOf(List.find(fn{pattNo, ...} => pat = pattNo) l) in (NaiveWild, vars) :: tests end fun createPatts setToDo = if isEmptySet setToDo then [] else let val pat = first setToDo val entry = { pattNo = pat, tests = createTests(pat, pattern) } val otherPatts = createPatts(setToDo diff singleton pat) in (* Normally we want the patterns in order since earlier ones will generally be more specific. If 0 is in the set it represents "non-exhaustive" and must go last. *) if pat = 0 then otherPatts @ [entry] else entry :: otherPatts end in { leafSet=leafSet, vars=vars, code=PattCodeNaive(createPatts leafSet), leafCount = cardinality leafSet } end in fun buildPatternCode(tree, noOfPats, alwaysNaive) = let fun firePatt(pattsLeft, _) = let val pattern = if isEmptySet pattsLeft then 0 (* This represents non-exhaustive. *) else first pattsLeft in { vars = [], code = PattCodeLeaf, leafSet = singleton pattern, leafCount = 1 } end val patts = pattCode(tree, from 1 noOfPats, firePatt, 0) in if alwaysNaive then makeNaive patts else patts end end local val EXC_Bind = 100 val EXC_Match = 101 (* Raises an exception. *) fun raiseException(exName, exIden, line) = mkRaise (mkTuple [exIden, mkStr exName, CodeZero, codeLocation line]); (* Create exception values - Small integer values are used for run-time system exceptions. *) val bindExceptionVal = mkConst (ADDRESS.toMachineWord EXC_Bind); val matchExceptionVal = mkConst (ADDRESS.toMachineWord EXC_Match); in (* Raise match and bind exceptions. *) fun raiseBindException line = raiseException("Bind", bindExceptionVal, line) and raiseMatchException line = raiseException("Match", matchExceptionVal, line) end (* Turn the decision tree into real code. *) local (* Guard and inversion code for constructors *) fun constructorCode(PattCodeDatatype(cons, polyVars), arg, {level, typeVarMap, ...}) = ( makeGuard (cons, polyVars, arg, level, typeVarMap), makeInverse (cons, polyVars, arg, level, typeVarMap) ) | constructorCode(PattCodeException cons, arg, {level, typeVarMap, ...}) = ( makeGuard (cons, [], arg, level, typeVarMap), makeInverse (cons, [], arg, level, typeVarMap) ) | constructorCode(PattCodeSpecial(eqFun, cval), arg, _) = let val constVal = case cval of SOME cv => mkConst cv | NONE => CodeZero in (mkEval(eqFun, [mkTuple[arg, constVal]]), CodeZero (* Unused *)) end (* Sequence of tests for naive match. *) fun makeNaiveTests([], _, _, _) = CodeTrue | makeNaiveTests ((NaiveWild, _) :: rest, arg, tupleMap, context) = makeNaiveTests(rest, arg, tupleMap, context) | makeNaiveTests ((NaiveBindTuple tupleNo, _) :: rest, arg, tupleMap, context) = let (* Bind it to a variable. We don't set the addresses of the vars at this point. *) val (declLoad, declDec) = bindPattVars(arg, [], context) in mkEnv([declDec], makeNaiveTests(rest, arg, (tupleNo, declLoad) :: tupleMap, context)) end | makeNaiveTests ((NaiveTupleSelect { tupleNo, fieldOffset}, _) :: rest, _, tupleMap, context) = let val findTuple = List.find(fn(a, _) => tupleNo = a) tupleMap in makeNaiveTests(rest, mkInd(fieldOffset, #2 (valOf findTuple)), tupleMap, context) end | makeNaiveTests ((NaivePattTest constr, _) :: rest, arg, tupleMap, context) = let (* Bind it to a variable. This avoids making multiple copies of code. *) val (declLoad, declDec) = bindPattVars(arg, [], context) val (thisTest, inverse) = constructorCode(constr, declLoad, context) in mkEnv([declDec], mkCand(thisTest, makeNaiveTests(rest, inverse, tupleMap, context))) end (* Load all the variables. *) fun makeLoads([], _, _, _, _) = [] | makeLoads((pattern, vars) :: rest, patNo, arg, tupleMap, context) = let val (declLoad, declDec) = bindPattVars(arg, vars, context) val pattLoad = case pattern of NaiveWild => makeLoads(rest, patNo, declLoad, tupleMap, context) | NaiveBindTuple tupleNo => makeLoads(rest, patNo, declLoad, (tupleNo, declLoad) :: tupleMap, context) | NaiveTupleSelect { tupleNo, fieldOffset} => let val findTuple = List.find(fn(a, _) => tupleNo = a) tupleMap in makeLoads(rest, patNo, mkInd(fieldOffset, #2 (valOf findTuple)), tupleMap, context) end | NaivePattTest constr => let val (_, inverse) = constructorCode(constr, declLoad, context) in makeLoads(rest, patNo, inverse, tupleMap, context) end in declDec :: pattLoad end in fun codeGenerateMatch(patCode, arg, firePatt, context: matchContext as {level, typeVarMap, ...}) = let fun codeMatch({ leafSet, vars, code, ...}, arg, tupleMap) = let (* Bind the current value to a codetree variable and set the addresses of any ML variables to this. *) val (declLoad, declDec) = bindPattVars(arg, vars, context) val pattCode = case code of PattCodeLeaf => (* Finished - fire the pattern. *) firePatt(first leafSet) | PattCodeBindTuple { tupleNo, next }=> (* Bind the tuple number to this address. *) codeMatch(next, arg, (tupleNo, declLoad) :: tupleMap) | PattCodeTupleSelect { tupleNo, fieldOffset, next } => let (* The tuple number should be in the map. Find the address and select the field. *) val findTuple = List.find(fn(a, _) => tupleNo = a) tupleMap in codeMatch(next, mkInd(fieldOffset, #2 (valOf findTuple)), tupleMap) end | PattCodeConstructors { nConstrs, patterns, default } => let fun doPattern((PattCodeDatatype(cons, polyVars), code) :: rest, 1) = (* This is the last pattern and we have done all the others. We don't need to test this one and we don't use the default. *) let val _ = null rest orelse raise InternalError "doPattern: not at end" val invertCode = makeInverse (cons, polyVars, declLoad, level, typeVarMap) in codeMatch(code, invertCode, tupleMap) end | doPattern([], _) = (* We've done all of them - do the default *) codeMatch(default, arg, tupleMap) | doPattern((constructor, matchCode) :: next, constrsLeft) = let val (testCode, invertCode) = constructorCode(constructor, declLoad, context) val thenCode = codeMatch(matchCode, invertCode, tupleMap) in mkIf(testCode, thenCode, doPattern(next, constrsLeft-1)) end in doPattern(patterns, nConstrs) end | PattCodeNaive patterns => let fun makePatterns [] = raise InternalError "makeTests: empty" | makePatterns ({ tests, pattNo} :: rest) = let val pattDecs = makeLoads(tests, pattNo, arg, tupleMap, context) val pattCode = mkEnv(pattDecs, firePatt pattNo) in (* If this is the last one there's no need for a test. *) if null rest then pattCode else mkIf(makeNaiveTests(tests, arg, tupleMap, context), pattCode, makePatterns rest) end in makePatterns patterns end in mkEnv([declDec], pattCode) end in codeMatch(patCode, arg, []) end (* Binding. This should be a single naive match. Generally it will be exhaustive so we will only have to load the variables. *) fun codeBinding( { leafSet, vars, code = PattCodeNaive({ tests, ...} :: _ (* Normally nil but could be PattCodeWild if non-exhaustive *)), ...}, arg, line, context) = let (* Bind this to a variable and set any top-level variable(s). *) val (declLoad, declDec) = bindPattVars(arg, vars, context) (* Create any test code to raise the bind exception *) val testCode = if not (0 inside leafSet) then [] (* Exhaustive - no test needed. *) else [mkNullDec(mkIf(makeNaiveTests(tests, declLoad, [], context), CodeZero, raiseBindException line))] (* Load the variables. *) val pattDecs = makeLoads(tests, 1, declLoad, [], context) in declDec :: testCode @ pattDecs end | codeBinding _ = raise InternalError "codeBinding: should be naive pattern match" end fun containsNonConstException(Aot{patts = TupleField fields, ...}) = List.foldl(fn (aot, t) => t orelse containsNonConstException aot) false fields | containsNonConstException(Aot{patts = Cons(cl, _), ...}) = List.foldl(fn ({appliedTo, ...}, t) => t orelse containsNonConstException appliedTo) false cl | containsNonConstException(Aot{patts = Excons cl, ...}) = List.foldl(fn ({appliedTo, exValue, ...}, t) => t orelse not (isSome exValue) orelse containsNonConstException appliedTo) false cl | containsNonConstException _ = false (* Scons or Wild *) (* Process a pattern in a binding. *) (* This previously used codePatt with special options to generate the correct structure for a binding. This does the test separately from loading the variables. If the pattern is not exhaustive this may do more work since the pattern is taken apart both in the test and for loading. *) fun codeBindingPattern(vbDec, arg, line, context) = let (* Build the tree. *) val andortree = buildAot(vbDec, aotEmpty, 1, line, context) (* Build the pattern code *) val patternCode as { leafSet, ... } = buildPatternCode(andortree, 1, true (* Always *)) (* It's not exhaustive if pattern zero is in the set. *) val exhaustive = not (0 inside leafSet) val codeDecs = codeBinding(patternCode, arg, line, context) in (codeDecs, exhaustive) end (* Process a set of patterns in a match. *) (* Naive match code. Doesn't check for exhaustiveness or redundancy. *) fun codeMatchPatterns(alt, arg, isHandlerMatch, lineNo, codePatternExpression, context as { lex, ...}) = let val noOfPats = length alt val andortree = buildTree(alt, context) (* If the match is sparse or there are any non-constant exceptions we need to use pattern-by-pattern matching. Non-constant exceptions could involve exception aliasing and this complicates pattern matching. It could break the rule that says that if a value matches one constructor it cannot then match any other. If we are compiling with debugging we also use the naive match. *) val alwaysNaive = containsNonConstException andortree orelse getParameter debugTag (debugParams lex) val patternCode as { leafSet, ... } = buildPatternCode(andortree, noOfPats, alwaysNaive) (* It's not exhaustive if pattern zero is in the set. *) val exhaustive = not (0 inside leafSet) fun firePatt 0 = ( exhaustive andalso raise InternalError "codeDefault called but exhaustive"; if isHandlerMatch then mkRaise arg else raiseMatchException lineNo ) | firePatt pattChosen = codePatternExpression(pattChosen - 1) in (codeGenerateMatch(patternCode, arg, firePatt, context), exhaustive) end (* Types that can be shared. *) structure Sharing = struct type parsetree = parsetree type typeVarMap = typeVarMap type level = level type codetree = codetree type matchtree = matchtree type codeBinding = codeBinding type lexan = lexan end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/ml_bind.ML0000644000175000017500000001037613204034553021372 0ustar daviddavid(* Copyright (c) 2013, 2015 David C.J. Matthews Derived from previous work Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local structure BaseParseTree = BASE_PARSE_TREE( structure STRUCTVALS = StructVals structure TYPETREE = TypeTree structure DEBUGGER = Debugger ) structure PrintTree = PRINT_PARSETREE( structure BASEPARSETREE = BaseParseTree structure LEX = Lex structure STRUCTVALS = StructVals structure TYPETREE = TypeTree structure VALUEOPS = ValueOps structure PRETTY = Pretty ) structure ExportTree = EXPORT_PARSETREE( structure BASEPARSETREE = BaseParseTree structure PRINTTREE = PrintTree structure LEX = Lex structure STRUCTVALS = StructVals structure EXPORTTREE = ExportTreeStruct structure TYPETREE = TypeTree structure DEBUGGER = Debugger ) structure TypeCheckParsetree = TYPECHECK_PARSETREE ( structure BASEPARSETREE = BaseParseTree structure PRINTTREE = PrintTree structure EXPORTTREE = ExportTree structure LEX = Lex structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure TYPETREE = TypeTree structure VALUEOPS = ValueOps structure UTILITIES = Utilities structure MISC = Misc structure PRETTY = Pretty structure COPIER = CopierStruct structure PRINTTABLE = PrintTable structure DATATYPEREP = DatatypeRep ) structure MatchCompiler = MATCH_COMPILER( structure BASEPARSETREE = BaseParseTree structure PRINTTREE = PrintTree structure LEX = Lex structure CODETREE = CodeTree structure DEBUGGER = Debugger structure TYPETREE = TypeTree structure TYPEIDCODE = TypeIDCodeStruct structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure DATATYPEREP = DatatypeRep structure DEBUG = Debug structure MISC = Misc structure ADDRESS = Address ) structure CodeGenParseTree = CODEGEN_PARSETREE( structure BASEPARSETREE = BaseParseTree structure PRINTTREE = PrintTree structure EXPORTTREE = ExportTree structure MATCHCOMPILER = MatchCompiler structure LEX = Lex structure CODETREE = CodeTree structure DEBUGGER = Debugger structure TYPETREE = TypeTree structure TYPEIDCODE = TypeIDCodeStruct structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure DATATYPEREP = DatatypeRep structure DEBUG = Debug structure MISC = Misc structure ADDRESS = Address ) in structure ParseTree = PARSE_TREE ( structure BASEPARSETREE = BaseParseTree structure PRINTTREE = PrintTree structure EXPORTTREE = ExportTree structure CODEGENPARSETREE = CodeGenParseTree structure TYPECHECKTREE = TypeCheckParsetree structure LEX = Lex structure STRUCTVALS = StructVals structure TYPETREE = TypeTree ) end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/TypeCheckParsetreeSig.sml0000644000175000017500000000313613204034553024442 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature TypeCheckParsetreeSig = sig type parsetree type types type typeVarForm type typeId type lexan type env type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type typeIdDescription = { location: location, name: string, description: string } val pass2: parsetree * (bool * bool * (typeVarForm list * types) * typeIdDescription -> typeId) * env * lexan * (int -> bool) -> types val setLeastGeneralTypes: parsetree * lexan -> unit structure Sharing: sig type parsetree = parsetree type types = types type typeVarForm = typeVarForm type typeId = typeId type lexan = lexan type env = env end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/BaseParseTreeSig.sml0000644000175000017500000002742013204034553023377 0ustar daviddavid(* Copyright (c) 2013-2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) signature BaseParseTreeSig = sig type types and typeVarForm and typeConstrSet and values and infixity and structVals type typeParsetree type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type breakPoint = bool ref datatype parsetree = Ident of (* An identifier is just a name. In the second pass it is associated with a particular declaration and the type is assigned into the type field. The type of this identifier is needed to deal with overloaded operators. If we have an occurence of ``='', say, the type of the value will be 'a * 'a -> bool but the type of a particular occurence, i.e. the type of the identifier must be int * int -> bool, say, after all the unification has been done. *) { name: string, expType: types ref, value: values ref, location: location, possible: (unit -> string list) ref (* Used with the IDE. *) } | Literal of (* Literal constants may be overloaded on more than one type. The types are specified by installing appropriate conversion functions: convInt, convReal, convChar, convString and convWord. *) { converter: values, expType: types ref, literal: string, location: location } | Applic of (* Function application *) { f: parsetree, arg: parsetree, location: location, isInfix: bool, expType: types ref } | Cond of (* Conditional *) { test: parsetree, thenpt: parsetree, elsept: parsetree, location: location, thenBreak: breakPoint option ref, elseBreak: breakPoint option ref } | TupleTree of { fields: parsetree list, location: location, expType: types ref } | ValDeclaration of { dec: valbind list, explicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, implicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, location: location } | FunDeclaration of { dec: fvalbind list, explicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, implicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, location: location } | OpenDec of (* Open a structure. The variables, structures and types are just needed if debugging information is being generated. *) { decs: structureIdentForm list, variables: values list ref, structures: structVals list ref, typeconstrs: typeConstrSet list ref, location: location } | Constraint of (* Constraint (explicit type given) *) (* A constraint has a value and a type. The actual type, will, however be the unification of these two and not necessarily the given type. *) { value: parsetree, given: typeParsetree, location: location } | Layered of (* Layered pattern. Equivalent to an ordinary pattern except that the variable is given the name of the object which is to be matched. *) { var: parsetree, pattern: parsetree, location: location } | Fn of { matches: matchtree list, location: location, expType: types ref } | Localdec of (* Local dec in dec and let dec in exp. *) { decs: (parsetree * breakPoint option ref) list, body: (parsetree * breakPoint option ref) list, isLocal: bool, varsInBody: values list ref, (* Variables in the in..dec part of a local declaration. *) location: location } | TypeDeclaration of typebind list * location | AbsDatatypeDeclaration of (* Datatype and Abstract Type declarations *) { isAbsType: bool, typelist: datatypebind list, withtypes: typebind list, declist: (parsetree * breakPoint option ref) list, location: location, equalityStatus: bool list ref } | DatatypeReplication of { newType: string, oldType: string, oldLoc: location, newLoc: location, location: location } | ExpSeq of (parsetree * breakPoint option ref) list * location | Directive of (* Directives are infix, infixr and nonfix. They are processed by the parser itself and only appear in the parse tree for completeness. *) { tlist: string list, fix: infixity, location: location } | ExDeclaration of exbind list * location | Raise of parsetree * location | HandleTree of (* Execute an expression and catch any exceptions. *) { exp: parsetree, hrules: matchtree list, location: location, listLocation: location } | While of (* Ordinary while-loop *) { test: parsetree, body: parsetree, location: location, breakPoint: breakPoint option ref } | Case of (* Case-statement *) { test: parsetree, match: matchtree list, location: location, listLocation: location, expType: types ref } | Andalso of { first: parsetree, second: parsetree, location: location } | Orelse of { first: parsetree, second: parsetree, location: location } | Labelled of (* Labelled record & the entry in the list. "frozen" is false if it's a pattern with "...". *) { recList: labelRecEntry list, frozen: bool, expType: types ref, location: location } | Selector of { name: string, labType: types, typeof: types, location: location } | List of { elements: parsetree list, location: location, expType: types ref } | EmptyTree | WildCard of location | Unit of location | Parenthesised of parsetree * location and valbind = (* Value bindings.*) ValBind of (* Consists of a declaration part (pattern) and an expression. *) { dec: parsetree, exp: parsetree, line: location, isRecursive: bool, variables: values list ref (* list of variables declared and their poly vars *) } and fvalbind = (* Function binding *) (* `Fun' bindings *) (* A function binding is a list of clauses, each of which uses a valBinding to hold the list of patterns and the corresponding function body. The second pass extracts the function variable and the number of patterns in each clause. It checks that they are the same in each clause. *) FValBind of { clauses: fvalclause list, numOfPatts: int ref, functVar: values ref, argType: types ref, resultType: types ref, location: location } and fvalclause = (* Clause within a function binding. *) FValClause of { dec: funpattern, exp: parsetree, line: location, breakPoint: breakPoint option ref } and typebind = (* Non-generative type binding *) TypeBind of { name: string, typeVars: typeVarForm list, decType: typeParsetree option, isEqtype: bool, (* True if this was an eqtype in a signature. *) tcon: typeConstrSet ref, nameLoc: location, fullLoc: location } and datatypebind = (* Generative type binding *) DatatypeBind of { name: string, typeVars: typeVarForm list, constrs: valueConstr list, tcon: typeConstrSet ref, nameLoc: location, fullLoc: location } and exbind = (* An exception declaration. It has a name and optionally a previous exception and a type. *) ExBind of { name: string, previous: parsetree, ofType: typeParsetree option, value: values ref, nameLoc: location, fullLoc: location } and matchtree = (* A match is a pattern and an expression. If the pattern matches then the expression is evaluated in the environment of the pattern. *) MatchTree of { vars: parsetree, exp: parsetree, location: location, argType: types ref, resType: types ref, breakPoint: breakPoint option ref } (* Name of a structure. Used only in an ``open'' declaration. *) withtype structureIdentForm = { name: string, value: structVals option ref, location: location } (* An entry in a label record in an expression or a pattern. *) and labelRecEntry = { name: string, nameLoc: location, valOrPat: parsetree, fullLocation: location, expType: types ref } and funpattern = (* The declaration part of a fun binding. *) { ident: { name: string, expType: types ref, location: location }, isInfix: bool, args: parsetree list, constraint: typeParsetree option } and valueConstr = {constrName: string, constrArg: typeParsetree option, idLocn: location, constrVal: values ref} structure Sharing: sig type types = types and typeVarForm = typeVarForm and typeConstrSet = typeConstrSet and values = values and infixity = infixity and structVals = structVals and typeParsetree = typeParsetree and parsetree = parsetree and valbind = valbind and fvalbind = fvalbind and fvalclause = fvalclause and typebind = typebind and datatypebind = datatypebind and exbind = exbind and matchtree = matchtree end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/CodegenParsetreeSig.sml0000644000175000017500000000275413204034553024134 0ustar daviddavid(* Copyright (c) 2013, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CodegenParsetreeSig = sig type parsetree type lexan type level type typeVarMap type codetree type codeBinding type environEntry type debuggerStatus val gencode: parsetree * lexan * debuggerStatus * level * (int->int) * typeVarMap * string * (codeBinding list * debuggerStatus * typeVarMap -> codeBinding list * debuggerStatus) -> codeBinding list * debuggerStatus structure Sharing: sig type parsetree = parsetree and lexan = lexan and codetree = codetree and environEntry = environEntry and level = level and typeVarMap = typeVarMap and codeBinding = codeBinding and debuggerStatus = debuggerStatus end end polyml-5.7.1/mlsource/MLCompiler/ParseTree/EXPORT_PARSETREE.sml0000644000175000017500000006323613204034553022707 0ustar daviddavid(* Copyright (c) 2013, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor EXPORT_PARSETREE ( structure BASEPARSETREE : BaseParseTreeSig structure PRINTTREE: PrintParsetreeSig structure LEX : LEXSIG structure STRUCTVALS : STRUCTVALSIG structure EXPORTTREE: EXPORTTREESIG structure TYPETREE : TYPETREESIG structure DEBUGGER : DEBUGGERSIG sharing LEX.Sharing = TYPETREE.Sharing = STRUCTVALS.Sharing = EXPORTTREE.Sharing = BASEPARSETREE.Sharing = PRINTTREE.Sharing = DEBUGGER.Sharing ): ExportParsetreeSig = struct open LEX open STRUCTVALS open EXPORTTREE open TYPETREE open BASEPARSETREE open PRINTTREE fun getExportTree(navigation, p: parsetree) = let (* Common properties for navigation and printing. *) val commonProps = exportNavigationProps navigation @ [PTprint(fn d => displayParsetree(p, d))] fun asParent () = getExportTree(navigation, p) (* Put all these into a common list. That simplifies navigation between the various groups in abstypes and datatypes. *) datatype lType = DataT of datatypebind | TypeB of typebind | Decl of parsetree * breakPoint option ref (* Common code for datatypes, abstypes and type bindings. *) fun exportTypeBinding(navigation, this as DataT(DatatypeBind{name, nameLoc, fullLoc, constrs, tcon=ref(TypeConstrSet(tcon, _)), ...})) = let fun asParent () = exportTypeBinding(navigation, this) (* Ignore any type variables before the type name. *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=SOME getConstrs}, name, nameLoc, definingLocationProps(tcLocations tcon)) and getConstrs () = let fun exportConstrs(navigation, {constrName, idLocn, constrVal=ref(Value{locations, ...}), ... }) = (* TODO: the constructor type. *) getStringAsTree(navigation, constrName, idLocn, definingLocationProps locations) in (fullLoc, (* TODO: We need a separate location for the constrs. *) exportList(exportConstrs, SOME asParent) constrs @ exportNavigationProps {parent=SOME asParent, previous=SOME getName, next=NONE}) end in (fullLoc, PTfirstChild getName :: exportNavigationProps navigation) end | exportTypeBinding(navigation, this as TypeB(TypeBind{name, nameLoc, decType = SOME decType, fullLoc, tcon=ref(TypeConstrSet(tcon, _)), ...})) = let fun asParent () = exportTypeBinding(navigation, this) (* Ignore any type variables before the type name. *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=SOME getType}, name, nameLoc, definingLocationProps(tcLocations tcon)) and getType () = typeExportTree({parent=SOME asParent, previous=SOME getName, next=NONE}, decType) in (fullLoc, PTfirstChild getName :: exportNavigationProps navigation) end (* TypeBind is also used in a signature in which case decType could be NONE. *) | exportTypeBinding(navigation, this as TypeB(TypeBind{name, nameLoc, decType = NONE, fullLoc, tcon=ref(TypeConstrSet(tcon, _)), ...})) = let fun asParent () = exportTypeBinding(navigation, this) (* Ignore any type variables before the type name. *) (* Retain this as a child entry in case we decide to add the type vars later. *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=NONE}, name, nameLoc, definingLocationProps(tcLocations tcon)) in (fullLoc, PTfirstChild getName :: exportNavigationProps navigation) end | exportTypeBinding(navigation, Decl dec) = (* Value declarations in an abstype. *) exportTreeWithBpt(navigation, dec) (* In a couple of cases we can have a breakpoint associated with an entry. *) and exportTreeWithBpt(nav, (p, ref NONE)) = getExportTree (nav, p) | exportTreeWithBpt(nav, (p, ref (SOME bpt))) = let val (loc, props) = getExportTree (nav, p) in (loc, PTbreakPoint bpt :: props) end fun exportMatch(navigation, p as MatchTree{location, vars, exp, resType = ref rtype, argType = ref atype, breakPoint = ref bpt, ...}) = let fun asParent () = exportMatch(navigation, p) val debugProp = case bpt of NONE => [] | SOME bpt => [PTbreakPoint bpt] in (location, [PTprint(fn d => displayMatch(p, d)), PTtype (mkFunctionType (atype, rtype))] @ exportList(getExportTree, SOME asParent) [vars, exp] @ exportNavigationProps navigation @ debugProp ) end in case p of Ident{location, expType=ref expType, value, possible, name, ...} => let (* Include the type and declaration properties if these have been set. *) val (decProp, references, possProp) = case value of ref (Value{name = "", ...}) => let (* Generate possible completions. For the moment just consider simple prefixes. *) val completions = List.filter (String.isPrefix name) (! possible ()) in ([], NONE, [PTcompletions completions]) end | ref (Value{locations, references, ...}) => let (* If this is in a pattern it could be the defining location of the id. It's complicated trying to find out exactly which is the defining location so we check to see if this is the DeclaredAt location. *) val locProps = case List.find (fn DeclaredAt l => l = location | _ => false) locations of SOME _ => definingLocationProps locations | NONE => mapLocationProps locations in (locProps, references, []) end val refProp = case references of NONE => [] | SOME {exportedRef=ref exp, localRef=ref locals, recursiveRef=ref recs} => [PTreferences(exp, List.map #1 recs @ locals)] in (location, PTtype expType :: decProp @ commonProps @ refProp @ possProp) end | Literal {location, expType=ref expType, ...} => (location, PTtype expType :: commonProps) (* Infixed application. For the purposes of navigation we treat this as three entries in order. *) | Applic{location, f, arg = TupleTree{fields=[left, right], ...}, isInfix = true, expType=ref expType, ...} => (location, PTtype expType :: exportList(getExportTree, SOME asParent) [left, f, right] @ commonProps) (* Non-infixed application. *) | Applic{location, f, arg, expType=ref expType, ...} => (location, PTtype expType :: exportList(getExportTree, SOME asParent) [f, arg] @ commonProps) | Cond{location, test, thenpt, elsept, thenBreak, elseBreak, ...} => (location, exportList(exportTreeWithBpt, SOME asParent) [(test, ref NONE), (thenpt, thenBreak), (elsept, elseBreak)] @ commonProps) | TupleTree{fields, location, expType=ref expType, ...}=> (location, PTtype expType :: exportList(getExportTree, SOME asParent) fields @ commonProps) | ValDeclaration{location, dec, ...} => let fun exportVB(navigation, vb as ValBind{dec, exp, line, ...}) = let val vbProps = exportNavigationProps navigation (* First child should give the pattern *) (* Second child should give the expression *) fun exportThis () = exportVB(navigation, vb) val asChild = exportList(getExportTree, SOME exportThis) [dec, exp] in (line, asChild @ vbProps) end val expChild = exportList(exportVB, SOME asParent) dec in (* We need a special case for a top-level expression. This has been converted by the parser into val it = exp but the "val it = " takes up no space. We need to go directly to the expression in that case. *) case dec of [ValBind{dec=Ident{name="it", location=itLoc, ...}, exp, ...}] => if #startPosition itLoc = #endPosition itLoc andalso #startLine itLoc = #endLine itLoc then getExportTree(navigation, exp) else (location, expChild @ commonProps) | _ => (location, expChild @ commonProps) end | FunDeclaration{location, dec, ...} => let (* It's easiest to put these all together into a single list. *) datatype funEntry = FunIdent of { name: string, expType: types ref, location: location } * values | FunPtree of parsetree | FunConstraint of typeParsetree | FunInfixed of funEntry list * location fun exportFunEntry(navigation, FunIdent({expType=ref expType, location, ...}, Value{references, locations, ...})) = let val refProp = case references of NONE => [] | SOME {exportedRef=ref exp, localRef=ref locals, recursiveRef=ref recs} => [PTreferences(exp, List.map #1 recs @ locals)] in (location, refProp @ definingLocationProps locations @ (PTtype expType :: exportNavigationProps navigation)) end | exportFunEntry(navigation, FunPtree pt) = getExportTree(navigation, pt) | exportFunEntry(navigation, FunConstraint typ) = typeExportTree(navigation, typ) | exportFunEntry(navigation, this as FunInfixed(inf, location)) = let fun asParent () = exportFunEntry(navigation, this) val expChild = exportList(exportFunEntry, SOME asParent) inf in (location, expChild @ exportNavigationProps navigation) end fun exportAClause( FValClause{dec = {ident, isInfix, args, constraint}, exp, breakPoint = ref bpt, ...}, idVal, exportThis) = let (* The effect of this is to have all the elements of the clause as a single level except that if we have an infixed application of the function (e.g. fun f o g = ...) then this is a subnode. *) val funAndArgs = case (isInfix, args) of (true, TupleTree{fields=[left, right], location, ...} :: otherArgs) => (* Infixed. *) FunInfixed([FunPtree left, FunIdent(ident, idVal), FunPtree right], location) :: map FunPtree otherArgs | (_, args) => (* Normal prefixed form. *) FunIdent(ident, idVal) :: map FunPtree args val constraint = case constraint of NONE => [] |SOME typ => [FunConstraint typ] val debugProp = case bpt of NONE => [] | SOME bpt => [PTbreakPoint bpt] in exportList(exportFunEntry, SOME exportThis) (funAndArgs @ constraint @ [FunPtree exp]) @ debugProp end fun exportFB(navigation, fb as FValBind{clauses=[clause], location, functVar = ref idVal, ...}) = (* If there's just one clause go straight to it. Otherwise we have an unnecessary level of navigation. *) let val fbProps = exportNavigationProps navigation val asChild = exportAClause(clause, idVal, fn () => exportFB(navigation, fb)) in (location, asChild @ fbProps) end | exportFB(navigation, fb as FValBind{clauses, location, functVar = ref idVal, ...}) = let val fbProps = exportNavigationProps navigation (* Each child gives a clause. *) (* First child should give the pattern *) (* Second child should give the expression *) fun exportThis () = exportFB(navigation, fb) fun exportClause(navigation, clause as FValClause{ line, ...}) = let val clProps = exportNavigationProps navigation val asChild = exportAClause(clause, idVal, fn () => exportClause(navigation, clause)) in (line, asChild @ clProps) end val asChild = exportList(exportClause, SOME exportThis) clauses in (location, asChild @ fbProps) end val expChild = exportList(exportFB, SOME asParent) dec in (location, expChild @ commonProps) end | OpenDec{location, decs, ...} => let fun exportStructIdent(navigation, { value, location, ...} ) = let (* Include the declaration properties if it has been set. *) val locProps = case !value of SOME(Struct{locations, ...}) => mapLocationProps locations | NONE => [] val siProps = exportNavigationProps navigation @ locProps in (location, siProps) end val expChild = exportList(exportStructIdent, SOME asParent) decs in (location, expChild @ commonProps) end | Constraint{location, value, given, ...} => let (* The first position is the expression, the second the type *) fun getExpr () = getExportTree({parent=SOME asParent, previous=NONE, next=SOME getType}, value) and getType () = typeExportTree({parent=SOME asParent, previous=SOME getExpr, next=NONE}, given) in (location, PTfirstChild getExpr :: commonProps) end | Layered{location, var, pattern, ...} => (location, exportList(getExportTree, SOME asParent) [var, pattern] @ commonProps) | Fn {matches, location, expType = ref expType, ...} => (location, PTtype expType :: exportList(exportMatch, SOME asParent) matches @ commonProps) | Localdec{location, decs, body, ...} => (location, exportList(exportTreeWithBpt, SOME asParent) (decs @ body) @ commonProps) | TypeDeclaration(tbl, location) => let val allItems = List.map TypeB tbl in (location, exportList(exportTypeBinding, SOME asParent) allItems @ commonProps) end | AbsDatatypeDeclaration { location, typelist, withtypes, declist, ... } => let val allItems = List.map DataT typelist @ List.map TypeB withtypes @ List.map Decl declist in (location, exportList(exportTypeBinding, SOME asParent) allItems @ commonProps) end | DatatypeReplication{location, ...} => (* TODO *) (location, commonProps) | ExpSeq(ptl, location) => (location, exportList(exportTreeWithBpt, SOME asParent) ptl @ commonProps) | Directive{location, ...} => (* No need to process the individual identifiers. *) (location, commonProps) | ExDeclaration(exbinds, location) => let (* There are three possibilities here. exception exc; exception exc of ty; exception exc = exc' *) fun exportExdec(navigation, ExBind{name, previous=EmptyTree, ofType=NONE, nameLoc, value=ref(Value{locations, ...}), ...}) = (* Simple, generative exception with no type. *) getStringAsTree(navigation, name, nameLoc, PTtype exnType :: definingLocationProps locations) | exportExdec(navigation, eb as ExBind{name, previous=EmptyTree, ofType=SOME ofType, nameLoc, fullLoc, value=ref(Value{locations, ...}), ...}) = (* exception exc of type. *) let fun asParent () = exportExdec (navigation, eb) fun getName () = getStringAsTree({parent=SOME asParent, next=SOME getOfType, previous=NONE}, name, nameLoc, (* Type could be in here? *)definingLocationProps locations) and getOfType () = typeExportTree({parent=SOME asParent, previous=SOME getName, next=NONE}, ofType) in (fullLoc, PTfirstChild getName :: exportNavigationProps navigation) end | exportExdec(navigation, eb as ExBind{name, previous, (* ofType=NONE, *) nameLoc, fullLoc, value=ref(Value{locations, ...}), ...}) = let fun asParent () = exportExdec (navigation, eb) fun getName () = getStringAsTree({parent=SOME asParent, next=SOME getPreviousExc, previous=NONE}, name, nameLoc, (* Type could be in here? *)definingLocationProps locations) and getPreviousExc () = getExportTree({parent=SOME asParent, previous=SOME getName, next=NONE}, previous) in (fullLoc, PTfirstChild getName :: exportNavigationProps navigation) end val expChild = exportList(exportExdec, SOME asParent) exbinds in (location, expChild @ commonProps) end | Raise(raiseExp, location) => let fun getExp () = getExportTree({parent=SOME asParent, next=NONE, previous=NONE}, raiseExp) in (location, [PTfirstChild getExp] @ commonProps) end | HandleTree{location, exp, hrules, listLocation, ...} => let (* The first position is the expression, the second the matches *) fun getExpr () = getExportTree({parent=SOME asParent, previous=NONE, next=SOME getMatches}, exp) and getMatches () = (listLocation, exportList(exportMatch, SOME getMatches) hrules @ exportNavigationProps{parent=SOME asParent, previous=SOME getExpr, next=NONE}) in (location, [PTfirstChild getExpr] @ commonProps) end | While{location, test, body, breakPoint, ...} => (location, exportList(exportTreeWithBpt, SOME asParent) [(test, ref NONE), (body, breakPoint)] @ commonProps) | Case{location, test, match, listLocation, expType=ref expType, ...} => let (* The first position is the expression, the second the matches *) fun getExpr () = getExportTree({parent=SOME asParent, previous=NONE, next=SOME getMatches}, test) and getMatches () = (listLocation, exportList(exportMatch, SOME getMatches) match @ exportNavigationProps{parent=SOME asParent, previous=SOME getExpr, next=NONE}) in (location, [PTfirstChild getExpr, PTtype expType] @ commonProps) end | Andalso {location, first, second, ...} => (location, exportList(getExportTree, SOME asParent) [first, second] @ commonProps) | Orelse{location, first, second, ...} => (location, exportList(getExportTree, SOME asParent) [first, second] @ commonProps) | Labelled{location, expType=ref expType, recList, ...} => let (* It's convenient to be able to click on the label part and get the type of the expression or pattern on the right of the '='. *) fun exportField(navigation, label as {name, nameLoc, valOrPat, expType=ref expType, fullLocation, ...}) = let val patTree as (patLocation, _) = getExportTree(navigation, valOrPat) in if patLocation = fullLocation then (* The parser rewrites { name, ...} as { name=name, ... } (more generally { name: ty as pat, ...} as { name = name: ty as pat). To avoid having nodes that overlap we return only the pattern part here. *) patTree else let (* The first position is the label, the second the type *) fun asParent () = exportField (navigation, label) fun getLab () = getStringAsTree({parent=SOME asParent, next=SOME getExp, previous=NONE}, name, nameLoc, [PTtype expType]) and getExp () = getExportTree({parent=SOME asParent, previous=SOME getLab, next=NONE}, valOrPat) in (fullLocation, PTfirstChild getLab :: exportNavigationProps navigation) end end val expChild = exportList(exportField, SOME asParent) recList in (location, PTtype expType :: (expChild @ commonProps)) end | Selector{location, typeof, ...} => (location, PTtype typeof :: commonProps) | List{elements, location, expType = ref expType, ...} => (location, PTtype expType :: exportList(getExportTree, SOME asParent) elements @ commonProps) | EmptyTree => (nullLocation, commonProps) | WildCard location => (location, commonProps) | Unit location => (location, PTtype unitType :: commonProps) | Parenthesised(p, _) => getExportTree(navigation, p) end fun getLocation c = #1 (getExportTree({parent=NONE, next=NONE, previous=NONE}, c)) (* Extract the declaration location from the location list. *) fun declaredAt [] = LEX.nullLocation | declaredAt (DeclaredAt loc :: _) = loc | declaredAt (_::l) = declaredAt l (* Types that can be shared. *) structure Sharing = struct type lexan = lexan and parsetree = parsetree and matchtree = matchtree and locationProp = locationProp and pretty = pretty and ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/PrintParsetreeSig.sml0000644000175000017500000000263213204034553023657 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature PrintParsetreeSig = sig type lexan type parsetree type matchtree type pretty type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val displayParsetree: parsetree * FixedInt.int -> pretty val displayMatch: matchtree * FixedInt.int -> pretty val errorNear: lexan * bool * parsetree * location * string -> unit structure Sharing: sig type lexan = lexan and parsetree = parsetree and matchtree = matchtree and pretty = pretty end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/PARSE_TREE.ML0000644000175000017500000004154713204034553021463 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-15 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor PARSE_TREE ( structure BASEPARSETREE : BaseParseTreeSig structure PRINTTREE: PrintParsetreeSig structure EXPORTTREE: ExportParsetreeSig structure TYPECHECKTREE: TypeCheckParsetreeSig structure CODEGENPARSETREE: CodegenParsetreeSig structure LEX : LEXSIG structure STRUCTVALS : STRUCTVALSIG; structure TYPETREE : TYPETREESIG sharing LEX.Sharing = TYPETREE.Sharing = STRUCTVALS.Sharing = BASEPARSETREE.Sharing = PRINTTREE.Sharing = EXPORTTREE.Sharing = CODEGENPARSETREE.Sharing = TYPECHECKTREE.Sharing ) : PARSETREESIG = struct open LEX open STRUCTVALS open TYPETREE open BASEPARSETREE open PRINTTREE open EXPORTTREE open CODEGENPARSETREE open TYPECHECKTREE val badType = BadType fun isIdent (Ident _) = true | isIdent _ = false; val unit = Unit; val wildCard = WildCard; val emptyTree = EmptyTree; (* A general type variable for an expression. This is used to record the type. *) fun makeGeneralTypeVar() = mkTypeVar(generalisable, false, false, false) fun mkIdent (name, loc) : parsetree = Ident { name = name, expType = ref EmptyType, value = ref undefinedValue, location = loc, possible = ref(fn () => []) }; local (* Make overloaded functions for the conversions. *) (* For the moment we make the type string->t and raise an exception if the constant cannot be converted. *) val ty = mkOverloadSet[] val funType = mkFunctionType (stringType, ty); fun mkOverloaded name : values = makeOverloaded (name, funType, TypeDep) in val convString = mkOverloaded "convString" and convInt = mkOverloaded "convInt" and convWord = mkOverloaded "convWord" and convChar = mkOverloaded "convChar" and convReal = mkOverloaded "convReal" end; fun mkString(s: string, loc): parsetree = Literal{converter=convString, literal=s, expType=ref EmptyType, location=loc}; fun mkInt (i : string, loc) : parsetree = Literal{converter=convInt, literal=i, expType=ref EmptyType, location=loc}; fun mkReal (r : string, loc) : parsetree = Literal{converter=convReal, literal=r, expType=ref EmptyType, location=loc}; fun mkChar (c : string, loc) : parsetree = Literal{converter=convChar, literal=c, expType=ref EmptyType, location=loc}; fun mkWord (w : string, loc) : parsetree = Literal{converter=convWord, literal=w, expType=ref EmptyType, location=loc}; fun mkApplic (f, arg, loc, isInfix) : parsetree = Applic { f = f, arg = arg, location = loc, isInfix = isInfix, expType = ref EmptyType }; fun mkCond (test, thenpt, elsept, location) : parsetree = Cond { test = test, thenpt = thenpt, elsept = elsept, location = location, thenBreak = ref NONE, elseBreak = ref NONE } fun mkTupleTree(fields, location) = TupleTree { fields=fields, location=location, expType = ref EmptyType } fun mkValDeclaration (dec, explicit, implicit, location) : parsetree = ValDeclaration { dec = dec, explicit = explicit, implicit = implicit, location = location }; fun mkFunDeclaration (dec, explicit, implicit, location) : parsetree = FunDeclaration { dec=dec, explicit = explicit, implicit = implicit, location = location }; fun mkOpenTree(ptl : structureIdentForm list, location): parsetree = OpenDec{decs=ptl, variables=ref [], structures = ref [], typeconstrs = ref [], location = location}; fun mkStructureIdent (name, location) : structureIdentForm = { name = name, value = ref NONE, location = location }; fun mkValBinding (dec, exp, isRecursive, line) : valbind = ValBind { dec = dec, exp = exp, isRecursive = isRecursive, line = line, variables = ref nil }; fun mkClausal(clauses, location) : fvalbind = FValBind { clauses = clauses, numOfPatts = ref 0, functVar = ref undefinedValue, argType = ref badType, resultType = ref badType, location = location }; (* A clause for a clausal function is initially parsed as a pattern because that is the easiest way to handle it but that's actually more general than the syntax allows. Process it at this point to check for some validity. *) fun mkFunPattern (fPat, lex): funpattern * string * int = let fun makeId(name, loc) = {name = name, expType = ref EmptyType, location = loc } fun unpick (Applic{ f, arg, isInfix, ... }) = (* "Application" of function to a parameter. *) let val () = (* This could be an infixed application and since it has been parsed using the normal infix handler the arguments could be prefixed constructor applications or infixed constructor applications with a higher precedence. These are not allowed because the arguments are supposed to just be "atpats". Any applications should have been parenthesised. *) case (isInfix, arg) of (true, TupleTree{fields=[Applic _, _], location, ...}) => errorMessage(lex, location, "Constructor applications in fun bindings must be parenthesised.") | (true, TupleTree{fields=[_, Applic _], location, ...}) => errorMessage(lex, location, "Constructor applications in fun bindings must be parenthesised.") | _ => (); val { ident, isInfix, args, ... } = unpick f in { ident=ident, isInfix=isInfix, args = args @ [arg], constraint = NONE } end | unpick (Ident{ name, location, ...}) = { ident={ name = name, location = location, expType = ref EmptyType}, isInfix=false, args = [], constraint = NONE } | unpick (Parenthesised(Applic{ f = Ident { name, location, ...}, isInfix=true, arg, ... }, _)) = { ident={ name = name, location = location, expType = ref EmptyType}, isInfix=true, args = [arg], constraint = NONE } | unpick (Parenthesised(_, location)) = (* Only the bottom (i.e. first) application may be parenthesised and then only if the application is infixed. *) ( errorMessage(lex, location, "Parentheses are only allowed for infixed applications in fun bindings."); { ident=makeId("", location), isInfix=false, args = [], constraint = NONE } ) | unpick _ = ( errorMessage(lex, location lex, "Syntax error: fun binding is not an identifier applied to one or more patterns."); { ident=makeId("", location lex), isInfix=false, args = [], constraint = NONE } ) val unpicked as { ident = { name, ...}, args, ...} = (* The "pattern" may have a single constraint giving the result type of the function. Otherwise it must be a set of one or more, possibly infixed, applications. *) case fPat of Constraint { value = value as Applic _, given, ... } => let val { ident, isInfix, args, ... } = unpick value in { ident = ident, isInfix = isInfix, args = args, constraint = SOME given } end | Constraint { value = value as Parenthesised(Applic _, _), given, ... } => let val { ident, isInfix, args, ... } = unpick value in { ident = ident, isInfix = isInfix, args = args, constraint = SOME given } end | fPat as Parenthesised(Applic _, _) => unpick fPat | fPat as Applic _ => unpick fPat | _ => ( errorMessage(lex, location lex, "Syntax error: fun binding is not an identifier applied to one or more patterns."); { ident=makeId("", location lex), isInfix=false, args = [], constraint = NONE } ) in (unpicked, name, List.length args) end; fun mkClause (dec, exp, line) : fvalclause = FValClause { dec = dec, exp = exp, line = line, breakPoint = ref NONE } fun mkList(elem, loc) = List{ elements = elem, location = loc, expType = ref EmptyType } fun mkConstraint (value, given, location) : parsetree = Constraint { value = value, given = given, location = location }; fun mkLayered (var, pattern, location) : parsetree = Layered { var = var, pattern = pattern, location = location }; fun mkFn(matches, location) = Fn { matches = matches, location = location, expType = ref EmptyType } fun mkMatchTree (vars, exp, location) : matchtree = MatchTree { vars = vars, exp = exp, location = location, argType = ref badType, resType = ref badType, breakPoint = ref NONE } fun mkLocalDeclaration (decs, body, location, isLocal) : parsetree = Localdec { decs = map (fn p => (p, ref NONE)) decs, body = map (fn p => (p, ref NONE))body, isLocal = isLocal, varsInBody = ref [], location = location }; val mkTypeDeclaration : typebind list * location -> parsetree = TypeDeclaration; fun mkDatatypeDeclaration (typelist, withtypes, location) : parsetree = AbsDatatypeDeclaration { isAbsType = false, typelist = typelist, withtypes = withtypes, declist = [], location = location, equalityStatus = ref [] }; fun mkAbstypeDeclaration (typelist, withtypes, declist, location) : parsetree = AbsDatatypeDeclaration { isAbsType = true, typelist = typelist, withtypes = withtypes, declist = map (fn p => (p, ref NONE)) declist, location = location, equalityStatus = ref [] }; val mkDatatypeReplication = DatatypeReplication fun mkTypeBinding (name, typeVars, decType, isEqtype, nameLoc, fullLoc) : typebind = TypeBind { name = name, typeVars = typeVars, decType = decType, isEqtype = isEqtype, tcon = ref(TypeConstrSet(undefConstr, [])), nameLoc = nameLoc, fullLoc = fullLoc }; fun mkDatatypeBinding (name, typeVars, constrs, typeNameLoc, fullLoc) : datatypebind = DatatypeBind { name = name, typeVars = typeVars, constrs = constrs, tcon = ref(TypeConstrSet(undefConstr, [])), nameLoc = typeNameLoc, fullLoc = fullLoc } fun mkValueConstr (name, arg, locn) = {constrName=name, constrArg=arg, idLocn=locn, constrVal=ref undefinedValue} fun mkExBinding (name, previous, typeof, nameLoc, fullLoc) : exbind = ExBind { name = name, previous = previous, ofType = typeof, value = ref undefinedValue, nameLoc = nameLoc, fullLoc = fullLoc }; fun mkLabelledTree (recList, frozen, location) : parsetree = Labelled { recList = recList, frozen = frozen, expType = ref EmptyType, location = location }; fun mkLabelRecEntry (name, nameLoc, valOrPat, fullLocation) = { name = name, nameLoc = nameLoc, valOrPat = valOrPat, fullLocation = fullLocation, expType = ref EmptyType } fun mkSelector(name, location) : parsetree = let (* Make a type for this. It's equivalent to fn { name = exp, ...} => exp. *) val resType = makeGeneralTypeVar(); val entryType = mkLabelEntry (name, resType); val labType = mkLabelled ([entryType], false) (* Not frozen*); in Selector { name = name, labType = labType, typeof = mkFunctionType (labType, resType), location = location } end; val mkRaise : parsetree * location -> parsetree = Raise; fun mkHandleTree (exp, hrules, location, listLocation) : parsetree = HandleTree { exp = exp, hrules = hrules, location = location, listLocation = listLocation }; fun mkWhile (test, body, location) : parsetree = While { test = test, body = body, location = location, breakPoint = ref NONE } fun mkCase (test, match, location, listLocation) : parsetree = Case { test = test, match = match, location = location, listLocation = listLocation, expType = ref EmptyType }; fun mkAndalso (first, second, location) : parsetree = Andalso { first = first, second = second, location = location }; fun mkOrelse (first, second, location) : parsetree = Orelse { first = first, second = second, location = location }; fun mkDirective (tlist, fix, location) : parsetree = Directive { tlist = tlist, fix = fix, location = location }; fun mkExpseq (pl: parsetree list, l: location) = ExpSeq (map (fn p => (p, ref NONE)) pl, l) val mkExDeclaration : exbind list * location -> parsetree = ExDeclaration; val mkParenthesised = Parenthesised (* Types that can be shared. *) structure Sharing = struct type lexan = lexan and pretty = pretty and environEntry = environEntry and codetree = codetree and codeBinding = codeBinding and types = types and values = values and typeId = typeId and structVals = structVals and typeConstrs= typeConstrs and typeVarForm=typeVarForm and env = env and infixity = infixity and structureIdentForm = structureIdentForm and typeParsetree = typeParsetree and parsetree = parsetree and valbind = valbind and fvalbind = fvalbind and fvalclause = fvalclause and typebind = typebind and datatypebind=datatypebind and exbind = exbind and labelRecEntry=labelRecEntry and ptProperties = ptProperties and matchtree = matchtree and typeVarMap = typeVarMap and level = level and debuggerStatus = debuggerStatus end end (* PARSETREE *); polyml-5.7.1/mlsource/MLCompiler/ParseTree/TYPECHECK_PARSETREE.sml0000644000175000017500000034365013204034553023206 0ustar daviddavid(* Copyright (c) 2013-2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor TYPECHECK_PARSETREE ( structure BASEPARSETREE : BaseParseTreeSig structure PRINTTREE: PrintParsetreeSig structure EXPORTTREE: ExportParsetreeSig structure LEX : LEXSIG structure CODETREE : CODETREESIG structure STRUCTVALS : STRUCTVALSIG; structure TYPETREE : TYPETREESIG structure VALUEOPS : VALUEOPSSIG; structure PRETTY : PRETTYSIG structure COPIER: COPIERSIG structure DATATYPEREP: DATATYPEREPSIG structure UTILITIES : sig type lexan; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option}; val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; val checkForDots: string * lexan * location -> unit; val splitString: string -> { first:string,second:string } structure Sharing: sig type lexan = lexan end end structure PRINTTABLE : sig type typeConstrs type codetree val getOverloads: string -> (typeConstrs * codetree) list structure Sharing: sig type codetree = codetree and typeConstrs = typeConstrs end end; structure MISC : sig exception InternalError of string; (* compiler error *) val quickSort : ('a -> 'a -> bool) -> 'a list -> 'a list; val lookupDefault : ('a -> 'b option) -> ('a -> 'b option) -> 'a -> 'b option end sharing LEX.Sharing = TYPETREE.Sharing = STRUCTVALS.Sharing = COPIER.Sharing = VALUEOPS.Sharing = UTILITIES.Sharing = PRETTY.Sharing = CODETREE.Sharing = PRINTTABLE.Sharing = DATATYPEREP.Sharing = BASEPARSETREE.Sharing = PRINTTREE.Sharing = EXPORTTREE.Sharing ): TypeCheckParsetreeSig = struct open MISC open LEX open CODETREE open STRUCTVALS open TYPETREE open VALUEOPS open UTILITIES open PRETTY open PRINTTABLE open DATATYPEREP open BASEPARSETREE open PRINTTREE open EXPORTTREE val emptyType = EmptyType val badType = BadType (* Second pass of ML parse tree. *) (* This is pass 2 of the compiler. It walks over the parse tree generated by pass 1 and looks up identifiers to match them to declarations. It performs the type checking. "makeTypeId" is used to construct unique identifiers for types depending on the context (i.e. in a signature, structure or functor). *) fun pass2 (v, makeTypeId, env, lex, sigTypeIdMap) = let (* Returns a function which can be passed to unify or apply to print a bit of context info. *) fun foundNear v () = let val errorDepth = errorDepth lex in displayParsetree (v, errorDepth) end (* A simpler error message routine for lookup_... where the message does not involve pretty-printing anything. *) fun giveError (v, lex, line) = fn message => errorNear (lex, true, v, line, message); fun checkForBuiltIn (name, v, lex, lineno, isConstr) = (* ML97 does not allow the standard constructors to be rebound and does not allow "it" to become a constructor. *) if name = "true" orelse name = "false" orelse name = "nil" orelse name = "::" orelse name = "ref" orelse (isConstr andalso name = "it") then errorNear(lex, true, v, lineno, "Rebinding or specifying \"" ^ name ^ "\" is illegal") else () (* Turn a result from unifyTypes into a pretty structure so that it can be included in a message. *) fun unifyErrorReport(lex, typeEnv) = unifyTypesErrorReport(lex, typeEnv, typeEnv, "unify") (* Error message for incompatible types. Displays both expressions and their types. *) fun typeMismatch (title, left, right, detail, lex : lexan, location, moreInfo) = let val message = PrettyBlock(3, true, [], [ PrettyString title, PrettyBreak(1, 0), left, PrettyBreak(1, 0), right, PrettyBreak(1, 0), PrettyBlock(0, false, [], [PrettyString "Reason:", PrettyBreak(1, 3), detail]) ]) in reportError lex { location = location, hard = true, message = message, context = SOME (moreInfo ()) } end; (* Error message for single expressions with the wrong type. e.g. "if" not followed by a "bool". *) fun typeWrong (title, value, detail, lex : lexan, location, moreInfo) = let val message = PrettyBlock(3, true, [], [ PrettyString title, PrettyBreak(1, 0), value, PrettyBreak(1, 0), PrettyBlock(0, false, [], [ PrettyString "Reason:", PrettyBreak(1, 3), detail]) ]) in reportError lex { location = location, hard = true, message = message, context = SOME (moreInfo ()) } end; (* Display a value and its type as part of an error message. *) fun valTypeMessage (lex, typeEnv) (title, value, valType) = let val errorDepth = errorDepth lex in PrettyBlock(3, false, [], [ PrettyString title, PrettyBreak(1, 0), displayParsetree (value, errorDepth), PrettyBreak(1, 0), PrettyString ":", PrettyBreak(1, 0), display(valType, 10000 (* All of it *), typeEnv) ]) end fun matchTypeMessage (lex, typeEnv) (title, match, valType) = let val errorDepth = errorDepth lex in PrettyBlock(3, false, [], [ PrettyString title, PrettyBreak(1, 0), displayMatch (match, errorDepth), PrettyBreak(1, 0), PrettyString ":", PrettyBreak(1, 0), display(valType, 10000 (* All of it *), typeEnv) ]) end (* Old error message and unification functions. These will eventually be removed. *) fun matchError (error: matchResult, lex : lexan, location : LEX.location, moreInfo : unit -> pretty, typeEnv) : unit = reportError lex { location = location, hard = true, message = unifyErrorReport(lex, typeEnv) error, context = SOME (moreInfo ()) } fun unify (alpha, beta, lex, location, moreInfo, typeEnv) = case unifyTypes (alpha, beta) of NONE => () | SOME error => matchError (error, lex, location, moreInfo, typeEnv) fun apply (f, arg, lex, location, moreInfo, typeEnv) = case eventual f of FunctionType {arg=farg, result} => ( unify (farg, arg, lex, location, moreInfo, typeEnv); result ) | ef => (* Type variables etc. - Use general case. *) let (* Make arg->'a, and unify with the function. *) val resType = mkTypeVar (generalisable, false, false, false) val fType = mkFunctionType (arg, resType) (* This may involve more than just assigning the type to "ef". *) val () = unify (ef, fType, lex, location, moreInfo, typeEnv); in resType (* The result is the type variable unified to the result. *) end (* These cases currently use the "apply" or "unify" and may need to be improved in order to produce better messages. apply: Literals. The conversion functions are applied to the string literal. In effect this produces the set of overloadings of the literal. This should never produce an error message. Constructors in patterns to their args. "case": the patterns are "applied" to the value to be tested. unify: Layered patterns, to set the variable. Also checks the pattern against any explicit type. Handlers: the handling patterns are unified against a function from exn -> the result type of the expression being handled. *) fun stringsOfSearchList { apply: (string * 'a -> unit) -> unit, ...} () = let val v = ref [] val () = apply (fn (s, _) => v := s :: !v) in !v end fun assignValues (level, letDepth, env, near, v) = let val typeEnv = { lookupType = fn s => case #lookupType env s of NONE => NONE | SOME t => SOME(t, NONE), lookupStruct = fn s => case #lookupStruct env s of NONE => NONE | SOME t => SOME(t, NONE) } (* Process each item of the sequence and return the type of the last item. A default item is returned if the list is empty. *) fun assignSeq(env, depth, l, isExp) = let fun applyList last [] = last | applyList _ ((h, _) :: t) = let val expT = assignValues(level, depth, env, v, h) val _ = if isExp andalso not (null t) then (* It's not the last value and we're going to discard it *) case checkDiscard(expT, lex) of NONE => () | SOME s => errorNear (lex, false, h, getLocation h, s) else () in applyList expT t end in applyList badType l end (* Variables, constructors and fn are non-expansive. [] is a derived form of "nil" so must be included. Integer and string constants are also constructors but cannot involve imperative type variables. Constrained versions are also non-expansive. This has been extended and made more explicit in ML 97. *) fun nonExpansive (Fn _) = true | nonExpansive (Ident _) = true | nonExpansive (List{elements = [], ...}) = true | nonExpansive (List{elements, ...}) = List.foldl (fn (v, a) => a andalso nonExpansive v) true elements | nonExpansive (Constraint {value, ...}) = nonExpansive value | nonExpansive (Literal _) = true | nonExpansive (Unit _) = true | nonExpansive (TupleTree{fields, ...}) = List.foldl (fn (v, a) => a andalso nonExpansive v) true fields | nonExpansive (Labelled{recList, ...}) = List.foldl (fn ({valOrPat, ...}, a) => a andalso nonExpansive valOrPat) true recList (* Every element must be non-expansive *) | nonExpansive (Applic{f, arg, ...}) = isNonRefConstructor f andalso nonExpansive arg | nonExpansive (Selector _) = true (* derived from fn {..} => ...*) | nonExpansive (Parenthesised(p, _)) = nonExpansive p | nonExpansive _ = false (* An application is non-expansive only if it is a, possibly constrained, constructor which is not ref. *) and isNonRefConstructor (Ident {value=ref v, ...}) = (* It is possible to rebind ref by way of datatype replication so we have to check the type here. *) let fun isRefConstructor t = case eventual t of FunctionType{result, ...} => (case eventual result of TypeConstruction{constr, ...} => sameTypeId (tcIdentifier constr, tcIdentifier refConstr) | _ => false) | _ => false in isConstructor v andalso not (isRefConstructor(valTypeOf v)) end | isNonRefConstructor (Constraint {value, ...}) = isNonRefConstructor value | isNonRefConstructor (Parenthesised(p, _)) = isNonRefConstructor p | isNonRefConstructor _ = false (* Applies "assignValues" or "processPattern" to every element of a list and unifies the types. Returns a type variable if the list is empty. This is used for lists, function values (fn .. => ...), handlers and case expressions. *) fun assignList _ _ [] = mkTypeVar (generalisable, false, false, false) | assignList (processValue: 'a->types, _, _) _ [single] = processValue single | assignList (processValue: 'a->types, displayValue, typeMsg) (errorMsg, itemName, separator, location, near) (tlist as hd :: tl) = let val firstType = processValue hd fun printList (doPrint: 'a*FixedInt.int->pretty) (c: 'a list, separator, depth): pretty list = if depth <= 0 then [PrettyString "..."] else case c of [] => [] | [v] => [doPrint (v, depth)] | (v::vs) => PrettyBlock (0, false, [], [ doPrint (v, depth), PrettyBreak (if separator = "," orelse separator = ";" orelse separator = "" then 0 else 1, 0), PrettyString separator ] ) :: PrettyBreak (1, 0) :: printList doPrint (vs, separator, depth - 1) fun applyList(ty, _, []) = ty | applyList(ty, n, h::t) = let val typ = processValue h in case unifyTypes (ty, typ) of NONE => applyList(ty, n+1, t) | SOME report => let (* We have a type error but we don't know which is correct. The previous items must have produced a consistent type otherwise we'd already have reported an error but we can't identify exactly where the error occurred. *) val errorDepth = errorDepth lex val previousValsAndType = PrettyBlock(3, false, [], [ PrettyString ( if n = 1 then itemName ^ " 1:" else itemName ^ "s 1-" ^ Int.toString n ^ ":"), PrettyBreak(1, 0), PrettyBlock(0, false, [], printList (*displayParsetree*)displayValue (List.take(tlist, n), separator, errorDepth)), PrettyBreak(1, 0), PrettyString ":", PrettyBreak(1, 0), display(ty, 10000 (* All of it *), typeEnv) ]) in typeMismatch(errorMsg, previousValsAndType, (*valTypeMessage*)typeMsg(lex, typeEnv) (concat[itemName, " ", Int.toString(n+1), ":"], h, typ), unifyErrorReport(lex, typeEnv) report, lex, location, foundNear near); (* Continue with "bad" which suppresses further error messages and return "bad" as the result. *) applyList(badType, n+1, t) end end in applyList(firstType, 1, tl) end fun ptAssignTypes (t, near) = assignTypes (t, fn (s, line) => lookupTyp ({lookupType = #lookupType env, lookupStruct = #lookupStruct env}, s, giveError (near, lex, line)), lex); (* Makes a type for an instance of an identifier. *) (* Get the current overload set for the function and return a new instance of the type containing the overload set. *) fun overloadType(Value{typeOf, access = Overloaded TypeDep, name, ...}, isConv) = #1 (generaliseOverload(typeOf, List.map #1 (getOverloads name), isConv)) | overloadType(Value{typeOf, ...}, _) = #1 (generalise typeOf) fun instanceType (v as Value{access=Overloaded TypeDep, ...}) = (* Look up the current overloading for this function. *) overloadType(v, false) | instanceType(Value{typeOf, ...}) = #1 (generalise typeOf) (* The types of constructors and variables are copied to create new instances of type variables. *) fun processPattern(pat, enterResult, level, notConst, mkVar, isRec) = let val mapProcessPattern = map (fn x => processPattern(x, enterResult, level, notConst, mkVar, isRec)); in case pat of Ident {name, value, expType, location, possible, ...} => (* Variable or nullary constructor. *) let (* Look up the name. If it is a constructor then use it, otherwise return `undefined'. If it is a qualified name, i.e. it contains a full-stop, we assume it is a constructor and give an error message if it does not exist. *) (* In ML 97 recursive declarations such as val rec f = ... override constructor status. If this is a recursive declaration we don't check for constructor status. *) val names = splitString name; val nameVal = if isRec then undefinedValue else if #first names = "" then (* Not qualified - may be a variable. *) getOpt (#lookupVal env name, undefinedValue) else (* Qualified - cannot be a variable. *) lookupValue ("Constructor", {lookupVal= #lookupVal env, lookupStruct= #lookupStruct env}, name, giveError (pat, lex, location)) (* Remember the possible names here. *) val () = possible := #allValNames env val instanceType = (* If the result is a constructor use it. *) if isConstructor nameVal (* exceptions. *) then if notConst then ( errorNear (lex, true, pat, location, "Identifier before `as' must not be a constructor."); badType ) else (* Must be a nullary constructor otherwise it should have been applied to something. *) let (* set this value in the record *) val () = value := nameVal; val isNullary = case nameVal of Value{class=Constructor{nullary, ...}, ...} => nullary | Value{typeOf, ...} => (* exception *) not (isSome(getFnArgType typeOf)) in if isNullary then instanceType nameVal else ( errorNear (lex, true, pat, location, "Constructor must be applied to an argument pattern."); badType ) end (* If undefined or another variable, construct a new variable. *) else let val props = [DeclaredAt location, SequenceNo (newBindingId lex)] val var = mkVar(name, mkTypeVar (level, false, false, false), props) in checkForDots (name, lex, location); (* Must not be qualified *) (* Must not be "true", "false" etc. *) checkForBuiltIn (name, v, lex, location, false); enterResult (name, var); value := var; valTypeOf var (* and return its type *) end; in expType := instanceType; (* Record the instance type.*) instanceType end | Literal{converter, expType, location, ...} => let (* Find out the overloadings on this converter and construct an instance of it. The converters are all functions from string to the result type. *) val instanceType = overloadType(converter, true) (* Apply the converter to string to get the type of the literal. *) val instance = apply(instanceType, stringType, lex, location, foundNear pat, typeEnv) in expType := instance; (* Record the instance type.*) instance end | Applic {f = con, arg, location, expType, ...} => let (* Apply the function to the argument and return the result. *) (* Function must be a constructor. *) val conType = case con of Ident {name, value, location, expType, possible, ...} => let (* Look up the value and return the type. *) (* Remember the possible names here. *) val () = possible := #allValNames env val constrVal = lookupValue ("Constructor", {lookupVal = #lookupVal env, lookupStruct = #lookupStruct env}, name, giveError (pat, lex, location)); in if isConstructor constrVal then let val cType = instanceType constrVal in value := constrVal; expType := cType; (* Record the instance type.*) cType end else (* Undeclared or a variable. *) ( if isUndefinedValue constrVal then () else errorNear (lex, true, pat, location, name ^ " is not a constructor"); badType ) end | _ => (* con is not an Ident *) ( errorNear (lex, true, pat, location, "Constructor in a pattern was not an identifier"); badType ) val patType = processPattern(arg, enterResult, level, notConst, mkVar, isRec); (* Apply to the pattern type. *) val resultType = apply (conType, patType, lex, location, foundNear pat, typeEnv) in expType := resultType; (* Record the instance type.*) resultType end (* Applic *) | TupleTree{fields, expType, ...} => let (* Construct the type obtained by mapping "processPattern" onto each element of the tuple. *) val tupleType = mkProductType (mapProcessPattern fields) in expType := tupleType; tupleType end | Labelled {recList, frozen, expType, ...} => let (* Process each item in the list. *) fun mapLabels [] = [] | mapLabels ({name, valOrPat, expType, ...}::T) = (* Type is a label entry with the label name and the type of the pattern. *) let val ty = processPattern(valOrPat, enterResult, level, notConst, mkVar, isRec) in expType := ty; mkLabelEntry(name, ty) :: mapLabels T end; val patType = mkLabelled (sortLabels(mapLabels recList), frozen); in expType := patType; patType end | (aList as List{elements, location, expType}) => let (* Applies "processPattern" to every element of a list and unifies the types. Returns a type variable if the list is empty *) fun processElement elem = processPattern(elem, enterResult, level, notConst, mkVar, isRec) val elementType = assignList (processElement, displayParsetree, valTypeMessage) ("Elements in a list have different types.", "Item", ",", location, aList) elements val resType = if isBadType elementType then badType else mkTypeConstruction ("list", tsConstr listConstr, [elementType], [DeclaredAt inBasis]) in expType := resType; resType end | aConstraint as Constraint {value, given, location} => let val valType = processPattern(value, enterResult, level, notConst, mkVar, isRec); val theType = ptAssignTypes(given, pat); in (* These must be unifiable. *) case unifyTypes(valType, theType) of NONE => () (* OK. *) | SOME report => typeMismatch("Type mismatch in type constraint.", valTypeMessage (lex, typeEnv) ("Value:", value, valType), PrettyBlock(0, false, [], [ PrettyString "Constraint:", PrettyBreak(1, 0), display(theType, 10000 (* All of it *), typeEnv) ]), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear aConstraint); theType end | Layered {var, pattern, location} => let (* Unify the variable and the pattern - At this stage that simply involves assigning the type of the pattern to the variable, but it may result in more unification when the variable is used *) (* The "variable" must be either id or id: ty but we have to check that the id is not a constructor. *) val varType = processPattern(var, enterResult, level, true, mkVar, isRec); val patType = processPattern(pattern, enterResult, level, notConst, mkVar, isRec) val () = unify (varType, patType, lex, location, foundNear pat, typeEnv); in varType end | Unit _ => unitType | WildCard _ => mkTypeVar (generalisable, false, false, false) | Parenthesised(p, _) => processPattern(p, enterResult, level, notConst, mkVar, isRec) | _ => (* not a legal pattern *) badType end (* processPattern *) (* val assValues = assignValues level line env; *) and assValues near v = case v of Ident {name, value, expType, location, possible, ...} => let val expValue = lookupValue ("Value or constructor", {lookupVal = #lookupVal env, lookupStruct = #lookupStruct env}, name, giveError (near, lex, location)); (* Set the value and type found. *) val instanceType = instanceType expValue; in (* Include this reference in the list of local references. *) case expValue of Value { references=SOME{localRef, ...}, ...} => localRef := location :: ! localRef | _ => (); (* Include this type in the list of instance types. *) case expValue of Value { instanceTypes=SOME instanceRef, ...} => instanceRef := instanceType :: ! instanceRef | _ => (); expType := instanceType; value := expValue; possible := #allValNames env; instanceType (* Result is the instance type. *) end | Literal{converter, expType, location, ...} => let (* Find out the overloadings on this converter and construct an instance of it. The converters are all functions from string to the result type. *) val instanceType = overloadType(converter, true) val instance = apply(instanceType, stringType, lex, location, foundNear near, typeEnv) in expType := instance; instance end | Applic {f, arg, location, expType, ...} => let (* Apply the function to the argument and return the result. *) val funType = assValues near f; val argType = assValues near arg; (* If this is not a constructor the expression is expansive. We need to unify this with a type-variable with local (non-generalisable) scope to force any type variables to be monomorphic. The reason for this is that if there are polymorphic type variables remaining in identifiers in the next pass we treat the identifier as polymorphic and wrap a function round it. *) val () = if nonExpansive v then () else (unifyTypes (funType, mkTypeVar(level, false, false, false)); ()) (* Test to see if we have a function. *) val fType = case eventual funType of FunctionType {arg, result} => SOME(arg, result) | _ => (* May be a simple type variable. *) let val funResType = mkTypeVar (generalisable, false, false, false) val funArgType = mkTypeVar (generalisable, false, false, false) val fType = mkFunctionType (funArgType, funResType) in case unifyTypes (fType, funType) of NONE => SOME(funArgType, funResType) | SOME _ => ( (* It's not a function. *) typeMismatch("Type error in function application.", valTypeMessage (lex, typeEnv) ("Function:", f, funType), valTypeMessage (lex, typeEnv) ("Argument:", arg, argType), PrettyString "Value being applied does not have a function type", lex, location, foundNear near); NONE ) end in case fType of NONE => badType (* Not a function *) | SOME (fArg, fResult) => ( case unifyTypes (fArg, argType) of NONE => () | SOME report => typeMismatch("Type error in function application.", valTypeMessage (lex, typeEnv) ("Function:", f, funType), valTypeMessage (lex, typeEnv) ("Argument:", arg, argType), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear near); expType := fResult; (* Preserve for browsing. *) fResult ) end | Cond {test, thenpt, elsept, location, ...} => let (* The test must be bool, and the then and else parts must be the same. The result is either of these two once they have been unified. *) val testType = assValues v test; val thenType = assValues v thenpt; val elseType = assValues v elsept; in case unifyTypes(testType, boolType) of NONE => () | SOME report => typeWrong("Condition in if-statement must have type bool.", valTypeMessage (lex, typeEnv) ("If:", test, testType), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear v); case unifyTypes(thenType, elseType) of NONE => thenType (* or equally elseType *) | SOME report => ( typeMismatch("Type mismatch between then-part and else-part.", valTypeMessage (lex, typeEnv) ("Then:", thenpt, thenType), valTypeMessage (lex, typeEnv) ("Else:", elsept, elseType), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear v); badType ) end | TupleTree{fields, expType, ...} => let (* Construct the type obtained by mapping "assignValue" onto each element of the tuple. *) val tupleType = mkProductType (map (assValues near) fields) in expType := tupleType; tupleType end | Labelled {recList, frozen, expType, ...} => let (* Process each item in the list. *) fun labEntryToLabType {name, valOrPat, expType, ...} = let val ty = assValues v valOrPat in expType := ty; {name = name, typeof = ty } end val expressionType = mkLabelled (sortLabels (map labEntryToLabType recList), frozen) (* should always be true *); in expType := expressionType; expressionType end | Selector {typeof, ...} => typeof (* Already made. *) | ValDeclaration {dec, explicit, implicit, ...} => (assValDeclaration (dec, explicit, implicit); badType (* Should never be used. *)) | FunDeclaration fund => (assFunDeclaration fund; badType (* Should never be used. *)) | OpenDec{decs=ptl, variables, structures, typeconstrs, ...} => let (* Go down the list of names opening the structures. *) (* We have to be careful because open A B is not the same as open A; open B if A contains a structure called B. *) (* We accumulate the values so that we can produce debugging information if we need to. Note: we have to be careful if we have the same name in multiple structures. *) val valTable = HashTable.hashMake 10 and typeTable = HashTable.hashMake 10 and structTable = HashTable.hashMake 10 (* First get the structures... *) fun findStructure ({name, location, value, ...}: structureIdentForm) = let val foundStruct = lookupStructure ("Structure", {lookupStruct = #lookupStruct env}, name, giveError (v, lex, location)) val () = value := foundStruct (* Remember in case we export. *) in case foundStruct of SOME str => SOME(str, location) | NONE => NONE end val strs = List.mapPartial findStructure ptl (* Value and substructure entries in a structure will generally have "Formal" access which simply gives the offset of the entry within the parent structure. We need to convert these into "Select" entries to capture the address of the base structure. *) fun copyEntries (str as Struct{locations, signat = sigTbl, name=strName, ...}, varLoc) = let val openLocs = (* If we have a declaration location for the structure set this as the structure location. Add in here as the "open location". *) case List.find (fn DeclaredAt _ => true | _ => false) locations of SOME (DeclaredAt loc) => [StructureAt loc, OpenedAt varLoc] | _ => [OpenedAt varLoc] (* Open the structure. Formal entries are turned into Selected entries. *) val _ = COPIER.openSignature (sigTbl, { enterType = fn (name, TypeConstrSet(ty, valConstrs)) => let (* We also have to turn the value constructors into "selected" entries in case we use datatype replication. Unlike with "include" in signatures, there's no guarantee that the constructors will also be part of the value environment. They could have been redefined. *) val newTypeSet = TypeConstrSet(ty, List.map (fn c => mkSelectedVar (c, str, openLocs)) valConstrs) in HashTable.hashSet(typeTable, name, newTypeSet); #enterType env (name, newTypeSet) end, enterStruct = fn (name, strVal) => let val selectedStruct = makeSelectedStruct (strVal, str, openLocs); in HashTable.hashSet(structTable, name, selectedStruct); #enterStruct env (name, selectedStruct) end, enterVal = fn (name, value) => let val selectedVar = mkSelectedVar (value, str, openLocs); in HashTable.hashSet(valTable, name, selectedVar); #enterVal env (name, selectedVar) end }, (* Add the structure we're opening here to the types of the values. The name will be removed in messages if the type constructor is in scope but if it has been redefined we can get an identifiable name. *) strName ^ "."); in () end (* ...then put them into the name space. *) val () = List.app copyEntries strs; in variables := HashTable.fold (fn (_, v, t) => v :: t) [] valTable; structures := HashTable.fold (fn (_, v, t) => v :: t) [] structTable; typeconstrs := HashTable.fold (fn (_, v, t) => v :: t) [] typeTable; badType (* Does not return a type *) end | TypeDeclaration(tlist, _) => let (* This is either a type abbreviation in the core language, in a structure or in a signature or it is a type specification in a signaure. *) fun messFn(name, _, new) = errorNear (lex, true, v, declaredAt(tcLocations new), name ^ " has already been bound in this declaration"); val newEnv = noDuplicates messFn; (* First match all the types on the right-hand sides. *) fun processTypeBody (TypeBind {decType = SOME decType, ...}) = ptAssignTypes(decType, v) | processTypeBody _ = emptyType (* Specification. *) val resTypes = List.map processTypeBody tlist; (* Can now declare the new types. *) fun processType (TypeBind {name, typeVars, isEqtype, nameLoc, tcon=tcRef, ...}, decType) = let (* Construct a type constructor which is an alias of the right-hand side of the declaration. If we are effectively giving a new name to a type constructor we use the same type identifier. This is needed to check "well-formedness" in signatures. *) val props = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val tcon = if isEmpty decType then (* Type specification *) let val description = { location = nameLoc, name = name, description = "" } in makeTypeConstructor (name, typeVars, makeTypeId(isEqtype, false, (typeVars, EmptyType), description), props) end else case typeNameRebinding(typeVars, decType) of SOME typeId => makeTypeConstructor (name, typeVars,typeId, props) | NONE => let val description = { location = nameLoc, name = name, description = "" } in makeTypeConstructor (name, typeVars, makeTypeId(isEqtype, false, (typeVars, decType), description), props) end in checkForDots (name, lex, nameLoc); (* Must not be qualified *) #enter newEnv (name, tcon); (* Check for duplicates. *) tcRef := TypeConstrSet(tcon, []); #enterType env (name, TypeConstrSet(tcon, [])) (* Put in the surrounding scope. *) end val () = ListPair.app processType (tlist, resTypes); in badType (* Does not return a type *) end | AbsDatatypeDeclaration absData => assAbsData absData | DatatypeReplication{oldType, newType, oldLoc, newLoc, ...} => (* Adds both the type and the constructors to the current environment. *) let (* Look up the type constructor in the environment. *) val oldTypeCons: typeConstrSet = lookupTyp ({lookupType = #lookupType env, lookupStruct = #lookupStruct env}, oldType, giveError (near, lex, oldLoc)) (* Copy the datatype, converting any Formal constructors to Selected. *) local (* If the type name was qualified (e.g. S.t) we need to find the value constructors from the same structure. *) val {first = namePrefix, ...} = splitString oldType; val baseStruct = if namePrefix = "" then NONE else lookupStructure("Structure", {lookupStruct = #lookupStruct env}, namePrefix, giveError (v, lex, oldLoc)) val TypeConstrSet(tcons, tcConstructors) = oldTypeCons val newName = newType val locations = [DeclaredAt newLoc, SequenceNo (newBindingId lex)] (* Create a new constructor with the same unique ID. *) val typeID = tcIdentifier tcons val newTypeCons = makeTypeConstructor(newName, tcTypeVars tcons, typeID, locations) (* Copy the value constructors. *) fun copyAConstructor(Value{name=cName, typeOf, class, access, ...}) = let (* Copy the types of value constructors replacing occurrences of the old type with the new one. This is not strictly necessary but improves printing. e.g. local datatype X = A | B in datatype Y = datatype X end; A; prints A: Y rather than A: X *) fun copyTypeCons (tcon : typeConstrs) : typeConstrs = if sameTypeId(tcIdentifier tcon, typeID) then newTypeCons else tcon; fun copyTyp (t : types) : types = copyType (t, fn x => x, (* Don't bother with type variables. *) copyTypeCons); val newType = copyTyp typeOf; val newAccess = case (access, baseStruct) of (* If we are opening a structure we must have a base structure and we turn Formal entries into Selected. If we are replicating a datatype within a signature the original constructors will be Formal. *) (Formal addr, SOME(Struct{access, ...})) => Selected{base=access, addr=addr} | (Formal _, NONE) => access | _ => access; (* Probably already a global. *) in Value{name=cName, typeOf=newType, class=class, access=newAccess, locations=locations, references = NONE, instanceTypes=NONE} end in val newValConstrs = map copyAConstructor tcConstructors val newTypeCons = TypeConstrSet(newTypeCons, newValConstrs) end in (* This previously checked that it was a datatype but that's not actually correct. *) (* Enter the value constrs in the environment. *) List.app (fn c => (#enterVal env) (valName c, c)) newValConstrs; (* Add this type constructor to the environment. *) (#enterType env) (newType, newTypeCons); badType (* Does not return a type *) end | (aList as List{elements, location, expType, ...}) => let val elementType = assignList(assValues v, displayParsetree, valTypeMessage) ("Elements in a list have different types.", "Item", ",", location, aList) elements val resType = if isBadType elementType then badType else mkTypeConstruction ("list", tsConstr listConstr, [elementType], [DeclaredAt inBasis]) in expType := resType; resType end | Constraint {value, given, location} => let val valType = assValues near value; val theType = ptAssignTypes(given, v) in (* These must be unifiable. *) case unifyTypes(valType, theType) of NONE => () (* OK. *) | SOME report => typeMismatch("Type mismatch in type constraint.", valTypeMessage (lex, typeEnv) ("Value:", value, valType), PrettyBlock(0, false, [], [ PrettyString "Constraint:", PrettyBreak(1, 0), display(theType, 10000 (* All of it *), typeEnv) ]), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear v); theType end | (aFun as Fn {matches, location, expType, ...}) => (* Must unify the types of each of the alternatives.*) let val resType = assignList(assMatchTree aFun, displayMatch, matchTypeMessage) ("Clauses in fn expression have different types.", "Clause", "|", location, aFun) matches in expType := resType; resType end | Unit _ => unitType | Localdec {decs, body, isLocal, varsInBody, ...} => let (* Local declarations or expressions. *) val newValEnv = searchList(); val newTypeEnv = searchList(); val newStrEnv = searchList(); val newLetDepth = if isLocal then letDepth else letDepth+1; (* The environment for the local declarations. *) val localEnv = { lookupVal = lookupDefault (#lookup newValEnv) (#lookupVal env), lookupType = lookupDefault (#lookup newTypeEnv) (#lookupType env), lookupFix = #lookupFix env, (* This environment is needed if we open a structure which has sub-structures. *) lookupStruct = lookupDefault (#lookup newStrEnv) (#lookupStruct env), lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, lookupTvars = #lookupTvars env, enterVal = #enter newValEnv, enterType = #enter newTypeEnv, (* Fixity has already been dealt with in the parsing process. The only reason we deal with it here is to ensure that declarations are printed in the correct order. We simply need to make sure that local fixity declarations are ignored. *) enterFix = fn _ => (), enterStruct = #enter newStrEnv, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = fn () => (stringsOfSearchList newValEnv () @ #allValNames env ()) }; (* Process the local declarations and discard the result. *) val _ : types = assignSeq(localEnv, newLetDepth, decs, false) (* This is the environment used for the body of the declaration. Declarations are added both to the local environment and to the surrounding scope. *) val bodyEnv = { (* Look-ups come from the local environment *) lookupVal = #lookupVal localEnv, lookupType = #lookupType localEnv, lookupFix = #lookupFix localEnv, lookupStruct = #lookupStruct localEnv, lookupSig = #lookupSig localEnv, lookupFunct = #lookupFunct localEnv, lookupTvars = #lookupTvars localEnv, enterVal = fn (pair as (_, v)) => (varsInBody := v :: ! varsInBody; #enter newValEnv pair; #enterVal env pair), enterType = fn pair => (#enter newTypeEnv pair; #enterType env pair), enterFix = #enterFix env, enterStruct = fn pair => (#enter newStrEnv pair; #enterStruct env pair), enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = #allValNames localEnv }; (* Now the body, returning its result if it is an expression. *) val resType = assignSeq(bodyEnv, newLetDepth, body, not isLocal) in resType end (* LocalDec *) | ExpSeq (ptl, _) => (* A sequence of expressions separated by semicolons. Result is result of last expression. *) assignSeq (env, letDepth, ptl, true) | ExDeclaration(tlist, _) => let fun messFn(name, _, line) = errorNear (lex, true, v, line, name ^ " has already been bound in this declaration"); (* Construct an environment to check for duplicate declarations. Include the declaration location as the value. *) val dupEnv = noDuplicates messFn; fun processException (ExBind {name, previous, ofType, value, nameLoc, ...}) = let (* Fill in any types. If there was no type given the exception has type exn otherwise it has type ty->exn. *) val oldType = case ofType of NONE => exnType | SOME typeof => mkFunctionType(ptAssignTypes(typeof, v), exnType) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val exValue = case previous of EmptyTree => mkEx (name, oldType, locations) (* Generative binding. *) | Ident {name = prevName, value = prevValue, location, expType, possible, ...} => let (* ex = ex' i.e. a non-generative binding? *) (* Match up the previous exception. *) val prev = lookupValue ("Exception", {lookupVal= #lookupVal env, lookupStruct= #lookupStruct env}, prevName, giveError (v, lex, location)) val excType = valTypeOf prev in (* Check that it is an exception *) case prev of Value{class=Exception, ...} => () | _ => errorNear (lex, true, v, location, "(" ^ prevName ^ ") is not an exception."); prevValue := prev; (* Set the value of the looked-up identifier. *) expType := excType; (* And remember the type. *) possible := #allValNames env; (* The result is an exception with the same type. *) mkEx (name, excType, locations) end | _ => raise InternalError "processException: badly-formed parse-tree" in (* Save this value. *) value := exValue; (* In the check environment *) #enter dupEnv (name, nameLoc); (* Must not be qualified *) checkForDots (name, lex, nameLoc) : unit; (* Must not be "true", "false" etc. *) checkForBuiltIn (name, v, lex, nameLoc, true) : unit; (* Put this exception into the env *) #enterVal env (name, exValue) end val () = List.app processException tlist; in badType end (* ExDeclaration *) | Raise (pt, line) => let val exType = assValues v pt in (* The exception value must have type exn. *) case unifyTypes(exType, exnType) of NONE => () | SOME report => typeWrong("Exception to be raised must have type exn.", valTypeMessage (lex, typeEnv) ("Raise:", pt, exType), unifyErrorReport (lex, typeEnv) report, lex, line, foundNear v); (* Matches anything *) mkTypeVar (generalisable, false, false, false) end | (aHandler as HandleTree {exp, hrules, location, ...}) => let (* If the expression returns type E the handler must be exn -> E *) val expType = assValues aHandler exp; (* Unify the handler with a function from exn -> expType *) val clauses = assignList(assMatchTree aHandler, displayMatch, matchTypeMessage) ("Clauses in handler have different types.", "Clause", "|", location, aHandler) hrules (* The result type of the handlers must match the result type of the expression being handled and the arguments must all have type exn. *) val () = unify (clauses, mkFunctionType (exnType, expType), lex, location, foundNear v, typeEnv); in expType (* Result is expType. *) end | While {test, body, location, ...} => let val testType = assValues v test in (* Test must be bool. Result is unit *) case unifyTypes(testType, boolType) of NONE => () | SOME report => typeWrong("Loop condition of while-expression must have type bool.", valTypeMessage (lex, typeEnv) ("While:", test, testType), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear v); assValues v body; (* Result of body is discarded. *) unitType end | aCase as Case {test, match, location, expType, ...} => let val funType = assignList(assMatchTree aCase, displayMatch, matchTypeMessage) ("Clauses in case have different types.", "Clause", "|", location, aCase) match; val argType = assValues aCase test; (* The matches constitute a function from the test type to the result of the case statement, so we apply the match type to the test. *) val resType = apply (funType, argType, lex, location, foundNear aCase, typeEnv) in expType := resType; resType end | anAndAlso as Andalso {first, second, location} => let (* Both parts must be bool and the result is bool. *) fun mkTupleTree(fields, location) = TupleTree { fields=fields, location=location, expType = ref EmptyType } val pairArgs = mkTupleTree([first, second], location) val argTypes = assValues anAndAlso pairArgs; val boolStarBool = mkProductType[boolType, boolType] val () = case unifyTypes(argTypes, boolStarBool) of NONE => () | SOME report => typeWrong("Arguments of andalso must have type bool*bool.", valTypeMessage (lex, typeEnv) ("Arguments:", pairArgs, argTypes), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear anAndAlso) in boolType end | anOrElse as Orelse {first, second, location} => let (* Both parts must be bool and the result is bool. *) fun mkTupleTree(fields, location) = TupleTree { fields=fields, location=location, expType = ref EmptyType } val pairArgs = mkTupleTree([first, second], location) val argTypes = assValues anOrElse pairArgs; val boolStarBool = mkProductType[boolType, boolType] val () = case unifyTypes(argTypes, boolStarBool) of NONE => () | SOME report => typeWrong("Arguments of orelse must have type bool*bool.", valTypeMessage (lex, typeEnv) ("Arguments:", pairArgs, argTypes), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear anOrElse) in boolType end | Directive { tlist, fix, ... } => ( (* Infix declarations have already been processed by the parser. We include them here merely so that we get all declarations in the correct order. *) List.app (fn name => #enterFix env (name, FixStatus(name, fix))) tlist; badType ) | WildCard _ => (* Should never occur in an expression. *) raise InternalError "assignTypes: wildcard found" | Layered _ => raise InternalError "assignTypes: layered pattern found" | EmptyTree => raise InternalError "assignTypes: emptytree found" | Parenthesised(p, _) => assValues near p (* end of assValues *) and assMatchTree _ (MatchTree {vars, exp, resType, argType, ...}) = let (* A match is a function from the pattern to the expression *) (* Process the pattern looking for variables. *) (* Construct a new environment for the variables. *) fun messFn(name, _, Value{locations, ...}) = errorNear (lex, true, v, declaredAt locations, name ^ " has already been bound in this match"); val newEnv = noDuplicates messFn; val newLevel = level + 1; val decs = processPattern(vars, #enter newEnv, newLevel, false, mkPattVar, false) (* The identifiers declared in the pattern are available in the body of the function. *) val bodyEnv = { lookupVal = lookupDefault (#lookup newEnv) (#lookupVal env), lookupType = #lookupType env, lookupFix = #lookupFix env, lookupStruct = #lookupStruct env, lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, lookupTvars = #lookupTvars env, enterVal = #enterVal env, enterType = #enterType env, enterFix = #enterFix env, enterStruct = #enterStruct env, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = fn () => (stringsOfSearchList newEnv () @ #allValNames env ()) }; (* Now the body. *) val expType = assignValues(newLevel, letDepth, bodyEnv, v, exp); in resType := expType; argType := decs; (* Result is a function from the type of the pattern to the type of the body. This previously generalised the resulting type. Why? *) mkFunctionType (decs, expType) end (* MatchTree *) and assValDeclaration (valdecs: valbind list, explicit, implicit) = (* assignTypes for a val-declaration. *) let val newLevel = level + 1; (* Set the scope of explicit type variables. *) val () = #apply explicit(fn (_, tv) => setTvarLevel (tv, newLevel)); (* For each implicit type variable associated with this value declaration, link it to any type variable with the same name in an outer scope. *) val () = #apply implicit (fn (name, tv) => case #lookupTvars env name of SOME v => linkTypeVars(v, tv) | NONE => setTvarLevel (tv, newLevel)); (* If it isn't there set the level of the type variable. *) (* Construct a new environment for the variables. *) val newEnv = noDuplicates (fn(name, _, Value{locations, ...}) => errorNear (lex, true, v, declaredAt locations, name ^ " has already been bound in this declaration")); (* This environment is those identifiers declared by recursive bindings *) val recEnv = searchList (); (* If this is a recursive declaration we will have to find all the variables declared by the patterns in each binding before we can look at the bodies of the bindings. For simplicity we process the patterns first even if this is not recursive but arrange for the variables to be added to the environment after rather than before processing the bodies. The result of processing the patterns is a list of their types. Each item in the list must be unified with the type of the corresponding body. *) (* Process the patterns. *) local fun doVal (ValBind {dec, isRecursive, variables, ...}) = let fun enterVals(pair as (_, value)) = ( #enter newEnv pair; if isRecursive then #enter recEnv pair else (); variables := value :: ! variables ) val patType = processPattern(dec, enterVals, newLevel, false, mkValVar, isRecursive); in patType end; in val decs = List.map doVal (valdecs) end (* Now the bodies. *) local (* Check that the types match by going down the list of value bindings and the list of types produced from the patterns, and matching corresponding types. *) fun checkTypes (patType, (ValBind {dec, exp, line, isRecursive, ...})) = let val newEnv = { (* If this is recursive we find the recursive names and others in the surrounding scope. *) lookupVal = if isRecursive then lookupDefault (#lookup recEnv) (#lookupVal env) else #lookupVal env, lookupType = #lookupType env, lookupFix = #lookupFix env, lookupStruct = #lookupStruct env, lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, (* Extend the environment of type variables. *) lookupTvars = lookupDefault (#lookup explicit) (lookupDefault (#lookup implicit) (#lookupTvars env)), enterVal = #enterVal env, enterType = #enterType env, enterFix = #enterFix env, enterStruct = #enterStruct env, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = if isRecursive then fn () => (stringsOfSearchList recEnv () @ #allValNames env ()) else #allValNames env } val expType = assignValues(newLevel, letDepth, newEnv, exp, exp); val () = case unifyTypes(patType, expType) of NONE => () (* OK*) | SOME report => typeMismatch("Pattern and expression have incompatible types.", valTypeMessage (lex, typeEnv) ("Pattern:", dec, patType), valTypeMessage (lex, typeEnv) ("Expression:", exp, expType), unifyErrorReport (lex, typeEnv) report, lex, line, foundNear v) (* true if the expression is a possibly-constrained fn-expression. It isn't clear whether a parenthesised expression is allowed here. As often, the definition is informal. On p8 of the ML97 definition it says "exp must be of the form fn match". In ML90 it added "possibly constrained by one or more type expressions". This is such a mess that I'm allowing both contraints and parentheses here. *) fun isConstrainedFn (Constraint {value, ...}) = isConstrainedFn value | isConstrainedFn (Fn _) = true | isConstrainedFn (Parenthesised(p, _)) = isConstrainedFn p | isConstrainedFn _ = false; in (* Must check that the expression is of the form FN match. *) (* N.B. the code generator assumes this is true. *) if isRecursive andalso not (isConstrainedFn exp) then errorNear (lex, true, v, line, "Recursive declaration is not of the form `fn match'") else () end in val () = ListPair.app checkTypes (decs, valdecs) end (* Now allow generalisation on the variables being declared. For imperative type variables we have to know whether the expression is expansive. *) fun allowGen (d, (ValBind {exp, line, ...})) = ( allowGeneralisation (d, newLevel, nonExpansive exp, lex, line, foundNear v, typeEnv) ) (* allowGen *) in ListPair.appEq allowGen (decs, valdecs); (* And declare the new names into the surrounding environment. *) let fun enterDec(s, v as Value{instanceTypes, ...}) = ( valOf instanceTypes := []; (* Remove any recursive references. *) #enterVal env (s, v) ) in #apply newEnv enterDec end end (* assValDeclaration *) and assFunDeclaration {dec=tlist: fvalbind list, explicit, implicit, ...} = (* Assigntypes for a fun-declaration. *) let val funLevel = level + 1; (* Level for function names. *) (* Set the scope of explicit type variables. *) val () = #apply explicit(fn (_, tv) => setTvarLevel (tv, funLevel)); (* For each implicit type variable associated with this value declaration, link it to any type variable with the same name in an outer scope. *) val () = #apply implicit (fn (name, tv) => case #lookupTvars env name of SOME v => linkTypeVars(v, tv) | NONE => setTvarLevel (tv, funLevel)); (* If it isn't there set the level of the type variable. *) (* Construct a new environment for the variables. *) fun msgFn(name, _, Value{locations, ...}) = errorNear (lex, true, v, declaredAt locations, name ^ " has already been bound in this declaration"); val newEnv = noDuplicates msgFn; (* Since this is a recursive declaration we must get the function names first. Because of the way they are parsed they are hidden as applications of the function to one or more patterns. There may be more than one clause in a function binding but each should declare the same function and have the same number of patterns. We need to know the number of patterns and the function name in the third pass so we save them in the function binding. *) local fun findNameAndPatts (FValBind {clauses = (FValClause {dec, line, ...}::_), numOfPatts, functVar, ...}) = let (* Just look at the first clause for the moment. *) val { ident = { name, location, ... }, ... } = dec; (* Declare a new identifier with this name. *) val locations = [DeclaredAt location, SequenceNo (newBindingId lex)] val funVar = mkValVar (name, mkTypeVar (funLevel, false, false, false), locations) val arity = case dec of { args, ...} => List.length args val () = numOfPatts := arity; val () = (* Put the results onto the function binding. *) if arity = 0 then errorNear (lex, true, v, line, "Clausal function does not have any parameters.") else () in (* Must not be qualified *) checkForDots (name, lex, line); (* Must not be "true", "false" etc. but may be "it" *) checkForBuiltIn (name, v, lex, line, false); functVar := funVar; (* Save the variable. *) (* Enter it in the environment. *) #enter newEnv (name, funVar) end | findNameAndPatts _ = raise InternalError "findNameAndPatts: badly-formed parse-tree"; in val () = List.app findNameAndPatts tlist end; local (* Can now process the clausal functions in the environment of the function names and using the information about function name and number of patterns we have saved. *) fun processBinding (fvalBind as FValBind {clauses, functVar=ref functVar, argType, resultType, location, ...}) = let (* Each fun binding in the declaration may consist of several clauses. Each must have the same function name, the same number of patterns and a unifiable type. *) (* The type information is built up from the bottom so that if there are errors we can report them in the most appropriate place. Build a type to be used for the function. This will later be unified with the type that we've already created for the function variable. *) val funType = mkTypeVar(generalisable, false, false, false) fun processClause (clause as FValClause {dec, exp, line, ...}) = let val { ident = ident, args, constraint, ... } = dec fun mkClausal(clauses, location) : fvalbind = FValBind { clauses = clauses, numOfPatts = ref 0, functVar = ref undefinedValue, argType = ref badType, resultType = ref badType, location = location } fun mkFunDeclaration (dec, explicit, implicit, location) : parsetree = FunDeclaration { dec=dec, explicit = explicit, implicit = implicit, location = location } val clauseAsTree: parsetree = (* This clause as a parsetree object for error messages. *) mkFunDeclaration([mkClausal([clause], line)], explicit, implicit, line) val () = (* Set the type. Only in case we look at the export tree. *) #expType ident := valTypeOf functVar fun messFn (name, _, Value{locations, ...}) = errorNear (lex, true, clauseAsTree, declaredAt locations, name ^ " has already been bound in this clause."); (* Construct a new environment for the variables in the patts. *) val varEnv = noDuplicates messFn; val varLevel = funLevel + 1; (* Level for variables. *) (* Process the patterns. *) val argTypeList = List.map (fn arg => processPattern(arg, #enter varEnv, varLevel, false, mkPattVar, false)) args (* This list is used for the type of the helper function. *) val () = argType := (case argTypeList of [] => badType (* error *) | [single] => single | multiple => mkProductType multiple) (* The identifiers declared in the pattern are available in the body of the function. Since it is recursive the function names are also available. *) val bodyEnv = { lookupVal = lookupDefault (#lookup varEnv) (lookupDefault (#lookup newEnv) (#lookupVal env)), lookupType = #lookupType env, lookupFix = #lookupFix env, lookupStruct = #lookupStruct env, lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, (* Extend the environment of type variables. *) lookupTvars = lookupDefault (#lookup explicit) (lookupDefault (#lookup implicit) (#lookupTvars env)), enterVal = #enterVal env, enterType = #enterType env, enterFix = #enterFix env, enterStruct = #enterStruct env, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = fn () => (stringsOfSearchList varEnv () @ stringsOfSearchList newEnv () @ #allValNames env ()) }; (* Now the body. *) val expTyp = assignValues(varLevel, letDepth, bodyEnv, exp, exp); (* Check the expression type against any explicit type constraint. *) (* Return the explicit constraint if possible. For the purposes of type checking this is identical to "expTyp" but if there is a type abbreviation this will be used when printing the result. .e.g type t = int * int; fun f ((x, y):t): t = (y, x); *) val typeOfBody = case constraint of NONE => expTyp | SOME given => let val theType = ptAssignTypes(given, v) in case unifyTypes(expTyp, theType) of NONE => () (* OK. *) | SOME report => typeMismatch("Body of fun binding does not match type constraint.", valTypeMessage (lex, typeEnv) ("Expression:", exp, expTyp), PrettyBlock(0, false, [], [ PrettyString "Constraint:", PrettyBreak(1, 0), display(theType, 10000 (* All *), typeEnv) ]), unifyErrorReport (lex, typeEnv) report, lex, line, foundNear clauseAsTree); theType end (* Remember the result type for the debugger. Actually this assigns the result type for each clause in the fun but they'll all be the same. *) val () = resultType := typeOfBody (* The type of this clause is a function type. *) val clauseType = List.foldr mkFunctionType typeOfBody argTypeList (* Unify this with the type we're using for the other clauses. *) val () = case unifyTypes(clauseType, funType) of NONE => () (* OK. *) | SOME report => typeMismatch("Type of clause does not match the type of previous clauses.", valTypeMessage (lex, typeEnv) ("Clause:", clauseAsTree, clauseType), PrettyBlock(0, false, [], [ PrettyString "Other clauses:", PrettyBreak(1, 0), display(funType, 10000 (* All *), typeEnv) ]), unifyErrorReport (lex, typeEnv) report, lex, line, foundNear clauseAsTree) in (* body of processClause *) () end in (* body of processFun *) List.app processClause clauses; (* If this function makes any recursive references move those references from the local list to the recursive list. In that way if we're looking for whether a function is actually referenced we'll only include it if it's referenced outside or from another referenced function. *) let fun moveRefs(FValBind{functVar=ref(Value{references,...}), ...}) = let val {localRef as ref locals, recursiveRef, ...} = valOf references val callerName = valName functVar (* Name of referring function. *) in recursiveRef := List.map (fn r => (r, callerName)) locals @ !recursiveRef; localRef := [] end in List.app moveRefs tlist end; (* Finally unify the function type with the type of the function variable. If the variable has not yet been used that will simply set its type but if it has been used recursively it may have been given an incompatible type. *) case unifyTypes(funType, valTypeOf functVar) of NONE => () (* OK. *) | SOME report => let fun mkFunDeclaration (dec, explicit, implicit, location) : parsetree = FunDeclaration { dec=dec, explicit = explicit, implicit = implicit, location = location } fun mkIdent (name, loc) : parsetree = Ident { name = name, expType = ref EmptyType, value = ref undefinedValue, location = loc, possible = ref(fn () => []) } val fvalAsTree = mkFunDeclaration([fvalBind], explicit, implicit, location) in typeMismatch("Type of function does not match type of recursive application.", valTypeMessage (lex, typeEnv) ("Function:", fvalAsTree, funType), valTypeMessage (lex, typeEnv) ("Variable:", mkIdent(valName functVar, location), valTypeOf functVar), unifyErrorReport (lex, typeEnv) report, lex, location, foundNear fvalAsTree) end end in val () = List.app processBinding tlist end; in (* Now declare the new names into the surrounding environment, releasing the copy flags on the type variables. All fun bindings are non-expansive. *) List.app (fn(FValBind{ functVar as ref(var as Value{typeOf, locations, name, instanceTypes, ...}), ...}) => ( (* Generalise the types. allowGeneralisation side-effects the type variables, replaces any that can be generalised by general variables. *) allowGeneralisation(typeOf, funLevel, true, lex, declaredAt locations, foundNear v, typeEnv); (* Remove any recursive references. This really isn't right. *) valOf instanceTypes := []; #enterVal env (name, var); functVar := var )) tlist end (* assFunDeclaration *) and assAbsData({typelist=typeList, withtypes, declist, equalityStatus, isAbsType=isAbs, ...}) = let (* A type declaration causes a type to be entered in the type environment, together with some constructors. *) fun messFn (name, _, TypeConstrSet(new, _)) = errorNear (lex, true, v, declaredAt(tcLocations new), name ^ " has already been bound in this declaration"); val localTypeEnv = noDuplicates messFn; (* datatype and abstype declarations are both recursive so we can enter the type names into the environment during a first pass, and then process the value constructors during a second. *) fun enterType(typeConstr, typeName) = ( checkForDots (typeName, lex, declaredAt(tcLocations(tsConstr typeConstr))); (* Must not be qualified *) #enter localTypeEnv (typeName, typeConstr) (* Check for duplicates. *) ); (* Make the type constructors and put them in a list. *) fun enterTcon (DatatypeBind {name, tcon, typeVars, nameLoc, ...}) = let (* Make a new ID. If this is within a let declaration we always make a free ID because it is purely local and can't be exported. *) val description = { location = nameLoc, name = name, description = "" } val arity = length typeVars val newId = if letDepth = 0 then makeTypeId(false, true, (typeVars, EmptyType), description) else makeFreeIdEqUpdate (arity, Local{addr = ref ~1, level = ref baseLevel}, false, description) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val tc = makeTypeConstructor(name, typeVars, newId, locations) in tcon := TypeConstrSet(tc, []); enterType(TypeConstrSet(tc, []), name); tc end val listOfTypes = map enterTcon typeList; local fun lookup(s, line) = lookupTyp ({lookupType = lookupDefault(#lookup localTypeEnv) (#lookupType env), lookupStruct = #lookupStruct env}, s, giveError (v, lex, line)) in fun localAssignTypes decType = assignTypes (decType, lookup, lex) end (* First match all the types on the right-hand sides using the datatypes and the existing bindings. *) local fun processType (TypeBind {decType = SOME decType, ...}) = localAssignTypes decType | processType _ = emptyType in val decTypes = List.map processType withtypes end; (* Can now enter the `withtypes'. *) fun enterWithType (TypeBind {name, typeVars, nameLoc, tcon=tcRef, ...}, decType) = let val description = { location = nameLoc, name = name, description = "" } (* Construct a type constructor which is an alias of the right-hand side of the declaration. *) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val tcon = makeTypeConstructor (name, typeVars, makeTypeId(false, false, (typeVars, decType), description), locations) val tset = TypeConstrSet(tcon, []) in tcRef := tset; enterType(tset, name); (* Checks for duplicates. *) #enterType env (name, tset) (* Put in the global environment. *) end val () = ListPair.app enterWithType (withtypes, decTypes); (* For the constructors *) fun messFn (name, _, Value{locations, ...}) = errorNear (lex, true, v, declaredAt locations, name ^ " has already been used as a constructor in this type"); val consEnv = noDuplicates messFn; val abstypeEnv = searchList (); (* Now process the types and generate the constructors. *) fun genValueConstrs (DatatypeBind {name, typeVars, constrs, nameLoc, tcon, ...}, typ) = let val numOfConstrs = length constrs; val typeVarsAsTypes = List.map TypeVar typeVars (* The new constructor applied to the type variables (if any) *) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val resultType = mkTypeConstruction (name, typ, typeVarsAsTypes, locations) (* Sort the constructors by name. This simplifies matching with datatypes in signatures. *) fun leq {constrName=xname: string, ...} {constrName=yname, ...} = xname < yname; val sortedConstrs = quickSort leq constrs; fun processConstr ({constrName=name, constrArg, idLocn, constrVal, ...}) = let val (constrType, isNullary) = case constrArg of NONE => (resultType, true) | SOME argtype => (mkFunctionType (localAssignTypes argtype, resultType), false) val locations = [DeclaredAt idLocn, SequenceNo (newBindingId lex)] val cons = makeValueConstr (name, constrType, isNullary, numOfConstrs, Local{addr = ref ~1, level = ref baseLevel}, locations) (* Name must not be qualified *) val () = checkForDots (name, lex, idLocn); (* Must not be "true", "false" etc. *) val () = checkForBuiltIn (name, v, lex, idLocn, true) : unit; (* Put into the environment. *) val () = #enter consEnv (name, cons) (* Link it in case we export the tree. *) val () = constrVal := cons in cons end (* processConstr *) val tset = TypeConstrSet (typ, List.map processConstr sortedConstrs) in (* If this is an abstype enter the version with the constructors into a local environment and a version without the constructors into the global environment. If it is a datatype enter the version with constructors in the global environment. *) if isAbs then (#enter abstypeEnv (name, tset); #enterType env (name, TypeConstrSet(typ, []))) else #enterType env (name, tset); tcon := tset; tset end (* genValueConstrs *) val listOfTypeSets = ListPair.map genValueConstrs (typeList, listOfTypes); (* Third pass - Check to see if equality testing is allowed for these types. *) val () = computeDatatypeEqualities(listOfTypeSets, sigTypeIdMap); (* If this is a datatype declaration the value constructors should be entered in the surrounding scope, otherwise (abstract type declaration) we evaluate the declarations in an environment containing the value constructors, but the value constructors themselves do not appear in the surrounding scope. *) val () = if not isAbs then #apply consEnv (#enterVal env) else let (* Abstract type *) (* The declarations have to be evaluated in an environment in which the constructors have been declared. When an identifier is looked up it may: (a) be one of these new declarations, or else (b) be a constructor from the type declarations, or else (c) be outside the abstract type declaration. New declarations are entered in the local environment so that they can be found under (a) and in the surrounding environment where they will be available after this declaration. *) val decEnv = let val localEnv = searchList (); fun enterValFn pair = (#enter localEnv pair; #enterVal env pair); val lookupValFn = lookupDefault (#lookup localEnv) (lookupDefault (#lookup consEnv) (#lookupVal env)) fun allValNames () = (stringsOfSearchList localEnv () @ stringsOfSearchList consEnv () @ #allValNames env ()) (* We also have to do something similar with types. This is really only for perverse cases where there is a datatype replication inside the abstype. *) fun enterTypeFn pair = (#enter abstypeEnv pair; #enterType env pair); val lookupTypeFn = lookupDefault (#lookup abstypeEnv) (#lookupType env) in { lookupVal = lookupValFn, lookupType = lookupTypeFn, lookupFix = #lookupFix env, lookupStruct = #lookupStruct env, lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, lookupTvars = #lookupTvars env, enterVal = enterValFn, enterType = enterTypeFn, enterFix = #enterFix env, enterStruct = #enterStruct env, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = allValNames } end; in (* Process the declarations, discarding the result. *) assignSeq (decEnv, letDepth, declist, false); (* Turn off equality outside the with..end block. This is required by the "Abs" function defined in section 4.9 of the ML Definition. We need to record the equality status, though, because we need to reinstate this for code-generation. *) equalityStatus := List.map tcEquality listOfTypes; List.app(fn tc => tcSetEquality (tc, false)) listOfTypes; () end; in badType (* Does not return a type *) end (* assAbsData *) in assValues near v end (* assignValues *); val Env gEnv = env val env = { lookupVal = #lookupVal gEnv, lookupType = #lookupType gEnv, lookupFix = #lookupFix gEnv, lookupStruct = #lookupStruct gEnv, lookupSig = #lookupSig gEnv, lookupFunct = #lookupFunct gEnv, lookupTvars = fn _ => NONE, enterVal = #enterVal gEnv, enterType = #enterType gEnv, enterFix = #enterFix gEnv, enterStruct = #enterStruct gEnv, enterSig = #enterSig gEnv, enterFunct = #enterFunct gEnv, allValNames = #allValNames gEnv }; in assignValues(1, 0, env, v, v) end (* pass2 *); (* Before code-generation perform an extra pass through the tree to remove unnecessary polymorphism. The type-checking computes a most general type for a value, typically a function, but it is frequently used in situations where a less general type would suffice. *) (* Note: if the less general type involves a local datatype this isn't done to avoid a possible bug with datatypes defined after the function. *) fun setLeastGeneralTypes(p: parsetree, _: lexan) = let (* Because of mutual recursion we need to process the set of variables produced by a fun-declaration or a val rec declaration as a group. We also process no-recursive val bindings here for simplicity. *) fun processVariableSet(variables: values list) = let (* Two polymorphic values that are involved in mutual recursion will have the same type variable in both values. When we produce the least general type we have to consider all the types that may be used for those variables. Unfortunately, because of flexible records we need to repeat the unification we did in the previous pass. *) local fun getTypeVarsAndInstance (Value{typeOf, instanceTypes, ...}, vars) = let val instances = ! (valOf instanceTypes) fun getPolyVars typ = let val (copied, tyVars) = generalise typeOf (* Unify the types. If there's an error we return a fresh set of the type variables which gives the most general type. There shouldn't be an error but there is one circumstance at least where we can get an error here. If we have a functor declaration followed by an application of the functor in the same "program" we can set an entry in instanceTypes of a Value used in the functor declaration to an instance in the functor application because the instanceTypes value is inherited into the functor signature if there's no explicit signature. We really need to handle this properly and not inherit the instanceTypes value in that case. Test116 shows this. *) in if isSome(unifyTypes(copied, typ)) then #2 (generalise typeOf) else tyVars (* Return the type vars instantiated to the instance types. *) end (* This returns a list, one entry for each instance, of a list of the type variables for that instance. *) val instanceVarLists = List.map getPolyVars instances (* Transpose that list so we get a list, one entry for each type variable, of all the instance types that are possible. *) fun transpose ([]::_) = [] | transpose (args as _::_) = (List.map hd args) :: transpose (List.map tl args) | transpose [] = [] val instanceVars = transpose instanceVarLists (* Get the original type variables. *) val originalVars = getPolyTypeVars(typeOf, fn _ => NONE) (* Look to see if we already have some of the original vars in the list. If we have we use the same ref for each var and merge the instance types. *) fun mergeVars(ovar, iTypes) = case List.find (fn (tv, _) => sameTv(tv, ovar)) vars of NONE => (ovar, ref iTypes) | SOME(matched as (_, otherRef)) => ( otherRef := iTypes @ ! otherRef; matched) val mergedList = ListPair.map mergeVars (originalVars, instanceVars) @ vars in mergedList end in (* Get a list of the original type variables each with a reference containing the shared list of instance types. *) val typeVarMap = List.foldl getTypeVarsAndInstance [] variables end local fun reduceTypes(tv, ref types) = (* Although tv is a type variable it could occur as the least general type. Unify takes care of that. *) if isSome(unifyTypes(TypeVar tv, leastGeneral(List.map #value types))) then raise InternalError "reduceTypes: Unable to set type vars" else () in val () = List.app reduceTypes typeVarMap end in () end fun leastGenExp(ValDeclaration{dec, ...}) = ( (* Val declarations may be recursive or non-recursive. In the case of recursive declarations we need to handle these in the same way as fun-declarations. *) (* Gather all the variables and process them as a group. There can't be any dependencies between them except for mutual recursion. *) processVariableSet (List.foldl (fn (ValBind{variables=ref variables, ...}, vars) => variables @ vars) [] dec); List.app (fn ValBind{exp, ...} => leastGenExp exp) dec ) | leastGenExp(FunDeclaration{dec, ...}) = ( (* First process the outer declarations. *) processVariableSet(List.map(fn FValBind{functVar=ref var, ...} => var) dec); (* Then process the inner declarations. Setting the outer type may have set the instance types within the bodies. *) let fun processClause(FValClause{exp, ...}) = leastGenExp exp fun processBind(FValBind{clauses, ...}) = List.app processClause clauses in List.app processBind dec end ) | leastGenExp(Localdec{decs, body, ...}) = ( (* Process the body expressions in order but the declarations must be done in reverse order after the body. *) List.app (leastGenExp o #1) body; List.foldr (fn ((p, _), ()) => leastGenExp p) () decs ) | leastGenExp(AbsDatatypeDeclaration { declist, ... }) = (* Declarations in reverse order *) List.foldr (fn ((p, _), ()) => leastGenExp p) () declist (* All the rest of these just involve processing sub-expressions. *) | leastGenExp(Applic{f, arg, ...}) = (leastGenExp f; leastGenExp arg) | leastGenExp(Cond{test, thenpt, elsept, ...}) = (leastGenExp test; leastGenExp thenpt; leastGenExp elsept) | leastGenExp(TupleTree{fields, ...}) = List.app leastGenExp fields | leastGenExp(Constraint{value, ...}) = leastGenExp value | leastGenExp(Fn {matches, ...}) = List.app (fn MatchTree{exp, ...} => leastGenExp exp) matches | leastGenExp(ExpSeq(ptl, _)) = List.app (leastGenExp o #1) ptl | leastGenExp(HandleTree{exp, hrules, ...}) = (leastGenExp exp; List.app (fn MatchTree{exp, ...} => leastGenExp exp) hrules) | leastGenExp(While{test, body, ...}) = (leastGenExp test; leastGenExp body) | leastGenExp(Case{test, match, ...}) = (leastGenExp test; List.app (fn MatchTree{exp, ...} => leastGenExp exp) match) | leastGenExp(Andalso {first, second, ...}) = (leastGenExp first; leastGenExp second) | leastGenExp(Orelse{first, second, ...}) = (leastGenExp first; leastGenExp second) | leastGenExp(Labelled{recList, ...}) = List.app (leastGenExp o #valOrPat) recList | leastGenExp(List{elements, ...}) = List.app leastGenExp elements | leastGenExp(Parenthesised(p, _)) = leastGenExp p | leastGenExp _ = () in leastGenExp p end (* Types that can be shared. *) structure Sharing = struct type lexan = lexan and pretty = pretty and codetree = codetree and codeBinding = codeBinding and types = types and values = values and typeId = typeId and structVals = structVals and typeConstrs= typeConstrs and typeVarForm=typeVarForm and env = env and fixStatus = fixStatus and structureIdentForm = structureIdentForm and typeParsetree = typeParsetree and parsetree = parsetree and valbind = valbind and fvalbind = fvalbind and fvalclause = fvalclause and typebind = typebind and datatypebind=datatypebind and exbind = exbind and labelRecEntry=labelRecEntry and ptProperties = ptProperties and matchtree = matchtree and typeVarMap = typeVarMap and level = level end end (* PARSETREE *); polyml-5.7.1/mlsource/MLCompiler/ParseTree/ExportParsetreeSig.sml0000644000175000017500000000323413204034553024043 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ExportParsetreeSig = sig type lexan type parsetree type matchtree type locationProp type ptProperties type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type exportTree = location * ptProperties list type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} val getExportTree: navigation * parsetree -> exportTree val getLocation: parsetree -> location val declaredAt: locationProp list -> location structure Sharing: sig type lexan = lexan and parsetree = parsetree and matchtree = matchtree and locationProp = locationProp and ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/BASE_PARSE_TREE.sml0000644000175000017500000002735713204034553022543 0ustar daviddavid(* Copyright (c) 2013-2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor BASE_PARSE_TREE ( structure STRUCTVALS : STRUCTVALSIG structure TYPETREE : TYPETREESIG structure DEBUGGER : DEBUGGERSIG sharing STRUCTVALS.Sharing = TYPETREE.Sharing = DEBUGGER.Sharing ): BaseParseTreeSig = struct open STRUCTVALS open TYPETREE type breakPoint = DEBUGGER.breakPoint datatype parsetree = Ident of (* An identifier is just a name. In the second pass it is associated with a particular declaration and the type is assigned into the type field. The type of this identifier is needed to deal with overloaded operators. If we have an occurence of ``='', say, the type of the value will be 'a * 'a -> bool but the type of a particular occurence, i.e. the type of the identifier must be int * int -> bool, say, after all the unification has been done. *) { name: string, expType: types ref, value: values ref, location: location, possible: (unit -> string list) ref (* Used with the IDE. *) } | Literal of (* Literal constants may be overloaded on more than one type. The types are specified by installing appropriate conversion functions: convInt, convReal, convChar, convString and convWord. *) { converter: values, expType: types ref, literal: string, location: location } | Applic of (* Function application *) { f: parsetree, arg: parsetree, location: location, isInfix: bool, expType: types ref } | Cond of (* Conditional *) { test: parsetree, thenpt: parsetree, elsept: parsetree, location: location, thenBreak: breakPoint option ref, elseBreak: breakPoint option ref } | TupleTree of { fields: parsetree list, location: location, expType: types ref } | ValDeclaration of { dec: valbind list, explicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, implicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, location: location } | FunDeclaration of { dec: fvalbind list, explicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, implicit: {lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit }, location: location } | OpenDec of (* Open a structure. The variables, structures and types are just needed if debugging information is being generated. *) { decs: structureIdentForm list, variables: values list ref, structures: structVals list ref, typeconstrs: typeConstrSet list ref, location: location } | Constraint of (* Constraint (explicit type given) *) (* A constraint has a value and a type. The actual type, will, however be the unification of these two and not necessarily the given type. *) { value: parsetree, given: typeParsetree, location: location } | Layered of (* Layered pattern. Equivalent to an ordinary pattern except that the variable is given the name of the object which is to be matched. *) { var: parsetree, pattern: parsetree, location: location } | Fn of { matches: matchtree list, location: location, expType: types ref } | Localdec of (* Local dec in dec and let dec in exp. *) { decs: (parsetree * breakPoint option ref) list, body: (parsetree * breakPoint option ref) list, isLocal: bool, varsInBody: values list ref, (* Variables in the in..dec part of a local declaration. *) location: location } | TypeDeclaration of typebind list * location | AbsDatatypeDeclaration of (* Datatype and Abstract Type declarations *) { isAbsType: bool, typelist: datatypebind list, withtypes: typebind list, declist: (parsetree * breakPoint option ref) list, location: location, equalityStatus: bool list ref } | DatatypeReplication of { newType: string, oldType: string, oldLoc: location, newLoc: location, location: location } | ExpSeq of (parsetree * breakPoint option ref) list * location | Directive of (* Directives are infix, infixr and nonfix. They are processed by the parser itself and only appear in the parse tree for completeness. *) { tlist: string list, fix: infixity, location: location } | ExDeclaration of exbind list * location | Raise of parsetree * location | HandleTree of (* Execute an expression and catch any exceptions. *) { exp: parsetree, hrules: matchtree list, location: location, listLocation: location } | While of (* Ordinary while-loop *) { test: parsetree, body: parsetree, location: location, breakPoint: breakPoint option ref } | Case of (* Case-statement *) { test: parsetree, match: matchtree list, location: location, listLocation: location, expType: types ref } | Andalso of { first: parsetree, second: parsetree, location: location } | Orelse of { first: parsetree, second: parsetree, location: location } | Labelled of (* Labelled record & the entry in the list. "frozen" is false if it's a pattern with "...". *) { recList: labelRecEntry list, frozen: bool, expType: types ref, location: location } | Selector of { name: string, labType: types, typeof: types, location: location } | List of { elements: parsetree list, location: location, expType: types ref } | EmptyTree | WildCard of location | Unit of location | Parenthesised of parsetree * location and valbind = (* Value bindings.*) ValBind of (* Consists of a declaration part (pattern) and an expression. *) { dec: parsetree, exp: parsetree, line: location, isRecursive: bool, variables: values list ref (* list of variables declared and their poly vars *) } and fvalbind = (* Function binding *) (* `Fun' bindings *) (* A function binding is a list of clauses, each of which uses a valBinding to hold the list of patterns and the corresponding function body. The second pass extracts the function variable and the number of patterns in each clause. It checks that they are the same in each clause. *) FValBind of { clauses: fvalclause list, numOfPatts: int ref, functVar: values ref, argType: types ref, resultType: types ref, location: location } and fvalclause = (* Clause within a function binding. *) FValClause of { dec: funpattern, exp: parsetree, line: location, breakPoint: breakPoint option ref } and typebind = (* Non-generative type binding *) TypeBind of { name: string, typeVars: typeVarForm list, decType: typeParsetree option, isEqtype: bool, (* True if this was an eqtype in a signature. *) tcon: typeConstrSet ref, nameLoc: location, fullLoc: location } and datatypebind = (* Generative type binding *) DatatypeBind of { name: string, typeVars: typeVarForm list, constrs: valueConstr list, tcon: typeConstrSet ref, nameLoc: location, fullLoc: location } and exbind = (* An exception declaration. It has a name and optionally a previous exception and a type. *) ExBind of { name: string, previous: parsetree, ofType: typeParsetree option, value: values ref, nameLoc: location, fullLoc: location } and matchtree = (* A match is a pattern and an expression. If the pattern matches then the expression is evaluated in the environment of the pattern. *) MatchTree of { vars: parsetree, exp: parsetree, location: location, argType: types ref, resType: types ref, breakPoint: breakPoint option ref } (* Name of a structure. Used only in an ``open'' declaration. *) withtype structureIdentForm = { name: string, value: structVals option ref, location: location } (* An entry in a label record in an expression or a pattern. *) and labelRecEntry = { name: string, nameLoc: location, valOrPat: parsetree, fullLocation: location, expType: types ref } and funpattern = (* The declaration part of a fun binding. *) { ident: { name: string, expType: types ref, location: location }, isInfix: bool, args: parsetree list, constraint: typeParsetree option } and valueConstr = {constrName: string, constrArg: typeParsetree option, idLocn: location, constrVal: values ref} structure Sharing = struct type types = types and typeVarForm = typeVarForm and typeConstrSet = typeConstrSet and values = values and infixity = infixity and structVals = structVals and typeParsetree = typeParsetree and parsetree = parsetree and valbind = valbind and fvalbind = fvalbind and fvalclause = fvalclause and typebind = typebind and datatypebind = datatypebind and exbind = exbind and matchtree = matchtree end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/PRINT_PARSETREE.sml0000644000175000017500000006041013204034553022551 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor PRINT_PARSETREE ( structure BASEPARSETREE : BaseParseTreeSig structure LEX : LEXSIG structure STRUCTVALS : STRUCTVALSIG; structure TYPETREE : TYPETREESIG structure VALUEOPS : VALUEOPSSIG; structure PRETTY : PRETTYSIG sharing LEX.Sharing = TYPETREE.Sharing = STRUCTVALS.Sharing = VALUEOPS.Sharing = PRETTY.Sharing = BASEPARSETREE.Sharing ): PrintParsetreeSig = struct open LEX open STRUCTVALS open VALUEOPS open TYPETREE open PRETTY open BASEPARSETREE fun isEmptyTree EmptyTree = true | isEmptyTree _ = false; (* This pretty printer is used to format the parsetree for error messages (Error near ...) and also for debugging. There is a quite different pretty printer in VALUEOPS that is used to format values produced as a result of compiling and executing an expression or declaration. *) fun printList (doPrint: 'a*FixedInt.int->pretty) (c: 'a list, separator, depth: FixedInt.int): pretty list = if depth <= 0 then [PrettyString "..."] else case c of [] => [] | [v] => [doPrint (v, depth)] | (v::vs) => PrettyBlock (0, false, [], [ doPrint (v, depth), PrettyBreak (if separator = "," orelse separator = ";" orelse separator = "" then 0 else 1, 0), PrettyString separator ] ) :: PrettyBreak (1, 0) :: printList doPrint (vs, separator, depth - 1) (* Generates a pretty-printed representation of a piece of tree. *) fun displayParsetree (c : parsetree, (* The value to print. *) depth : FixedInt.int) : pretty = (* The number of levels to display. *) let val displayList = printList displayParsetree and displayListWithBpts = printList (fn ((c,_), depth) => displayParsetree(c, depth)) (* type bindings and datatype bindings are used in several cases *) fun printTypeBind (TypeBind{name, typeVars, decType, ...}, depth) = PrettyBlock (3, true, [], displayTypeVariables (typeVars, depth) @ ( PrettyString name :: (* The type may be missing if this is a signature. *) (case decType of NONE => [] | SOME t => [ PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayTypeParse (t, depth, emptyTypeEnv) ] ) ) ) and printDatatypeBind (DatatypeBind{name, typeVars, constrs, ...}, depth) = PrettyBlock (3, true, [], displayTypeVariables (typeVars, depth) @ ( PrettyString name :: PrettyBreak (1, 0) :: PrettyString "=" :: PrettyBreak (1, 0) :: printList printConstructor (constrs, "|", depth - 1) ) ) and printConstructor ({constrName, constrArg, ...}, depth) = PrettyBlock (2, false, [], PrettyString constrName :: ( case constrArg of NONE => [] | SOME argType => [ PrettyBreak (1, 0), PrettyString "of", PrettyBreak (1, 0), displayTypeParse (argType, depth, emptyTypeEnv) ] ) ) in if depth <= 0 (* elide further text. *) then PrettyString "..." else case c of Ident {name, ...} => PrettyString name | Literal{literal, converter, ...} => let val convName = valName converter val lit = if convName = "convString" then concat["\"" , literal, "\""] else if convName = "convChar" then concat["#\"" , literal, "\""] else literal in PrettyString lit end | Applic { f, arg = TupleTree{fields=[left, right], ...}, isInfix = true, ...} => (* Infixed application. *) PrettyBlock (0, false, [], [ displayParsetree (left, depth - 1), PrettyBreak (1, 0), displayParsetree (f, depth), (* Just an identifier. *) PrettyBreak (1, 0), displayParsetree (right, depth - 1) ] ) | Applic {f, arg, ...} => (* Function application. *) PrettyBlock (0, false, [], [ displayParsetree (f, depth - 1), PrettyBreak (1, 0), displayParsetree (arg, depth - 1) ] ) | Cond {test, thenpt, elsept, ...} => (* if..then..else.. *) PrettyBlock (0, false, [], [ PrettyString "if", PrettyBreak (1, 0), displayParsetree (test, depth - 1), PrettyBreak (1, 0), PrettyString "then", PrettyBreak (1, 0), displayParsetree (thenpt, depth - 1), PrettyBreak (1, 0), PrettyString "else", PrettyBreak (1, 0), displayParsetree (elsept, depth - 1) ] ) | TupleTree{fields, ...} => PrettyBlock (3, true, [], ( PrettyString "(" :: PrettyBreak (0, 0) :: displayList (fields, ",", depth - 1) ) @ [PrettyBreak (0, 0), PrettyString ")"] ) | ValDeclaration {dec, ...} => let (* We can't use printList here because we don't want an "and" after a "rec". *) fun printValBind ([], _) = [] | printValBind (ValBind{dec, exp, isRecursive, ...} :: rest, depth) = if depth <= 0 then [PrettyString "..."] else let val isRec = if isRecursive then [PrettyString "rec" , PrettyBreak (1, 0)] else [] val pValBind = PrettyBlock (3, false, [], [ displayParsetree (dec, depth - 1), PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayParsetree (exp, depth - 1) ] ) in case rest of [] => isRec @ [pValBind] | _ => PrettyBlock (0, false, [], isRec @ [pValBind, PrettyBreak(1, 0), PrettyString "and"]) :: PrettyBreak(1, 0) :: printValBind(rest, depth-1) end in PrettyBlock (3, true, [], PrettyString "val" :: PrettyBreak (1, 0) :: (* TODO: Display the explicit type variables. *) (* displayTypeVariables (explicit, depth); *) printValBind (dec, depth - 1) ) end | FunDeclaration {dec, ...} => let fun printfvalbind (FValBind{clauses, ...}, depth) = PrettyBlock(3, true, [], printList printClause (clauses, "|", depth - 1)) and printClause (FValClause{dec, exp, ...}, depth) = PrettyBlock (3, true, [], [ printDec (dec, depth - 1), PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayParsetree (exp, depth - 1) ] ) and printDec( { ident = { name, ... }, isInfix=true, args=[TupleTree{fields=[left, right], ...}], constraint }, depth) = (* Single infixed application. *) PrettyBlock (0, false, [], [ displayParsetree (left, depth - 1), PrettyBreak (1, 0), PrettyString name, PrettyBreak (1, 0), displayParsetree (right, depth - 1) ] @ printConstraint (constraint, depth-1) ) | printDec( { ident = { name, ... }, isInfix=true, args=TupleTree{fields=[left, right], ...} :: args, constraint }, depth) = (* Infixed application followed by other arguments. *) PrettyBlock (0, false, [], [ PrettyString "(", PrettyBreak (0, 0), displayParsetree (left, depth - 1), PrettyBreak (1, 0), PrettyString name, PrettyBreak (1, 0), displayParsetree (right, depth - 1), PrettyBreak (0, 0), PrettyString ")" ] @ displayList (args, "", depth - 1) @ printConstraint(constraint, depth-2) ) | printDec({ ident = { name, ...}, args, constraint, ... }, depth) = (* Prefixed application. *) PrettyBlock (0, false, [], [ PrettyString name, PrettyBreak (1, 0) ] @ displayList (args, "", depth - 1) @ printConstraint(constraint, depth-2) ) and printConstraint(NONE, _) = [] | printConstraint(SOME given, depth) = [ PrettyBreak (1, 0), PrettyString ":", PrettyBreak (1, 0), displayTypeParse (given, depth, emptyTypeEnv) ] in PrettyBlock (3, true, [], PrettyString "fun" :: PrettyBreak (1, 0) :: (* TODO: Display the explicit type variables. *) (* displayTypeVariables (explicit, depth); *) printList printfvalbind (dec, "and", depth - 1) ) end | OpenDec {decs, ...} => let fun printStrName ({name, ...}: structureIdentForm, _) = PrettyString name in PrettyBlock (3, true, [], PrettyString "open" :: PrettyBreak (1, 0) :: printList printStrName (decs, "", depth - 1) ) end | List {elements, ...} => PrettyBlock (3, true, [], PrettyString "[" :: PrettyBreak (0, 0) :: displayList (elements, ",", depth - 1) @ [PrettyBreak (0, 0), PrettyString "]" ] ) | Constraint {value, given, ...} => PrettyBlock (3, false, [], [ displayParsetree (value, depth - 1), PrettyBreak (1, 0), PrettyString ":", PrettyBreak (1, 0), displayTypeParse (given, depth, emptyTypeEnv) ] ) | Layered {var, pattern, ...} => PrettyBlock (3, true, [], [ displayParsetree (var, depth - 1), PrettyBreak (1, 0), PrettyString "as", PrettyBreak (1, 0), displayParsetree (pattern, depth - 1) ] ) | Fn {matches, ...} => PrettyBlock (3, true, [], PrettyString "fn" :: PrettyBreak (1, 0) :: printList displayMatch (matches, "|", depth - 1) ) | Unit _ => PrettyString "()" | WildCard _ => PrettyString "_" | Localdec {isLocal, decs, body, ...} => PrettyBlock (3, false, [], PrettyString (if isLocal then "local" else "let") :: PrettyBreak (1, 0) :: displayListWithBpts (decs, ";", depth - 1) @ [PrettyBreak (1, 0), PrettyString "in", PrettyBreak (1, 0)] @ displayListWithBpts (body, ";", depth - 1) @ [PrettyBreak (1, 0), PrettyString "end"] ) | TypeDeclaration(ptl, _) => let (* This is used both for type bindings and also in signatures. In a signature we may have "eqtype". *) val typeString = case ptl of TypeBind {isEqtype=true, ...} :: _ => "eqtype" | _ => "type" in PrettyBlock (3, true, [], PrettyString typeString :: PrettyBreak (1, 0) :: printList printTypeBind (ptl, "and", depth - 1) ) end | AbsDatatypeDeclaration {typelist, withtypes, isAbsType=false, ...} => PrettyBlock (3, true, [], PrettyString "datatype" :: PrettyBreak (1, 0) :: printList printDatatypeBind (typelist, "and", depth - 1) @ ( if null withtypes then [] else PrettyBreak (1, 0) :: PrettyString "withtype" :: PrettyBreak (1, 0) :: printList printTypeBind (withtypes, "and", depth - 1) ) ) | DatatypeReplication {newType, oldType, ...} => PrettyBlock (3, true, [], [ PrettyString "datatype", PrettyBreak (1, 0), PrettyString newType, PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), PrettyString "datatype", PrettyBreak (1, 0), PrettyString oldType ] ) | AbsDatatypeDeclaration {typelist, withtypes, declist, isAbsType=true, ...} => PrettyBlock (3, true, [], PrettyString "abstype" :: PrettyBreak (1, 0) :: printList printDatatypeBind (typelist, "and", depth - 1) @ [ PrettyBreak (1, 0) ] @ ( if null withtypes then [] else PrettyString "withtype" :: PrettyBreak (1, 0) :: printList printTypeBind (withtypes, "and", depth - 1) @ [PrettyBreak (1, 0)] ) @ [ PrettyString "with", PrettyBreak (1, 0), PrettyBlock (3, true, [], displayListWithBpts(declist, ";", depth - 1)) ] ) | ExpSeq(ptl, _) => PrettyBlock (3, true, [], PrettyString "(" :: PrettyBreak (0, 0) :: displayListWithBpts (ptl, ";", depth - 1) @ [ PrettyBreak (0, 0), PrettyString ")"] ) | Directive {fix, tlist, ...} => let val status = case fix of Nonfix => PrettyString "nonfix" | Infix prec => PrettyBlock(0, false, [], [ PrettyString "infix", PrettyBreak (1, 0), PrettyString (Int.toString prec) ]) | InfixR prec => PrettyBlock(0, false, [], [ PrettyString "infixr", PrettyBreak (1, 0), PrettyString (Int.toString prec) ]) in PrettyBlock (3, true, [], status :: PrettyBreak (1, 0) :: printList (fn (name, _) => PrettyString name) (tlist, "", depth - 1) ) end | ExDeclaration(pt, _) => let fun printExBind (ExBind {name, ofType, previous, ...}, depth) = PrettyBlock (0, false, [], PrettyString name :: (case ofType of NONE => [] | SOME typeof => [ PrettyBreak (1, 0), PrettyString "of", PrettyBreak (1, 0), displayTypeParse (typeof, depth, emptyTypeEnv) ] ) @ (if isEmptyTree previous then [] else [ PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayParsetree (previous, depth - 1) ]) ) in PrettyBlock (3, true, [], PrettyString "exception" :: PrettyBreak (1, 0) :: printList printExBind (pt, "and", depth - 1) ) end | Raise (pt, _) => PrettyBlock (0, false, [], [ PrettyString "raise", PrettyBreak (1, 0), displayParsetree (pt, depth - 1) ] ) | HandleTree {exp, hrules, ...} => PrettyBlock (0, false, [], [ displayParsetree (exp, depth - 1), PrettyBreak (1, 0), PrettyBlock (3, true, [], PrettyString "handle" :: PrettyBreak (1, 0) :: printList displayMatch (hrules, "|", depth - 1) ) ] ) | While {test, body, ...} => PrettyBlock (0, false, [], [ PrettyString "while", PrettyBreak (1, 0), displayParsetree (test, depth - 1), PrettyBreak (1, 0), PrettyString "do", PrettyBreak (1, 0), displayParsetree (body, depth - 1) ] ) | Case {test, match, ...} => PrettyBlock (3, true, [], PrettyBlock (0, false, [], [ PrettyString "case", PrettyBreak (1, 0), displayParsetree (test, depth - 1), PrettyBreak (1, 0), PrettyString "of" ] ) :: PrettyBreak (1, 0) :: printList displayMatch (match, "|", depth - 1) ) | Andalso {first, second, ...} => PrettyBlock (3, true, [], [ displayParsetree (first, depth - 1), PrettyBreak (1, 0), PrettyString "andalso", PrettyBreak (1, 0), displayParsetree (second, depth - 1) ] ) | Orelse {first, second, ...} => PrettyBlock (3, true, [], [ displayParsetree (first, depth - 1), PrettyBreak (1, 0), PrettyString "orelse", PrettyBreak (1, 0), displayParsetree (second, depth - 1) ] ) | Labelled {recList, frozen, ...} => let fun displayRecList (c, depth): pretty list = if depth <= 0 then [PrettyString "..."] else case c of [] => [] | [{name, valOrPat, ...}] => [ PrettyBlock (0, false, [], [ PrettyString (name ^ " ="), PrettyBreak (1, 0), displayParsetree (valOrPat, depth - 1) ] ) ] | ({name, valOrPat, ...}::vs) => PrettyBlock (0, false, [], [ PrettyBlock (0, false, [], [ PrettyString (name ^ " ="), PrettyBreak (1, 0), displayParsetree (valOrPat, depth - 1) ] ), PrettyBreak (0, 0), PrettyString "," ] ) :: PrettyBreak (1, 0) :: displayRecList (vs, depth - 1) (* end displayRecList *) in PrettyBlock (2, false, [], PrettyString "{" :: displayRecList (recList, depth - 1) @ (if frozen then [PrettyString "}"] else [PrettyString (if null recList then "...}" else ", ...}")]) ) end | Selector {name, ...} => PrettyString ("#" ^ name) | EmptyTree => PrettyString "" | Parenthesised(p, _) => PrettyBlock(0, false, [], [ PrettyString "(", PrettyBreak (0, 0), displayParsetree (p, depth), PrettyBreak (0, 0), PrettyString ")" ] ) end (* displayParsetree *) and displayMatch(MatchTree {vars, exp, ...}, depth) = PrettyBlock (0, false, [], [ displayParsetree (vars, depth - 1), PrettyBreak (1, 0), PrettyString "=>", PrettyBreak (1, 0), displayParsetree (exp, depth - 1) ] ) (* Error message routine. Used in both pass 2 and pass 3. *) fun errorNear (lex, hard, near, line, message) = let val errorDepth = errorDepth lex in (* Puts out an error message and then prints the piece of tree. *) reportError lex { hard = hard, location = line, message = PrettyBlock (0, false, [], [PrettyString message]), context = SOME(displayParsetree (near, errorDepth)) } end (* Types that can be shared. *) structure Sharing = struct type lexan = lexan and parsetree = parsetree and matchtree = matchtree and pretty = pretty end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/MatchCompilerSig.sml0000644000175000017500000000322713204034553023440 0ustar daviddavid(* Copyright (c) 2013, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature MatchCompilerSig = sig type parsetree type typeVarMap type level type codetree type matchtree type codeBinding type lexan type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } and matchContext = { mkAddr: int->int, level: level, typeVarMap: typeVarMap, lex: lexan } val codeMatchPatterns: matchtree list * codetree * bool * location * (int -> codetree) * matchContext -> codetree * bool and codeBindingPattern: parsetree * codetree * location * matchContext -> codeBinding list * bool structure Sharing: sig type parsetree = parsetree type typeVarMap = typeVarMap type level = level type codetree = codetree type matchtree = matchtree type codeBinding = codeBinding type lexan = lexan end end; polyml-5.7.1/mlsource/MLCompiler/ParseTree/CODEGEN_PARSETREE.sml0000644000175000017500000025752613204034553022741 0ustar daviddavid(* Copyright (c) 2013-2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the original parse-tree Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-13 David C.J. Matthews Title: Parse Tree Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor CODEGEN_PARSETREE ( structure BASEPARSETREE : BaseParseTreeSig structure PRINTTREE: PrintParsetreeSig structure EXPORTTREE: ExportParsetreeSig structure MATCHCOMPILER: MatchCompilerSig structure LEX : LEXSIG structure CODETREE : CODETREESIG structure DEBUGGER : DEBUGGERSIG structure TYPETREE : TYPETREESIG structure TYPEIDCODE: TYPEIDCODESIG structure STRUCTVALS : STRUCTVALSIG structure VALUEOPS : VALUEOPSSIG structure DATATYPEREP: DATATYPEREPSIG structure DEBUG: DEBUGSIG structure MISC : sig (* These are handled in the compiler *) exception Conversion of string (* string to int conversion failure *) (* This isn't handled at all (except generically) *) exception InternalError of string (* compiler error *) end structure ADDRESS : AddressSig sharing BASEPARSETREE.Sharing = PRINTTREE.Sharing = EXPORTTREE.Sharing = MATCHCOMPILER.Sharing = LEX.Sharing = CODETREE.Sharing = DEBUGGER.Sharing = TYPETREE.Sharing = TYPEIDCODE.Sharing = STRUCTVALS.Sharing = VALUEOPS.Sharing = DATATYPEREP.Sharing = ADDRESS ): CodegenParsetreeSig = struct open BASEPARSETREE open PRINTTREE open EXPORTTREE open MATCHCOMPILER open CODETREE open TYPEIDCODE open LEX open TYPETREE open DEBUG open STRUCTVALS open VALUEOPS open MISC open DATATYPEREP open TypeVarMap open DEBUGGER datatype environEntry = datatype DEBUGGER.environEntry (* To simplify passing the context it is wrapped up in this type. *) type cgContext = { decName: string, debugEnv: debuggerStatus, mkAddr: int->int, level: level, typeVarMap: typeVarMap, lex: lexan, lastDebugLine: int ref, isOuterLevel: bool (* Used only to decide if we need to report non-exhaustive matches. *) } fun repDecName decName ({debugEnv, mkAddr, level, typeVarMap, lex, lastDebugLine, isOuterLevel, ...}: cgContext) = { debugEnv=debugEnv, mkAddr=mkAddr, level=level, typeVarMap=typeVarMap, decName=decName, lex=lex, lastDebugLine=lastDebugLine, isOuterLevel = isOuterLevel}: cgContext and repDebugEnv debugEnv ({decName, mkAddr, level, typeVarMap, lex, lastDebugLine, isOuterLevel, ...}: cgContext) = { debugEnv=debugEnv, mkAddr=mkAddr, level=level, typeVarMap=typeVarMap, decName=decName, lex=lex, lastDebugLine=lastDebugLine, isOuterLevel = isOuterLevel}: cgContext and repTypeVarMap typeVarMap ({decName, debugEnv, mkAddr, level, lex, lastDebugLine, isOuterLevel, ...}: cgContext) = { debugEnv=debugEnv, mkAddr=mkAddr, level=level, typeVarMap=typeVarMap, decName=decName, lex=lex, lastDebugLine=lastDebugLine, isOuterLevel = isOuterLevel}: cgContext (* Create a new level. Sets isOuterLevel to false. *) and repNewLevel(decName, mkAddr, level) ({debugEnv, lex, lastDebugLine, typeVarMap, ...}: cgContext) = { debugEnv=debugEnv, mkAddr=mkAddr, level=level, typeVarMap=typeVarMap, decName=decName, lex=lex, lastDebugLine=lastDebugLine, isOuterLevel = false}: cgContext (* Try this pipeline function *) infix |> fun a |> f = f a val singleArg = mkLoadArgument 0 (* Make a tuple out of a set of arguments or return the single argument if there is just one. *) fun mkArgTuple(from, nTuple) = if nTuple = 1 (* "tuple" is a singleton *) then mkLoadArgument from else if nTuple <= 0 then raise InternalError "mkArgTuple" else mkTuple(List.tabulate(nTuple, fn n => mkLoadArgument(n+from))) (* Load args by selecting from a tuple. *) fun loadArgsFromTuple([t], arg) = [(arg, t)](* "tuple" is a singleton *) | loadArgsFromTuple(types, arg) = ListPair.zip(List.tabulate(List.length types, fn num => mkInd (num, arg)), types) (* Return the argument/result type which is currently just floating point or everything else. *) fun getCodeArgType t = if isFloatingPt t then FloatingPtType else GeneralType (* tupleWidth returns the width of a tuple or record or 1 if it isn't one. It is used to detect both argument tuples and results. When used for arguments the idea is that frequently a tuple is used as a way of passing multiple arguments and these can be passed on the stack. When used for results the idea is to create the result tuple on the stack and avoid garbage collector and allocator time. If we could tell that the caller was simply going to explode it we would gain but if the caller needed a tuple on the heap we wouldn't. We wouldn't actually lose if we were going to create a tuple and return it but we would lose if we exploded a tuple here and then created a new one in the caller. This version of the code assumes that if we create a tuple on one branch we're going to create one on others which may not be correct. *) (* This now returns the argument type for each entry so returns a list rather than a number. *) fun tupleWidth(TupleTree{expType=ref expType, ...}) = recordFieldMap getCodeArgType expType | tupleWidth(Labelled{expType=ref expType, ...}) = if recordNotFrozen expType (* An error, but reported elsewhere. *) then [GeneralType] (* Safe enough *) else recordFieldMap getCodeArgType expType | tupleWidth(Cond{thenpt, elsept, ...}) = ( case tupleWidth thenpt of [_] => tupleWidth elsept | w => w ) | tupleWidth(Constraint{value, ...}) = tupleWidth value | tupleWidth(HandleTree{exp, ...}) = (* Look only at the expression and ignore the handlers on the, possibly erroneous, assumption that they won't normally be executed. *) tupleWidth exp | tupleWidth(Localdec{body=[], ...}) = raise InternalError "tupleWidth: empty localdec" | tupleWidth(Localdec{body, ...}) = (* We are only interested in the last expression. *) tupleWidth(#1 (List.last body)) | tupleWidth(Case{match, ...}) = let fun getWidth(MatchTree{exp, ...}) = tupleWidth exp in List.foldl(fn(v, [_]) => getWidth v | (_, s) => s) [GeneralType] match end | tupleWidth(Parenthesised(p, _)) = tupleWidth p | tupleWidth(ExpSeq(p, _)) = tupleWidth(#1 (List.last p)) | tupleWidth(Ident{ expType=ref expType, ...}) = [getCodeArgType expType] | tupleWidth(Literal{ expType=ref expType, ...}) = [getCodeArgType expType] | tupleWidth(Applic{ expType=ref expType, ...}) = [getCodeArgType expType] | tupleWidth _ = [GeneralType] (* Start of the code-generator itself. *) (* Report unreferenced identifiers. *) fun reportUnreferencedValue lex (Value{name, references=SOME{exportedRef=ref false, localRef=ref nil, ...}, locations, ...}) = let fun getDeclLoc (DeclaredAt loc :: _) = loc | getDeclLoc (_ :: locs) = getDeclLoc locs | getDeclLoc [] = nullLocation (* Shouldn't happen. *) in warningMessage(lex, getDeclLoc locations, "Value identifier ("^name^") has not been referenced.") end | reportUnreferencedValue _ _ = () (* Process a list of possibly mutually recursive functions and identify those that are really referenced. *) fun reportUnreferencedValues(valList, lex) = let fun checkRefs valList = let fun unReferenced(Value{references=SOME{exportedRef=ref false, localRef=ref nil, ...}, ...}) = true | unReferenced _ = false val (unrefed, refed) = List.partition unReferenced valList fun update(Value{references=SOME{localRef, recursiveRef, ...}, ...}, changed) = let (* If it is referred to by a referenced function it is referenced. *) fun inReferenced(_, refName) = List.exists (fn Value{name, ...} => name=refName) refed val (present, absent) = List.partition inReferenced (!recursiveRef) in if null present then changed else ( localRef := List.map #1 present @ ! localRef; recursiveRef := absent; true ) end | update(_, changed) = changed in (* Repeat until there's no change. *) if List.foldl update false unrefed then checkRefs unrefed else () end in checkRefs valList; List.app (reportUnreferencedValue lex) valList end fun makeDebugEntries (vars: values list, {debugEnv, level, typeVarMap, lex, mkAddr, ...}: cgContext) = let val (code, newDebug) = DEBUGGER.makeValDebugEntries(vars, debugEnv, level, lex, mkAddr, typeVarMap) in (code, newDebug) end (* Add a breakpoint if debugging is enabled. The bpt argument is set in the parsetree so that it can be found by the IDE. *) fun addBreakPointCall(bpt, location, {mkAddr, level, lex, debugEnv, ...}) = let open DEBUGGER val (lineCode, newStatus) = updateDebugLocation(debugEnv, location, lex) val code = breakPointCode(bpt, location, level, lex, mkAddr) in (lineCode @ code, newStatus) end (* In order to build a call stack in the debugger we need to know about function entry and exit. *) fun wrapFunctionInDebug(codeBody, name, argCode, argType, restype, location, {debugEnv, mkAddr, level, lex, ...}) = DEBUGGER.wrapFunctionInDebug(codeBody, name, argCode, argType, restype, location, debugEnv, level, lex, mkAddr) (* Create an entry in the static environment for the function. *) (* fun debugFunctionEntryCode(name, argCode, argType, location, {debugEnv, mkAddr, level, lex, ...}) = DEBUGGER.debugFunctionEntryCode(name, argCode, argType, location, debugEnv, level, lex, mkAddr)*) (* Find all the variables declared by each pattern. *) fun getVariablesInPatt (Ident {value = ref ident, ...}, varl) = (* Ignore constructors *) if isConstructor ident then varl else ident :: varl | getVariablesInPatt(TupleTree{fields, ...}, varl) = List.foldl getVariablesInPatt varl fields | getVariablesInPatt(Labelled {recList, ...}, varl) = List.foldl (fn ({valOrPat, ...}, vl) => getVariablesInPatt(valOrPat, vl)) varl recList (* Application of a constructor: only the argument can contain vars. *) | getVariablesInPatt(Applic {arg, ...}, varl) = getVariablesInPatt (arg, varl) | getVariablesInPatt(List{elements, ...}, varl) = List.foldl getVariablesInPatt varl elements | getVariablesInPatt(Constraint {value, ...}, varl) = getVariablesInPatt(value, varl) | getVariablesInPatt(Layered {var, pattern, ...}, varl) = (* There may be a constraint on the variable so it is easiest to recurse. *) getVariablesInPatt(pattern, getVariablesInPatt(var, varl)) | getVariablesInPatt(Parenthesised(p, _), varl) = getVariablesInPatt(p, varl) | getVariablesInPatt(_, varl) = varl (* constants and error cases. *); (* If we are only passing equality types filter out the others. *) val filterTypeVars = List.filter (fn tv => not justForEqualityTypes orelse tvEquality tv) fun codeMatch(near, alt : matchtree list, arg, isHandlerMatch, matchContext as { level, mkAddr, lex, typeVarMap, ...}): codetree = let val noOfPats = length alt (* Check for unreferenced variables. *) val () = if getParameter reportUnreferencedIdsTag (debugParams lex) then let fun getVars(MatchTree{vars, ...}, l) = getVariablesInPatt(vars, l) val allVars = List.foldl getVars [] alt in List.app (reportUnreferencedValue lex) allVars end else () val lineNo = case alt of MatchTree {location, ... } :: _ => location | _ => raise Match (* Save the argument in a variable. *) val decCode = multipleUses (arg, fn () => mkAddr 1, level); (* Generate code to load it. *) val loadExpCode = #load decCode level; (* Generate a range of addresses for any functions that have to be generated for the expressions. *) val baseAddr = mkAddr noOfPats (* We want to avoid the code blowing up if we have a large expression which occurs multiple times in the resulting code. e.g. case x of [1,2,3,4] => exp1 | _ => exp2 Here exp2 will be called at several points in the code. Most patterns occur only once, sometimes a few more times. The first three times the pattern occurs the code is inserted directly. Further cases are dealt with as function calls. *) val insertDirectCount = 3 (* First three cases are inserted directly. *) (* Make an array to count the number of references to a pattern. This is used to decide whether to use a function for certain expressions or to make it inline. *) val uses = IntArray.array (noOfPats, 0); (* Called when a selection has been made to code-generate the expression. *) fun codePatternExpression pattChosenIndex = let val context = matchContext (* Increment the count for this pattern. *) val useCount = IntArray.sub(uses, pattChosenIndex) + 1 val () = IntArray.update (uses, pattChosenIndex, useCount) val MatchTree {vars, exp, breakPoint, ... } = List.nth(alt, pattChosenIndex) in if useCount <= insertDirectCount then (* Use the expression directly *) let (* If debugging add debug entries for the variables then put in a break-point. *) val vl = getVariablesInPatt(vars, []) val (envDec, varDebugEnv) = makeDebugEntries(vl, context) val (bptCode, bptEnv) = addBreakPointCall(breakPoint, getLocation exp, context |> repDebugEnv varDebugEnv) in mkEnv(envDec @ bptCode, codegen (exp, context |> repDebugEnv bptEnv)) end else let (* Put in a call to the expression as a function. *) val thisVars = getVariablesInPatt(vars, []) (* Make an argument list from the variables bound in the pattern. *) fun makeArg(Value{access=Local{addr=ref lvAddr, ...}, ...}) = mkLoadLocal lvAddr | makeArg _ = raise InternalError "makeArg" val argsForCall = List.map makeArg thisVars in mkEval(mkLoadLocal (baseAddr + pattChosenIndex), argsForCall) end end (* Generate the code and also check for redundancy and exhaustiveness. *) local val cmContext = { mkAddr = mkAddr, level = level, typeVarMap = typeVarMap, lex = lex } in val (matchCode, exhaustive) = codeMatchPatterns(alt, loadExpCode, isHandlerMatch, lineNo, codePatternExpression, cmContext) end (* Report inexhaustiveness if necessary. TODO: It would be nice to have some example of a pattern that isn't matched for. *) (* If this is a handler we may have set the option to report exhaustiveness. This helps in tracking down handlers that don't treat Interrupt specially. *) val () = if exhaustive then if isHandlerMatch andalso getParameter reportExhaustiveHandlersTag (debugParams lex) then errorNear (lex, false, near, lineNo, "Handler catches all exceptions.") else () else if isHandlerMatch then () else errorNear (lex, false, near, lineNo, "Matches are not exhaustive.") (* Report redundant patterns. *) local fun reportRedundant(patNo, 0) = let val MatchTree {location, ... } = List.nth(alt, patNo) in errorNear (lex, false, near, location, "Pattern " ^ Int.toString (patNo+1) ^ " is redundant.") end | reportRedundant _ = () in val () = IntArray.appi reportRedundant uses end (* Generate functions for expressions that have been used more than 3 times. *) fun cgExps([], _, _, _, _, _, _) = [] | cgExps (MatchTree {vars, exp, breakPoint, ...} ::al, base, patNo, uses, lex, near, cgContext as { decName, level, ...}) = if IntArray.sub(uses, patNo - 1) <= insertDirectCount then (* Skip if it has been inserted directly and we don't need a fn. *) cgExps(al, base, patNo + 1, uses, lex, near, cgContext) else let val functionLevel = newLevel level (* For the function. *) local val addresses = ref 1 in fun fnMkAddrs n = ! addresses before (addresses := !addresses + n) end val fnContext = cgContext |> repNewLevel(decName, fnMkAddrs, functionLevel) (* We have to pass the variables as arguments. Bind a local variable to the argument so we can set the variable address as a local address. *) val pattVars = getVariablesInPatt(vars, []) val noOfArgs = length pattVars val argumentList = List.tabulate(noOfArgs, mkLoadArgument) val localAddresses = List.map(fn _ => fnMkAddrs 1) pattVars (* One address for each argument. *) val localDecs = ListPair.mapEq mkDec (localAddresses, argumentList) local (* Set the addresses to be suitable for arguments. At the same time create a debugging environment if required. *) fun setAddr (Value{access=Local{addr=lvAddr, level=lvLevel}, ...}, localAddr) = (lvAddr := localAddr; lvLevel := functionLevel) | setAddr _ = raise InternalError "setAddr" in val _ = ListPair.appEq setAddr (pattVars, localAddresses) end (* If debugging add the debug entries for the variables then a break-point. *) val (envDec, varDebugEnv) = makeDebugEntries(pattVars, fnContext) val (bptCode, bptEnv) = addBreakPointCall(breakPoint, getLocation exp, fnContext |> repDebugEnv varDebugEnv) val functionBody = mkEnv(localDecs @ envDec @ bptCode, codegen (exp, fnContext |> repDebugEnv bptEnv)) val patNoIndex = patNo - 1 in mkDec(base + patNoIndex, mkProc (functionBody, noOfArgs, decName ^ "/" ^ Int.toString patNo, getClosure functionLevel, fnMkAddrs 0)) :: cgExps(al, base, patNo + 1, uses, lex, near, cgContext) end val expressionFuns = cgExps(alt, baseAddr, 1, uses, lex, near, matchContext) in (* Return the code in a block. *) mkEnv (#dec decCode @ expressionFuns, matchCode) end (* codeMatch *) (* Code-generates a piece of tree. Returns the code and also the, possibly updated, debug context. This is needed to record the last location that was set in the thread data. *) and codeGenerate(Ident {value = ref (v as Value{class = Exception, ...}), location, ...}, { level, typeVarMap, lex, debugEnv, ...}) = (* Exception identifier *) (codeExFunction (v, level, typeVarMap, [], lex, location), debugEnv) | codeGenerate(Ident {value = ref (v as Value{class = Constructor _, ...}), expType=ref expType, location, ...}, { level, typeVarMap, lex, debugEnv, ...}) = (* Constructor identifier *) let (* The instance type is not necessarily the same as the type of the value of the identifier. e.g. in the expression 1 :: nil, "::" has an instance type of int * list int -> list int but the type of "::" is 'a * 'a list -> 'a list. *) (* When using the constructor as a value we just want the second word. Must pass [] as the polyVars otherwise this will be applied BEFORE extracting the construction function not afterwards. *) fun getConstr level = ValueConstructor.extractInjection(codeVal (v, level, typeVarMap, [], lex, location)) val polyVars = getPolymorphism (v, expType, typeVarMap) val code = applyToInstance(if justForEqualityTypes then [] else polyVars, level, typeVarMap, getConstr) in (code, debugEnv) end | codeGenerate(Ident {value = ref v, expType=ref expType, location, ...}, { level, typeVarMap, lex, debugEnv, ...}) = (* Value identifier *) let val polyVars = getPolymorphism (v, expType, typeVarMap) val code = codeVal (v, level, typeVarMap, polyVars, lex, location) in (code, debugEnv) end | codeGenerate(c as Literal{converter, literal, expType=ref expType, location}, { lex, debugEnv, ...}) = ( case getLiteralValue(converter, literal, expType, fn s => errorNear(lex, true, c, location, s)) of SOME w => (mkConst w, debugEnv) | NONE => (CodeZero, debugEnv) ) | codeGenerate(Applic {f = Ident {value = ref function, expType=ref expType, ...}, arg, location, ...}, context as { level, typeVarMap, lex, ...}) = (* Some functions are special e.g. overloaded and type-specific functions. These need to picked out and processed by applyFunction. *) let val polyVars = getPolymorphism (function, expType, typeVarMap) val (argCode, argEnv) = codeGenerate (arg, context) val code = applyFunction (function, argCode, level, typeVarMap, polyVars, lex, location) in (code, argEnv) end | codeGenerate(Applic {f, arg, ...}, context) = let val (fnCode, fnEnv) = codeGenerate(f, context) val (argCode, argEnv) = codeGenerate(arg, context |> repDebugEnv fnEnv) in (mkEval (fnCode, [argCode]), argEnv) end | codeGenerate(Cond {test, thenpt, elsept, thenBreak, elseBreak, ...}, context) = let val (testCode, testEnv) = codeGenerate(test, context) val (thenBptCode, thenDebug) = addBreakPointCall(thenBreak, getLocation thenpt, context |> repDebugEnv testEnv) val (thenCode, _) = codeGenerate(thenpt, context |> repDebugEnv thenDebug) val (elseBptCode, elseDebug) = addBreakPointCall(elseBreak, getLocation elsept, context |> repDebugEnv testEnv) val (elseCode, _) = codeGenerate(elsept, context |> repDebugEnv elseDebug) in (mkIf (testCode, mkEnv(thenBptCode, thenCode), mkEnv(elseBptCode, elseCode)), testEnv) end | codeGenerate(TupleTree{fields=[(*pt*)_], ...}, _) = (* There was previously a special case to optimise unary tuples but I can't understand how they can occur. Check this and remove the special case if it really doesn't. *) raise InternalError "codegen: Unary tuple" (*codegen (pt, context)*) | codeGenerate(TupleTree{fields, ...}, context as { debugEnv, ...}) = (* Construct a vector of objects. *) (mkTuple(map (fn x => codegen (x, context)) fields), debugEnv) | codeGenerate(Labelled {recList = [{valOrPat, ...}], ...}, context) = codeGenerate (valOrPat, context) (* optimise unary records *) | codeGenerate(Labelled {recList, expType=ref expType, ...}, context as { level, mkAddr, debugEnv, ...}) = let (* We must evaluate the expressions in the order they are written. This is not necessarily the order they appear in the record. *) val recordSize = length recList; (* The size of the record. *) (* First declare the values as local variables. *) (* We work down the list evaluating the expressions and putting the results away in temporaries. When we reach the end we construct the tuple by asking for each entry in turn. *) fun declist [] look = ([], mkTuple (List.tabulate (recordSize, look))) | declist ({name, valOrPat, ...} :: t) look = let val thisDec = multipleUses (codegen (valOrPat, context), fn () => mkAddr 1, level); val myPosition = entryNumber (name, expType); fun lookFn i = if i = myPosition then #load thisDec (level) else look i val (otherDecs, tuple) = declist t lookFn in (#dec thisDec @ otherDecs, tuple) end in (* Create the record and package it up as a block. *) (mkEnv (declist recList (fn _ => raise InternalError "missing in record")), debugEnv) end | codeGenerate(c as Selector {name, labType, location, typeof, ...}, { decName, typeVarMap, lex, debugEnv, ...}) = let (* Check that the type is frozen. *) val () = if recordNotFrozen labType then errorNear (lex, true, c, location, "Can't find a fixed record type.") else (); val selectorBody : codetree = if recordWidth labType = 1 then singleArg (* optimise unary tuples - no indirection! *) else let val offset : int = entryNumber (name, labType); in mkInd (offset, singleArg) end val code =(* Make an inline function. *) case filterTypeVars (getPolyTypeVars(typeof, mapTypeVars typeVarMap)) of [] => mkInlproc (selectorBody, 1, decName ^ "#" ^ name, [], 0) | polyVars => (* This may be polymorphic. *) mkInlproc( mkInlproc (selectorBody, 1, decName ^ "#" ^ name, [], 0), List.length polyVars, decName ^ "#" ^ name ^ "(P)", [], 0) in (code, debugEnv) end | codeGenerate(Unit _, { debugEnv, ...}) = (* Use zero. It is possible to have () = (). *) (CodeZero, debugEnv) | codeGenerate(List{elements, expType = ref listType, location, ...}, context as { level, typeVarMap, lex, debugEnv, ...}) = let (* Construct a list. We need to apply the constructors appropriate to the type. *) val baseType = case listType of TypeConstruction{args=[baseType], ...} => baseType | _ => raise InternalError "List: bad element type" val consType = mkFunctionType(mkProductType[baseType, listType], listType) fun consList [] = let (* "nil" *) val polyVars = getPolymorphism (nilConstructor, listType, typeVarMap) fun getConstr level = ValueConstructor.extractInjection( codeVal (nilConstructor, level, typeVarMap, [], lex, location)) in applyToInstance(polyVars, level, typeVarMap, getConstr) end | consList (h::t) = let (* :: *) val H = codegen (h, context) and T = consList t val polyVars = getPolymorphism (consConstructor, consType, typeVarMap) in applyFunction (consConstructor, mkTuple [H,T], level, typeVarMap, polyVars, lex, location) end in (consList elements, debugEnv) end | codeGenerate(Constraint {value, ...}, context) = codeGenerate (value, context) (* code gen. the value *) | codeGenerate(c as Fn { location, expType=ref expType, ... }, context as { typeVarMap, debugEnv, ...}) = (* Function *) (codeLambda(c, location, filterTypeVars(getPolyTypeVars(expType, mapTypeVars typeVarMap)), context), debugEnv) | codeGenerate(Localdec {decs, body, ...}, context) = (* Local expressions only. Local declarations will be handled by codeSequence.*) let (* This is the continuation called when the declarations have been processed. We need to ensure that if there are local datatypes we make new entries in the type value cache after them. *) (* TODO: This is a bit of a mess. We want to return the result of the last expression as an expression rather than a codeBinding. *) fun processBody (previousDecs: codeBinding list, nextContext as {debugEnv, ...}) = let fun codeList ([], d) = ([], d) | codeList ((p, bpt) :: tl, d) = (* Generate any break point code first, then this entry, then the rest. *) let val (lineChange, newEnv) = addBreakPointCall(bpt, getLocation p, nextContext |> repDebugEnv d) (* addBreakPointCall also updates the location info in case of a break-point or a function call. We want to pass that along. *) val code = mkNullDec(codegen (p, nextContext |> repDebugEnv newEnv)) val (codeRest, finalEnv) = codeList (tl, newEnv) in (lineChange @ [code] @ codeRest, finalEnv) end val (exps, finalDebugEnv) = codeList (body, debugEnv) in (previousDecs @ exps, finalDebugEnv) end val (decs, lastEnv) = codeSequence (decs, [], context, processBody) in (decSequenceWithFinalExp decs, lastEnv) end | codeGenerate(ExpSeq(ptl, _), context as { debugEnv, ...}) = (* Sequence of expressions. Discard results of all except the last.*) let fun codeList ([], _) = raise InternalError "ExpSeq: empty sequence" | codeList ((p, bpt)::tl, d) = let val (bptCode, newEnv) = addBreakPointCall(bpt, getLocation p, context |> repDebugEnv d) (* Because addBreakPointCall updates the location info in the debug env we need to pass this along in the same way as when making bindings. *) val (thisCode, postCodeEnv) = codeGenerate (p, context |> repDebugEnv newEnv) in case tl of [] => (bptCode, thisCode, postCodeEnv) | tl => let val (otherDecs, expCode, postListEnv) = codeList(tl, postCodeEnv) in (bptCode @ (mkNullDec thisCode :: otherDecs), expCode, postListEnv) end end val (codeDecs, codeExp, finalEnv) = codeList(ptl, debugEnv) in (mkEnv (codeDecs, codeExp), finalEnv) end | codeGenerate(Raise (pt, location), context as { level, mkAddr, ...}) = let val (raiseCode, raiseEnv) = codeGenerate(pt, context) val {dec, load} = multipleUses (raiseCode, fn () => mkAddr 1, level) val load = load level (* Copy the identifier, name and argument from the packet and add this location. *) val excPacket = mkEnv(dec, mkTuple[mkInd(0, load), mkInd(1, load), mkInd(2, load), codeLocation location]) in (mkRaise excPacket, raiseEnv) end | codeGenerate(c as HandleTree {exp, hrules, ...}, context as { debugEnv, mkAddr, ...}) = (* Execute an expression in the scope of a handler *) let val exPacketAddr = mkAddr 1 val handleExp = codegen (exp, context) val handlerCode = codeMatch (c, hrules, mkLoadLocal exPacketAddr, true, context) in (mkHandle (handleExp, handlerCode, exPacketAddr), debugEnv) end | codeGenerate(While {test, body, breakPoint, ...}, context as { debugEnv, ...}) = let val (testCode, testEnv) = codeGenerate(test, context) val (bptCode, testDebug) = addBreakPointCall(breakPoint, getLocation body, context |> repDebugEnv testEnv) val (bodyCode, _) = codeGenerate(body, context |> repDebugEnv testDebug) in (mkWhile (testCode, mkEnv(bptCode, bodyCode)), debugEnv) end | codeGenerate(c as Case {test, match, ...}, context as { debugEnv, ...}) = (* The matches are made into a series of tests and applied to the test expression. *) let val testCode = codegen (test, context) in (codeMatch (c, match, testCode, false, context), debugEnv) end | codeGenerate(Andalso {first, second, ...}, context) = let val (firstCode, firstEnv) = codeGenerate(first, context) (* Any updates to the debug context in the first part will carry over but we can't be sure whether any of the second part will be executed. *) val (secondCode, _) = codeGenerate(second, context |> repDebugEnv firstEnv) in (* Equivalent to if first then second else false *) (mkCand (firstCode, secondCode), firstEnv) end | codeGenerate(Orelse {first, second, ...}, context) = let val (firstCode, firstEnv) = codeGenerate(first, context) (* Any updates to the debug context in the first part will carry over but we can't be sure whether any of the second part will be executed. *) val (secondCode, _) = codeGenerate(second, context |> repDebugEnv firstEnv) in (* Equivalent to if first then true else second *) (mkCor (firstCode, secondCode), firstEnv) end | codeGenerate(Parenthesised(p, _), context) = codeGenerate (p, context) | codeGenerate(_, {debugEnv, ...}) = (CodeZero, debugEnv) (* empty and any others *) (* Old codegen function which discards the debug context. *) and codegen (c: parsetree, context) = #1 (codeGenerate(c, context)) (* Code-generate a lambda (fn expression). *) and codeLambda(c, location, polyVars, cpContext as {mkAddr=originalmkAddr, level=originalLevel, decName, ...}) = let fun getFnBody (Constraint {value, ...}) = getFnBody value | getFnBody (Fn{matches, ...}) = matches | getFnBody (Parenthesised(p, _)) = getFnBody p | getFnBody _ = raise InternalError "getFnBody: not a constrained fn-expression"; val f = getFnBody c; (* This function comprises a new declaration level *) val nLevel = if null polyVars then originalLevel else newLevel originalLevel local val addresses = ref 1 in fun fnMkAddr n = (! addresses) before (addresses := ! addresses + n) end val (firstPat, resType, argType) = case f of MatchTree {vars, resType = ref rtype, argType = ref atype, ...} :: _ => (vars, rtype, atype) | _ => raise InternalError "codeLambda: body of fn is not a clause list"; val tupleSize = List.length(tupleWidth firstPat) in if tupleSize <> 1 andalso null polyVars then let (* If the first pattern is a tuple we make a tuple from the arguments and pass that in. Could possibly treat labelled records in the same way but we have the problem of finding the size of the record. Currently, we don't apply this optimisation if the function is polymorphic. *) val newDecName : string = decName ^ "(" ^ Int.toString tupleSize ^ ")"; val fnLevel = newLevel nLevel val argumentCode = mkArgTuple(0, tupleSize) val newContext = cpContext |> repNewLevel(newDecName, fnMkAddr, fnLevel) fun codeAlts newDebugEnv = let val bodyContext = newContext |> repDebugEnv newDebugEnv in codeMatch (c, f, argumentCode, false, bodyContext) end val wrap = wrapFunctionInDebug(codeAlts, newDecName, argumentCode, argType, resType, location, newContext) val mainProc = mkProc(wrap, tupleSize, newDecName, getClosure fnLevel, fnMkAddr 0) (* Now make a block containing the procedure which expects multiple arguments and an inline procedure which expects a single tuple argument and calls the main procedure after taking the tuple apart. *) val thisDec = multipleUses (mainProc, fn () => originalmkAddr 1, originalLevel); val resProc = (* Result procedure. *) let val nLevel = newLevel originalLevel in mkInlproc (mkEval(#load thisDec nLevel, List.map #1 (loadArgsFromTuple(List.tabulate(tupleSize, fn _ => GeneralType), singleArg))), 1, decName ^ "(1)", getClosure nLevel, 0) end in mkEnv(#dec thisDec, resProc) end else let (* No tuple or polymorphic. *) val newDecName : string = decName ^ "(1)"; val fnLevel = newLevel nLevel val newContext = cpContext |> repNewLevel(newDecName, fnMkAddr, fnLevel) fun codeAlts newDebugEnv = let val bodyContext = newContext |> repDebugEnv newDebugEnv in codeMatch (c, f, mkLoadArgument 0, false, bodyContext) end (* If we're debugging add the debug info before resetting the level. *) val wrapped = wrapFunctionInDebug(codeAlts, newDecName, mkLoadArgument 0, argType, resType, location, newContext) val pr = mkProc (wrapped, 1, newDecName, getClosure fnLevel, fnMkAddr 0) in if null polyVars then pr else mkProc(pr, List.length polyVars, newDecName^"(P)", getClosure nLevel, 0) end end (* codeLambda *) (* Code-generates a sequence of declarations. *) and codeSequence ([], leading, codeSeqContext, processBody): codeBinding list * debuggerStatus = processBody(leading, codeSeqContext) (* Do the continuation. *) | codeSequence ((firstEntry as FunDeclaration {dec, ...}, _) :: pTail, leading, codeSeqContext, processBody) = let val (firstDec, firstEnv) = codeFunBindings(dec, firstEntry, codeSeqContext) in codeSequence (pTail, leading @ firstDec, codeSeqContext |> repDebugEnv firstEnv, processBody) end | codeSequence ((firstEntry as ValDeclaration {dec, location, ...}, bpt) :: pTail, leading, codeSeqContext as {lex, ...}, processBody) = let (* Check the types for escaped datatypes. *) local fun checkVars(ValBind{variables=ref vars, line, ...}) = List.app(fn var => checkForEscapingDatatypes(valTypeOf var, fn message => errorNear (lex, true, firstEntry, line, message))) vars in val () = List.app checkVars dec end (* Put in a break point *) val (bptCode, bptDbEnv) = addBreakPointCall(bpt, location, codeSeqContext) val postBptContext = codeSeqContext |> repDebugEnv bptDbEnv (* Split the bindings into recursive and non-recursive. These have to be processed differently. *) val (recBindings, nonrecBindings) = List.partition(fn ValBind{isRecursive, ...} => isRecursive) dec val nonRecCode = codeNonRecValBindings(nonrecBindings, firstEntry, postBptContext) val recCode = case recBindings of [] => [] | _ => #1 (codeRecValBindings(recBindings, firstEntry, postBptContext)) (* Construct the debugging environment by loading all variables. *) val vars = List.foldl(fn (ValBind{variables=ref v, ...}, vars) => v @ vars) [] dec val (decEnv, env) = makeDebugEntries (vars, postBptContext) in codeSequence (pTail, leading @ bptCode @ nonRecCode @ recCode @ decEnv, codeSeqContext |> repDebugEnv env, processBody) end | codeSequence ((Localdec {decs, body, varsInBody=ref vars, ...}, _) :: pTail, leading, codeSeqContext, processBody) = let (* Local declarations only *) (* The debug environment needs to reflect the local...in...end structure but if there are local datatypes we need to process all subsequent declarations in the scope of the "stopper" we've put onto the typeVarMap. *) fun processTail(previous, newContext) = let (* The debug env for the tail is the original environment together with the variables in the body, excluding variables in the local...in part. *) val (decEnv, resEnv) = makeDebugEntries (vars, codeSeqContext) (* Original context. *) in codeSequence (pTail, previous @ decEnv, newContext |> repDebugEnv resEnv, processBody) end in (* Process the declarations then the tail. *) codeSequence (decs @ body, leading, codeSeqContext, processTail) end | codeSequence ((ExDeclaration(tlist, _), _) :: pTail, leading, codeSeqContext as {mkAddr, level, typeVarMap, lex, ...}, processBody) = let fun codeEx (ExBind{value=ref exval, previous, ... }) = let val ex = exval; (* This exception is treated in the same way as a local variable except that the value it contains is created by generating a word on the heap. The address of this word constitutes a unique identifier. Non-generative exception bindings i.e. exception ex=ex' merely copy the word from the previous exception. *) val (lvAddr, lvLevel, exType) = case ex of Value{access=Local{addr, level}, typeOf, ...} => (addr, level, typeOf) | _ => raise InternalError "lvAddr" in lvAddr := mkAddr 1; lvLevel := level; mkDec (! lvAddr, case previous of EmptyTree => (* Generate a new exception. This is a single mutable word which acts as a token. It is a mutable to ensure that there is precisely one copy of it. It contains a function to print values of the type so when we raise the exception we can print the exception packet without knowing the type. *) mkExIden (exType, level, typeVarMap) | Ident{value=ref prevVal, location, ...} => (* Copy the previous value. N.B. We want the exception identifier here so we can't call codegen. *) codeVal (prevVal, level, typeVarMap, [], lex, location) | _ => raise InternalError "codeEx" ) end (* codeEx *); val exdecs = map codeEx tlist fun getValue(ExBind{value=ref exval, ...}) = exval val (debugDecs, newDebugEnv) = makeDebugEntries(map getValue tlist, codeSeqContext) in codeSequence (pTail, leading @ exdecs @ debugDecs, codeSeqContext |> repDebugEnv newDebugEnv, processBody) end (* ExDeclaration *) | codeSequence ( (AbsDatatypeDeclaration {typelist, declist, equalityStatus = ref absEq, isAbsType, withtypes, ...}, _) :: pTail, leading, codeSeqContext as {mkAddr, level, typeVarMap, debugEnv, lex, ...}, processBody) = let (* Code-generate the eq and print functions for the abstype first then the declarations, which may use these. *) (* The debugging environment for the declarations should include the constructors but the result shouldn't. For the moment ignore the constructors. *) val typeCons = List.map(fn (DatatypeBind {tcon = ref tc, ...}) => tc) typelist val eqStatus = if isAbsType then absEq else List.map (tcEquality o tsConstr) typeCons local fun getConstrCode(DatatypeBind {tcon = ref (tc as TypeConstrSet(_, constrs)), typeVars, ...}, eqStatus) = let (* Get the argument types or EmptyType if this is nullary. *) fun getConstrType(Value{typeOf=FunctionType{arg, ...}, name, ...}) = (name, arg) | getConstrType(Value{name, ...}) = (name, EmptyType) val constrTypesAndNames = List.map getConstrType constrs val {constrs, boxed, size} = chooseConstrRepr(constrTypesAndNames, List.map TypeVar typeVars) in ({typeConstr=tc, eqStatus=eqStatus, boxedCode=boxed, sizeCode=size}, constrs) end in val constrAndBoxSizeCode = ListPair.mapEq getConstrCode (typelist, eqStatus) val (tcEqBoxSize, constrsCode) = ListPair.unzip constrAndBoxSizeCode end local fun decConstrs(DatatypeBind {tcon = ref (TypeConstrSet(_, constrs)), ...}, reprs, (decs, debugEnv)) = let (* Declare the constructors as local variables. *) fun decCons(Value{access=Local{addr, level=lev}, ...}, repr) = let val newAddr = mkAddr 1 in addr := newAddr; lev := level; mkDec(newAddr, repr) end | decCons _ = raise InternalError "decCons: Not local" val constrDecs = ListPair.map decCons (constrs, reprs) val (newDecs, newDebug) = makeDebugEntries(constrs, codeSeqContext |> repDebugEnv debugEnv) in (constrDecs @ decs @ newDecs, newDebug) end in val (valConstrDecs: codeBinding list, constrDebugenv: debuggerStatus) = ListPair.foldl decConstrs ([], debugEnv) (typelist, constrsCode) end val typeFunctions = createDatatypeFunctions(tcEqBoxSize, mkAddr, level, typeVarMap, getParameter createPrintFunctionsTag (debugParams lex)) local (* Create debug entries for the type constructors and the new type ids. *) val (dataTypeDebugDecs, dataTypeDebugEnv) = makeTypeConstrDebugEntries(typeCons, constrDebugenv, level, lex, mkAddr) val withTypeTypes = List.map(fn (TypeBind {tcon = ref tc, ...}) => tc) withtypes val (withTypeDebugDecs, withTypeDebugEnv) = makeTypeConstrDebugEntries(withTypeTypes, dataTypeDebugEnv, level, lex, mkAddr) in val typeDebugDecs = dataTypeDebugDecs @ withTypeDebugDecs val typeDebugEnv = withTypeDebugEnv end (* Mark these in the type value cache. If they are used in subsequent polymorphic IDs we must create them after this. *) val newTypeVarMap = markTypeConstructors(List.map tsConstr typeCons, mkAddr, level, typeVarMap) (* Process the with..end part. We have to restore the equality attribute for abstypes here in case getPolymorphism requires it. *) val () = if isAbsType then ListPair.appEq(fn(TypeConstrSet(tc, _), eqt) => tcSetEquality (tc, eqt)) (typeCons, absEq) else () val (localDecs, newDebug) = codeSequence (declist, [], codeSeqContext |> repDebugEnv typeDebugEnv |> repTypeVarMap newTypeVarMap, fn (code, {debugEnv, ...}) => (code, debugEnv)) val () = if isAbsType then List.app(fn TypeConstrSet(tc, _) => tcSetEquality (tc, false)) typeCons else () (* Then the subsequent declarations. *) val (tailDecs, finalEnv) = codeSequence (pTail, [], codeSeqContext |> repDebugEnv newDebug |> repTypeVarMap newTypeVarMap, processBody) in (* The code consists of previous declarations, the value constructors, the type IDs, debug declarations for the types and value constructors, any type values created for subsequent polymorphic calls, declarations in with...end and finally code after this declaration within the same "let..in..end" block. *) (leading @ valConstrDecs @ typeFunctions @ typeDebugDecs @ getCachedTypeValues newTypeVarMap @ localDecs @ tailDecs, finalEnv) end | codeSequence ((OpenDec {variables=ref vars, structures = ref structs, typeconstrs = ref types, ...}, _) :: pTail, leading, codeSeqContext as { level, lex, mkAddr, ...}, processBody) = let (* All we need to do here is make debugging entries. *) val (firstDec, firstEnv) = makeDebugEntries(vars, codeSeqContext) val (secondDec, secondEnv) = makeTypeConstrDebugEntries(types, firstEnv, level, lex, mkAddr) val (thirdDec, thirdEnv) = makeStructDebugEntries(structs, secondEnv, level, lex, mkAddr) in codeSequence (pTail, leading @ firstDec @ secondDec @ thirdDec, codeSeqContext |> repDebugEnv thirdEnv, processBody) end | codeSequence ((TypeDeclaration (typebinds, _), _) :: pTail, leading, codeSeqContext as { debugEnv, level, lex, mkAddr, ...}, processBody) = let (* Just create debug entries for the type constructors. *) val typeCons = List.map(fn (TypeBind {tcon = ref tc, ...}) => tc) typebinds val (typeDebugDecs, typeDebugEnv) = makeTypeConstrDebugEntries(typeCons, debugEnv, level, lex, mkAddr) in codeSequence (pTail, leading @ typeDebugDecs, codeSeqContext |> repDebugEnv typeDebugEnv, processBody) end | codeSequence (_ :: pTail, leading, (* Directive *) codeSeqContext, processBody) = codeSequence (pTail, leading, codeSeqContext, processBody) (* Code generate a set of fun bindings. This is used for other function creation as well since it handles the most general case. *) and codeFunBindings(tlist: fvalbind list, near, context as {decName, mkAddr, level, typeVarMap, lex, ...}) = let (* Get the function variables. *) val functionVars = map (fn(FValBind{functVar = ref var, ...}) => var) tlist (* Check the types for escaped datatypes. *) local fun checkVars(FValBind{functVar=ref var, location, ...}) = checkForEscapingDatatypes(valTypeOf var, fn message => errorNear (lex, true, near, location, message)) in val () = List.app checkVars tlist end (* Each function may result in either one or two functions actually being generated. If a function is not curried it will generate a single function of one argument, but if it is curried (e.g. fun f a b = ...) it will generate two mutually recursive functions. A function fun f a b = X will be translated into val rec f' = fn(a,b) => X and f = fn a => b => f'(a,b) with the second function (f) being inline. This allows the optimiser to replace references to f with all its arguments by f' which avoids building unneccessary closures. *) fun setValueAddress( FValBind{functVar = ref(Value{access=Local{addr, level}, ...}), ...}, ad, lev) = (addr := ad; level := lev) | setValueAddress _ = raise InternalError "setValueAddress" (* Create a list of addresses for the functions. This is the address used for the most general case. Also set the variable addresses. These may be changed for polymorphic functions but will eventually be reset. *) val addressList = List.map (fn _ => mkAddr 2 (* We need two addresses. *)) tlist val () = ListPair.appEq (fn (t, a) => setValueAddress(t, a, level)) (tlist, addressList) (* Get the polymorphic variables for each function. *) local fun getPoly(FValBind{functVar = ref (Value{typeOf, ...}), ...}) = filterTypeVars(getPolyTypeVars(typeOf, mapTypeVars typeVarMap)) in val polyVarList = List.map getPoly tlist end (* Now we can process the function bindings. *) fun loadFunDecs ((fb as FValBind{numOfPatts = ref numOfPats, functVar = ref(Value{name, ...}), clauses, argType = ref aType, resultType = ref resType, location, ...})::otherDecs, polyVars :: otherPolyVars, addr :: otherAddresses) = let (* Make up the function, and if there are several mutually recursive functions, put it in the vector. *) val procName = decName ^ name; val nPolyVars = List.length polyVars (*val _ = print(concat[name, " is ", Int.toString nPolyVars, "-ary\n"])*) (* Check that all the type-vars are in the list. *) (*local fun checkVars tv = case List.find(fn t => sameTv(t, tv)) fdTypeVars of SOME _ => () | NONE => raise InternalError "Type var not found" in val _ = List.app checkVars polyVars end*) (* Produce a list of the size of any tuples or labelled records in the first clause. Tuples in the first clause are passed as separate arguments. We could look at the other clauses and only pass them as separate arguments if each clause contains a tuple. We can treat labelled records exactly like tuples here - we only need to worry about the mapping from labels to tuple offsets when we create the record (getting the order of evaluation right) and in the pattern-matching code (extracting the right fields). We don't have to worry about that here, because all we're doing is untupling and retupling, taking care always to put the values back at exactly the same offset we got them from. *) val tupleSeq : argumentType list list = case clauses of (FValClause{dec= { args, ...}, ...} :: _) => List.map tupleWidth args | _ => raise InternalError "badly formed parse tree"; local fun getResultTuple(FValClause{exp, ...}) = tupleWidth exp val resultTuples = List.foldl(fn(t, [_]) => getResultTuple t | (_, s) => s) [GeneralType] clauses (* If we're debugging we want the result of the function so we don't do this optimisation. *) (* The optimiser also detects functions returning tuples and turns them into containers. That works for local functions but doesn't work if the function is exported e.g. IntInf.divMod. *) val resultTuple = if (getParameter debugTag (debugParams lex)) then [GeneralType] else resultTuples in val resTupleLength = List.length resultTuple (*val _ = resTupleLength = 1 orelse raise InternalError "resTupleLength <> 1"*) (* If there's a single argument return the type of that otherwise if we're tupling the result is general. *) val (resultType, extraArg) = case resultTuple of [one] => (one, 0) | _ => (GeneralType, 1) end (* Count the total number of arguments needed. *) val totalArgs = List.foldl (op +) (extraArg+nPolyVars) (List.map List.length tupleSeq) (* The old test was "totalArgs = 1", but that's not really right, because we could have one genuine arg plus a lot of "()" patterns. We now use the normal inlining mechanism to optimise this (unusual) case too. *) val noInlineFunction = numOfPats = 1 andalso totalArgs = 1 andalso tupleSeq = [[GeneralType]] andalso resultType = GeneralType (* Turn the list of clauses into a match. *) fun clauseToTree(FValClause {dec={ args, ...}, exp, line, breakPoint, ...}) = MatchTree { vars = if numOfPats = 1 then hd args else TupleTree{fields=args, location=line, expType=ref EmptyType}, exp = exp, location = line, argType = ref badType, resType = ref badType, breakPoint = breakPoint } val matches = map clauseToTree clauses (* We arrange for the inner function to be called with the curried arguments in reverse order, but the tupled arguments in the normal order. For example, the ML declaration: fun g a b c = ... gives the order fun g (a, b, c) = ... gives the order fun g (a, b) c (d, e, f) = ... gives the order We want reverse the order of curried arguments to produce better code. (The last curried argument often gets put into the first argument register by the normal calling mechanism, so we try to ensure that it stays there.) We don't reverse the order of tupled arguments because I'm still a bit confused about when a tuple is an argument tuple (reversed?) and when it isn't (not reversed). Just to add to this, if the function is polymorphic we have to add the polymorphic arguments on at the end. *) local (* Create the argument type list. I'm sure this can be combined with the next version of makeArgs but it's all too complicated. *) fun makeArgs(parms, []) = let val polyParms = List.tabulate(nPolyVars, fn _ => GeneralType) val resTupleSize = resTupleLength in if resTupleSize = 1 then parms @ polyParms else parms @ polyParms @ [GeneralType] end | makeArgs(parms, t::ts) = makeArgs (t @ parms, ts) in val argTypes = makeArgs ([], tupleSeq) end local (* This function comprises a new declaration level *) val nArgTypes = List.length argTypes val fnLevel = newLevel level val argList : codetree = if numOfPats = 1 then mkArgTuple(nArgTypes-totalArgs, totalArgs-extraArg-nPolyVars) else let fun makeArgs([], _) = [] | makeArgs(h::t, n) = mkArgTuple(nArgTypes-n-List.length h, List.length h) :: makeArgs(t, n + List.length h) in mkTuple (makeArgs(tupleSeq, extraArg+nPolyVars)) end local val addresses = ref 1 in fun fnMkAddr n = (! addresses) before (addresses := ! addresses + n) end val innerProcName : string = concat ([procName, "(" , Int.toString totalArgs, ")"]); local (* The poly args come after any result tuple. *) val tupleOffset = if resTupleLength = 1 then 0 else 1 val argAddrs = List.tabulate(nPolyVars, fn n => fn l => mkLoadParam(n+nArgTypes-nPolyVars-tupleOffset, l, fnLevel)) val mainTypeVars = ListPair.zipEq(polyVars, argAddrs) (* Also need to add any variables used by other polymorphic functions but not in the existing list. This is only for very unusual cases. *) fun addExtras (fPolyVars, pVarList) = let fun checkPolymorphism(fpVar, pVars) = if isSome(List.find (fn(t, _) => sameTv(t, fpVar)) mainTypeVars) orelse isSome(List.find (fn (t, _) => sameTv(t, fpVar)) pVars) then pVars else (fpVar, fn _ => defaultTypeCode) :: pVars in List.foldl checkPolymorphism pVarList fPolyVars end val extraEntries = List.foldl addExtras [] polyVarList in val typevarArgMap = mainTypeVars @ extraEntries val newTypeVarMap = extendTypeVarMap(typevarArgMap, fnMkAddr, fnLevel, typeVarMap) end val fnContext = context |> repNewLevel(innerProcName, fnMkAddr, fnLevel) |> repTypeVarMap newTypeVarMap (* If we have (mutually) recursive references to polymorphic functions we need to create local versions applied to the polymorphic variables. We only need to consider functions that use the polymorphic variables for this function. If another function uses different variables it can't be called from this one. If it had been called from this any type variables would have been fixed as monotypes or the type variables of this function. Except this is wrong in one case. If one of the recursive calls involves an exception (e.g. f (fn _ => raise Fail "") (or perhaps some other case involving "don't care" polymorphic variables) it is possible to call a function with more polymorphism. *) local fun createApplications(fVal::fVals, addr::addrList, [] :: polyVarList, otherDecs) = ( (* Monomorphic functions. *) setValueAddress(fVal, addr, level); createApplications(fVals, addrList, polyVarList, otherDecs) ) | createApplications( fVal::fVals, addr::addrList, fPolyVars ::polyVarList, otherDecs) = let fun createMatches fpVar = case List.find (fn(t, _) => sameTv(t, fpVar)) typevarArgMap of SOME (_, codeFn) => codeFn fnLevel | NONE => raise InternalError "createMatches: Missing type var" val polyArgs = List.map createMatches fPolyVars val newAddr = fnMkAddr 1 val polyFn = mkLoad(addr, fnLevel, level) (* Set the address to this so if we use this function we pick up this declaration. *) val () = setValueAddress(fVal, newAddr, fnLevel); val newDecs = mkDec(newAddr, mkEval(polyFn, polyArgs)) :: otherDecs in createApplications(fVals, addrList, polyVarList, newDecs) end | createApplications(_, _, _, decs) = decs in val appDecs = if noInlineFunction then [] (* This may be directly recursive. *) else createApplications (tlist, addressList, polyVarList, []) end local (* Function body. The debug state has a "start of function" entry that is used when tracing and points to the arguments. There are then entries for the recursive functions so they can be used if we break within the function. *) fun codeBody fnEntryEnv = let val startContext = fnContext |> repDebugEnv fnEntryEnv (* Create debug entries for recursive references. *) val (recDecs, recDebugEnv) = makeDebugEntries(functionVars, startContext) val bodyContext = fnContext |> repDebugEnv recDebugEnv val codeMatches = mkEnv(recDecs, codeMatch (near, matches, argList, false, bodyContext)) in (* If the result is a tuple we try to avoid creating it by adding an extra argument to the inline function and setting this to the result. *) if resTupleLength = 1 then codeMatches else (* The function sets the extra argument to the result of the body of the function. We use the last argument for the container so that other arguments will be passed in registers in preference. Since the container is used for the result this argument is more likely to have to be pushed onto the stack within the function than an argument which may have its last use early on. *) mkSetContainer(mkLoadParam(nArgTypes-1, fnLevel, fnLevel), codeMatches, resTupleLength) end in (* If we're debugging add the debug info before resetting the level. *) val codeForBody = wrapFunctionInDebug(codeBody, procName, argList, aType, resType, location, fnContext) end val () = if List.length argTypes = totalArgs then () else raise InternalError "Argument length problem" in val innerFun = mkFunction{ body=mkEnv(getCachedTypeValues newTypeVarMap @ appDecs, codeForBody), argTypes=argTypes, resultType=resultType, name=innerProcName, closure=getClosure fnLevel, numLocals=fnMkAddr 0} end; (* We now have a function which can be applied to the arguments once we have them. If the function is curried we must make a set of nested inline procedures which will take one of the parameters at a time. If all the parameters are provided at once they will be optimised away. *) val polyLevel = if null polyVars then level else newLevel level (* Make into curried functions *) fun makeFuns(innerLevel, _, mkParms, []) = let (* Load a reference to the inner function. *) val loadInnerFun = mkLoad (addr + 1, innerLevel, level) val polyParms = List.tabulate(nPolyVars, fn n => (mkLoadParam(n, innerLevel, polyLevel), GeneralType)) val resTupleSize = resTupleLength val parms = mkParms innerLevel in (* Got to the bottom. - put in a call to the procedure. *) if resTupleSize = 1 then (mkCall (loadInnerFun, parms @ polyParms, resultType), 0) else (* Create a container for the result, side-effect it in the function, then create a tuple from it. Most of the time this will be optimised away. *) let val containerAddr = 0 (* In a new space *) val loadContainer = mkLoadLocal containerAddr in (mkEnv( [mkContainer(containerAddr, resTupleSize, mkCall(loadInnerFun, parms @ polyParms @ [(loadContainer, GeneralType)], GeneralType))], mkTupleFromContainer(containerAddr, resTupleSize)), containerAddr+1 (* One local *)) end end | makeFuns(innerLevel, decName, mkParms, t::ts) = let (* Make a function. *) val nLevel = newLevel innerLevel val newDecName : string = decName ^ "(1)" (* Arguments from this tuple precede older arguments, but order of arguments within the tuple is preserved. *) fun nextParms l = loadArgsFromTuple(t, mkLoadParam (0, l, nLevel)) @ mkParms l val (body, lCount) = makeFuns (nLevel, newDecName, nextParms, ts) in (mkInlproc (body, 1, newDecName, getClosure nLevel, lCount), 0) end (* end makeFuns *); (* Reset the address of the variable. *) val () = setValueAddress(fb, addr, level) in if noInlineFunction then (addr, innerFun) :: loadFunDecs(otherDecs, otherPolyVars, otherAddresses) else let val (baseFun, _) = makeFuns (polyLevel, procName, fn _ => [], tupleSeq) val polyFun = if null polyVars then baseFun else mkInlproc(baseFun, List.length polyVars, procName ^ "(P)", getClosure polyLevel, 0) in (* Return the `inner' procedure and the inline functions as a mutually recursive pair. Try putting the inner function first to see if the optimiser does better this way. *) (addr + 1, innerFun) :: (addr, polyFun) :: loadFunDecs(otherDecs, otherPolyVars, otherAddresses) end end (* loadFunDecs *) | loadFunDecs _ = [] val loaded = loadFunDecs(tlist, polyVarList, addressList) (* Set the final addresses in case they have changed. N.B. Do this before loading any debug references. *) val () = ListPair.appEq (fn (t, a) => setValueAddress(t, a, level)) (tlist, addressList) (* Construct the debugging environment for the rest of the scope. *) val (decEnv, newDebugEnv) = makeDebugEntries(functionVars, context) (* Check whether any of the functions were unreferenced. *) val _ = if getParameter reportUnreferencedIdsTag (debugParams lex) then reportUnreferencedValues(functionVars, lex) else () in (* Put the declarations into a package of mutual decs. *) (mkMutualDecs loaded :: decEnv, newDebugEnv) end (* codeFunBindings *) (* Recursive val declarations. Turn them into fun-bindings. This avoids duplicating a lot of code and codeFunBindings does a lot of optimisation. *) and codeRecValBindings(valDecs, near, context) = let (* Turn this into a fun binding. *) fun valBindToFvalBind(ValBind{ exp, line, variables=ref vars, ...}, fVals) = let fun getMatches (Fn { matches: matchtree list, ... }) = matches | getMatches (Constraint {value, ...}) = getMatches value | getMatches (Parenthesised(p, _)) = getMatches p | getMatches _ = raise InternalError "getMatches" fun matchTreeToClause(MatchTree{vars, exp, location, breakPoint, ...}) = let val dec = { ident = { name="", expType=ref EmptyType, location=location}, isInfix = false, args=[vars], constraint=NONE} in FValClause{dec = dec, exp=exp, line=location, breakPoint = breakPoint } end val clauses = List.map matchTreeToClause (getMatches exp) fun mkFValBind(var as Value{typeOf, ...}) = let val argType = mkTypeVar(generalisable, false, false, false) and resultType = mkTypeVar(generalisable, false, false, false) val () = if isSome(unifyTypes(typeOf, mkFunctionType(argType, resultType))) then raise InternalError "mkFValBind" else () in FValBind { clauses=clauses, numOfPatts=ref 1, functVar=ref var, argType=ref argType, resultType=ref resultType, location=line } end in fVals @ List.map mkFValBind vars end val converted = List.foldl valBindToFvalBind [] valDecs in codeFunBindings(converted, near, context) end (* codeRecValBindings *) (* Non-recursive val bindings. *) and codeNonRecValBindings(valBindings, near, originalContext: cgContext as { decName, typeVarMap, lex, isOuterLevel, ...}) = let (* Non-recursive val bindings. *) fun codeBinding (ValBind{dec=vbDec, exp=vbExp, line, variables=ref vars, ...}, otherDecs) = let (* A binding. *) (* Get a name for any functions. This is used for profiling and exception trace. *) val fName = case vars of [] => "_" | _ => String.concatWith "|" (List.map valName vars) (* Does this contain polymorphism? *) val polyVarsForVals = List.map(fn Value{typeOf, ...} => filterTypeVars (getPolyTypeVars(typeOf, mapTypeVars typeVarMap))) vars val polyVars = List.foldl(op @) [] polyVarsForVals val nPolyVars = List.length polyVars (* In almost all cases polymorphic declarations are of the form val a = b or val a = fn ... . They can, though, arise in pathological cases with arbitrary patterns and complex expressions. If any of the variables are polymorphic the expression must have been non-expansive. That means that we can safely evaluate it repeatedly. There's one exception: it may raise Bind. (e.g. val SOME x = NONE). For that reason we make sure it is evaluated at least once. We build the code as a function and then apply it one or more times. This is really to deal with pathological cases and pretty well all of this will be optimised away. *) val localContext as {level, mkAddr, typeVarMap, ...} = if nPolyVars = 0 then originalContext else let val addresses = ref 1 fun fnMkAddr n = (! addresses) before (addresses := ! addresses + n) val fnLevel = newLevel (#level originalContext) val argAddrs = List.tabulate(nPolyVars, fn n => fn l => mkLoadParam(n, l, fnLevel)) val argMap = ListPair.zipEq(polyVars, argAddrs) val newTypeVarMap = extendTypeVarMap(argMap, fnMkAddr, fnLevel, #typeVarMap originalContext) in originalContext |> repNewLevel(decName, fnMkAddr, fnLevel) |> repTypeVarMap newTypeVarMap end val exp = codegen (vbExp, localContext |> repDecName (decName ^ fName ^ "-")) (* Save the argument in a variable. *) val decCode = multipleUses (exp, fn () => mkAddr 1, level) (* Generate the code and also check for redundancy and exhaustiveness. *) local val cmContext = { mkAddr = mkAddr, level = level, typeVarMap = typeVarMap, lex = lex } in val (bindCode, exhaustive) = codeBindingPattern(vbDec, #load decCode level, line, cmContext) end (* Report inexhaustiveness if necessary. *) val () = if not exhaustive andalso not isOuterLevel then errorNear (lex, false, near, line, "Pattern is not exhaustive.") else () (* Check for unreferenced variables. *) val () = if getParameter reportUnreferencedIdsTag (debugParams lex) then List.app (reportUnreferencedValue lex) (getVariablesInPatt(vbDec, [])) else () val resultCode = if nPolyVars = 0 then #dec decCode @ bindCode else let fun loadVal(Value{access=Local{addr=ref add, ...}, ...}) = mkLoadLocal add | loadVal _ = raise InternalError "loadVal" val outerAddrs = #mkAddr originalContext and outerLevel = #level originalContext (* Construct a function that, when applied, returns all the variables. *) val fnAddr = outerAddrs 1 val resFunction = mkDec(fnAddr, mkInlproc( mkEnv(getCachedTypeValues typeVarMap @ #dec decCode @ bindCode, mkTuple(List.map loadVal vars)), nPolyVars, "(P)", getClosure level, mkAddr 0)) (* Apply the general function to the set of type variables using either the actual type variables if they are in this particular variable or defaults if they're not. *) fun application(pVars, level) = let val nPVars = List.length pVars val varNos = ListPair.zipEq(pVars, List.tabulate(nPVars, fn x=>x)) fun getArg argV = case List.find (fn (v, _) => sameTv(v, argV)) varNos of SOME (_, n) => mkLoadParam(n, level, level) | NONE => defaultTypeCode in mkEval(mkLoad(fnAddr, level, outerLevel), List.map getArg polyVars) end (* For each variable construct either a new function if it is polymorphic or a simple value if it is not (e.g. val (a, b) = (fn x=>x, 1)). Set the local addresses at the same time. *) fun loadFunctions(var::vars, polyV::polyVs, n) = let val vAddr = outerAddrs 1 val () = case var of Value{access=Local{addr, level}, ...} => (addr := vAddr; level := outerLevel) | _ => raise InternalError "loadFunctions" in mkDec(vAddr, case polyV of [] => (* monomorphic *) mkInd(n, application([], outerLevel)) | _ => (* polymorphic *) let val nPolyVars = List.length polyV val nLevel = newLevel outerLevel in mkInlproc( mkInd(n, application(polyV, nLevel)), nPolyVars, "(P)", getClosure nLevel, 0) end ) :: loadFunctions(vars, polyVs, n+1) end | loadFunctions _ = [] val loadCode = loadFunctions(vars, polyVarsForVals, 0) in (* Return the declaration of the function, a dummy application that will force any pattern checking and raise a Match if necessary and the declarations of the variables. *) resFunction :: mkNullDec(application([], outerLevel)) :: loadCode end in otherDecs @ resultCode end in List.foldl codeBinding [] valBindings end (* codeNonRecValBindings *) (* Code generates the parse tree. *) fun gencode (pt : parsetree, lex: lexan, debugEnv: debuggerStatus, outerLevel, mkOuterAddresses, outerTypeVarMap, structName: string, continuation) : codeBinding list * debuggerStatus = codeSequence ([(pt, ref NONE)], [], {decName=structName, mkAddr=mkOuterAddresses, level=outerLevel, typeVarMap=outerTypeVarMap, debugEnv=debugEnv, lex=lex, lastDebugLine=ref 0, isOuterLevel = true}, fn (code: codeBinding list, {debugEnv, typeVarMap, ...}) => continuation(code, debugEnv, typeVarMap)) (* Types that can be shared. *) structure Sharing = struct type parsetree = parsetree and lexan = lexan and codetree = codetree and environEntry = environEntry and level = level and typeVarMap = typeVarMap and codeBinding = codeBinding and debuggerStatus = debuggerStatus end end; polyml-5.7.1/mlsource/MLCompiler/ExportTreeStruct.sml0000644000175000017500000000161513204034553021661 0ustar daviddavid(* Copyright (c) 2009 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ExportTreeStruct = ExportTree ( structure STRUCTVALS = StructVals and PRETTY = Pretty); polyml-5.7.1/mlsource/MLCompiler/Structures.ML0000644000175000017500000000272413204034553020255 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Structures = STRUCTURES_ ( structure LEX = Lex structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure TYPETREE = TypeTree structure PARSETREE = ParseTree structure UTILITIES = Utilities structure PRETTY = Pretty structure UNIVERSALTABLE = UniversalTable structure DEBUG = Debug structure DEBUGGER = Debugger structure EXPORTTREE = ExportTreeStruct structure COPIER = CopierStruct structure TYPEIDCODE = TypeIDCodeStruct structure SIGNATURES = SignaturesStruct structure DEBUGGER = Debugger ); polyml-5.7.1/mlsource/MLCompiler/CopierStruct.sml0000644000175000017500000000174013204034553021000 0ustar daviddavid(* Copyright (c) 2009 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure CopierStruct = COPIER( structure STRUCTVALS = StructVals and TYPETREE = TypeTree and UNIVERSALTABLE = UniversalTable and UTILITIES = Utilities );polyml-5.7.1/mlsource/MLCompiler/MAKE_.ML0000644000175000017500000003325013204034553016744 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008-9, 2015-16. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Poly Make Program. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) (* This previously contained PolyML.make which was passed through to the basis. It has now been reduced to just "use" and is only used during the bootstrap process to compile the basis library itself. *) functor MAKE_ ( structure COMPILERBODY : COMPILERBODYSIG structure UNIVERSALTABLE : sig type 'a tag = 'a Universal.tag; type univTable; type universal = Universal.universal val makeUnivTable: unit -> univTable val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; val univDelete: univTable * 'a tag * string -> unit; val fold: (string * universal * 'a -> 'a) -> 'a -> univTable -> 'a end; structure STRUCTVALS : STRUCTVALSIG; structure DEBUG: DEBUGSIG structure PRETTY: PRETTYSIG (* For compilerOutputTag *) structure LEX: LEXSIG (* For errorMessageProcTag *) structure VERSION: sig val versionSuffix: string end sharing STRUCTVALS.Sharing = COMPILERBODY.Sharing sharing LEX.Sharing = PRETTY.Sharing ) : MAKESIG = struct type univTable = UNIVERSALTABLE.univTable; type values = STRUCTVALS.values type typeConstrs = STRUCTVALS.typeConstrs type fixStatus = STRUCTVALS.fixStatus type structVals = STRUCTVALS.structVals type signatures = STRUCTVALS.signatures type functors = STRUCTVALS.functors type env = STRUCTVALS.env open COMPILERBODY local open UNIVERSALTABLE open Thread.Thread open Thread.Mutex in (* Create an environment with a mutex to protect concurrent access. *) datatype gEnv = DbEnv of mutex * univTable (* Lock the mutex during any lookup or entry. This is primarily to avoid the underlying hash table from being rehashed by different threads at the same time. This code should be in a library. *) fun protect mutx f = let (* Turn off interrupts while we have the lock. *) val oldAttrs = getAttributes() val () = setAttributes[InterruptState InterruptDefer] val () = lock mutx val result = f() handle exn => (unlock mutx; setAttributes oldAttrs; raise exn) in unlock mutx; setAttributes oldAttrs; result end (* Create an environment *) fun makeGEnv () : gEnv = DbEnv (mutex(), makeUnivTable()); (* enter a value into an environment *) fun dbEnvEnter (DbEnv(mutx, db)) (t : 'a tag) (s : string, v : 'a) : unit = protect mutx (fn () => univEnter (db, t, s, v)) (* find a value in an environment *) fun dbEnvLookup (DbEnv(mutx, db)) (t : 'a tag) (s : string) : 'a option = protect mutx(fn () => univLookup (db, t, s)) fun dbEnvAll (DbEnv(mutx, db)) (t : 'a tag) () : (string * 'a) list = let open Universal UNIVERSALTABLE fun filter (s, c, l) = if tagIs t c then (s, tagProject t c) :: l else l in protect mutx (fn () => fold filter [] db) end fun gEnvAsEnv gEnv = STRUCTVALS.Env { lookupFix = dbEnvLookup gEnv STRUCTVALS.fixVar, lookupVal = dbEnvLookup gEnv STRUCTVALS.valueVar, lookupType = dbEnvLookup gEnv STRUCTVALS.typeConstrVar, lookupSig = dbEnvLookup gEnv STRUCTVALS.signatureVar, lookupStruct = dbEnvLookup gEnv STRUCTVALS.structVar, lookupFunct = dbEnvLookup gEnv STRUCTVALS.functorVar, enterFix = dbEnvEnter gEnv STRUCTVALS.fixVar, enterVal = dbEnvEnter gEnv STRUCTVALS.valueVar, enterType = dbEnvEnter gEnv STRUCTVALS.typeConstrVar, enterSig = dbEnvEnter gEnv STRUCTVALS.signatureVar, enterStruct = dbEnvEnter gEnv STRUCTVALS.structVar, enterFunct = dbEnvEnter gEnv STRUCTVALS.functorVar, allValNames = fn () => map #1 (dbEnvAll gEnv STRUCTVALS.valueVar ()) }; fun gEnvAsNameSpace gEnv: nameSpace = { lookupFix = dbEnvLookup gEnv STRUCTVALS.fixVar, lookupVal = dbEnvLookup gEnv STRUCTVALS.valueVar, lookupType = dbEnvLookup gEnv STRUCTVALS.typeConstrVar, lookupSig = dbEnvLookup gEnv STRUCTVALS.signatureVar, lookupStruct = dbEnvLookup gEnv STRUCTVALS.structVar, lookupFunct = dbEnvLookup gEnv STRUCTVALS.functorVar, enterFix = dbEnvEnter gEnv STRUCTVALS.fixVar, enterVal = dbEnvEnter gEnv STRUCTVALS.valueVar, enterType = dbEnvEnter gEnv STRUCTVALS.typeConstrVar, enterSig = dbEnvEnter gEnv STRUCTVALS.signatureVar, enterStruct = dbEnvEnter gEnv STRUCTVALS.structVar, enterFunct = dbEnvEnter gEnv STRUCTVALS.functorVar, allFix = dbEnvAll gEnv STRUCTVALS.fixVar, allVal = dbEnvAll gEnv STRUCTVALS.valueVar, allType = dbEnvAll gEnv STRUCTVALS.typeConstrVar, allSig = dbEnvAll gEnv STRUCTVALS.signatureVar, allStruct = dbEnvAll gEnv STRUCTVALS.structVar, allFunct = dbEnvAll gEnv STRUCTVALS.functorVar }; end; (*****************************************************************************) (* useIntoEnv (runcompiler with ML compiler bound in) *) (*****************************************************************************) fun compileIntoEnv (globalEnv : gEnv) : (string * TextIO.instream * Universal.universal list) -> unit = let val useEnv : nameSpace = { lookupFix = dbEnvLookup globalEnv STRUCTVALS.fixVar, lookupVal = dbEnvLookup globalEnv STRUCTVALS.valueVar, lookupType = dbEnvLookup globalEnv STRUCTVALS.typeConstrVar, lookupSig = dbEnvLookup globalEnv STRUCTVALS.signatureVar, lookupStruct = dbEnvLookup globalEnv STRUCTVALS.structVar, lookupFunct = dbEnvLookup globalEnv STRUCTVALS.functorVar, enterFix = dbEnvEnter globalEnv STRUCTVALS.fixVar, enterVal = dbEnvEnter globalEnv STRUCTVALS.valueVar, enterType = dbEnvEnter globalEnv STRUCTVALS.typeConstrVar, enterStruct = dbEnvEnter globalEnv STRUCTVALS.structVar, enterSig = dbEnvEnter globalEnv STRUCTVALS.signatureVar, enterFunct = dbEnvEnter globalEnv STRUCTVALS.functorVar, allFix = dbEnvAll globalEnv STRUCTVALS.fixVar, allVal = dbEnvAll globalEnv STRUCTVALS.valueVar, allType = dbEnvAll globalEnv STRUCTVALS.typeConstrVar, allSig = dbEnvAll globalEnv STRUCTVALS.signatureVar, allStruct = dbEnvAll globalEnv STRUCTVALS.structVar, allFunct = dbEnvAll globalEnv STRUCTVALS.functorVar }; fun use (fileName, inStream, parameters) = let val lineNo = ref 1; val eof = ref false; fun getChar () : char option = case TextIO.input1 inStream of eoln as SOME #"\n" => ( lineNo := !lineNo + 1; eoln ) | NONE => (eof := true; NONE) | c => c fun errorProc {message, hard, location={ file, startLine=line, ... }, ...} = TextIO.print(concat [if hard then "Error-" else "Warning-", " in '", file, "', line ", FixedInt.toString line, ".\n", PRETTY.uglyPrint message, "\n"]) in ( while not (! eof) do let open DEBUG Universal (* Compile the code *) val code = case COMPILERBODY.compiler (useEnv, getChar, parameters @ (* These will be found first and override the defaults. *) [ tagInject PRETTY.compilerOutputTag (PRETTY.prettyPrint(print, 70)), tagInject lineNumberTag (fn () => !lineNo), tagInject fileNameTag fileName, tagInject LEX.errorMessageProcTag errorProc, tagInject maxInlineSizeTag 80, tagInject reportUnreferencedIdsTag true, tagInject reportExhaustiveHandlersTag false, (* True for testing. *) (* These are only needed for debugging. *) tagInject PRETTY.printOutputTag (PRETTY.prettyPrint(print, 70)), tagInject printDepthFunTag(fn () => 20), tagInject parsetreeTag false, tagInject codetreeTag false, tagInject codetreeAfterOptTag false, tagInject icodeTag false, tagInject assemblyCodeTag false ] ) of (_, NONE) => raise Fail "Static Errors" | (_, SOME c) => c (* execute the code and get the resulting declarations. *) val { fixes, values, structures, signatures, functors, types } = code() in (* Just enter the values in the environment without printing. *) List.app (#enterFix useEnv) fixes; List.app (#enterVal useEnv) values; List.app (#enterStruct useEnv) structures; List.app (#enterSig useEnv) signatures; List.app (#enterFunct useEnv) functors; List.app (#enterType useEnv) types end ) handle Fail s => (* E.g. syntax error. *) ( TextIO.closeIn inStream; raise Fail s ) | exn => (* close inStream if an error occurs *) ( print ("Exception- " ^ General.exnName exn ^ " raised\n"); TextIO.closeIn inStream; raise exn ) end (* use *) in use end; (* scope of compileIntoEnv *) fun useIntoEnv globalEnv parameters baseName = let val () = print ("Use: " ^ baseName ^ "\n") (* See if there is a path given as a command line argument. *) val args = CommandLine.arguments(); (* If we have -I filename use that as the output name. N.B. polyImport takes the first argument that is not recognised as an RTS argument and treats that as the file name so any -I must occur AFTER the import file. *) fun getPath [] = "." (* Default path *) | getPath ("-I" :: path :: _) = path | getPath (_::tl) = getPath tl open OS.Path (* Add the path to the source on to the directory. *) val filePath = concat(getPath args, baseName) open VERSION (* See if we have a version of the file specific to this version of the compiler. For x.ML see if x.VER.ML exists. When bootstrapping from one version of the compiler to another we need to compile the basis library in both the old and new compiler. If the interface has changed we may need version-specific files. *) val { base, ext } = splitBaseExt filePath val versionName = joinBaseExt { base = joinBaseExt{base = base, ext = SOME versionSuffix}, ext = ext } val (inStream, fileName) = (TextIO.openIn versionName, versionName) handle IO.Io _ => (TextIO.openIn filePath, filePath) in compileIntoEnv globalEnv (fileName, inStream, parameters); TextIO.closeIn inStream end fun shellProc globalEnv () = compileIntoEnv globalEnv ("", TextIO.stdIn, []) fun useStringIntoEnv globalEnv str = compileIntoEnv globalEnv (str, TextIO.openString str, []) structure Sharing = struct type env = env type gEnv = gEnv type values = values type typeConstrSet = typeConstrSet type fixStatus = fixStatus type structVals = structVals type signatures = signatures type functors = functors type ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/TYPETREESIG.sml0000644000175000017500000002462413204034553020164 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2009. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*****************************************************************************) (* TYPETREE exports signature *) (*****************************************************************************) signature TYPETREESIG = sig type types; type values; type typeConstrs; type typeConstrSet type typeVarForm type lexan; type typeId; type pretty; type ptProperties type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type exportTree = location * ptProperties list type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} type matchResult type locationProp type structVals type codetree type printTypeEnv = { lookupType: string -> (typeConstrSet * (int->typeId) option) option, lookupStruct: string -> (structVals * (int->typeId) option) option} val emptyTypeEnv: printTypeEnv val mkTypeVar: int * bool * bool * bool -> types val mkTypeConstruction: string * typeConstrs * types list * locationProp list -> types; val mkProductType: types list -> types; val mkFunctionType: types * types -> types; val mkLabelled: {name: string, typeof: types } list * bool -> types; val mkLabelEntry: string * types -> {name: string, typeof: types }; val mkOverloadSet: typeConstrs list -> types; val sortLabels: {name: string, typeof: types } list -> {name: string, typeof: types } list; val entryNumber: string * types -> int; val recordNotFrozen: types -> bool; val recordWidth: types -> int; val recordFieldMap: (types -> 'a) -> types -> 'a list val makeEquivalent: typeConstrs * types list -> types; val firstArg: types -> types; (* Follow a chain of unified type variables *) val eventual: types -> types (* Test for function type and return function argument. *) val getFnArgType: types -> types option (* Unify two type variables which would otherwise be non-unifiable. *) val linkTypeVars: typeVarForm * typeVarForm -> unit; val setTvarLevel: typeVarForm * int -> unit; (* Copy a type constructor. *) val copyTypeConstr: typeConstrs * (typeId -> typeId option) * (types -> types) * (string -> string) -> typeConstrs val copyTypeConstrWithCache: typeConstrs * (typeId -> typeId option) * (types -> types) * (string -> string) * typeConstrs list -> typeConstrs (* Copy a type. *) val copyType: types * (types -> types) * (typeConstrs -> typeConstrs) -> types; (* Compose two typeId maps. *) val composeMaps: (int -> typeId) * (int -> typeId) -> (int -> typeId) (* Print it out prettily *) val display: types * FixedInt.int * printTypeEnv -> pretty; val displayWithMap: types * FixedInt.int * printTypeEnv * (int->typeId) option -> pretty; (* Print out a type constructor. *) val displayTypeConstrs: typeConstrSet * FixedInt.int * printTypeEnv -> pretty; val displayTypeConstrsWithMap: typeConstrSet * FixedInt.int * printTypeEnv * (int->typeId) option -> pretty; (* A list of type variables. *) val displayTypeVariables: typeVarForm list * FixedInt.int -> pretty list; (* Returns the preferred type constructor from an overload. *) val typeConstrFromOverload: types * bool -> typeConstrs; (* Check a set of mutually recursive datatypes to see which admit equality. *) val computeDatatypeEqualities: typeConstrSet list * (int -> bool) -> unit; (* Unify two type structures to give a unified type. *) val unifyTypes: types * types -> matchResult option (* Pretty print the error message. *) val unifyTypesErrorReport: lexan * printTypeEnv * printTypeEnv * string -> matchResult -> pretty (* Check that a type constructor permits equality. *) val permitsEquality: typeConstrs -> bool (* And whether a type admits equality. *) val typePermitsEquality: types -> bool (* Generate new copies of all unbound type variables - this is used on all non-local values or constructors so that, for example, each occurence of "hd", which has type 'a list -> 'a, can be separately bound to types. *) val generalise: types -> types * {value: types, equality: bool, printity: bool} list (* Create an instance of an overloaded type. *) val generaliseOverload: types * typeConstrs list * bool -> types * types list; (* The same as generalise but with a function that looks up types. *) val generaliseWithMap: types * (typeVarForm -> types option) -> types * {value: types, equality: bool, printity: bool} list (* Return the type variables that would be generalised at this point. *) val getPolyTypeVars: types * (typeVarForm -> types option) -> typeVarForm list (* Release type variables at this nesting level. Updates the type to the generalised version. *) val allowGeneralisation: types * int * bool * lexan * location * (unit -> pretty) * printTypeEnv -> unit (* Check for a local datatype "escaping". Added for ML97. *) val checkForEscapingDatatypes: types * (string -> unit) -> unit (* Check for free type variables. Added for ML97. *) val checkForFreeTypeVariables: string * types * lexan * (unit->codetree) -> unit; val constructorResult: types * types list -> types; val identical: types * types -> bool; val boolConstr: typeConstrs; val fixedIntConstr:typeConstrs val intInfConstr: typeConstrs val charConstr: typeConstrs; val stringConstr: typeConstrs; val wordConstr: typeConstrs; val realConstr: typeConstrs; val refConstr: typeConstrs; val arrayConstr: typeConstrs; val array2Constr: typeConstrs; val byteArrayConstr: typeConstrs; val unitConstr: typeConstrs; val exnConstr: typeConstrs; val undefConstr: typeConstrs; val boolType: types; val fixedIntType: types val intInfType: types val charType: types; val stringType: types; val realType: types; val unitType: types; val exnType: types; val wordType: types; val badType: types; val isPointerEqType: typeId -> bool val isFloatingPt: types -> bool val isUndefinedTypeConstr: typeConstrs -> bool val isBadType: types -> bool val sameTypeVar : types * types -> bool; (* If this is simply giving a new name to a type constructor returns the type identifier of the constructor that is being rebound. *) val typeNameRebinding: typeVarForm list * types -> typeId option val leastGeneral: types list -> types (* Parse tree operations. *) type typeParsetree val ParseTypeBad: typeParsetree val makeParseTypeConstruction: (string * location) * (typeParsetree list * location) * location -> typeParsetree val makeParseTypeProduct: typeParsetree list * location -> typeParsetree val makeParseTypeFunction: typeParsetree * typeParsetree * location -> typeParsetree val makeParseTypeLabelled: ((string * location) * typeParsetree * location) list * bool * location -> typeParsetree val makeParseTypeId: typeVarForm * location -> typeParsetree val unitTree: location -> typeParsetree val displayTypeParse: typeParsetree * FixedInt.int * printTypeEnv -> pretty; (* Fill in the values of type variables and make checks. *) val assignTypes: typeParsetree * (string * location -> typeConstrSet) * lexan -> types; (* Check the value we're discarding in an expression sequence or a let binding and return a string if it's not appropriate. *) val checkDiscard: types * lexan -> string option val typeExportTree: navigation * typeParsetree -> exportTree val setPreferredInt: typeConstrs -> unit structure TypeValue: sig val extractEquality: codetree -> codetree and extractPrinter: codetree -> codetree and extractBoxed: codetree -> codetree and extractSize: codetree -> codetree val boxedNever: codetree and boxedAlways: codetree and boxedEither: codetree val isBoxedNever: codetree and isBoxedAlways: codetree and isBoxedEither: codetree val singleWord: codetree val createTypeValue: {eqCode: codetree, printCode: codetree, boxedCode: codetree, sizeCode: codetree} -> codetree end structure ValueConstructor: sig val extractTest: codetree -> codetree val extractInjection: codetree -> codetree val extractProjection: codetree -> codetree val createValueConstr: { testMatch: codetree, injectValue: codetree, projectValue: codetree } -> codetree val createNullaryConstr: { testMatch: codetree, constrValue: codetree } -> codetree end (* Types that can be shared. *) structure Sharing: sig type types = types and values = values and typeId = typeId and structVals = structVals and typeConstrs= typeConstrs and typeConstrSet=typeConstrSet and typeParsetree = typeParsetree and locationProp = locationProp and pretty = pretty and lexan = lexan and ptProperties = ptProperties and typeVarForm = typeVarForm and codetree = codetree and matchResult = matchResult end end; polyml-5.7.1/mlsource/MLCompiler/SymSet.ML0000644000175000017500000001750013204034553017314 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Cleaned up: David C.J. Matthews 2010 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Symbols Sets. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) (* These symbol sets are used in the parsing process. The only way they are actually used is the "inside" function which tests if a symbol is in the set. The representation used minimises the memory needed to implement each set union (++ operator). *) structure SymSet :> SymsetSig where type sys = Symbols.sys = (*****************************************************************************) (* SYMSET functor body *) (*****************************************************************************) struct open Symbols datatype symset = Set of sys -> bool val empty = Set (fn _ => false); infix 6 ++; (* ... fun plus (Set f, Set g) = Set (fn x => f x orelse g x); ... *) (* Experiment! *) fun (Set f) ++ (Set g) = Set (fn x => g x orelse f x); infix 5 inside fun sym inside (Set s) = s sym val abortParse = Set(fn AbortParse => true | _ => false) val ident = Set(fn Ident => true | _ => false) val abstypeSy = Set(fn AbstypeSy => true | _ => false) val andSy = Set(fn AndSy => true | _ => false) val andalsoSy = Set(fn AndalsoSy => true | _ => false) val asSy = Set(fn AsSy => true | _ => false) val caseSy = Set(fn CaseSy => true | _ => false) val datatypeSy = Set(fn DatatypeSy => true | _ => false) val doSy = Set(fn DoSy => true | _ => false) val elseSy = Set(fn ElseSy => true | _ => false) val endSy = Set(fn EndSy => true | _ => false) val exceptionSy = Set(fn ExceptionSy => true | _ => false) val fnSy = Set(fn FnSy => true | _ => false) val funSy = Set(fn FunSy => true | _ => false) val handleSy = Set(fn HandleSy => true | _ => false) val ifSy = Set(fn IfSy => true | _ => false) val inSy = Set(fn InSy => true | _ => false) val infixSy = Set(fn InfixSy => true | _ => false) val infixrSy = Set(fn InfixrSy => true | _ => false) val letSy = Set(fn LetSy => true | _ => false) val localSy = Set(fn LocalSy => true | _ => false) val nonfixSy = Set(fn NonfixSy => true | _ => false) val ofSy = Set(fn OfSy => true | _ => false) val opSy = Set(fn OpSy => true | _ => false) val openSy = Set(fn OpenSy => true | _ => false) val orelseSy = Set(fn OrelseSy => true | _ => false) val raiseSy = Set(fn RaiseSy => true | _ => false) val recSy = Set(fn RecSy => true | _ => false) val thenSy = Set(fn ThenSy => true | _ => false) val typeSy = Set(fn TypeSy => true | _ => false) val valSy = Set(fn ValSy => true | _ => false) val withSy = Set(fn WithSy => true | _ => false) val whileSy = Set(fn WhileSy => true | _ => false) val structureSy = Set(fn StructureSy => true | _ => false) val signatureSy = Set(fn SignatureSy => true | _ => false) val structSy = Set(fn StructSy => true | _ => false) val sigSy = Set(fn SigSy => true | _ => false) val sharingSy = Set(fn SharingSy => true | _ => false) val functorSy = Set(fn FunctorSy => true | _ => false) val withtypeSy = Set(fn WithtypeSy => true | _ => false) val eqtypeSy = Set(fn EqtypeSy => true | _ => false) val includeSy = Set(fn IncludeSy => true | _ => false) val whereSy = Set(fn WhereSy => true | _ => false) val leftParen = Set(fn LeftParen => true | _ => false) val rightParen = Set(fn RightParen => true | _ => false) val leftBrack = Set(fn LeftBrack => true | _ => false) val rightBrack = Set(fn RightBrack => true | _ => false) val comma = Set(fn Comma => true | _ => false) val colon = Set(fn Colon => true | _ => false) val semicolon = Set(fn Semicolon => true | _ => false) val verticalBar = Set(fn VerticalBar => true | _ => false) val equalsSign = Set(fn EqualsSign => true | _ => false) val thickArrow = Set(fn ThickArrow => true | _ => false) val underline = Set(fn Underline => true | _ => false) val typeIdent = Set(fn TypeIdent => true | _ => false) val stringConst = Set(fn StringConst => true | _ => false) val integerConst = Set(fn IntegerConst => true | _ => false) val realConst = Set(fn RealConst => true | _ => false) val wordConst = Set(fn WordConst => true | _ => false) val charConst = Set(fn CharConst => true | _ => false) val asterisk = Set(fn Asterisk => true | _ => false) val arrow = Set(fn Arrow => true | _ => false) val leftCurly = Set(fn LeftCurly => true | _ => false) val rightCurly = Set(fn RightCurly => true | _ => false) val threeDots = Set(fn ThreeDots => true | _ => false) val colonGt = Set(fn ColonGt => true | _ => false) val hashSign = Set(fn HashSign => true | _ => false) val othersy = Set(fn Othersy => true | _ => false) (* Collections of symbol sets for various syntactic elements *) (* Symbols which can be declared as identifiers *) val declarableVarSys = ident ++ asterisk; (* Symbols which can be variables *) val variableSys = declarableVarSys ++ equalsSign; (* Symbols which can be constructors *) val constructorSys = declarableVarSys ++ stringConst ++ integerConst ++ realConst ++ wordConst ++ charConst; (* The symbols which can start an atomic expression *) val startAtomicSys = letSy ++ opSy ++ leftBrack ++ leftParen ++ leftCurly ++ variableSys ++ constructorSys ++ hashSign; (* The symbols which can start a pattern, Note: "=" is not among them. *) (* real constants are not allowed in patterns in ML97. We leave them in and sort it out later. *) val startPatternSys = underline ++ declarableVarSys ++ constructorSys ++ leftParen ++ leftBrack ++ leftCurly ++ opSy; (* The symbols which can start a match *) val startMatchSys = startPatternSys; (* The symbols which can start an expression *) val startExpressionSys = raiseSy ++ ifSy ++ whileSy ++ caseSy ++ fnSy ++ startAtomicSys; (* The symbols which can start a declaration *) val startDecSys = valSy ++ typeSy ++ abstypeSy ++ exceptionSy ++ localSy ++ infixSy ++ infixrSy ++ nonfixSy ++ openSy ++ funSy ++ datatypeSy; (* Symbols which can start a type. *) val startTypeSys = typeIdent ++ ident ++ leftParen ++ leftCurly; (* Symbols which can start a signature. Strictly speaking "sharing" cannot start a signature. *) val startSigSys = datatypeSy ++ typeSy ++ eqtypeSy ++ valSy ++ exceptionSy ++ structureSy ++ sharingSy ++ includeSy; val startTopSys = structureSy ++ functorSy ++ signatureSy ++ startDecSys ++ startExpressionSys end; polyml-5.7.1/mlsource/MLCompiler/SIGNATURES.sml0000644000175000017500000020476113204034553020046 0ustar daviddavid(* Copyright David C. J. Matthews 2009 Largely extracted from STRUCTURES_.ML Copyright (c) 2000 Cambridge University Technical Services Limited Modified D.C.J. Matthews 2001-2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Module Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor SIGNATURES ( structure LEX : LEXSIG structure STRUCTVALS : STRUCTVALSIG; structure EXPORTTREE: EXPORTTREESIG structure PRETTY : PRETTYSIG structure COPIER: COPIERSIG structure TYPETREE : TYPETREESIG structure PARSETREE : PARSETREESIG structure VALUEOPS : VALUEOPSSIG; structure UNIVERSALTABLE: sig type universal = Universal.universal type univTable type 'a tag = 'a Universal.tag val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; val univFold: univTable * (string * universal * 'a -> 'a) * 'a -> 'a; end; structure DEBUG: DEBUGSIG structure UTILITIES : sig val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; end; sharing LEX.Sharing = TYPETREE.Sharing = PARSETREE.Sharing = PRETTY.Sharing = EXPORTTREE.Sharing = STRUCTVALS.Sharing = COPIER.Sharing = VALUEOPS.Sharing = UNIVERSALTABLE ) : SIGNATURESSIG = struct open Misc (* Open this first because it contains Value. *) open LEX STRUCTVALS EXPORTTREE PRETTY COPIER TYPETREE PARSETREE UNIVERSALTABLE DEBUG open VALUEOPS UTILITIES Universal datatype sigs = SignatureIdent of string * location * locationProp list ref (* A signature name *) | SigDec of specs list * location (* sig ... end *) | WhereType of whereTypeStruct (* type realisation. *) and specs = StructureSig of structSigBind list * location | ValSig of (* Signature of a value. *) { name: string * location, typeof: typeParsetree, line: location } | ExSig of (* Signature of an exception. May be a nullary exception. *) { name: string * location, typeof: typeParsetree option, line: location } | CoreType of (* Any other decln. *) { dec: parsetree, (* The value *) location: location } | Sharing of shareConstraint (* Sharing constraints. *) | IncludeSig of sigs list * location (* Include. *) withtype shareConstraint = { isType: bool, shares: (string * location) list, line: location } and structSigBind = { name: string, (* The name of the structure *) nameLoc: location, sigStruct: sigs * bool * location, line: location } and whereTypeStruct = { sigExp: sigs, typeVars: typeVarForm list, typeName: string, realisation: typeParsetree, line: location } fun mkSigIdent(name, nameLoc) = SignatureIdent(name, nameLoc, ref []) fun mkCoreType (dec, location) = CoreType { dec = dec, location = location }; fun mkValSig (nameLoc, typeof, line) = ValSig { name = nameLoc, typeof = typeof, line = line }; fun mkExSig (nameLoc, typeof, line) = ExSig { name = nameLoc, typeof = typeof, line = line }; fun mkSharing (isType, shares, line) = Sharing { isType = isType, shares = shares, line = line }; fun mkWhereType (sigexp, typeVars, name, types, line) = WhereType { sigExp = sigexp, typeVars = typeVars, typeName = name, realisation = types, line = line }; val mkInclude = IncludeSig and mkStructureSig = StructureSig and mkSig = SigDec fun mkStructureSigBinding ((name, nameLoc), signat, fullLoc):structSigBind = { name = name, nameLoc = nameLoc, sigStruct = signat, line = fullLoc } (* Make a signature for initialisating variables and for undeclared signature variables. *) val undefinedSignature = makeSignature("", makeSignatureTable(), 0, [], fn _ => raise Subscript, []); (* We use a name that isn't otherwise valid for a signature. *) fun isUndefinedSignature(Signatures{name, ...}) = name = "" fun displayList ([], _, _) _ = [] | displayList ([v], _, depth) dodisplay = if depth <= 0 then [PrettyString "..."] else [dodisplay (v, depth)] | displayList (v::vs, separator, depth) dodisplay = if depth <= 0 then [PrettyString "..."] else let val brk = if separator = "," orelse separator = ";" then 0 else 1 in PrettyBlock (0, false, [], [ dodisplay (v, depth), PrettyBreak (brk, 0), PrettyString separator ] ) :: PrettyBreak (1, 0) :: displayList (vs, separator, depth - 1) dodisplay end (* displayList *) fun displaySigs (str, depth) = if depth <= 0 (* elide further text. *) then PrettyString "..." else case str of SignatureIdent (name : string, _, _) => PrettyString name | SigDec (structList : specs list, _) => PrettyBlock (0, true, [], PrettyString "sig" :: PrettyBreak (1, 0) :: displayList (structList, "", depth) displaySpecs @ [ PrettyBreak (1, 0), PrettyString "end"] ) | WhereType { sigExp, typeVars, typeName, realisation, ... } => PrettyBlock (3, false, [], displaySigs (sigExp, depth) :: PrettyBreak (1, 0) :: PrettyString "where" :: PrettyBreak (1, 0) :: PrettyString "type" :: PrettyBreak (1, 0) :: displayTypeVariables (typeVars, depth) @ [ PrettyString typeName, PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayTypeParse (realisation, depth - 1, emptyTypeEnv) ] ) and displaySpecs (specs, depth) = if depth <= 0 (* elide further text. *) then PrettyString "..." else case specs of StructureSig (structList : structSigBind list, _) => let fun displaySigsBind ( {name, sigStruct=(sigStruct, opaque, _), ...}: structSigBind, depth) = PrettyBlock (3, false, [], [ PrettyString name, PrettyString (if opaque then " :>" else " :"), PrettyBreak (1, 0), displaySigs (sigStruct, depth - 1) ] ) in PrettyBlock (3, false, [], PrettyString "structure" :: PrettyBreak (1, 0) :: displayList (structList, "and", depth) displaySigsBind ) end | ValSig {name = (name, _), typeof, ...} => PrettyBlock (0, false, [], [ PrettyString "val", PrettyBreak (1, 1), PrettyString (name ^ " :"), PrettyBreak (1, 0), displayTypeParse (typeof, depth - 1, emptyTypeEnv) ] ) | ExSig {name = (name, _), typeof = NONE, ...} => PrettyBlock (0, false, [], [ PrettyString "exception", PrettyBreak (1, 1), PrettyString (name) ] ) | ExSig {name = (name, _), typeof = SOME typeof, ...} => PrettyBlock (0, false, [], [ PrettyString "exception", PrettyBreak (1, 1), PrettyString (name ^ " :"), PrettyBreak (1, 0), displayTypeParse (typeof, depth - 1, emptyTypeEnv) ] ) | Sharing { isType, shares, ... } => PrettyBlock (3, false, [], PrettyString "sharing" :: PrettyBreak (1, 0) :: ( if not isType then [] else [ PrettyString "type", PrettyBreak (1, 0) ] ) @ displayList (shares, "=", depth) (fn ((name, _), _) => PrettyString name) ) | IncludeSig (structList : sigs list, _) => PrettyBlock (3, true, [], PrettyString "include" :: PrettyBreak (1, 0) :: displayList (structList, "", depth - 1) displaySigs ) | CoreType {dec, ...} => displayParsetree (dec, depth - 1) (* End displaySigs *) fun sigExportTree(navigation, s: sigs) = let (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => displaySigs(s, d)) :: exportNavigationProps navigation fun asParent () = sigExportTree(navigation, s) in case s of SignatureIdent(_, loc, ref decLocs) => (loc, mapLocationProps decLocs @ commonProps) | SigDec(structList, location) => (location, exportList(specExportTree, SOME asParent) structList @ commonProps) | WhereType _ => (nullLocation, commonProps) end and specExportTree(navigation, s: specs) = let (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => displaySpecs(s, d)) :: exportNavigationProps navigation fun asParent () = specExportTree(navigation, s) in case s of StructureSig(sbl, location) => let fun exportSB(navigation, sb as {name, nameLoc, sigStruct=(theSig, _, _), line, ...}) = let fun exportThis () = exportSB(navigation, sb) fun getName () = getStringAsTree({parent=SOME exportThis, previous=NONE, next=SOME getSigStruct}, name, nameLoc, []) and getSigStruct () = sigExportTree({parent=SOME exportThis, previous=SOME getName, next=NONE}, theSig) in (line, PTfirstChild getName :: exportNavigationProps navigation) end val expChild = exportList(exportSB, SOME asParent) sbl in (location, expChild @ commonProps) end | ValSig{name=(name, nameLoc), typeof, line, ...} => let (* The first position is the value name, the second the type. *) (* TODO: Include the actual type as PTtype? *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=SOME getType}, name, nameLoc, []) and getType () = typeExportTree({parent=SOME asParent, previous=SOME getName, next=NONE}, typeof) in (line, PTfirstChild getName :: commonProps) end | ExSig{name=(name, nameLoc), typeof = NONE, line, ...} => let (* The first position is the value name, the second the type. *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=NONE}, name, nameLoc, []) in (line, PTfirstChild getName :: commonProps) end | ExSig{name=(name, nameLoc), typeof = SOME typeof, line, ...} => let (* The first position is the value name, the second the type. *) (* TODO: Include the actual type as PTtype? *) fun getName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=SOME getType}, name, nameLoc, []) and getType () = typeExportTree({parent=SOME asParent, previous=SOME getName, next=NONE}, typeof) in (line, PTfirstChild getName :: commonProps) end | CoreType {dec, ...} => (* A value parse-tree entry. *) getExportTree(navigation, dec) | Sharing _ => (nullLocation, commonProps) | IncludeSig (sigs, loc) => (loc, exportList(sigExportTree, SOME asParent) sigs @ commonProps) end (* Puts out an error message and then prints the piece of tree. *) fun errorMsgNear (lex, hard, near, lno, message) : unit = let val parameters = debugParams lex val errorDepth = getParameter errorDepthTag parameters in reportError lex { hard = hard, location = lno, message = message, context = SOME(near errorDepth) } end fun errorNear(lex, hard, near, lno, message: string) = errorMsgNear (lex, hard, near, lno, PrettyBlock (0, false, [], [PrettyString message])) fun giveError (sVal : sigs, lno : LEX.location, lex : lexan) : string -> unit = fn (message : string) => errorNear (lex, true, fn n => displaySigs(sVal, n), lno, message) and giveSpecError(sVal : specs, lno : LEX.location, lex : lexan) : string -> unit = fn (message : string) => errorNear (lex, true, fn n => displaySpecs(sVal, n), lno, message); val makeEnv = fn x => let val Env e = makeEnv x in e end; fun printId(TypeId{description, ...}) = printDesc description and printDesc{ location: location, name: string, description = "" } = PrettyBlock(0, false, [ContextLocation location], [PrettyString name]) | printDesc{ location: location, name: string, description: string } = PrettyBlock(0, false, [ContextLocation location], [PrettyString name, PrettyBreak(1, 0), PrettyString ("(*" ^ description ^ "*)")]) (* Formal paramater to a functor - either value or exception. *) fun mkFormal (name : string, class, typ, addr, locations) = Value{class=class, name=name, typeOf=typ, access=Formal addr, locations=locations, references = NONE, instanceTypes=NONE} (* Get the value from a signature-returning expression (either the name of a signature or sig ... end. The type IDs in the signature are bound names. *) fun sigVal(str : sigs, initTypeId : int, outerTypeIdEnv: int->typeId, Env globalEnv : env, lex, lno : LEX.location ) : signatures = let datatype varId = SharedWith of int (* Index of shared ID, always less than current index. *) | VariableSlot of { boundId: typeId, descriptions: string list } | FreeSlot of typeId (* Bound to a Free type ID. *) | Unset val idCount = ref initTypeId val mapArray = StretchArray.stretchArray(10 (* Guess initial size. *), Unset) val sourceArray = StretchArray.stretchArray(10 (* Guess initial size. *), NONE) fun makeVariableId(arity, isEq, isDt, requireUpdate, { location, name, description }, structPath) = let val fullName = structPath^name val descr = { location=location, name=fullName, description=description} (* Make a new bound ID after any existing ones. *) val newIdNumber = !idCount before (idCount := !idCount+1) val newId = (if requireUpdate then makeBoundIdWithEqUpdate else makeBoundId) (arity, Formal 0 (* Not used. *), newIdNumber, isEq, isDt, descr) (* Enter a variable entry in the array. *) val arrayEntry = VariableSlot{ boundId=newId, descriptions = [fullName] } val () = StretchArray.update(mapArray, newIdNumber-initTypeId, arrayEntry) val () = StretchArray.update(sourceArray, newIdNumber-initTypeId, SOME newId) in newId end (* Follow a chain of shared IDs. This should terminate because we always point down the array. *) fun realId n = case StretchArray.sub(mapArray, n) of SharedWith m => if m >= n then raise InternalError "realId: Sharing loop" else realId m | id => id fun isVariableId(TypeId{idKind=Bound{offset, ...}, ...}) = if offset < initTypeId then false (* Outside the signature. *) else ( case realId(offset-initTypeId) of VariableSlot _ => true | FreeSlot _ => false | _ => raise InternalError "isVar" ) | isVariableId _ (* Free or TypeFunction *) = false (* The internal type ID map after mapping to the internal Bound IDs but before the application of any "where types" or sharing. *) fun typeIdEnv () = let val v = Vector.tabulate(!idCount-initTypeId, fn n => valOf(StretchArray.sub(sourceArray, n))) in fn n => if n < initTypeId then outerTypeIdEnv n else Vector.sub(v, n-initTypeId) end fun linkFlexibleTypeIds(typeId1, typeId2) = (* Link together and share two IDs. The result is an equality type if either was an equality type and a datatype if either was a datatype. *) case (typeId1, typeId2) of (TypeId{idKind=Bound{offset=offset1, ...}, ...}, TypeId{idKind=Bound{offset=offset2, ...}, ...}) => ( case (realId(offset1-initTypeId), realId(offset2-initTypeId)) of (VariableSlot{descriptions = desc1, boundId=TypeId{ idKind=Bound{eqType=eqType1, offset=off1, isDatatype=isDatatype1, arity=arity1, ...}, description, ...}}, VariableSlot{descriptions = desc2, boundId=TypeId{ idKind=Bound{eqType=eqType2, offset=off2, isDatatype=isDatatype2, arity=arity2, ...}, ...}}) => if off1 = off2 then () (* They may already share. *) else let val resOffset = Int.min(off1, off2) val setOffset = Int.max(off1, off2) val isDatatype = isDatatype1 orelse isDatatype2 val _ = arity1 = arity2 orelse raise InternalError "linkFlexibleTypeIds: different arities" val newId = makeBoundId(arity1, Formal 0, resOffset, pling eqType1 orelse pling eqType2, isDatatype, description (* Not used *)) val newEntry = VariableSlot{ boundId=newId, descriptions = desc1 @ desc2 } in StretchArray.update(mapArray, resOffset-initTypeId, newEntry); StretchArray.update(mapArray, setOffset-initTypeId, SharedWith(resOffset-initTypeId)) end | _ => raise InternalError "linkFlexibleTypeIds: not variable" ) | _ => raise InternalError "linkFlexibleTypeIds: not bound" local (* Sharing *) fun shareTypes(typeA as TypeConstrSet(constrA, _), aPath, aMap, typeB as TypeConstrSet(constrB, _), bPath, bMap, lno, nearStruct) = let fun cantShare reason = let fun showTypeCons(TypeConstrSet(t, _), p) = let val context = case List.find(fn DeclaredAt _ => true | _ => false) (tcLocations t) of SOME(DeclaredAt loc) => [ContextLocation loc] | _ => [] in PrettyBlock(0, false, context, [PrettyString(p ^ tcName t)]) end in errorMsgNear (lex, true, fn n => displaySigs(nearStruct, n), lno, PrettyBlock(3, false, [], [ PrettyString "Cannot share type", PrettyBreak(1, 2), showTypeCons(typeA, aPath), PrettyBreak(1, 0), PrettyString "with type", PrettyBreak(1, 0), showTypeCons(typeB, bPath), PrettyBreak(0, 0), PrettyString ".", PrettyBreak(1, 0), reason ])) end fun alreadyBound(path, typeName, tcId) = cantShare ( PrettyBlock(3, false, [], [ PrettyString(path ^ typeName), PrettyBreak(1, 0), PrettyString "is already defined as", PrettyBreak(1, 0), printId tcId ])) in if isUndefinedTypeConstr constrA orelse isUndefinedTypeConstr constrB then () else if tcArity constrA <> tcArity constrB (* Check arity. *) then cantShare(PrettyString "The type constructors take different numbers of arguments.") else let fun mapId (map, TypeId{idKind=Bound{offset, ...}, ...}) = map offset | mapId (_, id) = id val aId = mapId(aMap, tcIdentifier constrA) and bId = mapId(bMap, tcIdentifier constrB) in (* The type constructors are only looked up in the signature but they already may be set to another type through a "where type" or they may have been created with Free IDs through type t=s declarations. This could be a free identifier or a type function. *) if not (isVariableId aId) then alreadyBound(aPath, tcName constrA, aId) else if not (isVariableId bId) then alreadyBound(bPath, tcName constrB, bId) else linkFlexibleTypeIds(aId, bId) end end (* shareTypes *); (* Find all the structures and type constructors in one structure. *) fun structsAndTypes((Struct{signat=Signatures { tab, typeIdMap, ... }, ...}, path, oldMap), start) = let val newMap = composeMaps(typeIdMap, oldMap) fun get(name, dVal, (ts, ss)) = if tagIs structVar dVal then (ts, (name, (tagProject structVar dVal, path ^ name ^ ".", newMap)) :: ss) else if tagIs typeConstrVar dVal then ((name, (tagProject typeConstrVar dVal, path, newMap)) :: ts, ss) else (ts, ss) in univFold (tab, get, start) end (* Get all the structures and type constructors in a list of structures. *) fun allStructsAndTypes structs = List.foldl structsAndTypes ([], []) structs (* Turn a list of names and structures/types into a list of lists. Each entry in the result list is all those structures/types with the same name. *) fun getMatchedEntries entries = let (* Sort the items so that items with the same name are brought together. A signature is not allowed to have items of the same kind with the same name so this means that we are bringing together items from different structures. Then filter the result to produce sets of items with the same name. Discard singletons in the result. *) val sortedEntries = quickSort (fn (s1, _) => fn (s2, _) => s1 <= s2) entries (* *) fun getEquals([], _, [], res) = res (* End of empty list. *) | getEquals([], _, [_], res) = res (* Last item was singleton: discard *) | getEquals([], _, acc, res) = acc :: res (* Return last item. *) | getEquals((s, t) :: r, a: string, acc, res) = if a = s then getEquals(r, a, t :: acc, res) (* Same name as last item. *) else case acc of (* Different from last item: *) [] => getEquals(r, s, [t], res) (* No previous item. *) | [_] => getEquals(r, s, [t], res) (* Last was singleton: discard. *) | acc => getEquals(r, s, [t], acc :: res) in getEquals(sortedEntries, "", [], []) end (* Recursively apply the sharing constraints to corresponding types in a list of structures. *) fun structureSharing(structs, line, near) = let fun shareStructs structs = let val (allTypes, allSubstructs) = allStructsAndTypes structs (* Get the lists of structures and types to share. *) val matchedTypes = getMatchedEntries allTypes val matchedStructs = getMatchedEntries allSubstructs in List.app(fn types => (* Share types. *) case types of [] => raise List.Empty | (hd, hdName, hdMap) :: tl => (* Share the rest of the list with the first item. *) List.app(fn (t, tName, tMap) => shareTypes(hd, hdName, hdMap, t, tName, tMap, line, near)) tl) matchedTypes; List.app shareStructs matchedStructs (* Recursively share sub-structures. *) end in shareStructs(List.map(fn (s as Struct{name=sName, ...}) => (s, sName ^ ".", typeIdEnv())) structs) end in (* Process a sharing constraint. *) fun applySharingConstraint({shares, isType, line}, Env tEnv, near) : unit = let (* When looking up the structure and type names we look only in the signature in ML97. We add this to make it clear that we are only looking up in the signature otherwise we get confusing messages such as "type (int) has not been declared". *) fun lookupFailure locn msg = giveError (str, locn, lex) (msg ^ " in signature.") in if isType then let (* Type sharing. *) fun lookupSharing (name, locn) = lookupTyp ({ lookupType = #lookupType tEnv, lookupStruct = #lookupStruct tEnv }, name, lookupFailure locn) in case shares of nil => raise Empty | hd :: tl => let val first = lookupSharing hd in if isUndefinedTypeConstr(tsConstr first) then () else List.app (fn typ => shareTypes (lookupSharing typ, "", typeIdEnv(), first, "", typeIdEnv(), line, near)) tl end end else let (* structure sharing. *) fun getStruct(name, locn) = lookupStructureAsSignature (#lookupStruct tEnv, name, lookupFailure locn) in (* Now share all these signatures. *) structureSharing(List.mapPartial getStruct shares, line, near) end end (* applySharingConstraint *) end (* Sharing *) (* Look up a signature. Signatures can only be in the global environment. *) fun lookSig (name : string, lno : LEX.location) : signatures = case #lookupSig globalEnv name of SOME v => v | NONE => ( giveError (str, lno, lex)("Signature (" ^ name ^ ") has not been declared"); undefinedSignature ) (* Construct a signature. All the type IDs within the signature are variables. *) fun sigValue (str : sigs, Env env : env, _ : LEX.location, structPath) = case str of SignatureIdent(name, loc, declLoc) => signatureIdentValue(name, loc, declLoc, Env env, structPath) | WhereType {sigExp, typeVars, typeName, realisation, line, ...} => signatureWhereType(sigExp, typeVars, typeName, realisation, line, Env env, structPath) | SigDec(sigList, lno) => makeSigInto(sigList, Env env, lno, 0, structPath) and signatureIdentValue(name, loc, declLocs, _, structPath) = let (* Look up the signature and copy it to turn bound IDs into variables. This is needed because we may have sharing. *) val Signatures { name, tab, typeIdMap, firstBoundIndex, boundIds, locations, ...} = lookSig(name, loc); (* Remember the declaration location for possible browsing. *) val () = declLocs := locations val startNewIds = ! idCount (* Create a new variable ID for each bound ID. Type functions have to be copied to replace references to other bound IDs. These must be earlier in the list. *) fun makeNewIds([], _) = [] | makeNewIds( (oldId as TypeId{description, idKind=Bound { isDatatype, offset, arity, ...}, ...}) :: rest, typeMap ) = let val newId = makeVariableId(arity, isEquality oldId, isDatatype, false, description, structPath) fun newMap(id as TypeId{idKind=Bound{offset=n, ...}, ...}) = if n = offset then SOME newId else typeMap id | newMap _ = NONE in newId :: makeNewIds(rest, newMap) end | makeNewIds _ = raise InternalError "Map does not return Bound Id" val v = Vector.fromList(makeNewIds(boundIds, fn _ => NONE)) (* Map bound IDs only. *) val mapIds = if firstBoundIndex = startNewIds orelse null boundIds then typeIdMap (* Optimisation to reduce space: don't add map if it's not needed. *) else let fun mapId n = if n < firstBoundIndex then outerTypeIdEnv n else Vector.sub (v, n - firstBoundIndex) in composeMaps(typeIdMap, mapId) end in makeSignature(name, tab, !idCount, locations, mapIds, []) end and signatureWhereType(sigExp, typeVars, typeName, realisationType, line, Env globalEnv, structPath) = let (* We construct the signature into the result signature. When we apply the "where" we need to look up the types (and structures) only within the signature constrained by the "where" and not in the surrounding signature. e.g. If we have sig type t include S where type t = ... end we need to generate an error if S does not include t. Of course if it does that's also an error since t would be rebound! Equally, we must look up the right hand side of a where type in the surrounding scope, which will consist of the global environment and the signature excluding the entries we're adding here. *) val resSig as Signatures { typeIdMap = idMap, tab = resTab, ... } = sigValue(sigExp, Env globalEnv, lno, structPath) val sigEnv = makeEnv resTab fun lookupFailure msg = giveError (str, line, lex) (msg ^ " in signature.") (* Look up the type constructor in the signature. *) val sigTypeConstr = lookupTyp ({ lookupType = #lookupType sigEnv, lookupStruct = #lookupStruct sigEnv }, typeName, lookupFailure); (* The type, though, is looked up in the surrounding environment. *) fun lookupGlobal(s, locn) = lookupTyp ({ lookupType = #lookupType globalEnv, lookupStruct = #lookupStruct globalEnv }, s, giveError (str, locn, lex)) (* Process the type, looking up any type constructors. *) val realisation = assignTypes (realisationType, lookupGlobal, lex); fun cantSet(reason1, reason2) = let val typeEnv = { lookupType = fn s => case #lookupType globalEnv s of NONE => NONE | SOME t => SOME(t, NONE), lookupStruct = fn s => case #lookupStruct globalEnv s of NONE => NONE | SOME t => SOME(t, NONE) } in errorMsgNear (lex, true, fn n => displaySigs(sigExp, n), lno, PrettyBlock(3, false, [], [ PrettyString "Cannot apply type realisation.", PrettyBreak(1, 2), PrettyString("``" ^ typeName ^ "''"), PrettyBreak(1, 0), PrettyString reason1, PrettyBreak(1, 0), display(realisation, 1000, typeEnv), PrettyBreak(0, 0), PrettyString reason2 ])) end in (* Now try to set the target type to the type function. *) if isUndefinedTypeConstr (tsConstr sigTypeConstr) then () (* Probably because looking up the type constructor name failed. *) else let (* Map the type identifier to be set. *) val typeId = case tcIdentifier (tsConstr sigTypeConstr) of TypeId{idKind=Bound{offset, ...}, ...} => idMap offset | id => id in if not (isVariableId typeId) then (* May have been declared as type t=int or bound by a where type already. *) errorMsgNear (lex, true, fn n => displaySigs(sigExp, n), lno, PrettyBlock(3, false, [], [ PrettyString "Cannot apply type realisation.", PrettyBreak(1, 2), PrettyString("``" ^ typeName ^ "''"), PrettyBreak(1, 0), PrettyString " has already been set to", PrettyBreak(1, 0), printId typeId ])) else case typeId of TypeId{idKind=Bound { offset, ... }, ...} => ( case realId(offset-initTypeId) of VariableSlot {boundId=varId as TypeId{idKind=Bound{eqType, offset, isDatatype, ...}, ...}, ... } => ( (* The rule for "where type" says that we must check that an eqtype is only set to a type that permits equality and that the result is "well-formed". This seems to mean that if the type we're setting is a datatype (has constructors) it can only be set to a type that is a type name and not a general type function. *) if pling eqType andalso not(typePermitsEquality realisation) then cantSet ("is an eqtype but", "does not permit equality.") else case typeNameRebinding (typeVars, realisation) of SOME typeId => (* Renaming an existing constructor e.g. type t = s. Propagate the id. "s" may be free or it may be within the signature and equivalent to a sharing constraint. e.g. sig type t structure S: sig type s end where type s = t end. *) let (* We need to check what it has been set to if it's already set. *) val linkedId = case typeId of id as TypeId{idKind=Bound{offset, ...}, ...} => if offset < initTypeId then FreeSlot id (* Outside the sig: treat it as Free. *) else realId(offset-initTypeId) | id => FreeSlot id (* Free *) in case linkedId of VariableSlot _ => linkFlexibleTypeIds(typeId, varId) | _ => StretchArray.update(mapArray, offset-initTypeId, linkedId) end | NONE => if isDatatype (* The type we're trying to set is a datatype but the type we're setting it to isn't. *) then cantSet ("is a datatype but", "is not a simple type.") else let val typeId = makeTypeFunction( { location = line, description = "", name = typeName }, (typeVars, realisation)) in StretchArray.update(mapArray, offset-initTypeId, FreeSlot typeId) end ) | _ => (* Already checked. *) raise InternalError "setWhereType" ) | _ => (* Already checked. *) raise InternalError "setWhereType" end; resSig end (* signatureWhereType *) (* Constructs a signature and inserts it into an environment at a given offset. Generally offset will be zero except if we are including a signature. All the type IDs corresponding to local types are variables. There may be free IDs (and bound IDs?) as a result of "where type" constraints. *) and makeSigInto(sigsList: specs list, Env globalEnv, (* The surrounding environment excluding this sig. *) lno: LEX.location, offset: int, structPath): signatures = let (* Make a new signature. *) val newTable = makeSignatureTable(); (* Copy everything into the new signature. *) local (* ML 97 does not allow multiple declarations in a signature. *) fun checkAndEnter (enter, lookup, kind, locs) (s: string, v) = case lookup s of SOME _ => (* Already there. *) let fun getDecLoc(DeclaredAt loc :: _) = loc | getDecLoc [] = lno | getDecLoc(_::rest) = getDecLoc rest (* TODO: This shows the location of the identifier that is the duplicate. It would be nice if it could also show the original location. *) in errorNear (lex, true, fn n => displaySigs(str, n), getDecLoc(locs v), kind ^ " (" ^ s ^ ") is already present in this signature.") end | NONE => enter(s, v) val structEnv = makeEnv newTable; in val structEnv = { lookupVal = #lookupVal structEnv, lookupType = #lookupType structEnv, lookupFix = #lookupFix structEnv, lookupStruct = #lookupStruct structEnv, lookupSig = #lookupSig structEnv, lookupFunct = #lookupFunct structEnv, enterVal = checkAndEnter (#enterVal structEnv, #lookupVal structEnv, "Value", fn (Value{ locations, ...}) => locations), enterType = checkAndEnter (#enterType structEnv, #lookupType structEnv, "Type", tcLocations o tsConstr), enterStruct = checkAndEnter (#enterStruct structEnv, #lookupStruct structEnv, "Structure", fn Struct{locations, ...} => locations), (* These next three can't occur. *) enterFix = fn _ => raise InternalError "Entering fixity in signature", enterSig = fn _ => raise InternalError "Entering signature in signature", enterFunct = fn _ => raise InternalError "Entering functor in signature", allValNames = #allValNames structEnv } end (* Process the entries in the signature and allocate an address to each. *) fun processSig (signat: specs, offset : int, lno : LEX.location) : int = case signat of StructureSig (structList : structSigBind list, _) => let (* Each element in the list should be a structure binding. *) fun pStruct [] offset = offset | pStruct (({name, sigStruct = (sigStruct, _, _), line, ...}: structSigBind) :: t) offset = let (* Create a new surrounding environment to include the surrounding structure. This is the scope for any structures or types. Specifically, if we look up a type defined by a "where type" we use this environment and not the signature we're creating. *) val newEnv = { lookupVal = #lookupVal structEnv, lookupType = lookupDefault (#lookupType structEnv) (#lookupType globalEnv), lookupFix = #lookupFix structEnv, lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct globalEnv), lookupSig = #lookupSig structEnv, lookupFunct = #lookupFunct structEnv, enterVal = #enterVal structEnv, enterType = #enterType structEnv, enterStruct = #enterStruct structEnv, enterFix = #enterFix structEnv, enterSig = #enterSig structEnv, enterFunct = #enterFunct structEnv, allValNames = fn () => (#allValNames structEnv () @ #allValNames globalEnv ()) }; val resSig = sigValue (sigStruct, Env newEnv, line, structPath ^ name ^ "."); (* Process the rest of the list before declaring the structure. *) val result = pStruct t (offset + 1); (* Make a structure. *) val locations = [DeclaredAt lno, SequenceNo (newBindingId lex)] val resStruct = makeFormalStruct (name, resSig, offset, locations) val () = #enterStruct structEnv (name, resStruct); in result (* One slot for each structure. *) end in pStruct structList offset end | ValSig {name=(name, nameLoc), typeof, line, ...} => let val errorFn = giveSpecError (signat, line, lex); fun lookup(s, locn) = lookupTyp ({ lookupType = lookupDefault (#lookupType structEnv) (#lookupType globalEnv), lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct globalEnv) }, s, giveSpecError (signat, locn, lex)); (* Check for rebinding of built-ins. "it" is allowed here. *) val () = if name = "true" orelse name = "false" orelse name = "nil" orelse name = "::" orelse name = "ref" then errorFn("Specifying \"" ^ name ^ "\" is illegal.") else (); val typeof = assignTypes (typeof, lookup, lex) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] in (* If the type is not found give an error. *) (* The type is copied before being entered in the environment. This isn't logically necessary but has the effect of removing ref we put in for type constructions. *) #enterVal structEnv (name, mkFormal (name, ValBound, copyType (typeof, fn x => x, fn x => x), offset, locations)); (offset + 1) end | ExSig {name=(name, nameLoc), typeof, line, ...} => let val errorFn = giveSpecError (signat, line, lex); fun lookup(s, _) = lookupTyp ({ lookupType = lookupDefault (#lookupType structEnv) (#lookupType globalEnv), lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct globalEnv) }, s, errorFn); val exType = case typeof of NONE => exnType | SOME typeof => mkFunctionType (assignTypes (typeof, lookup, lex), exnType) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] in (* If the type is not found give an error. *) (* Check for rebinding of built-ins. "it" is not allowed. *) if name = "true" orelse name = "false" orelse name = "nil" orelse name = "::" orelse name = "ref" orelse name = "it" then errorFn("Specifying \"" ^ name ^ "\" is illegal.") else (); #enterVal structEnv (name, mkFormal (name, Exception, exType, offset, locations)); (offset + 1) end | IncludeSig (structList : sigs list, _) => let (* include sigid ... sigid or include sigexp. For simplicity we handle the slightly more general case of a list of signature expressions. The contents of the signature are added to the environment. *) fun includeSigExp (str: sigs, offset) = let val address = ref offset (* The environment for the signature being included must at least include local types. *) val includeEnv = { lookupVal = #lookupVal structEnv, lookupType = lookupDefault (#lookupType structEnv) (#lookupType globalEnv), lookupFix = #lookupFix structEnv, lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct globalEnv), lookupSig = #lookupSig structEnv, lookupFunct = #lookupFunct structEnv, enterVal = #enterVal structEnv, enterType = #enterType structEnv, enterStruct = #enterStruct structEnv, enterFix = #enterFix structEnv, enterSig = #enterSig structEnv, enterFunct = #enterFunct structEnv, allValNames = #allValNames structEnv } val resultSig = sigValue(str, Env includeEnv, lno, structPath) (* Renumber the run-time offsets for Values and Structures as we enter them into the surrounding signature. *) fun newAccess(Formal _) = let val addr = !address in address := addr+1; Formal addr end | newAccess _ = raise InternalError "newAccess: Not Formal" fun enterType(name, tySet as TypeConstrSet(ty, tcConstructors)) = let (* Process value constructors with the type. Because values can't be redefined within a signature we can't have overridden this with a new declaration. We don't allocate run-time IDs to type identifiers. That's done at the end when we've sorted out any sharing *) fun copyConstructor(Value { name, typeOf, access, class, locations, ... }) = Value{name=name, typeOf = typeOf, access=newAccess access, class=class, locations=locations, references=NONE, instanceTypes=NONE} val newType = case tcConstructors of [] => tySet (* Not a datatype. *) | constrs => let val newTy = makeTypeConstructor(tcName ty, tcTypeVars ty, tcIdentifier ty, tcLocations ty) in TypeConstrSet(newTy, List.map copyConstructor constrs) end; in #enterType structEnv(name, newType) end and enterStruct(name, Struct{name=strName, signat, access, locations, ...}) = #enterStruct structEnv (name, Struct{ name = strName, signat = signat, access = newAccess access, locations = locations}) and enterVal(dName, Value { name, typeOf, access, class, locations, ... }) = #enterVal structEnv (dName, Value{name=name, typeOf = typeOf, access=newAccess access, class=class, locations=locations, references=NONE, instanceTypes=NONE}) val tsvEnv = { enterType = enterType, enterStruct = enterStruct, enterVal = enterVal } val () = openSignature(resultSig, tsvEnv, "") in ! address end in List.foldl includeSigExp offset structList end | Sharing (share : shareConstraint) => (* Sharing constraint. *) let (* In ML90 it was possible to share with any identifier in scope. In ML97 sharing is restricted to identifiers in the "spec". *) val envForSharing = Env structEnv in applySharingConstraint (share, envForSharing, str); offset (* No entry *) end | CoreType {dec, ...} => let (* datatype or type binding(s) *) (* This pass puts the data constructors into the environment. *) val addrs = ref offset (* Pass2 creates value constructors of datatypes as global values. Rather than complicate pass2 by trying to make formal values in this case it's easier to trap the value constructors at this point. N.B. We may get constructors from a datatype declaration or from datatype replication. *) fun convertValueConstr(Value{class=class, typeOf, locations, name, ...}) = Value{class=class, typeOf=typeOf, access=Formal(!addrs before (addrs := !addrs+1)), name=name, locations=locations, references=NONE, instanceTypes=NONE} fun enterVal(name, v) = (#enterVal structEnv)(name, convertValueConstr v) (* Record all the types and enter them later. *) val datatypeList = searchList () val enterType = #enter datatypeList val newEnv = { lookupVal = #lookupVal structEnv, lookupType = lookupDefault (#lookup datatypeList) (lookupDefault (#lookupType structEnv) (#lookupType globalEnv)), lookupFix = #lookupFix structEnv, lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct globalEnv), lookupSig = #lookupSig structEnv, lookupFunct = #lookupFunct structEnv, enterVal = enterVal, enterType = enterType, enterStruct = #enterStruct structEnv, enterFix = #enterFix structEnv, enterSig = #enterSig structEnv, enterFunct = #enterFunct structEnv, allValNames = #allValNames structEnv }; fun makeId (eq, isdt, (args, EmptyType), loc) = makeVariableId(length args, eq, isdt, true, loc, structPath) | makeId (_, _, (typeVars, decType), { location, name, description }) = makeTypeFunction( { location = location, name = structPath ^ name, description = description }, (typeVars, decType)) (* We need a map to look up types. This is only used in one place: if the item we're processing is a datatype then we need to look at the bindings of type identifiers to compute equality correctly. e.g. type t = int*int datatype s = X of t . *) fun equalityForId(TypeId{idKind=TypeFn(_, equiv), ...}) = typePermitsEquality equiv | equalityForId id = isEquality id fun findEquality n = if n < initTypeId then equalityForId(outerTypeIdEnv n) else case realId(n-initTypeId) of FreeSlot t => equalityForId t | VariableSlot { boundId, ...} => equalityForId boundId | _ => raise InternalError "internalMap: Not bound or Free" val _ : types = pass2 (dec, makeId, Env newEnv, lex, findEquality); (* Replace the constructor list for the datatype with a new set. We need to have separate addresses for the constructors in the datatype environment from those in the value environment. This is needed for compatibility with the "signature" constructed from a struct...end block. *) fun enterFinalType (name, TypeConstrSet(tyCons, constrs)) = #enterType structEnv (name, TypeConstrSet(tyCons, List.map convertValueConstr constrs)) val _ = #apply datatypeList enterFinalType in ! addrs end (* end processSig *); val _ = List.foldl (fn (signat, offset) => processSig (signat, offset, lno)) offset sigsList val locations = [DeclaredAt lno, SequenceNo (newBindingId lex)] in makeSignature("", newTable, ! idCount, locations, typeIdEnv (), []) end (* Process the contents of the signature. *) val resultSig = sigValue (str, Env globalEnv, lno, "") (* After the signature has been built and any sharing or "where type" constraints have been applied we replace the remaining variable stamps by bound stamps. *) val nextAddress = getNextRuntimeOffset resultSig val typeCounter = ref initTypeId; val addrCounter = ref nextAddress (* Construct final bound IDs for each distinct type ID in the array. *) local fun mapIds n = if n = !idCount-initTypeId then ([], []) else ( (* Process lowest numbered IDs first since they represent the result of any sharing. *) case realId n of VariableSlot { boundId = TypeId{ idKind=Bound{eqType, isDatatype, arity, ... }, description = { name, location, description}, ...}, descriptions, ...} => let (* Need to make a new ID. *) (* If we have sharing we want to produce a description that expresses that. *) val descript = case descriptions of descs as _ :: _ :: _ => "sharing " ^ String.concatWith "," descs | _ => description (* Original description. *) val newId = let (* For each ID we need a new entry in the ID vector. We also need an entry in the run-time vector for the structure so that we can pass the equality/print value at run-time. *) val n = !typeCounter val () = typeCounter := n + 1 val addr = ! addrCounter val () = addrCounter := addr + 1 val description = { name = name, location = location, description = descript } in makeBoundId(arity, Formal addr, n, pling eqType, isDatatype, description) end (* Update the entry for any sharing. *) val () = StretchArray.update(mapArray, n, FreeSlot newId) val (distinctIds, mappedIds) = mapIds (n+1) in (newId :: distinctIds, newId :: mappedIds) end | FreeSlot (TypeId{idKind=TypeFn(args, equiv), description, ...}) => let (* Generally, IDs in a FreeSlot will be either Bound or Free but they could be TypeFunctions as a result of a "where type" and the function could involve type IDs within the signature. We have to copy the ID now after all the new IDs have been created. *) fun copyId(TypeId{idKind=Bound { offset, ...}, ...}) = if offset < initTypeId then NONE else (* At this stage we've overwritten all entries with FreeSlots. *) ( case realId(offset-initTypeId) of FreeSlot id => SOME id | _ => raise InternalError "mapIds:copyTypeConstr" ) | copyId _ = NONE val copiedEquiv = copyType(equiv, fn x => x, fn tcon => copyTypeConstr (tcon, copyId, fn x => x, fn s => s)) (* For the moment always use a Free ID here. *) val copiedId = makeTypeFunction(description, (args, copiedEquiv)) (* Update the array with this copied version. If other subsequent type functions use this entry they will then pick up the copied version. Because "where type" constraints can only refer to earlier types we have to process this from earlier to later. *) val () = StretchArray.update(mapArray, n, FreeSlot copiedId) val (distinctIds, mappedIds) = mapIds (n+1) in (distinctIds, copiedId :: mappedIds) end | FreeSlot id => (* Free or shares with existing type ID. *) let val (distinctIds, mappedIds) = mapIds (n+1) in (distinctIds, id :: mappedIds) end | _ => raise InternalError "mapIds" ) val (distinctIds, mappedIds) = mapIds 0 val mapVector = Vector.fromList mappedIds val resVector = Vector.fromList distinctIds in fun mapFunction n = if n < initTypeId then outerTypeIdEnv n else Vector.sub(mapVector, n-initTypeId) val distinctIds = distinctIds val allMapped = Vector.length mapVector = Vector.length resVector end in let val Signatures { tab, name, locations, typeIdMap, ... } = resultSig (* We have allocated Bound Ids starting at initTypeId. If there has not been any sharing or where type constraints these Ids will correspond exactly to the bound Ids of the signature and we can use the result without any further mapping. This is particularly the case if we have simply used a named signature here. If there have been some sharing or where type we have to produce a new map so that the boundId list consists of contiguously numbered items. This is an optimisation to reduce the space of the final signature. *) val finalMap = if allMapped then typeIdMap else composeMaps(typeIdMap, mapFunction) in makeSignature(name, tab, initTypeId, locations, finalMap, distinctIds) end end (* sigVal *); structure Sharing = struct type sigs = sigs type structSigBind = structSigBind type parsetree = parsetree type typeParsetree = typeParsetree type typeVarForm = typeVarForm type pretty = pretty type ptProperties = ptProperties type env = env type signatures = signatures type lexan = lexan type typeId = typeId type specs = specs end end; polyml-5.7.1/mlsource/MLCompiler/COMPILERBODYSIG.sml0000644000175000017500000000560313204034553020607 0ustar daviddavid(* Copyright David C. J. Matthews 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature COMPILERBODYSIG = sig type values; type typeConstrSet; type fixStatus; type structVals; type signatures; type functors; type ptProperties type nameSpace = { lookupVal: string -> values option, lookupType: string -> typeConstrSet option, lookupFix: string -> fixStatus option, lookupStruct: string -> structVals option, lookupSig: string -> signatures option, lookupFunct: string -> functors option, enterVal: string * values -> unit, enterType: string * typeConstrSet -> unit, enterFix: string * fixStatus -> unit, enterStruct: string * structVals -> unit, enterSig: string * signatures -> unit, enterFunct: string * functors -> unit, allVal: unit -> (string*values) list, allType: unit -> (string*typeConstrSet) list, allFix: unit -> (string*fixStatus) list, allStruct: unit -> (string*structVals) list, allSig: unit -> (string*signatures) list, allFunct: unit -> (string*functors) list }; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type exportTree = location * ptProperties list (* The completed compiler. Returns the parse tree and, if successful, a function that executes the compiled code. *) val compiler : nameSpace * (unit->char option) * Universal.universal list -> exportTree option * (unit -> { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string * typeConstrSet) list }) option structure Sharing: sig type values = values and typeConstrSet = typeConstrSet and fixStatus = fixStatus and structVals = structVals and signatures = signatures and functors = functors and ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/Symbols.ML0000644000175000017500000001457413204034553017530 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Lexical symbols for ML compiler. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) structure Symbols : SymbolsSig = struct datatype sys = AbortParse | Ident | AbstypeSy | AndSy | AndalsoSy | AsSy | CaseSy | DatatypeSy | DoSy | ElseSy | EndSy | ExceptionSy | FnSy | FunSy | HandleSy | IfSy | InSy | InfixSy | InfixrSy | LetSy | LocalSy | NonfixSy | OfSy | OpSy | OpenSy | OrelseSy | RaiseSy | RecSy | ThenSy | TypeSy | ValSy | WithSy | WhileSy | LeftParen | RightParen | LeftBrack | RightBrack | Comma | Colon | Semicolon | ThickArrow | VerticalBar | EqualsSign | Underline | TypeIdent | StringConst | IntegerConst | Asterisk | Arrow | RealConst | LeftCurly | RightCurly | ThreeDots | ColonGt | HashSign | StructureSy | SignatureSy | StructSy | SigSy | SharingSy | FunctorSy | WithtypeSy | EqtypeSy | IncludeSy | WhereSy | WordConst | CharConst | Othersy fun repr AbortParse = "\^G" | repr Ident = "" | repr AbstypeSy = "abstype" | repr AndSy = "and" | repr AndalsoSy = "andalso" | repr AsSy = "as" | repr CaseSy = "case" | repr DatatypeSy = "datatype" | repr DoSy = "do" | repr ElseSy = "else" | repr EndSy = "end" | repr ExceptionSy = "exception" | repr FnSy = "fn" | repr FunSy = "fun" | repr HandleSy = "handle" | repr IfSy = "if" | repr InSy = "in" | repr InfixSy = "infix" | repr InfixrSy = "infixr" | repr LetSy = "let" | repr LocalSy = "local" | repr NonfixSy = "nonfix" | repr OfSy = "of" | repr OpSy = "op" | repr OpenSy = "open" | repr OrelseSy = "orelse" | repr RaiseSy = "raise" | repr RecSy = "rec" | repr ThenSy = "then" | repr TypeSy = "type" | repr ValSy = "val" | repr WithSy = "with" | repr WhileSy = "while" | repr LeftParen = "(" | repr RightParen = ")" | repr LeftBrack = "[" | repr RightBrack = "]" | repr Comma = "," | repr Colon = ":" | repr Semicolon = ";" | repr ThickArrow = "=>" | repr VerticalBar = "|" | repr EqualsSign = "=" | repr Underline = "_" | repr TypeIdent = "" | repr StringConst = "" | repr IntegerConst = "" | repr Asterisk = "*" | repr Arrow = "->" | repr RealConst = "" | repr LeftCurly = "{" | repr RightCurly = "}" | repr ThreeDots = "..." | repr ColonGt = ":>" | repr HashSign = "#" | repr StructureSy = "structure" | repr SignatureSy = "signature" | repr StructSy = "struct" | repr SigSy = "sig" | repr SharingSy = "sharing" | repr FunctorSy = "functor" | repr WithtypeSy = "withtype" | repr EqtypeSy = "eqtype" | repr IncludeSy = "include" | repr WhereSy = "where" | repr WordConst = "" | repr CharConst = "" | repr Othersy = "unknown symbol" local open HashTable; val reservedWords = [ AbstypeSy, AndSy, AndalsoSy, AsSy, CaseSy, DatatypeSy, DoSy, ElseSy, EndSy, ExceptionSy, FnSy, FunSy, HandleSy, IfSy, InSy, InfixSy, InfixrSy, LetSy, LocalSy, NonfixSy, OfSy, OpSy, OpenSy, OrelseSy, RaiseSy, RecSy, ThenSy, TypeSy, ValSy, WithSy, WhileSy, StructureSy, SignatureSy, StructSy, SigSy, SharingSy, FunctorSy, WithtypeSy, EqtypeSy, IncludeSy, WhereSy, (* Reserved or special symbols *) Arrow, EqualsSign, ThickArrow, Asterisk, ColonGt, Underline, Colon, VerticalBar, HashSign ] local (* Make table sparse to minimise collisions. *) val table = hashMake (4 * List.length reservedWords); (* Enter each reserved word in the hash table *) val () = List.app (fn n => hashSet (table, repr n, n)) reservedWords in val table = hashFreeze table end in (* Returns the symbol if it is in the table else ident *) fun lookup str = getOpt(hashSub (table, str), Ident); end; end (* Symbols *); polyml-5.7.1/mlsource/MLCompiler/Utilities.ML0000644000175000017500000000162313204034553020042 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Utilities = UTILITIES_ ( structure LEX = Lex ); polyml-5.7.1/mlsource/MLCompiler/ml_bind.ML0000644000175000017500000000230313204034553017467 0ustar daviddavid(* Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Boot = struct structure Address = Address structure Misc = Misc structure HashTable = HashTable structure UniversalTable = UniversalTable structure StretchArray = StretchArray end; structure MLCompiler = struct local (* Force Initialise to be built when using PolyML.make. This builds pretty well everything. *) structure S = Initialise in (* Build Make. *) open Make end end; polyml-5.7.1/mlsource/MLCompiler/LEX_.ML0000644000175000017500000005765313204034553016674 0ustar daviddavid(* Original Poly version: Title: Lexical Analyser. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 ML translation and other changes: Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-7, 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor LEX_ ( structure PRETTY: PRETTYSIG structure SYMBOLS : SymbolsSig structure DEBUG: DEBUGSIG ) : LEXSIG = (*****************************************************************************) (* LEX functor body *) (*****************************************************************************) struct open Misc; open PRETTY; open SYMBOLS; infix 8 eq neq; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type lexan = { stream: unit -> char option, ch: char ref, sy: sys ref, id: string ref, messageOut: { location: location, hard: bool, message: pretty, context: pretty option } -> unit, errors: bool ref, pushedSym: sys ref, extraChars: char list ref, debugParams: Universal.universal list, (* Location information. *) getLineNo: unit -> FixedInt.int, getOffset: unit -> FixedInt.int, fileName: string, startLine: FixedInt.int ref, endLine: FixedInt.int ref, startPosition: FixedInt.int ref, endPosition: FixedInt.int ref, bindingCounter: unit -> FixedInt.int }; (* The lexical analyser reads characters from the stream and updates the references in the lexan structure. That's not perhaps very ML-like but the lexical analyser can be a hot-spot in the compiler unless it's made as fast as possible. *) val eofChar = Char.chr 4; (* ctrl/D *) val isNumeric = Char.isDigit and isAlphabetic = Char.isAlpha and isWhiteSpace = Char.isSpace and isHexadecimal = Char.isHexDigit (* For our purposes we include quote and underscore. *) fun isAlphaNumeric c = Char.isAlphaNum c orelse c = #"'" orelse c = #"_" (* Print error and warning messages. *) val errorMessageProcTag: ({ location: location, hard: bool, message: pretty, context: pretty option } -> unit) Universal.tag = Universal.tag() val isOperator = Char.contains ":=<>+*!^/|&%~-?`@\\$#"; (* The initial state looks like we've just processed a complete ML declaration *) fun initial (stream, parameters) : lexan = let open DEBUG val errorMessageProc = case List.find (Universal.tagIs errorMessageProcTag) parameters of SOME f => Universal.tagProject errorMessageProcTag f | NONE => fn _ => raise Fail "Error in source code" val lineno = getParameter lineNumberTag parameters val offset = getParameter offsetTag parameters val filename = getParameter fileNameTag parameters val initialLine = lineno() (* Before the first char. *) and initialOffset = offset() val bindingCounter = getParameter bindingCounterTag parameters in { stream = stream, ch = ref #" ", (* " " - we've just "clobbered the ";" *) sy = ref Semicolon, (* ";" *) id = ref "", messageOut = errorMessageProc, errors = ref false, pushedSym = ref Othersy, extraChars = ref [], debugParams = parameters, getLineNo = lineno, getOffset = offset, fileName = filename, startLine = ref initialLine, endLine = ref initialLine, startPosition = ref initialOffset, endPosition = ref initialOffset, bindingCounter = bindingCounter } end val nullLex = initial (fn () => NONE, []); (* Error messages *) fun errorOccurred ({errors, ...}: lexan) = ! errors; fun location ({fileName, startLine, endLine, startPosition, endPosition,...}:lexan) = { file = fileName, startLine = !startLine, endLine = !endLine, startPosition = !startPosition, endPosition = !endPosition} fun reportError ({messageOut,errors,...} : lexan) (report as { hard, ...}) = ( (* If this is a hard error we have to set the flag to prevent further passes. *) if hard then errors := true else (); messageOut report ) (* Record the position of the current symbol. This sets the start for the current symbol to the last recorded end and sets the new end to the current position. *) fun setSymbolStart {getLineNo, getOffset, startLine, endLine, startPosition, endPosition, ...} = let val line = getLineNo() and offset = getOffset() in startLine := ! endLine; endLine := line; startPosition := ! endPosition; endPosition := offset end fun setSymbolEnd {getLineNo, getOffset, endLine, endPosition, ...} = let val line = getLineNo() and offset = getOffset() in endLine := line; endPosition := offset end (* Convert a piece of text into a series of words so that the pretty printing can break it into lines. *) fun breakWords str = let val words = String.tokens Char.isSpace str fun addBreaks [] = [PrettyString ""] (* Shouldn't happen *) | addBreaks [last] = [PrettyString last] | addBreaks (hd :: tl) = PrettyString hd :: PrettyBreak(1, 0) :: addBreaks tl in addBreaks words end (* Simple string error messages. *) fun errorMessage (lexan, location, message) = reportError lexan { location = location, message = PrettyBlock(3, false, [], breakWords message), hard = true, context = NONE } and warningMessage (lexan, location, message) = reportError lexan { location = location, message = PrettyBlock(3, false, [], breakWords message), hard = false, (* Just a warning *) context = NONE } (* Errors within the lexer. *) fun lexError(state, text) = ( setSymbolEnd state; errorMessage (state, location state, text) ) exception EndOfLine; (* "ch" contains the next character in the stream. extraChars is a hack that is needed to deal with a number that looks like it might be a real number but actually isn't. *) fun nextCh({ch, stream, extraChars = ref [], ...}) = ch := getOpt(stream(), eofChar) | nextCh({ch, extraChars = extra as ref(c::l), ...}) = (extra := l; ch := c) (* Skip over white space. If we have to skip we record this as the END of the previous symbol. If it turns out that the character is actually the start of a symbol then this will be set as the START by setSymbolStart. *) fun skipWhiteSpace (state as {ch = ref c, ...}:lexan) : char = if isWhiteSpace c then (setSymbolEnd state; nextCh state; skipWhiteSpace state) else c (* Leave string construction until we have all the characters. Since Single character strings are the same as single characters it doesn't cost anything to apply "str" but it allows us to conatenate with any prefix string in one go. *) fun readChars (state as { ch, ... }) (isOk: char -> bool) (s: string) : string = let fun loop (): string list = let val theChar = ! ch; in if isOk theChar then (setSymbolEnd state; nextCh state; str theChar :: loop ()) else [] end; in concat (s :: loop ()) end; (* Read in a number. *) fun parseNumber (hasMinus, state as { sy, id, ch, extraChars, ... }) = ( sy := IntegerConst; (* Copy digits into the buffer. *) id := readChars state isNumeric ""; (* May be the end of an integer, part of a real number, or w for word or x for hex. *) (* Since "0" is a valid integer what follows it is only treated as part of the integer if it is well-formed. If it is not we return the "0" as an integer constant and leave the rest to be returned. In particular that means that 0wxz is the INTEGER constant "0" followed by the identifier "wxz". N.B. ~0w1 is ~0 w1 because word constants cannot begin with ~. *) if not hasMinus andalso !ch = #"w" andalso !id = "0" then (* word constant; if it's well formed. *) ( nextCh state; if !ch = #"x" then ( nextCh state; if isHexadecimal (!ch) then ( sy := WordConst; id := readChars state isHexadecimal "0wx" ) else (extraChars := [#"x", !ch]; ch := #"w") ) else if isNumeric (!ch) then ( sy := WordConst; id := readChars state isNumeric "0w" ) else (extraChars := [!ch]; ch := #"w") ) else if !ch = #"x" andalso !id = "0" then (* Hexadecimal integer constant. *) ( nextCh state; if isHexadecimal (!ch) then id := readChars state isHexadecimal "0x" else (extraChars := [!ch]; ch := #"x") ) else if !ch = #"." orelse !ch = #"E" orelse !ch = #"e" (* "e" is allowed in ML97 *) then (* possible real constant. *) ( if !ch = #"." then ( sy := RealConst; (* Add the "." to the string. *) id := !id ^ "."; nextCh state; (* Must be followed by at least one digit. *) if not (isNumeric (!ch)) then lexError(state, "malformed real number: " ^ !id ^ str(!ch)) else id := readChars state isNumeric (!id) ) else (); (* There's a nasty here. We may actually have 1e~; which should (probably) be treated as 1 e ~ ; That means that if after we've read the e and possible ~ we find that the next character is not a digit we return the number read so far and leave the e, ~ and whatever character we found to be read next time. *) if !ch = #"E" orelse !ch = #"e" then let val eChar = !ch in nextCh state; (* May be followed by a ~ *) (* If it's followed by a digit we have an exponent otherwise we have a number followed by a identifier. In that case we have to leave the identifier until the next time we're called. *) if !ch = #"~" then ( nextCh state; if isNumeric(!ch) then (sy := RealConst; id := readChars state isNumeric (!id ^ "E~")) else (extraChars := [#"~", !ch]; ch := eChar) ) else ( if isNumeric(!ch) then (sy := RealConst; id := readChars state isNumeric (!id ^ "E")) else (extraChars := [!ch]; ch := eChar) ) end else () ) else () ); fun parseString (state as { ch, id, ... }) = let (* The original version of this simply concatenated the characters onto "id". For very long strings that's expensive since each concatenation copies the existing string, resulting in quadratic performance. This version creates a list and then implodes it. DCJM 24/5/02. *) fun getString (soFar: char list) = ( case !ch of #"\"" (* double-quote. *) => (* Finished - return result. *) (setSymbolEnd state; nextCh state; soFar) | #"\n" => (setSymbolEnd state; nextCh state; raise EndOfLine) | #"\\" => (* Escape *) let val _ = nextCh state; (* Skip the escape char. *) val next = !ch; (* Look at the next char. *) val _ = nextCh state; in (* Remove \f...\ sequences but otherwise leave the string as it is. Escape sequences are processed in the conversion function. In particular we can only decide whether \uxxxx is valid when we know whether we are converting to Ascii or Unicode. *) if isWhiteSpace next then ( if skipWhiteSpace state = #"\\" then () else ( lexError(state, "unexpected character " ^ String.toString (str (!ch)) ^" in \\ ... \\"); while !ch <> #"\\" andalso !ch <> #"\"" andalso !ch <> eofChar do nextCh state ); nextCh state; getString soFar ) else if next = #"^" (* \^c escape sequence for Control+c *) then let val next2 = !ch; val _ = nextCh state; in getString (next2 :: #"^" :: #"\\" :: soFar) end else getString (next :: #"\\" :: soFar) end | ch => (* Anything else *) ( nextCh state; if ch = eofChar then raise EndOfLine else if Char.isPrint ch (* Ok if it's printable. *) then getString (ch :: soFar) else (* Report unprintable characters. *) ( lexError(state, "unprintable character " ^ Char.toString ch ^ " found in string"); getString soFar ) ) ) in nextCh state; (* Skip the opening quote. *) id := String.implode(List.rev(getString [])) handle EndOfLine => lexError(state, "no matching quote found on this line") end (* parseString *) (* parseComment deals with nested comments. Returns with !ch containing the first character AFTER the comment. *) fun parseComment (state as { stream, ch, ... }) = let (* skipComment is called after we've already seen the "(" and "*", and returns the first chararacter AFTER the comment. *) fun skipComment () : char = let (* Returns the first chararacter AFTER the comment *) fun skipCommentBody (firstCh : char) : char = if firstCh = eofChar then ( setSymbolEnd state; lexError(state, "end of file found in comment"); firstCh ) else case (firstCh, getOpt(stream (), eofChar)) of (#"*", #")") => getOpt(stream (), eofChar) (* End of comment - return next ch. *) | (#"(", #"*") => skipCommentBody (skipComment ()) (* Nested comment. *) | (_, nextCh) => skipCommentBody nextCh in skipCommentBody (getOpt(stream (), eofChar)) (* Skip the initial "*" *) end; (* skipComment *) in ch := skipComment () end (* parseComment *); (* Sets "id" and "sy" if an identifier is read. Looks up a word to see if it is reserved. *) fun parseIdent (state as { ch, id, sy, ... }) charsetTest first (* any characters read so far *) = let val idVal = readChars state charsetTest first; in (* Qualified names may involve fields of different lexical form e.g. A.B.+ *) if !ch = #"." (* May be qualified *) then let val () = nextCh state; val c = !ch; in if isAlphabetic c then parseIdent state isAlphaNumeric (idVal ^ ".") else if isOperator c then parseIdent state isOperator (idVal ^ ".") else lexError(state, "invalid identifier - "^ idVal ^ "." ^ str c) end else ( id := idVal; sy := (if 0 < size idVal andalso String.str(String.sub(idVal, 0)) = "'" then TypeIdent else lookup idVal) ) end; (* parseIdent *) (* Main lexical analyser loop. *) fun parseToken (state as { ch, id, sy, ... }) = let val nextSym = skipWhiteSpace state (* remove leading spaces *) in setSymbolStart state; (* Set the start to the previous end and the end to after this. *) case nextSym of #"~" => (* Either an operator or part of a number. *) ( nextCh state;(* get next character *) if isNumeric (!ch) then ( (* Read the number and sets sy to integerConst. *) parseNumber(true, state); (* Prepend the "~" to the num *) id := "~" ^ !id ) else (* Part of an operator. *) parseIdent state isOperator "~" ) | #"#" =>(* Either an operator, which include a field selection or a character constant. N.B. It is not absolutely clear whether any separator is allowed between # and the following string constant. Assume that it isn't for the moment. *) ( nextCh state;(* get next character *) if !ch = #"\"" then (parseString state; sy := CharConst) else (* Part of an operator. *) parseIdent state isOperator "#" ) | #"\"" (* double quote. *) => (parseString state; sy := StringConst) | #";" => ( sy := Semicolon; (* This is a special case. If this is the final semicolon in the top-dec we mustn't read the next character because that will be put into "ch" field of this lex object and will then be discarded. Instead we clobber this with a space so that the normal space-skipping case will apply. *) ch := #" " ) | #"," => (sy := Comma; nextCh state) | #"(" => ( nextCh state; if !ch <> #"*" then sy := LeftParen else parseComment state ) | #")" => (sy := RightParen; nextCh state) | #"[" => (sy := LeftBrack; nextCh state) | #"]" => (sy := RightBrack; nextCh state) | #"_" => (sy := Underline; nextCh state) | #"{" => (sy := LeftCurly; nextCh state) | #"}" => (sy := RightCurly; nextCh state) | #"." => (* "..." *) ( nextCh state; if !ch <> #"." then lexError(state, "unknown symbol ." ^ str(!ch)) else ( setSymbolEnd state; nextCh state; if !ch <> #"." then lexError(state, "unknown symbol .." ^ str(!ch)) else (sy := ThreeDots; setSymbolEnd state; nextCh state) ) ) | firstCh => (* These can't be so easily incorporated into a "case". *) if firstCh = eofChar then sy := AbortParse else if isNumeric firstCh then parseNumber(false, state) else if isAlphabetic firstCh orelse firstCh = #"'" then parseIdent state isAlphaNumeric "" else if isOperator firstCh (* excludes ~ which has already been done *) then parseIdent state isOperator "" else let (* illegal character *) val printableFirstCh = Char.toString firstCh in (* Report the character. *) lexError(state, "unknown character \"" ^ printableFirstCh ^ "\""); nextCh state end; (* Read another token if this wasn't recognised. *) if (!sy = Othersy) then parseToken state else () end; (* parseToken *) (* Insymbol - exported interface to lexical analyser. *) fun insymbol (state as {sy,pushedSym,...}:lexan) = if ! pushedSym <> Othersy then pushedSym := Othersy (* pushedSym is a hack to handle the difficulty of parsing val ('a, 'b) f = ... compared with val (a, b) = ... and the similar fun declarations. It's also used to handle where type t = int and type ... compared with where type t = int and S = sig ...*) else ( if ! sy = AbortParse (* already end-of-file? *) then ( setSymbolStart state; lexError(state, "unexpected end of file encountered"); raise InternalError "end of file" ) else (); sy := Othersy; (* default - anything unrecognisable *) parseToken state ); (* insymbol *) fun pushBackSymbol ({pushedSym,...}:lexan, sym) = (* TODO: This does not restore the location so parses such as val () = ... get the wrong location for the opening parenthesis. *) if !pushedSym <> Othersy then raise InternalError "Attempt to push two parentheses" else pushedSym := sym (* exported version of sy and id. *) fun sy ({sy=ref sy, pushedSym = ref pushed, ...}:lexan) = if pushed <> Othersy then pushed else sy; fun id ({id=ref id,...}:lexan) = id; val debugParams = #debugParams fun newBindingId({bindingCounter, ...}: lexan) = bindingCounter() val nullLocation: location = { file="", startLine=0, startPosition=0, endLine=0, endPosition=0 } (* Construct the location that includes all the locations in the list. Used to combine the locations of individual lexical units into a location for a larger syntactic unit. *) fun locSpan ({ file, startLine, startPosition, ... }: location, { endLine, endPosition, ... }: location) = { file=file, startLine=startLine, startPosition=startPosition, endLine=endLine, endPosition=endPosition } fun errorDepth{debugParams, ...} = DEBUG.getParameter DEBUG.errorDepthTag debugParams structure Sharing = struct type pretty = pretty and lexan = lexan and sys = sys end end (* LEX functor body *); polyml-5.7.1/mlsource/MLCompiler/ParseType.ML0000644000175000017500000000212413204034553020000 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ParseType = PARSE_TYPE ( structure LEX = Lex structure SYMSET = SymSet structure SKIPS = Skips structure TYPETREE = TypeTree structure SYMBOLS = Symbols structure UTILITIES = Utilities ) ; polyml-5.7.1/mlsource/MLCompiler/CompilerBody.ML0000644000175000017500000000264513204034553020464 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Make the ML system. Author: Mike Crawley Copyright AHL 1993 *) structure CompilerBody = COMPILER_BODY ( structure SYMBOLS = Symbols structure SYMSET = SymSet structure LEX = Lex structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure STRUCTURES = Structures structure PARSEDEC = ParseDec structure DEBUG = Debug structure UTILITIES = Utilities structure MISC = Misc structure PRETTY = Pretty structure EXPORTTREE = ExportTreeStruct ) ; polyml-5.7.1/mlsource/MLCompiler/PARSETREESIG.sml0000644000175000017500000001747113204034553020257 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-9, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature PARSETREESIG = sig type types; type infixity; type lexan; type pretty; type typeId; type typeVarMap type codetree; type env; type typeConstrs; type typeVarForm type values; type structVals; type environEntry; type structureIdentForm; type typeParsetree type funpattern type codeBinding type level type valueConstr type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type ptProperties type exportTree = location * ptProperties list type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} type typeIdDescription = { location: location, name: string, description: string } (* An identifier is just a name. In the second pass it is associated with a particular declaration and the type is assigned into the type field. The type of this identifier is needed to deal with overloaded operators. If we have an occurence of ``='', say, the type of the value will be 'a * 'a -> bool but the type of a particular occurence, i.e. the type of the identifier must be int * int -> bool, say, after all the unification has been done. *) type parsetree and valbind and fvalbind and fvalclause and typebind and datatypebind and exbind and labelRecEntry and matchtree; val isIdent : parsetree -> bool; val mkIdent : string * location -> parsetree; val mkString : string * location -> parsetree; val mkInt : string * location -> parsetree; val mkReal : string * location -> parsetree; val mkChar : string * location -> parsetree; val mkWord : string * location -> parsetree; val mkApplic : parsetree * parsetree * location * bool -> parsetree; val mkCond : parsetree * parsetree * parsetree * location -> parsetree; val mkTupleTree : parsetree list * location -> parsetree; val mkValDeclaration : valbind list * { lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit } * { lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit } * location -> parsetree; val mkFunDeclaration : fvalbind list * { lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit } * { lookup: string -> typeVarForm option, apply: (string * typeVarForm -> unit) -> unit } * location -> parsetree; val mkOpenTree : structureIdentForm list * location -> parsetree; val mkStructureIdent : string * location -> structureIdentForm; val mkValBinding : parsetree * parsetree * bool * location -> valbind; val mkClausal : fvalclause list * location -> fvalbind; val mkClause : funpattern * parsetree * location -> fvalclause; val mkFunPattern: parsetree * lexan -> funpattern * string * int val mkList : parsetree list * location -> parsetree; val mkConstraint : parsetree * typeParsetree * location -> parsetree; val mkLayered : parsetree * parsetree * location -> parsetree; val mkFn : matchtree list * location -> parsetree; val mkMatchTree : parsetree * parsetree * location -> matchtree; val mkLocalDeclaration : parsetree list * parsetree list * location * bool -> parsetree; val mkTypeDeclaration : typebind list * location -> parsetree; val mkDatatypeDeclaration : datatypebind list * typebind list * location -> parsetree; val mkDatatypeReplication : { newType: string, oldType: string, newLoc: location, oldLoc: location, location: location } -> parsetree; val mkAbstypeDeclaration : datatypebind list * typebind list * parsetree list * location -> parsetree; val mkTypeBinding : string * typeVarForm list * typeParsetree option * bool * location * location -> typebind; val mkDatatypeBinding : string * typeVarForm list * valueConstr list * location * location -> datatypebind val mkValueConstr : string * typeParsetree option * location -> valueConstr val mkExBinding : string * parsetree * typeParsetree option * location * location -> exbind; val mkLabelledTree : labelRecEntry list * bool * location -> parsetree; val mkLabelRecEntry: string * location * parsetree * location -> labelRecEntry val mkSelector : string * location -> parsetree; val mkRaise : parsetree * location -> parsetree; val mkHandleTree : parsetree * matchtree list * location * location -> parsetree; val mkWhile : parsetree * parsetree * location -> parsetree; val mkCase : parsetree * matchtree list * location * location -> parsetree; val mkAndalso : parsetree * parsetree * location -> parsetree; val mkOrelse : parsetree * parsetree * location -> parsetree; val mkDirective : string list * infixity * location -> parsetree; val mkExpseq : parsetree list * location -> parsetree; val mkExDeclaration : exbind list * location -> parsetree; val mkParenthesised: parsetree * location -> parsetree val unit : location -> parsetree; val wildCard : location -> parsetree; val emptyTree : parsetree; val pass2: parsetree * (bool * bool * (typeVarForm list * types) * typeIdDescription -> typeId) * env * lexan * (int -> bool) -> types val setLeastGeneralTypes: parsetree * lexan -> unit (* Inherited from PrintAndExportParsetree *) val displayParsetree: parsetree * FixedInt.int -> pretty; val getExportTree: navigation * parsetree -> exportTree (* Inherited from CodegenParsetree *) type debuggerStatus val gencode: parsetree * lexan * debuggerStatus * level * (int->int) * typeVarMap * string * (codeBinding list * debuggerStatus * typeVarMap -> codeBinding list * debuggerStatus) -> codeBinding list * debuggerStatus (* Types that can be shared. *) structure Sharing: sig type lexan = lexan and pretty = pretty and environEntry = environEntry and codetree = codetree and codeBinding = codeBinding and types = types and values = values and typeId = typeId and structVals = structVals and typeConstrs= typeConstrs and typeVarForm=typeVarForm and env = env and infixity = infixity and structureIdentForm = structureIdentForm and typeParsetree = typeParsetree and parsetree = parsetree and valbind = valbind and fvalbind = fvalbind and fvalclause = fvalclause and typebind = typebind and datatypebind=datatypebind and exbind = exbind and labelRecEntry=labelRecEntry and ptProperties = ptProperties and matchtree = matchtree and typeVarMap = typeVarMap and level = level and debuggerStatus = debuggerStatus end end (* PARSETREE export signature *); polyml-5.7.1/mlsource/MLCompiler/Make.ML0000644000175000017500000000217713204034553016751 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Make = MAKE_ ( structure STRUCTVALS = StructVals; structure LEX = Lex; structure COMPILERBODY = CompilerBody; structure MISC = Misc; structure UNIVERSALTABLE = UniversalTable structure DEBUG = Debug structure PRETTY = Pretty structure VERSION = CompilerVersion ); polyml-5.7.1/mlsource/MLCompiler/ValueOps.ML0000644000175000017500000000265313204034553017631 0ustar daviddavid(* Copyright (c) 2000, 2009 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ValueOps = VALUE_OPS ( structure LEX = Lex structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure TYPESTRUCT = TypeTree structure PRINTTABLE = PrintTable structure UNIVERSALTABLE = UniversalTable structure DEBUG = Debug structure ADDRESS = Address structure MISC = Misc structure PRETTY = Pretty structure UNIVERSAL = Universal structure UTILITIES = Utilities structure COPIER = CopierStruct structure TYPEIDCODE = TypeIDCodeStruct structure DATATYPEREP = DatatypeRep ) ; polyml-5.7.1/mlsource/MLCompiler/Misc.ML0000644000175000017500000000763013204034553016766 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Misc : (*****************************************************************************) (* Misc exports signature *) (*****************************************************************************) sig (* standard exceptions used by the compiler *) exception Interrupt; (* These are handled in the compiler *) exception Conversion of string; (* string to int conversion failure *) (* This isn't handled at all (except generically) *) exception InternalError of string; (* compiler error *) val quickSort : ('a -> 'a -> bool) -> 'a list -> 'a list val unescapeString : string -> string val lookupDefault : ('a -> 'b option) -> ('a -> 'b option) -> 'a -> 'b option end = (*****************************************************************************) (* Misc structure body *) (*****************************************************************************) struct exception Interrupt = SML90.Interrupt; (* These are handled in the compiler *) (* Conversion may be also raised by run-time Conversion routines *) exception Conversion = RunCall.Conversion (* This isn't handled at all (except generically) *) exception InternalError of string; (* compiler error *) (* Simple definition of quicksort. This is fairly efficient on time but is very bad for memory allocation and is only suitable for small cases. The call to List.partition builds O(N.log N) cells, if the list is random or O(N.N) if it is already sorted. It has been improved from the original which used append (@) to build the sorted list which added a second O(N.N) phase. *) fun quickSort (leq: 'a -> 'a -> bool) (l: 'a list) = let fun qs ([], tail) = tail | qs ([h], tail) = h :: tail | qs (h::t, tail) = let val (after, befor) = List.partition (leq h) t in qs(befor, h :: qs(after, tail)) end in qs(l, []) end (* Convert a string, recognising and converting escape codes. This is installed as the initial string conversion function and replaced when the String structure is compiled. We can't use fromString because it stops on invalid input and returns as much as it can rather than raising an exception. *) fun unescapeString(s: string) : string = let val len = size s fun rdr i = if i = len then NONE else SOME(String.sub(s, i), i+1) (* Repeatedly convert escape sequences and accumulate the results in a list. *) fun convChars i = if i = len then [] (* Finished *) else case Char.scan rdr i of NONE => (* Bad conversion *) raise Conversion "Invalid string constant" | SOME(res, j) => res :: convChars j in String.implode(convChars 0) end fun lookupDefault first second = (fn key => case first key of NONE => second key | v => v); end (* Misc *); polyml-5.7.1/mlsource/MLCompiler/PrintTable.ML0000644000175000017500000000175113204034553020135 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure PrintTable = PRINT_TABLE ( structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure PRETTY = Pretty ); polyml-5.7.1/mlsource/MLCompiler/SKIPS_.ML0000644000175000017500000001214613204034553017121 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Auxiliary Parsing Functions. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor SKIPS_ ( structure SYMBOLS : SymbolsSig structure LEX : LEXSIG structure SYMSET : SymsetSig sharing type SYMBOLS.sys = LEX.sys = SYMSET.sys ) : (*****************************************************************************) (* SKIPS export signature *) (*****************************************************************************) sig type sys; type lexan; type symset; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val notfound: string * lexan -> unit; val badsyms: sys * lexan -> unit; val getsym: sys * lexan -> unit; val skipon: symset * symset * string * lexan -> unit; val getid: symset * symset * lexan -> string * location; val getLabel: symset * lexan -> string * location; val getList: sys * symset * lexan * (unit -> 'a * location) -> 'a list * location; end = (*****************************************************************************) (* SKIPS functor body *) (*****************************************************************************) struct infix 5 inside; infix 6 ++; open SYMBOLS LEX SYMSET; local (* Result is in ``id'' *) val idSys = ident ++ typeIdent ++ integerConst ++ realConst; in (* Try to recreate the original lexical item. *) fun notfound (expected, lex) = let val found = if sy lex = SYMBOLS.StringConst then "\"" ^ id lex ^ "\"" else if sy lex inside idSys then id lex else repr (sy lex) in errorMessage (lex, location lex, expected ^ " expected but " ^ found ^ " was found") end; end; fun badsyms (sym, lex) = (notfound (repr sym, lex); insymbol lex); fun getsym (sym, lex) = if (sy lex) = sym then insymbol lex else notfound (repr sym, lex); infix 5 notin; fun a notin b = not (a inside b); (* used at the end of a syntactic unit to check that the current symbol is a suitable terminator *) fun skipon (a, b, errmss, lex) = if (sy lex) notin a then ( notfound (errmss, lex); while sy lex notin (a ++ b) do insymbol lex ) else (); (* returns an identifier *) fun getid (syms, fsys, lex) = if (sy lex) inside syms then let val iden = id lex val loc = location lex in insymbol lex; (iden, loc) end else ( notfound ("Identifier", lex); while sy lex notin fsys do insymbol lex; ("", nullLocation) ); (* Read a label and check that it is valid if numeric. *) fun getLabel (fsys, lex) = if (sy lex) = SYMBOLS.IntegerConst then let val iden = id lex; val loc = location lex val firstCh = String.str(String.sub(iden, 0)); in insymbol lex; if firstCh = "~" orelse firstCh = "0" then errorMessage (lex, location lex, "Labels must be 1,2,3,....") else (); (iden, loc) end else getid (declarableVarSys, fsys, lex); (* Tests for a symbol and removes it if it is there. startsys is the set of symbols which can start each element. *) fun testfor (sym, startsys, lex) = (* repeat if the separator or a starting sym is found *) if sy lex = sym then (insymbol lex; true) else if sy lex inside startsys then (badsyms (sym, lex); true) else false; fun getList (separator, startsys, lex, each) = let val startLoc = location lex fun forList list = let val (item, itemLoc) = each() in (* Add each item to the list. The final span is from the start to the final location. Make the list and then reverse it. That's avoids quadratic performance on long lists. *) if testfor (separator, startsys, lex) then forList(item :: list) else (List.rev(item :: list), locSpan(startLoc, itemLoc)) end in forList [] end; end (* SKIPS *); polyml-5.7.1/mlsource/MLCompiler/UniversalTable.ML0000644000175000017500000000632713204034553021015 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure UniversalTable : sig type universal; type 'a tag; type univTable; val makeUnivTable: unit -> univTable; val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; val univDelete: univTable * 'a tag * string -> unit; val fold: (string * universal * 'a -> 'a) -> 'a -> univTable -> 'a val app: (string * universal -> unit) -> univTable -> unit val univFold: univTable * (string * universal * 'a -> 'a) * 'a -> 'a (* Freeze a mutable table so it is immutable. *) val univFreeze: univTable -> univTable end = struct open Misc; open HashTable; open Universal; type universal = universal datatype univTable = Table of universal list hash fun makeUnivTable() = Table (hashMake 10); (* Choose a number. *) fun univLookup (Table tab, t:'a tag, name:string) : 'a option = let fun search [] = NONE | search (H::T) = if tagIs t H then SOME (tagProject t H) else search T; in case hashSub (tab, name) of NONE => NONE | SOME t => search t end fun univEnter (Table tab, t:'a tag, name:string, v:'a) : unit = let val u = tagInject t v; (* If there is already an entry we add it to the list, otherwise we start a new list. *) fun search [] = [u] | search (H::T) = if tagIs t H then u :: T else H :: search T; val newList = case hashSub (tab, name) of SOME v => search v | NONE => [u] in hashSet (tab, name, newList) end; fun univDelete (Table tab, t:'a tag, name:string) : unit = let fun search [] = [] | search (H::T) = if tagIs t H then T else H :: search T; in case hashSub (tab, name) of SOME l => hashSet (tab, name, search l) | NONE => () end; fun fold f acc (Table table) = let fun foldHashEntry (s, l, acc) = List.foldl (fn (c, a) => f (s, c, a)) acc l in HashTable.fold foldHashEntry acc table end fun app f = fold (fn (s, c, ()) => f (s, c)) () (* Backwards compatibility. *) fun univFold (t, f, acc) = fold f acc t fun univFreeze (Table h) = Table(hashFreeze h) end (* UniversalTable *); polyml-5.7.1/mlsource/MLCompiler/Pretty.sml0000644000175000017500000003274013204034553017645 0ustar daviddavid(* Copyright (c) 2009 David C.J. Matthews 2008, 2013, 2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Pretty:> PRETTYSIG = struct (* abstype context = AbsContextLocation of { file: string, startLine: int, startPosition: int, endLine: int, endPosition: int } | AbsContextProperty of string * string (* User property. *) and pretty = AbsPrettyBlock of int * bool * context list * pretty list | AbsPrettyBreak of int * int | AbsPrettyString of string | AbsPrettyStringAndWidth of string * int | AbsPrettyLineBreak with val ContextLocation = AbsContextLocation and ContextProperty = AbsContextProperty val PrettyBlock = AbsPrettyBlock and PrettyBreak = AbsPrettyBreak and PrettyString = AbsPrettyString fun isPrettyBlock(AbsPrettyBlock _) = true | isPrettyBlock _ = false and isPrettyBreak(AbsPrettyBreak _) = true | isPrettyBreak _ = false and isPrettyString(AbsPrettyString _) = true | isPrettyString _ = false fun projPrettyBlock(AbsPrettyBlock b) = b | projPrettyBlock _ = raise Match and projPrettyBreak(AbsPrettyBreak b) = b | projPrettyBreak _ = raise Match and projPrettyString(AbsPrettyString b) = b | projPrettyString _ = raise Match end;*) (* This is complicated because the data structures we use here will be exported into the code produced by the compiler. We can't assume that the same representations will be used by this version of the compiler as are used by the compiler that is compiling this code. We use an explicit representation here which must be kept in synch with the representation used in DATATYPE_REP.ML *) local open Address fun cast p = toAddress(toMachineWord p) in type context = address type loc = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } (* Because the argument tuple has more than 4 fields the address is used rather than copying the fields. *) fun ContextLocation(p: loc): context = cast(0w0, p) and ContextProperty(s1: string, s2: string): context = cast(0w1, s1, s2) end local open Address fun cast p = toAddress(toMachineWord p) in type pretty = address val tagPrettyBlock = 0w0 and tagPrettyBreak = 0w1 (*and tagPrettyLineBreak = 0w2*) (* Not used in the compiler. *) and tagPrettyString = 0w3 (*and tagPrettyStringWithWidth = 0w4*) (* Not used in the compiler. *) val maxPrettyTag = 0w4 (* Exported because it is used in TagTest. *) fun PrettyBlock(offset: FixedInt.int, consistent: bool, context: context list, items: pretty list): pretty = cast(tagPrettyBlock, offset, consistent, context, items) and PrettyBreak(breaks: FixedInt.int, offset: FixedInt.int): pretty = cast(tagPrettyBreak, breaks, offset) and PrettyString(s: string): pretty = cast(tagPrettyString, s) fun isPrettyBlock p = toShort(loadWord(p, 0w0)) = tagPrettyBlock and isPrettyBreak p = toShort(loadWord(p, 0w0)) = tagPrettyBreak and isPrettyString p = toShort(loadWord(p, 0w0)) = tagPrettyString fun projPrettyBlock p = if isPrettyBlock p then let val (_: int, offset: int, consistent: bool, context: context list, items: pretty list) = RunCall.unsafeCast p in (offset, consistent, context, items) end else raise Match and projPrettyBreak p = if isPrettyBreak p then let val (_: int, breaks: int, offset: int) = RunCall.unsafeCast p in (breaks, offset) end else raise Match and projPrettyString p = if isPrettyString p then let val (_: int, s: string) = RunCall.unsafeCast p in s end else raise Match end fun uglyPrint p = if isPrettyBlock p then String.concat(map uglyPrint(#4 (projPrettyBlock p))) else if isPrettyBreak p then String.implode(List.tabulate(#1 (projPrettyBreak p), fn _ => #" ")) else projPrettyString p (* Pretty printer copied directly from basis/PrettyPrinter. We can't use the same code because the "pretty" type is not the same. *) fun prettyPrint (stream : string -> unit, lineWidth : int) (pretty: pretty): unit = let fun printBlanks n = if n > 0 then (stream " "; printBlanks(n-1)) else () (* Find out whether the block fits and return the space left if it does. Terminates with NONE as soon as it finds the line doesn't fit. *) fun getSize(p, spaceLeft) = if isPrettyBlock p then let val (_, _, _, entries) = projPrettyBlock p in List.foldl(fn (p, SOME s) => getSize(p, s) | (_, NONE) => NONE) (SOME spaceLeft) entries end else if isPrettyBreak p then let val (blanks, _) = projPrettyBreak p in if blanks <= spaceLeft then SOME(spaceLeft-blanks) else NONE end else let val size = String.size (projPrettyString p) in if size <= spaceLeft then SOME(spaceLeft-size) else NONE end (* Lay out the block and return the space that is left after the line has been printed. *) fun layOut (p, indent, spaceLeft) = if isPrettyBlock p then let val (blockOffset, consistent, _, entries) = projPrettyBlock p val blockIndent = indent+blockOffset in case getSize(p, spaceLeft) of SOME s => (* Fits *) ( (* Lay out the contents. This will not need to break. *) List.foldl(fn(p, space) => layOut(p, blockIndent, space)) spaceLeft entries; s ) | NONE => (* Doesn't fit - break line somewhere. *) let (* Lay out this block, breaking where necessary. *) fun doPrint([], left) = (* Finished: return what's left. *) left | doPrint(hd :: rest, left) = if isPrettyBreak hd then if null rest then left (* Ignore trailing breaks. *) else let val (blanks, breakOffset) = projPrettyBreak hd (* Compute the space of the next item(s) up to the end or the next space. Since we only break at spaces if there are Blocks or Strings without spaces between we need to know the total size. *) fun getsp([], left) = SOME left | getsp(next::rest, left) = if isPrettyBreak next then SOME left else case getSize(next, left) of NONE => NONE | SOME sp => getsp(rest, sp) in if consistent orelse left <= blanks orelse not(isSome(getsp(rest, left-blanks))) then (* Either a consistent break or the next item won't fit. *) ( stream "\n"; printBlanks(blockIndent+breakOffset); doPrint(rest, lineWidth-blockIndent-breakOffset) ) else (* We don't need to break here. *) ( printBlanks blanks; doPrint(rest, left-blanks) ) end else if isPrettyString hd then let val s = projPrettyString hd in stream s; doPrint(rest, left-size s) end else (* Block *) doPrint(rest, layOut(hd, blockIndent, left)) val onLine = doPrint(entries, spaceLeft); in onLine end end else if isPrettyBreak p then let val (blanks, _) = projPrettyBreak p in printBlanks blanks; Int.max(spaceLeft-blanks, 0) end else let val st = projPrettyString p in stream st; Int.max(spaceLeft-String.size st, 0) end in if layOut(pretty, 0, lineWidth) <> lineWidth then stream "\n" (* End the line unless we haven't written anything. *) else () end local open Universal in (* Tag for pretty printed out from PolyML.print. *) val printOutputTag : (pretty -> unit) tag = tag() (* Compiler output. Used for timing information and compiler debug output. *) and compilerOutputTag: (pretty->unit) tag = tag() end local open Universal fun getTag (t: (pretty -> unit) tag) (tagList: universal list) : pretty -> unit = case List.find (tagIs t) tagList of SOME a => tagProject t a | NONE => fn _ => () (* Use the default *) in val getPrintOutput = getTag printOutputTag and getCompilerOutput = getTag compilerOutputTag (* The low-level code-generators print strings a bit at a time and separate the lines with new-line characters. This provides a simple string printer for backwards compatibility. It has now been extended with explicit tab stops. By default tabs are inserted every eight characters. *) fun getSimplePrinter(parameters, tabStops) = let val compilerOut: pretty -> unit = getTag compilerOutputTag parameters val buff = ref "" fun printStream (s: string) = let (* If there's a newline split there. *) val (a, b) = Substring.splitl(fn #"\n" => false | _ => true) (Substring.full(!buff ^ s)) in if Substring.size b = 0 (* No newline. *) then buff := Substring.string a else let val str = Substring.string a (* Split at the tabs. *) val fields = String.fields (fn #"\t" => true | _ => false) str fun nSpaces n = if n <= 0 then "" else CharVector.tabulate(n, fn _ => #" ") fun rebuild(f::l, tabs) = let fun findTab(length, []) = (8 - Int.rem(length, 8), []) | findTab(length, tab::tabs) = if length >= tab then let val (t, ts) = findTab(length-tab, tabs) in (t+length, ts) end else (tab-length, tabs) val (spaces, nextTab) = findTab(size f, tabs) in f :: nSpaces spaces :: rebuild(l, nextTab) end | rebuild([], _) = [] in compilerOut(PrettyString(String.concat(rebuild(fields, tabStops)))); buff := ""; printStream(Substring.string(Substring.slice(b, 1, NONE))) end end in printStream end end (* Types that can be shared. *) structure Sharing = struct type pretty = pretty and context = context end end; polyml-5.7.1/mlsource/MLCompiler/UTILITIES_.ML0000644000175000017500000001477013204034553017610 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Various Utilities. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1988 *) functor UTILITIES_ ( (*****************************************************************************) (* LEX *) (*****************************************************************************) structure LEX : LEXSIG ) : (*****************************************************************************) (* UTILITIES export signature *) (*****************************************************************************) sig type lexan; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option}; val checkForDots: string * lexan * location -> unit; val mapTable: ('a * 'a -> bool) -> {enter: 'a * 'b -> unit, lookup: 'a -> 'b option}; val splitString: string -> { first:string,second:string } structure Sharing: sig type lexan = lexan end end (* UTILITIES export signature *) = (*****************************************************************************) (* UTILITIES functor body *) (*****************************************************************************) struct open LEX; (* A search list in which an identifier may only be entered once. Entering it a second time gives an error message (""fail"" is called) *) fun noDuplicates fail = let val variable = ref ([]); (* Works down the list from the first declaration to the last, applying a function to each element. *) fun apply f = let fun appl [] = () | appl ((name,value)::T) = (appl T; f (name, value)) in appl (!variable) end; (* Add entry to the list if it is not already there. If it is then call 'fail'. *) fun enter (name : string, value) = let fun look [] = variable := (name,value) :: !variable | look ((n,old)::T) = if n = name then fail(name, old, value) else look T; in look (!variable) end; (* Look up name *) fun lookup (name : string) = let fun look [] = NONE | look ((n,v)::T) = if n = name then SOME v else look T; in look (!variable) end; in { apply = apply, enter = enter, lookup = lookup } end; fun searchList () = let val variable = ref []; (* Works down the list from the first declaration to the last, applying a function to each element. *) fun apply f = let fun appl [] = () | appl ((name,value)::T) = (appl T; f (name, value)) in appl (!variable) end (* apply *); (* Add to list. *) fun enter (name : string, value) = variable := (name,value) :: !variable; (* Look up name *) fun lookup (name : string) = let fun look [] = NONE | look ((n,v)::T) = if n = name then SOME v else look T; in look (!variable) end; in { apply = apply, enter = enter, lookup = lookup } end; (* searchList *) fun checkForDots (name, lex, location) = let fun check i = if i > size name then () else if String.str(String.sub(name, i-1)) = "." then errorMessage (lex, location, "qualified name " ^ name ^ " illegal here") else check (i + 1) in check 1 end; (* Creates a table which will match values of one type and return corresponding results. *) fun mapTable (same : 'a * 'a -> bool) : {enter: 'a * 'b -> unit, lookup: 'a -> 'b option} = let val table : ('a * 'b) list ref = ref []; (* Don't allow duplicate keys in the list! *) local fun member (_, [] : ('a * 'b) list) = false | member (x, h::t) = same (#1 h, x) orelse member (x, t); fun delete (_, [] : ('a * 'b) list) = [] | delete (x, h::t) = if same (#1 h, x) then t else h :: delete (x, t); in fun enter (entry as (a: 'a, _: 'b)) : unit = let val list = !table; val newList = if member (a, list) then delete (a, list) else list; in table := entry :: newList end; end; (* old ... (* Add a newType entry to the table. *) fun enter (a, b) = table := (a,b) :: !table; ... *) (* Get a value if it's there *) fun lookup (x : 'a) : 'b option = let fun search [] = NONE | search ((a, b) :: T) = if same (a, x) then SOME b else search T; in search (!table) end; in {enter = enter, lookup = lookup} end; fun splitString s = (* Divides a name into its components. Returns the string split at the last ".". The first part is empty if there are no dots in it. *) let val (first, second) = Substring.splitr(fn c => c <> #".") (Substring.full s) in if Substring.isEmpty first then {first = "", second = s} else {first = Substring.string(Substring.trimr 1 first), second = Substring.string second } end structure Sharing = struct type lexan = lexan end end; polyml-5.7.1/mlsource/MLCompiler/PARSE_TYPE.ML0000644000175000017500000002662413204034553017612 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Parse Types. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor PARSE_TYPE ( structure SYMBOLS : SymbolsSig structure SYMSET : SymsetSig structure LEX : LEXSIG structure SKIPS : sig type sys; type lexan; type symset; type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val badsyms: sys * lexan -> unit; val getsym: sys * lexan -> unit; val skipon: symset * symset * string * lexan -> unit; val getid: symset * symset * lexan -> string * location; val getLabel: symset * lexan -> string * location; val getList: sys * symset * lexan * (unit -> 'a * location) -> 'a list * location; end; structure UTILITIES : sig val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; end structure TYPETREE : TYPETREESIG (*****************************************************************************) (* PARSETYPE sharing constraints *) (*****************************************************************************) sharing type SYMBOLS.sys = SYMSET.sys = SKIPS.sys = LEX.sys sharing type SYMSET.symset = SKIPS.symset sharing type LEX.lexan = SKIPS.lexan ) : (*****************************************************************************) (* PARSETYPE export signature *) (*****************************************************************************) sig type symset; type lexan; type types; type typeParsetree; type typeVarForm type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val parseType: symset * lexan * {lookupTvar:string -> typeVarForm} -> typeParsetree * location; end = (*****************************************************************************) (* PARSETYPE functor body *) (*****************************************************************************) struct open TYPETREE open LEX open SYMSET open SKIPS open SYMBOLS open UTILITIES infix 8 ++; infix 8 inside; val tyseqSyntax = SYMSET.comma ++ SYMSET.rightParen val lrSyntax = SYMSET.comma ++ SYMSET.rightCurly fun parseType (fsys, lex, env) = let fun tupleType fsys = let fun basicType fsys = let (* First part may be a type sequence. *) val sym = sy lex and startLocn = location lex val (tySeq, seqLocn) = case sym of LeftParen => (* sequence of types *) let fun processList () = let val thisType = if sy lex inside startTypeSys then #1 (parseType (fsys ++ tyseqSyntax, lex, env)) else ( badsyms (TypeIdent, lex); ParseTypeBad (* not there *) ); fun testfor (sym, startsys, lex) = (* repeat if the separator or a starting sym is found *) if sy lex = sym then (insymbol lex; true) else if sy lex inside startsys then (badsyms (sym, lex); true) else false; in (* Check for any more *) if testfor (SYMBOLS.Comma, startTypeSys, lex) then thisType :: processList() (* get some more *) else [thisType] (* that's it *) end (* processList *); val () = insymbol lex; (* Remove opening bracket *) val sequence = processList(); (* read list of items *) val endLocn = location lex (* Should be the loc. of the close paren. *) in getsym (SYMBOLS.RightParen, lex); (sequence, locSpan(startLocn, endLocn)) end | LeftCurly => let val () = insymbol lex; (* Remove opening bracket *) val posEnd = location lex in case sy lex of RightCurly => let val () = insymbol lex val locs = locSpan(startLocn, posEnd) in ([unitTree locs], locs) end | _ => let (* The same label name should not be used more than once. *) fun reportDup (name, newLoc, _) = errorMessage (lex, newLoc, "Label (" ^ name ^ ") appears more than once.") val dupCheck = noDuplicates reportDup (* All the labels should be the same sort. *) val (l, _) = getList (SYMBOLS.Comma, empty, lex, fn () => let val nameAndLoc as (_, nameLoc) = getLabel (fsys ++ SYMSET.colon, lex); val () = #enter dupCheck nameAndLoc; val () = getsym (SYMBOLS.Colon, lex); val (types, typeLoc) = parseType (fsys ++ lrSyntax, lex, env) val fullLoc = locSpan(nameLoc, typeLoc) in ((nameAndLoc, types, fullLoc), fullLoc) end); val locs = locSpan(startLocn, location lex) (* Include '}' *) in getsym (SYMBOLS.RightCurly, lex); ([makeParseTypeLabelled(l, true, locs) (* frozen *)], locs) end end | TypeIdent => let (* type variable *) val ty = #lookupTvar env (id lex); in getsym (TypeIdent, lex); ([makeParseTypeId(ty, startLocn)], startLocn) end | Ident => (* Constructor such as `int' *) let val idLocn as (_, locn) = getid (SYMSET.ident, fsys, lex) in ([makeParseTypeConstruction (idLocn, ([], locn), locn)], locn) end | _ => ( badsyms (SYMBOLS.Ident, lex); ([], startLocn) ) in (* Type sequence read. Can now have some type constructors. *) case (sy lex, tySeq) of (Ident, _) => let (* Returns the type made from the constructors. *) fun constructors(args, argLoc) = let val idAndLoc as (_, idLoc) = (id lex, location lex) val loc = locSpan(argLoc, idLoc) val constructed = makeParseTypeConstruction(idAndLoc, (args, argLoc), loc); in insymbol lex; if sy lex = SYMBOLS.Ident then constructors([constructed], loc) else (constructed, loc) end; in constructors(tySeq, seqLocn) end (* no constructor - get the first part of the sequence and check that that's all. *) | (_, []) => (ParseTypeBad, seqLocn) | (_, [t]) => (t, seqLocn) | (_, t::_) => (badsyms (SYMBOLS.Ident, lex); (t, seqLocn)) end (* basicType *); (* ty * .. * ty *) fun getProduct () = let val fsys' = fsys ++ SYMSET.asterisk; val (firstPart, firstLocn) = basicType fsys' in case sy lex of Asterisk => let val () = insymbol lex val (rest, restLocn) = getProduct () in (firstPart :: rest, locSpan(firstLocn, restLocn)) end | _ => ([firstPart], firstLocn) end in case getProduct () of ([notProduct], locn) => (notProduct, locn) | (product, locn) => (makeParseTypeProduct(product, locn), locn) end (* tupleType *)(* ty -> ty *) val (firstType, firstLoc) = tupleType (fsys ++ SYMSET.arrow); in case sy lex of Arrow => let val () = insymbol lex val (resType, resLocn) = parseType (fsys, lex, env) val locs = locSpan(firstLoc, resLocn) in (makeParseTypeFunction (firstType, resType, locs), locs) end | _ => ( skipon (fsys, empty, "End of type", lex); (firstType, firstLoc) ) end end; polyml-5.7.1/mlsource/MLCompiler/COPIER.sml0000644000175000017500000003313713204034553017340 0ustar daviddavid(* Copyright (c) 2009-2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Derived from the STRUCTURES module: Copyright (c) 2000-9 Cambridge University Technical Services Limited Title: Module Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor COPIER( structure STRUCTVALS : STRUCTVALSIG; structure TYPETREE : TYPETREESIG structure UNIVERSALTABLE: sig type universal = Universal.universal type univTable type 'a tag = 'a Universal.tag val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; val univFold: univTable * (string * universal * 'a -> 'a) * 'a -> 'a; end; structure UTILITIES: sig val splitString: string -> { first:string,second:string } end sharing STRUCTVALS.Sharing = TYPETREE.Sharing sharing type UNIVERSALTABLE.univTable = STRUCTVALS.univTable ) :COPIERSIG = struct open STRUCTVALS TYPETREE UNIVERSALTABLE UTILITIES open Universal; (* for tag record selectors *) type tsvEnv = { enterType: string * typeConstrSet -> unit, enterStruct: string * structVals -> unit, enterVal : string * values -> unit }; (* Type constructor cache. This maps typeIDs in the copied signature to type constructors. More importantly, it identifies a type constructor that carries that type ID so that when we copy the values the string name is appropriate. *) (* Generate new entries for all the elements of the signature. As well as copying the signature it also keeps track of addresses used in the signature for values. This is needed because when we're constructing a signature we need to know the maximum address used. This is used to two cases only: when we have a named signature with possible sharing or "where types" or when including a signature. Really these cases should renumber the value entries. *) fun localCopySig(sourceTab, resEnv, mapTypeId, singleLevel, strName, newMap, cacheTail): unit = let fun buildTypeCache(sourceTab, strName, mapTypeId, buildDatatypes, initialCache, cacheTail) = let (* Process sub-directories first. That way they will be further down the list. *) fun foldSubStructs(dName, dVal, rest) = if tagIs structVar dVal then let val Struct { signat = Signatures { tab, typeIdMap, ...}, ...} = tagProject structVar dVal in buildTypeCache(tab, strName ^ dName ^ "." (* Add structure names. *), composeMaps(typeIdMap, mapTypeId), buildDatatypes, initialCache, rest) end else rest (* Then the types within this structure. *) fun foldTypes(_, dVal, rest) = if tagIs typeConstrVar dVal then let val TypeConstrSet(tcon, _) = tagProject typeConstrVar dVal fun makeName s = strName ^ s fun copyId(TypeId{idKind=Bound{ offset, ...}, ...}) = SOME(mapTypeId offset) | copyId _ = NONE in (* On the first pass we build datatypes, on the second type abbreviations using the copied datatypes. *) case tcIdentifier tcon of TypeId{idKind=TypeFn(args, equiv), access, description, ...} => if buildDatatypes then rest (* Not on this pass. *) else (* Build a new entry whether the typeID has changed or not. *) let val copiedEquiv = copyType(equiv, fn x => x, fn tcon => copyTypeConstrWithCache(tcon, copyId, fn x => x, makeName, initialCache)) val copiedId = TypeId{idKind=TypeFn(args, copiedEquiv), access=access, description=description} in makeTypeConstructor(makeName(tcName tcon), args, copiedId, tcLocations tcon) :: rest end | id => if not buildDatatypes then rest (* Not on this pass. *) else ( case copyId id of NONE => rest (* Skip (or add to cache?) *) | SOME newId => makeTypeConstructor (makeName(tcName tcon), tcTypeVars tcon, newId, tcLocations tcon) :: rest ) end else rest in univFold(sourceTab, foldTypes, univFold(sourceTab, foldSubStructs, cacheTail)) end (* Process datatypes. While processing these we make new entries for every datatype even if they are already in the cache. That way we end up with the last entry in the list being the most local and that's the one we want to use for type abbreviations and values. *) val datatypeCache = buildTypeCache(sourceTab, strName, mapTypeId, true, (* Datatypes *) [], cacheTail) (* Now add any type abbreviations. These can refer to datatypes we added in the previous pass but don't reuse type abbreviations we add elsewhere. *) val typeCache = buildTypeCache(sourceTab, strName, mapTypeId, false, (* Type abbreviations. *)datatypeCache, datatypeCache) fun copyTypeCons (tcon : typeConstrs) : typeConstrs = let fun copyId(TypeId{idKind=Bound{ offset, ...}, ...}) = SOME(mapTypeId offset) | copyId _ = NONE in copyTypeConstrWithCache (tcon, copyId, fn x => x, fn s => strName ^ s, typeCache) end fun copyTyp (t : types) : types = copyType (t, fn x => x, (* Don't bother with type variables. *) copyTypeCons) in univFold (sourceTab, fn (dName: string, dVal: universal, _) => if tagIs structVar dVal then let val Struct { signat, name=structName, access, locations=structLocs, ...} = tagProject structVar dVal val Signatures { name=sigName, tab, typeIdMap, firstBoundIndex, locations=sigLocs, ...} = signat val newSig = if singleLevel then (* Just compose the maps. *) makeSignature(sigName, tab, firstBoundIndex, sigLocs, composeMaps(typeIdMap, mapTypeId), []) else (* Recursive copy. *) let (* Make a new sub-structure. *) val newTab = makeSignatureTable (); (* Copy everything into the new signature. *) val () = localCopySig (tab, { enterType = fn (s,v) => univEnter (newTab, typeConstrVar, s, v), enterStruct = fn (s,v) => univEnter (newTab, structVar, s, v), enterVal = fn (s,v) => univEnter (newTab, valueVar, s, v) }, composeMaps(typeIdMap, mapTypeId), false, strName ^ dName ^ ".", newMap, typeCache) in (* If we're copying it all set the resulting map to the new map. *) makeSignature(sigName, newTab, firstBoundIndex, sigLocs, newMap, []) end val newStruct = Struct { name = structName, signat = newSig, access = access, locations = structLocs} in #enterStruct resEnv (dName, newStruct) end (* structures *) else if tagIs typeConstrVar dVal then let val TypeConstrSet(oldConstr, tcConstructors) = tagProject typeConstrVar dVal val newConstr = copyTypeCons oldConstr; (* Copy the value constructors for a datatype. *) fun copyValueConstr( v as Value{name, typeOf, class, access, locations, references, instanceTypes, ...}) = let (* Copy its type and make a new constructor if the type has changed. *) val newType = copyTyp typeOf; in if not (identical (newType, typeOf)) then Value{name=name, typeOf=newType, class=class, access=access, locations = locations, references = references, instanceTypes=instanceTypes} else v end; val copiedConstrs = map copyValueConstr tcConstructors in #enterType resEnv (dName, TypeConstrSet(newConstr, copiedConstrs)) end (* Finally the values and exceptions. *) else if tagIs valueVar dVal then let val v as Value {typeOf, class, name, access, locations, references, instanceTypes, ...} = tagProject valueVar dVal; val newType = copyTyp typeOf; (* Can save creating a new object if the address and type are the same as they were. *) val res = if not (identical (newType, typeOf)) then Value {typeOf=newType, class=class, name=name, instanceTypes=instanceTypes, access=access,locations=locations, references = references} else v in #enterVal resEnv (name, res) end else (), () ) end (* fullCopySig *) (* Exported versions of these. *) (* Open a structure or include a signature. *) fun openSignature(Signatures{ tab, typeIdMap, ...}, resEnv, strName) = localCopySig(tab, resEnv, typeIdMap, true (* One level. *), strName, typeIdMap, []) and fullCopyDatatype(oldConstr:typeConstrSet, mapTypeId, strName) = let val sigSpace = makeSignatureTable() val Env { enterType, ...} = makeEnv sigSpace val () = enterType(tcName(tsConstr oldConstr), oldConstr) val resType = ref NONE val resEnv = { enterType = fn (_, tc) => resType := SOME tc, enterStruct = fn (s, _) => raise Misc.InternalError ("enterStruct "^s), enterVal = fn (s, _) => raise Misc.InternalError ("enterVal "^s) } val () = localCopySig(sigSpace, resEnv, mapTypeId, true, strName, fn _ => raise Subscript, []) in valOf(! resType) end fun replaceMap(Signatures{tab=sourceTab, name = sourceName, locations, ...}, mapTypeId: int -> typeId, min, boundIds, newMap): signatures = let (* Make a new signature. *) val tab = makeSignatureTable (); val tsvEnv = { enterType = fn (s,v) => univEnter (tab, typeConstrVar, s, v), enterStruct = fn (s,v) => univEnter (tab, structVar, s, v), enterVal = fn (s, v) => univEnter (tab, valueVar, s, v) } (* Copy everything into the new signature. *) val () = localCopySig(sourceTab, tsvEnv, mapTypeId, false, "", newMap, []) in makeSignature(sourceName, tab, min, locations, newMap, boundIds) end (* replaceMap *) (* Find the maximum run-time offset used for a value or structure in a signature. This excludes type IDs. *) fun getNextRuntimeOffset(Signatures{tab, ...}): int = let fun getOffset(_, dVal, m) = if tagIs valueVar dVal then case tagProject valueVar dVal of Value { access = Formal addr, ...} => Int.max(addr+1, m) | _ => m else if tagIs structVar dVal then case tagProject structVar dVal of Struct{access=Formal addr, ...} => Int.max(addr+1, m) | _ => m else if tagIs typeConstrVar dVal then let fun getConstrOffset(Value { access = Formal addr, ...}, m) = Int.max(addr+1, m) | getConstrOffset(_, m) = m in List.foldl getConstrOffset m (tsConstructors (tagProject typeConstrVar dVal)) end else m in univFold(tab, getOffset, 0) end structure Sharing = struct type signatures = signatures type typeConstrSet = typeConstrSet type structVals = structVals type values = values type typeId = typeId type valAccess = valAccess type types = types type univTable = univTable end end; polyml-5.7.1/mlsource/MLCompiler/PRINTTABLESIG.sml0000644000175000017500000000214413204034553020360 0ustar daviddavid(* Copyright (c) 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature PRINTTABLESIG = sig type typeConstrs type codetree val addOverload: string * typeConstrs * codetree -> unit val getOverloads: string -> (typeConstrs * codetree) list val getOverload: string * typeConstrs * (unit->codetree) -> codetree structure Sharing: sig type typeConstrs = typeConstrs type codetree = codetree end end; polyml-5.7.1/mlsource/MLCompiler/TYPEIDCODE.sml0000644000175000017500000021015013204034553020000 0ustar daviddavid(* Copyright (c) 2009, 2013, 2015-16 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor TYPEIDCODE ( structure LEX : LEXSIG; structure CODETREE : CODETREESIG structure TYPETREE : TYPETREESIG structure STRUCTVALS : STRUCTVALSIG structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG structure ADDRESS : AddressSig sharing LEX.Sharing = STRUCTVALS.Sharing = PRETTY.Sharing = CODETREE.Sharing = TYPETREE.Sharing = ADDRESS ) : TYPEIDCODESIG = struct open CODETREE PRETTY ADDRESS STRUCTVALS TYPETREE (* This module deals with handling the run-time values that carry type information. At the moment that's just the equality and print operations but that will be extended. There are different versions according to whether this is a monomorphic constructor, a polymorphic constructor or a type. Monomorphic and polymorphic constructor values are passed around in the module system as run-time values for types and datatypes whereas type values are passed in the core language as an extra argument to polymorphic functions. Both monomorphic and polymorphic constructors contain a reference for the "printer" entry so that a pretty printer can be installed. The functions in polymorphic datatypes have to be applied to type values for the base types to construct a type value. Monomorphic datatypes just need some transformation. The effective types in each case are PolyType : (T('a) -> <'a t, 'a t> -> bool) * (T('a) -> 'a t * int -> pretty) ref MonoType : ( -> bool) * (t * int -> pretty) ref Type: ( -> bool) * (t * int -> pretty) where < > denotes multiple (poly-style) arguments rather than tuples. *) (* If this is true we are just using additional arguments for equality type variables. If false we are using them for all type variables and every polymorphic function is wrapped in a function that passes the type information. *) val justForEqualityTypes = true val arg1 = mkLoadArgument 0 (* Used frequently. *) val arg2 = mkLoadArgument 1 val InternalError = Misc.InternalError val orb = Word8.orb infix 7 orb; val mutableFlags = F_words orb F_mutable (* codeAccess is copied from ValueOps. *) fun codeAccess (Global code, _) = code | codeAccess (Local{addr=ref locAddr, level=ref locLevel}, level) = mkLoad (locAddr, level, locLevel) | codeAccess (Selected{addr, base}, level) = mkInd (addr, codeAccess (base, level)) | codeAccess _ = raise InternalError "No access" (* Load an identifier. *) fun codeId(TypeId{access, ...}, level) = codeAccess(access, level) (* Pretty printer code. These produce code to apply the pretty printer functions. *) fun codePrettyString(s: string) = mkDatatype[mkConst(toMachineWord tagPrettyString), mkConst(toMachineWord s)] and codePrettyBreak(n, m) = mkDatatype[mkConst(toMachineWord tagPrettyBreak), mkConst(toMachineWord n), mkConst(toMachineWord m)] and codePrettyBlock(n: int, t: bool, c: context list, args: codetree) = mkDatatype[mkConst(toMachineWord tagPrettyBlock), mkConst(toMachineWord n), mkConst(toMachineWord t), mkConst(toMachineWord c), args] (* Turn a list of codetrees into a run-time list. *) and codeList(c: codetree list, tail: codetree): codetree = List.foldr (fn (hd, tl) => mkTuple[hd, tl]) tail c (* Generate code to check that the depth is not less than the allowedDepth and if it is to print "..." rather than the given code. *) and checkDepth(depthCode: codetree, allowedDepth: int, codeOk, codeFail) = mkIf(mkBinary(BuiltIns.WordComparison{test=BuiltIns.TestLess, isSigned=true}, depthCode, mkConst(toMachineWord allowedDepth)), codeFail, codeOk) (* Subtract one from the current depth to produce the depth for sub-elements. *) and decDepth depthCode = mkBinary(BuiltIns.FixedPrecisionArith BuiltIns.ArithSub, depthCode, mkConst(toMachineWord 1)) val codePrintDefault = mkProc(codePrettyString "?", 1, "print-default", [], 0) structure TypeVarMap = struct (* Entries are either type var maps or "stoppers". *) datatype typeVarMapEntry = TypeVarFormEntry of (typeVarForm * (level->codetree)) list | TypeConstrListEntry of typeConstrs list type typeVarMap = { entryType: typeVarMapEntry, (* Either the type var map or a "stopper". *) cache: (* Cache of new type values. *) {typeOf: types, address: int, decCode: codeBinding} list ref, mkAddr: int->int, (* Make new addresses at this level. *) level: level (* Function nesting level. *) } list (* Default map. *) fun defaultTypeVarMap (mkAddr, level) = [{entryType=TypeConstrListEntry[], cache=ref [], mkAddr=mkAddr, level=level}] fun markTypeConstructors(typConstrs, mkAddr, level, tvs) = {entryType = TypeConstrListEntry typConstrs, cache = ref [], mkAddr=mkAddr, level=level} :: tvs fun getCachedTypeValues(({cache=ref cached, ...}) ::_): codeBinding list = (* Extract the values from the list. The later values may refer to earlier so the list must be reversed. *) List.rev (List.map (fn{decCode, ...} => decCode) cached) | getCachedTypeValues _ = raise Misc.InternalError "getCachedTypeValues" (* Extend a type variable environment with a new map of type variables to load functions. *) fun extendTypeVarMap (tvMap: (typeVarForm * (level->codetree)) list, mkAddr, level, typeVarMap) = {entryType = TypeVarFormEntry tvMap, cache = ref [], mkAddr=mkAddr, level=level} :: typeVarMap (* If we find the type var in the map return it as a type. This is used to eliminate apparently generalisable type vars from the list. *) fun mapTypeVars [] _ = NONE | mapTypeVars ({entryType=TypeVarFormEntry typeVarMap, ...} :: rest) tyVar = ( case List.find(fn(t, _) => sameTv(t, tyVar)) typeVarMap of SOME (tv, _) => SOME(TypeVar tv) | NONE => mapTypeVars rest tyVar ) | mapTypeVars (_ :: rest) tyVar = mapTypeVars rest tyVar (* Check to see if a type constructor is in the "stopper" set and return the level if it is. *) fun checkTypeConstructor(_, []) = ~1 (* Not there. *) | checkTypeConstructor(tyCons, {entryType=TypeVarFormEntry _, ...} :: rest) = checkTypeConstructor(tyCons, rest: typeVarMap) | checkTypeConstructor(tyCons, {entryType=TypeConstrListEntry tConstrs, ...} :: rest) = if List.exists(fn t => sameTypeId(tcIdentifier t, tcIdentifier tyCons)) tConstrs then List.length rest + 1 else checkTypeConstructor(tyCons, rest) local open TypeValue (* The printer and equality functions must be valid functions even when they will never be called. We may have to construct dummy type values by applying a polymorphic type constructor to them and if they don't have the right form the optimiser will complain. If we're only using type values for equality type variables the default print function will be used in polymorphic functions so must print "?". *) val errorFunction2 = mkProc(CodeZero, 2, "errorCode2", [], 0) val codeFn = mkProc(codePrettyString "fn", 1, "print-function", [], 0) local fun typeValForMonotype typConstr = let val codedId = codeId(tcIdentifier typConstr, baseLevel) val printerRefAddress = extractPrinter codedId val printFn = (* Create a function to load the printer ref and apply to the args. *) mkProc( mkEval( mkLoadOperation(LoadStoreMLWord{isImmutable=false}, printerRefAddress, CodeZero), [arg1]), 1, "print-" ^ tcName typConstr, [], 0) in createTypeValue{ eqCode=extractEquality codedId, printCode=printFn, boxedCode=extractBoxed codedId, sizeCode=extractSize codedId} end in (* A few common types. These are effectively always cached. *) val fixedIntCode = typeValForMonotype fixedIntConstr and intInfCode = typeValForMonotype intInfConstr and boolCode = typeValForMonotype boolConstr and stringCode = typeValForMonotype stringConstr and charCode = typeValForMonotype charConstr end (* Code generate this now so we only get one entry. *) val codeTuple = mkTuple[ createTypeValue{ (* Unused type variable. *) eqCode=errorFunction2, printCode=codePrintDefault, boxedCode=boxedEither, sizeCode=singleWord}, createTypeValue{ (* Function. *) eqCode=errorFunction2, printCode=codeFn, boxedCode=boxedAlways, sizeCode=singleWord}, fixedIntCode, intInfCode, boolCode, stringCode, charCode ] val code = genCode(codeTuple, [], 0)() in (* Default code used for a type variable that is not referenced but needs to be provided to satisfy the type. *) val defaultTypeCode = mkInd(0, code) val functionCode = mkInd(1, code) val cachedCode = [(fixedIntConstr, mkInd(2, code)), (intInfConstr, mkInd(3, code)), (boolConstr, mkInd(4, code)), (stringConstr, mkInd(5, code)), (charConstr, mkInd(6, code))] end fun findCachedTypeCode(typeVarMap: typeVarMap, typ): ((level->codetree) * int) option = let (* Test if we have the same type as the cached type. *) fun sameType (t1, t2) = case (eventual t1, eventual t2) of (TypeVar tv1, TypeVar tv2) => ( case (tvValue tv1, tvValue tv2) of (EmptyType, EmptyType) => sameTv(tv1, tv2) | _ => false ) | (FunctionType{arg=arg1, result=result1}, FunctionType{arg=arg2, result=result2}) => sameType(arg1, arg2) andalso sameType(result1, result2) | (LabelledType{recList=list1, ...}, LabelledType{recList=list2, ...}) => ListPair.allEq( fn({name=n1, typeof=t1}, {name=n2, typeof=t2}) => n1 = n2 andalso sameType(t1, t2)) (list1, list2) | (TypeConstruction{constr=c1, args=a1, ...}, TypeConstruction{constr=c2, args=a2, ...}) => sameTypeConstr(c1, c2) andalso ListPair.allEq sameType (a1, a2) | _ => false and sameTypeConstr(tc1, tc2) = sameTypeId(tcIdentifier tc1, tcIdentifier tc2) fun findCodeFromCache([], _) = NONE | findCodeFromCache(({cache=ref cache, level, ...} :: rest): typeVarMap, ty) = ( case List.find(fn {typeOf, ...} => sameType(typeOf, ty)) cache of NONE => findCodeFromCache(rest, ty) | SOME{address, ...} => SOME(fn l => mkLoad(address, l, level), List.length rest +1) ) in case typ of TypeVar tyVar => ( case tvValue tyVar of EmptyType => let (* If it's a type var it is either in the type var list or we return the default. It isn't in the cache. *) fun findCodeFromTypeVar([], _) = ((fn _ => defaultTypeCode), 0) (* Return default code for a missing type variable. This can occur if we have unreferenced type variables that need to be supplied but are treated as "don't care". *) | findCodeFromTypeVar({entryType=TypeVarFormEntry typeVarMap, ...} :: rest, tyVar) = ( case List.find(fn(t, _) => sameTv(t, tyVar)) typeVarMap of SOME(_, codeFn) => (codeFn, List.length rest+1) | NONE => findCodeFromTypeVar(rest, tyVar) ) | findCodeFromTypeVar(_ :: rest, tyVar) = findCodeFromTypeVar(rest, tyVar) in SOME(findCodeFromTypeVar(typeVarMap, tyVar)) end | OverloadSet _ => let val constr = typeConstrFromOverload(typ, false) in findCachedTypeCode(typeVarMap, mkTypeConstruction(tcName constr, constr, [], [])) end | ty => findCachedTypeCode(typeVarMap, ty) ) | TypeConstruction { constr, args, ...} => let fun sameTypeConstr(tc1, tc2) = sameTypeId(tcIdentifier tc1, tcIdentifier tc2) in if tcIsAbbreviation constr (* Type abbreviation *) then findCachedTypeCode(typeVarMap, makeEquivalent (constr, args)) else if null args then (* Check the permanently cached monotypes. *) case List.find(fn (t, _) => sameTypeConstr(t, constr)) cachedCode of SOME (_, c) => SOME ((fn _ => c), ~1) | NONE => findCodeFromCache(typeVarMap, typ) else findCodeFromCache(typeVarMap, typ) end | FunctionType _ => SOME(fn _ => functionCode, ~1) (* Every function has the same code. *) | _ => findCodeFromCache(typeVarMap, typ) end end open TypeVarMap (* Find the earliest entry in the cache table where we can put this entry. *) fun getMaxDepth (typeVarMap: typeVarMap) (ty: types, maxSoFar:int) : int = case findCachedTypeCode(typeVarMap, ty) of SOME (_, cacheDepth) => Int.max(cacheDepth, maxSoFar) | NONE => let in case ty of TypeVar tyVar => ( case tvValue tyVar of OverloadSet _ => maxSoFar (* Overloads are all global. *) | EmptyType => maxSoFar | tyVal => getMaxDepth typeVarMap (tyVal, maxSoFar) ) | TypeConstruction{constr, args, ...} => if tcIsAbbreviation constr (* May be an alias *) then getMaxDepth typeVarMap (makeEquivalent (constr, args), maxSoFar) else List.foldl (getMaxDepth typeVarMap) (Int.max(maxSoFar, checkTypeConstructor(constr, typeVarMap))) args | LabelledType {recList, ...} => List.foldl (fn ({typeof, ...}, m) => getMaxDepth typeVarMap (typeof, m)) maxSoFar recList | _ => maxSoFar end (* Get the boxedness status for a type i.e. whether values of the type are always addresses, always tagged integers or could be either. *) fun boxednessForType(ty, level: level, getTypeValueForID, typeVarMap): codetree = case findCachedTypeCode(typeVarMap, ty) of SOME (code, _) => TypeValue.extractBoxed(code level) | NONE => let fun boxednessForConstruction(constr, args): codetree = (* Get the boxedness for a datatype construction. *) let (* Get the boxedness functions for the argument types. This applies only to polytypes. *) fun getArg ty : codetree = let val boxedFun = boxednessForType(ty, level, getTypeValueForID, typeVarMap) open TypeValue in (* We need a type value here although only the boxedFun will be used. *) createTypeValue{eqCode=CodeZero, printCode=CodeZero, boxedCode=boxedFun, sizeCode=singleWord} end val codeForId = TypeValue.extractBoxed(getTypeValueForID(tcIdentifier constr, args, level)) in (* Apply the function we obtained to any type arguments. *) if null args then codeForId else mkEval(codeForId, map getArg args) end in case ty of TypeVar tyVar => ( case tvValue tyVar of OverloadSet _ => boxednessForConstruction(typeConstrFromOverload(ty, false), []) | EmptyType => raise InternalError "boxedness: should already have been handled" | tyVal => boxednessForType(tyVal, level, getTypeValueForID, typeVarMap) ) | TypeConstruction{constr, args, ...} => if tcIsAbbreviation constr (* May be an alias *) then boxednessForType (makeEquivalent (constr, args), level, getTypeValueForID, typeVarMap) else boxednessForConstruction(constr, args) | LabelledType {recList=[{typeof=singleton, ...}], ...} => (* Unary tuples are optimised - no indirection. *) boxednessForType(singleton, level, getTypeValueForID, typeVarMap) | LabelledType _ => TypeValue.boxedAlways (* Tuple are currently always boxed. *) (* Functions are handled in the cache case. *) | _ => raise InternalError "boxednessForType: Unknown type" end (* Get the size for values of the type. A value N other than 1 means that every value of the type is a pointer to a tuple of exactly N words. Zero is never used. *) fun sizeForType(ty, level, getTypeValueForID, typeVarMap): codetree = case findCachedTypeCode(typeVarMap, ty) of SOME (code, _) => TypeValue.extractSize(code level) | NONE => let fun sizeForConstruction(constr, args): codetree = (* Get the size for a datatype construction. *) let (* Get the size functions for the argument types. This applies only to polytypes. *) fun getArg ty : codetree = let val sizeFun = sizeForType(ty, level, getTypeValueForID, typeVarMap) open TypeValue in (* We need a type value here although only the sizeFun will be used. *) createTypeValue{eqCode=CodeZero, printCode=CodeZero, boxedCode=CodeZero, sizeCode=sizeFun} end val codeForId = TypeValue.extractSize(getTypeValueForID(tcIdentifier constr, args, level)) in (* Apply the function we obtained to any type arguments. *) if null args then codeForId else mkEval(codeForId, map getArg args) end in case ty of TypeVar tyVar => ( case tvValue tyVar of OverloadSet _ => sizeForConstruction(typeConstrFromOverload(ty, false), []) | EmptyType => raise InternalError "size: should already have been handled" | tyVal => sizeForType(tyVal, level, getTypeValueForID, typeVarMap) ) | TypeConstruction{constr, args, ...} => if tcIsAbbreviation constr (* May be an alias *) then sizeForType (makeEquivalent (constr, args), level, getTypeValueForID, typeVarMap) else sizeForConstruction(constr, args) | LabelledType {recList=[{typeof=singleton, ...}], ...} => (* Unary tuples are optimised - no indirection. *) sizeForType(singleton, level, getTypeValueForID, typeVarMap) | LabelledType{recList, ...} => let val length = List.length recList in (* Set the length to the number of words that can be unpacked. If there are more than 4 items it's probably not worth packing them into other tuples so set this to one. *) if length <= 4 (*!maxPacking*) then mkConst(toMachineWord length) else TypeValue.singleWord end (* Functions are handled in the cache case. *) | _ => raise InternalError "sizeForType: Unknown type" end fun printerForType(ty, baseLevel, argTypes: typeVarMap) = let fun printCode(typ, level: level) = ( case typ of typ as TypeVar tyVar => ( case tvValue tyVar of EmptyType => ( case findCachedTypeCode(argTypes, typ) of SOME (code, _) => TypeValue.extractPrinter(code level) | NONE => raise InternalError "printerForType: should already have been handled" ) | OverloadSet _ => let val constr = typeConstrFromOverload(typ, false) in printCode(mkTypeConstruction(tcName constr, constr, [], []), level) end | _ => (* Just a bound type variable. *) printCode(tvValue tyVar, level) ) | TypeConstruction { constr=typConstr, args, name, ...} => if tcIsAbbreviation typConstr (* Handle type abbreviations directly *) then printCode(makeEquivalent (typConstr, args), level) else let val nLevel = newLevel level (* Get the type Id and put in code to extract the printer ref. *) val codedId = codeId(tcIdentifier typConstr, nLevel) open TypeValue val printerRefAddress = extractPrinter codedId (* We need a type value here. The printer field will be used to print the type argument and the boxedness and size fields may be needed to extract the argument from the constructed value. *) fun makePrinterId t = let fun codeForId(typeId, _, l) = codeId(typeId, l) in createTypeValue {eqCode=CodeZero, printCode=printCode(t, nLevel), boxedCode=boxednessForType(t, nLevel, codeForId, argTypes), sizeCode=sizeForType(t, nLevel, codeForId, argTypes)} end val argList = map makePrinterId args in case args of [] => (* Create a function that, when called, will extract the function from the reference and apply it the pair of the value and the depth. *) mkProc( mkEval( mkLoadOperation(LoadStoreMLWord{isImmutable=false}, printerRefAddress, CodeZero), [arg1]), 1, "print-"^name, getClosure nLevel, 0) | _ => (* Construct a function, that when called, will extract the function from the reference and apply it first to the base printer functions and then to the pair of the value and depth. *) mkProc( mkEval( mkEval( mkLoadOperation(LoadStoreMLWord{isImmutable=false}, printerRefAddress, CodeZero), argList), [arg1]), 1, "print-"^name, getClosure nLevel, 0) end | LabelledType { recList=[], ...} => (* Empty tuple: This is the unit value. *) mkProc(codePrettyString "()", 1, "print-labelled", [], 0) | LabelledType {recList=[{name, typeof}], ...} => let (* Optimised unary record *) val localLevel = newLevel level val entryCode = mkEval(printCode(typeof, localLevel), [arg1]) val printItem = codeList([codePrettyString(name^" ="), codePrettyBreak(1, 0), entryCode, codePrettyString "}"], CodeZero) in mkProc( codePrettyBlock(1, false, [], mkTuple[codePrettyString "{", printItem]), 1, "print-labelled", getClosure localLevel, 0) end | LabelledType (r as { recList, ...}) => let (* See if this has fields numbered 1=, 2= etc. N.B. If it has only one field we need to print 1= since we don't have singleton tuples. *) fun isRec([], _) = true | isRec({name, ...} :: l, n) = name = Int.toString n andalso isRec(l, n+1) val isTuple = recordIsFrozen r andalso isRec(recList, 1) andalso List.length recList >= 2 val localLevel = newLevel level val valToPrint = mkInd(0, arg1) and depthCode = mkInd(1, arg1) val fields = List.tabulate(List.length recList, fn n => n) val items = ListPair.zipEq(recList, fields) (* The ordering on fields is designed to allow mixing of tuples and records (e.g. #1). It puts shorter names before longer so that #11 comes after #2 and before #100. For named records it does not make for easy reading so we sort those alphabetically when printing. *) val printItems = if isTuple then items else Misc.quickSort(fn ({name = a, ...}, _) => fn ({name = b, ...}, _) => a <= b) items fun asRecord([], _) = raise Empty (* Shouldn't happen. *) | asRecord([({name, typeof, ...}, offset)], _) = let val entryCode = (* Last field: no separator. *) mkEval(printCode(typeof, localLevel), [mkTuple[mkInd(offset, valToPrint), decDepth depthCode]]) val (start, terminator) = if isTuple then ([], ")") else ([codePrettyString(name^" ="), codePrettyBreak(1, 0)], "}") in codeList(start @ [entryCode, codePrettyString terminator], CodeZero) end | asRecord(({name, typeof, ...}, offset) :: fields, depth) = let val (start, terminator) = if isTuple then ([], ")") else ([codePrettyString(name^" ="), codePrettyBreak(1, 0)], "}") in checkDepth(depthCode, depth, codeList( start @ [ mkEval( printCode(typeof, localLevel), [mkTuple[mkInd(offset, valToPrint), decDepth depthCode]]), codePrettyString ",", codePrettyBreak (1, 0) ], asRecord(fields, depth+1)), codeList([codePrettyString ("..." ^ terminator)], CodeZero) ) end in mkProc( codePrettyBlock(1, false, [], mkTuple[codePrettyString (if isTuple then "(" else "{"), asRecord(printItems, 0)]), 1, "print-labelled", getClosure localLevel, 0) end | FunctionType _ => mkProc(codePrettyString "fn", 1, "print-function", [], 0) | _ => mkProc(codePrettyString "", 1, "print-empty", [], 0) ) in printCode(ty, baseLevel) end and makeEq(ty, level: level, getTypeValueForID, typeVarMap): codetree = let fun equalityForConstruction(constr, args): codetree = (* Generate an equality function for a datatype construction. *) let (* Get argument types parameters for polytypes. There's a special case here for type vars, essentially the type arguments to the datatype, to avoid taking apart the type value record and then building it again. *) fun getArg ty = if (case ty of TypeVar tyVar => (case tvValue tyVar of EmptyType => true | _ => false) | _ => false) then ( case findCachedTypeCode(typeVarMap, ty) of SOME (code, _) => code level | NONE => raise InternalError "getArg" ) else let val eqFun = makeEq(ty, level, getTypeValueForID, typeVarMap) open TypeValue in (* We need a type value here. The equality function will be used to compare the argument type and the boxedness and size parameters may be needed for the constructors. *) createTypeValue{eqCode=eqFun, printCode=CodeZero, boxedCode=boxednessForType(ty, level, getTypeValueForID, typeVarMap), sizeCode=sizeForType(ty, level, getTypeValueForID, typeVarMap)} end val resFun = let val iden = tcIdentifier constr in (* Special case: If this is ref, Array.array or Array2.array we must use pointer equality and not attempt to create equality functions for the argument. It may not be an equality type. *) if isPointerEqType iden then equalWordFn else let open TypeValue val codeForId = extractEquality(getTypeValueForID(tcIdentifier constr, args, level)) in (* Apply the function we obtained to any type arguments. *) if null args then codeForId else mkEval(codeForId, map getArg args) end end in resFun end in case ty of TypeVar tyVar => ( case tvValue tyVar of OverloadSet _ => (* This seems to occur if there are what amount to indirect references to literals. *) equalityForConstruction(typeConstrFromOverload(ty, false), []) | EmptyType => ( case findCachedTypeCode(typeVarMap, ty) of SOME (code, _) => TypeValue.extractEquality(code level) | NONE => raise InternalError "makeEq: should already have been handled" ) | tyVal => makeEq(tyVal, level, getTypeValueForID, typeVarMap) ) | TypeConstruction{constr, args, ...} => if tcIsAbbreviation constr (* May be an alias *) then makeEq (makeEquivalent (constr, args), level, getTypeValueForID, typeVarMap) else equalityForConstruction(constr, args) | LabelledType {recList=[{typeof=singleton, ...}], ...} => (* Unary tuples are optimised - no indirection. *) makeEq(singleton, level, getTypeValueForID, typeVarMap) | LabelledType {recList, ...} => (* Combine the entries. fun eq(a,b) = #1 a = #1 b andalso #2 a = #2 b ... *) let (* Have to turn this into a new function. *) val nLevel = newLevel level fun combineEntries ([], _) = CodeTrue | combineEntries ({typeof, ...} :: t, n) = let val compareElements = makeEq(typeof, nLevel, getTypeValueForID, typeVarMap) in mkCand( mkEval(compareElements, [mkInd(n, arg1), mkInd(n, arg2)]), combineEntries (t, n+1)) end val tupleCode = combineEntries(recList, 0) in mkProc(tupleCode, 2, "eq{...}(2)", getClosure nLevel, 0) end | _ => raise InternalError "Equality for function" end (* Create equality functions for a set of possibly mutually recursive datatypes. *) fun equalityForDatatypes(typeDataList, eqAddresses, baseEqLevel, typeVarMap): (int * codetree) list = let val typesAndAddresses = ListPair.zipEq(typeDataList, eqAddresses) fun equalityForDatatype(({typeConstr=TypeConstrSet(tyConstr, vConstrs), eqStatus, (*boxedCode, sizeCode,*) ...}, addr), otherFns) = if eqStatus then let val nTypeVars = tcArity tyConstr val argTypes = List.tabulate(tcArity tyConstr, fn _ => makeTv{value=EmptyType, level=generalisable, nonunifiable=false, equality=false, printable=false}) val baseEqLevelP1 = newLevel baseEqLevel (* Argument type variables. *) val (localArgList, argTypeMap) = case argTypes of [] => ([], typeVarMap) | _ => let (* Add the polymorphic variables after the ordinary ones. *) (* Create functions to load these if they are used in the map. They may be non-local!!! *) val args = List.tabulate(nTypeVars, fn addr => fn l => mkLoadParam(addr+2, l, baseEqLevelP1)) (* Put the outer args in the map *) val varToArgMap = ListPair.zipEq(argTypes, args) (* Load the local args to return. *) val localArgList = List.tabulate (nTypeVars, fn addr => mkLoadParam(addr+2, baseEqLevelP1, baseEqLevelP1)) val addrs = ref 0 (* Make local declarations for any type values. *) fun mkAddr n = !addrs before (addrs := !addrs + n) in (localArgList, extendTypeVarMap(varToArgMap, mkAddr, baseEqLevelP1, typeVarMap)) end (* If this is a reference to a datatype we're currently generating load that address otherwise fall back to the default. *) fun getEqFnForID(typeId, _, l) = (* if sameTypeId(typeId, tcIdentifier tyConstr) andalso null argTypes then (* Directly recursive. *) TypeValue.createTypeValue{eqCode=mkLoadRecursive(l-baseLevel-1), printCode=CodeZero, boxedCode=boxedCode, sizeCode=sizeCode} else *) case List.find(fn({typeConstr=tc, ...}, _) => sameTypeId(tcIdentifier(tsConstr tc), typeId)) typesAndAddresses of SOME({boxedCode, sizeCode, ...}, addr) => (* Mutually recursive. *) TypeValue.createTypeValue{eqCode=mkLoad(addr, l, baseEqLevel), printCode=CodeZero, boxedCode=boxedCode, sizeCode=sizeCode} | NONE => codeId(typeId, l) (* Filter out the EnumForm constructors. They arise in situations such as datatype t = A of int*int | B | C i.e. where we have only one non-nullary constructor and it is a tuple. In this case we can deal with all the nullary constructors simply by testing whether the two arguments are the same. We don't have to discriminate the individual cases. *) fun processConstrs [] = (* The last of the alternatives is false *) CodeZero | processConstrs (Value{class, access, typeOf, ...} :: rest) = let fun addPolymorphism c = if nTypeVars = 0 orelse justForEqualityTypes then c else mkEval(c, localArgList) val base = codeAccess(access, baseEqLevelP1) open ValueConstructor fun matches arg = mkEval(addPolymorphism(extractTest base), [arg]) in case class of Constructor{nullary=true, ...} => let (* Nullary constructors are represented either by short constants or by constant tuples depending on the rest of the datatype. If this is a short constant the pointer equality is sufficient. This appears to increase the code size but the test should be optimised away because it is applied to a constant. (The "injection function" of a nullary constructor is the constant that represents the value). We have to test the tags if it is not short because we can't guarantee that the constant tuple hasn't been duplicated. *) val isShort = mkIsShort(addPolymorphism(extractInjection base)) in mkIf(mkIf(isShort, CodeFalse, matches arg1), matches arg2, processConstrs rest) end | _ => (* We have to unwrap the value. *) let (* Get the constructor argument given the result type. We might actually be able to take the argument type off directly but there's some uncertainty about whether we use the same type variables for the constructors as for the datatype. (This only applies for polytypes). *) val resType = constructorResult(typeOf, List.map TypeVar argTypes) (* Code to extract the value. *) fun destruct argNo = mkEval(addPolymorphism(extractProjection(codeAccess(access, baseEqLevelP1))), [mkLoadParam(argNo, baseEqLevelP1, baseEqLevelP1)]) (* Test whether the values match. *) val eqValue = mkEval( makeEq(resType, baseEqLevelP1, getEqFnForID, argTypeMap), [destruct 0, destruct 1]) in (* We have equality if both values match this constructor and the values within the constructor match. *) mkIf(matches arg1, mkCand(matches arg2, eqValue), processConstrs rest) end end (* We previously only tested for bit-wise (pointer) equality if we had at least one "enum" constructor in which case the test would eliminate all the enum constructors. I've now extended this to all cases where there is more than one constructor. The idea is to speed up equality between identical data structures. *) val eqCode = mkCor(mkEqualWord(arg1, arg2), processConstrs vConstrs) in if null argTypes then (addr, mkProc(eqCode, 2, "eq-" ^ tcName tyConstr ^ "(2)", getClosure baseEqLevelP1, 0)) :: otherFns else (* Polymorphic. Add an extra inline functions. *) let val nArgs = List.length argTypes val nLevel = newLevel baseEqLevel val nnLevel = newLevel nLevel (* Call the second function with the values to be compared and the base types. *) val polyArgs = List.tabulate(nArgs, fn i => mkLoadParam(i, nnLevel, nLevel)) in (addr, mkInlproc( mkInlproc( mkEval(mkLoad(addr+1, nnLevel, baseEqLevel), [arg1, arg2] @ polyArgs), 2, "eq-" ^ tcName tyConstr ^ "(2)", getClosure nnLevel, 0), nArgs, "eq-" ^ tcName tyConstr ^ "(2)(P)", getClosure nLevel, 0)) :: (addr+1, mkProc(mkEnv(getCachedTypeValues argTypeMap, eqCode), 2+nTypeVars, "eq-" ^ tcName tyConstr ^ "()", getClosure baseEqLevelP1, 0)) :: otherFns end end else (* Not an equality type. This will not be called but it still needs to be a function to ensure it's valid inside mkMutualDecs. *) (addr, mkProc(CodeZero, 2, "no-eq", [], 0)) :: otherFns in List.foldl equalityForDatatype [] typesAndAddresses end (* Create a printer function for a datatype when the datatype is declared. We don't have to treat mutually recursive datatypes specially because this is called after the type IDs have been created. *) fun printerForDatatype(TypeConstrSet(typeCons as TypeConstrs{name, ...}, vConstrs), level, typeVarMap) = let val argCode = mkInd(0, arg1) and depthCode = mkInd(1, arg1) val nLevel = newLevel level val constrArity = tcArity typeCons val argTypes = List.tabulate(constrArity, fn _ => makeTv{value=EmptyType, level=generalisable, nonunifiable=false, equality=false, printable=false}) val (localArgList, innerLevel, newTypeVarMap) = case constrArity of 0 => ([], nLevel, typeVarMap) | _ => let val nnLevel = newLevel nLevel fun mkTcArgMap (argTypes, level, oldLevel) = let val nArgs = List.length argTypes val argAddrs = List.tabulate(nArgs, fn n => n) val args = List.map(fn addr => fn l => mkLoadParam(addr, l, oldLevel)) argAddrs in (ListPair.zipEq(argTypes, args), List.map (fn addr => mkLoadParam(addr, level, oldLevel)) argAddrs) end val (varToArgMap, localArgList) = mkTcArgMap(argTypes, nnLevel, nLevel) val addrs = ref 1 (* Make local declarations for any type values. *) fun mkAddr n = !addrs before (addrs := !addrs + n) in (localArgList, nnLevel, extendTypeVarMap(varToArgMap, mkAddr, nLevel, typeVarMap)) end (* If we have an expression as the argument we parenthesise it unless it is a simple string, a tuple, a record or a list. *) (* fun parenthesise p = let val test = case p of PrettyBlock(_, _, _, items) => ( case items of PrettyString first :: tl => not(null tl) andalso first <> "(" andalso first <> "{" andalso first <> "[" | _ => false ) | _ => false in if test then PrettyBlock(3, true, [], [ PrettyString "(", PrettyBreak(0, 0), p, PrettyBreak(0, 0), PrettyString ")" ]) else p end *) local fun eqStr (arg, str) = mkEqualWord(arg, mkConst(toMachineWord str)) val isNotNull = mkNot o mkIsShort fun testTag(arg, tagV) = (* Test the tag in the first word of the datatype. *) mkTagTest(mkInd(0, arg), tagV, maxPrettyTag) fun listHd x = mkVarField(0, x) and listTl x = mkVarField(1, x) in val parenCode = mkProc( mkIf( testTag(mkLoadArgument 0, tagPrettyBlock), (* then *) mkEnv( [mkDec(0, mkVarField(4, mkLoadArgument 0))], (* items *) mkIf ( (* not(null items) andalso not(null(tl items)) andalso not (isPrettyString(hd items) andalso bracket) *) mkCand( isNotNull(mkLoadLocal 0), mkCand( isNotNull (listTl(mkLoadLocal 0)), mkNot ( mkCand(testTag(listHd(mkLoadLocal 0), tagPrettyString), mkEnv( [mkDec(1, mkVarField(1, listHd(mkLoadLocal 0)))], mkCor(eqStr(mkLoadLocal 1, "("), mkCor(eqStr(mkLoadLocal 1, "{"), eqStr(mkLoadLocal 1, "["))) ) ) ) ) ), (* then: Parenthesise the argument. *) codePrettyBlock( 3, true, [], mkDatatype [ codePrettyString "(", mkDatatype [ codePrettyBreak(0, 0), mkDatatype [ mkLoadArgument 0, mkDatatype [ codePrettyBreak(0, 0), mkDatatype [codePrettyString ")", CodeZero ] ] ] ] ] ), (* else *) mkLoadArgument 0 ) ), (* else *) mkLoadArgument 0 ), 1, "parenthesise", [], 2) end fun printerForConstructors (Value{name, typeOf, access, class = Constructor{nullary, ...}, locations, ...} :: rest) = let (* The "value" for a value constructor is a tuple containing the test code, the injection and the projection functions. *) val constructorCode = codeAccess(access, innerLevel) (* If this is a polytype the fields in the constructor tuple are functions that first have to be applied to the type arguments to yield the actual injection/test/projection functions. For monotypes the fields contain the injection/test/projection functions directly. *) fun addPolymorphism c = if constrArity = 0 orelse justForEqualityTypes then c else mkEval(c, localArgList) open ValueConstructor val locProps = (* Get the declaration location. *) List.foldl(fn (DeclaredAt loc, _) => [ContextLocation loc] | (_, l) => l) [] locations val nameCode = codePrettyBlock(0, false, locProps, codeList([codePrettyString name], CodeZero)) val printCode = if nullary then (* Just the name *) nameCode else let val typeOfArg = constructorResult(typeOf, List.map TypeVar argTypes) val getValue = mkEval(addPolymorphism(extractProjection constructorCode), [argCode]) in codePrettyBlock(1, false, [], codeList( [ (* Put it in a block with the declaration location. *) nameCode, codePrettyBreak (1, 0), (* Print the argument and parenthesise it if necessary. *) mkEval(parenCode, [ mkEval( printerForType(typeOfArg, innerLevel, newTypeVarMap), [mkTuple[getValue, decDepth depthCode]] )] ) ], CodeZero)) end in (* If this was the last or only constructor we don't need to test. *) checkDepth(depthCode, 1, if null rest then printCode else let val testValue = mkEval(addPolymorphism(extractTest constructorCode), [argCode]) in mkIf(testValue, printCode, printerForConstructors rest) end, codePrettyString "...") end | printerForConstructors _ = raise InternalError ("No constructors:"^name) val printerCode = printerForConstructors vConstrs in (* Wrap this in the functions for the base types. *) if constrArity = 0 then mkProc(printerCode, 1, "print-"^name, getClosure innerLevel, 0) else mkProc(mkEnv(getCachedTypeValues newTypeVarMap, mkProc(printerCode, 1, "print-"^name, getClosure innerLevel, 0)), constrArity, "print"^name^"()", getClosure nLevel, 0) end (* Opaque matching and functor application create new type IDs using an existing type as implementation. The equality function is inherited whether the type was specified as an eqtype or not. The print function is no longer inherited. Instead a new reference is installed with a default print function. This hides the implementation. *) (* If this is a type function we're going to generate a new ref anyway so we don't need to copy it. *) fun codeGenerativeId{source=TypeId{idKind=TypeFn([], resType), ...}, isEq, mkAddr, level, ...} = let (* Monotype abbreviation. *) (* Create a new type value cache. *) val typeVarMap = defaultTypeVarMap(mkAddr, level) open TypeValue val eqCode = if not isEq then CodeZero else (* We need a function that takes two arguments rather than a single pair. *) makeEq(resType, level, fn (typeId, _, l) => codeId(typeId, l), typeVarMap) val boxedCode = boxednessForType(resType, level, fn (typeId, _, l) => codeId(typeId, l), typeVarMap) val sizeCode = sizeForType(resType, level, fn (typeId, _, l) => codeId(typeId, l), typeVarMap) in mkEnv( TypeVarMap.getCachedTypeValues typeVarMap, createTypeValue { eqCode = eqCode, boxedCode = boxedCode, sizeCode = sizeCode, printCode = mkAllocateWordMemory( mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), codePrintDefault) }) end | codeGenerativeId{source=TypeId{idKind=TypeFn(argTypes, resType), ...}, isEq, mkAddr, level, ...} = let (* Polytype abbreviation: All the entries in the tuple are functions that must be applied to the base type values when the type constructor is used. *) (* Create a new type value cache. *) val typeVarMap = defaultTypeVarMap(mkAddr, level) val nArgs = List.length argTypes fun createCode(makeCode, name) = let val nLevel = newLevel level val addrs = ref 0 fun mkAddr n = !addrs before (addrs := !addrs + n) local val args = List.tabulate(nArgs, fn addr => fn l => mkLoadParam(addr, l, nLevel)) in val typeEnv = ListPair.zipEq(argTypes, args) end val argTypeMap = extendTypeVarMap(typeEnv, mkAddr, nLevel, typeVarMap) val innerFnCode = makeCode(nLevel, argTypeMap) in mkProc(mkEnv(getCachedTypeValues argTypeMap, innerFnCode), nArgs, name, getClosure nLevel, !addrs) end open TypeValue (* Create a print function.*) val printCode = createCode(fn _ => codePrintDefault, "print-helper()") and eqCode = if not isEq then CodeZero else createCode(fn(nLevel, argTypeMap) => makeEq(resType, nLevel, fn (typeId, _, l) => codeId(typeId, l), argTypeMap), "equality()") and boxedCode = createCode(fn(nLevel, argTypeMap) => boxednessForType(resType, nLevel, fn (typeId, _, l) => codeId(typeId, l), argTypeMap), "boxedness()") and sizeCode = createCode(fn(nLevel, argTypeMap) => sizeForType(resType, nLevel, fn (typeId, _, l) => codeId(typeId, l), argTypeMap), "size()") in mkEnv( TypeVarMap.getCachedTypeValues typeVarMap, createTypeValue { eqCode = eqCode, boxedCode = boxedCode, printCode = mkAllocateWordMemory( mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), printCode), sizeCode = sizeCode }) end | codeGenerativeId{source=sourceId, isDatatype, mkAddr, level, ...} = let (* Datatype. This is the same for monotype and polytypes except for the print fn. *) (* We hide the print function if the target is just a type name but if the target is a datatype it's probably better to have a print function. We inherit it from the source although that may expose the representation of other types. e.g. structure S:> sig type t datatype s = A of t end = ... *) open TypeValue val { dec, load } = multipleUses (codeId(sourceId, level), fn () => mkAddr 1, level) val loadLocal = load level val arity = case sourceId of TypeId{idKind=Bound{arity, ...},...} => arity | TypeId{idKind=Free{arity, ...},...} => arity | TypeId{idKind=TypeFn _,...} => raise InternalError "Already checked" val printFn = if isDatatype then mkLoadOperation(LoadStoreMLWord{isImmutable=false}, extractPrinter loadLocal, CodeZero) else if arity = 0 then codePrintDefault else mkProc(codePrintDefault, arity, "print-helper()", [], 0) val printCode = mkAllocateWordMemory( mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), printFn) in mkEnv( dec, createTypeValue { eqCode = extractEquality loadLocal, printCode = printCode, boxedCode = extractBoxed loadLocal, sizeCode = extractSize loadLocal } ) end (* Create the equality and type functions for a set of mutually recursive datatypes. *) fun createDatatypeFunctions( typeDatalist: {typeConstr: typeConstrSet, eqStatus: bool, boxedCode: codetree, sizeCode: codetree } list, mkAddr, level, typeVarMap, makePrintFunction) = let (* Each entry has an equality function and a ref to a print function. The print functions for each type needs to indirect through the refs when printing other types so that if a pretty printer is later installed for one of the types the others will use the new pretty printer. That means that the code has to be produced in stages. *) (* Create the equality functions. Because mutual decs can only be functions we can't create the typeIDs themselves as mutual declarations. *) local (* If this is polymorphic make two addresses, one for the returned equality function and one for the inner function. *) fun makeEqAddr{typeConstr=TypeConstrSet(tyConstr, _), ...} = mkAddr(if tcArity tyConstr = 0 then 1 else 2) in val eqAddresses = List.map makeEqAddr typeDatalist (* Make addresses for the equalities. *) end val equalityFunctions = mkMutualDecs(equalityForDatatypes(typeDatalist, eqAddresses, level, typeVarMap)) (* Create the typeId values and set their addresses. The print function is initially set as zero. *) local fun makeTypeId({typeConstr, boxedCode, sizeCode, ...}, eqAddr) = let val var = vaLocal(idAccess(tcIdentifier(tsConstr typeConstr))) val newAddr = mkAddr 1 open TypeValue val idCode = createTypeValue { eqCode=mkLoadLocal eqAddr, printCode= mkAllocateWordMemory( mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), CodeZero (* Temporary - replaced by setPrinter. *)), boxedCode = boxedCode, sizeCode = sizeCode } in #addr var := newAddr; #level var:= level; mkDec(newAddr, idCode) end in val typeIdCode = ListPair.map makeTypeId (typeDatalist, eqAddresses) end (* Create the print functions and set the printer code for each typeId. *) local fun setPrinter{typeConstr as TypeConstrSet(tCons as TypeConstrs{identifier, ...}, _), ...} = let val arity = tcArity tCons val printCode = if makePrintFunction then printerForDatatype(typeConstr, level, typeVarMap) else if arity = 0 then codePrintDefault else mkProc(codePrintDefault, arity, "print-printdefault", [], 0) in mkNullDec( mkStoreOperation(LoadStoreMLWord{isImmutable=false}, TypeValue.extractPrinter(codeId(identifier, level)), CodeZero, printCode)) end in val printerCode = List.map setPrinter typeDatalist end in equalityFunctions :: typeIdCode @ printerCode end (* Exported function. Returns a function from an ML pair of values to bool. N.B. This differs from the functions in the typeID which take a Poly pair. *) fun equalityForType(ty: types, level: level, typeVarMap: typeVarMap): codetree = let val nLevel = newLevel level (* The final result function must take a single argument. *) val resultCode = makeEq(ty, nLevel, fn (typeId, _, l) => codeId(typeId, l), typeVarMap) in (* We need to wrap this up in a new inline function. *) mkInlproc(mkEval(resultCode, [mkInd(0, arg1), mkInd(1, arg1)]), 1, "equality", getClosure nLevel, 0) end (* This code is used when the type checker has to construct a unique monotype because a type variable has escaped to the top level. The equality code always returns true and the printer prints "?". *) fun codeForUniqueId() = let open TypeValue val alwaysTrue = mkProc(CodeTrue, 2, "codeForUniqueId-equal", [], 0) val printCode = mkAllocateWordMemory( mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), codePrintDefault) in createTypeValue{ eqCode = alwaysTrue, printCode = printCode, boxedCode = boxedEither, sizeCode = singleWord } end val noEquality = mkProc(CodeFalse, 2, "noEquality", [], 0) (* Since we don't have a way of writing a "printity" type variable there are cases when the printer will have to fall back to this. e.g. if we have a polymorphic printing function as a functor argument. *) val noPrinter = codePrintDefault (* If this is a polymorphic value apply it to the type instance. *) fun applyToInstance'([], level, _, code) = code level (* Monomorphic. *) | applyToInstance'(sourceTypes, level, polyVarMap, code) = let (* If we need either the equality or print function we generate a new entry and ignore anything in the cache. *) fun makePolyParameter {value=t, equality, printity} = if equality orelse printity then let open TypeValue fun getTypeValueForID(typeId, _, l) = codeId(typeId, l) val eqCode = if equality then makeEq(t, level, fn (typeId, _, l) => codeId(typeId, l), polyVarMap) else noEquality val boxedCode = boxednessForType(t, level, getTypeValueForID, polyVarMap) val printCode = if printity then printerForType(t, level, polyVarMap) else noPrinter val sizeCode = sizeForType(t, level, getTypeValueForID, polyVarMap) in createTypeValue{ eqCode=eqCode, printCode=printCode, boxedCode=boxedCode, sizeCode=sizeCode} end else (* If we don't require the equality or print function we can use the cache. *) case findCachedTypeCode(polyVarMap, t) of SOME (code, _) => code level | NONE => let val maxCache = getMaxDepth polyVarMap (t, 1) val cacheEntry = List.nth(polyVarMap, List.length polyVarMap - maxCache) val { cache, mkAddr, level=decLevel, ...} = cacheEntry local open TypeValue val boxedCode = boxednessForType(t, decLevel, fn (typeId, _, l) => codeId(typeId, l), polyVarMap) val sizeCode = sizeForType(t, decLevel, fn (typeId, _, l) => codeId(typeId, l), polyVarMap) in val typeValue = createTypeValue{ eqCode=noEquality, printCode=noPrinter, boxedCode=boxedCode, sizeCode=sizeCode} end (* Make a new entry and put it in the cache. *) val decAddr = mkAddr 1 val () = cache := {decCode = mkDec(decAddr, typeValue), typeOf = t, address = decAddr } :: !cache in mkLoad(decAddr, level, decLevel) end in mkEval(code level, List.map makePolyParameter sourceTypes) end (* For now limit this to equality types. *) fun applyToInstance(sourceTypes, level, polyVarMap, code) = applyToInstance'( List.filter(fn {equality, ...} => not justForEqualityTypes orelse equality) sourceTypes, level, polyVarMap, code) structure Sharing = struct type typeId = typeId type codetree = codetree type types = types type typeConstrs= typeConstrs type typeConstrSet=typeConstrSet type typeVarForm=typeVarForm type typeVarMap = typeVarMap type codeBinding = codeBinding type level = level end end; polyml-5.7.1/mlsource/MLCompiler/PARSE_DEC.ML0000644000175000017500000027530013204034553017421 0ustar daviddavid(* Copyright (c) 2000-7 Cambridge University Technical Services Limited Further Development Copyright 2009, 2016 David C.J. Matthews. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Parse Expressions and Declarations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor PARSE_DEC ( structure SYMBOLS : SymbolsSig structure SYMSET : SymsetSig structure LEX : LEXSIG structure SKIPS : sig type sys type lexan type symset type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val getsym: sys * lexan -> unit val badsyms: sys * lexan -> unit val notfound: string * lexan -> unit val skipon: symset * symset * string * lexan -> unit val getid: symset * symset * lexan -> string * location val getLabel: symset * lexan -> string * location val getList: sys * symset * lexan * (unit -> 'a * location) -> 'a list * location; end; structure STRUCTVALS : STRUCTVALSIG; structure TYPETREE : TYPETREESIG; structure PARSETREE : PARSETREESIG structure STRUCTURES : STRUCTURESSIG structure SIGNATURES: SIGNATURESSIG structure PARSETYPE : sig type symset; type lexan; type types; type typeParsetree; type typeVarForm type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val parseType: symset * lexan * {lookupTvar:string -> typeVarForm} -> typeParsetree * location; end; structure UTILITIES : sig type lexan type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option } val checkForDots: string * lexan * location -> unit val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; end; structure MISC : sig val lookupDefault : ('a -> 'b option) -> ('a -> 'b option) -> 'a -> 'b option end; sharing STRUCTVALS.Sharing = TYPETREE.Sharing = PARSETREE.Sharing = STRUCTURES.Sharing = LEX.Sharing = SIGNATURES.Sharing = UTILITIES sharing SYMBOLS = SYMSET = SKIPS = LEX.Sharing sharing type PARSETYPE.types = STRUCTVALS.Sharing.types sharing type PARSETYPE.typeVarForm = STRUCTVALS.Sharing.typeVarForm sharing type PARSETYPE.typeParsetree = TYPETREE.typeParsetree sharing type SYMSET.symset = PARSETYPE.symset sharing type LEX.lexan = PARSETYPE.lexan ) : (*****************************************************************************) (* PARSEDEC export signature *) (*****************************************************************************) sig type lexan; type symset; type fixStatus; type program val parseDec: symset * lexan * { enterFix: string * fixStatus -> unit, lookupFix: string -> fixStatus option } -> program; end = (*****************************************************************************) (* PARSEDEC functor body *) (*****************************************************************************) struct open MISC; open SYMBOLS open SYMSET; infix 9 ++; infix 4 inside; open LEX; open SKIPS; open STRUCTVALS; open TYPETREE; open PARSETREE; open STRUCTURES; open PARSETYPE; open UTILITIES; open SIGNATURES (* constant sets defined here to reduce run-time garbage SPF 24/9/94 *) val structureLocalSy = structureSy ++ localSy; val structureLocalStartDecSy = structureSy ++ localSy ++ startDecSys; val commaRightCurlySy = comma ++ rightCurly; val declarableVarOpSy = declarableVarSys ++ opSy; val declarableVarLetSy = declarableVarSys ++ letSy; val startTypeDeclarableVarOpSy = startTypeSys ++ declarableVarOpSy; val startDecStructureSy = startDecSys ++ structureSy; val ofVerticalBarSy = ofSy ++ verticalBar; val semicolonStartDecSy = semicolon ++ startDecSys; val semicolonStartDecStructureSy = semicolonStartDecSy ++ structureSy; val commaRightBrackSy = comma ++ rightBrack; val rightParenCommaSy = rightParen ++ comma; val rightParenSemicolonSy = rightParen ++ semicolon; val rightParenSemicolonCommaSy = rightParenSemicolonSy ++ comma; val rightParenEqualsSignSy = rightParen ++ equalsSign; val colonAsSy = colon ++ asSy; val colonEqualsSignSy = colon ++ colonGt ++ equalsSign; val thenStartExpressionSy = thenSy ++ startExpressionSys; val elseStartExpressionSy = elseSy ++ startExpressionSys; val ofStartMatchSy = ofSy ++ startMatchSys; val semicolonEndSy = semicolon ++ endSy val andalsoColonSy = andalsoSy ++ colon; val withTypeWithSy = withtypeSy ++ withSy; val ofEqualsSignSy = ofSy ++ equalsSign; val inEndSy = inSy ++ endSy; val startSigEndSy = startSigSys ++ endSy; val startSigEndAndSy = startSigEndSy ++ andSy; val endAndSy = endSy ++ andSy; val semicolonStartSigSys = startSigSys ++ semicolon; val topdecStartSy = functorSy ++ signatureSy ++ structureLocalStartDecSy; fun mkLocalFixEnv {lookupFix,lookupTvar, ...} = let val newFixEnv = searchList (); in { enterFix = #enter newFixEnv, lookupFix = lookupDefault (#lookup newFixEnv) lookupFix, lookupTvar = lookupTvar } end; fun mkLocalBodyFixEnv {enterFix,lookupFix,lookupTvar} outerEnterFix = { enterFix = fn p => (enterFix p; outerEnterFix p), lookupFix = lookupFix, lookupTvar = lookupTvar } fun getLongId (kind, fsys, lex): string * location = getid (kind, fsys, lex); fun getShortId (kind, fsys, lex): string * location = let val idLoc as (iden, location) = getid (kind, fsys, lex); val () = checkForDots (iden, lex, location); in idLoc end; (* Attributes of type variables. *) fun isEqtype name = size name > 1 andalso String.str(String.sub(name, 1)) = "'"; (* Global declarations *) fun parseDec (fsys, lex, {enterFix, lookupFix}) : program = let (* These procedures to parse type declarations are used in both signature and expression parsing. *) fun getTypeVars (isDatatype, {apply,enter,...}) = let (* Optional type identifier or sequence of type identifiers. Used in type and datatype declarations and also in val and fun declarations. *) (* The type identifiers must be remembered since they will occur subsequently in the components. This is the only case where type variables are actually bound. *) fun getTypeVar (): typeVarForm * location = (* Read a type variable and return it. *) case sy lex of TypeIdent => let val iden = id lex; val locn = location lex (* Each type variable must be distinct. *) val () = apply (fn (nm,_) => if nm = iden (* Same name ? *) then errorMessage (lex, location lex, nm ^ " has already been used.") else () ); (* Construct a type variable and enter it. Equality is only set if this is a datatype (or abstype). The type variable should be non-unifiable to get value-constructor signature checking right.*) (* DCJM 11/2/00. isDatatype is now true for tyvarseqs in fun and val. I don't think it matters what it is set to in datatypes. *) val isEqtype = isDatatype andalso isEqtype iden; val tyVar = makeTv {value=emptyType, level=generalisable, equality=isEqtype, nonunifiable=true, printable=false} in enter (iden, tyVar); insymbol lex; (tyVar, locn) end | _ => ( badsyms (SYMBOLS.TypeIdent, lex); (makeTv {value=emptyType, level=generalisable, equality=true, nonunifiable=true, printable=false}, location lex) ) in (* May be one type variable or a bracketed sequence. *) case sy lex of TypeIdent => [#1(getTypeVar())] (* One type var. *) | LeftParen => (* Sequence. *) ( insymbol lex; (* There is an awkward parsing problem here if we have either val (a, b) = ... or fun (a X b) = ... We only know that we haven't got a tyvarseq once we find a symbol that isn't a tyvar. The easiest way round this is to push the parenthesis back into the lex stream and return an empty tyvarseq. *) case sy lex of TypeIdent => let val (t, _) = getList (SYMBOLS.Comma, typeIdent, lex, getTypeVar); in getsym (SYMBOLS.RightParen, lex); t end | _ => (pushBackSymbol(lex, SYMBOLS.LeftParen); [] ) ) | _ => [] (* None at all. *) end; (* getTypeVars *) fun getLongNonInfix opThere sys fsys lex {lookupFix,...} = let (* op followed by a (long) variable *) val idLoc as (id, location) = getLongId (sys, fsys, lex); val isInfix = case lookupFix id of SOME(FixStatus(_, Infix _)) => true | SOME(FixStatus(_, InfixR _)) => true | _ => false in if isInfix andalso not opThere then warningMessage (lex, location, "(" ^ id ^") has infix status but was not preceded by op.") else (); idLoc end; fun andBindings(fsys, p: symset -> 'a * location) : 'a list * location = (* Handles a sequence of non-recursive declarations separated by "and". Returns the list plus the spanning location. *) let val (item, itemLocn) = p (fsys ++ andSy) in case sy lex of AndSy => let val () = insymbol lex val (rest, restLocn) = andBindings(fsys, p) in (item::rest, locSpan(itemLocn, restLocn)) end | _ => ([item], itemLocn) end fun genTypeVarEnv {lookup,...} = { (* All type variables used on the right-hand side of the type binding must have been declared before the new type constructor *) lookupTvar = fn name => (case lookup name of SOME t => t | NONE => ( errorMessage (lex, location lex, name ^ " has not been declared in type declaration"); makeTv {value=emptyType, level=generalisable, equality=false, nonunifiable=true, printable=false} ) ) } (* genTypeVarEnv *); fun typeBinding (isSpec, isEqtype, _) fsys = let val newTVenv = searchList (); val typeVars = getTypeVars (false, newTVenv); (* The name of the type *) val (typeName, idLocn) = getShortId (ident, fsys ++ equalsSign, lex); (* val typeVarEnv = { lookupTvar = lookupDefault (#lookup newTVenv) lookupTvar } *) val typeVarEnv = genTypeVarEnv newTVenv; val (matchedType, endLocn) = (* If this is part of a signature we do not need to have an "= ty" after it. If it is an eqtype we must not have one. *) if (isSpec andalso (sy lex) <> SYMBOLS.EqualsSign) orelse isEqtype then (NONE, idLocn) else let val () = getsym (SYMBOLS.EqualsSign, lex); (* Followed by a type or a sequence of constructors *) val () = skipon (startTypeSys, fsys, "type", lex); val (t, l) = parseType (fsys, lex, typeVarEnv) in (SOME t, l) end val bindLocn = locSpan(idLocn, endLocn) in (mkTypeBinding (typeName, typeVars, matchedType, isEqtype, idLocn, bindLocn), bindLocn) end (* typeBinding *); fun datatypeDecOrRepl(fsys, env, isSpecification, startLocn) = (* "datatype" has been read. This may be followed by tycon = datatype ... if it is a datatype replication or by tyvarseq tycon = vid ... if it is a datatype binding. We can only distinguish the two when we reach either the second datatype or an identifier. This is used both for declarations and for specifications. *) let val () = insymbol lex; val newTVenv = searchList (); (* The type variables will be empty if this is a replication. *) val typeVars = getTypeVars (true, newTVenv); (* The name of the type *) val (typeName, idLocn) = getShortId (ident, fsys ++ equalsSign, lex); val () = getsym (SYMBOLS.EqualsSign, lex); in case sy lex of DatatypeSy => (* Replication *) let (* Check that the type var sequence was empty. *) val () = case typeVars of [] => () | _ => errorMessage (lex, location lex, "Datatype replication must not contain type variables"); val () = insymbol lex; val (originalTypeName, repLocn) = getLongId (ident, fsys, lex); val fullLocn = locSpan(startLocn, repLocn) in (mkDatatypeReplication{newType=typeName, oldType=originalTypeName, newLoc=idLocn, oldLoc=repLocn, location=fullLocn}, fullLocn) end | _ => (* Binding *) let (* Process the rest of this binding. *) val (db, dbLocn) = datatypeBind (fsys ++ withtypeSy ++ andSy, typeName, typeVars, newTVenv, idLocn, isSpecification); (* Process any others *) val (dbs, dbsLocn) = case sy lex of AndSy => ( insymbol lex; andBindings (fsys ++ withtypeSy, datatypeBinding isSpecification) ) | _ => ([], dbLocn) val (withtypes, lastLocn) = case sy lex of WithtypeSy => ( insymbol lex; andBindings(fsys, typeBinding(false, false, env)) ) | _ => ([], dbsLocn) val fullLocn = locSpan(startLocn, lastLocn) in (mkDatatypeDeclaration (db :: dbs, withtypes, fullLocn), fullLocn) end end and datatypeBind (fsys, typeName, typeVars, newTVenv, idLocn, isSpecification) = (* Process the rest of a binding. *) let (* Followed by a type or a sequence of constructors *) val () = skipon (startTypeDeclarableVarOpSy, fsys, "type", lex); (* In ML 90 all type variables on the right hand side of a datbind had to appear in the tyvarseq on the left. That restriction appears to have been removed for declarations, but not specifications, in ML97. This appears, though, to have been a mistake so I'm reinstating the old behaviour. *) (* val typeVarEnv = { lookupTvar = lookupDefault (#lookup newTVenv) (#lookupTvar env) } *) val typeVarEnv = genTypeVarEnv newTVenv; fun constrs fsys = let val () = case sy lex of OpSy => ( if isSpecification then warningMessage (lex, location lex, "``op'' may not appear before a constructor in a specification.") else (); insymbol lex ) | _ => () (* Identifier - name of constructor *) val (constrName, idLocn) = getShortId (declarableVarSys, fsys ++ ofVerticalBarSy, lex) (* If there is an "of" after this then the constructor is a function from the type following the "of" to the type being declared. Otherwise it is a constant of the type being declared. *) val (component, componentLoc) = case sy lex of OfSy => let val () = insymbol lex;(* Followed by a type. *) val (theType,typeLocn) = parseType (fsys ++ verticalBar, lex, typeVarEnv) in (mkValueConstr(constrName, SOME theType, idLocn), locSpan(idLocn, typeLocn)) end | _ => (mkValueConstr(constrName, NONE, idLocn), idLocn); in case sy lex of VerticalBar => let val () = insymbol lex val (tail, locn) = constrs fsys in (component :: tail, locSpan(componentLoc, locn)) end | _ => ([component], componentLoc) end val (constrs, constrsLocn) = constrs fsys val bindLocn = locSpan(idLocn, constrsLocn) in (mkDatatypeBinding (typeName, typeVars, constrs, idLocn, bindLocn), bindLocn) end and datatypeBinding isSpecification fsys = (* Datatype and abstype declarations and datatype specifications. *) let val newTVenv = searchList (); val typeVars = getTypeVars (true, newTVenv); (* The name of the type *) val (typeName, idLocn) = getShortId (ident, fsys ++ equalsSign, lex); val () = getsym (SYMBOLS.EqualsSign, lex); in datatypeBind (fsys, typeName, typeVars, newTVenv, idLocn, isSpecification) end; (* infix, infixr and nonfix *) fun fixity (lex, env) = let val sym = sy lex and startLocn = location lex val () = insymbol lex fun getPrecedence() = case sy lex of IntegerConst => (* Read a precedence number *) let val num = valOf(Int.fromString (id lex)) in if num < 0 orelse num > 9 then errorMessage (lex, location lex, "Precedence " ^ id lex ^ " not allowed, must be between 0 and 9") else (); insymbol lex; num end | _ => 0 (* default is zero *); val fixForm = case sym of NonfixSy => Nonfix | InfixSy => Infix(getPrecedence()) | InfixrSy => InfixR(getPrecedence()) | _ => raise Misc.InternalError "fixity" (* Should now be at least one variable. *) val () = skipon (variableSys, fsys, "Variable", lex); (* Read the variables and put them in the environ with their fix status. Qualified names prohibited. *) fun vars endLoc = if (sy lex) inside variableSys then let val (iden, idLoc) = getShortId (variableSys, fsys, lex); val () = #enterFix env (iden, FixStatus(iden, fixForm)) val (tail, endLoc) = vars idLoc in (iden :: tail, endLoc) end else ([], endLoc); val (variables, endLoc) = vars startLocn val fullLocn = locSpan(startLocn, endLoc) in (mkDirective (variables, fixForm, fullLocn), fullLocn) end fun makeTypeVarEnv() = (* Make an environment for type variables. A type variable is put into the environment if it is not already there. Type variables are always put into the most local scope first and then tidied up in the second pass. *) let val {enter,lookup,apply} = searchList (); (* Type variables used here should go in the scope of the most local val or fun. *) fun lookupT name = let (* These type variables are not unifiable until they are generalised. *) val newTypeVar = makeTv {value=emptyType, level=generalisable, equality=isEqtype name, nonunifiable=true, printable=false} val () = enter (name, newTypeVar); in newTypeVar end; in { lookupTvar = fn s => case lookup s of SOME t => t | NONE => lookupT s, lookup = lookup, apply = apply, enter = enter } end (* makeTypeVarEnv *); fun dec (fsys, lex, decOnly, env as {enterFix,...}): parsetree * location = let (* Sequence of declarations optionally separated by semicolons. *) fun decSequence(fsys, env) : parsetree list = if (sy lex) = SYMBOLS.Semicolon then (* Semicolons are optional. *) (insymbol lex; decSequence(fsys, env)) else if (sy lex) inside startDecSys then #1(dec(fsys ++ semicolonStartDecSy, lex, true, env)) :: decSequence(fsys, env) else (* May be empty *) []; (* Constraints *) fun constraint (exp, expLoc) fsys (env as {lookupTvar, ...}) = case sy lex of Colon => let val () = insymbol lex val (constrType, typeLoc) = parseType (fsys ++ colon, lex, {lookupTvar=lookupTvar}) val locs = locSpan(expLoc, typeLoc) in constraint (mkConstraint (exp, constrType, locs), locs) fsys env end | _ =>(exp, expLoc); fun getConstant mkConst = let (* Return the string. *) val data = id lex; (* Save it before insymbol. *) val loc = location lex in insymbol lex; mkConst(data, loc) end; fun parseInfix fsys opSys startSys atomic{lookupFix: string -> fixStatus option, ... } = let (* Infix operators have a precedence value associated with them, the larger the value the more tightly they bind. *) val opStartSy = opSy ++ startSys; fun parseApplication fsys (funExp, funLoc) : parsetree * location = (* Applies a function to an argument and then tries to apply that to the next expression/pattern. *) if (sy lex) inside startSys then (* Read an argument and apply the constructor *) if (sy lex) inside opSys andalso ( (* It is infix if we find it and it has been declared as infix. If it hasn't been declared then it isn't infix. *) case lookupFix(id lex) of SOME (FixStatus(_, Infix _)) => true | SOME (FixStatus(_, InfixR _)) => true | _ => false ) then (* it's an infix operator - don't treat it as an arg. *) (funExp, funLoc) else let val (arg, argLoc) = atomic (fsys ++ startSys) val appLoc = locSpan(funLoc, argLoc) in parseApplication fsys (mkApplic (funExp, arg, appLoc, false), appLoc) end else (funExp, funLoc); (* end parseApplication *) fun readNextOps () = (* Gets the operand and the following operator (if any) *) let val express = (* function applications *) parseApplication (fsys ++ opSys) (atomic (fsys ++ opStartSy)); val (operator, loc, fix) = if (sy lex) inside opSys then let val (id, loc) = getLongId (opSys, fsys, lex) val FixStatus(_, fixity) = valOf(lookupFix id) in (id, loc, fixity) end else ("", nullLocation, Nonfix); val (preclevl, right) = (* ~1 if not infix or infixr *) case fix of Infix prec => (prec, false) | InfixR prec => (prec, true) | Nonfix => (~1, false) (* Not infix *); in {express=express,operator=(operator,loc),preclevl=preclevl,right=right} end; fun nextLevel {express: parsetree*location,operator: string*location,preclevl,right} (returnLevel, lastRight, lastOp) = let val next = readNextOps(); (* get the next operator and operand.*) (* In ML97 two operators of the same precedence must both be left associative or both right associative. We actually have to check this in two different places depending on whether these are consecutive operators or there is a higher precedence operator in the middle. *) fun checkAssociativity(op1, op2 (* Type includes unused express field. *)) = if #preclevl op1 = #preclevl op2 andalso #right op1 <> #right op2 then errorMessage (lex, location lex, concat["Operators \"", #1(#operator op1), "\" and \"", #1 (#operator op2), "\" have the same precedence but \"", #1(#operator op1), "\" is ", if #right op1 then "right" else "left", "-associative while \"", #1 (#operator op2), "\" is ", if #right op2 then "right" else "left", "-associative."]) else (); val () = checkAssociativity({right=right, operator=operator, preclevl=preclevl}, next) val rightOp = if #preclevl next > preclevl orelse (* next operator is more binding-it must be processed first *) right andalso #preclevl next = preclevl then nextLevel next (preclevl, right, operator) else next; (* At this point we are either at the end of the expression or ``rightOp'' contains an operator which is as weak or weaker than the ``previous''. We can therefore apply the previous operator to the previous operand and the ``rightOp'' operand. *) val oper = mkIdent operator; val appLocn = locSpan(#2 express, #2 (#express rightOp)) val applied = { express = (mkApplic (oper, mkTupleTree([#1 express, #1 (#express rightOp)], appLocn), appLocn, true), appLocn), operator = #operator rightOp, preclevl = #preclevl rightOp, right = #right rightOp }; (* If the right operator is stronger than the ``returnLimit'' (i.e. stronger than the operator before this series) then repeat else return this result. *) in checkAssociativity({right=lastRight, operator=lastOp, preclevl=returnLevel}, rightOp); if #preclevl rightOp > returnLevel orelse #preclevl rightOp = returnLevel andalso lastRight then nextLevel applied (returnLevel, lastRight, lastOp) else applied end (* nextLevel *); (* parseInfix *) val ops = readNextOps (); (* Get the first item. *) in if #preclevl ops < 0 (* no operator *) then #express ops else #express (nextLevel ops (~1, false, ("", nullLocation))) end (* parseInfix *); fun pattern fsys lex env = (* Parse a pattern or a fun name apat ... apat sequence. *) let fun constraintOrLayered (pat, patLoc) fsys = let val isVar = isIdent pat; val (constr, constrLoc) = constraint (pat, patLoc) (fsys ++ asSy) env; in case sy lex of AsSy => let (* Layered pattern *) val () = insymbol lex val () = if not isVar then errorMessage (lex, location lex, "Expected id or id:ty before `as'") else (); val (lPatt, lPattLoc) = pattern fsys lex env val layeredLoc = locSpan(patLoc, lPattLoc) in (mkLayered (constr, lPatt, layeredLoc), layeredLoc) end | _ => (constr, constrLoc) end fun atomicPattern fsys: parsetree * location = let val sym = sy lex; val startLocn = location lex in case sym of Underline (* wild card *) => ( insymbol lex; (wildCard startLocn, startLocn) ) | LeftBrack (* list - may be empty *) => let val () = insymbol lex; val p = case sy lex of RightBrack => [] (* may be empty *) | _ => let fun varsList() = let val (p, _) = pattern (fsys ++ commaRightBrackSy) lex env in case sy lex of Comma => (insymbol lex; p :: varsList()) | _ => [p] end in varsList() end val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.RightBrack, lex); in (mkList(p, locs), locs) end (* bracketed pattern or unit value. *) | LeftParen => let val () = insymbol lex; val p = case sy lex of RightParen => (* unit *) unit(locSpan(startLocn, location lex)) | _ => let val (first,_) = pattern (fsys ++ rightParenCommaSy) lex env; (* May be a tuple *) in case sy lex of Comma => let val () = insymbol lex (* It is a tuple - read the other patterns and make the tuple. *) fun tuples () = let val (p, _) = pattern (fsys ++ rightParenCommaSy) lex env in case sy lex of Comma => (insymbol lex; p :: tuples()) | _ => [p] end in mkTupleTree (first :: tuples(), locSpan(startLocn, location lex)) end | _ => (* just one *) mkParenthesised(first, locSpan(startLocn, location lex)) end val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.RightParen, lex); in (p, locs) end (* Either a labelled record or unit. *) | LeftCurly => let val () = insymbol lex; val posEnd = location lex in case sy lex of RightCurly => (* Empty brackets denote unit *) let val () = insymbol lex val locs = locSpan(startLocn, posEnd) in (unit locs, locs) end | _ => let (* lab1 = pat1, __ , labn = patn <<, ... >>*) (* The same label name should not be used more than once. *) fun reportDup (name, newLoc, _) = errorMessage(lex, newLoc, "Label (" ^ name ^ ") appears more than once.") val dupCheck = noDuplicates reportDup fun getLabels () = case sy lex of ThreeDots => (insymbol lex; {frozen = false, result = []}) | _ => let val fsys = fsys ++ commaRightCurlySy; val (ident, idLoc) = getLabel (fsys ++ equalsSign, lex); val () = #enter dupCheck (ident, idLoc) (* Check for dups. *) val (patt, pattLoc) = case sy lex of EqualsSign => (* Simple case -- lab = pat *) (insymbol lex; pattern fsys lex env) | _ =>(* sugared form - label is also identifier *) ( (* Sugared form not allowed for numeric labels. *) if 0 < size ident andalso String.str(String.sub(ident, 0)) >= "1" andalso String.str(String.sub(ident, 0)) <= "9" then errorMessage (lex, location lex, " = pat expected after numeric label") else (); (* May have constraint and/or be layered. *) constraintOrLayered (mkIdent (ident, idLoc), idLoc) fsys ) val labEntry = mkLabelRecEntry(ident, idLoc, patt, locSpan(idLoc, pattLoc)) in case sy lex of Comma => let val () = insymbol lex val getRest = getLabels (); in {frozen = #frozen getRest, result = labEntry :: #result getRest} end | _ => (* Finished. *) {frozen = true, result = [labEntry]} end (* getLabels *) val {frozen, result} = getLabels (); val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.RightCurly, lex); in (mkLabelledTree (result, frozen, locs), locs) end end (* Constants *) | StringConst => (getConstant mkString, startLocn) | IntegerConst => (getConstant mkInt, startLocn) | RealConst => ( (* Real literals were allowed in patterns in ML90. *) errorMessage (lex, location lex, "Real constants not allowed in patterns"); (getConstant mkReal, startLocn) ) | CharConst => (getConstant mkChar, startLocn) | WordConst => (getConstant mkWord, startLocn) | _ => if (sy lex) inside declarableVarOpSy (* Identifiers *) then let val opThere = (sy lex) = SYMBOLS.OpSy; val () = if opThere then insymbol lex else (); val idLoc as (_, endLoc) = getLongNonInfix opThere declarableVarSys fsys lex env in (mkIdent idLoc, locSpan(startLocn, endLoc)) end else (skipon (empty, fsys, "Pattern", lex); (emptyTree, startLocn)) end (* atomicPattern *); (* pattern *) val () = skipon (startPatternSys, fsys, "Pattern", lex); val patAndLoc = constraintOrLayered (parseInfix (fsys ++ colonAsSy) declarableVarSys startPatternSys atomicPattern env) fsys; val () = skipon (fsys, empty, "End of pattern", lex); in patAndLoc end (* pattern *); fun expression fsys env: parsetree * location = (* Parse an expression *) let fun expressionList(fsys, separator, env): parsetree list = (* Sequence of expressions separated by semicolons or commas. Returns the list and strips the locations. *) #1 (getList (separator, empty, lex, fn () => expression fsys env)); fun match fsys: matchtree list * location = (* vs1.exp1 | .. | vsn.expn *) let val () = skipon (startMatchSys, fsys, "Match", lex); (* Read the pattern. *) val (vars, varLoc) = pattern (fsys ++ thickArrow) lex env; val () = (* We expect to get a => here but a common problem is to confuse matches with fun declarations and use a = here. We report it as an error but swallow it as though it was what we wanted. *) case sy lex of ThickArrow => insymbol lex | _ => ( notfound ("=>", lex); if (sy lex) = SYMBOLS.EqualsSign then insymbol lex else () ) (* And now the expression. *) val (exp, expLoc) = expression (fsys ++ verticalBar) env; (* Construct this node, and append any more. *) val thisLocn = locSpan(varLoc, expLoc) val thisMatch = mkMatchTree (vars, exp, thisLocn) val res = case sy lex of VerticalBar => let val () = insymbol lex val (m, mloc) = match fsys in (thisMatch :: m, locSpan(thisLocn, mloc)) end | _ => ([thisMatch], thisLocn) in skipon (fsys, empty, "End of match", lex); res end (* end match *); fun atomicExpression fsys: parsetree * location = let val startSym = sy lex and startLocn = location lex in case startSym of LeftBrack => let val () = insymbol lex; val p = if sy lex <> SYMBOLS.RightBrack (* may be empty *) then expressionList (fsys ++ commaRightBrackSy, SYMBOLS.Comma, env) else []; val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.RightBrack, lex); in (mkList(p, locs), locs) end (* A parenthesised expression, a tuple, a sequence or a unit value *) | LeftParen => let val () = insymbol lex; val posEnd = location lex in case sy lex of RightParen => (* Empty parentheses denote unit *) let val () = insymbol lex val locs = locSpan(startLocn, posEnd) in (unit locs, locs) end | _ => let val (firstExp, _) = expression (fsys ++ rightParenSemicolonCommaSy) env; val (exps, fullLocn) = case sy lex of Comma => (* Tuple *) let val () = insymbol lex val expressions = firstExp :: expressionList (fsys ++ rightParenCommaSy, SYMBOLS.Comma, env) val locs = locSpan(startLocn, location lex) in (mkTupleTree (expressions, locs), locs) end | Semicolon => (* Expression sequence. *) let val () = insymbol lex val expressions = firstExp :: expressionList (fsys ++ rightParenSemicolonSy, SYMBOLS.Semicolon, env) val locs = locSpan(startLocn, location lex) in (mkExpseq (expressions, locs), locs) end | _ => (* Only one *) let val locs = locSpan(startLocn, location lex) in (mkParenthesised(firstExp, locs), locs) end; val () = getsym (SYMBOLS.RightParen, lex); in (exps, fullLocn) end end (* Either a labelled record or unit. *) | LeftCurly => let val () = insymbol lex; val posEnd = location lex in case sy lex of RightCurly => (* Empty brackets denote unit *) let val () = insymbol lex val locs = locSpan(startLocn, posEnd) in (unit locs, locs) end | _ => let (* lab1 = exp1, __ , labn = expn *) (* The same label name should not be used more than once. *) fun reportDup (name, newLoc, _) = errorMessage(lex, newLoc, "Label (" ^ name ^ ") appears more than once.") val dupCheck = noDuplicates reportDup fun getEntry () = let val (ident, idLoc) = getLabel (fsys ++ equalsSign, lex); val () = #enter dupCheck (ident, idLoc) (* Check for dups. *) val () = getsym (SYMBOLS.EqualsSign, lex); val (labExp, labLoc) = expression (fsys ++ commaRightCurlySy) env val locs = locSpan(idLoc, labLoc) in (mkLabelRecEntry(ident, idLoc, labExp, locs), locs) end val (labs, _) = getList (SYMBOLS.Comma, empty, lex, getEntry) val locs = locSpan(startLocn, location lex) (* Include brackets. *) val labelled = mkLabelledTree (labs, true (* always frozen *), locs) val () = getsym (SYMBOLS.RightCurly, lex); in (labelled, locs) end end (* local declaration *) | LetSy => let val () = insymbol lex; val newEnv = mkLocalFixEnv env val decs = decSequence (fsys ++ inSy, newEnv); val () = getsym (SYMBOLS.InSy, lex); val exp = expressionList (fsys ++ semicolonEndSy, SYMBOLS.Semicolon, newEnv); val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.EndSy, lex); val () = skipon (fsys, empty, "End of let expression", lex); in (mkLocalDeclaration (decs, exp, locs, false) (* "let" rather than "local"*), locs) end (* ordinary expression - qualified names allowed *) | _ => let val opThere = startSym = SYMBOLS.OpSy; val () = if opThere then insymbol lex else (); val sym = sy lex; val symLoc = location lex in case sym of HashSign (* Selector. *) => let val () = insymbol lex; val (lab, labLoc) = getLabel (fsys, lex) val locs = locSpan(startLocn, labLoc) in (mkSelector(lab, locs), locs) end | StringConst => (getConstant mkString, locSpan(startLocn, symLoc)) | IntegerConst => (getConstant mkInt, locSpan(startLocn, symLoc)) | RealConst => (getConstant mkReal, locSpan(startLocn, symLoc)) | WordConst => (getConstant mkWord, locSpan(startLocn, symLoc)) | CharConst => (getConstant mkChar, locSpan(startLocn, symLoc)) | _ => if sym inside variableSys then let val (ident, idLoc) = getLongNonInfix opThere variableSys fsys lex env in (mkIdent (ident, idLoc), locSpan(startLocn, idLoc)) end else (* Expected something e.g. an identifier. *) (badsyms (SYMBOLS.Ident, lex); (emptyTree, symLoc)) end end(* end atomicExpression *); fun keyWordExp fsys: parsetree * location = (* Expressions introduced by keywords, atomic expressions or infixed expressions. Expressions introduced by keywords (e.g. if) swallow all of the rest of the expression but they can appear within other keyword expressions or after "andalso" and "orelse". *) let val sym = sy lex; val startLocn = location lex in (* if expression *) case sym of IfSy => let val () = insymbol lex; val (test, _) = expression (fsys ++ thenStartExpressionSy) env; val () = getsym (SYMBOLS.ThenSy, lex); val (thenPt, _) = expression (fsys ++ elseStartExpressionSy) env; val () = getsym (SYMBOLS.ElseSy, lex); val (elsePt, elseLocn) = expression fsys env; val locs = locSpan(startLocn, elseLocn) in (mkCond (test, thenPt, elsePt, locs), locs) end (* while expression *) | WhileSy => let val () = insymbol lex; val (test, testLocn) = expression (fsys ++ doSy) env; in if (sy lex) = SYMBOLS.DoSy then let val () = insymbol lex; val (doExp, doLocn) = expression fsys env val locs = locSpan(startLocn, doLocn) in (mkWhile (test, doExp, locs), locs) end else (badsyms (SYMBOLS.DoSy, lex); (test, testLocn)) end (* case expression *) | CaseSy => let val () = insymbol lex; val (exp, _) = expression (fsys ++ ofStartMatchSy) env; val () = getsym (SYMBOLS.OfSy, lex); val (m, matchLoc) = match (fsys ++ semicolon) val locs = locSpan(startLocn, matchLoc) in (mkCase (exp, m, locs, matchLoc), locs) end (* raise exception *) | RaiseSy => let val () = insymbol lex; val (exp, expLoc) = expression fsys env val locs = locSpan(startLocn, expLoc) in (mkRaise (exp, locs), locs) end (* fn expression *) | FnSy => let val () = insymbol lex; val (m, matchLoc) = match (fsys ++ semicolon) val locs = locSpan(startLocn, matchLoc) in (mkFn (m, locs), locs) end (* type constraint, or similar *) | _ => let val exp = parseInfix (fsys ++ andalsoColonSy) variableSys startAtomicSys atomicExpression env in constraint exp (fsys ++ andalsoSy) env end end (* keyWordExp *); fun parseAndalso fsys = (* EXP1 andalso EXP2 = if EXP1 then EXP2 else false *) let val (first, firstLoc) = keyWordExp (fsys ++ andalsoSy); (* N.B. If the expression had been introduced by a keyword (e.g. if) then the "else" part would have swallowed any "andalso". *) in case sy lex of AndalsoSy => let val () = insymbol lex; val (right, rightLoc) = parseAndalso fsys val locs = locSpan(firstLoc, rightLoc) in (mkAndalso (first, right, locs), locs) end | _ => (first, firstLoc) end; fun parseOrelse fsys = (* EXP1 orelse EXP2 = if EXP1 then true else EXP2 *) let val (first, firstLoc) = parseAndalso (fsys ++ orelseSy); in case sy lex of OrelseSy => let val () = insymbol lex; val (right, rightLoc) = parseOrelse fsys val locs = locSpan(firstLoc, rightLoc) in (mkOrelse (first, right, locs), locs) end | _ => (first, firstLoc) end; in skipon (startExpressionSys, fsys, "Expression", lex); if (sy lex) inside startExpressionSys then let val (exp, expLoc) = parseOrelse (fsys ++ handleSy); in case sy lex of HandleSy => let val () = insymbol lex; (* Remove "handle" *) val (m, mLoc) = match fsys val locs = locSpan(expLoc, mLoc) in (mkHandleTree (exp, m, locs, mLoc), locs) end | _ => (exp, expLoc) end else (emptyTree (* No expression *), location lex) end; (* expression *) in (* One declaration. "decOnly" is true if the derived form exp => val it = exp is not allowed here. *) if decOnly orelse (sy lex) inside startDecSys then let val sym = sy lex; val startLocn = location lex in case sym of ValSy => let val () = insymbol lex; (* Create two different scopes, for explicitly declared type variables and those implicitly declared. *) val implicitTvars = makeTypeVarEnv() and explicitTvars = makeTypeVarEnv(); val newEnv = {enterFix = #enterFix env, lookupFix = #lookupFix env, lookupTvar = (* Look up type variables in the explicit environment, otherwise look them up and add them to the implicit environment. *) fn s => case #lookup explicitTvars s of SOME t => t | NONE => #lookupTvar implicitTvars s}; (* Tyvarseq *) val _ = getTypeVars(true, { enter = #enter explicitTvars, lookup = #lookup explicitTvars, apply = #apply explicitTvars}); (* Processes a value binding. *) (* We check for qualified names in the second pass *) fun valB(fsys, isRec) = case sy lex of RecSy => (insymbol lex; valB(fsys, true)) | _ => let (* Pattern *) val (vars, varLoc) = pattern (fsys ++ equalsSign) lex newEnv; (* = *) val () = getsym (SYMBOLS.EqualsSign, lex); (* expression *) val (exp, expLoc) = expression fsys newEnv; (* Other declarations. *) val (tail, tailLocn) = case sy lex of AndSy => (insymbol lex; valB(fsys, isRec)) | _ => ([], expLoc) in (mkValBinding (vars, exp, isRec, locSpan(varLoc, expLoc)) :: tail, tailLocn) end val (bindings, bindLocns) = valB (fsys ++ andSy, false) val fullLocn = locSpan(startLocn, bindLocns) in (mkValDeclaration (bindings, {lookup= #lookup explicitTvars, apply= #apply explicitTvars}, {lookup= #lookup implicitTvars, apply= #apply implicitTvars}, fullLocn), fullLocn) end | FunSy => let val () = insymbol lex; (* Create two different scopes, for explicitly declared type variables and those implicitly declared. *) val implicitTvars = makeTypeVarEnv() and explicitTvars = makeTypeVarEnv(); val newEnv = {enterFix = #enterFix env, lookupFix = #lookupFix env, lookupTvar = fn s => case #lookup explicitTvars s of SOME t => t | NONE => #lookupTvar implicitTvars s}; (* Tyvarseq *) val _ = getTypeVars(true, { enter = #enter explicitTvars, lookup = #lookup explicitTvars, apply = #apply explicitTvars}); fun funB fsys = (* Processes a fun binding. *) (* We check for qualified names in the second pass *) let fun bindings soFar = let (* Pattern - This isn't really a pattern but we can parse it as that initially. That results in accepting some invalid syntax so we need to check the parsed code. *) val (vars, varLoc) = pattern (fsys ++ equalsSign) lex newEnv; (* Get the name and number of args. *) val (funPattern, funName, argCount) = mkFunPattern(vars, lex) val () = case soFar of SOME(prevName, prevCount) => ( if prevName = funName then () else errorMessage (lex, location lex, "This clause defines function ``" ^ funName ^ "'' but previous clause(s) defined ``" ^ prevName ^ "''"); if prevCount = argCount then () else errorMessage (lex, location lex, "This clause has " ^ Int.toString argCount ^ " arguments but previous clause(s) had " ^ Int.toString prevCount) ) | NONE => () (* This was first. *) (* = *) (* We expect an equals sign here but a common problem is to confuse fun declarations with matches and use a => here. Report the error but swallow the =>. *) val () = case sy lex of EqualsSign => insymbol lex | _ => ( notfound ("=", lex); case sy lex of ThickArrow => insymbol lex | _ => () ) (* expression *) val (exp, expLoc) = expression (fsys ++ verticalBar) newEnv; val bind = mkClause (funPattern, exp, locSpan(varLoc, expLoc)); (* Followed by a vertical bar and another binding ? *) val (rest, endLoc) = case sy lex of VerticalBar => (insymbol lex; bindings(SOME(funName, argCount))) | _ => ([], expLoc) in (bind :: rest, locSpan(varLoc, endLoc)) end; val (bindings, bindLocns) = bindings NONE in (mkClausal (bindings, bindLocns), bindLocns) end (* funB *); val (bindings, bindLocns) = andBindings(fsys, funB); val fullLocn = locSpan(startLocn, bindLocns) in (mkFunDeclaration (bindings, {lookup= #lookup explicitTvars, apply= #apply explicitTvars}, {lookup= #lookup implicitTvars, apply= #apply implicitTvars}, fullLocn), fullLocn) end | TypeSy => let val () = insymbol lex; val (bindings, bindLocns) = andBindings(fsys, typeBinding(false, false, env)) val fullLocn = locSpan(startLocn, bindLocns) in (mkTypeDeclaration (bindings, fullLocn), fullLocn) end | DatatypeSy => datatypeDecOrRepl(fsys, env, false, startLocn) | AbstypeSy => let val () = insymbol lex; val (tb, _) = andBindings (fsys ++ withTypeWithSy, datatypeBinding false); val (withtypes, _) = case sy lex of WithtypeSy => ( insymbol lex; andBindings (fsys ++ withSy, typeBinding(false, false, env)) ) | _ => ([], startLocn); val () = getsym (SYMBOLS.WithSy, lex); val decs = decSequence (fsys ++ endSy, env); val fullLocn = locSpan(startLocn, location lex) in getsym (SYMBOLS.EndSy, lex); (mkAbstypeDeclaration (tb, withtypes, decs, fullLocn), fullLocn) end | ExceptionSy => let (* Declares exception identifiers and their types. *) val () = insymbol lex; (* Get an exception binding. Qualified names prohibited. *) fun exceptionBinding fsys = let (* Allow an "op" here but don't produce a warning if it's absent. *) val () = if (sy lex) = SYMBOLS.OpSy then insymbol lex else () (* First the identifier. *) val (iden, idLoc) = getShortId (variableSys, fsys ++ ofEqualsSignSy, lex); in (* Either excon of ty or excon = excon' *) case sy lex of OfSy => let val () = insymbol lex val (theType, typeLocn) = parseType (fsys ++ equalsSign, lex, {lookupTvar= #lookupTvar env}) val fullLoc = locSpan(idLoc, typeLocn) in (mkExBinding (iden, emptyTree, SOME theType, idLoc, fullLoc), fullLoc) end | EqualsSign => let (* Must be = excon' *) val () = insymbol lex (* Allow an "op" here but don't produce a warning if it's absent. *) val () = if (sy lex) = SYMBOLS.OpSy then insymbol lex else () val (oldIden, oldIdenLoc) = getLongId (variableSys, fsys, lex); val fullLoc = locSpan(idLoc, oldIdenLoc) in (mkExBinding (iden, mkIdent(oldIden, oldIdenLoc), NONE, idLoc, fullLoc), fullLoc) end | _ => (mkExBinding (iden, emptyTree, NONE, idLoc, idLoc), idLoc) end; val (bindings, bindLocns) = andBindings(fsys, exceptionBinding) val fullLocn = locSpan(startLocn, bindLocns) in (mkExDeclaration (bindings, fullLocn), fullLocn) end | LocalSy => let val () = insymbol lex; (* Infix status have this scope. Type-variables have the scope of the enclosing val or fun. *) val newEnv = mkLocalFixEnv env (* The local declaration *) val ins = decSequence (fsys ++ inEndSy, newEnv); val () = getsym (SYMBOLS.InSy, lex); (* Decs are added to both the local and surrounding environment. *) val resultEnv = mkLocalBodyFixEnv newEnv enterFix val body = decSequence (fsys ++ endSy, resultEnv) val locs = locSpan(startLocn, location lex) in getsym (SYMBOLS.EndSy, lex); (mkLocalDeclaration (ins, body, locs, true), (*"local" rather than "let"*) locs) end | InfixSy => fixity(lex, env) | InfixrSy => fixity(lex, env) | NonfixSy => fixity(lex, env) (* "open" declaration - qualified names allowed *) | OpenSy => let val () = insymbol lex fun vars endLoc = if (sy lex) inside variableSys then let val (id, idLoc) = getLongId (variableSys, fsys, lex); val (tail, tailLoc) = vars idLoc in (mkStructureIdent(id, idLoc) :: tail, tailLoc) end else ([], endLoc); in if (sy lex) inside variableSys then let val (vars, varLocns) = vars startLocn val fullLocn = locSpan(startLocn, varLocns) in (mkOpenTree(vars, fullLocn), fullLocn) end else (* Identifier missing. *) (badsyms (SYMBOLS.Ident, lex); (emptyTree, startLocn)) end | _ => (emptyTree, startLocn) (* Empty declaration. *) end else let (* Single expression allowed - short for val it = exp *) val newTvars = makeTypeVarEnv(); val explicitTvars = makeTypeVarEnv();(* This will always be empty. *) val newEnv = {enterFix = #enterFix env, lookupFix = #lookupFix env, lookupTvar = #lookupTvar newTvars}; val (exp, expLoc) = expression fsys newEnv in (mkValDeclaration ([mkValBinding (mkIdent ("it", nullLocation), exp, false, expLoc)], {lookup= #lookup explicitTvars,apply= #apply explicitTvars}, {lookup= #lookup newTvars,apply= #apply newTvars}, expLoc), expLoc) end end (* dec *); (* Parses a signature. *) fun parseSignature (fsys : symset) (lex : lexan) env : sigs * location = let (* May be either a signature name or a sig spec .. spec end seq followed by multiple where type expressions. *) val () = skipon (declarableVarSys ++ sigSy, fsys, "Start of signature", lex) val startLocn = location lex val sigexp : sigs * location = case sy lex of SigSy => let (* sig *) val () = insymbol lex val sigs = signatureSpec (fsys ++ endSy ++ whereSy ++ semicolon) lex env val locs = locSpan(startLocn, location lex) in getsym (SYMBOLS.EndSy, lex); (mkSig (sigs, locs), locs) end | Ident => let val ident as (_, locs) = getShortId (declarableVarSys, fsys ++ whereSy, lex) in (mkSigIdent ident, locs) end | _ => (* Only if parse error which will have been reported in skipon. *) (mkSigIdent("error", location lex), location lex); fun getWhereTypes(sigexp, sigLoc) = let (* This is similar to a type binding but with the possibility that the type is a longtycon. *) val () = getsym(SYMBOLS.TypeSy, lex); val newTVenv = searchList (); val typeVars = getTypeVars (false, newTVenv); val (typeName, nameLoc) = getLongId (ident, fsys ++ equalsSign, lex); val typeVarEnv = genTypeVarEnv newTVenv; val () = getsym (SYMBOLS.EqualsSign, lex); (* Followed by a type or a sequence of constructors *) val () = skipon (startTypeSys, fsys, "type", lex); val (theType, typeLoc) = parseType (fsys ++ whereSy ++ andSy, lex, typeVarEnv) val constrainedSig = (mkWhereType(sigexp, typeVars, typeName, theType, nameLoc), locSpan(sigLoc, typeLoc)) in case sy lex of WhereSy => (* Recurse to handle any other wheres. *) (insymbol lex; getWhereTypes constrainedSig) | AndSy => ( insymbol lex; (* There are two possibilities here. It may be the start of another type abbreviation or it may be the start of another signature. *) case sy lex of TypeSy => getWhereTypes constrainedSig | _ => (* Push the "and" back into the lexer so it can be picked out later. *) ( pushBackSymbol(lex, SYMBOLS.AndSy); constrainedSig ) ) | _ => constrainedSig end in case sy lex of WhereSy => (insymbol lex; getWhereTypes sigexp) | _ => sigexp end (* parseSignature *) (* Sequence of "specs" *) and signatureSpec (fsys : symset) (lex : lexan) (env as {lookupTvar, ...}) : specs list = let val signatureTvars = makeTypeVarEnv(); fun parseSigEntries () : specs list = let val () = skipon (fsys ++ semicolonStartSigSys, fsys, "Signature", lex) val sym = sy lex and startLocn = location lex val thisSig = case sym of DatatypeSy => let val startLocn = location lex val sys = fsys ++ startSigEndSy val newenv = {enterFix = #enterFix env, lookupFix = #lookupFix env, (* All type variables on the right hand side of a datatype specification must appear on the left. *) lookupTvar = fn name => ( errorMessage (lex, location lex, name ^ " has not been declared in type declaration"); badType ) } in [mkCoreType (datatypeDecOrRepl(sys, newenv, true, startLocn))] end | TypeSy => (* It isn't obvious whether specifications of the form type s and t = int * int (i.e. mixed specifications and abbreviations) are allowed. For the moment allow them. *) let val sys = fsys ++ startSigEndSy val () = insymbol lex; val (bindings, bindLocns) = andBindings(sys, typeBinding(true, false, env)) in [mkCoreType (mkTypeDeclaration(bindings, bindLocns), locSpan(startLocn, bindLocns))] end | EqtypeSy => let val sys = fsys ++ startSigEndSy val () = insymbol lex; val (bindings, bindLocns) = andBindings(sys, typeBinding(true, true, env)) in [mkCoreType (mkTypeDeclaration(bindings, bindLocns), locSpan(startLocn, bindLocns))] end | ValSy => let val () = insymbol lex fun doVal () = let val idAndLoc as (_, idLoc) = getShortId (declarableVarSys, fsys ++ colon, lex); val () = getsym (SYMBOLS.Colon, lex); val (ty, tyLoc) = parseType (fsys ++ startSigEndAndSy, lex, {lookupTvar = #lookupTvar signatureTvars}); val locs = locSpan(idLoc, tyLoc) in (mkValSig (idAndLoc, ty, locs), locs) end in #1 (getList (SYMBOLS.AndSy, empty, lex, doVal)) end (* val *) | ExceptionSy => let(* exception id1 of ty1 and _ and idn of tyn *) val () = insymbol lex fun doEx () = let val idAndLoc as (_, idLoc) = getShortId (variableSys, fsys ++ ofSy, lex) val (ty, locs) = case sy lex of OfSy => let val () = insymbol lex val (types, tyLoc) = parseType (fsys ++ startSigEndAndSy, lex, {lookupTvar = lookupTvar}) in (SOME types, locSpan(idLoc, tyLoc)) end | _ => (* Nullary *) (NONE, idLoc); in (mkExSig (idAndLoc, ty, locs), locs) end in #1 (getList (SYMBOLS.AndSy, empty, lex, doEx)) end (* exception *) | StructureSy => let val () = insymbol lex fun doStructure () = let val idAndLoc as (_, idLoc) = getShortId (variableSys, empty, lex) val () = getsym (SYMBOLS.Colon, lex) val (sgn, sgnLoc) = parseSignature (fsys ++ startSigEndAndSy) lex env val locs = locSpan(idLoc, sgnLoc) in (mkStructureSigBinding (idAndLoc, (sgn, false, sgnLoc), locs), locs) end in [mkStructureSig(getList(SYMBOLS.AndSy, empty, lex, doStructure))] end | IncludeSy => let (* In ML 97 we can have "include sigexp" but in addition as a derived form we can have "include ident...ident". Presumably this is for backwards compatibility. sigexp may be a single identifier but could also be an identifier with a "where type" constraint. I hate this sort of inconsistency. The simplest way to deal with this is to parse the first one as a general signature and then allow multiple identifiers. That is rather more general than the syntax allows and perhaps we should check that the first signature was simply an identifier. *) val () = insymbol lex val () = skipon (declarableVarSys ++ sigSy, fsys, "Start of signature", lex) val (firstSig, firstLoc) = parseSignature (fsys ++ startSigEndSy ++ declarableVarSys) lex env fun sigids locs = case sy lex of Ident => let val nameLoc as (_, loc) = getShortId (declarableVarSys, fsys, lex) val (rest, lastLoc) = sigids loc in (mkSigIdent nameLoc :: rest, lastLoc) end | _ => ([], locs) val (otherSigs, finalLoc) = sigids firstLoc in [mkInclude (firstSig :: otherSigs, locSpan(startLocn, finalLoc))] end | SharingSy => let (* sharing *) val startLocn = location lex val () = insymbol lex val isType = case sy lex of TypeSy => (insymbol lex; true) | _ => false fun getShare () = let val (id, loc) = getLongId (declarableVarSys, fsys ++ rightParenEqualsSignSy, lex) in (* We want to include the location in the list as well as in the result here. *) ((id, loc), loc) end val (shares, _) = getShare () val () = getsym (SYMBOLS.EqualsSign, lex) val (shareRest, shareLocn) = getList (SYMBOLS.EqualsSign, ident, lex, getShare) val fullLoc = locSpan(startLocn, shareLocn) val share = mkSharing (isType, shares :: shareRest, fullLoc) in [share] end | _ => [] (* Empty. *) (* end of parse of thisSig *) (* continue until the `end' *) val () = case sy lex of Semicolon => insymbol lex | _ => () in if (sy lex) inside semicolonStartSigSys then thisSig @ parseSigEntries () else thisSig end (* parseSigEntries *) in parseSigEntries () end (* signatureSpec *); fun signatureDec (fsys : symset) (lex : lexan) env : topdec = let val startLocn = location lex val () = insymbol lex fun doSigDec () = let val idAndLoc as (_, idLoc) = getShortId (variableSys, empty, lex); val () = getsym (SYMBOLS.EqualsSign, lex) val (sgn, sigLoc) = parseSignature (fsys ++ endAndSy) lex env val locs = locSpan(idLoc, sigLoc) in (mkSignatureBinding (idAndLoc, sgn, locs), locs) end val (sigs, sigLoc) = getList (SYMBOLS.AndSy, empty, lex, doSigDec) in mkSignatureDec (sigs, locSpan(startLocn, sigLoc)) end fun structVal (fsys : symset) (lex : lexan) env : structValue * location = let (* Series of declarations inside struct...end or (...) in functor application. *) val () = skipon (structSy ++ declarableVarLetSy, fsys, "struct or functor application", lex); val fsysPcolon = fsys ++ colon ++ colonGt val startLocn = location lex val strExp = case sy lex of StructSy => let(* It's a new structure *) val () = insymbol lex (* Infix declarations are local to struct ... end. *) val structEnv = mkLocalFixEnv env val str = strDec (fsysPcolon ++ endSy) lex structEnv val locs = locSpan(startLocn, location lex) val () = getsym (SYMBOLS.EndSy, lex) in (mkStruct(str, locs), locs) end | LetSy => let val () = insymbol lex (* Fixity is local. *) val newEnv = mkLocalFixEnv env (* The local declaration *) val ins = strDec (fsysPcolon ++ inEndSy) lex newEnv val () = getsym (SYMBOLS.InSy, lex) val body = #1 (structVal (fsysPcolon ++ endSy) lex newEnv) val endLoc = location lex val () = getsym (SYMBOLS.EndSy, lex) val locs = locSpan(startLocn, endLoc) in (mkLetdec (ins, body, locs), locs) end | _ => let (* Either a structure path or a functor application *) val (iden, idLoc) = getLongId (declarableVarSys, fsysPcolon ++ leftParen, lex); val startLoc = location lex in case sy lex of LeftParen => let (* functor application *) val () = insymbol lex (* Functor names must not be qualified. *) val () = checkForDots (iden, lex, idLoc); val parameter = case sy lex of RightParen => (* Empty parameter list *) mkStruct([], locSpan(startLoc, location lex)) | _ => let val tsys = fsysPcolon ++ rightParenCommaSy in (* May be either a structure value or a sequence of declarations. *) if (sy lex) inside startDecStructureSy then (* implied struct...end *) let val structEnv = mkLocalFixEnv env val str = strDec tsys lex structEnv val locs = locSpan(startLoc, location lex) in mkStruct(str, locs) end else #1 (structVal tsys lex env) end val endPos = location lex val () = getsym (SYMBOLS.RightParen, lex) val locs = locSpan(idLoc, endPos) in (mkFunctorAppl (iden, parameter, idLoc, locs), locs) end | _ => (mkStructIdent (iden, idLoc), idLoc) end (* We may have one or more constraints. *) fun doConstraints (strExp, strExpLoc) = case sy lex of Colon => let val () = insymbol lex val (sign, sigLoc) = parseSignature fsysPcolon lex env in doConstraints(mkSigConstraint(strExp, sign, false, sigLoc), locSpan(strExpLoc, sigLoc)) end | ColonGt => let val () = insymbol lex val (sign, sigLoc) = parseSignature fsysPcolon lex env in doConstraints(mkSigConstraint(strExp, sign, true, sigLoc), locSpan(strExpLoc, sigLoc)) end | _ => (strExp, strExpLoc) in doConstraints strExp end (* structVal *) and structureDec (fsys : symset) (lex : lexan) (env as {enterFix, ...}) : structDec = let val startLocn = location lex in case sy lex of StructureSy => let val () = insymbol lex fun doStrDec () = let (* Read strId <<: sig>> = str *) (* First the identifier *) val idAndLoc as (_, idLoc) = getShortId (declarableVarSys, fsys ++ colonEqualsSignSy, lex); (* Next the signature if there is one. *) val sgn = case sy lex of Colon => let val () = insymbol lex val (sign, sigLoc) = parseSignature (fsys ++ equalsSign) lex env in SOME (sign, false, sigLoc) end | ColonGt => let val () = insymbol lex val (sign, sigLoc) = parseSignature (fsys ++ equalsSign) lex env in SOME (sign, true, sigLoc) end | _ => NONE (* Now the equals sign *) val () = getsym (SYMBOLS.EqualsSign, lex) val (strVal, strLoc) = structVal fsys lex env val locs = locSpan(idLoc, strLoc) in (* And finally the structure value. *) (mkStructureBinding (idAndLoc, sgn, strVal, locs), locs) end val (strs, strLocs) = getList (SYMBOLS.AndSy, structSy, lex, doStrDec) in mkStructureDec (strs, locSpan(startLocn, strLocs)) end | _ => let val () = getsym (SYMBOLS.LocalSy, lex) val startLoc = location lex val newEnv = mkLocalFixEnv env (* The local declaration *) val ins = strDec (fsys ++ inEndSy) lex newEnv val () = getsym (SYMBOLS.InSy, lex) (* Decs are added to both the local and surrounding environment. *) val resultEnv = mkLocalBodyFixEnv newEnv enterFix val body = strDec (fsys ++ endSy) lex resultEnv val endLoc = location lex val () = getsym (SYMBOLS.EndSy, lex) in mkLocaldec (ins, body, locSpan(startLoc, endLoc)) end end (* end of structureDec *) (* Functor declarations. *) and functorDec (fsys : symset) (lex : lexan) env : topdec = let val startLocn = location lex val () = insymbol lex; (* remove ``functor'' *) fun doFunctDec () : functorBind * location = let (* Read fncId (<> ) <<: sig>> = str *) (* First the identifier *) val (strId, idLocn) = getShortId (declarableVarSys, fsys ++ colonEqualsSignSy, lex); val () = getsym (SYMBOLS.LeftParen, lex); (* Now the parameters *) val tsys = fsys ++ rightParenCommaSy; val parameter = (* empty | name:sigexp | spec *) if (sy lex) = SYMBOLS.RightParen (* empty *) then mkFormalArg ("", mkSig([], location lex)) else if (sy lex) inside startSigSys (* spec *) then let val startLocn = location lex val sigs = signatureSpec tsys lex env in mkFormalArg ("", mkSig (sigs, locSpan(startLocn, location lex))) end (* name : sigexp *) else let val (strId, _) = getShortId (declarableVarSys, tsys ++ colon, lex); val () = getsym (SYMBOLS.Colon, lex) (* Next the signature. *) val (sgn, _) = parseSignature (tsys ++ sharingSy) lex env in mkFormalArg (strId, sgn) end (* parameter *) val () = getsym (SYMBOLS.RightParen, lex) (* Next the signature if there is one. *) val sigOpt = case sy lex of Colon => let val () = insymbol lex val (sign, sigLoc) = parseSignature (fsys ++ equalsSign) lex env in SOME(sign, false, sigLoc) end | ColonGt => let val () = insymbol lex val (sign, sigLoc) = parseSignature (fsys ++ equalsSign) lex env in SOME(sign, true, sigLoc) end | _ => NONE (* Now the equals sign *) val () = getsym (SYMBOLS.EqualsSign, lex) (* And finally the functor value. *) val (strVal, strLoc) = structVal fsys lex env val locs = locSpan(idLocn, strLoc) in (mkFunctorBinding (strId, idLocn, sigOpt, strVal, parameter, locs), locs) end (* doFunctDec *) val (functs, functLoc) = getList (SYMBOLS.AndSy, structSy, lex, doFunctDec) in mkFunctorDec (functs, locSpan(startLocn, functLoc)) end (* functorDec *) and strDec (fsys : symset) (lex : lexan) env : structDec list = (* A sequence of declarations, optionally separated by semicolons. *) let fun getDecs () : structDec list = let val tsys = fsys ++ semicolonStartDecStructureSy; in (* Semicolons are optional. *) if (sy lex) = SYMBOLS.Semicolon then let val () = insymbol lex in getDecs () end else if (sy lex) inside structureLocalSy then (structureDec tsys lex env) :: getDecs() else if (sy lex) inside startDecSys then (mkCoreLang (dec(tsys, lex, true, env))) :: getDecs() else (* May be empty *) [] end (* getDecs *) in (* Return the declarations. *) getDecs () end (* strDec *); val globalEnv = (* Extend the fixity environment with a type var environment which traps top-level type variables in exceptions. *) { enterFix = enterFix, lookupFix = lookupFix, lookupTvar = fn _ => let val () = errorMessage (lex, location lex, "Free type variables not allowed"); in makeTv {value=emptyType, level=generalisable, equality=false, nonunifiable=true, printable=false} end} (* May be structure/functor dec, signature dec or top-level dec. Treat "local" as a structure dec even if it is actually declaring a value or type. *) val tsys = fsys ++ startTopSys; fun parseTopDecs (_ : symset) : topdec list * location = let val startSym = sy lex and startLoc = location lex; in if startSym = SYMBOLS.Semicolon orelse startSym = SYMBOLS.AbortParse then ([], startLoc) else if startSym inside topdecStartSy then let val (aDec : topdec, newOkStartSet : symset) = case startSym of FunctorSy => (functorDec tsys lex globalEnv, functorSy) | SignatureSy => (signatureDec tsys lex globalEnv, signatureSy) | StructureSy => (mkTopDec(structureDec tsys lex globalEnv), structureLocalStartDecSy) (* Local declarations are ambiguous; we treat them as strDecs *) | LocalSy => (mkTopDec(structureDec tsys lex globalEnv), structureLocalStartDecSy) (* let, val, fun etc. *) | _ => (mkTopDec(mkCoreLang (dec(tsys, lex, true, globalEnv))), structureLocalStartDecSy); val (rest, locRest) = parseTopDecs newOkStartSet in (aDec :: rest, locSpan(startLoc, locRest)) end else (notfound (";", lex); ([], startLoc)) end; (* parseTopDecs *) in (* body of parseDec *) (* topdecs are either fundecs, sigdecs, strDecs (including decs) or a single expression. We now handle everything except the single expression in "parseTopDecs". This makes it easier to produce warning messages for missing semi-colons that the ML Standard requires between different kinds of topdec. SPF 18/7/96 *) if (sy lex) inside topdecStartSy then mkProgram(parseTopDecs topdecStartSy) else let (* expression - only one allowed. *) val startLoc = location lex; val aDec = mkCoreLang (dec(tsys, lex, false, globalEnv)); val () = if (sy lex) <> SYMBOLS.Semicolon andalso (sy lex) <> SYMBOLS.AbortParse then notfound (";", lex) else () in mkProgram([mkTopDec aDec], locSpan(startLoc, location lex)) end end; (* parseDec *) end (* PARSEDEC *); polyml-5.7.1/mlsource/MLCompiler/DEBUGSIG.ML0000644000175000017500000000435713204034553017267 0ustar daviddavid(* Copyright (c) 2013-2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Signature for debugging flags *) signature DEBUGSIG = sig val assemblyCodeTag : bool Universal.tag val bindingCounterTag : (unit -> FixedInt.int) Universal.tag val codetreeAfterOptTag : bool Universal.tag val codetreeTag : bool Universal.tag val createPrintFunctionsTag : bool Universal.tag val debugTag : bool Universal.tag val defaults : Universal.universal list val errorDepthTag : FixedInt.int Universal.tag val fileNameTag : string Universal.tag val getParameter : 'a Universal.tag -> Universal.universal list -> 'a val icodeTag : bool Universal.tag val inlineFunctorsTag : bool Universal.tag val lineLengthTag : FixedInt.int Universal.tag val lineNumberTag : (unit -> FixedInt.int) Universal.tag val lowlevelOptimiseTag : bool Universal.tag val maxInlineSizeTag : FixedInt.int Universal.tag val narrowOverloadFlexRecordTag : bool Universal.tag val offsetTag : (unit -> FixedInt.int) Universal.tag val parsetreeTag : bool Universal.tag val printDepthFunTag : (unit -> FixedInt.int) Universal.tag val profileAllocationTag : FixedInt.int Universal.tag val reportExhaustiveHandlersTag : bool Universal.tag val reportUnreferencedIdsTag : bool Universal.tag val reportDiscardedValuesTag: FixedInt.int Universal.tag val reportDiscardNone: FixedInt.int (* No reports *) and reportDiscardFunction: FixedInt.int (* Only report discarded functions *) and reportDiscardNonUnit: FixedInt.int (* Report discarding any non unit values *) end; polyml-5.7.1/mlsource/MLCompiler/DatatypeRep.ML0000644000175000017500000000213113204034553020304 0ustar daviddavid(* Copyright (c) 2009 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure DatatypeRep = DATATYPE_REP ( structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure TYPESTRUCT = TypeTree structure ADDRESS = Address structure MISC = Misc structure COPIER = CopierStruct structure TYPEIDCODE = TypeIDCodeStruct ) ; polyml-5.7.1/mlsource/MLCompiler/EXPORTTREESIG.sml0000644000175000017500000000604713204034553020423 0ustar daviddavid(* Copyright (c) 2009, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature EXPORTTREESIG = sig type pretty type types type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type locationProp (* Export tree. *) type ptProperties type exportTree = location * ptProperties list val PTprint: (FixedInt.int -> pretty) -> ptProperties (* Print the tree *) val PTtype: types -> ptProperties (* Type of an expression *) val PTdeclaredAt: location -> ptProperties (* Declaration location for id. *) val PTopenedAt: location -> ptProperties (* When an identifier comes from an "open" the location of the open. *) val PTstructureAt: location -> ptProperties (* When an identifier comes from open S or S.a the declaration of S. *) val PTreferences: (bool * location list) -> ptProperties (* The references to the ID. The first is true if this is exported. *) val PTparent: (unit -> exportTree) -> ptProperties val PTpreviousSibling: (unit -> exportTree) -> ptProperties val PTnextSibling: (unit -> exportTree) -> ptProperties val PTfirstChild: (unit -> exportTree) -> ptProperties val PTcompletions: string list -> ptProperties val PTbreakPoint: bool ref -> ptProperties (* Breakpoint associated with location. *) val PTdefId: FixedInt.int -> ptProperties (* Defining binding id *) val PTrefId: FixedInt.int -> ptProperties (* Reference binding id *) type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} val exportList : (navigation * 'a -> exportTree) * (unit -> exportTree) option -> 'a list -> ptProperties list val exportNavigationProps: navigation -> ptProperties list val getStringAsTree: navigation * string * location * ptProperties list -> exportTree val rootTreeTag: navigation Universal.tag val mapLocationProps: locationProp list -> ptProperties list and definingLocationProps: locationProp list -> ptProperties list (* Types that can be shared. *) structure Sharing: sig type types = types and locationProp = locationProp and pretty = pretty and ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/HashTable.ML0000644000175000017500000001704213204034553017724 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Hash table type - Creates a hash table of specified initial size. This version expands the hash table and rehashes when the table gets too full *) structure HashTable: (*****************************************************************************) (* HashTable export signature *) (*****************************************************************************) sig type 'a hash val hashMake: int -> 'a hash val hashSet: 'a hash * string * 'a -> unit val hashSub: 'a hash * string -> 'a option val fold: (string * 'a * 'b -> 'b) -> 'b -> 'a hash -> 'b (* Construct an immutable hash table from a mutable one. *) val hashFreeze: 'a hash -> 'a hash end = (*****************************************************************************) (* HashTable structure body *) (*****************************************************************************) struct exception InternalError = Misc.InternalError infix 8 sub (* Each entry in the table is a pair containing the key and the value. *) (* make namedOption local, because that means the new compiler can optimise its representation. SPF 11/5/95 *) datatype 'a namedOption = None | Some of (string * 'a); fun hashValue (N : int) (str: string) : int = Word.toInt( Word.mod( CharVector.foldr (fn (ch: char, n: Word.word) => Word.fromInt(Char.ord ch) + 0w7*n) 0w0 str, (Word.fromInt N))) (* The above function is the quickest and simplest way of computing the hash value now that we have Word.* and Word.mod compiled inline. They aren't implemented in all code-generators so it could be worth retaining the old code. DCJM 26/2/01. *) datatype 'a hash = Hash of { used: int ref, entries: 'a namedOption array ref, hash: (string -> int) ref } | Frozen of { entries: 'a namedOption vector, hash: (string -> int) }; fun hashMake (n : int) = Hash { used = ref 0, entries = ref (Array.array (n, None)), hash = ref (hashValue n) } handle Size => raise InternalError ("HashTable.hash: " ^ Int.toString n); fun hashSub (Hash {entries = ref A, hash = ref hashN, ...}, name : string) : 'a option = (* Searches the table starting from the position given by the hash value. *) let open Array (* Loops until it either finds an empty entry - in which case it returns NONE, or it finds the name it is looking for. There will always be several empty entries because we rehash if it gets too full. *) fun find i = let val h = A sub i; in case h of None => NONE | Some (n,v) => if name = n then SOME v else find ((if i = 0 then length A else i) - 1) end in find (hashN name) end | hashSub (Frozen {entries = V, hash = hashN, ...}, name : string) : 'a option = let open Vector fun find i = let val h = V sub i; in case h of None => NONE | Some (n,v) => if name = n then SOME v else find ((if i = 0 then length V else i) - 1) end in find (hashN name) end fun hashSet (Frozen _, name : string, _ : 'a) : unit = raise Fail ("Attempt to set a value with name (" ^ name ^ ") in a frozen hash table") | hashSet (Hash {entries, used, hash}, name : string, value : 'a) = let open Array (* Enters the value at the first free entry at or after the one pointed to by the hash value. *) fun enterTab (_ : 'a namedOption array, _ : int, None : 'a namedOption) = () | enterTab (A, i, entry as Some (name,_)) = let fun enter (i : int) : unit = (* Loops until it either finds an empty entry - in which case it enters the value in there, or it finds the string. *) case (A sub i) of None => update (A, i, entry) | Some (n : string, _) => if n = name then update (A, i, entry) (* Same name as previous - overwrite it *) else enter ((if i = 0 then length A else i) - 1); in enter i end val A : 'a namedOption array = !entries; val N : int = length A; val hashN : string -> int = !hash val () = enterTab (A, hashN name, Some (name, value)); val () = used := !used + 1; in (* Do we need to rehash ? *) if !used * 5 > N * 4 (* More than 80% full so rehash *) then let val newN : int = N * 2; (* Double the size *) val newA : 'a namedOption array = array (newN, None); val hashNewN : string -> int = hashValue newN; fun copyOver (index : int) : unit = if index < 0 then () else ( case (A sub index) of None => () | entry as Some (name : string,_) => enterTab (newA, hashNewN name, entry); copyOver (index - 1) ); val () = entries := newA; val () = hash := hashNewN; in copyOver (length A - 1) end else () end; (* Fold a function over each of the items in the table. *) fun fold f acc table = let val (length, getItem) = case table of Hash { entries = ref e, ...} => (Array.length e, fn i => Array.sub(e, i)) | Frozen { entries, ... } => (Vector.length entries, fn i => Vector.sub(entries, i)) fun foldF i acc = if i >= length then acc (* End of table. *) else let val next = case getItem i of None => acc | Some (name, alpha) => f (name, alpha, acc) in foldF (i+1) next end in foldF 0 acc end (* If this is a mutable hash table create an immutable one from it. The reason for this is to reduce the number of mutables stored. TODO: Possible change the size of the table rather than simply copy it. *) fun hashFreeze (Hash{entries = ref e, hash = ref hashN, ...}) = Frozen{ entries = Array.vector e, hash = hashN } | hashFreeze h = h end (* HashTable *); polyml-5.7.1/mlsource/MLCompiler/StructVals.ML0000644000175000017500000000176613204034553020211 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure StructVals = STRUCT_VALS ( structure CODETREE = CodeTree structure UNIVERSALTABLE = UniversalTable structure PRETTY = Pretty ); polyml-5.7.1/mlsource/MLCompiler/DATATYPE_REP.ML0000644000175000017500000010237313204034553020014 0ustar daviddavid(* Copyright (c) 2009, 2013, 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Operations on global and local values. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1986 *) functor DATATYPE_REP ( structure CODETREE : CODETREESIG structure STRUCTVALS : STRUCTVALSIG; structure TYPESTRUCT : TYPETREESIG structure MISC : sig exception InternalError of string; (* compiler error *) val quickSort : ('a -> 'a -> bool) -> 'a list -> 'a list end; structure ADDRESS : AddressSig structure COPIER: COPIERSIG structure TYPEIDCODE: TYPEIDCODESIG sharing STRUCTVALS.Sharing = TYPESTRUCT.Sharing = COPIER.Sharing = CODETREE.Sharing = ADDRESS = MISC = TYPEIDCODE.Sharing ) : DATATYPEREPSIG = struct open MISC; open CODETREE; open TYPESTRUCT; (* Open this first because unitType is in STRUCTVALS as well. *) open Universal; (* for tag etc. *) open STRUCTVALS; open ADDRESS; open TYPEIDCODE open COPIER val length = List.length; val orb = Word8.orb infix 7 orb; (* These are the possible representations of a value constructor. *) datatype representations = RefForm (* As for OnlyOne but must be a monotype. *) | UnitForm (* If the only value in an enumeration. *) | OnlyOne (* If only one constructor, there is no tag or box. *) (* Could be replaced by "UnboxedForm"? *) | EnumForm of { tag: word, maxTag: word } (* Enumeration - argument is the number. *) | ShortForm of word (* As EnumForm except that one datatype is BoxedForm. *) | BoxedForm (* Boxed but not tagged (only unary constructor) *) | UnboxedForm of int (* Unboxed and untagged (only unary constructor) *) | ConstForm of { value: machineWord, maxTag: word} (* Constant - argument is a tagged value. *) | TaggedBox of { tag: word, maxTag: word } (* Union - tagged and boxed. i.e. the representation is a pair whose first word is the tag and second is the value. *) | TaggedTuple of { tag: word, maxTag: word, size: int } (* Union - tagged but with in-line tuple. i.e. for a tuple of size n the representation is a tuple of size n+1 whose first word contains the tag. *) val arg1 = mkLoadArgument 0 (* saves a lot of garbage *) val mutableFlags = F_words orb F_mutable; (* allocate 1 mutable word, initialise to "v" *) fun refApplyCode v = mkAllocateWordMemory(mkConst (toMachineWord 1), mkConst (toMachineWord mutableFlags), v) local fun mkTag (tag:word) : codetree = mkConst (toMachineWord tag); (* How to apply the constructor at run-time or, if, it's a constant make it now. *) fun constrApply (test: representations, arg) : codetree = let fun tagTupleApplyCode (tag, n, arg) = mkEval (mkInlproc (mkDatatype (mkTag tag :: List.tabulate(n, fn i => mkInd(i, arg1))), 1, "", [], 0), [arg]) (* Even though unboxed tuples (e.g. list cells) are the same as tuples we need to add this extra step so that the result is a variant tuple i.e. the optimiser can tell that this may not always be a tuple. *) fun tupleApplyCode (n, arg) = mkEval (mkInlproc (mkDatatype (List.tabulate(n, fn i => mkInd(i, arg1))), 1, "", [], 0), [arg]) in case test of UnboxedForm 0 => arg (* Function - never detupled. *) | UnboxedForm size => tupleApplyCode(size, arg) | BoxedForm => mkDatatype [arg] | RefForm => refApplyCode arg | TaggedBox{tag, ...} => mkDatatype [mkTag tag, arg] | TaggedTuple{tag, size, ...} => tagTupleApplyCode(tag, size, arg) | OnlyOne => arg | ConstForm{ value, ...} => mkConst value (* tagged value. *) | EnumForm{tag, ...} => mkConst (toMachineWord tag) | ShortForm tag => mkConst (toMachineWord tag) | UnitForm => CodeZero end (* The run-time test whether a value matches a constructor. *) fun constrMatch (test: representations, value:codetree) : codetree = let fun testTag (tag, v) = mkEqualWord(mkTag tag, v) fun testTagOf(tag, maxTag, v) = mkTagTest (v, tag, maxTag) fun testBoxedTagOf (tag, maxTag, v) = testTagOf (tag, maxTag, mkInd (0, v)) (* Tag is first field. It is always present and is always the tag so we can use mkInd here rather than mkVarField. *) val testBoxed = mkNot o mkIsShort (* not (isShort v) *) (* get the tag from a TaggedBox or ConstForm *) fun loadTag (u: machineWord) : machineWord = loadWord (toAddress u, 0w0); (* tag is first field *) in case test of UnboxedForm _ => testBoxed value | BoxedForm => testBoxed value | RefForm => CodeTrue | EnumForm{tag, maxTag} => testTagOf(tag, maxTag, value) | ShortForm tag => testTag(tag, value) | TaggedBox{tag, maxTag} => testBoxedTagOf(tag, maxTag, value) | TaggedTuple{tag, maxTag, ...} => testBoxedTagOf(tag, maxTag, value) | ConstForm{value=c, maxTag} => testBoxedTagOf(toShort (loadTag c), maxTag, value) | OnlyOne => CodeTrue | UnitForm => CodeTrue end (* The run-time code to destruct a construction. *) (* shouldn't the CodeZero's raise an exception instead? No, because I think there are circumstances in which the destructor code is created even for nullary constructors. *) fun constrDestruct (test: representations, value: codetree) : codetree = let (* Copy out the fields and build a tuple. Used either if we have a tagged tuple (offset 1) or a tuple that does not need boxing (because we need to use mkVarField to extract the fields). *) fun tupleDestructCode (n, arg, offset) = mkEval ( mkInlproc (mkTuple (List.tabulate(n, fn i => mkVarField(i+offset, arg1))), 1, "", [], 0), [arg]) (* Use loadWord not indirect because the optimiser reorders indirections. *) fun refDestructCode v = mkLoadOperation(LoadStoreMLWord{isImmutable=false}, v, CodeZero) in case test of UnboxedForm 0 => value (* Function - never detupled. *) | UnboxedForm size => tupleDestructCode(size, value, 0) | BoxedForm => mkVarField (0, value) | RefForm => refDestructCode value | TaggedBox _ => mkVarField (1, value) (* contents is second field of record *) | TaggedTuple { size, ...} => tupleDestructCode(size, value, 1) | OnlyOne => value | EnumForm _ => CodeZero (* To keep optimiser happy. *) | ShortForm _ => CodeZero (* To keep optimiser happy. *) | ConstForm _ => CodeZero (* (rather than raising an exception) *) | UnitForm => CodeZero end open ValueConstructor in (* Constructors are now represented as run-time values. A nullary constructor is a pair consisting of a test function and the constructor value. A unary constructor is a triple: a test function, an injection function and a projection function. The above applies to monotypes. If this is a polytype each of these is actually a function from the base type values to the functions. *) fun createNullaryConstructor (test, tvs, name): codetree = let val numTypes = if justForEqualityTypes then 0 else List.length tvs val testFn = mkInlproc(constrMatch(test, arg1), 1, name, [], 0) (* Test function. *) and constrVal = constrApply(test, CodeZero) (* Value. *) in if numTypes = 0 then createNullaryConstr{ testMatch = testFn, constrValue = constrVal } else createNullaryConstr{ testMatch = mkInlproc(testFn, numTypes, name, [], 0), constrValue = mkInlproc(constrVal, numTypes, name, [], 0)} end fun createUnaryConstructor(test: representations, tvs, name: string): codetree = let val numTypes = if justForEqualityTypes then 0 else List.length tvs val testMatch = mkInlproc(constrMatch(test, arg1), 1, name, [], 0) (* Test function. *) and injectValue = mkInlproc(constrApply(test, arg1), 1, name, [], 0) (* Injection function. *) and projectValue = mkInlproc(constrDestruct(test, arg1), 1, name, [], 0) (* Projection function. *) in if numTypes = 0 then createValueConstr{testMatch = testMatch, injectValue = injectValue, projectValue = projectValue } else createValueConstr{ testMatch = mkInlproc(testMatch, numTypes, name, [], 0), injectValue = mkInlproc(injectValue, numTypes, name, [], 0), projectValue = mkInlproc(projectValue, numTypes, name, [], 0)} end end (* RefForm is used for "ref" (only). We use various representations of datatype / abstype constructors. Nullary constructors are represented as: UnitForm (if it's the only constructor in the datatype) EnumForm (if all the constructors are nullary) ShortForm (if there's one unary constructor) ConstForm (otherwise) Unary constructors are represented as: OnlyOne (if it's the only constructor in the datatype) UnboxedForm (if it's the only unary constructor and the argument is always a tuple e.g. list) TaggedTuple (if it's not the only unary constructor, applied to a tuple) BoxedForm (if it's the only unary constructor and the argument may not be a tuple e.g. SOME) TaggedBox (otherwise) Note that we use ConstForm, not EnumForm, for nullary constructors when the unary constructors are represented as TaggedTuple/TaggedBox because that allows the TaggedBox test to be: fn w => wordEq (loadWord (w,0), tag) rather than: fn w => not (isShort w) andalso wordEq (loadWord (w,0), tag) *) datatype constructorKind = Nullary (* a nullary constructor *) | UnaryGeneric (* a normal unary constructor *) | UnaryFunction (* unary constructor applied to a function *) | UnaryTupled of int (* a unary constructor applied to a tuple of size n *) ; fun getTupleKind t = case t of (* We cannot have flexible records here. All the fields must be listed. *) LabelledType {recList = [{typeof=t', ...}], ...} => (* Singleton records are always represented simply by the value. *) getTupleKind t' | LabelledType {recList, ...} => UnaryTupled (length recList) | FunctionType _ => UnaryFunction | TypeConstruction {constr, args, ...} => ( (* We may have a type equivalence or this may be a datatype. *) if tcIsAbbreviation constr then getTupleKind (makeEquivalent(constr, args)) else if sameTypeId (tcIdentifier constr, tcIdentifier refConstr) then UnaryGeneric (* A tuple ref is NOT the same as the tuple. *) else (* Datatype. For the moment we only consider datatypes with a single constructor since we want to find the width of the tuple. At present we simply return UnaryGeneric for all other cases but it might be helpful to return a special result when we have a datatype which we know will always be boxed. *) (* case tcConstructors constr of [Value{typeOf, class=Constructor{nullary=false, ...}, ...}] => (* This may be a polymorphic datatype in which case we have to invert the constructor to find the base type. e.g. we may have an instance (int*int) t where t was declared as datatype 'a t = X of 'a .*) getTupleKind(constructorResult(typeOf, args)) | _ => UnaryGeneric *) UnaryGeneric ) | _ => UnaryGeneric (* This now creates the functions as well as choosing the representation. *) (* N.B. The representation for the "context" and "pretty" datatypes is defined in Pretty.sml. Any changes here that may affect the representation of a datatype may require changes there as well. *) fun chooseConstrRepr(cs, tvs: types list) = let fun checkArgKind (name, EmptyType) = (Nullary, name) | checkArgKind (name, argType) = (getTupleKind argType, name) val kinds = map checkArgKind cs; fun chooseRepr [(Nullary, name)] = [createNullaryConstructor(UnitForm, tvs, name)] | chooseRepr [(UnaryGeneric, name)] = [createUnaryConstructor(OnlyOne, tvs, name)] | chooseRepr [(UnaryFunction, name)] = [createUnaryConstructor(OnlyOne, tvs, name)] | chooseRepr [(UnaryTupled _, name)] = [createUnaryConstructor(OnlyOne, tvs, name)] | chooseRepr l = let val unaryCount = List.foldl(fn((Nullary, _), n) => n | (_,n) => n+1) 0 l in case unaryCount of 0 => (* All are nullary. *) let val maxTag = Word.fromInt(List.length l)-0w1 (* Largest no is length-1 *) fun createRepr(_, []) = [] | createRepr(n, (_, name) :: t) = createNullaryConstructor(EnumForm{tag=n, maxTag=maxTag}, tvs, name) :: createRepr (n + 0w1, t) in createRepr(0w0, l) end | 1 => let (* We use this version if all the constructors are nullary (i.e. constants) except one. The unary constructor is represented by the boxed value and the nullary constructors by untagged integers. *) (* Note that "UnaryTupled 0" (which would arise as a result of a declaration of the form datatype t = A of () | ... ) can't be represented as "UnboxedForm" because "{}" is represented as a short (unboxed) integer. *) fun chooseOptimisedRepr1(_, _, []) = [] | chooseOptimisedRepr1(n, tvs, (Nullary, name) :: t) = createNullaryConstructor(ShortForm n, tvs, name) :: chooseOptimisedRepr1 (n + 0w1, tvs, t) | chooseOptimisedRepr1(n, tvs, (UnaryGeneric, name) :: t) = createUnaryConstructor(BoxedForm, tvs, name) :: chooseOptimisedRepr1(n, tvs, t) | chooseOptimisedRepr1(n, tvs, (UnaryFunction, name) :: t) = createUnaryConstructor(UnboxedForm 0, tvs, name) :: chooseOptimisedRepr1(n, tvs, t) | chooseOptimisedRepr1(n, tvs, (UnaryTupled 0, name) :: t) = createUnaryConstructor(BoxedForm, tvs, name) :: chooseOptimisedRepr1(n, tvs, t) | chooseOptimisedRepr1(n, tvs, (UnaryTupled s, name) :: t) = createUnaryConstructor(UnboxedForm s, tvs, name) :: chooseOptimisedRepr1(n, tvs, t) in chooseOptimisedRepr1(0w0, tvs, l) (* can save the box *) end | _ => let (* We use this version there's more than 1 unary constructor. *) (* With this representation constructors of small tuples make tuples of size n+1 whose first word is the tag. Nullary constructors are represented by single word objects containing the tag. *) val maxTag = Word.fromInt(List.length l) - 0w1 (* Largest no is length - 1 *) fun chooseOptimisedRepr2(_, _, []) = [] | chooseOptimisedRepr2(n, tvs, h :: t) = let val repr = case h of (Nullary, name) => let (* Make an object with the appropriate tag. Doing it here means we only do it once for this object. *) fun genConstForm (n :word) : representations = let val vec : address = allocWordData (0w1, F_words, toMachineWord n) (* The new call does not require locking but the old code still sets the F_mutable bit. *) val _ = if isMutable vec then lock vec else () in ConstForm{value=toMachineWord vec, maxTag=maxTag} end in createNullaryConstructor(genConstForm n, tvs, name) end | (UnaryGeneric, name) => createUnaryConstructor(TaggedBox{tag=n, maxTag=maxTag}, tvs, name) | (UnaryFunction, name) => createUnaryConstructor(TaggedBox{tag=n, maxTag=maxTag}, tvs, name) | (UnaryTupled i, name) => createUnaryConstructor( if i <= 4 (*!maxPacking*) then TaggedTuple {tag=n, size=i, maxTag=maxTag} else TaggedBox{tag=n, maxTag=maxTag}, tvs, name) in repr :: chooseOptimisedRepr2(n + 0w1, tvs, t) end; in chooseOptimisedRepr2(0w0, tvs, l) (* can use tagged tuples *) end end; fun makeFun c = mkInlproc(c, List.length tvs, "boxed/size", [], 0) val (boxed, size) = case tvs of [] => (* Monotype *) (TypeValue.boxedEither, TypeValue.singleWord) | _ => (* Polytype *) (makeFun TypeValue.boxedEither, makeFun TypeValue.singleWord) in { constrs = chooseRepr kinds, boxed = boxed, size = size } end; (* RefForm, NilForm and ConsForm are only used for built-in types *) (*****************************************************************************) (* Standard values and exceptions. *) (*****************************************************************************) (* Build a datatype within the basis. *) fun buildBasisDatatype(tcName, tIdPath, tyVars, isEqType: bool, mkValConstrs: typeConstrs -> (values * codetree) list * codetree * codetree) = let (* Create a temporary datatype. The "name" we put in here is usually the same as the type constructor name except for datatypes in the PolyML structure which have the PolyML prefix. *) val arity = List.length tyVars val description = basisDescription tIdPath val id = makeBoundId(arity, Local{addr = ref ~1, level = ref baseLevel}, 0 (* IdNumber*), isEqType, true, description) val dtype = makeTypeConstructor (tcName, tyVars, id, [DeclaredAt inBasis]); (* Build the constructors. *) val (valConstrsAndDecs, boxedCode, sizeCode) = mkValConstrs dtype (* The constructors have to be ordered as in genValueConstrs in PARSE_TREE. *) fun leq (Value{name=xname, ...}, _) (Value{name=yname, ...}, _) = xname < yname; val sortedConstrs = quickSort leq valConstrsAndDecs; val initialTypeSet = TypeConstrSet(dtype, (List.map #1 valConstrsAndDecs)) val addrs = ref 0 fun mkAddrs n = ! addrs before (addrs := !addrs+n) fun declConstr(Value{access=Local{addr, level}, ...}, repr) = let val newAddr = mkAddrs 1 in addr := newAddr; level := baseLevel; (mkDec(newAddr, repr), mkLoadLocal newAddr) end | declConstr _ = raise InternalError "declConstr: not local" val (declConstrs, loadConstrs) = ListPair.unzip(List.map declConstr sortedConstrs) val defMap = TypeVarMap.defaultTypeVarMap(mkAddrs, baseLevel) (* Create the datatype. Sets the address of the local in "id". *) val dtCode = createDatatypeFunctions( [{typeConstr=initialTypeSet, eqStatus=isEqType, boxedCode=boxedCode, sizeCode=sizeCode}], mkAddrs, baseLevel, defMap, true) (* Compile and execute the code to build the functions and extract the result. *) val globalCode = genCode( mkEnv( declConstrs @ TypeVarMap.getCachedTypeValues defMap @ dtCode, mkTuple(codeId(id, baseLevel) :: loadConstrs)), [], !addrs)() val newId = makeFreeId(arity, Global(mkInd(0, globalCode)), isEqType, description) (* Get the value constructors out as globals. *) fun mkGlobal((Value{name, typeOf, class, locations, ...}, _), (decs, offset)) = (decs @ [Value{name=name, typeOf=typeOf, class=class, locations=locations, references=NONE, instanceTypes=NONE, access=Global(mkInd(offset, globalCode))}], offset+1) val (gConstrs, _) = List.foldl mkGlobal ([], 1 (* Offset 0 is the type ID *)) sortedConstrs (* Finally copy the datatype to put in the code. *) in fullCopyDatatype(TypeConstrSet(dtype, gConstrs), fn 0 => newId | _ => raise Subscript, "") end (* Nil and :: are used in parsetree for lists constructed using [ ... ] and are also used for initialisation. *) local fun makeConsAndNil listType = let val listTypeVars = tcTypeVars listType; val alpha = TypeVar(hd listTypeVars); val alphaList = mkTypeConstruction ("list", listType, [alpha], [DeclaredAt inBasis]); val consType = mkFunctionType (mkProductType [alpha, alphaList], alphaList); val nilConstructor = makeValueConstr ("nil", alphaList, true, 2, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]) val consConstructor = makeValueConstr ("::", consType, false, 2, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]) val nilRepresentation = createNullaryConstructor(EnumForm{tag=0w0, maxTag=0w0}, [alpha], "nil") val consRepresentation = createUnaryConstructor(UnboxedForm 2, [alpha], "::") in ([(nilConstructor, nilRepresentation), (consConstructor, consRepresentation)], mkInlproc(TypeValue.boxedEither, 1, "boxed-list", [], 0), mkInlproc(TypeValue.singleWord, 1, "size-list", [], 0)) end in val listConstr = buildBasisDatatype("list", "list", [makeTv {value=EmptyType, level=generalisable, nonunifiable=false, equality=false, printable=false}], true, makeConsAndNil) val (nilConstructor, consConstructor) = case listConstr of TypeConstrSet(_, [consC as Value{name="::", ...}, nilC as Value{name="nil", ...}]) => (nilC, consC) | _ => raise InternalError "nil and cons in wrong order" end local fun makeNoneAndSome optionType = let val optionTypeVars = tcTypeVars optionType; val alpha = TypeVar(hd optionTypeVars); val alphaOption = mkTypeConstruction ("option", optionType, [alpha], [DeclaredAt inBasis]); val someType = mkFunctionType (alpha, alphaOption); val noneConstructor = makeValueConstr ("NONE", alphaOption, true, 2, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]); val someConstructor = makeValueConstr ("SOME", someType, false, 2, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]); val noneRepresentation = createNullaryConstructor(EnumForm{tag=0w0, maxTag=0w0}, [alpha], "NONE") and someRepresentation = createUnaryConstructor(BoxedForm, [alpha], "SOME") in ([(noneConstructor, noneRepresentation), (someConstructor, someRepresentation)], mkInlproc(TypeValue.boxedEither, 1, "boxed-option", [], 0), mkInlproc(TypeValue.singleWord, 1, "size-option", [], 0)) end in val optionConstr= buildBasisDatatype("option", "option", [makeTv {value=EmptyType, level=generalisable, nonunifiable=false, equality=false, printable=false}], true, makeNoneAndSome) val (noneConstructor, someConstructor) = case optionConstr of TypeConstrSet(_, [noneC as Value{name="NONE", ...}, someC as Value{name="SOME", ...}]) => (noneC, someC) | _ => raise InternalError "NONE and SOME in wrong order" end local fun listConstruct (base : types) : types = let val TypeConstrSet(listCons, _) = listConstr in mkTypeConstruction ("list", listCons, [base], [DeclaredAt inBasis]) end; val intTypeConstr = TYPESTRUCT.fixedIntType val stringTypeConstr = TYPESTRUCT.stringType val boolTypeConstr = TYPESTRUCT.boolType in local val fields = [ mkLabelEntry("file", stringTypeConstr), mkLabelEntry("startLine", intTypeConstr), mkLabelEntry("startPosition", intTypeConstr), mkLabelEntry("endLine", intTypeConstr), mkLabelEntry("endPosition", intTypeConstr) ] in val locationCons = makeTypeConstructor("location", [], makeTypeFunction(basisDescription "PolyML.location", ([], mkLabelled(sortLabels fields, true))), [DeclaredAt inBasis]) val locationConstr = TypeConstrSet(locationCons, []) end local (* Pretty print context information. *) fun makeConstructors typeconstr = let val contextType = mkTypeConstruction ("context", typeconstr, [], [DeclaredAt inBasis]) val locationType = mkTypeConstruction ("location", locationCons, [], [DeclaredAt inBasis]) val constrs = [ ("ContextLocation", locationType), ("ContextProperty", mkProductType[stringTypeConstr, stringTypeConstr])]; (* The representation of this datatype is given in Pretty.sml and must be the same as the representation that chooseConstrRepr will use. *) val numConstrs = List.length constrs fun makeCons(s,t) = makeValueConstr(s, mkFunctionType(t, contextType), false, numConstrs, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]) val {constrs=constrCode, boxed, size} = chooseConstrRepr(constrs, []) in (ListPair.zipEq(List.map makeCons constrs, constrCode), boxed, size) end in val contextConstr = buildBasisDatatype("context", "PolyML.context", [], false, makeConstructors) end local fun makeConstructors typeconstr = let val TypeConstrSet(contextCons, _) = contextConstr val prettyType = mkTypeConstruction ("pretty", typeconstr, [], [DeclaredAt inBasis]) val contextType = mkTypeConstruction ("context", contextCons, [], [DeclaredAt inBasis]) val constrs = [ ("PrettyBlock", mkProductType[intTypeConstr, boolTypeConstr, listConstruct contextType, listConstruct prettyType]), ("PrettyBreak", mkProductType[intTypeConstr, intTypeConstr]), ("PrettyLineBreak", EmptyType), ("PrettyString", stringTypeConstr), ("PrettyStringWithWidth", mkProductType[stringTypeConstr, intTypeConstr])]; (* The representation of this datatype is given in Pretty.sml and must be the same as the representation that chooseConstrRepr will use. *) val numConstrs = List.length constrs fun makeCons(s,t) = let val (ctype, nullary) = case t of EmptyType => (prettyType, true) | t => (mkFunctionType(t, prettyType), false) in makeValueConstr(s, ctype, nullary, numConstrs, Local{addr=ref ~1, level=ref baseLevel}, [DeclaredAt inBasis]) end val {constrs=constrCode, ...} = chooseConstrRepr(constrs, []) in (ListPair.zipEq(List.map makeCons constrs, constrCode), TypeValue.boxedEither, TypeValue.singleWord) end in val prettyConstr = buildBasisDatatype("pretty", "PolyML.pretty", [], false, makeConstructors) end end (* The representation of ptProperties is given in ExportTree.sml and must also match. *) (* Construct an exception identifier - This is a ref (so we can uniquely identify it) containing a print function for the type. *) local (* The exception identifier contains a value of type (exn*int->pretty) option. *) val TypeConstrSet(optionCons, _) = optionConstr and TypeConstrSet(prettyCons, _) = prettyConstr val exnPrinter = mkTypeConstruction ("option", optionCons, [ mkFunctionType( mkProductType[TYPESTRUCT.exnType, TYPESTRUCT.fixedIntType], mkTypeConstruction ("pretty", prettyCons, [], [DeclaredAt inBasis]) ) ], [DeclaredAt inBasis]) in fun mkExIden(ty, level, tvMap) = let (* Get the constructor tuple, select the constructor operation, apply it to the type. *) val makeSome = applyToInstance( [{value=exnPrinter, equality=false, printity=false}], level, tvMap, fn _ => mkInd(1, case someConstructor of Value { access, ...} => vaGlobal access)) val makeNone = applyToInstance( [{value=exnPrinter, equality=false, printity=false}], level, tvMap, fn _ => mkInd(1, case noneConstructor of Value { access, ...} => vaGlobal access)) val printerCode = case ty of FunctionType { arg, ...} => mkEval(makeSome, [printerForType(arg, level, tvMap)]) | _ => makeNone in refApplyCode printerCode end end (* Types that can be shared. *) structure Sharing = struct type codetree = codetree type types = types type values = values type typeConstrSet = typeConstrSet type typeId = typeId type typeVarForm = typeVarForm type typeVarMap = typeVarMap type level = level end end; polyml-5.7.1/mlsource/MLCompiler/STRUCTVALSIG.sml0000644000175000017500000002464713204034553020317 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2009, 2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature STRUCTVALSIG = sig type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val inBasis: location type codetree and level type univTable (* Types *) datatype 'a possRef = FrozenRef of 'a | VariableRef of 'a ref val pling: 'a possRef -> 'a val updatePR: 'a possRef * 'a -> unit (* Standard type constructors. *) type typeVarForm type uniqueId type typeIdDescription = { location: location, name: string, description: string } type references = { exportedRef: bool ref, localRef: location list ref, recursiveRef: (location * string) list ref } option val makeRef: unit -> references datatype typeId = TypeId of { access: valAccess, description: typeIdDescription, idKind: typeIdKind } and typeIdKind = Free of { uid: uniqueId, allowUpdate: bool, arity: int } | Bound of { offset: int, eqType: bool possRef, isDatatype: bool, arity: int } | TypeFn of typeVarForm list * types (* A type is the union of these different cases. *) and types = TypeVar of typeVarForm | TypeConstruction of { name: string, constr: typeConstrs, args: types list, locations: locationProp list } | FunctionType of { arg: types, result: types } | LabelledType of labelledRec | OverloadSet of { typeset: typeConstrs list } | BadType | EmptyType and typeConstrs = TypeConstrs of { name: string, typeVars: typeVarForm list, identifier: typeId, locations: locationProp list (* Location of declaration *) } and labelFieldList = FieldList of string list * bool (* True if this is frozen *) | FlexibleList of labelFieldList ref and valAccess = Global of codetree | Local of { addr: int ref, level: level ref } | Selected of { addr: int, base: valAccess } | Formal of int | Overloaded of typeDependent (* Values only. *) (* Structures. *) and structVals = Struct of { name: string, signat: signatures, access: valAccess, locations: locationProp list } and signatures = Signatures of { name: string, tab: univTable, typeIdMap: int -> typeId, firstBoundIndex: int, boundIds: typeId list, locations: locationProp list } and functors = Functor of { name: string, arg: structVals, result: signatures, access: valAccess, locations: locationProp list } (* Values. *) and typeDependent = Print | GetPretty | MakeString | AddPretty | Equal | NotEqual | AddOverload | TypeDep | GetLocation and values = Value of { name: string, typeOf: types, access: valAccess, class: valueClass, locations: locationProp list, references: references, instanceTypes: types list ref option } (* Classes of values. *) and valueClass = ValBound | PattBound | Exception | Constructor of { nullary: bool, ofConstrs: int } (* Location properties. A value may have some or all of these. *) and locationProp = DeclaredAt of location | OpenedAt of location | StructureAt of location | SequenceNo of FixedInt.int withtype labelledRec = { (* Fields actually present in this record. If this was flexible at some stage there may be extra fields listed in the full field list. *) recList: { name: string, typeof: types } list, (* The names of all the fields including extra fields. *) fullList: labelFieldList } (* type identifiers. *) val isEquality: typeId -> bool val offsetId: typeId -> int val idAccess: typeId -> valAccess val sameTypeId: typeId * typeId -> bool val setEquality: typeId * bool -> unit val basisDescription: string -> typeIdDescription val makeFreeId: int * valAccess * bool * typeIdDescription -> typeId val makeFreeIdEqUpdate: int * valAccess * bool * typeIdDescription -> typeId val makeBoundId: int * valAccess * int * bool * bool * typeIdDescription -> typeId val makeBoundIdWithEqUpdate: int * valAccess * int * bool * bool * typeIdDescription -> typeId val makeTypeFunction: typeIdDescription * (typeVarForm list * types) -> typeId (* Types *) val badType: types val emptyType: types val isBad: types -> bool val isEmpty: types -> bool val recordFields : labelledRec -> string list val recordIsFrozen : labelledRec -> bool val tcName: typeConstrs -> string val tcArity: typeConstrs -> int val tcTypeVars: typeConstrs -> typeVarForm list val tcEquality: typeConstrs -> bool val tcSetEquality: typeConstrs * bool -> unit val tcIdentifier: typeConstrs -> typeId val tcLocations: typeConstrs -> locationProp list val tcIsAbbreviation: typeConstrs -> bool val makeTypeConstructor: string * typeVarForm list * typeId * locationProp list -> typeConstrs datatype typeConstrSet = (* A type constructor with its, possible, value constructors. *) TypeConstrSet of typeConstrs * values list val tsConstr: typeConstrSet -> typeConstrs val tsConstructors: typeConstrSet -> values list val tvLevel: typeVarForm -> int val tvEquality: typeVarForm -> bool val tvPrintity: typeVarForm -> bool val tvNonUnifiable: typeVarForm -> bool val tvValue: typeVarForm -> types val tvSetValue: typeVarForm * types -> unit val sameTv: typeVarForm * typeVarForm -> bool val makeTv: {value: types, level: int, equality: bool, nonunifiable: bool, printable: bool } -> typeVarForm val generalisable: int (* Access to values, structures etc. *) val makeGlobal: codetree -> valAccess val makeLocal: unit -> valAccess val makeSelected: int * structVals -> valAccess val vaGlobal: valAccess -> codetree val vaLocal: valAccess -> { addr: int ref, level: level ref } val makeEmptyGlobal: string -> structVals val makeGlobalStruct: string * signatures * codetree * locationProp list -> structVals val makeLocalStruct: string * signatures * locationProp list -> structVals val makeFormalStruct: string * signatures * int * locationProp list -> structVals val makeSelectedStruct: structVals * structVals * locationProp list -> structVals (* Functors *) val makeFunctor: string * structVals * signatures * valAccess * locationProp list -> functors (* Signatures *) val makeSignatureTable: unit -> univTable val makeSignature: string * univTable * int * locationProp list * (int -> typeId) * typeId list -> signatures (* Values. *) val valName: values -> string val valTypeOf: values -> types val undefinedValue: values val isUndefinedValue: values -> bool val isConstructor: values -> bool val isValueConstructor: values -> bool val makeOverloaded: string * types * typeDependent -> values val makeValueConstr: string * types * bool * int * valAccess * locationProp list -> values (* Infix status *) datatype infixity = Infix of int | InfixR of int | Nonfix datatype fixStatus = FixStatus of string * infixity datatype env = Env of { lookupVal: string -> values option, lookupType: string -> typeConstrSet option, lookupFix: string -> fixStatus option, lookupStruct: string -> structVals option, lookupSig: string -> signatures option, lookupFunct: string -> functors option, enterVal: string * values -> unit, enterType: string * typeConstrSet -> unit, enterFix: string * fixStatus -> unit, enterStruct: string * structVals -> unit, enterSig: string * signatures -> unit, enterFunct: string * functors -> unit, allValNames: unit -> string list } val makeEnv: univTable -> env val valueVar: values Universal.tag val typeConstrVar: typeConstrSet Universal.tag val fixVar: fixStatus Universal.tag val structVar: structVals Universal.tag val signatureVar: signatures Universal.tag val functorVar: functors Universal.tag (* Types that can be shared. *) structure Sharing: sig type codetree = codetree and signatures = signatures and types = types and values = values and typeId = typeId and structVals = structVals and valAccess = valAccess and typeConstrs= typeConstrs and typeConstrSet=typeConstrSet and env = env and univTable = univTable and fixStatus = fixStatus and infixity = infixity and functors = functors and locationProp = locationProp and typeVarForm = typeVarForm and level = level end end; polyml-5.7.1/mlsource/MLCompiler/ExportTree.sml0000644000175000017500000001304613204034553020455 0ustar daviddavid(* Copyright (c) 2009, 2015, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor ExportTree( structure STRUCTVALS : STRUCTVALSIG structure PRETTY: PRETTYSIG ): EXPORTTREESIG = struct open PRETTY STRUCTVALS (* datatype ptProperties = PTprint of FixedInt.int -> pretty (* Print the tree *) | PTtype of types (* Type of an expression *) | PTdeclaredAt of location (* Declaration location for id. *) | PTopenedAt of location (* When an identifier comes from an "open" the location of the open. *) | PTstructureAt of location (* When an identifier comes from open S or S.a the declaration of S. *) | PTreferences of bool * location list (* The references to the ID. The first is true if this is exported. *) | PTparent of unit -> exportTree | PTpreviousSibling of unit -> exportTree | PTnextSibling of unit -> exportTree | PTfirstChild of unit -> exportTree | PTbreakPoint of bool ref | PTcompletions of string list withtype exportTree = location * ptProperties list *) local open Address fun cast p = toAddress(toMachineWord p) in type ptProperties = address type exportTree = location * ptProperties list fun PTbreakPoint(bpt: bool ref): ptProperties = cast(0w0, bpt) and PTcompletions(sl: string list): ptProperties = cast(0w1, sl) and PTdeclaredAt(loc: location): ptProperties = cast(0w2, loc) and PTdefId(id: FixedInt.int): ptProperties = cast(0w3, id) and PTfirstChild(entry: unit -> exportTree): ptProperties = cast(0w4, entry) and PTnextSibling(entry: unit -> exportTree): ptProperties = cast(0w5, entry) and PTopenedAt(loc: location): ptProperties = cast(0w6, loc) and PTparent(entry: unit -> exportTree): ptProperties = cast(0w7, entry) and PTpreviousSibling(entry: unit -> exportTree): ptProperties = cast(0w8, entry) and PTprint(pr: FixedInt.int -> pretty): ptProperties = cast(0w9, pr) and PTreferences(exp: bool, locs: location list): ptProperties = cast(0w10, exp, locs) and PTrefId(id: FixedInt.int): ptProperties = cast(0w11, id) and PTstructureAt(loc: location): ptProperties = cast(0w12, loc) and PTtype(typ: types): ptProperties = cast(0w13, typ) end (* This representation is exported so we have to use a *) type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} (* Navigate within a list *) fun exportList _ [] = [] | exportList(exp, parent) sl = let fun getEntry(this as (s :: sl), getPrevious) () = exp( { parent = parent, previous = getPrevious, (* If we have a successor then that is the entry and its predecessor returns here. *) next = case sl of [] => NONE | t => SOME(getEntry(t, SOME(getEntry(this, getPrevious)))) }, s ) | getEntry _ () = raise Empty in [PTfirstChild (getEntry(sl, NONE))] end fun exportNavigationProps{parent, previous, next} = let fun mapProps(_, NONE) = [] | mapProps(f, SOME v) = [f v] in (* Common properties for navigation and printing. *) mapProps(PTparent, parent) @ mapProps(PTpreviousSibling, previous) @ mapProps(PTnextSibling, next) end fun getStringAsTree (navigation, s: string, location: location, otherProps) = (location, otherProps @ exportNavigationProps navigation @ [PTprint(fn _ => PrettyString s)]) (* Tag used to indicate the root tree node in the compiler arguments. *) val rootTreeTag: navigation Universal.tag = Universal.tag() (* Map value locations into properties. This is used for a reference to an id. *) fun mapLocationProps locs = let fun prop (DeclaredAt loc) = PTdeclaredAt loc | prop (OpenedAt loc) = PTopenedAt loc | prop (StructureAt loc) = PTstructureAt loc | prop (SequenceNo id) = PTrefId id in List.map prop locs end (* Defining location. This sequence Id is a PTdefId. Leave PTdeclaredAt for the moment although it's probably unnecessary since this is the declaration location. *) fun definingLocationProps locs = let fun prop (DeclaredAt loc, l) = PTdeclaredAt loc :: l | prop (SequenceNo id, l) = PTdefId id :: l | prop (_, l) = l in List.foldl prop [] locs end (* Types that can be shared. *) structure Sharing = struct type types = types and locationProp = locationProp and pretty = pretty and ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/0000755000175000017500000000000013204034553017325 5ustar daviddavidpolyml-5.7.1/mlsource/MLCompiler/CodeTree/GCode.i386.ML0000644000175000017500000000147713204034553021241 0ustar daviddavid(* Copyright (c) 2013 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure GCode = X86Code; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_FUNCTIONS.sml0000644000175000017500000005317013204034553022672 0ustar daviddavid(* Copyright (c) 2012,13,16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Miscellaneous construction and operation functions on the code-tree. *) functor CODETREE_FUNCTIONS( structure BASECODETREE: BaseCodeTreeSig structure STRONGLY: sig val stronglyConnectedComponents: {nodeAddress: 'a -> int, arcs: 'a -> int list } -> 'a list -> 'a list list end ) : CodetreeFunctionsSig = struct open BASECODETREE open STRONGLY open Address exception InternalError = Misc.InternalError fun mkEnv([], exp) = exp | mkEnv(decs, exp) = Newenv(decs, exp) val word0 = toMachineWord 0 and word1 = toMachineWord 1 val False = word0 and True = word1 val F_mutable_words : Word8.word = Word8.orb (F_words, F_mutable) val CodeFalse = Constnt(False, []) and CodeTrue = Constnt(True, []) and CodeZero = Constnt(word0, []) (* Properties of code. This indicates the extent to which the code has side-effects (i.e. where even if the result is unused the code still needs to be produced) or is applicative (i.e. where its value depends only arguments and can safely be reordered). *) (* The RTS has a table of properties for RTS functions. The 103 call returns these Or-ed into the register mask. *) val PROPWORD_NORAISE = 0wx40000000 and PROPWORD_NOUPDATE = 0wx20000000 and PROPWORD_NODEREF = 0wx10000000 (* Since RTS calls are being eliminated leave residual versions of these. *) fun earlyRtsCall _ = false and sideEffectFreeRTSCall _ = false local infix orb andb val op orb = Word.orb and op andb = Word.andb val noSideEffect = PROPWORD_NORAISE orb PROPWORD_NOUPDATE val applicative = noSideEffect orb PROPWORD_NODEREF in fun codeProps (Lambda _) = applicative | codeProps (Constnt _) = applicative | codeProps (Extract _) = applicative | codeProps (TagTest{ test, ... }) = codeProps test | codeProps (Cond(i, t, e)) = codeProps i andb codeProps t andb codeProps e | codeProps (Newenv(decs, exp)) = List.foldl (fn (d, r) => bindingProps d andb r) (codeProps exp) decs | codeProps (Handle { exp, handler, ... }) = (* A handler processes all the exceptions in the body *) (codeProps exp orb PROPWORD_NORAISE) andb codeProps handler | codeProps (Tuple { fields, ...}) = testList fields | codeProps (Indirect{base, ...}) = codeProps base (* A built-in function may be side-effect free. This can occur if we have, for example, "if exp1 orelse exp2" where exp2 can be reduced to "true", typically because it's inside an inline function and some of the arguments to the function are constants. This then gets converted to (exp1; true) and we can eliminate exp1 if it is simply a comparison. *) | codeProps GetThreadId = Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) | codeProps (Unary{oper, arg1}) = let open BuiltIns val operProps = case oper of NotBoolean => applicative | IsTaggedValue => applicative | MemoryCellLength => applicative (* MemoryCellFlags could return a different result if a mutable cell was locked. *) | MemoryCellFlags => applicative | ClearMutableFlag => Word.orb(PROPWORD_NODEREF, PROPWORD_NORAISE) | AtomicIncrement => PROPWORD_NORAISE | AtomicDecrement => PROPWORD_NORAISE | AtomicReset => Word.orb(PROPWORD_NODEREF, PROPWORD_NORAISE) | LongWordToTagged => applicative | SignedToLongWord => applicative | UnsignedToLongWord => applicative | RealAbs => applicative (* Does not depend on rounding setting. *) | RealNeg => applicative (* Does not depend on rounding setting. *) (* If we float a 64-bit int to a 64-bit floating point value we may lose precision so this depends on the current rounding mode. *) | FloatFixedInt => Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) in operProps andb codeProps arg1 end | codeProps (Binary{oper, arg1, arg2}) = let open BuiltIns val mayRaise = PROPWORD_NOUPDATE orb PROPWORD_NODEREF val operProps = case oper of WordComparison _ => applicative | FixedPrecisionArith _ => mayRaise | WordArith _ => applicative (* Quot and Rem don't raise exceptions - zero checking is done before. *) | WordLogical _ => applicative | WordShift _ => applicative | AllocateByteMemory => Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) (* Allocation returns a different value on each call. *) | LargeWordComparison _ => applicative | LargeWordArith _ => applicative (* Quot and Rem don't raise exceptions - zero checking is done before. *) | LargeWordLogical _ => applicative | LargeWordShift _ => applicative | RealComparison _ => applicative (* Real arithmetic operations depend on the current rounding setting. *) | RealArith _ => Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) in operProps andb codeProps arg1 andb codeProps arg2 end | codeProps (Arbitrary{shortCond, arg1, arg2, longCall, ...}) = (* Arbitrary precision operations are applicative but the longCall is a function call. It should never have a side-effect so it might be better to remove it. *) codeProps shortCond andb codeProps arg1 andb codeProps arg2 andb codeProps longCall | codeProps (AllocateWordMemory {numWords, flags, initial}) = let val operProps = Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) in operProps andb codeProps numWords andb codeProps flags andb codeProps initial end | codeProps (Eval _) = 0w0 | codeProps(Raise exp) = codeProps exp andb (Word.notb PROPWORD_NORAISE) (* Treat these as unsafe at least for the moment. *) | codeProps(BeginLoop _) = 0w0 | codeProps(Loop _) = 0w0 | codeProps (SetContainer _) = 0w0 | codeProps (LoadOperation {address, kind}) = let val operProps = case kind of LoadStoreMLWord {isImmutable=true} => applicative | LoadStoreMLByte {isImmutable=true} => applicative | _ => Word.orb(PROPWORD_NOUPDATE, PROPWORD_NORAISE) in operProps andb addressProps address end | codeProps (StoreOperation {address, value, ...}) = Word.orb(PROPWORD_NODEREF, PROPWORD_NORAISE) andb addressProps address andb codeProps value | codeProps (BlockOperation {kind, sourceLeft, destRight, length}) = let val operProps = case kind of BlockOpMove _ => PROPWORD_NORAISE | BlockOpEqualByte => applicative | BlockOpCompareByte => applicative in operProps andb addressProps sourceLeft andb addressProps destRight andb codeProps length end and testList t = List.foldl(fn (c, r) => codeProps c andb r) applicative t and bindingProps(Declar{value, ...}) = codeProps value | bindingProps(RecDecs _) = applicative (* These should all be lambdas *) | bindingProps(NullBinding c) = codeProps c | bindingProps(Container{setter, ...}) = codeProps setter and addressProps{base, index=NONE, ...} = codeProps base | addressProps{base, index=SOME index, ...} = codeProps base andb codeProps index (* sideEffectFree - does not raise an exception or make an assignment. *) fun sideEffectFree c = (codeProps c andb noSideEffect) = noSideEffect (* reorderable - does not raise an exception or access a reference. *) and reorderable c = codeProps c = applicative end (* Return the inline property if it is set. *) fun findInline [] = EnvSpecNone | findInline (h::t) = if Universal.tagIs CodeTags.inlineCodeTag h then Universal.tagProject CodeTags.inlineCodeTag h else findInline t (* Makes a constant value from an expression which is known to be constant but may involve inline functions, tuples etc. *) fun makeConstVal (cVal:codetree) = let fun makeVal (c as Constnt _) = c (* should just be a tuple *) (* Get a vector, copy the entries into it and return it as a constant. *) | makeVal (Tuple {fields= [], ...}) = CodeZero (* should have been optimised already! *) | makeVal (Tuple {fields, ...}) = let val tupleSize = List.length fields val vec : address = allocWordData(Word.fromInt tupleSize, F_mutable_words, word0) val fieldCode = map makeVal fields fun copyToVec ([], _) = [] | copyToVec (Constnt(w, prop) :: t, locn) = ( assignWord (vec, locn, w); prop :: copyToVec (t, locn + 0w1) ) | copyToVec _ = raise InternalError "not constant" val props = copyToVec(fieldCode, 0w0) (* If any of the constants have properties create a tuple property for the result. *) val tupleProps = if List.all null props then [] else let (* We also need to construct an EnvSpecTuple property because findInline does not look at tuple properties. *) val inlineProps = map findInline props val inlineProp = if List.all (fn EnvSpecNone => true | _ => false) inlineProps then [] else let fun tupleEntry n = (EnvGenConst(loadWord(vec, Word.fromInt n), List.nth(props, n)), List.nth(inlineProps, n)) in [Universal.tagInject CodeTags.inlineCodeTag (EnvSpecTuple(tupleSize, tupleEntry))] end in Universal.tagInject CodeTags.tupleTag props :: inlineProp end in lock vec; Constnt(toMachineWord vec, tupleProps) end | makeVal _ = raise InternalError "makeVal - not constant or tuple" in makeVal cVal end local fun allConsts [] = true | allConsts (Constnt _ :: t) = allConsts t | allConsts _ = false fun mkRecord isVar xp = let val tuple = Tuple{fields = xp, isVariant = isVar } in if allConsts xp then (* Make it now. *) makeConstVal tuple else tuple end; in val mkTuple = mkRecord false and mkDatatype = mkRecord true end (* Set the inline property. If the property is already present it is replaced. If the property we are setting is EnvSpecNone no property is set. *) fun setInline p (h::t) = if Universal.tagIs CodeTags.inlineCodeTag h then setInline p t else h :: setInline p t | setInline EnvSpecNone [] = [] | setInline p [] = [Universal.tagInject CodeTags.inlineCodeTag p] (* These are very frequently used and it might be worth making special bindings for values such as 0, 1, 2, 3 etc to reduce garbage. *) fun checkNonZero n = if n < 0 then raise InternalError "mkLoadxx: argument negative" else n val mkLoadLocal = Extract o LoadLocal o checkNonZero and mkLoadArgument = Extract o LoadArgument o checkNonZero and mkLoadClosure = Extract o LoadClosure o checkNonZero (* Set the container to the fields of the record. Try to push this down as far as possible. *) fun mkSetContainer(container, Cond(ifpt, thenpt, elsept), filter) = Cond(ifpt, mkSetContainer(container, thenpt, filter), mkSetContainer(container, elsept, filter)) | mkSetContainer(container, Newenv(decs, exp), filter) = Newenv(decs, mkSetContainer(container, exp, filter)) | mkSetContainer(_, r as Raise _, _) = r (* We may well have the situation where one branch of an "if" raises an exception. We can simply raise the exception on that branch. *) | mkSetContainer(container, Handle {exp, handler, exPacketAddr}, filter) = Handle{exp=mkSetContainer(container, exp, filter), handler=mkSetContainer(container, handler, filter), exPacketAddr = exPacketAddr} | mkSetContainer(container, tuple, filter) = SetContainer{container = container, tuple = tuple, filter = filter } local val except: exn = InternalError "Invalid load encountered in compiler" (* Exception value to use for invalid cases. We put this in the code but it should never actually be executed. *) val raiseError = Raise (Constnt (toMachineWord except, [])) in (* Look for an entry in a tuple. Used in both the optimiser and in mkInd. *) fun findEntryInBlock (Tuple { fields, isVariant, ...}, offset, isVar) = ( isVariant = isVar orelse raise InternalError "findEntryInBlock: tuple/datatype mismatch"; if offset < List.length fields then List.nth(fields, offset) (* This can arise if we're processing a branch of a case discriminating on a datatype which won't actually match at run-time. e.g. Tests/Succeed/Test030. *) else if isVar then raiseError else raise InternalError "findEntryInBlock: invalid address" ) | findEntryInBlock (Constnt (b, props), offset, isVar) = let (* Find the tuple property if it is present and extract the field props. *) val fieldProps = case List.find(Universal.tagIs CodeTags.tupleTag) props of NONE => [] | SOME p => List.nth(Universal.tagProject CodeTags.tupleTag p, offset) in case findInline props of EnvSpecTuple(_, env) => (* Do the selection now. This is especially useful if we have a global structure *) (* At the moment at least we assume that we can get all the properties from the tuple selection. *) ( case env offset of (EnvGenConst(w, p), inl) => Constnt(w, setInline inl p) (* The general value from selecting a field from a constant tuple must be a constant. *) | _ => raise InternalError "findEntryInBlock: not constant" ) | _ => (* The ML compiler may generate loads from invalid addresses as a result of a val binding to a constant which has the wrong shape. e.g. val a :: b = nil It will always result in a Bind exception being generated before the invalid load, but we have to be careful that the optimiser does not fall over. *) if isShort b orelse not (Address.isWords (toAddress b)) orelse Address.length (toAddress b) <= Word.fromInt offset then if isVar then raiseError else raise InternalError "findEntryInBlock: invalid address" else Constnt (loadWord (toAddress b, Word.fromInt offset), fieldProps) end | findEntryInBlock(base, offset, isVar) = Indirect {base = base, offset = offset, isVariant = isVar} (* anything else *) end (* Exported indirect load operation i.e. load a field from a tuple. We can't use findEntryInBlock in every case since that discards unused entries in a tuple and at this point we haven't checked that the unused entries don't have side-effects/raise exceptions e.g. #1 (1, raise Fail "bad") *) local fun mkIndirect isVar (addr, base as Constnt _) = findEntryInBlock(base, addr, isVar) | mkIndirect isVar (addr, base) = Indirect {base = base, offset = addr, isVariant = isVar} in val mkInd = mkIndirect false and mkVarField = mkIndirect true end (* Create a tuple from a container. *) fun mkTupleFromContainer(addr, size) = Tuple{fields = List.tabulate(size, fn n => mkInd(n, mkLoadLocal addr)), isVariant = false} (* Get the value from the code. *) fun evalue (Constnt(c, _)) = SOME c | evalue _ = NONE (* This is really to simplify the change from mkEnv taking a codetree list to taking a codeBinding list * code. This extracts the last entry which must be a NullBinding and packages the declarations with it. *) fun decSequenceWithFinalExp decs = let fun splitLast _ [] = raise InternalError "decSequenceWithFinalExp: empty" | splitLast decs [NullBinding exp] = (List.rev decs, exp) | splitLast _ [_] = raise InternalError "decSequenceWithFinalExp: last is not a NullDec" | splitLast decs (hd::tl) = splitLast (hd:: decs) tl in mkEnv(splitLast [] decs) end local type node = { addr: int, lambda: lambdaForm, use: codeUse list } fun nodeAddress({addr, ...}: node) = addr and arcs({lambda={closure, ...}, ...}: node) = List.foldl(fn (LoadLocal addr, l) => addr :: l | (_, l) => l) [] closure in val stronglyConnected = stronglyConnectedComponents{nodeAddress=nodeAddress, arcs=arcs} end (* In general any mutually recursive declaration can refer to any other. It's better to partition the recursive declarations into strongly connected components i.e. those that actually refer to each other. *) fun partitionMutableBindings(RecDecs rlist) = let val processed = stronglyConnected rlist (* Convert the result. Note that stronglyConnectedComponents returns the dependencies in the reverse order i.e. if X depends on Y but not the other way round then X will appear before Y in the list. We need to reverse it so that X goes after Y. *) fun rebuild ([], _) = raise InternalError "partitionMutableBindings" (* Should not happen *) | rebuild ([{addr, lambda, use}], tl) = Declar{addr=addr, use=use, value=Lambda lambda} :: tl | rebuild (multiple, tl) = RecDecs multiple :: tl in List.foldl rebuild [] processed end (* This is only intended for RecDecs but it's simpler to handle all bindings. *) | partitionMutableBindings other = [other] (* Functions to help in building a closure. *) datatype createClosure = Closure of (loadForm * int) list ref fun makeClosure() = Closure(ref []) (* Function to build a closure. Items are added to the closure if they are not already there. *) fun addToClosure (Closure closureList) (ext: loadForm): loadForm = case (List.find (fn (l, _) => l = ext) (!closureList), ! closureList) of (SOME(_, n), _) => (* Already there *) LoadClosure n | (NONE, []) => (* Not there - first *) (closureList := [(ext, 0)]; LoadClosure 0) | (NONE, cl as (_, n) :: _) => (closureList := (ext, n+1) :: cl; LoadClosure(n+1)) fun extractClosure(Closure (ref closureList)) = List.foldl (fn ((ext, _), l) => ext :: l) [] closureList structure Sharing = struct type codetree = codetree and codeBinding = codeBinding and loadForm = loadForm and createClosure = createClosure and envSpecial = envSpecial end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CodetreeFunctionsSig.sml0000644000175000017500000000475013204034553024136 0ustar daviddavid(* Copyright (c) 2012,13 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CodetreeFunctionsSig = sig type codetree and codeBinding and loadForm and envSpecial type machineWord = Address.machineWord val mkLoadLocal: int -> codetree and mkLoadArgument: int -> codetree and mkLoadClosure: int -> codetree val mkEnv: codeBinding list * codetree -> codetree and mkInd: int * codetree -> codetree and mkVarField: int * codetree -> codetree and mkTuple: codetree list -> codetree and mkDatatype: codetree list -> codetree val CodeFalse: codetree and CodeTrue: codetree and CodeZero: codetree val mkSetContainer: codetree * codetree * BoolVector.vector -> codetree val mkTupleFromContainer: int * int -> codetree val decSequenceWithFinalExp: codeBinding list -> codetree val sideEffectFree: codetree -> bool and reorderable: codetree -> bool and sideEffectFreeRTSCall: int -> bool val makeConstVal: codetree -> codetree val evalue: codetree -> machineWord option val findEntryInBlock: codetree * int * bool -> codetree val earlyRtsCall: int -> bool val partitionMutableBindings: codeBinding -> codeBinding list type createClosure val makeClosure: unit -> createClosure and addToClosure: createClosure -> loadForm -> loadForm and extractClosure: createClosure -> loadForm list val findInline: Universal.universal list -> envSpecial val setInline: envSpecial -> Universal.universal list -> Universal.universal list structure Sharing: sig type codetree = codetree and codeBinding = codeBinding and loadForm = loadForm and createClosure = createClosure and envSpecial = envSpecial end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/BaseCodeTree.sml0000644000175000017500000007641613204034553022345 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2008-2010, 2013, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Basic code-tree data structure. This was previously partly in GCODE.ML and partly in CODETREE.ML. *) structure BaseCodeTree: BaseCodeTreeSig = struct open Address datatype argumentType = datatype BackendIntermediateCode.argumentType datatype loadStoreKind = datatype BackendIntermediateCode.loadStoreKind datatype blockOpKind = datatype BackendIntermediateCode.blockOpKind structure BuiltIns = BackendIntermediateCode.BuiltIns datatype arbPrecisionOps = ArbCompare of BuiltIns.testConditions | ArbArith of BuiltIns.arithmeticOperations datatype inlineStatus = NonInline | Inline (* How variables are used. Added and examined by the optimisation pass. *) datatype codeUse = UseGeneral (* Used in some other context. *) | UseExport (* Exported i.e. the result of a top-level binding. *) | UseApply of codeUse list * codetree list (* Applied as a function - the list is where the result goes, the codetree list is the code that was used for each argument. *) | UseField of int * codeUse list (* Selected as a field - the list is where the result goes *) and codetree = Newenv of codeBinding list * codetree (* Set of bindings with an expression. *) | Constnt of machineWord * Universal.universal list (* Load a constant *) | Extract of loadForm (* Get a local variable, an argument or a closure value *) | Indirect of {base: codetree, offset: int, isVariant: bool } (* Load a value from a heap record *) | Eval of (* Evaluate a function with an argument list. *) { function: codetree, argList: (codetree * argumentType) list, resultType: argumentType } (* Built-in functions. *) | Unary of {oper: BuiltIns.unaryOps, arg1: codetree} | Binary of {oper: BuiltIns.binaryOps, arg1: codetree, arg2: codetree} (* Arbitrary precision operations. This combines some conditionals with the operation. shortCond is the condition that must be satisfied for the short precision operation to be executed. longCall is called if either argument is long or the evaluation overflows. *) | Arbitrary of {oper: arbPrecisionOps, shortCond: codetree, arg1: codetree, arg2: codetree, longCall: codetree} | Lambda of lambdaForm (* Lambda expressions. *) | Cond of codetree * codetree * codetree (* If-statement *) | BeginLoop of (* Start of tail-recursive inline function. *) { loop: codetree, arguments: (simpleBinding * argumentType) list } | Loop of (codetree * argumentType) list (* Jump back to start of tail-recursive function. *) | Raise of codetree (* Raise an exception *) | Handle of (* Exception handler. *) { exp: codetree, handler: codetree, exPacketAddr: int } | Tuple of { fields: codetree list, isVariant: bool } (* Tuples and datatypes *) | SetContainer of (* Copy a tuple to a container. *) { container: codetree, tuple: codetree, filter: BoolVector.vector } | TagTest of { test: codetree, tag: word, maxTag: word } | LoadOperation of { kind: loadStoreKind, address: codeAddress } | StoreOperation of { kind: loadStoreKind, address: codeAddress, value: codetree } | BlockOperation of { kind: blockOpKind, sourceLeft: codeAddress, destRight: codeAddress, length: codetree } | GetThreadId | AllocateWordMemory of {numWords: codetree, flags: codetree, initial: codetree} and codeBinding = Declar of simpleBinding (* Make a local declaration or push an argument *) | RecDecs of { addr: int, lambda: lambdaForm, use: codeUse list } list (* Set of mutually recursive declarations. *) | NullBinding of codetree (* Just evaluate the expression and discard the result. *) | Container of { addr: int, use: codeUse list, size: int, setter: codetree } (* Container: allocate a piece of stack space and set it to the values from a tuple. *) and loadForm = LoadArgument of int | LoadLocal of int | LoadClosure of int | LoadRecursive (* When we look up an entry in the environment we get a pair of a "general" value, which is either a constant or a load, and an optional special value, which is either a tuple or an inline function. Tuple entries are functions from an integer offset to one of these pairs; inline function entries are a lambda together with a map for the free variables. *) and envGeneral = EnvGenLoad of loadForm | EnvGenConst of machineWord * Universal.universal list (* Special entries. The type of both EnvSpecTuple and EnvSpecInlineFunction includes a function from int, the index, to the (general, special) pair rather than a list of either fields or closure entries. The main reason is that if we have a function that contains a reference to, say a tuple, in its closure we can pass in a EnvSpecTuple entry with a function that only adds a field to the closure if the field is actually used. Passing a list would require adding all the fields to the closure at the time the EnvSpecTuple was passed. EnvSpecBuiltInX are used for a small number of built-in functions which can be simplied if they occur in combination with others. *) and envSpecial = EnvSpecNone | EnvSpecTuple of int * (int -> envGeneral * envSpecial) | EnvSpecInlineFunction of lambdaForm * (int -> envGeneral * envSpecial) | EnvSpecUnary of BuiltIns.unaryOps * codetree | EnvSpecBinary of BuiltIns.binaryOps * codetree * codetree withtype simpleBinding = { (* Declare a value or push an argument. *) value: codetree, addr: int, use: codeUse list } and lambdaForm = { (* Lambda expressions. *) body : codetree, isInline : inlineStatus, name : string, closure : loadForm list, argTypes : (argumentType * codeUse list) list, resultType : argumentType, localCount : int, recUse : codeUse list } and codeAddress = {base: codetree, index: codetree option, offset: word} structure CodeTags = struct open Universal (* Import tags from back end *) open BackendIntermediateCode.CodeTags val inlineCodeTag: envSpecial tag = tag() end open Pretty (* Common cases. *) val space = PrettyBreak (1, 0) fun block l = PrettyBlock (0, false, [], l) val string = PrettyString fun pList ([]: 'b list, _: string, _: 'b->pretty) = [] | pList ([h], _, disp) = [disp h] | pList (h::t, sep, disp) = PrettyBlock (0, false, [], [ disp h, PrettyBreak (0, 0), PrettyString sep ] ) :: PrettyBreak (1, 0) :: pList (t, sep, disp) fun pretty (pt : codetree) : pretty = let fun printList(start, lst, sep) : pretty = PrettyBlock (1, true, [], PrettyString (start ^ "(") :: pList(lst, sep, pretty) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) fun prettyArg (c, _) = pretty c fun prettyArgs(start, lst, sep) : pretty = PrettyBlock (1, true, [], PrettyString (start ^ "(") :: pList(lst, sep, prettyArg) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) fun prettyBuiltin(opers, arglist) = PrettyBlock (2, false, [], [ PrettyString opers, PrettyBreak(1, 2), PrettyBlock(2, true, [], [ printList("", arglist, ","), PrettyBreak (0, 0), PrettyString (")") ] ) ] ) fun prettyAddress({base, index, offset}: codeAddress): pretty = let in PrettyBlock (1, true, [], [ PrettyString "[", PrettyBreak (0, 3), pretty base, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), case index of NONE => PrettyString "-" | SOME i => pretty i, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), PrettyString(Word.toString offset), PrettyBreak (0, 0), PrettyString "]" ]) end in case pt of Eval {function, argList, ...} => PrettyBlock (2, false, [], [ case function of Extract _ => pretty function | Constnt _ => pretty function | _ => PrettyBlock(2, true, [], [ string "(", PrettyBreak(0, 0), pretty function, PrettyBreak(0, 0), string ")" ] ) , PrettyBreak(1, 2), PrettyBlock(2, true, [], ( string "(" :: PrettyBreak(0, 0) :: pList(argList, ",", prettyArg) @ [PrettyBreak (0, 0), PrettyString (")")] ) ) ] ) | GetThreadId => prettyBuiltin("GetThreadId", []) | Unary { oper, arg1 } => prettyBuiltin(BuiltIns.unaryRepr oper, [arg1]) | Binary { oper, arg1, arg2 } => prettyBuiltin(BuiltIns.binaryRepr oper, [arg1, arg2]) | Arbitrary { oper, shortCond, arg1, arg2, longCall } => let val operName = case oper of ArbCompare test => BuiltIns.testRepr test | ArbArith arith => BuiltIns.arithRepr arith in prettyBuiltin(operName, [shortCond, arg1, arg2, longCall]) end | AllocateWordMemory { numWords, flags, initial } => prettyBuiltin("AllocateWordMemory", [numWords, flags, initial]) | Extract(LoadArgument addr) => string ("Arg" ^ Int.toString addr) | Extract(LoadLocal addr) => string ("Local" ^ Int.toString addr) | Extract(LoadClosure addr) => string ("Closure" ^ Int.toString addr) | Extract LoadRecursive => string "Recursive" | Indirect {base, offset, isVariant} => PrettyBlock(2, false, [], [ pretty base, PrettyBreak(0, 2), string(concat["[", Int.toString offset, "]", if isVariant then "(*V*)" else ""]) ] ) | Lambda {body, isInline, name, closure, argTypes, localCount, recUse, ...} => let val inl = case isInline of NonInline => "" | Inline => "inline," fun printArgs(n, (t, u) :: rest) = PrettyBlock(4, false, [], [ string("Arg"^Int.toString n), space, prettyUses "" u ] @ ( case t of GeneralType => [] | FloatingPtType => [ space, string ":real" ] ) @ ( if null rest then [] else [PrettyBreak(0,0), string ",", space] ) ) :: printArgs(n+1, rest) | printArgs(_, []) = [] in PrettyBlock(2, true, [], [ PrettyBlock(4, false, [], [ string "fn(", space, block(printArgs(0, argTypes)), space, string ")", space, string "(*", space, string("\"" ^ name ^ "\""), space, string inl, space, string(Int.toString localCount ^ " locals,"), space, printList ("closure=", map Extract closure, ","), space, prettyUses "recursive use=" recUse, space, string "*)" ]), PrettyBreak(1, 2), pretty body ]) end | Constnt(w, m) => if isShort w andalso toShort w = 0w0 then ( case List.find (Universal.tagIs CodeTags.inlineCodeTag) m of SOME h => ( case Universal.tagProject CodeTags.inlineCodeTag h of EnvSpecInlineFunction(lambda, _) => pretty(Lambda lambda) | _ => PrettyString (stringOfWord w) ) | NONE => PrettyString (stringOfWord w) ) else PrettyString (stringOfWord w) | Cond (f, s, t) => PrettyBlock (0, true, [], [ PrettyBlock(2, false, [], [string "if", space, pretty f]), space, PrettyBlock(2, false, [], [string "then", space, pretty s]), space, PrettyBlock(2, false, [], [string "else", space, pretty t]) ] ) | Newenv(decs, final) => PrettyBlock (0, true, [], [ string "let", PrettyBreak (1, 2), PrettyBlock(2, true, [], pList(decs, ";", prettyBinding)), space, string "in", PrettyBreak(1, 2), PrettyBlock(2, true, [], [pretty final]), space, string "end" ] ) | BeginLoop{loop=loopExp, arguments=args } => let fun prettyArg (c, _) = prettySimpleBinding c in PrettyBlock (3, false, [], [ PrettyBlock (1, true, [], PrettyString ("BEGINLOOP(") :: pList(args, ",", prettyArg) @ [ PrettyBreak (0, 0), PrettyString (")") ] ), PrettyBreak (0, 0), PrettyString "(", PrettyBreak (0, 0), pretty loopExp, PrettyBreak (0, 0), PrettyString ")" ] ) end | Loop ptl => prettyArgs("LOOP", ptl, ",") | Raise c => PrettyBlock (1, true, [], [ PrettyString "RAISE(", pretty c, PrettyBreak (0, 0), PrettyString (")") ] ) | Handle {exp, handler, exPacketAddr} => PrettyBlock (3, false, [], [ PrettyString "HANDLE(", pretty exp, PrettyString ("WITH exid=" ^ Int.toString exPacketAddr), PrettyBreak (1, 0), pretty handler, PrettyString ")" ] ) | Tuple { fields, isVariant } => printList(if isVariant then "DATATYPE" else "TUPLE", fields, ",") | SetContainer{container, tuple, filter} => let val source = BoolVector.length filter val dest = BoolVector.foldl(fn (true, n) => n+1 | (false, n) => n) 0 filter in PrettyBlock (3, false, [], [ string (concat["SETCONTAINER(", Int.toString dest, "/", Int.toString source, ", "]), pretty container, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), pretty tuple, PrettyBreak (0, 0), PrettyString ")" ] ) end | TagTest { test, tag, maxTag } => PrettyBlock (3, false, [], [ PrettyString (concat["TAGTEST(", Word.toString tag, ", ", Word.toString maxTag, ","]), PrettyBreak (1, 0), pretty test, PrettyBreak (0, 0), PrettyString ")" ] ) | LoadOperation{ kind, address } => PrettyBlock (3, false, [], [ PrettyString("Load" ^ BackendIntermediateCode.loadStoreKindRepr kind), PrettyBreak (1, 0), prettyAddress address ] ) | StoreOperation{ kind, address, value } => PrettyBlock (3, false, [], [ PrettyString("Store" ^ BackendIntermediateCode.loadStoreKindRepr kind), PrettyBreak (1, 0), prettyAddress address, PrettyBreak (1, 0), PrettyString "<=", PrettyBreak (1, 0), pretty value ] ) | BlockOperation{ kind, sourceLeft, destRight, length } => PrettyBlock (3, false, [], [ PrettyString(BackendIntermediateCode.blockOpKindRepr kind ^ "("), PrettyBreak (1, 0), prettyAddress sourceLeft, PrettyBreak (1, 0), PrettyString ",", prettyAddress destRight, PrettyBreak (1, 0), PrettyString ",", pretty length, PrettyBreak (1, 0), PrettyString ")" ] ) (* That list should be exhaustive! *) end (* pretty *) and prettyBinding(Declar dec) = prettySimpleBinding dec | prettyBinding(RecDecs ptl) = let fun prettyRDec {lambda, addr, use, ...} = block [ string ("Local" ^ Int.toString addr), space, string "(*", prettyUses "" use, space, string "*)", space, string "=", PrettyBreak (1, 2), PrettyBlock (2, false, [], [pretty(Lambda lambda)]) ] in PrettyBlock(0, true, [], string "val rec " :: pList(ptl, " and ", prettyRDec) ) end | prettyBinding(NullBinding c) = pretty c | prettyBinding(Container{addr, use, size, setter}) = PrettyBlock(1, false, [], [ string ("val Local" ^ Int.toString addr), space, string "(*", string "", space, prettyUses "" use, space, string "*)", space, string ("= Container " ^ Int.toString size), space, string "with", space, pretty setter ] ) and prettySimpleBinding{value, addr, use, ...} = PrettyBlock (1, false, [], [ string ("val Local" ^ Int.toString addr), space, string "(*", string "", space, prettyUses "" use, space, string "*)", space, string "=", PrettyBreak (1, 2), PrettyBlock (2, false, [], [pretty value]) ] ) and prettyUses prefix cl = PrettyBlock (1, true, [], PrettyString (prefix ^ "[") :: pList(cl, ",", prettyUsage) @ [ PrettyBreak (0, 0), PrettyString ("]") ] ) and prettyUsage UseGeneral = PrettyString "_" | prettyUsage UseExport = PrettyString "Export" | prettyUsage (UseApply (cl, al)) = PrettyBlock (1, true, [], string "(" :: pList(al, "|", fn _ => string "-") @ string ")" :: space :: string "->" :: space :: string "(" :: pList(cl, "|", prettyUsage) @ [ PrettyBreak (0, 0), string ")" ] ) | prettyUsage (UseField (n, cl)) = PrettyBlock (1, true, [], string ("UseField"^ Int.toString n ^ "[") :: pList(cl, ",", prettyUsage) @ [ PrettyBreak (0, 0), string "]" ] ) (* Mapping function to enable parts of the tree to be replaced. *) fun mapCodetree f code = let (* We use these functions to allow all nodes to be processed even if they are not full codetree nodes. *) fun deExtract(Extract l) = l | deExtract _ = raise Misc.InternalError "deExtract" fun deLambda (Lambda l) = l | deLambda _ = raise Misc.InternalError "deLambda" fun mapt (Newenv(decs, exp)) = let fun mapbinding(Declar{value, addr, use}) = Declar{value=mapCodetree f value, addr=addr, use=use} | mapbinding(RecDecs l) = RecDecs(map(fn {addr, lambda, use} => {addr=addr, use = use, lambda = deLambda(mapCodetree f (Lambda lambda))}) l) | mapbinding(NullBinding exp) = NullBinding(mapCodetree f exp) | mapbinding(Container{addr, use, size, setter}) = Container{addr=addr, use=use, size=size, setter=mapCodetree f setter} in Newenv(map mapbinding decs, mapCodetree f exp) end | mapt (c as Constnt _) = c | mapt (e as Extract _) = e | mapt (Indirect { base, offset, isVariant }) = Indirect{ base = mapCodetree f base, offset = offset, isVariant = isVariant } | mapt (Eval { function, argList, resultType }) = Eval { function = mapCodetree f function, argList = map (fn(c, a) => (mapCodetree f c, a)) argList, resultType = resultType } | mapt GetThreadId = GetThreadId | mapt(Unary { oper, arg1 }) = Unary { oper = oper, arg1 = mapCodetree f arg1 } | mapt(Binary { oper, arg1, arg2 }) = Binary { oper = oper, arg1 = mapCodetree f arg1, arg2 = mapCodetree f arg2 } | mapt(Arbitrary { oper, shortCond, arg1, arg2, longCall }) = Arbitrary { oper = oper, shortCond = mapCodetree f shortCond, arg1 = mapCodetree f arg1, arg2 = mapCodetree f arg2, longCall = mapCodetree f longCall } | mapt(AllocateWordMemory { numWords, flags, initial }) = AllocateWordMemory { numWords = mapCodetree f numWords, flags = mapCodetree f flags, initial = mapCodetree f initial } | mapt (Lambda { body, isInline, name, closure, argTypes, resultType, localCount, recUse }) = Lambda { body = mapCodetree f body, isInline = isInline, name = name, closure = map (deExtract o (mapCodetree f) o Extract) closure, argTypes = argTypes, resultType = resultType, localCount = localCount, recUse = recUse } | mapt (Cond(i, t, e)) = Cond(mapCodetree f i, mapCodetree f t, mapCodetree f e) | mapt (BeginLoop{loop, arguments}) = BeginLoop { loop = mapCodetree f loop, arguments = map(fn({value, addr, use}, t) => ({value=mapCodetree f value, addr=addr, use=use}, t)) arguments } | mapt (Loop l) = Loop (map(fn(c, t) => (mapCodetree f c, t)) l) | mapt (Raise r) = Raise(mapCodetree f r) | mapt (Handle{exp, handler, exPacketAddr}) = Handle{exp=mapCodetree f exp, handler=mapCodetree f handler, exPacketAddr=exPacketAddr } | mapt (Tuple { fields, isVariant} ) = Tuple { fields = map (mapCodetree f) fields, isVariant = isVariant } | mapt (SetContainer{container, tuple, filter}) = SetContainer{ container = mapCodetree f container, tuple = mapCodetree f tuple, filter = filter } | mapt (TagTest{test, tag, maxTag}) = TagTest{test = mapCodetree f test, tag = tag, maxTag = maxTag } | mapt (LoadOperation{kind, address}) = LoadOperation{kind = kind, address = maptAddress address } | mapt (StoreOperation{kind, address, value}) = StoreOperation{kind = kind, address = maptAddress address, value=mapCodetree f value } | mapt (BlockOperation{kind, sourceLeft, destRight, length}) = BlockOperation{kind = kind, sourceLeft = maptAddress sourceLeft, destRight = maptAddress destRight, length=mapCodetree f length } and maptAddress({base, index, offset}: codeAddress): codeAddress = {base=mapCodetree f base, index=case index of NONE => NONE | SOME i => SOME(mapCodetree f i), offset=offset} in (* Apply f to node. If it returns SOME c use that otherwise traverse the tree. *) case f code of SOME c => c | NONE => mapt code end (* Fold a function over the tree. f is applied to the node and the input value and returns an output and a flag. If the flag is FOLD_DONT_DESCEND the output value is used and the code tree is not examined further. Otherwise this function descends into the tree and folds over the subtree. *) datatype foldControl = FOLD_DESCEND | FOLD_DONT_DESCEND fun foldtree (f: codetree * 'a -> 'a * foldControl) (input: 'a) code = let fun ftree (Newenv(decs, exp), v) = let fun foldbinding(Declar{value, ...}, w) = foldtree f w value | foldbinding(RecDecs l, w) = foldl(fn ({lambda, ...}, x) => foldtree f x (Lambda lambda)) w l | foldbinding(NullBinding exp, w) = foldtree f w exp | foldbinding(Container{setter, ...}, w) = foldtree f w setter in foldtree f (foldl foldbinding v decs) exp end | ftree (Constnt _, v) = v | ftree (Extract _, v) = v | ftree (Indirect{base, ...}, v) = foldtree f v base | ftree (Eval { function, argList, ...}, v) = foldl(fn((c, _), w) => foldtree f w c) (foldtree f v function) argList | ftree (GetThreadId, v) = v | ftree (Unary {arg1, ...}, v) = foldtree f v arg1 | ftree (Binary {arg1, arg2, ...}, v) = foldtree f (foldtree f v arg1) arg2 | ftree (Arbitrary {shortCond, arg1, arg2, longCall, ...}, v) = foldtree f (foldtree f (foldtree f (foldtree f v shortCond) arg1) arg2) longCall | ftree (AllocateWordMemory {numWords, flags, initial}, v) = foldtree f (foldtree f (foldtree f v numWords) flags) initial | ftree (Lambda { body, closure, ...}, v) = foldtree f (foldl (fn (c, w) => foldtree f w (Extract c)) v closure) body | ftree (Cond(i, t, e), v) = foldtree f (foldtree f (foldtree f v i) t) e | ftree (BeginLoop{loop, arguments, ...}, v) = foldtree f (foldl (fn (({value, ...}, _), w) => foldtree f w value) v arguments) loop | ftree (Loop l, v) = foldl (fn ((c, _), w) => foldtree f w c) v l | ftree (Raise r, v) = foldtree f v r | ftree (Handle{exp, handler, ...}, v) = foldtree f (foldtree f v exp) handler | ftree (Tuple { fields, ...}, v) = foldl (fn (c, w) => foldtree f w c) v fields | ftree (SetContainer { container, tuple, ...}, v) = foldtree f (foldtree f v container) tuple | ftree (TagTest{test, ...}, v) = foldtree f v test | ftree (LoadOperation{address, ...}, v) = fAddress address v | ftree (StoreOperation{address, value, ...}, v) = foldtree f (fAddress address v) value | ftree (BlockOperation{sourceLeft, destRight, length, ...}, v) = foldtree f (fAddress sourceLeft (fAddress destRight v)) length and fAddress {base, index=NONE, ...} v = foldtree f v base | fAddress {base, index=SOME index, ...} v = foldtree f (foldtree f v base) index in case f (code, input) of (v, FOLD_DONT_DESCEND) => v | (v, FOLD_DESCEND) => ftree(code, v) end structure Sharing = struct type codetree = codetree and pretty = pretty and inlineStatus = inlineStatus and argumentType = argumentType and loadStoreKind = loadStoreKind and blockOpKind = blockOpKind and codeBinding = codeBinding and simpleBinding = simpleBinding and loadForm = loadForm and envGeneral = envGeneral and envSpecial = envSpecial and codeUse = codeUse and foldControl = foldControl and unaryOps = BuiltIns.unaryOps and binaryOps = BuiltIns.binaryOps and arbPrecisionOps = arbPrecisionOps and testConditions = BuiltIns.testConditions and arithmeticOperations = BuiltIns.arithmeticOperations end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_LAMBDA_LIFT.sml0000644000175000017500000005562413204034553023066 0ustar daviddavid(* Copyright (c) 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Lambda-lifting. If every call point to a function can be identified we can lift the free variables as extra parameters. This avoids the need for a closure on the heap. It makes stack-closures largely redundant. The advantages of lambda-lifting over stack closures are that the containing function of a stack-closure cannot call a stack-closure with tail-recursion because the closure must remain on the stack until the function returns. Also we can lambda-lift a function even if it is used in a function that requires a full closure whereas we cannot use a stack closure for a function if the closure would be used in a full, heap closure. This pass is called after optimisation and after any functions that have empty closures have been code-generated to constants. *) functor CODETREE_LAMBDA_LIFT ( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure BACKEND: CodegenTreeSig structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = BACKEND.Sharing = PRETTY.Sharing ): CodegenTreeSig = struct open BASECODETREE open CODETREE_FUNCTIONS exception InternalError = Misc.InternalError (* First pass: identify the functions whose only use are calls. This annotates the tree by setting the "use" or any bindings or recursive uses that require a closure to [UseGeneral]. *) fun checkBody(code: codetree, closureRef: int -> unit, recursiveRef: unit -> unit, localCount) = let (* An entry for each local binding. Set to true if we find a non-call reference. *) val localsNeedClosures = BoolArray.array(localCount, false) fun markExtract(LoadLocal n) = BoolArray.update(localsNeedClosures, n, true) | markExtract LoadRecursive = recursiveRef() | markExtract(LoadClosure n) = closureRef n | markExtract(LoadArgument _) = () fun checkCode(ext as Extract load) = (markExtract load; SOME ext) (* These are loads which aren't calls. If they are functions they need closures. *) | checkCode(Eval{function as Extract _, argList, resultType}) = (* A call of a function. We don't need to mark the function as needing a closure. *) SOME( Eval{function=function, argList=map(fn (c, t) => (checkMapCode c, t)) argList, resultType=resultType}) | checkCode(Lambda lambda) = SOME(Lambda(checkLambda lambda)) | checkCode(Newenv(decs, exp)) = (* We want to add [UseGeneral] to bindings that require closures. To do that we have to process the bindings in reverse order. *) let val processedExp = checkMapCode exp (* The expression first. *) fun getFlag addr = if BoolArray.sub(localsNeedClosures, addr) then [UseGeneral] else [] fun processDecs [] = [] | processDecs ((Declar { value, addr, ...}) :: tail) = let val pTail = processDecs tail (* Tail first *) val pValue = checkMapCode value in Declar{value = pValue, addr=addr, use=getFlag addr} :: pTail end | processDecs (RecDecs l :: tail) = let val pTail = processDecs tail (* Tail first *) (* Process the lambdas. Because they're mutually recursive this may set the closure flag for others in the set. *) val pLambdas = map (fn {lambda, addr, ...} => {addr=addr, use=[], lambda=checkLambda lambda}) l (* Can now pick up the closure flags. *) val pDecs = map(fn {lambda, addr, ...} => {lambda=lambda, addr=addr, use=getFlag addr}) pLambdas in RecDecs pDecs :: pTail end | processDecs (NullBinding c :: tail) = let val pTail = processDecs tail in NullBinding(checkMapCode c) :: pTail end | processDecs (Container{ addr, size, setter,... } :: tail) = let val pTail = processDecs tail in Container{addr=addr, use=[], size=size, setter=checkMapCode setter} :: pTail end in SOME(Newenv(processDecs decs, processedExp)) end | checkCode _ = NONE and checkLambda({body, closure, localCount, name, argTypes, resultType, ...}) = (* Lambdas - check the function body and any recursive uses. *) let val recNeedsClosure = ref false fun refToRecursive() = recNeedsClosure := true fun refToClosure n = markExtract(List.nth(closure, n)) val processedBody = checkBody(body, refToClosure, refToRecursive, localCount) in {body=processedBody, isInline=NonInline, closure=closure, localCount=localCount, name=name, argTypes=argTypes, resultType=resultType, recUse=if !recNeedsClosure then [UseGeneral] else []} end and checkMapCode code = mapCodetree checkCode code in checkMapCode code end (* Second pass: Actually do the lambda-lifting. *) datatype lift = LiftLoad of loadForm (* Usually unlifted but also for recursive calls. *) | LiftConst of codetree (* A lifted function. *) fun processBody(code: codetree, getClosure: int -> lift * loadForm list, getRecursive: unit -> loadForm list, localCount, debugArgs): codetree = let val processedLambdas: (codetree * loadForm list) option array = Array.array(localCount, NONE) fun findBinding(ext as LoadLocal n) = ( case Array.sub(processedLambdas, n) of SOME (c, l) => (LiftConst c, l) | NONE => (LiftLoad ext, []) ) | findBinding(LoadRecursive) = (LiftLoad LoadRecursive, getRecursive()) (* The code for the recursive case is always LoadRecursive but depending on whether it's been lifted or not there may be extra args. *) | findBinding(LoadClosure n) = getClosure n | findBinding(ext as LoadArgument _) = (LiftLoad ext, []) fun processCode(Eval{function=Extract ext, argList, resultType}) = let (* If this has been lifted we have to add the extra arguments. The function may also now be a constant. *) val (newFunction, extraArgs) = case findBinding ext of (LiftConst c, l) => (c, l) | (LiftLoad e, l) => (Extract e, l) (* Process the original args. There may be functions in there. *) val processedArgs = map(fn (c, t) => (processMapCode c, t)) argList in SOME(Eval{function=newFunction, argList=processedArgs @ map(fn c => (Extract c, GeneralType)) extraArgs, resultType=resultType}) end | processCode(Eval{function=Lambda(lambda as { recUse=[], ...}), argList, resultType}) = (* We have a call to a lambda. This must be a recursive function otherwise it would have been expanded inline. If the recursive references are just calls we can lambda-lift it. *) let val (fnConstnt, extraArgs) = hd(liftLambdas([(lambda, NONE)])) val processedArgs = map(fn (c, t) => (processMapCode c, t)) argList in SOME(Eval{function=fnConstnt, argList=processedArgs @ map(fn c => (Extract c, GeneralType)) extraArgs, resultType=resultType}) end | processCode(Extract ext) = ( (* A load of a binding outside a call. We need to process this to rebuild the closure but if we get a lifted function it's an error. *) case findBinding ext of (LiftLoad e, []) => SOME(Extract e) | _ => raise InternalError "Lifted function out of context" ) | processCode(Lambda lambda) = (* Bare lambda or lambda in binding where we need a closure. This can't be lambda-lifted but we still need to process the body and rebuild the closure. *) SOME(Lambda(processLambdaWithClosure lambda)) | processCode(Newenv(decs, exp)) = let fun processDecs [] = [] | processDecs ((Declar { value = Lambda (lambda as { recUse=[], ...}), addr, use=[]}) :: tail) = let (* We can lambda-lift. This results in a constant which is added to the table. We don't need an entry for the binding. *) val constntAndArgs = hd(liftLambdas[(lambda, SOME addr(*or NONE*))]) in Array.update(processedLambdas, addr, SOME constntAndArgs); processDecs tail end | processDecs ((Declar { value, addr, ...}) :: tail) = (* All other non-recursive bindings. *) Declar{value = processMapCode value, addr=addr, use=[]} :: processDecs tail | processDecs (RecDecs l :: tail) = let (* We only lambda-lift if all the functions are called. We could actually lift all those that are called and leave the others but it's probably not worth it. *) fun checkLift({lambda={recUse=[], ...}, use=[], ...}, true) = true | checkLift _ = false in if List.foldl checkLift true l then let val results = liftLambdas(map(fn{lambda, addr, ...} => (lambda, SOME addr)) l) in (* Add the code of the functions to the array. *) ListPair.appEq( fn (ca, {addr, ...}) => Array.update(processedLambdas, addr, SOME ca)) (results, l); (* And just deal with the rest of the bindings. *) processDecs tail end else let val pLambdas = map (fn {lambda, addr, ...} => {addr=addr, use=[], lambda=processLambdaWithClosure lambda}) l in RecDecs pLambdas :: processDecs tail end end | processDecs (NullBinding c :: tail) = NullBinding(processMapCode c) :: processDecs tail | processDecs (Container{ addr, size, setter,... } :: tail) = Container{addr=addr, use=[], size=size, setter=processMapCode setter} :: processDecs tail in SOME(Newenv(processDecs decs, processMapCode exp)) end | processCode _ = NONE and processLambdaWithClosure({body, closure, localCount, name, argTypes, resultType, ...}) = (* Lambdas that are not to be lifted. They may still have functions inside that can be lifted. They may also refer to functions that have been lifted. *) let (* We have to rebuild the closure. If any of the closure entries were lifted functions they are now constants but their arguments have to be added to the closure. *) val newClosure = makeClosure() fun closureRef n = let val (localFunction, extraArgs) = findBinding(List.nth(closure, n)) (* If the function is a local we have to add it to the closure. If it is a lifted function the function itself will be a constant except in the case of a recursive call. We do have to add the arguments to the closure. *) val resFunction = case localFunction of LiftLoad ext => LiftLoad(addToClosure newClosure ext) | c as LiftConst _ => c val resArgs = map(fn ext => addToClosure newClosure ext) extraArgs in (resFunction, resArgs) end val processedBody = processBody(body, closureRef, fn () => [], localCount, debugArgs) in {body=processedBody, isInline=NonInline, closure=extractClosure newClosure, localCount=localCount, name=name, argTypes=argTypes, resultType=resultType, recUse=[]} end and liftLambdas (bindings: (lambdaForm * int option) list) = (* Lambda-lift one or more functions. The general, but least common, case is a set of mutually recursive functions. More usually we have a single binding of a function or a single anonymous lambda. Lambda-lifting involves replacing the closure with arguments so it can only be used when we can identify all the call sites of the function and add the extra arguments. Because the transformed function has an empty closure (but see below for the mutually-recursive case) it can be code-generated immediately. The code then becomes a constant. There are a few complications. Although the additional, "closure" arguments are taken from the original function closure there may be changes if some of the closure entries are actually lambda-lifted functions. In that case the function may become a constant, and so not need to be included in the arguments, but the additional arguments for that function may need to be added to the closure. The other complication is recursion, especially mutual recursion. If we have references to mutually recursive functions we actually leave those references in the closure. This means that we actually code-generate mutually-recursive functions with non-empty closures but that is allowed if the references are only to other functions in the set. The code-generator sorts that out. *) let (* We need to construct a new common closure. This will be used by all the functions. *) val newClosure = makeClosure() fun closureEntry clItem = let val (localFunction, extraArgs) = findBinding clItem (* If the function is a local we have to add it to the closure. If it is a lifted function the function itself will be a constant except in the case of a recursive call. We do have to add the arguments to the closure. *) val resFunction = case localFunction of LiftLoad ext => LiftLoad(addToClosure newClosure ext) | c as LiftConst _ => c val resArgs = map(fn ext => addToClosure newClosure ext) extraArgs in (resFunction, resArgs) end local (* Check for an address which is one of the recursive set. *) val addressesUsed = List.mapPartial #2 bindings in fun isRecursive(LoadLocal n) = List.exists(fn p => p=n) addressesUsed | isRecursive _ = false end local fun closureItem ext = (* If it's a local we have to check that it's not one of our mutually recursive set. These items aren't going to be passed as arguments. *) if isRecursive ext then () else (closureEntry ext; ()) in val () = List.app(fn ({closure, ...}, _) => List.app closureItem closure) bindings end (* This composite closure is the set of additional arguments we need. *) val transClosure = extractClosure newClosure local val extraArgs = List.map(fn _ => (GeneralType, [])) transClosure val closureSize = List.length transClosure (* Process the function bodies. *) fun transformLambda({body, closure, localCount, name, argTypes, resultType, ...}, addr) = let val argSize = List.length argTypes val recArgs = List.tabulate(closureSize, fn n => LoadArgument(n+argSize)) (* References to other functions in the set are added to a residual closure. *) val residual = makeClosure() fun closureRef clItem = (* We have a reference to the (old) closure item. We need to change that to return the appropriate argument. The exception is that if we have a (recursive) reference to another function in the set we instead use an entry from the residual closure. *) let val oldClosureItem = List.nth(closure, clItem) in if isRecursive oldClosureItem then (LiftLoad(addToClosure residual oldClosureItem), recArgs) else let val (localFunction, resArgs) = closureEntry oldClosureItem fun mapToArg(LoadClosure n) = LoadArgument(n+argSize) | mapToArg _ = raise InternalError "mapToArg" (* Not a closure item. *) val resFunction = case localFunction of LiftLoad ext => LiftLoad(mapToArg ext) | c as LiftConst _ => c in (resFunction, map mapToArg resArgs) end end (* Recursive case - add the extra args. *) and recursiveRef() = recArgs val processedBody = processBody(body, closureRef, recursiveRef, localCount, debugArgs) val lambda = {body=processedBody, isInline=NonInline, closure=extractClosure residual, localCount=localCount, name=name, argTypes=argTypes @ extraArgs, resultType=resultType, recUse=[]} in { lambda=lambda, addr=getOpt(addr, 0), use=[] } end in val bindingsForCode = List.map transformLambda bindings end local (* We may have a single anonymous lambda. In that case we can give it address zero. *) val addresses = map (fn (_, addr) => getOpt(addr, 0)) bindings (* Create "closures" for each entry. These will be set by the code-generator to the code of each function and will become the closures we return. Put them into the table. *) val maxAddr = List.foldl(fn (addr, n) => Int.max(addr, n)) 0 addresses (* To get the constant addresses we create bindings for the functions and return a tuple with one entry for each binding. *) val extracts = List.map(Extract o LoadLocal) addresses val code = Newenv([RecDecs bindingsForCode], mkTuple extracts) (* Code-generate, "run" the code and extract the results. *) open Address val closure = allocWordData(0w1, Word8.orb(F_mutable, F_words), toMachineWord 0w1) (* Turn this into a lambda to code-generate. *) val lambda:lambdaForm = { body = code, isInline = NonInline, name = "", closure = [], argTypes = [(GeneralType, [])], resultType = GeneralType, localCount = maxAddr+1, recUse = [] } val props = BACKEND.codeGenerate(lambda, debugArgs, closure) val code: unit -> machineWord = RunCall.unsafeCast closure val codeConstnt = Constnt(code(), props) fun getItem([], _) = [] | getItem(_ :: l, n) = (mkInd(n, codeConstnt), transClosure) :: getItem(l, n+1) in (* Put in the results with the closures. *) val results = getItem(bindings, 0) end in results end and processMapCode code = mapCodetree processCode code in processMapCode code end fun codeGenerate(original: lambdaForm, debugArgs, closure) = let fun toplevel _ = raise InternalError "Top level reached" val checked = checkBody(Lambda original, toplevel, toplevel, 0) val processed = case processBody(checked, toplevel, toplevel, 0, debugArgs) of Lambda p => p | _ => raise InternalError "CODETREE_LAMBDA_LIFT:codeGenerate" in BACKEND.codeGenerate(processed, debugArgs, closure) end structure Foreign = BACKEND.Foreign structure Sharing = BASECODETREE.Sharing end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/ml_bind.ML0000644000175000017500000000653213204034553021171 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local structure CodetreeFunctions = CODETREE_FUNCTIONS(structure BASECODETREE = BaseCodeTree and STRONGLY = StronglyConnected) structure CodetreeBackend = CODETREE_STATIC_LINK_AND_CASES( structure PRETTY = Pretty structure GCODE = GCode structure DEBUG = Debug structure BASECODETREE = BaseCodeTree structure BACKENDTREE = BackendIntermediateCode structure CODETREE_FUNCTIONS = CodetreeFunctions ) structure CodetreeLamdbaLift = CODETREE_LAMBDA_LIFT ( structure BASECODETREE = BaseCodeTree and CODETREE_FUNCTIONS = CodetreeFunctions and BACKEND = CodetreeBackend and PRETTY = Pretty and DEBUG = Debug ) structure CodetreeCodegenConstantFns = CODETREE_CODEGEN_CONSTANT_FUNCTIONS ( structure BASECODETREE = BaseCodeTree and CODETREE_FUNCTIONS = CodetreeFunctions and BACKEND = CodetreeLamdbaLift and PRETTY = Pretty and DEBUG = Debug ) structure CodetreeRemoveRedundant = CODETREE_REMOVE_REDUNDANT( structure BASECODETREE = BaseCodeTree structure CODETREE_FUNCTIONS = CodetreeFunctions ) structure CodetreeSimplifier = CODETREE_SIMPLIFIER( structure BASECODETREE = BaseCodeTree structure CODETREE_FUNCTIONS = CodetreeFunctions structure REMOVE_REDUNDANT = CodetreeRemoveRedundant ) structure CodetreeOptimiser = CODETREE_OPTIMISER( structure PRETTY = Pretty structure DEBUG = Debug structure BASECODETREE = BaseCodeTree structure CODETREE_FUNCTIONS = CodetreeFunctions structure BACKEND = CodetreeCodegenConstantFns structure REMOVE_REDUNDANT = CodetreeRemoveRedundant structure SIMPLIFIER = CodetreeSimplifier ) in structure CodeTree = CODETREE ( structure PRETTY = Pretty structure DEBUG = Debug structure BASECODETREE = BaseCodeTree structure CODETREE_FUNCTIONS = CodetreeFunctions structure BACKEND = CodetreeCodegenConstantFns structure OPTIMISER = CodetreeOptimiser ) end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODE_ARRAY.ML0000644000175000017500000001140313204034553021226 0ustar daviddavid(* Copyright (c) 2017 David C.J. Matthews Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure CODE_ARRAY :> sig type machineWord = Address.machineWord and address = Address.address type byteVec and codeVec val byteVecMake: word -> byteVec val byteVecSet: byteVec * word * Word8.word -> unit val byteVecToCodeVec: byteVec -> codeVec val codeVecGet: codeVec * word -> Word8.word val codeVecSet: codeVec * word * Word8.word -> unit val codeVecAddr: codeVec -> address val codeVecPutWord: codeVec * word * machineWord -> unit datatype constantType = ConstAbsolute | ConstX86Relative val codeVecPutConstant: codeVec * word * machineWord * constantType -> unit val codeVecLockAndGetExecutable: codeVec -> address end = struct open Address open Misc datatype csegStatus = Bytes | UnlockedCode type byteVec = address and codeVec = address val objLength: address -> word = length val F_mutable_bytes = Word.fromLargeWord(Word8.toLargeWord(Word8.orb (F_mutable, F_bytes))) val wordSize = Word.fromInt Address.wordSize fun byteVecMake size = let val vec : address = RunCall.allocateByteMemory(size, F_mutable_bytes) (* allocateByteMemory does not clear the area. We have to do that at least to ensure that the constant area is cleared before we copy it into a real code area. In many cases we could get away with clearing less but for the moment this is the safest way. *) val byteLength = size * wordSize fun clear n = if n < byteLength then (assignByte(vec, n, 0w0); clear (n+0w1)) else () val () = clear 0w0 in vec end (* These use specific C functions to do the work. *) val byteVecToCodeVec = RunCall.rtsCallFull1 "PolyCopyByteVecToCode" and codeVecLockAndGetExecutable = RunCall.rtsCallFull1 "PolyLockMutableCode" (* Return the address of the segment. Used when putting in "self" addresses. *) fun codeVecAddr vector = vector (* Returns a value from the vector. Used when printing code. *) fun codeVecGet (addr, byteIndex : word) : Word8.word = let val lengthWords = objLength addr val lengthBytes = wordSize * lengthWords in if byteIndex < lengthBytes then loadByte (addr, byteIndex) else raise Subscript end (* Set a byte. Used when setting the byte data. *) fun byteVecSet (addr, byteIndex, value: Word8.word) = let val lengthWords = objLength addr val lengthBytes = wordSize * lengthWords in if byteIndex < lengthBytes then assignByte (addr, byteIndex, value) else raise Subscript end (* Set a byte. Used when fixing up code references. *) val codeVecSet = byteVecSet (* Puts in a word at a given word offset. This can only be used when the word is on a word boundary. *) fun codeVecPutWord (addr, wordIndex, value:machineWord) : unit = let val lengthWords = objLength addr in if lengthWords <= wordIndex then raise Subscript else assignWord (addr, wordIndex, value) end datatype constantType = ConstAbsolute | ConstX86Relative local val setCodeConstantCall = RunCall.rtsCallFast4 "PolySetCodeConstant" in (* Store a constant into the code. This must be used if the constant is not on a word boundary or if it needs special treatment. *) fun codeVecPutConstant (addr, byteIndex, value:machineWord, option: constantType) = let val lengthWords = objLength addr val lengthBytes = wordSize * lengthWords val optValue = case option of ConstAbsolute => 0w0 | ConstX86Relative => 0w1 in if lengthBytes <= byteIndex then raise Subscript else setCodeConstantCall(addr, byteIndex, value, optValue) end end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_STATIC_LINK_AND_CASES.sml0000644000175000017500000012743613204034553024535 0ustar daviddavid(* Copyright (c) 2012-13, 2015-16 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CODETREE_STATIC_LINK_AND_CASES( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure GCODE: GENCODESIG structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG structure BACKENDTREE: BackendIntermediateCodeSig sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = GCODE.Sharing = PRETTY.Sharing = BACKENDTREE.Sharing ) : CodegenTreeSig = struct open BASECODETREE open Address open BACKENDTREE datatype caseType = datatype BACKENDTREE.caseType exception InternalError = Misc.InternalError open BACKENDTREE.CodeTags (* Property tag to indicate which arguments to a function are functions that are only ever called. *) val closureFreeArgsTag: int list Universal.tag = Universal.tag() datatype maybeCase = IsACase of { cases : (backendIC * word) list, test : backendIC, caseType: caseType, default : backendIC } | NotACase of backendIC fun staticLinkAndCases (pt, localAddressCount) = let fun copyCode (pt, nonLocals, recursive, localCount, localAddresses, argClosure) = let (* "closuresForLocals" is a flag indicating that if the declaration is a function a closure must be made for it. *) val closuresForLocals = Array.array(localCount, false) val newLocalAddresses = Array.array (localCount, 0) val argProperties = Array.array(localCount, []) (* Reference to local or non-local bindings. This sets the "closure" property on the binding depending on how the binding will be used. *) fun locaddr (LoadLocal addr, closure) = let val () = if closure then Array.update (closuresForLocals, addr, true) else () val newAddr = Array.sub(newLocalAddresses, addr) in BICLoadLocal newAddr end | locaddr(LoadArgument addr, closure) = ( argClosure(addr, closure); BICLoadArgument addr ) | locaddr(LoadRecursive, closure) = recursive closure | locaddr(LoadClosure addr, closure) = #1 (nonLocals (addr, closure)) (* Argument properties. This returns information of which arguments can have functions passed in without requiring a full heap closure. *) fun argumentProps(LoadLocal addr) = Array.sub(argProperties, addr) | argumentProps(LoadArgument _) = [] | argumentProps LoadRecursive = [] | argumentProps (LoadClosure addr) = #2 (nonLocals (addr, false)) fun makeDecl addr = let val newAddr = ! localAddresses before (localAddresses := !localAddresses+1) val () = Array.update (closuresForLocals, addr, false) val () = Array.update (newLocalAddresses, addr, newAddr) val () = Array.update (argProperties, addr, []) in newAddr end fun insert(Eval { function = Extract LoadRecursive, argList, resultType, ...}) = let (* Recursive. If we pass an argument in the same position we don't necessarily need a closure. It depends on what else happens to it. *) fun mapArgs(n, (Extract (ext as LoadArgument m), t) :: tail) = (BICExtract(locaddr(ext, n <> m)), t) :: mapArgs(n+1, tail) | mapArgs(n, (c, t) :: tail) = (insert c, t) :: mapArgs(n+1, tail) | mapArgs(_, []) = [] val newargs = mapArgs(0, argList) val func = locaddr(LoadRecursive, (* closure = *) false) in (* If we are calling a function which has been declared this does not require it to have a closure. Any other use of the function would. *) BICEval {function = BICExtract func, argList = newargs, resultType=resultType} end | insert(Eval { function = Extract ext, argList, resultType, ...}) = let (* Non-recursive but a binding. *) val cfArgs = argumentProps ext fun isIn n = not(List.exists(fn m => m = n) cfArgs) fun mapArgs(n, (Extract ext, t) :: tail) = (BICExtract(locaddr(ext, isIn n)), t) :: mapArgs(n+1, tail) | mapArgs(n, (Lambda lam, t) :: tail) = (insertLambda(lam, isIn n), t) :: mapArgs(n+1, tail) | mapArgs(n, (c, t) :: tail) = (insert c, t) :: mapArgs(n+1, tail) | mapArgs(_, []) = [] val newargs = mapArgs(0, argList) val func = locaddr(ext, (* closure = *) false) in (* If we are calling a function which has been declared this does not require it to have a closure. Any other use of the function would. *) BICEval {function = BICExtract func, argList = newargs, resultType=resultType} end | insert(Eval { function = Constnt(w, p), argList, resultType, ...}) = let (* Constant function. *) val cfArgs = case List.find (Universal.tagIs closureFreeArgsTag) p of NONE => [] | SOME u => Universal.tagProject closureFreeArgsTag u fun isIn n = not(List.exists(fn m => m = n) cfArgs) fun mapArgs(n, (Extract ext, t) :: tail) = (BICExtract(locaddr(ext, isIn n)), t) :: mapArgs(n+1, tail) | mapArgs(n, (Lambda lam, t) :: tail) = (insertLambda(lam, isIn n), t) :: mapArgs(n+1, tail) | mapArgs(n, (c, t) :: tail) = (insert c, t) :: mapArgs(n+1, tail) | mapArgs(_, []) = [] val newargs = mapArgs(0, argList) in BICEval {function = BICConstnt (w, p), argList = newargs, resultType=resultType} end | insert(Eval { function = Lambda lam, argList, resultType, ...}) = let (* Call of a lambda. Typically this will be a recursive function that can't be inlined. *) val newargs = map(fn (c, t) => (insert c, t)) argList val (copiedLambda, newClosure, makeRecClosure, _) = copyLambda lam val func = copyProcClosure (copiedLambda, newClosure, makeRecClosure) in BICEval {function = func, argList = newargs, resultType=resultType} end | insert(Eval { function, argList, resultType, ...}) = let (* Process the arguments first. *) val newargs = map(fn (c, t) => (insert c, t)) argList val func = insert function in BICEval {function = func, argList = newargs, resultType=resultType} end | insert GetThreadId = BICGetThreadId | insert(Unary { oper, arg1 }) = BICUnary { oper = oper, arg1 = insert arg1 } | insert(Binary { oper, arg1, arg2 }) = BICBinary { oper = oper, arg1 = insert arg1, arg2 = insert arg2 } | insert(Arbitrary { oper=ArbCompare test, shortCond, arg1, arg2, longCall}) = let val insArg1 = insert arg1 and insArg2 = insert arg2 and insCall = insert longCall and insShort = insert shortCond (* We have to rewrite this. *) (* if isShort i andalso isShort j then toShort i < toShort j else callComp(i, j) < 0 *) fun fixedComp(arg1, arg2) = BICBinary { oper = BuiltIns.WordComparison{test=test, isSigned=true}, arg1 = arg1, arg2 = arg2 } val zeroFalse = BICConstnt(toMachineWord 0, []) in BICCond( insShort, fixedComp(insArg1, insArg2), fixedComp(insCall, zeroFalse) ) end | insert(Arbitrary { oper=ArbArith arith, shortCond, arg1, arg2, longCall}) = let val insArg1 = insert arg1 and insArg2 = insert arg2 and insCall = insert longCall and insShort = insert shortCond in BICArbitrary{oper=arith, shortCond=insShort, arg1=insArg1, arg2=insArg2, longCall=insCall} end | insert(AllocateWordMemory {numWords, flags, initial}) = BICAllocateWordMemory { numWords = insert numWords, flags = insert flags, initial = insert initial } | insert(Extract ext) = (* Load the value bound to an identifier. The closure flag is set to true since the only cases where a closure is not needed, eval and load-andStore, are handled separately. *) BICExtract(locaddr(ext, (* closure = *) true)) | insert(Indirect {base, offset, ...}) = BICField {base = insert base, offset = offset} | insert(Constnt wp) = BICConstnt wp (* Constants can be returned untouched. *) | insert(BeginLoop{loop=body, arguments=argList, ...}) = (* Start of tail-recursive inline function. *) let (* Make entries in the tables for the arguments. *) val newAddrs = List.map (fn ({addr, ...}, _) => makeDecl addr) argList (* Process the body. *) val insBody = insert body (* Finally the initial argument values. *) local fun copyDec(({value, ...}, t), addr) = ({addr=addr, value=insert value}, t) in val newargs = ListPair.map copyDec (argList, newAddrs) end in (* Add the kill entries on after the loop. *) BICBeginLoop{loop=insBody, arguments=newargs} end | insert(Loop argList) = (* Jump back to start of tail-recursive function. *) BICLoop(List.map(fn (c, t) => (insert c, t)) argList) | insert(Raise x) = BICRaise (insert x) (* See if we can use a case-instruction. Arguably this belongs in the optimiser but it is only really possible when we have removed redundant declarations. *) | insert(Cond(condTest, condThen, condElse)) = reconvertCase(copyCond (condTest, condThen, condElse)) | insert(Newenv(ptElist, ptExp)) = let (* Process the body. Recurses down the list of declarations and expressions processing each, and then reconstructs the list on the way back. *) fun copyDeclarations ([]) = [] | copyDeclarations (Declar({addr=caddr, value = Lambda lam, ...}) :: vs) = let (* Binding a Lambda - process the function first. *) val newAddr = makeDecl caddr val (copiedLambda, newClosure, makeRecClosure, cfArgs) = copyLambda lam val () = Array.update(argProperties, caddr, cfArgs) (* Process all the references to the function. *) val rest = copyDeclarations vs (* We now know if we need a heap closure. *) val dec = copyProcClosure(copiedLambda, newClosure, makeRecClosure orelse Array.sub(closuresForLocals, caddr)) in BICDeclar{addr=newAddr, value=dec} :: rest end | copyDeclarations (Declar({addr=caddr, value = pt, ...}) :: vs) = let (* Non-function binding. *) val newAddr = makeDecl caddr val rest = copyDeclarations vs in BICDeclar{addr=newAddr, value=insert pt} :: rest end | copyDeclarations (RecDecs mutualDecs :: vs) = let (* Mutually recursive declarations. Any of the declarations may refer to any of the others. This causes several problems in working out the use-counts and whether the functions (they should be functions) need closures. A function will need a closure if any reference would require one (i.e. does anything other than call it). The reference may be from one of the other mutually recursive declarations and may be because that function requires a full closure. This means that once we have dealt with any references in the rest of the containing block we have to repeatedly scan the list of declarations removing those which need closures until we are left with those that do not. The use-counts can only be obtained when all the non-local lists have been copied. *) (* First go down the list making a declaration for each entry. This makes sure there is a table entry for all the declarations. *) val _ = List.map (fn {addr, ...} => makeDecl addr) mutualDecs (* Process the rest of the block. Identifies all other references to these declarations. *) val restOfBlock = copyDeclarations vs (* We now want to find out which of the declarations require closures. First we copy all the declarations, except that we don't copy the non-local lists of functions. *) fun copyDec ({addr=caddr, lambda, ...}) = let val (dec, newClosure, makeRecClosure, cfArgs) = copyLambda lambda val () = if makeRecClosure then Array.update (closuresForLocals, caddr, true) else () val () = Array.update(argProperties, caddr, cfArgs) in (caddr, dec, newClosure) end val copiedDecs = map copyDec mutualDecs (* We now have identified all possible references to the functions apart from those of the closures themselves. Any of closures may refer to any other function so we must iterate until all the functions which need full closures have been processed. *) fun processClosures([], outlist, true) = (* Sweep completed. - Must repeat. *) processClosures(outlist, [], false) | processClosures([], outlist, false) = (* We have processed the whole of the list without finding anything which needs a closure. The remainder do not need full closures. *) let fun mkLightClosure ((addr, value, newClosure)) = let val clos = copyProcClosure(value, newClosure, false) val newAddr = Array.sub(newLocalAddresses, addr) in {addr=newAddr, value=clos} end in map mkLightClosure outlist end | processClosures((h as (caddr, value, newClosure))::t, outlist, someFound) = if Array.sub(closuresForLocals, caddr) then let (* Must copy it. *) val clos = copyProcClosure(value, newClosure, true) val newAddr = Array.sub(newLocalAddresses, caddr) in {addr=newAddr, value=clos} :: processClosures(t, outlist, true) end (* Leave it for the moment. *) else processClosures(t, h :: outlist, someFound) val decs = processClosures(copiedDecs, [], false) local fun isLambda{value=BICLambda _, ...} = true | isLambda _ = false in val (lambdas, nonLambdas) = List.partition isLambda decs end fun asMutual{addr, value = BICLambda lambda} = {addr=addr, lambda=lambda} | asMutual _ = raise InternalError "asMutual" in (* Return the mutual declarations and the rest of the block. *) if null lambdas then map BICDeclar nonLambdas @ restOfBlock (* None left *) else BICRecDecs (map asMutual lambdas) :: (map BICDeclar nonLambdas @ restOfBlock) end (* copyDeclarations.isMutualDecs *) | copyDeclarations (NullBinding v :: vs) = let (* Not a declaration - process this and the rest. *) (* Must process later expressions before earlier ones so that the last references to variables are found correctly. DCJM 30/11/99. *) val copiedRest = copyDeclarations vs; val copiedNode = insert v in (* Expand out blocks *) case copiedNode of BICNewenv(decs, exp) => decs @ (BICNullBinding exp :: copiedRest) | _ => BICNullBinding copiedNode :: copiedRest end | copyDeclarations (Container{addr, size, setter, ...} :: vs) = let val newAddr = makeDecl addr val rest = copyDeclarations vs val setCode = insert setter in BICDecContainer{addr=newAddr, size=size} :: BICNullBinding setCode :: rest end val insElist = copyDeclarations(ptElist @ [NullBinding ptExp]) fun mkEnv([], exp) = exp | mkEnv(decs, exp) = BICNewenv(decs, exp) fun decSequenceWithFinalExp decs = let fun splitLast _ [] = raise InternalError "decSequenceWithFinalExp: empty" | splitLast decs [BICNullBinding exp] = (List.rev decs, exp) | splitLast _ [_] = raise InternalError "decSequenceWithFinalExp: last is not a NullDec" | splitLast decs (hd::tl) = splitLast (hd:: decs) tl in mkEnv(splitLast [] decs) end in (* TODO: Tidy this up. *) decSequenceWithFinalExp insElist end (* isNewEnv *) | insert(Tuple { fields, ...}) = BICTuple (map insert fields) | insert(Lambda lam) = (* Using a lambda in a context other than a call or being passed to a function that is known only to call the function. It requires a heap closure. *) insertLambda(lam, true) | insert(Handle { exp, handler, exPacketAddr }) = let (* The order here is important. We want to make sure that the last reference to a variable really is the last. *) val newAddr = makeDecl exPacketAddr val hand = insert handler val exp = insert exp in BICHandle {exp = exp, handler = hand, exPacketAddr=newAddr} end | insert(SetContainer {container, tuple, filter}) = BICSetContainer{container = insert container, tuple = insert tuple, filter = filter} | insert(TagTest{test, tag, maxTag}) = BICTagTest{test=insert test, tag=tag, maxTag=maxTag} | insert(LoadOperation{kind, address}) = BICLoadOperation{kind=kind, address=insertAddress address} | insert(StoreOperation{kind, address, value}) = BICStoreOperation{kind=kind, address=insertAddress address, value=insert value} | insert(BlockOperation{kind, sourceLeft, destRight, length}) = BICBlockOperation{ kind=kind, sourceLeft=insertAddress sourceLeft, destRight=insertAddress destRight, length=insert length} and insertLambda (lam, needsClosure) = let val (copiedLambda, newClosure, _, _) = copyLambda lam in copyProcClosure (copiedLambda, newClosure, needsClosure) end and insertAddress{base, index, offset} = {base=insert base, index=Option.map insert index, offset=offset} and copyCond (condTest, condThen, condElse): maybeCase = let (* Process the then-part. *) val insThen = insert condThen (* Process the else-part. If it's a conditional process it here. *) val insElse = case condElse of Cond(i, t, e) => copyCond(i, t, e) | _ => NotACase(insert condElse) (* Process the condition after the then- and else-parts. *) val insFirst = insert condTest type caseVal = { tag: word, test: codetree, caseType: caseType } option; (* True if both instructions are loads or indirections with the same effect. More complicated cases could be considered but function calls must always be treated as different. Note: the reason we consider Indirect entries here as well as Extract is because we (used to) defer Indirect entries. *) datatype similarity = Different | Similar of bicLoadForm fun similar (BICExtract a, BICExtract b) = if a = b then Similar a else Different | similar (BICField{offset=aOff, base=aBase}, BICField{offset=bOff, base=bBase}) = if aOff <> bOff then Different else similar (aBase, bBase) | similar _ = Different; (* If we have a call to the int equality operation then we may be able to use an indexed case. N.B. This works equally for word values (unsigned) and fixed precision int (unsigned) but is unsafe for arbitrary precision since the lower levels assume that all values are tagged. *) fun findCase (BICBinary{oper=BuiltIns.WordComparison{test=BuiltIns.TestEqual, ...}, arg1, arg2}) = let in case (arg1, arg2) of (BICConstnt(c1, _), arg2) => if isShort c1 then SOME{tag=toShort c1, test=arg2, caseType = CaseWord} else NONE (* Not a short constant. *) | (arg1, BICConstnt(c2, _)) => if isShort c2 then SOME{tag=toShort c2, test=arg1, caseType = CaseWord} else NONE (* Not a short constant. *) | _ => NONE (* Wrong number of arguments - should raise exception? *) end | findCase(BICTagTest { test, tag, maxTag }) = SOME { tag=tag, test=test, caseType=CaseTag maxTag } | findCase _ = NONE val testCase = findCase insFirst in case testCase of NONE => (* Can't use a case *) NotACase(BICCond (insFirst, insThen, reconvertCase insElse)) | SOME { tag=caseTags, test=caseTest, caseType=caseCaseTest } => (* Can use a case. Can we combine two cases? If we have an expression like "if x = a then .. else if x = b then ..." we can combine them into a single "case". *) case insElse of IsACase { cases=nextCases, test=nextTest, default=nextDefault, caseType=nextCaseType } => ( case (similar(nextTest, caseTest), caseCaseTest = nextCaseType) of (* Note - it is legal (though completely redundant) for the same case to appear more than once in the list. This is not checked for at this stage. *) (Similar _, true) => IsACase { cases = (insThen, caseTags) :: map (fn (c, l) => (c, l)) nextCases, test = nextTest, default = nextDefault, caseType = caseCaseTest } | _ => (* Two case expressions but they test different variables. We can't combine them. *) IsACase { cases = [(insThen, caseTags)], test = caseTest, default = reconvertCase insElse, caseType=caseCaseTest } ) | NotACase elsePart => (* insElse is not a case *) IsACase { cases = [(insThen, caseTags)], test = caseTest, default = elsePart, caseType=caseCaseTest } end (* Check something that's been created as a Case and see whether it is sparse. If it is turn it back into a sequence of conditionals. This was previously done at the bottom level and the choice of when to use an indexed case was made by the architecture-specific code-generator. That's probably unnecessary and complicates the code-generator. *) and reconvertCase(IsACase{cases, test, default, caseType}) = let (* Count the number of cases and compute the maximum and minimum. *) (* If we are testing on integers we could have negative values here. Because we're using "word" here any negative values are treated as large positive values and so we won't use a "case". If this is a case on constructor tags we know the range. There will always be a "default" which may be anywhere in the range but if we construct a jump table that covers all the values we don't need the range checks. *) val useIndexedCase = case caseType of CaseTag _ => (* Exhaustive *) List.length cases > 4 | _ => let val (_, aLabel) = hd cases fun foldCases((_, w), (min, max)) = (Word.min(w, min), Word.max(w, max)) val (min, max) = List.foldl foldCases (aLabel, aLabel) cases val numberOfCases = List.length cases in numberOfCases > 7 andalso Word.fromInt numberOfCases >= (max - min) div 0w3 end in if useIndexedCase then let (* Create a contiguous range of labels. Eliminate any duplicates which are legal but redundant. *) local val labelCount = List.length cases (* Add an extra field before sorting which retains the ordering for equal labels. *) val ordered = ListPair.zipEq (cases, List.tabulate(labelCount, fn n=>n)) fun leq ((_, w1: word), n1: int) ((_, w2), n2) = if w1 = w2 then n1 <= n2 else w1 < w2 val sorted = List.map #1 (Misc.quickSort leq ordered) (* Filter out any duplicates. *) fun filter [] = [] | filter [p] = [p] | filter ((p as (_, lab1)) :: (q as (_, lab2)) :: tl) = if lab1 = lab2 then p :: filter tl else p :: filter (q :: tl) in val cases = filter sorted end val (isExhaustive, min, max) = case caseType of CaseTag max => (true, 0w0, max) | _ => let val (_, aLabel) = hd cases fun foldCases((_, w), (min, max)) = (Word.min(w, min), Word.max(w, max)) val (min, max) = List.foldl foldCases (aLabel, aLabel) cases in (false, min, max) end (* Create labels for each of the cases. Fill in any gaps with entries that will point to the default. We have to be careful if max happens to be the largest value of Word.word. In that case adding one to the range will give us a value less than max. *) fun extendCase(indexVal, cl as ((c, caseValue) :: cps)) = if indexVal + min = caseValue then SOME c :: extendCase(indexVal+0w1, cps) else NONE :: extendCase(indexVal+0w1, cl) | extendCase(indexVal, []) = (* We may not be at the end if this came from a CaseTag *) if indexVal > max-min then [] else NONE :: extendCase(indexVal+0w1, []) val fullCaseRange = extendCase(0w0, cases) val _ = Word.fromInt(List.length fullCaseRange) = max-min+0w1 orelse raise InternalError "Cases" in BICCase{cases=fullCaseRange, test=test, default=default, isExhaustive=isExhaustive, firstIndex=min} end else let fun reconvert [] = default | reconvert ((c, t) :: rest) = let val test = case caseType of CaseWord => BICBinary{ oper=BuiltIns.WordComparison{test=BuiltIns.TestEqual, isSigned=false}, arg1=test, arg2=BICConstnt(toMachineWord t, [])} | CaseTag maxTag => BICTagTest { test=test, tag=t, maxTag=maxTag } in BICCond(test, c, reconvert rest) end in reconvert cases end end | reconvertCase (NotACase t) = t (* Just a simple conditional. *) (* If "makeClosure" is true the function will need a full closure. It may need a full closure even if makeClosure is false if it involves a recursive reference which will need a closure. *) and copyLambda ({body=lambdaBody, argTypes, name=lambdaName, resultType, localCount, closure=lambdaClosure, ...}: lambdaForm) = let val newGrefs: loadForm list ref = ref [] (* non-local references *) val newNorefs = ref 0 (* number of non-local refs *) val makeClosureForRecursion = ref false (* A new table for the new function. *) fun prev (closureAddr, closure) = let val loadEntry = List.nth(lambdaClosure, closureAddr) (* Returns the closure address of the non-local *) fun makeClosureEntry([], _) = (* not found - construct new entry *) let val () = newGrefs := loadEntry :: !newGrefs; val newAddr = !newNorefs + 1; in newNorefs := newAddr; (* increment count *) newAddr-1 end | makeClosureEntry(oldEntry :: t, newAddr) = if oldEntry = loadEntry then newAddr-1 else makeClosureEntry(t, newAddr - 1) (* Set the closure flag if necessary and get the argument props. At this point we discard the "Load" entry returned by nonLocals and "recursive". The closure will be processed later. *) val argProps = case loadEntry of LoadLocal addr => let val () = if closure then Array.update (closuresForLocals, addr, true) else () in Array.sub(argProperties, addr) end | LoadArgument addr => (argClosure(addr, closure); []) | LoadRecursive => (recursive closure; []) | LoadClosure entry => #2 (nonLocals (entry, closure)) in (* Just return the closure entry. *) (BICLoadClosure(makeClosureEntry (!newGrefs, !newNorefs)), argProps) end fun recCall closure = (* Reference to the closure itself. *) ( if closure then makeClosureForRecursion := true else (); BICLoadRecursive ) local datatype tri = TriUnref | TriCall | TriClosure val argClosureArray = Array.array(List.length argTypes, TriUnref) in fun argClosure(n, t) = Array.update(argClosureArray, n, (* If this is true it requires a closure. If it is false it requires a closure if any other reference does. *) if t orelse Array.sub(argClosureArray, n) = TriClosure then TriClosure else TriCall) fun closureFreeArgs() = Array.foldri(fn (n, TriCall, l) => n :: l | (_, _, l) => l) [] argClosureArray end (* process the body *) val newLocalAddresses = ref 0 val (insertedCode, _) = copyCode (lambdaBody, prev, recCall, localCount, newLocalAddresses, argClosure) val globalRefs = !newGrefs val cfArgs = closureFreeArgs() in (BICLambda { body = insertedCode, name = lambdaName, closure = [], argTypes = map #1 argTypes, resultType = resultType, localCount = ! newLocalAddresses, heapClosure = false }, globalRefs, ! makeClosureForRecursion, cfArgs) end (* copyLambda *) (* Copy the closure of a function which has previously been processed by copyLambda. *) and copyProcClosure (BICLambda{ body, name, argTypes, resultType, localCount, ...}, newClosure, heapClosure) = let (* process the non-locals in this function *) (* If a heap closure is needed then any functions referred to from the closure also need heap closures.*) fun makeLoads ext = locaddr(ext, heapClosure) val copyRefs = rev (map makeLoads newClosure) in BICLambda { body = body, name = name, closure = copyRefs, argTypes = argTypes, resultType = resultType, localCount = localCount, heapClosure = heapClosure orelse null copyRefs (* False if closure is empty *) } end | copyProcClosure(pt, _, _) = pt (* may now be a constant *) (* end copyProcClosure *) in case pt of Lambda lam => let val (copiedLambda, newClosure, _, cfArgs) = copyLambda lam val code = copyProcClosure (copiedLambda, newClosure, true) val props = if null cfArgs then [] else [Universal.tagInject closureFreeArgsTag cfArgs] in (code, props) end | c as Newenv(_, exp) => let val code = insert c fun getProps(Extract(LoadLocal addr)) = let val cfArgs = Array.sub(argProperties, addr) in if null cfArgs then [] else [Universal.tagInject closureFreeArgsTag cfArgs] end | getProps(Tuple { fields, ...}) = let val fieldProps = map getProps fields in if List.all null fieldProps then [] else [Universal.tagInject CodeTags.tupleTag fieldProps] end | getProps _ = [] val props = getProps exp in (code, props) end | c as Constnt(_, p) => (insert c, p) | pt => (insert pt, []) end (* copyCode *) val outputAddresses = ref 0 fun topLevel _ = raise InternalError "outer level reached in copyCode" val (insertedCode, argProperties) = copyCode (pt, topLevel, topLevel, localAddressCount, outputAddresses, fn _ => ()) in (insertedCode, argProperties) end (* staticLinkAndCases *) fun codeGenerate(lambda: lambdaForm, debugSwitches, closure) = let val (code, argProperties) = staticLinkAndCases(Lambda lambda, 0) val backendCode = code val () = if DEBUG.getParameter DEBUG.codetreeAfterOptTag debugSwitches then PRETTY.getCompilerOutput debugSwitches (BACKENDTREE.pretty backendCode) else () val bicLambda = case backendCode of BACKENDTREE.BICLambda lam => lam | _ => raise InternalError "Not BICLambda" val () = GCODE.gencodeLambda(bicLambda, debugSwitches, closure) in argProperties end structure Foreign = GCODE.Foreign (* Sharing can be copied from CODETREE. *) structure Sharing = BASECODETREE.Sharing end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE.ML0000644000175000017500000006466013204034553020765 0ustar daviddavid(* Copyright (c) 2012,13,15-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CODETREE ( structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure BACKEND: sig type codetree type machineWord = Address.machineWord val codeGenerate: codetree * int * Universal.universal list -> (unit -> machineWord) * Universal.universal list structure Foreign: FOREIGNCALLSIG structure Sharing : sig type codetree = codetree end end structure OPTIMISER: sig type codetree and envSpecial and codeBinding val codetreeOptimiser: codetree * Universal.universal list * int -> { numLocals: int, general: codetree, bindings: codeBinding list, special: envSpecial } structure Sharing: sig type codetree = codetree and envSpecial = envSpecial and codeBinding = codeBinding end end sharing type PRETTY.pretty = BASECODETREE.pretty sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = BACKEND.Sharing = OPTIMISER.Sharing ) : CODETREESIG = struct open Address; open StretchArray; open BASECODETREE; open PRETTY; open CODETREE_FUNCTIONS exception InternalError = Misc.InternalError and Interrupt = Thread.Thread.Interrupt infix 9 sub; fun mkDec (laddr, res) = Declar{value = res, addr = laddr, use=[]} fun deExtract(Extract ext) = ext | deExtract _ = raise InternalError "deExtract" datatype level = Level of { lev: int, closure: createClosure, lookup: int * int * bool -> loadForm } local (* We can have locals at the outer level. *) fun bottomLevel(addr, 0, false) = if addr < 0 then raise InternalError "load: negative" else LoadLocal addr | bottomLevel _ = (* Either the level is wrong or it's a parameter. *) raise InternalError "bottom level" in val baseLevel = Level { lev = 0, closure = makeClosure(), lookup = bottomLevel } end fun newLevel (Level{ lev, lookup, ...}) = let val closureList = makeClosure() val makeClosure = addToClosure closureList fun check n = if n < 0 then raise InternalError "load: negative" else n fun thisLevel(addr, level, isParam) = if level < 0 then raise InternalError "mkLoad: level must be non-negative" else if level > 0 then makeClosure(lookup(addr, level-1, isParam)) else (* This level *) if isParam then LoadArgument(check addr) else LoadLocal(check addr) in Level { lev = lev+1, closure = closureList, lookup = thisLevel } end fun getClosure(Level{ closure, ...}) = List.map Extract (extractClosure closure) fun mkLoad (addr, Level { lev = newLevel, lookup, ... } , Level { lev = oldLevel, ... }) = Extract(lookup(addr, newLevel - oldLevel, false)) and mkLoadParam(addr, Level { lev = newLevel, lookup, ... } , Level { lev = oldLevel, ... }) = Extract(lookup(addr, newLevel - oldLevel, true)) (* Transform a function so that free variables are converted to closure form. Returns the maximum local address used. *) fun genCode(pt, debugSwitches, numLocals) = let val printCodeTree = DEBUG.getParameter DEBUG.codetreeTag debugSwitches and compilerOut = PRETTY.getCompilerOutput debugSwitches (* val printCodeTree = true and compilerOut = PRETTY.prettyPrint(TextIO.print, 70) *) (* If required, print it first. This is the code that the front-end has produced. *) val () = if printCodeTree then compilerOut(pretty pt) else () (* This ensures that everything is printed just before it is code-generated. *) fun codeAndPrint(code, localCount) = let val () = if printCodeTree then compilerOut (BASECODETREE.pretty code) else (); in BACKEND.codeGenerate(code, localCount, debugSwitches) end (* Optimise it. *) val { numLocals = localCount, general = gen, bindings = decs, special = spec } = OPTIMISER.codetreeOptimiser(pt, debugSwitches, numLocals) (* At this stage we have a "general" value and also, possibly a "special" value. We could simply create mkEnv(decs, gen) and run preCode and genCode on that. However, we would lose the ability to insert any inline functions from this code into subsequent top-level expressions. We can't simply retain the "special" entry either because that may refer to values that have to be created once when the code is run. Such values will be referenced by "load" entries which refer to entries in the "decs". We construct a tuple which will contain the actual values after the code is run. Then if we want the value at some time in the future when we use something from the "special" entry we can extract the corresponding value from this tuple. Previously, this code always generated a tuple containing every declaration. That led to some very long compilation times because the back-end has some code which is quadratic in the number of entries on the stack. We now try to prune bindings by only generating the tuple if we have an inline function somewhere and only generating bindings we actually need. *) fun simplifySpec (EnvSpecTuple(size, env)) = let (* Get all the field entries. *) fun simpPair (gen, spec) = (gen, simplifySpec spec) val fields = List.tabulate(size, simpPair o env) in if List.all(fn (_, EnvSpecNone) => true | _ => false) fields then EnvSpecNone else EnvSpecTuple(size, fn n => List.nth(fields, n)) end | simplifySpec s = s (* None or inline function. *) in case simplifySpec spec of EnvSpecNone => let val (code, props) = codeAndPrint (mkEnv(decs, gen), localCount) in fn () => Constnt(code(), props) end | simpleSpec => let (* The bindings are marked using a three-valued mark. A binding is needed if it is referenced in any way. During the scan to find the references we need to avoid processing an entry that has already been processed but it is possible that a binding may be referenced as a general value only (e.g. from a function closure) and separately as a special value. See Test148.ML *) datatype visit = UnVisited | VisitedGeneral | VisitedSpecial local val refArray = Array.array(localCount, UnVisited) fun findDecs EnvSpecNone = () | findDecs (EnvSpecTuple(size, env)) = let val fields = List.tabulate(size, env) in List.app processGenAndSpec fields end | findDecs (EnvSpecInlineFunction({closure, ...}, env)) = let val closureItems = List.tabulate(List.length closure, env) in List.app processGenAndSpec closureItems end | findDecs (EnvSpecUnary _) = () | findDecs (EnvSpecBinary _) = () and processGenAndSpec (gen, spec) = (* The spec part needs only to be processed if this entry has not yet been visited, *) case gen of EnvGenLoad(LoadLocal addr) => let val previous = Array.sub(refArray, addr) in case (previous, spec) of (VisitedSpecial, _) => () (* Fully done *) | (VisitedGeneral, EnvSpecNone) => () (* Nothing useful *) | (_, EnvSpecNone) => (* We need this entry but we don't have any special entry to process. We could find another reference with a special entry. *) Array.update(refArray, addr, VisitedGeneral) | (_, _) => ( (* This has a special entry. Mark it and process. *) Array.update(refArray, addr, VisitedSpecial); findDecs spec ) end | EnvGenConst _ => () | _ => raise InternalError "doGeneral: not LoadLocal or Constant" val () = findDecs simpleSpec in (* Convert to an immutable data structure. This will continue to be referenced in any inline function after the code has run. *) val refVector = Array.vector refArray end val decArray = Array.array(localCount, CodeZero) fun addDec(addr, dec) = if Vector.sub(refVector, addr) <> UnVisited then Array.update(decArray, addr, dec) else () fun addDecs(Declar{addr, ...}) = addDec(addr, mkLoadLocal addr) | addDecs(RecDecs decs) = List.app(fn {addr, ...} => addDec(addr, mkLoadLocal addr)) decs | addDecs(NullBinding _) = () | addDecs(Container{addr, size, ...}) = addDec(addr, mkTupleFromContainer(addr, size)) val () = List.app addDecs decs (* Construct the tuple and add the "general" value at the start. *) val resultTuple = mkTuple(gen :: Array.foldr(op ::) nil decArray) (* Now generate the machine code and return it as a function that can be called. *) val (code, codeProps) = codeAndPrint (mkEnv (decs, resultTuple), localCount) in (* Return a function that executes the compiled code and then creates the final "global" value as the result. *) fn () => let local (* Execute the code. This will perform any side-effects the user has programmed and may raise an exception if that is required. *) val resVector = code () (* The result is a vector containing the "general" value as the first word and the evaluated bindings for any "special" entries in subsequent words. *) val decVals : address = if isShort resVector then raise InternalError "Result vector is not an address" else toAddress resVector in fun resultWordN n = loadWord (decVals, n) (* Get the general value, the zero'th entry in the vector. *) val generalVal = resultWordN 0w0 (* Get the properties for a field in the tuple. Because the result is a tuple all the properties should be contained in a tupleTag entry. *) val fieldProps = case Option.map (Universal.tagProject CodeTags.tupleTag) (List.find(Universal.tagIs CodeTags.tupleTag) codeProps) of NONE => (fn _ => []) | SOME p => (fn n => List.nth(p, n)) val generalProps = fieldProps 0 end (* Construct a new environment so that when an entry is looked up the corresponding constant is returned. *) fun newEnviron (oldEnv) args = let val (oldGeneral, oldSpecial) = oldEnv args val genPair = case oldGeneral of EnvGenLoad(LoadLocal addr) => ( (* For the moment retain this check. It's better to have an assertion failure than a segfault. *) Vector.sub(refVector, addr) <> UnVisited orelse raise InternalError "Reference to non-existent binding"; (resultWordN(Word.fromInt addr+0w1), fieldProps(addr+1)) ) | EnvGenConst c => c | _ => raise InternalError "codetree newEnviron: Not Extract or Constnt" val specVal = mapSpec oldSpecial in (EnvGenConst genPair, specVal) end and mapSpec EnvSpecNone = EnvSpecNone | mapSpec (EnvSpecTuple(size, env)) = EnvSpecTuple(size, newEnviron env) | mapSpec (EnvSpecInlineFunction(spec, env)) = EnvSpecInlineFunction(spec, (newEnviron env)) | mapSpec (EnvSpecUnary _) = EnvSpecNone | mapSpec (EnvSpecBinary _) = EnvSpecNone in (* and return the whole lot as a global value. *) Constnt(generalVal, setInline(mapSpec simpleSpec) generalProps) end end end (* genCode *) (* Constructor functions for the front-end of the compiler. *) local fun mkSimpleFunction inlineType (lval, args, name, closure, numLocals) = { body = lval, isInline = inlineType, name = if name = "" then "" else name, closure = map deExtract closure, argTypes = List.tabulate(args, fn _ => (GeneralType, [])), resultType = GeneralType, localCount = numLocals, recUse = [] } in val mkProc = Lambda o mkSimpleFunction NonInline (* Normal function *) and mkInlproc = Lambda o mkSimpleFunction Inline (* Explicitly inlined by the front-end *) (* Unless Compiler.inlineFunctor is false functors are treated as macros and expanded when they are applied. Unlike core-language functions they are not first-class values so if they are inline the "value" returned in the initial binding can just be zero except if there is something in the closure. Almost always the closure will be empty since free variables will come from previous topdecs and will be constants, The exception is if a structure and a functor using the structure appear in the same topdec (no semicolon between them). In that case we can't leave it. We would have to update the closure even if we leave the body untouched but we could have closure entries that are constants. e.g. structure S = struct val x = 1 end functor F() = struct open S end *) fun mkMacroProc (args as (_, _, _, [], _)) = Constnt(toMachineWord 0, setInline ( EnvSpecInlineFunction(mkSimpleFunction Inline args, fn _ => raise InternalError "mkMacroProc: closure")) []) | mkMacroProc args = Lambda(mkSimpleFunction Inline args) end local fun mkFunWithTypes inlineType { body, argTypes=argsAndTypes, resultType, name, closure, numLocals } = Lambda { body = body, isInline = inlineType, name = if name = "" then "" else name, closure = map deExtract closure, argTypes = map (fn t => (t, [])) argsAndTypes, resultType = resultType, localCount = numLocals, recUse = [] } in val mkFunction = mkFunWithTypes NonInline and mkInlineFunction = mkFunWithTypes Inline end fun mkEval (ct, clist) = Eval { function = ct, argList = List.map(fn c => (c, GeneralType)) clist, resultType=GeneralType } fun mkCall(func, argsAndTypes, resultType) = Eval { function = func, argList = argsAndTypes, resultType=resultType } (* Basic built-in operations. *) fun mkUnary (oper, arg1) = Unary { oper = oper, arg1 = arg1 } and mkBinary (oper, arg1, arg2) = Binary { oper = oper, arg1 = arg1, arg2 = arg2 } val getCurrentThreadId = GetThreadId and getCurrentThreadIdFn = mkInlproc(GetThreadId, 1 (* Ignores argument *), "GetThreadId()", [], 0) fun mkAllocateWordMemory (numWords, flags, initial) = AllocateWordMemory { numWords = numWords, flags = flags, initial = initial } val mkAllocateWordMemoryFn = mkInlproc( mkAllocateWordMemory(mkInd(0, mkLoadArgument 0), mkInd(1, mkLoadArgument 0), mkInd(2, mkLoadArgument 0)), 1, "AllocateWordMemory()", [], 0) (* Builtins wrapped as functions. N.B. These all take a single argument which may be a tuple. *) fun mkUnaryFn oper = mkInlproc(mkUnary(oper, mkLoadArgument 0), 1, BuiltIns.unaryRepr oper ^ "()", [], 0) and mkBinaryFn oper = mkInlproc(mkBinary(oper, mkInd(0, mkLoadArgument 0), mkInd(1, mkLoadArgument 0)), 1, BuiltIns.binaryRepr oper ^ "()", [], 0) local open BuiltIns (* Word equality. The value of isSigned doesn't matter. *) val eqWord = WordComparison{test=TestEqual, isSigned=false} in fun mkNot arg = Unary{oper=NotBoolean, arg1=arg} and mkIsShort arg = Unary{oper=IsTaggedValue, arg1=arg} and mkEqualWord (arg1, arg2) = Binary{oper=eqWord, arg1=arg1, arg2=arg2} val equalWordFn = (* This takes two words, not a tuple. *) mkInlproc(mkBinary(eqWord, mkLoadArgument 0, mkLoadArgument 1), 2, "EqualWord()", [], 0) end (* Equality for arbitrary precision if at least one of the arguments is known to be short. *) fun mkEqualArbShort (arg1, arg2) = Arbitrary { oper=ArbCompare BuiltIns.TestEqual, shortCond=Constnt(toMachineWord 1, []), arg1=arg1, arg2=arg2, longCall=CodeZero} fun mkLoadOperation(oper, base, index) = LoadOperation{kind=oper, address={base=base, index=SOME index, offset=0w0}} fun mkLoadOperationFn oper = mkInlproc(mkLoadOperation(oper, mkInd(0, mkLoadArgument 0), mkInd(1, mkLoadArgument 0)), 1, "loadOperation()", [], 0) fun mkStoreOperation(oper, base, index, value) = StoreOperation{kind=oper, address={base=base, index=SOME index, offset=0w0}, value=value} fun mkStoreOperationFn oper = mkInlproc(mkStoreOperation(oper, mkInd(0, mkLoadArgument 0), mkInd(1, mkLoadArgument 0), mkInd(2, mkLoadArgument 0)), 1, "storeOperation()", [], 0) fun mkBlockOperation {kind, leftBase, leftIndex, rightBase, rightIndex, length } = BlockOperation { kind = kind, sourceLeft={base=leftBase, index=SOME leftIndex, offset=0w0}, destRight={base=rightBase, index=SOME rightIndex, offset=0w0}, length=length} (* Construct a function that takes five arguments. The order is left-base, right-base, left-index, right-index, length. *) fun mkBlockOperationFn kind = mkInlproc( mkBlockOperation{kind=kind, leftBase=mkInd(0, mkLoadArgument 0), rightBase=mkInd(1, mkLoadArgument 0), leftIndex=mkInd(2, mkLoadArgument 0), rightIndex=mkInd(3, mkLoadArgument 0), length=mkInd(4, mkLoadArgument 0)}, 1, "blockOperation()", [], 0) fun identityFunction (name : string) : codetree = mkInlproc (mkLoadArgument 0, 1, name, [], 0) (* Returns its argument. *); (* Test a tag value. *) fun mkTagTest(test: codetree, tagValue: word, maxTag: word) = TagTest {test=test, tag=tagValue, maxTag=maxTag } fun mkHandle (exp, handler, exId) = Handle {exp = exp, handler = handler, exPacketAddr = exId} fun mkStr (strbuff:string) = Constnt (toMachineWord strbuff, []) (* If we have multiple references to a piece of code we may have to save it in a temporary and then use it from there. If the code has side-effects we certainly must do that to ensure that the side-effects are done exactly once and in the correct order, however if the code is just a constant or a load we can reduce the amount of code we generate by simply returning the original code. *) fun multipleUses (code as Constnt _, _, _) = {load = (fn _ => code), dec = []} (* | multipleUses (code as Extract(LoadLegacy{addr, level=loadLevel, ...}), _, level) = let (* May have to adjust the level. *) fun loadFn lev = if lev = level then code else mkLoad (addr, loadLevel + lev, level)) in {load = loadFn, dec = []} end | multipleUses (code as Extract(LoadLocal addr), _, level) = let (* May have to adjust the level. *) fun loadFn lev = if lev = level then code else mkLoad (addr, lev - level) in {load = loadFn, dec = []} end | multipleUses (code as Extract(LoadArgument _), _, level) = let (* May have to adjust the level. *) fun loadFn lev = if lev = level then code else raise InternalError "multipleUses: different level" (*else mkLoad (addr, lev - level)*) in {load = loadFn, dec = []} end | multipleUses (Extract _, _, _) = raise InternalError "multipleUses: TODO" *) | multipleUses (code, nextAddress, level) = let val addr = nextAddress(); fun loadFn lev = mkLoad (addr, lev, level); in {load = loadFn, dec = [mkDec (addr, code)]} end (* multipleUses *); fun mkMutualDecs [] = raise InternalError "mkMutualDecs: empty declaration list" | mkMutualDecs l = let fun convertDec(a, Lambda lam) = {lambda = lam, addr = a, use=[]} | convertDec _ = raise InternalError "mkMutualDecs: Recursive declaration is not a function" in RecDecs(List.map convertDec l) end val mkNullDec = NullBinding fun mkContainer(addr, size, setter) = Container{addr=addr, size=size, use=[], setter=setter} val mkIf = Cond and mkRaise = Raise fun mkConst v = Constnt(v, []) (* For the moment limit these to general arguments. *) fun mkLoop args = Loop (List.map(fn c => (c, GeneralType)) args) and mkBeginLoop(exp, args) = BeginLoop{loop=exp, arguments=List.map(fn(i, v) => ({value=v, addr=i, use=[]}, GeneralType)) args} fun mkWhile(b, e) = (* Generated as if b then (e; ) else (). *) mkBeginLoop(mkIf(b, mkEnv([NullBinding e], mkLoop[]), CodeZero), []) (* We previously had conditional-or and conditional-and as separate instructions. I've taken them out since they can be implemented just as efficiently as a normal conditional. In addition they were interfering with the optimisation where the second expression contained the last reference to something. We needed to add a "kill entry" to the other branch but there wasn't another branch to add it to. DCJM 7/12/00. *) fun mkCor(xp1, xp2) = mkIf(xp1, CodeTrue, xp2); fun mkCand(xp1, xp2) = mkIf(xp1, xp2, CodeZero); val mkSetContainer = fn (container, tuple, size) => mkSetContainer(container, tuple, BoolVector.tabulate(size, fn _ => true)) (* An arbitrary precision operation takes a tuple consisting of a pair of arguments and a function. The code that is constructed checks both arguments to see if they are short. If they are not or the short precision operation overflows the code to call the function is executed. *) fun mkArbitraryFn oper = mkInlproc( Arbitrary{oper=oper, shortCond=mkCand(mkIsShort(mkInd(0, mkLoadArgument 0)), mkIsShort(mkInd(1, mkLoadArgument 0))), arg1=mkInd(0, mkLoadArgument 0), arg2=mkInd(1, mkLoadArgument 0), longCall= mkEval(mkInd(2, mkLoadArgument 0), [mkTuple[mkInd(0, mkLoadArgument 0), mkInd(1, mkLoadArgument 0)]])}, 1, "Arbitrary" ^ (case oper of ArbCompare test => BuiltIns.testRepr test | ArbArith arith => BuiltIns.arithRepr arith) ^ "()", [], 0) structure Foreign = BACKEND.Foreign structure Sharing = struct type machineWord = machineWord type codetree = codetree type pretty = pretty type argumentType=argumentType type codeBinding = codeBinding type level = level end end (* CODETREE functor body *); polyml-5.7.1/mlsource/MLCompiler/CodeTree/BackendIntermediateCodeSig.sml0000644000175000017500000001522313204034553025165 0ustar daviddavid(* Copyright (c) 2012, 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Intermediate code tree for the back end of the compiler. *) signature BackendIntermediateCodeSig = sig type machineWord = Address.machineWord datatype argumentType = GeneralType | FloatingPtType structure BuiltIns: BUILTINS datatype backendIC = BICNewenv of bicCodeBinding list * backendIC (* Set of bindings with an expression. *) | BICConstnt of machineWord * Universal.universal list (* Load a constant *) | BICExtract of bicLoadForm (* Get a local variable, an argument or a closure value *) | BICField of {base: backendIC, offset: int } (* Load a field from a tuple or record *) | BICEval of (* Evaluate a function with an argument list. *) { function: backendIC, argList: (backendIC * argumentType) list, resultType: argumentType } (* Built-in functions. *) | BICUnary of {oper: BuiltIns.unaryOps, arg1: backendIC} | BICBinary of {oper: BuiltIns.binaryOps, arg1: backendIC, arg2: backendIC} | BICArbitrary of {oper: BuiltIns.arithmeticOperations, shortCond: backendIC, arg1: backendIC, arg2: backendIC, longCall: backendIC} | BICLambda of bicLambdaForm (* Lambda expressions. *) | BICCond of backendIC * backendIC * backendIC (* If-then-else expression *) | BICCase of (* Case expressions *) { cases : backendIC option list, (* NONE means "jump to the default". *) test : backendIC, default : backendIC, isExhaustive: bool, firstIndex: word } | BICBeginLoop of (* Start of tail-recursive inline function. *) { loop: backendIC, arguments: (bicSimpleBinding * argumentType) list } | BICLoop of (backendIC * argumentType) list (* Jump back to start of tail-recursive function. *) | BICRaise of backendIC (* Raise an exception *) | BICHandle of (* Exception handler. *) { exp: backendIC, handler: backendIC, exPacketAddr: int } | BICTuple of backendIC list (* Tuple *) | BICSetContainer of (* Copy a tuple to a container. *) { container: backendIC, tuple: backendIC, filter: BoolVector.vector } | BICTagTest of { test: backendIC, tag: word, maxTag: word } | BICLoadOperation of { kind: loadStoreKind, address: bicAddress } | BICStoreOperation of { kind: loadStoreKind, address: bicAddress, value: backendIC } | BICBlockOperation of { kind: blockOpKind, sourceLeft: bicAddress, destRight: bicAddress, length: backendIC } | BICGetThreadId | BICAllocateWordMemory of {numWords: backendIC, flags: backendIC, initial: backendIC} and bicCodeBinding = BICDeclar of bicSimpleBinding (* Make a local declaration or push an argument *) | BICRecDecs of { addr: int, lambda: bicLambdaForm } list (* Set of mutually recursive declarations. *) | BICNullBinding of backendIC (* Just evaluate the expression and discard the result. *) | BICDecContainer of { addr: int, size: int } (* Create a container for a tuple on the stack. *) and caseType = CaseWord (* Word or fixed-precision integer. *) | CaseTag of word and bicLoadForm = BICLoadLocal of int (* Local binding *) | BICLoadArgument of int (* Argument - 0 is first arg etc.*) | BICLoadClosure of int (* Closure - 0 is first closure item etc *) | BICLoadRecursive (* Recursive call *) and loadStoreKind = LoadStoreMLWord of {isImmutable: bool} (* Load/Store an ML word in an ML word cell. *) | LoadStoreMLByte of {isImmutable: bool} (* Load/Store a byte, tagging and untagging as appropriate, in an ML byte cell. *) | LoadStoreC8 (* Load/Store C values - The base address is a boxed SysWord.word value. *) | LoadStoreC16 | LoadStoreC32 | LoadStoreC64 | LoadStoreCFloat | LoadStoreCDouble | LoadStoreUntaggedUnsigned and blockOpKind = BlockOpMove of {isByteMove: bool} | BlockOpEqualByte | BlockOpCompareByte withtype bicSimpleBinding = { (* Declare a value or push an argument. *) value: backendIC, addr: int } and bicLambdaForm = { (* Lambda expressions. *) body : backendIC, name : string, closure : bicLoadForm list, argTypes : argumentType list, resultType : argumentType, localCount : int, heapClosure : bool } and bicAddress = (* Address form used in loads, store and block operations. The base is an ML address if this is to/from ML memory or a (boxed) SysWord.word if it is to/from C memory. The index is a value in units of the size of the item being loaded/stored and the offset is always in bytes. *) {base: backendIC, index: backendIC option, offset: word} type pretty val pretty : backendIC -> pretty val loadStoreKindRepr: loadStoreKind -> string and blockOpKindRepr: blockOpKind -> string structure CodeTags: sig val tupleTag: Universal.universal list list Universal.tag val mergeTupleProps: Universal.universal list * Universal.universal list -> Universal.universal list end structure Sharing: sig type backendIC = backendIC and bicLoadForm = bicLoadForm and caseType = caseType and pretty = pretty and argumentType = argumentType and bicCodeBinding = bicCodeBinding and bicSimpleBinding = bicSimpleBinding and loadStoreKind = loadStoreKind and blockOpKind = blockOpKind and unaryOps = BuiltIns.unaryOps and binaryOps = BuiltIns.binaryOps and testConditions = BuiltIns.testConditions and arithmeticOperations = BuiltIns.arithmeticOperations end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_OPTIMISER.sml0000644000175000017500000023474613204034553022707 0ustar daviddavid(* Copyright (c) 2012,13,15 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CODETREE_OPTIMISER( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure REMOVE_REDUNDANT: sig type codetree type loadForm type codeUse val cleanProc : (codetree * codeUse list * (int -> loadForm) * int) -> codetree structure Sharing: sig type codetree = codetree and loadForm = loadForm and codeUse = codeUse end end structure SIMPLIFIER: sig type codetree and codeBinding and envSpecial val simplifier: codetree * int -> (codetree * codeBinding list * envSpecial) * int * bool val specialToGeneral: codetree * codeBinding list * envSpecial -> codetree structure Sharing: sig type codetree = codetree and codeBinding = codeBinding and envSpecial = envSpecial end end structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG structure BACKEND: sig type codetree type machineWord = Address.machineWord val codeGenerate: codetree * int * Universal.universal list -> (unit -> machineWord) * Universal.universal list structure Sharing : sig type codetree = codetree end end sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = REMOVE_REDUNDANT.Sharing = SIMPLIFIER.Sharing = PRETTY.Sharing = BACKEND.Sharing ) : sig type codetree and envSpecial and codeBinding val codetreeOptimiser: codetree * Universal.universal list * int -> { numLocals: int, general: codetree, bindings: codeBinding list, special: envSpecial } structure Sharing: sig type codetree = codetree and envSpecial = envSpecial and codeBinding = codeBinding end end = struct open BASECODETREE open Address open CODETREE_FUNCTIONS open StretchArray infix 9 sub exception InternalError = Misc.InternalError datatype inlineTest = TooBig | NonRecursive | TailRecursive of bool vector | NonTailRecursive of bool vector fun evaluateInlining(function, numArgs, maxInlineSize) = let (* This checks for the possibility of inlining a function. It sees if it is small enough according to some rough estimate of the cost and it also looks for recursive uses of the function. Typically if the function is small enough to inline there will be only one recursive use but we consider the possibility of more than one. If the only uses are tail recursive we can replace the recursive calls by a Loop with a BeginLoop outside it. If there are non-tail recursive calls we may be able to lift out arguments that are unchanged. For example for fun map f [] = [] | map f (a::b) = f a :: map f b it may be worth lifting out f and generating specific mapping functions for each application. *) val hasRecursiveCall = ref false (* Set to true if rec call *) val allTail = ref true (* Set to false if non recursive *) (* An element of this is set to false if the actual value if anything other than the original argument. At the end we are then left with the arguments that are unchanged. *) val argMod = Array.array(numArgs, true) infix 6 -- (* Subtract y from x but return 0 rather than a negative number. *) fun x -- y = if x >= y then x-y else 0 (* Check for the code size and also recursive references. N,B. We assume in hasLoop that tail recursion applies only with Cond, Newenv and Handler. *) fun checkUse _ (_, 0, _) = 0 (* The function is too big to inline. *) | checkUse isMain (Newenv(decs, exp), cl, isTail) = let fun checkBind (Declar{value, ...}, cl) = checkUse isMain(value, cl, false) | checkBind (RecDecs decs, cl) = List.foldl(fn ({lambda, ...}, n) => checkUse isMain (Lambda lambda, n, false)) cl decs | checkBind (NullBinding c, cl) = checkUse isMain (c, cl, false) | checkBind (Container{setter, ...}, cl) = checkUse isMain(setter, cl -- 1, false) in checkUse isMain (exp, List.foldl checkBind cl decs, isTail) end | checkUse _ (Constnt(w, _), cl, _) = if isShort w then cl else cl -- 1 (* A recursive reference in any context other than a call prevents any inlining. *) | checkUse true (Extract LoadRecursive, _, _) = 0 | checkUse _ (Extract _, cl, _) = cl -- 1 | checkUse isMain (Indirect{base, ...}, cl, _) = checkUse isMain (base, cl -- 1, false) | checkUse _ (Lambda {body, argTypes, closure, ...}, cl, _) = (* For the moment, any recursive use in an inner function prevents inlining. *) if List.exists (fn LoadRecursive => true | _ => false) closure then 0 else checkUse false (body, cl -- (List.length argTypes + List.length closure), false) | checkUse true (Eval{function = Extract LoadRecursive, argList, ...}, cl, isTail) = let (* If the actual argument is anything but the original argument then the corresponding entry in the array is set to false. *) fun testArg((exp, _), n) = ( if (case exp of Extract(LoadArgument a) => n = a | _ => false) then () else Array.update(argMod, n, false); n+1 ) in List.foldl testArg 0 argList; hasRecursiveCall := true; if isTail then () else allTail := false; List.foldl(fn ((e, _), n) => checkUse true (e, n, false)) (cl--3) argList end | checkUse isMain (Eval{function, argList, ...}, cl, _) = checkUse isMain (function, List.foldl(fn ((e, _), n) => checkUse isMain (e, n, false)) (cl--2) argList, false) | checkUse _ (GetThreadId, cl, _) = cl -- 1 | checkUse isMain (Unary{arg1, ...}, cl, _) = checkUse isMain (arg1, cl -- 1, false) | checkUse isMain (Binary{arg1, arg2, ...}, cl, _) = checkUseList isMain ([arg1, arg2], cl -- 1) | checkUse isMain (Arbitrary{arg1, arg2, ...}, cl, _) = checkUseList isMain ([arg1, arg2], cl -- 4) | checkUse isMain (AllocateWordMemory {numWords, flags, initial}, cl, _) = checkUseList isMain ([numWords, flags, initial], cl -- 1) | checkUse isMain (Cond(i, t, e), cl, isTail) = checkUse isMain (i, checkUse isMain (t, checkUse isMain (e, cl -- 2, isTail), isTail), false) | checkUse isMain (BeginLoop { loop, arguments, ...}, cl, _) = checkUse isMain (loop, List.foldl (fn (({value, ...}, _), n) => checkUse isMain (value, n, false)) cl arguments, false) | checkUse isMain (Loop args, cl, _) = List.foldl(fn ((e, _), n) => checkUse isMain (e, n, false)) cl args | checkUse isMain (Raise c, cl, _) = checkUse isMain (c, cl -- 1, false) | checkUse isMain (Handle {exp, handler, ...}, cl, isTail) = checkUse isMain (exp, checkUse isMain (handler, cl, isTail), false) | checkUse isMain (Tuple{ fields, ...}, cl, _) = checkUseList isMain (fields, cl) | checkUse isMain (SetContainer{container, tuple = Tuple { fields, ...}, ...}, cl, _) = (* This can be optimised *) checkUse isMain (container, checkUseList isMain (fields, cl), false) | checkUse isMain (SetContainer{container, tuple, filter}, cl, _) = checkUse isMain (container, checkUse isMain (tuple, cl -- (BoolVector.length filter), false), false) | checkUse isMain (TagTest{test, ...}, cl, _) = checkUse isMain (test, cl -- 1, false) | checkUse isMain (LoadOperation{address, ...}, cl, _) = checkUseAddress isMain (address, cl -- 1) | checkUse isMain (StoreOperation{address, value, ...}, cl, _) = checkUse isMain (value, checkUseAddress isMain (address, cl -- 1), false) | checkUse isMain (BlockOperation{sourceLeft, destRight, length, ...}, cl, _) = checkUse isMain (length, checkUseAddress isMain (destRight, checkUseAddress isMain (sourceLeft, cl -- 1)), false) and checkUseList isMain (elems, cl) = List.foldl(fn (e, n) => checkUse isMain (e, n, false)) cl elems and checkUseAddress isMain ({base, index=NONE, ...}, cl) = checkUse isMain (base, cl, false) | checkUseAddress isMain ({base, index=SOME index, ...}, cl) = checkUseList isMain ([base, index], cl) val costLeft = checkUse true (function, maxInlineSize, true) in if costLeft = 0 then TooBig else if not (! hasRecursiveCall) then NonRecursive else if ! allTail then TailRecursive(Array.vector argMod) else NonTailRecursive(Array.vector argMod) end (* Turn a list of fields to use into a filter for SetContainer. *) fun fieldsToFilter useList = let val maxDest = List.foldl Int.max ~1 useList val fields = BoolArray.array(maxDest+1, false) val _ = List.app(fn n => BoolArray.update(fields, n, true)) useList in BoolArray.vector fields end and filterToFields filter = BoolVector.foldri (fn (i, true, l) => i :: l | (_, _, l) => l) [] filter and setInFilter filter = BoolVector.foldl (fn (true, n) => n+1 | (false, n) => n) 0 filter (* Work-around for bug in bytevector equality. *) and boolVectorEq(a, b) = filterToFields a = filterToFields b fun buildFullTuple(filter, select) = let fun extArg(t, u) = if t = BoolVector.length filter then [] else if BoolVector.sub(filter, t) then select u :: extArg(t+1, u+1) else CodeZero :: extArg (t+1, u) in mkTuple(extArg(0, 0)) end (* When transforming code we only process one level and do not descend into sub-functions. *) local fun deExtract(Extract l) = l | deExtract _ = raise Misc.InternalError "deExtract" fun onlyFunction repEntry (Lambda{ body, isInline, name, closure, argTypes, resultType, localCount, recUse }) = SOME( Lambda { body = body, isInline = isInline, name = name, closure = map (deExtract o mapCodetree repEntry o Extract) closure, argTypes = argTypes, resultType = resultType, localCount = localCount, recUse = recUse } ) | onlyFunction repEntry code = repEntry code in fun mapFunctionCode repEntry = mapCodetree (onlyFunction repEntry) end local (* This transforms the body of a "small" recursive function replacing any reference to the arguments by the appropriate entry and the recursive calls themselves by either a Loop or a recursive call. *) fun mapCodeForFunctionRewriting(code, argMap, modVec, transformCall) = let fun repEntry(Extract(LoadArgument n)) = SOME(Extract(Vector.sub(argMap, n))) | repEntry(Eval { function = Extract LoadRecursive, argList, resultType }) = let (* Filter arguments to include only those that are changed and map any values we pass. They may include references to the parameters. *) fun mapArg((arg, argT)::rest, n) = if Vector.sub(modVec, n) then mapArg(rest, n+1) else (mapCode arg, argT) :: mapArg(rest, n+1) | mapArg([], _) = [] in SOME(transformCall(mapArg(argList, 0), resultType)) end | repEntry _ = NONE and mapCode code = mapFunctionCode repEntry code in mapCode code end in (* If we have a tail recursive function we can replace the tail calls by a loop. modVec indicates the arguments that have not changed. *) fun replaceTailRecursiveWithLoop(body, argTypes, modVec, nextAddress) = let (* We need to create local bindings for arguments that will change. Those that do not can be reused. *) local fun mapArgs((argT, use):: rest, n, decs, mapList) = if Vector.sub(modVec, n) then mapArgs (rest, n+1, decs, LoadArgument n :: mapList) else let val na = ! nextAddress before nextAddress := !nextAddress + 1 in mapArgs (rest, n+1, ({addr = na, value = mkLoadArgument n, use=use}, argT) :: decs, LoadLocal na :: mapList) end | mapArgs([], _, decs, mapList) = (List.rev decs, List.rev mapList) val (decs, mapList) = mapArgs(argTypes, 0, [], []) in val argMap = Vector.fromList mapList val loopArgs = decs end in BeginLoop { arguments = loopArgs, loop = mapCodeForFunctionRewriting(body, argMap, modVec, fn (l, _) => Loop l) } end (* If we have a small recursive function where some arguments are passed through unchanged we can transform it by extracting the stable arguments and only passing the changing arguments. The advantage is that this allows the stable arguments to be inserted inline which is important if they are functions. The canonical example is List.map. *) fun liftRecursiveFunction(body, argTypes, modVec, closureSize, name, resultType, localCount) = let local fun getArgs((argType, use)::rest, nArg, clCount, argCount, stable, change, mapList) = let (* This is the argument from the outer function. It is either added to the closure or passed to the inner function. *) val argN = LoadArgument nArg in if Vector.sub(modVec, nArg) then getArgs(rest, nArg+1, clCount+1, argCount, argN :: stable, change, LoadClosure clCount :: mapList) else getArgs(rest, nArg+1, clCount, argCount+1, stable, (Extract argN, argType, use) :: change, LoadArgument argCount :: mapList) end | getArgs([], _, _, _, stable, change, mapList) = (List.rev stable, List.rev change, List.rev mapList) in (* The stable args go into the closure. The changeable args are passed in. *) val (stableArgs, changeArgsAndTypes, mapList) = getArgs(argTypes, 0, closureSize, 0, [], [], []) val argMap = Vector.fromList mapList end val subFunction = Lambda { body = mapCodeForFunctionRewriting(body, argMap, modVec, fn (l, t) => Eval { function = Extract LoadRecursive, argList = l, resultType = t }), isInline = NonInline, (* Don't inline this function. *) name = name ^ "()", closure = List.tabulate(closureSize, fn n => LoadClosure n) @ stableArgs, argTypes = List.map (fn (_, t, u) => (t, u)) changeArgsAndTypes, resultType = resultType, localCount = localCount, recUse = [UseGeneral] } in Eval { function = subFunction, argList = map (fn (c, t, _) => (c, t)) changeArgsAndTypes, resultType = resultType } end end (* If the function arguments are used in a way that could be optimised the data structure represents it. *) datatype functionArgPattern = ArgPattTuple of { filter: BoolVector.vector, allConst: bool, fromFields: bool } (* ArgPattCurry is a list, one per level of application, of a list, one per argument of the pattern for that argument. *) | ArgPattCurry of functionArgPattern list list * functionArgPattern | ArgPattSimple (* Returns ArgPattCurry even if it is just a single application. *) local (* Control how we check for side-effects. *) datatype curryControl = CurryNoCheck | CurryCheck | CurryReorderable local open Address (* Return the width of a tuple. Returns 1 for non-tuples including datatypes where different variants could have different widths. Also returns a flag indicating if the value came from a constant. Constants are already tupled so there's no advantage in untupling them unless there are other non-constant arguments as well. *) fun findTuple(Tuple{fields, isVariant=false}) = (List.length fields, false) | findTuple(Constnt(w, _)) = if isShort w orelse flags (toAddress w) <> F_words then (1, false) else (Word.toInt(length (toAddress w)), true) | findTuple(Extract _) = (1, false) (* TODO: record this for variables *) | findTuple(Cond(_, t, e)) = let val (tl, tc) = findTuple t and (el, ec) = findTuple e in if tl = el then (tl, tc andalso ec) else (1, false) end | findTuple(Newenv(_, e)) = findTuple e | findTuple _ = (1, false) in fun mapArg c = let val (n, f) = findTuple c in if n <= 1 then ArgPattSimple else ArgPattTuple{filter=BoolVector.tabulate(n, fn _ => true), allConst=f, fromFields=false} end end fun useToPattern _ [] = ArgPattSimple | useToPattern checkCurry (hd::tl) = let (* Construct a possible pattern from the head. *) val p1 = case hd of UseApply(resl, arguments) => let (* If the result is also curried extend the list. *) val subCheck = case checkCurry of CurryCheck => CurryReorderable | c => c val (resultPatts, resultResult) = case useToPattern subCheck resl of ArgPattCurry l => l | tupleOrSimple => ([], tupleOrSimple) val thisArg = map mapArg arguments in (* If we have an argument that is a curried function we can safely apply it to the first argument even if that has a side-effect but we can't uncurry further than that because the behaviour could rely on a side-effect of the first application. *) if checkCurry = CurryReorderable andalso List.exists(not o reorderable) arguments then ArgPattSimple else ArgPattCurry(thisArg :: resultPatts, resultResult) end | UseField (n, _) => ArgPattTuple{filter=BoolVector.tabulate(n+1, fn m => m=n), allConst=false, fromFields=true} | _ => ArgPattSimple fun mergePattern(ArgPattCurry(l1, r1), ArgPattCurry(l2, r2)) = let (* Each argument list should be the same length. The length here is the number of arguments provided to this application. *) fun mergeArgLists(al1, al2) = ListPair.mapEq mergePattern (al1, al2) (* The currying lists could be different lengths because some applications could only partially apply it. It is essential not to assume more currying than the minimum so we stop with the shorter. *) val prefix = ListPair.map mergeArgLists (l1, l2) in if null prefix then ArgPattSimple else ArgPattCurry(prefix, mergePattern(r1, r2)) end | mergePattern(ArgPattTuple{filter=n1, allConst=c1, fromFields=f1}, ArgPattTuple{filter=n2, allConst=c2, fromFields=f2}) = (* If the tuples are different sizes we can't use a tuple. Unlike currying it would be safe to assume tupling where there isn't (unless the function is actually polymorphic). *) if boolVectorEq(n1, n2) then ArgPattTuple{filter=n1, allConst=c1 andalso c2, fromFields = f1 andalso f2} else if f1 andalso f2 then let open BoolVector val l1 = length n1 and l2 = length n2 fun safesub(n, v) = if n < length v then v sub n else false val union = tabulate(Int.max(l1, l2), fn n => safesub(n, n1) orelse safesub(n, n2)) in ArgPattTuple{filter=union, allConst=c1 andalso c2, fromFields = f1 andalso f2} end else ArgPattSimple | mergePattern _ = ArgPattSimple in case tl of [] => p1 | tl => mergePattern(p1, useToPattern checkCurry tl) end (* If the result is just a function where all the arguments are simple it's not actually curried. *) fun usageToPattern checkCurry use = case useToPattern checkCurry use of (* a as ArgPattCurry [s] => if List.all(fn ArgPattSimple => true | _ => false) s then ArgPattSimple else a |*) patt => patt in (* Decurrying involves reordering (f exp1) exp2 into code where any effects of evaluating exp2 are done before the application. That's only safe if either (f exp1) or exp2 have no side-effects and do not depend on references. In the case of the function body we can check that the body does not depend on any references (typically it's a lambda) but for function arguments we have to check how it is applied. *) val usageForFunctionBody = usageToPattern CurryNoCheck and usageForFunctionArg = usageToPattern CurryCheck (* To decide whether we want to detuple the argument we look to see if the function is ever applied to a tuple. This is rather different to currying where we only decurry if every application is to multiple arguments. This information is then merged with information about the arguments within the function. *) fun existTupling (use: codeUse list): functionArgPattern list = let val argListLists = List.foldl (fn (UseApply(_, args), l) => map mapArg args :: l | (_, l) => l) [] use fun orMerge [] = raise Empty | orMerge [hd] = hd | orMerge (hd1 :: hd2 :: tl) = let fun merge(a as ArgPattTuple _, _) = a | merge(_, b) = b in orMerge(ListPair.mapEq merge (hd1, hd2) :: tl) end in orMerge argListLists end (* If the result of a function contains a tuple but it is not detupled on every path, see if it is detupled on at least one. *) fun existDetupling(UseApply(resl, _) :: rest) = List.exists(fn UseField _ => true | _ => false) resl orelse existDetupling rest | existDetupling(_ :: rest) = existDetupling rest | existDetupling [] = false end (* Return a tuple if any of the branches returns a tuple. The idea is that if the body actually constructs a tuple on the heap on at least one branch it is probably worth attempting to detuple the result. *) fun bodyReturnsTuple (Tuple{fields, isVariant=false}) = ArgPattTuple{ filter=BoolVector.tabulate(List.length fields, fn _ => true), allConst=false, fromFields=false } | bodyReturnsTuple(Cond(_, t, e)) = ( case bodyReturnsTuple t of a as ArgPattTuple _ => a | _ => bodyReturnsTuple e ) | bodyReturnsTuple(Newenv(_, exp)) = bodyReturnsTuple exp | bodyReturnsTuple _ = ArgPattSimple (* If the usage indicates that the body of the function should be transformed these do the transformation. It is possible that each of these cases could apply and it would be possible to merge them all. For the moment keep them separate. If another of the cases applies this will be re-entered on a subsequent pass. *) fun detupleResult({ argTypes, name, resultType, closure, isInline, localCount, body, ...}: lambdaForm , filter, makeAddress) = (* The function returns a tuple or at least the uses of the function take apart a tuple. Transform it to take a container as an argument and put the result in there. *) let local fun mapArg f n ((t, _) :: tl) = (Extract(f n), t) :: mapArg f (n+1) tl | mapArg _ _ [] = [] in fun mapArgs f l = mapArg f 0 l end val mainAddress = makeAddress() and shimAddress = makeAddress() (* The main function performs the previous computation but puts the result into the container. We need to replace any recursive references with calls to the shim.*) local val recEntry = LoadClosure(List.length closure) fun doMap(Extract LoadRecursive) = SOME(Extract recEntry) | doMap _ = NONE in val transBody = mapFunctionCode doMap body end local val containerArg = Extract(LoadArgument(List.length argTypes)) val newBody = SetContainer{container = containerArg, tuple = transBody, filter=filter } val mainLambda: lambdaForm = { body = newBody, name = name, resultType=GeneralType, argTypes=argTypes @ [(GeneralType, [])], closure=closure @ [LoadLocal shimAddress], localCount=localCount + 1, isInline=isInline, recUse = [UseGeneral] } in val mainFunction = (mainAddress, mainLambda) end (* The shim function creates a container, passes it to the main function and then builds a tuple from the container. *) val shimBody = mkEnv( [Container{addr = 0, use = [], size = setInFilter filter, setter= Eval { function = Extract(LoadClosure 0), argList = mapArgs LoadArgument argTypes @ [(Extract(LoadLocal 0), GeneralType)], resultType = GeneralType } } ], buildFullTuple(filter, fn n => mkInd(n, mkLoadLocal 0)) ) val shimLambda = { body = shimBody, name = name, argTypes = argTypes, closure = [LoadLocal mainAddress], resultType = resultType, isInline = Inline, localCount = 1, recUse = [UseGeneral] } val shimFunction = (shimAddress, shimLambda) in (shimLambda, [mainFunction, shimFunction]) end fun transformFunctionArgs({ argTypes, name, resultType, closure, isInline, localCount, body, ...} , usage, makeAddress) = (* Not curried - just a single argument. *) let (* We need to construct an inline "shim" function that has the same calling pattern as the original. This simply calls the transformed main function. We need to construct the arguments to call the transformed main function. That needs, for example, to unpack tuples and repack argument functions. We need to produce an argument map to transform the main function. This needs, for example, to pack the arguments into tuples. Then when the code is run through the simplifier the tuples will be optimised away. *) val localCounter = ref localCount fun mapPattern(ArgPattTuple{filter, allConst=false, ...} :: patts, n, m) = let val fieldList = filterToFields filter val (decs, args, mapList) = mapPattern(patts, n+1, m + setInFilter filter) val newAddr = ! localCounter before localCounter := ! localCounter + 1 val tuple = buildFullTuple(filter, fn u => mkLoadArgument(m+u)) val thisDec = Declar { addr = newAddr, use = [], value = tuple } (* Arguments for the call *) val thisArg = List.map(fn p => mkInd(p, mkLoadArgument n)) fieldList in (thisDec :: decs, thisArg @ args, LoadLocal newAddr :: mapList) end | mapPattern(ArgPattCurry(currying as [_], ArgPattTuple{allConst=false, filter, ...}) :: patts, n, m) = (* It's a function that returns a tuple. The function must not be curried because otherwise it returns a function not a tuple. *) let val (thisDec, thisArg, thisMap) = transformFunctionArgument(currying, [LoadArgument m], [LoadArgument n], SOME filter) val (decs, args, mapList) = mapPattern(patts, n+1, m+1) in (thisDec :: decs, thisArg :: args, thisMap :: mapList) end | mapPattern(ArgPattCurry(currying as firstArgSet :: _, _) :: patts, n, m) = (* Transform it if it's curried or if there is a tuple in the first arg. *) if (*List.length currying >= 2 orelse *) (* This transformation is unsafe. *) List.exists(fn ArgPattTuple{allConst=false, ...} => true | _ => false) firstArgSet then let val (thisDec, thisArg, thisMap) = transformFunctionArgument(currying, [LoadArgument m], [LoadArgument n], NONE) val (decs, args, mapList) = mapPattern(patts, n+1, m+1) in (thisDec :: decs, thisArg :: args, thisMap :: mapList) end else let val (decs, args, mapList) = mapPattern(patts, n+1, m+1) in (decs, Extract(LoadArgument n) :: args, LoadArgument m :: mapList) end | mapPattern(_ :: patts, n, m) = let val (decs, args, mapList) = mapPattern(patts, n+1, m+1) in (decs, Extract(LoadArgument n) :: args, LoadArgument m :: mapList) end | mapPattern([], _, _) = ([], [], []) and transformFunctionArgument(argumentArgs, loadPack, loadThisArg, filterOpt) = let (* Disable the transformation of curried arguments for the moment. This is unsafe. See Test146. The problem is that this transformation is only safe if the function is applied immediately to all the arguments. However the usage information is propagated so that if the result of the first application is bound to a variable and then that variable is applied it still appears as curried. *) val argumentArgs = [hd argumentArgs] (* We have a function that takes a series of curried argument. Change that so that the function takes a list of arguments. *) val newAddr = ! localCounter before localCounter := ! localCounter + 1 (* In the main function we are expecting to call the argument in a curried fashion. We need to construct a function that packages up the arguments and, when all of them have been provided, calls the actual argument. *) local fun curryPack([], fnclosure) = let (* We're ready to call the function. We now need to unpack any tupled arguments. *) fun mapArgs(c :: ctl, args) = let fun mapArg([], args) = mapArgs(ctl, args) | mapArg(ArgPattTuple{filter, allConst=false, ...} :: patts, arg :: argctl) = let val fields = filterToFields filter in List.map(fn p => (mkInd(p, Extract arg), GeneralType)) fields @ mapArg(patts, argctl) end | mapArg(_ :: patts, arg :: argctl) = (Extract arg, GeneralType) :: mapArg(patts, argctl) | mapArg(_, []) = raise InternalError "mapArgs: mismatch" in mapArg(c, args) end | mapArgs _ = [] val argList = mapArgs(argumentArgs, tl fnclosure) in case filterOpt of NONE => Eval { function = Extract(hd fnclosure), resultType = GeneralType, argList = argList } | SOME filter => (* We need a container here for the result. *) mkEnv( [ Container{addr=0, size=setInFilter filter, use=[UseGeneral], setter= Eval { function = Extract(hd fnclosure), resultType = GeneralType, argList = argList @ [(mkLoadLocal 0, GeneralType)] } } ], buildFullTuple(filter, fn n => mkInd(n, mkLoadLocal 0)) ) end | curryPack(hd :: tl, fnclosure) = let val nArgs = List.length hd (* If this is the last then we need to include the container if required. *) val needContainer = case (tl, filterOpt) of ([], SOME _) => true | _ => false in Lambda { closure = fnclosure, isInline = Inline, name = name ^ "-P", resultType = GeneralType, argTypes = List.tabulate(nArgs, fn _ => (GeneralType, [UseGeneral])), localCount = if needContainer then 1 else 0, recUse = [], body = curryPack(tl, (* The closure for the next level is the current closure together with all the arguments at this level. *) List.tabulate(List.length fnclosure, fn n => LoadClosure n) @ List.tabulate(nArgs, LoadArgument)) } end in val packFn = curryPack(argumentArgs, loadPack) end val thisDec = Declar { addr = newAddr, use = [], value = packFn } fun argCount(ArgPattTuple{filter, allConst=false, ...}, m) = setInFilter filter + m | argCount(_, m) = m+1 local (* In the shim function, i.e. the inline function outside, we have a lambda that will be called when the main function wants to call its argument function. This is provided with all the arguments and so it has to call the actual argument, which is expected to be curried, an argument at a time. *) fun curryApply(hd :: tl, n, c) = let fun makeArgs(_, []) = [] | makeArgs(q, ArgPattTuple{filter, allConst=false, ...} :: args) = (buildFullTuple(filter, fn r => mkLoadArgument(r+q)), GeneralType) :: makeArgs(q + setInFilter filter, args) | makeArgs(q, _ :: args) = (mkLoadArgument q, GeneralType) :: makeArgs(q+1, args) val args = makeArgs(n, hd) in curryApply(tl, n + List.foldl argCount 0 hd, Eval{function=c, resultType = GeneralType, argList=args}) end | curryApply([], _, c) = c in val thisBody = curryApply (argumentArgs, 0, mkLoadClosure 0) end local (* We have one argument for each argument at each level of currying, or where we've expanded a tuple, one argument for each field. If the function is returning a tuple we have an extra argument for the container. *) val totalArgCount = List.foldl(fn (c, n) => n + List.foldl argCount 0 c) 0 argumentArgs + (case filterOpt of SOME _ => 1 | _ => 0) val functionBody = case filterOpt of NONE => thisBody | SOME filter => mkSetContainer(mkLoadArgument(totalArgCount-1), thisBody, filter) in val thisArg = Lambda { closure = loadThisArg, isInline = Inline, name = name ^ "-E", argTypes = List.tabulate(totalArgCount, fn _ => (GeneralType, [UseGeneral])), resultType = GeneralType, localCount = 0, recUse = [UseGeneral], body = functionBody } end in (thisDec, thisArg, LoadLocal newAddr) end val (extraBindings, transArgCode, argMapList) = mapPattern(usage, 0, 0) local (* Transform the body by replacing the arguments with the new arguments. *) val argMap = Vector.fromList argMapList (* If we have a recursive reference we have to replace it with a reference to the shim. *) val recEntry = LoadClosure(List.length closure) fun doMap(Extract(LoadArgument n)) = SOME(Extract(Vector.sub(argMap, n))) | doMap(Extract LoadRecursive) = SOME(Extract recEntry) | doMap _ = NONE in val transBody = mapFunctionCode doMap body end local (* The argument types for the main function have the tuples expanded, Functions are not affected. *) fun expand(ArgPattTuple{filter, allConst=false, ...}, _, r) = List.tabulate(setInFilter filter, fn _ => (GeneralType, [])) @ r | expand(_, a, r) = a :: r in val transArgTypes = ListPair.foldrEq expand [] (usage, argTypes) end (* Add the type information to the argument code. *) val transArgs = ListPair.mapEq(fn (c, (t, _)) => (c, t)) (transArgCode, transArgTypes) val mainAddress = makeAddress() and shimAddress = makeAddress() val transLambda = { body = mkEnv(extraBindings, transBody), name = name, argTypes = transArgTypes, closure = closure @ [LoadLocal shimAddress], resultType = resultType, isInline = isInline, localCount = ! localCounter, recUse = [UseGeneral] } (* Return the pair of functions. *) val mainFunction = (mainAddress, transLambda) val shimBody = Eval { function = Extract(LoadClosure 0), argList = transArgs, resultType = resultType } val shimLambda = { body = shimBody, name = name, argTypes = argTypes, closure = [LoadLocal mainAddress], resultType = resultType, isInline = Inline, localCount = 0, recUse = [UseGeneral] } val shimFunction = (shimAddress, shimLambda) (* TODO: We have two copies of the shim function here. *) in (shimLambda, [mainFunction, shimFunction]) end fun decurryFunction( { argTypes, name, resultType, closure, isInline, localCount, body as Lambda { argTypes=subArgTypes, resultType=subResultType, ... } , ...}, makeAddress) = (* Curried - just unwind one level this time. This case is normally dealt with by the front-end at least for fun bindings. *) let local fun mapArg f n ((t, _) :: tl) = (Extract(f n), t) :: mapArg f (n+1) tl | mapArg _ _ [] = [] in fun mapArgs f l = mapArg f 0 l end val mainAddress = makeAddress() and shimAddress = makeAddress() (* The main function calls the original body as a function. The body is a lambda which will contain references to the outer arguments but because we're just adding arguments these will be as before. *) (* We have to transform any recursive references to point to the shim. *) local val recEntry = LoadClosure(List.length closure) fun doMap(Extract LoadRecursive) = SOME(Extract recEntry) | doMap _ = NONE in val transBody = mapFunctionCode doMap body end val arg1Count = List.length argTypes val mainLambda = { body = Eval{ function = transBody, resultType = subResultType, argList = mapArgs (fn n => LoadArgument(n+arg1Count)) subArgTypes }, name = name, resultType = subResultType, closure = closure @ [LoadLocal shimAddress], isInline = isInline, localCount = localCount, argTypes = argTypes @ subArgTypes, recUse = [UseGeneral] } val mainFunction = (mainAddress, mainLambda) val shimInnerLambda = Lambda { (* The inner shim closure contains the main function and the outer arguments. *) closure = LoadClosure 0 :: List.tabulate(arg1Count, LoadArgument), body = Eval { function = Extract(LoadClosure 0), resultType = resultType, (* Calls main function with both sets of args. *) argList = mapArgs (fn n => LoadClosure(n+1)) argTypes @ mapArgs LoadArgument subArgTypes }, name = name ^ "-", resultType = subResultType, localCount = 0, isInline = Inline, argTypes = subArgTypes, recUse = [UseGeneral] } val shimOuterLambda = { body = shimInnerLambda, name = name, argTypes = argTypes, closure = [LoadLocal mainAddress], resultType = resultType, isInline = Inline, localCount = 0, recUse = [UseGeneral] } val shimFunction = (shimAddress, shimOuterLambda) in (shimOuterLambda: lambdaForm, [mainFunction, shimFunction]) end | decurryFunction _ = raise InternalError "decurryFunction" (* Process a Lambda slightly differently in different contexts. *) datatype lambdaContext = LCNormal | LCRecursive | LCImmediateCall (* Transforming a lambda may result in producing auxiliary functions that are in general mutually recursive. *) fun mapLambdaResult([], lambda) = lambda | mapLambdaResult(bindings, lambda) = mkEnv([RecDecs(map(fn(addr, lam) => {addr=addr, use=[], lambda=lam}) bindings)], lambda) fun optimise (context, use) (Lambda lambda) = SOME(mapLambdaResult(optLambda(context, use, lambda, LCNormal))) | optimise (context, use) (Newenv(envDecs, envExp)) = let fun mapExp mapUse = mapCodetree (optimise(context, mapUse)) fun mapbinding(Declar{value, addr, use}) = Declar{value=mapExp use value, addr=addr, use=use} | mapbinding(RecDecs l) = let fun mapRecDec({addr, lambda, use}, rest) = case optLambda(context, use, lambda, LCRecursive) of (bindings, Lambda lambdaRes) => (* Turn any bindings into extra mutually-recursive functions. *) {addr=addr, use = use, lambda = lambdaRes } :: map (fn (addr, res) => {addr=addr, use=use, lambda=res }) bindings @ rest | _ => raise InternalError "mapbinding: not lambda" in RecDecs(foldl mapRecDec [] l) end | mapbinding(NullBinding exp) = NullBinding(mapExp [UseGeneral] exp) | mapbinding(Container{addr, use, size, setter}) = Container{addr=addr, use=use, size=size, setter = mapExp [UseGeneral] setter} in SOME(Newenv(map mapbinding envDecs, mapExp use envExp)) end (* Immediate call to a function. We may be able to expand this inline unless it is recursive. *) | optimise (context, use) (Eval {function = Lambda lambda, argList, resultType}) = let val args = map (fn (c, t) => (optGeneral context c, t)) argList val argTuples = map #1 args val (bindings, newLambda) = optLambda(context, [UseApply(use, argTuples)], lambda, LCImmediateCall) val call = Eval { function=newLambda, argList=args, resultType = resultType } in SOME(mapLambdaResult(bindings, call)) end | optimise (context as { reprocess, ...}, use) (Eval {function = Cond(i, t, e), argList, resultType}) = let (* Transform "(if i then t else e) x" into "if i then t x else e x". This allows for other optimisations and inline expansion. *) (* We duplicate the function arguments which could cause the size of the code to blow-up if they involve complicated expressions. *) fun pushFunction l = mapCodetree (optimise(context, use)) (Eval{function=l, argList=argList, resultType=resultType}) in reprocess := true; SOME(Cond(i, pushFunction t, pushFunction e)) end | optimise (context, use) (Eval {function, argList, resultType}) = (* If nothing else we need to ensure that "use" is correctly set on the function and arguments and we don't simply pass the original. *) let val args = map (fn (c, t) => (optGeneral context c, t)) argList val argTuples = map #1 args in SOME( Eval{ function= mapCodetree (optimise (context, [UseApply(use, argTuples)])) function, argList=args, resultType = resultType }) end | optimise (context, use) (Indirect{base, offset, isVariant = false}) = SOME(Indirect{base = mapCodetree (optimise(context, [UseField(offset, use)])) base, offset = offset, isVariant = false}) | optimise (context, use) (code as Cond _) = (* If the result of the if-then-else is always taken apart as fields then we are better off taking it apart further down and putting the fields into a container on the stack. *) if List.all(fn UseField _ => true | _ => false) use then SOME(optFields(code, context, use)) else NONE | optimise (context, use) (code as BeginLoop _) = (* If the result of the loop is taken apart we should push this down as well. *) if List.all(fn UseField _ => true | _ => false) use then SOME(optFields(code, context, use)) else NONE | optimise _ _ = NONE and optGeneral context exp = mapCodetree (optimise(context, [UseGeneral])) exp and optLambda( { debugArgs, reprocess, makeAddr, ... }, contextUse, { body, name, argTypes, resultType, closure, localCount, isInline, recUse, ...}, lambdaContext) : (int * lambdaForm) list * codetree = (* Optimisations on lambdas. 1. A lambda that simply calls another function with all its own arguments can be replaced by a reference to the function provided the "function" is a side-effect-free expression. 2. Don't attempt to optimise inline functions that are exported. 3. Transform lambdas that take tuples as arguments or are curried or where an argument is a function with tupled or curried arguments into a pair of an inline function with the original argument set and a new "main" function with register/stack arguments. *) let (* The overall use of the function is the context plus the recursive use. *) val use = contextUse @ recUse (* Check if it's a call to another function with all the original arguments. This is really wanted when we are passing this lambda as an argument to another function and really only when we have produced a shim function that has been inline expanded. Otherwise this will be a "small" function and will be inline expanded when it's used. *) val replaceBody = case (body, lambdaContext = LCRecursive) of (Eval { function, argList, resultType=callresult }, false) => let fun argSequence((Extract(LoadArgument a), _) :: rest, b) = a = b andalso argSequence(rest, b+1) | argSequence([], _) = true | argSequence _ = false val argumentsMatch = argSequence(argList, 0) andalso ListPair.allEq(fn((_, a), (b, _)) => a = b) (argList, argTypes) andalso callresult = resultType in if not argumentsMatch then NONE else case function of (* This could be any function which has neither side-effects nor depends on a reference nor depends on another argument but if it has local variables they would have to be renumbered into the surrounding scope. In practice we're really only interested in simple cases that arise as a result of using a "shim" function created in the code below. *) c as Constnt _ => SOME c | Extract(LoadClosure addr) => SOME(Extract(List.nth(closure, addr))) | _ => NONE end | _ => NONE in case replaceBody of SOME c => ([], c) | NONE => if isInline = Inline andalso List.exists (fn UseExport => true | _ => false) use then let (* If it's inline any application of this will be optimised after inline expansion. We still apply any opimisations to the body at this stage because we will compile and code-generate a version for use if we want a "general" value. *) val addressAllocator = ref localCount val optContext = { makeAddr = fn () => (! addressAllocator) before addressAllocator := ! addressAllocator + 1, reprocess = reprocess, debugArgs = debugArgs } val optBody = mapCodetree (optimise(optContext, [UseGeneral])) body val lambdaRes = { body = optBody, isInline = isInline, name = name, closure = closure, argTypes = argTypes, resultType = resultType, recUse = recUse, localCount = !addressAllocator (* After optimising body. *) } in ([], Lambda lambdaRes) end else let (* Allocate any new addresses after the existing ones. *) val addressAllocator = ref localCount val optContext = { makeAddr = fn () => (! addressAllocator) before addressAllocator := ! addressAllocator + 1, reprocess = reprocess, debugArgs = debugArgs } val optBody = mapCodetree (optimise(optContext, [UseGeneral])) body (* See if this should be expanded inline. If we are calling the lambda immediately we try to expand it unless maxInlineSize is zero. We may not be able to expand it if it is recursive. (It may have been inside an inline function). *) val maxInlineSize = DEBUG.getParameter DEBUG.maxInlineSizeTag debugArgs val (inlineType, updatedBody, localCount) = case evaluateInlining(optBody, List.length argTypes, if maxInlineSize <> 0 andalso lambdaContext = LCImmediateCall then 1000 else FixedInt.toInt maxInlineSize) of NonRecursive => (Inline, optBody, ! addressAllocator) | TailRecursive bv => (Inline, replaceTailRecursiveWithLoop(optBody, argTypes, bv, addressAllocator), ! addressAllocator) | NonTailRecursive bv => if Vector.exists (fn n => n) bv then (Inline, liftRecursiveFunction( optBody, argTypes, bv, List.length closure, name, resultType, !addressAllocator), 0) else (NonInline, optBody, ! addressAllocator) (* All arguments have been modified *) | TooBig => (NonInline, optBody, ! addressAllocator) val lambda: lambdaForm = { body = updatedBody, name = name, argTypes = argTypes, closure = closure, resultType = resultType, isInline = inlineType, localCount = localCount, recUse = recUse } (* See if it should be transformed. We only do this if the function is not going to be inlined. If it is then there's no point because the transformation is going to be done as part of the inling process. Even if it's marked for inlining we may not actually call the function and instead pass it as an argument or return it as result but in that case transformation doesn't achieve anything because we are going to pass the untransformed "shim" function anyway. *) val (newLambda, bindings) = if isInline = NonInline then let val functionPattern = case usageForFunctionBody use of ArgPattCurry(arg1 :: arg2 :: moreArgs, res) => (* The function is always called with at least two curried arguments. We can decurry the function if the body is applicative - typically if it's a lambda - but not if applying the body would have a side-effect. We only do it one level at this stage. If it's curried more than that we'll come here again. *) (* In order to get the types we restrict this to the case of a body that is a lambda. The result is a function and therefore ArgPattSimple unless we are using up all the args. *) if (*reorderable body*) case updatedBody of Lambda _ => true | _ => false then ArgPattCurry([arg1, arg2], if null moreArgs then res else ArgPattSimple) else ArgPattCurry([arg1], ArgPattSimple) | usage => usage val argPatterns = map (usageForFunctionArg o #2) argTypes (* fullArgPattern is a list, one per level of currying, of a list, one per argument of the patterns. resultPattern is used to detect whether the result is a tuple that is taken apart. *) val (fullArgPattern, resultPattern) = case functionPattern of ArgPattCurry(_ :: rest, resPattern) => let (* The function is always applied at least to the first set of arguments. (It's never just passed). Merge the applications of the function with the use of the arguments. Return the usage within the function unless the function takes apart a tuple but no application passes in a tuple. *) fun merge(ArgPattTuple _, argUse as ArgPattTuple _) = argUse | merge(_, ArgPattTuple _) = ArgPattSimple | merge(_, argUse) = argUse val mergedArgs = (ListPair.mapEq merge (existTupling use, argPatterns)) :: rest (* *) val mergedResult = case (bodyReturnsTuple updatedBody, resPattern) of (bodyTuple as ArgPattTuple _, ArgPattSimple) => if existDetupling use then bodyTuple else ArgPattSimple | _ => resPattern in (mergedArgs, mergedResult) end | _ => (* Not called: either exported or passed as a value. *) (* This previously tried to see whether the body returned a tuple if the function was exported. This caused an infinite loop (see Tests/Succeed/Test164.ML) and anyway doesn't seem to optimise the cases we want. *) ([], ArgPattSimple) in case (fullArgPattern, resultPattern) of (_ :: _ :: _, _) => (* Curried *) ( reprocess := true; decurryFunction(lambda, makeAddr)) | (_, ArgPattTuple {filter, ...}) => (* Result is a tuple *) ( reprocess := true; detupleResult(lambda, filter, makeAddr)) | (first :: _, _) => let fun checkArg (ArgPattTuple{allConst=false, ...}) = true (* Function has at least one tupled arg. *) | checkArg (ArgPattCurry([_], ArgPattTuple{allConst=false, ...})) = true (* Function has an arg that is a function that returns a tuple. It must not be curried otherwise it returns a function not a tuple. *) (* This transformation is unsafe. See comment in transformFunctionArgument above. *) (*| checkArg (ArgPattCurry(_ :: _ :: _, _)) = true *) (* Function has an arg that is a curried function. *) | checkArg (ArgPattCurry(firstArgSet :: _, _)) = (* Function has an arg that is a function that takes a tuple in its first argument set. *) List.exists(fn ArgPattTuple{allConst=false, ...} => true | _ => false) firstArgSet | checkArg _ = false in (* It isn't curried - look at the arguments. *) if List.exists checkArg first then ( reprocess := true; transformFunctionArgs(lambda, first, makeAddr) ) else (lambda, []) end | _ => (lambda, []) end else (lambda, []) in (* If this is to be inlined but was not before we may need to reprocess. We don't reprocess if this is only exported. If it's only exported we're not going to expand it within this code and we can end up with repeated processing. *) if #isInline newLambda = Inline andalso isInline = NonInline andalso (case use of [UseExport] => false | _ => true) then reprocess := true else (); (bindings, Lambda newLambda) end end and optFields (code, context as { reprocess, makeAddr, ...}, use) = let (* We have an if-then-else or a loop whose result is only ever taken apart. We push this down. *) (* Find the fields that are used. Not all may be. *) local val maxField = List.foldl(fn (UseField(f, _), m) => Int.max(f, m) | (_, m) => m) 0 use val fieldUse = BoolArray.array(maxField+1, false) val _ = List.app(fn UseField(f, _) => BoolArray.update(fieldUse, f, true) | _ => ()) use in val maxField = maxField val useList = BoolArray.foldri (fn (i, true, l) => i :: l | (_, _, l) => l) [] fieldUse end fun pushContainer(Cond(ifpt, thenpt, elsept), leafFn) = Cond(ifpt, pushContainer(thenpt, leafFn), pushContainer(elsept, leafFn)) | pushContainer(Newenv(decs, exp), leafFn) = Newenv(decs, pushContainer(exp, leafFn)) | pushContainer(BeginLoop{loop, arguments}, leafFn) = (* If we push it through a BeginLoop we MUST then push it through anything that could contain the Loop i.e. Cond, Newenv, Handle. *) BeginLoop{loop = pushContainer(loop, leafFn), arguments=arguments} | pushContainer(l as Loop _, _) = l (* Within a BeginLoop only the non-Loop leaves return values. Loop entries go back to the BeginLoop so these are unchanged. *) | pushContainer(Handle{exp, handler, exPacketAddr}, leafFn) = Handle{exp=pushContainer(exp, leafFn), handler=pushContainer(handler, leafFn), exPacketAddr=exPacketAddr} | pushContainer(tuple, leafFn) = leafFn tuple (* Anything else. *) val () = reprocess := true in case useList of [offset] => (* We only want a single field. Push down an Indirect. *) let (* However the context still requires a tuple. We need to reconstruct one with unused fields set to zero. They will be filtered out later by the simplifier pass. *) val field = optGeneral context (pushContainer(code, fn t => mkInd(offset, t))) fun mkFields n = if n = offset then field else CodeZero in Tuple{ fields = List.tabulate(offset+1, mkFields), isVariant = false } end | _ => let (* We require a container. *) val containerAddr = makeAddr() val width = List.length useList val loadContainer = Extract(LoadLocal containerAddr) fun setContainer tuple = (* At the leaf set the container. *) SetContainer{container = loadContainer, tuple = tuple, filter = fieldsToFilter useList } val setCode = optGeneral context (pushContainer(code, setContainer)) val makeContainer = Container{addr=containerAddr, use=[], size=width, setter=setCode} (* The context requires a tuple of the original width. We need to add dummy fields where necessary. *) val container = if width = maxField+1 then mkTupleFromContainer(containerAddr, width) else let fun mkField(n, m, hd::tl) = if n = hd then mkInd(m, loadContainer) :: mkField(n+1, m+1, tl) else CodeZero :: mkField(n+1, m, hd::tl) | mkField _ = [] in Tuple{fields = mkField(0, 0, useList), isVariant=false} end in mkEnv([makeContainer], container) end end (* TODO: convert "(if a then b else c) (args)" into if a then b(args) else c(args). This would allow for possible inlining and also passing information about call patterns. *) (* Once all the inlining is done we look for functions that can be compiled immediately. These are either functions with no free variables or functions where every use is a call, as opposed to being passed or returned as a closure. Functions that have free variables but are called can be lambda-lifted where the free variables are turned into extra parameters. The advantage compared with using a static-link or a closure on the stack is that they can be fully tail-recursive. With a static-link or stack closure the free variables have to remain on the stack until the function returns. *) fun lambdaLiftAndConstantFunction(code, debugSwitches, numLocals) = let val needReprocess = ref false (* At the moment this just code-generates immediately any lambdas without free-variables. The idea is to that we will get a constant which can then be inserted directly in references to the function. In general this takes a list of mutually recursive functions which can be code- generated immediately if all the free variables are other functions in the list. The simplifier has separated mutually recursive bindings into strongly connected components so we can consider the list as a single entity. *) fun processLambdas lambdaList = let (* First process the bodies of the functions. *) val needed = ! needReprocess val _ = needReprocess := false; val transLambdas = map (fn {lambda={body, isInline, name, closure, argTypes, resultType, localCount, recUse}, use, addr} => {lambda={body=mapChecks body, isInline=isInline, name=name, closure=closure, argTypes=argTypes, resultType=resultType, localCount=localCount, recUse=recUse}, use=use, addr=addr}) lambdaList val theseTransformed = ! needReprocess val _ = if needed then needReprocess := true else () fun hasFreeVariables{lambda={closure, ...}, ...} = let fun notInLambdas(LoadLocal lAddr) = (* A local is allowed if it only refers to another lambda. *) not (List.exists (fn {addr, ...} => addr = lAddr) lambdaList) | notInLambdas _ = true (* Anything else is not allowed. *) in List.exists notInLambdas closure end in if theseTransformed orelse List.exists (fn {lambda={isInline=Inline, ...}, ...} => true | _ => false) lambdaList orelse List.exists hasFreeVariables lambdaList (* If we have transformed any of the bodies we need to reprocess so defer any code-generation. Don't CG it if it is inline, or perhaps if it is inline and exported. Don't CG it if it has free variables. We still need to examine the bodies of the functions. *) then (transLambdas, []) else let (* Construct code to declare the functions and extract the values. *) val tupleFields = map (fn {addr, ...} => Extract(LoadLocal addr)) transLambdas val decsAndTuple = Newenv([RecDecs transLambdas], mkTuple tupleFields) val maxLocals = List.foldl(fn ({addr, ...}, n) => Int.max(addr, n)) 0 transLambdas val (code, props) = BACKEND.codeGenerate(decsAndTuple, maxLocals + 1, debugSwitches) val resultConstnt = Constnt(code(), props) fun getResults([], _) = [] | getResults({addr, use, ...} :: tail, n) = Declar {value=mkInd(n, resultConstnt), addr=addr, use=use} :: getResults(tail, n+1) val () = needReprocess := true in ([], getResults(transLambdas, 0)) end end and runChecks (Lambda (lambda as { isInline=NonInline, closure=[], ... })) = ( (* Bare lambda. *) case processLambdas[{lambda=lambda, use = [], addr = 0}] of ([{lambda=unCGed, ...}], []) => SOME(Lambda unCGed) | ([], [Declar{value, ...}]) => SOME value | _ => raise InternalError "processLambdas" ) | runChecks (Newenv(bindings, exp)) = let (* We have a block of bindings. Are any of them functions that are only ever called? *) fun checkBindings(Declar{value=Lambda lambda, addr, use}, tail) = ( (* Process this lambda and extract the result. *) case processLambdas[{lambda=lambda, use = use, addr = addr}] of ([{lambda=unCGed, use, addr}], []) => Declar{value=Lambda unCGed, use=use, addr=addr} :: tail | ([], cgedDec) => cgedDec @ tail | _ => raise InternalError "checkBindings" ) | checkBindings(Declar{value, addr, use}, tail) = Declar{value=mapChecks value, addr=addr, use=use} :: tail | checkBindings(RecDecs l, tail) = let val (notConsts, asConsts) = processLambdas l in asConsts @ (if null notConsts then [] else [RecDecs notConsts]) @ tail end | checkBindings(NullBinding exp, tail) = NullBinding(mapChecks exp) :: tail | checkBindings(Container{addr, use, size, setter}, tail) = Container{addr=addr, use=use, size=size, setter=mapChecks setter} :: tail in SOME(Newenv((List.foldr checkBindings [] bindings), mapChecks exp)) end | runChecks _ = NONE and mapChecks c = mapCodetree runChecks c in (mapCodetree runChecks code, numLocals, !needReprocess) end (* Main optimiser and simplifier loop. *) fun codetreeOptimiser(code, debugSwitches, numLocals) = let fun topLevel _ = raise InternalError "top level reached in optimiser" fun processTree (code, nLocals, optAgain) = let (* First run the simplifier. Among other things this does inline expansion and if it does any we at least need to run cleanProc on the code so it will have set simpAgain. *) val (simpCode, simpCount, simpAgain) = SIMPLIFIER.simplifier(code, nLocals) in if optAgain orelse simpAgain then let (* Identify usage information and remove redundant code. *) val printCodeTree = DEBUG.getParameter DEBUG.codetreeTag debugSwitches and compilerOut = PRETTY.getCompilerOutput debugSwitches val simpCode = SIMPLIFIER.specialToGeneral simpCode val () = if printCodeTree then compilerOut(PRETTY.PrettyString "Output of simplifier") else () val () = if printCodeTree then compilerOut (BASECODETREE.pretty simpCode) else () val preOptCode = REMOVE_REDUNDANT.cleanProc(simpCode, [UseExport], topLevel, simpCount) (* Print the code with the use information before it goes into the optimiser. *) val () = if printCodeTree then compilerOut(PRETTY.PrettyString "Output of cleaner") else () val () = if printCodeTree then compilerOut (BASECODETREE.pretty preOptCode) else () val reprocess = ref false (* May be set in the optimiser *) (* Allocate any new addresses after the existing ones. *) val addressAllocator = ref simpCount fun makeAddr() = (! addressAllocator) before addressAllocator := ! addressAllocator + 1 val optContext = { makeAddr = makeAddr, reprocess = reprocess, debugArgs = debugSwitches } (* Optimise the code, rewriting it as necessary. *) val optCode = mapCodetree (optimise(optContext, [UseExport])) preOptCode val (llCode, llCount, llAgain) = if ! reprocess (* Re-optimise *) then (optCode, ! addressAllocator, ! reprocess) else (* We didn't detect any inlineable functions. Check for lambda-lifting. *) lambdaLiftAndConstantFunction(optCode, debugSwitches, ! addressAllocator) (* Print the code after the optimiser. *) val () = if printCodeTree then compilerOut(PRETTY.PrettyString "Output of optimiser") else () val () = if printCodeTree then compilerOut (BASECODETREE.pretty llCode) else () in (* Rerun the simplifier at least. *) processTree(llCode, llCount, llAgain) end else (simpCode, simpCount) (* We're done *) end val (postOptCode, postOptCount) = processTree(code, numLocals, true (* Once at least *)) val (rGeneral, rDecs, rSpec) = postOptCode in { numLocals = postOptCount, general = rGeneral, bindings = rDecs, special = rSpec } end structure Sharing = struct type codetree = codetree and envSpecial = envSpecial and codeBinding = codeBinding end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_REMOVE_REDUNDANT.sml0000644000175000017500000004645013204034553023726 0ustar daviddavid(* Copyright (c) 2012,13 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor CODETREE_REMOVE_REDUNDANT( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing ) : sig type codetree type loadForm type codeUse val cleanProc : (codetree * codeUse list * (int -> loadForm) * int) -> codetree structure Sharing: sig type codetree = codetree and loadForm = loadForm and codeUse = codeUse end end = struct open BASECODETREE open CODETREE_FUNCTIONS exception InternalError = Misc.InternalError (* This function annotates the tree with information about how variables are used. This assists the optimiser to choose the best alternative for code. It also discards bindings that are unused and side-effect-free. These can arise as the result of optimiser constructing bindings in case they are required. That was originally its only function; hence the name. *) fun cleanProc (pt, procUses: codeUse list, prev: int * codeUse list -> loadForm, recursiveRef: codeUse list -> unit, localCount, checkArg) = let val locals = Array.array(localCount, []) fun addLocalUse addr use = Array.update(locals, addr, use @ Array.sub(locals, addr)) fun cleanLambda(lambda as {body, isInline, name, argTypes, resultType, localCount, closure, ...}: lambdaForm, lambdaUse) = let (* Rebuild the closure with the entries actually used. *) val closureUse = makeClosure() fun lookup (closureEntry, clUse) = let (* Find the original closure entry. *) val ext = List.nth(closure, closureEntry) (* Process the closure entry. We need to do this to record the usage information even if we have already seen this entry. *) val copied = cleanExtract(ext, clUse) in addToClosure closureUse copied end (* This array records the way the arguments are used inside the function. *) val argUses = Array.array (List.length argTypes, []) fun checkArg(addr, uses) = Array.update(argUses, addr, uses @ Array.sub(argUses, addr)) val recursiveRefRef = ref [] fun addRef use = recursiveRefRef := use @ !recursiveRefRef val resultOfApps = List.foldl (fn (UseApply (l, _), r) => l @ r | (UseExport, r) => UseExport :: r | (_, r) => UseGeneral :: r) [] val bodyUse = resultOfApps lambdaUse val bodyCode = cleanProc(body, bodyUse, lookup, addRef, localCount, checkArg) val recursiveApps = !recursiveRefRef (* If we have called this function somewhere and used the result that gives us a hint on the preferred result. If the function is recursive, though, we can't assume anything because the result of the recursive calls may be used in some other context. For example they could be passed into an argument function which may require more fields. That in turn affects any functions whose results are used. See Test138.ML. So, we check to see whether the result of recursive use has added anything to the original usage and reprocess the body if it has. *) val recursiveResults = resultOfApps recursiveApps val needReprocess = if null recursiveApps orelse List.exists(fn UseGeneral => true | UseExport => true | _ => false) bodyUse then NONE (* Not recursive or already general or export *) else if List.all(fn UseField _ => true | _ => false) bodyUse andalso List.all(fn UseField _ => true | _ => false) recursiveResults then (* All the entries are UseField - has the recursion added something new? *) if List.foldl (fn (UseField(n, _), false) => List.all (fn UseField(m, _) => m <> n | _ => raise InternalError "not UseField") bodyUse (* false if it's already there *) | (_, true) => true | _ => raise InternalError "not UseField") false recursiveResults then SOME recursiveApps else NONE else SOME [UseGeneral] (* If there's anything else reprocess it with UseGeneral *) in case needReprocess of SOME reprocessWith => cleanLambda(lambda, lambdaUse @ reprocessWith) | NONE => let val newClosure = extractClosure closureUse val newArgTypes = ListPair.zip(map #1 argTypes, Array.foldr (op ::) [] argUses) in {body=bodyCode, isInline=isInline, name=name, closure=newClosure, argTypes=newArgTypes, resultType=resultType, localCount=localCount, recUse = recursiveApps} : lambdaForm end end (* Process a load from a variable. Locals and arguments operate on the relevant array, closure entries involve a look-up *) and cleanExtract(ext as LoadLocal addr, codeUse) = ( (* Check we're actually adding to the usage. *) null codeUse andalso raise InternalError "cleanExtract: empty usage"; addLocalUse addr codeUse; ext ) | cleanExtract(ext as LoadArgument addr, codeUse) = ( checkArg(addr, codeUse); ext ) | cleanExtract(LoadClosure addr, codeUse) = prev(addr, codeUse) | cleanExtract(LoadRecursive, codeUse) = (recursiveRef codeUse; LoadRecursive) and cleanCode (code, codeUse) = let fun doClean codeUse (Newenv(decs, exp)) = let (* First process the expression so as to mark any references it makes. *) val processedExp = cleanCode (exp, codeUse) (* Process the declarations in reverse order. A binding may be used in a later declaration but apart from mutually-recursive functions no binding can be used in an earlier one. *) fun processDecs [] = [] | processDecs(Declar{value, addr, ...} :: rest) = let val processedRest = processDecs rest val decUses = case Array.sub(locals, addr) of [] => if sideEffectFree value then [] else [UseGeneral] | uses => uses in (* We can drop bindings that are unused if they have no side-effects. If we retain the binding we must set at least one reference. *) if null decUses then processedRest (* Skip it *) else let val cleanvalue = case value of Lambda lambda => Lambda(cleanLambda(lambda, decUses)) | value => cleanCode (value, decUses) in Declar{value=cleanvalue, addr=addr, use=decUses} :: processedRest end end | processDecs(RecDecs decs :: rest) = let val processedRest = processDecs rest (* We now know the entries that have actually been used in the rest of the code. We need to include those declarations and any that they use. The result we pass down may well exclude some or all recursive uses. We need to include UseGeneral in the result for safety. *) fun processMutuals([], excluded, true) = (* If we have included a function in this pass we have to reprocess the list of those we excluded before. *) processMutuals(excluded, [], false) | processMutuals([], _, false) = (* We didn't add anything more - finish *) [] | processMutuals( (this as {addr, lambda, ...}) :: rest, excluded, added) = ( case Array.sub(locals, addr) of [] => (* Put this on the excluded list. *) processMutuals(rest, this::excluded, added) | useSoFar => (* Process this then the rest of the list. *) (addr, cleanLambda(lambda, UseGeneral :: useSoFar)) :: processMutuals(rest, excluded, true) ) val entriesUsed = processMutuals(decs, [], false) (* Get all the uses now we're finished and have identified all the recursive uses. *) val processedDecs = map (fn(a, l) => {addr=a, lambda=l, use=Array.sub(locals, a)}) entriesUsed in if null processedDecs then processedRest else RecDecs processedDecs :: processedRest end | processDecs(NullBinding exp :: rest) = let val processedRest = processDecs rest in if sideEffectFree exp then processedRest else NullBinding(cleanCode(exp, [UseGeneral])) :: processedRest end | processDecs(Container{setter, size, addr, ...} :: rest) = let val processedRest = processDecs rest val decUses = case Array.sub(locals, addr) of [] => if sideEffectFree setter then [] else [UseGeneral] | uses => uses in (* We can drop bindings that are unused if they have no side-effects. If we retain the binding we must set at least one reference. *) (* Currently SetContainer is treated as having a side-effect so we will never discard this even if the container is unused. *) if null decUses then processedRest (* Skip it *) else Container{setter=cleanCode (setter, [UseGeneral]), addr=addr, size=size, use=decUses} :: processedRest end val processedDecs = processDecs decs in SOME(mkEnv(processedDecs, processedExp)) end (* Newenv *) (* Reference to a binding. *) | doClean codeUse (Extract ext) = SOME(Extract(cleanExtract(ext, codeUse))) (* Select a field from a tuple. We can't do this for selection from datatypes because some fields may not be present on all paths. *) | doClean codeUse (Indirect{base, offset, isVariant = false}) = (* Try to pass down the use. If the "base" is an Extract or another Indirect we may be able to record this information. If it is something else we can't. *) SOME(Indirect{base=cleanCode(base, [UseField(offset, codeUse)]), offset=offset, isVariant=false}) | doClean codeUse (Tuple{ fields, isVariant = false}) = let (* If the use of the tuple include UseGeneral or UseExport then every field is required. If, though, we have UseField we can transfer the corresponding usage onto the field of the tuple. *) fun fieldUse n (UseField(offset, uses), tl) = if n = offset then uses @ tl else tl | fieldUse _ (use, tl) = use :: tl fun fieldUses n = (* For the moment, if we find that the field is not used we set the usage to UseGeneral. I'm not convinced it would be safe to discard anything in the expression at this point. *) case List.foldl(fieldUse n) [] codeUse of [] => [UseGeneral] | other => other fun processField([], _) = [] | processField(hd::tl, n) = cleanCode(hd, fieldUses n) :: processField(tl, n+1) in SOME(Tuple{ fields = processField(fields, 0), isVariant = false}) end | doClean codeUse (Lambda lam) = SOME(Lambda(cleanLambda(lam, codeUse))) | doClean codeUse (Eval{function, argList, resultType}) = (* As with Indirect we try to pass this information down so that if the function is a variable it will be marked as "called". *) let val args = map (fn (c, t) => (cleanCode(c, [UseGeneral]), t)) argList val argTuples = map #1 args in SOME( Eval{ function=cleanCode(function, [UseApply(codeUse, argTuples)]), argList=args, resultType = resultType }) end | doClean codeUse (Cond(i, t, e)) = SOME(Cond(cleanCode(i, [UseGeneral]), cleanCode(t, codeUse), cleanCode(e, codeUse))) | doClean use (BeginLoop{loop, arguments}) = let val cleanBody = cleanCode(loop, use) (* Remove unused arguments. They're unnecessary and may cause problems later on. *) fun filterUnused [] = ([], []) | filterUnused (({use=[], value, ...}, _) :: args) = let val (used, discards) = filterUnused args (* We only need to keep this if it might have a side-effect. *) in (used, NullBinding(cleanCode(value, [UseGeneral])) :: discards) end | filterUnused(({value, addr, use}, t) :: args) = let val (used, discards) = filterUnused args in (({value=cleanCode(value, use), addr=addr, use=use}, t) :: used, discards) end val (usedArgs, discards) = filterUnused arguments in if not(null discards) then let fun splitArgs([], []) = ([], []) | splitArgs((arg, _) :: args, ({use=[], ...}, _) :: arguments) = let val (useArgs, discards) = splitArgs(args, arguments) in (* We actually only need to keep this argument if it might have a side-effect but keep it anyway. *) (useArgs, NullBinding arg :: discards) end | splitArgs(arg :: args, _ :: arguments) = let val (useArgs, discards) = splitArgs(args, arguments) in (arg :: useArgs, discards) end | splitArgs _ = raise InternalError "splitArgs" fun filterLoopArgs(Loop l) = let val (useArgs, discards) = splitArgs(l, arguments) in SOME(Newenv(discards, Loop useArgs)) end (* Don't descend into functions or inner loops. *) | filterLoopArgs(instr as Lambda _) = SOME instr | filterLoopArgs(instr as BeginLoop _) = SOME instr | filterLoopArgs _ = NONE val newLoop = BeginLoop {loop = mapCodetree filterLoopArgs cleanBody, arguments = usedArgs} in SOME(Newenv(discards, newLoop)) end else SOME(BeginLoop {loop = cleanBody, arguments = usedArgs}) end | doClean _ _ = NONE (* Anything else *) in (* If we recognise this as a special case we use the result otherwise we process it as a general value using UseGeneral as the usage. *) case doClean codeUse code of SOME result => result | NONE => mapCodetree (doClean [UseGeneral]) code end in cleanCode (pt, procUses) end (* cleanProc *) val cleanProc = fn (code, procUse, prev, localCount) => cleanProc(code, procUse, fn (i, _) => prev i, fn _ => (), localCount, fn _ => ()) structure Sharing = struct type codetree = codetree and loadForm = loadForm and codeUse = codeUse end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_CODEGEN_CONSTANT_FUNCTIONS.sml0000644000175000017500000003274013204034553025327 0ustar daviddavid(* Copyright (c) 2013, 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* If a function has an empty closure it can be code-generated immediately. That may allow other functions or tuples to be generated immediately as well. As well as avoiding run-time allocations this also allows the code-generator to use calls/jumps to constant addresses. *) functor CODETREE_CODEGEN_CONSTANT_FUNCTIONS ( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure BACKEND: CodegenTreeSig structure DEBUG: DEBUGSIG structure PRETTY : PRETTYSIG sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = BACKEND.Sharing = PRETTY.Sharing ): sig type codetree type machineWord = Address.machineWord val codeGenerate: codetree * int * Universal.universal list -> (unit -> machineWord) * Universal.universal list structure Foreign: FOREIGNCALLSIG structure Sharing: sig type codetree = codetree end end = struct open BASECODETREE open CODETREE_FUNCTIONS open Address exception InternalError = Misc.InternalError datatype lookupVal = EnvGenLoad of loadForm | EnvGenConst of machineWord * Universal.universal list type cgContext = { lookupAddr: loadForm -> lookupVal, enterConstant: int * (machineWord * Universal.universal list) -> unit, debugArgs: Universal.universal list } (* Code-generate a function or set of mutually recursive functions that contain no free variables and run the code to return the address. This allows us to further fold the address as a constant if, for example, it is used in a tuple. *) fun codeGenerateToConstant(lambda, debugSwitches, closure) = let val () = if DEBUG.getParameter DEBUG.codetreeAfterOptTag debugSwitches then PRETTY.getCompilerOutput debugSwitches (BASECODETREE.pretty(Lambda lambda)) else () val props = BACKEND.codeGenerate(lambda, debugSwitches, closure) val () = Address.lock closure in props end (* If we are code-generating a function immediately we make a one-word mutable cell that will subsequently contain the address of the code. After it is locked this becomes the closure of the function. By creating it here we can turn recursive references into constant references before we actually compile the function. *) fun makeConstantClosure () = let open Address in allocWordData(0w1, Word8.orb(F_mutable, F_words), toMachineWord 0w1) end fun cgFuns ({ lookupAddr, ...}: cgContext) (Extract ext) = ( (* Look up the entry. It may now be a constant. If it isn't it may still have changed if it is a closure entry and other closure entries have been replaced by constants. *) case lookupAddr ext of EnvGenLoad load => SOME(Extract load) | EnvGenConst w => SOME(Constnt w) ) | cgFuns (context as {debugArgs, ...}) (Lambda lambda) = let val copied as { closure=resultClosure, ...} = cgLambda(context, lambda, EnvGenLoad LoadRecursive) in case resultClosure of [] => let (* Create a "closure" for the function. *) val closure = makeConstantClosure() (* Replace any recursive references by references to the closure. There may be inner functions that only make recursive calls to this. By turning the recursive references into constants we may be able to compile them immediately as well. *) val repLambda = cgLambda(context, lambda, EnvGenConst(toMachineWord closure, [])) val props = codeGenerateToConstant(repLambda, debugArgs, closure) in SOME(Constnt(toMachineWord closure, props)) end | _ => SOME(Lambda copied) end | cgFuns (context as { enterConstant, debugArgs, ...}) (Newenv(envBindings, envExp)) = let (* First expand out any mutually-recursive bindings. This ensures that if we have any RecDecs left *) val expandedBindings = List.foldr (fn (d, l) => partitionMutableBindings d @ l) [] envBindings fun processBindings(Declar{value, addr, use} :: tail) = ( (* If this is a constant put it in the table otherwise create a binding. *) case mapCodetree (cgFuns context) value of Constnt w => (enterConstant(addr, w); processBindings tail) | code => Declar{value=code, addr=addr, use=use} :: processBindings tail ) | processBindings(NullBinding c :: tail) = NullBinding(mapCodetree (cgFuns context) c) :: processBindings tail | processBindings(RecDecs[{addr, lambda, use}] :: tail) = (* Single recursive bindings - treat as simple binding *) processBindings(Declar{addr=addr, value=Lambda lambda, use = use} :: tail) | processBindings(RecDecs recdecs :: tail) = let (* We know that this forms a strongly connected component so it is only possible to code-generate the group if no function has a free-variable outside the group. Each function must have at least one free variable which is part of the group. *) fun processEntry {addr, lambda, use} = {addr=addr, lambda=cgLambda(context, lambda, EnvGenLoad LoadRecursive), use=use} val processedGroup = map processEntry recdecs (* If every free variable is another member of the group we can code-generate the group. *) local fun closureItemInGroup(LoadLocal n) = List.exists(fn{addr, ...} => n = addr) processedGroup | closureItemInGroup _ = false fun onlyInGroup{lambda={closure, ...}, ...} = List.all closureItemInGroup closure in val canCodeGen = List.all onlyInGroup processedGroup end in if canCodeGen then let open Address (* Create "closures" for each entry. Add these as constants to the table. *) fun createAndEnter {addr, ...} = let val c = makeConstantClosure() in enterConstant(addr, (Address.toMachineWord c, [])); c end val closures = List.map createAndEnter processedGroup (* Code-generate each of the lambdas and store the code in the closure. *) fun processLambda({lambda, addr, ...}, closure) = let val closureAsMachineWord = Address.toMachineWord closure val repLambda = cgLambda(context, lambda, EnvGenConst(closureAsMachineWord, [])) val props = codeGenerateToConstant(repLambda, debugArgs, closure) in (* Include any properties we may have added *) enterConstant(addr, (closureAsMachineWord, props)) end val () = ListPair.appEq processLambda (processedGroup, closures) in processBindings tail (* We've done these *) end else RecDecs processedGroup :: processBindings tail end | processBindings(Container{addr, use, size, setter} :: tail) = Container{addr=addr, use=use, size=size, setter = mapCodetree (cgFuns context) setter} :: processBindings tail | processBindings [] = [] val bindings = processBindings expandedBindings val body = mapCodetree (cgFuns context) envExp in case bindings of [] => SOME body | _ => SOME(Newenv(bindings, body)) end | cgFuns context (Tuple{ fields, isVariant }) = (* Create any constant tuples that have arisen because they contain constant functions. *) SOME((if isVariant then mkDatatype else mkTuple)(map (mapCodetree (cgFuns context)) fields)) | cgFuns _ _ = NONE and cgLambda({lookupAddr, debugArgs, ...}, { body, isInline, name, closure, argTypes, resultType, localCount, recUse}, loadRecursive) = let val cArray = Array.array(localCount, NONE) val newClosure = makeClosure() fun lookupLocal(load as LoadLocal n) = ( case Array.sub(cArray, n) of NONE => EnvGenLoad load | SOME w => EnvGenConst w ) | lookupLocal(LoadClosure n) = ( case lookupAddr(List.nth (closure, n)) of EnvGenLoad load => EnvGenLoad(addToClosure newClosure load) | c as EnvGenConst _ => c ) | lookupLocal LoadRecursive = loadRecursive | lookupLocal load = EnvGenLoad load (* Argument *) val context = { lookupAddr = lookupLocal, enterConstant = fn (n, w) => Array.update(cArray, n, SOME w), debugArgs = debugArgs } (* Process the body to deal with any sub-functions and also to bind in any constants from free variables. *) val newBody = mapCodetree (cgFuns context) body (* Build the resulting lambda. *) val resultClosure = extractClosure newClosure in { body = newBody, isInline = isInline, name = name, closure = resultClosure, argTypes = argTypes, resultType = resultType, localCount = localCount, recUse = recUse } end fun codeGenerate(original, nLocals, debugArgs) = let val cArray = Array.array(nLocals, NONE) fun lookupAddr(load as LoadLocal n) = ( case Array.sub(cArray, n) of NONE => EnvGenLoad load | SOME w => EnvGenConst w ) | lookupAddr _ = raise InternalError "lookupConstant: top-level reached" val context = { lookupAddr = lookupAddr, enterConstant = fn (n, w) => Array.update(cArray, n, SOME w), debugArgs = debugArgs } val resultCode = mapCodetree (cgFuns context) original (* Turn this into a lambda to code-generate. *) val lambda:lambdaForm = { body = resultCode, isInline = NonInline, name = "", closure = [], argTypes = [(GeneralType, [])], resultType = GeneralType, localCount = nLocals, recUse = [] } val closure = makeConstantClosure() val props = BACKEND.codeGenerate(lambda, debugArgs, closure) (* The code may consist of tuples (i.e. compiled ML structures) containing a mixture of Loads, where the values are yet to be compiled, and Constants, where the code has now been compiled. We need to extract any properties from the constants and return the whole lot as tuple properties. *) fun extractProps(Constnt(_, p)) = p | extractProps(Extract ext) = ( case lookupAddr ext of EnvGenLoad _ => [] | EnvGenConst(_, p) => p ) | extractProps(Tuple{fields, ...}) = let val fieldProps = map extractProps fields in if List.all null fieldProps then [] else [Universal.tagInject CodeTags.tupleTag fieldProps] end | extractProps(Newenv(_, exp)) = extractProps exp | extractProps _ = [] val newProps = extractProps original (* Cast this as a function. It is a function with a single argument. *) val resultFunction: unit -> machineWord = RunCall.unsafeCast closure in (resultFunction, CodeTags.mergeTupleProps(newProps, props)) end structure Foreign = BACKEND.Foreign structure Sharing = struct type codetree = codetree end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CODETREE_SIMPLIFIER.sml0000644000175000017500000024410313204034553022763 0ustar daviddavid(* Copyright (c) 2013, 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* This is a cut-down version of the optimiser which simplifies the code but does not apply any heuristics. It follows chained bindings, in particular through tuples, folds constants expressions involving built-in functions, expands inline functions that have previously been marked as inlineable. It does not detect small functions that can be inlined nor does it code-generate functions without free variables. *) functor CODETREE_SIMPLIFIER( structure BASECODETREE: BaseCodeTreeSig structure CODETREE_FUNCTIONS: CodetreeFunctionsSig structure REMOVE_REDUNDANT: sig type codetree type loadForm type codeUse val cleanProc : (codetree * codeUse list * (int -> loadForm) * int) -> codetree structure Sharing: sig type codetree = codetree and loadForm = loadForm and codeUse = codeUse end end sharing BASECODETREE.Sharing = CODETREE_FUNCTIONS.Sharing = REMOVE_REDUNDANT.Sharing ) : sig type codetree and codeBinding and envSpecial val simplifier: codetree * int -> (codetree * codeBinding list * envSpecial) * int * bool val specialToGeneral: codetree * codeBinding list * envSpecial -> codetree structure Sharing: sig type codetree = codetree and codeBinding = codeBinding and envSpecial = envSpecial end end = struct open BASECODETREE open Address open CODETREE_FUNCTIONS open BuiltIns exception InternalError = Misc.InternalError exception RaisedException (* The bindings are held internally as a reversed list. This is really only a check that the reversed and forward lists aren't confused. *) datatype revlist = RevList of codeBinding list type simpContext = { lookupAddr: loadForm -> envGeneral * envSpecial, enterAddr: int * (envGeneral * envSpecial) -> unit, nextAddress: unit -> int, reprocess: bool ref } fun envGeneralToCodetree(EnvGenLoad ext) = Extract ext | envGeneralToCodetree(EnvGenConst w) = Constnt w fun mkDec (laddr, res) = Declar{value = res, addr = laddr, use=[]} fun mkEnv([], exp) = exp | mkEnv(decs, exp as Extract(LoadLocal loadAddr)) = ( (* A common case is where we have a binding as the last item and then a load of that binding. Reduce this so other optimisations are possible. This is still something of a special case that could/should be generalised. *) case List.last decs of Declar{addr=decAddr, value, ... } => if loadAddr = decAddr then mkEnv(List.take(decs, List.length decs - 1), value) else Newenv(decs, exp) | _ => Newenv(decs, exp) ) | mkEnv(decs, exp) = Newenv(decs, exp) fun isConstnt(Constnt _) = true | isConstnt _ = false (* Wrap up the general, bindings and special value as a codetree node. The special entry is discarded except for Constnt entries which are converted to ConstntWithInline. That allows any inlineable code to be carried forward to later passes. *) fun specialToGeneral(g, RevList(b as _ :: _), s) = mkEnv(List.rev b, specialToGeneral(g, RevList [], s)) | specialToGeneral(Constnt(w, p), RevList [], s) = Constnt(w, setInline s p) | specialToGeneral(g, RevList [], _) = g (* Convert a constant to a fixed value. Used in some constant folding. *) val toFix: machineWord -> FixedInt.int = FixedInt.fromInt o Word.toIntX o toShort local val ffiSizeFloat: unit -> word = RunCall.rtsCallFast1 "PolySizeFloat" and ffiSizeDouble: unit -> word = RunCall.rtsCallFast1 "PolySizeDouble" in (* If we have a constant index value we convert that into a byte offset. We need to know the size of the item on this platform. We have to make this check when we actually compile the code because the interpreted version will generally be run on a platform different from the one the pre-built compiler was compiled on. The ML word length will be the same because we have separate pre-built compilers for 32 and 64-bit. *) fun getMultiplier (LoadStoreMLWord _) = RunCall.bytesPerWord | getMultiplier (LoadStoreMLByte _) = 0w1 | getMultiplier LoadStoreC8 = 0w1 | getMultiplier LoadStoreC16 = 0w2 | getMultiplier LoadStoreC32 = 0w4 | getMultiplier LoadStoreC64 = 0w8 | getMultiplier LoadStoreCFloat = ffiSizeFloat() | getMultiplier LoadStoreCDouble = ffiSizeDouble() | getMultiplier LoadStoreUntaggedUnsigned = RunCall.bytesPerWord end fun simplify(c, s) = mapCodetree (simpGeneral s) c (* Process the codetree to return a codetree node. This is used when we don't want the special case. *) and simpGeneral { lookupAddr, ...} (Extract ext) = let val (gen, spec) = lookupAddr ext in SOME(specialToGeneral(envGeneralToCodetree gen, RevList [], spec)) end | simpGeneral context (Newenv envArgs) = SOME(specialToGeneral(simpNewenv(envArgs, context, RevList []))) | simpGeneral context (Lambda lambda) = SOME(Lambda(#1(simpLambda(lambda, context, NONE, NONE)))) | simpGeneral context (Eval {function, argList, resultType}) = SOME(specialToGeneral(simpFunctionCall(function, argList, resultType, context, RevList[]))) (* BuiltIn0 functions can't be processed specially. *) | simpGeneral context (Unary{oper, arg1}) = SOME(specialToGeneral(simpUnary(oper, arg1, context, RevList []))) | simpGeneral context (Binary{oper, arg1, arg2}) = SOME(specialToGeneral(simpBinary(oper, arg1, arg2, context, RevList []))) | simpGeneral context (Arbitrary{oper=ArbCompare test, shortCond, arg1, arg2, longCall}) = SOME(specialToGeneral(simpArbitraryCompare(test, shortCond, arg1, arg2, longCall, context, RevList []))) | simpGeneral context (Arbitrary{oper=ArbArith arith, shortCond, arg1, arg2, longCall}) = SOME(specialToGeneral(simpArbitraryArith(arith, shortCond, arg1, arg2, longCall, context, RevList []))) | simpGeneral context (AllocateWordMemory {numWords, flags, initial}) = SOME(specialToGeneral(simpAllocateWordMemory(numWords, flags, initial, context, RevList []))) | simpGeneral context (Cond(condTest, condThen, condElse)) = SOME(specialToGeneral(simpIfThenElse(condTest, condThen, condElse, context, RevList []))) | simpGeneral context (Tuple { fields, isVariant }) = SOME(specialToGeneral(simpTuple(fields, isVariant, context, RevList []))) | simpGeneral context (Indirect{ base, offset, isVariant }) = SOME(specialToGeneral(simpFieldSelect(base, offset, isVariant, context, RevList []))) | simpGeneral context (SetContainer{container, tuple, filter}) = let val optCont = simplify(container, context) val (cGen, cDecs, cSpec) = simpSpecial(tuple, context, RevList []) in case cSpec of (* If the tuple is a local binding it is simpler to pick it up from the "special" entry. *) EnvSpecTuple(size, recEnv) => let val fields = List.tabulate(size, envGeneralToCodetree o #1 o recEnv) in SOME(simpPostSetContainer(optCont, Tuple{isVariant=false, fields=fields}, cDecs, filter)) end | _ => SOME(simpPostSetContainer(optCont, cGen, cDecs, filter)) end | simpGeneral (context as { enterAddr, nextAddress, reprocess, ...}) (BeginLoop{loop, arguments, ...}) = let val didReprocess = ! reprocess (* To see if we really need the loop first try simply binding the arguments and process it. It's often the case that if one or more arguments is a constant that the looping case will be eliminated. *) val withoutBeginLoop = simplify(mkEnv(List.map (Declar o #1) arguments, loop), context) fun foldLoop f n (Loop l) = f(l, n) | foldLoop f n (Newenv(_, exp)) = foldLoop f n exp | foldLoop f n (Cond(_, t, e)) = foldLoop f (foldLoop f n t) e | foldLoop f n (Handle {handler, ...}) = foldLoop f n handler | foldLoop f n (SetContainer{tuple, ...}) = foldLoop f n tuple | foldLoop _ n _ = n (* Check if the Loop instruction is there. This assumes that these are the only tail-recursive cases. *) val hasLoop = foldLoop (fn _ => true) false in if not (hasLoop withoutBeginLoop) then SOME withoutBeginLoop else let (* Reset "reprocess". It may have been set in the withoutBeginLoop that's not the code we're going to return. *) val () = reprocess := didReprocess (* We need the BeginLoop. Create new addresses for the arguments. *) fun declArg({addr, value, use, ...}, typ) = let val newAddr = nextAddress() in enterAddr(addr, (EnvGenLoad(LoadLocal newAddr), EnvSpecNone)); ({addr = newAddr, value = simplify(value, context), use = use }, typ) end (* Now look to see if the (remaining) loops have any arguments that do not change. Do this after processing because we could be eliminating other loops that may change the arguments. *) val declArgs = map declArg arguments val beginBody = simplify(loop, context) local fun argsMatch((Extract (LoadLocal argNo), _), ({addr, ...}, _)) = argNo = addr | argsMatch _ = false fun checkLoopArgs(loopArgs, checks) = let fun map3(loopA :: loopArgs, decA :: decArgs, checkA :: checkArgs) = (argsMatch(loopA, decA) andalso checkA) :: map3(loopArgs, decArgs, checkArgs) | map3 _ = [] in map3(loopArgs, declArgs, checks) end in val checkList = foldLoop checkLoopArgs (map (fn _ => true) arguments) beginBody end in if List.exists (fn l => l) checkList then let (* Turn the original arguments into bindings. *) local fun argLists(true, (arg, _), (tArgs, fArgs)) = (Declar arg :: tArgs, fArgs) | argLists(false, arg, (tArgs, fArgs)) = (tArgs, arg :: fArgs) in val (unchangedArgs, filteredDeclArgs) = ListPair.foldrEq argLists ([], []) (checkList, declArgs) end fun changeLoops (Loop loopArgs) = let val newArgs = ListPair.foldrEq(fn (false, arg, l) => arg :: l | (true, _, l) => l) [] (checkList, loopArgs) in Loop newArgs end | changeLoops(Newenv(decs, exp)) = Newenv(decs, changeLoops exp) | changeLoops(Cond(i, t, e)) = Cond(i, changeLoops t, changeLoops e) | changeLoops(Handle{handler, exp, exPacketAddr}) = Handle{handler=changeLoops handler, exp=exp, exPacketAddr=exPacketAddr} | changeLoops(SetContainer{tuple, container, filter}) = SetContainer{tuple=changeLoops tuple, container=container, filter=filter} | changeLoops code = code val beginBody = simplify(changeLoops loop, context) (* Reprocess because we've lost any special part from the arguments that haven't changed. *) val () = reprocess := true in SOME(mkEnv(unchangedArgs, BeginLoop {loop=beginBody, arguments=filteredDeclArgs})) end else SOME(BeginLoop {loop=beginBody, arguments=declArgs}) end end | simpGeneral context (TagTest{test, tag, maxTag}) = ( case simplify(test, context) of Constnt(testResult, _) => if isShort testResult andalso toShort testResult = tag then SOME CodeTrue else SOME CodeFalse | sTest => SOME(TagTest{test=sTest, tag=tag, maxTag=maxTag}) ) | simpGeneral context (LoadOperation{kind, address}) = let (* Try to move constants out of the index. *) val (genAddress, RevList decAddress) = simpAddress(address, getMultiplier kind, context) (* If the base address and index are constant and this is an immutable load we can do this at compile time. *) val result = case (genAddress, kind) of ({base=Constnt(baseAddr, _), index=NONE, offset}, LoadStoreMLWord _) => if isShort baseAddr then LoadOperation{kind=kind, address=genAddress} else let (* Ignore the "isImmutable" flag and look at the immutable status of the memory. Check that this is a word object and that the offset is within range. The code for Vector.sub, for example, raises an exception if the index is out of range but still generates the (unreachable) indexing code. *) val addr = toAddress baseAddr val wordOffset = offset div RunCall.bytesPerWord in if isMutable addr orelse not(isWords addr) orelse wordOffset >= length addr then LoadOperation{kind=kind, address=genAddress} else Constnt(toMachineWord(loadWord(addr, wordOffset)), []) end | ({base=Constnt(baseAddr, _), index=NONE, offset}, LoadStoreMLByte _) => if isShort baseAddr then LoadOperation{kind=kind, address=genAddress} else let val addr = toAddress baseAddr val wordOffset = offset div RunCall.bytesPerWord in if isMutable addr orelse not(isBytes addr) orelse wordOffset >= length addr then LoadOperation{kind=kind, address=genAddress} else Constnt(toMachineWord(loadByte(addr, offset)), []) end | ({base=Constnt(baseAddr, _), index=NONE, offset}, LoadStoreUntaggedUnsigned) => if isShort baseAddr then LoadOperation{kind=kind, address=genAddress} else let val addr = toAddress baseAddr (* We don't currently have loadWordUntagged in Address but it's only ever used to load the string length word so we can use that. *) in if isMutable addr orelse not(isBytes addr) orelse offset <> 0w0 then LoadOperation{kind=kind, address=genAddress} else Constnt(toMachineWord(String.size(RunCall.unsafeCast addr)), []) end | _ => LoadOperation{kind=kind, address=genAddress} in SOME(mkEnv(List.rev decAddress, result)) end | simpGeneral context (StoreOperation{kind, address, value}) = let val (genAddress, decAddress) = simpAddress(address, getMultiplier kind, context) val (genValue, RevList decValue, _) = simpSpecial(value, context, decAddress) in SOME(mkEnv(List.rev decValue, StoreOperation{kind=kind, address=genAddress, value=genValue})) end | simpGeneral (context as {reprocess, ...}) (BlockOperation{kind, sourceLeft, destRight, length}) = let val multiplier = case kind of BlockOpMove{isByteMove=false} => RunCall.bytesPerWord | BlockOpMove{isByteMove=true} => 0w1 | BlockOpEqualByte => 0w1 | BlockOpCompareByte => 0w1 val (genSrcAddress, RevList decSrcAddress) = simpAddress(sourceLeft, multiplier, context) val (genDstAddress, RevList decDstAddress) = simpAddress(destRight, multiplier, context) val (genLength, RevList decLength, _) = simpSpecial(length, context, RevList []) (* If we have a short length move we're better doing it as a sequence of loads and stores. Comparisons are probably too complicated though it might be possible to handle single bytes. This is particularly useful with string concatenation. Small here means four. *) val shortLength = case genLength of Constnt(lenConst, _) => if isShort lenConst then let val l = toShort lenConst in if l <= 0w4 then SOME l else NONE end else NONE | _ => NONE val combinedDecs = List.rev decSrcAddress @ List.rev decDstAddress @ List.rev decLength val operation = case (shortLength, kind) of (SOME length, BlockOpMove{isByteMove}) => let val _ = reprocess := true (* Frequently the source will be a constant. *) val {base=baseSrc, index=indexSrc, offset=offsetSrc} = genSrcAddress and {base=baseDst, index=indexDst, offset=offsetDst} = genDstAddress (* We don't know if the source is immutable but the destination definitely isn't *) val moveKind = if isByteMove then LoadStoreMLByte{isImmutable=false} else LoadStoreMLWord{isImmutable=false} fun makeMoves offset = if offset = length then [] else NullBinding( StoreOperation{kind=moveKind, address={base=baseDst, index=indexDst, offset=offsetDst+offset*multiplier}, value=LoadOperation{kind=moveKind, address={base=baseSrc, index=indexSrc, offset=offsetSrc+offset*multiplier}}}) :: makeMoves(offset+0w1) in mkEnv(combinedDecs @ makeMoves 0w0, CodeZero (* unit result *)) end | _ => mkEnv(combinedDecs, BlockOperation{kind=kind, sourceLeft=genSrcAddress, destRight=genDstAddress, length=genLength}) in SOME operation end | simpGeneral (context as {enterAddr, nextAddress, ...}) (Handle{exp, handler, exPacketAddr}) = let (* We need to make a new binding for the exception packet. *) val expBody = simplify(exp, context) val newAddr = nextAddress() val () = enterAddr(exPacketAddr, (EnvGenLoad(LoadLocal newAddr), EnvSpecNone)) val handleBody = simplify(handler, context) in SOME(Handle{exp=expBody, handler=handleBody, exPacketAddr=newAddr}) end | simpGeneral _ _ = NONE (* Where we have an Indirect or Eval we want the argument as either a tuple or an inline function respectively if that's possible. Getting that also involves various other cases as well. Because a binding may later be used in such a context we treat any binding in that way as well. *) and simpSpecial (Extract ext, { lookupAddr, ...}, tailDecs) = let val (gen, spec) = lookupAddr ext in (envGeneralToCodetree gen, tailDecs, spec) end | simpSpecial (Newenv envArgs, context, tailDecs) = simpNewenv(envArgs, context, tailDecs) | simpSpecial (Lambda lambda, context, tailDecs) = let val (gen, spec) = simpLambda(lambda, context, NONE, NONE) in (Lambda gen, tailDecs, spec) end | simpSpecial (Eval {function, argList, resultType}, context, tailDecs) = simpFunctionCall(function, argList, resultType, context, tailDecs) | simpSpecial (Unary{oper, arg1}, context, tailDecs) = simpUnary(oper, arg1, context, tailDecs) | simpSpecial (Binary{oper, arg1, arg2}, context, tailDecs) = simpBinary(oper, arg1, arg2, context, tailDecs) | simpSpecial (Arbitrary{oper=ArbCompare test, shortCond, arg1, arg2, longCall}, context, tailDecs) = simpArbitraryCompare(test, shortCond, arg1, arg2, longCall, context, tailDecs) | simpSpecial (Arbitrary{oper=ArbArith arith, shortCond, arg1, arg2, longCall}, context, tailDecs) = simpArbitraryArith(arith, shortCond, arg1, arg2, longCall, context, tailDecs) | simpSpecial (AllocateWordMemory{numWords, flags, initial}, context, tailDecs) = simpAllocateWordMemory(numWords, flags, initial, context, tailDecs) | simpSpecial (Cond(condTest, condThen, condElse), context, tailDecs) = simpIfThenElse(condTest, condThen, condElse, context, tailDecs) | simpSpecial (Tuple { fields, isVariant }, context, tailDecs) = simpTuple(fields, isVariant, context, tailDecs) | simpSpecial (Indirect{ base, offset, isVariant }, context, tailDecs) = simpFieldSelect(base, offset, isVariant, context, tailDecs) | simpSpecial (c: codetree, s: simpContext, tailDecs): codetree * revlist * envSpecial = let (* Anything else - copy it and then split it into the fields. *) fun split(Newenv(l, e), RevList tailDecs) = (* Pull off bindings. *) split (e, RevList(List.rev l @ tailDecs)) | split(Constnt(m, p), tailDecs) = (Constnt(m, p), tailDecs, findInline p) | split(c, tailDecs) = (c, tailDecs, EnvSpecNone) in split(simplify(c, s), tailDecs) end (* Process a Newenv. We need to add the bindings to the context. *) and simpNewenv((envDecs: codeBinding list, envExp), context as { enterAddr, nextAddress, reprocess, ...}, tailDecs): codetree * revlist * envSpecial = let fun copyDecs ([], decs) = simpSpecial(envExp, context, decs) (* End of the list - process the result expression. *) | copyDecs ((Declar{addr, value, ...} :: vs), decs) = ( case simpSpecial(value, context, decs) of (* If this raises an exception stop here. *) vBinding as (Raise _, _, _) => vBinding | vBinding => let (* Add the declaration to the table. *) val (optV, dec) = makeNewDecl(vBinding, context) val () = enterAddr(addr, optV) in copyDecs(vs, dec) end ) | copyDecs(NullBinding v :: vs, decs) = (* Not a binding - process this and the rest.*) ( case simpSpecial(v, context, decs) of (* If this raises an exception stop here. *) vBinding as (Raise _, _, _) => vBinding | (cGen, RevList cDecs, _) => copyDecs(vs, RevList(NullBinding cGen :: cDecs)) ) | copyDecs(RecDecs mutuals :: vs, RevList decs) = (* Mutually recursive declarations. Any of the declarations may refer to any of the others. They should all be lambdas. The front end generates functions with more than one argument (either curried or tupled) as pairs of mutually recursive functions. The main function body takes its arguments on the stack (or in registers) and the auxiliary inline function, possibly nested, takes the tupled or curried arguments and calls it. If the main function is recursive it will first call the inline function which is why the pair are mutually recursive. As far as possible we want to use the main function since that uses the least memory. Specifically, if the function recurses we want the recursive call to pass all the arguments if it can. *) let (* Reorder the function so the explicitly-inlined ones come first. Their code can then be inserted into the main functions. *) local val (inlines, nonInlines) = List.partition ( fn {lambda = { isInline=Inline, ...}, ... } => true | _ => false) mutuals in val orderedDecs = inlines @ nonInlines end (* Go down the functions creating new addresses for them and entering them in the table. *) val addresses = map (fn {addr, ... } => let val decAddr = nextAddress() in enterAddr (addr, (EnvGenLoad(LoadLocal decAddr), EnvSpecNone)); decAddr end) orderedDecs fun processFunction({ lambda, addr, ... }, newAddr) = let val (gen, spec) = simpLambda(lambda, context, SOME addr, SOME newAddr) (* Update the entry in the table to include any inlineable function. *) val () = enterAddr (addr, (EnvGenLoad (LoadLocal newAddr), spec)) in {addr=newAddr, lambda=gen, use=[]} end val rlist = ListPair.map processFunction (orderedDecs, addresses) in (* and put these declarations onto the list. *) copyDecs(vs, RevList(List.rev(partitionMutableBindings(RecDecs rlist)) @ decs)) end | copyDecs (Container{addr, size, setter, ...} :: vs, RevList decs) = let (* Enter the new address immediately - it's needed in the setter. *) val decAddr = nextAddress() val () = enterAddr (addr, (EnvGenLoad(LoadLocal decAddr), EnvSpecNone)) val (setGen, RevList setDecs, _) = simpSpecial(setter, context, RevList []) in (* If we have inline expanded a function that sets the container we're better off eliminating the container completely. *) case setGen of SetContainer { tuple, filter, container } => let (* Check the container we're setting is the address we've made for it. *) val _ = (case container of Extract(LoadLocal a) => a = decAddr | _ => false) orelse raise InternalError "copyDecs: Container/SetContainer" val newDecAddr = nextAddress() val () = enterAddr (addr, (EnvGenLoad(LoadLocal newDecAddr), EnvSpecNone)) val tupleAddr = nextAddress() val tupleDec = Declar{addr=tupleAddr, use=[], value=tuple} val tupleLoad = mkLoadLocal tupleAddr val resultTuple = BoolVector.foldri(fn (i, true, l) => mkInd(i, tupleLoad) :: l | (_, false, l) => l) [] filter val _ = List.length resultTuple = size orelse raise InternalError "copyDecs: Container/SetContainer size" val containerDec = Declar{addr=newDecAddr, use=[], value=mkTuple resultTuple} val _ = reprocess := true in copyDecs(vs, RevList(containerDec :: tupleDec :: setDecs @ decs)) end | _ => let val dec = Container{addr=decAddr, use=[], size=size, setter=setGen} in copyDecs(vs, RevList(dec :: setDecs @ decs)) end end in copyDecs(envDecs, tailDecs) end (* Prepares a binding for entry into a look-up table. Returns the entry to put into the table together with any bindings that must be made. If the general part of the optVal is a constant we can just put the constant in the table. If it is a load (Extract) it is just renaming an existing entry so we can return it. Otherwise we have to make a new binding and return a load (Extract) entry for it. *) and makeNewDecl((Constnt w, RevList decs, spec), _) = ((EnvGenConst w, spec), RevList decs) (* No need to create a binding for a constant. *) | makeNewDecl((Extract ext, RevList decs, spec), _) = ((EnvGenLoad ext, spec), RevList decs) (* Binding is simply giving a new name to a variable - can ignore this declaration. *) | makeNewDecl((gen, RevList decs, spec), { nextAddress, ...}) = let (* Create a binding for this value. *) val newAddr = nextAddress() in ((EnvGenLoad(LoadLocal newAddr), spec), RevList(mkDec(newAddr, gen) :: decs)) end and simpLambda({body, isInline, name, argTypes, resultType, closure, localCount, ...}, { lookupAddr, reprocess, ... }, myOldAddrOpt, myNewAddrOpt) = let (* A new table for the new function. *) val oldAddrTab = Array.array (localCount, NONE) val optClosureList = makeClosure() val isNowRecursive = ref false local fun localOldAddr (LoadLocal addr) = valOf(Array.sub(oldAddrTab, addr)) | localOldAddr (ext as LoadArgument _) = (EnvGenLoad ext, EnvSpecNone) | localOldAddr (ext as LoadRecursive) = (EnvGenLoad ext, EnvSpecNone) | localOldAddr (LoadClosure addr) = let val oldEntry = List.nth(closure, addr) (* If the entry in the closure is our own address this is recursive. *) fun isRecursive(EnvGenLoad(LoadLocal a), SOME b) = if a = b then (isNowRecursive := true; true) else false | isRecursive _ = false in if isRecursive(EnvGenLoad oldEntry, myOldAddrOpt) then (EnvGenLoad LoadRecursive, EnvSpecNone) else let val newEntry = lookupAddr oldEntry val makeClosure = addToClosure optClosureList fun convertResult(genEntry, specEntry) = (* If after looking up the entry we get our new address it's recursive. *) if isRecursive(genEntry, myNewAddrOpt) then (EnvGenLoad LoadRecursive, EnvSpecNone) else let val newGeneral = case genEntry of EnvGenLoad ext => EnvGenLoad(makeClosure ext) | EnvGenConst w => EnvGenConst w (* Have to modify the environment here so that if we look up free variables we add them to the closure. *) fun convertEnv env args = convertResult(env args) val newSpecial = case specEntry of EnvSpecTuple(size, env) => EnvSpecTuple(size, convertEnv env) | EnvSpecInlineFunction(spec, env) => EnvSpecInlineFunction(spec, convertEnv env) | EnvSpecUnary _ => EnvSpecNone (* Don't pass this in *) | EnvSpecBinary _ => EnvSpecNone (* Don't pass this in *) | EnvSpecNone => EnvSpecNone in (newGeneral, newSpecial) end in convertResult newEntry end end and setTab (index, v) = Array.update (oldAddrTab, index, SOME v) in val newAddressAllocator = ref 0 fun mkAddr () = ! newAddressAllocator before newAddressAllocator := ! newAddressAllocator + 1 val newCode = simplify (body, { enterAddr = setTab, lookupAddr = localOldAddr, nextAddress=mkAddr, reprocess = reprocess }) end val closureAfterOpt = extractClosure optClosureList val localCount = ! newAddressAllocator (* If we have mutually recursive "small" functions we may turn them into recursive functions. We have to remove the "small" status from them to prevent them from being expanded inline anywhere else. The optimiser may turn them back into "small" functions if the recursion is actually tail-recursion. *) val isNowInline = case isInline of Inline => if ! isNowRecursive then NonInline else Inline | NonInline => NonInline (* Clean up the function body at this point if it could be inlined. There are examples where failing to do this can blow up. This can be the result of creating both a general and special function inside an inline function. *) val cleanBody = case isNowInline of NonInline => newCode | _ => REMOVE_REDUNDANT.cleanProc(newCode, [UseExport], LoadClosure, localCount) val copiedLambda: lambdaForm = { body = cleanBody, isInline = isNowInline, name = name, closure = closureAfterOpt, argTypes = argTypes, resultType = resultType, localCount = localCount, recUse = [] } val inlineCode = case isNowInline of NonInline => EnvSpecNone | _ => EnvSpecInlineFunction(copiedLambda, fn addr => (EnvGenLoad(List.nth(closureAfterOpt, addr)), EnvSpecNone)) in ( copiedLambda, inlineCode ) end and simpFunctionCall(function, argList, resultType, context as { reprocess, ...}, tailDecs) = let (* Function call - This may involve inlining the function. *) (* Get the function to be called and see if it is inline or a lambda expression. *) val (genFunct, decsFunct, specFunct) = simpSpecial(function, context, tailDecs) (* We have to make a special check here that we are not passing in the function we are trying to expand. This could result in an infinitely recursive expansion. It is only going to happen in very special circumstances such as a definition of the Y combinator. If we see that we don't attempt to expand inline. It could be embedded in a tuple or the closure of a function as well as passed directly. *) val isRecursiveArg = case function of Extract extOrig => let fun containsFunction(Extract thisArg, v) = (v orelse thisArg = extOrig, FOLD_DESCEND) | containsFunction(Lambda{closure, ...}, v) = (* Only the closure, not the body *) (foldl (fn (c, w) => foldtree containsFunction w (Extract c)) v closure, FOLD_DONT_DESCEND) | containsFunction(Eval _, v) = (v, FOLD_DONT_DESCEND) (* OK if it's called *) | containsFunction(_, v) = (v, FOLD_DESCEND) in List.exists(fn (c, _) => foldtree containsFunction false c) argList end | _ => false in case (specFunct, genFunct, isRecursiveArg) of (EnvSpecInlineFunction({body=lambdaBody, localCount, argTypes, ...}, functEnv), _, false) => let val _ = List.length argTypes = List.length argList orelse raise InternalError "simpFunctionCall: argument mismatch" val () = reprocess := true (* If we expand inline we have to reprocess *) and { nextAddress, reprocess, ...} = context (* Expand a function inline, either one marked explicitly to be inlined or one detected as "small". *) (* Calling inline proc or a lambda expression which is just called. The function is replaced with a block containing declarations of the parameters. We need a new table here because the addresses we use to index it are the addresses which are local to the function. New addresses are created in the range of the surrounding function. *) val localVec = Array.array(localCount, NONE) local fun processArgs([], bindings) = ([], bindings) | processArgs((arg, _)::args, bindings) = let val (thisArg, newBindings) = makeNewDecl(simpSpecial(arg, context, bindings), context) val (otherArgs, resBindings) = processArgs(args, newBindings) in (thisArg::otherArgs, resBindings) end val (params, bindings) = processArgs(argList, decsFunct) val paramVec = Vector.fromList params in fun getParameter n = Vector.sub(paramVec, n) (* Bindings necessary for the arguments *) val copiedArgs = bindings end local fun localOldAddr(LoadLocal addr) = valOf(Array.sub(localVec, addr)) | localOldAddr(LoadArgument addr) = getParameter addr | localOldAddr(LoadClosure closureEntry) = functEnv closureEntry | localOldAddr LoadRecursive = raise InternalError "localOldAddr: LoadRecursive" fun setTabForInline (index, v) = Array.update (localVec, index, SOME v) val lambdaContext = { lookupAddr=localOldAddr, enterAddr=setTabForInline, nextAddress=nextAddress, reprocess = reprocess } in val (cGen, cDecs, cSpec) = simpSpecial(lambdaBody,lambdaContext, copiedArgs) end in (cGen, cDecs, cSpec) end | (_, gen as Constnt _, _) => (* Not inlinable - constant function. *) let val copiedArgs = map (fn (arg, argType) => (simplify(arg, context), argType)) argList val evCopiedCode = Eval {function = gen, argList = copiedArgs, resultType=resultType} in (evCopiedCode, decsFunct, EnvSpecNone) end | (_, gen, _) => (* Anything else. *) let val copiedArgs = map (fn (arg, argType) => (simplify(arg, context), argType)) argList val evCopiedCode = Eval {function = gen, argList = copiedArgs, resultType=resultType} in (evCopiedCode, decsFunct, EnvSpecNone) end end (* Special processing for the current builtIn1 operations. *) (* Constant folding for built-ins. These ought to be type-correct i.e. we should have tagged values in some cases and addresses in others. However there may be run-time tests that would ensure type-correctness and we can't be sure that they will always be folded at compile-time. e.g. we may have if isShort c then shortOp c else longOp c If c is a constant then we may try to fold both the shortOp and the longOp and one of these will be type-incorrect although never executed at run-time. *) and simpUnary(oper, arg1, context as { reprocess, ...}, tailDecs) = let val (genArg1, decArg1, specArg1) = simpSpecial(arg1, context, tailDecs) in case (oper, genArg1) of (NotBoolean, Constnt(v, _)) => ( reprocess := true; (if isShort v andalso toShort v = 0w0 then CodeTrue else CodeFalse, decArg1, EnvSpecNone) ) | (IsTaggedValue, Constnt(v, _)) => ( reprocess := true; (if isShort v then CodeTrue else CodeFalse, decArg1, EnvSpecNone) ) | (IsTaggedValue, genArg1) => ( (* We use this to test for nil values and if we have constructed a record (or possibly a function) it can't be null. *) case specArg1 of EnvSpecTuple _ => (CodeFalse, decArg1, EnvSpecNone) before reprocess := true | EnvSpecInlineFunction _ => (CodeFalse, decArg1, EnvSpecNone) before reprocess := true | _ => (Unary{oper=oper, arg1=genArg1}, decArg1, EnvSpecNone) ) | (MemoryCellLength, Constnt(v, _)) => ( reprocess := true; (if isShort v then CodeZero else Constnt(toMachineWord(Address.length(toAddress v)), []), decArg1, EnvSpecNone) ) | (MemoryCellFlags, Constnt(v, _)) => ( reprocess := true; (if isShort v then CodeZero else Constnt(toMachineWord(Address.flags(toAddress v)), []), decArg1, EnvSpecNone) ) | (LongWordToTagged, Constnt(v, _)) => ( reprocess := true; (Constnt(toMachineWord(Word.fromLargeWord(RunCall.unsafeCast v)), []), decArg1, EnvSpecNone) ) | (LongWordToTagged, genArg1) => ( (* If we apply LongWordToTagged to an argument we have created with UnsignedToLongWord we can return the original argument. *) case specArg1 of EnvSpecUnary(UnsignedToLongWord, originalArg) => ( reprocess := true; (originalArg, decArg1, EnvSpecNone) ) | _ => (Unary{oper=LongWordToTagged, arg1=genArg1}, decArg1, EnvSpecNone) ) | (SignedToLongWord, Constnt(v, _)) => ( reprocess := true; (Constnt(toMachineWord(Word.toLargeWordX(RunCall.unsafeCast v)), []), decArg1, EnvSpecNone) ) | (UnsignedToLongWord, Constnt(v, _)) => ( reprocess := true; (Constnt(toMachineWord(Word.toLargeWord(RunCall.unsafeCast v)), []), decArg1, EnvSpecNone) ) | (UnsignedToLongWord, genArg1) => (* Add the operation as the special entry. It can then be recognised by LongWordToTagged. *) (Unary{oper=oper, arg1=genArg1}, decArg1, EnvSpecUnary(UnsignedToLongWord, genArg1)) | _ => (Unary{oper=oper, arg1=genArg1}, decArg1, EnvSpecNone) end and simpBinary(oper, arg1, arg2, context as {reprocess, ...}, tailDecs) = let val (genArg1, decArg1, _ (*specArg1*)) = simpSpecial(arg1, context, tailDecs) val (genArg2, decArgs, _ (*specArg2*)) = simpSpecial(arg2, context, decArg1) in case (oper, genArg1, genArg2) of (WordComparison{test, isSigned}, Constnt(v1, _), Constnt(v2, _)) => if (case test of TestEqual => false | _ => not(isShort v1) orelse not(isShort v2)) then (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) else let val () = reprocess := true val testResult = case (test, isSigned) of (* TestEqual can be applied to addresses. *) (TestEqual, _) => RunCall.pointerEq(v1, v2) | (TestLess, false) => toShort v1 < toShort v2 | (TestLessEqual, false) => toShort v1 <= toShort v2 | (TestGreater, false) => toShort v1 > toShort v2 | (TestGreaterEqual, false) => toShort v1 >= toShort v2 | (TestLess, true) => toFix v1 < toFix v2 | (TestLessEqual, true) => toFix v1 <= toFix v2 | (TestGreater, true) => toFix v1 > toFix v2 | (TestGreaterEqual, true) => toFix v1 >= toFix v2 in (if testResult then CodeTrue else CodeFalse, decArgs, EnvSpecNone) end | (FixedPrecisionArith arithOp, Constnt(v1, _), Constnt(v2, _)) => if not(isShort v1) orelse not(isShort v2) then (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) else let val () = reprocess := true val v1S = toFix v1 and v2S = toFix v2 fun asConstnt v = Constnt(toMachineWord v, []) val raiseOverflow = Raise(Constnt(toMachineWord Overflow, [])) val raiseDiv = Raise(Constnt(toMachineWord Div, [])) (* ?? There's usually an explicit test. *) val resultCode = case arithOp of ArithAdd => (asConstnt(v1S+v2S) handle Overflow => raiseOverflow) | ArithSub => (asConstnt(v1S-v2S) handle Overflow => raiseOverflow) | ArithMult => (asConstnt(v1S*v2S) handle Overflow => raiseOverflow) | ArithQuot => (asConstnt(FixedInt.quot(v1S,v2S)) handle Overflow => raiseOverflow | Div => raiseDiv) | ArithRem => (asConstnt(FixedInt.rem(v1S,v2S)) handle Overflow => raiseOverflow | Div => raiseDiv) | ArithDiv => (asConstnt(FixedInt.div(v1S,v2S)) handle Overflow => raiseOverflow | Div => raiseDiv) | ArithMod => (asConstnt(FixedInt.mod(v1S,v2S)) handle Overflow => raiseOverflow | Div => raiseDiv) in (resultCode, decArgs, EnvSpecNone) end (* Addition and subtraction of zero. These can arise as a result of inline expansion of more general functions. *) | (FixedPrecisionArith ArithAdd, arg1, Constnt(v2, _)) => if isShort v2 andalso toShort v2 = 0w0 then (arg1, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (FixedPrecisionArith ArithAdd, Constnt(v1, _), arg2) => if isShort v1 andalso toShort v1 = 0w0 then (arg2, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (FixedPrecisionArith ArithSub, arg1, Constnt(v2, _)) => if isShort v2 andalso toShort v2 = 0w0 then (arg1, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (WordArith arithOp, Constnt(v1, _), Constnt(v2, _)) => if not(isShort v1) orelse not(isShort v2) then (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) else let val () = reprocess := true val v1S = toShort v1 and v2S = toShort v2 fun asConstnt v = Constnt(toMachineWord v, []) val resultCode = case arithOp of ArithAdd => asConstnt(v1S+v2S) | ArithSub => asConstnt(v1S-v2S) | ArithMult => asConstnt(v1S*v2S) | ArithQuot => raise InternalError "WordArith: ArithQuot" | ArithRem => raise InternalError "WordArith: ArithRem" | ArithDiv => asConstnt(v1S div v2S) | ArithMod => asConstnt(v1S mod v2S) in (resultCode, decArgs, EnvSpecNone) end | (WordArith ArithAdd, arg1, Constnt(v2, _)) => if isShort v2 andalso toShort v2 = 0w0 then (arg1, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (WordArith ArithAdd, Constnt(v1, _), arg2) => if isShort v1 andalso toShort v1 = 0w0 then (arg2, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (WordArith ArithSub, arg1, Constnt(v2, _)) => if isShort v2 andalso toShort v2 = 0w0 then (arg1, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (WordLogical logOp, Constnt(v1, _), Constnt(v2, _)) => if not(isShort v1) orelse not(isShort v2) then (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) else let val () = reprocess := true val v1S = toShort v1 and v2S = toShort v2 fun asConstnt v = Constnt(toMachineWord v, []) val resultCode = case logOp of LogicalAnd => asConstnt(Word.andb(v1S,v2S)) | LogicalOr => asConstnt(Word.orb(v1S,v2S)) | LogicalXor => asConstnt(Word.xorb(v1S,v2S)) in (resultCode, decArgs, EnvSpecNone) end | (WordLogical logop, arg1, arg2 as Constnt(v2, _)) => (* Return the zero if we are anding with zero otherwise the original arg *) if isShort v2 andalso toShort v2 = 0w0 then (case logop of LogicalAnd => arg2 | _ => arg1, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) | (WordLogical logop, Constnt(v1, _), arg2) => if isShort v1 andalso toShort v1 = 0w0 then (case logop of LogicalAnd => arg2 | _ => arg2, decArgs, EnvSpecNone) else (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) (* TODO: Constant folding of shifts. *) | _ => (Binary{oper=oper, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) end (* Arbitrary precision operations. This is a sort of mixture of a built-in and a conditional. *) and simpArbitraryCompare(TestEqual, shortCond, arg1, arg2, longCall, context, tailDecs) = (* Equality is a special case and is only there to ensure that it is not accidentally converted into an indexed case further down. We must leave it as it is. *) let val (genCond, decCond, _ (*specArg1*)) = simpSpecial(shortCond, context, tailDecs) val (genArg1, decArg1, _ (*specArg1*)) = simpSpecial(arg1, context, decCond) val (genArg2, decArgs, _ (*specArg2*)) = simpSpecial(arg2, context, decArg1) in (Arbitrary{oper=ArbCompare TestEqual, shortCond=genCond, arg1=genArg1, arg2=genArg2, longCall=simplify(longCall, context)}, decArgs, EnvSpecNone) end | simpArbitraryCompare(test, shortCond, arg1, arg2, longCall, context as {reprocess, ...}, tailDecs) = let val (genCond, decCond, _ (*specArg1*)) = simpSpecial(shortCond, context, tailDecs) val (genArg1, decArg1, _ (*specArg1*)) = simpSpecial(arg1, context, decCond) val (genArg2, decArgs, _ (*specArg2*)) = simpSpecial(arg2, context, decArg1) val posFlags = Address.F_bytes and negFlags = Word8.orb(Address.F_bytes, Address.F_negative) in (* Fold any constant/constant operations but more importantly, if we have variable/constant operations where the constant is short we can avoid using the full arbitrary precision call by just looking at the sign bit. *) case (genCond, genArg1, genArg2) of (Constnt(c1, _), _, _) => if isShort c1 andalso toShort c1 = 0w0 then (* One argument is definitely long - generate the long form. *) (Binary{oper=WordComparison{test=test, isSigned=true}, arg1=simplify(longCall, context), arg2=CodeZero}, decArgs, EnvSpecNone) else (* Both arguments are short. That should mean they're constants. *) (Binary{oper=WordComparison{test=test, isSigned=true}, arg1=genArg1, arg2=genArg2}, decArgs, EnvSpecNone) before reprocess := true | (_, genArg1, cArg2 as Constnt _) => let (* The constant must be short otherwise the test would be false. *) val isNeg = case test of TestLess => true | TestLessEqual => true | _ => false (* Translate i < c into if isShort i then toShort i < c else isNegative i *) val newCode = Cond(Unary{oper=BuiltIns.IsTaggedValue, arg1=genArg1}, Binary { oper = BuiltIns.WordComparison{test=test, isSigned=true}, arg1 = genArg1, arg2 = cArg2 }, Binary { oper = BuiltIns.WordComparison{test=TestEqual, isSigned=false}, arg1=Unary { oper = MemoryCellFlags, arg1=genArg1 }, arg2=Constnt(toMachineWord(if isNeg then negFlags else posFlags), [])} ) in (newCode, decArgs, EnvSpecNone) end | (_, cArg1 as Constnt _, genArg2) => let (* We're testing c < i so the test is if isShort i then c < toShort i else isPositive i *) val isPos = case test of TestLess => true | TestLessEqual => true | _ => false val newCode = Cond(Unary{oper=BuiltIns.IsTaggedValue, arg1=genArg2}, Binary { oper = BuiltIns.WordComparison{test=test, isSigned=true}, arg1 = cArg1, arg2 = genArg2 }, Binary { oper = BuiltIns.WordComparison{test=TestEqual, isSigned=false}, arg1=Unary { oper = MemoryCellFlags, arg1=genArg2 }, arg2=Constnt(toMachineWord(if isPos then posFlags else negFlags), [])} ) in (newCode, decArgs, EnvSpecNone) end | _ => (Arbitrary{oper=ArbCompare test, shortCond=genCond, arg1=genArg1, arg2=genArg2, longCall=simplify(longCall, context)}, decArgs, EnvSpecNone) end and simpArbitraryArith(arith, shortCond, arg1, arg2, longCall, context, tailDecs) = let val (genCond, decCond, _ (*specArg1*)) = simpSpecial(shortCond, context, tailDecs) val (genArg1, decArg1, _ (*specArg1*)) = simpSpecial(arg1, context, decCond) val (genArg2, decArgs, _ (*specArg2*)) = simpSpecial(arg2, context, decArg1) in case genCond of Constnt(c1, _) => if isShort c1 andalso toShort c1 = 0w0 then (* One argument is definitely long - generate the long form. *) (simplify(longCall, context), decArgs, EnvSpecNone) else (* If we know they're both short they must be constants and we could fold them. N.B. We can still get an overflow. *) (Arbitrary{oper=ArbArith arith, shortCond=genCond, arg1=genArg1, arg2=genArg2, longCall=simplify(longCall, context)}, decArgs, EnvSpecNone) | _ => (Arbitrary{oper=ArbArith arith, shortCond=genCond, arg1=genArg1, arg2=genArg2, longCall=simplify(longCall, context)}, decArgs, EnvSpecNone) end and simpAllocateWordMemory(numWords, flags, initial, context, tailDecs) = let val (genArg1, decArg1, _ (*specArg1*)) = simpSpecial(numWords, context, tailDecs) val (genArg2, decArg2, _ (*specArg2*)) = simpSpecial(flags, context, decArg1) val (genArg3, decArg3, _ (*specArg3*)) = simpSpecial(initial, context, decArg2) in (AllocateWordMemory{numWords=genArg1, flags=genArg2, initial=genArg3}, decArg3, EnvSpecNone) end (* Loads, stores and block operations use address values. The index value is initially an arbitrary code tree but we can recognise common cases of constant index values or where a constant has been added to the index. TODO: If these are C memory moves we can also look at the base address. The base address for C memory operations is a LargeWord.word value i.e. the address is contained in a box. The base addresses for ML memory moves is an ML address i.e. unboxed. *) and simpAddress({base, index=NONE, offset}, _, context) = let val (genBase, decBase, _ (*specBase*)) = simpSpecial(base, context, RevList[]) in ({base=genBase, index=NONE, offset=offset}, decBase) end | simpAddress({base, index=SOME index, offset}, multiplier, context) = let val (genBase, RevList decBase, _) = simpSpecial(base, context, RevList[]) val (genIndex, RevList decIndex, _ (* specIndex *)) = simpSpecial(index, context, RevList[]) val (newIndex, newOffset) = case genIndex of Constnt(indexOffset, _) => if isShort indexOffset then (NONE, offset + toShort indexOffset * multiplier) else (SOME genIndex, offset) | _ => (SOME genIndex, offset) in ({base=genBase, index=newIndex, offset=newOffset}, RevList(decIndex @ decBase)) end (* (* A built-in function. We can call certain built-ins immediately if the arguments are constants. *) and simpBuiltIn(rtsCallNo, argList, context as { reprocess, ...}) = let val copiedArgs = map (fn arg => simpSpecial(arg, context)) argList open RuntimeCalls (* When checking for a constant we need to check that there are no bindings. They could have side-effects. *) fun isAConstant(Constnt _, [], _) = true | isAConstant _ = false in (* If the function is an RTS call that is safe to evaluate immediately and all the arguments are constants evaluate it now. *) if earlyRtsCall rtsCallNo andalso List.all isAConstant copiedArgs then let val () = reprocess := true exception Interrupt = Thread.Thread.Interrupt (* Turn the arguments into a vector. *) val argVector = case makeConstVal(mkTuple(List.map specialToGeneral copiedArgs)) of Constnt(w, _) => w | _ => raise InternalError "makeConstVal: Not constant" (* Call the function. If it raises an exception (e.g. divide by zero) generate code to raise the exception at run-time. We don't do that for Interrupt which we assume only arises by user interaction and not as a result of executing the code so we reraise that exception immediately. *) val ioOp : int -> machineWord = RunCall.run_call1 RuntimeCalls.POLY_SYS_io_operation (* We need callcode_tupled here because we pass the arguments as a tuple but the RTS functions we're calling expect arguments in registers or on the stack. *) val call: (address * machineWord) -> machineWord = RunCall.run_call1 RuntimeCalls.POLY_SYS_callcode_tupled val code = Constnt (call(toAddress(ioOp rtsCallNo), argVector), []) handle exn as Interrupt => raise exn (* Must not handle this *) | exn => Raise (Constnt(toMachineWord exn, [])) in (code, [], EnvSpecNone) end (* We can optimise certain built-ins in combination with others. If we have POLY_SYS_unsigned_to_longword combined with POLY_SYS_longword_to_tagged we can eliminate both. This can occur in cases such as Word.fromLargeWord o Word8.toLargeWord. If we have POLY_SYS_cmem_load_X functions where the address is formed by adding a constant to an address we can move the addend into the load instruction. *) (* TODO: Could we also have POLY_SYS_signed_to_longword here? *) else if rtsCallNo = POLY_SYS_longword_to_tagged andalso (case copiedArgs of [(_, _, EnvSpecBuiltIn(r, _))] => r = POLY_SYS_unsigned_to_longword | _ => false) then let val arg = (* Get the argument of the argument. *) case copiedArgs of [(_, _, EnvSpecBuiltIn(_, [arg]))] => arg | _ => raise Bind in (arg, [], EnvSpecNone) end else if (rtsCallNo = POLY_SYS_cmem_load_8 orelse rtsCallNo = POLY_SYS_cmem_load_16 orelse rtsCallNo = POLY_SYS_cmem_load_32 orelse rtsCallNo = POLY_SYS_cmem_load_64 orelse rtsCallNo = POLY_SYS_cmem_store_8 orelse rtsCallNo = POLY_SYS_cmem_store_16 orelse rtsCallNo = POLY_SYS_cmem_store_32 orelse rtsCallNo = POLY_SYS_cmem_store_64) andalso (* Check if the first argument is an addition. The second should be a constant. If the addend is a constant it will be a large integer i.e. the address of a byte segment. *) let (* Check that we have a valid value to add to a large word. The cmem_load/store values sign extend their arguments so we use toLargeWordX here. *) fun isAcceptableOffset c = if isShort c (* Shouldn't occur. *) then false else let val l: LargeWord.word = RunCall.unsafeCast c in Word.toLargeWordX(Word.fromLargeWord l) = l end in case copiedArgs of (_, _, EnvSpecBuiltIn(r, args)) :: (Constnt _, _, _) :: _ => r = POLY_SYS_plus_longword andalso (case args of (* If they were both constants we'd have folded them. *) [Constnt(c, _), _] => isAcceptableOffset c | [_, Constnt(c, _)] => isAcceptableOffset c | _ => false) | _ => false end then let (* We have a load or store with an added constant. *) val (base, offset) = case copiedArgs of (_, _, EnvSpecBuiltIn(_, [Constnt(offset, _), base])) :: (Constnt(existing, _), _, _) :: _ => (base, Word.fromLargeWord(RunCall.unsafeCast offset) + toShort existing) | (_, _, EnvSpecBuiltIn(_, [base, Constnt(offset, _)])) :: (Constnt(existing, _), _, _) :: _ => (base, Word.fromLargeWord(RunCall.unsafeCast offset) + toShort existing) | _ => raise Bind val newDecs = List.map(fn h => makeNewDecl(h, context)) copiedArgs val genArgs = List.map(fn ((g, _), _) => envGeneralToCodetree g) newDecs val preDecs = List.foldr (op @) [] (List.map #2 newDecs) val gen = BuiltIn(rtsCallNo, base :: Constnt(toMachineWord offset, []) :: List.drop(genArgs, 2)) in (gen, preDecs, EnvSpecNone) end else let (* Create bindings for the arguments. This ensures that any side-effects in the evaluation of the arguments are performed in the correct order even if the application of the built-in itself is applicative. The new arguments are either loads or constants which are applicative. *) val newDecs = List.map(fn h => makeNewDecl(h, context)) copiedArgs val genArgs = List.map(fn ((g, _), _) => envGeneralToCodetree g) newDecs val preDecs = List.foldr (op @) [] (List.map #2 newDecs) val gen = BuiltIn(rtsCallNo, genArgs) val spec = if reorderable gen then EnvSpecBuiltIn(rtsCallNo, genArgs) else EnvSpecNone in (gen, preDecs, spec) end end *) and simpIfThenElse(condTest, condThen, condElse, context, tailDecs) = (* If-then-else. The main simplification is if we have constants in the test or in both the arms. *) let val word0 = toMachineWord 0 val word1 = toMachineWord 1 val False = word0 val True = word1 in case simpSpecial(condTest, context, tailDecs) of (* If the test is a constant we can return the appropriate arm and ignore the other. *) (Constnt(testResult, _), bindings, _) => let val arm = if wordEq (testResult, False) (* false - return else-part *) then condElse (* if false then x else y == y *) (* if true then x else y == x *) else condThen in simpSpecial(arm, context, bindings) end | (testGen, testbindings as RevList testBList, _) => let fun mkNot arg = Unary{oper=BuiltIns.NotBoolean, arg1=arg} in case (simpSpecial(condThen, context, RevList[]), simpSpecial(condElse, context, RevList[])) of ((thenConst as Constnt(thenVal, _), RevList [], _), (elseConst as Constnt(elseVal, _), RevList [], _)) => (* Both arms return constants. This situation can arise in situations where we have andalso/orelse where the second "argument" has been reduced to a constant. *) if wordEq (thenVal, elseVal) then (* If the test has a side-effect we have to do it otherwise we can remove it. If we're in a nested andalso/orelse that may mean we can simplify the next level out. *) (thenConst (* or elseConst *), if sideEffectFree testGen then testbindings else RevList(NullBinding testGen :: testBList), EnvSpecNone) (* if x then true else false == x *) else if wordEq (thenVal, True) andalso wordEq (elseVal, False) then (testGen, testbindings, EnvSpecNone) (* if x then false else true == not x *) else if wordEq (thenVal, False) andalso wordEq (elseVal, True) then (mkNot testGen, testbindings, EnvSpecNone) else (* can't optimise *) (Cond (testGen, thenConst, elseConst), testbindings, EnvSpecNone) (* Rewrite "if x then raise y else z" into "(if x then raise y else (); z)" The advantage is that any tuples in z are lifted outside the "if". *) | (thenPart as (Raise _, _:revlist, _), (elsePart, RevList elseBindings, elseSpec)) => (* then-part raises an exception *) (elsePart, RevList(elseBindings @ NullBinding(Cond (testGen, specialToGeneral thenPart, CodeZero)) :: testBList), elseSpec) | ((thenPart, RevList thenBindings, thenSpec), elsePart as (Raise _, _, _)) => (* else part raises an exception *) (thenPart, RevList(thenBindings @ NullBinding(Cond (testGen, CodeZero, specialToGeneral elsePart)) :: testBList), thenSpec) | (thenPart, elsePart) => (Cond (testGen, specialToGeneral thenPart, specialToGeneral elsePart), testbindings, EnvSpecNone) end end (* Tuple construction. Tuples are also used for datatypes and structures (i.e. modules) *) and simpTuple(entries, isVariant, context, tailDecs) = (* The main reason for optimising record constructions is that they appear as tuples in ML. We try to ensure that loads from locally created tuples do not involve indirecting from the tuple but can get the value which was put into the tuple directly. If that is successful we may find that the tuple is never used directly so the use-count mechanism will ensure it is never created. *) let val tupleSize = List.length entries (* The record construction is treated as a block of local declarations so that any expressions which might have side-effects are done exactly once. *) (* We thread the bindings through here to avoid having to append the result. *) fun processFields([], bindings) = ([], bindings) | processFields(field::fields, bindings) = let val (thisField, newBindings) = makeNewDecl(simpSpecial(field, context, bindings), context) val (otherFields, resBindings) = processFields(fields, newBindings) in (thisField::otherFields, resBindings) end val (fieldEntries, allBindings) = processFields(entries, tailDecs) (* Make sure we include any inline code in the result. If this tuple is being "exported" we will lose the "special" part. *) fun envResToCodetree(EnvGenLoad(ext), _) = Extract ext | envResToCodetree(EnvGenConst(w, p), s) = Constnt(w, setInline s p) val generalFields = List.map envResToCodetree fieldEntries val genRec = if List.all isConstnt generalFields then makeConstVal(Tuple{ fields = generalFields, isVariant = isVariant }) else Tuple{ fields = generalFields, isVariant = isVariant } (* Get the field from the tuple if possible. If it's a variant, though, we may try to get an invalid field. See Tests/Succeed/Test167. *) fun getField addr = if addr < tupleSize then List.nth(fieldEntries, addr) else if isVariant then (EnvGenConst(toMachineWord 0, []), EnvSpecNone) else raise InternalError "getField - invalid index" val specRec = EnvSpecTuple(tupleSize, getField) in (genRec, allBindings, specRec) end and simpFieldSelect(base, offset, isVariant, context, tailDecs) = let val (genSource, decSource, specSource) = simpSpecial(base, context, tailDecs) in (* Try to do the selection now if possible. *) case specSource of EnvSpecTuple(_, recEnv) => let (* The "special" entry we've found is a tuple. That means that we are taking a field from a tuple we made earlier and so we should be able to get the original code we used when we made the tuple. That might mean the tuple is never used and we can optimise away the construction of it completely. *) val (newGen, newSpec) = recEnv offset in (envGeneralToCodetree newGen, decSource, newSpec) end | _ => (* No special case possible. If the tuple is a constant mkInd/mkVarField will do the selection immediately. *) ((if isVariant then mkVarField else mkInd) (offset, genSource), decSource, EnvSpecNone) end (* Process a SetContainer. Unlike the other simpXXX functions this is called after the arguments have been processed. We try to push the SetContainer to the leaves of the expression. *) and simpPostSetContainer(container, Tuple{fields, ...}, RevList tupleDecs, filter) = let (* Apply the filter now. *) fun select(n, hd::tl) = if n >= BoolVector.length filter then [] else if BoolVector.sub(filter, n) then hd :: select(n+1, tl) else select(n+1, tl) | select(_, []) = [] val selected = select(0, fields) (* Frequently we will have produced an indirection from the same base. These will all be bindings so we have to reverse the process. *) fun findOriginal a = List.find(fn Declar{addr, ...} => addr = a | _ => false) tupleDecs fun checkFields(last, Extract(LoadLocal a) :: tl) = ( case findOriginal a of SOME(Declar{value=Indirect{base=Extract ext, isVariant=false, offset, ...}, ...}) => ( case last of NONE => checkFields(SOME(ext, [offset]), tl) | SOME(lastExt, offsets) => (* It has to be the same base and with increasing offsets (no reordering). *) if lastExt = ext andalso offset > hd offsets then checkFields(SOME(ext, offset :: offsets), tl) else NONE ) | _ => NONE ) | checkFields(_, _ :: _) = NONE | checkFields(last, []) = last fun fieldsToFilter fields = let val maxDest = List.foldl Int.max ~1 fields val filterArray = BoolArray.array(maxDest+1, false) val _ = List.app(fn n => BoolArray.update(filterArray, n, true)) fields in BoolArray.vector filterArray end in case checkFields(NONE, selected) of SOME (ext, fields) => let val filter = fieldsToFilter fields in case ext of LoadLocal localAddr => let (* Is this a container? If it is and we're copying all of it we can replace the inner container with a binding to the outer. We have to be careful because it is possible that we may create and set the inner container, then have some bindings that do some side-effects with the inner container before then copying it to the outer container. For simplicity and to maintain the condition that the container is set in the tails we only merge the containers if it's at the end (after any "filtering"). *) val allSet = BoolVector.foldl (fn (a, t) => a andalso t) true filter fun findContainer [] = NONE | findContainer (Declar{value, ...} :: tl) = if sideEffectFree value then findContainer tl else NONE | findContainer (Container{addr, size, setter, ...} :: tl) = if localAddr = addr andalso size = BoolVector.length filter andalso allSet then SOME (setter, tl) else NONE | findContainer _ = NONE in case findContainer tupleDecs of SOME (setter, decs) => (* Put in a binding for the inner container address so the setter will set the outer container. *) mkEnv(List.rev(Declar{addr=localAddr, value=container, use=[]} :: decs), setter) | NONE => mkEnv(List.rev tupleDecs, SetContainer{container=container, tuple = Extract ext, filter=filter}) end | _ => mkEnv(List.rev tupleDecs, SetContainer{container=container, tuple = Extract ext, filter=filter}) end | NONE => mkEnv(List.rev tupleDecs, SetContainer{container=container, tuple = mkTuple selected, filter=BoolVector.tabulate(List.length selected, fn _ => true)}) end | simpPostSetContainer(container, Cond(ifpt, thenpt, elsept), RevList tupleDecs, filter) = mkEnv(List.rev tupleDecs, Cond(ifpt, simpPostSetContainer(container, thenpt, RevList [], filter), simpPostSetContainer(container, elsept, RevList [], filter))) | simpPostSetContainer(container, Newenv(envDecs, envExp), RevList tupleDecs, filter) = simpPostSetContainer(container, envExp, RevList(List.rev envDecs @ tupleDecs), filter) | simpPostSetContainer(container, BeginLoop{loop, arguments}, RevList tupleDecs, filter) = mkEnv(List.rev tupleDecs, BeginLoop{loop = simpPostSetContainer(container, loop, RevList [], filter), arguments=arguments}) | simpPostSetContainer(_, loop as Loop _, RevList tupleDecs, _) = (* If we are inside a BeginLoop we only set the container on leaves that exit the loop. Loop entries will go back to the BeginLoop so we don't add SetContainer nodes. *) mkEnv(List.rev tupleDecs, loop) | simpPostSetContainer(container, Handle{exp, handler, exPacketAddr}, RevList tupleDecs, filter) = mkEnv(List.rev tupleDecs, Handle{ exp = simpPostSetContainer(container, exp, RevList [], filter), handler = simpPostSetContainer(container, handler, RevList [], filter), exPacketAddr = exPacketAddr}) | simpPostSetContainer(container, tupleGen, RevList tupleDecs, filter) = mkEnv(List.rev tupleDecs, mkSetContainer(container, tupleGen, filter)) fun simplifier(c, numLocals) = let val localAddressAllocator = ref 0 val addrTab = Array.array(numLocals, NONE) fun lookupAddr (LoadLocal addr) = valOf(Array.sub(addrTab, addr)) | lookupAddr (env as LoadArgument _) = (EnvGenLoad env, EnvSpecNone) | lookupAddr (env as LoadRecursive) = (EnvGenLoad env, EnvSpecNone) | lookupAddr (LoadClosure _) = raise InternalError "top level reached in simplifier" and enterAddr (addr, tab) = Array.update (addrTab, addr, SOME tab) fun mkAddr () = ! localAddressAllocator before localAddressAllocator := ! localAddressAllocator + 1 val reprocess = ref false val (gen, RevList bindings, spec) = simpSpecial(c, {lookupAddr = lookupAddr, enterAddr = enterAddr, nextAddress = mkAddr, reprocess = reprocess}, RevList[]) in ((gen, List.rev bindings, spec), ! localAddressAllocator, !reprocess) end fun specialToGeneral(g, b as _ :: _, s) = mkEnv(b, specialToGeneral(g, [], s)) | specialToGeneral(Constnt(w, p), [], s) = Constnt(w, setInline s p) | specialToGeneral(g, [], _) = g structure Sharing = struct type codetree = codetree and codeBinding = codeBinding and envSpecial = envSpecial end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/BaseCodeTreeSig.sml0000644000175000017500000002044413204034553022776 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2008-2010, 2013, 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Signature for the basic codetree types and operations. *) signature BaseCodeTreeSig = sig type machineWord = Address.machineWord datatype inlineStatus = NonInline | Inline datatype argumentType = GeneralType | FloatingPtType datatype loadStoreKind = LoadStoreMLWord of {isImmutable: bool} (* Load/Store an ML word in an ML word cell. *) | LoadStoreMLByte of {isImmutable: bool} (* Load/Store a byte, tagging and untagging as appropriate, in an ML byte cell. *) | LoadStoreC8 (* Load/Store C values - The base address is a boxed SysWord.word value. *) | LoadStoreC16 | LoadStoreC32 | LoadStoreC64 | LoadStoreCFloat | LoadStoreCDouble | LoadStoreUntaggedUnsigned datatype blockOpKind = BlockOpMove of {isByteMove: bool} | BlockOpEqualByte | BlockOpCompareByte structure BuiltIns: BUILTINS datatype arbPrecisionOps = ArbCompare of BuiltIns.testConditions | ArbArith of BuiltIns.arithmeticOperations (* How variables are used. Added and examined by the optimisation pass. *) datatype codeUse = UseGeneral (* Used in some other context. *) | UseExport (* Exported i.e. the result of a top-level binding. *) | UseApply of codeUse list * codetree list (* Applied as a function - the list is where the result goes, the codetree list is the code that was used for each argument. *) | UseField of int * codeUse list (* Selected as a field - the list is where the result goes *) and codetree = Newenv of codeBinding list * codetree (* Set of bindings with an expression. *) | Constnt of machineWord * Universal.universal list (* Load a constant *) | Extract of loadForm | Indirect of {base: codetree, offset: int, isVariant: bool } (* Load a value from a heap record *) | Eval of (* Evaluate a function with an argument list. *) { function: codetree, argList: (codetree * argumentType) list, resultType: argumentType } (* Built-in functions. *) | Unary of {oper: BuiltIns.unaryOps, arg1: codetree} | Binary of {oper: BuiltIns.binaryOps, arg1: codetree, arg2: codetree} (* Arbitrary precision operations. This combines some conditionals with the operation. shortCond is the condition that must be satisfied for the short precision operation to be executed. longCall is called if either argument is long or the evaluation overflows. *) | Arbitrary of {oper: arbPrecisionOps, shortCond: codetree, arg1: codetree, arg2: codetree, longCall: codetree} | Lambda of lambdaForm (* Lambda expressions. *) | Cond of codetree * codetree * codetree (* If-statement *) | BeginLoop of (* Start of tail-recursive inline function. *) { loop: codetree, arguments: (simpleBinding * argumentType) list } | Loop of (codetree * argumentType) list (* Jump back to start of tail-recursive function. *) | Raise of codetree (* Raise an exception *) | Handle of (* Exception handler. *) { exp: codetree, handler: codetree, exPacketAddr: int } | Tuple of { fields: codetree list, isVariant: bool } (* Tuples and datatypes *) | SetContainer of { container: codetree, tuple: codetree, filter: BoolVector.vector} (* Copy a tuple to a container. *) | TagTest of { test: codetree, tag: word, maxTag: word } | LoadOperation of { kind: loadStoreKind, address: codeAddress } | StoreOperation of { kind: loadStoreKind, address: codeAddress, value: codetree } | BlockOperation of { kind: blockOpKind, sourceLeft: codeAddress, destRight: codeAddress, length: codetree } | GetThreadId | AllocateWordMemory of {numWords: codetree, flags: codetree, initial: codetree} and codeBinding = Declar of simpleBinding (* Make a local declaration or push an argument *) | RecDecs of { addr: int, lambda: lambdaForm, use: codeUse list } list (* Set of mutually recursive declarations. *) | NullBinding of codetree (* Just evaluate the expression and discard the result. *) | Container of { addr: int, use: codeUse list, size: int, setter: codetree } and loadForm = LoadArgument of int | LoadLocal of int | LoadClosure of int | LoadRecursive (* When we look up an entry in the environment we get a pair of a "general" value, which is either a constant or a load, and an optional special value, which is either a tuple or an inline function. Tuple entries are functions from an integer offset to one of these pairs; inline function entries are a lambda together with a map for the free variables. *) and envGeneral = EnvGenLoad of loadForm | EnvGenConst of machineWord * Universal.universal list and envSpecial = EnvSpecNone | EnvSpecTuple of int * (int -> envGeneral * envSpecial) | EnvSpecInlineFunction of lambdaForm * (int -> envGeneral * envSpecial) | EnvSpecUnary of BuiltIns.unaryOps * codetree | EnvSpecBinary of BuiltIns.binaryOps * codetree * codetree withtype simpleBinding = { (* Declare a value or push an argument. *) value: codetree, addr: int, use: codeUse list } and lambdaForm = { (* Lambda expressions. *) body : codetree, (* The body of the function. *) isInline : inlineStatus, (* Whether it's inline - modified by optimiser *) name : string, (* Text name for profiling etc. *) closure : loadForm list, (* List of items for closure. *) argTypes : (argumentType * codeUse list) list, (* "Types" and usage of arguments. *) resultType : argumentType, (* Result "type" of the function. *) localCount : int, (* Maximum (+1) declaration address for locals. *) recUse : codeUse list (* Recursive use of the function *) } and codeAddress = {base: codetree, index: codetree option, offset: word} type pretty val pretty : codetree -> pretty val mapCodetree: (codetree -> codetree option) -> codetree -> codetree datatype foldControl = FOLD_DESCEND | FOLD_DONT_DESCEND val foldtree: (codetree * 'a -> 'a * foldControl) -> 'a -> codetree -> 'a structure CodeTags: sig val tupleTag: Universal.universal list list Universal.tag val inlineCodeTag: envSpecial Universal.tag val mergeTupleProps: Universal.universal list * Universal.universal list -> Universal.universal list end structure Sharing: sig type codetree = codetree and pretty = pretty and inlineStatus = inlineStatus and argumentType = argumentType and loadStoreKind = loadStoreKind and blockOpKind = blockOpKind and codeBinding = codeBinding and simpleBinding = simpleBinding and loadForm = loadForm and envGeneral = envGeneral and envSpecial = envSpecial and codeUse = codeUse and foldControl = foldControl and unaryOps = BuiltIns.unaryOps and binaryOps = BuiltIns.binaryOps and arbPrecisionOps = arbPrecisionOps and testConditions = BuiltIns.testConditions and arithmeticOperations = BuiltIns.arithmeticOperations end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/CodegenTreeSig.sml0000644000175000017500000000317313204034553022675 0ustar daviddavid(* Copyright (c) 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CodegenTreeSig = sig type codetree and inlineStatus and loadForm and argumentType and codeUse type lambdaForm = { body : codetree, isInline : inlineStatus, name : string, closure : loadForm list, argTypes : (argumentType * codeUse list) list, resultType : argumentType, localCount : int, recUse : codeUse list } type machineWord = Address.machineWord val codeGenerate: lambdaForm * Universal.universal list * Address.address -> Universal.universal list structure Foreign: FOREIGNCALLSIG structure Sharing : sig type codetree = codetree and inlineStatus = inlineStatus and loadForm = loadForm and argumentType = argumentType and codeUse = codeUse end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/GCode.interpreted.ML0000644000175000017500000000150013204034553023060 0ustar daviddavid(* Copyright (c) 2013 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure GCode = ByteCode; polyml-5.7.1/mlsource/MLCompiler/CodeTree/BackendIntermediateCode.sml0000644000175000017500000006275113204034553024532 0ustar daviddavid(* Copyright (c) 2012, 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Intermediate code tree for the back end of the compiler. *) structure BackendIntermediateCode: BackendIntermediateCodeSig = struct open Address structure BuiltIns = struct datatype testConditions = TestEqual | TestLess | TestLessEqual | TestGreater | TestGreaterEqual datatype arithmeticOperations = ArithAdd | ArithSub | ArithMult | ArithQuot | ArithRem | ArithDiv | ArithMod datatype logicalOperations = LogicalAnd | LogicalOr | LogicalXor datatype shiftOperations = ShiftLeft | ShiftRightLogical | ShiftRightArithmetic datatype unaryOps = NotBoolean | IsTaggedValue | MemoryCellLength | MemoryCellFlags | ClearMutableFlag | AtomicIncrement | AtomicDecrement | AtomicReset | LongWordToTagged | SignedToLongWord | UnsignedToLongWord | RealAbs | RealNeg | FloatFixedInt and binaryOps = WordComparison of { test: testConditions, isSigned: bool } | FixedPrecisionArith of arithmeticOperations | WordArith of arithmeticOperations | WordLogical of logicalOperations | WordShift of shiftOperations | AllocateByteMemory | LargeWordComparison of testConditions | LargeWordArith of arithmeticOperations | LargeWordLogical of logicalOperations | LargeWordShift of shiftOperations | RealComparison of testConditions | RealArith of arithmeticOperations fun unaryRepr NotBoolean = "NotBoolean" | unaryRepr IsTaggedValue = "IsTaggedValue" | unaryRepr MemoryCellLength = "MemoryCellLength" | unaryRepr MemoryCellFlags = "MemoryCellFlags" | unaryRepr ClearMutableFlag = "ClearMutableFlag" | unaryRepr AtomicIncrement = "AtomicIncrement" | unaryRepr AtomicDecrement = "AtomicDecrement" | unaryRepr AtomicReset = "AtomicReset" | unaryRepr LongWordToTagged = "LongWordToTagged" | unaryRepr SignedToLongWord = "SignedToLongWord" | unaryRepr UnsignedToLongWord = "UnsignedToLongWord" | unaryRepr RealAbs = "RealAbs" | unaryRepr RealNeg = "RealNeg" | unaryRepr FloatFixedInt = "FloatFixedInt" and binaryRepr (WordComparison{test, isSigned}) = "Test" ^ (testRepr test) ^ (if isSigned then "Signed" else "Unsigned") | binaryRepr (FixedPrecisionArith arithOp) = (arithRepr arithOp) ^ "Fixed" | binaryRepr (WordArith arithOp) = (arithRepr arithOp) ^ "Word" | binaryRepr (WordLogical logOp) = (logicRepr logOp) ^ "Word" | binaryRepr (WordShift shiftOp) = (shiftRepr shiftOp) ^ "Word" | binaryRepr AllocateByteMemory = "AllocateByteMemory" | binaryRepr (LargeWordComparison test) = "Test" ^ (testRepr test) ^ "LargeWord" | binaryRepr (LargeWordArith arithOp) = (arithRepr arithOp) ^ "LargeWord" | binaryRepr (LargeWordLogical logOp) = (logicRepr logOp) ^ "LargeWord" | binaryRepr (LargeWordShift shiftOp) = (shiftRepr shiftOp) ^ "LargeWord" | binaryRepr (RealComparison test) = "Test" ^ (testRepr test) ^ "Real" | binaryRepr (RealArith arithOp) = (arithRepr arithOp) ^ "Real" and testRepr TestEqual = "Equal" | testRepr TestLess = "Less" | testRepr TestLessEqual = "LessEqual" | testRepr TestGreater = "Greater" | testRepr TestGreaterEqual = "GreaterEqual" and arithRepr ArithAdd = "Add" | arithRepr ArithSub = "Sub" | arithRepr ArithMult = "Mult" | arithRepr ArithQuot = "Quot" | arithRepr ArithRem = "Rem" | arithRepr ArithDiv = "Div" | arithRepr ArithMod = "Mod" and logicRepr LogicalAnd = "And" | logicRepr LogicalOr = "Or" | logicRepr LogicalXor = "Xor" and shiftRepr ShiftLeft = "Left" | shiftRepr ShiftRightLogical = "RightLogical" | shiftRepr ShiftRightArithmetic = "RightArithmetic" end datatype argumentType = GeneralType | FloatingPtType datatype backendIC = BICNewenv of bicCodeBinding list * backendIC (* Set of bindings with an expression. *) | BICConstnt of machineWord * Universal.universal list (* Load a constant *) | BICExtract of bicLoadForm (* Get a local variable, an argument or a closure value *) | BICField of {base: backendIC, offset: int } (* Load a field from a tuple or record *) | BICEval of (* Evaluate a function with an argument list. *) { function: backendIC, argList: (backendIC * argumentType) list, resultType: argumentType } (* Built-in functions. *) | BICUnary of {oper: BuiltIns.unaryOps, arg1: backendIC} | BICBinary of {oper: BuiltIns.binaryOps, arg1: backendIC, arg2: backendIC} | BICArbitrary of {oper: BuiltIns.arithmeticOperations, shortCond: backendIC, arg1: backendIC, arg2: backendIC, longCall: backendIC} | BICLambda of bicLambdaForm (* Lambda expressions. *) | BICCond of backendIC * backendIC * backendIC (* If-then-else expression *) | BICCase of (* Case expressions *) { cases : backendIC option list, (* NONE means "jump to the default". *) test : backendIC, default : backendIC, isExhaustive: bool, firstIndex: word } | BICBeginLoop of (* Start of tail-recursive inline function. *) { loop: backendIC, arguments: (bicSimpleBinding * argumentType) list } | BICLoop of (backendIC * argumentType) list (* Jump back to start of tail-recursive function. *) | BICRaise of backendIC (* Raise an exception *) | BICHandle of (* Exception handler. *) { exp: backendIC, handler: backendIC, exPacketAddr: int } | BICTuple of backendIC list (* Tuple *) | BICSetContainer of (* Copy a tuple to a container. *) { container: backendIC, tuple: backendIC, filter: BoolVector.vector } | BICTagTest of { test: backendIC, tag: word, maxTag: word } | BICLoadOperation of { kind: loadStoreKind, address: bicAddress } | BICStoreOperation of { kind: loadStoreKind, address: bicAddress, value: backendIC } | BICBlockOperation of { kind: blockOpKind, sourceLeft: bicAddress, destRight: bicAddress, length: backendIC } | BICGetThreadId | BICAllocateWordMemory of {numWords: backendIC, flags: backendIC, initial: backendIC} and bicCodeBinding = BICDeclar of bicSimpleBinding (* Make a local declaration or push an argument *) | BICRecDecs of { addr: int, lambda: bicLambdaForm } list (* Set of mutually recursive declarations. *) | BICNullBinding of backendIC (* Just evaluate the expression and discard the result. *) | BICDecContainer of { addr: int, size: int } (* Create a container for a tuple on the stack. *) and caseType = CaseWord (* Word or fixed-precision integer. *) | CaseTag of word and bicLoadForm = BICLoadLocal of int (* Local binding *) | BICLoadArgument of int (* Argument - 0 is first arg etc.*) | BICLoadClosure of int (* Closure - 0 is first closure item etc *) | BICLoadRecursive (* Recursive call *) and loadStoreKind = LoadStoreMLWord of {isImmutable: bool} (* Load/Store an ML word in an ML word cell. *) | LoadStoreMLByte of {isImmutable: bool} (* Load/Store a byte, tagging and untagging as appropriate, in an ML byte cell. *) | LoadStoreC8 (* Load/Store C values - The base address is a boxed SysWord.word value. *) | LoadStoreC16 | LoadStoreC32 | LoadStoreC64 | LoadStoreCFloat | LoadStoreCDouble | LoadStoreUntaggedUnsigned and blockOpKind = BlockOpMove of {isByteMove: bool} | BlockOpEqualByte | BlockOpCompareByte withtype bicSimpleBinding = { (* Declare a value or push an argument. *) value: backendIC, addr: int } and bicLambdaForm = { (* Lambda expressions. *) body : backendIC, name : string, closure : bicLoadForm list, argTypes : argumentType list, resultType : argumentType, localCount : int, heapClosure : bool } and bicAddress = (* Address form used in loads, store and block operations. The base is an ML address if this is to/from ML memory or a (boxed) SysWord.word if it is to/from C memory. The index is a value in units of the size of the item being loaded/stored and the offset is always in bytes. *) {base: backendIC, index: backendIC option, offset: word} structure CodeTags = struct open Universal val tupleTag: universal list list tag = tag() fun splitProps _ [] = (NONE, []) | splitProps tag (hd::tl) = if Universal.tagIs tag hd then (SOME hd, tl) else let val (p, l) = splitProps tag tl in (p, hd :: l) end fun mergeTupleProps(p, []) = p | mergeTupleProps([], p) = p | mergeTupleProps(m, n) = ( case (splitProps tupleTag m, splitProps tupleTag n) of ((SOME mp, ml), (SOME np, nl)) => let val mpl = Universal.tagProject tupleTag mp and npl = Universal.tagProject tupleTag np val merge = ListPair.mapEq mergeTupleProps (mpl, npl) in Universal.tagInject tupleTag merge :: (ml @ nl) end | _ => m @ n ) end fun loadStoreKindRepr(LoadStoreMLWord {isImmutable=true}) = "MLWordImmutable" | loadStoreKindRepr(LoadStoreMLWord {isImmutable=false}) = "MLWord" | loadStoreKindRepr(LoadStoreMLByte {isImmutable=true}) = "MLByteImmutable" | loadStoreKindRepr(LoadStoreMLByte {isImmutable=false}) = "MLByte" | loadStoreKindRepr LoadStoreC8 = "C8Bit" | loadStoreKindRepr LoadStoreC16 = "C16Bit" | loadStoreKindRepr LoadStoreC32 = "C32Bit" | loadStoreKindRepr LoadStoreC64 = "C64Bit" | loadStoreKindRepr LoadStoreCFloat = "CFloat" | loadStoreKindRepr LoadStoreCDouble = "CDouble" | loadStoreKindRepr LoadStoreUntaggedUnsigned = "MLWordUntagged" fun blockOpKindRepr (BlockOpMove{isByteMove=false}) = "MoveWord" | blockOpKindRepr (BlockOpMove{isByteMove=true}) = "MoveByte" | blockOpKindRepr BlockOpEqualByte = "EqualByte" | blockOpKindRepr BlockOpCompareByte = "CompareByte" open Pretty fun pList ([]: 'b list, _: string, _: 'b->pretty) = [] | pList ([h], _, disp) = [disp h] | pList (h::t, sep, disp) = PrettyBlock (0, false, [], [ disp h, PrettyBreak (0, 0), PrettyString sep ] ) :: PrettyBreak (1, 0) :: pList (t, sep, disp) fun pretty (pt : backendIC) : pretty = let fun printList(start, lst, sep) : pretty = PrettyBlock (1, true, [], PrettyString (start ^ "(") :: pList(lst, sep, pretty) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) fun prettyArgType GeneralType = PrettyString "G" | prettyArgType FloatingPtType = PrettyString "F" fun prettyArg (c, t) = PrettyBlock(1, false, [], [pretty c, PrettyBreak (1, 0), prettyArgType t]) fun prettyArgs(start, lst, sep) : pretty = PrettyBlock (1, true, [], PrettyString (start ^ "(") :: pList(lst, sep, prettyArg) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) fun prettyAddress({base, index, offset}: bicAddress): pretty = let in PrettyBlock (1, true, [], [ PrettyString "[", PrettyBreak (0, 3), pretty base, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), case index of NONE => PrettyString "-" | SOME i => pretty i, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), PrettyString(Word.toString offset), PrettyBreak (0, 0), PrettyString "]" ]) end in case pt of BICEval {function, argList, resultType} => let val prettyArgs = PrettyBlock (1, true, [], PrettyString ("$(") :: pList(argList, ",", prettyArg) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) in PrettyBlock (3, false, [], [ pretty function, PrettyBreak(1, 0), prettyArgType resultType, PrettyBreak(1, 0), prettyArgs ] ) end | BICGetThreadId => PrettyString "GetThreadId" | BICUnary { oper, arg1 } => PrettyBlock (3, false, [], [ PrettyString(BuiltIns.unaryRepr oper), PrettyBreak(1, 0), printList("", [arg1], ",") ] ) | BICBinary { oper, arg1, arg2 } => PrettyBlock (3, false, [], [ PrettyString(BuiltIns.binaryRepr oper), PrettyBreak(1, 0), printList("", [arg1, arg2], ",") ] ) | BICArbitrary { oper, shortCond, arg1, arg2, longCall } => PrettyBlock (3, false, [], [ PrettyString(BuiltIns.arithRepr oper), PrettyBreak(1, 0), printList("", [shortCond, arg1, arg2, longCall], ",") ] ) | BICAllocateWordMemory { numWords, flags, initial } => PrettyBlock (3, false, [], [ PrettyString "AllocateWordMemory", PrettyBreak(1, 0), printList("", [numWords, flags, initial], ",") ] ) | BICExtract (BICLoadLocal addr) => let val str : string = concat ["LOCAL(", Int.toString addr, ")"] in PrettyString str end | BICExtract (BICLoadArgument addr) => let val str : string = concat ["PARAM(", Int.toString addr, ")"] in PrettyString str end | BICExtract (BICLoadClosure addr) => let val str : string = concat ["CLOS(", Int.toString addr, ")"] in PrettyString str end | BICExtract (BICLoadRecursive) => let val str : string = concat ["RECURSIVE(", ")"] in PrettyString str end | BICField {base, offset} => let val str = "INDIRECT(" ^ Int.toString offset ^ ", "; in PrettyBlock(0, false, [], [ PrettyString str, pretty base, PrettyString ")" ] ) end | BICLambda {body, name, closure, argTypes, heapClosure, resultType, localCount} => let fun prettyArgTypes [] = [] | prettyArgTypes [last] = [prettyArgType last] | prettyArgTypes (hd::tl) = prettyArgType hd :: PrettyBreak(1, 0) :: prettyArgTypes tl in PrettyBlock (1, true, [], [ PrettyString ("LAMBDA("), PrettyBreak (1, 0), PrettyString name, PrettyBreak (1, 0), PrettyString ( "CL=" ^ Bool.toString heapClosure), PrettyString (" LOCALS=" ^ Int.toString localCount), PrettyBreak(1, 0), PrettyBlock (1, false, [], PrettyString "ARGS=" :: prettyArgTypes argTypes), PrettyBreak(1, 0), PrettyBlock (1, false, [], [PrettyString "RES=", prettyArgType resultType]), printList (" CLOS=", map BICExtract closure, ","), PrettyBreak (1, 0), pretty body, PrettyString "){LAMBDA}" ] ) end | BICConstnt (w, _) => PrettyString (stringOfWord w) | BICCond (f, s, t) => PrettyBlock (1, true, [], [ PrettyString "IF(", pretty f, PrettyString ", ", PrettyBreak (0, 0), pretty s, PrettyString ", ", PrettyBreak (0, 0), pretty t, PrettyBreak (0, 0), PrettyString (")") ] ) | BICNewenv(decs, final) => PrettyBlock (1, true, [], PrettyString ("BLOCK" ^ "(") :: pList(decs, ";", prettyBinding) @ [ PrettyBreak (1, 0), pretty final, PrettyBreak (0, 0), PrettyString (")") ] ) | BICBeginLoop{loop=loopExp, arguments=args } => let fun prettyArg (c, t) = PrettyBlock(1, false, [], [prettySimpleBinding c, PrettyBreak (1, 0), prettyArgType t]) in PrettyBlock (3, false, [], [ PrettyBlock (1, true, [], PrettyString ("BEGINLOOP(") :: pList(args, ",", prettyArg) @ [ PrettyBreak (0, 0), PrettyString (")") ] ), PrettyBreak (0, 0), PrettyString "(", PrettyBreak (0, 0), pretty loopExp, PrettyBreak (0, 0), PrettyString ")" ] ) end | BICLoop ptl => prettyArgs("LOOP", ptl, ",") | BICRaise c => PrettyBlock (1, true, [], [ PrettyString "RAISE(", pretty c, PrettyBreak (0, 0), PrettyString (")") ] ) | BICHandle {exp, handler, exPacketAddr} => PrettyBlock (3, false, [], [ PrettyString "HANDLE(", pretty exp, PrettyString ("WITH exid=" ^ Int.toString exPacketAddr), PrettyBreak (1, 0), pretty handler, PrettyString ")" ] ) | BICCase {cases, test, default, isExhaustive, firstIndex, ...} => PrettyBlock (1, true, [], PrettyString "CASE (" :: pretty test :: PrettyBreak (1, 0) :: PrettyString ("( from " ^ Word.toString firstIndex ^ (if isExhaustive then " exhaustive" else "")) :: PrettyBreak (1, 0) :: pList(cases, ",", fn (SOME exp) => PrettyBlock (1, true, [], [ PrettyString "=>", PrettyBreak (1, 0), pretty exp ]) | NONE => PrettyString "=> default" ) @ [ PrettyBreak (1, 0), PrettyBlock (1, false, [], [ PrettyString "ELSE:", PrettyBreak (1, 0), pretty default ] ), PrettyBreak (1, 0), PrettyString (") {"^"CASE"^"}") ] ) | BICTuple ptl => printList("RECCONSTR", ptl, ",") | BICSetContainer{container, tuple, filter} => let val source = BoolVector.length filter val dest = BoolVector.foldl(fn (true, n) => n+1 | (false, n) => n) 0 filter in PrettyBlock (3, false, [], [ PrettyString (concat["SETCONTAINER(", Int.toString dest, "/", Int.toString source, ", "]), pretty container, PrettyBreak (0, 0), PrettyString ",", PrettyBreak (1, 0), pretty tuple, PrettyBreak (0, 0), PrettyString ")" ] ) end | BICTagTest { test, tag, maxTag } => PrettyBlock (3, false, [], [ PrettyString (concat["TAGTEST(", Word.toString tag, ", ", Word.toString maxTag, ","]), PrettyBreak (1, 0), pretty test, PrettyBreak (0, 0), PrettyString ")" ] ) | BICLoadOperation{ kind, address } => PrettyBlock (3, false, [], [ PrettyString("Load" ^ loadStoreKindRepr kind), PrettyBreak (1, 0), prettyAddress address ] ) | BICStoreOperation{ kind, address, value } => PrettyBlock (3, false, [], [ PrettyString("Store" ^ loadStoreKindRepr kind), PrettyBreak (1, 0), prettyAddress address, PrettyBreak (1, 0), PrettyString "<=", PrettyBreak (1, 0), pretty value ] ) | BICBlockOperation{ kind, sourceLeft, destRight, length } => PrettyBlock (3, false, [], [ PrettyString(blockOpKindRepr kind ^ "("), PrettyBreak (1, 0), prettyAddress sourceLeft, PrettyBreak (1, 0), PrettyString ",", prettyAddress destRight, PrettyBreak (1, 0), PrettyString ",", pretty length, PrettyBreak (1, 0), PrettyString ")" ] ) (* That list should be exhaustive! *) end (* pretty *) and prettyBinding(BICDeclar dec) = prettySimpleBinding dec | prettyBinding(BICRecDecs ptl) = let fun prettyRDec {lambda, addr} = PrettyBlock (1, false, [], [ PrettyString (concat ["DECL #", Int.toString addr, "="]), PrettyBreak (1, 0), pretty(BICLambda lambda) ] ) in PrettyBlock (1, true, [], PrettyString ("MUTUAL" ^ "(") :: pList(ptl, " AND ", prettyRDec) @ [ PrettyBreak (0, 0), PrettyString (")") ] ) end | prettyBinding(BICNullBinding c) = pretty c | prettyBinding(BICDecContainer{addr, size}) = PrettyString (concat ["CONTAINER #", Int.toString addr, "=", Int.toString size]) and prettySimpleBinding{value, addr} = PrettyBlock (1, false, [], [ PrettyString (concat ["DECL #", Int.toString addr, "="]), PrettyBreak (1, 0), pretty value ] ) structure Sharing = struct type backendIC = backendIC and bicLoadForm = bicLoadForm and caseType = caseType and pretty = pretty and argumentType = argumentType and bicCodeBinding = bicCodeBinding and bicSimpleBinding = bicSimpleBinding and loadStoreKind = loadStoreKind and blockOpKind = blockOpKind and unaryOps = BuiltIns.unaryOps and binaryOps = BuiltIns.binaryOps and testConditions = BuiltIns.testConditions and arithmeticOperations = BuiltIns.arithmeticOperations end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/ByteCode/0000755000175000017500000000000013204034553021023 5ustar daviddavidpolyml-5.7.1/mlsource/MLCompiler/CodeTree/ByteCode/ml_bind.interpreted.ML0000644000175000017500000000231513204034553025206 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local structure CodeCons = INTCODECONS ( structure DEBUG = Debug structure MISC = Misc structure PRETTY = Pretty ) in structure ByteCode = INTGCODE ( structure CODECONS = CodeCons structure BACKENDTREE = BackendIntermediateCode structure MISC = Misc ) end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/ByteCode/INTGCODE.ML0000644000175000017500000014244013204034553022456 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Generate interpretable code for Poly system from the code tree. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) (* This generates byte-code that is interpreted by the run-time system. It is now used as a fall-back to allow Poly/ML to run on non-X86 architectures. Early versions were used as a porting aid while a native code-generator was being developed and the "enter-int" instructions that were needed for that have been retained although they no longer actually generate code. *) functor INTGCODE ( structure CODECONS : INTCODECONSSIG structure BACKENDTREE: BackendIntermediateCodeSig ) : GENCODESIG = struct open CODECONS open Address open BACKENDTREE open Misc val word0 = toMachineWord 0; val DummyValue : machineWord = word0; (* used as result of "raise e" etc. *) type caseForm = { cases : (backendIC * word) list, test : backendIC, caseType: caseType, default : backendIC } (* Where the result, if any, should go *) datatype whereto = NoResult (* discard result *) | ToStack (* Need a result but it can stay on the pseudo-stack *); (* Are we at the end of the function. *) datatype tail = EndOfProc | NotEnd (* Code generate a function or global declaration *) fun codegen (pt, cvec, recReference: machineWord option, numOfArgs, localCount, parameters) : address = let datatype decEntry = StackAddr of int | Empty val decVec = Array.array (localCount, Empty) (* Count of number of items on the stack. *) val realstackptr = ref 1 (* The closure ptr is already there *) (* Maximum size of the stack. *) val maxStack = ref 1 (* Exited - set to true if we have jumped out. *) val exited = ref false; (* Push a value onto the stack. *) fun incsp () = ( realstackptr := !realstackptr + 1; if !realstackptr > !maxStack then maxStack := !realstackptr else () ) (* An entry has been removed from the stack. *) fun decsp () = realstackptr := !realstackptr - 1; fun pushLocalStackValue addr = ( genLocal(!realstackptr + addr, cvec); incsp() ) (* Loads a local, argument or closure value; translating local stack addresses to real stack offsets. *) fun locaddr(BICLoadArgument locn) = pushLocalStackValue (numOfArgs-locn) | locaddr(BICLoadLocal locn) = ( (* positive address - on the stack. *) case Array.sub (decVec, locn) of StackAddr n => pushLocalStackValue (~ n) | _ => (* Should be on the stack, not a function. *) raise InternalError "locaddr: bad stack address" ) | locaddr(BICLoadClosure locn) = (* closure-pointer relative *) ( pushLocalStackValue ~1; (* The closure itself. *) genIndirect (locn+1, cvec) (* The value in the closure. +1 because first item is code addr. *) ) | locaddr BICLoadRecursive = ( case recReference of SOME codeAddr => ( pushConst (codeAddr, cvec); incsp () ) | NONE => pushLocalStackValue ~1 (* The closure itself - first value on the stack. *) ) (* generates code from the tree *) fun gencde (pt : backendIC, whereto : whereto, tailKind : tail, loopAddr) : unit = let (* Save the stack pointer value here. We may want to reset the stack. *) val oldsp = !realstackptr; (* Load the address and index value for byte operations. For ML memory operations the base is the address of an ML heap cell whereas for C operations it is a large-word box containing an address in C memory. That doesn't affect this code but the interpreter has to deal with these differently. *) fun genByteAddress{base, index, offset} = ( gencde (base, ToStack, NotEnd, loopAddr); (* Because the index and offset are both byte counts we can just add them if we need both. *) case (index, offset) of (NONE, offset) => (pushConst (toMachineWord offset, cvec); incsp()) | (SOME indexVal, 0w0) => gencde (indexVal, ToStack, NotEnd, loopAddr) | (SOME indexVal, offset) => ( gencde (indexVal, ToStack, NotEnd, loopAddr); pushConst (toMachineWord offset, cvec); genOpcode(opcode_wordAdd, cvec) ) ) (* Load the address, index value and offset for non-byte operations. Because the offset has already been scaled by the size of the operand we have to load the index and offset separately. *) fun genNonByteAddress{base, index, offset} = ( gencde (base, ToStack, NotEnd, loopAddr); case index of NONE => (pushConst (toMachineWord 0, cvec); incsp()) | SOME indexVal => gencde (indexVal, ToStack, NotEnd, loopAddr); pushConst (toMachineWord offset, cvec); incsp() ) val () = case pt of BICEval evl => genEval (evl, tailKind) | BICExtract ext => (* This may just be being used to discard a value which isn't used on this branch. *) if whereto = NoResult then () else locaddr ext | BICField {base, offset} => (gencde (base, ToStack, NotEnd, loopAddr); genIndirect (offset, cvec)) | BICLambda lam => genProc (lam, false, fn () => ()) | BICConstnt(w, _) => let val () = pushConst (w, cvec); in incsp () end | BICCond (testPart, thenPart, elsePart) => genCond (testPart, thenPart, elsePart, whereto, tailKind, loopAddr) | BICNewenv(decls, exp) => let (* Processes a list of entries. *) (* Mutually recursive declarations. May be either lambdas or constants. Recurse down the list pushing the addresses of the closure vectors, then unwind the recursion and fill them in. *) fun genMutualDecs [] = () | genMutualDecs ({lambda, addr, ...} :: otherDecs) = genProc (lambda, true, fn() => ( Array.update (decVec, addr, StackAddr (! realstackptr)); genMutualDecs (otherDecs) )) fun codeDecls(BICRecDecs dl) = genMutualDecs dl | codeDecls(BICDecContainer{size, addr}) = ( (* If this is a container we have to process it here otherwise it will be removed in the stack adjustment code. *) genContainer(size, cvec); (* Push the address of this container. *) realstackptr := !realstackptr + size + 1; (* Pushes N words plus the address. *) Array.update (decVec, addr, StackAddr(!realstackptr)) ) | codeDecls(BICDeclar{value, addr, ...}) = ( gencde (value, ToStack, NotEnd, loopAddr); Array.update (decVec, addr, StackAddr(!realstackptr)) ) | codeDecls(BICNullBinding exp) = gencde (exp, NoResult, NotEnd, loopAddr) in List.app codeDecls decls; gencde (exp, whereto, tailKind, loopAddr) end | BICBeginLoop {loop=body, arguments} => (* Execute the body which will contain at least one Loop instruction. There will also be path(s) which don't contain Loops and these will drop through. *) let val args = List.map #1 arguments (* Evaluate each of the arguments, pushing the result onto the stack. *) fun genLoopArg ({addr, value, ...}) = ( gencde (value, ToStack, NotEnd, loopAddr); Array.update (decVec, addr, StackAddr (!realstackptr)); !realstackptr (* Return the posn on the stack. *) ) val argIndexList = map genLoopArg args; val startSp = ! realstackptr; (* Remember the current top of stack. *) val startLoop = createLabel () val () = setLabel(startLoop, cvec) (* Start of loop *) in (* Process the body, passing the jump-back address down for the Loop instruction(s). *) gencde (body, whereto, tailKind, SOME(startLoop, startSp, argIndexList)) (* Leave the arguments on the stack. They can be cleared later if needed. *) end | BICLoop argList => (* Jump back to the enclosing BeginLoop. *) let val (startLoop, startSp, argIndexList) = case loopAddr of SOME l => l | NONE => raise InternalError "No BeginLoop for Loop instr" (* Evaluate the arguments. First push them to the stack because evaluating an argument may depend on the current value of others. Only when we've evaluated all of them can we overwrite the original argument positions. *) fun loadArgs ([], []) = !realstackptr - startSp (* The offset of all the args. *) | loadArgs (arg:: argList, _ :: argIndexList) = let (* Evaluate all the arguments. *) val () = gencde (arg, ToStack, NotEnd, NONE); val argOffset = loadArgs(argList, argIndexList); in genSetStackVal(argOffset, cvec); (* Copy the arg over. *) decsp(); (* The argument has now been popped. *) argOffset end | loadArgs _ = raise InternalError "loadArgs: Mismatched arguments"; val _: int = loadArgs(List.map #1 argList, argIndexList) in if !realstackptr <> startSp then resetStack (!realstackptr - startSp, false, cvec) (* Remove any local variables. *) else (); (* Jump back to the start of the loop. *) putBranchInstruction(Jump, startLoop, cvec) end | BICRaise exp => let val () = gencde (exp, ToStack, NotEnd, loopAddr) val () = genRaiseEx cvec; in exited := true end | BICHandle {exp, handler, exPacketAddr} => let (* Save old handler *) val () = genPushHandler cvec val () = incsp () val handlerLabel = createLabel() val () = putBranchInstruction (SetHandler, handlerLabel, cvec) val () = incsp() (* Code generate the body; "NotEnd" because we have to come back to remove the handler; "ToStack" because delHandler needs a result to carry down. *) val () = gencde (exp, ToStack, NotEnd, loopAddr) (* Now get out of the handler and restore the old one. *) val () = genOpcode(opcode_deleteHandler, cvec) val skipHandler = createLabel() val () = putBranchInstruction (Jump, skipHandler, cvec) (* Now process the handler itself. First we have to reset the stack. Note that we have to use "ToStack" again to be consistent with the stack-handling in the body-part. If we actually wanted "NoResult", the stack adjustment code at the end of gencde will take care of this. This means that I don't want to do any clever "end-of-function" optimisation either. SPF 6/1/97 *) val () = realstackptr := oldsp val () = exited := false val () = setLabel (handlerLabel, cvec) (* If we were executing machine code we must re-enter the interpreter. *) val () = genEnterIntCatch cvec (* Push the exception packet and set the address. *) val () = genLdexc cvec val () = incsp () val () = Array.update (decVec, exPacketAddr, StackAddr(!realstackptr)) val () = gencde (handler, ToStack, NotEnd, loopAddr) (* Have to remove the exception packet. *) val () = resetStack(1, true, cvec) val () = decsp() (* Finally fix-up the jump around the handler *) val () = setLabel (skipHandler, cvec) in exited := false end | BICCase ({cases, test, default, firstIndex, ...}) => let val () = gencde (test, ToStack, NotEnd, loopAddr) (* Label to jump to at the end of each case. *) val exitJump = createLabel() val () = if firstIndex = 0w0 then () else ( (* Subtract lower limit. Don't check for overflow. Instead allow large value to wrap around and check in "case" instruction. *) pushConst(toMachineWord firstIndex, cvec); genOpcode(opcode_wordSub, cvec) ) (* Generate the case instruction followed by the table of jumps. *) val nCases = List.length cases val caseLabels = genCase (nCases, cvec) val () = decsp () (* The default case, if any, follows the case statement. *) (* If we have a jump to the default set it to jump here. *) local fun fixDefault(NONE, defCase) = setLabel(defCase, cvec) | fixDefault(SOME _, _) = () in val () = ListPair.appEq fixDefault (cases, caseLabels) end val () = gencde (default, whereto, tailKind, loopAddr); val () = exited := false; fun genCases(SOME body, label) = ( (* First exit from the previous case or the default if this is the first. *) if !exited then () else putBranchInstruction(Jump, exitJump, cvec); (* Remove the result - the last case will leave it. *) case whereto of ToStack => decsp () | NoResult => (); (* Fix up the jump to come here. *) setLabel(label, cvec); exited := false; gencde (body, whereto, tailKind, loopAddr) ) | genCases(NONE, _) = () val () = ListPair.appEq genCases (cases, caseLabels) (* Finally set the exit jump to come here. *) val () = setLabel (exitJump, cvec) in exited := false end | BICTuple recList => let val size = List.length recList in (* Move the fields into the vector. *) List.app(fn v => gencde (v, ToStack, NotEnd, loopAddr)) recList; genTuple (size, cvec); realstackptr := !realstackptr - (size - 1) end | BICSetContainer{container, tuple, filter} => (* Copy the contents of a tuple into a container. If the tuple is a Tuple instruction we can avoid generating the tuple and then unpacking it and simply copy the fields that make up the tuple directly into the container. *) ( case tuple of BICTuple cl => (* Simply set the container from the values. *) let (* Load the address of the container. *) val _ = gencde (container, ToStack, NotEnd, loopAddr); fun setValues([], _, _) = () | setValues(v::tl, sourceOffset, destOffset) = if sourceOffset < BoolVector.length filter andalso BoolVector.sub(filter, sourceOffset) then ( gencde (v, ToStack, NotEnd, loopAddr); (* Move the entry into the container. This instruction pops the value to be moved but not the destination. *) genMoveToVec(destOffset, cvec); decsp(); setValues(tl, sourceOffset+1, destOffset+1) ) else setValues(tl, sourceOffset+1, destOffset) in setValues(cl, 0, 0) (* The container address is still on the stack. *) end | _ => let (* General case. *) (* First the target tuple, then the container. *) val () = gencde (tuple, ToStack, NotEnd, loopAddr) val () = gencde (container, ToStack, NotEnd, loopAddr) val last = BoolVector.foldli(fn (i, true, _) => i | (_, false, n) => n) ~1 filter fun copy (sourceOffset, destOffset) = if BoolVector.sub(filter, sourceOffset) then ( (* Duplicate the tuple address . *) genLocal(1, cvec); genIndirect(sourceOffset, cvec); genMoveToVec(destOffset, cvec); if sourceOffset = last then () else copy (sourceOffset+1, destOffset+1) ) else copy(sourceOffset+1, destOffset) in copy (0, 0) (* The container and tuple addresses are still on the stack. *) end ) | BICTagTest { test, tag, ... } => ( (* Convert this into a simple equality function. *) gencde (test, ToStack, NotEnd, loopAddr); pushConst (toMachineWord tag, cvec); genOpcode(opcode_equalWord, cvec) ) | BICGetThreadId => ( genOpcode(opcode_getThreadId, cvec); incsp() ) | BICUnary { oper, arg1 } => let open BuiltIns val () = gencde (arg1, ToStack, NotEnd, loopAddr) in case oper of NotBoolean => genOpcode(opcode_notBoolean, cvec) | IsTaggedValue => genOpcode(opcode_isTagged, cvec) | MemoryCellLength => genOpcode(opcode_cellLength, cvec) | MemoryCellFlags => genOpcode(opcode_cellFlags, cvec) | ClearMutableFlag => genOpcode(opcode_clearMutable, cvec) | AtomicIncrement => genOpcode(opcode_atomicIncr, cvec) | AtomicDecrement => genOpcode(opcode_atomicDecr, cvec) | AtomicReset => genOpcode(opcode_atomicReset, cvec) | LongWordToTagged => genOpcode(opcode_longWToTagged, cvec) | SignedToLongWord => genOpcode(opcode_signedToLongW, cvec) | UnsignedToLongWord => genOpcode(opcode_unsignedToLongW, cvec) | RealAbs => genOpcode(opcode_realAbs, cvec) | RealNeg => genOpcode(opcode_realNeg, cvec) | FloatFixedInt => genOpcode(opcode_floatFixedInt, cvec) end | BICBinary { oper, arg1, arg2 } => let open BuiltIns val () = gencde (arg1, ToStack, NotEnd, loopAddr) val () = gencde (arg2, ToStack, NotEnd, loopAddr) in case oper of WordComparison{test=TestEqual, ...} => genOpcode(opcode_equalWord, cvec) | WordComparison{test=TestLess, isSigned=true} => genOpcode(opcode_lessSigned, cvec) | WordComparison{test=TestLessEqual, isSigned=true} => genOpcode(opcode_lessEqSigned, cvec) | WordComparison{test=TestGreater, isSigned=true} => genOpcode(opcode_greaterSigned, cvec) | WordComparison{test=TestGreaterEqual, isSigned=true} => genOpcode(opcode_greaterEqSigned, cvec) | WordComparison{test=TestLess, isSigned=false} => genOpcode(opcode_lessUnsigned, cvec) | WordComparison{test=TestLessEqual, isSigned=false} => genOpcode(opcode_lessEqUnsigned, cvec) | WordComparison{test=TestGreater, isSigned=false} => genOpcode(opcode_greaterUnsigned, cvec) | WordComparison{test=TestGreaterEqual, isSigned=false} => genOpcode(opcode_greaterEqUnsigned, cvec) | FixedPrecisionArith ArithAdd => genOpcode(opcode_fixedAdd, cvec) | FixedPrecisionArith ArithSub => genOpcode(opcode_fixedSub, cvec) | FixedPrecisionArith ArithMult => genOpcode(opcode_fixedMult, cvec) | FixedPrecisionArith ArithQuot => genOpcode(opcode_fixedQuot, cvec) | FixedPrecisionArith ArithRem => genOpcode(opcode_fixedRem, cvec) | FixedPrecisionArith ArithDiv => raise InternalError "TODO: FixedPrecisionArith ArithDiv" | FixedPrecisionArith ArithMod => raise InternalError "TODO: FixedPrecisionArith ArithMod" | WordArith ArithAdd => genOpcode(opcode_wordAdd, cvec) | WordArith ArithSub => genOpcode(opcode_wordSub, cvec) | WordArith ArithMult => genOpcode(opcode_wordMult, cvec) | WordArith ArithDiv => genOpcode(opcode_wordDiv, cvec) | WordArith ArithMod => genOpcode(opcode_wordMod, cvec) | WordArith _ => raise InternalError "WordArith - unimplemented instruction" | WordLogical LogicalAnd => genOpcode(opcode_wordAnd, cvec) | WordLogical LogicalOr => genOpcode(opcode_wordOr, cvec) | WordLogical LogicalXor => genOpcode(opcode_wordXor, cvec) | WordShift ShiftLeft => genOpcode(opcode_wordShiftLeft, cvec) | WordShift ShiftRightLogical => genOpcode(opcode_wordShiftRLog, cvec) | WordShift ShiftRightArithmetic => genOpcode(opcode_wordShiftRArith, cvec) | AllocateByteMemory => genOpcode(opcode_allocByteMem, cvec) | LargeWordComparison TestEqual => genOpcode(opcode_lgWordEqual, cvec) | LargeWordComparison TestLess => genOpcode(opcode_lgWordLess, cvec) | LargeWordComparison TestLessEqual => genOpcode(opcode_lgWordLessEq, cvec) | LargeWordComparison TestGreater => genOpcode(opcode_lgWordGreater, cvec) | LargeWordComparison TestGreaterEqual => genOpcode(opcode_lgWordGreaterEq, cvec) | LargeWordArith ArithAdd => genOpcode(opcode_lgWordAdd, cvec) | LargeWordArith ArithSub => genOpcode(opcode_lgWordSub, cvec) | LargeWordArith ArithMult => genOpcode(opcode_lgWordMult, cvec) | LargeWordArith ArithDiv => genOpcode(opcode_lgWordDiv, cvec) | LargeWordArith ArithMod => genOpcode(opcode_lgWordMod, cvec) | LargeWordArith _ => raise InternalError "LargeWordArith - unimplemented instruction" | LargeWordLogical LogicalAnd => genOpcode(opcode_lgWordAnd, cvec) | LargeWordLogical LogicalOr => genOpcode(opcode_lgWordOr, cvec) | LargeWordLogical LogicalXor => genOpcode(opcode_lgWordXor, cvec) | LargeWordShift ShiftLeft => genOpcode(opcode_lgWordShiftLeft, cvec) | LargeWordShift ShiftRightLogical => genOpcode(opcode_lgWordShiftRLog, cvec) | LargeWordShift ShiftRightArithmetic => genOpcode(opcode_lgWordShiftRArith, cvec) | RealComparison TestEqual => genOpcode(opcode_realEqual, cvec) | RealComparison TestLess => genOpcode(opcode_realLess, cvec) | RealComparison TestLessEqual => genOpcode(opcode_realLessEq, cvec) | RealComparison TestGreater => genOpcode(opcode_realGreater, cvec) | RealComparison TestGreaterEqual => genOpcode(opcode_realGreaterEq, cvec) | RealArith ArithAdd => genOpcode(opcode_realAdd, cvec) | RealArith ArithSub => genOpcode(opcode_realSub, cvec) | RealArith ArithMult => genOpcode(opcode_realMult, cvec) | RealArith ArithDiv => genOpcode(opcode_realDiv, cvec) | RealArith _ => raise InternalError "RealArith - unimplemented instruction" ; decsp() (* Removes one item from the stack. *) end | BICAllocateWordMemory {numWords as BICConstnt(length, _), flags as BICConstnt(flagByte, _), initial } => if isShort length andalso toShort length = 0w1 andalso isShort flagByte andalso toShort flagByte = 0wx40 then (* This is a very common case. *) ( gencde (initial, ToStack, NotEnd, loopAddr); genOpcode(opcode_alloc_ref, cvec) ) else let val () = gencde (numWords, ToStack, NotEnd, loopAddr) val () = gencde (flags, ToStack, NotEnd, loopAddr) val () = gencde (initial, ToStack, NotEnd, loopAddr) in genOpcode(opcode_allocWordMemory, cvec); decsp(); decsp() end | BICAllocateWordMemory { numWords, flags, initial } => let val () = gencde (numWords, ToStack, NotEnd, loopAddr) val () = gencde (flags, ToStack, NotEnd, loopAddr) val () = gencde (initial, ToStack, NotEnd, loopAddr) in genOpcode(opcode_allocWordMemory, cvec); decsp(); decsp() end | BICLoadOperation { kind=LoadStoreMLWord _, address={base, index=NONE, offset}} => ( (* If the index is a constant, frequently zero, we can use indirection. The offset is a byte count so has to be divided by the word size but it should always be an exact multiple. *) gencde (base, ToStack, NotEnd, loopAddr); offset mod (Word.fromInt wordSize) = 0w0 orelse raise InternalError "gencde: BICLoadOperation - not word multiple"; genIndirect (Word.toInt(offset div Word.fromInt wordSize), cvec) ) | BICLoadOperation { kind=LoadStoreMLWord _, address={base, index=SOME indexVal, offset}} => let (* Variable index. *) val () = gencde (base, ToStack, NotEnd, loopAddr) val () = gencde (indexVal, ToStack, NotEnd, loopAddr) val () = (pushConst (toMachineWord offset, cvec); incsp()) in genOpcode(opcode_loadMLWord, cvec); decsp(); decsp() end | BICLoadOperation { kind=LoadStoreMLByte _, address} => ( genByteAddress address; genOpcode(opcode_loadMLByte, cvec); decsp() ) | BICLoadOperation { kind=LoadStoreC8, address} => ( genByteAddress address; genOpcode(opcode_loadC8, cvec); decsp() ) | BICLoadOperation { kind=LoadStoreC16, address} => ( genNonByteAddress address; genOpcode(opcode_loadC16, cvec); decsp(); decsp() ) | BICLoadOperation { kind=LoadStoreC32, address} => ( genNonByteAddress address; genOpcode(opcode_loadC32, cvec); decsp(); decsp() ) | BICLoadOperation { kind=LoadStoreC64, address} => ( wordSize = 8 orelse raise InternalError "LoadStoreC64 but not 64-bit mode"; genNonByteAddress address; genOpcode(opcode_loadC64, cvec); decsp(); decsp() ) | BICLoadOperation { kind=LoadStoreCFloat, address} => ( genNonByteAddress address; genOpcode(opcode_loadCFloat, cvec); decsp(); decsp() ) | BICLoadOperation { kind=LoadStoreCDouble, address} => ( genNonByteAddress address; genOpcode(opcode_loadCDouble, cvec); decsp(); decsp() ) | BICLoadOperation { kind=LoadStoreUntaggedUnsigned, address} => ( genNonByteAddress address; genOpcode(opcode_loadUntagged, cvec); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreMLWord _, address={base, index=NONE, offset}, value } => let (* No index. We could almost use move_to_vec here except that it leaves the destination address on the stack instead of replacing it with "unit". *) val () = gencde (base, ToStack, NotEnd, loopAddr) val () = pushConst (toMachineWord 0, cvec) val () = incsp() val () = pushConst (toMachineWord offset, cvec) val () = incsp() val () = gencde (value, ToStack, NotEnd, loopAddr) in genOpcode(opcode_storeMLWord, cvec); decsp(); decsp(); decsp() end | BICStoreOperation { kind=LoadStoreMLWord _, address={base, index=SOME indexVal, offset}, value } => let (* Variable index *) val () = gencde (base, ToStack, NotEnd, loopAddr) val () = gencde (indexVal, ToStack, NotEnd, loopAddr) val () = pushConst (toMachineWord offset, cvec) val () = incsp() val () = gencde (value, ToStack, NotEnd, loopAddr) in genOpcode(opcode_storeMLWord, cvec); decsp(); decsp(); decsp() end | BICStoreOperation { kind=LoadStoreMLByte _, address, value } => ( genByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeMLByte, cvec); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreC8, address, value} => ( genByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeC8, cvec); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreC16, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeC16, cvec); decsp(); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreC32, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeC32, cvec); decsp(); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreC64, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeC64, cvec); decsp(); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreCFloat, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeCFloat, cvec); decsp(); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreCDouble, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeCDouble, cvec); decsp(); decsp(); decsp() ) | BICStoreOperation { kind=LoadStoreUntaggedUnsigned, address, value} => ( genNonByteAddress address; gencde (value, ToStack, NotEnd, loopAddr); genOpcode(opcode_storeUntagged, cvec); decsp(); decsp(); decsp() ) | BICBlockOperation { kind=BlockOpMove{isByteMove=true}, sourceLeft, destRight, length } => ( genByteAddress sourceLeft; genByteAddress destRight; gencde (length, ToStack, NotEnd, loopAddr); genOpcode(opcode_blockMoveByte, cvec); decsp(); decsp(); decsp(); decsp() ) | BICBlockOperation { kind=BlockOpMove{isByteMove=false}, sourceLeft, destRight, length } => ( genNonByteAddress sourceLeft; genNonByteAddress destRight; gencde (length, ToStack, NotEnd, loopAddr); genOpcode(opcode_blockMoveWord, cvec); decsp(); decsp(); decsp(); decsp(); decsp(); decsp() ) | BICBlockOperation { kind=BlockOpEqualByte, sourceLeft, destRight, length } => ( genByteAddress sourceLeft; genByteAddress destRight; gencde (length, ToStack, NotEnd, loopAddr); genOpcode(opcode_blockEqualByte, cvec); decsp(); decsp(); decsp(); decsp() ) | BICBlockOperation { kind=BlockOpCompareByte, sourceLeft, destRight, length } => ( genByteAddress sourceLeft; genByteAddress destRight; gencde (length, ToStack, NotEnd, loopAddr); genOpcode(opcode_blockCompareByte, cvec); decsp(); decsp(); decsp(); decsp() ) | BICArbitrary { longCall, ... } => (* Just use the long-precision case in the interpreted version. *) ( gencde (longCall, whereto, tailKind, loopAddr) ) in (* body of gencde *) (* This ensures that there is precisely one item on the stack if whereto = ToStack and no items if whereto = NoResult. There are two points to note carefully here: (1) Negative stack adjustments are legal if we have exited. This is because matchFailFn can cut the stack back too far for its immediately enclosing expression. This is harmless because the code actually exits that expression. (2) A stack adjustment of ~1 is legal if we're generating a declaration in "ToStack" mode, because not all declarations actually generate the dummy value that we expect. This used to be handled in resetStack itself, but it's more transparent to do it here. (In addition, there was a bug in resetStack - it accumulated the stack resets, but didn't correctly accumulate these "~1" dummy value pushes.) It's all much better now. SPF 9/1/97 *) case whereto of ToStack => let val newsp = oldsp + 1; val adjustment = !realstackptr - newsp val () = if !exited orelse adjustment = 0 then () else if adjustment < ~1 then raise InternalError ("gencde: bad adjustment " ^ Int.toString adjustment) (* Hack for declarations that should push values, but don't *) else if adjustment = ~1 then pushConst (DummyValue, cvec) else resetStack (adjustment, true, cvec) in realstackptr := newsp end | NoResult => let val adjustment = !realstackptr - oldsp val () = if !exited orelse adjustment = 0 then () else if adjustment < 0 then raise InternalError ("gencde: bad adjustment " ^ Int.toString adjustment) else resetStack (adjustment, false, cvec) in realstackptr := oldsp end end (* gencde *) (* doNext is only used for mutually recursive functions where a function may not be able to fill in its closure if it does not have all the remaining declarations. *) (* TODO: This always creates the closure on the heap even when makeClosure is false. *) and genProc ({ closure=[], localCount, body, argTypes, name, ...}: bicLambdaForm, mutualDecs, doNext: unit -> unit) : unit = let (* Create a one word item for the closure. This is returned for recursive references and filled in with the address of the code when we've finished. *) val closure = Address.allocWordData(0w1, Word8.orb (F_mutable, F_words), Address.toMachineWord 0w0) val newCode : code = codeCreate(name, parameters); (* Code-gen function. No non-local references. *) val res : address = codegen (body, newCode, SOME(toMachineWord closure), List.length argTypes, localCount, parameters); val () = Address.assignWord(closure, 0w0, Address.toMachineWord res) val () = Address.lock closure val () = pushConst(toMachineWord closure, cvec); val () = incsp(); in if mutualDecs then doNext () else () end | genProc ({ localCount, body, name, argTypes, closure, ...}, mutualDecs, doNext) = let (* Full closure required. *) val newCode = codeCreate (name, parameters) (* Code-gen function. *) val res = codegen (body, newCode, NONE, List.length argTypes, localCount, parameters); val sizeOfClosure = List.length closure + 1; in if mutualDecs then let (* Have to make the closure now and fill it in later. *) (* This previously used genGetStore which at one time was widely used. *) val () = pushConst(toMachineWord sizeOfClosure, cvec) (* Length *) val () = pushConst(toMachineWord F_mutable, cvec) (* Flags *) val () = pushConst(toMachineWord 0, cvec) (* Initialise to zero. *) val () = genOpcode(opcode_allocWordMemory, cvec) (* Allocate the memory. *) val () = incsp () (* Put code address into closure *) val () = pushConst(toMachineWord res, cvec) val () = genMoveToVec(0, cvec) val entryAddr : int = !realstackptr val () = doNext () (* Any mutually recursive functions. *) (* Push the address of the vector - If we have processed other closures the vector will no longer be on the top of the stack. *) val () = pushLocalStackValue (~ entryAddr) (* Load items for the closure. *) fun loadItems ([], _) = () | loadItems (v :: vs, addr : int) = let (* Generate an item and move it into the vector *) val () = gencde (BICExtract v, ToStack, NotEnd, NONE) val () = genMoveToVec(addr, cvec) val () = decsp () in loadItems (vs, addr + 1) end val () = loadItems (closure, 1) val () = genLock cvec (* Lock it. *) (* Remove the extra reference. *) val () = resetStack (1, false, cvec) in realstackptr := !realstackptr - 1 end else let (* Put it on the stack. *) val () = pushConst (toMachineWord res, cvec) val () = incsp () val () = List.app (fn pt => gencde (BICExtract pt, ToStack, NotEnd, NONE)) closure val () = genTuple (sizeOfClosure, cvec) in realstackptr := !realstackptr - (sizeOfClosure - 1) end end and genCond (testCode, thenCode, elseCode, whereto, tailKind, loopAddr) = let val () = gencde (testCode, ToStack, NotEnd, loopAddr) val toElse = createLabel() and exitJump = createLabel() val () = putBranchInstruction(JumpFalse, toElse, cvec) val () = decsp() val () = gencde (thenCode, whereto, tailKind, loopAddr) (* Get rid of the result from the stack. If there is a result then the ``else-part'' will push it. *) val () = case whereto of ToStack => decsp () | NoResult => () val thenExited = !exited val () = if thenExited then () else putBranchInstruction (Jump, exitJump, cvec) (* start of "else part" *) val () = setLabel (toElse, cvec) val () = exited := false val () = gencde (elseCode, whereto, tailKind, loopAddr) val elseExited = !exited val () = setLabel (exitJump, cvec) in exited := (thenExited andalso elseExited) (* Only exited if both sides did. *) end (* genCond *) and genEval (eval, tailKind : tail) : unit = let val argList : backendIC list = List.map #1 (#argList eval) val argsToPass : int = List.length argList; (* Load arguments *) fun loadArgs [] = () | loadArgs (v :: vs) = let (* Push each expression onto the stack. *) val () = gencde(v, ToStack, NotEnd, NONE) in loadArgs vs end; (* Called after the args and the closure to call have been pushed onto the stack. *) fun callClosure () : unit = case tailKind of NotEnd => (* Normal call. *) genCallClosure cvec | EndOfProc => (* Tail recursive call. *) let (* Get the return address onto the top of the stack. *) val () = pushLocalStackValue 0 (* Slide the return address, closure and args over the old closure, return address and args, and reset the stack. Then jump to the closure. *) val () = genTailCall(argsToPass + 2, !realstackptr - 1 + (numOfArgs - argsToPass), cvec); (* It's "-1" not "-2", because we didn't bump the realstackptr when we pushed the return address. SPF 3/1/97 *) in exited := true end (* Have to guarantee that the expression to return the function is evaluated before the arguments. *) (* Returns true if evaluating it later is safe. *) fun safeToLeave (BICConstnt _) = true | safeToLeave (BICLambda _) = true | safeToLeave (BICExtract _) = true | safeToLeave (BICField {base, ...}) = safeToLeave base | safeToLeave _ = false val () = if (case argList of [] => true | _ => safeToLeave (#function eval)) then let (* Can load the args first. *) val () = loadArgs argList in gencde (#function eval, ToStack, NotEnd, NONE) end else let (* The expression for the function is too complicated to risk leaving. It might have a side-effect and we must ensure that any side-effects it has are done before the arguments are loaded. *) val () = gencde(#function eval, ToStack, NotEnd, NONE); val () = loadArgs(argList); (* Load the function again. *) val () = genLocal(argsToPass, cvec); in incsp () end val () = callClosure () (* Call the function. *) (* Make sure we interpret when we return from the call *) val () = genEnterIntCall (cvec, argsToPass) in (* body of genEval *) realstackptr := !realstackptr - argsToPass (* Args popped by caller. *) end (* Closure functions must start with ``enterIntProc''. This is actually a break-point instruction in the machine-code instruction set to make sure that the code is interpreted. It is a no-op if we are already interpreting. *) val () = genEnterIntProc (cvec, numOfArgs); (* SPF 23/6/95 *) (* Generate the function. *) (* Assume we always want a result. There is otherwise a problem if the called routine returns a result of type void (i.e. no result) but the caller wants a result (e.g. the identity function). *) val () = gencde (pt, ToStack, EndOfProc, NONE) val () = if !exited then () else genReturn (numOfArgs, cvec); in (* body of codegen *) (* Having code-generated the body of the function, it is copied into a new data segment. *) copyCode(cvec, !maxStack) end (* codegen *); fun gencodeLambda({ name, body, argTypes, localCount, ...}:bicLambdaForm, parameters, closure) = let (* make the code buffer for the new function. *) val newCode : code = codeCreate (name, parameters) (* This function must have no non-local references. *) val codeAddr = codegen (body, newCode, SOME(toMachineWord closure), List.length argTypes, localCount, parameters) in assignWord(closure, 0w0, toMachineWord codeAddr); lock closure end local val makeEntryPoint: string -> machineWord = RunCall.rtsCallFull1 "PolyCreateEntryPointObject" fun rtsCall makeCall (entryName: string, numOfArgs, debugArgs: Universal.universal list): address = let open Address val cvec = codeCreate (entryName, debugArgs) val closure = allocWordData(0w1, Word8.orb (F_mutable, F_words), toMachineWord 0w0) val entryPointAddr = makeEntryPoint entryName (* Each argument is at the same offset, essentially we're just shifting them *) fun genLocals 0 = () | genLocals n = (genLocal(numOfArgs +1, cvec); genLocals (n-1)) val () = genLocals numOfArgs val () = pushConst(entryPointAddr, cvec) val () = makeCall(numOfArgs, cvec) val () = genReturn (numOfArgs, cvec) val codeAddr = copyCode(cvec, numOfArgs+1) in assignWord(closure, 0w0, toMachineWord codeAddr); lock closure; closure end in structure Foreign = struct val rtsCallFast = rtsCall genRTSCallFast and rtsCallFull = rtsCall genRTSCallFull fun rtsCallFastFloattoFloat(entryName, debugArgs) = rtsCall (fn (_, c) => genRTSCallFastFloatFloat c) (entryName, 1, debugArgs) fun rtsCallFastGeneraltoFloat(entryName, debugArgs) = rtsCall (fn (_, c) => genRTSCallFastGeneralFloat c) (entryName, 1, debugArgs) end end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/ByteCode/INTCODECONSSIG.sml0000644000175000017500000001452013204034553023655 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature INTCODECONSSIG = sig type machineWord = Address.machineWord type address = Address.address type code type opcode type labels val opcode_notBoolean: opcode val opcode_isTagged: opcode and opcode_cellLength: opcode and opcode_cellFlags: opcode and opcode_clearMutable: opcode and opcode_atomicIncr: opcode and opcode_atomicDecr: opcode and opcode_atomicReset: opcode and opcode_longWToTagged: opcode and opcode_signedToLongW: opcode and opcode_unsignedToLongW: opcode and opcode_realAbs: opcode and opcode_realNeg: opcode and opcode_floatFixedInt: opcode val opcode_equalWord: opcode val opcode_notequalWord: opcode (* Not currently generated. *) and opcode_lessSigned: opcode and opcode_lessUnsigned: opcode and opcode_lessEqSigned: opcode and opcode_lessEqUnsigned: opcode and opcode_greaterSigned: opcode and opcode_greaterUnsigned: opcode and opcode_greaterEqSigned: opcode and opcode_greaterEqUnsigned: opcode val opcode_fixedAdd: opcode val opcode_fixedSub: opcode val opcode_fixedMult: opcode val opcode_fixedQuot: opcode val opcode_fixedRem: opcode val opcode_fixedDiv: opcode val opcode_fixedMod: opcode val opcode_wordAdd: opcode val opcode_wordSub: opcode val opcode_wordMult: opcode val opcode_wordDiv: opcode val opcode_wordMod: opcode val opcode_wordAnd: opcode val opcode_wordOr: opcode val opcode_wordXor: opcode val opcode_wordShiftLeft: opcode val opcode_wordShiftRLog: opcode val opcode_wordShiftRArith: opcode val opcode_allocByteMem: opcode val opcode_lgWordEqual: opcode val opcode_lgWordNotequal: opcode val opcode_lgWordLess: opcode val opcode_lgWordLessEq: opcode val opcode_lgWordGreater: opcode val opcode_lgWordGreaterEq: opcode val opcode_lgWordAdd: opcode val opcode_lgWordSub: opcode val opcode_lgWordMult: opcode val opcode_lgWordDiv: opcode val opcode_lgWordMod: opcode val opcode_lgWordAnd: opcode val opcode_lgWordOr: opcode val opcode_lgWordXor: opcode val opcode_lgWordShiftLeft: opcode val opcode_lgWordShiftRLog: opcode val opcode_lgWordShiftRArith: opcode val opcode_realEqual: opcode val opcode_realNotequal: opcode val opcode_realLess: opcode val opcode_realLessEq: opcode val opcode_realGreater: opcode val opcode_realGreaterEq: opcode val opcode_realAdd: opcode val opcode_realSub: opcode val opcode_realMult: opcode val opcode_realDiv: opcode val opcode_getThreadId: opcode val opcode_allocWordMemory: opcode val opcode_alloc_ref: opcode val opcode_loadMLWord: opcode val opcode_loadMLByte: opcode val opcode_loadC8: opcode val opcode_loadC16: opcode val opcode_loadC32: opcode val opcode_loadC64: opcode val opcode_loadCFloat: opcode val opcode_loadCDouble: opcode val opcode_loadUntagged: opcode val opcode_storeMLWord: opcode val opcode_storeMLByte: opcode val opcode_storeC8: opcode val opcode_storeC16: opcode val opcode_storeC32: opcode val opcode_storeC64: opcode val opcode_storeCFloat: opcode val opcode_storeCDouble: opcode val opcode_storeUntagged: opcode val opcode_blockMoveWord: opcode val opcode_blockMoveByte: opcode val opcode_blockEqualByte: opcode val opcode_blockCompareByte: opcode val opcode_deleteHandler: opcode val codeCreate: string * Universal.universal list -> code (* makes the initial segment. *) (* GEN- routines all put a value at the instruction counter and add an appropriate amount to it. *) (* gen... - put instructions and their operands. *) val genCallClosure : code -> unit val genRaiseEx : code -> unit val genLock : code -> unit val genLdexc : code -> unit val genPushHandler : code -> unit val genReturn : int * code -> unit val genLocal : int * code -> unit val genIndirect : int * code -> unit val genMoveToVec : int * code -> unit val genSetStackVal : int * code -> unit val genCase : int * code -> labels list val genTuple : int * code -> unit val genTailCall : int * int * code -> unit val genRTSCallFast: int * code -> unit val genRTSCallFull: int * code -> unit val genRTSCallFastFloatFloat: code -> unit val genRTSCallFastGeneralFloat: code -> unit val genOpcode: opcode * code -> unit (* genEnter instructions are only needed when machine-code routines can call interpreted routines or vice-versa. The enterInt instruction causes the interpreter to be entered and the argument indicates the reason. *) val genEnterIntCatch : code -> unit val genEnterIntProc : code * int -> unit val genEnterIntCall : code * int -> unit (* pushConst - Generates code to push a constant. *) val pushConst : machineWord * code -> unit (* Create a container on the stack *) val genContainer : int * code -> unit (* Create a tuple from a container. *) val genTupleFromContainer : int * code -> unit (* copyCode - Finish up after compiling a function. *) val copyCode : code * int -> address (* putBranchInstruction puts in an instruction which involves a forward reference. *) datatype jumpTypes = Jump | JumpFalse | SetHandler val putBranchInstruction: jumpTypes * labels * code -> unit val createLabel: unit -> labels (* Define the position of a label. *) val setLabel: labels * code -> unit val resetStack: int * bool * code -> unit (* Set a pending reset *) end ; polyml-5.7.1/mlsource/MLCompiler/CodeTree/ByteCode/INTCODECONS.ML0000644000175000017500000017310013204034553023027 0ustar daviddavid(* Copyright (c) 2015-17 David C.J. Matthews Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor INTCODECONS ( structure DEBUG: DEBUGSIG structure PRETTY: PRETTYSIG ) : INTCODECONSSIG = struct open CODE_ARRAY open DEBUG open Address open Misc infix 5 << <<+ <<- >> >>+ >>- ~>> ~>>+ ~>>- (* Shift operators *) infix 3 andb orb xorb andbL orbL xorbL andb8 orb8 xorb8 val op << = Word.<< and op >> = Word.>> and op ~>> = Word.~>> val wordToWord8 = Word8.fromLargeWord o Word.toLargeWord and word8ToWord = Word.fromLargeWord o Word8.toLargeWord (* Typically the compiler is built on a little-endian machine but it could be run on a machine with either endian-ness. We have to find out the endian-ness when we run. There are separate versions of the compiler for 32-bit and 64-bit so that can be a constant. *) local val isBigEndian: unit -> bool = RunCall.rtsCallFast1 "PolyIsBigEndian" in val littleEndian = not o isBigEndian end val wordLength = RunCall.bytesPerWord val opcode_enterInt = 0wx00 and opcode_jump = 0wx02 (* 8-bit unsigned jump forward. *) and opcode_jumpFalse = 0wx03 (* Test top of stack. Take 8-bit unsigned jump if false. *) and opcode_delHandler = 0wx05 and opcode_alloc_ref = 0wx06 and opcode_case16 = 0wx0a and opcode_containerW = 0wx0b and opcode_callClosure = 0wx0c and opcode_returnW = 0wx0d and opcode_pad = 0wx0e and opcode_raiseEx = 0wx10 and opcode_getStoreW = 0wx11 and opcode_nonLocal = 0wx12 and opcode_localW = 0wx13 and opcode_indirectW = 0wx14 and opcode_moveToVecW = 0wx15 and opcode_setStackValW = 0wx17 and opcode_resetW = 0wx18 and opcode_resetR_w = 0wx19 and opcode_constAddr16 = 0wx1a and opcode_constIntW = 0wx1b and opcode_jumpBack8 = 0wx1e (* 8-bit unsigned jump backwards - relative to end of instr. *) and opcode_returnB = 0wx1f and opcode_jumpBack16 = 0wx20 (* 16-bit unsigned jump backwards - relative to end of instr. *) and opcode_getStoreB = 0wx21 and opcode_localB = 0wx22 and opcode_indirectB = 0wx23 and opcode_moveToVecB = 0wx24 and opcode_setStackValB = 0wx25 and opcode_resetB = 0wx26 and opcode_resetRB = 0wx27 and opcode_constIntB = 0wx28 and opcode_local_0 = 0wx29 and opcode_local_1 = 0wx2a and opcode_local_2 = 0wx2b and opcode_local_3 = 0wx2c and opcode_local_4 = 0wx2d and opcode_local_5 = 0wx2e and opcode_local_6 = 0wx2f and opcode_local_7 = 0wx30 and opcode_local_8 = 0wx31 and opcode_local_9 = 0wx32 and opcode_local_10 = 0wx33 and opcode_local_11 = 0wx34 and opcode_indirect_0 = 0wx35 and opcode_indirect_1 = 0wx36 and opcode_indirect_2 = 0wx37 and opcode_indirect_3 = 0wx38 and opcode_indirect_4 = 0wx39 and opcode_indirect_5 = 0wx3a and opcode_const_0 = 0wx3b and opcode_const_1 = 0wx3c and opcode_const_2 = 0wx3d and opcode_const_3 = 0wx3e and opcode_const_4 = 0wx3f and opcode_const_10 = 0wx40 and opcode_return_0 = 0wx41 and opcode_return_1 = 0wx42 and opcode_return_2 = 0wx43 and opcode_return_3 = 0wx44 and opcode_moveToVec_0 = 0wx45 and opcode_moveToVec_1 = 0wx46 and opcode_moveToVec_2 = 0wx47 and opcode_moveToVec_3 = 0wx48 and opcode_moveToVec_4 = 0wx49 and opcode_moveToVec_5 = 0wx4a and opcode_moveToVec_6 = 0wx4b and opcode_moveToVec_7 = 0wx4c and opcode_reset_1 = 0wx50 and opcode_reset_2 = 0wx51 and opcode_getStore_2 = 0wx52 and opcode_getStore_3 = 0wx53 and opcode_getStore_4 = 0wx54 and opcode_tuple_containerW = 0wx55 and opcode_nonLocalL_1 = 0wx56 and opcode_nonLocalL_2 = 0wx57 and opcode_nonLocalL_3 = 0wx58 and opcode_resetR_1 = 0wx64 and opcode_resetR_2 = 0wx65 and opcode_resetR_3 = 0wx66 and opcode_tupleW = 0wx67 and opcode_tupleB = 0wx68 and opcode_tuple_2 = 0wx69 and opcode_tuple_3 = 0wx6a and opcode_tuple_4 = 0wx6b and opcode_lock = 0wx6c and opcode_ldexc = 0wx6d and opcode_pushHandler = 0wx78 and opcode_tailbb = 0wx7b and opcode_tail = 0wx7c and opcode_tail3b = 0wx7d and opcode_tail4b = 0wx7e and opcode_tail3_2 = 0wx7f and opcode_tail3_3 = 0wx80 and opcode_setHandler = 0wx81 and opcode_callFastRTS0 = 0wx83 and opcode_callFastRTS1 = 0wx84 and opcode_callFastRTS2 = 0wx85 and opcode_callFastRTS3 = 0wx86 and opcode_callFastRTS4 = 0wx87 and opcode_callFastRTS5 = 0wx88 and opcode_callFullRTS0 = 0wx89 and opcode_callFullRTS1 = 0wx8a and opcode_callFullRTS2 = 0wx8b and opcode_callFullRTS3 = 0wx8c and opcode_callFullRTS4 = 0wx8d and opcode_callFullRTS5 = 0wx8e and opcode_callFastRTSFtoF = 0wx8f and opcode_callFastRTSGtoF = 0wx90 and opcode_notBoolean = 0wx91 and opcode_isTagged = 0wx92 and opcode_cellLength = 0wx93 and opcode_cellFlags = 0wx94 and opcode_clearMutable = 0wx95 and opcode_atomicIncr = 0wx97 and opcode_atomicDecr = 0wx98 and opcode_atomicReset = 0wx99 and opcode_longWToTagged = 0wx9a and opcode_signedToLongW = 0wx9b and opcode_unsignedToLongW = 0wx9c and opcode_realAbs = 0wx9d and opcode_realNeg = 0wx9e and opcode_floatFixedInt = 0wx9f and opcode_equalWord = 0wxa0 and opcode_notequalWord = 0wxa1 and opcode_lessSigned = 0wxa2 and opcode_lessUnsigned = 0wxa3 and opcode_lessEqSigned = 0wxa4 and opcode_lessEqUnsigned = 0wxa5 and opcode_greaterSigned = 0wxa6 and opcode_greaterUnsigned = 0wxa7 and opcode_greaterEqSigned = 0wxa8 and opcode_greaterEqUnsigned = 0wxa9 and opcode_fixedAdd = 0wxaa and opcode_fixedSub = 0wxab and opcode_fixedMult = 0wxac and opcode_fixedQuot = 0wxad and opcode_fixedRem = 0wxae and opcode_fixedDiv = 0wxaf and opcode_fixedMod = 0wxb0 and opcode_wordAdd = 0wxb1 and opcode_wordSub = 0wxb2 and opcode_wordMult = 0wxb3 and opcode_wordDiv = 0wxb4 and opcode_wordMod = 0wxb5 and opcode_wordAnd = 0wxb7 and opcode_wordOr = 0wxb8 and opcode_wordXor = 0wxb9 and opcode_wordShiftLeft = 0wxba and opcode_wordShiftRLog = 0wxbb and opcode_wordShiftRArith = 0wxbc and opcode_allocByteMem = 0wxbd and opcode_lgWordEqual = 0wxbe and opcode_lgWordNotequal = 0wxbf and opcode_lgWordLess = 0wxc0 and opcode_lgWordLessEq = 0wxc1 and opcode_lgWordGreater = 0wxc2 and opcode_lgWordGreaterEq = 0wxc3 and opcode_lgWordAdd = 0wxc4 and opcode_lgWordSub = 0wxc5 and opcode_lgWordMult = 0wxc6 and opcode_lgWordDiv = 0wxc7 and opcode_lgWordMod = 0wxc8 and opcode_lgWordAnd = 0wxc9 and opcode_lgWordOr = 0wxca and opcode_lgWordXor = 0wxcb and opcode_lgWordShiftLeft = 0wxcc and opcode_lgWordShiftRLog = 0wxcd and opcode_lgWordShiftRArith = 0wxce and opcode_realEqual = 0wxcf and opcode_realNotequal = 0wxd0 and opcode_realLess = 0wxd1 and opcode_realLessEq = 0wxd2 and opcode_realGreater = 0wxd3 and opcode_realGreaterEq = 0wxd4 and opcode_realAdd = 0wxd5 and opcode_realSub = 0wxd6 and opcode_realMult = 0wxd7 and opcode_realDiv = 0wxd8 and opcode_getThreadId = 0wxd9 and opcode_allocWordMemory = 0wxda and opcode_loadMLWord = 0wxdb and opcode_loadMLByte = 0wxdc and opcode_loadC8 = 0wxdd and opcode_loadC16 = 0wxde and opcode_loadC32 = 0wxdf and opcode_loadC64 = 0wxe0 and opcode_loadCFloat = 0wxe1 and opcode_loadCDouble = 0wxe2 and opcode_storeMLWord = 0wxe3 and opcode_storeMLByte = 0wxe4 and opcode_storeC8 = 0wxe5 and opcode_storeC16 = 0wxe6 and opcode_storeC32 = 0wxe7 and opcode_storeC64 = 0wxe8 and opcode_storeCFloat = 0wxe9 and opcode_storeCDouble = 0wxea and opcode_blockMoveWord = 0wxeb and opcode_blockMoveByte = 0wxec and opcode_blockEqualByte = 0wxed and opcode_blockCompareByte = 0wxee and opcode_loadUntagged = 0wxef and opcode_storeUntagged = 0wxf0 and opcode_deleteHandler = 0wxf1 (* Just deletes the handler - no jump. *) and opcode_jump32 = 0wxf2 (* 32-bit signed jump, forwards or backwards. *) and opcode_jump32False = 0wxf3 (* Test top item. Take 32-bit signed jump if false. *) and opcode_constAddr32 = 0wxf4 (* Followed by a 32-bit offset. Load a constant at that address. *) and opcode_setHandler32 = 0wxf5 (* Setup a handler whose address is given by the 32-bit signed offset. *) and opcode_case32 = 0wxf6 (* Indexed case with 32-bit offsets *) and opcode_jump16 = 0wxf7 and opcode_jump16False = 0wxf8 and opcode_setHandler16 = 0wxf9 and opcode_constAddr8 = 0wxfa and opcode_stackSize8 = 0wxfb and opcode_stackSize16 = 0wxfc local val repArray : string Array.array = Array.tabulate (256, fn (i) => ""); fun repUpdate (n, s) = Array.update (repArray, Word8.toInt n, s); val () = repUpdate(opcode_enterInt, "enterInt"); val () = repUpdate(opcode_jump, "jump"); val () = repUpdate(opcode_jumpFalse, "jumpFalse"); val () = repUpdate(opcode_delHandler, "delHandler"); val () = repUpdate(opcode_alloc_ref, "alloc_ref"); val () = repUpdate(opcode_case16, "case16"); val () = repUpdate(opcode_callClosure, "callClosure"); val () = repUpdate(opcode_returnW, "returnW"); val () = repUpdate(opcode_pad, "pad"); val () = repUpdate(opcode_raiseEx, "raiseEx"); val () = repUpdate(opcode_getStoreW, "getStoreW"); val () = repUpdate(opcode_nonLocal, "nonLocal"); val () = repUpdate(opcode_localW, "localW"); val () = repUpdate(opcode_indirectW, "indirectW"); val () = repUpdate(opcode_moveToVecW, "moveToVecW"); val () = repUpdate(opcode_setStackValW, "setStackValW"); val () = repUpdate(opcode_resetW, "resetW"); val () = repUpdate(opcode_resetR_w, "resetR_w"); val () = repUpdate(opcode_constAddr16, "constAddr16"); val () = repUpdate(opcode_constIntW, "constIntW"); val () = repUpdate(opcode_jumpBack8, "jumpBack8"); val () = repUpdate(opcode_returnB, "returnB"); val () = repUpdate(opcode_jumpBack16, "jumpBack16"); val () = repUpdate(opcode_getStoreB, "getStoreB"); val () = repUpdate(opcode_localB, "localB"); val () = repUpdate(opcode_indirectB, "indirectB"); val () = repUpdate(opcode_moveToVecB, "moveToVecB"); val () = repUpdate(opcode_setStackValB, "setStackValB"); val () = repUpdate(opcode_resetB, "resetB"); val () = repUpdate(opcode_resetRB, "resetRB"); val () = repUpdate(opcode_constIntB, "constIntB"); val () = repUpdate(opcode_local_0, "local_0"); val () = repUpdate(opcode_local_1, "local_1"); val () = repUpdate(opcode_local_2, "local_2"); val () = repUpdate(opcode_local_3, "local_3"); val () = repUpdate(opcode_local_4, "local_4"); val () = repUpdate(opcode_local_5, "local_5"); val () = repUpdate(opcode_local_6, "local_6"); val () = repUpdate(opcode_local_7, "local_7"); val () = repUpdate(opcode_local_8, "local_8"); val () = repUpdate(opcode_local_9, "local_9"); val () = repUpdate(opcode_local_10, "local_10"); val () = repUpdate(opcode_local_11, "local_11"); val () = repUpdate(opcode_indirect_0, "indirect_0"); val () = repUpdate(opcode_indirect_1, "indirect_1"); val () = repUpdate(opcode_indirect_2, "indirect_2"); val () = repUpdate(opcode_indirect_3, "indirect_3"); val () = repUpdate(opcode_indirect_4, "indirect_4"); val () = repUpdate(opcode_indirect_5, "indirect_5"); val () = repUpdate(opcode_const_0, "const_0"); val () = repUpdate(opcode_const_1, "const_1"); val () = repUpdate(opcode_const_2, "const_2"); val () = repUpdate(opcode_const_3, "const_3"); val () = repUpdate(opcode_const_4, "const_4"); val () = repUpdate(opcode_const_10, "const_10"); val () = repUpdate(opcode_return_0, "return_0"); val () = repUpdate(opcode_return_1, "return_1"); val () = repUpdate(opcode_return_2, "return_2"); val () = repUpdate(opcode_return_3, "return_3"); val () = repUpdate(opcode_moveToVec_0, "moveToVec_0"); val () = repUpdate(opcode_moveToVec_1, "moveToVec_1"); val () = repUpdate(opcode_moveToVec_2, "moveToVec_2"); val () = repUpdate(opcode_moveToVec_3, "moveToVec_3"); val () = repUpdate(opcode_moveToVec_4, "moveToVec_4"); val () = repUpdate(opcode_moveToVec_5, "moveToVec_5"); val () = repUpdate(opcode_moveToVec_6, "moveToVec_6"); val () = repUpdate(opcode_moveToVec_7, "moveToVec_7"); val () = repUpdate(opcode_reset_1, "reset_1"); val () = repUpdate(opcode_reset_2, "reset_2"); val () = repUpdate(opcode_getStore_2, "getStore_2"); val () = repUpdate(opcode_getStore_3, "getStore_3"); val () = repUpdate(opcode_getStore_4, "getStore_4"); val () = repUpdate(opcode_nonLocalL_1, "nonLocalL_1"); val () = repUpdate(opcode_nonLocalL_2, "nonLocalL_2"); val () = repUpdate(opcode_nonLocalL_3, "nonLocalL_3"); val () = repUpdate(opcode_resetR_1, "resetR_1"); val () = repUpdate(opcode_resetR_2, "resetR_2"); val () = repUpdate(opcode_resetR_3, "resetR_3"); val () = repUpdate(opcode_tupleW, "tupleW"); val () = repUpdate(opcode_tupleB, "tupleB"); val () = repUpdate(opcode_tuple_2, "tuple_2"); val () = repUpdate(opcode_tuple_3, "tuple_3"); val () = repUpdate(opcode_tuple_4, "tuple_4"); val () = repUpdate(opcode_lock, "lock"); val () = repUpdate(opcode_ldexc, "ldexc"); val () = repUpdate(opcode_setHandler, "setHandler"); val () = repUpdate(opcode_pushHandler, "pushHandler"); val () = repUpdate(opcode_tailbb, "tailbb"); val () = repUpdate(opcode_tail, "tail"); val () = repUpdate(opcode_tail3b, "tail3b"); val () = repUpdate(opcode_tail4b, "tail4b"); val () = repUpdate(opcode_tail3_2, "tail3_2"); val () = repUpdate(opcode_tail3_3, "tail3_3"); val () = repUpdate(opcode_callFastRTS0, "callFastRTS0") val () = repUpdate(opcode_callFastRTS1, "callFastRTS1") val () = repUpdate(opcode_callFastRTS2, "callFastRTS2") val () = repUpdate(opcode_callFastRTS3, "callFastRTS3") val () = repUpdate(opcode_callFastRTS4, "callFastRTS4") val () = repUpdate(opcode_callFastRTS5, "callFastRTS5") val () = repUpdate(opcode_callFullRTS0, "callFullRTS0") val () = repUpdate(opcode_callFullRTS1, "callFullRTS1") val () = repUpdate(opcode_callFullRTS2, "callFullRTS2") val () = repUpdate(opcode_callFullRTS3, "callFullRTS3") val () = repUpdate(opcode_callFullRTS4, "callFullRTS4") val () = repUpdate(opcode_callFullRTS5, "callFullRTS5") val () = repUpdate(opcode_callFastRTSFtoF, "callFullRTSFtoF") val () = repUpdate(opcode_callFastRTSGtoF, "callFullRTSGtoF") val () = repUpdate(opcode_notBoolean, "notBoolean") val () = repUpdate(opcode_isTagged, "isTagged") val () = repUpdate(opcode_cellLength, "cellLength") val () = repUpdate(opcode_cellFlags, "cellFlags") val () = repUpdate(opcode_clearMutable, "clearMutable") val () = repUpdate(opcode_atomicIncr, "atomicIncr") val () = repUpdate(opcode_atomicDecr, "atomicDecr") val () = repUpdate(opcode_atomicReset, "atomicReset") val () = repUpdate(opcode_longWToTagged, "longWToTagged") val () = repUpdate(opcode_signedToLongW, "signedToLongW") val () = repUpdate(opcode_unsignedToLongW, "unsignedToLongW") val () = repUpdate(opcode_realAbs, "realAbs") val () = repUpdate(opcode_realNeg, "realNeg") val () = repUpdate(opcode_floatFixedInt, "floatFixedInt") val () = repUpdate(opcode_equalWord, "equalWord") val () = repUpdate(opcode_notequalWord, "notequalWord") val () = repUpdate(opcode_lessSigned, "lessSigned") val () = repUpdate(opcode_lessUnsigned, "lessUnsigned") val () = repUpdate(opcode_lessEqSigned, "lessEqSigned") val () = repUpdate(opcode_lessEqUnsigned, "lessEqUnsigned") val () = repUpdate(opcode_greaterSigned, "greaterSigned") val () = repUpdate(opcode_greaterUnsigned, "greaterUnsigned") val () = repUpdate(opcode_greaterEqSigned, "greaterEqSigned") val () = repUpdate(opcode_greaterEqUnsigned, "greaterEqUnsigned") val () = repUpdate(opcode_fixedAdd, "fixedAdd") val () = repUpdate(opcode_fixedSub, "fixedSub") val () = repUpdate(opcode_fixedMult, "fixedMult") val () = repUpdate(opcode_fixedQuot, "fixedQuot") val () = repUpdate(opcode_fixedRem, "fixedRem") val () = repUpdate(opcode_fixedDiv, "fixedDiv") val () = repUpdate(opcode_fixedMod, "fixedMod") val () = repUpdate(opcode_wordAdd, "wordAdd") val () = repUpdate(opcode_wordSub, "wordSub") val () = repUpdate(opcode_wordMult, "wordMult") val () = repUpdate(opcode_wordDiv, "wordDiv") val () = repUpdate(opcode_wordMod, "wordMod") val () = repUpdate(opcode_wordAnd, "wordAnd") val () = repUpdate(opcode_wordOr, "wordOr") val () = repUpdate(opcode_wordXor, "wordXor") val () = repUpdate(opcode_wordShiftLeft, "wordShiftLeft") val () = repUpdate(opcode_wordShiftRLog, "wordShiftRLog") val () = repUpdate(opcode_wordShiftRArith, "wordShiftRArith") val () = repUpdate(opcode_allocByteMem, "allocByteMem") val () = repUpdate(opcode_lgWordEqual, "lgWordEqual") val () = repUpdate(opcode_lgWordNotequal, "lgWordNotequal") val () = repUpdate(opcode_lgWordLess, "lgWordLess") val () = repUpdate(opcode_lgWordLessEq, "lgWordLessEq") val () = repUpdate(opcode_lgWordGreater, "lgWordGreater") val () = repUpdate(opcode_lgWordGreaterEq, "lgWordGreaterEq") val () = repUpdate(opcode_lgWordAdd, "lgWordAdd") val () = repUpdate(opcode_lgWordSub, "lgWordSub") val () = repUpdate(opcode_lgWordMult, "lgWordMult") val () = repUpdate(opcode_lgWordDiv, "lgWordDiv") val () = repUpdate(opcode_lgWordMod, "lgWordMod") val () = repUpdate(opcode_lgWordAnd, "lgWordAnd") val () = repUpdate(opcode_lgWordOr, "lgWordOr") val () = repUpdate(opcode_lgWordXor, "lgWordXor") val () = repUpdate(opcode_lgWordShiftLeft, "lgWordShiftLeft") val () = repUpdate(opcode_lgWordShiftRLog, "lgWordShiftRLog") val () = repUpdate(opcode_lgWordShiftRArith, "lgWordShiftRArith") val () = repUpdate(opcode_realEqual, "realEqual") val () = repUpdate(opcode_realNotequal, "realNotequal") val () = repUpdate(opcode_realLess, "realLess") val () = repUpdate(opcode_realLessEq, "realLessEq") val () = repUpdate(opcode_realGreater, "realGreater") val () = repUpdate(opcode_realGreaterEq, "realGreaterEq") val () = repUpdate(opcode_realAdd, "realAdd") val () = repUpdate(opcode_realSub, "realSub") val () = repUpdate(opcode_realMult, "realMult") val () = repUpdate(opcode_realDiv, "realDiv") val () = repUpdate(opcode_getThreadId, "getThreadId") val () = repUpdate(opcode_allocWordMemory, "allocWordMemory") val () = repUpdate(opcode_loadMLWord, "loadMLWord") val () = repUpdate(opcode_loadMLByte, "loadMLByte") val () = repUpdate(opcode_loadC8, "loadC8") val () = repUpdate(opcode_loadC16, "loadC16") val () = repUpdate(opcode_loadC32, "loadC32") val () = repUpdate(opcode_loadC64, "loadC64") val () = repUpdate(opcode_loadCFloat, "loadCFloat") val () = repUpdate(opcode_loadCDouble, "loadCDouble") val () = repUpdate(opcode_storeMLWord, "storeMLWord") val () = repUpdate(opcode_storeMLByte, "storeMLByte") val () = repUpdate(opcode_storeC8, "storeC8") val () = repUpdate(opcode_storeC16, "storeC16") val () = repUpdate(opcode_storeC32, "storeC32") val () = repUpdate(opcode_storeC64, "storeC64") val () = repUpdate(opcode_storeCFloat, "storeCFloat") val () = repUpdate(opcode_storeCDouble, "storeCDouble") val () = repUpdate(opcode_blockMoveWord, "blockMoveWord") val () = repUpdate(opcode_blockMoveByte, "blockMoveByte") val () = repUpdate(opcode_blockEqualByte, "blockEqualByte") val () = repUpdate(opcode_blockCompareByte, "blockCompareByte") val () = repUpdate(opcode_loadUntagged, "loadUntagged") val () = repUpdate(opcode_deleteHandler, "deleteHandler") val () = repUpdate(opcode_jump32, "jump32") val () = repUpdate(opcode_jump32False, "jump32False") val () = repUpdate(opcode_constAddr32, "constAddr32") val () = repUpdate(opcode_setHandler32, "setHandler32") val () = repUpdate(opcode_jump16, "jump16") val () = repUpdate(opcode_case32, "case32") val () = repUpdate(opcode_jump16False, "jump16false") val () = repUpdate(opcode_setHandler16, "setHandler16") val () = repUpdate(opcode_constAddr8, "constAddr8") val () = repUpdate(opcode_stackSize8, "stackSize8") val () = repUpdate(opcode_stackSize16, "stackSize16") in fun repr n : string = Array.sub (repArray, Word8.toInt n); end; local val sizeArray : int Array.array = Array.array (256, 1); fun sizeUpdate (n, s) = Array.update (sizeArray, Word8.toInt n, s); val () = sizeUpdate(opcode_enterInt , 2); val () = sizeUpdate(opcode_jump , 2); val () = sizeUpdate(opcode_jumpFalse , 2); val () = sizeUpdate(opcode_delHandler , 2); val () = sizeUpdate(opcode_case16 , 3); val () = sizeUpdate(opcode_returnW , 3); val () = sizeUpdate(opcode_getStoreW , 3); val () = sizeUpdate(opcode_nonLocal , 7); val () = sizeUpdate(opcode_localW , 3); val () = sizeUpdate(opcode_indirectW , 3); val () = sizeUpdate(opcode_moveToVecW , 3); val () = sizeUpdate(opcode_setStackValW, 3); val () = sizeUpdate(opcode_resetW , 3); val () = sizeUpdate(opcode_resetR_w , 3); val () = sizeUpdate(opcode_constAddr16 , 3); val () = sizeUpdate(opcode_constIntW , 3); val () = sizeUpdate(opcode_jumpBack8 , 2); val () = sizeUpdate(opcode_returnB , 2); val () = sizeUpdate(opcode_jumpBack16 , 3); val () = sizeUpdate(opcode_getStoreB , 2); val () = sizeUpdate(opcode_localB , 2); val () = sizeUpdate(opcode_indirectB , 2); val () = sizeUpdate(opcode_moveToVecB , 2); val () = sizeUpdate(opcode_setStackValB, 2); val () = sizeUpdate(opcode_resetB , 2); val () = sizeUpdate(opcode_resetRB , 2); val () = sizeUpdate(opcode_constIntB , 2); val () = sizeUpdate(opcode_nonLocalL_1 , 2); val () = sizeUpdate(opcode_nonLocalL_2 , 2); val () = sizeUpdate(opcode_nonLocalL_3 , 2); val () = sizeUpdate(opcode_tupleW , 3); val () = sizeUpdate(opcode_tupleB , 2); val () = sizeUpdate(opcode_setHandler , 2); val () = sizeUpdate(opcode_tailbb , 3); val () = sizeUpdate(opcode_tail , 5); val () = sizeUpdate(opcode_tail3b , 2); val () = sizeUpdate(opcode_tail4b , 2); val () = sizeUpdate(opcode_case32 , 3); val () = sizeUpdate(opcode_jump32, 5) val () = sizeUpdate(opcode_jump32False, 5) val () = sizeUpdate(opcode_constAddr32, 5) val () = sizeUpdate(opcode_setHandler32, 5) val () = sizeUpdate(opcode_constAddr8 , 2); val () = sizeUpdate(opcode_stackSize8 , 2); val () = sizeUpdate(opcode_stackSize16 , 3); in fun size n = Array.sub (sizeArray, Word8.toInt n); end (* A Label is a ref that is later set to the location. *) type labels = {destination: Word.word ref } (* Used for jump, jumpFalse, setHandler and delHandler. *) datatype jumpTypes = Jump | JumpFalse | SetHandler datatype opcode = SimpleCode of Word8.word list (* Bytes that don't need any special treatment *) | LabelCode of labels (* A label - forwards or backwards. *) | JumpInstruction of { label: labels, jumpType: jumpTypes, size : jumpSize ref } (* Jumps or SetHandler. *) | PushConstant of { constNum: int, size : jumpSize ref } | IndexedCase of { labels: labels list, size : jumpSize ref } and jumpSize = Size8 | Size16 | Size32 and code = Code of { constVec: machineWord list ref, (* Vector of words to be put at end *) procName: string, (* Name of the procedure. *) printAssemblyCode:bool, (* Whether to print the code when we finish. *) printStream: string->unit, (* The stream to use *) stage1Code: opcode list ref } (* create and initialise a code segment *) fun codeCreate (name : string, parameters) = let val printStream = PRETTY.getSimplePrinter(parameters, []); in Code { constVec = ref [], procName = name, printAssemblyCode = DEBUG.getParameter DEBUG.assemblyCodeTag parameters, printStream = printStream, stage1Code = ref [] } end (* Find the offset in the constant area of a constant. *) (* The first has offset 0. *) fun addConstToVec (valu, Code{constVec, ...}) = let (* Search the list to see if the constant is already there. *) fun findConst valu [] num = (* Add to the list *) ( constVec := ! constVec @ [valu]; num ) | findConst valu (h :: t) num = if wordEq (valu, h) then num else findConst valu t (num + 1) (* Not equal *) in findConst valu (! constVec) 0 end fun printCode (seg: codeVec, procName: string, endcode, printStream) = let val () = printStream "\n"; val () = if procName = "" (* No name *) then printStream "?" else printStream procName; val () = printStream ":\n"; (* prints a string representation of a number *) fun printHex (v) = printStream(Word.fmt StringCvt.HEX v); val ptr = ref 0w0; (* To make sure we do not print branch extensions as though they were instructions we keep a list of all indirect forward references and print values at those addresses as addresses. This list is sorted with the lowest address first. *) val indirections = ref []; local fun addL (n, []) = [n] | addL (n, l as (x :: xs)) = if n < x then n :: l else if n = x then l else x :: addL (n, xs) in fun addInd (ind) = indirections := addL (ind, !indirections) end (* Gets "length" bytes from locations "addr", "addr"+1... Returns an unsigned number. *) fun getB (0, _, _) = 0w0 | getB (length, addr, seg) = (getB (length - 1, addr + 0w1, seg) << 0w8) + word8ToWord (codeVecGet (seg, addr)) (* Prints a relative address. *) fun printDisp (len, spacer: string, addToList: bool) = let val ad = getB(len, !ptr, seg) + !ptr + Word.fromInt len val () = if addToList then addInd ad else (); val () = printStream spacer; val () = printHex ad; in ptr := !ptr + Word.fromInt len end (* Prints an operand of an instruction *) fun printOp (len, spacer : string) = let val () = printStream spacer; val () = printHex (getB (len, !ptr, seg)) in ptr := !ptr + Word.fromInt len end; in while !ptr < endcode do let val addr = !ptr in printHex addr; (* The address. *) if (case !indirections of v :: _ => v = addr | [] => false) then let (* It's an address. *) val () = printDisp (2, "\t", false); in case !indirections of _ :: vs => indirections := vs | _ => raise InternalError "printCode: indirection list confused" end else let (* It's an instruction. *) val () = printStream "\t"; val opc = codeVecGet (seg, !ptr) (* opcode *) val () = ptr := !ptr + 0w1; val () = printStream (repr opc); val sz = size opc; in if sz = 1 then () else if opc = opcode_jump orelse opc = opcode_jumpFalse orelse opc = opcode_setHandler orelse opc = opcode_delHandler orelse opc = opcode_constAddr16 orelse opc = opcode_jump32 orelse opc = opcode_jump32False orelse opc = opcode_setHandler32 orelse opc = opcode_constAddr8 orelse opc = opcode_constAddr32 then printDisp (sz - 1, "\t", false) else if opc = opcode_jumpBack8 (* Should be negative *) then ( printStream "\t"; printHex((!ptr - 0w1) - getB(1, !ptr, seg)); ptr := !ptr + 0w1 ) else if opc = opcode_jumpBack16 (* Should be negative *) then ( printStream "\t"; printHex((!ptr - 0w1) - getB(2, !ptr, seg)); ptr := !ptr + 0w2 ) else if opc = opcode_nonLocal then ( printOp (2, "\t"); printOp (2, ","); printOp(2, ",")) else if opc = opcode_case16 then let (* Have to find out how many items there are. *) val limit = getB (2, !ptr, seg); val () = printOp (2, "\t"); val base = !ptr; fun printEntry _ = (printStream "\n\t"; printHex(base + getB(2, !ptr, seg)); ptr := !ptr + 0w2) fun forLoop f i n = if i > n then () else (f i; forLoop f (i + 0w1) n) in forLoop printEntry 0w0 limit end else if opc = opcode_tail then (printOp (2, "\t"); printOp (2, ",")) else if opc = opcode_tailbb then (printOp (1, "\t"); printOp (1, ",")) else printOp (sz - 1, "\t") end; (* an instruction. *) printStream "\n" end (* main loop *) end (* printCode *) fun codeSize (SimpleCode l) = List.length l | codeSize (LabelCode _) = 0 | codeSize (JumpInstruction{size=ref Size8, ...}) = 2 | codeSize (JumpInstruction{size=ref Size16, ...}) = 3 | codeSize (JumpInstruction{size=ref Size32, ...}) = 5 | codeSize (PushConstant{size=ref Size8, ...}) = 2 | codeSize (PushConstant{size=ref Size16, ...}) = 3 | codeSize (PushConstant{size=ref Size32, ...}) = 5 | codeSize (IndexedCase{labels, size=ref Size32, ...}) = 3 + List.length labels * 4 | codeSize (IndexedCase{labels, size=ref Size16, ...}) = 3 + List.length labels * 2 | codeSize (IndexedCase{labels=_, size=ref Size8, ...}) = raise InternalError "codeSize" (* General function to process the code. ic is the byte counter within the original code. *) fun foldCode foldFn n ops = let fun doFold(oper :: operList, ic, acc) = doFold(operList, ic + Word.fromInt(codeSize oper), foldFn(oper, ic, acc)) | doFold(_, _, n) = n in doFold(ops, 0w0, n) end (* Process the code, setting the destination of any labels. Return the length of the code. *) fun setLabels(LabelCode{destination, ...} :: ops, ic) = (destination := ic; setLabels(ops, ic)) | setLabels(oper :: ops, ic) = setLabels(ops, ic + Word.fromInt(codeSize oper)) | setLabels([], ic) = ic (* Set the sizes of branches depending on the distance to the destination. *) fun setLabelsAndSizes ops = let (* Set the labels and adjust the sizes, repeating until it never gets smaller*) fun setLabAndSize(ops, lastSize) = let (* Calculate offsets for constants. *) val endIC = Word.andb(lastSize + wordLength - 0w1, ~ wordLength) val firstConstant = endIC + wordLength * 0w3 (* Because the constant area is word aligned we have to allow for the possibility that the distance between a "load constant" instruction and the target could actually increase. *) val alignment = wordLength - 0w1 fun adjust(JumpInstruction{size as ref Size32, label={destination=ref dest}, ...}, ic, _) = let val diff = if dest <= ic (* N.B. Include infinite loops as backwards. *) then ic - dest (* Backwards - Counts from start of instruction. *) else dest - (ic + 0w5) (* Forwards - Relative to the current end. *) in if diff < 0wx100 then size := Size8 else if diff < 0wx10000 then size := Size16 else () end | adjust(JumpInstruction{size as ref Size16, label={destination=ref dest}, ...}, ic, _) = if dest <= ic then if ic - dest < 0wx100 then size := Size8 else () else if dest - (ic + 0w3) < 0wx100 then size := Size8 else () | adjust(IndexedCase{size as ref Size32, labels}, ic, _) = let val startAddr = ic+0w3 (* Use 16-bit case if all the offsets are 16-bits. *) fun is16bit{destination=ref dest} = dest > startAddr andalso dest < startAddr+0wx10000 in if List.all is16bit labels then size := Size16 else () end | adjust(PushConstant{size as ref Size32, constNum, ...}, ic, _) = let val constAddr = firstConstant + Word.fromInt constNum * wordLength val offset = constAddr - (ic + 0w5) in if offset < 0wx100-alignment then size := Size8 else if offset < 0wx10000-alignment then size := Size16 else () end | adjust(PushConstant{size as ref Size16, constNum, ...}, ic, _) = let val constAddr = firstConstant + Word.fromInt constNum * wordLength val offset = constAddr - (ic + 0w3) in if offset < 0wx100-alignment then size := Size8 else () end | adjust _ = () val () = foldCode adjust () ops val nextSize = setLabels(ops, 0w0) in if nextSize < lastSize then setLabAndSize(ops, nextSize) else if nextSize = lastSize then lastSize else raise InternalError "setLabAndSize - size increased" end in setLabAndSize(ops, setLabels(ops, 0w0)) end fun genCode(ops, Code {constVec, ...}) = let (* First pass - set the labels. *) val codeSize = setLabelsAndSizes ops (* Align to wordLength. *) val endIC = Word.andb(codeSize + wordLength - 0w1, ~ wordLength) val endOfCode = endIC div wordLength val firstConstant = endIC + wordLength * 0w3 (* Add 3 for fn name, unused and profile count. *) val segSize = endOfCode + Word.fromInt(List.length(! constVec)) + 0w4 val codeVec = byteVecMake segSize val ic = ref 0w0 fun genByte b = byteVecSet(codeVec, !ic, b) before ic := !ic + 0w1 fun genByteCode(SimpleCode bytes, _, _) = (* Simple code - just generate the bytes. *) List.app genByte bytes | genByteCode(LabelCode _, _, _) = () | genByteCode(JumpInstruction{label={destination=ref dest}, jumpType, size=ref Size32, ...}, ic, _) = let val opc = case jumpType of SetHandler => opcode_setHandler32 | JumpFalse => opcode_jump32False | Jump => opcode_jump32 val diff = dest - (ic + 0w5) in genByte opc; genByte(wordToWord8 diff); (* This may be negative so we must use an arithmetic shift. *) genByte(wordToWord8(diff ~>> 0w8)); genByte(wordToWord8(diff ~>> 0w16)); genByte(wordToWord8(diff ~>> 0w24)) end | genByteCode(JumpInstruction{label={destination=ref dest}, jumpType, size=ref Size16, ...}, ic, _) = if dest <= ic then (* Jump back. *) let val _ = jumpType = Jump orelse raise InternalError "genByteCode - back jump" val diff = ic - dest val _ = diff < 0wx10000 orelse raise InternalError "genByteCode - jump range" in genByte opcode_jumpBack16; genByte(wordToWord8 diff); genByte(wordToWord8(diff >> 0w8)) end else let val opc = case jumpType of SetHandler => opcode_setHandler16 | JumpFalse => opcode_jump16False | Jump => opcode_jump16 val diff = dest - (ic + 0w3) val _ = diff < 0wx10000 orelse raise InternalError "genByteCode - jump range" in genByte opc; genByte(wordToWord8 diff); genByte(wordToWord8(diff >> 0w8)) end | genByteCode(JumpInstruction{label={destination=ref dest}, jumpType, size=ref Size8, ...}, ic, _) = if dest <= ic then (* Jump back. *) let val _ = jumpType = Jump orelse raise InternalError "genByteCode - back jump" val diff = ic - dest val _ = diff < 0wx100 orelse raise InternalError "genByteCode - jump range" in genByte opcode_jumpBack8; genByte(wordToWord8 diff) end else let val opc = case jumpType of SetHandler => opcode_setHandler | JumpFalse => opcode_jumpFalse | Jump => opcode_jump val diff = dest - (ic + 0w2) val _ = diff < 0wx100 orelse raise InternalError "genByteCode - jump range" in genByte opc; genByte(wordToWord8 diff) end | genByteCode(PushConstant{ constNum, size=ref Size32, ... }, ic, _) = let val constAddr = firstConstant + Word.fromInt constNum * wordLength (* Offsets are calculated from the END of the instruction *) val offset = constAddr - (ic + 0w5) in genByte(opcode_constAddr32); genByte(wordToWord8 offset); genByte(wordToWord8(offset >> 0w8)); genByte(wordToWord8(offset >> 0w16)); genByte(wordToWord8(offset >> 0w24)) end | genByteCode(PushConstant{ constNum, size=ref Size16, ... }, ic, _) = let val constAddr = firstConstant + Word.fromInt constNum * wordLength val offset = constAddr - (ic + 0w3) val _ = offset < 0wx10000 orelse raise InternalError "genByteCode - constant range" in genByte(opcode_constAddr16); genByte(wordToWord8 offset); genByte(wordToWord8(offset >> 0w8)) end | genByteCode(PushConstant{ constNum, size=ref Size8, ... }, ic, _) = let val constAddr = firstConstant + Word.fromInt constNum * wordLength val offset = constAddr - (ic + 0w2) val _ = offset < 0wx100 orelse raise InternalError "genByteCode - constant range" in genByte(opcode_constAddr8); genByte(wordToWord8 offset) end | genByteCode(IndexedCase{labels, size=ref Size32, ...}, ic, _) = let val nCases = List.length labels val () = genByte(opcode_case32) val () = genByte(Word8.fromInt nCases) val () = genByte(Word8.fromInt (nCases div 256)) val startOffset = ic+0w3 (* Offsets are relative to here. *) fun putLabel{destination=ref dest} = let val diff = dest - startOffset val _ = dest > startOffset orelse raise InternalError "genByteCode - indexed case" in genByte(wordToWord8 diff); genByte(wordToWord8(diff >> 0w8)); genByte(wordToWord8(diff >> 0w16)); genByte(wordToWord8(diff >> 0w24)) end in List.app putLabel labels end | genByteCode(IndexedCase{labels, size=ref Size16, ...}, ic, _) = let val nCases = List.length labels val () = genByte(opcode_case16) val () = genByte(Word8.fromInt nCases) val () = genByte(Word8.fromInt (nCases div 256)) val startOffset = ic+0w3 (* Offsets are relative to here. *) fun putLabel{destination=ref dest} = let val diff = dest - startOffset val _ = dest > startOffset orelse raise InternalError "genByteCode - indexed case" val _ = diff < 0wx10000 orelse raise InternalError "genByteCode - indexed case" in genByte(wordToWord8 diff); genByte(wordToWord8(diff >> 0w8)) end in List.app putLabel labels end | genByteCode(IndexedCase{size=ref Size8, ...}, _, _) = raise InternalError "genByteCode - IndexedCase byte" in foldCode genByteCode () ops; (codeVec (* Return the completed code. *), endIC (* And the size. *)) end fun setLong (value, addrs, seg) = let fun putBytes(value, a, seg, i) = if i = wordLength then () else ( byteVecSet(seg, if littleEndian() then a+i else a+wordLength-i-0w1, Word8.fromInt(value mod 256)); putBytes(value div 256, a, seg, i+0w1) ) in putBytes(value, addrs, seg, 0w0) end (* Adds the constants onto the code, and copies the code into a new segment *) fun copyCode (cvec as Code{ printAssemblyCode, printStream, procName, constVec, stage1Code, ...}, maxStack) : address = let local val revCode = List.rev(!stage1Code) (* Add a stack check. *) val stackCheck = if maxStack < 256 then SimpleCode[opcode_stackSize8, Word8.fromInt maxStack] else SimpleCode[opcode_stackSize16, Word8.fromInt maxStack, Word8.fromInt(maxStack div 256)] in val codeList = stackCheck :: revCode end val (byteVec, endIC) = genCode(codeList, cvec) (* +3 for profile count, function name and constants count *) val numOfConst = List.length(! constVec) val endOfCode = endIC div wordLength val segSize = endOfCode + Word.fromInt numOfConst + 0w4 val firstConstant = endIC + wordLength * 0w3 (* Add 3 for fn name, unused and profile count. *) (* Put in the number of constants. This must go in before we actually put in any constants. *) local val addr = ((segSize - 0w1) * wordLength) in val () = setLong (numOfConst + 3, addr, byteVec) end (* Now we've filled in all the size info we need to convert the segment into a proper code segment before it's safe to put in any ML values. *) val codeVec = byteVecToCodeVec byteVec local val name : string = procName val nameWord : machineWord = toMachineWord name in val () = codeVecPutWord (codeVec, endOfCode, nameWord) end (* This used to be used on X86 for the register mask. *) val () = codeVecPutWord (codeVec, endOfCode+0w1, toMachineWord 1) (* Profile ref. A byte ref used by the profiler in the RTS. *) local val v = RunCall.allocateByteMemory(0w1, Word.fromLargeWord(Word8.toLargeWord(Word8.orb(F_mutable, F_bytes)))) fun clear 0w0 = () | clear i = (assignByte(v, i-0w1, 0w0); clear (i-0w1)) val () = clear(Word.fromInt wordSize) in val () = codeVecPutWord (codeVec, endOfCode+0w2, toMachineWord v) end (* and then copy the constants from the constant list. *) local fun setConstant(value, num) = let val constAddr = (firstConstant div wordLength) + num in codeVecPutWord (codeVec, constAddr, value); num+0w1 end in val _ = List.foldl setConstant 0w0 (!constVec) end in if printAssemblyCode then (* print out the code *) (printCode (codeVec, procName, endIC, printStream); printStream"\n") else (); codeVecLockAndGetExecutable codeVec end (* copyCode *) fun addItemToList(item, Code{stage1Code, ...}) = stage1Code := item :: !stage1Code val genOpcode = addItemToList fun putBranchInstruction(brOp, label, cvec) = addItemToList(JumpInstruction{label=label, jumpType=brOp, size = ref Size32}, cvec) fun setLabel(label, cvec) = addItemToList(LabelCode label, cvec) fun createLabel () = { destination=ref 0w0 } local fun genOpc(opc, cvec) = addItemToList(SimpleCode [opc], cvec) and genOpcByte(opc, arg1, cvec) = addItemToList(SimpleCode [opc, Word8.fromInt arg1], cvec) and genOpcWord(opc, arg1, cvec) = addItemToList(SimpleCode[opc, Word8.fromInt arg1, Word8.fromInt (arg1 div 256)], cvec) in fun genRaiseEx cvec = genOpc (opcode_raiseEx, cvec) fun genLock cvec = genOpc (opcode_lock, cvec) fun genLdexc cvec = genOpc (opcode_ldexc, cvec) fun genPushHandler cvec = genOpc (opcode_pushHandler, cvec) fun genRTSCallFast(0, cvec) = genOpc (opcode_callFastRTS0, cvec) | genRTSCallFast(1, cvec) = genOpc (opcode_callFastRTS1, cvec) | genRTSCallFast(2, cvec) = genOpc (opcode_callFastRTS2, cvec) | genRTSCallFast(3, cvec) = genOpc (opcode_callFastRTS3, cvec) | genRTSCallFast(4, cvec) = genOpc (opcode_callFastRTS4, cvec) | genRTSCallFast(5, cvec) = genOpc (opcode_callFastRTS5, cvec) | genRTSCallFast(_, _) = raise InternalError "genRTSFastCall" fun genRTSCallFull(0, cvec) = genOpc (opcode_callFullRTS0, cvec) | genRTSCallFull(1, cvec) = genOpc (opcode_callFullRTS1, cvec) | genRTSCallFull(2, cvec) = genOpc (opcode_callFullRTS2, cvec) | genRTSCallFull(3, cvec) = genOpc (opcode_callFullRTS3, cvec) | genRTSCallFull(4, cvec) = genOpc (opcode_callFullRTS4, cvec) | genRTSCallFull(5, cvec) = genOpc (opcode_callFullRTS5, cvec) | genRTSCallFull(_, _) = raise InternalError "genRTSCallFull" fun genContainer (size, cvec) = genOpcWord(opcode_containerW, size, cvec) and genTupleFromContainer (size, cvec) = genOpcWord(opcode_tuple_containerW, size, cvec) fun genCase (nCases, cvec) = let val labels = List.tabulate(nCases, fn _ => createLabel()) in addItemToList(IndexedCase{labels=labels, size=ref Size32}, cvec); labels end (* For the moment don't try to merge stack resets. *) fun resetStack(0, _, _) = () | resetStack(offset, true, cvec) = if offset < 0 then raise InternalError "resetStack" else if offset > 255 then genOpcWord(opcode_resetR_w, offset, cvec) else if offset > 3 then genOpcByte(opcode_resetRB, offset, cvec) else addItemToList(SimpleCode[opcode_resetR_1 + Word8.fromInt(offset - 1)], cvec) | resetStack(offset, false, cvec) = if offset < 0 then raise InternalError "resetStack" else if offset > 255 then genOpcWord(opcode_resetW, offset, cvec) else if offset > 2 then genOpcByte(opcode_resetB, offset, cvec) else addItemToList(SimpleCode[opcode_reset_1 + Word8.fromInt(offset - 1)], cvec) fun genCallClosure cvec = genOpc (opcode_callClosure, cvec) fun genTailCall (toslide, slideby, cvec) = if toslide < 256 andalso slideby < 256 then case (toslide, slideby) of (3, 2) => genOpc (opcode_tail3_2, cvec) | (3, 3) => genOpc (opcode_tail3_3, cvec) | (3, _) => genOpcByte(opcode_tail3b, slideby, cvec) | (4, _) => genOpcByte(opcode_tail4b, slideby, cvec) | (_, _) => (* General byte case *) addItemToList(SimpleCode[opcode_tailbb, Word8.fromInt toslide, Word8.fromInt slideby], cvec) else (* General case. *) addItemToList( SimpleCode[opcode_tail, Word8.fromInt toslide, Word8.fromInt(toslide div 256), Word8.fromInt slideby, Word8.fromInt (slideby div 256)], cvec) fun pushConst (value : machineWord, cvec) = if isShort value andalso toShort value < 0w32768 then let val iVal = Word.toInt (toShort value); in if iVal = 10 then genOpc (opcode_const_10, cvec) else if iVal <= 4 then genOpc (opcode_const_0 + Word8.fromInt iVal, cvec) else if iVal < 256 then genOpcByte (opcode_constIntB, iVal, cvec) else genOpcWord (opcode_constIntW, iVal, cvec) end else (* address or large short *) addItemToList(PushConstant{constNum = addConstToVec(value, cvec), size=ref Size32}, cvec) fun genRTSCallFastFloatFloat cvec = genOpc (opcode_callFastRTSFtoF, cvec) and genRTSCallFastGeneralFloat cvec = genOpc (opcode_callFastRTSGtoF, cvec) end local fun gen1 (opW, opB, opF, first, last, arg1, cvec) = if (first <= arg1 andalso arg1 <= last) then addItemToList(SimpleCode[opF + Word8.fromInt(arg1 - first)], cvec) else if 0 <= arg1 andalso arg1 <= 255 then addItemToList(SimpleCode [opB, Word8.fromInt arg1], cvec) else addItemToList( SimpleCode [opW, Word8.fromInt arg1, Word8.fromInt(arg1 div 256)], cvec) in fun genReturn (arg1, cvec) = gen1 (opcode_returnW, opcode_returnB, opcode_return_0, 0, 3, arg1, cvec) fun genLocal (arg1, cvec) = gen1 (opcode_localW, opcode_localB, opcode_local_0, 0, 11, arg1, cvec); fun genIndirect (arg1, cvec) = gen1 (opcode_indirectW, opcode_indirectB, opcode_indirect_0, 0, 5, arg1, cvec); fun genMoveToVec (arg1, cvec) = gen1 (opcode_moveToVecW, opcode_moveToVecB, opcode_moveToVec_0, 0, 7, arg1, cvec); fun genSetStackVal (arg1, cvec) = gen1 (opcode_setStackValW, opcode_setStackValB, opcode_setStackValB, (* Don't care - no "implied" form exists *) 1, 0, arg1, cvec); fun genTuple (arg1, cvec) = gen1 (opcode_tupleW, opcode_tupleB, opcode_tuple_2, 2, 4, arg1, cvec) end (* Unused - only used for bootstrapping. *) fun genEnterIntCatch _ = () and genEnterIntProc _ = () and genEnterIntCall _ = () val opcode_notBoolean = SimpleCode [opcode_notBoolean] val opcode_isTagged = SimpleCode [opcode_isTagged] and opcode_cellLength = SimpleCode [opcode_cellLength] and opcode_cellFlags = SimpleCode [opcode_cellFlags] and opcode_clearMutable = SimpleCode [opcode_clearMutable] and opcode_atomicIncr = SimpleCode [opcode_atomicIncr] and opcode_atomicDecr = SimpleCode [opcode_atomicDecr] and opcode_atomicReset = SimpleCode [opcode_atomicReset] and opcode_longWToTagged = SimpleCode [opcode_longWToTagged] and opcode_signedToLongW = SimpleCode [opcode_signedToLongW] and opcode_unsignedToLongW = SimpleCode [opcode_unsignedToLongW] and opcode_realAbs = SimpleCode [opcode_realAbs] and opcode_realNeg = SimpleCode [opcode_realNeg] and opcode_floatFixedInt = SimpleCode [opcode_floatFixedInt] val opcode_equalWord = SimpleCode [opcode_equalWord] val opcode_notequalWord = SimpleCode [opcode_notequalWord] (* Not currently generated. *) and opcode_lessSigned = SimpleCode [opcode_lessSigned] and opcode_lessUnsigned = SimpleCode [opcode_lessUnsigned] and opcode_lessEqSigned = SimpleCode [opcode_lessEqSigned] and opcode_lessEqUnsigned = SimpleCode [opcode_lessEqUnsigned] and opcode_greaterSigned = SimpleCode [opcode_greaterSigned] and opcode_greaterUnsigned = SimpleCode [opcode_greaterUnsigned] and opcode_greaterEqSigned = SimpleCode [opcode_greaterEqSigned] and opcode_greaterEqUnsigned = SimpleCode [opcode_greaterEqUnsigned] val opcode_fixedAdd = SimpleCode [opcode_fixedAdd] val opcode_fixedSub = SimpleCode [opcode_fixedSub] val opcode_fixedMult = SimpleCode [opcode_fixedMult] val opcode_fixedQuot = SimpleCode [opcode_fixedQuot] val opcode_fixedRem = SimpleCode [opcode_fixedRem] val opcode_fixedDiv = SimpleCode [opcode_fixedDiv] val opcode_fixedMod = SimpleCode [opcode_fixedMod] val opcode_wordAdd = SimpleCode [opcode_wordAdd] val opcode_wordSub = SimpleCode [opcode_wordSub] val opcode_wordMult = SimpleCode [opcode_wordMult] val opcode_wordDiv = SimpleCode [opcode_wordDiv] val opcode_wordMod = SimpleCode [opcode_wordMod] val opcode_wordAnd = SimpleCode [opcode_wordAnd] val opcode_wordOr = SimpleCode [opcode_wordOr] val opcode_wordXor = SimpleCode [opcode_wordXor] val opcode_wordShiftLeft = SimpleCode [opcode_wordShiftLeft] val opcode_wordShiftRLog = SimpleCode [opcode_wordShiftRLog] val opcode_wordShiftRArith = SimpleCode [opcode_wordShiftRArith] val opcode_allocByteMem = SimpleCode [opcode_allocByteMem] val opcode_lgWordEqual = SimpleCode [opcode_lgWordEqual] val opcode_lgWordNotequal = SimpleCode [opcode_lgWordNotequal] val opcode_lgWordLess = SimpleCode [opcode_lgWordLess] val opcode_lgWordLessEq = SimpleCode [opcode_lgWordLessEq] val opcode_lgWordGreater = SimpleCode [opcode_lgWordGreater] val opcode_lgWordGreaterEq = SimpleCode [opcode_lgWordGreaterEq] val opcode_lgWordAdd = SimpleCode [opcode_lgWordAdd] val opcode_lgWordSub = SimpleCode [opcode_lgWordSub] val opcode_lgWordMult = SimpleCode [opcode_lgWordMult] val opcode_lgWordDiv = SimpleCode [opcode_lgWordDiv] val opcode_lgWordMod = SimpleCode [opcode_lgWordMod] val opcode_lgWordAnd = SimpleCode [opcode_lgWordAnd] val opcode_lgWordOr = SimpleCode [opcode_lgWordOr] val opcode_lgWordXor = SimpleCode [opcode_lgWordXor] val opcode_lgWordShiftLeft = SimpleCode [opcode_lgWordShiftLeft] val opcode_lgWordShiftRLog = SimpleCode [opcode_lgWordShiftRLog] val opcode_lgWordShiftRArith = SimpleCode [opcode_lgWordShiftRArith] val opcode_realEqual = SimpleCode [opcode_realEqual] val opcode_realNotequal = SimpleCode [opcode_realNotequal] val opcode_realLess = SimpleCode [opcode_realLess] val opcode_realLessEq = SimpleCode [opcode_realLessEq] val opcode_realGreater = SimpleCode [opcode_realGreater] val opcode_realGreaterEq = SimpleCode [opcode_realGreaterEq] val opcode_realAdd = SimpleCode [opcode_realAdd] val opcode_realSub = SimpleCode [opcode_realSub] val opcode_realMult = SimpleCode [opcode_realMult] val opcode_realDiv = SimpleCode [opcode_realDiv] val opcode_getThreadId = SimpleCode [opcode_getThreadId] val opcode_allocWordMemory = SimpleCode [opcode_allocWordMemory] val opcode_alloc_ref = SimpleCode [opcode_alloc_ref] val opcode_loadMLWord = SimpleCode [opcode_loadMLWord] val opcode_loadMLByte = SimpleCode [opcode_loadMLByte] val opcode_loadC8 = SimpleCode [opcode_loadC8] val opcode_loadC16 = SimpleCode [opcode_loadC16] val opcode_loadC32 = SimpleCode [opcode_loadC32] val opcode_loadC64 = SimpleCode [opcode_loadC64] val opcode_loadCFloat = SimpleCode [opcode_loadCFloat] val opcode_loadCDouble = SimpleCode [opcode_loadCDouble] val opcode_loadUntagged = SimpleCode [opcode_loadUntagged] val opcode_storeMLWord = SimpleCode [opcode_storeMLWord] val opcode_storeMLByte = SimpleCode [opcode_storeMLByte] val opcode_storeC8 = SimpleCode [opcode_storeC8] val opcode_storeC16 = SimpleCode [opcode_storeC16] val opcode_storeC32 = SimpleCode [opcode_storeC32] val opcode_storeC64 = SimpleCode [opcode_storeC64] val opcode_storeCFloat = SimpleCode [opcode_storeCFloat] val opcode_storeCDouble = SimpleCode [opcode_storeCDouble] val opcode_storeUntagged = SimpleCode [opcode_storeUntagged] val opcode_blockMoveWord = SimpleCode [opcode_blockMoveWord] val opcode_blockMoveByte = SimpleCode [opcode_blockMoveByte] val opcode_blockEqualByte = SimpleCode [opcode_blockEqualByte] val opcode_blockCompareByte = SimpleCode [opcode_blockCompareByte] val opcode_deleteHandler = SimpleCode [opcode_deleteHandler] end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/GCode.x86_64.ML0000644000175000017500000000147713204034553021506 0ustar daviddavid(* Copyright (c) 2013 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure GCode = X86Code; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/0000755000175000017500000000000013204034553020505 5ustar daviddavidpolyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86GETCONFLICTSETSIG.ML0000644000175000017500000000234213204034553023726 0ustar daviddavid(* Copyright (c) 2017 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86GETCONFLICTSETSIG = sig type x86ICode and reg and preg and controlFlow and extendedBasicBlock type intSet type conflictState = { conflicts: intSet, realConflicts: reg list } val getConflictStates: extendedBasicBlock vector * int -> conflictState vector structure Sharing: sig type x86ICode = x86ICode and reg = reg and preg = preg and intSet = intSet and extendedBasicBlock = extendedBasicBlock end; end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICODEGENERATESIG.ML0000644000175000017500000000263513204034553023554 0ustar daviddavid(* Copyright David C. J. Matthews 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86ICODEGENERATESIG = sig type intSet and extendedBasicBlock and regProperty and reg type address = Address.address val icodeToX86Code : { blocks: extendedBasicBlock vector, allocatedRegisters: reg vector, functionName: string, stackRequired: int, argRegsUsed: reg list, hasFullClosure: bool, debugSwitches: Universal.universal list } -> address val nGenRegs: int (* Number of general registers. *) structure Sharing: sig type intSet = intSet and extendedBasicBlock = extendedBasicBlock and regProperty = regProperty and reg = reg end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86OUTPUTCODE.ML0000644000175000017500000044211013204034553022742 0ustar daviddavid(* Copyright David C. J. Matthews 1989, 2000, 2009-10, 2012-13, 2015-17 Based on original code: Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Code Generator Routines. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1989 *) (* This module contains the code vector and operations to insert code into it. Each procedure is compiled into a separate segment. Initially it is compiled into a fixed size segment, and then copied into a segment of the correct size at the end. This module contains all the definitions of the X86 opCodes and registers. It uses "codeseg" to create and operate on the segment itself. *) functor X86OUTPUTCODE ( structure DEBUG: DEBUGSIG structure PRETTY: PRETTYSIG (* for compilerOutTag *) ) : X86CODESIG = struct open CODE_ARRAY open DEBUG; open Address open Misc; val isX64 = wordSize = 8 (* Generate X64 instructions if the word length is 8. *) infix 5 << <<+ <<- >> >>+ >>- ~>> ~>>+ ~>>- (* Shift operators *) infix 3 andb orb xorb andbL orbL xorbL andb8 orb8 xorb8 val op << = Word.<< and op >> = Word.>> val (*op <<+ = LargeWord.<< and *) op >>+ = LargeWord.>> val op <<- = Word8.<< and op >>- = Word8.>> val op orb8 = Word8.orb val op andb8 = Word8.andb val op andb = Word.andb (* and op andbL = LargeWord.andb *) and op orb = Word.orb val wordToWord8 = Word8.fromLargeWord o Word.toLargeWord (*and word8ToWord = Word.fromLargeWord o Word8.toLargeWord*) val exp2_16 = 0x10000 val exp2_31 = 0x80000000: LargeInt.int (* Returns true if this a 32-bit machine or if the constant is within 32-bits. This is exported to the higher levels. N.B. The test for not isX64 avoids a significant overhead with arbitrary precision arithmetic on X86/32. *) fun is32bit v = not isX64 orelse ~exp2_31 <= v andalso v < exp2_31 (* tag a short constant *) fun tag c = 2 * c + 1; fun is8BitL (n: LargeInt.int) = ~ 0x80 <= n andalso n < 0x80 local val shift = if wordSize = 4 then 0w2 else if wordSize = 8 then 0w3 else raise InternalError "Invalid word size for x86_32 or x86+64" in fun wordsToBytes n = n << shift and bytesToWords n = n >> shift end infix 6 addrPlus addrMinus; (* All indexes into the code vector have type "addrs". This is really a legacy. *) type addrs = Word.word val addrZero = 0w0 (* This is the external label type used when constructing operations. *) datatype label = Label of { labelNo: int } (* Constants which are too large to go inline in the code are put in a list and put at the end of the code. They are arranged so that the garbage collector can find them and change them as necessary. A reference to a constant is treated like a forward reference to a label. *) datatype code = Code of { procName: string, (* Name of the procedure. *) printAssemblyCode:bool, (* Whether to print the code when we finish. *) printStream: string->unit, (* The stream to use *) lowLevelOptimise: bool, (* Whether to do the low-level optimisation pass *) profileObject : machineWord (* The profile object for this code. *) } (* Exported functions *) fun lowLevelOptimise(Code{lowLevelOptimise, ...}) = lowLevelOptimise (* EBP/RBP points to a structure that interfaces to the RTS. These are offsets into that structure. *) val memRegLocalMPointer = 0 (* Not used in 64-bit *) and memRegHandlerRegister = wordSize and memRegLocalMbottom = 2 * wordSize and memRegStackLimit = 3 * wordSize and memRegExceptionPacket = 4 * wordSize and memRegCStackPtr = 6 * wordSize and memRegThreadSelf = 7 * wordSize and memRegStackPtr = 8 * wordSize and memRegHeapOverflowCall = 10 * wordSize and memRegStackOverflowCall = 11 * wordSize and memRegStackOverflowCallEx = 12 * wordSize (* This can probably be much smaller now. *) and memRegSize = if isX64 then 144 else 56 (* Size of area on the stack. *) (* create and initialise a code segment *) fun codeCreate (name : string, profObj, parameters) : code = let val printStream = PRETTY.getSimplePrinter(parameters, []) in Code { procName = name, printAssemblyCode = DEBUG.getParameter DEBUG.assemblyCodeTag parameters, printStream = printStream, lowLevelOptimise = DEBUG.getParameter DEBUG.lowlevelOptimiseTag parameters, profileObject = profObj } end (* Put 1 unsigned byte at a given offset in the segment. *) fun set8u (b, addr, seg) = byteVecSet (seg, addr, b) (* Put 4 bytes at a given offset in the segment. *) (* b0 is the least significant byte. *) fun set4Bytes (b3, b2, b1, b0, addr, seg) = let val a = addr; in (* Little-endian *) byteVecSet (seg, a, b0); byteVecSet (seg, a + 0w1, b1); byteVecSet (seg, a + 0w2, b2); byteVecSet (seg, a + 0w3, b3) end; (* Put 1 unsigned word at a given offset in the segment. *) fun set32u (ival: LargeWord.word, addr, seg) : unit = let val b3 = Word8.fromLargeWord (ival >>+ 0w24) val b2 = Word8.fromLargeWord (ival >>+ 0w16) val b1 = Word8.fromLargeWord (ival >>+ 0w8) val b0 = Word8.fromLargeWord ival in set4Bytes (b3, b2, b1, b0, addr, seg) end (* Put 1 signed word at a given offset in the segment. *) fun set32s (ival: LargeInt.int, addr, seg) = set32u(LargeWord.fromLargeInt ival, addr, seg) fun byteSigned ival = if ~0x80 <= ival andalso ival < 0x80 then Word8.fromInt ival else raise InternalError "byteSigned: invalid byte" (* Convert a large-word value to a little-endian byte sequence. *) fun largeWordToBytes(_, 0) = [] | largeWordToBytes(ival: LargeWord.word, n) = Word8.fromLargeWord ival :: largeWordToBytes(ival >>+ 0w8, n-1) fun word32Unsigned(ival: LargeWord.word) = largeWordToBytes(ival, 4) fun int32Signed(ival: LargeInt.int) = if is32bit ival then word32Unsigned(LargeWord.fromLargeInt ival) else raise InternalError "int32Signed: invalid word" (* wordUnsigned is 8 bytes on 64-bits or 4-bytes on 32-bits. *) fun wordUnsigned(ival: LargeWord.word) = largeWordToBytes(ival, wordSize) (* Registers. *) datatype genReg = GeneralReg of Word8.word * bool and fpReg = FloatingPtReg of Word8.word and xmmReg = SSE2Reg of Word8.word datatype reg = GenReg of genReg | FPReg of fpReg | XMMReg of xmmReg (* These are the real registers we have. The AMD extension encodes the additional registers through the REX prefix. *) val eax = GeneralReg (0w0, false) val ecx = GeneralReg (0w1, false) val edx = GeneralReg (0w2, false) val ebx = GeneralReg (0w3, false) val esp = GeneralReg (0w4, false) val ebp = GeneralReg (0w5, false) val esi = GeneralReg (0w6, false) val edi = GeneralReg (0w7, false) val r8 = GeneralReg (0w0, true) val r9 = GeneralReg (0w1, true) val r10 = GeneralReg (0w2, true) val r11 = GeneralReg (0w3, true) val r12 = GeneralReg (0w4, true) val r13 = GeneralReg (0w5, true) val r14 = GeneralReg (0w6, true) val r15 = GeneralReg (0w7, true) (* Floating point "registers". Actually entries on the floating point stack. The X86 has a floating point stack with eight entries. *) val fp0 = FloatingPtReg 0w0 and fp1 = FloatingPtReg 0w1 and fp2 = FloatingPtReg 0w2 and fp3 = FloatingPtReg 0w3 and fp4 = FloatingPtReg 0w4 and fp5 = FloatingPtReg 0w5 and fp6 = FloatingPtReg 0w6 and fp7 = FloatingPtReg 0w7 (* SSE2 Registers. These are used for floating point in 64-bity mode. We only use XMM0-6 because the others are callee save and we don't currently save them. *) val xmm0 = SSE2Reg 0w0 and xmm1 = SSE2Reg 0w1 and xmm2 = SSE2Reg 0w2 and xmm3 = SSE2Reg 0w3 and xmm4 = SSE2Reg 0w4 and xmm5 = SSE2Reg 0w5 and xmm6 = SSE2Reg 0w6 val regClosure = edx (* Addr. of closure for fn. call goes here. *) fun getReg (GeneralReg r) = r fun mkReg n = GeneralReg n (* reg.up *) (* The maximum size of the register vectors and masks. Although the X86/32 has a floating point stack with eight entries it's much simpler to treat it as having seven "real" registers. Items are pushed to the stack and then stored and popped into the current location. It may be possible to improve the code by some peephole optimisation. *) val regs = 30 (* Include the X86/64 registers even if this is 32-bit. *) (* The nth register (counting from 0). *) (* Profiling shows that applying the constructors here creates a lot of garbage. Create the entries once and then use vector indexing instead. *) local fun regN i = if i < 8 then GenReg(GeneralReg(Word8.fromInt i, false)) else if i < 16 then GenReg(GeneralReg(Word8.fromInt(i-8), true)) else if i < 23 then FPReg(FloatingPtReg(Word8.fromInt(i-16))) else XMMReg(SSE2Reg(Word8.fromInt(i-23))) val regVec = Vector.tabulate(regs, regN) in fun regN i = Vector.sub(regVec, i) handle Subscript => raise InternalError "Bad register number" end (* The number of the register. *) fun nReg(GenReg(GeneralReg(r, false))) = Word8.toInt r | nReg(GenReg(GeneralReg(r, true))) = Word8.toInt r + 8 | nReg(FPReg(FloatingPtReg r)) = Word8.toInt r + 16 | nReg(XMMReg(SSE2Reg r)) = Word8.toInt r + 23 datatype opsize = SZByte | SZWord | SZDWord | SZQWord val sz32_64 = if isX64 then SZQWord else SZDWord fun genRegRepr(GeneralReg (0w0, false), SZByte) = "al" | genRegRepr(GeneralReg (0w1, false), SZByte) = "cl" | genRegRepr(GeneralReg (0w2, false), SZByte) = "dl" | genRegRepr(GeneralReg (0w3, false), SZByte) = "bl" | genRegRepr(GeneralReg (0w4, false), SZByte) = "ah" (* TODO: May be different if there's a rex code *) | genRegRepr(GeneralReg (0w5, false), SZByte) = "ch" | genRegRepr(GeneralReg (0w6, false), SZByte) = "dh" | genRegRepr(GeneralReg (0w7, false), SZByte) = "bh" | genRegRepr(GeneralReg (reg, true), SZByte) = "r" ^ Int.toString(Word8.toInt reg +8) ^ "b" | genRegRepr(GeneralReg (0w0, false), SZDWord) = "eax" | genRegRepr(GeneralReg (0w1, false), SZDWord) = "ecx" | genRegRepr(GeneralReg (0w2, false), SZDWord) = "edx" | genRegRepr(GeneralReg (0w3, false), SZDWord) = "ebx" | genRegRepr(GeneralReg (0w4, false), SZDWord) = "esp" | genRegRepr(GeneralReg (0w5, false), SZDWord) = "ebp" | genRegRepr(GeneralReg (0w6, false), SZDWord) = "esi" | genRegRepr(GeneralReg (0w7, false), SZDWord) = "edi" | genRegRepr(GeneralReg (reg, true), SZDWord) = "r" ^ Int.toString(Word8.toInt reg +8) ^ "d" | genRegRepr(GeneralReg (0w0, false), SZQWord) = "rax" | genRegRepr(GeneralReg (0w1, false), SZQWord) = "rcx" | genRegRepr(GeneralReg (0w2, false), SZQWord) = "rdx" | genRegRepr(GeneralReg (0w3, false), SZQWord) = "rbx" | genRegRepr(GeneralReg (0w4, false), SZQWord) = "rsp" | genRegRepr(GeneralReg (0w5, false), SZQWord) = "rbp" | genRegRepr(GeneralReg (0w6, false), SZQWord) = "rsi" | genRegRepr(GeneralReg (0w7, false), SZQWord) = "rdi" | genRegRepr(GeneralReg (reg, true), SZQWord) = "r" ^ Int.toString(Word8.toInt reg +8) | genRegRepr(GeneralReg (0w0, false), SZWord) = "ax" | genRegRepr(GeneralReg (0w1, false), SZWord) = "cx" | genRegRepr(GeneralReg (0w2, false), SZWord) = "dx" | genRegRepr(GeneralReg (0w3, false), SZWord) = "bx" | genRegRepr(GeneralReg (0w4, false), SZWord) = "sp" | genRegRepr(GeneralReg (0w5, false), SZWord) = "bp" | genRegRepr(GeneralReg (0w6, false), SZWord) = "si" | genRegRepr(GeneralReg (0w7, false), SZWord) = "di" | genRegRepr(GeneralReg (reg, true), SZWord) = "r" ^ Int.toString(Word8.toInt reg +8) ^ "w" | genRegRepr _ = "unknown" (* Suppress warning because word values are not exhaustive. *) and fpRegRepr(FloatingPtReg n) = "fp" ^ Word8.toString n and xmmRegRepr(SSE2Reg n) = "xmm" ^ Word8.toString n fun regRepr(GenReg r) = genRegRepr (r, sz32_64) | regRepr(FPReg r) = fpRegRepr r | regRepr(XMMReg r) = xmmRegRepr r (* Install a pretty printer. This is simply for when this code is being run under the debugger. N.B. We need PolyML.PrettyString here. *) val () = PolyML.addPrettyPrinter(fn _ => fn _ => fn r => PolyML.PrettyString(regRepr r)) datatype argType = ArgGeneral | ArgFP structure RegSet = struct (* Implement a register set as a bit mask. *) datatype regSet = RegSet of word fun singleton r = RegSet(0w1 << Word.fromInt(nReg r)) fun regSetUnion(RegSet r1, RegSet r2) = RegSet(Word.orb(r1, r2)) fun regSetIntersect(RegSet r1, RegSet r2) = RegSet(Word.andb(r1, r2)) local fun addReg(acc, n) = if n = regs then acc else addReg(regSetUnion(acc, singleton(regN n)), n+1) in val allRegisters = addReg(RegSet 0w0, 0) end val noRegisters = RegSet 0w0 fun inSet(r, rs) = regSetIntersect(singleton r, rs) <> noRegisters fun regSetMinus(RegSet s1, RegSet s2) = RegSet(Word.andb(s1, Word.notb s2)) val listToSet = List.foldl (fn(r, rs) => regSetUnion(singleton r, rs)) noRegisters val generalRegisters = (* Registers checked by the GC. *) if isX64 then listToSet(map GenReg [eax, ecx, edx, ebx, esi, edi, r8, r9, r10, r11, r12, r13, r14]) else listToSet(map GenReg [eax, ecx, edx, ebx, esi, edi]) (* The floating point stack. Note that this excludes one item so it is always possible to load a value onto the top of the FP stack. *) val floatingPtRegisters = listToSet(map FPReg [fp0, fp1, fp2, fp3, fp4, fp5, fp6(*, fp7*)]) val sse2Registers = listToSet(map XMMReg [xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6]) fun isAllRegs rs = rs = allRegisters fun setToList (RegSet regSet)= let fun testBit (n, bit, res) = if n = regs then res else testBit(n+1, bit << 0w1, if (regSet andb bit) <> 0w0 then regN n :: res else res) in testBit(0, 0w1, []) end val cardinality = List.length o setToList (* Choose one of the set. This chooses the least value which means that the ordering of the registers is significant. This is a hot-spot so is coded directly with the word operations. *) fun oneOf(RegSet regSet) = let fun find(n, bit) = if n = Word.fromInt regs then raise InternalError "oneOf: empty" else if Word.andb(bit, regSet) <> 0w0 then n else find(n+0w1, Word.<<(bit, 0w1)) in regN(Word.toInt(find(0w0, 0w1))) end fun regSetRepr regSet = let val regs = setToList regSet in "[" ^ String.concatWith "," (List.map regRepr regs) ^ "]" end (* Install a pretty printer for when this code is being debugged. *) val () = PolyML.addPrettyPrinter(fn _ => fn _ => fn r => PolyML.PrettyString(regSetRepr r)) end open RegSet datatype arithOp = ADD | OR (*|ADC | SBB*) | AND | SUB | XOR | CMP fun arithOpToWord ADD = 0w0: Word8.word | arithOpToWord OR = 0w1 | arithOpToWord AND = 0w4 | arithOpToWord SUB = 0w5 | arithOpToWord XOR = 0w6 | arithOpToWord CMP = 0w7 fun arithOpRepr ADD = "Add" | arithOpRepr OR = "Or" | arithOpRepr AND = "And" | arithOpRepr SUB = "Sub" | arithOpRepr XOR = "Xor" | arithOpRepr CMP = "Cmp" datatype shiftType = SHL | SHR | SAR fun shiftTypeToWord SHL = 0w4: Word8.word | shiftTypeToWord SHR = 0w5 | shiftTypeToWord SAR = 0w7 fun shiftTypeRepr SHL = "Shift Left Logical" | shiftTypeRepr SHR = "Shift Right Logical" | shiftTypeRepr SAR = "Shift Right Arithemetic" datatype repOps = CMPSB | MOVSB | MOVSL | STOSB | STOSL fun repOpsToWord CMPSB = 0wxa6: Word8.word | repOpsToWord MOVSB = 0wxa4 | repOpsToWord MOVSL = 0wxa5 | repOpsToWord STOSB = 0wxaa | repOpsToWord STOSL = 0wxab fun repOpsRepr CMPSB = "CompareBytes" | repOpsRepr MOVSB = "MoveBytes" | repOpsRepr MOVSL = "MoveWords" | repOpsRepr STOSB = "StoreBytes" | repOpsRepr STOSL = "StoreWords" datatype fpOps = FADD | FMUL | FCOM | FCOMP | FSUB | FSUBR | FDIV | FDIVR fun fpOpToWord FADD = 0w0: Word8.word | fpOpToWord FMUL = 0w1 | fpOpToWord FCOM = 0w2 | fpOpToWord FCOMP = 0w3 | fpOpToWord FSUB = 0w4 | fpOpToWord FSUBR = 0w5 | fpOpToWord FDIV = 0w6 | fpOpToWord FDIVR = 0w7 fun fpOpRepr FADD = "FPAdd" | fpOpRepr FMUL = "FPMultiply" | fpOpRepr FCOM = "FPCompare" | fpOpRepr FCOMP = "FPCompareAndPop" | fpOpRepr FSUB = "FPSubtract" | fpOpRepr FSUBR = "FPReverseSubtract" | fpOpRepr FDIV = "FPDivide" | fpOpRepr FDIVR = "FPReverseDivide" datatype fpUnaryOps = FCHS | FABS | FLD1 | FLDZ fun fpUnaryToWords FCHS = {rm=0w0:Word8.word, nnn=0w4: Word8.word} | fpUnaryToWords FABS = {rm=0w1, nnn=0w4} | fpUnaryToWords FLD1 = {rm=0w0, nnn=0w5} | fpUnaryToWords FLDZ = {rm=0w6, nnn=0w5} fun fpUnaryRepr FCHS = "FPChangeSign" | fpUnaryRepr FABS = "FPAbs" | fpUnaryRepr FLD1 = "FPLoadOne" | fpUnaryRepr FLDZ = "FPLoadZero" datatype branchOps = JO | JNO | JE | JNE | JL | JGE | JLE | JG | JB | JNB | JNA | JA | JP | JNP fun branchOpToWord JO = 0wx0: Word8.word | branchOpToWord JNO = 0wx1 | branchOpToWord JB = 0wx2 | branchOpToWord JNB = 0wx3 | branchOpToWord JE = 0wx4 | branchOpToWord JNE = 0wx5 | branchOpToWord JNA = 0wx6 | branchOpToWord JA = 0wx7 | branchOpToWord JP = 0wxa | branchOpToWord JNP = 0wxb | branchOpToWord JL = 0wxc | branchOpToWord JGE = 0wxd | branchOpToWord JLE = 0wxe | branchOpToWord JG = 0wxf fun branchOpRepr JO = "JumpOverflow" | branchOpRepr JNO = "JumpNotOverflow" | branchOpRepr JE = "JumpEqual" | branchOpRepr JNE = "JumpNotEqual" | branchOpRepr JL = "JumpLess" | branchOpRepr JGE = "JumpGreaterOrEqual" | branchOpRepr JLE = "JumpLessOrEqual" | branchOpRepr JG = "JumpGreater" | branchOpRepr JB = "JumpBefore" | branchOpRepr JNB= "JumpNotBefore" | branchOpRepr JNA = "JumpNotAfter" | branchOpRepr JA = "JumpAfter" | branchOpRepr JP = "JumpParity" | branchOpRepr JNP = "JumpNoParity" datatype sse2Operations = SSE2Move | SSE2Comp | SSE2Add | SSE2Sub | SSE2Mul | SSE2Div | SSE2Xor | SSE2And | SSE2MoveSingle | SSE2DoubleToFloat fun sse2OpRepr SSE2Move = "SSE2Move" | sse2OpRepr SSE2Comp = "SSE2Comp" | sse2OpRepr SSE2Add = "SSE2Add" | sse2OpRepr SSE2Sub = "SSE2Sub" | sse2OpRepr SSE2Mul = "SSE2Mul" | sse2OpRepr SSE2Div = "SSE2Div" | sse2OpRepr SSE2Xor = "SSE2Xor" | sse2OpRepr SSE2And = "SSE2And" | sse2OpRepr SSE2MoveSingle = "SSE2MoveSingle" | sse2OpRepr SSE2DoubleToFloat = "SSE2DoubleToFloat" (* Primary opCodes. N.B. only opCodes actually used are listed here. If new instruction are added check they will be handled by the run-time system in the event of trap. *) datatype opCode = Group1_8_A | Group1_32_A | Group1_8_a | JMP_8 | JMP_32 | CALL_32 | MOVL_A_R | MOVL_R_A | MOVL_R_A16 | MOVL_R_A32 | MOVB_R_A of {forceRex: bool} | PUSH_R of Word8.word | POP_R of Word8.word | Group5 | NOP | LEAL | MOVL_32_64_R of Word8.word | MOVL_32_A | MOVB_8_A | POP_A | RET | RET_16 | CondJump of branchOps | CondJump32 of branchOps | Arith of arithOp * Word8.word | Group3_A | Group3_a | Group2_8_A | Group2_CL_A | Group2_1_A | PUSH_8 | PUSH_32 | TEST_ACC8 | LOCK_XADD | FPESC of Word8.word | XCHNG | REP (* Rep prefix *) | MOVZB (* Needs escape code. *) | MOVZW (* Needs escape code. *) | MOVL_A_R32 (* As MOVL_A_R but without RAX.W *) | IMUL (* Needs escape code. *) | SSE2StoreSingle (* movss with memory destination - needs escape sequence. *) | SSE2StoreDouble (* movsd with memory destination - needs escape sequence. *) | CQO_CDQ (* Sign extend before divide.. *) | SSE2Ops of sse2Operations (* SSE2 instructions. *) | CVTSI2SD | HLT (* End of code marker. *) | IMUL_C8 | IMUL_C32 fun opToInt Group1_8_A = 0wx83 | opToInt Group1_32_A = 0wx81 | opToInt Group1_8_a = 0wx80 | opToInt JMP_8 = 0wxeb | opToInt JMP_32 = 0wxe9 | opToInt CALL_32 = 0wxe8 | opToInt MOVL_A_R = 0wx8b | opToInt MOVL_R_A = 0wx89 | opToInt MOVL_R_A16 = 0wx89 (* Also has an OPSIZE prefix. *) | opToInt MOVL_R_A32 = 0wx89 (* Suppresses the REX.W prefix. *) | opToInt (MOVB_R_A _) = 0wx88 | opToInt (PUSH_R reg) = 0wx50 + reg | opToInt (POP_R reg) = 0wx58 + reg | opToInt Group5 = 0wxff | opToInt NOP = 0wx90 | opToInt LEAL = 0wx8d | opToInt (MOVL_32_64_R reg) = 0wxb8 + reg | opToInt MOVL_32_A = 0wxc7 | opToInt MOVB_8_A = 0wxc6 | opToInt POP_A = 0wx8f | opToInt RET = 0wxc3 | opToInt RET_16 = 0wxc2 | opToInt (CondJump opc) = 0wx70 + branchOpToWord opc | opToInt (CondJump32 opc) = 0wx80 + branchOpToWord opc (* Needs 0F prefix *) | opToInt (Arith (ao,dw)) = arithOpToWord ao * 0w8 + dw | opToInt Group3_A = 0wxf7 | opToInt Group3_a = 0wxf6 | opToInt Group2_8_A = 0wxc1 | opToInt Group2_1_A = 0wxd1 | opToInt Group2_CL_A = 0wxd3 | opToInt PUSH_8 = 0wx6a | opToInt PUSH_32 = 0wx68 | opToInt TEST_ACC8 = 0wxa8 | opToInt LOCK_XADD = 0wxC1 (* Needs lock and escape prefixes. *) | opToInt (FPESC n) = 0wxD8 orb8 n | opToInt XCHNG = 0wx87 | opToInt REP = 0wxf3 | opToInt MOVZB = 0wxb6 (* Needs escape code. *) | opToInt MOVZW = 0wxb7 (* Needs escape code. *) | opToInt MOVL_A_R32 = 0wx8b | opToInt IMUL = 0wxaf (* Needs escape code. *) | opToInt SSE2StoreSingle = 0wx11 (* Needs F3 0F escape. *) | opToInt SSE2StoreDouble = 0wx11 (* Needs F2 0F escape. *) | opToInt CQO_CDQ = 0wx99 | opToInt (SSE2Ops SSE2Move) = 0wx10 (* Needs F2 0F escape. *) | opToInt (SSE2Ops SSE2Comp) = 0wx2E (* Needs 66 0F escape. *) | opToInt (SSE2Ops SSE2Add) = 0wx58 (* Needs F2 0F escape. *) | opToInt (SSE2Ops SSE2Sub) = 0wx5c (* Needs F2 0F escape. *) | opToInt (SSE2Ops SSE2Mul) = 0wx59 (* Needs F2 0F escape. *) | opToInt (SSE2Ops SSE2Div) = 0wx5e (* Needs F2 0F escape. *) | opToInt (SSE2Ops SSE2And) = 0wx54 (* Needs 66 0F escape. *) | opToInt (SSE2Ops SSE2Xor) = 0wx57 (* Needs 66 0F escape. *) | opToInt (SSE2Ops SSE2MoveSingle) = 0wx5A (* Needs F3 0F escape. *) | opToInt (SSE2Ops SSE2DoubleToFloat) = 0wx5A (* Needs F2 0F escape. *) | opToInt CVTSI2SD = 0wx2a (* Needs F2 0F escape. *) | opToInt HLT = 0wxf4 | opToInt IMUL_C8 = 0wx6b | opToInt IMUL_C32 = 0wx69 datatype mode = Based0 (* mod = 0 *) | Based8 (* mod = 1 *) | Based32 (* mod = 2 *) | Register (* mod = 3 *) ; (* Put together the three fields which make up the mod r/m byte. *) fun modrm (md : mode, rg: Word8.word, rm : Word8.word) : Word8.word = let val _ = if rg > 0w7 then raise InternalError "modrm: bad rg" else () val _ = if rm > 0w7 then raise InternalError "modrm: bad rm" else () val modField: Word8.word = case md of Based0 => 0w0 | Based8 => 0w1 | Based32 => 0w2 | Register => 0w3 in (modField <<- 0w6) orb8 (rg <<- 0w3) orb8 rm end (* REX prefix *) fun rex {w,r,x,b} = 0wx40 orb8 (if w then 0w8 else 0w0) orb8 (if r then 0w4 else 0w0) orb8 (if x then 0w2 else 0w0) orb8 (if b then 0w1 else 0w0) (* The X86 has the option to include an index register and to scale it. *) datatype indexType = NoIndex | Index1 of genReg | Index2 of genReg | Index4 of genReg | Index8 of genReg (* Lock, Opsize and REPNE prefixes come before the REX. *) fun opcodePrefix LOCK_XADD = [0wxF0] (* Requires LOCK prefix. *) | opcodePrefix MOVL_R_A16 = [0wx66] (* Requires OPSIZE prefix. *) | opcodePrefix SSE2StoreSingle = [0wxf3] | opcodePrefix SSE2StoreDouble = [0wxf2] | opcodePrefix(SSE2Ops SSE2Comp) = [0wx66] | opcodePrefix(SSE2Ops SSE2And) = [0wx66] | opcodePrefix(SSE2Ops SSE2Xor) = [0wx66] | opcodePrefix(SSE2Ops SSE2MoveSingle) = [0wxf3] | opcodePrefix(SSE2Ops _) = [0wxf2] | opcodePrefix CVTSI2SD = [0wxf2] | opcodePrefix _ = [] (* A few instructions require an escape. Escapes come after the REX. *) fun escapePrefix MOVZB = [0wx0f] | escapePrefix MOVZW = [0wx0f] | escapePrefix LOCK_XADD = [0wx0f] | escapePrefix IMUL = [0wx0f] | escapePrefix(CondJump32 _) = [0wx0f] | escapePrefix SSE2StoreSingle = [0wx0f] | escapePrefix SSE2StoreDouble = [0wx0f] | escapePrefix(SSE2Ops SSE2Comp) = [0wx0f] | escapePrefix(SSE2Ops SSE2And) = [0wx0f] | escapePrefix(SSE2Ops SSE2Xor) = [0wx0f] | escapePrefix(SSE2Ops SSE2MoveSingle) = [0wx0f] | escapePrefix(SSE2Ops _) = [0wx0f] | escapePrefix CVTSI2SD = [0wx0f] | escapePrefix _ = [] (* Generate an opCode byte after doing any pending operations. *) fun opCodeBytes(opb:opCode, rx) = let val rexByte = case rx of NONE => [] | SOME rxx => if isX64 then [rex rxx] else raise InternalError "opCodeBytes: rex prefix in 32 bit mode"; in opcodePrefix opb @ rexByte @ escapePrefix opb @ [opToInt opb] end fun rexByte(opb, rrX, rbX, riX) = let (* We need a rex prefix if we need to set the length to 64-bit. *) val need64bit = case opb of Group1_8_A => isX64 (* Arithmetic operations - must be 64-bit *) | Group1_32_A => isX64 (* Arithmetic operations - must be 64-bit *) | Group2_1_A => isX64 (* 1-bit shifts - must be 64-bit *) | Group2_8_A => isX64 (* n-bit shifts - must be 64-bit *) | Group2_CL_A => isX64 (* Shifts by value in CL *) | Group3_A => isX64 (* Test, Not, Mul etc. *) | Arith _ => isX64 | MOVL_A_R => isX64 (* Needed *) | MOVL_R_A => isX64 (* Needed *) | XCHNG => isX64 | LEAL => isX64 (* Needed to ensure the result is 64-bits *) | MOVZB => isX64 (* Needed to ensure the result is 64-bits *) | MOVZW => isX64 (* Needed to ensure the result is 64-bits *) | MOVL_32_64_R _ => isX64 (* Needed *) | MOVL_32_A => isX64 (* Needed *) | IMUL => isX64 (* Needed to ensure the result is 64-bits *) | LOCK_XADD => isX64 (* Needed to ensure the result is 64-bits *) | CQO_CDQ => isX64 (* It's only CQO if there's a Rex prefix. *) | CVTSI2SD => isX64 (* This affects the size of the integer source. *) | IMUL_C8 => isX64 | IMUL_C32 => isX64 (* Group5 - We only use 2/4/6 and they don't need prefix *) | _ => false (* If we are using MOVB_R_A with SIL or DIL we need to force a REX prefix. That's only possible in 64-bit mode. *) val forceRex = case opb of MOVB_R_A {forceRex=true} => (* This is allowed in X86/64 but not in X86/32. *) if isX64 then true else raise InternalError "rexByte: MOVB_R_A accessing low order byte of ESI/EDI" | _ => false in if need64bit orelse rrX orelse rbX orelse riX orelse forceRex then [rex{w=need64bit, r=rrX, b=rbX, x = riX}] else [] end (* Register/register operation. *) fun opReg(opb:opCode, (*dest*)GeneralReg(rrC, rrX), (*source*)GeneralReg(rbC, rbX)) = let val pref = opcodePrefix opb (* Any opsize or lock prefix. *) val rex = rexByte(opb, rrX, rbX, false) val esc = escapePrefix opb (* Generate the ESCAPE code if needed. *) val opc = opToInt opb val mdrm = modrm(Register, rrC, rbC) in pref @ rex @ esc @ [opc, mdrm] end (* Operations on a register where the second "register" is actually an operation code. *) fun opRegPlus2(opb:opCode, rd: genReg, op2: Word8.word) = let val (rrC, rrX) = getReg rd val pref = opcodePrefix opb (* Any opsize or lock prefix. *) val rex = rexByte(opb, false, rrX, false) val opc = opToInt opb val mdrm = modrm(Register, op2, rrC) in pref @ rex @ [opc, mdrm] end local (* General instruction form with modrm and optional sib bytes. rb is an option since the base register may be omitted. This is used with LEA to tag integers. *) fun opIndexedGen (opb:opCode, offset: LargeInt.int, rb: genReg option, ri: indexType, (rrC, rrX)) = let (* Base encoding. (Based0, 0w5) means "no base" so if we need ebp as the base we have to use Based8 at least. *) val (offsetCode, rbC, rbX) = case rb of NONE => (Based0, 0w5 (* no base register *), false) | SOME rb => let val (rbC, rbX) = getReg rb val base = if offset = 0 andalso rbC <> 0wx5 (* Can't use ebp with Based0 *) then Based0 (* no disp field *) else if is8BitL offset then Based8 (* use 8-bit disp field *) else Based32 (* use 32-bit disp field *) in (base, rbC, rbX) end (* Index coding. esp can't be used as an index so (0w4, false) means "no index". But r12 (0w4, true) CAN be. *) val ((riC, riX), scaleFactor) = case ri of NoIndex => ((0w4, false), 0w0) | Index1 i => (getReg i, 0w0) | Index2 i => (getReg i, 0w1) | Index4 i => (getReg i, 0w2) | Index8 i => (getReg i, 0w3) (* If the base register is esp or r12 we have to use a sib byte even if there's no index. That's because 0w4 as a base register means "there's a SIB byte". *) val modRmAndOptionalSib = if rbC = 0w4 (* Code for esp and r12 *) orelse riC <> 0w4 orelse riX then let val mdrm = modrm(offsetCode, rrC, 0w4 (* s-i-b *)) val sibByte = (scaleFactor <<- 0w6) orb8 (riC <<- 0w3) orb8 rbC in [mdrm, sibByte] end else [modrm(offsetCode, rrC, rbC)] (* Generate the disp field (if any) *) val dispField = case (offsetCode, rb) of (Based8, _) => [Word8.fromLargeInt offset] | (Based32, _) => int32Signed offset | (_, NONE) => (* 32 bit absolute used as base *) int32Signed offset | _ => [] in opcodePrefix opb @ rexByte(opb, rrX, rbX, riX) @ escapePrefix opb @ opToInt opb :: modRmAndOptionalSib @ dispField end in fun opEA(opb, offset, rb, r) = opIndexedGen(opb, offset, SOME rb, NoIndex, getReg r) (* Generate a opcode plus a second modrm byte but where the "register" field in the modrm byte is actually a code. *) and opPlus2(opb, offset, rb, op2) = opIndexedGen(opb, offset, SOME rb, NoIndex, (op2, false)) fun opIndexed (opb, offset, rb, ri, rd) = opIndexedGen(opb, offset, rb, ri, getReg rd) fun opAddress(opb, offset, rb, ri, rd) = opIndexedGen (opb, offset, SOME rb, ri, getReg rd) and mMXAddress(opb, offset, rb, ri, SSE2Reg rrC) = opIndexedGen(opb, offset, SOME rb, ri, (rrC, false)) and opAddressPlus2(opb, offset, rb, ri, op2) = opIndexedGen(opb, offset, SOME rb, ri, (op2, false)) end fun immediateOperand (opn: arithOp, rd: genReg, imm: LargeInt.int) = if is8BitL imm then (* Can use one byte immediate *) opRegPlus2(Group1_8_A, rd, arithOpToWord opn) @ [Word8.fromLargeInt imm] else if is32bit imm then (* Need 32 bit immediate. *) opRegPlus2(Group1_32_A, rd, arithOpToWord opn) @ int32Signed imm else (* It won't fit in the immediate; put it in the non-address area. *) let val (rc, rx) = getReg rd val opb = opCodeBytes(Arith (opn, 0w3 (* r/m to reg *)), SOME{w=true, r=rx, b=false, x = false}) val mdrm = modrm (Based0, rc, 0w5 (* PC-relative *)) in opb @ [mdrm] @ int32Signed(tag 0) end fun arithOpReg(opn: arithOp, rd: genReg, rs: genReg) = opReg (Arith (opn, 0w3 (* r/m to reg *)), rd, rs) type handlerLab = addrs ref datatype callKinds = Recursive (* The function calls itself. *) | ConstantCode of machineWord (* A function that doesn't need a closure *) | FullCall (* Full closure call *) | DirectReg of genReg (* Currently used within ForeignCall to call the RTS *) fun floatingPtOp{escape, md, nnn, rm} = opCodeBytes(FPESC escape, NONE) @ [(md <<- 0w6) orb8 (nnn <<- 0w3) orb8 rm] datatype trapEntries = StackOverflowCall | StackOverflowCallEx | HeapOverflowCall (* RTS call. We need to save any registers that may contain addresses to the stack. All the registers are preserved but not seen by the GC. *) fun rtsCall(rtsEntry, regSet) = let val entry = case rtsEntry of StackOverflowCall => memRegStackOverflowCall | StackOverflowCallEx => memRegStackOverflowCallEx | HeapOverflowCall => memRegHeapOverflowCall val regSet = List.foldl(fn (r, a) => (0w1 << Word.fromInt(nReg(GenReg r))) orb a) 0w0 regSet val callInstr = opPlus2(Group5, LargeInt.fromInt entry, ebp, 0w2 (* call *)) val regSetInstr = if regSet >= 0w256 then [0wxca, (* This is actually a FAR RETURN *) wordToWord8 regSet, (* Low byte*) wordToWord8 (regSet >> 0w8) (* High byte*)] else if regSet <> 0w0 then [0wxcd, (* This is actually INT n *) wordToWord8 regSet] else [] in callInstr @ regSetInstr end (* Operations. *) type cases = word * label type memoryAddress = { base: genReg, offset: int, index: indexType } datatype branchPrediction = PredictNeutral | PredictTaken | PredictNotTaken datatype 'reg regOrMemoryArg = RegisterArg of 'reg | MemoryArg of memoryAddress | NonAddressConstArg of LargeInt.int | AddressConstArg of machineWord datatype nonWordSize = Size8Bit | Size16Bit | Size32Bit and fpSize = SinglePrecision | DoublePrecision datatype operation = MoveToRegister of { source: genReg regOrMemoryArg, output: genReg } | LoadNonWord of { size: nonWordSize, source: memoryAddress, output: genReg } | PushToStack of genReg regOrMemoryArg | PopR of genReg | ArithToGenReg of { opc: arithOp, output: genReg, source: genReg regOrMemoryArg } | ArithMemConst of { opc: arithOp, offset: int, base: genReg, source: LargeInt.int } | ArithMemLongConst of { opc: arithOp, offset: int, base: genReg, source: machineWord } | ShiftConstant of { shiftType: shiftType, output: genReg, shift: Word8.word } | ShiftVariable of { shiftType: shiftType, output: genReg } (* Shift amount is in ecx *) | ConditionalBranch of { test: branchOps, label: label, predict: branchPrediction } | LockMutableSegment of genReg | LoadAddress of { output: genReg, offset: int, base: genReg option, index: indexType } | TestTagR of genReg | TestByteMem of { base: genReg, offset: int, bits: word } | CallRTS of {rtsEntry: trapEntries, saveRegs: genReg list } | StoreRegToMemory of { toStore: genReg, address: memoryAddress } | StoreConstToMemory of { toStore: LargeInt.int, address: memoryAddress } | StoreLongConstToMemory of { toStore: machineWord, address: memoryAddress } | StoreNonWord of { size: nonWordSize, toStore: genReg, address: memoryAddress } | StoreNonWordConst of { size: nonWordSize, toStore: LargeInt.int, address: memoryAddress } | AllocStore of { size: int, output: genReg, saveRegs: genReg list } | AllocStoreVariable of { output: genReg, saveRegs: genReg list } | StoreInitialised | CallFunction of callKinds | JumpToFunction of callKinds | ReturnFromFunction of int | RaiseException | UncondBranch of label | ResetStack of { numWords: int, preserveCC: bool } | JumpLabel of label | LoadLabelAddress of { label: label, output: genReg } | RepeatOperation of repOps | DivideAccR of {arg: genReg, isSigned: bool } | DivideAccM of {base: genReg, offset: int, isSigned: bool } | AtomicXAdd of {base: genReg, output: genReg} | FPLoadFromMemory of { address: memoryAddress, precision: fpSize } | FPLoadFromFPReg of { source: fpReg, lastRef: bool } | FPLoadFromConst of real | FPStoreToFPReg of { output: fpReg, andPop: bool } | FPStoreToMemory of { address: memoryAddress, precision: fpSize, andPop: bool } | FPArithR of { opc: fpOps, source: fpReg } | FPArithConst of { opc: fpOps, source: machineWord } | FPArithMemory of { opc: fpOps, base: genReg, offset: int } | FPUnary of fpUnaryOps | FPStatusToEAX | FPLoadInt of { base: genReg, offset: int } | FPFree of fpReg | MultiplyR of { source: genReg regOrMemoryArg, output: genReg } | XMMArith of { opc: sse2Operations, source: xmmReg regOrMemoryArg, output: xmmReg } | XMMStoreToMemory of { toStore: xmmReg, address: memoryAddress, precision: fpSize } | XMMConvertFromInt of { source: genReg, output: xmmReg } | SignExtendForDivide | XChng of { reg: genReg, arg: genReg regOrMemoryArg } | Negative of { output: genReg } | JumpTable of { cases: label list, jumpSize: jumpSize ref } | IndexedJumpCalc of { addrReg: genReg, indexReg: genReg, jumpSize: jumpSize ref } and jumpSize = JumpSize2 | JumpSize8 type operations = operation list fun printOperation(operation, stream) = let fun printGReg r = stream(genRegRepr(r, sz32_64)) val printFPReg = stream o fpRegRepr and printXMMReg = stream o xmmRegRepr fun printBaseOffset(b, x, i) = ( stream(Int.toString i); stream "("; printGReg b; stream ")"; case x of NoIndex => () | Index1 x => (stream "["; printGReg x; stream "]") | Index2 x => (stream "["; printGReg x; stream "*2]") | Index4 x => (stream "["; printGReg x; stream "*4]") | Index8 x => (stream "["; printGReg x; stream "*8]") ) fun printMemAddress({ base, offset, index }) = printBaseOffset(base, index, offset) fun printRegOrMemoryArg printReg (RegisterArg r) = printReg r | printRegOrMemoryArg _ (MemoryArg{ base, offset, index }) = printBaseOffset(base, index, offset) | printRegOrMemoryArg _ (NonAddressConstArg c) = stream(LargeInt.toString c) | printRegOrMemoryArg _ (AddressConstArg c) = stream(Address.stringOfWord c) fun printCallKind Recursive = stream "Recursive" | printCallKind (ConstantCode w) = (stream "code="; stream(stringOfWord w)) | printCallKind FullCall = stream "via ClosureReg" | printCallKind (DirectReg reg) = printGReg reg fun printSize Size8Bit = "Byte" | printSize Size16Bit = "16Bit" | printSize Size32Bit = "32Bit" in case operation of MoveToRegister { source, output } => (stream "MoveRR "; printGReg output; stream " <= "; printRegOrMemoryArg printGReg source) | LoadNonWord { size, source, output } => (stream "Load"; printSize size; stream " "; printGReg output; stream " <= "; printMemAddress source ) | ArithToGenReg { opc, output, source } => (stream (arithOpRepr opc ^ "RR "); printGReg output; stream " <= "; printRegOrMemoryArg printGReg source ) | ArithMemConst { opc, offset, base, source } => ( stream (arithOpRepr opc ^ "MC "); printBaseOffset(base, NoIndex, offset); stream " "; stream(LargeInt.toString source) ) | ArithMemLongConst { opc, offset, base, source } => ( stream (arithOpRepr opc ^ "MC "); printBaseOffset(base, NoIndex, offset); stream " <= "; stream(Address.stringOfWord source) ) | ShiftConstant { shiftType, output, shift } => ( stream(shiftTypeRepr shiftType); stream " "; printGReg output; stream " by "; stream(Word8.toString shift) ) | ShiftVariable { shiftType, output } => (* Shift amount is in ecx *) ( stream(shiftTypeRepr shiftType); stream " "; printGReg output; stream " by ECX" ) | ConditionalBranch { test, label=Label{labelNo, ...}, predict } => ( stream(branchOpRepr test); stream " L"; stream(Int.toString labelNo); case predict of PredictNeutral => () | PredictTaken => stream " PredictTaken" | PredictNotTaken => stream " PredictNotTaken" ) | LockMutableSegment reg => (stream "LockMutableSegment "; printGReg reg) | PushToStack source => (stream "Push "; printRegOrMemoryArg printGReg source) | PopR dest => (stream "PopR "; printGReg dest) | StoreRegToMemory { toStore, address } => ( stream "StoreRegToMemory "; printMemAddress address; stream " <= "; printGReg toStore ) | StoreConstToMemory { toStore, address } => ( stream "StoreConstToMemory "; printMemAddress address; stream " <= "; stream(LargeInt.toString toStore) ) | StoreLongConstToMemory { address, toStore } => ( stream "StoreLongConstToMemory "; printMemAddress address; stream " <= "; stream(Address.stringOfWord toStore) ) | StoreNonWord { size, toStore, address } => ( stream "Store"; printSize size; stream " "; printMemAddress address; stream " <= "; stream(genRegRepr(toStore, SZByte)) ) | StoreNonWordConst { size, toStore, address } => ( stream "StoreConst"; printSize size; stream " "; printMemAddress address; stream " <= "; stream(LargeInt.toString toStore) ) | LoadAddress{ output, offset, base, index } => ( stream "LoadAddress "; case base of NONE => () | SOME r => (printGReg r; stream " + "); stream(Int.toString offset); case index of NoIndex => () | Index1 x => (stream " + "; printGReg x) | Index2 x => (stream " + "; printGReg x; stream "*2 ") | Index4 x => (stream " + "; printGReg x; stream "*4 ") | Index8 x => (stream " + "; printGReg x; stream "*8 "); stream " => "; printGReg output ) | TestTagR reg => ( stream "TestTagR "; printGReg reg ) | TestByteMem { base, offset, bits } => ( stream "TestByteMem "; printBaseOffset(base, NoIndex, offset); stream " 0x"; stream(Word.toString bits) ) | CallRTS {rtsEntry, ...} => ( stream "CallRTS "; case rtsEntry of StackOverflowCall => stream "StackOverflowCall" | HeapOverflowCall => stream "HeapOverflow" | StackOverflowCallEx => stream "StackOverflowCallEx" ) | AllocStore { size, output, ... } => (stream "AllocStore "; stream(Int.toString size); stream " => "; printGReg output ) | AllocStoreVariable { output, ...} => (stream "AllocStoreVariable "; printGReg output ) | StoreInitialised => stream "StoreInitialised" | CallFunction callKind => (stream "CallFunction "; printCallKind callKind) | JumpToFunction callKind => (stream "JumpToFunction "; printCallKind callKind) | ReturnFromFunction argsToRemove => (stream "ReturnFromFunction "; stream(Int.toString argsToRemove)) | RaiseException => stream "RaiseException" | UncondBranch(Label{labelNo, ...})=> (stream "UncondBranch L"; stream(Int.toString labelNo)) | ResetStack{numWords, preserveCC} => (stream "ResetStack "; stream(Int.toString numWords); if preserveCC then stream " preserve CC" else ()) | JumpLabel(Label{labelNo, ...}) => (stream "L"; stream(Int.toString labelNo); stream ":") | LoadLabelAddress{ label=Label{labelNo, ...}, output } => (stream "LoadLabelAddress L"; stream(Int.toString labelNo); stream "=>"; printGReg output) | RepeatOperation repOp => (stream "Repeat "; stream(repOpsRepr repOp)) | DivideAccR{arg, isSigned} => ( stream(if isSigned then "DivideSigned" else "DivideUnsigned"); stream " "; printGReg arg) | DivideAccM{base, offset, isSigned} => ( stream(if isSigned then "DivideSigned" else "DivideUnsigned"); stream " "; printBaseOffset(base, NoIndex, offset)) | AtomicXAdd{base, output} => (stream "LockedXAdd ("; printGReg base; stream ") <=> "; printGReg output) | FPLoadFromMemory{address, precision=DoublePrecision} => (stream "FPLoadDouble "; printMemAddress address) | FPLoadFromMemory{address, precision=SinglePrecision} => (stream "FPLoadSingle "; printMemAddress address) | FPLoadFromFPReg {source, lastRef} => (stream "FPLoad "; printFPReg source; if lastRef then stream " (LAST)" else()) | FPLoadFromConst const => (stream "FPLoad "; stream(Real.toString const) ) | FPStoreToFPReg{ output, andPop } => (if andPop then stream "FPStoreAndPop => " else stream "FPStore => "; printFPReg output) | FPStoreToMemory{ address, precision=DoublePrecision, andPop: bool } => ( if andPop then stream "FPStoreDoubleAndPop => " else stream "FPStoreDouble => "; printMemAddress address ) | FPStoreToMemory{ address, precision=SinglePrecision, andPop: bool } => ( if andPop then stream "FPStoreSingleAndPop => " else stream "FPStoreSingle => "; printMemAddress address ) | FPArithR{ opc, source } => (stream(fpOpRepr opc); stream " "; printFPReg source) | FPArithConst{ opc, source } => (stream(fpOpRepr opc); stream(Address.stringOfWord source)) | FPArithMemory{ opc, base, offset } => (stream(fpOpRepr opc); stream " "; printBaseOffset(base, NoIndex, offset)) | FPUnary opc => stream(fpUnaryRepr opc) | FPStatusToEAX => (stream "FPStatus "; printGReg eax) | FPLoadInt { base, offset} => (stream "FPLoadInt "; printBaseOffset(base, NoIndex, offset)) | FPFree reg => (stream "FPFree "; printFPReg reg) | MultiplyR {source, output } => (stream "MultiplyR"; stream " "; printRegOrMemoryArg printGReg source; stream " *=>"; printGReg output) | XMMArith { opc, source, output } => ( stream (sse2OpRepr opc ^ "RM "); printXMMReg output; stream " <= "; printRegOrMemoryArg printXMMReg source ) | XMMStoreToMemory { toStore, address, precision=DoublePrecision } => ( stream "MoveDouble "; printXMMReg toStore; stream " => "; printMemAddress address ) | XMMStoreToMemory { toStore, address, precision=SinglePrecision } => ( stream "MoveSingle "; printXMMReg toStore; stream " => "; printMemAddress address ) | XMMConvertFromInt { source, output } => ( stream "ConvertFromInt "; printGReg source; stream " => "; printXMMReg output ) | SignExtendForDivide => stream "SignExtendForDivide" | XChng { reg, arg } => (stream "XChng "; printGReg reg; stream " <=> "; printRegOrMemoryArg printGReg arg) | Negative { output } => (stream "Negative "; printGReg output) | JumpTable{cases, ...} => List.app(fn(Label{labelNo, ...}) => (stream "UncondBranch L"; stream(Int.toString labelNo); stream "\n")) cases | IndexedJumpCalc { addrReg, indexReg, jumpSize=ref jumpSize } => ( stream "IndexedJumpCalc "; printGReg addrReg; stream " += "; printGReg indexReg; print (case jumpSize of JumpSize2 => " * 2" | JumpSize8 => " * 8 ") ) ; stream "\n" end datatype implement = ImplementGeneral | ImplementLiteral of machineWord fun printLowLevelCode(ops, Code{printAssemblyCode, printStream, procName, ...}) = if printAssemblyCode then ( if procName = "" (* No name *) then printStream "?" else printStream procName; printStream ":\n"; List.app(fn i => printOperation(i, printStream)) ops; printStream "\n" ) else () (* Code generate a list of operations. The list is in reverse order i.e. last instruction first. *) fun codeGenerate ops = let fun cgOp(LockMutableSegment baseReg) = (* Remove the mutable bit from the flag byte. *)(*andb CONST(0xff-0x40),-1[Reax]*) opPlus2(Group1_8_a, ~1, baseReg, arithOpToWord AND) @ [0wxff - 0wx40] | cgOp(MoveToRegister{ source=RegisterArg source, output }) = (* Move from one general register to another. *) opReg(MOVL_R_A, source, output) | cgOp(MoveToRegister{ source=NonAddressConstArg source, output}) = if isX64 then ( if source >= ~0x40000000 andalso source < 0x40000000 then (* Signed 32-bits. *) (* This is not scanned in 64-bit mode because 32-bit values aren't big enough to contain addresses. *) opRegPlus2(MOVL_32_A, output, 0w0) @ int32Signed source else (* Too big for 32-bits; put it in the non-word area. *) let val (rc, rx) = getReg output val opb = opCodeBytes(MOVL_A_R, SOME{w=true, r=rx, b=false, x = false}) val mdrm = modrm (Based0, rc, 0w5 (* PC-relative *)) in opb @ [mdrm] @ int32Signed(tag 0) end ) else (* 32-bit mode. *) ( (* The RTS scans for possible addresses in MOV instructions so we can only use MOV if this is a tagged value. If it isn't we have to use something else such as XOR/ADD. In particular this is used before LOCK XADD for atomic inc/dec. TODO: There are various special cases such as setting to -1 can be done with an OR whatever the initial value. INC can be used in 32-bit mode instead of ADD for 1. LEAL isn't a good idea. *) if source mod 2 = 0 then arithOpReg(XOR, output, output) @ (if source = 0 then [] else immediateOperand(ADD, output, source)) else let val (rc, _) = getReg output val opb = opCodeBytes(MOVL_32_64_R rc, NONE) in opb @ int32Signed source end ) | cgOp(MoveToRegister{ source=AddressConstArg _, output }) = let val (rc, rx) = getReg output val opb = opCodeBytes(MOVL_32_64_R rc, if isX64 then SOME {w=true, r=false, b=rx, x=false} else NONE) val constnt = if wordSize = 8 then wordUnsigned(LargeWord.fromLargeInt(tag 0)) else int32Signed(tag 0) in opb @ constnt end | cgOp(MoveToRegister{source=MemoryArg{base, offset, index}, output }) = opAddress(MOVL_A_R, LargeInt.fromInt offset, base, index, output) | cgOp(LoadNonWord{size=Size8Bit, source={base, offset, index}, output }) = opAddress(MOVZB, LargeInt.fromInt offset, base, index, output) | cgOp(LoadNonWord{size=Size16Bit, source={base, offset, index}, output }) = opAddress(MOVZW, LargeInt.fromInt offset, base, index, output) | cgOp(LoadNonWord{size=Size32Bit, source={base, offset, index}, output }) = opAddress(MOVL_A_R32, LargeInt.fromInt offset, base, index, output) | cgOp(LoadAddress{ offset, base, index, output }) = (* This provides a mixture of addition and multiplication in a single instruction. *) opIndexed(LEAL, LargeInt.fromInt offset, base, index, output) | cgOp(ArithToGenReg{ opc, output, source=RegisterArg source }) = arithOpReg (opc, output, source) | cgOp(ArithToGenReg{ opc, output, source=NonAddressConstArg source }) = let (* On the X86/32 we use CMP with literal sources to compare with an address and the RTS searches for them in the code. Any non-address constant must be tagged. Most will be but we might want to use this to compare with the contents of a LargeWord value. *) val _ = if isX64 orelse is8BitL source orelse opc <> CMP orelse IntInf.andb(source, 1) = 1 then () else raise InternalError "CMP with constant that looks like an address" in immediateOperand(opc, output, source) end | cgOp(ArithToGenReg{ opc, output, source=AddressConstArg _ }) = (* This is only used for opc=CMP to compare addresses for equality. *) let val (rc, rx) = getReg output in if isX64 then let val opb = opCodeBytes(Arith (opc, 0w3), SOME {w=true, r=rx, b=false, x=false}) val mdrm = modrm(Based0, rc, 0w5 (* Immediate address. *)) in opb @ [mdrm] @ int32Signed(tag 0) (* This is the address of the constant. *) end else let val opb = opCodeBytes(Group1_32_A (* group1, 32 bit immediate *), NONE) val mdrm = modrm(Register, arithOpToWord opc, rc) in opb @ [mdrm] @ int32Signed(tag 0) end end | cgOp(ArithToGenReg{ opc, output, source=MemoryArg{offset, base, index} }) = opAddress(Arith (opc, 0w3), LargeInt.fromInt offset, base, index, output) | cgOp(ArithMemConst{ opc, offset, base, source }) = if is8BitL source then (* Can use one byte immediate *) opPlus2(Group1_8_A (* group1, 8 bit immediate *), LargeInt.fromInt offset, base, arithOpToWord opc) @ [Word8.fromLargeInt source] else (* Need 32 bit immediate. *) opPlus2(Group1_32_A (* group1, 32 bit immediate *), LargeInt.fromInt offset, base, arithOpToWord opc) @ int32Signed source | cgOp(ArithMemLongConst{ opc, offset, base, ... }) = (* Currently this is always a comparison. It is only valid in 32-bit mode because the constant is only 32-bits. *) if isX64 then raise InternalError "ArithMemLongConst in 64-bit mode" else let val opb = opPlus2 (Group1_32_A, LargeInt.fromInt offset, base, arithOpToWord opc) in opb @ int32Signed(tag 0) end | cgOp(ShiftConstant { shiftType, output, shift }) = if shift = 0w1 then opRegPlus2(Group2_1_A, output, shiftTypeToWord shiftType) else opRegPlus2(Group2_8_A, output, shiftTypeToWord shiftType) @ [shift] | cgOp(ShiftVariable { shiftType, output }) = opRegPlus2(Group2_CL_A, output, shiftTypeToWord shiftType) | cgOp(TestTagR reg) = let (* Test the bottom bit and jump depending on its value. This is used for tag tests in arbitrary precision operations and also for testing for short/long values. *) val (regNum, rx) = getReg reg in if reg = eax then (* Special instruction for testing accumulator. Can use an 8-bit test. *) opCodeBytes(TEST_ACC8, NONE) @ [0w1] else if isX64 then let (* We can use a REX code to force it to always use the low order byte. *) val opb = opCodeBytes(Group3_a, if rx orelse regNum >= 0w4 then SOME{w=false, r=false, b=rx, x=false} else NONE) val mdrm = modrm (Register, 0w0 (* test *), regNum) in opb @ [mdrm, 0w1] end else if reg = ebx orelse reg = ecx orelse reg = edx (* can we use an 8-bit test? *) then (* Yes. The register value refers to low-order byte. *) let val opb = opCodeBytes(Group3_a, NONE) val mdrm = modrm(Register, 0w0 (* test *), regNum) in opb @ [mdrm, 0w1] end else let val opb = opCodeBytes(Group3_A, NONE) val mdrm = modrm (Register, 0w0 (* test *), regNum) in opb @ mdrm :: word32Unsigned 0w1 end end | cgOp(TestByteMem{base, offset, bits}) = (* Test the tag bit and set the condition code. *) opPlus2(Group3_a, LargeInt.fromInt offset, base, 0w0 (* test *)) @ [wordToWord8 bits] | cgOp(ConditionalBranch{ test=opc, ... }) = opCodeBytes(CondJump32 opc, NONE) @ word32Unsigned 0w0 | cgOp(CallRTS{rtsEntry, saveRegs}) = rtsCall(rtsEntry, saveRegs) | cgOp(RepeatOperation repOp) = let (* We don't explicitly clear the direction flag. Should that be done? *) val opb = opCodeBytes(REP, NONE) (* Put in a rex prefix to force 64-bit mode. *) val optRex = if isX64 andalso (case repOp of STOSL => true | MOVSL => true | _ => false) then [rex{w=true, r=false, b=false, x=false}] else [] val repOp = repOpsToWord repOp in opb @ optRex @ [repOp] end | cgOp(DivideAccR{arg, isSigned}) = opRegPlus2(Group3_A, arg, if isSigned then 0w7 else 0w6) | cgOp(DivideAccM{base, offset, isSigned}) = opPlus2(Group3_A, LargeInt.fromInt offset, base, if isSigned then 0w7 else 0w6) | cgOp(AtomicXAdd{base, output}) = (* Locked exchange-and-add. We need the lock prefix before the REX prefix. *) opEA(LOCK_XADD, 0, base, output) | cgOp(PushToStack(RegisterArg reg)) = let val (rc, rx) = getReg reg in (* Always 64-bit but a REX prefix may be needed for the register. *) opCodeBytes(PUSH_R rc, if rx then SOME{w=false, b = true, x=false, r = false } else NONE) end | cgOp(PushToStack(MemoryArg{base, offset, index})) = opAddressPlus2(Group5, LargeInt.fromInt offset, base, index, 0w6 (* push *)) | cgOp(PushToStack(NonAddressConstArg constnt)) = if is8BitL constnt then opCodeBytes(PUSH_8, NONE) @ [Word8.fromLargeInt constnt] else if is32bit constnt then opCodeBytes(PUSH_32, NONE) @ int32Signed constnt else (* It won't fit in the immediate; put it in the non-address area. *) let val opb = opCodeBytes(Group5, NONE) val mdrm = modrm(Based0, 0w6 (* push *), 0w5 (* PC rel *)) in opb @ [mdrm] @ int32Signed(tag 0) end | cgOp(PushToStack(AddressConstArg _)) = if isX64 then (* Put it in the constant area. *) let val opb = opCodeBytes(Group5, NONE) val mdrm = modrm(Based0, 0w6 (* push *), 0w5 (* PC rel *)); in opb @ [mdrm] @ int32Signed(tag 0) end else (* 32-bit *) opCodeBytes(PUSH_32, NONE) @ int32Signed(tag 0) | cgOp(PopR reg ) = let val (rc, rx) = getReg reg in (* Always 64-bit but a REX prefix may be needed for the register. *) opCodeBytes(POP_R rc, if rx then SOME{w=false, b = true, x=false, r = false } else NONE) end | cgOp(StoreRegToMemory{toStore, address={offset, base, index}}) = opAddress(MOVL_R_A, LargeInt.fromInt offset, base, index, toStore) | cgOp(StoreConstToMemory{ toStore=toStore, address={offset, base, index} }) = ( (* Short constant. In 32-bit mode this is scanned as a possible address. That means we can't have an untagged constant in it. That's not a problem in 64-bit mode. There's a special check for using this to set the length word on newly allocated memory. *) isX64 orelse toStore = 0 orelse toStore mod 2 = 1 orelse offset = ~wordSize orelse raise InternalError "cgOp: StoreConstToMemory not tagged"; opAddressPlus2(MOVL_32_A, LargeInt.fromInt offset, base, index, 0w0) @ int32Signed toStore ) | cgOp(StoreLongConstToMemory{ address={offset, base, index}, ... }) = (* We can only store a 32-bit constant so we can't use this for 64-bit addresses. *) if isX64 then raise InternalError "StoreLongConstToMemory in 64-bit mode" else opAddressPlus2(MOVL_32_A, LargeInt.fromInt offset, base, index, 0w0) @ int32Signed (tag 0) | cgOp(StoreNonWord{ size = Size8Bit, toStore, address={offset, base, index} }) = let val (rrC, _) = getReg toStore (* In 64-bit mode we can specify the low-order byte of RSI/RDI but we must use a REX prefix. This isn't possible in 32-bit mode. *) val opcode = MOVB_R_A{forceRex= rrC >= 0w4} val _ = isX64 orelse rrC < 0w4 orelse raise InternalError "High byte register" in opAddress(opcode, LargeInt.fromInt offset, base, index, toStore) end | cgOp(StoreNonWord{ size = Size16Bit, toStore, address={offset, base, index}}) = opAddress(MOVL_R_A16, LargeInt.fromInt offset, base, index, toStore) | cgOp(StoreNonWord{ size = Size32Bit, toStore, address={offset, base, index}}) = opAddress(MOVL_R_A32, LargeInt.fromInt offset, base, index, toStore) | cgOp(StoreNonWordConst{ size=Size8Bit, toStore=toStore, address={offset, base, index}}) = opAddressPlus2(MOVB_8_A, LargeInt.fromInt offset, base, index, 0w0) @ [Word8.fromLargeInt toStore] | cgOp(StoreNonWordConst{ size=Size16Bit, ... }) = raise InternalError "StoreNonWordConst: 16Bit" | cgOp(StoreNonWordConst{ size=Size32Bit, ... }) = raise InternalError "StoreNonWordConst: 32Bit" (* Allocation is dealt with by expanding the code. *) | cgOp(AllocStore _) = raise InternalError "cgOp: AllocStore" | cgOp(AllocStoreVariable _) = raise InternalError "cgOp: AllocStoreVariable" | cgOp StoreInitialised = raise InternalError "cgOp: StoreInitialised" | cgOp(CallFunction Recursive) = (* Call to the start of the code. Offset is patched in later. *) opCodeBytes (CALL_32, NONE) @ int32Signed 0 | cgOp(CallFunction FullCall) = (* Indirect call to the address held in the first word of the closure. *) opAddressPlus2(Group5, 0, regClosure, NoIndex, 0w2 (* call *)) | cgOp(CallFunction(ConstantCode _)) = if isX64 then let val opc = opCodeBytes(Group5, NONE) val mdrm = modrm(Based0, 0w2 (* call *), 0w5 (* PC rel *)) in opc @ [mdrm] @ int32Signed(tag 0) end (* Because this is a relative branch we need to point this at itself. Until it is set to the relative offset of the destination it needs to contain an address within the code and this could be the last instruction. *) else opCodeBytes (CALL_32, NONE) @ int32Signed ~5 | cgOp(CallFunction(DirectReg reg)) = opRegPlus2(Group5, reg, 0w2 (* call *)) | cgOp(JumpToFunction Recursive) = (* Jump to the start of the current function. Offset is patched in later. *) opCodeBytes (JMP_32, NONE) @ int32Signed 0 | cgOp(JumpToFunction FullCall) = opAddressPlus2(Group5, 0, regClosure, NoIndex, 0w4 (* jmp *)) | cgOp(JumpToFunction (ConstantCode _)) = if isX64 then let val opb = opCodeBytes (Group5, NONE) val mdrm = modrm(Based0, 0w4 (* jmp *), 0w5 (* PC rel *)) in opb @ [mdrm] @ int32Signed(tag 0) end else opCodeBytes (JMP_32, NONE) @ int32Signed ~5 (* As with Call. *) | cgOp(JumpToFunction (DirectReg reg)) = (* Used as part of indexed case - not for entering a function. *) opRegPlus2(Group5, reg, 0w4 (* jmp *)) | cgOp(ReturnFromFunction args) = if args = 0 then opCodeBytes(RET, NONE) else let val offset = Word.fromInt(args * wordSize) in opCodeBytes(RET_16, NONE) @ [wordToWord8 offset, wordToWord8(offset >> 0w8)] end | cgOp RaiseException = let (* Load the current handler into ebx. Any register will do since we don't preserve registers across exceptions. *) val loadInstr = opEA(MOVL_A_R, LargeInt.fromInt memRegHandlerRegister, ebp, ebx) val opb = opCodeBytes(Group5, NONE) val mdrm = modrm (Based0, 0w4 (* jmp *), #1 (getReg ebx)) in loadInstr @ opb @ [mdrm] end | cgOp(UncondBranch _) = opToInt JMP_32 :: word32Unsigned 0w0 | cgOp(ResetStack{numWords, preserveCC}) = let val bytes = Word.toLargeInt(wordsToBytes(Word.fromInt numWords)) in (* If we don't need to preserve the CC across the reset we use ADD since it's shorter. *) if preserveCC then opEA(LEAL, bytes, esp, esp) else immediateOperand(ADD, esp, bytes) end | cgOp(JumpLabel _) = [] (* No code. *) | cgOp(LoadLabelAddress{ output, ... }) = (* Load the address of a label. Used when setting up an exception handler or in indexed cases. *) let val (rc, rx) = getReg output in (* On X86/64 we can use pc-relative addressing to set the start of the handler. On X86/32 we have to load the address of the start of the code and add an offset. *) if isX64 then let val opb = opCodeBytes(LEAL, SOME {w=true, r=rx, b=false, x=false}) val mdrm = modrm(Based0, rc, 0w5 (* Immediate address. *)) in opb @ mdrm :: int32Signed 0 end else opCodeBytes(MOVL_32_64_R rc, NONE) @ int32Signed(tag 0) @ opRegPlus2(Group1_32_A, output, arithOpToWord ADD) @ int32Signed 0 end | cgOp (FPLoadFromMemory {address={ base, offset, index }, precision}) = let val loadInstr = case precision of DoublePrecision => FPESC 0w5 | SinglePrecision => FPESC 0w1 in opAddressPlus2(loadInstr, LargeInt.fromInt offset, base, index, 0wx0) end | cgOp (FPLoadFromFPReg{source=FloatingPtReg fp, ...}) = (* Assume there's nothing currently on the stack. *) floatingPtOp({escape=0w1, md=0w3, nnn=0w0, rm= fp + 0w0}) (* FLD ST(r1) *) | cgOp (FPLoadFromConst realValue ) = let open Real infix == in (* Treat +/- 0,1 as special cases. *) if realValue == 0.0 (* This is also true for -0.0 *) then floatingPtOp({escape=0w1, md=0w3, nnn=0w5, rm=0w6}) (* FLDZ *) @ (if signBit realValue then floatingPtOp({escape=0w1, md=0w3, nnn=0w4, rm=0w0}) else []) else if realValue == 1.0 then floatingPtOp({escape=0w1, md=0w3, nnn=0w5, rm=0w0}) (* FLD1 *) else if realValue == ~1.0 then floatingPtOp({escape=0w1, md=0w3, nnn=0w5, rm=0w0}) @ (* FLD1 *) floatingPtOp({escape=0w1, md=0w3, nnn=0w4, rm=0w0}) (* FCHS *) else (* The real constant here is actually the address of an 8-byte memory object. FLD takes the address as the argument and in 32-bit mode we use an absolute address. In 64-bit mode we need to put the constant at the end of the code segment and use PC-relative addressing which happens to be encoded in the same way. *) let val opb = opCodeBytes(FPESC 0w5, NONE) (* FLD [Constant] *) val mdrm = modrm (Based0, 0w0, 0w5 (* constant address/PC-relative *)) in opb @ [mdrm] @ int32Signed(tag 0) end end | cgOp (FPStoreToFPReg{ output=FloatingPtReg dest, andPop }) = (* Assume there's one item on the stack. *) floatingPtOp({escape=0w5, md=0w3, nnn=if andPop then 0wx3 else 0wx2, rm = dest+0w1(* One item *)}) (* FSTP ST(n+1) *) | cgOp (FPStoreToMemory{address={ base, offset, index}, precision, andPop }) = let val storeInstr = case precision of DoublePrecision => FPESC 0w5 | SinglePrecision => FPESC 0w1 val subInstr = if andPop then 0wx3 else 0wx2 in opAddressPlus2(storeInstr, LargeInt.fromInt offset, base, index, subInstr) end | cgOp (FPArithR{ opc, source = FloatingPtReg src}) = floatingPtOp({escape=0w0, md=0w3, nnn=fpOpToWord opc, rm=src + 0w1 (* One item already there *)}) | cgOp (FPArithConst{ opc, ... }) = (* See comment on FPLoadFromConst *) let val opb = opCodeBytes(FPESC 0w4, NONE) (* FADD etc [constnt] *) val mdrm = modrm (Based0, fpOpToWord opc, 0w5 (* constant address *)) in opb @ [mdrm] @ int32Signed(tag 0) end | cgOp (FPArithMemory{ opc, base, offset }) = opPlus2(FPESC 0w4, LargeInt.fromInt offset, base, fpOpToWord opc) (* FADD/FMUL etc [r2] *) | cgOp (FPUnary opc ) = let val {rm, nnn} = fpUnaryToWords opc in floatingPtOp({escape=0w1, md=0w3, nnn=nnn, rm=rm}) (* FCHS etc *) end | cgOp (FPStatusToEAX ) = opCodeBytes(FPESC 0w7, NONE) @ [0wxe0] (* FNSTSW AX *) | cgOp (FPFree(FloatingPtReg reg)) = floatingPtOp({escape=0w5, md=0w3, nnn=0w0, rm=reg}) (* FFREE FP(n) *) | cgOp (FPLoadInt{base, offset}) = (* fildl (esp) in 32-bit mode or fildq (esp) in 64-bit mode. *) if isX64 then opPlus2(FPESC 0w7, LargeInt.fromInt offset, base, 0w5) else opPlus2(FPESC 0w3, LargeInt.fromInt offset, base, 0w0) | cgOp (MultiplyR {source=RegisterArg srcReg, output}) = (* We use the 0F AF form of IMUL rather than the Group3 MUL or IMUL because the former allows us to specify the destination register. The Group3 forms produce double length results in RAX:RDX/EAX:EDX but we only ever want the low-order half. *) opReg(IMUL (* 2 byte opcode *), output, srcReg) | cgOp (MultiplyR {source=MemoryArg{base, offset, index}, output}) = (* This may be used for large-word multiplication. *) opAddress(IMUL (* 2 byte opcode *), LargeInt.fromInt offset, base, index, output) | cgOp(MultiplyR {source=NonAddressConstArg constnt, output}) = (* If the constant is an 8-bit or 32-bit value we are actually using a three-operand instruction where the argument can be a register or memory and the destination register does not need to be the same as the source. *) if is8BitL constnt then opReg(IMUL_C8, output, output) @ [Word8.fromLargeInt constnt] else if is32bit constnt then opReg(IMUL_C32, output, output) @ int32Signed constnt else let val (rc, rx) = getReg output val opb = opCodeBytes(IMUL, SOME{w=true, r=rx, b=false, x = false}) val mdrm = modrm(Based0, rc, 0w5 (* PC rel *)) in opb @ [mdrm] @ int32Signed(tag 0) end | cgOp(MultiplyR {source=AddressConstArg _, ...}) = raise InternalError "Multiply - address constant" | cgOp (XMMArith { opc, source=MemoryArg{base, offset, index}, output }) = mMXAddress(SSE2Ops opc, LargeInt.fromInt offset, base, index, output) | cgOp (XMMArith { opc, source=AddressConstArg _, output=SSE2Reg rrC }) = let (* The real constant here is actually the address of an 8-byte memory object. The SSE2 instruction takes the address as the argument and in 32-bit mode we use an absolute address. In 64-bit mode we need to put the constant at the end of the code segment and use PC-relative addressing which happens to be encoded in the same way. *) val opb = opCodeBytes(SSE2Ops opc, NONE) val mdrm = modrm (Based0, rrC, 0w5 (* constant address/PC-relative *)) in opb @ [mdrm] @ int32Signed(tag 0) end | cgOp (XMMArith { opc, source=RegisterArg(SSE2Reg rrS), output=SSE2Reg rrC }) = let val oper = SSE2Ops opc val pref = opcodePrefix oper val esc = escapePrefix oper val opc = opToInt oper val mdrm = modrm(Register, rrC, rrS) in pref @ esc @ [opc, mdrm] end | cgOp (XMMArith _) = raise InternalError "cgOp: XMMArith" | cgOp (XMMStoreToMemory { toStore, address={base, offset, index}, precision }) = let val oper = case precision of DoublePrecision => SSE2StoreDouble | SinglePrecision => SSE2StoreSingle in mMXAddress(oper, LargeInt.fromInt offset, base, index, toStore) end | cgOp (XMMConvertFromInt { source, output=SSE2Reg rrC }) = let (* The source is a general register and the output a XMM register. *) (* TODO: The source can be a memory location. *) val (rbC, rbX) = getReg source in (* This is a special case with both an XMM and general register. *) opcodePrefix CVTSI2SD @ rexByte(CVTSI2SD, false, rbX, false) @ escapePrefix CVTSI2SD @ [opToInt CVTSI2SD, modrm(Register, rrC, rbC)] end | cgOp SignExtendForDivide = opCodeBytes(CQO_CDQ, if isX64 then SOME {w=true, r=false, b=false, x=false} else NONE) | cgOp (XChng { reg, arg=RegisterArg regY }) = opReg(XCHNG, reg, regY) | cgOp (XChng { reg, arg=MemoryArg{offset, base, index} }) = opAddress(XCHNG, LargeInt.fromInt offset, base, index, reg) | cgOp (XChng _) = raise InternalError "cgOp: XChng" | cgOp (Negative {output}) = opRegPlus2(Group3_A, output, 0w3 (* neg *)) | cgOp (JumpTable{cases, jumpSize=ref jumpSize}) = let val _ = jumpSize = JumpSize8 orelse raise InternalError "cgOp: JumpTable" (* Make one jump for each case and pad it 8 bytes with Nops. *) fun makeJump (_, l) = opToInt JMP_32 :: word32Unsigned 0w0 @ [opToInt NOP, opToInt NOP, opToInt NOP] @ l in List.foldl makeJump [] cases end | cgOp(IndexedJumpCalc{ addrReg, indexReg, jumpSize=ref jumpSize }) = ( jumpSize = JumpSize8 orelse raise InternalError "cgOp: IndexedJumpCalc"; (* Should currently be JumpSize8 which requires a multiplier of 4 and 4 to be subtracted to remove the shifted tag. *) opAddress(LEAL, ~4, addrReg, Index4 indexReg, addrReg) ) in List.rev(List.foldl (fn (c, list) => Word8Vector.fromList(cgOp c) :: list) [] ops) end (* General function to process the code. ic is the byte counter within the original code. *) fun foldCode foldFn n (ops, byteList) = let fun doFold(oper :: operList, bytes :: byteList, ic, acc) = doFold(operList, byteList, ic + Word.fromInt(Word8Vector.length bytes), foldFn(oper, bytes, ic, acc)) | doFold(_, _, _, n) = n in doFold(ops, byteList, 0w0, n) end (* Go through the code and update branch and similar instructions with the destinations of the branches. Long branches are converted to short where possible and the code is reprocessed. That might repeat if the effect of shorting one branch allows another to be shortened. *) fun fixupLabels(ops, bytesList, labelCount) = let (* Label array - initialise to 0wxff... . Every label should be defined but just in case, this is more likely to be detected in int32Signed. *) val labelArray = Array.array(labelCount, ~ 0w1) (* First pass - Set the addresses of labels. *) fun setLabelAddresses(oper :: operList, bytes :: byteList, ic) = ( case oper of JumpLabel(Label{labelNo, ...}) => Array.update(labelArray, labelNo, ic) | _ => (); setLabelAddresses(operList, byteList, ic + Word.fromInt(Word8Vector.length bytes)) ) | setLabelAddresses(_, _, ic) = ic (* Return the length of the code. *) fun fixup32(destination, bytes, ic) = let val brLength = Word8Vector.length bytes (* The offset is relative to the end of the branch instruction. *) val diff = Word.toInt destination - Word.toInt ic - brLength in Word8VectorSlice.concat[ Word8VectorSlice.slice(bytes, 0, SOME(brLength-4)), (* The original opcode. *) Word8VectorSlice.full(Word8Vector.fromList(int32Signed(LargeInt.fromInt diff))) ] end fun fixupAddress(UncondBranch(Label{labelNo, ...}), bytes, ic, list) = let val destination = Array.sub(labelArray, labelNo) val brLength = Word8Vector.length bytes (* The offset is relative to the end of the branch instruction. *) val diff = Word.toInt destination - Word.toInt ic - brLength in if brLength = 2 then (* It's a short branch. Take the original operand and set the relative offset. *) Word8Vector.fromList [opToInt JMP_8, byteSigned diff] :: list else if brLength <> 5 then raise InternalError "fixupAddress" else (* 32-bit offset. If it will fit in a byte we can use a short branch. If this is a reverse branch we can actually use values up to -131 here because we've calculated using the end of the long branch. *) if diff <= 127 andalso diff >= ~(128 + 3) then Word8Vector.fromList [opToInt JMP_8, 0w0 (* Fixed on next pass *)] :: list else Word8Vector.fromList(opToInt JMP_32 :: int32Signed(LargeInt.fromInt diff)) :: list end | fixupAddress(ConditionalBranch{label=Label{labelNo, ...}, test, ...}, bytes, ic, list) = let val destination = Array.sub(labelArray, labelNo) val brLength = Word8Vector.length bytes (* The offset is relative to the end of the branch instruction. *) val diff = Word.toInt destination - Word.toInt ic - brLength in if brLength = 2 then (* It's a short branch. Take the original operand and set the relative offset. *) Word8Vector.fromList [opToInt(CondJump test), byteSigned diff] :: list else if brLength <> 6 then raise InternalError "fixupAddress" else if diff <= 127 andalso diff >= ~(128+4) then Word8Vector.fromList[opToInt(CondJump test), 0w0 (* Fixed on next pass *)] :: list else Word8Vector.fromList(opCodeBytes(CondJump32 test, NONE) @ int32Signed(LargeInt.fromInt diff)) :: list end | fixupAddress(LoadLabelAddress{ label=Label{labelNo, ...}, ... }, brCode, ic, list) = let val destination = Array.sub(labelArray, labelNo) in if isX64 then (* This is a relative offset on the X86/64. *) fixup32(destination, brCode, ic) :: list else (* On X86/32 the address is relative to the start of the code so we simply put in the destination address. *) Word8VectorSlice.concat[ Word8VectorSlice.slice(brCode, 0, SOME(Word8Vector.length brCode-4)), Word8VectorSlice.full(Word8Vector.fromList(int32Signed(Word.toLargeInt destination)))] :: list end | fixupAddress(JumpTable{cases, jumpSize as ref JumpSize8}, brCode: Word8Vector.vector, ic, list) = let (* Each branch is a 32-bit jump padded up to 8 bytes. *) fun processCase(Label{labelNo, ...} :: cases, offset, ic) = fixup32(Array.sub(labelArray, labelNo), Word8VectorSlice.vector(Word8VectorSlice.slice(brCode, offset, SOME 5)), ic) :: Word8VectorSlice.vector(Word8VectorSlice.slice(brCode, offset+5, SOME 3)) :: processCase(cases, offset+8, ic+0w8) | processCase _ = [] (* Could we use short branches? If all of the branches were short the table would be smaller so the offsets we use would be less. Ignore backwards branches - could only occur if we have linked labels in a loop. *) val newStartOfCode = ic + Word.fromInt(List.length cases * 6) fun tryShort(Label{labelNo, ...} :: cases, ic) = let val destination = Array.sub(labelArray, labelNo) in if destination > ic + 0w2 andalso destination - ic - 0w2 < 0w127 then tryShort(cases, ic+0w2) else false end | tryShort _ = true val newCases = if tryShort(cases, newStartOfCode) then ( jumpSize := JumpSize2; (* Generate a short branch table. *) List.map(fn _ => Word8Vector.fromList [opToInt JMP_8, 0w0 (* Fixed on next pass *)]) cases ) else processCase(cases, 0, ic) in Word8Vector.concat newCases :: list end | fixupAddress(JumpTable{cases, jumpSize=ref JumpSize2}, _, ic, list) = let (* Each branch is a short jump. *) fun processCase(Label{labelNo, ...} :: cases, offset, ic) = let val destination = Array.sub(labelArray, labelNo) val brLength = 2 val diff = Word.toInt destination - Word.toInt ic - brLength in Word8Vector.fromList[opToInt JMP_8, byteSigned diff] :: processCase(cases, offset+2, ic+0w2) end | processCase _ = [] in Word8Vector.concat(processCase(cases, 0, ic)) :: list end (* If we've shortened a jump table we have to change the indexing. *) | fixupAddress(IndexedJumpCalc{ addrReg, indexReg, jumpSize=ref JumpSize2 }, _, _, list) = (* On x86/32 it might be shorter to use DEC addrReg; ADD addrReg, indexReg. *) Word8Vector.fromList(opAddress(LEAL, ~1, addrReg, Index1 indexReg, addrReg)) :: list | fixupAddress(CallFunction Recursive, brCode, ic, list) = let val brLen = Word8Vector.length brCode in (* Call to the start of the code. Offset is -(bytes to start). *) Word8VectorSlice.concat[ Word8VectorSlice.slice(brCode, 0, SOME(brLen-4)), (* The original opcode. *) Word8VectorSlice.full(Word8Vector.fromList(int32Signed(LargeInt.fromInt(~(Word.toInt ic+brLen))))) ] :: list end | fixupAddress(JumpToFunction Recursive, brCode, ic, list) = let val brLen = Word8Vector.length brCode in (* Call to the start of the code. Offset is -(bytes to start). *) Word8VectorSlice.concat[ Word8VectorSlice.slice(brCode, 0, SOME(brLen-4)), (* The original opcode. *) Word8VectorSlice.full(Word8Vector.fromList(int32Signed(LargeInt.fromInt(~(Word.toInt ic+brLen))))) ] :: list end | fixupAddress(_, bytes, _, list) = bytes :: list fun reprocess(bytesList, lastCodeSize) = let val fixedList = List.rev(foldCode fixupAddress [] (ops, bytesList)) val newCodeSize = setLabelAddresses(ops, fixedList, 0w0) in if newCodeSize = lastCodeSize then (fixedList, lastCodeSize) else if newCodeSize > lastCodeSize then raise InternalError "reprocess - size increased" else reprocess(fixedList, newCodeSize) end in reprocess(bytesList, setLabelAddresses(ops, bytesList, 0w0)) end (* The handling of constants generally differs between 32- and 64-bits. In 32-bits we put all constants inline and the GC processes the code to find the addresss. For real values the "constant" is actually the address of the boxed real value. In 64-bit mode only the MOV instruction allows a 64-bit quantity so in all other cases only non-addresses that will fit in 32-bits are inline. Other constants are stored in one of two areas at the end of the code segment. Non-addresses, including the actual values of reals, are stored in the non-address area and addresses go in the address area. Only the latter is scanned by the GC. The address area is also used in 32-bit mode but only has the address of the function name and the address of the profile ref in it. *) datatype constnts = SelfAddress (* The address of the start of the code - inline absolute address 32-bit only *) | InlineAbsoluteAddress of machineWord (* An address in the code *) | InlineRelativeAddress of machineWord (* A relative address: 32-bit only. *) | ConstantArea of machineWord (* A PC-relative address to the constant area - 64-bit only. *) | RealConstant of machineWord (* A PC-relative address to the non-address area - 64-bit only.*) | IntConstant of LargeInt.int (* A PC-relative address to the non-address area - 64-bit only.*) local fun getConstant(MoveToRegister{ source=NonAddressConstArg source, ...}, bytes, ic, l) = if isX64 then ( if source >= ~0x40000000 andalso source < 0x40000000 then (* Signed 32-bits. *) l else (* Too big for 32-bits. *) (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, IntConstant source) :: l ) else l (* 32-bit mode. The constant will always be inline even if we've had to use XOR r,r; ADD r,c *) | getConstant(MoveToRegister{ source=AddressConstArg source, ... }, bytes, ic, l) = (* This is the only InlineAbsolute constant form that is valid on X86/64 as well as X86/32. *) (ic + Word.fromInt(Word8Vector.length bytes) - Word.fromInt wordSize, InlineAbsoluteAddress source) :: l | getConstant(ArithToGenReg{ source=NonAddressConstArg source, ... }, bytes, ic, l) = if is32bit source then l else (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, IntConstant source) :: l | getConstant(ArithToGenReg{ source=AddressConstArg source, ... }, bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then ConstantArea source else InlineAbsoluteAddress source) :: l | getConstant(ArithMemLongConst{ source, ... }, bytes, ic, l) = (* 32-bit only. *) (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, InlineAbsoluteAddress source) :: l | getConstant(PushToStack(NonAddressConstArg constnt), bytes, ic, l) = if is32bit constnt then l else (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, IntConstant constnt) :: l | getConstant(PushToStack(AddressConstArg constnt), bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then ConstantArea constnt else InlineAbsoluteAddress constnt) :: l | getConstant(StoreLongConstToMemory{ toStore, ... }, bytes, ic, l) = (* 32-bit only. *) (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, InlineAbsoluteAddress toStore) :: l | getConstant(CallFunction(ConstantCode w), bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then ConstantArea w else InlineRelativeAddress w) :: l | getConstant(JumpToFunction(ConstantCode w), bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then ConstantArea w else InlineRelativeAddress w) :: l | getConstant(LoadLabelAddress _, _, ic, l) = (* We need the address of the code itself but it's in the first of a pair of instructions. *) if isX64 then l else (ic + 0w1, SelfAddress) :: l | getConstant(FPLoadFromConst realValue, bytes, ic, l) = if Real.==(realValue, 0.0) orelse Real.==(realValue, 1.0) orelse Real.==(realValue, ~1.0) then l else (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then RealConstant(toMachineWord realValue) else InlineAbsoluteAddress (toMachineWord realValue)) :: l | getConstant(FPArithConst{ source, ... }, bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then RealConstant(toMachineWord source) else InlineAbsoluteAddress (toMachineWord source)) :: l | getConstant(XMMArith { source=AddressConstArg constVal, ... }, bytes, ic, l) = (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, if isX64 then RealConstant(toMachineWord constVal) else InlineAbsoluteAddress (toMachineWord constVal)) :: l | getConstant(MultiplyR{ source=NonAddressConstArg source, ... }, bytes, ic, l) = if is32bit source then l else (ic + Word.fromInt(Word8Vector.length bytes) - 0w4, IntConstant source) :: l | getConstant(_, _, _, l) = l in val getConstants = foldCode getConstant [] end (* It is convenient to have AllocStore and AllocStoreVariable as primitives at the higher level but at this point it's better to expand them into their basic instructions. *) fun expandComplexOperations(instrs, oldLabelCount) = let val labelCount = ref oldLabelCount fun mkLabel() = Label{labelNo= !labelCount} before labelCount := !labelCount + 1 (* On X86/64 the local pointer is in r15. On X86/32 it's in memRegs. *) val localPointer = if isX64 then RegisterArg r15 else MemoryArg{base=ebp, offset=memRegLocalMPointer, index=NoIndex} fun allocStoreCommonCode (resultReg, isVarAlloc, regSaveSet: genReg list) = let val compare = ArithToGenReg{opc=CMP, output=resultReg, source=MemoryArg{base=ebp, offset=memRegLocalMbottom, index=NoIndex}} (* Normally we won't have run out of store so we want the default branch prediction to skip the test here. However doing that involves adding an extra branch which lengthens the code so it's probably not worth while. *) (* Just checking against the lower limit can fail in the situation where the heap pointer is at the low end of the address range and the store required is so large that the subtraction results in a negative number. In that case it will be > (unsigned) lower_limit so in addition we have to check that the result is < (unsigned) heap_pointer. This actually happened on Windows with X86-64. In theory this can happen with fixed-size allocations as well as variable allocations but in practice fixed-size allocations are going to be small enough that it's not a problem. *) val destLabel = mkLabel() val branches = if isVarAlloc then let val extraLabel = mkLabel() in [ConditionalBranch{test=JB, label=extraLabel, predict=PredictNotTaken}, ArithToGenReg{opc=CMP, output=resultReg, source=localPointer}, ConditionalBranch{test=JB, label=destLabel, predict=PredictTaken}, JumpLabel extraLabel] end else [ConditionalBranch{test=JNB, label=destLabel, predict=PredictTaken}] val callRts = CallRTS{rtsEntry=HeapOverflowCall, saveRegs=regSaveSet} val fixup = JumpLabel destLabel (* Update the heap pointer now we have the store. This is also used by the RTS in the event of a trap to work out how much store was being allocated. *) val update = if isX64 then MoveToRegister{source=RegisterArg resultReg, output=r15} else StoreRegToMemory{toStore=resultReg, address={base=ebp, offset=memRegLocalMPointer, index=NoIndex}} in compare :: branches @ [callRts, fixup, update] end fun doExpansion([], code, _) = code | doExpansion(AllocStore {size, output, saveRegs} :: instrs, code, inAllocation) = let val _ = inAllocation andalso raise InternalError "doExpansion: Allocation started but not complete" val () = if List.exists (fn r => r = output) saveRegs then raise InternalError "AllocStore: in set" else () val bytes = (size + 1) * wordSize val startCode = if isX64 then [LoadAddress{output=output, offset = ~ bytes, base=SOME r15, index=NoIndex}] (* TODO: What if it's too big to fit? *) else [MoveToRegister{source=MemoryArg{base=ebp, offset=memRegLocalMPointer, index=NoIndex}, output=output}, LoadAddress{output=output, offset = ~ bytes, base=SOME output, index=NoIndex}] val resultCode = startCode @ allocStoreCommonCode(output, false, saveRegs) in doExpansion(instrs, (List.rev resultCode) @ code, true) end | doExpansion(AllocStoreVariable {output, saveRegs} :: instrs, code, inAllocation) = let (* Allocates memory whose size as a number of bytes is in the output register. *) val _ = inAllocation andalso raise InternalError "doExpansion: Allocation started but not complete" val () = if List.exists (fn r => r = output) saveRegs then raise InternalError "AllocStore: in set" else () (* Negate the length and add it to the current heap pointer. *) val startCode = [Negative{output=output}, ArithToGenReg{opc=ADD, output=output, source=localPointer}] val resultCode = startCode @ allocStoreCommonCode(output, true, saveRegs) in doExpansion(instrs, (List.rev resultCode) @ code, true) end | doExpansion(StoreInitialised :: instrs, code, _) = doExpansion(instrs, code, false) | doExpansion(instr :: instrs, code, inAlloc) = doExpansion(instrs, instr::code, inAlloc) val expanded = List.rev(doExpansion(instrs, [], false)) in (expanded, !labelCount) end fun printCode (Code{procName, printStream, ...}, seg) = let val print = printStream val ptr = ref 0w0; (* prints a string representation of a number *) fun printValue v = if v < 0 then (print "-"; print(LargeInt.toString (~ v))) else print(LargeInt.toString v) infix 3 +:= ; fun (x +:= y) = (x := !x + (y:word)); fun get16s (a, seg) : int = let val b0 = Word8.toInt (codeVecGet (seg, a)); val b1 = Word8.toInt (codeVecGet (seg, a + 0w1)); val b1' = if b1 >= 0x80 then b1 - 0x100 else b1; in (b1' * 0x100) + b0 end fun get16u(a, seg) : int = Word8.toInt (codeVecGet (seg, a + 0w1)) * 0x100 + Word8.toInt (codeVecGet (seg, a)) (* Get 1 unsigned byte from the given offset in the segment. *) fun get8u (a, seg) : Word8.word = codeVecGet (seg, a); (* Get 1 signed byte from the given offset in the segment. *) fun get8s (a, seg) : int = Word8.toIntX (codeVecGet (seg, a)); (* Get 1 signed 32 bit word from the given offset in the segment. *) fun get32s (a, seg) : LargeInt.int = let val b0 = Word8.toLargeInt (codeVecGet (seg, a)); val b1 = Word8.toLargeInt (codeVecGet (seg, a + 0w1)); val b2 = Word8.toLargeInt (codeVecGet (seg, a + 0w2)); val b3 = Word8.toLargeInt (codeVecGet (seg, a + 0w3)); val b3' = if b3 >= 0x80 then b3 - 0x100 else b3; val topHw = (b3' * 0x100) + b2; val bottomHw = (b1 * 0x100) + b0; in (topHw * exp2_16) + bottomHw end fun get64s (a, seg) : LargeInt.int = let val b0 = Word8.toLargeInt (codeVecGet (seg, a)); val b1 = Word8.toLargeInt (codeVecGet (seg, a + 0w1)); val b2 = Word8.toLargeInt (codeVecGet (seg, a + 0w2)); val b3 = Word8.toLargeInt (codeVecGet (seg, a + 0w3)); val b4 = Word8.toLargeInt (codeVecGet (seg, a + 0w4)); val b5 = Word8.toLargeInt (codeVecGet (seg, a + 0w5)); val b6 = Word8.toLargeInt (codeVecGet (seg, a + 0w6)); val b7 = Word8.toLargeInt (codeVecGet (seg, a + 0w7)); val b7' = if b7 >= 0x80 then b7 - 0x100 else b7; in ((((((((b7' * 0x100 + b6) * 0x100 + b5) * 0x100 + b4) * 0x100 + b3) * 0x100 + b2) * 0x100) + b1) * 0x100) + b0 end fun print32 () = printValue (get32s (!ptr, seg)) before (ptr +:= 0w4) and print64 () = printValue (get64s (!ptr, seg)) before (ptr +:= 0w8) and print16 () = printValue (LargeInt.fromInt(get16s (!ptr, seg)) before (ptr +:= 0w2)) and print8 () = printValue (LargeInt.fromInt(get8s (!ptr, seg)) before (ptr +:= 0w1)) fun printJmp () = let val valu = get8s (!ptr, seg) before ptr +:= 0w1 in print (Word.fmt StringCvt.HEX (Word.fromInt valu + !ptr)) end (* Print an effective address. The register field may designate a general register or an xmm register depending on the instruction. *) fun printEAGeneral printRegister (rex, sz) = let val modrm = codeVecGet (seg, !ptr) val () = ptr +:= 0w1 (* Decode the Rex prefix if present. *) val rexX = (rex andb8 0wx2) <> 0w0 val rexB = (rex andb8 0wx1) <> 0w0 val prefix = case sz of SZByte => "byte ptr " | SZWord => "word ptr " | SZDWord => "dword ptr " | SZQWord => "qword ptr " in case (modrm >>- 0w6, modrm andb8 0w7, isX64) of (0w3, rm, _) => printRegister(rm, rexB, sz) | (md, 0w4, _) => let (* s-i-b present. *) val sib = codeVecGet (seg, !ptr) val () = ptr +:= 0w1 val ss = sib >>- 0w6 val index = (sib >>- 0w3) andb8 0w7 val base = sib andb8 0w7 in print prefix; case (md, base, isX64) of (0w1, _, _) => print8 () | (0w2, _, _) => print32 () | (0w0, 0w5, _) => print32 () (* Absolute in 32-bit mode. PC-relative in 64-bit ?? *) | _ => (); print "["; if md <> 0w0 orelse base <> 0w5 then ( print (genRegRepr (mkReg (base, rexB), sz32_64)); if index = 0w4 then () else print "," ) else (); if index = 0w4 andalso not rexX (* No index. *) then () else print (genRegRepr (mkReg(index, rexX), sz32_64) ^ (if ss = 0w0 then "*1" else if ss = 0w1 then "*2" else if ss = 0w2 then "*4" else "*8")); print "]" end | (0w0, 0w5, false) => (* Absolute address.*) (print prefix; print32 ()) | (0w0, 0w5, _) => (* PC-relative in 64-bit *) (print prefix; print ".+"; print32 ()) | (md, rm, _) => (* register plus offset. *) ( print prefix; if md = 0w1 then print8 () else if md = 0w2 then print32 () else (); print ("[" ^ genRegRepr (mkReg(rm, rexB), sz32_64) ^ "]") ) end (* For most instructions we want to print a general register. *) val printEA = printEAGeneral (fn (rm, rexB, sz) => print (genRegRepr (mkReg(rm, rexB), sz))) and printEAxmm = printEAGeneral (fn (rm, _, _) => print (xmmRegRepr(SSE2Reg rm))) fun printArith opc = print (case opc of 0 => "add " | 1 => "or " | 2 => "adc " | 3 => "sbb " | 4 => "and " | 5 => "sub " | 6 => "xor " | _ => "cmp " ) fun printGvEv (opByte, rex, rexR, sz) = let (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in printArith(Word8.toInt((opByte div 0w8) mod 0w8)); print "\t"; print (genRegRepr (mkReg(reg, rexR), sz)); print ","; printEA(rex, sz) end fun printMovCToR (opByte, sz, rexB) = ( print "mov \t"; print(genRegRepr (mkReg (opByte mod 0w8, rexB), sz)); print ","; case sz of SZDWord => print32 () | SZQWord => print64 () | _ => print "???" ) fun printShift (opByte, rex, sz) = let (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) val opc = (nb div 8) mod 8 in print (case opc of 4 => "shl " | 5 => "shr " | 7 => "sar " | _ => "???" ); print "\t"; printEA(rex, sz); print ","; if opByte = opToInt Group2_1_A then print "1" else if opByte = opToInt Group2_CL_A then print "cl" else print8 () end fun printFloat (opByte, rex) = let (* Opcode is in next byte. *) val opByte2 = codeVecGet (seg, !ptr) val nnn = (opByte2 >>- 0w3) andb8 0w7 val escNo = opByte andb8 0wx7 in if (opByte2 andb8 0wxC0) = 0wxC0 then (* mod = 11 *) ( case (escNo, nnn, opByte2 andb8 0wx7 (* modrm *)) of (0w1, 0w4, 0w0) => print "fchs" | (0w1, 0w4, 0w1) => print "fabs" | (0w1, 0w5, 0w6) => print "fldz" | (0w1, 0w5, 0w1) => print "flf1" | (0w7, 0w4, 0w0) => print "fnstsw\tax" | (0w1, 0w5, 0w0) => print "fld1" | (0w1, 0w6, 0w3) => print "fpatan" | (0w1, 0w7, 0w2) => print "fsqrt" | (0w1, 0w7, 0w6) => print "fsin" | (0w1, 0w7, 0w7) => print "fcos" | (0w1, 0w6, 0w7) => print "fincstp" | (0w1, 0w6, 0w6) => print "fdecstp" | (0w5, 0w2, rno) => print ("fst \tst(" ^ Word8.toString rno ^ ")") | (0w5, 0w3, rno) => print ("fstp\tst(" ^ Word8.toString rno ^ ")") | (0w1, 0w0, rno) => print ("fld \tst(" ^ Word8.toString rno ^ ")") | (0w1, 0w1, rno) => print ("fxch\tst(" ^ Word8.toString rno ^ ")") | (0w0, 0w3, rno) => print ("fcomp\tst(" ^ Word8.toString rno ^ ")") | (0w0, 0w0, rno) => print ("fadd\tst,st(" ^ Word8.toString rno ^ ")") | (0w0, 0w1, rno) => print ("fmul\tst,st(" ^ Word8.toString rno ^ ")") | (0w0, 0w4, rno) => print ("fsub\tst,st(" ^ Word8.toString rno ^ ")") | (0w0, 0w5, rno) => print ("fsubr\tst,st(" ^ Word8.toString rno ^ ")") | (0w0, 0w6, rno) => print ("fdiv\tst,st(" ^ Word8.toString rno ^ ")") | (0w0, 0w7, rno) => print ("fdivr\tst,st(" ^ Word8.toString rno ^ ")") | (0w5, 0w0, rno) => print ("ffree\tst(" ^ Word8.toString rno ^ ")") | _ => (printValue(Word8.toLargeInt opByte); printValue(Word8.toLargeInt opByte2)); ptr +:= 0w1 ) else (* mod = 00, 01, 10 *) ( case (escNo, nnn) of (0w1, 0w0) => (print "fld \t"; printEA(rex, SZDWord)) (* Single precision. *) | (0w1, 0w2) => (print "fst\t"; printEA(rex, SZDWord)) | (0w1, 0w3) => (print "fstp\t"; printEA(rex, SZDWord)) | (0w3, 0w0) => (print "fildl\t"; printEA(rex, SZQWord)) | (0w7, 0w5) => (print "fildq\t"; printEA(rex, SZQWord)) | (0w4, 0w0) => (print "fadd\t"; printEA(rex, SZQWord)) | (0w4, 0w1) => (print "fmul\t"; printEA(rex, SZQWord)) | (0w4, 0w3) => (print "fcomp\t"; printEA(rex, SZQWord)) | (0w4, 0w4) => (print "fsub\t"; printEA(rex, SZQWord)) | (0w4, 0w5) => (print "fsubr\t"; printEA(rex, SZQWord)) | (0w4, 0w6) => (print "fdiv\t"; printEA(rex, SZQWord)) | (0w4, 0w7) => (print "fdivr\t"; printEA(rex, SZQWord)) | (0w5, 0w0) => (print "fld \t"; printEA(rex, SZQWord)) (* Double precision. *) | (0w5, 0w2) => (print "fst\t"; printEA(rex, SZQWord)) | (0w5, 0w3) => (print "fstp\t"; printEA(rex, SZQWord)) | _ => (printValue(Word8.toLargeInt opByte); printValue(Word8.toLargeInt opByte2)) ) end fun printJmp32 oper = let val valu = get32s (!ptr, seg) before (ptr +:= 0w4) in print oper; print "\t"; print (Word.fmt StringCvt.HEX (!ptr + Word.fromLargeInt valu)) end fun printMask mask = let val wordMask = Word.fromInt mask fun printAReg n = if n = regs then () else ( if (wordMask andb (0w1 << Word.fromInt n)) <> 0w0 then (print(regRepr(regN n)); print " ") else (); printAReg(n+1) ) in printAReg 0 end in if procName = "" (* No name *) then print "?" else print procName; print ":\n"; while get8u (!ptr, seg) <> 0wxf4 (* HLT. *) do let val () = print (Word.fmt StringCvt.HEX (!ptr)) (* The address in hex. *) val () = print "\t" (* See if we have a lock prefix. *) val () = if get8u (!ptr, seg) = 0wxF0 then (print "lock "; ptr := !ptr + 0w1) else () val legacyPrefix = let val p = get8u (!ptr, seg) in if p = 0wxF2 orelse p = 0wxF3 orelse p = 0wx66 then (ptr := !ptr + 0w1; p) else 0wx0 end (* See if we have a REX byte. *) val rex = let val b = get8u (!ptr, seg); in if b >= 0wx40 andalso b <= 0wx4f then (ptr := !ptr + 0w1; b) else 0w0 end val rexW = (rex andb8 0wx8) <> 0w0 val rexR = (rex andb8 0wx4) <> 0w0 val rexB = (rex andb8 0wx1) <> 0w0 val opByte = get8u (!ptr, seg) before ptr +:= 0w1 val sizeFromRexW = if rexW then SZQWord else if legacyPrefix = 0wx66 then SZWord else SZDWord in case opByte of 0wx03 => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx0b => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx0f => (* ESCAPE *) let (* Opcode is in next byte. *) val opByte2 = codeVecGet (seg, !ptr) val () = (ptr +:= 0w1) in case legacyPrefix of 0w0 => ( case opByte2 of 0wxC1 => let val nb = codeVecGet (seg, !ptr); val reg = (nb >>- 0w3) andb8 0w7 in (* The address argument comes first in the assembly code. *) print "xadd\t"; printEA (rex, sizeFromRexW); print ","; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)) end | 0wxB6 => let val nb = codeVecGet (seg, !ptr); val reg = (nb >>- 0w3) andb8 0w7 in print "movzx\t"; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA (rex, SZByte) end | 0wxB7 => let val nb = codeVecGet (seg, !ptr); val reg = (nb >>- 0w3) andb8 0w7 in print "movzx\t"; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA (rex, SZWord) end | 0wxAF => let val nb = codeVecGet (seg, !ptr); val reg = (nb >>- 0w3) andb8 0w7 in print "imul\t"; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA (rex, sizeFromRexW) end | 0wx80 => printJmp32 "jo " | 0wx81 => printJmp32 "jno " | 0wx82 => printJmp32 "jb " | 0wx83 => printJmp32 "jnb " | 0wx84 => printJmp32 "je " | 0wx85 => printJmp32 "jne " | 0wx86 => printJmp32 "jna " | 0wx87 => printJmp32 "ja " | 0wx88 => printJmp32 "js " | 0wx89 => printJmp32 "jns " | 0wx8a => printJmp32 "jp " | 0wx8b => printJmp32 "jnp " | 0wx8c => printJmp32 "jl " | 0wx8d => printJmp32 "jge " | 0wx8e => printJmp32 "jle " | 0wx8f => printJmp32 "jg " | _ => (print "esc\t"; printValue(Word8.toLargeInt opByte2)) ) | 0wxf2 => (* SSE2 instruction *) let val nb = codeVecGet (seg, !ptr) val reg = SSE2Reg((nb >>- 0w3) andb8 0w7) in case opByte2 of 0wx10 => ( print "movsd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx11 => ( print "movsd\t"; printEAxmm(rex, SZQWord); print ","; print(xmmRegRepr reg) ) | 0wx2a => ( print "cvtsi2sd\t"; print(xmmRegRepr reg); print ","; printEA(rex, sizeFromRexW) ) | 0wx58 => ( print "addsd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx59 => ( print "mulsd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx5a => ( print "cvtsd2ss\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx5c => ( print "subsd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx5e => ( print "divsd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | b => (print "F2\n"; print "0F\n"; print(Word8.fmt StringCvt.HEX b)) end | 0wxf3 => (* SSE2 instruction. *) let val nb = codeVecGet (seg, !ptr) val reg = SSE2Reg((nb >>- 0w3) andb8 0w7) in case opByte2 of 0wx5a => ( print "cvtss2sd\t"; print(xmmRegRepr reg); print ","; printEA(rex, sizeFromRexW) ) | 0wx11 => ( print "movss\t"; printEAxmm(rex, SZDWord); print ","; print(xmmRegRepr reg) ) | b => (print "F3\n"; print "0F\n"; print(Word8.fmt StringCvt.HEX b)) end | 0wx66 => (* SSE2 instruction *) let val nb = codeVecGet (seg, !ptr) val reg = SSE2Reg((nb >>- 0w3) andb8 0w7) in case opByte2 of 0wx2e => ( print "ucomisd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx54 => ( print "andpd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | 0wx57 => ( print "xorpd\t"; print(xmmRegRepr reg); print ","; printEAxmm(rex, SZQWord) ) | b => (print "66\n"; print "0F\n"; print(Word8.fmt StringCvt.HEX b)) end | _ => (print "esc\t"; printValue(Word8.toLargeInt opByte2)) end (* ESCAPE *) | 0wx13 => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx1b => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx23 => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx2b => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx33 => printGvEv (opByte, rex, rexR, sizeFromRexW) | 0wx3b => printGvEv (opByte, rex, rexR, sizeFromRexW) (* Push and Pop. These are 64-bit on X86/64 whether there is REX prefix or not. *) | 0wx50 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx51 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx52 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx53 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx54 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx55 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx56 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx57 => print ("push\t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx58 => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx59 => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5a => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5b => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5c => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5d => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5e => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx5f => print ("pop \t" ^ genRegRepr (mkReg (opByte mod 0w8, rexB), sz32_64)) | 0wx68 => (print "push\t"; print32 ()) | 0wx69 => let (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "imul\t"; print(genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA(rex, sizeFromRexW); print ","; print32 () end | 0wx6a => (print "push\t"; print8 ()) | 0wx6b => let (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "imul\t"; print(genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA(rex, sizeFromRexW); print ","; print8 () end | 0wx70 => (print "jo \t"; printJmp()) | 0wx71 => (print "jno \t"; printJmp()) | 0wx72 => (print "jb \t"; printJmp()) | 0wx73 => (print "jnb \t"; printJmp()) | 0wx74 => (print "je \t"; printJmp()) | 0wx75 => (print "jne \t"; printJmp()) | 0wx76 => (print "jna \t"; printJmp()) | 0wx77 => (print "ja \t"; printJmp()) | 0wx78 => (print "js \t"; printJmp()) | 0wx79 => (print "jns \t"; printJmp()) | 0wx7a => (print "jp \t"; printJmp()) | 0wx7b => (print "jnp \t"; printJmp()) | 0wx7c => (print "jl \t"; printJmp()) | 0wx7d => (print "jge \t"; printJmp()) | 0wx7e => (print "jle \t"; printJmp()) | 0wx7f => (print "jg \t"; printJmp()) | 0wx80 => (* Group1_8_a *) let (* Memory, byte constant *) (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) in printArith ((nb div 8) mod 8); print "\t"; printEA(rex, SZByte); print ","; print8 () end | 0wx81 => let (* Memory, 32-bit constant *) (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) in printArith ((nb div 8) mod 8); print "\t"; printEA(rex, sizeFromRexW); print ","; print32 () end | 0wx83 => let (* Word memory, 8-bit constant *) (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) in printArith ((nb div 8) mod 8); print "\t"; printEA(rex, sizeFromRexW); print ","; print8 () end | 0wx87 => let (* xchng *) (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "xchng \t"; printEA(rex, sizeFromRexW); print ","; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)) end | 0wx88 => let (* mov eb,gb i.e a store *) (* Register is in next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)); val reg = (nb div 8) mod 8; in print "mov \t"; printEA(rex, SZByte); print ","; if rexR then print ("r" ^ Int.toString(reg+8) ^ "B") else case reg of 0 => print "al" | 1 => print "cl" | 2 => print "dl" | 3 => print "bl" (* If there is a REX byte these select the low byte of the registers. *) | 4 => print (if rex = 0w0 then "ah" else "sil") | 5 => print (if rex = 0w0 then "ch" else "dil") | 6 => print (if rex = 0w0 then "dh" else "bpl") | 7 => print (if rex = 0w0 then "bh" else "spl") | _ => print ("r" ^ Int.toString reg) end | 0wx89 => let (* mov ev,gv i.e. a store *) (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "mov \t"; printEA(rex, sizeFromRexW); print ","; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)) end | 0wx8b => let (* mov gv,ev i.e. a load *) (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "mov \t"; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA(rex, sizeFromRexW) end | 0wx8d => let (* lea gv.M *) (* Register is in next byte. *) val nb = codeVecGet (seg, !ptr) val reg = (nb >>- 0w3) andb8 0w7 in print "lea \t"; print (genRegRepr (mkReg(reg, rexR), sizeFromRexW)); print ","; printEA(rex, sizeFromRexW) end | 0wx8f => (print "pop \t"; printEA(rex, sz32_64)) | 0wx90 => print "nop" | 0wx99 => if rexW then print "cqo" else print "cdq" | 0wx9e => print "sahf\n" | 0wxa4 => (if legacyPrefix = 0wxf3 then print "rep " else (); print "movsb") | 0wxa5 => (if legacyPrefix = 0wxf3 then print "rep " else (); print "movsl") | 0wxa6 => (if legacyPrefix = 0wxf3 then print "repe " else (); print "cmpsb") | 0wxa8 => (print "test\tal,"; print8 ()) | 0wxaa => (if legacyPrefix = 0wxf3 then print "rep " else (); print "stosb") | 0wxab => ( if legacyPrefix = 0wxf3 then print "rep " else (); if rexW then print "stosq" else print "stosl" ) | 0wxb8 => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxb9 => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxba => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxbb => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxbc => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxbd => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxbe => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxbf => printMovCToR (opByte, sizeFromRexW, rexB) | 0wxc1 => (* Group2_8_A *) printShift (opByte, rex, sizeFromRexW) | 0wxc2 => (print "ret \t"; print16 ()) | 0wxc3 => print "ret" | 0wxc6 => (* move 8-bit constant to memory *) ( print "mov \t"; printEA(rex, SZByte); print ","; print8 () ) | 0wxc7 => (* move 32/64-bit constant to memory *) ( print "mov \t"; printEA(rex, sizeFromRexW); print ","; print32 () ) | 0wxca => (* Register mask *) let val mask = get16u (!ptr, seg) before (ptr +:= 0w2) in print "SAVE\t"; printMask mask end | 0wxcd => (* Register mask *) let val mask = get8u (!ptr, seg) before (ptr +:= 0w1) in print "SAVE\t"; printMask(Word8.toInt mask) end | 0wxd1 => (* Group2_1_A *) printShift (opByte, rex, sizeFromRexW) | 0wxd3 => (* Group2_CL_A *) printShift (opByte, rex, sizeFromRexW) | 0wxd8 => printFloat (opByte, rex) (* Floating point escapes *) | 0wxd9 => printFloat (opByte, rex) | 0wxda => printFloat (opByte, rex) | 0wxdb => printFloat (opByte, rex) | 0wxdc => printFloat (opByte, rex) | 0wxdd => printFloat (opByte, rex) | 0wxde => printFloat (opByte, rex) | 0wxdf => printFloat (opByte, rex) | 0wxe8 => let (* 32-bit relative call. *) val valu = get32s (!ptr, seg) before (ptr +:= 0w4) in print "call\t"; print (Word.fmt StringCvt.HEX (!ptr + Word.fromLargeInt valu)) end | 0wxe9 => let (* 32-bit relative jump. *) val valu = get32s (!ptr, seg) before (ptr +:= 0w4) in print "jmp \t"; print (Word.fmt StringCvt.HEX (!ptr + Word.fromLargeInt valu)) end | 0wxeb => (print "jmp \t"; printJmp()) | 0wxf4 => print "hlt" (* Marker to indicate end-of-code. *) | 0wxf6 => (* Group3_a *) let (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) val opc = (nb div 8) mod 8 in print (case opc of 0 => "test" | 3 => "neg" | _ => "???" ); print "\t"; printEA(rex, SZByte); if opc = 0 then (print ","; print8 ()) else () end | 0wxf7 => (* Group3_A *) let (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) val opc = (nb div 8) mod 8 in print (case opc of 0 => "test" | 3 => "neg " | 4 => "mul " | 5 => "imul" | 6 => "div " | 7 => "idiv" | _ => "???" ); print "\t"; printEA(rex, sizeFromRexW); (* Test has an immediate operand. It's 32-bits even in 64-bit mode. *) if opc = 0 then (print ","; print32 ()) else () end | 0wxff => (* Group5 *) let (* Opcode is determined by next byte. *) val nb = Word8.toInt (codeVecGet (seg, !ptr)) val opc = (nb div 8) mod 8 in print (case opc of 2 => "call" | 4 => "jmp " | 6 => "push" | _ => "???" ); print "\t"; printEA(rex, sz32_64) (* None of the cases we use need a prefix. *) end | _ => print(Word8.fmt StringCvt.HEX opByte); print "\n" end; (* end of while loop *) print "\n" end (* printCode *); (* This actually does the final code-generation. *) fun generateCode {ops=operations, code=cvec as Code{procName, printAssemblyCode, printStream, profileObject, ...}, labelCount} : address = let val (expanded, newLabelCount) = expandComplexOperations (operations, labelCount) val () = printLowLevelCode(expanded, cvec) local val initialBytesList = codeGenerate expanded in (* Fixup labels and shrink long branches to short. *) val (bytesList, codeSize) = fixupLabels(expanded, initialBytesList, newLabelCount) end val constantList = getConstants(expanded, bytesList) (* Get the number of constants that need to be added to the address area. *) val constsInConstArea = List.foldl (fn ((_, ConstantArea _), n) => n+1 | (_, n) => n) 0 constantList local (* Add one byte for the HLT and round up to a number of words. *) val endOfCode = (codeSize+Word.fromInt wordSize) div Word.fromInt wordSize val realSize = 0w8 div Word.fromInt wordSize fun addSizes((_, RealConstant _), n) = n+realSize | addSizes((_, IntConstant _), n) = n+0w1 | addSizes(_, n) = n val numOfNonAddrWords = List.foldl addSizes 0w0 constantList in val endOfByteArea = endOfCode + numOfNonAddrWords (* +4 for function name, register mask (no longer used), profile object and count of constants. *) val segSize = endOfByteArea + Word.fromInt constsInConstArea + 0w4 end (* Create a byte vector and copy the data in. This is a byte area and not scanned by the GC so cannot contain any addresses. *) val byteVec = byteVecMake segSize val ic = ref 0w0 local fun genByte (ival: Word8.word) = set8u (ival, !ic, byteVec) before ic := !ic + 0w1 in fun genBytes l = Word8Vector.app (fn i => genByte i) l val () = List.app (fn b => genBytes b) bytesList val () = genBytes(Word8Vector.fromList(opCodeBytes(HLT, NONE))) (* Marker - this is used by ScanConstants in the RTS. *) end (* Align ic onto a fullword boundary. *) val () = ic := ((!ic + Word.fromInt wordSize - 0w1) andb ~ (Word.fromInt wordSize)) (* Copy the non-address constants. These are only used in 64-bit mode and are either real constants or integers that are too large to fit in a 32-bit inline constants. We don't use this for real constants in 32-bit mode because we don't have relative addressing. Instead a real constant is the inline address of a boxed real number. *) local fun putNonAddrConst(addrs, RealConstant m) = let val addrOfConst = ! ic val c = toMachineWord m val cAsAddr = toAddress c (* For the moment this should always be a real number contained in a byte segment. If this changes in the future we may need to align this back onto a 4/8-byte boundary. *) val cLength = length cAsAddr * Word.fromInt wordSize val _ = (cLength = 0w8 andalso flags cAsAddr = F_bytes) orelse raise InternalError "putNonAddrConst: Not a real number" fun doCopy n = if n = cLength then () else (genBytes(Word8Vector.fromList[loadByte(cAsAddr, n)]); doCopy(n+0w1)) val () = doCopy 0w0 in set32s(Word.toLargeInt(addrOfConst - addrs - 0w4), addrs, byteVec) end | putNonAddrConst(addrs, IntConstant imm) = let val addrOfConst = ! ic fun setMem(m, n) = if n = Word.fromInt wordSize then () else ( genBytes(Word8Vector.fromList[Word8.fromLargeInt(m mod 0x100)]); setMem(m div 0x100, n+0w1) ) val () = setMem(imm, 0w0) in set32s(Word.toLargeInt(addrOfConst - addrs - 0w4), addrs, byteVec) end | putNonAddrConst _ = () in val () = List.app putNonAddrConst constantList end val _ = bytesToWords(! ic) = endOfByteArea orelse raise InternalError "mismatch" (* Put in the number of constants. This must go in before we actually put in any constants. In 32-bit mode there are only three constants: the function name and the register mask, now unused and the profile object. All other constants are in the code. *) local val addr = wordsToBytes(endOfByteArea + 0w3 + Word.fromInt constsInConstArea) fun setBytes(_, _, 0) = () | setBytes(ival, offset, count) = ( byteVecSet(byteVec, offset, Word8.fromLargeInt(ival mod 256)); setBytes(ival div 256, offset+0w1, count-1) ) in val () = setBytes(LargeInt.fromInt(3 + constsInConstArea), addr, wordSize) end; (* We've put in all the byte data so it is safe to convert this to a mutable code cell that can contain addresses and will be scanned by the GC. *) val codeSeg = byteVecToCodeVec byteVec (* Various RTS functions assume that the first constant is the function name. The profiler assumes that the third word is the address of the mutable that contains the profile count. The second word used to be used for the register mask but is no longer used. *) val () = codeVecPutWord (codeSeg, endOfByteArea, toMachineWord procName) val () = codeVecPutWord (codeSeg, endOfByteArea + 0w1, toMachineWord 1 (* No longer used. *)) (* Next the profile object. *) val () = codeVecPutWord (codeSeg, endOfByteArea + 0w2, profileObject) in let fun setBytes(_, _, 0w0) = () | setBytes(b, addr, count) = ( codeVecSet (codeSeg, addr, wordToWord8 b); setBytes(b >> 0w8, addr+0w1, count-0w1) ) fun putConst ((addrs, SelfAddress), constAddr) = (* Self address goes inline. *) (codeVecPutConstant (codeSeg, addrs, toMachineWord(codeVecAddr codeSeg), ConstAbsolute); constAddr) | putConst ((addrs, InlineAbsoluteAddress m), constAddr) = (codeVecPutConstant (codeSeg, addrs, m, ConstAbsolute); constAddr) | putConst ((addrs, InlineRelativeAddress m), constAddr) = (codeVecPutConstant (codeSeg, addrs, m, ConstX86Relative); constAddr) | putConst ((addrs, ConstantArea m), constAddr) = (* Not inline. Put the constant in the constant area and set the original address to be the relative offset to the constant itself. *) ( codeVecPutWord (codeSeg, constAddr, m); (* Put in the 32-bit offset - always unsigned since the destination is after the reference. *) setBytes(constAddr * Word.fromInt wordSize - addrs - 0w4, addrs, 0w4); constAddr+0w1 ) | putConst (_, constOffset) = constOffset (* Put the constants. Any values in the constant area start at +3 i.e. after the profile. *) val _ = List.foldl putConst (endOfByteArea+0w3) constantList val () = if printAssemblyCode then (* print out the code *) ( printCode(cvec, codeSeg); printStream "\n\n" ) else () in (* Finally lock the code and return the code address. *) codeVecLockAndGetExecutable codeSeg end (* the result *) end (* generateCode *) structure Sharing = struct type code = code and reg = reg and genReg = genReg and fpReg = fpReg and addrs = addrs and operation = operation and regSet = RegSet.regSet and label = label and branchOps = branchOps and callKinds = callKinds and arithOp = arithOp and shiftType = shiftType and repOps = repOps and fpOps = fpOps and fpUnaryOps = fpUnaryOps and sse2Operations = sse2Operations end end (* struct *) (* CODECONS *); polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/INTSETSIG.sml0000644000175000017500000000225613204034553022600 0ustar daviddavid(* Copyright (c) 2017 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature INTSETSIG = sig type intSet val emptySet: intSet val setToList: intSet -> int list val listToSet: int list -> intSet val removeFromSet: int * intSet -> intSet val union: intSet * intSet -> intSet val minus: intSet * intSet -> intSet val cardinality: intSet -> int val filterSet: (int->bool) -> intSet -> intSet val member: int * intSet -> bool val partition: (int -> bool) -> intSet -> intSet * intSet end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86OPTIMISE.ML0000644000175000017500000002275713204034553022513 0ustar daviddavid(* Copyright David C. J. Matthews 2010, 2012, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86OPTIMISE( structure X86CODE: X86CODESIG ) : sig type operation type code type operations = operation list type address = Address.address (* Optimise and code-generate. *) val generateCode: {code: code, ops: operations, labelCount: int} -> address structure Sharing: sig type operation = operation type code = code end end = struct open X86CODE exception InternalError = Misc.InternalError fun generateCode{code, ops, labelCount} = let open RegSet (* Print the pre-optimised code if required. *) val () = printLowLevelCode(ops, code) (* Optimise the code list by repeated scans up and down the list. Scan forward through the list reversing it as we go. Then scan the reversed list and turn it back into the original order. *) fun forward([], list, rep) = reverse(list, [], rep) | forward(ResetStack{numWords=count1, preserveCC=pres1} :: ResetStack{numWords=count2, preserveCC=pres2} :: tl, list, _) = (* Combine adjacent resets. *) forward(ResetStack{numWords=count1+count2, preserveCC=pres1 orelse pres2} :: tl, list, true) | forward((a as ArithToGenReg{ opc=opA, output=outA, source=NonAddressConstArg constA }) :: (b as ArithToGenReg{ opc=opB, output=outB, source=NonAddressConstArg constB }) :: tl, list, rep) = if outA = outB andalso (opA = ADD orelse opA = SUB) andalso (opB = ADD orelse opB = SUB) then let val (opc, result) = case (opA, opB) of (ADD, ADD) => (ADD, constA+constB) | (SUB, SUB) => (SUB, constA+constB) | (ADD, SUB) => if constA >= constB then (ADD, constA-constB) else (SUB, constB-constA) | (SUB, ADD) => if constA >= constB then (SUB, constA-constB) else (ADD, constB-constA) | _ => raise InternalError "forward: ArithRConst" in (* We could extract the case where the result is zero but that doesn't seem to occur. *) forward(ArithToGenReg{ opc=opc, output=outA, source=NonAddressConstArg result } :: tl, list, true) end else forward(b :: tl, a :: list, rep) | forward((mv as MoveToRegister{source=MemoryArg{base, offset, index=NoIndex}, output}) :: (reset as ResetStack{numWords=count, preserveCC}) :: tl, list, rep) = (* If we have a load from the stack followed by a stack reset we may be able to use a pop. Even if we can't we may be better to split the stack reset in case there's another load that could. *) if base = esp andalso offset < count * Address.wordSize then (* Can use a pop instruction. *) let val resetBefore = Int.min(offset div Address.wordSize, count) in if resetBefore = 0 (* So offset must be zero. *) then let val _ = offset = 0 orelse raise InternalError "forward: offset non-zero" val resetAfter = count - resetBefore - 1 in forward(if resetAfter = 0 then tl else ResetStack{numWords=resetAfter, preserveCC=preserveCC} :: tl, PopR output :: list, true) end else forward( MoveToRegister{ source=MemoryArg{base=base, offset=offset-resetBefore*Address.wordSize, index=NoIndex}, output=output} :: (if count = resetBefore then tl else ResetStack{numWords=count - resetBefore, preserveCC=preserveCC} :: tl), ResetStack{numWords=resetBefore, preserveCC=preserveCC} :: list, true) end else forward(reset::tl, mv::list, rep) | forward(hd :: tl, list, rep) = forward(tl, hd :: list, rep) and reverse([], list, rep) = (list, rep) (* We store a result, then load it. *) | reverse((l as FPLoadFromFPReg{source, lastRef}) :: (s as FPStoreToFPReg{output, andPop=true}) :: tl, list, rep) = if source = output then if lastRef then (* We're not reusing the register so we don't need to store. *) reverse(tl, list, true) else (* We're reusing the register later. Store it there but don't pop. *) reverse(FPStoreToFPReg{output=output, andPop=false} :: tl, list, true) else reverse(s :: tl, l :: list, rep) (* See if we can merge two allocations. *) (* Comment this out for the moment. *) (* | reverse((l as AllocStore{size=aSize, output=aOut}) :: tl, list, rep) = let fun searchAlloc([], _, _, _) = [] | searchAlloc (AllocStore{size=bSize, output=bOut} :: tl, instrs, modRegs, true) = (* We can merge this allocation unless the output register has been modified in the meantime. *) if inSet(bOut, modRegs) then [] else (* Construct a new list with the allocation replaced by an addition, the original instructions in between and the first allocation now allocating the original space plus space for the additional object and its length word. *) LoadAddress{output=aOut, offset=(bSize+1) * Address.wordSize, base=SOME bOut, index=NoIndex} :: List.filter (fn StoreInitialised => false | _ => true) (List.rev instrs) @ (AllocStore{size=aSize+bSize+1, output=bOut} :: tl) (* Check the correct matching of allocation and completion. *) | searchAlloc (AllocStore _ :: _, _, _, false) = raise InternalError "AllocStore found but last allocation not complete" | searchAlloc((s as StoreInitialised) :: tl, instrs, modRegs, false) = searchAlloc(tl, s :: instrs, modRegs, true) | searchAlloc(StoreInitialised :: _, _, _, true) = raise InternalError "StoreInitialised found with no allocation" (* For the moment we allow only a limited range of instructions here*) | searchAlloc((s as StoreConstToMemory _) :: tl, instrs, modRegs, alloc) = searchAlloc(tl, s :: instrs, modRegs, alloc) | searchAlloc((s as StoreRegToMemory _) :: tl, instrs, modRegs, alloc) = searchAlloc(tl, s :: instrs, modRegs, alloc) | searchAlloc((s as StoreLongConstToMemory _) :: tl, instrs, modRegs, alloc) = searchAlloc(tl, s :: instrs, modRegs, alloc) | searchAlloc((s as ResetStack _) :: tl, instrs, modRegs, alloc) = searchAlloc(tl, s :: instrs, modRegs, alloc) | searchAlloc((s as LoadMemR{output, ...}) :: tl, instrs, modRegs, alloc) = if output = aOut then [] else searchAlloc(tl, s :: instrs, regSetUnion(modRegs, singleton output), alloc) | searchAlloc((s as MoveRR{output, ...}) :: tl, instrs, modRegs, alloc) = if output = aOut then [] else searchAlloc(tl, s :: instrs, regSetUnion(modRegs, singleton output), alloc) (* Anything else terminates the search. *) | searchAlloc _ = [] in case searchAlloc(tl, [], noRegisters, false) of [] => reverse(tl, l :: list, rep) | newTail => reverse(newTail, list, true) end *) | reverse(hd :: tl, list, rep) = reverse(tl, hd :: list, rep) (* Repeat scans through the code until there are no further changes. *) fun repeat ops = case forward(ops, [], false) of (list, false) => {ops=list, labelCount=labelCount} | (list, true) => repeat list val {ops=finalOps, labelCount=finalLabelCount} = if lowLevelOptimise code then repeat ops else {ops=ops, labelCount=labelCount} in (* Pass on to the next stage. *) X86CODE.generateCode{ops=finalOps, labelCount=finalLabelCount, code=code} end structure Sharing = struct type operation = operation type code = code end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86IDENTIFYREFSSIG.ML0000644000175000017500000000554113204034553023510 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86IDENTIFYREFSSIG = sig type x86ICode and reg and preg and basicBlock and controlFlow and argument and memoryIndex and regProperty and ccRef type intSet type regState = { active: int, refs: int, pushState: bool, prop: regProperty } (* Simple basic block with register usage information. *) datatype extendedBasicBlock = ExtendedBasicBlock of { block: {instr: x86ICode, current: intSet, active: intSet, kill: intSet } list, flow: controlFlow, locals: intSet, (* Defined and used entirely within the block. *) imports: intSet, (* Defined outside the block, used inside it, but not needed afterwards. *) exports: intSet, (* Defined within the block, possibly used inside, but used outside. *) passThrough: intSet, (* Active throughout the block. May be referred to by it but needed afterwards. *) initialStacks: intSet, (* Stack items required at the start i.e. imports+passThrough for stack items. *) inCCState: ccRef option, (* The state this block assumes. If SOME _ all predecessors must set it. *) outCCState: ccRef option (* The condition code set by this block. SOME _ if at least one successor needs it. *) } val identifyRegisters: basicBlock vector * regProperty vector -> extendedBasicBlock vector * regState vector (* Get the registers for an instruction. *) val getInstructionRegisters: x86ICode -> { sources: preg list, dests: preg list } val argRegs: argument -> preg list and argIndex: memoryIndex -> preg list structure Sharing: sig type x86ICode = x86ICode and reg = reg and preg = preg and intSet = intSet and basicBlock = basicBlock and extendedBasicBlock = extendedBasicBlock and controlFlow = controlFlow and argument = argument and memoryIndex = memoryIndex and regProperty = regProperty and ccRef = ccRef end; end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86PUSHREGISTERSIG.ML0000644000175000017500000000245513204034553023542 0ustar daviddavid(* Copyright David C. J. Matthews 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86PUSHREGISTERSIG = sig type preg and x86ICode and intSet and extendedBasicBlock and basicBlock and regProperty val addRegisterPushes : { code: extendedBasicBlock vector, pushVec: bool vector, pregProps: regProperty vector, firstPass: bool } -> { code: basicBlock vector, pregProps: regProperty vector, maxStack: int } structure Sharing: sig type x86ICode = x86ICode and preg = preg and extendedBasicBlock = extendedBasicBlock and basicBlock = basicBlock and regProperty = regProperty end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/ml_bind.ML0000644000175000017500000000676513204034553022361 0ustar daviddavid(* Copyright David C. J. Matthews 2015-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) local structure X86OutputCode = X86OUTPUTCODE( structure DEBUG = Debug structure PRETTY = Pretty ) structure X86Optimise = X86OPTIMISE( structure X86CODE = X86OutputCode ) structure X86ForeignCall = X86FOREIGNCALL ( structure DEBUG = Debug structure X86CODE = X86OutputCode structure X86OPTIMISE = X86Optimise ) structure X86ICode = X86ICode ( structure X86CODE = X86OutputCode ) structure X86ICodeIdentify = X86ICodeIdentifyReferences ( structure DEBUG = Debug structure ICODE = X86ICode structure INTSET = IntSet ) structure X86ICodeConflicts = X86ICodeGetConflictSets ( structure ICODE = X86ICode structure INTSET = IntSet structure IDENTIFY = X86ICodeIdentify ) structure X86PushRegs = X86PushRegisters ( structure ICODE = X86ICode structure INTSET = IntSet structure IDENTIFY = X86ICodeIdentify ) structure X86IAllocate = X86AllocateRegisters ( structure ICODE = X86ICode structure IDENTIFY = X86ICodeIdentify structure CONFLICTSETS = X86ICodeConflicts structure INTSET = IntSet ) structure X86ICodeGenerate = X86ICodeToX86Code ( structure DEBUG = Debug structure ICODE = X86ICode structure IDENTIFY = X86ICodeIdentify structure PRETTY = Pretty structure INTSET = IntSet structure X86CODE = X86OutputCode structure X86OPTIMISE = X86Optimise structure STRONGLY = StronglyConnected ) structure X86ICodeTransform = X86ICodeTransform ( structure DEBUG = Debug structure ICODE = X86ICode structure IDENTIFY = X86ICodeIdentify structure CONFLICTSETS = X86ICodeConflicts structure ALLOCATE = X86IAllocate structure PUSHREGISTERS = X86PushRegs structure PRETTY = Pretty structure INTSET = IntSet structure CODEGEN = X86ICodeGenerate ) in structure X86Code = X86CodetreeToICode ( structure BACKENDTREE = BackendIntermediateCode structure DEBUG = Debug structure ICODE = X86ICode structure X86FOREIGN = X86ForeignCall structure ICODETRANSFORM = X86ICodeTransform ) end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86CODESIG.sml0000644000175000017500000002151713204034553022613 0ustar daviddavid(* Copyright David C. J. Matthews 2010, 2012, 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86CODESIG = sig type machineWord = Address.machineWord type short = Address.short type address = Address.address type code (* Registers. *) datatype genReg = GeneralReg of Word8.word * bool and fpReg = FloatingPtReg of Word8.word and xmmReg = SSE2Reg of Word8.word datatype reg = GenReg of genReg | FPReg of fpReg | XMMReg of xmmReg val isX64: bool and is32bit: LargeInt.int -> bool val eax: genReg and ebx: genReg and ecx: genReg and edx: genReg and edi: genReg and esi: genReg and esp: genReg and ebp: genReg and r8: genReg and r9: genReg and r10: genReg and r11: genReg and r12: genReg and r13: genReg and r14: genReg and r15: genReg and fp0: fpReg and fp1: fpReg and fp2: fpReg and fp3: fpReg and fp4: fpReg and fp5: fpReg and fp6: fpReg and fp7: fpReg and xmm0:xmmReg and xmm1:xmmReg and xmm2:xmmReg and xmm3:xmmReg and xmm4:xmmReg and xmm5:xmmReg and xmm6:xmmReg (* For vector indexing we provide a numbering for the registers. *) val regs: int val regN: int -> reg val nReg: reg -> int val regRepr: reg -> string type addrs val addrZero: addrs structure RegSet: sig eqtype regSet val singleton: reg -> regSet val allRegisters: regSet (* All registers: data, address, floating pt. *) val generalRegisters: regSet val floatingPtRegisters: regSet val sse2Registers: regSet val noRegisters: regSet val isAllRegs: regSet->bool val regSetUnion: regSet * regSet -> regSet val regSetIntersect: regSet * regSet -> regSet val listToSet: reg list -> regSet val setToList: regSet -> reg list val regSetMinus: regSet * regSet -> regSet val inSet: reg * regSet -> bool val cardinality: regSet -> int val regSetRepr: regSet -> string val oneOf: regSet -> reg end datatype arithOp = ADD | OR (*|ADC | SBB*) | AND | SUB | XOR | CMP and shiftType = SHL | SHR | SAR and repOps = CMPSB | MOVSB | MOVSL | STOSB | STOSL and fpOps = FADD | FMUL | FCOM | FCOMP | FSUB | FSUBR | FDIV | FDIVR and fpUnaryOps = FABS | FCHS | FLD1 | FLDZ and branchOps = JO | JNO | JE | JNE | JL | JGE | JLE | JG | JB | JNB | JNA | JA | JP | JNP and sse2Operations = SSE2Move | SSE2Comp | SSE2Add | SSE2Sub | SSE2Mul | SSE2Div | SSE2Xor | SSE2And | SSE2MoveSingle | SSE2DoubleToFloat datatype callKinds = Recursive | ConstantCode of machineWord | FullCall | DirectReg of genReg datatype label = Label of { labelNo: int } datatype indexType = NoIndex | Index1 of genReg | Index2 of genReg | Index4 of genReg | Index8 of genReg type memoryAddress = { base: genReg, offset: int, index: indexType } datatype branchPrediction = PredictNeutral | PredictTaken | PredictNotTaken datatype 'reg regOrMemoryArg = RegisterArg of 'reg | MemoryArg of memoryAddress | NonAddressConstArg of LargeInt.int | AddressConstArg of machineWord datatype nonWordSize = Size8Bit | Size16Bit | Size32Bit and fpSize = SinglePrecision | DoublePrecision datatype trapEntries = StackOverflowCall | StackOverflowCallEx | HeapOverflowCall datatype operation = MoveToRegister of { source: genReg regOrMemoryArg, output: genReg } | LoadNonWord of { size: nonWordSize, source: memoryAddress, output: genReg } | PushToStack of genReg regOrMemoryArg | PopR of genReg | ArithToGenReg of { opc: arithOp, output: genReg, source: genReg regOrMemoryArg } | ArithMemConst of { opc: arithOp, offset: int, base: genReg, source: LargeInt.int } | ArithMemLongConst of { opc: arithOp, offset: int, base: genReg, source: machineWord } | ShiftConstant of { shiftType: shiftType, output: genReg, shift: Word8.word } | ShiftVariable of { shiftType: shiftType, output: genReg } (* Shift amount is in ecx *) | ConditionalBranch of { test: branchOps, label: label, predict: branchPrediction } | LockMutableSegment of genReg | LoadAddress of { output: genReg, offset: int, base: genReg option, index: indexType } | TestTagR of genReg | TestByteMem of { base: genReg, offset: int, bits: word } | CallRTS of {rtsEntry: trapEntries, saveRegs: genReg list } | StoreRegToMemory of { toStore: genReg, address: memoryAddress } | StoreConstToMemory of { toStore: LargeInt.int, address: memoryAddress } | StoreLongConstToMemory of { toStore: machineWord, address: memoryAddress } | StoreNonWord of { size: nonWordSize, toStore: genReg, address: memoryAddress } | StoreNonWordConst of { size: nonWordSize, toStore: LargeInt.int, address: memoryAddress } | AllocStore of { size: int, output: genReg, saveRegs: genReg list } | AllocStoreVariable of { output: genReg, saveRegs: genReg list } | StoreInitialised | CallFunction of callKinds | JumpToFunction of callKinds | ReturnFromFunction of int | RaiseException | UncondBranch of label | ResetStack of { numWords: int, preserveCC: bool } | JumpLabel of label | LoadLabelAddress of { label: label, output: genReg } | RepeatOperation of repOps | DivideAccR of {arg: genReg, isSigned: bool } | DivideAccM of {base: genReg, offset: int, isSigned: bool } | AtomicXAdd of {base: genReg, output: genReg} | FPLoadFromMemory of { address: memoryAddress, precision: fpSize } | FPLoadFromFPReg of { source: fpReg, lastRef: bool } | FPLoadFromConst of real | FPStoreToFPReg of { output: fpReg, andPop: bool } | FPStoreToMemory of { address: memoryAddress, precision: fpSize, andPop: bool } | FPArithR of { opc: fpOps, source: fpReg } | FPArithConst of { opc: fpOps, source: machineWord } | FPArithMemory of { opc: fpOps, base: genReg, offset: int } | FPUnary of fpUnaryOps | FPStatusToEAX | FPLoadInt of { base: genReg, offset: int } | FPFree of fpReg | MultiplyR of { source: genReg regOrMemoryArg, output: genReg } | XMMArith of { opc: sse2Operations, source: xmmReg regOrMemoryArg, output: xmmReg } | XMMStoreToMemory of { toStore: xmmReg, address: memoryAddress, precision: fpSize } | XMMConvertFromInt of { source: genReg, output: xmmReg } | SignExtendForDivide | XChng of { reg: genReg, arg: genReg regOrMemoryArg } | Negative of { output: genReg } | JumpTable of { cases: label list, jumpSize: jumpSize ref } | IndexedJumpCalc of { addrReg: genReg, indexReg: genReg, jumpSize: jumpSize ref } and jumpSize = JumpSize2 | JumpSize8 type operations = operation list val printOperation: operation * (string -> unit) -> unit val codeCreate: string * machineWord * Universal.universal list -> code (* makes the initial segment. *) (* Code generate operations and construct the final code. *) val generateCode: { ops: operations, code: code, labelCount: int } -> address val memRegLocalMPointer: int and memRegHandlerRegister: int and memRegLocalMbottom: int and memRegStackLimit: int and memRegExceptionPacket: int and memRegCStackPtr: int and memRegThreadSelf: int and memRegStackPtr: int and memRegSize: int (* Debugging controls and streams for optimiser. *) val lowLevelOptimise: code -> bool val printLowLevelCode: operation list * code -> unit structure Sharing: sig type code = code and reg = reg and genReg = genReg and fpReg = fpReg and addrs = addrs and operation = operation and regSet = RegSet.regSet and label = label and branchOps = branchOps and callKinds = callKinds and arithOp = arithOp and shiftType = shiftType and repOps = repOps and fpOps = fpOps and fpUnaryOps = fpUnaryOps and sse2Operations = sse2Operations end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICodeGetConflictSets.ML0000644000175000017500000003300113204034553025206 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86ICodeGetConflictSets( structure ICODE: ICodeSig structure INTSET: INTSETSIG structure IDENTIFY: X86IDENTIFYREFSSIG sharing ICODE.Sharing = IDENTIFY.Sharing = INTSET ): X86GETCONFLICTSETSIG = struct open ICODE open INTSET open IDENTIFY type conflictState = { conflicts: intSet, realConflicts: reg list } type triple = {instr: x86ICode, current: intSet, active: intSet} exception InternalError = Misc.InternalError (* Get the conflict sets. This code was originally part of identifyRegisterState and was split off. *) fun getConflictStates (blocks: extendedBasicBlock vector, maxPRegs) = let (* Other registers that conflict with this i.e. cannot share the same real register. *) val regConflicts = Array.array(maxPRegs, emptySet) (* Real registers that cannot be used for this because they are needed for an instruction e.g. shift or block move, that requires these. *) and regRealConflicts = Array.array(maxPRegs, []: reg list) fun addConflictsTo(addTo, conflicts) = List.app(fn aReg => Array.update(regConflicts, aReg, union(Array.sub(regConflicts, aReg), conflicts))) addTo (* To reserve a register we need to add the real register to the real conflict sets of all the abstract conflicts. *) local fun isInset reg set = List.exists (fn r => r = reg) set in fun reserveRegister(reserveFor, reg) = let fun reserveAReg r = let val absConflicts = Array.sub(regConflicts, r) fun addConflict i = if isInset i reserveFor then () else addRealConflict (i, reg) in List.app addConflict (setToList absConflicts) end in List.app reserveAReg reserveFor end and addRealConflict (i, reg) = let val currentConflicts = Array.sub(regRealConflicts, i) in if isInset reg currentConflicts then () else Array.update(regRealConflicts, i, reg :: currentConflicts) end end fun conflictsForInstr passThrough {instr, current, ...} = let val {sources, dests} = getInstructionRegisters instr fun regNo(PReg i) = i val destRegNos = map regNo dests and sourceRegNos = map regNo sources val destSet = listToSet destRegNos val afterRemoveDests = minus(current, destSet) local (* In almost all circumstances the destination and sources don't conflict and the same register can be used as a destination and a source. The exceptions are AllocateMemoryVariable and BoxValues which can only store the size or the contents after the memory has been allocated. We also have to make sure that the test and work registers are different in IndexedCase. *) val postInstruction = case instr of AllocateMemoryVariable _ => destRegNos @ sourceRegNos | BoxValue _ => destRegNos @ sourceRegNos | IndexedCaseOperation _ => destRegNos @ sourceRegNos | ArithmeticFunction{oper=SUB, operand2, ...} => (* Special case for subtraction - we can't use the same register for the result and the second operand. *) destRegNos @ map regNo (argRegs operand2) | ArithmeticFunction{operand2 as MemoryLocation _, ...} => (* If operand1 is not in the destination register we will move it there before the instruction. That means that we must not have the destination register as either a base or index register. *) destRegNos @ map regNo (argRegs operand2) | Multiplication{operand2 as MemoryLocation _, ...} => (* Likewise for multiplication. *) destRegNos @ map regNo (argRegs operand2) (* TailRecursiveCall and JumpLoop may require a work register. This is the only destination but if present it must be distinct from the arguments. *) | TailRecursiveCall _ => destRegNos @ sourceRegNos | JumpLoop _ => destRegNos @ sourceRegNos | _ => destRegNos in (* If there is more than one destination they conflict with each other. *) val () = addConflictsTo(postInstruction, listToSet postInstruction); (* Mark conflicts for the destinations, i.e. after the instruction. The destinations conflict with the registers that are used subsequently. *) val () = addConflictsTo(postInstruction, current); val () = addConflictsTo(postInstruction, passThrough); (* Mark conflicts for the sources i.e. before the instruction. *) (* Sources must be set up as conflicts with each other i.e. when we come to allocate registers we must choose different real registers for different abstract registers. *) val () = addConflictsTo(sourceRegNos, listToSet sourceRegNos) val () = addConflictsTo(sourceRegNos, afterRemoveDests); val () = addConflictsTo(sourceRegNos, passThrough) end (* I'm not sure if this is needed. There was a check in the old code to ensure that different registers were used for loop variables even if they were actually unused. This may happen anyway. *) val () = case instr of JumpLoop{regArgs, ...} => let val destRegs = List.foldl(fn ((_, PReg loopReg), dests) => loopReg :: dests) [] regArgs in addConflictsTo(destRegs, listToSet destRegs); addConflictsTo(destRegs, current); addConflictsTo(destRegs, passThrough) end | _ => () (* Certain instructions are specific as to the real registers. *) val () = case instr of (* Storing a byte value. This is messy on X86/32 because we can't use edi or esi as the register to store. To get round this we reserve ecx as a possible register as with shifts. We don't actually need to use this but it is available if necessary. *) StoreArgument { source=RegisterArgument sReg, kind=MoveByte, ...} => if isX64 then () else reserveRegister([regNo sReg], GenReg ecx) | InitialiseMem{size, addr, init} => ( (* We are going to use rep stosl/q to set the memory. That requires the length to be in ecx, the initialiser to be in eax and the address to be edi. *) reserveRegister([regNo addr], GenReg edi); reserveRegister([regNo init], GenReg eax); reserveRegister([regNo size], GenReg ecx) ) | ShiftOperation{shiftAmount=RegisterArgument shiftAmount, ...} => ( (* Shift with by amount specified in a register. This must be ecx. *) reserveRegister([regNo shiftAmount], GenReg ecx); (* reserveRegister only sets a conflict between the args. We need to include the result because that will be allocated first. *) List.app(fn r => addRealConflict (r, GenReg ecx)) destRegNos ) | Division{dividend, quotient, remainder, ...} => ( (* Division is specific as to the registers. The dividend must be eax, quotient is eax and the remainder is edx. The divisor must not be in either edx or eax because we need to sign extend the dividend before the division. *) reserveRegister([regNo quotient, regNo dividend], GenReg eax); (* In addition, we need to register conflicts with the divisor, at least for edx. The remainder is a result and may well not be in the conflict set with the divisor. *) List.app(fn r => addRealConflict (r, GenReg edx)) sourceRegNos; reserveRegister([regNo remainder], GenReg edx) ) | CompareByteVectors{vec1Addr, vec2Addr, length, ...} => ( (* We have to use specific registers. *) reserveRegister([regNo vec1Addr], GenReg esi); reserveRegister([regNo vec2Addr], GenReg edi); reserveRegister([regNo length], GenReg ecx) ) | BlockMove{srcAddr, destAddr, length, ...} => ( (* We have to use specific registers. *) reserveRegister([regNo srcAddr], GenReg esi); reserveRegister([regNo destAddr], GenReg edi); reserveRegister([regNo length], GenReg ecx) ) | X87FPGetCondition{dest, ...} => (* This can only put the result in rax. *) reserveRegister([regNo dest], GenReg eax) | RaiseExceptionPacket{ packetReg } => (* This wasn't needed previously because we always pushed the registers across an exception. *) reserveRegister([regNo packetReg], GenReg eax) | BeginHandler { packetReg, ...} => reserveRegister([regNo packetReg], GenReg eax) | FunctionCall { dest, regArgs, ...} => (* This is only needed if we are saving the registers rather than marking them as "must push". *) ( reserveRegister([regNo dest], GenReg eax); (* The argument registers also conflict. In order to execute this call we need to load the arguments into specific registers so we can't use them for values that we want after the call. We use regNo dest here because that will conflict with everything immediately afterwards. *) List.app(fn (_, r) => reserveRegister([regNo dest], r)) regArgs ) | _ => () in () end (* Process the block. *) fun conflictsForBlock(ExtendedBasicBlock{block, passThrough, exports, ...}) = let (* We need to establish conflicts between all the registers active at the end of the block since they may not be established elsewhere. This isn't necessary for an unconditional branch since the same registers will be included in the block that is the target of the branch, possibly along with others. However if this is a conditional or indexed branch we may have different sets at each of the targets and we have to ensure that all the registers differ. *) val united = union(exports, passThrough) val () = addConflictsTo(setToList united, united) val () = List.app (conflictsForInstr passThrough) block in () end val () = Vector.app conflictsForBlock blocks val conflictState: conflictState vector = Vector.tabulate(maxPRegs, fn i => { conflicts = Array.sub(regConflicts, i), realConflicts = Array.sub(regRealConflicts, i) } ) in conflictState end structure Sharing = struct type x86ICode = x86ICode and reg = reg and preg = preg and intSet = intSet and extendedBasicBlock = extendedBasicBlock end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86FOREIGNCALL.sml0000644000175000017500000005774013204034553023272 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86FOREIGNCALL( structure X86CODE: X86CODESIG structure X86OPTIMISE: sig type operation type code type operations = operation list type address = Address.address (* Optimise and code-generate. *) val generateCode: {code: code, ops: operations, labelCount: int} -> address structure Sharing: sig type operation = operation type code = code end end structure DEBUG: DEBUGSIG sharing X86CODE.Sharing = X86OPTIMISE.Sharing ): FOREIGNCALLSIG = struct open X86CODE open Address exception InternalError = Misc.InternalError val pushR = PushToStack o RegisterArg fun moveRR{source, output} = MoveToRegister{source=RegisterArg source, output=output} fun loadMemory(reg, base, offset) = MoveToRegister{source=MemoryArg{base=base, offset=offset, index=NoIndex}, output=reg} and storeMemory(reg, base, offset) = StoreRegToMemory{toStore=reg, address={base=base, offset=offset, index=NoIndex}} fun createProfileObject _ (*functionName*) = let (* The profile object is a single mutable with the F_bytes bit set. *) open Address val profileObject = RunCall.allocateByteMemory(0w1, Word.fromLargeWord(Word8.toLargeWord(Word8.orb(F_mutable, F_bytes)))) fun clear 0w0 = () | clear i = (assignByte(profileObject, i-0w1, 0w0); clear (i-0w1)) val () = clear(Word.fromInt wordSize) in toMachineWord profileObject end val makeEntryPoint: string -> machineWord = RunCall.rtsCallFull1 "PolyCreateEntryPointObject" datatype abi = X86_32 | X64Win | X64Unix local (* Get the ABI. On 64-bit Windows and Unix use different calling conventions. *) val getABICall: unit -> int = RunCall.rtsCallFast0 "PolyGetABI" in fun getABI() = case getABICall() of 0 => X86_32 | 1 => X64Unix | 2 => X64Win | n => raise InternalError ("Unknown ABI type " ^ Int.toString n) end val noException = 1 (* Full RTS call version. An extra argument is passed that contains the thread ID. This allows the taskData object to be found which is needed if the code allocates any ML memory or raises an exception. It also saves the stack and heap pointers in case of a GC. *) fun rtsCallFull (functionName, nArgs (* Not counting the thread ID *), debugSwitches) = let val entryPointAddr = makeEntryPoint functionName (* Get the ABI. On 64-bit Windows and Unix use different calling conventions. *) val abi = getABI() (* Branch to check for exception. *) val exLabel = Label{labelNo=0} (* There's just one label in this function. *) (* Unix X64. The first six arguments are in rdi, rsi, rdx, rcx, r8, r9. The rest are on the stack. Windows X64. The first four arguments are in rcx, rdx, r8 and r9. The rest are on the stack. The caller must ensure the stack is aligned on 16-byte boundary and must allocate 32-byte save area for the register args. rbx, rbp, rdi, rsi, rsp, r12-r15 are saved by the called function. X86/32. Arguments are pushed to the stack. ebx, edi, esi, ebp and esp are saved by the called function. We use esi to hold the argument data pointer and edi to save the ML stack pointer Our ML conventions use eax, ebx for the first two arguments in X86/32 and rax, ebx, r8, r9, r10 for the first five arguments in X86/64. *) (* The ML stack pointer needs to be loaded into a register that will be saved by the callee. The entry point doesn't need to be but must be a register that isn't used for an argument. *) (* We have to save the stack pointer to the argument structure but we still need a register if we have args on the stack. *) val (entryPtrReg, saveMLStackPtrReg) = if isX64 then (r11, r13) else (ecx, edi) val stackSpace = case abi of X64Unix => memRegSize | X64Win => memRegSize + 32 (* Requires 32-byte save area. *) | X86_32 => let (* GCC likes to keep the stack on a 16-byte alignment. *) val argSpace = (nArgs+1)*4 val align = argSpace mod 16 in (* Add sufficient space so that esp will be 16-byte aligned *) if align = 0 then memRegSize else memRegSize + 16 - align end val code = [ MoveToRegister{source=AddressConstArg entryPointAddr, output=entryPtrReg}, (* Load the entry point ref. *) loadMemory(entryPtrReg, entryPtrReg, 0)(* Load its value. *) ] @ ( (* Save heap ptr. This is in r15 in X86/64 *) if isX64 then [storeMemory(r15, ebp, memRegLocalMPointer)] (* Save heap ptr *) else [] ) @ [ moveRR{source=esp, output=saveMLStackPtrReg}, (* Save this in case it is needed for arguments. *) (* Have to save the stack pointer to the arg structure in case we need to scan the stack for a GC. *) storeMemory(esp, ebp, memRegStackPtr), (* Save ML stack and switch to C stack. *) loadMemory(esp, ebp, memRegCStackPtr), (*moveRR{source=ebp, output=esp},*) (* Load the saved C stack pointer. *) (* Set the stack pointer past the data on the stack. For Windows/64 add in a 32 byte save area *) ArithToGenReg{opc=SUB, output=esp, source=NonAddressConstArg(LargeInt.fromInt stackSpace)} ] @ ( case (abi, nArgs) of (* Set the argument registers. *) (X64Unix, 0) => [ loadMemory(edi, ebp, memRegThreadSelf) ] | (X64Unix, 1) => [ loadMemory(edi, ebp, memRegThreadSelf), moveRR{source=eax, output=esi} ] | (X64Unix, 2) => [ loadMemory(edi, ebp, memRegThreadSelf), moveRR{source=eax, output=esi}, moveRR{source=ebx, output=edx} ] | (X64Unix, 3) => [ loadMemory(edi, ebp, memRegThreadSelf), moveRR{source=eax, output=esi}, moveRR{source=ebx, output=edx}, moveRR{source=r8, output=ecx} ] | (X64Win, 0) => [ loadMemory(ecx, ebp, memRegThreadSelf) ] | (X64Win, 1) => [ loadMemory(ecx, ebp, memRegThreadSelf), moveRR{source=eax, output=edx} ] | (X64Win, 2) => [ loadMemory(ecx, ebp, memRegThreadSelf), moveRR{source=eax, output=edx}, moveRR{source=ebx, output=r8} ] | (X64Win, 3) => [ loadMemory(ecx, ebp, memRegThreadSelf), moveRR{source=eax, output=edx}, moveRR{source=r8, output=r9}, moveRR{source=ebx, output=r8} ] | (X86_32, 0) => [ PushToStack(MemoryArg{base=ebp, offset=memRegThreadSelf, index=NoIndex}) ] | (X86_32, 1) => [ pushR eax, PushToStack(MemoryArg{base=ebp, offset=memRegThreadSelf, index=NoIndex}) ] | (X86_32, 2) => [ pushR ebx, pushR eax, PushToStack(MemoryArg{base=ebp, offset=memRegThreadSelf, index=NoIndex}) ] | (X86_32, 3) => [ (* We need to move an argument from the ML stack. *) PushToStack(MemoryArg{base=saveMLStackPtrReg, offset=4, index=NoIndex}), pushR ebx, pushR eax, PushToStack(MemoryArg{base=ebp, offset=memRegThreadSelf, index=NoIndex}) ] | _ => raise InternalError "rtsCall: Abi/argument count not implemented" ) @ [ CallFunction(DirectReg entryPtrReg), (* Call the function *) moveRR{source=saveMLStackPtrReg, output=esp} (* Restore the ML stack pointer *) ] @ ( if isX64 then [loadMemory(r15, ebp, memRegLocalMPointer) ] (* Copy back the heap ptr *) else [] ) @ [ ArithMemConst{opc=CMP, offset=memRegExceptionPacket, base=ebp, source=noException}, ConditionalBranch{test=JNE, predict=PredictNotTaken, label=exLabel}, (* Remove any arguments that have been passed on the stack. *) ReturnFromFunction(Int.max(case abi of X86_32 => nArgs-2 | _ => nArgs-5, 0)), JumpLabel exLabel, (* else raise the exception *) loadMemory(eax, ebp, memRegExceptionPacket), RaiseException ] val profileObject = createProfileObject functionName val newCode = codeCreate (functionName, profileObject, debugSwitches) val createdCode = X86OPTIMISE.generateCode{code=newCode, labelCount=1(*One label.*), ops=code} (* Have to create a closure for this *) open Address val closure = allocWordData(0w1, Word8.orb (F_mutable, F_words), toMachineWord 0w0) in assignWord(closure, 0w0, toMachineWord createdCode); lock closure; closure end (* This is a quicker version but can only be used if the RTS entry does not allocated ML memory, raise an exception or need to suspend the thread. *) fun rtsCallFast (functionName, nArgs, debugSwitches) = let val entryPointAddr = makeEntryPoint functionName (* Get the ABI. On 64-bit Windows and Unix use different calling conventions. *) val abi = getABI() val (entryPtrReg, saveMLStackPtrReg) = if isX64 then (r11, r13) else (ecx, edi) val stackSpace = case abi of X64Unix => memRegSize | X64Win => memRegSize + 32 (* Requires 32-byte save area. *) | X86_32 => let (* GCC likes to keep the stack on a 16-byte alignment. *) val argSpace = nArgs*4 val align = argSpace mod 16 in (* Add sufficient space so that esp will be 16-byte aligned *) if align = 0 then memRegSize else memRegSize + 16 - align end val code = [ MoveToRegister{source=AddressConstArg entryPointAddr, output=entryPtrReg}, (* Load the entry point ref. *) loadMemory(entryPtrReg, entryPtrReg, 0),(* Load its value. *) moveRR{source=esp, output=saveMLStackPtrReg}, (* Save ML stack and switch to C stack. *) loadMemory(esp, ebp, memRegCStackPtr), (* Set the stack pointer past the data on the stack. For Windows/64 add in a 32 byte save area *) ArithToGenReg{opc=SUB, output=esp, source=NonAddressConstArg(LargeInt.fromInt stackSpace)} ] @ ( case (abi, nArgs) of (* Set the argument registers. *) (_, 0) => [] | (X64Unix, 1) => [ moveRR{source=eax, output=edi} ] | (X64Unix, 2) => [ moveRR{source=eax, output=edi}, moveRR{source=ebx, output=esi} ] | (X64Unix, 3) => [ moveRR{source=eax, output=edi}, moveRR{source=ebx, output=esi}, moveRR{source=r8, output=edx} ] | (X64Unix, 4) => [ moveRR{source=eax, output=edi}, moveRR{source=ebx, output=esi}, moveRR{source=r8, output=edx}, moveRR{source=r9, output=ecx} ] | (X64Win, 1) => [ moveRR{source=eax, output=ecx} ] | (X64Win, 2) => [ moveRR{source=eax, output=ecx}, moveRR{source=ebx, output=edx} ] | (X64Win, 3) => [ moveRR{source=eax, output=ecx}, moveRR{source=ebx, output=edx} (* Arg3 is already in r8. *) ] | (X64Win, 4) => [ moveRR{source=eax, output=ecx}, moveRR{source=ebx, output=edx} (* Arg3 is already in r8 and arg4 in r9. *) ] | (X86_32, 1) => [ pushR eax ] | (X86_32, 2) => [ pushR ebx, pushR eax ] | (X86_32, 3) => [ (* We need to move an argument from the ML stack. *) loadMemory(edx, saveMLStackPtrReg, 4), pushR edx, pushR ebx, pushR eax ] | (X86_32, 4) => [ (* We need to move an arguments from the ML stack. *) loadMemory(edx, saveMLStackPtrReg, 4), pushR edx, loadMemory(edx, saveMLStackPtrReg, 8), pushR edx, pushR ebx, pushR eax ] | _ => raise InternalError "rtsCall: Abi/argument count not implemented" ) @ [ CallFunction(DirectReg entryPtrReg), (* Call the function *) moveRR{source=saveMLStackPtrReg, output=esp}, (* Restore the ML stack pointer *) (* Remove any arguments that have been passed on the stack. *) ReturnFromFunction(Int.max(case abi of X86_32 => nArgs-2 | _ => nArgs-5, 0)) ] val profileObject = createProfileObject functionName val newCode = codeCreate (functionName, profileObject, debugSwitches) val createdCode = X86OPTIMISE.generateCode{code=newCode, labelCount=0, ops=code} (* Have to create a closure for this *) open Address val closure = allocWordData(0w1, Word8.orb (F_mutable, F_words), toMachineWord 0w0) in assignWord(closure, 0w0, toMachineWord createdCode); lock closure; closure end (* RTS call with one double-precision floating point argument and a floating point result. First version. This will probably be merged into the above code in due course. Currently ML always uses boxed values for floats. *) fun rtsCallFastFloattoFloat (functionName, debugSwitches) = let val entryPointAddr = makeEntryPoint functionName (* Get the ABI. On 64-bit Windows and Unix use different calling conventions. *) val abi = getABI() val (entryPtrReg, saveMLStackPtrReg) = if isX64 then (r11, r13) else (ecx, edi) val stackSpace = case abi of X64Unix => memRegSize | X64Win => memRegSize + 32 (* Requires 32-byte save area. *) | X86_32 => let (* GCC likes to keep the stack on a 16-byte alignment. *) val argSpace = 8 (*nArgs*4*) (* One "double" value. *) val align = argSpace mod 16 in (* Add sufficient space so that esp will be 16-byte aligned *) if align = 0 then memRegSize else memRegSize + 16 - align end (* Constants for a box for a float *) val fpBoxSize = 8 div wordSize val fpBoxLengthWord32 = IntInf.orb(IntInf.fromInt fpBoxSize, IntInf.<<(Word8.toLargeInt F_bytes, 0w24)) val code = [ MoveToRegister{source=AddressConstArg entryPointAddr, output=entryPtrReg}, (* Load the entry point ref. *) loadMemory(entryPtrReg, entryPtrReg, 0),(* Load its value. *) moveRR{source=esp, output=saveMLStackPtrReg}, (* Save ML stack and switch to C stack. *) loadMemory(esp, ebp, memRegCStackPtr), (* Set the stack pointer past the data on the stack. For Windows/64 add in a 32 byte save area *) ArithToGenReg{opc=SUB, output=esp, source=NonAddressConstArg(LargeInt.fromInt stackSpace)} ] @ ( case abi of (* X64 on both Windows and Unix take the first arg in xmm0. We need to unbox the value pointed at by rax. *) X64Unix => [ XMMArith { opc= SSE2Move, source=MemoryArg{base=eax, offset=0, index=NoIndex}, output=xmm0 } ] | X64Win => [ XMMArith { opc= SSE2Move, source=MemoryArg{base=eax, offset=0, index=NoIndex}, output=xmm0 } ] | X86_32 => (* eax contains the address of the value. This must be unboxed onto the stack. *) [ FPLoadFromMemory{address={base=eax, offset=0, index=NoIndex}, precision=DoublePrecision}, ArithToGenReg{ opc=SUB, output=esp, source=NonAddressConstArg 8}, FPStoreToMemory{ address={base=esp, offset=0, index=NoIndex}, precision=DoublePrecision, andPop=true } ] ) @ [ CallFunction(DirectReg entryPtrReg), (* Call the function *) moveRR{source=saveMLStackPtrReg, output=esp} (* Restore the ML stack pointer *) ] @ ( (* Put the floating point result into a box. *) case abi of X86_32 => [ AllocStore{size=fpBoxSize, output=eax, saveRegs=[]}, StoreConstToMemory{toStore=fpBoxLengthWord32, address={offset= ~wordSize, base=eax, index=NoIndex}}, FPStoreToMemory{ address={base=eax, offset=0, index=NoIndex}, precision=DoublePrecision, andPop=true }, StoreInitialised ] | _ => (* X64 The result is in xmm0 *) [ AllocStore{size=fpBoxSize, output=eax, saveRegs=[]}, StoreConstToMemory{toStore=LargeInt.fromInt fpBoxSize, address={offset= ~wordSize, base=eax, index=NoIndex}}, StoreNonWordConst{size=Size8Bit, toStore=Word8.toLargeInt F_bytes, address={offset= ~1, base=eax, index=NoIndex}}, XMMStoreToMemory { address={base=eax, offset=0, index=NoIndex}, precision=DoublePrecision, toStore=xmm0 }, StoreInitialised ] ) @ [ (* Remove any arguments that have been passed on the stack. *) ReturnFromFunction 0 ] val profileObject = createProfileObject functionName val newCode = codeCreate (functionName, profileObject, debugSwitches) val createdCode = X86OPTIMISE.generateCode{code=newCode, labelCount=0, ops=code} (* Have to create a closure for this *) open Address val closure = allocWordData(0w1, Word8.orb (F_mutable, F_words), toMachineWord 0w0) in assignWord(closure, 0w0, toMachineWord createdCode); lock closure; closure end (* RTS call with one general (i.e. ML word) argument and a floating point result. This is used only to convert arbitrary precision values to floats. In due course this will be merged into the other functions. *) fun rtsCallFastGeneraltoFloat (functionName, debugSwitches) = let val entryPointAddr = makeEntryPoint functionName (* Get the ABI. On 64-bit Windows and Unix use different calling conventions. *) val abi = getABI() val (entryPtrReg, saveMLStackPtrReg) = if isX64 then (r11, r13) else (ecx, edi) val stackSpace = case abi of X64Unix => memRegSize | X64Win => memRegSize + 32 (* Requires 32-byte save area. *) | X86_32 => let (* GCC likes to keep the stack on a 16-byte alignment. *) val argSpace = 8 (*nArgs*4*) (* One "double" value. *) val align = argSpace mod 16 in (* Add sufficient space so that esp will be 16-byte aligned *) if align = 0 then memRegSize else memRegSize + 16 - align end (* Constants for a box for a float *) val fpBoxSize = 8 div wordSize val fpBoxLengthWord32 = IntInf.orb(IntInf.fromInt fpBoxSize, IntInf.<<(Word8.toLargeInt F_bytes, 0w24)) val code = [ MoveToRegister{source=AddressConstArg entryPointAddr, output=entryPtrReg}, (* Load the entry point ref. *) loadMemory(entryPtrReg, entryPtrReg, 0),(* Load its value. *) moveRR{source=esp, output=saveMLStackPtrReg}, (* Save ML stack and switch to C stack. *) loadMemory(esp, ebp, memRegCStackPtr), (* Set the stack pointer past the data on the stack. For Windows/64 add in a 32 byte save area *) ArithToGenReg{opc=SUB, output=esp, source=NonAddressConstArg(LargeInt.fromInt stackSpace)} ] @ ( case abi of X64Unix => [ moveRR{source=eax, output=edi} ] | X64Win => [ moveRR{source=eax, output=ecx} ] | X86_32 => [ pushR eax ] ) @ [ CallFunction(DirectReg entryPtrReg), (* Call the function *) moveRR{source=saveMLStackPtrReg, output=esp} (* Restore the ML stack pointer *) ] @ ( (* Put the floating point result into a box. *) case abi of X86_32 => [ AllocStore{size=fpBoxSize, output=eax, saveRegs=[]}, StoreConstToMemory{toStore=fpBoxLengthWord32, address={offset= ~wordSize, base=eax, index=NoIndex}}, FPStoreToMemory{ address={base=eax, offset=0, index=NoIndex}, precision=DoublePrecision, andPop=true }, StoreInitialised ] | _ => (* X64 The result is in xmm0 *) [ AllocStore{size=fpBoxSize, output=eax, saveRegs=[]}, StoreConstToMemory{toStore=LargeInt.fromInt fpBoxSize, address={offset= ~wordSize, base=eax, index=NoIndex}}, StoreNonWordConst{size=Size8Bit, toStore=Word8.toLargeInt F_bytes, address={offset= ~1, base=eax, index=NoIndex}}, XMMStoreToMemory { address={base=eax, offset=0, index=NoIndex}, precision=DoublePrecision, toStore=xmm0 }, StoreInitialised ] ) @ [ (* Remove any arguments that have been passed on the stack. *) ReturnFromFunction 0 ] val profileObject = createProfileObject functionName val newCode = codeCreate (functionName, profileObject, debugSwitches) val createdCode = X86OPTIMISE.generateCode{code=newCode, labelCount=0, ops=code} (* Have to create a closure for this *) open Address val closure = allocWordData(0w1, Word8.orb (F_mutable, F_words), toMachineWord 0w0) in assignWord(closure, 0w0, toMachineWord createdCode); lock closure; closure end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ALLOCATEREGISTERSSIG.ML0000644000175000017500000000302213204034553024261 0ustar daviddavid(* Copyright David C. J. Matthews 2017 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86ALLOCATEREGISTERSSIG = sig type intSet and extendedBasicBlock and regProperty and reg type address = Address.address type conflictState = { conflicts: intSet, realConflicts: reg list } datatype allocateResult = AllocateSuccess of reg vector | AllocateFailure of intSet list val allocateRegisters : { blocks: extendedBasicBlock vector, regStates: conflictState vector, regProps: regProperty vector } -> allocateResult structure Sharing: sig type intSet = intSet and extendedBasicBlock = extendedBasicBlock and regProperty = regProperty and reg = reg and allocateResult = allocateResult end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/IntSet.sml0000644000175000017500000001037113204034553022432 0ustar daviddavid(* Copyright (c) 2017 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Set of integers implemented as an ordered list. This is used for active register sets. *) structure IntSet: INTSETSIG = struct datatype intSet = IntSet of int list val emptySet = IntSet [] fun setToList(IntSet s) = s local fun addItem(i, []) = [i] | addItem(i, hd::tl) = if i = hd then hd :: tl else if i < hd then i :: hd :: tl else hd :: addItem(i, tl) in (* Add an item to the list. It seems to be better to add in order rather than reverse order. *) fun addToList(items, IntSet toSet) = IntSet(List.foldl(fn (d, l) => addItem(d, l)) toSet items) fun listToSet items = addToList(items, IntSet []) end local fun removeItem(_, []) = [] | removeItem(item, hd :: tl) = if item = hd then tl else hd :: removeItem(item, tl) in fun removeFromSet(item, IntSet fromSet) = IntSet(removeItem(item, fromSet)) end local fun minusLists(l, []) = l | minusLists([], _) = [] | minusLists(listA as a::tlA, listB as b::tlB) = if a = b then minusLists(tlA, tlB) else if a < b then a :: minusLists(tlA, listB) else minusLists(listA, tlB) in fun minus(IntSet a, IntSet b) = IntSet(minusLists(a, b)) end local (* If the lists are already sorted we can merge them. This is an allocation hot-spot. Avoid recreating the list if possible. *) fun mergeLists(listA as a::tlA, listB as b::tlB) = if a = b then let val (tail, tailEq) = mergeLists(tlA, tlB) in if PolyML.pointerEq(tlA, tail) then (listA, tailEq) else if PolyML.pointerEq(tlB, tail) then (listB, tailEq) else (a :: tail, false) end else if a < b then let val (tail, tailEq) = mergeLists(tlA, listB) in if PolyML.pointerEq(tail, tlA) orelse tailEq then (listA, false) else (a :: tail, false) end else let val (tail, tailEq) = mergeLists(listA, tlB) in if PolyML.pointerEq(tail, tlB) orelse tailEq then (listB, false) else (b :: tail, false) end | mergeLists([], []) = ([], true) | mergeLists([], b) = (b, false) | mergeLists(a, []) = (a, false) in fun union(IntSet setA, IntSet setB) = let val (result, _) = mergeLists(setA, setB) in IntSet result end end fun partition partFun = let fun part [] = ([], []) | part (l as (hd::tl)) = let val (t, f) = part tl in (* Avoid rebuilding the list if the whole tail is in the partition and so is this. *) if partFun hd then (case f of [] => (l, []) | _ => (hd :: t, f)) else (case t of [] => (t, l) | _ => (t, hd :: f)) end in fn IntSet r => let val (t, f) = part r in (IntSet t, IntSet f) end end fun cardinality(IntSet l) = List.length l fun filterSet f (IntSet l) = IntSet(List.filter f l) fun member(i, IntSet l) = List.exists(fn n => n=i) l end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/ICodeSig.ML0000644000175000017500000004046213204034553022373 0ustar daviddavid(* Signature for the high-level X86 code Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature ICodeSig = sig type machineWord = Address.machineWord type address = Address.address (* Registers. *) datatype genReg = GeneralReg of Word8.word * bool and fpReg = FloatingPtReg of Word8.word and xmmReg = SSE2Reg of Word8.word datatype reg = GenReg of genReg | FPReg of fpReg | XMMReg of xmmReg val regRepr: reg -> string val nReg: reg -> int val isX64: bool and is32bit: LargeInt.int -> bool (* Should we use SSE2 or X87 floating point? *) datatype fpMode = FPModeSSE2 | FPModeX87 val fpMode: fpMode val eax: genReg and ebx: genReg and ecx: genReg and edx: genReg and edi: genReg and esi: genReg and esp: genReg and ebp: genReg and r8: genReg and r9: genReg and r10: genReg and r11: genReg and r12: genReg and r13: genReg and r14: genReg and r15: genReg and fp0: fpReg and fp1: fpReg and fp2: fpReg and fp3: fpReg and fp4: fpReg and fp5: fpReg and fp6: fpReg and fp7: fpReg and xmm0:xmmReg and xmm1:xmmReg and xmm2:xmmReg and xmm3:xmmReg and xmm4:xmmReg and xmm5:xmmReg and xmm6:xmmReg datatype branchOps = JO | JNO | JE | JNE | JL | JGE | JLE | JG | JB | JNB | JNA | JA | JP | JNP and arithOp = ADD | OR (*|ADC | SBB*) | AND | SUB | XOR | CMP and shiftType = SHL | SHR | SAR datatype boxKind = BoxLargeWord | BoxSSE2 | BoxX87 and fpOps = FADD | FMUL | FCOM | FCOMP | FSUB | FSUBR | FDIV | FDIVR and fpUnaryOps = FABS | FCHS | FLD1 | FLDZ and sse2Operations = SSE2Move | SSE2Comp | SSE2Add | SSE2Sub | SSE2Mul | SSE2Div | SSE2Xor | SSE2And | SSE2MoveSingle | SSE2DoubleToFloat val memRegThreadSelf: int (* Copied from X86CodeSig *) datatype callKinds = Recursive | ConstantCode of machineWord | FullCall | DirectReg of genReg datatype preg = PReg of int (* A pseudo-register - an abstract register. *) (* A location on the stack. May be more than word if this is a container or a handler entry. *) datatype stackLocn = StackLoc of {size: int, rno: int } (* This combines pregKind and stackLocn. *) datatype regProperty = RegPropGeneral (* A general register. *) | RegPropUntagged (* An untagged general register. *) | RegPropStack of int (* A stack location or container. *) | RegPropCacheTagged | RegPropCacheUntagged datatype argument = RegisterArgument of preg | AddressConstant of machineWord (* A constant that is an address. *) | IntegerConstant of LargeInt.int (* A non-address constant. Will usually be shifted and tagged. *) | MemoryLocation of { base: preg, offset: int, index: memoryIndex, cache: preg option } (* A memory location. *) (* Offset on the stack. The container is the stack location identifier, the field is an offset in a container. cache is an optional cache register. *) | StackLocation of { wordOffset: int, container: stackLocn, field: int, cache: preg option } (* Address of a container. *) | ContainerAddr of { container: stackLocn, stackOffset: int } and memoryIndex = NoMemIndex | MemIndex1 of preg | MemIndex2 of preg | MemIndex4 of preg | MemIndex8 of preg (* Kinds of moves. MoveWord - Move a whole word - 64-bits in 64-bit mode, 32-bits in 32-bit mode. MoveByte - When loading, load a byte and zero extend. Move16Bit - Used for C-memory loads and stores. Zero extends on load. Move32Bit - Used for C-memory loads and stores in 64-bit mode. MoveFloat - Load and store a single-precision value MoveDouble - Load and store a double-precision value. *) datatype moveKind = MoveWord | MoveByte | Move16Bit | Move32Bit | MoveFloat | MoveDouble (* The reference to a condition code. *) datatype ccRef = CcRef of int datatype x86ICode = (* Move a value into a register. *) LoadArgument of { source: argument, dest: preg, kind: moveKind } (* Store a value into memory. The source will usually be a register but could be a constant depending on the value. If isMutable is true we're assigning to a ref and we need to flush the memory cache. *) | StoreArgument of { source: argument, base: preg, offset: int, index: memoryIndex, kind: moveKind, isMutable: bool } (* Load an entry from the "memory registers". Used just for ThreadSelf. *) | LoadMemReg of { offset: int, dest: preg } (* Start of function. Set the register arguments. stackArgs is the list of stack arguments. The last entry is the return address. *) | BeginFunction of { regArgs: (preg * reg) list, stackArgs: stackLocn list } (* Call a function. If the code address is a constant it is passed here. Otherwise the address is obtained by indirecting through rdx which has been loaded as one of the argument registers. The result is stored in the destination register. *) | FunctionCall of { callKind: callKinds, regArgs: (argument * reg) list, stackArgs: argument list, dest: preg, saveRegs: preg list} (* Jump to a tail-recursive function. This is similar to FunctionCall but complicated for stack arguments because the stack and the return address need to be overwritten. stackAdjust is the number of words to remove (positive) or add (negative) to the stack before the call. currStackSize contains the number of items currently on the stack. *) | TailRecursiveCall of { callKind: callKinds, regArgs: (argument * reg) list, stackArgs: {src: argument, stack: int} list, stackAdjust: int, currStackSize: int, workReg: preg } (* Allocate a fixed sized piece of memory. The size is the number of words required. This sets the length word including the flags bits. saveRegs is the list of registers that need to be saved if we need to do a garbage collection. *) | AllocateMemoryOperation of { size: int, flags: Word8.word, dest: preg, saveRegs: preg list } (* Allocate a piece of memory whose size is not known at compile-time. The size argument is the number of words. *) | AllocateMemoryVariable of { size: preg, dest: preg, saveRegs: preg list } (* Initialise a piece of memory. N.B. The size is an untagged value containing the number of words. This uses REP STOSL/Q so addr must be rdi, size must be rcx and init must be rax. *) | InitialiseMem of { size: preg, addr: preg, init: preg } (* Signal that a tuple has been fully initialised. Really a check in the low-level code-generator. *) | InitialisationComplete (* Set up the registers for a jump back to the start of a loop. *) | JumpLoop of { regArgs: (argument * preg) list, stackArgs: (argument * int * stackLocn) list, checkInterrupt: preg list option, workReg: preg option } (* Raise an exception. The packet is always loaded into rax. *) | RaiseExceptionPacket of { packetReg: preg } (* Reserve a contiguous area on the stack to receive a result tuple. *) | ReserveContainer of { size: int, container: stackLocn } (* Indexed case. *) | IndexedCaseOperation of { testReg: preg, workReg: preg } (* Lock a mutable cell by turning off the mutable bit. *) | LockMutable of { addr: preg } (* Compare two word values. The first argument must be a register. *) | WordComparison of { arg1: preg, arg2: argument, ccRef: ccRef } (* Exception handling. - Set up an exception handler. *) | PushExceptionHandler of { workReg: preg } (* End of a handled section. Restore the previous handler. *) | PopExceptionHandler of { workReg: preg } (* Marks the start of a handler. This sets the stack pointer and restores the old handler. Sets the exception packet register. *) | BeginHandler of { packetReg: preg, workReg: preg } (* Return from the function. *) | ReturnResultFromFunction of { resultReg: preg, numStackArgs: int } (* Arithmetic or logical operation. These can set the condition codes. *) | ArithmeticFunction of { oper: arithOp, resultReg: preg, operand1: preg, operand2: argument, ccRef: ccRef } (* Test the tag bit of a word. Sets the Zero bit if the value is an address i.e. untagged. *) | TestTagBit of { arg: argument, ccRef: ccRef } (* Push a value to the stack. Added during translation phase. *) | PushValue of { arg: argument, container: stackLocn } (* Copy a value to a cache register. LoadArgument could be used for this but it may be better to keep it separate. *) | CopyToCache of { source: preg, dest: preg, kind: moveKind } (* Remove items from the stack. Added during translation phase. *) | ResetStackPtr of { numWords: int, preserveCC: bool } (* Store a value into the stack. *) | StoreToStack of { source: argument, container: stackLocn, field: int, stackOffset: int } (* Tag a value by shifting and setting the tag bit. *) | TagValue of { source: preg, dest: preg, isSigned: bool } (* Shift a value to remove the tag bit. The cache is used if this is untagging a value that has previously been tagged. *) | UntagValue of { source: preg, dest: preg, isSigned: bool, cache: preg option } (* This provides the LEA instruction which can be used for various sorts of arithmetic. The base register is optional in this case. *) | LoadEffectiveAddress of { base: preg option, offset: int, index: memoryIndex, dest: preg } (* Shift a word by an amount that can either be a constant or a register. *) | ShiftOperation of { shift: shiftType, resultReg: preg, operand: preg, shiftAmount: argument, ccRef: ccRef } (* Multiplication. We can use signed multiplication for both fixed precision and word (unsigned) multiplication. There are various forms of the instruction including a three-operand version. *) | Multiplication of { resultReg: preg, operand1: preg, operand2: argument, ccRef: ccRef } (* Division. This takes a register pair, always RDX:RAX, divides it by the operand register and puts the quotient in RAX and remainder in RDX. At the preg level we represent all of these by pRegs. The divisor can be either a register or a memory location. *) | Division of { isSigned: bool, dividend: preg, divisor: argument, quotient: preg, remainder: preg } (* Atomic exchange and addition. This is executed with a lock prefix and is used for atomic increment and decrement for mutexes. Before the operation the source contains an increment. After the operation the source contains the old value of the destination and the destination has been updated with its old value added to the increment. The destination is actually the word pointed at by "base". *) | AtomicExchangeAndAdd of { base: preg, source: preg } (* Create a "box" of a single-word "byte" cell and store the source into it. This can be implemented using AllocateMemoryOperation but the idea is to allow the transform layer to recognise when a value is being boxed and then unboxed and remove unnecessary allocation. *) | BoxValue of { boxKind: boxKind, source: preg, dest: preg, saveRegs: preg list } (* Compare two vectors of bytes and set the condition code on the result. In general vec1Addr and vec2Addr will be pointers inside memory cells so have to be untagged registers. *) | CompareByteVectors of { vec1Addr: preg, vec2Addr: preg, length: preg, ccRef: ccRef } (* Move a block of bytes (isByteMove true) or words (isByteMove false). The length is the number of items (bytes or words) to move. *) | BlockMove of { srcAddr: preg, destAddr: preg, length: preg, isByteMove: bool } (* Floating point comparison. *) | X87Compare of { arg1: preg, arg2: argument, ccRef: ccRef } (* Floating point comparison. *) | SSE2Compare of { arg1: preg, arg2: argument, ccRef: ccRef } (* The X87 FP unit does not generate condition codes directly. We have to load the cc into RAX and test it there. *) | X87FPGetCondition of { ccRef: ccRef, dest: preg } (* Binary floating point operations on the X87. *) | X87FPArith of { opc: fpOps, resultReg: preg, arg1: preg, arg2: argument } (* Floating point operations: negate and set sign positive. *) | X87FPUnaryOps of { fpOp: fpUnaryOps, dest: preg, source: preg } (* Load a fixed point value as a floating point value. *) | X87Float of { dest: preg, source: argument } (* Load a fixed point value as a floating point value. *) | SSE2Float of { dest: preg, source: argument } (* Binary floating point operations using SSE2 instructions. *) | SSE2FPArith of { opc: sse2Operations, resultReg: preg, arg1: preg, arg2: argument } (* Destinations at the end of a basic block. *) and controlFlow = (* Unconditional branch to a label - should be a merge point. *) Unconditional of int (* Conditional branch. Jumps to trueJump if the condional is false, falseJump if false. *) | Conditional of { ccRef: ccRef, condition: branchOps, trueJump: int, falseJump: int } (* Exit - the last instruction of the block is a return, raise or tailcall. *) | ExitCode (* Indexed case - this branches to one of a number of labels *) | IndexedBr of int list (* Set up a handler. This doesn't cause an immediate branch but the state at the start of the handler is the state at this point. *) | SetHandler of { handler: int, continue: int } (* Unconditional branch to a handler. If an exception is raised explicitly within the scope of a handler. *) | UnconditionalHandle of int (* Conditional branch to a handler. Occurs if there is a call to a function within the scope of a handler. It may jump to the handler. *) | ConditionalHandle of { handler: int, continue: int } and basicBlock = BasicBlock of { block: x86ICode list, flow: controlFlow } (* Return the successor blocks from a control flow. *) val successorBlocks: controlFlow -> int list val printICodeAbstract: basicBlock vector * (string -> unit) -> unit val indexRegister: memoryIndex -> preg option (* Destinations used in move. *) datatype destinations = RegDest of reg | StackDest of int structure Sharing: sig type genReg = genReg and argument = argument and memoryIndex = memoryIndex and x86ICode = x86ICode and branchOps = branchOps and reg = reg and preg = preg and destinations = destinations and controlFlow = controlFlow and basicBlock = basicBlock and stackLocn = stackLocn and regProperty = regProperty and callKinds = callKinds and arithOp = arithOp and shiftType = shiftType and fpOps = fpOps and fpUnaryOps = fpUnaryOps and sse2Operations = sse2Operations and ccRef = ccRef end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86PushRegisters.ML0000644000175000017500000022205313204034553024060 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86PushRegisters( structure ICODE: ICodeSig structure INTSET: INTSETSIG structure IDENTIFY: X86IDENTIFYREFSSIG sharing ICODE.Sharing = IDENTIFY.Sharing = INTSET ) : X86PUSHREGISTERSIG = struct open ICODE open INTSET open IDENTIFY (* Curried subscript functions *) fun asub a i = Array.sub(a, i) and vsub v i = Vector.sub(v, i) exception InternalError = Misc.InternalError (* Each preg in the input is mapped to either a new preg or the stack. *) datatype pregMapType = Unset | ToPReg of preg | ToStack of int * stackLocn (* The stack contains both entries in the input code and entries added here. It is really used to ensure that the stack at run time is the same size at the start of a block whichever block has jumped to it. *) datatype stackEntry = NewEntry of {pregNo: int} (* pregNo is the original preg that has been pushed here. *) | OriginalEntry of { stackLoc: stackLocn } | HandlerEntry fun addRegisterPushes{code: extendedBasicBlock vector, pushVec: bool vector, pregProps, firstPass} = let val maxPRegs = Vector.length pregProps val numberOfBlocks = Vector.length code (* Output registers and properties. *) val pregCounter = ref 0 val pregPropList = ref [] val pregMap = Array.array(maxPRegs, Unset) (* Cache registers. *) datatype cacheType = CacheStack of { rno: int }(* Original preg or stack loc. *) | CacheMemory of { rno: int, offset: int } (* Base offset *) (* CacheTagged is used if we tag a value to see if we can use the original untagged value somewhere. *) | CacheTagged of { rno: int, isSigned: bool } local (* The number of active cache entries is likely to be small and is at most proportional to the number of instructions in the block. Any function call will clear it. For memory entries we need to know if the value is tagged and what kind of move we're using. Stack entries always will be tagged and MoveWord. *) val cache: {cacheFor: cacheType, cacheReg: preg, isTagged: bool, kind: moveKind } list ref = ref [] fun isStack n {cacheFor=CacheStack{rno}, ...} = rno = n | isStack _ _ = false fun isMemory (r, off) {cacheFor=CacheMemory{rno, offset}, ...} = rno = r andalso offset=off | isMemory _ _ = false fun isTagCache(r, s) {cacheFor=CacheTagged{rno, isSigned}, ...} = rno = r andalso s = isSigned | isTagCache _ _ = false fun findCache f = List.find f (! cache) fun removeCache f = cache := List.filter (not o f) (! cache) in fun clearCache() = cache := [] fun findCachedStack n = Option.map (#cacheReg) (findCache (isStack n)) and findCachedMemory (r, off) = Option.map (fn {cacheReg, isTagged, kind, ...} => (cacheReg, isTagged, kind)) (findCache(isMemory (r, off))) and findCachedTagged (r, s) = Option.map #cacheReg (findCache(isTagCache (r, s))) fun removeStackCache n = removeCache (isStack n) and removeMemoryCache (r, off) = removeCache (isMemory (r, off)) and removeTagCache (r, s) = removeCache (isTagCache (r, s)) fun clearMemoryCache() = cache := List.filter(fn {cacheFor=CacheMemory _,...} => false | _ => true) (!cache) fun setStackCache(n, new) = ( removeStackCache n; cache := {cacheFor=CacheStack{rno=n}, cacheReg=new, isTagged=true, kind=MoveWord} :: ! cache ) and setMemoryCache(r, off, new, isTagged, kind) = ( removeMemoryCache (r, off); cache := {cacheFor=CacheMemory{rno=r, offset=off}, cacheReg=new, isTagged=isTagged, kind=kind} :: ! cache ) and setTagCache(r, s, new) = ( removeTagCache (r, s); cache := {cacheFor=CacheTagged{rno=r, isSigned=s}, cacheReg=new, isTagged=true, kind=MoveWord} :: ! cache ) fun getCache () = ! cache (* Merge the cache states *) fun setCommonCacheState [] = clearCache() | setCommonCacheState [single] = cache := single | setCommonCacheState (many as first :: rest) = let (* Generally we will either be unable to merge and have an empty cache or will have just one or two entries. *) (* Find the shortest. If it's empty we're done. *) fun findShortest(_, [], _) = [] | findShortest(_, shortest, []) = shortest | findShortest(len, shortest, hd::tl) = let val hdLen = length hd in if hdLen < len then findShortest(hdLen, hd, tl) else findShortest(len, shortest, tl) end val shortest = findShortest(length first, first, rest) (* Find the item we're caching for. If it is in a different register we can't use it. *) fun findItem search (hd::tl) = if #cacheFor hd = #cacheFor search then #cacheReg hd = #cacheReg search else findItem search tl | findItem _ [] = false (* It's present if it's in all the sources. *) fun present search = List.all(findItem search) many val filtered = List.foldl (fn (search, l) => if present search then search :: l else l) [] shortest in cache := filtered end end val maxStack = ref 0 (* The stack size we've assumed for the block. Also indicates if a block has already been processed. *) val inputStackSizes = Array.array(numberOfBlocks, NONE: {expectedInput:int, reqCC: bool} option) (* The result of processing a block. *) val blockOutput = Array.array(numberOfBlocks, {code=[], cache=[], stackCount=0}) (* Extra blocks to adjust the stack are added here. *) val extraBlocks: basicBlock list ref = ref [] val blockCounter = ref numberOfBlocks (* Get the blocks that are inputs for each one. *) local val blockRefs = Array.array(numberOfBlocks, []) fun setReferences fromBlock = let val ExtendedBasicBlock{ flow, ...} = vsub code fromBlock val refs = successorBlocks flow fun setRefs toBlock = let val oldRefs = asub blockRefs toBlock in Array.update(blockRefs, toBlock, fromBlock :: oldRefs); if null oldRefs then setReferences toBlock else () end in List.app setRefs refs end val () = setReferences 0 in val blockRefs = blockRefs end (* Recursive scan of the blocks. For each block we produce an input and output state. The input state is the output state of the predecessor i.e. some block that jumps to this, but with any entries removed that are not used in this block. It is then necessary to match the input state, if necessary by adding extra blocks that just do the matching. *) local val haveProcessed = isSome o asub inputStackSizes fun processBlocks toDo = case List.filter (fn (n, _) => not(haveProcessed n)) toDo of [] => () (* Nothing left to do *) | stillToDo as head :: _ => let (* Try to find a block all of whose predecessors have been processed. That increases the chances that we will have cached items. *) fun available(dest, _) = List.all haveProcessed (Array.sub(blockRefs, dest)) val (blockNo, lastOutputState) = case List.find available stillToDo of SOME c => c | NONE => head (* This is the first time we've come to this block. *) val ExtendedBasicBlock{ block, flow, imports, passThrough, inCCState, initialStacks, ...} = vsub code blockNo val requiresCC = isSome inCCState (* Remove any items from the input state that are no longer needed for this block. They could be local to the previous block or needed by a different successor. *) fun removeItems(result as {stack=[], stackCount=0}) = result | removeItems{stack=[], ...} = raise InternalError "removeItems - stack size" | removeItems (thisStack as {stack=NewEntry{pregNo} :: rest, stackCount}) = if member(pregNo, imports) orelse member(pregNo, passThrough) then thisStack else removeItems{stack=rest, stackCount=stackCount-1} | removeItems (thisStack as {stack=OriginalEntry{stackLoc=StackLoc{rno, size}, ...} :: rest, stackCount}) = if member(rno, initialStacks) then thisStack else removeItems{stack=rest, stackCount=stackCount-size} | removeItems result = result val {stackCount=newSp, stack=newStack} = removeItems lastOutputState (* References to hold the current stack count (number of words on the stack) and the list of items on the stack. The list is not used directly to map stack addresses. Instead it is used to match the stack at the beginning and end of a block. *) val stackCount = ref newSp val stack = ref newStack (* Items from the stack that have been marked as deleted but not yet removed. We only remove items from the top of the stack to avoid quadratic behaviour with a very deep stack. *) val deletedItems = ref [] (* Save the stack size in case we come by a different route. *) val () = Array.update(inputStackSizes, blockNo, SOME{expectedInput=newSp, reqCC=requiresCC}) fun pushItemToStack item = let val size = case item of NewEntry _ => 1 | OriginalEntry{stackLoc=StackLoc{size, ...}, ...} => size | HandlerEntry => 2 in stackCount := ! stackCount+size; stack := item :: ! stack; maxStack := Int.max(!maxStack, !stackCount) end fun newPReg propKind = let val regNo = !pregCounter before pregCounter := !pregCounter + 1 val () = pregPropList := propKind :: !pregPropList in PReg regNo end and newStackLoc size = let val regNo = !pregCounter before pregCounter := !pregCounter + 1 val () = pregPropList := RegPropStack size :: !pregPropList in StackLoc{size=size, rno=regNo} end (* Map a source register. This always loads the argument. *) fun mapSrcRegEx(PReg n) = case Array.sub(pregMap, n) of Unset => raise InternalError "mapSrcReg - unset" | ToPReg preg => (preg, [], []) | ToStack(stackLoc, container as StackLoc{size, ...}) => let (* Make a new untagged register. That will prevent us pushing it if we have to spill registers. *) val newReg = newPReg RegPropUntagged val sourceCache = findCachedStack n val stackSource = StackLocation{wordOffset= !stackCount-stackLoc-size, container=container, field=0, cache=sourceCache} (* Because this is in a register we can copy it to a cache register. *) val newCacheReg = newPReg RegPropCacheTagged val () = setStackCache(n, newCacheReg) in (newReg, [LoadArgument{source=stackSource, dest=newReg, kind=MoveWord}], [CopyToCache{source=newReg, dest=newCacheReg, kind=MoveWord}]) end fun mapSrcReg srcReg = let val (newReg, codePre, codePost) = mapSrcRegEx srcReg in (newReg, codePost @ codePre) end fun mapDestReg(PReg n) = let val currentLocation = Array.sub(pregMap, n) val kind = Vector.sub(pregProps, n) in if Vector.sub(pushVec, n) then let (* This should not have been seen before. *) val _ = case currentLocation of Unset => () | _ => raise InternalError "mapDestReg - already set" val newReg = newPReg kind val newContainer = newStackLoc 1 val () = Array.update(pregMap, n, ToStack (!stackCount, newContainer)) val () = pushItemToStack(NewEntry{pregNo=n}) in (newReg, [PushValue{arg=RegisterArgument newReg, container=newContainer}]) end else let (* See if we already have a number for it. We may encounter the same preg as a destination when returning the result from a conditional in which case we have to use the same number. We shouldn't have pushed it. *) val newReg = case currentLocation of Unset => let val newReg = newPReg kind val () = Array.update(pregMap, n, ToPReg newReg) in newReg end | ToPReg preg => preg | ToStack _ => raise InternalError "mapDestReg - already on stack" in (newReg, []) end end (* A work register must be a normal register. *) fun mapWorkReg(PReg n) = let val currentLocation = Array.sub(pregMap, n) val _ = Vector.sub(pushVec, n) andalso raise InternalError "mapWorkReg - MustPush" in case currentLocation of Unset => let val kind = Vector.sub(pregProps, n) val newReg = newPReg kind val () = Array.update(pregMap, n, ToPReg newReg) in newReg end | ToPReg preg => preg | ToStack _ => raise InternalError "mapWorkReg - on stack" end fun mapIndexEx(NoMemIndex) = (NoMemIndex, [], []) | mapIndexEx(MemIndex1 r) = let val (sreg, c1, c2) = mapSrcRegEx r in (MemIndex1 sreg, c1, c2) end | mapIndexEx(MemIndex2 r) = let val (sreg, c1, c2) = mapSrcRegEx r in (MemIndex2 sreg, c1, c2) end | mapIndexEx(MemIndex4 r) = let val (sreg, c1, c2) = mapSrcRegEx r in (MemIndex4 sreg, c1, c2) end | mapIndexEx(MemIndex8 r) = let val (sreg, c1, c2) = mapSrcRegEx r in (MemIndex8 sreg, c1, c2) end fun mapIndex index = let val (newIndex, codePre, codePost) = mapIndexEx index in (newIndex, codePost @ codePre) end (* Adjust a stack offset from the old state to the new state. *) fun mapContainerAndStack(StackLoc{rno, size}, field) = let val (newStackAddr, newContainer) = case Array.sub(pregMap, rno) of Unset => raise InternalError "mapContainer - unset" | ToPReg _ => raise InternalError "mapContainer - ToPReg" | ToStack stackContainer => stackContainer val newOffset = !stackCount-(newStackAddr+size) + field in (newOffset, newContainer) end (* Add an entry for an existing stack entry. *) fun mapDestContainer(StackLoc{rno, size}, locn) = ( case Array.sub(pregMap, rno) of Unset => let val newContainer = newStackLoc size val () = Array.update(pregMap, rno, ToStack(locn, newContainer)) in newContainer end | _ => raise InternalError "mapDestContainer: already set" ) fun mapSourceEx(RegisterArgument(PReg r)) = ( case Array.sub(pregMap, r) of Unset => raise InternalError "mapSource - unset" | ToPReg preg => (RegisterArgument preg, [], []) | ToStack(stackLoc, container as StackLoc{size, ...}) => let val sourceCache = findCachedStack r val stackLoc = StackLocation{wordOffset= !stackCount-stackLoc-size, container=container, field=0, cache=sourceCache} (* If this is cached we need to make a new cache register and copy it there. *) val cacheCode = case sourceCache of NONE => [] | SOME cacheR => let val newCacheReg = newPReg RegPropCacheTagged val () = setStackCache(r, newCacheReg) in [CopyToCache{source=cacheR, dest=newCacheReg, kind=MoveWord}] end in (stackLoc, [], cacheCode) end ) | mapSourceEx(a as AddressConstant _) = (a, [], []) | mapSourceEx(i as IntegerConstant _) = (i, [], []) | mapSourceEx(MemoryLocation{base as PReg breg, offset, index=NoMemIndex, cache, ...}) = let val (baseReg, baseCodePre, baseCodePost) = mapSrcRegEx base (* We can cache this if it is the first pass or if we have previously cached it and we haven't marked it as pushed. *) val newCache = case cache of NONE => if firstPass then findCachedMemory(breg, offset) else NONE | SOME (PReg c) => if Vector.sub(pushVec, c) then NONE (* We had marked this as to be pushed - we can't use a cache here. *) else findCachedMemory(breg, offset) val memLoc = MemoryLocation{base=baseReg, offset=offset, index=NoMemIndex, cache=Option.map #1 newCache} val cacheCode = case newCache of NONE => (removeMemoryCache(breg, offset); []) | SOME (oldCacheReg, isTagged, kind) => let (* Set the cache kind. If this is the first pass we will have a general or untagged register. *) val cacheKind = if isTagged then RegPropCacheTagged else RegPropCacheUntagged val newCacheReg = newPReg cacheKind val () = setMemoryCache(breg, offset, newCacheReg, isTagged, kind) in [CopyToCache{source=oldCacheReg, dest=newCacheReg, kind=kind}] end in (memLoc, baseCodePre, baseCodePost @ cacheCode) end | mapSourceEx(MemoryLocation{base, offset, index, ...}) = let val (baseReg, baseCodePre, baseCodePost) = mapSrcRegEx base val (indexValue, indexCodePre, indexCodePost) = mapIndexEx index in (MemoryLocation{base=baseReg, offset=offset, index=indexValue, cache=NONE}, baseCodePre @ indexCodePre, baseCodePost @ indexCodePost) end | mapSourceEx(StackLocation{container as StackLoc{rno, ...}, field, cache, ...}) = let val (newOffset, newContainer) = mapContainerAndStack(container, field) (* Was the item previously cached? If it wasn't or the cache reg has been marked as "must push" we can't use a cache. *) val newCache = case cache of NONE => NONE | SOME (PReg c) => if Vector.sub(pushVec, c) then NONE (* We had marked this as to be pushed - we can't use a cache here. *) else findCachedStack rno val stackLoc = StackLocation{wordOffset=newOffset, container=newContainer, field=field, cache=newCache} val cacheCode = case newCache of NONE => (removeStackCache rno; []) | SOME oldCacheReg => let val newCacheReg = newPReg RegPropCacheTagged val () = setStackCache(rno, newCacheReg) in [CopyToCache{source=oldCacheReg, dest=newCacheReg, kind=MoveWord}] end in (stackLoc, [], cacheCode) end | mapSourceEx(ContainerAddr{container, ...}) = let val (newOffset, newContainer) = mapContainerAndStack(container, 0) in (ContainerAddr{container=newContainer, stackOffset=newOffset}, [], []) end fun mapSource src = let val (sourceVal, sourceCodePre, sourceCodePost) = mapSourceEx src in (sourceVal, sourceCodePost @ sourceCodePre) end (* Force a load of the source into a register if it is on the stack. This is used in cases where a register or literal is allowed but not a memory location. If we do load it we can cache the register. *) fun mapAndLoad(source as RegisterArgument(PReg r)) = let val (sourceVal, sourceCodePre, sourceCodePost) = mapSourceEx source in case sourceVal of stack as StackLocation _ => let val newReg = newPReg RegPropUntagged val newCacheReg = newPReg RegPropCacheTagged val _ = setStackCache(r, newCacheReg) in (RegisterArgument newReg, CopyToCache{source=newReg, dest=newCacheReg, kind=MoveWord} :: sourceCodePost @ LoadArgument{source=stack, dest=newReg, kind=MoveWord} :: sourceCodePre) end | _ => (sourceVal, sourceCodePost @ sourceCodePre) end | mapAndLoad(StackLocation _) = raise InternalError "mapAndLoad - already a stack loc" | mapAndLoad(MemoryLocation _) = raise InternalError "mapAndLoad - already a mem loc" | mapAndLoad source = mapSource source (* Rewrite the code, replacing any registers that need to be pushed with references to the stack. The result is built up in reverse order and then reversed. *) fun pushRegisters({instr=LoadArgument{source, dest=PReg dReg, kind}, ...}, code) = if Vector.sub(pushVec, dReg) then (* We're going to push this. *) let val (sourceVal, sourceCode) = mapSource source (* If we have to push the value we don't have to first load it into a register. *) val _ = case Array.sub(pregMap, dReg) of Unset => () | _ => raise InternalError "LoadArgument - already set" val container = newStackLoc 1 val () = Array.update(pregMap, dReg, ToStack(! stackCount, container)) val () = pushItemToStack(NewEntry{pregNo=dReg}) in PushValue{arg=sourceVal, container=container} :: sourceCode @ code end else (* We're not going to push this. *) let val (sourceVal, sourceCodePre, sourceCodePost) = mapSourceEx source val dKind = Vector.sub(pregProps, dReg) val destReg = case Array.sub(pregMap, dReg) of Unset => let val newReg = newPReg dKind val () = Array.update(pregMap, dReg, ToPReg newReg) in newReg end | ToPReg preg => preg | ToStack _ => raise InternalError "LoadArgument - already on stack" (* Can we cache this? . *) val cacheCode = case source of MemoryLocation{base=PReg breg, offset, index=NoMemIndex, ...} => let (* The cache kind must match the kind of register we're loading. If the value is untagged it must not be marked to be examined by the GC if we allocate anything. The move kind has to be suitable for a register to register move. *) val moveKind = case kind of MoveWord => MoveWord | MoveByte => MoveWord | Move16Bit => MoveWord | Move32Bit => MoveWord | MoveFloat => MoveDouble | MoveDouble => MoveDouble val (cacheType, isTagged) = case dKind of RegPropGeneral => (RegPropCacheTagged, true) | RegPropUntagged => (RegPropCacheUntagged, false) | _ => raise InternalError "cacheKind" val newCacheReg = newPReg cacheType val _ = setMemoryCache(breg, offset, newCacheReg, isTagged, moveKind) in [CopyToCache{source=destReg, dest=newCacheReg, kind=moveKind}] end | _ => [] val destCode = LoadArgument{source=sourceVal, dest=destReg, kind=kind} in cacheCode @ sourceCodePost @ destCode :: sourceCodePre @ code end | pushRegisters({instr=StoreArgument{source, offset, base, index, kind, isMutable}, ...}, code) = let val (loadedSource, sourceCode) = mapAndLoad source (* We can't have a memory-memory store so we have to load the source if it's now on the stack. *) val (baseReg, baseCode) = mapSrcReg(base) val (indexValue, indexCode) = mapIndex(index) (* If we're assigning to a mutable we can no longer rely on the memory cache. Clear it completely in that case although we could be more selective. *) val () = if isMutable then clearMemoryCache() else () in StoreArgument{source=loadedSource, base=baseReg, offset=offset, index=indexValue, kind=kind, isMutable=isMutable} :: indexCode @ baseCode @ sourceCode @ code end | pushRegisters({instr=LoadMemReg { offset, dest}, ...}, code) = let val (destVal, destCode) = mapDestReg dest in destCode @ LoadMemReg { offset=offset, dest=destVal} :: code end | pushRegisters({instr=BeginFunction {regArgs, stackArgs}, ...}, code) = let (* Create a new container list. The offsets begin at -numArgs. *) fun newContainers(src :: srcs, offset) = let val newContainer = mapDestContainer(src, offset) in newContainer :: newContainers(srcs, offset+1) end | newContainers _ = [] val newStackArgs = newContainers(stackArgs, ~ (List.length stackArgs)) (* Push any registers that need to be pushed. *) fun pushReg((preg, rreg), (others, code)) = let val (newReg, newCode) = mapDestReg(preg) in ((newReg, rreg) :: others, newCode @ code) end val (newRegArgs, pushCode) = List.foldl pushReg ([], []) regArgs in pushCode @ BeginFunction {regArgs=newRegArgs, stackArgs=newStackArgs} :: code end | pushRegisters({instr=FunctionCall{callKind, regArgs, stackArgs, dest, ...}, ...}, code) = let (* It's possible that this could lead to having to spill registers in order to load others. Leave that problem for the moment. *) fun loadStackArg (arg, (otherLoads, otherArgs)) = let val (argVal, loadCode) = mapSource arg in (loadCode @ otherLoads, argVal :: otherArgs) end val (stackArgLoads, newStackArgs) = List.foldr loadStackArg ([], []) stackArgs fun loadRegArg ((arg, reg), (otherLoads, otherArgs)) = let val (argVal, loadCode) = mapSource arg in (loadCode @ otherLoads, (argVal, reg) :: otherArgs) end val (regArgLoads, newRegArgs) = List.foldr loadRegArg ([], []) regArgs val (destVal, destCode) = mapDestReg dest (* Now clear the cache table. *) val () = clearCache() in destCode @ FunctionCall{ callKind=callKind, regArgs=newRegArgs, stackArgs=newStackArgs, dest=destVal, saveRegs=[]} :: regArgLoads @ stackArgLoads @ code end | pushRegisters({instr=TailRecursiveCall{callKind, regArgs, stackArgs, stackAdjust, workReg, ...}, ...}, code) = let val newWorkReg = mapWorkReg workReg val newStackOffset = !stackCount fun loadStackArg ({src, stack}, (otherLoads, otherArgs)) = let val (argVal, loadCode) = case mapSource src of (source as StackLocation{wordOffset, ...}, loadCode) => (* If we're leaving it in its old location or we're pushing it above the current top we're ok. We're also ok if we're moving it from a somewhere above the last argument. Otherwise we have to load it. It goes into a normal tagged register which may mean that it could be pushed onto the stack in a subsequent pass. *) if wordOffset = stack+newStackOffset orelse stack+newStackOffset < 0 orelse newStackOffset-wordOffset > ~ stackAdjust then (source, loadCode) else let val preg = newPReg RegPropGeneral in (RegisterArgument preg, LoadArgument{source=source, dest=preg, kind=MoveWord} :: loadCode) end | argCode => argCode in (loadCode @ otherLoads, {src=argVal, stack=stack} :: otherArgs) end val (stackArgLoads, newStackArgs) = List.foldr loadStackArg ([], []) stackArgs fun loadRegArg ((arg, reg), (otherLoads, otherArgs)) = let val (argVal, loadCode) = mapSource arg in (loadCode @ otherLoads, (argVal, reg) :: otherArgs) end val (regArgLoads, newRegArgs) = List.foldr loadRegArg ([], []) regArgs in TailRecursiveCall{ callKind=callKind, regArgs=newRegArgs, stackArgs=newStackArgs, stackAdjust=stackAdjust, currStackSize=newStackOffset, workReg=newWorkReg} :: regArgLoads @ stackArgLoads @ code end | pushRegisters({instr=AllocateMemoryOperation{size, flags, dest, ...}, ...}, code) = let val (destVal, destCode) = mapDestReg dest in destCode @ AllocateMemoryOperation{size=size, flags=flags, dest=destVal, saveRegs=[]} :: code end | pushRegisters({instr=AllocateMemoryVariable{size, dest, ...}, ...}, code) = let val (sizeVal, sizeCode) = mapSrcReg size val (destVal, destCode) = mapDestReg dest in destCode @ AllocateMemoryVariable{size=sizeVal, dest=destVal, saveRegs=[]} :: sizeCode @ code end | pushRegisters({instr=InitialiseMem{size, addr, init}, ...}, code) = let val (sizeVal, sizeCode) = mapSrcReg size val (addrVal, addrCode) = mapSrcReg addr val (initVal, initCode) = mapSrcReg init in InitialiseMem{size=sizeVal, addr=addrVal, init=initVal} :: initCode @ addrCode @ sizeCode @ code end | pushRegisters({instr=InitialisationComplete, ...}, code) = InitialisationComplete :: code | pushRegisters({instr=JumpLoop{regArgs, stackArgs, checkInterrupt, workReg}, ...}, code) = let (* Normally JumpLoop will be the last item in a block but it is possible that we've added a reset-stack after it. *) fun getValues [] = ([], [], []) | getValues ((source, PReg n) :: rest) = let val (otherRegArgs, otherStackArgs, otherCode) = getValues rest in case Array.sub(pregMap, n) of ToPReg lReg => let val (sourceVal, sourceCode) = mapSource source in ((sourceVal, lReg) :: otherRegArgs, otherStackArgs, sourceCode @ otherCode) end | ToStack(stackLoc, stackC as StackLoc{size, ...}) => let val (sourceVal, sourceCode) = mapSource source val stackOff = !stackCount - stackLoc - size in (otherRegArgs, (sourceVal, stackOff, stackC) :: otherStackArgs, sourceCode @ otherCode) end | Unset => (* Drop it. It's never used. Probably a unit argument. *) (otherRegArgs, otherStackArgs, otherCode) end val (newRegArguments, newStackArgs, sourceCode) = getValues regArgs fun loadStackArg((source, _, destC), (otherLoads, otherArgs)) = let val (sourceVal, sourceCode) = mapSource source val (newOffset, newContainer) = mapContainerAndStack(destC, 0) in (sourceCode @ otherLoads, (sourceVal, newOffset, newContainer) :: otherArgs) end val (stackArgLoads, oldStackArgs) = List.foldr loadStackArg ([], []) stackArgs val check = case checkInterrupt of NONE => NONE | SOME _ => SOME [] (* Map the work reg if it exists already but get a new one if we now have stack args. *) val newWorkReg = case (workReg, newStackArgs) of (SOME r, _) => SOME(mapWorkReg r) | (NONE, []) => NONE | _ => SOME(newPReg RegPropGeneral) in JumpLoop{ regArgs=newRegArguments, stackArgs=oldStackArgs @ newStackArgs, checkInterrupt=check, workReg=newWorkReg} :: sourceCode @ stackArgLoads @ code end | pushRegisters({instr=RaiseExceptionPacket{packetReg}, ...}, code) = let val (packetVal, packetCode) = mapSrcReg packetReg in RaiseExceptionPacket{packetReg=packetVal} :: packetCode @ code end | pushRegisters({instr=ReserveContainer{size, container}, ...}, code) = let val newContainer = mapDestContainer(container, !stackCount) val () = pushItemToStack(OriginalEntry{stackLoc=container}) in ReserveContainer{size=size, container=newContainer} :: code end | pushRegisters({instr=IndexedCaseOperation{testReg, workReg}, ...}, code) = let val (srcVal, srcCode) = mapSrcReg(testReg) val newWorkReg = mapWorkReg workReg in (* This is an unconditional branch. *) IndexedCaseOperation{testReg=srcVal, workReg=newWorkReg} :: srcCode @ code end | pushRegisters({instr=LockMutable{addr}, ...}, code) = let val (addrVal, addrCode) = mapSrcReg(addr) in LockMutable{addr=addrVal} :: addrCode @ code end | pushRegisters({instr=WordComparison{arg1, arg2, ccRef}, ...}, code) = let val (loadedOp1, op1Code) = mapSrcReg arg1 val (op2Val, op2Code) = mapSource arg2 in WordComparison{arg1=loadedOp1, arg2=op2Val, ccRef=ccRef} :: op2Code @ op1Code @ code end | pushRegisters({instr=PushExceptionHandler{workReg}, ...}, code) = let val newWorkReg = mapWorkReg workReg (* Add a handler entry to the stack. *) val () = pushItemToStack HandlerEntry in PushExceptionHandler{workReg=newWorkReg} :: code end | pushRegisters({instr=PopExceptionHandler{workReg, ...}, ...}, code) = let val newWorkReg = mapWorkReg workReg (* Appears at the end of the block whose exceptions are being handled. Delete the handler and anything above it. *) (* Get the state after removing the handler. *) fun popContext ([], _) = raise InternalError "pushRegisters - pop handler" | popContext (HandlerEntry :: tl, new) = (tl, new-2) | popContext (OriginalEntry{stackLoc=StackLoc{size, ...}, ...} :: tl, new) = popContext(tl, new-size) | popContext (NewEntry _ :: tl, new) = popContext(tl, new-1) val (newStack, nnCount) = popContext(!stack, !stackCount) val () = stack := newStack val oldStackPtr = ! stackCount val () = stackCount := nnCount (* Reset the stack to just above the two words of the handler. *) val resetCode = if oldStackPtr <> nnCount+2 then [ResetStackPtr{numWords=oldStackPtr-nnCount-2, preserveCC=false}] else [] in PopExceptionHandler{workReg=newWorkReg} :: resetCode @ code end | pushRegisters({instr=BeginHandler{packetReg, workReg, ...}, ...}, code) = let (* Clear the cache. This may not be necessary if we are only handling locally generated exceptions but keep it for the moment. *) val () = clearCache() (* Start of a handler. The top active entry should be the handler. *) val () = case !stack of HandlerEntry :: tl => stack := tl | _ => raise InternalError "pushRegisters: BeginHandler" val () = stackCount := !stackCount - 2 val newWorkReg = mapWorkReg workReg val (pktReg, pktCode) = mapDestReg(packetReg) in pktCode @ BeginHandler{packetReg=pktReg, workReg=newWorkReg} :: code end | pushRegisters({instr=ReturnResultFromFunction{resultReg, numStackArgs}, ...}, code) = let val (resultValue, loadResult) = mapSrcReg resultReg val resetCode = if !stackCount = 0 then [] else [ResetStackPtr{numWords= !stackCount, preserveCC=false}] in ReturnResultFromFunction{resultReg=resultValue, numStackArgs=numStackArgs} :: resetCode @ loadResult @ code end | pushRegisters({instr=ArithmeticFunction{oper, resultReg, operand1, operand2, ccRef}, ...}, code) = let val (loadedOp1, op1Code) = mapSrcReg operand1 val (op2Val, op2Code) = mapSource operand2 val (destVal, destCode) = mapDestReg resultReg in destCode @ ArithmeticFunction{oper=oper, resultReg=destVal, operand1=loadedOp1, operand2=op2Val, ccRef=ccRef} :: op2Code @ op1Code @ code end | pushRegisters({instr=TestTagBit{arg, ccRef}, ...}, code) = let val (sourceVal, sourceCode) = mapSource arg in TestTagBit{arg=sourceVal, ccRef=ccRef} :: sourceCode @ code end | pushRegisters({instr=PushValue{arg, container, ...}, ...}, code) = let val (sourceVal, sourceCode) = mapSource arg (* This was a push from a previous pass. Treat as a container of size 1. *) val newContainer = mapDestContainer(container, !stackCount) val () = pushItemToStack(OriginalEntry{stackLoc=container}) in PushValue{arg=sourceVal, container=newContainer} :: sourceCode @ code end | pushRegisters({instr=CopyToCache _, ...}, code) = code (* This was added on a previous pass. Discard it. If we are going to cache this again we'll add new CopyToCache instructions. *) | pushRegisters({instr=ResetStackPtr _, ...}, code) = code (* Added in a previous pass - discard it. *) | pushRegisters({instr=StoreToStack{source, container, field, ...}, ...}, code) = let val (loadedSource, sourceCode) = mapAndLoad source (* We can't have a memory-memory store so we have to load the source if it's now on the stack. *) val (newOffset, newContainer) = mapContainerAndStack(container, field) in StoreToStack{source=loadedSource, container=newContainer, field=field, stackOffset=newOffset} :: sourceCode @ code end | pushRegisters({instr=TagValue{source, dest as PReg dReg, isSigned}, ...}, code) = let val (sourceVal, sourceCode) = mapSrcReg source val (destVal, destCode) = mapDestReg dest val _ = setTagCache(dReg, isSigned, sourceVal) in destCode @ TagValue{source=sourceVal, dest=destVal, isSigned=isSigned} :: sourceCode @ code end | pushRegisters({instr=UntagValue{source as PReg srcReg, dest, isSigned, ...}, ...}, code) = let val (loadedSource, sourceCode) = mapSrcReg source val (destVal, destCode) = mapDestReg dest val cache = findCachedTagged(srcReg, isSigned) in destCode @ UntagValue{source=loadedSource, dest=destVal, isSigned=isSigned, cache=cache} :: sourceCode @ code end | pushRegisters({instr=LoadEffectiveAddress{base, offset, index, dest}, ...}, code) = let val (baseVal, baseCode) = case base of NONE => (NONE, []) | SOME bReg => let val (newBReg, regCode) = mapSrcReg(bReg) in (SOME newBReg, regCode) end val (indexVal, indexCode) = mapIndex index val (destVal, destCode) = mapDestReg dest in destCode @ LoadEffectiveAddress{base=baseVal, offset=offset, index=indexVal, dest=destVal} :: indexCode @ baseCode @ code end | pushRegisters({instr=ShiftOperation{shift, resultReg, operand, shiftAmount, ccRef}, ...}, code) = let val (opVal, opCode) = mapSrcReg operand val (shiftVal, shiftCode) = mapSource shiftAmount val (destVal, destCode) = mapDestReg resultReg in destCode @ ShiftOperation{shift=shift, resultReg=destVal, operand=opVal, shiftAmount=shiftVal, ccRef=ccRef} :: shiftCode @ opCode @ code end | pushRegisters({instr=Multiplication{resultReg, operand1, operand2, ccRef}, ...}, code) = let val (op1Val, op1Code) = mapSrcReg operand1 val (op2Val, op2Code) = mapSource operand2 val (destVal, destCode) = mapDestReg resultReg in destCode @ Multiplication{resultReg=destVal, operand1=op1Val, operand2=op2Val, ccRef=ccRef} :: op2Code @ op1Code @ code end | pushRegisters({instr=Division{isSigned, dividend, divisor, quotient, remainder}, ...}, code) = let val (dividendVal, dividendCode) = mapSrcReg dividend val (divisorVal, divisorCode) = mapSource divisor val (quotVal, quotCode) = mapDestReg quotient val (remVal, remCode) = mapDestReg remainder in remCode @ quotCode @ Division{isSigned=isSigned, dividend=dividendVal, divisor=divisorVal, quotient=quotVal, remainder=remVal} :: divisorCode @ dividendCode @ code end | pushRegisters({instr=AtomicExchangeAndAdd{base, source}, ...}, code) = let val (baseVal, baseCode) = mapSrcReg(base) val (sourceVal, sourceCode) = mapSrcReg source (* The "source" is also a result and must be in a register. It's an untagged reg so it shouldn't have been marked as to be pushed. *) val _ = case sourceCode of [] => () | _ => raise InternalError "pushRegisters - AtomicExchangeAndAdd" in AtomicExchangeAndAdd{base=baseVal, source=sourceVal} :: baseCode @ code end | pushRegisters({instr=BoxValue{boxKind, source, dest as PReg dReg, ...}, ...}, code) = let val (sourceVal, sourceCode) = mapSrcReg source val (destVal, destCode) = mapDestReg dest (* We can cache the boxed value except if this is an X87 box. We can't cache X87 values because there's effectively only one register and this box instruction uses FSTP (store and POP). *) val cacheCode = if Vector.sub(pushVec, dReg) orelse boxKind = BoxX87 then [] else let val newCacheReg = newPReg RegPropCacheUntagged val moveKind = case boxKind of BoxLargeWord => MoveWord | BoxX87 => MoveDouble | BoxSSE2 => MoveDouble val _ = setMemoryCache(dReg, 0, newCacheReg, true, moveKind) in [CopyToCache{source=sourceVal, dest=newCacheReg, kind=moveKind}] end in cacheCode @ destCode @ BoxValue{boxKind=boxKind, source=sourceVal, dest=destVal, saveRegs=[]} :: sourceCode @ code end | pushRegisters({instr=CompareByteVectors{vec1Addr, vec2Addr, length, ccRef}, ...}, code) = let val (vec1Val, vec1Code) = mapSrcReg vec1Addr val (vec2Val, vec2Code) = mapSrcReg vec2Addr val (lengthVal, lengthCode) = mapSrcReg length in CompareByteVectors{vec1Addr=vec1Val, vec2Addr=vec2Val, length=lengthVal, ccRef=ccRef} :: lengthCode @ vec2Code @ vec1Code @ code end | pushRegisters({instr=BlockMove{srcAddr, destAddr, length, isByteMove}, ...}, code) = let val (srcVal, srcCode) = mapSrcReg srcAddr val (destVal, destCode) = mapSrcReg destAddr val (lengthVal, lengthCode) = mapSrcReg length (* For safety clear the memory cache here. That may not be necessary. *) val () = clearMemoryCache() in BlockMove{srcAddr=srcVal, destAddr=destVal, length=lengthVal, isByteMove=isByteMove} :: lengthCode @ destCode @ srcCode @ code end | pushRegisters({instr=X87Compare{arg1, arg2, ccRef}, ...}, code) = let val (arg1Val, arg1Code) = mapSrcReg arg1 val (arg2Val, arg2Code) = mapSource arg2 in X87Compare{arg1=arg1Val, arg2=arg2Val, ccRef=ccRef} :: arg2Code @ arg1Code @ code end | pushRegisters({instr=SSE2Compare{arg1, arg2, ccRef}, ...}, code) = let val (arg1Val, arg1Code) = mapSrcReg arg1 val (arg2Val, arg2Code) = mapSource arg2 in SSE2Compare{arg1=arg1Val, arg2=arg2Val, ccRef=ccRef} :: arg2Code @ arg1Code @ code end | pushRegisters({instr=X87FPGetCondition{dest, ccRef}, ...}, code) = let val (destVal, destCode) = mapDestReg dest in destCode @ X87FPGetCondition{dest=destVal, ccRef=ccRef} :: code end | pushRegisters({instr=X87FPArith{opc, resultReg, arg1, arg2}, ...}, code) = let val (arg1Val, arg1Code) = mapSrcReg arg1 val (arg2Val, arg2Code) = mapSource arg2 val (destVal, destCode) = mapDestReg resultReg in destCode @ X87FPArith{opc=opc, resultReg=destVal, arg1=arg1Val, arg2=arg2Val} :: arg2Code @ arg1Code @ code end | pushRegisters({instr=X87FPUnaryOps{fpOp, dest, source}, ...}, code) = let val (sourceVal, sourceCode) = mapSrcReg source val (destVal, destCode) = mapDestReg dest in destCode @ X87FPUnaryOps{fpOp=fpOp, dest=destVal, source=sourceVal} :: sourceCode @ code end | pushRegisters({instr=X87Float{dest, source}, ...}, code) = let val (sourceVal, sourceCode) = mapSource source val (destVal, destCode) = mapDestReg dest in destCode @ X87Float{dest=destVal, source=sourceVal} :: sourceCode @ code end | pushRegisters({instr=SSE2Float{dest, source}, ...}, code) = let val (sourceVal, sourceCode) = mapSource source val (destVal, destCode) = mapDestReg dest in destCode @ SSE2Float{dest=destVal, source=sourceVal} :: sourceCode @ code end | pushRegisters({instr=SSE2FPArith{opc, resultReg, arg1, arg2}, ...}, code) = let val (arg1Val, arg1Code) = mapSrcReg arg1 val (arg2Val, arg2Code) = mapSource arg2 val (destVal, destCode) = mapDestReg resultReg in destCode @ SSE2FPArith{opc=opc, resultReg=destVal, arg1=arg1Val, arg2=arg2Val} :: arg2Code @ arg1Code @ code end (* Find the common cache state. *) val () = setCommonCacheState(List.map (#cache o asub blockOutput) (asub blockRefs blockNo)) local fun doPush(instr as {kill, ...}, code) = let val newCode = pushRegisters(instr, code) (* Can we pop the stack? *) val stackReset = case setToList kill of [] => [] | killList => let (* See if any of the kill items are at the top of the stack. If they are we can pop them and perhaps items we've previously marked for deletion but not been able to pop. *) val oldStack = !stackCount fun checkAndAdd(r, output) = case Array.sub(pregMap, r) of ToStack(stackLoc, StackLoc{size, ...}) => if stackLoc < 0 then r :: output (* We can have arguments and return address. *) else if !stackCount = stackLoc+size then ( stack := tl (!stack); stackCount := stackLoc; output ) else r :: output | _ => r :: output val toAdd = List.foldl checkAndAdd [] killList fun reprocess list = let val prevStack = !stackCount val outlist = List.foldl checkAndAdd [] list in if !stackCount = prevStack then list else reprocess outlist end val () = if !stackCount = oldStack then deletedItems := toAdd @ !deletedItems else deletedItems := reprocess(toAdd @ !deletedItems) in if !stackCount = oldStack then [] else [ResetStackPtr{numWords=oldStack - !stackCount, preserveCC=true (* In case*)}] end in stackReset @ newCode end in val codeResult = List.foldl doPush [] block val outputCount = ! stackCount val results = {code=codeResult, cache=getCache(), stackCount= outputCount} val stateResult = { stackCount= outputCount, stack= !stack } val () = Array.update(blockOutput, blockNo, results) end val addSet = case flow of ExitCode => [] | IndexedBr cases => cases | Unconditional dest => [dest] | Conditional {trueJump, falseJump, ...} => [falseJump, trueJump] | SetHandler { handler, continue } => [handler, continue] | UnconditionalHandle _ => [] | ConditionalHandle { continue, ...} => [continue] val addItems = List.map(fn m => (m, stateResult)) addSet in processBlocks(addItems @ stillToDo) end in val () = processBlocks([(0, {stack=[], stackCount=0})]) end (* Put together the result code and blocks. *) local fun createBlock blockNo = (* Skip unreferenced blocks apart from block 0. *) if blockNo <> 0 andalso null (asub blockRefs blockNo) then BasicBlock{block=[], flow=ExitCode} else let val ExtendedBasicBlock{ flow, ...} = vsub code blockNo val {code=codeResult, stackCount=outputCount, ...} = asub blockOutput blockNo (* Process the successor. If we need a stack adjustment this will require an adjustment block. TODO: We could put a pre-adjustment if we only have one branch to this block. *) fun matchStacks targetBlock = let (* Process the destination. If it hasn't been processed. *) val {expectedInput, ...} = valOf (asub inputStackSizes targetBlock) in if expectedInput = outputCount then targetBlock else let val _ = outputCount > expectedInput orelse raise InternalError "adjustStack" val adjustCode = [ResetStackPtr{numWords=outputCount-expectedInput, preserveCC=true (* For the moment *)}] val newBlock = BasicBlock{block=adjustCode, flow=Unconditional targetBlock} val newBlockNo = !blockCounter before blockCounter := !blockCounter+1 val () = extraBlocks := newBlock :: !extraBlocks in newBlockNo end end val (finalCode, newFlow) = case flow of ExitCode => (codeResult, ExitCode) | Unconditional m => let (* Process the block. Since we're making an unconditional jump we can include any stack adjustment needed to match the destination in here. In particular this includes loops. *) val {expectedInput, reqCC} = valOf (asub inputStackSizes m) val resultCode = if expectedInput = outputCount then codeResult else ResetStackPtr{numWords=outputCount-expectedInput, preserveCC=reqCC} :: codeResult in (resultCode, Unconditional m) end (* For any of these, if we need to adjust the stack we have to add an adjustment block. *) | Conditional {trueJump, falseJump, ccRef, condition} => (codeResult, Conditional{trueJump=matchStacks trueJump, falseJump=matchStacks falseJump, ccRef=ccRef, condition=condition}) | SetHandler{ handler, continue } => (codeResult, SetHandler{ handler=matchStacks handler, continue=matchStacks continue}) | IndexedBr cases => (codeResult, IndexedBr(map matchStacks cases)) | u as UnconditionalHandle _ => (codeResult, u) | c as ConditionalHandle{ continue, ... } => let (* As for unconditional branch *) val {expectedInput, reqCC} = valOf (asub inputStackSizes continue) val resultCode = if expectedInput = outputCount then codeResult else ResetStackPtr{numWords=outputCount-expectedInput, preserveCC=reqCC} :: codeResult in (resultCode, c) end in BasicBlock{block=List.rev finalCode, flow=newFlow} end in val resultBlocks = Vector.tabulate(numberOfBlocks, createBlock) end (* Add any extra blocks to the result. *) val finalResult = case !extraBlocks of [] => resultBlocks | blocks => Vector.concat[resultBlocks, Vector.fromList(List.rev blocks)] val pregProperties = Vector.fromList(List.rev(! pregPropList)) in {code=finalResult, pregProps=pregProperties, maxStack= !maxStack} end structure Sharing = struct type x86ICode = x86ICode and preg = preg and intSet = intSet and extendedBasicBlock = extendedBasicBlock and basicBlock = basicBlock and regProperty = regProperty end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICodeIdentifyReferences.ML0000644000175000017500000012400313204034553025726 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86ICodeIdentifyReferences( structure ICODE: ICodeSig structure DEBUG: DEBUGSIG structure INTSET: INTSETSIG ): X86IDENTIFYREFSSIG = struct open ICODE open INTSET type regState = { active: int, refs: int, pushState: bool, prop: regProperty } and conflictState = { conflicts: int list, realConflicts: reg list } (* CC states before and after. The instruction may use the CC or ignore it. The only instruction to use the CC is X87FPGetCondition. Conditional branches are handled at the block level. The result of executing the instruction may be to set the condition code to a defined state, an undefined state or leave it unchanged. N.B. Some "instructions" may involve a stack reset that could affect the CC. *) datatype outCCState = CCSet of ccRef | CCIndeterminate | CCUnchanged and inCCState = CCNeeded of ccRef | CCUnused datatype extendedBasicBlock = ExtendedBasicBlock of { block: {instr: x86ICode, current: intSet, active: intSet, kill: intSet } list, flow: controlFlow, locals: intSet, (* Defined and used entirely within the block. *) imports: intSet, (* Defined outside the block, used inside it, but not needed afterwards. *) exports: intSet, (* Defined within the block, possibly used inside, but used outside. *) passThrough: intSet, (* Active throughout the block. May be referred to by it but needed afterwards. *) initialStacks: intSet, (* Stack items required at the start i.e. imports+passThrough for stack items. *) inCCState: ccRef option, (* The state this block assumes. If SOME _ all predecessors must set it. *) outCCState: ccRef option (* The condition code set by this block. SOME _ if at least one successor needs it. *) } exception InternalError = Misc.InternalError (* Return the list of blocks that are the immediate successor of this. *) fun blockSuccessors(BasicBlock{flow, ...}) = successorBlocks flow (* Find the registers from an argument. *) fun argRegs(RegisterArgument rarg) = [rarg] | argRegs(MemoryLocation { base, index, cache=SOME cr, ...}) = cr :: base :: argIndex index | argRegs(MemoryLocation { base, index, cache=NONE, ...}) = base :: argIndex index | argRegs(StackLocation { cache=SOME rarg, ...}) = [rarg] | argRegs _ = [] and argIndex NoMemIndex = [] | argIndex(MemIndex1 arg) = [arg] | argIndex(MemIndex2 arg) = [arg] | argIndex(MemIndex4 arg) = [arg] | argIndex(MemIndex8 arg) = [arg] fun argStacks(StackLocation { container, ...}) = [container] | argStacks(ContainerAddr { container, ...}) = [container] | argStacks _ = [] (* Return the set of registers used by the instruction. sources are registers that must have values after the instruction. dests are registers that are given values or modified by the instruction. *) fun getInstructionState(LoadArgument { source, dest, ...}) = { sources=argRegs source, dests=[dest], sStacks=argStacks source, dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(StoreArgument{ source, base, index, ...}) = { sources=argRegs source @ [base] @ argIndex index, dests=[], sStacks=argStacks source, dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(LoadMemReg { dest, ...}) = { sources=[], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(BeginFunction {regArgs, stackArgs, ...}) = { sources=[], dests=map #1 regArgs, sStacks=[], dStacks=stackArgs, ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(FunctionCall{regArgs, stackArgs, dest, ...}) = let (* Non-tail-recursive. Behaves as a normal reference to sources. *) fun getSources argSource = let val stackSources = List.foldl(fn (arg, srcs) => argSource arg @ srcs) [] stackArgs fun regSource((arg, _), srcs) = argSource arg @ srcs in List.foldl regSource stackSources regArgs end in { sources=getSources argRegs, dests=[dest], sStacks=getSources argStacks, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } end | getInstructionState(TailRecursiveCall{regArgs, stackArgs, workReg, ...}) = let (* Tail recursive call. References the argument sources but exits. *) fun getSources argSource = let val stackSources = List.foldl(fn ({src, ...}, srcs) => argSource src @ srcs) [] stackArgs fun regSource((arg, _), srcs) = argSource arg @ srcs in List.foldl regSource stackSources regArgs end in { sources=getSources argRegs, dests=[workReg], sStacks=getSources argStacks, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } end | getInstructionState(AllocateMemoryOperation{dest, ...}) = { sources=[], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(AllocateMemoryVariable{size, dest, ...}) = { sources=[size], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(InitialiseMem{size, addr, init}) = { sources=[size, addr, init], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(InitialisationComplete) = (* This is just a marker. It doesn't actually generate any code. *) { sources=[], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(JumpLoop{regArgs, stackArgs, workReg, ...}) = let fun getSources argSource = let val regSourceAsRegs = List.foldl(fn ((source, _), srcs) => argSource source @ srcs) [] regArgs in List.foldl(fn ((source, _, _), srcs) => argSource source @ srcs) regSourceAsRegs stackArgs end val dests = case workReg of SOME r => [r] | NONE => [] in { sources=getSources argRegs, dests=dests, sStacks=getSources argStacks, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } end | getInstructionState(RaiseExceptionPacket{packetReg}) = { sources=[packetReg], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(ReserveContainer{container, ...}) = { sources=[], dests=[], sStacks=[], dStacks=[container], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(IndexedCaseOperation{testReg, workReg, ...}) = { sources=[testReg], dests=[workReg], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(LockMutable{addr}) = { sources=[addr], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(WordComparison{arg1, arg2, ccRef, ...}) = { sources=arg1 :: argRegs arg2, dests=[], sStacks=argStacks arg2, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(PushExceptionHandler{workReg, ...}) = { sources=[], dests=[workReg], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(PopExceptionHandler{ workReg }) = { sources=[], dests=[workReg], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(BeginHandler{ workReg, packetReg, ...}) = { sources=[], dests=[packetReg, workReg], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(ReturnResultFromFunction{resultReg, ...}) = { sources=[resultReg], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(ArithmeticFunction{resultReg, operand1, operand2, ccRef, ...}) = { sources=operand1 :: argRegs operand2, dests=[resultReg], sStacks=argStacks operand2, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(TestTagBit{arg, ccRef, ...}) = { sources=argRegs arg, dests=[], sStacks=argStacks arg, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(PushValue {arg, container, ...}) = { sources=argRegs arg, dests=[], sStacks=argStacks arg, dStacks=[container], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(CopyToCache{source, dest, ...}) = { sources=[source], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged} | getInstructionState(ResetStackPtr{preserveCC, ...}) = { sources=[], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=if preserveCC then CCUnchanged else CCIndeterminate } | getInstructionState(StoreToStack {source, container, ...}) = (* Although this stores into the container it must already exist. *) { sources=argRegs source, dests=[], sStacks=container :: argStacks source, dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } | getInstructionState(TagValue{source, dest, ...}) = { sources=[source], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(UntagValue{source, dest, cache, ...}) = { sources=case cache of NONE => [source] | SOME cr => [cr, source], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(LoadEffectiveAddress{base, index, dest, ...}) = let val bRegs = case base of NONE => [] | SOME bReg => [bReg] val iRegs = argIndex index in { sources=bRegs @ iRegs, dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCUnchanged } end | getInstructionState(ShiftOperation{resultReg, operand, shiftAmount, ccRef, ...}) = { sources=operand :: argRegs shiftAmount, dests=[resultReg], sStacks=argStacks shiftAmount, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(Multiplication{resultReg, operand1, operand2, ccRef, ...}) = { sources=operand1 :: argRegs operand2, dests=[resultReg], sStacks=argStacks operand2, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(Division{dividend, divisor, quotient, remainder, ...}) = { sources=dividend :: argRegs divisor, dests=[quotient, remainder], sStacks=argStacks divisor, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(AtomicExchangeAndAdd{base, source}) = { sources=[base, source], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(BoxValue{source, dest, ...}) = { sources=[source], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(CompareByteVectors{vec1Addr, vec2Addr, length, ccRef, ...}) = { sources=[vec1Addr, vec2Addr, length], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(BlockMove{srcAddr, destAddr, length, ...}) = { sources=[srcAddr, destAddr, length], dests=[], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(X87Compare{arg1, arg2, ccRef, ...}) = { sources=arg1 :: argRegs arg2, dests=[], sStacks=argStacks arg2, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(SSE2Compare{arg1, arg2, ccRef, ...}) = { sources=arg1 :: argRegs arg2, dests=[], sStacks=argStacks arg2, dStacks=[], ccIn=CCUnused, ccOut=CCSet ccRef } | getInstructionState(X87FPGetCondition{dest, ccRef, ...}) = { sources=[], dests=[dest], sStacks=[], dStacks=[], ccIn=CCNeeded ccRef, ccOut=CCIndeterminate } | getInstructionState(X87FPArith{resultReg, arg1, arg2, ...}) = { sources=arg1 :: argRegs arg2, dests=[resultReg], sStacks=argStacks arg2, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(X87FPUnaryOps{dest, source, ...}) = { sources=[source], dests=[dest], sStacks=[], dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(X87Float{dest, source}) = { sources=argRegs source, dests=[dest], sStacks=argStacks source, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(SSE2Float{dest, source}) = { sources=argRegs source, dests=[dest], sStacks=argStacks source, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } | getInstructionState(SSE2FPArith{resultReg, arg1, arg2, ...}) = { sources=arg1 :: argRegs arg2, dests=[resultReg], sStacks=argStacks arg2, dStacks=[], ccIn=CCUnused, ccOut=CCIndeterminate } fun identifyRegisters(blockVector, pregProps): extendedBasicBlock vector * regState vector = let val maxPRegs = Vector.length pregProps val vectorLength = Vector.length blockVector (* Initial arrays - declarationArray is the set of registers given values by the block, importArray is the set of registers referenced by the block and not declared locally. *) val declarationArray = Array.array(vectorLength, emptySet) and importArray = Array.array(vectorLength, emptySet) val stackDecArray = Array.array(vectorLength, emptySet) and stackImportArray = Array.array(vectorLength, emptySet) (* References - this is used locally to see if a register is ever actually used and also included in the result which uses it as part of the choice of which register to spill. *) val regRefs = Array.array(maxPRegs, 0) (* Registers that must be pushed because they are required after a function call. For cache registers this means "discard". *) and requirePushOrDiscard = Array.array(maxPRegs, false) fun incrRef r = Array.update(regRefs, r, Array.sub(regRefs, r)+1) (* Contains the, possibly filtered, code for each block. *) val resultCode = Array.array(vectorLength, NONE) val ccInStates = Array.array(vectorLength, CCUnused) and ccOutStates = Array.array(vectorLength, CCIndeterminate) (* First pass - for each block build up the sets of registers defined and used in the block. We do this depth-first so that we can use "refs" to see if a register is used. If this is an instruction that can be eliminated we don't need to generate it and can ignore any references it makes. *) local fun blockScan blockNo = if isSome(Array.sub(resultCode, blockNo)) then () else let val () = Array.update(resultCode, blockNo, SOME []) (* Prevent looping. *) val thisBlock as BasicBlock { block, flow, ...} = Vector.sub(blockVector, blockNo) val successors = blockSuccessors thisBlock (* Visit everything reachable first. *) val () = List.app blockScan successors fun scanCode(instr, original as { code, decs, refs, sDecs, sRefs, occIn, occOut }) = let val { sources, dests, sStacks=stackSrcs, dStacks=stackDests, ccIn, ccOut, ... } = getInstructionState instr val eliminateable = case instr of LoadArgument _ => true | TagValue _ => true | UntagValue _ => true | LoadEffectiveAddress _ => true | BoxValue _ => true | CopyToCache _ => true | LoadMemReg _ => true | _ => false fun regNo(PReg i) = i and stackNo(StackLoc{rno, ...}) = rno val destRegNos = map regNo dests and sourceRegNos = map regNo sources val stackDestRegNos = map stackNo stackDests and stackSourceRegNos = map stackNo stackSrcs (* Check the CC if we need one and this sets it. The input CC is the earliest required CC that is not set by this code. *) val newInCC = case (occIn, ccOut) of (CCNeeded ccRIn, CCSet ccRout) => if ccRIn = ccRout then ccIn else raise InternalError "CCCheck failed" | (CCNeeded _, CCIndeterminate) => raise InternalError "CCCheck failed" | (_, CCUnchanged) => occIn | _ => ccIn (* The output CC is the last CC set. Tail instructions that don't change the CC state are ignored until we reach an instruction that sets it. *) val newOutCC = case occOut of CCUnchanged => ccOut | _ => occOut in if eliminateable andalso List.all(fn dReg => Array.sub(regRefs, dReg) = 0) destRegNos then original (* Don't include this instruction. *) else let (* Only mark the sources as referred after we know we're going to need this. In that way we may eliminate the instruction that created this source. *) val () = List.app incrRef sourceRegNos in { code = instr :: code, decs = union(listToSet destRegNos, decs), refs = union(listToSet sourceRegNos, refs), sDecs = union(listToSet stackDestRegNos, sDecs), sRefs = union(listToSet stackSourceRegNos, sRefs), occIn = newInCC, occOut = newOutCC} end end (* If we have a conditional branch at the end we need the condition code. It should either be set here or in a preceding block. *) val inCC = case flow of Conditional { ccRef, ...} => CCNeeded ccRef | _ => CCUnused val { code, decs, refs, sDecs, sRefs, occIn, occOut, ... } = List.foldr scanCode {code=[], decs=emptySet, refs=emptySet, sDecs=emptySet, sRefs=emptySet, occIn=inCC, occOut=CCUnchanged} block in Array.update(declarationArray, blockNo, decs); (* refs includes local declarations. Remove before adding to the result. *) Array.update(importArray, blockNo, minus(refs, decs)); Array.update(stackDecArray, blockNo, sDecs); Array.update(stackImportArray, blockNo, minus(sRefs, sDecs)); Array.update(resultCode, blockNo, SOME code); Array.update(ccInStates, blockNo, occIn); Array.update(ccOutStates, blockNo, occOut) end in val () = blockScan 0 (* Start with the root block. *) end (* Second phase - Propagate reference information between the blocks. We need to consider loops here. Do a depth-first scan marking each block. If we find a loop we save the import information we've used. If when we come to process that block we find the import information is different we need to reprocess. *) (* Pass through array - values used in other blocks after this that are not declared in this block. *) val passThroughArray = Array.array(vectorLength, emptySet) val stackPassThroughArray = Array.array(vectorLength, emptySet) (* Exports - those of our declarations that are used in other blocks. *) val exportArray = Array.array(vectorLength, emptySet) val stackExportArray = Array.array(vectorLength, emptySet) (* If any one of the successors requires the CC then this is set. Otherwise we leave it as Unused. *) val ccRequiredOut = Array.array(vectorLength, CCUnused) local datatype loopData = Unprocessed | Processing | Processed | Looped of { regSet: intSet, stackSet: intSet, ccState: inCCState } fun reprocessLoop () = let val reprocess = ref false val loopArray = Array.array(vectorLength, Unprocessed) fun processBlocks blockNo = case Array.sub(loopArray, blockNo) of Processed => (* Already seen this by a different route. *) { regSet = union(Array.sub(passThroughArray, blockNo), Array.sub(importArray, blockNo)), stackSet = union(Array.sub(stackPassThroughArray, blockNo), Array.sub(stackImportArray, blockNo)), ccState = Array.sub(ccInStates, blockNo) } | Looped s => s (* We've already seen this in a loop. *) | Processing => (* We have a loop. *) let (* Use the existing input array. *) val inputs = { regSet = union(Array.sub(passThroughArray, blockNo), Array.sub(importArray, blockNo)), stackSet = union(Array.sub(stackPassThroughArray, blockNo), Array.sub(stackImportArray, blockNo)), ccState = Array.sub(ccInStates, blockNo) } val () = Array.update(loopArray, blockNo, Looped inputs) in inputs end | Unprocessed => (* Normal case - not visited yet. *) let val () = Array.update(loopArray, blockNo, Processing) val thisBlock = Vector.sub(blockVector, blockNo) val ourDeclarations = Array.sub(declarationArray, blockNo) and ourStackDeclarations = Array.sub(stackDecArray, blockNo) val successors = blockSuccessors thisBlock fun addSuccessor b = let val {regSet=theirImports, stackSet=theirStackImports, ccState=theirInState} = processBlocks b (* Split the imports. If a register is a local declaration then it becomes an export. If it is not it becomes part of our passThrough. *) val (addToExp, addToImp) = INTSET.partition (fn i => member(i, ourDeclarations)) theirImports val (addToStackExp, addToStackImp) = INTSET.partition (fn i => member(i, ourStackDeclarations)) theirStackImports (* Merge the input states from each of the successors. *) val () = case (theirInState, Array.sub(ccRequiredOut, blockNo)) of (CCNeeded ts, CCNeeded req) => if ts = req then () else raise InternalError "Mismatched states" | (ts as CCNeeded _, _) => Array.update(ccRequiredOut, blockNo, ts) | _ => () in Array.update(exportArray, blockNo, union(Array.sub(exportArray, blockNo), addToExp)); Array.update(passThroughArray, blockNo, union(Array.sub(passThroughArray, blockNo), addToImp)); Array.update(stackExportArray, blockNo, union(Array.sub(stackExportArray, blockNo), addToStackExp)); Array.update(stackPassThroughArray, blockNo, union(Array.sub(stackPassThroughArray, blockNo), addToStackImp)) end val () = List.app addSuccessor successors val ourInputs = union(Array.sub(passThroughArray, blockNo), Array.sub(importArray, blockNo)) val ourStackInputs = union(Array.sub(stackPassThroughArray, blockNo), Array.sub(stackImportArray, blockNo)) in (* Check that we supply the required state. *) case (Array.sub(ccRequiredOut, blockNo), Array.sub(ccOutStates, blockNo)) of (CCNeeded ccReq, CCSet ccSet) => if ccReq = ccSet then () else raise InternalError "Mismatched cc states" | (CCNeeded _, CCIndeterminate) => raise InternalError "Mismatched cc states" | (cc as CCNeeded needOut, CCUnchanged) => ( (* We pass through the state. If we don't use the state then we need to set this as the input. If we do use the state it must be the same. *) case Array.sub(ccInStates, blockNo) of CCUnused => Array.update(ccInStates, blockNo, cc) | CCNeeded needIn => if needOut = needIn then () else raise InternalError "Mismatched cc states" ) | _ => (); (* Was this block used in a loop? If so we should not be requiring a CC. *) case Array.sub(loopArray, blockNo) of Looped {regSet, stackSet, ...} => ( case Array.sub(ccInStates, blockNo) of CCNeeded _ => raise InternalError "Looped state needs cc" | _ => (); if setToList regSet = setToList ourInputs andalso setToList stackSet = setToList ourStackInputs then () else reprocess := true ) | _ => (); Array.update(loopArray, blockNo, Processed); { regSet = ourInputs, stackSet = ourStackInputs, ccState = Array.sub(ccInStates, blockNo) } end in reprocess := false; processBlocks 0; if !reprocess then reprocessLoop () else () end in val () = reprocessLoop () end (* Third pass - Build the result list with the active registers for each instruction. We don't include registers in the passThrough set since they are active throughout the block. *) local (* Number of instrs for which this is active. We use this to try to select a register to push to the stack if we have too many. Registers that have only a short lifetime are less likely to be pushed than those that are active longer. *) val regActive = Array.array(maxPRegs, 0) fun addActivity n r = Array.update(regActive, r, Array.sub(regActive, r)+n) fun createResultInstrs (passThrough, stackPassThrough) (instr, (tail, activeAfterThis, stackActiveAfterThis)) = let val { sources, dests, sStacks=stackSrcs, dStacks=stackDests, ... } = getInstructionState instr fun regNo(PReg i) = i fun stackNo(StackLoc{rno, ...}) = rno val destRegNos = map regNo dests and sourceRegNos = map regNo sources val destSet = listToSet destRegNos (* Remove any sources that are present in passThrough since they are going to be active throughout the block. *) and sourceSet = minus(listToSet sourceRegNos, passThrough) val stackDestRegNos = map stackNo stackDests and stackSourceRegNos = map stackNo stackSrcs val stackDestSet = listToSet stackDestRegNos and stackSourceSet = minus(listToSet stackSourceRegNos, stackPassThrough) (* To compute the active set for the PREVIOUS instruction (we're processing from the end back to the start) we remove any registers that have been given values in this instruction and add anything that we are using in this instruction since they will now need to have values. *) val afterRemoveDests = minus(activeAfterThis, destSet) val stackAfterRemoveDests = minus(stackActiveAfterThis, stackDestSet) val activeForPrevious = union(sourceSet, afterRemoveDests) val stackActiveForPrevious = union(stackSourceSet, stackAfterRemoveDests) (* The "active" set is the set of registers that need to be active DURING the instruction. It includes destinations, which will usually be in "activeAfterThis", because there may be destinations that are not actually used subsequently but still need a register. That will also include work registers. Usually sources aren't included if this is the last use but the AllocateMemoryVariable "instruction" can't set the size after the memory is allocated so the active set includes the source(s). *) val activeForInstr = case instr of FunctionCall _ => sourceSet (* Is this still needed? *) | TailRecursiveCall _ => (* Set the active set to the total set of registers we require including the work register. This ensures that we will spill as many registers as we require when we look at the size of the active set. *) union(sourceSet, destSet) | AllocateMemoryVariable _ => (* We can only set the size after the memory is allocated. *) union(activeAfterThis, union(sourceSet, destSet)) | BoxValue _ => (* We can only store the value in the box after the box is allocated. *) union(activeAfterThis, union(sourceSet, destSet)) | _ => union(activeAfterThis, destSet) val () = List.app(addActivity 1) (setToList activeForInstr) local (* If we are allocating memory we have to save the current registers if they could contain an address. We mustn't push untagged registers and we mustn't push the destination. *) fun getSaveSet dReg = let val activeAfter = union(activeAfterThis, passThrough) (* Remove any registers marked - must-not-push. These are registers holding non-address values. They will actually be saved by the RTS across any GC but not checked or modified by the GC. Exclude the result register. *) fun getSave i = if i = dReg then NONE else case Vector.sub(pregProps, i) of RegPropGeneral => SOME(PReg i) | RegPropCacheTagged => SOME(PReg i) | _ => NONE in List.mapPartial getSave (setToList activeAfter) end in (* Sometimes we need to modify the instruction e.g. to include the set of registers to save. *) val convertedInstr = case instr of AllocateMemoryOperation{size, flags, dest, saveRegs=_} => AllocateMemoryOperation{size=size, flags=flags, dest=dest, saveRegs=getSaveSet(regNo dest)} | AllocateMemoryVariable{size, dest, saveRegs=_} => AllocateMemoryVariable{size=size, dest=dest, saveRegs=getSaveSet(regNo dest)} | BoxValue{source, dest, boxKind, saveRegs=_} => BoxValue{source=source, dest=dest, boxKind=boxKind, saveRegs=getSaveSet(regNo dest)} | JumpLoop{regArgs, stackArgs, checkInterrupt, workReg, ...} => let (* If we have to check for interrupts we must preserve registers across the RTS call. *) fun getSave i = case Vector.sub(pregProps, i) of RegPropGeneral => SOME(PReg i) | RegPropCacheTagged => SOME(PReg i) | _ => NONE val currentRegs = union(activeAfterThis, passThrough) val check = case checkInterrupt of NONE => NONE | SOME _ => SOME(List.mapPartial getSave (setToList currentRegs)) in JumpLoop{regArgs=regArgs, stackArgs=stackArgs, checkInterrupt=check, workReg=workReg} end | FunctionCall{regArgs, stackArgs=[], dest, callKind as ConstantCode m, saveRegs=_} => (* If this is arbitrary precision push the registers rather than marking them as "save". stringOfWord returns 'CODE "PolyAddArbitrary"' etc. *) if (String.isSubstring "Arbitrary\"" (Address.stringOfWord m)) then FunctionCall{regArgs=regArgs, stackArgs=[], callKind=callKind, dest=dest, saveRegs=getSaveSet(regNo dest) } else instr | _ => instr end (* FunctionCall must mark all registers as "push". *) local fun pushRegisters () = let val activeAfter = union(activeAfterThis, passThrough) fun pushAllButDests i = if List.exists(fn j => i=j) destRegNos then () else case Vector.sub(pregProps, i) of RegPropCacheTagged => raise InternalError "pushRegisters: cache reg" | RegPropCacheUntagged => raise InternalError "pushRegisters: cache reg" | _ => Array.update(requirePushOrDiscard, i, true) in (* We need to push everything active after this except the result register. *) List.app pushAllButDests (setToList activeAfter) end in val () = case instr of FunctionCall{ stackArgs=[], callKind=ConstantCode m, ...} => if (String.isSubstring "Arbitrary\"" (Address.stringOfWord m)) then () else pushRegisters () | FunctionCall _ => pushRegisters () (* It should no longer be necessary to push across a handler but there still seem to be cases that need it. *) | BeginHandler _ => pushRegisters () | CopyToCache {source=PReg srcReg, dest=PReg dstReg, ...} => (* If the source is a cache register marked as "must push" i.e. discard, the destination must also be discarded i.e. not available. Note: the source could be a non-cache register marked for pushing. *) ( case (Vector.sub(pregProps, srcReg), Array.sub(requirePushOrDiscard, srcReg)) of (RegPropCacheTagged, true) => Array.update(requirePushOrDiscard, dstReg, true) | (RegPropCacheUntagged, true) => Array.update(requirePushOrDiscard, dstReg, true) | _ => () ) | _ => () end (* Which entries are active in this instruction but not afterwards? *) val kill = union(minus(stackSourceSet, stackActiveAfterThis), minus(sourceSet, activeAfterThis)) in ({instr=convertedInstr, active=activeForInstr, current=activeAfterThis, kill=kill} :: tail, activeForPrevious, stackActiveForPrevious) end fun createResult blockNo = let val BasicBlock{ flow, ...} = Vector.sub(blockVector, blockNo) val declSet = Array.sub(declarationArray, blockNo) and importSet = Array.sub(importArray, blockNo) and passSet = Array.sub(passThroughArray, blockNo) and exportSet = Array.sub(exportArray, blockNo) and stackPassSet = Array.sub(stackPassThroughArray, blockNo) and stackImportSet = Array.sub(stackImportArray, blockNo) and stackExportSet = Array.sub(stackExportArray, blockNo) val filteredCode = getOpt(Array.sub(resultCode, blockNo), []) (* At the end of the block we should have the exports active. *) val (resultInstrs, _, _) = List.foldr (createResultInstrs (passSet, stackPassSet)) ([], exportSet, stackExportSet) filteredCode (* Set the active count for the pass through. *) val instrCount = List.length filteredCode val () = List.app(addActivity instrCount) (setToList passSet) val inCCState = case Array.sub(ccInStates, blockNo) of CCNeeded s => SOME s | CCUnused => NONE val outCCState = case Array.sub(ccRequiredOut, blockNo) of CCNeeded s => SOME s | CCUnused => NONE in ExtendedBasicBlock { block = resultInstrs, flow=flow, locals = minus(declSet, exportSet), imports = importSet, exports = exportSet, passThrough = passSet, initialStacks = union(stackPassSet, stackImportSet), inCCState = inCCState, outCCState = outCCState } end in val resultBlocks = Vector.tabulate(vectorLength, createResult) val regActive = regActive end val registerState: regState vector = Vector.tabulate(maxPRegs, fn i => { active = Array.sub(regActive, i), refs = Array.sub(regRefs, i), pushState = Array.sub(requirePushOrDiscard, i), prop = Vector.sub(pregProps, i) } ) in (resultBlocks, registerState) end (* Exported for use in GetConflictSets *) fun getInstructionRegisters instr = let val {sources, dests, ...} = getInstructionState instr in {sources=sources, dests=dests} end structure Sharing = struct type x86ICode = x86ICode and reg = reg and preg = preg and intSet = intSet and basicBlock = basicBlock and extendedBasicBlock = extendedBasicBlock and controlFlow = controlFlow and argument = argument and memoryIndex = memoryIndex and regProperty = regProperty and ccRef = ccRef end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICode.ML0000644000175000017500000010677613204034553022251 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86ICode( structure X86CODE: X86CODESIG ): ICodeSig = struct open X86CODE open Address datatype fpMode = FPModeSSE2 | FPModeX87 (* For the moment use SSE2 only on X86/64. Not all 32-bit processors support SSE2. *) val fpMode: fpMode = if isX64 then FPModeSSE2 else FPModeX87 datatype preg = PReg of int (* A pseudo-register - an abstract register. *) (* A location on the stack. May be more than word if this is a container or a handler entry. *) datatype stackLocn = StackLoc of {size: int, rno: int } (* This combines pregKind and stackLocn. *) datatype regProperty = RegPropGeneral (* A general register. *) | RegPropUntagged (* An untagged general register. *) | RegPropStack of int (* A stack location or container. *) | RegPropCacheTagged | RegPropCacheUntagged datatype argument = RegisterArgument of preg | AddressConstant of machineWord (* A constant that is an address. *) | IntegerConstant of LargeInt.int (* A non-address constant. Will usually be shifted and tagged. *) | MemoryLocation of { base: preg, offset: int, index: memoryIndex, cache: preg option } (* A memory location. Could be the stack. *) (* Offset on the stack. The container is the stack location identifier, the field is an offset in a container. cache is an optional cache register. *) | StackLocation of { wordOffset: int, container: stackLocn, field: int, cache: preg option } (* Address of a container. *) | ContainerAddr of { container: stackLocn, stackOffset: int } and memoryIndex = NoMemIndex | MemIndex1 of preg | MemIndex2 of preg | MemIndex4 of preg | MemIndex8 of preg (* Kinds of moves. MoveWord - Move a whole word - 64-bits in 64-bit mode, 32-bits in 32-bit mode. MoveByte - When loading, load a byte and zero extend. Move16Bit - Used for C-memory loads and stores. Zero extends on load. Move32Bit - Used for C-memory loads and stores in 64-bit mode. MoveFloat - Load and store a single-precision value MoveDouble - Load and store a double-precision value. *) datatype moveKind = MoveWord | MoveByte | Move16Bit | Move32Bit | MoveFloat | MoveDouble (* The reference to a condition code. *) and ccRef = CcRef of int datatype boxKind = BoxLargeWord | BoxSSE2 | BoxX87 datatype x86ICode = (* Move a value into a register. *) LoadArgument of { source: argument, dest: preg, kind: moveKind } (* Store a value into memory. The source will usually be a register but could be a constant depending on the value. If isMutable is true we're assigning to a ref and we need to flush the memory cache. *) | StoreArgument of { source: argument, base: preg, offset: int, index: memoryIndex, kind: moveKind, isMutable: bool } (* Load an entry from the "memory registers". Used just for ThreadSelf. *) | LoadMemReg of { offset: int, dest: preg } (* Start of function. Set the register arguments. stackArgs is the list of stack arguments. The last entry is the return address. *) | BeginFunction of { regArgs: (preg * reg) list, stackArgs: stackLocn list } (* Call a function. If the code address is a constant it is passed here. Otherwise the address is obtained by indirecting through rdx which has been loaded as one of the argument registers. The result is stored in the destination register. *) | FunctionCall of { callKind: callKinds, regArgs: (argument * reg) list, stackArgs: argument list, dest: preg, saveRegs: preg list} (* Jump to a tail-recursive function. This is similar to FunctionCall but complicated for stack arguments because the stack and the return address need to be overwritten. stackAdjust is the number of words to remove (positive) or add (negative) to the stack before the call. currStackSize contains the number of items currently on the stack. *) | TailRecursiveCall of { callKind: callKinds, regArgs: (argument * reg) list, stackArgs: {src: argument, stack: int} list, stackAdjust: int, currStackSize: int, workReg: preg } (* Allocate a fixed sized piece of memory. The size is the number of words required. This sets the length word including the flags bits. saveRegs is the list of registers that need to be saved if we need to do a garbage collection. *) | AllocateMemoryOperation of { size: int, flags: Word8.word, dest: preg, saveRegs: preg list } (* Allocate a piece of memory whose size is not known at compile-time. The size argument is the number of words. *) | AllocateMemoryVariable of { size: preg, dest: preg, saveRegs: preg list } (* Initialise a piece of memory. N.B. The size is an untagged value containing the number of words. This uses REP STOSL/Q so addr must be rdi, size must be rcx and init must be rax. *) | InitialiseMem of { size: preg, addr: preg, init: preg } (* Signal that a tuple has been fully initialised. Really a check in the low-level code-generator. *) | InitialisationComplete (* Set up the registers for a jump back to the start of a loop. *) | JumpLoop of { regArgs: (argument * preg) list, stackArgs: (argument * int * stackLocn) list, checkInterrupt: preg list option, workReg: preg option } (* Raise an exception. The packet is always loaded into rax. *) | RaiseExceptionPacket of { packetReg: preg } (* Reserve a contiguous area on the stack to receive a result tuple. *) | ReserveContainer of { size: int, container: stackLocn } (* Indexed case. *) | IndexedCaseOperation of { testReg: preg, workReg: preg } (* Lock a mutable cell by turning off the mutable bit. *) | LockMutable of { addr: preg } (* Compare two word values. The first argument must be a register. *) | WordComparison of { arg1: preg, arg2: argument, ccRef: ccRef } (* Exception handling. - Set up an exception handler. *) | PushExceptionHandler of { workReg: preg } (* End of a handled section. Restore the previous handler. *) | PopExceptionHandler of { workReg: preg } (* Marks the start of a handler. This sets the stack pointer and restores the old handler. Sets the exception packet register. *) | BeginHandler of { packetReg: preg, workReg: preg } (* Return from the function. *) | ReturnResultFromFunction of { resultReg: preg, numStackArgs: int } (* Arithmetic or logical operation. These can set the condition codes. *) | ArithmeticFunction of { oper: arithOp, resultReg: preg, operand1: preg, operand2: argument, ccRef: ccRef } (* Test the tag bit of a word. Sets the Zero bit if the value is an address i.e. untagged. *) | TestTagBit of { arg: argument, ccRef: ccRef } (* Push a value to the stack. Added during translation phase. *) | PushValue of { arg: argument, container: stackLocn } (* Copy a value to a cache register. LoadArgument could be used for this but it may be better to keep it separate. *) | CopyToCache of { source: preg, dest: preg, kind: moveKind } (* Remove items from the stack. Added during translation phase. *) | ResetStackPtr of { numWords: int, preserveCC: bool } (* Store a value into the stack. *) | StoreToStack of { source: argument, container: stackLocn, field: int, stackOffset: int } (* Tag a value by shifting and setting the tag bit. *) | TagValue of { source: preg, dest: preg, isSigned: bool } (* Shift a value to remove the tag bit. The cache is used if this is untagging a value that has previously been tagged. *) | UntagValue of { source: preg, dest: preg, isSigned: bool, cache: preg option } (* This provides the LEA instruction which can be used for various sorts of arithmetic. The base register is optional in this case. *) | LoadEffectiveAddress of { base: preg option, offset: int, index: memoryIndex, dest: preg } (* Shift a word by an amount that can either be a constant or a register. *) | ShiftOperation of { shift: shiftType, resultReg: preg, operand: preg, shiftAmount: argument, ccRef: ccRef } (* Multiplication. We can use signed multiplication for both fixed precision and word (unsigned) multiplication. There are various forms of the instruction including a three-operand version. *) | Multiplication of { resultReg: preg, operand1: preg, operand2: argument, ccRef: ccRef } (* Division. This takes a register pair, always RDX:RAX, divides it by the operand register and puts the quotient in RAX and remainder in RDX. At the abstract level we represent all of these by pRegs. The divisor can be either a register or a memory location. *) | Division of { isSigned: bool, dividend: preg, divisor: argument, quotient: preg, remainder: preg } (* Atomic exchange and addition. This is executed with a lock prefix and is used for atomic increment and decrement for mutexes. Before the operation the source contains an increment. After the operation the source contains the old value of the destination and the destination has been updated with its old value added to the increment. The destination is actually the word pointed at by "base". *) | AtomicExchangeAndAdd of { base: preg, source: preg } (* Create a "box" of a single-word "byte" cell and store the source into it. This can be implemented using AllocateMemoryOperation but the idea is to allow the transform layer to recognise when a value is being boxed and then unboxed and remove unnecessary allocation. *) | BoxValue of { boxKind: boxKind, source: preg, dest: preg, saveRegs: preg list } (* Compare two vectors of bytes and set the condition code on the result. In general vec1Addr and vec2Addr will be pointers inside memory cells so have to be untagged registers. *) | CompareByteVectors of { vec1Addr: preg, vec2Addr: preg, length: preg, ccRef: ccRef } (* Move a block of bytes (isByteMove true) or words (isByteMove false). The length is the number of items (bytes or words) to move. *) | BlockMove of { srcAddr: preg, destAddr: preg, length: preg, isByteMove: bool } (* Floating point comparison. *) | X87Compare of { arg1: preg, arg2: argument, ccRef: ccRef } (* Floating point comparison. *) | SSE2Compare of { arg1: preg, arg2: argument, ccRef: ccRef } (* The X87 FP unit does not generate condition codes directly. We have to load the cc into RAX and test it there. *) | X87FPGetCondition of { ccRef: ccRef, dest: preg } (* Binary floating point operations on the X87. *) | X87FPArith of { opc: fpOps, resultReg: preg, arg1: preg, arg2: argument } (* Floating point operations: negate and set sign positive. *) | X87FPUnaryOps of { fpOp: fpUnaryOps, dest: preg, source: preg } (* Load a fixed point value as a floating point value. *) | X87Float of { dest: preg, source: argument } (* Load a fixed point value as a floating point value. *) | SSE2Float of { dest: preg, source: argument } (* Binary floating point operations using SSE2 instructions. *) | SSE2FPArith of { opc: sse2Operations, resultReg: preg, arg1: preg, arg2: argument } (* Destinations at the end of a basic block. *) and controlFlow = (* Unconditional branch to a label - should be a merge point. *) Unconditional of int (* Conditional branch. Jumps to trueJump if the condional is false, falseJump if false. *) | Conditional of { ccRef: ccRef, condition: branchOps, trueJump: int, falseJump: int } (* Exit - the last instruction of the block is a return, raise or tailcall. *) | ExitCode (* Indexed case - this branches to one of a number of labels *) | IndexedBr of int list (* Set up a handler. This doesn't cause an immediate branch but the state at the start of the handler is the state at this point. *) | SetHandler of { handler: int, continue: int } (* Unconditional branch to a handler. If an exception is raised explicitly within the scope of a handler. *) | UnconditionalHandle of int (* Conditional branch to a handler. Occurs if there is a call to a function within the scope of a handler. It may jump to the handler. *) | ConditionalHandle of { handler: int, continue: int } and basicBlock = BasicBlock of { block: x86ICode list, flow: controlFlow } (* Return the list of blocks that are the immediate successor of this. *) fun successorBlocks(Unconditional l) = [l] | successorBlocks(Conditional{trueJump, falseJump, ...}) = [trueJump, falseJump] | successorBlocks ExitCode = [] | successorBlocks(IndexedBr cases) = cases | successorBlocks(SetHandler{handler, continue, ...}) = [handler, continue] (* We only need "handler" in SetHandler because we may have a handler that is never actually jumped to. *) | successorBlocks(UnconditionalHandle handler) = [handler] | successorBlocks(ConditionalHandle{handler, continue, ...}) = [handler, continue] datatype destinations = RegDest of reg | StackDest of int local fun printIndex(NoMemIndex, _, _) = () | printIndex(MemIndex1 i, stream, printReg) = (stream "["; printReg(i, stream); stream "*1]") | printIndex(MemIndex2 i, stream, printReg) = (stream "["; printReg(i, stream); stream "*2]") | printIndex(MemIndex4 i, stream, printReg) = (stream "["; printReg(i, stream); stream "*4]") | printIndex(MemIndex8 i, stream, printReg) = (stream "["; printReg(i, stream); stream "*8]") fun printStackLoc(StackLoc{size, rno}, stream) = (stream "S"; stream(Int.toString rno); stream "("; stream(Int.toString size); stream ")") fun printArg(RegisterArgument reg, stream, printReg) = printReg(reg, stream) | printArg(AddressConstant m, stream, _) = stream(stringOfWord m) | printArg(IntegerConstant i, stream, _) = stream(LargeInt.toString i) | printArg(MemoryLocation{base, offset, index, cache, ...}, stream, printReg) = ( stream(Int.toString offset ^ "("); printReg(base, stream); stream ")"; printIndex(index, stream, printReg); case cache of NONE => () | SOME r => (stream " cache "; printReg(r, stream)) ) | printArg(StackLocation{wordOffset, container, field, cache, ...}, stream, printReg) = ( printStackLoc(container, stream); stream " + "; stream(Int.toString field); stream " ("; stream(Int.toString wordOffset); stream ")"; case cache of NONE => () | SOME r => (stream " cache "; printReg(r, stream)) ) | printArg(ContainerAddr{stackOffset, container}, stream, _) = ( stream "@"; printStackLoc(container, stream); stream " ("; stream(Int.toString stackOffset); stream ")" ) fun printSaves([], _, _) = () | printSaves([areg], printReg, stream) = printReg(areg, stream) | printSaves(areg::more, printReg, stream) = (printReg(areg, stream); stream ","; printSaves(more, printReg, stream)) fun printKind(MoveWord, stream) = stream "Word" | printKind(MoveByte, stream) = stream "Byte" | printKind(Move16Bit, stream) = stream "16Bit" | printKind(Move32Bit, stream) = stream "32Bit" | printKind(MoveFloat, stream) = stream "Float" | printKind(MoveDouble, stream) = stream "Double"; fun printICode(LoadArgument{source, dest, kind}, stream, printReg) = ( stream "\tLoad"; printKind(kind, stream); stream "\t"; printArg(source, stream, printReg); stream " => "; printReg(dest, stream) ) | printICode(StoreArgument{source, base, offset, index, kind, ...}, stream, printReg) = ( case kind of MoveWord => stream "\tStoreWord\t" | MoveByte => stream "\tStoreByte\t" | Move16Bit => stream "\tStore16Bit\t" | Move32Bit => stream "\tStore32Bit\t" | MoveFloat => stream "\tStoreFloat\t" | MoveDouble => stream "\tStoreDouble\t"; printArg(source, stream, printReg); stream " => "; stream(Int.toString offset ^ "("); printReg(base, stream); stream ")"; printIndex(index, stream, printReg) ) | printICode(LoadMemReg { offset, dest}, stream, printReg) = ( stream "\tLoadMemReg\t"; stream(Int.toString offset); stream " => "; printReg(dest, stream) ) | printICode(BeginFunction {regArgs, stackArgs}, stream, printReg) = ( stream "\tBeginFunction\t"; List.app(fn (arg, r) => (stream(regRepr r); stream "="; printReg(arg, stream); stream " ")) regArgs; List.app(fn s => printStackLoc(s, stream)) stackArgs ) | printICode(FunctionCall{callKind, regArgs, stackArgs, dest, saveRegs}, stream, printReg) = ( stream "\tFunctionCall\t"; case callKind of Recursive => stream "recursive " | ConstantCode m => (stream(stringOfWord m); stream " ") | FullCall => () | DirectReg r => (stream(regRepr(GenReg r)); stream " "); List.app(fn (arg, r) => (stream(regRepr r); stream "="; printArg(arg, stream, printReg); stream " ")) regArgs; List.app(fn arg => (stream "p="; printArg(arg, stream, printReg); stream " ")) stackArgs; stream "=> "; printReg(dest, stream); stream " save="; printSaves(saveRegs, printReg, stream) ) | printICode(TailRecursiveCall{callKind, regArgs, stackArgs, stackAdjust, currStackSize, workReg}, stream, printReg) = ( stream "\tTailCall\t"; case callKind of Recursive => stream "recursive " | ConstantCode m => (stream(stringOfWord m); stream " ") | FullCall => () | DirectReg r => (stream(regRepr(GenReg r)); stream " "); List.app(fn (arg, r) => (stream(regRepr r); stream "="; printArg(arg, stream, printReg); stream " ")) regArgs; List.app(fn {src, stack} => (stream (Int.toString stack); stream "<="; printArg(src, stream, printReg); stream " ")) stackArgs; stream "adjust="; stream(Int.toString stackAdjust); stream "stackSize="; stream(Int.toString currStackSize); stream " work reg="; printReg(workReg, stream) ) | printICode(AllocateMemoryOperation{size, flags, dest, saveRegs}, stream, printReg) = ( stream "\tAllocateMemory\t"; stream(concat["s=", Int.toString size, ",f=", Word8.toString flags, " => "]); printReg(dest, stream); stream " save="; printSaves(saveRegs, printReg, stream) ) | printICode(AllocateMemoryVariable{size, dest, saveRegs}, stream, printReg) = ( stream "\tAllocateMemory\t"; stream "s="; printReg(size, stream); stream " => "; printReg(dest, stream); stream " save="; printSaves(saveRegs, printReg, stream) ) | printICode(InitialiseMem{size, addr, init}, stream, printReg) = ( stream "\tInitialiseMem\t"; stream "s="; printReg(size, stream); stream ",i="; printReg(init, stream); stream ",a="; printReg(addr, stream) ) | printICode(InitialisationComplete, stream, _) = stream "\tInitComplete" | printICode(JumpLoop{regArgs, stackArgs, checkInterrupt, workReg, ... }, stream, printReg) = ( stream "\tJumpLoop\t"; List.app( fn (source, loopReg) => (printReg(loopReg, stream); stream "="; printArg(source, stream, printReg); stream " ") ) regArgs; List.app( fn (source, stack, stackLocn) => (printStackLoc(stackLocn, stream); stream("(sp" ^ Int.toString stack); stream ")="; printArg(source, stream, printReg); stream " ") ) stackArgs; case checkInterrupt of NONE => () | SOME saveRegs => (stream " Check:save="; printSaves(saveRegs, printReg, stream)); case workReg of NONE => () | SOME r => (stream " work reg="; printReg(r, stream)) ) | printICode(RaiseExceptionPacket{packetReg}, stream, printReg) = (stream "\tRaise\t"; printReg(packetReg, stream)) | printICode(ReserveContainer{size, container}, stream, _) = (stream "\tReserveContainer\t"; stream(Int.toString size); stream " => "; printStackLoc(container, stream)) | printICode(IndexedCaseOperation{testReg, workReg}, stream, printReg) = ( stream "\tIndexedCase\t"; stream "test="; printReg(testReg, stream); stream "work="; printReg(workReg, stream) ) | printICode(LockMutable{addr}, stream, printReg) = (stream "\tLockMutable\t"; printReg(addr, stream)) | printICode(WordComparison{arg1, arg2, ...}, stream, printReg) = (stream "\tWordComparison\t"; printReg(arg1, stream); stream ","; printArg(arg2, stream, printReg)) | printICode(PushExceptionHandler{workReg }, stream, printReg) = ( stream "\tPushExcHandler\twith "; printReg(workReg, stream) ) | printICode(PopExceptionHandler{workReg}, stream, printReg) = ( stream "\tPopExceptionHandler\t"; stream "with "; printReg(workReg, stream) ) | printICode(BeginHandler{packetReg, workReg}, stream, printReg) = ( stream "\tBeginHandler\t"; printReg(packetReg, stream); stream " with "; printReg(workReg, stream) ) | printICode(ReturnResultFromFunction{resultReg, numStackArgs}, stream, printReg) = (stream "\tReturnFromFunction\t"; printReg(resultReg, stream); stream("," ^ Int.toString numStackArgs)) | printICode(ArithmeticFunction{oper, resultReg, operand1, operand2, ...}, stream, printReg) = ( case oper of ADD => stream "\tAdd\t" | OR => stream "\tOrBits\t" | AND => stream "\tAndBits\t" | SUB => stream "\tSubtract\t" | XOR => stream "\tExclusiveOrBits\t" | CMP => stream "\tCompare\t"; printReg(operand1, stream); stream ","; printArg(operand2, stream, printReg); stream " => "; printReg(resultReg, stream) ) | printICode(TestTagBit{arg, ...}, stream, printReg) = (stream "\tTestTagBit\t"; printArg(arg, stream, printReg)) | printICode(PushValue{arg, container}, stream, printReg) = (stream "\tPushValue\t"; printArg(arg, stream, printReg); stream " => "; printStackLoc(container, stream)) | printICode(CopyToCache{source, dest, kind}, stream, printReg) = (stream "\tCopyToCache"; printKind(kind, stream); stream "\t"; printReg(source, stream); stream " => "; printReg(dest, stream)) | printICode(ResetStackPtr{numWords, preserveCC}, stream, _) = ( stream "\tResetStackPtr\t"; stream(Int.toString numWords); if preserveCC then stream " preserve CC" else () ) | printICode(StoreToStack{source, container, field, stackOffset}, stream, printReg) = ( stream "\tStoreToStack\t"; printArg(source, stream, printReg); stream " => "; printStackLoc(container, stream); stream "+"; stream (Int.toString field); stream "("; stream(Int.toString stackOffset); stream ")" ) | printICode(TagValue{source, dest, ...}, stream, printReg) = (stream "\tTagValue\t"; printReg(source, stream); stream " => "; printReg(dest, stream)) | printICode(UntagValue{source, dest, isSigned, cache}, stream, printReg) = ( stream "\tUntag"; stream(if isSigned then "Signed\t" else "Unsigned\t"); printReg(source, stream); stream " => "; printReg(dest, stream); case cache of NONE => () | SOME c => (stream " cache "; printReg(c, stream)) ) | printICode(LoadEffectiveAddress{base, offset, index, dest}, stream, printReg) = ( stream "\tLoadEffectiveAddr\t"; stream(Int.toString offset ^ "("); case base of NONE => stream "_" | SOME b => printReg(b, stream); stream ")"; printIndex(index, stream, printReg); stream " => "; printReg(dest, stream) ) | printICode(ShiftOperation{shift, resultReg, operand, shiftAmount, ...}, stream, printReg) = ( case shift of SHL => stream "\tShiftLeft\t" | SHR => stream "\tShiftRLogical\t" | SAR => stream "\tShiftRArith\t"; printReg(operand, stream); stream ","; printArg(shiftAmount, stream, printReg); stream " => "; printReg(resultReg, stream) ) | printICode(Multiplication{resultReg, operand1, operand2, ...}, stream, printReg) = ( stream "\tMultiplication\t"; printReg(operand1, stream); stream ","; printArg(operand2, stream, printReg); stream " => "; printReg(resultReg, stream) ) | printICode(Division{isSigned, dividend, divisor, quotient, remainder}, stream, printReg) = ( stream "\tDivision"; stream(if isSigned then "Signed\t" else "Unsigned\t"); printReg(dividend, stream); stream " by "; printArg(divisor, stream, printReg); stream " => "; printReg(quotient, stream); stream " rem "; printReg(remainder, stream) ) | printICode(AtomicExchangeAndAdd{base, source}, stream, printReg) = ( stream "\tAtomicExchangeAndAdd\t"; stream "addr=0("; printReg(base, stream); stream "),with="; printReg(source, stream) ) | printICode(BoxValue{boxKind, source, dest, saveRegs}, stream, printReg) = ( stream(case boxKind of BoxLargeWord => "\tBoxLarge\t" | BoxX87 => "\tBoxX87\t" | BoxSSE2 => "\tBoxSSE2\t"); printReg(source, stream); stream " => "; printReg(dest, stream); stream " save="; printSaves(saveRegs, printReg, stream) ) | printICode(CompareByteVectors{vec1Addr, vec2Addr, length, ...}, stream, printReg) = ( stream "\tCompareByteVectors\t"; printReg(vec1Addr, stream); stream ","; printReg(vec2Addr, stream); stream ","; printReg(length, stream) ) | printICode(BlockMove{srcAddr, destAddr, length, isByteMove}, stream, printReg) = ( stream(if isByteMove then "\tBlockByteMove\t" else "\tBlockWordMove\t"); stream "src="; printReg(srcAddr, stream); stream ",dest="; printReg(destAddr, stream); stream ",len="; printReg(length, stream) ) | printICode(X87Compare{arg1, arg2, ...}, stream, printReg) = (stream "\tX87Compare\t"; printReg(arg1, stream); stream ","; printArg(arg2, stream, printReg)) | printICode(SSE2Compare{arg1, arg2, ...}, stream, printReg) = (stream "\tSSE2Compare\t"; printReg(arg1, stream); stream ","; printArg(arg2, stream, printReg)) | printICode(X87FPGetCondition{dest, ...}, stream, printReg) = (stream "\tX87FPGetCondition\t=> "; printReg(dest, stream)) | printICode(X87FPArith{opc, resultReg, arg1, arg2}, stream, printReg) = ( case opc of FADD => stream "\tX87FPAdd\t" | FMUL => stream "\tX87FPMul\t" | FCOM => stream "\tX87FPCompare\t" | FCOMP => stream "\tX87FPComparePop\t" | FSUB => stream "\tX87FPSub\t" | FSUBR => stream "\tX87FPRevSub\t" | FDIV => stream "\tX87FPDiv\t" | FDIVR => stream "\tX87FPRevDiv\t"; printReg(arg1, stream); stream ","; printArg(arg2, stream, printReg); stream " => "; printReg(resultReg, stream) ) | printICode(X87FPUnaryOps{fpOp, dest, source}, stream, printReg) = ( case fpOp of FABS => stream "\tX87FPAbs\t" | FCHS => stream "\tX87FPNegate\t" | FLD1 => stream "\tX87FPLoad1\t" | FLDZ => stream "\tX87FPLoad0\t"; printReg(source, stream); stream " => "; printReg(dest, stream) ) | printICode(X87Float{dest, source}, stream, printReg) = (stream "\tX87Float\t"; printArg(source, stream, printReg); stream " => "; printReg(dest, stream)) | printICode(SSE2Float{dest, source}, stream, printReg) = (stream "\tSSE2Float\t"; printArg(source, stream, printReg); stream " => "; printReg(dest, stream)) | printICode(SSE2FPArith{opc, resultReg, arg1, arg2}, stream, printReg) = ( case opc of SSE2Move => stream "\tSSE2FPMove\t" | SSE2Comp => stream "\tSSE2FPComp\t" | SSE2Add => stream "\tSSE2FPAdd\t" | SSE2Sub => stream "\tSSE2FPSub\t" | SSE2Mul => stream "\tSSE2FPMul\t" | SSE2Div => stream "\tSSE2FPDiv\t" | SSE2Xor => stream "\tSSE2FPXor\t" | SSE2And => stream "\tSSE2FPAnd\t" | SSE2MoveSingle => stream "\tSSE2FPMoveSingle\t" | SSE2DoubleToFloat => stream "\tSSE2FPDoubleToFloat\t"; printReg(arg1, stream); stream ","; printArg(arg2, stream, printReg); stream " => "; printReg(resultReg, stream) ) fun printAbstractReg(PReg i, stream) = stream("R" ^ Int.toString i) (* Print a basic block. *) fun printBlock (printItem, stream) (blockNo, BasicBlock{block, flow, ...}) = ( (* Put a label on all but the first. *) if blockNo <> 0 then stream("L" ^ Int.toString blockNo ^ ":") else (); List.app (fn icode => (printICode(icode, stream, printItem); stream "\n")) block; case flow of Unconditional l => stream("\tJump\tL" ^ Int.toString l ^ "\n") | Conditional {condition, trueJump, falseJump, ...} => ( case condition of JO => stream "\tJumpOverflow\t" | JNO => stream "\tJumpNoOverflow\t" | JE => stream "\tJumpEqual\t" | JNE => stream "\tJumpNotEqual\t" | JL => stream "\tJumpLessSigned\t" | JGE => stream "\tJumpGeqSigned\t" | JLE => stream "\tJumpLeqSigned\t" | JG => stream "\tJumpGrtSigned\t" | JB => stream "\tJumpLessUnsigned\t" | JNB => stream "\tJumpGeqUnsigned\t" | JNA => stream "\tJumpLeqUnsigned\t" | JA => stream "\tJumpGrtUnsigned\t" | JP => stream "\tJumpParitySet" | JNP => stream "\tJumpParityClear\t"; stream(concat["L", Int.toString trueJump, " else L", Int.toString falseJump, "\n"]) ) | ExitCode => () | IndexedBr _ => () | SetHandler{handler, continue} => stream(concat["\tSetHandler\tH", Int.toString handler, "\n", "\tJump\tL", Int.toString continue, "\n"]) | UnconditionalHandle handler => stream("\tJump\tH" ^ Int.toString handler ^ "\n") | ConditionalHandle{handler, continue} => stream(concat["\tJump\tL", Int.toString continue, " or H", Int.toString handler, "\n"]) ) in fun printICodeAbstract(blockVec, stream) = Vector.appi(printBlock(printAbstractReg, stream)) blockVec end (* We frequently just want to know the register. *) fun indexRegister NoMemIndex = NONE | indexRegister (MemIndex1 r) = SOME r | indexRegister (MemIndex2 r) = SOME r | indexRegister (MemIndex4 r) = SOME r | indexRegister (MemIndex8 r) = SOME r structure Sharing = struct type genReg = genReg and argument = argument and memoryIndex = memoryIndex and x86ICode = x86ICode and branchOps = branchOps and reg = reg and preg = preg and destinations = destinations and controlFlow = controlFlow and basicBlock = basicBlock and stackLocn = stackLocn and regProperty = regProperty and callKinds = callKinds and arithOp = arithOp and shiftType = shiftType and repOps = repOps and fpOps = fpOps and fpUnaryOps = fpUnaryOps and sse2Operations = sse2Operations and ccRef = ccRef end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86AllocateRegisters.ML0000644000175000017500000011336313204034553024670 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86AllocateRegisters( structure ICODE: ICodeSig structure IDENTIFY: X86IDENTIFYREFSSIG structure CONFLICTSETS: X86GETCONFLICTSETSIG structure INTSET: INTSETSIG sharing ICODE.Sharing = IDENTIFY.Sharing = CONFLICTSETS.Sharing = INTSET ): X86ALLOCATEREGISTERSSIG = struct open ICODE open IDENTIFY open CONFLICTSETS open INTSET open Address exception InternalError = Misc.InternalError val generalRegisters = List.map GenReg (if isX64 then [r14, r13, r12, r11, r10, r9, r8, edi, esi, edx, ecx, ebx, eax] else [edi, esi, edx, ecx, ebx, eax]) val floatingPtRegisters = case fpMode of FPModeSSE2 => List.map XMMReg [xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0] (* We can't include fp7 because we need one spare. *) (* For the moment we only have FP0 here. There are problems with using the others because we need to ensure the stack is empty if we call any non-ML function and we don't currently manage it properly. *) | FPModeX87 => List.map FPReg [fp0(*, fp1, fp2, fp3, fp4, fp5, fp6*)] datatype allocateResult = AllocateSuccess of reg vector | AllocateFailure of intSet list fun allocateRegisters{blocks, regStates, regProps, ...} = let val maxPRegs = Vector.length regStates and numBlocks = Vector.length blocks (* Hint values. The idea of hints is that by using a hinted register we may avoid an unnecessary move instruction. realHints is set when a pseudo-register is going to be loaded from a specific register e.g. a register argument, or moved into one e.g. ecx for a shift. friends is set to the other pseudo-registers that may be associated with the pseudo-register. E.g. the argument and destination of an arithmetic operation where choosing the same register for each may avoid a move. *) val realHints = Array.array(maxPRegs, NONE: reg option) (* Sources and destinations. These indicate the registers that are the sources and destinations of the indexing register and are used as hints. If a register has been allocated for a source or destination we may be able to reuse it. *) val sourceRegs = Array.array(maxPRegs, []: int list) and destinationRegs = Array.array(maxPRegs, []: int list) local (* Turn cached locations into register arguments. *) fun decache(StackLocation{cache=SOME r, ...}) = RegisterArgument r | decache(MemoryLocation{cache=SOME r, ...}) = RegisterArgument r | decache arg = arg fun addRealHint(r, reg) = case Array.sub(realHints, r) of NONE => Array.update(realHints, r, SOME reg) | SOME _ => () fun addSourceAndDestinationHint{src, dst} = let val {conflicts, ...} = Vector.sub(regStates, src) in (* If they conflict we can't add them. *) if member(dst, conflicts) then () else let val currentDests = Array.sub(destinationRegs, src) val currentSources = Array.sub(sourceRegs, dst) in if List.exists(fn i => i=dst) currentDests then () else Array.update(destinationRegs, src, dst :: currentDests); if List.exists(fn i => i=src) currentSources then () else Array.update(sourceRegs, dst, src :: currentSources) end end in (* Add the hints to steer the register allocation. The idea is to avoid moves between registers by getting values into the appropriate register in advance. *) fun addHints{instr=LoadArgument{source, dest=PReg dreg, ...}, ...} = ( case decache source of RegisterArgument(PReg sreg) => addSourceAndDestinationHint {src=sreg, dst=dreg} | _ => () ) | addHints{instr=StoreArgument{ source, kind, ... }, ...} = ( case (decache source, kind, isX64) of (* Special case for byte register on X86/32 *) (RegisterArgument(PReg sReg), MoveByte, false) => addRealHint(sReg, GenReg ecx) | _ => () ) | addHints{instr=BeginFunction{regArgs, ...}, ...} = List.app (fn (PReg pr, reg) => addRealHint(pr, reg)) regArgs | addHints{instr=TailRecursiveCall{regArgs, ...}, ...} = List.app (fn (arg, reg) => case decache arg of RegisterArgument(PReg pr) => addRealHint(pr, reg) | _ => ()) regArgs | addHints{instr=FunctionCall{regArgs, ...}, ...} = List.app (fn (arg, reg) => case decache arg of RegisterArgument(PReg pr) => addRealHint(pr, reg) | _ => ()) regArgs | addHints{instr=InitialiseMem{size=PReg sReg, addr=PReg aReg, init=PReg iReg}, ...} = (addRealHint(aReg, GenReg edi); addRealHint(iReg, GenReg eax); addRealHint(sReg, GenReg ecx)) | addHints{instr=RaiseExceptionPacket{ packetReg=PReg preg }, ...} = addRealHint(preg, GenReg eax) | addHints{instr=BeginHandler{packetReg=PReg pReg, workReg=_}, ...} = (* The exception packet is in rax. *) addRealHint(pReg, GenReg eax) | addHints{instr=ReturnResultFromFunction { resultReg=PReg resReg, ... }, ...} = addRealHint(resReg, GenReg eax) | addHints{instr=ArithmeticFunction{oper=SUB, resultReg=PReg resReg, operand1=PReg op1Reg, ...}, ...} = (* Can only be one way round. *) addSourceAndDestinationHint {dst=resReg, src=op1Reg} | addHints{instr=ArithmeticFunction{resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...} = (addSourceAndDestinationHint {dst=resReg, src=op1Reg}; addSourceAndDestinationHint {dst=resReg, src=op2Reg}) | addHints{instr=CopyToCache{source=PReg sreg, dest=PReg dreg, ...}, ...} = addSourceAndDestinationHint {src=sreg, dst=dreg} | addHints{instr=UntagValue{source=PReg sReg, dest=PReg dReg, ...}, ...} = addSourceAndDestinationHint{src=sReg, dst=dReg} | addHints{instr=ShiftOperation{resultReg=PReg resReg, operand=PReg operReg, shiftAmount=IntegerConstant _, ...}, ...} = addSourceAndDestinationHint{dst=resReg, src=operReg} | addHints{instr=ShiftOperation{resultReg=PReg resReg, operand=PReg operReg, shiftAmount=RegisterArgument(PReg shiftReg), ...}, ...} = (addSourceAndDestinationHint{dst=resReg, src=operReg}; addRealHint(shiftReg, GenReg ecx)) | addHints{instr=Multiplication{resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...} = (addSourceAndDestinationHint{dst=resReg, src=op1Reg}; addSourceAndDestinationHint{dst=resReg, src=op2Reg}) | addHints{instr=Division{dividend=PReg regDivid, quotient=PReg regQuot, remainder=PReg regRem, ...}, ...} = (addRealHint(regDivid, GenReg eax); addRealHint(regQuot, GenReg eax); addRealHint(regRem, GenReg edx)) | addHints{instr=CompareByteVectors{vec1Addr=PReg v1Reg, vec2Addr=PReg v2Reg, length=PReg lReg, ...}, ...} = (addRealHint(v1Reg, GenReg esi); addRealHint(v2Reg, GenReg edi); addRealHint(lReg, GenReg ecx)) | addHints{instr=BlockMove{srcAddr=PReg sReg, destAddr=PReg dReg, length=PReg lReg, ...}, ...} = (addRealHint(sReg, GenReg esi); addRealHint(dReg, GenReg edi); addRealHint(lReg, GenReg ecx)) | addHints{instr=X87FPGetCondition{dest=PReg dReg, ...}, ...} = addRealHint(dReg, GenReg eax) | addHints{instr=X87FPArith{resultReg=PReg resReg, arg1=PReg op1Reg, ...}, ...} = addSourceAndDestinationHint{dst=resReg, src=op1Reg} | addHints{instr=X87FPUnaryOps{dest=PReg resReg, source=PReg op1Reg, ...}, ...} = addSourceAndDestinationHint{dst=resReg, src=op1Reg} | addHints{instr=SSE2FPArith{resultReg=PReg resReg, arg1=PReg op1Reg, ...}, ...} = addSourceAndDestinationHint{dst=resReg, src=op1Reg} | addHints _ = () end val allocatedRegs = Array.array(maxPRegs, NONE: reg option) val failures = ref []: intSet list ref (* Find a real register for a preg. 1. If a register is already allocated use that. 2. Try the "preferred" register if one has been given. 3. Try the realHints value if there is one. 4. See if there is a "friend" that has an appropriate register 5. Look at all the registers and find one. *) fun findRegister(r, pref, regSet) = case Array.sub(allocatedRegs, r) of SOME reg => reg | NONE => let val {conflicts, realConflicts, ...} = Vector.sub(regStates, r) (* Find the registers we've already allocated that may conflict. *) val conflictingRegs = List.mapPartial(fn i => Array.sub(allocatedRegs, i)) (setToList conflicts) @ realConflicts fun isFree aReg = not (List.exists(fn i => i=aReg) conflictingRegs) fun tryAReg NONE = NONE | tryAReg (somePref as SOME prefReg) = if isFree prefReg then (Array.update(allocatedRegs, r, somePref); somePref) else NONE fun findAReg [] = ( (* This failed. We're going to have to spill something. *) failures := conflicts :: ! failures; hd regSet (* Return a register to satisfy everything. *) ) | findAReg (reg::regs) = if isFree reg then (Array.update(allocatedRegs, r, SOME reg); reg) else findAReg regs (* Search the sources and destinations to see if a register has already been allocated or there is a hint. *) fun findAFriend([], [], _) = NONE | findAFriend(aDest :: otherDests, sources, alreadySeen) = let val possReg = case Array.sub(allocatedRegs, aDest) of v as SOME _ => tryAReg v | NONE => tryAReg(Array.sub(realHints, aDest)) in case possReg of reg as SOME _ => reg | NONE => let (* Add the destinations of the destinations to the list if they don't conflict and haven't been seen. *) fun newFriend f = not(List.exists (fn n => n=f) alreadySeen) andalso not(member(f, conflicts)) val fOfF = List.filter newFriend (Array.sub(destinationRegs, aDest)) in findAFriend(otherDests @ fOfF, sources, aDest :: alreadySeen) end end | findAFriend([], aSrc :: otherSrcs, alreadySeen) = let val possReg = case Array.sub(allocatedRegs, aSrc) of v as SOME _ => tryAReg v | NONE => tryAReg(Array.sub(realHints, aSrc)) in case possReg of reg as SOME _ => reg | NONE => let (* Add the sources of the sources to the list if they don't conflict and haven't been seen. *) fun newFriend f = not(List.exists (fn n => n=f) alreadySeen) andalso not(member(f, conflicts)) val fOfF = List.filter newFriend (Array.sub(sourceRegs, aSrc)) in findAFriend([], otherSrcs @ fOfF, aSrc :: alreadySeen) end end (* See if there is a friend that has a register already or a hint. Friends are registers that don't conflict and can possibly avoid an extra move. *) (* fun findAFriend([], _) = NONE | findAFriend(friend :: tail, old) = let val possReg = case Array.sub(allocatedRegs, friend) of v as SOME _ => tryAReg v | NONE => tryAReg(Array.sub(realHints, friend)) in case possReg of reg as SOME _ => reg | NONE => let (* Add a friend of a friend to the list if we haven't already seen it and it doesn't conflict. *) fun newFriend f = not(List.exists (fn n => n=f) old) andalso not(List.exists (fn n => n=f) conflicts) val fOfF = List.filter newFriend (Array.sub(friends, friend)) in findAFriend(tail @ fOfF, friend :: old) end end*) in case tryAReg pref of SOME r => r | NONE => ( case tryAReg (Array.sub(realHints, r)) of SOME r => r | NONE => ( case findAFriend(Array.sub(destinationRegs, r), Array.sub(sourceRegs, r), []) of SOME r => r (* Look through the registers to find one that's free. *) | NONE => findAReg regSet ) ) end fun allocateRegister args = ignore(findRegister args) fun allocateGeneralReg r = allocateRegister(r, NONE, generalRegisters) and allocateFloatReg r = allocateRegister(r, NONE, floatingPtRegisters) fun allocateArgument(RegisterArgument(PReg r), regSet) = allocateRegister(r, NONE, regSet) | allocateArgument(MemoryLocation{base=PReg bReg, index, cache=NONE, ...}, _) = (allocateGeneralReg bReg; allocateArgIndex index) (* Unfortunately we still have to allocate a register for the base even if we're going to use the cache. That's because the conflict sets are based on the assumption that the registers are allocated at the last occurrence (first when working from the end back) and it uses getInstructionRegisters which in turn uses argRegs which returns both the base and the cache. GetConflictSets could use a different version but we also have to take account of save registers in e.g. AllocateMemoryOperation. If we don't allocate a register because it's not needed at some point it shouldn't be allocated for the save set. *) | allocateArgument(MemoryLocation{cache=SOME(PReg r), base=PReg bReg, index, ...}, regSet) = (allocateGeneralReg bReg; allocateArgIndex index; allocateRegister(r, NONE, regSet)) | allocateArgument(StackLocation{cache=SOME(PReg r), ...}, regSet) = allocateRegister(r, NONE, regSet) | allocateArgument _ = () and allocateArgGeneral arg = allocateArgument(arg, generalRegisters) and allocateArgFloat arg = allocateArgument(arg, floatingPtRegisters) and allocateArgIndex NoMemIndex = () | allocateArgIndex(MemIndex1(PReg r)) = allocateGeneralReg r | allocateArgIndex(MemIndex2(PReg r)) = allocateGeneralReg r | allocateArgIndex(MemIndex4(PReg r)) = allocateGeneralReg r | allocateArgIndex(MemIndex8(PReg r)) = allocateGeneralReg r (* Return the register part of a cached item. We must still, unfortunately, ensure that a register is allocated for base registers because we're assuming that a register is allocated on the last occurrence and this might be it. *) fun decache(StackLocation{cache=SOME r, ...}) = RegisterArgument r | decache(MemoryLocation{cache=SOME r, base=PReg bReg, ...}) = (allocateGeneralReg bReg; RegisterArgument r) | decache arg = arg val allocateFindRegister = findRegister fun registerAllocate({instr=LoadArgument{source, dest=PReg dreg, kind}, ...}) = let val regSet = case kind of MoveFloat => floatingPtRegisters | MoveDouble => floatingPtRegisters | _ => generalRegisters val realDestReg = findRegister(dreg, NONE, regSet) in case decache source of RegisterArgument(PReg sreg) => (* Register to register move. Try to use the same register for the source as the destination to eliminate the instruction. *) allocateRegister(sreg, SOME realDestReg, regSet) | source => allocateArgument(source, regSet) end | registerAllocate({instr=StoreArgument{ source, base=PReg bReg, index, kind, ... }, ...}) = ( case (decache source, kind) of (RegisterArgument(PReg sReg), MoveByte) => if isX64 then (allocateArgGeneral source; allocateGeneralReg bReg; allocateArgIndex index) else (* This is complicated on X86/32. We can't use edi or esi for the store registers. Instead we reserve ecx (see special case in "identify") and use that if we have to. *) ( allocateRegister(sReg, SOME(GenReg ecx), generalRegisters); allocateGeneralReg bReg; allocateArgIndex index ) | _ => let val regSet = case kind of MoveFloat => floatingPtRegisters | MoveDouble => floatingPtRegisters | _ => generalRegisters in allocateArgument(source, regSet); allocateGeneralReg bReg; allocateArgIndex index end ) | registerAllocate{instr=LoadMemReg { dest=PReg pr, ...}, ...} = allocateGeneralReg pr | registerAllocate{instr=BeginFunction{regArgs, ...}, ...} = (* The register arguments will have been allocated to registers if they are used but if they're not we have to do that now. *) List.app (fn (PReg pr, rr) => allocateRegister(pr, SOME rr, generalRegisters)) regArgs | registerAllocate({instr=TailRecursiveCall{regArgs=oRegArgs, stackArgs=oStackArgs, workReg=PReg wReg, ...}, ...}) = let val regArgs = List.map (fn (arg, reg) => (decache arg, reg)) oRegArgs and stackArgs = List.map(fn {src, stack } => {src=decache src, stack=stack}) oStackArgs in allocateGeneralReg wReg; List.app (allocateArgGeneral o #src) stackArgs; (* We've already hinted the arguments. *) List.app (allocateArgGeneral o #1) regArgs end | registerAllocate({instr=FunctionCall{regArgs=oRegArgs, stackArgs=oStackArgs, dest=PReg dReg, saveRegs, ...}, ...}) = let val regArgs = List.map (fn (arg, reg) => (decache arg, reg)) oRegArgs and stackArgs = List.map decache oStackArgs in List.app(fn (PReg r) => allocateGeneralReg r) saveRegs; (* Result will be in rax. *) allocateRegister(dReg, SOME(GenReg eax), generalRegisters); List.app allocateArgGeneral stackArgs; (* We've already hinted the arguments. *) List.app (allocateArgGeneral o #1) regArgs end | registerAllocate({instr=AllocateMemoryOperation{ dest=PReg dReg, saveRegs, ...}, ...}) = ( List.app(fn (PReg r) => allocateGeneralReg r) saveRegs; allocateGeneralReg dReg ) | registerAllocate({instr=AllocateMemoryVariable{size=PReg sReg, dest=PReg dReg, saveRegs}, ...}) = ( List.app(fn (PReg r) => allocateGeneralReg r) saveRegs; allocateGeneralReg dReg; allocateGeneralReg sReg ) | registerAllocate({instr=InitialiseMem{size=PReg sReg, addr=PReg aReg, init=PReg iReg}, ...}) = ( (* We are going to use rep stosl/q to set the memory. That requires the length to be in ecx, the initialiser to be in eax and the destination to be edi. *) allocateRegister(aReg, SOME(GenReg edi), generalRegisters); allocateRegister(iReg, SOME(GenReg eax), generalRegisters); allocateRegister(sReg, SOME(GenReg ecx), generalRegisters) ) | registerAllocate{instr=InitialisationComplete, ...} = () | registerAllocate({instr=JumpLoop{regArgs, stackArgs, checkInterrupt, workReg}, ...}) = ( case workReg of SOME(PReg r) => allocateGeneralReg r | NONE => (); List.app (fn (src, _, _) => allocateArgGeneral src) stackArgs; List.app (fn (a, PReg r) => (allocateArgGeneral a; allocateGeneralReg r)) regArgs; case checkInterrupt of SOME regs => List.app(fn PReg r => allocateGeneralReg r) regs | NONE => () ) | registerAllocate({instr=RaiseExceptionPacket{ packetReg=PReg preg }, ...}) = (* The argument must be put into rax. *) allocateRegister(preg, SOME(GenReg eax), generalRegisters) | registerAllocate{instr=ReserveContainer _, ...} = () | registerAllocate({instr=IndexedCaseOperation{testReg=PReg tReg, workReg=PReg wReg}, ...}) = ( allocateRegister(tReg, NONE, generalRegisters); allocateRegister(wReg, NONE, generalRegisters) ) | registerAllocate({instr=LockMutable{addr=PReg pr}, ...}) = allocateRegister(pr, NONE, generalRegisters) | registerAllocate({instr=WordComparison{ arg1=PReg arg1Reg, arg2, ... }, ...}) = ( allocateRegister(arg1Reg, NONE, generalRegisters); allocateArgGeneral arg2 ) (* Set up an exception handler. *) | registerAllocate({instr=PushExceptionHandler{workReg=PReg hReg}, ...}) = allocateGeneralReg hReg (* Pop an exception handler at the end of a handled section. Executed if no exception has been raised. This removes items from the stack. *) | registerAllocate({instr=PopExceptionHandler{workReg=PReg wReg, ...}, ...}) = allocateGeneralReg wReg (* Start of a handler. Sets the address associated with PushExceptionHandler and provides a register for the packet.*) | registerAllocate({instr=BeginHandler{packetReg=PReg pReg, workReg=PReg wReg}, ...}) = ( (* The exception packet is in rax. *) allocateRegister(pReg, SOME(GenReg eax), generalRegisters); allocateGeneralReg wReg ) | registerAllocate({instr=ReturnResultFromFunction { resultReg=PReg resReg, ... }, ...}) = allocateRegister(resReg, SOME(GenReg eax), generalRegisters) | registerAllocate{instr=ArithmeticFunction{oper=SUB, resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...} = (* Subtraction - this is special because it can only be done one way round. The first argument must be in a register. *) let val realDestReg = findRegister(resReg, NONE, generalRegisters) (* Try to put the argument into the same register as the result. *) in allocateRegister(op1Reg, SOME realDestReg, generalRegisters); allocateArgGeneral operand2 end | registerAllocate({instr=ArithmeticFunction{resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...}) = (* Arithmetic operation with both arguments as registers. These operations are all symmetric so we can try to put either argument into the result reg and then do the operation on the other arg. *) let val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(op1Reg, SOME realDestReg, generalRegisters); allocateRegister(op2Reg, SOME realDestReg, generalRegisters) end | registerAllocate({instr=ArithmeticFunction{resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...}) = (* Arithmetic operation with the first argument in a register and the second a constant or memory location. *) let val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(op1Reg, SOME realDestReg, generalRegisters); allocateArgGeneral operand2 end | registerAllocate({instr=TestTagBit{arg, ...}, ...}) = allocateArgGeneral arg | registerAllocate({instr=PushValue {arg, ...}, ...}) = allocateArgGeneral arg | registerAllocate({instr=CopyToCache{source=PReg sreg, dest=PReg dreg, kind}, ...}) = let val regSet = case kind of MoveFloat => floatingPtRegisters | MoveDouble => floatingPtRegisters | _ => generalRegisters val realDestReg = findRegister(dreg, NONE, regSet) in (* Get the source register using the current destination as a preference. *) allocateRegister(sreg, SOME realDestReg, regSet) end | registerAllocate({instr=ResetStackPtr _, ...}) = () | registerAllocate({instr=StoreToStack{ source, ... }, ...}) = allocateArgument(source, generalRegisters) | registerAllocate({instr=TagValue{source=PReg srcReg, dest=PReg dReg, ...}, ...}) = ( (* Since we're using LEA to tag there's no cost to using a different reg. *) allocateRegister(dReg, NONE, generalRegisters); allocateRegister(srcReg, NONE, generalRegisters) ) | registerAllocate({instr=UntagValue{source=PReg sReg, dest=PReg dReg, cache, ...}, ...}) = let val regResult = findRegister(dReg, NONE, generalRegisters) val () = case cache of SOME(PReg cReg) => allocateRegister(cReg, SOME regResult, generalRegisters) | NONE => () in allocateRegister(sReg, SOME regResult, generalRegisters) end | registerAllocate({instr=LoadEffectiveAddress{base, index, dest=PReg dReg, ...}, ...}) = ( allocateGeneralReg dReg; case base of SOME(PReg br) => allocateGeneralReg br | NONE => (); allocateArgIndex index ) | registerAllocate({instr=ShiftOperation{resultReg=PReg resReg, operand=PReg operReg, shiftAmount=IntegerConstant _, ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(operReg, SOME realDestReg, generalRegisters) end | registerAllocate({instr=ShiftOperation{resultReg=PReg resReg, operand=PReg operReg, shiftAmount=RegisterArgument(PReg shiftReg), ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(shiftReg, SOME(GenReg ecx), generalRegisters); allocateRegister(operReg, SOME realDestReg, generalRegisters) end | registerAllocate{instr=ShiftOperation _, ...} = raise InternalError "registerAllocate - ShiftOperation" | registerAllocate({instr= Multiplication{resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...}) = let (* Treat exactly the same as ArithmeticFunction. *) val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(op1Reg, SOME realDestReg, generalRegisters); allocateRegister(op2Reg, SOME realDestReg, generalRegisters) end | registerAllocate({instr= Multiplication{resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, generalRegisters) in allocateRegister(op1Reg, SOME realDestReg, generalRegisters); allocateArgGeneral operand2 end | registerAllocate({instr=Division{dividend=PReg regDivid, divisor, quotient=PReg regQuot, remainder=PReg regRem, ...}, ...}) = ( (* Division is specific as to the registers. The dividend must be eax, quotient is eax and the remainder is edx. *) allocateRegister(regDivid, SOME(GenReg eax), generalRegisters); allocateRegister(regQuot, SOME(GenReg eax), generalRegisters); allocateRegister(regRem, SOME(GenReg edx), generalRegisters); allocateArgGeneral divisor ) | registerAllocate({instr=AtomicExchangeAndAdd{base=PReg bReg, source=PReg sReg}, ...}) = (allocateGeneralReg sReg; allocateGeneralReg bReg) | registerAllocate({instr=BoxValue{boxKind, source=PReg sReg, dest=PReg dReg, saveRegs}, ...}) = ( List.app(fn (PReg r) => allocateGeneralReg r) saveRegs; case boxKind of BoxLargeWord => allocateGeneralReg sReg | BoxX87 => allocateFloatReg sReg | BoxSSE2 => allocateFloatReg sReg; allocateGeneralReg dReg ) | registerAllocate({instr=CompareByteVectors{vec1Addr=PReg v1Reg, vec2Addr=PReg v2Reg, length=PReg lReg, ...}, ...}) = ( allocateRegister(v1Reg, SOME(GenReg esi), generalRegisters); allocateRegister(v2Reg, SOME(GenReg edi), generalRegisters); allocateRegister(lReg, SOME(GenReg ecx), generalRegisters) ) | registerAllocate({instr=BlockMove{srcAddr=PReg sReg, destAddr=PReg dReg, length=PReg lReg, ...}, ...}) = ( allocateRegister(sReg, SOME(GenReg esi), generalRegisters); allocateRegister(dReg, SOME(GenReg edi), generalRegisters); allocateRegister(lReg, SOME(GenReg ecx), generalRegisters) ) | registerAllocate{instr=X87Compare{arg1=PReg arg1Reg, arg2, ...}, ...} = (allocateRegister(arg1Reg, NONE, floatingPtRegisters); allocateArgFloat arg2) | registerAllocate{instr=SSE2Compare{arg1=PReg arg1Reg, arg2, ...}, ...} = (allocateRegister(arg1Reg, NONE, floatingPtRegisters); allocateArgFloat arg2) | registerAllocate({instr=X87FPGetCondition{dest=PReg dReg, ...}, ...}) = (* We can only use RAX here. *) allocateRegister(dReg, SOME(GenReg eax), generalRegisters) | registerAllocate({instr=X87FPArith{resultReg=PReg resReg, arg1=PReg op1Reg, arg2, ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, floatingPtRegisters) in allocateRegister(op1Reg, SOME realDestReg, floatingPtRegisters); allocateArgFloat arg2 end | registerAllocate({instr=X87FPUnaryOps{dest=PReg resReg, source=PReg op1Reg, ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, floatingPtRegisters) in allocateRegister(op1Reg, SOME realDestReg, floatingPtRegisters) end | registerAllocate({instr=X87Float{dest=PReg resReg, source}, ...}) = (allocateArgGeneral source; allocateRegister(resReg, NONE, floatingPtRegisters)) | registerAllocate({instr=SSE2Float{dest=PReg resReg, source}, ...}) = (allocateArgGeneral source; allocateRegister(resReg, NONE, floatingPtRegisters)) | registerAllocate({instr=SSE2FPArith{resultReg=PReg resReg, arg1=PReg op1Reg, arg2, ...}, ...}) = let val realDestReg = findRegister(resReg, NONE, floatingPtRegisters) in allocateRegister(op1Reg, SOME realDestReg, floatingPtRegisters); allocateArgFloat arg2 end (* Depth-first scan. *) val visited = Array.array(numBlocks, false) fun processBlocks blockNo = if Array.sub(visited, blockNo) then () (* Done or currently being done. *) else let val () = Array.update(visited, blockNo, true) val ExtendedBasicBlock { flow, block, passThrough, exports, ...} = Vector.sub(blocks, blockNo) (* Add the hints for this block before the actual allocation of registers. *) val _ = List.app addHints block val () = (* Process the dependencies first. *) case flow of ExitCode => () | Unconditional m => processBlocks m | Conditional {trueJump, falseJump, ...} => (processBlocks trueJump; processBlocks falseJump) | IndexedBr cases => List.app processBlocks cases | SetHandler{ handler, continue } => (processBlocks handler; processBlocks continue) | UnconditionalHandle _ => () | ConditionalHandle { continue, ...} => processBlocks continue (* Now this block. *) local (* We assume that anything used later will have been allocated a register. This is generally true except for a loop where the use may occur earlier. *) val exported = setToList passThrough @ setToList exports fun findAReg r = case Vector.sub(regProps, r) of RegPropStack _ => () | _ => ignore(allocateFindRegister(r, NONE, generalRegisters)) in val () = List.app findAReg exported end in List.foldr(fn (c, ()) => registerAllocate c) () block end in processBlocks 0; (* If the failures list is empty we succeeded. *) case !failures of [] => (* Return the allocation vector. If a register isn't used replace it with rax. *) AllocateSuccess(Vector.tabulate(maxPRegs, fn i => getOpt(Array.sub(allocatedRegs, i), GenReg eax))) (* Else we'll have to spill something. *) | l => AllocateFailure l end structure Sharing = struct type intSet = intSet and extendedBasicBlock = extendedBasicBlock and regProperty = regProperty and reg = reg and allocateResult = allocateResult end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86CodetreeToICode.ML0000644000175000017500000056006113204034553024216 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86CodetreeToICode( structure BACKENDTREE: BackendIntermediateCodeSig structure ICODE: ICodeSig structure DEBUG: DEBUGSIG structure X86FOREIGN: FOREIGNCALLSIG structure ICODETRANSFORM: X86ICODETRANSFORMSIG sharing ICODE.Sharing = ICODETRANSFORM.Sharing ): GENCODESIG = struct open BACKENDTREE open Address open ICODE exception InternalError = Misc.InternalError val argRegs = List.map GenReg (if isX64 then [eax, ebx, r8, r9, r10] else [eax, ebx]) val numArgRegs = List.length argRegs (* tag a short constant *) fun tag c = 2 * c + 1 (* shift a short constant, but don't set tag bit *) fun semitag c = 2 * c (* Reverse a list and append the second. This is used a lot when converting between the reverse and forward list versions. e.g. codeToICode and codeToICodeRev *) fun revApp([], l) = l | revApp(hd :: tl, l) = revApp(tl, hd :: l) datatype blockStruct = BlockSimple of x86ICode | BlockExit of x86ICode | BlockLabel of int | BlockFlow of controlFlow | BlockBegin of (preg * reg) list | BlockRaiseAndHandle of x86ICode * int | BlockOptionalHandle of {call: x86ICode, handler: int, label: int } local open RunCall val F_mutable_bytes = Word.fromLargeWord(Word8.toLargeWord(Word8.orb (F_mutable, F_bytes))) fun makeRealConst l = let val r = allocateByteMemory(0wx8 div bytesPerWord, F_mutable_bytes) fun setBytes([], _) = () | setBytes(hd::tl, n) = (storeByte(r, n, hd); setBytes(tl, n+0wx1)) val () = setBytes(l, 0w0) val () = clearMutableBit r in r end in (* These are floating point constants used to change and mask the sign bit. *) val realSignBit: machineWord = makeRealConst [0wx00, 0wx00, 0wx00, 0wx00, 0wx00, 0wx00, 0wx00, 0wx80] and realAbsMask: machineWord = makeRealConst [0wxff, 0wxff, 0wxff, 0wxff, 0wxff, 0wxff, 0wxff, 0wx7f] end (* Check that a large-word constant looks right and get the value as a large int*) fun largeWordConstant value = if isShort value then raise InternalError "largeWordConstant: invalid" else let val addr = toAddress value in if length addr <> 0w1 orelse flags addr <> F_bytes then raise InternalError "largeWordConstant: invalid" else (); LargeWord.toLargeInt(RunCall.unsafeCast addr) end fun codeFunctionToX86({body, localCount, name, argTypes, closure, ...}:bicLambdaForm, debugSwitches, closureOpt) = let (* Pseudo-registers are allocated sequentially and the properties added to the list. *) val pregCounter = ref 0 val pregPropList = ref [] fun newPReg() = let val regNo = !pregCounter before pregCounter := !pregCounter + 1 val () = pregPropList := RegPropGeneral :: !pregPropList in PReg regNo end and newUReg() = let val regNo = !pregCounter before pregCounter := !pregCounter + 1 val () = pregPropList := RegPropUntagged :: !pregPropList in PReg regNo end and newStackLoc size = let val regNo = !pregCounter before pregCounter := !pregCounter + 1 val () = pregPropList := RegPropStack size :: !pregPropList in StackLoc{size=size, rno=regNo} end datatype locationValue = NoLocation | PregLocation of preg | ContainerLocation of { container: stackLocn, stackOffset: int } val locToPregArray = Array.array(localCount, NoLocation) val labelCounter = ref 1 (* Start at 1. Zero is used for the root. *) fun newLabel() = !labelCounter before labelCounter := !labelCounter + 1 val ccRefCounter = ref 0 fun newCCRef() = CcRef(!ccRefCounter) before ccRefCounter := !ccRefCounter + 1 val returnAddressEntry = newStackLoc 1 local val numFunctionArgs = List.length argTypes val maxRegArgs = List.length argRegs fun createArg i = {stackOffset=numFunctionArgs-(i+maxRegArgs), stackReg = newStackLoc 1 } in val (argRegsUsed, currentStackArgs) = if numFunctionArgs >= maxRegArgs then (argRegs, numFunctionArgs - List.length argRegs) else (List.take(argRegs, numFunctionArgs), 0) val stackArgVector = Vector.tabulate(currentStackArgs, createArg) end val stackArguments = Vector.foldr(fn ({stackReg, ...}, l) => stackReg :: l) [] stackArgVector (* Pseudo-regs for the result, the closure and the args that were passed in real regs. *) val resultTarget = newPReg() val closureRegAddr = newPReg() val argPRegs = map (fn _ => newPReg()) argRegsUsed local val clReg = case closure of [] => [] | _ => [(closureRegAddr, GenReg edx)] val argRegs = ListPair.zip (argPRegs, argRegsUsed) in val beginInstruction = BlockBegin(clReg @ argRegs) end (* The return instruction. This can be added on to various tails but there is always one at the end anyway. *) fun returnInstruction({stackPtr, ...}, target, tailCode) = BlockExit(ReturnResultFromFunction{resultReg=target, numStackArgs=currentStackArgs}) :: (if stackPtr <> 0 then BlockSimple(ResetStackPtr{numWords=stackPtr, preserveCC=false}) :: tailCode else tailCode) fun constantAsArgument value = if isShort value then IntegerConstant(tag(Word.toLargeIntX(toShort value))) else AddressConstant value (* Create the branch condition from the test, isSigned and jumpOn values. (In)equality tests are the same for signed and unsigned values. *) local open BuiltIns in fun testAsBranch(TestEqual, _, true) = JE | testAsBranch(TestEqual, _, false) = JNE (* Signed tests *) | testAsBranch(TestLess, true, true) = JL | testAsBranch(TestLess, true, false) = JGE | testAsBranch(TestLessEqual, true, true) = JLE | testAsBranch(TestLessEqual, true, false) = JG | testAsBranch(TestGreater, true, true) = JG | testAsBranch(TestGreater, true, false) = JLE | testAsBranch(TestGreaterEqual, true, true) = JGE | testAsBranch(TestGreaterEqual, true, false) = JL (* Unsigned tests *) | testAsBranch(TestLess, false, true) = JB | testAsBranch(TestLess, false, false) = JNB | testAsBranch(TestLessEqual, false, true) = JNA | testAsBranch(TestLessEqual, false, false) = JA | testAsBranch(TestGreater, false, true) = JA | testAsBranch(TestGreater, false, false) = JNA | testAsBranch(TestGreaterEqual, false, true) = JNB | testAsBranch(TestGreaterEqual, false, false) = JB (* Switch the direction of a test if we turn c op x into x op c. *) fun leftRightTest TestEqual = TestEqual | leftRightTest TestLess = TestGreater | leftRightTest TestLessEqual = TestGreaterEqual | leftRightTest TestGreater = TestLess | leftRightTest TestGreaterEqual = TestLessEqual end (* Generally we have an offset in words and no index register. *) fun wordOffsetAddress(offset, baseReg: preg): argument = MemoryLocation{offset=offset*wordSize, base=baseReg, index=NoMemIndex, cache=NONE} (* The large-word operations all work on the value within the box pointed at by the register. We generate all large-word operations using this even where the X86 instruction requires a register. This allows the next level to optimise cases of cascaded instructions and avoid creating boxes for intermediate values. *) fun wordAt reg = wordOffsetAddress(0, reg) (* This controls what codeAsArgument returns. Different instructions have different requirements. If an option is set to false the value is instead loaded into a new preg. "const32s" means that it will fit into 32-bits. Any constant satisfies that on X86/32 but on the X86/64 we don't allow addresses because we can't be sure whether they will fit or not. *) type allowedArgument = { anyConstant: bool, const32s: bool, memAddr: bool, existingPreg: bool } val allowInMemMove = (* We can move a 32-bit constant into memory but not a long constant. *) { anyConstant=false, const32s=true, memAddr=false, existingPreg=true } and allowInPReg = { anyConstant=false, const32s=false, memAddr=false, existingPreg=true } (* AllowDefer can be used to ensure that any side-effects are done before something else but otherwise we only evaluate afterwards. *) and allowDefer = { anyConstant=true, const32s=true, memAddr=true, existingPreg=true } datatype destination = SpecificPReg of preg | NoResult | Allowed of allowedArgument (* Context type. *) type context = { loopArgs: (preg list * int * int) option, stackPtr: int, currHandler: int option } (* If a preg has been provided, use that, otherwise generate a new one. *) fun asTarget(SpecificPReg preg) = preg | asTarget NoResult = newPReg() | asTarget(Allowed _) = newPReg() fun moveIfNotAllowed(NoResult, code, arg) = (code, arg, false) | moveIfNotAllowed(Allowed{anyConstant=true, ...}, code, arg as AddressConstant _) = (code, arg, false) | moveIfNotAllowed(Allowed{anyConstant=true, ...}, code, arg as IntegerConstant _) = (code, arg, false) | moveIfNotAllowed(dest as Allowed{const32s=true, ...}, code, arg as IntegerConstant value) = (* This is allowed if the value is within 32-bits *) if is32bit value then (code, arg, false) else moveToTarget(dest, code, arg) | moveIfNotAllowed(dest as Allowed{const32s=true, ...}, code, arg as AddressConstant _) = if not isX64 then (code, arg, false) else moveToTarget(dest, code, arg) | moveIfNotAllowed(Allowed{existingPreg=true, ...}, code, arg as RegisterArgument(PReg _)) = (code, arg, false) | moveIfNotAllowed(Allowed{memAddr=true, ...}, code, arg as MemoryLocation _) = (code, arg, false) | moveIfNotAllowed(dest, code, arg) = moveToTarget(dest, code, arg) and moveToTarget(dest, code, arg) = let val target = asTarget dest in (code @ [BlockSimple(LoadArgument{source=arg, dest=target, kind=MoveWord})], RegisterArgument target, false) end fun moveIfNotAllowedRev(NoResult, code, arg) = (code, arg, false) | moveIfNotAllowedRev(Allowed{anyConstant=true, ...}, code, arg as AddressConstant _) = (code, arg, false) | moveIfNotAllowedRev(Allowed{anyConstant=true, ...}, code, arg as IntegerConstant _) = (code, arg, false) | moveIfNotAllowedRev(dest as Allowed{const32s=true, ...}, code, arg as IntegerConstant value) = (* This is allowed if the value is within 32-bits *) if is32bit value then (code, arg, false) else moveToTargetRev(dest, code, arg) | moveIfNotAllowedRev(dest as Allowed{const32s=true, ...}, code, arg as AddressConstant _) = if not isX64 then (code, arg, false) else moveToTargetRev(dest, code, arg) | moveIfNotAllowedRev(Allowed{existingPreg=true, ...}, code, arg as RegisterArgument(PReg _)) = (code, arg, false) | moveIfNotAllowedRev(Allowed{memAddr=true, ...}, code, arg as MemoryLocation _) = (code, arg, false) | moveIfNotAllowedRev(dest, code, arg) = moveToTargetRev(dest, code, arg) and moveToTargetRev(dest, code, arg) = let val target = asTarget dest in (BlockSimple(LoadArgument{source=arg, dest=target, kind=MoveWord}) :: code, RegisterArgument target, false) end (* Use a move if there's no offset or index. We could use an add if there's no index. *) and loadAddress{base, offset=0, index=NoMemIndex, dest} = LoadArgument{source=RegisterArgument base, dest=dest, kind=MoveWord} | loadAddress{base, offset, index, dest} = LoadEffectiveAddress{base=SOME base, offset=offset, dest=dest, index=index} and codeToICodeTarget(instr, context: context, isTail, target) = (* This is really for backwards compatibility. *) let val (code, _, _) = codeToICode(instr, context, isTail, SpecificPReg target) in code end and codeToPReg(instr, context) = let (* Many instructions require an argument in a register. If it's already in a register use that rather than creating a new one. *) val (code, result, _) = codeToICode(instr, context, false, Allowed allowInPReg) val preg = case result of RegisterArgument pr => pr | _ => raise InternalError "codeToPReg" in (code, preg) end and codeToPRegRev(instr, context, tailCode) = let (* Many instructions require an argument in a register. If it's already in a register use that rather than creating a new one. *) val (code, result, _) = codeToICodeRev(instr, context, false, Allowed allowInPReg, tailCode) val preg = case result of RegisterArgument pr => pr | _ => raise InternalError "codeToPRegRev" in (code, preg) end and codeToICode(instr, context, isTail, destination) = let val (code, dest, haveExited) = codeToICodeRev(instr, context, isTail, destination, []) in (List.rev code, dest, haveExited) end (* Main function to turn the codetree into ICode. Optimisation is generally left to later passes. This does detect tail recursion. This builds the result up in reverse order. There was an allocation hotspot in loadFields in the BICTuple case which was eliminated by building the list in reverse and then reversing the result. It seems better to build the list in reverse generally but for the moment there are too many special cases to do everything. *) and codeToICodeRev(BICNewenv (bindings, exp), context: context as {stackPtr=initialSp, ...} , isTail, destination, tailCode) = let (* Process a list of bindings. We need to accumulate the space used by any containers and reset the stack pointer at the end if necessary. *) fun doBindings([], context, tailCode) = (tailCode, context) | doBindings(BICDeclar{value=BICExtract(BICLoadLocal l), addr, ...} :: decs, context, tailCode) = let (* Giving a new name to an existing entry. This should have been removed at a higher level but it doesn't always seem to be. In particular we must treat this specially if it's a container. *) val original = Array.sub(locToPregArray, l) val () = Array.update(locToPregArray, addr, original) in doBindings(decs, context, tailCode) end | doBindings(BICDeclar{value, addr, ...} :: decs, context, tailCode) = let val (code, dest) = codeToPRegRev(value, context, tailCode) val () = Array.update(locToPregArray, addr, PregLocation dest) in doBindings(decs, context, code) end | doBindings(BICRecDecs [{lambda, addr, ...}] :: decs, context, tailCode) = (* We shouldn't have single entries in RecDecs but it seems to occur at the moment. *) let val dest = newPReg() val (code, _, _) = codeToICodeRev(BICLambda lambda, context, false, SpecificPReg dest, tailCode) val () = Array.update(locToPregArray, addr, PregLocation dest) in doBindings(decs, context, code) end | doBindings(BICRecDecs recDecs :: decs, context, tailCode) = let val destRegs = map (fn _ => newPReg()) recDecs (* First build the closures as mutable cells containing zeros. Set the entry in the address table to the register containing the address. *) fun makeClosure({lambda={closure, ...}, addr, ...}, dest, c) = let val () = Array.update(locToPregArray, addr, PregLocation dest) val sizeClosure = List.length closure + 1 fun clear n = if n = sizeClosure then [BlockSimple(AllocateMemoryOperation{size=sizeClosure, flags=Address.F_mutable, dest=dest, saveRegs=[]})] else (clear (n+1) @ [BlockSimple( StoreArgument{source=IntegerConstant(tag 0), base=dest, offset=n*wordSize, index=NoMemIndex, kind=MoveWord, isMutable=false})]) in c @ clear 0 @ [BlockSimple InitialisationComplete] end val allocClosures = ListPair.foldlEq makeClosure [] (recDecs, destRegs) fun setClosure({lambda as {closure, ...}, ...}, dest, l) = let val codeAddr = codeFunctionToX86(lambda, debugSwitches, NONE) (* Basically the same as tuple except we load the address of the closure we've made. It's complicated because StoreArgument to MemoryLocation assumes that the top of the stack is the address of the allocated memory and the items below are the values to store. *) val dstCopy = newPReg() fun loadFields([], _) = [BlockSimple(LoadArgument{source=RegisterArgument dest, dest=dstCopy, kind=MoveWord})] | loadFields(f :: rest, n) = let val (code, source, _) = codeToICode(f, context, false, Allowed allowInMemMove) val restAndAlloc = loadFields(rest, n+1) val storeValue = [BlockSimple(StoreArgument{ source=source, base=dstCopy, offset=n*wordSize, index=NoMemIndex, kind=MoveWord, isMutable=false })] in code @ restAndAlloc @ storeValue end val setFields = loadFields(BICConstnt(toMachineWord codeAddr, []) :: map BICExtract closure, 0) in l @ setFields @ [BlockSimple(LockMutable{addr=dest})] end val setClosures = ListPair.foldlEq setClosure [] (recDecs, destRegs) val code = List.rev(allocClosures @ setClosures) in doBindings(decs, context, code @ tailCode) end | doBindings(BICNullBinding exp :: decs, context, tailCode) = let val (code, _, _) = codeToICodeRev(exp, context, false, NoResult, tailCode) (* And discard result. *) in doBindings(decs, context, code) end | doBindings(BICDecContainer{ addr, size } :: decs, {loopArgs, stackPtr, currHandler}, tailCode) = let val containerReg = newStackLoc size val () = Array.update(locToPregArray, addr, ContainerLocation{container=containerReg, stackOffset=stackPtr+size}) in doBindings(decs, {loopArgs=loopArgs, stackPtr=stackPtr+size, currHandler=currHandler}, BlockSimple(ReserveContainer{size=size, container=containerReg}) :: tailCode) end val (codeBindings, resContext as {stackPtr=finalSp, ...}) = doBindings(bindings, context, tailCode) (* If we have had a container we'll need to reset the stack *) in if initialSp <> finalSp then let val _ = finalSp >= initialSp orelse raise InternalError "codeToICode - stack ptr" val bodyReg = newPReg() and resultReg = asTarget destination val (codeExp, result, haveExited) = codeToICodeRev(exp, resContext, isTail, SpecificPReg bodyReg, codeBindings) val afterAdjustSp = if haveExited then codeExp else BlockSimple(LoadArgument{source=result, dest=resultReg, kind=MoveWord}) :: BlockSimple(ResetStackPtr{numWords=finalSp-initialSp, preserveCC=false}) :: codeExp in (afterAdjustSp, RegisterArgument resultReg, haveExited) end else codeToICodeRev(exp, resContext, isTail, destination, codeBindings) end | codeToICodeRev(BICConstnt(value, _), _, _, destination, tailCode) = moveIfNotAllowedRev(destination, tailCode, constantAsArgument value) | codeToICodeRev(BICExtract(BICLoadLocal l), {stackPtr, ...}, _, destination, tailCode) = ( case Array.sub(locToPregArray, l) of NoLocation => raise InternalError "codeToICodeRev - local unset" | PregLocation pr => moveIfNotAllowedRev(destination, tailCode, RegisterArgument pr) | ContainerLocation{container, stackOffset} => (* This always returns a ContainerAddr whatever the "allowed". *) (tailCode, ContainerAddr{container=container, stackOffset=stackPtr-stackOffset}, false) ) | codeToICodeRev(BICExtract(BICLoadArgument a), {stackPtr, ...}, _, destination, tailCode) = if a < numArgRegs then (* It was originally in a register. It's now in a preg. *) moveIfNotAllowedRev(destination, tailCode, RegisterArgument(List.nth(argPRegs, a))) else (* Pushed before call. *) let val target = asTarget destination val {stackOffset, stackReg} = Vector.sub(stackArgVector, a-numArgRegs) in (BlockSimple(LoadArgument{ source=StackLocation{wordOffset=stackOffset+stackPtr, container=stackReg, field=0, cache=NONE}, dest=target, kind=MoveWord}) :: tailCode, RegisterArgument target, false) end | codeToICodeRev(BICExtract(BICLoadClosure c), _, _, destination, tailCode) = ( if c >= List.length closure then raise InternalError "BICExtract: closure" else (); (* N.B. We need to add one to the closure entry because zero is the code address. *) moveIfNotAllowedRev(destination, tailCode, wordOffsetAddress(c+1, closureRegAddr)) ) | codeToICodeRev(BICExtract BICLoadRecursive, _, _, destination, tailCode) = (* If the closure is empty we must use the constant. We can't guarantee that the caller will actually load the closure register if it knows the closure is empty. *) moveIfNotAllowedRev(destination, tailCode, case closure of [] => AddressConstant(toMachineWord(valOf closureOpt)) | _ => RegisterArgument closureRegAddr) | codeToICodeRev(BICField{base, offset}, context as { stackPtr, ...}, _, destination, tailCode) = let val (codeBase, baseEntry, _) = codeToICodeRev(base, context, false, Allowed allowInPReg, tailCode) in (* If this is a local container we extract the field. *) case baseEntry of RegisterArgument baseR => moveIfNotAllowedRev(destination, codeBase, wordOffsetAddress(offset, baseR)) | ContainerAddr{container, stackOffset} => let val target = asTarget destination val finalOffset = stackPtr-stackOffset+offset val _ = finalOffset >= 0 orelse raise InternalError "offset" in (BlockSimple(LoadArgument{ source=StackLocation{wordOffset=finalOffset, container=container, field=offset, cache=NONE}, dest=target, kind=MoveWord}) :: tailCode, RegisterArgument target, false) end | _ => raise InternalError "codeToICodeRev-BICField" end | codeToICodeRev(BICEval{function, argList, ...}, context as { currHandler, ...}, isTail, destination, tailCode) = let val target = asTarget destination (* Create pregs for the closure and each argument. *) val clPReg = newPReg() (* If we have a constant closure we can go directly to the entry point. If the closure is a single word we don't need to load the closure register. *) val (functionCode, closureEntry, callKind) = case function of BICConstnt(addr, _) => let val addrAsAddr = toAddress addr (* If this is a closure we're still compiling or if it's an address of an io function (at the moment) we can't get the code address. However if this is directly recursive we can use the recursive convention. *) val isRecursive = case closureOpt of SOME a => wordEq(toMachineWord a, addr) | NONE => false in if isRecursive then (tailCode, [], Recursive) else if flags addrAsAddr <> Address.F_words then (BlockSimple(LoadArgument{source=AddressConstant addr, dest=clPReg, kind=MoveWord}) :: tailCode, [(RegisterArgument clPReg, GenReg edx)], FullCall) else let val addrLength = length addrAsAddr val _ = addrLength >= 0w1 orelse raise InternalError "BICEval address" val codeAddr = loadWord(addrAsAddr, 0w0) val _ = isCode (toAddress codeAddr) orelse raise InternalError "BICEval address not code" in if addrLength = 0w1 then (tailCode, [], ConstantCode codeAddr) else (BlockSimple(LoadArgument{source=AddressConstant addr, dest=clPReg, kind=MoveWord}) :: tailCode, [(RegisterArgument clPReg, GenReg edx)], ConstantCode codeAddr) end end | BICExtract BICLoadRecursive => ( (* If the closure is empty we don't need to load rdx *) case closure of [] => (tailCode, [], Recursive) | _ => (BlockSimple(LoadArgument {source=RegisterArgument closureRegAddr, dest=clPReg, kind=MoveWord}) :: tailCode, [(RegisterArgument clPReg, GenReg edx)], Recursive) ) | function => (* General case. *) (#1 (codeToICodeRev(function, context, false, SpecificPReg clPReg, tailCode)), [(RegisterArgument clPReg, GenReg edx)], FullCall) (* Optimise arguments. We have to be careful with tail-recursive functions because they need to save any stack arguments that could be overwritten. This is complicated because we overwrite the stack before loading the register arguments. In some circumstances it could be safe but for the moment leave it. This should be safe in the new code-transform but not the old codeICode. Currently we don't allow memory arguments at all. There's the potential for problems later. Memory arguments could possibly lead to aliasing of the stack if the memory actually refers to a container on the stack. That would mess up the code that ensures that stack arguments are stored in the right order. *) (* We don't allow long constants in stack arguments to a tail-recursive call because we may use a memory move to set them. *) val allowInStackArg = Allowed {anyConstant=not isTail, const32s=true, memAddr=false, existingPreg=not isTail } and allowInRegArg = Allowed {anyConstant=true, const32s=true, memAddr=false, existingPreg=not isTail } (* Load the first arguments into registers and the rest to the stack. *) fun loadArgs ([], _, tailCode) = (tailCode, [], []) | loadArgs ((arg, _) :: args, argReg::argRegs, tailCode) = let (* Register argument. *) val (c, r, _) = codeToICodeRev(arg, context, false, allowInRegArg, tailCode) val (code, regArgs, stackArgs) = loadArgs(args, argRegs, c) in (code, (r, argReg) :: regArgs, stackArgs) end | loadArgs ((arg, _) :: args, [], tailCode) = let (* Stack argument. *) val (c, r, _) = codeToICodeRev(arg, context, false, allowInStackArg, tailCode) val (code, regArgs, stackArgs) = loadArgs(args, [], c) in (code, regArgs, r :: stackArgs) end val (codeArgs, regArgs, stackArgs) = loadArgs(argList, argRegs, functionCode) val callInstr = if isTail then let val {stackPtr, ...} = context (* The number of arguments currently on the stack. *) val currentStackArgCount = currentStackArgs val newStackArgCount = List.length stackArgs (* The offset of the first argument or the return address if there are no stack arguments. N.B. We actually have currentStackArgCount+1 items on the stack including the return address. Offsets can be negative. *) val stackOffset = stackPtr val firstArgumentAddr = currentStackArgCount fun makeStackArgs([], _) = [] | makeStackArgs(arg::args, offset) = {src=arg, stack=offset} :: makeStackArgs(args, offset-1) val stackArgs = makeStackArgs(stackArgs, firstArgumentAddr) (* The stack adjustment needed to compensate for any items that have been pushed and the differences in the number of arguments. May be positive or negative. This is also the destination address of the return address so when we enter the new function the return address will be the first item on the stack. *) val stackAdjust = firstArgumentAddr - newStackArgCount (* Add an entry for the return address to the stack arguments. *) val returnEntry = {src=StackLocation{wordOffset=stackPtr, container=returnAddressEntry, field=0, cache=NONE}, stack=stackAdjust} (* Because we're storing into the stack we may be overwriting values we want. If the source of any value is a stack location below the current stack pointer we load it except in the special case where the destination is the same as the source (which is often the case with the return address). *) local fun loadArgs [] = ([], []) | loadArgs (arg :: rest) = let val (loadCode, loadedArgs) = loadArgs rest in case arg of {src as StackLocation{wordOffset, ...}, stack} => if wordOffset = stack+stackOffset (* Same location *) orelse stack+stackOffset < 0 (* Storing above current top of stack *) orelse stackOffset+wordOffset > ~ stackAdjust (* Above the last argument *) then (loadCode, arg :: loadedArgs) else let val preg = newPReg() in (BlockSimple(LoadArgument{source=src, dest=preg, kind=MoveWord}) :: loadCode, {src=RegisterArgument preg, stack=stack} :: loadedArgs) end | _ => (loadCode, arg :: loadedArgs) end in val (loadStackArgs, loadedStackArgs) = loadArgs(returnEntry :: stackArgs) end in BlockExit(TailRecursiveCall{regArgs=closureEntry @ regArgs, stackArgs=loadedStackArgs, stackAdjust = stackAdjust, currStackSize=stackOffset, callKind=callKind, workReg=newPReg()}) :: loadStackArgs end else let val call = FunctionCall{regArgs=closureEntry @ regArgs, stackArgs=stackArgs, dest=target, callKind=callKind, saveRegs=[]} in case currHandler of NONE => [BlockSimple call] | SOME h => [BlockOptionalHandle{call=call, handler=h, label=newLabel()}] end in (callInstr @ codeArgs, RegisterArgument target, isTail (* We've exited if this was a tail jump *)) end | codeToICodeRev(BICGetThreadId, _, _, destination, tailCode) = (* Get the ID of the current thread. *) let val target = asTarget destination in (BlockSimple(LoadMemReg{offset=memRegThreadSelf, dest=target}) :: tailCode, RegisterArgument target, false) end | codeToICodeRev(BICUnary instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeUnary(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICBinary instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeBinary(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICArbitrary{oper, shortCond, arg1, arg2, longCall}, context, _, destination, tailCode) = let val startLong = newLabel() and resultLabel = newLabel() val target = asTarget destination val condResult = newPReg() (* Overflow check - if there's an overflow jump to the long precision case. *) fun jumpOnOverflow ccRef = let val noOverFlow = newLabel() in [BlockFlow(Conditional{ ccRef=ccRef, condition=JO, trueJump=startLong, falseJump=noOverFlow }), BlockLabel noOverFlow] end val (longCode, _, _) = codeToICode(longCall, context, false, SpecificPReg condResult) (* We could use a tail jump here if this is a tail. *) val (code, dest, haveExited) = ( (* Test the tag bits and skip to the long case if either is clear. *) List.rev(codeConditionRev(shortCond, context, false, startLong, [])) @ (* Try evaluating as fixed precision and jump if we get an overflow. *) codeFixedPrecisionArith(oper, arg1, arg2, context, condResult, jumpOnOverflow) @ (* If we haven't had an overflow jump to the result. *) [BlockFlow(Unconditional resultLabel), (* If we need to use the full long-precision call we come here. *) BlockLabel startLong] @ longCode @ [BlockLabel resultLabel, BlockSimple(LoadArgument{source=RegisterArgument condResult, dest=target, kind=MoveWord})], RegisterArgument target, false) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICAllocateWordMemory instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeAllocate(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICLambda(lambda as { closure = [], ...}), _, _, destination, tailCode) = (* Empty closure - create a constant closure for any recursive calls. *) let val closure = Address.allocWordData(0w1, Word8.orb (F_mutable, F_words), Address.toMachineWord 0w0) val codeAddr = codeFunctionToX86(lambda, debugSwitches, SOME closure) open Address in assignWord(closure, 0w0, toMachineWord codeAddr); lock closure; moveIfNotAllowedRev(destination, tailCode, AddressConstant(toMachineWord closure)) end | codeToICodeRev(BICLambda(lambda as { closure, ...}), context, isTail, destination, tailCode) = (* Non-empty closure. Ignore stack closure option at the moment. *) let val codeAddr = codeFunctionToX86(lambda, debugSwitches, NONE) in (* Treat it as a tuple with the code as the first field. *) codeToICodeRev(BICTuple(BICConstnt(toMachineWord codeAddr, []) :: map BICExtract closure), context, isTail, destination, tailCode) end | codeToICodeRev(BICCond(test, thenPt, elsePt), context, isTail, NoResult, tailCode) = let (* If we don't want the result but are only evaluating for side-effects we may be able to optimise special cases. This was easier in the forward case but for now we don't bother and leave it to the lower levels. *) val startElse = newLabel() and skipElse = newLabel() val codeTest = codeConditionRev(test, context, false, startElse, tailCode) val (codeThen, _, _) = codeToICodeRev(thenPt, context, isTail, NoResult, codeTest) val (codeElse, _, _) = codeToICodeRev(elsePt, context, isTail, NoResult, BlockLabel startElse :: BlockFlow(Unconditional skipElse) :: codeThen) in (BlockLabel skipElse :: codeElse, (* Unit result *) IntegerConstant(tag 0), false) end | codeToICodeRev(BICCond(test, thenPt, elsePt), context, isTail, destination, tailCode) = let (* Because we may push the result onto the stack we have to create a new preg to hold the result and then copy that to the final result. *) (* If this is a tail each arm will exit separately and neither will return a result. *) val target = asTarget destination val condResult = newPReg() val thenTarget = if isTail then newPReg() else condResult val startElse = newLabel() val testCode = codeConditionRev(test, context, false, startElse, tailCode) (* Put the result in the target register. *) val (thenCode, _, thenExited) = codeToICodeRev(thenPt, context, isTail, SpecificPReg thenTarget, testCode) (* Add a jump round the else-part except that if this is a tail we return. The then-part could have exited e.g. with a raise or a loop. *) val (exitThen, thenLabel, elseTarget) = if thenExited then (thenCode, [], target (* Can use original target. *)) else if isTail then (returnInstruction(context, thenTarget, thenCode), [], newPReg()) else let val skipElse = newLabel() in (BlockFlow(Unconditional skipElse) :: thenCode, [BlockSimple(LoadArgument{source=RegisterArgument condResult, dest=target, kind=MoveWord}), BlockLabel skipElse], condResult) end val (elseCode, _, elseExited) = codeToICodeRev(elsePt, context, isTail, SpecificPReg elseTarget, BlockLabel startElse :: exitThen) (* Add a return to the else-part if necessary so we will always exit on a tail. *) val exitElse = if isTail andalso not elseExited then returnInstruction(context, elseTarget, elseCode) else elseCode in (thenLabel @ exitElse, RegisterArgument target, isTail orelse thenExited andalso elseExited) end | codeToICodeRev(BICCase { cases, test, default, isExhaustive, firstIndex}, context, isTail, destination, tailCode) = let (* We have to create a new preg for the result in case we need to push it to the stack. *) val targetReg = newPReg() local val initialTestReg = newPReg() val (testCode, _, _) = codeToICodeRev(test, context, false, SpecificPReg initialTestReg, tailCode) (* Subtract the minimum value so the value we're testing is always in the range of (tagged) 0 to the maximum. It is possible to adjust the value when computing the index but that can lead to overflows during compilation if the minimum is very large or small. We can ignore overflow and allow values to wrap round. *) in val (testCode, testReg) = if firstIndex = 0w0 then (testCode, initialTestReg) else let val newTestReg = newPReg() val subtract = BlockSimple(ArithmeticFunction{oper=SUB, resultReg=newTestReg, operand1=initialTestReg, operand2=IntegerConstant(semitag(Word.toLargeInt firstIndex)), ccRef=newCCRef()}) in (subtract :: testCode, newTestReg) end end val workReg = newPReg() (* Unless this is exhaustive we need to add a range check. *) val (rangeCheck, extraDefaults) = if isExhaustive then (testCode, []) else let val defLab1 = newLabel() val tReg1 = newPReg() val ccRef1 = newCCRef() (* Since we've subtracted any minimum we only have to check whether the value is greater (unsigned) than the maximum. *) val numberOfCases = LargeInt.fromInt(List.length cases) val continueLab = newLabel() val testCode2 = BlockLabel continueLab :: BlockFlow(Conditional{ccRef=ccRef1, condition=JNB, trueJump=defLab1, falseJump=continueLab}) :: BlockSimple(WordComparison{arg1=tReg1, arg2=IntegerConstant(tag numberOfCases), ccRef=ccRef1}) :: BlockSimple(LoadArgument {source=RegisterArgument testReg, dest=tReg1, kind=MoveWord}) :: testCode in (testCode2, [defLab1]) end (* Make a label for each item in the list. *) val codeLabels = map (fn _ => newLabel()) cases (* Create an exit label in case it's needed. *) val labelForExit = if isTail then ~1 (* Illegal label. *) else newLabel() (* Generate the code for each of the cases and the default. We need to put an unconditional branch after each to skip the other cases. TODO: This could be replaced by "returns" if we're at the tail. *) fun codeCases (SOME c :: otherCases, startLabel :: otherLabels, tailCode) = let val caseTarget = if isTail then newPReg() else targetReg (* Put in the case with a jump to the end of the sequence. *) val (codeThisCase, _, caseExited) = codeToICodeRev(c, context, isTail, SpecificPReg caseTarget, BlockLabel startLabel :: tailCode) val exitThisCase = if caseExited then codeThisCase else if isTail then returnInstruction(context, caseTarget, codeThisCase) else BlockFlow(Unconditional labelForExit) :: codeThisCase in codeCases(otherCases, otherLabels, exitThisCase) end | codeCases(NONE :: otherCases, _ :: otherLabels, tailCode) = codeCases(otherCases, otherLabels, tailCode) | codeCases ([], [], tailCode) = let (* We need to add labels for all the gaps we filled and also for a "default" label for the indexed-case instruction itself as well as any range checks. *) fun addDefault (startLabel, NONE, l) = BlockLabel startLabel :: l | addDefault (_, SOME _, l) = l fun asForward l = BlockLabel l val dLabs = map asForward extraDefaults @ tailCode val defLabels = ListPair.foldlEq addDefault dLabs (codeLabels, cases) val defaultTarget = if isTail then newPReg() else targetReg val (defaultCode, _, defaultExited) = codeToICodeRev(default, context, isTail, SpecificPReg defaultTarget, defLabels) in (* Put in the default. Because this is the last we don't need to jump round it. However if this is a tail and we haven't exited we put in a return. That way the case will always have exited if this is a tail. *) if isTail andalso not defaultExited then returnInstruction(context, defaultTarget, defaultCode) else defaultCode end | codeCases _ = raise InternalError "codeCases: mismatch" val codedCases = codeCases(cases, codeLabels, BlockFlow(IndexedBr codeLabels) :: BlockSimple(IndexedCaseOperation{testReg=testReg, workReg=workReg}) :: rangeCheck) (* We can now copy to the target. If we need to push the result this load will be converted into a push. *) val target = asTarget destination val copyToTarget = if isTail then codedCases else BlockSimple(LoadArgument{source=RegisterArgument targetReg, dest=target, kind=MoveWord}) :: BlockLabel labelForExit :: codedCases in (copyToTarget, RegisterArgument target, isTail (* We have always exited on a tail. *)) end | codeToICodeRev(BICBeginLoop {loop, arguments}, context as { stackPtr, currHandler, ...}, isTail, destination, tailCode) = let val target = asTarget destination fun codeArgs ([], tailCode) = ([], tailCode) | codeArgs (({value, addr}, _) :: rest, tailCode) = let val pr = newPReg() val () = Array.update(locToPregArray, addr, PregLocation pr) val (code, _, _) = codeToICodeRev(value, context, false, SpecificPReg pr, tailCode) val (pregs, othercode) = codeArgs(rest, code) in (pr::pregs, othercode) end val (loopRegs, argCode) = codeArgs(arguments, tailCode) val loopLabel = newLabel() val (loopBody, _, loopExited) = codeToICodeRev(loop, {loopArgs=SOME (loopRegs, loopLabel, stackPtr), stackPtr=stackPtr, currHandler=currHandler }, isTail, SpecificPReg target, BlockLabel loopLabel :: argCode) in (loopBody, RegisterArgument target, loopExited) end | codeToICodeRev(BICLoop args, context as {loopArgs=SOME (loopRegs, loopLabel, loopSp), stackPtr, currHandler, ...}, _, destination, tailCode) = let val target = asTarget destination (* Registers to receive the evaluated arguments. We can't put the values into the loop variables yet because the values could depend on the current values of the loop variables. *) val argPRegs = map(fn _ => newPReg()) args val codeArgs = ListPair.foldlEq(fn ((arg, _), pr, l) => #1 (codeToICodeRev(arg, context, false, SpecificPReg pr, l))) tailCode (args, argPRegs) val jumpArgs = ListPair.mapEq(fn (s, l) => (RegisterArgument s, l)) (argPRegs, loopRegs) (* If we've allocated a container in the loop we have to remove it before jumping back. *) val stackReset = if loopSp = stackPtr then codeArgs else BlockSimple(ResetStackPtr{numWords=stackPtr-loopSp, preserveCC=false}) :: codeArgs val jumpLoop = JumpLoop{regArgs=jumpArgs, stackArgs=[], checkInterrupt=SOME[], workReg=NONE} (* "checkInterrupt" could result in a Interrupt exception so we treat this like a function call. *) val code = case currHandler of NONE => BlockFlow(Unconditional loopLabel) :: BlockSimple jumpLoop :: stackReset | SOME h => BlockOptionalHandle{call=jumpLoop, handler=h, label=loopLabel} :: stackReset in (code, RegisterArgument target, true) end | codeToICodeRev(BICLoop _, {loopArgs=NONE, ...}, _, _, _) = raise InternalError "BICLoop without BICBeginLoop" | codeToICodeRev(BICRaise exc, context as { currHandler, ...}, _, destination, tailCode) = let val packetReg = newPReg() val (code, _, _) = codeToICodeRev(exc, context, false, SpecificPReg packetReg, tailCode) val raiseCode = RaiseExceptionPacket{packetReg=packetReg} val block = case currHandler of NONE => BlockExit raiseCode | SOME h => BlockRaiseAndHandle(raiseCode, h) in (block :: code, RegisterArgument(asTarget destination), true (* Always exits *)) end | codeToICodeRev(BICHandle{exp, handler, exPacketAddr}, context as { stackPtr, loopArgs, ... }, isTail, destination, tailCode) = let (* As with BICCond and BICCase we need to create a new register for the result in case we need to push it to the stack. *) val handleResult = newPReg() val handlerLab = newLabel() and startHandling = newLabel() val (bodyTarget, handlerTarget) = if isTail then (newPReg(), newPReg()) else (handleResult, handleResult) (* TODO: Even if we don't actually want a result we force one in here by using "asTarget". *) (* The expression cannot be treated as a tail because the handler has to be removed after. It may "exit" if it has raised an unconditional exception. If it has we mustn't generate a PopExceptionHandler because there won't be any result for resultReg. We need to add two words to the stack to account for the items pushed by PushExceptionHandler. We create an instruction to push the handler followed by a block fork to the start of the code and, potentially the handler, then a label to start the code that the handler is in effect for. *) val initialCode = BlockLabel startHandling :: BlockFlow(SetHandler{handler=handlerLab, continue=startHandling}) :: BlockSimple(PushExceptionHandler{workReg=newPReg()}) :: tailCode val (expCode, _, expExit) = codeToICodeRev(exp, {stackPtr=stackPtr+2, loopArgs=loopArgs, currHandler=SOME handlerLab}, false (* Not tail *), SpecificPReg bodyTarget, initialCode) (* If this is the tail we can replace the jump at the end of the handled code with returns. If the handler has exited we don't need a return there. Otherwise we need to add an unconditional jump to skip the handler. *) val (atExpEnd, skipExpLabel) = case (isTail, expExit) of (true, true) => (* Tail and exited. *) (expCode, NONE) | (true, false) => (* Tail and not exited. *) (returnInstruction(context, bodyTarget, BlockSimple(PopExceptionHandler{workReg=newPReg()}) :: expCode), NONE) | (false, true) => (* Not tail but exited. *) (expCode, NONE) | (false, false) => let val skipHandler = newLabel() in (BlockFlow(Unconditional skipHandler) :: BlockSimple(PopExceptionHandler{workReg=newPReg()}) :: expCode, SOME skipHandler) end (* Make a register to hold the exception packet and put eax into it. *) val packetAddr = newPReg() val () = Array.update(locToPregArray, exPacketAddr, PregLocation packetAddr) val (handleCode, _, handleExit) = codeToICodeRev(handler, context, isTail, SpecificPReg handlerTarget, BlockSimple(BeginHandler{workReg=newPReg(), packetReg=packetAddr}) :: BlockLabel handlerLab :: atExpEnd) val target = asTarget destination val afterHandler = case (isTail, handleExit) of (true, true) => (* Tail and exited. *) handleCode | (true, false) => (* Tail and not exited. *) returnInstruction(context, handlerTarget, handleCode) | (false, _) => (* Not tail. *) handleCode val addLabel = case skipExpLabel of SOME lab => BlockLabel lab:: afterHandler | NONE => afterHandler in (BlockSimple(LoadArgument{source=RegisterArgument handleResult, dest=target, kind=MoveWord}) :: addLabel, RegisterArgument target, isTail) end | codeToICodeRev(BICTuple fields, context, _, destination, tailCode) = let (* TODO: This is a relic of the old fall-back code-generator. It required the result of a tuple to be at the top of the stack. It should be changed. *) val target = asTarget destination (* Actually we want this. *) val memAddr = newPReg() fun loadFields([], n, tlCode) = BlockSimple(AllocateMemoryOperation{size=n, flags=0w0, dest=memAddr, saveRegs=[]}) :: tlCode | loadFields(f :: rest, n, tlCode) = let (* Defer the evaluation if possible. We may have a constant that we can't move directly but it's better to load it after the allocation otherwise we will have to push the register if we need to GC. *) val (code1, source1, _) = codeToICodeRev(f, context, false, Allowed allowDefer, tlCode) val restAndAlloc = loadFields(rest, n+1, code1) val (code2, source, _) = moveIfNotAllowedRev(Allowed allowInMemMove, restAndAlloc, source1) val storeValue = BlockSimple(StoreArgument{ source=source, offset=n*wordSize, base=memAddr, index=NoMemIndex, kind=MoveWord, isMutable=false}) in storeValue :: code2 end val code = BlockSimple InitialisationComplete :: BlockSimple(LoadArgument{source=RegisterArgument memAddr, dest=target, kind=MoveWord}) :: loadFields(fields, 0, tailCode) in (code, RegisterArgument target, false) end (* Copy the source tuple into the container. There are important special cases for both the source tuple and the container. If the source tuple is a BICTuple we have the fields and can store them without creating a tuple on the heap. If the destination is a local container we can store directly into the stack. *) | codeToICodeRev(BICSetContainer{container, tuple, filter}, context as {stackPtr, ...}, _, destination, tailCode) = let local fun createStore containerReg (source, destWord) = StoreArgument{source=source, offset=destWord*wordSize, base=containerReg, index=NoMemIndex, kind=MoveWord, isMutable=false} in val (codeContainer, storeInstr) = case container of BICExtract(BICLoadLocal l) => ( case Array.sub(locToPregArray, l) of NoLocation => raise InternalError "codeToICodeRev - local unset" | PregLocation pr => (tailCode, createStore pr) | ContainerLocation{container, stackOffset} => let fun storeToStack(source, destWord) = StoreToStack{source=source, container=container, field=destWord, stackOffset=stackPtr-stackOffset+destWord} in (tailCode, storeToStack) end ) | _ => let val containerTarget = newPReg() val (codeContainer, _, _) = codeToICodeRev(container, context, false, SpecificPReg containerTarget, tailCode) in (codeContainer, createStore containerTarget) end end val filterLength = BoolVector.length filter val code = case tuple of BICTuple cl => let (* In theory it's possible that the tuple could contain fields that are not used but nevertheless need to be evaluated for their side-effects. Create all the fields and push to the stack. *) fun codeField(arg, (regs, tailCode)) = let val (c, r, _) = codeToICodeRev(arg, context, false, Allowed allowInMemMove, tailCode) in (r :: regs, c) end val (pregsRev, codeFields) = List.foldl codeField ([], codeContainer) cl val pregs = List.rev pregsRev fun copyField(srcReg, (sourceWord, destWord, tailCode)) = if sourceWord < filterLength andalso BoolVector.sub(filter, sourceWord) then (sourceWord+1, destWord+1, BlockSimple(storeInstr(srcReg, destWord)) :: tailCode) else (sourceWord+1, destWord, tailCode) val (_, _, resultCode) = List.foldl copyField (0, 0, codeFields) pregs in resultCode end | tuple => let (* Copy a heap tuple. It is possible that this is another container in which case we must load the fields directly. We mustn't load its address and then copy because loading the address would be the last reference and might cause the container to be reused prematurely. *) val (codeTuple, loadField) = case tuple of BICExtract(BICLoadLocal l) => ( case Array.sub(locToPregArray, l) of NoLocation => raise InternalError "codeToICodeRev - local unset" | PregLocation pr => (codeContainer, fn sourceWord => wordOffsetAddress(sourceWord, pr)) | ContainerLocation{container, stackOffset} => let fun getAddr sourceWord = StackLocation{wordOffset=stackPtr-stackOffset+sourceWord, container=container, field=sourceWord, cache=NONE} in (codeContainer, getAddr) end ) | _ => let val tupleTarget = newPReg() val (codeTuple, _, _) = codeToICodeRev(tuple, context, false, SpecificPReg tupleTarget, codeContainer) fun loadField sourceWord = wordOffsetAddress(sourceWord, tupleTarget) in (codeTuple, loadField) end fun copyContainer(sourceWord, destWord, tailCode) = if sourceWord = filterLength then tailCode else if BoolVector.sub(filter, sourceWord) then let val loadReg = newPReg() val code = BlockSimple(storeInstr(RegisterArgument loadReg, destWord)) :: BlockSimple(LoadArgument{source=loadField sourceWord, dest=loadReg, kind=MoveWord}) :: tailCode in copyContainer(sourceWord+1, destWord+1, code) end else copyContainer(sourceWord+1, destWord, tailCode) in copyContainer(0, 0, codeTuple) end in moveIfNotAllowedRev(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeRev(instr as BICTagTest _, context, isTail, destination, tailCode) = (* Better handled as a conditional *) codeAsConditionalRev(instr, context, isTail, destination, tailCode) | codeToICodeRev(BICLoadOperation instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeLoad(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICStoreOperation instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeStore(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end | codeToICodeRev(BICBlockOperation (instr as {kind=BlockOpEqualByte, ...}), context, isTail, destination, tailCode) = codeAsConditionalRev(BICBlockOperation instr, context, isTail, destination, tailCode) | codeToICodeRev(BICBlockOperation instr, context, isTail, destination, tailCode) = let val (code, dest, haveExited) = codeToICodeBlock(instr, context, isTail, destination) in (revApp(code, tailCode), dest, haveExited) end and codeToICodeUnary({oper=BuiltIns.NotBoolean, arg1}, context, _, destination) = let (* TODO: If the argument is something that will be a conditional we would be better off generating a conditional here. *) val target = asTarget destination val ccRef = newCCRef() val (argCode, tReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(ArithmeticFunction{oper=XOR, resultReg=target, operand1=tReg, operand2=IntegerConstant(semitag 1), ccRef=ccRef})], RegisterArgument target, false) end | codeToICodeUnary(instr as {oper=BuiltIns.IsTaggedValue, ...}, context, isTail, destination) = codeAsConditional(BICUnary instr, context, isTail, destination) | codeToICodeUnary({oper=BuiltIns.MemoryCellLength, arg1}, context, _, destination) = let val target = asTarget destination val argReg1 = newPReg() and argReg2 = newPReg() and argReg3 = newPReg() and ccRef1 = newCCRef() and ccRef2 = newCCRef() and ccRef3 = newCCRef() (* Get the length of a memory cell (heap object). We need to mask out the top byte containing the flags and to tag the result. The mask is 56 bits on 64-bit which won't fit in an inline constant. Since we have to shift it anyway we might as well do this by shifts. *) val (argCode, addrReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(LoadArgument{source=wordOffsetAddress(~1, addrReg), dest=argReg1, kind=MoveWord}), BlockSimple(ShiftOperation{shift=SHL, resultReg=argReg2, operand=argReg1, shiftAmount=IntegerConstant 8, ccRef=ccRef1 }), BlockSimple(ShiftOperation{shift=SHR, resultReg=argReg3, operand=argReg2, shiftAmount=IntegerConstant 7 (* 8-tagshift*), ccRef=ccRef2 }), BlockSimple(ArithmeticFunction{oper=OR, resultReg=target, operand1=argReg3, operand2=IntegerConstant 1, ccRef=ccRef3})], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.MemoryCellFlags, arg1}, context, _, destination) = let val target = asTarget destination val argReg1 = newUReg() val (argCode, addrReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(LoadArgument{source=MemoryLocation{offset= ~1, base=addrReg, index=NoMemIndex, cache=NONE}, dest=argReg1, kind=MoveByte}), BlockSimple(TagValue{ source=argReg1, dest=target, isSigned=false })], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.ClearMutableFlag, arg1}, context, _, destination) = let val (argCode, addrReg) = codeToPReg(arg1, context) val code = argCode @ [BlockSimple(LockMutable{addr=addrReg})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeUnary({oper=BuiltIns.AtomicIncrement, arg1}, context, _, destination) = let val target = asTarget destination val incrReg = newUReg() val (argCode, addrReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(LoadArgument{source=IntegerConstant(semitag 1), dest=incrReg, kind=MoveWord}), BlockSimple(AtomicExchangeAndAdd{ base=addrReg, source=incrReg }), (* We want the result to be the new value but we've returned the old value. *) BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=incrReg, operand2=IntegerConstant(semitag 1), ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.AtomicDecrement, arg1}, context, _, destination) = let val target = asTarget destination val incrReg = newUReg() val (argCode, addrReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(LoadArgument{source=IntegerConstant(semitag ~1), dest=incrReg, kind=MoveWord}), BlockSimple(AtomicExchangeAndAdd{ base=addrReg, source=incrReg }), BlockSimple(ArithmeticFunction{oper=SUB, resultReg=target, operand1=incrReg, operand2=IntegerConstant(semitag 1), ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.AtomicReset, arg1}, context, _, destination) = let (* This is needed only for the interpreted version where we have a single real mutex to interlock atomic increment and decrement. We have to use the same mutex to interlock clearing a mutex. On the X86 we use hardware locking and the hardware guarantees that an assignment of a word will be atomic. *) val (argCode, addrReg) = codeToPReg(arg1, context) (* Store tagged 1 in the mutex. This is the unlocked value. *) val code = argCode @ [BlockSimple(StoreArgument{source=IntegerConstant(tag 1), base=addrReg, index=NoMemIndex, offset=0, kind=MoveWord, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeUnary({oper=BuiltIns.LongWordToTagged, arg1}, context, _, destination) = let (* This is exactly the same as StringLengthWord at the moment. TODO: introduce a new ICode entry so that the next stage can optimise longword operations. *) val target = asTarget destination val argReg1 = newUReg() val (argCode, addrReg) = codeToPReg(arg1, context) in (argCode @ [BlockSimple(LoadArgument{source=MemoryLocation{offset=0, base=addrReg, index=NoMemIndex, cache=NONE}, dest=argReg1, kind=MoveWord}), (* Is this signed or unsigned? *) BlockSimple(TagValue{ source=argReg1, dest=target, isSigned=false })], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.SignedToLongWord, arg1}, context, _, destination) = let val addrReg = newPReg() and untagArg = newUReg() val (argCode, argReg1) = codeToPReg(arg1, context) val code = argCode @ [BlockSimple(UntagValue{source=argReg1, dest=untagArg, isSigned=true, cache=NONE}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=untagArg, dest=addrReg, saveRegs=[]})] in moveIfNotAllowed(destination, code, RegisterArgument addrReg) end | codeToICodeUnary({oper=BuiltIns.UnsignedToLongWord, arg1}, context, _, destination) = let val addrReg = newPReg() and untagArg = newUReg() val (argCode, argReg1) = codeToPReg(arg1, context) val code = argCode @ [BlockSimple(UntagValue{source=argReg1, dest=untagArg, isSigned=false, cache=NONE}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=untagArg, dest=addrReg, saveRegs=[]})] in moveIfNotAllowed(destination, code, RegisterArgument addrReg) end | codeToICodeUnary({oper=BuiltIns.RealNeg, arg1}, context, _, destination) = let val target = asTarget destination val fpRegSrc = newUReg() and fpRegDest = newUReg() and sse2ConstReg = newUReg() (* The SSE2 code uses an SSE2 logical operation to flip the sign bit. This requires the values to be loaded into registers first because the logical operations require 128-bit operands. *) val (argCode, aReg1) = codeToPReg(arg1, context) val load = BlockSimple(LoadArgument{source=wordAt aReg1, dest=fpRegSrc, kind=MoveDouble}) val code = case fpMode of FPModeX87 => [BlockSimple(X87FPUnaryOps{ fpOp=FCHS, dest=fpRegDest, source=fpRegSrc})] | FPModeSSE2 => [BlockSimple(LoadArgument{source=AddressConstant realSignBit, dest=sse2ConstReg, kind=MoveDouble}), BlockSimple(SSE2FPArith{opc=SSE2Xor, resultReg=fpRegDest, arg1=fpRegSrc, arg2=RegisterArgument sse2ConstReg})] val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (argCode @ load :: code @ [BlockSimple(BoxValue{boxKind=boxFloat, source=fpRegDest, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.RealAbs, arg1}, context, _, destination) = let val target = asTarget destination val fpRegSrc = newUReg() and fpRegDest = newUReg() and sse2ConstReg = newUReg() val (argCode, aReg1) = codeToPReg(arg1, context) val load = BlockSimple(LoadArgument{source=wordAt aReg1, dest=fpRegSrc, kind=MoveDouble}) val code = case fpMode of FPModeX87 => [BlockSimple(X87FPUnaryOps{ fpOp=FABS, dest=fpRegDest, source=fpRegSrc})] | FPModeSSE2 => [BlockSimple(LoadArgument{source=AddressConstant realAbsMask, dest=sse2ConstReg, kind=MoveDouble}), BlockSimple(SSE2FPArith{opc=SSE2And, resultReg=fpRegDest, arg1=fpRegSrc, arg2=RegisterArgument sse2ConstReg})] val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (argCode @ load :: code @ [BlockSimple(BoxValue{boxKind=boxFloat, source=fpRegDest, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeUnary({oper=BuiltIns.FloatFixedInt, arg1}, context, _, destination) = let val target = asTarget destination val untagReg = newUReg() and fpReg = newUReg() val (argCode, aReg1) = codeToPReg(arg1, context) val floatOp = case fpMode of FPModeX87 => X87Float | FPModeSSE2 => SSE2Float val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (argCode @ [BlockSimple(UntagValue{source=aReg1, dest=untagReg, isSigned=true, cache=NONE}), BlockSimple(floatOp{ dest=fpReg, source=RegisterArgument untagReg}), BlockSimple(BoxValue{boxKind=boxFloat, source=fpReg, dest=target, saveRegs=[]})], RegisterArgument target, false) end and codeToICodeBinary(instr as {oper=BuiltIns.WordComparison _, ...}, context, isTail, destination) = codeAsConditional(BICBinary instr, context, isTail, destination) | codeToICodeBinary({oper=BuiltIns.FixedPrecisionArith oper, arg1, arg2}, context as {currHandler, ...}, _, destination) = let val target = asTarget destination fun checkOverflow ccRef = let val overFlowLab = newLabel() and noOverflowLab = newLabel() val packetReg = newPReg() val raiseCode = RaiseExceptionPacket{packetReg=packetReg} in [ BlockFlow(Conditional{ ccRef=ccRef, condition=JNO, trueJump=noOverflowLab, falseJump=overFlowLab }), BlockLabel overFlowLab, BlockSimple(LoadArgument{source=AddressConstant(toMachineWord(Overflow)), dest=packetReg, kind=MoveWord}), case currHandler of NONE => BlockExit raiseCode | SOME h => BlockRaiseAndHandle(raiseCode, h), BlockLabel noOverflowLab ] end in (codeFixedPrecisionArith(oper, arg1, arg2, context, target, checkOverflow), RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithAdd, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination (* If the argument is a constant we can subtract the tag beforehand. N.B. it is possible to have type-incorrect values in dead code. i.e. code that will never be executed because of a run-time check. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg1Code, aReg1) = codeToPReg(arg1, context) in (arg1Code @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg1, operand2=IntegerConstant constVal, ccRef = newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithAdd, arg1=BICConstnt(value, _), arg2}, context, _, destination) = let val target = asTarget destination (* If the argument is a constant we can subtract the tag beforehand. Check for short - see comment above. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg2Code, aReg2) = codeToPReg(arg2, context) in (arg2Code @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg2, operand2=IntegerConstant constVal, ccRef = newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithAdd, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) (* Use LEA to do the addition since we're not concerned with overflow. This is shorter than subtracting the tag and adding the values and also moves the result into the appropriate register. *) in (arg1Code @ arg2Code @ [BlockSimple(LoadEffectiveAddress{base=SOME aReg1, offset= ~1, index=MemIndex1 aReg2, dest=target})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithSub, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination (* If the argument is a constant we can subtract the tag beforehand. Check for short - see comment above. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg1Code, aReg1) = codeToPReg(arg1, context) in (arg1Code @ [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=target, operand1=aReg1, operand2=IntegerConstant constVal, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithSub, arg1, arg2}, context, _, destination) = let val target = asTarget destination val aReg3 = newPReg() val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) in (arg1Code @ arg2Code @ (* Do the subtraction and add in the tag bit. This could be reordered if we have cascaded operations since we don't need to check for overflow. *) [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=aReg3, operand1=aReg1, operand2=RegisterArgument aReg2, ccRef=newCCRef()}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg3, operand2=IntegerConstant 1, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithMult, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = codeMultiplyConstantWord(arg1, context, destination, if isShort value then toShort value else 0w0) | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithMult, arg1=BICConstnt(value, _), arg2}, context, _, destination) = codeMultiplyConstantWord(arg2, context, destination, if isShort value then toShort value else 0w0) | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithMult, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val arg1Untagged = newUReg() and arg2Untagged = newUReg() and resUntagged = newUReg() in (arg1Code @ arg2Code @ (* Shift one argument and subtract the tag from the other. It's possible this could be reordered if we have a value that is already untagged. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=false, cache=NONE}), BlockSimple(ArithmeticFunction{oper=SUB, resultReg=arg2Untagged, operand1=aReg2, operand2=IntegerConstant 1, ccRef=newCCRef()}), BlockSimple(Multiplication{resultReg=resUntagged, operand1=arg1Untagged, operand2=RegisterArgument arg2Untagged, ccRef=newCCRef()}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=resUntagged, operand2=IntegerConstant 1, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithDiv, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val arg1Untagged = newUReg() and arg2Untagged = newUReg() val quotient = newUReg() and remainder = newUReg() in (arg1Code @ arg2Code @ (* Shift both of the arguments to remove the tags. We don't test for zero here - that's done explicitly. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=false, cache=NONE}), BlockSimple(UntagValue{source=aReg2, dest=arg2Untagged, isSigned=false, cache=NONE}), BlockSimple(Division { isSigned = false, dividend=arg1Untagged, divisor=RegisterArgument arg2Untagged, quotient=quotient, remainder=remainder }), BlockSimple(TagValue { source=quotient, dest=target, isSigned=false })], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith BuiltIns.ArithMod, arg1, arg2}, context, _, destination) = let (* Identical to Quot except that the result is the remainder. *) val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val arg1Untagged = newUReg() and arg2Untagged = newUReg() val quotient = newUReg() and remainder = newUReg() in (arg1Code @ arg2Code @ (* Shift both of the arguments to remove the tags. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=false, cache=NONE}), BlockSimple(UntagValue{source=aReg2, dest=arg2Untagged, isSigned=false, cache=NONE}), BlockSimple(Division { isSigned = false, dividend=arg1Untagged, divisor=RegisterArgument arg2Untagged, quotient=quotient, remainder=remainder }), BlockSimple(TagValue { source=remainder, dest=target, isSigned=false })], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordArith _, ...}, _, _, _) = raise InternalError "codeToICodeNonRev: WordArith - unimplemented operation" | codeToICodeBinary({oper=BuiltIns.WordLogical logOp, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination val (arg1Code, arg1Reg) = codeToPReg(arg1, context) (* Use a semitagged value for XOR. This preserves the tag bit. *) val constVal = if isShort value then (case logOp of BuiltIns.LogicalXor => semitag | _ => tag) (Word.toLargeIntX(toShort value)) else 0 val oper = case logOp of BuiltIns.LogicalOr => OR | BuiltIns.LogicalAnd => AND | BuiltIns.LogicalXor => XOR in (arg1Code @ [BlockSimple(ArithmeticFunction{oper=oper, resultReg=target, operand1=arg1Reg, operand2=IntegerConstant constVal, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordLogical logOp, arg1=BICConstnt(value, _), arg2}, context, _, destination) = let val target = asTarget destination val (arg2Code, arg2Reg) = codeToPReg(arg2, context) (* Use a semitagged value for XOR. This preserves the tag bit. *) val constVal = if isShort value then (case logOp of BuiltIns.LogicalXor => semitag | _ => tag) (Word.toLargeIntX(toShort value)) else 0 val oper = case logOp of BuiltIns.LogicalOr => OR | BuiltIns.LogicalAnd => AND | BuiltIns.LogicalXor => XOR in (arg2Code @ [BlockSimple(ArithmeticFunction{oper=oper, resultReg=target, operand1=arg2Reg, operand2=IntegerConstant constVal, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordLogical BuiltIns.LogicalOr, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, arg1Reg) = codeToPReg(arg1, context) val (arg2Code, arg2Reg) = codeToPReg(arg2, context) in (arg1Code @ arg2Code @ (* Or-ing preserves the tag bit. *) [BlockSimple(ArithmeticFunction{oper=OR, resultReg=target, operand1=arg1Reg, operand2=RegisterArgument arg2Reg, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordLogical BuiltIns.LogicalAnd, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, arg1Reg) = codeToPReg(arg1, context) val (arg2Code, arg2Reg) = codeToPReg(arg2, context) in (arg1Code @ arg2Code @ (* Since they're both tagged the result will be tagged. *) [BlockSimple(ArithmeticFunction{oper=AND, resultReg=target, operand1=arg1Reg, operand2=RegisterArgument arg2Reg, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordLogical BuiltIns.LogicalXor, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, arg1Reg) = codeToPReg(arg1, context) val (arg2Code, arg2Reg) = codeToPReg(arg2, context) val aReg3 = newPReg() in (arg1Code @ arg2Code @ (* We need to restore the tag bit after the operation. *) [BlockSimple(ArithmeticFunction{oper=XOR, resultReg=aReg3, operand1=arg1Reg, operand2=RegisterArgument arg2Reg, ccRef=newCCRef()}), BlockSimple(ArithmeticFunction{oper=OR, resultReg=target, operand1=aReg3, operand2=IntegerConstant 1, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.WordShift BuiltIns.ShiftLeft, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = (* Use the general case multiplication code. This will use a shift except for small values. It does detect special cases such as multiplication by 4 and 8 which can be implemented with LEA. *) codeMultiplyConstantWord(arg1, context, destination, if isShort value then Word.<<(0w1, toShort value) else 0w1) | codeToICodeBinary({oper=BuiltIns.WordShift shift, arg1, arg2}, context, _, destination) = (* N.B. X86 shifts of greater than the word length mask the higher bits. That isn't what ML wants but that is dealt with at a higher level *) let open BuiltIns val target = asTarget destination (* Load the value into an untagged register. If this is a left shift we need to clear the tag bit. We don't need to do that for right shifts. *) val argRegUntagged = newUReg() val arg1Code = case arg1 of BICConstnt(value, _) => let (* Remove the tag bit. This isn't required for right shifts. *) val cnstntVal = if isShort value then semitag(Word.toLargeInt(toShort value)) else 1 in [BlockSimple(LoadArgument{source=IntegerConstant cnstntVal, dest=argRegUntagged, kind=MoveWord})] end | _ => let val (arg1Code, arg1Reg) = codeToPReg(arg1, context) val removeTag = case shift of ShiftLeft => ArithmeticFunction{oper=SUB, resultReg=argRegUntagged, operand1=arg1Reg, operand2=IntegerConstant 1, ccRef=newCCRef()} | _ => LoadArgument{source=RegisterArgument arg1Reg, dest=argRegUntagged, kind=MoveWord} in arg1Code @ [BlockSimple removeTag] end (* The shift amount can usefully be a constant. *) val (arg2Code, untag2Code, arg2Arg) = codeAsUntaggedValue(arg2, false, context) val resRegUntagged = newUReg() val shiftOp = case shift of ShiftLeft => SHL | ShiftRightLogical => SHR | ShiftRightArithmetic => SAR in (arg1Code @ arg2Code @ untag2Code @ [BlockSimple(ShiftOperation{ shift=shiftOp, resultReg=resRegUntagged, operand=argRegUntagged, shiftAmount=arg2Arg, ccRef=newCCRef() }), (* Set the tag by ORing it in. This will work whether or not a right shift has shifted a 1 into this position. *) BlockSimple( ArithmeticFunction{oper=OR, resultReg=target, operand1=resRegUntagged, operand2=IntegerConstant 1, ccRef=newCCRef()})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.AllocateByteMemory, arg1, arg2}, context, _, destination) = let val target = asTarget destination val sizeReg = newPReg() and baseReg = newPReg() val sizeCode = codeToICodeTarget(arg1, context, false, sizeReg) val (flagsCode, flagUntag, flagArg) = codeAsUntaggedValue(arg2, false, context) in (sizeCode @ flagsCode @ [BlockSimple(AllocateMemoryVariable{size=sizeReg, dest=baseReg, saveRegs=[]})] @ flagUntag @ [BlockSimple(StoreArgument{ source=flagArg, base=baseReg, offset= ~1, index=NoMemIndex, kind=MoveByte, isMutable=false}), BlockSimple InitialisationComplete, BlockSimple(LoadArgument{ source=RegisterArgument baseReg, dest=target, kind=MoveWord})], RegisterArgument target, false) end | codeToICodeBinary(instr as {oper=BuiltIns.LargeWordComparison _, ...}, context, isTail, destination) = codeAsConditional(BICBinary instr, context, isTail, destination) | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithAdd, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val aReg3 = newUReg() val argReg = newUReg() val constantValue = largeWordConstant value in (arg1Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=aReg3, operand1=argReg, operand2=IntegerConstant constantValue, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithAdd, arg1=BICConstnt(value, _), arg2}, context, _, destination) = let val target = asTarget destination val (arg2Code, aReg2) = codeToPReg(arg2, context) val aReg3 = newUReg() val argReg = newUReg() val constantValue = largeWordConstant value in (arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg2, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=aReg3, operand1=argReg, operand2=IntegerConstant constantValue, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithAdd, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val aReg3 = newUReg() val argReg = newUReg() in (arg1Code @ arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=aReg3, operand1=argReg, operand2=wordAt aReg2, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithSub, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val aReg3 = newUReg() val argReg = newUReg() val constantValue = largeWordConstant value in (arg1Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=SUB, resultReg=aReg3, operand1=argReg, operand2=IntegerConstant constantValue, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithSub, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val aReg3 = newUReg() val argReg = newUReg() in (arg1Code @ arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=SUB, resultReg=aReg3, operand1=argReg, operand2=wordAt aReg2, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithMult, arg1, arg2}, context, _, destination) = let val target = asTarget destination val resValue = newUReg() val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val argReg1 = newUReg() in (arg1Code @ arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg1, kind=MoveWord}), BlockSimple(Multiplication{resultReg=resValue, operand1=argReg1, operand2=wordAt aReg2, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=resValue, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithDiv, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val quotient = newUReg() and remainder = newUReg() val dividendReg = newUReg() and divisorReg = newUReg() in (arg1Code @ arg2Code @ (* We don't test for zero here - that's done explicitly. *) [BlockSimple(LoadArgument{source=wordAt aReg1, dest=dividendReg, kind=MoveWord}), BlockSimple(LoadArgument{source=wordAt aReg2, dest=divisorReg, kind=MoveWord}), BlockSimple(Division { isSigned = false, dividend=dividendReg, divisor=RegisterArgument divisorReg, quotient=quotient, remainder=remainder }), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=quotient, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith BuiltIns.ArithMod, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val quotient = newUReg() and remainder = newUReg() val dividendReg = newUReg() and divisorReg = newUReg() in (arg1Code @ arg2Code @ (* We don't test for zero here - that's done explicitly. *) [BlockSimple(LoadArgument{source=wordAt aReg1, dest=dividendReg, kind=MoveWord}), BlockSimple(LoadArgument{source=wordAt aReg2, dest=divisorReg, kind=MoveWord}), BlockSimple(Division { isSigned = false, dividend=dividendReg, divisor=RegisterArgument divisorReg, quotient=quotient, remainder=remainder }), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=remainder, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordArith _, ...}, _, _, _) = raise InternalError "codeToICodeNonRev: LargeWordArith - unimplemented operation" | codeToICodeBinary({oper=BuiltIns.LargeWordLogical logOp, arg1, arg2=BICConstnt(value, _)}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val aReg3 = newUReg() val argReg = newUReg() val constantValue = largeWordConstant value val oper = case logOp of BuiltIns.LogicalOr => OR | BuiltIns.LogicalAnd => AND | BuiltIns.LogicalXor => XOR in (arg1Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=oper, resultReg=aReg3, operand1=argReg, operand2=IntegerConstant constantValue, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordLogical logOp, arg1=BICConstnt(value, _), arg2}, context, _, destination) = let val target = asTarget destination val (arg2Code, aReg2) = codeToPReg(arg2, context) val aReg3 = newUReg() val argReg = newUReg() val constantValue = largeWordConstant value val oper = case logOp of BuiltIns.LogicalOr => OR | BuiltIns.LogicalAnd => AND | BuiltIns.LogicalXor => XOR in (arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg2, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=oper, resultReg=aReg3, operand1=argReg, operand2=IntegerConstant constantValue, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordLogical logOp, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) val aReg3 = newUReg() val argReg = newUReg() val oper = case logOp of BuiltIns.LogicalOr => OR | BuiltIns.LogicalAnd => AND | BuiltIns.LogicalXor => XOR in (arg1Code @ arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord}), BlockSimple(ArithmeticFunction{oper=oper, resultReg=aReg3, operand1=argReg, operand2=wordAt aReg2, ccRef=newCCRef()}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.LargeWordShift shift, arg1, arg2}, context, _, destination) = (* The shift is always a Word.word value i.e. tagged. There is a check at the higher level that the shift does not exceed 32/64 bits. *) let open BuiltIns val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, untag2Code, arg2Arg) = codeAsUntaggedValue(arg2, false, context) val aReg3 = newUReg() val shiftOp = case shift of ShiftLeft => SHL | ShiftRightLogical => SHR | ShiftRightArithmetic => SAR val argReg = newUReg() in (arg1Code @ arg2Code @ [BlockSimple(LoadArgument{source=wordAt aReg1, dest=argReg, kind=MoveWord})] @ untag2Code @ [BlockSimple(ShiftOperation{ shift=shiftOp, resultReg=aReg3, operand=argReg, shiftAmount=arg2Arg, ccRef=newCCRef() }), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=aReg3, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary({oper=BuiltIns.RealArith fpOper, arg1, arg2}, context, _, destination) = let val target = asTarget destination val (arg1Code, aReg1) = codeToPReg(arg1, context) and (arg2Code, aReg2) = codeToPReg(arg2, context) val fpRegSrc = newUReg() and fpRegDest = newUReg() val load = BlockSimple(LoadArgument{source=wordAt aReg1, dest=fpRegSrc, kind=MoveDouble}) open BuiltIns val arith = case fpMode of FPModeX87 => let val fpOp = case fpOper of ArithAdd => FADD | ArithSub => FSUB | ArithMult => FMUL | ArithDiv => FDIV | _ => raise InternalError "codeToICodeNonRev: RealArith - unimplemented operation" in BlockSimple(X87FPArith{ opc=fpOp, resultReg=fpRegDest, arg1=fpRegSrc, arg2=wordAt aReg2}) end | FPModeSSE2 => let val fpOp = case fpOper of ArithAdd => SSE2Add | ArithSub => SSE2Sub | ArithMult => SSE2Mul | ArithDiv => SSE2Div | _ => raise InternalError "codeToICodeNonRev: RealArith - unimplemented operation" in BlockSimple(SSE2FPArith{ opc=fpOp, resultReg=fpRegDest, arg1=fpRegSrc, arg2=wordAt aReg2}) end val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (arg1Code @ arg2Code @ [load, arith, BlockSimple(BoxValue{boxKind=boxFloat, source=fpRegDest, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeBinary(instr as {oper=BuiltIns.RealComparison _, ...}, context, isTail, destination) = codeAsConditional(BICBinary instr, context, isTail, destination) (* Multiply tagged word by a constant. We're not concerned with overflow so it's possible to use various short cuts. *) and codeMultiplyConstantWord(arg, context, destination, multiplier) = let val target = asTarget destination val (argCode, aReg) = codeToPReg(arg, context) val doMultiply = case multiplier of 0w0 => [BlockSimple(LoadArgument{source=IntegerConstant 1, dest=target, kind=MoveWord})] | 0w1 => [BlockSimple(LoadArgument{source=RegisterArgument aReg, dest=target, kind=MoveWord})] | 0w2 => [BlockSimple(LoadEffectiveAddress{base=SOME aReg, offset= ~1, index=MemIndex1 aReg, dest=target})] | 0w3 => [BlockSimple(LoadEffectiveAddress{base=SOME aReg, offset= ~2, index=MemIndex2 aReg, dest=target})] | 0w4 => [BlockSimple(LoadEffectiveAddress{base=NONE, offset= ~3, index=MemIndex4 aReg, dest=target})] | 0w5 => [BlockSimple(LoadEffectiveAddress{base=SOME aReg, offset= ~4, index=MemIndex4 aReg, dest=target})] | 0w8 => [BlockSimple(LoadEffectiveAddress{base=NONE, offset= ~7, index=MemIndex8 aReg, dest=target})] | 0w9 => [BlockSimple(LoadEffectiveAddress{base=SOME aReg, offset= ~8, index=MemIndex8 aReg, dest=target})] | _ => let val tReg = newUReg() val tagCorrection = Word.toLargeInt multiplier - 1 fun getPower2 n = let fun p2 (n, l) = if n = 0w1 then SOME l else if Word.andb(n, 0w1) = 0w1 then NONE else p2(Word.>>(n, 0w1), l+0w1) in if n = 0w0 then NONE else p2(n,0w0) end val multiply = case getPower2 multiplier of SOME power => (* Shift it including the tag. *) BlockSimple(ShiftOperation{ shift=SHL, resultReg=tReg, operand=aReg, shiftAmount=IntegerConstant(Word.toLargeInt power), ccRef=newCCRef() }) | NONE => (* Multiply including the tag. *) BlockSimple(Multiplication{resultReg=tReg, operand1=aReg, operand2=IntegerConstant(Word.toLargeInt multiplier), ccRef=newCCRef()}) in [multiply, BlockSimple(ArithmeticFunction{oper=SUB, resultReg=target, operand1=tReg, operand2=IntegerConstant tagCorrection, ccRef=newCCRef()})] end in (argCode @ doMultiply, RegisterArgument target, false) end and codeToICodeAllocate({numWords as BICConstnt(length, _), flags as BICConstnt(flagValue, _), initial}, context, _, destination) = (* Constant length and flags is used for ref. We could handle other cases. *) if isShort length andalso isShort flagValue andalso toShort length = 0w1 then let val target = asTarget destination (* Force a different register. *) val vecLength = Word.toInt(toShort length) val flagByte = Word8.fromLargeWord(Word.toLargeWord(toShort flagValue)) val memAddr = newPReg() and valueReg = newPReg() fun initialise n = BlockSimple(StoreArgument{ source=RegisterArgument valueReg, offset=n*wordSize, base=memAddr, index=NoMemIndex, kind=MoveWord, isMutable=false}) val code = codeToICodeTarget(initial, context, false, valueReg) @ [BlockSimple(AllocateMemoryOperation{size=vecLength, flags=flagByte, dest=memAddr, saveRegs=[]})] @ List.tabulate(vecLength, initialise) @ [BlockSimple InitialisationComplete, BlockSimple(LoadArgument{source=RegisterArgument memAddr, dest=target, kind=MoveWord})] in (code, RegisterArgument target, false) end else (* If it's longer use the full run-time form. *) allocateMemoryVariable(numWords, flags, initial, context, destination) | codeToICodeAllocate({numWords, flags, initial}, context, _, destination) = allocateMemoryVariable(numWords, flags, initial, context, destination) and codeToICodeLoad({kind=LoadStoreMLWord _, address}, context, _, destination) = let val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeAddress(address, false, context) in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument {source=MemoryLocation memLoc, dest=target, kind=MoveWord})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreMLByte _, address}, context, _, destination) = let val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeAddress(address, true, context) val untaggedResReg = newUReg() in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveByte}), BlockSimple(TagValue {source=untaggedResReg, dest=target, isSigned=false})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreC8, address}, context, _, destination) = let (* Load a byte from C memory. This is almost exactly the same as LoadStoreMLByte except that the base address is a LargeWord.word value. *) val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w1, context) val untaggedResReg = newUReg() in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveByte}), BlockSimple(TagValue {source=untaggedResReg, dest=target, isSigned=false})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreC16, address}, context, _, destination) = let (* Load a 16-bit value from C memory. *) val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w2, context) val untaggedResReg = newUReg() in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=Move16Bit}), BlockSimple(TagValue {source=untaggedResReg, dest=target, isSigned=false})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreC32, address}, context, _, destination) = let (* Load a 32-bit value from C memory. If this is 64-bit mode we can tag it but if this is 32-bit mode we need to box it. *) val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w4, context) val untaggedResReg = newUReg() val (boxTagCode, moveKind) = if isX64 then (BlockSimple(TagValue {source=untaggedResReg, dest=target, isSigned=false}), Move32Bit) else (BlockSimple(BoxValue{boxKind=BoxLargeWord, source=untaggedResReg, dest=target, saveRegs=[]}), MoveWord) in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=moveKind}), boxTagCode], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreC64, address}, context, _, destination) = let (* Load a 64-bit value from C memory. This is only allowed in 64-bit mode. The result is a boxed value. *) val _ = isX64 orelse raise InternalError "codeToICodeNonRev: BICLoadOperation LoadStoreC64 in 32-bit" val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w8, context) val untaggedResReg = newUReg() in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveWord}), BlockSimple(BoxValue{boxKind=BoxLargeWord, source=untaggedResReg, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreCFloat, address}, context, _, destination) = let val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w4, context) val untaggedResReg = newUReg() val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveFloat}), BlockSimple(BoxValue{boxKind=boxFloat, source=untaggedResReg, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreCDouble, address}, context, _, destination) = let val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeCAddress(address, 0w8, context) val untaggedResReg = newUReg() val boxFloat = case fpMode of FPModeX87 => BoxX87 | FPModeSSE2 => BoxSSE2 in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveDouble}), BlockSimple(BoxValue{boxKind=boxFloat, source=untaggedResReg, dest=target, saveRegs=[]})], RegisterArgument target, false) end | codeToICodeLoad({kind=LoadStoreUntaggedUnsigned, address}, context, _, destination) = let val target = asTarget destination val (codeBaseIndex, codeUntag, memLoc) = codeAddress(address, false, context) val untaggedResReg = newUReg() in (codeBaseIndex @ codeUntag @ [BlockSimple(LoadArgument { source=MemoryLocation memLoc, dest=untaggedResReg, kind=MoveWord}), BlockSimple(TagValue {source=untaggedResReg, dest=target, isSigned=false})], RegisterArgument target, false) end and codeToICodeStore({kind=LoadStoreMLWord _, address, value}, context, _, destination) = let val (sourceCode, source, _) = codeToICode(value, context, false, Allowed allowInMemMove) val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeAddress(address, false, context) val code = codeBaseIndex @ sourceCode @ codeUntag @ [BlockSimple(StoreArgument {source=source, base=base, offset=offset, index=index, kind=MoveWord, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreMLByte _, address, value}, context, _, destination) = let val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeAddress(address, true, context) (* We have to untag the value to store. *) val (valueCode, untagValue, valueArg) = codeAsUntaggedValue(value, false, context) val code = codeBaseIndex @ valueCode @ untagValue @ codeUntag @ [BlockSimple(StoreArgument {source=valueArg, base=base, offset=offset, index=index, kind=MoveByte, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreC8, address, value}, context, _, destination) = let (* Store a byte to C memory. Almost exactly the same as LoadStoreMLByte. *) val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w1, context) val (valueCode, untagValue, valueArg) = codeAsUntaggedValue(value, false, context) val code = codeBaseIndex @ valueCode @ untagValue @ codeUntag @ [BlockSimple(StoreArgument {source=valueArg, base=base, offset=offset, index=index, kind=MoveByte, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreC16, address, value}, context, _, destination) = let (* Store a 16-bit value to C memory. *) val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w2, context) (* We don't currently implement 16-bit constant moves so this must always be in a reg. *) val (valueCode, untagValue, valueArg) = codeAsUntaggedToReg(value, false, context) val code = codeBaseIndex @ valueCode @ untagValue @ codeUntag @ [BlockSimple(StoreArgument {source=RegisterArgument valueArg, base=base, offset=offset, index=index, kind=Move16Bit, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreC32, address, value}, context, _, destination) = (* Store a 32-bit value. If this is 64-bit mode we untag it but if this is 32-bit mode we unbox it. *) let val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w4, context) val code = if isX64 then let (* We don't currently implement 32-bit constant moves so this must always be in a reg. *) val (valueCode, untagValue, valueArg) = codeAsUntaggedToReg(value, false, context) in codeBaseIndex @ valueCode @ untagValue @ codeUntag @ [BlockSimple(StoreArgument {source=RegisterArgument valueArg, base=base, offset=offset, index=index, kind=Move32Bit, isMutable=true})] end else let val (valueCode, valueReg) = codeToPReg(value, context) val valueReg1 = newUReg() in codeBaseIndex @ valueCode @ BlockSimple(LoadArgument{source=wordAt valueReg, dest=valueReg1, kind=MoveWord}) :: codeUntag @ [BlockSimple(StoreArgument {source=RegisterArgument valueReg1, base=base, offset=offset, index=index, kind=Move32Bit, isMutable=true})] end in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreC64, address, value}, context, _, destination) = let (* Store a 64-bit value. *) val _ = isX64 orelse raise InternalError "codeToICodeNonRev: BICStoreOperation LoadStoreC64 in 32-bit" val (valueCode, valueReg) = codeToPReg(value, context) val valueReg1 = newUReg() val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w8, context) val code = codeBaseIndex @ valueCode @ codeUntag @ [BlockSimple(LoadArgument{source=wordAt valueReg, dest=valueReg1, kind=MoveWord}), BlockSimple(StoreArgument {source=RegisterArgument valueReg1, base=base, offset=offset, index=index, kind=MoveWord, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreCFloat, address, value}, context, _, destination) = let val floatReg = newUReg() and float2Reg = newUReg() val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w4, context) val (valueCode, valueReg) = codeToPReg(value, context) (* If we're using an SSE2 reg we have to convert it from double to single precision. *) val (storeReg, cvtCode) = case fpMode of FPModeSSE2 => (float2Reg, [BlockSimple(SSE2FPArith{opc=SSE2DoubleToFloat, resultReg=float2Reg, arg1=floatReg, arg2=RegisterArgument floatReg})]) | FPModeX87 => (floatReg, []) val code = codeBaseIndex @ valueCode @ codeUntag @ BlockSimple(LoadArgument{source=wordAt valueReg, dest=floatReg, kind=MoveDouble}) :: cvtCode @ [BlockSimple(StoreArgument {source=RegisterArgument storeReg, base=base, offset=offset, index=index, kind=MoveFloat, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreCDouble, address, value}, context, _, destination) = let val floatReg = newUReg() val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeCAddress(address, 0w8, context) val (valueCode, valueReg) = codeToPReg(value, context) val code = codeBaseIndex @ valueCode @ codeUntag @ [BlockSimple(LoadArgument{source=wordAt valueReg, dest=floatReg, kind=MoveDouble}), BlockSimple(StoreArgument {source=RegisterArgument floatReg, base=base, offset=offset, index=index, kind=MoveDouble, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeStore({kind=LoadStoreUntaggedUnsigned, address, value}, context, _, destination) = let (* We have to untag the value to store. *) val (codeBaseIndex, codeUntag, {base, offset, index, ...}) = codeAddress(address, false, context) (* See if it's a constant. This is frequently used to set the last word of a string to zero. *) (* We have to be a bit more careful on the X86. We use moves to store constants that can include addresses. To avoid problems we only use a move if the value is zero or odd and so looks like a tagged value. *) val storeAble = case value of BICConstnt(value, _) => if not(isShort value) then NONE else let val ival = Word.toLargeIntX(toShort value) in if isX64 then if is32bit ival then SOME ival else NONE else if ival = 0 orelse ival mod 2 = 1 then SOME ival else NONE end | _ => NONE val (storeVal, valCode) = case storeAble of SOME value => (IntegerConstant value (* Leave untagged *), []) | NONE => let val valueReg = newPReg() and valueReg1 = newUReg() in (RegisterArgument valueReg1, codeToICodeTarget(value, context, false, valueReg) @ [BlockSimple(UntagValue{dest=valueReg1, source=valueReg, isSigned=false, cache=NONE })]) end val code = codeBaseIndex @ valCode @ codeUntag @ [BlockSimple(StoreArgument {source=storeVal, base=base, offset=offset, index=index, kind=MoveWord, isMutable=true})] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end and codeToICodeBlock({kind=BlockOpCompareByte, sourceLeft, destRight, length}, context, _, destination) = let (* TODO: If we have a short fixed length comparison we might well be better loading the value into a register and comparing with memory. *) val target = asTarget destination val vec1Reg = newUReg() and vec2Reg = newUReg() val (leftCode, leftUntag, {base=leftBase, offset=leftOffset, index=leftIndex, ...}) = codeAddress(sourceLeft, true, context) val (rightCode, rightUntag, {base=rightBase, offset=rightOffset, index=rightIndex, ...}) = codeAddress(destRight, true, context) val ccRef = newCCRef() val labLess = newLabel() and labGreater = newLabel() and exitLab = newLabel() val labNotLess = newLabel() and labNotGreater = newLabel() val (lengthCode, lengthUntag, lengthArg) = codeAsUntaggedToReg(length, false (* unsigned *), context) val code = leftCode @ rightCode @ lengthCode @ leftUntag @ [BlockSimple(loadAddress{base=leftBase, offset=leftOffset, index=leftIndex, dest=vec1Reg})] @ rightUntag @ [BlockSimple(loadAddress{base=rightBase, offset=rightOffset, index=rightIndex, dest=vec2Reg})] @ lengthUntag @ [BlockSimple(CompareByteVectors{ vec1Addr=vec1Reg, vec2Addr=vec2Reg, length=lengthArg, ccRef=ccRef }), (* N.B. These are unsigned comparisons. *) BlockFlow(Conditional{ ccRef=ccRef, condition=JB, trueJump=labLess, falseJump=labNotLess }), BlockLabel labNotLess, BlockFlow(Conditional{ ccRef=ccRef, condition=JA, trueJump=labGreater, falseJump=labNotGreater }), BlockLabel labNotGreater, BlockSimple(LoadArgument{ source=IntegerConstant(tag 0), dest=target, kind=MoveWord }), BlockFlow(Unconditional exitLab), BlockLabel labLess, BlockSimple(LoadArgument{ source=IntegerConstant(tag ~1), dest=target, kind=MoveWord }), BlockFlow(Unconditional exitLab), BlockLabel labGreater, BlockSimple(LoadArgument{ source=IntegerConstant(tag 1), dest=target, kind=MoveWord }), BlockLabel exitLab] in (code, RegisterArgument target, false) end | codeToICodeBlock({kind=BlockOpMove {isByteMove}, sourceLeft, destRight, length}, context, _, destination) = let (* TODO: If we have a short fixed length move we might well be better loading the value into a register and storing it. *) val lengthReg = newPReg() val vec1Reg = newUReg() and vec2Reg = newUReg() and lenReg = newUReg() val (leftCode, leftUntag, {base=leftBase, offset=leftOffset, index=leftIndex, ...}) = codeAddress(sourceLeft, isByteMove, context) val (rightCode, rightUntag, {base=rightBase, offset=rightOffset, index=rightIndex, ...}) = codeAddress(destRight, isByteMove, context) val code = leftCode @ rightCode @ codeToICodeTarget(length, context, false, lengthReg) @ leftUntag @ [BlockSimple(loadAddress{base=leftBase, offset=leftOffset, index=leftIndex, dest=vec1Reg})] @ rightUntag @ [BlockSimple(loadAddress{base=rightBase, offset=rightOffset, index=rightIndex, dest=vec2Reg})] @ [BlockSimple(UntagValue{source=lengthReg, dest=lenReg, isSigned=false, cache=NONE}), BlockSimple(BlockMove{ srcAddr=vec1Reg, destAddr=vec2Reg, length=lenReg, isByteMove=isByteMove })] in moveIfNotAllowed(destination, code, (* Unit result *) IntegerConstant(tag 0)) end | codeToICodeBlock({kind=BlockOpEqualByte, ...}, _, _, _) = raise InternalError "codeToICodeBlock - BlockOpEqualByte" (* Already done *) and codeConditionRev(BICConstnt(value, _), _, jumpOn, jumpLabel, tailCode) = (* Constant - typically part of andalso/orelse. Either an unconditional branch or an unconditional drop-through. *) if jumpOn = (toShort value <> 0w0) then BlockFlow(Unconditional jumpLabel) :: tailCode else tailCode | codeConditionRev(BICTagTest{test, tag=tagValue, ...}, context, jumpOn, jumpLabel, tailCode) = (* Check the "tag" word of a union (datatype). N.B. Not the same as testing the tag bit of a word. *) let val ccRef = newCCRef() val (testCode, tagReg) = codeToPRegRev(test, context, tailCode) val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=tagReg, arg2=IntegerConstant(tag(Word.toLargeInt tagValue)), ccRef=ccRef}) :: testCode end | codeConditionRev(BICUnary{oper=BuiltIns.NotBoolean, arg1}, context, jumpOn, jumpLabel, tailCode) = (* If we have a "not" we can just invert the jump condition. *) codeConditionRev(arg1, context, not jumpOn, jumpLabel, tailCode) | codeConditionRev(BICUnary{oper=BuiltIns.IsTaggedValue, arg1}, context, jumpOn, jumpLabel, tailCode) = let val ccRef = newCCRef() val (testCode, testReg) = codeToPRegRev(arg1, context, tailCode) (* Test the tag bit. This sets the zero bit if the value is untagged. *) (* TODO: The X86 supports tests with a memory argument so we don't have to load it into a register. That's not currently supported by the rest of the code-generator. *) val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=if jumpOn then JNE else JE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(TestTagBit{arg=RegisterArgument testReg, ccRef=ccRef}) :: testCode end (* Comparisons. Because this is also used for pointer equality and even for exception matching it is perfectly possible that the argument could be an address. *) | codeConditionRev(BICBinary{oper=BuiltIns.WordComparison{test, isSigned}, arg1, arg2=BICConstnt(arg2Value, _)}, context, jumpOn, jumpLabel, tailCode) = let val ccRef = newCCRef() val (testCode, testReg) = codeToPRegRev(arg1, context, tailCode) val arg2Arg = constantAsArgument arg2Value val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=testAsBranch(test, isSigned, jumpOn), trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=testReg, arg2=arg2Arg, ccRef=ccRef}) :: testCode end | codeConditionRev(BICBinary{oper=BuiltIns.WordComparison{test, isSigned}, arg1=BICConstnt(arg1Value, _), arg2}, context, jumpOn, jumpLabel, tailCode) = let (* If we have the constant first we need to reverse the test so the first argument is a register. *) val ccRef = newCCRef() val (testCode, testReg) = codeToPRegRev(arg2, context, tailCode) val arg1Arg = constantAsArgument arg1Value val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=testAsBranch(leftRightTest test, isSigned, jumpOn), trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=testReg, arg2=arg1Arg, ccRef=ccRef}) :: testCode end | codeConditionRev(BICBinary{oper=BuiltIns.WordComparison{test, isSigned}, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef = newCCRef() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=testAsBranch(test, isSigned, jumpOn), trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=arg1Reg, arg2=RegisterArgument arg2Reg, ccRef=ccRef}) :: arg2Code end | codeConditionRev(BICBinary{oper=BuiltIns.LargeWordComparison test, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef = newCCRef() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) (* In X64 we can extract the word from a constant and do the comparison directly. That can't be done in X86/32 because the value isn't tagged and might look like an address. The RTS scans for comparisons with inline constant addresses. *) val (arg2Code, arg2Operand) = if isX64 then ( case arg2 of BICConstnt(value, _) => (arg1Code, IntegerConstant(largeWordConstant value)) | _ => let val (code, reg) = codeToPRegRev(arg2, context, arg1Code) in (code, wordAt reg) end ) else let val (code, reg) = codeToPRegRev(arg2, context, arg1Code) in (code, wordAt reg) end val argReg = newUReg() val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=testAsBranch(test, false, jumpOn), trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=argReg, arg2=arg2Operand, ccRef=ccRef}) :: BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=argReg, kind=MoveWord}) :: arg2Code end (* Floating point comparison. This is complicated because we have different instruction sequences for SSE2 and X87. We also have to get the handling of unordered (NaN) values right. All the tests are treated as false if either argument is a NaN. To combine that test with the other tests we sometimes have to reverse the comparison. *) | codeConditionRev(BICBinary{oper=BuiltIns.RealComparison BuiltIns.TestEqual, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef1 = newCCRef() and ccRef2 = newCCRef() val fpReg = newUReg() val testReg1 = newUReg() and testReg2 = newUReg() and testReg3 = newUReg() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) (* If this is X87 we get the condition into RAX and test it there. If it is SSE2 we have to treat the unordered result (parity set) specially. *) val noJumpLabel = newLabel() in case (fpMode, jumpOn) of (FPModeX87, _) => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef2, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(ArithmeticFunction{ oper=XOR, resultReg=testReg3, operand1=testReg2, operand2=IntegerConstant 0x4000, ccRef=ccRef2 }) :: BlockSimple(ArithmeticFunction{ oper=AND, resultReg=testReg2, operand1=testReg1, operand2=IntegerConstant 0x4400, ccRef=newCCRef() }) :: BlockSimple(X87FPGetCondition { ccRef=ccRef1, dest=testReg1 }) :: BlockSimple(X87Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code | (FPModeSSE2, true) => let val noParityLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=JE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockLabel noParityLabel :: (* Go to noJumpLabel if unordered and therefore not equal. *) BlockFlow(Conditional{ccRef=ccRef1, condition=JP, trueJump=noJumpLabel, falseJump=noParityLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end | (FPModeSSE2, false) => let val noParityLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockLabel noParityLabel :: (* Go to jumpLabel if unordered and therefore not equal. *) BlockFlow(Conditional{ccRef=ccRef1, condition=JP, trueJump=jumpLabel, falseJump=noParityLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end end | codeConditionRev(BICBinary{oper=BuiltIns.RealComparison BuiltIns.TestLess, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef1 = newCCRef() and ccRef2 = newCCRef() val fpReg = newUReg() val testReg1 = newUReg() and testReg2 = newUReg() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) val noJumpLabel = newLabel() in case fpMode of FPModeX87 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef2, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(ArithmeticFunction{ oper=AND, resultReg=testReg2, operand1=testReg1, operand2=IntegerConstant 0x4500, ccRef=ccRef2 }) :: BlockSimple(X87FPGetCondition { ccRef=ccRef1, dest=testReg1 }) :: BlockSimple(X87Compare{arg1=fpReg, arg2=wordAt arg1Reg, ccRef=ccRef1}) :: (* Reverse *) BlockSimple(LoadArgument{source=wordAt arg2Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code | FPModeSSE2 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=if jumpOn then JA else JNA, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg1Reg, ccRef=ccRef1}) :: (* Reverse *) BlockSimple(LoadArgument{source=wordAt arg2Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end | codeConditionRev(BICBinary{oper=BuiltIns.RealComparison BuiltIns.TestGreater, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef1 = newCCRef() and ccRef2 = newCCRef() val fpReg = newUReg() val testReg1 = newUReg() and testReg2 = newUReg() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) val noJumpLabel = newLabel() in case fpMode of FPModeX87 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef2, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(ArithmeticFunction{ oper=AND, resultReg=testReg2, operand1=testReg1, operand2=IntegerConstant 0x4500, ccRef=ccRef2 }) :: BlockSimple(X87FPGetCondition { ccRef=ccRef1, dest=testReg1 }) :: BlockSimple(X87Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: (* Not reversed. *) BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code | FPModeSSE2 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=if jumpOn then JA else JNA, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: (* Not reversed. *) BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end | codeConditionRev(BICBinary{oper=BuiltIns.RealComparison BuiltIns.TestLessEqual, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef1 = newCCRef() and ccRef2 = newCCRef() val fpReg = newUReg() val testReg1 = newUReg() and testReg2 = newUReg() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) val noJumpLabel = newLabel() in case fpMode of FPModeX87 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef2, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(ArithmeticFunction{ oper=AND, resultReg=testReg2, operand1=testReg1, operand2=IntegerConstant 0x500, ccRef=ccRef2 }) :: BlockSimple(X87FPGetCondition { ccRef=ccRef1, dest=testReg1 }) :: BlockSimple(X87Compare{arg1=fpReg, arg2=wordAt arg1Reg, ccRef=ccRef1}) :: (* Reverse *) BlockSimple(LoadArgument{source=wordAt arg2Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code | FPModeSSE2 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=if jumpOn then JNB else JB, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg1Reg, ccRef=ccRef1}) :: (* Reverse *) BlockSimple(LoadArgument{source=wordAt arg2Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end | codeConditionRev(BICBinary{oper=BuiltIns.RealComparison BuiltIns.TestGreaterEqual, arg1, arg2}, context, jumpOn, jumpLabel, tailCode) = let val ccRef1 = newCCRef() and ccRef2 = newCCRef() val fpReg = newUReg() val testReg1 = newUReg() and testReg2 = newUReg() val (arg1Code, arg1Reg) = codeToPRegRev(arg1, context, tailCode) val (arg2Code, arg2Reg) = codeToPRegRev(arg2, context, arg1Code) val noJumpLabel = newLabel() in case fpMode of FPModeX87 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef2, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(ArithmeticFunction{ oper=AND, resultReg=testReg2, operand1=testReg1, operand2=IntegerConstant 0x500, ccRef=ccRef2 }) :: BlockSimple(X87FPGetCondition { ccRef=ccRef1, dest=testReg1 }) :: BlockSimple(X87Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: (* Not reversed. *) BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code | FPModeSSE2 => BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef1, condition=if jumpOn then JNB else JB, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(SSE2Compare{arg1=fpReg, arg2=wordAt arg2Reg, ccRef=ccRef1}) :: (* Not reversed. *) BlockSimple(LoadArgument{source=wordAt arg1Reg, dest=fpReg, kind=MoveDouble}) :: arg2Code end | codeConditionRev( BICBlockOperation{kind=BlockOpEqualByte, sourceLeft, destRight, length}, context, jumpOn, jumpLabel, tailCode) = let val vec1Reg = newUReg() and vec2Reg = newUReg() val ccRef = newCCRef() val (leftCode, leftUntag, {base=leftBase, offset=leftOffset, index=leftIndex, ...}) = codeAddressRev(sourceLeft, true, context, tailCode) val (rightCode, rightUntag, {base=rightBase, offset=rightOffset, index=rightIndex, ...}) = codeAddressRev(destRight, true, context, leftCode) val (lengthCode, lengthUntag, lengthArg) = codeAsUntaggedToRegRev(length, false (* unsigned *), context, rightCode) val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(CompareByteVectors{ vec1Addr=vec1Reg, vec2Addr=vec2Reg, length=lengthArg, ccRef=ccRef }) :: lengthUntag @ BlockSimple(loadAddress{base=rightBase, offset=rightOffset, index=rightIndex, dest=vec2Reg}) :: rightUntag @ BlockSimple(loadAddress{base=leftBase, offset=leftOffset, index=leftIndex, dest=vec1Reg}) :: leftUntag @ lengthCode end | codeConditionRev(BICCond (testPart, thenPart, elsePart), context, jumpOn, jumpLabel, tailCode) = let val notTest = newLabel() and isThen = newLabel() and notThenElse = newLabel() (* Test the condition and jump to the else-part if this is false. *) val testTest = codeConditionRev(testPart, context, false, notTest, tailCode) (* Test the then-part and jump if the condition we want holds. We don't go to the final label yet. *) val testThen = codeConditionRev(thenPart, context, jumpOn, isThen, testTest) (* Test the else-part and jump on the inverse of the condition. The destination of this jump is going to be the drop-through case. *) (* Branch round the else-part and put in a label for the start of the else *) val testElse = codeConditionRev(elsePart, context, not jumpOn, notThenElse, BlockLabel notTest :: BlockFlow(Unconditional notThenElse) :: testThen) in (* And now the labels for the condition where we don't want to branch and want to drop through. *) BlockLabel notThenElse :: (* Add a label for the result of the then-part. Because we branched on the inverse of the test in the else-part we now have both the conditions to take the branch. Put in an unconditional branch to the final label. *) BlockFlow(Unconditional jumpLabel) :: BlockLabel isThen :: testElse end (* General case. Load the value into a register and compare it with 1 (true) *) | codeConditionRev(condition, context, jumpOn, jumpLabel, tailCode) = let val ccRef = newCCRef() val (testCode, testReg) = codeToPRegRev(condition, context, tailCode) val noJumpLabel = newLabel() in BlockLabel noJumpLabel :: BlockFlow(Conditional{ccRef=ccRef, condition=if jumpOn then JE else JNE, trueJump=jumpLabel, falseJump=noJumpLabel}) :: BlockSimple(WordComparison{arg1=testReg, arg2=IntegerConstant(tag 1), ccRef=ccRef}) :: testCode end (* Some operations that deliver boolean results are better coded as if condition then true else false *) and codeAsConditionalRev(instr, context, isTail, target, tailCode) = codeToICodeRev( BICCond(instr, BICConstnt(toMachineWord 1, []), BICConstnt(toMachineWord 0, [])), context, isTail, target, tailCode) and codeAsConditional(instr, context, isTail, target) = let val (code, dest, haveExited) = codeToICodeRev(BICCond(instr, BICConstnt(toMachineWord 1, []), BICConstnt(toMachineWord 0, [])), context, isTail, target, []) in (List.rev code, dest, haveExited) end (* The fixed precision functions are also used for arbitrary precision but instead of raising Overflow we need to jump to the code that handles the long format. *) and codeFixedPrecisionArith(BuiltIns.ArithAdd, arg1, BICConstnt(value, _), context, target, onOverflow) = let val ccRef = newCCRef() (* If the argument is a constant we can subtract the tag beforehand. This should always be a tagged value if the type is correct. However it's possible for it not to be if we have an arbitrary precision value. There will be a run-time check that the value is short and so this code will never be executed. It will generally be edited out by the higher level be we can't rely on that. Because it's never executed we can just put in zero. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg1Code, aReg1) = codeToPReg(arg1, context) in arg1Code @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg1, operand2=IntegerConstant constVal, ccRef=ccRef})] @ onOverflow ccRef end | codeFixedPrecisionArith(BuiltIns.ArithAdd, BICConstnt(value, _), arg2, context, target, onOverflow) = let val ccRef = newCCRef() (* If the argument is a constant we can subtract the tag beforehand. Check for short - see comment above. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg2Code, aReg2) = codeToPReg(arg2, context) in arg2Code @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg2, operand2=IntegerConstant constVal, ccRef=ccRef})] @ onOverflow ccRef end | codeFixedPrecisionArith(BuiltIns.ArithAdd, arg1, arg2, context, target, onOverflow) = let val aReg3 = newPReg() and ccRef = newCCRef() val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) in arg1Code @ arg2Code @ (* Subtract the tag bit from the second argument, do the addition and check for overflow. *) (* TODO: We should really do the detagging in the transform phase. It can make a better choice of the argument if one of the arguments is already untagged or if we have a constant argument. *) [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=aReg3, operand1=aReg2, operand2=IntegerConstant 1, ccRef=newCCRef()}), BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg1, operand2=RegisterArgument aReg3, ccRef=ccRef})] @ onOverflow ccRef end (* Subtraction. We can handle the special case of the second argument being a constant but not the first. *) | codeFixedPrecisionArith(BuiltIns.ArithSub, arg1, BICConstnt(value, _), context, target, onOverflow) = let val ccRef = newCCRef() (* If the argument is a constant we can subtract the tag beforehand. Check for short - see comment above. *) val constVal = if isShort value then semitag(Word.toLargeIntX(toShort value)) else 0 val (arg1Code, aReg1) = codeToPReg(arg1, context) in arg1Code @ [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=target, operand1=aReg1, operand2=IntegerConstant constVal, ccRef=ccRef})] @ onOverflow ccRef end | codeFixedPrecisionArith(BuiltIns.ArithSub, arg1, arg2, context, target, onOverflow) = let val aReg3 = newPReg() val ccRef = newCCRef() val (arg1Code, aReg1) = codeToPReg(arg1, context) val (arg2Code, aReg2) = codeToPReg(arg2, context) in arg1Code @ arg2Code @ (* Do the subtraction, test for overflow and afterwards add in the tag bit. *) [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=aReg3, operand1=aReg1, operand2=RegisterArgument aReg2, ccRef=ccRef})] @ onOverflow ccRef @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=aReg3, operand2=IntegerConstant 1, ccRef=newCCRef()})] end | codeFixedPrecisionArith(BuiltIns.ArithMult, arg1, BICConstnt(value, _), context, target, onOverflow) = let val aReg = newPReg() and argUntagged = newUReg() and resUntagged = newUReg() val mulCC = newCCRef() (* Is it better to untag the constant or the register argument? *) val constVal = if isShort value then Word.toLargeIntX(toShort value) else 0 in codeToICodeTarget(arg1, context, false, aReg) @ [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=argUntagged, operand1=aReg, operand2=IntegerConstant 1, ccRef=newCCRef()}), BlockSimple(Multiplication{resultReg=resUntagged, operand1=argUntagged, operand2=IntegerConstant constVal, ccRef=mulCC} )] @ onOverflow mulCC @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=resUntagged, operand2=IntegerConstant 1, ccRef=newCCRef()})] end | codeFixedPrecisionArith(BuiltIns.ArithMult, BICConstnt(value, _), arg2, context, target, onOverflow) = let val aReg = newPReg() and argUntagged = newUReg() and resUntagged = newUReg() val mulCC = newCCRef() (* Is it better to untag the constant or the register argument? *) val constVal = if isShort value then Word.toLargeIntX(toShort value) else 0 in codeToICodeTarget(arg2, context, false, aReg) @ [BlockSimple(ArithmeticFunction{oper=SUB, resultReg=argUntagged, operand1=aReg, operand2=IntegerConstant 1, ccRef=newCCRef()}), BlockSimple(Multiplication{resultReg=resUntagged, operand1=argUntagged, operand2=IntegerConstant constVal, ccRef=mulCC} )] @ onOverflow mulCC @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=resUntagged, operand2=IntegerConstant 1, ccRef=newCCRef()})] end | codeFixedPrecisionArith(BuiltIns.ArithMult, arg1, arg2, context, target, onOverflow) = let val aReg1 = newPReg() and aReg2 = newPReg() and arg1Untagged = newUReg() and arg2Untagged = newUReg() and resUntagged = newUReg() val mulCC = newCCRef() (* This is almost the same as the word operation except we use a signed shift and check for overflow. *) in codeToICodeTarget(arg1, context, false, aReg1) @ codeToICodeTarget(arg2, context, false, aReg2) @ (* Shift one argument and subtract the tag from the other. It's possible this could be reordered if we have a value that is already untagged. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=true (* Signed shift here. *), cache=NONE}), BlockSimple(ArithmeticFunction{oper=SUB, resultReg=arg2Untagged, operand1=aReg2, operand2=IntegerConstant 1, ccRef=newCCRef()}), BlockSimple(Multiplication{resultReg=resUntagged, operand1=arg1Untagged, operand2=RegisterArgument arg2Untagged, ccRef=mulCC} )] @ onOverflow mulCC @ [BlockSimple(ArithmeticFunction{oper=ADD, resultReg=target, operand1=resUntagged, operand2=IntegerConstant 1, ccRef=newCCRef()})] end | codeFixedPrecisionArith(BuiltIns.ArithQuot, arg1, arg2, context, target, _) = let val aReg1 = newPReg() and aReg2 = newPReg() val arg1Untagged = newUReg() and arg2Untagged = newUReg() val quotient = newUReg() and remainder = newUReg() in codeToICodeTarget(arg1, context, false, aReg1) @ codeToICodeTarget(arg2, context, false, aReg2) @ (* Shift both of the arguments to remove the tags. We don't test for zero here - that's done explicitly. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=true, cache=NONE}), BlockSimple(UntagValue{source=aReg2, dest=arg2Untagged, isSigned=true, cache=NONE}), BlockSimple(Division { isSigned = true, dividend=arg1Untagged, divisor=RegisterArgument arg2Untagged, quotient=quotient, remainder=remainder }), BlockSimple(TagValue { source=quotient, dest=target, isSigned=true })] end | codeFixedPrecisionArith(BuiltIns.ArithRem, arg1, arg2, context, target, _) = let (* Identical to Quot except that the result is the remainder. *) val aReg1 = newPReg() and aReg2 = newPReg() val arg1Untagged = newUReg() and arg2Untagged = newUReg() val quotient = newUReg() and remainder = newUReg() in codeToICodeTarget(arg1, context, false, aReg1) @ codeToICodeTarget(arg2, context, false, aReg2) @ (* Shift both of the arguments to remove the tags. *) [BlockSimple(UntagValue{source=aReg1, dest=arg1Untagged, isSigned=true, cache=NONE}), BlockSimple(UntagValue{source=aReg2, dest=arg2Untagged, isSigned=true, cache=NONE}), BlockSimple(Division { isSigned = true, dividend=arg1Untagged, divisor=RegisterArgument arg2Untagged, quotient=quotient, remainder=remainder }), BlockSimple(TagValue { source=remainder, dest=target, isSigned=true })] end | codeFixedPrecisionArith(_, _, _, _, _, _) = raise InternalError "codeToICode: FixedPrecisionArith - unimplemented operation" (* Code an address. The index is optional. *) and codeAddressRev({base, index=SOME index, offset}, true (* byte move *), context, tailCode) = let (* Byte address with index. The index needs to be untagged. *) val indexReg1 = newUReg() val (codeBase, baseReg) = codeToPRegRev(base, context, tailCode) val (codeIndex, indexReg) = codeToPRegRev(index, context, codeBase) val untagCode = [BlockSimple(UntagValue{dest=indexReg1, source=indexReg, isSigned=false, cache=NONE })] val memResult = {base=baseReg, offset=Word.toInt offset, index=MemIndex1 indexReg1, cache=NONE} in (codeIndex, untagCode, memResult) end | codeAddressRev({base, index=SOME index, offset}, false (* word move *), context, tailCode) = let (* Word address with index. We can avoid untagging the index by adjusting the multiplier and offset *) val (codeBase, baseReg) = codeToPRegRev(base, context, tailCode) val (codeIndex, indexReg) = codeToPRegRev(index, context, codeBase) val memResult = if isX64 then {base=baseReg, offset=Word.toInt offset-4, index=MemIndex4 indexReg, cache=NONE} else {base=baseReg, offset=Word.toInt offset-2, index=MemIndex2 indexReg, cache=NONE} in (codeIndex, [], memResult) end | codeAddressRev({base, index=NONE, offset}, _, context, tailCode) = let val (codeBase, baseReg) = codeToPRegRev(base, context, tailCode) val memResult = {offset=Word.toInt offset, base=baseReg, index=NoMemIndex, cache=NONE} in (codeBase, [], memResult) end and codeAddress(addr, isByte, context) = let val (code, untag, res) = codeAddressRev(addr, isByte, context, []) in (List.rev code, untag, res) end (* C-memory operations are slightly different. The base address is a LargeWord.word value. The index is a byte index so may have to be untagged. *) and codeCAddress({base, index=SOME index, offset}, 0w1, context) = let (* Byte address with index. The index needs to be untagged. *) val untaggedBaseReg = newUReg() and indexReg1 = newUReg() val (codeBase, baseReg) = codeToPReg(base, context) and (codeIndex, indexReg) = codeToPReg(index, context) val untagCode = [BlockSimple(LoadArgument{source=wordAt baseReg, dest=untaggedBaseReg, kind=MoveWord}), BlockSimple(UntagValue{dest=indexReg1, source=indexReg, isSigned=false, cache=NONE })] val memResult = {base=untaggedBaseReg, offset=Word.toInt offset, index=MemIndex1 indexReg1, cache=NONE} in (codeBase @ codeIndex, untagCode, memResult) end | codeCAddress({base, index=SOME index, offset}, size, context) = let (* Non-byte address with index. By using an appropriate multiplier we can avoid having to untag the index. *) val untaggedBaseReg = newUReg() val (codeBase, baseReg) = codeToPReg(base, context) and (codeIndex, indexReg) = codeToPReg(index, context) val untagCode = [BlockSimple(LoadArgument{source=wordAt baseReg, dest=untaggedBaseReg, kind=MoveWord})] val memResult = case size of 0w2 => {base=untaggedBaseReg, offset=Word.toInt offset-1, index=MemIndex1 indexReg, cache=NONE} | 0w4 => {base=untaggedBaseReg, offset=Word.toInt offset-2, index=MemIndex2 indexReg, cache=NONE} | 0w8 => {base=untaggedBaseReg, offset=Word.toInt offset-4, index=MemIndex4 indexReg, cache=NONE} | _ => raise InternalError "codeCAddress: unknown size" in (codeBase @ codeIndex, untagCode, memResult) end | codeCAddress({base, index=NONE, offset}, _, context) = let val untaggedBaseReg = newUReg() val (codeBase, baseReg) = codeToPReg(base, context) val untagCode = [BlockSimple(LoadArgument{source=wordAt baseReg, dest=untaggedBaseReg, kind=MoveWord})] val memResult = {offset=Word.toInt offset, base=untaggedBaseReg, index=NoMemIndex, cache=NONE} in (codeBase, untagCode, memResult) end (* Return an untagged value. If we have a constant just return it. Otherwise return the code to evaluate the argument, the code to untag it and the reference to the untagged register. *) and codeAsUntaggedToRegRev(BICConstnt(value, _), isSigned, _, tailCode) = let (* Should always be short except for unreachable code. *) val untagReg = newUReg() val cval = if isShort value then toShort value else 0w0 val cArg = IntegerConstant(if isSigned then Word.toLargeIntX cval else Word.toLargeInt cval) (* Don't tag *) val untag = [BlockSimple(LoadArgument{source=cArg, dest=untagReg, kind=MoveWord})] in (tailCode, untag, untagReg) (* Don't tag. *) end | codeAsUntaggedToRegRev(arg, isSigned, context, tailCode) = let val untagReg = newUReg() val (code, srcReg) = codeToPRegRev(arg, context, tailCode) val untag = [BlockSimple(UntagValue{source=srcReg, dest=untagReg, isSigned=isSigned, cache=NONE})] in (code, untag, untagReg) end and codeAsUntaggedToReg(arg, isSigned, context) = let val (code, untag, untagReg) = codeAsUntaggedToRegRev(arg, isSigned, context, []) in (List.rev code, untag, untagReg) end (* Return the argument as an untagged value. We separate evaluating the argument from untagging because we may have to evaluate other arguments and that could involve a function call and we can't save the value to the stack after we've untagged it. Currently this is only used for byte values but we may have to be careful if we use it for word values on the X86. Moving an untagged value into a register might look like loading a constant address. *) and codeAsUntaggedValue(BICConstnt(value, _), isSigned, _) = let val cval = if isShort value then toShort value else 0w0 val cArg = IntegerConstant(if isSigned then Word.toLargeIntX cval else Word.toLargeInt cval) (* Don't tag *) in ([], [], cArg) end | codeAsUntaggedValue(arg, isSigned, context) = let val untagReg = newUReg() val (code, argReg) = codeToPReg(arg, context) val untag = [BlockSimple(UntagValue{source=argReg, dest=untagReg, isSigned=isSigned, cache=NONE})] in (code, untag, RegisterArgument untagReg) end (* Allocate memory. This is used both for true variable length cells and also for longer constant length cells. *) and allocateMemoryVariable(numWords, flags, initial, context, destination) = let val target = asTarget destination (* With the exception of flagReg all these registers are modified by the code. So, we have to copy the size value into a new register. *) val sizeReg = newPReg() and initReg = newPReg() val sizeReg2 = newPReg() val untagSizeReg = newUReg() and initAddrReg = newPReg() and allocReg = newPReg() val sizeCode = codeToICodeTarget(numWords, context, false, sizeReg) and (flagsCode, flagUntag, flagArg) = codeAsUntaggedValue(flags, false, context) (* We're better off deferring the initialiser if possible. If the value is a constant we don't have to save it. *) val (initCode, initResult, _) = codeToICode(initial, context, false, Allowed allowDefer) in (sizeCode @ flagsCode @ initCode @ [(* We need to copy the size here because AllocateMemoryVariable modifies the size in order to store the length word. This is unfortunate especially as we're going to untag it anyway. *) BlockSimple(LoadArgument{source=RegisterArgument sizeReg, dest=sizeReg2, kind=MoveWord}), BlockSimple(AllocateMemoryVariable{size=sizeReg, dest=allocReg, saveRegs=[]})] @ flagUntag @ [BlockSimple(StoreArgument{ source=flagArg, base=allocReg, offset= ~1, index=NoMemIndex, kind=MoveByte, isMutable=false}), (* We need to copy the address here because InitialiseMem modifies all its arguments. *) BlockSimple(LoadArgument{source=RegisterArgument allocReg, dest=initAddrReg, kind=MoveWord}), BlockSimple(UntagValue{source=sizeReg2, dest=untagSizeReg, isSigned=false, cache=NONE}), BlockSimple(LoadArgument{source=initResult, dest=initReg, kind=MoveWord}), BlockSimple(InitialiseMem{size=untagSizeReg, init=initReg, addr=initAddrReg}), BlockSimple InitialisationComplete, BlockSimple(LoadArgument{source=RegisterArgument allocReg, dest=target, kind=MoveWord})], RegisterArgument target, false) end (*Turn the codetree structure into icode. *) val bodyContext = {loopArgs=NONE, stackPtr=0, currHandler=NONE} val (bodyCode, _, bodyExited) = codeToICodeRev(body, bodyContext, true, SpecificPReg resultTarget, [beginInstruction]) val icode = if bodyExited then bodyCode else returnInstruction(bodyContext, resultTarget, bodyCode) (* Turn the icode list into basic blocks. The input list is in reverse so as part of this we reverse the list. *) local val resArray = Array.array(!labelCounter, BasicBlock{ block=[], flow=ExitCode }) fun createEntry (blockNo, block, flow) = Array.update(resArray, blockNo, BasicBlock{ block=block, flow=flow}) fun splitCode([], _, _) = (* End of code. We should have had a BeginFunction. *) raise InternalError "splitCode - no begin" | splitCode(BlockBegin regArgs :: _, sinceLabel, flow) = (* Final instruction. Create the initial block and exit. *) createEntry(0, BeginFunction{regArgs=regArgs, stackArgs=stackArguments @ [returnAddressEntry]}::sinceLabel, flow) | splitCode(BlockSimple instr :: rest, sinceLabel, flow) = splitCode(rest, instr :: sinceLabel, flow) | splitCode(BlockLabel label :: rest, sinceLabel, flow) = (* Label - finish this block and start another. *) ( createEntry(label, sinceLabel, flow); (* Default to a jump to this label. That is used if we have assumed a drop-through. *) splitCode(rest, [], Unconditional label) ) | splitCode(BlockExit instr :: rest, _, _) = splitCode(rest, [instr], ExitCode) | splitCode(BlockFlow flow :: rest, _, _) = splitCode(rest, [], flow) | splitCode(BlockRaiseAndHandle(instr, handler) :: rest, _, _) = splitCode(rest, [instr], UnconditionalHandle handler) | splitCode(BlockOptionalHandle{call, handler, label} :: rest, sinceLabel, flow) = let (* A function call within a handler. This could go to the handler but if there is no exception will go to the next instruction. Also includes JumpLoop since the stack check could result in an Interrupt exception. *) in createEntry(label, sinceLabel, flow); splitCode(rest, [call], ConditionalHandle{handler=handler, continue=label}) end in val () = splitCode(icode, [], ExitCode) val resultVector = Array.vector resArray end open ICODETRANSFORM val pregProperties = Vector.fromList(List.rev(! pregPropList)) in codeICodeFunctionToX86{blocks = resultVector, functionName = name, pregProps = pregProperties, argRegsUsed = argRegsUsed, hasFullClosure = not (null closure), currentStackArgs = currentStackArgs, debugSwitches = debugSwitches} end fun gencodeLambda(lambda, debugSwitches, closure) = let open DEBUG Universal (*val debugSwitches = [tagInject Pretty.compilerOutputTag (Pretty.prettyPrint(print, 70)), tagInject assemblyCodeTag true] @ debugSwitches*) val codeAddr = codeFunctionToX86(lambda, debugSwitches, SOME closure) open Address in assignWord(closure, 0w0, toMachineWord codeAddr); lock closure end structure Foreign = X86FOREIGN structure Sharing = struct type backendIC = backendIC and bicLoadForm = bicLoadForm and argumentType = argumentType end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICODETRANSFORMSIG.ML0000644000175000017500000000242613204034553023733 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature X86ICODETRANSFORMSIG = sig type reg and preg and basicBlock and regProperty type address = Address.address val codeICodeFunctionToX86: {blocks: basicBlock vector, functionName: string, pregProps: regProperty vector, argRegsUsed: reg list, hasFullClosure: bool, currentStackArgs: int, debugSwitches: Universal.universal list } -> address structure Sharing: sig type preg = preg and reg = reg and basicBlock = basicBlock and regProperty = regProperty end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICodeTransform.ML0000644000175000017500000003306613204034553024134 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86ICodeTransform( structure ICODE: ICodeSig structure DEBUG: DEBUGSIG structure CODEGEN: X86ICODEGENERATESIG structure ALLOCATE: X86ALLOCATEREGISTERSSIG structure IDENTIFY: X86IDENTIFYREFSSIG structure CONFLICTSETS: X86GETCONFLICTSETSIG structure PUSHREGISTERS: X86PUSHREGISTERSIG structure PRETTY: PRETTYSIG structure INTSET: INTSETSIG sharing ICODE.Sharing = CODEGEN.Sharing = ALLOCATE.Sharing = IDENTIFY.Sharing = CONFLICTSETS.Sharing = PUSHREGISTERS.Sharing = INTSET ) : X86ICODETRANSFORMSIG = struct open ICODE open Address open IDENTIFY open CONFLICTSETS open PUSHREGISTERS open INTSET open CODEGEN open ALLOCATE exception InternalError = Misc.InternalError (* Find out the registers that need to be pushed to the stack, if any. We include those marked as "must push" because we need to save them across a function call or handler and also any we need to push because the set of active registers is more than the number of general registers we have. This second case involves choosing suitable registers and is a first attempt to check we have enough registers. We can also get a failure in codeExtended when we actually allocate the registers. *) fun spillRegisters(identified: extendedBasicBlock vector, regStates: regState vector) = let val maxPRegs = Vector.length regStates val pushArray = Array.array(maxPRegs, false) (* Mark anything already marked as "must push" unless it's already on the stack *) local fun checkPush(i, {pushState=true, ...}) = Array.update(pushArray, i, true) | checkPush _ = () in val () = Vector.appi checkPush regStates end (* Make a list of all the active sets ignoring those marked to be pushed. Do that first because we need to know how many sets each register is in. *) local fun addToActive(r, l) = ( case Vector.sub(regStates, r) of {prop=RegPropStack _, ...} => l | _ => if Array.sub(pushArray, r) then l else r :: l ) in fun nowActive regs = List.foldl addToActive [] regs end fun getBlockSets(ExtendedBasicBlock{block, passThrough, ...}, sets) = let fun getSets({active, ...}, l) = let val set = nowActive(setToList(union(active, passThrough))) in if List.length set > nGenRegs then set :: l else l end in List.foldl getSets sets block end val activeSets = Vector.foldl getBlockSets [] identified in if null activeSets then () else let (* See how many times each register appears in a set. *) val activeIn = Array.array(maxPRegs, 0) val () = List.app (fn regs => List.app(fn r => Array.update(activeIn, r, Array.sub(activeIn, r)+1)) regs) activeSets (* We want to choose the best registers to spill. *) fun spillSomeRegs activeSet = let (* We may have already marked some of these to push. *) val currentActive = nowActive activeSet val regCount = List.length currentActive fun addCosts r = let val {active, refs, prop, ...} = Vector.sub(regStates, r) in case prop of RegPropUntagged => (r, ~1, ~1) | RegPropStack _ => (r, ~1, ~1) | _ => (r, Array.sub(activeIn, r), if refs = 0 then 0 else Int.quot(active, refs)) end val withCosts = List.map addCosts currentActive (* Order so that the earlier items are those that appear in more sets and if items appear in the same number of sets those that are active longer come earlier. *) fun compare (_, in1, a1) (_, in2, a2) = if in1 > in2 then true else if in1 < in2 then false else a1 > a2 val sorted = Misc.quickSort compare withCosts fun markAsPush([], _) = () | markAsPush((reg, _, _) :: regs, n) = if n <= 0 then () else let val {prop, ...} = Vector.sub(regStates, reg) val _ = case prop of RegPropStack _ => raise InternalError "markAsPush" | _ => () in Array.update(pushArray, reg, true); markAsPush(regs, n-1) end in markAsPush(sorted, regCount-nGenRegs) end in List.app spillSomeRegs activeSets end; (* Return the vector showing those that must be pushed. *) Array.vector pushArray end type triple = {instr: x86ICode, current: intSet, active: intSet} fun codeICodeFunctionToX86{blocks, functionName, pregProps, argRegsUsed, hasFullClosure, debugSwitches, ...} = let (*val maxPRegs = Vector.length pregProps*) val icodeTabs = [8, 20, 60] val wantPrintCode = DEBUG.getParameter DEBUG.icodeTag debugSwitches fun printCode identifiedCode = (* Print the code before the transformation. *) let val printStream = PRETTY.getSimplePrinter(debugSwitches, icodeTabs) in printStream(functionName ^ "\n"); printICodeAbstract(identifiedCode, printStream); printStream "\n" end fun printConflicts(regStates: conflictState vector) = let val printStream = PRETTY.getSimplePrinter(debugSwitches, icodeTabs) fun printRegs([], _) = () | printRegs(_, 0) = printStream "..." | printRegs([i], _) = printStream(Int.toString i) | printRegs(i::l, n) = (printStream(Int.toString i ^ ","); printRegs(l, n-1)) fun printRegData(i, { conflicts, ... }) = ( printStream (Int.toString i ^ "\t"); printStream ("Conflicts="); printRegs(setToList conflicts, 20); printStream "\n" ) in Vector.appi printRegData regStates end fun printRegisters(regAlloc: reg vector) = let val printStream = PRETTY.getSimplePrinter(debugSwitches, icodeTabs) fun printRegAlloc(i, reg) = printStream (Int.toString i ^ "\t=> " ^ regRepr reg ^ "\n"); in Vector.appi printRegAlloc regAlloc end fun processCode(basicBlocks: basicBlock vector, pregProps: regProperty vector, maxStack, passes) = let (* This should only require a few passes. *) val _ = passes < 40 orelse raise InternalError "Too many passes" val () = if wantPrintCode then printCode basicBlocks else () (* First pass - identify register use patterns *) val (identified, regStates) = identifyRegisters(basicBlocks, pregProps) val regsToSpill = spillRegisters(identified, regStates) val needPhase2 = Vector.exists(fn t => t) regsToSpill val (needPhase2, regsToSpill) = if needPhase2 orelse passes <> 0 then (needPhase2, regsToSpill) else (true, Vector.tabulate(Vector.length pregProps, fn _ => false)) in if needPhase2 then let (* Push those registers we need to. This also adds and renumbers pregs and may add labels. *) val {code=postPushCode, pregProps=regPropsPhase2, maxStack=maxStackPhase2} = addRegisterPushes{code=identified, pushVec=regsToSpill, pregProps=pregProps, firstPass=passes=0} in (* And reprocess. *) processCode(postPushCode, regPropsPhase2, maxStackPhase2, passes+1) end else let val maxPRegs = Vector.length regStates (* If we have been unable to allocate a register we need to spill something. Choose a single register from each conflict set. Since we've already checked that the active sets are small enough this is really only required to deal with special requirements e.g. esi/edi in block moves. *) fun spillFromConflictSets conflictSets = let val maxPRegs = Vector.length regStates val pushArray = Array.array(maxPRegs, false) fun selectARegisterToSpill active = let val regsToPick = setToList active in (* If we have already marked one of these to be pushed we don't need to do anything here. *) if List.exists (fn r => Array.sub(pushArray, r)) regsToPick then () else (* Choose something to push. *) let fun chooseReg([], bestReg, _) = bestReg | chooseReg(reg::regs, bestReg, bestCost) = let val {active, refs, prop, ...} = Vector.sub(regStates, reg) val cost = if refs = 0 then 0 else Int.quot(active, refs) in case prop of RegPropStack _ => chooseReg(regs, bestReg, bestCost) | RegPropCacheUntagged => reg (* Pick the first cache reg. *) | RegPropCacheTagged => reg (* Pick the first cache reg. *) | _ => if cost >= bestCost then chooseReg(regs, reg, active) else chooseReg(regs, bestReg, bestCost) end val choice = chooseReg(regsToPick, ~1, 0) val _ = choice >= 0 orelse raise InternalError "chooseReg" in Array.update(pushArray, choice, true) end end val () = List.app selectARegisterToSpill conflictSets in Array.vector pushArray end (* Now get the conflict sets. *) val conflictSets = getConflictStates(identified, maxPRegs) local fun mapFromExtended(ExtendedBasicBlock{block, flow, ...}) = BasicBlock{block=List.map #instr block, flow=flow} in val () = if wantPrintCode then (printCode(Vector.map mapFromExtended identified); printConflicts conflictSets) else () end in case allocateRegisters {blocks=identified, regStates=conflictSets, regProps=pregProps } of AllocateSuccess allocatedRegs => ( if wantPrintCode then printRegisters allocatedRegs else (); icodeToX86Code{blocks=identified, functionName=functionName, allocatedRegisters=allocatedRegs, stackRequired=maxStack, argRegsUsed=argRegsUsed, hasFullClosure=hasFullClosure, debugSwitches=debugSwitches} ) | AllocateFailure fails => let val regsToSpill = spillFromConflictSets fails val {code=postPushCode, pregProps=pregPropsPhase2, maxStack=maxStackPhase2} = addRegisterPushes{code=identified, pushVec=regsToSpill, pregProps=pregProps, firstPass=false} in processCode(postPushCode, pregPropsPhase2, maxStackPhase2, passes+1) end end end in processCode(blocks, pregProps, 0 (* Should include handlers and containers. *), 0) end structure Sharing = struct type preg = preg and reg = reg and basicBlock = basicBlock and regProperty = regProperty end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/X86Code/X86ICodeToX86Code.ML0000644000175000017500000025662413204034553023653 0ustar daviddavid(* Copyright David C. J. Matthews 2016-17 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor X86ICodeToX86Code( structure X86CODE: X86CODESIG structure X86OPTIMISE: sig type operation type code type operations = operation list type address = Address.address val generateCode: {code: code, ops: operations, labelCount: int} -> address structure Sharing: sig type operation = operation type code = code end end structure DEBUG: DEBUGSIG structure ICODE: ICodeSig structure IDENTIFY: X86IDENTIFYREFSSIG structure INTSET: INTSETSIG structure PRETTY: PRETTYSIG structure STRONGLY: sig val stronglyConnectedComponents: {nodeAddress: 'a -> int, arcs: 'a -> int list } -> 'a list -> 'a list list end sharing X86CODE.Sharing = ICODE.Sharing = X86OPTIMISE.Sharing = IDENTIFY.Sharing = INTSET ): X86ICODEGENERATESIG = struct open IDENTIFY open ICODE open X86CODE open Address exception InternalError = Misc.InternalError fun asGenReg(GenReg r) = r | asGenReg _ = raise InternalError "asGenReg" and asFPReg(FPReg r) = r | asFPReg _ = raise InternalError "asFPReg" and asXMMReg(XMMReg r) = r | asXMMReg _ = raise InternalError "asXMMReg" (* tag a short constant *) fun tag c = 2 * c + 1 val generalRegisters = List.map GenReg (if isX64 then [r14, r13, r12, r11, r10, r9, r8, edi, esi, edx, ecx, ebx, eax] else [edi, esi, edx, ecx, ebx, eax]) fun icodeToX86Code{blocks, functionName, stackRequired, argRegsUsed, hasFullClosure, debugSwitches, allocatedRegisters, ...} = let fun argAsGenReg(RegisterArg(GenReg r)) = r | argAsGenReg _ = raise InternalError "argAsGenReg" fun sourceAsGenRegOrMem(RegisterArg(GenReg r)) = RegisterArg r | sourceAsGenRegOrMem(MemoryArg{offset, base=baseReg, index}) = MemoryArg{base=baseReg, offset=offset, index=index} | sourceAsGenRegOrMem(NonAddressConstArg v) = NonAddressConstArg v | sourceAsGenRegOrMem(AddressConstArg v) = AddressConstArg v | sourceAsGenRegOrMem _ = raise InternalError "sourceAsGenRegOrMem" and sourceAsXMMRegOrMem(RegisterArg(XMMReg r)) = RegisterArg r | sourceAsXMMRegOrMem(MemoryArg{offset, base=baseReg, index}) = MemoryArg{base=baseReg, offset=offset, index=index} | sourceAsXMMRegOrMem(NonAddressConstArg v) = NonAddressConstArg v | sourceAsXMMRegOrMem(AddressConstArg v) = AddressConstArg v | sourceAsXMMRegOrMem _ = raise InternalError "sourceAsGenRegOrMem" (* Moves and loads. *) fun llLoadArgument({ source, dest=GenReg destReg, kind=MoveWord}, code) = MoveToRegister { source=sourceAsGenRegOrMem source, output=destReg } :: code | llLoadArgument({ source=MemoryArg mLoc, dest=GenReg destReg, kind=MoveByte}, code) = (* Load from memory. *) LoadNonWord{size=Size8Bit, source=mLoc, output=destReg} :: code | llLoadArgument({ source=MemoryArg mLoc, dest=GenReg destReg, kind=Move16Bit}, code) = (* Load from memory. *) LoadNonWord{size=Size16Bit, source=mLoc, output=destReg} :: code | llLoadArgument({ source=MemoryArg mLoc, dest=GenReg destReg, kind=Move32Bit}, code) = (* Load from memory. *) LoadNonWord{size=Size32Bit, source=mLoc, output=destReg} :: code (* Load a floating point value. *) | llLoadArgument({source=MemoryArg{offset, base=baseReg, index}, dest=FPReg fpReg, kind=MoveDouble}, code) = moveToOutputFP(fpReg, FPLoadFromMemory{ address={base=baseReg, offset=offset, index=index}, precision=DoublePrecision } :: code) | llLoadArgument({source=RegisterArg(FPReg fpSrc), dest=FPReg fpDest, kind=MoveDouble}, code) = (* Moving from one FP reg to another. Even if we are moving from FP0 we still do a load because FPStoreToFPReg adds one to the register number to account for one value on the stack. *) moveToOutputFP(fpDest, FPLoadFromFPReg{source=fpSrc, lastRef=false} :: code) (* Load or move from an XMM reg. *) | llLoadArgument({source, dest=XMMReg xmmRegReg, kind=MoveDouble}, code) = XMMArith { opc= SSE2Move, source=sourceAsXMMRegOrMem source, output=xmmRegReg } :: code (* Load a floating point value. *) | llLoadArgument({source=MemoryArg{offset, base=baseReg, index}, dest=FPReg fpReg, kind=MoveFloat}, code) = moveToOutputFP(fpReg, FPLoadFromMemory{ address={ base=baseReg, offset=offset, index=index }, precision=SinglePrecision } :: code) (* Load or move from an XMM reg. *) | llLoadArgument({source, dest=XMMReg xmmRegReg, kind=MoveFloat}, code) = XMMArith { opc= SSE2MoveSingle, source=sourceAsXMMRegOrMem source, output=xmmRegReg } :: code (* Any other combinations are not allowed. *) | llLoadArgument _ = raise InternalError "codeGenICode: LoadArgument" (* Unless the destination is FP0 we need to store and pop. *) and moveToOutputFP(fpDest, code) = if fpDest = fp0 then code else FPStoreToFPReg{output=fpDest, andPop=true} :: code (* Store to memory *) fun llStoreArgument{ source=RegisterArg(GenReg sourceReg), base, offset, index, kind=MoveWord} = StoreRegToMemory{toStore=sourceReg, address={base=base, offset=offset, index=index}} | llStoreArgument{ source=RegisterArg(GenReg sourceReg), base, offset, index, kind=MoveByte} = StoreNonWord{size=Size8Bit, toStore=sourceReg, address={base=base, offset=offset, index=index}} | llStoreArgument{ source=RegisterArg(GenReg sourceReg), base, offset, index, kind=Move16Bit} = StoreNonWord{size=Size16Bit, toStore=sourceReg, address={base=base, offset=offset, index=index}} | llStoreArgument{ source=RegisterArg(GenReg sourceReg), base, offset, index, kind=Move32Bit} = StoreNonWord{size=Size32Bit, toStore=sourceReg, address={base=base, offset=offset, index=index}} (* Store a short constant to memory *) | llStoreArgument{ source=NonAddressConstArg srcValue, base, offset, index, kind=MoveWord} = StoreConstToMemory{toStore=srcValue, address={base=base, offset=offset, index=index}} | llStoreArgument{ source=NonAddressConstArg srcValue, base, offset, index, kind=MoveByte} = StoreNonWordConst{size=Size8Bit, toStore=srcValue, address={base=base, offset=offset, index=index}} (* Store a long constant to memory *) | llStoreArgument{ source=AddressConstArg srcValue, base, offset, index, kind=MoveWord} = StoreLongConstToMemory{toStore=srcValue, address={base=base, offset=offset, index=index}} (* Store a floating point value. *) | llStoreArgument{source=RegisterArg(FPReg fpReg), offset, base=baseReg, index, kind=MoveDouble} = let val _ = fpReg = fp0 orelse raise InternalError "llStoreArgument: Store FPReg <> fp0" in FPStoreToMemory{ address={ base=baseReg, offset=offset, index=index}, precision=DoublePrecision, andPop=true } end | llStoreArgument{source=RegisterArg(XMMReg xmmRegReg), offset, base=baseReg, index, kind=MoveDouble} = XMMStoreToMemory { toStore=xmmRegReg, address={base=baseReg, offset=offset, index=index}, precision=DoublePrecision } (* Store a floating point value. *) | llStoreArgument{source=RegisterArg(FPReg fpReg), offset, base=baseReg, index, kind=MoveFloat} = let val _ = fpReg = fp0 orelse raise InternalError "llStoreArgument: Store FPReg <> fp0" in FPStoreToMemory{address={ base=baseReg, offset=offset, index=index}, precision=SinglePrecision, andPop=true } end | llStoreArgument{source=RegisterArg(XMMReg xmmRegReg), offset, base=baseReg, index, kind=MoveFloat} = XMMStoreToMemory { toStore=xmmRegReg, address={base=baseReg, offset=offset, index=index}, precision=SinglePrecision } | llStoreArgument _ = raise InternalError "llStoreArgument: StoreArgument" val numBlocks = Vector.length blocks fun getAllocatedReg r = Vector.sub(allocatedRegisters, r) val getAllocatedGenReg = asGenReg o getAllocatedReg and getAllocatedFPReg = asFPReg o getAllocatedReg and getAllocatedXMMReg = asXMMReg o getAllocatedReg fun codeExtIndex NoMemIndex = NoIndex | codeExtIndex(MemIndex1(PReg r)) = Index1(getAllocatedGenReg r) | codeExtIndex(MemIndex2(PReg r)) = Index2(getAllocatedGenReg r) | codeExtIndex(MemIndex4(PReg r)) = Index4(getAllocatedGenReg r) | codeExtIndex(MemIndex8(PReg r)) = Index8(getAllocatedGenReg r) local fun codeExtArgument getReg (RegisterArgument(PReg r)) = RegisterArg(getReg r) | codeExtArgument _ (AddressConstant m) = AddressConstArg m | codeExtArgument _ (IntegerConstant i) = NonAddressConstArg i | codeExtArgument _ (MemoryLocation{base=PReg bReg, offset, index, cache=NONE}) = MemoryArg{base=getAllocatedGenReg bReg, offset=offset, index=codeExtIndex index} | codeExtArgument getReg (MemoryLocation{cache=SOME(PReg r), ...}) = RegisterArg(getReg r) | codeExtArgument _ (StackLocation{wordOffset, cache=NONE, ...}) = MemoryArg{base=esp, offset=wordOffset*wordSize, index=NoIndex} | codeExtArgument getReg (StackLocation{cache=SOME(PReg r), ...}) = RegisterArg(getReg r) | codeExtArgument _ (ContainerAddr _) = raise InternalError "codeExtArgument - ContainerAddr" in val codeExtArgument = codeExtArgument getAllocatedReg and codeExtArgumentAsGenReg = codeExtArgument getAllocatedGenReg and codeExtArgumentAsFPReg = codeExtArgument getAllocatedFPReg and codeExtArgumentAsXMMReg = codeExtArgument getAllocatedXMMReg end (* Move unless the registers are the same. *) fun moveIfNecessary({src, dst, kind}, code) = if src = dst then code else llLoadArgument({source=RegisterArg src, dest=dst, kind=kind}, code) datatype llsource = StackSource of int | OtherSource of reg regOrMemoryArg fun sourceToX86Code(OtherSource r) = r | sourceToX86Code(StackSource wordOffset) = MemoryArg{base=esp, offset=wordOffset*wordSize, index=NoIndex} local fun indexRegister NoIndex = NONE | indexRegister (Index1 r) = SOME r | indexRegister (Index2 r) = SOME r | indexRegister (Index4 r) = SOME r | indexRegister (Index8 r) = SOME r (* The registers are numbered from 0. Choose values that don't conflict with the stack addresses. *) fun regNo r = ~1 - nReg r type node = {src: llsource, dst: destinations } fun nodeAddress({dst=RegDest r, ...}: node) = regNo r | nodeAddress({dst=StackDest a, ...}) = a fun arcs({src=StackSource wordOffset, ...}: node) = [wordOffset] | arcs{src=OtherSource(RegisterArg r), ...} = [regNo r] | arcs{src=OtherSource(MemoryArg{base, index, ...}), ...} = (case indexRegister index of NONE => [regNo(GenReg base)] | SOME r => [regNo(GenReg base), regNo(GenReg r)]) | arcs _ = [] in val stronglyConnected = STRONGLY.stronglyConnectedComponents { nodeAddress=nodeAddress, arcs=arcs } end (* This is a general function for moving values into registers or to the stack where it is possible that the source values might also be in use as destinations. The stack is used for destinations only for tail recursive calls. *) fun moveMultipleValues(moves, workReg: reg option, code) = let val _ = if List.exists(fn {dst=StackDest _, ...} => true | _ => false) moves andalso not(isSome workReg) then raise InternalError "no work reg" else () fun moveValues ([], code) = code (* We're done. *) | moveValues (arguments, code) = let (* stronglyConnectedComponents does two things. It detects loops where it's not possible to move items without breaking the loop but more importantly it orders the dependencies so that if there are no loops we can load the source and store it in the destination knowing that we won't overwrite anything we might later need. *) val ordered = stronglyConnected arguments fun moveEachValue ([], code) = code | moveEachValue ([{dst=RegDest reg, src as OtherSource(RegisterArg r)}] :: rest, code) = (* Source and dest are both regs - only move if they're different. *) if r = reg then moveEachValue(rest, code) else moveEachValue(rest, llLoadArgument({source=sourceToX86Code src, dest=reg, kind=MoveWord}, code)) | moveEachValue ([{dst=RegDest reg, src}] :: rest, code) = (* Load from store or a constant. *) moveEachValue(rest, llLoadArgument({source=sourceToX86Code src, dest=reg, kind=MoveWord}, code)) | moveEachValue ([{dst=StackDest _, src=OtherSource(MemoryArg _ )}] :: _, _) = raise InternalError "moveEachValue - MemoryArgument" | moveEachValue ([{dst=StackDest addr, src as StackSource wordOffset}] :: rest, code) = (* Copy a stack location - needs a load and store unless the address is the same. *) if addr = wordOffset then moveEachValue(rest, code) else let val workReg = valOf workReg in moveEachValue(rest, llStoreArgument{source=RegisterArg(workReg), base=esp, index=NoIndex, offset = addr*wordSize, kind=MoveWord} :: llLoadArgument({source=sourceToX86Code src, dest=workReg, kind=MoveWord}, code)) end | moveEachValue ([{dst=StackDest addr, src}] :: rest, code) = (* Store from a register or a constant. *) moveEachValue(rest, llStoreArgument{ source=sourceToX86Code src, base=esp, index=NoIndex, offset = addr*wordSize, kind=MoveWord} :: code) | moveEachValue((cycle as first :: _ :: _) :: rest, code) = (* We have a cycle. *) let (* We need to exchange some of the arguments. Doing an exchange here will set the destination with the correct source. However we have to process every subsequent entry with the swapped registers. That may well mean that one of those entries becomes trivial. Using XCHG means that we can move N registers in N-1 exchanges. We also need to rerun stronglyConnectedComponents on at least the rest of this cycle. It's easiest to flatten the rest and do everything. *) (* Try to find either a register-register move or a register-stack move. If not use the first. If there's a stack-register move there will also be a register-stack so we don't need to look for both. *) val {dst=selectDst, src=selectSrc} = case List.find(fn {src=OtherSource(RegisterArg _), dst=RegDest _} => true | _ => false) cycle of SOME found => found | _ => ( case List.find(fn {dst=RegDest _, ...} => true | _ => false) cycle of SOME found => found | NONE => first ) (* This includes this entry but after the swap we'll eliminate it. *) val flattened = List.foldl(fn (a, b) => a @ b) [] (cycle :: rest) val destAsSource = case selectDst of RegDest reg => OtherSource(RegisterArg reg) | StackDest s => StackSource s (* Source is not an equality type. We can't currently handle the situation where the source is a memory location. *) fun match(OtherSource(RegisterArg r1), OtherSource(RegisterArg r2)) = r1 = r2 | match(StackSource s1, StackSource s2) = s1 = s2 | match(OtherSource(MemoryArg _), _) = raise InternalError "moveEachValue: cycle" | match _ = false fun swapSources{src, dst} = if match(src, selectSrc) then {src=destAsSource, dst=dst} else if match(src, destAsSource) then {src=selectSrc, dst=dst} else {src=src, dst=dst} fun llExchange{reg, arg} = XChng { reg=asGenReg reg, arg=sourceAsGenRegOrMem arg } (* Try to use register to register exchange if we can. A register-to-memory exchange involves a bus lock and we'd like to avoid that. *) val exchangeCode = case (selectDst, selectSrc) of (RegDest regA, OtherSource(RegisterArg regB)) => llExchange{reg=regA, arg=RegisterArg regB} :: code | (RegDest regA, src as StackSource addr) => let val workReg = valOf workReg in llStoreArgument{source=RegisterArg workReg, base=esp, index=NoIndex, offset = addr*wordSize, kind=MoveWord} :: llExchange{reg=regA, arg=RegisterArg workReg} :: llLoadArgument({source=sourceToX86Code src, dest=workReg, kind=MoveWord}, code) end | (StackDest addr, OtherSource(RegisterArg regA)) => let (* This doesn't actually occur because we always find the case above. *) val workReg = valOf workReg in llStoreArgument{source=RegisterArg workReg, base=esp, index=NoIndex, offset = addr*wordSize, kind=MoveWord} :: llExchange{reg=regA, arg=RegisterArg workReg} :: llLoadArgument({ source=MemoryArg{base=esp, offset=addr*wordSize, index=NoIndex}, dest=workReg, kind=MoveWord}, code) end | (StackDest addr1, StackSource addr2) => let val workReg = valOf workReg (* This can still happen if we have argument registers that need to be loaded from stack locations and those argument registers happen to contain the values to be stored into those stack locations. e.g. ebx => S8; eax => S7; S8 => eax; S7 => eax. Eliminating the registers results in a cycle. It may be possible to avoid this by excluding the argument registers (eax; ebx; r8; r9; r10) from holding values in the area to be overwritten. *) in llStoreArgument{source=RegisterArg workReg, base=esp, index=NoIndex, offset = addr1*wordSize, kind=MoveWord} :: llExchange{reg=workReg, arg=MemoryArg{base=esp, offset=addr2*wordSize, index=NoIndex}} :: llLoadArgument({ source=MemoryArg{base=esp, offset=addr1*wordSize, index=NoIndex}, dest=workReg, kind=MoveWord}, code) end | _ => raise InternalError "moveEachValue: cycle" in moveValues(List.map swapSources flattened, exchangeCode) end | moveEachValue(([]) :: _, _) = (* This should not happen - avoid warning. *) raise InternalError "moveEachValue - empty set" in moveEachValue(ordered, code) end in moveValues(moves, code) end (* Where we have multiple specific registers as either source or destination there is the potential that a destination register if currently in use as a source. *) fun moveMultipleRegisters(regPairList, code) = let val regPairsAsDests = List.map(fn {src, dst} => {src=OtherSource(RegisterArg src), dst=RegDest dst}) regPairList in moveMultipleValues(regPairsAsDests, NONE, code) end val outputLabelCount = ref 0 val blockToLabelMap = Array.array(numBlocks, ~1) fun makeLabel() = Label{labelNo = ! outputLabelCount} before outputLabelCount := !outputLabelCount + 1 fun getBlockLabel blockNo = case Array.sub(blockToLabelMap, blockNo) of ~1 => let val label as Label{labelNo} = makeLabel() val () = Array.update(blockToLabelMap, blockNo, labelNo) in label end | n => Label{labelNo=n} (* The profile object is a single mutable with the F_bytes bit set. *) local val v = RunCall.allocateByteMemory(0w1, Word.fromLargeWord(Word8.toLargeWord(Word8.orb(F_mutable, F_bytes)))) fun clear 0w0 = () | clear i = (assignByte(v, i-0w1, 0w0); clear (i-0w1)) val () = clear(Word.fromInt wordSize) in val profileObject = toMachineWord v end (* Switch to indicate if we want to trace where live data has been allocated. *) val addAllocatingFunction = DEBUG.getParameter DEBUG.profileAllocationTag debugSwitches = 1 fun llAllocateMemoryOperation ({ size, flags, dest, saveRegs}, code) = let val toReg = asGenReg dest val preserve = saveRegs (* Allocate memory. N.B. Instructions are in reverse order. *) fun allocStore{size, flags, output, preserve} = if isX64 andalso flags <> 0w0 then [StoreNonWordConst{size=Size8Bit, toStore=Word8.toLargeInt flags, address={offset= ~1, base=output, index=NoIndex}}, StoreConstToMemory{toStore=LargeInt.fromInt size, address={offset= ~wordSize, base=output, index=NoIndex}}, AllocStore{size=size, output=output, saveRegs=preserve}] else let val lengthWord = IntInf.orb(IntInf.fromInt size, IntInf.<<(Word8.toLargeInt flags, 0w24)) in [StoreConstToMemory{toStore=lengthWord, address={offset= ~wordSize, base=output, index=NoIndex}}, AllocStore{size=size, output=output, saveRegs=preserve}] end val allocCode = (* If we need to add the profile object *) if addAllocatingFunction then allocStore {size=size+1, flags=Word8.orb(flags, Address.F_profile), output=toReg, preserve=preserve} @ [StoreLongConstToMemory{ toStore=profileObject, address={base=toReg, offset=size*wordSize, index=NoIndex}}] else allocStore {size=size, flags=flags, output=toReg, preserve=preserve} in allocCode @ code end (* Check the stack limit "register". This is used both at the start of a function for genuine stack checking but also in a loop to check for an interrupt. We need to save the registers even across an interrupt because it can be used if another thread wants a GC. *) fun testRegAndTrap(reg, entryPt, saveRegs) = let (* Normally we won't have a stack overflow so we will skip the check. *) val skipCheckLab = makeLabel() in (* Need it in reverse order. *) [ JumpLabel skipCheckLab, CallRTS{rtsEntry=entryPt, saveRegs=saveRegs}, ConditionalBranch{test=JNB, predict=PredictTaken, label=skipCheckLab}, ArithToGenReg{ opc=CMP, output=reg, source=MemoryArg{offset=memRegStackLimit, base=ebp, index=NoIndex} } ] end local val numRegisters = Vector.length allocatedRegisters val uses = Array.array(numRegisters, false) fun used(PReg r) = Array.update(uses, r, true) fun isUsed(PReg r) = Array.sub(uses, r) (* Set the registers used by the sources. This differs from getInstructionState in that we don't set the base register of a memory location to "used" if we can use the cache. *) fun argUses(RegisterArgument rarg) = used rarg | argUses(MemoryLocation { cache=SOME cr, ...}) = used cr | argUses(MemoryLocation { base, index, cache=NONE, ...}) = (used base; indexUses index) | argUses(StackLocation { cache=SOME rarg, ...}) = used rarg | argUses _ = () and indexUses NoMemIndex = () | indexUses(MemIndex1 arg) = used arg | indexUses(MemIndex2 arg) = used arg | indexUses(MemIndex4 arg) = used arg | indexUses(MemIndex8 arg) = used arg (* LoadArgument, TagValue, CopyToCache, UntagValue and BoxValue are eliminated if their destination is not used. In that case their source are not used either. *) fun instructionUses(LoadArgument { source, dest, ...}) = if isUsed dest then argUses source else () | instructionUses(StoreArgument{ source, base, index, ...}) = (argUses source; used base; indexUses index) | instructionUses(LoadMemReg _) = () | instructionUses(BeginFunction _) = () | instructionUses(FunctionCall{regArgs, stackArgs, ...}) = (List.app(argUses o #1) regArgs; List.app argUses stackArgs) | instructionUses(TailRecursiveCall{regArgs, stackArgs, ...}) = (List.app(argUses o #1) regArgs; List.app(argUses o #src) stackArgs) | instructionUses(AllocateMemoryOperation _) = () | instructionUses(AllocateMemoryVariable{size, ...}) = used size | instructionUses(InitialiseMem{size, addr, init}) = (used size; used addr; used init) | instructionUses(InitialisationComplete) = () | instructionUses(JumpLoop{regArgs, stackArgs, ...}) = (List.app(argUses o #1) regArgs; List.app(argUses o #1) stackArgs) | instructionUses(RaiseExceptionPacket{packetReg}) = used packetReg | instructionUses(ReserveContainer _) = () | instructionUses(IndexedCaseOperation{testReg, ...}) = used testReg | instructionUses(LockMutable{addr}) = used addr | instructionUses(WordComparison{arg1, arg2, ...}) = (used arg1; argUses arg2) | instructionUses(PushExceptionHandler _) = () | instructionUses(PopExceptionHandler _) = () | instructionUses(BeginHandler _) = () | instructionUses(ReturnResultFromFunction{resultReg, ...}) = used resultReg | instructionUses(ArithmeticFunction{operand1, operand2, ...}) = (used operand1; argUses operand2) | instructionUses(TestTagBit{arg, ...}) = argUses arg | instructionUses(PushValue {arg, ...}) = argUses arg | instructionUses(CopyToCache{source, dest, ...}) = if isUsed dest then used source else () | instructionUses(ResetStackPtr _) = () | instructionUses(StoreToStack {source, ...}) = argUses source | instructionUses(TagValue{source, dest, ...}) = if isUsed dest then used source else () | instructionUses(UntagValue{dest, cache=SOME cacheR, ...}) = if isUsed dest then used cacheR else () | instructionUses(UntagValue{source, dest, cache=NONE, ...}) = if isUsed dest then used source else () | instructionUses(LoadEffectiveAddress{base, index, ...}) = (case base of SOME bReg => used bReg | NONE => (); indexUses index) | instructionUses(ShiftOperation{operand, shiftAmount, ...}) = (used operand; argUses shiftAmount) | instructionUses(Multiplication{operand1, operand2, ...}) = (used operand1; argUses operand2) | instructionUses(Division{dividend, divisor, ...}) = (used dividend; argUses divisor) | instructionUses(AtomicExchangeAndAdd{base, source}) = (used base; used source) | instructionUses(BoxValue{source, dest, ...}) = if isUsed dest then used source else () | instructionUses(CompareByteVectors{vec1Addr, vec2Addr, length, ...}) = (used vec1Addr; used vec2Addr; used length) | instructionUses(BlockMove{srcAddr, destAddr, length, ...}) = (used srcAddr; used destAddr; used length) | instructionUses(X87Compare{arg1, arg2, ...}) = (used arg1; argUses arg2) | instructionUses(SSE2Compare{arg1, arg2, ...}) = (used arg1; argUses arg2) | instructionUses(X87FPGetCondition _) = () | instructionUses(X87FPArith{arg1, arg2, ...}) = (used arg1; argUses arg2) | instructionUses(X87FPUnaryOps{source, ...}) = used source | instructionUses(X87Float{source, ...}) = argUses source | instructionUses(SSE2Float{source, ...}) = argUses source | instructionUses(SSE2FPArith{arg1, arg2, ...}) = (used arg1; argUses arg2) (* Depth-first scan. *) val visited = Array.array(numBlocks, false) fun processBlocks blockNo = if Array.sub(visited, blockNo) then () (* Done or currently being done. *) else let val () = Array.update(visited, blockNo, true) val ExtendedBasicBlock { flow, block,...} = Vector.sub(blocks, blockNo) val () = (* Process the dependencies first. *) case flow of ExitCode => () | Unconditional m => processBlocks m | Conditional {trueJump, falseJump, ...} => (processBlocks trueJump; processBlocks falseJump) | IndexedBr cases => List.app processBlocks cases | SetHandler{ handler, continue } => (processBlocks handler; processBlocks continue) | UnconditionalHandle _ => () | ConditionalHandle { continue, ...} => processBlocks continue (* Now this block. *) in List.foldr(fn ({instr, ...}, ()) => instructionUses instr) () block end in val () = processBlocks 0 val isUsed = isUsed end (* Return the register part of a cached item. *) fun decache(StackLocation{cache=SOME r, ...}) = RegisterArgument r | decache(MemoryLocation{cache=SOME r, ...}) = RegisterArgument r | decache arg = arg (* Only get the registers that are actually used. *) val getSaveRegs = List.mapPartial(fn (reg as PReg r) => if isUsed reg then SOME(getAllocatedGenReg r) else NONE) fun codeExtended _ ({instr=LoadArgument{source, dest as PReg dreg, kind}, ...}, code) = if not (isUsed dest) then code else let val realDestReg = getAllocatedReg dreg in case source of RegisterArgument(PReg sreg) => (* Register to register move. Try to use the same register for the source as the destination to eliminate the instruction. *) (* If the source is the same as the destination we don't need to do anything. *) moveIfNecessary({src=getAllocatedReg sreg, dst=realDestReg, kind=kind}, code) | MemoryLocation{cache=SOME(PReg sreg), ...} => (* This is also a register to register move but because the original load is from memory it could be a byte or short precision value. *) let val moveKind = case kind of MoveWord => MoveWord | MoveByte => MoveWord | Move16Bit => MoveWord | Move32Bit => MoveWord | MoveFloat => MoveDouble | MoveDouble => MoveDouble in moveIfNecessary({src=getAllocatedReg sreg, dst=realDestReg, kind=moveKind}, code) end | source => (* Loads of constants or from an address. *) llLoadArgument({source=codeExtArgument source, dest=realDestReg, kind=kind}, code) end | codeExtended _ ({instr=StoreArgument{ source, base=PReg bReg, offset, index, kind, ... }, ...}, code) = ( case (decache source, kind) of (RegisterArgument(PReg sReg), MoveByte) => if isX64 then llStoreArgument{ source=codeExtArgument source, base=getAllocatedGenReg bReg, offset=offset, index=codeExtIndex index, kind=MoveByte} :: code else (* This is complicated on X86/32. We can't use edi or esi for the store registers. Instead we reserve ecx (see special case in "identify") and use that if we have to. *) let val realStoreReg = getAllocatedReg sReg val (moveCode, storeReg) = if realStoreReg = GenReg edi orelse realStoreReg = GenReg esi then (moveIfNecessary({src=realStoreReg, dst=GenReg ecx, kind=MoveWord}, code), GenReg ecx) else (code, realStoreReg) in llStoreArgument{ source=RegisterArg storeReg, base=getAllocatedGenReg bReg, offset=offset, index=codeExtIndex index, kind=MoveByte} :: moveCode end | _ => llStoreArgument{ source=codeExtArgument source, base=getAllocatedGenReg bReg, offset=offset, index=codeExtIndex index, kind=kind} :: code ) | codeExtended _ ({instr=LoadMemReg { offset, dest=PReg pr}, ...}, code) = (* Load from the "memory registers" pointed at by ebp. *) llLoadArgument({source=MemoryArg{base=ebp, offset=offset, index=NoIndex}, dest=getAllocatedReg pr, kind=MoveWord}, code) | codeExtended _ ({instr=BeginFunction{regArgs, ...}, ...}, code) = let fun mkPair(PReg pr, rr) = {src=rr,dst=getAllocatedReg pr} val regPairs = List.map mkPair regArgs in moveMultipleRegisters(regPairs, code) end | codeExtended _ ({instr=TailRecursiveCall{callKind, regArgs=oRegArgs, stackArgs=oStackArgs, stackAdjust, currStackSize, workReg=PReg wReg}, ...}, code) = let val regArgs = List.map (fn (arg, reg) => (decache arg, reg)) oRegArgs and stackArgs = List.map(fn {src, stack } => {src=decache src, stack=stack}) oStackArgs val workReg = getAllocatedReg wReg (* We must leave stack entries as stack entries for the moment. *) fun codeArg(StackLocation{wordOffset, cache=NONE, ...}) = StackSource wordOffset | codeArg arg = OtherSource(codeExtArgument arg) val extStackArgs = map (fn {stack, src} => {dst=StackDest(stack+currStackSize), src=codeArg src}) stackArgs val extRegArgs = map (fn (a, r) => {src=codeArg a, dst=RegDest r}) regArgs (* Tail recursive calls are complicated because we generally have to overwrite the existing stack. That means storing the arguments in the right order to avoid overwriting a value that we are using for a different argument. *) fun codeTailCall(arguments: {dst: destinations, src: llsource} list, stackAdjust, code) = if stackAdjust < 0 then let (* If the function we're calling takes more arguments on the stack than the current function we will have to extend the stack. Do that by pushing the argument whose offset is at -1. Then adjust all the offsets and repeat. *) val {src=argM1, ...} = valOf(List.find(fn {dst=StackDest ~1, ...} => true | _ => false) arguments) fun renumberArgs [] = [] | renumberArgs ({dst=StackDest ~1, ...} :: args) = renumberArgs args (* Remove the one we've done. *) | renumberArgs ({dst, src} :: args) = let val newDest = case dst of StackDest d => StackDest(d+1) | regDest => regDest val newSrc = case src of StackSource wordOffset => StackSource(wordOffset+1) | other => other in {dst=newDest, src=newSrc} :: renumberArgs args end in codeTailCall(renumberArgs arguments, stackAdjust+1, PushToStack(sourceAsGenRegOrMem(sourceToX86Code argM1)) :: code) end else let val loadArgs = moveMultipleValues(arguments, SOME workReg, code) in if stackAdjust = 0 then loadArgs else ResetStack{numWords=stackAdjust, preserveCC=false} :: loadArgs end in JumpToFunction callKind :: codeTailCall(extStackArgs @ extRegArgs, stackAdjust+currStackSize, code) end | codeExtended _ ({instr=FunctionCall{callKind, regArgs=oRegArgs, stackArgs=oStackArgs, dest=PReg dReg, saveRegs}, ...}, code) = let val regArgs = List.map (fn (arg, reg) => (decache arg, reg)) oRegArgs and stackArgs = List.map decache oStackArgs val destReg = getAllocatedReg dReg fun pushStackArgs ([], _, code) = code | pushStackArgs (ContainerAddr {stackOffset, ...} ::args, argNum, code) = let val adjustedAddr = stackOffset+argNum (* If there is an offset relative to rsp we need to add this in. *) val addOffset = if adjustedAddr = 0 then [] else [ArithMemConst{opc=ADD, offset=0, base=esp, source=LargeInt.fromInt(adjustedAddr*wordSize)}] in pushStackArgs(args, argNum+1, addOffset @ PushToStack(RegisterArg esp) :: code) end | pushStackArgs (StackLocation {wordOffset, container, field, ...} ::args, argNum, code) = let (* Have to adjust the offsets of stack arguments. *) val adjusted = StackLocation{wordOffset=wordOffset+argNum, container=container, field=field+argNum, cache=NONE} in pushStackArgs(args, argNum+1, PushToStack(codeExtArgumentAsGenReg adjusted) :: code) end | pushStackArgs (arg::args, argNum, code) = pushStackArgs(args, argNum+1, PushToStack(codeExtArgumentAsGenReg arg) :: code) val pushedArgs = pushStackArgs(stackArgs, 0, code (* Initial code *)) (* We have to adjust any stack offset to account for the arguments we've pushed. *) val numStackArgs = List.length stackArgs (* We don't currently allow the arguments to be memory locations and instead force them into registers. That may be simpler especially if we can get the values directly into the required register. *) fun getRegArgs(RegisterArgument(PReg pr), reg) = SOME{dst=reg, src=getAllocatedReg pr} | getRegArgs(StackLocation {cache=SOME(PReg pr), ...}, reg) = SOME{dst=reg, src=getAllocatedReg pr} | getRegArgs(MemoryLocation _, _) = raise InternalError "FunctionCall - MemoryLocation" | getRegArgs _ = NONE val loadRegArgs = moveMultipleRegisters(List.mapPartial getRegArgs regArgs, pushedArgs) (* These are all items we can load without requiring a source register. That includes loading from the stack. *) fun getConstArgs((AddressConstant m, reg), code) = llLoadArgument({source=AddressConstArg m, dest=reg, kind=MoveWord}, code) | getConstArgs((IntegerConstant i, reg), code) = llLoadArgument({source=NonAddressConstArg i, dest=reg, kind=MoveWord}, code) | getConstArgs((StackLocation { cache=SOME _, ...}, _), code) = code | getConstArgs((StackLocation { wordOffset, ...}, reg), code) = llLoadArgument({source=MemoryArg{offset=(wordOffset+numStackArgs)*wordSize, base=esp, index=NoIndex}, dest=reg, kind=MoveWord}, code) | getConstArgs((ContainerAddr {stackOffset, ...}, reg), code) = if stackOffset+numStackArgs = 0 then llLoadArgument({source=RegisterArg(GenReg esp), dest=reg, kind=MoveWord}, code) else LoadAddress{ output=asGenReg reg, offset=(stackOffset+numStackArgs)*wordSize, base=SOME esp, index=NoIndex } :: code | getConstArgs((RegisterArgument _, _), code) = code | getConstArgs((MemoryLocation _, _), code) = code val loadConstArgs = List.foldl getConstArgs loadRegArgs regArgs (* Push the registers before the call and pop them afterwards. *) fun makeSaves([], code) = CallFunction callKind :: code | makeSaves(PReg reg::regs, code) = let val areg = getAllocatedGenReg reg val _ = areg = eax andalso raise InternalError "codeExtended: eax in save regs" val _ = if List.exists(fn (_, r) => r = GenReg areg) regArgs then raise InternalError "codeExtended: arg reg in save regs" else () in PopR areg :: makeSaves(regs, PushToStack(RegisterArg areg) :: code) end in moveIfNecessary({dst=destReg, src=GenReg eax, kind=MoveWord}, makeSaves(saveRegs, loadConstArgs)) end | codeExtended _ ({instr=AllocateMemoryOperation{ size, flags, dest=PReg dReg, saveRegs}, ...}, code) = let val preserve = getSaveRegs saveRegs in llAllocateMemoryOperation({ size=size, flags=flags, dest=getAllocatedReg dReg, saveRegs=preserve}, code) end | codeExtended _ ({instr=AllocateMemoryVariable{size=PReg size, dest=PReg dest, saveRegs}, ...}, code) = let (* Simple case - no initialiser. *) val saveRegs = getSaveRegs saveRegs val sReg = getAllocatedGenReg size and dReg = getAllocatedGenReg dest val _ = sReg <> dReg orelse raise InternalError "codeGenICode-AllocateMemoryVariable" val allocCode = [ (* Store it as the length field. *) StoreRegToMemory{toStore=sReg, address={base=dReg, offset= ~wordSize, index=NoIndex}}, (* Untag the length *) ShiftConstant{ shiftType=SHR, output=sReg, shift=0w1}, (* Allocate the memory *) AllocStoreVariable{ output=dReg, saveRegs=saveRegs}, (* Compute the number of bytes into dReg. The length in sReg is the number of words as a tagged value so we need to multiply it, add wordSize to include one word for the header then subtract the, multiplied, tag. *) if wordSize = 4 then LoadAddress{output=dReg, base=NONE, offset=wordSize-2, index=Index2 sReg } else LoadAddress{output=dReg, base=NONE, offset=wordSize-4, index=Index4 sReg } ] in allocCode @ code end | codeExtended _ ({instr=InitialiseMem{size=PReg sReg, addr=PReg aReg, init=PReg iReg}, ...}, code) = (* We are going to use rep stosl/q to set the memory. That requires the length to be in ecx, the initialiser to be in eax and the destination to be edi. *) RepeatOperation STOSL :: moveIfNecessary({src=getAllocatedReg iReg, dst=GenReg eax, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg aReg, dst=GenReg edi, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg sReg, dst=GenReg ecx, kind=MoveWord}, code))) | codeExtended _ ({instr=InitialisationComplete, ...}, code) = StoreInitialised :: code | codeExtended _ ({instr=JumpLoop{regArgs, stackArgs, checkInterrupt, workReg}, ...}, code) = let val workReg = Option.map (fn PReg r => getAllocatedReg r) workReg (* TODO: Make the sources and destinations "friends". *) (* We must leave stack entries as stack entries for the moment as with TailCall. *) fun codeArg(StackLocation{wordOffset, ...}) = StackSource wordOffset | codeArg arg = OtherSource(codeExtArgument arg) val extStackArgs = map (fn (src, stack, _) => {dst=StackDest stack, src=codeArg src}) stackArgs val extRegArgs = map (fn (a, PReg r) => {src=codeArg a, dst=RegDest(getAllocatedReg r)}) regArgs val checkCode = case checkInterrupt of NONE => [] | SOME saveRegs => testRegAndTrap (esp, StackOverflowCall, getSaveRegs saveRegs) in checkCode @ moveMultipleValues(extStackArgs @ extRegArgs, workReg, code) end | codeExtended _ ({instr=RaiseExceptionPacket{ packetReg=PReg preg }, ...}, code) = let (* The argument must be put into rax. *) val _ = getAllocatedGenReg preg = eax orelse raise InternalError "codeExtended: RaiseExceptionPacket" in RaiseException :: code end | codeExtended _ ({instr=ReserveContainer{size, ...}, ...}, code) = (* The memory must be cleared in case we have a GC. *) List.tabulate(size, fn _ => PushToStack(NonAddressConstArg(tag 0))) @ code | codeExtended {flow} ({instr=IndexedCaseOperation{testReg=PReg tReg, workReg=PReg wReg}, ...}, code) = let val testReg = getAllocatedReg tReg val workReg = getAllocatedReg wReg val _ = testReg <> workReg orelse raise InternalError "IndexedCaseOperation - same registers" val rReg = asGenReg testReg and wReg = asGenReg workReg val _ = rReg <> wReg orelse raise InternalError "IndexedCaseOperation - same registers" (* This should only be within a block with an IndexedBr flow type. *) val cases = case flow of IndexedBr cases => cases | _ => raise InternalError "codeGenICode: IndexedCaseOperation" val caseLabels = map getBlockLabel cases val startJumpTable = makeLabel() (* Compute the jump address. The index is a tagged integer so it is already multiplied by 2. We need to multiply by four to get the correct size. Subtract off the shifted tag. *) val jumpSize = ref JumpSize8 (* We use JumpToFunction even though we're not actually going to a new function. *) in JumpTable{cases=caseLabels, jumpSize=jumpSize} :: JumpLabel startJumpTable :: JumpToFunction(DirectReg wReg) :: IndexedJumpCalc{ addrReg=wReg, indexReg=rReg, jumpSize=jumpSize } :: LoadLabelAddress{label=startJumpTable, output=wReg} :: code end | codeExtended _ ({instr=LockMutable{addr=PReg pr}, ...}, code) = LockMutableSegment (asGenReg(getAllocatedReg pr)) :: code | codeExtended _ ({instr=WordComparison{ arg1=PReg pr, arg2, ... }, ...}, code) = ArithToGenReg {opc=CMP, output=asGenReg(getAllocatedReg pr), source=codeExtArgumentAsGenReg arg2} :: code (* Set up an exception handler. *) | codeExtended {flow} ({instr=PushExceptionHandler{workReg=PReg hReg}, ...}, code) = let (* Set up an exception handler. *) val workReg=getAllocatedReg hReg (* Although we're pushing this to the stack we need to use LEA on the X86/64 and some arithmetic on the X86/32. We need a work reg for that. *) val handleReg = asGenReg workReg (* This should only be within a block with a SetHandler flow type. *) val handleLabel = case flow of SetHandler{ handler, ...} => handler | _ => raise InternalError "codeGenICode: PushExceptionHandler" val labelRef = getBlockLabel handleLabel (* Set up the handler by pushing the old handler to the stack, pushing the entry point and setting the handler address to the current stack pointer. *) in ( StoreRegToMemory{ toStore=esp, address={offset=memRegHandlerRegister, base=ebp, index=NoIndex}} :: PushToStack(RegisterArg handleReg) :: LoadLabelAddress{ label=labelRef, output=handleReg} :: PushToStack(MemoryArg{base=ebp, offset=memRegHandlerRegister, index=NoIndex}) :: code) end (* Pop an exception handler at the end of a handled section. Executed if no exception has been raised. This removes items from the stack. *) | codeExtended _ ({instr=PopExceptionHandler{workReg=PReg wReg, ...}, ...}, code) = let val workReg = getAllocatedReg wReg val wReg = asGenReg workReg in (* The stack pointer has been adjusted to just above the two words that were stored in PushExceptionHandler. *) ( StoreRegToMemory{ toStore=wReg, address={offset=memRegHandlerRegister, base=ebp, index=NoIndex}} :: PopR wReg :: ResetStack{numWords=1, preserveCC=false} :: code) end (* Start of a handler. Sets the address associated with PushExceptionHandler and provides a register for the packet.*) | codeExtended _ ({instr=BeginHandler{packetReg=PReg pReg, workReg=PReg wReg}, ...}, code) = let (* The exception packet is in rax. *) val realPktReg = getAllocatedReg pReg val realWorkreg = getAllocatedGenReg wReg (* The code here is almost the same as PopExceptionHandler. The only real difference is that PopExceptionHandler needs to pass the result of executing the handled code which could be in any register. This code needs to transmit the exception packet and that is always in rax. *) val beginHandleCode = StoreRegToMemory{ toStore=realWorkreg, address={offset=memRegHandlerRegister, base=ebp, index=NoIndex}} :: PopR realWorkreg :: ResetStack{numWords=1, preserveCC=false} :: MoveToRegister{ source=MemoryArg{base=ebp, offset=memRegHandlerRegister, index=NoIndex}, output=esp } :: code in moveIfNecessary({src=GenReg eax, dst=realPktReg, kind=MoveWord }, beginHandleCode) end | codeExtended _ ({instr=ReturnResultFromFunction { resultReg=PReg resReg, numStackArgs }, ...}, code) = let val resultReg = getAllocatedReg resReg (* If for some reason it's not in the right register we have to move it there. *) in ReturnFromFunction numStackArgs :: moveIfNecessary({src=resultReg, dst=GenReg eax, kind=MoveWord}, code) end | codeExtended _ ({instr=ArithmeticFunction{oper=SUB, resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...}, code) = (* Subtraction - this is special because it can only be done one way round. The first argument must be in a register. *) let val realDestReg = getAllocatedReg resReg val realOp1Reg = getAllocatedReg op1Reg in ArithToGenReg { opc=SUB, output=asGenReg realDestReg, source=codeExtArgumentAsGenReg operand2 } :: moveIfNecessary({src=realOp1Reg, dst=realDestReg, kind=MoveWord}, code) end | codeExtended _ ({instr=ArithmeticFunction{oper, resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...}, code) = (* Arithmetic operation with both arguments as registers. These operations are all symmetric so we can try to put either argument into the result reg and then do the operation on the other arg. *) let val realDestReg = getAllocatedGenReg resReg val realOp1Reg = getAllocatedGenReg op1Reg and realOp2Reg = getAllocatedGenReg op2Reg val (operandReg, moveInstr) = if realOp1Reg = realDestReg then (realOp2Reg, code) else if realOp2Reg = realDestReg then (realOp1Reg, code) else (realOp2Reg, MoveToRegister{source=RegisterArg realOp1Reg, output=realDestReg} :: code) in ArithToGenReg { opc=oper, output=realDestReg, source=RegisterArg operandReg } :: moveInstr end | codeExtended _ ({instr=ArithmeticFunction{oper, resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...}, code) = (* Arithmetic operation with the first argument in a register and the second a constant or memory location. *) let val realDestReg = getAllocatedReg resReg val realOp1Reg = getAllocatedReg op1Reg val op2Arg = codeExtArgumentAsGenReg operand2 (* If we couldn't put it in the result register we have to copy it there. *) (* TODO: Is there the potential for a problem? We don't worry about a conflict between the result register and the arguments. What if the second argument is a memory location with the result reg as a base or index? *) in ArithToGenReg { opc=oper, output=asGenReg realDestReg, source=op2Arg } :: moveIfNecessary({src=realOp1Reg, dst=realDestReg, kind=MoveWord}, code) end | codeExtended _ ({instr=TestTagBit{arg, ...}, ...}, code) = let val codeArg = codeExtArgument arg in case codeArg of RegisterArg reg => TestTagR(asGenReg reg) :: code | MemoryArg {offset, base, index=NoIndex} => TestByteMem{base=base, offset=offset, bits=0w1} :: code | _ => raise InternalError "codeGenICode: TestTagBit" end | codeExtended _ ({instr=PushValue {arg, ...}, ...}, code) = PushToStack(codeExtArgumentAsGenReg arg) :: code | codeExtended _ ({instr=CopyToCache{source=PReg sreg, dest as PReg dreg, kind}, ...}, code) = if not (isUsed dest) then code else let val realDestReg = getAllocatedReg dreg (* Get the source register using the current destination as a preference. *) val realSrcReg = getAllocatedReg sreg in (* If the source is the same as the destination we don't need to do anything. *) moveIfNecessary({src=realSrcReg, dst=realDestReg, kind=kind}, code) end | codeExtended _ ({instr=ResetStackPtr {numWords, preserveCC}, ...}, code) = ( numWords >= 0 orelse raise InternalError "codeGenICode: ResetStackPtr - negative offset"; ResetStack{numWords=numWords, preserveCC=preserveCC} :: code ) | codeExtended _ ({instr=StoreToStack{ source, stackOffset, ... }, ...}, code) = llStoreArgument{ source=codeExtArgument source, base=esp, offset=stackOffset*wordSize, index=NoIndex, kind=MoveWord} :: code | codeExtended _ ({instr=TagValue{source=PReg srcReg, dest as PReg dReg, ...}, ...}, code) = if not (isUsed dest) then code else let val regResult = asGenReg(getAllocatedReg dReg) val realSReg = asGenReg(getAllocatedReg srcReg) in LoadAddress{ output=regResult, offset=1, base=NONE, index=Index2 realSReg } :: code end | codeExtended _ ({instr=UntagValue{dest as PReg dReg, cache=SOME(PReg cacheReg), ...}, ...}, code) = if not (isUsed dest) then code else moveIfNecessary({src=getAllocatedReg cacheReg, dst=getAllocatedReg dReg, kind=MoveWord}, code) | codeExtended _ ({instr=UntagValue{source=PReg sReg, dest as PReg dReg, isSigned, ...}, ...}, code) = if not (isUsed dest) then code else let val regResult = getAllocatedReg dReg val realSReg = getAllocatedReg sReg in ShiftConstant{ shiftType=if isSigned then SAR else SHR, output=asGenReg regResult, shift=0w1 } :: moveIfNecessary({src=realSReg, dst=regResult, kind=MoveWord}, code) end | codeExtended _ ({instr=LoadEffectiveAddress{base, offset, index, dest=PReg dReg}, ...}, code) = let val destReg = asGenReg(getAllocatedReg dReg) val bReg = case base of SOME(PReg br) => SOME(asGenReg(getAllocatedReg br)) | NONE => NONE val indexR = codeExtIndex index in LoadAddress{ output=destReg, offset=offset, base=bReg, index=indexR } :: code end | codeExtended _ ({instr=ShiftOperation{shift, resultReg=PReg resReg, operand=PReg operReg, shiftAmount=IntegerConstant i, ...}, ...}, code) = let val realDestReg = getAllocatedReg resReg val realOpReg = getAllocatedReg operReg in ShiftConstant{ shiftType=shift, output=asGenReg realDestReg, shift=Word8.fromLargeInt i } :: moveIfNecessary({src=realOpReg, dst=realDestReg, kind=MoveWord}, code) end | codeExtended _ ({instr=ShiftOperation{shift, resultReg=PReg resReg, operand=PReg operReg, shiftAmount=RegisterArgument(PReg shiftReg), ...}, ...}, code) = let val realDestReg = getAllocatedReg resReg val realShiftReg = getAllocatedReg shiftReg val realOpReg = getAllocatedReg operReg (* We want the shift in ecx. We may not have got it there but the register should be free. The shift is masked to 5 or 6 bits so we have to check for larger shift values at a higher level.*) in ShiftVariable{ shiftType=shift, output=asGenReg realDestReg } :: moveIfNecessary({src=realOpReg, dst=realDestReg, kind=MoveWord}, moveIfNecessary({src=realShiftReg, dst=GenReg ecx, kind=MoveWord}, code)) end | codeExtended _ ({instr=ShiftOperation _, ...}, _) = raise InternalError "codeExtended - ShiftOperation" | codeExtended _ ({instr= Multiplication{resultReg=PReg resReg, operand1=PReg op1Reg, operand2=RegisterArgument(PReg op2Reg), ...}, ...}, code) = let (* Treat exactly the same as ArithmeticFunction. *) val realDestReg = getAllocatedGenReg resReg val realOp1Reg = getAllocatedGenReg op1Reg and realOp2Reg = getAllocatedGenReg op2Reg val (operandReg, moveInstr) = if realOp1Reg = realDestReg then (realOp2Reg, code) else if realOp2Reg = realDestReg then (realOp1Reg, code) else (realOp2Reg, MoveToRegister{source=RegisterArg realOp1Reg, output=realDestReg} :: code) in MultiplyR { source=RegisterArg operandReg, output=realDestReg } :: moveInstr end | codeExtended _ ({instr=Multiplication{resultReg=PReg resReg, operand1=PReg op1Reg, operand2, ...}, ...}, code) = (* Multiply operation with the first argument in a register and the second a constant or memory location. *) let val realDestReg = getAllocatedReg resReg val realOp1Reg = getAllocatedReg op1Reg val op2Arg = codeExtArgumentAsGenReg operand2 in MultiplyR { output=asGenReg realDestReg, source=op2Arg } :: moveIfNecessary({src=realOp1Reg, dst=realDestReg, kind=MoveWord}, code) end | codeExtended _ ({instr=Division{isSigned, dividend=PReg regDivid, divisor, quotient=PReg regQuot, remainder=PReg regRem}, ...}, code) = let (* TODO: This currently only supports the dividend in a register. LargeWord division will generally load the argument from a box so we could support a memory argument for that case. Word and integer values will always have to be detagged. *) (* Division is specific as to the registers. The dividend must be eax, quotient is eax and the remainder is edx. *) val realDiviReg = getAllocatedReg regDivid val realQuotReg = getAllocatedReg regQuot val realRemReg = getAllocatedReg regRem val divisorArg = codeExtArgument divisor val divisorReg = argAsGenReg divisorArg val _ = divisorReg <> eax andalso divisorReg <> edx orelse raise InternalError "codeGenICode: Division" (* rdx needs to be set to the high order part of the dividend. For signed division that means sign-extending rdx, for unsigned division we clear it. *) val setRDX = if isSigned then SignExtendForDivide else ArithToGenReg{ opc=XOR, output=edx, source=RegisterArg edx } in (* We may need to move one or more of the registers although normally that won't be necessary. Almost certainly only either the remainder or the quotient will actually be used. *) moveMultipleRegisters([{src=GenReg eax, dst=realQuotReg}, {src=GenReg edx, dst=realRemReg}], DivideAccR {arg=divisorReg, isSigned=isSigned} :: setRDX :: moveIfNecessary({src=realDiviReg, dst=GenReg eax, kind=MoveWord}, code)) end | codeExtended _ ({instr=AtomicExchangeAndAdd{base=PReg bReg, source=PReg sReg}, ...}, code) = let val baseReg = asGenReg (getAllocatedReg bReg) and outReg = asGenReg (getAllocatedReg sReg) in AtomicXAdd{base=baseReg, output=outReg} :: code end | codeExtended _ ({instr=BoxValue{boxKind, source=PReg sReg, dest as PReg dReg, saveRegs}, ...}, code) = if not (isUsed dest) then code else let val preserve = getSaveRegs saveRegs val (srcReg, boxSize, moveKind) = case boxKind of BoxLargeWord => (getAllocatedReg sReg, 1, MoveWord) | BoxX87 => (getAllocatedReg sReg, Int.quot(8, wordSize), MoveDouble) | BoxSSE2 => (getAllocatedReg sReg, Int.quot(8, wordSize), MoveDouble) val dstReg = getAllocatedReg dReg in StoreInitialised :: llStoreArgument{ source=RegisterArg srcReg, offset=0, base=asGenReg dstReg, index=NoIndex, kind=moveKind} :: llAllocateMemoryOperation({ size=boxSize, flags=0wx1, dest=dstReg, saveRegs=preserve}, code) end | codeExtended _ ({instr=CompareByteVectors{vec1Addr=PReg v1Reg, vec2Addr=PReg v2Reg, length=PReg lReg, ...}, ...}, code) = (* There's a complication here. CompareByteVectors generates REPE CMPSB to compare the vectors but the condition code is only set if CMPSB is executed at least once. If the value in RCX/ECX is zero it will never be executed and the condition code will be unchanged. We want the result to be "equal" in that case so we need to ensure that is the case. It's quite possible that the condition code has just been set by shifting RCX/ECX to remove the tag in which case it will have set "equal" if the value was zero. We use CMP R/ECX,R/ECX which is two bytes in 32-bit but three in 64-bit. If we knew the length was non-zero (e.g. a constant) we could avoid this. *) RepeatOperation CMPSB :: ArithToGenReg {opc=CMP, output=ecx, source=RegisterArg ecx} :: moveIfNecessary({src=getAllocatedReg v1Reg, dst=GenReg esi, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg v2Reg, dst=GenReg edi, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg lReg, dst=GenReg ecx, kind=MoveWord}, code))) | codeExtended _ ({instr=BlockMove{srcAddr=PReg sReg, destAddr=PReg dReg, length=PReg lReg, isByteMove}, ...}, code) = (* We may need to move these into the appropriate registers. They have been reserved but it's still possible the values could be in something else. *) RepeatOperation(if isByteMove then MOVSB else MOVSL) :: moveIfNecessary({src=getAllocatedReg sReg, dst=GenReg esi, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg dReg, dst=GenReg edi, kind=MoveWord}, moveIfNecessary({src=getAllocatedReg lReg, dst=GenReg ecx, kind=MoveWord}, code))) | codeExtended _ ({instr=X87Compare{arg1=PReg argReg, arg2, ...}, ...}, code) = let val fpReg = getAllocatedFPReg argReg val _ = fpReg = fp0 orelse raise InternalError "codeGenICode: CompareFloatingPt not fp0" (* This currently pops the value. *) in case codeExtArgumentAsFPReg arg2 of RegisterArg fpReg2 => FPArithR{opc=FCOMP, source=fpReg2} :: code | MemoryArg{offset, base=baseReg, index=NoIndex} => FPArithMemory{opc=FCOMP, base=baseReg, offset=offset} :: code | _ => raise InternalError "codeGenICode: CompareFloatingPt: TODO" end | codeExtended _ ({instr=SSE2Compare{arg1=PReg argReg, arg2, ...}, ...}, code) = let val xmmReg = getAllocatedXMMReg argReg val arg2Code = codeExtArgumentAsXMMReg arg2 in XMMArith { opc= SSE2Comp, output=xmmReg, source=arg2Code} :: code end | codeExtended _ ({instr=X87FPGetCondition{dest=PReg dReg, ...}, ...}, code) = moveIfNecessary({src=GenReg eax, dst=getAllocatedReg dReg, kind=MoveWord}, FPStatusToEAX :: code) | codeExtended _ ({instr=X87FPArith{opc, resultReg=PReg resReg, arg1=PReg op1Reg, arg2}, ...}, code) = let val realDestReg = getAllocatedFPReg resReg val realOp1Reg = getAllocatedFPReg op1Reg val _ = realDestReg = fp0 orelse raise InternalError "codeGenICode: FloatingPointArith not fp0" val _ = realOp1Reg = fp0 orelse raise InternalError "codeGenICode: FloatingPointArith not fp0" val op2Arg = codeExtArgumentAsFPReg arg2 in case op2Arg of MemoryArg{offset, base=baseReg, index=NoIndex} => FPArithMemory{opc=opc, base=baseReg, offset=offset} :: code | _ => raise InternalError "codeGenICode: X87FPArith: TODO" end | codeExtended _ ({instr=X87FPUnaryOps{fpOp, dest=PReg resReg, source=PReg op1Reg}, ...}, code) = let val realDestReg = getAllocatedFPReg resReg val realOp1Reg = getAllocatedFPReg op1Reg val _ = realDestReg = fp0 orelse raise InternalError "codeGenICode: X87FPUnaryOps not fp0" val _ = realOp1Reg = fp0 orelse raise InternalError "codeGenICode: X87FPUnaryOps not fp0" in FPUnary fpOp :: code end | codeExtended _ ({instr=X87Float{dest=PReg resReg, source}, ...}, code) = let val intSource = codeExtArgumentAsGenReg source val fpReg = getAllocatedFPReg resReg val _ = fpReg = fp0 orelse raise InternalError "codeGenICode: FloatFixedInt not fp0" in (* This is complicated. The integer value has to be in memory not in a register so we have to push it to the stack and then make sure it is popped afterwards. Because it is untagged it is unsafe to leave it. *) ResetStack{numWords=1, preserveCC=false} :: FPLoadInt{ base=esp, offset=0 } :: PushToStack intSource :: code end | codeExtended _ ({instr=SSE2Float{dest=PReg resReg, source}, ...}, code) = let val xmmResReg = getAllocatedXMMReg resReg val srcReg = case codeExtArgumentAsGenReg source of RegisterArg srcReg => srcReg | _ => raise InternalError "FloatFixedInt: not reg" in XMMConvertFromInt{ output=xmmResReg, source=srcReg} :: code end | codeExtended _ ({instr=SSE2FPArith{opc, resultReg=PReg resReg, arg1=PReg op1Reg, arg2}, ...}, code) = let val realDestReg = getAllocatedXMMReg resReg val realOp1Reg = getAllocatedXMMReg op1Reg val op2Arg = codeExtArgumentAsXMMReg arg2 (* xorpd and andpd require 128-bit arguments with 128-bit alignment. *) val _ = case (opc, op2Arg) of (SSE2Xor, RegisterArg _) => () | (SSE2Xor, _) => raise InternalError "codeGenICode - SSE2Xor not in register" | (SSE2And, RegisterArg _) => () | (SSE2And, _) => raise InternalError "codeGenICode - SSE2And not in register" | _ => () val doMove = if realDestReg = realOp1Reg then code else XMMArith { opc=SSE2Move, source=RegisterArg realOp1Reg, output=realDestReg } :: code in XMMArith{ opc=opc, output=realDestReg, source=op2Arg} :: doMove end val minStackCheck = 20 val inputRegisters = argRegsUsed @ (if hasFullClosure then [GenReg edx] else []) val saveRegs = List.mapPartial(fn GenReg r => SOME r | _ => NONE) inputRegisters val preludeCode = if stackRequired >= minStackCheck then let (* Compute the necessary amount in edi and compare that. *) val stackByteAdjust = ~wordSize * stackRequired val testEdiCode = testRegAndTrap (edi, StackOverflowCallEx, saveRegs) in (* N.B. In reverse order. *) testEdiCode @ [LoadAddress{output=edi, base=SOME esp, index=NoIndex, offset=stackByteAdjust}] end else testRegAndTrap (esp, StackOverflowCall, saveRegs) val newCode = codeCreate (functionName, profileObject, debugSwitches) local (* processed - set to true when a block has been processed. *) val processed = Array.array(numBlocks, false) fun haveProcessed n = Array.sub(processed, n) (* Find the blocks that reference this one. This isn't essential but allows us to try to generate blocks in the order of the control flow. This in turn may allow us to use short branches rather than long ones. *) val labelRefs = Array.array(numBlocks, []) fun setReferences(fromLabel, ExtendedBasicBlock{ flow, ...}) = let val refs = case flow of ExitCode => [] | Unconditional lab => [lab] | Conditional{trueJump, falseJump, ... } => [trueJump, falseJump] | IndexedBr labs => labs | SetHandler { handler, continue } => [handler, continue] | UnconditionalHandle _ => [] | ConditionalHandle { continue, ...} => [continue] fun setRefs toLabel = Array.update(labelRefs, toLabel, fromLabel :: Array.sub(labelRefs, toLabel)) in List.app setRefs refs end val () = Vector.appi setReferences blocks (* Process the blocks. We keep the "stack" explicit rather than using recursion because this allows us to select both arms of a conditional branch sooner. *) fun genCode(toDo, lastFlow, code) = case List.filter (not o haveProcessed) toDo of [] => let (* There's nothing left to do. We may need to add a final branch to the end. *) val finalBranch = case lastFlow of ExitCode => [] | IndexedBr _ => [] | Unconditional dest => [UncondBranch(getBlockLabel dest)] | Conditional { condition, trueJump, falseJump, ...} => [ UncondBranch(getBlockLabel falseJump), ConditionalBranch{test=condition, predict=PredictNeutral, label=getBlockLabel trueJump} ] | SetHandler { continue, ...} => [UncondBranch(getBlockLabel continue)] | UnconditionalHandle _ => [] | ConditionalHandle { continue, ...} => [UncondBranch(getBlockLabel continue)] in finalBranch @ code (* Done. *) end | stillToDo as head :: _ => let local (* Check the references. If all the sources that lead up to this have already been we won't have any backward jumps. *) fun available dest = List.all haveProcessed (Array.sub(labelRefs, dest)) val continuation = case lastFlow of ExitCode => NONE | IndexedBr _ => NONE (* We could put the last branch in here. *) | Unconditional dest => if not (haveProcessed dest) andalso available dest then SOME dest else NONE | Conditional {trueJump, falseJump, ...} => (* Try the falseJump first - this is the usual case. If that fails try the trueJump. *) if not (haveProcessed falseJump) andalso available falseJump then SOME falseJump else if not (haveProcessed trueJump) andalso available trueJump then SOME trueJump else NONE | SetHandler { continue, ... } => (* We want the continuation if possible. We'll need a branch round the handler so that won't help. *) if not (haveProcessed continue) andalso available continue then SOME continue else NONE | UnconditionalHandle _ => NONE | ConditionalHandle _ => NONE in (* First choice - continue the existing block. Second choice - the first item whose sources have all been processed. Third choice - something from the list. *) val picked = case continuation of SOME c => c | NONE => case List.find available stillToDo of SOME c => c | NONE => head end val () = Array.update(processed, picked, true) (* Code to terminate the previous block. *) val startCode = case lastFlow of ExitCode => [] | IndexedBr _ => [] | UnconditionalHandle _ => [] | Unconditional dest => if dest = picked then [] else [UncondBranch(getBlockLabel dest)] | ConditionalHandle { continue, ...} => if continue = picked then [] else [UncondBranch(getBlockLabel continue)] | SetHandler { continue, ... } => if continue = picked then [] else [UncondBranch(getBlockLabel continue)] | Conditional { condition, trueJump, falseJump, ...} => if picked = falseJump (* Usual case. *) then [ConditionalBranch{test=condition, predict=PredictNeutral, label=getBlockLabel trueJump}] else if picked = trueJump then (* We have a jump to the true condition. Invert the jump. This is more than an optimisation. Because this immediately precedes the true block we're not going to generate a label. *) let val revTest = case condition of JE => JNE | JNE => JE | JA => JNA | JB => JNB | JNA => JA | JNB => JB | JL => JGE | JG => JLE | JLE => JG | JGE => JL | JO => JNO | JNO => JO | JP => JNP | JNP => JP in [ConditionalBranch{test=revTest, predict=PredictNeutral, label=getBlockLabel falseJump}] end else [ UncondBranch(getBlockLabel falseJump), ConditionalBranch{test=condition, predict=PredictNeutral, label=getBlockLabel trueJump} ] (* Code-generate the body with the code we've done so far at the end. Add a label at the start if necessary. *) local (* If the previous block dropped through to this and this was the only reference then we don't need a label. *) fun onlyJumpingHere lab = if lab <> picked then false else case Array.sub(labelRefs, picked) of [singleton] => singleton = lab | _ => false val noLabel = case lastFlow of ExitCode => picked = 0 (* Unless this was the first block. *) | Unconditional dest => onlyJumpingHere dest | Conditional { trueJump, falseJump, ...} => onlyJumpingHere trueJump orelse onlyJumpingHere falseJump | IndexedBr _ => false | SetHandler _ => false | UnconditionalHandle _ => false | ConditionalHandle { continue, ...} => onlyJumpingHere continue in val startLabel = if noLabel then [] else [JumpLabel(getBlockLabel picked)] end val ExtendedBasicBlock { flow, block, ...} = Vector.sub(blocks, picked) local fun genCodeBlock(instr, code) = codeExtended {flow=flow} (instr, code) in val bodyCode = List.foldl genCodeBlock (startLabel @ startCode @ code) block end val addSet = case flow of ExitCode => [] | IndexedBr cases => cases | Unconditional dest => [dest] | Conditional {trueJump, falseJump, ...} => [falseJump, trueJump] | SetHandler { handler, continue } => [handler, continue] | UnconditionalHandle _ => [] | ConditionalHandle { continue, ...} => [continue] in genCode(addSet @ stillToDo, flow, bodyCode) end in val ops = genCode([0], ExitCode, preludeCode) end in X86OPTIMISE.generateCode{code=newCode, ops=List.rev ops, labelCount= !outputLabelCount} end val nGenRegs = List.length generalRegisters structure Sharing = struct type intSet = intSet and extendedBasicBlock = extendedBasicBlock and regProperty = regProperty and reg = reg end end; polyml-5.7.1/mlsource/MLCompiler/CodeTree/GENCODESIG.sml0000644000175000017500000000253713204034553021460 0ustar daviddavid(* Copyright (c) 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature GENCODESIG = sig type backendIC and argumentType and machineWord and bicLoadForm type bicLambdaForm = { body : backendIC, name : string, closure : bicLoadForm list, argTypes : argumentType list, resultType : argumentType, localCount : int, heapClosure : bool } val gencodeLambda: bicLambdaForm * Universal.universal list * Address.address -> unit structure Foreign: FOREIGNCALLSIG structure Sharing: sig type backendIC = backendIC and argumentType = argumentType and bicLoadForm = bicLoadForm end end; polyml-5.7.1/mlsource/MLCompiler/DATATYPEREPSIG.sml0000644000175000017500000000424113204034553020476 0ustar daviddavid(* Copyright (c) 2009 David C. J. Matthews 2009. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature DATATYPEREPSIG = sig type codetree type types type values type typeConstrSet type typeId type typeVarForm type typeVarMap type level val chooseConstrRepr : (string*types) list * types list -> { constrs: codetree list, boxed: codetree, size: codetree } type representations val RefForm: representations; val EnumForm: { tag: word, maxTag: word } -> representations; val createNullaryConstructor: representations * types list * string -> codetree val createUnaryConstructor: representations * types list * string -> codetree (* Standard values *) val listConstr: typeConstrSet val nilConstructor: values; val consConstructor: values; val noneConstructor: values val someConstructor: values val optionConstr: typeConstrSet val locationConstr: typeConstrSet and contextConstr: typeConstrSet and prettyConstr: typeConstrSet val mkExIden: types * level * typeVarMap -> codetree (* Types that can be shared. *) structure Sharing: sig type codetree = codetree type types = types type values = values type typeConstrSet = typeConstrSet type typeId = typeId type typeVarForm = typeVarForm type typeVarMap = typeVarMap type level = level end end; polyml-5.7.1/mlsource/MLCompiler/Debugger.sml0000644000175000017500000000243213204034553020075 0ustar daviddavid(* Title: Source level debugger for Poly/ML Author: David Matthews Copyright (c) David Matthews 2000 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Debugger = DEBUGGER_( structure STRUCTVALS = StructVals structure CODETREE = CodeTree structure VALUEOPS = ValueOps structure TYPETREE = TypeTree structure ADDRESS = Address structure COPIER = CopierStruct structure TYPEIDCODE = TypeIDCodeStruct structure LEX = Lex structure UTILITIES = Utilities structure DEBUG = Debug ); polyml-5.7.1/mlsource/MLCompiler/SignaturesStruct.sml0000644000175000017500000000252513204034553021705 0ustar daviddavid(* Copyright David C. J. Matthews 2009 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure SignaturesStruct = SIGNATURES( structure LEX = Lex structure CODETREE = CodeTree structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure TYPETREE = TypeTree structure PARSETREE = ParseTree structure UTILITIES = Utilities structure PRETTY = Pretty structure UNIVERSALTABLE = UniversalTable structure EXPORTTREE = ExportTreeStruct structure COPIER = CopierStruct structure DEBUG = Debug structure VALUEOPS = ValueOps structure UTILITIES = Utilities ); polyml-5.7.1/mlsource/MLCompiler/INITIALISE_.ML0000644000175000017500000027663513204034553017701 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Updated David C.J. Matthews 2008-9, 2012, 2013, 2015-16 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Initialise ML Global Declarations. Author: Dave Matthews,Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor INITIALISE_ ( structure LEX: LEXSIG structure TYPETREE : TYPETREESIG structure STRUCTVALS : STRUCTVALSIG structure VALUEOPS : VALUEOPSSIG structure CODETREE : CODETREESIG structure EXPORTTREE: EXPORTTREESIG structure DATATYPEREP: DATATYPEREPSIG structure TYPEIDCODE: TYPEIDCODESIG structure MAKE: MAKESIG structure ADDRESS : AddressSig structure DEBUG: DEBUGSIG structure DEBUGGER : DEBUGGERSIG structure PRETTY : PRETTYSIG structure PRINTTABLE: PRINTTABLESIG structure MISC : sig val unescapeString : string -> string exception Conversion of string; (* string to int conversion failure *) end structure VERSION: sig val compilerVersion: string val versionNumber: int end structure UNIVERSALTABLE: sig type universal = Universal.universal type univTable type 'a tag = 'a Universal.tag val univLookup: univTable * 'a tag * string -> 'a option val fold: (string * universal * 'a -> 'a) -> 'a -> univTable -> 'a end sharing STRUCTVALS.Sharing = VALUEOPS.Sharing = TYPETREE.Sharing = EXPORTTREE.Sharing = PRETTY.Sharing = CODETREE.Sharing = MAKE.Sharing = ADDRESS = DATATYPEREP.Sharing = TYPEIDCODE.Sharing = DEBUGGER.Sharing = LEX.Sharing = PRINTTABLE.Sharing sharing STRUCTVALS.Sharing = VALUEOPS.Sharing = TYPETREE.Sharing = EXPORTTREE.Sharing = PRETTY.Sharing = CODETREE.Sharing = MAKE.Sharing = ADDRESS = DATATYPEREP.Sharing = TYPEIDCODE.Sharing = DEBUGGER.Sharing = LEX.Sharing = PRINTTABLE.Sharing = UNIVERSALTABLE ) : sig type gEnv val initGlobalEnv : {globalTable : gEnv, intIsArbitraryPrecision: bool } -> unit end = struct open STRUCTVALS; open TYPETREE open VALUEOPS; open CODETREE; open ADDRESS; open MAKE; open MISC; open EXPORTTREE open DATATYPEREP val declInBasis = [DeclaredAt inBasis] fun applyList _ [] = () | applyList f (h :: t) = (f h : unit; applyList f t); fun initGlobalEnv{globalTable : gEnv, intIsArbitraryPrecision: bool } = let val Env globalEnv = MAKE.gEnvAsEnv globalTable val enterGlobalValue = #enterVal globalEnv; val enterGlobalType = #enterType globalEnv; (* Some routines to help make the types. *) local (* careful - STRUCTVALS.intType differs from TYPETREE.intType *) open TYPETREE; in (* Make some type variables *) fun makeEqTV () = mkTypeVar (generalisable, true, false, false) fun makeTV () = mkTypeVar (generalisable, false, false, false) fun makePrintTV() = mkTypeVar (generalisable, false, false, true) fun makeTypeVariable() = makeTv {value=emptyType, level=generalisable, equality=false, nonunifiable=false, printable=false} (* Make some functions *) infixr 5 ->> fun a ->> b = mkFunctionType (a, b); infix 7 **; fun a ** b = mkProductType [a, b]; (* Type identifiers for the types of the declarations. *) val Int = if intIsArbitraryPrecision then intInfType else fixedIntType val String = stringType; val Bool = boolType; val Unit = unitType; val Char = charType; val Word = wordType; val Real = realType val Exn = exnType val mkTypeConstruction = mkTypeConstruction; val () = setPreferredInt(if intIsArbitraryPrecision then intInfConstr else fixedIntConstr) end; fun makePolymorphic(tvs, c) = let open TYPEIDCODE val tvs = List.filter(fn TypeVar tv => not justForEqualityTypes orelse tvEquality tv | _ => false) tvs in if null tvs then c else mkInlproc(c, List.length tvs, "", [], 0) end (* Function to make a type identifier with a pretty printer that just prints "?". None of the types are equality types so the equality function is empty. *) local fun monotypePrinter _ = PRETTY.PrettyString "?" in fun defaultEqAndPrintCode () = let open TypeValue val code = createTypeValue{ eqCode = CodeZero, printCode = mkConst (toMachineWord (ref monotypePrinter)), boxedCode = boxedEither (* Assume this for the moment *), sizeCode = singleWord } in Global (genCode(code, [], 0) ()) end end fun makeTypeAbbreviation(name, fullName, typeVars, typeResult, locations) = makeTypeConstructor( name, typeVars, makeTypeFunction(basisDescription fullName, (typeVars, typeResult)), locations) (* Make an opaque type and add it to an environment. *) fun makeAndDeclareOpaqueType(typeName, fullName, env) = let val typeconstr = makeTypeConstructor(typeName, [], makeFreeId(0, defaultEqAndPrintCode(), false, basisDescription fullName), declInBasis); in #enterType env (typeName, TypeConstrSet(typeconstr, [])); mkTypeConstruction (typeName, typeconstr, [], declInBasis) end; (* List of something *) fun List (base : types) : types = mkTypeConstruction ("list", tsConstr listConstr, [base], declInBasis); (* ref something *) fun Ref (base : types) : types = mkTypeConstruction ("ref", refConstr, [base], declInBasis); fun Option (base : types) : types = mkTypeConstruction ("option", tsConstr optionConstr, [base], declInBasis); (* Type-dependent functions. *) fun mkSpecialFun (name:string, typeof:types, opn: typeDependent) : values = makeOverloaded (name, typeof, opn); (* Overloaded functions. *) fun mkOverloaded (name:string) (typeof: types) : values = mkSpecialFun(name, typeof, TypeDep) (* Make a structure. Returns the table as an environment so that entries can be added to the structure. *) fun makeStructure(parentEnv, name) = let val str as Struct{signat=Signatures{tab, ...}, ...} = makeEmptyGlobal name val () = #enterStruct parentEnv (name, str) val Env env = makeEnv tab in env end val () = enterGlobalType ("unit", TypeConstrSet(unitConstr, [])); local val falseCons = mkGconstr ("false", Bool, createNullaryConstructor(EnumForm{tag=0w0, maxTag=0w1}, [], "false"), true, 2, declInBasis) val trueCons = mkGconstr ("true", Bool, createNullaryConstructor(EnumForm{tag=0w1, maxTag=0w1}, [], "true"), true, 2, declInBasis) val boolEnv = makeStructure(globalEnv, "Bool") (* Bool structure *) val notFn = mkGvar("not", Bool ->> Bool, mkUnaryFn BuiltIns.NotBoolean, declInBasis) in val () = #enterType boolEnv ("bool", TypeConstrSet(boolConstr, [trueCons, falseCons])) val () = #enterVal boolEnv ("true", trueCons) val () = #enterVal boolEnv ("false", falseCons) val () = #enterVal boolEnv ("not", notFn) end; val () = enterGlobalType ("int", TypeConstrSet(if intIsArbitraryPrecision then intInfConstr else fixedIntConstr, [])) val () = enterGlobalType ("char", TypeConstrSet(charConstr, [])) val () = enterGlobalType ("string", TypeConstrSet(stringConstr, [])) val () = enterGlobalType ("real", TypeConstrSet(realConstr, [])) val () = (* Enter :: and nil. *) List.app(fn(tv as Value{name, ...}) => enterGlobalValue(name, tv)) (tsConstructors listConstr) val () = enterGlobalType ("list", listConstr); val () = (* Enter NONE and SOME. *) List.app(fn(tv as Value{name, ...}) => enterGlobalValue(name, tv)) (tsConstructors optionConstr) val () = enterGlobalType ("option", optionConstr); local val refCons = let val a = mkTypeVar(generalisable, false, false, false) in mkGconstr ("ref", a ->> Ref a, createUnaryConstructor(RefForm, [a], "ref"), false, 1, declInBasis) end in val () = enterGlobalType ("ref", TypeConstrSet(refConstr, [refCons])); val () = enterGlobalValue ("ref", refCons); end local open BuiltIns fun monoTypePrinter _ = PRETTY.PrettyString "?" val idCode = let open TypeValue val equalLongWordFn = mkInlproc( mkBinary(LargeWordComparison TestEqual, mkLoadArgument 0, mkLoadArgument 1), 2, "EqualLargeWord()", [], 0) val code = createTypeValue{ eqCode=equalLongWordFn, printCode=mkConst (toMachineWord (ref monoTypePrinter)), boxedCode = boxedNever, sizeCode = singleWord } in Global (genCode(code, [], 0) ()) end in val largeWordType = makeTypeConstructor("word", [], makeFreeId(0, idCode, true, basisDescription "word"), declInBasis) val LargeWord = mkTypeConstruction ("LargeWord.word", largeWordType, [], declInBasis) end val () = enterGlobalType ("exn", TypeConstrSet(exnConstr, [])); val () = enterGlobalType ("word", TypeConstrSet(wordConstr, [])); val runCallEnv = makeStructure(globalEnv, "RunCall") fun enterRunCall (name : string, entry : codetree, typ : types) : unit = let val value = mkGvar (name, typ, entry, declInBasis); in #enterVal runCallEnv (name, value) end local (* unsafeCast. Can be used to convert any value to any type. *) val a = makeTV () val b = makeTV () val unsafeCastEntry = mkInlproc (mkLoadArgument 0 (* just the parameter *), 1, "unsafeCast(1)", [], 0) in val () = enterRunCall ("unsafeCast", makePolymorphic([a, b], unsafeCastEntry), a ->> b) end local val a = makeTV() and b = makeTV() open BuiltIns in (* isShort - test if a value is tagged rather than being an address. *) val () = enterRunCall ("isShort", makePolymorphic([a], mkUnaryFn IsTaggedValue), a ->> Bool) (* pointer equality *) val () = enterRunCall ("pointerEq", makePolymorphic([a], mkBinaryFn(WordComparison{test=TestEqual, isSigned=false})), a ** a ->> Bool) (* load a word. The index is in words and is always zero or positive. *) val () = enterRunCall ("loadWord", makePolymorphic([a, b], mkLoadOperationFn(LoadStoreMLWord{isImmutable=false})), a ** Word ->> b) (* Load a word from an immutable. *) val () = enterRunCall ("loadWordFromImmutable", makePolymorphic([a, b], mkLoadOperationFn(LoadStoreMLWord{isImmutable=true})), a ** Word ->> b) (* load a byte. The index is in bytes and is always zero or positive. Probably the result should be a Word8.word value or a char. *) val () = enterRunCall ("loadByte", makePolymorphic([a, b], mkLoadOperationFn(LoadStoreMLByte{isImmutable=false})), a ** Word ->> b) (* Load a byte from an immutable. *) val () = enterRunCall ("loadByteFromImmutable", makePolymorphic([a, b], mkLoadOperationFn(LoadStoreMLByte{isImmutable=true})), a ** Word ->> b) (* Get the length of a heap cell. *) val () = enterRunCall ("memoryCellLength", makePolymorphic([a], mkUnaryFn MemoryCellLength), a ->> Word) (* Return the flags. Perhaps this could return a Word8.word value instead of a word. *) val () = enterRunCall ("memoryCellFlags", makePolymorphic([a], mkUnaryFn MemoryCellFlags), a ->> Word) (* Return the number of bytes per word. This is a constant since we have separate pre-built compilers for 32-bit and 64-bit. N.B. The byte order is not a constant since we only have a single pre-built compiler for little-endian and big-endian interpreted code. *) val () = enterRunCall ("bytesPerWord", mkConst(toMachineWord wordSize), Word) (* Store a word *) val () = enterRunCall ("storeWord", makePolymorphic([a, b], mkStoreOperationFn(LoadStoreMLWord{isImmutable=false})), mkProductType[a, Word, b] ->> Unit) (* Store a byte *) val () = enterRunCall ("storeByte", makePolymorphic([a, b], mkStoreOperationFn(LoadStoreMLByte{isImmutable=false})), mkProductType[a, Word, b] ->> Unit) (* Lock a mutable cell. *) val () = enterRunCall ("clearMutableBit", makePolymorphic([a], mkUnaryFn ClearMutableFlag), a ->> Unit) (* Allocate a byte cell. The second argument is the flags byte. It might be better if this were a Word8.word value. *) val () = enterRunCall ("allocateByteMemory", makePolymorphic([a], mkBinaryFn AllocateByteMemory), Word ** Word ->> a) (* Allocate a word cell. *) val () = enterRunCall ("allocateWordMemory", makePolymorphic([a, b], mkAllocateWordMemoryFn), mkProductType[Word, Word, a] ->> b) (* Byte vector operations. *) val () = enterRunCall ("byteVectorEqual", makePolymorphic([a], mkBlockOperationFn BlockOpEqualByte), mkProductType[a, a, Word, Word, Word] ->> Bool) val () = enterRunCall ("byteVectorCompare", makePolymorphic([a], mkBlockOperationFn BlockOpCompareByte), mkProductType[a, a, Word, Word, Word] ->> Int) (* Block moves. *) val () = enterRunCall ("moveBytes", makePolymorphic([a], mkBlockOperationFn (BlockOpMove{isByteMove=true})), mkProductType[a, a, Word, Word, Word] ->> Unit) val () = enterRunCall ("moveWords", makePolymorphic([a], mkBlockOperationFn (BlockOpMove{isByteMove=false})), mkProductType[a, a, Word, Word, Word] ->> Unit) (* Untagged loads and stores. *) val () = enterRunCall ("loadUntagged", mkLoadOperationFn LoadStoreUntaggedUnsigned, String ** Word ->> Word) val () = enterRunCall ("storeUntagged", mkStoreOperationFn LoadStoreUntaggedUnsigned, mkProductType[String, Word, Word] ->> Unit) end local val debugOpts = [] (* Place to add debugging if necessary. *) (* [tagInject Pretty.compilerOutputTag (Pretty.prettyPrint(print, 70)), tagInject assemblyCodeTag true] *) fun makeCall rtsCall n entryName = rtsCall (entryName, n, debugOpts) val makeFastCall = makeCall CODETREE.Foreign.rtsCallFast and makeFullCall = makeCall CODETREE.Foreign.rtsCallFull (* We need to wrap this so that the arguments are passed in registers. *) fun makeRunCallTupled (width:int, callN) : codetree = let val name = "rtsCall" ^ Int.toString width; local val f = mkLoadClosure 0 (* first item from enclosing scope *) val tuple = mkLoadArgument 0 (* the inner parameter *) val args = List.tabulate(width, fn n => mkInd (n, tuple)) in val innerBody = mkEval (f, args) end local (* The closure contains the address of the RTS call. *) val f = mkEval(mkConst callN, [mkLoadArgument 0]) val innerLambda = mkInlproc (innerBody, 1, name ^ "(1)", [mkLoadLocal 0], 0) in val outerBody = mkEnv([mkDec (0, f)], innerLambda) end val outerLambda = mkInlproc (outerBody, 1, name, [], 1) in outerLambda end (* This is a general function that calls an RTS function with a set of arguments whose last argument is a container. This is only used for quotRem so it is only made available through LargeInt.callQuotRem. *) fun makeRunCallTupledWithContainer (width:int, containerWidth, callN) : codetree = let val name = String.concat["run_call", Int.toString width, "C", Int.toString containerWidth] val innerLambda : codetree = let val f = mkLoadClosure 0 (* first item from enclosing scope *) val tuple = mkLoadArgument 0 (* the inner parameter *) val ca = 0 (* Address of container *) val args = List.tabulate(width, fn n => mkInd (n, tuple)) @ [mkLoadLocal ca] in mkInlproc( mkEnv([mkContainer(ca, containerWidth, mkEval (f, args))], mkTupleFromContainer(ca, containerWidth)), 1, name ^ "(1)", [mkLoadLocal 0], 1) end val outerLambda = let val f = mkEval(mkConst callN, [mkLoadArgument 0]) in mkInlproc(mkEnv([mkDec (0, f)], innerLambda), 1, name, [], 1) end in outerLambda end local val a = makeTV () and b = makeTV () fun makeInlCode(makeCall, name) = let val call1 = toMachineWord(makeCall 1) val body = mkEval(mkConst call1, [mkLoadArgument 0]) val proc = mkInlproc (body, 1, name, [], 0) in makePolymorphic([a, b], proc) end in val rtsCallFull1Entry = makeInlCode(makeFullCall, "rtsCallFull1") and rtsCallFast1Entry = makeInlCode(makeFastCall, "rtsCallFast1") end local val a = makeTV () and b = makeTV () and c = makeTV () and d = makeTV () and e = makeTV () fun makeRtsCall(n, makeCall) = makeRunCallTupled(n, toMachineWord(makeCall n)) in val rtsCallFull0Entry = makePolymorphic([a], makeRtsCall(0, makeFullCall)) and rtsCallFast0Entry = makePolymorphic([a], makeRtsCall(0, makeFastCall)) val rtsCall0Type = String ->> Unit ->> a val rtsCall1Type = String ->> a ->> b val rtsCallFull2Entry = makePolymorphic([a, b, c], makeRtsCall(2, makeFullCall)) and rtsCallFast2Entry = makePolymorphic([a, b, c], makeRtsCall(2, makeFastCall)) val rtsCall2Type = String ->> TYPETREE.mkProductType [a,b] ->> c val rtsCallFull3Entry = makePolymorphic([a, b, c, d], makeRtsCall(3, makeFullCall)) val rtsCallFast3Entry = makePolymorphic([a, b, c, d], makeRtsCall(3, makeFastCall)) val rtsCall3Type = String ->> TYPETREE.mkProductType [a,b,c] ->> d val rtsCallFast4Entry = makePolymorphic([a, b, c, d, e], makeRtsCall(4, makeFastCall)) val rtsCall4Type = String ->> TYPETREE.mkProductType [a,b,c,d] ->> e end in val () = enterRunCall ("rtsCallFull0", rtsCallFull0Entry, rtsCall0Type) val () = enterRunCall ("rtsCallFast0", rtsCallFast0Entry, rtsCall0Type) val () = enterRunCall ("rtsCallFull1", rtsCallFull1Entry, rtsCall1Type) val () = enterRunCall ("rtsCallFast1", rtsCallFast1Entry, rtsCall1Type) val () = enterRunCall ("rtsCallFull2", rtsCallFull2Entry, rtsCall2Type) val () = enterRunCall ("rtsCallFast2", rtsCallFast2Entry, rtsCall2Type) val () = enterRunCall ("rtsCallFull3", rtsCallFull3Entry, rtsCall3Type) val () = enterRunCall ("rtsCallFast3", rtsCallFast3Entry, rtsCall3Type) val () = enterRunCall ("rtsCallFast4", rtsCallFast4Entry, rtsCall4Type) val quotRemCall = makeRunCallTupledWithContainer(2, 2, toMachineWord(makeFullCall 3)) end local (* Create nullary exception. *) fun makeException0(name, id) = let val exc = Value{ name = name, typeOf = TYPETREE.exnType, access = Global(mkConst(toMachineWord id)), class = Exception, locations = declInBasis, references = NONE, instanceTypes=NONE } in #enterVal runCallEnv (name, exc) end (* Create exception with parameter. *) and makeException1(name, id, exType) = let val exc = Value{ name = name, typeOf = exType ->> TYPETREE.exnType, access = Global(mkConst(toMachineWord id)), class = Exception, locations = declInBasis, references = NONE, instanceTypes=NONE } in #enterVal runCallEnv (name, exc) end (* Exception numbers. Most of these are hard-coded in the RTS. *) val EXC_interrupt = 1 val EXC_syserr = 2 val EXC_size = 4 val EXC_overflow = 5 val EXC_divide = 7 val EXC_conversion = 8 val EXC_XWindows = 10 val EXC_subscript = 11 val EXC_thread = 12 val EXC_foreign = 23 val EXC_Bind = 100 (* In Match compiler. *) val EXC_Match = 101 val EXC_Fail = 103 in val () = List.app makeException0 [ ("Interrupt", EXC_interrupt), ("Size", EXC_size), ("Bind", EXC_Bind), ("Div", EXC_divide), ("Match", EXC_Match), ("Overflow", EXC_overflow), ("Subscript", EXC_subscript) ] val () = List.app makeException1 [ ("Fail", EXC_Fail, String), ("Conversion", EXC_conversion, String), ("XWindows", EXC_XWindows, String), ("Foreign", EXC_foreign, String), ("Thread", EXC_thread, String), ("SysErr", EXC_syserr, String ** Option LargeWord) ] end (* Standard Basis structures for basic types. These contain the definitions of the basic types and operations on them. The structures are extended in the basis library and overloaded functions are extracted from them. *) local val largeIntEnv = makeStructure(globalEnv, "LargeInt") (* The comparison operations take two arbitrary precision ints and a general "compare" function that returns a fixed precision int. *) val compareType = mkProductType[intInfType, intInfType, intInfType ** intInfType ->> fixedIntType] ->> Bool val arithType = mkProductType[intInfType, intInfType, intInfType ** intInfType ->> intInfType] ->> intInfType val callQuotRemType = String ->> intInfType ** intInfType ->> intInfType ** intInfType val callQuotRem = mkGvar ("callQuotRem", callQuotRemType, quotRemCall, declInBasis) fun enterArbitrary(name, oper, typ) = let val value = mkGvar (name, typ, mkArbitraryFn oper, declInBasis) in #enterVal largeIntEnv (name, value) end in val () = #enterType largeIntEnv ("int", TypeConstrSet(intInfConstr, [])) (* These functions are used internally. *) val () = enterArbitrary("less", ArbCompare BuiltIns.TestLess, compareType) val () = enterArbitrary("greater", ArbCompare BuiltIns.TestGreater, compareType) val () = enterArbitrary("lessEq", ArbCompare BuiltIns.TestLessEqual, compareType) val () = enterArbitrary("greaterEq", ArbCompare BuiltIns.TestGreaterEqual, compareType) val () = enterArbitrary("add", ArbArith BuiltIns.ArithAdd, arithType) val () = enterArbitrary("subtract", ArbArith BuiltIns.ArithSub, arithType) val () = enterArbitrary("multiply", ArbArith BuiltIns.ArithMult, arithType) val () = #enterVal largeIntEnv ("callQuotRem", callQuotRem) end local val fixedIntEnv = makeStructure(globalEnv, "FixedInt") open BuiltIns fun enterBinary(name, oper, typ) = let val value = mkGvar (name, typ, mkBinaryFn oper, declInBasis) in #enterVal fixedIntEnv (name, value) end val compareType = fixedIntType ** fixedIntType ->> Bool and binaryType = fixedIntType ** fixedIntType ->> fixedIntType fun enterComparison(name, test) = enterBinary(name, WordComparison{test=test, isSigned=true}, compareType) and enterBinaryOp(name, oper) = enterBinary(name, FixedPrecisionArith oper, binaryType) in val () = #enterType fixedIntEnv ("int", TypeConstrSet(fixedIntConstr, [])) val () = enterComparison("<", TestLess) val () = enterComparison("<=", TestLessEqual) val () = enterComparison(">", TestGreater) val () = enterComparison(">=", TestGreaterEqual) val () = enterBinaryOp("+", ArithAdd) val () = enterBinaryOp("-", ArithSub) val () = enterBinaryOp("*", ArithMult) val () = enterBinaryOp("quot", ArithQuot) val () = enterBinaryOp("rem", ArithRem) end local open BuiltIns val largeWordEnv = makeStructure(globalEnv, "LargeWord") fun enterBinary(name, oper, typ) = let val value = mkGvar (name, typ, mkBinaryFn oper, declInBasis) in #enterVal largeWordEnv (name, value) end val compareType = LargeWord ** LargeWord ->> Bool and binaryType = LargeWord ** LargeWord ->> LargeWord and shiftType = LargeWord ** Word ->> LargeWord (* The shift amount is a Word. *) fun enterComparison(name, test) = enterBinary(name, LargeWordComparison test, compareType) and enterBinaryOp(name, oper) = enterBinary(name, LargeWordArith oper, binaryType) and enterBinaryLogical(name, oper) = enterBinary(name, LargeWordLogical oper, binaryType) and enterBinaryShift(name, oper) = enterBinary(name, LargeWordShift oper, shiftType) in val () = #enterType largeWordEnv ("word", TypeConstrSet(largeWordType, [])) val () = enterComparison("<", TestLess) val () = enterComparison("<=", TestLessEqual) val () = enterComparison(">", TestGreater) val () = enterComparison(">=", TestGreaterEqual) val () = enterBinaryOp("+", ArithAdd) val () = enterBinaryOp("-", ArithSub) val () = enterBinaryOp("*", ArithMult) val () = enterBinaryOp("div", ArithDiv) val () = enterBinaryOp("mod", ArithMod) val () = enterBinaryLogical("orb", LogicalOr) val () = enterBinaryLogical("andb", LogicalAnd) val () = enterBinaryLogical("xorb", LogicalXor) val () = enterBinaryShift("<<", ShiftLeft) val () = enterBinaryShift(">>", ShiftRightLogical) val () = enterBinaryShift("~>>", ShiftRightArithmetic) val LargeWord = LargeWord end local val wordStructEnv = makeStructure(globalEnv, "Word") open BuiltIns fun enterBinary(name, oper, typ) = let val value = mkGvar (name, typ, mkBinaryFn oper, declInBasis) in #enterVal wordStructEnv (name, value) end val compareType = Word ** Word ->> Bool and binaryType = Word ** Word ->> Word fun enterComparison(name, test) = enterBinary(name, WordComparison{test=test, isSigned=false}, compareType) and enterBinaryOp(name, oper) = enterBinary(name, WordArith oper, binaryType) and enterBinaryLogical(name, oper) = enterBinary(name, WordLogical oper, binaryType) and enterBinaryShift(name, oper) = enterBinary(name, WordShift oper, binaryType) val toLargeWordFn = mkGvar ("toLargeWord", Word ->> LargeWord, mkUnaryFn UnsignedToLongWord, declInBasis) and toLargeWordXFn = mkGvar ("toLargeWordX", Word ->> LargeWord, mkUnaryFn SignedToLongWord, declInBasis) and fromLargeWordFn = mkGvar ("fromLargeWord", LargeWord ->> Word, mkUnaryFn LongWordToTagged, declInBasis) in val () = #enterType wordStructEnv ("word", TypeConstrSet(wordConstr, [])) val () = enterComparison("<", TestLess) val () = enterComparison("<=", TestLessEqual) val () = enterComparison(">", TestGreater) val () = enterComparison(">=", TestGreaterEqual) val () = enterBinaryOp("+", ArithAdd) val () = enterBinaryOp("-", ArithSub) val () = enterBinaryOp("*", ArithMult) val () = enterBinaryOp("div", ArithDiv) val () = enterBinaryOp("mod", ArithMod) val () = enterBinaryLogical("orb", LogicalOr) val () = enterBinaryLogical("andb", LogicalAnd) val () = enterBinaryLogical("xorb", LogicalXor) val () = enterBinaryShift("<<", ShiftLeft) val () = enterBinaryShift(">>", ShiftRightLogical) val () = enterBinaryShift("~>>", ShiftRightArithmetic) val () = #enterVal wordStructEnv ("toLargeWord", toLargeWordFn) val () = #enterVal wordStructEnv ("toLargeWordX", toLargeWordXFn) val () = #enterVal wordStructEnv ("fromLargeWord", fromLargeWordFn) end local val charEnv = makeStructure(globalEnv, "Char") open BuiltIns (* Comparison functions are the same as Word. *) fun enterComparison(name, test) = let val typ = Char ** Char ->> Bool val entry = mkBinaryFn(WordComparison{test=test, isSigned=false}) val value = mkGvar (name, typ, entry, declInBasis) in #enterVal charEnv (name, value) end in val () = #enterType charEnv ("char", TypeConstrSet(charConstr, [])) val () = enterComparison("<", TestLess) val () = enterComparison("<=", TestLessEqual) val () = enterComparison(">", TestGreater) val () = enterComparison(">=", TestGreaterEqual) end local val stringEnv = makeStructure(globalEnv, "String") in val () = #enterType stringEnv ("string", TypeConstrSet(stringConstr, [])) end local val realEnv = makeStructure(globalEnv, "Real") (* These are only used in Real so are included here rather than in RunCall. rtsCallFastFloattoFloat is used for functions such as sqrt. rtsCallFastGeneraltoFloat is used for Real.fromLargeInt. *) val debugOpts = [] (* Place to add debugging if necessary. *) fun makeFastRealRealCall entryName = CODETREE.Foreign.rtsCallFastFloattoFloat (entryName, debugOpts) and makeFastIntInfRealCall entryName = CODETREE.Foreign.rtsCallFastGeneraltoFloat (entryName, debugOpts) val rtsCallFastF_FEntry = mkInlproc (mkEval(mkConst(toMachineWord makeFastRealRealCall), [mkLoadArgument 0]), 1, "rtsCallFastRealReal", [], 0) val rtsCallFastI_FEntry = mkInlproc (mkEval(mkConst(toMachineWord makeFastIntInfRealCall), [mkLoadArgument 0]), 1, "rtsCallFastIntInfReal", [], 0) val rtsCallFastF_F = mkGvar ("rtsCallFastF_F", String ->> Real ->> Real, rtsCallFastF_FEntry, declInBasis) val rtsCallFastG_F = mkGvar ("rtsCallFastI_F", String ->> intInfType ->> Real, rtsCallFastI_FEntry, declInBasis) fun enterUnary(name, oper, typ) = let val value = mkGvar (name, typ, mkUnaryFn oper, declInBasis) in #enterVal realEnv (name, value) end fun enterBinary(name, oper, typ) = let val value = mkGvar (name, typ, mkBinaryFn oper, declInBasis) in #enterVal realEnv (name, value) end val compareType = Real ** Real ->> Bool and binaryType = Real ** Real ->> Real and unaryType = Real ->> Real open BuiltIns fun enterComparison(name, test) = enterBinary(name, RealComparison test, compareType) and enterBinaryOp(name, oper) = enterBinary(name, RealArith oper, binaryType) in val () = #enterType realEnv ("real", TypeConstrSet(realConstr, [])) val () = #enterVal realEnv ("rtsCallFastF_F", rtsCallFastF_F) val () = #enterVal realEnv ("rtsCallFastI_F", rtsCallFastG_F) val () = enterComparison("<", TestLess) val () = enterComparison("<=", TestLessEqual) val () = enterComparison(">", TestGreater) val () = enterComparison(">=", TestGreaterEqual) val () = enterComparison("==", TestEqual) (* real is not an eqtype. *) val () = enterBinaryOp("+", ArithAdd) val () = enterBinaryOp("-", ArithSub) val () = enterBinaryOp("*", ArithMult) val () = enterBinaryOp("/", ArithDiv) val () = enterUnary("~", RealNeg, unaryType) val () = enterUnary("abs", RealAbs, unaryType) val () = enterUnary("fromFixedInt", FloatFixedInt, fixedIntType ->> Real) end val bootstrapEnv = makeStructure(globalEnv, "Bootstrap") fun enterBootstrap (name : string, entry : codetree, typ : types) : unit = let val value = mkGvar (name, typ, entry, declInBasis) in #enterVal bootstrapEnv (name, value) end local val threadEnv = makeStructure(globalEnv, "Thread") open TypeValue fun monoTypePrinter _ = PRETTY.PrettyString "?" val code = createTypeValue{ eqCode=equalWordFn, printCode=mkConst (toMachineWord (ref monoTypePrinter)), boxedCode=boxedAlways, sizeCode=singleWord } (* Thread.thread type. This is an equality type with pointer equality. *) val threadConstr= makeTypeConstructor ( "thread", [], makeFreeId(0, Global (genCode(code, [], 0) ()), true, basisDescription "thread"), [DeclaredAt inBasis]) val threadType = mkTypeConstruction ("thread", threadConstr, [], []); val selfFunction = mkGvar ("self", Unit ->> threadType, getCurrentThreadIdFn, declInBasis) val atIncrFunction = mkGvar("atomicIncr", Ref Word ->> Word, mkUnaryFn BuiltIns.AtomicIncrement, declInBasis) val atDecrFunction = mkGvar("atomicDecr", Ref Word ->> Word, mkUnaryFn BuiltIns.AtomicDecrement, declInBasis) val atResetFunction = mkGvar("atomicReset", Ref Word ->> Unit, mkUnaryFn BuiltIns.AtomicReset, declInBasis) in val () = #enterType threadEnv ("thread", TypeConstrSet(threadConstr, [])) val () = #enterVal threadEnv ("self", selfFunction) val () = #enterVal threadEnv ("atomicIncr", atIncrFunction) val () = #enterVal threadEnv ("atomicDecr", atDecrFunction) val () = #enterVal threadEnv ("atomicReset", atResetFunction) end local val fmemEnv = makeStructure(globalEnv, "ForeignMemory") val a = makeTV() (* We don't have Word8.word or Word32.word at this point so the easiest way to deal with this is to make them polymorphic. *) val get8Function = mkGvar("get8", LargeWord ** Word ->> a, makePolymorphic([a], mkLoadOperationFn LoadStoreC8), declInBasis) val get16Function = mkGvar("get16", LargeWord ** Word ->> Word, mkLoadOperationFn LoadStoreC16, declInBasis) val get32Function = mkGvar("get32", LargeWord ** Word ->> a, makePolymorphic([a], mkLoadOperationFn LoadStoreC32), declInBasis) val get64Function = mkGvar("get64", LargeWord ** Word ->> LargeWord, mkLoadOperationFn LoadStoreC64, declInBasis) val getFloatFunction = mkGvar("getFloat", LargeWord ** Word ->> Real, mkLoadOperationFn LoadStoreCFloat, declInBasis) val getDoubleFunction = mkGvar("getDouble", LargeWord ** Word ->> Real, mkLoadOperationFn LoadStoreCDouble, declInBasis) val set8Function = mkGvar("set8", mkProductType[LargeWord, Word, a] ->> Unit, makePolymorphic([a], mkStoreOperationFn LoadStoreC8), declInBasis) val set16Function = mkGvar("set16", mkProductType[LargeWord, Word, Word] ->> Unit, mkStoreOperationFn LoadStoreC16, declInBasis) val set32Function = mkGvar("set32", mkProductType[LargeWord, Word, a] ->> Unit, makePolymorphic([a], mkStoreOperationFn LoadStoreC32), declInBasis) val set64Function = mkGvar("set64", mkProductType[LargeWord, Word, LargeWord] ->> Unit, mkStoreOperationFn LoadStoreC64, declInBasis) val setFloatFunction = mkGvar("setFloat", mkProductType[LargeWord, Word, Real] ->> Unit, mkStoreOperationFn LoadStoreCFloat, declInBasis) val setDoubleFunction = mkGvar("setDouble", mkProductType[LargeWord, Word, Real] ->> Unit, mkStoreOperationFn LoadStoreCDouble, declInBasis) in val () = #enterVal fmemEnv ("get8", get8Function) val () = #enterVal fmemEnv ("get16", get16Function) val () = #enterVal fmemEnv ("get32", get32Function) val () = #enterVal fmemEnv ("get64", get64Function) val () = #enterVal fmemEnv ("getFloat", getFloatFunction) val () = #enterVal fmemEnv ("getDouble", getDoubleFunction) val () = #enterVal fmemEnv ("set8", set8Function) val () = #enterVal fmemEnv ("set16", set16Function) val () = #enterVal fmemEnv ("set32", set32Function) val () = #enterVal fmemEnv ("set64", set64Function) val () = #enterVal fmemEnv ("setFloat", setFloatFunction) val () = #enterVal fmemEnv ("setDouble", setDoubleFunction) end local fun addVal (name : string, value : 'a, typ : types) : unit = enterBootstrap (name, mkConst (toMachineWord value), typ) (* These are only used during the bootstrap phase. Replacements are installed once the appropriate modules of the basis library are compiled. *) fun intOfString s = let val radix = if String.size s >= 3 andalso String.substring(s, 0, 2) = "0x" orelse String.size s >= 4 andalso String.substring(s, 0, 3) = "~0x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (Int.scan radix) s of NONE => raise Conversion "Invalid integer constant" | SOME res => res end fun wordOfString s = let val radix = if String.size s > 2 andalso String.sub(s, 2) = #"x" then StringCvt.HEX else StringCvt.DEC in case StringCvt.scanString (Word.scan radix) s of NONE => raise Conversion "Invalid word constant" | SOME res => res end open PRINTTABLE val convstringCode = genCode(mkConst(toMachineWord unescapeString), [], 0) () val convintCode = genCode(mkConst(toMachineWord intOfString), [], 0) () val convwordCode = genCode(mkConst(toMachineWord wordOfString), [], 0) () in (* Conversion overloads used to be set by the ML bootstrap code. It's simpler to do that here but to maintain compatibility with the 5.6 compiler we need to define these. Once we've rebuilt the compiler this can be removed along with the code that uses it. *) val () = addVal ("convStringName", "convString": string, String) val () = addVal ("convInt", intOfString : string -> int, String ->> TYPETREE.intInfType) val () = addVal ("convWord", wordOfString : string -> word, String ->> Word) (* Convert a string, recognising and converting the escape codes. *) val () = addVal ("convString", unescapeString: string -> string, String ->> String) (* Flag to indicate which version of Int to compile *) val () = addVal ("intIsArbitraryPrecision", intIsArbitraryPrecision, Bool) (* Install the overloads now. *) val () = addOverload("convString", stringConstr, convstringCode) val () = addOverload("convInt", fixedIntConstr, convintCode) val () = addOverload("convInt", intInfConstr, convintCode) val () = addOverload("convWord", wordConstr, convwordCode) end (* The only reason we have vector here is to get equality right. We need vector to be an equality type and to have a specific equality function. *) local fun polyTypePrinter _ _ = PRETTY.PrettyString "?" (* The equality function takes the base equality type as an argument. The inner function takes two arguments which are the two vectors to compare, checks the lengths and if they're equal applies the base equality to each field. *) val eqCode = mkInlproc( mkProc( mkEnv([ (* Length of the items. *) mkDec(0, mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 0)), mkDec(1, mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 1)), mkMutualDecs[(2, (* Loop function. *) mkProc( mkIf( (* Finished? *) mkEqualWord(mkLoadClosure 0, mkLoadArgument 0), CodeTrue, (* Yes, all equal. *) mkIf( mkEval( TypeValue.extractEquality(mkLoadClosure 2), (* Base equality fn *) [ mkLoadOperation(LoadStoreMLWord{isImmutable=true}, mkLoadClosure 3, mkLoadArgument 0), mkLoadOperation(LoadStoreMLWord{isImmutable=true}, mkLoadClosure 4, mkLoadArgument 0) ]), mkEval(mkLoadClosure 1, (* Recursive call with index+1. *) [ mkBinary(BuiltIns.WordArith BuiltIns.ArithAdd, mkLoadArgument 0, mkConst(toMachineWord 1)) ]), CodeFalse (* Not equal elements - result false *) ) ), 1, "vector-loop", [mkLoadLocal 0 (* Length *), mkLoadLocal 2 (* Loop function *), mkLoadClosure 0 (* Base equality function *), mkLoadArgument 0 (* Vector 0 *), mkLoadArgument 1 (* Vector 1 *)], 0))] ], mkIf( (* Test the lengths. *) mkEqualWord(mkLoadLocal 0, mkLoadLocal 1), (* Equal - test the contents. *) mkEval(mkLoadLocal 2, [CodeZero]), CodeFalse (* Not same length- result false *) ) ), 2, "vector-eq", [mkLoadArgument 0], 3), 1, "vector-eq()", [], 0) val idCode = (* Polytype *) let open TypeValue val code = createTypeValue{ eqCode=eqCode, printCode=mkConst (toMachineWord (ref polyTypePrinter)), boxedCode=mkInlproc(boxedAlways, 1, "boxed-vector", [], 0), sizeCode=mkInlproc(singleWord, 1, "size-vector", [], 0)} in Global (genCode(code, [], 0) ()) end in val vectorType = makeTypeConstructor("vector", [makeTypeVariable()], makeFreeId(1, idCode, true, basisDescription "vector"), declInBasis) val () = enterGlobalType ("vector", TypeConstrSet(vectorType, [])) end (* We also need a type with byte-wise equality. *) local fun monoTypePrinter _ = PRETTY.PrettyString "?" (* This is a monotype equality function that takes two byte vectors and compares them byte-by-byte for equality. Because they are vectors of bytes it's unsafe to load the whole words which could look like addresses if the bottom bit happens to be zero. *) val eqCode = mkProc( mkEnv([ (* Length of the items. *) mkDec(0, mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 0)), mkDec(1, mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 1)) ], mkIf( (* Test the lengths. *) mkEqualWord(mkLoadLocal 0, mkLoadLocal 1), (* Equal - test the contents. *) mkEnv([ (* ByteVecEqual takes a byte length so we have to multiply by the number of bytes per word. *) mkDec(2, mkBinary(BuiltIns.WordArith BuiltIns.ArithMult, mkConst(toMachineWord RunCall.bytesPerWord), mkLoadLocal 0)) ], mkBlockOperation{kind=BlockOpEqualByte, leftBase=mkLoadArgument 0, rightBase=mkLoadArgument 1, leftIndex=CodeZero, rightIndex=CodeZero, length=mkLoadLocal 2}), CodeFalse (* Not same length- result false *) ) ), 2, "byteVector-eq", [], 3) val idCode = (* Polytype *) let open TypeValue val code = createTypeValue{ eqCode=eqCode, printCode=mkConst (toMachineWord (ref monoTypePrinter)), boxedCode=boxedAlways, sizeCode=singleWord} in Global (genCode(code, [], 0) ()) end in val byteVectorType = makeTypeConstructor("byteVector", [], makeFreeId(0, idCode, true, basisDescription "byteVector"), declInBasis) val () = #enterType bootstrapEnv ("byteVector", TypeConstrSet(byteVectorType, [])) end (* We also need array and Array2.array to be passed through here so that they have the special property of being eqtypes even if their argument is not. "array" is defined to be in the global environment. *) val () = enterGlobalType ("array", TypeConstrSet(arrayConstr, [])) val () = #enterType bootstrapEnv ("array", TypeConstrSet(array2Constr, [])) val () = #enterType bootstrapEnv ("byteArray", TypeConstrSet(byteArrayConstr, [])) (* "=', '<>', PolyML.print etc are type-specific function which appear to be polymorphic. The compiler recognises these and treats them specially. For (in)equality that means generating type-specific versions of the equality operations; for print etc that means printing in a type-specific way. They can become true polymorphic functions and lose their type-specificity. For (in)equality that means defaulting to structure equality which is normal and expected behaviour. For print etc that means losing the ability to print and just printing "?" so it's important to avoid that happening. "open" treats type-specific functions specially and retains the type-specificity. That's important to allow the prelude code to expand the PolyML structure. *) local val eqType = let val a = makeEqTV () in a ** a ->> Bool end val eqVal = mkSpecialFun("=", eqType, Equal) in val () = enterGlobalValue ("=", eqVal) end local val neqType = let val a = makeEqTV () in a ** a ->> Bool end val neqVal = mkSpecialFun("<>", neqType, NotEqual) in val () = enterGlobalValue ("<>", neqVal) end val polyMLEnv = makeStructure(globalEnv, "PolyML") val enterPolyMLVal = #enterVal polyMLEnv local (* This version of the environment must match that used in the NameSpace structure. *) open TYPETREE (* Create a new structure for them. *) val nameSpaceEnv = makeStructure(polyMLEnv, "NameSpace") (* Substructures. *) val valuesEnv = makeStructure(nameSpaceEnv, "Values") and typesEnv = makeStructure(nameSpaceEnv, "TypeConstrs") and fixesEnv = makeStructure(nameSpaceEnv, "Infixes") and structsEnv = makeStructure(nameSpaceEnv, "Structures") and sigsEnv = makeStructure(nameSpaceEnv, "Signatures") and functsEnv = makeStructure(nameSpaceEnv, "Functors") (* Types for the basic values. These are opaque. *) val valueVal = makeAndDeclareOpaqueType("value", "PolyML.NameSpace.Values.value", valuesEnv) (* Representation of the type of a value. *) val Types = makeAndDeclareOpaqueType("typeExpression", "PolyML.NameSpace.Values.typeExpression", valuesEnv) val typeVal = makeAndDeclareOpaqueType("typeConstr", "PolyML.NameSpace.TypeConstrs.typeConstr", typesEnv) val fixityVal = makeAndDeclareOpaqueType("fixity", "PolyML.NameSpace.Infixes.fixity", fixesEnv) val signatureVal = makeAndDeclareOpaqueType("signatureVal", "PolyML.NameSpace.Signatures.signatureVal", sigsEnv) val structureVal = makeAndDeclareOpaqueType("structureVal", "PolyML.NameSpace.Structures.structureVal", structsEnv) val functorVal = makeAndDeclareOpaqueType("functorVal", "PolyML.NameSpace.Functors.functorVal", functsEnv) (* nameSpace type. Labelled record. *) fun createFields(name, vType): { name: string, typeof: types} list = let val enterFun = String ** vType ->> Unit val lookupFun = String ->> Option vType val allFun = Unit ->> List (String ** vType) in [mkLabelEntry("enter" ^ name, enterFun), mkLabelEntry("lookup" ^ name, lookupFun), mkLabelEntry("all" ^ name, allFun)] end (* We have to use the same names as we use in the env type because we're passing "env" values through the bootstrap. *) val valTypes = [("Val", valueVal), ("Type", typeVal), ("Fix", fixityVal), ("Struct", structureVal), ("Sig", signatureVal), ("Funct", functorVal)] val fields = List.foldl (fn (p,l) => createFields p @ l) [] valTypes val recordType = makeTypeAbbreviation("nameSpace", "PolyML.NameSpace.nameSpace", [], mkLabelled(sortLabels fields, true), declInBasis); val () = #enterType nameSpaceEnv ("nameSpace", TypeConstrSet(recordType, [])); (* The result type of the compiler includes valueVal etc. *) val resultFields = List.map TYPETREE.mkLabelEntry [("values", List(String ** valueVal)), ("fixes", List(String ** fixityVal)), ("types", List(String ** typeVal)), ("structures", List(String ** structureVal)), ("signatures", List(String ** signatureVal)), ("functors", List(String ** functorVal))] in val nameSpaceType = mkTypeConstruction ("nameSpace", recordType, [], declInBasis) val execResult = mkLabelled(sortLabels resultFields, true) type execResult = { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string * typeConstrSet) list } val valueVal = valueVal val typeVal = typeVal val fixityVal = fixityVal val signatureVal = signatureVal val structureVal = structureVal val functorVal = functorVal val Types = Types val valuesEnv = valuesEnv and typesEnv = typesEnv and fixesEnv = fixesEnv and structsEnv = structsEnv and sigsEnv = sigsEnv and functsEnv = functsEnv end local val typeconstr = locationConstr val () = #enterType polyMLEnv ("location", typeconstr); in val Location = mkTypeConstruction ("location", tsConstr typeconstr, [], declInBasis) end (* Interface to the debugger. *) local open TYPETREE val debuggerEnv = makeStructure(polyMLEnv, "DebuggerInterface") (* Make these opaque at this level. *) val locationPropList = makeAndDeclareOpaqueType("locationPropList", "PolyML.DebuggerInterface.locationPropList", debuggerEnv) val typeId = makeAndDeclareOpaqueType("typeId", "PolyML.DebuggerInterface.typeId", debuggerEnv) val machineWordType = makeAndDeclareOpaqueType("machineWord", "PolyML.DebuggerInterface.machineWord", debuggerEnv) (* For long term security keep these as different from global types and sigs. Values in the static environment need to be copied before they are global. *) val localType = makeAndDeclareOpaqueType("localType", "PolyML.DebuggerInterface.localType", debuggerEnv) val localTypeConstr = makeAndDeclareOpaqueType("localTypeConstr", "PolyML.DebuggerInterface.localTypeConstr", debuggerEnv) val localSig = makeAndDeclareOpaqueType("localSig", "PolyML.DebuggerInterface.localSig", debuggerEnv) open DEBUGGER (* Entries in the static list. This type is only used within the implementation of DebuggerInterface in the basis library and does not appear in the final signature. *) val environEntryConstr = makeTypeConstructor("environEntry", [], makeFreeId(0, defaultEqAndPrintCode(), false, basisDescription "PolyML.DebuggerInterface.environEntry"), declInBasis) val environEntryType = mkTypeConstruction ("environEntry", environEntryConstr, [], declInBasis) val constrs = (* Order is significant. *) [ ("EnvEndFunction", mkProductType[String, Location, localType]), ("EnvException", mkProductType[String, localType, locationPropList]), ("EnvStartFunction", mkProductType[String, Location, localType]), ("EnvStructure", mkProductType[String, localSig, locationPropList]), ("EnvTConstr", String ** localTypeConstr), ("EnvTypeid", typeId ** typeId), ("EnvVConstr", mkProductType[String, localType, Bool, Int, locationPropList]), ("EnvValue", mkProductType[String, localType, locationPropList]) ] (* This representation must match the representation defined in DEBUGGER_.sml. *) val numConstrs = List.length constrs val {constrs=constrReps, ...} = chooseConstrRepr(constrs, []) val constructors = ListPair.map (fn ((s,t), code) => mkGconstr(s, t ->> environEntryType, code, false, numConstrs, declInBasis)) (constrs, constrReps) val () = List.app (fn c => #enterVal debuggerEnv(valName c, c)) constructors (* Put these constructors onto the type. *) val () = #enterType debuggerEnv ("environEntry", TypeConstrSet(environEntryConstr, constructors)) (* Debug state type. *) val debugStateConstr = makeTypeAbbreviation("debugState", "PolyML.DebuggerInterface.debugState", [], mkProductType[List environEntryType, List machineWordType, Location], declInBasis) val () = #enterType debuggerEnv ("debugState", TypeConstrSet(debugStateConstr, [])) val debugStateType = mkTypeConstruction ("debugState", debugStateConstr, [], declInBasis) in val () = applyList (fn (name, v, t) => #enterVal debuggerEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("makeValue", toMachineWord(makeValue: debugState -> string * types * locationProp list * machineWord -> values), debugStateType ->> mkProductType[String, localType, locationPropList, machineWordType] ->> valueVal), ("makeException", toMachineWord(makeException: debugState -> string * types * locationProp list * machineWord -> values), debugStateType ->> mkProductType[String, localType, locationPropList, machineWordType] ->> valueVal), ("makeConstructor", toMachineWord(makeConstructor: debugState -> string * types * bool * int * locationProp list * machineWord -> values), debugStateType ->> mkProductType[String, localType, Bool, Int, locationPropList, machineWordType] ->> valueVal), ("makeAnonymousValue", toMachineWord(makeAnonymousValue: debugState -> types * machineWord -> values), debugStateType ->> mkProductType[localType, machineWordType] ->> valueVal), ("makeStructure", toMachineWord(makeStructure: debugState -> string * signatures * locationProp list * machineWord -> structVals), debugStateType ->> mkProductType[String, localSig, locationPropList, machineWordType] ->> structureVal), ("makeTypeConstr", toMachineWord(makeTypeConstr: debugState -> typeConstrSet -> typeConstrSet), debugStateType ->> localTypeConstr ->> typeVal), ("unitValue", toMachineWord(mkGvar("", unitType, CodeZero, []): values), valueVal), (* Used as a default *) ("setOnEntry", toMachineWord(setOnEntry: (string * PolyML.location -> unit) option -> unit), Option (String ** Location ->> Unit) ->> Unit), ("setOnExit", toMachineWord(setOnExit: (string * PolyML.location -> unit) option -> unit), Option (String ** Location ->> Unit) ->> Unit), ("setOnExitException", toMachineWord(setOnExitException: (string * PolyML.location -> exn -> unit) option -> unit), Option (String ** Location ->> Exn ->> Unit) ->> Unit), ("setOnBreakPoint", toMachineWord(setOnBreakPoint: (PolyML.location * bool ref -> unit) option -> unit), Option (Location ** Ref Bool ->> Unit) ->> Unit) ] end local val typeconstr = contextConstr in val () = #enterType polyMLEnv ("context", typeconstr); val () = List.app(fn(tv as Value{name, ...}) => #enterVal polyMLEnv(name, tv)) (tsConstructors typeconstr) end local val typeconstr = prettyConstr in val () = #enterType polyMLEnv ("pretty", typeconstr); val () = List.app(fn(tv as Value{name, ...}) => #enterVal polyMLEnv(name, tv)) (tsConstructors typeconstr) val PrettyType = mkTypeConstruction ("pretty", tsConstr typeconstr, [], declInBasis) end local val printType = let val a = makePrintTV () in a ->> a end; val printVal = mkSpecialFun("print", printType, Print); in val () = enterPolyMLVal ("print", printVal); end; local val makeStringType = let val a = makePrintTV () in a ->> String end; val makeStringVal = mkSpecialFun("makestring", makeStringType, MakeString); in val () = enterPolyMLVal ("makestring", makeStringVal); end; local val prettyType = let val a = makePrintTV () in a ** fixedIntType ->> PrettyType end; val prettyVal = mkSpecialFun("prettyRepresentation", prettyType, GetPretty); in val () = enterPolyMLVal ("prettyRepresentation", prettyVal); end; local (* addPrettyPrinter is the new function to install a pretty printer. *) val a = makeTV () val b = makeTV () val addPrettyType = (TYPETREE.fixedIntType ->> b ->> a ->> PrettyType) ->> Unit; val addPrettyVal = mkSpecialFun("addPrettyPrinter", addPrettyType, AddPretty); in val () = enterPolyMLVal ("addPrettyPrinter", addPrettyVal); end; (* This goes in RunCall since it's only for the basis library. *) local val addOverloadType = let val a = makeTV () and b = makeTV () in (a ->> b) ->> String ->> Unit end; val addOverloadVal = mkSpecialFun("addOverload", addOverloadType, AddOverload); in val () = #enterVal runCallEnv ("addOverload", addOverloadVal); end local (* Add a function to switch the default integer type. *) fun setType isArbitrary = setPreferredInt(if isArbitrary then intInfConstr else fixedIntConstr) in val () = #enterVal runCallEnv ("setDefaultIntTypeArbitrary", mkGvar ("setDefaultIntTypeArbitrary", Bool ->> Unit, mkConst (toMachineWord setType), declInBasis)) end local val sourceLocVal = mkSpecialFun("sourceLocation", Unit ->> Location, GetLocation); in val () = enterPolyMLVal ("sourceLocation", sourceLocVal); end; local (* This is used as one of the arguments to the compiler function. *) open TYPETREE val uniStructEnv = makeStructure(bootstrapEnv, "Universal") fun enterUniversal (name : string, entry : codetree, typ : types) : unit = let val value = mkGvar (name, typ, entry, declInBasis); in #enterVal uniStructEnv (name, value) end; local fun polyTypePrinter _ _ = PRETTY.PrettyString "?" open TypeValue val idCode = let val code = createTypeValue{ eqCode=CodeZero, (* Not an equality type *) printCode=mkConst (toMachineWord (ref polyTypePrinter)), boxedCode=mkInlproc(boxedEither(* Assume worst case *), 1, "boxed-tag", [], 0), sizeCode=mkInlproc(singleWord, 1, "size-tag", [], 0)} in Global (genCode(code, [], 0) ()) end in (* type 'a tag *) val tagConstr = makeTypeConstructor("tag", [makeTypeVariable()], makeFreeId(1, idCode, false, basisDescription "tag"), declInBasis); val () = #enterType uniStructEnv ("tag", TypeConstrSet(tagConstr, [])) end (* type universal *) val univConstr = makeTypeConstructor("universal", [], makeFreeId(0, defaultEqAndPrintCode(), false, basisDescription "universal"), declInBasis); val () = #enterType uniStructEnv ("universal", TypeConstrSet(univConstr, [])); fun Tag base = mkTypeConstruction ("tag", tagConstr, [base], declInBasis) val Universal = mkTypeConstruction ("universal", univConstr, [], declInBasis) val a = makeTV() (* val tagInject : 'a tag -> 'a -> universal *) val injectType = Tag a ->> a ->> Universal val () = enterUniversal ("tagInject", makePolymorphic([a], mkConst (toMachineWord (Universal.tagInject: 'a Universal.tag -> 'a -> Universal.universal))), injectType) (* We don't actually need tagIs and tagProject since this is only used for the compiler. Universal is redefined in the basis library. *) val projectType = Tag a ->> Universal ->> a val () = enterUniversal ("tagProject", makePolymorphic([a], mkConst (toMachineWord(Universal.tagProject: 'a Universal.tag -> Universal.universal -> 'a))), projectType) val testType = Tag a ->> Universal ->> Bool val () = enterUniversal ("tagIs", makePolymorphic([a], mkConst (toMachineWord(Universal.tagIs: 'a Universal.tag -> Universal.universal -> bool))), testType) in val Tag = Tag and Universal = Universal end local open TYPETREE (* Parsetree properties datatype. *) val propConstr = makeTypeConstructor("ptProperties", [], makeFreeId(0, defaultEqAndPrintCode(), false, basisDescription "PolyML.ptProperties"), declInBasis); val PtProperties = mkTypeConstruction ("ptProperties", propConstr, [], declInBasis) (* Parsetree type. *) val parseTreeConstr = makeTypeAbbreviation("parseTree", "PolyML.parseTree", [], Location ** List PtProperties, declInBasis); val ParseTree = mkTypeConstruction ("parseTree", parseTreeConstr, [], declInBasis) val () = #enterType polyMLEnv ("parseTree", TypeConstrSet(parseTreeConstr, [])); val constrs = (* Order is significant. *) [ ("PTbreakPoint", Ref Bool), ("PTcompletions", List String), ("PTdeclaredAt", Location), ("PTdefId", fixedIntType), ("PTfirstChild", Unit ->> ParseTree), ("PTnextSibling", Unit ->> ParseTree), ("PTopenedAt", Location), ("PTparent", Unit ->> ParseTree), ("PTpreviousSibling", Unit ->> ParseTree), ("PTprint", fixedIntType ->> PrettyType), ("PTreferences", Bool ** List Location), ("PTrefId", fixedIntType), ("PTstructureAt", Location), ("PTtype", Types) ]; (* This representation must match the representation defined in ExportTree.sml. *) val numConstrs = List.length constrs val {constrs=constrReps, ...} = chooseConstrRepr(constrs, []) val constructors = ListPair.map (fn ((s,t), code) => mkGconstr(s, t ->> PtProperties, code, false, numConstrs, declInBasis)) (constrs, constrReps) val () = List.app (fn c => #enterVal polyMLEnv(valName c, c)) constructors (* Put these constructors onto the type. *) val () = #enterType polyMLEnv ("ptProperties", TypeConstrSet(propConstr, constructors)); in val ParseTree = ParseTree and PtProperties = PtProperties end local open TYPETREE val compilerType : types = mkProductType[nameSpaceType, Unit ->> Option Char, List Universal] ->> mkProductType[Option ParseTree, Option (Unit ->> execResult)] type compilerType = nameSpace * (unit -> char option) * Universal.universal list -> exportTree option * (unit->execResult) option in val () = enterBootstrap ("use", mkConst (toMachineWord ((useIntoEnv globalTable []): string -> unit)), String ->> Unit) val () = enterBootstrap ("useWithParms", mkConst (toMachineWord ((useIntoEnv globalTable): Universal.universal list -> string -> unit)), List Universal ->> String ->> Unit) val () = enterPolyMLVal("compiler", mkGvar ("compiler", compilerType, mkConst (toMachineWord (compiler: compilerType)), declInBasis)); val () = enterBootstrap("globalSpace", mkConst (toMachineWord(gEnvAsNameSpace globalTable: nameSpace)), nameSpaceType) end; local val ty = TYPETREE.mkOverloadSet[] val addType = ty ** ty ->> ty; val negType = ty ->> ty; val cmpType = ty ** ty ->> Bool; in val () = enterGlobalValue ("+", mkOverloaded "+" addType); val () = enterGlobalValue ("-", mkOverloaded "-" addType); val () = enterGlobalValue ("*", mkOverloaded "*" addType); val () = enterGlobalValue ("~", mkOverloaded "~" negType); val () = enterGlobalValue ("abs", mkOverloaded "abs" negType); val () = enterGlobalValue (">=", mkOverloaded ">=" cmpType); val () = enterGlobalValue ("<=", mkOverloaded "<=" cmpType); val () = enterGlobalValue (">", mkOverloaded ">" cmpType); val () = enterGlobalValue ("<", mkOverloaded "<" cmpType); (* The following overloads are added in ML97 *) val () = enterGlobalValue ("div", mkOverloaded "div" addType); val () = enterGlobalValue ("mod", mkOverloaded "mod" addType); val () = enterGlobalValue ("/", mkOverloaded "/" addType); end; local open DEBUG; local open TYPETREE val fields = [ mkLabelEntry("location", Location), mkLabelEntry("hard", Bool), mkLabelEntry("message", PrettyType), mkLabelEntry("context", Option PrettyType) ] in val errorMessageProcType = mkLabelled(sortLabels fields, true) ->> Unit type errorMessageProcType = { location: location, hard: bool, message: pretty, context: pretty option } -> unit end local open TYPETREE val optNav = Option(Unit->>ParseTree) val fields = [ mkLabelEntry("parent", optNav), mkLabelEntry("next", optNav), mkLabelEntry("previous", optNav) ] in val navigationType = mkLabelled(sortLabels fields, true) type navigationType = { parent: (unit->exportTree) option, next: (unit->exportTree) option, previous: (unit->exportTree) option } end type 'a tag = 'a Universal.tag in val () = applyList (fn (name, v, t) => enterBootstrap(name, mkConst v, t)) [ ("compilerVersion", toMachineWord (VERSION.compilerVersion: string), String), ("compilerVersionNumber", toMachineWord (VERSION.versionNumber: int), Int), ("lineNumberTag", toMachineWord (lineNumberTag : (unit->FixedInt.int) tag), Tag (Unit->>fixedIntType)), ("offsetTag", toMachineWord (offsetTag: (unit->FixedInt.int) tag), Tag (Unit->>fixedIntType)), ("fileNameTag", toMachineWord (fileNameTag: string tag), Tag String), ("bindingCounterTag", toMachineWord (bindingCounterTag: (unit->FixedInt.int) tag), Tag (Unit->>fixedIntType)), ("maxInlineSizeTag", toMachineWord (maxInlineSizeTag: FixedInt.int tag), Tag fixedIntType), ("assemblyCodeTag", toMachineWord (assemblyCodeTag: bool tag), Tag Bool), ("parsetreeTag", toMachineWord (parsetreeTag: bool tag), Tag Bool), ("codetreeTag", toMachineWord (codetreeTag: bool tag), Tag Bool), ("icodeTag", toMachineWord (icodeTag: bool tag), Tag Bool), ("lowlevelOptimiseTag", toMachineWord (lowlevelOptimiseTag: bool tag), Tag Bool), ("codetreeAfterOptTag", toMachineWord (codetreeAfterOptTag: bool tag), Tag Bool), ("inlineFunctorsTag", toMachineWord (inlineFunctorsTag: bool tag), Tag Bool), ("debugTag", toMachineWord (debugTag: bool tag), Tag Bool), ("printDepthFunTag", toMachineWord (DEBUG.printDepthFunTag: (unit->FixedInt.int) tag), Tag (Unit->>fixedIntType)), ("errorDepthTag", toMachineWord (DEBUG.errorDepthTag: FixedInt.int tag), Tag fixedIntType), ("lineLengthTag", toMachineWord (DEBUG.lineLengthTag: FixedInt.int tag), Tag fixedIntType), ("profileAllocationTag", toMachineWord (DEBUG.profileAllocationTag: FixedInt.int tag), Tag fixedIntType), ("printOutputTag", toMachineWord (PRETTY.printOutputTag: (pretty->unit) tag), Tag (PrettyType->>Unit)) , ("compilerOutputTag", toMachineWord (PRETTY.compilerOutputTag: (pretty->unit) tag), Tag (PrettyType->>Unit)), ("errorMessageProcTag", toMachineWord (LEX.errorMessageProcTag: errorMessageProcType tag), Tag errorMessageProcType), ("rootTreeTag", toMachineWord (EXPORTTREE.rootTreeTag: navigation tag), Tag navigationType), ("reportUnreferencedIdsTag", toMachineWord (reportUnreferencedIdsTag: bool tag), Tag Bool), ("reportExhaustiveHandlersTag", toMachineWord (reportExhaustiveHandlersTag: bool tag), Tag Bool), ("narrowOverloadFlexRecordTag", toMachineWord (narrowOverloadFlexRecordTag: bool tag), Tag Bool), ("createPrintFunctionsTag", toMachineWord (createPrintFunctionsTag: bool tag), Tag Bool), ("reportDiscardedValuesTag", toMachineWord (reportDiscardedValuesTag: FixedInt.int tag), Tag fixedIntType) ] end; (* PolyML.CodeTree structure. This exports the CodeTree structure into the ML space. *) local open CODETREE val codetreeEnv = makeStructure(polyMLEnv, "CodeTree") fun createType typeName = makeAndDeclareOpaqueType(typeName, "PolyML.CodeTree." ^ typeName, codetreeEnv) val CodeTree = createType "codetree" and MachineWord = createType "machineWord" and CodeBinding = createType "codeBinding" (* For the moment export these only for the general argument and result types. *) fun simpleFn (code, nArgs, name, closure, nLocals) = mkFunction{body=code, argTypes=List.tabulate(nArgs, fn _ => GeneralType), resultType=GeneralType, name=name, closure=closure, numLocals=nLocals} and simpleInlineFn (code, nArgs, name, closure, nLocals) = mkInlineFunction{body=code, argTypes=List.tabulate(nArgs, fn _ => GeneralType), resultType=GeneralType, name=name, closure=closure, numLocals=nLocals} and simpleCall(func, args) = mkCall(func, List.map (fn c => (c, GeneralType)) args, GeneralType) in val CodeTree = CodeTree val () = applyList (fn (name, v, t) => #enterVal codetreeEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("pretty", toMachineWord (CODETREE.pretty: codetree -> pretty), CodeTree ->> PrettyType), ("mkConstant", toMachineWord(mkConst: machineWord -> codetree), MachineWord ->> CodeTree), ("genCode", toMachineWord (genCode: codetree * Universal.universal list * int -> (unit->codetree)), mkProductType[CodeTree, List Universal, Int] ->> (Unit ->> CodeTree)), ("evalue", toMachineWord (evalue: codetree -> machineWord option), CodeTree ->> Option MachineWord), ("mkFunction", toMachineWord (simpleFn: codetree * int * string * codetree list * int -> codetree), mkProductType[CodeTree, Int, String, List CodeTree, Int] ->> CodeTree), ("mkInlineFunction", toMachineWord (simpleInlineFn: codetree * int * string * codetree list * int -> codetree), mkProductType[CodeTree, Int, String, List CodeTree, Int] ->> CodeTree), ("mkCall", toMachineWord (simpleCall: codetree * codetree list -> codetree), CodeTree ** List CodeTree ->> CodeTree), ("mkLoadLocal", toMachineWord (mkLoadLocal: int -> codetree), Int ->> CodeTree), ("mkLoadArgument", toMachineWord (mkLoadArgument: int -> codetree), Int ->> CodeTree), ("mkLoadClosure", toMachineWord (mkLoadClosure: int -> codetree), Int ->> CodeTree), ("mkDec", toMachineWord (mkDec: int * codetree -> codeBinding), Int ** CodeTree ->> CodeBinding), ("mkInd", toMachineWord (mkInd: int * codetree -> codetree), Int ** CodeTree ->> CodeTree), ("mkIf", toMachineWord (mkIf: codetree * codetree * codetree -> codetree), mkProductType[CodeTree, CodeTree, CodeTree] ->> CodeTree), ("mkWhile", toMachineWord (mkWhile: codetree * codetree -> codetree), CodeTree ** CodeTree ->> CodeTree), ("mkLoop", toMachineWord (mkLoop: codetree list -> codetree), List CodeTree ->> CodeTree), ("mkBeginLoop", toMachineWord (mkBeginLoop: codetree * (int * codetree) list -> codetree), CodeTree ** List(Int ** CodeTree) ->> CodeTree), ("mkEnv", toMachineWord (mkEnv: codeBinding list * codetree -> codetree), List CodeBinding ** CodeTree ->> CodeTree), ("mkMutualDecs", toMachineWord (mkMutualDecs: (int * codetree) list -> codeBinding), List(Int ** CodeTree) ->> CodeBinding), ("mkTuple", toMachineWord (mkTuple: codetree list -> codetree), List CodeTree ->> CodeTree), ("mkRaise", toMachineWord (mkRaise: codetree -> codetree), CodeTree ->> CodeTree), ("mkHandle", toMachineWord (mkHandle: codetree * codetree * int -> codetree), mkProductType[CodeTree, CodeTree, Int] ->> CodeTree), ("mkNullDec", toMachineWord (mkNullDec: codetree -> codeBinding), CodeTree ->> CodeBinding) ] end local (* Finish off the NameSpace structure now we have types such as pretty. *) open TYPETREE (* The exported versions expect full name spaces as arguments. Because we convert the exported versions to machineWord and give them types as data structures the compiler can't actually check that the type we give matched the internal type. *) fun makeTypeEnv NONE = { lookupType = fn _ => NONE, lookupStruct = fn _ => NONE } | makeTypeEnv(SOME(nameSpace: nameSpace)): printTypeEnv = { lookupType = fn s => case #lookupType nameSpace s of NONE => NONE | SOME t => SOME(t, NONE), lookupStruct = fn s => case #lookupStruct nameSpace s of NONE => NONE | SOME t => SOME(t, NONE) } local (* Values substructure. This also has operations related to type expressions. *) fun codeForValue (Value{access = Global code, class = ValBound, ...}) = code | codeForValue _ = raise Fail "Not a global value" and exportedDisplayTypeExp(ty, depth, nameSpace: nameSpace option) = TYPETREE.display(ty, depth, makeTypeEnv nameSpace) and exportedDisplayValues(valu, depth, nameSpace: nameSpace option) = displayValues(valu, depth, makeTypeEnv nameSpace) and propsForValue (Value {locations, typeOf, ...}) = PTtype typeOf :: mapLocationProps locations fun isConstructor (Value{class = Exception, ...}) = true | isConstructor (Value{class = Constructor _, ...}) = true | isConstructor _ = false fun isException (Value{class = Exception, ...}) = true | isException _ = false in val () = applyList (fn (name, v, t) => #enterVal valuesEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord (valName: values -> string), valueVal ->> String), ("print", toMachineWord (printValues: values * FixedInt.int -> pretty), mkProductType[valueVal, fixedIntType] ->> PrettyType), ("printWithType", toMachineWord (exportedDisplayValues: values * FixedInt.int * nameSpace option -> pretty), mkProductType[valueVal, fixedIntType, Option nameSpaceType] ->> PrettyType), ("printType", toMachineWord(exportedDisplayTypeExp: types * FixedInt.int * nameSpace option -> pretty), mkProductType[Types, fixedIntType, Option nameSpaceType] ->> PrettyType), ("typeof", toMachineWord (valTypeOf: values -> types), valueVal ->> Types), ("code", toMachineWord (codeForValue: values -> codetree), valueVal ->> CodeTree), ("properties", toMachineWord (propsForValue: values ->ptProperties list), valueVal ->> List PtProperties), ("isConstructor", toMachineWord(isConstructor: values -> bool), valueVal ->> Bool), ("isException", toMachineWord(isException: values -> bool), valueVal ->> Bool) ] end local (* TypeConstrs substructure. *) fun exportedDisplayTypeConstr(tyCons, depth, nameSpace: nameSpace option) = TYPETREE.displayTypeConstrs(tyCons, depth, makeTypeEnv nameSpace) and propsForTypeConstr (TypeConstrSet(TypeConstrs {locations, ...}, _)) = mapLocationProps locations and nameForType (TypeConstrSet(TypeConstrs{name, ...}, _)) = name in val () = applyList (fn (name, v, t) => #enterVal typesEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord(nameForType: typeConstrSet -> string), typeVal ->> String), ("print", toMachineWord (exportedDisplayTypeConstr: typeConstrSet * FixedInt.int * nameSpace option -> pretty), mkProductType[typeVal, fixedIntType, Option nameSpaceType] ->> PrettyType), ("properties", toMachineWord (propsForTypeConstr: typeConstrSet ->ptProperties list), typeVal ->> List PtProperties) ] end local (* Structures substructure *) fun exportedDisplayStructs(str, depth, nameSpace: nameSpace option) = displayStructures(str, depth, makeTypeEnv nameSpace) and codeForStruct (Struct{access = Global code, ...}) = code | codeForStruct _ = raise Fail "Not a global structure" and propsForStruct (Struct {locations, ...}) = mapLocationProps locations and nameForStruct (Struct{name, ...}) = name fun nameSpaceForStruct(baseStruct as Struct{signat=Signatures { tab, ...}, ...}): nameSpace = let open UNIVERSALTABLE fun lookupVal s = case univLookup (tab, valueVar, s) of NONE => NONE | SOME v => SOME(makeSelectedValue(v, baseStruct)) and lookupType s = case univLookup (tab, typeConstrVar, s) of NONE => NONE | SOME t => SOME(makeSelectedType(t, baseStruct)) and lookupStruct s = case univLookup (tab, structVar, s) of NONE => NONE | SOME s => SOME(makeSelectedStructure(s, baseStruct)) local fun extractItems t tab = UNIVERSALTABLE.fold (fn (s, u, l) => if Universal.tagIs t u then (s, Universal.tagProject t u) :: l else l ) [] tab in fun allValues() = map(fn (s, v) => (s, makeSelectedValue(v, baseStruct))) (extractItems valueVar tab) and allTypes() = map(fn (s, t) => (s, makeSelectedType(t, baseStruct))) (extractItems typeConstrVar tab) and allStructs() = map(fn (s, v) => (s, makeSelectedStructure(v, baseStruct))) (extractItems structVar tab) end fun enterFunction _ = raise Fail "updating a structure is not possible." (* Raise an exception for any attempt to enter a new value. Return empty for the classes that can't exist in a structure. *) in { lookupVal = lookupVal, lookupType = lookupType, lookupStruct = lookupStruct, lookupFix = fn _ => NONE, lookupSig = fn _ => NONE, lookupFunct = fn _ => NONE, enterVal = enterFunction, enterType = enterFunction, enterFix = enterFunction, enterStruct = enterFunction, enterSig = enterFunction, enterFunct = enterFunction, allVal = allValues, allType = allTypes, allStruct = allStructs, allFix = fn () => [], allSig = fn () => [], allFunct = fn () => [] } end in val () = applyList (fn (name, v, t) => #enterVal structsEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord(nameForStruct: structVals -> string), structureVal ->> String), ("print", toMachineWord (exportedDisplayStructs: structVals * FixedInt.int * nameSpace option -> pretty), mkProductType[structureVal, fixedIntType, Option nameSpaceType] ->> PrettyType), ("code", toMachineWord (codeForStruct: structVals -> codetree), structureVal ->> CodeTree), ("properties", toMachineWord (propsForStruct: structVals ->ptProperties list), structureVal ->> List PtProperties), ("contents", toMachineWord(nameSpaceForStruct: structVals -> nameSpace), structureVal ->> nameSpaceType) ] end local (* Signatures substructure *) fun exportedDisplaySigs(sign, depth, nameSpace: nameSpace option) = displaySignatures(sign, depth, makeTypeEnv nameSpace) and propsForSig (Signatures {locations, ...}) = mapLocationProps locations and nameForSig (Signatures{name, ...}) = name in val () = applyList (fn (name, v, t) => #enterVal sigsEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord(nameForSig: signatures -> string), signatureVal ->> String), ("print", toMachineWord (exportedDisplaySigs: signatures * FixedInt.int * nameSpace option -> pretty), mkProductType[signatureVal, fixedIntType, Option nameSpaceType] ->> PrettyType), ("properties", toMachineWord (propsForSig: signatures ->ptProperties list), signatureVal ->> List PtProperties) ] end local (* Functors substructure *) fun exportedDisplayFunctors(funct, depth, nameSpace: nameSpace option) = displayFunctors(funct, depth, makeTypeEnv nameSpace) and codeForFunct (Functor{access = Global code, ...}) = code | codeForFunct _ = raise Fail "Not a global functor" and propsForFunctor (Functor {locations, ...}) = mapLocationProps locations and nameForFunctor (Functor{name, ...}) = name in val () = applyList (fn (name, v, t) => #enterVal functsEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord(nameForFunctor: functors -> string), functorVal ->> String), ("print", toMachineWord (exportedDisplayFunctors: functors * FixedInt.int * nameSpace option -> pretty), mkProductType[functorVal, fixedIntType, Option nameSpaceType] ->> PrettyType), ("code", toMachineWord (codeForFunct: functors -> codetree), functorVal ->> CodeTree), ("properties", toMachineWord (propsForFunctor: functors ->ptProperties list), functorVal ->> List PtProperties) ] end local (* Infixes substructure *) fun nameForFix(FixStatus(s, _)) = s in val () = applyList (fn (name, v, t) => #enterVal fixesEnv (name, mkGvar (name, t, mkConst v, declInBasis))) [ ("name", toMachineWord(nameForFix: fixStatus -> string), fixityVal ->> String), ("print", toMachineWord (displayFixStatus: fixStatus -> pretty), fixityVal ->> PrettyType) ] end in end in () end (* initGlobalEnv *); end; polyml-5.7.1/mlsource/MLCompiler/Lex.ML0000644000175000017500000000171313204034553016617 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Lex = LEX_ ( structure PRETTY = Pretty structure SYMBOLS = Symbols structure DEBUG = Debug ); polyml-5.7.1/mlsource/MLCompiler/TypeTree.ML0000644000175000017500000000231013204034553017622 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure TypeTree = TYPE_TREE ( structure ADDRESS = Address structure DEBUG = Debug structure LEX = Lex structure STRUCTVALS = StructVals structure UTILITIES = Utilities structure MISC = Misc structure PRETTY = Pretty structure CODETREE = CodeTree structure EXPORTTREE = ExportTreeStruct ) ; polyml-5.7.1/mlsource/MLCompiler/COPIERSIG.sml0000644000175000017500000000334213204034553017676 0ustar daviddavid(* Copyright (c) 2009 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature COPIERSIG = sig type signatures type typeConstrSet type structVals type values type typeId type types type univTable type tsvEnv = { enterType: string * typeConstrSet -> unit, enterStruct: string * structVals -> unit, enterVal : string * values -> unit }; val openSignature: signatures * tsvEnv * string -> unit val fullCopyDatatype: typeConstrSet * (int -> typeId) * string -> typeConstrSet val replaceMap: signatures * (int -> typeId) * int * typeId list * (int -> typeId) -> signatures val getNextRuntimeOffset : signatures -> int structure Sharing: sig type signatures = signatures type typeConstrSet = typeConstrSet type structVals = structVals type values = values type typeId = typeId type types = types type univTable = univTable end end; polyml-5.7.1/mlsource/MLCompiler/MAKESIG.sml0000644000175000017500000000615313204034553017435 0ustar daviddavid(* Copyright (c) 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature MAKESIG = sig type env type gEnv type values type typeConstrSet type fixStatus type structVals type signatures type functors type ptProperties type nameSpace = { lookupVal: string -> values option, lookupType: string -> typeConstrSet option, lookupFix: string -> fixStatus option, lookupStruct: string -> structVals option, lookupSig: string -> signatures option, lookupFunct: string -> functors option, enterVal: string * values -> unit, enterType: string * typeConstrSet -> unit, enterFix: string * fixStatus -> unit, enterStruct: string * structVals -> unit, enterSig: string * signatures -> unit, enterFunct: string * functors -> unit, allVal: unit -> (string*values) list, allType: unit -> (string*typeConstrSet) list, allFix: unit -> (string*fixStatus) list, allStruct: unit -> (string*structVals) list, allSig: unit -> (string*signatures) list, allFunct: unit -> (string*functors) list } type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type exportTree = location * ptProperties list val compiler : nameSpace * (unit->char option) * Universal.universal list -> exportTree option * ( unit -> { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string * typeConstrSet) list }) option val makeGEnv : unit -> gEnv val gEnvAsEnv : gEnv -> env val gEnvAsNameSpace: gEnv -> nameSpace val useIntoEnv : gEnv -> Universal.universal list -> string -> unit val useStringIntoEnv: gEnv -> string -> unit val shellProc : gEnv -> unit -> unit (* The command processor *) structure Sharing: sig type env = env type gEnv = gEnv type values = values type typeConstrSet = typeConstrSet type fixStatus = fixStatus type structVals = structVals type signatures = signatures type functors = functors type ptProperties = ptProperties end end; polyml-5.7.1/mlsource/MLCompiler/DEBUGGER_.sml0000644000175000017500000006740013204034553017702 0ustar daviddavid(* Title: Source level debugger for Poly/ML Author: David Matthews Copyright (c) David Matthews 2000, 2014, 2015 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor DEBUGGER_ ( structure STRUCTVALS : STRUCTVALSIG structure VALUEOPS : VALUEOPSSIG structure CODETREE : CODETREESIG structure TYPETREE: TYPETREESIG structure ADDRESS : AddressSig structure COPIER: COPIERSIG structure TYPEIDCODE: TYPEIDCODESIG structure LEX : LEXSIG structure DEBUG: DEBUGSIG structure UTILITIES : sig val splitString: string -> { first:string,second:string } end sharing STRUCTVALS.Sharing = VALUEOPS.Sharing = TYPETREE.Sharing = COPIER.Sharing = TYPEIDCODE.Sharing = CODETREE.Sharing = ADDRESS = LEX.Sharing ) : DEBUGGERSIG = struct open STRUCTVALS VALUEOPS CODETREE COPIER TYPETREE DEBUG (* The static environment contains these kinds of entries. *) datatype environEntry = EnvValue of string * types * locationProp list | EnvException of string * types * locationProp list | EnvVConstr of string * types * bool * int * locationProp list | EnvTypeid of { original: typeId, freeId: typeId } | EnvStructure of string * signatures * locationProp list | EnvTConstr of string * typeConstrSet | EnvStartFunction of string * location * types | EnvEndFunction of string * location * types local open ADDRESS in (* Entries in the thread data. The RTS allocates enough space for this. The first entry is 5 because earlier entries are used by Thread.Thread. *) val threadIdStack = mkConst(toMachineWord 0w5) (* The static/dynamic/location entries for calling fns *) and threadIdCurrentStatic = mkConst(toMachineWord 0w6) (* The static info for bindings i.e. name/type. *) and threadIdCurrentDynamic = mkConst(toMachineWord 0w7) (* Dynamic infor for bindings i.e. actual run-time value. *) and threadIdCurrentLocation = mkConst(toMachineWord 0w8) (* Location in code: line number/offset etc. *) (* Global function entries. These could be in storage allocated by the RTS. *) (* Specialised option type here. Because a function is always boxed this avoids the need for an extra level of indirection. *) datatype ('a, 'b) functionOpt = NoFunction | AFunction of 'a -> 'b val globalOnEntry = ref NoFunction and globalOnExit = ref NoFunction and globalOnExitExc = ref NoFunction and globalOnBreakPoint = ref NoFunction val onEntryCode = mkLoadOperation(LoadStoreMLWord{isImmutable=false}, mkConst(toMachineWord globalOnEntry), CodeZero) and onExitCode = mkLoadOperation(LoadStoreMLWord{isImmutable=false}, mkConst(toMachineWord globalOnExit), CodeZero) and onExitExcCode = mkLoadOperation(LoadStoreMLWord{isImmutable=false}, mkConst(toMachineWord globalOnExitExc), CodeZero) and onBreakPointCode = mkLoadOperation(LoadStoreMLWord{isImmutable=false}, mkConst(toMachineWord globalOnBreakPoint), CodeZero) (* We need to ensure that any break-point code preserves the state. It could be modified if we hit a break-point and run the interactive debugger with PolyML.Compiler.debug true. *) fun wrap (f:'a -> unit) (x: 'a) : unit = let val threadId: address = RunCall.unsafeCast(Thread.Thread.self()) val stack = loadWord(threadId, 0w5) and static = loadWord(threadId, 0w6) and dynamic = loadWord(threadId, 0w7) and location = loadWord(threadId, 0w8) fun restore () = ( assignWord(threadId, 0w5, stack); assignWord(threadId, 0w6, static); assignWord(threadId, 0w7, dynamic); assignWord(threadId, 0w8, location) ) in f x handle exn => (restore(); PolyML.Exception.reraise exn); restore() end fun setOnEntry NONE = globalOnEntry := NoFunction | setOnEntry (SOME(f: string * PolyML.location -> unit)) = globalOnEntry := AFunction (wrap f) and setOnExit NONE = globalOnExit := NoFunction | setOnExit (SOME(f: string * PolyML.location -> unit)) = globalOnExit := AFunction (wrap f) and setOnExitException NONE = globalOnExitExc := NoFunction | setOnExitException (SOME(f: string * PolyML.location -> exn -> unit)) = globalOnExitExc := AFunction (fn x => wrap (f x)) and setOnBreakPoint NONE = globalOnBreakPoint := NoFunction | setOnBreakPoint (SOME(f: PolyML.location * bool ref -> unit)) = globalOnBreakPoint := AFunction (wrap f) end (* When stopped at a break-point any Bound ids must be replaced by Free ids. We make new Free ids at this point. *) fun envTypeId (id as TypeId{ description, idKind = Bound{arity, ...}, ...}) = EnvTypeid { original = id, freeId = makeFreeId(arity, Global CodeZero, isEquality id, description) } | envTypeId id = EnvTypeid { original = id, freeId = id } fun searchEnvs match (staticEntry :: statics, dlist as dynamicEntry :: dynamics) = ( case (match (staticEntry, dynamicEntry), staticEntry) of (SOME result, _) => SOME result | (NONE, EnvTypeid _) => searchEnvs match (statics, dynamics) | (NONE, EnvVConstr _) => searchEnvs match (statics, dynamics) | (NONE, EnvValue _) => searchEnvs match (statics, dynamics) | (NONE, EnvException _) => searchEnvs match (statics, dynamics) | (NONE, EnvStructure _) => searchEnvs match (statics, dynamics) | (NONE, EnvStartFunction _) => searchEnvs match (statics, dynamics) | (NONE, EnvEndFunction _) => searchEnvs match (statics, dynamics) (* EnvTConstr doesn't have an entry in the dynamic list *) | (NONE, EnvTConstr _) => searchEnvs match (statics, dlist) ) | searchEnvs _ _ = NONE (* N.B. It is possible to have ([EnvTConstr ...], []) in the arguments so we can't treat that if either the static or dynamic list is nil and the other non-nil as an error. *) (* Exported functions that appear in PolyML.DebuggerInterface. *) type debugState = environEntry list * machineWord list * location fun searchType ((clist, rlist, _): debugState) typeid = let fun match (EnvTypeid{original, freeId }, valu) = if sameTypeId(original, typeid) then case freeId of TypeId{description, idKind as Free _, ...} => (* This can occur for datatypes inside functions. *) SOME(TypeId { access= Global(mkConst valu), idKind=idKind, description=description}) | _ => raise Misc.InternalError "searchType: TypeFunction" else NONE | match _ = NONE in case (searchEnvs match (clist, rlist), typeid) of (SOME t, _) => t | (NONE, TypeId{description, idKind = TypeFn typeFn, ...}) => makeTypeFunction(description, typeFn) | (NONE, typeid as TypeId{description, idKind = Bound{arity, ...}, ...}) => (* The type ID is missing. Make a new temporary ID. *) makeFreeId(arity, Global(TYPEIDCODE.codeForUniqueId()), isEquality typeid, description) | (NONE, typeid as TypeId{description, idKind = Free{arity, ...}, ...}) => (* The type ID is missing. Make a new temporary ID. *) makeFreeId(arity, Global(TYPEIDCODE.codeForUniqueId()), isEquality typeid, description) end (* Values must be copied so that compile-time type IDs are replaced by their run-time values. *) fun makeTypeConstr (state: debugState) (TypeConstrSet(tcons, (*tcConstructors*) _)) = let val typeID = searchType state (tcIdentifier tcons) val newTypeCons = makeTypeConstructor(tcName tcons, tcTypeVars tcons, typeID, tcLocations tcons) val newValConstrs = (*map copyAConstructor tcConstructors*) [] in TypeConstrSet(newTypeCons, newValConstrs) end (* When creating a structure we have to add a type map that will look up the bound Ids. *) fun makeStructure state (name, rSig, locations, valu) = let local val Signatures{ name = sigName, tab, typeIdMap, firstBoundIndex, locations=sigLocs, ... } = rSig fun getFreeId n = searchType state (makeBoundId(0 (* ??? *), Global CodeZero, n, false, false, basisDescription "")) in val newSig = makeSignature(sigName, tab, firstBoundIndex, sigLocs, composeMaps(typeIdMap, getFreeId), []) end in makeGlobalStruct (name, newSig, mkConst valu, locations) end local fun runTimeType (state: debugState) ty = let fun copyId(TypeId{idKind=Free _, access=Global _ , ...}) = NONE (* Use original *) | copyId id = SOME(searchType state id) in copyType (ty, fn x => x, fn tcon => copyTypeConstr (tcon, copyId, fn x => x, fn s => s)) end in fun makeValue state (name, ty, location, valu) = mkGvar(name, runTimeType state ty, mkConst valu, location) and makeException state (name, ty, location, valu) = mkGex(name, runTimeType state ty, mkConst valu, location) and makeConstructor state (name, ty, nullary, count, location, valu) = makeValueConstr(name, runTimeType state ty, nullary, count, Global(mkConst valu), location) and makeAnonymousValue state (ty, valu) = makeValue state ("", ty, [], valu) end (* Functions to make the debug entries. These are needed both in CODEGEN_PARSETREE for the core language and STRUCTURES for the module language. *) (* Debugger status within the compiler. During compilation the environment is built up as a pair consisting of the static data and code to compute the run-time data. The static data, a constant at run-time, holds the variable names and types. The run-time code, when executed at run-time, returns the address of a list holding the actual values of the variables. "dynEnv" is always a "load" from a (codetree) variable. It has type level->codetree rather than codetree because the next reference could be inside an inner function. "lastLoc" is the last location that was *) type debuggerStatus = {staticEnv: environEntry list, dynEnv: level->codetree, lastLoc: location} val initialDebuggerStatus: debuggerStatus = {staticEnv = [], dynEnv = fn _ => CodeZero, lastLoc = LEX.nullLocation } (* Set the current state in the thread data. *) fun updateState (level, mkAddr) (decs, debugEnv: debuggerStatus as {staticEnv, dynEnv, ...}) = let open ADDRESS val threadId = multipleUses(getCurrentThreadId, fn () => mkAddr 1, level) fun assignItem(offset, value) = mkNullDec(mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, offset, value)) val newDecs = decs @ #dec threadId @ [assignItem(threadIdCurrentStatic, mkConst(toMachineWord staticEnv)), assignItem(threadIdCurrentDynamic, dynEnv level)] in (newDecs, debugEnv) end fun makeValDebugEntries (vars: values list, debugEnv: debuggerStatus, level, lex, mkAddr, typeVarMap) = if getParameter debugTag (LEX.debugParams lex) then let fun loadVar (var, (decs, {staticEnv, dynEnv, lastLoc, ...})) = let val loadVal = codeVal (var, level, typeVarMap, [], lex, LEX.nullLocation) val newEnv = (* Create a new entry in the environment. *) mkDatatype [ loadVal (* Value. *), dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) val ctEntry = case var of Value{class=Exception, name, typeOf, locations, ...} => EnvException(name, typeOf, locations) | Value{class=Constructor{nullary, ofConstrs, ...}, name, typeOf, locations, ...} => EnvVConstr(name, typeOf, nullary, ofConstrs, locations) | Value{name, typeOf, locations, ...} => EnvValue(name, typeOf, locations) in (decs @ dec, {staticEnv = ctEntry :: staticEnv, dynEnv = load, lastLoc = lastLoc}) end in updateState (level, mkAddr) (List.foldl loadVar ([], debugEnv) vars) end else ([], debugEnv) fun makeTypeConstrDebugEntries(typeCons, debugEnv, level, lex, mkAddr) = if not (getParameter debugTag (LEX.debugParams lex)) then ([], debugEnv) else let fun foldIds(tc :: tcs, {staticEnv, dynEnv, lastLoc, ...}) = let val cons = tsConstr tc val id = tcIdentifier cons val {second = typeName, ...} = UTILITIES.splitString(tcName cons) in if tcIsAbbreviation (tsConstr tc) then foldIds(tcs, {staticEnv=EnvTConstr(typeName, tc) :: staticEnv, dynEnv=dynEnv, lastLoc = lastLoc}) else let (* This code will build a cons cell containing the run-time value associated with the type Id as the hd and the rest of the run-time environment as the tl. *) val loadTypeId = TYPEIDCODE.codeId(id, level) val newEnv = mkDatatype [ loadTypeId, dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) (* Make an entry for the type constructor itself as well as the new type id. The type Id is used both for the type constructor and also for any values of the type. *) val (decs, newEnv) = foldIds(tcs, {staticEnv=EnvTConstr(typeName, tc) :: envTypeId id :: staticEnv, dynEnv=load, lastLoc = lastLoc}) in (dec @ decs, newEnv) end end | foldIds([], debugEnv) = ([], debugEnv) in updateState (level, mkAddr) (foldIds(typeCons, debugEnv)) end fun makeStructDebugEntries (strs: structVals list, debugEnv, level, lex, mkAddr) = if getParameter debugTag (LEX.debugParams lex) then let fun loadStruct (str as Struct { name, signat, locations, ...}, (decs, {staticEnv, dynEnv, lastLoc, ...})) = let val loadStruct = codeStruct (str, level) val newEnv = mkDatatype [ loadStruct (* Structure. *), dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) val ctEntry = EnvStructure(name, signat, locations) in (decs @ dec, {staticEnv=ctEntry :: staticEnv, dynEnv=load, lastLoc = lastLoc}) end in updateState (level, mkAddr) (List.foldl loadStruct ([], debugEnv) strs) end else ([], debugEnv) (* Create debug entries for typeIDs. The idea is that if we stop in the debugger we can access the type ID, particularly for printing values of the type. "envTypeId" creates a free id for each bound id but the print and equality functions are extracted when we are stopped in the debugger. *) fun makeTypeIdDebugEntries(typeIds, debugEnv, level, lex, mkAddr) = if not (getParameter debugTag (LEX.debugParams lex)) then ([], debugEnv) else let fun foldIds(id :: ids, {staticEnv, dynEnv, lastLoc, ...}) = let (* This code will build a cons cell containing the run-time value associated with the type Id as the hd and the rest of the run-time environment as the tl. *) val loadTypeId = case id of TypeId { access = Formal addr, ... } => (* If we are processing functor arguments we will have a Formal here. *) mkInd(addr, mkLoadArgument 0) | _ => TYPEIDCODE.codeId(id, level) val newEnv = mkDatatype [ loadTypeId, dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) val (decs, newEnv) = foldIds(ids, {staticEnv=envTypeId id :: staticEnv, dynEnv=load, lastLoc = lastLoc}) in (dec @ decs, newEnv) end | foldIds([], debugEnv) = ([], debugEnv) in updateState (level, mkAddr) (foldIds(typeIds, debugEnv)) end (* Update the location info in the thread data if we want debugging info. If the location has not changed don't do anything. Whether it has changed could depend on whether we're only counting line numbers or whether we have more precise location info with the IDE. *) fun updateDebugLocation(debuggerStatus as {staticEnv, dynEnv, lastLoc, ...}, location, lex) = if not (getParameter debugTag (LEX.debugParams lex)) orelse lastLoc = location then ([], debuggerStatus) else let open ADDRESS val setLocation = mkStoreOperation(LoadStoreMLWord{isImmutable=false}, getCurrentThreadId, threadIdCurrentLocation, mkConst(toMachineWord location)) in ([mkNullDec setLocation], {staticEnv=staticEnv, dynEnv=dynEnv, lastLoc=location}) end (* Add debugging calls on entry and exit to a function. *) fun wrapFunctionInDebug(codeBody: debuggerStatus -> codetree, name: string, argCode, argType, resType: types, location, entryEnv: debuggerStatus, level, lex, mkAddr) = if not (getParameter debugTag (LEX.debugParams lex)) then codeBody entryEnv (* Code-generate the body without any wrapping. *) else let open ADDRESS val functionName = name (* TODO: munge this to get the root. *) fun addStartExitEntry({staticEnv, dynEnv, lastLoc, ...}, code, ty, startExit) = let val newEnv = mkDatatype [ code, dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) val ctEntry = startExit(functionName, location, ty) in (dec, {staticEnv=ctEntry :: staticEnv, dynEnv=load, lastLoc = lastLoc}) end (* All the "on" functions take this as an argument. *) val onArgs = [mkConst(toMachineWord(functionName, location))] val threadId = multipleUses(getCurrentThreadId, fn () => mkAddr 1, level) fun loadIdEntry offset = multipleUses(mkLoadOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, offset), fn () => mkAddr 1, level) val currStatic = loadIdEntry threadIdCurrentStatic and currDynamic = loadIdEntry threadIdCurrentDynamic and currLocation = loadIdEntry threadIdCurrentLocation and currStack = loadIdEntry threadIdStack (* At the start of the function: 1. Push the previous state to the stack. 2. Create a debugging entry for the arguments 3. Update the state to the state on entry, including the args 4. Call the global onEntry function if it's set 5. Call the local onEntry function if it's set *) (* Save the previous state. *) val assignStack = mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, threadIdStack, mkDatatype[ #load currStatic level, #load currDynamic level, #load currLocation level, #load currStack level]) val prefixCode = #dec threadId @ #dec currStatic @ #dec currDynamic @ #dec currLocation @ #dec currStack @ [mkNullDec assignStack] (* Make a debugging entry for the arguments. This needs to be set before we call onEntry so we can produce tracing info. It also needs to be passed to the body of the function so that it is included in the debug status of the rest of the body. *) local val {staticEnv, dynEnv, lastLoc, ...} = entryEnv val newEnv = mkDatatype [ argCode, dynEnv level ] val { dec, load } = multipleUses (newEnv, fn () => mkAddr 1, level) val ctEntry = EnvStartFunction(functionName, location, argType) in val debuggerDecs = dec val bodyDebugEnv = {staticEnv = ctEntry :: staticEnv, dynEnv = load, lastLoc = lastLoc} end local val {staticEnv, dynEnv, ...} = bodyDebugEnv val assignStatic = mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, threadIdCurrentStatic, mkConst(toMachineWord staticEnv)) val assignDynamic = mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, threadIdCurrentDynamic, dynEnv level) val assignLocation = mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, threadIdCurrentLocation, mkConst(toMachineWord location)) val onEntryFn = multipleUses(onEntryCode, fn () => mkAddr 1, level) val optCallOnEntry = mkIf(mkTagTest(#load onEntryFn level, 0w0, 0w0), CodeZero, mkEval(#load onEntryFn level, onArgs)) in val entryCode = debuggerDecs @ [mkNullDec assignStatic, mkNullDec assignDynamic, mkNullDec assignLocation] @ #dec onEntryFn @ [mkNullDec optCallOnEntry] end (* Restore the state. Used both if the function returns normally or if it raises an exception. We use the old state rather than popping the stack because that is more reliable if we have an asynchronous exception. *) local (* Set the entry in the thread vector to an entry from the top-of-stack. *) fun restoreEntry(offset, value) = mkNullDec( mkStoreOperation(LoadStoreMLWord{isImmutable=false}, #load threadId level, offset, value)) in val restoreState = [restoreEntry(threadIdCurrentStatic, #load currStatic level), restoreEntry(threadIdCurrentDynamic, #load currDynamic level), restoreEntry(threadIdCurrentLocation, #load currLocation level), restoreEntry(threadIdStack, #load currStack level)] end local (* If an exception is raised we need to call the onExitException entry, restore the state and reraise the exception. *) (* There are potential race conditions here if we have asynchronous exceptions. *) val exPacketAddr = mkAddr 1 val onExitExcFn = multipleUses(onExitExcCode, fn () => mkAddr 1, level) (* OnExitException has an extra curried argument - the exception packet. *) val optCallOnExitExc = mkIf(mkTagTest(#load onExitExcFn level, 0w0, 0w0), CodeZero, mkEval(mkEval(#load onExitExcFn level, onArgs), [mkLoadLocal exPacketAddr])) in val exPacketAddr = exPacketAddr val exceptionCase = mkEnv(#dec onExitExcFn @ [mkNullDec optCallOnExitExc] @ restoreState, mkRaise(mkLoadLocal exPacketAddr)) end (* Code for the body and the exception. *) val bodyCode = multipleUses(mkHandle(codeBody bodyDebugEnv, exceptionCase, exPacketAddr), fn () => mkAddr 1, level) (* Code for normal exit. *) local val endFn = addStartExitEntry(entryEnv, #load bodyCode level, resType, EnvEndFunction) val (rtEnvDec, _) = updateState (level, mkAddr) endFn val onExitFn = multipleUses(onExitCode, fn () => mkAddr 1, level) val optCallOnExit = mkIf(mkTagTest(#load onExitFn level, 0w0, 0w0), CodeZero, mkEval(#load onExitFn level, onArgs)) in val exitCode = rtEnvDec @ #dec onExitFn @ [mkNullDec optCallOnExit] end in mkEnv(prefixCode @ entryCode @ #dec bodyCode @ exitCode @ restoreState, #load bodyCode level) end type breakPoint = bool ref (* Create a local break point and check the global and local break points. *) fun breakPointCode(breakPoint, location, level, lex, mkAddr) = if not (getParameter debugTag (LEX.debugParams lex)) then [] else let open ADDRESS (* Create a new local breakpoint and assign it to the ref. It is possible for the ref to be already assigned a local breakpoint value if we are compiling a match. In that case the same expression may be code-generated more than once but we only want one local break-point. *) val localBreakPoint = case breakPoint of ref (SOME bpt) => bpt | r as ref NONE => let val b = ref false in r := SOME b; b end; (* Call the breakpoint function if it's defined. *) val globalBpt = multipleUses(onBreakPointCode, fn () => mkAddr 1, level) val testCode = mkIf( mkNot(mkTagTest(#load globalBpt level, 0w0, 0w0)), mkEval(#load globalBpt level, [mkTuple[mkConst(toMachineWord location), mkConst(toMachineWord localBreakPoint)]]), CodeZero ) in #dec globalBpt @ [mkNullDec testCode] end structure Sharing = struct type types = types type values = values type machineWord = machineWord type fixStatus = fixStatus type structVals = structVals type typeConstrSet = typeConstrSet type signatures = signatures type functors = functors type locationProp = locationProp type environEntry = environEntry type typeId = typeId type level = level type lexan = lexan type codeBinding = codeBinding type codetree = codetree type typeVarMap = typeVarMap type debuggerStatus = debuggerStatus end end; polyml-5.7.1/mlsource/MLCompiler/CompilerVersion.sml0000644000175000017500000000160213204034553021467 0ustar daviddavid(* Copyright (c) 2007-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure CompilerVersion = struct val compilerVersion = "5.7.1 Release" val versionNumber = 571 val versionSuffix = Int.toString versionNumber end; polyml-5.7.1/mlsource/MLCompiler/FOREIGNCALLSIG.sml0000644000175000017500000000212313204034553020436 0ustar daviddavid(* Copyright (c) 2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature FOREIGNCALLSIG = sig val rtsCallFull: string * int * Universal.universal list -> Address.address val rtsCallFast: string * int * Universal.universal list -> Address.address val rtsCallFastFloattoFloat: string * Universal.universal list -> Address.address val rtsCallFastGeneraltoFloat: string * Universal.universal list -> Address.address end; polyml-5.7.1/mlsource/MLCompiler/ParseDec.ML0000644000175000017500000000246013204034553017555 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure ParseDec = PARSE_DEC ( structure MISC = Misc structure SYMBOLS = Symbols structure LEX = Lex structure SYMSET = SymSet structure SKIPS = Skips structure STRUCTVALS = StructVals structure TYPETREE = TypeTree structure PARSETREE = ParseTree structure STRUCTURES = Structures structure PARSETYPE = ParseType structure UTILITIES = Utilities structure SIGNATURES = SignaturesStruct ); polyml-5.7.1/mlsource/MLCompiler/PRINT_TABLE.ML0000644000175000017500000000662313204034553017677 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright David C.J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Table of printing functions for user-defined types. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1990 *) (* The original purpose of this module was to allow for type-dependent print functions to be installed by the user. That requires a special mechanism to allow a function to be installed in a child database without needing to be able to write to the top-level database containing the compiler. This has been extended to deal with SML97 overloading for both functions and literal constants and also for ref-like types which support pointer equality even though these cases are intended only for the implementors of libraries which would probably be in the top-level database. *) functor PRINT_TABLE ( structure CODETREE: CODETREESIG structure STRUCTVALS : STRUCTVALSIG structure PRETTY : PRETTYSIG ): PRINTTABLESIG = struct open STRUCTVALS; type pretty = PRETTY.pretty open CODETREE type overloadEntry = string * typeConstrs * codetree; (* Create a ref to hold the list *) val overloadTable : overloadEntry list ref = ref [] (* The most recent ref refers to the current level of the hierarchy, so is the one we should update. *) fun addOverload (name, cons, overload) = let (* Remove any existing occurrences of the type. The only reason is to allow any existing function to be garbage-collected. *) fun filter [] = [] | filter ((this as (n, t, _)) :: rest) = if n = name andalso sameTypeId (tcIdentifier cons, tcIdentifier t) then filter rest else this :: filter rest in overloadTable := (name, cons, overload) :: filter (!overloadTable) end (* Return all the overloads for a particular identifier. *) fun getOverloads name = let fun searchList [] = [] | searchList ((n,t,v)::rest) = if name = n then (t, v) :: searchList rest else searchList rest in searchList (! overloadTable) end; (* Return the first matching overload or call mkDefault. *) fun getOverload(name, constr, mkDefault) = let fun searchList [] = mkDefault() | searchList ((n,t,v)::rest) = if name = n andalso sameTypeId (tcIdentifier constr, tcIdentifier t) then v else searchList rest in searchList (! overloadTable) end; structure Sharing = struct type codetree = codetree and typeConstrs = typeConstrs end end; polyml-5.7.1/mlsource/MLCompiler/CODETREESIG.ML0000644000175000017500000001424513204034553017630 0ustar daviddavid(* Copyright (c) 2012,13,15-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature CODETREESIG = sig type machineWord type codetree type pretty type codeBinding type level datatype argumentType = GeneralType | FloatingPtType and loadStoreKind = LoadStoreMLWord of {isImmutable: bool} | LoadStoreMLByte of {isImmutable: bool} | LoadStoreC8 | LoadStoreC16 | LoadStoreC32 | LoadStoreC64 | LoadStoreCFloat | LoadStoreCDouble | LoadStoreUntaggedUnsigned and blockOpKind = BlockOpMove of {isByteMove: bool} | BlockOpEqualByte | BlockOpCompareByte structure BuiltIns: BUILTINS datatype arbPrecisionOps = ArbCompare of BuiltIns.testConditions | ArbArith of BuiltIns.arithmeticOperations val CodeTrue: codetree (* code for "true" *) val CodeFalse: codetree (* code for "false" *) val CodeZero: codetree (* code for 0, nil etc. *) val mkFunction: { body: codetree, argTypes:argumentType list, resultType: argumentType, name: string, closure: codetree list, numLocals: int } -> codetree val mkInlineFunction: { body: codetree, argTypes:argumentType list, resultType: argumentType, name: string, closure: codetree list, numLocals: int } -> codetree val mkCall: codetree * (codetree * argumentType) list * argumentType -> codetree val mkLoadLocal: int -> codetree and mkLoadArgument: int -> codetree and mkLoadClosure: int -> codetree val mkConst: machineWord -> codetree val mkInd: int * codetree -> codetree val mkVarField: int * codetree -> codetree val mkProc: codetree * int * string * codetree list * int -> codetree val mkInlproc: codetree * int * string * codetree list * int -> codetree val mkMacroProc: codetree * int * string * codetree list * int -> codetree val mkIf: codetree * codetree * codetree -> codetree val mkWhile: codetree * codetree -> codetree val mkEnv: codeBinding list * codetree -> codetree val mkStr: string -> codetree val mkTuple: codetree list -> codetree val mkDatatype: codetree list -> codetree val mkRaise: codetree -> codetree val mkCor: codetree * codetree -> codetree val mkCand: codetree * codetree -> codetree val mkHandle: codetree * codetree * int -> codetree val mkEval: codetree * codetree list -> codetree val identityFunction: string -> codetree val mkSetContainer: codetree * codetree * int -> codetree val mkTupleFromContainer: int * int -> codetree val mkTagTest: codetree * word * word -> codetree val mkBeginLoop: codetree * (int * codetree) list -> codetree val mkLoop: codetree list -> codetree val mkDec: int * codetree -> codeBinding val mkMutualDecs: (int * codetree) list -> codeBinding val mkNullDec: codetree -> codeBinding val mkContainer: int * int * codetree -> codeBinding val mkNot: codetree -> codetree val mkIsShort: codetree -> codetree val mkEqualWord: codetree * codetree -> codetree val mkEqualArbShort: codetree * codetree -> codetree val equalWordFn: codetree val decSequenceWithFinalExp: codeBinding list -> codetree val pretty: codetree -> pretty val evalue: codetree -> machineWord option val genCode: codetree * Universal.universal list * int -> (unit -> codetree) (* Helper functions to build closure. *) val mkLoad: int * level * level -> codetree and mkLoadParam: int * level * level -> codetree val baseLevel: level val newLevel: level -> level val getClosure: level -> codetree list val multipleUses: codetree * (unit -> int) * level -> {load: level -> codetree, dec: codeBinding list} val mkUnary: BuiltIns.unaryOps * codetree -> codetree and mkBinary: BuiltIns.binaryOps * codetree * codetree -> codetree val mkUnaryFn: BuiltIns.unaryOps -> codetree and mkBinaryFn: BuiltIns.binaryOps -> codetree and mkArbitraryFn: arbPrecisionOps -> codetree val getCurrentThreadId: codetree and getCurrentThreadIdFn: codetree val mkAllocateWordMemory: codetree * codetree * codetree -> codetree and mkAllocateWordMemoryFn: codetree (* Load and store operations. At this level the first operand is the base address and the second is an index. *) val mkLoadOperation: loadStoreKind * codetree * codetree -> codetree val mkLoadOperationFn: loadStoreKind -> codetree val mkStoreOperation: loadStoreKind * codetree * codetree * codetree -> codetree val mkStoreOperationFn: loadStoreKind -> codetree val mkBlockOperation: {kind:blockOpKind, leftBase: codetree, rightBase: codetree, leftIndex: codetree, rightIndex: codetree, length: codetree} -> codetree val mkBlockOperationFn: blockOpKind -> codetree structure Foreign: FOREIGNCALLSIG structure Sharing: sig type machineWord = machineWord type codetree = codetree type pretty = pretty type argumentType=argumentType type codeBinding = codeBinding type level = level end end; polyml-5.7.1/mlsource/MLCompiler/Initialise.ML0000644000175000017500000000302513204034553020157 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2016. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Initialise = INITIALISE_ ( structure LEX = Lex structure TYPETREE = TypeTree structure STRUCTVALS = StructVals structure VALUEOPS = ValueOps structure CODETREE = CodeTree structure ADDRESS = Address structure DEBUG = Debug structure MAKE = Make structure MISC = Misc structure DEBUGGER = Debugger structure VERSION = CompilerVersion structure PRETTY = Pretty structure EXPORTTREE = ExportTreeStruct structure DATATYPEREP = DatatypeRep structure TYPEIDCODE = TypeIDCodeStruct structure PRINTTABLE = PrintTable structure UNIVERSALTABLE = UniversalTable ); polyml-5.7.1/mlsource/MLCompiler/Address.ML0000644000175000017500000001760713204034553017465 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Further development copyright David C.J. Matthews 2000-2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature AddressSig = sig type machineWord type address type short = Word.word val stringOfWord: machineWord -> string val rtsFunctionName: int -> string val wordEq : machineWord * machineWord -> bool val isShort : machineWord -> bool exception Cast of string val toMachineWord: 'a -> machineWord val toShort: machineWord -> Word.word val toAddress: machineWord -> address val loadByte: (address * Word.word) -> Word8.word val loadWord: (address * Word.word) -> machineWord val assignByte: (address * Word.word * Word8.word) -> unit val assignWord: (address * Word.word * machineWord) -> unit val allocWordData: (short * Word8.word * machineWord) -> address val maxAllocation: word val lock: address -> unit val length: address -> short val flags: address -> Word8.word val wordSize: int val F_words : Word8.word val F_bytes : Word8.word val F_code : Word8.word val F_negative : Word8.word val F_mutable : Word8.word val F_gc : Word8.word val F_noOverwrite : Word8.word val F_weak : Word8.word val F_profile : Word8.word val isWords : address -> bool val isBytes : address -> bool val isCode : address -> bool val isMutable:address -> bool end structure Address :> AddressSig = struct (* These want to be abstract. *) local structure M:> sig type machineWord and address end = struct type machineWord = word (* a legal ML object (tag = 0 or 1) *) and address = word (* a normal pointer (tag = 0) *) end in open M end (* This is the same as word *) type short = word (* a 31/63-bit int (tag = 1) *) (* pointer equality *) val wordEq: machineWord * machineWord -> bool = PolyML.pointerEq val unsafeCast : 'a -> 'b = RunCall.unsafeCast val isShort : machineWord->bool = RunCall.isShort (* The following cast is always safe *) val toMachineWord : 'a -> machineWord = unsafeCast (* The following casts need checking *) exception Cast of string fun toAddress (w: machineWord) : address = if isShort w then raise Cast "toAddress" else unsafeCast w fun toShort (w: machineWord) : Word.word = if isShort w then unsafeCast w else raise Cast "toShort" (* Note: assignByte should *not* be used with word-objects (we might copy half a pointer into the object, then call the garbage collector) loadWord should *not* be used with byte-objects (we might load something that's not a valid ML value, then call the garbage collector) Violating these assertions may corrupt the heap and cause unpredictable behaviour. It's safe to use assignWord with a byte-object or loadByte with a word-object but it may not do what you expect. One difference is that loadWord / assignWord leave the tag bits unchanged but loadByte / assignByte strip and replace them. Another difference is that the offset for the "Word" functions is in words, whereas the offset for the "Byte" functions is in bytes. *) val loadByte: address * Word.word -> Word8.word = RunCall.loadByte and loadWord: address * Word.word -> machineWord = RunCall.loadWord and assignByte: address * Word.word * Word8.word -> unit = RunCall.storeByte and assignWord: address * Word.word * machineWord -> unit = RunCall.storeWord and lock: address -> unit = RunCall.clearMutableBit and wordSize: int = Word.toInt RunCall.bytesPerWord and length: address -> Word.word = RunCall.memoryCellLength and flags: address -> Word8.word = Word8.fromLargeWord o Word.toLargeWord o RunCall.memoryCellFlags local val callGetAllocationSize = RunCall.rtsCallFast0 "PolyGetMaxAllocationSize" in val maxAllocation: word = callGetAllocationSize() end fun allocWordData(len: word, flags: Word8.word, initial: machineWord): address = (* Check that the size is within the acceptable range. *) if len >= maxAllocation then raise Size else RunCall.allocateWordMemory(len, Word.fromLargeWord(Word8.toLargeWord flags), initial) val F_words : Word8.word = 0wx00 (* word object - contains pointers and/or tagged values. *) val F_bytes : Word8.word = 0wx01 (* byte object (contains no pointers) *) val F_code : Word8.word = 0wx02 (* code object (mixed bytes and words) *) val F_noOverwrite : Word8.word = 0wx08 (* don't overwrite when loading - mutables only. *) val F_negative : Word8.word = 0wx10 (* sign bit for arbitrary precision ints (byte objects) *) val F_profile : Word8.word = 0wx10 (* object has a profile pointer (word objects) *) val F_weak : Word8.word = 0wx20 (* object contains weak references to option values. *) val F_mutable : Word8.word = 0wx40 (* object is mutable *) val F_gc : Word8.word = 0wx80 (* object is (pointer or depth) tombstone *) local val typeMask : Word8.word = 0wx03 fun isType (t: Word8.word) (a: address):bool = Word8.andb(flags a, typeMask) = t in val isWords = isType F_words val isBytes = isType F_bytes val isCode = isType F_code (* The mutable flag may be used with any of the others. *) fun isMutable a = Word8.andb(flags a, F_mutable) = F_mutable end local val rtsNames = Vector.tabulate(256, fn n => " RTS" ^ Int.toString n) in val rtsNames = rtsNames fun rtsFunctionName n = Vector.sub(rtsNames, n) end val functionName: machineWord -> string = RunCall.rtsCallFull1 "PolyGetFunctionName" fun stringOfWord w = if isShort w then "LIT" ^ Word.toString (unsafeCast w) else let val v = toAddress w in if isCode v then "CODE \"" ^ functionName w ^ "\"" else if isBytes v then let val length = Int.min(Word.toInt(length v) * wordSize, 16) val data = Word8Vector.tabulate(length, fn n => loadByte(v, Word.fromInt n)) in "BYTE data" ^ String.toString(Byte.bytesToString data) end else if isWords(toAddress w) andalso Word.toInt(length(toAddress w)) >= 1 then (* If it's the closure of a function try to print that. *) let val firstWord = loadWord(toAddress w, 0w0) in if not (isShort firstWord) andalso isCode(toAddress firstWord) then "FUN \"" ^ functionName firstWord ^ "\"" (* Get the function name. *) else "LIT " end else "LIT " end end; (* Add a print function for machineWord. This is really only for the debugger but prevents addresses being printed as Word.word values. *) local open PolyML Address fun printMachineWord _ _ w = PrettyString(stringOfWord w) in val () = addPrettyPrinter printMachineWord end; polyml-5.7.1/mlsource/MLCompiler/STRUCTURESSIG.sml0000644000175000017500000001140313204034553020435 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2009. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (*****************************************************************************) (* STRUCTURES export signature *) (*****************************************************************************) signature STRUCTURESSIG = sig type structDec type structValue type structVals; type types; type parsetree; type lexan; type pretty; type values; type typeConstrSet; type typeVarForm type codetree; type signatures; type functors; type env; type sigBind and functorBind and structBind type machineWord type fixStatus type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type topdec type program type ptProperties type exportTree = location * ptProperties list type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} type typeParsetree type formalArgStruct type sigs val mkStructureDec: structBind list * location -> structDec val mkStruct: structDec list * location -> structValue val mkSignatureDec: sigBind list * location -> topdec; val mkFunctorDec: functorBind list * location -> topdec; val mkLocaldec: structDec list * structDec list * location -> structDec; val mkLetdec: structDec list * structValue * location -> structValue; val mkCoreLang: parsetree * location -> structDec; val mkStructureBinding: (string * location) * (sigs * bool * location) option * structValue * location -> structBind val mkStructIdent: string * location -> structValue; val mkSignatureBinding: (string * location) * sigs * location -> sigBind; val mkFunctorAppl: string * structValue * location * location -> structValue; val mkFormalArg: string * sigs -> formalArgStruct; val mkFunctorBinding: string * location * (sigs * bool * location) option * structValue * formalArgStruct * location -> functorBind; val mkSigConstraint: structValue * sigs * bool * location -> structValue val mkTopDec: structDec -> topdec val mkProgram: topdec list * location -> program val pass2Structs: program * lexan * env -> unit; val pass4Structs: codetree * program -> { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string* typeConstrSet) list }; val gencodeStructs: program * lexan -> codetree * int val displayProgram: program * FixedInt.int -> pretty; val structsExportTree: navigation * program -> exportTree structure Sharing: sig type structDec = structDec type structValue = structValue type structVals = structVals type types = types type parsetree = parsetree type lexan = lexan type pretty = pretty type values = values type typeConstrSet = typeConstrSet type codetree = codetree type signatures = signatures type functors = functors type env = env type sigBind = sigBind and functorBind = functorBind and structBind = structBind type machineWord = machineWord type fixStatus = fixStatus type topdec = topdec type program = program type typeParsetree = typeParsetree type formalArgStruct= formalArgStruct type ptProperties = ptProperties type typeVarForm = typeVarForm type sigs = sigs end end; polyml-5.7.1/mlsource/MLCompiler/Skips.ML0000644000175000017500000000172113204034553017157 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Skips = SKIPS_ ( structure SYMBOLS = Symbols structure LEX = Lex structure SYMSET = SymSet ); polyml-5.7.1/mlsource/MLCompiler/TYPE_TREE.ML0000644000175000017500000046634513204034553017507 0ustar daviddavid(* Original Poly version: Title: Operations on type structures. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 ML translation and other changes: Copyright (c) 2000 Cambridge University Technical Services Limited Further development: Copyright (c) 2000-9, 2012-2016 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) functor TYPE_TREE ( structure LEX : LEXSIG structure STRUCTVALS : STRUCTVALSIG; structure PRETTY : PRETTYSIG structure CODETREE : CODETREESIG where type machineWord = Address.machineWord structure EXPORTTREE: EXPORTTREESIG; structure DEBUG: DEBUGSIG structure UTILITIES : sig val mapTable: ('a * 'a -> bool) -> {enter: 'a * 'b -> unit, lookup: 'a -> 'b option} val splitString: string -> { first:string, second:string } end; structure MISC : sig exception InternalError of string; val lookupDefault : ('a -> 'b option) -> ('a -> 'b option) -> 'a -> 'b option end; sharing LEX.Sharing = PRETTY.Sharing = EXPORTTREE.Sharing = STRUCTVALS.Sharing = CODETREE.Sharing ) : TYPETREESIG = (*****************************************************************************) (* TYPETREE functor body *) (*****************************************************************************) struct open MISC; open PRETTY; open STRUCTVALS; open LEX; open UTILITIES; open CODETREE; open EXPORTTREE val badType : types = BadType; (* added 16/4/96 SPF *) fun sameTypeVar (TypeVar x, TypeVar y) = sameTv (x, y) | sameTypeVar _ = false; fun isTypeVar (TypeVar _) = true | isTypeVar _ = false; fun isFunctionType (FunctionType _) = true | isFunctionType _ = false; fun isEmpty EmptyType = true | isEmpty _ = false; fun isBadType BadType = true | isBadType _ = false; val emptyType = EmptyType; fun typesTypeVar (TypeVar x) = x | typesTypeVar _ = raise Match; fun typesFunctionType (FunctionType x) = x | typesFunctionType _ = raise Match; (* This is really left over from an old definition. *) fun tcEquivalent(TypeConstrs{identifier = TypeId {idKind = TypeFn(_, result), ...}, ...}) = result | tcEquivalent _ = raise InternalError "tcEquivalent: Not a type function" (* A type construction is the application of a type constructor to a sequence of types to yield a type. A construction may have a nil list if it is a single type identifier such as ``int''. *) (* When a type constructor is encountered in the first pass this entry is put in. Subsequently a type constructor entry will be assigned to it so that the types can be checked. *) (*************) fun mkTypeVar (level, equality, nonunifiable, printable) = TypeVar (makeTv {value=emptyType, level=level, equality=equality, nonunifiable=nonunifiable, printable=printable}); fun mkTypeConstruction (name, typc, args, locations) = TypeConstruction {name = name, constr = typc, args = args, locations = locations} local (* Turn a tuple into a record of the form {1=.., 2=... }*) fun maptoRecord ([], _) = [] | maptoRecord (H::T, i) = {name=Int.toString i, typeof=H} :: maptoRecord (T,i+1) in fun mkProductType (typel: types list) = let val fields = maptoRecord (typel, 1) in LabelledType {recList = fields, fullList = FieldList(List.map #name fields, true)} end end fun mkFunctionType (arg, result) = FunctionType {arg = arg, result = result}; fun mkOverloadSet [constr] = (* If there is just a single constructor in the set we make a type construction from it. *) mkTypeConstruction(tcName constr, constr, nil, []) | mkOverloadSet constrs = let (* Make a type variable and point this at the overload set so we can narrow down the overloading. *) val var = mkTypeVar (generalisable, false, false, false) val set = OverloadSet {typeset=constrs}; in tvSetValue (typesTypeVar var, set); var end fun mkLabelled (l, frozen) = let val final = FieldList(map #name l, frozen) val lab = LabelledType {recList = l, fullList = if frozen then final else FlexibleList(ref final) } in if frozen then lab else let (* Use a type variable so that the record can be expanded. This also provides a model (equality etc). for any fields that are added later. *) val var = mkTypeVar (generalisable, false, false, false) val () = if isTypeVar var then tvSetValue (typesTypeVar var, lab) else (); in var end end (* Must remove leading zeros because the labels are compared by string comparison. *) fun mkLabelEntry (name, t) = let fun stripZeros s = if size s <= 1 orelse String.str(String.sub(s, 0)) <> "0" then s else stripZeros (String.substring(s, 1, size s-1)); in {name = stripZeros name, typeof = t} end; (* Functions to construct the run-time representations of type constructor values, type values and value constructors. These are all tuples and centralising the code here avoids having the offsets as integers at various places. Monotype constructor and type values are almost the same except that type values have the printer entry as the function whereas monotype constructors have the print entry as a ref pointing to the function, allowing addPrettyPrint to set a printer for the type. The entries for polytypes are functions that take the type values as arguments and return the corresponding values. *) structure TypeValue = struct val equalityOffset = 0 and printerOffset = 1 and boxnessOffset = 2 and sizeOffset = 3 local (* Values used to represent boxness. *) val boxedRepNever = 0w1 (* Never boxed, always tagged e.g. bool *) and boxedRepAlways = 0w2 (* Always boxed, never tagged e.g. function types *) and boxedRepEither = 0w3 (* Either boxed or tagged e.g. (arbitrary precision) int *) fun make n = mkConst(Address.toMachineWord n) fun isCode n = mkInlproc(mkEqualWord(mkLoadArgument 0, make n), 1, "test-box", [], 0) in val boxedNever = make boxedRepNever and boxedAlways = make boxedRepAlways and boxedEither = make boxedRepEither (* Test for boxedness. This must be applied to the value extracted from the "boxedness" field after applying to any base type arguments in the case of a polytype constructor. *) val isBoxedNever = isCode boxedRepNever and isBoxedAlways = isCode boxedRepAlways and isBoxedEither = isCode boxedRepEither end (* Sizes are always a single word. *) val singleWord = mkConst(Address.toMachineWord 0w1) fun extractEquality idCode = mkInd(equalityOffset, idCode) and extractPrinter idCode = mkInd(printerOffset, idCode) and extractBoxed idCode = mkInd(boxnessOffset, idCode) and extractSize idCode = mkInd(sizeOffset, idCode) fun createTypeValue{eqCode, printCode, boxedCode, sizeCode} = mkTuple[eqCode, printCode, boxedCode, sizeCode] end (* Value constructors are represented by tuples, either pairs for nullary constructors or triples for constructors with arguments. For nullary functions the "injection" function is actually the value itself. If this is a polytype all the entries are functions that take the type values for the base types as arguments. *) structure ValueConstructor = struct val testerOffset = 0 val injectorOffset = 1 val projectorOffset = 2 fun extractTest constrCode = mkInd(testerOffset, constrCode) and extractInjection constrCode = mkInd(injectorOffset, constrCode) and extractProjection constrCode = mkInd(projectorOffset, constrCode) fun createValueConstr{testMatch, injectValue, projectValue} = mkTuple[testMatch, injectValue, projectValue] fun createNullaryConstr{ testMatch, constrValue } = mkTuple[testMatch, constrValue] end (* Eqtypes with built-in equality functions. The printer functions are all replaced in the basis. *) local open Address PRETTY TypeValue fun defaultMonoTypePrinter _ = PrettyString "?" fun defaultPolyTypePrinter _ _ = PrettyString "?" fun eqAndPrintCode (eqCode, nArgs, boxed) = let val code = if nArgs = 0 then createTypeValue{ eqCode=eqCode, printCode=mkConst (toMachineWord (ref defaultMonoTypePrinter)), boxedCode = boxed, sizeCode = singleWord } else createTypeValue{ eqCode=mkInlproc(eqCode, nArgs, "eq-helper()", [], 0), printCode=mkConst (toMachineWord (ref defaultPolyTypePrinter)), boxedCode = mkInlproc(boxed, nArgs, "boxed-helper()", [], 0), sizeCode = mkInlproc(singleWord, nArgs, "size-helper()", [], 0) } in Global (genCode(code, [], 0) ()) end fun makeConstr(name, fullName, eqFun, boxed) = makeTypeConstructor (name, [], makeFreeId(0, eqAndPrintCode(eqFun, 0, boxed), true, basisDescription fullName), [DeclaredAt inBasis]) (* since code generator relies on these representations, we may as well export them *) (* wordEq is used both for tagged words and for pointer equality *) val wordEq = equalWordFn (* Strings are now always vectors whose first word is the length. The old special case for single-character strings has been removed. *) local val stringEquality = mkInlproc( (* Test the strings for pointer equality first. This seems to help in cases where we have shared common data. Then test the lengths first and only do the byte comparison if they are the same. This seems to save more time than including the length word in the byte comparison. *) mkCor( mkEqualWord(mkLoadArgument 0, mkLoadArgument 1), mkCand( mkEqualWord( mkLoadOperation(LoadStoreUntaggedUnsigned, mkLoadArgument 0, CodeZero), mkLoadOperation(LoadStoreUntaggedUnsigned, mkLoadArgument 1, CodeZero)), mkBlockOperation{kind=BlockOpEqualByte, leftBase=mkLoadArgument 0, rightBase=mkLoadArgument 1, leftIndex=mkConst(toMachineWord wordSize), rightIndex=mkConst(toMachineWord wordSize), (* Use argument 1 here rather than 0. We could use either but this works better when we're using equality for pattern matching since it gets the length of the constant string. It also works better for the, to me, more natural ordering of variable=constant. *) length=mkLoadOperation(LoadStoreUntaggedUnsigned, mkLoadArgument 1, CodeZero) } ) ), 2, "stringEquality", [], 0) in val stringEquality = stringEquality end local (* Arbitrary precision values are normalised so if a value can be represented as a tagged fixed precision value it will be. Unlike strings it is much more likely that the value will be short so we generate equality as a test that handles the short case as inline code and the long case as a function call. If either argument is a short constant this will be optimised away so the test will reduce to a test on whether the value equals the constant. *) val intEquality = mkEnv( [mkDec(0, (* Long-form equality - should not be inlined. *) mkProc( (* Equal if signs are the same ... *) mkCand( mkEqualWord( mkUnary(BuiltIns.MemoryCellFlags, mkLoadArgument 0), mkUnary(BuiltIns.MemoryCellFlags, mkLoadArgument 1) ), mkEnv( [mkDec(0, mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 1))], mkCand( (* ... and the lengths are equal ... *) mkEqualWord( mkUnary(BuiltIns.MemoryCellLength, mkLoadArgument 0), mkLoadLocal 0 ), (* ... and they're byte-wise equal .*) mkBlockOperation{kind=BlockOpEqualByte, leftBase=mkLoadArgument 0, rightBase=mkLoadArgument 1, leftIndex=CodeZero, rightIndex=CodeZero, length=mkBinary(BuiltIns.WordArith BuiltIns.ArithMult, mkConst(toMachineWord RunCall.bytesPerWord), mkLoadLocal 0)} ) ) ), 2, "arbitraryPrecisionEquality", [], 1) ) ], mkInlproc( mkCor( (* Either they're equal... *) (* We can't use mkEqualWord here because if we have a short constant here the code will reduce to the simple equality. If we used mkEqualWord it could further reduce to an indexed case but the code for that does not handle arbitrary precision values in the lo *) mkEqualArbShort(mkLoadArgument 0, mkLoadArgument 1), (* .. or if either is short the result is false ... *) mkCand( mkCand( mkNot(mkIsShort(mkLoadArgument 0)), mkNot(mkIsShort(mkLoadArgument 1)) ), (* ... otherwise we have to test the vectors. *) mkEval(mkLoadClosure 0, [mkLoadArgument 0, mkLoadArgument 1]) ) ), 2, "intInfEquality", [mkLoadLocal 0], 0) ) in (* Code-generate the function and return the inline part. We need to set the maximum inline size here to ensure the long form code is not inlined. It would be better to have a way of turning off inlining for specific functions. *) val intEquality = genCode(intEquality, [Universal.tagInject DEBUG.maxInlineSizeTag 5], 1) () end in val fixedIntConstr = makeConstr("int", "FixedInt.int", wordEq, boxedNever) (* Fixed precision is always short *) val intInfConstr = makeConstr("int", "IntInf.int", intEquality, boxedEither) val charConstr = makeConstr("char", "char", wordEq, boxedNever) (* Always short *) val stringConstr = makeConstr("string", "string", stringEquality, boxedEither (* Single chars are unboxed. *)) val wordConstr = makeConstr("word", "word", wordEq, boxedNever) (* Ref is a datatype with a single constructor. The constructor is added in INITIALISE. Equality is special for "'a ref", "'a array" and "'a Array2.array". They permit equality even if the 'a is not an eqType. *) val refConstr = makeTypeConstructor ("ref", [makeTv {value=EmptyType, level=generalisable, equality=false, nonunifiable=false, printable=false}], makeFreeId(1, eqAndPrintCode(wordEq, 1, boxedAlways), true, basisDescription "ref"), [DeclaredAt inBasis]); val arrayConstr = makeTypeConstructor ("array", [makeTv {value=EmptyType, level=generalisable, equality=false, nonunifiable=false, printable=false}], makeFreeId(1, eqAndPrintCode(wordEq, 1, boxedAlways), true, basisDescription "Array.array"), [DeclaredAt inBasis]); val array2Constr = makeTypeConstructor ("array", [makeTv {value=EmptyType, level=generalisable, equality=false, nonunifiable=false, printable=false}], makeFreeId(1, eqAndPrintCode(wordEq, 1, boxedAlways), true, basisDescription "Array2.array"), [DeclaredAt inBasis]); val byteArrayConstr = makeTypeConstructor ("byteArray", [], makeFreeId(0, eqAndPrintCode(wordEq, 0, boxedAlways), true, basisDescription "byteArray"), [DeclaredAt inBasis]); (* Bool is a datatype. The constructors are added in INITIALISE. *) val boolConstr = makeTypeConstructor ("bool", [], makeFreeId(0, eqAndPrintCode(wordEq, 0, boxedNever), true, basisDescription "bool"), [DeclaredAt inBasis]); end (* These polytypes allow equality even if the type argument is not an equality type. *) fun isPointerEqType id = sameTypeId (id, tcIdentifier refConstr) orelse sameTypeId (id, tcIdentifier arrayConstr) orelse sameTypeId (id, tcIdentifier array2Constr) orelse sameTypeId (id, tcIdentifier byteArrayConstr) (* Non-eqtypes *) local open Address PRETTY TypeValue fun makeType(name, descr, boxed) = let fun defaultPrinter _ = PrettyString "?" val code = createTypeValue{ eqCode=CodeZero (* No equality. *), printCode=mkConst (toMachineWord (ref defaultPrinter)), boxedCode=boxed, sizeCode=singleWord } in makeTypeConstructor ( name, [], makeFreeId(0, Global (genCode(code, [], 0) ()), false, descr), [DeclaredAt inBasis]) end in val realConstr = makeType("real", basisDescription "real", boxedAlways(* Currently*)); (* Not an eqtype in ML97. *) val exnConstr = makeType("exn", basisDescription "exn", boxedAlways); (* "undefConstr" is used as a place-holder during parsing for the actual type constructor. If the type constructor is not found this may appear in an error message. *) val undefConstr = makeType("undefined", { location = inBasis, description = "Undefined", name = "undefined" }, boxedEither); end (* The unit type is equivalent to the empty record. *) val unitConstr = makeTypeConstructor ("unit", [], makeTypeFunction({ location = inBasis, description = "unit", name = "unit" }, ([], LabelledType {recList = [], fullList = FieldList([], true)})), [DeclaredAt inBasis]); (* Type identifiers bound to standard type constructors. *) val unitType = mkTypeConstruction ("unit", unitConstr, [], []); val fixedIntType = mkTypeConstruction ("int", fixedIntConstr, [], []); val intInfType = mkTypeConstruction ("int", intInfConstr, [], []); val realType = mkTypeConstruction ("real", realConstr, [], []); val charType = mkTypeConstruction ("char", charConstr, [], []); val stringType = mkTypeConstruction ("string", stringConstr, [], []); val boolType = mkTypeConstruction ("bool", boolConstr, [], []); val exnType = mkTypeConstruction ("exn", exnConstr, [], []); val wordType = mkTypeConstruction ("word", wordConstr, [], []); fun isUndefined cons = sameTypeId (tcIdentifier cons, tcIdentifier undefConstr); val isUndefinedTypeConstr = isUndefined (* Test if a type is the undefined constructor. *) fun isUndefinedType(TypeConstruction{constr, ...}) = isUndefined constr | isUndefinedType _ = false (* Similar to alphabetic ordering except that shorter labels come before longer ones. This has the advantage that numerical labels are compared by their numerical order i.e. 1 < 2 < 10 whereas alphabetic ordering puts "1" < "10" < "2". *) fun compareLabels (a : string, b : string) : int = if size a = size b then if a = b then 0 else if a < b then ~1 else 1 else if size a < size b then ~1 else 1; (* Sort using the label ordering. A simple sort routine - particularly if the list is already sorted. *) fun sortLabels [] = [] | sortLabels (s::rest) = let fun enter s _ [] = [s] | enter s name (l as ( (h as {name=hname, ...}) :: t)) = let val comp = compareLabels (name, hname); in if comp <= 0 then s :: l else h :: enter s name t end; in enter s (#name s) (sortLabels rest) end (* Chains down a list of type variables returning the type they are bound to. As a side-effect it also points all the type variables at this type to reduce the need for future chaining and to free unused type variables. Normally a type variable points to at most one other, which then points to "empty". However if we have unified two type variables by pointing one at the other, there may be type variables which pointed to the first and which cannot be found and redirected at the second until they themselves are examined. *) fun eventual (t as (TypeVar tv)) : types = let (* Note - don't change the level/copy information - the only type variable with this correct is the one at the end of the list. *) val oldVal = tvValue tv val newVal = eventual oldVal; (* Search that *) in (* Update the type variable to point to the last in the chain. We don't do this if the value hasn't changed. The reason for that was that assignment to refs in the database in the old persistent store system was very expensive and we wanted to avoid unnecessary assignments. This special case could probably be removed. *) if PolyML.pointerEq(oldVal, newVal) then () else tvSetValue (tv, newVal); (* Put it on *) case newVal of EmptyType => t (* Not bound to anything - return the type variable *) | LabelledType (r as { recList, fullList }) => if List.length recList = List.length(recordFields r) then (* All the generic fields are present so we don't need to do anything. *) if recordIsFrozen r then newVal else t else (* We need to add fields from the generic. *) let (* Add any fields from the generic that aren't present in this instance. *) fun createNewField name = { name = name, (* The new type variable has to be created with the same properties as if we had first generalised it from the generic and then unified with this instance. The level is inherited from the instance since the generic will always have level = generalisable. Nonunifiable must be false. *) typeof = mkTypeVar (tvLevel tv, tvEquality tv, false, tvPrintity tv)} fun addToInstance([], []) = [] | addToInstance(generic :: geRest, []) = createNewField generic :: addToInstance(geRest, []) | addToInstance([], instance) = instance (* This case can occur if we are producing an error message because of a type-incorrect program so we just ignore it. *) | addToInstance(generic :: geRest, inst as instance :: iRest) = let val order = compareLabels (generic, #name instance); in if order = 0 (* Equal *) then instance :: addToInstance(geRest, iRest) else if order < 0 (* generic name < instance name *) then createNewField generic :: addToInstance(geRest, inst) else (* This is another case that can occur with type-incorrect code. *) instance :: addToInstance(generic :: geRest, iRest) end val newList = addToInstance(recordFields r, recList) val newRecord = LabelledType {recList = newList, fullList = fullList} in tvSetValue(tv, newRecord); if recordIsFrozen r then newRecord else t end | OverloadSet _ => t (* Return the set of types. *) | _ => newVal (* Return the type it is bound to *) end | eventual t (* not a type variable *) = t; (* Apply a function to every element of a type. *) fun foldType f = let fun foldT typ v = let val t = eventual typ; val res = f t v; (* Process this entry. *) in case t of TypeVar tv => foldT (tvValue tv) res | TypeConstruction {args, ...} => (* Then process the arguments. *) List.foldr (fn (t, v) => foldT t v) res args | FunctionType {arg, result} => foldT arg (foldT result res) | LabelledType {recList,...} => List.foldr (fn ({ typeof, ... }, v) => foldT typeof v) res recList | BadType => res | EmptyType => res | OverloadSet _ => res end in foldT end; (* Checks to see whether a labelled record is in the form of a product i.e. 1=, 2= We only need this for prettyprinting. Zero-length records (i.e. unit) and singleton records are not considered as tuples. *) fun isProductType(LabelledType(r as {recList=recList as _::_::_, ...})) = let fun isRec [] _ = true | isRec ({name, ...} :: l) n = name = Int.toString n andalso isRec l (n+1) in recordIsFrozen r andalso isRec recList 1 end | isProductType _ = false; (* Test to see is a type constructor is in an overload set. *) fun isInSet(tcons: typeConstrs, (H::T): typeConstrs list) = sameTypeId (tcIdentifier tcons, tcIdentifier H) orelse isInSet(tcons, T) | isInSet(_, []: typeConstrs list) = false val prefInt = ref fixedIntConstr (* Returns the preferred overload if there is one. *) fun preferredOverload typeset = if isInSet(!prefInt, typeset) then SOME(!prefInt) else if isInSet(realConstr, typeset) then SOME realConstr else if isInSet(wordConstr, typeset) then SOME wordConstr else if isInSet(charConstr, typeset) then SOME charConstr else if isInSet(stringConstr, typeset) then SOME stringConstr else NONE fun setPreferredInt c = prefInt := c fun equalTypeIds(x, y) = let (* True if two types are equal. *) fun equalTypes (TypeConstruction{constr=xVal, args=xArgs, ...}, TypeConstruction{constr=yVal, args=yArgs, ...}) = equalTypeIds(tcIdentifier xVal, tcIdentifier yVal) andalso equalTypeLists (xArgs, yArgs) | equalTypes (FunctionType x, FunctionType y) = equalTypes (#arg x, #arg y) andalso equalTypes (#result x, #result y) | equalTypes (LabelledType x, LabelledType y) = recordIsFrozen x andalso recordIsFrozen y andalso equalRecordLists (#recList x, #recList y) | equalTypes (TypeVar x, TypeVar y) = sameTv (x, y) | equalTypes (EmptyType, EmptyType) = true | equalTypes _ = false and equalTypeLists ([], []) = true | equalTypeLists (x::xs, y::ys) = equalTypes(x, y) andalso equalTypeLists (xs, ys) | equalTypeLists _ = false and equalRecordLists ([], []) = true | equalRecordLists (x::xs, y::ys) = #name x = #name y andalso equalTypes(#typeof x, #typeof y) andalso equalRecordLists (xs, ys) | equalRecordLists _ = false in case (x, y) of (TypeId{idKind=TypeFn(_, xEquiv), ...}, TypeId{idKind=TypeFn(_, yEquiv), ...}) => equalTypes(xEquiv, yEquiv) | _ => sameTypeId(x, y) end (* See if the types are the same. This is a bit of a fudge, but saves carrying around a flag saying whether the structures were copied. This is only an optimisation. If the values are different it will not go wrong. *) val identical : types * types -> bool = PolyML.pointerEq and identicalConstr : typeConstrs * typeConstrs -> bool = PolyML.pointerEq and identicalList : 'a list * 'a list -> bool = PolyML.pointerEq (* Copy a type, avoiding copying type structures unnecessarily. Used to make new type variables for all distinct type variables when generalising polymorphic functions, and to make new type stamps for type constructors when generalising signatures. *) fun copyType (at, copyTypeVar, copyTypeConstr) = let fun copyList [] = [] | copyList (l as (h :: t)) = let val h' = copyType (h, copyTypeVar, copyTypeConstr); val t' = copyList t; in if identical (h', h) andalso identicalList (t', t) then l else h' :: t' end (* copyList *); fun copyRecordList [] = [] | copyRecordList (l as ({name, typeof} :: t)) = let val typeof' = copyType (typeof, copyTypeVar, copyTypeConstr); val t' = copyRecordList t; in if identical (typeof', typeof) andalso identicalList (t', t) then l else {name=name, typeof=typeof'} :: t' end (* copyList *); val atyp = eventual at; in case atyp of TypeVar _ => (* Unbound type variable, flexible record or overloading. *) copyTypeVar atyp | TypeConstruction {constr, args, locations, ...} => let val copiedArgs = copyList args; val copiedConstr = copyTypeConstr constr; (* Use the name from the copied constructor. This will normally be the same as the original EXCEPT in the case where we are using copyType to generate copies of the value constructors of replicated datatypes. *) val copiedName = tcName copiedConstr in if identicalList (copiedArgs, args) andalso identicalConstr (copiedConstr, constr) then atyp else (* Must copy it. *) mkTypeConstruction (copiedName, copiedConstr, copiedArgs, locations) end | FunctionType {arg, result} => let val copiedArg = copyType (arg, copyTypeVar, copyTypeConstr); val copiedRes = copyType (result, copyTypeVar, copyTypeConstr); in if identical (copiedArg, arg) andalso identical (copiedRes, result) then atyp else FunctionType {arg = copiedArg, result = copiedRes} end | LabelledType {recList, fullList} => (* Rigid labelled records only. Flexible ones are treated as type vars. *) let val copiedList = copyRecordList recList in if identicalList (copiedList, recList) then atyp else LabelledType {recList = copiedList, fullList = fullList} end | EmptyType => EmptyType | BadType => BadType | OverloadSet _ => raise InternalError "copyType: OverloadSet found" end (* copyType *); (* Copy a type constructor if it is Bound and in the required range. If this refers to a type function copies that as well. Does not copy value constructors. *) fun copyTypeConstrWithCache (tcon, typeMap, _, mungeName, cache) = case tcIdentifier tcon of TypeId{idKind = TypeFn(args, equiv), description, access, ...} => let val copiedEquiv = copyType(equiv, fn x => x, fn tcon => copyTypeConstrWithCache (tcon, typeMap, fn x => x, mungeName, cache)) in if identical (equiv, copiedEquiv) then tcon (* Type is identical and we don't want to change the name. *) else (* How do we find a type function? *) makeTypeConstructor (mungeName(tcName tcon), args, TypeId { access = access, description = description, idKind = TypeFn(args, copiedEquiv)}, tcLocations tcon) end | id => ( case typeMap id of NONE => ( (*print(concat[tcName tcon, " not copied\n"]);*) tcon (* No change *) ) | SOME newId => let val name = #second(splitString (tcName tcon)) (* We must only match here if they're really the same. *) fun cacheMatch tc = equalTypeIds(tcIdentifier tc, newId) andalso #second(splitString(tcName tc)) = name in case List.find cacheMatch cache of SOME tc => ( (*print(concat[tcName tcon, " copied as ", tcName tc, "\n"]);*) tc (* Use the entry from the cache. *) ) | NONE => (* Either a hidden identifier or alternatively this can happen as part of the matching process. When matching a structure to a signature we first match up the type constructors then copy the type of each value replacing bound type IDs with the actual IDs as part of the checking process. We will return SOME newId but we don't have a cache so return NONE for List.find. *) let val newName = mungeName(tcName tcon) in (*print(concat[tcName tcon, " not cached\n"]);*) makeTypeConstructor(newName, tcTypeVars tcon, newId, tcLocations tcon) end end ) (* Exported version. *) fun copyTypeConstr (tcon, typeMap, copyTypeVar, mungeName) = copyTypeConstrWithCache(tcon, typeMap, copyTypeVar, mungeName, []) (* Compose typeID maps. If the first map returns a Bound id we apply the second otherwise just return the result of the first. *) fun composeMaps(m1, m2) n = let fun map2 (TypeId{idKind=Bound{ offset, ...}, ...}) = m2 offset | map2 (id as TypeId{idKind=Free _, ...}) = id | map2 (TypeId{idKind=TypeFn(args, equiv), access, description, ...}) = let fun copyId(TypeId{idKind=Free _, ...}) = NONE | copyId id = SOME(map2 id) (* If it's a type function e.g. this was a "where type" we have to apply the map to any type identifiers in the type. *) val copiedEquiv = copyType(equiv, fn x => x, fn tcon => copyTypeConstr (tcon, copyId, fn x => x, fn y => y)) in TypeId{idKind = TypeFn(args, copiedEquiv), access=access, description=description} end in map2(m1 n) end (* Basic procedure to print a type structure. *) type printTypeEnv = { lookupType: string -> (typeConstrSet * (int->typeId) option) option, lookupStruct: string -> (structVals * (int->typeId) option) option} val emptyTypeEnv = { lookupType = fn _ => NONE, lookupStruct = fn _ => NONE } (* Test whether two type constructors are the same after mapping. This is used to try to find the correct "path" to a type constructor when printing. *) fun eqTypeConstrs(xTypeCons, xMap, yTypeCons, yMap) = let fun id x = x fun copyId (SOME mapTypeId) (TypeId{idKind=Bound{ offset, ...}, ...}) = SOME(mapTypeId offset) | copyId _ _ = NONE val mappedX = copyTypeConstr(xTypeCons, copyId xMap, id, id) and mappedY = copyTypeConstr(yTypeCons, copyId yMap, id, id) in equalTypeIds(tcIdentifier mappedX, tcIdentifier mappedY) end (* prints a block of items *) fun tDisp (t : types, depth : FixedInt.int, typeVarName : typeVarForm -> string, env: printTypeEnv, sigMap: (int->typeId)option) : pretty = let (* prints a block of items *) fun dispP (t : types, depth : FixedInt.int) : pretty = let (* prints a block of items *) fun parenthesise depth t = if depth <= 1 then PrettyString "..." else PrettyBlock (0, false, [], [ PrettyString "(", dispP (t, depth - 1), PrettyString ")" ]); (* prints a sequence of items *) fun prettyList [] _ _: pretty list = [] | prettyList [H] depth separator = let val v = eventual H; in if separator = "*" andalso (isFunctionType v orelse isProductType v) then (* Must bracket the expression *) [parenthesise depth v] else [dispP (v, depth)] end | prettyList (H :: T) depth separator = if depth <= 0 then [PrettyString "..."] else let val v = eventual H; in PrettyBlock (0, false, [], [(if separator = "*" andalso (isFunctionType v orelse isProductType v) then (* Must bracket the expression *) parenthesise depth v else dispP (v, depth)), PrettyBreak (if separator = "," then 0 else 1, 0), PrettyString separator ]) :: PrettyBreak (1, 0) :: prettyList T (depth - 1) separator end; val typ = eventual t; (* Find the real type structure *) in case typ of TypeVar tyVar => let val tyVal : types = tvValue tyVar; in case tyVal of EmptyType => PrettyString (typeVarName tyVar) | _ => dispP (tyVal, depth) end (* Type construction. *) | TypeConstruction {args, name, constr=typeConstructor, ...} => let val constrName = (* Use the type constructor name unless we're had an error. *) if isUndefined typeConstructor then name else tcName typeConstructor (* There are three possible cases: we may not find any type with the name, we may look up the name and find the type or we may look up the name and find a different type. *) datatype isFound = NotFound | FoundMatch | FoundNotMatch (* If we're printing a value that refers to a type constructor we want to print the correct amount of any structure prefix for the current context. *) fun findType (_, []) = NotFound | findType ({ lookupType, ... }, [typeName]) = ( (* This must be the name of a type. *) case lookupType typeName of SOME (t, map) => if eqTypeConstrs(typeConstructor, sigMap, tsConstr t, map) then FoundMatch else FoundNotMatch | NONE => NotFound ) | findType ({ lookupStruct, ... }, structName :: tail) = ( (* This must be the name of a structure. Does it contain our type? *) case lookupStruct structName of SOME(Struct { signat, ...}, map) => let val Signatures { tab, typeIdMap, ...} = signat val Env { lookupType, lookupStruct, ...} = makeEnv tab val newMap = case map of SOME map => composeMaps(typeIdMap, map) | NONE => typeIdMap fun subLookupType s = case lookupType s of NONE => NONE | SOME t => SOME(t, SOME newMap) fun subLookupStruct s = case lookupStruct s of NONE => NONE | SOME t => SOME(t, SOME newMap) in findType({lookupType=subLookupType, lookupStruct=subLookupStruct}, tail) end | NONE => NotFound ) (* See if we have this type in the current environment or in some structure in the current environment. The name we have may be a full structure path. *) fun nameToList ("", l) = (l, NotFound) (* Not there. *) | nameToList (s, l) = let val { first, second } = splitString s val currentList = second :: l in case findType(env, currentList) of FoundMatch => (currentList, FoundMatch) | FoundNotMatch => ( case nameToList(first, currentList) of result as (_, FoundMatch) => result | (l, _) => (l, FoundNotMatch) ) | NotFound => nameToList(first, currentList) end (* Try the type constructor name first. This is usually accurate. If not fall back to the type identifier. This may be needed in rarer cases. *) val names = case nameToList(constrName, []) of (names, FoundMatch) => names (* Found the type constructor name. *) | (names, f) => let (* Try the type identifier name. *) val TypeId { description = { name=idName, ...}, ...} = case (sigMap, tcIdentifier typeConstructor) of (SOME map, TypeId{idKind=Bound{offset, ...}, ...}) => map offset | (_, id) => id (* Only add "?" if we actually found a type with the required name but it wasn't the right one. This allows us to print a sensible result where the type has been shadowed but doesn't affect situations such as where we create a unique type name for a free type variable. *) fun addQuery n = case f of FoundNotMatch => "?" :: n | _ => n in if idName = "" then addQuery names else case nameToList(idName, []) of (idNames, FoundMatch) => idNames | (_, _) => addQuery names (* Print it as "?.t". This isn't ideal but will help in situations where we have redefined "t". *) end val newName = String.concatWith "." names (* Get the declaration position for the type constructor. *) val constrContext = if isUndefined typeConstructor then [] else ( case List.find(fn DeclaredAt _ => true | _ => false) (tcLocations typeConstructor) of SOME(DeclaredAt loc) => [ContextLocation loc] | _ => [] ) val constructorEntry = PrettyBlock(0, false, constrContext, [PrettyString newName(*constrName*)]) in case args of [] => constructorEntry | args as hd :: tl => let val argVal = eventual hd; in PrettyBlock (0, false, [], [ (* If we have just a single argument and it's just a type constructor or a construction we don't need to parenthesise it. *) if null tl andalso not (isProductType argVal orelse isFunctionType argVal) then dispP (argVal, depth - 1) else if depth <= 1 then PrettyString "..." else PrettyBlock(0, false, [], [PrettyString "(", PrettyBreak (0, 0)] @ prettyList args (depth - 1) "," @ [PrettyBreak (0, 0), PrettyString ")"] ), PrettyBreak(1, 0), constructorEntry (* The constructor. *) ]) end end | FunctionType {arg, result} => if depth <= 0 then PrettyString "..." else (* print out in infix notation *) let val evArg = eventual arg; in PrettyBlock (0, false, [], [ (* If the argument is a function it must be printed as (a-> b)->.. *) if isFunctionType evArg then parenthesise depth evArg else dispP (evArg, depth - 1), PrettyBreak(1, 2), PrettyString "->", PrettyBreak (1, 2), dispP (result, depth - 1) ]) end | LabelledType (r as {recList, ...}) => if depth <= 0 then PrettyString "..." else if isProductType typ then (* Print as a product *) PrettyBlock (0, false, [], (* Print them as t1 * t2 * t3 .... *) prettyList (map (fn {typeof, ...} => typeof) recList) depth "*") else (* Print as a record *) let (* The ordering on fields is designed to allow mixing of tuples and records (e.g. #1). It puts shorter names before longer so that #11 comes after #2 and before #100. For named records it does not make for easy reading so we sort those alphabetically when printing. *) val sortedRecList = Misc.quickSort(fn {name = a, ...} => fn {name = b, ...} => a <= b) recList in PrettyBlock (2, false, [], PrettyString "{" :: (let fun pRec [] _ = [] | pRec ({name, typeof} :: T) depth = if depth <= 0 then [PrettyString "..."] else [ PrettyBlock(0, false, [], [ PrettyBlock(0, false, [], [ PrettyString (name ^ ":"), PrettyBreak(1, 0), dispP(typeof, depth - 1) ] @ (if null T then [] else [PrettyBreak (0, 0), PrettyString ","]) ) ]@ (if null T then [] else PrettyBreak (1, 0) :: pRec T (depth-1)) ) ] in pRec sortedRecList (depth - 1) end) @ [ PrettyString (if recordIsFrozen r then "}" else case recList of [] => "...}" | _ => ", ...}")] ) end | OverloadSet {typeset = []} => PrettyString "no type" | OverloadSet {typeset = tconslist} => (* This typically arises when printing error messages in the second pass because the third pass will select a single type e.g. int where possible. To simplify the messages select a single type if possible. *) ( case preferredOverload tconslist of SOME tcons => dispP(mkTypeConstruction (tcName tcons, tcons,[], []), depth) | NONE => (* Just print the type constructors separated by / *) let fun constrLocation tcons = case List.find(fn DeclaredAt _ => true | _ => false) (tcLocations tcons) of SOME(DeclaredAt loc) => [ContextLocation loc] | _ => [] (* Type constructor with context. *) fun tconsItem tcons = PrettyBlock(0, false, constrLocation tcons, [PrettyString(tcName tcons)]) fun printTCcons [] = [] | printTCcons [tcons] = [tconsItem tcons] | printTCcons (tcons::rest) = tconsItem tcons :: PrettyBreak (0, 0) :: PrettyString "/" :: printTCcons rest in PrettyBlock (0, false, [], printTCcons tconslist) end ) | EmptyType => PrettyString "no type" | BadType => PrettyString "bad" end (* dispP *) in dispP (t, depth) end (* tDisp *); (* Generate unique type-variable names. *) fun varNameSequence () : typeVarForm -> string = (* We need to ensure that every distinct type variable has a distinct name. Each new type variable is given a name starting at "'a" and going on through the alphabet. *) let datatype names = Names of {name: string, entry: typeVarForm} val nameNum = ref ~1 val gNameList = ref [] (* List of names *) in (* If the type is already there return the name we have given it otherwise make a new name and put it in the list. *) fn var => case List.find (fn (Names {entry,...}) => sameTv (entry, var)) (!gNameList) of NONE => (* Not on the list - make a new name *) let fun name num = (if num >= 26 then name (num div 26 - 1) else "") ^ String.str (Char.chr (num mod 26 + Char.ord #"a")) val () = nameNum := !nameNum + 1 val n = (if tvEquality var then "''" else "'") ^ name(!nameNum) (* Should explicit type variables be distinguished? *) in gNameList := Names{name=n, entry=var} :: !gNameList; n end | SOME (Names {name,...}) => name end (* varNameSequence *) (* Print a type (as a block of items) *) fun displayWithMap (t : types, depth : FixedInt.int, env, sigMap) = tDisp (t, depth, varNameSequence (), env, sigMap) and display (t : types, depth : FixedInt.int, env) = tDisp (t, depth, varNameSequence (), env, NONE) (* Print out zero, one or more type variables (unblocked) *) fun printTypeVars([], _, _) = [] (* No type vars i.e. monotype *) | printTypeVars([oneVar], depth, typeV) = (* Single type var. *) [ tDisp (TypeVar oneVar, depth, typeV, emptyTypeEnv, NONE), PrettyBreak (1, 0) ] | printTypeVars(vars, depth, typeV) = (* Must parenthesise them. *) if depth <= 1 then [PrettyString "..."] else [ PrettyBlock(0, false, [], PrettyString "(" :: PrettyBreak(0, 0) :: (let fun pVars vars depth: pretty list = if depth <= 0 then [PrettyString "..."] else if null vars then [] else [ tDisp (TypeVar(hd vars), depth, typeV, emptyTypeEnv, NONE), PrettyBreak (0, 0) ] @ (if null (tl vars) then [] else PrettyString "," :: PrettyBreak (1, 0) :: pVars (tl vars) (depth - 1) ) in pVars vars depth end) @ [PrettyString ")"] ), PrettyBreak (1, 0) ] (* Version used in parsetree. *) fun displayTypeVariables (vars : typeVarForm list, depth : FixedInt.int) = printTypeVars (vars, depth, varNameSequence ()) (* Parse tree for types. This is used to represent types in the source. *) datatype typeParsetree = ParseTypeConstruction of { name: string, args: typeParsetree list, location: location, nameLoc: location, argLoc: location, (* foundConstructor is set to the constructor when it has been looked up. This allows us to get the location where it was declared if we export the parse-tree. *) foundConstructor: typeConstrs ref } | ParseTypeProduct of { fields: typeParsetree list, location: location } | ParseTypeFunction of { argType: typeParsetree, resultType: typeParsetree, location: location } | ParseTypeLabelled of { fields: ((string * location) * typeParsetree * location) list, frozen: bool, location: location } | ParseTypeId of { types: typeVarForm, location: location } | ParseTypeBad (* Place holder for errors. *) fun typeFromTypeParse( ParseTypeConstruction{ args, name, location, foundConstructor = ref constr, ...}) = let val argTypes = List.map typeFromTypeParse args in TypeConstruction {name = name, constr = constr, args = argTypes, locations = [DeclaredAt location]} end | typeFromTypeParse(ParseTypeProduct{ fields, ...}) = mkProductType(List.map typeFromTypeParse fields) | typeFromTypeParse(ParseTypeFunction{ argType, resultType, ...}) = mkFunctionType(typeFromTypeParse argType, typeFromTypeParse resultType) | typeFromTypeParse(ParseTypeLabelled{ fields, frozen, ...}) = let fun makeField((name, _), t, _) = mkLabelEntry(name, typeFromTypeParse t) in mkLabelled(sortLabels(List.map makeField fields), frozen) end | typeFromTypeParse(ParseTypeId{ types, ...}) = TypeVar types | typeFromTypeParse(ParseTypeBad) = BadType fun makeParseTypeConstruction((constrName, nameLoc), (args, argLoc), location) = ParseTypeConstruction{ name = constrName, nameLoc = nameLoc, args = args, argLoc = argLoc, location = location, foundConstructor = ref undefConstr } fun makeParseTypeProduct(recList, location) = ParseTypeProduct{ fields = recList, location = location } fun makeParseTypeFunction(arg, result, location) = ParseTypeFunction{ argType = arg, resultType = result, location = location } fun makeParseTypeLabelled(recList, frozen, location) = ParseTypeLabelled{ fields = recList, frozen = frozen, location = location } fun makeParseTypeId(types, location) = ParseTypeId{ types = types, location = location } fun unitTree location = ParseTypeLabelled{ fields = [], frozen = true, location = location } (* Build an export tree from the parse tree. *) fun typeExportTree(navigation, p: typeParsetree) = let val typeof = typeFromTypeParse p (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => display(typeof, d, emptyTypeEnv)) :: PTtype typeof :: exportNavigationProps navigation fun asParent () = typeExportTree(navigation, p) in case p of ParseTypeConstruction{ location, nameLoc, args, argLoc, ...} => let (* If the constructor has been bound return the declaration location. We have to attach the declaration location in the right place if this is a polytype e.g. if we have "int list" here we will have the location for "list" which is the second item not the first. *) val (name, decLoc) = case typeof of TypeConstruction { constr, name, ...} => if isUndefined constr then (name, []) else (name, mapLocationProps(tcLocations constr)) | _ => ("", []) (* Error? *) val navNameAndArgs = (* Separate cases for nullary, unary and higher type constructions. *) case args of [] => decLoc (* Singleton e.g. int *) | [oneArg] => let (* Single arg e.g. int list. *) (* Navigate between the type constructor and the argument. Since the arguments come before the constructor we go there first. *) fun getArg () = typeExportTree({parent=SOME asParent, previous=NONE, next=SOME getName}, oneArg) and getName () = getStringAsTree({parent=SOME asParent, previous=SOME getArg, next=NONE}, name, nameLoc, decLoc) in [PTfirstChild getArg] end | args => let (* Multiple arguments e.g. (int, string) pair *) fun getArgs () = (argLoc, exportList(typeExportTree, SOME getArgs) args @ exportNavigationProps{parent=SOME asParent, previous=NONE, next=SOME getName}) and getName () = getStringAsTree({parent=SOME asParent, previous=SOME getArgs, next=NONE}, name, nameLoc, decLoc) in [PTfirstChild getArgs] end in (location, navNameAndArgs @ commonProps) end | ParseTypeProduct{ location, fields, ...} => (location, exportList(typeExportTree, SOME asParent) fields @ commonProps) | ParseTypeFunction{ location, argType, resultType, ...} => (location, exportList(typeExportTree, SOME asParent) [argType, resultType] @ commonProps) | ParseTypeLabelled{ location, fields, ...} => let fun exportField(navigation, label as ((name, nameLoc), t, fullLoc)) = let (* The first position is the label, the second the type *) fun asParent () = exportField (navigation, label) fun getLab () = getStringAsTree({parent=SOME asParent, next=SOME getType, previous=NONE}, name, nameLoc, [PTtype(typeFromTypeParse t)]) and getType () = typeExportTree({parent=SOME asParent, previous=SOME getLab, next=NONE}, t) in (fullLoc, PTfirstChild getLab :: exportNavigationProps navigation) end in (location, exportList(exportField, SOME asParent) fields @ commonProps) end | ParseTypeId{ location, ...} => (location, commonProps) | ParseTypeBad => (nullLocation, commonProps) end fun displayTypeParse(types, depth, env) = display(typeFromTypeParse types, depth, env) (* Associates type constructors from the environment with type identifiers (NOT type variables) *) fun assignTypes (tp : typeParsetree, lookupType : string * location -> typeConstrSet, lex : lexan) = let fun typeFromTypeParse(ParseTypeConstruction{ args, name, location, foundConstructor, ...}) = let (* Assign constructor, then the parameters. *) val TypeConstrSet(constructor, _) = lookupType (name, location) val () = (* Check that it has the correct arity. *) if not (isUndefined constructor) then let val arity : int = tcArity constructor; val num : int = length args; in if arity <> num then (* Give an error message *) errorMessage (lex, location, String.concat["Type constructor (", tcName constructor, ") requires ", Int.toString arity, " type(s) not ", Int.toString num]) else foundConstructor := constructor end else () val argTypes = List.map typeFromTypeParse args in TypeConstruction {name = name, constr = constructor, args = argTypes, locations = [DeclaredAt location]} end | typeFromTypeParse(ParseTypeProduct{ fields, ...}) = mkProductType(List.map typeFromTypeParse fields) | typeFromTypeParse(ParseTypeFunction{ argType, resultType, ...}) = mkFunctionType(typeFromTypeParse argType, typeFromTypeParse resultType) | typeFromTypeParse(ParseTypeLabelled{ fields, frozen, ...}) = let fun makeField((name, _), t, _) = mkLabelEntry(name, typeFromTypeParse t) in mkLabelled(sortLabels(List.map makeField fields), frozen) end | typeFromTypeParse(ParseTypeId{ types, ...}) = TypeVar types | typeFromTypeParse(ParseTypeBad) = BadType in typeFromTypeParse tp end; (* When we have finished processing a list of patterns we need to check that the record is now frozen. *) fun recordNotFrozen (TypeVar t) : bool = (* Follow the chain *) recordNotFrozen (tvValue t) | recordNotFrozen (LabelledType r) = not(recordIsFrozen r) | recordNotFrozen _ = false (* record or type alias *); datatype generalMatch = Matched of {old: typeVarForm, new: types}; fun generaliseTypes (atyp : types, checkTv: typeVarForm->types option) = let val madeList = ref [] (* List of tyVars. *); fun tvs atyp = let val tyVar = typesTypeVar atyp; in case List.find(fn Matched{old, ...} => sameTv (old, tyVar)) (!madeList) of SOME(Matched{new, ...}) => new | NONE => ( case checkTv tyVar of SOME found => found | NONE => let (* Not on the list - make a new name *) (* Make a unifiable type variable even if the original is nonunifiable. *) val n : types = mkTypeVar (generalisable, tvEquality tyVar, false, tvPrintity tyVar) in (* Set the new variable to have the same value as the existing. That is only really needed if we have an overload set. *) tvSetValue (typesTypeVar n, tvValue tyVar); madeList := Matched {old = tyVar, new = n} :: !madeList; n end ) end fun copyTypeVar (atyp as TypeVar tyVar) = if tvLevel tyVar <> generalisable then atyp (* Not generalisable. *) else (* Unbound, overload set or flexible record *) let val newTv = tvs atyp in (* If we have a type variable pointing to a flexible record we have to copy the type pointed at by the variable. *) case tvValue tyVar of valu as LabelledType _ => tvSetValue (typesTypeVar newTv, copyType (valu, copyTypeVar, fn t => t)) | _ => (); newTv end | copyTypeVar atyp = atyp val copied = (* Only process type variables. Return type constructors unchanged. *) copyType (atyp, copyTypeVar, fn t => t (*copyTCons*)) in (copied, ! madeList) end (* generaliseTypes *); (* Exported wrapper for generaliseTypes. *) fun generalise atyp = let val (t, newMatch) = generaliseTypes (atyp, fn _ => NONE) fun makeResult(Matched{new, old}) = {value=new, equality=tvEquality old, printity=tvPrintity old} in (t, List.map makeResult newMatch) end; (* Return the original polymorphic type variables. *) fun getPolyTypeVars(atyp, map) = let val (_, newMatch) = generaliseTypes (atyp, map) in List.map (fn(Matched{old, ...}) => old) newMatch end; fun generaliseWithMap(atyp, map) = let val (t, newMatch) = generaliseTypes (atyp, map) fun makeResult(Matched{new, old}) = {value=new, equality=tvEquality old, printity=tvPrintity old} in (t, List.map makeResult newMatch) end (* Find the argument type which gives this result when the constructor is applied. If we have, for example, a value of type int list and we have discovered that this is a "::" node we have to work back by comparing the type of "::" ('a * 'a list -> 'a list) to find the argument of the constructor (int * int list) and hence how to print it. (Actually "list" is treated specially). *) fun constructorResult (FunctionType{arg, result=TypeConstruction{args, ...}}, typeArgs) = let val matches = ListPair.zip(List.map typesTypeVar args, typeArgs) fun getArg tv = case List.find(fn (atv, _) => sameTv(tv, atv)) matches of SOME (_, ty) => SOME ty | NONE => NONE in #1 (generaliseTypes(arg, getArg)) end | constructorResult _ = raise InternalError "Not a function type" (* If we have a type construction which is an alias for another type we construct the alias by first instantiating all the type variables and then copying the type. *) fun makeEquivalent (atyp, args) = case tcIdentifier atyp of TypeId{idKind=TypeFn(typeArgs, typeResult), ...} => let val matches = ListPair.zip(typeArgs, args) fun getArg tv = case List.find(fn (atv, _) => sameTv(tv, atv)) matches of SOME (_, ty) => SOME ty | NONE => NONE in #1 (generaliseTypes(typeResult, getArg)) end | TypeId _ => raise InternalError "makeEquivalent: Not a type function" (* Look for the occurrence of locally declared datatypes in the type of a value. *) fun checkForEscapingDatatypes(ty: types, errorFn: string->unit) : unit = let fun checkTypes (typ: types) (ok: bool) : bool = case typ of TypeConstruction {constr, args, ...} => if tcIsAbbreviation constr then (* May be an alias for a type that contains a local datatype. *) foldType checkTypes (makeEquivalent (constr, args)) ok else if ok then ( case tcIdentifier constr of TypeId{access=Local{addr, ...}, ...} => if !addr < 0 then ( errorFn("Type of expression contains local datatype (" ^ tcName constr ^") outside its definition."); false ) else true | _ => true (* Could we have a "selected" entry with a local datatype? *) ) else false | _ => ok in foldType checkTypes ty true; () end (* This 3-valued logic is used because in a few cases we may not be sure if equality testing is allowed. If we have 2 mutually recursive datatypes t = x of s | ... and s = z of t we would first examine "t", find that it uses "s", look at "s", find that refers back to "t". To avoid infinite recursion we return the result that equality "maybe" allowed for "t" and hence for "s". However we may find that the other constructors for "t" do not allow equality and so equality will not be allowed for "s" either. *) datatype tri = Yes (* 3-valued logic *) | No | Maybe; (* Returns a flag saying if equality testing is allowed for values of the given type. "equality" is used both to generate the code for a specific call of equality e.g. (a, b, c) = f(x), and to generate the equality operation for a type when it is declared. In the latter case type variables may be parameters which will be filled in later e.g. type 'a list = nil | op :: of ('a * 'a list). "search" is a function which looks up constructors in mutually recursive type declarations. "lookupTypeVar" deals with type variables. If they represent parameters to a type declaration equality checking will be allowed. If we are unifying this type to an equality type variable they will be unified to new equality type variables. Otherwise equality is not allowed. *) fun equality (ty, search, lookupTypeVar) : tri = let (* Can't use foldT because it is not monotonic (equality on ref 'a is allowed). *) (* Returns Yes only if equality testing is allowed for all types in the list. *) fun eqForList ([], soFar) = soFar | eqForList (x::xs, soFar) = case equality (x, search, lookupTypeVar) of No => No | Maybe => eqForList (xs, Maybe) | Yes => eqForList (xs, soFar); in case eventual ty of TypeVar tyVar => (* The type variable may point to a flexible record or an overload set or it may be the end of the chain. If this is a labelled record we have to make sure that any fields we add also admit equality. lookupTypeVar makes the type variable an equality type so that any new fields are checked for equality but we also have to call "equality" to check the existing fields. *) if tvEquality tyVar then Yes else ( case tvValue tyVar of lab as LabelledType _ => ( case lookupTypeVar tyVar of No => No | _ => equality (lab, search, lookupTypeVar) ) | _ => lookupTypeVar tyVar ) | FunctionType {...} => No (* No equality on function types! *) | TypeConstruction {constr, args, ...} => if isUndefined constr then No else if tcIsAbbreviation constr then (* May be an alias for a type that allows equality. *) equality (makeEquivalent (constr, args), search, lookupTypeVar) (* ref - Equality is permitted on refs of all types *) (* The Definition of Standard ML says that ref is the ONLY type constructor which is treated in this way. The standard basis library says that other mutable types such as array should also work this way. *) else if isPointerEqType(tcIdentifier constr) then Yes (* Others apart from ref and real *) else if tcEquality constr (* Equality allowed. *) then eqForList (args, Yes) (* Must be allowed for all the args *) else let (* Not an alias. - Look it up. *) val s = search (tcIdentifier constr); in if s = No then No else eqForList (args, s) end (* TypeConstruction *) | LabelledType {recList, ...} => (* Record equality if all subtypes are (ignore frozen!) *) (* TODO: Avoid copying the list? *) eqForList (map (fn{typeof, ...}=>typeof) recList, Yes) | OverloadSet _ => (* This should not happen because all overload sets should be pointed to by type variables and so should be handled in the TypeVar case. *) raise InternalError "equality - Overloadset found" | BadType => No | EmptyType => No (* shouldn't occur *) end (* When a datatype is declared we test to see if equality is allowed. The types are mutually recursive so value constructors of one type may take arguments involving values of any of the others. *) fun computeDatatypeEqualities(types: typeConstrSet list, boundIdEq) = let datatype state = Processed of tri (* Already processed or processing. *) | NotSeen of typeConstrSet list (* Value is list of constrs. *); (* This table tells us, for each type constructor, whether it definitely admits equality, definitely does not or whether we have yet to look at it. *) fun isProcessed (Processed _) = true | isProcessed _ = false; fun stateProcessed (Processed x) = x | stateProcessed _ = raise Match; fun stateNotSeen (NotSeen x) = x | stateNotSeen _ = raise Match; val {enter:typeId * state -> unit,lookup} = mapTable sameTypeId; (* Look at each of the constructors in the list. Equality testing is only allowed if it is allowed for each of the alternatives. *) fun constrEq _ [] soFar = soFar (* end of list - all o.k. *) | constrEq constructor (h :: t) soFar = (* The constructor may be a constant e.g. datatype 'a list = nil | ... or a function e.g. datatype 'a list = ... cons of 'a * 'a list. *) if not (isFunctionType (valTypeOf h)) (* Constant *) then constrEq constructor t soFar (* Go on to the next. *) else let (* Function - look at the argument type. *) (* Equality is allowed for any type-variable. The only type variables allowed are parameters to the datatype so if we have a type variable then equality is allowed for this datatype. *) val eq = equality (#arg (typesFunctionType (valTypeOf h)), genEquality, fn _ => Yes); in if eq = No then (* Not allowed. *) No else (* O.k. - go on to the next. *) constrEq constructor t (if eq = Maybe then Maybe else soFar) end (* constrEq *) (* This procedure checks to see if equality is allowed for this datatype. *) and genEquality constructorId = let (* Look it up to see if we have already done it. It may fail because we may have constructors that do not admit equality. *) val thisState = case (lookup constructorId, constructorId) of (SOME inList, _) => inList | (NONE, TypeId{idKind = Bound{offset, ...}, ...}) => Processed(if boundIdEq offset then Yes else No) | _ => Processed No in if isProcessed thisState then stateProcessed thisState (* Have either done it already or are currently doing it. *) else (* notSeen - look at it now. *) let (* Equality is allowed for this datatype only if all of them admit it. There are various other alternatives but this is what the standard says. If the "name" is rigid (free) we must not grant equality if it is not already there although that is not an error. *) (* Set the state to "Maybe". This prevents infinite recursion. *) val () = enter (constructorId, Processed Maybe); val eq = List.foldl (fn (cons, t) => if t = No then No else constrEq cons (tsConstructors cons) t) Yes (stateNotSeen thisState); in (* Set the state we have found if it is "yes" or "no". If it is maybe we have a recursive reference which appears to admit equality, but may not. E.g. if we have datatype t = A of s | B of int->int and s = C of t if we start processing "t" we will go on to "s" and do that before returning to "t". It is only later we find that "t" does not admit equality. If we get "Maybe" as the final result when all the recursion has been unwound we can set the result to "yes", but any intermediate "Maybe"s have to be done again. *) enter (constructorId, if eq = Maybe then thisState else Processed eq); eq end end (* genEquality *); in (* If we have an eqtype we set it to true, otherwise we set all of them to "notSeen" with the constructor as value. *) List.app (fn dec as TypeConstrSet(decCons, _) => let (* If we have two datatypes which share we may already have one in the table. We have to link them together. *) val tclist = case lookup (tcIdentifier decCons) of NONE => [dec] | SOME l => let val others = stateNotSeen l val newList = dec :: others; in (* If any of these are already equality types (i.e. share with an eqtype) then they all must be. *) if tcEquality decCons orelse tcEquality (tsConstr(hd others)) then List.app (fn d => tcSetEquality (tsConstr d, true)) newList else (); newList end in enter (tcIdentifier decCons, NotSeen tclist) end) types; (* Apply genEquality to each element of the list. *) List.app (fn TypeConstrSet(constructor, _) => let val constructorId = tcIdentifier constructor; val eqForCons = genEquality constructorId; in (* If the result is "Maybe" it involves a recursive reference, but the rest of the type allows equality. The type admits equality. *) if eqForCons = No then () (* Equality not allowed *) else ( (* Turn on equality. *) enter (constructorId, Processed Yes); tcSetEquality (constructor, true) ) end) types end (* computeDatatypeEqualities *); datatype matchResult = SimpleError of types * types * string | TypeConstructorError of types * types * typeConstrs * typeConstrs (* Type matching algorithm for both unification and signature matching. *) (* The mapping has now been moved out of here. Instead when signature matching the target signature is copied before this is called which means that this process is now symmetric. There may be some redundant tests left in here. *) fun unifyTypes(Atype : types, Btype : types) : matchResult option = let (* Get the result in here. This isn't very ML-like but it greatly simplifies converting the code. *) val matchResult: matchResult option ref = ref NONE fun matchError error = (* Only report one error. *) case matchResult of ref (SOME _) => () | r => r := SOME error fun cantMatch(alpha, beta, text) = matchError(SimpleError(alpha, beta, text)) fun match (Atype : types, Btype : types) : unit = let (* Check two records/tuples and return the combined type. *) fun unifyRecords (rA as {recList=typAlist, fullList = gA}, rB as {recList=typBlist, fullList = gB}, typA : types, typB : types) : types = let val typAFrozen = recordIsFrozen rA and typBFrozen = recordIsFrozen rB fun matchLabelled ([], []) = [] (* Something left in bList - this is fine if typeA is not frozen. e.g. (a: s, b: t) will match (a: s, ...) but not just (a:s). *) | matchLabelled ([], bList as {name=bName, ...} :: _) = ( if typAFrozen then cantMatch (typA, typB, "(Field " ^ bName ^ " missing)") else (); bList (* return the remainder of the list *) ) | matchLabelled (aList as {name=aName, ...} :: _, []) = (* Something left in bList *) ( if typBFrozen then cantMatch (typA, typB, "(Field " ^ aName ^ " missing)") else (); aList (* the rest of aList *) ) | matchLabelled (aList as ((aVal as {name=aName,typeof=aType})::aRest), bList as ((bVal as {name=bName,typeof=bType})::bRest)) = (* both not nil - look at the names. *) let val order = compareLabels (aName, bName); in if order = 0 (* equal *) then (* same name - must be unifiable types *) ( (* The result is (either) one of these with the rest of the list. *) match (aType, bType); aVal :: matchLabelled (aRest, bRest) ) else if order < 0 (* aName < bName *) then (* The entries in each list are in order so this means that this entry is not in bList. If the typeB is frozen this is an error. *) if typBFrozen (* Continue with the entry removed. *) then (cantMatch (typA, typB, "(Field " ^ aName ^ " missing)"); aList) else aVal :: matchLabelled (aRest, bList) else (* aName > bName *) if typAFrozen then (cantMatch (typA, typB, "(Field " ^ bName ^ " missing)"); bList) else bVal :: matchLabelled (aList, bRest) end (* not nil *); (* Return the combined list. Only actually used if both are flexible. *) val result = if typAFrozen andalso typBFrozen andalso List.length typAlist <> List.length typBlist then (* Don't attempt to unify the fields if we have the wrong number of items. If we've added or removed an item from a tuple e.g. a function with multiple arguments, it's more useful to know this than to get unification errors on fields that don't match. *) (cantMatch (typA, typB, "(Different number of fields)"); []) else matchLabelled (typAlist, typBlist) fun lastFlex(FlexibleList(ref(r as FlexibleList _))) = lastFlex r | lastFlex(FlexibleList r) = SOME r | lastFlex(FieldList _) = NONE in if typAFrozen then (if typBFrozen then () else valOf(lastFlex gB) := gA; typA) else if typBFrozen then (valOf(lastFlex gA) := gB; typB) else let (* We may have these linked already in which case we shouldn't do anything. *) val lastA = valOf(lastFlex gA) and lastB = valOf(lastFlex gB) in if lastA = lastB then () else let val genericFields = FieldList(map #name result, false) in (* If these are both flexible we have link all the generics together so that if we freeze any one of them they all get frozen. *) lastA := genericFields; lastB := FlexibleList lastA end; LabelledType {recList = result, fullList = gA} end end (* unifyRecords *); (* Sets a type variable to a value. - Checks that the type variable we are assigning does not occur in the expression we are about to assign to it. Such cases can occur if we have infinitely-typed expressions such as fun a. a::a where a has type 'a list list ... Also propagates the level information of the type variable. Now also deals with flexible records. *) fun assign (var, t) = let (* Mapped over the type to be assigned. *) (* Returns "false" if it is safe to make the assignment. Sorts out imperative type variables and propagates level information. N.B. It does not propagate equality status. The reason is that if we are unifying ''a with 'b ref, the 'b does NOT become an equality type var. In all other cases it would. *) fun occursCheckFails _ true = true | occursCheckFails ty false = let val t = eventual ty in case t of TypeVar tvar => let (* The level is the minimum of the two, and if we are unifying with an equality type variable we must make this into one. *) val minLev = Int.min (tvLevel var, tvLevel tvar) val oldValue = tvValue tvar in if tvLevel tvar <> minLev then (* If it is nonunifiable we cannot make its level larger. *) if tvNonUnifiable tvar then cantMatch (Atype, Btype, "(Type variable is free in surrounding scope)") else let (* Must make a new type var with the right properties *) (* This type variable may be a flexible record, in which case we have to save the record and put it on the new type variable. We have to do this for the record itself so that new fields inherit the correct status and also for any existing fields. *) val newTv = mkTypeVar (minLev, tvEquality tvar, false, tvPrintity tvar) in tvSetValue (typesTypeVar newTv, oldValue); tvSetValue (tvar, newTv) end else (); (* Safe if vars are different but we also have to check any flexible records. *) occursCheckFails oldValue (sameTv (tvar, var)) end | TypeConstruction {args, constr, ...} => (* If this is a type abbreviation we have to expand this before processing any arguments. We mustn't process arguments that are not actually used. *) if tcIsAbbreviation constr then occursCheckFails(makeEquivalent (constr, args)) false else List.foldr (fn (t, v) => occursCheckFails t v) false args | FunctionType {arg, result} => occursCheckFails arg false orelse occursCheckFails result false | LabelledType {recList,...} => List.foldr (fn ({ typeof, ... }, v) => occursCheckFails typeof v) false recList | _ => false end val varVal = tvValue var (* Current value of the variable to be set. *) local (* We need to process any type abbreviations before applying the occurs check. The type we're assigning could boil down to the same type variable we're trying to assign. This doesn't breach the occurs check. *) fun followVarsAndTypeFunctions t = case eventual t of ev as TypeConstruction{constr, args, ...} => if tcIsAbbreviation constr then followVarsAndTypeFunctions(makeEquivalent (constr, args)) else ev | ev => ev in val finalType = followVarsAndTypeFunctions t end (* We may actually have the same type variable after any type abbreviations have been followed. *) val reallyTheSame = case finalType of TypeVar tv => sameTv (tv, var) | _ => false in (* start of "assign" *) case varVal of LabelledType _ => (* Flexible record. Check that the records are compatible. *) match (varVal, t) | OverloadSet _ => (* OverloadSet. Check that the sets match. This is only in the case where t is something other than an overload set since we remove the overload set from a variable when unifying two sets. *) match (varVal, t) | _ => (); if reallyTheSame then () (* Don't apply the occurs check or check for non-unifiable. *) (* If this type variable was put in explicitly then it can't be assigned to something else. (We have already checked for the type variables being the same). *) else if tvNonUnifiable var then cantMatch (Atype, Btype, "(Cannot unify with explicit type variable)") else if occursCheckFails finalType false then cantMatch (Atype, Btype, "(Type variable to be unified occurs in type)") else let (* Occurs check succeeded. *) fun canMkEqTv (tvar : typeVarForm) : tri = (* Turn it into an equality type var. *) if tvEquality tvar then Yes (* If it is nonunifiable we cannot make it into an equality type var. *) else if tvNonUnifiable tvar then No else (* Must make a new type var with the right properties *) let (* This type variable may be a flexible record or an overload set, in which case we have to save the record and put it on the new type variable. We have to do both because we have to ensure that the existing fields in the flexible record admit equality and ALSO that any additional fields we may add by unification with other records also admit equality. *) val newTv = mkTypeVar (tvLevel tvar, true, false, tvPrintity tvar) val oldValue = tvValue tvar in tvSetValue (tvar, newTv); (* If this is an overloaded type we must remove any types that don't admit equality. *) case oldValue of OverloadSet{typeset} => let (* Remove any types which do not admit equality. *) fun filter [] = [] | filter (h::t) = if tcEquality h then h :: filter t else filter t in case filter typeset of [] => No | [constr] => ( (* Turn a singleton into a type construction. *) tvSetValue (typesTypeVar newTv, mkTypeConstruction(tcName constr, constr, nil, [])); Yes ) | newset => ( tvSetValue (typesTypeVar newTv, OverloadSet{typeset=newset}); Yes ) end | _ => (* Labelled record or unbound variable. *) ( tvSetValue (typesTypeVar newTv, oldValue); Yes ) end in (* If we are unifying a type with an equality type variable we must ensure that equality is allowed for that type. This will turn most type variables into equality type vars. *) if tvEquality var andalso equality (t, fn _ => No, canMkEqTv) = No then cantMatch (Atype, Btype, "(Requires equality type)") (* TODO: This can result in an unhelpful message if var is bound to a flexible record since there is no indication in the printed type that the flexible record is an equality type. It would be improved if we set the value to be EmptyType. At least then the type variable would be printed which would be an equality type. --- Adding the "Requires equality type" should improve things. *) else (); (* Propagate the "printity" status. This is probably not complete but doesn't matter too much since this is a Poly extension. *) if tvPrintity var then let fun makePrintity(TypeVar tv) _ = ( if tvPrintity tv then () else case tvValue tv of (* If it's an overload set we don't need to do anything. This will eventually be a monotype. *) OverloadSet _ => () | oldValue => let (* Labelled record or unbound variable. *) val newTv = mkTypeVar (tvLevel tv, tvEquality tv, tvNonUnifiable tv, true) in tvSetValue(tv, newTv); (* Put this on the chain if it's a labelled record. *) tvSetValue (typesTypeVar newTv, oldValue) end ) | makePrintity _ _ = () in foldType makePrintity t () end else (); (* Actually make the assignment. It doesn't matter if var is a labelled record, because t will be either a fixed record or a combination of the fields of var and t. Likewise if var was previously an overload set this may replace the set by a single type construction. *) (* If we have had an error don't make the assignment. At the very least it could prevent us producing useful error information and it could also result in unnecessary consequential errors. *) case !matchResult of NONE => tvSetValue (var, t) | SOME _ => () end end (* assign *); (* First find see if typeA and typeB are unified to anything already, and get the end of a list of "flexibles". *) val tA = eventual Atype and tB = eventual Btype in (* start of "match" *) if isUndefinedType tA orelse isUndefinedType tB then () (* If either of these was an undefined type constructor don't try to match. TODO: There are further tests below for this which are now redundant. *) else case (tA, tB) of (BadType, _) => () (* If either is an error don't try to match *) | (_, BadType) => () | (TypeVar typeAVar, TypeVar typeBVar) => (* Unbound type variable, flexible record or overload set. *) let (* Even if this is a one-way match we can allow type variables in the typeA to be instantiated to anything in the typeB. *) val typeAVal = tvValue typeAVar; (* We have two unbound type variables or flex. records. *) in if sameTv (typeAVar, typeBVar) (* same type variable? *) then () else (* no - assign one to the other *) if tvNonUnifiable typeAVar (* If we have a nonunifiable type variable we want to assign the typeB to it. If the typeB is nonunifiable as well we will get an error message. *) then assign (typeBVar, tA) else let (* If they are both flexible records we first set the typeB to the union of the records, and then set the typeA to that. In that way we propagate properties such as equality and level between the two variables. *) val typBVal = tvValue typeBVar in case (typeAVal, typBVal) of (LabelledType recA, LabelledType recB) => ( (* Turn these back into simple type variables to save checking the combined record against the originals when we make the assignment. (Would be safe but redundant). *) tvSetValue (typeBVar, emptyType); tvSetValue (typeAVar, emptyType); assign (typeBVar, unifyRecords (recA, recB, typeAVal, typBVal)); assign (typeAVar, tB) ) | (OverloadSet{typeset=setA}, OverloadSet{typeset=setB}) => let (* The lists aren't ordered so we just have to go through by hand. *) fun intersect(_, []) = [] | intersect(a, H::T) = if isInSet(H, a) then H::intersect(a, T) else intersect(a, T) val newSet = intersect(setA, setB) in case newSet of [] => cantMatch (Atype, Btype, "(Incompatible overloadings)") | _ => ( tvSetValue (typeBVar, emptyType); tvSetValue (typeAVar, emptyType); (* I've changed this from OverloadSet{typeset=newset} to use mkOverloadSet. The main reason was that it fixed a bug which resulted from a violation of the assumption that "equality" would not be passed an overload set except when pointed to by a type variable. It also removed the need for a separate test for singleton sets since mkOverloadSet deals with them. DCJM 1/9/00. *) assign (typeBVar, mkOverloadSet newSet); assign (typeAVar, tB) ) end | (EmptyType, _) => (* A is not a record or an overload set. *) assign (typeAVar, tB) | (_, EmptyType) => (* A is a record but B isn't *) assign (typeBVar, tA) (* typeB is ordinary type var. *) | _ => (* Bad combination of labelled record and overload set *) cantMatch (Atype, Btype, "(Incompatible types)") end end | (TypeVar typeAVar, _) => (* typeB is not a type variable so set typeA to typeB.*) (* Be careful if this is a non-unifiable type variable being matched to the special case of the identity type-construction. *) ( if tvNonUnifiable typeAVar orelse (case tvValue typeAVar of OverloadSet _ => true | _ => false) then ( case tB of TypeConstruction {constr, args, ...} => if isUndefined constr orelse not (tcIsAbbreviation constr) then ( case tB of TypeConstruction {constr, args, ...} => if isUndefined constr orelse not (tcIsAbbreviation constr) then assign (typeAVar, tB) else match(tA, eventual (makeEquivalent (constr, args))) | _ => assign (typeAVar, tB) ) else match(tA, eventual (makeEquivalent (constr, args))) | _ => assign (typeAVar, tB) ) else assign (typeAVar, tB) ) | (_, TypeVar typeBVar) => (* and typeA is not *) ( (* We have to check for the special case of the identity type-construction. *) if tvNonUnifiable typeBVar orelse (case tvValue typeBVar of OverloadSet _ => true | _ => false) then ( case tA of TypeConstruction {constr, args, ...} => if isUndefined constr orelse not (tcIsAbbreviation constr) then ( case tB of TypeVar tv => (* This will fail if we are matching a signature because the typeB will be non-unifiable. *) assign (tv, tA) (* set typeB to typeA *) | typB => match (tA, typB) ) else match(eventual (makeEquivalent (constr, args)), tB) | _ => ( case tB of TypeVar tv => (* This will fail if we are matching a signature because the typeB will be non-unifiable. *) assign (tv, tA) (* set typeB to typeA *) | typB => match (tA, typB) ) ) else ( case tB of TypeVar tv => (* This will fail if we are matching a signature because the typeB will be non-unifiable. *) assign (tv, tA) (* set typeB to typeA *) | typB => match (tA, typB) ) ) | (TypeConstruction({constr = tACons, args=tAargs, ...}), TypeConstruction ({constr = tBCons, args=tBargs, ...})) => ( (* We may have a number of possibilities here. a) If tA is an alias we simply expand it out and recurse (even if tB is the same alias). e.g. if we have string t where type 'a t = int*'a we expand string t into int*string and try to unify that. b) map it and see if the result is an alias. -- NOW REMOVED c) If tB is a type construction and it is an alias we expand that e.g. unifying "int list" and "int t" where type 'a t = 'a list (particularly common in signature/structure matching.) d) Finally we try to unify the stamps and the arguments. *) if isUndefined tACons orelse isUndefined tBCons then () (* If we've had an undefined type constructor don't try to check further. *) else if tcIsAbbreviation tACons (* Candidate is an alias - expand it. *) then match (makeEquivalent (tACons, tAargs), tB) else if tcIsAbbreviation tBCons then match (tA, makeEquivalent (tBCons, tBargs)) else if tcIsAbbreviation tBCons (* If the typeB is an alias it must be expanded. *) then match (tA, makeEquivalent (tBCons, tBargs)) else if sameTypeId (tcIdentifier tACons, tcIdentifier tBCons) then let (* Same type constructor - do the arguments match? *) fun matchLists [] [] = () | matchLists (a::al) (b::bl) = ( match (a, b); matchLists al bl ) | matchLists _ _ = (* This should only happen as a result of a different error. *) cantMatch (Atype, Btype, "(Different numbers of arguments)") in matchLists tAargs tBargs end (* When we have different type constructors, especially two with the same name, we try to produce more information. *) else matchError(TypeConstructorError(tA, tB, tACons, tBCons)) ) | (OverloadSet {typeset}, TypeConstruction {constr=tBCons, args=tBargs, ...}) => (* The candidate is an overloaded type and the target is a type construction. *) ( if not (isUndefined tBCons orelse not (tcIsAbbreviation tBCons)) then match (tA, makeEquivalent (tBCons, tBargs)) else if isUndefined tBCons then () else if tcIsAbbreviation tBCons then match (tA, makeEquivalent (tBCons, tBargs)) else (* See if the target type is among those in the overload set. *) if null tBargs (* Must be a nullary type constructor. *) andalso isInSet(tBCons, typeset) then () (* ok. *) (* Overload sets arise primarily with literals such as "1" and it's most likely that the error is a mismatch between int and another type rather than that the user assumed that the literal was overloaded on a type it actually wasn't. *) else case preferredOverload typeset of NONE => cantMatch (tA, tB, "(Different type constructors)") | SOME prefType => matchError( TypeConstructorError( mkTypeConstruction (tcName prefType, prefType,[], []), tB, prefType, tBCons)) ) | (TypeConstruction {constr=tACons, args=tAargs, ...}, OverloadSet {typeset}) => ( if not (isUndefined tACons orelse not (tcIsAbbreviation tACons)) then match (makeEquivalent (tACons, tAargs), tB) (* We should never find an overload set as the target for a signature match but it is perfectly possible for tB to be an overload set when unifying two types. *) else if null tAargs andalso isInSet(tACons, typeset) then () (* ok. *) else case preferredOverload typeset of NONE => cantMatch (tA, tB, "(Different type constructors)") | SOME prefType => matchError( TypeConstructorError( tA, mkTypeConstruction (tcName prefType, prefType,[], []), tACons, prefType)) ) | (OverloadSet _ , OverloadSet _) => raise InternalError "Unification: OverloadSet/OverloadSet" (* (OverloadSet , OverloadSet) should not occur because that should be handled in the (TypeVar, TypeVar) case. *) | (TypeConstruction({constr = tACons, args=tAargs, ...}), _) => if not (isUndefined tACons orelse not (tcIsAbbreviation tACons)) (* Candidate is an alias - expand it. *) then match (makeEquivalent (tACons, tAargs), tB) else (* typB not a construction (but typeA is) *) cantMatch (tA, tB, "(Incompatible types)") | (_, TypeConstruction {constr=tBCons, args=tBargs, ...}) => (* and typeA is not. *) (* May have a type equivalence e.g. "string t" matches int*string if type 'a t = int * 'a . Alternatively we may be matching a structure to a signature where the signature says "type t" and the structure contains "type t = int->int" (say). We need to set the type in the signature to int->int. *) if not (isUndefined tBCons orelse not (tcIsAbbreviation tBCons)) then match (tA, makeEquivalent (tBCons, tBargs)) else if isUndefined tBCons then () else if tcIsAbbreviation tBCons then match (tA, makeEquivalent (tBCons, tBargs)) else cantMatch (tB, tA, "(Incompatible types)") | (FunctionType {arg=typAarg, result=typAres, ...}, FunctionType {arg=typBarg, result=typBres, ...}) => ( (* must be unifiable functions *) (* In principle it doesn't matter whether we unify arguments or results first but it could affect the error messages. Is this the best way to do it? *) match (typAarg, typBarg); match (typAres, typBres) ) | (EmptyType, EmptyType) => () (* This occurs only with exceptions - empty means no argument *) | (LabelledType recA, LabelledType recB) => (* Unify the records, but discard the result because at least one of the records is frozen. *) (unifyRecords (recA, recB, tA, tB); ()) | _ => cantMatch (tA, tB, "(Incompatible types)") end (* match *) in match (Atype, Btype); ! matchResult end (* unifyTypes *) (* Turn a result from matchTypes into a pretty structure so that it can be included in a message. *) fun unifyTypesErrorReport (_, alphaTypeEnv, betaTypeEnv, what) = let fun reportError(SimpleError(alpha: types, beta: types, reason)) = (* This previously used a single type variable sequence for both types. It may be that this is needed to make sensible error messages. *) PrettyBlock(3, false, [], [ PrettyString ("Can't " ^ what (* "match" if a signature, "unify" if core lang. *)), PrettyBreak (1, 0), display (alpha, 1000 (* As deep as necessary *), alphaTypeEnv), PrettyBreak (1, 0), PrettyString "to", PrettyBreak (1, 0), display (beta, 1000 (* As deep as necessary *), betaTypeEnv), PrettyBreak (1, 0), PrettyString reason ]) | reportError(TypeConstructorError(alpha: types, beta: types, alphaCons, betaCons)) = let fun expandedTypeConstr(ty, tyEnv, tyCons) = let fun lastPart name = #second(splitString name) (* Print the type which includes the type constructor name with as much additional information as we can. *) fun printWithDesc{ location, name, description } = PrettyBlock(3, false, [], [ display (ty, 1000, tyEnv) ] @ (if lastPart name = lastPart(tcName tyCons) then [] else [ PrettyBreak(1, 0), PrettyString "=", PrettyBreak(1, 0), PrettyBlock(0, false, [ContextLocation location], [PrettyString name]) ] ) @ (if description = "" then [] else [ PrettyBreak(1, 0), PrettyBlock(0, false, [ContextLocation location], [PrettyString ("(*" ^ description ^ "*)")]) ] ) ) in case tcIdentifier tyCons of TypeId { description, ...} => printWithDesc description end in PrettyBlock(3, false, [], [ PrettyString ("Can't " ^ what (* "match" if a signature, "unify" if core lang. *)), PrettyBreak (1, 0), expandedTypeConstr(alpha, alphaTypeEnv, alphaCons), PrettyBreak (1, 0), PrettyString (if what = "unify" then "with" else "to"), PrettyBreak (1, 0), expandedTypeConstr(beta, betaTypeEnv, betaCons), PrettyBreak (1, 0), PrettyString "(Different type constructors)" ]) end in reportError end (* Given a function type returns the first argument if the function takes a tuple otherwise returns the only argument. Extended to include the case where the argument is not a function in order to work properly for overloaded literals. *) fun firstArg(FunctionType{arg= LabelledType { recList = {typeof, ...} ::_, ...}, ...}) = eventual typeof | firstArg(FunctionType{arg, ...}) = eventual arg | firstArg t = t (* Returns an instance of an overloaded function using the supplied list of type constructors for the overloading. *) fun generaliseOverload(t, constrs, isConverter) = let (* Returns the result type of a function. *) fun getResult(FunctionType{result, ...}) = eventual result | getResult _ = raise InternalError "getResult - not a function"; val arg = if isConverter then getResult t else firstArg t in case arg of TypeVar tv => let (* The argument should be a type variable, possibly set to an empty overload set. This should be replaced by the current overload set in the copied function type. *) val newSet = mkOverloadSet constrs val (t, _) = generaliseTypes(t, fn old => if sameTv(old, tv) then SOME newSet else NONE) in (t, [newSet]) end | _ => raise InternalError "generaliseOverload - arg is not a type var" end (* Prints out a type constructor e.g. type 'a fred = 'a * 'a or datatype 'a joe = bill of 'a list | mary of 'a * int or simply type 'a abs if the type is abstract. *) fun displayTypeConstrsWithMap ( TypeConstrSet( TypeConstrs{identifier=TypeId{idKind=TypeFn(args, result), ...}, name, ...}, []), depth, typeEnv, sigMap) = (* Type function *) if depth <= 0 then PrettyString "..." else let val typeV = varNameSequence () (* Local sequence for this binding. *) in PrettyBlock (3, false, [], PrettyString "type" :: PrettyBreak (1, 0) :: printTypeVars (args, depth, typeV) @ [ PrettyString (#second(splitString name)), PrettyBreak(1, 0), PrettyString "=", PrettyBreak(1, 0), tDisp(result, depth-1, typeV, typeEnv, sigMap) ] ) end | displayTypeConstrsWithMap (TypeConstrSet(tCons, [] (* No constructors *)), depth, _, _) = (* Abstract type or type in a signature. *) if depth <= 0 then PrettyString "..." else PrettyBlock (3, false, [], PrettyString ( if tcEquality tCons then "eqtype" else "type") :: PrettyBreak (1, 0) :: printTypeVars (tcTypeVars tCons, depth, varNameSequence ()) @ [PrettyString (#second(splitString(tcName tCons)))] ) | displayTypeConstrsWithMap (TypeConstrSet(tCons as TypeConstrs{name, locations, ...}, tcConstructors), depth, typeEnv, sigMap) = (* It has constructors - datatype declaration *) if depth <= 0 then PrettyString "..." else let val typeV = varNameSequence () (* Construct a ('a, 'b, 'c) tyCons construction for the result types of each of the constructors. N.B. We use the original type constructors because they have the appropriate equality type properties. datatype 'a t = A of 'a is not the same as ''a t = A of ''a. *) val typeVars = tcTypeVars tCons val typeResult = mkTypeConstruction(name, tCons, map TypeVar typeVars, locations) (* Print a single constructor (blocked) *) fun pValConstr (first, name, typeOf, depth) = let val (t, _) = generalise typeOf val firstBreak = PrettyBreak (1, if first then 2 else 0) in case t of FunctionType { arg, result} => let (* Constructor with an argument. The constructor "type" is the argument. We have to unify the result type of the function with the ('a, 'b, 'c) tyCons type so that we get the correct type variables in the argument. We just print the argument of the function. *) val _ = unifyTypes(result, typeResult) in [ firstBreak, PrettyBlock (0, false, [], PrettyBlock (0, false, [], (if first then PrettyBreak (0, 2) else PrettyBlock (0, false, [], [PrettyString "|", PrettyBreak(1, 2)]) ) :: (if depth <= 0 then [PrettyString "..."] else [ PrettyString name, PrettyBreak (1, 4), PrettyString "of"]) ) :: (if depth > 0 then [ PrettyBreak (1, 4), (* print the type as a single block of output *) tDisp (arg, depth - 1, typeV, typeEnv, sigMap) ] else []) ) ] end | _ => [ firstBreak, PrettyBlock (0, false, [], [if first then PrettyBreak (0, 2) else PrettyBlock (0, false, [], [PrettyString "|", PrettyBreak(1, 2)]), PrettyString (if depth <= 0 then "..." else name)] ) ] end (* Print a sequence of constructors (unblocked) *) fun pValConstrRest ([], _ ): pretty list = [] | pValConstrRest (H :: T, depth): pretty list = if depth < 0 then [] else pValConstr (false, valName H, valTypeOf H, depth) @ pValConstrRest (T, depth - 1) fun pValConstrList ([], _ ) = PrettyString "" (* shouldn't occur *) | pValConstrList (H :: T, depth) = PrettyBlock (2, true, [], pValConstr (true, valName H, valTypeOf H, depth) @ pValConstrRest (T, depth - 1) ) in PrettyBlock(0, false, [], [ PrettyBlock(0, false, [], PrettyString "datatype" :: PrettyBreak (1, 2) :: printTypeVars (typeVars, depth, typeV) @ [ PrettyString(#second(splitString(tcName tCons))), PrettyBreak(1, 0), PrettyString "=" ] ), pValConstrList (tcConstructors, depth - 1) ] ) end (* displayTypeConstrsWithMap *) fun displayTypeConstrs (tCons : typeConstrSet, depth : FixedInt.int, typeEnv) : pretty = displayTypeConstrsWithMap(tCons, depth, typeEnv, NONE) (* Return a type constructor from an overload. If there are several (i.e. the overloading has not resolved to a single type) it returns the "best". This is called in the third pass so it should never be called if there is not at least one type that is possible. *) fun typeConstrFromOverload(f, _) = let fun prefType(TypeVar tvar) = ( (* If we still have an overload set that's because it has not reduced to a single type. In ML 97 we default to int, real, word, char or string in that order. This works correctly for overloading literals so long as the literal conversion functions are correctly installed. *) case tvValue tvar of OverloadSet{typeset} => let (* If we accept this type we have to freeze the overloading to this type. I'm not happy about doing this here but it seems the easiest solution. *) fun freezeType tcons = ( tvSetValue(tvar, mkTypeConstruction(tcName tcons, tcons, [], [])); tcons ) in case preferredOverload typeset of SOME tycons => freezeType tycons | NONE => raise InternalError "typeConstrFromOverload: No matching type" end | _ => raise InternalError "typeConstrFromOverload: No matching type" (* Unbound or flexible record. *) ) | prefType(TypeConstruction{constr, args, ...}) = if not (tcIsAbbreviation constr) then constr (* Generally args will be nil in this case but in the special case of looking for an equality function for 'a ref or 'a array it may not be. *) else prefType (makeEquivalent (constr, args)) | prefType _ = raise InternalError "typeConstrFromOverload: No matching type" in prefType(firstArg(eventual f)) end; (* Return the result type of a function. Also used to test if the value is a function type. *) fun getFnArgType t = case eventual t of FunctionType {arg, ... } => SOME arg | _ => NONE (* Assigns type variables to variables with generalisation permitted if their level is at least that of the current level. In ML90 mode this produced an error message for any top-level free imperative type variables. We don't do that in ML97 because it is possible that another declaration may "freeze" the type variable before the composite expression reaches the top level. *) fun allowGeneralisation (t, level, nonExpansive, lex, location, moreInfo, typeEnv) = let fun giveError(s1: string, s2: string) = let (* Use a single sequence. *) val vars : typeVarForm -> string = varNameSequence (); open DEBUG val parameters = debugParams lex val errorDepth = getParameter errorDepthTag parameters in reportError lex { hard = true, location = location, message = PrettyBlock (3, false, [], [ PrettyString s1, PrettyBreak (1, 0), tDisp (t, errorDepth, vars, typeEnv, NONE), PrettyBreak (1, 0), PrettyString s2 ] ), context = SOME(moreInfo ()) } end local open DEBUG val parameters = debugParams lex in val checkOverloadFlex = getParameter narrowOverloadFlexRecordTag parameters end fun general t (genArgs as (showError, nonExpansive)) = case eventual t of TypeVar tvar => let val argSet = if tvLevel tvar >= level andalso tvLevel tvar <> generalisable andalso (case tvValue tvar of OverloadSet _ => false | _ => true) then let (* Make a new generisable type variable, except that type variables in an expansive context cannot be generalised. We also don't generalise if this is an overload set. The reason for that is that it allows us to get overloading information from the surrounding context. e.g. let fun f x y = x+y in f 2.0 end. An alternative would be take the default type (in this case int). DCJM 1/9/00. *) val nonCopiable = not nonExpansive val newLevel = if nonCopiable then level-1 else generalisable (* copiable *); val isOk = (* If the type variable has top-level scope then we have a free type variable. We only want to generate this message once even if we have multiple type variables.*) (* If the type variable is non-unifiable and the expression is expansive then we have an error since this will have to be a monotype. *) if tvNonUnifiable tvar andalso nonCopiable andalso showError then ( giveError("Type", "includes a free type variable"); false ) else showError; val newVal = mkTypeVar (newLevel, tvEquality tvar, if nonCopiable then (tvNonUnifiable tvar) else false, tvPrintity tvar) in (* If an explicit type variable is going out of scope we can generalise it, except if it is nonunifiable. *) (* It may be a flexible record so we have to transfer the record to the new variable. *) tvSetValue (typesTypeVar newVal, tvValue tvar); tvSetValue (tvar, newVal); (isOk, nonExpansive) end else genArgs in (* If we are using the "narrow" context for overloading and flexible records we should apply this here. Otherwise it is dealt with in the next pass when we have the full program context. *) case (checkOverloadFlex, tvValue tvar) of (true, LabelledType _) => giveError("Type", "is an unresolved flexible record") | (true, OverloadSet {typeset, ...}) => ( (* Set this to the "preferred" type. Typically this is "int" but for overloaded literals (e.g. 0w0) it could be something else. *) case preferredOverload typeset of SOME tycons => tvSetValue(tvar, mkTypeConstruction(tcName tycons, tycons, [], [])) | NONE => raise InternalError "general: No matching type" ) | _ => (); general (tvValue tvar) argSet (* Process any flexible record. *) end | TypeConstruction {args, constr, ...} => (* There is a pathological case here. If we have a type equivalence which contains type variables that do not occur on the RHS (e.g. type 'a t = int) then we generalise over them even with an expansive expression. This is because the semantics treats type abbreviations as type functions and so any type variables that are eliminated by the function application do not appear in the "type" that the semantics applies to the expression. *) if tcIsAbbreviation constr then let val (r1, _) = general(makeEquivalent (constr, args)) genArgs (* Process any arguments that have not been processed in the equivalent. *) val (r2, _) = List.foldr (fn (t, v) => general t v) (r1, true) args in (r2, nonExpansive) end else List.foldr (fn (t, v) => general t v) genArgs args | FunctionType {arg, result} => general arg (general result genArgs) | LabelledType {recList,...} => List.foldr (fn ({ typeof, ... }, v) => general typeof v) genArgs recList | _ => genArgs in general t (true, nonExpansive); () end (* end allowGeneralisation *); (* Check for free type variables at the top level. Added for ML97. This replaces the test in allowGeneralisation above and is applied to all top-level values including those in structures and functors. *) (* I've changed this from giving an error message, which prevented the code from evaluating, to giving a warning and setting the type variables to unique type variables. That allows, for example, fun f x = raise x; f Subscript; to work. DCJM 8/3/01. *) fun checkForFreeTypeVariables(valName: string, ty: types, lex: lexan, printAndEqCode) : unit = let (* Generate new names for the type constructors. *) val count = ref 0 fun genName num = (if num >= 26 then genName (num div 26 - 1) else "") ^ String.str (Char.chr (num mod 26 + Char.ord #"a")); fun checkTypes (TypeVar tvar) () = if isEmpty(tvValue tvar) andalso tvLevel tvar = 1 then (* The type variable is unbound (specifically, not an overload set) and it is not generic i.e. it must have come from an expansive expression. *) let val name = "_" ^ genName(!count) val _ = count := !count + 1; val declLoc = location lex (* Not correct but OK for the moment. *) val declDescription = { location = declLoc, name = name, description = "Constructed from a free type variable." } val tCons = makeTypeConstructor (name, [], makeFreeId(0, Global(printAndEqCode()), tvEquality tvar, declDescription), [DeclaredAt declLoc]); val newVal = mkTypeConstruction(name, tCons, [], []) in warningMessage(lex, location lex, concat["The type of (", valName, ") contains a free type variable. Setting it to a unique monotype."]); tvSetValue (tvar, newVal) end else () | checkTypes _ () = () in foldType checkTypes ty (); () end (* Returns true if a type constructor permits equality. *) fun permitsEquality constr = if tcIsAbbreviation constr then typePermitsEquality( mkTypeConstruction (tcName constr, constr, List.map TypeVar (tcTypeVars constr), [])) else tcEquality constr and typePermitsEquality ty = equality (ty, fn _ => No, fn _ => Yes) <> No (* See if a type abbreviation or "where type" has the form type t = s or type 'a t = 'a s etc and so is simply giving a new name to the type constructor. If it is it then checks that the type constructor used (s in this example) is just a simple type name. *) fun typeNameRebinding(typeArgs, typeResult): typeId option = let fun eqTypeVar(TypeVar ta, tb) = sameTv (ta, tb) | eqTypeVar _ = false in case typeResult of TypeConstruction {constr, args, ... } => if not (ListPair.allEq eqTypeVar(args, typeArgs)) then NONE else ( case tcIdentifier constr of TypeId{idKind=TypeFn _, ...} => NONE | tId => SOME tId ) | _ => NONE end (* Returns the number of the entry in the list. Used to find out the location of fields in a labelled record for expressions and pattern matching. Assumes that the label appears in the list somewhere. *) fun entryNumber (label, LabelledType{recList, ...}) = let (* Count up the list. *) fun entry ({name, ...}::l) n = if name = label then n else entry l (n + 1) | entry [] _ = raise Match in entry recList 0 end | entryNumber (label, TypeVar tvar) = entryNumber (label, tvValue tvar) | entryNumber (label, TypeConstruction{constr, ...}) = (* Type alias *) entryNumber (label, tcEquivalent constr) | entryNumber _ = raise InternalError "entryNumber - not a record" (* Size of a labelled record. *) fun recordWidth (LabelledType{recList, ...}) = length recList | recordWidth (TypeVar tvar) = recordWidth (tvValue tvar) | recordWidth (TypeConstruction{constr, ...}) = (* Type alias *) recordWidth (tcEquivalent constr) | recordWidth _ = raise InternalError "entryNumber - not a record" fun recordFieldMap f (LabelledType{recList, ...}) = List.map (f o (fn {typeof, ...} => typeof)) recList | recordFieldMap f (TypeVar tvar) = recordFieldMap f (tvValue tvar) | recordFieldMap f (TypeConstruction{constr, ...}) = recordFieldMap f (tcEquivalent constr) | recordFieldMap _ _ = raise InternalError "entryNumber - not a record" (* Unify two type variables which would otherwise be non-unifiable. Used when we have found a local type variable with the same name as a global one. *) fun linkTypeVars (a, b) = let val ta = typesTypeVar (eventual(TypeVar a)); (* Must both be type vars. *) val tb = typesTypeVar (eventual(TypeVar b)); in (* Set the one with the higher level to point to the one with the lower, so that the effective level is the lower. *) if (tvLevel ta) > (tvLevel tb) then tvSetValue (ta, TypeVar b) else tvSetValue (tb, TypeVar a) end; (* Set its level by setting it to a new type variable. *) fun setTvarLevel (typ, level) = let val tv = typesTypeVar (eventual(TypeVar typ)); (* Must be type var. *) in tvSetValue (tv, mkTypeVar (level, tvEquality tv, true, tvPrintity tv)) end; (* Construct the least general type from a list of types. This is used after type checking to try to remove polymorphism from local values. It takes the list of actual uses of the value, usually a function, and removes any unnecessary polymorphism. This is particularly the case if the function involves a flexible record, where the unspecified fields are treated as polymorphic, but where the function is actually applied to a records which are monomorphic. *) fun leastGeneral [] = EmptyType (* Never used? *) (* Don't use this at the moment - see the comment on TypeVar below. Also the comment on TypeConstruction for local datatypes. *) (* | leastGeneral [oneType] = oneType *)(* Just one - this is it. *) | leastGeneral(firstType::otherTypes): types = let fun canonical (typ as TypeVar tyVar) = ( case tvValue tyVar of EmptyType => typ | OverloadSet _ => let val constr = typeConstrFromOverload(typ, false) in mkTypeConstruction(tcName constr, constr, [], []) end | t => canonical t ) | canonical (typ as TypeConstruction { constr, args, ...}) = if tcIsAbbreviation constr (* Handle type abbreviations directly *) then canonical(makeEquivalent (constr, args)) else typ | canonical typ = typ (* Take the head of the each argument list and extract the least general. Then process the tail. It's an error if each element of the list does not contain the same number of items. *) fun leastArgs ([]::_) = [] | leastArgs (args as _::_) = leastGeneral(List.map hd args) :: leastArgs (List.map tl args) | leastArgs _ = raise Empty in case canonical firstType of (*typ as *)TypeVar _(*tv*) => let (*fun sameTypeVar(TypeVar tv1) = sameTv(tv, tv1) | sameTypeVar _ = false*) in (* If they are all the same type variable return that otherwise return a new generalisable type variable. They may all be equal if we always apply this function to a value whose type is a polymorphic type in the function that contains all these uses. *) (* Temporarily, at least, create a new type var in this case. If we have a polymorphic function that is only used inside another polymorphic function but isn't declared inside it, if we use the caller's type variable here the call won't be recognised as polymorphic. *) (*if List.all sameTypeVar otherTypes then typ else*) mkTypeVar(generalisable, false, false, false) end | TypeConstruction{ constr, args, name, locations, ...} => ( (* There is a potential problem if the datatype is local including if it was constructed in a functor. Almost always it will have been declared after the polymorphic function but if it happens not to have been we could set a polymorphic function to a type that doesn't exist yet. To avoid this we don't allow a local datatype here and instead fall back to the polymorphic case. *) case tcIdentifier constr of thisConstrId as TypeId{access=Global _, ...} => let val argLength = List.length args (* This matches if it is an application of the same type constructor. *) fun getTypeConstrs(TypeConstruction{constr, args, ...}) = if sameTypeId(thisConstrId, tcIdentifier constr) andalso List.length args = argLength then SOME args else NONE | getTypeConstrs _ = NONE val allArgs = List.mapPartial (getTypeConstrs o canonical) otherTypes in if List.length allArgs = List.length otherTypes then TypeConstruction{constr=constr, name=name, locations=locations, args = leastArgs(args :: allArgs)} else (* At least one of these wasn't the same type constructor. *) mkTypeVar(generalisable, false, false, false) end | _ => mkTypeVar(generalisable, false, false, false) ) | FunctionType{ arg, result } => let fun getFuns(FunctionType{arg, result}) = SOME(arg, result) | getFuns _ = NONE val argResults = List.mapPartial (getFuns o canonical) otherTypes in if List.length argResults = List.length otherTypes then let val (args, results) = ListPair.unzip argResults in FunctionType{arg=leastGeneral(arg::args), result = leastGeneral(result::results)} end else (* At least one of these wasn't a function. *) mkTypeVar(generalisable, false, false, false) end | LabelledType (r as {recList=firstRec, fullList}) => if recordIsFrozen r then let (* This matches if all the field names are the same. Extract the types. *) fun nameMatch({name=name1: string, ...}, {name=name2, ...}) = name1 = name2 fun getRecords(LabelledType{recList, ...}) = if ListPair.allEq nameMatch (firstRec, recList) then SOME(List.map #typeof recList) else NONE | getRecords _ = NONE val argResults = List.mapPartial (getRecords o canonical) otherTypes in if List.length argResults = List.length otherTypes then let (* Use the names from the first record (they all are the same) to build a new record. *) val argTypes = leastArgs(List.map #typeof firstRec :: argResults) fun recreateRecord({name, ...}, types) = {name=name, typeof=types} val newList = ListPair.map recreateRecord(firstRec, argTypes) in LabelledType{recList=newList, fullList=fullList } end else (* At least one of these wasn't a record. *) mkTypeVar(generalisable, false, false, false) end else (* At this stage the record should be frozen if the program is correct but if it isn't we could have a flexible record which we report elsewhere. *) mkTypeVar(generalisable, false, false, false) | _ => (* May arise if there's been an error. *) mkTypeVar(generalisable, false, false, false) end (* Test if this is floating point i.e. the "real" type. We could include abbreviations of real as well but it's probably not worth it. *) fun isFloatingPt t = case eventual t of TypeConstruction{args=[], constr, ...} => sameTypeId (tcIdentifier constr, tcIdentifier realConstr) | OverloadSet {typeset, ...} => ( case preferredOverload typeset of SOME t => sameTypeId (tcIdentifier t, tcIdentifier realConstr) | NONE => false ) | _ => false fun checkDiscard(t: types, lex: lexan): string option = let open DEBUG val checkLevel = getParameter reportDiscardedValuesTag (debugParams lex) fun isUnit(LabelledType{recList=[], ...}) = true (* Unit is actually an empty record *) | isUnit(TypeConstruction{ constr as TypeConstrs{identifier=TypeId{idKind=TypeFn _, ...}, ...}, args, ...}) = isUnit(makeEquivalent(constr, args)) | isUnit(TypeVar _) = true (* Allow unbound type vars *) | isUnit _ = false fun isAFunction(FunctionType _) = true | isAFunction(TypeConstruction{ constr as TypeConstrs{identifier=TypeId{idKind=TypeFn _, ...}, ...}, args, ...}) = isAFunction(makeEquivalent(constr, args)) | isAFunction _ = false in case checkLevel of 1 => if isAFunction (eventual t) then SOME "A function value is being discarded." else NONE | 2 => if isUnit (eventual t) then NONE else SOME "A non unit value is being discarded." | _ => NONE end structure Sharing = struct type types = types and values = values and typeId = typeId and structVals = structVals and typeConstrs= typeConstrs and typeConstrSet=typeConstrSet and typeParsetree = typeParsetree and locationProp = locationProp and pretty = pretty and lexan = lexan and ptProperties = ptProperties and typeVarForm = typeVarForm and codetree = codetree and matchResult = matchResult and generalMatch = generalMatch end end (* TYPETREE *); polyml-5.7.1/mlsource/MLCompiler/SymsetSig.sml0000644000175000017500000000626213204034553020305 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature SymsetSig = sig type symset; type sys val inside: sys * symset -> bool; val ++ :symset * symset -> symset; val abortParse: symset; val ident: symset; val abstypeSy: symset; val andSy: symset; val andalsoSy: symset; val asSy: symset; val caseSy: symset; val datatypeSy: symset; val doSy: symset; val elseSy: symset; val endSy: symset; val exceptionSy: symset; val fnSy: symset; val funSy: symset; val handleSy: symset; val ifSy: symset; val inSy: symset; val infixSy: symset; val infixrSy: symset; val letSy: symset; val localSy: symset; val nonfixSy: symset; val ofSy: symset; val opSy: symset; val openSy: symset; val orelseSy: symset; val raiseSy: symset; val recSy: symset; val thenSy: symset; val typeSy: symset; val valSy: symset; val withSy: symset; val whileSy: symset; val leftParen: symset; val rightParen: symset; val leftBrack: symset; val rightBrack: symset; val comma: symset; val colon: symset; val semicolon: symset; val thickArrow: symset; val verticalBar: symset; val equalsSign: symset; val underline: symset; val typeIdent: symset; val stringConst: symset; val integerConst: symset; val asterisk: symset; val arrow: symset; val realConst: symset; val wordConst: symset; val charConst: symset; val leftCurly: symset; val rightCurly: symset; val threeDots: symset; val colonGt: symset; val hashSign: symset; val structureSy: symset; val signatureSy: symset; val structSy: symset; val sigSy: symset; val sharingSy: symset; val functorSy: symset; val withtypeSy: symset; val eqtypeSy: symset; val includeSy: symset; val whereSy: symset; val othersy: symset; val empty: symset; val variableSys: symset; val constructorSys: symset; val startAtomicSys: symset; val startPatternSys: symset; val startMatchSys: symset; val startExpressionSys: symset; val startDecSys: symset; val declarableVarSys: symset; val startTypeSys: symset; val startSigSys: symset; val startTopSys: symset; end; polyml-5.7.1/mlsource/MLCompiler/SIGNATURESSIG.sml0000644000175000017500000000562413204034553020406 0ustar daviddavid(* Copyright David C. J. Matthews 2009 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature SIGNATURESSIG = sig type sigs type structSigBind type parsetree type typeParsetree type typeVarForm type pretty type ptProperties type env type signatures type lexan type typeId type specs type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type exportTree = location * ptProperties list type navigation = {parent: (unit -> exportTree) option, next: (unit -> exportTree) option, previous: (unit -> exportTree) option} val mkStructureSig: structSigBind list * location -> specs val mkStructureSigBinding: (string * location) * (sigs * bool * location) * location -> structSigBind val mkValSig: (string * location) * typeParsetree * location -> specs val mkExSig: (string * location) * typeParsetree option * location -> specs val mkCoreType: parsetree * location -> specs val mkSharing: bool * (string * location) list * location -> specs val mkWhereType: sigs * typeVarForm list * string * typeParsetree * location -> sigs val mkInclude: sigs list * location -> specs val mkSigIdent: string * location -> sigs; val mkSig: specs list * location -> sigs; val displaySigs: sigs * FixedInt.int -> pretty val sigExportTree: navigation * sigs -> exportTree val sigVal: sigs * int * (int->typeId) * env * lexan * location -> signatures val undefinedSignature: signatures val isUndefinedSignature: signatures -> bool structure Sharing: sig type sigs = sigs type structSigBind = structSigBind type signatures = signatures type parsetree = parsetree type typeParsetree = typeParsetree type typeVarForm = typeVarForm type pretty = pretty type ptProperties = ptProperties type env = env type lexan = lexan type typeId = typeId type specs = specs end end; polyml-5.7.1/mlsource/MLCompiler/PRETTYSIG.sml0000644000175000017500000000555413204034553017753 0ustar daviddavid(* Copyright (c) 2009. 2015 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Signature for the pretty printer. *) signature PRETTYSIG = sig type context type pretty val ContextLocation: { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } -> context and ContextProperty: string * string (* User property. *) -> context val PrettyBlock: FixedInt.int * bool * context list * pretty list -> pretty and PrettyBreak: FixedInt.int * FixedInt.int -> pretty and PrettyString: string -> pretty val isPrettyBlock: pretty -> bool val isPrettyBreak: pretty -> bool val isPrettyString: pretty -> bool val projPrettyBlock: pretty -> int * bool * context list * pretty list val projPrettyBreak: pretty -> int * int val projPrettyString: pretty -> string (* datatype context = ContextLocation of { file: string, startLine: int, startPosition: int, endLine: int, endPosition: int } | ContextProperty of string * string (* User property. *) datatype pretty = PrettyBlock of int * bool * context list * pretty list | PrettyBreak of int * int | PrettyString of string *) (* A simple "pretty printer" that just accumulates strings. *) val uglyPrint: pretty -> string (* A proper pretty printer. *) val prettyPrint: (string -> unit) * int -> pretty -> unit (* Tag for pretty printed out from PolyML.print. *) val printOutputTag : (pretty -> unit) Universal.tag (* Compiler output. Used for timing information and compiler debug output. *) and compilerOutputTag: (pretty->unit) Universal.tag val getPrintOutput : Universal.universal list -> pretty -> unit and getCompilerOutput : Universal.universal list -> pretty -> unit (* getSimplePrinter prints strings through compilerOutput. *) and getSimplePrinter: Universal.universal list * int list -> string -> unit val tagPrettyBlock: word and tagPrettyBreak: word and tagPrettyString: word val maxPrettyTag: word (* Types that can be shared. *) structure Sharing: sig type pretty = pretty and context = context end end; polyml-5.7.1/mlsource/MLCompiler/COMPILER_BODY.ML0000644000175000017500000002266413204034553020126 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008, 2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Body of ML Compiler. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor COMPILER_BODY ( structure SYMSET : sig type sys type symset val inside: sys * symset -> bool; val ++ : symset * symset -> symset val abortParse: symset val semicolon: symset end; structure LEX : LEXSIG structure CODETREE : CODETREESIG structure STRUCTVALS : STRUCTVALSIG; structure VALUEOPS : VALUEOPSSIG; structure EXPORTTREE: EXPORTTREESIG structure STRUCTURES : STRUCTURESSIG structure PARSEDEC : sig type lexan type symset type fixStatus type program val parseDec: symset * lexan * { enterFix: string * fixStatus -> unit, lookupFix: string -> fixStatus option } -> program end; structure DEBUG: DEBUGSIG structure UTILITIES : sig val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option} end; structure PRETTY : PRETTYSIG structure MISC : sig exception InternalError of string val lookupDefault : ('a -> 'b option) -> ('a -> 'b option) -> 'a -> 'b option val quickSort : ('a -> 'a -> bool) -> 'a list -> 'a list end; sharing STRUCTVALS.Sharing = VALUEOPS.Sharing = PRETTY.Sharing = STRUCTURES.Sharing = LEX.Sharing = EXPORTTREE.Sharing = SYMSET = PARSEDEC = CODETREE ) : COMPILERBODYSIG = (*****************************************************************************) (* COMPILERBODY functor body *) (*****************************************************************************) struct open MISC; open STRUCTVALS; open PRETTY; open LEX; open STRUCTURES open EXPORTTREE type nameSpace = { lookupVal: string -> values option, lookupType: string -> typeConstrSet option, lookupFix: string -> fixStatus option, lookupStruct: string -> structVals option, lookupSig: string -> signatures option, lookupFunct: string -> functors option, enterVal: string * values -> unit, enterType: string * typeConstrSet -> unit, enterFix: string * fixStatus -> unit, enterStruct: string * structVals -> unit, enterSig: string * signatures -> unit, enterFunct: string * functors -> unit, allVal: unit -> (string*values) list, allType: unit -> (string*typeConstrSet) list, allFix: unit -> (string*fixStatus) list, allStruct: unit -> (string*structVals) list, allSig: unit -> (string*signatures) list, allFunct: unit -> (string*functors) list } val stopSyms = let open SYMSET in op ++ (abortParse, semicolon) end fun baseCompiler (lex : lexan, nameSpace: nameSpace, debugSwitches) : exportTree option * (unit -> { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string * typeConstrSet) list }) option = let (* let1 *) val compilerOutput = getCompilerOutput debugSwitches val printParsetree = DEBUG.getParameter DEBUG.parsetreeTag debugSwitches val globals = { lookupFix = #lookupFix nameSpace, lookupVal = #lookupVal nameSpace, lookupType = #lookupType nameSpace, lookupSig = #lookupSig nameSpace, lookupStruct = #lookupStruct nameSpace, lookupFunct = #lookupFunct nameSpace, enterFix = #enterFix nameSpace, enterVal = #enterVal nameSpace, enterType = #enterType nameSpace, enterStruct = #enterStruct nameSpace, enterSig = #enterSig nameSpace, enterFunct = #enterFunct nameSpace, allValNames = fn () => map #1 (#allVal nameSpace ()) } val startLocn = location lex val () = if SYMSET.inside (sy lex, SYMSET.semicolon) then insymbol lex else () val parentTreeNav = case List.find (Universal.tagIs rootTreeTag) debugSwitches of SOME opt => Universal.tagProject rootTreeTag opt | NONE => { parent = NONE, next = NONE, previous = NONE } in (* An empty declaration (or end of file!) *) if SYMSET.inside (sy lex, stopSyms) then if errorOccurred lex (* We could have, for example, an unterminated comment. *) then (NONE, NONE) else (SOME(locSpan(startLocn, location lex), []), SOME (fn () => { fixes=[], values=[], structures=[], functors=[], types=[], signatures=[] }) ) (* Do nothing *) else let (* create a "throw away" compiling environment for this topdec *) val newFixEnv = UTILITIES.searchList () val enterFix = #enter newFixEnv val lookupFix = lookupDefault (#lookup newFixEnv) (#lookupFix globals) (* parse a program: a sequence of topdecs ending with a semicolon. *) val parseTree : STRUCTURES.program = PARSEDEC.parseDec (stopSyms, lex, {enterFix = enterFix, lookupFix = lookupFix}) val () = if printParsetree then compilerOutput (STRUCTURES.displayProgram (parseTree, 10000)) else () in if errorOccurred lex then (NONE, NONE) (* Error: No result and the parse tree won't be useful. *) else let (* If no errors then do second pass to match identifiers and declarations and return type of expression. *) val () = STRUCTURES.pass2Structs (parseTree, lex, Env globals) in if errorOccurred lex then (SOME(structsExportTree(parentTreeNav, parseTree)), NONE) else let (* Only code-generate if there were no errors and it's not a directive. *) val (structCode, nLocals) = STRUCTURES.gencodeStructs (parseTree, lex) in if errorOccurred lex then (* Errors can be produced during the code-generation phase. *) (SOME(structsExportTree(parentTreeNav, parseTree)), NONE) (* Error: No result. *) else let val resultCode = CODETREE.genCode(structCode, debugSwitches, nLocals) (* This is the function that is returned as the result of the compilation. *) fun executeCode() = STRUCTURES.pass4Structs (resultCode (), parseTree) in (SOME(structsExportTree (parentTreeNav, parseTree)), SOME executeCode) end end end end end fun compiler (nameSpace: nameSpace, getChar: unit->char option, parameters: Universal.universal list) : exportTree option * (unit -> { fixes: (string * fixStatus) list, values: (string * values) list, structures: (string * structVals) list, signatures: (string * signatures) list, functors: (string * functors) list, types: (string * typeConstrSet) list }) option = let val debugSwitches = parameters val lex = LEX.initial(getChar, debugSwitches) val compilerOutput = getCompilerOutput parameters fun printReport s = compilerOutput(PrettyString s) in baseCompiler(lex, nameSpace, debugSwitches) handle SML90.Interrupt => ( printReport "Compilation interrupted\n"; raise SML90.Interrupt ) | InternalError s => let val s' = "Exception- InternalError: " ^ String.toString s ^ " raised while compiling" in printReport (s' ^ "\n"); raise Fail s' end | exn => let val s' = "Exception- " ^ General.exnName exn ^ " unexpectedly raised while compiling" in printReport (s' ^ "\n"); raise Fail s' end end structure Sharing = struct type values = values and typeConstrSet = typeConstrSet and fixStatus = fixStatus and structVals = structVals and signatures = signatures and functors = functors and ptProperties = ptProperties end end; (* struct *) polyml-5.7.1/mlsource/MLCompiler/VALUEOPSSIG.sml0000644000175000017500000001240313204034553020151 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2009-2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature VALUEOPSSIG = sig type lexan type codetree type types type values type structVals type functors type valAccess type typeConstrs type typeConstrSet type signatures type fixStatus type univTable type pretty type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } type locationProp type typeId type typeVarForm type typeVarMap type level type machineWord (* Construction functions. *) val mkGvar: string * types * codetree * locationProp list -> values val mkValVar: string * types * locationProp list -> values val mkPattVar: string * types * locationProp list -> values val mkSelectedVar: values * structVals * locationProp list -> values val mkGconstr: string * types * codetree * bool * int * locationProp list -> values val mkGex: string * types * codetree * locationProp list -> values val mkEx: string * types * locationProp list -> values type printTypeEnv = { lookupType: string -> (typeConstrSet * (int->typeId) option) option, lookupStruct: string -> (structVals * (int->typeId) option) option} (* Print values. *) val displayFixStatus: fixStatus -> pretty val displaySignatures: signatures * FixedInt.int * printTypeEnv -> pretty val displayStructures: structVals * FixedInt.int * printTypeEnv -> pretty val displayFunctors: functors * FixedInt.int * printTypeEnv -> pretty val displayValues: values * FixedInt.int * printTypeEnv -> pretty val printValues: values * FixedInt.int -> pretty val codeStruct: structVals * level -> codetree val codeAccess: valAccess * level -> codetree val codeVal: values * level * typeVarMap * {value: types, equality: bool, printity: bool} list * lexan * location -> codetree val codeExFunction: values * level * typeVarMap * types list * lexan * location -> codetree val applyFunction: values * codetree * level * typeVarMap * {value: types, equality: bool, printity: bool} list * lexan * location -> codetree val getOverloadInstance: string * types * bool -> codetree*string val makeGuard: values * types list * codetree * level * typeVarMap -> codetree val makeInverse: values * types list * codetree * level * typeVarMap -> codetree val lookupStructure: string * {lookupStruct: string -> structVals option} * string * (string -> unit) -> structVals option val lookupStructureAsSignature: (string -> structVals option) * string * (string -> unit) -> structVals option val lookupValue: string * {lookupVal: string -> values option, lookupStruct: string -> structVals option} * string * (string -> unit) -> values val lookupTyp: {lookupType: string -> typeConstrSet option, lookupStruct: string -> structVals option} * string * (string -> unit) -> typeConstrSet val makeSelectedValue: values * structVals -> values and makeSelectedStructure: structVals * structVals -> structVals and makeSelectedType: typeConstrSet * structVals -> typeConstrSet val codeLocation: location -> codetree val getPolymorphism: values * types * typeVarMap -> {value: types, equality: bool, printity: bool} list val getLiteralValue: values * string * types * (string->unit) -> machineWord option (* Types that can be shared. *) structure Sharing: sig type lexan = lexan type codetree = codetree type types = types type values = values type structVals = structVals type functors = functors type valAccess = valAccess type typeConstrs = typeConstrs type typeConstrSet = typeConstrSet type signatures = signatures type fixStatus = fixStatus type univTable = univTable type pretty = pretty type locationProp = locationProp type typeId = typeId type typeVarForm = typeVarForm type typeVarMap = typeVarMap type level = level type machineWord = machineWord end end; polyml-5.7.1/mlsource/MLCompiler/StretchArray.ML0000644000175000017500000001132613204034553020503 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: StretchArray.ML Author: Simon Finn, Abstract Hardware Ltd. *) (* Version of array which expands as new elements are assigned. Used for tables which have no obvious upper limit. This is used in CODETREE and the resulting tables are captured in the environments of the resulting values. Previously this resulted in a lot of mutable data being kept around and in particularly ending up in exported module. The garbage collector has to scan mutables on every collection so mutable data can have a disproportionate effect on performance. We now freeze the tables once they have been created. This costs extra time during compilation but that should be more than made up for by faster garbage collection. *) structure StretchArray : sig type 'a stretchArray; exception Subscript; exception Size; val stretchArray : int * 'a -> 'a stretchArray; val update : 'a stretchArray * int * 'a -> unit; val length : 'a stretchArray -> int; val sub : 'a stretchArray * int -> 'a; val freeze : 'a stretchArray -> unit val vector: 'a stretchArray -> 'a vector end = struct val expansionFactor = 3; (* Factor by which to increase size. *) exception Subscript = (*Array.*)Subscript and Size = (*Array.*)Size; (* use Array to hold the contents - less efficient than making this a primitive, but does it matter? *) datatype 'a vecOrArray = AnArray of 'a array | AVector of 'a vector type 'a stretchArray = { initialVal : 'a, contents : 'a vecOrArray ref } fun stretchArray (originalSize: int, initialVal: 'a) :'a stretchArray = { initialVal = initialVal, contents = ref (AnArray(Array.array(originalSize, initialVal))) }; fun length { contents = ref (AnArray a), ...} = Array.length a | length { contents = ref (AVector v), ...} = Vector.length v (* Returns the value if there is one, otherwise returns the default. *) infix 9 sub; fun ({contents = ref (AnArray a), initialVal, ...} :'a stretchArray) sub index : 'a = if index < Array.length a then Array.sub (a, index) (* may raise Subscript *) else initialVal | ({contents = ref (AVector v), initialVal, ...} :'a stretchArray) sub index : 'a = if index < Vector.length v then Vector.sub (v, index) (* may raise Subscript *) else initialVal (* Sets the appropriate entry. *) fun update ({contents = ref (AVector _), ...}, _, _) = raise Fail "Attempt to update a locked stretchArray" | update ({contents = contents as ref (AnArray a), initialVal, ... }: 'a stretchArray, index: int, value: 'a) : unit = if index < Array.length a then Array.update (a, index, value) (* May raise Subscript if the index is -ve *) else let (* The new vector must be big enough to hold the new item and expanded by the expansion factor. *) val oldSize = Array.length a; val newSize = Int.max (oldSize * expansionFactor, index + 1); val newVec = Array.array(newSize, initialVal); in Array.copy{src=a, dst=newVec, di=0}; contents := AnArray newVec; Array.update (newVec, index, value) end (* Create an immutable vector from the current contents of the array. *) fun vector ({contents = ref (AnArray a), ...}: 'a stretchArray): 'a vector = Array.vector a | vector {contents = ref (AVector v), ...} = v (* Turn an array into a vector and turn the ref into an immutable. *) fun freeze {contents = ref (AVector _), ...} = () | freeze {contents = contents as ref (AnArray a), ...} = ( contents := AVector(Array.vector a); Address.lock(Address.toAddress(Address.toMachineWord contents)) ) end; polyml-5.7.1/mlsource/MLCompiler/STRUCT_VALS.ML0000644000175000017500000006511313204034553017744 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C. J. Matthews 2009, 2012, 2015. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Global and Local values. Author: Dave Matthews,Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) (* This type contains the basic structures of global and local declarations. Putting the global declarations in a separate type allows us to install a new compiler (particularly to fix bugs) and still be compatible with declarations made with the old compiler. It is also convenient to put local values in here as well. *) functor STRUCT_VALS ( structure CODETREE : CODETREESIG where type machineWord = Address.machineWord (*****************************************************************************) (* UNIVERSALTABLE *) (*****************************************************************************) structure UNIVERSALTABLE : sig type 'a tag = 'a Universal.tag; type univTable type universal = Universal.universal val makeUnivTable: unit -> univTable; val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; (* Freeze a mutable table so it is immutable. *) val univFreeze: univTable -> univTable val fold: (string * universal * 'a -> 'a) -> 'a -> univTable -> 'a end; structure PRETTY: PRETTYSIG (* Temporary addition. *) ) :> STRUCTVALSIG where type codetree = CODETREE.codetree and type univTable = UNIVERSALTABLE.univTable and type level = CODETREE.level = (*****************************************************************************) (* STRUCTVALS functor body *) (*****************************************************************************) struct open CODETREE; open Misc; open Universal; open UNIVERSALTABLE; (* Location for declarations. *) type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } (* The idea of this is reduce the number of mutable objects. *) datatype 'a possRef = FrozenRef of 'a | VariableRef of 'a ref fun pling(FrozenRef x) = x | pling(VariableRef(ref x)) = x fun updatePR(VariableRef r, x) = r := x | updatePR(FrozenRef _, _) = raise Fail "Assignment to frozen ref" (* References to identifiers. exportedRef is set to true if the identifier is exported to the global environment or to a structure. localRef contains the list of local uses. recursiveRef contains a list of (mutually) recursive references together with the name of the function that refers to this. It is used when computing whether a recursive function is actually refered to from elsewhere. This is an option type because this is used only within local identifiers. *) type references = { exportedRef: bool ref, localRef: location list ref, recursiveRef: (location * string) list ref } option fun makeRef(): references = SOME { exportedRef = ref false, localRef = ref nil, recursiveRef=ref nil } (* typeIds are used to distinguish between concrete types. Two types that share will have the same identifier. If the identifiers are different they are different types. There are three classes of type identifier. Free identifiers are used for types in the global environment. Bound identifiers occur in signatures, functors and while compiling structures. Type functions arise from type bindings (type abbreviations) or from "where type" definitions in signatures. The type identifier also contains the equality attribute. In ML97 only types have these identifiers. In ML90 these were also needed for structures. Free and Bound IDs contain information to find the equality and value-printing functions. *) type typeIdDescription = { location: location, name: string, description: string } datatype typeId = TypeId of { access: valAccess, description: typeIdDescription, idKind: typeIdKind } and typeIdKind = Free of { uid: uniqueId, allowUpdate: bool, arity: int } | Bound of { offset: int, eqType: bool possRef, isDatatype: bool, arity: int } | TypeFn of typeVarForm list * types (* A type is the union of these different cases. *) and types = TypeVar of typeVarForm | TypeConstruction of { name: string, constr: typeConstrs, args: types list, locations: locationProp list } | FunctionType of { arg: types, result: types } | LabelledType of labelledRec | OverloadSet of { typeset: typeConstrs list } | BadType | EmptyType and typeConstrs = TypeConstrs of { name: string, typeVars: typeVarForm list, identifier: typeId, locations: locationProp list (* Location of declaration *) } and typeConstrSet = (* A type constructor with its, possible, value constructors. *) TypeConstrSet of typeConstrs * values list and labelFieldList = FieldList of string list * bool (* True if this is frozen *) | FlexibleList of labelFieldList ref (* Access to a value, structure or functor. *) and valAccess = Global of codetree | Local of { addr: int ref, level: level ref } | Selected of { addr: int, base: valAccess } | Formal of int | Overloaded of typeDependent (* Values only. *) (* Structures. *) and structVals = Struct of { name: string, signat: signatures, access: valAccess, locations: locationProp list } (* Signatures. The representation of a signature deserves a bit of explanation. A signature is an environment: a set of values, type constructors and sub-structures. Behind the types associated with the type constructors and values are what the semantics calls "type names" but are referred to in the Poly/ML code as type-ids to avoid confusion with the text name of a type constructor. The same signature may be bound to a signature identifier, used as an argument to a functor, the result of a functor or the signature of a structure. The environment is the same in each case; what is different is the type names. To avoid rebuilding the environment for each case the same environment is used but with different sets of typeIdMap, firstBoundIndex and boundIds. typeIdMap maps the "offset" of any bound id found in the environment to a type-id. For structures the result will always be a free id and boundIds will be empty. In other cases it may map to either a free id, perhaps as the result of "where type" constraint, or to a bound id. Sharing constraints will cause different bound ids in the environment to map to the same resulting bound id. Normally, firstBoundIndex will be zero and boundIds will be the set of bound ids that can be produced by typeIdMap. The exception is the result signature of a functor. In that case typeIdMap may return bound Ids in the set of the boundIds for the argument to the functor, which will have offsets >= 0 and < firstBoundIndex or in the set for the result of the functor with offsets >= firstBoundIndex and < firstBoundIndex+length boundIds. When the functor is applied the typeIdMap for the structure that is produced maps the first set to the free ids of the actual argument and the maps the second set to new, unique free ids. *) and signatures = Signatures of { name: string, tab: univTable, typeIdMap: int -> typeId, firstBoundIndex: int, boundIds: typeId list, locations: locationProp list } and functors = Functor of { name: string, arg: structVals, result: signatures, access: valAccess, locations: locationProp list } (* Values. *) (* The overloaded functions divide up into basically two groups: Those =, <>, print and makestring which are infinitely overloaded and those *, + etc which are overloaded on a limited range of types. *) and typeDependent = Print | GetPretty | MakeString | AddPretty | Equal | NotEqual | AddOverload | TypeDep | GetLocation and values = Value of { name: string, typeOf: types, access: valAccess, class: valueClass, locations: locationProp list, (* Location of declaration *) references: references, instanceTypes: types list ref option (* Instance types for local variables. *) } (* Classes of values. *) and valueClass = ValBound | PattBound | Exception | Constructor of { nullary: bool, (* True if this is a single value (e.g. "nil") rather than a function. *) ofConstrs: int (* Total number of constructors in the datatype. *) } and locationProp = DeclaredAt of location | OpenedAt of location | StructureAt of location | SequenceNo of FixedInt.int withtype uniqueId = bool ref (* We use a ref here both because we can then set equality if we need but also because it allows us to create a unique Id. *) and typeVarForm = { value: types ref, encoding: Word.word } and labelledRec = { (* Fields actually present in this record. If this was flexible at some stage there may be extra fields listed in the full field list. *) recList: { name: string, typeof: types } list, (* The names of all the fields including extra fields. *) fullList: labelFieldList } (* A set of type contructors. This is used only during the compilation process and represents the set of possible types which may occur. It functions in much the same way as a type variable. Because we only allow overloading on monomorphic type constructors such as "int" and "word" we can restrict the set to containing only type constructors rather than general types. This overload set was added for ML 97 because ML 97, unlike ML 90, defaults overloaded operators and constants if unification does not result in a single type being found. The overload set is used in a similar way to a flexible record and will always be pointed at by a type variable so that the set can be replaced by a single type construction if the unification reduces to a single type. *) and overloadSetForm = { typeset: typeConstrs list } (* Identifiers *) fun makeFreeId(arity, access, eq, desc) = TypeId { access=access, description = desc, idKind = Free {uid = ref eq, allowUpdate=false, arity=arity}} (* At the moment the only reason for distinguishing makeFreeId and makeFreeIdEqUpdate is that it allows us to check that we're actually permitting update when needed. *) fun makeFreeIdEqUpdate(arity, access, eq, desc) = TypeId { access=access, description = desc, idKind = Free {uid = ref eq, allowUpdate=true, arity=arity}} fun makeBoundId (arity, access, n, eq, isdt, desc) = TypeId { access=access, description = desc, idKind = Bound{offset=n, eqType=FrozenRef eq, isDatatype = isdt, arity=arity}} (* Within the body of a functor we make bound stamps but may need to set the equality attribute. *) fun makeBoundIdWithEqUpdate (arity, access, n, eq, isdt, desc) = TypeId { access=access, description = desc, idKind = Bound{offset=n, eqType=VariableRef(ref eq), isDatatype = isdt, arity=arity}} (* Type functions currently always have Free ids. *) fun makeTypeFunction(desc, typeFn) = TypeId { access=Global CodeZero, description = desc, idKind = TypeFn typeFn}; (* Find the number - assuming it is bound. *) fun offsetId (TypeId{idKind=Bound {offset, ...}, ...}) = offset | offsetId _ = raise InternalError "offsetId: not a Bound"; (* Are two type constructors the same? *) fun sameTypeId (TypeId{idKind=Free{uid = a, ...}, ...}, TypeId{idKind=Free {uid = b, ...}, ...}) = a = b | sameTypeId (TypeId{idKind=Bound{offset=a, ...}, ...}, TypeId{idKind=Bound{offset=b, ...}, ...}) = a = b | sameTypeId _ = false (* Includes type functions. *) fun idAccess (TypeId { access, ...}) = access fun isEquality (TypeId { idKind = Free{uid = ref eq, ...}, ...}) = eq | isEquality (TypeId { idKind = Bound{eqType, ...}, ...}) = pling eqType | isEquality (TypeId { idKind = TypeFn _, ...}) = raise InternalError "isEquality: TypeFn" (* Set the equality property. Currently, free IDs are used for abstypes and datatypes that are local to a function as well as the usual case of using them for top-level types. *) fun setEquality(TypeId{idKind = Free{uid, allowUpdate=true, ...}, ...}, eq) = uid := eq | setEquality(TypeId{idKind = Bound{eqType=VariableRef id, ...}, ...}, eq) = id := eq | setEquality _ = raise InternalError "setEquality: can't set equality attribute" (* Signatures: Used for both signatures of local structures and for global structures (name spaces). Strictly signatures do not contain fix-status functors or signatures but as we use these structures for top-level name-spaces we have to have tables for these. *) val makeSignatureTable = makeUnivTable (* Make a signature, freezing the table. *) fun makeSignature (name, table, fbi, locations, typeIdMap, boundIds) = Signatures { name = name, tab = univFreeze table, typeIdMap = typeIdMap, firstBoundIndex = fbi, boundIds = boundIds, locations = locations } (* Types. *) (* Level at which type is generalisable. *) val generalisable = 9999; (* Destructors, constructors and predicates for types *) val emptyType = EmptyType; val badType = BadType; fun isEmpty EmptyType = true | isEmpty _ = false; fun isBad BadType = true | isBad _ = false; fun makeValueConstr (name, typeOf, nullary, constrs, access, locations) : values = Value { name = name, typeOf = typeOf, access = access, class = Constructor { nullary = nullary, ofConstrs = constrs }, locations = locations, references = NONE, instanceTypes = NONE }; (* A type variable is implemented as a true variable i.e. it can be assigned a particular type when it is unified. Initially it is set to EmptyType which represents an unset type variable. When it is unified with a type it is set to point to the type it has been unified with. Type variables associated with variables have level set to the nesting level, others have level set to "generalisable". If two type variables are united their levels are set to the lower of the two. If level is not "generalisable" the type variable is not generalisable. This is needed to deal with cases like fn a => let val x = a in x end and fn a => let val x = hd a in x end The level is set to "generalisable" at the end of the block with that level. Actually ``level'' is not actually changed - instead the type variable is assigned to a new variable with the correct level, since only the last variable in a sequence is looked at. ``equality'' is true if this is an equality variable e.g. ''a. ``nonunifiable'' is true for type variables introduced explicitly or type variables in signatures. Such type variables can have their level changed but cannot be unified with other types, with other nonunifiable type variables or with equality variables (unless it is already an equality variable). ``weak'' is true if this is an imperative type variable e.g. '_a *) fun sameTv (a : typeVarForm, b : typeVarForm) : bool = #value a = #value b; (* If the same ref it must be the same *) local open Word infix 8 >> << infix 7 andb infix 6 orb in fun makeTv {value : types, level, equality, nonunifiable, printable} : typeVarForm = { value = ref value, (* REF HOTSPOT - 400 *) encoding = (fromInt level << 0w3) orb (if equality then 0w4 else 0w0) orb (if nonunifiable then 0w2 else 0w0) orb (if printable then 0w1 else 0w0)} fun tvSetValue ({ value, ...} : typeVarForm, t : types) = value := t fun tvValue ({value = ref v, ...} : typeVarForm) : types = v fun tvLevel ({encoding, ...} : typeVarForm) : int = Word.toInt(encoding >> 0w3) fun tvEquality ({encoding, ...} : typeVarForm) = encoding andb 0w4 <> 0w0 fun tvNonUnifiable ({encoding, ...} : typeVarForm) = encoding andb 0w2 <> 0w0 fun tvPrintity ({encoding, ...} : typeVarForm) = encoding andb 0w1 <> 0w0 end local fun follow (FlexibleList(ref r)) = follow r | follow (FieldList c) = c in fun recordIsFrozen { fullList, ...} = #2 (follow fullList) and recordFields {fullList, ...} = #1 (follow fullList) end (* Type constructors are identifiers which take zero or more types and yield a type as result. Their main property is that two type constructors can be unified iff they are the same constructor. Another use for constructors is for aliasing types. In this case "typeVars" points to a list of type variables which are used in the "equivalent" type. ``equality'' is a flag indicating if the values can be tested for equality. *) fun tcName (TypeConstrs {name,...}) = name fun tcTypeVars (TypeConstrs {typeVars,...}) = typeVars fun tcIdentifier (TypeConstrs {identifier,...}) = identifier fun tcLocations (TypeConstrs {locations, ...}) = locations (* Is this a type function? N.B. It is possible, though unlikely, that it is a datatype as well i.e. has value constructors. *) fun tcIsAbbreviation (TypeConstrs {identifier = TypeId{idKind = TypeFn _, ...},...}) = true | tcIsAbbreviation _ = false fun tcArity(TypeConstrs {identifier=TypeId{idKind=TypeFn(args, _),...}, ...}) = length args | tcArity(TypeConstrs {identifier=TypeId{idKind=Bound{arity, ...},...}, ...}) = arity | tcArity(TypeConstrs {identifier=TypeId{idKind=Free{arity, ...},...}, ...}) = arity (* Equality and "equivalence" are now properties of the type id. Retain these functions for the moment. *) val tcEquality = isEquality o tcIdentifier; fun tcSetEquality(tc, eq) = setEquality(tcIdentifier tc, eq) (* Construct a type constructor. We need typeVars here purely to be able to print datatypes with equality type variables e.g. datatype ''a t. *) fun makeTypeConstructor (name, typeVars, uid, locations) = TypeConstrs { name = name, typeVars = typeVars, identifier = uid, locations = locations } fun tsConstr(TypeConstrSet(ts, _)) = ts and tsConstructors(TypeConstrSet(_, tvs)) = tvs val inBasis = { file = "Standard Basis", startLine = 0, startPosition = 0, endLine = 0, endPosition = 0} fun basisDescription name = { location = inBasis, description = "In Basis", name = name } (* Infix status. *) datatype infixity = Infix of int | InfixR of int | Nonfix datatype fixStatus = FixStatus of string * infixity fun vaGlobal (Global x) = x | vaGlobal _ = raise Match fun vaLocal (Local x) = x | vaLocal _ = raise Match val makeGlobal = Global; val makeFormal = Formal; fun makeLocal () = Local { addr = ref ~1 (* Invalid addr - catch errors *), level = ref baseLevel } fun makeSelected (addr, Struct{access, ...}) = Selected { addr = addr, base = access } fun makeStruct (name, signat, access, locations) = Struct { name = name, signat = signat, access = access, locations = locations } (* Global structure *) fun makeGlobalStruct (name, signat, code, locations) = makeStruct (name, signat, makeGlobal code, locations) (* These are used in INITIALISE so must be mutable. *) fun makeEmptyGlobal name = makeStruct (name, Signatures { name = "", tab = makeUnivTable(), typeIdMap = fn _ => raise Subscript, firstBoundIndex = 0, boundIds = [], locations = [DeclaredAt inBasis] }, makeGlobal CodeZero, [DeclaredAt inBasis]) (* Local structure. *) fun makeLocalStruct (name, signat, location) = makeStruct (name, signat, makeLocal (), location); (* Structure in a local structure or a functor argument. *) fun makeSelectedStruct (selected as Struct{access, name, signat, locations, ...}, base, openLocs) = case access of Formal sel => makeStruct(name, signat, makeSelected (sel, base), openLocs @ locations) | Global code => (* Need to add the locations. *) makeStruct(name, signat, Global code, openLocs @ locations) | _ => selected fun makeFormalStruct (name, signat, addr, location) = makeStruct (name, signat, makeFormal addr, location); (* Values. *) fun makeOverloaded (name, typeOf, operation) : values = Value{ name = name, typeOf = typeOf, access = Overloaded operation, class = ValBound, locations = [DeclaredAt inBasis], references = NONE, instanceTypes = NONE}; val undefinedValue = Value{ name = "", typeOf = BadType, access = Global CodeZero, class = ValBound, locations = [DeclaredAt inBasis], references = NONE, instanceTypes = NONE }; fun isUndefinedValue(Value{name = "", ...}) = true | isUndefinedValue _ = false fun valName (Value{name, ...}) = name fun valTypeOf (Value{typeOf, ...}) = typeOf fun isConstructor (Value{class=Constructor _, ...}) = true | isConstructor (Value{class=Exception, ...}) = true | isConstructor _ = false; fun isValueConstructor (Value{class=Constructor _, ...}) = true | isValueConstructor _ = false; (* Functor value. *) fun makeFunctor (name, arg, result, access, locations) = Functor { name = name, arg = arg, result = result, access = access, locations = locations } val valueVar: values tag = tag(); val typeConstrVar: typeConstrSet tag = tag(); val fixVar: fixStatus tag = tag(); val structVar: structVals tag = tag(); val signatureVar: signatures tag = tag(); val functorVar: functors tag = tag(); fun makeLook (t:'a tag) table n = univLookup (table, t, n) and makeEnter (t:'a tag) table (n, v) = univEnter (table, t, n, v) and makeAllNames (t:'a tag) table () = UNIVERSALTABLE.fold (fn (s, u, l) => if Universal.tagIs t u then s :: l else l) [] table datatype env = Env of { lookupVal: string -> values option, lookupType: string -> typeConstrSet option, lookupFix: string -> fixStatus option, lookupStruct: string -> structVals option, lookupSig: string -> signatures option, lookupFunct: string -> functors option, enterVal: string * values -> unit, enterType: string * typeConstrSet -> unit, enterFix: string * fixStatus -> unit, enterStruct: string * structVals -> unit, enterSig: string * signatures -> unit, enterFunct: string * functors -> unit, allValNames: unit -> string list } (* This creates functions for entering and looking up names. *) fun makeEnv tab = Env { lookupVal = makeLook valueVar tab, lookupType = makeLook typeConstrVar tab, lookupFix = makeLook fixVar tab, lookupStruct = makeLook structVar tab, lookupSig = makeLook signatureVar tab, lookupFunct = makeLook functorVar tab, enterVal = makeEnter valueVar tab, enterType = makeEnter typeConstrVar tab, enterFix = makeEnter fixVar tab, enterStruct = makeEnter structVar tab, enterSig = makeEnter signatureVar tab, enterFunct = makeEnter functorVar tab, allValNames = makeAllNames valueVar tab } structure Sharing = struct type codetree = codetree and signatures = signatures and types = types and values = values and typeId = typeId and structVals = structVals and valAccess = valAccess and typeConstrs= typeConstrs and typeConstrSet=typeConstrSet and env = env and univTable = univTable and fixStatus = fixStatus and infixity = infixity and functors = functors and locationProp = locationProp and typeVarForm = typeVarForm and level = level end end (* STRUCTVALS *); polyml-5.7.1/mlsource/MLCompiler/TYPEIDCODESIG.sml0000644000175000017500000000603113204034553020344 0ustar daviddavid(* Copyright (c) 2009, 2015-16 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature TYPEIDCODESIG = sig type typeId type codetree type codeBinding type types type typeConstrs type typeConstrSet type typeVarForm type typeVarMap type level val codeId: typeId * level -> codetree val codeGenerativeId: { source: typeId, isEq: bool, isDatatype: bool, mkAddr: int->int, level: level} -> codetree val createDatatypeFunctions: {typeConstr: typeConstrSet, eqStatus: bool, boxedCode: codetree, sizeCode: codetree } list * (int->int) * level * typeVarMap * bool -> codeBinding list val codeForUniqueId: unit->codetree (* Generate a function of the form t*int->pretty for values of type t. *) val printerForType: types * level * typeVarMap -> codetree (* Generate a function of the form (t,t) -> bool. *) val equalityForType: types * level * typeVarMap -> codetree val applyToInstance: { value: types, equality: bool, printity: bool} list * level * typeVarMap * (level -> codetree) -> codetree structure TypeVarMap: sig (* Cache of type values and map of type variables. *) type typeVarMap = typeVarMap val defaultTypeVarMap: (int->int) * level -> typeVarMap (* The end of the chain. *) (* Add a set of type variables to the map. *) val extendTypeVarMap: (typeVarForm * (level->codetree)) list * (int->int) * level * typeVarMap -> typeVarMap (* Look up a type variable and return the type it's mapped to. *) val mapTypeVars: typeVarMap -> typeVarForm -> types option (* Mark in the cache chain that some type constructors are new. *) val markTypeConstructors: typeConstrs list * (int->int) * level * typeVarMap -> typeVarMap (* Get the set of cached type values that have been created after this entry. *) val getCachedTypeValues: typeVarMap -> codeBinding list end val defaultTypeCode: codetree val justForEqualityTypes: bool structure Sharing: sig type typeId = typeId type codetree = codetree type types = types type typeConstrs= typeConstrs type typeConstrSet=typeConstrSet type typeVarForm=typeVarForm type typeVarMap = typeVarMap type codeBinding = codeBinding type level = level end end; polyml-5.7.1/mlsource/MLCompiler/StronglyConnected.sml0000644000175000017500000001141613204034553022017 0ustar daviddavid(* Copyright (c) 2016-17 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure StronglyConnected: sig val stronglyConnectedComponents: {nodeAddress: 'a -> int, arcs: 'a -> int list } -> 'a list -> 'a list list end = struct fun stronglyConnectedComponents _ [] = [] | stronglyConnectedComponents {nodeAddress, arcs} (rlist as firstNode :: _) = (* In general any mutually recursive declaration can refer to any other. It's better to partition the recursive declarations into strongly connected components i.e. those that actually refer to each other. *) let local val anAddr = nodeAddress firstNode in val (startAddress, lastAddress) = List.foldl (fn(item, (mn, mx)) => let val addr = nodeAddress item in (Int.min(addr, mn), Int.max(addr+1, mx)) end) (anAddr, anAddr) rlist end (* *) val mapArray = Array.array(lastAddress - startAddress, NONE) fun updateMin(addr, try) = let val off = addr - startAddress val { lowLink, index } = valOf(Array.sub(mapArray, off)) in Array.update(mapArray, off, SOME{ index = index, lowLink = Int.min(lowLink, try) }) end fun addrInList a = List.exists(fn item => a = nodeAddress item) fun strongcomponent(item, (thisIndex, stack, resList)) = let val addr = nodeAddress item val allArcs = arcs item val newStack = item :: stack val v = addr - startAddress (* Mark this item as processed. *) val () = Array.update(mapArray, v, SOME{index = thisIndex, lowLink = thisIndex}) (* Process links that refer to other items *) fun processLink(a: int, args as (_, stack, _)) = if addrInList a rlist then (* It refers to another within this declaration *) let val w = a - startAddress in case Array.sub(mapArray, w) of NONE => (* Not yet processed. *) let val result = strongcomponent(valOf(List.find(fn item => nodeAddress item = a) rlist), args); in updateMin(addr, #lowLink(valOf(Array.sub(mapArray, w)))); result end | SOME _ => ( (* Already processed - was it in this pass or a previous? *) if addrInList a stack (* On the stack so in the current SCC *) then updateMin(addr, #index(valOf(Array.sub(mapArray, w)))) else (); (* Processed in previous pass *) args ) end else args val (nextIndex, stack', subRes) = List.foldl processLink (thisIndex+1, newStack, resList) allArcs in (* Process references from this function. *) if #lowLink(valOf(Array.sub(mapArray, v))) = thisIndex (* This is the minimum *) then (* Create an SCC *) let fun popItems([], _) = raise Fail "stack empty" | popItems(item :: r, l) = if nodeAddress item = addr then (r, item :: l) else popItems(r, item :: l) val (newStack, scc) = popItems(stack', []) in (nextIndex, newStack, scc :: subRes) end else (nextIndex, stack', subRes) end (* Process items that have not yet been reached *) fun processUnprocessed (item, args) = case Array.sub(mapArray, nodeAddress item-startAddress) of NONE => strongcomponent(item, args) | _ => args val (_, _, result) = List.foldl processUnprocessed (0, [], []) rlist in result end end; polyml-5.7.1/mlsource/MLCompiler/SymbolsSig.sml0000644000175000017500000000403513204034553020445 0ustar daviddavid(* Copyright (c) 2013 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature SymbolsSig = sig datatype sys = AbortParse | Ident | AbstypeSy | AndSy | AndalsoSy | AsSy | CaseSy | DatatypeSy | DoSy | ElseSy | EndSy | ExceptionSy | FnSy | FunSy | HandleSy | IfSy | InSy | InfixSy | InfixrSy | LetSy | LocalSy | NonfixSy | OfSy | OpSy | OpenSy | OrelseSy | RaiseSy | RecSy | ThenSy | TypeSy | ValSy | WithSy | WhileSy | LeftParen | RightParen | LeftBrack | RightBrack | Comma | Colon | Semicolon | ThickArrow | VerticalBar | EqualsSign | Underline | TypeIdent | StringConst | IntegerConst | Asterisk | Arrow | RealConst | LeftCurly | RightCurly | ThreeDots | ColonGt | HashSign | StructureSy | SignatureSy | StructSy | SigSy | SharingSy | FunctorSy | WithtypeSy | EqtypeSy | IncludeSy | WhereSy | WordConst | CharConst | Othersy val repr: sys -> string val lookup: string -> sys end; polyml-5.7.1/mlsource/MLCompiler/TypeIDCodeStruct.sml0000644000175000017500000000212413204034553021505 0ustar daviddavid(* Copyright (c) 2009 David C. J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure TypeIDCodeStruct = TYPEIDCODE( structure CODETREE = CodeTree and STRUCTVALS = StructVals and LEX = Lex and DEBUG = Debug and PRETTY = Pretty and ADDRESS = Address and TYPETREE = TypeTree ); polyml-5.7.1/mlsource/MLCompiler/STRUCTURES_.ML0000644000175000017500000047502613204034553017765 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified D.C.J. Matthews 2001-2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Module Structure and Operations. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1985 *) functor STRUCTURES_ ( structure LEX : LEXSIG structure CODETREE : CODETREESIG structure STRUCTVALS : STRUCTVALSIG; structure VALUEOPS : VALUEOPSSIG; structure EXPORTTREE: EXPORTTREESIG structure TYPETREE : TYPETREESIG structure PARSETREE : PARSETREESIG structure PRETTY : PRETTYSIG structure COPIER: COPIERSIG structure TYPEIDCODE: TYPEIDCODESIG structure SIGNATURES: SIGNATURESSIG structure DEBUGGER : DEBUGGERSIG structure UTILITIES : sig val noDuplicates: (string * 'a * 'a -> unit) -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; val searchList: unit -> { apply: (string * 'a -> unit) -> unit, enter: string * 'a -> unit, lookup: string -> 'a option }; val splitString: string -> { first:string,second:string } end; structure UNIVERSALTABLE: sig type universal = Universal.universal type univTable type 'a tag = 'a Universal.tag val univEnter: univTable * 'a tag * string * 'a -> unit; val univLookup: univTable * 'a tag * string -> 'a option; val univFold: univTable * (string * universal * 'a -> 'a) * 'a -> 'a; end; structure DEBUG: DEBUGSIG sharing LEX.Sharing = VALUEOPS.Sharing = TYPETREE.Sharing = PARSETREE.Sharing = PRETTY.Sharing = EXPORTTREE.Sharing = STRUCTVALS.Sharing = COPIER.Sharing = CODETREE = UNIVERSALTABLE = TYPEIDCODE.Sharing = SIGNATURES.Sharing = DEBUGGER.Sharing ) : STRUCTURESSIG = (*****************************************************************************) (* STRUCTURES functor body *) (*****************************************************************************) struct open Misc; open PRETTY; open COPIER; open LEX; open CODETREE; open STRUCTVALS; open VALUEOPS; open TYPETREE; open PARSETREE; open UTILITIES; open DEBUG; open UNIVERSALTABLE; open Universal; (* for tag record selectors *) open EXPORTTREE; open TYPEIDCODE open SIGNATURES open DEBUGGER (* Transitional bindings. Calls to these should be replaced by pattern matching. *) fun sigTab (Signatures {tab,...}) = tab and sigMinTypes (Signatures {firstBoundIndex,...}) = firstBoundIndex and sigMaxTypes (Signatures {firstBoundIndex, boundIds,...}) = firstBoundIndex + List.length boundIds and sigTypeIdMap (Signatures {typeIdMap, ...}) = typeIdMap and sigBoundIds (Signatures {boundIds, ...}) = boundIds fun structName (Struct {name,...}) = name and structAccess (Struct {access,...}) = access and structLocations (Struct {locations,...}) = locations and structSignat (Struct {signat,...}) = signat (* Union of the various kinds of core language declaration. Structures are included because they can be declared by opening a structure with substructures. *) datatype coreDeclaration = CoreValue of values | CoreType of typeConstrSet | CoreFix of string*fixStatus (* Include the name because it isn't part of fixStatus. *) | CoreStruct of structVals (* Description of the actions to perform when a structure matches a signature. *) datatype valueMatching = ValueMatch of { sourceValue: values, targetType: types, coercion: valueCoercions } | StructureMatch of { sourceStructure: structVals, contentsMatch: structureMatch} | TypeIdMatch of { sourceIdNo: int, isEquality: bool } and valueCoercions = (* The coercions that may apply to a value. *) NoCoercion | ExceptionToValue | ConstructorToValue withtype structureMatch = (int * valueMatching) list (* "structs" is the abstract syntax for the module language. *) datatype structValue = StructureIdent of (* A structure name *) { name: string, (* The name *) valRef: structVals option ref, (* The variable found. *) location: location } | StructDec of (* struct ... end *) { alist: structDec list, (* List of items in it. *) location: location, matchToResult: structureMatch ref } | FunctorAppl of (* Application of a functor. *) { name: string, arg: structValue, valRef: functors option ref, (* The functor looked up. *) nameLoc: location, (* The location of the name itself. *) fullLoc: location, (* The location of the full application. *) argIds: { source: typeId, dest: typeId } list ref, (* The IDs that are required in the arguments. *) resIds: { source: typeId, dest: typeId } list ref, (* Generative IDs in the result. *) matchToArgument: structureMatch ref } | LetDec of (* let strdec in strexp. *) { decs: structDec list, body: structValue, line: location } | SigConstraint of (* Constraint of str to match sig. *) { str: structValue, (* Structure to constrain *) csig: sigs, (* Constraining signature *) opaque: bool, (* True if opaque, false if transparent. *) sigLoc: location, opaqueIds: { source : typeId, dest: typeId } list ref, matchToConstraint: structureMatch ref } and structDec = StructureDec of (* List of structure decs *) { bindings: structBind list, typeIdsForDebug: typeId list ref, line: location } | CoreLang of (* Any other decln. *) { dec: parsetree, (* The value *) vars: coreDeclaration list ref, (* The declarations *) location: location } | Localdec of (* Local strdec in strdec. *) { decs: structDec list, body: structDec list, line: location } withtype structBind = { name: string, (* The name of the structure *) nameLoc: location, haveSig: bool, (* Whether we moved an explicit signature to the value. *) value: structValue, (* And its value *) valRef: structVals option ref, (* The structure variable declared. *) line: location } fun mkStructIdent (name, location) = StructureIdent { name = name, valRef = ref NONE, location = location } (* For struct...end, make a signature to accept the values. *) fun mkStruct(alist, location) = StructDec { alist = alist, location = location, matchToResult = ref [] }; fun mkCoreLang (dec, location) = CoreLang { dec = dec, vars = ref [], location = location }; fun mkFunctorAppl (name, arg, nameLoc, fullLoc) = FunctorAppl { name = name, arg = arg, valRef = ref NONE, nameLoc = nameLoc, fullLoc = fullLoc, argIds = ref nil, resIds = ref nil, matchToArgument = ref [] }; fun mkFormalArg (name, signat) = { name = name, sigStruct = signat, valRef = ref NONE } fun mkLocaldec (decs, body, line) = Localdec { decs = decs, body = body, line = line }; fun mkLetdec (decs, body, line) = LetDec { decs = decs, body = body, line = line }; fun mkSigConstraint(str, csig, opaque, sigLoc) = SigConstraint { str=str, csig=csig, opaque=opaque, sigLoc=sigLoc, opaqueIds=ref nil, matchToConstraint = ref [] } fun mkStructureDec(bindings, line) = StructureDec { bindings = bindings, typeIdsForDebug = ref [], line = line } fun mkStructureBinding ((name, nameLoc), signat, value, fullLoc): structBind = let (* If there's an explicit signature move that to a constraint. *) val value = case signat of NONE => value | SOME (csig, opaque, sigLoc) => mkSigConstraint(value, csig, opaque, sigLoc) in { name = name, nameLoc = nameLoc, haveSig = isSome signat, value = value, valRef = ref NONE, line = fullLoc } end; type formalArgStruct = { name: string, sigStruct: sigs, valRef: structVals option ref } (* The structure variable. *) (* Top level declarations and program. *) datatype topdec = StrDec of structDec * typeId list ref (* Structure decs and core lang. *) | FunctorDec of functorBind list * location (* List of functor decs. *) | SignatureDec of sigBind list * location (* List of signature decs *) withtype (* Functor binding. *) functorBind = { name: string, nameLoc: location, haveSig: bool, (* Whether we moved an explicit signature to the value. *) body: structValue, arg: formalArgStruct, valRef: functors option ref, (* The functor variable declared. *) resIds: { source: typeId, dest: typeId } list ref, line: location, matchToResult: structureMatch ref, (* If we are debugging we need these at code-gen time. *) debugArgVals: values list ref, debugArgStructs: structVals list ref, debugArgTypeConstrs: typeConstrSet list ref } and sigBind = { name: string, (* The name of the signature *) nameLoc: location, sigStruct: sigs,(* Its value *) sigRef: signatures ref, (* The "value" of the signature. *) line: location } fun mkTopDec t = StrDec(t, ref nil) and mkFunctorDec s = FunctorDec s and mkSignatureDec s = SignatureDec s; fun mkFunctorBinding (name, nameLoc, signat, body, arg, line): functorBind = let (* If there's an explicit signature move that to a constraint. *) val body = case signat of NONE => body | SOME (csig, opaque, sigLoc) => mkSigConstraint(body, csig, opaque, sigLoc) in { name = name, nameLoc = nameLoc, haveSig = isSome signat, body = body, arg = arg, valRef = ref NONE, resIds = ref nil, line = line, matchToResult = ref [], debugArgVals = ref [], debugArgStructs = ref [], debugArgTypeConstrs = ref [] } end and mkSignatureBinding ((name, nameLoc), sg, ln) = { name = name, nameLoc = nameLoc, sigStruct = sg, line = ln, sigRef = ref undefinedSignature } type program = topdec list * location fun mkProgram tl = tl (* Pretty printing *) fun displayList ([], _, _) _ = [] | displayList ([v], _, depth) dodisplay = if depth <= 0 then [PrettyString "..."] else [dodisplay (v, depth)] | displayList (v::vs, separator, depth) dodisplay = if depth <= 0 then [PrettyString "..."] else let val brk = if separator = "," orelse separator = ";" then 0 else 1 in PrettyBlock (0, false, [], [ dodisplay (v, depth), PrettyBreak (brk, 0), PrettyString separator ] ) :: PrettyBreak (1, 0) :: displayList (vs, separator, depth - 1) dodisplay end (* displayList *) fun displayStruct (str, depth: FixedInt.int) = if depth <= 0 (* elide further text. *) then PrettyString "..." else case str of StructureDec { bindings = structList, ...} => let fun displayStructBind ( {name, haveSig, value, ...}: structBind, depth) = let (* If we desugared this before, return it to its original form. *) val (sigStruct, value) = case (haveSig, value) of (true, SigConstraint{str, csig, opaque, sigLoc, ...}) => (SOME(csig, opaque, sigLoc), str) | _ => (NONE, value) in PrettyBlock (3, false, [], PrettyString name :: ( case sigStruct of (* Signature is optional *) NONE => [] | SOME (sigStruct, opaque, _) => [ PrettyString (if opaque then " :>" else " :"), PrettyBreak (1, 0), displaySigs (sigStruct, depth - 1) ] ) @ [ PrettyString " =", PrettyBreak (1, 0), displayStructValue (value, depth - 1) ] ) end in PrettyBlock (3, false, [], PrettyString "structure" :: PrettyBreak (1, 0) :: displayList (structList, "and", depth) displayStructBind ) end | Localdec {decs, body, ...} => PrettyBlock (3, false, [], PrettyString "local" :: PrettyBreak (1, 0) :: displayList (decs, ";", depth - 1) displayStruct @ [ PrettyBreak (1, 0), PrettyString "in", PrettyBreak (1, 0)] @ displayList (body, ";", depth - 1) displayStruct @ [ PrettyBreak (1, 0), PrettyString "end" ] ) | CoreLang {dec, ...} => displayParsetree (dec, depth - 1) and displayStructValue (str, depth) = if depth <= 0 (* elide further text. *) then PrettyString "..." else case str of StructureIdent {name, ...} => PrettyString name | StructDec {alist, ...} => PrettyBlock (1, true, [], PrettyString "struct" :: PrettyBreak (1, 0) :: displayList (alist, "", depth) displayStruct @ [ PrettyBreak (1, 0), PrettyString "end"] ) | FunctorAppl {name, arg, ...} => PrettyBlock (1, false, [], [ PrettyString (name ^ "("), PrettyBreak (0, 0), displayStructValue (arg, depth), PrettyBreak (0, 0), PrettyString ")" ] ) | LetDec {decs, body, ...} => PrettyBlock (3, false, [], PrettyString "let" :: PrettyBreak (1, 0) :: displayList (decs, ";", depth - 1) displayStruct @ [ PrettyBreak (1, 0), PrettyString "in", PrettyBreak (1, 0), displayStructValue (body, depth - 1) ] @ [ PrettyBreak (1, 0), PrettyString "end" ] ) | SigConstraint{str, csig, opaque, ...} => PrettyBlock (0, false, [], [ displayStructValue (str, depth - 1), PrettyString (if opaque then " :>" else " :"), PrettyBreak (1, 0), displaySigs (csig, depth - 1) ] ) fun displayTopDec(top, depth) = if depth <= 0 (* elide further text. *) then PrettyString "..." else case top of StrDec(s, _) => displayStruct(s, depth) | SignatureDec (structList : sigBind list, _) => let fun displaySigBind ({name, sigStruct, ...}: sigBind, depth) = PrettyBlock (3, false, [], [ PrettyString (name ^ " ="), PrettyBreak (1, 0), displaySigs (sigStruct, depth - 1) ] ) in PrettyBlock (3, false, [], PrettyString "signature" :: PrettyBreak (1, 0) :: displayList (structList, "and", depth) displaySigBind ) end | FunctorDec (structList : functorBind list, _) => let fun displayFunctBind ( {name, arg={name=argName, sigStruct=argStruct, ...}, haveSig, body, ...}, depth) = let val (sigStruct, body) = case (haveSig, body) of (true, SigConstraint{str, csig, opaque, sigLoc, ...}) => (SOME(csig, opaque, sigLoc), str) | _ => (NONE, body) in PrettyBlock (3, false, [], PrettyString (name ^ "(") :: PrettyBreak (1, 0) :: PrettyBlock (1, false, [], ( if argName = "" then [] else [ PrettyString (argName ^ " :"), PrettyBreak (1, 2)] ) @ [displaySigs (argStruct, depth - 1)] ) :: PrettyString ")" :: ( case sigStruct of NONE => [] (* Signature is optional *) | SOME (sigStruct, opaque, _) => [ PrettyString(if opaque then " :>" else " :"), PrettyBreak (1, 0), displaySigs (sigStruct, depth - 1) ] ) @ [ PrettyBreak (1, 0), PrettyString "=", PrettyBreak (1, 0), displayStructValue (body, depth - 1) ] ) end in PrettyBlock (3, false, [], PrettyString "functor" :: PrettyBreak (1, 0) :: displayList (structList, "and", depth) displayFunctBind ) end (* End displayTopDec *) fun displayProgram ((sl, _), d) = PrettyBlock(0, true, [], displayList (sl, "", d) displayTopDec ) fun structExportTree(navigation, s: structDec) = let (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => displayStruct(s, d)) :: exportNavigationProps navigation fun asParent () = structExportTree(navigation, s) in case s of StructureDec{ bindings = sbl, line = location, ...} => let fun exportSB(navigation, sb as {name, nameLoc, haveSig, value, line, valRef=ref structOpt, ...}) = let (* If we desugared this before, return it to its original form. *) val (sigStruct, value) = case (haveSig, value) of (true, SigConstraint{str, csig, opaque, sigLoc, ...}) => (SOME(csig, opaque, sigLoc), str) | _ => (NONE, value) fun exportThis () = exportSB(navigation, sb) (* Three groups: name, signature and structures. It's all complicated because the signature may not be present. *) val locProps = case structOpt of SOME(Struct{locations, ...}) => definingLocationProps locations | _ => [] fun getName () = let val next = case sigStruct of SOME _ => getSigStruct | NONE => getValue in getStringAsTree({parent=SOME exportThis, previous=NONE, next=SOME next}, name, nameLoc, locProps) end and getSigStruct () = let val next = SOME getValue val (theSig, _, _) = valOf sigStruct in sigExportTree({parent=SOME exportThis, previous=SOME getName, next=next}, theSig) end and getValue () = let val previous = case sigStruct of NONE => getName | SOME _ => getSigStruct in structValueExportTree({parent=SOME exportThis, previous=SOME previous, next=NONE}, value) end in (line, PTfirstChild getName :: exportNavigationProps navigation) end val expChild = exportList(exportSB, SOME asParent) sbl in (location, expChild @ commonProps) end | CoreLang {dec, ...} => (* A value parse-tree entry. *) getExportTree(navigation, dec) | Localdec {decs, body, line, ...} => (line, exportList(structExportTree, SOME asParent) (decs @ body) @ commonProps) end and structValueExportTree(navigation, s: structValue) = let (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => displayStructValue(s, d)) :: exportNavigationProps navigation fun asParent () = structValueExportTree(navigation, s) in case s of StructureIdent { valRef = ref var, location, ... } => let val locs = case var of SOME(Struct{locations, ...}) => locations | NONE => [] in (* Get the location properties for the identifier. *) (location, mapLocationProps locs @ commonProps) end | StructDec{ location, alist, ...} => (location, exportList(structExportTree, SOME asParent) alist @ commonProps) | FunctorAppl { valRef, name, nameLoc, fullLoc, arg, ... } => let val locs = case ! valRef of SOME(Functor { locations, ...}) => locations | NONE => [] (* Navigate between the functor name and the argument. *) (* The first position is the expression, the second the type *) fun getFunctorName () = getStringAsTree({parent=SOME asParent, previous=NONE, next=SOME getFunctorArg}, name, nameLoc, mapLocationProps locs) and getFunctorArg () = structValueExportTree({parent=SOME asParent, previous=SOME getFunctorName, next=NONE}, arg) in (fullLoc, PTfirstChild getFunctorName :: commonProps) end | LetDec {decs, body, line, ...} => let (* For simplicity just merge these as a single list. *) datatype allEntries = Value of structValue | Dec of structDec fun exportEntries(navigation, Value strval) = structValueExportTree(navigation, strval) | exportEntries(navigation, Dec strdec) = structExportTree(navigation, strdec) in (line, exportList(exportEntries, SOME asParent) (List.map Dec decs @ [Value body]) @ commonProps) end | SigConstraint { str, csig, sigLoc, ... } => let (* Navigate between the functor name and the argument. *) (* The first position is the expression, the second the type *) fun getStructure () = structValueExportTree({parent=SOME asParent, previous=NONE, next=SOME getSignature}, str) and getSignature () = sigExportTree({parent=SOME asParent, previous=SOME getStructure, next=NONE}, csig) in (sigLoc, PTfirstChild getStructure :: commonProps) end end fun topDecExportTree(navigation, top: topdec) = let (* Common properties for navigation and printing. *) val commonProps = PTprint(fn d => displayTopDec(top, d)) :: exportNavigationProps navigation fun asParent () = topDecExportTree(navigation, top) in case top of StrDec(s, _) => structExportTree(navigation, s) | SignatureDec(sigs, location) => let fun exportSB(navigation, sb as {name, nameLoc, sigStruct, line, sigRef=ref(Signatures{locations, ...}), ...}) = let fun exportThis () = exportSB(navigation, sb) fun getName () = getStringAsTree({parent=SOME exportThis, previous=NONE, next=SOME getSig}, name, nameLoc, definingLocationProps locations) and getSig () = sigExportTree({parent=SOME exportThis, previous=SOME getName, next=NONE}, sigStruct) in (line, PTfirstChild getName :: exportNavigationProps navigation) end in (location, exportList(exportSB, SOME asParent) sigs @ commonProps) end | FunctorDec(fbl, location) => let fun exportFB(navigation, fb as {name, nameLoc, haveSig, arg={sigStruct=argStruct, ...}, body, line, valRef=ref optFunc, ...}) = let val locations = case optFunc of SOME(Functor{locations, ...}) => locations | _ => [] val (sigStruct, body) = case (haveSig, body) of (true, SigConstraint{str, csig, opaque, sigLoc, ...}) => (SOME(csig, opaque, sigLoc), str) | _ => (NONE, body) val fbProps = exportNavigationProps navigation fun exportThis () = exportFB(navigation, fb) (* Because the signature is optional navigation on the arg and body depends on whether there's a signature. *) fun getName() = getStringAsTree({parent=SOME exportThis, previous=NONE, next=SOME getArg}, name, nameLoc, definingLocationProps locations) and getArg() = let val next = if isSome sigStruct then getSig else getBody in sigExportTree({parent=SOME exportThis, previous=SOME getName, next=SOME next}, argStruct) end and getSig() = sigExportTree({parent=SOME exportThis, previous=SOME getArg, next=SOME getBody}, #1(valOf sigStruct)) and getBody() = let val previous = if isSome sigStruct then getSig else getArg in structValueExportTree({parent=SOME exportThis, previous=SOME previous, next=NONE}, body) end in (line, PTfirstChild getName :: fbProps) end val expChild = exportList(exportFB, SOME asParent) fbl in (location, expChild @ commonProps) end end (* Convert a "program" into a navigable tree. *) fun structsExportTree (parentTree, trees: program) = let val parentTreeNav = exportNavigationProps parentTree (* The top level is actually a list. *) fun exportTree(([], location)) = (location, parentTreeNav) | exportTree(topdec as (sl, location)) = let fun getEntry(this as (s :: sl), getPrevious) (): exportTree = topDecExportTree( { parent = SOME(fn () => exportTree topdec), (* Parent is this. *) previous = getPrevious, (* If we have a successor then that is the entry and its predecessor returns here. *) next = case sl of [] => NONE | t => SOME(getEntry(t, SOME(getEntry(this, getPrevious)))) }, s ) | getEntry _ () = raise Empty in (location, parentTreeNav @ [PTfirstChild(getEntry(sl, NONE))]) end in exportTree trees end (* Puts out an error message and then prints the piece of tree. *) fun errorMsgNear (lex, hard, near, lno, message) : unit = let val parameters = debugParams lex val errorDepth = getParameter errorDepthTag parameters in reportError lex { hard = hard, location = lno, message = message, context = SOME(near errorDepth) } end; (* TODO: If the item being errored is in a substructure it currently doesn't report the name of the substructure. *) (* Report an error about signature-structure matching. *) fun sigStructMatchMsg (lex, near, lno, structName) (doDisplay: 'a -> pretty) (structValue: 'a, sigValue: 'a, reason) = let val message = PrettyBlock(3, true, [], [ PrettyString ("Structure does not match signature" ^ (if structName = "" then "." else " in sub-structure " ^ structName)), PrettyBreak(1, 0), PrettyBlock(3, false, [], [ PrettyString "Signature:", PrettyBreak(1, 0), doDisplay sigValue ]), PrettyBreak(1, 0), PrettyBlock(3, false, [], [ PrettyString "Structure:", PrettyBreak(1, 0), doDisplay structValue ]), PrettyBreak(1, 0), PrettyBlock(3, false, [], [ PrettyString "Reason:", PrettyBreak(1, 0), reason ]) ]) in errorMsgNear(lex, true, near, lno, message) end fun sigStructMissingMsg (lex, near, lno, structName) (doDisplay: 'a -> pretty) (sigValue: 'a) = let val message = PrettyBlock(3, true, [], [ PrettyString ("Structure does not match signature" ^ (if structName = "" then "." else " in sub-structure " ^ structName)), PrettyBreak(1, 0), PrettyBlock(3, false, [], [ PrettyString "Signature:", PrettyBreak(1, 0), doDisplay sigValue ]), PrettyBreak(1, 0), PrettyBlock(3, false, [], [ PrettyString "Structure:", PrettyBreak(1, 0), PrettyString "Not present" ]) ]) in errorMsgNear(lex, true, near, lno, message) end (* Older version: prints just a string message. *) fun errorNear(lex, hard, near, lno, message: string) = errorMsgNear (lex, hard, near, lno, PrettyBlock (0, false, [], [PrettyString message])) fun errorDepth lex = let open DEBUG val parameters = LEX.debugParams lex in getParameter errorDepthTag parameters end (* Error message routine for lookupType and lookupStructure. *) fun giveError (sVal : structValue, lno : LEX.location, lex : lexan) : string -> unit = fn (message : string) => errorNear (lex, true, fn n => displayStructValue(sVal, n), lno, message); (* Turn a result from matchTypes into a pretty structure so that it can be included in a message. *) (* TODO: When reporting type messages from inside the structure we should use the environment from within the structure and for type within the signature the signature env. *) fun matchErrorReport(lex, structTypeEnv, sigTypeEnv) = unifyTypesErrorReport(lex, structTypeEnv, sigTypeEnv, "match") datatype matchTypeResult = MatchError of matchResult | MatchSuccess of types (* Check that two types match. Returns either an error result or the set of polymorphic variables for the source and the target. *) fun matchTypes (candidate, target, targMap: int -> typeId option, _) = let fun copyId(TypeId{idKind=Bound{ offset, ...}, ...}) = targMap offset | copyId _ = NONE fun copyATypeConstr tcon = copyTypeConstr(tcon, copyId, fn x => x, fn s => s) fun copyTarget t = (* Leave type variables. *) copyType (t, fn x => x, copyATypeConstr); val copiedTarget = copyTarget target (* Do the match to a version of the candidate with copies of the type variables so that we can instantiate them. We could do this by passing in a mapping function but the problem is that if we have a type variable that gets unified to another variable we will not map it properly if it occurs again (we call "eventual" and get the second tv before calling the map function so we get a second copy and not the first copy). *) val (copiedCandidate : types, _) = generalise candidate; in case unifyTypes (copiedCandidate, copiedTarget) of NONE => (* Succeeded. Return the unified type. Either will do. *) MatchSuccess copiedTarget | SOME error => MatchError error end; (* Check that a matching has succeeded, and check the value constructors if they are datatypes. *) fun checkTypeConstrs (candidSet as TypeConstrSet(candid, candidConstrs), targetSet as TypeConstrSet(target, targetConstrs), targTypeMap: int -> typeId option, lex, near, lno, typeEnv, structPath) = let val candidName : string = tcName candid; val targetName : string = tcName target; val tvars = List.map TypeVar (tcTypeVars target); (* either will do *) (* If we get an error in the datatype itself print the full datatype. *) val printTypeEnv = { lookupType = fn _ => NONE, lookupStruct = fn _ => NONE } val errorInDatatype = sigStructMatchMsg(lex, near, lno, structPath)(fn t => displayTypeConstrs(t, errorDepth lex, printTypeEnv)) in if tcArity candid <> tcArity target then () (* Have already given the error message. *) else (* Check the type constructors themselves first. This checks that the sharing constraints have been satisfied. *) case matchTypes (mkTypeConstruction (candidName, candid, tvars, []), mkTypeConstruction (targetName, target, tvars, []), targTypeMap, lex) of MatchError error => (* Report the error. *) errorInDatatype(candidSet, targetSet, matchErrorReport(lex, typeEnv, typeEnv) error) | MatchSuccess _ => (* We have already checked for matching a type in the structure to a datatype in the signature. In ML97 we can't rebind an identifier in a signature so each constructor for this datatype must be present in the signature i.e. it can't be hidden by a constructor for another datatype. So we can check the types of the constructors when we check the values. We still need to check that if this has constructors that the candidate does not have more constructors. *) if null targetConstrs then () (* Target is just a type: this isn't a problem. *) else if List.length candidConstrs <= List.length targetConstrs then () (* If it's less then it will be picked up later. *) else let fun checkConstrs(Value{name=candidConstrName, ...}) = if List.exists(fn Value{name, ...} => name=candidConstrName) targetConstrs then () else errorNear(lex, true, near, lno, concat["Error while matching datatype ", candidName, ": constructor ", candidConstrName, " was present in the structure but not in the signature."]); in List.app checkConstrs candidConstrs end end (* Check that a candidate signature (actually the environment part of a structure) matches a target signature. The direction is important because a candidate is allowed to have more components and more polymorphism than the target. As part of the matching process we build up a map of typeIDs in the target to type IDs in the candidate and that is returned as the result. N.B. the map function takes an argument between minTarget and maxTarget. *) fun matchSigs(originalCandidate, originalTarget, near, lno, lex, typeIdEnv, typeEnv) :(int -> typeId) * (int * valueMatching) list = let val candidate = (* The structure. *) let val Signatures { typeIdMap, firstBoundIndex, boundIds, ... } = originalCandidate val _ = case boundIds of [] => () | _ => raise InternalError "Candidate structure with non-empty bound ID list" in if isUndefinedSignature originalCandidate then undefinedSignature else replaceMap(originalCandidate, typeIdMap, firstBoundIndex, [], typeIdEnv) end val target = (* The signature. *) let val Signatures { typeIdMap, firstBoundIndex, boundIds, ... } = originalTarget fun newMap n = if n < firstBoundIndex then typeIdEnv n else List.nth(boundIds, n-firstBoundIndex) in replaceMap(originalTarget, typeIdMap, firstBoundIndex, boundIds, newMap) end local val minTarget = sigMinTypes target and maxTarget = sigMaxTypes target (* All the Bound type IDs in the target are in this range. We create an array to contain the matched IDs from the candidate. *) val matchArray = Array.array(maxTarget-minTarget, NONE) in (* These two functions are used during the match process. *) (* When looking up a Bound ID we return NONE if it is out of the range. Bound IDs below the minimum are treated as global at this level and so only match if they are the same in the target and candidate. *) fun lookupType n = if n < minTarget then NONE else Array.sub(matchArray, n-minTarget) and enterType (n, id) = if n < minTarget then () else Array.update(matchArray, n-minTarget, SOME id) (* This is the result function. If everything is right every entry in the array will be SOME but if we have had an error there may be entries that are still NONE. To prevent an exception we return the undefined type in that case. *) fun resultType n = getOpt(Array.sub(matchArray, n-minTarget), tcIdentifier undefConstr) end (* Match typeIDs for types. This is slightly more complicated than simply assigning the stamps. *) fun matchNames (candidate, target, structPath) : unit = if isUndefinedSignature candidate then () (* Suppress unnecessary messages. *) else univFold (sigTab target, fn (dName, dVal, ()) => if tagIs typeConstrVar dVal then let (* See if there is one with the same name. *) val targetSet as TypeConstrSet(target, targetConstrs) = tagProject typeConstrVar dVal; val printTypeEnv = { lookupType = fn _ => NONE, lookupStruct = fn _ => NONE } fun displayType t = displayTypeConstrs(t, errorDepth lex, printTypeEnv) val typeError = sigStructMatchMsg(lex, near, lno, structPath) displayType in (* Match up the types. This does certain checks but does not check sharing. Equality is checked for. *) case univLookup (sigTab candidate, typeConstrVar, dName) of SOME (candidSet as TypeConstrSet(candid, candidConstrs)) => if not (isUndefinedTypeConstr target) (* just in case *) then ( (* Check for arity and equality - value constructors are checked later. If the target is a bound identifier in the range it can be matched by a candidate. *) case tcIdentifier target of TypeId{idKind=Bound { offset, ...}, ...} => enterType (offset, tcIdentifier candid) | _ => (); if tcArity target <> tcArity candid then typeError(candidSet, targetSet, PrettyString "Types take different numbers of type arguments.") (* Check that it's a datatype before checking for eqtype. *) else if not (null targetConstrs) andalso null candidConstrs then typeError(candidSet, targetSet, PrettyString "Type in structure is not a datatype") else if not(tcIsAbbreviation target) andalso tcEquality target andalso not (permitsEquality candid) then typeError(candidSet, targetSet, PrettyString "Type in structure is not an equality type") else () ) else () | NONE => sigStructMissingMsg(lex, near, lno, structPath) displayType targetSet end else if tagIs structVar dVal then let (* and sub-structures. *) val target = (tagProject structVar) dVal; (* For each target structure: find a candidate with the same name and recursively check them. *) in case univLookup (sigTab candidate, structVar, dName) of SOME candid => matchNames (structSignat candid, structSignat target, structPath ^ dName ^ ".") | NONE => let fun displayStructure s = PrettyBlock(0, false, [], [PrettyString "structure" , PrettyBreak(1, 3), PrettyString(structName s)]) in sigStructMissingMsg(lex, near, lno, structPath) displayStructure target end end else (), (* not a type or structure *) () (* default value for fold *) ) (* matchNames *); val () = matchNames (candidate, target, ""); (* Match the values and exceptions in the signatures. This actually does the checking of types. *) fun matchVals (candidate, target, structPath): (int * valueMatching) list = if isUndefinedSignature candidate then [] (* Suppress unnecessary messages. *) else (* Map the identifiers first, returning the originals if they are not in the map. *) let local fun matchStructures(dName, dVal, matches) = if tagIs typeConstrVar dVal then (* Types *) let (* For each type in the target ... *) val target = tagProject typeConstrVar dVal in (* Find a candidate with the same name. *) case univLookup (sigTab candidate, typeConstrVar, dName) of SOME candid => let (* We don't actually check the value constructors here, just load them if they match. Because of the no-redefinition rule value constructors in the signature must also be present in the value environment so we check them there. *) fun matchConstructor(source as Value{typeOf, ...}, Value{access=Formal addr, ...}, matches) = (addr, ValueMatch { sourceValue = source, coercion = NoCoercion, targetType = typeOf }) :: matches | matchConstructor(_, _, matches) = matches in (* Now check that the types match. *) checkTypeConstrs(candid, target, lookupType, lex, near, lno, typeEnv, structPath); ListPair.foldl matchConstructor matches (tsConstructors candid, tsConstructors target) end | NONE => matches (* If the lookup failed ignore the error - we've already reported it in matchNames *) end else if tagIs structVar dVal then let (* and each sub-structure *) val target = tagProject structVar dVal in (* For each target structure: find a candidate with the same name and recursively check them. *) case univLookup (sigTab candidate, structVar, dName) of SOME candid => let val substructMatch = matchVals (structSignat candid, structSignat target, structPath ^ dName ^ ".") in (* Produce the match instructions for the sub-structure. We only include Formal entries here. It's possible that there might be Global entries in some circumstances. *) case target of Struct{access=Formal addr, ...} => (addr, StructureMatch{ sourceStructure=candid, contentsMatch = substructMatch}) :: matches | _ => matches end | NONE => matches (* Ignore the error - we've already reported it in matchNames *) end else matches; in val structureMatches = univFold(sigTab target, matchStructures, []) end fun displayValue(value as Value {name, locations, typeOf, ...}) = let val decLocation = case List.find (fn DeclaredAt _ => true | _ => false) locations of SOME(DeclaredAt loc) => [ContextLocation loc] | _ => [] val valName = PrettyBlock(0, false, decLocation, [PrettyString name]) fun dispVal(kind, typeof) = PrettyBlock(0, false, [], [ PrettyString kind, PrettyBreak(1, 3), valName, PrettyBreak(0, 0), PrettyString(":"), PrettyBreak(1, 0), display (typeof, errorDepth lex, typeEnv) ]) in case value of Value{class=Constructor _, ...} => (* When displaying the constructor show the function type. We may have rebound the constructor in the candidate structure so that it creates a different datatype. *) dispVal("constructor", typeOf) | Value{class=Exception, ...} => PrettyBlock(0, false, [], PrettyString "exception" :: PrettyBreak(1, 3) :: valName :: ( case getFnArgType typeOf of NONE => [] | SOME excType => [ PrettyBreak (1, 1), PrettyString "of", PrettyBreak (1, 3), display (excType, errorDepth lex, typeEnv) ] )) | _ => dispVal("val", typeOf) end local fun matchLocalValues(dName, dVal, matches) = if tagIs valueVar dVal then let val destVal as Value { typeOf=destTypeOf, class=destClass, access=destAccess, ...} = tagProject valueVar dVal in case univLookup (sigTab candidate, valueVar, dName) of NONE => (sigStructMissingMsg(lex, near, lno, structPath) displayValue destVal; matches) | SOME (candid as Value { typeOf=sourceTypeOf, class=sourceClass, ...}) => let (* If the target is a constructor or exception the candidate must be similar. If the candidate is a constructor or exception this will match a value but requires some coercion. *) datatype matchType = IsOK of valueCoercions | IsWrong of pretty val matchKind = case (destClass, sourceClass) of (Constructor _, Constructor _) => IsOK NoCoercion | (Constructor _, _) => IsWrong(PrettyString "Value is not a constructor") | (Exception, Exception) => IsOK NoCoercion | (Exception, _) => IsWrong(PrettyString "Value is not an exception") | (_, Exception) => IsOK ExceptionToValue | (_, Constructor _) => IsOK ConstructorToValue | _ => IsOK NoCoercion in case matchKind of IsWrong error => ( sigStructMatchMsg(lex, near, lno, structPath) displayValue (candid, destVal, error); matches ) | IsOK coercion => case matchTypes (sourceTypeOf, destTypeOf, lookupType, lex) of MatchSuccess instanceType => ( (* If it matches an entry in the signature it counts as being exported and therefore referenced. *) case candid of Value { references=SOME{exportedRef, ...}, ...} => exportedRef := true | _ => (); (* Add the instance type to the instance types. *) case candid of Value{ instanceTypes=SOME instanceRef, ...} => (* This has to be generalised before it is added here. Unlike normal unification when matching to a signature any polymorphic variables in the target will not have been generalised. *) instanceRef := #1(generalise instanceType) :: !instanceRef | _ => (); case destAccess of Formal destAddr => (destAddr, ValueMatch { sourceValue = candid, coercion = coercion, targetType = instanceType }) :: matches | _ => matches (* This could be global. *) ) | MatchError error => ( sigStructMatchMsg(lex, near, lno, structPath) displayValue (candid, destVal, matchErrorReport(lex, typeEnv, typeEnv) error); matches ) end end else matches in val matchedValues = univFold(sigTab target, matchLocalValues, structureMatches) end in matchedValues end (* matchVals *); val doMatch = matchVals (candidate, target, ""); (* Do the match. *) in (resultType, doMatch) (* Return the function to look up the results. *) end (* matchSigs *); val makeEnv = fn x => let val Env e = makeEnv x in e end; (* Any values in the signature are counted as exported. This case applies if there was no result signature because if there was a signature the values would have been given their references and types in the signature matching. *) fun markValsAsExported resSig = let fun refVals(_, dVal, ()) = if tagIs valueVar dVal then let val valu = tagProject valueVar dVal in case valu of Value {references=SOME{exportedRef, ...}, ...} => exportedRef := true | _ => (); (* If we have exported the value without a signature we use the most general type and discard any, possibly less general, references. *) case valu of Value{ typeOf, instanceTypes=SOME instanceRef, ...} => instanceRef := [#1(generalise typeOf)] | _ => () end else () in univFold(sigTab resSig, refVals, ()) end (* Construct a set of actions for matching a structure to itself. This is only really needed to ensure that type IDs are passed through correctly but we don't actually do them here yet. *) fun makeCopyActions signat : (int * valueMatching) list = let fun matchEntry(_, dVal, matches) = if tagIs structVar dVal then let val str = tagProject structVar dVal in case str of Struct{access=Formal addr, ...} => (addr, StructureMatch{ sourceStructure=str, contentsMatch = makeCopyActions(structSignat str)}) :: matches | _ => matches end else if tagIs valueVar dVal then let val v = tagProject valueVar dVal in case v of Value { access=Formal addr, typeOf, ...} => (addr, ValueMatch { sourceValue = v, coercion = NoCoercion, targetType = typeOf }) :: matches | _ => matches end else if tagIs typeConstrVar dVal then let fun matchConstructor(v as Value{access=Formal addr, typeOf, ...}, matches) = (addr, ValueMatch { sourceValue = v, coercion = NoCoercion, targetType = typeOf }) :: matches | matchConstructor(_, matches) = matches in List.foldl matchConstructor matches (tsConstructors(tagProject typeConstrVar dVal)) end else matches in univFold(sigTab signat, matchEntry, []) end (* Actions to copy the type Ids into the result signature. *) local fun matchTypeIds(_, []) = [] | matchTypeIds(n, (typeId as TypeId{ access = Formal addr, ...}) :: rest) = (addr, TypeIdMatch{ sourceIdNo=n, isEquality=isEquality typeId }) :: matchTypeIds(n+1, rest) | matchTypeIds(_, _) = raise InternalError "matchTypeIds: Not Formal" in fun makeMatchTypeIds destIds = matchTypeIds(0, destIds) end (* Second pass - identify names with values and type-check *) (* Process structure-returning expressions i.e. structure names, struct..end values and functor applications. *) fun structValue(str: structValue, newTypeId: (int*bool*bool*bool*typeIdDescription)->typeId, currentTypeCount, newTypeIdEnv: unit -> int->typeId, Env env, lex, lno, structPath) = let val typeEnv = { lookupType = fn s => case #lookupType env s of NONE => NONE | SOME t => SOME(t, SOME(newTypeIdEnv())), lookupStruct = fn s => case #lookupStruct env s of NONE => NONE | SOME t => SOME(t, SOME(newTypeIdEnv())) } in case str of StructureIdent {name, valRef, location} => let (* Look up the name and save the value. *) val result = lookupStructure ("Structure", {lookupStruct = #lookupStruct env}, name, giveError (str, location, lex)) val () = valRef := result in case result of SOME(Struct{signat, ...}) => signat | NONE => undefinedSignature end | FunctorAppl {name, arg, valRef, nameLoc, fullLoc, argIds, resIds, matchToArgument, ... } => (* The result structure must be copied to generate a new environment. This will make new types so that different applications of the functor yield different types. There may be dependencies between the parameters and result signatures so copying may have to take that into account. *) ( case #lookupFunct env name of NONE => ( giveError (str, nameLoc, lex) ("Functor (" ^ name ^ ") has not been declared"); undefinedSignature ) | SOME functr => let val Functor { arg = Struct{signat=formalArgSig, ...}, result=functorResSig, ...} = functr val () = valRef := SOME functr (* save it till later. *) (* Apply a functor to an argument. The result structure contains a mixture of IDs from the argument structure and generative IDs from the result structure. There are two parts to this process. 1. We have to match the actual argument structure to the formal argument to ensure that IDs are in the right place for the functor. 2. We have to take the actual argument structure and the functor result structure and produce a combination of this as a structure. *) (* IDs: argIDs: A list of pairs of IDs as Selected/Local/Global values and Formal values. This contains the IDs that must be passed into the functor. resIDs: A list of pairs of IDs as Local values and Formal values. The Local value is the location where a new generative ID is stored and the Formal offset is the offset within the run-time vector returned by the signature where the source ID for the generative ID is to be found. *) (* This provides information about the arguments. *) (* Get the actual parameter value. *) val actualArgSig = structValue(arg, newTypeId, currentTypeCount, newTypeIdEnv, Env env, lex, fullLoc, structPath); local (* Check that the actual arguments match formal arguments, and instantiate the variables. *) val (matchResults, matchActions) = matchSigs (actualArgSig, formalArgSig, fn n => displayStructValue(str, n), fullLoc, lex, newTypeIdEnv(), typeEnv); (* Record the code to match to this and include instructions to load the typeIDs. *) val () = matchToArgument := matchActions @ makeMatchTypeIds(sigBoundIds formalArgSig) in val matchResults = matchResults end (* Create a list of the type IDs that the argument must supply. *) local val maxT = sigMaxTypes formalArgSig and minT = sigMinTypes formalArgSig val results = List.tabulate(maxT-minT, fn n => matchResults(n+minT)) val args = ListPair.mapEq(fn(s, d) => { source = s, dest = d })(results, sigBoundIds formalArgSig) in val () = argIds := args; (* Save for code-generation. *) end (* Now create the generative typeIDs. These are IDs that are in the bound ID range of the result signature. Any type IDs inherited from the argument will have type ID values less than sigMinTypes functorResSig. *) local fun makeNewTypeId( oldId as TypeId{idKind=Bound{isDatatype, arity, ...}, description = { name=oldName, ...}, ...}) = let val description = { location = fullLoc, name = oldName, description = "Created from applying functor " ^ name } val newId = newTypeId(arity, false, isEquality oldId, isDatatype, description) in { source = oldId, dest = newId } end | makeNewTypeId _ = raise InternalError "Not Bound" (* The resIds list tells the code-generator where to find the source of each ID in the result structure and where to save the generative ID. *) val sdList = List.map makeNewTypeId (sigBoundIds functorResSig) val _ = resIds := sdList (* Save for code-generation. *) in (* This vector contains the resulting type IDs. They all have Local access. *) val resVector = Vector.fromList(List.map(fn { dest, ...} => dest) sdList) end (* Construct a result signature. This will contain all the IDs created here i.e. IDs in the argument and generative IDs at the start and then all the values and structures returned from the functor. When we come to code-generate we need to 1. Use loadOpaqueIds over the resIDs to create the opaque IDs. 2. Basically, do the same as StructDec to match to the result signature. We don't need to do anything about type IDs from the argument. Processing the argument will ensure that type IDs created in the argument are declared as Locals and if we pass localIDs to matchStructure we will load IDs from both the argument and generative IDs created by loadOpaqueIds. *) val minCopy = Int.min(sigMinTypes formalArgSig, sigMinTypes functorResSig) val idEnv = newTypeIdEnv() fun getCombinedTypeId n = if n < minCopy then idEnv n else if n >= sigMinTypes functorResSig then Vector.sub(resVector, n - sigMinTypes functorResSig) else if n >= sigMinTypes formalArgSig then matchResults n else sigTypeIdMap formalArgSig n val resSig = let val Signatures { name, tab, locations, ... } = functorResSig in makeSignature(name, tab, currentTypeCount(), locations, composeMaps(sigTypeIdMap functorResSig, getCombinedTypeId), []) end in resSig end ) | StructDec {alist, location, matchToResult, ...} => let (* Collection of declarations packaged into a structure or a collection of signatures. *) (* Some of the environment, the types and the value constructors, is generated during the first pass. Get the environment from the structure. *) val structTable = makeSignatureTable () val structEnv = makeEnv structTable val makeLocalTypeId = newTypeId val makeLocalTypeIdEnv = newTypeIdEnv val newEnv = { enterType = #enterType structEnv, enterVal = #enterVal structEnv, enterStruct = #enterStruct structEnv, enterSig = fn _ => raise InternalError "Signature in Struct End", enterFunct = fn _ => raise InternalError "Functor in Struct End", lookupVal = lookupDefault (#lookupVal structEnv) (#lookupVal env), lookupType = lookupDefault (#lookupType structEnv) (#lookupType env), lookupStruct = lookupDefault (#lookupStruct structEnv) (#lookupStruct env), lookupSig = #lookupSig env, (* Global *) lookupFunct = #lookupFunct env, (* Global *) lookupFix = #lookupFix env, (* Fixity declarations are dealt with in the parsing process. They are only processed again in this pass in order to get declarations in the right order. *) enterFix = fn _ => (), allValNames = fn () => (#allValNames structEnv () @ #allValNames env ()) } (* process body of structure *) val () = pass2Struct (alist, makeLocalTypeId, currentTypeCount, makeLocalTypeIdEnv, Env newEnv, lex, lno, structPath); (* We need to make a signature for the result in the form that can be used if there is no explicit signature, for example if this is used as the result of a functor. That means creating Formal values for all the values and structures. These Formal entries define the position in the run-time vector where each of the values and sub-structures are located. We don't include typeIDs in this. Any typeIDs that need to be included in the run-time vector are added by the functor declaration code. *) val finalTable = makeSignatureTable(); val finalEnv = makeEnv finalTable (* Create the result signature and also build the match structure to match to it. *) fun enterItem(dName, dVal, (addrs, matches)) = if tagIs typeConstrVar dVal then let val tConstr as TypeConstrSet(typConstr, valConstrs) = tagProject typeConstrVar dVal in if null valConstrs then (#enterType finalEnv (dName, tConstr); (addrs, matches)) else let (* If this is a datatype constructor convert the value constructors. The "no redefinition" rule for signatures doesn't apply to a structure so the signature we create here could have some constructors that have been hidden by later declarations. We still need the whole value environment in case of datatype replication. *) fun convertConstructor( valVal as Value{class, typeOf, locations, references, name, instanceTypes, ...}, (otherConstrs, (addrs, matches))) = let val formalValue = Value{class=class, name=name, typeOf=typeOf, access=Formal addrs, locations=locations, references=references, instanceTypes=instanceTypes} in (formalValue :: otherConstrs, (addrs + 1, (addrs, ValueMatch { sourceValue = valVal, coercion = NoCoercion, targetType=typeOf}) :: matches)) end val (newConstrs, newAddrMatch) = List.foldl convertConstructor ([], (addrs, matches)) valConstrs val newConstructor = makeTypeConstructor( tcName typConstr, tcTypeVars typConstr, tcIdentifier typConstr, tcLocations typConstr) in #enterType finalEnv (dName, TypeConstrSet(newConstructor, List.rev newConstrs)); newAddrMatch end end else if tagIs structVar dVal then let val strVal = tagProject structVar dVal val locations = structLocations strVal val strSig = structSignat strVal val matchSubStructure = makeCopyActions strSig in #enterStruct finalEnv (dName, makeFormalStruct (dName, strSig, addrs, locations)); (addrs + 1, (addrs, StructureMatch { sourceStructure=strVal, contentsMatch = matchSubStructure}) :: matches) end else if tagIs valueVar dVal then let val valVal = tagProject valueVar dVal in (* If this is a type-dependent function such as PolyML.print we must put in the original type-dependent version not the version which will have frozen its type as 'a. *) case valVal of value as Value{access = Overloaded _, ...} => ( #enterVal finalEnv (dName, value); (addrs, matches) ) | Value{class, typeOf, locations, references, instanceTypes, ...} => let val formalValue = Value{class=class, name=dName, typeOf=typeOf, access=Formal addrs, locations=locations, references=references, instanceTypes=instanceTypes} in #enterVal finalEnv (dName, formalValue); (addrs + 1, (addrs, ValueMatch { sourceValue = valVal, coercion = NoCoercion, targetType=typeOf}) :: matches) end end else (addrs, matches) val () = matchToResult := #2(univFold(structTable, enterItem, (0, []))) val locations = [DeclaredAt location, SequenceNo (newBindingId lex)] val resSig = makeSignature("", finalTable, currentTypeCount(), locations, newTypeIdEnv(), []) in resSig end | LetDec {decs, body = localStr, line, ...} => let (* let strdec in strexp end *) val newEnv = makeEnv (makeSignatureTable()); (* The environment for the local declarations. *) val localEnv = { lookupVal = lookupDefault (#lookupVal newEnv) (#lookupVal env), lookupType = lookupDefault (#lookupType newEnv) (#lookupType env), lookupFix = #lookupFix newEnv, lookupStruct = lookupDefault (#lookupStruct newEnv) (#lookupStruct env), lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, (* Sigs and functs are global *) enterVal = #enterVal newEnv, enterType = #enterType newEnv, (* Fixity declarations are dealt with in the parsing process. At this stage we simply need to make sure that local declarations aren't entered into the global environment. *) enterFix = fn _ => (), enterStruct = #enterStruct newEnv, enterSig = #enterSig newEnv, enterFunct = #enterFunct newEnv, allValNames = fn () => (#allValNames newEnv () @ #allValNames env ()) }; (* Process the local declarations. *) val () = pass2Struct (decs, newTypeId, currentTypeCount, newTypeIdEnv, Env localEnv, lex, line, structPath); in (* There should just be one entry in the "body" list. *) structValue(localStr, newTypeId, currentTypeCount, newTypeIdEnv, Env localEnv, lex, line, structPath) end | SigConstraint { str, csig, opaque, sigLoc, opaqueIds, matchToConstraint, ... } => let val bodyIds = ref [] val startTypes = currentTypeCount() val startTypeEnv = newTypeIdEnv() fun sconstraintMakeTypeId (arity, isVar, eq, isdt, desc) = let val newId = newTypeId(arity, isVar, eq, isdt, desc) in bodyIds := newId :: ! bodyIds; newId end fun sconstraintTypeIdEnv () n = if n < startTypes then startTypeEnv n else valOf( List.find(fn TypeId{idKind=Bound{offset, ...}, ...} => offset = n | _ => raise Subscript) (!bodyIds)) val resSig = structValue(str, sconstraintMakeTypeId, currentTypeCount, sconstraintTypeIdEnv, Env env, lex, lno, structPath); (* Get the explicit signature. *) val explicitSig = sigVal(csig, startTypes, startTypeEnv, Env env, lex, sigLoc) val minExplicitSig = sigMinTypes explicitSig and maxExplicitSig = sigMaxTypes explicitSig (* Match the signature. This instantiates entries in typeMap. *) val (matchResults, matchActions) = matchSigs (resSig, explicitSig, fn n => displayStructValue(str, n), sigLoc, lex, startTypeEnv, typeEnv); val () = matchToConstraint := matchActions val rSig = if opaque then let (* Construct new IDs for the generic IDs. For each ID in the signature we need to make a new Local ID. *) fun makeNewId(oldId as TypeId{idKind=Bound{ isDatatype, arity, ...}, description = { name, ...}, ...}) = let val description = { location = sigLoc, name = name, description = "Created from opaque signature" } in newTypeId(arity, false, isEquality oldId, isDatatype, description) end | makeNewId _ = raise InternalError "Not Bound" val sources = List.tabulate(maxExplicitSig-minExplicitSig, fn n => matchResults(n+minExplicitSig)) val dests = List.map makeNewId (sigBoundIds explicitSig) (* Add the matching IDs to a list. When we create the code for the structure we need to create new run-time ID values using the original equality code and a new ref to hold the printer. *) val () = opaqueIds := ListPair.mapEq (fn (s, d) => { source=s, dest=d }) (sources, dests) (* Create new IDs for all the bound IDs in the signature. *) val v = Vector.fromList dests (* And copy it to put in the names from the structure. *) val currentEnv = newTypeIdEnv() fun oldMap n = if n < minExplicitSig then currentEnv n else Vector.sub (v, n - minExplicitSig) val Signatures{locations, name, tab, typeIdMap, ...} = explicitSig in makeSignature(name, tab, currentTypeCount(), locations, composeMaps(typeIdMap, oldMap), []) end else (* Transparent: Use the IDs from the structure. *) let val newIdEnv = newTypeIdEnv () fun matchedIds n = if n < sigMinTypes explicitSig then newIdEnv n else matchResults n val Signatures{locations, name, tab, typeIdMap, ...} = explicitSig in (* The result signature. This needs to be able to enumerate the type IDs including those we've added. *) makeSignature(name, tab, currentTypeCount(), locations, composeMaps(typeIdMap, matchedIds), []) end in rSig end end (* structValue *) and pass2Struct (strs : structDec list, makeLocalTypeId : (int * bool * bool * bool * typeIdDescription) -> typeId, makeCurrentTypeCount: unit -> int, makeTypeIdEnv: unit -> int -> typeId, Env env : env, lex, lno : LEX.location, structPath: string ) : unit = let fun pass2StructureDec (str : structDec, structList : structBind list, typeIdsForDebug) : unit = let (* Declaration of structures. *) (* The declarations must be made in parallel. i.e. structure A = struct ... end and B = A; binds B to the A in the PREVIOUS environment, not the A being declared. *) val sEnv = (* The new names. *) noDuplicates (fn(name, _, _) => errorNear (lex, true, fn n => displayStruct(str, n), lno, "Structure " ^ name ^ " has already been bound in this declaration") ) (* Any new type Ids we create need to be added onto a list in case we need them for the debugger. *) fun captureIds args = let val id = makeLocalTypeId args in typeIdsForDebug := id :: ! typeIdsForDebug; id end (* Put the new names into this environment. *) fun pass2StructureBind ({name, value, valRef, line, nameLoc, ...}) : unit= let (* Each element in the list is a structure binding. *) val resSig = structValue(value, captureIds, makeCurrentTypeCount, makeTypeIdEnv, Env env, lex, line, structPath ^ name ^ "."); (* Any values in the signature are counted as exported. *) val () = markValsAsExported resSig; (* Now make a local structure variable using this signature. *) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val var = makeLocalStruct (name, resSig, locations) in #enter sEnv (name, var); valRef := SOME var end in List.app pass2StructureBind structList; (* Put them into the enclosing env. *) #apply sEnv (#enterStruct env) end; (* pass2StructureDec *) fun pass2Localdec (decs : structDec list, body : structDec list) : unit = let val newEnv = makeEnv (makeSignatureTable()); (* The environment for the local declarations. *) val localEnv = { lookupVal = lookupDefault (#lookupVal newEnv) (#lookupVal env), lookupType = lookupDefault (#lookupType newEnv) (#lookupType env), lookupFix = #lookupFix newEnv, lookupStruct = lookupDefault (#lookupStruct newEnv) (#lookupStruct env), lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, enterVal = #enterVal newEnv, enterType = #enterType newEnv, enterFix = fn _ => (), enterStruct = #enterStruct newEnv, enterSig = #enterSig newEnv, enterFunct = #enterFunct newEnv, allValNames = fn () => (#allValNames newEnv () @ #allValNames env ()) }; (* Process the local declarations. *) val () = pass2Struct (decs, makeLocalTypeId, makeCurrentTypeCount, makeTypeIdEnv, Env localEnv, lex, lno, structPath); (* This is the environment used for the body of the declaration. Declarations are added both to the local environment and to the surrounding scope. *) (* Look-ups come from the local env *) val bodyEnv = { lookupVal = #lookupVal localEnv, lookupType = #lookupType localEnv, lookupFix = #lookupFix localEnv, lookupStruct = #lookupStruct localEnv, lookupSig = #lookupSig localEnv, lookupFunct = #lookupFunct localEnv, enterVal = fn pair => ( #enterVal newEnv pair; #enterVal env pair ), enterType = fn pair => ( #enterType newEnv pair; #enterType env pair ), enterFix = #enterFix localEnv, enterStruct = fn pair => ( #enterStruct newEnv pair; #enterStruct env pair ), enterSig = fn pair => ( #enterSig newEnv pair; #enterSig env pair ), enterFunct = #enterFunct localEnv, allValNames = #allValNames localEnv }; in (* Now the body. *) pass2Struct (body, makeLocalTypeId, makeCurrentTypeCount, makeTypeIdEnv, Env bodyEnv, lex, lno, structPath) end; (* pass2Localdec *) fun pass2Singleton (dec : parsetree, vars) : unit = let (* Single declaration - may declare several names. *) (* As well as entering the declarations we must keep a list of the value and exception declarations. *) val newEnv = { lookupVal = #lookupVal env, lookupType = #lookupType env, lookupFix = #lookupFix env, lookupStruct = #lookupStruct env, lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, (* Must add the entries onto the end in case a declaration with the same name is made. e.g. local ... in val a=1; val a=2 end. *) enterVal = fn (pair as (_,v)) => ( #enterVal env pair; vars := !vars @ [CoreValue v] ), enterType = fn (pair as (_,t)) => ( #enterType env pair; vars := !vars @ [CoreType t] ), enterFix = fn pair => ( #enterFix env pair; vars := !vars @ [CoreFix pair] ), (* This will only be used if we do `open A' where A contains sub-structures. *) enterStruct = fn (pair as (_,v)) => ( #enterStruct env pair; vars := !vars @ [CoreStruct v] ), enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = #allValNames env }; (* Create a new type ID for each new datatype. Add the structure path to the name. *) fun makeId (eq, isdt, (args, EmptyType), { location, name, description }) = makeLocalTypeId(List.length args, true, eq, isdt, { location = location, name = structPath ^ name, description = description }) | makeId (_, _, (typeVars, decType), { location, name, description }) = makeTypeFunction( { location = location, name = structPath ^ name, description = description }, (typeVars, decType)) (* Process the body and discard the type. *) val _ : types = pass2 (dec, makeId, Env newEnv, lex, fn _ => false); in () end (* pass2Singleton *) fun pass2Dec (str as StructureDec { bindings, typeIdsForDebug, ... }) = pass2StructureDec (str, bindings, typeIdsForDebug) | pass2Dec(Localdec {decs, body, ...}) = pass2Localdec (decs, body) | pass2Dec(CoreLang {dec, vars, ...}) = pass2Singleton (dec, vars) in List.app pass2Dec strs (* Process all the top level entries. *) end (* pass2Struct *) fun pass2Structs ((strs, _): program, lex : lexan, Env globals : env) : unit = let (* Create a local environment to capture declarations. We don't want to add them to the global environment at this point. *) val newValEnv = UTILITIES.searchList() and newTypeEnv = UTILITIES.searchList() and newStrEnv = UTILITIES.searchList() and newSigEnv = UTILITIES.searchList() and newFuncEnv = UTILITIES.searchList() val lookupVal = lookupDefault (#lookup newValEnv) (#lookupVal globals) and lookupType = lookupDefault (#lookup newTypeEnv) (#lookupType globals) and lookupStruct = lookupDefault (#lookup newStrEnv) (#lookupStruct globals) and lookupSig = lookupDefault (#lookup newSigEnv) (#lookupSig globals) and lookupFunct = lookupDefault (#lookup newFuncEnv) (#lookupFunct globals) fun allValNames () = let val v = ref [] val () = #apply newValEnv (fn (s, _) => v := s :: ! v) in !v @ #allValNames globals () end val env = { lookupVal = lookupVal, lookupType = lookupType, lookupFix = #lookupFix globals, lookupStruct = lookupStruct, lookupSig = lookupSig, lookupFunct = lookupFunct, enterVal = #enter newValEnv, enterType = #enter newTypeEnv, enterFix = fn _ => (), (* ?? Already entered by the parser. *) enterStruct = #enter newStrEnv, enterSig = #enter newSigEnv, enterFunct = #enter newFuncEnv, allValNames = allValNames }; (* Create the free identifiers. These are initially Bound but are replaced by Free after the code has been executed and we have the values for the printer and equality functions. They are only actually created in strdecs but functor or signature topdecs in the same program could refer to them. *) local val typeIds = ref [] in fun topLevelId(arity, isVar, eq, isdt, description) = let val idNumber = topLevelIdNumber() val newId = (if isVar then makeBoundIdWithEqUpdate else makeBoundId) (arity, Local{addr = ref ~1, level = ref baseLevel}, idNumber, eq, isdt, description) in typeIds := newId :: ! typeIds; newId end and topLevelIdNumber() = List.length(!typeIds) and makeTopLevelIdEnv() = (* When we process a topdec we create a top-level ID environment which matches any ID numbers we've already created in this "program" to the actual ID. Generally this will be empty. *) let val typeVec = Vector.fromList(List.rev(!typeIds)) in fn n => Vector.sub(typeVec, n) end end (* We have to check that a type does not contain free variables and turn them into unique monotypes if they exist. This is a bit messy. We have to allow subsequent structure declarations to freeze the types (there's an example on p90 of the Definition) but we can't functors to get access to unfrozen free variables because that can break the type system. *) fun checkValueForFreeTypeVariables(name: string, v: values) = checkForFreeTypeVariables(name, valTypeOf v, lex, codeForUniqueId) (* Find all the values in the structure. *) fun checkStructSigForFreeTypeVariables(name: string, s: signatures) = let fun checkEntry(dName: string, dVal: universal, ()) = if tagIs structVar dVal then checkStructSigForFreeTypeVariables(name ^ dName ^ ".", structSignat((tagProject structVar) dVal)) else if tagIs valueVar dVal then checkValueForFreeTypeVariables(name ^ dName, (tagProject valueVar) dVal) else () in univFold(sigTab s, checkEntry, ()) end fun checkVariables (newValEnv, newStrEnv) = ( #apply newValEnv (fn (s: string, v: values) => checkValueForFreeTypeVariables(s, v)); #apply newStrEnv ( fn (n: string, s: structVals) => checkStructSigForFreeTypeVariables(n^".", structSignat s)) ) fun pass2TopDec ([], envs) = List.app checkVariables envs | pass2TopDec (StrDec(str, typeIds)::rest, envs) = let (* Remember the top-level Ids created in this strdec. *) fun makeId(arity, isVar, eq, isdt, desc) = let val newId = topLevelId(arity, isVar, eq, isdt, desc) in typeIds := newId :: ! typeIds; newId end in (* strdec: structure or core-language topdec. *) pass2Struct([str], makeId, topLevelIdNumber, makeTopLevelIdEnv, Env env, lex, location lex, ""); pass2TopDec(rest, if errorOccurred lex then [] else (newValEnv, newStrEnv) :: envs) end | pass2TopDec((topdec as FunctorDec (structList : functorBind list, lno)) :: rest, envs) = let val () = List.app checkVariables envs (* Check previous variables. *) (* There is a restriction that the same name may not be bound twice. As with other bindings functor bindings happen in parallel. DCJM 6/1/00. *) val sEnv = (* The new names. *) noDuplicates (fn (name, _, _) => errorNear(lex, true, fn n => displayTopDec(topdec, n), lno, "Functor " ^ name ^ " has already been bound in this declaration") ); val startTopLevelIDs = topLevelIdNumber() and topLevelEnv = makeTopLevelIdEnv() (* Put the new names into this environment. *) fun pass2FunctorBind ({name, nameLoc, arg = {name = argName, sigStruct = argSig, valRef = argVal}, body, valRef, resIds, line, matchToResult, debugArgVals, debugArgStructs, debugArgTypeConstrs, ...}: functorBind) = let (* When we apply a functor we share type IDs with the argument if they have an ID less than sigMinTypes for the result signature and treat other IDs as generative. If we don't have an explicit result signature or if we have a transparent signature the type IDs in the result are those returned from the body. To keep the argument IDs separate from newly created IDs we start creating local IDs with offsets after the args. *) val typeStamps = ref startTopLevelIDs; val localStamps = ref [] val argumentSignature = sigVal (argSig, startTopLevelIDs, topLevelEnv, Env env, lex, line) (* TODO: The location here is the location of the argument id if there is one. nameLoc is the location of the name of the functor. *) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val resArg = makeLocalStruct (argName, argumentSignature, locations) (* sigVal will have numbered the bound IDs to start at startTopLevelIDs. We need to enter these bound IDs into the local environment but as Selected entries. *) local fun mkId(TypeId{idKind=Bound{ arity, eqType, isDatatype, offset, ...}, description={ location, name, description}, access = Formal addr, ...}) = TypeId{idKind=Bound { arity = arity, offset = offset, eqType = eqType, isDatatype = isDatatype }, description = { location=location, (* Add the structure name to the argument type IDs. *) name=if argName = "" then name else argName^"."^name, description=description }, access = makeSelected(addr, resArg)} | mkId _ = raise InternalError "mkId: Not Bound or not Formal" in (* argIDVector is part of the environment now. *) val argIDVector = Vector.fromList(List.map mkId (sigBoundIds argumentSignature)) val () = typeStamps := !typeStamps + List.length(sigBoundIds argumentSignature) end val startBodyIDs = ! typeStamps; (* After the arguments. *) local (* We also have to apply the above map to the signature. Structures may not have Formal entries for their type IDs so we must map them to the Selected items. Actually, there's a nasty sort of circularity here; we'd like the Selected entries to use structArg as the base but we can't create it until we have its signature...which uses structArg. *) val argSigWithSelected = let val Signatures { tab, name, locations, typeIdMap, ...} = argumentSignature fun mapToSelected n = if n < startTopLevelIDs then topLevelEnv n else Vector.sub(argIDVector, n-startTopLevelIDs) in makeSignature(name, tab, startBodyIDs, locations, composeMaps(typeIdMap, mapToSelected), []) end in val argEnv = makeEnv (makeSignatureTable()); (* Local name space. *) (* We may either have a single named structure in which case that is the argument or effectively a sig...end block in which case we have to open a dummy structure. *) val () = if argName <> "" then (* Named structure. *) let val structArg = Struct { name = argName, signat = argSigWithSelected, access = structAccess resArg, locations=structLocations resArg } in debugArgStructs := [structArg]; #enterStruct argEnv (argName, structArg) end else (* Open the dummy argument. Similar to "open" in treestruct. *) COPIER.openSignature (argSigWithSelected, { enterType = fn (s,v) => (debugArgTypeConstrs := v :: ! debugArgTypeConstrs; #enterType argEnv (s, v)), enterStruct = fn (name, strVal) => let val argStruct = makeSelectedStruct (strVal, resArg, []) in debugArgStructs := argStruct :: ! debugArgStructs; #enterStruct argEnv (name, argStruct) end, enterVal = fn (name, value) => let val argVal = mkSelectedVar (value, resArg, []) in debugArgVals := argVal :: ! debugArgVals; #enterVal argEnv (name, argVal) end }, "") end val () = argVal := SOME resArg (* Now process the body of the functor using the environment of the arguments to the functor and the global environment. *) val envWithArgs = { lookupVal = lookupDefault (#lookupVal argEnv) (#lookupVal env), lookupType = lookupDefault (#lookupType argEnv) (#lookupType env), lookupFix = #lookupFix env, lookupStruct = lookupDefault (#lookupStruct argEnv) (#lookupStruct env), lookupSig = #lookupSig env, lookupFunct = #lookupFunct env, enterVal = #enterVal env, enterType = #enterType env, enterFix = fn _ => (), enterStruct = #enterStruct env, enterSig = #enterSig env, enterFunct = #enterFunct env, allValNames = fn () => (#allValNames argEnv () @ #allValNames env ()) }; local (* Create local IDs for any datatypes declared in the body or any generative functor applications. *) fun newTypeId(arity, isVar, eq, isdt, desc) = let val n = !typeStamps val () = typeStamps := n + 1; val newId = (if isVar then makeBoundIdWithEqUpdate else makeBoundId) (arity, Local{addr = ref ~1, level = ref baseLevel}, n, eq, isdt, desc) in localStamps := newId :: !localStamps; newId end fun typeIdEnv () = let val localIds = Vector.fromList(List.rev(! localStamps)) in fn n => if n < startTopLevelIDs then topLevelEnv n else if n < startBodyIDs then Vector.sub(argIDVector, n-sigMinTypes argumentSignature) else Vector.sub(localIds, n-startBodyIDs) end in val resSig = structValue(body, newTypeId, fn () => !typeStamps, typeIdEnv, Env envWithArgs, lex, line, "") val () = if errorOccurred lex then () else checkStructSigForFreeTypeVariables(name^"().", resSig) (* This counts as a reference. *) val () = markValsAsExported resSig end; local val startRunTimeOffsets = getNextRuntimeOffset resSig fun convertId(n, id as TypeId{idKind=Bound { offset, isDatatype, arity, ...}, description, ...}) = (* Either inherited from the argument or a new type ID. *) makeBoundId (arity, Formal(n + startRunTimeOffsets), offset, isEquality id, isDatatype, description) | convertId (_, id) = id (* Free or TypeFunction. *) val localVector = Vector.fromList(List.rev(!localStamps)) val bodyVec = Vector.mapi convertId localVector val Signatures { name, tab, typeIdMap, locations, ...} = resSig (* These local IDs are included in the bound ID range for the result signature. Since they were created in the functor new instances will be generated when the functor is applied. *) val newBoundIds = Vector.foldr (op ::) [] bodyVec (* Record the ID map for code-generation. *) val () = resIds := Vector.foldri(fn (n, b, r) => { source=b, dest=Vector.sub(bodyVec, n)} :: r) [] localVector fun resTypeMap n = if n < startTopLevelIDs then topLevelEnv n else if n < startBodyIDs then Vector.sub(argIDVector, n-sigMinTypes argumentSignature) else Vector.sub(bodyVec, n-startBodyIDs) in val functorSig = makeSignature(name, tab, startBodyIDs, locations, composeMaps(typeIdMap, resTypeMap), newBoundIds) val () = matchToResult := makeCopyActions functorSig @ makeMatchTypeIds newBoundIds end (* Now make a local functor variable and put it in the name space. Because functors can only be declared at the top level the only way it can be used is if we have functor F(..) = ... functor G() = ..F.. with no semicolon between them. They will then be taken as a single declaration and F will be picked up as a local. *) (* Set the size of the type map. *) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val var = makeFunctor (name, resArg, functorSig, makeLocal (), locations) in #enter sEnv (name, var); valRef := SOME var end in (* Each element in the list is a functor binding. *) List.app pass2FunctorBind structList; (* Put them into the enclosing env. *) #apply sEnv (#enterFunct env); pass2TopDec(rest, []) end (* FunctorDec *) | pass2TopDec((topdec as SignatureDec (structList : sigBind list, lno)) :: rest, envs) = let val () = List.app checkVariables envs (* Check previous variables. *) (* There is a restriction that the same name may not be bound twice. As with other bindings functor bindings happen in parallel. DCJM 6/1/00. *) val sEnv = (* The new names. *) noDuplicates (fn (name, _, _) => errorNear (lex, true, fn n => displayTopDec(topdec, n), lno, "Signature " ^ name ^ " has already been bound in this declaration") ); val startTopLevelIDs = topLevelIdNumber() and topLevelEnv = makeTopLevelIdEnv() fun pass2SignatureBind ({name, nameLoc, sigStruct, line, sigRef, ...}) = let (* Each element in the list is a signature binding. *) val Signatures { tab, typeIdMap, firstBoundIndex, boundIds, ...} = sigVal (sigStruct, startTopLevelIDs, topLevelEnv, Env env, lex, line) val locations = [DeclaredAt nameLoc, SequenceNo (newBindingId lex)] val namedSig = (* Put in the signature name. *) makeSignature(name, tab, firstBoundIndex, locations, typeIdMap, boundIds) in sigRef := namedSig; (* Remember for pass4. *) #enter sEnv (name, namedSig) end in List.app pass2SignatureBind structList; (* Put them into the enclosing env. *) #apply sEnv (#enterSig env) ; pass2TopDec(rest, []) end in pass2TopDec(strs, []); (* Mark any exported values as referenced. *) #apply newValEnv (fn (s: string, valu: values) => ( (* If we have exported the value we need to mark it as a reference. But if the identifier has been rebound we only want to mark the last reference. Looking the identifier up will return only the last reference. *) case #lookup newValEnv s of SOME(Value { references=SOME{exportedRef, ...}, ...}) => exportedRef := true | _ => (); (* Since it's been exported the instance type is the most general type. We can discard any other instance type info since it cannot be more general. *) case valu of Value{ typeOf, instanceTypes=SOME instanceRef, ...} => instanceRef := [#1(generalise typeOf)] | _ => () ) ) end (*pass2Structs *); (* * * Code-generation phase. * * *) (* Generate code from the expressions and arrange to return the results so that "pass4" can find them. *) fun gencodeStructs ((strs, _), lex) = let (* Before code-generation perform an extra pass through the tree to remove unnecessary polymorphism. The type-checking computes a most general type for a value, typically a function, but it is frequently used in situations where a less general type would suffice. *) local fun leastGenStructDec(StructureDec { bindings, ... }) = (* Declarations are independent so can be processed in order. *) List.app (leastGenStructValue o #value) bindings | leastGenStructDec(CoreLang{dec, ...}) = setLeastGeneralTypes(dec, lex) | leastGenStructDec(Localdec{decs, body, ...}) = ( (* Process the body in reverse order then the declaration in reverse. *) List.foldr (fn (d, ()) => leastGenStructDec d) () body; List.foldr (fn (d, ()) => leastGenStructDec d) () decs ) and leastGenStructValue(StructureIdent _) = () | leastGenStructValue(StructDec {alist, ...}) = (* Declarations in reverse order. *) List.foldr (fn (d, ()) => leastGenStructDec d) () alist | leastGenStructValue(FunctorAppl {arg, ...}) = leastGenStructValue arg | leastGenStructValue(LetDec {decs, body, ...}) = ( (* First the body then the declarations in reverse. *) leastGenStructValue body; List.foldr (fn (d, ()) => leastGenStructDec d) () decs ) | leastGenStructValue(SigConstraint {str, ...}) = leastGenStructValue str fun leastGenTopDec(StrDec(aStruct, _)) = leastGenStructDec aStruct | leastGenTopDec(FunctorDec(fbinds, _)) = List.app(fn{body, ...} => leastGenStructValue body) fbinds | leastGenTopDec(SignatureDec _) = () in val () = (* These are independent so can be processed in order. *) List.app leastGenTopDec strs end (* Apply a function which returns a pair of codelists to a list of structs. This now threads the debugging environment through the functions so the name is no longer really appropriate. DCJM 23/2/01. *) fun mapPair (_: 'a * debuggerStatus -> {code: codeBinding list, debug: debuggerStatus}) [] debug = { code = [], debug = debug } | mapPair f (h::t) debug = let (* Process the list in order. In the case of a declaration sequence later entries in the list may refer to earlier ones. *) val this = f (h, debug); val rest = mapPair f t (#debug this); in (* Return the combined code. *) { code = #code this @ #code rest, debug = #debug rest } end; fun applyMatchActions (code : codetree, actions, sourceIds, mkAddr, level) = let (* Generate a new structure which will match the given signature. A structure is represented by a vector of entries, and its signature is a map which gives the offset in the vector of each value. When we match a signature the candidate structure will in general not have its entries in the same positions as the target. We have to construct a new structure from it with the entries in the correct positions. In most cases the optimiser will simplify this code considerably so there is no harm in using a general mechanism. Nevertheless, we check for the case when we are building a structure which is a direct copy of the original and use the original code if possible. *) fun matchSubStructure (code: codetree, actions: structureMatch): codetree * bool = let val decs = multipleUses (code, fn () => mkAddr 1, level) (* First sort by the address in the destination vector. This previously used Misc.quickSort but that results in a lot of memory allocation for the partially sorted lists. Since we should have exactly N items the range checking in "update" and the "valOf" provide additional checking that all the items are present. *) val a = Array.array(List.length actions, NONE) val () = List.app(fn (i, action) => Array.update(a, i, SOME action)) actions val sortedActions = Array.foldri (fn (n, a, l) => (n, valOf a) :: l) [] a fun applyAction ((destAddr, StructureMatch { sourceStructure, contentsMatch }), (otherCode, allSame)) = let val access = structAccess sourceStructure; (* Since these have come from a signature we might expect all the entries to be "formal". However if the structure is global the entries in the signature may be global, and if the structure is in a "struct .. end" it may be local. *) val (code, equalDest) = case access of Formal sourceAddr => (mkInd (sourceAddr, #load decs level), sourceAddr=destAddr) | _ => (codeStruct (sourceStructure, level), false) val (resCode, isSame) = matchSubStructure (code, contentsMatch: structureMatch) in (resCode::otherCode, allSame andalso equalDest andalso isSame) end | applyAction ((destAddr, ValueMatch { sourceValue as Value{typeOf=sourceTypeOf, name, ...}, coercion, targetType }), (otherCode, allSame)) = let (* Set up a new type variable environment in case this needs to create type values to match a polymorphic source value to a monomorphic context. *) val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) (* If the entry is from a signature select from the code. Apply any coercion from constructors to values. *) fun loadCode localLevel = case sourceValue of Value{access=Formal svAddr, ...} => ( case coercion of NoCoercion => mkInd (svAddr, #load decs localLevel) | ExceptionToValue => let fun loadEx l = mkInd (svAddr, #load decs l) in case getFnArgType sourceTypeOf of NONE => mkTuple [loadEx localLevel, mkStr name, CodeZero, codeLocation nullLocation] | SOME _ => let val nLevel = newLevel level in mkProc (mkTuple[loadEx nLevel, mkStr name, mkLoadArgument 0, codeLocation nullLocation], 1, "", getClosure nLevel, 0) end end | ConstructorToValue => (* Extract the injection function/nullary value. *) ValueConstructor.extractInjection(mkInd (svAddr, #load decs localLevel)) ) | _ => ( case coercion of NoCoercion => codeVal (sourceValue, localLevel, typeVarMap, [], lex, location nullLex) | ExceptionToValue => codeExFunction(sourceValue, localLevel, typeVarMap, [], lex, location nullLex) | ConstructorToValue => mkInd(1, codeVal (sourceValue, localLevel, typeVarMap, [], lex, location nullLex)) ) local val (copiedCandidate, sourceVars) = generalise sourceTypeOf val sourceVars = List.filter (fn {equality, ...} => not justForEqualityTypes orelse equality) sourceVars val () = case unifyTypes(copiedCandidate, targetType) of NONE => () | SOME report => (print(name ^ ":\n"); PolyML.print report; raise InternalError "unifyTypes failed in pass 3") val filterTypeVars = List.filter (fn tv => not justForEqualityTypes orelse tvEquality tv) val destVars = filterTypeVars (getPolyTypeVars(targetType, fn _ => NONE)) (* If we have the same polymorphic variables in the source and destination we don't need to apply a coercion. N.B. We may have the same number of polymorphic variables but still have to apply it if we have, for example, fun f x => x matching val f: 'a list -> 'a list. *) fun equalEntry({value=source, ...}, destTv) = case eventual source of TypeVar sourceTv => sameTv(sourceTv, destTv) | _ => false in val (polyCode, justCopy) = if ListPair.allEq equalEntry (sourceVars, destVars) then (loadCode(level) (* Nothing to do. *), (* We're just copying if this is the same address. *) case sourceValue of Value{access=Formal sourceAddr, ...} => destAddr=sourceAddr | _ => false) else if null destVars (* Destination is monomorphic. *) then (applyToInstance(sourceVars, level, typeVarMap, loadCode), false) else let open TypeVarMap val destPolymorphism = List.length destVars val localLevel = newLevel level val argAddrs = List.tabulate(destPolymorphism, fn n => fn l => mkLoadParam(n, l, localLevel)) val argMap = ListPair.zipEq(destVars, argAddrs) val addrs = ref 0 fun mkAddrs n = ! addrs before (addrs := !addrs+n) val newTypeVarMap = extendTypeVarMap(argMap, mkAddrs, localLevel, typeVarMap) (* Apply the source to the parameters provided by the destination. In almost all cases we will be removing polymorphism here but it is possible to add polymorphism through type definitions of the form type 'a t = int. *) val application = applyToInstance(sourceVars, localLevel, newTypeVarMap, loadCode) in (mkProc( mkEnv(getCachedTypeValues newTypeVarMap, application), destPolymorphism, name ^ "(P)", getClosure localLevel, !addrs), false) end end in (mkEnv(TypeVarMap.getCachedTypeValues typeVarMap, polyCode) :: otherCode, (* We can use the original structure if nothing else has changed, the offset in the destination structure is the same as the offset in the source and we don't have any coercion. *) allSame andalso justCopy andalso (case coercion of NoCoercion => true | _ => false)) end | applyAction ((_, TypeIdMatch { sourceIdNo, isEquality }), (otherCode, _)) = (* Get the corresponding source ID. *) (codeAccess(sourceIds(sourceIdNo, isEquality), level) :: otherCode, false) val (codeList, isAllEq) = List.foldr applyAction ([], true) sortedActions in if isAllEq then (code, true) else (mkEnv (#dec decs, mkTuple codeList), false) end in #1 (matchSubStructure (code, actions)) end (* applyMatchActions *) (* If we are declaring a structure with an opaque signature we need to create the run-time IDs for newly generated IDs. *) fun loadOpaqueIds (opaqueIds, mkAddr, level) = let fun decId { dest as TypeId{idKind=dKind, ...}, source } = let val { addr=idAddr, level=idLevel } = vaLocal(idAccess dest) val addr = mkAddr 1; val () = idAddr := addr and () = idLevel := level val isDatatype = case dKind of Bound{isDatatype, ...} => isDatatype | _ => false val idCode = codeGenerativeId{source=source, isEq=isEquality dest, isDatatype=isDatatype, mkAddr=mkAddr, level=level} in mkDec(addr, idCode) end in List.map decId opaqueIds end (* Code-generate a structure value. *) fun structureCode (str, strName, debugEnv, mkAddr, level: level): { code: codeBinding list, load: codetree } = case str of FunctorAppl {arg, valRef = ref functs, argIds=ref argIds, resIds=ref resIds, matchToArgument=ref matchToArgument, ...} => let val {code = argCodeSource, load = argLoadSource, ...} = structureCode (arg, strName, debugEnv, mkAddr, level) (* Match the actual argument to the required arguments. *) fun getMatchedId(n, isEq) = case #source(List.nth (argIds, n)) of id as TypeId{idKind=TypeFn _, ...} => (* Have to generate a function here. *) Global(codeGenerativeId{source=id, isEq=isEq, isDatatype=false(*??*), mkAddr=mkAddr, level=level}) | id => idAccess id val argCode = applyMatchActions(argLoadSource, matchToArgument, getMatchedId, mkAddr, level) (* To produce the generative type IDs we need to save the result vector returned by the functor application and then generate the new type IDs from the IDs in it. To make valid source IDs we have to turn the Formal entries in the signature into Selected entries. *) val resAddr = mkAddr 1 local val dummyResStruct = makeLocalStruct("", undefinedSignature, []) (* Dummy structure. *) val resl = vaLocal (structAccess dummyResStruct); val () = #addr resl := resAddr; val () = #level resl := level fun mkSelected { source = TypeId{idKind, access = Formal addr, description}, dest } = { source = TypeId{idKind=idKind, access = makeSelected(addr, dummyResStruct), description = description }, dest = dest } | mkSelected _ = raise InternalError "makeSelected: Not Bound or not Formal" val resultIds = List.map mkSelected resIds in val loadIds = loadOpaqueIds(resultIds, mkAddr, level) end val functorCode = case functs of SOME(Functor{access=functorAccess, ...}) => codeAccess (functorAccess, level) | NONE => raise InternalError "FunctorAppl: undefined" in (* Evaluate the functor. *) { code = argCodeSource @ (mkDec(resAddr, mkEval (functorCode, [argCode])) :: loadIds), load = mkLoadLocal resAddr } end | StructureIdent {valRef = ref v, ...} => { code = [], load = codeStruct (valOf v, level) } | LetDec {decs, body = localStr, ...} => let (* let strdec in strexp end *) (* Generate the declarations but throw away the loads. *) val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) (* TODO: Get the debug environment correct here. *) fun processBody(decs, _, debugEnv, _, _, _) = (decs, debugEnv) val (code, debug) = codeStrdecs(strName, decs, debugEnv, mkAddr, level, typeVarMap, [], processBody) val {code = bodyCode, load = bodyLoad } = structureCode (localStr, strName, debug, mkAddr, level) in { code = TypeVarMap.getCachedTypeValues typeVarMap @ code @ bodyCode, load = bodyLoad } end | StructDec {alist, matchToResult=ref matchToResult, ...} => let val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) fun processBody(decs, _, debugEnv, _, _, _) = (decs: codeBinding list, debugEnv) val (coded, _(*debugEnv*)) = codeStrdecs(strName, alist, debugEnv, mkAddr, level, typeVarMap, [], processBody) (* We match to the dummy signature here. If there is a signature outside we will match again. This results in double copying but that should all be sorted out by the optimiser. *) val loads = List.rev(List.foldl(fn (s, l) => codeLoadStrdecs(s, level) @ l) [] alist) in (* The result is a block containing the declarations and code to load the results. *) { code = TypeVarMap.getCachedTypeValues typeVarMap @ coded, load = applyMatchActions (mkTuple loads, matchToResult, fn _ => raise Subscript, mkAddr, level) } end | SigConstraint { str, opaqueIds=ref opaqueIds, matchToConstraint = ref matchToConstraint,... } => let val {code = strCode, load = strLoad, ...} = structureCode (str, strName, debugEnv, mkAddr, level) val tempDecs = multipleUses (strLoad, fn () => mkAddr 1, level); val ids = loadOpaqueIds(opaqueIds, mkAddr, level) in { code = strCode @ #dec tempDecs @ ids, load = applyMatchActions (#load tempDecs level, matchToConstraint, fn _ => raise Subscript, mkAddr, level) } end (* structureCode *) (* We need to generate code for the declaration and then code to load the results into a tuple. *) and codeStrdecs (strName, [], debugEnv, mkAddr, level, typeVarMap, leadingDecs, processBody) = processBody(leadingDecs: codeBinding list, strName, debugEnv, mkAddr, level, typeVarMap) (* Do the continuation. *) | codeStrdecs (strName, (StructureDec { bindings = structList, typeIdsForDebug = ref debugIds, ... }) :: sTail, debugEnv, mkAddr, level, _(*typeVarMap*), leadingDecs, processBody) = let fun codeStructureBind ({name, value, valRef, ...}: structBind, debug) = let val structureVal = valOf(! valRef) val sName = strName ^ name ^ "." val {code = strCode, load = strLoad, ...} = structureCode (value, sName, debug, mkAddr, level) val addr = mkAddr 1 val var = vaLocal (structAccess structureVal) val () = #addr var := addr; val () = #level var := level; val (debugDecs, newDebug) = makeStructDebugEntries([structureVal], debugEnv, level, lex, mkAddr) in (* Get the code and save the result in the variable. *) { code = strCode @ [mkDec (addr, strLoad)] @ debugDecs : codeBinding list, debug = newDebug } end val { code: codeBinding list, debug = strDebug } = (* Code-generate each declaration. *) mapPair codeStructureBind structList debugEnv val (debugIdDecs, idDebug) = makeTypeIdDebugEntries(debugIds, strDebug, level, lex, mkAddr) (* A structure binding may introduce new type IDs either directly or by way of opaque signatures or functor application. Ideally we'd add these using something like markTypeConstructors but for now just start a new environment. *) (* TODO: Check this. It looks as though TypeVarMap.getCachedTypeValues newTypeVarMap always returns the empty list. *) val newTypeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) val (codeRest, debugRest) = codeStrdecs (strName, sTail, idDebug, mkAddr, level, newTypeVarMap, [], processBody) in (leadingDecs @ code @ debugIdDecs @ TypeVarMap.getCachedTypeValues newTypeVarMap @ codeRest, debugRest) end | codeStrdecs (strName, (Localdec {decs, body, ...}) :: sTail, debugEnv, mkAddr, level, typeVarMap, leadingDecs, processBody) = let fun processTail(previousDecs, newStrName, newDebugEnv, newMkAddr, newLevel, newTypeVarMap) = let (* TODO: Get the debug environment right here. *) in codeStrdecs (newStrName, sTail, newDebugEnv, newMkAddr, newLevel, newTypeVarMap, previousDecs, processBody) end fun processBody(previousDecs, newStrName, newDebugEnv, newMkAddr, newLevel, newTypeVarMap) = let (* TODO: Get the debug environment right here. *) in codeStrdecs (newStrName, body, newDebugEnv, newMkAddr, newLevel, newTypeVarMap, previousDecs, processTail) end in (* Process the declarations then the body and then the tail. *) codeStrdecs (strName, decs, debugEnv, mkAddr, level, typeVarMap, leadingDecs, processBody) end | codeStrdecs (strName, (CoreLang {dec, ...}) :: sTail, debugEnv, mkAddr, level, typeVarMap, leadingDecs, processBody) = let fun processTail(newCode, newDebugEnv, newTypeVarMap) = codeStrdecs (strName, sTail, newDebugEnv, mkAddr, level, newTypeVarMap, newCode, processBody) val (code, debug) = gencode (dec, lex, debugEnv, level, mkAddr, typeVarMap, strName, processTail) in (leadingDecs @ code, debug) end (* end codeStrdecs *) (* Generate a list of load instructions to build the result tuple. *) and codeLoadStrdecs(StructureDec { bindings, ... }, _) = let fun loadStructureBind ({valRef = ref v, ...}, loads) = let val { addr=ref addr, ...} = vaLocal (structAccess(valOf v)) in mkLoadLocal addr :: loads end in (* Code-generate each declaration. *) List.foldl loadStructureBind [] bindings end | codeLoadStrdecs(Localdec {body, ...}, level) = List.foldl (fn(s, l) => codeLoadStrdecs(s, level) @ l) [] body | codeLoadStrdecs(CoreLang {vars=ref vars, ...}, level) = let (* Load each variable, exception and type ID (i.e. equality & print function) that has been declared. Since value declarations may be mutually recursive we have to code-generate the declarations first then return the values. *) val typeVarMap = TypeVarMap.defaultTypeVarMap(fn _ => raise InternalError "typeVarMap", level) fun loadVals (CoreValue v, rest) = codeVal (v, level, typeVarMap, [], nullLex, location nullLex) :: rest | loadVals (CoreStruct s, rest) = codeStruct (s, level) :: rest | loadVals (CoreType (TypeConstrSet(_, tcConstructors)), rest) = (* Type IDs are handled separately but we need to load the value constructors if this is a datatype. This is really only because of datatype replication where we need to be able to get the value constructors from the datatype. *) List.rev(List.map( fn v => codeVal (v, level, typeVarMap, [], nullLex, location nullLex)) tcConstructors) @ rest | loadVals (_, rest) = rest in List.foldl loadVals [] vars end fun codeTopdecs (StrDec(str, _), debugEnv, mkAddr) = let open TypeVarMap val level = baseLevel val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) val (code, debug) = codeStrdecs("", [str], debugEnv, mkAddr, level, typeVarMap, [], fn(decs, _, debugEnv, _, _, _) => (decs, debugEnv)) in { code = TypeVarMap.getCachedTypeValues typeVarMap @ code, debug = debug } end | codeTopdecs (FunctorDec (structList : functorBind list, _), debugEnv, mkOuterAddr) = let fun codeFunctorBind ({name, arg = {valRef=argValRef, ...}, body, valRef, resIds=ref resIds, matchToResult=ref matchToResult, debugArgVals, debugArgStructs, debugArgTypeConstrs, ...}: functorBind, debugEnv) = let val argVal = valOf(! argValRef) local (* Separate context for each functor binding. *) val address = ref 1 in fun mkAddr n = !address before (address := ! address+n) val level = newLevel baseLevel (* Inside the functor *) end val arg = vaLocal (structAccess argVal) (* Create a local binding for the argument. This allows the new variable to be a local. *) val localAddr = mkAddr 1 val () = #addr arg := localAddr val () = #level arg := level val func = valOf(!valRef) local (* These are the entries for the functor arguments. *) val (typeIdDebugDecs, typeIdDebugEnv) = makeTypeIdDebugEntries(sigBoundIds (structSignat argVal), debugEnv, level, lex, mkAddr) val (structDebugDecs, structDebugEnv) = makeStructDebugEntries(! debugArgStructs, typeIdDebugEnv, level, lex, mkAddr) val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, level) (* ???Check??? *) val (valDebugDecs, valDebugEnv) = makeValDebugEntries(! debugArgVals, structDebugEnv, level, lex, mkAddr, typeVarMap) val (typeDebugDecs, typeDebugEnv) = makeTypeConstrDebugEntries(! debugArgTypeConstrs, valDebugEnv, level, lex, mkAddr) in val fBindDebugDecs = typeIdDebugDecs @ structDebugDecs @ valDebugDecs @ typeDebugDecs val fBindDebugEnv = typeDebugEnv end (* Process the body and make a function out of it. *) local val {code = strCode, load = strLoad, ...} = structureCode (body, name ^ "().", fBindDebugEnv, mkAddr, level) fun getIds(n, isEq) = case #source(List.nth(resIds, n)) of id as TypeId{idKind=TypeFn _, ...} => (* Have to generate a function here. *) Global(codeGenerativeId{source=id, isEq=isEq, isDatatype=false (*??*), mkAddr=mkAddr, level=level}) | id => idAccess id val matchedCode = applyMatchActions(strLoad, matchToResult, getIds, mkAddr, level) in val functorCode = (* The function that implements the functor. *) (if getParameter inlineFunctorsTag (debugParams lex) then mkMacroProc else mkProc) (mkEnv(mkDec(localAddr, mkLoadArgument 0) :: (fBindDebugDecs @ strCode), matchedCode), 1, name, getClosure level, mkAddr 0) end (* Set the address of this variable. Because functors can only be declared at the top level the only way it can be used is if we have functor F(..) = ... functor G() = ..F.. with no semicolon between them. They will then be taken as a single declaration and F will be picked up as a local. *) val addr = mkOuterAddr 1 val Functor { access, ...} = func val var = vaLocal access val () = #addr var := addr; val () = #level var := baseLevel(* Top level *); in { code = [mkDec (addr, functorCode)], debug = debugEnv } end in mapPair codeFunctorBind structList debugEnv end | codeTopdecs(SignatureDec _, debugEnv, _) = { code = [], debug = debugEnv } and loadTopdecs (StrDec(str, ref typeIds)) = let val level = baseLevel val load = codeLoadStrdecs(str, level) (* Load all the IDs created in this topdec even if they're not directly referenced. *) fun loadIds id = codeId(id, level) in load @ List.rev(List.map loadIds typeIds) end | loadTopdecs (FunctorDec (structList, _)) = let fun loadFunctorBind ({valRef, ...}) = let val Functor{access, ...} = valOf(! valRef) val {addr = ref addr, ...} = vaLocal access in mkLoadLocal addr end in List.rev(List.map loadFunctorBind structList) end | loadTopdecs(SignatureDec _) = [] local (* Separate context for each top level item. *) val address = ref 0 in fun mkAddr n = !address before (address := ! address+n) end val coded = (* Process top level list. *) mapPair (fn (str, debug) => codeTopdecs (str, debug, mkAddr)) strs initialDebuggerStatus val loaded = List.foldl (fn (s, l) => loadTopdecs s @ l) [] strs in (* The result is code for a vector containing the results of the declarations which pass4 can use to pull out the values after the code has been run. *) (mkEnv (#code coded, mkTuple(List.rev loaded)), mkAddr 0) end (* gencodeStructs *); (* Once the code has been executed the declarations must be added to the global scope. The type and infix status environments have already been processed so they can be dumped into the global environment unchanged. The values and exceptions, however, have to be picked out the compiled code. Note: The value constructors are actually produced at the same time as their types but are dumped out by enterGlobals. *) (* This previously only processed declarations which required some code-generation and evaluation (structures, values and functors). It now includes types, signatures and fixity so that all declarations can be printed in the order of declaration. DCJM 6/6/02. *) fun pass4Structs (results, (strs: topdec list, _)) = let fun extractStruct(str, mapTypeIds, args as (addr, { fixes, values, structures, signatures, functors, types } )) = case str of StructureDec { bindings, ... } => let fun extractStructureBind ({name, valRef, line, ...}: structBind, (addr, structures)) = let val structCode = mkInd (addr, results) (* We need to replace type IDs with their Global versions. *) local val Struct{signat=Signatures { name, locations, typeIdMap, tab, ...}, ...} = valOf(!valRef) in val resultSig = makeSignature(name, tab, 0, locations, composeMaps(typeIdMap, mapTypeIds), []) end in (* Make a global structure. *) (addr + 1, (name, makeGlobalStruct (name, resultSig, structCode, [DeclaredAt line])) :: structures) end val (newAddr, newstructures) = List.foldl extractStructureBind (addr, structures) bindings in (newAddr, { structures=newstructures, functors=functors, signatures=signatures, fixes=fixes, values=values, types=types }) end | Localdec {body, ...} => List.foldl (fn(s, a) => extractStruct(s, mapTypeIds, a))args body (* Value, exception or type declaration at the top level. *) | CoreLang {vars=ref vars, ...} => let (* Enter the values and exceptions. *) (* Copy the types to replace the type IDs with the versions with Global access. *) fun replaceTypes t = let fun copyId(TypeId{idKind=Bound{ offset, ...}, ...}) = SOME(mapTypeIds offset) | copyId _ = NONE fun replaceTypeConstrs tcon = copyTypeConstr (tcon, copyId, fn x => x, fn s => s) in copyType(t, fn tv=>tv, replaceTypeConstrs) end fun makeDecs (CoreValue(Value{class, name, typeOf, locations, access, ...}), (addr, { fixes, values, structures, signatures, functors, types } )) = let (* Extract the value from the result vector except if we have a type-dependent function e.g. PolyML.print where we must use the type-dependent version. *) val newAccess = case access of Overloaded _ => access | _ => Global(mkInd (addr, results)) (* Replace the typeIDs. *) val newVal = Value{class=class, name=name, typeOf=replaceTypes typeOf, access=newAccess, locations=locations, references = NONE, instanceTypes=NONE} in (addr+1, { fixes=fixes, values=(name, newVal) :: values, structures=structures, signatures=signatures, functors=functors, types=types } ) end | makeDecs (CoreStruct dec, (addr, {fixes, values, structures, signatures, functors, types})) = (* If we open a structure we've created in the same "program" we may have a non-global substructure. We have to process any structures and also map any type IDs. *) let local val Signatures { name, locations, typeIdMap, tab, ...} = structSignat dec in val resultSig = makeSignature(name, tab, 0, locations, composeMaps(typeIdMap, mapTypeIds), []) end val strName = structName dec val newStruct = Struct { name = strName, signat = resultSig, access = Global(mkInd (addr, results)), locations = structLocations dec } in (addr+1, { fixes=fixes, values=values, structures=(strName, newStruct) :: structures, signatures=signatures, functors=functors, types=types } ) end | makeDecs (CoreFix pair, (addr, {fixes, values, structures, signatures, functors, types})) = (addr, { fixes=pair :: fixes, values=values, structures=structures, signatures=signatures, functors=functors, types=types } ) | makeDecs (CoreType (TypeConstrSet(tc, constrs)), (addr, {fixes, values, structures, signatures, functors, types})) = let fun loadConstr(Value{class, name, typeOf, locations, ...}, (addr, others)) = let val newAccess = Global(mkInd (addr, results)) (* Don't bother replacing the type ID here. fullCopyDatatype will do it. *) val newConstr = Value{class=class, name=name, typeOf=typeOf, access=newAccess, locations=locations, references = NONE, instanceTypes=NONE} in (addr+1, others @ [newConstr]) end val (nextAddr, newConstrs) = List.foldl loadConstr (addr, []) constrs val copiedTC = fullCopyDatatype(TypeConstrSet(tc, newConstrs), mapTypeIds, "") val newName = #second(splitString(tcName tc)) in (nextAddr, { fixes=fixes, values=values, structures=structures, signatures=signatures, functors=functors, types=(newName, copiedTC) :: types } ) end in List.foldl makeDecs args vars end fun extractTopDec(str, (addr, env as { fixes, values, structures, signatures, functors, types }, nIds, mapPrevTypIds)) = case str of StrDec(str, ref typeIds) => let (* Create new Free IDs for top-level IDs. *) fun loadId(TypeId{idKind=Bound{eqType, arity, ...}, description, ...}, (n, ids)) = let val newId = makeFreeId(arity, Global(mkInd(n, results)), pling eqType, description) in (n+1, newId :: ids) end | loadId _ = raise InternalError "Not Bound" (* Construct the IDs and reverse the list so the first ID is first*) val (newAddr, mappedIds) = List.foldl loadId (addr, []) typeIds val idMap = Vector.fromList mappedIds fun mapTypeIds n = if n < nIds then mapPrevTypIds n else Vector.sub(idMap, n-nIds) val (resAddr, resEnv) = extractStruct (str, mapTypeIds, (newAddr, env)) in (resAddr, resEnv, nIds + Vector.length idMap, mapTypeIds) end | FunctorDec (structList : functorBind list, _) => let (* Get the functor values. *) fun extractFunctorBind ({name, valRef, ...}: functorBind, (addr, funcs)) = let val code = mkInd (addr, results) val func = valOf(!valRef) (* We need to convert any references to typeIDs created in strdecs in the same "program". *) (* The result signature shares with the argument so we only copy IDs less than the min for the argument signature. *) val Functor {result=fnResult, name=functorName, locations=functorLocations, arg=fnArg as Struct{name = fnArgName, signat=fnArgSig, ...}, ...} = func local val Signatures { name, tab, typeIdMap, boundIds, firstBoundIndex, locations, ... } = fnArgSig fun newMap n = if n < firstBoundIndex then mapPrevTypIds n else List.nth(boundIds, n-firstBoundIndex) in val functorArgSig = makeSignature(name, tab, firstBoundIndex, locations, composeMaps(typeIdMap, newMap), boundIds) val copiedArg = Struct{name=fnArgName, signat=functorArgSig, access=structAccess fnArg, locations=structLocations fnArg} end local val Signatures { name, tab, typeIdMap, boundIds, firstBoundIndex, locations, ... } = fnResult val Signatures { boundIds=argBoundIds, firstBoundIndex=argMinTypes, ...} = functorArgSig fun newMap n = if n >= firstBoundIndex then List.nth(boundIds, n-firstBoundIndex) else if n >= argMinTypes then case List.nth(argBoundIds, n-argMinTypes) of (* Add the argument structure name onto the name of type IDs in the argument. *) TypeId{ access, idKind, description={location, name, description}} => TypeId { access=access, idKind=idKind, description= { location=location, description=description, name=if fnArgName = "" then name else fnArgName^"."^name } } else mapPrevTypIds n in val functorSigResult = makeSignature(name, tab, firstBoundIndex, locations, composeMaps(typeIdMap, newMap), boundIds) end val funcTree = makeFunctor(functorName, copiedArg, functorSigResult, makeGlobal code, functorLocations) in (addr + 1, (name, funcTree) :: funcs) end val (newAddr, newfunctors ) = List.foldl extractFunctorBind (addr, functors) structList in (newAddr, { functors=newfunctors, fixes=fixes, values=values, signatures=signatures, structures=structures, types=types }, nIds, mapPrevTypIds) end | SignatureDec (structList : sigBind list, _) => let (* We need to convert any references to typeIDs created in strdecs in the same "program". *) fun copySignature fnSig = let val Signatures { name, tab, typeIdMap, firstBoundIndex, boundIds, locations, ... } = fnSig fun mapIDs n = if n < firstBoundIndex then mapPrevTypIds n else List.nth(boundIds, n-firstBoundIndex) in makeSignature(name, tab, firstBoundIndex, locations, composeMaps(typeIdMap, mapIDs), boundIds) end val newSigs = List.map (fn ({sigRef=ref s, name, ...}: sigBind) => (name, copySignature s)) structList in (addr, { fixes=fixes, values=values, structures=structures, signatures=newSigs @ signatures, functors=functors, types=types }, nIds, mapPrevTypIds) end val empty = { fixes=[], values=[], structures=[], functors=[], types=[], signatures=[] } val (_, result, _, _) = List.foldl extractTopDec (0, empty, 0, fn _ => raise Subscript) strs; (* The entries in "result" are in reverse order of declaration and may contain duplicates. We need to reverse and filter the lists so that we end up with the lists in order and with duplicates removed. *) fun revFilter result [] = result | revFilter result ((nameValue as (name, _)) ::rest) = let (* Remove any entries further down the list if they have the same name. *) val filtered = List.filter (fn (n,_) => name <> n) rest in revFilter (nameValue :: result) filtered end in { fixes=revFilter [] (#fixes result), values=revFilter [] (#values result), structures=revFilter [] (#structures result), functors=revFilter [] (#functors result), types=revFilter [] (#types result), signatures=revFilter [] (#signatures result) } end (* pass4Structs *) structure Sharing = struct type structDec = structDec type structValue = structValue type structVals = structVals type types = types type parsetree = parsetree type lexan = lexan type pretty = pretty type values = values type typeConstrSet = typeConstrSet type codetree = codetree type signatures = signatures type functors = functors type env = env type sigBind = sigBind and functorBind = functorBind and structBind = structBind type machineWord = machineWord type fixStatus = fixStatus type topdec = topdec type program = program type typeParsetree = typeParsetree type formalArgStruct= formalArgStruct type ptProperties = ptProperties type structSigBind = structSigBind type typeVarForm = typeVarForm type sigs = sigs end end; polyml-5.7.1/mlsource/MLCompiler/DEBUGGERSIG.sml0000644000175000017500000001036713204034553020106 0ustar daviddavid(* Title: Source level debugger for Poly/ML Author: David Matthews Copyright (c) David Matthews 2000, 2009, 2014-15 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature DEBUGGERSIG = sig type types type values type machineWord type fixStatus type structVals type typeConstrSet type signatures type functors type locationProp type typeId type level type lexan type codeBinding type codetree type typeVarMap type environEntry type location = { file: string, startLine: FixedInt.int, startPosition: FixedInt.int, endLine: FixedInt.int, endPosition: FixedInt.int } val envTypeId: typeId -> environEntry type breakPoint = bool ref (* Functions to make debug entries for various values, types etc. *) type debuggerStatus val initialDebuggerStatus: debuggerStatus val makeValDebugEntries: values list * debuggerStatus * level * lexan * (int -> int) * typeVarMap -> codeBinding list * debuggerStatus val makeTypeConstrDebugEntries: typeConstrSet list * debuggerStatus * level * lexan * (int -> int) -> codeBinding list * debuggerStatus val makeStructDebugEntries: structVals list * debuggerStatus * level * lexan * (int->int) -> codeBinding list * debuggerStatus val makeTypeIdDebugEntries: typeId list * debuggerStatus * level * lexan * (int->int) -> codeBinding list * debuggerStatus val updateDebugLocation: debuggerStatus * location * lexan -> codeBinding list * debuggerStatus (* Create a local break point and check the global and local break points. *) val breakPointCode: breakPoint option ref * location * level * lexan * (int->int) -> codeBinding list (* Add debugging calls on entry and exit to a function. *) val wrapFunctionInDebug: (debuggerStatus -> codetree) * string * codetree * types * types * location * debuggerStatus * level * lexan * (int -> int) -> codetree (* Exported functions that appear in PolyML.DebuggerInterface. *) type debugState (* The run-time state. *) val makeValue: debugState -> string * types * locationProp list * machineWord -> values and makeException: debugState -> string * types * locationProp list * machineWord -> values and makeConstructor: debugState -> string * types * bool * int * locationProp list * machineWord -> values and makeAnonymousValue: debugState -> types * machineWord -> values val makeStructure: debugState -> string * signatures * locationProp list * machineWord -> structVals and makeTypeConstr: debugState -> typeConstrSet -> typeConstrSet val setOnEntry: (string * PolyML.location -> unit) option -> unit and setOnExit: (string * PolyML.location -> unit) option -> unit and setOnExitException: (string * PolyML.location -> exn -> unit) option -> unit and setOnBreakPoint: (PolyML.location * bool ref -> unit) option -> unit structure Sharing: sig type types = types type values = values type machineWord = machineWord type fixStatus = fixStatus type structVals = structVals type typeConstrSet = typeConstrSet type signatures = signatures type functors = functors type locationProp = locationProp type environEntry = environEntry type typeId = typeId type level = level type lexan = lexan type codeBinding = codeBinding type codetree = codetree type typeVarMap = typeVarMap type debuggerStatus = debuggerStatus end end; polyml-5.7.1/mlsource/MLCompiler/BUILTINS.sml0000644000175000017500000001013013204034553017574 0ustar daviddavid(* Signature for built-in functions Copyright David C. J. Matthews 2016 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) signature BUILTINS = sig datatype testConditions = TestEqual (* No TestNotEqual because that is always generated with "not" *) | TestLess | TestLessEqual | TestGreater | TestGreaterEqual datatype arithmeticOperations = ArithAdd | ArithSub | ArithMult | ArithQuot | ArithRem | ArithDiv | ArithMod datatype logicalOperations = LogicalAnd | LogicalOr | LogicalXor datatype shiftOperations = ShiftLeft | ShiftRightLogical (* Logical shift - zero added bits. *) | ShiftRightArithmetic (* Arithmetic shift - add the sign bit. *) datatype unaryOps = NotBoolean (* true => false; false => true - XOR *) | IsTaggedValue (* Test the tag bit. *) | MemoryCellLength (* Return the length of a memory cell (heap object) *) | MemoryCellFlags (* Return the flags byte of a memory cell (heap object) *) | ClearMutableFlag (* Remove the mutable flag from the flags byte *) | AtomicIncrement | AtomicDecrement | AtomicReset (* Set a value to (tagged) zero atomically. *) | LongWordToTagged (* Convert a LargeWord.word to a Word.word or FixedInt.int. *) | SignedToLongWord (* Convert a tagged value to a LargeWord with sign extension. *) | UnsignedToLongWord (* Convert a tagged value to a LargeWord without sign extension. *) | RealAbs (* Set the sign bit of a real to positive. *) | RealNeg (* Invert the sign bit of a real. *) | FloatFixedInt (* Convert an integer value into a floating point value. *) and binaryOps = (* Compare two words and return the result. This is used for both word values (isSigned=false) and fixed precision integer (isSigned=true). Tests for (in)equality can also be done on pointers in which case this is pointer equality. *) WordComparison of { test: testConditions, isSigned: bool } (* Fixed precision int operations. These may raise Overflow. *) | FixedPrecisionArith of arithmeticOperations (* Arithmetic operations on word values. These do not raise Overflow. *) | WordArith of arithmeticOperations (* Load a word at a specific offset in a heap object. If this is immutable and the arguments are constants it can be folded at compile time since the result will never change. *) | WordLogical of logicalOperations (* Logical operations on words. *) | WordShift of shiftOperations (* Shift operations on words. *) (* Allocate a heap cell for byte data. The first argument is the number of words (not bytes) needed. The second argument is the "flags" byte which must include F_bytes and F_mutable. The new cell is not initialised. *) | AllocateByteMemory (* Operations on LargeWords. These are 32/64 bit values that are "boxed". *) | LargeWordComparison of testConditions | LargeWordArith of arithmeticOperations | LargeWordLogical of logicalOperations | LargeWordShift of shiftOperations | RealComparison of testConditions | RealArith of arithmeticOperations val unaryRepr: unaryOps -> string and binaryRepr: binaryOps -> string and testRepr: testConditions -> string and arithRepr: arithmeticOperations -> string end; polyml-5.7.1/mlsource/MLCompiler/VALUE_OPS.ML0000644000175000017500000016612413204034553017474 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008-9, 2013, 2015-16. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) (* Title: Operations on global and local values. Author: Dave Matthews, Cambridge University Computer Laboratory Copyright Cambridge University 1986 *) functor VALUE_OPS ( structure LEX : LEXSIG; structure CODETREE : CODETREESIG structure STRUCTVALS : STRUCTVALSIG; structure TYPESTRUCT : TYPETREESIG structure PRINTTABLE : PRINTTABLESIG structure UNIVERSALTABLE: sig type universal = Universal.universal type univTable val app: (string * universal -> unit) -> univTable -> unit end; structure DEBUG : DEBUGSIG structure MISC : sig exception InternalError of string; (* compiler error *) exception Conversion of string (* string to int conversion failure *) val quickSort : ('a -> 'a -> bool) -> 'a list -> 'a list end; structure PRETTY : PRETTYSIG structure ADDRESS : AddressSig structure UTILITIES : sig val splitString: string -> { first:string,second:string } end; structure COPIER: COPIERSIG structure TYPEIDCODE: TYPEIDCODESIG structure DATATYPEREP: DATATYPEREPSIG sharing STRUCTVALS.Sharing = TYPESTRUCT.Sharing = LEX.Sharing = PRETTY.Sharing = COPIER.Sharing = CODETREE.Sharing = PRINTTABLE = ADDRESS = UNIVERSALTABLE = MISC = TYPEIDCODE.Sharing = DATATYPEREP.Sharing ) : VALUEOPSSIG = (*****************************************************************************) (* VALUEOPS functor body *) (*****************************************************************************) struct open MISC; open PRETTY; open LEX; open CODETREE; open TYPESTRUCT; (* Open this first because unitType is in STRUCTVALS as well. *) open Universal; (* for tag etc. *) open STRUCTVALS; open PRINTTABLE; open DEBUG; open ADDRESS; open UTILITIES; open TYPEIDCODE open COPIER open DATATYPEREP (* Functions to construct the values. *) fun mkGconstr (name, typeof, code, nullary, constrs, location) = makeValueConstr (name, typeof, nullary, constrs, Global code, location); (* Global variable *) fun mkGvar (name, typeOf, code, locations) : values = Value{ name = name, typeOf = typeOf, access = Global code, class = ValBound, locations = locations, references = NONE, instanceTypes=NONE }; (* Local variable - Generated by the second pass. *) local fun makeLocalV class (name, typeOf, locations) = Value{ name = name, typeOf = typeOf, access = Local {addr = ref ~1 (* Must be set later *), level = ref baseLevel}, class = class, locations = locations, references = makeRef(), instanceTypes=SOME(ref []) }; in val mkValVar = makeLocalV ValBound and mkPattVar = makeLocalV PattBound end (* Value in a local structure or a functor argument. May be simple value, exception or constructor. *) fun mkSelectedVar (Value { access = Formal addr, name, typeOf, class, locations, ...}, Struct{access=sAccess, ...}, openLocs) = (* If the argument is "formal" set the base to the base structure. *) let (* If the base structure is a constant do the selection now. This is redundant unless we're being called from PolyML.NameSpace.Structures.contents. *) val access = case sAccess of Global code => Global(mkInd (addr, code)) | _ => Selected{addr=addr, base=sAccess} in Value{name=name, typeOf=typeOf, class=class, access=access, locations=openLocs @ locations, references = NONE, instanceTypes=NONE} end | mkSelectedVar (Value { access = Global code, name, typeOf, class, locations, ...}, _, openLocs) = (* Global: We need to add the location information. *) Value{name=name, typeOf=typeOf, class=class, access=Global code, locations=openLocs @ locations, references = NONE, instanceTypes=NONE} | mkSelectedVar(selected, _, _) = selected (* Overloaded? *); (* Construct a global exception. *) fun mkGex (name, typeof, code, locations) = Value{ name = name, typeOf = typeof, access = Global code, class = Exception, locations = locations, references = NONE, instanceTypes=NONE } (* Construct a local exception. *) fun mkEx (name, typeof, locations) = Value{ name = name, typeOf = typeof, access = Local{addr = ref 0, level = ref baseLevel}, class = Exception, locations=locations, references = NONE, instanceTypes=NONE } (* Locations in exception packets. In order to have a defined ordering of the fields, when we put the location in an exception packet we use this datatype rather than the "location" type. *) (* *) datatype RuntimeLocation = NoLocation | SomeLocation of (* file: *) string * (*startLine:*) int * (*startPosition:*) int * (*endLine:*) int * (*endPosition:*) int fun codeLocation({file="", startLine=0, startPosition=0, ...}) = mkConst(toMachineWord NoLocation) (* No useful information *) | codeLocation({file, startLine, startPosition, endLine, endPosition}) = mkConst(toMachineWord(file, startLine, startPosition, endLine, endPosition)) (*****************************************************************************) (* Look-up functions. *) (* These are used locally and also exported to INITIALISE to be used in PolyML.NameSpace.Structures.contents. *) fun makeSelectedValue( Value{ name, typeOf, access, class, locations, ... }, baseStruct as Struct{signat=Signatures { typeIdMap, ...}, name=baseName, ...}) = let fun copyId(TypeId{idKind=Bound{ offset, ...}, ...}) = SOME(typeIdMap offset) | copyId _ = NONE val copiedType = copyType (typeOf, fn x => x, fn tcon => copyTypeConstr (tcon, copyId, fn x => x, fn s => baseName^"."^s)) val baseLoc = case List.find (fn DeclaredAt _ => true | _ => false) locations of SOME (DeclaredAt loc) => [StructureAt loc] | _ => [] in mkSelectedVar ( Value{ name=name, typeOf=copiedType, access=access, class=class, locations=locations, references = NONE, instanceTypes=NONE }, baseStruct, baseLoc) end fun makeSelectedStructure( Struct {signat, access, name=structName, locations, ...}, Struct {signat=Signatures { typeIdMap, firstBoundIndex, ...}, access=baseAccess, ...}) = let val Signatures { name=sigName, tab, typeIdMap = childMap, locations=sigLocs, ... } = signat (* We need to apply the map from the parent structure to the child. *) val copiedSig = makeSignature(sigName, tab, firstBoundIndex, sigLocs, composeMaps(childMap, typeIdMap), []) (* Convert Formal access to Selected and leave the others (Global?). If this is Formal but the base structure is global do the selection now. This is only needed if we're called from PolyML.NameSpace.Structures.contents. *) val newAccess = case (access, baseAccess) of (Formal sel, Global code) => Global(mkInd(sel, code)) | (Formal sel, baseAccess) => Selected { addr = sel, base = baseAccess } | (access, _) => access (* If we have a DeclaredAt location for the structure use this as the StructureAt.*) val baseLoc = case List.find (fn DeclaredAt _ => true | _ => false) locations of SOME (DeclaredAt loc) => [StructureAt loc] | _ => [] in Struct { name = structName, signat = copiedSig, access = newAccess, locations = baseLoc @ locations} end fun makeSelectedType(typeConstr, Struct { signat=Signatures { typeIdMap, ...}, name, ...}) = fullCopyDatatype(typeConstr, typeIdMap, name^".") (* Look up a structure. *) fun lookupStructure (kind, {lookupStruct:string -> structVals option}, name, errorMessage) = let val {first = prefix, second = suffix} = splitString name; val strLookedUp = if prefix = "" then lookupStruct suffix else case lookupStructure ("Structure", {lookupStruct=lookupStruct}, prefix, errorMessage) of NONE => NONE (* Already reported *) | SOME(baseStruct as Struct { signat=Signatures { tab, ... }, ...}) => let (* Look up the first part in the structure environment. *) val Env{lookupStruct, ...} = makeEnv tab in case lookupStruct suffix of SOME foundStruct => SOME(makeSelectedStructure(foundStruct, baseStruct)) | NONE => NONE end in case strLookedUp of SOME s => SOME s | NONE => (* Not declared? *) (errorMessage (kind ^ " (" ^ suffix ^ ") has not been declared" ^ (if prefix = "" then "" else " in structure " ^ prefix)); NONE) end fun mkEnv x = let val Env e = makeEnv x in e end (* Look up a structure but ignore the access. This is used in sharing constraints where we're only interested in the signature. *) (* It's simpler to use the common code for this. *) fun lookupStructureAsSignature (lookupStruct, name, errorMessage) = lookupStructure("Structure", { lookupStruct = lookupStruct}, name, errorMessage) (* Look up a value, possibly in a structure. If it is in a structure we may have to apply a selection. *) fun lookupValue (kind, {lookupVal,lookupStruct}, name, errorMessage) = let val {first = prefix, second = suffix} = splitString name; val found = if prefix = "" then lookupVal suffix (* Look up the first part in the structure environment. *) else case lookupStructure ("Structure", {lookupStruct=lookupStruct}, prefix, errorMessage) of NONE => SOME undefinedValue | SOME (baseStruct as Struct { signat=Signatures { tab, ...}, ...}) => ( case #lookupVal (mkEnv tab) suffix of SOME foundValue => SOME(makeSelectedValue(foundValue, baseStruct)) | NONE => NONE ) in case found of SOME v => v | NONE => (* Not declared? *) ( errorMessage (kind ^ " (" ^ suffix ^ ") has not been declared" ^ (if prefix = "" then "" else " in structure " ^ prefix)); undefinedValue ) end fun lookupTyp ({lookupType,lookupStruct}, name, errorMessage) = let val {first = prefix, second = suffix} = splitString name; val found = if prefix = "" then lookupType suffix else (* Look up the first part in the structure environment. *) case lookupStructure ("Structure", {lookupStruct=lookupStruct}, prefix, errorMessage) of NONE => SOME(TypeConstrSet(undefConstr, [])) | SOME (baseStruct as Struct { signat=Signatures { tab, ...}, ...}) => ( case #lookupType (mkEnv tab) suffix of SOME typeConstr => SOME(makeSelectedType(typeConstr, baseStruct)) | NONE => NONE ) in case found of SOME v => v | NONE => (* Not declared? *) ( errorMessage ("Type constructor" ^ " (" ^ suffix ^ ") has not been declared" ^ (if prefix = "" then "" else " in structure " ^ prefix)); TypeConstrSet(undefConstr, []) ) end (* Printing. *) (* Print a value given its type. *) fun printValueForType (value:machineWord, types, depth): pretty = let (* Constuct printer code applied to the argument and the depth. Code-generate and evaluate it. *) (* If this is polymorphic apply it to a dummy set of instance types. This may happen if we have val it = NONE at the top level. The equality attributes of the type variables must match so that this works correctly with justForEqualityTypes set. *) val addrs = ref 0 (* Make local declarations for any type values. *) local fun mkAddr n = !addrs before (addrs := !addrs + n) in val typeVarMap = TypeVarMap.defaultTypeVarMap(mkAddr, baseLevel) end val dummyTypes = List.map(fn tv => {value=TYPESTRUCT.unitType, equality=tvEquality tv, printity=false}) (getPolyTypeVars(types, fn _ => NONE)) val polyCode = applyToInstance(dummyTypes, baseLevel, typeVarMap, fn _ => mkConst value) val printerCode = mkEval( printerForType(types, baseLevel, typeVarMap), [mkTuple[polyCode, mkConst(toMachineWord depth)]]) val pretty = RunCall.unsafeCast( valOf(evalue(genCode(CODETREE.mkEnv(TypeVarMap.getCachedTypeValues typeVarMap, printerCode), [], !addrs)()))) in pretty end (* These are used to display the declarations made. *) fun displayFixStatus(FixStatus(name, f)): pretty = let open PRETTY val status = case f of Nonfix => PrettyString "nonfix" | Infix prec => PrettyBlock(0, false, [], [ PrettyString "infix", PrettyBreak (1, 0), PrettyString (Int.toString prec) ]) | InfixR prec => PrettyBlock(0, false, [], [ PrettyString "infixr", PrettyBreak (1, 0), PrettyString (Int.toString prec) ]) in PrettyBlock (0, false, [], [status, PrettyBreak (1, 0), PrettyString name]) end (* Returns the declaration location as the location for the context. *) fun getLocation locations = case List.find(fn DeclaredAt _ => true | _ => false) locations of SOME(DeclaredAt loc) => [ContextLocation loc] | _ => [] (* Displays value as a block, with no external formatting. This is used at the top level but it can be applied to values extracted with #lookup globalNameSpace. That can include constructors and overloaded functions. *) fun displayValues (Value{name, typeOf, class, access, locations, ...}, depth: FixedInt.int, nameSpace, sigMap): pretty = let (* Create the "val X =" part. *) fun valPart (valOrCons, isColon) = let (* If we're putting in a colon we don't need a space after an alphanumeric id but we do if it's symbolic. *) val isAlphaNumeric = let val first = String.sub(name, 0) in Char.isAlpha first orelse first = #"'" end val space = if isColon andalso isAlphaNumeric then 0 else 1 val equOrColon = if isColon then ":" else "=" in PrettyBlock (0, false, [], [ PrettyString valOrCons, PrettyBreak (1, 0), PrettyBlock(0, false, getLocation locations, [PrettyString name]), PrettyBreak (space, 0), PrettyString equOrColon ] ) end val typeEnv = (* Environment to check for type constructors. *) { lookupType = #lookupType nameSpace, lookupStruct = #lookupStruct nameSpace} in if depth <= 0 then PrettyString "..." else case class of ValBound => let (* In nearly all cases if we have Global code we will have a constant. There was one case where "!" was actually a Lambda that hadn't been code-generated. *) val value = case access of Global code => evalue code | _ => NONE val start = case value of SOME v => [ valPart("val", false), PrettyBreak (1, 0), printValueForType (v, typeOf, depth), PrettyString ":" ] | _ => [ valPart("val", true) ] in PrettyBlock (3, false, [], start @ [ PrettyBreak (1, 0), displayWithMap (typeOf, depth, typeEnv, sigMap) ]) end | Exception => (* exceptions *) PrettyBlock (0, false, [], PrettyBlock (0, false, [], [ PrettyString "exception", PrettyBreak (1, 0), PrettyBlock(0, false, getLocation locations, [PrettyString name]) ] ) :: ( case getFnArgType typeOf of NONE => [] | SOME excType => [ PrettyBreak (1, 1), PrettyString "of", PrettyBreak (1, 3), displayWithMap (excType, depth, typeEnv, sigMap) ] ) ) | Constructor _ => (* This can only occur with #lookupVal *) PrettyBlock (3, false, [], [ valPart("constructor", true), PrettyBreak (1, 0), displayWithMap (typeOf, depth, typeEnv, sigMap) ]) | PattBound => (* Can this ever occur? *) PrettyBlock (3, false, [], [ valPart("val", true), PrettyBreak (1, 0), displayWithMap (typeOf, depth, typeEnv, sigMap) ]) end (* Print global values. This is passed through the bootstrap and used in the debugger. *) fun printValues (Value{typeOf, class, access, ...}, depth) = case (class, access) of (ValBound, Global code) => printValueForType (valOf(evalue code), typeOf, depth) | _ => PrettyString "" (* Probably shouldn't occur. *) (* Prints "sig ... end" as a block, with no external formatting *) fun displaySig (Signatures{tab, typeIdMap, ...}, depth : FixedInt.int, _ : int, { lookupType, lookupStruct, ...}, sigMap: (int-> typeId) option) : pretty = let (* Construct an environment for the types. *) val Env { lookupType = strType, lookupStruct = strStr, ...} = makeEnv tab (* Construct a map for types. *) val innerMap = case sigMap of NONE => SOME typeIdMap | SOME outerMap => SOME(composeMaps(typeIdMap, outerMap)) val compositeEnv = { lookupType = fn s => case strType s of NONE => lookupType s | SOME t => SOME (t, innerMap), lookupStruct = fn s => case strStr s of NONE => lookupStruct s | SOME s => SOME (s, innerMap) } val typeEnv: printTypeEnv = { lookupType = #lookupType compositeEnv, lookupStruct = #lookupStruct compositeEnv } fun displaySpec (_, value) : pretty list = if (tagIs signatureVar value) then (* Not legal ML97 *) [ PrettyBreak(1,2), displaySignatures (tagProject signatureVar value, depth - 1, compositeEnv)] else if (tagIs structVar value) then [ PrettyBreak(1,2), displayStructures (tagProject structVar value, depth - 1, compositeEnv, innerMap)] else if (tagIs typeConstrVar value) then [ PrettyBreak(1,2), displayTypeConstrsWithMap (tagProject typeConstrVar value, depth, typeEnv, innerMap) ] else if (tagIs valueVar value) then let (* Only print variables. Constructors are printed with their type. *) val value = tagProject valueVar value; in case value of Value{class = Constructor _, ...} => [] | _ => [ PrettyBreak(1,2), (* We lookup the infix status and any exception in the global environment only. Infix status isn't a property of a structure and it's too much trouble to look up exceptions in the structure. *) displayValues (value, depth, compositeEnv, innerMap) ] end else if (tagIs fixVar value) then (* Not legal ML97 *) [ PrettyBreak(1,2), displayFixStatus (tagProject fixVar value) ] else [] (* end displaySpec *) in PrettyBlock (0, true, [], PrettyString "sig" :: ( ( if depth <= 1 (* If the depth is 1 each of the calls to displaySpec will print "..." so we replace them all by a single "..." here. *) then [PrettyBreak (1, 0), PrettyString "..."] else let val declist = ref nil : (string * universal) list ref fun addToList nv = declist := nv :: !declist (* For the moment order them by name. We may change this to order primarily by kind and secondarily by name. *) fun order (s1: string, _) (s2: string, _) = s1 > s2 in (* Put all the entries into a list. *) UNIVERSALTABLE.app addToList tab; (* Sort the list and print it. *) List.foldl (fn (a, l) => displaySpec a @ l) [] (quickSort order (!declist)) end ) @ [PrettyBreak (1, 0), PrettyString "end"] ) ) end (* displaySig *) (* Print: signature S = sig .... end *) and displaySignatures (str as Signatures{locations, name, ...}, depth : FixedInt.int, nameSpace) : pretty = if depth <= 0 then PrettyString "..." else PrettyBlock(0, false, [], [ PrettyBlock(0, false, [], [ PrettyString "signature", PrettyBreak(1, 0), PrettyBlock(0, false, getLocation locations, [PrettyString name]), PrettyBreak(1, 0), PrettyString "=" ] ), PrettyBreak (1, 2), displaySig (str, depth, 1, nameSpace, NONE) ]) (* print structure in a block (no external spacing) *) and displayStructures (Struct{name, locations, signat, ...}, depth, nameSpace, sigMap): pretty = if depth <= 0 then PrettyString "..." else PrettyBlock (0, false, [], [ PrettyBlock(0, false, [], [ PrettyString "structure", PrettyBreak(1, 0), PrettyBlock(0, false, getLocation locations, [PrettyString name]), PrettyBreak(0, 0), PrettyString ":" ] ), PrettyBreak(1, 2), displayNamedSig(signat, depth - 1, 1, nameSpace, sigMap) ]) (* Internal function for printing structures and functors. If a signature has a name print the name rather than the contents. *) and displayNamedSig(sign as Signatures{name = "", ...}, depth, space, nameSpace, sigMap) = displaySig (sign, depth, space, nameSpace, sigMap) | displayNamedSig(Signatures{name, ...}, _, _, _, _) = PrettyString name fun displayFunctors (Functor{ name, locations, arg, result, ...}, depth, nameSpace) = if depth <= 0 then PrettyString "..." else let val arg as Struct { name = argName, signat as Signatures { tab = argTab, ... }, ...} = arg val argEntries = (if argName <> "" then [ PrettyBlock(0, false, [], [PrettyString argName, PrettyBreak(0, 0), PrettyString ":"]), PrettyBreak(1, 2) ] else []) @ [ displayNamedSig (signat, depth - 1, 0, nameSpace, NONE), PrettyBreak(0, 0), PrettyString "):", PrettyBreak(1, 0) ] (* Include the argument structure name in the type environment. *) val argEnv = if argName = "" then let val Env { lookupType=lt, lookupStruct=ls, ...} = makeEnv argTab in { lookupType = fn s => case lt s of NONE => #lookupType nameSpace s | SOME t => SOME(t, NONE), lookupStruct = fn s => case ls s of NONE => #lookupStruct nameSpace s | SOME s => SOME(s, NONE) } end else { lookupType = #lookupType nameSpace, lookupStruct = fn s => if s = argName then SOME(arg, NONE) else #lookupStruct nameSpace s } in PrettyBlock (0, false, [], [ PrettyBlock(0, false, [], [ PrettyBlock(0, false, [], [ PrettyString "functor", PrettyBreak(1, 0), PrettyBlock(0, false, getLocation locations, [PrettyString name]), PrettyBreak(1, 0), PrettyString "(" ]), PrettyBreak(0, 2), PrettyBlock(0, false, [], argEntries) ]), PrettyBreak(0, 2), displayNamedSig (result, depth - 1, 1, argEnv, NONE) ] ) end (* Exported version. *) val displayValues = fn (value, depth, nameSpace) => displayValues (value, depth, nameSpace, NONE) and displayStructures = fn (str, depth, nameSpace) => displayStructures (str, depth, nameSpace, NONE) (* Code-generation. *) (* Code-generate the values. *) fun codeStruct (Struct{access, ...}, level) = (* Global structures have no code value. Instead the values are held in the values of the signature. *) codeAccess (access, level) and codeAccess (Global code, _) = code | codeAccess (Local{addr=ref locAddr, level=ref locLevel}, level) = mkLoad (locAddr, level, locLevel) (* Argument or local *) | codeAccess (Selected{addr, base}, level) = (* Select from a structure. *) mkInd (addr, codeAccess (base, level)) | codeAccess _ = raise InternalError "No access" (*****************************************************************************) (* datatype access functions *) (*****************************************************************************) (* Get the appropriate instance of an overloaded function. If the overloading has not resolved to a single type it finds the preferred type if possible (i.e. int for most overloadings, but possibly real, word, string or char for conversion functions.) *) fun getOverloadInstance(name, instance, isConv): codetree*string = let val constr = typeConstrFromOverload(instance, isConv) in (getOverload(name, constr, fn _ => raise InternalError "getOverloadInstance: Missing"), tcName constr) end (* This is only used in addPrettyPrint. There's no point in producing a lot of detailed information. *) fun checkPPType (instanceType, matchType, fnName, lex, location, moreInfo) = case unifyTypes (instanceType, matchType) of NONE => () | SOME error => let open DEBUG val parameters = LEX.debugParams lex val errorDepth = getParameter errorDepthTag parameters in reportError lex { location = location, hard = true, message = PrettyBlock(0, true, [], [ PrettyString ("Argument for " ^ fnName), PrettyBreak (1, 3), PrettyBlock(0, false, [], [ PrettyString "Required type:", PrettyBreak (1, 0), display (matchType, errorDepth, emptyTypeEnv) ]), PrettyBreak (1, 3), PrettyBlock(0, false, [], [ PrettyString "Argument type:", PrettyBreak (1, 0), display (instanceType, errorDepth, emptyTypeEnv) ]), PrettyBreak (1, 3), unifyTypesErrorReport(lex, emptyTypeEnv, emptyTypeEnv, "unify") error ]), context = SOME (moreInfo ()) } end; (* This is applied to the instance variables if it is polymorphic and bound by a val or fun binding or is a datatype constructor. *) fun applyToInstanceType(polyVars, ValBound, level, typeVarMap, code) = applyToInstance(polyVars, level, typeVarMap, code) | applyToInstanceType(polyVars, Constructor _, level, typeVarMap, code) = applyToInstance(if justForEqualityTypes then [] else polyVars, level, typeVarMap, code) | applyToInstanceType(_, PattBound, level, _, code) = code level | applyToInstanceType(_, Exception, level, _, code) = code level val arg1 = mkLoadArgument 0 (* saves a lot of garbage *) fun addStatus typ = {value=typ, equality=false, printity=false} (* Code-generate an identifier matched to a value. N.B. If the value is a constructor it returns the pair or triple representing the functions on the constructor. *) fun codeVal (Value{access = Global code, class, ...}, level: level, typeVarMap, instance, _, _) = applyToInstanceType(instance, class, level, typeVarMap, fn _ => code) | codeVal (Value{access = Local{addr=ref locAddr, level=ref locLevel}, class, ...}, level, typeVarMap, instance, _, _) = let fun loadVar level = mkLoad (locAddr, level, locLevel) (* Argument or local *) in applyToInstanceType(instance, class, level, typeVarMap, loadVar) end | codeVal (Value{access = Selected{addr, base}, class, ...}, level: level, typeVarMap, instance, _, _) = (* Select from a structure. *) applyToInstanceType(instance, class, level, typeVarMap, fn level => mkInd (addr, codeAccess (base, level))) | codeVal (Value{access = Formal _, ...}, _, _, _, _, _) = raise InternalError "codeVal - Formal" | codeVal (Value{access = Overloaded Print, ...}, _, _, [], lex, _) = (* If this appears in a structure return a null printer function. It has to have the polymorphic form with an extra lambda outside. *) let (* We should have a single entry for the type. *) open DEBUG (* The parameter is the reference used to control the print depth when the value is actually printed. *) val prettyOut = getPrintOutput (LEX.debugParams lex) in mkProc( mkProc( CODETREE.mkEnv ( [ mkNullDec (mkEval( mkConst(toMachineWord prettyOut), [ mkConst(toMachineWord(PrettyString "?")) ]) ) ], arg1 (* Returns its argument. *) ), 1, "print()", [], 0), 1, "print(P)", [], 0) end | codeVal (Value{access = Overloaded Print, ...}, level: level, typeVarMap, [{value=argType, ...}], lex, _) = let (* We should have a single entry for the type. *) open DEBUG (* The parameter is the reference used to control the print depth when the value is actually printed. *) val printDepthFun = getParameter printDepthFunTag (LEX.debugParams lex) and prettyOut = getPrintOutput (LEX.debugParams lex) val nLevel = newLevel level in (* Construct a function that gets the print code, prints it out and returns its argument. *) mkProc( CODETREE.mkEnv ( [ mkNullDec ( mkEval( mkConst(toMachineWord prettyOut), [ mkEval( printerForType(argType, nLevel, typeVarMap), [ mkTuple[arg1, mkEval(mkConst(toMachineWord printDepthFun), [CodeZero])] ]) ]) ) ], arg1 (* Returns its argument. *) ), 1, "print()", getClosure nLevel, 0) end | codeVal (Value{access = Overloaded Print, ...}, _, _, _, _, _) = raise InternalError "Overloaded Print - wrong instance type" | codeVal (Value{access = Overloaded MakeString, ...}, _, _, [], _, _) = (* If this appears in a structure produce a default version. *) mkInlproc( mkProc(mkConst(toMachineWord "?"), 1, "makestring()", [], 0), 1, "makestring(P)", [], 0) | codeVal (Value{access = Overloaded MakeString, ...}, level: level, typeVarMap, [{value=argType, ...}], _, _) = let val nLevel = newLevel level in (* Construct a function that gets the print code and prints it out using "uglyPrint". *) mkProc( mkEval( mkConst(toMachineWord uglyPrint), [ mkEval( printerForType(argType, nLevel, typeVarMap), [ mkTuple[arg1, mkConst(toMachineWord 10000)] ]) ]), 1, "makestring()", getClosure nLevel, 0) end | codeVal (Value{access = Overloaded MakeString, ...}, _, _, _, _, _) = raise InternalError "Overloaded MakeString - wrong instance type" | codeVal (Value{access = Overloaded GetPretty, ...}, level, typeVarMap, [], _, _) = let val nLevel = newLevel level in (* If this appears in a structure return a default function. *) mkProc(printerForType(badType, nLevel, typeVarMap), 1, "getPretty", getClosure nLevel, 0) end | codeVal (Value{access = Overloaded GetPretty, ...}, level: level, typeVarMap, [{value=argType, ...}], _, _) = (* Get the pretty code for the specified argument. *) printerForType(argType, level, typeVarMap) | codeVal (Value{access = Overloaded GetPretty, ...}, _, _, _, _, _) = raise InternalError "Overloaded GetPretty - wrong instance type" | codeVal (Value{access = Overloaded AddPretty, ...}, _, _, [], _, _) = (* If this appears in a structure create a function that raises an exception if run. *) mkProc( mkConst (toMachineWord (fn _ => raise Fail "addPrettyPrint: The argument type was not a simple type construction")), 1, "AddPretty(P)", [], 0) | codeVal (Value{access = Overloaded AddPretty, ...}, level: level, _, [{value=installType, ...}, {value=argPrints, ...}], lex, loc) = let (* "instance" should be (int-> 'a -> 'b -> pretty) -> unit. We need to get the 'a and 'b. This function installs a pretty printer against the type which matches 'b. The type 'a is related to type of 'b as follows: If 'b is a monotype t then 'a is ignored. If 'b is a unary type constructor 'c t then 'a must have type 'c * int -> pretty. If 'b is a binary or higher type constructor e.g. ('c, 'd, 'e) t then 'a must be a tuple of functions of the form ('c * int -> pretty, 'd * int -> pretty, 'e * int -> pretty). When the installed function is called it will be passed the appropriate argument functions which it can call to print the argument types. *) val pretty = mkTypeVar (generalisable, false, false, false); (* Temporary hack. *) (* Find the last type constructor in the chain. We have to install this against the last in the chain because type constructors in different modules may be at different points in the chain. *) (* This does mean that it's not possible to install a pretty printer for a type constructor rather than a datatype. *) fun followTypes (TypeConstruction{constr, args, ...}) = if not (tcIsAbbreviation constr) then SOME(tcIdentifier constr, constr, List.length args) else followTypes (makeEquivalent (constr, args)) | followTypes (TypeVar tv) = ( case tvValue tv of EmptyType => NONE (* Unbound type variable *) | t => followTypes t ) | followTypes _ = NONE; val constrId = followTypes installType val () = case constrId of NONE => () | SOME (_, constr, arity) => let (* Check that the function tuple matches the arguments of the type we're installing for. *) (* Each entry should be a function of type 'a * int -> pretty *) fun mkFn arg = mkFunctionType(mkProductType[arg, TYPESTRUCT.fixedIntType], pretty) (* Create non-unifiable type vars to ensure this is properly polymorphic. *) val typeVars = List.tabulate(arity, fn _ => mkTypeVar (0, false, true, false)) val tupleType = case typeVars of [] => (* No arg so must have unit. *) unitType | [arg] => mkFn arg (* Just a single function. *) | args => mkProductType(List.map mkFn args) val addPPType = mkFunctionType(argPrints, mkFunctionType(installType, pretty)) val testType = mkFunctionType(tupleType, mkFunctionType( mkTypeConstruction(tcName constr, constr, typeVars, [DeclaredAt loc]), pretty)) in checkPPType(addPPType, testType, "addPrettyPrint", lex, loc, fn () => PrettyString "addPrettyPrint element functions must have type 'a * int -> pretty, 'b * int -> pretty, ... with one function for each type parameter") end; (* Only report the error when the function is run. Because addPrettyPrint is contained in the PolyML structure we may compile a reference to a polymorphic version of this for the structure record. It's replaced in the final structure by this version. *) in case constrId of SOME (typeId, _, arity) => let (* We need to transform the user-supplied function into the form required for the reference. The user function has type int -> 'b -> 'a -> pretty where 'b is either "don't care" if this is a monotype, the print function for the base type if it takes a single type argument or a tuple of base type functions if it takes more than one. The reference expects to contain a function of type 'a * int -> pretty for a monotype or a function of the form <'b1, 'b2...> -> 'a * int -> pretty if this is polytype where <...> represents poly-style multiple arguments. *) val printFunction = case arity of 0 => mkProc( mkEval( mkEval( mkEval( mkLoadClosure 0 (* The user-supplied fn *), [mkInd(1, arg1)] (* The depth *)), [CodeZero] (* Ignored args. *)), [mkInd(0, arg1)] (* Value to print *)), 1, "addPP-1", [arg1](* The user-supplied fn *), 0) | arity => let open TypeValue val args = if arity = 1 then [extractPrinter(mkLoadClosure 1)] else [mkTuple(List.tabulate(arity, fn n => extractPrinter(mkLoadClosure(n+1))))] in mkProc( mkProc( mkEval( mkEval( mkEval( mkLoadClosure 0 (* The user-supplied fn *), [mkInd(1, arg1)] (* The depth *)), args (* Base fns. *)), [mkInd(0, arg1)] (* Value to print *)), 1, "addPP-2", mkLoadClosure 0 :: List.tabulate(arity, mkLoadArgument), 0), arity, "addPP-1", [arg1], 0) end val nLevel = newLevel level in (* Generate a function that will set the "print" ref for the type to the argument function. *) mkProc( mkStoreOperation(LoadStoreMLWord{isImmutable=false}, TypeValue.extractPrinter( codeAccess(idAccess typeId, nLevel)), CodeZero, printFunction ), 1, "addPP", getClosure nLevel, 0) end | NONE => mkConst (toMachineWord (fn _ => raise Fail "addPrettyPrint: The argument type was not a simple type construction")) end | codeVal (Value{access = Overloaded AddPretty, ...}, _, _, _, _, _) = raise InternalError "Overloaded AddPretty - wrong instance type" | codeVal (Value{access = Overloaded GetLocation, ...}, _, _, _, _, _) = (* This can't be used a value: It must be called immediately. *) let fun getLoc() = raise Fail "The special function PolyML.sourceLocation cannot be used as a value" in mkConst (toMachineWord getLoc) end | codeVal (value as Value{access = Overloaded _, ...}, level: level, typeVarMap, instance, lex, lineno) = let val nLevel = newLevel level in (* AddOverload, Equal, NotEqual, TypeDep *) mkProc(applyFunction (value, arg1, nLevel, typeVarMap, instance, lex, lineno), 1, "", getClosure nLevel, 0) end (* Some of these have a more efficient way of calling them as functions. *) and applyFunction (value as Value{class=Exception, ...}, argument, level, typeVarMap, instance, lex, lineno) = let (* If we are applying it as a function we cannot be after the exception id, we must be constructing an exception packet. *) (* Get the exception id, put it in the packet with the exception name the argument and, currently, an empty location as the exception location. *) val exIden = codeVal (value, level, typeVarMap, instance, lex, lineno); in mkTuple (exIden :: mkStr (valName value) :: argument :: [mkConst(toMachineWord NoLocation)]) end | applyFunction(value as Value{class=Constructor _, ...}, argument, level, typeVarMap, argVars, lex, lineno) = let (* If this is a value constructor we need to get the construction function and use that. *) fun getConstr level = ValueConstructor.extractInjection(codeVal (value, level, typeVarMap, [], lex, lineno)) val polyConstr = applyToInstance(if justForEqualityTypes then [] else argVars, level, typeVarMap, getConstr) in (* Don't apply this "early". It might be the ref constructor and that must not be applied until run-time. The optimiser should take care of any other cases. *) mkEval (polyConstr, [argument]) end | applyFunction (value as Value{access = Overloaded oper, name = valName, ...}, argument, level, typeVarMap, instance, lex, lineno) = ( case oper of Equal => (* Get the equality function for the type. *) let (* We should have a single entry for the type. *) val argType = case instance of [{value, ...}] => value | _ => raise InternalError "Overload Equal" (* The instance type is a function so we have to get the first argument. *) val code = equalityForType(argType, level, typeVarMap) in mkEval (code, [argument]) end | NotEqual => let (* We should have a single entry for the type. *) val argType = case instance of [{value, ...}] => value | _ => raise InternalError "Overload NotEqual" (* Use the "=" function to provide inequality as well as equality. *) val code = equalityForType(argType, level, typeVarMap) val isEqual = mkEval (code, [argument]) in mkNot isEqual end | TypeDep => let val argType = case instance of [{value, ...}] => value | _ => raise InternalError "Overload TypeDep" val (code, _) = getOverloadInstance(valName, argType, false) in mkEval (code, [argument]) end | AddOverload => (* AddOverload is only intended for use by writers of library modules. It only does limited checking and should be regarded as "unsafe". *) let fun rmvars (TypeVar tv) = rmvars(tvValue tv) | rmvars t = t (* instance should be ('a->'b) -> string -> unit. For overloadings on most functions (e.g. abs and +) we are looking for the 'a, which may be a pair, but in the case of conversion functions we want the 'b. *) val (resultType, argType) = case instance of [{value=alpha, ...}, {value=beta, ...}] => (rmvars alpha, rmvars beta) | _ => (badType, badType) fun followTypes(TypeConstruction{constr as TypeConstrs {identifier = TypeId{idKind = Free _, ...},...}, ...}) = constr | followTypes(TypeConstruction{constr as TypeConstrs {identifier = TypeId{idKind = TypeFn _, ...},...}, args, ...}) = followTypes (makeEquivalent (constr, args)) | followTypes(TypeConstruction{constr = TypeConstrs {identifier = TypeId{idKind = Bound _, ...},...}, ...}) = raise Fail "Cannot install an overload within a structure or functor" | followTypes _ = raise Fail "Invalid type (not a type construction) (addOverload)" fun addOverloading (argCode: codetree) (name: string) = let val typeToUse = if size name > 4 andalso String.substring(name, 0, 4) = "conv" (* For conversion functions it's the result type we're interested in. For everything else it's the argument type. This will be a pair for functions such as "+" and a single argument for "abs". *) then resultType else case argType of LabelledType{recList=[{typeof, ...}, _], ...} => rmvars typeof | argType => argType val tcons = followTypes typeToUse in addOverload(name, tcons, argCode) end (* This function is used if we can't get the codetree at compile time. *) fun addOverloadGeneral (arg: machineWord) = addOverloading(mkConst arg) in (* This is messy but necessary for efficiency. If we simply treat addOverload as a function we would be able to pick up the additional overloading as a pointer to a function. Most overloads are small functions or wrapped calls to RTS functions and so we need to get the inline code for them. *) (* evalue raises an exception if "argument" is not a constant, or more usefully, a global value containing a constant and possibly a piece of codetree to inline. *) case evalue(argument) of SOME _ => mkConst (toMachineWord (addOverloading argument)) | NONE => mkEval (mkConst (toMachineWord addOverloadGeneral), [argument]) end | GetLocation => (* Return the current location. *) mkConst(toMachineWord lineno) | _ => (* Print, MakeString, InstallPP *) (* Just call as functions. *) (* not early *) mkEval (codeVal (value, level, typeVarMap, instance, lex, lineno), [argument]) ) (* overloaded *) | applyFunction (value, argument, level, typeVarMap, instance, lex, lineno) = mkEval (codeVal (value, level, typeVarMap, instance, lex, lineno), [argument]) (* end applyFunction *) (* If the exception is being used as a value we want an exception packet or a function to make a packet. If it is a nullary constructor make an exception packet now, otherwise generate a function to construct an exception packet. *) fun codeExFunction (value, level, typeVarMap, instance, lex, lineno) = case getFnArgType(valTypeOf value) of (* N.B. Not "instance" *) NONE => applyFunction (value, CodeZero, level, typeVarMap, List.map addStatus instance, lex, lineno) | SOME _ => let val nLevel = newLevel level in mkProc (applyFunction (value, arg1, nLevel, typeVarMap, List.map addStatus instance, lex, lineno), 1, "", getClosure nLevel, 0) end (* Operations to compile code from the representation of a constructor. *) (* Code to test whether a value matches a constructor. This must be applied to any polymorphic variables in the instance but the result is always bool so we don't create a new function if the result is also polymorphic. It is just possible to have a resulting polytype here (N.B. that's different from having a parametric type) if we have a val binding. e.g. val SOME x = SOME nil. In that case we can choose an arbitrary type for the test and have to parameterise the result. *) fun makeGuard (value as Value{class=Constructor _, ...}, argVars, testing, level, typeVarMap) = let fun tester level = ValueConstructor.extractTest(codeVal (value, level, typeVarMap, [], nullLex, location nullLex)) val testCode = applyToInstance(if justForEqualityTypes then [] else List.map addStatus argVars, level, typeVarMap, tester) in mkEval(testCode, [testing]) end | makeGuard (value as Value{class=Exception, ...}, _, testing, level, typeVarMap) = (* Should only be an exception. Get the value of the exception identifier and compare with the identifier in the exception packet. *) mkEqualWord (mkInd (0, testing), codeVal (value, level, typeVarMap, [], nullLex, location nullLex)) | makeGuard _ = raise InternalError "makeGuard" (* Code to invert a constructor. i.e. return the value originally used as the argument. Apply to any polymorphic variables and construct a result. *) fun makeInverse(value as Value{class=Constructor{nullary=false, ...}, ...}, argVars, arg, level, typeVarMap): codetree = let fun getInverse level = ValueConstructor.extractProjection(codeVal (value, level, typeVarMap, [], nullLex, location nullLex)) val loadCode = applyToInstance(if justForEqualityTypes then [] else List.map addStatus argVars, level, typeVarMap, getInverse) in mkEval(loadCode, [arg]) end | makeInverse(Value{class=Constructor{nullary=true, ...}, ...}, _, _, _, _): codetree = (* makeInverse is called even on nullary constructors. Return zero to keep the optimiser happy. *) CodeZero | makeInverse (Value{class=Exception, ...}, _, arg, _, _) = (* Exceptions. - Get the parameter from third word *) (* We have to use a VarField here even though this field is present in every exception. The format of the value that is returned depends on the exception id. *) mkVarField (2,arg) | makeInverse _ = raise InternalError "makeInverse" (* Work out the polymorphism and the mapping between the formal type variables and the actual types. Because flexible records may introduce extra polymorphism we can only do this once we've frozen them. e.g. fun f x = #1 x + #2 x may be monomorphic or polymorphic depending on what it's subsequently applied to. *) (* Using unification here isn't ideal. We have to put the equality attribute back on to abstypes in case the unification requires it. There may be other situations where things don't work properly. *) fun getPolymorphism (Value{ typeOf, access, name, ...}, expType, typeVarMap) = let val (t, polyVars) = case access of Overloaded TypeDep => let val (t, polyVars) = generaliseOverload(typeOf, List.map #1 (getOverloads name), false) in (t, List.map (fn t => {value=t, equality=false, printity=false}) polyVars) end | _ => generaliseWithMap(typeOf, TypeVarMap.mapTypeVars typeVarMap) (* Ignore the result. There are circumstances in which we can get a unification error as the result of failing to find a fixed record type where the possible records we could find have non-unifiable types. See Tests/Fail/Test072.ML *) val _ = unifyTypes(t, expType) in polyVars end (* Convert a literal constant. We can only do this once any overloading has been resolved. *) fun getLiteralValue(converter, literal, instance, error): machineWord option = let val (conv, name) = getOverloadInstance(valName converter, instance, true) in SOME(RunCall.unsafeCast(valOf(evalue conv)) literal) handle Match => NONE (* Overload error *) | Conversion s => ( error("Conversion exception ("^s^") raised while converting " ^ literal ^ " to " ^ name); NONE ) | Overflow => ( error ("Overflow exception raised while converting " ^ literal ^ " to " ^ name); NONE ) | Thread.Thread.Interrupt => raise Thread.Thread.Interrupt | _ => ( error ("Exception raised while converting " ^ literal ^ " to " ^ name); NONE ) end (* Types that can be shared. *) structure Sharing = struct type lexan = lexan type codetree = codetree type types = types type values = values type structVals = structVals type functors = functors type valAccess = valAccess type typeConstrs = typeConstrs type typeConstrSet = typeConstrSet type signatures = signatures type fixStatus = fixStatus type univTable = univTable type pretty = pretty type locationProp = locationProp type typeId = typeId type typeVarForm = typeVarForm type typeVarMap = typeVarMap type level = level type machineWord = machineWord end end (* body of VALUEOPS *); polyml-5.7.1/mlsource/MLCompiler/Debug.ML0000644000175000017500000001374013204034553017120 0ustar daviddavid(* Copyright (c) 2000 Cambridge University Technical Services Limited Modified David C.J. Matthews 2008, 2013, 2015-16. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation;. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) structure Debug: DEBUGSIG = struct local open Universal in (* Get the current line number. *) val lineNumberTag: (unit->FixedInt.int) tag = tag() (* Get the current offset (position on line or in file). *) val offsetTag: (unit->FixedInt.int) tag = tag() (* File name. *) val fileNameTag: string tag = tag() (* Binding counter *) val bindingCounterTag: (unit->FixedInt.int) tag = tag() (* How much to print in error messages? default 6 *) val errorDepthTag: FixedInt.int tag = tag() (* Control print depth in PolyML.print. *) val printDepthFunTag: (unit->FixedInt.int) tag = tag() (* Length of line in PolyML.print. error messages etc. *) val lineLengthTag: FixedInt.int tag = tag() (* Compile in debugging code? default false *) val debugTag: bool tag = tag() (* Compilation fine tuning. *) (* Should functors be made inline? default true. *) val inlineFunctorsTag: bool tag = tag() (* Control how big functions should be before they're not inlined. *) val maxInlineSizeTag: FixedInt.int tag = tag() (* Add profile information to each allocation? default zero. At the moment this is effectively a bool but having an int allows for the possibility of recording different information. *) val profileAllocationTag: FixedInt.int tag = tag() (* Compiler debugging. *) (* Print parsetree after parsing? default false *) val parsetreeTag: bool tag = tag() (* Print codetree after compiling? default false *) val codetreeTag: bool tag = tag() (* Print the optimised code after compiling? default false *) val codetreeAfterOptTag: bool tag = tag() (* Print x86 intermediate code in code-generator? default false *) val icodeTag: bool tag = tag() (* Switch on/off low-level optimisation. *) val lowlevelOptimiseTag: bool tag = tag() (* Print assembly code in code-generator? default false *) val assemblyCodeTag: bool tag = tag() (* Report unreferenced identifiers as warnings *) val reportUnreferencedIdsTag: bool tag = tag() (* Report catch-all handlers as warnings *) val reportExhaustiveHandlersTag: bool tag = tag() (* Use a narrow context to resolve overloading and flexible records. *) val narrowOverloadFlexRecordTag: bool tag = tag() (* Create print functions for datatypes based on the constructors. *) val createPrintFunctionsTag: bool tag = tag() (* Warning level for discarding values *) val reportDiscardedValuesTag: FixedInt.int tag = tag() val reportDiscardNone = 0: FixedInt.int (* No reports *) and reportDiscardFunction = 1: FixedInt.int (* Only report discarded functions *) and reportDiscardNonUnit = 2: FixedInt.int (* Report discarding any non unit values *) (* To avoid circularity of dependencies a few tags are defined elsewhere: *) (* ValueOps.printSpaceTag: ValueOps.nameSpace tag Pretty.printOutputTag: (pretty->unit) tag Pretty.compilerOutputTag: (pretty->unit) tag Lex.errorMessageProcTag: (pretty * bool * FixedInt.int -> unit) tag ExportTreeString.rootTreeTag: (unit -> exportTree) tag *) val defaults = [ tagInject lineNumberTag (fn () => 0), (* Zero line number *) tagInject offsetTag (fn () => 0), (* Zero offset *) tagInject fileNameTag "", tagInject bindingCounterTag (fn () => 0), (* Zero counter *) tagInject inlineFunctorsTag true, tagInject maxInlineSizeTag 80, tagInject profileAllocationTag 0, tagInject parsetreeTag false, tagInject codetreeTag false, tagInject icodeTag false, tagInject lowlevelOptimiseTag true, tagInject assemblyCodeTag false, tagInject codetreeAfterOptTag false, tagInject errorDepthTag 6, tagInject printDepthFunTag (fn () => 0), tagInject lineLengthTag 77, tagInject debugTag false, tagInject reportUnreferencedIdsTag false, tagInject reportExhaustiveHandlersTag false, tagInject narrowOverloadFlexRecordTag false, tagInject createPrintFunctionsTag true, tagInject reportDiscardedValuesTag reportDiscardFunction ] fun getParameter (t:'a tag) (tagList: universal list) :'a = case List.find (tagIs t) tagList of SOME a => tagProject t a | NONE => (* Use the default *) ( case List.find (tagIs t) defaults of SOME a => tagProject t a | NONE => raise Misc.InternalError "tag missing" ) end end; polyml-5.7.1/m4/0000755000175000017500000000000013204034553012317 5ustar daviddavidpolyml-5.7.1/m4/lt~obsolete.m40000644000175000017500000001375613204034553015147 0ustar daviddavid# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) polyml-5.7.1/m4/ltoptions.m40000644000175000017500000003007313204034553014617 0ustar daviddavid# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) polyml-5.7.1/m4/ltdl.m40000644000175000017500000006470413204034553013533 0ustar daviddavid# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- # # Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc. # Written by Thomas Tanner, 1999 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 18 LTDL_INIT # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) # ------------------------------------------ # DIRECTORY contains the libltdl sources. It is okay to call this # function multiple times, as long as the same DIRECTORY is always given. AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) _$0($*) ])# LT_CONFIG_LTDL_DIR # We break this out into a separate macro, so that we can call it safely # internally without being caught accidentally by the sed scan in libtoolize. m4_defun([_LT_CONFIG_LTDL_DIR], [dnl remove trailing slashes m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) m4_case(_LTDL_DIR, [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.' m4_if(_ARG_DIR, [.], [], [m4_define([_LTDL_DIR], _ARG_DIR) _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], [m4_if(_ARG_DIR, _LTDL_DIR, [], [m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])]) m4_popdef([_ARG_DIR]) ])# _LT_CONFIG_LTDL_DIR # Initialise: m4_define([_LTDL_DIR], []) # _LT_BUILD_PREFIX # ---------------- # If Autoconf is new enough, expand to `${top_build_prefix}', otherwise # to `${top_builddir}/'. m4_define([_LT_BUILD_PREFIX], [m4_ifdef([AC_AUTOCONF_VERSION], [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], [${top_build_prefix}], [${top_builddir}/])], [${top_build_prefix}])], [${top_builddir}/])[]dnl ]) # LTDL_CONVENIENCE # ---------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with # '${top_build_prefix}' if available, otherwise with '${top_builddir}/', # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_build_prefix, top_builddir, and top_srcdir appropriately # in your Makefiles. AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_CONVENIENCE # AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_CONVENIENCE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) # _LTDL_CONVENIENCE # ----------------- # Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). m4_defun([_LTDL_CONVENIENCE], [case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" AC_SUBST([INCLTDL]) ])# _LTDL_CONVENIENCE # LTDL_INSTALLABLE # ---------------- # sets LIBLTDL to the link flags for the libltdl installable library # and LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl # is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if # available, otherwise with '${top_builddir}/', and LTDLINCL will be # prefixed with '${top_srcdir}/' (note the single quotes!). If your # package is not flat and you're not using automake, define top_build_prefix, # top_builddir, and top_srcdir appropriately in your Makefiles. # In the future, this macro may have to be called after LT_INIT. AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_INSTALLABLE # AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_INSTALLABLE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) # _LTDL_INSTALLABLE # ----------------- # Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). m4_defun([_LTDL_INSTALLABLE], [if test -f $prefix/lib/libltdl.la; then lt_save_LDFLAGS="$LDFLAGS" LDFLAGS="-L$prefix/lib $LDFLAGS" AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) LDFLAGS="$lt_save_LDFLAGS" if test x"${lt_lib_ltdl-no}" = xyes; then if test x"$enable_ltdl_install" != xyes; then # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install']) enable_ltdl_install=no fi elif test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) fi fi # If configure.ac declared an installable ltdl, and the user didn't override # with --disable-ltdl-install, we will install the shipped libltdl. case $enable_ltdl_install in no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLDEPS= LTDLINCL= ;; *) enable_ltdl_install=yes ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" ;; esac AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" AC_SUBST([INCLTDL]) ])# LTDL_INSTALLABLE # _LTDL_MODE_DISPATCH # ------------------- m4_define([_LTDL_MODE_DISPATCH], [dnl If _LTDL_DIR is `.', then we are configuring libltdl itself: m4_if(_LTDL_DIR, [], [], dnl if _LTDL_MODE was not set already, the default value is `subproject': [m4_case(m4_default(_LTDL_MODE, [subproject]), [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])], [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])], [recursive], [], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl dnl Be careful not to expand twice: m4_define([$0], []) ])# _LTDL_MODE_DISPATCH # _LT_LIBOBJ(MODULE_NAME) # ----------------------- # Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead # of into LIBOBJS. AC_DEFUN([_LT_LIBOBJ], [ m4_pattern_allow([^_LT_LIBOBJS$]) _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ])# _LT_LIBOBJS # LTDL_INIT([OPTIONS]) # -------------------- # Clients of libltdl can use this macro to allow the installer to # choose between a shipped copy of the ltdl sources or a preinstalled # version of the library. If the shipped ltdl sources are not in a # subdirectory named libltdl, the directory name must be given by # LT_CONFIG_LTDL_DIR. AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) dnl We need to keep our own list of libobjs separate from our parent project, dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while dnl we look for our own LIBOBJs. m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) m4_pushdef([AC_LIBSOURCES]) dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: m4_if(_LTDL_MODE, [], [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) AC_ARG_WITH([included_ltdl], [AS_HELP_STRING([--with-included-ltdl], [use the GNU ltdl sources included here])]) if test "x$with_included_ltdl" != xyes; then # We are not being forced to use the included libltdl sources, so # decide whether there is a useful installed version we can use. AC_CHECK_HEADER([ltdl.h], [AC_CHECK_DECL([lt_dlinterface_register], [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], [with_included_ltdl=no], [with_included_ltdl=yes])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT #include ])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT] ) fi dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE dnl was called yet, then for old times' sake, we assume libltdl is in an dnl eponymous directory: AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) AC_ARG_WITH([ltdl_include], [AS_HELP_STRING([--with-ltdl-include=DIR], [use the ltdl headers installed in DIR])]) if test -n "$with_ltdl_include"; then if test -f "$with_ltdl_include/ltdl.h"; then : else AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) fi else with_ltdl_include=no fi AC_ARG_WITH([ltdl_lib], [AS_HELP_STRING([--with-ltdl-lib=DIR], [use the libltdl.la installed in DIR])]) if test -n "$with_ltdl_lib"; then if test -f "$with_ltdl_lib/libltdl.la"; then : else AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) fi else with_ltdl_lib=no fi case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ,yes,no,no,) m4_case(m4_default(_LTDL_TYPE, [convenience]), [convenience], [_LTDL_CONVENIENCE], [installable], [_LTDL_INSTALLABLE], [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ;; ,no,no,no,) # If the included ltdl is not to be used, then use the # preinstalled libltdl we found. AC_DEFINE([HAVE_LTDL], [1], [Define this if a modern libltdl is already installed]) LIBLTDL=-lltdl LTDLDEPS= LTDLINCL= ;; ,no*,no,*) AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) ;; *) with_included_ltdl=no LIBLTDL="-L$with_ltdl_lib -lltdl" LTDLDEPS= LTDLINCL="-I$with_ltdl_include" ;; esac INCLTDL="$LTDLINCL" # Report our decision... AC_MSG_CHECKING([where to find libltdl headers]) AC_MSG_RESULT([$LTDLINCL]) AC_MSG_CHECKING([where to find libltdl library]) AC_MSG_RESULT([$LIBLTDL]) _LTDL_SETUP dnl restore autoconf definition. m4_popdef([AC_LIBOBJ]) m4_popdef([AC_LIBSOURCES]) AC_CONFIG_COMMANDS_PRE([ _ltdl_libobjs= _ltdl_ltlibobjs= if test -n "$_LT_LIBOBJS"; then # Remove the extension. _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" done fi AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ]) # Only expand once: m4_define([LTDL_INIT]) ])# LTDL_INIT # Old names: AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIB_LTDL], []) dnl AC_DEFUN([AC_WITH_LTDL], []) dnl AC_DEFUN([LT_WITH_LTDL], []) # _LTDL_SETUP # ----------- # Perform all the checks necessary for compilation of the ltdl objects # -- including compiler checks and header checks. This is a public # interface mainly for the benefit of libltdl's own configure.ac, most # other users should call LTDL_INIT instead. AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_SYS_MODULE_EXT])dnl AC_REQUIRE([LT_SYS_MODULE_PATH])dnl AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl AC_REQUIRE([LT_LIB_DLLOAD])dnl AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl AC_REQUIRE([gl_FUNC_ARGZ])dnl m4_require([_LT_CHECK_OBJDIR])dnl m4_require([_LT_HEADER_DLFCN])dnl m4_require([_LT_CHECK_DLPREOPEN])dnl m4_require([_LT_DECL_SED])dnl dnl Don't require this, or it will be expanded earlier than the code dnl that sets the variables it relies on: _LT_ENABLE_INSTALL dnl _LTDL_MODE specific code must be called at least once: _LTDL_MODE_DISPATCH # In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS # the user used. This is so that ltdl.h can pick up the parent projects # config.h file, The first file in AC_CONFIG_HEADERS must contain the # definitions required by ltdl.c. # FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). AC_CONFIG_COMMANDS_PRE([dnl m4_pattern_allow([^LT_CONFIG_H$])dnl m4_ifset([AH_HEADER], [LT_CONFIG_H=AH_HEADER], [m4_ifset([AC_LIST_HEADERS], [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], [])])]) AC_SUBST([LT_CONFIG_H]) AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], [], [], [AC_INCLUDES_DEFAULT]) AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) m4_pattern_allow([LT_LIBEXT])dnl AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) name= eval "lt_libprefix=\"$libname_spec\"" m4_pattern_allow([LT_LIBPREFIX])dnl AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) name=ltdl eval "LTDLOPEN=\"$libname_spec\"" AC_SUBST([LTDLOPEN]) ])# _LTDL_SETUP # _LT_ENABLE_INSTALL # ------------------ m4_define([_LT_ENABLE_INSTALL], [AC_ARG_ENABLE([ltdl-install], [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) case ,${enable_ltdl_install},${enable_ltdl_convenience} in *yes*) ;; *) enable_ltdl_convenience=yes ;; esac m4_ifdef([AM_CONDITIONAL], [AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)]) ])# _LT_ENABLE_INSTALL # LT_SYS_DLOPEN_DEPLIBS # --------------------- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether deplibs are loaded by dlopen], [lt_cv_sys_dlopen_deplibs], [# PORTME does your system automatically load deplibs for dlopen? # or its logical equivalent (e.g. shl_load for HP-UX < 11) # For now, we just catch OSes we know something about -- in the # future, we'll try test this programmatically. lt_cv_sys_dlopen_deplibs=unknown case $host_os in aix3*|aix4.1.*|aix4.2.*) # Unknown whether this is true for these versions of AIX, but # we want this `case' here to explicitly catch those versions. lt_cv_sys_dlopen_deplibs=unknown ;; aix[[4-9]]*) lt_cv_sys_dlopen_deplibs=yes ;; amigaos*) case $host_cpu in powerpc) lt_cv_sys_dlopen_deplibs=no ;; esac ;; darwin*) # Assuming the user has installed a libdl from somewhere, this is true # If you are looking for one http://www.opendarwin.org/projects/dlcompat lt_cv_sys_dlopen_deplibs=yes ;; freebsd* | dragonfly*) lt_cv_sys_dlopen_deplibs=yes ;; gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) # GNU and its variants, using gnu ld.so (Glibc) lt_cv_sys_dlopen_deplibs=yes ;; hpux10*|hpux11*) lt_cv_sys_dlopen_deplibs=yes ;; interix*) lt_cv_sys_dlopen_deplibs=yes ;; irix[[12345]]*|irix6.[[01]]*) # Catch all versions of IRIX before 6.2, and indicate that we don't # know how it worked for any of those versions. lt_cv_sys_dlopen_deplibs=unknown ;; irix*) # The case above catches anything before 6.2, and it's known that # at 6.2 and later dlopen does load deplibs. lt_cv_sys_dlopen_deplibs=yes ;; netbsd* | netbsdelf*-gnu) lt_cv_sys_dlopen_deplibs=yes ;; openbsd*) lt_cv_sys_dlopen_deplibs=yes ;; osf[[1234]]*) # dlopen did load deplibs (at least at 4.x), but until the 5.x series, # it did *not* use an RPATH in a shared library to find objects the # library depends on, so we explicitly say `no'. lt_cv_sys_dlopen_deplibs=no ;; osf5.0|osf5.0a|osf5.1) # dlopen *does* load deplibs and with the right loader patch applied # it even uses RPATH in a shared library to search for shared objects # that the library depends on, but there's no easy way to know if that # patch is installed. Since this is the case, all we can really # say is unknown -- it depends on the patch being installed. If # it is, this changes to `yes'. Without it, it would be `no'. lt_cv_sys_dlopen_deplibs=unknown ;; osf*) # the two cases above should catch all versions of osf <= 5.1. Read # the comments above for what we know about them. # At > 5.1, deplibs are loaded *and* any RPATH in a shared library # is used to find them so we can finally say `yes'. lt_cv_sys_dlopen_deplibs=yes ;; qnx*) lt_cv_sys_dlopen_deplibs=yes ;; solaris*) lt_cv_sys_dlopen_deplibs=yes ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) libltdl_cv_sys_dlopen_deplibs=yes ;; esac ]) if test "$lt_cv_sys_dlopen_deplibs" != yes; then AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], [Define if the OS needs help to load dependent libraries for dlopen().]) fi ])# LT_SYS_DLOPEN_DEPLIBS # Old name: AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) # LT_SYS_MODULE_EXT # ----------------- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which extension is used for runtime loadable modules], [libltdl_cv_shlibext], [ module=yes eval libltdl_cv_shlibext=$shrext_cmds module=no eval libltdl_cv_shrext=$shrext_cmds ]) if test -n "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_MODULE_EXT])dnl AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], [Define to the extension used for runtime loadable modules, say, ".so".]) fi if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_SHARED_EXT])dnl AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], [Define to the shared library suffix, say, ".dylib".]) fi ])# LT_SYS_MODULE_EXT # Old name: AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) # LT_SYS_MODULE_PATH # ------------------ AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which variable specifies run-time module search path], [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) if test -n "$lt_cv_module_path_var"; then m4_pattern_allow([LT_MODULE_PATH_VAR])dnl AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], [Define to the name of the environment variable that determines the run-time module search path.]) fi ])# LT_SYS_MODULE_PATH # Old name: AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) # LT_SYS_DLSEARCH_PATH # -------------------- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([for the default library search path], [lt_cv_sys_dlsearch_path], [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) if test -n "$lt_cv_sys_dlsearch_path"; then sys_dlsearch_path= for dir in $lt_cv_sys_dlsearch_path; do if test -z "$sys_dlsearch_path"; then sys_dlsearch_path="$dir" else sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" fi done m4_pattern_allow([LT_DLSEARCH_PATH])dnl AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], [Define to the system default library search path.]) fi ])# LT_SYS_DLSEARCH_PATH # Old name: AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) # _LT_CHECK_DLPREOPEN # ------------------- m4_defun([_LT_CHECK_DLPREOPEN], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], [libltdl_cv_preloaded_symbols], [if test -n "$lt_cv_sys_global_symbol_pipe"; then libltdl_cv_preloaded_symbols=yes else libltdl_cv_preloaded_symbols=no fi ]) if test x"$libltdl_cv_preloaded_symbols" = xyes; then AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], [Define if libtool can extract symbol lists from object files.]) fi ])# _LT_CHECK_DLPREOPEN # LT_LIB_DLLOAD # ------------- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) LT_DLLOADERS= AC_SUBST([LT_DLLOADERS]) AC_LANG_PUSH([C]) LIBADD_DLOPEN= AC_SEARCH_LIBS([dlopen], [dl], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) if test "$ac_cv_search_dlopen" != "none required" ; then LIBADD_DLOPEN="-ldl" fi libltdl_cv_lib_dl_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H # include #endif ]], [[dlopen(0, 0);]])], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_CHECK_LIB([svld], [dlopen], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes then lt_save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" AC_CHECK_FUNCS([dlerror]) LIBS="$lt_save_LIBS" fi AC_SUBST([LIBADD_DLOPEN]) LIBADD_SHL_LOAD= AC_CHECK_FUNC([shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], [AC_CHECK_LIB([dld], [shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" LIBADD_SHL_LOAD="-ldld"])]) AC_SUBST([LIBADD_SHL_LOAD]) case $host_os in darwin[[1567]].*) # We only want this for pre-Mac OS X 10.4. AC_CHECK_FUNC([_dyld_func_lookup], [AC_DEFINE([HAVE_DYLD], [1], [Define if you have the _dyld_func_lookup function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ;; beos*) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ;; cygwin* | mingw* | os2* | pw32*) AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ;; esac AC_CHECK_LIB([dld], [dld_link], [AC_DEFINE([HAVE_DLD], [1], [Define if you have the GNU dld library.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) AC_SUBST([LIBADD_DLD_LINK]) m4_pattern_allow([^LT_DLPREOPEN$]) LT_DLPREOPEN= if test -n "$LT_DLLOADERS" then for lt_loader in $LT_DLLOADERS; do LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " done AC_DEFINE([HAVE_LIBDLLOADER], [1], [Define if libdlloader will be built on this platform]) fi AC_SUBST([LT_DLPREOPEN]) dnl This isn't used anymore, but set it for backwards compatibility LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" AC_SUBST([LIBADD_DL]) AC_LANG_POP ])# LT_LIB_DLLOAD # Old name: AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLLIB], []) # LT_SYS_SYMBOL_USCORE # -------------------- # does the compiler prefix global symbols with an underscore? AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([for _ prefix in compiled symbols], [lt_cv_sys_symbol_underscore], [lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. ac_nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.c >&AS_MESSAGE_LOG_FD fi rm -rf conftest* ]) sys_symbol_underscore=$lt_cv_sys_symbol_underscore AC_SUBST([sys_symbol_underscore]) ])# LT_SYS_SYMBOL_USCORE # Old name: AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) # LT_FUNC_DLSYM_USCORE # -------------------- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl if test x"$lt_cv_sys_symbol_underscore" = xyes; then if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then AC_CACHE_CHECK([whether we have to add an underscore for dlsym], [libltdl_cv_need_uscore], [libltdl_cv_need_uscore=unknown save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" _LT_TRY_DLOPEN_SELF( [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], [], [libltdl_cv_need_uscore=cross]) LIBS="$save_LIBS" ]) fi fi if test x"$libltdl_cv_need_uscore" = xyes; then AC_DEFINE([NEED_USCORE], [1], [Define if dlsym() requires a leading underscore in symbol names.]) fi ])# LT_FUNC_DLSYM_USCORE # Old name: AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) polyml-5.7.1/m4/ltsugar.m40000644000175000017500000001042413204034553014243 0ustar daviddavid# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) polyml-5.7.1/m4/pkg.m40000644000175000017500000001302313204034553013341 0ustar daviddavid# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES polyml-5.7.1/m4/libtool.m40000644000175000017500000106011113204034553014225 0ustar daviddavid# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS polyml-5.7.1/m4/ltversion.m40000644000175000017500000000126213204034553014607 0ustar daviddavid# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) polyml-5.7.1/configure.ac0000644000175000017500000005464213204034553014300 0ustar daviddavid# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_INIT([Poly/ML],[5.7.1],[polyml AT polyml DOT org],[polyml]) AM_INIT_AUTOMAKE AC_PREREQ(2.65) # libtoolize recommends this line. AC_CONFIG_MACRO_DIR([m4]) ac_debug_mode="no" AC_ARG_ENABLE([debug], [ --enable-debug Compiles without optimisation for debugging ], [ac_debug_mode="yes"]) if test "$ac_debug_mode" != "yes"; then # Default to maximum optimisation. -O2 is not good enough. # Set CCASFLAGS to empty so that it doesn't get set to CFLAGS. # The -g option on assembler causes problems on Sparc/Solaris 10. # test X || Y is equivalent to if !X then Y test "${CFLAGS+set}" = set || CFLAGS="-O3" test "${CXXFLAGS+set}" = set || CXXFLAGS="-O3" test "${CCASFLAGS+set}" = set || CCASFLAGS="" else test "${CFLAGS+set}" = set || CFLAGS="-g" test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" test "${CCASFLAGS+set}" = set || CCASFLAGS="" fi AC_CANONICAL_HOST # Set the OS flag. This should not really be required but is still used in # a few places for OS-specific quirks that can't be handled by more specific tests. # Check also for mingw in which case we want to build native Windows. poly_native_windows=no # If we are building on cygwin or mingw we need to give the -no-defined flag to # build a DLL. We also have to use Windows calling conventions rather than # SysV on 64-bit. # On mingw we need the -mthreads flag and this must be included in CFLAGS and # CXXFLAGS before the LIBTOOL macros. # When building native Windows set the flag to build the Unicode version and # the API version to at least Windows Vista to allow condition variables. poly_no_undefined=no poly_use_windowscc=no case "${host_os}" in darwin*) AC_SUBST([OSFLAG], [-DMACOSX]) ;; sunos* | solaris*) AC_SUBST([OSFLAG], [-DSOLARIS]) ;; *mingw*) AC_SUBST([OSFLAG], ["-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x600"]) AC_CHECK_TOOL(WINDRES, windres) poly_native_windows=yes poly_no_undefined=yes poly_use_windowscc=yes CFLAGS="$CFLAGS -mthreads" CXXFLAGS="$CXXFLAGS -mthreads" ;; *cygwin*) poly_no_undefined=yes poly_use_windowscc=yes if test "$ac_cv_c_compiler_gnu" = "yes"; then if $CC -dumpmachine | grep -q mingw; then AC_SUBST([OSFLAG], ["-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x600"]) poly_native_windows=yes CFLAGS="$CFLAGS -mthreads" CXXFLAGS="$CXXFLAGS -mthreads" fi fi ;; esac # Enable/Disable the GUI in Windows. Should this only be present if # building on mingw? AC_ARG_ENABLE([windows-gui], [AS_HELP_STRING([--enable-windows-gui], [create a GUI in Windows. If this is disabled use a Windows console. @<:@default=yes@:>@])], [case "${enableval}" in yes) enablegui=true ;; no) enablegui=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-windows-gui]) ;; esac], [enablegui=true]) AM_CONDITIONAL([WINDOWSGUI], [test x$enablegui = xtrue]) # libpolyml can be a DLL but libpolymain can't. # Disable shared libraries by default. It complicates installation to "non-standard" places. LT_INIT([win32-dll disable-shared]) AM_MAINTAINER_MODE # Check we're in the right directory AC_CONFIG_SRCDIR([polyexports.h]) AC_CONFIG_HEADER([config.h]) # Checks for programs. AC_PROG_CXX # The following check was supposed to check that there was actually a # C++ compiler but doesn't work properly if CXX is set by the user. #AC_CHECK_PROG(check_cpp, $CXX, "yes", "no") #if test "$check_cpp" != "yes"; then # AC_MSG_ERROR([No C++ compiler found. Unable to build Poly/ML.]) #fi AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_CPP AM_PROG_AS # Activate large file mode if needed AC_SYS_LARGEFILE # Checks for libraries. AC_CHECK_LIB(gcc, main) AC_CHECK_LIB(gcc_s, main) AC_CHECK_LIB(stdc++, main) # These can sometimes be in the standard libraries AC_SEARCH_LIBS([dlopen], [dl dld]) AC_SEARCH_LIBS([floor], [m]) # The next two are only used with mingw AC_CHECK_LIB(ws2_32, main) AC_CHECK_LIB(gdi32, main) ## External names on Win64. They have no leading underscores as per ## the X64 ABI published by MS. Earlier versions of GCC (anything ## prior to 4.5.0) were faulty. LT_SYS_SYMBOL_USCORE if test x$sys_symbol_underscore = xyes; then AC_DEFINE(SYMBOLS_REQUIRE_UNDERSCORE, [1], [Defined if external symbols are prefixed by underscores]) fi # Solaris needs -lsocket, -lnsl and -lrt AC_SEARCH_LIBS([gethostbyname], [nsl]) AC_SEARCH_LIBS([getsockopt], [socket]) AC_SEARCH_LIBS([sem_wait], [rt]) # Check for X and Motif headers and libraries AC_PATH_X if test "x${with_x}" = "xyes"; then AC_DEFINE([WITH_XWINDOWS], [1], [Define if the X-Windows interface should be built]) if test "$x_includes" != "" ; then if test "$x_includes" != "NONE" ; then CFLAGS="$CFLAGS -I$x_includes" CXXFLAGS="$CXXFLAGS -I$x_includes" CPPFLAGS="$CPPFLAGS -I$x_includes" fi fi if test "$x_libraries" != "" ; then if test "$x_libraries" != "NONE" ; then LIBS="-L$x_libraries $LIBS" fi fi AC_CHECK_LIB(X11, XCreateGC) AC_CHECK_LIB(Xt, XtMalloc) AC_CHECK_LIB(Xext, XextAddDisplay) if test "$xm_includes" != "" ; then if test "$xm_includes" != "NONE" ; then CFLAGS="$CFLAGS -I$xm_includes" CXXFLAGS="$CXXFLAGS -I$xm_includes" CPPFLAGS="$CPPFLAGS -I$xm_includes" fi fi if test "$xm_libraries" != "" ; then if test "$xm_libraries" != "NONE" ; then LIBS="-L$xm_libraries $LIBS" fi fi AC_CHECK_LIB(Xm, XmGetDestination) fi # TODO: May need AC_PATH_XTRA for Solaris # Check for headers AC_FUNC_ALLOCA AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([stdio.h time.h fcntl.h float.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h]) AC_CHECK_HEADERS([stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/systeminfo.h]) AC_CHECK_HEADERS([sys/time.h unistd.h values.h dlfcn.h signal.h ucontext.h]) AC_CHECK_HEADERS([assert.h ctype.h direct.h errno.h excpt.h fenv.h fpu_control.h grp.h]) AC_CHECK_HEADERS([ieeefp.h io.h math.h memory.h netinet/tcp.h poll.h pwd.h siginfo.h]) AC_CHECK_HEADERS([stdarg.h sys/errno.h sys/filio.h sys/mman.h sys/resource.h]) AC_CHECK_HEADERS([sys/signal.h sys/sockio.h sys/stat.h termios.h sys/termios.h sys/times.h]) AC_CHECK_HEADERS([sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/select.h sys/sysctl.h]) AC_CHECK_HEADERS([sys/elf_SPARC.h sys/elf_386.h sys/elf_amd64.h asm/elf.h]) AC_CHECK_HEADERS([windows.h tchar.h semaphore.h]) # Only check for the X headers if the user said --with-x. if test "${with_x+set}" = set; then AC_CHECK_HEADERS([X11/Xlib.h Xm/Xm.h]) fi PKG_PROG_PKG_CONFIG # Check for GMP AC_ARG_WITH([gmp], [AS_HELP_STRING([--with-gmp], [use the GMP library for arbitrary precision arithmetic @<:@default=check@:>@])], [], [with_gmp=check]) # If we want GMP check that the library and headers are installed. if test "x$with_gmp" != "xno"; then AC_CHECK_LIB([gmp], [__gmpn_tdiv_qr], [AC_DEFINE([HAVE_LIBGMP], [1], [Define to 1 if you have libgmp]) [LIBS="-lgmp $LIBS"] AC_CHECK_HEADER([gmp.h], [AC_DEFINE([HAVE_GMP_H], [1], [Define to 1 if you have the gmp.h header file])], [if test "x$with_gmp" != "xcheck"; then AC_MSG_FAILURE( [--with-gmp was given, but gmp.h header file is not installed]) fi ]) ], [if test "x$with_gmp" != "xcheck"; then AC_MSG_FAILURE( [--with-gmp was given, but gmp library (version 4 or later) is not installed]) fi ]) fi # libffi # libffi must be configured even if we are not building with it so that things like "make dist" work. AC_CONFIG_SUBDIRS([libffi]) # Use the internal version unless --with-system-libffi is given. AC_ARG_WITH([system-libffi], [AS_HELP_STRING([--with-system-libffi], [use the version of libffi installed on your system rather than the version supplied with poly @<:@default=no@:>@])], [], [with_system_libffi=no]) # Libffi uses pkg-config. if test "x$with_system_libffi" = "xyes"; then PKG_CHECK_MODULES([FFI], [libffi], [LIBS="$FFI_LIBS $LIBS" CFLAGS="$FFI_CFLAGS $CFLAGS"], [AC_CHECK_LIB([ffi], [ffi_prep_closure_loc], [ [LIBS="-lffi $LIBS"] AC_CHECK_HEADER([ffi.h], [], [ AC_MSG_FAILURE([--with-system-libffi was given, but ffi.h header file cannot be found]) ]) ], [AC_MSG_FAILURE([--with-system-libffi was given, but the ffi library is not installed])] ) ] ) else # Use internal libffi CFLAGS="$CFLAGS -I../libffi/include" CXXFLAGS="$CXXFLAGS -I../libffi/include" fi AM_CONDITIONAL([INTERNAL_LIBFFI], [test "x$with_system_libffi" != "xyes"]) # Check for pthreads. Mainly, this allows a single-threaded build on OSes such as Mac OS X # that don't have proper multi-threaded profiling. AC_ARG_WITH([threads], [AS_HELP_STRING([--with-threads], [use the pthread library for multi-threading @<:@default=check@:>@])], [], [with_threads=check]) # If we want pthreads check that the library and headers are installed. # On Android pthread_create is in the standard library if test "x$with_threads" != "xno"; then AC_SEARCH_LIBS([pthread_create], [pthread], [AC_DEFINE([HAVE_LIBPTHREAD], [1], [Define to 1 if you have the `pthread' library (-lpthread).]) AC_CHECK_HEADER([pthread.h], [AC_DEFINE([HAVE_PTHREAD_H], [1], [Define to 1 if you have the header file.])], [if test "x$with_threads" != "xcheck"; then AC_MSG_FAILURE( [--with-threads was given, but pthread.h header file is not installed]) fi ]) ], [if test "x$with_threads" != "xcheck"; then AC_MSG_FAILURE( [--with-threads was given, but pthread library is not installed]) fi ]) fi # Find out which type of object code exporter to use. # If we have winnt use PECOFF. This really only applies to cygwin here. # If we have elf.h use ELF. # If we have mach-o/reloc.h use Mach-O # Otherwise use the C source code exporter. AC_CHECK_TYPES([IMAGE_FILE_HEADER], [AC_DEFINE([HAVE_PECOFF], [], [Define to 1 if you have the PE/COFF types.])] [polyexport=pecoff], [AC_CHECK_HEADER([elf.h], [AC_DEFINE([HAVE_ELF_H], [], [Define to 1 if you have the header file.])] [polyexport=elf], [AC_CHECK_HEADER([mach-o/reloc.h], [AC_DEFINE([HAVE_MACH_O_RELOC_H], [], [Define to 1 if you have the header file.])] [polyexport=macho], [AC_CHECK_HEADERS([elf_abi.h machine/reloc.h], [AC_DEFINE([HAVE_ELF_ABI_H], [], [Define to 1 if you have and header files.])] [polyexport=elf] )] )] )], [#include ] ) AM_CONDITIONAL([EXPPECOFF], [test "$polyexport" = pecoff]) AM_CONDITIONAL([EXPELF], [test "$polyexport" = elf]) AM_CONDITIONAL([EXPMACHO], [test "$polyexport" = macho]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_TYPE_INT16_T AC_TYPE_UINT16_T AC_TYPE_INT32_T AC_TYPE_UINT32_T AC_TYPE_INT64_T AC_TYPE_UINT64_T AC_TYPE_INTPTR_T AC_TYPE_UINTPTR_T AC_TYPE_UID_T AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_HEADER_TIME AC_STRUCT_TM # Check for the various sub-second fields of the stat structure. AC_CHECK_MEMBERS([struct stat.st_atim, struct stat.st_atimespec, struct stat.st_atimensec, struct stat.st_atime_n, struct stat.st_uatime]) # Mac OS X, at any rate, needs signal.h to be included first. AC_CHECK_TYPES([ucontext_t], , , [#include "signal.h" #include "ucontext.h"]) AC_CHECK_TYPES([struct sigcontext, stack_t, sighandler_t, sig_t], , ,[#include "signal.h"]) AC_CHECK_TYPES([socklen_t],,,[#include "sys/types.h" #include "sys/socket.h"]) AC_CHECK_TYPES([SYSTEM_LOGICAL_PROCESSOR_INFORMATION],,,[#include "windows.h"]) AC_CHECK_TYPES(long long) AC_CHECK_TYPES(ssize_t) AC_CHECK_SIZEOF(void*) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long long) AC_C_BIGENDIAN # Checks for library functions. AC_FUNC_CHOWN AC_FUNC_CLOSEDIR_VOID AC_FUNC_ERROR_AT_LINE AC_FUNC_FORK AC_FUNC_GETGROUPS AC_FUNC_GETPGRP AC_PROG_GCC_TRADITIONAL AC_FUNC_LSTAT AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_SELECT_ARGTYPES AC_FUNC_STAT AC_FUNC_STRFTIME AC_FUNC_STRTOD AC_FUNC_VPRINTF AC_CHECK_FUNCS([bzero dup2 floor ftruncate getcwd gethostbyaddr gethostname gettimeofday memmove]) AC_CHECK_FUNCS([memset mkdir mkfifo munmap pathconf pow realpath rmdir select setlocale socket sqrt strdup strerror]) AC_CHECK_FUNCS([uname dlopen getrusage strtod dtoa sigaction mkstemp getpagesize sigaltstack mmap mprotect]) ## There does not seem to be a declaration for fpsetmask in mingw64. AC_CHECK_DECLS([fpsetmask], [], [], [[#include ]]) AC_CHECK_FUNCS([sysctl sysctlbyname]) AC_CHECK_FUNCS([localtime_r gmtime_r]) AC_CHECK_FUNCS([ctermid tcdrain]) # Where are the registers? #Linux: AC_CHECK_MEMBERS([mcontext_t.gregs, mcontext_t.regs, mcontext_t.mc_esp],,,[#include "ucontext.h"]) #Mac OS X: AC_CHECK_MEMBERS([struct mcontext.ss, struct __darwin_mcontext.ss, struct __darwin_mcontext.__ss, struct __darwin_mcontext32.ss, struct __darwin_mcontext32.__ss, struct __darwin_mcontext64.ss, struct __darwin_mcontext64.__ss],,, [#include "signal.h" #include "ucontext.h"]) # FreeBSD includes a sun_len member in struct sockaddr_un AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,, [#include ]) # Additional checks. AC_CANONICAL_HOST has already been called. #AC_CANONICAL_HOST # Check for .note.GNU-stack support, used for marking the stack as non-executable. AC_MSG_CHECKING([whether as supports .note.GNU-stack]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[__asm__(".section .note.GNU-stack,\"\",@progbits");]])], [AC_MSG_RESULT([yes])] [AC_DEFINE([HAVE_GNU_STACK], [1], [Define to 1 if you have .note.GNU-stack support in the assembler.])], [AC_MSG_RESULT([no])]) # This option enables the native code generator. More precisely it allows # the byte code interpreter to be built on X86. AC_ARG_ENABLE([native-codegeneration], [AS_HELP_STRING([--disable-native-codegeneration], [disable the native code generator and use the slow byte code interpreter instead.])], [case "${enableval}" in no) with_portable=yes ;; yes) with_portable=no ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-native-codegeneration]) ;; esac], [with_portable=check]) case "${host_cpu}" in i[[3456]]86*) AC_DEFINE([HOSTARCHITECTURE_X86], [1], [Define if the host is an X86 (32-bit)]) polyarch=i386 ;; x86_64* | amd64*) if test X"$ac_cv_sizeof_voidp" = X8; then AC_DEFINE([HOSTARCHITECTURE_X86_64], [1], [Define if the host is an X86 (64-bit)]) polyarch=x86_64 else AC_DEFINE([HOSTARCHITECTURE_X32], [1], [Define if the host is an X86 (32-bit ABI, 64-bit processor)]) polyarch=interpret fi ;; sparc64*) AC_DEFINE([HOSTARCHITECTURE_SPARC64], [1], [Define if the host is a Sparc (64-bit)]) polyarch=interpret ;; sparc*) AC_DEFINE([HOSTARCHITECTURE_SPARC], [1], [Define if the host is a Sparc (32-bit)]) polyarch=interpret ;; powerpc64* | ppc64*) AC_DEFINE([HOSTARCHITECTURE_PPC64], [1], [Define if the host is a PowerPC (64-bit)]) polyarch=interpret ;; power* | ppc*) AC_DEFINE([HOSTARCHITECTURE_PPC], [1], [Define if the host is a PowerPC (32-bit)]) polyarch=interpret ;; arm*) AC_DEFINE([HOSTARCHITECTURE_ARM], [1], [Define if the host is an ARM (32-bit)]) polyarch=interpret ;; aarch64*) AC_DEFINE([HOSTARCHITECTURE_AARCH64], [1], [Define if the host is an ARM (64-bit)]) polyarch=interpret ;; hppa*) AC_DEFINE([HOSTARCHITECTURE_HPPA], [1], [Define if the host is an HP PA-RISC (32-bit)]) polyarch=interpret ;; ia64*) AC_DEFINE([HOSTARCHITECTURE_IA64], [1], [Define if the host is an Itanium]) polyarch=interpret ;; m68k*) AC_DEFINE([HOSTARCHITECTURE_M68K], [1], [Define if the host is a Motorola 68000]) polyarch=interpret ;; mips64*) AC_DEFINE([HOSTARCHITECTURE_MIPS64], [1], [Define if the host is a MIPS (64-bit)]) polyarch=interpret ;; mips*) AC_DEFINE([HOSTARCHITECTURE_MIPS], [1], [Define if the host is a MIPS (32-bit)]) polyarch=interpret ;; s390x*) AC_DEFINE([HOSTARCHITECTURE_S390X], [1], [Define if the host is an S/390 (64-bit)]) polyarch=interpret ;; s390*) AC_DEFINE([HOSTARCHITECTURE_S390], [1], [Define if the host is an S/390 (32-bit)]) polyarch=interpret ;; sh*) AC_DEFINE([HOSTARCHITECTURE_SH], [1], [Define if the host is a SuperH (32-bit)]) polyarch=interpret ;; alpha*) AC_DEFINE([HOSTARCHITECTURE_ALPHA], [1], [Define if the host is an Alpha (64-bit)]) polyarch=interpret # GCC defaults to non-conforming floating-point, and does not respect the rounding mode # in the floating-point control register, so we force it to conform to IEEE and use the # dynamic suffix on the floating-point instructions it produces. CFLAGS="$CFLAGS -mieee -mfp-rounding-mode=d" CXXFLAGS="$CXXFLAGS -mieee -mfp-rounding-mode=d" ;; *) AC_MSG_ERROR([Poly/ML is not supported for this architecture]) ;; esac # If we explicitly asked to use the interpreter set the architecture to interpreted. if test "x$with_portable" = "xyes" ; then if test "x$polyarch" != "xinterpret" ; then AC_MSG_WARN( [*******You have disabled native code generation. Are you really sure you want to do that?*******]) fi polyarch=interpret fi # If we asked not to use the interpreter check we have native code support. if test "x$with_portable" = "xno" ; then if test "x$polyarch" = "xinterpret" ; then AC_MSG_ERROR( [--enable-native-codegeneration was given but native code is not supported on this platform]) fi fi # Set the define if this is the interpreter. This is no longer actually used. if test "x$polyarch" = "xinterpret" ; then AC_DEFINE([INTERPRETED], [1], [Define if using the interpreter] ) fi # Put this test at the end where it's less likely to be missed. # If we're compiling on Cygwin (and mingw?) and /usr/bin/file is not present # the link step will produce some strange warning messages of the form: # "Warning: linker path does not have real file for library -lXXX". I think # that's really a bug in autoconf but to explain what's happening to the user # add a test here. if test "$lt_cv_file_magic_cmd" = "func_win32_libid"; then if test \! -x /usr/bin/file; then echo "" echo "*** Warning: You are building Poly/ML on Cygwin/Mingw but '/usr/bin/file' cannot be found." echo "*** You can still go ahead and build Poly/ML but libpolyml will not be built as a" echo "*** shared library and you may get strange warning messages from the linker step." echo "*** Install the 'file' package to correct this problem." echo "" fi fi AM_CONDITIONAL([ARCHI386], [test "$polyarch" = i386]) AM_CONDITIONAL([ARCHX86_64], [test "$polyarch" = x86_64]) AM_CONDITIONAL([ARCHINTERPRET], [test "$polyarch" = interpret -a X"$ac_cv_sizeof_voidp" = X4]) AM_CONDITIONAL([ARCHINTERPRET64], [test "$polyarch" = interpret -a X"$ac_cv_sizeof_voidp" = X8]) AM_CONDITIONAL([WINDOWS64CALLS], [test "$poly_use_windowscc" = yes -a "$polyarch" = x86_64]) AM_CONDITIONAL([NATIVE_WINDOWS], [test "$poly_native_windows" = yes]) AM_CONDITIONAL([NO_UNDEFINED], [test "$poly_no_undefined" = yes]) # Test whether this is a git directory and set the version if possible AC_CHECK_PROG([gitinstalled], [git], [yes], [no]) if test X"$gitinstalled" = "Xyes" -a -d ".git"; then GIT_VERSION='-DGIT_VERSION=\"$(shell git describe --tags --always)\"' AC_SUBST(GIT_VERSION) fi # Strip -fdebug-prefix-map= from CFLAGS; it's meaningless for users of polyc, # and hurts reproducibility. polyc_CFLAGS= for cflag in $CFLAGS; do cflag="${cflag##-fdebug-prefix-map=*}" if test -n "$cflag"; then if test -n "$polyc_CFLAGS"; then polyc_CFLAGS="$polyc_CFLAGS $cflag" else polyc_CFLAGS="$cflag" fi fi done AC_SUBST([polyc_CFLAGS], ["$polyc_CFLAGS"]) # Modules directory AC_ARG_WITH([moduledir], [AS_HELP_STRING([--with-moduledir=DIR], [directory for Poly/ML modules])], [moduledir=$withval], [moduledir="\${libdir}/polyml/modules"]) AC_SUBST([moduledir], [$moduledir]) # Control whether to build the basis library with arbitrary precision as the default int AC_ARG_ENABLE([intinf-as-int], [AS_HELP_STRING([--enable-intinf-as-int], [set arbitrary precision as the default int type])], [case "${enableval}" in no) intisintinf=no ;; yes) intisintinf=yes ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-intinf-as-int]) ;; esac], [intisintinf=no]) AM_CONDITIONAL([INTINFISINT], [test "$intisintinf" = "yes"]) # These are needed for building in a separate build directory, as they are # referenced from exportPoly.sml. AC_CONFIG_COMMANDS([basis], [test -e basis || ln -sf ${ac_top_srcdir}/basis .]) AC_CONFIG_COMMANDS([mlsource], [test -e mlsource || ln -sf ${ac_top_srcdir}/mlsource .]) AC_CONFIG_FILES([Makefile libpolyml/Makefile libpolyml/polyml.pc libpolymain/Makefile modules/Makefile modules/IntInfAsInt/Makefile]) AC_CONFIG_FILES([polyc], [chmod +x polyc]) AC_OUTPUT polyml-5.7.1/interruptpoly/0000755000175000017500000000000013204034553014737 5ustar daviddavidpolyml-5.7.1/interruptpoly/interruptpoly.c0000644000175000017500000000532213204034553020045 0ustar daviddavid/* Title: Windows application to send an interrupt to Poly Copyright (c) 2003 David C.J. Matthews This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This program generates an interrupt Windows Poly/ML program in a similar way to sending a SIGINT (Control-C) interrupt in Unix. */ #include #include // DDE Commands. #define INTERRUPT_POLY "[Interrupt]" #define TERMINATE_POLY "[Terminate]" // Default DDE service name. #define POLYMLSERVICE "PolyML" DWORD dwDDEInstance; // DDE Callback function. HDDEDATA CALLBACK DdeCallBack(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, DWORD dwData1, DWORD dwData2) { return (HDDEDATA) NULL; } void SendDDEMessage(LPCTSTR lpszMessage) { HCONV hcDDEConv; HDDEDATA res; // Send a DDE message to the process. DWORD dwInst = dwDDEInstance; HSZ hszServiceName = DdeCreateStringHandle(dwInst, POLYMLSERVICE, CP_WINANSI); hcDDEConv = DdeConnect(dwInst, hszServiceName, hszServiceName, NULL); DdeFreeStringHandle(dwInst, hszServiceName); res = DdeClientTransaction((LPBYTE)lpszMessage, sizeof(INTERRUPT_POLY), hcDDEConv, 0L, 0, XTYP_EXECUTE, TIMEOUT_ASYNC, NULL); if (res) DdeFreeDataHandle(res); } // Interrupt the ML process as though control-C had been pressed. void RunInterrupt() { SendDDEMessage(INTERRUPT_POLY); } int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // pointer to command line int nCmdShow // show state of window ) { // Initialise DDE. We only want to be a client. DdeInitialize(&dwDDEInstance, DdeCallBack, APPCMD_CLIENTONLY | CBF_SKIP_CONNECT_CONFIRMS | CBF_SKIP_DISCONNECTS, 0); RunInterrupt(); DdeNameService(dwDDEInstance, 0L, 0L, DNS_UNREGISTER); // Unitialise DDE. DdeUninitialize(dwDDEInstance); return 0; } polyml-5.7.1/Makefile.in0000644000175000017500000011775213204034553014061 0ustar daviddavid# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = polyimport$(EXEEXT) poly$(EXEEXT) @ARCHINTERPRET64_TRUE@@NATIVE_WINDOWS_TRUE@am__append_1 = -Wl,-u,WinMain @ARCHINTERPRET64_FALSE@@ARCHX86_64_TRUE@@NATIVE_WINDOWS_TRUE@am__append_2 = -Wl,-u,WinMain @ARCHINTERPRET64_FALSE@@ARCHX86_64_FALSE@@NATIVE_WINDOWS_TRUE@am__append_3 = -Wl,-u,_WinMain@16 -Wl,--large-address-aware @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_TRUE@am__append_4 = -mwindows @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_TRUE@am__append_5 = -mwindows @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_FALSE@am__append_6 = -mconsole @NATIVE_WINDOWS_TRUE@@WINDOWSGUI_FALSE@am__append_7 = -mconsole @NATIVE_WINDOWS_TRUE@am__append_8 = $(EXTRALDFLAGS) @NATIVE_WINDOWS_TRUE@am__append_9 = polyresource.o @EXPMACHO_TRUE@am__append_10 = -Wl,-no_pie subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(srcdir)/polyc.in $(dist_bin_SCRIPTS) \ depcomp $(noinst_HEADERS) COPYING compile config.guess \ config.sub install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = polyc CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(man1dir)" PROGRAMS = $(bin_PROGRAMS) am_poly_OBJECTS = poly_OBJECTS = $(am_poly_OBJECTS) poly_DEPENDENCIES = $(POLYOBJECTFILE) $(POLYRESOURCES) \ libpolymain/libpolymain.la libpolyml/libpolyml.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = poly_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(poly_LDFLAGS) $(LDFLAGS) -o $@ am_polyimport_OBJECTS = polyimport.$(OBJEXT) polyimport_OBJECTS = $(am_polyimport_OBJECTS) polyimport_DEPENDENCIES = $(POLYRESOURCES) libpolyml/libpolyml.la polyimport_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(polyimport_LDFLAGS) $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(dist_bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(poly_SOURCES) $(polyimport_SOURCES) DIST_SOURCES = $(poly_SOURCES) $(polyimport_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFI_CFLAGS = @FFI_CFLAGS@ FFI_LIBS = @FFI_LIBS@ FGREP = @FGREP@ GIT_VERSION = @GIT_VERSION@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OSFLAG = @OSFLAG@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POW_LIB = @POW_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gitinstalled = @gitinstalled@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ polyc_CFLAGS = @polyc_CFLAGS@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 --install AM_CPPFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall AM_CFLAGS = $(ARCHFLAG) $(OSFLAG) -Wall -fno-strict-aliasing BOOTSTRAP_OPTIONS = @INTINFISINT_FALSE@POLYIMPORT_OPTIONS = @INTINFISINT_TRUE@POLYIMPORT_OPTIONS = --intIsIntInf DIST_SUBDIRS = libpolyml libpolymain libffi modules @INTERNAL_LIBFFI_FALSE@SUBDIRS = libpolyml libpolymain . modules @INTERNAL_LIBFFI_TRUE@SUBDIRS = libffi libpolyml libpolymain . modules dist_bin_SCRIPTS = polyc man_MANS = poly.1 polyimport.1 polyc.1 @ARCHI386_FALSE@@ARCHINTERPRET64_FALSE@@ARCHINTERPRET_FALSE@@ARCHX86_64_TRUE@@WINDOWS64CALLS_FALSE@POLYIMPORT = $(srcdir)/imports/polymlx86_64sysv.txt @ARCHI386_FALSE@@ARCHINTERPRET64_FALSE@@ARCHINTERPRET_FALSE@@ARCHX86_64_TRUE@@WINDOWS64CALLS_TRUE@POLYIMPORT = $(srcdir)/imports/polymlx86_64win.txt @ARCHI386_FALSE@@ARCHINTERPRET64_TRUE@@ARCHINTERPRET_FALSE@POLYIMPORT = $(srcdir)/imports/polymlint64.txt @ARCHI386_FALSE@@ARCHINTERPRET_TRUE@POLYIMPORT = $(srcdir)/imports/polymlint.txt # Select the architecture-specific pre-built compiler @ARCHI386_TRUE@POLYIMPORT = $(srcdir)/imports/polymli386.txt noinst_HEADERS = polyexports.h poly_LDFLAGS = $(am__append_8) $(am__append_10) polyimport_LDFLAGS = $(am__append_5) $(am__append_7) POLYRESOURCES = $(am__append_9) EXTRALDFLAGS = $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_6) @NATIVE_WINDOWS_FALSE@POLYOBJECTFILE = polyexport.o @NATIVE_WINDOWS_TRUE@POLYOBJECTFILE = polyexport.obj @NATIVE_WINDOWS_FALSE@OBJECTSUFFIX = o @NATIVE_WINDOWS_TRUE@OBJECTSUFFIX = obj poly_SOURCES = poly_LDADD = $(POLYOBJECTFILE) $(POLYRESOURCES) libpolymain/libpolymain.la libpolyml/libpolyml.la polyimport_SOURCES = polyimport.c polyimport_LDADD = $(POLYRESOURCES) libpolyml/libpolyml.la EXTRA_DIST = \ imports/polymli386.txt \ imports/polymlint64.txt \ imports/polymlint.txt \ imports/polymlx86_64.txt \ libpolyml/x86asm.asm \ exportPoly.sml \ poly.1 \ polyimport.1 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 polyc: $(top_builddir)/config.status $(srcdir)/polyc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list poly$(EXEEXT): $(poly_OBJECTS) $(poly_DEPENDENCIES) $(EXTRA_poly_DEPENDENCIES) @rm -f poly$(EXEEXT) $(AM_V_CCLD)$(poly_LINK) $(poly_OBJECTS) $(poly_LDADD) $(LIBS) polyimport$(EXEEXT): $(polyimport_OBJECTS) $(polyimport_DEPENDENCIES) $(EXTRA_polyimport_DEPENDENCIES) @rm -f polyimport$(EXEEXT) $(AM_V_CCLD)$(polyimport_LINK) $(polyimport_OBJECTS) $(polyimport_LDADD) $(LIBS) install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyimport.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS \ uninstall-man uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) all check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am check-local clean clean-binPROGRAMS \ clean-cscope clean-generic clean-libtool clean-local cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am \ install-dist_binSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-dist_binSCRIPTS \ uninstall-man uninstall-man1 dist-hook: find {basis,mlsource}/ -type d -exec mkdir $(distdir)/{} \; find {basis,mlsource}/ -type f -not -name .svn \ -exec cp -pf {} $(distdir)/{} \; # Unix. polyexport.o: polyimport exportPoly.sml polytemp.txt ./polyimport $(POLYIMPORT_OPTIONS) polytemp.txt -I $(srcdir) < $(srcdir)/exportPoly.sml # Windows. When building on Windows make sure that we provide both stdin and stdout to suppress the GUI. polyexport.obj: polyimport$(EXEEXT) exportPoly.sml polytemp.txt ./polyimport $(POLYIMPORT_OPTIONS) polytemp.txt -I $(srcdir) < $(srcdir)/exportPoly.sml | cat polyresource.o: PolyML.rc poly.ico $(WINDRES) -o polyresource.o $(srcdir)/PolyML.rc polytemp.txt: $(POLYIMPORT) cp $(POLYIMPORT) polytemp.txt #polyc: buildpolyc # ./buildpolyc LINK=\"$(CC)\" BINDIR=\"$(bindir)\" LIBDIR=\"$(libdir)\" LIBS=\"$(LIBS)\" EXTRALDFLAGS=\"$(EXTRALDFLAGS)\" SUFFIX=\"$(OBJECTSUFFIX)\" # This builds the compiler but does not update the files in the imports directory. # It then builds a version of poly containing the new compiler. compiler: all ./poly $(BOOTSTRAP_OPTIONS) --error-exit < mlsource/BuildExport.sml $(MAKE) reboot: compiler cp polytemp.txt $(POLYIMPORT) # Retain this target for backwards compatibility. cvs: compiler clean-local: rm -f *.obj polytemp.txt polyc # Run tests check-local: all echo "val () = use \"$(srcdir)/Tests/RunTests\"; val () = OS.Process.exit(if runTests \"$(srcdir)/Tests\" then OS.Process.success else OS.Process.failure):unit;" | ./poly # Retain this target for backwards compatibility tests: check # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: polyml-5.7.1/resource.h0000644000175000017500000000144013204034553013776 0ustar daviddavid//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by PolyML.rc // #define IDR_MENU 101 #define IDD_ABOUT_POLYML 101 #define IDI_ICON 102 #define ID_EDIT_COPY 30002 #define ID_EDIT_PASTE 30003 #define ID_RUN_INTERRUPT 40001 #define ID_HELP_ABOUT 40002 #define ID_FILE_QUIT 40003 #define IDC_STATIC -1 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 103 #define _APS_NEXT_COMMAND_VALUE 40004 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif